diff --git a/fsbl/Makefile b/fsbl/Makefile new file mode 100644 index 000000000..984d212b1 --- /dev/null +++ b/fsbl/Makefile @@ -0,0 +1,199 @@ +.PHONY: FORCE +# Default goal is build all images +.DEFAULT_GOAL := all + +# Avoid any implicit propagation of command line variable definitions to +# sub-Makefiles, like CFLAGS that we reserved for the firmware images' +# usage. Other command line options like "-s" are still propagated as usual. +MAKEOVERRIDES = + +S := $(shell printf '\033[1;34;40m MAKECMDGOALS %s \033[0m\n' '${MAKECMDGOALS}') +$(info ${S}) + +ARCH ?= + +ifneq ($(origin CROSS_COMPILE),command line) +ifeq ($(ARCH),riscv) +CROSS_COMPILE := ${CROSS_COMPILE_GLIBC_RISCV64} +BOOT_CPU ?= riscv +else +CROSS_COMPILE := ${CROSS_COMPILE_64} +BOOT_CPU := aarch64 +ARCH := aarch64 +endif +endif + +ifeq (${CHIP_ARCH},) +$(error CHIP_ARCH is undefined) +endif + +ifeq (${CROSS_COMPILE},) +$(error CROSS_COMPILE is undefined) +endif + +################################################################################ +# Default values for build configurations, and their dependencies +################################################################################ +MAKE_HELPERS_DIRECTORY := make_helpers/ + +V ?= 0 +DEBUG := 0 +LOG_LEVEL := 2 +ENABLE_ASSERTIONS := 1 +PRINTF_TIMESTAMP := 0 + +NANDBOOT_V2 := 1 + +# Verbose flag +ifeq (${V},0) + Q:=@ +else + Q:= +endif +export Q + +PRINTABLE := abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 +PRINTABLE_TR := v1JfTUIeqdsE7P0oiczuVbW9aLnOFySG5YtDQ3lHN4rRpZABwmkCg2XhjM6x8K +CHIP_ARCH := $(shell echo '${CHIP_ARCH}' | tr A-Z a-z) +CHIP_ARCH_ALT := $(shell echo '${CHIP_ARCH}' | tr '${PRINTABLE}' '${PRINTABLE_TR}') +BUILD_BASE := ./build + +O ?= ${BUILD_BASE}/${CHIP_ARCH} +BUILD_PLAT = ${O} + +BUILD_STRING := g$(shell git rev-parse --short HEAD 2> /dev/null) +BUILD_STRING := ${BUILD_STRING}$(shell if git diff-index --name-only HEAD | grep -q "."; then echo -dirty; fi) +VERSION_STRING := ${CHIP_ARCH_ALT}:${BUILD_STRING} + +################################################################################ +# Toolchain +################################################################################ +HOSTCC := gcc +export HOSTCC + +CC := ${CROSS_COMPILE}gcc +CPP := ${CROSS_COMPILE}cpp +AS := ${CROSS_COMPILE}gcc +AR := ${CROSS_COMPILE}ar +LD := ${CROSS_COMPILE}ld +OC := ${CROSS_COMPILE}objcopy +OD := ${CROSS_COMPILE}objdump +NM := ${CROSS_COMPILE}nm +PP := ${CROSS_COMPILE}gcc -E +READELF := ${CROSS_COMPILE}readelf +GDB := ${CROSS_COMPILE}gdb + +################################################################################ +# Generic definitions +################################################################################ +include ${MAKE_HELPERS_DIRECTORY}unix.mk +include ${MAKE_HELPERS_DIRECTORY}build_macros.mk +include ${MAKE_HELPERS_DIRECTORY}plat_helpers.mk + +################################################################################ +# Common sources and include directories +################################################################################ +include lib/stdlib/stdlib.mk + +################################################################################ +# Convert building option +################################################################################ +FSBL_SECURE_BOOT_SUPPORT := $(call yn10,${FSBL_SECURE_BOOT_SUPPORT}) + +################################################################################ +# CPU and platform +################################################################################ +$(call print_var,CHIP_ARCH) +$(call print_var,BOOT_CPU) + +include ${PLAT_MAKEFILE_FULL} + +# Check CPU define +$(eval $(call add_define,$(shell echo '${BOOT_CPU}' | tr a-z A-Z))) +ifeq (${BOOT_CPU},aarch64) + +else ifeq (${BOOT_CPU},riscv) +else +$(error "BOOT_CPU=${BOOT_CPU} is not supported") +endif + +CPPFLAGS += \ + ${DEFINES} ${INCLUDES} \ + -nostdinc \ + -Wmissing-include-dirs -Werror + +TF_CFLAGS += -ggdb3 -gdwarf-2 +ASFLAGS += -g -Wa,--gdwarf-2 + +# Include the CPU specific operations makefile +include lib/cpu/${BOOT_CPU}/cpu.mk + +INCLUDES += -Ibuild +INCLUDES += -Iinclude/cpu + +################################################################################ +# Build options checks +################################################################################ +$(eval $(call assert_boolean,DEBUG)) +$(eval $(call assert_boolean,ENABLE_ASSERTIONS)) +$(eval $(call assert_boolean,NANDBOOT_V2)) +$(eval $(call assert_boolean,NANDBOOT_V2)) +$(eval $(call assert_boolean,PAGE_SIZE_64KB)) +$(eval $(call assert_boolean,TEST_FROM_SPINOR1)) +$(eval $(call assert_boolean,PRINTF_TIMESTAMP)) + +################################################################################ +# Add definitions to the cpp preprocessor based on the current build options. +# This is done after including the platform specific makefile to allow the +# platform to overwrite the default options +################################################################################ +$(call print_var,TEST_FROM_SPINOR1) +$(call print_var,PAGE_SIZE_64KB) + +$(eval $(call add_define,TEST_FROM_SPINOR1)) +$(eval $(call add_define,PAGE_SIZE_64KB)) +$(eval $(call add_define,PRINTF_TIMESTAMP)) + +$(eval $(call add_define,ENABLE_ASSERTIONS)) +$(eval $(call add_define,LOG_LEVEL)) +$(eval $(call add_define,__CVITEK__)) +$(eval $(call add_define,NANDBOOT_V2)) + +ifeq (${BOOT_CPU},riscv) +$(eval $(call add_define_val,TOC_HEADER_NAME,0xC906B001)) +else +$(eval $(call add_define_val,TOC_HEADER_NAME,0xAA640001)) +endif + +ifeq (${RTOS_ENABLE_FREERTOS},y) +$(eval $(call add_define,RTOS_ENABLE_FREERTOS)) +$(eval $(call add_define_val,RTOS_DUMP_PRINT_SZ_IDX,${RTOS_DUMP_PRINT_SZ_IDX})) +$(eval $(call add_define_val,RTOS_FAST_IMAGE_TYPE,${RTOS_FAST_IMAGE_TYPE})) +$(eval $(call add_define_val,RTOS_DUMP_PRINT_ENABLE,$(call yn10,${RTOS_DUMP_PRINT_ENABLE}))) +endif + +$(eval $(call add_define,FSBL_SECURE_BOOT_SUPPORT)) +$(eval $(call add_define, USB_DL_BY_FSBL)) + +################################################################################ +# Build targets +################################################################################ +.PHONY: all fip clean bl-check bl-build fake-blcp +.SUFFIXES: + +export BUILD_PLAT NM + +all: fip bl2 blmacros + +include ${MAKE_HELPERS_DIRECTORY}fip.mk + +$(eval $(call MAKE_BL,2)) + +# Convert '#define ...' to ELF symbols +BLMACROS_LINKERFILE := make_helpers/get_macros.ld.S +BLMACROS_ELF := ${BUILD_PLAT}/blmacros/blmacros.elf +$(eval $(call MAKE_BL,macros)) + +clean: + $(print_target) + $(call SHELL_REMOVE_DIR,${BUILD_PLAT}) diff --git a/fsbl/README.rst b/fsbl/README.rst new file mode 100644 index 000000000..1fee7abea --- /dev/null +++ b/fsbl/README.rst @@ -0,0 +1,5 @@ +FSBL +==== + +FSBL is First Stage Boot Loader. +Act as ATF BL2. diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2.bin b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2.bin new file mode 100755 index 000000000..21c7b559f Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2.bin differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o new file mode 100644 index 000000000..a98f08bb3 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o new file mode 100644 index 000000000..5ea79c69a Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2.dis b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2.dis new file mode 100644 index 000000000..602907bec --- /dev/null +++ b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2.dis @@ -0,0 +1,14588 @@ + +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2.elf: file format elf64-littleriscv +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2.elf +architecture: riscv:rv64, flags 0x00000112: +EXEC_P, HAS_SYMS, D_PAGED +start address 0x000000003bc00000 + +Program Header: + LOAD off 0x0000000000001000 vaddr 0x000000003bc00000 paddr 0x000000003bc00000 align 2**12 + filesz 0x000000000000b700 memsz 0x0000000000013410 flags rwx + STACK off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**4 + filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw- + +Sections: +Idx Name Size VMA LMA File off Algn + 0 ro 0000b434 000000003bc00000 000000003bc00000 00001000 2**3 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 000002cc 000000003bc0b434 000000003bc0b434 0000c434 2**3 + CONTENTS, ALLOC, LOAD, DATA + 2 stacks 00002000 000000003bc0b700 000000003bc0b700 0000c700 2**0 + ALLOC + 3 .bss 00005c10 000000003bc0d800 000000003bc0d800 0000c700 2**9 + ALLOC + 4 .debug_info 00068732 0000000000000000 0000000000000000 0000c700 2**0 + CONTENTS, READONLY, DEBUGGING + 5 .debug_abbrev 00004de5 0000000000000000 0000000000000000 00074e32 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_aranges 00001e80 0000000000000000 0000000000000000 00079c20 2**4 + CONTENTS, READONLY, DEBUGGING + 7 .debug_macro 00009b13 0000000000000000 0000000000000000 0007baa0 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_line 00075d63 0000000000000000 0000000000000000 000855b3 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_str 0002394c 0000000000000000 0000000000000000 000fb316 2**0 + CONTENTS, READONLY, DEBUGGING + 10 .comment 0000001d 0000000000000000 0000000000000000 0011ec62 2**0 + CONTENTS, READONLY + 11 .debug_ranges 0002f790 0000000000000000 0000000000000000 0011ec7f 2**0 + CONTENTS, READONLY, DEBUGGING + 12 .debug_frame 000047b8 0000000000000000 0000000000000000 0014e410 2**3 + CONTENTS, READONLY, DEBUGGING + 13 .debug_loc 000c12a0 0000000000000000 0000000000000000 00152bc8 2**0 + CONTENTS, READONLY, DEBUGGING +SYMBOL TABLE: +000000003bc00000 l d ro 0000000000000000 ro +000000003bc0b434 l d .data 0000000000000000 .data +000000003bc0b700 l d stacks 0000000000000000 stacks +000000003bc0d800 l d .bss 0000000000000000 .bss +0000000000000000 l d .debug_info 0000000000000000 .debug_info +0000000000000000 l d .debug_abbrev 0000000000000000 .debug_abbrev +0000000000000000 l d .debug_aranges 0000000000000000 .debug_aranges +0000000000000000 l d .debug_macro 0000000000000000 .debug_macro +0000000000000000 l d .debug_line 0000000000000000 .debug_line +0000000000000000 l d .debug_str 0000000000000000 .debug_str +0000000000000000 l d .comment 0000000000000000 .comment +0000000000000000 l d .debug_ranges 0000000000000000 .debug_ranges +0000000000000000 l d .debug_frame 0000000000000000 .debug_frame +0000000000000000 l d .debug_loc 0000000000000000 .debug_loc +0000000000000000 l df *ABS* 0000000000000000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_entrypoint.o +000000003bc00020 l ro 0000000000000000 bl2_entrypoint_real +000000003bc00144 l ro 0000000000000000 trap_vector +000000003bc0012c l ro 0000000000000000 bss_clear +000000003bc00144 l ro 0000000000000000 die +0000000000000000 l df *ABS* 0000000000000000 cpu_helper.c +0000000000000000 l df *ABS* 0000000000000000 cache.c +0000000000000000 l df *ABS* 0000000000000000 delay_timer.c +0000000000000000 l df *ABS* 0000000000000000 bl2_helper.c +000000003bc132c8 l O .bss 0000000000000030 fw_dynamic_info +0000000000000000 l df *ABS* 0000000000000000 uart_dw.c +0000000000000000 l df *ABS* 0000000000000000 tf_printf.c +000000003bc002d6 l F ro 0000000000000082 unsigned_num_print +0000000000000000 l df *ABS* 0000000000000000 platform.c +0000000000000000 l df *ABS* 0000000000000000 security.c +0000000000000000 l df *ABS* 0000000000000000 misc.c +0000000000000000 l df *ABS* 0000000000000000 mem.c +0000000000000000 l df *ABS* 0000000000000000 putchar.c +0000000000000000 l df *ABS* 0000000000000000 strcmp.c +0000000000000000 l df *ABS* 0000000000000000 strlen.c +0000000000000000 l df *ABS* 0000000000000000 platform_device.c +0000000000000000 l df *ABS* 0000000000000000 bl2_main.c +000000003bc00c06 l F ro 000000000000001a read_time_ms +000000003bc0d800 l O .bss 0000000000001000 fip_param2 +000000003bc0e800 l O .bss 0000000000004000 sram_union_buf +0000000000000000 l df *ABS* 0000000000000000 decompress.c +000000003bc014b6 l F ro 0000000000000002 SzFree +000000003bc014b8 l F ro 0000000000000042 SzAlloc +000000003bc132f8 l O .bss 0000000000000008 comp_alloc_buf +000000003bc13300 l O .bss 0000000000000008 comp_alloc_size +000000003bc0a788 l O ro 0000000000000008 __func__.0 +000000003bc0a790 l O ro 0000000000000010 __func__.1 +0000000000000000 l df *ABS* 0000000000000000 cps_cvi.c +0000000000000000 l df *ABS* 0000000000000000 usb_tty.c +000000003bc01748 l F ro 0000000000000002 resume +000000003bc0174a l F ro 0000000000000038 requestMemAlloc +000000003bc01782 l F ro 0000000000000002 requestMemFree +000000003bc01784 l F ro 000000000000001c acm_complete_set_line_coding +000000003bc017a0 l F ro 0000000000000014 reset +000000003bc017b4 l F ro 000000000000002e disconnect +000000003bc017e2 l F ro 0000000000000026 unbind +000000003bc01808 l F ro 0000000000000042 bind +000000003bc0184a l F ro 0000000000000052 get_unicode_string +000000003bc0189c l F ro 0000000000000234 bulkOutCmpl +000000003bc01b56 l F ro 0000000000000050 bulkInCmpl +000000003bc01ad0 l F ro 000000000000005c getDescAcm +000000003bc01b2c l F ro 000000000000002a reqComplete +000000003bc01ba6 l F ro 0000000000000442 setup +000000003bc01fe8 l F ro 0000000000000002 suspend +000000003bc13404 l O .bss 0000000000000001 ack_idx.6 +000000003bc13310 l O .bss 0000000000000008 bulkBuf +000000003bc13318 l O .bss 0000000000000008 bulkInReq +000000003bc13320 l O .bss 0000000000000008 bulkOutReq +000000003bc13328 l O .bss 0000000000000008 cmdBuf +000000003bc13406 l O .bss 0000000000000001 configBreak +000000003bc13407 l O .bss 0000000000000001 configValue +000000003bc13330 l O .bss 0000000000000008 ep0Buff +000000003bc13338 l O .bss 0000000000000008 ep0Req +000000003bc13340 l O .bss 0000000000000008 epIn +000000003bc13348 l O .bss 0000000000000008 epOut +000000003bc13350 l O .bss 0000000000000008 fip_buf +000000003bc133e0 l O .bss 0000000000000004 fip_tx_offset +000000003bc133e4 l O .bss 0000000000000004 fip_tx_size +000000003bc13408 l O .bss 0000000000000001 flagEnterDL +000000003bc13409 l O .bss 0000000000000001 flagReboot +000000003bc1340a l O .bss 0000000000000001 is_serial_patched.3 +000000003bc1340b l O .bss 0000000000000001 mem_alloc_cnt +000000003bc13358 l O .bss 000000000000001c productDesc +000000003bc13378 l O .bss 0000000000000010 serial.2 +000000003bc13388 l O .bss 000000000000001c serialDesc +000000003bc133e8 l O .bss 0000000000000004 transfer_size +000000003bc133ec l O .bss 0000000000000004 ts +000000003bc133a8 l O .bss 0000000000000010 vendorDesc +000000003bc0b448 l O .data 0000000000000009 ConfDesc +000000003bc0b458 l O .data 0000000000000008 acm_buf +000000003bc0b460 l O .data 0000000000000005 acm_call_mgmt_descriptor +000000003bc0b468 l O .data 0000000000000009 acm_control_interface_desc +000000003bc0b478 l O .data 0000000000000009 acm_data_interface_desc +000000003bc0b488 l O .data 0000000000000004 acm_descriptor +000000003bc0b490 l O .data 0000000000000007 acm_fs_in_desc +000000003bc0b498 l O .data 0000000000000007 acm_fs_notify_desc +000000003bc0b4a0 l O .data 0000000000000007 acm_fs_out_desc +000000003bc0b4a8 l O .data 0000000000000005 acm_header_desc +000000003bc0b4b0 l O .data 0000000000000007 acm_hs_in_desc +000000003bc0b4b8 l O .data 0000000000000007 acm_hs_notify_desc +000000003bc0b4c0 l O .data 0000000000000007 acm_hs_out_desc +000000003bc0b4c8 l O .data 0000000000000005 acm_union_desc +000000003bc0b4d0 l O .data 0000000000000005 bosDesc +000000003bc0b4d8 l O .data 0000000000000008 bulkBufAlloc +000000003bc0b4e0 l O .data 0000000000000007 capabilityExtDesc +000000003bc0b4e8 l O .data 0000000000000008 cb0_buf +000000003bc0b4f0 l O .data 0000000000000008 cb1_buf +000000003bc0b4f8 l O .data 0000000000000008 cb2_buf +000000003bc0b500 l O .data 0000000000000008 cmdBufAlloc +000000003bc0b508 l O .data 0000000000000050 descriptorsFs +000000003bc0b558 l O .data 0000000000000050 descriptorsHs +000000003bc0b5a8 l O .data 0000000000000012 devHsDesc +000000003bc0b5c0 l O .data 0000000000000050 drv_obj +000000003bc0b610 l O .data 0000000000000008 ep0BuffAlloc +000000003bc0b618 l O .data 0000000000000058 g_driver +000000003bc0b670 l O .data 0000000000000008 handler +000000003bc0b678 l O .data 0000000000000004 languageDesc +000000003bc0b680 l O .data 000000000000000a qualifierDesc +000000003bc0b690 l O .data 0000000000000008 rsp_buf +000000003bc0b698 l O .data 0000000000000008 setup_buf +000000003bc0ab80 l O ro 0000000000000005 __func__.0 +000000003bc0ab88 l O ro 0000000000000007 __func__.1 +000000003bc0ab90 l O ro 000000000000000b __func__.4 +000000003bc0aba0 l O ro 0000000000000006 __func__.5 +0000000000000000 l df *ABS* 0000000000000000 dwc2_udc_otg.c +000000003bc0274e l F ro 0000000000000016 dwc2_fifo_status +000000003bc02764 l F ro 000000000000003a dwc2_free_request +000000003bc0279e l F ro 0000000000000048 pullup +000000003bc027e6 l F ro 0000000000000038 dwc2_alloc_request +000000003bc0281e l F ro 00000000000000a0 dwc2_ep_enable +000000003bc028be l F ro 0000000000000002 dwc2_fifo_flush +000000003bc02952 l F ro 0000000000000054 dwc2_dequeue +000000003bc02ab4 l F ro 000000000000003c wakeup +000000003bc02b36 l F ro 0000000000000090 dwc2_hsotg_txfifo_flush.constprop.0 +000000003bc02bc6 l F ro 000000000000005e kill_all_requests.isra.0 +000000003bc02c7a l F ro 00000000000000da dwc2_hsotg_init_fifo.constprop.0 +000000003bc02d54 l F ro 00000000000001a6 _dwc2_ep_disable.isra.0 +000000003bc02efa l F ro 0000000000000020 dwc2_ep_disable +000000003bc0b6a0 l O .data 0000000000000050 dwc2_ep_ops +000000003bc0ad90 l O ro 0000000000000012 __func__.0 +000000003bc0ada8 l O ro 0000000000000011 __func__.1 +000000003bc0adc0 l O ro 0000000000000013 __func__.2 +000000003bc0add8 l O ro 0000000000000018 __func__.3 +000000003bc0adf0 l O ro 0000000000000015 __func__.4 +000000003bc0ae08 l O ro 0000000000000009 driver_name +000000003bc0ae18 l O ro 0000000000000048 dwc2_udc_ops +000000003bc0ae60 l O ro 000000000000000c ep0name +000000003bc0ae70 l O ro 000000000000000b ep1name +000000003bc0ae80 l O ro 000000000000000c ep2name +000000003bc0ae90 l O ro 000000000000000a ep3name +0000000000000000 l df *ABS* 0000000000000000 dwc2_udc_otg_xfer_dma.c +000000003bc034ac l F ro 000000000000008e set_max_pktsize +000000003bc0353a l F ro 000000000000005e dwc2_udc_ep_clear_stall +000000003bc03598 l F ro 0000000000000062 dwc2_udc_ep_set_stall +000000003bc035fa l F ro 0000000000000080 dwc2_ep0_complete_out +000000003bc0367a l F ro 000000000000007e dwc2_udc_ep0_zlp +000000003bc036f8 l F ro 0000000000000068 dwc2_udc_ep0_set_stall.isra.0 +000000003bc03760 l F ro 00000000000000aa setdma_rx.isra.0 +000000003bc0380a l F ro 00000000000000fc complete_rx +000000003bc03960 l F ro 000000000000015c setdma_tx +000000003bc0b6f0 l O .data 0000000000000004 ep0_fifo_size +000000003bc0b6f4 l O .data 0000000000000004 ep_fifo_size +0000000000000000 l df *ABS* 0000000000000000 cv_usb.c +0000000000000000 l df *ABS* 0000000000000000 crc16.c +000000003bc0af18 l O ro 0000000000000200 crc16_tab +0000000000000000 l df *ABS* 0000000000000000 LzmaDec.c +000000003bc04738 l F ro 0000000000000072 LzmaDec_WriteRem +000000003bc047aa l F ro 000000000000138a LzmaDec_DecodeReal2 +000000003bc05b34 l F ro 00000000000004e8 LzmaDec_TryDummy +000000003bc062c8 l F ro 0000000000000066 LzmaDec_AllocateProbs2.isra.0 +0000000000000000 l df *ABS* 0000000000000000 lz4_all.c +000000003bc06452 l F ro 0000000000000024 LZ4F_readLE32 +000000003bc06476 l F ro 0000000000000276 LZ4_decompress_safe_withSmallPrefix +000000003bc066ec l F ro 0000000000000110 LZ4F_updateDict +000000003bc0703a l F ro 00000000000001a4 LZ4F_decodeHeader +000000003bc0b158 l O ro 0000000000000020 blockSizes.0 +000000003bc0b178 l O ro 0000000000000020 dec64table +000000003bc0b198 l O ro 0000000000000020 inc32table +0000000000000000 l df *ABS* 0000000000000000 xxhash.c +000000003bc079ea l F ro 000000000000002c XXH32_avalanche +000000003bc07a16 l F ro 0000000000000016 XXH_read32 +000000003bc07a2c l F ro 000000000000033a XXH32_finalize.constprop.0 +0000000000000000 l df *ABS* 0000000000000000 ddr.c +0000000000000000 l df *ABS* 0000000000000000 ddr_pkg_info.c +0000000000000000 l df *ABS* 0000000000000000 ddr_sys_bring_up.c +0000000000000000 l df *ABS* 0000000000000000 ddr_sys.c +0000000000000000 l df *ABS* 0000000000000000 phy_pll_init.c +0000000000000000 l df *ABS* 0000000000000000 cvx16_pinmux.c +0000000000000000 l df *ABS* 0000000000000000 cvx16_dram_cap_check.c +0000000000000000 l df *ABS* 0000000000000000 ddrc_init.c +0000000000000000 l df *ABS* 0000000000000000 phy_init.c +0000000000000000 l df *ABS* 0000000000000000 +000000003bc083f6 g F ro 000000000000000a get_ddr_vendor +000000003bc001b4 g F ro 000000000000000a mdelay +000000003bc08400 g F ro 0000000000000050 axi_mon_start_all +000000003bc0215c g F ro 0000000000000006 AcmIsr +000000003bc13400 g O .bss 0000000000000004 tar_freq +000000003bc0b440 g O .data 0000000000000008 time_records +0000000004400100 g *ABS* 0000000000000000 p_rom_api_cryptodma_aes_decrypt +000000003bc133f8 g O .bss 0000000000000004 freq_in +000000003bc00d30 g F ro 00000000000000ae load_ddr_param +000000003bc0a010 g O ro 0000000000000010 version_string +0000000004400080 g *ABS* 0000000000000000 p_rom_api_flash_init +000000003bc00994 g F ro 0000000000000004 dec_verify_image +000000003bc03c9e g F ro 00000000000000b2 dwc2_udc_ep_activate +000000003bc00aec g F ro 0000000000000052 putchar_l +000000003bc01610 g F ro 0000000000000002 LZ4_free +000000003bc045d6 g F ro 0000000000000018 dwc2_ep0_kick +0000000004400020 g *ABS* 0000000000000000 p_rom_api_get_boot_src +000000003bc03906 g F ro 0000000000000016 dwc2_udc_pre_setup +000000003bc00292 g F ro 0000000000000002 jump_to_loader_2nd +000000003bc0021a g F ro 0000000000000078 jump_to_monitor +000000003bc13280 g O .bss 0000000000000010 rsp_bufArr +000000003bc133d8 g O .bss 0000000000000008 reg_step +000000003bc133b8 g O .bss 0000000000000008 reg +000000003bc03b4c g F ro 0000000000000048 dwc2_set_address +000000003bc00acc g F ro 0000000000000020 memmove +000000003bc08674 g F ro 000000000000004e cvx16_bist_wr_prbs_init +000000003bc12880 g O .bss 0000000000000200 bulkBufAllocArr +000000003bc067fc g F ro 000000000000026e LZ4_decompress_safe +000000003bc13405 g O .bss 0000000000000001 acm_configValue +000000003bc08c5a g F ro 0000000000000044 cvx16_ddr_phy_power_on_seq1 +000000003bc06030 g F ro 000000000000027c LzmaDec_DecodeToDic +000000003bc08722 g F ro 0000000000000046 cvx16_bist_rdglvl_init +000000003bc09ff0 g O ro 000000000000001a build_message +000000003bc0921e g F ro 0000000000000182 cvx16_wdqlvl_req +000000003bc0b440 g .data 0000000000000000 __DATA_START__ +000000003bc004f2 g F ro 00000000000000c8 __system_reset +000000003bc00834 g F ro 0000000000000044 switch_rtc_mode_2nd_stage +000000003bc01338 g F ro 00000000000000e6 load_rest +000000003bc04706 g F ro 0000000000000032 crc16_ccitt +000000003bc08d72 g F ro 0000000000000028 cvx16_set_dfi_init_complete +000000003bc08d20 g F ro 0000000000000038 cvx16_wait_for_dfi_init_complete +000000003bc03b00 g F ro 000000000000004c dwc2_write_fifo_ep0 +000000003bc12b00 g O .bss 0000000000000080 cb1_bufArr +000000003bc08e4a g F ro 0000000000000002 cvx16_wrlvl_req +000000003bc02af0 g F ro 0000000000000046 dwc2_hsotg_wait_bit_set +000000003bc090ae g F ro 0000000000000170 cvx16_rdlvl_req +000000003bc00a6c g F ro 0000000000000060 memcpy +000000003bc08852 g F ro 00000000000000b0 cvx16_bist_wdqlvl_init +000000003bc028c2 g F ro 000000000000000a dwc2_get_ep0_name +000000003bc02a90 g F ro 0000000000000024 dwc2_hsotg_clear_bit +000000003bc03bbc g F ro 0000000000000040 dwc2_ep0_write +000000003bc028c0 g F ro 0000000000000002 dwc2_log_write +000000003bc02a6e g F ro 0000000000000022 dwc2_hsotg_set_bit +000000003bc132c0 g O .bss 0000000000000008 setup_bufArr +000000003bc099c8 g F ro 000000000000002e ctrl_init_low_patch +000000003bc0601c g F ro 0000000000000014 LzmaDec_Init +000000003bc0100a g F ro 0000000000000126 load_monitor +000000003bc1340f g O .bss 0000000000000001 pkg +000000003bc0d700 g stacks 0000000000000000 __STACKS_END__ +000000003bc08b4c g F ro 0000000000000016 cvx16_clk_div40 +000000003bc005ba g F ro 0000000000000032 panic_handler +000000003bc029a6 g F ro 000000000000002e dwc2_nuke +000000003bc001e2 g F ro 000000000000002a get_random_from_timer +000000003bc0979a g F ro 0000000000000002 cvx16_dram_cap_check +000000003bc08962 g F ro 000000000000006a cvx16_bist_start_check +000000003bc133fc g O .bss 0000000000000004 mod_freq +000000003bc00b6c g F ro 000000000000007c gpio_in_value +00000000044000e0 g *ABS* 0000000000000000 p_rom_api_verify_rsa +000000003bc093a0 g F ro 000000000000001a cvx16_en_rec_vol_mode +000000003bc0020c g F ro 000000000000000e read_count_tick +000000003bc08f78 g F ro 0000000000000070 cvx16_clk_gating_enable +000000003bc016c0 g F ro 000000000000007e decompress +000000003bc086c2 g F ro 0000000000000060 cvx16_bist_wr_sram_init +0000000000005c10 g *ABS* 0000000000000000 __BSS_SIZE__ +000000003bc001be g F ro 0000000000000024 get_timer +000000003bc08ce6 g F ro 000000000000003a cvx16_ddr_phy_power_on_seq3 +000000003bc031a8 g F ro 0000000000000156 usb_gadget_register_driver +000000003bc002a4 g F ro 000000000000001e console_putc +000000003bc133f0 g O .bss 0000000000000004 rddata +000000003bc08b62 g F ro 00000000000000f8 cvx16_chg_pll_freq +000000003bc00294 g F ro 0000000000000010 _uart_putc +000000003bc00156 g F ro 0000000000000024 flush_dcache_range +000000003bc12a80 g O .bss 0000000000000080 cb0_bufArr +000000003bc0068e g F ro 000000000000018e sys_pll_nd +000000003bc00832 g F ro 0000000000000002 switch_rtc_mode_1st_stage +000000003bc00878 g F ro 00000000000000bc set_rtc_en_registers +000000003bc00c60 g F ro 00000000000000d0 load_param2 +000000003bc0720e g F ro 00000000000007dc LZ4F_decompress +000000003bc09460 g F ro 000000000000033a cvx16_pinmux +000000003bc08a72 g F ro 0000000000000068 cvx16_dll_cal +000000003bc02162 g F ro 0000000000000138 acm_app_init +000000003bc022d6 g F ro 0000000000000478 AcmApp +000000003bc08f2e g F ro 000000000000004a cvx16_clk_gating_disable +000000003bc071de g F ro 0000000000000030 LZ4F_createDecompressionContext +000000003bc0173e g F ro 0000000000000006 DWC2_UncachedRead32 +000000003bc022a6 g F ro 0000000000000030 get_usb_polling_timeout_value +000000003bc03b94 g F ro 0000000000000028 dwc2_ep0_read +000000003bc12e00 g O .bss 0000000000000080 ep0BuffAllocArr +000000003bc03460 g F ro 000000000000004c usb_gadget_handle_interrupts +000000003bc13410 g .bss 0000000000000000 __BL2_END__ +000000003bc08c9e g F ro 0000000000000048 cvx16_ddr_phy_power_on_seq2 +000000003bc08d9a g F ro 000000000000002c cvx16_INT_ISR_08 +000000003bc06cd4 g F ro 0000000000000316 LZ4_decompress_safe_forceExtDict +000000003bc01fea g F ro 00000000000000a2 convert_buf_addr +000000003bc06378 g F ro 0000000000000030 LzmaDec_AllocateProbs +000000003bc08e92 g F ro 000000000000009c cvx16_pll_init +000000003bc0141e g F ro 0000000000000098 bl2_main +000000003bc0b700 g .data 0000000000000000 __DATA_END__ +000000003bc062ac g F ro 000000000000001c LzmaDec_FreeProbs +000000003bc014fa g F ro 00000000000000e8 decompress_lzma +000000003bc0017a g F ro 0000000000000010 trig_simulation_timer +000000003bc08902 g F ro 0000000000000060 cvx16_bist_wdmlvl_init +000000003bc0018a g F ro 000000000000002a udelay +000000003bc08d58 g F ro 000000000000001a cvx16_polling_dfi_init_start +000000003bc02912 g F ro 0000000000000040 dwc2_done +000000003bc08768 g F ro 00000000000000ea cvx16_bist_rdlvl_init +000000003bc1340e g O .bss 0000000000000001 ddr_vendor +00000000044000a0 g *ABS* 0000000000000000 p_rom_api_image_crc +000000003bc00c20 g F ro 0000000000000040 load_image_by_usb +000000003bc00000 g ro 0000000000000000 bl2_entrypoint +000000003bc01130 g F ro 0000000000000208 load_loader_2nd +000000003bc02c24 g F ro 0000000000000056 dwc2_disconnect +000000003bc03310 g F ro 0000000000000150 dwc2_udc_probe +000000003bc00934 g F ro 0000000000000060 init_comm_info +000000003bc133f4 g O .bss 0000000000000004 dev_freq +000000003bc045ee g F ro 00000000000000d8 dwc2_queue +000000003bc00680 g F ro 000000000000000e sys_switch_all_to_pll +000000003bc13410 g .bss 0000000000000000 __BSS_END__ +000000003bc081c8 g F ro 000000000000022e read_ddr_pkg_info +000000003bc12800 g O .bss 0000000000000080 acm_bufArr +0000000004400040 g *ABS* 0000000000000000 p_rom_api_set_boot_src +000000003bc0632e g F ro 000000000000004a LzmaProps_Decode +000000003bc08e4c g F ro 0000000000000020 cvx16_setting_check +000000003bc00ea4 g F ro 0000000000000166 load_blcp_2nd +000000003bc133d0 g O .bss 0000000000000008 reg_span +000000003bc08ada g F ro 000000000000005c cvx16_clk_normal +000000003bc0229a g F ro 000000000000000c usb_vbus_det +000000003bc00a12 g F ro 000000000000005a memset +000000003bc03c3c g F ro 0000000000000062 dwc2_udc_set_halt +000000003bc07f82 g F ro 00000000000001d2 XXH32_update +000000003bc0a170 g O ro 0000000000000025 hex2ascii_data +000000003bc099f6 g F ro 000000000000021c ctrl_init_update_by_dram_size +000000003bc03d50 g F ro 0000000000000346 dwc2_handle_ep0 +000000003bc00b3e g F ro 000000000000001c strcmp +000000003bc07f2c g F ro 0000000000000056 XXH32_reset +000000003bc07d66 g F ro 00000000000001c6 XXH32 +000000003bc089cc g F ro 00000000000000a6 cvx16_rdvld_train +000000003bc0979c g F ro 00000000000001fe ddrc_init +000000003bc06a6a g F ro 000000000000026a LZ4_decompress_safe_withPrefix64k +000000003bc00358 g F ro 000000000000019a tf_printf +000000003bc029d4 g F ro 000000000000009a usb_gadget_unregister_driver +000000003bc015e8 g F ro 0000000000000028 LZ4_calloc +000000003bc002c2 g F ro 0000000000000014 console_flush +000000003bc0208c g F ro 00000000000000d0 print_buf_addr +000000003bc0b434 g ro 0000000000000000 __RO_END__ +000000003bc12b80 g O .bss 0000000000000080 cb2_bufArr +0000000004400060 g *ABS* 0000000000000000 p_rom_api_load_image +000000003bc07010 g F ro 000000000000000c LZ4F_isError +000000003bc0d800 g .bss 0000000000000000 __BSS_START__ +000000003bc03bfc g F ro 0000000000000040 dwc2_udc_set_nak +000000003bc00000 g ro 0000000000000000 __RO_START__ +000000003bc08fe8 g F ro 00000000000000c6 cvx16_rdglvl_req +000000003bc032fe g F ro 0000000000000012 dwc2_phy_to_log_ep +000000003bc00998 g F ro 000000000000007a ntostr +000000003bc046c6 g F ro 0000000000000040 usb_polling +000000003bc08dc6 g F ro 000000000000001c cvx16_polling_synp_normal_mode +000000003bc06fea g F ro 0000000000000026 LZ4_decompress_safe_usingDict +000000003bc015e2 g F ro 0000000000000006 LZ4_malloc +000000003bc093ba g F ro 0000000000000022 ctrl_init_detect_dram_size +00000000044000c0 g *ABS* 0000000000000000 p_rom_api_get_number_of_retries +000000003bc0014c g F ro 000000000000000a sync_cache +000000003bc00636 g F ro 000000000000004a setup_dl_flag +000000003bc005ec g F ro 000000000000004a reset_c906l +000000003bc133c8 g O .bss 0000000000000008 reg_set +000000003bc063a8 g F ro 00000000000000aa LzmaDecode +000000003bc00be8 g F ro 000000000000001e usb_id_det +000000003bc0b700 g stacks 0000000000000000 __STACKS_START__ +000000003bc0b6f8 g O .data 0000000000000002 cv_usb_vid +000000003bc0081c g F ro 0000000000000016 sys_pll_init +000000003bc03abc g F ro 0000000000000044 dwc2_ep_fifo_read +000000003bc0b6fc g O .data 0000000000000004 ddr_data_rate +000000003bc12e80 g O .bss 0000000000000400 handlerArr +000000003bc08de2 g F ro 0000000000000068 cvx16_dfi_ca_park_prbs +000000003bc04096 g F ro 0000000000000540 dwc2_udc_irq +000000003bc12c00 g O .bss 0000000000000200 cmdBufAllocArr +000000003bc00b5a g F ro 0000000000000012 strlen +000000003bc1340d g O .bss 0000000000000001 ddr_type +000000003bc08450 g F ro 0000000000000224 ddr_sys_bring_up +000000003bc08154 g F ro 0000000000000040 XXH32_digest +000000003bc08194 g F ro 0000000000000034 ddr_init +000000003bc0391c g F ro 0000000000000044 dwc2_ep_fifo_write +000000003bc01612 g F ro 00000000000000ae decompress_lz4 +000000003bc0701c g F ro 000000000000001e LZ4F_getBlockSize +000000003bc1340c g O .bss 0000000000000001 ddr_capacity +000000003bc13308 g O .bss 0000000000000008 acm +000000003bc01744 g F ro 0000000000000004 DWC2_UncachedWrite32 +000000003bc133c0 g O .bss 0000000000000008 the_controller +000000003bc08e6c g F ro 0000000000000026 cvx16_set_dfi_init_start +000000003bc0999a g F ro 000000000000002e ctrl_init_high_patch +000000003bc00dde g F ro 00000000000000c6 load_ddr +000000003bc028cc g F ro 0000000000000046 udc_reinit +000000003bc08b36 g F ro 0000000000000016 cvx16_clk_div2 +000000003bc09c12 g F ro 00000000000003da phy_init +000000003bc093dc g F ro 0000000000000084 pll_init +000000003bc02f1a g F ro 000000000000028e dwc2_reconfig_usbd + + + +Disassembly of section ro: + +000000003bc00000 <__RO_START__>: + 3bc00000: 0200006f j 3bc00020 + ... + +000000003bc00020 : + 3bc00020: 05900e1b addiw t3,zero,89 + 3bc00024: 019e1e13 slli t3,t3,0x19 + 3bc00028: 03000eb7 lui t4,0x3000 + 3bc0002c: 084e8e9b addiw t4,t4,132 + 3bc00030: 01cea023 sw t3,0(t4) # 3000000 <__BSS_SIZE__+0x2ffa3f0> + 3bc00034: 00000093 li ra,0 + 3bc00038: 00000113 li sp,0 + 3bc0003c: 00000193 li gp,0 + 3bc00040: 00000213 li tp,0 + 3bc00044: 00000293 li t0,0 + 3bc00048: 00000313 li t1,0 + 3bc0004c: 00000393 li t2,0 + 3bc00050: 00000413 li s0,0 + 3bc00054: 00000493 li s1,0 + 3bc00058: 00000513 li a0,0 + 3bc0005c: 00000593 li a1,0 + 3bc00060: 00000613 li a2,0 + 3bc00064: 00000693 li a3,0 + 3bc00068: 00000713 li a4,0 + 3bc0006c: 00000793 li a5,0 + 3bc00070: 00000813 li a6,0 + 3bc00074: 00000893 li a7,0 + 3bc00078: 00000913 li s2,0 + 3bc0007c: 00000993 li s3,0 + 3bc00080: 00000a13 li s4,0 + 3bc00084: 00000a93 li s5,0 + 3bc00088: 00000b13 li s6,0 + 3bc0008c: 00000b93 li s7,0 + 3bc00090: 00000c13 li s8,0 + 3bc00094: 00000c93 li s9,0 + 3bc00098: 00000d13 li s10,0 + 3bc0009c: 00000d93 li s11,0 + 3bc000a0: 00000e13 li t3,0 + 3bc000a4: 00000e93 li t4,0 + 3bc000a8: 00000f13 li t5,0 + 3bc000ac: 00000f93 li t6,0 + 3bc000b0: 34001073 csrw mscratch,zero + 3bc000b4: 00000297 auipc t0,0x0 + 3bc000b8: 09028293 addi t0,t0,144 # 3bc00144 + 3bc000bc: 30529073 csrw mtvec,t0 + 3bc000c0: 000181b7 lui gp,0x18 + 3bc000c4: 0c71819b addiw gp,gp,199 + 3bc000c8: 00f19193 slli gp,gp,0xf + 3bc000cc: 7c019073 csrw mxstatus,gp + 3bc000d0: 702001b7 lui gp,0x70200 + 3bc000d4: ffc1819b addiw gp,gp,-4 + 3bc000d8: 00100213 li tp,1 + 3bc000dc: 0041a023 sw tp,0(gp) # 70200000 <__BL2_END__+0x345ecbf0> + 3bc000e0: 03300193 li gp,51 + 3bc000e4: 7c21b073 csrc mcor,gp + 3bc000e8: 01100193 li gp,17 + 3bc000ec: 7c21a073 csrs mcor,gp + 3bc000f0: 00100193 li gp,1 + 3bc000f4: 7c11a073 csrs mhcr,gp + 3bc000f8: 03300193 li gp,51 + 3bc000fc: 7c21b073 csrc mcor,gp + 3bc00100: 01200193 li gp,18 + 3bc00104: 7c21a073 csrs mcor,gp + 3bc00108: 00200193 li gp,2 + 3bc0010c: 7c11a073 csrs mhcr,gp + 3bc00110: 0000d117 auipc sp,0xd + 3bc00114: 5f010113 addi sp,sp,1520 # 3bc0d700 <__STACKS_END__> + 3bc00118: 0000d697 auipc a3,0xd + 3bc0011c: 6e868693 addi a3,a3,1768 # 3bc0d800 <__BSS_START__> + 3bc00120: 00013717 auipc a4,0x13 + 3bc00124: 2f070713 addi a4,a4,752 # 3bc13410 <__BL2_END__> + 3bc00128: 40d70733 sub a4,a4,a3 + +000000003bc0012c : + 3bc0012c: 0006b023 sd zero,0(a3) + 3bc00130: 00868693 addi a3,a3,8 + 3bc00134: ff870713 addi a4,a4,-8 + 3bc00138: fe071ae3 bnez a4,3bc0012c + 3bc0013c: 2e2010ef jal ra,3bc0141e + 3bc00140: 0040006f j 3bc00144 + +000000003bc00144 : + 3bc00144: 4760006f j 3bc005ba + 3bc00148: ffdff06f j 3bc00144 + +000000003bc0014c : + 3bc0014c: 0100000b icache.iall + 3bc00150: 01a0000b sync.i + 3bc00154: 8082 ret + +000000003bc00156 : + 3bc00156: 87aa mv a5,a0 + 3bc00158: 03f58593 addi a1,a1,63 + 3bc0015c: 95be add a1,a1,a5 + 3bc0015e: fc057513 andi a0,a0,-64 + 3bc00162: fc05f593 andi a1,a1,-64 + 3bc00166: 00b56563 bltu a0,a1,3bc00170 + 3bc0016a: 0190000b sync.s + 3bc0016e: 8082 ret + 3bc00170: 02b5000b dcache.cipa a0 + 3bc00174: 04050513 addi a0,a0,64 + 3bc00178: b7fd j 3bc00166 + +000000003bc0017a : + 3bc0017a: 47e5 li a5,25 + 3bc0017c: 02a787bb mulw a5,a5,a0 + 3bc00180: 03000737 lui a4,0x3000 + 3bc00184: 08f72423 sw a5,136(a4) # 3000088 <__BSS_SIZE__+0x2ffa478> + 3bc00188: 8082 ret + +000000003bc0018a : + 3bc0018a: c0102773 rdtime a4 + 3bc0018e: 47e5 li a5,25 + 3bc00190: 02a786bb mulw a3,a5,a0 + 3bc00194: fff74713 not a4,a4 + 3bc00198: 030007b7 lui a5,0x3000 + 3bc0019c: 2701 sext.w a4,a4 + 3bc0019e: 08d7a423 sw a3,136(a5) # 3000088 <__BSS_SIZE__+0x2ffa478> + 3bc001a2: c01027f3 rdtime a5 + 3bc001a6: fff7c793 not a5,a5 + 3bc001aa: 40f707bb subw a5,a4,a5 + 3bc001ae: fed7eae3 bltu a5,a3,3bc001a2 + 3bc001b2: 8082 ret + +000000003bc001b4 : + 3bc001b4: 3e800793 li a5,1000 + 3bc001b8: 02a7853b mulw a0,a5,a0 + 3bc001bc: b7f9 j 3bc0018a + +000000003bc001be : + 3bc001be: e519 bnez a0,3bc001cc + 3bc001c0: c0102573 rdtime a0 + 3bc001c4: fff54513 not a0,a0 + 3bc001c8: 2501 sext.w a0,a0 + 3bc001ca: 8082 ret + 3bc001cc: c01027f3 rdtime a5 + 3bc001d0: fff7c793 not a5,a5 + 3bc001d4: 9d1d subw a0,a0,a5 + 3bc001d6: 6799 lui a5,0x6 + 3bc001d8: 1a87879b addiw a5,a5,424 + 3bc001dc: 02f5553b divuw a0,a0,a5 + 3bc001e0: 8082 ret + +000000003bc001e2 : + 3bc001e2: e519 bnez a0,3bc001f0 + 3bc001e4: c0102573 rdtime a0 + 3bc001e8: fff54513 not a0,a0 + 3bc001ec: 2501 sext.w a0,a0 + 3bc001ee: 8082 ret + 3bc001f0: c01027f3 rdtime a5 + 3bc001f4: fff7c793 not a5,a5 + 3bc001f8: 9d1d subw a0,a0,a5 + 3bc001fa: 47e5 li a5,25 + 3bc001fc: 02f5553b divuw a0,a0,a5 + 3bc00200: 67e1 lui a5,0x18 + 3bc00202: 6a07879b addiw a5,a5,1696 + 3bc00206: 02f5753b remuw a0,a0,a5 + 3bc0020a: 8082 ret + +000000003bc0020c : + 3bc0020c: c0102573 rdtime a0 + 3bc00210: 47e5 li a5,25 + 3bc00212: 02f55533 divu a0,a0,a5 + 3bc00216: 2501 sext.w a0,a0 + 3bc00218: 8082 ret + +000000003bc0021a : + 3bc0021a: 1101 addi sp,sp,-32 + 3bc0021c: 494257b7 lui a5,0x49425 + 3bc00220: e822 sd s0,16(sp) + 3bc00222: 34f78793 addi a5,a5,847 # 4942534f <__BL2_END__+0xd811f3f> + 3bc00226: 00013417 auipc s0,0x13 + 3bc0022a: 0a240413 addi s0,s0,162 # 3bc132c8 + 3bc0022e: e426 sd s1,8(sp) + 3bc00230: e01c sd a5,0(s0) + 3bc00232: 010014b7 lui s1,0x1001 + 3bc00236: 4785 li a5,1 + 3bc00238: e04a sd s2,0(sp) + 3bc0023a: 00749613 slli a2,s1,0x7 + 3bc0023e: 892a mv s2,a0 + 3bc00240: ec1c sd a5,24(s0) + 3bc00242: 0000a517 auipc a0,0xa + 3bc00246: dde50513 addi a0,a0,-546 # 3bc0a020 + 3bc0024a: 57fd li a5,-1 + 3bc0024c: ec06 sd ra,24(sp) + 3bc0024e: f41c sd a5,40(s0) + 3bc00250: e80c sd a1,16(s0) + 3bc00252: 106000ef jal ra,3bc00358 + 3bc00256: 03000593 li a1,48 + 3bc0025a: 8522 mv a0,s0 + 3bc0025c: efbff0ef jal ra,3bc00156 + 3bc00260: fadff0ef jal ra,3bc0020c + 3bc00264: 3e800793 li a5,1000 + 3bc00268: 3e75051b addiw a0,a0,999 + 3bc0026c: 02f5553b divuw a0,a0,a5 + 3bc00270: 8622 mv a2,s0 + 3bc00272: 0000b797 auipc a5,0xb + 3bc00276: 1ce7b783 ld a5,462(a5) # 3bc0b440 + 3bc0027a: 6442 ld s0,16(sp) + 3bc0027c: 60e2 ld ra,24(sp) + 3bc0027e: 00749593 slli a1,s1,0x7 + 3bc00282: 64a2 ld s1,8(sp) + 3bc00284: 00a79723 sh a0,14(a5) + 3bc00288: 87ca mv a5,s2 + 3bc0028a: 6902 ld s2,0(sp) + 3bc0028c: 4501 li a0,0 + 3bc0028e: 6105 addi sp,sp,32 + 3bc00290: 8782 jr a5 + +000000003bc00292 : + 3bc00292: 8082 ret + +000000003bc00294 <_uart_putc>: + 3bc00294: 04140737 lui a4,0x4140 + 3bc00298: 4b5c lw a5,20(a4) + 3bc0029a: 0207f793 andi a5,a5,32 + 3bc0029e: dfed beqz a5,3bc00298 <_uart_putc+0x4> + 3bc002a0: c308 sw a0,0(a4) + 3bc002a2: 8082 ret + +000000003bc002a4 : + 3bc002a4: 1141 addi sp,sp,-16 + 3bc002a6: e022 sd s0,0(sp) + 3bc002a8: e406 sd ra,8(sp) + 3bc002aa: 47a9 li a5,10 + 3bc002ac: 842a mv s0,a0 + 3bc002ae: 00f51563 bne a0,a5,3bc002b8 + 3bc002b2: 4535 li a0,13 + 3bc002b4: fe1ff0ef jal ra,3bc00294 <_uart_putc> + 3bc002b8: 8522 mv a0,s0 + 3bc002ba: 6402 ld s0,0(sp) + 3bc002bc: 60a2 ld ra,8(sp) + 3bc002be: 0141 addi sp,sp,16 + 3bc002c0: bfd1 j 3bc00294 <_uart_putc> + +000000003bc002c2 : + 3bc002c2: 041406b7 lui a3,0x4140 + 3bc002c6: 06000713 li a4,96 + 3bc002ca: 4adc lw a5,20(a3) + 3bc002cc: 0607f793 andi a5,a5,96 + 3bc002d0: fee79de3 bne a5,a4,3bc002ca + 3bc002d4: 8082 ret + +000000003bc002d6 : + 3bc002d6: 7139 addi sp,sp,-64 + 3bc002d8: f04a sd s2,32(sp) + 3bc002da: 7c05b70b extu a4,a1,31,0 + 3bc002de: fc06 sd ra,56(sp) + 3bc002e0: f822 sd s0,48(sp) + 3bc002e2: f426 sd s1,40(sp) + 3bc002e4: 8932 mv s2,a2 + 3bc002e6: 4801 li a6,0 + 3bc002e8: 45a5 li a1,9 + 3bc002ea: 02e57633 remu a2,a0,a4 + 3bc002ee: 0018041b addiw s0,a6,1 + 3bc002f2: 0ff67793 andi a5,a2,255 + 3bc002f6: 04c5e063 bltu a1,a2,3bc00336 + 3bc002fa: 0307879b addiw a5,a5,48 + 3bc002fe: 0ff7f793 andi a5,a5,255 + 3bc00302: 0030 addi a2,sp,8 + 3bc00304: 0106578b srb a5,a2,a6,0 + 3bc00308: 02e557b3 divu a5,a0,a4 + 3bc0030c: 0805 addi a6,a6,1 + 3bc0030e: 02e57263 bgeu a0,a4,3bc00332 + 3bc00312: 408684bb subw s1,a3,s0 + 3bc00316: 02904363 bgtz s1,3bc0033c + 3bc0031a: 54fd li s1,-1 + 3bc0031c: 147d addi s0,s0,-1 + 3bc0031e: 0004079b sext.w a5,s0 + 3bc00322: 02979463 bne a5,s1,3bc0034a + 3bc00326: 70e2 ld ra,56(sp) + 3bc00328: 7442 ld s0,48(sp) + 3bc0032a: 74a2 ld s1,40(sp) + 3bc0032c: 7902 ld s2,32(sp) + 3bc0032e: 6121 addi sp,sp,64 + 3bc00330: 8082 ret + 3bc00332: 853e mv a0,a5 + 3bc00334: bf5d j 3bc002ea + 3bc00336: 0577879b addiw a5,a5,87 + 3bc0033a: b7d1 j 3bc002fe + 3bc0033c: 85ca mv a1,s2 + 3bc0033e: 03000513 li a0,48 + 3bc00342: 7aa000ef jal ra,3bc00aec + 3bc00346: 34fd addiw s1,s1,-1 + 3bc00348: b7f9 j 3bc00316 + 3bc0034a: 003c addi a5,sp,8 + 3bc0034c: 8087c50b lrbu a0,a5,s0,0 + 3bc00350: 85ca mv a1,s2 + 3bc00352: 79a000ef jal ra,3bc00aec + 3bc00356: b7d9 j 3bc0031c + +000000003bc00358 : + 3bc00358: 7135 addi sp,sp,-160 + 3bc0035a: e8a2 sd s0,80(sp) + 3bc0035c: e4a6 sd s1,72(sp) + 3bc0035e: ec86 sd ra,88(sp) + 3bc00360: e0ca sd s2,64(sp) + 3bc00362: fc4e sd s3,56(sp) + 3bc00364: f852 sd s4,48(sp) + 3bc00366: f456 sd s5,40(sp) + 3bc00368: f05a sd s6,32(sp) + 3bc0036a: f4ae sd a1,104(sp) + 3bc0036c: f8b2 sd a2,112(sp) + 3bc0036e: fcb6 sd a3,120(sp) + 3bc00370: e13a sd a4,128(sp) + 3bc00372: e53e sd a5,136(sp) + 3bc00374: e942 sd a6,144(sp) + 3bc00376: ed46 sd a7,152(sp) + 3bc00378: 842a mv s0,a0 + 3bc0037a: 4489 li s1,2 + 3bc0037c: c11d beqz a0,3bc003a2 + 3bc0037e: 00054703 lbu a4,0(a0) + 3bc00382: 4785 li a5,1 + 3bc00384: 00f71f63 bne a4,a5,3bc003a2 + 3bc00388: 00154783 lbu a5,1(a0) + 3bc0038c: 4711 li a4,4 + 3bc0038e: fd07879b addiw a5,a5,-48 + 3bc00392: 0ff7f693 andi a3,a5,255 + 3bc00396: 00d76663 bltu a4,a3,3bc003a2 + 3bc0039a: 0007849b sext.w s1,a5 + 3bc0039e: 00250413 addi s0,a0,2 + 3bc003a2: 10bc addi a5,sp,104 + 3bc003a4: ec3e sd a5,24(sp) + 3bc003a6: 4a25 li s4,9 + 3bc003a8: 4ad9 li s5,22 + 3bc003aa: 0000a997 auipc s3,0xa + 3bc003ae: ca298993 addi s3,s3,-862 # 3bc0a04c + 3bc003b2: 00044503 lbu a0,0(s0) + 3bc003b6: e919 bnez a0,3bc003cc + 3bc003b8: 60e6 ld ra,88(sp) + 3bc003ba: 6446 ld s0,80(sp) + 3bc003bc: 64a6 ld s1,72(sp) + 3bc003be: 6906 ld s2,64(sp) + 3bc003c0: 79e2 ld s3,56(sp) + 3bc003c2: 7a42 ld s4,48(sp) + 3bc003c4: 7aa2 ld s5,40(sp) + 3bc003c6: 7b02 ld s6,32(sp) + 3bc003c8: 610d addi sp,sp,160 + 3bc003ca: 8082 ret + 3bc003cc: 02500793 li a5,37 + 3bc003d0: 0405 addi s0,s0,1 + 3bc003d2: 10f51c63 bne a0,a5,3bc004ea + 3bc003d6: 4781 li a5,0 + 3bc003d8: 4681 li a3,0 + 3bc003da: 03000613 li a2,48 + 3bc003de: 00044703 lbu a4,0(s0) + 3bc003e2: 00c70c63 beq a4,a2,3bc003fa + 3bc003e6: f9c7071b addiw a4,a4,-100 + 3bc003ea: 0ff77713 andi a4,a4,255 + 3bc003ee: fceae5e3 bltu s5,a4,3bc003b8 + 3bc003f2: 44e9c70b lrw a4,s3,a4,2 + 3bc003f6: 974e add a4,a4,s3 + 3bc003f8: 8702 jr a4 + 3bc003fa: 00144703 lbu a4,1(s0) + 3bc003fe: fd07071b addiw a4,a4,-48 + 3bc00402: 0ff77593 andi a1,a4,255 + 3bc00406: 00ba6463 bltu s4,a1,3bc0040e + 3bc0040a: 0007069b sext.w a3,a4 + 3bc0040e: 0409 addi s0,s0,2 + 3bc00410: b7f9 j 3bc003de + 3bc00412: 6762 ld a4,24(sp) + 3bc00414: 4585 li a1,1 + 3bc00416: 00870613 addi a2,a4,8 # 4140008 <__BSS_SIZE__+0x413a3f8> + 3bc0041a: ec32 sd a2,24(sp) + 3bc0041c: 02f5d563 bge a1,a5,3bc00446 + 3bc00420: 00073903 ld s2,0(a4) + 3bc00424: 00095b63 bgez s2,3bc0043a + 3bc00428: 85a6 mv a1,s1 + 3bc0042a: 02d00513 li a0,45 + 3bc0042e: e436 sd a3,8(sp) + 3bc00430: 6bc000ef jal ra,3bc00aec + 3bc00434: 66a2 ld a3,8(sp) + 3bc00436: 41200933 neg s2,s2 + 3bc0043a: 8626 mv a2,s1 + 3bc0043c: 45a9 li a1,10 + 3bc0043e: 854a mv a0,s2 + 3bc00440: e97ff0ef jal ra,3bc002d6 + 3bc00444: a831 j 3bc00460 + 3bc00446: ffe9 bnez a5,3bc00420 + 3bc00448: 00072903 lw s2,0(a4) + 3bc0044c: bfe1 j 3bc00424 + 3bc0044e: 67e2 ld a5,24(sp) + 3bc00450: 0007b903 ld s2,0(a5) + 3bc00454: 00878713 addi a4,a5,8 + 3bc00458: ec3a sd a4,24(sp) + 3bc0045a: 00094503 lbu a0,0(s2) + 3bc0045e: e119 bnez a0,3bc00464 + 3bc00460: 0405 addi s0,s0,1 + 3bc00462: bf81 j 3bc003b2 + 3bc00464: 85a6 mv a1,s1 + 3bc00466: 0905 addi s2,s2,1 + 3bc00468: 684000ef jal ra,3bc00aec + 3bc0046c: b7fd j 3bc0045a + 3bc0046e: 67e2 ld a5,24(sp) + 3bc00470: 0000a917 auipc s2,0xa + 3bc00474: bd890913 addi s2,s2,-1064 # 3bc0a048 + 3bc00478: 0007bb03 ld s6,0(a5) + 3bc0047c: 00878713 addi a4,a5,8 + 3bc00480: ec3a sd a4,24(sp) + 3bc00482: 000b1c63 bnez s6,3bc0049a + 3bc00486: 8626 mv a2,s1 + 3bc00488: 45c1 li a1,16 + 3bc0048a: 855a mv a0,s6 + 3bc0048c: bf55 j 3bc00440 + 3bc0048e: 85a6 mv a1,s1 + 3bc00490: e436 sd a3,8(sp) + 3bc00492: 65a000ef jal ra,3bc00aec + 3bc00496: 66a2 ld a3,8(sp) + 3bc00498: 0905 addi s2,s2,1 + 3bc0049a: 00094503 lbu a0,0(s2) + 3bc0049e: f965 bnez a0,3bc0048e + 3bc004a0: b7dd j 3bc00486 + 3bc004a2: 6762 ld a4,24(sp) + 3bc004a4: 4585 li a1,1 + 3bc004a6: 00870613 addi a2,a4,8 + 3bc004aa: ec32 sd a2,24(sp) + 3bc004ac: 00f5d663 bge a1,a5,3bc004b8 + 3bc004b0: 6308 ld a0,0(a4) + 3bc004b2: 8626 mv a2,s1 + 3bc004b4: 45c1 li a1,16 + 3bc004b6: b769 j 3bc00440 + 3bc004b8: ffe5 bnez a5,3bc004b0 + 3bc004ba: 00076503 lwu a0,0(a4) + 3bc004be: bfd5 j 3bc004b2 + 3bc004c0: 0405 addi s0,s0,1 + 3bc004c2: 4789 li a5,2 + 3bc004c4: bf29 j 3bc003de + 3bc004c6: 2785 addiw a5,a5,1 + 3bc004c8: 0405 addi s0,s0,1 + 3bc004ca: bf11 j 3bc003de + 3bc004cc: 6762 ld a4,24(sp) + 3bc004ce: 4585 li a1,1 + 3bc004d0: 00870613 addi a2,a4,8 + 3bc004d4: ec32 sd a2,24(sp) + 3bc004d6: 00f5d663 bge a1,a5,3bc004e2 + 3bc004da: 6308 ld a0,0(a4) + 3bc004dc: 8626 mv a2,s1 + 3bc004de: 45a9 li a1,10 + 3bc004e0: b785 j 3bc00440 + 3bc004e2: ffe5 bnez a5,3bc004da + 3bc004e4: 00076503 lwu a0,0(a4) + 3bc004e8: bfd5 j 3bc004dc + 3bc004ea: 85a6 mv a1,s1 + 3bc004ec: 600000ef jal ra,3bc00aec + 3bc004f0: b5c9 j 3bc003b2 + +000000003bc004f2 <__system_reset>: + 3bc004f2: 7179 addi sp,sp,-48 + 3bc004f4: f022 sd s0,32(sp) + 3bc004f6: be00e437 lui s0,0xbe00e + 3bc004fa: f406 sd ra,40(sp) + 3bc004fc: 00340793 addi a5,s0,3 # ffffffffbe00e003 <__BL2_END__+0xffffffff823fabf3> + 3bc00500: ec26 sd s1,24(sp) + 3bc00502: e84a sd s2,16(sp) + 3bc00504: e44e sd s3,8(sp) + 3bc00506: 0e000937 lui s2,0xe000 + 3bc0050a: 862e mv a2,a1 + 3bc0050c: 00f92823 sw a5,16(s2) # e000010 + 3bc00510: 85aa mv a1,a0 + 3bc00512: 0000a517 auipc a0,0xa + 3bc00516: b9650513 addi a0,a0,-1130 # 3bc0a0a8 + 3bc0051a: e3fff0ef jal ra,3bc00358 + 3bc0051e: da5ff0ef jal ra,3bc002c2 + 3bc00522: be0034b7 lui s1,0xbe003 + 3bc00526: 00148793 addi a5,s1,1 # ffffffffbe003001 <__BL2_END__+0xffffffff823efbf1> + 3bc0052a: 030009b7 lui s3,0x3000 + 3bc0052e: 6505 lui a0,0x1 + 3bc00530: 08f9a223 sw a5,132(s3) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc00534: 38850513 addi a0,a0,904 # 1388 <__BSS_SIZE__-0x4888> + 3bc00538: c7dff0ef jal ra,3bc001b4 + 3bc0053c: 050267b7 lui a5,0x5026 + 3bc00540: 4705 li a4,1 + 3bc00542: 0ee7a023 sw a4,224(a5) # 50260e0 + 3bc00546: 0ce7a423 sw a4,200(a5) + 3bc0054a: 0489 addi s1,s1,2 + 3bc0054c: 0899a223 sw s1,132(s3) + 3bc00550: 06400513 li a0,100 + 3bc00554: c37ff0ef jal ra,3bc0018a + 3bc00558: 050257b7 lui a5,0x5025 + 3bc0055c: 672d lui a4,0xb + 3bc0055e: 0a07a623 sw zero,172(a5) # 50250ac + 3bc00562: b1870713 addi a4,a4,-1256 # ab18 <__BSS_SIZE__+0x4f08> + 3bc00566: c3d8 sw a4,4(a5) + 3bc00568: 00400737 lui a4,0x400 + 3bc0056c: 04070713 addi a4,a4,64 # 400040 <__BSS_SIZE__+0x3fa430> + 3bc00570: c798 sw a4,8(a5) + 3bc00572: 030107b7 lui a5,0x3010 + 3bc00576: 06600713 li a4,102 + 3bc0057a: c3d8 sw a4,4(a5) + 3bc0057c: 02000713 li a4,32 + 3bc00580: cfd8 sw a4,28(a5) + 3bc00582: 07600713 li a4,118 + 3bc00586: c7d8 sw a4,12(a5) + 3bc00588: 4745 li a4,17 + 3bc0058a: c398 sw a4,0(a5) + 3bc0058c: 00394783 lbu a5,3(s2) + 3bc00590: 0407f793 andi a5,a5,64 + 3bc00594: c395 beqz a5,3bc005b8 <__system_reset+0xc6> + 3bc00596: 0411 addi s0,s0,4 + 3bc00598: 00892823 sw s0,16(s2) + 3bc0059c: 050266b7 lui a3,0x5026 + 3bc005a0: 470d li a4,3 + 3bc005a2: 0d46a783 lw a5,212(a3) # 50260d4 + 3bc005a6: 2781 sext.w a5,a5 + 3bc005a8: fee79de3 bne a5,a4,3bc005a2 <__system_reset+0xb0> + 3bc005ac: 000807b7 lui a5,0x80 + 3bc005b0: 05025737 lui a4,0x5025 + 3bc005b4: 07a1 addi a5,a5,8 + 3bc005b6: c71c sw a5,8(a4) + 3bc005b8: a001 j 3bc005b8 <__system_reset+0xc6> + +000000003bc005ba : + 3bc005ba: 1141 addi sp,sp,-16 + 3bc005bc: be00e7b7 lui a5,0xbe00e + 3bc005c0: e406 sd ra,8(sp) + 3bc005c2: 0e000737 lui a4,0xe000 + 3bc005c6: 0789 addi a5,a5,2 + 3bc005c8: cb1c sw a5,16(a4) + 3bc005ca: 0000879b sext.w a5,ra + 3bc005ce: 8586 mv a1,ra + 3bc005d0: 0000a517 auipc a0,0xa + 3bc005d4: af050513 addi a0,a0,-1296 # 3bc0a0c0 + 3bc005d8: cb5c sw a5,20(a4) + 3bc005da: d7fff0ef jal ra,3bc00358 + 3bc005de: 55fd li a1,-1 + 3bc005e0: 0000a517 auipc a0,0xa + 3bc005e4: af050513 addi a0,a0,-1296 # 3bc0a0d0 + 3bc005e8: f0bff0ef jal ra,3bc004f2 <__system_reset> + +000000003bc005ec : + 3bc005ec: 1141 addi sp,sp,-16 + 3bc005ee: e022 sd s0,0(sp) + 3bc005f0: 842a mv s0,a0 + 3bc005f2: 0000a517 auipc a0,0xa + 3bc005f6: ae650513 addi a0,a0,-1306 # 3bc0a0d8 + 3bc005fa: e406 sd ra,8(sp) + 3bc005fc: d5dff0ef jal ra,3bc00358 + 3bc00600: 03003737 lui a4,0x3003 + 3bc00604: 535c lw a5,36(a4) + 3bc00606: 6609 lui a2,0x2 + 3bc00608: 60a2 ld ra,8(sp) + 3bc0060a: 2781 sext.w a5,a5 + 3bc0060c: fbf7f793 andi a5,a5,-65 + 3bc00610: d35c sw a5,36(a4) + 3bc00612: 020b07b7 lui a5,0x20b0 + 3bc00616: 43d4 lw a3,4(a5) + 3bc00618: 8ed1 or a3,a3,a2 + 3bc0061a: c3d4 sw a3,4(a5) + 3bc0061c: 0004069b sext.w a3,s0 + 3bc00620: d394 sw a3,32(a5) + 3bc00622: 9401 srai s0,s0,0x20 + 3bc00624: d3c0 sw s0,36(a5) + 3bc00626: 535c lw a5,36(a4) + 3bc00628: 6402 ld s0,0(sp) + 3bc0062a: 2781 sext.w a5,a5 + 3bc0062c: 0407e793 ori a5,a5,64 + 3bc00630: d35c sw a5,36(a4) + 3bc00632: 0141 addi sp,sp,16 + 3bc00634: 8082 ret + +000000003bc00636 : + 3bc00636: 1141 addi sp,sp,-16 + 3bc00638: e406 sd ra,8(sp) + 3bc0063a: c8800097 auipc ra,0xc8800 + 3bc0063e: 9e6080e7 jalr -1562(ra) # 4400020 + 3bc00642: 67b5 lui a5,0xd + 3bc00644: 2501 sext.w a0,a0 + 3bc00646: ea078713 addi a4,a5,-352 # cea0 <__BSS_SIZE__+0x7290> + 3bc0064a: 00e50a63 beq a0,a4,3bc0065e + 3bc0064e: ea378793 addi a5,a5,-349 + 3bc00652: 02f50063 beq a0,a5,3bc00672 + 3bc00656: 0e0007b7 lui a5,0xe000 + 3bc0065a: c3c8 sw a0,4(a5) + 3bc0065c: a801 j 3bc0066c + 3bc0065e: 4d4757b7 lui a5,0x4d475 + 3bc00662: 0e000737 lui a4,0xe000 + 3bc00666: e3278793 addi a5,a5,-462 # 4d474e32 <__BL2_END__+0x11861a22> + 3bc0066a: c35c sw a5,4(a4) + 3bc0066c: 60a2 ld ra,8(sp) + 3bc0066e: 0141 addi sp,sp,16 + 3bc00670: 8082 ret + 3bc00672: 4d4757b7 lui a5,0x4d475 + 3bc00676: 0e000737 lui a4,0xe000 + 3bc0067a: e3178793 addi a5,a5,-463 # 4d474e31 <__BL2_END__+0x11861a21> + 3bc0067e: b7f5 j 3bc0066a + +000000003bc00680 : + 3bc00680: 030027b7 lui a5,0x3002 + 3bc00684: 0207a823 sw zero,48(a5) # 3002030 <__BSS_SIZE__+0x2ffc420> + 3bc00688: 0207aa23 sw zero,52(a5) + 3bc0068c: 8082 ret + +000000003bc0068e : + 3bc0068e: 7139 addi sp,sp,-64 + 3bc00690: 0000a797 auipc a5,0xa + 3bc00694: ab87b783 ld a5,-1352(a5) # 3bc0a148 + 3bc00698: e03e sd a5,0(sp) + 3bc0069a: 0000a797 auipc a5,0xa + 3bc0069e: ab67b783 ld a5,-1354(a5) # 3bc0a150 + 3bc006a2: e43e sd a5,8(sp) + 3bc006a4: 0000a797 auipc a5,0xa + 3bc006a8: ab47b783 ld a5,-1356(a5) # 3bc0a158 + 3bc006ac: e83e sd a5,16(sp) + 3bc006ae: 0000a517 auipc a0,0xa + 3bc006b2: a3250513 addi a0,a0,-1486 # 3bc0a0e0 + 3bc006b6: 0000a797 auipc a5,0xa + 3bc006ba: aaa7b783 ld a5,-1366(a5) # 3bc0a160 + 3bc006be: f426 sd s1,40(sp) + 3bc006c0: ec3e sd a5,24(sp) + 3bc006c2: fc06 sd ra,56(sp) + 3bc006c4: f822 sd s0,48(sp) + 3bc006c6: f04a sd s2,32(sp) + 3bc006c8: c91ff0ef jal ra,3bc00358 + 3bc006cc: 030027b7 lui a5,0x3002 + 3bc006d0: 577d li a4,-1 + 3bc006d2: 5b84 lw s1,48(a5) + 3bc006d4: 03f00693 li a3,63 + 3bc006d8: db98 sw a4,48(a5) + 3bc006da: dbd4 sw a3,52(a5) + 3bc006dc: 054887b7 lui a5,0x5488 + 3bc006e0: 03003737 lui a4,0x3003 + 3bc006e4: 10178793 addi a5,a5,257 # 5488101 + 3bc006e8: 80f72423 sw a5,-2040(a4) # 3002808 <__BSS_SIZE__+0x2ffcbf8> + 3bc006ec: 030037b7 lui a5,0x3003 + 3bc006f0: 84d72023 sw a3,-1984(a4) + 3bc006f4: 2481 sext.w s1,s1 + 3bc006f6: 4601 li a2,0 + 3bc006f8: 85470713 addi a4,a4,-1964 + 3bc006fc: 01010813 addi a6,sp,16 + 3bc00700: 80c78513 addi a0,a5,-2036 # 300280c <__BSS_SIZE__+0x2ffcbfc> + 3bc00704: 45c1 li a1,16 + 3bc00706: 4026468b lrw a3,a2,sp,0 + 3bc0070a: c314 sw a3,0(a4) + 3bc0070c: ffc72683 lw a3,-4(a4) + 3bc00710: 0741 addi a4,a4,16 + 3bc00712: 2681 sext.w a3,a3 + 3bc00714: 9abd andi a3,a3,-17 + 3bc00716: 0016e693 ori a3,a3,1 + 3bc0071a: fed72623 sw a3,-20(a4) + 3bc0071e: 4106468b lrw a3,a2,a6,0 + 3bc00722: 40a6568b srw a3,a2,a0,0 + 3bc00726: 0611 addi a2,a2,4 + 3bc00728: fcb61fe3 bne a2,a1,3bc00706 + 3bc0072c: 80078613 addi a2,a5,-2048 + 3bc00730: 4218 lw a4,0(a2) + 3bc00732: 76bd lui a3,0xfffef + 3bc00734: eee68693 addi a3,a3,-274 # fffffffffffeeeee <__BL2_END__+0xffffffffc43dbade> + 3bc00738: 2701 sext.w a4,a4 + 3bc0073a: 8f75 and a4,a4,a3 + 3bc0073c: c218 sw a4,0(a2) + 3bc0073e: 00448737 lui a4,0x448 + 3bc00742: 90078613 addi a2,a5,-1792 + 3bc00746: 10170713 addi a4,a4,257 # 448101 <__BSS_SIZE__+0x4424f1> + 3bc0074a: c618 sw a4,8(a2) + 3bc0074c: 03002437 lui s0,0x3002 + 3bc00750: 018006b7 lui a3,0x1800 + 3bc00754: 6841 lui a6,0x10 + 3bc00756: d014 sw a3,32(s0) + 3bc00758: 30980593 addi a1,a6,777 # 10309 <__BSS_SIZE__+0xa6f9> + 3bc0075c: 10040693 addi a3,s0,256 # 3002100 <__BSS_SIZE__+0x2ffc4f0> + 3bc00760: da8c sw a1,48(a3) + 3bc00762: 000205b7 lui a1,0x20 + 3bc00766: 20958593 addi a1,a1,521 # 20209 <__BSS_SIZE__+0x1a5f9> + 3bc0076a: de8c sw a1,56(a3) + 3bc0076c: c658 sw a4,12(a2) + 3bc0076e: 00030637 lui a2,0x30 + 3bc00772: 00960313 addi t1,a2,9 # 30009 <__BSS_SIZE__+0x2a3f9> + 3bc00776: 04642423 sw t1,72(s0) + 3bc0077a: 30960713 addi a4,a2,777 + 3bc0077e: 00040537 lui a0,0x40 + 3bc00782: c878 sw a4,84(s0) + 3bc00784: 00080937 lui s2,0x80 + 3bc00788: 00950713 addi a4,a0,9 # 40009 <__BSS_SIZE__+0x3a3f9> + 3bc0078c: d078 sw a4,100(s0) + 3bc0078e: 00990893 addi a7,s2,9 # 80009 <__BSS_SIZE__+0x7a3f9> + 3bc00792: 08040713 addi a4,s0,128 + 3bc00796: 01172423 sw a7,8(a4) + 3bc0079a: 001208b7 lui a7,0x120 + 3bc0079e: 08a5 addi a7,a7,9 + 3bc007a0: 01172c23 sw a7,24(a4) + 3bc007a4: 000f08b7 lui a7,0xf0 + 3bc007a8: 08a5 addi a7,a7,9 + 3bc007aa: 0316a023 sw a7,32(a3) # 1800020 <__BSS_SIZE__+0x17fa410> + 3bc007ae: 0825 addi a6,a6,9 + 3bc007b0: 03072423 sw a6,40(a4) + 3bc007b4: 10960813 addi a6,a2,265 + 3bc007b8: 07072223 sw a6,100(a4) + 3bc007bc: 30950513 addi a0,a0,777 + 3bc007c0: d768 sw a0,108(a4) + 3bc007c2: 00060537 lui a0,0x60 + 3bc007c6: 04672423 sw t1,72(a4) + 3bc007ca: 20950513 addi a0,a0,521 # 60209 <__BSS_SIZE__+0x5a5f9> + 3bc007ce: cb28 sw a0,80(a4) + 3bc007d0: cf28 sw a0,88(a4) + 3bc007d2: ca8c sw a1,16(a3) + 3bc007d4: 20960613 addi a2,a2,521 + 3bc007d8: c2f0 sw a2,68(a3) + 3bc007da: 00050637 lui a2,0x50 + 3bc007de: 0625 addi a2,a2,9 + 3bc007e0: df10 sw a2,56(a4) + 3bc007e2: d6d0 sw a2,44(a3) + 3bc007e4: 88078793 addi a5,a5,-1920 + 3bc007e8: 5398 lw a4,32(a5) + 3bc007ea: 10090913 addi s2,s2,256 + 3bc007ee: 0124f933 and s2,s1,s2 + 3bc007f2: 2701 sext.w a4,a4 + 3bc007f4: 9b6d andi a4,a4,-5 + 3bc007f6: d398 sw a4,32(a5) + 3bc007f8: 57d8 lw a4,44(a5) + 3bc007fa: 0c800513 li a0,200 + 3bc007fe: 2701 sext.w a4,a4 + 3bc00800: 9b65 andi a4,a4,-7 + 3bc00802: d7d8 sw a4,44(a5) + 3bc00804: 987ff0ef jal ra,3bc0018a + 3bc00808: 03242823 sw s2,48(s0) + 3bc0080c: 70e2 ld ra,56(sp) + 3bc0080e: 02042a23 sw zero,52(s0) + 3bc00812: 7442 ld s0,48(sp) + 3bc00814: 74a2 ld s1,40(sp) + 3bc00816: 7902 ld s2,32(sp) + 3bc00818: 6121 addi sp,sp,64 + 3bc0081a: 8082 ret + +000000003bc0081c : + 3bc0081c: 1141 addi sp,sp,-16 + 3bc0081e: e406 sd ra,8(sp) + 3bc00820: e6fff0ef jal ra,3bc0068e + 3bc00824: 60a2 ld ra,8(sp) + 3bc00826: 0000a517 auipc a0,0xa + 3bc0082a: 8ca50513 addi a0,a0,-1846 # 3bc0a0f0 + 3bc0082e: 0141 addi sp,sp,16 + 3bc00830: b625 j 3bc00358 + +000000003bc00832 : + 3bc00832: 8082 ret + +000000003bc00834 : + 3bc00834: 05025737 lui a4,0x5025 + 3bc00838: 475c lw a5,12(a4) + 3bc0083a: 471c lw a5,8(a4) + 3bc0083c: f40006b7 lui a3,0xf4000 + 3bc00840: bff68693 addi a3,a3,-1025 # fffffffff3fffbff <__BL2_END__+0xffffffffb83ec7ef> + 3bc00844: 2781 sext.w a5,a5 + 3bc00846: 8ff5 and a5,a5,a3 + 3bc00848: 0c0006b7 lui a3,0xc000 + 3bc0084c: 8fd5 or a5,a5,a3 + 3bc0084e: c71c sw a5,8(a4) + 3bc00850: 4685 li a3,1 + 3bc00852: 050267b7 lui a5,0x5026 + 3bc00856: 48d7a623 sw a3,1164(a5) # 502648c + 3bc0085a: 4807a623 sw zero,1164(a5) + 3bc0085e: 471c lw a5,8(a4) + 3bc00860: 0c0016b7 lui a3,0xc001 + 3bc00864: 80068693 addi a3,a3,-2048 # c000800 + 3bc00868: 2781 sext.w a5,a5 + 3bc0086a: 8fd5 or a5,a5,a3 + 3bc0086c: c71c sw a5,8(a4) + 3bc0086e: 0000a517 auipc a0,0xa + 3bc00872: 89250513 addi a0,a0,-1902 # 3bc0a100 + 3bc00876: b4cd j 3bc00358 + +000000003bc00878 : + 3bc00878: 1141 addi sp,sp,-16 + 3bc0087a: e022 sd s0,0(sp) + 3bc0087c: 05026437 lui s0,0x5026 + 3bc00880: 0f842583 lw a1,248(s0) # 50260f8 + 3bc00884: 0000a517 auipc a0,0xa + 3bc00888: 89450513 addi a0,a0,-1900 # 3bc0a118 + 3bc0088c: e406 sd ra,8(sp) + 3bc0088e: 2581 sext.w a1,a1 + 3bc00890: ac9ff0ef jal ra,3bc00358 + 3bc00894: 0fc42583 lw a1,252(s0) + 3bc00898: 0000a517 auipc a0,0xa + 3bc0089c: 89850513 addi a0,a0,-1896 # 3bc0a130 + 3bc008a0: 2581 sext.w a1,a1 + 3bc008a2: ab7ff0ef jal ra,3bc00358 + 3bc008a6: 4785 li a5,1 + 3bc008a8: 0cf42023 sw a5,192(s0) + 3bc008ac: 05026737 lui a4,0x5026 + 3bc008b0: 4685 li a3,1 + 3bc008b2: 0c072783 lw a5,192(a4) # 50260c0 + 3bc008b6: 2781 sext.w a5,a5 + 3bc008b8: fed79de3 bne a5,a3,3bc008b2 + 3bc008bc: 0cd72623 sw a3,204(a4) + 3bc008c0: 05026737 lui a4,0x5026 + 3bc008c4: 4685 li a3,1 + 3bc008c6: 0cc72783 lw a5,204(a4) # 50260cc + 3bc008ca: 2781 sext.w a5,a5 + 3bc008cc: fed79de3 bne a5,a3,3bc008c6 + 3bc008d0: 0cd72423 sw a3,200(a4) + 3bc008d4: 05026737 lui a4,0x5026 + 3bc008d8: 4685 li a3,1 + 3bc008da: 0c872783 lw a5,200(a4) # 50260c8 + 3bc008de: 2781 sext.w a5,a5 + 3bc008e0: fed79de3 bne a5,a3,3bc008da + 3bc008e4: 0ed72023 sw a3,224(a4) + 3bc008e8: 050266b7 lui a3,0x5026 + 3bc008ec: 4705 li a4,1 + 3bc008ee: 0e06a783 lw a5,224(a3) # 50260e0 + 3bc008f2: 2781 sext.w a5,a5 + 3bc008f4: fee79de3 bne a5,a4,3bc008ee + 3bc008f8: 05025737 lui a4,0x5025 + 3bc008fc: 08070613 addi a2,a4,128 # 5025080 + 3bc00900: 565c lw a5,44(a2) + 3bc00902: 60a2 ld ra,8(sp) + 3bc00904: 6402 ld s0,0(sp) + 3bc00906: 2781 sext.w a5,a5 + 3bc00908: 0017e793 ori a5,a5,1 + 3bc0090c: d65c sw a5,44(a2) + 3bc0090e: 67ad lui a5,0xb + 3bc00910: b1878793 addi a5,a5,-1256 # ab18 <__BSS_SIZE__+0x4f08> + 3bc00914: c35c sw a5,4(a4) + 3bc00916: 471c lw a5,8(a4) + 3bc00918: 7645 lui a2,0xffff1 + 3bc0091a: 84060613 addi a2,a2,-1984 # ffffffffffff0840 <__BL2_END__+0xffffffffc43dd430> + 3bc0091e: 2781 sext.w a5,a5 + 3bc00920: 8fd1 or a5,a5,a2 + 3bc00922: c71c sw a5,8(a4) + 3bc00924: 0d06a783 lw a5,208(a3) + 3bc00928: 2781 sext.w a5,a5 + 3bc0092a: 9bed andi a5,a5,-5 + 3bc0092c: 0cf6a823 sw a5,208(a3) + 3bc00930: 0141 addi sp,sp,16 + 3bc00932: 8082 ret + +000000003bc00934 : + 3bc00934: 7139 addi sp,sp,-64 + 3bc00936: 0000a797 auipc a5,0xa + 3bc0093a: 8327b783 ld a5,-1998(a5) # 3bc0a168 + 3bc0093e: e43e sd a5,8(sp) + 3bc00940: 000827b7 lui a5,0x82 + 3bc00944: 47378793 addi a5,a5,1139 # 82473 <__BSS_SIZE__+0x7c863> + 3bc00948: 07b2 slli a5,a5,0xc + 3bc0094a: faf1578b sdd a5,a5,(sp),1,4 + 3bc0094e: f03e sd a5,32(sp) + 3bc00950: 6785 lui a5,0x1 + 3bc00952: 10178793 addi a5,a5,257 # 1101 <__BSS_SIZE__-0x4b0f> + 3bc00956: d43e sw a5,40(sp) + 3bc00958: 478d li a5,3 + 3bc0095a: 02f10723 sb a5,46(sp) + 3bc0095e: fc06 sd ra,56(sp) + 3bc00960: 4701 li a4,0 + 3bc00962: 4781 li a5,0 + 3bc00964: 002c addi a1,sp,8 + 3bc00966: 02400693 li a3,36 + 3bc0096a: 80b7460b lrbu a2,a4,a1,0 + 3bc0096e: 0705 addi a4,a4,1 + 3bc00970: 9fb1 addw a5,a5,a2 + 3bc00972: 3c07b78b extu a5,a5,15,0 + 3bc00976: fed71ae3 bne a4,a3,3bc0096a + 3bc0097a: 01900537 lui a0,0x1900 + 3bc0097e: 02800613 li a2,40 + 3bc00982: 40050513 addi a0,a0,1024 # 1900400 <__BSS_SIZE__+0x18fa7f0> + 3bc00986: 02f11623 sh a5,44(sp) + 3bc0098a: 0e2000ef jal ra,3bc00a6c + 3bc0098e: 70e2 ld ra,56(sp) + 3bc00990: 6121 addi sp,sp,64 + 3bc00992: 8082 ret + +000000003bc00994 : + 3bc00994: 4501 li a0,0 + 3bc00996: 8082 ret + +000000003bc00998 : + 3bc00998: 00050023 sb zero,0(a0) + 3bc0099c: 872a mv a4,a0 + 3bc0099e: 00009317 auipc t1,0x9 + 3bc009a2: 7d230313 addi t1,t1,2002 # 3bc0a170 + 3bc009a6: 4e65 li t3,25 + 3bc009a8: 02c5f7b3 remu a5,a1,a2 + 3bc009ac: 80f3478b lrbu a5,t1,a5,0 + 3bc009b0: ce91 beqz a3,3bc009cc + 3bc009b2: f9f7881b addiw a6,a5,-97 + 3bc009b6: 0ff87813 andi a6,a6,255 + 3bc009ba: 02000893 li a7,32 + 3bc009be: 010e7363 bgeu t3,a6,3bc009c4 + 3bc009c2: 4881 li a7,0 + 3bc009c4: 411787bb subw a5,a5,a7 + 3bc009c8: 0ff7f793 andi a5,a5,255 + 3bc009cc: 0817578b sbib a5,(a4),1,0 + 3bc009d0: 02c5d7b3 divu a5,a1,a2 + 3bc009d4: 02c5f463 bgeu a1,a2,3bc009fc + 3bc009d8: 87aa mv a5,a0 + 3bc009da: 86ba mv a3,a4 + 3bc009dc: 02d7e263 bltu a5,a3,3bc00a00 + 3bc009e0: fff50693 addi a3,a0,-1 + 3bc009e4: 4781 li a5,0 + 3bc009e6: 00d76863 bltu a4,a3,3bc009f6 + 3bc009ea: 40a707b3 sub a5,a4,a0 + 3bc009ee: 0785 addi a5,a5,1 + 3bc009f0: 8385 srli a5,a5,0x1 + 3bc009f2: 40f007b3 neg a5,a5 + 3bc009f6: 00f70533 add a0,a4,a5 + 3bc009fa: 8082 ret + 3bc009fc: 85be mv a1,a5 + 3bc009fe: b76d j 3bc009a8 + 3bc00a00: 0006c583 lbu a1,0(a3) + 3bc00a04: 0007c603 lbu a2,0(a5) + 3bc00a08: 1817d58b sbia a1,(a5),1,0 + 3bc00a0c: 19f6d60b sbia a2,(a3),-1,0 + 3bc00a10: b7f1 j 3bc009dc + +000000003bc00a12 : + 3bc00a12: 0ff5f813 andi a6,a1,255 + 3bc00a16: 87aa mv a5,a0 + 3bc00a18: 0077f713 andi a4,a5,7 + 3bc00a1c: c719 beqz a4,3bc00a2a + 3bc00a1e: e211 bnez a2,3bc00a22 + 3bc00a20: 8082 ret + 3bc00a22: 1817d80b sbia a6,(a5),1,0 + 3bc00a26: 167d addi a2,a2,-1 + 3bc00a28: bfc5 j 3bc00a18 + 3bc00a2a: ca05 beqz a2,3bc00a5a + 3bc00a2c: 00009697 auipc a3,0x9 + 3bc00a30: 76c6b683 ld a3,1900(a3) # 3bc0a198 + 3bc00a34: 0ff5f593 andi a1,a1,255 + 3bc00a38: 02d585b3 mul a1,a1,a3 + 3bc00a3c: 489d li a7,7 + 3bc00a3e: 4681 li a3,0 + 3bc00a40: 40d60333 sub t1,a2,a3 + 3bc00a44: 0068ec63 bltu a7,t1,3bc00a5c + 3bc00a48: 00365693 srli a3,a2,0x3 + 3bc00a4c: 55e1 li a1,-8 + 3bc00a4e: 06d7978b addsl a5,a5,a3,3 + 3bc00a52: 20b6960b mula a2,a3,a1 + 3bc00a56: 00e61763 bne a2,a4,3bc00a64 + 3bc00a5a: 8082 ret + 3bc00a5c: 60d7d58b srd a1,a5,a3,0 + 3bc00a60: 06a1 addi a3,a3,8 + 3bc00a62: bff9 j 3bc00a40 + 3bc00a64: 00e7d80b srb a6,a5,a4,0 + 3bc00a68: 0705 addi a4,a4,1 + 3bc00a6a: b7f5 j 3bc00a56 + +000000003bc00a6c : + 3bc00a6c: 00b547b3 xor a5,a0,a1 + 3bc00a70: 8b9d andi a5,a5,7 + 3bc00a72: e7a9 bnez a5,3bc00abc + 3bc00a74: 87aa mv a5,a0 + 3bc00a76: 0077f713 andi a4,a5,7 + 3bc00a7a: cb09 beqz a4,3bc00a8c + 3bc00a7c: e211 bnez a2,3bc00a80 + 3bc00a7e: 8082 ret + 3bc00a80: 9815c70b lbuia a4,(a1),1,0 + 3bc00a84: 167d addi a2,a2,-1 + 3bc00a86: 1817d70b sbia a4,(a5),1,0 + 3bc00a8a: b7f5 j 3bc00a76 + 3bc00a8c: 469d li a3,7 + 3bc00a8e: e619 bnez a2,3bc00a9c + 3bc00a90: 8082 ret + 3bc00a92: 60e5c80b lrd a6,a1,a4,0 + 3bc00a96: 60e7d80b srd a6,a5,a4,0 + 3bc00a9a: 0721 addi a4,a4,8 + 3bc00a9c: 40e60833 sub a6,a2,a4 + 3bc00aa0: ff06e9e3 bltu a3,a6,3bc00a92 + 3bc00aa4: 00365713 srli a4,a2,0x3 + 3bc00aa8: 56e1 li a3,-8 + 3bc00aaa: 20d7160b mula a2,a4,a3 + 3bc00aae: 070e slli a4,a4,0x3 + 3bc00ab0: 97ba add a5,a5,a4 + 3bc00ab2: 95ba add a1,a1,a4 + 3bc00ab4: 4701 li a4,0 + 3bc00ab6: 00e61563 bne a2,a4,3bc00ac0 + 3bc00aba: 8082 ret + 3bc00abc: 87aa mv a5,a0 + 3bc00abe: bfdd j 3bc00ab4 + 3bc00ac0: 80e5c68b lrbu a3,a1,a4,0 + 3bc00ac4: 00e7d68b srb a3,a5,a4,0 + 3bc00ac8: 0705 addi a4,a4,1 + 3bc00aca: b7f5 j 3bc00ab6 + +000000003bc00acc : + 3bc00acc: 40b50733 sub a4,a0,a1 + 3bc00ad0: 87aa mv a5,a0 + 3bc00ad2: 00c76363 bltu a4,a2,3bc00ad8 + 3bc00ad6: bf59 j 3bc00a6c + 3bc00ad8: 95b2 add a1,a1,a2 + 3bc00ada: 9532 add a0,a0,a2 + 3bc00adc: 00f51363 bne a0,a5,3bc00ae2 + 3bc00ae0: 8082 ret + 3bc00ae2: 89f5c70b lbuib a4,(a1),-1,0 + 3bc00ae6: 09f5570b sbib a4,(a0),-1,0 + 3bc00aea: bfcd j 3bc00adc + +000000003bc00aec : + 3bc00aec: 0e0007b7 lui a5,0xe000 + 3bc00af0: 4794 lw a3,8(a5) + 3bc00af2: 1141 addi sp,sp,-16 + 3bc00af4: e022 sd s0,0(sp) + 3bc00af6: e406 sd ra,8(sp) + 3bc00af8: 6709 lui a4,0x2 + 3bc00afa: 842a mv s0,a0 + 3bc00afc: 00e6e463 bltu a3,a4,3bc00b04 + 3bc00b00: 0007a423 sw zero,8(a5) # e000008 + 3bc00b04: 0e0007b7 lui a5,0xe000 + 3bc00b08: 4798 lw a4,8(a5) + 3bc00b0a: 0017069b addiw a3,a4,1 + 3bc00b0e: c794 sw a3,8(a5) + 3bc00b10: 0c0006b7 lui a3,0xc000 + 3bc00b14: 10e6d40b surb s0,a3,a4,0 + 3bc00b18: 4709 li a4,2 + 3bc00b1a: 00b74d63 blt a4,a1,3bc00b34 + 3bc00b1e: 0007c783 lbu a5,0(a5) # e000000 + 3bc00b22: 8b91 andi a5,a5,4 + 3bc00b24: eb81 bnez a5,3bc00b34 + 3bc00b26: 0ff47513 andi a0,s0,255 + 3bc00b2a: f7aff0ef jal ra,3bc002a4 + 3bc00b2e: 00055363 bgez a0,3bc00b34 + 3bc00b32: 547d li s0,-1 + 3bc00b34: 60a2 ld ra,8(sp) + 3bc00b36: 8522 mv a0,s0 + 3bc00b38: 6402 ld s0,0(sp) + 3bc00b3a: 0141 addi sp,sp,16 + 3bc00b3c: 8082 ret + +000000003bc00b3e : + 3bc00b3e: 4701 li a4,0 + 3bc00b40: 80e5478b lrbu a5,a0,a4,0 + 3bc00b44: 80e5c68b lrbu a3,a1,a4,0 + 3bc00b48: 00d78563 beq a5,a3,3bc00b52 + 3bc00b4c: 40d7853b subw a0,a5,a3 + 3bc00b50: 8082 ret + 3bc00b52: 0705 addi a4,a4,1 + 3bc00b54: f7f5 bnez a5,3bc00b40 + 3bc00b56: 4501 li a0,0 + 3bc00b58: 8082 ret + +000000003bc00b5a : + 3bc00b5a: 87aa mv a5,a0 + 3bc00b5c: 0007c703 lbu a4,0(a5) + 3bc00b60: e701 bnez a4,3bc00b68 + 3bc00b62: 40a78533 sub a0,a5,a0 + 3bc00b66: 8082 ret + 3bc00b68: 0785 addi a5,a5,1 + 3bc00b6a: bfcd j 3bc00b5c + +000000003bc00b6c : + 3bc00b6c: 1101 addi sp,sp,-32 + 3bc00b6e: 00c007b7 lui a5,0xc00 + 3bc00b72: e822 sd s0,16(sp) + 3bc00b74: e426 sd s1,8(sp) + 3bc00b76: e04a sd s2,0(sp) + 3bc00b78: 1c55370b extu a4,a0,7,5 + 3bc00b7c: 4007879b addiw a5,a5,1024 + 3bc00b80: 0155541b srliw s0,a0,0x15 + 3bc00b84: 5105390b extu s2,a0,20,16 + 3bc00b88: 1045348b extu s1,a0,4,4 + 3bc00b8c: 3c85350b extu a0,a0,15,8 + 3bc00b90: 9d3d addw a0,a0,a5 + 3bc00b92: 0025151b slliw a0,a0,0x2 + 3bc00b96: ec06 sd ra,24(sp) + 3bc00b98: 7c05350b extu a0,a0,31,0 + 3bc00b9c: c118 sw a4,0(a0) + 3bc00b9e: 4529 li a0,10 + 3bc00ba0: deaff0ef jal ra,3bc0018a + 3bc00ba4: 00447793 andi a5,s0,4 + 3bc00ba8: eb9d bnez a5,3bc00bde + 3bc00baa: 678d lui a5,0x3 + 3bc00bac: 881d andi s0,s0,7 + 3bc00bae: 0207879b addiw a5,a5,32 + 3bc00bb2: 9c3d addw s0,s0,a5 + 3bc00bb4: 00c4141b slliw s0,s0,0xc + 3bc00bb8: 0504041b addiw s0,s0,80 + 3bc00bbc: 7c04340b extu s0,s0,31,0 + 3bc00bc0: 4008 lw a0,0(s0) + 3bc00bc2: 0125553b srlw a0,a0,s2 + 3bc00bc6: 00157793 andi a5,a0,1 + 3bc00bca: 853e mv a0,a5 + 3bc00bcc: c099 beqz s1,3bc00bd2 + 3bc00bce: 0017c513 xori a0,a5,1 + 3bc00bd2: 60e2 ld ra,24(sp) + 3bc00bd4: 6442 ld s0,16(sp) + 3bc00bd6: 64a2 ld s1,8(sp) + 3bc00bd8: 6902 ld s2,0(sp) + 3bc00bda: 6105 addi sp,sp,32 + 3bc00bdc: 8082 ret + 3bc00bde: 05021437 lui s0,0x5021 + 3bc00be2: 05040413 addi s0,s0,80 # 5021050 + 3bc00be6: bfd9 j 3bc00bbc + +000000003bc00be8 : + 3bc00be8: 030507b7 lui a5,0x3050 + 3bc00bec: 1047a783 lw a5,260(a5) # 3050104 <__BSS_SIZE__+0x304a4f4> + 3bc00bf0: 0007851b sext.w a0,a5 + 3bc00bf4: 8b91 andi a5,a5,4 + 3bc00bf6: c391 beqz a5,3bc00bfa + 3bc00bf8: bf95 j 3bc00b6c + 3bc00bfa: 030007b7 lui a5,0x3000 + 3bc00bfe: 43c8 lw a0,4(a5) + 3bc00c00: 2085350b extu a0,a0,8,8 + 3bc00c04: 8082 ret + +000000003bc00c06 : + 3bc00c06: 1141 addi sp,sp,-16 + 3bc00c08: e406 sd ra,8(sp) + 3bc00c0a: e02ff0ef jal ra,3bc0020c + 3bc00c0e: 60a2 ld ra,8(sp) + 3bc00c10: 3e75051b addiw a0,a0,999 + 3bc00c14: 3e800793 li a5,1000 + 3bc00c18: 02f5553b divuw a0,a0,a5 + 3bc00c1c: 0141 addi sp,sp,16 + 3bc00c1e: 8082 ret + +000000003bc00c20 : + 3bc00c20: 7179 addi sp,sp,-48 + 3bc00c22: 8732 mv a4,a2 + 3bc00c24: 2601 sext.w a2,a2 + 3bc00c26: f022 sd s0,32(sp) + 3bc00c28: ec26 sd s1,24(sp) + 3bc00c2a: e03a sd a4,0(sp) + 3bc00c2c: f406 sd ra,40(sp) + 3bc00c2e: 84aa mv s1,a0 + 3bc00c30: e42e sd a1,8(sp) + 3bc00c32: 295030ef jal ra,3bc046c6 + 3bc00c36: 4785 li a5,1 + 3bc00c38: f8d1470b ldd a4,a3,(sp),0,4 + 3bc00c3c: 5479 li s0,-2 + 3bc00c3e: 00f51363 bne a0,a5,3bc00c44 + 3bc00c42: 4401 li s0,0 + 3bc00c44: 8626 mv a2,s1 + 3bc00c46: 85a2 mv a1,s0 + 3bc00c48: 00009517 auipc a0,0x9 + 3bc00c4c: 55850513 addi a0,a0,1368 # 3bc0a1a0 + 3bc00c50: f08ff0ef jal ra,3bc00358 + 3bc00c54: 70a2 ld ra,40(sp) + 3bc00c56: 8522 mv a0,s0 + 3bc00c58: 7402 ld s0,32(sp) + 3bc00c5a: 64e2 ld s1,24(sp) + 3bc00c5c: 6145 addi sp,sp,48 + 3bc00c5e: 8082 ret + +000000003bc00c60 : + 3bc00c60: 1101 addi sp,sp,-32 + 3bc00c62: 0000d617 auipc a2,0xd + 3bc00c66: b9e60613 addi a2,a2,-1122 # 3bc0d800 <__BSS_START__> + 3bc00c6a: e42a sd a0,8(sp) + 3bc00c6c: 6585 lui a1,0x1 + 3bc00c6e: 00009517 auipc a0,0x9 + 3bc00c72: 55250513 addi a0,a0,1362 # 3bc0a1c0 + 3bc00c76: ec06 sd ra,24(sp) + 3bc00c78: e822 sd s0,16(sp) + 3bc00c7a: edeff0ef jal ra,3bc00358 + 3bc00c7e: c87ff097 auipc ra,0xc87ff + 3bc00c82: 3a2080e7 jalr 930(ra) # 4400020 + 3bc00c86: 67b5 lui a5,0xd + 3bc00c88: 2501 sext.w a0,a0 + 3bc00c8a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00c8e: 66a2 ld a3,8(sp) + 3bc00c90: 6605 lui a2,0x1 + 3bc00c92: 04f51463 bne a0,a5,3bc00cda + 3bc00c96: 3c0027b7 lui a5,0x3c002 + 3bc00c9a: 0e07a583 lw a1,224(a5) # 3c0020e0 <__BL2_END__+0x3eecd0> + 3bc00c9e: 0000d517 auipc a0,0xd + 3bc00ca2: b6250513 addi a0,a0,-1182 # 3bc0d800 <__BSS_START__> + 3bc00ca6: f7bff0ef jal ra,3bc00c20 + 3bc00caa: 02054463 bltz a0,3bc00cd2 + 3bc00cae: 0000d417 auipc s0,0xd + 3bc00cb2: b5240413 addi s0,s0,-1198 # 3bc0d800 <__BSS_START__> + 3bc00cb6: 6018 ld a4,0(s0) + 3bc00cb8: 0000a797 auipc a5,0xa + 3bc00cbc: 9607b783 ld a5,-1696(a5) # 3bc0a618 + 3bc00cc0: 02f70a63 beq a4,a5,3bc00cf4 + 3bc00cc4: 00009517 auipc a0,0x9 + 3bc00cc8: 51450513 addi a0,a0,1300 # 3bc0a1d8 + 3bc00ccc: e8cff0ef jal ra,3bc00358 + 3bc00cd0: 557d li a0,-1 + 3bc00cd2: 60e2 ld ra,24(sp) + 3bc00cd4: 6442 ld s0,16(sp) + 3bc00cd6: 6105 addi sp,sp,32 + 3bc00cd8: 8082 ret + 3bc00cda: 3c0027b7 lui a5,0x3c002 + 3bc00cde: 0e07a583 lw a1,224(a5) # 3c0020e0 <__BL2_END__+0x3eecd0> + 3bc00ce2: 0000d517 auipc a0,0xd + 3bc00ce6: b1e50513 addi a0,a0,-1250 # 3bc0d800 <__BSS_START__> + 3bc00cea: c87ff097 auipc ra,0xc87ff + 3bc00cee: 376080e7 jalr 886(ra) # 4400060 + 3bc00cf2: bf65 j 3bc00caa + 3bc00cf4: 6585 lui a1,0x1 + 3bc00cf6: 15d1 addi a1,a1,-12 + 3bc00cf8: 0000d517 auipc a0,0xd + 3bc00cfc: b1450513 addi a0,a0,-1260 # 3bc0d80c <__BSS_START__+0xc> + 3bc00d00: c87ff097 auipc ra,0xc87ff + 3bc00d04: 3a0080e7 jalr 928(ra) # 44000a0 + 3bc00d08: 4410 lw a2,8(s0) + 3bc00d0a: 0005059b sext.w a1,a0 + 3bc00d0e: 00b60963 beq a2,a1,3bc00d20 + 3bc00d12: 00009517 auipc a0,0x9 + 3bc00d16: 4de50513 addi a0,a0,1246 # 3bc0a1f0 + 3bc00d1a: e3eff0ef jal ra,3bc00358 + 3bc00d1e: bf4d j 3bc00cd0 + 3bc00d20: 00009517 auipc a0,0x9 + 3bc00d24: 4f050513 addi a0,a0,1264 # 3bc0a210 + 3bc00d28: e30ff0ef jal ra,3bc00358 + 3bc00d2c: 4501 li a0,0 + 3bc00d2e: b755 j 3bc00cd2 + +000000003bc00d30 : + 3bc00d30: 1101 addi sp,sp,-32 + 3bc00d32: e822 sd s0,16(sp) + 3bc00d34: 0000d417 auipc s0,0xd + 3bc00d38: acc40413 addi s0,s0,-1332 # 3bc0d800 <__BSS_START__> + 3bc00d3c: 4c10 lw a2,24(s0) + 3bc00d3e: 484c lw a1,20(s0) + 3bc00d40: e42a sd a0,8(sp) + 3bc00d42: 00009517 auipc a0,0x9 + 3bc00d46: 4d650513 addi a0,a0,1238 # 3bc0a218 + 3bc00d4a: ec06 sd ra,24(sp) + 3bc00d4c: e0cff0ef jal ra,3bc00358 + 3bc00d50: 4c18 lw a4,24(s0) + 3bc00d52: 6791 lui a5,0x4 + 3bc00d54: 66a2 ld a3,8(sp) + 3bc00d56: 00f76363 bltu a4,a5,3bc00d5c + 3bc00d5a: cc1c sw a5,24(s0) + 3bc00d5c: e436 sd a3,8(sp) + 3bc00d5e: c87ff097 auipc ra,0xc87ff + 3bc00d62: 2c2080e7 jalr 706(ra) # 4400020 + 3bc00d66: 67b5 lui a5,0xd + 3bc00d68: 2501 sext.w a0,a0 + 3bc00d6a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00d6e: 66a2 ld a3,8(sp) + 3bc00d70: 01846603 lwu a2,24(s0) + 3bc00d74: 484c lw a1,20(s0) + 3bc00d76: 04f51363 bne a0,a5,3bc00dbc + 3bc00d7a: 0000e517 auipc a0,0xe + 3bc00d7e: a8650513 addi a0,a0,-1402 # 3bc0e800 + 3bc00d82: e9fff0ef jal ra,3bc00c20 + 3bc00d86: 02054763 bltz a0,3bc00db4 + 3bc00d8a: 4c0c lw a1,24(s0) + 3bc00d8c: 0000e517 auipc a0,0xe + 3bc00d90: a7450513 addi a0,a0,-1420 # 3bc0e800 + 3bc00d94: c87ff097 auipc ra,0xc87ff + 3bc00d98: 30c080e7 jalr 780(ra) # 44000a0 + 3bc00d9c: 4810 lw a2,16(s0) + 3bc00d9e: 0005059b sext.w a1,a0 + 3bc00da2: 02b60663 beq a2,a1,3bc00dce + 3bc00da6: 00009517 auipc a0,0x9 + 3bc00daa: 48a50513 addi a0,a0,1162 # 3bc0a230 + 3bc00dae: daaff0ef jal ra,3bc00358 + 3bc00db2: 557d li a0,-1 + 3bc00db4: 60e2 ld ra,24(sp) + 3bc00db6: 6442 ld s0,16(sp) + 3bc00db8: 6105 addi sp,sp,32 + 3bc00dba: 8082 ret + 3bc00dbc: 0000e517 auipc a0,0xe + 3bc00dc0: a4450513 addi a0,a0,-1468 # 3bc0e800 + 3bc00dc4: c87ff097 auipc ra,0xc87ff + 3bc00dc8: 29c080e7 jalr 668(ra) # 4400060 + 3bc00dcc: bf6d j 3bc00d86 + 3bc00dce: 00009517 auipc a0,0x9 + 3bc00dd2: 48a50513 addi a0,a0,1162 # 3bc0a258 + 3bc00dd6: d82ff0ef jal ra,3bc00358 + 3bc00dda: 4501 li a0,0 + 3bc00ddc: bfe1 j 3bc00db4 + +000000003bc00dde : + 3bc00dde: 7179 addi sp,sp,-48 + 3bc00de0: ec26 sd s1,24(sp) + 3bc00de2: 74cd lui s1,0xffff3 + 3bc00de4: e84a sd s2,16(sp) + 3bc00de6: e44e sd s3,8(sp) + 3bc00de8: e052 sd s4,0(sp) + 3bc00dea: f406 sd ra,40(sp) + 3bc00dec: f022 sd s0,32(sp) + 3bc00dee: 1604849b addiw s1,s1,352 + 3bc00df2: 4995 li s3,5 + 3bc00df4: 4a05 li s4,1 + 3bc00df6: 00009917 auipc s2,0x9 + 3bc00dfa: 46a90913 addi s2,s2,1130 # 3bc0a260 + 3bc00dfe: 4401 li s0,0 + 3bc00e00: c87ff097 auipc ra,0xc87ff + 3bc00e04: 2c0080e7 jalr 704(ra) # 44000c0 + 3bc00e08: 00a45e63 bge s0,a0,3bc00e24 + 3bc00e0c: 8522 mv a0,s0 + 3bc00e0e: e53ff0ef jal ra,3bc00c60 + 3bc00e12: 00055463 bgez a0,3bc00e1a + 3bc00e16: 2405 addiw s0,s0,1 + 3bc00e18: b7e5 j 3bc00e00 + 3bc00e1a: 8522 mv a0,s0 + 3bc00e1c: f15ff0ef jal ra,3bc00d30 + 3bc00e20: fe054be3 bltz a0,3bc00e16 + 3bc00e24: c87ff097 auipc ra,0xc87ff + 3bc00e28: 29c080e7 jalr 668(ra) # 44000c0 + 3bc00e2c: 02a45f63 bge s0,a0,3bc00e6a + 3bc00e30: dd7ff0ef jal ra,3bc00c06 + 3bc00e34: 0000a417 auipc s0,0xa + 3bc00e38: 60c40413 addi s0,s0,1548 # 3bc0b440 + 3bc00e3c: 601c ld a5,0(s0) + 3bc00e3e: 00a79123 sh a0,2(a5) + 3bc00e42: 0000e517 auipc a0,0xe + 3bc00e46: 9be50513 addi a0,a0,-1602 # 3bc0e800 + 3bc00e4a: 34a070ef jal ra,3bc08194 + 3bc00e4e: db9ff0ef jal ra,3bc00c06 + 3bc00e52: 601c ld a5,0(s0) + 3bc00e54: 70a2 ld ra,40(sp) + 3bc00e56: 7402 ld s0,32(sp) + 3bc00e58: 00a79223 sh a0,4(a5) + 3bc00e5c: 64e2 ld s1,24(sp) + 3bc00e5e: 6942 ld s2,16(sp) + 3bc00e60: 69a2 ld s3,8(sp) + 3bc00e62: 6a02 ld s4,0(sp) + 3bc00e64: 4501 li a0,0 + 3bc00e66: 6145 addi sp,sp,48 + 3bc00e68: 8082 ret + 3bc00e6a: c87ff097 auipc ra,0xc87ff + 3bc00e6e: 1b6080e7 jalr 438(ra) # 4400020 + 3bc00e72: 9d25 addw a0,a0,s1 + 3bc00e74: 85a2 mv a1,s0 + 3bc00e76: 00a9ef63 bltu s3,a0,3bc00e94 + 3bc00e7a: 00aa1533 sll a0,s4,a0 + 3bc00e7e: 02957513 andi a0,a0,41 + 3bc00e82: c909 beqz a0,3bc00e94 + 3bc00e84: 854a mv a0,s2 + 3bc00e86: cd2ff0ef jal ra,3bc00358 + 3bc00e8a: c87ff097 auipc ra,0xc87ff + 3bc00e8e: 1f6080e7 jalr 502(ra) # 4400080 + 3bc00e92: b7b5 j 3bc00dfe + 3bc00e94: 00009517 auipc a0,0x9 + 3bc00e98: 3f450513 addi a0,a0,1012 # 3bc0a288 + 3bc00e9c: cbcff0ef jal ra,3bc00358 + 3bc00ea0: f1aff0ef jal ra,3bc005ba + +000000003bc00ea4 : + 3bc00ea4: 7179 addi sp,sp,-48 + 3bc00ea6: e84a sd s2,16(sp) + 3bc00ea8: 0000a917 auipc s2,0xa + 3bc00eac: 59890913 addi s2,s2,1432 # 3bc0b440 + 3bc00eb0: 00093783 ld a5,0(s2) + 3bc00eb4: f022 sd s0,32(sp) + 3bc00eb6: 0000d417 auipc s0,0xd + 3bc00eba: 94a40413 addi s0,s0,-1718 # 3bc0d800 <__BSS_START__> + 3bc00ebe: 0047d703 lhu a4,4(a5) + 3bc00ec2: 5414 lw a3,40(s0) + 3bc00ec4: 5450 lw a2,44(s0) + 3bc00ec6: 504c lw a1,36(s0) + 3bc00ec8: ec26 sd s1,24(sp) + 3bc00eca: f406 sd ra,40(sp) + 3bc00ecc: e44e sd s3,8(sp) + 3bc00ece: 00e79323 sh a4,6(a5) + 3bc00ed2: 84aa mv s1,a0 + 3bc00ed4: 00009517 auipc a0,0x9 + 3bc00ed8: 3dc50513 addi a0,a0,988 # 3bc0a2b0 + 3bc00edc: c7cff0ef jal ra,3bc00358 + 3bc00ee0: 545c lw a5,44(s0) + 3bc00ee2: 00009517 auipc a0,0x9 + 3bc00ee6: 3e650513 addi a0,a0,998 # 3bc0a2c8 + 3bc00eea: 10078763 beqz a5,3bc00ff8 + 3bc00eee: 800006b7 lui a3,0x80000 + 3bc00ef2: 00f6863b addw a2,a3,a5 + 3bc00ef6: 04000737 lui a4,0x4000 + 3bc00efa: 00e66b63 bltu a2,a4,3bc00f10 + 3bc00efe: 85be mv a1,a5 + 3bc00f00: 00009517 auipc a0,0x9 + 3bc00f04: 3e050513 addi a0,a0,992 # 3bc0a2e0 + 3bc00f08: c50ff0ef jal ra,3bc00358 + 3bc00f0c: eaeff0ef jal ra,3bc005ba + 3bc00f10: 540c lw a1,40(s0) + 3bc00f12: 9fad addw a5,a5,a1 + 3bc00f14: 9fb5 addw a5,a5,a3 + 3bc00f16: 00e7e763 bltu a5,a4,3bc00f24 + 3bc00f1a: 00009517 auipc a0,0x9 + 3bc00f1e: 3f650513 addi a0,a0,1014 # 3bc0a310 + 3bc00f22: b7dd j 3bc00f08 + 3bc00f24: c87ff097 auipc ra,0xc87ff + 3bc00f28: 0fc080e7 jalr 252(ra) # 4400020 + 3bc00f2c: 67b5 lui a5,0xd + 3bc00f2e: 0005071b sext.w a4,a0 + 3bc00f32: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00f36: 504c lw a1,36(s0) + 3bc00f38: 02846603 lwu a2,40(s0) + 3bc00f3c: 02c46503 lwu a0,44(s0) + 3bc00f40: 86a6 mv a3,s1 + 3bc00f42: 04f71263 bne a4,a5,3bc00f86 + 3bc00f46: cdbff0ef jal ra,3bc00c20 + 3bc00f4a: 84aa mv s1,a0 + 3bc00f4c: 02054563 bltz a0,3bc00f76 + 3bc00f50: 540c lw a1,40(s0) + 3bc00f52: 02c46503 lwu a0,44(s0) + 3bc00f56: c87ff097 auipc ra,0xc87ff + 3bc00f5a: 14a080e7 jalr 330(ra) # 44000a0 + 3bc00f5e: 5010 lw a2,32(s0) + 3bc00f60: 0005059b sext.w a1,a0 + 3bc00f64: 02b60663 beq a2,a1,3bc00f90 + 3bc00f68: 00009517 auipc a0,0x9 + 3bc00f6c: 3d850513 addi a0,a0,984 # 3bc0a340 + 3bc00f70: be8ff0ef jal ra,3bc00358 + 3bc00f74: 54fd li s1,-1 + 3bc00f76: 70a2 ld ra,40(sp) + 3bc00f78: 7402 ld s0,32(sp) + 3bc00f7a: 6942 ld s2,16(sp) + 3bc00f7c: 69a2 ld s3,8(sp) + 3bc00f7e: 8526 mv a0,s1 + 3bc00f80: 64e2 ld s1,24(sp) + 3bc00f82: 6145 addi sp,sp,48 + 3bc00f84: 8082 ret + 3bc00f86: c87ff097 auipc ra,0xc87ff + 3bc00f8a: 0da080e7 jalr 218(ra) # 4400060 + 3bc00f8e: bf75 j 3bc00f4a + 3bc00f90: 02846583 lwu a1,40(s0) + 3bc00f94: 02c46503 lwu a0,44(s0) + 3bc00f98: 3c0026b7 lui a3,0x3c002 + 3bc00f9c: 4601 li a2,0 + 3bc00f9e: 9f7ff0ef jal ra,3bc00994 + 3bc00fa2: 84aa mv s1,a0 + 3bc00fa4: 00055a63 bgez a0,3bc00fb8 + 3bc00fa8: 85aa mv a1,a0 + 3bc00faa: 00009517 auipc a0,0x9 + 3bc00fae: 3be50513 addi a0,a0,958 # 3bc0a368 + 3bc00fb2: ba6ff0ef jal ra,3bc00358 + 3bc00fb6: b7c1 j 3bc00f76 + 3bc00fb8: 02846583 lwu a1,40(s0) + 3bc00fbc: 02c46503 lwu a0,44(s0) + 3bc00fc0: 0e0009b7 lui s3,0xe000 + 3bc00fc4: 992ff0ef jal ra,3bc00156 + 3bc00fc8: 07c9a483 lw s1,124(s3) # e00007c + 3bc00fcc: 969ff0ef jal ra,3bc00934 + 3bc00fd0: c37ff0ef jal ra,3bc00c06 + 3bc00fd4: 00093783 ld a5,0(s2) + 3bc00fd8: 2481 sext.w s1,s1 + 3bc00fda: 00a79323 sh a0,6(a5) + 3bc00fde: 0abc17b7 lui a5,0xabc1 + 3bc00fe2: def78793 addi a5,a5,-529 # abc0def + 3bc00fe6: 00f49d63 bne s1,a5,3bc01000 + 3bc00fea: 545c lw a5,44(s0) + 3bc00fec: 06f9ae23 sw a5,124(s3) + 3bc00ff0: 00009517 auipc a0,0x9 + 3bc00ff4: 39850513 addi a0,a0,920 # 3bc0a388 + 3bc00ff8: b60ff0ef jal ra,3bc00358 + 3bc00ffc: 4481 li s1,0 + 3bc00ffe: bfa5 j 3bc00f76 + 3bc01000: 02c46503 lwu a0,44(s0) + 3bc01004: de8ff0ef jal ra,3bc005ec + 3bc01008: b7e5 j 3bc00ff0 + +000000003bc0100a : + 3bc0100a: 1101 addi sp,sp,-32 + 3bc0100c: e822 sd s0,16(sp) + 3bc0100e: 0000c417 auipc s0,0xc + 3bc01012: 7f240413 addi s0,s0,2034 # 3bc0d800 <__BSS_START__> + 3bc01016: e04a sd s2,0(sp) + 3bc01018: 5c14 lw a3,56(s0) + 3bc0101a: 5c50 lw a2,60(s0) + 3bc0101c: 892e mv s2,a1 + 3bc0101e: 584c lw a1,52(s0) + 3bc01020: e426 sd s1,8(sp) + 3bc01022: 84aa mv s1,a0 + 3bc01024: 00009517 auipc a0,0x9 + 3bc01028: 36c50513 addi a0,a0,876 # 3bc0a390 + 3bc0102c: ec06 sd ra,24(sp) + 3bc0102e: b2aff0ef jal ra,3bc00358 + 3bc01032: 5c5c lw a5,60(s0) + 3bc01034: eb89 bnez a5,3bc01046 + 3bc01036: 00009517 auipc a0,0x9 + 3bc0103a: 37250513 addi a0,a0,882 # 3bc0a3a8 + 3bc0103e: b1aff0ef jal ra,3bc00358 + 3bc01042: 4481 li s1,0 + 3bc01044: a069 j 3bc010ce + 3bc01046: 800006b7 lui a3,0x80000 + 3bc0104a: 00f6863b addw a2,a3,a5 + 3bc0104e: 04000737 lui a4,0x4000 + 3bc01052: 00e66b63 bltu a2,a4,3bc01068 + 3bc01056: 85be mv a1,a5 + 3bc01058: 00009517 auipc a0,0x9 + 3bc0105c: 36050513 addi a0,a0,864 # 3bc0a3b8 + 3bc01060: af8ff0ef jal ra,3bc00358 + 3bc01064: d56ff0ef jal ra,3bc005ba + 3bc01068: 5c0c lw a1,56(s0) + 3bc0106a: 9fad addw a5,a5,a1 + 3bc0106c: 9fb5 addw a5,a5,a3 + 3bc0106e: 00e7e763 bltu a5,a4,3bc0107c + 3bc01072: 00009517 auipc a0,0x9 + 3bc01076: 37650513 addi a0,a0,886 # 3bc0a3e8 + 3bc0107a: b7dd j 3bc01060 + 3bc0107c: c87ff097 auipc ra,0xc87ff + 3bc01080: fa4080e7 jalr -92(ra) # 4400020 + 3bc01084: 67b5 lui a5,0xd + 3bc01086: 0005071b sext.w a4,a0 + 3bc0108a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0108e: 584c lw a1,52(s0) + 3bc01090: 03846603 lwu a2,56(s0) + 3bc01094: 03c46503 lwu a0,60(s0) + 3bc01098: 86a6 mv a3,s1 + 3bc0109a: 04f71163 bne a4,a5,3bc010dc + 3bc0109e: b83ff0ef jal ra,3bc00c20 + 3bc010a2: 84aa mv s1,a0 + 3bc010a4: 02054563 bltz a0,3bc010ce + 3bc010a8: 5c0c lw a1,56(s0) + 3bc010aa: 03c46503 lwu a0,60(s0) + 3bc010ae: c87ff097 auipc ra,0xc87ff + 3bc010b2: ff2080e7 jalr -14(ra) # 44000a0 + 3bc010b6: 5810 lw a2,48(s0) + 3bc010b8: 0005059b sext.w a1,a0 + 3bc010bc: 02b60563 beq a2,a1,3bc010e6 + 3bc010c0: 00009517 auipc a0,0x9 + 3bc010c4: 35850513 addi a0,a0,856 # 3bc0a418 + 3bc010c8: a90ff0ef jal ra,3bc00358 + 3bc010cc: 54fd li s1,-1 + 3bc010ce: 60e2 ld ra,24(sp) + 3bc010d0: 6442 ld s0,16(sp) + 3bc010d2: 6902 ld s2,0(sp) + 3bc010d4: 8526 mv a0,s1 + 3bc010d6: 64a2 ld s1,8(sp) + 3bc010d8: 6105 addi sp,sp,32 + 3bc010da: 8082 ret + 3bc010dc: c87ff097 auipc ra,0xc87ff + 3bc010e0: f84080e7 jalr -124(ra) # 4400060 + 3bc010e4: bf7d j 3bc010a2 + 3bc010e6: 03846583 lwu a1,56(s0) + 3bc010ea: 03c46503 lwu a0,60(s0) + 3bc010ee: 3c0026b7 lui a3,0x3c002 + 3bc010f2: 4601 li a2,0 + 3bc010f4: 8a1ff0ef jal ra,3bc00994 + 3bc010f8: 84aa mv s1,a0 + 3bc010fa: 00055a63 bgez a0,3bc0110e + 3bc010fe: 85aa mv a1,a0 + 3bc01100: 00009517 auipc a0,0x9 + 3bc01104: 33850513 addi a0,a0,824 # 3bc0a438 + 3bc01108: a50ff0ef jal ra,3bc00358 + 3bc0110c: b7c9 j 3bc010ce + 3bc0110e: 03846583 lwu a1,56(s0) + 3bc01112: 03c46503 lwu a0,60(s0) + 3bc01116: 840ff0ef jal ra,3bc00156 + 3bc0111a: 00009517 auipc a0,0x9 + 3bc0111e: 33e50513 addi a0,a0,830 # 3bc0a458 + 3bc01122: a36ff0ef jal ra,3bc00358 + 3bc01126: 03c46783 lwu a5,60(s0) + 3bc0112a: 00f93023 sd a5,0(s2) + 3bc0112e: bf11 j 3bc01042 + +000000003bc01130 : + 3bc01130: 715d addi sp,sp,-80 + 3bc01132: f44e sd s3,40(sp) + 3bc01134: 0000c997 auipc s3,0xc + 3bc01138: 6cc98993 addi s3,s3,1740 # 3bc0d800 <__BSS_START__> + 3bc0113c: e85a sd s6,16(sp) + 3bc0113e: 8b2e mv s6,a1 + 3bc01140: 0449a583 lw a1,68(s3) + 3bc01144: ec56 sd s5,24(sp) + 3bc01146: 8aaa mv s5,a0 + 3bc01148: 00009517 auipc a0,0x9 + 3bc0114c: 31850513 addi a0,a0,792 # 3bc0a460 + 3bc01150: e486 sd ra,72(sp) + 3bc01152: e0a2 sd s0,64(sp) + 3bc01154: fc26 sd s1,56(sp) + 3bc01156: f84a sd s2,48(sp) + 3bc01158: f052 sd s4,32(sp) + 3bc0115a: 9feff0ef jal ra,3bc00358 + 3bc0115e: c87ff097 auipc ra,0xc87ff + 3bc01162: ec2080e7 jalr -318(ra) # 4400020 + 3bc01166: 67b5 lui a5,0xd + 3bc01168: 2501 sext.w a0,a0 + 3bc0116a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0116e: 0449a583 lw a1,68(s3) + 3bc01172: 86d6 mv a3,s5 + 3bc01174: 20000613 li a2,512 + 3bc01178: 02f51663 bne a0,a5,3bc011a4 + 3bc0117c: 0000d517 auipc a0,0xd + 3bc01180: 68450513 addi a0,a0,1668 # 3bc0e800 + 3bc01184: a9dff0ef jal ra,3bc00c20 + 3bc01188: 02055763 bgez a0,3bc011b6 + 3bc0118c: 59fd li s3,-1 + 3bc0118e: 60a6 ld ra,72(sp) + 3bc01190: 6406 ld s0,64(sp) + 3bc01192: 74e2 ld s1,56(sp) + 3bc01194: 7942 ld s2,48(sp) + 3bc01196: 7a02 ld s4,32(sp) + 3bc01198: 6ae2 ld s5,24(sp) + 3bc0119a: 6b42 ld s6,16(sp) + 3bc0119c: 854e mv a0,s3 + 3bc0119e: 79a2 ld s3,40(sp) + 3bc011a0: 6161 addi sp,sp,80 + 3bc011a2: 8082 ret + 3bc011a4: 0000d517 auipc a0,0xd + 3bc011a8: 65c50513 addi a0,a0,1628 # 3bc0e800 + 3bc011ac: c87ff097 auipc ra,0xc87ff + 3bc011b0: eb4080e7 jalr -332(ra) # 4400060 + 3bc011b4: bfd1 j 3bc01188 + 3bc011b6: 0000d417 auipc s0,0xd + 3bc011ba: 64a40413 addi s0,s0,1610 # 3bc0e800 + 3bc011be: 4458 lw a4,12(s0) + 3bc011c0: 6814 ld a3,16(s0) + 3bc011c2: 4410 lw a2,8(s0) + 3bc011c4: 1ff7049b addiw s1,a4,511 + 3bc011c8: 404c lw a1,4(s0) + 3bc011ca: e004f493 andi s1,s1,-512 + 3bc011ce: 2481 sext.w s1,s1 + 3bc011d0: 87a6 mv a5,s1 + 3bc011d2: 00009517 auipc a0,0x9 + 3bc011d6: 29e50513 addi a0,a0,670 # 3bc0a470 + 3bc011da: 97eff0ef jal ra,3bc00358 + 3bc011de: 4058 lw a4,4(s0) + 3bc011e0: 345a37b7 lui a5,0x345a3 + 3bc011e4: 34278793 addi a5,a5,834 # 345a3342 + 3bc011e8: 06f70363 beq a4,a5,3bc0124e + 3bc011ec: 414d37b7 lui a5,0x414d3 + 3bc011f0: 34278793 addi a5,a5,834 # 414d3342 <__BL2_END__+0x58bff32> + 3bc011f4: 06f70963 beq a4,a5,3bc01266 + 3bc011f8: 01043903 ld s2,16(s0) + 3bc011fc: 4a01 li s4,0 + 3bc011fe: c87ff097 auipc ra,0xc87ff + 3bc01202: e22080e7 jalr -478(ra) # 4400020 + 3bc01206: 67b5 lui a5,0xd + 3bc01208: 2501 sext.w a0,a0 + 3bc0120a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0120e: 0449a583 lw a1,68(s3) + 3bc01212: 86d6 mv a3,s5 + 3bc01214: 8626 mv a2,s1 + 3bc01216: 04f51a63 bne a0,a5,3bc0126a + 3bc0121a: 854a mv a0,s2 + 3bc0121c: a05ff0ef jal ra,3bc00c20 + 3bc01220: f60546e3 bltz a0,3bc0118c + 3bc01224: 444c lw a1,12(s0) + 3bc01226: 00c90993 addi s3,s2,12 + 3bc0122a: 854e mv a0,s3 + 3bc0122c: 35d1 addiw a1,a1,-12 + 3bc0122e: c87ff097 auipc ra,0xc87ff + 3bc01232: e72080e7 jalr -398(ra) # 44000a0 + 3bc01236: 4410 lw a2,8(s0) + 3bc01238: 0005059b sext.w a1,a0 + 3bc0123c: 02b60d63 beq a2,a1,3bc01276 + 3bc01240: 00009517 auipc a0,0x9 + 3bc01244: 26050513 addi a0,a0,608 # 3bc0a4a0 + 3bc01248: 910ff0ef jal ra,3bc00358 + 3bc0124c: b781 j 3bc0118c + 3bc0124e: 4a09 li s4,2 + 3bc01250: 85d2 mv a1,s4 + 3bc01252: 00009517 auipc a0,0x9 + 3bc01256: 23e50513 addi a0,a0,574 # 3bc0a490 + 3bc0125a: 00815937 lui s2,0x815 + 3bc0125e: 8faff0ef jal ra,3bc00358 + 3bc01262: 0922 slli s2,s2,0x8 + 3bc01264: bf69 j 3bc011fe + 3bc01266: 4a05 li s4,1 + 3bc01268: b7e5 j 3bc01250 + 3bc0126a: 854a mv a0,s2 + 3bc0126c: c87ff097 auipc ra,0xc87ff + 3bc01270: df4080e7 jalr -524(ra) # 4400060 + 3bc01274: b775 j 3bc01220 + 3bc01276: 444c lw a1,12(s0) + 3bc01278: 854e mv a0,s3 + 3bc0127a: 3c0026b7 lui a3,0x3c002 + 3bc0127e: 35d1 addiw a1,a1,-12 + 3bc01280: 4651 li a2,20 + 3bc01282: 7c05b58b extu a1,a1,31,0 + 3bc01286: f0eff0ef jal ra,3bc00994 + 3bc0128a: 89aa mv s3,a0 + 3bc0128c: 00055a63 bgez a0,3bc012a0 + 3bc01290: 85aa mv a1,a0 + 3bc01292: 00009517 auipc a0,0x9 + 3bc01296: 23650513 addi a0,a0,566 # 3bc0a4c8 + 3bc0129a: 8beff0ef jal ra,3bc00358 + 3bc0129e: bdc5 j 3bc0118e + 3bc012a0: 967ff0ef jal ra,3bc00c06 + 3bc012a4: 0000a997 auipc s3,0xa + 3bc012a8: 19c98993 addi s3,s3,412 # 3bc0b440 + 3bc012ac: 0009b783 ld a5,0(s3) + 3bc012b0: 00a79423 sh a0,8(a5) + 3bc012b4: bccff0ef jal ra,3bc00680 + 3bc012b8: 94fff0ef jal ra,3bc00c06 + 3bc012bc: 0009b783 ld a5,0(s3) + 3bc012c0: 00a79523 sh a0,10(a5) + 3bc012c4: 040a0363 beqz s4,3bc0130a + 3bc012c8: 6804 ld s1,16(s0) + 3bc012ca: 010007b7 lui a5,0x1000 + 3bc012ce: 02000613 li a2,32 + 3bc012d2: 85ca mv a1,s2 + 3bc012d4: 8526 mv a0,s1 + 3bc012d6: e43e sd a5,8(sp) + 3bc012d8: f94ff0ef jal ra,3bc00a6c + 3bc012dc: 00c46683 lwu a3,12(s0) + 3bc012e0: 02090613 addi a2,s2,32 # 815020 <__BSS_SIZE__+0x80f410> + 3bc012e4: 002c addi a1,sp,8 + 3bc012e6: 02048513 addi a0,s1,32 # ffffffffffff3020 <__BL2_END__+0xffffffffc43dfc10> + 3bc012ea: 8752 mv a4,s4 + 3bc012ec: 3d4000ef jal ra,3bc016c0 + 3bc012f0: 6622 ld a2,8(sp) + 3bc012f2: 85aa mv a1,a0 + 3bc012f4: 0006049b sext.w s1,a2 + 3bc012f8: 00055963 bgez a0,3bc0130a + 3bc012fc: 00009517 auipc a0,0x9 + 3bc01300: 1ec50513 addi a0,a0,492 # 3bc0a4e8 + 3bc01304: 854ff0ef jal ra,3bc00358 + 3bc01308: b551 j 3bc0118c + 3bc0130a: 6808 ld a0,16(s0) + 3bc0130c: 85a6 mv a1,s1 + 3bc0130e: e49fe0ef jal ra,3bc00156 + 3bc01312: 8f5ff0ef jal ra,3bc00c06 + 3bc01316: 0009b783 ld a5,0(s3) + 3bc0131a: 4981 li s3,0 + 3bc0131c: 00a79623 sh a0,12(a5) # 100000c <__BSS_SIZE__+0xffa3fc> + 3bc01320: 00009517 auipc a0,0x9 + 3bc01324: 1f850513 addi a0,a0,504 # 3bc0a518 + 3bc01328: 830ff0ef jal ra,3bc00358 + 3bc0132c: 681c ld a5,16(s0) + 3bc0132e: 02078793 addi a5,a5,32 + 3bc01332: 00fb3023 sd a5,0(s6) + 3bc01336: bda1 j 3bc0118e + +000000003bc01338 : + 3bc01338: 7179 addi sp,sp,-48 + 3bc0133a: ec26 sd s1,24(sp) + 3bc0133c: 74cd lui s1,0xffff3 + 3bc0133e: e84a sd s2,16(sp) + 3bc01340: f406 sd ra,40(sp) + 3bc01342: f022 sd s0,32(sp) + 3bc01344: e002 sd zero,0(sp) + 3bc01346: e402 sd zero,8(sp) + 3bc01348: 1604849b addiw s1,s1,352 + 3bc0134c: cd0ff0ef jal ra,3bc0081c + 3bc01350: 4915 li s2,5 + 3bc01352: 4401 li s0,0 + 3bc01354: c87ff097 auipc ra,0xc87ff + 3bc01358: d6c080e7 jalr -660(ra) # 44000c0 + 3bc0135c: 02a45563 bge s0,a0,3bc01386 + 3bc01360: 8522 mv a0,s0 + 3bc01362: b43ff0ef jal ra,3bc00ea4 + 3bc01366: 00055463 bgez a0,3bc0136e + 3bc0136a: 2405 addiw s0,s0,1 + 3bc0136c: b7e5 j 3bc01354 + 3bc0136e: 858a mv a1,sp + 3bc01370: 8522 mv a0,s0 + 3bc01372: c99ff0ef jal ra,3bc0100a + 3bc01376: fe054ae3 bltz a0,3bc0136a + 3bc0137a: 002c addi a1,sp,8 + 3bc0137c: 8522 mv a0,s0 + 3bc0137e: db3ff0ef jal ra,3bc01130 + 3bc01382: fe0544e3 bltz a0,3bc0136a + 3bc01386: c87ff097 auipc ra,0xc87ff + 3bc0138a: d3a080e7 jalr -710(ra) # 44000c0 + 3bc0138e: 02a45b63 bge s0,a0,3bc013c4 + 3bc01392: dbbfe0ef jal ra,3bc0014c + 3bc01396: f2dfe0ef jal ra,3bc002c2 + 3bc0139a: c9aff0ef jal ra,3bc00834 + 3bc0139e: 6582 ld a1,0(sp) + 3bc013a0: c5a5 beqz a1,3bc01408 + 3bc013a2: 00009517 auipc a0,0x9 + 3bc013a6: 1ae50513 addi a0,a0,430 # 3bc0a550 + 3bc013aa: faffe0ef jal ra,3bc00358 + 3bc013ae: 65a2 ld a1,8(sp) + 3bc013b0: 6502 ld a0,0(sp) + 3bc013b2: e69fe0ef jal ra,3bc0021a + 3bc013b6: 70a2 ld ra,40(sp) + 3bc013b8: 7402 ld s0,32(sp) + 3bc013ba: 64e2 ld s1,24(sp) + 3bc013bc: 6942 ld s2,16(sp) + 3bc013be: 4501 li a0,0 + 3bc013c0: 6145 addi sp,sp,48 + 3bc013c2: 8082 ret + 3bc013c4: c87ff097 auipc ra,0xc87ff + 3bc013c8: c5c080e7 jalr -932(ra) # 4400020 + 3bc013cc: 00a487bb addw a5,s1,a0 + 3bc013d0: 85a2 mv a1,s0 + 3bc013d2: 02f96363 bltu s2,a5,3bc013f8 + 3bc013d6: 4505 li a0,1 + 3bc013d8: 00f51533 sll a0,a0,a5 + 3bc013dc: 02957513 andi a0,a0,41 + 3bc013e0: cd01 beqz a0,3bc013f8 + 3bc013e2: 00009517 auipc a0,0x9 + 3bc013e6: e7e50513 addi a0,a0,-386 # 3bc0a260 + 3bc013ea: f6ffe0ef jal ra,3bc00358 + 3bc013ee: c87ff097 auipc ra,0xc87ff + 3bc013f2: c92080e7 jalr -878(ra) # 4400080 + 3bc013f6: bfb1 j 3bc01352 + 3bc013f8: 00009517 auipc a0,0x9 + 3bc013fc: 13850513 addi a0,a0,312 # 3bc0a530 + 3bc01400: f59fe0ef jal ra,3bc00358 + 3bc01404: 9b6ff0ef jal ra,3bc005ba + 3bc01408: 65a2 ld a1,8(sp) + 3bc0140a: 00009517 auipc a0,0x9 + 3bc0140e: 16650513 addi a0,a0,358 # 3bc0a570 + 3bc01412: f47fe0ef jal ra,3bc00358 + 3bc01416: 6522 ld a0,8(sp) + 3bc01418: e7bfe0ef jal ra,3bc00292 + 3bc0141c: bf69 j 3bc013b6 + +000000003bc0141e : + 3bc0141e: 1141 addi sp,sp,-16 + 3bc01420: e406 sd ra,8(sp) + 3bc01422: b200f737 lui a4,0xb200f + 3bc01426: e022 sd s0,0(sp) + 3bc01428: 030007b7 lui a5,0x3000 + 3bc0142c: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc01430: fd6ff0ef jal ra,3bc00c06 + 3bc01434: 0000a797 auipc a5,0xa + 3bc01438: 00c7b783 ld a5,12(a5) # 3bc0b440 + 3bc0143c: 00a79023 sh a0,0(a5) + 3bc01440: 00009617 auipc a2,0x9 + 3bc01444: bb060613 addi a2,a2,-1104 # 3bc09ff0 + 3bc01448: 00009597 auipc a1,0x9 + 3bc0144c: bc858593 addi a1,a1,-1080 # 3bc0a010 + 3bc01450: 00009517 auipc a0,0x9 + 3bc01454: 14050513 addi a0,a0,320 # 3bc0a590 + 3bc01458: f01fe0ef jal ra,3bc00358 + 3bc0145c: 0e000437 lui s0,0xe000 + 3bc01460: 400c lw a1,0(s0) + 3bc01462: 00009517 auipc a0,0x9 + 3bc01466: 13e50513 addi a0,a0,318 # 3bc0a5a0 + 3bc0146a: eeffe0ef jal ra,3bc00358 + 3bc0146e: 3c0027b7 lui a5,0x3c002 + 3bc01472: 47cc lw a1,12(a5) + 3bc01474: 0e07a603 lw a2,224(a5) # 3c0020e0 <__BL2_END__+0x3eecd0> + 3bc01478: 00009517 auipc a0,0x9 + 3bc0147c: 14050513 addi a0,a0,320 # 3bc0a5b8 + 3bc01480: ed9fe0ef jal ra,3bc00358 + 3bc01484: 4c0c lw a1,24(s0) + 3bc01486: 00009517 auipc a0,0x9 + 3bc0148a: 16a50513 addi a0,a0,362 # 3bc0a5f0 + 3bc0148e: 2581 sext.w a1,a1 + 3bc01490: ec9fe0ef jal ra,3bc00358 + 3bc01494: 9a2ff0ef jal ra,3bc00636 + 3bc01498: b9aff0ef jal ra,3bc00832 + 3bc0149c: bdcff0ef jal ra,3bc00878 + 3bc014a0: 93fff0ef jal ra,3bc00dde + 3bc014a4: e95ff0ef jal ra,3bc01338 + 3bc014a8: 00009517 auipc a0,0x9 + 3bc014ac: 16050513 addi a0,a0,352 # 3bc0a608 + 3bc014b0: ea9fe0ef jal ra,3bc00358 + 3bc014b4: a001 j 3bc014b4 + +000000003bc014b6 : + 3bc014b6: 8082 ret + +000000003bc014b8 : + 3bc014b8: 00012797 auipc a5,0x12 + 3bc014bc: e4078793 addi a5,a5,-448 # 3bc132f8 + 3bc014c0: 6388 ld a0,0(a5) + 3bc014c2: 00b50733 add a4,a0,a1 + 3bc014c6: e398 sd a4,0(a5) + 3bc014c8: 00012797 auipc a5,0x12 + 3bc014cc: e387b783 ld a5,-456(a5) # 3bc13300 + 3bc014d0: 97ba add a5,a5,a4 + 3bc014d2: 02f76363 bltu a4,a5,3bc014f8 + 3bc014d6: 1141 addi sp,sp,-16 + 3bc014d8: 862e mv a2,a1 + 3bc014da: 00009517 auipc a0,0x9 + 3bc014de: 14650513 addi a0,a0,326 # 3bc0a620 + 3bc014e2: 00009597 auipc a1,0x9 + 3bc014e6: 2a658593 addi a1,a1,678 # 3bc0a788 <__func__.0> + 3bc014ea: e406 sd ra,8(sp) + 3bc014ec: e6dfe0ef jal ra,3bc00358 + 3bc014f0: 60a2 ld ra,8(sp) + 3bc014f2: 4501 li a0,0 + 3bc014f4: 0141 addi sp,sp,16 + 3bc014f6: 8082 ret + 3bc014f8: 8082 ret + +000000003bc014fa : + 3bc014fa: 711d addi sp,sp,-96 + 3bc014fc: 00000797 auipc a5,0x0 + 3bc01500: fbc78793 addi a5,a5,-68 # 3bc014b8 + 3bc01504: f83e sd a5,48(sp) + 3bc01506: 00000797 auipc a5,0x0 + 3bc0150a: fb078793 addi a5,a5,-80 # 3bc014b6 + 3bc0150e: ec86 sd ra,88(sp) + 3bc01510: e8a2 sd s0,80(sp) + 3bc01512: e4a6 sd s1,72(sp) + 3bc01514: e0ca sd s2,64(sp) + 3bc01516: ec36 sd a3,24(sp) + 3bc01518: f402 sd zero,40(sp) + 3bc0151a: fc3e sd a5,56(sp) + 3bc0151c: d202 sw zero,36(sp) + 3bc0151e: e19d bnez a1,3bc01544 + 3bc01520: 00009597 auipc a1,0x9 + 3bc01524: 27058593 addi a1,a1,624 # 3bc0a790 <__func__.1> + 3bc01528: 00009517 auipc a0,0x9 + 3bc0152c: 11850513 addi a0,a0,280 # 3bc0a640 + 3bc01530: e29fe0ef jal ra,3bc00358 + 3bc01534: 5429 li s0,-22 + 3bc01536: 60e6 ld ra,88(sp) + 3bc01538: 8522 mv a0,s0 + 3bc0153a: 6446 ld s0,80(sp) + 3bc0153c: 64a6 ld s1,72(sp) + 3bc0153e: 6906 ld s2,64(sp) + 3bc01540: 6125 addi sp,sp,96 + 3bc01542: 8082 ret + 3bc01544: 20500793 li a5,517 + 3bc01548: 07da slli a5,a5,0x16 + 3bc0154a: 842a mv s0,a0 + 3bc0154c: 00012717 auipc a4,0x12 + 3bc01550: daf73623 sd a5,-596(a4) # 3bc132f8 + 3bc01554: 84ae mv s1,a1 + 3bc01556: 001007b7 lui a5,0x100 + 3bc0155a: 85aa mv a1,a0 + 3bc0155c: 00009517 auipc a0,0x9 + 3bc01560: 10450513 addi a0,a0,260 # 3bc0a660 + 3bc01564: 8932 mv s2,a2 + 3bc01566: 00012717 auipc a4,0x12 + 3bc0156a: d8f73d23 sd a5,-614(a4) # 3bc13300 + 3bc0156e: debfe0ef jal ra,3bc00358 + 3bc01572: 67e2 ld a5,24(sp) + 3bc01574: 4611 li a2,4 + 3bc01576: 00590593 addi a1,s2,5 + 3bc0157a: 17ed addi a5,a5,-5 + 3bc0157c: 1008 addi a0,sp,32 + 3bc0157e: ec3e sd a5,24(sp) + 3bc01580: cecff0ef jal ra,3bc00a6c + 3bc01584: 67e2 ld a5,24(sp) + 3bc01586: 02016583 lwu a1,32(sp) + 3bc0158a: 00009517 auipc a0,0x9 + 3bc0158e: 0ee50513 addi a0,a0,238 # 3bc0a678 + 3bc01592: 17e1 addi a5,a5,-8 + 3bc01594: f42e sd a1,40(sp) + 3bc01596: ec3e sd a5,24(sp) + 3bc01598: dc1fe0ef jal ra,3bc00358 + 3bc0159c: 181c addi a5,sp,48 + 3bc0159e: e03e sd a5,0(sp) + 3bc015a0: 8522 mv a0,s0 + 3bc015a2: 02410893 addi a7,sp,36 + 3bc015a6: 4805 li a6,1 + 3bc015a8: 4795 li a5,5 + 3bc015aa: 874a mv a4,s2 + 3bc015ac: 0834 addi a3,sp,24 + 3bc015ae: 00d90613 addi a2,s2,13 + 3bc015b2: 102c addi a1,sp,40 + 3bc015b4: 5f5040ef jal ra,3bc063a8 + 3bc015b8: 842a mv s0,a0 + 3bc015ba: c919 beqz a0,3bc015d0 + 3bc015bc: 5612 lw a2,36(sp) + 3bc015be: 85aa mv a1,a0 + 3bc015c0: 00009517 auipc a0,0x9 + 3bc015c4: 0d850513 addi a0,a0,216 # 3bc0a698 + 3bc015c8: d91fe0ef jal ra,3bc00358 + 3bc015cc: 5449 li s0,-14 + 3bc015ce: b7a5 j 3bc01536 + 3bc015d0: 75a2 ld a1,40(sp) + 3bc015d2: 00009517 auipc a0,0x9 + 3bc015d6: 0ee50513 addi a0,a0,238 # 3bc0a6c0 + 3bc015da: e08c sd a1,0(s1) + 3bc015dc: d7dfe0ef jal ra,3bc00358 + 3bc015e0: bf99 j 3bc01536 + +000000003bc015e2 : + 3bc015e2: 85aa mv a1,a0 + 3bc015e4: 4501 li a0,0 + 3bc015e6: bdc9 j 3bc014b8 + +000000003bc015e8 : + 3bc015e8: 02b50633 mul a2,a0,a1 + 3bc015ec: 1101 addi sp,sp,-32 + 3bc015ee: e822 sd s0,16(sp) + 3bc015f0: ec06 sd ra,24(sp) + 3bc015f2: 8532 mv a0,a2 + 3bc015f4: e432 sd a2,8(sp) + 3bc015f6: fedff0ef jal ra,3bc015e2 + 3bc015fa: 842a mv s0,a0 + 3bc015fc: c509 beqz a0,3bc01606 + 3bc015fe: 6622 ld a2,8(sp) + 3bc01600: 4581 li a1,0 + 3bc01602: c10ff0ef jal ra,3bc00a12 + 3bc01606: 60e2 ld ra,24(sp) + 3bc01608: 8522 mv a0,s0 + 3bc0160a: 6442 ld s0,16(sp) + 3bc0160c: 6105 addi sp,sp,32 + 3bc0160e: 8082 ret + +000000003bc01610 : + 3bc01610: 8082 ret + +000000003bc01612 : + 3bc01612: 20500793 li a5,517 + 3bc01616: 715d addi sp,sp,-80 + 3bc01618: 07da slli a5,a5,0x16 + 3bc0161a: e0a2 sd s0,64(sp) + 3bc0161c: f84a sd s2,48(sp) + 3bc0161e: 00012717 auipc a4,0x12 + 3bc01622: ccf73d23 sd a5,-806(a4) # 3bc132f8 + 3bc01626: 842a mv s0,a0 + 3bc01628: 001007b7 lui a5,0x100 + 3bc0162c: 892e mv s2,a1 + 3bc0162e: 85aa mv a1,a0 + 3bc01630: 00009517 auipc a0,0x9 + 3bc01634: 0a850513 addi a0,a0,168 # 3bc0a6d8 + 3bc01638: e486 sd ra,72(sp) + 3bc0163a: e436 sd a3,8(sp) + 3bc0163c: 00012717 auipc a4,0x12 + 3bc01640: ccf73223 sd a5,-828(a4) # 3bc13300 + 3bc01644: fc26 sd s1,56(sp) + 3bc01646: f44e sd s3,40(sp) + 3bc01648: 89b2 mv s3,a2 + 3bc0164a: d0ffe0ef jal ra,3bc00358 + 3bc0164e: 06400593 li a1,100 + 3bc01652: 0828 addi a0,sp,24 + 3bc01654: 38b050ef jal ra,3bc071de + 3bc01658: 84aa mv s1,a0 + 3bc0165a: 1b7050ef jal ra,3bc07010 + 3bc0165e: 2501 sext.w a0,a0 + 3bc01660: c105 beqz a0,3bc01680 + 3bc01662: 85a6 mv a1,s1 + 3bc01664: 00009517 auipc a0,0x9 + 3bc01668: 08c50513 addi a0,a0,140 # 3bc0a6f0 + 3bc0166c: cedfe0ef jal ra,3bc00358 + 3bc01670: 557d li a0,-1 + 3bc01672: 60a6 ld ra,72(sp) + 3bc01674: 6406 ld s0,64(sp) + 3bc01676: 74e2 ld s1,56(sp) + 3bc01678: 7942 ld s2,48(sp) + 3bc0167a: 79a2 ld s3,40(sp) + 3bc0167c: 6161 addi sp,sp,80 + 3bc0167e: 8082 ret + 3bc01680: 6562 ld a0,24(sp) + 3bc01682: 4781 li a5,0 + 3bc01684: 0038 addi a4,sp,8 + 3bc01686: 85a2 mv a1,s0 + 3bc01688: 86ce mv a3,s3 + 3bc0168a: 864a mv a2,s2 + 3bc0168c: 383050ef jal ra,3bc0720e + 3bc01690: 6622 ld a2,8(sp) + 3bc01692: 00093583 ld a1,0(s2) + 3bc01696: 86aa mv a3,a0 + 3bc01698: 842a mv s0,a0 + 3bc0169a: 00009517 auipc a0,0x9 + 3bc0169e: 06e50513 addi a0,a0,110 # 3bc0a708 + 3bc016a2: cb7fe0ef jal ra,3bc00358 + 3bc016a6: 8526 mv a0,s1 + 3bc016a8: 169050ef jal ra,3bc07010 + 3bc016ac: 0005079b sext.w a5,a0 + 3bc016b0: 4501 li a0,0 + 3bc016b2: d3e1 beqz a5,3bc01672 + 3bc016b4: 85a2 mv a1,s0 + 3bc016b6: 00009517 auipc a0,0x9 + 3bc016ba: 07a50513 addi a0,a0,122 # 3bc0a730 + 3bc016be: b77d j 3bc0166c + +000000003bc016c0 : + 3bc016c0: 7139 addi sp,sp,-64 + 3bc016c2: 87ba mv a5,a4 + 3bc016c4: ec4e sd s3,24(sp) + 3bc016c6: e852 sd s4,16(sp) + 3bc016c8: e456 sd s5,8(sp) + 3bc016ca: 89b2 mv s3,a2 + 3bc016cc: 8a36 mv s4,a3 + 3bc016ce: 8aba mv s5,a4 + 3bc016d0: 8736 mv a4,a3 + 3bc016d2: 86b2 mv a3,a2 + 3bc016d4: 6190 ld a2,0(a1) + 3bc016d6: f426 sd s1,40(sp) + 3bc016d8: f04a sd s2,32(sp) + 3bc016da: 84ae mv s1,a1 + 3bc016dc: 892a mv s2,a0 + 3bc016de: 85aa mv a1,a0 + 3bc016e0: 00009517 auipc a0,0x9 + 3bc016e4: 07050513 addi a0,a0,112 # 3bc0a750 + 3bc016e8: fc06 sd ra,56(sp) + 3bc016ea: f822 sd s0,48(sp) + 3bc016ec: c6dfe0ef jal ra,3bc00358 + 3bc016f0: 4785 li a5,1 + 3bc016f2: 02fa8f63 beq s5,a5,3bc01730 + 3bc016f6: 4789 li a5,2 + 3bc016f8: 5429 li s0,-22 + 3bc016fa: 00fa9963 bne s5,a5,3bc0170c + 3bc016fe: 86d2 mv a3,s4 + 3bc01700: 864e mv a2,s3 + 3bc01702: 85a6 mv a1,s1 + 3bc01704: 854a mv a0,s2 + 3bc01706: f0dff0ef jal ra,3bc01612 + 3bc0170a: 842a mv s0,a0 + 3bc0170c: 608c ld a1,0(s1) + 3bc0170e: 8622 mv a2,s0 + 3bc01710: 00009517 auipc a0,0x9 + 3bc01714: 06050513 addi a0,a0,96 # 3bc0a770 + 3bc01718: c41fe0ef jal ra,3bc00358 + 3bc0171c: 70e2 ld ra,56(sp) + 3bc0171e: 8522 mv a0,s0 + 3bc01720: 7442 ld s0,48(sp) + 3bc01722: 74a2 ld s1,40(sp) + 3bc01724: 7902 ld s2,32(sp) + 3bc01726: 69e2 ld s3,24(sp) + 3bc01728: 6a42 ld s4,16(sp) + 3bc0172a: 6aa2 ld s5,8(sp) + 3bc0172c: 6121 addi sp,sp,64 + 3bc0172e: 8082 ret + 3bc01730: 86d2 mv a3,s4 + 3bc01732: 864e mv a2,s3 + 3bc01734: 85a6 mv a1,s1 + 3bc01736: 854a mv a0,s2 + 3bc01738: dc3ff0ef jal ra,3bc014fa + 3bc0173c: b7f9 j 3bc0170a + +000000003bc0173e : + 3bc0173e: 4108 lw a0,0(a0) + 3bc01740: 2501 sext.w a0,a0 + 3bc01742: 8082 ret + +000000003bc01744 : + 3bc01744: c188 sw a0,0(a1) + 3bc01746: 8082 ret + +000000003bc01748 : + 3bc01748: 8082 ret + +000000003bc0174a : + 3bc0174a: 00012717 auipc a4,0x12 + 3bc0174e: cc170713 addi a4,a4,-831 # 3bc1340b + 3bc01752: 00074783 lbu a5,0(a4) + 3bc01756: eb89 bnez a5,3bc01768 + 3bc01758: 0000a517 auipc a0,0xa + 3bc0175c: d9053503 ld a0,-624(a0) # 3bc0b4e8 + 3bc01760: 2785 addiw a5,a5,1 + 3bc01762: 00f70023 sb a5,0(a4) + 3bc01766: 8082 ret + 3bc01768: 4685 li a3,1 + 3bc0176a: 00d79763 bne a5,a3,3bc01778 + 3bc0176e: 0000a517 auipc a0,0xa + 3bc01772: d8253503 ld a0,-638(a0) # 3bc0b4f0 + 3bc01776: b7ed j 3bc01760 + 3bc01778: 0000a517 auipc a0,0xa + 3bc0177c: d8053503 ld a0,-640(a0) # 3bc0b4f8 + 3bc01780: b7c5 j 3bc01760 + +000000003bc01782 : + 3bc01782: 8082 ret + +000000003bc01784 : + 3bc01784: 698c ld a1,16(a1) + 3bc01786: 00012517 auipc a0,0x12 + 3bc0178a: b8253503 ld a0,-1150(a0) # 3bc13308 + 3bc0178e: 1141 addi sp,sp,-16 + 3bc01790: 461d li a2,7 + 3bc01792: 0511 addi a0,a0,4 + 3bc01794: e406 sd ra,8(sp) + 3bc01796: ad6ff0ef jal ra,3bc00a6c + 3bc0179a: 60a2 ld ra,8(sp) + 3bc0179c: 0141 addi sp,sp,16 + 3bc0179e: 8082 ret + +000000003bc017a0 : + 3bc017a0: 00009597 auipc a1,0x9 + 3bc017a4: 40058593 addi a1,a1,1024 # 3bc0aba0 <__func__.5> + 3bc017a8: 00009517 auipc a0,0x9 + 3bc017ac: ff850513 addi a0,a0,-8 # 3bc0a7a0 <__func__.1+0x10> + 3bc017b0: ba9fe06f j 3bc00358 + +000000003bc017b4 : + 3bc017b4: 00012797 auipc a5,0x12 + 3bc017b8: c40788a3 sb zero,-943(a5) # 3bc13405 + 3bc017bc: 4785 li a5,1 + 3bc017be: 00012717 auipc a4,0x12 + 3bc017c2: c4f706a3 sb a5,-947(a4) # 3bc1340b + 3bc017c6: 00009597 auipc a1,0x9 + 3bc017ca: 3ca58593 addi a1,a1,970 # 3bc0ab90 <__func__.4> + 3bc017ce: 00012797 auipc a5,0x12 + 3bc017d2: c2078ca3 sb zero,-967(a5) # 3bc13407 + 3bc017d6: 00009517 auipc a0,0x9 + 3bc017da: fca50513 addi a0,a0,-54 # 3bc0a7a0 <__func__.1+0x10> + 3bc017de: b7bfe06f j 3bc00358 + +000000003bc017e2 : + 3bc017e2: 1141 addi sp,sp,-16 + 3bc017e4: 00009597 auipc a1,0x9 + 3bc017e8: 3a458593 addi a1,a1,932 # 3bc0ab88 <__func__.1> + 3bc017ec: 00009517 auipc a0,0x9 + 3bc017f0: fcc50513 addi a0,a0,-52 # 3bc0a7b8 <__func__.1+0x28> + 3bc017f4: e406 sd ra,8(sp) + 3bc017f6: b63fe0ef jal ra,3bc00358 + 3bc017fa: 60a2 ld ra,8(sp) + 3bc017fc: 0000a797 auipc a5,0xa + 3bc01800: dc07b223 sd zero,-572(a5) # 3bc0b5c0 + 3bc01804: 0141 addi sp,sp,16 + 3bc01806: 8082 ret + +000000003bc01808 : + 3bc01808: 1141 addi sp,sp,-16 + 3bc0180a: e022 sd s0,0(sp) + 3bc0180c: 00009597 auipc a1,0x9 + 3bc01810: 37458593 addi a1,a1,884 # 3bc0ab80 <__func__.0> + 3bc01814: 842a mv s0,a0 + 3bc01816: 00009517 auipc a0,0x9 + 3bc0181a: fa250513 addi a0,a0,-94 # 3bc0a7b8 <__func__.1+0x28> + 3bc0181e: e406 sd ra,8(sp) + 3bc01820: b39fe0ef jal ra,3bc00358 + 3bc01824: 0000a797 auipc a5,0xa + 3bc01828: d9c78793 addi a5,a5,-612 # 3bc0b5c0 + 3bc0182c: 6398 ld a4,0(a5) + 3bc0182e: cf01 beqz a4,3bc01846 + 3bc01830: 00009517 auipc a0,0x9 + 3bc01834: f9850513 addi a0,a0,-104 # 3bc0a7c8 <__func__.1+0x38> + 3bc01838: b21fe0ef jal ra,3bc00358 + 3bc0183c: 60a2 ld ra,8(sp) + 3bc0183e: 6402 ld s0,0(sp) + 3bc01840: 4501 li a0,0 + 3bc01842: 0141 addi sp,sp,16 + 3bc01844: 8082 ret + 3bc01846: e380 sd s0,0(a5) + 3bc01848: bfd5 j 3bc0183c + +000000003bc0184a : + 3bc0184a: 1101 addi sp,sp,-32 + 3bc0184c: e822 sd s0,16(sp) + 3bc0184e: 842a mv s0,a0 + 3bc01850: 852e mv a0,a1 + 3bc01852: e42e sd a1,8(sp) + 3bc01854: ec06 sd ra,24(sp) + 3bc01856: b04ff0ef jal ra,3bc00b5a + 3bc0185a: 0506 slli a0,a0,0x1 + 3bc0185c: 0025071b addiw a4,a0,2 + 3bc01860: 87a2 mv a5,s0 + 3bc01862: 1827d70b sbia a4,(a5),2,0 + 3bc01866: 470d li a4,3 + 3bc01868: 00e400a3 sb a4,1(s0) # e000001 + 3bc0186c: 06400713 li a4,100 + 3bc01870: 65a2 ld a1,8(sp) + 3bc01872: 00a77463 bgeu a4,a0,3bc0187a + 3bc01876: 06400513 li a0,100 + 3bc0187a: 4701 li a4,0 + 3bc0187c: 00171693 slli a3,a4,0x1 + 3bc01880: 00a6e663 bltu a3,a0,3bc0188c + 3bc01884: 60e2 ld ra,24(sp) + 3bc01886: 6442 ld s0,16(sp) + 3bc01888: 6105 addi sp,sp,32 + 3bc0188a: 8082 ret + 3bc0188c: 80e5c68b lrbu a3,a1,a4,0 + 3bc01890: 0705 addi a4,a4,1 + 3bc01892: 1827d68b sbia a3,(a5),2,0 + 3bc01896: fe078fa3 sb zero,-1(a5) + 3bc0189a: b7cd j 3bc0187c + +000000003bc0189c : + 3bc0189c: 5d98 lw a4,56(a1) + 3bc0189e: fc600793 li a5,-58 + 3bc018a2: 22f70663 beq a4,a5,3bc01ace + 3bc018a6: 699c ld a5,16(a1) + 3bc018a8: 7179 addi sp,sp,-48 + 3bc018aa: e052 sd s4,0(sp) + 3bc018ac: f406 sd ra,40(sp) + 3bc018ae: f022 sd s0,32(sp) + 3bc018b0: ec26 sd s1,24(sp) + 3bc018b2: e84a sd s2,16(sp) + 3bc018b4: e44e sd s3,8(sp) + 3bc018b6: 0037c403 lbu s0,3(a5) + 3bc018ba: 0047c703 lbu a4,4(a5) + 3bc018be: 0017c483 lbu s1,1(a5) + 3bc018c2: 1402 slli s0,s0,0x20 + 3bc018c4: 0762 slli a4,a4,0x18 + 3bc018c6: 943a add s0,s0,a4 + 3bc018c8: 0077c703 lbu a4,7(a5) + 3bc018cc: 0027c603 lbu a2,2(a5) + 3bc018d0: 0084949b slliw s1,s1,0x8 + 3bc018d4: 943a add s0,s0,a4 + 3bc018d6: 0057c703 lbu a4,5(a5) + 3bc018da: 9e25 addw a2,a2,s1 + 3bc018dc: 00012a17 auipc s4,0x12 + 3bc018e0: a4ca0a13 addi s4,s4,-1460 # 3bc13328 + 3bc018e4: 0742 slli a4,a4,0x10 + 3bc018e6: 943a add s0,s0,a4 + 3bc018e8: 0067c703 lbu a4,6(a5) + 3bc018ec: 000a3583 ld a1,0(s4) + 3bc018f0: 84b2 mv s1,a2 + 3bc018f2: 0722 slli a4,a4,0x8 + 3bc018f4: 943a add s0,s0,a4 + 3bc018f6: ee05 bnez a2,3bc0192e + 3bc018f8: e81d bnez s0,3bc0192e + 3bc018fa: 00012797 auipc a5,0x12 + 3bc018fe: a267b783 ld a5,-1498(a5) # 3bc13320 + 3bc01902: 00012717 auipc a4,0x12 + 3bc01906: ae672703 lw a4,-1306(a4) # 3bc133e8 + 3bc0190a: 00012517 auipc a0,0x12 + 3bc0190e: a3e53503 ld a0,-1474(a0) # 3bc13348 + 3bc01912: cf98 sw a4,24(a5) + 3bc01914: 7118 ld a4,32(a0) + 3bc01916: 7402 ld s0,32(sp) + 3bc01918: 70a2 ld ra,40(sp) + 3bc0191a: 64e2 ld s1,24(sp) + 3bc0191c: 6942 ld s2,16(sp) + 3bc0191e: 69a2 ld s3,8(sp) + 3bc01920: 6a02 ld s4,0(sp) + 3bc01922: 7318 ld a4,32(a4) + 3bc01924: eb8c sd a1,16(a5) + 3bc01926: cfcc sw a1,28(a5) + 3bc01928: 85be mv a1,a5 + 3bc0192a: 6145 addi sp,sp,48 + 3bc0192c: 8702 jr a4 + 3bc0192e: 0007c903 lbu s2,0(a5) + 3bc01932: 4501 li a0,0 + 3bc01934: 5d3020ef jal ra,3bc04706 + 3bc01938: 4789 li a5,2 + 3bc0193a: 89aa mv s3,a0 + 3bc0193c: 0ef90763 beq s2,a5,3bc01a2a + 3bc01940: 0327e363 bltu a5,s2,3bc01966 + 3bc01944: 0c091863 bnez s2,3bc01a14 + 3bc01948: 000a3583 ld a1,0(s4) + 3bc0194c: ff84861b addiw a2,s1,-8 + 3bc01950: 00012517 auipc a0,0x12 + 3bc01954: a0053503 ld a0,-1536(a0) # 3bc13350 + 3bc01958: 7c06360b extu a2,a2,31,0 + 3bc0195c: 05a1 addi a1,a1,8 + 3bc0195e: 9522 add a0,a0,s0 + 3bc01960: 90cff0ef jal ra,3bc00a6c + 3bc01964: a021 j 3bc0196c + 3bc01966: 478d li a5,3 + 3bc01968: 0ef90163 beq s2,a5,3bc01a4a + 3bc0196c: 0000a417 auipc s0,0xa + 3bc01970: d2440413 addi s0,s0,-732 # 3bc0b690 + 3bc01974: 6008 ld a0,0(s0) + 3bc01976: 4641 li a2,16 + 3bc01978: 4581 li a1,0 + 3bc0197a: 898ff0ef jal ra,3bc00a12 + 3bc0197e: 601c ld a5,0(s0) + 3bc01980: 00012617 auipc a2,0x12 + 3bc01984: a8460613 addi a2,a2,-1404 # 3bc13404 + 3bc01988: 00064703 lbu a4,0(a2) + 3bc0198c: 0089951b slliw a0,s3,0x8 + 3bc01990: 00012697 auipc a3,0x12 + 3bc01994: a506a683 lw a3,-1456(a3) # 3bc133e0 + 3bc01998: 0089d99b srliw s3,s3,0x8 + 3bc0199c: 01356533 or a0,a0,s3 + 3bc019a0: 00012497 auipc s1,0x12 + 3bc019a4: 97848493 addi s1,s1,-1672 # 3bc13318 + 3bc019a8: 9006968b revw a3,a3 + 3bc019ac: 00a79023 sh a0,0(a5) + 3bc019b0: 00a79123 sh a0,2(a5) + 3bc019b4: c794 sw a3,8(a5) + 3bc019b6: 6088 ld a0,0(s1) + 3bc019b8: 00012697 auipc a3,0x12 + 3bc019bc: a2c6a683 lw a3,-1492(a3) # 3bc133e4 + 3bc019c0: 00e783a3 sb a4,7(a5) + 3bc019c4: 9006968b revw a3,a3 + 3bc019c8: 2705 addiw a4,a4,1 + 3bc019ca: 01278323 sb s2,6(a5) + 3bc019ce: 00079223 sh zero,4(a5) + 3bc019d2: c7d4 sw a3,12(a5) + 3bc019d4: 00e60023 sb a4,0(a2) + 3bc019d8: 4581 li a1,0 + 3bc019da: 04000613 li a2,64 + 3bc019de: 834ff0ef jal ra,3bc00a12 + 3bc019e2: 608c ld a1,0(s1) + 3bc019e4: 47c1 li a5,16 + 3bc019e6: 00012517 auipc a0,0x12 + 3bc019ea: 95a53503 ld a0,-1702(a0) # 3bc13340 + 3bc019ee: cd9c sw a5,24(a1) + 3bc019f0: 601c ld a5,0(s0) + 3bc019f2: 7402 ld s0,32(sp) + 3bc019f4: 70a2 ld ra,40(sp) + 3bc019f6: e99c sd a5,16(a1) + 3bc019f8: cddc sw a5,28(a1) + 3bc019fa: 00000797 auipc a5,0x0 + 3bc019fe: 15c78793 addi a5,a5,348 # 3bc01b56 + 3bc01a02: f59c sd a5,40(a1) + 3bc01a04: 711c ld a5,32(a0) + 3bc01a06: 64e2 ld s1,24(sp) + 3bc01a08: 6942 ld s2,16(sp) + 3bc01a0a: 69a2 ld s3,8(sp) + 3bc01a0c: 6a02 ld s4,0(sp) + 3bc01a0e: 739c ld a5,32(a5) + 3bc01a10: 6145 addi sp,sp,48 + 3bc01a12: 8782 jr a5 + 3bc01a14: 0e0007b7 lui a5,0xe000 + 3bc01a18: 0791 addi a5,a5,4 + 3bc01a1a: f4f419e3 bne s0,a5,3bc0196c + 3bc01a1e: 000a3583 ld a1,0(s4) + 3bc01a22: 4611 li a2,4 + 3bc01a24: 8522 mv a0,s0 + 3bc01a26: 05a1 addi a1,a1,8 + 3bc01a28: bf25 j 3bc01960 + 3bc01a2a: 00009517 auipc a0,0x9 + 3bc01a2e: da650513 addi a0,a0,-602 # 3bc0a7d0 <__func__.1+0x40> + 3bc01a32: 927fe0ef jal ra,3bc00358 + 3bc01a36: 00012797 auipc a5,0x12 + 3bc01a3a: 9c078723 sb zero,-1586(a5) # 3bc13404 + 3bc01a3e: 4785 li a5,1 + 3bc01a40: 00012717 auipc a4,0x12 + 3bc01a44: 9cf70323 sb a5,-1594(a4) # 3bc13406 + 3bc01a48: b715 j 3bc0196c + 3bc01a4a: 000a3583 ld a1,0(s4) + 3bc01a4e: ff84861b addiw a2,s1,-8 + 3bc01a52: 4501 li a0,0 + 3bc01a54: 05a1 addi a1,a1,8 + 3bc01a56: 4b1020ef jal ra,3bc04706 + 3bc01a5a: 842a mv s0,a0 + 3bc01a5c: 00009517 auipc a0,0x9 + 3bc01a60: d8c50513 addi a0,a0,-628 # 3bc0a7e8 <__func__.1+0x58> + 3bc01a64: 8f5fe0ef jal ra,3bc00358 + 3bc01a68: 67b1 lui a5,0xc + 3bc01a6a: 2401 sext.w s0,s0 + 3bc01a6c: 28378793 addi a5,a5,643 # c283 <__BSS_SIZE__+0x6673> + 3bc01a70: 02f41a63 bne s0,a5,3bc01aa4 + 3bc01a74: 00012797 auipc a5,0x12 + 3bc01a78: 98078823 sb zero,-1648(a5) # 3bc13404 + 3bc01a7c: 00012797 auipc a5,0x12 + 3bc01a80: 98c78793 addi a5,a5,-1652 # 3bc13408 + 3bc01a84: 4705 li a4,1 + 3bc01a86: 00e78023 sb a4,0(a5) + 3bc01a8a: 0e000737 lui a4,0xe000 + 3bc01a8e: 00072223 sw zero,4(a4) # e000004 + 3bc01a92: 0007c583 lbu a1,0(a5) + 3bc01a96: 00009517 auipc a0,0x9 + 3bc01a9a: d5a50513 addi a0,a0,-678 # 3bc0a7f0 <__func__.1+0x60> + 3bc01a9e: 8bbfe0ef jal ra,3bc00358 + 3bc01aa2: b5e9 j 3bc0196c + 3bc01aa4: 00012797 auipc a5,0x12 + 3bc01aa8: 96078223 sb zero,-1692(a5) # 3bc13408 + 3bc01aac: 0e0007b7 lui a5,0xe000 + 3bc01ab0: 0007a223 sw zero,4(a5) # e000004 + 3bc01ab4: 00009517 auipc a0,0x9 + 3bc01ab8: d5450513 addi a0,a0,-684 # 3bc0a808 <__func__.1+0x78> + 3bc01abc: 89dfe0ef jal ra,3bc00358 + 3bc01ac0: 00009517 auipc a0,0x9 + 3bc01ac4: d6850513 addi a0,a0,-664 # 3bc0a828 <__func__.1+0x98> + 3bc01ac8: 891fe0ef jal ra,3bc00358 + 3bc01acc: b545 j 3bc0196c + 3bc01ace: 8082 ret + +000000003bc01ad0 : + 3bc01ad0: 7179 addi sp,sp,-48 + 3bc01ad2: f406 sd ra,40(sp) + 3bc01ad4: f022 sd s0,32(sp) + 3bc01ad6: ec26 sd s1,24(sp) + 3bc01ad8: e84a sd s2,16(sp) + 3bc01ada: e44e sd s3,8(sp) + 3bc01adc: 4789 li a5,2 + 3bc01ade: 02f50263 beq a0,a5,3bc01b02 + 3bc01ae2: 478d li a5,3 + 3bc01ae4: 54fd li s1,-1 + 3bc01ae6: 0000a417 auipc s0,0xa + 3bc01aea: a7240413 addi s0,s0,-1422 # 3bc0b558 + 3bc01aee: 00f50e63 beq a0,a5,3bc01b0a + 3bc01af2: 70a2 ld ra,40(sp) + 3bc01af4: 7402 ld s0,32(sp) + 3bc01af6: 6942 ld s2,16(sp) + 3bc01af8: 69a2 ld s3,8(sp) + 3bc01afa: 8526 mv a0,s1 + 3bc01afc: 64e2 ld s1,24(sp) + 3bc01afe: 6145 addi sp,sp,48 + 3bc01b00: 8082 ret + 3bc01b02: 0000a417 auipc s0,0xa + 3bc01b06: a0640413 addi s0,s0,-1530 # 3bc0b508 + 3bc01b0a: 892e mv s2,a1 + 3bc01b0c: 7884458b ldia a1,(s0),8,0 + 3bc01b10: 4481 li s1,0 + 3bc01b12: d1e5 beqz a1,3bc01af2 + 3bc01b14: 0005c983 lbu s3,0(a1) + 3bc01b18: 00990533 add a0,s2,s1 + 3bc01b1c: 864e mv a2,s3 + 3bc01b1e: f4ffe0ef jal ra,3bc00a6c + 3bc01b22: 7884458b ldia a1,(s0),8,0 + 3bc01b26: 009984bb addw s1,s3,s1 + 3bc01b2a: b7e5 j 3bc01b12 + +000000003bc01b2c : + 3bc01b2c: 5d98 lw a4,56(a1) + 3bc01b2e: 57ed li a5,-5 + 3bc01b30: 02f71263 bne a4,a5,3bc01b54 + 3bc01b34: 1141 addi sp,sp,-16 + 3bc01b36: 00009517 auipc a0,0x9 + 3bc01b3a: d0250513 addi a0,a0,-766 # 3bc0a838 <__func__.1+0xa8> + 3bc01b3e: e406 sd ra,8(sp) + 3bc01b40: 819fe0ef jal ra,3bc00358 + 3bc01b44: 60a2 ld ra,8(sp) + 3bc01b46: 4785 li a5,1 + 3bc01b48: 00012717 auipc a4,0x12 + 3bc01b4c: 8cf700a3 sb a5,-1855(a4) # 3bc13409 + 3bc01b50: 0141 addi sp,sp,16 + 3bc01b52: 8082 ret + 3bc01b54: 8082 ret + +000000003bc01b56 : + 3bc01b56: 5d98 lw a4,56(a1) + 3bc01b58: fc600793 li a5,-58 + 3bc01b5c: 04f70463 beq a4,a5,3bc01ba4 + 3bc01b60: 1141 addi sp,sp,-16 + 3bc01b62: e022 sd s0,0(sp) + 3bc01b64: 00011417 auipc s0,0x11 + 3bc01b68: 7c440413 addi s0,s0,1988 # 3bc13328 + 3bc01b6c: 6008 ld a0,0(s0) + 3bc01b6e: 4581 li a1,0 + 3bc01b70: 4621 li a2,8 + 3bc01b72: e406 sd ra,8(sp) + 3bc01b74: e9ffe0ef jal ra,3bc00a12 + 3bc01b78: 00011597 auipc a1,0x11 + 3bc01b7c: 7a85b583 ld a1,1960(a1) # 3bc13320 + 3bc01b80: 00012797 auipc a5,0x12 + 3bc01b84: 8687a783 lw a5,-1944(a5) # 3bc133e8 + 3bc01b88: cd9c sw a5,24(a1) + 3bc01b8a: 601c ld a5,0(s0) + 3bc01b8c: 00011517 auipc a0,0x11 + 3bc01b90: 7bc53503 ld a0,1980(a0) # 3bc13348 + 3bc01b94: 6402 ld s0,0(sp) + 3bc01b96: e99c sd a5,16(a1) + 3bc01b98: cddc sw a5,28(a1) + 3bc01b9a: 711c ld a5,32(a0) + 3bc01b9c: 60a2 ld ra,8(sp) + 3bc01b9e: 739c ld a5,32(a5) + 3bc01ba0: 0141 addi sp,sp,16 + 3bc01ba2: 8782 jr a5 + 3bc01ba4: 8082 ret + +000000003bc01ba6 : + 3bc01ba6: 7159 addi sp,sp,-112 + 3bc01ba8: e4ce sd s3,72(sp) + 3bc01baa: fc56 sd s5,56(sp) + 3bc01bac: 00011997 auipc s3,0x11 + 3bc01bb0: 78498993 addi s3,s3,1924 # 3bc13330 + 3bc01bb4: 00011a97 auipc s5,0x11 + 3bc01bb8: 784a8a93 addi s5,s5,1924 # 3bc13338 + 3bc01bbc: eca6 sd s1,88(sp) + 3bc01bbe: 000ab603 ld a2,0(s5) + 3bc01bc2: 84aa mv s1,a0 + 3bc01bc4: 0009b503 ld a0,0(s3) + 3bc01bc8: e0d2 sd s4,64(sp) + 3bc01bca: f486 sd ra,104(sp) + 3bc01bcc: f0a2 sd s0,96(sp) + 3bc01bce: e8ca sd s2,80(sp) + 3bc01bd0: f85a sd s6,48(sp) + 3bc01bd2: f45e sd s7,40(sp) + 3bc01bd4: f062 sd s8,32(sp) + 3bc01bd6: ec66 sd s9,24(sp) + 3bc01bd8: 0204a803 lw a6,32(s1) + 3bc01bdc: 0015c703 lbu a4,1(a1) + 3bc01be0: 0005c683 lbu a3,0(a1) + 3bc01be4: 0065da03 lhu s4,6(a1) + 3bc01be8: 0025d783 lhu a5,2(a1) + 3bc01bec: 00000597 auipc a1,0x0 + 3bc01bf0: f4058593 addi a1,a1,-192 # 3bc01b2c + 3bc01bf4: f60c sd a1,40(a2) + 3bc01bf6: ea08 sd a0,16(a2) + 3bc01bf8: ce48 sw a0,28(a2) + 3bc01bfa: 4589 li a1,2 + 3bc01bfc: 02b80763 beq a6,a1,3bc01c2a + 3bc01c00: 458d li a1,3 + 3bc01c02: 4905 li s2,1 + 3bc01c04: 06b81063 bne a6,a1,3bc01c64 + 3bc01c08: 0000ab17 auipc s6,0xa + 3bc01c0c: 8b8b0b13 addi s6,s6,-1864 # 3bc0b4c0 + 3bc01c10: 0000ab97 auipc s7,0xa + 3bc01c14: 8a0b8b93 addi s7,s7,-1888 # 3bc0b4b0 + 3bc01c18: 0606f593 andi a1,a3,96 + 3bc01c1c: c185 beqz a1,3bc01c3c + 3bc01c1e: 02000693 li a3,32 + 3bc01c22: 36d58463 beq a1,a3,3bc01f8a + 3bc01c26: 4901 li s2,0 + 3bc01c28: a835 j 3bc01c64 + 3bc01c2a: 0000ab17 auipc s6,0xa + 3bc01c2e: 876b0b13 addi s6,s6,-1930 # 3bc0b4a0 + 3bc01c32: 0000ab97 auipc s7,0xa + 3bc01c36: 85eb8b93 addi s7,s7,-1954 # 3bc0b490 + 3bc01c3a: bff9 j 3bc01c18 + 3bc01c3c: 4621 li a2,8 + 3bc01c3e: 32c70d63 beq a4,a2,3bc01f78 + 3bc01c42: 4625 li a2,9 + 3bc01c44: 24c70a63 beq a4,a2,3bc01e98 + 3bc01c48: 4619 li a2,6 + 3bc01c4a: 597d li s2,-1 + 3bc01c4c: 00c71c63 bne a4,a2,3bc01c64 + 3bc01c50: 8abd andi a3,a3,15 + 3bc01c52: 4705 li a4,1 + 3bc01c54: 02e69663 bne a3,a4,3bc01c80 + 3bc01c58: 00009517 auipc a0,0x9 + 3bc01c5c: bf850513 addi a0,a0,-1032 # 3bc0a850 <__func__.1+0xc0> + 3bc01c60: ef8fe0ef jal ra,3bc00358 + 3bc01c64: 70a6 ld ra,104(sp) + 3bc01c66: 7406 ld s0,96(sp) + 3bc01c68: 64e6 ld s1,88(sp) + 3bc01c6a: 69a6 ld s3,72(sp) + 3bc01c6c: 6a06 ld s4,64(sp) + 3bc01c6e: 7ae2 ld s5,56(sp) + 3bc01c70: 7b42 ld s6,48(sp) + 3bc01c72: 7ba2 ld s7,40(sp) + 3bc01c74: 7c02 ld s8,32(sp) + 3bc01c76: 6ce2 ld s9,24(sp) + 3bc01c78: 854a mv a0,s2 + 3bc01c7a: 6946 ld s2,80(sp) + 3bc01c7c: 6165 addi sp,sp,112 + 3bc01c7e: 8082 ret + 3bc01c80: f2dd bnez a3,3bc01c26 + 3bc01c82: 0087d71b srliw a4,a5,0x8 + 3bc01c86: 377d addiw a4,a4,-1 + 3bc01c88: 3c07360b extu a2,a4,15,0 + 3bc01c8c: 46b9 li a3,14 + 3bc01c8e: 0ac6e663 bltu a3,a2,3bc01d3a + 3bc01c92: 00009697 auipc a3,0x9 + 3bc01c96: c9268693 addi a3,a3,-878 # 3bc0a924 <__func__.1+0x194> + 3bc01c9a: 44c6c70b lrw a4,a3,a2,2 + 3bc01c9e: 9736 add a4,a4,a3 + 3bc01ca0: 8702 jr a4 + 3bc01ca2: 0000a417 auipc s0,0xa + 3bc01ca6: a5640413 addi s0,s0,-1450 # 3bc0b6f8 + 3bc01caa: 00045583 lhu a1,0(s0) + 3bc01cae: cd89 beqz a1,3bc01cc8 + 3bc01cb0: 00009517 auipc a0,0x9 + 3bc01cb4: bd050513 addi a0,a0,-1072 # 3bc0a880 <__func__.1+0xf0> + 3bc01cb8: ea0fe0ef jal ra,3bc00358 + 3bc01cbc: 00045783 lhu a5,0(s0) + 3bc01cc0: 0000a717 auipc a4,0xa + 3bc01cc4: 8ef71823 sh a5,-1808(a4) # 3bc0b5b0 + 3bc01cc8: 0009b503 ld a0,0(s3) + 3bc01ccc: 4649 li a2,18 + 3bc01cce: 0000a597 auipc a1,0xa + 3bc01cd2: 8da58593 addi a1,a1,-1830 # 3bc0b5a8 + 3bc01cd6: df7fe0ef jal ra,3bc00acc + 3bc01cda: 4449 li s0,18 + 3bc01cdc: 4905 li s2,1 + 3bc01cde: 6c88 ld a0,24(s1) + 3bc01ce0: 014427b3 slt a5,s0,s4 + 3bc01ce4: 40fa140b mveqz s0,s4,a5 + 3bc01ce8: 711c ld a5,32(a0) + 3bc01cea: 000ab583 ld a1,0(s5) + 3bc01cee: 739c ld a5,32(a5) + 3bc01cf0: cd80 sw s0,24(a1) + 3bc01cf2: 9782 jalr a5 + 3bc01cf4: f20909e3 beqz s2,3bc01c26 + 3bc01cf8: c00017b7 lui a5,0xc0001 + 3bc01cfc: 03000737 lui a4,0x3000 + 3bc01d00: 0795 addi a5,a5,5 + 3bc01d02: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc01d06: b705 j 3bc01c26 + 3bc01d08: 0ff7f793 andi a5,a5,255 + 3bc01d0c: 4709 li a4,2 + 3bc01d0e: 02e78863 beq a5,a4,3bc01d3e + 3bc01d12: 02f76163 bltu a4,a5,3bc01d34 + 3bc01d16: 00011597 auipc a1,0x11 + 3bc01d1a: 69258593 addi a1,a1,1682 # 3bc133a8 + 3bc01d1e: e789 bnez a5,3bc01d28 + 3bc01d20: 0000a597 auipc a1,0xa + 3bc01d24: 95858593 addi a1,a1,-1704 # 3bc0b678 + 3bc01d28: 0005c403 lbu s0,0(a1) + 3bc01d2c: 8622 mv a2,s0 + 3bc01d2e: 0009b503 ld a0,0(s3) + 3bc01d32: a215 j 3bc01e56 + 3bc01d34: 470d li a4,3 + 3bc01d36: 00e78963 beq a5,a4,3bc01d48 + 3bc01d3a: 597d li s2,-1 + 3bc01d3c: b725 j 3bc01c64 + 3bc01d3e: 00011597 auipc a1,0x11 + 3bc01d42: 61a58593 addi a1,a1,1562 # 3bc13358 + 3bc01d46: b7cd j 3bc01d28 + 3bc01d48: ea1fe0ef jal ra,3bc00be8 + 3bc01d4c: 00009597 auipc a1,0x9 + 3bc01d50: b9c58593 addi a1,a1,-1124 # 3bc0a8e8 <__func__.1+0x158> + 3bc01d54: e55d bnez a0,3bc01e02 + 3bc01d56: 00011b17 auipc s6,0x11 + 3bc01d5a: 6b4b0b13 addi s6,s6,1716 # 3bc1340a + 3bc01d5e: 000b4903 lbu s2,0(s6) + 3bc01d62: 08091263 bnez s2,3bc01de6 + 3bc01d66: 4641 li a2,16 + 3bc01d68: 4581 li a1,0 + 3bc01d6a: 00011517 auipc a0,0x11 + 3bc01d6e: 60e50513 addi a0,a0,1550 # 3bc13378 + 3bc01d72: 03050bb7 lui s7,0x3050 + 3bc01d76: c9dfe0ef jal ra,3bc00a12 + 3bc01d7a: 4401 li s0,0 + 3bc01d7c: 104b8b93 addi s7,s7,260 # 3050104 <__BSS_SIZE__+0x304a4f4> + 3bc01d80: 00009c97 auipc s9,0x9 + 3bc01d84: b10c8c93 addi s9,s9,-1264 # 3bc0a890 <__func__.1+0x100> + 3bc01d88: 4c11 li s8,4 + 3bc01d8a: 448bc60b lrw a2,s7,s0,2 + 3bc01d8e: 0004059b sext.w a1,s0 + 3bc01d92: 8566 mv a0,s9 + 3bc01d94: 2601 sext.w a2,a2 + 3bc01d96: 4481560b srw a2,sp,s0,2 + 3bc01d9a: dbefe0ef jal ra,3bc00358 + 3bc01d9e: 4481478b lrw a5,sp,s0,2 + 3bc01da2: c391 beqz a5,3bc01da6 + 3bc01da4: 4905 li s2,1 + 3bc01da6: 0405 addi s0,s0,1 + 3bc01da8: ff8411e3 bne s0,s8,3bc01d8a + 3bc01dac: 06090663 beqz s2,3bc01e18 + 3bc01db0: 858a mv a1,sp + 3bc01db2: 4641 li a2,16 + 3bc01db4: 4501 li a0,0 + 3bc01db6: 151020ef jal ra,3bc04706 + 3bc01dba: 0005041b sext.w s0,a0 + 3bc01dbe: 85a2 mv a1,s0 + 3bc01dc0: 00009517 auipc a0,0x9 + 3bc01dc4: ae850513 addi a0,a0,-1304 # 3bc0a8a8 <__func__.1+0x118> + 3bc01dc8: d90fe0ef jal ra,3bc00358 + 3bc01dcc: 4681 li a3,0 + 3bc01dce: 4641 li a2,16 + 3bc01dd0: 7c04358b extu a1,s0,31,0 + 3bc01dd4: 00011517 auipc a0,0x11 + 3bc01dd8: 5a450513 addi a0,a0,1444 # 3bc13378 + 3bc01ddc: bbdfe0ef jal ra,3bc00998 + 3bc01de0: 4785 li a5,1 + 3bc01de2: 00fb0023 sb a5,0(s6) + 3bc01de6: 00011597 auipc a1,0x11 + 3bc01dea: 59258593 addi a1,a1,1426 # 3bc13378 + 3bc01dee: 00009517 auipc a0,0x9 + 3bc01df2: aea50513 addi a0,a0,-1302 # 3bc0a8d8 <__func__.1+0x148> + 3bc01df6: d62fe0ef jal ra,3bc00358 + 3bc01dfa: 00011597 auipc a1,0x11 + 3bc01dfe: 57e58593 addi a1,a1,1406 # 3bc13378 + 3bc01e02: 00011517 auipc a0,0x11 + 3bc01e06: 58650513 addi a0,a0,1414 # 3bc13388 + 3bc01e0a: a41ff0ef jal ra,3bc0184a + 3bc01e0e: 00011597 auipc a1,0x11 + 3bc01e12: 57a58593 addi a1,a1,1402 # 3bc13388 + 3bc01e16: bf09 j 3bc01d28 + 3bc01e18: 00011517 auipc a0,0x11 + 3bc01e1c: 5d452503 lw a0,1492(a0) # 3bc133ec + 3bc01e20: bc2fe0ef jal ra,3bc001e2 + 3bc01e24: 0005041b sext.w s0,a0 + 3bc01e28: 85a2 mv a1,s0 + 3bc01e2a: 00009517 auipc a0,0x9 + 3bc01e2e: a9650513 addi a0,a0,-1386 # 3bc0a8c0 <__func__.1+0x130> + 3bc01e32: bf59 j 3bc01dc8 + 3bc01e34: 00009597 auipc a1,0x9 + 3bc01e38: 69c58593 addi a1,a1,1692 # 3bc0b4d0 + 3bc01e3c: 4615 li a2,5 + 3bc01e3e: 0025d403 lhu s0,2(a1) + 3bc01e42: c8bfe0ef jal ra,3bc00acc + 3bc01e46: 0009b503 ld a0,0(s3) + 3bc01e4a: 461d li a2,7 + 3bc01e4c: 00009597 auipc a1,0x9 + 3bc01e50: 69458593 addi a1,a1,1684 # 3bc0b4e0 + 3bc01e54: 0515 addi a0,a0,5 + 3bc01e56: c77fe0ef jal ra,3bc00acc + 3bc01e5a: dc0406e3 beqz s0,3bc01c26 + 3bc01e5e: a809 j 3bc01e70 + 3bc01e60: 4629 li a2,10 + 3bc01e62: 0000a597 auipc a1,0xa + 3bc01e66: 81e58593 addi a1,a1,-2018 # 3bc0b680 + 3bc01e6a: c63fe0ef jal ra,3bc00acc + 3bc01e6e: 4429 li s0,10 + 3bc01e70: 4901 li s2,0 + 3bc01e72: b5b5 j 3bc01cde + 3bc01e74: 00950593 addi a1,a0,9 + 3bc01e78: 8542 mv a0,a6 + 3bc01e7a: c57ff0ef jal ra,3bc01ad0 + 3bc01e7e: 2525 addiw a0,a0,9 + 3bc01e80: 3c05350b extu a0,a0,15,0 + 3bc01e84: 00009597 auipc a1,0x9 + 3bc01e88: 5c458593 addi a1,a1,1476 # 3bc0b448 + 3bc01e8c: 0005041b sext.w s0,a0 + 3bc01e90: 00a59123 sh a0,2(a1) + 3bc01e94: 4625 li a2,9 + 3bc01e96: bd61 j 3bc01d2e + 3bc01e98: 4705 li a4,1 + 3bc01e9a: 597d li s2,-1 + 3bc01e9c: dcf764e3 bltu a4,a5,3bc01c64 + 3bc01ea0: e385 bnez a5,3bc01ec0 + 3bc01ea2: 00011797 auipc a5,0x11 + 3bc01ea6: 560782a3 sb zero,1381(a5) # 3bc13407 + 3bc01eaa: 6080 ld s0,0(s1) + 3bc01eac: d6848de3 beq s1,s0,3bc01c26 + 3bc01eb0: 6c1c ld a5,24(s0) + 3bc01eb2: c789 beqz a5,3bc01ebc + 3bc01eb4: 701c ld a5,32(s0) + 3bc01eb6: 8522 mv a0,s0 + 3bc01eb8: 679c ld a5,8(a5) + 3bc01eba: 9782 jalr a5 + 3bc01ebc: 6000 ld s0,0(s0) + 3bc01ebe: b7fd j 3bc01eac + 3bc01ec0: 00011797 auipc a5,0x11 + 3bc01ec4: 54778793 addi a5,a5,1351 # 3bc13407 + 3bc01ec8: 0007c683 lbu a3,0(a5) + 3bc01ecc: d4e68de3 beq a3,a4,3bc01c26 + 3bc01ed0: 00e78023 sb a4,0(a5) + 3bc01ed4: 6080 ld s0,0(s1) + 3bc01ed6: 00009917 auipc s2,0x9 + 3bc01eda: a2290913 addi s2,s2,-1502 # 3bc0a8f8 <__func__.1+0x168> + 3bc01ede: 00848d63 beq s1,s0,3bc01ef8 + 3bc01ee2: 6c08 ld a0,24(s0) + 3bc01ee4: c141 beqz a0,3bc01f64 + 3bc01ee6: 85ca mv a1,s2 + 3bc01ee8: c57fe0ef jal ra,3bc00b3e + 3bc01eec: ed25 bnez a0,3bc01f64 + 3bc01eee: 701c ld a5,32(s0) + 3bc01ef0: 85de mv a1,s7 + 3bc01ef2: 8522 mv a0,s0 + 3bc01ef4: 639c ld a5,0(a5) + 3bc01ef6: 9782 jalr a5 + 3bc01ef8: 6080 ld s0,0(s1) + 3bc01efa: 00009917 auipc s2,0x9 + 3bc01efe: a0e90913 addi s2,s2,-1522 # 3bc0a908 <__func__.1+0x178> + 3bc01f02: 00848d63 beq s1,s0,3bc01f1c + 3bc01f06: 6c08 ld a0,24(s0) + 3bc01f08: c125 beqz a0,3bc01f68 + 3bc01f0a: 85ca mv a1,s2 + 3bc01f0c: c33fe0ef jal ra,3bc00b3e + 3bc01f10: ed21 bnez a0,3bc01f68 + 3bc01f12: 701c ld a5,32(s0) + 3bc01f14: 85da mv a1,s6 + 3bc01f16: 8522 mv a0,s0 + 3bc01f18: 639c ld a5,0(a5) + 3bc01f1a: 9782 jalr a5 + 3bc01f1c: 6080 ld s0,0(s1) + 3bc01f1e: 00009917 auipc s2,0x9 + 3bc01f22: 9fa90913 addi s2,s2,-1542 # 3bc0a918 <__func__.1+0x188> + 3bc01f26: 02848063 beq s1,s0,3bc01f46 + 3bc01f2a: 6c08 ld a0,24(s0) + 3bc01f2c: c121 beqz a0,3bc01f6c + 3bc01f2e: 85ca mv a1,s2 + 3bc01f30: c0ffe0ef jal ra,3bc00b3e + 3bc01f34: ed05 bnez a0,3bc01f6c + 3bc01f36: 701c ld a5,32(s0) + 3bc01f38: 00009597 auipc a1,0x9 + 3bc01f3c: 56058593 addi a1,a1,1376 # 3bc0b498 + 3bc01f40: 8522 mv a0,s0 + 3bc01f42: 639c ld a5,0(a5) + 3bc01f44: 9782 jalr a5 + 3bc01f46: 689c ld a5,16(s1) + 3bc01f48: 00009717 auipc a4,0x9 + 3bc01f4c: 50774703 lbu a4,1287(a4) # 3bc0b44f + 3bc01f50: 04077713 andi a4,a4,64 + 3bc01f54: 6b9c ld a5,16(a5) + 3bc01f56: cf09 beqz a4,3bc01f70 + 3bc01f58: 4585 li a1,1 + 3bc01f5a: cc0786e3 beqz a5,3bc01c26 + 3bc01f5e: 8526 mv a0,s1 + 3bc01f60: 9782 jalr a5 + 3bc01f62: b1d1 j 3bc01c26 + 3bc01f64: 6000 ld s0,0(s0) + 3bc01f66: bfa5 j 3bc01ede + 3bc01f68: 6000 ld s0,0(s0) + 3bc01f6a: bf61 j 3bc01f02 + 3bc01f6c: 6000 ld s0,0(s0) + 3bc01f6e: bf65 j 3bc01f26 + 3bc01f70: ca078be3 beqz a5,3bc01c26 + 3bc01f74: 4581 li a1,0 + 3bc01f76: b7e5 j 3bc01f5e + 3bc01f78: 4605 li a2,1 + 3bc01f7a: 00011597 auipc a1,0x11 + 3bc01f7e: 48d58593 addi a1,a1,1165 # 3bc13407 + 3bc01f82: b4bfe0ef jal ra,3bc00acc + 3bc01f86: 4405 li s0,1 + 3bc01f88: b5e5 j 3bc01e70 + 3bc01f8a: 02100693 li a3,33 + 3bc01f8e: 04d70263 beq a4,a3,3bc01fd2 + 3bc01f92: 02200693 li a3,34 + 3bc01f96: 02d70263 beq a4,a3,3bc01fba + 3bc01f9a: 4901 li s2,0 + 3bc01f9c: ccb714e3 bne a4,a1,3bc01c64 + 3bc01fa0: fffff797 auipc a5,0xfffff + 3bc01fa4: 7e478793 addi a5,a5,2020 # 3bc01784 + 3bc01fa8: 000a041b sext.w s0,s4 + 3bc01fac: f61c sd a5,40(a2) + 3bc01fae: 4785 li a5,1 + 3bc01fb0: 00011717 auipc a4,0x11 + 3bc01fb4: 44f70aa3 sb a5,1109(a4) # 3bc13405 + 3bc01fb8: b54d j 3bc01e5a + 3bc01fba: 00011717 auipc a4,0x11 + 3bc01fbe: 34e73703 ld a4,846(a4) # 3bc13308 + 3bc01fc2: 00f71623 sh a5,12(a4) + 3bc01fc6: 4785 li a5,1 + 3bc01fc8: 00011717 auipc a4,0x11 + 3bc01fcc: 42f70ea3 sb a5,1085(a4) # 3bc13405 + 3bc01fd0: b999 j 3bc01c26 + 3bc01fd2: 00011597 auipc a1,0x11 + 3bc01fd6: 3365b583 ld a1,822(a1) # 3bc13308 + 3bc01fda: 8652 mv a2,s4 + 3bc01fdc: 0591 addi a1,a1,4 + 3bc01fde: 000a041b sext.w s0,s4 + 3bc01fe2: aebfe0ef jal ra,3bc00acc + 3bc01fe6: b7e1 j 3bc01fae + +000000003bc01fe8 : + 3bc01fe8: 8082 ret + +000000003bc01fea : + 3bc01fea: 00011797 auipc a5,0x11 + 3bc01fee: 89678793 addi a5,a5,-1898 # 3bc12880 + 3bc01ff2: 00009717 auipc a4,0x9 + 3bc01ff6: 4ef73323 sd a5,1254(a4) # 3bc0b4d8 + 3bc01ffa: 00011797 auipc a5,0x11 + 3bc01ffe: c0678793 addi a5,a5,-1018 # 3bc12c00 + 3bc02002: 00009717 auipc a4,0x9 + 3bc02006: 4ef73f23 sd a5,1278(a4) # 3bc0b500 + 3bc0200a: 00011797 auipc a5,0x11 + 3bc0200e: a7678793 addi a5,a5,-1418 # 3bc12a80 + 3bc02012: 00009717 auipc a4,0x9 + 3bc02016: 4cf73b23 sd a5,1238(a4) # 3bc0b4e8 + 3bc0201a: 00011797 auipc a5,0x11 + 3bc0201e: ae678793 addi a5,a5,-1306 # 3bc12b00 + 3bc02022: 00009717 auipc a4,0x9 + 3bc02026: 4cf73723 sd a5,1230(a4) # 3bc0b4f0 + 3bc0202a: 00011797 auipc a5,0x11 + 3bc0202e: b5678793 addi a5,a5,-1194 # 3bc12b80 + 3bc02032: 00009717 auipc a4,0x9 + 3bc02036: 4cf73323 sd a5,1222(a4) # 3bc0b4f8 + 3bc0203a: 00011797 auipc a5,0x11 + 3bc0203e: dc678793 addi a5,a5,-570 # 3bc12e00 + 3bc02042: 00009717 auipc a4,0x9 + 3bc02046: 5cf73723 sd a5,1486(a4) # 3bc0b610 + 3bc0204a: 00011797 auipc a5,0x11 + 3bc0204e: 23678793 addi a5,a5,566 # 3bc13280 + 3bc02052: 00009717 auipc a4,0x9 + 3bc02056: 62f73f23 sd a5,1598(a4) # 3bc0b690 + 3bc0205a: 00010797 auipc a5,0x10 + 3bc0205e: 7a678793 addi a5,a5,1958 # 3bc12800 + 3bc02062: 00009717 auipc a4,0x9 + 3bc02066: 3ef73b23 sd a5,1014(a4) # 3bc0b458 + 3bc0206a: 00011797 auipc a5,0x11 + 3bc0206e: 25678793 addi a5,a5,598 # 3bc132c0 + 3bc02072: 00009717 auipc a4,0x9 + 3bc02076: 62f73323 sd a5,1574(a4) # 3bc0b698 + 3bc0207a: 00011797 auipc a5,0x11 + 3bc0207e: e0678793 addi a5,a5,-506 # 3bc12e80 + 3bc02082: 00009717 auipc a4,0x9 + 3bc02086: 5ef73723 sd a5,1518(a4) # 3bc0b670 + 3bc0208a: 8082 ret + +000000003bc0208c : + 3bc0208c: 1141 addi sp,sp,-16 + 3bc0208e: 00009597 auipc a1,0x9 + 3bc02092: 44a5b583 ld a1,1098(a1) # 3bc0b4d8 + 3bc02096: 00009517 auipc a0,0x9 + 3bc0209a: 8ca50513 addi a0,a0,-1846 # 3bc0a960 <__func__.1+0x1d0> + 3bc0209e: e406 sd ra,8(sp) + 3bc020a0: ab8fe0ef jal ra,3bc00358 + 3bc020a4: 00009597 auipc a1,0x9 + 3bc020a8: 45c5b583 ld a1,1116(a1) # 3bc0b500 + 3bc020ac: 00009517 auipc a0,0x9 + 3bc020b0: 8cc50513 addi a0,a0,-1844 # 3bc0a978 <__func__.1+0x1e8> + 3bc020b4: aa4fe0ef jal ra,3bc00358 + 3bc020b8: 00009597 auipc a1,0x9 + 3bc020bc: 4305b583 ld a1,1072(a1) # 3bc0b4e8 + 3bc020c0: 00009517 auipc a0,0x9 + 3bc020c4: 8d050513 addi a0,a0,-1840 # 3bc0a990 <__func__.1+0x200> + 3bc020c8: a90fe0ef jal ra,3bc00358 + 3bc020cc: 00009597 auipc a1,0x9 + 3bc020d0: 4245b583 ld a1,1060(a1) # 3bc0b4f0 + 3bc020d4: 00009517 auipc a0,0x9 + 3bc020d8: 8d450513 addi a0,a0,-1836 # 3bc0a9a8 <__func__.1+0x218> + 3bc020dc: a7cfe0ef jal ra,3bc00358 + 3bc020e0: 00009597 auipc a1,0x9 + 3bc020e4: 4185b583 ld a1,1048(a1) # 3bc0b4f8 + 3bc020e8: 00009517 auipc a0,0x9 + 3bc020ec: 8d850513 addi a0,a0,-1832 # 3bc0a9c0 <__func__.1+0x230> + 3bc020f0: a68fe0ef jal ra,3bc00358 + 3bc020f4: 00009597 auipc a1,0x9 + 3bc020f8: 51c5b583 ld a1,1308(a1) # 3bc0b610 + 3bc020fc: 00009517 auipc a0,0x9 + 3bc02100: 8dc50513 addi a0,a0,-1828 # 3bc0a9d8 <__func__.1+0x248> + 3bc02104: a54fe0ef jal ra,3bc00358 + 3bc02108: 00009597 auipc a1,0x9 + 3bc0210c: 5885b583 ld a1,1416(a1) # 3bc0b690 + 3bc02110: 00009517 auipc a0,0x9 + 3bc02114: 8e050513 addi a0,a0,-1824 # 3bc0a9f0 <__func__.1+0x260> + 3bc02118: a40fe0ef jal ra,3bc00358 + 3bc0211c: 00009597 auipc a1,0x9 + 3bc02120: 33c5b583 ld a1,828(a1) # 3bc0b458 + 3bc02124: 00009517 auipc a0,0x9 + 3bc02128: 8e450513 addi a0,a0,-1820 # 3bc0aa08 <__func__.1+0x278> + 3bc0212c: a2cfe0ef jal ra,3bc00358 + 3bc02130: 00009597 auipc a1,0x9 + 3bc02134: 5685b583 ld a1,1384(a1) # 3bc0b698 + 3bc02138: 00009517 auipc a0,0x9 + 3bc0213c: 8e850513 addi a0,a0,-1816 # 3bc0aa20 <__func__.1+0x290> + 3bc02140: a18fe0ef jal ra,3bc00358 + 3bc02144: 60a2 ld ra,8(sp) + 3bc02146: 00009597 auipc a1,0x9 + 3bc0214a: 52a5b583 ld a1,1322(a1) # 3bc0b670 + 3bc0214e: 00009517 auipc a0,0x9 + 3bc02152: 8ea50513 addi a0,a0,-1814 # 3bc0aa38 <__func__.1+0x2a8> + 3bc02156: 0141 addi sp,sp,16 + 3bc02158: a00fe06f j 3bc00358 + +000000003bc0215c : + 3bc0215c: 4501 li a0,0 + 3bc0215e: 3020106f j 3bc03460 + +000000003bc02162 : + 3bc02162: 7179 addi sp,sp,-48 + 3bc02164: f022 sd s0,32(sp) + 3bc02166: 00009417 auipc s0,0x9 + 3bc0216a: 45a40413 addi s0,s0,1114 # 3bc0b5c0 + 3bc0216e: 601c ld a5,0(s0) + 3bc02170: 00009597 auipc a1,0x9 + 3bc02174: 8e058593 addi a1,a1,-1824 # 3bc0aa50 <__func__.1+0x2c0> + 3bc02178: 00011517 auipc a0,0x11 + 3bc0217c: 23050513 addi a0,a0,560 # 3bc133a8 + 3bc02180: f406 sd ra,40(sp) + 3bc02182: ec26 sd s1,24(sp) + 3bc02184: e84a sd s2,16(sp) + 3bc02186: 6f84 ld s1,24(a5) + 3bc02188: e44e sd s3,8(sp) + 3bc0218a: ec0ff0ef jal ra,3bc0184a + 3bc0218e: 00011517 auipc a0,0x11 + 3bc02192: 1ca50513 addi a0,a0,458 # 3bc13358 + 3bc02196: 00009597 auipc a1,0x9 + 3bc0219a: 8c258593 addi a1,a1,-1854 # 3bc0aa58 <__func__.1+0x2c8> + 3bc0219e: eacff0ef jal ra,3bc0184a + 3bc021a2: 00009517 auipc a0,0x9 + 3bc021a6: 46e53503 ld a0,1134(a0) # 3bc0b610 + 3bc021aa: 03f57713 andi a4,a0,63 + 3bc021ae: 87aa mv a5,a0 + 3bc021b0: c709 beqz a4,3bc021ba + 3bc021b2: 04000793 li a5,64 + 3bc021b6: 9f99 subw a5,a5,a4 + 3bc021b8: 97aa add a5,a5,a0 + 3bc021ba: 00009997 auipc s3,0x9 + 3bc021be: 31e98993 addi s3,s3,798 # 3bc0b4d8 + 3bc021c2: 00011717 auipc a4,0x11 + 3bc021c6: 16f73723 sd a5,366(a4) # 3bc13330 + 3bc021ca: 0009b783 ld a5,0(s3) + 3bc021ce: 03f7f693 andi a3,a5,63 + 3bc021d2: c689 beqz a3,3bc021dc + 3bc021d4: 04000713 li a4,64 + 3bc021d8: 9f15 subw a4,a4,a3 + 3bc021da: 97ba add a5,a5,a4 + 3bc021dc: 00009917 auipc s2,0x9 + 3bc021e0: 32490913 addi s2,s2,804 # 3bc0b500 + 3bc021e4: 00011717 auipc a4,0x11 + 3bc021e8: 12f73623 sd a5,300(a4) # 3bc13310 + 3bc021ec: 00093783 ld a5,0(s2) + 3bc021f0: 03f7f693 andi a3,a5,63 + 3bc021f4: c689 beqz a3,3bc021fe + 3bc021f6: 04000713 li a4,64 + 3bc021fa: 9f15 subw a4,a4,a3 + 3bc021fc: 97ba add a5,a5,a4 + 3bc021fe: 08000613 li a2,128 + 3bc02202: 4581 li a1,0 + 3bc02204: 00011717 auipc a4,0x11 + 3bc02208: 12f73223 sd a5,292(a4) # 3bc13328 + 3bc0220c: 807fe0ef jal ra,3bc00a12 + 3bc02210: 0009b503 ld a0,0(s3) + 3bc02214: 20000613 li a2,512 + 3bc02218: 4581 li a1,0 + 3bc0221a: ff8fe0ef jal ra,3bc00a12 + 3bc0221e: 00093503 ld a0,0(s2) + 3bc02222: 20000613 li a2,512 + 3bc02226: 4581 li a1,0 + 3bc02228: feafe0ef jal ra,3bc00a12 + 3bc0222c: 709c ld a5,32(s1) + 3bc0222e: 8526 mv a0,s1 + 3bc02230: 6b9c ld a5,16(a5) + 3bc02232: 9782 jalr a5 + 3bc02234: 00011797 auipc a5,0x11 + 3bc02238: 10a7b223 sd a0,260(a5) # 3bc13338 + 3bc0223c: 601c ld a5,0(s0) + 3bc0223e: 53d8 lw a4,36(a5) + 3bc02240: 4791 li a5,4 + 3bc02242: 02e7e263 bltu a5,a4,3bc02266 + 3bc02246: 00009797 auipc a5,0x9 + 3bc0224a: 28a78793 addi a5,a5,650 # 3bc0b4d0 + 3bc0224e: 4731 li a4,12 + 3bc02250: 00e79123 sh a4,2(a5) + 3bc02254: 4705 li a4,1 + 3bc02256: 00e78223 sb a4,4(a5) + 3bc0225a: 20100793 li a5,513 + 3bc0225e: 00009717 auipc a4,0x9 + 3bc02262: 34f71623 sh a5,844(a4) # 3bc0b5aa + 3bc02266: 00009797 auipc a5,0x9 + 3bc0226a: 1f27b783 ld a5,498(a5) # 3bc0b458 + 3bc0226e: 00011717 auipc a4,0x11 + 3bc02272: 08f73d23 sd a5,154(a4) # 3bc13308 + 3bc02276: 000e1737 lui a4,0xe1 + 3bc0227a: c3d8 sw a4,4(a5) + 3bc0227c: 4721 li a4,8 + 3bc0227e: 00079423 sh zero,8(a5) + 3bc02282: 00e78523 sb a4,10(a5) + 3bc02286: 70a2 ld ra,40(sp) + 3bc02288: 7402 ld s0,32(sp) + 3bc0228a: 00079623 sh zero,12(a5) + 3bc0228e: 64e2 ld s1,24(sp) + 3bc02290: 6942 ld s2,16(sp) + 3bc02292: 69a2 ld s3,8(sp) + 3bc02294: 4501 li a0,0 + 3bc02296: 6145 addi sp,sp,48 + 3bc02298: 8082 ret + +000000003bc0229a : + 3bc0229a: 030007b7 lui a5,0x3000 + 3bc0229e: 43c8 lw a0,4(a5) + 3bc022a0: 2495350b extu a0,a0,9,9 + 3bc022a4: 8082 ret + +000000003bc022a6 : + 3bc022a6: 1141 addi sp,sp,-16 + 3bc022a8: e406 sd ra,8(sp) + 3bc022aa: 93ffe0ef jal ra,3bc00be8 + 3bc022ae: 3e800793 li a5,1000 + 3bc022b2: e911 bnez a0,3bc022c6 + 3bc022b4: 0e0007b7 lui a5,0xe000 + 3bc022b8: 639c ld a5,0(a5) + 3bc022ba: 0417b78b extu a5,a5,1,1 + 3bc022be: eb81 bnez a5,3bc022ce + 3bc022c0: 6789 lui a5,0x2 + 3bc022c2: 71078793 addi a5,a5,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc022c6: 60a2 ld ra,8(sp) + 3bc022c8: 853e mv a0,a5 + 3bc022ca: 0141 addi sp,sp,16 + 3bc022cc: 8082 ret + 3bc022ce: 67e1 lui a5,0x18 + 3bc022d0: 69f78793 addi a5,a5,1695 # 1869f <__BSS_SIZE__+0x12a8f> + 3bc022d4: bfcd j 3bc022c6 + +000000003bc022d6 : + 3bc022d6: 7175 addi sp,sp,-144 + 3bc022d8: f0d2 sd s4,96(sp) + 3bc022da: 00011797 auipc a5,0x11 + 3bc022de: 06a7bb23 sd a0,118(a5) # 3bc13350 + 3bc022e2: 00011797 auipc a5,0x11 + 3bc022e6: 0eb7af23 sw a1,254(a5) # 3bc133e0 + 3bc022ea: 00011a17 auipc s4,0x11 + 3bc022ee: 0faa0a13 addi s4,s4,250 # 3bc133e4 + 3bc022f2: e506 sd ra,136(sp) + 3bc022f4: e122 sd s0,128(sp) + 3bc022f6: fca6 sd s1,120(sp) + 3bc022f8: f8ca sd s2,112(sp) + 3bc022fa: f4ce sd s3,104(sp) + 3bc022fc: ecd6 sd s5,88(sp) + 3bc022fe: e8da sd s6,80(sp) + 3bc02300: e4de sd s7,72(sp) + 3bc02302: e0e2 sd s8,64(sp) + 3bc02304: fc66 sd s9,56(sp) + 3bc02306: f86a sd s10,48(sp) + 3bc02308: f46e sd s11,40(sp) + 3bc0230a: 00ca2023 sw a2,0(s4) + 3bc0230e: 0e0007b7 lui a5,0xe000 + 3bc02312: 0007a223 sw zero,4(a5) # e000004 + 3bc02316: f85ff0ef jal ra,3bc0229a + 3bc0231a: e909 bnez a0,3bc0232c + 3bc0231c: 00008517 auipc a0,0x8 + 3bc02320: 74c50513 addi a0,a0,1868 # 3bc0aa68 <__func__.1+0x2d8> + 3bc02324: 834fe0ef jal ra,3bc00358 + 3bc02328: 596d li s2,-5 + 3bc0232a: a111 j 3bc0272e + 3bc0232c: f7bff0ef jal ra,3bc022a6 + 3bc02330: 0005049b sext.w s1,a0 + 3bc02334: 85a6 mv a1,s1 + 3bc02336: 00008517 auipc a0,0x8 + 3bc0233a: 74a50513 addi a0,a0,1866 # 3bc0aa80 <__func__.1+0x2f0> + 3bc0233e: 81afe0ef jal ra,3bc00358 + 3bc02342: 67e1 lui a5,0x18 + 3bc02344: 69e78793 addi a5,a5,1694 # 1869e <__BSS_SIZE__+0x12a8e> + 3bc02348: 0297f463 bgeu a5,s1,3bc02370 + 3bc0234c: 4785 li a5,1 + 3bc0234e: 00008517 auipc a0,0x8 + 3bc02352: 74a50513 addi a0,a0,1866 # 3bc0aa98 <__func__.1+0x308> + 3bc02356: 00011717 auipc a4,0x11 + 3bc0235a: 0af70923 sb a5,178(a4) # 3bc13408 + 3bc0235e: ffbfd0ef jal ra,3bc00358 + 3bc02362: c00037b7 lui a5,0xc0003 + 3bc02366: 03000737 lui a4,0x3000 + 3bc0236a: 078d addi a5,a5,3 + 3bc0236c: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02370: 85a6 mv a1,s1 + 3bc02372: 00008517 auipc a0,0x8 + 3bc02376: 72e50513 addi a0,a0,1838 # 3bc0aaa0 <__func__.1+0x310> + 3bc0237a: fdffd0ef jal ra,3bc00358 + 3bc0237e: 3e800793 li a5,1000 + 3bc02382: 029787bb mulw a5,a5,s1 + 3bc02386: e43e sd a5,8(sp) + 3bc02388: c00037b7 lui a5,0xc0003 + 3bc0238c: 10178793 addi a5,a5,257 # ffffffffc0003101 <__BL2_END__+0xffffffff843efcf1> + 3bc02390: e83e sd a5,16(sp) + 3bc02392: c00017b7 lui a5,0xc0001 + 3bc02396: 0791 addi a5,a5,4 + 3bc02398: ec3e sd a5,24(sp) + 3bc0239a: 00011797 auipc a5,0x11 + 3bc0239e: f607bb23 sd zero,-138(a5) # 3bc13310 + 3bc023a2: 00011797 auipc a5,0x11 + 3bc023a6: f807b323 sd zero,-122(a5) # 3bc13328 + 3bc023aa: 00011797 auipc a5,0x11 + 3bc023ae: f807b323 sd zero,-122(a5) # 3bc13330 + 3bc023b2: 00011797 auipc a5,0x11 + 3bc023b6: f807b723 sd zero,-114(a5) # 3bc13340 + 3bc023ba: 00011797 auipc a5,0x11 + 3bc023be: f807b723 sd zero,-114(a5) # 3bc13348 + 3bc023c2: 00011797 auipc a5,0x11 + 3bc023c6: f407bb23 sd zero,-170(a5) # 3bc13318 + 3bc023ca: 00011797 auipc a5,0x11 + 3bc023ce: f407bb23 sd zero,-170(a5) # 3bc13320 + 3bc023d2: 00011797 auipc a5,0x11 + 3bc023d6: f607b323 sd zero,-154(a5) # 3bc13338 + 3bc023da: 00011797 auipc a5,0x11 + 3bc023de: 020786a3 sb zero,45(a5) # 3bc13407 + 3bc023e2: 00011797 auipc a5,0x11 + 3bc023e6: 02078223 sb zero,36(a5) # 3bc13406 + 3bc023ea: 00011797 auipc a5,0x11 + 3bc023ee: 00078da3 sb zero,27(a5) # 3bc13405 + 3bc023f2: 00011797 auipc a5,0x11 + 3bc023f6: 00078ca3 sb zero,25(a5) # 3bc1340b + 3bc023fa: 00011797 auipc a5,0x11 + 3bc023fe: fe07a723 sw zero,-18(a5) # 3bc133e8 + 3bc02402: 00011797 auipc a5,0x11 + 3bc02406: f007b323 sd zero,-250(a5) # 3bc13308 + 3bc0240a: 00011797 auipc a5,0x11 + 3bc0240e: fe078fa3 sb zero,-1(a5) # 3bc13409 + 3bc02412: bd9ff0ef jal ra,3bc01fea + 3bc02416: c77ff0ef jal ra,3bc0208c + 3bc0241a: 00009417 auipc s0,0x9 + 3bc0241e: 1a640413 addi s0,s0,422 # 3bc0b5c0 + 3bc02422: 00009797 auipc a5,0x9 + 3bc02426: 24e7b783 ld a5,590(a5) # 3bc0b670 + 3bc0242a: e41c sd a5,8(s0) + 3bc0242c: 40000793 li a5,1024 + 3bc02430: c81c sw a5,16(s0) + 3bc02432: 00009517 auipc a0,0x9 + 3bc02436: 19650513 addi a0,a0,406 # 3bc0b5c8 + 3bc0243a: 00009797 auipc a5,0x9 + 3bc0243e: 25e7b783 ld a5,606(a5) # 3bc0b698 + 3bc02442: e43c sd a5,72(s0) + 3bc02444: 6cd000ef jal ra,3bc03310 + 3bc02448: 0005099b sext.w s3,a0 + 3bc0244c: 892a mv s2,a0 + 3bc0244e: 02099063 bnez s3,3bc0246e + 3bc02452: 00009517 auipc a0,0x9 + 3bc02456: 1c650513 addi a0,a0,454 # 3bc0b618 + 3bc0245a: 54f000ef jal ra,3bc031a8 + 3bc0245e: 02055763 bgez a0,3bc0248c + 3bc02462: 00008517 auipc a0,0x8 + 3bc02466: 66650513 addi a0,a0,1638 # 3bc0aac8 <__func__.1+0x338> + 3bc0246a: eeffd0ef jal ra,3bc00358 + 3bc0246e: 85ce mv a1,s3 + 3bc02470: 00008517 auipc a0,0x8 + 3bc02474: 6f050513 addi a0,a0,1776 # 3bc0ab60 <__func__.1+0x3d0> + 3bc02478: ee1fd0ef jal ra,3bc00358 + 3bc0247c: c00037b7 lui a5,0xc0003 + 3bc02480: 03000737 lui a4,0x3000 + 3bc02484: 079d addi a5,a5,7 + 3bc02486: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc0248a: a455 j 3bc0272e + 3bc0248c: 6000 ld s0,0(s0) + 3bc0248e: e411 bnez s0,3bc0249a + 3bc02490: 00008517 auipc a0,0x8 + 3bc02494: 65850513 addi a0,a0,1624 # 3bc0aae8 <__func__.1+0x358> + 3bc02498: bfc9 j 3bc0246a + 3bc0249a: cc9ff0ef jal ra,3bc02162 + 3bc0249e: 4501 li a0,0 + 3bc024a0: d1ffd0ef jal ra,3bc001be + 3bc024a4: 6742 ld a4,16(sp) + 3bc024a6: 00011917 auipc s2,0x11 + 3bc024aa: f4690913 addi s2,s2,-186 # 3bc133ec + 3bc024ae: 00a92023 sw a0,0(s2) + 3bc024b2: 6522 ld a0,8(sp) + 3bc024b4: 030007b7 lui a5,0x3000 + 3bc024b8: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc024bc: cbffd0ef jal ra,3bc0017a + 3bc024c0: 681c ld a5,16(s0) + 3bc024c2: 4585 li a1,1 + 3bc024c4: 8522 mv a0,s0 + 3bc024c6: 779c ld a5,40(a5) + 3bc024c8: 00011997 auipc s3,0x11 + 3bc024cc: e5898993 addi s3,s3,-424 # 3bc13320 + 3bc024d0: 00011b17 auipc s6,0x11 + 3bc024d4: f38b0b13 addi s6,s6,-200 # 3bc13408 + 3bc024d8: 9782 jalr a5 + 3bc024da: 00011a97 auipc s5,0x11 + 3bc024de: f2ba8a93 addi s5,s5,-213 # 3bc13405 + 3bc024e2: 000ac783 lbu a5,0(s5) + 3bc024e6: 18078663 beqz a5,3bc02672 + 3bc024ea: 6762 ld a4,24(sp) + 3bc024ec: 030007b7 lui a5,0x3000 + 3bc024f0: 00043b83 ld s7,0(s0) + 3bc024f4: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc024f8: 4785 li a5,1 + 3bc024fa: 00011717 auipc a4,0x11 + 3bc024fe: f0f708a3 sb a5,-239(a4) # 3bc1340b + 3bc02502: 08200c13 li s8,130 + 3bc02506: 00011c97 auipc s9,0x11 + 3bc0250a: e42c8c93 addi s9,s9,-446 # 3bc13348 + 3bc0250e: 00011d17 auipc s10,0x11 + 3bc02512: e0ad0d13 addi s10,s10,-502 # 3bc13318 + 3bc02516: 00011d97 auipc s11,0x11 + 3bc0251a: e2ad8d93 addi s11,s11,-470 # 3bc13340 + 3bc0251e: 19741b63 bne s0,s7,3bc026b4 + 3bc02522: 02044783 lbu a5,32(s0) + 3bc02526: 470d li a4,3 + 3bc02528: 1ee78063 beq a5,a4,3bc02708 + 3bc0252c: 4715 li a4,5 + 3bc0252e: 1ee78063 beq a5,a4,3bc0270e + 3bc02532: 4709 li a4,2 + 3bc02534: dee79ae3 bne a5,a4,3bc02328 + 3bc02538: 04000793 li a5,64 + 3bc0253c: 0009b503 ld a0,0(s3) + 3bc02540: 04000613 li a2,64 + 3bc02544: 4581 li a1,0 + 3bc02546: 00011717 auipc a4,0x11 + 3bc0254a: eaf72123 sw a5,-350(a4) # 3bc133e8 + 3bc0254e: cc4fe0ef jal ra,3bc00a12 + 3bc02552: 0009b783 ld a5,0(s3) + 3bc02556: 00011717 auipc a4,0x11 + 3bc0255a: dd273703 ld a4,-558(a4) # 3bc13328 + 3bc0255e: 00011b97 auipc s7,0x11 + 3bc02562: e8ab8b93 addi s7,s7,-374 # 3bc133e8 + 3bc02566: eb98 sd a4,16(a5) + 3bc02568: cfd8 sw a4,28(a5) + 3bc0256a: fffff717 auipc a4,0xfffff + 3bc0256e: 33270713 addi a4,a4,818 # 3bc0189c + 3bc02572: f798 sd a4,40(a5) + 3bc02574: 00011c17 auipc s8,0x11 + 3bc02578: da4c0c13 addi s8,s8,-604 # 3bc13318 + 3bc0257c: 000ba703 lw a4,0(s7) + 3bc02580: 000c3503 ld a0,0(s8) + 3bc02584: 04000613 li a2,64 + 3bc02588: cf98 sw a4,24(a5) + 3bc0258a: 4581 li a1,0 + 3bc0258c: c86fe0ef jal ra,3bc00a12 + 3bc02590: 000c3783 ld a5,0(s8) + 3bc02594: 00011717 auipc a4,0x11 + 3bc02598: d7c73703 ld a4,-644(a4) # 3bc13310 + 3bc0259c: 00011517 auipc a0,0x11 + 3bc025a0: dac53503 ld a0,-596(a0) # 3bc13348 + 3bc025a4: eb98 sd a4,16(a5) + 3bc025a6: cfd8 sw a4,28(a5) + 3bc025a8: fffff717 auipc a4,0xfffff + 3bc025ac: 5ae70713 addi a4,a4,1454 # 3bc01b56 + 3bc025b0: f798 sd a4,40(a5) + 3bc025b2: 000ba703 lw a4,0(s7) + 3bc025b6: 0009b583 ld a1,0(s3) + 3bc025ba: 4b85 li s7,1 + 3bc025bc: cf98 sw a4,24(a5) + 3bc025be: 711c ld a5,32(a0) + 3bc025c0: 739c ld a5,32(a5) + 3bc025c2: 9782 jalr a5 + 3bc025c4: 500c lw a1,32(s0) + 3bc025c6: 00008517 auipc a0,0x8 + 3bc025ca: 55a50513 addi a0,a0,1370 # 3bc0ab20 <__func__.1+0x390> + 3bc025ce: d8bfd0ef jal ra,3bc00358 + 3bc025d2: 4501 li a0,0 + 3bc025d4: bebfd0ef jal ra,3bc001be + 3bc025d8: 00a92023 sw a0,0(s2) + 3bc025dc: b81ff0ef jal ra,3bc0215c + 3bc025e0: 000ac783 lbu a5,0(s5) + 3bc025e4: ee078be3 beqz a5,3bc024da + 3bc025e8: 00011797 auipc a5,0x11 + 3bc025ec: e1e78793 addi a5,a5,-482 # 3bc13406 + 3bc025f0: 0007c783 lbu a5,0(a5) + 3bc025f4: eb95 bnez a5,3bc02628 + 3bc025f6: 000b4783 lbu a5,0(s6) + 3bc025fa: 10079d63 bnez a5,3bc02714 + 3bc025fe: 00092503 lw a0,0(s2) + 3bc02602: bbdfd0ef jal ra,3bc001be + 3bc02606: 2501 sext.w a0,a0 + 3bc02608: fca4fae3 bgeu s1,a0,3bc025dc + 3bc0260c: 85a6 mv a1,s1 + 3bc0260e: 00008517 auipc a0,0x8 + 3bc02612: 53250513 addi a0,a0,1330 # 3bc0ab40 <__func__.1+0x3b0> + 3bc02616: d43fd0ef jal ra,3bc00358 + 3bc0261a: c00037b7 lui a5,0xc0003 + 3bc0261e: 03000737 lui a4,0x3000 + 3bc02622: 0795 addi a5,a5,5 + 3bc02624: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02628: 00008517 auipc a0,0x8 + 3bc0262c: 53050513 addi a0,a0,1328 # 3bc0ab58 <__func__.1+0x3c8> + 3bc02630: d29fd0ef jal ra,3bc00358 + 3bc02634: c00037b7 lui a5,0xc0003 + 3bc02638: 03000737 lui a4,0x3000 + 3bc0263c: 0799 addi a5,a5,6 + 3bc0263e: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02642: 681c ld a5,16(s0) + 3bc02644: 4581 li a1,0 + 3bc02646: 8522 mv a0,s0 + 3bc02648: 779c ld a5,40(a5) + 3bc0264a: 9782 jalr a5 + 3bc0264c: 00009517 auipc a0,0x9 + 3bc02650: fcc50513 addi a0,a0,-52 # 3bc0b618 + 3bc02654: 380000ef jal ra,3bc029d4 + 3bc02658: 0e0007b7 lui a5,0xe000 + 3bc0265c: 0047a903 lw s2,4(a5) # e000004 + 3bc02660: 4d4757b7 lui a5,0x4d475 + 3bc02664: e3178793 addi a5,a5,-463 # 4d474e31 <__BL2_END__+0x11861a21> + 3bc02668: 40f90933 sub s2,s2,a5 + 3bc0266c: 00193913 seqz s2,s2 + 3bc02670: a87d j 3bc0272e + 3bc02672: aebff0ef jal ra,3bc0215c + 3bc02676: 00092503 lw a0,0(s2) + 3bc0267a: b45fd0ef jal ra,3bc001be + 3bc0267e: 2501 sext.w a0,a0 + 3bc02680: 02a4f363 bgeu s1,a0,3bc026a6 + 3bc02684: 000b4783 lbu a5,0(s6) + 3bc02688: ef99 bnez a5,3bc026a6 + 3bc0268a: 00008517 auipc a0,0x8 + 3bc0268e: 48650513 addi a0,a0,1158 # 3bc0ab10 <__func__.1+0x380> + 3bc02692: cc7fd0ef jal ra,3bc00358 + 3bc02696: c00037b7 lui a5,0xc0003 + 3bc0269a: 03000737 lui a4,0x3000 + 3bc0269e: 0791 addi a5,a5,4 + 3bc026a0: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc026a4: b151 j 3bc02328 + 3bc026a6: 00011797 auipc a5,0x11 + 3bc026aa: d637c783 lbu a5,-669(a5) # 3bc13409 + 3bc026ae: e20786e3 beqz a5,3bc024da + 3bc026b2: b1e5 j 3bc0239a + 3bc026b4: 030bb703 ld a4,48(s7) + 3bc026b8: c305 beqz a4,3bc026d8 + 3bc026ba: 00274703 lbu a4,2(a4) + 3bc026be: 08100793 li a5,129 + 3bc026c2: 00f71e63 bne a4,a5,3bc026de + 3bc026c6: 020bb703 ld a4,32(s7) + 3bc026ca: 855e mv a0,s7 + 3bc026cc: 6b18 ld a4,16(a4) + 3bc026ce: 9702 jalr a4 + 3bc026d0: 00ad3023 sd a0,0(s10) + 3bc026d4: 017db023 sd s7,0(s11) + 3bc026d8: 000bbb83 ld s7,0(s7) + 3bc026dc: b589 j 3bc0251e + 3bc026de: 4785 li a5,1 + 3bc026e0: 00f71c63 bne a4,a5,3bc026f8 + 3bc026e4: 020bb703 ld a4,32(s7) + 3bc026e8: 855e mv a0,s7 + 3bc026ea: 6b18 ld a4,16(a4) + 3bc026ec: 9702 jalr a4 + 3bc026ee: 00a9b023 sd a0,0(s3) + 3bc026f2: 017cb023 sd s7,0(s9) + 3bc026f6: b7cd j 3bc026d8 + 3bc026f8: ff8710e3 bne a4,s8,3bc026d8 + 3bc026fc: 020bb703 ld a4,32(s7) + 3bc02700: 855e mv a0,s7 + 3bc02702: 6b18 ld a4,16(a4) + 3bc02704: 9702 jalr a4 + 3bc02706: bfc9 j 3bc026d8 + 3bc02708: 20000793 li a5,512 + 3bc0270c: bd05 j 3bc0253c + 3bc0270e: 40000793 li a5,1024 + 3bc02712: b52d j 3bc0253c + 3bc02714: ed7794e3 bne a5,s7,3bc025dc + 3bc02718: 000a2783 lw a5,0(s4) + 3bc0271c: ec0790e3 bnez a5,3bc025dc + 3bc02720: 00008517 auipc a0,0x8 + 3bc02724: 43050513 addi a0,a0,1072 # 3bc0ab50 <__func__.1+0x3c0> + 3bc02728: c31fd0ef jal ra,3bc00358 + 3bc0272c: 4905 li s2,1 + 3bc0272e: 60aa ld ra,136(sp) + 3bc02730: 640a ld s0,128(sp) + 3bc02732: 74e6 ld s1,120(sp) + 3bc02734: 79a6 ld s3,104(sp) + 3bc02736: 7a06 ld s4,96(sp) + 3bc02738: 6ae6 ld s5,88(sp) + 3bc0273a: 6b46 ld s6,80(sp) + 3bc0273c: 6ba6 ld s7,72(sp) + 3bc0273e: 6c06 ld s8,64(sp) + 3bc02740: 7ce2 ld s9,56(sp) + 3bc02742: 7d42 ld s10,48(sp) + 3bc02744: 7da2 ld s11,40(sp) + 3bc02746: 854a mv a0,s2 + 3bc02748: 7946 ld s2,112(sp) + 3bc0274a: 6149 addi sp,sp,144 + 3bc0274c: 8082 ret + +000000003bc0274e : + 3bc0274e: c909 beqz a0,3bc02760 + 3bc02750: 07150783 lb a5,113(a0) + 3bc02754: 4501 li a0,0 + 3bc02756: 0007d663 bgez a5,3bc02762 + 3bc0275a: fd300513 li a0,-45 + 3bc0275e: 8082 ret + 3bc02760: 5535 li a0,-19 + 3bc02762: 8082 ret + +000000003bc02764 : + 3bc02764: 61b8 ld a4,64(a1) + 3bc02766: 7179 addi sp,sp,-48 + 3bc02768: f022 sd s0,32(sp) + 3bc0276a: ec26 sd s1,24(sp) + 3bc0276c: 00011417 auipc s0,0x11 + 3bc02770: c5443403 ld s0,-940(s0) # 3bc133c0 + 3bc02774: f406 sd ra,40(sp) + 3bc02776: 04058793 addi a5,a1,64 + 3bc0277a: 7c04 ld s1,56(s0) + 3bc0277c: 00f70a63 beq a4,a5,3bc02790 + 3bc02780: 00008517 auipc a0,0x8 + 3bc02784: 42850513 addi a0,a0,1064 # 3bc0aba8 <__func__.5+0x8> + 3bc02788: e42e sd a1,8(sp) + 3bc0278a: bcffd0ef jal ra,3bc00358 + 3bc0278e: 65a2 ld a1,8(sp) + 3bc02790: 8522 mv a0,s0 + 3bc02792: 7402 ld s0,32(sp) + 3bc02794: 68bc ld a5,80(s1) + 3bc02796: 70a2 ld ra,40(sp) + 3bc02798: 64e2 ld s1,24(sp) + 3bc0279a: 6145 addi sp,sp,48 + 3bc0279c: 8782 jr a5 + +000000003bc0279e : + 3bc0279e: 7179 addi sp,sp,-48 + 3bc027a0: ec26 sd s1,24(sp) + 3bc027a2: 00011497 auipc s1,0x11 + 3bc027a6: c1648493 addi s1,s1,-1002 # 3bc133b8 + 3bc027aa: 6088 ld a0,0(s1) + 3bc027ac: f022 sd s0,32(sp) + 3bc027ae: 6405 lui s0,0x1 + 3bc027b0: 80440413 addi s0,s0,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc027b4: 9522 add a0,a0,s0 + 3bc027b6: e42e sd a1,8(sp) + 3bc027b8: f406 sd ra,40(sp) + 3bc027ba: f85fe0ef jal ra,3bc0173e + 3bc027be: 65a2 ld a1,8(sp) + 3bc027c0: 609c ld a5,0(s1) + 3bc027c2: 2501 sext.w a0,a0 + 3bc027c4: ed89 bnez a1,3bc027de + 3bc027c6: 008785b3 add a1,a5,s0 + 3bc027ca: 00256513 ori a0,a0,2 + 3bc027ce: f77fe0ef jal ra,3bc01744 + 3bc027d2: 70a2 ld ra,40(sp) + 3bc027d4: 7402 ld s0,32(sp) + 3bc027d6: 64e2 ld s1,24(sp) + 3bc027d8: 4501 li a0,0 + 3bc027da: 6145 addi sp,sp,48 + 3bc027dc: 8082 ret + 3bc027de: 008785b3 add a1,a5,s0 + 3bc027e2: 9975 andi a0,a0,-3 + 3bc027e4: b7ed j 3bc027ce + +000000003bc027e6 : + 3bc027e6: 00011517 auipc a0,0x11 + 3bc027ea: bda53503 ld a0,-1062(a0) # 3bc133c0 + 3bc027ee: 7d1c ld a5,56(a0) + 3bc027f0: 1141 addi sp,sp,-16 + 3bc027f2: e022 sd s0,0(sp) + 3bc027f4: 67bc ld a5,72(a5) + 3bc027f6: e406 sd ra,8(sp) + 3bc027f8: 05000593 li a1,80 + 3bc027fc: 9782 jalr a5 + 3bc027fe: 842a mv s0,a0 + 3bc02800: c911 beqz a0,3bc02814 + 3bc02802: 05000613 li a2,80 + 3bc02806: 4581 li a1,0 + 3bc02808: a0afe0ef jal ra,3bc00a12 + 3bc0280c: 04040793 addi a5,s0,64 + 3bc02810: e03c sd a5,64(s0) + 3bc02812: e43c sd a5,72(s0) + 3bc02814: 60a2 ld ra,8(sp) + 3bc02816: 8522 mv a0,s0 + 3bc02818: 6402 ld s0,0(sp) + 3bc0281a: 0141 addi sp,sp,16 + 3bc0281c: 8082 ret + +000000003bc0281e : + 3bc0281e: cd51 beqz a0,3bc028ba + 3bc02820: 1141 addi sp,sp,-16 + 3bc02822: e022 sd s0,0(sp) + 3bc02824: e406 sd ra,8(sp) + 3bc02826: 842a mv s0,a0 + 3bc02828: 5529 li a0,-22 + 3bc0282a: c5c1 beqz a1,3bc028b2 + 3bc0282c: 603c ld a5,64(s0) + 3bc0282e: e3d1 bnez a5,3bc028b2 + 3bc02830: 6c18 ld a4,24(s0) + 3bc02832: 00008797 auipc a5,0x8 + 3bc02836: 62e78793 addi a5,a5,1582 # 3bc0ae60 + 3bc0283a: 06f70c63 beq a4,a5,3bc028b2 + 3bc0283e: 0015c703 lbu a4,1(a1) + 3bc02842: 4795 li a5,5 + 3bc02844: 06f71763 bne a4,a5,3bc028b2 + 3bc02848: 07144703 lbu a4,113(s0) + 3bc0284c: 0025c783 lbu a5,2(a1) + 3bc02850: 06f71163 bne a4,a5,3bc028b2 + 3bc02854: 0045d783 lhu a5,4(a1) + 3bc02858: 02845703 lhu a4,40(s0) + 3bc0285c: 04f76b63 bltu a4,a5,3bc028b2 + 3bc02860: 07244683 lbu a3,114(s0) + 3bc02864: 0035c703 lbu a4,3(a1) + 3bc02868: 00e68863 beq a3,a4,3bc02878 + 3bc0286c: 4609 li a2,2 + 3bc0286e: 00c68563 beq a3,a2,3bc02878 + 3bc02872: 468d li a3,3 + 3bc02874: 02d71f63 bne a4,a3,3bc028b2 + 3bc02878: fde00513 li a0,-34 + 3bc0287c: cb9d beqz a5,3bc028b2 + 3bc0287e: 7c18 ld a4,56(s0) + 3bc02880: fc600513 li a0,-58 + 3bc02884: 7f14 ld a3,56(a4) + 3bc02886: c695 beqz a3,3bc028b2 + 3bc02888: 5318 lw a4,32(a4) + 3bc0288a: c705 beqz a4,3bc028b2 + 3bc0288c: 02f41423 sh a5,40(s0) + 3bc02890: f80c sd a1,48(s0) + 3bc02892: e02c sd a1,64(s0) + 3bc02894: 8522 mv a0,s0 + 3bc02896: 06040823 sb zero,112(s0) + 3bc0289a: 04043c23 sd zero,88(s0) + 3bc0289e: 35e010ef jal ra,3bc03bfc + 3bc028a2: 4581 li a1,0 + 3bc028a4: 8522 mv a0,s0 + 3bc028a6: 396010ef jal ra,3bc03c3c + 3bc028aa: 8522 mv a0,s0 + 3bc028ac: 3f2010ef jal ra,3bc03c9e + 3bc028b0: 4501 li a0,0 + 3bc028b2: 60a2 ld ra,8(sp) + 3bc028b4: 6402 ld s0,0(sp) + 3bc028b6: 0141 addi sp,sp,16 + 3bc028b8: 8082 ret + 3bc028ba: 5529 li a0,-22 + 3bc028bc: 8082 ret + +000000003bc028be : + 3bc028be: 8082 ret + +000000003bc028c0 : + 3bc028c0: 8082 ret + +000000003bc028c2 : + 3bc028c2: 00008517 auipc a0,0x8 + 3bc028c6: 59e50513 addi a0,a0,1438 # 3bc0ae60 + 3bc028ca: 8082 ret + +000000003bc028cc : + 3bc028cc: 6d1c ld a5,24(a0) + 3bc028ce: f8a5550b sdd a0,a0,(a0),0,4 + 3bc028d2: 29850613 addi a2,a0,664 + 3bc028d6: f8f7d78b sdd a5,a5,(a5),0,4 + 3bc028da: 04052423 sw zero,72(a0) + 3bc028de: 09850793 addi a5,a0,152 + 3bc028e2: fe07bc23 sd zero,-8(a5) + 3bc028e6: 02078423 sb zero,40(a5) + 3bc028ea: f8f7d78b sdd a5,a5,(a5),0,4 + 3bc028ee: 0007b823 sd zero,16(a5) + 3bc028f2: 08078713 addi a4,a5,128 + 3bc028f6: 00c71363 bne a4,a2,3bc028fc + 3bc028fa: 8082 ret + 3bc028fc: 6514 ld a3,8(a0) + 3bc028fe: 03878793 addi a5,a5,56 + 3bc02902: e51c sd a5,8(a0) + 3bc02904: faa73c23 sd a0,-72(a4) + 3bc02908: fcd73023 sd a3,-64(a4) + 3bc0290c: e29c sd a5,0(a3) + 3bc0290e: 87ba mv a5,a4 + 3bc02910: bfc9 j 3bc028e2 + +000000003bc02912 : + 3bc02912: 65b8 ld a4,72(a1) + 3bc02914: 61b4 ld a3,64(a1) + 3bc02916: 1101 addi sp,sp,-32 + 3bc02918: ec06 sd ra,24(sp) + 3bc0291a: e822 sd s0,16(sp) + 3bc0291c: 07054403 lbu s0,112(a0) + 3bc02920: e698 sd a4,8(a3) + 3bc02922: e314 sd a3,0(a4) + 3bc02924: 5d98 lw a4,56(a1) + 3bc02926: 04058793 addi a5,a1,64 + 3bc0292a: e1bc sd a5,64(a1) + 3bc0292c: e5bc sd a5,72(a1) + 3bc0292e: fdc00793 li a5,-36 + 3bc02932: 00f71363 bne a4,a5,3bc02938 + 3bc02936: dd90 sw a2,56(a1) + 3bc02938: 4785 li a5,1 + 3bc0293a: 06f50823 sb a5,112(a0) + 3bc0293e: 759c ld a5,40(a1) + 3bc02940: e42a sd a0,8(sp) + 3bc02942: 9782 jalr a5 + 3bc02944: 6522 ld a0,8(sp) + 3bc02946: 06850823 sb s0,112(a0) + 3bc0294a: 60e2 ld ra,24(sp) + 3bc0294c: 6442 ld s0,16(sp) + 3bc0294e: 6105 addi sp,sp,32 + 3bc02950: 8082 ret + +000000003bc02952 : + 3bc02952: c539 beqz a0,3bc029a0 + 3bc02954: 6d14 ld a3,24(a0) + 3bc02956: 00008797 auipc a5,0x8 + 3bc0295a: 50a78793 addi a5,a5,1290 # 3bc0ae60 + 3bc0295e: 5729 li a4,-22 + 3bc02960: 04f68163 beq a3,a5,3bc029a2 + 3bc02964: 872a mv a4,a0 + 3bc02966: 6e97478b ldib a5,(a4),9,3 + 3bc0296a: fc078793 addi a5,a5,-64 + 3bc0296e: 86be mv a3,a5 + 3bc02970: 6e86c60b ldib a2,(a3),8,3 + 3bc02974: 02e69163 bne a3,a4,3bc02996 + 3bc02978: 5729 li a4,-22 + 3bc0297a: 02f59463 bne a1,a5,3bc029a2 + 3bc0297e: 1141 addi sp,sp,-16 + 3bc02980: fca00613 li a2,-54 + 3bc02984: 85be mv a1,a5 + 3bc02986: e406 sd ra,8(sp) + 3bc02988: f8bff0ef jal ra,3bc02912 + 3bc0298c: 60a2 ld ra,8(sp) + 3bc0298e: 4701 li a4,0 + 3bc02990: 853a mv a0,a4 + 3bc02992: 0141 addi sp,sp,16 + 3bc02994: 8082 ret + 3bc02996: fef584e3 beq a1,a5,3bc0297e + 3bc0299a: fc060793 addi a5,a2,-64 + 3bc0299e: bfc1 j 3bc0296e + 3bc029a0: 5729 li a4,-22 + 3bc029a2: 853a mv a0,a4 + 3bc029a4: 8082 ret + +000000003bc029a6 : + 3bc029a6: 7179 addi sp,sp,-48 + 3bc029a8: f022 sd s0,32(sp) + 3bc029aa: ec26 sd s1,24(sp) + 3bc029ac: f406 sd ra,40(sp) + 3bc029ae: 84ae mv s1,a1 + 3bc029b0: 04850413 addi s0,a0,72 + 3bc029b4: 652c ld a1,72(a0) + 3bc029b6: 00859763 bne a1,s0,3bc029c4 + 3bc029ba: 70a2 ld ra,40(sp) + 3bc029bc: 7402 ld s0,32(sp) + 3bc029be: 64e2 ld s1,24(sp) + 3bc029c0: 6145 addi sp,sp,48 + 3bc029c2: 8082 ret + 3bc029c4: 8626 mv a2,s1 + 3bc029c6: fc058593 addi a1,a1,-64 + 3bc029ca: e42a sd a0,8(sp) + 3bc029cc: f47ff0ef jal ra,3bc02912 + 3bc029d0: 6522 ld a0,8(sp) + 3bc029d2: b7cd j 3bc029b4 + +000000003bc029d4 : + 3bc029d4: 7139 addi sp,sp,-64 + 3bc029d6: f822 sd s0,48(sp) + 3bc029d8: fc06 sd ra,56(sp) + 3bc029da: f426 sd s1,40(sp) + 3bc029dc: f04a sd s2,32(sp) + 3bc029de: ec4e sd s3,24(sp) + 3bc029e0: e852 sd s4,16(sp) + 3bc029e2: e456 sd s5,8(sp) + 3bc029e4: 00011417 auipc s0,0x11 + 3bc029e8: 9dc43403 ld s0,-1572(s0) # 3bc133c0 + 3bc029ec: cc3d beqz s0,3bc02a6a + 3bc029ee: 84aa mv s1,a0 + 3bc029f0: 5529 li a0,-22 + 3bc029f2: c0bd beqz s1,3bc02a58 + 3bc029f4: 7c18 ld a4,56(s0) + 3bc029f6: 06971163 bne a4,s1,3bc02a58 + 3bc029fa: 5018 lw a4,32(s0) + 3bc029fc: 02043c23 sd zero,56(s0) + 3bc02a00: 89a6 mv s3,s1 + 3bc02a02: e311 bnez a4,3bc02a06 + 3bc02a04: 4981 li s3,0 + 3bc02a06: 02042023 sw zero,32(s0) + 3bc02a0a: 05040913 addi s2,s0,80 + 3bc02a0e: 25040a13 addi s4,s0,592 + 3bc02a12: 4a85 li s5,1 + 3bc02a14: 07590823 sb s5,112(s2) + 3bc02a18: 854a mv a0,s2 + 3bc02a1a: fc600593 li a1,-58 + 3bc02a1e: 08090913 addi s2,s2,128 + 3bc02a22: f85ff0ef jal ra,3bc029a6 + 3bc02a26: ff4917e3 bne s2,s4,3bc02a14 + 3bc02a2a: 00098663 beqz s3,3bc02a36 + 3bc02a2e: 0289b783 ld a5,40(s3) + 3bc02a32: 8522 mv a0,s0 + 3bc02a34: 9782 jalr a5 + 3bc02a36: 8522 mv a0,s0 + 3bc02a38: e95ff0ef jal ra,3bc028cc + 3bc02a3c: 6c9c ld a5,24(s1) + 3bc02a3e: 8522 mv a0,s0 + 3bc02a40: 9782 jalr a5 + 3bc02a42: 8522 mv a0,s0 + 3bc02a44: 4581 li a1,0 + 3bc02a46: 106010ef jal ra,3bc03b4c + 3bc02a4a: 4501 li a0,0 + 3bc02a4c: 04042423 sw zero,72(s0) + 3bc02a50: 02042023 sw zero,32(s0) + 3bc02a54: 24040823 sb zero,592(s0) + 3bc02a58: 70e2 ld ra,56(sp) + 3bc02a5a: 7442 ld s0,48(sp) + 3bc02a5c: 74a2 ld s1,40(sp) + 3bc02a5e: 7902 ld s2,32(sp) + 3bc02a60: 69e2 ld s3,24(sp) + 3bc02a62: 6a42 ld s4,16(sp) + 3bc02a64: 6aa2 ld s5,8(sp) + 3bc02a66: 6121 addi sp,sp,64 + 3bc02a68: 8082 ret + 3bc02a6a: 5535 li a0,-19 + 3bc02a6c: b7f5 j 3bc02a58 + +000000003bc02a6e : + 3bc02a6e: 1101 addi sp,sp,-32 + 3bc02a70: e822 sd s0,16(sp) + 3bc02a72: e426 sd s1,8(sp) + 3bc02a74: ec06 sd ra,24(sp) + 3bc02a76: 842e mv s0,a1 + 3bc02a78: 84aa mv s1,a0 + 3bc02a7a: cc5fe0ef jal ra,3bc0173e + 3bc02a7e: 2501 sext.w a0,a0 + 3bc02a80: 8d41 or a0,a0,s0 + 3bc02a82: 6442 ld s0,16(sp) + 3bc02a84: 60e2 ld ra,24(sp) + 3bc02a86: 85a6 mv a1,s1 + 3bc02a88: 64a2 ld s1,8(sp) + 3bc02a8a: 6105 addi sp,sp,32 + 3bc02a8c: cb9fe06f j 3bc01744 + +000000003bc02a90 : + 3bc02a90: 1101 addi sp,sp,-32 + 3bc02a92: e822 sd s0,16(sp) + 3bc02a94: ec06 sd ra,24(sp) + 3bc02a96: 842a mv s0,a0 + 3bc02a98: e42e sd a1,8(sp) + 3bc02a9a: ca5fe0ef jal ra,3bc0173e + 3bc02a9e: 65a2 ld a1,8(sp) + 3bc02aa0: 60e2 ld ra,24(sp) + 3bc02aa2: 2501 sext.w a0,a0 + 3bc02aa4: fff5c793 not a5,a1 + 3bc02aa8: 85a2 mv a1,s0 + 3bc02aaa: 6442 ld s0,16(sp) + 3bc02aac: 8d7d and a0,a0,a5 + 3bc02aae: 6105 addi sp,sp,32 + 3bc02ab0: c95fe06f j 3bc01744 + +000000003bc02ab4 : + 3bc02ab4: 1101 addi sp,sp,-32 + 3bc02ab6: e426 sd s1,8(sp) + 3bc02ab8: 00011497 auipc s1,0x11 + 3bc02abc: 90048493 addi s1,s1,-1792 # 3bc133b8 + 3bc02ac0: 6088 ld a0,0(s1) + 3bc02ac2: e822 sd s0,16(sp) + 3bc02ac4: 6405 lui s0,0x1 + 3bc02ac6: 80440413 addi s0,s0,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02aca: 4585 li a1,1 + 3bc02acc: 9522 add a0,a0,s0 + 3bc02ace: ec06 sd ra,24(sp) + 3bc02ad0: f9fff0ef jal ra,3bc02a6e + 3bc02ad4: 4529 li a0,10 + 3bc02ad6: edefd0ef jal ra,3bc001b4 + 3bc02ada: 6088 ld a0,0(s1) + 3bc02adc: 4585 li a1,1 + 3bc02ade: 9522 add a0,a0,s0 + 3bc02ae0: fb1ff0ef jal ra,3bc02a90 + 3bc02ae4: 60e2 ld ra,24(sp) + 3bc02ae6: 6442 ld s0,16(sp) + 3bc02ae8: 64a2 ld s1,8(sp) + 3bc02aea: 4501 li a0,0 + 3bc02aec: 6105 addi sp,sp,32 + 3bc02aee: 8082 ret + +000000003bc02af0 : + 3bc02af0: 7179 addi sp,sp,-48 + 3bc02af2: f022 sd s0,32(sp) + 3bc02af4: ec26 sd s1,24(sp) + 3bc02af6: e84a sd s2,16(sp) + 3bc02af8: e44e sd s3,8(sp) + 3bc02afa: f406 sd ra,40(sp) + 3bc02afc: 892a mv s2,a0 + 3bc02afe: 89ae mv s3,a1 + 3bc02b00: 84b2 mv s1,a2 + 3bc02b02: 4401 li s0,0 + 3bc02b04: 00941b63 bne s0,s1,3bc02b1a + 3bc02b08: fc400513 li a0,-60 + 3bc02b0c: 70a2 ld ra,40(sp) + 3bc02b0e: 7402 ld s0,32(sp) + 3bc02b10: 64e2 ld s1,24(sp) + 3bc02b12: 6942 ld s2,16(sp) + 3bc02b14: 69a2 ld s3,8(sp) + 3bc02b16: 6145 addi sp,sp,48 + 3bc02b18: 8082 ret + 3bc02b1a: 854a mv a0,s2 + 3bc02b1c: c23fe0ef jal ra,3bc0173e + 3bc02b20: 2501 sext.w a0,a0 + 3bc02b22: 01357533 and a0,a0,s3 + 3bc02b26: e511 bnez a0,3bc02b32 + 3bc02b28: 4505 li a0,1 + 3bc02b2a: e60fd0ef jal ra,3bc0018a + 3bc02b2e: 2405 addiw s0,s0,1 + 3bc02b30: bfd1 j 3bc02b04 + 3bc02b32: 4501 li a0,0 + 3bc02b34: bfe1 j 3bc02b0c + +000000003bc02b36 : + 3bc02b36: 1101 addi sp,sp,-32 + 3bc02b38: e426 sd s1,8(sp) + 3bc02b3a: 00011497 auipc s1,0x11 + 3bc02b3e: 87e48493 addi s1,s1,-1922 # 3bc133b8 + 3bc02b42: e822 sd s0,16(sp) + 3bc02b44: 842a mv s0,a0 + 3bc02b46: 6088 ld a0,0(s1) + 3bc02b48: 6609 lui a2,0x2 + 3bc02b4a: 71060613 addi a2,a2,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc02b4e: 800005b7 lui a1,0x80000 + 3bc02b52: 0541 addi a0,a0,16 + 3bc02b54: ec06 sd ra,24(sp) + 3bc02b56: f9bff0ef jal ra,3bc02af0 + 3bc02b5a: c919 beqz a0,3bc02b70 + 3bc02b5c: 00008597 auipc a1,0x8 + 3bc02b60: 27c58593 addi a1,a1,636 # 3bc0add8 <__func__.3> + 3bc02b64: 00008517 auipc a0,0x8 + 3bc02b68: 06c50513 addi a0,a0,108 # 3bc0abd0 <__func__.5+0x30> + 3bc02b6c: fecfd0ef jal ra,3bc00358 + 3bc02b70: 608c ld a1,0(s1) + 3bc02b72: 0064151b slliw a0,s0,0x6 + 3bc02b76: 02056513 ori a0,a0,32 + 3bc02b7a: 05c1 addi a1,a1,16 + 3bc02b7c: 2501 sext.w a0,a0 + 3bc02b7e: bc7fe0ef jal ra,3bc01744 + 3bc02b82: 06400413 li s0,100 + 3bc02b86: 6088 ld a0,0(s1) + 3bc02b88: 0541 addi a0,a0,16 + 3bc02b8a: bb5fe0ef jal ra,3bc0173e + 3bc02b8e: 0005061b sext.w a2,a0 + 3bc02b92: 02057513 andi a0,a0,32 + 3bc02b96: cd09 beqz a0,3bc02bb0 + 3bc02b98: 347d addiw s0,s0,-1 + 3bc02b9a: e015 bnez s0,3bc02bbe + 3bc02b9c: 00008597 auipc a1,0x8 + 3bc02ba0: 23c58593 addi a1,a1,572 # 3bc0add8 <__func__.3> + 3bc02ba4: 00008517 auipc a0,0x8 + 3bc02ba8: 04c50513 addi a0,a0,76 # 3bc0abf0 <__func__.5+0x50> + 3bc02bac: facfd0ef jal ra,3bc00358 + 3bc02bb0: 6442 ld s0,16(sp) + 3bc02bb2: 60e2 ld ra,24(sp) + 3bc02bb4: 64a2 ld s1,8(sp) + 3bc02bb6: 4505 li a0,1 + 3bc02bb8: 6105 addi sp,sp,32 + 3bc02bba: dd0fd06f j 3bc0018a + 3bc02bbe: 4505 li a0,1 + 3bc02bc0: dcafd0ef jal ra,3bc0018a + 3bc02bc4: b7c9 j 3bc02b86 + +000000003bc02bc6 : + 3bc02bc6: 1101 addi sp,sp,-32 + 3bc02bc8: e426 sd s1,8(sp) + 3bc02bca: e04a sd s2,0(sp) + 3bc02bcc: ec06 sd ra,24(sp) + 3bc02bce: e822 sd s0,16(sp) + 3bc02bd0: 07154403 lbu s0,113(a0) + 3bc02bd4: 84aa mv s1,a0 + 3bc02bd6: 60000913 li s2,1536 + 3bc02bda: 883d andi s0,s0,15 + 3bc02bdc: e019 bnez s0,3bc02be2 + 3bc02bde: 10000913 li s2,256 + 3bc02be2: 8526 mv a0,s1 + 3bc02be4: dc3ff0ef jal ra,3bc029a6 + 3bc02be8: 6505 lui a0,0x1 + 3bc02bea: 91850513 addi a0,a0,-1768 # 918 <__BSS_SIZE__-0x52f8> + 3bc02bee: 0416 slli s0,s0,0x5 + 3bc02bf0: 942a add s0,s0,a0 + 3bc02bf2: 00010517 auipc a0,0x10 + 3bc02bf6: 7c653503 ld a0,1990(a0) # 3bc133b8 + 3bc02bfa: 9522 add a0,a0,s0 + 3bc02bfc: b43fe0ef jal ra,3bc0173e + 3bc02c00: 3c05350b extu a0,a0,15,0 + 3bc02c04: 050a slli a0,a0,0x2 + 3bc02c06: 01257963 bgeu a0,s2,3bc02c18 + 3bc02c0a: 6442 ld s0,16(sp) + 3bc02c0c: 5ca8 lw a0,120(s1) + 3bc02c0e: 60e2 ld ra,24(sp) + 3bc02c10: 64a2 ld s1,8(sp) + 3bc02c12: 6902 ld s2,0(sp) + 3bc02c14: 6105 addi sp,sp,32 + 3bc02c16: b705 j 3bc02b36 + 3bc02c18: 60e2 ld ra,24(sp) + 3bc02c1a: 6442 ld s0,16(sp) + 3bc02c1c: 64a2 ld s1,8(sp) + 3bc02c1e: 6902 ld s2,0(sp) + 3bc02c20: 6105 addi sp,sp,32 + 3bc02c22: 8082 ret + +000000003bc02c24 : + 3bc02c24: 27052783 lw a5,624(a0) + 3bc02c28: cba1 beqz a5,3bc02c78 + 3bc02c2a: 1101 addi sp,sp,-32 + 3bc02c2c: e822 sd s0,16(sp) + 3bc02c2e: e426 sd s1,8(sp) + 3bc02c30: e04a sd s2,0(sp) + 3bc02c32: ec06 sd ra,24(sp) + 3bc02c34: 842a mv s0,a0 + 3bc02c36: 26052823 sw zero,624(a0) + 3bc02c3a: 0d050493 addi s1,a0,208 + 3bc02c3e: 25050913 addi s2,a0,592 + 3bc02c42: 6c9c ld a5,24(s1) + 3bc02c44: c791 beqz a5,3bc02c50 + 3bc02c46: fc600593 li a1,-58 + 3bc02c4a: 8526 mv a0,s1 + 3bc02c4c: f7bff0ef jal ra,3bc02bc6 + 3bc02c50: 08048493 addi s1,s1,128 + 3bc02c54: ff2497e3 bne s1,s2,3bc02c42 + 3bc02c58: 7c1c ld a5,56(s0) + 3bc02c5a: 779c ld a5,40(a5) + 3bc02c5c: cb81 beqz a5,3bc02c6c + 3bc02c5e: 8522 mv a0,s0 + 3bc02c60: 6442 ld s0,16(sp) + 3bc02c62: 60e2 ld ra,24(sp) + 3bc02c64: 64a2 ld s1,8(sp) + 3bc02c66: 6902 ld s2,0(sp) + 3bc02c68: 6105 addi sp,sp,32 + 3bc02c6a: 8782 jr a5 + 3bc02c6c: 60e2 ld ra,24(sp) + 3bc02c6e: 6442 ld s0,16(sp) + 3bc02c70: 64a2 ld s1,8(sp) + 3bc02c72: 6902 ld s2,0(sp) + 3bc02c74: 6105 addi sp,sp,32 + 3bc02c76: 8082 ret + 3bc02c78: 8082 ret + +000000003bc02c7a : + 3bc02c7a: 1101 addi sp,sp,-32 + 3bc02c7c: e822 sd s0,16(sp) + 3bc02c7e: 00010417 auipc s0,0x10 + 3bc02c82: 73a40413 addi s0,s0,1850 # 3bc133b8 + 3bc02c86: 6008 ld a0,0(s0) + 3bc02c88: 6609 lui a2,0x2 + 3bc02c8a: 71060613 addi a2,a2,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc02c8e: 800005b7 lui a1,0x80000 + 3bc02c92: 0541 addi a0,a0,16 + 3bc02c94: ec06 sd ra,24(sp) + 3bc02c96: e426 sd s1,8(sp) + 3bc02c98: e59ff0ef jal ra,3bc02af0 + 3bc02c9c: c919 beqz a0,3bc02cb2 + 3bc02c9e: 00008597 auipc a1,0x8 + 3bc02ca2: 15258593 addi a1,a1,338 # 3bc0adf0 <__func__.4> + 3bc02ca6: 00008517 auipc a0,0x8 + 3bc02caa: f2a50513 addi a0,a0,-214 # 3bc0abd0 <__func__.5+0x30> + 3bc02cae: eaafd0ef jal ra,3bc00358 + 3bc02cb2: 600c ld a1,0(s0) + 3bc02cb4: 40000513 li a0,1024 + 3bc02cb8: 018004b7 lui s1,0x1800 + 3bc02cbc: 02458593 addi a1,a1,36 + 3bc02cc0: a85fe0ef jal ra,3bc01744 + 3bc02cc4: 600c ld a1,0(s0) + 3bc02cc6: 00400537 lui a0,0x400 + 3bc02cca: 40050513 addi a0,a0,1024 # 400400 <__BSS_SIZE__+0x3fa7f0> + 3bc02cce: 02858593 addi a1,a1,40 + 3bc02cd2: a73fe0ef jal ra,3bc01744 + 3bc02cd6: 600c ld a1,0(s0) + 3bc02cd8: 44048513 addi a0,s1,1088 # 1800440 <__BSS_SIZE__+0x17fa830> + 3bc02cdc: 10458593 addi a1,a1,260 + 3bc02ce0: a65fe0ef jal ra,3bc01744 + 3bc02ce4: 600c ld a1,0(s0) + 3bc02ce6: 5c048513 addi a0,s1,1472 + 3bc02cea: 10858593 addi a1,a1,264 + 3bc02cee: a57fe0ef jal ra,3bc01744 + 3bc02cf2: 600c ld a1,0(s0) + 3bc02cf4: 74048513 addi a0,s1,1856 + 3bc02cf8: 06400493 li s1,100 + 3bc02cfc: 10c58593 addi a1,a1,268 + 3bc02d00: a45fe0ef jal ra,3bc01744 + 3bc02d04: 600c ld a1,0(s0) + 3bc02d06: 43000513 li a0,1072 + 3bc02d0a: 05c1 addi a1,a1,16 + 3bc02d0c: a39fe0ef jal ra,3bc01744 + 3bc02d10: 6008 ld a0,0(s0) + 3bc02d12: 0541 addi a0,a0,16 + 3bc02d14: a2bfe0ef jal ra,3bc0173e + 3bc02d18: 0005061b sext.w a2,a0 + 3bc02d1c: 03057513 andi a0,a0,48 + 3bc02d20: c50d beqz a0,3bc02d4a + 3bc02d22: 34fd addiw s1,s1,-1 + 3bc02d24: ec99 bnez s1,3bc02d42 + 3bc02d26: 6442 ld s0,16(sp) + 3bc02d28: 60e2 ld ra,24(sp) + 3bc02d2a: 64a2 ld s1,8(sp) + 3bc02d2c: 00008597 auipc a1,0x8 + 3bc02d30: 0c458593 addi a1,a1,196 # 3bc0adf0 <__func__.4> + 3bc02d34: 00008517 auipc a0,0x8 + 3bc02d38: eec50513 addi a0,a0,-276 # 3bc0ac20 <__func__.5+0x80> + 3bc02d3c: 6105 addi sp,sp,32 + 3bc02d3e: e1afd06f j 3bc00358 + 3bc02d42: 4505 li a0,1 + 3bc02d44: c46fd0ef jal ra,3bc0018a + 3bc02d48: b7e1 j 3bc02d10 + 3bc02d4a: 60e2 ld ra,24(sp) + 3bc02d4c: 6442 ld s0,16(sp) + 3bc02d4e: 64a2 ld s1,8(sp) + 3bc02d50: 6105 addi sp,sp,32 + 3bc02d52: 8082 ret + +000000003bc02d54 <_dwc2_ep_disable.isra.0>: + 3bc02d54: 00010717 auipc a4,0x10 + 3bc02d58: 66c73703 ld a4,1644(a4) # 3bc133c0 + 3bc02d5c: 05070713 addi a4,a4,80 + 3bc02d60: 07154683 lbu a3,113(a0) + 3bc02d64: 00e51c63 bne a0,a4,3bc02d7c <_dwc2_ep_disable.isra.0+0x28> + 3bc02d68: 00008597 auipc a1,0x8 + 3bc02d6c: 04058593 addi a1,a1,64 # 3bc0ada8 <__func__.1> + 3bc02d70: 00008517 auipc a0,0x8 + 3bc02d74: ee050513 addi a0,a0,-288 # 3bc0ac50 <__func__.5+0xb0> + 3bc02d78: de0fd06f j 3bc00358 + 3bc02d7c: 7139 addi sp,sp,-64 + 3bc02d7e: f04a sd s2,32(sp) + 3bc02d80: ec4e sd s3,24(sp) + 3bc02d82: 00010917 auipc s2,0x10 + 3bc02d86: 63690913 addi s2,s2,1590 # 3bc133b8 + 3bc02d8a: fc06 sd ra,56(sp) + 3bc02d8c: f822 sd s0,48(sp) + 3bc02d8e: f426 sd s1,40(sp) + 3bc02d90: e852 sd s4,16(sp) + 3bc02d92: e456 sd s5,8(sp) + 3bc02d94: fc76b70b extu a4,a3,63,7 + 3bc02d98: 00093983 ld s3,0(s2) + 3bc02d9c: 00f6f793 andi a5,a3,15 + 3bc02da0: 0e070563 beqz a4,3bc02e8a <_dwc2_ep_disable.isra.0+0x136> + 3bc02da4: 04878793 addi a5,a5,72 + 3bc02da8: 0796 slli a5,a5,0x5 + 3bc02daa: 99be add s3,s3,a5 + 3bc02dac: 84aa mv s1,a0 + 3bc02dae: 854e mv a0,s3 + 3bc02db0: 98ffe0ef jal ra,3bc0173e + 3bc02db4: 00050a1b sext.w s4,a0 + 3bc02db8: 080a5a63 bgez s4,3bc02e4c <_dwc2_ep_disable.isra.0+0xf8> + 3bc02dbc: 0714c783 lbu a5,113(s1) + 3bc02dc0: 00093503 ld a0,0(s2) + 3bc02dc4: fc77b70b extu a4,a5,63,7 + 3bc02dc8: 00f7f413 andi s0,a5,15 + 3bc02dcc: c371 beqz a4,3bc02e90 <_dwc2_ep_disable.isra.0+0x13c> + 3bc02dce: 04840413 addi s0,s0,72 + 3bc02dd2: 0416 slli s0,s0,0x5 + 3bc02dd4: 00850ab3 add s5,a0,s0 + 3bc02dd8: 0421 addi s0,s0,8 + 3bc02dda: 942a add s0,s0,a0 + 3bc02ddc: 080005b7 lui a1,0x8000 + 3bc02de0: 8556 mv a0,s5 + 3bc02de2: c8dff0ef jal ra,3bc02a6e + 3bc02de6: 06400613 li a2,100 + 3bc02dea: 04000593 li a1,64 + 3bc02dee: 8522 mv a0,s0 + 3bc02df0: d01ff0ef jal ra,3bc02af0 + 3bc02df4: c919 beqz a0,3bc02e0a <_dwc2_ep_disable.isra.0+0xb6> + 3bc02df6: 00008597 auipc a1,0x8 + 3bc02dfa: f9a58593 addi a1,a1,-102 # 3bc0ad90 <__func__.0> + 3bc02dfe: 00008517 auipc a0,0x8 + 3bc02e02: e6a50513 addi a0,a0,-406 # 3bc0ac68 <__func__.5+0xc8> + 3bc02e06: d52fd0ef jal ra,3bc00358 + 3bc02e0a: 480005b7 lui a1,0x48000 + 3bc02e0e: 8556 mv a0,s5 + 3bc02e10: c5fff0ef jal ra,3bc02a6e + 3bc02e14: 06400613 li a2,100 + 3bc02e18: 4589 li a1,2 + 3bc02e1a: 8522 mv a0,s0 + 3bc02e1c: cd5ff0ef jal ra,3bc02af0 + 3bc02e20: c919 beqz a0,3bc02e36 <_dwc2_ep_disable.isra.0+0xe2> + 3bc02e22: 00008597 auipc a1,0x8 + 3bc02e26: f6e58593 addi a1,a1,-146 # 3bc0ad90 <__func__.0> + 3bc02e2a: 00008517 auipc a0,0x8 + 3bc02e2e: e7e50513 addi a0,a0,-386 # 3bc0aca8 <__func__.5+0x108> + 3bc02e32: d26fd0ef jal ra,3bc00358 + 3bc02e36: 4589 li a1,2 + 3bc02e38: 8522 mv a0,s0 + 3bc02e3a: c35ff0ef jal ra,3bc02a6e + 3bc02e3e: 07148783 lb a5,113(s1) + 3bc02e42: 0a07d163 bgez a5,3bc02ee4 <_dwc2_ep_disable.isra.0+0x190> + 3bc02e46: 5ca8 lw a0,120(s1) + 3bc02e48: cefff0ef jal ra,3bc02b36 + 3bc02e4c: 7fff8537 lui a0,0x7fff8 + 3bc02e50: 157d addi a0,a0,-1 + 3bc02e52: 00aa7a33 and s4,s4,a0 + 3bc02e56: 08000537 lui a0,0x8000 + 3bc02e5a: 85ce mv a1,s3 + 3bc02e5c: 00aa6533 or a0,s4,a0 + 3bc02e60: 8e5fe0ef jal ra,3bc01744 + 3bc02e64: 8526 mv a0,s1 + 3bc02e66: fc600593 li a1,-58 + 3bc02e6a: d5dff0ef jal ra,3bc02bc6 + 3bc02e6e: 4785 li a5,1 + 3bc02e70: 06f48823 sb a5,112(s1) + 3bc02e74: 70e2 ld ra,56(sp) + 3bc02e76: 7442 ld s0,48(sp) + 3bc02e78: 0404b023 sd zero,64(s1) + 3bc02e7c: 7902 ld s2,32(sp) + 3bc02e7e: 74a2 ld s1,40(sp) + 3bc02e80: 69e2 ld s3,24(sp) + 3bc02e82: 6a42 ld s4,16(sp) + 3bc02e84: 6aa2 ld s5,8(sp) + 3bc02e86: 6121 addi sp,sp,64 + 3bc02e88: 8082 ret + 3bc02e8a: 05878793 addi a5,a5,88 + 3bc02e8e: bf29 j 3bc02da8 <_dwc2_ep_disable.isra.0+0x54> + 3bc02e90: 05840413 addi s0,s0,88 + 3bc02e94: 0416 slli s0,s0,0x5 + 3bc02e96: 00850ab3 add s5,a0,s0 + 3bc02e9a: 0421 addi s0,s0,8 + 3bc02e9c: 942a add s0,s0,a0 + 3bc02e9e: 0551 addi a0,a0,20 + 3bc02ea0: 89ffe0ef jal ra,3bc0173e + 3bc02ea4: 08057513 andi a0,a0,128 + 3bc02ea8: e919 bnez a0,3bc02ebe <_dwc2_ep_disable.isra.0+0x16a> + 3bc02eaa: 00093503 ld a0,0(s2) + 3bc02eae: 6785 lui a5,0x1 + 3bc02eb0: 80478793 addi a5,a5,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02eb4: 20000593 li a1,512 + 3bc02eb8: 953e add a0,a0,a5 + 3bc02eba: bb5ff0ef jal ra,3bc02a6e + 3bc02ebe: 00093503 ld a0,0(s2) + 3bc02ec2: 06400613 li a2,100 + 3bc02ec6: 08000593 li a1,128 + 3bc02eca: 0551 addi a0,a0,20 + 3bc02ecc: c25ff0ef jal ra,3bc02af0 + 3bc02ed0: dd0d beqz a0,3bc02e0a <_dwc2_ep_disable.isra.0+0xb6> + 3bc02ed2: 00008597 auipc a1,0x8 + 3bc02ed6: ebe58593 addi a1,a1,-322 # 3bc0ad90 <__func__.0> + 3bc02eda: 00008517 auipc a0,0x8 + 3bc02ede: dae50513 addi a0,a0,-594 # 3bc0ac88 <__func__.5+0xe8> + 3bc02ee2: b715 j 3bc02e06 <_dwc2_ep_disable.isra.0+0xb2> + 3bc02ee4: 00093503 ld a0,0(s2) + 3bc02ee8: 6785 lui a5,0x1 + 3bc02eea: 80478793 addi a5,a5,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02eee: 40000593 li a1,1024 + 3bc02ef2: 953e add a0,a0,a5 + 3bc02ef4: b7bff0ef jal ra,3bc02a6e + 3bc02ef8: bf91 j 3bc02e4c <_dwc2_ep_disable.isra.0+0xf8> + +000000003bc02efa : + 3bc02efa: cd09 beqz a0,3bc02f14 + 3bc02efc: 6138 ld a4,64(a0) + 3bc02efe: 57a9 li a5,-22 + 3bc02f00: cb19 beqz a4,3bc02f16 + 3bc02f02: 1141 addi sp,sp,-16 + 3bc02f04: e406 sd ra,8(sp) + 3bc02f06: e4fff0ef jal ra,3bc02d54 <_dwc2_ep_disable.isra.0> + 3bc02f0a: 60a2 ld ra,8(sp) + 3bc02f0c: 4781 li a5,0 + 3bc02f0e: 853e mv a0,a5 + 3bc02f10: 0141 addi sp,sp,16 + 3bc02f12: 8082 ret + 3bc02f14: 57a9 li a5,-22 + 3bc02f16: 853e mv a0,a5 + 3bc02f18: 8082 ret + +000000003bc02f1a : + 3bc02f1a: 7139 addi sp,sp,-64 + 3bc02f1c: f426 sd s1,40(sp) + 3bc02f1e: f04a sd s2,32(sp) + 3bc02f20: ec4e sd s3,24(sp) + 3bc02f22: 84aa mv s1,a0 + 3bc02f24: 04053983 ld s3,64(a0) + 3bc02f28: 892e mv s2,a1 + 3bc02f2a: 05050513 addi a0,a0,80 + 3bc02f2e: fca00593 li a1,-54 + 3bc02f32: fc06 sd ra,56(sp) + 3bc02f34: f822 sd s0,48(sp) + 3bc02f36: e852 sd s4,16(sp) + 3bc02f38: e456 sd s5,8(sp) + 3bc02f3a: c8dff0ef jal ra,3bc02bc6 + 3bc02f3e: 8526 mv a0,s1 + 3bc02f40: 98dff0ef jal ra,3bc028cc + 3bc02f44: 00010417 auipc s0,0x10 + 3bc02f48: 47440413 addi s0,s0,1140 # 3bc133b8 + 3bc02f4c: 22091863 bnez s2,3bc0317c + 3bc02f50: 6008 ld a0,0(s0) + 3bc02f52: 04050513 addi a0,a0,64 + 3bc02f56: fe8fe0ef jal ra,3bc0173e + 3bc02f5a: 600c ld a1,0(s0) + 3bc02f5c: 6791 lui a5,0x4 + 3bc02f5e: 3c05350b extu a0,a0,15,0 + 3bc02f62: 20978793 addi a5,a5,521 # 4209 <__BSS_SIZE__-0x1a07> + 3bc02f66: 05c1 addi a1,a1,16 + 3bc02f68: 06a7ee63 bltu a5,a0,3bc02fe4 + 3bc02f6c: 4505 li a0,1 + 3bc02f6e: fd6fe0ef jal ra,3bc01744 + 3bc02f72: 03300a13 li s4,51 + 3bc02f76: 4505 li a0,1 + 3bc02f78: a12fd0ef jal ra,3bc0018a + 3bc02f7c: 6008 ld a0,0(s0) + 3bc02f7e: 3a7d addiw s4,s4,-1 + 3bc02f80: 0541 addi a0,a0,16 + 3bc02f82: fbcfe0ef jal ra,3bc0173e + 3bc02f86: 0005061b sext.w a2,a0 + 3bc02f8a: 020a1463 bnez s4,3bc02fb2 + 3bc02f8e: 00008597 auipc a1,0x8 + 3bc02f92: e3258593 addi a1,a1,-462 # 3bc0adc0 <__func__.2> + 3bc02f96: 00008517 auipc a0,0x8 + 3bc02f9a: d3250513 addi a0,a0,-718 # 3bc0acc8 <__func__.5+0x128> + 3bc02f9e: 7442 ld s0,48(sp) + 3bc02fa0: 70e2 ld ra,56(sp) + 3bc02fa2: 74a2 ld s1,40(sp) + 3bc02fa4: 7902 ld s2,32(sp) + 3bc02fa6: 69e2 ld s3,24(sp) + 3bc02fa8: 6a42 ld s4,16(sp) + 3bc02faa: 6aa2 ld s5,8(sp) + 3bc02fac: 6121 addi sp,sp,64 + 3bc02fae: baafd06f j 3bc00358 + 3bc02fb2: 8a05 andi a2,a2,1 + 3bc02fb4: f269 bnez a2,3bc02f76 + 3bc02fb6: 03300a13 li s4,51 + 3bc02fba: 4505 li a0,1 + 3bc02fbc: 9cefd0ef jal ra,3bc0018a + 3bc02fc0: 6008 ld a0,0(s0) + 3bc02fc2: 3a7d addiw s4,s4,-1 + 3bc02fc4: 0541 addi a0,a0,16 + 3bc02fc6: f78fe0ef jal ra,3bc0173e + 3bc02fca: 0005061b sext.w a2,a0 + 3bc02fce: 060a1963 bnez s4,3bc03040 + 3bc02fd2: 00008597 auipc a1,0x8 + 3bc02fd6: dee58593 addi a1,a1,-530 # 3bc0adc0 <__func__.2> + 3bc02fda: 00008517 auipc a0,0x8 + 3bc02fde: d3e50513 addi a0,a0,-706 # 3bc0ad18 <__func__.5+0x178> + 3bc02fe2: bf75 j 3bc02f9e + 3bc02fe4: 4505 li a0,1 + 3bc02fe6: f5efe0ef jal ra,3bc01744 + 3bc02fea: 03300a93 li s5,51 + 3bc02fee: 20000a37 lui s4,0x20000 + 3bc02ff2: 4505 li a0,1 + 3bc02ff4: 996fd0ef jal ra,3bc0018a + 3bc02ff8: 6008 ld a0,0(s0) + 3bc02ffa: 3afd addiw s5,s5,-1 + 3bc02ffc: 0541 addi a0,a0,16 + 3bc02ffe: f40fe0ef jal ra,3bc0173e + 3bc03002: 0005061b sext.w a2,a0 + 3bc03006: 000a9b63 bnez s5,3bc0301c + 3bc0300a: 00008597 auipc a1,0x8 + 3bc0300e: db658593 addi a1,a1,-586 # 3bc0adc0 <__func__.2> + 3bc03012: 00008517 auipc a0,0x8 + 3bc03016: cde50513 addi a0,a0,-802 # 3bc0acf0 <__func__.5+0x150> + 3bc0301a: b751 j 3bc02f9e + 3bc0301c: 01467633 and a2,a2,s4 + 3bc03020: 2601 sext.w a2,a2 + 3bc03022: da61 beqz a2,3bc02ff2 + 3bc03024: 6008 ld a0,0(s0) + 3bc03026: 0541 addi a0,a0,16 + 3bc03028: f16fe0ef jal ra,3bc0173e + 3bc0302c: 600c ld a1,0(s0) + 3bc0302e: 2501 sext.w a0,a0 + 3bc03030: 9979 andi a0,a0,-2 + 3bc03032: 01456533 or a0,a0,s4 + 3bc03036: 05c1 addi a1,a1,16 + 3bc03038: 2501 sext.w a0,a0 + 3bc0303a: f0afe0ef jal ra,3bc01744 + 3bc0303e: bfa5 j 3bc02fb6 + 3bc03040: f6065de3 bgez a2,3bc02fba + 3bc03044: 0309a503 lw a0,48(s3) + 3bc03048: e509 bnez a0,3bc03052 + 3bc0304a: 40081537 lui a0,0x40081 + 3bc0304e: 40f50513 addi a0,a0,1039 # 4008140f <__BL2_END__+0x446dfff> + 3bc03052: 600c ld a1,0(s0) + 3bc03054: 05b1 addi a1,a1,12 + 3bc03056: eeefe0ef jal ra,3bc01744 + 3bc0305a: c21ff0ef jal ra,3bc02c7a + 3bc0305e: 02091063 bnez s2,3bc0307e + 3bc03062: 6008 ld a0,0(s0) + 3bc03064: 6985 lui s3,0x1 + 3bc03066: 80498993 addi s3,s3,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc0306a: 954e add a0,a0,s3 + 3bc0306c: ed2fe0ef jal ra,3bc0173e + 3bc03070: 600c ld a1,0(s0) + 3bc03072: 2501 sext.w a0,a0 + 3bc03074: 00256513 ori a0,a0,2 + 3bc03078: 95ce add a1,a1,s3 + 3bc0307a: ecafe0ef jal ra,3bc01744 + 3bc0307e: 600c ld a1,0(s0) + 3bc03080: 6985 lui s3,0x1 + 3bc03082: 80098a13 addi s4,s3,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc03086: 95d2 add a1,a1,s4 + 3bc03088: 00040537 lui a0,0x40 + 3bc0308c: eb8fe0ef jal ra,3bc01744 + 3bc03090: 600c ld a1,0(s0) + 3bc03092: 557d li a0,-1 + 3bc03094: 0591 addi a1,a1,4 + 3bc03096: eaefe0ef jal ra,3bc01744 + 3bc0309a: 600c ld a1,0(s0) + 3bc0309c: 557d li a0,-1 + 3bc0309e: 05d1 addi a1,a1,20 + 3bc030a0: ea4fe0ef jal ra,3bc01744 + 3bc030a4: 600c ld a1,0(s0) + 3bc030a6: 800c4537 lui a0,0x800c4 + 3bc030aa: 81050513 addi a0,a0,-2032 # ffffffff800c3810 <__BL2_END__+0xffffffff444b0400> + 3bc030ae: 05e1 addi a1,a1,24 + 3bc030b0: e94fe0ef jal ra,3bc01744 + 3bc030b4: 600c ld a1,0(s0) + 3bc030b6: 4505 li a0,1 + 3bc030b8: 05a1 addi a1,a1,8 + 3bc030ba: e8afe0ef jal ra,3bc01744 + 3bc030be: 600c ld a1,0(s0) + 3bc030c0: 81098793 addi a5,s3,-2032 + 3bc030c4: 4535 li a0,13 + 3bc030c6: 95be add a1,a1,a5 + 3bc030c8: e7cfe0ef jal ra,3bc01744 + 3bc030cc: 600c ld a1,0(s0) + 3bc030ce: 81498793 addi a5,s3,-2028 + 3bc030d2: 4535 li a0,13 + 3bc030d4: 95be add a1,a1,a5 + 3bc030d6: e6efe0ef jal ra,3bc01744 + 3bc030da: 600c ld a1,0(s0) + 3bc030dc: 81c98793 addi a5,s3,-2020 + 3bc030e0: 6541 lui a0,0x10 + 3bc030e2: 95be add a1,a1,a5 + 3bc030e4: 0505 addi a0,a0,1 + 3bc030e6: e5efe0ef jal ra,3bc01744 + 3bc030ea: 02091f63 bnez s2,3bc03128 + 3bc030ee: 6008 ld a0,0(s0) + 3bc030f0: 80498993 addi s3,s3,-2044 + 3bc030f4: 954e add a0,a0,s3 + 3bc030f6: e48fe0ef jal ra,3bc0173e + 3bc030fa: 600c ld a1,0(s0) + 3bc030fc: 2501 sext.w a0,a0 + 3bc030fe: 01456533 or a0,a0,s4 + 3bc03102: 95ce add a1,a1,s3 + 3bc03104: e40fe0ef jal ra,3bc01744 + 3bc03108: 4529 li a0,10 + 3bc0310a: 880fd0ef jal ra,3bc0018a + 3bc0310e: 6008 ld a0,0(s0) + 3bc03110: 954e add a0,a0,s3 + 3bc03112: e2cfe0ef jal ra,3bc0173e + 3bc03116: 600c ld a1,0(s0) + 3bc03118: 77fd lui a5,0xfffff + 3bc0311a: 2501 sext.w a0,a0 + 3bc0311c: 7ff78793 addi a5,a5,2047 # fffffffffffff7ff <__BL2_END__+0xffffffffc43ec3ef> + 3bc03120: 95ce add a1,a1,s3 + 3bc03122: 8d7d and a0,a0,a5 + 3bc03124: e20fe0ef jal ra,3bc01744 + 3bc03128: 8526 mv a0,s1 + 3bc0312a: 7dc000ef jal ra,3bc03906 + 3bc0312e: 600c ld a1,0(s0) + 3bc03130: 6785 lui a5,0x1 + 3bc03132: 90078793 addi a5,a5,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc03136: 95be add a1,a1,a5 + 3bc03138: 6521 lui a0,0x8 + 3bc0313a: e0afe0ef jal ra,3bc01744 + 3bc0313e: 50000993 li s3,1280 + 3bc03142: 00091463 bnez s2,3bc0314a + 3bc03146: 50200993 li s3,1282 + 3bc0314a: 6008 ld a0,0(s0) + 3bc0314c: 6485 lui s1,0x1 + 3bc0314e: 80448493 addi s1,s1,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc03152: 9526 add a0,a0,s1 + 3bc03154: deafe0ef jal ra,3bc0173e + 3bc03158: 600c ld a1,0(s0) + 3bc0315a: 2501 sext.w a0,a0 + 3bc0315c: 00a9e533 or a0,s3,a0 + 3bc03160: 95a6 add a1,a1,s1 + 3bc03162: de2fe0ef jal ra,3bc01744 + 3bc03166: 7442 ld s0,48(sp) + 3bc03168: 70e2 ld ra,56(sp) + 3bc0316a: 74a2 ld s1,40(sp) + 3bc0316c: 7902 ld s2,32(sp) + 3bc0316e: 69e2 ld s3,24(sp) + 3bc03170: 6a42 ld s4,16(sp) + 3bc03172: 6aa2 ld s5,8(sp) + 3bc03174: 450d li a0,3 + 3bc03176: 6121 addi sp,sp,64 + 3bc03178: 83cfd06f j 3bc001b4 + 3bc0317c: 74fc ld a5,232(s1) + 3bc0317e: c789 beqz a5,3bc03188 + 3bc03180: 0d048513 addi a0,s1,208 + 3bc03184: bd1ff0ef jal ra,3bc02d54 <_dwc2_ep_disable.isra.0> + 3bc03188: 1684b783 ld a5,360(s1) + 3bc0318c: c789 beqz a5,3bc03196 + 3bc0318e: 15048513 addi a0,s1,336 + 3bc03192: bc3ff0ef jal ra,3bc02d54 <_dwc2_ep_disable.isra.0> + 3bc03196: 1e84b783 ld a5,488(s1) + 3bc0319a: ea0785e3 beqz a5,3bc03044 + 3bc0319e: 1d048513 addi a0,s1,464 + 3bc031a2: bb3ff0ef jal ra,3bc02d54 <_dwc2_ep_disable.isra.0> + 3bc031a6: bd79 j 3bc03044 + +000000003bc031a8 : + 3bc031a8: 7139 addi sp,sp,-64 + 3bc031aa: f822 sd s0,48(sp) + 3bc031ac: f426 sd s1,40(sp) + 3bc031ae: fc06 sd ra,56(sp) + 3bc031b0: f04a sd s2,32(sp) + 3bc031b2: ec4e sd s3,24(sp) + 3bc031b4: e852 sd s4,16(sp) + 3bc031b6: e456 sd s5,8(sp) + 3bc031b8: 00010497 auipc s1,0x10 + 3bc031bc: 2084b483 ld s1,520(s1) # 3bc133c0 + 3bc031c0: 5429 li s0,-22 + 3bc031c2: cd0d beqz a0,3bc031fc + 3bc031c4: 451c lw a5,8(a0) + 3bc031c6: 4705 li a4,1 + 3bc031c8: 5429 li s0,-22 + 3bc031ca: 37f9 addiw a5,a5,-2 + 3bc031cc: 02f76863 bltu a4,a5,3bc031fc + 3bc031d0: 691c ld a5,16(a0) + 3bc031d2: c78d beqz a5,3bc031fc + 3bc031d4: 7518 ld a4,40(a0) + 3bc031d6: c31d beqz a4,3bc031fc + 3bc031d8: 7118 ld a4,32(a0) + 3bc031da: c30d beqz a4,3bc031fc + 3bc031dc: 6538 ld a4,72(a0) + 3bc031de: cf19 beqz a4,3bc031fc + 3bc031e0: 6938 ld a4,80(a0) + 3bc031e2: cf09 beqz a4,3bc031fc + 3bc031e4: 5435 li s0,-19 + 3bc031e6: c899 beqz s1,3bc031fc + 3bc031e8: 7c98 ld a4,56(s1) + 3bc031ea: 5441 li s0,-16 + 3bc031ec: eb01 bnez a4,3bc031fc + 3bc031ee: fc88 sd a0,56(s1) + 3bc031f0: 8526 mv a0,s1 + 3bc031f2: 9782 jalr a5 + 3bc031f4: 842a mv s0,a0 + 3bc031f6: cd09 beqz a0,3bc03210 + 3bc031f8: 0204bc23 sd zero,56(s1) + 3bc031fc: 70e2 ld ra,56(sp) + 3bc031fe: 8522 mv a0,s0 + 3bc03200: 7442 ld s0,48(sp) + 3bc03202: 74a2 ld s1,40(sp) + 3bc03204: 7902 ld s2,32(sp) + 3bc03206: 69e2 ld s3,24(sp) + 3bc03208: 6a42 ld s4,16(sp) + 3bc0320a: 6aa2 ld s5,8(sp) + 3bc0320c: 6121 addi sp,sp,64 + 3bc0320e: 8082 ret + 3bc03210: 00010917 auipc s2,0x10 + 3bc03214: 1a890913 addi s2,s2,424 # 3bc133b8 + 3bc03218: 00093583 ld a1,0(s2) + 3bc0321c: 6985 lui s3,0x1 + 3bc0321e: 81498793 addi a5,s3,-2028 # 814 <__BSS_SIZE__-0x53fc> + 3bc03222: 95be add a1,a1,a5 + 3bc03224: 4535 li a0,13 + 3bc03226: 0404ba03 ld s4,64(s1) + 3bc0322a: d1afe0ef jal ra,3bc01744 + 3bc0322e: 00093583 ld a1,0(s2) + 3bc03232: 81098793 addi a5,s3,-2032 + 3bc03236: 4535 li a0,13 + 3bc03238: 95be add a1,a1,a5 + 3bc0323a: d0afe0ef jal ra,3bc01744 + 3bc0323e: 00093583 ld a1,0(s2) + 3bc03242: 81c98793 addi a5,s3,-2020 + 3bc03246: 4501 li a0,0 + 3bc03248: 95be add a1,a1,a5 + 3bc0324a: cfafe0ef jal ra,3bc01744 + 3bc0324e: 00093503 ld a0,0(s2) + 3bc03252: 80498993 addi s3,s3,-2044 + 3bc03256: 954e add a0,a0,s3 + 3bc03258: ce6fe0ef jal ra,3bc0173e + 3bc0325c: 00093583 ld a1,0(s2) + 3bc03260: 2501 sext.w a0,a0 + 3bc03262: 00256513 ori a0,a0,2 + 3bc03266: 95ce add a1,a1,s3 + 3bc03268: cdcfe0ef jal ra,3bc01744 + 3bc0326c: a0fff0ef jal ra,3bc02c7a + 3bc03270: 030a2983 lw s3,48(s4) # 20000030 + 3bc03274: 00099663 bnez s3,3bc03280 + 3bc03278: 400819b7 lui s3,0x40081 + 3bc0327c: 40798993 addi s3,s3,1031 # 40081407 <__BL2_END__+0x446dff7> + 3bc03280: 0e0007b7 lui a5,0xe000 + 3bc03284: 0007c783 lbu a5,0(a5) # e000000 + 3bc03288: 4a01 li s4,0 + 3bc0328a: 8ba1 andi a5,a5,8 + 3bc0328c: c795 beqz a5,3bc032b8 + 3bc0328e: 03006ab7 lui s5,0x3006 + 3bc03292: 014a8513 addi a0,s5,20 # 3006014 <__BSS_SIZE__+0x3000404> + 3bc03296: ca8fe0ef jal ra,3bc0173e + 3bc0329a: 00050a1b sext.w s4,a0 + 3bc0329e: 014a8593 addi a1,s5,20 + 3bc032a2: 18b00513 li a0,395 + 3bc032a6: c9efe0ef jal ra,3bc01744 + 3bc032aa: c00037b7 lui a5,0xc0003 + 3bc032ae: 03000737 lui a4,0x3000 + 3bc032b2: 07ad addi a5,a5,11 + 3bc032b4: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc032b8: 00093583 ld a1,0(s2) + 3bc032bc: 854e mv a0,s3 + 3bc032be: 05b1 addi a1,a1,12 + 3bc032c0: c84fe0ef jal ra,3bc01744 + 3bc032c4: 0e0007b7 lui a5,0xe000 + 3bc032c8: 0007c783 lbu a5,0(a5) # e000000 + 3bc032cc: 8ba1 andi a5,a5,8 + 3bc032ce: cb99 beqz a5,3bc032e4 + 3bc032d0: 030065b7 lui a1,0x3006 + 3bc032d4: 8552 mv a0,s4 + 3bc032d6: 05d1 addi a1,a1,20 + 3bc032d8: c6cfe0ef jal ra,3bc01744 + 3bc032dc: 06400513 li a0,100 + 3bc032e0: eabfc0ef jal ra,3bc0018a + 3bc032e4: 00093583 ld a1,0(s2) + 3bc032e8: 4505 li a0,1 + 3bc032ea: 05a1 addi a1,a1,8 + 3bc032ec: c58fe0ef jal ra,3bc01744 + 3bc032f0: 4581 li a1,0 + 3bc032f2: 8526 mv a0,s1 + 3bc032f4: c27ff0ef jal ra,3bc02f1a + 3bc032f8: 0204a023 sw zero,32(s1) + 3bc032fc: b701 j 3bc031fc + +000000003bc032fe : + 3bc032fe: c901 beqz a0,3bc0330e + 3bc03300: 0015151b slliw a0,a0,0x1 + 3bc03304: 00b035b3 snez a1,a1 + 3bc03308: 9d0d subw a0,a0,a1 + 3bc0330a: 0ff57513 andi a0,a0,255 + 3bc0330e: 8082 ret + +000000003bc03310 : + 3bc03310: 4510 lw a2,8(a0) + 3bc03312: 1101 addi sp,sp,-32 + 3bc03314: ec06 sd ra,24(sp) + 3bc03316: e822 sd s0,16(sp) + 3bc03318: e426 sd s1,8(sp) + 3bc0331a: 27700793 li a5,631 + 3bc0331e: 02c7e063 bltu a5,a2,3bc0333e + 3bc03322: 00008517 auipc a0,0x8 + 3bc03326: a1e50513 addi a0,a0,-1506 # 3bc0ad40 <__func__.5+0x1a0> + 3bc0332a: 27800593 li a1,632 + 3bc0332e: 82afd0ef jal ra,3bc00358 + 3bc03332: 557d li a0,-1 + 3bc03334: 60e2 ld ra,24(sp) + 3bc03336: 6442 ld s0,16(sp) + 3bc03338: 64a2 ld s1,8(sp) + 3bc0333a: 6105 addi sp,sp,32 + 3bc0333c: 8082 ret + 3bc0333e: 6100 ld s0,0(a0) + 3bc03340: 84aa mv s1,a0 + 3bc03342: 27800613 li a2,632 + 3bc03346: 4581 li a1,0 + 3bc03348: 8522 mv a0,s0 + 3bc0334a: ec8fd0ef jal ra,3bc00a12 + 3bc0334e: 708c ld a1,32(s1) + 3bc03350: 00008717 auipc a4,0x8 + 3bc03354: 35070713 addi a4,a4,848 # 3bc0b6a0 + 3bc03358: 20000613 li a2,512 + 3bc0335c: 00010797 auipc a5,0x10 + 3bc03360: 04b7be23 sd a1,92(a5) # 3bc133b8 + 3bc03364: 00008797 auipc a5,0x8 + 3bc03368: ab478793 addi a5,a5,-1356 # 3bc0ae18 + 3bc0336c: e81c sd a5,16(s0) + 3bc0336e: 05040793 addi a5,s0,80 + 3bc03372: ec1c sd a5,24(s0) + 3bc03374: 00008797 auipc a5,0x8 + 3bc03378: a9478793 addi a5,a5,-1388 # 3bc0ae08 + 3bc0337c: f81c sd a5,48(s0) + 3bc0337e: 02c44783 lbu a5,44(s0) + 3bc03382: f838 sd a4,112(s0) + 3bc03384: f878 sd a4,240(s0) + 3bc03386: fc07f793 andi a5,a5,-64 + 3bc0338a: 0017e793 ori a5,a5,1 + 3bc0338e: 02f40623 sb a5,44(s0) + 3bc03392: 478d li a5,3 + 3bc03394: d05c sw a5,36(s0) + 3bc03396: 00008797 auipc a5,0x8 + 3bc0339a: aca78793 addi a5,a5,-1334 # 3bc0ae60 + 3bc0339e: f43c sd a5,104(s0) + 3bc033a0: 04000793 li a5,64 + 3bc033a4: 06f41c23 sh a5,120(s0) + 3bc033a8: 00008797 auipc a5,0x8 + 3bc033ac: ac878793 addi a5,a5,-1336 # 3bc0ae70 + 3bc033b0: f47c sd a5,232(s0) + 3bc033b2: 28100793 li a5,641 + 3bc033b6: 14f410a3 sh a5,321(s0) + 3bc033ba: 4785 li a5,1 + 3bc033bc: 02079693 slli a3,a5,0x20 + 3bc033c0: 00268513 addi a0,a3,2 + 3bc033c4: 14a43223 sd a0,324(s0) + 3bc033c8: 0685 addi a3,a3,1 + 3bc033ca: 00008517 auipc a0,0x8 + 3bc033ce: ab650513 addi a0,a0,-1354 # 3bc0ae80 + 3bc033d2: 16a43423 sd a0,360(s0) + 3bc033d6: 1cd43223 sd a3,452(s0) + 3bc033da: 20100513 li a0,513 + 3bc033de: 00008697 auipc a3,0x8 + 3bc033e2: ab268693 addi a3,a3,-1358 # 3bc0ae90 + 3bc033e6: 1786 slli a5,a5,0x21 + 3bc033e8: 078d addi a5,a5,3 + 3bc033ea: 16e43823 sd a4,368(s0) + 3bc033ee: 1ee43823 sd a4,496(s0) + 3bc033f2: e024 sd s1,64(s0) + 3bc033f4: 24040823 sb zero,592(s0) + 3bc033f8: e440 sd s0,136(s0) + 3bc033fa: 0c0410a3 sh zero,193(s0) + 3bc033fe: 0c042223 sw zero,196(s0) + 3bc03402: 0ec41c23 sh a2,248(s0) + 3bc03406: 10843423 sd s0,264(s0) + 3bc0340a: 16c41c23 sh a2,376(s0) + 3bc0340e: 18843423 sd s0,392(s0) + 3bc03412: 1ca410a3 sh a0,449(s0) + 3bc03416: 1ed43423 sd a3,488(s0) + 3bc0341a: 1ec41c23 sh a2,504(s0) + 3bc0341e: 20843423 sd s0,520(s0) + 3bc03422: 38200713 li a4,898 + 3bc03426: 24e410a3 sh a4,577(s0) + 3bc0342a: 24f43223 sd a5,580(s0) + 3bc0342e: 00010797 auipc a5,0x10 + 3bc03432: f887b923 sd s0,-110(a5) # 3bc133c0 + 3bc03436: 60bc ld a5,64(s1) + 3bc03438: 24f43c23 sd a5,600(s0) + 3bc0343c: eb89 bnez a5,3bc0344e + 3bc0343e: 00008517 auipc a0,0x8 + 3bc03442: 93250513 addi a0,a0,-1742 # 3bc0ad70 <__func__.5+0x1d0> + 3bc03446: f13fc0ef jal ra,3bc00358 + 3bc0344a: 5551 li a0,-12 + 3bc0344c: b5e5 j 3bc03334 + 3bc0344e: 8522 mv a0,s0 + 3bc03450: 26f42023 sw a5,608(s0) + 3bc03454: 26b43423 sd a1,616(s0) + 3bc03458: c74ff0ef jal ra,3bc028cc + 3bc0345c: 4501 li a0,0 + 3bc0345e: bdd9 j 3bc03334 + +000000003bc03460 : + 3bc03460: 1101 addi sp,sp,-32 + 3bc03462: e426 sd s1,8(sp) + 3bc03464: 00010497 auipc s1,0x10 + 3bc03468: f5448493 addi s1,s1,-172 # 3bc133b8 + 3bc0346c: 6088 ld a0,0(s1) + 3bc0346e: ec06 sd ra,24(sp) + 3bc03470: e822 sd s0,16(sp) + 3bc03472: 0551 addi a0,a0,20 + 3bc03474: acafe0ef jal ra,3bc0173e + 3bc03478: 0005041b sext.w s0,a0 + 3bc0347c: 6088 ld a0,0(s1) + 3bc0347e: 0561 addi a0,a0,24 + 3bc03480: abefe0ef jal ra,3bc0173e + 3bc03484: 2501 sext.w a0,a0 + 3bc03486: 8c69 and s0,s0,a0 + 3bc03488: cc01 beqz s0,3bc034a0 + 3bc0348a: 6442 ld s0,16(sp) + 3bc0348c: 60e2 ld ra,24(sp) + 3bc0348e: 64a2 ld s1,8(sp) + 3bc03490: 00010597 auipc a1,0x10 + 3bc03494: f305b583 ld a1,-208(a1) # 3bc133c0 + 3bc03498: 4505 li a0,1 + 3bc0349a: 6105 addi sp,sp,32 + 3bc0349c: 3fb0006f j 3bc04096 + 3bc034a0: 60e2 ld ra,24(sp) + 3bc034a2: 6442 ld s0,16(sp) + 3bc034a4: 64a2 ld s1,8(sp) + 3bc034a6: 4501 li a0,0 + 3bc034a8: 6105 addi sp,sp,32 + 3bc034aa: 8082 ret + +000000003bc034ac : + 3bc034ac: 7179 addi sp,sp,-48 + 3bc034ae: f022 sd s0,32(sp) + 3bc034b0: f406 sd ra,40(sp) + 3bc034b2: ec26 sd s1,24(sp) + 3bc034b4: 470d li a4,3 + 3bc034b6: 26853403 ld s0,616(a0) + 3bc034ba: 00008697 auipc a3,0x8 + 3bc034be: 23668693 addi a3,a3,566 # 3bc0b6f0 + 3bc034c2: 00008797 auipc a5,0x8 + 3bc034c6: 23278793 addi a5,a5,562 # 3bc0b6f4 + 3bc034ca: 06e59163 bne a1,a4,3bc0352c + 3bc034ce: 04000713 li a4,64 + 3bc034d2: c298 sw a4,0(a3) + 3bc034d4: 20000713 li a4,512 + 3bc034d8: c398 sw a4,0(a5) + 3bc034da: d10c sw a1,32(a0) + 3bc034dc: 0007d783 lhu a5,0(a5) + 3bc034e0: 6485 lui s1,0x1 + 3bc034e2: 90048593 addi a1,s1,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc034e6: 95a2 add a1,a1,s0 + 3bc034e8: 04000713 li a4,64 + 3bc034ec: 06e51c23 sh a4,120(a0) + 3bc034f0: 0ef51c23 sh a5,248(a0) + 3bc034f4: 16f51c23 sh a5,376(a0) + 3bc034f8: 1ef51c23 sh a5,504(a0) + 3bc034fc: 852e mv a0,a1 + 3bc034fe: e42e sd a1,8(sp) + 3bc03500: a3efe0ef jal ra,3bc0173e + 3bc03504: 65a2 ld a1,8(sp) + 3bc03506: 2501 sext.w a0,a0 + 3bc03508: 9971 andi a0,a0,-4 + 3bc0350a: b0048493 addi s1,s1,-1280 + 3bc0350e: a36fe0ef jal ra,3bc01744 + 3bc03512: 9426 add s0,s0,s1 + 3bc03514: 8522 mv a0,s0 + 3bc03516: a28fe0ef jal ra,3bc0173e + 3bc0351a: 85a2 mv a1,s0 + 3bc0351c: 7402 ld s0,32(sp) + 3bc0351e: 70a2 ld ra,40(sp) + 3bc03520: 64e2 ld s1,24(sp) + 3bc03522: 2501 sext.w a0,a0 + 3bc03524: 9971 andi a0,a0,-4 + 3bc03526: 6145 addi sp,sp,48 + 3bc03528: a1cfe06f j 3bc01744 + 3bc0352c: 04000713 li a4,64 + 3bc03530: c298 sw a4,0(a3) + 3bc03532: c398 sw a4,0(a5) + 3bc03534: 4709 li a4,2 + 3bc03536: d118 sw a4,32(a0) + 3bc03538: b755 j 3bc034dc + +000000003bc0353a : + 3bc0353a: 1101 addi sp,sp,-32 + 3bc0353c: e822 sd s0,16(sp) + 3bc0353e: ec06 sd ra,24(sp) + 3bc03540: 07154703 lbu a4,113(a0) + 3bc03544: 7d1c ld a5,56(a0) + 3bc03546: 842a mv s0,a0 + 3bc03548: fc77368b extu a3,a4,63,7 + 3bc0354c: 2687b583 ld a1,616(a5) + 3bc03550: 00f77793 andi a5,a4,15 + 3bc03554: ce9d beqz a3,3bc03592 + 3bc03556: 04878793 addi a5,a5,72 + 3bc0355a: 0796 slli a5,a5,0x5 + 3bc0355c: 95be add a1,a1,a5 + 3bc0355e: 852e mv a0,a1 + 3bc03560: e42e sd a1,8(sp) + 3bc03562: 9dcfe0ef jal ra,3bc0173e + 3bc03566: ffe007b7 lui a5,0xffe00 + 3bc0356a: 17fd addi a5,a5,-1 + 3bc0356c: 2501 sext.w a0,a0 + 3bc0356e: 8d7d and a0,a0,a5 + 3bc03570: 07244783 lbu a5,114(s0) + 3bc03574: 4705 li a4,1 + 3bc03576: 65a2 ld a1,8(sp) + 3bc03578: 37f9 addiw a5,a5,-2 + 3bc0357a: 0ff7f793 andi a5,a5,255 + 3bc0357e: 00f76563 bltu a4,a5,3bc03588 + 3bc03582: 100007b7 lui a5,0x10000 + 3bc03586: 8d5d or a0,a0,a5 + 3bc03588: 6442 ld s0,16(sp) + 3bc0358a: 60e2 ld ra,24(sp) + 3bc0358c: 6105 addi sp,sp,32 + 3bc0358e: 9b6fe06f j 3bc01744 + 3bc03592: 05878793 addi a5,a5,88 # 10000058 + 3bc03596: b7d1 j 3bc0355a + +000000003bc03598 : + 3bc03598: 1101 addi sp,sp,-32 + 3bc0359a: ec06 sd ra,24(sp) + 3bc0359c: 07154703 lbu a4,113(a0) + 3bc035a0: 7d1c ld a5,56(a0) + 3bc035a2: fc77368b extu a3,a4,63,7 + 3bc035a6: 2687b583 ld a1,616(a5) + 3bc035aa: 00f77793 andi a5,a4,15 + 3bc035ae: ca85 beqz a3,3bc035de + 3bc035b0: 04878793 addi a5,a5,72 + 3bc035b4: 0796 slli a5,a5,0x5 + 3bc035b6: 95be add a1,a1,a5 + 3bc035b8: 852e mv a0,a1 + 3bc035ba: e42e sd a1,8(sp) + 3bc035bc: 982fe0ef jal ra,3bc0173e + 3bc035c0: 0005079b sext.w a5,a0 + 3bc035c4: 65a2 ld a1,8(sp) + 3bc035c6: 0007d563 bgez a5,3bc035d0 + 3bc035ca: 40000737 lui a4,0x40000 + 3bc035ce: 8fd9 or a5,a5,a4 + 3bc035d0: 00200537 lui a0,0x200 + 3bc035d4: 8d5d or a0,a0,a5 + 3bc035d6: 60e2 ld ra,24(sp) + 3bc035d8: 6105 addi sp,sp,32 + 3bc035da: 96afe06f j 3bc01744 + 3bc035de: 05878793 addi a5,a5,88 + 3bc035e2: 0796 slli a5,a5,0x5 + 3bc035e4: 95be add a1,a1,a5 + 3bc035e6: 852e mv a0,a1 + 3bc035e8: e42e sd a1,8(sp) + 3bc035ea: 954fe0ef jal ra,3bc0173e + 3bc035ee: 002007b7 lui a5,0x200 + 3bc035f2: 8d5d or a0,a0,a5 + 3bc035f4: 65a2 ld a1,8(sp) + 3bc035f6: 2501 sext.w a0,a0 + 3bc035f8: bff9 j 3bc035d6 + +000000003bc035fa : + 3bc035fa: 7139 addi sp,sp,-64 + 3bc035fc: f822 sd s0,48(sp) + 3bc035fe: 26853403 ld s0,616(a0) # 200268 <__BSS_SIZE__+0x1fa658> + 3bc03602: f426 sd s1,40(sp) + 3bc03604: 6485 lui s1,0x1 + 3bc03606: ec4e sd s3,24(sp) + 3bc03608: b1048593 addi a1,s1,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc0360c: 000809b7 lui s3,0x80 + 3bc03610: f04a sd s2,32(sp) + 3bc03612: 95a2 add a1,a1,s0 + 3bc03614: 892a mv s2,a0 + 3bc03616: 00898513 addi a0,s3,8 # 80008 <__BSS_SIZE__+0x7a3f8> + 3bc0361a: fc06 sd ra,56(sp) + 3bc0361c: 928fe0ef jal ra,3bc01744 + 3bc03620: 26092503 lw a0,608(s2) + 3bc03624: b1448593 addi a1,s1,-1260 + 3bc03628: 95a2 add a1,a1,s0 + 3bc0362a: 91afe0ef jal ra,3bc01744 + 3bc0362e: b0048593 addi a1,s1,-1280 + 3bc03632: 95a2 add a1,a1,s0 + 3bc03634: 852e mv a0,a1 + 3bc03636: e42e sd a1,8(sp) + 3bc03638: 906fe0ef jal ra,3bc0173e + 3bc0363c: 0005041b sext.w s0,a0 + 3bc03640: c0000537 lui a0,0xc0000 + 3bc03644: 157d addi a0,a0,-1 + 3bc03646: 65a2 ld a1,8(sp) + 3bc03648: 8c69 and s0,s0,a0 + 3bc0364a: 84000537 lui a0,0x84000 + 3bc0364e: 8c49 or s0,s0,a0 + 3bc03650: 8522 mv a0,s0 + 3bc03652: 8f2fe0ef jal ra,3bc01744 + 3bc03656: 85a2 mv a1,s0 + 3bc03658: 7442 ld s0,48(sp) + 3bc0365a: 26092603 lw a2,608(s2) + 3bc0365e: 70e2 ld ra,56(sp) + 3bc03660: 74a2 ld s1,40(sp) + 3bc03662: 7902 ld s2,32(sp) + 3bc03664: 00898693 addi a3,s3,8 + 3bc03668: 69e2 ld s3,24(sp) + 3bc0366a: 00089537 lui a0,0x89 + 3bc0366e: 4701 li a4,0 + 3bc03670: 88850513 addi a0,a0,-1912 # 88888 <__BSS_SIZE__+0x82c78> + 3bc03674: 6121 addi sp,sp,64 + 3bc03676: a4aff06f j 3bc028c0 + +000000003bc0367a : + 3bc0367a: 7179 addi sp,sp,-48 + 3bc0367c: f022 sd s0,32(sp) + 3bc0367e: 26853403 ld s0,616(a0) + 3bc03682: ec26 sd s1,24(sp) + 3bc03684: e84a sd s2,16(sp) + 3bc03686: 6485 lui s1,0x1 + 3bc03688: 892a mv s2,a0 + 3bc0368a: 26052503 lw a0,608(a0) + 3bc0368e: 91448593 addi a1,s1,-1772 # 914 <__BSS_SIZE__-0x52fc> + 3bc03692: 95a2 add a1,a1,s0 + 3bc03694: f406 sd ra,40(sp) + 3bc03696: 8aefe0ef jal ra,3bc01744 + 3bc0369a: 91048593 addi a1,s1,-1776 + 3bc0369e: 95a2 add a1,a1,s0 + 3bc036a0: 00080537 lui a0,0x80 + 3bc036a4: 8a0fe0ef jal ra,3bc01744 + 3bc036a8: 90048593 addi a1,s1,-1792 + 3bc036ac: 95a2 add a1,a1,s0 + 3bc036ae: 852e mv a0,a1 + 3bc036b0: e42e sd a1,8(sp) + 3bc036b2: 88cfe0ef jal ra,3bc0173e + 3bc036b6: 0005041b sext.w s0,a0 + 3bc036ba: c0000537 lui a0,0xc0000 + 3bc036be: 157d addi a0,a0,-1 + 3bc036c0: 65a2 ld a1,8(sp) + 3bc036c2: 8c69 and s0,s0,a0 + 3bc036c4: 84000537 lui a0,0x84000 + 3bc036c8: 8c49 or s0,s0,a0 + 3bc036ca: 8522 mv a0,s0 + 3bc036cc: 878fe0ef jal ra,3bc01744 + 3bc036d0: 479d li a5,7 + 3bc036d2: 85a2 mv a1,s0 + 3bc036d4: 7402 ld s0,32(sp) + 3bc036d6: 26092603 lw a2,608(s2) + 3bc036da: 70a2 ld ra,40(sp) + 3bc036dc: 64e2 ld s1,24(sp) + 3bc036de: 04f92423 sw a5,72(s2) + 3bc036e2: 6942 ld s2,16(sp) + 3bc036e4: 000ab537 lui a0,0xab + 3bc036e8: 4701 li a4,0 + 3bc036ea: 000806b7 lui a3,0x80 + 3bc036ee: aaa50513 addi a0,a0,-1366 # aaaaa <__BSS_SIZE__+0xa4e9a> + 3bc036f2: 6145 addi sp,sp,48 + 3bc036f4: 9ccff06f j 3bc028c0 + +000000003bc036f8 : + 3bc036f8: 1101 addi sp,sp,-32 + 3bc036fa: e822 sd s0,16(sp) + 3bc036fc: e426 sd s1,8(sp) + 3bc036fe: 26853403 ld s0,616(a0) + 3bc03702: 84aa mv s1,a0 + 3bc03704: 00087537 lui a0,0x87 + 3bc03708: 08750513 addi a0,a0,135 # 87087 <__BSS_SIZE__+0x81477> + 3bc0370c: 4701 li a4,0 + 3bc0370e: 4681 li a3,0 + 3bc03710: 4601 li a2,0 + 3bc03712: e04a sd s2,0(sp) + 3bc03714: ec06 sd ra,24(sp) + 3bc03716: 892e mv s2,a1 + 3bc03718: 9a8ff0ef jal ra,3bc028c0 + 3bc0371c: 6505 lui a0,0x1 + 3bc0371e: 02090b63 beqz s2,3bc03754 + 3bc03722: 90050513 addi a0,a0,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc03726: 9522 add a0,a0,s0 + 3bc03728: 816fe0ef jal ra,3bc0173e + 3bc0372c: 2501 sext.w a0,a0 + 3bc0372e: 002007b7 lui a5,0x200 + 3bc03732: 8d5d or a0,a0,a5 + 3bc03734: 6585 lui a1,0x1 + 3bc03736: 02090263 beqz s2,3bc0375a + 3bc0373a: 90058593 addi a1,a1,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc0373e: 95a2 add a1,a1,s0 + 3bc03740: 804fe0ef jal ra,3bc01744 + 3bc03744: 60e2 ld ra,24(sp) + 3bc03746: 6442 ld s0,16(sp) + 3bc03748: 0404a423 sw zero,72(s1) + 3bc0374c: 6902 ld s2,0(sp) + 3bc0374e: 64a2 ld s1,8(sp) + 3bc03750: 6105 addi sp,sp,32 + 3bc03752: 8082 ret + 3bc03754: b0050513 addi a0,a0,-1280 + 3bc03758: b7f9 j 3bc03726 + 3bc0375a: b0058593 addi a1,a1,-1280 + 3bc0375e: b7c5 j 3bc0373e + +000000003bc03760 : + 3bc03760: 7179 addi sp,sp,-48 + 3bc03762: 7d18 ld a4,56(a0) + 3bc03764: 5dd4 lw a3,60(a1) + 3bc03766: ec26 sd s1,24(sp) + 3bc03768: f406 sd ra,40(sp) + 3bc0376a: f022 sd s0,32(sp) + 3bc0376c: e84a sd s2,16(sp) + 3bc0376e: 07154783 lbu a5,113(a0) + 3bc03772: 84aa mv s1,a0 + 3bc03774: 6988 ld a0,16(a1) + 3bc03776: 26873603 ld a2,616(a4) # 40000268 <__BL2_END__+0x43ece58> + 3bc0377a: 7c06b70b extu a4,a3,31,0 + 3bc0377e: 953a add a0,a0,a4 + 3bc03780: 4d98 lw a4,24(a1) + 3bc03782: 8bbd andi a5,a5,15 + 3bc03784: 6591 lui a1,0x4 + 3bc03786: 9f15 subw a4,a4,a3 + 3bc03788: e399 bnez a5,3bc0378e + 3bc0378a: 0284d583 lhu a1,40(s1) + 3bc0378e: 0007069b sext.w a3,a4 + 3bc03792: 00d5b6b3 sltu a3,a1,a3 + 3bc03796: 0016c693 xori a3,a3,1 + 3bc0379a: 40d5970b mveqz a4,a1,a3 + 3bc0379e: d0b8 sw a4,96(s1) + 3bc037a0: f4a8 sd a0,104(s1) + 3bc037a2: 0007091b sext.w s2,a4 + 3bc037a6: 4405 li s0,1 + 3bc037a8: cb91 beqz a5,3bc037bc + 3bc037aa: 00090963 beqz s2,3bc037bc + 3bc037ae: 0284d683 lhu a3,40(s1) + 3bc037b2: fff9041b addiw s0,s2,-1 + 3bc037b6: 02d4543b divuw s0,s0,a3 + 3bc037ba: 2405 addiw s0,s0,1 + 3bc037bc: 05878793 addi a5,a5,88 # 200058 <__BSS_SIZE__+0x1fa448> + 3bc037c0: 0796 slli a5,a5,0x5 + 3bc037c2: 00f605b3 add a1,a2,a5 + 3bc037c6: 852e mv a0,a1 + 3bc037c8: e42e sd a1,8(sp) + 3bc037ca: f75fd0ef jal ra,3bc0173e + 3bc037ce: 54b0 lw a2,104(s1) + 3bc037d0: 840004b7 lui s1,0x84000 + 3bc037d4: 65a2 ld a1,8(sp) + 3bc037d6: 8cc9 or s1,s1,a0 + 3bc037d8: 2481 sext.w s1,s1 + 3bc037da: 8526 mv a0,s1 + 3bc037dc: 0134141b slliw s0,s0,0x13 + 3bc037e0: e032 sd a2,0(sp) + 3bc037e2: 00896433 or s0,s2,s0 + 3bc037e6: f5ffd0ef jal ra,3bc01744 + 3bc037ea: 0004069b sext.w a3,s0 + 3bc037ee: 7402 ld s0,32(sp) + 3bc037f0: 6602 ld a2,0(sp) + 3bc037f2: 70a2 ld ra,40(sp) + 3bc037f4: 6942 ld s2,16(sp) + 3bc037f6: 85a6 mv a1,s1 + 3bc037f8: 64e2 ld s1,24(sp) + 3bc037fa: 00077537 lui a0,0x77 + 3bc037fe: 4701 li a4,0 + 3bc03800: 77750513 addi a0,a0,1911 # 77777 <__BSS_SIZE__+0x71b67> + 3bc03804: 6145 addi sp,sp,48 + 3bc03806: 8baff06f j 3bc028c0 + +000000003bc0380a : + 3bc0380a: 715d addi sp,sp,-80 + 3bc0380c: ec56 sd s5,24(sp) + 3bc0380e: 8aae mv s5,a1 + 3bc03810: fc26 sd s1,56(sp) + 3bc03812: 4581 li a1,0 + 3bc03814: 84aa mv s1,a0 + 3bc03816: 8556 mv a0,s5 + 3bc03818: e0a2 sd s0,64(sp) + 3bc0381a: f84a sd s2,48(sp) + 3bc0381c: f44e sd s3,40(sp) + 3bc0381e: f052 sd s4,32(sp) + 3bc03820: e486 sd ra,72(sp) + 3bc03822: addff0ef jal ra,3bc032fe + 3bc03826: 0005079b sext.w a5,a0 + 3bc0382a: 00779a13 slli s4,a5,0x7 + 3bc0382e: 014487b3 add a5,s1,s4 + 3bc03832: 00751413 slli s0,a0,0x7 + 3bc03836: 0987b903 ld s2,152(a5) + 3bc0383a: 09840993 addi s3,s0,152 + 3bc0383e: 99a6 add s3,s3,s1 + 3bc03840: 09298563 beq s3,s2,3bc038ca + 3bc03844: 6505 lui a0,0x1 + 3bc03846: b1050513 addi a0,a0,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc0384a: 005a9793 slli a5,s5,0x5 + 3bc0384e: 97aa add a5,a5,a0 + 3bc03850: 2684b503 ld a0,616(s1) # ffffffff84000268 <__BL2_END__+0xffffffff483ece58> + 3bc03854: fc090593 addi a1,s2,-64 + 3bc03858: e42e sd a1,8(sp) + 3bc0385a: 953e add a0,a0,a5 + 3bc0385c: ee3fd0ef jal ra,3bc0173e + 3bc03860: 0005071b sext.w a4,a0 + 3bc03864: 65a2 ld a1,8(sp) + 3bc03866: 07f77693 andi a3,a4,127 + 3bc0386a: 000a8463 beqz s5,3bc03872 + 3bc0386e: fe092683 lw a3,-32(s2) + 3bc03872: 01448833 add a6,s1,s4 + 3bc03876: 0b082703 lw a4,176(a6) + 3bc0387a: ffc92883 lw a7,-4(s2) + 3bc0387e: fd892603 lw a2,-40(s2) + 3bc03882: 40d7033b subw t1,a4,a3 + 3bc03886: 05040513 addi a0,s0,80 + 3bc0388a: 411607bb subw a5,a2,a7 + 3bc0388e: 86be mv a3,a5 + 3bc03890: 00f337b3 sltu a5,t1,a5 + 3bc03894: 0017c793 xori a5,a5,1 + 3bc03898: 40f3168b mveqz a3,t1,a5 + 3bc0389c: 011687bb addw a5,a3,a7 + 3bc038a0: 07885683 lhu a3,120(a6) + 3bc038a4: fef92e23 sw a5,-4(s2) + 3bc038a8: 9526 add a0,a0,s1 + 3bc038aa: 02d3773b remuw a4,t1,a3 + 3bc038ae: e319 bnez a4,3bc038b4 + 3bc038b0: 04f61263 bne a2,a5,3bc038f4 + 3bc038b4: 020a9463 bnez s5,3bc038dc + 3bc038b8: 44b8 lw a4,72(s1) + 3bc038ba: 4791 li a5,4 + 3bc038bc: 02f71063 bne a4,a5,3bc038dc + 3bc038c0: 8526 mv a0,s1 + 3bc038c2: db9ff0ef jal ra,3bc0367a + 3bc038c6: 479d li a5,7 + 3bc038c8: c4bc sw a5,72(s1) + 3bc038ca: 60a6 ld ra,72(sp) + 3bc038cc: 6406 ld s0,64(sp) + 3bc038ce: 74e2 ld s1,56(sp) + 3bc038d0: 7942 ld s2,48(sp) + 3bc038d2: 79a2 ld s3,40(sp) + 3bc038d4: 7a02 ld s4,32(sp) + 3bc038d6: 6ae2 ld s5,24(sp) + 3bc038d8: 6161 addi sp,sp,80 + 3bc038da: 8082 ret + 3bc038dc: 4601 li a2,0 + 3bc038de: e42a sd a0,8(sp) + 3bc038e0: 832ff0ef jal ra,3bc02912 + 3bc038e4: 014487b3 add a5,s1,s4 + 3bc038e8: 6fcc ld a1,152(a5) + 3bc038ea: feb980e3 beq s3,a1,3bc038ca + 3bc038ee: 6522 ld a0,8(sp) + 3bc038f0: fc058593 addi a1,a1,-64 # 3fc0 <__BSS_SIZE__-0x1c50> + 3bc038f4: 6406 ld s0,64(sp) + 3bc038f6: 60a6 ld ra,72(sp) + 3bc038f8: 74e2 ld s1,56(sp) + 3bc038fa: 7942 ld s2,48(sp) + 3bc038fc: 79a2 ld s3,40(sp) + 3bc038fe: 7a02 ld s4,32(sp) + 3bc03900: 6ae2 ld s5,24(sp) + 3bc03902: 6161 addi sp,sp,80 + 3bc03904: bdb1 j 3bc03760 + +000000003bc03906 : + 3bc03906: 26853583 ld a1,616(a0) + 3bc0390a: 6785 lui a5,0x1 + 3bc0390c: b1078793 addi a5,a5,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc03910: 20080537 lui a0,0x20080 + 3bc03914: 95be add a1,a1,a5 + 3bc03916: 0521 addi a0,a0,8 + 3bc03918: e2dfd06f j 3bc01744 + +000000003bc0391c : + 3bc0391c: 7179 addi sp,sp,-48 + 3bc0391e: e84a sd s2,16(sp) + 3bc03920: 26853903 ld s2,616(a0) # 20080268 + 3bc03924: 0585 addi a1,a1,1 + 3bc03926: f022 sd s0,32(sp) + 3bc03928: 05b2 slli a1,a1,0xc + 3bc0392a: 0036841b addiw s0,a3,3 + 3bc0392e: ec26 sd s1,24(sp) + 3bc03930: f406 sd ra,40(sp) + 3bc03932: 4024340b extu s0,s0,16,2 + 3bc03936: 992e add s2,s2,a1 + 3bc03938: 4481 li s1,0 + 3bc0393a: 0004879b sext.w a5,s1 + 3bc0393e: 0087e863 bltu a5,s0,3bc0394e + 3bc03942: 70a2 ld ra,40(sp) + 3bc03944: 7402 ld s0,32(sp) + 3bc03946: 64e2 ld s1,24(sp) + 3bc03948: 6942 ld s2,16(sp) + 3bc0394a: 6145 addi sp,sp,48 + 3bc0394c: 8082 ret + 3bc0394e: 4496450b lrw a0,a2,s1,2 + 3bc03952: 85ca mv a1,s2 + 3bc03954: e432 sd a2,8(sp) + 3bc03956: deffd0ef jal ra,3bc01744 + 3bc0395a: 6622 ld a2,8(sp) + 3bc0395c: 0485 addi s1,s1,1 + 3bc0395e: bff1 j 3bc0393a + +000000003bc03960 : + 3bc03960: 7d1c ld a5,56(a0) + 3bc03962: 7119 addi sp,sp,-128 + 3bc03964: f8a2 sd s0,112(sp) + 3bc03966: f862 sd s8,48(sp) + 3bc03968: f466 sd s9,40(sp) + 3bc0396a: f06a sd s10,32(sp) + 3bc0396c: 2687bc83 ld s9,616(a5) + 3bc03970: fc86 sd ra,120(sp) + 3bc03972: 5ddc lw a5,60(a1) + 3bc03974: f4a6 sd s1,104(sp) + 3bc03976: f0ca sd s2,96(sp) + 3bc03978: ecce sd s3,88(sp) + 3bc0397a: e8d2 sd s4,80(sp) + 3bc0397c: e4d6 sd s5,72(sp) + 3bc0397e: e0da sd s6,64(sp) + 3bc03980: fc5e sd s7,56(sp) + 3bc03982: ec6e sd s11,24(sp) + 3bc03984: 07154903 lbu s2,113(a0) + 3bc03988: 6998 ld a4,16(a1) + 3bc0398a: 4d80 lw s0,24(a1) + 3bc0398c: 7c07b60b extu a2,a5,31,0 + 3bc03990: 00f97d13 andi s10,s2,15 + 3bc03994: 963a add a2,a2,a4 + 3bc03996: 40f4073b subw a4,s0,a5 + 3bc0399a: 6791 lui a5,0x4 + 3bc0399c: 8c2a mv s8,a0 + 3bc0399e: 896a mv s2,s10 + 3bc039a0: 6411 lui s0,0x4 + 3bc039a2: 00e7e363 bltu a5,a4,3bc039a8 + 3bc039a6: 843a mv s0,a4 + 3bc039a8: 000d1d63 bnez s10,3bc039c2 + 3bc039ac: 028c5783 lhu a5,40(s8) + 3bc039b0: 873e mv a4,a5 + 3bc039b2: 00f437b3 sltu a5,s0,a5 + 3bc039b6: 0017c793 xori a5,a5,1 + 3bc039ba: 40f4170b mveqz a4,s0,a5 + 3bc039be: 0007041b sext.w s0,a4 + 3bc039c2: 0004099b sext.w s3,s0 + 3bc039c6: 073c2023 sw s3,96(s8) + 3bc039ca: 06cc3423 sd a2,104(s8) + 3bc039ce: 00060a1b sext.w s4,a2 + 3bc039d2: 4785 li a5,1 + 3bc039d4: c801 beqz s0,3bc039e4 + 3bc039d6: 028c5503 lhu a0,40(s8) + 3bc039da: fff4079b addiw a5,s0,-1 + 3bc039de: 02a7d7bb divuw a5,a5,a0 + 3bc039e2: 2785 addiw a5,a5,1 + 3bc039e4: 6d85 lui s11,0x1 + 3bc039e6: 005d1b13 slli s6,s10,0x5 + 3bc039ea: 910d8a93 addi s5,s11,-1776 # 910 <__BSS_SIZE__-0x5300> + 3bc039ee: 0137979b slliw a5,a5,0x13 + 3bc039f2: 9ada add s5,s5,s6 + 3bc039f4: 00f46533 or a0,s0,a5 + 3bc039f8: 9ae6 add s5,s5,s9 + 3bc039fa: 85d6 mv a1,s5 + 3bc039fc: 2501 sext.w a0,a0 + 3bc039fe: e432 sd a2,8(sp) + 3bc03a00: d45fd0ef jal ra,3bc01744 + 3bc03a04: 900d8793 addi a5,s11,-1792 + 3bc03a08: 9b3e add s6,s6,a5 + 3bc03a0a: 9b66 add s6,s6,s9 + 3bc03a0c: 855a mv a0,s6 + 3bc03a0e: d31fd0ef jal ra,3bc0173e + 3bc03a12: 078c2783 lw a5,120(s8) + 3bc03a16: bc4004b7 lui s1,0xbc400 + 3bc03a1a: 00050b9b sext.w s7,a0 + 3bc03a1e: 14fd addi s1,s1,-1 + 3bc03a20: 0167979b slliw a5,a5,0x16 + 3bc03a24: 009bf4b3 and s1,s7,s1 + 3bc03a28: 8cdd or s1,s1,a5 + 3bc03a2a: 77e1 lui a5,0xffff8 + 3bc03a2c: 7ff78793 addi a5,a5,2047 # ffffffffffff87ff <__BL2_END__+0xffffffffc43e53ef> + 3bc03a30: 2481 sext.w s1,s1 + 3bc03a32: 8cfd and s1,s1,a5 + 3bc03a34: 840007b7 lui a5,0x84000 + 3bc03a38: 8cdd or s1,s1,a5 + 3bc03a3a: 85da mv a1,s6 + 3bc03a3c: 8526 mv a0,s1 + 3bc03a3e: d07fd0ef jal ra,3bc01744 + 3bc03a42: 6622 ld a2,8(sp) + 3bc03a44: 038c3503 ld a0,56(s8) + 3bc03a48: 3c04368b extu a3,s0,15,0 + 3bc03a4c: 85ea mv a1,s10 + 3bc03a4e: ecfff0ef jal ra,3bc0391c + 3bc03a52: c809 beqz s0,3bc03a64 + 3bc03a54: 834d8593 addi a1,s11,-1996 + 3bc03a58: 4505 li a0,1 + 3bc03a5a: 95e6 add a1,a1,s9 + 3bc03a5c: 0125153b sllw a0,a0,s2 + 3bc03a60: ce5fd0ef jal ra,3bc01744 + 3bc03a64: 855a mv a0,s6 + 3bc03a66: cd9fd0ef jal ra,3bc0173e + 3bc03a6a: 0005071b sext.w a4,a0 + 3bc03a6e: 00044537 lui a0,0x44 + 3bc03a72: 86de mv a3,s7 + 3bc03a74: 8652 mv a2,s4 + 3bc03a76: 85a6 mv a1,s1 + 3bc03a78: 44450513 addi a0,a0,1092 # 44444 <__BSS_SIZE__+0x3e834> + 3bc03a7c: e45fe0ef jal ra,3bc028c0 + 3bc03a80: 8556 mv a0,s5 + 3bc03a82: cbdfd0ef jal ra,3bc0173e + 3bc03a86: 0005059b sext.w a1,a0 + 3bc03a8a: 00046537 lui a0,0x46 + 3bc03a8e: 86ca mv a3,s2 + 3bc03a90: 8622 mv a2,s0 + 3bc03a92: 46450513 addi a0,a0,1124 # 46464 <__BSS_SIZE__+0x40854> + 3bc03a96: 4701 li a4,0 + 3bc03a98: e29fe0ef jal ra,3bc028c0 + 3bc03a9c: 70e6 ld ra,120(sp) + 3bc03a9e: 7446 ld s0,112(sp) + 3bc03aa0: 74a6 ld s1,104(sp) + 3bc03aa2: 7906 ld s2,96(sp) + 3bc03aa4: 6a46 ld s4,80(sp) + 3bc03aa6: 6aa6 ld s5,72(sp) + 3bc03aa8: 6b06 ld s6,64(sp) + 3bc03aaa: 7be2 ld s7,56(sp) + 3bc03aac: 7c42 ld s8,48(sp) + 3bc03aae: 7ca2 ld s9,40(sp) + 3bc03ab0: 7d02 ld s10,32(sp) + 3bc03ab2: 6de2 ld s11,24(sp) + 3bc03ab4: 854e mv a0,s3 + 3bc03ab6: 69e6 ld s3,88(sp) + 3bc03ab8: 6109 addi sp,sp,128 + 3bc03aba: 8082 ret + +000000003bc03abc : + 3bc03abc: 7179 addi sp,sp,-48 + 3bc03abe: e84a sd s2,16(sp) + 3bc03ac0: 26853903 ld s2,616(a0) + 3bc03ac4: 0585 addi a1,a1,1 + 3bc03ac6: f022 sd s0,32(sp) + 3bc03ac8: 05b2 slli a1,a1,0xc + 3bc03aca: 0036841b addiw s0,a3,3 + 3bc03ace: ec26 sd s1,24(sp) + 3bc03ad0: f406 sd ra,40(sp) + 3bc03ad2: 4024340b extu s0,s0,16,2 + 3bc03ad6: 992e add s2,s2,a1 + 3bc03ad8: 4481 li s1,0 + 3bc03ada: 0004879b sext.w a5,s1 + 3bc03ade: 0087e863 bltu a5,s0,3bc03aee + 3bc03ae2: 70a2 ld ra,40(sp) + 3bc03ae4: 7402 ld s0,32(sp) + 3bc03ae6: 64e2 ld s1,24(sp) + 3bc03ae8: 6942 ld s2,16(sp) + 3bc03aea: 6145 addi sp,sp,48 + 3bc03aec: 8082 ret + 3bc03aee: 854a mv a0,s2 + 3bc03af0: e432 sd a2,8(sp) + 3bc03af2: c4dfd0ef jal ra,3bc0173e + 3bc03af6: 6622 ld a2,8(sp) + 3bc03af8: 4496550b srw a0,a2,s1,2 + 3bc03afc: 0485 addi s1,s1,1 + 3bc03afe: bff1 j 3bc03ada + +000000003bc03b00 : + 3bc03b00: 7179 addi sp,sp,-48 + 3bc03b02: e44e sd s3,8(sp) + 3bc03b04: 02855983 lhu s3,40(a0) + 3bc03b08: f022 sd s0,32(sp) + 3bc03b0a: ec26 sd s1,24(sp) + 3bc03b0c: f406 sd ra,40(sp) + 3bc03b0e: e84a sd s2,16(sp) + 3bc03b10: 84aa mv s1,a0 + 3bc03b12: 842e mv s0,a1 + 3bc03b14: e4dff0ef jal ra,3bc03960 + 3bc03b18: 2501 sext.w a0,a0 + 3bc03b1a: 00a99e63 bne s3,a0,3bc03b36 + 3bc03b1e: 5c5c lw a5,60(s0) + 3bc03b20: 4c18 lw a4,24(s0) + 3bc03b22: 4501 li a0,0 + 3bc03b24: 013787bb addw a5,a5,s3 + 3bc03b28: 00f71b63 bne a4,a5,3bc03b3e + 3bc03b2c: 505c lw a5,36(s0) + 3bc03b2e: 02e79713 slli a4,a5,0x2e + 3bc03b32: 00074663 bltz a4,3bc03b3e + 3bc03b36: 7c9c ld a5,56(s1) + 3bc03b38: 4505 li a0,1 + 3bc03b3a: 0407a423 sw zero,72(a5) # ffffffff84000048 <__BL2_END__+0xffffffff483ecc38> + 3bc03b3e: 70a2 ld ra,40(sp) + 3bc03b40: 7402 ld s0,32(sp) + 3bc03b42: 64e2 ld s1,24(sp) + 3bc03b44: 6942 ld s2,16(sp) + 3bc03b46: 69a2 ld s3,8(sp) + 3bc03b48: 6145 addi sp,sp,48 + 3bc03b4a: 8082 ret + +000000003bc03b4c : + 3bc03b4c: 7179 addi sp,sp,-48 + 3bc03b4e: ec26 sd s1,24(sp) + 3bc03b50: 84ae mv s1,a1 + 3bc03b52: 26853583 ld a1,616(a0) + 3bc03b56: 6785 lui a5,0x1 + 3bc03b58: 80078793 addi a5,a5,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc03b5c: 95be add a1,a1,a5 + 3bc03b5e: f022 sd s0,32(sp) + 3bc03b60: 842a mv s0,a0 + 3bc03b62: 852e mv a0,a1 + 3bc03b64: f406 sd ra,40(sp) + 3bc03b66: e42e sd a1,8(sp) + 3bc03b68: bd7fd0ef jal ra,3bc0173e + 3bc03b6c: 0044979b slliw a5,s1,0x4 + 3bc03b70: 65a2 ld a1,8(sp) + 3bc03b72: 8d5d or a0,a0,a5 + 3bc03b74: 2501 sext.w a0,a0 + 3bc03b76: bcffd0ef jal ra,3bc01744 + 3bc03b7a: 8522 mv a0,s0 + 3bc03b7c: affff0ef jal ra,3bc0367a + 3bc03b80: 4785 li a5,1 + 3bc03b82: 24940823 sb s1,592(s0) # 4250 <__BSS_SIZE__-0x19c0> + 3bc03b86: 70a2 ld ra,40(sp) + 3bc03b88: 26f42823 sw a5,624(s0) + 3bc03b8c: 7402 ld s0,32(sp) + 3bc03b8e: 64e2 ld s1,24(sp) + 3bc03b90: 6145 addi sp,sp,48 + 3bc03b92: 8082 ret + +000000003bc03b94 : + 3bc03b94: 6d4c ld a1,152(a0) + 3bc03b96: 09850693 addi a3,a0,152 + 3bc03b9a: 05050713 addi a4,a0,80 + 3bc03b9e: 00d58e63 beq a1,a3,3bc03bba + 3bc03ba2: fd85a683 lw a3,-40(a1) + 3bc03ba6: e689 bnez a3,3bc03bb0 + 3bc03ba8: 0a052823 sw zero,176(a0) + 3bc03bac: acfff06f j 3bc0367a + 3bc03bb0: fc058593 addi a1,a1,-64 + 3bc03bb4: 853a mv a0,a4 + 3bc03bb6: babff06f j 3bc03760 + 3bc03bba: 8082 ret + +000000003bc03bbc : + 3bc03bbc: 6d4c ld a1,152(a0) + 3bc03bbe: 09850693 addi a3,a0,152 + 3bc03bc2: 02d58b63 beq a1,a3,3bc03bf8 + 3bc03bc6: 1141 addi sp,sp,-16 + 3bc03bc8: e022 sd s0,0(sp) + 3bc03bca: e406 sd ra,8(sp) + 3bc03bcc: fc058593 addi a1,a1,-64 + 3bc03bd0: 842a mv s0,a0 + 3bc03bd2: 05050713 addi a4,a0,80 + 3bc03bd6: 4501 li a0,0 + 3bc03bd8: c989 beqz a1,3bc03bea + 3bc03bda: 853a mv a0,a4 + 3bc03bdc: f25ff0ef jal ra,3bc03b00 + 3bc03be0: 4785 li a5,1 + 3bc03be2: 00f51863 bne a0,a5,3bc03bf2 + 3bc03be6: 4795 li a5,5 + 3bc03be8: c43c sw a5,72(s0) + 3bc03bea: 60a2 ld ra,8(sp) + 3bc03bec: 6402 ld s0,0(sp) + 3bc03bee: 0141 addi sp,sp,16 + 3bc03bf0: 8082 ret + 3bc03bf2: c43c sw a5,72(s0) + 3bc03bf4: 4505 li a0,1 + 3bc03bf6: bfd5 j 3bc03bea + 3bc03bf8: 4501 li a0,0 + 3bc03bfa: 8082 ret + +000000003bc03bfc : + 3bc03bfc: 1101 addi sp,sp,-32 + 3bc03bfe: ec06 sd ra,24(sp) + 3bc03c00: 07154703 lbu a4,113(a0) + 3bc03c04: 7d1c ld a5,56(a0) + 3bc03c06: fc77368b extu a3,a4,63,7 + 3bc03c0a: 2687b583 ld a1,616(a5) + 3bc03c0e: 00f77793 andi a5,a4,15 + 3bc03c12: c295 beqz a3,3bc03c36 + 3bc03c14: 04878793 addi a5,a5,72 + 3bc03c18: 0796 slli a5,a5,0x5 + 3bc03c1a: 95be add a1,a1,a5 + 3bc03c1c: 852e mv a0,a1 + 3bc03c1e: e42e sd a1,8(sp) + 3bc03c20: b1ffd0ef jal ra,3bc0173e + 3bc03c24: 65a2 ld a1,8(sp) + 3bc03c26: 60e2 ld ra,24(sp) + 3bc03c28: 080007b7 lui a5,0x8000 + 3bc03c2c: 8d5d or a0,a0,a5 + 3bc03c2e: 2501 sext.w a0,a0 + 3bc03c30: 6105 addi sp,sp,32 + 3bc03c32: b13fd06f j 3bc01744 + 3bc03c36: 05878793 addi a5,a5,88 # 8000058 + 3bc03c3a: bff9 j 3bc03c18 + +000000003bc03c3c : + 3bc03c3c: 07154703 lbu a4,113(a0) + 3bc03c40: cd21 beqz a0,3bc03c98 + 3bc03c42: 6134 ld a3,64(a0) + 3bc03c44: 87aa mv a5,a0 + 3bc03c46: caa9 beqz a3,3bc03c98 + 3bc03c48: 00f77613 andi a2,a4,15 + 3bc03c4c: c631 beqz a2,3bc03c98 + 3bc03c4e: 0036c603 lbu a2,3(a3) # 80003 <__BSS_SIZE__+0x7a3f3> + 3bc03c52: 4685 li a3,1 + 3bc03c54: 04d60263 beq a2,a3,3bc03c98 + 3bc03c58: 1101 addi sp,sp,-32 + 3bc03c5a: ec06 sd ra,24(sp) + 3bc03c5c: cd99 beqz a1,3bc03c7a + 3bc03c5e: fc77368b extu a3,a4,63,7 + 3bc03c62: c29d beqz a3,3bc03c88 + 3bc03c64: 6534 ld a3,72(a0) + 3bc03c66: 04850713 addi a4,a0,72 + 3bc03c6a: fdd00593 li a1,-35 + 3bc03c6e: 00e68d63 beq a3,a4,3bc03c88 + 3bc03c72: 60e2 ld ra,24(sp) + 3bc03c74: 852e mv a0,a1 + 3bc03c76: 6105 addi sp,sp,32 + 3bc03c78: 8082 ret + 3bc03c7a: 06050823 sb zero,112(a0) + 3bc03c7e: e42e sd a1,8(sp) + 3bc03c80: 8bbff0ef jal ra,3bc0353a + 3bc03c84: 65a2 ld a1,8(sp) + 3bc03c86: b7f5 j 3bc03c72 + 3bc03c88: 4705 li a4,1 + 3bc03c8a: 06e78823 sb a4,112(a5) + 3bc03c8e: 853e mv a0,a5 + 3bc03c90: 909ff0ef jal ra,3bc03598 + 3bc03c94: 4581 li a1,0 + 3bc03c96: bff1 j 3bc03c72 + 3bc03c98: 55a9 li a1,-22 + 3bc03c9a: 852e mv a0,a1 + 3bc03c9c: 8082 ret + +000000003bc03c9e : + 3bc03c9e: 7d1c ld a5,56(a0) + 3bc03ca0: 7179 addi sp,sp,-48 + 3bc03ca2: f022 sd s0,32(sp) + 3bc03ca4: ec26 sd s1,24(sp) + 3bc03ca6: e84a sd s2,16(sp) + 3bc03ca8: e44e sd s3,8(sp) + 3bc03caa: f406 sd ra,40(sp) + 3bc03cac: 2687b483 ld s1,616(a5) + 3bc03cb0: 07154783 lbu a5,113(a0) + 3bc03cb4: 4905 li s2,1 + 3bc03cb6: 89aa mv s3,a0 + 3bc03cb8: 00f7f413 andi s0,a5,15 + 3bc03cbc: fc77b70b extu a4,a5,63,7 + 3bc03cc0: 0089193b sllw s2,s2,s0 + 3bc03cc4: cf25 beqz a4,3bc03d3c + 3bc03cc6: 04840513 addi a0,s0,72 + 3bc03cca: 0516 slli a0,a0,0x5 + 3bc03ccc: 9526 add a0,a0,s1 + 3bc03cce: a71fd0ef jal ra,3bc0173e + 3bc03cd2: 2501 sext.w a0,a0 + 3bc03cd4: 3cf5378b extu a5,a0,15,15 + 3bc03cd8: ef9d bnez a5,3bc03d16 + 3bc03cda: fff407b7 lui a5,0xfff40 + 3bc03cde: 17fd addi a5,a5,-1 + 3bc03ce0: 8d7d and a0,a0,a5 + 3bc03ce2: 0729c783 lbu a5,114(s3) + 3bc03ce6: 04840593 addi a1,s0,72 + 3bc03cea: 0127979b slliw a5,a5,0x12 + 3bc03cee: 8d5d or a0,a0,a5 + 3bc03cf0: 0289d783 lhu a5,40(s3) + 3bc03cf4: 80057513 andi a0,a0,-2048 + 3bc03cf8: 8d5d or a0,a0,a5 + 3bc03cfa: 180087b7 lui a5,0x18008 + 3bc03cfe: 8d5d or a0,a0,a5 + 3bc03d00: 07198783 lb a5,113(s3) + 3bc03d04: 2501 sext.w a0,a0 + 3bc03d06: 0007c463 bltz a5,3bc03d0e + 3bc03d0a: 05840593 addi a1,s0,88 + 3bc03d0e: 0596 slli a1,a1,0x5 + 3bc03d10: 95a6 add a1,a1,s1 + 3bc03d12: a33fd0ef jal ra,3bc01744 + 3bc03d16: 6585 lui a1,0x1 + 3bc03d18: 81c58593 addi a1,a1,-2020 # 81c <__BSS_SIZE__-0x53f4> + 3bc03d1c: 94ae add s1,s1,a1 + 3bc03d1e: 8526 mv a0,s1 + 3bc03d20: a1ffd0ef jal ra,3bc0173e + 3bc03d24: 2501 sext.w a0,a0 + 3bc03d26: 7402 ld s0,32(sp) + 3bc03d28: 70a2 ld ra,40(sp) + 3bc03d2a: 69a2 ld s3,8(sp) + 3bc03d2c: 85a6 mv a1,s1 + 3bc03d2e: 01256533 or a0,a0,s2 + 3bc03d32: 64e2 ld s1,24(sp) + 3bc03d34: 6942 ld s2,16(sp) + 3bc03d36: 6145 addi sp,sp,48 + 3bc03d38: a0dfd06f j 3bc01744 + 3bc03d3c: 05840513 addi a0,s0,88 + 3bc03d40: 0516 slli a0,a0,0x5 + 3bc03d42: 9526 add a0,a0,s1 + 3bc03d44: 9fbfd0ef jal ra,3bc0173e + 3bc03d48: 2501 sext.w a0,a0 + 3bc03d4a: 0109191b slliw s2,s2,0x10 + 3bc03d4e: b759 j 3bc03cd4 + +000000003bc03d50 : + 3bc03d50: 453c lw a5,72(a0) + 3bc03d52: 34079163 bnez a5,3bc04094 + 3bc03d56: 7139 addi sp,sp,-64 + 3bc03d58: f426 sd s1,40(sp) + 3bc03d5a: 25853483 ld s1,600(a0) + 3bc03d5e: f822 sd s0,48(sp) + 3bc03d60: fa400593 li a1,-92 + 3bc03d64: 842a mv s0,a0 + 3bc03d66: 05050513 addi a0,a0,80 + 3bc03d6a: ec4e sd s3,24(sp) + 3bc03d6c: fc06 sd ra,56(sp) + 3bc03d6e: f04a sd s2,32(sp) + 3bc03d70: e852 sd s4,16(sp) + 3bc03d72: c35fe0ef jal ra,3bc029a6 + 3bc03d76: 0004c783 lbu a5,0(s1) # ffffffffbc400000 <__BL2_END__+0xffffffff807ecbf0> + 3bc03d7a: 0c144703 lbu a4,193(s0) + 3bc03d7e: 0064d983 lhu s3,6(s1) + 3bc03d82: fc77b60b extu a2,a5,63,7 + 3bc03d86: 07f77693 andi a3,a4,127 + 3bc03d8a: c609 beqz a2,3bc03d94 + 3bc03d8c: f8076713 ori a4,a4,-128 + 3bc03d90: 0ff77693 andi a3,a4,255 + 3bc03d94: 0607f793 andi a5,a5,96 + 3bc03d98: 25144703 lbu a4,593(s0) + 3bc03d9c: 0017b793 seqz a5,a5 + 3bc03da0: 0017979b slliw a5,a5,0x1 + 3bc03da4: 0017e793 ori a5,a5,1 + 3bc03da8: 8b8d andi a5,a5,3 + 3bc03daa: 9b71 andi a4,a4,-4 + 3bc03dac: 8fd9 or a5,a5,a4 + 3bc03dae: 24f408a3 sb a5,593(s0) + 3bc03db2: 0cd400a3 sb a3,193(s0) + 3bc03db6: 8b89 andi a5,a5,2 + 3bc03db8: 24078a63 beqz a5,3bc0400c + 3bc03dbc: 0014c703 lbu a4,1(s1) + 3bc03dc0: 47ad li a5,11 + 3bc03dc2: 2ae7e863 bltu a5,a4,3bc04072 + 3bc03dc6: 87ba mv a5,a4 + 3bc03dc8: 00007717 auipc a4,0x7 + 3bc03dcc: 0ec70713 addi a4,a4,236 # 3bc0aeb4 + 3bc03dd0: 44f7478b lrw a5,a4,a5,2 + 3bc03dd4: 97ba add a5,a5,a4 + 3bc03dd6: 8782 jr a5 + 3bc03dd8: 0024d603 lhu a2,2(s1) + 3bc03ddc: 000bc537 lui a0,0xbc + 3bc03de0: 4701 li a4,0 + 3bc03de2: 4681 li a3,0 + 3bc03de4: 4585 li a1,1 + 3bc03de6: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03dea: ad7fe0ef jal ra,3bc028c0 + 3bc03dee: 0004c783 lbu a5,0(s1) + 3bc03df2: 20079d63 bnez a5,3bc0400c + 3bc03df6: 8522 mv a0,s0 + 3bc03df8: 7442 ld s0,48(sp) + 3bc03dfa: 0024c583 lbu a1,2(s1) + 3bc03dfe: 70e2 ld ra,56(sp) + 3bc03e00: 74a2 ld s1,40(sp) + 3bc03e02: 7902 ld s2,32(sp) + 3bc03e04: 69e2 ld s3,24(sp) + 3bc03e06: 6a42 ld s4,16(sp) + 3bc03e08: 6121 addi sp,sp,64 + 3bc03e0a: d43ff06f j 3bc03b4c + 3bc03e0e: 0024d603 lhu a2,2(s1) + 3bc03e12: 4701 li a4,0 + 3bc03e14: 4681 li a3,0 + 3bc03e16: 4589 li a1,2 + 3bc03e18: 000bc537 lui a0,0xbc + 3bc03e1c: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03e20: aa1fe0ef jal ra,3bc028c0 + 3bc03e24: a2e5 j 3bc0400c + 3bc03e26: 4701 li a4,0 + 3bc03e28: 4681 li a3,0 + 3bc03e2a: 4601 li a2,0 + 3bc03e2c: 458d li a1,3 + 3bc03e2e: b7ed j 3bc03e18 + 3bc03e30: 4701 li a4,0 + 3bc03e32: 4681 li a3,0 + 3bc03e34: 4601 li a2,0 + 3bc03e36: 4591 li a1,4 + 3bc03e38: b7c5 j 3bc03e18 + 3bc03e3a: 4701 li a4,0 + 3bc03e3c: 4681 li a3,0 + 3bc03e3e: 4601 li a2,0 + 3bc03e40: 4595 li a1,5 + 3bc03e42: bfd9 j 3bc03e18 + 3bc03e44: 000bc537 lui a0,0xbc + 3bc03e48: 4701 li a4,0 + 3bc03e4a: 4681 li a3,0 + 3bc03e4c: 4601 li a2,0 + 3bc03e4e: 4599 li a1,6 + 3bc03e50: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03e54: a6dfe0ef jal ra,3bc028c0 + 3bc03e58: 0044d503 lhu a0,4(s1) + 3bc03e5c: 1c75358b extu a1,a0,7,7 + 3bc03e60: 07f57513 andi a0,a0,127 + 3bc03e64: c9aff0ef jal ra,3bc032fe + 3bc03e68: 00011723 sh zero,14(sp) + 3bc03e6c: 0004c583 lbu a1,0(s1) + 3bc03e70: 892a mv s2,a0 + 3bc03e72: 00007517 auipc a0,0x7 + 3bc03e76: 02e50513 addi a0,a0,46 # 3bc0aea0 + 3bc03e7a: 89bd andi a1,a1,15 + 3bc03e7c: 26843a03 ld s4,616(s0) + 3bc03e80: cd8fc0ef jal ra,3bc00358 + 3bc03e84: 0004c783 lbu a5,0(s1) + 3bc03e88: 4705 li a4,1 + 3bc03e8a: 8bbd andi a5,a5,15 + 3bc03e8c: 00e78a63 beq a5,a4,3bc03ea0 + 3bc03e90: 4689 li a3,2 + 3bc03e92: 06d78b63 beq a5,a3,3bc03f08 + 3bc03e96: 16079b63 bnez a5,3bc0400c + 3bc03e9a: 00e11723 sh a4,14(sp) + 3bc03e9e: a019 j 3bc03ea4 + 3bc03ea0: 00011723 sh zero,14(sp) + 3bc03ea4: 25843503 ld a0,600(s0) + 3bc03ea8: 4609 li a2,2 + 3bc03eaa: 00e10593 addi a1,sp,14 + 3bc03eae: bbffc0ef jal ra,3bc00a6c + 3bc03eb2: 6485 lui s1,0x1 + 3bc03eb4: 26042503 lw a0,608(s0) + 3bc03eb8: 91448593 addi a1,s1,-1772 # 914 <__BSS_SIZE__-0x52fc> + 3bc03ebc: 95d2 add a1,a1,s4 + 3bc03ebe: 887fd0ef jal ra,3bc01744 + 3bc03ec2: 91048593 addi a1,s1,-1776 + 3bc03ec6: 00080537 lui a0,0x80 + 3bc03eca: 95d2 add a1,a1,s4 + 3bc03ecc: 0509 addi a0,a0,2 + 3bc03ece: 90048493 addi s1,s1,-1792 + 3bc03ed2: 873fd0ef jal ra,3bc01744 + 3bc03ed6: 9a26 add s4,s4,s1 + 3bc03ed8: 8552 mv a0,s4 + 3bc03eda: 865fd0ef jal ra,3bc0173e + 3bc03ede: c00007b7 lui a5,0xc0000 + 3bc03ee2: 17fd addi a5,a5,-1 + 3bc03ee4: 2501 sext.w a0,a0 + 3bc03ee6: 8d7d and a0,a0,a5 + 3bc03ee8: 840007b7 lui a5,0x84000 + 3bc03eec: 8d5d or a0,a0,a5 + 3bc03eee: 85d2 mv a1,s4 + 3bc03ef0: 855fd0ef jal ra,3bc01744 + 3bc03ef4: 47a1 li a5,8 + 3bc03ef6: c43c sw a5,72(s0) + 3bc03ef8: 70e2 ld ra,56(sp) + 3bc03efa: 7442 ld s0,48(sp) + 3bc03efc: 74a2 ld s1,40(sp) + 3bc03efe: 7902 ld s2,32(sp) + 3bc03f00: 69e2 ld s3,24(sp) + 3bc03f02: 6a42 ld s4,16(sp) + 3bc03f04: 6121 addi sp,sp,64 + 3bc03f06: 8082 ret + 3bc03f08: 0064d703 lhu a4,6(s1) + 3bc03f0c: 10e7e063 bltu a5,a4,3bc0400c + 3bc03f10: 2901 sext.w s2,s2 + 3bc03f12: 091e slli s2,s2,0x7 + 3bc03f14: 9922 add s2,s2,s0 + 3bc03f16: 0c094783 lbu a5,192(s2) + 3bc03f1a: 00f11723 sh a5,14(sp) + 3bc03f1e: b759 j 3bc03ea4 + 3bc03f20: 000bc537 lui a0,0xbc + 3bc03f24: 4701 li a4,0 + 3bc03f26: 4681 li a3,0 + 3bc03f28: 4601 li a2,0 + 3bc03f2a: 459d li a1,7 + 3bc03f2c: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03f30: 991fe0ef jal ra,3bc028c0 + 3bc03f34: 0044d503 lhu a0,4(s1) + 3bc03f38: 1c75358b extu a1,a0,7,7 + 3bc03f3c: 07f57513 andi a0,a0,127 + 3bc03f40: bbeff0ef jal ra,3bc032fe + 3bc03f44: 00751913 slli s2,a0,0x7 + 3bc03f48: 05090913 addi s2,s2,80 + 3bc03f4c: 9922 add s2,s2,s0 + 3bc03f4e: 03893a03 ld s4,56(s2) + 3bc03f52: 258a3703 ld a4,600(s4) + 3bc03f56: 00675783 lhu a5,6(a4) + 3bc03f5a: ebcd bnez a5,3bc0400c + 3bc03f5c: 00074783 lbu a5,0(a4) + 3bc03f60: 8bbd andi a5,a5,15 + 3bc03f62: c795 beqz a5,3bc03f8e + 3bc03f64: 4689 li a3,2 + 3bc03f66: f8d799e3 bne a5,a3,3bc03ef8 + 3bc03f6a: 00275783 lhu a5,2(a4) + 3bc03f6e: f7c9 bnez a5,3bc03ef8 + 3bc03f70: 07194403 lbu s0,113(s2) + 3bc03f74: 883d andi s0,s0,15 + 3bc03f76: e415 bnez s0,3bc03fa2 + 3bc03f78: 4585 li a1,1 + 3bc03f7a: 8552 mv a0,s4 + 3bc03f7c: 7442 ld s0,48(sp) + 3bc03f7e: 70e2 ld ra,56(sp) + 3bc03f80: 74a2 ld s1,40(sp) + 3bc03f82: 7902 ld s2,32(sp) + 3bc03f84: 69e2 ld s3,24(sp) + 3bc03f86: 6a42 ld s4,16(sp) + 3bc03f88: 6121 addi sp,sp,64 + 3bc03f8a: f6eff06f j 3bc036f8 + 3bc03f8e: 8552 mv a0,s4 + 3bc03f90: 7442 ld s0,48(sp) + 3bc03f92: 70e2 ld ra,56(sp) + 3bc03f94: 74a2 ld s1,40(sp) + 3bc03f96: 7902 ld s2,32(sp) + 3bc03f98: 69e2 ld s3,24(sp) + 3bc03f9a: 6a42 ld s4,16(sp) + 3bc03f9c: 6121 addi sp,sp,64 + 3bc03f9e: edcff06f j 3bc0367a + 3bc03fa2: 8552 mv a0,s4 + 3bc03fa4: ed6ff0ef jal ra,3bc0367a + 3bc03fa8: 854a mv a0,s2 + 3bc03faa: d90ff0ef jal ra,3bc0353a + 3bc03fae: 854a mv a0,s2 + 3bc03fb0: cefff0ef jal ra,3bc03c9e + 3bc03fb4: 4785 li a5,1 + 3bc03fb6: 06090823 sb zero,112(s2) + 3bc03fba: 268a0a23 sb s0,628(s4) + 3bc03fbe: 26fa0aa3 sb a5,629(s4) + 3bc03fc2: bf1d j 3bc03ef8 + 3bc03fc4: 000bc537 lui a0,0xbc + 3bc03fc8: 4701 li a4,0 + 3bc03fca: 4681 li a3,0 + 3bc03fcc: 4601 li a2,0 + 3bc03fce: 45a1 li a1,8 + 3bc03fd0: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03fd4: 8edfe0ef jal ra,3bc028c0 + 3bc03fd8: 0044d503 lhu a0,4(s1) + 3bc03fdc: 1c75358b extu a1,a0,7,7 + 3bc03fe0: 07f57513 andi a0,a0,127 + 3bc03fe4: b1aff0ef jal ra,3bc032fe + 3bc03fe8: 051e slli a0,a0,0x7 + 3bc03fea: 05050513 addi a0,a0,80 + 3bc03fee: 9522 add a0,a0,s0 + 3bc03ff0: 03853903 ld s2,56(a0) + 3bc03ff4: 25893783 ld a5,600(s2) + 3bc03ff8: 0067d703 lhu a4,6(a5) # ffffffff84000006 <__BL2_END__+0xffffffff483ecbf6> + 3bc03ffc: eb01 bnez a4,3bc0400c + 3bc03ffe: 0007c703 lbu a4,0(a5) + 3bc04002: 8b3d andi a4,a4,15 + 3bc04004: cb15 beqz a4,3bc04038 + 3bc04006: 4689 li a3,2 + 3bc04008: 04d70563 beq a4,a3,3bc04052 + 3bc0400c: 7c1c ld a5,56(s0) + 3bc0400e: cfbd beqz a5,3bc0408c + 3bc04010: 739c ld a5,32(a5) + 3bc04012: 85a6 mv a1,s1 + 3bc04014: 8522 mv a0,s0 + 3bc04016: 9782 jalr a5 + 3bc04018: 06055263 bgez a0,3bc0407c + 3bc0401c: 0064d783 lhu a5,6(s1) + 3bc04020: 4585 li a1,1 + 3bc04022: c789 beqz a5,3bc0402c + 3bc04024: 0c140583 lb a1,193(s0) + 3bc04028: 01f5d59b srliw a1,a1,0x1f + 3bc0402c: 6448 ld a0,136(s0) + 3bc0402e: ecaff0ef jal ra,3bc036f8 + 3bc04032: 04042423 sw zero,72(s0) + 3bc04036: b5c9 j 3bc03ef8 + 3bc04038: 0027d683 lhu a3,2(a5) + 3bc0403c: 4709 li a4,2 + 3bc0403e: 00e69863 bne a3,a4,3bc0404e + 3bc04042: 0047d783 lhu a5,4(a5) + 3bc04046: 0087d79b srliw a5,a5,0x8 + 3bc0404a: 26f90b23 sb a5,630(s2) + 3bc0404e: 854a mv a0,s2 + 3bc04050: b781 j 3bc03f90 + 3bc04052: 0027d783 lhu a5,2(a5) + 3bc04056: ffe5 bnez a5,3bc0404e + 3bc04058: 07154783 lbu a5,113(a0) + 3bc0405c: 8bbd andi a5,a5,15 + 3bc0405e: e781 bnez a5,3bc04066 + 3bc04060: 4585 li a1,1 + 3bc04062: 854a mv a0,s2 + 3bc04064: bf21 j 3bc03f7c + 3bc04066: 4785 li a5,1 + 3bc04068: 06f50823 sb a5,112(a0) + 3bc0406c: d2cff0ef jal ra,3bc03598 + 3bc04070: bff9 j 3bc0404e + 3bc04072: 4701 li a4,0 + 3bc04074: 4681 li a3,0 + 3bc04076: 4601 li a2,0 + 3bc04078: 45a5 li a1,9 + 3bc0407a: bb79 j 3bc03e18 + 3bc0407c: 25144783 lbu a5,593(s0) + 3bc04080: 0017f713 andi a4,a5,1 + 3bc04084: c701 beqz a4,3bc0408c + 3bc04086: 9bf9 andi a5,a5,-2 + 3bc04088: 24f408a3 sb a5,593(s0) + 3bc0408c: e60996e3 bnez s3,3bc03ef8 + 3bc04090: 8522 mv a0,s0 + 3bc04092: bdfd j 3bc03f90 + 3bc04094: 8082 ret + +000000003bc04096 : + 3bc04096: 7119 addi sp,sp,-128 + 3bc04098: ecce sd s3,88(sp) + 3bc0409a: 2685b983 ld s3,616(a1) + 3bc0409e: f0ca sd s2,96(sp) + 3bc040a0: f8a2 sd s0,112(sp) + 3bc040a2: 01498913 addi s2,s3,20 + 3bc040a6: 854a mv a0,s2 + 3bc040a8: f4a6 sd s1,104(sp) + 3bc040aa: e0da sd s6,64(sp) + 3bc040ac: fc86 sd ra,120(sp) + 3bc040ae: e8d2 sd s4,80(sp) + 3bc040b0: e4d6 sd s5,72(sp) + 3bc040b2: fc5e sd s7,56(sp) + 3bc040b4: f862 sd s8,48(sp) + 3bc040b6: f466 sd s9,40(sp) + 3bc040b8: f06a sd s10,32(sp) + 3bc040ba: ec6e sd s11,24(sp) + 3bc040bc: 842e mv s0,a1 + 3bc040be: 01898b13 addi s6,s3,24 + 3bc040c2: e7cfd0ef jal ra,3bc0173e + 3bc040c6: 0005049b sext.w s1,a0 + 3bc040ca: 855a mv a0,s6 + 3bc040cc: e72fd0ef jal ra,3bc0173e + 3bc040d0: 1c048563 beqz s1,3bc0429a + 3bc040d4: 4430 lw a2,72(s0) + 3bc040d6: 00050a9b sext.w s5,a0 + 3bc040da: 6505 lui a0,0x1 + 3bc040dc: 81850513 addi a0,a0,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc040e0: 954e add a0,a0,s3 + 3bc040e2: e432 sd a2,8(sp) + 3bc040e4: e5afd0ef jal ra,3bc0173e + 3bc040e8: 6622 ld a2,8(sp) + 3bc040ea: 0005069b sext.w a3,a0 + 3bc040ee: 653d lui a0,0xf + 3bc040f0: 4701 li a4,0 + 3bc040f2: 85a6 mv a1,s1 + 3bc040f4: 153d addi a0,a0,-17 + 3bc040f6: fcafe0ef jal ra,3bc028c0 + 3bc040fa: 0104f793 andi a5,s1,16 + 3bc040fe: c3b5 beqz a5,3bc04162 + 3bc04100: 85da mv a1,s6 + 3bc04102: fefaf513 andi a0,s5,-17 + 3bc04106: e3efd0ef jal ra,3bc01744 + 3bc0410a: 02098513 addi a0,s3,32 + 3bc0410e: e30fd0ef jal ra,3bc0173e + 3bc04112: 00f57b93 andi s7,a0,15 + 3bc04116: 00050a1b sext.w s4,a0 + 3bc0411a: 4581 li a1,0 + 3bc0411c: 855e mv a0,s7 + 3bc0411e: 9e0ff0ef jal ra,3bc032fe + 3bc04122: 001e07b7 lui a5,0x1e0 + 3bc04126: 00fa77b3 and a5,s4,a5 + 3bc0412a: 00040737 lui a4,0x40 + 3bc0412e: 18e79663 bne a5,a4,3bc042ba + 3bc04132: 384a3a0b extu s4,s4,14,4 + 3bc04136: 020a0163 beqz s4,3bc04158 + 3bc0413a: 0005079b sext.w a5,a0 + 3bc0413e: 079e slli a5,a5,0x7 + 3bc04140: 97a2 add a5,a5,s0 + 3bc04142: 0987bc03 ld s8,152(a5) # 1e0098 <__BSS_SIZE__+0x1da488> + 3bc04146: 86d2 mv a3,s4 + 3bc04148: 85de mv a1,s7 + 3bc0414a: fd0c3603 ld a2,-48(s8) + 3bc0414e: 8522 mv a0,s0 + 3bc04150: 96dff0ef jal ra,3bc03abc + 3bc04154: ff4c2023 sw s4,-32(s8) + 3bc04158: 85da mv a1,s6 + 3bc0415a: 010ae513 ori a0,s5,16 + 3bc0415e: de6fd0ef jal ra,3bc01744 + 3bc04162: 34d4b78b extu a5,s1,13,13 + 3bc04166: cb9d beqz a5,3bc0419c + 3bc04168: 85ca mv a1,s2 + 3bc0416a: 6509 lui a0,0x2 + 3bc0416c: dd8fd0ef jal ra,3bc01744 + 3bc04170: 6505 lui a0,0x1 + 3bc04172: 80850513 addi a0,a0,-2040 # 808 <__BSS_SIZE__-0x5408> + 3bc04176: 954e add a0,a0,s3 + 3bc04178: dc6fd0ef jal ra,3bc0173e + 3bc0417c: 8919 andi a0,a0,6 + 3bc0417e: 14050b63 beqz a0,3bc042d4 + 3bc04182: 4589 li a1,2 + 3bc04184: 8522 mv a0,s0 + 3bc04186: b26ff0ef jal ra,3bc034ac + 3bc0418a: 6509 lui a0,0x2 + 3bc0418c: 4701 li a4,0 + 3bc0418e: 4681 li a3,0 + 3bc04190: 4601 li a2,0 + 3bc04192: 4589 li a1,2 + 3bc04194: 22250513 addi a0,a0,546 # 2222 <__BSS_SIZE__-0x39ee> + 3bc04198: f28fe0ef jal ra,3bc028c0 + 3bc0419c: 4004f793 andi a5,s1,1024 + 3bc041a0: c791 beqz a5,3bc041ac + 3bc041a2: 85ca mv a1,s2 + 3bc041a4: 40000513 li a0,1024 + 3bc041a8: d9cfd0ef jal ra,3bc01744 + 3bc041ac: 6505 lui a0,0x1 + 3bc041ae: 80050a13 addi s4,a0,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc041b2: 0144f7b3 and a5,s1,s4 + 3bc041b6: c395 beqz a5,3bc041da + 3bc041b8: 80850513 addi a0,a0,-2040 + 3bc041bc: 954e add a0,a0,s3 + 3bc041be: d80fd0ef jal ra,3bc0173e + 3bc041c2: 85ca mv a1,s2 + 3bc041c4: 8552 mv a0,s4 + 3bc041c6: d7efd0ef jal ra,3bc01744 + 3bc041ca: 501c lw a5,32(s0) + 3bc041cc: c799 beqz a5,3bc041da + 3bc041ce: 7c1c ld a5,56(s0) + 3bc041d0: c789 beqz a5,3bc041da + 3bc041d2: 7b9c ld a5,48(a5) + 3bc041d4: c399 beqz a5,3bc041da + 3bc041d6: 8522 mv a0,s0 + 3bc041d8: 9782 jalr a5 + 3bc041da: 0004df63 bgez s1,3bc041f8 + 3bc041de: 85ca mv a1,s2 + 3bc041e0: 80000537 lui a0,0x80000 + 3bc041e4: d60fd0ef jal ra,3bc01744 + 3bc041e8: 501c lw a5,32(s0) + 3bc041ea: c799 beqz a5,3bc041f8 + 3bc041ec: 7c1c ld a5,56(s0) + 3bc041ee: c789 beqz a5,3bc041f8 + 3bc041f0: 7f9c ld a5,56(a5) + 3bc041f2: c399 beqz a5,3bc041f8 + 3bc041f4: 8522 mv a0,s0 + 3bc041f6: 9782 jalr a5 + 3bc041f8: 008017b7 lui a5,0x801 + 3bc041fc: 8fe5 and a5,a5,s1 + 3bc041fe: c3bd beqz a5,3bc04264 + 3bc04200: 854e mv a0,s3 + 3bc04202: d3cfd0ef jal ra,3bc0173e + 3bc04206: 0005099b sext.w s3,a0 + 3bc0420a: 6505 lui a0,0x1 + 3bc0420c: 4701 li a4,0 + 3bc0420e: 4681 li a3,0 + 3bc04210: 4601 li a2,0 + 3bc04212: 85ce mv a1,s3 + 3bc04214: 11150513 addi a0,a0,273 # 1111 <__BSS_SIZE__-0x4aff> + 3bc04218: ea8fe0ef jal ra,3bc028c0 + 3bc0421c: 30c4b78b extu a5,s1,12,12 + 3bc04220: c789 beqz a5,3bc0422a + 3bc04222: 85ca mv a1,s2 + 3bc04224: 6505 lui a0,0x1 + 3bc04226: d1efd0ef jal ra,3bc01744 + 3bc0422a: 5d74b78b extu a5,s1,23,23 + 3bc0422e: c791 beqz a5,3bc0423a + 3bc04230: 85ca mv a1,s2 + 3bc04232: 00800537 lui a0,0x800 + 3bc04236: d0efd0ef jal ra,3bc01744 + 3bc0423a: 000c0537 lui a0,0xc0 + 3bc0423e: 00a9f9b3 and s3,s3,a0 + 3bc04242: 000c07b7 lui a5,0xc0 + 3bc04246: 00f99f63 bne s3,a5,3bc04264 + 3bc0424a: 27042903 lw s2,624(s0) + 3bc0424e: 8522 mv a0,s0 + 3bc04250: 9d5fe0ef jal ra,3bc02c24 + 3bc04254: 00090663 beqz s2,3bc04260 + 3bc04258: 4585 li a1,1 + 3bc0425a: 8522 mv a0,s0 + 3bc0425c: cbffe0ef jal ra,3bc02f1a + 3bc04260: 04042423 sw zero,72(s0) + 3bc04264: 4924b78b extu a5,s1,18,18 + 3bc04268: e7c1 bnez a5,3bc042f0 + 3bc0426a: 4d34b48b extu s1,s1,19,19 + 3bc0426e: c495 beqz s1,3bc0429a + 3bc04270: 26843b03 ld s6,616(s0) + 3bc04274: 6505 lui a0,0x1 + 3bc04276: 81850513 addi a0,a0,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc0427a: 955a add a0,a0,s6 + 3bc0427c: cc2fd0ef jal ra,3bc0173e + 3bc04280: 00066a37 lui s4,0x66 + 3bc04284: 6a8d lui s5,0x3 + 3bc04286: 7d05398b extu s3,a0,31,16 + 3bc0428a: 4901 li s2,0 + 3bc0428c: 4b99 li s7,6 + 3bc0428e: 666a0a13 addi s4,s4,1638 # 66666 <__BSS_SIZE__+0x60a56> + 3bc04292: 333a8a93 addi s5,s5,819 # 3333 <__BSS_SIZE__-0x28dd> + 3bc04296: 2a099963 bnez s3,3bc04548 + 3bc0429a: 70e6 ld ra,120(sp) + 3bc0429c: 7446 ld s0,112(sp) + 3bc0429e: 74a6 ld s1,104(sp) + 3bc042a0: 7906 ld s2,96(sp) + 3bc042a2: 69e6 ld s3,88(sp) + 3bc042a4: 6a46 ld s4,80(sp) + 3bc042a6: 6aa6 ld s5,72(sp) + 3bc042a8: 6b06 ld s6,64(sp) + 3bc042aa: 7be2 ld s7,56(sp) + 3bc042ac: 7c42 ld s8,48(sp) + 3bc042ae: 7ca2 ld s9,40(sp) + 3bc042b0: 7d02 ld s10,32(sp) + 3bc042b2: 6de2 ld s11,24(sp) + 3bc042b4: 4501 li a0,0 + 3bc042b6: 6109 addi sp,sp,128 + 3bc042b8: 8082 ret + 3bc042ba: 000c0737 lui a4,0xc0 + 3bc042be: e8e79de3 bne a5,a4,3bc04158 + 3bc042c2: 25843603 ld a2,600(s0) + 3bc042c6: 384a368b extu a3,s4,14,4 + 3bc042ca: 85de mv a1,s7 + 3bc042cc: 8522 mv a0,s0 + 3bc042ce: feeff0ef jal ra,3bc03abc + 3bc042d2: b559 j 3bc04158 + 3bc042d4: 6509 lui a0,0x2 + 3bc042d6: 4701 li a4,0 + 3bc042d8: 4681 li a3,0 + 3bc042da: 4601 li a2,0 + 3bc042dc: 4585 li a1,1 + 3bc042de: 22250513 addi a0,a0,546 # 2222 <__BSS_SIZE__-0x39ee> + 3bc042e2: ddefe0ef jal ra,3bc028c0 + 3bc042e6: 458d li a1,3 + 3bc042e8: 8522 mv a0,s0 + 3bc042ea: 9c2ff0ef jal ra,3bc034ac + 3bc042ee: b57d j 3bc0419c + 3bc042f0: 26843a03 ld s4,616(s0) + 3bc042f4: 6a85 lui s5,0x1 + 3bc042f6: 818a8513 addi a0,s5,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc042fa: 9552 add a0,a0,s4 + 3bc042fc: c42fd0ef jal ra,3bc0173e + 3bc04300: 00737b37 lui s6,0x737 + 3bc04304: 00747bb7 lui s7,0x747 + 3bc04308: 00055c37 lui s8,0x55 + 3bc0430c: 3c05398b extu s3,a0,15,0 + 3bc04310: 4901 li s2,0 + 3bc04312: 373b0b13 addi s6,s6,883 # 737373 <__BSS_SIZE__+0x731763> + 3bc04316: 474b8b93 addi s7,s7,1140 # 747474 <__BSS_SIZE__+0x741864> + 3bc0431a: 555c0c13 addi s8,s8,1365 # 55555 <__BSS_SIZE__+0x4f945> + 3bc0431e: 804a8a93 addi s5,s5,-2044 + 3bc04322: f40984e3 beqz s3,3bc0426a + 3bc04326: 0019f793 andi a5,s3,1 + 3bc0432a: 1c078163 beqz a5,3bc044ec + 3bc0432e: 04890c93 addi s9,s2,72 + 3bc04332: 0c96 slli s9,s9,0x5 + 3bc04334: 008c8d93 addi s11,s9,8 + 3bc04338: 9dd2 add s11,s11,s4 + 3bc0433a: 856e mv a0,s11 + 3bc0433c: c02fd0ef jal ra,3bc0173e + 3bc04340: 00050d1b sext.w s10,a0 + 3bc04344: 010c8513 addi a0,s9,16 + 3bc04348: 9552 add a0,a0,s4 + 3bc0434a: bf4fd0ef jal ra,3bc0173e + 3bc0434e: 0005069b sext.w a3,a0 + 3bc04352: 019a0533 add a0,s4,s9 + 3bc04356: e436 sd a3,8(sp) + 3bc04358: be6fd0ef jal ra,3bc0173e + 3bc0435c: 66a2 ld a3,8(sp) + 3bc0435e: 0005071b sext.w a4,a0 + 3bc04362: 866a mv a2,s10 + 3bc04364: 85ca mv a1,s2 + 3bc04366: 855a mv a0,s6 + 3bc04368: d58fe0ef jal ra,3bc028c0 + 3bc0436c: 014c8513 addi a0,s9,20 + 3bc04370: 9552 add a0,a0,s4 + 3bc04372: bccfd0ef jal ra,3bc0173e + 3bc04376: 0ce1 addi s9,s9,24 + 3bc04378: 0005059b sext.w a1,a0 + 3bc0437c: 019a0533 add a0,s4,s9 + 3bc04380: e42e sd a1,8(sp) + 3bc04382: bbcfd0ef jal ra,3bc0173e + 3bc04386: 65a2 ld a1,8(sp) + 3bc04388: 0005061b sext.w a2,a0 + 3bc0438c: 4701 li a4,0 + 3bc0438e: 4681 li a3,0 + 3bc04390: 855e mv a0,s7 + 3bc04392: d2efe0ef jal ra,3bc028c0 + 3bc04396: 856a mv a0,s10 + 3bc04398: 85ee mv a1,s11 + 3bc0439a: 001d7d13 andi s10,s10,1 + 3bc0439e: ba6fd0ef jal ra,3bc01744 + 3bc043a2: 140d0563 beqz s10,3bc044ec + 3bc043a6: 4585 li a1,1 + 3bc043a8: 854a mv a0,s2 + 3bc043aa: f55fe0ef jal ra,3bc032fe + 3bc043ae: 00050c9b sext.w s9,a0 + 3bc043b2: 0c9e slli s9,s9,0x7 + 3bc043b4: 01940833 add a6,s0,s9 + 3bc043b8: 09883603 ld a2,152(a6) + 3bc043bc: 00751d13 slli s10,a0,0x7 + 3bc043c0: 098d0d93 addi s11,s10,152 + 3bc043c4: 442c lw a1,72(s0) + 3bc043c6: 9da2 add s11,s11,s0 + 3bc043c8: 41b60633 sub a2,a2,s11 + 3bc043cc: 00163613 seqz a2,a2 + 3bc043d0: 4701 li a4,0 + 3bc043d2: 4681 li a3,0 + 3bc043d4: 8562 mv a0,s8 + 3bc043d6: e442 sd a6,8(sp) + 3bc043d8: ce8fe0ef jal ra,3bc028c0 + 3bc043dc: 4430 lw a2,72(s0) + 3bc043de: 47a1 li a5,8 + 3bc043e0: 6822 ld a6,8(sp) + 3bc043e2: 00f61a63 bne a2,a5,3bc043f6 + 3bc043e6: 4799 li a5,6 + 3bc043e8: c43c sw a5,72(s0) + 3bc043ea: 8522 mv a0,s0 + 3bc043ec: a0eff0ef jal ra,3bc035fa + 3bc043f0: 04090c63 beqz s2,3bc04448 + 3bc043f4: a8e5 j 3bc044ec + 3bc043f6: 09883703 ld a4,152(a6) + 3bc043fa: feed8be3 beq s11,a4,3bc043f0 + 3bc043fe: ffc72303 lw t1,-4(a4) # bfffc <__BSS_SIZE__+0xba3ec> + 3bc04402: fd872883 lw a7,-40(a4) + 3bc04406: 0b082783 lw a5,176(a6) + 3bc0440a: 050d0513 addi a0,s10,80 + 3bc0440e: 40688e3b subw t3,a7,t1 + 3bc04412: 0007869b sext.w a3,a5 + 3bc04416: 000e081b sext.w a6,t3 + 3bc0441a: 00d836b3 sltu a3,a6,a3 + 3bc0441e: 0016c693 xori a3,a3,1 + 3bc04422: 40de178b mveqz a5,t3,a3 + 3bc04426: 006786bb addw a3,a5,t1 + 3bc0442a: fed72e23 sw a3,-4(a4) + 3bc0442e: 9522 add a0,a0,s0 + 3bc04430: fc070593 addi a1,a4,-64 + 3bc04434: 08091c63 bnez s2,3bc044cc + 3bc04438: 4785 li a5,1 + 3bc0443a: 06f61463 bne a2,a5,3bc044a2 + 3bc0443e: ec2ff0ef jal ra,3bc03b00 + 3bc04442: c119 beqz a0,3bc04448 + 3bc04444: 4795 li a5,5 + 3bc04446: c43c sw a5,72(s0) + 3bc04448: 27644783 lbu a5,630(s0) + 3bc0444c: c3a9 beqz a5,3bc0448e + 3bc0444e: 26843d03 ld s10,616(s0) + 3bc04452: 00078d9b sext.w s11,a5 + 3bc04456: e43e sd a5,8(sp) + 3bc04458: 9d56 add s10,s10,s5 + 3bc0445a: 856a mv a0,s10 + 3bc0445c: ae2fd0ef jal ra,3bc0173e + 3bc04460: 67a2 ld a5,8(sp) + 3bc04462: 00050c9b sext.w s9,a0 + 3bc04466: 4711 li a4,4 + 3bc04468: 37fd addiw a5,a5,-1 + 3bc0446a: f8fcfc93 andi s9,s9,-113 + 3bc0446e: 02f76063 bltu a4,a5,3bc0448e + 3bc04472: 85ee mv a1,s11 + 3bc04474: 00007517 auipc a0,0x7 + 3bc04478: a7450513 addi a0,a0,-1420 # 3bc0aee8 + 3bc0447c: eddfb0ef jal ra,3bc00358 + 3bc04480: 004d9513 slli a0,s11,0x4 + 3bc04484: 85ea mv a1,s10 + 3bc04486: 01956533 or a0,a0,s9 + 3bc0448a: abafd0ef jal ra,3bc01744 + 3bc0448e: 443c lw a5,72(s0) + 3bc04490: 471d li a4,7 + 3bc04492: 06e79363 bne a5,a4,3bc044f8 + 3bc04496: 04042423 sw zero,72(s0) + 3bc0449a: 8522 mv a0,s0 + 3bc0449c: c6aff0ef jal ra,3bc03906 + 3bc044a0: a8a9 j 3bc044fa + 3bc044a2: 479d li a5,7 + 3bc044a4: 00f61863 bne a2,a5,3bc044b4 + 3bc044a8: 4601 li a2,0 + 3bc044aa: c68fe0ef jal ra,3bc02912 + 3bc044ae: 04042423 sw zero,72(s0) + 3bc044b2: bf59 j 3bc04448 + 3bc044b4: 4795 li a5,5 + 3bc044b6: f8f619e3 bne a2,a5,3bc04448 + 3bc044ba: 4601 li a2,0 + 3bc044bc: c56fe0ef jal ra,3bc02912 + 3bc044c0: 4799 li a5,6 + 3bc044c2: c43c sw a5,72(s0) + 3bc044c4: 8522 mv a0,s0 + 3bc044c6: 934ff0ef jal ra,3bc035fa + 3bc044ca: bfbd j 3bc04448 + 3bc044cc: 00d89763 bne a7,a3,3bc044da + 3bc044d0: 4601 li a2,0 + 3bc044d2: e42a sd a0,8(sp) + 3bc044d4: c3efe0ef jal ra,3bc02912 + 3bc044d8: 6522 ld a0,8(sp) + 3bc044da: 9ca2 add s9,s9,s0 + 3bc044dc: 098cb583 ld a1,152(s9) + 3bc044e0: 00bd8663 beq s11,a1,3bc044ec + 3bc044e4: fc058593 addi a1,a1,-64 + 3bc044e8: c78ff0ef jal ra,3bc03960 + 3bc044ec: 2905 addiw s2,s2,1 + 3bc044ee: 0ff97913 andi s2,s2,255 + 3bc044f2: 0019d993 srli s3,s3,0x1 + 3bc044f6: b535 j 3bc04322 + 3bc044f8: d3cd beqz a5,3bc0449a + 3bc044fa: 27544703 lbu a4,629(s0) + 3bc044fe: 4785 li a5,1 + 3bc04500: fef716e3 bne a4,a5,3bc044ec + 3bc04504: 27444503 lbu a0,628(s0) + 3bc04508: 4585 li a1,1 + 3bc0450a: df5fe0ef jal ra,3bc032fe + 3bc0450e: 0005071b sext.w a4,a0 + 3bc04512: 071e slli a4,a4,0x7 + 3bc04514: 9722 add a4,a4,s0 + 3bc04516: 00751793 slli a5,a0,0x7 + 3bc0451a: 6f4c ld a1,152(a4) + 3bc0451c: 05078513 addi a0,a5,80 # c0050 <__BSS_SIZE__+0xba440> + 3bc04520: 09878793 addi a5,a5,152 + 3bc04524: 97a2 add a5,a5,s0 + 3bc04526: 9522 add a0,a0,s0 + 3bc04528: 00f58a63 beq a1,a5,3bc0453c + 3bc0452c: 0c170783 lb a5,193(a4) + 3bc04530: fc058593 addi a1,a1,-64 + 3bc04534: 0007d763 bgez a5,3bc04542 + 3bc04538: c28ff0ef jal ra,3bc03960 + 3bc0453c: 26040aa3 sb zero,629(s0) + 3bc04540: b775 j 3bc044ec + 3bc04542: a1eff0ef jal ra,3bc03760 + 3bc04546: bfdd j 3bc0453c + 3bc04548: 0019f793 andi a5,s3,1 + 3bc0454c: c3a1 beqz a5,3bc0458c + 3bc0454e: 05890493 addi s1,s2,88 + 3bc04552: 0496 slli s1,s1,0x5 + 3bc04554: 04a1 addi s1,s1,8 + 3bc04556: 94da add s1,s1,s6 + 3bc04558: 8526 mv a0,s1 + 3bc0455a: 9e4fd0ef jal ra,3bc0173e + 3bc0455e: 0005061b sext.w a2,a0 + 3bc04562: 8532 mv a0,a2 + 3bc04564: 85a6 mv a1,s1 + 3bc04566: e432 sd a2,8(sp) + 3bc04568: 9dcfd0ef jal ra,3bc01744 + 3bc0456c: 6622 ld a2,8(sp) + 3bc0456e: 06091063 bnez s2,3bc045ce + 3bc04572: 00867793 andi a5,a2,8 + 3bc04576: c38d beqz a5,3bc04598 + 3bc04578: 8556 mv a0,s5 + 3bc0457a: 4701 li a4,0 + 3bc0457c: 4681 li a3,0 + 3bc0457e: 4601 li a2,0 + 3bc04580: 4581 li a1,0 + 3bc04582: b3efe0ef jal ra,3bc028c0 + 3bc04586: 8522 mv a0,s0 + 3bc04588: fc8ff0ef jal ra,3bc03d50 + 3bc0458c: 2905 addiw s2,s2,1 + 3bc0458e: 0ff97913 andi s2,s2,255 + 3bc04592: 0019d993 srli s3,s3,0x1 + 3bc04596: b301 j 3bc04296 + 3bc04598: 00167793 andi a5,a2,1 + 3bc0459c: dbe5 beqz a5,3bc0458c + 3bc0459e: 443c lw a5,72(s0) + 3bc045a0: 4701 li a4,0 + 3bc045a2: 4681 li a3,0 + 3bc045a4: 01778b63 beq a5,s7,3bc045ba + 3bc045a8: 4585 li a1,1 + 3bc045aa: 8552 mv a0,s4 + 3bc045ac: b14fe0ef jal ra,3bc028c0 + 3bc045b0: 4581 li a1,0 + 3bc045b2: 8522 mv a0,s0 + 3bc045b4: a56ff0ef jal ra,3bc0380a + 3bc045b8: bfd1 j 3bc0458c + 3bc045ba: 8552 mv a0,s4 + 3bc045bc: 4589 li a1,2 + 3bc045be: b02fe0ef jal ra,3bc028c0 + 3bc045c2: 8522 mv a0,s0 + 3bc045c4: 04042423 sw zero,72(s0) + 3bc045c8: b3eff0ef jal ra,3bc03906 + 3bc045cc: b7c1 j 3bc0458c + 3bc045ce: 8a05 andi a2,a2,1 + 3bc045d0: de55 beqz a2,3bc0458c + 3bc045d2: 85ca mv a1,s2 + 3bc045d4: bff9 j 3bc045b2 + +000000003bc045d6 : + 3bc045d6: 07158703 lb a4,113(a1) + 3bc045da: 00075663 bgez a4,3bc045e6 + 3bc045de: 4705 li a4,1 + 3bc045e0: c538 sw a4,72(a0) + 3bc045e2: ddaff06f j 3bc03bbc + 3bc045e6: 4711 li a4,4 + 3bc045e8: c538 sw a4,72(a0) + 3bc045ea: daaff06f j 3bc03b94 + +000000003bc045ee : + 3bc045ee: e581 bnez a1,3bc045f6 + 3bc045f0: 57a9 li a5,-22 + 3bc045f2: 853e mv a0,a5 + 3bc045f4: 8082 ret + 3bc045f6: 759c ld a5,40(a1) + 3bc045f8: dfe5 beqz a5,3bc045f0 + 3bc045fa: 699c ld a5,16(a1) + 3bc045fc: dbf5 beqz a5,3bc045f0 + 3bc045fe: 61bc ld a5,64(a1) + 3bc04600: 7179 addi sp,sp,-48 + 3bc04602: e84a sd s2,16(sp) + 3bc04604: f406 sd ra,40(sp) + 3bc04606: f022 sd s0,32(sp) + 3bc04608: ec26 sd s1,24(sp) + 3bc0460a: e44e sd s3,8(sp) + 3bc0460c: 04058913 addi s2,a1,64 + 3bc04610: 06f91763 bne s2,a5,3bc0467e + 3bc04614: c52d beqz a0,3bc0467e + 3bc04616: 613c ld a5,64(a0) + 3bc04618: 84ae mv s1,a1 + 3bc0461a: 842a mv s0,a0 + 3bc0461c: cbb9 beqz a5,3bc04672 + 3bc0461e: 7c08 ld a0,56(s0) + 3bc04620: 07144683 lbu a3,113(s0) + 3bc04624: fc600793 li a5,-58 + 3bc04628: 7d18 ld a4,56(a0) + 3bc0462a: cb39 beqz a4,3bc04680 + 3bc0462c: 5118 lw a4,32(a0) + 3bc0462e: fc600793 li a5,-58 + 3bc04632: c739 beqz a4,3bc04680 + 3bc04634: 4785 li a5,1 + 3bc04636: 1782 slli a5,a5,0x20 + 3bc04638: fdc78793 addi a5,a5,-36 + 3bc0463c: 26853703 ld a4,616(a0) + 3bc04640: fc9c sd a5,56(s1) + 3bc04642: 643c ld a5,72(s0) + 3bc04644: 04840993 addi s3,s0,72 + 3bc04648: 04f99f63 bne s3,a5,3bc046a6 + 3bc0464c: 07044783 lbu a5,112(s0) + 3bc04650: ebb9 bnez a5,3bc046a6 + 3bc04652: 00f6f793 andi a5,a3,15 + 3bc04656: ef8d bnez a5,3bc04690 + 3bc04658: 683c ld a5,80(s0) + 3bc0465a: 05243823 sd s2,80(s0) + 3bc0465e: 0534b023 sd s3,64(s1) + 3bc04662: e4bc sd a5,72(s1) + 3bc04664: 0127b023 sd s2,0(a5) + 3bc04668: 85a2 mv a1,s0 + 3bc0466a: f6dff0ef jal ra,3bc045d6 + 3bc0466e: 4781 li a5,0 + 3bc04670: a801 j 3bc04680 + 3bc04672: 01853983 ld s3,24(a0) + 3bc04676: a4cfe0ef jal ra,3bc028c2 + 3bc0467a: faa982e3 beq s3,a0,3bc0461e + 3bc0467e: 57a9 li a5,-22 + 3bc04680: 70a2 ld ra,40(sp) + 3bc04682: 7402 ld s0,32(sp) + 3bc04684: 64e2 ld s1,24(sp) + 3bc04686: 6942 ld s2,16(sp) + 3bc04688: 69a2 ld s3,8(sp) + 3bc0468a: 853e mv a0,a5 + 3bc0468c: 6145 addi sp,sp,48 + 3bc0468e: 8082 ret + 3bc04690: fc76b78b extu a5,a3,63,7 + 3bc04694: 01470513 addi a0,a4,20 + 3bc04698: c385 beqz a5,3bc046b8 + 3bc0469a: 8a4fd0ef jal ra,3bc0173e + 3bc0469e: 85a6 mv a1,s1 + 3bc046a0: 8522 mv a0,s0 + 3bc046a2: abeff0ef jal ra,3bc03960 + 3bc046a6: 683c ld a5,80(s0) + 3bc046a8: 05243823 sd s2,80(s0) + 3bc046ac: 0534b023 sd s3,64(s1) + 3bc046b0: e4bc sd a5,72(s1) + 3bc046b2: 0127b023 sd s2,0(a5) + 3bc046b6: bf65 j 3bc0466e + 3bc046b8: 886fd0ef jal ra,3bc0173e + 3bc046bc: 85a6 mv a1,s1 + 3bc046be: 8522 mv a0,s0 + 3bc046c0: 8a0ff0ef jal ra,3bc03760 + 3bc046c4: b7cd j 3bc046a6 + +000000003bc046c6 : + 3bc046c6: 7179 addi sp,sp,-48 + 3bc046c8: f022 sd s0,32(sp) + 3bc046ca: ec26 sd s1,24(sp) + 3bc046cc: f406 sd ra,40(sp) + 3bc046ce: e432 sd a2,8(sp) + 3bc046d0: 0e0007b7 lui a5,0xe000 + 3bc046d4: 84ae mv s1,a1 + 3bc046d6: 638c ld a1,0(a5) + 3bc046d8: 842a mv s0,a0 + 3bc046da: 00007517 auipc a0,0x7 + 3bc046de: 82650513 addi a0,a0,-2010 # 3bc0af00 + 3bc046e2: 5055b78b extu a5,a1,20,5 + 3bc046e6: 85be mv a1,a5 + 3bc046e8: 00007717 auipc a4,0x7 + 3bc046ec: 00f71823 sh a5,16(a4) # 3bc0b6f8 + 3bc046f0: c69fb0ef jal ra,3bc00358 + 3bc046f4: 8522 mv a0,s0 + 3bc046f6: 7402 ld s0,32(sp) + 3bc046f8: 6622 ld a2,8(sp) + 3bc046fa: 70a2 ld ra,40(sp) + 3bc046fc: 85a6 mv a1,s1 + 3bc046fe: 64e2 ld s1,24(sp) + 3bc04700: 6145 addi sp,sp,48 + 3bc04702: bd5fd06f j 3bc022d6 + +000000003bc04706 : + 3bc04706: 4781 li a5,0 + 3bc04708: 00007697 auipc a3,0x7 + 3bc0470c: 81068693 addi a3,a3,-2032 # 3bc0af18 + 3bc04710: 0007871b sext.w a4,a5 + 3bc04714: 00c74363 blt a4,a2,3bc0471a + 3bc04718: 8082 ret + 3bc0471a: 80f5c80b lrbu a6,a1,a5,0 + 3bc0471e: 9c85370b extu a4,a0,39,8 + 3bc04722: 0085151b slliw a0,a0,0x8 + 3bc04726: 01074733 xor a4,a4,a6 + 3bc0472a: a2e6c70b lrhu a4,a3,a4,1 + 3bc0472e: 0785 addi a5,a5,1 + 3bc04730: 8d39 xor a0,a0,a4 + 3bc04732: 3c05350b extu a0,a0,15,0 + 3bc04736: bfe9 j 3bc04710 + +000000003bc04738 : + 3bc04738: 4d78 lw a4,92(a0) + 3bc0473a: 11000793 li a5,272 + 3bc0473e: fff7069b addiw a3,a4,-1 + 3bc04742: 04d7e563 bltu a5,a3,3bc0478c + 3bc04746: 7510 ld a2,40(a0) + 3bc04748: 7c07368b extu a3,a4,31,0 + 3bc0474c: 01853803 ld a6,24(a0) + 3bc04750: 8d91 sub a1,a1,a2 + 3bc04752: 02053e03 ld t3,32(a0) + 3bc04756: 04856883 lwu a7,72(a0) + 3bc0475a: 87ba mv a5,a4 + 3bc0475c: 00d5f463 bgeu a1,a3,3bc04764 + 3bc04760: 0005879b sext.w a5,a1 + 3bc04764: 416c lw a1,68(a0) + 3bc04766: 4134 lw a3,64(a0) + 3bc04768: e599 bnez a1,3bc04776 + 3bc0476a: 414c lw a1,4(a0) + 3bc0476c: 40d5833b subw t1,a1,a3 + 3bc04770: 0067e363 bltu a5,t1,3bc04776 + 3bc04774: c16c sw a1,68(a0) + 3bc04776: 9ebd addw a3,a3,a5 + 3bc04778: 9f1d subw a4,a4,a5 + 3bc0477a: c134 sw a3,64(a0) + 3bc0477c: cd78 sw a4,92(a0) + 3bc0477e: 86be mv a3,a5 + 3bc04780: 8732 mv a4,a2 + 3bc04782: e691 bnez a3,3bc0478e + 3bc04784: 7c07b78b extu a5,a5,31,0 + 3bc04788: 97b2 add a5,a5,a2 + 3bc0478a: f51c sd a5,40(a0) + 3bc0478c: 8082 ret + 3bc0478e: 36fd addiw a3,a3,-1 + 3bc04790: 411705b3 sub a1,a4,a7 + 3bc04794: 8372 mv t1,t3 + 3bc04796: 01176363 bltu a4,a7,3bc0479c + 3bc0479a: 4301 li t1,0 + 3bc0479c: 95c2 add a1,a1,a6 + 3bc0479e: 8065c58b lrbu a1,a1,t1,0 + 3bc047a2: 00e8558b srb a1,a6,a4,0 + 3bc047a6: 0705 addi a4,a4,1 + 3bc047a8: bfe9 j 3bc04782 + +000000003bc047aa : + 3bc047aa: 7155 addi sp,sp,-208 + 3bc047ac: e1a2 sd s0,192(sp) + 3bc047ae: 6405 lui s0,0x1 + 3bc047b0: e586 sd ra,200(sp) + 3bc047b2: fd26 sd s1,184(sp) + 3bc047b4: f94a sd s2,176(sp) + 3bc047b6: f54e sd s3,168(sp) + 3bc047b8: f152 sd s4,160(sp) + 3bc047ba: ed56 sd s5,152(sp) + 3bc047bc: e95a sd s6,144(sp) + 3bc047be: e55e sd s7,136(sp) + 3bc047c0: e162 sd s8,128(sp) + 3bc047c2: fce6 sd s9,120(sp) + 3bc047c4: f8ea sd s10,112(sp) + 3bc047c6: f4ee sd s11,104(sp) + 3bc047c8: e82e sd a1,16(sp) + 3bc047ca: f832 sd a2,48(sp) + 3bc047cc: 8004041b addiw s0,s0,-2048 + 3bc047d0: 417c lw a5,68(a0) + 3bc047d2: 04052e03 lw t3,64(a0) + 3bc047d6: 02853803 ld a6,40(a0) + 3bc047da: ec3e sd a5,24(sp) + 3bc047dc: eba1 bnez a5,3bc0482c + 3bc047de: 415c lw a5,4(a0) + 3bc047e0: 6742 ld a4,16(sp) + 3bc047e2: 66c2 ld a3,16(sp) + 3bc047e4: 41c787bb subw a5,a5,t3 + 3bc047e8: 7c07b78b extu a5,a5,31,0 + 3bc047ec: 41070733 sub a4,a4,a6 + 3bc047f0: e436 sd a3,8(sp) + 3bc047f2: 00e7f463 bgeu a5,a4,3bc047fa + 3bc047f6: 97c2 add a5,a5,a6 + 3bc047f8: e43e sd a5,8(sp) + 3bc047fa: 020e1b63 bnez t3,3bc04830 + 3bc047fe: 5d58 lw a4,60(a0) + 3bc04800: c00007b7 lui a5,0xc0000 + 3bc04804: bff78793 addi a5,a5,-1025 # ffffffffbffffbff <__BL2_END__+0xffffffff843ec7ef> + 3bc04808: 02e7f463 bgeu a5,a4,3bc04830 + 3bc0480c: 4505 li a0,1 + 3bc0480e: 60ae ld ra,200(sp) + 3bc04810: 640e ld s0,192(sp) + 3bc04812: 74ea ld s1,184(sp) + 3bc04814: 794a ld s2,176(sp) + 3bc04816: 79aa ld s3,168(sp) + 3bc04818: 7a0a ld s4,160(sp) + 3bc0481a: 6aea ld s5,152(sp) + 3bc0481c: 6b4a ld s6,144(sp) + 3bc0481e: 6baa ld s7,136(sp) + 3bc04820: 6c0a ld s8,128(sp) + 3bc04822: 7ce6 ld s9,120(sp) + 3bc04824: 7d46 ld s10,112(sp) + 3bc04826: 7da6 ld s11,104(sp) + 3bc04828: 6169 addi sp,sp,208 + 3bc0482a: 8082 ret + 3bc0482c: 67c2 ld a5,16(sp) + 3bc0482e: e43e sd a5,8(sp) + 3bc04830: 497c lw a5,84(a0) + 3bc04832: 00154703 lbu a4,1(a0) + 3bc04836: 690c ld a1,16(a0) + 3bc04838: f03e sd a5,32(sp) + 3bc0483a: 00054783 lbu a5,0(a0) + 3bc0483e: 00254303 lbu t1,2(a0) + 3bc04842: 74fd lui s1,0xfffff + 3bc04844: f43e sd a5,40(sp) + 3bc04846: 76a2 ld a3,40(sp) + 3bc04848: 10000793 li a5,256 + 3bc0484c: 00e7973b sllw a4,a5,a4 + 3bc04850: 02053a83 ld s5,32(a0) + 3bc04854: 00d7d7bb srlw a5,a5,a3 + 3bc04858: 60048493 addi s1,s1,1536 # fffffffffffff600 <__BL2_END__+0xffffffffc43ec1f0> + 3bc0485c: 56fd li a3,-1 + 3bc0485e: 40f707bb subw a5,a4,a5 + 3bc04862: 006696bb sllw a3,a3,t1 + 3bc04866: 94ae add s1,s1,a1 + 3bc04868: fc3e sd a5,56(sp) + 3bc0486a: fff6c693 not a3,a3 + 3bc0486e: e4a6 sd s1,72(sp) + 3bc04870: 05852883 lw a7,88(a0) + 3bc04874: a0058493 addi s1,a1,-1536 + 3bc04878: 04852f83 lw t6,72(a0) + 3bc0487c: 04c52f03 lw t5,76(a0) + 3bc04880: 05052983 lw s3,80(a0) + 3bc04884: 01853a03 ld s4,24(a0) + 3bc04888: 7918 ld a4,48(a0) + 3bc0488a: 5d10 lw a2,56(a0) + 3bc0488c: 5d5c lw a5,60(a0) + 3bc0488e: 2681 sext.w a3,a3 + 3bc04890: e8a6 sd s1,80(sp) + 3bc04892: fffa8493 addi s1,s5,-1 + 3bc04896: e0b6 sd a3,64(sp) + 3bc04898: 4301 li t1,0 + 3bc0489a: 010006b7 lui a3,0x1000 + 3bc0489e: eca6 sd s1,88(sp) + 3bc048a0: 6486 ld s1,64(sp) + 3bc048a2: 01c4feb3 and t4,s1,t3 + 3bc048a6: 004e9e9b slliw t4,t4,0x4 + 3bc048aa: 011e893b addw s2,t4,a7 + 3bc048ae: 02091493 slli s1,s2,0x20 + 3bc048b2: 01f4d913 srli s2,s1,0x1f + 3bc048b6: e0090b93 addi s7,s2,-512 + 3bc048ba: a175cb0b lrhu s6,a1,s7,0 + 3bc048be: 000b039b sext.w t2,s6 + 3bc048c2: 00d67a63 bgeu a2,a3,3bc048d6 + 3bc048c6: 9817428b lbuia t0,(a4),1,0 + 3bc048ca: 0087979b slliw a5,a5,0x8 + 3bc048ce: 0086161b slliw a2,a2,0x8 + 3bc048d2: 00f2e7b3 or a5,t0,a5 + 3bc048d6: 00b6529b srliw t0,a2,0xb + 3bc048da: 027284bb mulw s1,t0,t2 + 3bc048de: 82a6 mv t0,s1 + 3bc048e0: 7497f663 bgeu a5,s1,3bc0502c + 3bc048e4: 6ee2 ld t4,24(sp) + 3bc048e6: 407403bb subw t2,s0,t2 + 3bc048ea: 0053d39b srliw t2,t2,0x5 + 3bc048ee: 016383bb addw t2,t2,s6 + 3bc048f2: 2175d38b srh t2,a1,s7,0 + 3bc048f6: 01ceeeb3 or t4,t4,t3 + 3bc048fa: 28058613 addi a2,a1,640 + 3bc048fe: 020e8b63 beqz t4,3bc04934 + 3bc04902: 6966 ld s2,88(sp) + 3bc04904: fff80393 addi t2,a6,-1 + 3bc04908: 008e1e9b slliw t4,t3,0x8 + 3bc0490c: 4109138b mveqz t2,s2,a6 + 3bc04910: 807a438b lrbu t2,s4,t2,0 + 3bc04914: 01d38ebb addw t4,t2,t4 + 3bc04918: 73e2 ld t2,56(sp) + 3bc0491a: 01d3feb3 and t4,t2,t4 + 3bc0491e: 73a2 ld t2,40(sp) + 3bc04920: 007e9ebb sllw t4,t4,t2 + 3bc04924: 438d li t2,3 + 3bc04926: 027e8ebb mulw t4,t4,t2 + 3bc0492a: 020e9393 slli t2,t4,0x20 + 3bc0492e: 01f3de93 srli t4,t2,0x1f + 3bc04932: 9676 add a2,a2,t4 + 3bc04934: 4e99 li t4,6 + 3bc04936: 2e05 addiw t3,t3,1 + 3bc04938: 311eef63 bltu t4,a7,3bc04c56 + 3bc0493c: 438d li t2,3 + 3bc0493e: 8ec6 mv t4,a7 + 3bc04940: 0113f363 bgeu t2,a7,3bc04946 + 3bc04944: 4e8d li t4,3 + 3bc04946: 00265383 lhu t2,2(a2) + 3bc0494a: 41d888bb subw a7,a7,t4 + 3bc0494e: 00038e9b sext.w t4,t2 + 3bc04952: 00d4fa63 bgeu s1,a3,3bc04966 + 3bc04956: 0082949b slliw s1,t0,0x8 + 3bc0495a: 9817428b lbuia t0,(a4),1,0 + 3bc0495e: 0087979b slliw a5,a5,0x8 + 3bc04962: 00f2e7b3 or a5,t0,a5 + 3bc04966: 00b4d29b srliw t0,s1,0xb + 3bc0496a: 03d2893b mulw s2,t0,t4 + 3bc0496e: 2327f563 bgeu a5,s2,3bc04b98 + 3bc04972: 41d40ebb subw t4,s0,t4 + 3bc04976: 005ede9b srliw t4,t4,0x5 + 3bc0497a: 007e83bb addw t2,t4,t2 + 3bc0497e: 3c03b38b extu t2,t2,15,0 + 3bc04982: 4e89 li t4,2 + 3bc04984: 00761123 sh t2,2(a2) + 3bc04988: b3d6448b lurhu s1,a2,t4,1 + 3bc0498c: 03d61b8b addsl s7,a2,t4,1 + 3bc04990: 0004829b sext.w t0,s1 + 3bc04994: 00d97a63 bgeu s2,a3,3bc049a8 + 3bc04998: 9817438b lbuia t2,(a4),1,0 + 3bc0499c: 0087979b slliw a5,a5,0x8 + 3bc049a0: 0089191b slliw s2,s2,0x8 + 3bc049a4: 00f3e7b3 or a5,t2,a5 + 3bc049a8: 00b95b1b srliw s6,s2,0xb + 3bc049ac: 025b03bb mulw t2,s6,t0 + 3bc049b0: 001e9c1b slliw s8,t4,0x1 + 3bc049b4: 0e86 slli t4,t4,0x1 + 3bc049b6: 1e77fd63 bgeu a5,t2,3bc04bb0 + 3bc049ba: 405402bb subw t0,s0,t0 + 3bc049be: 0052d29b srliw t0,t0,0x5 + 3bc049c2: 009284bb addw s1,t0,s1 + 3bc049c6: 3c04b48b extu s1,s1,15,0 + 3bc049ca: 009b9023 sh s1,0(s7) + 3bc049ce: b3d6490b lurhu s2,a2,t4,1 + 3bc049d2: 020e9493 slli s1,t4,0x20 + 3bc049d6: 01f4dc13 srli s8,s1,0x1f + 3bc049da: 9c32 add s8,s8,a2 + 3bc049dc: 0009029b sext.w t0,s2 + 3bc049e0: 00d3f963 bgeu t2,a3,3bc049f2 + 3bc049e4: 9817448b lbuia s1,(a4),1,0 + 3bc049e8: 0087979b slliw a5,a5,0x8 + 3bc049ec: 0083939b slliw t2,t2,0x8 + 3bc049f0: 8fc5 or a5,a5,s1 + 3bc049f2: 00b3db9b srliw s7,t2,0xb + 3bc049f6: 025b84bb mulw s1,s7,t0 + 3bc049fa: 001e9b1b slliw s6,t4,0x1 + 3bc049fe: 1c97f663 bgeu a5,s1,3bc04bca + 3bc04a02: 405402bb subw t0,s0,t0 + 3bc04a06: 0052d29b srliw t0,t0,0x5 + 3bc04a0a: 0122893b addw s2,t0,s2 + 3bc04a0e: 3c09390b extu s2,s2,15,0 + 3bc04a12: 012c1023 sh s2,0(s8) + 3bc04a16: b366428b lurhu t0,a2,s6,1 + 3bc04a1a: 020b1e93 slli t4,s6,0x20 + 3bc04a1e: 01fedc13 srli s8,t4,0x1f + 3bc04a22: 9c32 add s8,s8,a2 + 3bc04a24: 00028e9b sext.w t4,t0 + 3bc04a28: 00d4fa63 bgeu s1,a3,3bc04a3c + 3bc04a2c: 9817438b lbuia t2,(a4),1,0 + 3bc04a30: 0087979b slliw a5,a5,0x8 + 3bc04a34: 0084949b slliw s1,s1,0x8 + 3bc04a38: 00f3e7b3 or a5,t2,a5 + 3bc04a3c: 00b4db9b srliw s7,s1,0xb + 3bc04a40: 03db83bb mulw t2,s7,t4 + 3bc04a44: 001b191b slliw s2,s6,0x1 + 3bc04a48: 1877fc63 bgeu a5,t2,3bc04be0 + 3bc04a4c: 41d40ebb subw t4,s0,t4 + 3bc04a50: 005ede9b srliw t4,t4,0x5 + 3bc04a54: 005e82bb addw t0,t4,t0 + 3bc04a58: 3c02b28b extu t0,t0,15,0 + 3bc04a5c: 02091493 slli s1,s2,0x20 + 3bc04a60: 005c1023 sh t0,0(s8) + 3bc04a64: 01f4db93 srli s7,s1,0x1f + 3bc04a68: b326448b lurhu s1,a2,s2,1 + 3bc04a6c: 9bb2 add s7,s7,a2 + 3bc04a6e: 00048e9b sext.w t4,s1 + 3bc04a72: 00d3fa63 bgeu t2,a3,3bc04a86 + 3bc04a76: 9817428b lbuia t0,(a4),1,0 + 3bc04a7a: 0087979b slliw a5,a5,0x8 + 3bc04a7e: 0083939b slliw t2,t2,0x8 + 3bc04a82: 00f2e7b3 or a5,t0,a5 + 3bc04a86: 00b3db1b srliw s6,t2,0xb + 3bc04a8a: 03db02bb mulw t0,s6,t4 + 3bc04a8e: 0019191b slliw s2,s2,0x1 + 3bc04a92: 1657f363 bgeu a5,t0,3bc04bf8 + 3bc04a96: 41d40ebb subw t4,s0,t4 + 3bc04a9a: 005ede9b srliw t4,t4,0x5 + 3bc04a9e: 009e84bb addw s1,t4,s1 + 3bc04aa2: 3c04b48b extu s1,s1,15,0 + 3bc04aa6: 009b9023 sh s1,0(s7) + 3bc04aaa: 02091493 slli s1,s2,0x20 + 3bc04aae: 01f4db93 srli s7,s1,0x1f + 3bc04ab2: b326448b lurhu s1,a2,s2,1 + 3bc04ab6: 9bb2 add s7,s7,a2 + 3bc04ab8: 00048e9b sext.w t4,s1 + 3bc04abc: 00d2fa63 bgeu t0,a3,3bc04ad0 + 3bc04ac0: 9817438b lbuia t2,(a4),1,0 + 3bc04ac4: 0087979b slliw a5,a5,0x8 + 3bc04ac8: 0082929b slliw t0,t0,0x8 + 3bc04acc: 00f3e7b3 or a5,t2,a5 + 3bc04ad0: 00b2db1b srliw s6,t0,0xb + 3bc04ad4: 03db03bb mulw t2,s6,t4 + 3bc04ad8: 0019191b slliw s2,s2,0x1 + 3bc04adc: 1277fa63 bgeu a5,t2,3bc04c10 + 3bc04ae0: 41d40ebb subw t4,s0,t4 + 3bc04ae4: 005ede9b srliw t4,t4,0x5 + 3bc04ae8: 009e84bb addw s1,t4,s1 + 3bc04aec: 3c04b48b extu s1,s1,15,0 + 3bc04af0: 009b9023 sh s1,0(s7) + 3bc04af4: 02091493 slli s1,s2,0x20 + 3bc04af8: 01f4db93 srli s7,s1,0x1f + 3bc04afc: b326448b lurhu s1,a2,s2,1 + 3bc04b00: 9bb2 add s7,s7,a2 + 3bc04b02: 00048e9b sext.w t4,s1 + 3bc04b06: 00d3fa63 bgeu t2,a3,3bc04b1a + 3bc04b0a: 9817428b lbuia t0,(a4),1,0 + 3bc04b0e: 0087979b slliw a5,a5,0x8 + 3bc04b12: 0083939b slliw t2,t2,0x8 + 3bc04b16: 00f2e7b3 or a5,t0,a5 + 3bc04b1a: 00b3db1b srliw s6,t2,0xb + 3bc04b1e: 03db02bb mulw t0,s6,t4 + 3bc04b22: 0019191b slliw s2,s2,0x1 + 3bc04b26: 1057f163 bgeu a5,t0,3bc04c28 + 3bc04b2a: 41d40ebb subw t4,s0,t4 + 3bc04b2e: 005ede9b srliw t4,t4,0x5 + 3bc04b32: 009e84bb addw s1,t4,s1 + 3bc04b36: 3c04b48b extu s1,s1,15,0 + 3bc04b3a: 009b9023 sh s1,0(s7) + 3bc04b3e: b3264b8b lurhu s7,a2,s2,1 + 3bc04b42: 02091493 slli s1,s2,0x20 + 3bc04b46: 01f4db13 srli s6,s1,0x1f + 3bc04b4a: 9b32 add s6,s6,a2 + 3bc04b4c: 000b8e9b sext.w t4,s7 + 3bc04b50: 00d2f963 bgeu t0,a3,3bc04b62 + 3bc04b54: 9817460b lbuia a2,(a4),1,0 + 3bc04b58: 0087979b slliw a5,a5,0x8 + 3bc04b5c: 0082929b slliw t0,t0,0x8 + 3bc04b60: 8fd1 or a5,a5,a2 + 3bc04b62: 00b2d39b srliw t2,t0,0xb + 3bc04b66: 03d3863b mulw a2,t2,t4 + 3bc04b6a: 0019149b slliw s1,s2,0x1 + 3bc04b6e: 0cc7f963 bgeu a5,a2,3bc04c40 + 3bc04b72: 41d40ebb subw t4,s0,t4 + 3bc04b76: 005ede9b srliw t4,t4,0x5 + 3bc04b7a: 017e8ebb addw t4,t4,s7 + 3bc04b7e: 01db1023 sh t4,0(s6) + 3bc04b82: 010a548b srb s1,s4,a6,0 + 3bc04b86: 0805 addi a6,a6,1 + 3bc04b88: 64a2 ld s1,8(sp) + 3bc04b8a: 649870e3 bgeu a6,s1,3bc059ca + 3bc04b8e: 74c2 ld s1,48(sp) + 3bc04b90: d09768e3 bltu a4,s1,3bc048a0 + 3bc04b94: 6370006f j 3bc059ca + 3bc04b98: 005ede9b srliw t4,t4,0x5 + 3bc04b9c: 41d383bb subw t2,t2,t4 + 3bc04ba0: 412787bb subw a5,a5,s2 + 3bc04ba4: 3c03b38b extu t2,t2,15,0 + 3bc04ba8: 4124893b subw s2,s1,s2 + 3bc04bac: 4e8d li t4,3 + 3bc04bae: bbd9 j 3bc04984 + 3bc04bb0: 0052d29b srliw t0,t0,0x5 + 3bc04bb4: 405484bb subw s1,s1,t0 + 3bc04bb8: 407787bb subw a5,a5,t2 + 3bc04bbc: 3c04b48b extu s1,s1,15,0 + 3bc04bc0: 001c0e9b addiw t4,s8,1 + 3bc04bc4: 407903bb subw t2,s2,t2 + 3bc04bc8: b509 j 3bc049ca + 3bc04bca: 0052d29b srliw t0,t0,0x5 + 3bc04bce: 4059093b subw s2,s2,t0 + 3bc04bd2: 9f85 subw a5,a5,s1 + 3bc04bd4: 3c09390b extu s2,s2,15,0 + 3bc04bd8: 2b05 addiw s6,s6,1 + 3bc04bda: 409384bb subw s1,t2,s1 + 3bc04bde: bd15 j 3bc04a12 + 3bc04be0: 005ede9b srliw t4,t4,0x5 + 3bc04be4: 41d282bb subw t0,t0,t4 + 3bc04be8: 407787bb subw a5,a5,t2 + 3bc04bec: 3c02b28b extu t0,t0,15,0 + 3bc04bf0: 2905 addiw s2,s2,1 + 3bc04bf2: 407483bb subw t2,s1,t2 + 3bc04bf6: b59d j 3bc04a5c + 3bc04bf8: 005ede9b srliw t4,t4,0x5 + 3bc04bfc: 41d484bb subw s1,s1,t4 + 3bc04c00: 405787bb subw a5,a5,t0 + 3bc04c04: 3c04b48b extu s1,s1,15,0 + 3bc04c08: 2905 addiw s2,s2,1 + 3bc04c0a: 405382bb subw t0,t2,t0 + 3bc04c0e: bd61 j 3bc04aa6 + 3bc04c10: 005ede9b srliw t4,t4,0x5 + 3bc04c14: 41d484bb subw s1,s1,t4 + 3bc04c18: 407787bb subw a5,a5,t2 + 3bc04c1c: 3c04b48b extu s1,s1,15,0 + 3bc04c20: 2905 addiw s2,s2,1 + 3bc04c22: 407283bb subw t2,t0,t2 + 3bc04c26: b5e9 j 3bc04af0 + 3bc04c28: 005ede9b srliw t4,t4,0x5 + 3bc04c2c: 41d484bb subw s1,s1,t4 + 3bc04c30: 405787bb subw a5,a5,t0 + 3bc04c34: 3c04b48b extu s1,s1,15,0 + 3bc04c38: 2905 addiw s2,s2,1 + 3bc04c3a: 405382bb subw t0,t2,t0 + 3bc04c3e: bdf5 j 3bc04b3a + 3bc04c40: 005ede9b srliw t4,t4,0x5 + 3bc04c44: 41db8ebb subw t4,s7,t4 + 3bc04c48: 9f91 subw a5,a5,a2 + 3bc04c4a: 01db1023 sh t4,0(s6) + 3bc04c4e: 2485 addiw s1,s1,1 + 3bc04c50: 40c2863b subw a2,t0,a2 + 3bc04c54: b73d j 3bc04b82 + 3bc04c56: 7c0fb90b extu s2,t6,31,0 + 3bc04c5a: 41280eb3 sub t4,a6,s2 + 3bc04c5e: 83d6 mv t2,s5 + 3bc04c60: 01286363 bltu a6,s2,3bc04c66 + 3bc04c64: 4381 li t2,0 + 3bc04c66: 9ed2 add t4,t4,s4 + 3bc04c68: 4925 li s2,9 + 3bc04c6a: 807ece8b lrbu t4,t4,t2,0 + 3bc04c6e: 438d li t2,3 + 3bc04c70: 01197363 bgeu s2,a7,3bc04c76 + 3bc04c74: 4399 li t2,6 + 3bc04c76: 001e9b1b slliw s6,t4,0x1 + 3bc04c7a: 100b7b13 andi s6,s6,256 + 3bc04c7e: 407888bb subw a7,a7,t2 + 3bc04c82: 101b039b addiw t2,s6,257 + 3bc04c86: b2764c0b lurhu s8,a2,t2,1 + 3bc04c8a: 101b0b93 addi s7,s6,257 + 3bc04c8e: 03761b8b addsl s7,a2,s7,1 + 3bc04c92: 000c039b sext.w t2,s8 + 3bc04c96: 00d4fa63 bgeu s1,a3,3bc04caa + 3bc04c9a: 0082949b slliw s1,t0,0x8 + 3bc04c9e: 9817428b lbuia t0,(a4),1,0 + 3bc04ca2: 0087979b slliw a5,a5,0x8 + 3bc04ca6: 00f2e7b3 or a5,t0,a5 + 3bc04caa: 00b4d29b srliw t0,s1,0xb + 3bc04cae: 0272893b mulw s2,t0,t2 + 3bc04cb2: 2b27ff63 bgeu a5,s2,3bc04f70 + 3bc04cb6: 407403bb subw t2,s0,t2 + 3bc04cba: 0053d39b srliw t2,t2,0x5 + 3bc04cbe: 01838c3b addw s8,t2,s8 + 3bc04cc2: 3c0c3c0b extu s8,s8,15,0 + 3bc04cc6: 100b4b13 xori s6,s6,256 + 3bc04cca: 4289 li t0,2 + 3bc04ccc: 002e939b slliw t2,t4,0x2 + 3bc04cd0: 007b73b3 and t2,s6,t2 + 3bc04cd4: 005b04bb addw s1,s6,t0 + 3bc04cd8: 018b9023 sh s8,0(s7) + 3bc04cdc: 00038c1b sext.w s8,t2 + 3bc04ce0: 007483bb addw t2,s1,t2 + 3bc04ce4: b2764b8b lurhu s7,a2,t2,1 + 3bc04ce8: 02039493 slli s1,t2,0x20 + 3bc04cec: 01f4dd13 srli s10,s1,0x1f + 3bc04cf0: 9d32 add s10,s10,a2 + 3bc04cf2: 000b839b sext.w t2,s7 + 3bc04cf6: 00d97963 bgeu s2,a3,3bc04d08 + 3bc04cfa: 9817448b lbuia s1,(a4),1,0 + 3bc04cfe: 0087979b slliw a5,a5,0x8 + 3bc04d02: 0089191b slliw s2,s2,0x8 + 3bc04d06: 8fc5 or a5,a5,s1 + 3bc04d08: 00b95c9b srliw s9,s2,0xb + 3bc04d0c: 027c84bb mulw s1,s9,t2 + 3bc04d10: 00129d9b slliw s11,t0,0x1 + 3bc04d14: 0286 slli t0,t0,0x1 + 3bc04d16: 2697f963 bgeu a5,s1,3bc04f88 + 3bc04d1a: 407403bb subw t2,s0,t2 + 3bc04d1e: 0053d39b srliw t2,t2,0x5 + 3bc04d22: 01738bbb addw s7,t2,s7 + 3bc04d26: 3c0bbb8b extu s7,s7,15,0 + 3bc04d2a: 018b4c33 xor s8,s6,s8 + 3bc04d2e: 003e939b slliw t2,t4,0x3 + 3bc04d32: 007c73b3 and t2,s8,t2 + 3bc04d36: 005c093b addw s2,s8,t0 + 3bc04d3a: 017d1023 sh s7,0(s10) + 3bc04d3e: 00038b1b sext.w s6,t2 + 3bc04d42: 007903bb addw t2,s2,t2 + 3bc04d46: b2764c8b lurhu s9,a2,t2,1 + 3bc04d4a: 02039913 slli s2,t2,0x20 + 3bc04d4e: 01f95d93 srli s11,s2,0x1f + 3bc04d52: 9db2 add s11,s11,a2 + 3bc04d54: 000c839b sext.w t2,s9 + 3bc04d58: 00d4fa63 bgeu s1,a3,3bc04d6c + 3bc04d5c: 9817490b lbuia s2,(a4),1,0 + 3bc04d60: 0087979b slliw a5,a5,0x8 + 3bc04d64: 0084949b slliw s1,s1,0x8 + 3bc04d68: 00f967b3 or a5,s2,a5 + 3bc04d6c: 00b4dd1b srliw s10,s1,0xb + 3bc04d70: 027d093b mulw s2,s10,t2 + 3bc04d74: 00129b9b slliw s7,t0,0x1 + 3bc04d78: 2327f463 bgeu a5,s2,3bc04fa0 + 3bc04d7c: 407403bb subw t2,s0,t2 + 3bc04d80: 0053d39b srliw t2,t2,0x5 + 3bc04d84: 01938cbb addw s9,t2,s9 + 3bc04d88: 3c0cbc8b extu s9,s9,15,0 + 3bc04d8c: 016c4b33 xor s6,s8,s6 + 3bc04d90: 004e929b slliw t0,t4,0x4 + 3bc04d94: 005b72b3 and t0,s6,t0 + 3bc04d98: 017b03bb addw t2,s6,s7 + 3bc04d9c: 019d9023 sh s9,0(s11) + 3bc04da0: 00028c1b sext.w s8,t0 + 3bc04da4: 005382bb addw t0,t2,t0 + 3bc04da8: b256438b lurhu t2,a2,t0,1 + 3bc04dac: 02029493 slli s1,t0,0x20 + 3bc04db0: 01f4dd13 srli s10,s1,0x1f + 3bc04db4: 9d32 add s10,s10,a2 + 3bc04db6: 0003829b sext.w t0,t2 + 3bc04dba: 00d97963 bgeu s2,a3,3bc04dcc + 3bc04dbe: 9817448b lbuia s1,(a4),1,0 + 3bc04dc2: 0087979b slliw a5,a5,0x8 + 3bc04dc6: 0089191b slliw s2,s2,0x8 + 3bc04dca: 8fc5 or a5,a5,s1 + 3bc04dcc: 00b95c9b srliw s9,s2,0xb + 3bc04dd0: 025c84bb mulw s1,s9,t0 + 3bc04dd4: 001b9b9b slliw s7,s7,0x1 + 3bc04dd8: 1e97f063 bgeu a5,s1,3bc04fb8 + 3bc04ddc: 405402bb subw t0,s0,t0 + 3bc04de0: 0052d29b srliw t0,t0,0x5 + 3bc04de4: 007283bb addw t2,t0,t2 + 3bc04de8: 3c03b38b extu t2,t2,15,0 + 3bc04dec: 018b4c33 xor s8,s6,s8 + 3bc04df0: 005e929b slliw t0,t4,0x5 + 3bc04df4: 007d1023 sh t2,0(s10) + 3bc04df8: 005c72b3 and t0,s8,t0 + 3bc04dfc: 017c03bb addw t2,s8,s7 + 3bc04e00: 00028b1b sext.w s6,t0 + 3bc04e04: 005382bb addw t0,t2,t0 + 3bc04e08: b256490b lurhu s2,a2,t0,1 + 3bc04e0c: 02029393 slli t2,t0,0x20 + 3bc04e10: 01f3dd13 srli s10,t2,0x1f + 3bc04e14: 9d32 add s10,s10,a2 + 3bc04e16: 0009029b sext.w t0,s2 + 3bc04e1a: 00d4fa63 bgeu s1,a3,3bc04e2e + 3bc04e1e: 9817438b lbuia t2,(a4),1,0 + 3bc04e22: 0087979b slliw a5,a5,0x8 + 3bc04e26: 0084949b slliw s1,s1,0x8 + 3bc04e2a: 00f3e7b3 or a5,t2,a5 + 3bc04e2e: 00b4dc9b srliw s9,s1,0xb + 3bc04e32: 025c83bb mulw t2,s9,t0 + 3bc04e36: 001b9b9b slliw s7,s7,0x1 + 3bc04e3a: 1877fa63 bgeu a5,t2,3bc04fce + 3bc04e3e: 405402bb subw t0,s0,t0 + 3bc04e42: 0052d29b srliw t0,t0,0x5 + 3bc04e46: 0122893b addw s2,t0,s2 + 3bc04e4a: 3c09390b extu s2,s2,15,0 + 3bc04e4e: 016c4b33 xor s6,s8,s6 + 3bc04e52: 006e929b slliw t0,t4,0x6 + 3bc04e56: 005b72b3 and t0,s6,t0 + 3bc04e5a: 017b04bb addw s1,s6,s7 + 3bc04e5e: 00028c1b sext.w s8,t0 + 3bc04e62: 005482bb addw t0,s1,t0 + 3bc04e66: 02029493 slli s1,t0,0x20 + 3bc04e6a: 012d1023 sh s2,0(s10) + 3bc04e6e: 01f4dd13 srli s10,s1,0x1f + 3bc04e72: b256448b lurhu s1,a2,t0,1 + 3bc04e76: 9d32 add s10,s10,a2 + 3bc04e78: 0004829b sext.w t0,s1 + 3bc04e7c: 00d3fa63 bgeu t2,a3,3bc04e90 + 3bc04e80: 9817490b lbuia s2,(a4),1,0 + 3bc04e84: 0087979b slliw a5,a5,0x8 + 3bc04e88: 0083939b slliw t2,t2,0x8 + 3bc04e8c: 00f967b3 or a5,s2,a5 + 3bc04e90: 00b3dc9b srliw s9,t2,0xb + 3bc04e94: 025c893b mulw s2,s9,t0 + 3bc04e98: 001b9b9b slliw s7,s7,0x1 + 3bc04e9c: 1527f563 bgeu a5,s2,3bc04fe6 + 3bc04ea0: 405402bb subw t0,s0,t0 + 3bc04ea4: 0052d29b srliw t0,t0,0x5 + 3bc04ea8: 009284bb addw s1,t0,s1 + 3bc04eac: 3c04b48b extu s1,s1,15,0 + 3bc04eb0: 018b4c33 xor s8,s6,s8 + 3bc04eb4: 007e929b slliw t0,t4,0x7 + 3bc04eb8: 005c72b3 and t0,s8,t0 + 3bc04ebc: 017c03bb addw t2,s8,s7 + 3bc04ec0: 009d1023 sh s1,0(s10) + 3bc04ec4: 0002849b sext.w s1,t0 + 3bc04ec8: 005382bb addw t0,t2,t0 + 3bc04ecc: b2564b0b lurhu s6,a2,t0,1 + 3bc04ed0: 02029393 slli t2,t0,0x20 + 3bc04ed4: 01f3dd93 srli s11,t2,0x1f + 3bc04ed8: 9db2 add s11,s11,a2 + 3bc04eda: 000b029b sext.w t0,s6 + 3bc04ede: 00d97a63 bgeu s2,a3,3bc04ef2 + 3bc04ee2: 9817438b lbuia t2,(a4),1,0 + 3bc04ee6: 0087979b slliw a5,a5,0x8 + 3bc04eea: 0089191b slliw s2,s2,0x8 + 3bc04eee: 00f3e7b3 or a5,t2,a5 + 3bc04ef2: 00b95d1b srliw s10,s2,0xb + 3bc04ef6: 025d03bb mulw t2,s10,t0 + 3bc04efa: 001b9c9b slliw s9,s7,0x1 + 3bc04efe: 1077f063 bgeu a5,t2,3bc04ffe + 3bc04f02: 405402bb subw t0,s0,t0 + 3bc04f06: 0052d29b srliw t0,t0,0x5 + 3bc04f0a: 01628b3b addw s6,t0,s6 + 3bc04f0e: 3c0b3b0b extu s6,s6,15,0 + 3bc04f12: 009c44b3 xor s1,s8,s1 + 3bc04f16: 008e9e9b slliw t4,t4,0x8 + 3bc04f1a: 01d4feb3 and t4,s1,t4 + 3bc04f1e: 019484bb addw s1,s1,s9 + 3bc04f22: 01d48ebb addw t4,s1,t4 + 3bc04f26: 016d9023 sh s6,0(s11) + 3bc04f2a: b3d64b0b lurhu s6,a2,t4,1 + 3bc04f2e: 020e9493 slli s1,t4,0x20 + 3bc04f32: 01f4d913 srli s2,s1,0x1f + 3bc04f36: 9932 add s2,s2,a2 + 3bc04f38: 000b0e9b sext.w t4,s6 + 3bc04f3c: 00d3f963 bgeu t2,a3,3bc04f4e + 3bc04f40: 9817460b lbuia a2,(a4),1,0 + 3bc04f44: 0087979b slliw a5,a5,0x8 + 3bc04f48: 0083939b slliw t2,t2,0x8 + 3bc04f4c: 8fd1 or a5,a5,a2 + 3bc04f4e: 00b3d29b srliw t0,t2,0xb + 3bc04f52: 03d2863b mulw a2,t0,t4 + 3bc04f56: 001c949b slliw s1,s9,0x1 + 3bc04f5a: 0ac7fe63 bgeu a5,a2,3bc05016 + 3bc04f5e: 41d40ebb subw t4,s0,t4 + 3bc04f62: 005ede9b srliw t4,t4,0x5 + 3bc04f66: 016e8ebb addw t4,t4,s6 + 3bc04f6a: 01d91023 sh t4,0(s2) + 3bc04f6e: b911 j 3bc04b82 + 3bc04f70: 0053d39b srliw t2,t2,0x5 + 3bc04f74: 407c0c3b subw s8,s8,t2 + 3bc04f78: 412787bb subw a5,a5,s2 + 3bc04f7c: 3c0c3c0b extu s8,s8,15,0 + 3bc04f80: 4124893b subw s2,s1,s2 + 3bc04f84: 428d li t0,3 + 3bc04f86: b399 j 3bc04ccc + 3bc04f88: 0053d39b srliw t2,t2,0x5 + 3bc04f8c: 407b8bbb subw s7,s7,t2 + 3bc04f90: 9f85 subw a5,a5,s1 + 3bc04f92: 3c0bbb8b extu s7,s7,15,0 + 3bc04f96: 001d829b addiw t0,s11,1 + 3bc04f9a: 409904bb subw s1,s2,s1 + 3bc04f9e: bb41 j 3bc04d2e + 3bc04fa0: 0053d39b srliw t2,t2,0x5 + 3bc04fa4: 407c8cbb subw s9,s9,t2 + 3bc04fa8: 412787bb subw a5,a5,s2 + 3bc04fac: 3c0cbc8b extu s9,s9,15,0 + 3bc04fb0: 2b85 addiw s7,s7,1 + 3bc04fb2: 4124893b subw s2,s1,s2 + 3bc04fb6: bbe9 j 3bc04d90 + 3bc04fb8: 0052d29b srliw t0,t0,0x5 + 3bc04fbc: 405383bb subw t2,t2,t0 + 3bc04fc0: 9f85 subw a5,a5,s1 + 3bc04fc2: 3c03b38b extu t2,t2,15,0 + 3bc04fc6: 2b85 addiw s7,s7,1 + 3bc04fc8: 409904bb subw s1,s2,s1 + 3bc04fcc: b515 j 3bc04df0 + 3bc04fce: 0052d29b srliw t0,t0,0x5 + 3bc04fd2: 4059093b subw s2,s2,t0 + 3bc04fd6: 407787bb subw a5,a5,t2 + 3bc04fda: 3c09390b extu s2,s2,15,0 + 3bc04fde: 2b85 addiw s7,s7,1 + 3bc04fe0: 407483bb subw t2,s1,t2 + 3bc04fe4: b5bd j 3bc04e52 + 3bc04fe6: 0052d29b srliw t0,t0,0x5 + 3bc04fea: 405484bb subw s1,s1,t0 + 3bc04fee: 412787bb subw a5,a5,s2 + 3bc04ff2: 3c04b48b extu s1,s1,15,0 + 3bc04ff6: 2b85 addiw s7,s7,1 + 3bc04ff8: 4123893b subw s2,t2,s2 + 3bc04ffc: bd65 j 3bc04eb4 + 3bc04ffe: 0052d29b srliw t0,t0,0x5 + 3bc05002: 405b0b3b subw s6,s6,t0 + 3bc05006: 407787bb subw a5,a5,t2 + 3bc0500a: 3c0b3b0b extu s6,s6,15,0 + 3bc0500e: 2c85 addiw s9,s9,1 + 3bc05010: 407903bb subw t2,s2,t2 + 3bc05014: b709 j 3bc04f16 + 3bc05016: 005ede9b srliw t4,t4,0x5 + 3bc0501a: 41db0ebb subw t4,s6,t4 + 3bc0501e: 9f91 subw a5,a5,a2 + 3bc05020: 01d91023 sh t4,0(s2) + 3bc05024: 2485 addiw s1,s1,1 + 3bc05026: 40c3863b subw a2,t2,a2 + 3bc0502a: bea1 j 3bc04b82 + 3bc0502c: 0053d39b srliw t2,t2,0x5 + 3bc05030: 407b03bb subw t2,s6,t2 + 3bc05034: 2175d38b srh t2,a1,s7,0 + 3bc05038: 7c08bb8b extu s7,a7,31,0 + 3bc0503c: 0bc1 addi s7,s7,16 + 3bc0503e: a375cc0b lrhu s8,a1,s7,1 + 3bc05042: 409604bb subw s1,a2,s1 + 3bc05046: 405787bb subw a5,a5,t0 + 3bc0504a: 001b9b13 slli s6,s7,0x1 + 3bc0504e: 000c039b sext.w t2,s8 + 3bc05052: 00d4fa63 bgeu s1,a3,3bc05066 + 3bc05056: 0087929b slliw t0,a5,0x8 + 3bc0505a: 9817478b lbuia a5,(a4),1,0 + 3bc0505e: 0084949b slliw s1,s1,0x8 + 3bc05062: 0057e7b3 or a5,a5,t0 + 3bc05066: 00b4d29b srliw t0,s1,0xb + 3bc0506a: 0272863b mulw a2,t0,t2 + 3bc0506e: 36c7ff63 bgeu a5,a2,3bc053ec + 3bc05072: 407403bb subw t2,s0,t2 + 3bc05076: 0053d39b srliw t2,t2,0x5 + 3bc0507a: 62c6 ld t0,80(sp) + 3bc0507c: 018383bb addw t2,t2,s8 + 3bc05080: 2375d38b srh t2,a1,s7,1 + 3bc05084: 28b1 addiw a7,a7,12 + 3bc05086: 8b7e mv s6,t6 + 3bc05088: 0002d383 lhu t2,0(t0) + 3bc0508c: 00038f9b sext.w t6,t2 + 3bc05090: 00d67a63 bgeu a2,a3,3bc050a4 + 3bc05094: 9817430b lbuia t1,(a4),1,0 + 3bc05098: 0087979b slliw a5,a5,0x8 + 3bc0509c: 0086161b slliw a2,a2,0x8 + 3bc050a0: 00f367b3 or a5,t1,a5 + 3bc050a4: 00b6531b srliw t1,a2,0xb + 3bc050a8: 03f304bb mulw s1,t1,t6 + 3bc050ac: 8326 mv t1,s1 + 3bc050ae: 5297f663 bgeu a5,s1,3bc055da + 3bc050b2: 41f40fbb subw t6,s0,t6 + 3bc050b6: 005fdf9b srliw t6,t6,0x5 + 3bc050ba: 7c0ebe8b extu t4,t4,31,0 + 3bc050be: 007f8fbb addw t6,t6,t2 + 3bc050c2: 01f29023 sh t6,0(t0) + 3bc050c6: 03d2928b addsl t0,t0,t4,1 + 3bc050ca: 0022de83 lhu t4,2(t0) + 3bc050ce: 000e861b sext.w a2,t4 + 3bc050d2: 00d4fa63 bgeu s1,a3,3bc050e6 + 3bc050d6: 9817430b lbuia t1,(a4),1,0 + 3bc050da: 0087979b slliw a5,a5,0x8 + 3bc050de: 0084949b slliw s1,s1,0x8 + 3bc050e2: 00f367b3 or a5,t1,a5 + 3bc050e6: 00b4d31b srliw t1,s1,0xb + 3bc050ea: 02c30fbb mulw t6,t1,a2 + 3bc050ee: 4bf7f263 bgeu a5,t6,3bc05592 + 3bc050f2: 40c4063b subw a2,s0,a2 + 3bc050f6: 0056561b srliw a2,a2,0x5 + 3bc050fa: 01d60ebb addw t4,a2,t4 + 3bc050fe: 3c0ebe8b extu t4,t4,15,0 + 3bc05102: 4309 li t1,2 + 3bc05104: 01d29123 sh t4,2(t0) + 3bc05108: b262c38b lurhu t2,t0,t1,1 + 3bc0510c: 7c03390b extu s2,t1,31,0 + 3bc05110: 0003861b sext.w a2,t2 + 3bc05114: 00dffa63 bgeu t6,a3,3bc05128 + 3bc05118: 98174e8b lbuia t4,(a4),1,0 + 3bc0511c: 0087979b slliw a5,a5,0x8 + 3bc05120: 008f9f9b slliw t6,t6,0x8 + 3bc05124: 00fee7b3 or a5,t4,a5 + 3bc05128: 00bfd49b srliw s1,t6,0xb + 3bc0512c: 02c48ebb mulw t4,s1,a2 + 3bc05130: 00131b9b slliw s7,t1,0x1 + 3bc05134: 0306 slli t1,t1,0x1 + 3bc05136: 47d7fa63 bgeu a5,t4,3bc055aa + 3bc0513a: 40c4063b subw a2,s0,a2 + 3bc0513e: 0056561b srliw a2,a2,0x5 + 3bc05142: 007603bb addw t2,a2,t2 + 3bc05146: 3c03b38b extu t2,t2,15,0 + 3bc0514a: 2322d38b srh t2,t0,s2,1 + 3bc0514e: b262c38b lurhu t2,t0,t1,1 + 3bc05152: 7c033b8b extu s7,t1,31,0 + 3bc05156: 00038f9b sext.w t6,t2 + 3bc0515a: 00def963 bgeu t4,a3,3bc0516c + 3bc0515e: 9817460b lbuia a2,(a4),1,0 + 3bc05162: 0087979b slliw a5,a5,0x8 + 3bc05166: 008e9e9b slliw t4,t4,0x8 + 3bc0516a: 8fd1 or a5,a5,a2 + 3bc0516c: 00bed91b srliw s2,t4,0xb + 3bc05170: 03f9063b mulw a2,s2,t6 + 3bc05174: 0013131b slliw t1,t1,0x1 + 3bc05178: 44c7f663 bgeu a5,a2,3bc055c4 + 3bc0517c: 41f40fbb subw t6,s0,t6 + 3bc05180: 005fdf9b srliw t6,t6,0x5 + 3bc05184: 007f83bb addw t2,t6,t2 + 3bc05188: 3c03b38b extu t2,t2,15,0 + 3bc0518c: 2372d38b srh t2,t0,s7,1 + 3bc05190: 3361 addiw t1,t1,-8 + 3bc05192: 44ad li s1,11 + 3bc05194: 1114f5e3 bgeu s1,a7,3bc05a9e + 3bc05198: 448d li s1,3 + 3bc0519a: 8f9a mv t6,t1 + 3bc0519c: 0064f363 bgeu s1,t1,3bc051a2 + 3bc051a0: 4f8d li t6,3 + 3bc051a2: 006f9f9b slliw t6,t6,0x6 + 3bc051a6: 040f8f9b addiw t6,t6,64 + 3bc051aa: 7c0fbf8b extu t6,t6,31,0 + 3bc051ae: 03f59f8b addsl t6,a1,t6,1 + 3bc051b2: 002fd383 lhu t2,2(t6) + 3bc051b6: 00038e9b sext.w t4,t2 + 3bc051ba: 00d67a63 bgeu a2,a3,3bc051ce + 3bc051be: 9817428b lbuia t0,(a4),1,0 + 3bc051c2: 0087979b slliw a5,a5,0x8 + 3bc051c6: 0086161b slliw a2,a2,0x8 + 3bc051ca: 00f2e7b3 or a5,t0,a5 + 3bc051ce: 00b6549b srliw s1,a2,0xb + 3bc051d2: 03d482bb mulw t0,s1,t4 + 3bc051d6: 5e57f763 bgeu a5,t0,3bc057c4 + 3bc051da: 41d40ebb subw t4,s0,t4 + 3bc051de: 005ede9b srliw t4,t4,0x5 + 3bc051e2: 007e83bb addw t2,t4,t2 + 3bc051e6: 3c03b38b extu t2,t2,15,0 + 3bc051ea: 4609 li a2,2 + 3bc051ec: 007f9123 sh t2,2(t6) + 3bc051f0: b2cfc48b lurhu s1,t6,a2,1 + 3bc051f4: 7c063b8b extu s7,a2,31,0 + 3bc051f8: 00048e9b sext.w t4,s1 + 3bc051fc: 00d2fa63 bgeu t0,a3,3bc05210 + 3bc05200: 9817438b lbuia t2,(a4),1,0 + 3bc05204: 0087979b slliw a5,a5,0x8 + 3bc05208: 0082929b slliw t0,t0,0x8 + 3bc0520c: 00f3e7b3 or a5,t2,a5 + 3bc05210: 00b2d91b srliw s2,t0,0xb + 3bc05214: 03d903bb mulw t2,s2,t4 + 3bc05218: 00161c1b slliw s8,a2,0x1 + 3bc0521c: 0606 slli a2,a2,0x1 + 3bc0521e: 5a77ff63 bgeu a5,t2,3bc057dc + 3bc05222: 41d40ebb subw t4,s0,t4 + 3bc05226: 005ede9b srliw t4,t4,0x5 + 3bc0522a: 009e84bb addw s1,t4,s1 + 3bc0522e: 3c04b48b extu s1,s1,15,0 + 3bc05232: 237fd48b srh s1,t6,s7,1 + 3bc05236: b2cfc48b lurhu s1,t6,a2,1 + 3bc0523a: 7c063c0b extu s8,a2,31,0 + 3bc0523e: 00048e9b sext.w t4,s1 + 3bc05242: 00d3fa63 bgeu t2,a3,3bc05256 + 3bc05246: 9817428b lbuia t0,(a4),1,0 + 3bc0524a: 0087979b slliw a5,a5,0x8 + 3bc0524e: 0083939b slliw t2,t2,0x8 + 3bc05252: 00f2e7b3 or a5,t0,a5 + 3bc05256: 00b3db9b srliw s7,t2,0xb + 3bc0525a: 03db82bb mulw t0,s7,t4 + 3bc0525e: 0016191b slliw s2,a2,0x1 + 3bc05262: 5857fa63 bgeu a5,t0,3bc057f6 + 3bc05266: 41d40ebb subw t4,s0,t4 + 3bc0526a: 005ede9b srliw t4,t4,0x5 + 3bc0526e: 009e84bb addw s1,t4,s1 + 3bc05272: 3c04b48b extu s1,s1,15,0 + 3bc05276: 238fd48b srh s1,t6,s8,1 + 3bc0527a: b32fc38b lurhu t2,t6,s2,1 + 3bc0527e: 7c093c0b extu s8,s2,31,0 + 3bc05282: 0003861b sext.w a2,t2 + 3bc05286: 00d2fa63 bgeu t0,a3,3bc0529a + 3bc0528a: 98174e8b lbuia t4,(a4),1,0 + 3bc0528e: 0087979b slliw a5,a5,0x8 + 3bc05292: 0082929b slliw t0,t0,0x8 + 3bc05296: 00fee7b3 or a5,t4,a5 + 3bc0529a: 00b2db9b srliw s7,t0,0xb + 3bc0529e: 02cb8ebb mulw t4,s7,a2 + 3bc052a2: 0019149b slliw s1,s2,0x1 + 3bc052a6: 57d7f463 bgeu a5,t4,3bc0580e + 3bc052aa: 40c4063b subw a2,s0,a2 + 3bc052ae: 0056561b srliw a2,a2,0x5 + 3bc052b2: 007603bb addw t2,a2,t2 + 3bc052b6: 3c03b38b extu t2,t2,15,0 + 3bc052ba: 238fd38b srh t2,t6,s8,1 + 3bc052be: b29fc28b lurhu t0,t6,s1,1 + 3bc052c2: 7c04bc0b extu s8,s1,31,0 + 3bc052c6: 0002861b sext.w a2,t0 + 3bc052ca: 00defa63 bgeu t4,a3,3bc052de + 3bc052ce: 9817438b lbuia t2,(a4),1,0 + 3bc052d2: 0087979b slliw a5,a5,0x8 + 3bc052d6: 008e9e9b slliw t4,t4,0x8 + 3bc052da: 00f3e7b3 or a5,t2,a5 + 3bc052de: 00bedb9b srliw s7,t4,0xb + 3bc052e2: 02cb83bb mulw t2,s7,a2 + 3bc052e6: 0014991b slliw s2,s1,0x1 + 3bc052ea: 5277fe63 bgeu a5,t2,3bc05826 + 3bc052ee: 40c4063b subw a2,s0,a2 + 3bc052f2: 0056561b srliw a2,a2,0x5 + 3bc052f6: 005602bb addw t0,a2,t0 + 3bc052fa: 3c02b28b extu t0,t0,15,0 + 3bc052fe: 238fd28b srh t0,t6,s8,1 + 3bc05302: b32fc48b lurhu s1,t6,s2,1 + 3bc05306: 7c093c0b extu s8,s2,31,0 + 3bc0530a: 0004829b sext.w t0,s1 + 3bc0530e: 00d3f963 bgeu t2,a3,3bc05320 + 3bc05312: 9817460b lbuia a2,(a4),1,0 + 3bc05316: 0087979b slliw a5,a5,0x8 + 3bc0531a: 0083939b slliw t2,t2,0x8 + 3bc0531e: 8fd1 or a5,a5,a2 + 3bc05320: 00b3db9b srliw s7,t2,0xb + 3bc05324: 025b863b mulw a2,s7,t0 + 3bc05328: 00191e9b slliw t4,s2,0x1 + 3bc0532c: 50c7f963 bgeu a5,a2,3bc0583e + 3bc05330: 405402bb subw t0,s0,t0 + 3bc05334: 0052d29b srliw t0,t0,0x5 + 3bc05338: 009284bb addw s1,t0,s1 + 3bc0533c: 3c04b48b extu s1,s1,15,0 + 3bc05340: fc0e8e9b addiw t4,t4,-64 + 3bc05344: 238fd48b srh s1,t6,s8,1 + 3bc05348: 000e839b sext.w t2,t4 + 3bc0534c: 448d li s1,3 + 3bc0534e: 0874f063 bgeu s1,t2,3bc053ce + 3bc05352: 001eff93 andi t6,t4,1 + 3bc05356: 44b5 li s1,13 + 3bc05358: 001ed29b srliw t0,t4,0x1 + 3bc0535c: 002fef93 ori t6,t6,2 + 3bc05360: 5074e963 bltu s1,t2,3bc05872 + 3bc05364: 32fd addiw t0,t0,-1 + 3bc05366: 005f9fbb sllw t6,t6,t0 + 3bc0536a: 2f85 addiw t6,t6,1 + 3bc0536c: 4c05 li s8,1 + 3bc0536e: 020f9493 slli s1,t6,0x20 + 3bc05372: 01f4db93 srli s7,s1,0x1f + 3bc05376: 74fd lui s1,0xfffff + 3bc05378: 30048493 addi s1,s1,768 # fffffffffffff300 <__BL2_END__+0xffffffffc43ebef0> + 3bc0537c: 9ba6 add s7,s7,s1 + 3bc0537e: a175c48b lrhu s1,a1,s7,0 + 3bc05382: 0004839b sext.w t2,s1 + 3bc05386: 00d67a63 bgeu a2,a3,3bc0539a + 3bc0538a: 98174e8b lbuia t4,(a4),1,0 + 3bc0538e: 0087979b slliw a5,a5,0x8 + 3bc05392: 0086161b slliw a2,a2,0x8 + 3bc05396: 00fee7b3 or a5,t4,a5 + 3bc0539a: 00b6591b srliw s2,a2,0xb + 3bc0539e: 02790d3b mulw s10,s2,t2 + 3bc053a2: 001c1e9b slliw t4,s8,0x1 + 3bc053a6: 4ba7f963 bgeu a5,s10,3bc05858 + 3bc053aa: 407403bb subw t2,s0,t2 + 3bc053ae: 0053d39b srliw t2,t2,0x5 + 3bc053b2: 009384bb addw s1,t2,s1 + 3bc053b6: 3c04b48b extu s1,s1,15,0 + 3bc053ba: 018f8fbb addw t6,t6,s8 + 3bc053be: 866a mv a2,s10 + 3bc053c0: 2175d48b srh s1,a1,s7,0 + 3bc053c4: 32fd addiw t0,t0,-1 + 3bc053c6: 48029763 bnez t0,3bc05854 + 3bc053ca: 41df83bb subw t2,t6,t4 + 3bc053ce: 44c9 li s1,18 + 3bc053d0: 00138f9b addiw t6,t2,1 + 3bc053d4: 6d14f363 bgeu s1,a7,3bc05a9a + 3bc053d8: 48a9 li a7,10 + 3bc053da: 6ee2 ld t4,24(sp) + 3bc053dc: 41de1e8b mveqz t4,t3,t4 + 3bc053e0: 73d3e063 bltu t2,t4,3bc05b00 + 3bc053e4: 03053423 sd a6,40(a0) + 3bc053e8: c24ff06f j 3bc0480c + 3bc053ec: 0053d39b srliw t2,t2,0x5 + 3bc053f0: 407c03bb subw t2,s8,t2 + 3bc053f4: 2375d38b srh t2,a1,s7,1 + 3bc053f8: 018b0c13 addi s8,s6,24 + 3bc053fc: a185cb8b lrhu s7,a1,s8,0 + 3bc05400: 40c48cbb subw s9,s1,a2 + 3bc05404: 9f91 subw a5,a5,a2 + 3bc05406: 000b839b sext.w t2,s7 + 3bc0540a: 00dcfa63 bgeu s9,a3,3bc0541e + 3bc0540e: 0087929b slliw t0,a5,0x8 + 3bc05412: 9817478b lbuia a5,(a4),1,0 + 3bc05416: 008c9c9b slliw s9,s9,0x8 + 3bc0541a: 0057e7b3 or a5,a5,t0 + 3bc0541e: 00bcd61b srliw a2,s9,0xb + 3bc05422: 027602bb mulw t0,a2,t2 + 3bc05426: 8616 mv a2,t0 + 3bc05428: 0a57f463 bgeu a5,t0,3bc054d0 + 3bc0542c: 407403bb subw t2,s0,t2 + 3bc05430: 0053d39b srliw t2,t2,0x5 + 3bc05434: 74fd lui s1,0xfffff + 3bc05436: 017383bb addw t2,t2,s7 + 3bc0543a: 40048493 addi s1,s1,1024 # fffffffffffff400 <__BL2_END__+0xffffffffc43ebff0> + 3bc0543e: 2185d38b srh t2,a1,s8,0 + 3bc05442: 9926 add s2,s2,s1 + 3bc05444: a125c48b lrhu s1,a1,s2,0 + 3bc05448: 0004839b sext.w t2,s1 + 3bc0544c: 00d2f963 bgeu t0,a3,3bc0545e + 3bc05450: 9817460b lbuia a2,(a4),1,0 + 3bc05454: 0087979b slliw a5,a5,0x8 + 3bc05458: 0082929b slliw t0,t0,0x8 + 3bc0545c: 8fd1 or a5,a5,a2 + 3bc0545e: 00b2db1b srliw s6,t0,0xb + 3bc05462: 027b063b mulw a2,s6,t2 + 3bc05466: 8b32 mv s6,a2 + 3bc05468: 02c7ff63 bgeu a5,a2,3bc054a6 + 3bc0546c: 407403bb subw t2,s0,t2 + 3bc05470: 0053d39b srliw t2,t2,0x5 + 3bc05474: 009383bb addw t2,t2,s1 + 3bc05478: 2125d38b srh t2,a1,s2,0 + 3bc0547c: 7c0fb38b extu t2,t6,31,0 + 3bc05480: 40780eb3 sub t4,a6,t2 + 3bc05484: 82d6 mv t0,s5 + 3bc05486: 00786363 bltu a6,t2,3bc0548c + 3bc0548a: 4281 li t0,0 + 3bc0548c: 9ed2 add t4,t4,s4 + 3bc0548e: 805ece8b lrbu t4,t4,t0,0 + 3bc05492: 2e05 addiw t3,t3,1 + 3bc05494: 010a5e8b srb t4,s4,a6,0 + 3bc05498: 4e99 li t4,6 + 3bc0549a: 0805 addi a6,a6,1 + 3bc0549c: 691ef963 bgeu t4,a7,3bc05b2e + 3bc054a0: 48ad li a7,11 + 3bc054a2: ee6ff06f j 3bc04b88 + 3bc054a6: 0053d39b srliw t2,t2,0x5 + 3bc054aa: 837a mv t1,t5 + 3bc054ac: 407483bb subw t2,s1,t2 + 3bc054b0: 8f7e mv t5,t6 + 3bc054b2: 40c2863b subw a2,t0,a2 + 3bc054b6: 416787bb subw a5,a5,s6 + 3bc054ba: 2125d38b srh t2,a1,s2,0 + 3bc054be: 8f9a mv t6,t1 + 3bc054c0: 4319 li t1,6 + 3bc054c2: 0d137663 bgeu t1,a7,3bc0558e + 3bc054c6: 48ad li a7,11 + 3bc054c8: 8b7a mv s6,t5 + 3bc054ca: 62a6 ld t0,72(sp) + 3bc054cc: 8f7e mv t5,t6 + 3bc054ce: be6d j 3bc05088 + 3bc054d0: 0053d39b srliw t2,t2,0x5 + 3bc054d4: 407b83bb subw t2,s7,t2 + 3bc054d8: 2185d38b srh t2,a1,s8,0 + 3bc054dc: 030b0493 addi s1,s6,48 + 3bc054e0: a095c38b lrhu t2,a1,s1,0 + 3bc054e4: 405c82bb subw t0,s9,t0 + 3bc054e8: 9f91 subw a5,a5,a2 + 3bc054ea: 0003831b sext.w t1,t2 + 3bc054ee: 00d2f963 bgeu t0,a3,3bc05500 + 3bc054f2: 0087961b slliw a2,a5,0x8 + 3bc054f6: 9817478b lbuia a5,(a4),1,0 + 3bc054fa: 0082929b slliw t0,t0,0x8 + 3bc054fe: 8fd1 or a5,a5,a2 + 3bc05500: 00b2d91b srliw s2,t0,0xb + 3bc05504: 0269063b mulw a2,s2,t1 + 3bc05508: 00c7fb63 bgeu a5,a2,3bc0551e + 3bc0550c: 4064033b subw t1,s0,t1 + 3bc05510: 0053531b srliw t1,t1,0x5 + 3bc05514: 0073033b addw t1,t1,t2 + 3bc05518: 2095d30b srh t1,a1,s1,0 + 3bc0551c: b755 j 3bc054c0 + 3bc0551e: 0053531b srliw t1,t1,0x5 + 3bc05522: 4063833b subw t1,t2,t1 + 3bc05526: 2095d30b srh t1,a1,s1,0 + 3bc0552a: 048b0b13 addi s6,s6,72 + 3bc0552e: a165c38b lrhu t2,a1,s6,0 + 3bc05532: 40c28bbb subw s7,t0,a2 + 3bc05536: 9f91 subw a5,a5,a2 + 3bc05538: 0003831b sext.w t1,t2 + 3bc0553c: 00dbfa63 bgeu s7,a3,3bc05550 + 3bc05540: 0087991b slliw s2,a5,0x8 + 3bc05544: 9817478b lbuia a5,(a4),1,0 + 3bc05548: 008b9b9b slliw s7,s7,0x8 + 3bc0554c: 0127e7b3 or a5,a5,s2 + 3bc05550: 00bbd29b srliw t0,s7,0xb + 3bc05554: 0262863b mulw a2,t0,t1 + 3bc05558: 00c7fe63 bgeu a5,a2,3bc05574 + 3bc0555c: 4064033b subw t1,s0,t1 + 3bc05560: 0053531b srliw t1,t1,0x5 + 3bc05564: 0073033b addw t1,t1,t2 + 3bc05568: 2165d30b srh t1,a1,s6,0 + 3bc0556c: 837a mv t1,t5 + 3bc0556e: 8f4e mv t5,s3 + 3bc05570: 899a mv s3,t1 + 3bc05572: b7b9 j 3bc054c0 + 3bc05574: 0053531b srliw t1,t1,0x5 + 3bc05578: 4063833b subw t1,t2,t1 + 3bc0557c: 9f91 subw a5,a5,a2 + 3bc0557e: 2165d30b srh t1,a1,s6,0 + 3bc05582: 40cb863b subw a2,s7,a2 + 3bc05586: 837a mv t1,t5 + 3bc05588: 7f02 ld t5,32(sp) + 3bc0558a: f04e sd s3,32(sp) + 3bc0558c: b7d5 j 3bc05570 + 3bc0558e: 48a1 li a7,8 + 3bc05590: bf25 j 3bc054c8 + 3bc05592: 0056561b srliw a2,a2,0x5 + 3bc05596: 40ce8ebb subw t4,t4,a2 + 3bc0559a: 41f787bb subw a5,a5,t6 + 3bc0559e: 3c0ebe8b extu t4,t4,15,0 + 3bc055a2: 41f48fbb subw t6,s1,t6 + 3bc055a6: 430d li t1,3 + 3bc055a8: beb1 j 3bc05104 + 3bc055aa: 0056561b srliw a2,a2,0x5 + 3bc055ae: 40c383bb subw t2,t2,a2 + 3bc055b2: 41d787bb subw a5,a5,t4 + 3bc055b6: 3c03b38b extu t2,t2,15,0 + 3bc055ba: 001b831b addiw t1,s7,1 + 3bc055be: 41df8ebb subw t4,t6,t4 + 3bc055c2: b661 j 3bc0514a + 3bc055c4: 005fdf9b srliw t6,t6,0x5 + 3bc055c8: 41f383bb subw t2,t2,t6 + 3bc055cc: 9f91 subw a5,a5,a2 + 3bc055ce: 3c03b38b extu t2,t2,15,0 + 3bc055d2: 2305 addiw t1,t1,1 + 3bc055d4: 40ce863b subw a2,t4,a2 + 3bc055d8: be55 j 3bc0518c + 3bc055da: 005fdf9b srliw t6,t6,0x5 + 3bc055de: 41f38fbb subw t6,t2,t6 + 3bc055e2: 0102d383 lhu t2,16(t0) + 3bc055e6: 01f29023 sh t6,0(t0) + 3bc055ea: 9e05 subw a2,a2,s1 + 3bc055ec: 406787bb subw a5,a5,t1 + 3bc055f0: 00038f9b sext.w t6,t2 + 3bc055f4: 00d67a63 bgeu a2,a3,3bc05608 + 3bc055f8: 0087931b slliw t1,a5,0x8 + 3bc055fc: 9817478b lbuia a5,(a4),1,0 + 3bc05600: 0086161b slliw a2,a2,0x8 + 3bc05604: 0067e7b3 or a5,a5,t1 + 3bc05608: 00b6531b srliw t1,a2,0xb + 3bc0560c: 03f304bb mulw s1,t1,t6 + 3bc05610: 1297f563 bgeu a5,s1,3bc0573a + 3bc05614: 41f40fbb subw t6,s0,t6 + 3bc05618: 005fdf9b srliw t6,t6,0x5 + 3bc0561c: 7c0ebe8b extu t4,t4,31,0 + 3bc05620: 007f8fbb addw t6,t6,t2 + 3bc05624: 0ea1 addi t4,t4,8 + 3bc05626: 01f29823 sh t6,16(t0) + 3bc0562a: 03d2928b addsl t0,t0,t4,1 + 3bc0562e: 0022df83 lhu t6,2(t0) + 3bc05632: 000f861b sext.w a2,t6 + 3bc05636: 00d4fa63 bgeu s1,a3,3bc0564a + 3bc0563a: 9817430b lbuia t1,(a4),1,0 + 3bc0563e: 0087979b slliw a5,a5,0x8 + 3bc05642: 0084949b slliw s1,s1,0x8 + 3bc05646: 00f367b3 or a5,t1,a5 + 3bc0564a: 00b4d31b srliw t1,s1,0xb + 3bc0564e: 02c30ebb mulw t4,t1,a2 + 3bc05652: 0bd7f063 bgeu a5,t4,3bc056f2 + 3bc05656: 40c4063b subw a2,s0,a2 + 3bc0565a: 0056561b srliw a2,a2,0x5 + 3bc0565e: 01f60fbb addw t6,a2,t6 + 3bc05662: 3c0fbf8b extu t6,t6,15,0 + 3bc05666: 4309 li t1,2 + 3bc05668: 01f29123 sh t6,2(t0) + 3bc0566c: b262c38b lurhu t2,t0,t1,1 + 3bc05670: 7c03390b extu s2,t1,31,0 + 3bc05674: 0003861b sext.w a2,t2 + 3bc05678: 00defa63 bgeu t4,a3,3bc0568c + 3bc0567c: 98174f8b lbuia t6,(a4),1,0 + 3bc05680: 0087979b slliw a5,a5,0x8 + 3bc05684: 008e9e9b slliw t4,t4,0x8 + 3bc05688: 00ffe7b3 or a5,t6,a5 + 3bc0568c: 00bed49b srliw s1,t4,0xb + 3bc05690: 02c48fbb mulw t6,s1,a2 + 3bc05694: 00131b9b slliw s7,t1,0x1 + 3bc05698: 0306 slli t1,t1,0x1 + 3bc0569a: 07f7f863 bgeu a5,t6,3bc0570a + 3bc0569e: 40c4063b subw a2,s0,a2 + 3bc056a2: 0056561b srliw a2,a2,0x5 + 3bc056a6: 007603bb addw t2,a2,t2 + 3bc056aa: 3c03b38b extu t2,t2,15,0 + 3bc056ae: 2322d38b srh t2,t0,s2,1 + 3bc056b2: b262c48b lurhu s1,t0,t1,1 + 3bc056b6: 7c03390b extu s2,t1,31,0 + 3bc056ba: 00048e9b sext.w t4,s1 + 3bc056be: 00dff963 bgeu t6,a3,3bc056d0 + 3bc056c2: 9817460b lbuia a2,(a4),1,0 + 3bc056c6: 0087979b slliw a5,a5,0x8 + 3bc056ca: 008f9f9b slliw t6,t6,0x8 + 3bc056ce: 8fd1 or a5,a5,a2 + 3bc056d0: 00bfd39b srliw t2,t6,0xb + 3bc056d4: 03d3863b mulw a2,t2,t4 + 3bc056d8: 0013131b slliw t1,t1,0x1 + 3bc056dc: 04c7f463 bgeu a5,a2,3bc05724 + 3bc056e0: 41d40ebb subw t4,s0,t4 + 3bc056e4: 005ede9b srliw t4,t4,0x5 + 3bc056e8: 009e8ebb addw t4,t4,s1 + 3bc056ec: 2322de8b srh t4,t0,s2,1 + 3bc056f0: b44d j 3bc05192 + 3bc056f2: 0056561b srliw a2,a2,0x5 + 3bc056f6: 40cf8fbb subw t6,t6,a2 + 3bc056fa: 41d787bb subw a5,a5,t4 + 3bc056fe: 3c0fbf8b extu t6,t6,15,0 + 3bc05702: 41d48ebb subw t4,s1,t4 + 3bc05706: 430d li t1,3 + 3bc05708: b785 j 3bc05668 + 3bc0570a: 0056561b srliw a2,a2,0x5 + 3bc0570e: 40c383bb subw t2,t2,a2 + 3bc05712: 41f787bb subw a5,a5,t6 + 3bc05716: 3c03b38b extu t2,t2,15,0 + 3bc0571a: 001b831b addiw t1,s7,1 + 3bc0571e: 41fe8fbb subw t6,t4,t6 + 3bc05722: b771 j 3bc056ae + 3bc05724: 005ede9b srliw t4,t4,0x5 + 3bc05728: 41d48ebb subw t4,s1,t4 + 3bc0572c: 9f91 subw a5,a5,a2 + 3bc0572e: 2322de8b srh t4,t0,s2,1 + 3bc05732: 2305 addiw t1,t1,1 + 3bc05734: 40cf863b subw a2,t6,a2 + 3bc05738: bca9 j 3bc05192 + 3bc0573a: 005fdf9b srliw t6,t6,0x5 + 3bc0573e: 41f38fbb subw t6,t2,t6 + 3bc05742: 9e05 subw a2,a2,s1 + 3bc05744: 9f85 subw a5,a5,s1 + 3bc05746: 01f29823 sh t6,16(t0) + 3bc0574a: 4305 li t1,1 + 3bc0574c: 0ff00b93 li s7,255 + 3bc05750: 02031493 slli s1,t1,0x20 + 3bc05754: 01f4de93 srli t4,s1,0x1f + 3bc05758: 200e8e93 addi t4,t4,512 + 3bc0575c: a1d2cf8b lrhu t6,t0,t4,0 + 3bc05760: 01d28c33 add s8,t0,t4 + 3bc05764: 000f8e9b sext.w t4,t6 + 3bc05768: 00d67a63 bgeu a2,a3,3bc0577c + 3bc0576c: 9817438b lbuia t2,(a4),1,0 + 3bc05770: 0087979b slliw a5,a5,0x8 + 3bc05774: 0086161b slliw a2,a2,0x8 + 3bc05778: 00f3e7b3 or a5,t2,a5 + 3bc0577c: 00b6539b srliw t2,a2,0xb + 3bc05780: 03d3893b mulw s2,t2,t4 + 3bc05784: 0013131b slliw t1,t1,0x1 + 3bc05788: 0327f263 bgeu a5,s2,3bc057ac + 3bc0578c: 41d40ebb subw t4,s0,t4 + 3bc05790: 005ede9b srliw t4,t4,0x5 + 3bc05794: 01fe8fbb addw t6,t4,t6 + 3bc05798: 3c0fbf8b extu t6,t6,15,0 + 3bc0579c: 864a mv a2,s2 + 3bc0579e: 01fc1023 sh t6,0(s8) + 3bc057a2: fa6bf7e3 bgeu s7,t1,3bc05750 + 3bc057a6: f103031b addiw t1,t1,-240 + 3bc057aa: b2e5 j 3bc05192 + 3bc057ac: 005ede9b srliw t4,t4,0x5 + 3bc057b0: 41df8fbb subw t6,t6,t4 + 3bc057b4: 4126063b subw a2,a2,s2 + 3bc057b8: 412787bb subw a5,a5,s2 + 3bc057bc: 3c0fbf8b extu t6,t6,15,0 + 3bc057c0: 2305 addiw t1,t1,1 + 3bc057c2: bff1 j 3bc0579e + 3bc057c4: 005ede9b srliw t4,t4,0x5 + 3bc057c8: 41d383bb subw t2,t2,t4 + 3bc057cc: 405787bb subw a5,a5,t0 + 3bc057d0: 3c03b38b extu t2,t2,15,0 + 3bc057d4: 405602bb subw t0,a2,t0 + 3bc057d8: 460d li a2,3 + 3bc057da: bc09 j 3bc051ec + 3bc057dc: 005ede9b srliw t4,t4,0x5 + 3bc057e0: 41d484bb subw s1,s1,t4 + 3bc057e4: 407787bb subw a5,a5,t2 + 3bc057e8: 3c04b48b extu s1,s1,15,0 + 3bc057ec: 001c061b addiw a2,s8,1 + 3bc057f0: 407283bb subw t2,t0,t2 + 3bc057f4: bc3d j 3bc05232 + 3bc057f6: 005ede9b srliw t4,t4,0x5 + 3bc057fa: 41d484bb subw s1,s1,t4 + 3bc057fe: 405787bb subw a5,a5,t0 + 3bc05802: 3c04b48b extu s1,s1,15,0 + 3bc05806: 2905 addiw s2,s2,1 + 3bc05808: 405382bb subw t0,t2,t0 + 3bc0580c: b4ad j 3bc05276 + 3bc0580e: 0056561b srliw a2,a2,0x5 + 3bc05812: 40c383bb subw t2,t2,a2 + 3bc05816: 41d787bb subw a5,a5,t4 + 3bc0581a: 3c03b38b extu t2,t2,15,0 + 3bc0581e: 2485 addiw s1,s1,1 + 3bc05820: 41d28ebb subw t4,t0,t4 + 3bc05824: bc59 j 3bc052ba + 3bc05826: 0056561b srliw a2,a2,0x5 + 3bc0582a: 40c282bb subw t0,t0,a2 + 3bc0582e: 407787bb subw a5,a5,t2 + 3bc05832: 3c02b28b extu t0,t0,15,0 + 3bc05836: 2905 addiw s2,s2,1 + 3bc05838: 407e83bb subw t2,t4,t2 + 3bc0583c: b4c9 j 3bc052fe + 3bc0583e: 0052d29b srliw t0,t0,0x5 + 3bc05842: 405484bb subw s1,s1,t0 + 3bc05846: 9f91 subw a5,a5,a2 + 3bc05848: 3c04b48b extu s1,s1,15,0 + 3bc0584c: 2e85 addiw t4,t4,1 + 3bc0584e: 40c3863b subw a2,t2,a2 + 3bc05852: b4fd j 3bc05340 + 3bc05854: 8c76 mv s8,t4 + 3bc05856: be21 j 3bc0536e + 3bc05858: 0053d39b srliw t2,t2,0x5 + 3bc0585c: 407484bb subw s1,s1,t2 + 3bc05860: 41a6063b subw a2,a2,s10 + 3bc05864: 41a787bb subw a5,a5,s10 + 3bc05868: 3c04b48b extu s1,s1,15,0 + 3bc0586c: 01fe8fbb addw t6,t4,t6 + 3bc05870: be81 j 3bc053c0 + 3bc05872: 32ed addiw t0,t0,-5 + 3bc05874: 00d67a63 bgeu a2,a3,3bc05888 + 3bc05878: 98174e8b lbuia t4,(a4),1,0 + 3bc0587c: 0087979b slliw a5,a5,0x8 + 3bc05880: 0086161b slliw a2,a2,0x8 + 3bc05884: 00fee7b3 or a5,t4,a5 + 3bc05888: 0016539b srliw t2,a2,0x1 + 3bc0588c: 407787bb subw a5,a5,t2 + 3bc05890: 41f7d49b sraiw s1,a5,0x1f + 3bc05894: 001f9f9b slliw t6,t6,0x1 + 3bc05898: 0003861b sext.w a2,t2 + 3bc0589c: 2f85 addiw t6,t6,1 + 3bc0589e: 0093f3b3 and t2,t2,s1 + 3bc058a2: 32fd addiw t0,t0,-1 + 3bc058a4: 01f48fbb addw t6,s1,t6 + 3bc058a8: 007787bb addw a5,a5,t2 + 3bc058ac: fc0294e3 bnez t0,3bc05874 + 3bc058b0: 0025d283 lhu t0,2(a1) + 3bc058b4: 004f9f9b slliw t6,t6,0x4 + 3bc058b8: 00028e9b sext.w t4,t0 + 3bc058bc: 00d67a63 bgeu a2,a3,3bc058d0 + 3bc058c0: 9817438b lbuia t2,(a4),1,0 + 3bc058c4: 0087979b slliw a5,a5,0x8 + 3bc058c8: 0086161b slliw a2,a2,0x8 + 3bc058cc: 00f3e7b3 or a5,t2,a5 + 3bc058d0: 00b6549b srliw s1,a2,0xb + 3bc058d4: 03d483bb mulw t2,s1,t4 + 3bc058d8: 1677f463 bgeu a5,t2,3bc05a40 + 3bc058dc: 41d40ebb subw t4,s0,t4 + 3bc058e0: 005ede9b srliw t4,t4,0x5 + 3bc058e4: 005e82bb addw t0,t4,t0 + 3bc058e8: 3c02b28b extu t0,t0,15,0 + 3bc058ec: 4e89 li t4,2 + 3bc058ee: 00559123 sh t0,2(a1) + 3bc058f2: b3d5c48b lurhu s1,a1,t4,1 + 3bc058f6: 7c0ebb8b extu s7,t4,31,0 + 3bc058fa: 0004861b sext.w a2,s1 + 3bc058fe: 00d3fa63 bgeu t2,a3,3bc05912 + 3bc05902: 9817428b lbuia t0,(a4),1,0 + 3bc05906: 0087979b slliw a5,a5,0x8 + 3bc0590a: 0083939b slliw t2,t2,0x8 + 3bc0590e: 00f2e7b3 or a5,t0,a5 + 3bc05912: 00b3d91b srliw s2,t2,0xb + 3bc05916: 02c902bb mulw t0,s2,a2 + 3bc0591a: 1257ff63 bgeu a5,t0,3bc05a58 + 3bc0591e: 40c4063b subw a2,s0,a2 + 3bc05922: 0056561b srliw a2,a2,0x5 + 3bc05926: 9cb1 addw s1,s1,a2 + 3bc05928: 3c04b48b extu s1,s1,15,0 + 3bc0592c: 0e89 addi t4,t4,2 + 3bc0592e: 2375d48b srh s1,a1,s7,1 + 3bc05932: b3d5cb8b lurhu s7,a1,t4,1 + 3bc05936: 7c0eb90b extu s2,t4,31,0 + 3bc0593a: 000b861b sext.w a2,s7 + 3bc0593e: 00d2fa63 bgeu t0,a3,3bc05952 + 3bc05942: 9817438b lbuia t2,(a4),1,0 + 3bc05946: 0087979b slliw a5,a5,0x8 + 3bc0594a: 0082929b slliw t0,t0,0x8 + 3bc0594e: 00f3e7b3 or a5,t2,a5 + 3bc05952: 00b2d49b srliw s1,t0,0xb + 3bc05956: 02c483bb mulw t2,s1,a2 + 3bc0595a: 1077fa63 bgeu a5,t2,3bc05a6e + 3bc0595e: 40c4063b subw a2,s0,a2 + 3bc05962: 0056561b srliw a2,a2,0x5 + 3bc05966: 01760bbb addw s7,a2,s7 + 3bc0596a: 3c0bbb8b extu s7,s7,15,0 + 3bc0596e: 2e91 addiw t4,t4,4 + 3bc05970: 2325db8b srh s7,a1,s2,1 + 3bc05974: b3d5c48b lurhu s1,a1,t4,1 + 3bc05978: 7c0ebb8b extu s7,t4,31,0 + 3bc0597c: 0004829b sext.w t0,s1 + 3bc05980: 00d3f963 bgeu t2,a3,3bc05992 + 3bc05984: 9817460b lbuia a2,(a4),1,0 + 3bc05988: 0087979b slliw a5,a5,0x8 + 3bc0598c: 0083939b slliw t2,t2,0x8 + 3bc05990: 8fd1 or a5,a5,a2 + 3bc05992: 00b3d91b srliw s2,t2,0xb + 3bc05996: 0259063b mulw a2,s2,t0 + 3bc0599a: 0ec7f663 bgeu a5,a2,3bc05a86 + 3bc0599e: 405402bb subw t0,s0,t0 + 3bc059a2: 0052d29b srliw t0,t0,0x5 + 3bc059a6: 009284bb addw s1,t0,s1 + 3bc059aa: 3c04b48b extu s1,s1,15,0 + 3bc059ae: 3ee1 addiw t4,t4,-8 + 3bc059b0: 01feefb3 or t6,t4,t6 + 3bc059b4: 2375d48b srh s1,a1,s7,1 + 3bc059b8: 000f839b sext.w t2,t6 + 3bc059bc: 54fd li s1,-1 + 3bc059be: a09398e3 bne t2,s1,3bc053ce + 3bc059c2: 38d1 addiw a7,a7,-12 + 3bc059c4: 8fda mv t6,s6 + 3bc059c6: 11200313 li t1,274 + 3bc059ca: 010006b7 lui a3,0x1000 + 3bc059ce: 00d67963 bgeu a2,a3,3bc059e0 + 3bc059d2: 9817468b lbuia a3,(a4),1,0 + 3bc059d6: 0087979b slliw a5,a5,0x8 + 3bc059da: 0086161b slliw a2,a2,0x8 + 3bc059de: 8fd5 or a5,a5,a3 + 3bc059e0: dd5c sw a5,60(a0) + 3bc059e2: 7782 ld a5,32(sp) + 3bc059e4: f918 sd a4,48(a0) + 3bc059e6: dd10 sw a2,56(a0) + 3bc059e8: c97c sw a5,84(a0) + 3bc059ea: 417c lw a5,68(a0) + 3bc059ec: 04652e23 sw t1,92(a0) + 3bc059f0: 03053423 sd a6,40(a0) + 3bc059f4: 05c52023 sw t3,64(a0) + 3bc059f8: 05f52423 sw t6,72(a0) + 3bc059fc: 05e52623 sw t5,76(a0) + 3bc05a00: 05352823 sw s3,80(a0) + 3bc05a04: 05152c23 sw a7,88(a0) + 3bc05a08: e789 bnez a5,3bc05a12 + 3bc05a0a: 415c lw a5,4(a0) + 3bc05a0c: 00fe6363 bltu t3,a5,3bc05a12 + 3bc05a10: c17c sw a5,68(a0) + 3bc05a12: 65c2 ld a1,16(sp) + 3bc05a14: e42a sd a0,8(sp) + 3bc05a16: d23fe0ef jal ra,3bc04738 + 3bc05a1a: 6522 ld a0,8(sp) + 3bc05a1c: 6742 ld a4,16(sp) + 3bc05a1e: 751c ld a5,40(a0) + 3bc05a20: 00e7fd63 bgeu a5,a4,3bc05a3a + 3bc05a24: 791c ld a5,48(a0) + 3bc05a26: 7742 ld a4,48(sp) + 3bc05a28: 00e7f963 bgeu a5,a4,3bc05a3a + 3bc05a2c: 4d78 lw a4,92(a0) + 3bc05a2e: 11100793 li a5,273 + 3bc05a32: 00e7e463 bltu a5,a4,3bc05a3a + 3bc05a36: d9bfe06f j 3bc047d0 + 3bc05a3a: 4501 li a0,0 + 3bc05a3c: dd3fe06f j 3bc0480e + 3bc05a40: 005ede9b srliw t4,t4,0x5 + 3bc05a44: 41d282bb subw t0,t0,t4 + 3bc05a48: 407787bb subw a5,a5,t2 + 3bc05a4c: 3c02b28b extu t0,t0,15,0 + 3bc05a50: 407603bb subw t2,a2,t2 + 3bc05a54: 4e8d li t4,3 + 3bc05a56: bd61 j 3bc058ee + 3bc05a58: 0056561b srliw a2,a2,0x5 + 3bc05a5c: 9c91 subw s1,s1,a2 + 3bc05a5e: 405787bb subw a5,a5,t0 + 3bc05a62: 3c04b48b extu s1,s1,15,0 + 3bc05a66: 0e91 addi t4,t4,4 + 3bc05a68: 405382bb subw t0,t2,t0 + 3bc05a6c: b5c9 j 3bc0592e + 3bc05a6e: 0056561b srliw a2,a2,0x5 + 3bc05a72: 40cb8bbb subw s7,s7,a2 + 3bc05a76: 407787bb subw a5,a5,t2 + 3bc05a7a: 3c0bbb8b extu s7,s7,15,0 + 3bc05a7e: 2ea1 addiw t4,t4,8 + 3bc05a80: 407283bb subw t2,t0,t2 + 3bc05a84: b5f5 j 3bc05970 + 3bc05a86: 0052d29b srliw t0,t0,0x5 + 3bc05a8a: 405484bb subw s1,s1,t0 + 3bc05a8e: 9f91 subw a5,a5,a2 + 3bc05a90: 3c04b48b extu s1,s1,15,0 + 3bc05a94: 40c3863b subw a2,t2,a2 + 3bc05a98: bf21 j 3bc059b0 + 3bc05a9a: 489d li a7,7 + 3bc05a9c: ba3d j 3bc053da + 3bc05a9e: 8fda mv t6,s6 + 3bc05aa0: 64a2 ld s1,8(sp) + 3bc05aa2: 00230e9b addiw t4,t1,2 + 3bc05aa6: 8376 mv t1,t4 + 3bc05aa8: 410483b3 sub t2,s1,a6 + 3bc05aac: 93048ce3 beq s1,a6,3bc053e4 + 3bc05ab0: 7c0eb28b extu t0,t4,31,0 + 3bc05ab4: 0053f463 bgeu t2,t0,3bc05abc + 3bc05ab8: 00038e9b sext.w t4,t2 + 3bc05abc: 7c0fb48b extu s1,t6,31,0 + 3bc05ac0: 409803b3 sub t2,a6,s1 + 3bc05ac4: 82d6 mv t0,s5 + 3bc05ac6: 00986363 bltu a6,s1,3bc05acc + 3bc05aca: 4281 li t0,0 + 3bc05acc: 9396 add t2,t2,t0 + 3bc05ace: 7c0eb48b extu s1,t4,31,0 + 3bc05ad2: 407a8933 sub s2,s5,t2 + 3bc05ad6: 01de0e3b addw t3,t3,t4 + 3bc05ada: 41d3033b subw t1,t1,t4 + 3bc05ade: 010a02b3 add t0,s4,a6 + 3bc05ae2: 02996363 bltu s2,s1,3bc05b08 + 3bc05ae6: 410383b3 sub t2,t2,a6 + 3bc05aea: 00928eb3 add t4,t0,s1 + 3bc05aee: 9826 add a6,a6,s1 + 3bc05af0: 8072c48b lrbu s1,t0,t2,0 + 3bc05af4: 1812d48b sbia s1,(t0),1,0 + 3bc05af8: fe5e9ce3 bne t4,t0,3bc05af0 + 3bc05afc: 88cff06f j 3bc04b88 + 3bc05b00: f04e sd s3,32(sp) + 3bc05b02: 89fa mv s3,t5 + 3bc05b04: 8f5a mv t5,s6 + 3bc05b06: bf69 j 3bc05aa0 + 3bc05b08: 84f6 mv s1,t4 + 3bc05b0a: 807a490b lrbu s2,s4,t2,0 + 3bc05b0e: 0385 addi t2,t2,1 + 3bc05b10: 01228023 sb s2,0(t0) + 3bc05b14: 007a9363 bne s5,t2,3bc05b1a + 3bc05b18: 4381 li t2,0 + 3bc05b1a: 34fd addiw s1,s1,-1 + 3bc05b1c: 0285 addi t0,t0,1 + 3bc05b1e: f4f5 bnez s1,3bc05b0a + 3bc05b20: 3efd addiw t4,t4,-1 + 3bc05b22: 0805 addi a6,a6,1 + 3bc05b24: 7c0ebe8b extu t4,t4,31,0 + 3bc05b28: 9876 add a6,a6,t4 + 3bc05b2a: 85eff06f j 3bc04b88 + 3bc05b2e: 48a5 li a7,9 + 3bc05b30: 858ff06f j 3bc04b88 + +000000003bc05b34 : + 3bc05b34: 00254703 lbu a4,2(a0) + 3bc05b38: 04052303 lw t1,64(a0) + 3bc05b3c: 4805 li a6,1 + 3bc05b3e: 00e8183b sllw a6,a6,a4 + 3bc05b42: 05852e83 lw t4,88(a0) + 3bc05b46: 387d addiw a6,a6,-1 + 3bc05b48: 01037833 and a6,t1,a6 + 3bc05b4c: 0048181b slliw a6,a6,0x4 + 3bc05b50: 010e8e3b addw t3,t4,a6 + 3bc05b54: 01053883 ld a7,16(a0) + 3bc05b58: 020e1713 slli a4,t3,0x20 + 3bc05b5c: 5d14 lw a3,56(a0) + 3bc05b5e: 01f75e13 srli t3,a4,0x1f + 3bc05b62: 9e46 add t3,t3,a7 + 3bc05b64: 01000737 lui a4,0x1000 + 3bc05b68: 5d5c lw a5,60(a0) + 3bc05b6a: e00e5f83 lhu t6,-512(t3) + 3bc05b6e: 8f2a mv t5,a0 + 3bc05b70: 962e add a2,a2,a1 + 3bc05b72: 00e6fc63 bgeu a3,a4,3bc05b8a + 3bc05b76: 4501 li a0,0 + 3bc05b78: 0cc5f463 bgeu a1,a2,3bc05c40 + 3bc05b7c: 9815c70b lbuia a4,(a1),1,0 + 3bc05b80: 0087979b slliw a5,a5,0x8 + 3bc05b84: 0086969b slliw a3,a3,0x8 + 3bc05b88: 8fd9 or a5,a5,a4 + 3bc05b8a: 00b6d71b srliw a4,a3,0xb + 3bc05b8e: 03f7073b mulw a4,a4,t6 + 3bc05b92: 14e7f063 bgeu a5,a4,3bc05cd2 + 3bc05b96: 040f3683 ld a3,64(t5) + 3bc05b9a: 28088893 addi a7,a7,640 # f0280 <__BSS_SIZE__+0xea670> + 3bc05b9e: caa1 beqz a3,3bc05bee + 3bc05ba0: 001f4503 lbu a0,1(t5) + 3bc05ba4: 4685 li a3,1 + 3bc05ba6: 000f4803 lbu a6,0(t5) + 3bc05baa: 00a696bb sllw a3,a3,a0 + 3bc05bae: 36fd addiw a3,a3,-1 + 3bc05bb0: 00d37333 and t1,t1,a3 + 3bc05bb4: 028f3683 ld a3,40(t5) + 3bc05bb8: 018f3e03 ld t3,24(t5) + 3bc05bbc: 0103133b sllw t1,t1,a6 + 3bc05bc0: fff68513 addi a0,a3,-1 # ffffff <__BSS_SIZE__+0xffa3ef> + 3bc05bc4: e681 bnez a3,3bc05bcc + 3bc05bc6: 020f3503 ld a0,32(t5) + 3bc05bca: 157d addi a0,a0,-1 + 3bc05bcc: 80ae468b lrbu a3,t3,a0,0 + 3bc05bd0: 4521 li a0,8 + 3bc05bd2: 4105053b subw a0,a0,a6 + 3bc05bd6: 40a6d6bb sraw a3,a3,a0 + 3bc05bda: 006686bb addw a3,a3,t1 + 3bc05bde: 30000513 li a0,768 + 3bc05be2: 02a686bb mulw a3,a3,a0 + 3bc05be6: 7c06b68b extu a3,a3,31,0 + 3bc05bea: 02d8988b addsl a7,a7,a3,1 + 3bc05bee: 4699 li a3,6 + 3bc05bf0: 05d6eb63 bltu a3,t4,3bc05c46 + 3bc05bf4: 4685 li a3,1 + 3bc05bf6: 01000eb7 lui t4,0x1000 + 3bc05bfa: 0ff00e13 li t3,255 + 3bc05bfe: b2d8c80b lurhu a6,a7,a3,1 + 3bc05c02: 01d77b63 bgeu a4,t4,3bc05c18 + 3bc05c06: 2ec5f363 bgeu a1,a2,3bc05eec + 3bc05c0a: 9815c50b lbuia a0,(a1),1,0 + 3bc05c0e: 0087979b slliw a5,a5,0x8 + 3bc05c12: 0087171b slliw a4,a4,0x8 + 3bc05c16: 8fc9 or a5,a5,a0 + 3bc05c18: 00b7551b srliw a0,a4,0xb + 3bc05c1c: 0305083b mulw a6,a0,a6 + 3bc05c20: 0016969b slliw a3,a3,0x1 + 3bc05c24: 0107ef63 bltu a5,a6,3bc05c42 + 3bc05c28: 4107073b subw a4,a4,a6 + 3bc05c2c: 410787bb subw a5,a5,a6 + 3bc05c30: 2685 addiw a3,a3,1 + 3bc05c32: fcde76e3 bgeu t3,a3,3bc05bfe + 3bc05c36: 4505 li a0,1 + 3bc05c38: 010007b7 lui a5,0x1000 + 3bc05c3c: 2af76663 bltu a4,a5,3bc05ee8 + 3bc05c40: 8082 ret + 3bc05c42: 8742 mv a4,a6 + 3bc05c44: b7fd j 3bc05c32 + 3bc05c46: 028f3303 ld t1,40(t5) + 3bc05c4a: 048f6803 lwu a6,72(t5) + 3bc05c4e: 018f3683 ld a3,24(t5) + 3bc05c52: 4501 li a0,0 + 3bc05c54: 41030e33 sub t3,t1,a6 + 3bc05c58: 01037463 bgeu t1,a6,3bc05c60 + 3bc05c5c: 020f3503 ld a0,32(t5) + 3bc05c60: 96f2 add a3,a3,t3 + 3bc05c62: 80a6ce0b lrbu t3,a3,a0,0 + 3bc05c66: 010002b7 lui t0,0x1000 + 3bc05c6a: 4685 li a3,1 + 3bc05c6c: 10000513 li a0,256 + 3bc05c70: 0ff00f93 li t6,255 + 3bc05c74: 001e181b slliw a6,t3,0x1 + 3bc05c78: 00d5033b addw t1,a0,a3 + 3bc05c7c: 00080e1b sext.w t3,a6 + 3bc05c80: 01057833 and a6,a0,a6 + 3bc05c84: 00080e9b sext.w t4,a6 + 3bc05c88: 0103083b addw a6,t1,a6 + 3bc05c8c: b308c30b lurhu t1,a7,a6,1 + 3bc05c90: 00577c63 bgeu a4,t0,3bc05ca8 + 3bc05c94: 24c5fc63 bgeu a1,a2,3bc05eec + 3bc05c98: 9815c80b lbuia a6,(a1),1,0 + 3bc05c9c: 0087979b slliw a5,a5,0x8 + 3bc05ca0: 0087171b slliw a4,a4,0x8 + 3bc05ca4: 00f867b3 or a5,a6,a5 + 3bc05ca8: 00b7581b srliw a6,a4,0xb + 3bc05cac: 02680f3b mulw t5,a6,t1 + 3bc05cb0: 0016969b slliw a3,a3,0x1 + 3bc05cb4: 01e7f863 bgeu a5,t5,3bc05cc4 + 3bc05cb8: 01d54533 xor a0,a0,t4 + 3bc05cbc: 877a mv a4,t5 + 3bc05cbe: fadffbe3 bgeu t6,a3,3bc05c74 + 3bc05cc2: bf95 j 3bc05c36 + 3bc05cc4: 41e7073b subw a4,a4,t5 + 3bc05cc8: 41e787bb subw a5,a5,t5 + 3bc05ccc: 2685 addiw a3,a3,1 + 3bc05cce: 8576 mv a0,t4 + 3bc05cd0: b7fd j 3bc05cbe + 3bc05cd2: 7c0eb50b extu a0,t4,31,0 + 3bc05cd6: 0541 addi a0,a0,16 + 3bc05cd8: a2a8cf0b lrhu t5,a7,a0,1 + 3bc05cdc: 00151e93 slli t4,a0,0x1 + 3bc05ce0: 40e6833b subw t1,a3,a4 + 3bc05ce4: 01000537 lui a0,0x1000 + 3bc05ce8: 9f99 subw a5,a5,a4 + 3bc05cea: 00a37c63 bgeu t1,a0,3bc05d02 + 3bc05cee: 4501 li a0,0 + 3bc05cf0: f4c5f8e3 bgeu a1,a2,3bc05c40 + 3bc05cf4: 9815c70b lbuia a4,(a1),1,0 + 3bc05cf8: 0087979b slliw a5,a5,0x8 + 3bc05cfc: 0083131b slliw t1,t1,0x8 + 3bc05d00: 8fd9 or a5,a5,a4 + 3bc05d02: 00b3571b srliw a4,t1,0xb + 3bc05d06: 03e706bb mulw a3,a4,t5 + 3bc05d0a: 16d7f563 bgeu a5,a3,3bc05e74 + 3bc05d0e: a0088313 addi t1,a7,-1536 + 3bc05d12: 4509 li a0,2 + 3bc05d14: 4f01 li t5,0 + 3bc05d16: 01000e37 lui t3,0x1000 + 3bc05d1a: 00035703 lhu a4,0(t1) + 3bc05d1e: 01c6fc63 bgeu a3,t3,3bc05d36 + 3bc05d22: 1cc5f563 bgeu a1,a2,3bc05eec + 3bc05d26: 9815ce0b lbuia t3,(a1),1,0 + 3bc05d2a: 0087979b slliw a5,a5,0x8 + 3bc05d2e: 0086969b slliw a3,a3,0x8 + 3bc05d32: 00fe67b3 or a5,t3,a5 + 3bc05d36: 00b6de1b srliw t3,a3,0xb + 3bc05d3a: 02ee073b mulw a4,t3,a4 + 3bc05d3e: 22e7fc63 bgeu a5,a4,3bc05f76 + 3bc05d42: 7c08380b extu a6,a6,31,0 + 3bc05d46: 0303130b addsl t1,t1,a6,1 + 3bc05d4a: 4801 li a6,0 + 3bc05d4c: 46a1 li a3,8 + 3bc05d4e: 4e05 li t3,1 + 3bc05d50: 010003b7 lui t2,0x1000 + 3bc05d54: b3c34f8b lurhu t6,t1,t3,1 + 3bc05d58: 00777c63 bgeu a4,t2,3bc05d70 + 3bc05d5c: 18c5f863 bgeu a1,a2,3bc05eec + 3bc05d60: 9815ce8b lbuia t4,(a1),1,0 + 3bc05d64: 0087979b slliw a5,a5,0x8 + 3bc05d68: 0087171b slliw a4,a4,0x8 + 3bc05d6c: 00fee7b3 or a5,t4,a5 + 3bc05d70: 00b75e9b srliw t4,a4,0xb + 3bc05d74: 03fe8fbb mulw t6,t4,t6 + 3bc05d78: 001e1e1b slliw t3,t3,0x1 + 3bc05d7c: 25f7e663 bltu a5,t6,3bc05fc8 + 3bc05d80: 41f7073b subw a4,a4,t6 + 3bc05d84: 41f787bb subw a5,a5,t6 + 3bc05d88: 2e05 addiw t3,t3,1 + 3bc05d8a: fcde65e3 bltu t3,a3,3bc05d54 + 3bc05d8e: 430d li t1,3 + 3bc05d90: ebe364e3 bltu t1,t5,3bc05c38 + 3bc05d94: 40d806bb subw a3,a6,a3 + 3bc05d98: 01c6883b addw a6,a3,t3 + 3bc05d9c: 86c2 mv a3,a6 + 3bc05d9e: 01037363 bgeu t1,a6,3bc05da4 + 3bc05da2: 468d li a3,3 + 3bc05da4: 0066981b slliw a6,a3,0x6 + 3bc05da8: 0408081b addiw a6,a6,64 + 3bc05dac: 7c08380b extu a6,a6,31,0 + 3bc05db0: 4685 li a3,1 + 3bc05db2: 01000fb7 lui t6,0x1000 + 3bc05db6: 03f00f13 li t5,63 + 3bc05dba: 7c06b30b extu t1,a3,31,0 + 3bc05dbe: 9342 add t1,t1,a6 + 3bc05dc0: a268ce0b lrhu t3,a7,t1,1 + 3bc05dc4: 01f77c63 bgeu a4,t6,3bc05ddc + 3bc05dc8: 12c5f263 bgeu a1,a2,3bc05eec + 3bc05dcc: 9815c30b lbuia t1,(a1),1,0 + 3bc05dd0: 0087979b slliw a5,a5,0x8 + 3bc05dd4: 0087171b slliw a4,a4,0x8 + 3bc05dd8: 00f367b3 or a5,t1,a5 + 3bc05ddc: 00b7531b srliw t1,a4,0xb + 3bc05de0: 03c30e3b mulw t3,t1,t3 + 3bc05de4: 0016969b slliw a3,a3,0x1 + 3bc05de8: 1fc7e263 bltu a5,t3,3bc05fcc + 3bc05dec: 41c7073b subw a4,a4,t3 + 3bc05df0: 41c787bb subw a5,a5,t3 + 3bc05df4: 2685 addiw a3,a3,1 + 3bc05df6: fcdf72e3 bgeu t5,a3,3bc05dba + 3bc05dfa: fc06869b addiw a3,a3,-64 + 3bc05dfe: 0006831b sext.w t1,a3 + 3bc05e02: 480d li a6,3 + 3bc05e04: e2687ae3 bgeu a6,t1,3bc05c38 + 3bc05e08: 4e35 li t3,13 + 3bc05e0a: 0016d81b srliw a6,a3,0x1 + 3bc05e0e: 1c6e6163 bltu t3,t1,3bc05fd0 + 3bc05e12: 8a85 andi a3,a3,1 + 3bc05e14: 387d addiw a6,a6,-1 + 3bc05e16: 0026e693 ori a3,a3,2 + 3bc05e1a: 010696bb sllw a3,a3,a6 + 3bc05e1e: 02069313 slli t1,a3,0x20 + 3bc05e22: 01f35693 srli a3,t1,0x1f + 3bc05e26: 737d lui t1,0xfffff + 3bc05e28: 30030313 addi t1,t1,768 # fffffffffffff300 <__BL2_END__+0xffffffffc43ebef0> + 3bc05e2c: 969a add a3,a3,t1 + 3bc05e2e: 98b6 add a7,a7,a3 + 3bc05e30: 4e05 li t3,1 + 3bc05e32: 4685 li a3,1 + 3bc05e34: 010002b7 lui t0,0x1000 + 3bc05e38: b2d8ce8b lurhu t4,a7,a3,1 + 3bc05e3c: 00577c63 bgeu a4,t0,3bc05e54 + 3bc05e40: 0ac5f663 bgeu a1,a2,3bc05eec + 3bc05e44: 9815c30b lbuia t1,(a1),1,0 + 3bc05e48: 0087979b slliw a5,a5,0x8 + 3bc05e4c: 0087171b slliw a4,a4,0x8 + 3bc05e50: 00f367b3 or a5,t1,a5 + 3bc05e54: 00b7531b srliw t1,a4,0xb + 3bc05e58: 03d30f3b mulw t5,t1,t4 + 3bc05e5c: 001e1f9b slliw t6,t3,0x1 + 3bc05e60: 1be7f763 bgeu a5,t5,3bc0600e + 3bc05e64: 01c686bb addw a3,a3,t3 + 3bc05e68: 877a mv a4,t5 + 3bc05e6a: 387d addiw a6,a6,-1 + 3bc05e6c: dc0806e3 beqz a6,3bc05c38 + 3bc05e70: 8e7e mv t3,t6 + 3bc05e72: b7d9 j 3bc05e38 + 3bc05e74: 40d3053b subw a0,t1,a3 + 3bc05e78: 9ec6 add t4,t4,a7 + 3bc05e7a: 01000f37 lui t5,0x1000 + 3bc05e7e: 40d7873b subw a4,a5,a3 + 3bc05e82: 832a mv t1,a0 + 3bc05e84: 018ed683 lhu a3,24(t4) # 1000018 <__BSS_SIZE__+0xffa408> + 3bc05e88: 01e57c63 bgeu a0,t5,3bc05ea0 + 3bc05e8c: 4501 li a0,0 + 3bc05e8e: dac5f9e3 bgeu a1,a2,3bc05c40 + 3bc05e92: 0087179b slliw a5,a4,0x8 + 3bc05e96: 9815c70b lbuia a4,(a1),1,0 + 3bc05e9a: 0083151b slliw a0,t1,0x8 + 3bc05e9e: 8f5d or a4,a4,a5 + 3bc05ea0: 00b5531b srliw t1,a0,0xb + 3bc05ea4: 02d306bb mulw a3,t1,a3 + 3bc05ea8: 8336 mv t1,a3 + 3bc05eaa: 04d77e63 bgeu a4,a3,3bc05f06 + 3bc05eae: 77fd lui a5,0xfffff + 3bc05eb0: 9e3e add t3,t3,a5 + 3bc05eb2: 010007b7 lui a5,0x1000 + 3bc05eb6: 400e5e03 lhu t3,1024(t3) # 1000400 <__BSS_SIZE__+0xffa7f0> + 3bc05eba: 00f6fc63 bgeu a3,a5,3bc05ed2 + 3bc05ebe: 4501 li a0,0 + 3bc05ec0: d8c5f0e3 bgeu a1,a2,3bc05c40 + 3bc05ec4: 0087179b slliw a5,a4,0x8 + 3bc05ec8: 9815c70b lbuia a4,(a1),1,0 + 3bc05ecc: 0086969b slliw a3,a3,0x8 + 3bc05ed0: 8f5d or a4,a4,a5 + 3bc05ed2: 00b6d79b srliw a5,a3,0xb + 3bc05ed6: 03c7833b mulw t1,a5,t3 + 3bc05eda: 00677b63 bgeu a4,t1,3bc05ef0 + 3bc05ede: 010007b7 lui a5,0x1000 + 3bc05ee2: 450d li a0,3 + 3bc05ee4: d4f37ee3 bgeu t1,a5,3bc05c40 + 3bc05ee8: d4c5ece3 bltu a1,a2,3bc05c40 + 3bc05eec: 4501 li a0,0 + 3bc05eee: bb89 j 3bc05c40 + 3bc05ef0: 406686bb subw a3,a3,t1 + 3bc05ef4: 406707bb subw a5,a4,t1 + 3bc05ef8: 737d lui t1,0xfffff + 3bc05efa: 60030313 addi t1,t1,1536 # fffffffffffff600 <__BL2_END__+0xffffffffc43ec1f0> + 3bc05efe: 9346 add t1,t1,a7 + 3bc05f00: 450d li a0,3 + 3bc05f02: 4f31 li t5,12 + 3bc05f04: bd09 j 3bc05d16 + 3bc05f06: 9d15 subw a0,a0,a3 + 3bc05f08: 01000e37 lui t3,0x1000 + 3bc05f0c: 406707bb subw a5,a4,t1 + 3bc05f10: 86aa mv a3,a0 + 3bc05f12: 030ed303 lhu t1,48(t4) + 3bc05f16: 01c57c63 bgeu a0,t3,3bc05f2e + 3bc05f1a: 4501 li a0,0 + 3bc05f1c: d2c5f2e3 bgeu a1,a2,3bc05c40 + 3bc05f20: 0087971b slliw a4,a5,0x8 + 3bc05f24: 9815c78b lbuia a5,(a1),1,0 + 3bc05f28: 0086951b slliw a0,a3,0x8 + 3bc05f2c: 8fd9 or a5,a5,a4 + 3bc05f2e: 00b5571b srliw a4,a0,0xb + 3bc05f32: 026706bb mulw a3,a4,t1 + 3bc05f36: 8736 mv a4,a3 + 3bc05f38: fcd7e0e3 bltu a5,a3,3bc05ef8 + 3bc05f3c: 9d15 subw a0,a0,a3 + 3bc05f3e: 01000e37 lui t3,0x1000 + 3bc05f42: 048ed303 lhu t1,72(t4) + 3bc05f46: 86aa mv a3,a0 + 3bc05f48: 9f99 subw a5,a5,a4 + 3bc05f4a: 01c57c63 bgeu a0,t3,3bc05f62 + 3bc05f4e: 4501 li a0,0 + 3bc05f50: cec5f8e3 bgeu a1,a2,3bc05c40 + 3bc05f54: 0087971b slliw a4,a5,0x8 + 3bc05f58: 9815c78b lbuia a5,(a1),1,0 + 3bc05f5c: 0086951b slliw a0,a3,0x8 + 3bc05f60: 8fd9 or a5,a5,a4 + 3bc05f62: 00b5571b srliw a4,a0,0xb + 3bc05f66: 026706bb mulw a3,a4,t1 + 3bc05f6a: f8d7e7e3 bltu a5,a3,3bc05ef8 + 3bc05f6e: 9f95 subw a5,a5,a3 + 3bc05f70: 40d506bb subw a3,a0,a3 + 3bc05f74: b751 j 3bc05ef8 + 3bc05f76: 40e68ebb subw t4,a3,a4 + 3bc05f7a: 01000fb7 lui t6,0x1000 + 3bc05f7e: 9f99 subw a5,a5,a4 + 3bc05f80: 01035703 lhu a4,16(t1) + 3bc05f84: 01fefc63 bgeu t4,t6,3bc05f9c + 3bc05f88: f6c5f2e3 bgeu a1,a2,3bc05eec + 3bc05f8c: 00879e1b slliw t3,a5,0x8 + 3bc05f90: 9815c78b lbuia a5,(a1),1,0 + 3bc05f94: 008e9e9b slliw t4,t4,0x8 + 3bc05f98: 01c7e7b3 or a5,a5,t3 + 3bc05f9c: 00bed69b srliw a3,t4,0xb + 3bc05fa0: 02e6873b mulw a4,a3,a4 + 3bc05fa4: 00e7f963 bgeu a5,a4,3bc05fb6 + 3bc05fa8: 7c08368b extu a3,a6,31,0 + 3bc05fac: 06a1 addi a3,a3,8 + 3bc05fae: 02d3130b addsl t1,t1,a3,1 + 3bc05fb2: 4821 li a6,8 + 3bc05fb4: bb61 j 3bc05d4c + 3bc05fb6: 9f99 subw a5,a5,a4 + 3bc05fb8: 20030313 addi t1,t1,512 + 3bc05fbc: 40ee873b subw a4,t4,a4 + 3bc05fc0: 4841 li a6,16 + 3bc05fc2: 10000693 li a3,256 + 3bc05fc6: b361 j 3bc05d4e + 3bc05fc8: 877e mv a4,t6 + 3bc05fca: b3c1 j 3bc05d8a + 3bc05fcc: 8772 mv a4,t3 + 3bc05fce: b525 j 3bc05df6 + 3bc05fd0: 386d addiw a6,a6,-5 + 3bc05fd2: 01000e37 lui t3,0x1000 + 3bc05fd6: 01c77b63 bgeu a4,t3,3bc05fec + 3bc05fda: f0c5f9e3 bgeu a1,a2,3bc05eec + 3bc05fde: 9815c68b lbuia a3,(a1),1,0 + 3bc05fe2: 0087979b slliw a5,a5,0x8 + 3bc05fe6: 0087171b slliw a4,a4,0x8 + 3bc05fea: 8fd5 or a5,a5,a3 + 3bc05fec: 0017531b srliw t1,a4,0x1 + 3bc05ff0: 406786bb subw a3,a5,t1 + 3bc05ff4: 01f6d69b srliw a3,a3,0x1f + 3bc05ff8: 36fd addiw a3,a3,-1 + 3bc05ffa: 0066f6b3 and a3,a3,t1 + 3bc05ffe: 387d addiw a6,a6,-1 + 3bc06000: 0003071b sext.w a4,t1 + 3bc06004: 9f95 subw a5,a5,a3 + 3bc06006: fc0818e3 bnez a6,3bc05fd6 + 3bc0600a: 4811 li a6,4 + 3bc0600c: b515 j 3bc05e30 + 3bc0600e: 41e7073b subw a4,a4,t5 + 3bc06012: 41e787bb subw a5,a5,t5 + 3bc06016: 00df86bb addw a3,t6,a3 + 3bc0601a: bd81 j 3bc05e6a + +000000003bc0601c : + 3bc0601c: 11400793 li a5,276 + 3bc06020: 02053423 sd zero,40(a0) # 1000028 <__BSS_SIZE__+0xffa418> + 3bc06024: 06052223 sw zero,100(a0) + 3bc06028: 04053023 sd zero,64(a0) + 3bc0602c: cd7c sw a5,92(a0) + 3bc0602e: 8082 ret + +000000003bc06030 : + 3bc06030: 7175 addi sp,sp,-144 + 3bc06032: e122 sd s0,128(sp) + 3bc06034: f8ca sd s2,112(sp) + 3bc06036: f4ce sd s3,104(sp) + 3bc06038: f0d2 sd s4,96(sp) + 3bc0603a: f86a sd s10,48(sp) + 3bc0603c: f46e sd s11,40(sp) + 3bc0603e: e506 sd ra,136(sp) + 3bc06040: fca6 sd s1,120(sp) + 3bc06042: ecd6 sd s5,88(sp) + 3bc06044: e8da sd s6,80(sp) + 3bc06046: e4de sd s7,72(sp) + 3bc06048: e0e2 sd s8,64(sp) + 3bc0604a: fc66 sd s9,56(sp) + 3bc0604c: 0006bd83 ld s11,0(a3) + 3bc06050: 0006b023 sd zero,0(a3) + 3bc06054: 0007a023 sw zero,0(a5) # 1000000 <__BSS_SIZE__+0xffa3f0> + 3bc06058: e43a sd a4,8(sp) + 3bc0605a: 4d78 lw a4,92(a0) + 3bc0605c: 89be mv s3,a5 + 3bc0605e: 11200793 li a5,274 + 3bc06062: 8932 mv s2,a2 + 3bc06064: 842a mv s0,a0 + 3bc06066: 8a2e mv s4,a1 + 3bc06068: 8d36 mv s10,a3 + 3bc0606a: 4611 li a2,4 + 3bc0606c: 04e7e263 bltu a5,a4,3bc060b0 + 3bc06070: 85d2 mv a1,s4 + 3bc06072: 8522 mv a0,s0 + 3bc06074: ec4fe0ef jal ra,3bc04738 + 3bc06078: 4b4d li s6,19 + 3bc0607a: 06840a93 addi s5,s0,104 # 1068 <__BSS_SIZE__-0x4ba8> + 3bc0607e: 4c7c lw a5,92(s0) + 3bc06080: 11200713 li a4,274 + 3bc06084: 0ce79663 bne a5,a4,3bc06150 + 3bc06088: 5c5c lw a5,60(s0) + 3bc0608a: eb9d bnez a5,3bc060c0 + 3bc0608c: 4785 li a5,1 + 3bc0608e: a8a1 j 3bc060e6 + 3bc06090: 0017859b addiw a1,a5,1 + 3bc06094: d06c sw a1,100(s0) + 3bc06096: 9819458b lbuia a1,(s2),1,0 + 3bc0609a: 7c07b78b extu a5,a5,31,0 + 3bc0609e: 97a2 add a5,a5,s0 + 3bc060a0: 06b78423 sb a1,104(a5) + 3bc060a4: 000d3783 ld a5,0(s10) + 3bc060a8: 1dfd addi s11,s11,-1 + 3bc060aa: 0785 addi a5,a5,1 + 3bc060ac: 00fd3023 sd a5,0(s10) + 3bc060b0: 507c lw a5,100(s0) + 3bc060b2: 020d8863 beqz s11,3bc060e2 + 3bc060b6: fcf67de3 bgeu a2,a5,3bc06090 + 3bc060ba: 06844603 lbu a2,104(s0) + 3bc060be: ca05 beqz a2,3bc060ee + 3bc060c0: 4485 li s1,1 + 3bc060c2: 60aa ld ra,136(sp) + 3bc060c4: 640a ld s0,128(sp) + 3bc060c6: 7946 ld s2,112(sp) + 3bc060c8: 79a6 ld s3,104(sp) + 3bc060ca: 7a06 ld s4,96(sp) + 3bc060cc: 6ae6 ld s5,88(sp) + 3bc060ce: 6b46 ld s6,80(sp) + 3bc060d0: 6ba6 ld s7,72(sp) + 3bc060d2: 6c06 ld s8,64(sp) + 3bc060d4: 7ce2 ld s9,56(sp) + 3bc060d6: 7d42 ld s10,48(sp) + 3bc060d8: 7da2 ld s11,40(sp) + 3bc060da: 8526 mv a0,s1 + 3bc060dc: 74e6 ld s1,120(sp) + 3bc060de: 6149 addi sp,sp,144 + 3bc060e0: 8082 ret + 3bc060e2: ffe1 bnez a5,3bc060ba + 3bc060e4: 478d li a5,3 + 3bc060e6: 00f9a023 sw a5,0(s3) + 3bc060ea: 4481 li s1,0 + 3bc060ec: bfd9 j 3bc060c2 + 3bc060ee: 4611 li a2,4 + 3bc060f0: fef67ae3 bgeu a2,a5,3bc060e4 + 3bc060f4: 06942783 lw a5,105(s0) + 3bc060f8: 06042223 sw zero,100(s0) + 3bc060fc: 9007978b revw a5,a5 + 3bc06100: dc5c sw a5,60(s0) + 3bc06102: 57fd li a5,-1 + 3bc06104: dc1c sw a5,56(s0) + 3bc06106: 11300793 li a5,275 + 3bc0610a: 02f70c63 beq a4,a5,3bc06142 + 3bc0610e: 00044783 lbu a5,0(s0) + 3bc06112: 00144703 lbu a4,1(s0) + 3bc06116: 6410 ld a2,8(s0) + 3bc06118: 40000593 li a1,1024 + 3bc0611c: 9f3d addw a4,a4,a5 + 3bc0611e: 30000793 li a5,768 + 3bc06122: 00e797bb sllw a5,a5,a4 + 3bc06126: 7c07879b addiw a5,a5,1984 + 3bc0612a: 7c07b78b extu a5,a5,31,0 + 3bc0612e: 4701 li a4,0 + 3bc06130: 00f76c63 bltu a4,a5,3bc06148 + 3bc06134: 4785 li a5,1 + 3bc06136: 1782 slli a5,a5,0x20 + 3bc06138: 0785 addi a5,a5,1 + 3bc0613a: e43c sd a5,72(s0) + 3bc0613c: e83c sd a5,80(s0) + 3bc0613e: 04042c23 sw zero,88(s0) + 3bc06142: 04042e23 sw zero,92(s0) + 3bc06146: b72d j 3bc06070 + 3bc06148: 22e6558b srh a1,a2,a4,1 + 3bc0614c: 0705 addi a4,a4,1 + 3bc0614e: b7cd j 3bc06130 + 3bc06150: 7418 ld a4,40(s0) + 3bc06152: 01476b63 bltu a4,s4,3bc06168 + 3bc06156: 12079f63 bnez a5,3bc06294 + 3bc0615a: 5c5c lw a5,60(s0) + 3bc0615c: 14079363 bnez a5,3bc062a2 + 3bc06160: 4791 li a5,4 + 3bc06162: b751 j 3bc060e6 + 3bc06164: 4789 li a5,2 + 3bc06166: b741 j 3bc060e6 + 3bc06168: 4c81 li s9,0 + 3bc0616a: 06442b83 lw s7,100(s0) + 3bc0616e: 0c0b9263 bnez s7,3bc06232 + 3bc06172: 01bb7463 bgeu s6,s11,3bc0617a + 3bc06176: 040c8263 beqz s9,3bc061ba + 3bc0617a: 866e mv a2,s11 + 3bc0617c: 85ca mv a1,s2 + 3bc0617e: 8522 mv a0,s0 + 3bc06180: 9b5ff0ef jal ra,3bc05b34 + 3bc06184: 0005049b sext.w s1,a0 + 3bc06188: e095 bnez s1,3bc061ac + 3bc0618a: 866e mv a2,s11 + 3bc0618c: 85ca mv a1,s2 + 3bc0618e: 06840513 addi a0,s0,104 + 3bc06192: 8dbfa0ef jal ra,3bc00a6c + 3bc06196: 000d3783 ld a5,0(s10) + 3bc0619a: 07b42223 sw s11,100(s0) + 3bc0619e: 9dbe add s11,s11,a5 + 3bc061a0: 01bd3023 sd s11,0(s10) + 3bc061a4: 478d li a5,3 + 3bc061a6: 00f9a023 sw a5,0(s3) + 3bc061aa: bf21 j 3bc060c2 + 3bc061ac: 000c8563 beqz s9,3bc061b6 + 3bc061b0: 4789 li a5,2 + 3bc061b2: 0ef49463 bne s1,a5,3bc0629a + 3bc061b6: 864a mv a2,s2 + 3bc061b8: a021 j 3bc061c0 + 3bc061ba: fecd8613 addi a2,s11,-20 + 3bc061be: 964a add a2,a2,s2 + 3bc061c0: 03243823 sd s2,48(s0) + 3bc061c4: 85d2 mv a1,s4 + 3bc061c6: 8522 mv a0,s0 + 3bc061c8: de2fe0ef jal ra,3bc047aa + 3bc061cc: ee051ae3 bnez a0,3bc060c0 + 3bc061d0: 7818 ld a4,48(s0) + 3bc061d2: 000d3783 ld a5,0(s10) + 3bc061d6: 41270933 sub s2,a4,s2 + 3bc061da: 97ca add a5,a5,s2 + 3bc061dc: 00fd3023 sd a5,0(s10) + 3bc061e0: 412d8db3 sub s11,s11,s2 + 3bc061e4: 893a mv s2,a4 + 3bc061e6: bd61 j 3bc0607e + 3bc061e8: 8109478b lrbu a5,s2,a6,0 + 3bc061ec: 0106578b srb a5,a2,a6,0 + 3bc061f0: 0805 addi a6,a6,1 + 3bc061f2: 0008079b sext.w a5,a6 + 3bc061f6: e83e sd a5,16(sp) + 3bc061f8: 01780c3b addw s8,a6,s7 + 3bc061fc: 018b6463 bltu s6,s8,3bc06204 + 3bc06200: ffb814e3 bne a6,s11,3bc061e8 + 3bc06204: 07842223 sw s8,100(s0) + 3bc06208: 018b7463 bgeu s6,s8,3bc06210 + 3bc0620c: 020c8f63 beqz s9,3bc0624a + 3bc06210: 7c0c360b extu a2,s8,31,0 + 3bc06214: 85d6 mv a1,s5 + 3bc06216: 8522 mv a0,s0 + 3bc06218: ec42 sd a6,24(sp) + 3bc0621a: 91bff0ef jal ra,3bc05b34 + 3bc0621e: 0005049b sext.w s1,a0 + 3bc06222: 6862 ld a6,24(sp) + 3bc06224: ec91 bnez s1,3bc06240 + 3bc06226: 000d3783 ld a5,0(s10) + 3bc0622a: 983e add a6,a6,a5 + 3bc0622c: 010d3023 sd a6,0(s10) + 3bc06230: bf95 j 3bc061a4 + 3bc06232: 7c0bb60b extu a2,s7,31,0 + 3bc06236: 06860613 addi a2,a2,104 + 3bc0623a: 4801 li a6,0 + 3bc0623c: 9622 add a2,a2,s0 + 3bc0623e: bf55 j 3bc061f2 + 3bc06240: 000c8563 beqz s9,3bc0624a + 3bc06244: 4789 li a5,2 + 3bc06246: 04f49a63 bne s1,a5,3bc0629a + 3bc0624a: 03543823 sd s5,48(s0) + 3bc0624e: 8656 mv a2,s5 + 3bc06250: 85d2 mv a1,s4 + 3bc06252: 8522 mv a0,s0 + 3bc06254: d56fe0ef jal ra,3bc047aa + 3bc06258: e60514e3 bnez a0,3bc060c0 + 3bc0625c: 781c ld a5,48(s0) + 3bc0625e: 415787bb subw a5,a5,s5 + 3bc06262: 02fc6763 bltu s8,a5,3bc06290 + 3bc06266: 66c2 ld a3,16(sp) + 3bc06268: 40fc073b subw a4,s8,a5 + 3bc0626c: 02e6e263 bltu a3,a4,3bc06290 + 3bc06270: 000d3703 ld a4,0(s10) + 3bc06274: 417787bb subw a5,a5,s7 + 3bc06278: 7c07b78b extu a5,a5,31,0 + 3bc0627c: 973e add a4,a4,a5 + 3bc0627e: 00ed3023 sd a4,0(s10) + 3bc06282: 40fd8db3 sub s11,s11,a5 + 3bc06286: 00f90733 add a4,s2,a5 + 3bc0628a: 06042223 sw zero,100(s0) + 3bc0628e: bf99 j 3bc061e4 + 3bc06290: 44ad li s1,11 + 3bc06292: bd05 j 3bc060c2 + 3bc06294: 67a2 ld a5,8(sp) + 3bc06296: ec0787e3 beqz a5,3bc06164 + 3bc0629a: 4789 li a5,2 + 3bc0629c: 00f9a023 sw a5,0(s3) + 3bc062a0: b505 j 3bc060c0 + 3bc062a2: 67a2 ld a5,8(sp) + 3bc062a4: ec0780e3 beqz a5,3bc06164 + 3bc062a8: 4c85 li s9,1 + 3bc062aa: b5c1 j 3bc0616a + +000000003bc062ac : + 3bc062ac: 1141 addi sp,sp,-16 + 3bc062ae: e022 sd s0,0(sp) + 3bc062b0: 842a mv s0,a0 + 3bc062b2: 659c ld a5,8(a1) + 3bc062b4: 852e mv a0,a1 + 3bc062b6: 640c ld a1,8(s0) + 3bc062b8: e406 sd ra,8(sp) + 3bc062ba: 9782 jalr a5 + 3bc062bc: 60a2 ld ra,8(sp) + 3bc062be: 00043423 sd zero,8(s0) + 3bc062c2: 6402 ld s0,0(sp) + 3bc062c4: 0141 addi sp,sp,16 + 3bc062c6: 8082 ret + +000000003bc062c8 : + 3bc062c8: 1101 addi sp,sp,-32 + 3bc062ca: 6518 ld a4,8(a0) + 3bc062cc: e426 sd s1,8(sp) + 3bc062ce: 9db1 addw a1,a1,a2 + 3bc062d0: 30000493 li s1,768 + 3bc062d4: e822 sd s0,16(sp) + 3bc062d6: 00b494bb sllw s1,s1,a1 + 3bc062da: ec06 sd ra,24(sp) + 3bc062dc: e04a sd s2,0(sp) + 3bc062de: 842a mv s0,a0 + 3bc062e0: 7c04849b addiw s1,s1,1984 + 3bc062e4: c719 beqz a4,3bc062f2 + 3bc062e6: 5138 lw a4,96(a0) + 3bc062e8: 0004879b sext.w a5,s1 + 3bc062ec: 4501 li a0,0 + 3bc062ee: 02f70a63 beq a4,a5,3bc06322 + 3bc062f2: 85b6 mv a1,a3 + 3bc062f4: 8522 mv a0,s0 + 3bc062f6: 8936 mv s2,a3 + 3bc062f8: fb5ff0ef jal ra,3bc062ac + 3bc062fc: 00093783 ld a5,0(s2) + 3bc06300: 02049713 slli a4,s1,0x20 + 3bc06304: 01f75593 srli a1,a4,0x1f + 3bc06308: 854a mv a0,s2 + 3bc0630a: 9782 jalr a5 + 3bc0630c: 87aa mv a5,a0 + 3bc0630e: e408 sd a0,8(s0) + 3bc06310: 4509 li a0,2 + 3bc06312: cb81 beqz a5,3bc06322 + 3bc06314: 6505 lui a0,0x1 + 3bc06316: d0050513 addi a0,a0,-768 # d00 <__BSS_SIZE__-0x4f10> + 3bc0631a: 97aa add a5,a5,a0 + 3bc0631c: e81c sd a5,16(s0) + 3bc0631e: d024 sw s1,96(s0) + 3bc06320: 4501 li a0,0 + 3bc06322: 60e2 ld ra,24(sp) + 3bc06324: 6442 ld s0,16(sp) + 3bc06326: 64a2 ld s1,8(sp) + 3bc06328: 6902 ld s2,0(sp) + 3bc0632a: 6105 addi sp,sp,32 + 3bc0632c: 8082 ret + +000000003bc0632e : + 3bc0632e: 4791 li a5,4 + 3bc06330: 00c7e463 bltu a5,a2,3bc06338 + 3bc06334: 4511 li a0,4 + 3bc06336: 8082 ret + 3bc06338: 0015a703 lw a4,1(a1) + 3bc0633c: 6685 lui a3,0x1 + 3bc0633e: 87ba mv a5,a4 + 3bc06340: 00d77363 bgeu a4,a3,3bc06346 + 3bc06344: 6785 lui a5,0x1 + 3bc06346: c15c sw a5,4(a0) + 3bc06348: 0005c783 lbu a5,0(a1) + 3bc0634c: 0e000713 li a4,224 + 3bc06350: fef762e3 bltu a4,a5,3bc06334 + 3bc06354: 4725 li a4,9 + 3bc06356: 02e7f6bb remuw a3,a5,a4 + 3bc0635a: 02e7d7bb divuw a5,a5,a4 + 3bc0635e: 4715 li a4,5 + 3bc06360: 00d50023 sb a3,0(a0) + 3bc06364: 02e7d6bb divuw a3,a5,a4 + 3bc06368: 02e7f7bb remuw a5,a5,a4 + 3bc0636c: 00d50123 sb a3,2(a0) + 3bc06370: 00f500a3 sb a5,1(a0) + 3bc06374: 4501 li a0,0 + 3bc06376: 8082 ret + +000000003bc06378 : + 3bc06378: 7179 addi sp,sp,-48 + 3bc0637a: f022 sd s0,32(sp) + 3bc0637c: 842a mv s0,a0 + 3bc0637e: 0828 addi a0,sp,24 + 3bc06380: f406 sd ra,40(sp) + 3bc06382: e436 sd a3,8(sp) + 3bc06384: fabff0ef jal ra,3bc0632e + 3bc06388: ed01 bnez a0,3bc063a0 + 3bc0638a: 66a2 ld a3,8(sp) + 3bc0638c: 01914603 lbu a2,25(sp) + 3bc06390: 01814583 lbu a1,24(sp) + 3bc06394: 8522 mv a0,s0 + 3bc06396: f33ff0ef jal ra,3bc062c8 + 3bc0639a: e119 bnez a0,3bc063a0 + 3bc0639c: 67e2 ld a5,24(sp) + 3bc0639e: e01c sd a5,0(s0) + 3bc063a0: 70a2 ld ra,40(sp) + 3bc063a2: 7402 ld s0,32(sp) + 3bc063a4: 6145 addi sp,sp,48 + 3bc063a6: 8082 ret + +000000003bc063a8 : + 3bc063a8: 7155 addi sp,sp,-208 + 3bc063aa: e1a2 sd s0,192(sp) + 3bc063ac: f152 sd s4,160(sp) + 3bc063ae: ed56 sd s5,152(sp) + 3bc063b0: e586 sd ra,200(sp) + 3bc063b2: fd26 sd s1,184(sp) + 3bc063b4: f94a sd s2,176(sp) + 3bc063b6: f54e sd s3,168(sp) + 3bc063b8: e95a sd s6,144(sp) + 3bc063ba: e55e sd s7,136(sp) + 3bc063bc: e162 sd s8,128(sp) + 3bc063be: 0005ba03 ld s4,0(a1) + 3bc063c2: 0006ba83 ld s5,0(a3) # 1000 <__BSS_SIZE__-0x4c10> + 3bc063c6: 0006b023 sd zero,0(a3) + 3bc063ca: 0005b023 sd zero,0(a1) + 3bc063ce: 833a mv t1,a4 + 3bc063d0: 0008a023 sw zero,0(a7) + 3bc063d4: 4711 li a4,4 + 3bc063d6: 4419 li s0,6 + 3bc063d8: 07577063 bgeu a4,s5,3bc06438 + 3bc063dc: 84b6 mv s1,a3 + 3bc063de: 66ce ld a3,208(sp) + 3bc063e0: 8bb2 mv s7,a2 + 3bc063e2: 8c2e mv s8,a1 + 3bc063e4: 89aa mv s3,a0 + 3bc063e6: 863e mv a2,a5 + 3bc063e8: 859a mv a1,t1 + 3bc063ea: 850a mv a0,sp + 3bc063ec: 8946 mv s2,a7 + 3bc063ee: 8b42 mv s6,a6 + 3bc063f0: ec02 sd zero,24(sp) + 3bc063f2: e402 sd zero,8(sp) + 3bc063f4: f85ff0ef jal ra,3bc06378 + 3bc063f8: 842a mv s0,a0 + 3bc063fa: ed1d bnez a0,3bc06438 + 3bc063fc: 850a mv a0,sp + 3bc063fe: ec4e sd s3,24(sp) + 3bc06400: f052 sd s4,32(sp) + 3bc06402: c1bff0ef jal ra,3bc0601c + 3bc06406: 87ca mv a5,s2 + 3bc06408: 0154b023 sd s5,0(s1) + 3bc0640c: 875a mv a4,s6 + 3bc0640e: 86a6 mv a3,s1 + 3bc06410: 865e mv a2,s7 + 3bc06412: 85d2 mv a1,s4 + 3bc06414: 850a mv a0,sp + 3bc06416: c1bff0ef jal ra,3bc06030 + 3bc0641a: 77a2 ld a5,40(sp) + 3bc0641c: 842a mv s0,a0 + 3bc0641e: 00fc3023 sd a5,0(s8) + 3bc06422: e519 bnez a0,3bc06430 + 3bc06424: 00092703 lw a4,0(s2) + 3bc06428: 478d li a5,3 + 3bc0642a: 00f71363 bne a4,a5,3bc06430 + 3bc0642e: 4419 li s0,6 + 3bc06430: 65ce ld a1,208(sp) + 3bc06432: 850a mv a0,sp + 3bc06434: e79ff0ef jal ra,3bc062ac + 3bc06438: 60ae ld ra,200(sp) + 3bc0643a: 8522 mv a0,s0 + 3bc0643c: 640e ld s0,192(sp) + 3bc0643e: 74ea ld s1,184(sp) + 3bc06440: 794a ld s2,176(sp) + 3bc06442: 79aa ld s3,168(sp) + 3bc06444: 7a0a ld s4,160(sp) + 3bc06446: 6aea ld s5,152(sp) + 3bc06448: 6b4a ld s6,144(sp) + 3bc0644a: 6baa ld s7,136(sp) + 3bc0644c: 6c0a ld s8,128(sp) + 3bc0644e: 6169 addi sp,sp,208 + 3bc06450: 8082 ret + +000000003bc06452 : + 3bc06452: 00154783 lbu a5,1(a0) + 3bc06456: 00254703 lbu a4,2(a0) + 3bc0645a: 00054683 lbu a3,0(a0) + 3bc0645e: 00354503 lbu a0,3(a0) + 3bc06462: 0107171b slliw a4,a4,0x10 + 3bc06466: 0087979b slliw a5,a5,0x8 + 3bc0646a: 9fb9 addw a5,a5,a4 + 3bc0646c: 9fb5 addw a5,a5,a3 + 3bc0646e: 0185151b slliw a0,a0,0x18 + 3bc06472: 9d3d addw a0,a0,a5 + 3bc06474: 8082 ret + +000000003bc06476 : + 3bc06476: 40e58733 sub a4,a1,a4 + 3bc0647a: 26050763 beqz a0,3bc066e8 + 3bc0647e: 00c50e33 add t3,a0,a2 + 3bc06482: 7119 addi sp,sp,-128 + 3bc06484: ff0e0793 addi a5,t3,-16 # fffff0 <__BSS_SIZE__+0xffa3e0> + 3bc06488: ecce sd s3,88(sp) + 3bc0648a: 00d58eb3 add t4,a1,a3 + 3bc0648e: fc86 sd ra,120(sp) + 3bc06490: f8a2 sd s0,112(sp) + 3bc06492: f4a6 sd s1,104(sp) + 3bc06494: f0ca sd s2,96(sp) + 3bc06496: e8d2 sd s4,80(sp) + 3bc06498: e4d6 sd s5,72(sp) + 3bc0649a: e0da sd s6,64(sp) + 3bc0649c: fc5e sd s7,56(sp) + 3bc0649e: f862 sd s8,48(sp) + 3bc064a0: f466 sd s9,40(sp) + 3bc064a2: f06a sd s10,32(sp) + 3bc064a4: ec6e sd s11,24(sp) + 3bc064a6: e43e sd a5,8(sp) + 3bc064a8: 832a mv t1,a0 + 3bc064aa: fe0e8993 addi s3,t4,-32 + 3bc064ae: ea95 bnez a3,3bc064e2 + 3bc064b0: 4785 li a5,1 + 3bc064b2: 557d li a0,-1 + 3bc064b4: 00f61863 bne a2,a5,3bc064c4 + 3bc064b8: 00034503 lbu a0,0(t1) + 3bc064bc: 00a03533 snez a0,a0 + 3bc064c0: 0005250b ext a0,a0,0,0 + 3bc064c4: 70e6 ld ra,120(sp) + 3bc064c6: 7446 ld s0,112(sp) + 3bc064c8: 74a6 ld s1,104(sp) + 3bc064ca: 7906 ld s2,96(sp) + 3bc064cc: 69e6 ld s3,88(sp) + 3bc064ce: 6a46 ld s4,80(sp) + 3bc064d0: 6aa6 ld s5,72(sp) + 3bc064d2: 6b06 ld s6,64(sp) + 3bc064d4: 7be2 ld s7,56(sp) + 3bc064d6: 7c42 ld s8,48(sp) + 3bc064d8: 7ca2 ld s9,40(sp) + 3bc064da: 7d02 ld s10,32(sp) + 3bc064dc: 6de2 ld s11,24(sp) + 3bc064de: 6109 addi sp,sp,128 + 3bc064e0: 8082 ret + 3bc064e2: 557d li a0,-1 + 3bc064e4: d265 beqz a2,3bc064c4 + 3bc064e6: 879a mv a5,t1 + 3bc064e8: 882e mv a6,a1 + 3bc064ea: 4fbd li t6,15 + 3bc064ec: 429d li t0,7 + 3bc064ee: ff4e8393 addi t2,t4,-12 + 3bc064f2: 4a41 li s4,16 + 3bc064f4: ff9e8f13 addi t5,t4,-7 + 3bc064f8: ffbe8a93 addi s5,t4,-5 + 3bc064fc: 00005b17 auipc s6,0x5 + 3bc06500: c9cb0b13 addi s6,s6,-868 # 3bc0b198 + 3bc06504: 00005b97 auipc s7,0x5 + 3bc06508: c74b8b93 addi s7,s7,-908 # 3bc0b178 + 3bc0650c: ffce0c13 addi s8,t3,-4 + 3bc06510: 0ff00493 li s1,255 + 3bc06514: ff8e0c93 addi s9,t3,-8 + 3bc06518: ff1e0913 addi s2,t3,-15 + 3bc0651c: 5d7d li s10,-1 + 3bc0651e: 9817c50b lbuia a0,(a5),1,0 + 3bc06522: 00455693 srli a3,a0,0x4 + 3bc06526: 0045561b srliw a2,a0,0x4 + 3bc0652a: 07f68063 beq a3,t6,3bc0658a + 3bc0652e: 0109b8b3 sltu a7,s3,a6 + 3bc06532: 0018c893 xori a7,a7,1 + 3bc06536: 0ff8f893 andi a7,a7,255 + 3bc0653a: 00c80433 add s0,a6,a2 + 3bc0653e: 00c786b3 add a3,a5,a2 + 3bc06542: 06088d63 beqz a7,3bc065bc + 3bc06546: 68a2 ld a7,8(sp) + 3bc06548: 0717fa63 bgeu a5,a7,3bc065bc + 3bc0654c: 6390 ld a2,0(a5) + 3bc0654e: 893d andi a0,a0,15 + 3bc06550: 00c83023 sd a2,0(a6) + 3bc06554: 679c ld a5,8(a5) + 3bc06556: 862a mv a2,a0 + 3bc06558: 00f83423 sd a5,8(a6) + 3bc0655c: 87b6 mv a5,a3 + 3bc0655e: b827c88b lhuia a7,(a5),2,0 + 3bc06562: 411406b3 sub a3,s0,a7 + 3bc06566: 0bf50763 beq a0,t6,3bc06614 + 3bc0656a: 0d12f563 bgeu t0,a7,3bc06634 + 3bc0656e: 0ce6e363 bltu a3,a4,3bc06634 + 3bc06572: 6290 ld a2,0(a3) + 3bc06574: 0511 addi a0,a0,4 + 3bc06576: 00a40833 add a6,s0,a0 + 3bc0657a: e010 sd a2,0(s0) + 3bc0657c: 6690 ld a2,8(a3) + 3bc0657e: e410 sd a2,8(s0) + 3bc06580: 0106d683 lhu a3,16(a3) + 3bc06584: 00d41823 sh a3,16(s0) + 3bc06588: bf59 j 3bc0651e + 3bc0658a: 0527fd63 bgeu a5,s2,3bc065e4 + 3bc0658e: 4601 li a2,0 + 3bc06590: 9817c88b lbuia a7,(a5),1,0 + 3bc06594: 00c8863b addw a2,a7,a2 + 3bc06598: 0527f963 bgeu a5,s2,3bc065ea + 3bc0659c: fe988ae3 beq a7,s1,3bc06590 + 3bc065a0: 4681 li a3,0 + 3bc065a2: 7c06360b extu a2,a2,31,0 + 3bc065a6: 063d addi a2,a2,15 + 3bc065a8: 13a68a63 beq a3,s10,3bc066dc + 3bc065ac: 010606b3 add a3,a2,a6 + 3bc065b0: 1306e663 bltu a3,a6,3bc066dc + 3bc065b4: 00f606b3 add a3,a2,a5 + 3bc065b8: 12f6e263 bltu a3,a5,3bc066dc + 3bc065bc: 00c80433 add s0,a6,a2 + 3bc065c0: 00c788b3 add a7,a5,a2 + 3bc065c4: 0083e463 bltu t2,s0,3bc065cc + 3bc065c8: 031cf363 bgeu s9,a7,3bc065ee + 3bc065cc: 111e1863 bne t3,a7,3bc066dc + 3bc065d0: 108ee663 bltu t4,s0,3bc066dc + 3bc065d4: 84ae mv s1,a1 + 3bc065d6: 8542 mv a0,a6 + 3bc065d8: 85be mv a1,a5 + 3bc065da: cf2fa0ef jal ra,3bc00acc + 3bc065de: 4094053b subw a0,s0,s1 + 3bc065e2: b5cd j 3bc064c4 + 3bc065e4: 56fd li a3,-1 + 3bc065e6: 4601 li a2,0 + 3bc065e8: bf6d j 3bc065a2 + 3bc065ea: 56f9 li a3,-2 + 3bc065ec: bf5d j 3bc065a2 + 3bc065ee: 4681 li a3,0 + 3bc065f0: 60d7c60b lrd a2,a5,a3,0 + 3bc065f4: 60d8560b srd a2,a6,a3,0 + 3bc065f8: 06a1 addi a3,a3,8 + 3bc065fa: 00d80633 add a2,a6,a3 + 3bc065fe: fe8669e3 bltu a2,s0,3bc065f0 + 3bc06602: 87c6 mv a5,a7 + 3bc06604: b827c88b lhuia a7,(a5),2,0 + 3bc06608: 00f57613 andi a2,a0,15 + 3bc0660c: 411406b3 sub a3,s0,a7 + 3bc06610: 03f61263 bne a2,t6,3bc06634 + 3bc06614: 4601 li a2,0 + 3bc06616: 9817c80b lbuia a6,(a5),1,0 + 3bc0661a: 00c8063b addw a2,a6,a2 + 3bc0661e: 0b87ff63 bgeu a5,s8,3bc066dc + 3bc06622: fe980ae3 beq a6,s1,3bc06616 + 3bc06626: 7c06360b extu a2,a2,31,0 + 3bc0662a: 063d addi a2,a2,15 + 3bc0662c: 00860533 add a0,a2,s0 + 3bc06630: 0a856663 bltu a0,s0,3bc066dc + 3bc06634: 0611 addi a2,a2,4 + 3bc06636: 0ae6e363 bltu a3,a4,3bc066dc + 3bc0663a: 00c40833 add a6,s0,a2 + 3bc0663e: 0712e463 bltu t0,a7,3bc066a6 + 3bc06642: 00042023 sw zero,0(s0) + 3bc06646: 0006c503 lbu a0,0(a3) + 3bc0664a: 00a40023 sb a0,0(s0) + 3bc0664e: 0016c503 lbu a0,1(a3) + 3bc06652: 00a400a3 sb a0,1(s0) + 3bc06656: 0026c503 lbu a0,2(a3) + 3bc0665a: 00a40123 sb a0,2(s0) + 3bc0665e: 0036c503 lbu a0,3(a3) + 3bc06662: 00a401a3 sb a0,3(s0) + 3bc06666: c51b450b lrwu a0,s6,a7,2 + 3bc0666a: 00a68db3 add s11,a3,a0 + 3bc0666e: 40a6c68b lrw a3,a3,a0,0 + 3bc06672: c054 sw a3,4(s0) + 3bc06674: 451bc68b lrw a3,s7,a7,2 + 3bc06678: 40dd86b3 sub a3,s11,a3 + 3bc0667c: 0503f363 bgeu t2,a6,3bc066c2 + 3bc06680: 050aee63 bltu s5,a6,3bc066dc + 3bc06684: 0421 addi s0,s0,8 + 3bc06686: 01e47e63 bgeu s0,t5,3bc066a2 + 3bc0668a: 8536 mv a0,a3 + 3bc0668c: 8622 mv a2,s0 + 3bc0668e: 7885488b ldia a7,(a0),8,0 + 3bc06692: 7886588b sdia a7,(a2),8,0 + 3bc06696: ffe66ce3 bltu a2,t5,3bc0668e + 3bc0669a: 408f0433 sub s0,t5,s0 + 3bc0669e: 96a2 add a3,a3,s0 + 3bc066a0: 847a mv s0,t5 + 3bc066a2: 4601 li a2,0 + 3bc066a4: a811 j 3bc066b8 + 3bc066a6: 7886c50b ldia a0,(a3),8,0 + 3bc066aa: e008 sd a0,0(s0) + 3bc066ac: bfc1 j 3bc0667c + 3bc066ae: 80c6c50b lrbu a0,a3,a2,0 + 3bc066b2: 00c4550b srb a0,s0,a2,0 + 3bc066b6: 0605 addi a2,a2,1 + 3bc066b8: 00c40533 add a0,s0,a2 + 3bc066bc: ff0569e3 bltu a0,a6,3bc066ae + 3bc066c0: bdb9 j 3bc0651e + 3bc066c2: 6288 ld a0,0(a3) + 3bc066c4: e408 sd a0,8(s0) + 3bc066c6: e4ca7ce3 bgeu s4,a2,3bc0651e + 3bc066ca: 0441 addi s0,s0,16 + 3bc066cc: 06a1 addi a3,a3,8 + 3bc066ce: 7886c60b ldia a2,(a3),8,0 + 3bc066d2: 7884560b sdia a2,(s0),8,0 + 3bc066d6: ff046ce3 bltu s0,a6,3bc066ce + 3bc066da: b591 j 3bc0651e + 3bc066dc: 40678533 sub a0,a5,t1 + 3bc066e0: fff54513 not a0,a0 + 3bc066e4: 2501 sext.w a0,a0 + 3bc066e6: bbf9 j 3bc064c4 + 3bc066e8: 557d li a0,-1 + 3bc066ea: 8082 ret + +000000003bc066ec : + 3bc066ec: 06853803 ld a6,104(a0) + 3bc066f0: 7179 addi sp,sp,-48 + 3bc066f2: f022 sd s0,32(sp) + 3bc066f4: f406 sd ra,40(sp) + 3bc066f6: ec26 sd s1,24(sp) + 3bc066f8: e84a sd s2,16(sp) + 3bc066fa: e44e sd s3,8(sp) + 3bc066fc: 842a mv s0,a0 + 3bc066fe: 00081363 bnez a6,3bc06704 + 3bc06702: f12c sd a1,96(a0) + 3bc06704: 7028 ld a0,96(s0) + 3bc06706: 010507b3 add a5,a0,a6 + 3bc0670a: 00f59663 bne a1,a5,3bc06716 + 3bc0670e: 00c807b3 add a5,a6,a2 + 3bc06712: f43c sd a5,104(s0) + 3bc06714: a811 j 3bc06728 + 3bc06716: 40d588b3 sub a7,a1,a3 + 3bc0671a: 98b2 add a7,a7,a2 + 3bc0671c: 67c1 lui a5,0x10 + 3bc0671e: 00f8ec63 bltu a7,a5,3bc06736 + 3bc06722: f034 sd a3,96(s0) + 3bc06724: 07143423 sd a7,104(s0) + 3bc06728: 70a2 ld ra,40(sp) + 3bc0672a: 7402 ld s0,32(sp) + 3bc0672c: 64e2 ld s1,24(sp) + 3bc0672e: 6942 ld s2,16(sp) + 3bc06730: 69a2 ld s3,8(sp) + 3bc06732: 6145 addi sp,sp,48 + 3bc06734: 8082 ret + 3bc06736: 6c34 ld a3,88(s0) + 3bc06738: 84b2 mv s1,a2 + 3bc0673a: 89ae mv s3,a1 + 3bc0673c: cb29 beqz a4,3bc0678e + 3bc0673e: 00d51563 bne a0,a3,3bc06748 + 3bc06742: 00c807b3 add a5,a6,a2 + 3bc06746: b7f1 j 3bc06712 + 3bc06748: 07043903 ld s2,112(s0) + 3bc0674c: 604c ld a1,128(s0) + 3bc0674e: 7c38 ld a4,120(s0) + 3bc06750: 40d90933 sub s2,s2,a3 + 3bc06754: 40b805b3 sub a1,a6,a1 + 3bc06758: 4601 li a2,0 + 3bc0675a: 00e7ea63 bltu a5,a4,3bc0676e + 3bc0675e: 40e78633 sub a2,a5,a4 + 3bc06762: 00c937b3 sltu a5,s2,a2 + 3bc06766: 0017c793 xori a5,a5,1 + 3bc0676a: 40f9160b mveqz a2,s2,a5 + 3bc0676e: 40c907b3 sub a5,s2,a2 + 3bc06772: 8d91 sub a1,a1,a2 + 3bc06774: 95aa add a1,a1,a0 + 3bc06776: 00f68533 add a0,a3,a5 + 3bc0677a: af2fa0ef jal ra,3bc00a6c + 3bc0677e: 6050 ld a2,128(s0) + 3bc06780: 6c3c ld a5,88(s0) + 3bc06782: 94b2 add s1,s1,a2 + 3bc06784: 9926 add s2,s2,s1 + 3bc06786: f03c sd a5,96(s0) + 3bc06788: 07243423 sd s2,104(s0) + 3bc0678c: bf71 j 3bc06728 + 3bc0678e: 02d51e63 bne a0,a3,3bc067ca + 3bc06792: 7c14 ld a3,56(s0) + 3bc06794: 00c80733 add a4,a6,a2 + 3bc06798: 00e6fe63 bgeu a3,a4,3bc067b4 + 3bc0679c: 40c78933 sub s2,a5,a2 + 3bc067a0: 40f607b3 sub a5,a2,a5 + 3bc067a4: 97c2 add a5,a5,a6 + 3bc067a6: 864a mv a2,s2 + 3bc067a8: 00f505b3 add a1,a0,a5 + 3bc067ac: ac0fa0ef jal ra,3bc00a6c + 3bc067b0: 07243423 sd s2,104(s0) + 3bc067b4: 6c28 ld a0,88(s0) + 3bc067b6: 743c ld a5,104(s0) + 3bc067b8: 8626 mv a2,s1 + 3bc067ba: 85ce mv a1,s3 + 3bc067bc: 953e add a0,a0,a5 + 3bc067be: aaefa0ef jal ra,3bc00a6c + 3bc067c2: 7430 ld a2,104(s0) + 3bc067c4: 94b2 add s1,s1,a2 + 3bc067c6: f424 sd s1,104(s0) + 3bc067c8: b785 j 3bc06728 + 3bc067ca: 8f91 sub a5,a5,a2 + 3bc067cc: 0107b733 sltu a4,a5,a6 + 3bc067d0: 00174713 xori a4,a4,1 + 3bc067d4: 42e8178b mvnez a5,a6,a4 + 3bc067d8: 40f805b3 sub a1,a6,a5 + 3bc067dc: 863e mv a2,a5 + 3bc067de: 95aa add a1,a1,a0 + 3bc067e0: 8536 mv a0,a3 + 3bc067e2: 893e mv s2,a5 + 3bc067e4: a88fa0ef jal ra,3bc00a6c + 3bc067e8: 6c28 ld a0,88(s0) + 3bc067ea: 8626 mv a2,s1 + 3bc067ec: 85ce mv a1,s3 + 3bc067ee: 954a add a0,a0,s2 + 3bc067f0: a7cfa0ef jal ra,3bc00a6c + 3bc067f4: 6c3c ld a5,88(s0) + 3bc067f6: 94ca add s1,s1,s2 + 3bc067f8: f03c sd a5,96(s0) + 3bc067fa: b7f1 j 3bc067c6 + +000000003bc067fc : + 3bc067fc: 26050463 beqz a0,3bc06a64 + 3bc06800: 7159 addi sp,sp,-112 + 3bc06802: eca6 sd s1,88(sp) + 3bc06804: 00c50833 add a6,a0,a2 + 3bc06808: 00d588b3 add a7,a1,a3 + 3bc0680c: f486 sd ra,104(sp) + 3bc0680e: f0a2 sd s0,96(sp) + 3bc06810: e8ca sd s2,80(sp) + 3bc06812: e4ce sd s3,72(sp) + 3bc06814: e0d2 sd s4,64(sp) + 3bc06816: fc56 sd s5,56(sp) + 3bc06818: f85a sd s6,48(sp) + 3bc0681a: f45e sd s7,40(sp) + 3bc0681c: f062 sd s8,32(sp) + 3bc0681e: ec66 sd s9,24(sp) + 3bc06820: e86a sd s10,16(sp) + 3bc06822: e46e sd s11,8(sp) + 3bc06824: ff080393 addi t2,a6,-16 + 3bc06828: fe088493 addi s1,a7,-32 + 3bc0682c: ea9d bnez a3,3bc06862 + 3bc0682e: 4705 li a4,1 + 3bc06830: 57fd li a5,-1 + 3bc06832: 00e61863 bne a2,a4,3bc06842 + 3bc06836: 00054783 lbu a5,0(a0) + 3bc0683a: 00f037b3 snez a5,a5 + 3bc0683e: 0007a78b ext a5,a5,0,0 + 3bc06842: 70a6 ld ra,104(sp) + 3bc06844: 7406 ld s0,96(sp) + 3bc06846: 64e6 ld s1,88(sp) + 3bc06848: 6946 ld s2,80(sp) + 3bc0684a: 69a6 ld s3,72(sp) + 3bc0684c: 6a06 ld s4,64(sp) + 3bc0684e: 7ae2 ld s5,56(sp) + 3bc06850: 7b42 ld s6,48(sp) + 3bc06852: 7ba2 ld s7,40(sp) + 3bc06854: 7c02 ld s8,32(sp) + 3bc06856: 6ce2 ld s9,24(sp) + 3bc06858: 6d42 ld s10,16(sp) + 3bc0685a: 6da2 ld s11,8(sp) + 3bc0685c: 853e mv a0,a5 + 3bc0685e: 6165 addi sp,sp,112 + 3bc06860: 8082 ret + 3bc06862: 57fd li a5,-1 + 3bc06864: de79 beqz a2,3bc06842 + 3bc06866: 87aa mv a5,a0 + 3bc06868: 872e mv a4,a1 + 3bc0686a: 4e3d li t3,15 + 3bc0686c: 4e9d li t4,7 + 3bc0686e: ff488f13 addi t5,a7,-12 + 3bc06872: 4941 li s2,16 + 3bc06874: ff988313 addi t1,a7,-7 + 3bc06878: ffb88993 addi s3,a7,-5 + 3bc0687c: 00005a17 auipc s4,0x5 + 3bc06880: 91ca0a13 addi s4,s4,-1764 # 3bc0b198 + 3bc06884: 00005a97 auipc s5,0x5 + 3bc06888: 8f4a8a93 addi s5,s5,-1804 # 3bc0b178 + 3bc0688c: ffc80b13 addi s6,a6,-4 + 3bc06890: 0ff00f93 li t6,255 + 3bc06894: ff880b93 addi s7,a6,-8 + 3bc06898: ff180293 addi t0,a6,-15 + 3bc0689c: 5c7d li s8,-1 + 3bc0689e: 9817c68b lbuia a3,(a5),1,0 + 3bc068a2: 0046d413 srli s0,a3,0x4 + 3bc068a6: 0046d61b srliw a2,a3,0x4 + 3bc068aa: 05c40d63 beq s0,t3,3bc06904 + 3bc068ae: 00e4bd33 sltu s10,s1,a4 + 3bc068b2: 001d4d13 xori s10,s10,1 + 3bc068b6: 0ffd7d13 andi s10,s10,255 + 3bc068ba: 00c70433 add s0,a4,a2 + 3bc068be: 00c78cb3 add s9,a5,a2 + 3bc068c2: 060d0a63 beqz s10,3bc06936 + 3bc068c6: 0677f863 bgeu a5,t2,3bc06936 + 3bc068ca: 6390 ld a2,0(a5) + 3bc068cc: e310 sd a2,0(a4) + 3bc068ce: 679c ld a5,8(a5) + 3bc068d0: e71c sd a5,8(a4) + 3bc068d2: 87e6 mv a5,s9 + 3bc068d4: b827cc8b lhuia s9,(a5),2,0 + 3bc068d8: 00f6f713 andi a4,a3,15 + 3bc068dc: 86ba mv a3,a4 + 3bc068de: 41940633 sub a2,s0,s9 + 3bc068e2: 0bc70563 beq a4,t3,3bc0698c + 3bc068e6: 0d9ef363 bgeu t4,s9,3bc069ac + 3bc068ea: 0cb66163 bltu a2,a1,3bc069ac + 3bc068ee: 6214 ld a3,0(a2) + 3bc068f0: 0711 addi a4,a4,4 + 3bc068f2: 9722 add a4,a4,s0 + 3bc068f4: e014 sd a3,0(s0) + 3bc068f6: 6614 ld a3,8(a2) + 3bc068f8: e414 sd a3,8(s0) + 3bc068fa: 01065683 lhu a3,16(a2) + 3bc068fe: 00d41823 sh a3,16(s0) + 3bc06902: bf71 j 3bc0689e + 3bc06904: 0457fd63 bgeu a5,t0,3bc0695e + 3bc06908: 4601 li a2,0 + 3bc0690a: 9817cc8b lbuia s9,(a5),1,0 + 3bc0690e: 00cc863b addw a2,s9,a2 + 3bc06912: 0457f963 bgeu a5,t0,3bc06964 + 3bc06916: fffc8ae3 beq s9,t6,3bc0690a + 3bc0691a: 4401 li s0,0 + 3bc0691c: 7c06360b extu a2,a2,31,0 + 3bc06920: 063d addi a2,a2,15 + 3bc06922: 13840c63 beq s0,s8,3bc06a5a + 3bc06926: 00e60433 add s0,a2,a4 + 3bc0692a: 12e46863 bltu s0,a4,3bc06a5a + 3bc0692e: 00f60433 add s0,a2,a5 + 3bc06932: 12f46463 bltu s0,a5,3bc06a5a + 3bc06936: 00c70433 add s0,a4,a2 + 3bc0693a: 00c78cb3 add s9,a5,a2 + 3bc0693e: 008f6463 bltu t5,s0,3bc06946 + 3bc06942: 039bf363 bgeu s7,s9,3bc06968 + 3bc06946: 11981a63 bne a6,s9,3bc06a5a + 3bc0694a: 1088e863 bltu a7,s0,3bc06a5a + 3bc0694e: 84ae mv s1,a1 + 3bc06950: 853a mv a0,a4 + 3bc06952: 85be mv a1,a5 + 3bc06954: 978fa0ef jal ra,3bc00acc + 3bc06958: 409407bb subw a5,s0,s1 + 3bc0695c: b5dd j 3bc06842 + 3bc0695e: 547d li s0,-1 + 3bc06960: 4601 li a2,0 + 3bc06962: bf6d j 3bc0691c + 3bc06964: 5479 li s0,-2 + 3bc06966: bf5d j 3bc0691c + 3bc06968: 4601 li a2,0 + 3bc0696a: 60c7cd0b lrd s10,a5,a2,0 + 3bc0696e: 60c75d0b srd s10,a4,a2,0 + 3bc06972: 0621 addi a2,a2,8 + 3bc06974: 00c70d33 add s10,a4,a2 + 3bc06978: fe8d69e3 bltu s10,s0,3bc0696a + 3bc0697c: 87e6 mv a5,s9 + 3bc0697e: b827cc8b lhuia s9,(a5),2,0 + 3bc06982: 8abd andi a3,a3,15 + 3bc06984: 41940633 sub a2,s0,s9 + 3bc06988: 03c69263 bne a3,t3,3bc069ac + 3bc0698c: 4681 li a3,0 + 3bc0698e: 9817cd0b lbuia s10,(a5),1,0 + 3bc06992: 00dd06bb addw a3,s10,a3 + 3bc06996: 0d67f263 bgeu a5,s6,3bc06a5a + 3bc0699a: fffd0ae3 beq s10,t6,3bc0698e + 3bc0699e: 7c06b68b extu a3,a3,31,0 + 3bc069a2: 06bd addi a3,a3,15 + 3bc069a4: 00868733 add a4,a3,s0 + 3bc069a8: 0a876963 bltu a4,s0,3bc06a5a + 3bc069ac: 0691 addi a3,a3,4 + 3bc069ae: 0ab66663 bltu a2,a1,3bc06a5a + 3bc069b2: 00d40733 add a4,s0,a3 + 3bc069b6: 079ee463 bltu t4,s9,3bc06a1e + 3bc069ba: 00042023 sw zero,0(s0) + 3bc069be: 00064d03 lbu s10,0(a2) + 3bc069c2: 01a40023 sb s10,0(s0) + 3bc069c6: 00164d03 lbu s10,1(a2) + 3bc069ca: 01a400a3 sb s10,1(s0) + 3bc069ce: 00264d03 lbu s10,2(a2) + 3bc069d2: 01a40123 sb s10,2(s0) + 3bc069d6: 00364d03 lbu s10,3(a2) + 3bc069da: 01a401a3 sb s10,3(s0) + 3bc069de: c59a4d0b lrwu s10,s4,s9,2 + 3bc069e2: 01a60db3 add s11,a2,s10 + 3bc069e6: 41a6460b lrw a2,a2,s10,0 + 3bc069ea: c050 sw a2,4(s0) + 3bc069ec: 459ac60b lrw a2,s5,s9,2 + 3bc069f0: 40cd8633 sub a2,s11,a2 + 3bc069f4: 04ef7463 bgeu t5,a4,3bc06a3c + 3bc069f8: 06e9e163 bltu s3,a4,3bc06a5a + 3bc069fc: 0421 addi s0,s0,8 + 3bc069fe: 00647e63 bgeu s0,t1,3bc06a1a + 3bc06a02: 8cb2 mv s9,a2 + 3bc06a04: 86a2 mv a3,s0 + 3bc06a06: 788ccd0b ldia s10,(s9),8,0 + 3bc06a0a: 7886dd0b sdia s10,(a3),8,0 + 3bc06a0e: fe66ece3 bltu a3,t1,3bc06a06 + 3bc06a12: 40830433 sub s0,t1,s0 + 3bc06a16: 9622 add a2,a2,s0 + 3bc06a18: 841a mv s0,t1 + 3bc06a1a: 4681 li a3,0 + 3bc06a1c: a819 j 3bc06a32 + 3bc06a1e: 78864c8b ldia s9,(a2),8,0 + 3bc06a22: 01943023 sd s9,0(s0) + 3bc06a26: b7f9 j 3bc069f4 + 3bc06a28: 80d64c8b lrbu s9,a2,a3,0 + 3bc06a2c: 00d45c8b srb s9,s0,a3,0 + 3bc06a30: 0685 addi a3,a3,1 + 3bc06a32: 00d40cb3 add s9,s0,a3 + 3bc06a36: feece9e3 bltu s9,a4,3bc06a28 + 3bc06a3a: b595 j 3bc0689e + 3bc06a3c: 00063c83 ld s9,0(a2) + 3bc06a40: 01943423 sd s9,8(s0) + 3bc06a44: e4d97de3 bgeu s2,a3,3bc0689e + 3bc06a48: 0441 addi s0,s0,16 + 3bc06a4a: 0621 addi a2,a2,8 + 3bc06a4c: 7886468b ldia a3,(a2),8,0 + 3bc06a50: 7884568b sdia a3,(s0),8,0 + 3bc06a54: fee46ce3 bltu s0,a4,3bc06a4c + 3bc06a58: b599 j 3bc0689e + 3bc06a5a: 8f89 sub a5,a5,a0 + 3bc06a5c: fff7c793 not a5,a5 + 3bc06a60: 2781 sext.w a5,a5 + 3bc06a62: b3c5 j 3bc06842 + 3bc06a64: 57fd li a5,-1 + 3bc06a66: 853e mv a0,a5 + 3bc06a68: 8082 ret + +000000003bc06a6a : + 3bc06a6a: 77c1 lui a5,0xffff0 + 3bc06a6c: 7119 addi sp,sp,-128 + 3bc06a6e: 97ae add a5,a5,a1 + 3bc06a70: fc86 sd ra,120(sp) + 3bc06a72: f8a2 sd s0,112(sp) + 3bc06a74: f4a6 sd s1,104(sp) + 3bc06a76: f0ca sd s2,96(sp) + 3bc06a78: ecce sd s3,88(sp) + 3bc06a7a: e8d2 sd s4,80(sp) + 3bc06a7c: e4d6 sd s5,72(sp) + 3bc06a7e: e0da sd s6,64(sp) + 3bc06a80: fc5e sd s7,56(sp) + 3bc06a82: f862 sd s8,48(sp) + 3bc06a84: f466 sd s9,40(sp) + 3bc06a86: f06a sd s10,32(sp) + 3bc06a88: ec6e sd s11,24(sp) + 3bc06a8a: e43e sd a5,8(sp) + 3bc06a8c: 24050263 beqz a0,3bc06cd0 + 3bc06a90: 00c50333 add t1,a0,a2 + 3bc06a94: 00d58e33 add t3,a1,a3 + 3bc06a98: 88aa mv a7,a0 + 3bc06a9a: ff030913 addi s2,t1,-16 + 3bc06a9e: fe0e0993 addi s3,t3,-32 + 3bc06aa2: ea95 bnez a3,3bc06ad6 + 3bc06aa4: 4785 li a5,1 + 3bc06aa6: 557d li a0,-1 + 3bc06aa8: 00f61863 bne a2,a5,3bc06ab8 + 3bc06aac: 0008c503 lbu a0,0(a7) + 3bc06ab0: 00a03533 snez a0,a0 + 3bc06ab4: 0005250b ext a0,a0,0,0 + 3bc06ab8: 70e6 ld ra,120(sp) + 3bc06aba: 7446 ld s0,112(sp) + 3bc06abc: 74a6 ld s1,104(sp) + 3bc06abe: 7906 ld s2,96(sp) + 3bc06ac0: 69e6 ld s3,88(sp) + 3bc06ac2: 6a46 ld s4,80(sp) + 3bc06ac4: 6aa6 ld s5,72(sp) + 3bc06ac6: 6b06 ld s6,64(sp) + 3bc06ac8: 7be2 ld s7,56(sp) + 3bc06aca: 7c42 ld s8,48(sp) + 3bc06acc: 7ca2 ld s9,40(sp) + 3bc06ace: 7d02 ld s10,32(sp) + 3bc06ad0: 6de2 ld s11,24(sp) + 3bc06ad2: 6109 addi sp,sp,128 + 3bc06ad4: 8082 ret + 3bc06ad6: 557d li a0,-1 + 3bc06ad8: d265 beqz a2,3bc06ab8 + 3bc06ada: 87c6 mv a5,a7 + 3bc06adc: 882e mv a6,a1 + 3bc06ade: 4f3d li t5,15 + 3bc06ae0: 4f9d li t6,7 + 3bc06ae2: ff4e0293 addi t0,t3,-12 + 3bc06ae6: 4a41 li s4,16 + 3bc06ae8: ff9e0e93 addi t4,t3,-7 + 3bc06aec: ffbe0a93 addi s5,t3,-5 + 3bc06af0: 00004b17 auipc s6,0x4 + 3bc06af4: 6a8b0b13 addi s6,s6,1704 # 3bc0b198 + 3bc06af8: 00004b97 auipc s7,0x4 + 3bc06afc: 680b8b93 addi s7,s7,1664 # 3bc0b178 + 3bc06b00: ffc30c13 addi s8,t1,-4 + 3bc06b04: 0ff00393 li t2,255 + 3bc06b08: ff830c93 addi s9,t1,-8 + 3bc06b0c: ff130493 addi s1,t1,-15 + 3bc06b10: 5d7d li s10,-1 + 3bc06b12: 9817c68b lbuia a3,(a5),1,0 + 3bc06b16: 0046d713 srli a4,a3,0x4 + 3bc06b1a: 0046d61b srliw a2,a3,0x4 + 3bc06b1e: 05e70b63 beq a4,t5,3bc06b74 + 3bc06b22: 0109b533 sltu a0,s3,a6 + 3bc06b26: 00154513 xori a0,a0,1 + 3bc06b2a: 0ff57513 andi a0,a0,255 + 3bc06b2e: 00c80433 add s0,a6,a2 + 3bc06b32: 00c78733 add a4,a5,a2 + 3bc06b36: c53d beqz a0,3bc06ba4 + 3bc06b38: 0727f663 bgeu a5,s2,3bc06ba4 + 3bc06b3c: 6390 ld a2,0(a5) + 3bc06b3e: 8abd andi a3,a3,15 + 3bc06b40: 00c83023 sd a2,0(a6) + 3bc06b44: 679c ld a5,8(a5) + 3bc06b46: 00f83423 sd a5,8(a6) + 3bc06b4a: 87ba mv a5,a4 + 3bc06b4c: b827c60b lhuia a2,(a5),2,0 + 3bc06b50: 40c40733 sub a4,s0,a2 + 3bc06b54: 0be68363 beq a3,t5,3bc06bfa + 3bc06b58: 0ccff163 bgeu t6,a2,3bc06c1a + 3bc06b5c: 6310 ld a2,0(a4) + 3bc06b5e: 0691 addi a3,a3,4 + 3bc06b60: 00d40833 add a6,s0,a3 + 3bc06b64: e010 sd a2,0(s0) + 3bc06b66: 6710 ld a2,8(a4) + 3bc06b68: e410 sd a2,8(s0) + 3bc06b6a: 01075703 lhu a4,16(a4) # 1000010 <__BSS_SIZE__+0xffa400> + 3bc06b6e: 00e41823 sh a4,16(s0) + 3bc06b72: b745 j 3bc06b12 + 3bc06b74: 0497fc63 bgeu a5,s1,3bc06bcc + 3bc06b78: 4601 li a2,0 + 3bc06b7a: 9817c50b lbuia a0,(a5),1,0 + 3bc06b7e: 9e29 addw a2,a2,a0 + 3bc06b80: 0497f963 bgeu a5,s1,3bc06bd2 + 3bc06b84: fe750be3 beq a0,t2,3bc06b7a + 3bc06b88: 4701 li a4,0 + 3bc06b8a: 7c06360b extu a2,a2,31,0 + 3bc06b8e: 063d addi a2,a2,15 + 3bc06b90: 13a70a63 beq a4,s10,3bc06cc4 + 3bc06b94: 01060733 add a4,a2,a6 + 3bc06b98: 13076663 bltu a4,a6,3bc06cc4 + 3bc06b9c: 00f60733 add a4,a2,a5 + 3bc06ba0: 12f76263 bltu a4,a5,3bc06cc4 + 3bc06ba4: 00c80433 add s0,a6,a2 + 3bc06ba8: 00c78533 add a0,a5,a2 + 3bc06bac: 0082e463 bltu t0,s0,3bc06bb4 + 3bc06bb0: 02acf363 bgeu s9,a0,3bc06bd6 + 3bc06bb4: 10a31863 bne t1,a0,3bc06cc4 + 3bc06bb8: 108e6663 bltu t3,s0,3bc06cc4 + 3bc06bbc: 84ae mv s1,a1 + 3bc06bbe: 8542 mv a0,a6 + 3bc06bc0: 85be mv a1,a5 + 3bc06bc2: f0bf90ef jal ra,3bc00acc + 3bc06bc6: 4094053b subw a0,s0,s1 + 3bc06bca: b5fd j 3bc06ab8 + 3bc06bcc: 577d li a4,-1 + 3bc06bce: 4601 li a2,0 + 3bc06bd0: bf6d j 3bc06b8a + 3bc06bd2: 5779 li a4,-2 + 3bc06bd4: bf5d j 3bc06b8a + 3bc06bd6: 4701 li a4,0 + 3bc06bd8: 60e7c60b lrd a2,a5,a4,0 + 3bc06bdc: 60e8560b srd a2,a6,a4,0 + 3bc06be0: 0721 addi a4,a4,8 + 3bc06be2: 00e80633 add a2,a6,a4 + 3bc06be6: fe8669e3 bltu a2,s0,3bc06bd8 + 3bc06bea: 87aa mv a5,a0 + 3bc06bec: b827c60b lhuia a2,(a5),2,0 + 3bc06bf0: 8abd andi a3,a3,15 + 3bc06bf2: 40c40733 sub a4,s0,a2 + 3bc06bf6: 03e69263 bne a3,t5,3bc06c1a + 3bc06bfa: 4681 li a3,0 + 3bc06bfc: 9817c80b lbuia a6,(a5),1,0 + 3bc06c00: 00d806bb addw a3,a6,a3 + 3bc06c04: 0d87f063 bgeu a5,s8,3bc06cc4 + 3bc06c08: fe780ae3 beq a6,t2,3bc06bfc + 3bc06c0c: 7c06b68b extu a3,a3,31,0 + 3bc06c10: 06bd addi a3,a3,15 + 3bc06c12: 00868533 add a0,a3,s0 + 3bc06c16: 0a856763 bltu a0,s0,3bc06cc4 + 3bc06c1a: 6522 ld a0,8(sp) + 3bc06c1c: 0691 addi a3,a3,4 + 3bc06c1e: 0aa76363 bltu a4,a0,3bc06cc4 + 3bc06c22: 00d40833 add a6,s0,a3 + 3bc06c26: 06cfe463 bltu t6,a2,3bc06c8e + 3bc06c2a: 00042023 sw zero,0(s0) + 3bc06c2e: 00074503 lbu a0,0(a4) + 3bc06c32: 00a40023 sb a0,0(s0) + 3bc06c36: 00174503 lbu a0,1(a4) + 3bc06c3a: 00a400a3 sb a0,1(s0) + 3bc06c3e: 00274503 lbu a0,2(a4) + 3bc06c42: 00a40123 sb a0,2(s0) + 3bc06c46: 00374503 lbu a0,3(a4) + 3bc06c4a: 00a401a3 sb a0,3(s0) + 3bc06c4e: c4cb450b lrwu a0,s6,a2,2 + 3bc06c52: 00a70db3 add s11,a4,a0 + 3bc06c56: 40a7470b lrw a4,a4,a0,0 + 3bc06c5a: c058 sw a4,4(s0) + 3bc06c5c: 44cbc70b lrw a4,s7,a2,2 + 3bc06c60: 40ed8733 sub a4,s11,a4 + 3bc06c64: 0502f363 bgeu t0,a6,3bc06caa + 3bc06c68: 050aee63 bltu s5,a6,3bc06cc4 + 3bc06c6c: 0421 addi s0,s0,8 + 3bc06c6e: 01d47e63 bgeu s0,t4,3bc06c8a + 3bc06c72: 863a mv a2,a4 + 3bc06c74: 86a2 mv a3,s0 + 3bc06c76: 7886450b ldia a0,(a2),8,0 + 3bc06c7a: 7886d50b sdia a0,(a3),8,0 + 3bc06c7e: ffd6ece3 bltu a3,t4,3bc06c76 + 3bc06c82: 408e8433 sub s0,t4,s0 + 3bc06c86: 9722 add a4,a4,s0 + 3bc06c88: 8476 mv s0,t4 + 3bc06c8a: 4681 li a3,0 + 3bc06c8c: a811 j 3bc06ca0 + 3bc06c8e: 7887460b ldia a2,(a4),8,0 + 3bc06c92: e010 sd a2,0(s0) + 3bc06c94: bfc1 j 3bc06c64 + 3bc06c96: 80d7460b lrbu a2,a4,a3,0 + 3bc06c9a: 00d4560b srb a2,s0,a3,0 + 3bc06c9e: 0685 addi a3,a3,1 + 3bc06ca0: 00d40633 add a2,s0,a3 + 3bc06ca4: ff0669e3 bltu a2,a6,3bc06c96 + 3bc06ca8: b5ad j 3bc06b12 + 3bc06caa: 6310 ld a2,0(a4) + 3bc06cac: e410 sd a2,8(s0) + 3bc06cae: e6da72e3 bgeu s4,a3,3bc06b12 + 3bc06cb2: 0441 addi s0,s0,16 + 3bc06cb4: 0721 addi a4,a4,8 + 3bc06cb6: 7887468b ldia a3,(a4),8,0 + 3bc06cba: 7884568b sdia a3,(s0),8,0 + 3bc06cbe: ff046ce3 bltu s0,a6,3bc06cb6 + 3bc06cc2: bd81 j 3bc06b12 + 3bc06cc4: 41178533 sub a0,a5,a7 + 3bc06cc8: fff54513 not a0,a0 + 3bc06ccc: 2501 sext.w a0,a0 + 3bc06cce: b3ed j 3bc06ab8 + 3bc06cd0: 557d li a0,-1 + 3bc06cd2: b3dd j 3bc06ab8 + +000000003bc06cd4 : + 3bc06cd4: 30050963 beqz a0,3bc06fe6 + 3bc06cd8: 7135 addi sp,sp,-160 + 3bc06cda: e526 sd s1,136(sp) + 3bc06cdc: fcce sd s3,120(sp) + 3bc06cde: f0da sd s6,96(sp) + 3bc06ce0: ecde sd s7,88(sp) + 3bc06ce2: e8e2 sd s8,80(sp) + 3bc06ce4: e0ea sd s10,64(sp) + 3bc06ce6: ed06 sd ra,152(sp) + 3bc06ce8: e922 sd s0,144(sp) + 3bc06cea: e14a sd s2,128(sp) + 3bc06cec: f8d2 sd s4,112(sp) + 3bc06cee: f4d6 sd s5,104(sp) + 3bc06cf0: e4e6 sd s9,72(sp) + 3bc06cf2: fc6e sd s11,56(sp) + 3bc06cf4: 8b2a mv s6,a0 + 3bc06cf6: 8d2e mv s10,a1 + 3bc06cf8: 84ba mv s1,a4 + 3bc06cfa: 89be mv s3,a5 + 3bc06cfc: 00c50bb3 add s7,a0,a2 + 3bc06d00: 00d58c33 add s8,a1,a3 + 3bc06d04: c319 beqz a4,3bc06d0a + 3bc06d06: 00f704b3 add s1,a4,a5 + 3bc06d0a: ff0b8793 addi a5,s7,-16 + 3bc06d0e: e03e sd a5,0(sp) + 3bc06d10: fe0c0793 addi a5,s8,-32 + 3bc06d14: e43e sd a5,8(sp) + 3bc06d16: ea95 bnez a3,3bc06d4a + 3bc06d18: 4785 li a5,1 + 3bc06d1a: 557d li a0,-1 + 3bc06d1c: 00f61863 bne a2,a5,3bc06d2c + 3bc06d20: 000b4503 lbu a0,0(s6) + 3bc06d24: 00a03533 snez a0,a0 + 3bc06d28: 0005250b ext a0,a0,0,0 + 3bc06d2c: 60ea ld ra,152(sp) + 3bc06d2e: 644a ld s0,144(sp) + 3bc06d30: 64aa ld s1,136(sp) + 3bc06d32: 690a ld s2,128(sp) + 3bc06d34: 79e6 ld s3,120(sp) + 3bc06d36: 7a46 ld s4,112(sp) + 3bc06d38: 7aa6 ld s5,104(sp) + 3bc06d3a: 7b06 ld s6,96(sp) + 3bc06d3c: 6be6 ld s7,88(sp) + 3bc06d3e: 6c46 ld s8,80(sp) + 3bc06d40: 6ca6 ld s9,72(sp) + 3bc06d42: 6d06 ld s10,64(sp) + 3bc06d44: 7de2 ld s11,56(sp) + 3bc06d46: 610d addi sp,sp,160 + 3bc06d48: 8082 ret + 3bc06d4a: 557d li a0,-1 + 3bc06d4c: d265 beqz a2,3bc06d2c + 3bc06d4e: ffcb8793 addi a5,s7,-4 + 3bc06d52: e83e sd a5,16(sp) + 3bc06d54: ff8b8793 addi a5,s7,-8 + 3bc06d58: 845a mv s0,s6 + 3bc06d5a: 8cea mv s9,s10 + 3bc06d5c: ff4c0a13 addi s4,s8,-12 + 3bc06d60: ff9c0913 addi s2,s8,-7 + 3bc06d64: ffbc0a93 addi s5,s8,-5 + 3bc06d68: ec3e sd a5,24(sp) + 3bc06d6a: 9814468b lbuia a3,(s0),1,0 + 3bc06d6e: 4ebd li t4,15 + 3bc06d70: 0046d793 srli a5,a3,0x4 + 3bc06d74: 0046d61b srliw a2,a3,0x4 + 3bc06d78: 07d78363 beq a5,t4,3bc06dde + 3bc06d7c: 67a2 ld a5,8(sp) + 3bc06d7e: 00cc8db3 add s11,s9,a2 + 3bc06d82: 00c40533 add a0,s0,a2 + 3bc06d86: 0197b5b3 sltu a1,a5,s9 + 3bc06d8a: 0015c593 xori a1,a1,1 + 3bc06d8e: 0ff5f593 andi a1,a1,255 + 3bc06d92: c5c1 beqz a1,3bc06e1a + 3bc06d94: 6782 ld a5,0(sp) + 3bc06d96: 08f47263 bgeu s0,a5,3bc06e1a + 3bc06d9a: 6010 ld a2,0(s0) + 3bc06d9c: 8abd andi a3,a3,15 + 3bc06d9e: 00ccb023 sd a2,0(s9) + 3bc06da2: 6410 ld a2,8(s0) + 3bc06da4: 842a mv s0,a0 + 3bc06da6: 00ccb423 sd a2,8(s9) + 3bc06daa: b824458b lhuia a1,(s0),2,0 + 3bc06dae: 8636 mv a2,a3 + 3bc06db0: 40bd8533 sub a0,s11,a1 + 3bc06db4: 0dd68063 beq a3,t4,3bc06e74 + 3bc06db8: 471d li a4,7 + 3bc06dba: 0eb77063 bgeu a4,a1,3bc06e9a + 3bc06dbe: 0da56e63 bltu a0,s10,3bc06e9a + 3bc06dc2: 6118 ld a4,0(a0) + 3bc06dc4: 0691 addi a3,a3,4 + 3bc06dc6: 00dd8cb3 add s9,s11,a3 + 3bc06dca: 00edb023 sd a4,0(s11) + 3bc06dce: 6518 ld a4,8(a0) + 3bc06dd0: 00edb423 sd a4,8(s11) + 3bc06dd4: 01055703 lhu a4,16(a0) + 3bc06dd8: 00ed9823 sh a4,16(s11) + 3bc06ddc: b779 j 3bc06d6a + 3bc06dde: ff1b8793 addi a5,s7,-15 + 3bc06de2: 06f47063 bgeu s0,a5,3bc06e42 + 3bc06de6: 4601 li a2,0 + 3bc06de8: 0ff00513 li a0,255 + 3bc06dec: 98144e8b lbuia t4,(s0),1,0 + 3bc06df0: 00ce863b addw a2,t4,a2 + 3bc06df4: 04f47a63 bgeu s0,a5,3bc06e48 + 3bc06df8: feae8ae3 beq t4,a0,3bc06dec + 3bc06dfc: 4781 li a5,0 + 3bc06dfe: 7c06360b extu a2,a2,31,0 + 3bc06e02: 55fd li a1,-1 + 3bc06e04: 063d addi a2,a2,15 + 3bc06e06: 1cb78a63 beq a5,a1,3bc06fda + 3bc06e0a: 019607b3 add a5,a2,s9 + 3bc06e0e: 1d97e663 bltu a5,s9,3bc06fda + 3bc06e12: 008607b3 add a5,a2,s0 + 3bc06e16: 1c87e263 bltu a5,s0,3bc06fda + 3bc06e1a: 00cc8db3 add s11,s9,a2 + 3bc06e1e: 00c405b3 add a1,s0,a2 + 3bc06e22: 01ba6563 bltu s4,s11,3bc06e2c + 3bc06e26: 67e2 ld a5,24(sp) + 3bc06e28: 02b7f263 bgeu a5,a1,3bc06e4c + 3bc06e2c: 1abb9763 bne s7,a1,3bc06fda + 3bc06e30: 1bbc6563 bltu s8,s11,3bc06fda + 3bc06e34: 85a2 mv a1,s0 + 3bc06e36: 8566 mv a0,s9 + 3bc06e38: c95f90ef jal ra,3bc00acc + 3bc06e3c: 41ad853b subw a0,s11,s10 + 3bc06e40: b5f5 j 3bc06d2c + 3bc06e42: 57fd li a5,-1 + 3bc06e44: 4601 li a2,0 + 3bc06e46: bf65 j 3bc06dfe + 3bc06e48: 57f9 li a5,-2 + 3bc06e4a: bf55 j 3bc06dfe + 3bc06e4c: 4601 li a2,0 + 3bc06e4e: 60c4450b lrd a0,s0,a2,0 + 3bc06e52: 60ccd50b srd a0,s9,a2,0 + 3bc06e56: 0621 addi a2,a2,8 + 3bc06e58: 00cc8533 add a0,s9,a2 + 3bc06e5c: ffb569e3 bltu a0,s11,3bc06e4e + 3bc06e60: 842e mv s0,a1 + 3bc06e62: b824458b lhuia a1,(s0),2,0 + 3bc06e66: 00f6f613 andi a2,a3,15 + 3bc06e6a: 473d li a4,15 + 3bc06e6c: 40bd8533 sub a0,s11,a1 + 3bc06e70: 02e61563 bne a2,a4,3bc06e9a + 3bc06e74: 4601 li a2,0 + 3bc06e76: 0ff00693 li a3,255 + 3bc06e7a: 98144e8b lbuia t4,(s0),1,0 + 3bc06e7e: 67c2 ld a5,16(sp) + 3bc06e80: 00ce863b addw a2,t4,a2 + 3bc06e84: 14f47b63 bgeu s0,a5,3bc06fda + 3bc06e88: fede89e3 beq t4,a3,3bc06e7a + 3bc06e8c: 7c06360b extu a2,a2,31,0 + 3bc06e90: 063d addi a2,a2,15 + 3bc06e92: 01b60733 add a4,a2,s11 + 3bc06e96: 15b76263 bltu a4,s11,3bc06fda + 3bc06e9a: 6741 lui a4,0x10 + 3bc06e9c: 0611 addi a2,a2,4 + 3bc06e9e: 00e9f663 bgeu s3,a4,3bc06eaa + 3bc06ea2: 01350733 add a4,a0,s3 + 3bc06ea6: 13a76a63 bltu a4,s10,3bc06fda + 3bc06eaa: 00cd8cb3 add s9,s11,a2 + 3bc06eae: 07a57663 bgeu a0,s10,3bc06f1a + 3bc06eb2: 139ae463 bltu s5,s9,3bc06fda + 3bc06eb6: 40ad06b3 sub a3,s10,a0 + 3bc06eba: 40d485b3 sub a1,s1,a3 + 3bc06ebe: 00c6e663 bltu a3,a2,3bc06eca + 3bc06ec2: 856e mv a0,s11 + 3bc06ec4: c09f90ef jal ra,3bc00acc + 3bc06ec8: b54d j 3bc06d6a + 3bc06eca: 40d60eb3 sub t4,a2,a3 + 3bc06ece: 856e mv a0,s11 + 3bc06ed0: 8636 mv a2,a3 + 3bc06ed2: f476 sd t4,40(sp) + 3bc06ed4: f036 sd a3,32(sp) + 3bc06ed6: b97f90ef jal ra,3bc00a6c + 3bc06eda: 7682 ld a3,32(sp) + 3bc06edc: 7ea2 ld t4,40(sp) + 3bc06ede: 00dd8533 add a0,s11,a3 + 3bc06ee2: 41a507b3 sub a5,a0,s10 + 3bc06ee6: 03d7f563 bgeu a5,t4,3bc06f10 + 3bc06eea: 4781 li a5,0 + 3bc06eec: a031 j 3bc06ef8 + 3bc06eee: 80fd468b lrbu a3,s10,a5,0 + 3bc06ef2: 00f5568b srb a3,a0,a5,0 + 3bc06ef6: 0785 addi a5,a5,1 + 3bc06ef8: 00f506b3 add a3,a0,a5 + 3bc06efc: ff96e9e3 bltu a3,s9,3bc06eee + 3bc06f00: 00acb733 sltu a4,s9,a0 + 3bc06f04: 8676 mv a2,t4 + 3bc06f06: 42e0160b mvnez a2,zero,a4 + 3bc06f0a: 00c50cb3 add s9,a0,a2 + 3bc06f0e: bdb1 j 3bc06d6a + 3bc06f10: 8676 mv a2,t4 + 3bc06f12: 85ea mv a1,s10 + 3bc06f14: b59f90ef jal ra,3bc00a6c + 3bc06f18: bd89 j 3bc06d6a + 3bc06f1a: 469d li a3,7 + 3bc06f1c: 06b6ee63 bltu a3,a1,3bc06f98 + 3bc06f20: 000da023 sw zero,0(s11) + 3bc06f24: 00054683 lbu a3,0(a0) + 3bc06f28: 00004797 auipc a5,0x4 + 3bc06f2c: 27078793 addi a5,a5,624 # 3bc0b198 + 3bc06f30: c4b7ce8b lrwu t4,a5,a1,2 + 3bc06f34: 00dd8023 sb a3,0(s11) + 3bc06f38: 00154683 lbu a3,1(a0) + 3bc06f3c: 00004797 auipc a5,0x4 + 3bc06f40: 23c78793 addi a5,a5,572 # 3bc0b178 + 3bc06f44: 01d50f33 add t5,a0,t4 + 3bc06f48: 00dd80a3 sb a3,1(s11) + 3bc06f4c: 00254683 lbu a3,2(a0) + 3bc06f50: 00dd8123 sb a3,2(s11) + 3bc06f54: 00354683 lbu a3,3(a0) + 3bc06f58: 00dd81a3 sb a3,3(s11) + 3bc06f5c: 41d5468b lrw a3,a0,t4,0 + 3bc06f60: 00dda223 sw a3,4(s11) + 3bc06f64: 44b7c68b lrw a3,a5,a1,2 + 3bc06f68: 40df06b3 sub a3,t5,a3 + 3bc06f6c: 059a7663 bgeu s4,s9,3bc06fb8 + 3bc06f70: 079ae563 bltu s5,s9,3bc06fda + 3bc06f74: 008d8513 addi a0,s11,8 + 3bc06f78: 01257e63 bgeu a0,s2,3bc06f94 + 3bc06f7c: 8636 mv a2,a3 + 3bc06f7e: 87aa mv a5,a0 + 3bc06f80: 7886458b ldia a1,(a2),8,0 + 3bc06f84: 7887d58b sdia a1,(a5),8,0 + 3bc06f88: ff27ece3 bltu a5,s2,3bc06f80 + 3bc06f8c: 40a907b3 sub a5,s2,a0 + 3bc06f90: 96be add a3,a3,a5 + 3bc06f92: 854a mv a0,s2 + 3bc06f94: 4781 li a5,0 + 3bc06f96: a821 j 3bc06fae + 3bc06f98: 86aa mv a3,a0 + 3bc06f9a: 7886c58b ldia a1,(a3),8,0 + 3bc06f9e: 00bdb023 sd a1,0(s11) + 3bc06fa2: b7e9 j 3bc06f6c + 3bc06fa4: 80f6c60b lrbu a2,a3,a5,0 + 3bc06fa8: 00f5560b srb a2,a0,a5,0 + 3bc06fac: 0785 addi a5,a5,1 + 3bc06fae: 00f50633 add a2,a0,a5 + 3bc06fb2: ff9669e3 bltu a2,s9,3bc06fa4 + 3bc06fb6: bb55 j 3bc06d6a + 3bc06fb8: 628c ld a1,0(a3) + 3bc06fba: 00bdb423 sd a1,8(s11) + 3bc06fbe: 45c1 li a1,16 + 3bc06fc0: dac5f5e3 bgeu a1,a2,3bc06d6a + 3bc06fc4: 010d8513 addi a0,s11,16 + 3bc06fc8: 00868613 addi a2,a3,8 + 3bc06fcc: 7886478b ldia a5,(a2),8,0 + 3bc06fd0: 7885578b sdia a5,(a0),8,0 + 3bc06fd4: ff956ce3 bltu a0,s9,3bc06fcc + 3bc06fd8: bb49 j 3bc06d6a + 3bc06fda: 41640533 sub a0,s0,s6 + 3bc06fde: fff54513 not a0,a0 + 3bc06fe2: 2501 sext.w a0,a0 + 3bc06fe4: b3a1 j 3bc06d2c + 3bc06fe6: 557d li a0,-1 + 3bc06fe8: 8082 ret + +000000003bc06fea : + 3bc06fea: 883e mv a6,a5 + 3bc06fec: e399 bnez a5,3bc06ff2 + 3bc06fee: 80fff06f j 3bc067fc + 3bc06ff2: 00f708b3 add a7,a4,a5 + 3bc06ff6: 01159b63 bne a1,a7,3bc0700c + 3bc06ffa: 67c1 lui a5,0x10 + 3bc06ffc: 17f9 addi a5,a5,-2 + 3bc06ffe: 0107d463 bge a5,a6,3bc07006 + 3bc07002: a69ff06f j 3bc06a6a + 3bc07006: 8742 mv a4,a6 + 3bc07008: c6eff06f j 3bc06476 + 3bc0700c: cc9ff06f j 3bc06cd4 + +000000003bc07010 : + 3bc07010: fed53513 sltiu a0,a0,-19 + 3bc07014: 00154513 xori a0,a0,1 + 3bc07018: 2501 sext.w a0,a0 + 3bc0701a: 8082 ret + +000000003bc0701c : + 3bc0701c: e111 bnez a0,3bc07020 + 3bc0701e: 4511 li a0,4 + 3bc07020: ffc5069b addiw a3,a0,-4 + 3bc07024: 470d li a4,3 + 3bc07026: 5579 li a0,-2 + 3bc07028: 00d76863 bltu a4,a3,3bc07038 + 3bc0702c: 00004717 auipc a4,0x4 + 3bc07030: 12c70713 addi a4,a4,300 # 3bc0b158 + 3bc07034: 76d7450b lurd a0,a4,a3,3 + 3bc07038: 8082 ret + +000000003bc0703a : + 3bc0703a: 715d addi sp,sp,-80 + 3bc0703c: f84a sd s2,48(sp) + 3bc0703e: e486 sd ra,72(sp) + 3bc07040: e0a2 sd s0,64(sp) + 3bc07042: fc26 sd s1,56(sp) + 3bc07044: f44e sd s3,40(sp) + 3bc07046: f052 sd s4,32(sp) + 3bc07048: ec56 sd s5,24(sp) + 3bc0704a: e85a sd s6,16(sp) + 3bc0704c: e45e sd s7,8(sp) + 3bc0704e: e062 sd s8,0(sp) + 3bc07050: 4799 li a5,6 + 3bc07052: 5951 li s2,-12 + 3bc07054: 04c7f663 bgeu a5,a2,3bc070a0 + 3bc07058: 84ae mv s1,a1 + 3bc0705a: 8932 mv s2,a2 + 3bc0705c: 4581 li a1,0 + 3bc0705e: 02000613 li a2,32 + 3bc07062: 842a mv s0,a0 + 3bc07064: 9aff90ef jal ra,3bc00a12 + 3bc07068: 8526 mv a0,s1 + 3bc0706a: be8ff0ef jal ra,3bc06452 + 3bc0706e: 2501 sext.w a0,a0 + 3bc07070: 184d37b7 lui a5,0x184d3 + 3bc07074: ff057713 andi a4,a0,-16 + 3bc07078: a5078793 addi a5,a5,-1456 # 184d2a50 + 3bc0707c: 02f71f63 bne a4,a5,3bc070ba + 3bc07080: 4785 li a5,1 + 3bc07082: c45c sw a5,12(s0) + 3bc07084: 0e840793 addi a5,s0,232 + 3bc07088: 00f49963 bne s1,a5,3bc0709a + 3bc0708c: 47a1 li a5,8 + 3bc0708e: e83c sd a5,80(s0) + 3bc07090: 05243423 sd s2,72(s0) + 3bc07094: 47b5 li a5,13 + 3bc07096: d05c sw a5,36(s0) + 3bc07098: a021 j 3bc070a0 + 3bc0709a: 47b1 li a5,12 + 3bc0709c: d05c sw a5,36(s0) + 3bc0709e: 4911 li s2,4 + 3bc070a0: 60a6 ld ra,72(sp) + 3bc070a2: 6406 ld s0,64(sp) + 3bc070a4: 74e2 ld s1,56(sp) + 3bc070a6: 79a2 ld s3,40(sp) + 3bc070a8: 7a02 ld s4,32(sp) + 3bc070aa: 6ae2 ld s5,24(sp) + 3bc070ac: 6b42 ld s6,16(sp) + 3bc070ae: 6ba2 ld s7,8(sp) + 3bc070b0: 6c02 ld s8,0(sp) + 3bc070b2: 854a mv a0,s2 + 3bc070b4: 7942 ld s2,48(sp) + 3bc070b6: 6161 addi sp,sp,80 + 3bc070b8: 8082 ret + 3bc070ba: 184d27b7 lui a5,0x184d2 + 3bc070be: 20478793 addi a5,a5,516 # 184d2204 + 3bc070c2: 10f51863 bne a0,a5,3bc071d2 + 3bc070c6: 00042623 sw zero,12(s0) + 3bc070ca: 0044c783 lbu a5,4(s1) + 3bc070ce: 0417b70b extu a4,a5,1,1 + 3bc070d2: 00078b1b sext.w s6,a5 + 3bc070d6: 0067d693 srli a3,a5,0x6 + 3bc070da: 0e071e63 bnez a4,3bc071d6 + 3bc070de: 4705 li a4,1 + 3bc070e0: 0ee69d63 bne a3,a4,3bc071da + 3bc070e4: 0c3b3c0b extu s8,s6,3,3 + 3bc070e8: 49bd li s3,15 + 3bc070ea: 000c1363 bnez s8,3bc070f0 + 3bc070ee: 499d li s3,7 + 3bc070f0: 0017fa13 andi s4,a5,1 + 3bc070f4: 0549998b addsl s3,s3,s4,2 + 3bc070f8: 03397063 bgeu s2,s3,3bc07118 + 3bc070fc: 0e840513 addi a0,s0,232 + 3bc07100: 00a48663 beq s1,a0,3bc0710c + 3bc07104: 864a mv a2,s2 + 3bc07106: 85a6 mv a1,s1 + 3bc07108: 965f90ef jal ra,3bc00a6c + 3bc0710c: 05243423 sd s2,72(s0) + 3bc07110: 05343823 sd s3,80(s0) + 3bc07114: 4785 li a5,1 + 3bc07116: b741 j 3bc07096 + 3bc07118: 0054c783 lbu a5,5(s1) + 3bc0711c: 5961 li s2,-8 + 3bc0711e: fc77b70b extu a4,a5,63,7 + 3bc07122: 8c47bb8b extu s7,a5,35,4 + 3bc07126: ff2d bnez a4,3bc070a0 + 3bc07128: 004bf713 andi a4,s7,4 + 3bc0712c: 5979 li s2,-2 + 3bc0712e: db2d beqz a4,3bc070a0 + 3bc07130: 8bbd andi a5,a5,15 + 3bc07132: 5961 li s2,-8 + 3bc07134: f7b5 bnez a5,3bc070a0 + 3bc07136: ffb98a93 addi s5,s3,-5 + 3bc0713a: 4601 li a2,0 + 3bc0713c: 85d6 mv a1,s5 + 3bc0713e: 00448513 addi a0,s1,4 + 3bc07142: 425000ef jal ra,3bc07d66 + 3bc07146: 013487b3 add a5,s1,s3 + 3bc0714a: fff7c783 lbu a5,-1(a5) + 3bc0714e: 3c85350b extu a0,a0,15,8 + 3bc07152: 593d li s2,-17 + 3bc07154: f4a796e3 bne a5,a0,3bc070a0 + 3bc07158: 145b378b extu a5,s6,5,5 + 3bc0715c: 007bf513 andi a0,s7,7 + 3bc07160: c05c sw a5,4(s0) + 3bc07162: 104b378b extu a5,s6,4,4 + 3bc07166: 082b3b0b extu s6,s6,2,2 + 3bc0716a: cc5c sw a5,28(s0) + 3bc0716c: 01642423 sw s6,8(s0) + 3bc07170: c008 sw a0,0(s0) + 3bc07172: eabff0ef jal ra,3bc0701c + 3bc07176: f808 sd a0,48(s0) + 3bc07178: 040c0263 beqz s8,3bc071bc + 3bc0717c: 0074c783 lbu a5,7(s1) + 3bc07180: 0084c703 lbu a4,8(s1) + 3bc07184: 0064c683 lbu a3,6(s1) + 3bc07188: 07a2 slli a5,a5,0x8 + 3bc0718a: 0742 slli a4,a4,0x10 + 3bc0718c: 97ba add a5,a5,a4 + 3bc0718e: 0094c703 lbu a4,9(s1) + 3bc07192: 97b6 add a5,a5,a3 + 3bc07194: 0762 slli a4,a4,0x18 + 3bc07196: 97ba add a5,a5,a4 + 3bc07198: 00a4c703 lbu a4,10(s1) + 3bc0719c: 1702 slli a4,a4,0x20 + 3bc0719e: 97ba add a5,a5,a4 + 3bc071a0: 00b4c703 lbu a4,11(s1) + 3bc071a4: 1722 slli a4,a4,0x28 + 3bc071a6: 973e add a4,a4,a5 + 3bc071a8: 00c4c783 lbu a5,12(s1) + 3bc071ac: 17c2 slli a5,a5,0x30 + 3bc071ae: 973e add a4,a4,a5 + 3bc071b0: 00d4c783 lbu a5,13(s1) + 3bc071b4: 17e2 slli a5,a5,0x38 + 3bc071b6: 97ba add a5,a5,a4 + 3bc071b8: e81c sd a5,16(s0) + 3bc071ba: f41c sd a5,40(s0) + 3bc071bc: 000a0763 beqz s4,3bc071ca + 3bc071c0: 01548533 add a0,s1,s5 + 3bc071c4: a8eff0ef jal ra,3bc06452 + 3bc071c8: cc08 sw a0,24(s0) + 3bc071ca: 4789 li a5,2 + 3bc071cc: d05c sw a5,36(s0) + 3bc071ce: 894e mv s2,s3 + 3bc071d0: bdc1 j 3bc070a0 + 3bc071d2: 594d li s2,-13 + 3bc071d4: b5f1 j 3bc070a0 + 3bc071d6: 5961 li s2,-8 + 3bc071d8: b5e1 j 3bc070a0 + 3bc071da: 5969 li s2,-6 + 3bc071dc: b5d1 j 3bc070a0 + +000000003bc071de : + 3bc071de: 1101 addi sp,sp,-32 + 3bc071e0: e822 sd s0,16(sp) + 3bc071e2: e426 sd s1,8(sp) + 3bc071e4: 842a mv s0,a0 + 3bc071e6: 84ae mv s1,a1 + 3bc071e8: 4505 li a0,1 + 3bc071ea: 10000593 li a1,256 + 3bc071ee: ec06 sd ra,24(sp) + 3bc071f0: bf8fa0ef jal ra,3bc015e8 + 3bc071f4: e909 bnez a0,3bc07206 + 3bc071f6: 00043023 sd zero,0(s0) + 3bc071fa: 555d li a0,-9 + 3bc071fc: 60e2 ld ra,24(sp) + 3bc071fe: 6442 ld s0,16(sp) + 3bc07200: 64a2 ld s1,8(sp) + 3bc07202: 6105 addi sp,sp,32 + 3bc07204: 8082 ret + 3bc07206: d104 sw s1,32(a0) + 3bc07208: e008 sd a0,0(s0) + 3bc0720a: 4501 li a0,0 + 3bc0720c: bfc5 j 3bc071fc + +000000003bc0720e : + 3bc0720e: 7131 addi sp,sp,-192 + 3bc07210: ed4e sd s3,152(sp) + 3bc07212: 00073983 ld s3,0(a4) + 3bc07216: e556 sd s5,136(sp) + 3bc07218: e15a sd s6,128(sp) + 3bc0721a: f0ea sd s10,96(sp) + 3bc0721c: ecee sd s11,88(sp) + 3bc0721e: fd06 sd ra,184(sp) + 3bc07220: f922 sd s0,176(sp) + 3bc07222: f526 sd s1,168(sp) + 3bc07224: f14a sd s2,160(sp) + 3bc07226: e952 sd s4,144(sp) + 3bc07228: fcde sd s7,120(sp) + 3bc0722a: f8e2 sd s8,112(sp) + 3bc0722c: f4e6 sd s9,104(sp) + 3bc0722e: fad1560b sdd a2,a3,(sp),1,4 + 3bc07232: e43e sd a5,8(sp) + 3bc07234: 8d2a mv s10,a0 + 3bc07236: 8aae mv s5,a1 + 3bc07238: 8dba mv s11,a4 + 3bc0723a: 99b6 add s3,s3,a3 + 3bc0723c: 4b01 li s6,0 + 3bc0723e: c581 beqz a1,3bc07246 + 3bc07240: 00063b03 ld s6,0(a2) + 3bc07244: 9b2e add s6,s6,a1 + 3bc07246: 0080 addi s0,sp,64 + 3bc07248: 4641 li a2,16 + 3bc0724a: 4581 li a1,0 + 3bc0724c: 8522 mv a0,s0 + 3bc0724e: fc4f90ef jal ra,3bc00a12 + 3bc07252: 67a2 ld a5,8(sp) + 3bc07254: 000db023 sd zero,0(s11) + 3bc07258: 6ce2 ld s9,24(sp) + 3bc0725a: 40f4178b mveqz a5,s0,a5 + 3bc0725e: e43e sd a5,8(sp) + 3bc07260: 67c2 ld a5,16(sp) + 3bc07262: 8956 mv s2,s5 + 3bc07264: 4485 li s1,1 + 3bc07266: 0007b023 sd zero,0(a5) + 3bc0726a: 0ecd0793 addi a5,s10,236 + 3bc0726e: f43e sd a5,40(sp) + 3bc07270: 0b8d0793 addi a5,s10,184 + 3bc07274: 4a05 li s4,1 + 3bc07276: 0e8d0b93 addi s7,s10,232 + 3bc0727a: 088d0c13 addi s8,s10,136 + 3bc0727e: f03e sd a5,32(sp) + 3bc07280: 080a1b63 bnez s4,3bc07316 + 3bc07284: 004d2783 lw a5,4(s10) + 3bc07288: ebbd bnez a5,3bc072fe + 3bc0728a: 060d3583 ld a1,96(s10) + 3bc0728e: 058d3503 ld a0,88(s10) + 3bc07292: 06a58663 beq a1,a0,3bc072fe + 3bc07296: c5a5 beqz a1,3bc072fe + 3bc07298: 67a2 ld a5,8(sp) + 3bc0729a: 439c lw a5,0(a5) + 3bc0729c: e3ad bnez a5,3bc072fe + 3bc0729e: 024d2703 lw a4,36(s10) + 3bc072a2: 479d li a5,7 + 3bc072a4: ffe7069b addiw a3,a4,-2 + 3bc072a8: 04d7eb63 bltu a5,a3,3bc072fe + 3bc072ac: 46a5 li a3,9 + 3bc072ae: 068d3783 ld a5,104(s10) + 3bc072b2: 6ed71c63 bne a4,a3,3bc079aa + 3bc072b6: 080d3683 ld a3,128(s10) + 3bc072ba: 070d3403 ld s0,112(s10) + 3bc072be: 078d3703 ld a4,120(s10) + 3bc072c2: 8f95 sub a5,a5,a3 + 3bc072c4: 66c1 lui a3,0x10 + 3bc072c6: 8c09 sub s0,s0,a0 + 3bc072c8: 4601 li a2,0 + 3bc072ca: 00e6ea63 bltu a3,a4,3bc072de + 3bc072ce: 40e68633 sub a2,a3,a4 + 3bc072d2: 00c43733 sltu a4,s0,a2 + 3bc072d6: 00174713 xori a4,a4,1 + 3bc072da: 40e4160b mveqz a2,s0,a4 + 3bc072de: 8f91 sub a5,a5,a2 + 3bc072e0: 40c40733 sub a4,s0,a2 + 3bc072e4: 95be add a1,a1,a5 + 3bc072e6: 953a add a0,a0,a4 + 3bc072e8: f84f90ef jal ra,3bc00a6c + 3bc072ec: 058d3783 ld a5,88(s10) + 3bc072f0: 06fd3023 sd a5,96(s10) + 3bc072f4: 080d3783 ld a5,128(s10) + 3bc072f8: 943e add s0,s0,a5 + 3bc072fa: 068d3423 sd s0,104(s10) + 3bc072fe: 67e2 ld a5,24(sp) + 3bc07300: 41590933 sub s2,s2,s5 + 3bc07304: 8526 mv a0,s1 + 3bc07306: 40fc88b3 sub a7,s9,a5 + 3bc0730a: 67c2 ld a5,16(sp) + 3bc0730c: 011db023 sd a7,0(s11) + 3bc07310: 0127b023 sd s2,0(a5) + 3bc07314: a055 j 3bc073b8 + 3bc07316: 024d2783 lw a5,36(s10) + 3bc0731a: 4739 li a4,14 + 3bc0731c: f6f762e3 bltu a4,a5,3bc07280 + 3bc07320: 024d6783 lwu a5,36(s10) + 3bc07324: 00004717 auipc a4,0x4 + 3bc07328: df470713 addi a4,a4,-524 # 3bc0b118 + 3bc0732c: 44f7478b lrw a5,a4,a5,2 + 3bc07330: 97ba add a5,a5,a4 + 3bc07332: 8782 jr a5 + 3bc07334: 41998633 sub a2,s3,s9 + 3bc07338: 47c9 li a5,18 + 3bc0733a: 00c7fd63 bgeu a5,a2,3bc07354 + 3bc0733e: 85e6 mv a1,s9 + 3bc07340: 856a mv a0,s10 + 3bc07342: cf9ff0ef jal ra,3bc0703a + 3bc07346: 57b1 li a5,-20 + 3bc07348: 06a7e863 bltu a5,a0,3bc073b8 + 3bc0734c: 00ac8433 add s0,s9,a0 + 3bc07350: 8ca2 mv s9,s0 + 3bc07352: b73d j 3bc07280 + 3bc07354: 040d3423 sd zero,72(s10) + 3bc07358: 673c8d63 beq s9,s3,3bc079d2 + 3bc0735c: 479d li a5,7 + 3bc0735e: 04fd3823 sd a5,80(s10) + 3bc07362: 4785 li a5,1 + 3bc07364: 02fd2223 sw a5,36(s10) + 3bc07368: 048d3503 ld a0,72(s10) + 3bc0736c: 050d3403 ld s0,80(s10) + 3bc07370: 41998633 sub a2,s3,s9 + 3bc07374: 85e6 mv a1,s9 + 3bc07376: 8c09 sub s0,s0,a0 + 3bc07378: 008637b3 sltu a5,a2,s0 + 3bc0737c: 0017c793 xori a5,a5,1 + 3bc07380: 40f6140b mveqz s0,a2,a5 + 3bc07384: 8622 mv a2,s0 + 3bc07386: 955e add a0,a0,s7 + 3bc07388: ee4f90ef jal ra,3bc00a6c + 3bc0738c: 048d3783 ld a5,72(s10) + 3bc07390: 050d3603 ld a2,80(s10) + 3bc07394: 97a2 add a5,a5,s0 + 3bc07396: 04fd3423 sd a5,72(s10) + 3bc0739a: 9466 add s0,s0,s9 + 3bc0739c: 00c7f763 bgeu a5,a2,3bc073aa + 3bc073a0: 0611 addi a2,a2,4 + 3bc073a2: 40f604b3 sub s1,a2,a5 + 3bc073a6: 4a01 li s4,0 + 3bc073a8: b765 j 3bc07350 + 3bc073aa: 85de mv a1,s7 + 3bc073ac: 856a mv a0,s10 + 3bc073ae: c8dff0ef jal ra,3bc0703a + 3bc073b2: 57b1 li a5,-20 + 3bc073b4: f8a7fee3 bgeu a5,a0,3bc07350 + 3bc073b8: 70ea ld ra,184(sp) + 3bc073ba: 744a ld s0,176(sp) + 3bc073bc: 74aa ld s1,168(sp) + 3bc073be: 790a ld s2,160(sp) + 3bc073c0: 69ea ld s3,152(sp) + 3bc073c2: 6a4a ld s4,144(sp) + 3bc073c4: 6aaa ld s5,136(sp) + 3bc073c6: 6b0a ld s6,128(sp) + 3bc073c8: 7be6 ld s7,120(sp) + 3bc073ca: 7c46 ld s8,112(sp) + 3bc073cc: 7ca6 ld s9,104(sp) + 3bc073ce: 7d06 ld s10,96(sp) + 3bc073d0: 6de6 ld s11,88(sp) + 3bc073d2: 6129 addi sp,sp,192 + 3bc073d4: 8082 ret + 3bc073d6: 008d2783 lw a5,8(s10) + 3bc073da: c789 beqz a5,3bc073e4 + 3bc073dc: 4581 li a1,0 + 3bc073de: 8562 mv a0,s8 + 3bc073e0: 34d000ef jal ra,3bc07f2c + 3bc073e4: 004d2403 lw s0,4(s10) + 3bc073e8: 030d3783 ld a5,48(s10) + 3bc073ec: 00143413 seqz s0,s0 + 3bc073f0: 0446 slli s0,s0,0x11 + 3bc073f2: 943e add s0,s0,a5 + 3bc073f4: 038d3783 ld a5,56(s10) + 3bc073f8: 0287fe63 bgeu a5,s0,3bc07434 + 3bc073fc: 040d3503 ld a0,64(s10) + 3bc07400: 020d3c23 sd zero,56(s10) + 3bc07404: a0cfa0ef jal ra,3bc01610 + 3bc07408: 030d3503 ld a0,48(s10) + 3bc0740c: 0511 addi a0,a0,4 + 3bc0740e: 9d4fa0ef jal ra,3bc015e2 + 3bc07412: 04ad3023 sd a0,64(s10) + 3bc07416: e119 bnez a0,3bc0741c + 3bc07418: 555d li a0,-9 + 3bc0741a: bf79 j 3bc073b8 + 3bc0741c: 058d3503 ld a0,88(s10) + 3bc07420: 9f0fa0ef jal ra,3bc01610 + 3bc07424: 8522 mv a0,s0 + 3bc07426: 9bcfa0ef jal ra,3bc015e2 + 3bc0742a: 04ad3c23 sd a0,88(s10) + 3bc0742e: d56d beqz a0,3bc07418 + 3bc07430: 028d3c23 sd s0,56(s10) + 3bc07434: 058d3783 ld a5,88(s10) + 3bc07438: 040d3423 sd zero,72(s10) + 3bc0743c: 040d3823 sd zero,80(s10) + 3bc07440: 06fd3823 sd a5,112(s10) + 3bc07444: 478d li a5,3 + 3bc07446: 080d3023 sd zero,128(s10) + 3bc0744a: 060d3c23 sd zero,120(s10) + 3bc0744e: 02fd2223 sw a5,36(s10) + 3bc07452: 419987b3 sub a5,s3,s9 + 3bc07456: 470d li a4,3 + 3bc07458: 00f77b63 bgeu a4,a5,3bc0746e + 3bc0745c: 024d2703 lw a4,36(s10) + 3bc07460: 4791 li a5,4 + 3bc07462: 004c8413 addi s0,s9,4 + 3bc07466: 04f71e63 bne a4,a5,3bc074c2 + 3bc0746a: 8ca2 mv s9,s0 + 3bc0746c: a031 j 3bc07478 + 3bc0746e: 4791 li a5,4 + 3bc07470: 040d3423 sd zero,72(s10) + 3bc07474: 02fd2223 sw a5,36(s10) + 3bc07478: 048d3683 ld a3,72(s10) + 3bc0747c: 4711 li a4,4 + 3bc0747e: 040d3503 ld a0,64(s10) + 3bc07482: 40d705b3 sub a1,a4,a3 + 3bc07486: 41998633 sub a2,s3,s9 + 3bc0748a: 00c5b7b3 sltu a5,a1,a2 + 3bc0748e: 0017c793 xori a5,a5,1 + 3bc07492: 40f5960b mveqz a2,a1,a5 + 3bc07496: 9536 add a0,a0,a3 + 3bc07498: 85e6 mv a1,s9 + 3bc0749a: f832 sd a2,48(sp) + 3bc0749c: dd0f90ef jal ra,3bc00a6c + 3bc074a0: 048d3783 ld a5,72(s10) + 3bc074a4: 7642 ld a2,48(sp) + 3bc074a6: 00cc8433 add s0,s9,a2 + 3bc074aa: 963e add a2,a2,a5 + 3bc074ac: 04cd3423 sd a2,72(s10) + 3bc074b0: 478d li a5,3 + 3bc074b2: 00c7e663 bltu a5,a2,3bc074be + 3bc074b6: 4711 li a4,4 + 3bc074b8: 40c704b3 sub s1,a4,a2 + 3bc074bc: b5ed j 3bc073a6 + 3bc074be: 040d3c83 ld s9,64(s10) + 3bc074c2: 8566 mv a0,s9 + 3bc074c4: f8ffe0ef jal ra,3bc06452 + 3bc074c8: 2501 sext.w a0,a0 + 3bc074ca: 47a9 li a5,10 + 3bc074cc: c50d beqz a0,3bc074f6 + 3bc074ce: 030d3683 ld a3,48(s10) + 3bc074d2: 7805378b extu a5,a0,30,0 + 3bc074d6: 7c07b70b extu a4,a5,31,0 + 3bc074da: 4ef6ee63 bltu a3,a5,3bc079d6 + 3bc074de: 01cd2783 lw a5,28(s10) + 3bc074e2: 00055d63 bgez a0,3bc074fc + 3bc074e6: 04ed3823 sd a4,80(s10) + 3bc074ea: c789 beqz a5,3bc074f4 + 3bc074ec: 7502 ld a0,32(sp) + 3bc074ee: 4581 li a1,0 + 3bc074f0: 23d000ef jal ra,3bc07f2c + 3bc074f4: 4795 li a5,5 + 3bc074f6: 02fd2223 sw a5,36(s10) + 3bc074fa: bd99 j 3bc07350 + 3bc074fc: 02079693 slli a3,a5,0x20 + 3bc07500: 01e6d793 srli a5,a3,0x1e + 3bc07504: 97ba add a5,a5,a4 + 3bc07506: 471d li a4,7 + 3bc07508: 04fd3823 sd a5,80(s10) + 3bc0750c: 02ed2223 sw a4,36(s10) + 3bc07510: 01690463 beq s2,s6,3bc07518 + 3bc07514: e3341ee3 bne s0,s3,3bc07350 + 3bc07518: 00478493 addi s1,a5,4 + 3bc0751c: b569 j 3bc073a6 + 3bc0751e: 4601 li a2,0 + 3bc07520: 06090e63 beqz s2,3bc0759c + 3bc07524: 41998733 sub a4,s3,s9 + 3bc07528: 412b0633 sub a2,s6,s2 + 3bc0752c: 00c737b3 sltu a5,a4,a2 + 3bc07530: 0017c793 xori a5,a5,1 + 3bc07534: 40f7160b mveqz a2,a4,a5 + 3bc07538: 050d3703 ld a4,80(s10) + 3bc0753c: 85e6 mv a1,s9 + 3bc0753e: 854a mv a0,s2 + 3bc07540: 00c737b3 sltu a5,a4,a2 + 3bc07544: 0017c793 xori a5,a5,1 + 3bc07548: 40f7160b mveqz a2,a4,a5 + 3bc0754c: f832 sd a2,48(sp) + 3bc0754e: d1ef90ef jal ra,3bc00a6c + 3bc07552: 01cd2783 lw a5,28(s10) + 3bc07556: 7642 ld a2,48(sp) + 3bc07558: c791 beqz a5,3bc07564 + 3bc0755a: 7502 ld a0,32(sp) + 3bc0755c: 85e6 mv a1,s9 + 3bc0755e: 225000ef jal ra,3bc07f82 + 3bc07562: 7642 ld a2,48(sp) + 3bc07564: 008d2783 lw a5,8(s10) + 3bc07568: c799 beqz a5,3bc07576 + 3bc0756a: 85e6 mv a1,s9 + 3bc0756c: 8562 mv a0,s8 + 3bc0756e: f832 sd a2,48(sp) + 3bc07570: 213000ef jal ra,3bc07f82 + 3bc07574: 7642 ld a2,48(sp) + 3bc07576: 010d3783 ld a5,16(s10) + 3bc0757a: c791 beqz a5,3bc07586 + 3bc0757c: 028d3783 ld a5,40(s10) + 3bc07580: 8f91 sub a5,a5,a2 + 3bc07582: 02fd3423 sd a5,40(s10) + 3bc07586: 004d2783 lw a5,4(s10) + 3bc0758a: eb89 bnez a5,3bc0759c + 3bc0758c: 4701 li a4,0 + 3bc0758e: 86d6 mv a3,s5 + 3bc07590: 85ca mv a1,s2 + 3bc07592: 856a mv a0,s10 + 3bc07594: f832 sd a2,48(sp) + 3bc07596: 956ff0ef jal ra,3bc066ec + 3bc0759a: 7642 ld a2,48(sp) + 3bc0759c: 050d3783 ld a5,80(s10) + 3bc075a0: 01cd2703 lw a4,28(s10) + 3bc075a4: 00cc8433 add s0,s9,a2 + 3bc075a8: 9932 add s2,s2,a2 + 3bc075aa: 00c79863 bne a5,a2,3bc075ba + 3bc075ae: 28070d63 beqz a4,3bc07848 + 3bc075b2: 040d3423 sd zero,72(s10) + 3bc075b6: 4799 li a5,6 + 3bc075b8: bf3d j 3bc074f6 + 3bc075ba: 40c78633 sub a2,a5,a2 + 3bc075be: 04cd3823 sd a2,80(s10) + 3bc075c2: 00e03733 snez a4,a4 + 3bc075c6: 0611 addi a2,a2,4 + 3bc075c8: 04e6148b addsl s1,a2,a4,2 + 3bc075cc: bbe9 j 3bc073a6 + 3bc075ce: 419987b3 sub a5,s3,s9 + 3bc075d2: 470d li a4,3 + 3bc075d4: 048d3503 ld a0,72(s10) + 3bc075d8: 02f75363 bge a4,a5,3bc075fe + 3bc075dc: e10d bnez a0,3bc075fe + 3bc075de: 004c8413 addi s0,s9,4 + 3bc075e2: 8766 mv a4,s9 + 3bc075e4: 853a mv a0,a4 + 3bc075e6: e6dfe0ef jal ra,3bc06452 + 3bc075ea: 00050c9b sext.w s9,a0 + 3bc075ee: 7502 ld a0,32(sp) + 3bc075f0: 365000ef jal ra,3bc08154 + 3bc075f4: 2501 sext.w a0,a0 + 3bc075f6: 24ac8963 beq s9,a0,3bc07848 + 3bc075fa: 5565 li a0,-7 + 3bc075fc: bb75 j 3bc073b8 + 3bc075fe: 4411 li s0,4 + 3bc07600: 8c09 sub s0,s0,a0 + 3bc07602: 0087b733 sltu a4,a5,s0 + 3bc07606: 00174713 xori a4,a4,1 + 3bc0760a: 40e7940b mveqz s0,a5,a4 + 3bc0760e: 8622 mv a2,s0 + 3bc07610: 85e6 mv a1,s9 + 3bc07612: 955e add a0,a0,s7 + 3bc07614: f85e sd s7,48(sp) + 3bc07616: c56f90ef jal ra,3bc00a6c + 3bc0761a: 048d3783 ld a5,72(s10) + 3bc0761e: 468d li a3,3 + 3bc07620: 7742 ld a4,48(sp) + 3bc07622: 97a2 add a5,a5,s0 + 3bc07624: 04fd3423 sd a5,72(s10) + 3bc07628: 9466 add s0,s0,s9 + 3bc0762a: d6f6fee3 bgeu a3,a5,3bc073a6 + 3bc0762e: bf5d j 3bc075e4 + 3bc07630: 050d3403 ld s0,80(s10) + 3bc07634: 419987b3 sub a5,s3,s9 + 3bc07638: 0087f963 bgeu a5,s0,3bc0764a + 3bc0763c: 47a1 li a5,8 + 3bc0763e: 040d3423 sd zero,72(s10) + 3bc07642: 02fd2223 sw a5,36(s10) + 3bc07646: 8466 mv s0,s9 + 3bc07648: b321 j 3bc07350 + 3bc0764a: 9466 add s0,s0,s9 + 3bc0764c: 01cd2783 lw a5,28(s10) + 3bc07650: 16079563 bnez a5,3bc077ba + 3bc07654: 030d3683 ld a3,48(s10) + 3bc07658: 412b0633 sub a2,s6,s2 + 3bc0765c: 060d3703 ld a4,96(s10) + 3bc07660: 068d3783 ld a5,104(s10) + 3bc07664: 18d67263 bgeu a2,a3,3bc077e8 + 3bc07668: 004d2683 lw a3,4(s10) + 3bc0766c: ea95 bnez a3,3bc076a0 + 3bc0766e: 058d3683 ld a3,88(s10) + 3bc07672: 1cd71d63 bne a4,a3,3bc0784c + 3bc07676: 000206b7 lui a3,0x20 + 3bc0767a: 00f6fc63 bgeu a3,a5,3bc07692 + 3bc0767e: 75c1 lui a1,0xffff0 + 3bc07680: 95be add a1,a1,a5 + 3bc07682: 6641 lui a2,0x10 + 3bc07684: 95ba add a1,a1,a4 + 3bc07686: 853a mv a0,a4 + 3bc07688: be4f90ef jal ra,3bc00a6c + 3bc0768c: 67c1 lui a5,0x10 + 3bc0768e: 06fd3423 sd a5,104(s10) + 3bc07692: 058d3783 ld a5,88(s10) + 3bc07696: 068d3703 ld a4,104(s10) + 3bc0769a: 97ba add a5,a5,a4 + 3bc0769c: 06fd3823 sd a5,112(s10) + 3bc076a0: 060d3703 ld a4,96(s10) + 3bc076a4: 068d3783 ld a5,104(s10) + 3bc076a8: cb09 beqz a4,3bc076ba + 3bc076aa: 400006b7 lui a3,0x40000 + 3bc076ae: 00f6f663 bgeu a3,a5,3bc076ba + 3bc076b2: 76c1 lui a3,0xffff0 + 3bc076b4: 97b6 add a5,a5,a3 + 3bc076b6: 973e add a4,a4,a5 + 3bc076b8: 67c1 lui a5,0x10 + 3bc076ba: 030d2683 lw a3,48(s10) + 3bc076be: 050d2603 lw a2,80(s10) + 3bc076c2: 070d3583 ld a1,112(s10) + 3bc076c6: 8566 mv a0,s9 + 3bc076c8: 2781 sext.w a5,a5 + 3bc076ca: 921ff0ef jal ra,3bc06fea + 3bc076ce: 8caa mv s9,a0 + 3bc076d0: 30054763 bltz a0,3bc079de + 3bc076d4: 008d2783 lw a5,8(s10) + 3bc076d8: c799 beqz a5,3bc076e6 + 3bc076da: 070d3583 ld a1,112(s10) + 3bc076de: 862a mv a2,a0 + 3bc076e0: 8562 mv a0,s8 + 3bc076e2: 0a1000ef jal ra,3bc07f82 + 3bc076e6: 010d3783 ld a5,16(s10) + 3bc076ea: c799 beqz a5,3bc076f8 + 3bc076ec: 028d3783 ld a5,40(s10) + 3bc076f0: 419787b3 sub a5,a5,s9 + 3bc076f4: 02fd3423 sd a5,40(s10) + 3bc076f8: 47a5 li a5,9 + 3bc076fa: 079d3c23 sd s9,120(s10) + 3bc076fe: 080d3023 sd zero,128(s10) + 3bc07702: 02fd2223 sw a5,36(s10) + 3bc07706: 04090763 beqz s2,3bc07754 + 3bc0770a: 080d3703 ld a4,128(s10) + 3bc0770e: 078d3603 ld a2,120(s10) + 3bc07712: 412b06b3 sub a3,s6,s2 + 3bc07716: 070d3583 ld a1,112(s10) + 3bc0771a: 8e19 sub a2,a2,a4 + 3bc0771c: 00c6b7b3 sltu a5,a3,a2 + 3bc07720: 0017c793 xori a5,a5,1 + 3bc07724: 42f6168b mvnez a3,a2,a5 + 3bc07728: 8636 mv a2,a3 + 3bc0772a: 95ba add a1,a1,a4 + 3bc0772c: 854a mv a0,s2 + 3bc0772e: 8cb6 mv s9,a3 + 3bc07730: b3cf90ef jal ra,3bc00a6c + 3bc07734: 004d2783 lw a5,4(s10) + 3bc07738: eb81 bnez a5,3bc07748 + 3bc0773a: 4705 li a4,1 + 3bc0773c: 86d6 mv a3,s5 + 3bc0773e: 8666 mv a2,s9 + 3bc07740: 85ca mv a1,s2 + 3bc07742: 856a mv a0,s10 + 3bc07744: fa9fe0ef jal ra,3bc066ec + 3bc07748: 080d3783 ld a5,128(s10) + 3bc0774c: 9966 add s2,s2,s9 + 3bc0774e: 97e6 add a5,a5,s9 + 3bc07750: 08fd3023 sd a5,128(s10) + 3bc07754: 080d3703 ld a4,128(s10) + 3bc07758: 078d3783 ld a5,120(s10) + 3bc0775c: 0ef70663 beq a4,a5,3bc07848 + 3bc07760: 4491 li s1,4 + 3bc07762: b191 j 3bc073a6 + 3bc07764: 048d3703 ld a4,72(s10) + 3bc07768: 050d3403 ld s0,80(s10) + 3bc0776c: 41998633 sub a2,s3,s9 + 3bc07770: 040d3503 ld a0,64(s10) + 3bc07774: 8c19 sub s0,s0,a4 + 3bc07776: 008637b3 sltu a5,a2,s0 + 3bc0777a: 0017c793 xori a5,a5,1 + 3bc0777e: 40f6140b mveqz s0,a2,a5 + 3bc07782: 8622 mv a2,s0 + 3bc07784: 953a add a0,a0,a4 + 3bc07786: 85e6 mv a1,s9 + 3bc07788: ae4f90ef jal ra,3bc00a6c + 3bc0778c: 048d3783 ld a5,72(s10) + 3bc07790: 00f40733 add a4,s0,a5 + 3bc07794: 050d3783 ld a5,80(s10) + 3bc07798: 04ed3423 sd a4,72(s10) + 3bc0779c: 9466 add s0,s0,s9 + 3bc0779e: 00f77b63 bgeu a4,a5,3bc077b4 + 3bc077a2: 01cd2483 lw s1,28(s10) + 3bc077a6: 0791 addi a5,a5,4 + 3bc077a8: 8f99 sub a5,a5,a4 + 3bc077aa: 009034b3 snez s1,s1 + 3bc077ae: 0497948b addsl s1,a5,s1,2 + 3bc077b2: bed5 j 3bc073a6 + 3bc077b4: 040d3c83 ld s9,64(s10) + 3bc077b8: bd51 j 3bc0764c + 3bc077ba: 050d3583 ld a1,80(s10) + 3bc077be: 15f1 addi a1,a1,-4 + 3bc077c0: 04bd3823 sd a1,80(s10) + 3bc077c4: 00bc8533 add a0,s9,a1 + 3bc077c8: fc2e sd a1,56(sp) + 3bc077ca: c89fe0ef jal ra,3bc06452 + 3bc077ce: 75e2 ld a1,56(sp) + 3bc077d0: 0005079b sext.w a5,a0 + 3bc077d4: 4601 li a2,0 + 3bc077d6: 8566 mv a0,s9 + 3bc077d8: f83e sd a5,48(sp) + 3bc077da: 58c000ef jal ra,3bc07d66 + 3bc077de: 77c2 ld a5,48(sp) + 3bc077e0: 2501 sext.w a0,a0 + 3bc077e2: e6a789e3 beq a5,a0,3bc07654 + 3bc077e6: bd11 j 3bc075fa + 3bc077e8: cb09 beqz a4,3bc077fa + 3bc077ea: 40000637 lui a2,0x40000 + 3bc077ee: 00f67663 bgeu a2,a5,3bc077fa + 3bc077f2: 75c1 lui a1,0xffff0 + 3bc077f4: 97ae add a5,a5,a1 + 3bc077f6: 973e add a4,a4,a5 + 3bc077f8: 67c1 lui a5,0x10 + 3bc077fa: 050d2603 lw a2,80(s10) + 3bc077fe: 8566 mv a0,s9 + 3bc07800: 2781 sext.w a5,a5 + 3bc07802: 2681 sext.w a3,a3 + 3bc07804: 85ca mv a1,s2 + 3bc07806: fe4ff0ef jal ra,3bc06fea + 3bc0780a: 8caa mv s9,a0 + 3bc0780c: 1c054763 bltz a0,3bc079da + 3bc07810: 008d2783 lw a5,8(s10) + 3bc07814: c791 beqz a5,3bc07820 + 3bc07816: 862a mv a2,a0 + 3bc07818: 85ca mv a1,s2 + 3bc0781a: 8562 mv a0,s8 + 3bc0781c: 766000ef jal ra,3bc07f82 + 3bc07820: 010d3783 ld a5,16(s10) + 3bc07824: c799 beqz a5,3bc07832 + 3bc07826: 028d3783 ld a5,40(s10) + 3bc0782a: 419787b3 sub a5,a5,s9 + 3bc0782e: 02fd3423 sd a5,40(s10) + 3bc07832: 004d2783 lw a5,4(s10) + 3bc07836: eb81 bnez a5,3bc07846 + 3bc07838: 4701 li a4,0 + 3bc0783a: 86d6 mv a3,s5 + 3bc0783c: 8666 mv a2,s9 + 3bc0783e: 85ca mv a1,s2 + 3bc07840: 856a mv a0,s10 + 3bc07842: eabfe0ef jal ra,3bc066ec + 3bc07846: 9966 add s2,s2,s9 + 3bc07848: 478d li a5,3 + 3bc0784a: b175 j 3bc074f6 + 3bc0784c: 6741 lui a4,0x10 + 3bc0784e: 00f77363 bgeu a4,a5,3bc07854 + 3bc07852: 67c1 lui a5,0x10 + 3bc07854: 97b6 add a5,a5,a3 + 3bc07856: b599 j 3bc0769c + 3bc07858: 8466 mv s0,s9 + 3bc0785a: b575 j 3bc07706 + 3bc0785c: 028d3483 ld s1,40(s10) + 3bc07860: 18049163 bnez s1,3bc079e2 + 3bc07864: 008d2a03 lw s4,8(s10) + 3bc07868: 000a1963 bnez s4,3bc0787a + 3bc0786c: 020d2223 sw zero,36(s10) + 3bc07870: 060d3023 sd zero,96(s10) + 3bc07874: 060d3423 sd zero,104(s10) + 3bc07878: b3f9 j 3bc07646 + 3bc0787a: 419987b3 sub a5,s3,s9 + 3bc0787e: 470d li a4,3 + 3bc07880: 04f74a63 blt a4,a5,3bc078d4 + 3bc07884: 47ad li a5,11 + 3bc07886: 040d3423 sd zero,72(s10) + 3bc0788a: 02fd2223 sw a5,36(s10) + 3bc0788e: 048d3703 ld a4,72(s10) + 3bc07892: 4491 li s1,4 + 3bc07894: 41998a33 sub s4,s3,s9 + 3bc07898: 40e48633 sub a2,s1,a4 + 3bc0789c: 014637b3 sltu a5,a2,s4 + 3bc078a0: 040d3503 ld a0,64(s10) + 3bc078a4: 0017c793 xori a5,a5,1 + 3bc078a8: 40f61a0b mveqz s4,a2,a5 + 3bc078ac: 8652 mv a2,s4 + 3bc078ae: 85e6 mv a1,s9 + 3bc078b0: 953a add a0,a0,a4 + 3bc078b2: 9baf90ef jal ra,3bc00a6c + 3bc078b6: 048d3603 ld a2,72(s10) + 3bc078ba: 014c8433 add s0,s9,s4 + 3bc078be: 478d li a5,3 + 3bc078c0: 9a32 add s4,s4,a2 + 3bc078c2: 054d3423 sd s4,72(s10) + 3bc078c6: 414484b3 sub s1,s1,s4 + 3bc078ca: ad47fee3 bgeu a5,s4,3bc073a6 + 3bc078ce: 040d3c83 ld s9,64(s10) + 3bc078d2: a019 j 3bc078d8 + 3bc078d4: 004c8413 addi s0,s9,4 + 3bc078d8: 8566 mv a0,s9 + 3bc078da: b79fe0ef jal ra,3bc06452 + 3bc078de: 0005049b sext.w s1,a0 + 3bc078e2: 8562 mv a0,s8 + 3bc078e4: 071000ef jal ra,3bc08154 + 3bc078e8: 2501 sext.w a0,a0 + 3bc078ea: 0ea49e63 bne s1,a0,3bc079e6 + 3bc078ee: 020d2223 sw zero,36(s10) + 3bc078f2: 060d3023 sd zero,96(s10) + 3bc078f6: 060d3423 sd zero,104(s10) + 3bc078fa: 4481 li s1,0 + 3bc078fc: b46d j 3bc073a6 + 3bc078fe: 419987b3 sub a5,s3,s9 + 3bc07902: 470d li a4,3 + 3bc07904: 004c8413 addi s0,s9,4 + 3bc07908: 04f74d63 blt a4,a5,3bc07962 + 3bc0790c: 4791 li a5,4 + 3bc0790e: 04fd3423 sd a5,72(s10) + 3bc07912: 47a1 li a5,8 + 3bc07914: 04fd3823 sd a5,80(s10) + 3bc07918: 47b5 li a5,13 + 3bc0791a: 02fd2223 sw a5,36(s10) + 3bc0791e: 048d3503 ld a0,72(s10) + 3bc07922: 050d3603 ld a2,80(s10) + 3bc07926: 41998733 sub a4,s3,s9 + 3bc0792a: 85e6 mv a1,s9 + 3bc0792c: 8e09 sub a2,a2,a0 + 3bc0792e: 00c737b3 sltu a5,a4,a2 + 3bc07932: 0017c793 xori a5,a5,1 + 3bc07936: 40f7160b mveqz a2,a4,a5 + 3bc0793a: 955e add a0,a0,s7 + 3bc0793c: f832 sd a2,48(sp) + 3bc0793e: 92ef90ef jal ra,3bc00a6c + 3bc07942: 048d3783 ld a5,72(s10) + 3bc07946: 7642 ld a2,48(sp) + 3bc07948: 00cc8433 add s0,s9,a2 + 3bc0794c: 963e add a2,a2,a5 + 3bc0794e: 050d3783 ld a5,80(s10) + 3bc07952: 04cd3423 sd a2,72(s10) + 3bc07956: 00f67563 bgeu a2,a5,3bc07960 + 3bc0795a: 40c784b3 sub s1,a5,a2 + 3bc0795e: b4a1 j 3bc073a6 + 3bc07960: 7ca2 ld s9,40(sp) + 3bc07962: 8566 mv a0,s9 + 3bc07964: aeffe0ef jal ra,3bc06452 + 3bc07968: 7c05350b extu a0,a0,31,0 + 3bc0796c: 00ad3823 sd a0,16(s10) + 3bc07970: 04ad3823 sd a0,80(s10) + 3bc07974: 47b9 li a5,14 + 3bc07976: b641 j 3bc074f6 + 3bc07978: 050d3483 ld s1,80(s10) + 3bc0797c: 41998633 sub a2,s3,s9 + 3bc07980: 4a01 li s4,0 + 3bc07982: 00c4b7b3 sltu a5,s1,a2 + 3bc07986: 0017c793 xori a5,a5,1 + 3bc0798a: 40f4960b mveqz a2,s1,a5 + 3bc0798e: 8c91 sub s1,s1,a2 + 3bc07990: 049d3823 sd s1,80(s10) + 3bc07994: 00cc8433 add s0,s9,a2 + 3bc07998: 9a049ce3 bnez s1,3bc07350 + 3bc0799c: 020d2223 sw zero,36(s10) + 3bc079a0: 060d3023 sd zero,96(s10) + 3bc079a4: 060d3423 sd zero,104(s10) + 3bc079a8: b265 j 3bc07350 + 3bc079aa: 6741 lui a4,0x10 + 3bc079ac: 843e mv s0,a5 + 3bc079ae: 00f77363 bgeu a4,a5,3bc079b4 + 3bc079b2: 6441 lui s0,0x10 + 3bc079b4: 8f81 sub a5,a5,s0 + 3bc079b6: 95be add a1,a1,a5 + 3bc079b8: 8622 mv a2,s0 + 3bc079ba: 8b2f90ef jal ra,3bc00a6c + 3bc079be: 058d3783 ld a5,88(s10) + 3bc079c2: 068d3423 sd s0,104(s10) + 3bc079c6: 06fd3023 sd a5,96(s10) + 3bc079ca: 97a2 add a5,a5,s0 + 3bc079cc: 06fd3823 sd a5,112(s10) + 3bc079d0: b23d j 3bc072fe + 3bc079d2: 451d li a0,7 + 3bc079d4: b2d5 j 3bc073b8 + 3bc079d6: 5579 li a0,-2 + 3bc079d8: b2c5 j 3bc073b8 + 3bc079da: 557d li a0,-1 + 3bc079dc: baf1 j 3bc073b8 + 3bc079de: 5541 li a0,-16 + 3bc079e0: bae1 j 3bc073b8 + 3bc079e2: 5549 li a0,-14 + 3bc079e4: bad1 j 3bc073b8 + 3bc079e6: 5539 li a0,-18 + 3bc079e8: bac1 j 3bc073b8 + +000000003bc079ea : + 3bc079ea: 00f5579b srliw a5,a0,0xf + 3bc079ee: 8d3d xor a0,a0,a5 + 3bc079f0: 85ebd7b7 lui a5,0x85ebd + 3bc079f4: a777879b addiw a5,a5,-1417 + 3bc079f8: 02a7853b mulw a0,a5,a0 + 3bc079fc: 00d5579b srliw a5,a0,0xd + 3bc07a00: 8fa9 xor a5,a5,a0 + 3bc07a02: c2b2b537 lui a0,0xc2b2b + 3bc07a06: e3d5051b addiw a0,a0,-451 + 3bc07a0a: 02a787bb mulw a5,a5,a0 + 3bc07a0e: 0107d51b srliw a0,a5,0x10 + 3bc07a12: 8d3d xor a0,a0,a5 + 3bc07a14: 8082 ret + +000000003bc07a16 : + 3bc07a16: 1101 addi sp,sp,-32 + 3bc07a18: 85aa mv a1,a0 + 3bc07a1a: 4611 li a2,4 + 3bc07a1c: 0068 addi a0,sp,12 + 3bc07a1e: ec06 sd ra,24(sp) + 3bc07a20: 84cf90ef jal ra,3bc00a6c + 3bc07a24: 60e2 ld ra,24(sp) + 3bc07a26: 4532 lw a0,12(sp) + 3bc07a28: 6105 addi sp,sp,32 + 3bc07a2a: 8082 ret + +000000003bc07a2c : + 3bc07a2c: 1101 addi sp,sp,-32 + 3bc07a2e: 8a3d andi a2,a2,15 + 3bc07a30: e822 sd s0,16(sp) + 3bc07a32: ec06 sd ra,24(sp) + 3bc07a34: e426 sd s1,8(sp) + 3bc07a36: e04a sd s2,0(sp) + 3bc07a38: 167d addi a2,a2,-1 + 3bc07a3a: 47b9 li a5,14 + 3bc07a3c: 842a mv s0,a0 + 3bc07a3e: 30c7ec63 bltu a5,a2,3bc07d56 + 3bc07a42: 00003717 auipc a4,0x3 + 3bc07a46: 77670713 addi a4,a4,1910 # 3bc0b1b8 + 3bc07a4a: 44c7478b lrw a5,a4,a2,2 + 3bc07a4e: 84ae mv s1,a1 + 3bc07a50: 8936 mv s2,a3 + 3bc07a52: 97ba add a5,a5,a4 + 3bc07a54: 8782 jr a5 + 3bc07a56: 4785 li a5,1 + 3bc07a58: 08f69a63 bne a3,a5,3bc07aec + 3bc07a5c: 852e mv a0,a1 + 3bc07a5e: fb9ff0ef jal ra,3bc07a16 + 3bc07a62: 0005079b sext.w a5,a0 + 3bc07a66: c2b2b737 lui a4,0xc2b2b + 3bc07a6a: e3d7071b addiw a4,a4,-451 + 3bc07a6e: 24f7140b mulaw s0,a4,a5 + 3bc07a72: 27d4f7b7 lui a5,0x27d4f + 3bc07a76: b2f7879b addiw a5,a5,-1233 + 3bc07a7a: 0491 addi s1,s1,4 + 3bc07a7c: 14f4140b srriw s0,s0,15 + 3bc07a80: 02f4043b mulw s0,s0,a5 + 3bc07a84: 4785 li a5,1 + 3bc07a86: 06f91563 bne s2,a5,3bc07af0 + 3bc07a8a: 8526 mv a0,s1 + 3bc07a8c: f8bff0ef jal ra,3bc07a16 + 3bc07a90: 0005079b sext.w a5,a0 + 3bc07a94: c2b2b737 lui a4,0xc2b2b + 3bc07a98: e3d7071b addiw a4,a4,-451 + 3bc07a9c: 0491 addi s1,s1,4 + 3bc07a9e: 24f7140b mulaw s0,a4,a5 + 3bc07aa2: 27d4f7b7 lui a5,0x27d4f + 3bc07aa6: b2f7879b addiw a5,a5,-1233 + 3bc07aaa: 14f4140b srriw s0,s0,15 + 3bc07aae: 02f4043b mulw s0,s0,a5 + 3bc07ab2: 4785 li a5,1 + 3bc07ab4: 04f91063 bne s2,a5,3bc07af4 + 3bc07ab8: 8526 mv a0,s1 + 3bc07aba: f5dff0ef jal ra,3bc07a16 + 3bc07abe: 0005079b sext.w a5,a0 + 3bc07ac2: c2b2b737 lui a4,0xc2b2b + 3bc07ac6: e3d7071b addiw a4,a4,-451 + 3bc07aca: 24f7140b mulaw s0,a4,a5 + 3bc07ace: 27d4f7b7 lui a5,0x27d4f + 3bc07ad2: b2f7879b addiw a5,a5,-1233 + 3bc07ad6: 14f4150b srriw a0,s0,15 + 3bc07ada: 02a7853b mulw a0,a5,a0 + 3bc07ade: 6442 ld s0,16(sp) + 3bc07ae0: 60e2 ld ra,24(sp) + 3bc07ae2: 64a2 ld s1,8(sp) + 3bc07ae4: 6902 ld s2,0(sp) + 3bc07ae6: 6105 addi sp,sp,32 + 3bc07ae8: f03ff06f j 3bc079ea + 3bc07aec: 419c lw a5,0(a1) + 3bc07aee: bfa5 j 3bc07a66 + 3bc07af0: 409c lw a5,0(s1) + 3bc07af2: b74d j 3bc07a94 + 3bc07af4: 409c lw a5,0(s1) + 3bc07af6: b7f1 j 3bc07ac2 + 3bc07af8: 4785 li a5,1 + 3bc07afa: 0af69263 bne a3,a5,3bc07b9e + 3bc07afe: 852e mv a0,a1 + 3bc07b00: f17ff0ef jal ra,3bc07a16 + 3bc07b04: 0005079b sext.w a5,a0 + 3bc07b08: c2b2b737 lui a4,0xc2b2b + 3bc07b0c: e3d7071b addiw a4,a4,-451 + 3bc07b10: 24f7140b mulaw s0,a4,a5 + 3bc07b14: 27d4f7b7 lui a5,0x27d4f + 3bc07b18: b2f7879b addiw a5,a5,-1233 + 3bc07b1c: 0491 addi s1,s1,4 + 3bc07b1e: 14f4140b srriw s0,s0,15 + 3bc07b22: 02f4043b mulw s0,s0,a5 + 3bc07b26: 4785 li a5,1 + 3bc07b28: 06f91d63 bne s2,a5,3bc07ba2 + 3bc07b2c: 8526 mv a0,s1 + 3bc07b2e: ee9ff0ef jal ra,3bc07a16 + 3bc07b32: 0005079b sext.w a5,a0 + 3bc07b36: c2b2b737 lui a4,0xc2b2b + 3bc07b3a: e3d7071b addiw a4,a4,-451 + 3bc07b3e: 0491 addi s1,s1,4 + 3bc07b40: 24f7140b mulaw s0,a4,a5 + 3bc07b44: 27d4f7b7 lui a5,0x27d4f + 3bc07b48: b2f7879b addiw a5,a5,-1233 + 3bc07b4c: 14f4140b srriw s0,s0,15 + 3bc07b50: 02f4043b mulw s0,s0,a5 + 3bc07b54: 4785 li a5,1 + 3bc07b56: 04f91863 bne s2,a5,3bc07ba6 + 3bc07b5a: 8526 mv a0,s1 + 3bc07b5c: ebbff0ef jal ra,3bc07a16 + 3bc07b60: 0005079b sext.w a5,a0 + 3bc07b64: c2b2b737 lui a4,0xc2b2b + 3bc07b68: e3d7071b addiw a4,a4,-451 + 3bc07b6c: 16566537 lui a0,0x16566 + 3bc07b70: 7b15051b addiw a0,a0,1969 + 3bc07b74: 24f7140b mulaw s0,a4,a5 + 3bc07b78: 0044c783 lbu a5,4(s1) + 3bc07b7c: 27d4f737 lui a4,0x27d4f + 3bc07b80: b2f7071b addiw a4,a4,-1233 + 3bc07b84: 02a787bb mulw a5,a5,a0 + 3bc07b88: 14f4140b srriw s0,s0,15 + 3bc07b8c: 9e378537 lui a0,0x9e378 + 3bc07b90: 9b15051b addiw a0,a0,-1615 + 3bc07b94: 24e4178b mulaw a5,s0,a4 + 3bc07b98: 1557978b srriw a5,a5,21 + 3bc07b9c: bf3d j 3bc07ada + 3bc07b9e: 419c lw a5,0(a1) + 3bc07ba0: b7a5 j 3bc07b08 + 3bc07ba2: 409c lw a5,0(s1) + 3bc07ba4: bf49 j 3bc07b36 + 3bc07ba6: 409c lw a5,0(s1) + 3bc07ba8: bf75 j 3bc07b64 + 3bc07baa: 4785 li a5,1 + 3bc07bac: 0af69a63 bne a3,a5,3bc07c60 + 3bc07bb0: 852e mv a0,a1 + 3bc07bb2: e65ff0ef jal ra,3bc07a16 + 3bc07bb6: 0005079b sext.w a5,a0 + 3bc07bba: c2b2b737 lui a4,0xc2b2b + 3bc07bbe: e3d7071b addiw a4,a4,-451 + 3bc07bc2: 24f7140b mulaw s0,a4,a5 + 3bc07bc6: 27d4f7b7 lui a5,0x27d4f + 3bc07bca: b2f7879b addiw a5,a5,-1233 + 3bc07bce: 0491 addi s1,s1,4 + 3bc07bd0: 14f4140b srriw s0,s0,15 + 3bc07bd4: 02f4043b mulw s0,s0,a5 + 3bc07bd8: 4785 li a5,1 + 3bc07bda: 08f91563 bne s2,a5,3bc07c64 + 3bc07bde: 8526 mv a0,s1 + 3bc07be0: e37ff0ef jal ra,3bc07a16 + 3bc07be4: 0005079b sext.w a5,a0 + 3bc07be8: c2b2b737 lui a4,0xc2b2b + 3bc07bec: e3d7071b addiw a4,a4,-451 + 3bc07bf0: 0491 addi s1,s1,4 + 3bc07bf2: 24f7140b mulaw s0,a4,a5 + 3bc07bf6: 27d4f7b7 lui a5,0x27d4f + 3bc07bfa: b2f7879b addiw a5,a5,-1233 + 3bc07bfe: 14f4140b srriw s0,s0,15 + 3bc07c02: 02f4043b mulw s0,s0,a5 + 3bc07c06: 4785 li a5,1 + 3bc07c08: 06f91063 bne s2,a5,3bc07c68 + 3bc07c0c: 8526 mv a0,s1 + 3bc07c0e: e09ff0ef jal ra,3bc07a16 + 3bc07c12: 0005079b sext.w a5,a0 + 3bc07c16: c2b2b737 lui a4,0xc2b2b + 3bc07c1a: e3d7071b addiw a4,a4,-451 + 3bc07c1e: 9e378537 lui a0,0x9e378 + 3bc07c22: 9b15051b addiw a0,a0,-1615 + 3bc07c26: 24f7140b mulaw s0,a4,a5 + 3bc07c2a: 0044c703 lbu a4,4(s1) + 3bc07c2e: 165667b7 lui a5,0x16566 + 3bc07c32: 7b17869b addiw a3,a5,1969 + 3bc07c36: 27d4f7b7 lui a5,0x27d4f + 3bc07c3a: b2f7879b addiw a5,a5,-1233 + 3bc07c3e: 02d7073b mulw a4,a4,a3 + 3bc07c42: 14f4140b srriw s0,s0,15 + 3bc07c46: 24f4170b mulaw a4,s0,a5 + 3bc07c4a: 0054c783 lbu a5,5(s1) + 3bc07c4e: 02d787bb mulw a5,a5,a3 + 3bc07c52: 1557170b srriw a4,a4,21 + 3bc07c56: 24a7178b mulaw a5,a4,a0 + 3bc07c5a: 1557978b srriw a5,a5,21 + 3bc07c5e: bdb5 j 3bc07ada + 3bc07c60: 419c lw a5,0(a1) + 3bc07c62: bfa1 j 3bc07bba + 3bc07c64: 409c lw a5,0(s1) + 3bc07c66: b749 j 3bc07be8 + 3bc07c68: 409c lw a5,0(s1) + 3bc07c6a: b775 j 3bc07c16 + 3bc07c6c: 4785 li a5,1 + 3bc07c6e: 0ef69663 bne a3,a5,3bc07d5a + 3bc07c72: 852e mv a0,a1 + 3bc07c74: da3ff0ef jal ra,3bc07a16 + 3bc07c78: 0005079b sext.w a5,a0 + 3bc07c7c: c2b2b737 lui a4,0xc2b2b + 3bc07c80: e3d7071b addiw a4,a4,-451 + 3bc07c84: 24f7140b mulaw s0,a4,a5 + 3bc07c88: 27d4f7b7 lui a5,0x27d4f + 3bc07c8c: b2f7879b addiw a5,a5,-1233 + 3bc07c90: 0491 addi s1,s1,4 + 3bc07c92: 14f4140b srriw s0,s0,15 + 3bc07c96: 02f4043b mulw s0,s0,a5 + 3bc07c9a: 4785 li a5,1 + 3bc07c9c: 0cf91163 bne s2,a5,3bc07d5e + 3bc07ca0: 8526 mv a0,s1 + 3bc07ca2: d75ff0ef jal ra,3bc07a16 + 3bc07ca6: 0005079b sext.w a5,a0 + 3bc07caa: c2b2b737 lui a4,0xc2b2b + 3bc07cae: e3d7071b addiw a4,a4,-451 + 3bc07cb2: 0491 addi s1,s1,4 + 3bc07cb4: 24f7140b mulaw s0,a4,a5 + 3bc07cb8: 27d4f7b7 lui a5,0x27d4f + 3bc07cbc: b2f7879b addiw a5,a5,-1233 + 3bc07cc0: 14f4140b srriw s0,s0,15 + 3bc07cc4: 02f4043b mulw s0,s0,a5 + 3bc07cc8: 4785 li a5,1 + 3bc07cca: 08f91c63 bne s2,a5,3bc07d62 + 3bc07cce: 8526 mv a0,s1 + 3bc07cd0: d47ff0ef jal ra,3bc07a16 + 3bc07cd4: 0005079b sext.w a5,a0 + 3bc07cd8: c2b2b737 lui a4,0xc2b2b + 3bc07cdc: e3d7071b addiw a4,a4,-451 + 3bc07ce0: 0491 addi s1,s1,4 + 3bc07ce2: 24f7140b mulaw s0,a4,a5 + 3bc07ce6: 27d4f7b7 lui a5,0x27d4f + 3bc07cea: b2f7879b addiw a5,a5,-1233 + 3bc07cee: 14f4140b srriw s0,s0,15 + 3bc07cf2: 02f4043b mulw s0,s0,a5 + 3bc07cf6: 9814c70b lbuia a4,(s1),1,0 + 3bc07cfa: 165667b7 lui a5,0x16566 + 3bc07cfe: 7b17879b addiw a5,a5,1969 + 3bc07d02: 24f7140b mulaw s0,a4,a5 + 3bc07d06: 9e3787b7 lui a5,0x9e378 + 3bc07d0a: 9b17879b addiw a5,a5,-1615 + 3bc07d0e: 1554140b srriw s0,s0,21 + 3bc07d12: 02f4043b mulw s0,s0,a5 + 3bc07d16: 9814c70b lbuia a4,(s1),1,0 + 3bc07d1a: 165667b7 lui a5,0x16566 + 3bc07d1e: 7b17879b addiw a5,a5,1969 + 3bc07d22: 24f7140b mulaw s0,a4,a5 + 3bc07d26: 9e3787b7 lui a5,0x9e378 + 3bc07d2a: 9b17879b addiw a5,a5,-1615 + 3bc07d2e: 1554140b srriw s0,s0,21 + 3bc07d32: 02f4043b mulw s0,s0,a5 + 3bc07d36: 0004c703 lbu a4,0(s1) + 3bc07d3a: 165667b7 lui a5,0x16566 + 3bc07d3e: 7b17879b addiw a5,a5,1969 + 3bc07d42: 24f7140b mulaw s0,a4,a5 + 3bc07d46: 9e3787b7 lui a5,0x9e378 + 3bc07d4a: 9b17879b addiw a5,a5,-1615 + 3bc07d4e: 1554140b srriw s0,s0,21 + 3bc07d52: 02f4043b mulw s0,s0,a5 + 3bc07d56: 8522 mv a0,s0 + 3bc07d58: b359 j 3bc07ade + 3bc07d5a: 419c lw a5,0(a1) + 3bc07d5c: b705 j 3bc07c7c + 3bc07d5e: 409c lw a5,0(s1) + 3bc07d60: b7a9 j 3bc07caa + 3bc07d62: 409c lw a5,0(s1) + 3bc07d64: bf95 j 3bc07cd8 + +000000003bc07d66 : + 3bc07d66: 711d addi sp,sp,-96 + 3bc07d68: e8a2 sd s0,80(sp) + 3bc07d6a: e0ca sd s2,64(sp) + 3bc07d6c: fc4e sd s3,56(sp) + 3bc07d6e: ec86 sd ra,88(sp) + 3bc07d70: e4a6 sd s1,72(sp) + 3bc07d72: f852 sd s4,48(sp) + 3bc07d74: f456 sd s5,40(sp) + 3bc07d76: f05a sd s6,32(sp) + 3bc07d78: ec5e sd s7,24(sp) + 3bc07d7a: e862 sd s8,16(sp) + 3bc07d7c: e466 sd s9,8(sp) + 3bc07d7e: 00357793 andi a5,a0,3 + 3bc07d82: 892a mv s2,a0 + 3bc07d84: 89ae mv s3,a1 + 3bc07d86: 8432 mv s0,a2 + 3bc07d88: eff1 bnez a5,3bc07e64 + 3bc07d8a: 47bd li a5,15 + 3bc07d8c: 0cb7f663 bgeu a5,a1,3bc07e58 + 3bc07d90: 242347b7 lui a5,0x24234 + 3bc07d94: ff158813 addi a6,a1,-15 # fffffffffffefff1 <__BL2_END__+0xffffffffc43dcbe1> + 3bc07d98: 4287879b addiw a5,a5,1064 + 3bc07d9c: 982a add a6,a6,a0 + 3bc07d9e: 9fb1 addw a5,a5,a2 + 3bc07da0: 61c88537 lui a0,0x61c88 + 3bc07da4: 85ebd637 lui a2,0x85ebd + 3bc07da8: a776061b addiw a2,a2,-1417 + 3bc07dac: 64f5051b addiw a0,a0,1615 + 3bc07db0: 9e3785b7 lui a1,0x9e378 + 3bc07db4: 0086073b addw a4,a2,s0 + 3bc07db8: 9d21 addw a0,a0,s0 + 3bc07dba: 86ca mv a3,s2 + 3bc07dbc: 9b15859b addiw a1,a1,-1615 + 3bc07dc0: 0006a883 lw a7,0(a3) # ffffffffffff0000 <__BL2_END__+0xffffffffc43dcbf0> + 3bc07dc4: 24c8978b mulaw a5,a7,a2 + 3bc07dc8: 0046a883 lw a7,4(a3) + 3bc07dcc: 24c8970b mulaw a4,a7,a2 + 3bc07dd0: 0086a883 lw a7,8(a3) + 3bc07dd4: 1537978b srriw a5,a5,19 + 3bc07dd8: 24c8940b mulaw s0,a7,a2 + 3bc07ddc: 00c6a883 lw a7,12(a3) + 3bc07de0: 1537170b srriw a4,a4,19 + 3bc07de4: 06c1 addi a3,a3,16 + 3bc07de6: 24c8950b mulaw a0,a7,a2 + 3bc07dea: 1534140b srriw s0,s0,19 + 3bc07dee: 1535150b srriw a0,a0,19 + 3bc07df2: 02b787bb mulw a5,a5,a1 + 3bc07df6: 02b7073b mulw a4,a4,a1 + 3bc07dfa: 02b4043b mulw s0,s0,a1 + 3bc07dfe: 02b5053b mulw a0,a0,a1 + 3bc07e02: fb06efe3 bltu a3,a6,3bc07dc0 + 3bc07e06: 00190593 addi a1,s2,1 + 3bc07e0a: 46c1 li a3,16 + 3bc07e0c: 00b86663 bltu a6,a1,3bc07e18 + 3bc07e10: ff098693 addi a3,s3,-16 + 3bc07e14: 9ac1 andi a3,a3,-16 + 3bc07e16: 06c1 addi a3,a3,16 + 3bc07e18: 15f7978b srriw a5,a5,31 + 3bc07e1c: 1597170b srriw a4,a4,25 + 3bc07e20: 9fb9 addw a5,a5,a4 + 3bc07e22: 1544140b srriw s0,s0,20 + 3bc07e26: 9fa1 addw a5,a5,s0 + 3bc07e28: 14e5150b srriw a0,a0,14 + 3bc07e2c: 9936 add s2,s2,a3 + 3bc07e2e: 9d3d addw a0,a0,a5 + 3bc07e30: 4681 li a3,0 + 3bc07e32: 6446 ld s0,80(sp) + 3bc07e34: 60e6 ld ra,88(sp) + 3bc07e36: 64a6 ld s1,72(sp) + 3bc07e38: 7a42 ld s4,48(sp) + 3bc07e3a: 7aa2 ld s5,40(sp) + 3bc07e3c: 7b02 ld s6,32(sp) + 3bc07e3e: 6be2 ld s7,24(sp) + 3bc07e40: 6c42 ld s8,16(sp) + 3bc07e42: 6ca2 ld s9,8(sp) + 3bc07e44: 00f9f613 andi a2,s3,15 + 3bc07e48: 85ca mv a1,s2 + 3bc07e4a: 00a9853b addw a0,s3,a0 + 3bc07e4e: 6906 ld s2,64(sp) + 3bc07e50: 79e2 ld s3,56(sp) + 3bc07e52: 6125 addi sp,sp,96 + 3bc07e54: bd9ff06f j 3bc07a2c + 3bc07e58: 16566537 lui a0,0x16566 + 3bc07e5c: 7b15051b addiw a0,a0,1969 + 3bc07e60: 9d31 addw a0,a0,a2 + 3bc07e62: b7f9 j 3bc07e30 + 3bc07e64: 47bd li a5,15 + 3bc07e66: 0ab7fe63 bgeu a5,a1,3bc07f22 + 3bc07e6a: 242344b7 lui s1,0x24234 + 3bc07e6e: 85ebdab7 lui s5,0x85ebd + 3bc07e72: 61c887b7 lui a5,0x61c88 + 3bc07e76: ff158c93 addi s9,a1,-15 # ffffffff9e377ff1 <__BL2_END__+0xffffffff62764be1> + 3bc07e7a: 4284849b addiw s1,s1,1064 + 3bc07e7e: a77a8a9b addiw s5,s5,-1417 + 3bc07e82: 64f7879b addiw a5,a5,1615 + 3bc07e86: 9e378b37 lui s6,0x9e378 + 3bc07e8a: 9caa add s9,s9,a0 + 3bc07e8c: 9cb1 addw s1,s1,a2 + 3bc07e8e: 00ca8c3b addw s8,s5,a2 + 3bc07e92: 00c78bbb addw s7,a5,a2 + 3bc07e96: 8a2a mv s4,a0 + 3bc07e98: 9b1b0b1b addiw s6,s6,-1615 + 3bc07e9c: 8552 mv a0,s4 + 3bc07e9e: b79ff0ef jal ra,3bc07a16 + 3bc07ea2: 24aa948b mulaw s1,s5,a0 + 3bc07ea6: 004a0513 addi a0,s4,4 + 3bc07eaa: b6dff0ef jal ra,3bc07a16 + 3bc07eae: 8762 mv a4,s8 + 3bc07eb0: 24aa970b mulaw a4,s5,a0 + 3bc07eb4: 008a0513 addi a0,s4,8 + 3bc07eb8: 1534948b srriw s1,s1,19 + 3bc07ebc: 1537170b srriw a4,a4,19 + 3bc07ec0: 03670c3b mulw s8,a4,s6 + 3bc07ec4: b53ff0ef jal ra,3bc07a16 + 3bc07ec8: 24aa940b mulaw s0,s5,a0 + 3bc07ecc: 00ca0513 addi a0,s4,12 + 3bc07ed0: 0a41 addi s4,s4,16 + 3bc07ed2: 1534160b srriw a2,s0,19 + 3bc07ed6: 0366043b mulw s0,a2,s6 + 3bc07eda: b3dff0ef jal ra,3bc07a16 + 3bc07ede: 87de mv a5,s7 + 3bc07ee0: 24aa978b mulaw a5,s5,a0 + 3bc07ee4: 1537978b srriw a5,a5,19 + 3bc07ee8: 036484bb mulw s1,s1,s6 + 3bc07eec: 03678bbb mulw s7,a5,s6 + 3bc07ef0: fb9a66e3 bltu s4,s9,3bc07e9c + 3bc07ef4: 00190713 addi a4,s2,1 + 3bc07ef8: 47c1 li a5,16 + 3bc07efa: 00ece663 bltu s9,a4,3bc07f06 + 3bc07efe: ff098793 addi a5,s3,-16 + 3bc07f02: 9bc1 andi a5,a5,-16 + 3bc07f04: 07c1 addi a5,a5,16 + 3bc07f06: 159c150b srriw a0,s8,25 + 3bc07f0a: 15f4948b srriw s1,s1,31 + 3bc07f0e: 9ca9 addw s1,s1,a0 + 3bc07f10: 1544150b srriw a0,s0,20 + 3bc07f14: 993e add s2,s2,a5 + 3bc07f16: 9d25 addw a0,a0,s1 + 3bc07f18: 14eb940b srriw s0,s7,14 + 3bc07f1c: 9d21 addw a0,a0,s0 + 3bc07f1e: 4685 li a3,1 + 3bc07f20: bf09 j 3bc07e32 + 3bc07f22: 16566537 lui a0,0x16566 + 3bc07f26: 7b15051b addiw a0,a0,1969 + 3bc07f2a: bfcd j 3bc07f1c + +000000003bc07f2c : + 3bc07f2c: 715d addi sp,sp,-80 + 3bc07f2e: e0a2 sd s0,64(sp) + 3bc07f30: fc26 sd s1,56(sp) + 3bc07f32: 842e mv s0,a1 + 3bc07f34: 84aa mv s1,a0 + 3bc07f36: 03000613 li a2,48 + 3bc07f3a: 4581 li a1,0 + 3bc07f3c: 850a mv a0,sp + 3bc07f3e: e486 sd ra,72(sp) + 3bc07f40: ad3f80ef jal ra,3bc00a12 + 3bc07f44: 242347b7 lui a5,0x24234 + 3bc07f48: 4287879b addiw a5,a5,1064 + 3bc07f4c: 9fa1 addw a5,a5,s0 + 3bc07f4e: c43e sw a5,8(sp) + 3bc07f50: 85ebd7b7 lui a5,0x85ebd + 3bc07f54: a777879b addiw a5,a5,-1417 + 3bc07f58: 9fa1 addw a5,a5,s0 + 3bc07f5a: c63e sw a5,12(sp) + 3bc07f5c: 61c887b7 lui a5,0x61c88 + 3bc07f60: 64f7879b addiw a5,a5,1615 + 3bc07f64: c822 sw s0,16(sp) + 3bc07f66: 858a mv a1,sp + 3bc07f68: 9c3d addw s0,s0,a5 + 3bc07f6a: 8526 mv a0,s1 + 3bc07f6c: 02c00613 li a2,44 + 3bc07f70: ca22 sw s0,20(sp) + 3bc07f72: afbf80ef jal ra,3bc00a6c + 3bc07f76: 60a6 ld ra,72(sp) + 3bc07f78: 6406 ld s0,64(sp) + 3bc07f7a: 74e2 ld s1,56(sp) + 3bc07f7c: 4501 li a0,0 + 3bc07f7e: 6161 addi sp,sp,80 + 3bc07f80: 8082 ret + +000000003bc07f82 : + 3bc07f82: 711d addi sp,sp,-96 + 3bc07f84: e0ca sd s2,64(sp) + 3bc07f86: ec86 sd ra,88(sp) + 3bc07f88: e8a2 sd s0,80(sp) + 3bc07f8a: e4a6 sd s1,72(sp) + 3bc07f8c: fc4e sd s3,56(sp) + 3bc07f8e: f852 sd s4,48(sp) + 3bc07f90: f456 sd s5,40(sp) + 3bc07f92: f05a sd s6,32(sp) + 3bc07f94: ec5e sd s7,24(sp) + 3bc07f96: e862 sd s8,16(sp) + 3bc07f98: e466 sd s9,8(sp) + 3bc07f9a: e06a sd s10,0(sp) + 3bc07f9c: 4905 li s2,1 + 3bc07f9e: c5b9 beqz a1,3bc07fec + 3bc07fa0: 4114 lw a3,0(a0) + 3bc07fa2: 842a mv s0,a0 + 3bc07fa4: 01063713 sltiu a4,a2,16 + 3bc07fa8: 00c6853b addw a0,a3,a2 + 3bc07fac: 483d li a6,15 + 3bc07fae: 00a836b3 sltu a3,a6,a0 + 3bc07fb2: 00174713 xori a4,a4,1 + 3bc07fb6: 8f55 or a4,a4,a3 + 3bc07fb8: 4054 lw a3,4(s0) + 3bc07fba: c008 sw a0,0(s0) + 3bc07fbc: 84ae mv s1,a1 + 3bc07fbe: 8f55 or a4,a4,a3 + 3bc07fc0: c058 sw a4,4(s0) + 3bc07fc2: 5418 lw a4,40(s0) + 3bc07fc4: 00c58d33 add s10,a1,a2 + 3bc07fc8: 0006091b sext.w s2,a2 + 3bc07fcc: 7c07350b extu a0,a4,31,0 + 3bc07fd0: 00a607b3 add a5,a2,a0 + 3bc07fd4: 02f86b63 bltu a6,a5,3bc0800a + 3bc07fd8: 01840793 addi a5,s0,24 # 10018 <__BSS_SIZE__+0xa408> + 3bc07fdc: 953e add a0,a0,a5 + 3bc07fde: a8ff80ef jal ra,3bc00a6c + 3bc07fe2: 541c lw a5,40(s0) + 3bc07fe4: 012787bb addw a5,a5,s2 + 3bc07fe8: d41c sw a5,40(s0) + 3bc07fea: 4901 li s2,0 + 3bc07fec: 60e6 ld ra,88(sp) + 3bc07fee: 6446 ld s0,80(sp) + 3bc07ff0: 64a6 ld s1,72(sp) + 3bc07ff2: 79e2 ld s3,56(sp) + 3bc07ff4: 7a42 ld s4,48(sp) + 3bc07ff6: 7aa2 ld s5,40(sp) + 3bc07ff8: 7b02 ld s6,32(sp) + 3bc07ffa: 6be2 ld s7,24(sp) + 3bc07ffc: 6c42 ld s8,16(sp) + 3bc07ffe: 6ca2 ld s9,8(sp) + 3bc08000: 6d02 ld s10,0(sp) + 3bc08002: 854a mv a0,s2 + 3bc08004: 6906 ld s2,64(sp) + 3bc08006: 6125 addi sp,sp,96 + 3bc08008: 8082 ret + 3bc0800a: c355 beqz a4,3bc080ae + 3bc0800c: 4b41 li s6,16 + 3bc0800e: 40eb063b subw a2,s6,a4 + 3bc08012: 01840993 addi s3,s0,24 + 3bc08016: 7c06360b extu a2,a2,31,0 + 3bc0801a: 954e add a0,a0,s3 + 3bc0801c: a51f80ef jal ra,3bc00a6c + 3bc08020: 00842903 lw s2,8(s0) + 3bc08024: 854e mv a0,s3 + 3bc08026: 85ebdab7 lui s5,0x85ebd + 3bc0802a: 9edff0ef jal ra,3bc07a16 + 3bc0802e: a77a8a9b addiw s5,s5,-1417 + 3bc08032: 24aa990b mulaw s2,s5,a0 + 3bc08036: 9e378a37 lui s4,0x9e378 + 3bc0803a: 9b1a0a1b addiw s4,s4,-1615 + 3bc0803e: 00c42983 lw s3,12(s0) + 3bc08042: 01c40513 addi a0,s0,28 + 3bc08046: 1539190b srriw s2,s2,19 + 3bc0804a: 0349093b mulw s2,s2,s4 + 3bc0804e: 01242423 sw s2,8(s0) + 3bc08052: 9c5ff0ef jal ra,3bc07a16 + 3bc08056: 24aa998b mulaw s3,s5,a0 + 3bc0805a: 02040513 addi a0,s0,32 + 3bc0805e: 1539998b srriw s3,s3,19 + 3bc08062: 034989bb mulw s3,s3,s4 + 3bc08066: 01342623 sw s3,12(s0) + 3bc0806a: 01042983 lw s3,16(s0) + 3bc0806e: 9a9ff0ef jal ra,3bc07a16 + 3bc08072: 01442903 lw s2,20(s0) + 3bc08076: 24aa998b mulaw s3,s5,a0 + 3bc0807a: 02440513 addi a0,s0,36 + 3bc0807e: 1539998b srriw s3,s3,19 + 3bc08082: 034989bb mulw s3,s3,s4 + 3bc08086: 01342823 sw s3,16(s0) + 3bc0808a: 98dff0ef jal ra,3bc07a16 + 3bc0808e: 24aa990b mulaw s2,s5,a0 + 3bc08092: 541c lw a5,40(s0) + 3bc08094: 02042423 sw zero,40(s0) + 3bc08098: 40fb0b3b subw s6,s6,a5 + 3bc0809c: 7c0b3b0b extu s6,s6,31,0 + 3bc080a0: 94da add s1,s1,s6 + 3bc080a2: 1539190b srriw s2,s2,19 + 3bc080a6: 0349093b mulw s2,s2,s4 + 3bc080aa: 01242a23 sw s2,20(s0) + 3bc080ae: ff0d0913 addi s2,s10,-16 + 3bc080b2: 08996363 bltu s2,s1,3bc08138 + 3bc080b6: e3844c8b lwd s9,s8,(s0),1,3 + 3bc080ba: e5444a8b lwd s5,s4,(s0),2,3 + 3bc080be: 85ebdbb7 lui s7,0x85ebd + 3bc080c2: 9e378b37 lui s6,0x9e378 + 3bc080c6: 89a6 mv s3,s1 + 3bc080c8: a77b8b9b addiw s7,s7,-1417 + 3bc080cc: 9b1b0b1b addiw s6,s6,-1615 + 3bc080d0: 854e mv a0,s3 + 3bc080d2: 945ff0ef jal ra,3bc07a16 + 3bc080d6: 24ab9c8b mulaw s9,s7,a0 + 3bc080da: 00498513 addi a0,s3,4 + 3bc080de: 939ff0ef jal ra,3bc07a16 + 3bc080e2: 24ab9c0b mulaw s8,s7,a0 + 3bc080e6: 00898513 addi a0,s3,8 + 3bc080ea: 92dff0ef jal ra,3bc07a16 + 3bc080ee: 153c9c8b srriw s9,s9,19 + 3bc080f2: 24ab9a8b mulaw s5,s7,a0 + 3bc080f6: 00c98513 addi a0,s3,12 + 3bc080fa: 91dff0ef jal ra,3bc07a16 + 3bc080fe: 153c1c0b srriw s8,s8,19 + 3bc08102: 09c1 addi s3,s3,16 + 3bc08104: 24ab9a0b mulaw s4,s7,a0 + 3bc08108: 153a9a8b srriw s5,s5,19 + 3bc0810c: 153a1a0b srriw s4,s4,19 + 3bc08110: 036c8cbb mulw s9,s9,s6 + 3bc08114: 036c0c3b mulw s8,s8,s6 + 3bc08118: 036a8abb mulw s5,s5,s6 + 3bc0811c: 036a0a3b mulw s4,s4,s6 + 3bc08120: fb3978e3 bgeu s2,s3,3bc080d0 + 3bc08124: 40990933 sub s2,s2,s1 + 3bc08128: ff097913 andi s2,s2,-16 + 3bc0812c: 0941 addi s2,s2,16 + 3bc0812e: 94ca add s1,s1,s2 + 3bc08130: e3845c8b swd s9,s8,(s0),1,3 + 3bc08134: e5445a8b swd s5,s4,(s0),2,3 + 3bc08138: 4901 li s2,0 + 3bc0813a: eba4f9e3 bgeu s1,s10,3bc07fec + 3bc0813e: 409d0d33 sub s10,s10,s1 + 3bc08142: 866a mv a2,s10 + 3bc08144: 85a6 mv a1,s1 + 3bc08146: 01840513 addi a0,s0,24 + 3bc0814a: 923f80ef jal ra,3bc00a6c + 3bc0814e: 03a42423 sw s10,40(s0) + 3bc08152: bd69 j 3bc07fec + +000000003bc08154 : + 3bc08154: 415c lw a5,4(a0) + 3bc08156: 4918 lw a4,16(a0) + 3bc08158: cb8d beqz a5,3bc0818a + 3bc0815a: 451c lw a5,8(a0) + 3bc0815c: 4554 lw a3,12(a0) + 3bc0815e: 1547170b srriw a4,a4,20 + 3bc08162: 15f7978b srriw a5,a5,31 + 3bc08166: 1596968b srriw a3,a3,25 + 3bc0816a: 9fb5 addw a5,a5,a3 + 3bc0816c: 9fb9 addw a5,a5,a4 + 3bc0816e: 4958 lw a4,20(a0) + 3bc08170: 14e7170b srriw a4,a4,14 + 3bc08174: 85aa mv a1,a0 + 3bc08176: 9fb9 addw a5,a5,a4 + 3bc08178: 5ac5c70b lwia a4,(a1),12,1 + 3bc0817c: 02856603 lwu a2,40(a0) # 16566028 + 3bc08180: 4681 li a3,0 + 3bc08182: 00f7053b addw a0,a4,a5 + 3bc08186: 8a7ff06f j 3bc07a2c + 3bc0818a: 165667b7 lui a5,0x16566 + 3bc0818e: 7b17879b addiw a5,a5,1969 + 3bc08192: b7cd j 3bc08174 + +000000003bc08194 : + 3bc08194: 1141 addi sp,sp,-16 + 3bc08196: e022 sd s0,0(sp) + 3bc08198: 842a mv s0,a0 + 3bc0819a: 00003517 auipc a0,0x3 + 3bc0819e: 05e50513 addi a0,a0,94 # 3bc0b1f8 + 3bc081a2: e406 sd ra,8(sp) + 3bc081a4: 9b4f80ef jal ra,3bc00358 + 3bc081a8: 400c lw a1,0(s0) + 3bc081aa: 00003517 auipc a0,0x3 + 3bc081ae: 05e50513 addi a0,a0,94 # 3bc0b208 + 3bc081b2: 9a6f80ef jal ra,3bc00358 + 3bc081b6: 012000ef jal ra,3bc081c8 + 3bc081ba: 296000ef jal ra,3bc08450 + 3bc081be: 60a2 ld ra,8(sp) + 3bc081c0: 6402 ld s0,0(sp) + 3bc081c2: 4501 li a0,0 + 3bc081c4: 0141 addi sp,sp,16 + 3bc081c6: 8082 ret + +000000003bc081c8 : + 3bc081c8: 030007b7 lui a5,0x3000 + 3bc081cc: 43cc lw a1,4(a5) + 3bc081ce: 7139 addi sp,sp,-64 + 3bc081d0: 030507b7 lui a5,0x3050 + 3bc081d4: 79c5b58b extu a1,a1,30,28 + 3bc081d8: 00003517 auipc a0,0x3 + 3bc081dc: 04850513 addi a0,a0,72 # 3bc0b220 + 3bc081e0: f822 sd s0,48(sp) + 3bc081e2: f426 sd s1,40(sp) + 3bc081e4: f04a sd s2,32(sp) + 3bc081e6: ec4e sd s3,24(sp) + 3bc081e8: fc06 sd ra,56(sp) + 3bc081ea: 1087a983 lw s3,264(a5) # 3050108 <__BSS_SIZE__+0x304a4f8> + 3bc081ee: e42e sd a1,8(sp) + 3bc081f0: 968f80ef jal ra,3bc00358 + 3bc081f4: 65a2 ld a1,8(sp) + 3bc081f6: 00003717 auipc a4,0x3 + 3bc081fa: 10e70713 addi a4,a4,270 # 3bc0b304 + 3bc081fe: 0000b917 auipc s2,0xb + 3bc08202: 21090913 addi s2,s2,528 # 3bc1340e + 3bc08206: 44b7478b lrw a5,a4,a1,2 + 3bc0820a: 0000b497 auipc s1,0xb + 3bc0820e: 20248493 addi s1,s1,514 # 3bc1340c + 3bc08212: 0000b417 auipc s0,0xb + 3bc08216: 1fd40413 addi s0,s0,509 # 3bc1340f + 3bc0821a: 97ba add a5,a5,a4 + 3bc0821c: 8782 jr a5 + 3bc0821e: 478d li a5,3 + 3bc08220: 4709 li a4,2 + 3bc08222: 00f90023 sb a5,0(s2) + 3bc08226: 00e48023 sb a4,0(s1) + 3bc0822a: 00f40023 sb a5,0(s0) + 3bc0822e: a825 j 3bc08266 + 3bc08230: 4791 li a5,4 + 3bc08232: 00f90023 sb a5,0(s2) + 3bc08236: 4785 li a5,1 + 3bc08238: 00f48023 sb a5,0(s1) + 3bc0823c: 478d li a5,3 + 3bc0823e: b7f5 j 3bc0822a + 3bc08240: 00003517 auipc a0,0x3 + 3bc08244: ff050513 addi a0,a0,-16 # 3bc0b230 + 3bc08248: 910f80ef jal ra,3bc00358 + 3bc0824c: 2981 sext.w s3,s3 + 3bc0824e: 6559b78b extu a5,s3,25,21 + 3bc08252: 00f90023 sb a5,0(s2) + 3bc08256: 71a9b78b extu a5,s3,28,26 + 3bc0825a: 01d9d99b srliw s3,s3,0x1d + 3bc0825e: 00f48023 sb a5,0(s1) + 3bc08262: 01340023 sb s3,0(s0) + 3bc08266: 00044583 lbu a1,0(s0) + 3bc0826a: 00094683 lbu a3,0(s2) + 3bc0826e: 0004c603 lbu a2,0(s1) + 3bc08272: 00003517 auipc a0,0x3 + 3bc08276: fe650513 addi a0,a0,-26 # 3bc0b258 + 3bc0827a: 8def80ef jal ra,3bc00358 + 3bc0827e: 00094583 lbu a1,0(s2) + 3bc08282: 4725 li a4,9 + 3bc08284: fff5879b addiw a5,a1,-1 + 3bc08288: 0ff7f793 andi a5,a5,255 + 3bc0828c: 08f76963 bltu a4,a5,3bc0831e + 3bc08290: 00003717 auipc a4,0x3 + 3bc08294: 09470713 addi a4,a4,148 # 3bc0b324 + 3bc08298: 44f7478b lrw a5,a4,a5,2 + 3bc0829c: 0000b917 auipc s2,0xb + 3bc082a0: 17190913 addi s2,s2,369 # 3bc1340d + 3bc082a4: 97ba add a5,a5,a4 + 3bc082a6: 8782 jr a5 + 3bc082a8: 478d li a5,3 + 3bc082aa: 00f90023 sb a5,0(s2) + 3bc082ae: 4789 li a5,2 + 3bc082b0: 00f48023 sb a5,0(s1) + 3bc082b4: 4785 li a5,1 + 3bc082b6: bf95 j 3bc0822a + 3bc082b8: 4791 li a5,4 + 3bc082ba: 00f90023 sb a5,0(s2) + 3bc082be: 4785 li a5,1 + 3bc082c0: 00f48023 sb a5,0(s1) + 3bc082c4: b79d j 3bc0822a + 3bc082c6: 00003517 auipc a0,0x3 + 3bc082ca: f7250513 addi a0,a0,-142 # 3bc0b238 + 3bc082ce: 88af80ef jal ra,3bc00358 + 3bc082d2: bf51 j 3bc08266 + 3bc082d4: 00003517 auipc a0,0x3 + 3bc082d8: f9450513 addi a0,a0,-108 # 3bc0b268 + 3bc082dc: 87cf80ef jal ra,3bc00358 + 3bc082e0: 4785 li a5,1 + 3bc082e2: 00f90023 sb a5,0(s2) + 3bc082e6: 0004c583 lbu a1,0(s1) + 3bc082ea: 478d li a5,3 + 3bc082ec: 0cf58963 beq a1,a5,3bc083be + 3bc082f0: 04b7e263 bltu a5,a1,3bc08334 + 3bc082f4: 4485 li s1,1 + 3bc082f6: 04958a63 beq a1,s1,3bc0834a + 3bc082fa: 4789 li a5,2 + 3bc082fc: 0af58463 beq a1,a5,3bc083a4 + 3bc08300: 00003517 auipc a0,0x3 + 3bc08304: fb050513 addi a0,a0,-80 # 3bc0b2b0 + 3bc08308: 850f80ef jal ra,3bc00358 + 3bc0830c: a82d j 3bc08346 + 3bc0830e: 00003517 auipc a0,0x3 + 3bc08312: f6250513 addi a0,a0,-158 # 3bc0b270 + 3bc08316: 842f80ef jal ra,3bc00358 + 3bc0831a: 4789 li a5,2 + 3bc0831c: b7d9 j 3bc082e2 + 3bc0831e: 00003517 auipc a0,0x3 + 3bc08322: f5a50513 addi a0,a0,-166 # 3bc0b278 + 3bc08326: 832f80ef jal ra,3bc00358 + 3bc0832a: 0000b797 auipc a5,0xb + 3bc0832e: 0e0781a3 sb zero,227(a5) # 3bc1340d + 3bc08332: bf55 j 3bc082e6 + 3bc08334: 4791 li a5,4 + 3bc08336: 00003517 auipc a0,0x3 + 3bc0833a: f7250513 addi a0,a0,-142 # 3bc0b2a8 + 3bc0833e: fcf591e3 bne a1,a5,3bc08300 + 3bc08342: 816f80ef jal ra,3bc00358 + 3bc08346: 4781 li a5,0 + 3bc08348: a839 j 3bc08366 + 3bc0834a: 00003517 auipc a0,0x3 + 3bc0834e: f4650513 addi a0,a0,-186 # 3bc0b290 + 3bc08352: e42e sd a1,8(sp) + 3bc08354: 804f80ef jal ra,3bc00358 + 3bc08358: 00044783 lbu a5,0(s0) + 3bc0835c: 65a2 ld a1,8(sp) + 3bc0835e: 06b78563 beq a5,a1,3bc083c8 + 3bc08362: 67e1 lui a5,0x18 + 3bc08364: 07ad addi a5,a5,11 + 3bc08366: 03000737 lui a4,0x3000 + 3bc0836a: 08f72623 sw a5,140(a4) # 300008c <__BSS_SIZE__+0x2ffa47c> + 3bc0836e: 00044583 lbu a1,0(s0) + 3bc08372: 4789 li a5,2 + 3bc08374: 06f58c63 beq a1,a5,3bc083ec + 3bc08378: 478d li a5,3 + 3bc0837a: 04f58d63 beq a1,a5,3bc083d4 + 3bc0837e: 4785 li a5,1 + 3bc08380: 00003517 auipc a0,0x3 + 3bc08384: f4850513 addi a0,a0,-184 # 3bc0b2c8 + 3bc08388: 04f58a63 beq a1,a5,3bc083dc + 3bc0838c: 7442 ld s0,48(sp) + 3bc0838e: 70e2 ld ra,56(sp) + 3bc08390: 74a2 ld s1,40(sp) + 3bc08392: 7902 ld s2,32(sp) + 3bc08394: 69e2 ld s3,24(sp) + 3bc08396: 00003517 auipc a0,0x3 + 3bc0839a: f5a50513 addi a0,a0,-166 # 3bc0b2f0 + 3bc0839e: 6121 addi sp,sp,64 + 3bc083a0: fb9f706f j 3bc00358 + 3bc083a4: 00003517 auipc a0,0x3 + 3bc083a8: ef450513 addi a0,a0,-268 # 3bc0b298 + 3bc083ac: fadf70ef jal ra,3bc00358 + 3bc083b0: 00044783 lbu a5,0(s0) + 3bc083b4: 00978d63 beq a5,s1,3bc083ce + 3bc083b8: 67e1 lui a5,0x18 + 3bc083ba: 07ed addi a5,a5,27 + 3bc083bc: b76d j 3bc08366 + 3bc083be: 00003517 auipc a0,0x3 + 3bc083c2: ee250513 addi a0,a0,-286 # 3bc0b2a0 + 3bc083c6: bfb5 j 3bc08342 + 3bc083c8: 67e1 lui a5,0x18 + 3bc083ca: 07b1 addi a5,a5,12 + 3bc083cc: bf69 j 3bc08366 + 3bc083ce: 67e1 lui a5,0x18 + 3bc083d0: 07f1 addi a5,a5,28 + 3bc083d2: bf51 j 3bc08366 + 3bc083d4: 00003517 auipc a0,0x3 + 3bc083d8: f0450513 addi a0,a0,-252 # 3bc0b2d8 + 3bc083dc: 7442 ld s0,48(sp) + 3bc083de: 70e2 ld ra,56(sp) + 3bc083e0: 74a2 ld s1,40(sp) + 3bc083e2: 7902 ld s2,32(sp) + 3bc083e4: 69e2 ld s3,24(sp) + 3bc083e6: 6121 addi sp,sp,64 + 3bc083e8: f71f706f j 3bc00358 + 3bc083ec: 00003517 auipc a0,0x3 + 3bc083f0: efc50513 addi a0,a0,-260 # 3bc0b2e8 + 3bc083f4: b7e5 j 3bc083dc + +000000003bc083f6 : + 3bc083f6: 0000b517 auipc a0,0xb + 3bc083fa: 01854503 lbu a0,24(a0) # 3bc1340e + 3bc083fe: 8082 ret + +000000003bc08400 : + 3bc08400: 00030737 lui a4,0x30 + 3bc08404: 080087b7 lui a5,0x8008 + 3bc08408: 0705 addi a4,a4,1 + 3bc0840a: c398 sw a4,0(a5) + 3bc0840c: 08078693 addi a3,a5,128 # 8008080 + 3bc08410: c298 sw a4,0(a3) + 3bc08412: 10078693 addi a3,a5,256 + 3bc08416: c298 sw a4,0(a3) + 3bc08418: 18078693 addi a3,a5,384 + 3bc0841c: c298 sw a4,0(a3) + 3bc0841e: 20078693 addi a3,a5,512 + 3bc08422: c298 sw a4,0(a3) + 3bc08424: 28078693 addi a3,a5,640 + 3bc08428: c298 sw a4,0(a3) + 3bc0842a: 30078693 addi a3,a5,768 + 3bc0842e: c298 sw a4,0(a3) + 3bc08430: 38078693 addi a3,a5,896 + 3bc08434: c298 sw a4,0(a3) + 3bc08436: 40078693 addi a3,a5,1024 + 3bc0843a: c298 sw a4,0(a3) + 3bc0843c: 48078693 addi a3,a5,1152 + 3bc08440: c298 sw a4,0(a3) + 3bc08442: 50078693 addi a3,a5,1280 + 3bc08446: c298 sw a4,0(a3) + 3bc08448: 58078793 addi a5,a5,1408 + 3bc0844c: c398 sw a4,0(a5) + 3bc0844e: 8082 ret + +000000003bc08450 : + 3bc08450: 7179 addi sp,sp,-48 + 3bc08452: f406 sd ra,40(sp) + 3bc08454: 789000ef jal ra,3bc093dc + 3bc08458: 344010ef jal ra,3bc0979c + 3bc0845c: 0800a7b7 lui a5,0x800a + 3bc08460: 0207a023 sw zero,32(a5) # 800a020 + 3bc08464: 007797b7 lui a5,0x779 + 3bc08468: 03000737 lui a4,0x3000 + 3bc0846c: 8aa78793 addi a5,a5,-1878 # 7788aa <__BSS_SIZE__+0x772c9a> + 3bc08470: 1cf72c23 sw a5,472(a4) # 30001d8 <__BSS_SIZE__+0x2ffa5c8> + 3bc08474: 6789 lui a5,0x2 + 3bc08476: 29978793 addi a5,a5,665 # 2299 <__BSS_SIZE__-0x3977> + 3bc0847a: 1cf72e23 sw a5,476(a4) + 3bc0847e: 794010ef jal ra,3bc09c12 + 3bc08482: 1cb000ef jal ra,3bc08e4c + 3bc08486: 7db000ef jal ra,3bc09460 + 3bc0848a: 717000ef jal ra,3bc093a0 + 3bc0848e: 1df000ef jal ra,3bc08e6c + 3bc08492: 7c8000ef jal ra,3bc08c5a + 3bc08496: 0c3000ef jal ra,3bc08d58 + 3bc0849a: 101000ef jal ra,3bc08d9a + 3bc0849e: 049000ef jal ra,3bc08ce6 + 3bc084a2: 07f000ef jal ra,3bc08d20 + 3bc084a6: 121000ef jal ra,3bc08dc6 + 3bc084aa: 1ca000ef jal ra,3bc08674 + 3bc084ae: 0810 addi a2,sp,16 + 3bc084b0: 082c addi a1,sp,24 + 3bc084b2: 0068 addi a0,sp,12 + 3bc084b4: 4ae000ef jal ra,3bc08962 + 3bc084b8: 47b2 lw a5,12(sp) + 3bc084ba: e385 bnez a5,3bc084da + 3bc084bc: 00003517 auipc a0,0x3 + 3bc084c0: e9450513 addi a0,a0,-364 # 3bc0b350 + 3bc084c4: e95f70ef jal ra,3bc00358 + 3bc084c8: fac1468b ldd a3,a2,(sp),1,4 + 3bc084cc: 45b2 lw a1,12(sp) + 3bc084ce: 00003517 auipc a0,0x3 + 3bc084d2: e9a50513 addi a0,a0,-358 # 3bc0b368 + 3bc084d6: e83f70ef jal ra,3bc00358 + 3bc084da: 4ee010ef jal ra,3bc099c8 + 3bc084de: 16d000ef jal ra,3bc08e4a + 3bc084e2: 192000ef jal ra,3bc08674 + 3bc084e6: 0810 addi a2,sp,16 + 3bc084e8: 082c addi a1,sp,24 + 3bc084ea: 0068 addi a0,sp,12 + 3bc084ec: 476000ef jal ra,3bc08962 + 3bc084f0: 47b2 lw a5,12(sp) + 3bc084f2: e385 bnez a5,3bc08512 + 3bc084f4: 00003517 auipc a0,0x3 + 3bc084f8: e5c50513 addi a0,a0,-420 # 3bc0b350 + 3bc084fc: e5df70ef jal ra,3bc00358 + 3bc08500: fac1468b ldd a3,a2,(sp),1,4 + 3bc08504: 45b2 lw a1,12(sp) + 3bc08506: 00003517 auipc a0,0x3 + 3bc0850a: e6250513 addi a0,a0,-414 # 3bc0b368 + 3bc0850e: e4bf70ef jal ra,3bc00358 + 3bc08512: 2d7000ef jal ra,3bc08fe8 + 3bc08516: 15e000ef jal ra,3bc08674 + 3bc0851a: 0810 addi a2,sp,16 + 3bc0851c: 082c addi a1,sp,24 + 3bc0851e: 0068 addi a0,sp,12 + 3bc08520: 442000ef jal ra,3bc08962 + 3bc08524: 47b2 lw a5,12(sp) + 3bc08526: e385 bnez a5,3bc08546 + 3bc08528: 00003517 auipc a0,0x3 + 3bc0852c: e2850513 addi a0,a0,-472 # 3bc0b350 + 3bc08530: e29f70ef jal ra,3bc00358 + 3bc08534: fac1468b ldd a3,a2,(sp),1,4 + 3bc08538: 45b2 lw a1,12(sp) + 3bc0853a: 00003517 auipc a0,0x3 + 3bc0853e: e2e50513 addi a0,a0,-466 # 3bc0b368 + 3bc08542: e17f70ef jal ra,3bc00358 + 3bc08546: 4589 li a1,2 + 3bc08548: 4505 li a0,1 + 3bc0854a: 4d5000ef jal ra,3bc0921e + 3bc0854e: 4585 li a1,1 + 3bc08550: 4505 li a0,1 + 3bc08552: 4cd000ef jal ra,3bc0921e + 3bc08556: 4581 li a1,0 + 3bc08558: 4505 li a0,1 + 3bc0855a: 4c5000ef jal ra,3bc0921e + 3bc0855e: 116000ef jal ra,3bc08674 + 3bc08562: 0810 addi a2,sp,16 + 3bc08564: 082c addi a1,sp,24 + 3bc08566: 0068 addi a0,sp,12 + 3bc08568: 3fa000ef jal ra,3bc08962 + 3bc0856c: 08000737 lui a4,0x8000 + 3bc08570: 08c72783 lw a5,140(a4) # 800008c + 3bc08574: 4505 li a0,1 + 3bc08576: 2781 sext.w a5,a5 + 3bc08578: f0f7f793 andi a5,a5,-241 + 3bc0857c: 0107e793 ori a5,a5,16 + 3bc08580: 0000b697 auipc a3,0xb + 3bc08584: e6f6a823 sw a5,-400(a3) # 3bc133f0 + 3bc08588: 08f72623 sw a5,140(a4) + 3bc0858c: 323000ef jal ra,3bc090ae + 3bc08590: 0e4000ef jal ra,3bc08674 + 3bc08594: 0810 addi a2,sp,16 + 3bc08596: 082c addi a1,sp,24 + 3bc08598: 0068 addi a0,sp,12 + 3bc0859a: 3c8000ef jal ra,3bc08962 + 3bc0859e: 3fc010ef jal ra,3bc0999a + 3bc085a2: 00b10513 addi a0,sp,11 + 3bc085a6: 615000ef jal ra,3bc093ba + 3bc085aa: 00b14503 lbu a0,11(sp) + 3bc085ae: 448010ef jal ra,3bc099f6 + 3bc085b2: 00b14503 lbu a0,11(sp) + 3bc085b6: 1e4010ef jal ra,3bc0979a + 3bc085ba: 1bf000ef jal ra,3bc08f78 + 3bc085be: 0b6000ef jal ra,3bc08674 + 3bc085c2: 0810 addi a2,sp,16 + 3bc085c4: 082c addi a1,sp,24 + 3bc085c6: 0068 addi a0,sp,12 + 3bc085c8: 39a000ef jal ra,3bc08962 + 3bc085cc: 47b2 lw a5,12(sp) + 3bc085ce: eb81 bnez a5,3bc085de + 3bc085d0: 00003517 auipc a0,0x3 + 3bc085d4: dd850513 addi a0,a0,-552 # 3bc0b3a8 + 3bc085d8: d81f70ef jal ra,3bc00358 + 3bc085dc: a001 j 3bc085dc + 3bc085de: 0e4000ef jal ra,3bc086c2 + 3bc085e2: 0810 addi a2,sp,16 + 3bc085e4: 082c addi a1,sp,24 + 3bc085e6: 0068 addi a0,sp,12 + 3bc085e8: 37a000ef jal ra,3bc08962 + 3bc085ec: 47b2 lw a5,12(sp) + 3bc085ee: eb81 bnez a5,3bc085fe + 3bc085f0: 00003517 auipc a0,0x3 + 3bc085f4: db850513 addi a0,a0,-584 # 3bc0b3a8 + 3bc085f8: d61f70ef jal ra,3bc00358 + 3bc085fc: a001 j 3bc085fc + 3bc085fe: 00003517 auipc a0,0x3 + 3bc08602: dc250513 addi a0,a0,-574 # 3bc0b3c0 + 3bc08606: d53f70ef jal ra,3bc00358 + 3bc0860a: 080087b7 lui a5,0x8008 + 3bc0860e: 4595 li a1,5 + 3bc08610: cbac sw a1,80(a5) + 3bc08612: 08078613 addi a2,a5,128 # 8008080 + 3bc08616: 01000737 lui a4,0x1000 + 3bc0861a: ca2c sw a1,80(a2) + 3bc0861c: 10070713 addi a4,a4,256 # 1000100 <__BSS_SIZE__+0xffa4f0> + 3bc08620: c398 sw a4,0(a5) + 3bc08622: 43d4 lw a3,4(a5) + 3bc08624: 2681 sext.w a3,a3 + 3bc08626: c006f693 andi a3,a3,-1024 + 3bc0862a: c3d4 sw a3,4(a5) + 3bc0862c: c218 sw a4,0(a2) + 3bc0862e: 4254 lw a3,4(a2) + 3bc08630: 2681 sext.w a3,a3 + 3bc08632: c006f693 andi a3,a3,-1024 + 3bc08636: c254 sw a3,4(a2) + 3bc08638: 40078613 addi a2,a5,1024 + 3bc0863c: ca2c sw a1,80(a2) + 3bc0863e: 48078793 addi a5,a5,1152 + 3bc08642: cbac sw a1,80(a5) + 3bc08644: c218 sw a4,0(a2) + 3bc08646: 4254 lw a3,4(a2) + 3bc08648: 2681 sext.w a3,a3 + 3bc0864a: c006f693 andi a3,a3,-1024 + 3bc0864e: c254 sw a3,4(a2) + 3bc08650: c398 sw a4,0(a5) + 3bc08652: 43d8 lw a4,4(a5) + 3bc08654: 2701 sext.w a4,a4 + 3bc08656: c0077713 andi a4,a4,-1024 + 3bc0865a: c3d8 sw a4,4(a5) + 3bc0865c: 0800a737 lui a4,0x800a + 3bc08660: 4b5c lw a5,20(a4) + 3bc08662: 2781 sext.w a5,a5 + 3bc08664: 1007e793 ori a5,a5,256 + 3bc08668: cb5c sw a5,20(a4) + 3bc0866a: d97ff0ef jal ra,3bc08400 + 3bc0866e: 70a2 ld ra,40(sp) + 3bc08670: 6145 addi sp,sp,48 + 3bc08672: 8082 ret + +000000003bc08674 : + 3bc08674: 00060737 lui a4,0x60 + 3bc08678: 080107b7 lui a5,0x8010 + 3bc0867c: 0719 addi a4,a4,6 + 3bc0867e: c398 sw a4,0(a5) + 3bc08680: 80200737 lui a4,0x80200 + 3bc08684: 1101 addi sp,sp,-32 + 3bc08686: a0070713 addi a4,a4,-1536 # ffffffff801ffa00 <__BL2_END__+0xffffffff445ec5f0> + 3bc0868a: c63a sw a4,12(sp) + 3bc0868c: 40200737 lui a4,0x40200 + 3bc08690: e802 sd zero,16(sp) + 3bc08692: ec02 sd zero,24(sp) + 3bc08694: a0070713 addi a4,a4,-1536 # 401ffa00 <__BL2_END__+0x45ec5f0> + 3bc08698: c3b8 sw a4,64(a5) + 3bc0869a: 4732 lw a4,12(sp) + 3bc0869c: c3f8 sw a4,68(a5) + 3bc0869e: 4742 lw a4,16(sp) + 3bc086a0: c7b8 sw a4,72(a5) + 3bc086a2: 4752 lw a4,20(sp) + 3bc086a4: c7f8 sw a4,76(a5) + 3bc086a6: 4762 lw a4,24(sp) + 3bc086a8: cbb8 sw a4,80(a5) + 3bc086aa: 4772 lw a4,28(sp) + 3bc086ac: cbf8 sw a4,84(a5) + 3bc086ae: 00100737 lui a4,0x100 + 3bc086b2: 0007a823 sw zero,16(a5) # 8010010 + 3bc086b6: 177d addi a4,a4,-1 + 3bc086b8: cbd8 sw a4,20(a5) + 3bc086ba: 4711 li a4,4 + 3bc086bc: cf98 sw a4,24(a5) + 3bc086be: 6105 addi sp,sp,32 + 3bc086c0: 8082 ret + +000000003bc086c2 : + 3bc086c2: 000c0737 lui a4,0xc0 + 3bc086c6: 080107b7 lui a5,0x8010 + 3bc086ca: 0731 addi a4,a4,12 + 3bc086cc: c398 sw a4,0(a5) + 3bc086ce: 6705 lui a4,0x1 + 3bc086d0: f0570713 addi a4,a4,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc086d4: d3d8 sw a4,36(a5) + 3bc086d6: 80103737 lui a4,0x80103 + 3bc086da: 1101 addi sp,sp,-32 + 3bc086dc: c0f70713 addi a4,a4,-1009 # ffffffff80102c0f <__BL2_END__+0xffffffff444ef7ff> + 3bc086e0: c63a sw a4,12(sp) + 3bc086e2: c0000737 lui a4,0xc0000 + 3bc086e6: 0705 addi a4,a4,1 + 3bc086e8: 1702 slli a4,a4,0x20 + 3bc086ea: e83a sd a4,16(sp) + 3bc086ec: 40103737 lui a4,0x40103 + 3bc086f0: ec02 sd zero,24(sp) + 3bc086f2: c0f70713 addi a4,a4,-1009 # 40102c0f <__BL2_END__+0x44ef7ff> + 3bc086f6: c3b8 sw a4,64(a5) + 3bc086f8: 4732 lw a4,12(sp) + 3bc086fa: c3f8 sw a4,68(a5) + 3bc086fc: 4742 lw a4,16(sp) + 3bc086fe: c7b8 sw a4,72(a5) + 3bc08700: 4752 lw a4,20(sp) + 3bc08702: c7f8 sw a4,76(a5) + 3bc08704: 4762 lw a4,24(sp) + 3bc08706: cbb8 sw a4,80(a5) + 3bc08708: 4772 lw a4,28(sp) + 3bc0870a: cbf8 sw a4,84(a5) + 3bc0870c: 00100737 lui a4,0x100 + 3bc08710: 0007a823 sw zero,16(a5) # 8010010 + 3bc08714: 177d addi a4,a4,-1 + 3bc08716: cbd8 sw a4,20(a5) + 3bc08718: 02000713 li a4,32 + 3bc0871c: cf98 sw a4,24(a5) + 3bc0871e: 6105 addi sp,sp,32 + 3bc08720: 8082 ret + +000000003bc08722 : + 3bc08722: 00060737 lui a4,0x60 + 3bc08726: 080107b7 lui a5,0x8010 + 3bc0872a: 0719 addi a4,a4,6 + 3bc0872c: c398 sw a4,0(a5) + 3bc0872e: 1101 addi sp,sp,-32 + 3bc08730: 80004737 lui a4,0x80004 + 3bc08734: e802 sd zero,16(sp) + 3bc08736: ec02 sd zero,24(sp) + 3bc08738: c602 sw zero,12(sp) + 3bc0873a: a0070713 addi a4,a4,-1536 # ffffffff80003a00 <__BL2_END__+0xffffffff443f05f0> + 3bc0873e: c3b8 sw a4,64(a5) + 3bc08740: 4732 lw a4,12(sp) + 3bc08742: c3f8 sw a4,68(a5) + 3bc08744: 4742 lw a4,16(sp) + 3bc08746: c7b8 sw a4,72(a5) + 3bc08748: 4752 lw a4,20(sp) + 3bc0874a: c7f8 sw a4,76(a5) + 3bc0874c: 4762 lw a4,24(sp) + 3bc0874e: cbb8 sw a4,80(a5) + 3bc08750: 4772 lw a4,28(sp) + 3bc08752: cbf8 sw a4,84(a5) + 3bc08754: 00100737 lui a4,0x100 + 3bc08758: 0007a823 sw zero,16(a5) # 8010010 + 3bc0875c: 177d addi a4,a4,-1 + 3bc0875e: cbd8 sw a4,20(a5) + 3bc08760: 4711 li a4,4 + 3bc08762: cf98 sw a4,24(a5) + 3bc08764: 6105 addi sp,sp,32 + 3bc08766: 8082 ret + +000000003bc08768 : + 3bc08768: 000607b7 lui a5,0x60 + 3bc0876c: 08010737 lui a4,0x8010 + 3bc08770: 0799 addi a5,a5,6 + 3bc08772: c31c sw a5,0(a4) + 3bc08774: 1101 addi sp,sp,-32 + 3bc08776: e519 bnez a0,3bc08784 + 3bc08778: 200017b7 lui a5,0x20001 + 3bc0877c: 078a slli a5,a5,0x2 + 3bc0877e: a0078793 addi a5,a5,-1536 # 20000a00 + 3bc08782: a0ad j 3bc087ec + 3bc08784: 4785 li a5,1 + 3bc08786: 04f51c63 bne a0,a5,3bc087de + 3bc0878a: 6785 lui a5,0x1 + 3bc0878c: f0578793 addi a5,a5,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc08790: d35c sw a5,36(a4) + 3bc08792: 00003797 auipc a5,0x3 + 3bc08796: c467b783 ld a5,-954(a5) # 3bc0b3d8 + 3bc0879a: e43e sd a5,8(sp) + 3bc0879c: 00003797 auipc a5,0x3 + 3bc087a0: c447b783 ld a5,-956(a5) # 3bc0b3e0 + 3bc087a4: e83e sd a5,16(sp) + 3bc087a6: 478d li a5,3 + 3bc087a8: 07fa slli a5,a5,0x1e + 3bc087aa: 0785 addi a5,a5,1 + 3bc087ac: ec3e sd a5,24(sp) + 3bc087ae: 4722 lw a4,8(sp) + 3bc087b0: 080107b7 lui a5,0x8010 + 3bc087b4: c3b8 sw a4,64(a5) + 3bc087b6: 4732 lw a4,12(sp) + 3bc087b8: c3f8 sw a4,68(a5) + 3bc087ba: 4742 lw a4,16(sp) + 3bc087bc: c7b8 sw a4,72(a5) + 3bc087be: 4752 lw a4,20(sp) + 3bc087c0: c7f8 sw a4,76(a5) + 3bc087c2: 4762 lw a4,24(sp) + 3bc087c4: cbb8 sw a4,80(a5) + 3bc087c6: 4772 lw a4,28(sp) + 3bc087c8: cbf8 sw a4,84(a5) + 3bc087ca: 00100737 lui a4,0x100 + 3bc087ce: 0007a823 sw zero,16(a5) # 8010010 + 3bc087d2: 177d addi a4,a4,-1 + 3bc087d4: cbd8 sw a4,20(a5) + 3bc087d6: 4711 li a4,4 + 3bc087d8: cf98 sw a4,24(a5) + 3bc087da: 6105 addi sp,sp,32 + 3bc087dc: 8082 ret + 3bc087de: 4789 li a5,2 + 3bc087e0: 00f51a63 bne a0,a5,3bc087f4 + 3bc087e4: 00003797 auipc a5,0x3 + 3bc087e8: c047b783 ld a5,-1020(a5) # 3bc0b3e8 + 3bc087ec: e43e sd a5,8(sp) + 3bc087ee: e802 sd zero,16(sp) + 3bc087f0: ec02 sd zero,24(sp) + 3bc087f2: bf75 j 3bc087ae + 3bc087f4: 47c9 li a5,18 + 3bc087f6: 02f51563 bne a0,a5,3bc08820 + 3bc087fa: 080006b7 lui a3,0x8000 + 3bc087fe: 0846a783 lw a5,132(a3) # 8000084 + 3bc08802: 6709 lui a4,0x2 + 3bc08804: f0070713 addi a4,a4,-256 # 1f00 <__BSS_SIZE__-0x3d10> + 3bc08808: 2781 sext.w a5,a5 + 3bc0880a: 9b81 andi a5,a5,-32 + 3bc0880c: 01d7e793 ori a5,a5,29 + 3bc08810: 8fd9 or a5,a5,a4 + 3bc08812: 0000b717 auipc a4,0xb + 3bc08816: bcf72f23 sw a5,-1058(a4) # 3bc133f0 + 3bc0881a: 08f6a223 sw a5,132(a3) + 3bc0881e: b7d9 j 3bc087e4 + 3bc08820: 47c1 li a5,16 + 3bc08822: f8f516e3 bne a0,a5,3bc087ae + 3bc08826: 08000637 lui a2,0x8000 + 3bc0882a: 08462783 lw a5,132(a2) # 8000084 + 3bc0882e: 6689 lui a3,0x2 + 3bc08830: f0068693 addi a3,a3,-256 # 1f00 <__BSS_SIZE__-0x3d10> + 3bc08834: 2781 sext.w a5,a5 + 3bc08836: 9b81 andi a5,a5,-32 + 3bc08838: 0017e793 ori a5,a5,1 + 3bc0883c: 3007c713 xori a4,a5,768 + 3bc08840: 8f75 and a4,a4,a3 + 3bc08842: 8fb9 xor a5,a5,a4 + 3bc08844: 0000b717 auipc a4,0xb + 3bc08848: baf72623 sw a5,-1108(a4) # 3bc133f0 + 3bc0884c: 08f62223 sw a5,132(a2) + 3bc08850: b725 j 3bc08778 + +000000003bc08852 : + 3bc08852: 000607b7 lui a5,0x60 + 3bc08856: 08010737 lui a4,0x8010 + 3bc0885a: 0799 addi a5,a5,6 + 3bc0885c: c31c sw a5,0(a4) + 3bc0885e: 1101 addi sp,sp,-32 + 3bc08860: e909 bnez a0,3bc08872 + 3bc08862: 00003797 auipc a5,0x3 + 3bc08866: b8e7b783 ld a5,-1138(a5) # 3bc0b3f0 + 3bc0886a: e43e sd a5,8(sp) + 3bc0886c: e802 sd zero,16(sp) + 3bc0886e: ec02 sd zero,24(sp) + 3bc08870: a035 j 3bc0889c + 3bc08872: 4785 li a5,1 + 3bc08874: 04f51c63 bne a0,a5,3bc088cc + 3bc08878: 6785 lui a5,0x1 + 3bc0887a: f0578793 addi a5,a5,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc0887e: d35c sw a5,36(a4) + 3bc08880: 00003797 auipc a5,0x3 + 3bc08884: b587b783 ld a5,-1192(a5) # 3bc0b3d8 + 3bc08888: e43e sd a5,8(sp) + 3bc0888a: 00003797 auipc a5,0x3 + 3bc0888e: b567b783 ld a5,-1194(a5) # 3bc0b3e0 + 3bc08892: e83e sd a5,16(sp) + 3bc08894: 478d li a5,3 + 3bc08896: 07fa slli a5,a5,0x1e + 3bc08898: 0785 addi a5,a5,1 + 3bc0889a: ec3e sd a5,24(sp) + 3bc0889c: 4722 lw a4,8(sp) + 3bc0889e: 080107b7 lui a5,0x8010 + 3bc088a2: c3b8 sw a4,64(a5) + 3bc088a4: 4732 lw a4,12(sp) + 3bc088a6: c3f8 sw a4,68(a5) + 3bc088a8: 4742 lw a4,16(sp) + 3bc088aa: c7b8 sw a4,72(a5) + 3bc088ac: 4752 lw a4,20(sp) + 3bc088ae: c7f8 sw a4,76(a5) + 3bc088b0: 4762 lw a4,24(sp) + 3bc088b2: cbb8 sw a4,80(a5) + 3bc088b4: 4772 lw a4,28(sp) + 3bc088b6: cbf8 sw a4,84(a5) + 3bc088b8: 00100737 lui a4,0x100 + 3bc088bc: 0007a823 sw zero,16(a5) # 8010010 + 3bc088c0: 177d addi a4,a4,-1 + 3bc088c2: cbd8 sw a4,20(a5) + 3bc088c4: 4711 li a4,4 + 3bc088c6: cf98 sw a4,24(a5) + 3bc088c8: 6105 addi sp,sp,32 + 3bc088ca: 8082 ret + 3bc088cc: 47c5 li a5,17 + 3bc088ce: 00003717 auipc a4,0x3 + 3bc088d2: b2270713 addi a4,a4,-1246 # 3bc0b3f0 + 3bc088d6: 00f51f63 bne a0,a5,3bc088f4 + 3bc088da: 67c1 lui a5,0x10 + 3bc088dc: 30178793 addi a5,a5,769 # 10301 <__BSS_SIZE__+0xa6f1> + 3bc088e0: 0000b697 auipc a3,0xb + 3bc088e4: b0f6a823 sw a5,-1264(a3) # 3bc133f0 + 3bc088e8: 080006b7 lui a3,0x8000 + 3bc088ec: 18f6a823 sw a5,400(a3) # 8000190 + 3bc088f0: 631c ld a5,0(a4) + 3bc088f2: bfa5 j 3bc0886a + 3bc088f4: 47c9 li a5,18 + 3bc088f6: f6f516e3 bne a0,a5,3bc08862 + 3bc088fa: 67c9 lui a5,0x12 + 3bc088fc: f1d78793 addi a5,a5,-227 # 11f1d <__BSS_SIZE__+0xc30d> + 3bc08900: b7c5 j 3bc088e0 + +000000003bc08902 : + 3bc08902: 00060737 lui a4,0x60 + 3bc08906: 080107b7 lui a5,0x8010 + 3bc0890a: 0719 addi a4,a4,6 + 3bc0890c: c398 sw a4,0(a5) + 3bc0890e: 6705 lui a4,0x1 + 3bc08910: f0570713 addi a4,a4,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc08914: d3d8 sw a4,36(a5) + 3bc08916: 40103737 lui a4,0x40103 + 3bc0891a: 1101 addi sp,sp,-32 + 3bc0891c: e0070713 addi a4,a4,-512 # 40102e00 <__BL2_END__+0x44ef9f0> + 3bc08920: c63a sw a4,12(sp) + 3bc08922: 00401737 lui a4,0x401 + 3bc08926: 81770713 addi a4,a4,-2025 # 400817 <__BSS_SIZE__+0x3fac07> + 3bc0892a: 0726 slli a4,a4,0x9 + 3bc0892c: e83a sd a4,16(sp) + 3bc0892e: 40102737 lui a4,0x40102 + 3bc08932: ec02 sd zero,24(sp) + 3bc08934: 60070713 addi a4,a4,1536 # 40102600 <__BL2_END__+0x44ef1f0> + 3bc08938: c3b8 sw a4,64(a5) + 3bc0893a: 4732 lw a4,12(sp) + 3bc0893c: c3f8 sw a4,68(a5) + 3bc0893e: 4742 lw a4,16(sp) + 3bc08940: c7b8 sw a4,72(a5) + 3bc08942: 4752 lw a4,20(sp) + 3bc08944: c7f8 sw a4,76(a5) + 3bc08946: 4762 lw a4,24(sp) + 3bc08948: cbb8 sw a4,80(a5) + 3bc0894a: 4772 lw a4,28(sp) + 3bc0894c: cbf8 sw a4,84(a5) + 3bc0894e: 00100737 lui a4,0x100 + 3bc08952: 0007a823 sw zero,16(a5) # 8010010 + 3bc08956: 177d addi a4,a4,-1 + 3bc08958: cbd8 sw a4,20(a5) + 3bc0895a: 4711 li a4,4 + 3bc0895c: cf98 sw a4,24(a5) + 3bc0895e: 6105 addi sp,sp,32 + 3bc08960: 8082 ret + +000000003bc08962 : + 3bc08962: 000307b7 lui a5,0x30 + 3bc08966: 08010737 lui a4,0x8010 + 3bc0896a: 078d addi a5,a5,3 + 3bc0896c: c31c sw a5,0(a4) + 3bc0896e: 0000b897 auipc a7,0xb + 3bc08972: a8288893 addi a7,a7,-1406 # 3bc133f0 + 3bc08976: 08072783 lw a5,128(a4) # 8010080 + 3bc0897a: 08070693 addi a3,a4,128 + 3bc0897e: 2781 sext.w a5,a5 + 3bc08980: 00f8a023 sw a5,0(a7) + 3bc08984: 0047f813 andi a6,a5,4 + 3bc08988: fe0807e3 beqz a6,3bc08976 + 3bc0898c: 0c37b78b extu a5,a5,3,3 + 3bc08990: c79d beqz a5,3bc089be + 3bc08992: 00052023 sw zero,0(a0) + 3bc08996: e2e6c80b lwd a6,a4,(a3),1,3 + 3bc0899a: e4f6c50b lwd a0,a5,(a3),2,3 + 3bc0899e: 1702 slli a4,a4,0x20 + 3bc089a0: 7c08368b extu a3,a6,31,0 + 3bc089a4: 8f55 or a4,a4,a3 + 3bc089a6: 1782 slli a5,a5,0x20 + 3bc089a8: 7c05350b extu a0,a0,31,0 + 3bc089ac: e198 sd a4,0(a1) + 3bc089ae: 8fc9 or a5,a5,a0 + 3bc089b0: e21c sd a5,0(a2) + 3bc089b2: 080107b7 lui a5,0x8010 + 3bc089b6: 00050737 lui a4,0x50 + 3bc089ba: c398 sw a4,0(a5) + 3bc089bc: 8082 ret + 3bc089be: 4785 li a5,1 + 3bc089c0: c11c sw a5,0(a0) + 3bc089c2: 0005b023 sd zero,0(a1) + 3bc089c6: 00063023 sd zero,0(a2) + 3bc089ca: b7e5 j 3bc089b2 + +000000003bc089cc : + 3bc089cc: 7159 addi sp,sp,-112 + 3bc089ce: f0a2 sd s0,96(sp) + 3bc089d0: eca6 sd s1,88(sp) + 3bc089d2: e8ca sd s2,80(sp) + 3bc089d4: e4ce sd s3,72(sp) + 3bc089d6: e0d2 sd s4,64(sp) + 3bc089d8: fc56 sd s5,56(sp) + 3bc089da: f486 sd ra,104(sp) + 3bc089dc: f85a sd s6,48(sp) + 3bc089de: f45e sd s7,40(sp) + 3bc089e0: f062 sd s8,32(sp) + 3bc089e2: c93ff0ef jal ra,3bc08674 + 3bc089e6: 080017b7 lui a5,0x8001 + 3bc089ea: b147a403 lw s0,-1260(a5) # 8000b14 + 3bc089ee: b447a783 lw a5,-1212(a5) + 3bc089f2: 4925 li s2,9 + 3bc089f4: 080007b7 lui a5,0x8000 + 3bc089f8: 0947a483 lw s1,148(a5) # 8000094 + 3bc089fc: 2401 sext.w s0,s0 + 3bc089fe: 001f0a37 lui s4,0x1f0 + 3bc08a02: 2481 sext.w s1,s1 + 3bc08a04: 080019b7 lui s3,0x8001 + 3bc08a08: 4a85 li s5,1 + 3bc08a0a: 0109171b slliw a4,s2,0x10 + 3bc08a0e: 8f21 xor a4,a4,s0 + 3bc08a10: 01477733 and a4,a4,s4 + 3bc08a14: 8c39 xor s0,s0,a4 + 3bc08a16: 2401 sext.w s0,s0 + 3bc08a18: b089aa23 sw s0,-1260(s3) # 8000b14 + 3bc08a1c: b489a223 sw s0,-1212(s3) + 3bc08a20: 0830 addi a2,sp,24 + 3bc08a22: 080c addi a1,sp,16 + 3bc08a24: 0068 addi a0,sp,12 + 3bc08a26: f3dff0ef jal ra,3bc08962 + 3bc08a2a: 47b2 lw a5,12(sp) + 3bc08a2c: 00090c1b sext.w s8,s2 + 3bc08a30: ef8d bnez a5,3bc08a6a + 3bc08a32: 00f4f793 andi a5,s1,15 + 3bc08a36: 2785 addiw a5,a5,1 + 3bc08a38: 018787bb addw a5,a5,s8 + 3bc08a3c: 0107979b slliw a5,a5,0x10 + 3bc08a40: 8fa1 xor a5,a5,s0 + 3bc08a42: 0147f7b3 and a5,a5,s4 + 3bc08a46: 8c3d xor s0,s0,a5 + 3bc08a48: 2401 sext.w s0,s0 + 3bc08a4a: b089aa23 sw s0,-1260(s3) + 3bc08a4e: b489a223 sw s0,-1212(s3) + 3bc08a52: 70a6 ld ra,104(sp) + 3bc08a54: 7406 ld s0,96(sp) + 3bc08a56: 64e6 ld s1,88(sp) + 3bc08a58: 6946 ld s2,80(sp) + 3bc08a5a: 69a6 ld s3,72(sp) + 3bc08a5c: 6a06 ld s4,64(sp) + 3bc08a5e: 7ae2 ld s5,56(sp) + 3bc08a60: 7b42 ld s6,48(sp) + 3bc08a62: 7ba2 ld s7,40(sp) + 3bc08a64: 7c02 ld s8,32(sp) + 3bc08a66: 6165 addi sp,sp,112 + 3bc08a68: 8082 ret + 3bc08a6a: 397d addiw s2,s2,-1 + 3bc08a6c: f9591fe3 bne s2,s5,3bc08a0a + 3bc08a70: b7cd j 3bc08a52 + +000000003bc08a72 : + 3bc08a72: 080067b7 lui a5,0x8006 + 3bc08a76: 47fc lw a5,76(a5) + 3bc08a78: 0000b717 auipc a4,0xb + 3bc08a7c: 97870713 addi a4,a4,-1672 # 3bc133f0 + 3bc08a80: 2781 sext.w a5,a5 + 3bc08a82: c31c sw a5,0(a4) + 3bc08a84: 1447b78b extu a5,a5,5,4 + 3bc08a88: cf9d beqz a5,3bc08ac6 + 3bc08a8a: 080006b7 lui a3,0x8000 + 3bc08a8e: 42bc lw a5,64(a3) + 3bc08a90: 7601 lui a2,0xfffe0 + 3bc08a92: 1675 addi a2,a2,-3 + 3bc08a94: 2781 sext.w a5,a5 + 3bc08a96: 8ff1 and a5,a5,a2 + 3bc08a98: c31c sw a5,0(a4) + 3bc08a9a: c2bc sw a5,64(a3) + 3bc08a9c: 42bc lw a5,64(a3) + 3bc08a9e: 00020637 lui a2,0x20 + 3bc08aa2: 0609 addi a2,a2,2 + 3bc08aa4: 2781 sext.w a5,a5 + 3bc08aa6: 8fd1 or a5,a5,a2 + 3bc08aa8: c2bc sw a5,64(a3) + 3bc08aaa: 0000b797 auipc a5,0xb + 3bc08aae: 9407a323 sw zero,-1722(a5) # 3bc133f0 + 3bc08ab2: 08003637 lui a2,0x8003 + 3bc08ab6: 66c1 lui a3,0x10 + 3bc08ab8: 4a5c lw a5,20(a2) + 3bc08aba: 2781 sext.w a5,a5 + 3bc08abc: c31c sw a5,0(a4) + 3bc08abe: 8ff5 and a5,a5,a3 + 3bc08ac0: 2781 sext.w a5,a5 + 3bc08ac2: dbfd beqz a5,3bc08ab8 + 3bc08ac4: 8082 ret + 3bc08ac6: 08000637 lui a2,0x8000 + 3bc08aca: 423c lw a5,64(a2) + 3bc08acc: 7681 lui a3,0xfffe0 + 3bc08ace: 16f5 addi a3,a3,-3 + 3bc08ad0: 2781 sext.w a5,a5 + 3bc08ad2: 8ff5 and a5,a5,a3 + 3bc08ad4: c31c sw a5,0(a4) + 3bc08ad6: c23c sw a5,64(a2) + 3bc08ad8: 8082 ret + +000000003bc08ada : + 3bc08ada: 080066b7 lui a3,0x8006 + 3bc08ade: 46dc lw a5,12(a3) + 3bc08ae0: 7769 lui a4,0xffffa + 3bc08ae2: 177d addi a4,a4,-1 + 3bc08ae4: 2781 sext.w a5,a5 + 3bc08ae6: 8ff9 and a5,a5,a4 + 3bc08ae8: 03003737 lui a4,0x3003 + 3bc08aec: c6dc sw a5,12(a3) + 3bc08aee: 90070713 addi a4,a4,-1792 # 3002900 <__BSS_SIZE__+0x2ffccf0> + 3bc08af2: 0000b797 auipc a5,0xb + 3bc08af6: 8d67a783 lw a5,-1834(a5) # 3bc133c8 + 3bc08afa: cb7c sw a5,84(a4) + 3bc08afc: 0000b797 auipc a5,0xb + 3bc08b00: 8d47d783 lhu a5,-1836(a5) # 3bc133d0 + 3bc08b04: cf3c sw a5,88(a4) + 3bc08b06: 0000b797 auipc a5,0xb + 3bc08b0a: 8d27b783 ld a5,-1838(a5) # 3bc133d8 + 3bc08b0e: 5c07b78b extu a5,a5,23,0 + 3bc08b12: 2781 sext.w a5,a5 + 3bc08b14: 0000b697 auipc a3,0xb + 3bc08b18: 8dc68693 addi a3,a3,-1828 # 3bc133f0 + 3bc08b1c: c29c sw a5,0(a3) + 3bc08b1e: cf7c sw a5,92(a4) + 3bc08b20: 4b3c lw a5,80(a4) + 3bc08b22: 2781 sext.w a5,a5 + 3bc08b24: 0017c793 xori a5,a5,1 + 3bc08b28: fa17f793 andi a5,a5,-95 + 3bc08b2c: 0207e793 ori a5,a5,32 + 3bc08b30: c29c sw a5,0(a3) + 3bc08b32: cb3c sw a5,80(a4) + 3bc08b34: 8082 ret + +000000003bc08b36 : + 3bc08b36: 08006737 lui a4,0x8006 + 3bc08b3a: 475c lw a5,12(a4) + 3bc08b3c: 6691 lui a3,0x4 + 3bc08b3e: 8fd5 or a5,a5,a3 + 3bc08b40: 0000b697 auipc a3,0xb + 3bc08b44: 8af6a823 sw a5,-1872(a3) # 3bc133f0 + 3bc08b48: c75c sw a5,12(a4) + 3bc08b4a: 8082 ret + +000000003bc08b4c : + 3bc08b4c: 08006737 lui a4,0x8006 + 3bc08b50: 475c lw a5,12(a4) + 3bc08b52: 6689 lui a3,0x2 + 3bc08b54: 8fd5 or a5,a5,a3 + 3bc08b56: 0000b697 auipc a3,0xb + 3bc08b5a: 88f6ad23 sw a5,-1894(a3) # 3bc133f0 + 3bc08b5e: c75c sw a5,12(a4) + 3bc08b60: 8082 ret + +000000003bc08b62 : + 3bc08b62: 1101 addi sp,sp,-32 + 3bc08b64: 0000b797 auipc a5,0xb + 3bc08b68: 8807a623 sw zero,-1908(a5) # 3bc133f0 + 3bc08b6c: 080066b7 lui a3,0x8006 + 3bc08b70: e822 sd s0,16(sp) + 3bc08b72: ec06 sd ra,24(sp) + 3bc08b74: e426 sd s1,8(sp) + 3bc08b76: e04a sd s2,0(sp) + 3bc08b78: 0006a223 sw zero,4(a3) # 8006004 + 3bc08b7c: 0006a423 sw zero,8(a3) + 3bc08b80: 46dc lw a5,12(a3) + 3bc08b82: 0000b417 auipc s0,0xb + 3bc08b86: 86e40413 addi s0,s0,-1938 # 3bc133f0 + 3bc08b8a: 2781 sext.w a5,a5 + 3bc08b8c: f7f7f793 andi a5,a5,-129 + 3bc08b90: c01c sw a5,0(s0) + 3bc08b92: c6dc sw a5,12(a3) + 3bc08b94: 46fc lw a5,76(a3) + 3bc08b96: c01c sw a5,0(s0) + 3bc08b98: 46fc lw a5,76(a3) + 3bc08b9a: c01c sw a5,0(s0) + 3bc08b9c: 46fc lw a5,76(a3) + 3bc08b9e: c01c sw a5,0(s0) + 3bc08ba0: 46fc lw a5,76(a3) + 3bc08ba2: c01c sw a5,0(s0) + 3bc08ba4: 46fc lw a5,76(a3) + 3bc08ba6: c01c sw a5,0(s0) + 3bc08ba8: 46f8 lw a4,76(a3) + 3bc08baa: 0007079b sext.w a5,a4 + 3bc08bae: 8b05 andi a4,a4,1 + 3bc08bb0: c315 beqz a4,3bc08bd4 + 3bc08bb2: 2487b60b extu a2,a5,9,8 + 3bc08bb6: 1447b70b extu a4,a5,5,4 + 3bc08bba: e629 bnez a2,3bc08c04 + 3bc08bbc: fcf7f793 andi a5,a5,-49 + 3bc08bc0: 0087171b slliw a4,a4,0x8 + 3bc08bc4: 8f3d xor a4,a4,a5 + 3bc08bc6: 30077713 andi a4,a4,768 + 3bc08bca: 8fb9 xor a5,a5,a4 + 3bc08bcc: c01c sw a5,0(s0) + 3bc08bce: c6fc sw a5,76(a3) + 3bc08bd0: f7dff0ef jal ra,3bc08b4c + 3bc08bd4: 4685 li a3,1 + 3bc08bd6: c014 sw a3,0(s0) + 3bc08bd8: 08006737 lui a4,0x8006 + 3bc08bdc: c354 sw a3,4(a4) + 3bc08bde: 475c lw a5,12(a4) + 3bc08be0: 64a1 lui s1,0x8 + 3bc08be2: 08006937 lui s2,0x8006 + 3bc08be6: 2781 sext.w a5,a5 + 3bc08be8: 0807e793 ori a5,a5,128 + 3bc08bec: c75c sw a5,12(a4) + 3bc08bee: c014 sw a3,0(s0) + 3bc08bf0: c714 sw a3,8(a4) + 3bc08bf2: 401c lw a5,0(s0) + 3bc08bf4: 8fe5 and a5,a5,s1 + 3bc08bf6: cbb9 beqz a5,3bc08c4c + 3bc08bf8: 60e2 ld ra,24(sp) + 3bc08bfa: 6442 ld s0,16(sp) + 3bc08bfc: 64a2 ld s1,8(sp) + 3bc08bfe: 6902 ld s2,0(sp) + 3bc08c00: 6105 addi sp,sp,32 + 3bc08c02: 8082 ret + 3bc08c04: 4589 li a1,2 + 3bc08c06: 02b61163 bne a2,a1,3bc08c28 + 3bc08c0a: fcf7f793 andi a5,a5,-49 + 3bc08c0e: 0207e793 ori a5,a5,32 + 3bc08c12: 0087171b slliw a4,a4,0x8 + 3bc08c16: 8f3d xor a4,a4,a5 + 3bc08c18: 30077713 andi a4,a4,768 + 3bc08c1c: 8fb9 xor a5,a5,a4 + 3bc08c1e: c01c sw a5,0(s0) + 3bc08c20: c6fc sw a5,76(a3) + 3bc08c22: eb9ff0ef jal ra,3bc08ada + 3bc08c26: b77d j 3bc08bd4 + 3bc08c28: 4585 li a1,1 + 3bc08c2a: fab615e3 bne a2,a1,3bc08bd4 + 3bc08c2e: fcf7f793 andi a5,a5,-49 + 3bc08c32: 0107e793 ori a5,a5,16 + 3bc08c36: 0087171b slliw a4,a4,0x8 + 3bc08c3a: 8f3d xor a4,a4,a5 + 3bc08c3c: 30077713 andi a4,a4,768 + 3bc08c40: 8fb9 xor a5,a5,a4 + 3bc08c42: c01c sw a5,0(s0) + 3bc08c44: c6fc sw a5,76(a3) + 3bc08c46: ef1ff0ef jal ra,3bc08b36 + 3bc08c4a: b769 j 3bc08bd4 + 3bc08c4c: 01092783 lw a5,16(s2) # 8006010 + 3bc08c50: 4501 li a0,0 + 3bc08c52: c01c sw a5,0(s0) + 3bc08c54: d36f70ef jal ra,3bc0018a + 3bc08c58: bf69 j 3bc08bf2 + +000000003bc08c5a : + 3bc08c5a: 080067b7 lui a5,0x8006 + 3bc08c5e: 43b4 lw a3,64(a5) + 3bc08c60: bf000737 lui a4,0xbf000 + 3bc08c64: 377d addiw a4,a4,-1 + 3bc08c66: 8f75 and a4,a4,a3 + 3bc08c68: 0000a697 auipc a3,0xa + 3bc08c6c: 78868693 addi a3,a3,1928 # 3bc133f0 + 3bc08c70: c298 sw a4,0(a3) + 3bc08c72: c3b8 sw a4,64(a5) + 3bc08c74: 43b8 lw a4,64(a5) + 3bc08c76: 0006a023 sw zero,0(a3) + 3bc08c7a: 0407a023 sw zero,64(a5) # 8006040 + 3bc08c7e: 4fd8 lw a4,28(a5) + 3bc08c80: 2701 sext.w a4,a4 + 3bc08c82: 08076713 ori a4,a4,128 + 3bc08c86: cfd8 sw a4,28(a5) + 3bc08c88: 0006a023 sw zero,0(a3) + 3bc08c8c: 0007a023 sw zero,0(a5) + 3bc08c90: 4fd8 lw a4,28(a5) + 3bc08c92: 2701 sext.w a4,a4 + 3bc08c94: f7f77713 andi a4,a4,-129 + 3bc08c98: c298 sw a4,0(a3) + 3bc08c9a: cfd8 sw a4,28(a5) + 3bc08c9c: 8082 ret + +000000003bc08c9e : + 3bc08c9e: 1141 addi sp,sp,-16 + 3bc08ca0: e406 sd ra,8(sp) + 3bc08ca2: e022 sd s0,0(sp) + 3bc08ca4: ebfff0ef jal ra,3bc08b62 + 3bc08ca8: 08000737 lui a4,0x8000 + 3bc08cac: 15472783 lw a5,340(a4) # 8000154 + 3bc08cb0: 0000a417 auipc s0,0xa + 3bc08cb4: 74040413 addi s0,s0,1856 # 3bc133f0 + 3bc08cb8: 2781 sext.w a5,a5 + 3bc08cba: 9bf9 andi a5,a5,-2 + 3bc08cbc: 14f72a23 sw a5,340(a4) + 3bc08cc0: 00042023 sw zero,0(s0) + 3bc08cc4: 12072823 sw zero,304(a4) + 3bc08cc8: dabff0ef jal ra,3bc08a72 + 3bc08ccc: 080067b7 lui a5,0x8006 + 3bc08cd0: 80000737 lui a4,0x80000 + 3bc08cd4: c3b8 sw a4,64(a5) + 3bc08cd6: 00042023 sw zero,0(s0) + 3bc08cda: 60a2 ld ra,8(sp) + 3bc08cdc: 6402 ld s0,0(sp) + 3bc08cde: 0007a023 sw zero,0(a5) # 8006000 + 3bc08ce2: 0141 addi sp,sp,16 + 3bc08ce4: 8082 ret + +000000003bc08ce6 : + 3bc08ce6: 080007b7 lui a5,0x8000 + 3bc08cea: 10078693 addi a3,a5,256 # 8000100 + 3bc08cee: 4af8 lw a4,84(a3) + 3bc08cf0: 0000a617 auipc a2,0xa + 3bc08cf4: 70060613 addi a2,a2,1792 # 3bc133f0 + 3bc08cf8: 20078793 addi a5,a5,512 + 3bc08cfc: 2701 sext.w a4,a4 + 3bc08cfe: 9b79 andi a4,a4,-2 + 3bc08d00: caf8 sw a4,84(a3) + 3bc08d02: 00062023 sw zero,0(a2) + 3bc08d06: f207a823 sw zero,-208(a5) + 3bc08d0a: 43d4 lw a3,4(a5) + 3bc08d0c: 000405b7 lui a1,0x40 + 3bc08d10: 8ecd or a3,a3,a1 + 3bc08d12: c214 sw a3,0(a2) + 3bc08d14: c3d4 sw a3,4(a5) + 3bc08d16: 53d8 lw a4,36(a5) + 3bc08d18: 8f4d or a4,a4,a1 + 3bc08d1a: c218 sw a4,0(a2) + 3bc08d1c: d3d8 sw a4,36(a5) + 3bc08d1e: 8082 ret + +000000003bc08d20 : + 3bc08d20: 08004737 lui a4,0x8004 + 3bc08d24: 0000a697 auipc a3,0xa + 3bc08d28: 6cc68693 addi a3,a3,1740 # 3bc133f0 + 3bc08d2c: 1bc72783 lw a5,444(a4) # 80041bc + 3bc08d30: 2781 sext.w a5,a5 + 3bc08d32: c29c sw a5,0(a3) + 3bc08d34: 8b85 andi a5,a5,1 + 3bc08d36: dbfd beqz a5,3bc08d2c + 3bc08d38: 32072023 sw zero,800(a4) + 3bc08d3c: 1b072783 lw a5,432(a4) + 3bc08d40: 2781 sext.w a5,a5 + 3bc08d42: fc07f793 andi a5,a5,-64 + 3bc08d46: 0057e793 ori a5,a5,5 + 3bc08d4a: c29c sw a5,0(a3) + 3bc08d4c: 1af72823 sw a5,432(a4) + 3bc08d50: 4785 li a5,1 + 3bc08d52: 32f72023 sw a5,800(a4) + 3bc08d56: 8082 ret + +000000003bc08d58 : + 3bc08d58: 080036b7 lui a3,0x8003 + 3bc08d5c: 0000a717 auipc a4,0xa + 3bc08d60: 69470713 addi a4,a4,1684 # 3bc133f0 + 3bc08d64: 569c lw a5,40(a3) + 3bc08d66: 2781 sext.w a5,a5 + 3bc08d68: c31c sw a5,0(a4) + 3bc08d6a: 1007f793 andi a5,a5,256 + 3bc08d6e: dbfd beqz a5,3bc08d64 + 3bc08d70: 8082 ret + +000000003bc08d72 : + 3bc08d72: 1141 addi sp,sp,-16 + 3bc08d74: 4551 li a0,20 + 3bc08d76: e406 sd ra,8(sp) + 3bc08d78: c12f70ef jal ra,3bc0018a + 3bc08d7c: 080007b7 lui a5,0x8000 + 3bc08d80: 4741 li a4,16 + 3bc08d82: 12e7a023 sw a4,288(a5) # 8000120 + 3bc08d86: 60a2 ld ra,8(sp) + 3bc08d88: 4705 li a4,1 + 3bc08d8a: 0000a697 auipc a3,0xa + 3bc08d8e: 66e6a323 sw a4,1638(a3) # 3bc133f0 + 3bc08d92: 10e7ac23 sw a4,280(a5) + 3bc08d96: 0141 addi sp,sp,16 + 3bc08d98: 8082 ret + +000000003bc08d9a : + 3bc08d9a: 1141 addi sp,sp,-16 + 3bc08d9c: e406 sd ra,8(sp) + 3bc08d9e: 0000a797 auipc a5,0xa + 3bc08da2: 65278793 addi a5,a5,1618 # 3bc133f0 + 3bc08da6: 0007a023 sw zero,0(a5) + 3bc08daa: 08000737 lui a4,0x8000 + 3bc08dae: 10072c23 sw zero,280(a4) # 8000118 + 3bc08db2: 08006737 lui a4,0x8006 + 3bc08db6: 4778 lw a4,76(a4) + 3bc08db8: c398 sw a4,0(a5) + 3bc08dba: ee5ff0ef jal ra,3bc08c9e + 3bc08dbe: 60a2 ld ra,8(sp) + 3bc08dc0: 0141 addi sp,sp,16 + 3bc08dc2: fb1ff06f j 3bc08d72 + +000000003bc08dc6 : + 3bc08dc6: 08004637 lui a2,0x8004 + 3bc08dca: 0000a697 auipc a3,0xa + 3bc08dce: 62668693 addi a3,a3,1574 # 3bc133f0 + 3bc08dd2: 4705 li a4,1 + 3bc08dd4: 425c lw a5,4(a2) + 3bc08dd6: 2781 sext.w a5,a5 + 3bc08dd8: c29c sw a5,0(a3) + 3bc08dda: 8b9d andi a5,a5,7 + 3bc08ddc: fee79ce3 bne a5,a4,3bc08dd4 + 3bc08de0: 8082 ret + +000000003bc08de2 : + 3bc08de2: 4785 li a5,1 + 3bc08de4: 0000a717 auipc a4,0xa + 3bc08de8: 60c70713 addi a4,a4,1548 # 3bc133f0 + 3bc08dec: 080006b7 lui a3,0x8000 + 3bc08df0: c31c sw a5,0(a4) + 3bc08df2: 16f6aa23 sw a5,372(a3) # 8000174 + 3bc08df6: 08003637 lui a2,0x8003 + 3bc08dfa: 468d li a3,3 + 3bc08dfc: 5a1c lw a5,48(a2) + 3bc08dfe: 2781 sext.w a5,a5 + 3bc08e00: c31c sw a5,0(a4) + 3bc08e02: 2487b78b extu a5,a5,9,8 + 3bc08e06: fed79be3 bne a5,a3,3bc08dfc + 3bc08e0a: 4785 li a5,1 + 3bc08e0c: 02f51a63 bne a0,a5,3bc08e40 + 3bc08e10: 0800a7b7 lui a5,0x800a + 3bc08e14: 46ed li a3,27 + 3bc08e16: c394 sw a3,0(a5) + 3bc08e18: 0800a7b7 lui a5,0x800a + 3bc08e1c: 4685 li a3,1 + 3bc08e1e: c3d4 sw a3,4(a5) + 3bc08e20: 020006b7 lui a3,0x2000 + 3bc08e24: fcb68693 addi a3,a3,-53 # 1ffffcb <__BSS_SIZE__+0x1ffa3bb> + 3bc08e28: c794 sw a3,8(a5) + 3bc08e2a: 400006b7 lui a3,0x40000 + 3bc08e2e: 16fd addi a3,a3,-1 + 3bc08e30: c7d4 sw a3,12(a5) + 3bc08e32: 47c1 li a5,16 + 3bc08e34: c31c sw a5,0(a4) + 3bc08e36: 08000737 lui a4,0x8000 + 3bc08e3a: 16f72a23 sw a5,372(a4) # 8000174 + 3bc08e3e: 8082 ret + 3bc08e40: 0800a7b7 lui a5,0x800a + 3bc08e44: 0007a023 sw zero,0(a5) # 800a000 + 3bc08e48: bfc1 j 3bc08e18 + +000000003bc08e4a : + 3bc08e4a: 8082 ret + +000000003bc08e4c : + 3bc08e4c: 08004737 lui a4,0x8004 + 3bc08e50: 080037b7 lui a5,0x8003 + 3bc08e54: 439c lw a5,0(a5) + 3bc08e56: 19072683 lw a3,400(a4) # 8004190 + 3bc08e5a: 0000a797 auipc a5,0xa + 3bc08e5e: 59678793 addi a5,a5,1430 # 3bc133f0 + 3bc08e62: c394 sw a3,0(a5) + 3bc08e64: 19472703 lw a4,404(a4) + 3bc08e68: c398 sw a4,0(a5) + 3bc08e6a: 8082 ret + +000000003bc08e6c : + 3bc08e6c: 08004737 lui a4,0x8004 + 3bc08e70: 32072023 sw zero,800(a4) # 8004320 + 3bc08e74: 1b072783 lw a5,432(a4) + 3bc08e78: 2781 sext.w a5,a5 + 3bc08e7a: 0207e793 ori a5,a5,32 + 3bc08e7e: 0000a697 auipc a3,0xa + 3bc08e82: 56f6a923 sw a5,1394(a3) # 3bc133f0 + 3bc08e86: 1af72823 sw a5,432(a4) + 3bc08e8a: 4785 li a5,1 + 3bc08e8c: 32f72023 sw a5,800(a4) + 3bc08e90: 8082 ret + +000000003bc08e92 : + 3bc08e92: 08006737 lui a4,0x8006 + 3bc08e96: 000807b7 lui a5,0x80 + 3bc08e9a: 02072423 sw zero,40(a4) # 8006028 + 3bc08e9e: 0785 addi a5,a5,1 + 3bc08ea0: 030036b7 lui a3,0x3003 + 3bc08ea4: cb7c sw a5,84(a4) + 3bc08ea6: 90068693 addi a3,a3,-1792 # 3002900 <__BSS_SIZE__+0x2ffccf0> + 3bc08eaa: 0000a797 auipc a5,0xa + 3bc08eae: 51e7a783 lw a5,1310(a5) # 3bc133c8 + 3bc08eb2: cafc sw a5,84(a3) + 3bc08eb4: 0000a797 auipc a5,0xa + 3bc08eb8: 51c7d783 lhu a5,1308(a5) # 3bc133d0 + 3bc08ebc: cebc sw a5,88(a3) + 3bc08ebe: 0000a797 auipc a5,0xa + 3bc08ec2: 51a7b783 ld a5,1306(a5) # 3bc133d8 + 3bc08ec6: 5c07b78b extu a5,a5,23,0 + 3bc08eca: 0000a617 auipc a2,0xa + 3bc08ece: 52660613 addi a2,a2,1318 # 3bc133f0 + 3bc08ed2: 2781 sext.w a5,a5 + 3bc08ed4: c21c sw a5,0(a2) + 3bc08ed6: cefc sw a5,92(a3) + 3bc08ed8: 4abc lw a5,80(a3) + 3bc08eda: 2781 sext.w a5,a5 + 3bc08edc: 0017c793 xori a5,a5,1 + 3bc08ee0: fa17f793 andi a5,a5,-95 + 3bc08ee4: 0207e793 ori a5,a5,32 + 3bc08ee8: c21c sw a5,0(a2) + 3bc08eea: cabc sw a5,80(a3) + 3bc08eec: 475c lw a5,12(a4) + 3bc08eee: 2781 sext.w a5,a5 + 3bc08ef0: 30b7c693 xori a3,a5,779 + 3bc08ef4: 3c06b68b extu a3,a3,15,0 + 3bc08ef8: 8fb5 xor a5,a5,a3 + 3bc08efa: c21c sw a5,0(a2) + 3bc08efc: c75c sw a5,12(a4) + 3bc08efe: 4b1c lw a5,16(a4) + 3bc08f00: 080066b7 lui a3,0x8006 + 3bc08f04: 2781 sext.w a5,a5 + 3bc08f06: f007f793 andi a5,a5,-256 + 3bc08f0a: cb1c sw a5,16(a4) + 3bc08f0c: 4785 li a5,1 + 3bc08f0e: c21c sw a5,0(a2) + 3bc08f10: c35c sw a5,4(a4) + 3bc08f12: 475c lw a5,12(a4) + 3bc08f14: 2781 sext.w a5,a5 + 3bc08f16: 0807e793 ori a5,a5,128 + 3bc08f1a: c21c sw a5,0(a2) + 3bc08f1c: c75c sw a5,12(a4) + 3bc08f1e: 6721 lui a4,0x8 + 3bc08f20: 4a9c lw a5,16(a3) + 3bc08f22: 2781 sext.w a5,a5 + 3bc08f24: c21c sw a5,0(a2) + 3bc08f26: 8ff9 and a5,a5,a4 + 3bc08f28: 2781 sext.w a5,a5 + 3bc08f2a: dbfd beqz a5,3bc08f20 + 3bc08f2c: 8082 ret + +000000003bc08f2e : + 3bc08f2e: 6785 lui a5,0x1 + 3bc08f30: 08006737 lui a4,0x8006 + 3bc08f34: 2f578793 addi a5,a5,757 # 12f5 <__BSS_SIZE__-0x491b> + 3bc08f38: c37c sw a5,68(a4) + 3bc08f3a: 0000a697 auipc a3,0xa + 3bc08f3e: 4b668693 addi a3,a3,1206 # 3bc133f0 + 3bc08f42: 0006a023 sw zero,0(a3) + 3bc08f46: 080007b7 lui a5,0x8000 + 3bc08f4a: 0e07aa23 sw zero,244(a5) # 80000f4 + 3bc08f4e: 080047b7 lui a5,0x8004 + 3bc08f52: 5b98 lw a4,48(a5) + 3bc08f54: 767d lui a2,0xfffff + 3bc08f56: 5ff60613 addi a2,a2,1535 # fffffffffffff5ff <__BL2_END__+0xffffffffc43ec1ef> + 3bc08f5a: 2701 sext.w a4,a4 + 3bc08f5c: 8f71 and a4,a4,a2 + 3bc08f5e: c298 sw a4,0(a3) + 3bc08f60: db98 sw a4,48(a5) + 3bc08f62: 10078793 addi a5,a5,256 # 8004100 + 3bc08f66: 47b8 lw a4,72(a5) + 3bc08f68: 7f800637 lui a2,0x7f800 + 3bc08f6c: 167d addi a2,a2,-1 + 3bc08f6e: 2701 sext.w a4,a4 + 3bc08f70: 8f71 and a4,a4,a2 + 3bc08f72: c298 sw a4,0(a3) + 3bc08f74: c7b8 sw a4,72(a5) + 3bc08f76: 8082 ret + +000000003bc08f78 : + 3bc08f78: 679d lui a5,0x7 + 3bc08f7a: 0000a617 auipc a2,0xa + 3bc08f7e: 47660613 addi a2,a2,1142 # 3bc133f0 + 3bc08f82: c8178793 addi a5,a5,-895 # 6c81 <__BSS_SIZE__+0x1071> + 3bc08f86: c21c sw a5,0(a2) + 3bc08f88: 08006737 lui a4,0x8006 + 3bc08f8c: c37c sw a5,68(a4) + 3bc08f8e: 08004737 lui a4,0x8004 + 3bc08f92: 18070593 addi a1,a4,384 # 8004180 + 3bc08f96: 499c lw a5,16(a1) + 3bc08f98: 060006b7 lui a3,0x6000 + 3bc08f9c: 1f000537 lui a0,0x1f000 + 3bc08fa0: 2781 sext.w a5,a5 + 3bc08fa2: 8ebd xor a3,a3,a5 + 3bc08fa4: 8ee9 and a3,a3,a0 + 3bc08fa6: 8fb5 xor a5,a5,a3 + 3bc08fa8: 2781 sext.w a5,a5 + 3bc08faa: c99c sw a5,16(a1) + 3bc08fac: 000307b7 lui a5,0x30 + 3bc08fb0: 03378793 addi a5,a5,51 # 30033 <__BSS_SIZE__+0x2a423> + 3bc08fb4: c21c sw a5,0(a2) + 3bc08fb6: 080006b7 lui a3,0x8000 + 3bc08fba: 0ef6aa23 sw a5,244(a3) # 80000f4 + 3bc08fbe: 5b1c lw a5,48(a4) + 3bc08fc0: 76fd lui a3,0xfffff + 3bc08fc2: bff68693 addi a3,a3,-1025 # ffffffffffffebff <__BL2_END__+0xffffffffc43eb7ef> + 3bc08fc6: 2781 sext.w a5,a5 + 3bc08fc8: 8ff5 and a5,a5,a3 + 3bc08fca: 6685 lui a3,0x1 + 3bc08fcc: a0068693 addi a3,a3,-1536 # a00 <__BSS_SIZE__-0x5210> + 3bc08fd0: 8fd5 or a5,a5,a3 + 3bc08fd2: c21c sw a5,0(a2) + 3bc08fd4: db1c sw a5,48(a4) + 3bc08fd6: 10070713 addi a4,a4,256 + 3bc08fda: 473c lw a5,72(a4) + 3bc08fdc: 808006b7 lui a3,0x80800 + 3bc08fe0: 8fd5 or a5,a5,a3 + 3bc08fe2: c21c sw a5,0(a2) + 3bc08fe4: c73c sw a5,72(a4) + 3bc08fe6: 8082 ret + +000000003bc08fe8 : + 3bc08fe8: 1101 addi sp,sp,-32 + 3bc08fea: e426 sd s1,8(sp) + 3bc08fec: ec06 sd ra,24(sp) + 3bc08fee: e822 sd s0,16(sp) + 3bc08ff0: e04a sd s2,0(sp) + 3bc08ff2: 080047b7 lui a5,0x8004 + 3bc08ff6: 5407a023 sw zero,1344(a5) # 8004540 + 3bc08ffa: 5e07a823 sw zero,1520(a5) + 3bc08ffe: 6a07a023 sw zero,1696(a5) + 3bc09002: 08004737 lui a4,0x8004 + 3bc09006: 0000a497 auipc s1,0xa + 3bc0900a: 3ea48493 addi s1,s1,1002 # 3bc133f0 + 3bc0900e: 3fc72783 lw a5,1020(a4) # 80043fc + 3bc09012: 2781 sext.w a5,a5 + 3bc09014: c09c sw a5,0(s1) + 3bc09016: ffe5 bnez a5,3bc0900e + 3bc09018: 5b1c lw a5,48(a4) + 3bc0901a: 0007841b sext.w s0,a5 + 3bc0901e: fd447693 andi a3,s0,-44 + 3bc09022: c094 sw a3,0(s1) + 3bc09024: db14 sw a3,48(a4) + 3bc09026: 0017f913 andi s2,a5,1 + 3bc0902a: f05ff0ef jal ra,3bc08f2e + 3bc0902e: ef4ff0ef jal ra,3bc08722 + 3bc09032: 080006b7 lui a3,0x8000 + 3bc09036: 1846a703 lw a4,388(a3) # 8000184 + 3bc0903a: 080037b7 lui a5,0x8003 + 3bc0903e: 2701 sext.w a4,a4 + 3bc09040: 00176713 ori a4,a4,1 + 3bc09044: c098 sw a4,0(s1) + 3bc09046: 18e6a223 sw a4,388(a3) + 3bc0904a: 4447a703 lw a4,1092(a5) # 8003444 + 3bc0904e: 2701 sext.w a4,a4 + 3bc09050: c098 sw a4,0(s1) + 3bc09052: 8b09 andi a4,a4,2 + 3bc09054: db7d beqz a4,3bc0904a + 3bc09056: 080107b7 lui a5,0x8010 + 3bc0905a: 00040737 lui a4,0x40 + 3bc0905e: c398 sw a4,0(a5) + 3bc09060: 080046b7 lui a3,0x8004 + 3bc09064: 5a98 lw a4,48(a3) + 3bc09066: 60e2 ld ra,24(sp) + 3bc09068: 2701 sext.w a4,a4 + 3bc0906a: 00874633 xor a2,a4,s0 + 3bc0906e: 02067613 andi a2,a2,32 + 3bc09072: 8f31 xor a4,a4,a2 + 3bc09074: 00874633 xor a2,a4,s0 + 3bc09078: 8a21 andi a2,a2,8 + 3bc0907a: 8f31 xor a4,a4,a2 + 3bc0907c: 008747b3 xor a5,a4,s0 + 3bc09080: 8b89 andi a5,a5,2 + 3bc09082: 8fb9 xor a5,a5,a4 + 3bc09084: 9bf9 andi a5,a5,-2 + 3bc09086: 0127e7b3 or a5,a5,s2 + 3bc0908a: c09c sw a5,0(s1) + 3bc0908c: da9c sw a5,48(a3) + 3bc0908e: 50068713 addi a4,a3,1280 # 8004500 + 3bc09092: 4785 li a5,1 + 3bc09094: c33c sw a5,64(a4) + 3bc09096: 6442 ld s0,16(sp) + 3bc09098: 58068713 addi a4,a3,1408 + 3bc0909c: 64a2 ld s1,8(sp) + 3bc0909e: 6902 ld s2,0(sp) + 3bc090a0: db3c sw a5,112(a4) + 3bc090a2: 68068693 addi a3,a3,1664 + 3bc090a6: d29c sw a5,32(a3) + 3bc090a8: 6105 addi sp,sp,32 + 3bc090aa: ecfff06f j 3bc08f78 + +000000003bc090ae : + 3bc090ae: 7139 addi sp,sp,-64 + 3bc090b0: f426 sd s1,40(sp) + 3bc090b2: e456 sd s5,8(sp) + 3bc090b4: fc06 sd ra,56(sp) + 3bc090b6: f822 sd s0,48(sp) + 3bc090b8: f04a sd s2,32(sp) + 3bc090ba: ec4e sd s3,24(sp) + 3bc090bc: e852 sd s4,16(sp) + 3bc090be: 080047b7 lui a5,0x8004 + 3bc090c2: 5407a023 sw zero,1344(a5) # 8004540 + 3bc090c6: 5e07a823 sw zero,1520(a5) + 3bc090ca: 8aaa mv s5,a0 + 3bc090cc: 6a07a023 sw zero,1696(a5) + 3bc090d0: 08004737 lui a4,0x8004 + 3bc090d4: 0000a497 auipc s1,0xa + 3bc090d8: 31c48493 addi s1,s1,796 # 3bc133f0 + 3bc090dc: 3fc72783 lw a5,1020(a4) # 80043fc + 3bc090e0: 2781 sext.w a5,a5 + 3bc090e2: c09c sw a5,0(s1) + 3bc090e4: ffe5 bnez a5,3bc090dc + 3bc090e6: 5b1c lw a5,48(a4) + 3bc090e8: 080009b7 lui s3,0x8000 + 3bc090ec: 0007891b sext.w s2,a5 + 3bc090f0: 0017f413 andi s0,a5,1 + 3bc090f4: fd497793 andi a5,s2,-44 + 3bc090f8: c09c sw a5,0(s1) + 3bc090fa: db1c sw a5,48(a4) + 3bc090fc: e33ff0ef jal ra,3bc08f2e + 3bc09100: 4505 li a0,1 + 3bc09102: ce1ff0ef jal ra,3bc08de2 + 3bc09106: 08098693 addi a3,s3,128 # 8000080 + 3bc0910a: 4298 lw a4,0(a3) + 3bc0910c: 002007b7 lui a5,0x200 + 3bc09110: 007f0637 lui a2,0x7f0 + 3bc09114: 2701 sext.w a4,a4 + 3bc09116: 8fb9 xor a5,a5,a4 + 3bc09118: 8ff1 and a5,a5,a2 + 3bc0911a: 8f3d xor a4,a4,a5 + 3bc0911c: 2701 sext.w a4,a4 + 3bc0911e: 1f0007b7 lui a5,0x1f000 + 3bc09122: 8fb9 xor a5,a5,a4 + 3bc09124: 7f000637 lui a2,0x7f000 + 3bc09128: 8ff1 and a5,a5,a2 + 3bc0912a: 8f3d xor a4,a4,a5 + 3bc0912c: 2701 sext.w a4,a4 + 3bc0912e: c098 sw a4,0(s1) + 3bc09130: c298 sw a4,0(a3) + 3bc09132: 46dc lw a5,12(a3) + 3bc09134: 8556 mv a0,s5 + 3bc09136: 0007871b sext.w a4,a5 + 3bc0913a: 0827ba0b extu s4,a5,2,2 + 3bc0913e: ff177793 andi a5,a4,-15 + 3bc09142: c09c sw a5,0(s1) + 3bc09144: c6dc sw a5,12(a3) + 3bc09146: e22ff0ef jal ra,3bc08768 + 3bc0914a: 1889a783 lw a5,392(s3) + 3bc0914e: 08003737 lui a4,0x8003 + 3bc09152: 2781 sext.w a5,a5 + 3bc09154: 0017e793 ori a5,a5,1 + 3bc09158: c09c sw a5,0(s1) + 3bc0915a: 18f9a423 sw a5,392(s3) + 3bc0915e: 44472783 lw a5,1092(a4) # 8003444 + 3bc09162: 2781 sext.w a5,a5 + 3bc09164: c09c sw a5,0(s1) + 3bc09166: 8b91 andi a5,a5,4 + 3bc09168: dbfd beqz a5,3bc0915e + 3bc0916a: 040a0563 beqz s4,3bc091b4 + 3bc0916e: 08000737 lui a4,0x8000 + 3bc09172: 08070693 addi a3,a4,128 # 8000080 + 3bc09176: 46dc lw a5,12(a3) + 3bc09178: 18070713 addi a4,a4,384 + 3bc0917c: 2781 sext.w a5,a5 + 3bc0917e: 9bed andi a5,a5,-5 + 3bc09180: c09c sw a5,0(s1) + 3bc09182: c6dc sw a5,12(a3) + 3bc09184: 471c lw a5,8(a4) + 3bc09186: 2781 sext.w a5,a5 + 3bc09188: 0017e793 ori a5,a5,1 + 3bc0918c: c09c sw a5,0(s1) + 3bc0918e: c71c sw a5,8(a4) + 3bc09190: 08003737 lui a4,0x8003 + 3bc09194: 44472783 lw a5,1092(a4) # 8003444 + 3bc09198: 2781 sext.w a5,a5 + 3bc0919a: c09c sw a5,0(s1) + 3bc0919c: 8b91 andi a5,a5,4 + 3bc0919e: dbfd beqz a5,3bc09194 + 3bc091a0: 08000737 lui a4,0x8000 + 3bc091a4: 08c72783 lw a5,140(a4) # 800008c + 3bc091a8: 2781 sext.w a5,a5 + 3bc091aa: 0047e793 ori a5,a5,4 + 3bc091ae: c09c sw a5,0(s1) + 3bc091b0: 08f72623 sw a5,140(a4) + 3bc091b4: 819ff0ef jal ra,3bc089cc + 3bc091b8: 080107b7 lui a5,0x8010 + 3bc091bc: 00040737 lui a4,0x40 + 3bc091c0: c398 sw a4,0(a5) + 3bc091c2: 4501 li a0,0 + 3bc091c4: c1fff0ef jal ra,3bc08de2 + 3bc091c8: 08004737 lui a4,0x8004 + 3bc091cc: 5b1c lw a5,48(a4) + 3bc091ce: 70e2 ld ra,56(sp) + 3bc091d0: 69e2 ld s3,24(sp) + 3bc091d2: 2781 sext.w a5,a5 + 3bc091d4: 0127c6b3 xor a3,a5,s2 + 3bc091d8: 0206f693 andi a3,a3,32 + 3bc091dc: 8fb5 xor a5,a5,a3 + 3bc091de: 0127c6b3 xor a3,a5,s2 + 3bc091e2: 8aa1 andi a3,a3,8 + 3bc091e4: 8fb5 xor a5,a5,a3 + 3bc091e6: 0127c933 xor s2,a5,s2 + 3bc091ea: 00297913 andi s2,s2,2 + 3bc091ee: 0127c7b3 xor a5,a5,s2 + 3bc091f2: 9bf9 andi a5,a5,-2 + 3bc091f4: 8fc1 or a5,a5,s0 + 3bc091f6: c09c sw a5,0(s1) + 3bc091f8: db1c sw a5,48(a4) + 3bc091fa: 50070693 addi a3,a4,1280 # 8004500 + 3bc091fe: 4785 li a5,1 + 3bc09200: c2bc sw a5,64(a3) + 3bc09202: 7442 ld s0,48(sp) + 3bc09204: 58070693 addi a3,a4,1408 + 3bc09208: 74a2 ld s1,40(sp) + 3bc0920a: 7902 ld s2,32(sp) + 3bc0920c: 6a42 ld s4,16(sp) + 3bc0920e: 6aa2 ld s5,8(sp) + 3bc09210: dabc sw a5,112(a3) + 3bc09212: 68070713 addi a4,a4,1664 + 3bc09216: d31c sw a5,32(a4) + 3bc09218: 6121 addi sp,sp,64 + 3bc0921a: d5fff06f j 3bc08f78 + +000000003bc0921e : + 3bc0921e: 7179 addi sp,sp,-48 + 3bc09220: e84a sd s2,16(sp) + 3bc09222: e44e sd s3,8(sp) + 3bc09224: e052 sd s4,0(sp) + 3bc09226: f406 sd ra,40(sp) + 3bc09228: f022 sd s0,32(sp) + 3bc0922a: ec26 sd s1,24(sp) + 3bc0922c: 080047b7 lui a5,0x8004 + 3bc09230: 5407a023 sw zero,1344(a5) # 8004540 + 3bc09234: 5e07a823 sw zero,1520(a5) + 3bc09238: 89aa mv s3,a0 + 3bc0923a: 8a2e mv s4,a1 + 3bc0923c: 6a07a023 sw zero,1696(a5) + 3bc09240: 08004737 lui a4,0x8004 + 3bc09244: 0000a917 auipc s2,0xa + 3bc09248: 1ac90913 addi s2,s2,428 # 3bc133f0 + 3bc0924c: 3fc72783 lw a5,1020(a4) # 80043fc + 3bc09250: 2781 sext.w a5,a5 + 3bc09252: 00f92023 sw a5,0(s2) + 3bc09256: fbfd bnez a5,3bc0924c + 3bc09258: 5b1c lw a5,48(a4) + 3bc0925a: 0007849b sext.w s1,a5 + 3bc0925e: 0017f413 andi s0,a5,1 + 3bc09262: fd44f793 andi a5,s1,-44 + 3bc09266: 00f92023 sw a5,0(s2) + 3bc0926a: db1c sw a5,48(a4) + 3bc0926c: cc3ff0ef jal ra,3bc08f2e + 3bc09270: 4505 li a0,1 + 3bc09272: b71ff0ef jal ra,3bc08de2 + 3bc09276: 080007b7 lui a5,0x8000 + 3bc0927a: 0bc7a703 lw a4,188(a5) # 80000bc + 3bc0927e: 2701 sext.w a4,a4 + 3bc09280: 000a1863 bnez s4,3bc09290 + 3bc09284: 77fd lui a5,0xfffff + 3bc09286: 17fd addi a5,a5,-1 + 3bc09288: 8f7d and a4,a4,a5 + 3bc0928a: 6789 lui a5,0x2 + 3bc0928c: 8f5d or a4,a4,a5 + 3bc0928e: a821 j 3bc092a6 + 3bc09290: 4785 li a5,1 + 3bc09292: 00fa1763 bne s4,a5,3bc092a0 + 3bc09296: 77f9 lui a5,0xffffe + 3bc09298: 17fd addi a5,a5,-1 + 3bc0929a: 8f7d and a4,a4,a5 + 3bc0929c: 6785 lui a5,0x1 + 3bc0929e: b7fd j 3bc0928c + 3bc092a0: 4789 li a5,2 + 3bc092a2: 0efa0963 beq s4,a5,3bc09394 + 3bc092a6: 00e92023 sw a4,0(s2) + 3bc092aa: 00092703 lw a4,0(s2) + 3bc092ae: 080007b7 lui a5,0x8000 + 3bc092b2: 0ae7ae23 sw a4,188(a5) # 80000bc + 3bc092b6: 0e0a1163 bnez s4,3bc09398 + 3bc092ba: 08004737 lui a4,0x8004 + 3bc092be: 475c lw a5,12(a4) + 3bc092c0: 2781 sext.w a5,a5 + 3bc092c2: 0807e793 ori a5,a5,128 + 3bc092c6: 00f92023 sw a5,0(s2) + 3bc092ca: c75c sw a5,12(a4) + 3bc092cc: e36ff0ef jal ra,3bc08902 + 3bc092d0: 080007b7 lui a5,0x8000 + 3bc092d4: 18c7a783 lw a5,396(a5) # 800018c + 3bc092d8: 2781 sext.w a5,a5 + 3bc092da: 4017e693 ori a3,a5,1025 + 3bc092de: 000a1663 bnez s4,3bc092ea + 3bc092e2: bff7f793 andi a5,a5,-1025 + 3bc092e6: 0017e693 ori a3,a5,1 + 3bc092ea: 4785 li a5,1 + 3bc092ec: 00f98763 beq s3,a5,3bc092fa + 3bc092f0: 39bd addiw s3,s3,-17 + 3bc092f2: fef6f713 andi a4,a3,-17 + 3bc092f6: 0137e463 bltu a5,s3,3bc092fe + 3bc092fa: 0106e713 ori a4,a3,16 + 3bc092fe: 00e92023 sw a4,0(s2) + 3bc09302: 080007b7 lui a5,0x8000 + 3bc09306: 18e7a623 sw a4,396(a5) # 800018c + 3bc0930a: 08003737 lui a4,0x8003 + 3bc0930e: 44472783 lw a5,1092(a4) # 8003444 + 3bc09312: 2781 sext.w a5,a5 + 3bc09314: 00f92023 sw a5,0(s2) + 3bc09318: 8ba1 andi a5,a5,8 + 3bc0931a: dbf5 beqz a5,3bc0930e + 3bc0931c: 080049b7 lui s3,0x8004 + 3bc09320: 00c9a783 lw a5,12(s3) # 800400c + 3bc09324: 00040737 lui a4,0x40 + 3bc09328: 4501 li a0,0 + 3bc0932a: 2781 sext.w a5,a5 + 3bc0932c: f7f7f793 andi a5,a5,-129 + 3bc09330: 00f92023 sw a5,0(s2) + 3bc09334: 00f9a623 sw a5,12(s3) + 3bc09338: 080107b7 lui a5,0x8010 + 3bc0933c: c398 sw a4,0(a5) + 3bc0933e: aa5ff0ef jal ra,3bc08de2 + 3bc09342: 0309a783 lw a5,48(s3) + 3bc09346: 70a2 ld ra,40(sp) + 3bc09348: 6a02 ld s4,0(sp) + 3bc0934a: 2781 sext.w a5,a5 + 3bc0934c: 0097c733 xor a4,a5,s1 + 3bc09350: 02077713 andi a4,a4,32 + 3bc09354: 8fb9 xor a5,a5,a4 + 3bc09356: 0097c733 xor a4,a5,s1 + 3bc0935a: 8b21 andi a4,a4,8 + 3bc0935c: 8fb9 xor a5,a5,a4 + 3bc0935e: 8cbd xor s1,s1,a5 + 3bc09360: 8889 andi s1,s1,2 + 3bc09362: 8fa5 xor a5,a5,s1 + 3bc09364: 9bf9 andi a5,a5,-2 + 3bc09366: 8fc1 or a5,a5,s0 + 3bc09368: 00f92023 sw a5,0(s2) + 3bc0936c: 02f9a823 sw a5,48(s3) + 3bc09370: 50098713 addi a4,s3,1280 + 3bc09374: 4785 li a5,1 + 3bc09376: c33c sw a5,64(a4) + 3bc09378: 58098713 addi a4,s3,1408 + 3bc0937c: 7402 ld s0,32(sp) + 3bc0937e: db3c sw a5,112(a4) + 3bc09380: 68098993 addi s3,s3,1664 + 3bc09384: 64e2 ld s1,24(sp) + 3bc09386: 6942 ld s2,16(sp) + 3bc09388: 02f9a023 sw a5,32(s3) + 3bc0938c: 69a2 ld s3,8(sp) + 3bc0938e: 6145 addi sp,sp,48 + 3bc09390: be9ff06f j 3bc08f78 + 3bc09394: 678d lui a5,0x3 + 3bc09396: bddd j 3bc0928c + 3bc09398: 854e mv a0,s3 + 3bc0939a: cb8ff0ef jal ra,3bc08852 + 3bc0939e: bf0d j 3bc092d0 + +000000003bc093a0 : + 3bc093a0: 6785 lui a5,0x1 + 3bc093a2: 0785 addi a5,a5,1 + 3bc093a4: 0000a717 auipc a4,0xa + 3bc093a8: 04f72623 sw a5,76(a4) # 3bc133f0 + 3bc093ac: 08000737 lui a4,0x8000 + 3bc093b0: 50f72023 sw a5,1280(a4) # 8000500 + 3bc093b4: 54f72023 sw a5,1344(a4) + 3bc093b8: 8082 ret + +000000003bc093ba : + 3bc093ba: 4799 li a5,6 + 3bc093bc: 00f50023 sb a5,0(a0) # 1f000000 + 3bc093c0: 0000a717 auipc a4,0xa + 3bc093c4: 02f72823 sw a5,48(a4) # 3bc133f0 + 3bc093c8: 08000737 lui a4,0x8000 + 3bc093cc: 20f72423 sw a5,520(a4) # 8000208 + 3bc093d0: 080107b7 lui a5,0x8010 + 3bc093d4: 00040737 lui a4,0x40 + 3bc093d8: c398 sw a4,0(a5) + 3bc093da: 8082 ret + +000000003bc093dc : + 3bc093dc: 2f000793 li a5,752 + 3bc093e0: 0000a717 auipc a4,0xa + 3bc093e4: 00f72c23 sw a5,24(a4) # 3bc133f8 + 3bc093e8: 06400793 li a5,100 + 3bc093ec: 0000a717 auipc a4,0xa + 3bc093f0: 00f72823 sw a5,16(a4) # 3bc133fc + 3bc093f4: 00002717 auipc a4,0x2 + 3bc093f8: 30872703 lw a4,776(a4) # 3bc0b6fc + 3bc093fc: 0047569b srliw a3,a4,0x4 + 3bc09400: 463d li a2,15 + 3bc09402: 0000a797 auipc a5,0xa + 3bc09406: fed7af23 sw a3,-2(a5) # 3bc13400 + 3bc0940a: 0000a797 auipc a5,0xa + 3bc0940e: fec7a523 sw a2,-22(a5) # 3bc133f4 + 3bc09412: 02f00713 li a4,47 + 3bc09416: 077a slli a4,a4,0x1e + 3bc09418: 7c06b78b extu a5,a3,31,0 + 3bc0941c: 02f757b3 divu a5,a4,a5 + 3bc09420: 0000a717 auipc a4,0xa + 3bc09424: faf73423 sd a5,-88(a4) # 3bc133c8 + 3bc09428: 0fa00713 li a4,250 + 3bc0942c: 02d7073b mulw a4,a4,a3 + 3bc09430: 06400693 li a3,100 + 3bc09434: 02d7573b divuw a4,a4,a3 + 3bc09438: 7c07370b extu a4,a4,31,0 + 3bc0943c: 0000a697 auipc a3,0xa + 3bc09440: f8e6ba23 sd a4,-108(a3) # 3bc133d0 + 3bc09444: 3e800693 li a3,1000 + 3bc09448: 02d70733 mul a4,a4,a3 + 3bc0944c: 02c787b3 mul a5,a5,a2 + 3bc09450: 02e7d7b3 divu a5,a5,a4 + 3bc09454: 0000a717 auipc a4,0xa + 3bc09458: f8f73223 sd a5,-124(a4) # 3bc133d8 + 3bc0945c: a37ff06f j 3bc08e92 + +000000003bc09460 : + 3bc09460: 1141 addi sp,sp,-16 + 3bc09462: e406 sd ra,8(sp) + 3bc09464: f93fe0ef jal ra,3bc083f6 + 3bc09468: 357d addiw a0,a0,-1 + 3bc0946a: 0ff57513 andi a0,a0,255 + 3bc0946e: 47a5 li a5,9 + 3bc09470: 12a7ef63 bltu a5,a0,3bc095ae + 3bc09474: 00002717 auipc a4,0x2 + 3bc09478: f8470713 addi a4,a4,-124 # 3bc0b3f8 + 3bc0947c: 44a7478b lrw a5,a4,a0,2 + 3bc09480: 97ba add a5,a5,a4 + 3bc09482: 8782 jr a5 + 3bc09484: 12141737 lui a4,0x12141 + 3bc09488: 080007b7 lui a5,0x8000 + 3bc0948c: 074d addi a4,a4,19 + 3bc0948e: c398 sw a4,0(a5) + 3bc09490: 0c041737 lui a4,0xc041 + 3bc09494: 50370713 addi a4,a4,1283 # c041503 + 3bc09498: c3d8 sw a4,4(a5) + 3bc0949a: 06050737 lui a4,0x6050 + 3bc0949e: 0705 addi a4,a4,1 + 3bc094a0: c798 sw a4,8(a5) + 3bc094a2: 08071737 lui a4,0x8071 + 3bc094a6: b0270713 addi a4,a4,-1278 # 8070b02 + 3bc094aa: c7d8 sw a4,12(a5) + 3bc094ac: 0a0f1737 lui a4,0xa0f1 + 3bc094b0: e0970713 addi a4,a4,-503 # a0f0e09 + 3bc094b4: cb98 sw a4,16(a5) + 3bc094b6: 00161737 lui a4,0x161 + 3bc094ba: 10d70713 addi a4,a4,269 # 16110d <__BSS_SIZE__+0x15b4fd> + 3bc094be: cbd8 sw a4,20(a5) + 3bc094c0: 0007ac23 sw zero,24(a5) # 8000018 + 3bc094c4: 10000713 li a4,256 + 3bc094c8: cfd8 sw a4,28(a5) + 3bc094ca: 02136737 lui a4,0x2136 + 3bc094ce: 57470713 addi a4,a4,1396 # 2136574 <__BSS_SIZE__+0x2130964> + 3bc094d2: d398 sw a4,32(a5) + 3bc094d4: 4721 li a4,8 + 3bc094d6: d3d8 sw a4,36(a5) + 3bc094d8: 76512737 lui a4,0x76512 + 3bc094dc: 30870713 addi a4,a4,776 # 76512308 <__BL2_END__+0x3a8feef8> + 3bc094e0: d798 sw a4,40(a5) + 3bc094e2: 4711 li a4,4 + 3bc094e4: d7d8 sw a4,44(a5) + 3bc094e6: a0e1 j 3bc095ae + 3bc094e8: 08071737 lui a4,0x8071 + 3bc094ec: 080007b7 lui a5,0x8000 + 3bc094f0: d0970713 addi a4,a4,-759 # 8070d09 + 3bc094f4: c398 sw a4,0(a5) + 3bc094f6: 06050737 lui a4,0x6050 + 3bc094fa: 20b70713 addi a4,a4,523 # 605020b + 3bc094fe: c3d8 sw a4,4(a5) + 3bc09500: 14040737 lui a4,0x14040 + 3bc09504: 10070713 addi a4,a4,256 # 14040100 + 3bc09508: c798 sw a4,8(a5) + 3bc0950a: 15031737 lui a4,0x15031 + 3bc0950e: e0c70713 addi a4,a4,-500 # 15030e0c + 3bc09512: c7d8 sw a4,12(a5) + 3bc09514: 0a0f1737 lui a4,0xa0f1 + 3bc09518: 21370713 addi a4,a4,531 # a0f1213 + 3bc0951c: cb98 sw a4,16(a5) + 3bc0951e: 00111737 lui a4,0x111 + 3bc09522: 0759 addi a4,a4,22 + 3bc09524: cbd8 sw a4,20(a5) + 3bc09526: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0952a: 10000713 li a4,256 + 3bc0952e: cfd8 sw a4,28(a5) + 3bc09530: 82135737 lui a4,0x82135 + 3bc09534: 76470713 addi a4,a4,1892 # ffffffff82135764 <__BL2_END__+0xffffffff46522354> + 3bc09538: d398 sw a4,32(a5) + 3bc0953a: 67513737 lui a4,0x67513 + 3bc0953e: 0207a223 sw zero,36(a5) + 3bc09542: 02870713 addi a4,a4,40 # 67513028 <__BL2_END__+0x2b8ffc18> + 3bc09546: bf69 j 3bc094e0 + 3bc09548: 08071737 lui a4,0x8071 + 3bc0954c: 080007b7 lui a5,0x8000 + 3bc09550: b0970713 addi a4,a4,-1271 # 8070b09 + 3bc09554: c398 sw a4,0(a5) + 3bc09556: 05000737 lui a4,0x5000 + 3bc0955a: 20670713 addi a4,a4,518 # 5000206 + 3bc0955e: c3d8 sw a4,4(a5) + 3bc09560: 0c040737 lui a4,0xc040 + 3bc09564: 10d70713 addi a4,a4,269 # c04010d + 3bc09568: c798 sw a4,8(a5) + 3bc0956a: 15031737 lui a4,0x15031 + 3bc0956e: a1470713 addi a4,a4,-1516 # 15030a14 + 3bc09572: c7d8 sw a4,12(a5) + 3bc09574: 10111737 lui a4,0x10111 + 3bc09578: 21370713 addi a4,a4,531 # 10111213 + 3bc0957c: cb98 sw a4,16(a5) + 3bc0957e: 000f1737 lui a4,0xf1 + 3bc09582: 60e70713 addi a4,a4,1550 # f160e <__BSS_SIZE__+0xeb9fe> + 3bc09586: cbd8 sw a4,20(a5) + 3bc09588: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0958c: 10000713 li a4,256 + 3bc09590: cfd8 sw a4,28(a5) + 3bc09592: 31756737 lui a4,0x31756 + 3bc09596: 02470713 addi a4,a4,36 # 31756024 + 3bc0959a: d398 sw a4,32(a5) + 3bc0959c: 4721 li a4,8 + 3bc0959e: d3d8 sw a4,36(a5) + 3bc095a0: 26473737 lui a4,0x26473 + 3bc095a4: 51870713 addi a4,a4,1304 # 26473518 + 3bc095a8: d798 sw a4,40(a5) + 3bc095aa: 0207a623 sw zero,44(a5) + 3bc095ae: 60a2 ld ra,8(sp) + 3bc095b0: 0141 addi sp,sp,16 + 3bc095b2: 8082 ret + 3bc095b4: 0c061737 lui a4,0xc061 + 3bc095b8: 080007b7 lui a5,0x8000 + 3bc095bc: 80b70713 addi a4,a4,-2037 # c06080b + 3bc095c0: c398 sw a4,0(a5) + 3bc095c2: 070d1737 lui a4,0x70d1 + 3bc095c6: 90470713 addi a4,a4,-1788 # 70d0904 + 3bc095ca: c3d8 sw a4,4(a5) + 3bc095cc: 6741 lui a4,0x10 + 3bc095ce: 50270713 addi a4,a4,1282 # 10502 <__BSS_SIZE__+0xa8f2> + 3bc095d2: c798 sw a4,8(a5) + 3bc095d4: 110a1737 lui a4,0x110a1 + 3bc095d8: e0370713 addi a4,a4,-509 # 110a0e03 + 3bc095dc: c7d8 sw a4,12(a5) + 3bc095de: 0f141737 lui a4,0xf141 + 3bc095e2: 61070713 addi a4,a4,1552 # f141610 + 3bc095e6: cb98 sw a4,16(a5) + 3bc095e8: 00151737 lui a4,0x151 + 3bc095ec: 31270713 addi a4,a4,786 # 151312 <__BSS_SIZE__+0x14b702> + 3bc095f0: cbd8 sw a4,20(a5) + 3bc095f2: 0007ac23 sw zero,24(a5) # 8000018 + 3bc095f6: 10000713 li a4,256 + 3bc095fa: cfd8 sw a4,28(a5) + 3bc095fc: 71840737 lui a4,0x71840 + 3bc09600: 53270713 addi a4,a4,1330 # 71840532 <__BL2_END__+0x35c2d122> + 3bc09604: d398 sw a4,32(a5) + 3bc09606: 4719 li a4,6 + 3bc09608: d3d8 sw a4,36(a5) + 3bc0960a: 76103737 lui a4,0x76103 + 3bc0960e: 42570713 addi a4,a4,1061 # 76103425 <__BL2_END__+0x3a4f0015> + 3bc09612: d798 sw a4,40(a5) + 3bc09614: 4721 li a4,8 + 3bc09616: b5f9 j 3bc094e4 + 3bc09618: 080b1737 lui a4,0x80b1 + 3bc0961c: 080007b7 lui a5,0x8000 + 3bc09620: d0670713 addi a4,a4,-762 # 80b0d06 + 3bc09624: c398 sw a4,0(a5) + 3bc09626: 09010737 lui a4,0x9010 + 3bc0962a: 40770713 addi a4,a4,1031 # 9010407 + 3bc0962e: c3d8 sw a4,4(a5) + 3bc09630: 14050737 lui a4,0x14050 + 3bc09634: 20c70713 addi a4,a4,524 # 1405020c + 3bc09638: c798 sw a4,8(a5) + 3bc0963a: 15001737 lui a4,0x15001 + 3bc0963e: e0370713 addi a4,a4,-509 # 15000e03 + 3bc09642: c7d8 sw a4,12(a5) + 3bc09644: 0a0f1737 lui a4,0xa0f1 + 3bc09648: 21370713 addi a4,a4,531 # a0f1213 + 3bc0964c: cb98 sw a4,16(a5) + 3bc0964e: 00111737 lui a4,0x111 + 3bc09652: 0759 addi a4,a4,22 + 3bc09654: cbd8 sw a4,20(a5) + 3bc09656: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0965a: 10000713 li a4,256 + 3bc0965e: cfd8 sw a4,28(a5) + 3bc09660: 82135737 lui a4,0x82135 + 3bc09664: 76470713 addi a4,a4,1892 # ffffffff82135764 <__BL2_END__+0xffffffff46522354> + 3bc09668: d398 sw a4,32(a5) + 3bc0966a: 67513737 lui a4,0x67513 + 3bc0966e: 0207a223 sw zero,36(a5) + 3bc09672: 20870713 addi a4,a4,520 # 67513208 <__BL2_END__+0x2b8ffdf8> + 3bc09676: b5ad j 3bc094e0 + 3bc09678: 0b061737 lui a4,0xb061 + 3bc0967c: 080007b7 lui a5,0x8000 + 3bc09680: 90870713 addi a4,a4,-1784 # b060908 + 3bc09684: c398 sw a4,0(a5) + 3bc09686: 02000737 lui a4,0x2000 + 3bc0968a: 10770713 addi a4,a4,263 # 2000107 <__BSS_SIZE__+0x1ffa4f7> + 3bc0968e: c3d8 sw a4,4(a5) + 3bc09690: 0c050737 lui a4,0xc050 + 3bc09694: 40d70713 addi a4,a4,1037 # c05040d + 3bc09698: c798 sw a4,8(a5) + 3bc0969a: 13141737 lui a4,0x13141 + 3bc0969e: 50370713 addi a4,a4,1283 # 13141503 + 3bc096a2: c7d8 sw a4,12(a5) + 3bc096a4: 160a1737 lui a4,0x160a1 + 3bc096a8: 11270713 addi a4,a4,274 # 160a1112 + 3bc096ac: cb98 sw a4,16(a5) + 3bc096ae: 000f1737 lui a4,0xf1 + 3bc096b2: 0739 addi a4,a4,14 + 3bc096b4: cbd8 sw a4,20(a5) + 3bc096b6: 0007ac23 sw zero,24(a5) # 8000018 + 3bc096ba: 10000713 li a4,256 + 3bc096be: cfd8 sw a4,28(a5) + 3bc096c0: 28137737 lui a4,0x28137 + 3bc096c4: 56470713 addi a4,a4,1380 # 28137564 + 3bc096c8: d398 sw a4,32(a5) + 3bc096ca: 76158737 lui a4,0x76158 + 3bc096ce: 0207a223 sw zero,36(a5) + 3bc096d2: 32070713 addi a4,a4,800 # 76158320 <__BL2_END__+0x3a544f10> + 3bc096d6: b529 j 3bc094e0 + 3bc096d8: 08061737 lui a4,0x8061 + 3bc096dc: 080007b7 lui a5,0x8000 + 3bc096e0: b0970713 addi a4,a4,-1271 # 8060b09 + 3bc096e4: c398 sw a4,0(a5) + 3bc096e6: 02040737 lui a4,0x2040 + 3bc096ea: 70170713 addi a4,a4,1793 # 2040701 <__BSS_SIZE__+0x203aaf1> + 3bc096ee: c3d8 sw a4,4(a5) + 3bc096f0: 0c000737 lui a4,0xc000 + 3bc096f4: 50d70713 addi a4,a4,1293 # c00050d + 3bc096f8: c798 sw a4,8(a5) + 3bc096fa: 13150737 lui a4,0x13150 + 3bc096fe: 31470713 addi a4,a4,788 # 13150314 + 3bc09702: c7d8 sw a4,12(a5) + 3bc09704: 10111737 lui a4,0x10111 + 3bc09708: 21670713 addi a4,a4,534 # 10111216 + 3bc0970c: cb98 sw a4,16(a5) + 3bc0970e: 000f1737 lui a4,0xf1 + 3bc09712: a0e70713 addi a4,a4,-1522 # f0a0e <__BSS_SIZE__+0xeadfe> + 3bc09716: cbd8 sw a4,20(a5) + 3bc09718: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0971c: 10000713 li a4,256 + 3bc09720: cfd8 sw a4,28(a5) + 3bc09722: 82135737 lui a4,0x82135 + 3bc09726: 67470713 addi a4,a4,1652 # ffffffff82135674 <__BL2_END__+0xffffffff46522264> + 3bc0972a: d398 sw a4,32(a5) + 3bc0972c: 76153737 lui a4,0x76153 + 3bc09730: 0207a223 sw zero,36(a5) + 3bc09734: 28070713 addi a4,a4,640 # 76153280 <__BL2_END__+0x3a53fe70> + 3bc09738: b365 j 3bc094e0 + 3bc0973a: 070b1737 lui a4,0x70b1 + 3bc0973e: 080007b7 lui a5,0x8000 + 3bc09742: 90c70713 addi a4,a4,-1780 # 70b090c + 3bc09746: c398 sw a4,0(a5) + 3bc09748: 04050737 lui a4,0x4050 + 3bc0974c: 60870713 addi a4,a4,1544 # 4050608 <__BSS_SIZE__+0x404a9f8> + 3bc09750: c3d8 sw a4,4(a5) + 3bc09752: 0e020737 lui a4,0xe020 + 3bc09756: 30d70713 addi a4,a4,781 # e02030d + 3bc0975a: c798 sw a4,8(a5) + 3bc0975c: 110a0737 lui a4,0x110a0 + 3bc09760: 10070713 addi a4,a4,256 # 110a0100 + 3bc09764: c7d8 sw a4,12(a5) + 3bc09766: 0f131737 lui a4,0xf131 + 3bc0976a: 61470713 addi a4,a4,1556 # f131614 + 3bc0976e: cb98 sw a4,16(a5) + 3bc09770: 00151737 lui a4,0x151 + 3bc09774: 0749 addi a4,a4,18 + 3bc09776: cbd8 sw a4,20(a5) + 3bc09778: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0977c: 10000713 li a4,256 + 3bc09780: cfd8 sw a4,28(a5) + 3bc09782: 86014737 lui a4,0x86014 + 3bc09786: 53270713 addi a4,a4,1330 # ffffffff86014532 <__BL2_END__+0xffffffff4a401122> + 3bc0978a: d398 sw a4,32(a5) + 3bc0978c: 471d li a4,7 + 3bc0978e: d3d8 sw a4,36(a5) + 3bc09790: 76012737 lui a4,0x76012 + 3bc09794: 34570713 addi a4,a4,837 # 76012345 <__BL2_END__+0x3a3fef35> + 3bc09798: bdad j 3bc09612 + +000000003bc0979a : + 3bc0979a: 8082 ret + +000000003bc0979c : + 3bc0979c: 63746737 lui a4,0x63746 + 3bc097a0: 080047b7 lui a5,0x8004 + 3bc097a4: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32f61> + 3bc097a8: c7d8 sw a4,12(a5) + 3bc097aa: 14000737 lui a4,0x14000 + 3bc097ae: c3f8 sw a4,68(a5) + 3bc097b0: 470d li a4,3 + 3bc097b2: d7f8 sw a4,108(a5) + 3bc097b4: 979c06b7 lui a3,0x979c0 + 3bc097b8: 10078713 addi a4,a5,256 # 8004100 + 3bc097bc: c734 sw a3,72(a4) + 3bc097be: 810416b7 lui a3,0x81041 + 3bc097c2: 40068693 addi a3,a3,1024 # ffffffff81041400 <__BL2_END__+0xffffffff4542dff0> + 3bc097c6: c394 sw a3,0(a5) + 3bc097c8: 006a06b7 lui a3,0x6a0 + 3bc097cc: 0207a823 sw zero,48(a5) + 3bc097d0: 0685 addi a3,a3,1 + 3bc097d2: dbd4 sw a3,52(a5) + 3bc097d4: 000206b7 lui a3,0x20 + 3bc097d8: df94 sw a3,56(a5) + 3bc097da: 002016b7 lui a3,0x201 + 3bc097de: 07068693 addi a3,a3,112 # 201070 <__BSS_SIZE__+0x1fb460> + 3bc097e2: cbb4 sw a3,80(a5) + 3bc097e4: 005106b7 lui a3,0x510 + 3bc097e8: 0607a023 sw zero,96(a5) + 3bc097ec: 02c68693 addi a3,a3,44 # 51002c <__BSS_SIZE__+0x50a41c> + 3bc097f0: 6641 lui a2,0x10 + 3bc097f2: d3f4 sw a3,100(a5) + 3bc097f4: 04360613 addi a2,a2,67 # 10043 <__BSS_SIZE__+0xa433> + 3bc097f8: 08078693 addi a3,a5,128 + 3bc097fc: cab0 sw a2,80(a3) + 3bc097fe: 03730637 lui a2,0x3730 + 3bc09802: 0c07aa23 sw zero,212(a5) + 3bc09806: 04060613 addi a2,a2,64 # 3730040 <__BSS_SIZE__+0x372a430> + 3bc0980a: cef0 sw a2,92(a3) + 3bc0980c: 00800637 lui a2,0x800 + 3bc09810: d2b0 sw a2,96(a3) + 3bc09812: 0a0116b7 lui a3,0xa011 + 3bc09816: 61068693 addi a3,a3,1552 # a011610 + 3bc0981a: c314 sw a3,0(a4) + 3bc0981c: 000306b7 lui a3,0x30 + 3bc09820: 41468693 addi a3,a3,1044 # 30414 <__BSS_SIZE__+0x2a804> + 3bc09824: c354 sw a3,4(a4) + 3bc09826: 030406b7 lui a3,0x3040 + 3bc0982a: 40868693 addi a3,a3,1032 # 3040408 <__BSS_SIZE__+0x303a7f8> + 3bc0982e: c714 sw a3,8(a4) + 3bc09830: 668d lui a3,0x3 + 3bc09832: 0691 addi a3,a3,4 + 3bc09834: c754 sw a3,12(a4) + 3bc09836: 050206b7 lui a3,0x5020 + 3bc0983a: 40668693 addi a3,a3,1030 # 5020406 + 3bc0983e: cb14 sw a3,16(a4) + 3bc09840: 010106b7 lui a3,0x1010 + 3bc09844: 30368693 addi a3,a3,771 # 1010303 <__BSS_SIZE__+0x100a6f3> + 3bc09848: cb54 sw a3,20(a4) + 3bc0984a: 50300693 li a3,1283 + 3bc0984e: d314 sw a3,32(a4) + 3bc09850: 048586b7 lui a3,0x4858 + 3bc09854: 18078713 addi a4,a5,384 + 3bc09858: 30268693 addi a3,a3,770 # 4858302 + 3bc0985c: cb14 sw a3,16(a4) + 3bc0985e: 000706b7 lui a3,0x70 + 3bc09862: 10268693 addi a3,a3,258 # 70102 <__BSS_SIZE__+0x6a4f2> + 3bc09866: cb54 sw a3,20(a4) + 3bc09868: 07c136b7 lui a3,0x7c13 + 3bc0986c: 12168693 addi a3,a3,289 # 7c13121 + 3bc09870: cf14 sw a3,24(a4) + 3bc09872: 02100693 li a3,33 + 3bc09876: cf54 sw a3,28(a4) + 3bc09878: c04006b7 lui a3,0xc0400 + 3bc0987c: 06e1 addi a3,a3,24 + 3bc0987e: d314 sw a3,32(a4) + 3bc09880: 00fe06b7 lui a3,0xfe0 + 3bc09884: 0ff68693 addi a3,a3,255 # fe00ff <__BSS_SIZE__+0xfda4ef> + 3bc09888: d354 sw a3,36(a4) + 3bc0988a: 800006b7 lui a3,0x80000 + 3bc0988e: d714 sw a3,40(a4) + 3bc09890: 2c100693 li a3,705 + 3bc09894: db14 sw a3,48(a4) + 3bc09896: 4685 li a3,1 + 3bc09898: c334 sw a3,64(a4) + 3bc0989a: 6609 lui a2,0x2 + 3bc0989c: 001405b7 lui a1,0x140 + 3bc098a0: f1f60613 addi a2,a2,-225 # 1f1f <__BSS_SIZE__-0x3cf1> + 3bc098a4: c374 sw a3,68(a4) + 3bc098a6: 70758593 addi a1,a1,1799 # 140707 <__BSS_SIZE__+0x13aaf7> + 3bc098aa: 20078713 addi a4,a5,512 + 3bc098ae: c310 sw a2,0(a4) + 3bc098b0: c34c sw a1,4(a4) + 3bc098b2: 2007a423 sw zero,520(a5) + 3bc098b6: 1f0005b7 lui a1,0x1f000 + 3bc098ba: c74c sw a1,12(a4) + 3bc098bc: cb10 sw a2,16(a4) + 3bc098be: 050f0637 lui a2,0x50f0 + 3bc098c2: 50560613 addi a2,a2,1285 # 50f0505 + 3bc098c6: cb50 sw a2,20(a4) + 3bc098c8: 06060637 lui a2,0x6060 + 3bc098cc: 60560613 addi a2,a2,1541 # 6060605 + 3bc098d0: cf10 sw a2,24(a4) + 3bc098d2: 60600613 li a2,1542 + 3bc098d6: cf50 sw a2,28(a4) + 3bc098d8: 6611 lui a2,0x4 + 3bc098da: f3f60593 addi a1,a2,-193 # 3f3f <__BSS_SIZE__-0x1cd1> + 3bc098de: d30c sw a1,32(a4) + 3bc098e0: 050505b7 lui a1,0x5050 + 3bc098e4: 50558593 addi a1,a1,1285 # 5050505 + 3bc098e8: d34c sw a1,36(a4) + 3bc098ea: d70c sw a1,40(a4) + 3bc098ec: 001f25b7 lui a1,0x1f2 + 3bc098f0: f0558593 addi a1,a1,-251 # 1f1f05 <__BSS_SIZE__+0x1ec2f5> + 3bc098f4: d74c sw a1,44(a4) + 3bc098f6: 070105b7 lui a1,0x7010 + 3bc098fa: 70858593 addi a1,a1,1800 # 7010708 + 3bc098fe: c32c sw a1,64(a4) + 3bc09900: 2407a223 sw zero,580(a5) + 3bc09904: f8560613 addi a2,a2,-123 + 3bc09908: cb30 sw a2,80(a4) + 3bc0990a: 02000613 li a2,32 + 3bc0990e: cb70 sw a2,84(a4) + 3bc09910: 10000637 lui a2,0x10000 + 3bc09914: 0a860613 addi a2,a2,168 # 100000a8 + 3bc09918: cf70 sw a2,92(a4) + 3bc0991a: d370 sw a2,100(a4) + 3bc0991c: d770 sw a2,108(a4) + 3bc0991e: 3007a023 sw zero,768(a5) + 3bc09922: 3007a223 sw zero,772(a5) + 3bc09926: 3007a623 sw zero,780(a5) + 3bc0992a: 30078713 addi a4,a5,768 + 3bc0992e: d314 sw a3,32(a4) + 3bc09930: 3607a623 sw zero,876(a5) + 3bc09934: 40078713 addi a4,a5,1024 + 3bc09938: 4645 li a2,17 + 3bc0993a: c310 sw a2,0(a4) + 3bc0993c: 6619 lui a2,0x6 + 3bc0993e: c350 sw a2,4(a4) + 3bc09940: c710 sw a2,8(a4) + 3bc09942: 48078713 addi a4,a5,1152 + 3bc09946: cb14 sw a3,16(a4) + 3bc09948: 489d li a7,7 + 3bc0994a: 01172a23 sw a7,20(a4) # 14000014 + 3bc0994e: 06a00813 li a6,106 + 3bc09952: 6505 lui a0,0x1 + 3bc09954: 01072c23 sw a6,24(a4) + 3bc09958: e0750513 addi a0,a0,-505 # e07 <__BSS_SIZE__-0x4e09> + 3bc0995c: 01a805b7 lui a1,0x1a80 + 3bc09960: cf48 sw a0,28(a4) + 3bc09962: 1a858593 addi a1,a1,424 # 1a801a8 <__BSS_SIZE__+0x1a7a598> + 3bc09966: d30c sw a1,32(a4) + 3bc09968: db50 sw a2,52(a4) + 3bc0996a: df10 sw a2,56(a4) + 3bc0996c: 50078713 addi a4,a5,1280 + 3bc09970: c334 sw a3,64(a4) + 3bc09972: 05172223 sw a7,68(a4) + 3bc09976: 05072423 sw a6,72(a4) + 3bc0997a: c768 sw a0,76(a4) + 3bc0997c: cb2c sw a1,80(a4) + 3bc0997e: d370 sw a2,100(a4) + 3bc09980: d730 sw a2,104(a4) + 3bc09982: 58078713 addi a4,a5,1408 + 3bc09986: db34 sw a3,112(a4) + 3bc09988: 07172a23 sw a7,116(a4) + 3bc0998c: 07072c23 sw a6,120(a4) + 3bc09990: df68 sw a0,124(a4) + 3bc09992: 60078793 addi a5,a5,1536 + 3bc09996: c38c sw a1,0(a5) + 3bc09998: 8082 ret + +000000003bc0999a : + 3bc0999a: 080047b7 lui a5,0x8004 + 3bc0999e: 4709 li a4,2 + 3bc099a0: db98 sw a4,48(a5) + 3bc099a2: 00400737 lui a4,0x400 + 3bc099a6: 0761 addi a4,a4,24 + 3bc099a8: 18078693 addi a3,a5,384 # 8004180 + 3bc099ac: d298 sw a4,32(a3) + 3bc099ae: 0800a737 lui a4,0x800a + 3bc099b2: 00072a23 sw zero,20(a4) # 800a014 + 3bc099b6: 63746737 lui a4,0x63746 + 3bc099ba: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32f61> + 3bc099be: c7d8 sw a4,12(a5) + 3bc099c0: 08000737 lui a4,0x8000 + 3bc099c4: c3f8 sw a4,68(a5) + 3bc099c6: 8082 ret + +000000003bc099c8 : + 3bc099c8: 080047b7 lui a5,0x8004 + 3bc099cc: c0400737 lui a4,0xc0400 + 3bc099d0: 0207a823 sw zero,48(a5) # 8004030 + 3bc099d4: 0761 addi a4,a4,24 + 3bc099d6: 1ae7a023 sw a4,416(a5) + 3bc099da: 6705 lui a4,0x1 + 3bc099dc: 177d addi a4,a4,-1 + 3bc099de: 0800a6b7 lui a3,0x800a + 3bc099e2: cad8 sw a4,20(a3) + 3bc099e4: 63746737 lui a4,0x63746 + 3bc099e8: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32f61> + 3bc099ec: c7d8 sw a4,12(a5) + 3bc099ee: 14000737 lui a4,0x14000 + 3bc099f2: c3f8 sw a4,68(a5) + 3bc099f4: 8082 ret + +000000003bc099f6 : + 3bc099f6: 080047b7 lui a5,0x8004 + 3bc099fa: 4398 lw a4,0(a5) + 3bc099fc: 0000a797 auipc a5,0xa + 3bc09a00: 9ee7aa23 sw a4,-1548(a5) # 3bc133f0 + 3bc09a04: 34c7368b extu a3,a4,13,12 + 3bc09a08: 4785 li a5,1 + 3bc09a0a: 9f95 subw a5,a5,a3 + 3bc09a0c: 40f557bb sraw a5,a0,a5 + 3bc09a10: 01e7571b srliw a4,a4,0x1e + 3bc09a14: 4689 li a3,2 + 3bc09a16: 40e6873b subw a4,a3,a4 + 3bc09a1a: 0ff7f793 andi a5,a5,255 + 3bc09a1e: 40e7d7bb sraw a5,a5,a4 + 3bc09a22: 0ff7f793 andi a5,a5,255 + 3bc09a26: ffb7861b addiw a2,a5,-5 + 3bc09a2a: 4711 li a4,4 + 3bc09a2c: 1ac76f63 bltu a4,a2,3bc09bea + 3bc09a30: 00002717 auipc a4,0x2 + 3bc09a34: 9f070713 addi a4,a4,-1552 # 3bc0b420 + 3bc09a38: 54c7478b lurw a5,a4,a2,2 + 3bc09a3c: 2781 sext.w a5,a5 + 3bc09a3e: 97ba add a5,a5,a4 + 3bc09a40: 8782 jr a5 + 3bc09a42: 00510737 lui a4,0x510 + 3bc09a46: 080047b7 lui a5,0x8004 + 3bc09a4a: 0765 addi a4,a4,25 + 3bc09a4c: d3f8 sw a4,100(a5) + 3bc09a4e: 0b011737 lui a4,0xb011 + 3bc09a52: 61070713 addi a4,a4,1552 # b011610 + 3bc09a56: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09a5a: 50200713 li a4,1282 + 3bc09a5e: 12e7a023 sw a4,288(a5) + 3bc09a62: 08004637 lui a2,0x8004 + 3bc09a66: 6709 lui a4,0x2 + 3bc09a68: 20060793 addi a5,a2,512 # 8004200 + 3bc09a6c: f1f70713 addi a4,a4,-225 # 1f1f <__BSS_SIZE__-0x3cf1> + 3bc09a70: 003f06b7 lui a3,0x3f0 + 3bc09a74: c398 sw a4,0(a5) + 3bc09a76: 60668693 addi a3,a3,1542 # 3f0606 <__BSS_SIZE__+0x3ea9f6> + 3bc09a7a: c3d4 sw a3,4(a5) + 3bc09a7c: 20062423 sw zero,520(a2) + 3bc09a80: 1f1f06b7 lui a3,0x1f1f0 + 3bc09a84: c7d4 sw a3,12(a5) + 3bc09a86: cb98 sw a4,16(a5) + 3bc09a88: 040f0737 lui a4,0x40f0 + 3bc09a8c: 40470713 addi a4,a4,1028 # 40f0404 <__BSS_SIZE__+0x40ea7f4> + 3bc09a90: cbd8 sw a4,20(a5) + 3bc09a92: 04040737 lui a4,0x4040 + 3bc09a96: 40470713 addi a4,a4,1028 # 4040404 <__BSS_SIZE__+0x403a7f4> + 3bc09a9a: cf98 sw a4,24(a5) + 3bc09a9c: 40400693 li a3,1028 + 3bc09aa0: cfd4 sw a3,28(a5) + 3bc09aa2: 6691 lui a3,0x4 + 3bc09aa4: f3f68693 addi a3,a3,-193 # 3f3f <__BSS_SIZE__-0x1cd1> + 3bc09aa8: d394 sw a3,32(a5) + 3bc09aaa: d3d8 sw a4,36(a5) + 3bc09aac: d798 sw a4,40(a5) + 3bc09aae: 001f2737 lui a4,0x1f2 + 3bc09ab2: f0470713 addi a4,a4,-252 # 1f1f04 <__BSS_SIZE__+0x1ec2f4> + 3bc09ab6: d7d8 sw a4,44(a5) + 3bc09ab8: a289 j 3bc09bfa + 3bc09aba: 00510737 lui a4,0x510 + 3bc09abe: 080047b7 lui a5,0x8004 + 3bc09ac2: 02c70713 addi a4,a4,44 # 51002c <__BSS_SIZE__+0x50a41c> + 3bc09ac6: d3f8 sw a4,100(a5) + 3bc09ac8: 0a011737 lui a4,0xa011 + 3bc09acc: 61070713 addi a4,a4,1552 # a011610 + 3bc09ad0: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09ad4: 50300713 li a4,1283 + 3bc09ad8: 12e7a023 sw a4,288(a5) + 3bc09adc: 08004637 lui a2,0x8004 + 3bc09ae0: 6709 lui a4,0x2 + 3bc09ae2: 20060793 addi a5,a2,512 # 8004200 + 3bc09ae6: f1f70713 addi a4,a4,-225 # 1f1f <__BSS_SIZE__-0x3cf1> + 3bc09aea: 003f06b7 lui a3,0x3f0 + 3bc09aee: c398 sw a4,0(a5) + 3bc09af0: 70768693 addi a3,a3,1799 # 3f0707 <__BSS_SIZE__+0x3eaaf7> + 3bc09af4: c3d4 sw a3,4(a5) + 3bc09af6: 20062423 sw zero,520(a2) + 3bc09afa: 1f0006b7 lui a3,0x1f000 + 3bc09afe: c7d4 sw a3,12(a5) + 3bc09b00: cb98 sw a4,16(a5) + 3bc09b02: 050f0737 lui a4,0x50f0 + 3bc09b06: 50570713 addi a4,a4,1285 # 50f0505 + 3bc09b0a: cbd8 sw a4,20(a5) + 3bc09b0c: 05050737 lui a4,0x5050 + 3bc09b10: 50570713 addi a4,a4,1285 # 5050505 + 3bc09b14: cf98 sw a4,24(a5) + 3bc09b16: 50500693 li a3,1285 + 3bc09b1a: cfd4 sw a3,28(a5) + 3bc09b1c: 6691 lui a3,0x4 + 3bc09b1e: f3f68693 addi a3,a3,-193 # 3f3f <__BSS_SIZE__-0x1cd1> + 3bc09b22: d394 sw a3,32(a5) + 3bc09b24: d3d8 sw a4,36(a5) + 3bc09b26: d798 sw a4,40(a5) + 3bc09b28: 001f2737 lui a4,0x1f2 + 3bc09b2c: f0570713 addi a4,a4,-251 # 1f1f05 <__BSS_SIZE__+0x1ec2f5> + 3bc09b30: b759 j 3bc09ab6 + 3bc09b32: 00510737 lui a4,0x510 + 3bc09b36: 080047b7 lui a5,0x8004 + 3bc09b3a: 02b70713 addi a4,a4,43 # 51002b <__BSS_SIZE__+0x50a41b> + 3bc09b3e: d3f8 sw a4,100(a5) + 3bc09b40: 0b0f1737 lui a4,0xb0f1 + 3bc09b44: 61070713 addi a4,a4,1552 # b0f1610 + 3bc09b48: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09b4c: 50300713 li a4,1283 + 3bc09b50: 12e7a023 sw a4,288(a5) + 3bc09b54: 08004637 lui a2,0x8004 + 3bc09b58: 6709 lui a4,0x2 + 3bc09b5a: 20060793 addi a5,a2,512 # 8004200 + 3bc09b5e: f1f70713 addi a4,a4,-225 # 1f1f <__BSS_SIZE__-0x3cf1> + 3bc09b62: 000706b7 lui a3,0x70 + 3bc09b66: c398 sw a4,0(a5) + 3bc09b68: 70768693 addi a3,a3,1799 # 70707 <__BSS_SIZE__+0x6aaf7> + 3bc09b6c: c3d4 sw a3,4(a5) + 3bc09b6e: 20062423 sw zero,520(a2) + 3bc09b72: 1f0006b7 lui a3,0x1f000 + 3bc09b76: c7d4 sw a3,12(a5) + 3bc09b78: cb98 sw a4,16(a5) + 3bc09b7a: 060f0737 lui a4,0x60f0 + 3bc09b7e: 60670713 addi a4,a4,1542 # 60f0606 + 3bc09b82: cbd8 sw a4,20(a5) + 3bc09b84: 06060737 lui a4,0x6060 + 3bc09b88: 60670713 addi a4,a4,1542 # 6060606 + 3bc09b8c: cf98 sw a4,24(a5) + 3bc09b8e: 60600693 li a3,1542 + 3bc09b92: cfd4 sw a3,28(a5) + 3bc09b94: 6691 lui a3,0x4 + 3bc09b96: f3f68693 addi a3,a3,-193 # 3f3f <__BSS_SIZE__-0x1cd1> + 3bc09b9a: d394 sw a3,32(a5) + 3bc09b9c: d3d8 sw a4,36(a5) + 3bc09b9e: d798 sw a4,40(a5) + 3bc09ba0: 001f2737 lui a4,0x1f2 + 3bc09ba4: f0670713 addi a4,a4,-250 # 1f1f06 <__BSS_SIZE__+0x1ec2f6> + 3bc09ba8: b739 j 3bc09ab6 + 3bc09baa: 00510737 lui a4,0x510 + 3bc09bae: 080047b7 lui a5,0x8004 + 3bc09bb2: 04170713 addi a4,a4,65 # 510041 <__BSS_SIZE__+0x50a431> + 3bc09bb6: d3f8 sw a4,100(a5) + 3bc09bb8: 0b0f1737 lui a4,0xb0f1 + 3bc09bbc: 61070713 addi a4,a4,1552 # b0f1610 + 3bc09bc0: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09bc4: 50400713 li a4,1284 + 3bc09bc8: b761 j 3bc09b50 + 3bc09bca: 00510737 lui a4,0x510 + 3bc09bce: 080047b7 lui a5,0x8004 + 3bc09bd2: 06e70713 addi a4,a4,110 # 51006e <__BSS_SIZE__+0x50a45e> + 3bc09bd6: d3f8 sw a4,100(a5) + 3bc09bd8: 0b0f1737 lui a4,0xb0f1 + 3bc09bdc: 61070713 addi a4,a4,1552 # b0f1610 + 3bc09be0: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09be4: 50500713 li a4,1285 + 3bc09be8: b7a5 j 3bc09b50 + 3bc09bea: 4719 li a4,6 + 3bc09bec: eee788e3 beq a5,a4,3bc09adc + 3bc09bf0: 00f74c63 blt a4,a5,3bc09c08 + 3bc09bf4: 4715 li a4,5 + 3bc09bf6: e6e786e3 beq a5,a4,3bc09a62 + 3bc09bfa: 080047b7 lui a5,0x8004 + 3bc09bfe: 4709 li a4,2 + 3bc09c00: d3b8 sw a4,96(a5) + 3bc09c02: 0607a023 sw zero,96(a5) # 8004060 + 3bc09c06: 8082 ret + 3bc09c08: 37e5 addiw a5,a5,-7 + 3bc09c0a: 4709 li a4,2 + 3bc09c0c: fef767e3 bltu a4,a5,3bc09bfa + 3bc09c10: b791 j 3bc09b54 + +000000003bc09c12 : + 3bc09c12: 03020737 lui a4,0x3020 + 3bc09c16: 080007b7 lui a5,0x8000 + 3bc09c1a: 10070713 addi a4,a4,256 # 3020100 <__BSS_SIZE__+0x301a4f0> + 3bc09c1e: c398 sw a4,0(a5) + 3bc09c20: 07060737 lui a4,0x7060 + 3bc09c24: 50470713 addi a4,a4,1284 # 7060504 + 3bc09c28: c3d8 sw a4,4(a5) + 3bc09c2a: 0b0a1737 lui a4,0xb0a1 + 3bc09c2e: 90870713 addi a4,a4,-1784 # b0a0908 + 3bc09c32: c798 sw a4,8(a5) + 3bc09c34: 0f0e1737 lui a4,0xf0e1 + 3bc09c38: d0c70713 addi a4,a4,-756 # f0e0d0c + 3bc09c3c: c7d8 sw a4,12(a5) + 3bc09c3e: 13121737 lui a4,0x13121 + 3bc09c42: 11070713 addi a4,a4,272 # 13121110 + 3bc09c46: cb98 sw a4,16(a5) + 3bc09c48: 00161737 lui a4,0x161 + 3bc09c4c: 51470713 addi a4,a4,1300 # 161514 <__BSS_SIZE__+0x15b904> + 3bc09c50: cbd8 sw a4,20(a5) + 3bc09c52: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09c56: 10000593 li a1,256 + 3bc09c5a: 76543737 lui a4,0x76543 + 3bc09c5e: cfcc sw a1,28(a5) + 3bc09c60: 21070713 addi a4,a4,528 # 76543210 <__BL2_END__+0x3a92fe00> + 3bc09c64: d398 sw a4,32(a5) + 3bc09c66: 46a1 li a3,8 + 3bc09c68: d3d4 sw a3,36(a5) + 3bc09c6a: d798 sw a4,40(a5) + 3bc09c6c: d7d4 sw a3,44(a5) + 3bc09c6e: 007f0737 lui a4,0x7f0 + 3bc09c72: 0407a023 sw zero,64(a5) + 3bc09c76: 0735 addi a4,a4,13 + 3bc09c78: c3f8 sw a4,68(a5) + 3bc09c7a: 0407a423 sw zero,72(a5) + 3bc09c7e: 4741 li a4,16 + 3bc09c80: c7f8 sw a4,76(a5) + 3bc09c82: 4611 li a2,4 + 3bc09c84: 0c001737 lui a4,0xc001 + 3bc09c88: cbb0 sw a2,80(a5) + 3bc09c8a: b0070713 addi a4,a4,-1280 # c000b00 + 3bc09c8e: cbf8 sw a4,84(a5) + 3bc09c90: 09160737 lui a4,0x9160 + 3bc09c94: 04f70713 addi a4,a4,79 # 916004f + 3bc09c98: cfb8 sw a4,88(a5) + 3bc09c9a: 040008b7 lui a7,0x4000 + 3bc09c9e: 0407ae23 sw zero,92(a5) + 3bc09ca2: 37088713 addi a4,a7,880 # 4000370 <__BSS_SIZE__+0x3ffa760> + 3bc09ca6: d3b8 sw a4,96(a5) + 3bc09ca8: 0e001737 lui a4,0xe001 + 3bc09cac: 94070713 addi a4,a4,-1728 # e000940 + 3bc09cb0: d3f8 sw a4,100(a5) + 3bc09cb2: 00800737 lui a4,0x800 + 3bc09cb6: d7b8 sw a4,104(a5) + 3bc09cb8: 10800713 li a4,264 + 3bc09cbc: dbb8 sw a4,112(a5) + 3bc09cbe: 00072737 lui a4,0x72 + 3bc09cc2: dbf8 sw a4,116(a5) + 3bc09cc4: 1f00e6b7 lui a3,0x1f00e + 3bc09cc8: 08078713 addi a4,a5,128 + 3bc09ccc: c314 sw a3,0(a4) + 3bc09cce: 010916b7 lui a3,0x1091 + 3bc09cd2: 06bd addi a3,a3,15 + 3bc09cd4: c354 sw a3,4(a4) + 3bc09cd6: 0a0106b7 lui a3,0xa010 + 3bc09cda: 11468693 addi a3,a3,276 # a010114 + 3bc09cde: c714 sw a3,8(a4) + 3bc09ce0: aaaa06b7 lui a3,0xaaaa0 + 3bc09ce4: 08f68693 addi a3,a3,143 # ffffffffaaaa008f <__BL2_END__+0xffffffff6ee8cc7f> + 3bc09ce8: c754 sw a3,12(a4) + 3bc09cea: 6691 lui a3,0x4 + 3bc09cec: 80068513 addi a0,a3,-2048 # 3800 <__BSS_SIZE__-0x2410> + 3bc09cf0: cb08 sw a0,16(a4) + 3bc09cf2: 6505 lui a0,0x1 + 3bc09cf4: 80150813 addi a6,a0,-2047 # 801 <__BSS_SIZE__-0x540f> + 3bc09cf8: 01072a23 sw a6,20(a4) # 72014 <__BSS_SIZE__+0x6c404> + 3bc09cfc: 07400837 lui a6,0x7400 + 3bc09d00: 54080813 addi a6,a6,1344 # 7400540 + 3bc09d04: 03072023 sw a6,32(a4) + 3bc09d08: 01420837 lui a6,0x1420 + 3bc09d0c: 50480813 addi a6,a6,1284 # 1420504 <__BSS_SIZE__+0x141a8f4> + 3bc09d10: 03072223 sw a6,36(a4) + 3bc09d14: 00550837 lui a6,0x550 + 3bc09d18: 0829 addi a6,a6,10 + 3bc09d1a: 03072423 sw a6,40(a4) + 3bc09d1e: 00554837 lui a6,0x554 + 3bc09d22: c5a80813 addi a6,a6,-934 # 553c5a <__BSS_SIZE__+0x54e04a> + 3bc09d26: 03072623 sw a6,44(a4) + 3bc09d2a: 00aaa837 lui a6,0xaaa + 3bc09d2e: 5c380813 addi a6,a6,1475 # aaa5c3 <__BSS_SIZE__+0xaa49b3> + 3bc09d32: 03072823 sw a6,48(a4) + 3bc09d36: 00aaf837 lui a6,0xaaf + 3bc09d3a: 0f080813 addi a6,a6,240 # aaf0f0 <__BSS_SIZE__+0xaa94e0> + 3bc09d3e: 03072a23 sw a6,52(a4) + 3bc09d42: 1e001837 lui a6,0x1e001 + 3bc09d46: f0f80813 addi a6,a6,-241 # 1e000f0f + 3bc09d4a: 03072c23 sw a6,56(a4) + 3bc09d4e: 00084837 lui a6,0x84 + 3bc09d52: e1380813 addi a6,a6,-493 # 83e13 <__BSS_SIZE__+0x7e203> + 3bc09d56: 03072e23 sw a6,60(a4) + 3bc09d5a: 00030837 lui a6,0x30 + 3bc09d5e: 0e07a823 sw zero,240(a5) + 3bc09d62: 03380813 addi a6,a6,51 # 30033 <__BSS_SIZE__+0x2a423> + 3bc09d66: 07072a23 sw a6,116(a4) + 3bc09d6a: 00210837 lui a6,0x210 + 3bc09d6e: 02c80813 addi a6,a6,44 # 21002c <__BSS_SIZE__+0x20a41c> + 3bc09d72: 07072c23 sw a6,120(a4) + 3bc09d76: 00370837 lui a6,0x370 + 3bc09d7a: 0859 addi a6,a6,22 + 3bc09d7c: 07072e23 sw a6,124(a4) + 3bc09d80: 10078713 addi a4,a5,256 + 3bc09d84: 01172023 sw a7,0(a4) + 3bc09d88: 1007a223 sw zero,260(a5) + 3bc09d8c: 1007a623 sw zero,268(a5) + 3bc09d90: 1007a823 sw zero,272(a5) + 3bc09d94: 1007aa23 sw zero,276(a5) + 3bc09d98: 681d lui a6,0x7 + 3bc09d9a: 1007ac23 sw zero,280(a5) + 3bc09d9e: a1080813 addi a6,a6,-1520 # 6a10 <__BSS_SIZE__+0xe00> + 3bc09da2: 01072e23 sw a6,28(a4) + 3bc09da6: 1207a023 sw zero,288(a5) + 3bc09daa: ef700813 li a6,-265 + 3bc09dae: 03072223 sw a6,36(a4) + 3bc09db2: 487d li a6,31 + 3bc09db4: 03072423 sw a6,40(a4) + 3bc09db8: 4805 li a6,1 + 3bc09dba: 03072623 sw a6,44(a4) + 3bc09dbe: 10100813 li a6,257 + 3bc09dc2: 03072823 sw a6,48(a4) + 3bc09dc6: db4c sw a1,52(a4) + 3bc09dc8: 48d1 li a7,20 + 3bc09dca: 03172c23 sw a7,56(a4) + 3bc09dce: 1407a023 sw zero,320(a5) + 3bc09dd2: 1407a223 sw zero,324(a5) + 3bc09dd6: 80850e13 addi t3,a0,-2040 + 3bc09dda: 05c72423 sw t3,72(a4) + 3bc09dde: 1407a623 sw zero,332(a5) + 3bc09de2: 4895 li a7,5 + 3bc09de4: 05172823 sw a7,80(a4) + 3bc09de8: 05072a23 sw a6,84(a4) + 3bc09dec: 1407ac23 sw zero,344(a5) + 3bc09df0: 00333837 lui a6,0x333 + 3bc09df4: 1407ae23 sw zero,348(a5) + 3bc09df8: 33180813 addi a6,a6,817 # 333331 <__BSS_SIZE__+0x32d721> + 3bc09dfc: 1607a223 sw zero,356(a5) + 3bc09e00: 07072423 sw a6,104(a4) + 3bc09e04: 1607a623 sw zero,364(a5) + 3bc09e08: 1607a823 sw zero,368(a5) + 3bc09e0c: db6c sw a1,116(a4) + 3bc09e0e: 000205b7 lui a1,0x20 + 3bc09e12: 18078713 addi a4,a5,384 + 3bc09e16: 05c1 addi a1,a1,16 + 3bc09e18: c30c sw a1,0(a4) + 3bc09e1a: 1807a223 sw zero,388(a5) + 3bc09e1e: 000505b7 lui a1,0x50 + 3bc09e22: 1807a423 sw zero,392(a5) + 3bc09e26: 40058593 addi a1,a1,1024 # 50400 <__BSS_SIZE__+0x4a7f0> + 3bc09e2a: c74c sw a1,12(a4) + 3bc09e2c: 000215b7 lui a1,0x21 + 3bc09e30: 20e58593 addi a1,a1,526 # 2120e <__BSS_SIZE__+0x1b5fe> + 3bc09e34: cb0c sw a1,16(a4) + 3bc09e36: 2007a023 sw zero,512(a5) + 3bc09e3a: 20078713 addi a4,a5,512 + 3bc09e3e: 44000593 li a1,1088 + 3bc09e42: c34c sw a1,4(a4) + 3bc09e44: 2007a423 sw zero,520(a5) + 3bc09e48: 2207a023 sw zero,544(a5) + 3bc09e4c: d34c sw a1,36(a4) + 3bc09e4e: 2207a423 sw zero,552(a5) + 3bc09e52: 4007a023 sw zero,1024(a5) + 3bc09e56: 4007a223 sw zero,1028(a5) + 3bc09e5a: 4007a423 sw zero,1032(a5) + 3bc09e5e: 4007a623 sw zero,1036(a5) + 3bc09e62: 001005b7 lui a1,0x100 + 3bc09e66: 40078713 addi a4,a5,1024 + 3bc09e6a: e4b7558b swd a1,a1,(a4),2,3 + 3bc09e6e: 4007ac23 sw zero,1048(a5) + 3bc09e72: 04068693 addi a3,a3,64 + 3bc09e76: cf54 sw a3,28(a4) + 3bc09e78: 000416b7 lui a3,0x41 + 3bc09e7c: 50078713 addi a4,a5,1280 + 3bc09e80: 0685 addi a3,a3,1 + 3bc09e82: e0b7568b swd a3,a1,(a4),0,3 + 3bc09e86: 5007a423 sw zero,1288(a5) + 3bc09e8a: 5007a623 sw zero,1292(a5) + 3bc09e8e: cb10 sw a2,16(a4) + 3bc09e90: 5007aa23 sw zero,1300(a5) + 3bc09e94: 5007ac23 sw zero,1304(a5) + 3bc09e98: 5007ae23 sw zero,1308(a5) + 3bc09e9c: 480d li a6,3 + 3bc09e9e: 03072023 sw a6,32(a4) + 3bc09ea2: c334 sw a3,64(a4) + 3bc09ea4: c36c sw a1,68(a4) + 3bc09ea6: 5407a423 sw zero,1352(a5) + 3bc09eaa: 5407a623 sw zero,1356(a5) + 3bc09eae: cb30 sw a2,80(a4) + 3bc09eb0: 5407aa23 sw zero,1364(a5) + 3bc09eb4: 5407ac23 sw zero,1368(a5) + 3bc09eb8: 5407ae23 sw zero,1372(a5) + 3bc09ebc: 07072023 sw a6,96(a4) + 3bc09ec0: 08001737 lui a4,0x8001 + 3bc09ec4: 90070793 addi a5,a4,-1792 # 8000900 + 3bc09ec8: 40000693 li a3,1024 + 3bc09ecc: c394 sw a3,0(a5) + 3bc09ece: d7d4 sw a3,44(a5) + 3bc09ed0: db94 sw a3,48(a5) + 3bc09ed2: dbd4 sw a3,52(a5) + 3bc09ed4: df94 sw a3,56(a5) + 3bc09ed6: 94072023 sw zero,-1728(a4) + 3bc09eda: 96072823 sw zero,-1680(a4) + 3bc09ede: 96072a23 sw zero,-1676(a4) + 3bc09ee2: 080806b7 lui a3,0x8080 + 3bc09ee6: 96072c23 sw zero,-1672(a4) + 3bc09eea: 40468693 addi a3,a3,1028 # 8080404 + 3bc09eee: 08081837 lui a6,0x8081 + 3bc09ef2: dff4 sw a3,124(a5) + 3bc09ef4: 80880813 addi a6,a6,-2040 # 8080808 + 3bc09ef8: 98070793 addi a5,a4,-1664 + 3bc09efc: 06400637 lui a2,0x6400 + 3bc09f00: 0107a023 sw a6,0(a5) + 3bc09f04: 64060613 addi a2,a2,1600 # 6400640 + 3bc09f08: a0070793 addi a5,a4,-1536 + 3bc09f0c: e0c7d60b swd a2,a2,(a5),0,3 + 3bc09f10: e2c7d60b swd a2,a2,(a5),1,3 + 3bc09f14: 64000f93 li t6,1600 + 3bc09f18: 01f7a823 sw t6,16(a5) + 3bc09f1c: 0d000f37 lui t5,0xd000 + 3bc09f20: 0a001337 lui t1,0xa001 + 3bc09f24: 01e7aa23 sw t5,20(a5) + 3bc09f28: b0030313 addi t1,t1,-1280 # a000b00 + 3bc09f2c: 000408b7 lui a7,0x40 + 3bc09f30: 0067ac23 sw t1,24(a5) + 3bc09f34: 40088893 addi a7,a7,1024 # 40400 <__BSS_SIZE__+0x3a7f0> + 3bc09f38: 004006b7 lui a3,0x400 + 3bc09f3c: 04068693 addi a3,a3,64 # 400040 <__BSS_SIZE__+0x3fa430> + 3bc09f40: 0117ae23 sw a7,28(a5) + 3bc09f44: d394 sw a3,32(a5) + 3bc09f46: d3d4 sw a3,36(a5) + 3bc09f48: d794 sw a3,40(a5) + 3bc09f4a: d7d4 sw a3,44(a5) + 3bc09f4c: 04000e93 li t4,64 + 3bc09f50: 03d7a823 sw t4,48(a5) + 3bc09f54: a2072a23 sw zero,-1484(a4) + 3bc09f58: 03c7ac23 sw t3,56(a5) + 3bc09f5c: 0307ae23 sw a6,60(a5) + 3bc09f60: c3b0 sw a2,64(a5) + 3bc09f62: c3f0 sw a2,68(a5) + 3bc09f64: c7b0 sw a2,72(a5) + 3bc09f66: c7f0 sw a2,76(a5) + 3bc09f68: 05f7a823 sw t6,80(a5) + 3bc09f6c: 05e7aa23 sw t5,84(a5) + 3bc09f70: 0467ac23 sw t1,88(a5) + 3bc09f74: 0517ae23 sw a7,92(a5) + 3bc09f78: d3b4 sw a3,96(a5) + 3bc09f7a: d3f4 sw a3,100(a5) + 3bc09f7c: d7b4 sw a3,104(a5) + 3bc09f7e: d7f4 sw a3,108(a5) + 3bc09f80: 07d7a823 sw t4,112(a5) + 3bc09f84: a6072a23 sw zero,-1420(a4) + 3bc09f88: 07c7ac23 sw t3,120(a5) + 3bc09f8c: 0707ae23 sw a6,124(a5) + 3bc09f90: b0072023 sw zero,-1280(a4) + 3bc09f94: b0072223 sw zero,-1276(a4) + 3bc09f98: b0070793 addi a5,a4,-1280 + 3bc09f9c: 00404837 lui a6,0x404 + 3bc09fa0: 0107a423 sw a6,8(a5) + 3bc09fa4: 90050513 addi a0,a0,-1792 + 3bc09fa8: c7c8 sw a0,12(a5) + 3bc09faa: 000716b7 lui a3,0x71 + 3bc09fae: b0072823 sw zero,-1264(a4) + 3bc09fb2: e0e68693 addi a3,a3,-498 # 70e0e <__BSS_SIZE__+0x6b1fe> + 3bc09fb6: cbd4 sw a3,20(a5) + 3bc09fb8: b0072c23 sw zero,-1256(a4) + 3bc09fbc: b0072e23 sw zero,-1252(a4) + 3bc09fc0: 40400637 lui a2,0x40400 + 3bc09fc4: d390 sw a2,32(a5) + 3bc09fc6: 05c1 addi a1,a1,16 + 3bc09fc8: d3cc sw a1,36(a5) + 3bc09fca: b2072823 sw zero,-1232(a4) + 3bc09fce: b2072a23 sw zero,-1228(a4) + 3bc09fd2: 0307ac23 sw a6,56(a5) + 3bc09fd6: dfc8 sw a0,60(a5) + 3bc09fd8: b4072023 sw zero,-1216(a4) + 3bc09fdc: c3f4 sw a3,68(a5) + 3bc09fde: b4072423 sw zero,-1208(a4) + 3bc09fe2: b4072623 sw zero,-1204(a4) + 3bc09fe6: cbb0 sw a2,80(a5) + 3bc09fe8: cbec sw a1,84(a5) + 3bc09fea: 8082 ret + 3bc09fec: 0000 unimp + ... + +000000003bc09ff0 : + 3bc09ff0: 3032 3232 312d 2d32 3032 3254 3a31 3435 2022-12-20T21:54 + 3bc0a000: 323a 2b33 3830 303a 0030 0000 0000 0000 :23+08:00....... + +000000003bc0a010 : + 3bc0a010: 624a 3832 3967 673a 6536 3835 6565 0031 Jb28g9:g6e58ee1. + 3bc0a020: 3201 504f 4e45 4253 3a49 6e20 7865 5f74 .2OPENSBI: next_ + 3bc0a030: 6461 7264 303d 2578 786c 6120 6772 3d31 addr=0x%lx arg1= + 3bc0a040: 7830 6c25 0078 0000 7830 0000 63c6 ffff 0x%lx...0x...c.. + 3bc0a050: 636c ffff 636c ffff 636c ffff 636c ffff lc..lc..lc..lc.. + 3bc0a060: 63c6 ffff 636c ffff 636c ffff 647a ffff .c..lc..lc..zd.. + 3bc0a070: 636c ffff 636c ffff 636c ffff 6422 ffff lc..lc..lc.."d.. + 3bc0a080: 636c ffff 636c ffff 6402 ffff 636c ffff lc..lc...d..lc.. + 3bc0a090: 6480 ffff 636c ffff 636c ffff 6456 ffff .d..lc..lc..Vd.. + 3bc0a0a0: 636c ffff 6474 ffff 3001 4520 523a 5345 lc..td...0 E:RES + 3bc0a0b0: 5445 253a 3a73 6425 000a 0000 0000 0000 ET:%s:%d........ + 3bc0a0c0: 3001 4520 723a 3d61 7830 6c25 0a78 0000 .0 E:ra=0x%lx... + 3bc0a0d0: 6170 696e 0063 0000 3201 5352 2e43 000a panic....2RSC... + 3bc0a0e0: 3201 4c50 534c 0a2e 0000 0000 0000 0000 .2PLLS.......... + 3bc0a0f0: 3201 4c50 454c 0a2e 0000 0000 0000 0000 .2PLLE.......... + 3bc0a100: 3201 7355 2065 6e69 6574 6e72 6c61 3320 .2Use internal 3 + 3bc0a110: 6b32 000a 0000 0000 3201 7473 6f5f 5f6e 2k.......2st_on_ + 3bc0a120: 6572 7361 6e6f 253d 0a78 0000 0000 0000 reason=%x....... + 3bc0a130: 3201 7473 6f5f 6666 725f 6165 6f73 3d6e .2st_off_reason= + 3bc0a140: 7825 000a 0000 0000 0000 249f 1746 245d %x.........$F.]$ + 3bc0a150: 1746 245d aaab 24aa 8201 0012 8101 0018 F.]$...$........ + 3bc0a160: 8201 0030 8101 0016 c906 a55a 0024 0000 ..0.......Z.$... + +000000003bc0a170 : + 3bc0a170: 3130 3332 3534 3736 3938 6261 6463 6665 0123456789abcdef + 3bc0a180: 6867 6a69 6c6b 6e6d 706f 7271 7473 7675 ghijklmnopqrstuv + 3bc0a190: 7877 7a79 0000 0000 0101 0101 0101 0101 wxyz............ + 3bc0a1a0: 3301 4920 4c3a 4549 252f 2f64 7025 302f .3 I:LIE/%d/%p/0 + 3bc0a1b0: 2578 2f78 6c25 2e75 000a 0000 0000 0000 x%x/%lu......... + 3bc0a1c0: 3201 3250 2f53 7830 6c25 2f78 7025 0a2e .2P2S/0x%lx/%p.. + ... + 3bc0a1d8: 3101 5720 4c3a 3250 4e5f 4d4f 4741 4349 .1 W:LP2_NOMAGIC + 3bc0a1e8: 000a 0000 0000 0000 3001 4520 703a 7261 .........0 E:par + 3bc0a1f8: 6d61 5f32 6b63 7573 206d 3028 2578 2f78 am2_cksum (0x%x/ + 3bc0a208: 7830 7825 0a29 0000 3201 3250 2e45 000a 0x%x)....2P2E... + 3bc0a218: 3201 5044 2f53 7830 7825 302f 2578 2e78 .2DPS/0x%x/0x%x. + 3bc0a228: 000a 0000 0000 0000 3001 4520 643a 7264 .........0 E:ddr + 3bc0a238: 705f 7261 6d61 635f 736b 6d75 2820 7830 _param_cksum (0x + 3bc0a248: 7825 302f 2578 2978 000a 0000 0000 0000 %x/0x%x)........ + 3bc0a258: 3201 5044 2e45 000a 3101 5720 443a 204c .2DPE....1 W:DL + 3bc0a268: 6163 636e 6c65 656c 2e64 4c20 616f 2064 cancelled. Load + 3bc0a278: 6c66 7361 2e68 2820 6425 2e29 000a 0000 flash. (%d)..... + 3bc0a288: 3001 4520 463a 6961 656c 2064 6f74 6c20 .0 E:Failed to l + 3bc0a298: 616f 2064 4444 2052 6170 6172 206d 2528 oad DDR param (% + 3bc0a2a8: 2964 0a2e 0000 0000 3201 3243 2f53 7830 d).......2C2S/0x + 3bc0a2b8: 7825 302f 2578 2f78 7830 7825 0a2e 0000 %x/0x%x/0x%x.... + 3bc0a2c8: 3201 6f4e 4320 3039 4c36 6920 616d 6567 .2No C906L image + 3bc0a2d8: 0a2e 0000 0000 0000 3001 4520 623a 636c .........0 E:blc + 3bc0a2e8: 5f70 6e32 5f64 7572 616e 6464 2072 3028 p_2nd_runaddr (0 + 3bc0a2f8: 2578 2978 6920 2073 6f6e 2074 6e69 4420 x%x) is not in D + 3bc0a308: 4152 2e4d 000a 0000 3001 4520 623a 636c RAM......0 E:blc + 3bc0a318: 5f70 6e32 5f64 6973 657a 2820 7830 7825 p_2nd_size (0x%x + 3bc0a328: 2029 7369 6e20 746f 6920 206e 5244 4d41 ) is not in DRAM + 3bc0a338: 0a2e 0000 0000 0000 3001 4520 623a 636c .........0 E:blc + 3bc0a348: 5f70 6e32 5f64 6b63 7573 206d 3028 2578 p_2nd_cksum (0x% + 3bc0a358: 2f78 7830 7825 0a29 0000 0000 0000 0000 x/0x%x)......... + 3bc0a368: 3001 4520 763a 7265 6669 2079 6c62 7063 .0 E:verify blcp + 3bc0a378: 3220 646e 2820 6425 0a29 0000 0000 0000 2nd (%d)....... + 3bc0a388: 3201 3243 2e45 000a 3201 534d 302f 2578 .2C2E....2MS/0x% + 3bc0a398: 2f78 7830 7825 302f 2578 2e78 000a 0000 x/0x%x/0x%x..... + 3bc0a3a8: 3201 6f4e 6d20 6e6f 7469 726f 0a2e 0000 .2No monitor.... + 3bc0a3b8: 3001 4520 6d3a 6e6f 7469 726f 725f 6e75 .0 E:monitor_run + 3bc0a3c8: 6461 7264 2820 7830 7825 2029 7369 6e20 addr (0x%x) is n + 3bc0a3d8: 746f 6920 206e 5244 4d41 0a2e 0000 0000 ot in DRAM...... + 3bc0a3e8: 3001 4520 6d3a 6e6f 7469 726f 735f 7a69 .0 E:monitor_siz + 3bc0a3f8: 2065 3028 2578 2978 6920 2073 6f6e 2074 e (0x%x) is not + 3bc0a408: 6e69 4420 4152 2e4d 000a 0000 0000 0000 in DRAM......... + 3bc0a418: 3001 4520 6d3a 6e6f 7469 726f 635f 736b .0 E:monitor_cks + 3bc0a428: 6d75 2820 7830 7825 302f 2578 2978 000a um (0x%x/0x%x).. + 3bc0a438: 3001 4520 763a 7265 6669 2079 6f6d 696e .0 E:verify moni + 3bc0a448: 6f74 2072 2528 2964 000a 0000 0000 0000 tor (%d)........ + 3bc0a458: 3201 454d 0a2e 0000 3201 324c 302f 2578 .2ME.....2L2/0x% + 3bc0a468: 2e78 000a 0000 0000 3201 324c 302f 2578 x........2L2/0x% + 3bc0a478: 2f78 7830 7825 302f 2578 786c 302f 2578 x/0x%x/0x%lx/0x% + 3bc0a488: 2f78 7830 7825 000a 3201 4f43 504d 252f x/0x%x...2COMP/% + 3bc0a498: 2e64 000a 0000 0000 3001 4520 6c3a 616f d........0 E:loa + 3bc0a4a8: 6564 5f72 6e32 5f64 6b63 7573 206d 3028 der_2nd_cksum (0 + 3bc0a4b8: 2578 2f78 7830 7825 0a29 0000 0000 0000 x%x/0x%x)....... + 3bc0a4c8: 3001 4520 763a 7265 6669 2079 6f6c 6461 .0 E:verify load + 3bc0a4d8: 7265 3220 646e 2820 6425 0a29 0000 0000 er 2nd (%d)..... + 3bc0a4e8: 3001 4520 463a 6961 656c 2064 6f74 6420 .0 E:Failed to d + 3bc0a4f8: 6365 6d6f 7270 7365 2073 6f6c 6461 7265 ecompress loader + 3bc0a508: 325f 646e 2820 6425 252f 756c 0a29 0000 _2nd (%d/%lu)... + 3bc0a518: 3201 6f4c 6461 7265 325f 646e 6c20 616f .2Loader_2nd loa + 3bc0a528: 6564 2e64 000a 0000 3001 4520 463a 6961 ded......0 E:Fai + 3bc0a538: 656c 2064 6f74 6c20 616f 2064 6572 7473 led to load rest + 3bc0a548: 2820 6425 2e29 000a 3201 754a 706d 7420 (%d)....2Jump t + 3bc0a558: 206f 6f6d 696e 6f74 2072 7461 3020 2578 o monitor at 0x% + 3bc0a568: 786c 0a2e 0000 0000 3201 754a 706d 7420 lx.......2Jump t + 3bc0a578: 206f 6f6c 6461 7265 325f 646e 6120 2074 o loader_2nd at + 3bc0a588: 7830 6c25 2e78 000a 3201 460a 4253 204c 0x%lx....2.FSBL + 3bc0a598: 7325 253a 0a73 0000 3301 4920 733a 5f77 %s:%s....3 I:sw_ + 3bc0a5a8: 6e69 6f66 303d 2578 0a78 0000 0000 0000 info=0x%x....... + 3bc0a5b8: 3301 4920 663a 7069 705f 7261 6d61 3a31 .3 I:fip_param1: + 3bc0a5c8: 7020 7261 6d61 635f 736b 6d75 303d 2578 param_cksum=0x% + 3bc0a5d8: 2078 6170 6172 326d 6c5f 616f 6164 6464 x param2_loadadd + 3bc0a5e8: 3d72 7830 7825 000a 3301 4920 433a 5f50 r=0x%x...3 I:CP_ + 3bc0a5f8: 5453 5441 5f45 4552 3d47 7830 7825 000a STATE_REG=0x%x.. + 3bc0a608: 3201 4c42 2032 6e65 2e64 000a 0000 0000 .2BL2 end....... + 3bc0a618: 5643 444c 3230 000a 3001 4520 253a 2073 CVLD02...0 E:%s + 3bc0a628: 6163 276e 2074 6c61 6f6c 2063 6c25 2075 can't alloc %lu + 3bc0a638: 7962 6574 0a73 0000 3001 4520 253a 3a73 bytes....0 E:%s: + 3bc0a648: 6420 7473 735f 7a69 2065 7369 4e20 4c55 dst_size is NUL + 3bc0a658: 2e4c 000a 0000 0000 3301 4920 4c3a 4d5a L........3 I:LZM + 3bc0a668: 3141 252f 2f70 7025 0a2e 0000 0000 0000 A1/%p/%p........ + 3bc0a678: 3301 4920 4c3a 4d5a 3241 752f 636e 6d6f .3 I:LZMA2/uncom + 3bc0a688: 5f70 6973 657a 303d 2578 786c 000a 0000 p_size=0x%lx.... + 3bc0a698: 3001 4520 4c3a 6d7a 4461 6365 646f 2065 .0 E:LzmaDecode + 3bc0a6a8: 5245 4f52 3a52 2520 2064 7328 6174 7574 ERROR: %d (statu + 3bc0a6b8: 3d73 6425 0a29 0000 3301 4920 4c3a 4d5a s=%d)....3 I:LZM + 3bc0a6c8: 3941 302f 2578 786c 000a 0000 0000 0000 A9/0x%lx........ + 3bc0a6d8: 3301 4920 4c3a 345a 252f 2f70 7025 0a2e .3 I:LZ4/%p/%p.. + ... + 3bc0a6f0: 3001 4520 643a 7463 5378 6174 7574 3d73 .0 E:dctxStatus= + 3bc0a700: 6c25 0a75 0000 0000 3301 4920 643a 7473 %lu......3 I:dst + 3bc0a710: 735f 7a69 3d65 6c25 2075 7273 5f63 6973 _size=%lu src_si + 3bc0a720: 657a 253d 756c 7220 7465 253d 647a 000a ze=%lu ret=%zd.. + 3bc0a730: 3001 4520 4c3a 345a 5f46 6564 6f63 706d .0 E:LZ4F_decomp + 3bc0a740: 6572 7373 253d 756c 000a 0000 0000 0000 ress=%lu........ + 3bc0a750: 3201 4344 2f50 7025 302f 2578 786c 252f .2DCP/%p/0x%lx/% + 3bc0a760: 2f70 7830 6c25 2f78 6425 0a2e 0000 0000 p/0x%lx/%d...... + 3bc0a770: 3201 4344 2f50 7830 6c25 2f78 6425 0a2e .2DCP/0x%lx/%d.. + ... + +000000003bc0a788 <__func__.0>: + 3bc0a788: 7a53 6c41 6f6c 0063 SzAlloc. + +000000003bc0a790 <__func__.1>: + 3bc0a790: 6564 6f63 706d 6572 7373 6c5f 6d7a 0061 decompress_lzma. + 3bc0a7a0: 3301 4920 413a 7070 696c 6163 6974 6e6f .3 I:Application + 3bc0a7b0: 203a 7325 000a 0000 3301 4920 753a 6273 : %s.....3 I:usb + 3bc0a7c0: 2520 0a73 0000 0000 3201 5355 4242 002e %s......2USBB.. + 3bc0a7d0: 3301 4920 433a 4956 555f 4253 425f 4552 .3 I:CVI_USB_BRE + 3bc0a7e0: 4b41 000a 0000 0000 3201 5355 4b42 002e AK.......2USBK.. + 3bc0a7f0: 3301 4920 663a 616c 4567 746e 7265 4c44 .3 I:flagEnterDL + 3bc0a800: 2520 0a64 0000 0000 3301 4920 4d3a 4741 %d......3 I:MAG + 3bc0a810: 4349 4e20 4d55 4e20 544f 4d20 5441 4843 IC NUM NOT MATCH + 3bc0a820: 000a 0000 0000 0000 3201 5355 4b42 2e46 .........2USBKF. + ... + 3bc0a838: 3301 4920 493a 204f 6241 726f 2074 2121 .3 I:IO Abort !! + 3bc0a848: 2121 0a21 0000 0000 3301 4920 723a 6365 !!!......3 I:rec + 3bc0a858: 7069 6569 746e 7420 7261 6567 2074 6163 ipient target ca + 3bc0a868: 6e6e 746f 6220 2065 6e69 6574 6672 6361 nnot be interfac + 3bc0a878: 2165 000a 0000 0000 3201 5355 5042 302f e!.......2USBP/0 + 3bc0a888: 2578 2e78 0000 0000 3301 4920 663a 7374 x%x......3 I:fts + 3bc0a898: 5b6e 6425 205d 203d 7825 000a 0000 0000 n[%d] = %x...... + 3bc0a8a8: 3301 4920 633a 6372 7620 6c61 3d20 2520 .3 I:crc val = % + 3bc0a8b8: 0a78 0000 0000 0000 3301 4920 743a 2073 x........3 I:ts + 3bc0a8c8: 6176 206c 203d 7825 000a 0000 0000 0000 val = %x........ + 3bc0a8d8: 3201 5355 5342 252f 2e73 0000 0000 0000 .2USBS/%s....... + 3bc0a8e8: 3231 3433 3635 3837 4139 4342 0000 0000 123456789ABC.... + 3bc0a8f8: 7065 6931 2d6e 7562 6b6c 0000 0000 0000 ep1in-bulk...... + 3bc0a908: 7065 6f32 7475 622d 6c75 006b 0000 0000 ep2out-bulk..... + 3bc0a918: 7065 6933 2d6e 6e69 0074 0000 737e ffff ep3in-int...~s.. + 3bc0a928: 7550 ffff 73e4 ffff 7416 ffff 7416 ffff Pu...s...t...t.. + 3bc0a938: 753c ffff 7550 ffff 7416 ffff 7416 ffff : + 3bc0ab80: 6962 646e 0000 0000 bind.... + +000000003bc0ab88 <__func__.1>: + 3bc0ab88: 6e75 6962 646e 0000 unbind.. + +000000003bc0ab90 <__func__.4>: + 3bc0ab90: 6964 6373 6e6f 656e 7463 0000 0000 0000 disconnect...... + +000000003bc0aba0 <__func__.5>: + 3bc0aba0: 6572 6573 0074 0000 6177 6e72 6e69 2167 reset...warning! + 3bc0abb0: 6620 6572 2065 6e75 6966 696e 6873 6465 free unfinished + 3bc0abc0: 7220 7165 6575 7473 0a21 0000 0000 0000 request!....... + 3bc0abd0: 7325 203a 4820 4e41 2147 4120 4248 4920 %s: HANG! AHB I + 3bc0abe0: 6c64 2065 5247 4353 4c54 000a 0000 0000 dle GRSCTL...... + 3bc0abf0: 7325 203a 6974 656d 756f 2074 6c66 7375 %s: timeout flus + 3bc0ac00: 6968 676e 6620 6669 206f 4728 5352 4354 hing fifo (GRSTC + 3bc0ac10: 4c54 253d 3830 2978 000a 0000 0000 0000 TL=%08x)........ + 3bc0ac20: 7325 203a 6974 656d 756f 2074 6c66 7375 %s: timeout flus + 3bc0ac30: 6968 676e 6620 6669 736f 2820 7267 7473 hing fifos (grst + 3bc0ac40: 7463 206c 203d 7830 7825 0a29 0000 0000 ctl = 0x%x)..... + 3bc0ac50: 7325 203a 6163 6c6c 6620 726f 6520 3070 %s: call for ep0 + 3bc0ac60: 6f2d 7475 000a 0000 7325 203a 6974 656d -out....%s: time + 3bc0ac70: 756f 2074 4944 5045 4e49 2e54 414e 454b out DIEPINT.NAKE + 3bc0ac80: 4646 000a 0000 0000 7325 203a 6974 656d FF......%s: time + 3bc0ac90: 756f 2074 4947 544e 5453 2e53 4f47 5455 out GINTSTS.GOUT + 3bc0aca0: 414e 454b 4646 000a 7325 203a 6974 656d NAKEFF..%s: time + 3bc0acb0: 756f 2074 4f44 5045 5443 2e4c 5045 6944 out DOEPCTL.EPDi + 3bc0acc0: 6173 6c62 0a65 0000 7325 2928 4820 4e41 sable...%s() HAN + 3bc0acd0: 2147 5320 666f 2074 6552 6573 2074 5247 G! Soft Reset GR + 3bc0ace0: 5453 5443 3d4c 3025 0a78 0000 0000 0000 STCTL=%0x....... + 3bc0acf0: 7325 2928 4820 4e41 2147 5320 666f 2074 %s() HANG! Soft + 3bc0ad00: 2e34 2032 6552 6573 2074 5247 5453 5443 4.2 Reset GRSTCT + 3bc0ad10: 3d4c 3025 0a78 0000 7325 2928 4820 4e41 L=%0x...%s() HAN + 3bc0ad20: 2147 4120 4248 4920 6c64 2065 5247 5453 G! AHB Idle GRST + 3bc0ad30: 5443 3d4c 3025 0a78 0000 0000 0000 0000 CTL=%0x......... + 3bc0ad40: 6973 657a 6620 726f 6820 6e61 6c64 7265 size for handler + 3bc0ad50: 6920 2073 6f74 206f 6173 6c6d 206c 2528 is too samll (% + 3bc0ad60: 646c 202c 6425 0a29 0000 0000 0000 0000 ld, %d)......... + 3bc0ad70: 6f4e 6d20 6d65 726f 2079 7661 6961 616c No memory availa + 3bc0ad80: 6c62 2065 6f66 2072 4455 2143 000a 0000 ble for UDC!.... + +000000003bc0ad90 <__func__.0>: + 3bc0ad90: 7764 3263 655f 5f70 7473 706f 785f 6566 dwc2_ep_stop_xfe + 3bc0ada0: 0072 0000 0000 0000 r....... + +000000003bc0ada8 <__func__.1>: + 3bc0ada8: 645f 6377 5f32 7065 645f 7369 6261 656c _dwc2_ep_disable + ... + +000000003bc0adc0 <__func__.2>: + 3bc0adc0: 7764 3263 725f 6365 6e6f 6966 5f67 7375 dwc2_reconfig_us + 3bc0add0: 6462 0000 0000 0000 bd...... + +000000003bc0add8 <__func__.3>: + 3bc0add8: 7764 3263 685f 6f73 6774 745f 6678 6669 dwc2_hsotg_txfif + 3bc0ade8: 5f6f 6c66 7375 0068 o_flush. + +000000003bc0adf0 <__func__.4>: + 3bc0adf0: 7764 3263 685f 6f73 6774 695f 696e 5f74 dwc2_hsotg_init_ + 3bc0ae00: 6966 6f66 0000 0000 fifo.... + +000000003bc0ae08 : + 3bc0ae08: 7764 3263 752d 6364 0000 0000 0000 0000 dwc2-udc........ + +000000003bc0ae18 : + ... + 3bc0ae20: 2ab4 3bc0 0000 0000 0000 0000 0000 0000 .*.;............ + ... + 3bc0ae40: 279e 3bc0 0000 0000 0000 0000 0000 0000 .'.;............ + ... + +000000003bc0ae60 : + 3bc0ae60: 7065 2d30 6f63 746e 6f72 006c 0000 0000 ep0-control..... + +000000003bc0ae70 : + 3bc0ae70: 7065 6931 2d6e 7562 6b6c 0000 0000 0000 ep1in-bulk...... + +000000003bc0ae80 : + 3bc0ae80: 7065 6f32 7475 622d 6c75 006b 0000 0000 ep2out-bulk..... + +000000003bc0ae90 : + 3bc0ae90: 7065 6933 2d6e 6e69 0074 0000 0000 0000 ep3in-int....... + 3bc0aea0: 7263 2d71 623e 6572 7571 7365 3a74 7830 crq->brequest:0x + 3bc0aeb0: 7825 000a 8f90 ffff 906c ffff 91be ffff %x......l....... + 3bc0aec0: 9110 ffff 91be ffff 8f24 ffff 8f72 ffff ........$...r... + 3bc0aed0: 91be ffff 8f86 ffff 8f5a ffff 91be ffff ........Z....... + 3bc0aee0: 8f7c ffff 0000 0000 7572 206e 6574 7473 |.......run test + 3bc0aef0: 6d20 646f 2065 6425 000a 0000 0000 0000 mode %d........ + 3bc0af00: 3301 4920 553a 4253 4956 2f44 7825 0a2e .3 I:USBVID/%x.. + ... + +000000003bc0af18 : + 3bc0af18: 0000 1021 2042 3063 4084 50a5 60c6 70e7 ..!.B c0.@.P.`.p + 3bc0af28: 8108 9129 a14a b16b c18c d1ad e1ce f1ef ..).J.k......... + 3bc0af38: 1231 0210 3273 2252 52b5 4294 72f7 62d6 1...s2R".R.B.r.b + 3bc0af48: 9339 8318 b37b a35a d3bd c39c f3ff e3de 9...{.Z......... + 3bc0af58: 2462 3443 0420 1401 64e6 74c7 44a4 5485 b$C4 ....d.t.D.T + 3bc0af68: a56a b54b 8528 9509 e5ee f5cf c5ac d58d j.K.(........... + 3bc0af78: 3653 2672 1611 0630 76d7 66f6 5695 46b4 S6r&..0..v.f.V.F + 3bc0af88: b75b a77a 9719 8738 f7df e7fe d79d c7bc [.z...8......... + 3bc0af98: 48c4 58e5 6886 78a7 0840 1861 2802 3823 .H.X.h.x@.a..(#8 + 3bc0afa8: c9cc d9ed e98e f9af 8948 9969 a90a b92b ........H.i...+. + 3bc0afb8: 5af5 4ad4 7ab7 6a96 1a71 0a50 3a33 2a12 .Z.J.z.jq.P.3:.* + 3bc0afc8: dbfd cbdc fbbf eb9e 9b79 8b58 bb3b ab1a ........y.X.;... + 3bc0afd8: 6ca6 7c87 4ce4 5cc5 2c22 3c03 0c60 1c41 .l.|.L.\",.<`.A. + 3bc0afe8: edae fd8f cdec ddcd ad2a bd0b 8d68 9d49 ........*...h.I. + 3bc0aff8: 7e97 6eb6 5ed5 4ef4 3e13 2e32 1e51 0e70 .~.n.^.N.>2.Q.p. + 3bc0b008: ff9f efbe dfdd cffc bf1b af3a 9f59 8f78 ..........:.Y.x. + 3bc0b018: 9188 81a9 b1ca a1eb d10c c12d f14e e16f ..........-.N.o. + 3bc0b028: 1080 00a1 30c2 20e3 5004 4025 7046 6067 .....0. .P%@Fpg` + 3bc0b038: 83b9 9398 a3fb b3da c33d d31c e37f f35e ........=.....^. + 3bc0b048: 02b1 1290 22f3 32d2 4235 5214 6277 7256 .....".25B.RwbVr + 3bc0b058: b5ea a5cb 95a8 8589 f56e e54f d52c c50d ........n.O.,... + 3bc0b068: 34e2 24c3 14a0 0481 7466 6447 5424 4405 .4.$....ftGd$T.D + 3bc0b078: a7db b7fa 8799 97b8 e75f f77e c71d d73c ........_.~...<. + 3bc0b088: 26d3 36f2 0691 16b0 6657 7676 4615 5634 .&.6....Wfvv.F4V + 3bc0b098: d94c c96d f90e e92f 99c8 89e9 b98a a9ab L.m.../......... + 3bc0b0a8: 5844 4865 7806 6827 18c0 08e1 3882 28a3 DXeH.x'h.....8.( + 3bc0b0b8: cb7d db5c eb3f fb1e 8bf9 9bd8 abbb bb9a }.\.?........... + 3bc0b0c8: 4a75 5a54 6a37 7a16 0af1 1ad0 2ab3 3a92 uJTZ7j.z.....*.: + 3bc0b0d8: fd2e ed0f dd6c cd4d bdaa ad8b 9de8 8dc9 ....l.M......... + 3bc0b0e8: 7c26 6c07 5c64 4c45 3ca2 2c83 1ce0 0cc1 &|.ld\EL.<.,.... + 3bc0b0f8: ef1f ff3e cf5d df7c af9b bfba 8fd9 9ff8 ..>.].|......... + 3bc0b108: 6e17 7e36 4e55 5e74 2e93 3eb2 0ed1 1ef0 .n6~UNt^...>.... + 3bc0b118: c21c ffff c250 ffff c2be ffff c33a ffff ....P.......:... + 3bc0b128: c360 ffff c406 ffff c4b6 ffff c518 ffff `............... + 3bc0b138: c64c ffff c740 ffff c744 ffff c776 ffff L...@...D...v... + 3bc0b148: c7e6 ffff c806 ffff c860 ffff 0000 0000 ........`....... + +000000003bc0b158 : + 3bc0b158: 0000 0001 0000 0000 0000 0004 0000 0000 ................ + 3bc0b168: 0000 0010 0000 0000 0000 0040 0000 0000 ..........@..... + +000000003bc0b178 : + ... + 3bc0b184: ffff ffff fffc ffff 0001 0000 0002 0000 ................ + 3bc0b194: 0003 0000 .... + +000000003bc0b198 : + 3bc0b198: 0000 0000 0001 0000 0002 0000 0001 0000 ................ + 3bc0b1a8: 0000 0000 0004 0000 0004 0000 0004 0000 ................ + 3bc0b1b8: cb7e ffff cb5e ffff cb3e ffff c8fa ffff ~...^...>....... + 3bc0b1c8: c99c ffff ca4e ffff cb10 ffff c8cc ffff ....N........... + 3bc0b1d8: c96e ffff ca20 ffff cae2 ffff c89e ffff n... ........... + 3bc0b1e8: c940 ffff c9f2 ffff cab4 ffff 0000 0000 @............... + 3bc0b1f8: 3201 4444 2052 6e69 7469 0a2e 0000 0000 .2DDR init...... + 3bc0b208: 3201 6464 5f72 6170 6172 5b6d 5d30 303d .2ddr_param[0]=0 + 3bc0b218: 2578 2e78 000a 0000 3201 6b70 5f67 7974 x%x......2pkg_ty + 3bc0b228: 6570 253d 0a78 0000 3201 6e32 0a64 0000 pe=%x....22nd... + 3bc0b238: 3201 6e75 6e6b 776f 206e 6b70 5f67 7974 .2unknown pkg_ty + 3bc0b248: 6570 303d 2578 0a78 0000 0000 0000 0000 pe=0x%x......... + 3bc0b258: 3201 2544 5f78 7825 255f 0a78 0000 0000 .2D%x_%x_%x..... + 3bc0b268: 3201 4444 3252 0000 3201 4444 3352 0000 .2DDR2...2DDR3.. + 3bc0b278: 3201 6e75 6e6b 776f 206e 6576 646e 726f .2unknown vendor + 3bc0b288: 253d 0064 0000 0000 3201 352d 3231 004d =%d......2-512M. + 3bc0b298: 3201 312d 0047 0000 3201 322d 0047 0000 .2-1G....2-2G... + 3bc0b2a8: 3201 342d 0047 0000 3201 752d 6b6e 6f6e .2-4G....2-unkno + 3bc0b2b8: 6e77 6320 7061 6361 7469 3d79 6425 0000 wn capacity=%d.. + 3bc0b2c8: 3201 512d 4e46 3838 000a 0000 0000 0000 .2-QFN88........ + 3bc0b2d8: 3201 512d 4e46 3836 000a 0000 0000 0000 .2-QFN68........ + 3bc0b2e8: 3201 422d 4147 000a 3201 752d 6b6e 6f6e .2-BGA...2-unkno + 3bc0b2f8: 6e77 7020 676b 253d 0064 0000 cf3c ffff wn pkg=%d...<... + 3bc0b308: cfc2 ffff cf1a ffff cf2c ffff cf3c ffff ........,...<... + 3bc0b318: cfc2 ffff cfa4 ffff cfb4 ffff cfea ffff ................ + 3bc0b328: cfea ffff cfea ffff cfb0 ffff cfea ffff ................ + 3bc0b338: cfea ffff cfea ffff cfea ffff cfb0 ffff ................ + 3bc0b348: cfea ffff 0000 0000 3001 4520 453a 5252 .........0 E:ERR + 3bc0b358: 524f 6220 7369 5f74 6166 6c69 000a 0000 OR bist_fail.... + 3bc0b368: 3001 4520 623a 7369 5f74 6572 7573 746c .0 E:bist_result + 3bc0b378: 3d20 2520 2c78 6520 7272 645f 7461 5f61 = %x, err_data_ + 3bc0b388: 646f 2064 203d 6c25 2c78 6520 7272 645f odd = %lx, err_d + 3bc0b398: 7461 5f61 7665 6e65 3d20 2520 786c 000a ata_even = %lx.. + 3bc0b3a8: 3201 4444 2052 4942 5453 4620 4941 0a4c .2DDR BIST FAIL. + ... + 3bc0b3c0: 3201 4444 2052 4942 5453 5020 5341 0a53 .2DDR BIST PASS. + ... + 3bc0b3d8: fa02 401f fa02 801f 2c02 4010 2c02 8010 ...@.....,.@.,.. + 3bc0b3e8: 7a00 4000 7a00 8000 3a00 4000 3a00 8000 .z.@.z...:.@.:.. + 3bc0b3f8: e08c ffff e0f0 ffff e150 ffff e1bc ffff ........P....... + 3bc0b408: e280 ffff e220 ffff e1b6 ffff e1b6 ffff .... ........... + 3bc0b418: e342 ffff e2e0 ffff e622 ffff e69a ffff B......."....... + 3bc0b428: e712 ffff e78a ffff e7aa ffff ............ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2.elf b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2.elf new file mode 100755 index 000000000..3b8795301 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2.elf differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2.ld b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2.ld new file mode 100644 index 000000000..b7fbc239f --- /dev/null +++ b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2.ld @@ -0,0 +1,53 @@ +OUTPUT_FORMAT("elf64-littleriscv") +OUTPUT_ARCH(riscv) +ENTRY(bl2_entrypoint) +MEMORY { + RAM (rwx): ORIGIN = (0x3BC00000), LENGTH = (0x00019000) +} +SECTIONS +{ + . = (0x3BC00000); + ASSERT(. == ALIGN(4096), + "BL2_BASE address is not aligned on a page boundary.") + ro . : { + __RO_START__ = .; + *bl2_entrypoint.o(.text*) + *(.vectors) + *(.text*) + *(.rodata*) + __RO_END__ = .; + } >RAM + .data . : { + . = ALIGN(16); + __DATA_START__ = .; + *(.data*) + . = ALIGN(16); + __DATA_END__ = .; + } >RAM + stacks (NOLOAD) : { + . = ALIGN(64); + __STACKS_START__ = .; + . += 0x2000; + . = ALIGN(64); + __STACKS_END__ = .; + } >RAM + .bss : ALIGN(16) { + . = ALIGN(16); + __BSS_START__ = .; + *(SORT_BY_ALIGNMENT(.bss*)) + *(COMMON) + . = ALIGN(16); + __BSS_END__ = .; + } >RAM + __BL2_END__ = .; + __BSS_SIZE__ = SIZEOF(.bss); + ASSERT(. <= ((0x3BC00000) + (0x00019000)), "BL2 image has exceeded its limit.") +p_rom_api_cryptodma_aes_decrypt = 0x0000000004400100; +p_rom_api_flash_init = 0x0000000004400080; +p_rom_api_get_boot_src = 0x0000000004400020; +p_rom_api_get_number_of_retries = 0x00000000044000c0; +p_rom_api_image_crc = 0x00000000044000a0; +p_rom_api_load_image = 0x0000000004400060; +p_rom_api_set_boot_src = 0x0000000004400040; +p_rom_api_verify_rsa = 0x00000000044000e0; +} diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2.map b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2.map new file mode 100644 index 000000000..e6a77bf2a --- /dev/null +++ b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2.map @@ -0,0 +1,3413 @@ + +Discarded input sections + + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .text.cpu_report_exception + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .text.enable_cache + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o + .text.memcpy16 + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o + .text.zeromem 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o + .debug_info 0x0000000000000000 0x1ac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o + .debug_abbrev 0x0000000000000000 0xdd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o + .debug_loc 0x0000000000000000 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o + .debug_aranges + 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o + .debug_ranges 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o + .debug_line 0x0000000000000000 0x102 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o + .debug_str 0x0000000000000000 0x3a69 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o + .debug_frame 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .text.inv_dcache_range + 0x0000000000000000 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .text.clean_dcache_range + 0x0000000000000000 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .text.enable_dcache + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .text.disable_dcache + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .text.timer_init + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x186b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .text.console_init + 0x0000000000000000 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .text.console_puts + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .text.console_getc + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .text.uart_tstc + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .text.console_tstc + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .rodata.tf_print_buffer.str1.8 + 0x0000000000000000 0x2d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .text.tf_print_buffer + 0x0000000000000000 0x96 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .text.config_core_power + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .text.apply_analog_trimming_data + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .text.bytes_reverse + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .rodata.__assert.str1.8 + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .text.__assert + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .debug_info 0x0000000000000000 0x153 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .debug_abbrev 0x0000000000000000 0xa4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .debug_loc 0x0000000000000000 0x109 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x112 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .debug_line 0x0000000000000000 0x21b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .debug_str 0x0000000000000000 0x6f9a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .debug_frame 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .text.memcmp 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .text.memchr 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .text._memcpy 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o + .text.strchr 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o + .debug_info 0x0000000000000000 0xe4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o + .debug_abbrev 0x0000000000000000 0x7f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o + .debug_loc 0x0000000000000000 0x6f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o + .debug_line 0x0000000000000000 0x14e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o + .debug_str 0x0000000000000000 0x3a7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o + .text.strcasecmp + 0x0000000000000000 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o + .text.strncmp 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o + .debug_info 0x0000000000000000 0x105 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o + .debug_abbrev 0x0000000000000000 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o + .debug_loc 0x0000000000000000 0x15f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o + .debug_line 0x0000000000000000 0x13f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o + .debug_str 0x0000000000000000 0x3a39 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o + .text.strnlen 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o + .debug_info 0x0000000000000000 0x105 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o + .debug_abbrev 0x0000000000000000 0x9f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o + .debug_loc 0x0000000000000000 0xa3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o + .debug_line 0x0000000000000000 0x123 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o + .debug_str 0x0000000000000000 0x3a40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .text.is_usb_dl_enabled + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .rodata.print_sram_log.str1.8 + 0x0000000000000000 0x6d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .text.print_sram_log + 0x0000000000000000 0x86 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_ReadReg32 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_WriteReg32 + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedRead8 + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedRead16 + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedWrite8 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedWrite16 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_WritePhysAddress32 + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_BufferCopy + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_DelayNs + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.set_trigger_cnt + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dfu_usb_get_reset + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.otg_phy_init + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.otg_phy_off + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x517 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .text.crc16_pacing + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .text.crc16_ccitt_with_tag + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_InitDicAndState + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_DecodeToBuf + 0x0000000000000000 0xd6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_Free + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_Allocate + 0x0000000000000000 0xbc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_renormDictT + 0x0000000000000000 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_rotatePattern + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_setExternalDict + 0x0000000000000000 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_reverseCountPattern + 0x0000000000000000 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_countPattern + 0x0000000000000000 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_init_internal + 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_extDict + 0x0000000000000000 0x2aa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_compress_optimal + 0x0000000000000000 0x1d36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_compress_generic_noDictCtx + 0x0000000000000000 0x1b68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_compress_generic + 0x0000000000000000 0x211a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_makeBlock + 0x0000000000000000 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_versionNumber + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .rodata.LZ4_versionString.str1.8 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_versionString + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressBound + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofState + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast_extState_fastReset + 0x0000000000000000 0x1428 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_initStream + 0x0000000000000000 0x36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast_extState + 0x0000000000000000 0xd02 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_default + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_destSize + 0x0000000000000000 0x83c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_createStream + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStream + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStream_fast + 0x0000000000000000 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_freeStream + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_loadDict + 0x0000000000000000 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_attach_dictionary + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast_continue + 0x0000000000000000 0x1ca4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlock_continue + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_forceExtDict + 0x0000000000000000 0xa24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_saveDict + 0x0000000000000000 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe_partial + 0x0000000000000000 0x2a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast + 0x0000000000000000 0x1e6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_withPrefix64k + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_createStreamDecode + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_freeStreamDecode + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_setStreamDecode + 0x0000000000000000 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decoderRingBufferSize + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe_continue + 0x0000000000000000 0x3c6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_continue + 0x0000000000000000 0x316 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_usingDict + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput_withState + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_withState + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput_continue + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_continue + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_uncompress + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_uncompress_unknownOutputSize + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofStreamState + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_create + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_slideInputBuffer + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_createStreamHC + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_freeStreamHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_initStreamHC + 0x0000000000000000 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_setCompressionLevel + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_destSize + 0x0000000000000000 0x6a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamHC + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamHC_fast + 0x0000000000000000 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_extStateHC_fastReset + 0x0000000000000000 0x64 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_extStateHC + 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC + 0x0000000000000000 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_initStream + 0x0000000000000000 0x5a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlock + 0x0000000000000000 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_favorDecompressionSpeed + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_loadDictHC + 0x0000000000000000 0xd6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_continue_generic + 0x0000000000000000 0xf0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_attach_HC_dictionary + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_continue + 0x0000000000000000 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlockHC_continue + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlockHC + 0x0000000000000000 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_continue_destSize + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_saveDictHC + 0x0000000000000000 0x96 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_localSaveDict + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC + 0x0000000000000000 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2 + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_withStateHC + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput_withStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_withStateHC + 0x0000000000000000 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput_withStateHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_continue + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput_continue + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofStreamStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamStateHC + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_createHC + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_freeHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_continue + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput_continue + 0x0000000000000000 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_slideInputBufferHC + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .rodata.LZ4F_getErrorName.str1.8 + 0x0000000000000000 0x17 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_getErrorName + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_getErrorCode + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_getVersion + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressionLevel_max + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBound_internal + 0x0000000000000000 0x9c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressFrameBound + 0x0000000000000000 0x3e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_freeCDict + 0x0000000000000000 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_createCDict + 0x0000000000000000 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_createCompressionContext + 0x0000000000000000 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_freeCompressionContext + 0x0000000000000000 0x36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBegin_usingCDict + 0x0000000000000000 0x20c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBegin + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBound + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressUpdate + 0x0000000000000000 0x204 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_flush + 0x0000000000000000 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressEnd + 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressFrame_usingCDict + 0x0000000000000000 0x104 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressFrame + 0x0000000000000000 0x112 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_freeDecompressionContext + 0x0000000000000000 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_resetDecompressionContext + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_headerSize + 0x0000000000000000 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_getFrameInfo + 0x0000000000000000 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_decompress_usingDict + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .rodata.str1.8 + 0x0000000000000000 0x246 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .rodata.cst8 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .rodata.LZ4F_errorStrings + 0x0000000000000000 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .rodata.clTable.2 + 0x0000000000000000 0x9c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH64_mergeRound + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH64_avalanche + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH_read64 + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH64_finalize.constprop.0 + 0x0000000000000000 0x7be /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .rodata.XXH64_finalize.constprop.0 + 0x0000000000000000 0x7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH_versionNumber + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH32_createState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH32_freeState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH32_copyState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH32_canonicalFromHash + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH32_hashFromCanonical + 0x0000000000000000 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH64 0x0000000000000000 0x234 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH64_createState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH64_freeState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH64_copyState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH64_reset + 0x0000000000000000 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH64_update + 0x0000000000000000 0x1fa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH64_digest + 0x0000000000000000 0x8a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH64_canonicalFromHash + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH64_hashFromCanonical + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .rodata.cst8 0x0000000000000000 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .text.get_ddr_capacity + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .text.get_pkg 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .text.get_ddr_type + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .rodata.dump_axi_mon_reg.str1.8 + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .text.dump_axi_mon_reg + 0x0000000000000000 0x6c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.ddr_debug_num_write + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_sub_resume2 + 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddrc_suspend + 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_wrlvl_init + 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_synp_mrw + 0x0000000000000000 0x74 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_cal_phyd_hw + 0x0000000000000000 0x10a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_cal_phya_enautok + 0x0000000000000000 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ctrlupd_short + 0x0000000000000000 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_wrlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_rdglvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_rdlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_wdqlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_cal_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_zqcal_status + 0x0000000000000000 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zqcal_isr8 + 0x0000000000000000 0x2d4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zqcal_hw_isr8 + 0x0000000000000000 0x15e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_training_status + 0x0000000000000000 0x134 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_set_dq_vref + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_phya_pd + 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_phyd_save + 0x0000000000000000 0xae6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.ddr_sys_suspend + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_phyd_restore + 0x0000000000000000 0xaf4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_sub_resume3 + 0x0000000000000000 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_sw_upd + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_set_dq_trig_lvl + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_freq_change_ltoh + 0x0000000000000000 0x1ca /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_0_phase40 + 0x0000000000000000 0x16e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_0_external + 0x0000000000000000 0x1ce /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_1_dq_set_highlow + 0x0000000000000000 0x1b4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_2_mux_demux + 0x0000000000000000 0x19c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_3_ca_set_highlow + 0x0000000000000000 0x1e4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_4_ca_clk_pat + 0x0000000000000000 0x132 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.ddr_sys_resume + 0x0000000000000000 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_rdlvl_sw_req + 0x0000000000000000 0x3c0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_wdqlvl_sw_req + 0x0000000000000000 0x1ee /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_freq_change_htol + 0x0000000000000000 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dfi_phyupd_req + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_sw_clr + 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_tx_shift_delay + 0x0000000000000000 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_rx_delay + 0x0000000000000000 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_rx_deskew_delay + 0x0000000000000000 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ca_shift_delay + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_cs_shift_delay + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_mask_shift_delay + 0x0000000000000000 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_reg_toggle + 0x0000000000000000 0x1514 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ana_test + 0x0000000000000000 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zq240 + 0x0000000000000000 0x1c4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zq240_ate + 0x0000000000000000 0x148 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zq240_cal + 0x0000000000000000 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .data.ddr_patch_regs + 0x0000000000000000 0x1c8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .data.ddr_patch_regs_count + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_info 0x0000000000000000 0x121 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_abbrev 0x0000000000000000 0xb5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_line 0x0000000000000000 0x160 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_str 0x0000000000000000 0x53f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_entrypoint.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_entrypoint.o + .bss 0x0000000000000000 0x1000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_entrypoint.o + .rodata 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_entrypoint.o + +Memory Configuration + +Name Origin Length Attributes +RAM 0x000000003bc00000 0x0000000000019000 xrw +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + 0x000000003bc00000 . = 0x3bc00000 + 0x0000000000000001 ASSERT ((. == ALIGN (0x1000)), BL2_BASE address is not aligned on a page boundary.) + +ro 0x000000003bc00000 0xb434 + 0x000000003bc00000 __RO_START__ = . + *bl2_entrypoint.o(.text*) + .text.init 0x000000003bc00000 0x14c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_entrypoint.o + 0x000000003bc00000 bl2_entrypoint + *(.vectors) + *(.text*) + .text.sync_cache + 0x000000003bc0014c 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + 0x000000003bc0014c sync_cache + .text.flush_dcache_range + 0x000000003bc00156 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + 0x000000003bc00156 flush_dcache_range + .text.trig_simulation_timer + 0x000000003bc0017a 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc0017a trig_simulation_timer + .text.udelay 0x000000003bc0018a 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc0018a udelay + .text.mdelay 0x000000003bc001b4 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc001b4 mdelay + .text.get_timer + 0x000000003bc001be 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc001be get_timer + .text.get_random_from_timer + 0x000000003bc001e2 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc001e2 get_random_from_timer + .text.read_count_tick + 0x000000003bc0020c 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc0020c read_count_tick + .text.jump_to_monitor + 0x000000003bc0021a 0x78 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + 0x000000003bc0021a jump_to_monitor + .text.jump_to_loader_2nd + 0x000000003bc00292 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + 0x000000003bc00292 jump_to_loader_2nd + .text._uart_putc + 0x000000003bc00294 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + 0x000000003bc00294 _uart_putc + .text.console_putc + 0x000000003bc002a4 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + 0x000000003bc002a4 console_putc + .text.console_flush + 0x000000003bc002c2 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + 0x000000003bc002c2 console_flush + .text.unsigned_num_print + 0x000000003bc002d6 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .text.tf_printf + 0x000000003bc00358 0x19a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + 0x000000003bc00358 tf_printf + .text.__system_reset + 0x000000003bc004f2 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + 0x000000003bc004f2 __system_reset + .text.panic_handler + 0x000000003bc005ba 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + 0x000000003bc005ba panic_handler + .text.reset_c906l + 0x000000003bc005ec 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + 0x000000003bc005ec reset_c906l + .text.setup_dl_flag + 0x000000003bc00636 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + 0x000000003bc00636 setup_dl_flag + .text.sys_switch_all_to_pll + 0x000000003bc00680 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + 0x000000003bc00680 sys_switch_all_to_pll + .text.sys_pll_nd + 0x000000003bc0068e 0x18e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + 0x000000003bc0068e sys_pll_nd + .text.sys_pll_init + 0x000000003bc0081c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + 0x000000003bc0081c sys_pll_init + .text.switch_rtc_mode_1st_stage + 0x000000003bc00832 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + 0x000000003bc00832 switch_rtc_mode_1st_stage + .text.switch_rtc_mode_2nd_stage + 0x000000003bc00834 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + 0x000000003bc00834 switch_rtc_mode_2nd_stage + .text.set_rtc_en_registers + 0x000000003bc00878 0xbc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + 0x000000003bc00878 set_rtc_en_registers + .text.init_comm_info + 0x000000003bc00934 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + 0x000000003bc00934 init_comm_info + .text.dec_verify_image + 0x000000003bc00994 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + 0x000000003bc00994 dec_verify_image + .text.ntostr 0x000000003bc00998 0x7a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + 0x000000003bc00998 ntostr + .text.memset 0x000000003bc00a12 0x5a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + 0x000000003bc00a12 memset + .text.memcpy 0x000000003bc00a6c 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + 0x000000003bc00a6c memcpy + .text.memmove 0x000000003bc00acc 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + 0x000000003bc00acc memmove + .text.putchar_l + 0x000000003bc00aec 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + 0x000000003bc00aec putchar_l + .text.strcmp 0x000000003bc00b3e 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o + 0x000000003bc00b3e strcmp + .text.strlen 0x000000003bc00b5a 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o + 0x000000003bc00b5a strlen + .text.gpio_in_value + 0x000000003bc00b6c 0x7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + 0x000000003bc00b6c gpio_in_value + .text.usb_id_det + 0x000000003bc00be8 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + 0x000000003bc00be8 usb_id_det + .text.read_time_ms + 0x000000003bc00c06 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .text.load_image_by_usb + 0x000000003bc00c20 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00c20 load_image_by_usb + .text.load_param2 + 0x000000003bc00c60 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00c60 load_param2 + .text.load_ddr_param + 0x000000003bc00d30 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00d30 load_ddr_param + .text.load_ddr + 0x000000003bc00dde 0xc6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00dde load_ddr + .text.load_blcp_2nd + 0x000000003bc00ea4 0x166 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00ea4 load_blcp_2nd + .text.load_monitor + 0x000000003bc0100a 0x126 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc0100a load_monitor + .text.load_loader_2nd + 0x000000003bc01130 0x208 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc01130 load_loader_2nd + .text.load_rest + 0x000000003bc01338 0xe6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc01338 load_rest + .text.bl2_main + 0x000000003bc0141e 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc0141e bl2_main + .text.SzFree 0x000000003bc014b6 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .text.SzAlloc 0x000000003bc014b8 0x42 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .text.decompress_lzma + 0x000000003bc014fa 0xe8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + 0x000000003bc014fa decompress_lzma + .text.LZ4_malloc + 0x000000003bc015e2 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + 0x000000003bc015e2 LZ4_malloc + .text.LZ4_calloc + 0x000000003bc015e8 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + 0x000000003bc015e8 LZ4_calloc + .text.LZ4_free + 0x000000003bc01610 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + 0x000000003bc01610 LZ4_free + .text.decompress_lz4 + 0x000000003bc01612 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + 0x000000003bc01612 decompress_lz4 + .text.decompress + 0x000000003bc016c0 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + 0x000000003bc016c0 decompress + .text.DWC2_UncachedRead32 + 0x000000003bc0173e 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + 0x000000003bc0173e DWC2_UncachedRead32 + .text.DWC2_UncachedWrite32 + 0x000000003bc01744 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + 0x000000003bc01744 DWC2_UncachedWrite32 + .text.resume 0x000000003bc01748 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .text.requestMemAlloc + 0x000000003bc0174a 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .text.requestMemFree + 0x000000003bc01782 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .text.acm_complete_set_line_coding + 0x000000003bc01784 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .text.reset 0x000000003bc017a0 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .text.disconnect + 0x000000003bc017b4 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .text.unbind 0x000000003bc017e2 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .text.bind 0x000000003bc01808 0x42 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .text.get_unicode_string + 0x000000003bc0184a 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .text.bulkOutCmpl + 0x000000003bc0189c 0x234 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .text.getDescAcm + 0x000000003bc01ad0 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .text.reqComplete + 0x000000003bc01b2c 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .text.bulkInCmpl + 0x000000003bc01b56 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .text.setup 0x000000003bc01ba6 0x442 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .text.suspend 0x000000003bc01fe8 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .text.convert_buf_addr + 0x000000003bc01fea 0xa2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc01fea convert_buf_addr + .text.print_buf_addr + 0x000000003bc0208c 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc0208c print_buf_addr + .text.AcmIsr 0x000000003bc0215c 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc0215c AcmIsr + .text.acm_app_init + 0x000000003bc02162 0x138 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc02162 acm_app_init + .text.usb_vbus_det + 0x000000003bc0229a 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc0229a usb_vbus_det + .text.get_usb_polling_timeout_value + 0x000000003bc022a6 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc022a6 get_usb_polling_timeout_value + .text.AcmApp 0x000000003bc022d6 0x478 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc022d6 AcmApp + .text.dwc2_fifo_status + 0x000000003bc0274e 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_free_request + 0x000000003bc02764 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.pullup 0x000000003bc0279e 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_alloc_request + 0x000000003bc027e6 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_ep_enable + 0x000000003bc0281e 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_fifo_flush + 0x000000003bc028be 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_log_write + 0x000000003bc028c0 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc028c0 dwc2_log_write + .text.dwc2_get_ep0_name + 0x000000003bc028c2 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc028c2 dwc2_get_ep0_name + .text.udc_reinit + 0x000000003bc028cc 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc028cc udc_reinit + .text.dwc2_done + 0x000000003bc02912 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02912 dwc2_done + .text.dwc2_dequeue + 0x000000003bc02952 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_nuke + 0x000000003bc029a6 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc029a6 dwc2_nuke + .text.usb_gadget_unregister_driver + 0x000000003bc029d4 0x9a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc029d4 usb_gadget_unregister_driver + .text.dwc2_hsotg_set_bit + 0x000000003bc02a6e 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02a6e dwc2_hsotg_set_bit + .text.dwc2_hsotg_clear_bit + 0x000000003bc02a90 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02a90 dwc2_hsotg_clear_bit + .text.wakeup 0x000000003bc02ab4 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_hsotg_wait_bit_set + 0x000000003bc02af0 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02af0 dwc2_hsotg_wait_bit_set + .text.dwc2_hsotg_txfifo_flush.constprop.0 + 0x000000003bc02b36 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.kill_all_requests.isra.0 + 0x000000003bc02bc6 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_disconnect + 0x000000003bc02c24 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02c24 dwc2_disconnect + .text.dwc2_hsotg_init_fifo.constprop.0 + 0x000000003bc02c7a 0xda /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text._dwc2_ep_disable.isra.0 + 0x000000003bc02d54 0x1a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_ep_disable + 0x000000003bc02efa 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_reconfig_usbd + 0x000000003bc02f1a 0x28e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02f1a dwc2_reconfig_usbd + .text.usb_gadget_register_driver + 0x000000003bc031a8 0x156 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc031a8 usb_gadget_register_driver + .text.dwc2_phy_to_log_ep + 0x000000003bc032fe 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc032fe dwc2_phy_to_log_ep + .text.dwc2_udc_probe + 0x000000003bc03310 0x150 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc03310 dwc2_udc_probe + .text.usb_gadget_handle_interrupts + 0x000000003bc03460 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc03460 usb_gadget_handle_interrupts + .text.set_max_pktsize + 0x000000003bc034ac 0x8e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep_clear_stall + 0x000000003bc0353a 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep_set_stall + 0x000000003bc03598 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_ep0_complete_out + 0x000000003bc035fa 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep0_zlp + 0x000000003bc0367a 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep0_set_stall.isra.0 + 0x000000003bc036f8 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.setdma_rx.isra.0 + 0x000000003bc03760 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.complete_rx + 0x000000003bc0380a 0xfc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_pre_setup + 0x000000003bc03906 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03906 dwc2_udc_pre_setup + .text.dwc2_ep_fifo_write + 0x000000003bc0391c 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc0391c dwc2_ep_fifo_write + .text.setdma_tx + 0x000000003bc03960 0x15c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_ep_fifo_read + 0x000000003bc03abc 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03abc dwc2_ep_fifo_read + .text.dwc2_write_fifo_ep0 + 0x000000003bc03b00 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03b00 dwc2_write_fifo_ep0 + .text.dwc2_set_address + 0x000000003bc03b4c 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03b4c dwc2_set_address + .text.dwc2_ep0_read + 0x000000003bc03b94 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03b94 dwc2_ep0_read + .text.dwc2_ep0_write + 0x000000003bc03bbc 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03bbc dwc2_ep0_write + .text.dwc2_udc_set_nak + 0x000000003bc03bfc 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03bfc dwc2_udc_set_nak + .text.dwc2_udc_set_halt + 0x000000003bc03c3c 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03c3c dwc2_udc_set_halt + .text.dwc2_udc_ep_activate + 0x000000003bc03c9e 0xb2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03c9e dwc2_udc_ep_activate + .text.dwc2_handle_ep0 + 0x000000003bc03d50 0x346 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03d50 dwc2_handle_ep0 + .text.dwc2_udc_irq + 0x000000003bc04096 0x540 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc04096 dwc2_udc_irq + .text.dwc2_ep0_kick + 0x000000003bc045d6 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc045d6 dwc2_ep0_kick + .text.dwc2_queue + 0x000000003bc045ee 0xd8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc045ee dwc2_queue + .text.usb_polling + 0x000000003bc046c6 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + 0x000000003bc046c6 usb_polling + .text.crc16_ccitt + 0x000000003bc04706 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + 0x000000003bc04706 crc16_ccitt + .text.LzmaDec_WriteRem + 0x000000003bc04738 0x72 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_DecodeReal2 + 0x000000003bc047aa 0x138a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_TryDummy + 0x000000003bc05b34 0x4e8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_Init + 0x000000003bc0601c 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc0601c LzmaDec_Init + .text.LzmaDec_DecodeToDic + 0x000000003bc06030 0x27c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc06030 LzmaDec_DecodeToDic + .text.LzmaDec_FreeProbs + 0x000000003bc062ac 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc062ac LzmaDec_FreeProbs + .text.LzmaDec_AllocateProbs2.isra.0 + 0x000000003bc062c8 0x66 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaProps_Decode + 0x000000003bc0632e 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc0632e LzmaProps_Decode + .text.LzmaDec_AllocateProbs + 0x000000003bc06378 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc06378 LzmaDec_AllocateProbs + .text.LzmaDecode + 0x000000003bc063a8 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc063a8 LzmaDecode + .text.LZ4F_readLE32 + 0x000000003bc06452 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe_withSmallPrefix + 0x000000003bc06476 0x276 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_updateDict + 0x000000003bc066ec 0x110 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe + 0x000000003bc067fc 0x26e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc067fc LZ4_decompress_safe + .text.LZ4_decompress_safe_withPrefix64k + 0x000000003bc06a6a 0x26a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc06a6a LZ4_decompress_safe_withPrefix64k + .text.LZ4_decompress_safe_forceExtDict + 0x000000003bc06cd4 0x316 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc06cd4 LZ4_decompress_safe_forceExtDict + .text.LZ4_decompress_safe_usingDict + 0x000000003bc06fea 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc06fea LZ4_decompress_safe_usingDict + .text.LZ4F_isError + 0x000000003bc07010 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc07010 LZ4F_isError + .text.LZ4F_getBlockSize + 0x000000003bc0701c 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc0701c LZ4F_getBlockSize + .text.LZ4F_decodeHeader + 0x000000003bc0703a 0x1a4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_createDecompressionContext + 0x000000003bc071de 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc071de LZ4F_createDecompressionContext + .text.LZ4F_decompress + 0x000000003bc0720e 0x7dc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc0720e LZ4F_decompress + .text.XXH32_avalanche + 0x000000003bc079ea 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH_read32 + 0x000000003bc07a16 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH32_finalize.constprop.0 + 0x000000003bc07a2c 0x33a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH32 0x000000003bc07d66 0x1c6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + 0x000000003bc07d66 XXH32 + .text.XXH32_reset + 0x000000003bc07f2c 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + 0x000000003bc07f2c XXH32_reset + .text.XXH32_update + 0x000000003bc07f82 0x1d2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + 0x000000003bc07f82 XXH32_update + .text.XXH32_digest + 0x000000003bc08154 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + 0x000000003bc08154 XXH32_digest + .text.ddr_init + 0x000000003bc08194 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + 0x000000003bc08194 ddr_init + .text.read_ddr_pkg_info + 0x000000003bc081c8 0x22e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc081c8 read_ddr_pkg_info + .text.get_ddr_vendor + 0x000000003bc083f6 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc083f6 get_ddr_vendor + .text.axi_mon_start_all + 0x000000003bc08400 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + 0x000000003bc08400 axi_mon_start_all + .text.ddr_sys_bring_up + 0x000000003bc08450 0x224 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + 0x000000003bc08450 ddr_sys_bring_up + .text.cvx16_bist_wr_prbs_init + 0x000000003bc08674 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08674 cvx16_bist_wr_prbs_init + .text.cvx16_bist_wr_sram_init + 0x000000003bc086c2 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc086c2 cvx16_bist_wr_sram_init + .text.cvx16_bist_rdglvl_init + 0x000000003bc08722 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08722 cvx16_bist_rdglvl_init + .text.cvx16_bist_rdlvl_init + 0x000000003bc08768 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08768 cvx16_bist_rdlvl_init + .text.cvx16_bist_wdqlvl_init + 0x000000003bc08852 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08852 cvx16_bist_wdqlvl_init + .text.cvx16_bist_wdmlvl_init + 0x000000003bc08902 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08902 cvx16_bist_wdmlvl_init + .text.cvx16_bist_start_check + 0x000000003bc08962 0x6a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08962 cvx16_bist_start_check + .text.cvx16_rdvld_train + 0x000000003bc089cc 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc089cc cvx16_rdvld_train + .text.cvx16_dll_cal + 0x000000003bc08a72 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08a72 cvx16_dll_cal + .text.cvx16_clk_normal + 0x000000003bc08ada 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08ada cvx16_clk_normal + .text.cvx16_clk_div2 + 0x000000003bc08b36 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08b36 cvx16_clk_div2 + .text.cvx16_clk_div40 + 0x000000003bc08b4c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08b4c cvx16_clk_div40 + .text.cvx16_chg_pll_freq + 0x000000003bc08b62 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08b62 cvx16_chg_pll_freq + .text.cvx16_ddr_phy_power_on_seq1 + 0x000000003bc08c5a 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08c5a cvx16_ddr_phy_power_on_seq1 + .text.cvx16_ddr_phy_power_on_seq2 + 0x000000003bc08c9e 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08c9e cvx16_ddr_phy_power_on_seq2 + .text.cvx16_ddr_phy_power_on_seq3 + 0x000000003bc08ce6 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08ce6 cvx16_ddr_phy_power_on_seq3 + .text.cvx16_wait_for_dfi_init_complete + 0x000000003bc08d20 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08d20 cvx16_wait_for_dfi_init_complete + .text.cvx16_polling_dfi_init_start + 0x000000003bc08d58 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08d58 cvx16_polling_dfi_init_start + .text.cvx16_set_dfi_init_complete + 0x000000003bc08d72 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08d72 cvx16_set_dfi_init_complete + .text.cvx16_INT_ISR_08 + 0x000000003bc08d9a 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08d9a cvx16_INT_ISR_08 + .text.cvx16_polling_synp_normal_mode + 0x000000003bc08dc6 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08dc6 cvx16_polling_synp_normal_mode + .text.cvx16_dfi_ca_park_prbs + 0x000000003bc08de2 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08de2 cvx16_dfi_ca_park_prbs + .text.cvx16_wrlvl_req + 0x000000003bc08e4a 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08e4a cvx16_wrlvl_req + .text.cvx16_setting_check + 0x000000003bc08e4c 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08e4c cvx16_setting_check + .text.cvx16_set_dfi_init_start + 0x000000003bc08e6c 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08e6c cvx16_set_dfi_init_start + .text.cvx16_pll_init + 0x000000003bc08e92 0x9c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08e92 cvx16_pll_init + .text.cvx16_clk_gating_disable + 0x000000003bc08f2e 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08f2e cvx16_clk_gating_disable + .text.cvx16_clk_gating_enable + 0x000000003bc08f78 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08f78 cvx16_clk_gating_enable + .text.cvx16_rdglvl_req + 0x000000003bc08fe8 0xc6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08fe8 cvx16_rdglvl_req + .text.cvx16_rdlvl_req + 0x000000003bc090ae 0x170 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc090ae cvx16_rdlvl_req + .text.cvx16_wdqlvl_req + 0x000000003bc0921e 0x182 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc0921e cvx16_wdqlvl_req + .text.cvx16_en_rec_vol_mode + 0x000000003bc093a0 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc093a0 cvx16_en_rec_vol_mode + .text.ctrl_init_detect_dram_size + 0x000000003bc093ba 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc093ba ctrl_init_detect_dram_size + .text.pll_init + 0x000000003bc093dc 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc093dc pll_init + .text.cvx16_pinmux + 0x000000003bc09460 0x33a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + 0x000000003bc09460 cvx16_pinmux + .text.cvx16_dram_cap_check + 0x000000003bc0979a 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + 0x000000003bc0979a cvx16_dram_cap_check + .text.ddrc_init + 0x000000003bc0979c 0x1fe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc0979c ddrc_init + .text.ctrl_init_high_patch + 0x000000003bc0999a 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc0999a ctrl_init_high_patch + .text.ctrl_init_low_patch + 0x000000003bc099c8 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc099c8 ctrl_init_low_patch + .text.ctrl_init_update_by_dram_size + 0x000000003bc099f6 0x21c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc099f6 ctrl_init_update_by_dram_size + .text.phy_init + 0x000000003bc09c12 0x3da /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + 0x000000003bc09c12 phy_init + *(.rodata*) + *fill* 0x000000003bc09fec 0x4 + .rodata.build_message + 0x000000003bc09ff0 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o + 0x000000003bc09ff0 build_message + *fill* 0x000000003bc0a00a 0x6 + .rodata.version_string + 0x000000003bc0a010 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o + 0x000000003bc0a010 version_string + .rodata.jump_to_monitor.str1.8 + 0x000000003bc0a020 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + *fill* 0x000000003bc0a046 0x2 + .rodata.tf_printf.str1.8 + 0x000000003bc0a048 0x3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + *fill* 0x000000003bc0a04b 0x1 + .rodata.tf_printf + 0x000000003bc0a04c 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .rodata.__system_reset.str1.8 + 0x000000003bc0a0a8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a0ba 0x6 + .rodata.panic_handler.str1.8 + 0x000000003bc0a0c0 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a0d6 0x2 + .rodata.reset_c906l.str1.8 + 0x000000003bc0a0d8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .rodata.sys_pll_nd.str1.8 + 0x000000003bc0a0e0 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a0e9 0x7 + .rodata.sys_pll_init.str1.8 + 0x000000003bc0a0f0 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a0f9 0x7 + .rodata.switch_rtc_mode_2nd_stage.str1.8 + 0x000000003bc0a100 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a114 0x4 + .rodata.set_rtc_en_registers.str1.8 + 0x000000003bc0a118 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a144 0x4 + .rodata.cst8 0x000000003bc0a148 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .rodata.hex2ascii_data + 0x000000003bc0a170 0x25 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + 0x000000003bc0a170 hex2ascii_data + *fill* 0x000000003bc0a195 0x3 + .rodata.cst8 0x000000003bc0a198 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .rodata.load_image_by_usb.str1.8 + 0x000000003bc0a1a0 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a1ba 0x6 + .rodata.load_param2.str1.8 + 0x000000003bc0a1c0 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .rodata.load_ddr_param.str1.8 + 0x000000003bc0a218 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .rodata.load_ddr.str1.8 + 0x000000003bc0a260 0x4d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a2ad 0x3 + .rodata.load_blcp_2nd.str1.8 + 0x000000003bc0a2b0 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .rodata.load_monitor.str1.8 + 0x000000003bc0a390 0xcf /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a45f 0x1 + .rodata.load_loader_2nd.str1.8 + 0x000000003bc0a460 0xce /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a52e 0x2 + .rodata.load_rest.str1.8 + 0x000000003bc0a530 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .rodata.bl2_main.str1.8 + 0x000000003bc0a590 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a614 0x4 + .rodata.cst8 0x000000003bc0a618 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .rodata.SzAlloc.str1.8 + 0x000000003bc0a620 0x1f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a63f 0x1 + .rodata.decompress_lzma.str1.8 + 0x000000003bc0a640 0x92 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a6d2 0x6 + .rodata.decompress_lz4.str1.8 + 0x000000003bc0a6d8 0x72 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a74a 0x6 + .rodata.decompress.str1.8 + 0x000000003bc0a750 0x31 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a781 0x7 + .rodata.__func__.0 + 0x000000003bc0a788 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .rodata.__func__.1 + 0x000000003bc0a790 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .rodata.reset.str1.8 + 0x000000003bc0a7a0 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a7b6 0x2 + .rodata.unbind.str1.8 + 0x000000003bc0a7b8 0xd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a7c5 0x3 + .rodata.bind.str1.8 + 0x000000003bc0a7c8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .rodata.bulkOutCmpl.str1.8 + 0x000000003bc0a7d0 0x61 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a831 0x7 + .rodata.reqComplete.str1.8 + 0x000000003bc0a838 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a84d 0x3 + .rodata.setup.str1.8 + 0x000000003bc0a850 0xd2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a922 0x2 + .rodata.setup 0x000000003bc0a924 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .rodata.print_buf_addr.str1.8 + 0x000000003bc0a960 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aa4a 0x6 + .rodata.acm_app_init.str1.8 + 0x000000003bc0aa50 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aa65 0x3 + .rodata.AcmApp.str1.8 + 0x000000003bc0aa68 0x10b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab73 0x5 + .rodata.str1.8 + 0x000000003bc0ab78 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab7c 0x4 + .rodata.__func__.0 + 0x000000003bc0ab80 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab85 0x3 + .rodata.__func__.1 + 0x000000003bc0ab88 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab8f 0x1 + .rodata.__func__.4 + 0x000000003bc0ab90 0xb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab9b 0x5 + .rodata.__func__.5 + 0x000000003bc0aba0 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aba6 0x2 + .rodata.dwc2_free_request.str1.8 + 0x000000003bc0aba8 0x23 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0abcb 0x5 + .rodata.dwc2_hsotg_txfifo_flush.constprop.0.str1.8 + 0x000000003bc0abd0 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ac1a 0x6 + .rodata.dwc2_hsotg_init_fifo.constprop.0.str1.8 + 0x000000003bc0ac20 0x2d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ac4d 0x3 + .rodata._dwc2_ep_disable.isra.0.str1.8 + 0x000000003bc0ac50 0x77 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0acc7 0x1 + .rodata.dwc2_reconfig_usbd.str1.8 + 0x000000003bc0acc8 0x71 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ad39 0x7 + .rodata.dwc2_udc_probe.str1.8 + 0x000000003bc0ad40 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ad8e 0x2 + .rodata.__func__.0 + 0x000000003bc0ad90 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ada2 0x6 + .rodata.__func__.1 + 0x000000003bc0ada8 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0adb9 0x7 + .rodata.__func__.2 + 0x000000003bc0adc0 0x13 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0add3 0x5 + .rodata.__func__.3 + 0x000000003bc0add8 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .rodata.__func__.4 + 0x000000003bc0adf0 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae05 0x3 + .rodata.driver_name + 0x000000003bc0ae08 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae11 0x7 + .rodata.dwc2_udc_ops + 0x000000003bc0ae18 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .rodata.ep0name + 0x000000003bc0ae60 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae6c 0x4 + .rodata.ep1name + 0x000000003bc0ae70 0xb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae7b 0x5 + .rodata.ep2name + 0x000000003bc0ae80 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae8c 0x4 + .rodata.ep3name + 0x000000003bc0ae90 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae9a 0x6 + .rodata.dwc2_handle_ep0.str1.8 + 0x000000003bc0aea0 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .rodata.dwc2_handle_ep0 + 0x000000003bc0aeb4 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + *fill* 0x000000003bc0aee4 0x4 + .rodata.dwc2_udc_irq.str1.8 + 0x000000003bc0aee8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + *fill* 0x000000003bc0aefa 0x6 + .rodata.usb_polling.str1.8 + 0x000000003bc0af00 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + *fill* 0x000000003bc0af11 0x7 + .rodata.crc16_tab + 0x000000003bc0af18 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .rodata.LZ4F_decompress + 0x000000003bc0b118 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + *fill* 0x000000003bc0b154 0x4 + .rodata.blockSizes.0 + 0x000000003bc0b158 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .rodata.dec64table + 0x000000003bc0b178 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .rodata.inc32table + 0x000000003bc0b198 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .rodata.XXH32_finalize.constprop.0 + 0x000000003bc0b1b8 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + *fill* 0x000000003bc0b1f4 0x4 + .rodata.ddr_init.str1.8 + 0x000000003bc0b1f8 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + *fill* 0x000000003bc0b21e 0x2 + .rodata.read_ddr_pkg_info.str1.8 + 0x000000003bc0b220 0xe2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + *fill* 0x000000003bc0b302 0x2 + .rodata.read_ddr_pkg_info + 0x000000003bc0b304 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + *fill* 0x000000003bc0b34c 0x4 + .rodata.ddr_sys_bring_up.str1.8 + 0x000000003bc0b350 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + 0x81 (size before relaxing) + .rodata.cst8 0x000000003bc0b3d8 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .rodata.cvx16_pinmux + 0x000000003bc0b3f8 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .rodata.ctrl_init_update_by_dram_size + 0x000000003bc0b420 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc0b434 __RO_END__ = . + +.rela.dyn 0x000000003bc0b438 0x0 + .rela.text.setup_dl_flag + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o + .rela.text.load_param2 + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o + .rela.text.load_ddr_param + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o + .rela.text.load_ddr + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o + .rela.text.load_blcp_2nd + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o + .rela.text.load_monitor + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o + .rela.text.load_loader_2nd + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o + .rela.text.load_rest + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o + .rela.text.init + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o + +.data 0x000000003bc0b434 0x2cc + 0x000000003bc0b440 . = ALIGN (0x10) + *fill* 0x000000003bc0b434 0xc + 0x000000003bc0b440 __DATA_START__ = . + *(.data*) + .data.time_records + 0x000000003bc0b440 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc0b440 time_records + .data.ConfDesc + 0x000000003bc0b448 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b451 0x7 + .data.acm_buf 0x000000003bc0b458 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .data.acm_call_mgmt_descriptor + 0x000000003bc0b460 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b465 0x3 + .data.acm_control_interface_desc + 0x000000003bc0b468 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b471 0x7 + .data.acm_data_interface_desc + 0x000000003bc0b478 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b481 0x7 + .data.acm_descriptor + 0x000000003bc0b488 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b48c 0x4 + .data.acm_fs_in_desc + 0x000000003bc0b490 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b497 0x1 + .data.acm_fs_notify_desc + 0x000000003bc0b498 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b49f 0x1 + .data.acm_fs_out_desc + 0x000000003bc0b4a0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4a7 0x1 + .data.acm_header_desc + 0x000000003bc0b4a8 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4ad 0x3 + .data.acm_hs_in_desc + 0x000000003bc0b4b0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4b7 0x1 + .data.acm_hs_notify_desc + 0x000000003bc0b4b8 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4bf 0x1 + .data.acm_hs_out_desc + 0x000000003bc0b4c0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4c7 0x1 + .data.acm_union_desc + 0x000000003bc0b4c8 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4cd 0x3 + .data.bosDesc 0x000000003bc0b4d0 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4d5 0x3 + .data.bulkBufAlloc + 0x000000003bc0b4d8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .data.capabilityExtDesc + 0x000000003bc0b4e0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4e7 0x1 + .data.cb0_buf 0x000000003bc0b4e8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .data.cb1_buf 0x000000003bc0b4f0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .data.cb2_buf 0x000000003bc0b4f8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .data.cmdBufAlloc + 0x000000003bc0b500 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .data.descriptorsFs + 0x000000003bc0b508 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .data.descriptorsHs + 0x000000003bc0b558 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .data.devHsDesc + 0x000000003bc0b5a8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b5ba 0x6 + .data.drv_obj 0x000000003bc0b5c0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .data.ep0BuffAlloc + 0x000000003bc0b610 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .data.g_driver + 0x000000003bc0b618 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .data.handler 0x000000003bc0b670 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .data.languageDesc + 0x000000003bc0b678 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b67c 0x4 + .data.qualifierDesc + 0x000000003bc0b680 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b68a 0x6 + .data.rsp_buf 0x000000003bc0b690 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .data.setup_buf + 0x000000003bc0b698 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .data.dwc2_ep_ops + 0x000000003bc0b6a0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .data.ep0_fifo_size + 0x000000003bc0b6f0 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .data.ep_fifo_size + 0x000000003bc0b6f4 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .data.cv_usb_vid + 0x000000003bc0b6f8 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + 0x000000003bc0b6f8 cv_usb_vid + *fill* 0x000000003bc0b6fa 0x2 + .data.ddr_data_rate + 0x000000003bc0b6fc 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc0b6fc ddr_data_rate + 0x000000003bc0b700 . = ALIGN (0x10) + 0x000000003bc0b700 __DATA_END__ = . + +stacks 0x000000003bc0b700 0x2000 + 0x000000003bc0b700 . = ALIGN (0x40) + *fill* 0x000000003bc0b700 0x0 + 0x000000003bc0b700 __STACKS_START__ = . + 0x000000003bc0d700 . = (. + 0x2000) + *fill* 0x000000003bc0b700 0x2000 + 0x000000003bc0d700 . = ALIGN (0x40) + 0x000000003bc0d700 __STACKS_END__ = . + +.bss 0x000000003bc0d800 0x5c10 + 0x000000003bc0d800 . = ALIGN (0x10) + 0x000000003bc0d800 __BSS_START__ = . + *(SORT_BY_ALIGNMENT(.bss*)) + .bss.fip_param2 + 0x000000003bc0d800 0x1000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .bss.sram_union_buf + 0x000000003bc0e800 0x4000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .bss.acm_bufArr + 0x000000003bc12800 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12800 acm_bufArr + .bss.bulkBufAllocArr + 0x000000003bc12880 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12880 bulkBufAllocArr + .bss.cb0_bufArr + 0x000000003bc12a80 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12a80 cb0_bufArr + .bss.cb1_bufArr + 0x000000003bc12b00 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12b00 cb1_bufArr + .bss.cb2_bufArr + 0x000000003bc12b80 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12b80 cb2_bufArr + .bss.cmdBufAllocArr + 0x000000003bc12c00 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12c00 cmdBufAllocArr + .bss.ep0BuffAllocArr + 0x000000003bc12e00 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12e00 ep0BuffAllocArr + .bss.handlerArr + 0x000000003bc12e80 0x400 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12e80 handlerArr + .bss.rsp_bufArr + 0x000000003bc13280 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc13280 rsp_bufArr + *fill* 0x000000003bc13290 0x30 + .bss.setup_bufArr + 0x000000003bc132c0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc132c0 setup_bufArr + .bss.fw_dynamic_info + 0x000000003bc132c8 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .bss.comp_alloc_buf + 0x000000003bc132f8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .bss.comp_alloc_size + 0x000000003bc13300 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .bss.acm 0x000000003bc13308 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc13308 acm + .bss.bulkBuf 0x000000003bc13310 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.bulkInReq + 0x000000003bc13318 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.bulkOutReq + 0x000000003bc13320 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.cmdBuf 0x000000003bc13328 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.ep0Buff 0x000000003bc13330 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.ep0Req 0x000000003bc13338 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.epIn 0x000000003bc13340 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.epOut 0x000000003bc13348 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.fip_buf 0x000000003bc13350 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.productDesc + 0x000000003bc13358 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc13374 0x4 + .bss.serial.2 0x000000003bc13378 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.serialDesc + 0x000000003bc13388 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc133a4 0x4 + .bss.vendorDesc + 0x000000003bc133a8 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.reg 0x000000003bc133b8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc133b8 reg + .bss.the_controller + 0x000000003bc133c0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc133c0 the_controller + .bss.reg_set 0x000000003bc133c8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc133c8 reg_set + .bss.reg_span 0x000000003bc133d0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc133d0 reg_span + .bss.reg_step 0x000000003bc133d8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc133d8 reg_step + .bss.fip_tx_offset + 0x000000003bc133e0 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.fip_tx_size + 0x000000003bc133e4 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.transfer_size + 0x000000003bc133e8 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.ts 0x000000003bc133ec 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.rddata 0x000000003bc133f0 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc133f0 rddata + .bss.dev_freq 0x000000003bc133f4 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc133f4 dev_freq + .bss.freq_in 0x000000003bc133f8 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc133f8 freq_in + .bss.mod_freq 0x000000003bc133fc 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc133fc mod_freq + .bss.tar_freq 0x000000003bc13400 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc13400 tar_freq + .bss.ack_idx.6 + 0x000000003bc13404 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.acm_configValue + 0x000000003bc13405 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc13405 acm_configValue + .bss.configBreak + 0x000000003bc13406 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.configValue + 0x000000003bc13407 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.flagEnterDL + 0x000000003bc13408 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.flagReboot + 0x000000003bc13409 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.is_serial_patched.3 + 0x000000003bc1340a 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.mem_alloc_cnt + 0x000000003bc1340b 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.ddr_capacity + 0x000000003bc1340c 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1340c ddr_capacity + .bss.ddr_type 0x000000003bc1340d 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1340d ddr_type + .bss.ddr_vendor + 0x000000003bc1340e 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1340e ddr_vendor + .bss.pkg 0x000000003bc1340f 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1340f pkg + *(COMMON) + 0x000000003bc13410 . = ALIGN (0x10) + 0x000000003bc13410 __BSS_END__ = . + 0x000000003bc13410 __BL2_END__ = . + 0x0000000000005c10 __BSS_SIZE__ = SIZEOF (.bss) + 0x0000000000000001 ASSERT ((. <= 0x3bc19000), BL2 image has exceeded its limit.) + 0x0000000004400100 p_rom_api_cryptodma_aes_decrypt = 0x4400100 + 0x0000000004400080 p_rom_api_flash_init = 0x4400080 + 0x0000000004400020 p_rom_api_get_boot_src = 0x4400020 + 0x00000000044000c0 p_rom_api_get_number_of_retries = 0x44000c0 + 0x00000000044000a0 p_rom_api_image_crc = 0x44000a0 + 0x0000000004400060 p_rom_api_load_image = 0x4400060 + 0x0000000004400040 p_rom_api_set_boot_src = 0x4400040 + 0x00000000044000e0 p_rom_api_verify_rsa = 0x44000e0 +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/assert.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_entrypoint.o +OUTPUT(/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2.elf elf64-littleriscv) + +.debug_info 0x0000000000000000 0x68732 + .debug_info 0x0000000000000000 0x89 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o + .debug_info 0x0000000000000089 0x1a1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_info 0x000000000000022a 0x1e4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .debug_info 0x000000000000040e 0x45f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_info 0x000000000000086d 0x3d6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_info 0x0000000000000c43 0x33f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_info 0x0000000000000f82 0x474 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_info 0x00000000000013f6 0x1a24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_info 0x0000000000002e1a 0x622 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .debug_info 0x000000000000343c 0x22a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .debug_info 0x0000000000003666 0x41f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .debug_info 0x0000000000003a85 0x2d6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .debug_info 0x0000000000003d5b 0x13d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o + .debug_info 0x0000000000003e98 0xf6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o + .debug_info 0x0000000000003f8e 0x483 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_info 0x0000000000004411 0x1c6e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_info 0x000000000000607f 0x9df /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_info 0x0000000000006a5e 0x3a2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_info 0x0000000000006e00 0x2fa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_info 0x0000000000009da8 0x3221 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_info 0x000000000000cfc9 0x39b8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_info 0x0000000000010981 0x2b7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_info 0x0000000000010c38 0x279 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .debug_info 0x0000000000010eb1 0x17cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_info 0x000000000001267e 0x285e2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_info 0x000000000003ac60 0x4039 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_info 0x000000000003ec99 0x1a7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .debug_info 0x000000000003ee40 0x516 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_info 0x000000000003f356 0x1135 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_info 0x000000000004048b 0x23242 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_info 0x00000000000636cd 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_info 0x00000000000638ad 0x11b2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_info 0x0000000000064a5f 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_info 0x0000000000064b27 0x1c32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_info 0x0000000000066759 0x1fab /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .debug_info 0x0000000000068704 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_entrypoint.o + +.debug_abbrev 0x0000000000000000 0x4de5 + .debug_abbrev 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o + .debug_abbrev 0x0000000000000048 0xc1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_abbrev 0x0000000000000109 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .debug_abbrev 0x00000000000001b9 0x1ae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_abbrev 0x0000000000000367 0x197 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_abbrev 0x00000000000004fe 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_abbrev 0x0000000000000685 0x1e5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_abbrev 0x000000000000086a 0x371 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_abbrev 0x0000000000000bdb 0x134 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .debug_abbrev 0x0000000000000d0f 0x11a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .debug_abbrev 0x0000000000000e29 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .debug_abbrev 0x0000000000000f49 0x15d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .debug_abbrev 0x00000000000010a6 0xac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o + .debug_abbrev 0x0000000000001152 0x8c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o + .debug_abbrev 0x00000000000011de 0x202 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_abbrev 0x00000000000013e0 0x42f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_abbrev 0x000000000000180f 0x305 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_abbrev 0x0000000000001b14 0x181 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_abbrev 0x0000000000001c95 0x6f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_abbrev 0x000000000000238b 0x657 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_abbrev 0x00000000000029e2 0x55c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_abbrev 0x0000000000002f3e 0x15a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_abbrev 0x0000000000003098 0x12f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .debug_abbrev 0x00000000000031c7 0x454 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_abbrev 0x000000000000361b 0x69b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_abbrev 0x0000000000003cb6 0x4b9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_abbrev 0x000000000000416f 0xe9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .debug_abbrev 0x0000000000004258 0x17f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_abbrev 0x00000000000043d7 0x203 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_abbrev 0x00000000000045da 0x3e8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_abbrev 0x00000000000049c2 0x9e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_abbrev 0x0000000000004a60 0xd3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_abbrev 0x0000000000004b33 0x69 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_abbrev 0x0000000000004b9c 0x16b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_abbrev 0x0000000000004d07 0xca /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .debug_abbrev 0x0000000000004dd1 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_entrypoint.o + +.debug_aranges 0x0000000000000000 0x1e80 + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o + .debug_aranges + 0x0000000000000020 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_aranges + 0x0000000000000070 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .debug_aranges + 0x00000000000000e0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_aranges + 0x0000000000000170 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_aranges + 0x00000000000001b0 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_aranges + 0x0000000000000250 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_aranges + 0x00000000000002a0 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_aranges + 0x0000000000000380 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .debug_aranges + 0x00000000000003b0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .debug_aranges + 0x00000000000003f0 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .debug_aranges + 0x0000000000000470 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .debug_aranges + 0x00000000000004a0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o + .debug_aranges + 0x00000000000004e0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o + .debug_aranges + 0x0000000000000510 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_aranges + 0x0000000000000560 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_aranges + 0x0000000000000630 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_aranges + 0x00000000000006d0 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_aranges + 0x0000000000000770 0x170 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_aranges + 0x00000000000008e0 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_aranges + 0x0000000000000ae0 0x190 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_aranges + 0x0000000000000c70 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_aranges + 0x0000000000000ca0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .debug_aranges + 0x0000000000000cf0 0x100 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_aranges + 0x0000000000000df0 0x7c0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_aranges + 0x00000000000015b0 0x1b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_aranges + 0x0000000000001760 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .debug_aranges + 0x0000000000001790 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_aranges + 0x0000000000001800 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_aranges + 0x0000000000001850 0x4e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_aranges + 0x0000000000001d30 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_aranges + 0x0000000000001d60 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_aranges + 0x0000000000001d90 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_aranges + 0x0000000000001dc0 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_aranges + 0x0000000000001e20 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .debug_aranges + 0x0000000000001e50 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_entrypoint.o + +.debug_macro 0x0000000000000000 0x9b13 + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o + .debug_macro 0x0000000000000011 0x86e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o + .debug_macro 0x000000000000087f 0x115 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000000994 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001208 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001477 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001488 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x000000000000160f 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001655 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x000000000000166b 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001693 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x00000000000016af 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x000000000000185e 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001923 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x00000000000019a5 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001bce 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001c8c 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001d86 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001f66 0x186b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x00000000000037d1 0x12c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x00000000000038fd 0x121 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000003a1e 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000003b4e 0x178 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000003cc6 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000003d92 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000003da8 0x146 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000003eee 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000003f94 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x000000000000404c 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x000000000000407a 0x14b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x00000000000041c5 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x000000000000443c 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x00000000000044d0 0xe2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x00000000000045b2 0x125 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x00000000000046d7 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000004754 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .debug_macro 0x000000000000479a 0x9b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000004835 0x11b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004950 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004966 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004982 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004a40 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000004a90 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000004ad6 0x1f9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000004ccf 0xa60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x000000000000572f 0x872 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000005fa1 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000005fe1 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000005ffd 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x000000000000601f 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000006125 0x192 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x00000000000062b7 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x00000000000062cd 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x00000000000062f5 0x13c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000006431 0x16b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x000000000000659c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x00000000000065b2 0x61 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000006613 0x9d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x00000000000066b0 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000006702 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006902 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006918 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006928 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000693e 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000697e 0x51d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006e9b 0x17a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000007015 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000703d 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000753a 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x00000000000075ce 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000007644 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000765a 0x207 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007861 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007877 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x00000000000078c3 0x517 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007dda 0x1cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000007fa7 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x00000000000080d7 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000008125 0x308 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x000000000000842d 0x2ef /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x000000000000871c 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000087c4 0x27 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000087eb 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x000000000000884d 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000088ca 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000088f6 0x1ac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000008aa2 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000008af4 0x11b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000008c0f 0xfb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008d0a 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008d26 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008ef9 0x1c4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x00000000000090bd 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000009163 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x00000000000095fc 0xd7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x00000000000096d3 0x110 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x00000000000097e3 0xac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x000000000000988f 0xa1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000009930 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x00000000000099c8 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000009a72 0xa1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + +.debug_line 0x0000000000000000 0x75d63 + .debug_line 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o + .debug_line 0x0000000000000028 0x231 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_line 0x0000000000000259 0x351 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .debug_line 0x00000000000005aa 0x4f5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_line 0x0000000000000a9f 0x341 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_line 0x0000000000000de0 0x559 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_line 0x0000000000001339 0x812 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_line 0x0000000000001b4b 0x1538 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_line 0x0000000000003083 0x21d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .debug_line 0x00000000000032a0 0x2db /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .debug_line 0x000000000000357b 0x5f0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .debug_line 0x0000000000003b6b 0x2f7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .debug_line 0x0000000000003e62 0x1f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o + .debug_line 0x0000000000004058 0x117 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o + .debug_line 0x000000000000416f 0x589 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_line 0x00000000000046f8 0x14d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_line 0x0000000000005bd0 0x792 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_line 0x0000000000006362 0x282 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_line 0x00000000000065e4 0x265c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_line 0x0000000000008c40 0x27a7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_line 0x000000000000b3e7 0x3667 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_line 0x000000000000ea4e 0x2d9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_line 0x000000000000ed27 0x2a4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .debug_line 0x000000000000efcb 0x4528 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_line 0x00000000000134f3 0x34953 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_line 0x0000000000047e46 0x3d78 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_line 0x000000000004bbbe 0x260 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .debug_line 0x000000000004be1e 0x622 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_line 0x000000000004c440 0xcb5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_line 0x000000000004d0f5 0x251fe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_line 0x00000000000722f3 0x301 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_line 0x00000000000725f4 0xc73 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_line 0x0000000000073267 0x165 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_line 0x00000000000733cc 0x136a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_line 0x0000000000074736 0x145c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + .debug_line 0x0000000000075b92 0x1d1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_entrypoint.o + +.debug_str 0x0000000000000000 0x2394c + .debug_str 0x0000000000000000 0x2979 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o + 0x29a6 (size before relaxing) + .debug_str 0x0000000000002979 0x94ac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + 0xbeb1 (size before relaxing) + .debug_str 0x000000000000be25 0x217 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + 0x7166 (size before relaxing) + .debug_str 0x000000000000c03c 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + 0xbf4c (size before relaxing) + .debug_str 0x000000000000c134 0x243 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + 0x720d (size before relaxing) + .debug_str 0x000000000000c377 0x2ec /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + 0x67d1 (size before relaxing) + .debug_str 0x000000000000c663 0x7f0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + 0x7789 (size before relaxing) + .debug_str 0x000000000000ce53 0xf0b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + 0x7f4a (size before relaxing) + .debug_str 0x000000000000dd5e 0x30c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + 0x7793 (size before relaxing) + .debug_str 0x000000000000e06a 0x281 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + 0x4370 (size before relaxing) + .debug_str 0x000000000000e2eb 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + 0x46c2 (size before relaxing) + .debug_str 0x000000000000e36b 0x4b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + 0x709e (size before relaxing) + .debug_str 0x000000000000e3b6 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o + 0x3c13 (size before relaxing) + .debug_str 0x000000000000e3dc 0x1b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o + 0x3a8b (size before relaxing) + .debug_str 0x000000000000e3f7 0x5ca5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + 0xd1bf (size before relaxing) + .debug_str 0x000000000001409c 0x443 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + 0x81e5 (size before relaxing) + .debug_str 0x00000000000144df 0xc1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + 0x8108 (size before relaxing) + .debug_str 0x00000000000150f9 0x1cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + 0x437f (size before relaxing) + .debug_str 0x00000000000152c6 0x4ba0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + 0xca10 (size before relaxing) + .debug_str 0x0000000000019e66 0x6fa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0xba4a (size before relaxing) + .debug_str 0x000000000001a560 0x314 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0xb7f6 (size before relaxing) + .debug_str 0x000000000001a874 0x19 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + 0x75af (size before relaxing) + .debug_str 0x000000000001a88d 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + 0x4115 (size before relaxing) + .debug_str 0x000000000001a8d3 0x12b6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + 0x903e (size before relaxing) + .debug_str 0x000000000001bb89 0x3a87 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + 0x85bd (size before relaxing) + .debug_str 0x000000000001f610 0x7f5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + 0x7a5b (size before relaxing) + .debug_str 0x000000000001fe05 0x51 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + 0x71fd (size before relaxing) + .debug_str 0x000000000001fe56 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + 0x72aa (size before relaxing) + .debug_str 0x000000000001fed3 0x2ed3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + 0x9ee5 (size before relaxing) + .debug_str 0x0000000000022da6 0xa62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x8793 (size before relaxing) + .debug_str 0x0000000000023808 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + 0x985d (size before relaxing) + .debug_str 0x0000000000023858 0x1f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + 0x5093 (size before relaxing) + .debug_str 0x0000000000023877 0x27 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + 0x4e2c (size before relaxing) + .debug_str 0x000000000002389e 0x4f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + 0x7579 (size before relaxing) + .debug_str 0x00000000000238ed 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + 0x743b (size before relaxing) + .debug_str 0x0000000000023921 0x2b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_entrypoint.o + 0x65 (size before relaxing) + +.comment 0x0000000000000000 0x1d + .comment 0x0000000000000000 0x1d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o + 0x1e (size before relaxing) + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + +.note.GNU-stack + 0x0000000000000000 0x0 + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + +.debug_ranges 0x0000000000000000 0x2f790 + .debug_ranges 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_ranges 0x0000000000000040 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .debug_ranges 0x00000000000000a0 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_ranges 0x00000000000001c0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_ranges 0x00000000000001f0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_ranges 0x0000000000000280 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_ranges 0x0000000000000300 0x8d0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_ranges 0x0000000000000bd0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .debug_ranges 0x0000000000000bf0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .debug_ranges 0x0000000000000c20 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .debug_ranges 0x0000000000000d40 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .debug_ranges 0x0000000000000d60 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o + .debug_ranges 0x0000000000000d90 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o + .debug_ranges 0x0000000000000db0 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_ranges 0x0000000000000e90 0x100 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_ranges 0x0000000000000f90 0x160 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_ranges 0x00000000000010f0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_ranges 0x0000000000001180 0x3d0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_ranges 0x0000000000001550 0x480 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_ranges 0x00000000000019d0 0x6b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_ranges 0x0000000000002080 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_ranges 0x00000000000020a0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .debug_ranges 0x00000000000020e0 0xbe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_ranges 0x0000000000002cc0 0x1cf40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_ranges 0x000000000001fc00 0x27b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_ranges 0x00000000000223b0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .debug_ranges 0x00000000000223d0 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_ranges 0x00000000000224a0 0x190 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_ranges 0x0000000000022630 0xc470 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_ranges 0x000000000002eaa0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_ranges 0x000000000002eac0 0x210 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_ranges 0x000000000002ecd0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_ranges 0x000000000002ecf0 0x520 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_ranges 0x000000000002f210 0x580 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + +.debug_frame 0x0000000000000000 0x47b8 + .debug_frame 0x0000000000000000 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_frame 0x0000000000000058 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .debug_frame 0x00000000000000e0 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_frame 0x0000000000000198 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_frame 0x00000000000001f8 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_frame 0x00000000000002f0 0xd8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_frame 0x00000000000003c8 0x1d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_frame 0x00000000000005a0 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .debug_frame 0x00000000000005c8 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .debug_frame 0x0000000000000608 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .debug_frame 0x00000000000006a8 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .debug_frame 0x00000000000006e0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o + .debug_frame 0x0000000000000720 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o + .debug_frame 0x0000000000000748 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_frame 0x00000000000007d0 0x258 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_frame 0x0000000000000a28 0x158 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_frame 0x0000000000000b80 0x118 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_frame 0x0000000000000c98 0x3b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_frame 0x0000000000001048 0x5a8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_frame 0x00000000000015f0 0x520 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_frame 0x0000000000001b10 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_frame 0x0000000000001b50 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .debug_frame 0x0000000000001bb8 0x2d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_frame 0x0000000000001e90 0x1758 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_frame 0x00000000000035e8 0x488 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_frame 0x0000000000003a70 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .debug_frame 0x0000000000003aa8 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_frame 0x0000000000003b60 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_frame 0x0000000000003be8 0xab0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_frame 0x0000000000004698 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_frame 0x00000000000046c0 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_frame 0x00000000000046f8 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_frame 0x0000000000004720 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_frame 0x0000000000004790 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o + +.debug_loc 0x0000000000000000 0xc12a0 + .debug_loc 0x0000000000000000 0x18c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o + .debug_loc 0x000000000000018c 0x28a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_loc 0x0000000000000416 0x143 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_loc 0x0000000000000559 0x24e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_loc 0x00000000000007a7 0x8b7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_loc 0x000000000000105e 0x1f54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o + .debug_loc 0x0000000000002fb2 0x39 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o + .debug_loc 0x0000000000002feb 0x450 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o + .debug_loc 0x000000000000343b 0xc56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o + .debug_loc 0x0000000000004091 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o + .debug_loc 0x000000000000414f 0x262 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o + .debug_loc 0x00000000000043b1 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o + .debug_loc 0x0000000000004433 0x38f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o + .debug_loc 0x00000000000047c2 0xe17 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_loc 0x00000000000055d9 0x9d2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o + .debug_loc 0x0000000000005fab 0x156 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_loc 0x0000000000006101 0x1f8b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_loc 0x000000000000808c 0x28fb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_loc 0x000000000000a987 0x4255 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_loc 0x000000000000ebdc 0x11d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_loc 0x000000000000ecf9 0x33f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o + .debug_loc 0x000000000000f038 0xa0cf /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_loc 0x0000000000019107 0x5f2ef /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_loc 0x00000000000783f6 0x8560 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o + .debug_loc 0x0000000000080956 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o + .debug_loc 0x00000000000809ee 0x22c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_loc 0x0000000000080c1a 0xdfe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_loc 0x0000000000081a18 0x37fb4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_loc 0x00000000000b99cc 0x1c14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_loc 0x00000000000bb5e0 0x2b75 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_loc 0x00000000000be155 0x314b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2.sym b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2.sym new file mode 100644 index 000000000..08b449c14 --- /dev/null +++ b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2.sym @@ -0,0 +1,400 @@ + 39: 000000003bc0e800 16384 OBJECT LOCAL DEFAULT 4 sram_union_buf + 167: 000000003bc047aa 5002 FUNC LOCAL DEFAULT 1 LzmaDec_DecodeReal2 + 38: 000000003bc0d800 4096 OBJECT LOCAL DEFAULT 4 fip_param2 + 279: 000000003bc0720e 2012 FUNC GLOBAL DEFAULT 1 LZ4F_decompress + 375: 000000003bc04096 1344 FUNC GLOBAL DEFAULT 1 dwc2_udc_irq + 168: 000000003bc05b34 1256 FUNC LOCAL DEFAULT 1 LzmaDec_TryDummy + 283: 000000003bc022d6 1144 FUNC GLOBAL DEFAULT 1 AcmApp + 62: 000000003bc01ba6 1090 FUNC LOCAL DEFAULT 1 setup + 373: 000000003bc12e80 1024 OBJECT GLOBAL DEFAULT 4 handlerArr + 394: 000000003bc09c12 986 FUNC GLOBAL DEFAULT 1 phy_init + 334: 000000003bc03d50 838 FUNC GLOBAL DEFAULT 1 dwc2_handle_ep0 + 280: 000000003bc09460 826 FUNC GLOBAL DEFAULT 1 cvx16_pinmux + 181: 000000003bc07a2c 826 FUNC LOCAL DEFAULT 1 XXH32_finalize.constprop. + 294: 000000003bc06cd4 790 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_force + 396: 000000003bc02f1a 654 FUNC GLOBAL DEFAULT 1 dwc2_reconfig_usbd + 222: 000000003bc06030 636 FUNC GLOBAL DEFAULT 1 LzmaDec_DecodeToDic + 172: 000000003bc06476 630 FUNC LOCAL DEFAULT 1 LZ4_decompress_safe_withS + 219: 000000003bc067fc 622 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe + 340: 000000003bc06a6a 618 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_withP + 58: 000000003bc0189c 564 FUNC LOCAL DEFAULT 1 bulkOutCmpl + 320: 000000003bc081c8 558 FUNC GLOBAL DEFAULT 1 read_ddr_pkg_info + 379: 000000003bc08450 548 FUNC GLOBAL DEFAULT 1 ddr_sys_bring_up + 333: 000000003bc099f6 540 FUNC GLOBAL DEFAULT 1 ctrl_init_update_by_dram_ + 312: 000000003bc01130 520 FUNC GLOBAL DEFAULT 1 load_loader_2nd + 376: 000000003bc12c00 512 OBJECT GLOBAL DEFAULT 4 cmdBufAllocArr + 218: 000000003bc12880 512 OBJECT GLOBAL DEFAULT 4 bulkBufAllocArr + 164: 000000003bc0af18 512 OBJECT LOCAL DEFAULT 1 crc16_tab + 339: 000000003bc0979c 510 FUNC GLOBAL DEFAULT 1 ddrc_init + 331: 000000003bc07f82 466 FUNC GLOBAL DEFAULT 1 XXH32_update + 337: 000000003bc07d66 454 FUNC GLOBAL DEFAULT 1 XXH32 + 136: 000000003bc02d54 422 FUNC LOCAL DEFAULT 1 _dwc2_ep_disable.isra.0 + 174: 000000003bc0703a 420 FUNC LOCAL DEFAULT 1 LZ4F_decodeHeader + 341: 000000003bc00358 410 FUNC GLOBAL DEFAULT 1 tf_printf + 275: 000000003bc0068e 398 FUNC GLOBAL DEFAULT 1 sys_pll_nd + 225: 000000003bc0921e 386 FUNC GLOBAL DEFAULT 1 cvx16_wdqlvl_req + 237: 000000003bc090ae 368 FUNC GLOBAL DEFAULT 1 cvx16_rdlvl_req + 325: 000000003bc00ea4 358 FUNC GLOBAL DEFAULT 1 load_blcp_2nd + 159: 000000003bc03960 348 FUNC LOCAL DEFAULT 1 setdma_tx + 268: 000000003bc031a8 342 FUNC GLOBAL DEFAULT 1 usb_gadget_register_drive + 314: 000000003bc03310 336 FUNC GLOBAL DEFAULT 1 dwc2_udc_probe + 282: 000000003bc02162 312 FUNC GLOBAL DEFAULT 1 acm_app_init + 248: 000000003bc0100a 294 FUNC GLOBAL DEFAULT 1 load_monitor + 173: 000000003bc066ec 272 FUNC LOCAL DEFAULT 1 LZ4F_updateDict + 158: 000000003bc0380a 252 FUNC LOCAL DEFAULT 1 complete_rx + 271: 000000003bc08b62 248 FUNC GLOBAL DEFAULT 1 cvx16_chg_pll_freq + 307: 000000003bc08768 234 FUNC GLOBAL DEFAULT 1 cvx16_bist_rdlvl_init + 301: 000000003bc014fa 232 FUNC GLOBAL DEFAULT 1 decompress_lzma + 229: 000000003bc01338 230 FUNC GLOBAL DEFAULT 1 load_rest + 135: 000000003bc02c7a 218 FUNC LOCAL DEFAULT 1 dwc2_hsotg_init_fifo.cons + 317: 000000003bc045ee 216 FUNC GLOBAL DEFAULT 1 dwc2_queue + 345: 000000003bc0208c 208 FUNC GLOBAL DEFAULT 1 print_buf_addr + 278: 000000003bc00c60 208 FUNC GLOBAL DEFAULT 1 load_param2 + 227: 000000003bc004f2 200 FUNC GLOBAL DEFAULT 1 __system_reset + 391: 000000003bc00dde 198 FUNC GLOBAL DEFAULT 1 load_ddr + 353: 000000003bc08fe8 198 FUNC GLOBAL DEFAULT 1 cvx16_rdglvl_req + 277: 000000003bc00878 188 FUNC GLOBAL DEFAULT 1 set_rtc_en_registers + 204: 000000003bc03c9e 178 FUNC GLOBAL DEFAULT 1 dwc2_udc_ep_activate + 239: 000000003bc08852 176 FUNC GLOBAL DEFAULT 1 cvx16_bist_wdqlvl_init + 383: 000000003bc01612 174 FUNC GLOBAL DEFAULT 1 decompress_lz4 + 200: 000000003bc00d30 174 FUNC GLOBAL DEFAULT 1 load_ddr_param + 366: 000000003bc063a8 170 FUNC GLOBAL DEFAULT 1 LzmaDecode + 157: 000000003bc03760 170 FUNC LOCAL DEFAULT 1 setdma_rx.isra.0 + 338: 000000003bc089cc 166 FUNC GLOBAL DEFAULT 1 cvx16_rdvld_train + 295: 000000003bc01fea 162 FUNC GLOBAL DEFAULT 1 convert_buf_addr + 129: 000000003bc0281e 160 FUNC LOCAL DEFAULT 1 dwc2_ep_enable + 297: 000000003bc08e92 156 FUNC GLOBAL DEFAULT 1 cvx16_pll_init + 342: 000000003bc029d4 154 FUNC GLOBAL DEFAULT 1 usb_gadget_unregister_dri + 298: 000000003bc0141e 152 FUNC GLOBAL DEFAULT 1 bl2_main + 133: 000000003bc02b36 144 FUNC LOCAL DEFAULT 1 dwc2_hsotg_txfifo_flush.c + 151: 000000003bc034ac 142 FUNC LOCAL DEFAULT 1 set_max_pktsize + 395: 000000003bc093dc 132 FUNC GLOBAL DEFAULT 1 pll_init + 27: 000000003bc002d6 130 FUNC LOCAL DEFAULT 1 unsigned_num_print + 347: 000000003bc12b80 128 OBJECT GLOBAL DEFAULT 4 cb2_bufArr + 321: 000000003bc12800 128 OBJECT GLOBAL DEFAULT 4 acm_bufArr + 289: 000000003bc12e00 128 OBJECT GLOBAL DEFAULT 4 ep0BuffAllocArr + 274: 000000003bc12a80 128 OBJECT GLOBAL DEFAULT 4 cb0_bufArr + 234: 000000003bc12b00 128 OBJECT GLOBAL DEFAULT 4 cb1_bufArr + 154: 000000003bc035fa 128 FUNC LOCAL DEFAULT 1 dwc2_ep0_complete_out + 263: 000000003bc016c0 126 FUNC GLOBAL DEFAULT 1 decompress + 155: 000000003bc0367a 126 FUNC LOCAL DEFAULT 1 dwc2_udc_ep0_zlp + 258: 000000003bc00b6c 124 FUNC GLOBAL DEFAULT 1 gpio_in_value + 355: 000000003bc00998 122 FUNC GLOBAL DEFAULT 1 ntostr + 211: 000000003bc0021a 120 FUNC GLOBAL DEFAULT 1 jump_to_monitor + 166: 000000003bc04738 114 FUNC LOCAL DEFAULT 1 LzmaDec_WriteRem + 262: 000000003bc08f78 112 FUNC GLOBAL DEFAULT 1 cvx16_clk_gating_enable + 256: 000000003bc08962 106 FUNC GLOBAL DEFAULT 1 cvx16_bist_start_check + 374: 000000003bc08de2 104 FUNC GLOBAL DEFAULT 1 cvx16_dfi_ca_park_prbs + 281: 000000003bc08a72 104 FUNC GLOBAL DEFAULT 1 cvx16_dll_cal + 156: 000000003bc036f8 104 FUNC LOCAL DEFAULT 1 dwc2_udc_ep0_set_stall.is + 169: 000000003bc062c8 102 FUNC LOCAL DEFAULT 1 LzmaDec_AllocateProbs2.is + 330: 000000003bc03c3c 98 FUNC GLOBAL DEFAULT 1 dwc2_udc_set_halt + 153: 000000003bc03598 98 FUNC LOCAL DEFAULT 1 dwc2_udc_ep_set_stall + 315: 000000003bc00934 96 FUNC GLOBAL DEFAULT 1 init_comm_info + 303: 000000003bc08902 96 FUNC GLOBAL DEFAULT 1 cvx16_bist_wdmlvl_init + 264: 000000003bc086c2 96 FUNC GLOBAL DEFAULT 1 cvx16_bist_wr_sram_init + 238: 000000003bc00a6c 96 FUNC GLOBAL DEFAULT 1 memcpy + 152: 000000003bc0353a 94 FUNC LOCAL DEFAULT 1 dwc2_udc_ep_clear_stall + 134: 000000003bc02bc6 94 FUNC LOCAL DEFAULT 1 kill_all_requests.isra.0 + 327: 000000003bc08ada 92 FUNC GLOBAL DEFAULT 1 cvx16_clk_normal + 60: 000000003bc01ad0 92 FUNC LOCAL DEFAULT 1 getDescAcm + 329: 000000003bc00a12 90 FUNC GLOBAL DEFAULT 1 memset + 114: 000000003bc0b618 88 OBJECT LOCAL DEFAULT 2 g_driver + 336: 000000003bc07f2c 86 FUNC GLOBAL DEFAULT 1 XXH32_reset + 313: 000000003bc02c24 86 FUNC GLOBAL DEFAULT 1 dwc2_disconnect + 131: 000000003bc02952 84 FUNC LOCAL DEFAULT 1 dwc2_dequeue + 205: 000000003bc00aec 82 FUNC GLOBAL DEFAULT 1 putchar_l + 57: 000000003bc0184a 82 FUNC LOCAL DEFAULT 1 get_unicode_string + 194: 000000003bc08400 80 FUNC GLOBAL DEFAULT 1 axi_mon_start_all + 138: 000000003bc0b6a0 80 OBJECT LOCAL DEFAULT 2 dwc2_ep_ops + 112: 000000003bc0b5c0 80 OBJECT LOCAL DEFAULT 2 drv_obj + 110: 000000003bc0b558 80 OBJECT LOCAL DEFAULT 2 descriptorsHs + 109: 000000003bc0b508 80 OBJECT LOCAL DEFAULT 2 descriptorsFs + 59: 000000003bc01b56 80 FUNC LOCAL DEFAULT 1 bulkInCmpl + 217: 000000003bc08674 78 FUNC GLOBAL DEFAULT 1 cvx16_bist_wr_prbs_init + 290: 000000003bc03460 76 FUNC GLOBAL DEFAULT 1 usb_gadget_handle_interru + 233: 000000003bc03b00 76 FUNC GLOBAL DEFAULT 1 dwc2_write_fifo_ep0 + 364: 000000003bc005ec 74 FUNC GLOBAL DEFAULT 1 reset_c906l + 363: 000000003bc00636 74 FUNC GLOBAL DEFAULT 1 setup_dl_flag + 323: 000000003bc0632e 74 FUNC GLOBAL DEFAULT 1 LzmaProps_Decode + 284: 000000003bc08f2e 74 FUNC GLOBAL DEFAULT 1 cvx16_clk_gating_disable + 292: 000000003bc08c9e 72 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 215: 000000003bc03b4c 72 FUNC GLOBAL DEFAULT 1 dwc2_set_address + 145: 000000003bc0ae18 72 OBJECT LOCAL DEFAULT 1 dwc2_udc_ops + 127: 000000003bc0279e 72 FUNC LOCAL DEFAULT 1 pullup + 392: 000000003bc028cc 70 FUNC GLOBAL DEFAULT 1 udc_reinit + 236: 000000003bc02af0 70 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_wait_bit_set + 223: 000000003bc08722 70 FUNC GLOBAL DEFAULT 1 cvx16_bist_rdglvl_init + 382: 000000003bc0391c 68 FUNC GLOBAL DEFAULT 1 dwc2_ep_fifo_write + 371: 000000003bc03abc 68 FUNC GLOBAL DEFAULT 1 dwc2_ep_fifo_read + 228: 000000003bc00834 68 FUNC GLOBAL DEFAULT 1 switch_rtc_mode_2nd_stage + 221: 000000003bc08c5a 68 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 56: 000000003bc01808 66 FUNC LOCAL DEFAULT 1 bind + 42: 000000003bc014b8 66 FUNC LOCAL DEFAULT 1 SzAlloc + 380: 000000003bc08154 64 FUNC GLOBAL DEFAULT 1 XXH32_digest + 356: 000000003bc046c6 64 FUNC GLOBAL DEFAULT 1 usb_polling + 351: 000000003bc03bfc 64 FUNC GLOBAL DEFAULT 1 dwc2_udc_set_nak + 310: 000000003bc00c20 64 FUNC GLOBAL DEFAULT 1 load_image_by_usb + 306: 000000003bc02912 64 FUNC GLOBAL DEFAULT 1 dwc2_done + 242: 000000003bc03bbc 64 FUNC GLOBAL DEFAULT 1 dwc2_ep0_write + 132: 000000003bc02ab4 60 FUNC LOCAL DEFAULT 1 wakeup + 267: 000000003bc08ce6 58 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 126: 000000003bc02764 58 FUNC LOCAL DEFAULT 1 dwc2_free_request + 232: 000000003bc08d20 56 FUNC GLOBAL DEFAULT 1 cvx16_wait_for_dfi_init_c + 128: 000000003bc027e6 56 FUNC LOCAL DEFAULT 1 dwc2_alloc_request + 50: 000000003bc0174a 56 FUNC LOCAL DEFAULT 1 requestMemAlloc + 381: 000000003bc08194 52 FUNC GLOBAL DEFAULT 1 ddr_init + 252: 000000003bc005ba 50 FUNC GLOBAL DEFAULT 1 panic_handler + 230: 000000003bc04706 50 FUNC GLOBAL DEFAULT 1 crc16_ccitt + 296: 000000003bc06378 48 FUNC GLOBAL DEFAULT 1 LzmaDec_AllocateProbs + 287: 000000003bc022a6 48 FUNC GLOBAL DEFAULT 1 get_usb_polling_timeout_v + 285: 000000003bc071de 48 FUNC GLOBAL DEFAULT 1 LZ4F_createDecompressionC + 24: 000000003bc132c8 48 OBJECT LOCAL DEFAULT 4 fw_dynamic_info + 390: 000000003bc0999a 46 FUNC GLOBAL DEFAULT 1 ctrl_init_high_patch + 253: 000000003bc029a6 46 FUNC GLOBAL DEFAULT 1 dwc2_nuke + 246: 000000003bc099c8 46 FUNC GLOBAL DEFAULT 1 ctrl_init_low_patch + 54: 000000003bc017b4 46 FUNC LOCAL DEFAULT 1 disconnect + 293: 000000003bc08d9a 44 FUNC GLOBAL DEFAULT 1 cvx16_INT_ISR_08 + 179: 000000003bc079ea 44 FUNC LOCAL DEFAULT 1 XXH32_avalanche + 304: 000000003bc0018a 42 FUNC GLOBAL DEFAULT 1 udelay + 254: 000000003bc001e2 42 FUNC GLOBAL DEFAULT 1 get_random_from_timer + 61: 000000003bc01b2c 42 FUNC LOCAL DEFAULT 1 reqComplete + 343: 000000003bc015e8 40 FUNC GLOBAL DEFAULT 1 LZ4_calloc + 288: 000000003bc03b94 40 FUNC GLOBAL DEFAULT 1 dwc2_ep0_read + 231: 000000003bc08d72 40 FUNC GLOBAL DEFAULT 1 cvx16_set_dfi_init_comple + 389: 000000003bc08e6c 38 FUNC GLOBAL DEFAULT 1 cvx16_set_dfi_init_start + 358: 000000003bc06fea 38 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_using + 55: 000000003bc017e2 38 FUNC LOCAL DEFAULT 1 unbind + 332: 000000003bc0a170 37 OBJECT GLOBAL DEFAULT 1 hex2ascii_data + 273: 000000003bc00156 36 FUNC GLOBAL DEFAULT 1 flush_dcache_range + 266: 000000003bc001be 36 FUNC GLOBAL DEFAULT 1 get_timer + 241: 000000003bc02a90 36 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_clear_bit + 171: 000000003bc06452 36 FUNC LOCAL DEFAULT 1 LZ4F_readLE32 + 360: 000000003bc093ba 34 FUNC GLOBAL DEFAULT 1 ctrl_init_detect_dram_siz + 244: 000000003bc02a6e 34 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_set_bit + 324: 000000003bc08e4c 32 FUNC GLOBAL DEFAULT 1 cvx16_setting_check + 216: 000000003bc00acc 32 FUNC GLOBAL DEFAULT 1 memmove + 177: 000000003bc0b198 32 OBJECT LOCAL DEFAULT 1 inc32table + 176: 000000003bc0b178 32 OBJECT LOCAL DEFAULT 1 dec64table + 175: 000000003bc0b158 32 OBJECT LOCAL DEFAULT 1 blockSizes.0 + 137: 000000003bc02efa 32 FUNC LOCAL DEFAULT 1 dwc2_ep_disable + 384: 000000003bc0701c 30 FUNC GLOBAL DEFAULT 1 LZ4F_getBlockSize + 367: 000000003bc00be8 30 FUNC GLOBAL DEFAULT 1 usb_id_det + 269: 000000003bc002a4 30 FUNC GLOBAL DEFAULT 1 console_putc + 357: 000000003bc08dc6 28 FUNC GLOBAL DEFAULT 1 cvx16_polling_synp_normal + 335: 000000003bc00b3e 28 FUNC GLOBAL DEFAULT 1 strcmp + 300: 000000003bc062ac 28 FUNC GLOBAL DEFAULT 1 LzmaDec_FreeProbs + 84: 000000003bc13388 28 OBJECT LOCAL DEFAULT 4 serialDesc + 82: 000000003bc13358 28 OBJECT LOCAL DEFAULT 4 productDesc + 52: 000000003bc01784 28 FUNC LOCAL DEFAULT 1 acm_complete_set_line_cod + 305: 000000003bc08d58 26 FUNC GLOBAL DEFAULT 1 cvx16_polling_dfi_init_st + 260: 000000003bc093a0 26 FUNC GLOBAL DEFAULT 1 cvx16_en_rec_vol_mode + 224: 000000003bc09ff0 26 OBJECT GLOBAL DEFAULT 1 build_message + 37: 000000003bc00c06 26 FUNC LOCAL DEFAULT 1 read_time_ms + 207: 000000003bc045d6 24 FUNC GLOBAL DEFAULT 1 dwc2_ep0_kick + 142: 000000003bc0add8 24 OBJECT LOCAL DEFAULT 1 __func__.3 + 393: 000000003bc08b36 22 FUNC GLOBAL DEFAULT 1 cvx16_clk_div2 + 370: 000000003bc0081c 22 FUNC GLOBAL DEFAULT 1 sys_pll_init + 251: 000000003bc08b4c 22 FUNC GLOBAL DEFAULT 1 cvx16_clk_div40 + 209: 000000003bc03906 22 FUNC GLOBAL DEFAULT 1 dwc2_udc_pre_setup + 180: 000000003bc07a16 22 FUNC LOCAL DEFAULT 1 XXH_read32 + 125: 000000003bc0274e 22 FUNC LOCAL DEFAULT 1 dwc2_fifo_status + 143: 000000003bc0adf0 21 OBJECT LOCAL DEFAULT 1 __func__.4 + 344: 000000003bc002c2 20 FUNC GLOBAL DEFAULT 1 console_flush + 247: 000000003bc0601c 20 FUNC GLOBAL DEFAULT 1 LzmaDec_Init + 53: 000000003bc017a0 20 FUNC LOCAL DEFAULT 1 reset + 141: 000000003bc0adc0 19 OBJECT LOCAL DEFAULT 1 __func__.2 + 377: 000000003bc00b5a 18 FUNC GLOBAL DEFAULT 1 strlen + 354: 000000003bc032fe 18 FUNC GLOBAL DEFAULT 1 dwc2_phy_to_log_ep + 139: 000000003bc0ad90 18 OBJECT LOCAL DEFAULT 1 __func__.0 + 111: 000000003bc0b5a8 18 OBJECT LOCAL DEFAULT 2 devHsDesc + 140: 000000003bc0ada8 17 OBJECT LOCAL DEFAULT 1 __func__.1 + 302: 000000003bc0017a 16 FUNC GLOBAL DEFAULT 1 trig_simulation_timer + 272: 000000003bc00294 16 FUNC GLOBAL DEFAULT 1 _uart_putc + 212: 000000003bc13280 16 OBJECT GLOBAL DEFAULT 4 rsp_bufArr + 201: 000000003bc0a010 16 OBJECT GLOBAL DEFAULT 1 version_string + 87: 000000003bc133a8 16 OBJECT LOCAL DEFAULT 4 vendorDesc + 83: 000000003bc13378 16 OBJECT LOCAL DEFAULT 4 serial.2 + 46: 000000003bc0a790 16 OBJECT LOCAL DEFAULT 1 __func__.1 + 318: 000000003bc00680 14 FUNC GLOBAL DEFAULT 1 sys_switch_all_to_pll + 261: 000000003bc0020c 14 FUNC GLOBAL DEFAULT 1 read_count_tick + 349: 000000003bc07010 12 FUNC GLOBAL DEFAULT 1 LZ4F_isError + 328: 000000003bc0229a 12 FUNC GLOBAL DEFAULT 1 usb_vbus_det + 148: 000000003bc0ae80 12 OBJECT LOCAL DEFAULT 1 ep2name + 146: 000000003bc0ae60 12 OBJECT LOCAL DEFAULT 1 ep0name + 147: 000000003bc0ae70 11 OBJECT LOCAL DEFAULT 1 ep1name + 122: 000000003bc0ab90 11 OBJECT LOCAL DEFAULT 1 __func__.4 + 362: 000000003bc0014c 10 FUNC GLOBAL DEFAULT 1 sync_cache + 240: 000000003bc028c2 10 FUNC GLOBAL DEFAULT 1 dwc2_get_ep0_name + 193: 000000003bc001b4 10 FUNC GLOBAL DEFAULT 1 mdelay + 192: 000000003bc083f6 10 FUNC GLOBAL DEFAULT 1 get_ddr_vendor + 149: 000000003bc0ae90 10 OBJECT LOCAL DEFAULT 1 ep3name + 117: 000000003bc0b680 10 OBJECT LOCAL DEFAULT 2 qualifierDesc + 144: 000000003bc0ae08 9 OBJECT LOCAL DEFAULT 1 driver_name + 92: 000000003bc0b478 9 OBJECT LOCAL DEFAULT 2 acm_data_interface_desc + 91: 000000003bc0b468 9 OBJECT LOCAL DEFAULT 2 acm_control_interface_des + 88: 000000003bc0b448 9 OBJECT LOCAL DEFAULT 2 ConfDesc + 388: 000000003bc133c0 8 OBJECT GLOBAL DEFAULT 4 the_controller + 386: 000000003bc13308 8 OBJECT GLOBAL DEFAULT 4 acm + 365: 000000003bc133c8 8 OBJECT GLOBAL DEFAULT 4 reg_set + 326: 000000003bc133d0 8 OBJECT GLOBAL DEFAULT 4 reg_span + 245: 000000003bc132c0 8 OBJECT GLOBAL DEFAULT 4 setup_bufArr + 214: 000000003bc133b8 8 OBJECT GLOBAL DEFAULT 4 reg + 213: 000000003bc133d8 8 OBJECT GLOBAL DEFAULT 4 reg_step + 197: 000000003bc0b440 8 OBJECT GLOBAL DEFAULT 2 time_records + 119: 000000003bc0b698 8 OBJECT LOCAL DEFAULT 2 setup_buf + 118: 000000003bc0b690 8 OBJECT LOCAL DEFAULT 2 rsp_buf + 115: 000000003bc0b670 8 OBJECT LOCAL DEFAULT 2 handler + 113: 000000003bc0b610 8 OBJECT LOCAL DEFAULT 2 ep0BuffAlloc + 108: 000000003bc0b500 8 OBJECT LOCAL DEFAULT 2 cmdBufAlloc + 107: 000000003bc0b4f8 8 OBJECT LOCAL DEFAULT 2 cb2_buf + 106: 000000003bc0b4f0 8 OBJECT LOCAL DEFAULT 2 cb1_buf + 105: 000000003bc0b4e8 8 OBJECT LOCAL DEFAULT 2 cb0_buf + 103: 000000003bc0b4d8 8 OBJECT LOCAL DEFAULT 2 bulkBufAlloc + 89: 000000003bc0b458 8 OBJECT LOCAL DEFAULT 2 acm_buf + 75: 000000003bc13350 8 OBJECT LOCAL DEFAULT 4 fip_buf + 74: 000000003bc13348 8 OBJECT LOCAL DEFAULT 4 epOut + 73: 000000003bc13340 8 OBJECT LOCAL DEFAULT 4 epIn + 72: 000000003bc13338 8 OBJECT LOCAL DEFAULT 4 ep0Req + 71: 000000003bc13330 8 OBJECT LOCAL DEFAULT 4 ep0Buff + 68: 000000003bc13328 8 OBJECT LOCAL DEFAULT 4 cmdBuf + 67: 000000003bc13320 8 OBJECT LOCAL DEFAULT 4 bulkOutReq + 66: 000000003bc13318 8 OBJECT LOCAL DEFAULT 4 bulkInReq + 65: 000000003bc13310 8 OBJECT LOCAL DEFAULT 4 bulkBuf + 45: 000000003bc0a788 8 OBJECT LOCAL DEFAULT 1 __func__.0 + 44: 000000003bc13300 8 OBJECT LOCAL DEFAULT 4 comp_alloc_size + 43: 000000003bc132f8 8 OBJECT LOCAL DEFAULT 4 comp_alloc_buf + 121: 000000003bc0ab88 7 OBJECT LOCAL DEFAULT 1 __func__.1 + 104: 000000003bc0b4e0 7 OBJECT LOCAL DEFAULT 2 capabilityExtDesc + 100: 000000003bc0b4c0 7 OBJECT LOCAL DEFAULT 2 acm_hs_out_desc + 99: 000000003bc0b4b8 7 OBJECT LOCAL DEFAULT 2 acm_hs_notify_desc + 98: 000000003bc0b4b0 7 OBJECT LOCAL DEFAULT 2 acm_hs_in_desc + 96: 000000003bc0b4a0 7 OBJECT LOCAL DEFAULT 2 acm_fs_out_desc + 95: 000000003bc0b498 7 OBJECT LOCAL DEFAULT 2 acm_fs_notify_desc + 94: 000000003bc0b490 7 OBJECT LOCAL DEFAULT 2 acm_fs_in_desc + 359: 000000003bc015e2 6 FUNC GLOBAL DEFAULT 1 LZ4_malloc + 286: 000000003bc0173e 6 FUNC GLOBAL DEFAULT 1 DWC2_UncachedRead32 + 195: 000000003bc0215c 6 FUNC GLOBAL DEFAULT 1 AcmIsr + 123: 000000003bc0aba0 6 OBJECT LOCAL DEFAULT 1 __func__.5 + 120: 000000003bc0ab80 5 OBJECT LOCAL DEFAULT 1 __func__.0 + 102: 000000003bc0b4d0 5 OBJECT LOCAL DEFAULT 2 bosDesc + 101: 000000003bc0b4c8 5 OBJECT LOCAL DEFAULT 2 acm_union_desc + 97: 000000003bc0b4a8 5 OBJECT LOCAL DEFAULT 2 acm_header_desc + 90: 000000003bc0b460 5 OBJECT LOCAL DEFAULT 2 acm_call_mgmt_descriptor + 387: 000000003bc01744 4 FUNC GLOBAL DEFAULT 1 DWC2_UncachedWrite32 + 372: 000000003bc0b6fc 4 OBJECT GLOBAL DEFAULT 2 ddr_data_rate + 316: 000000003bc133f4 4 OBJECT GLOBAL DEFAULT 4 dev_freq + 270: 000000003bc133f0 4 OBJECT GLOBAL DEFAULT 4 rddata + 257: 000000003bc133fc 4 OBJECT GLOBAL DEFAULT 4 mod_freq + 203: 000000003bc00994 4 FUNC GLOBAL DEFAULT 1 dec_verify_image + 199: 000000003bc133f8 4 OBJECT GLOBAL DEFAULT 4 freq_in + 196: 000000003bc13400 4 OBJECT GLOBAL DEFAULT 4 tar_freq + 161: 000000003bc0b6f4 4 OBJECT LOCAL DEFAULT 2 ep_fifo_size + 160: 000000003bc0b6f0 4 OBJECT LOCAL DEFAULT 2 ep0_fifo_size + 116: 000000003bc0b678 4 OBJECT LOCAL DEFAULT 2 languageDesc + 93: 000000003bc0b488 4 OBJECT LOCAL DEFAULT 2 acm_descriptor + 86: 000000003bc133ec 4 OBJECT LOCAL DEFAULT 4 ts + 85: 000000003bc133e8 4 OBJECT LOCAL DEFAULT 4 transfer_size + 77: 000000003bc133e4 4 OBJECT LOCAL DEFAULT 4 fip_tx_size + 76: 000000003bc133e0 4 OBJECT LOCAL DEFAULT 4 fip_tx_offset + 369: 000000003bc0b6f8 2 OBJECT GLOBAL DEFAULT 2 cv_usb_vid + 276: 000000003bc00832 2 FUNC GLOBAL DEFAULT 1 switch_rtc_mode_1st_stage + 255: 000000003bc0979a 2 FUNC GLOBAL DEFAULT 1 cvx16_dram_cap_check + 243: 000000003bc028c0 2 FUNC GLOBAL DEFAULT 1 dwc2_log_write + 235: 000000003bc08e4a 2 FUNC GLOBAL DEFAULT 1 cvx16_wrlvl_req + 210: 000000003bc00292 2 FUNC GLOBAL DEFAULT 1 jump_to_loader_2nd + 206: 000000003bc01610 2 FUNC GLOBAL DEFAULT 1 LZ4_free + 130: 000000003bc028be 2 FUNC LOCAL DEFAULT 1 dwc2_fifo_flush + 63: 000000003bc01fe8 2 FUNC LOCAL DEFAULT 1 suspend + 51: 000000003bc01782 2 FUNC LOCAL DEFAULT 1 requestMemFree + 49: 000000003bc01748 2 FUNC LOCAL DEFAULT 1 resume + 41: 000000003bc014b6 2 FUNC LOCAL DEFAULT 1 SzFree + 385: 000000003bc1340c 1 OBJECT GLOBAL DEFAULT 4 ddr_capacity + 378: 000000003bc1340d 1 OBJECT GLOBAL DEFAULT 4 ddr_type + 308: 000000003bc1340e 1 OBJECT GLOBAL DEFAULT 4 ddr_vendor + 249: 000000003bc1340f 1 OBJECT GLOBAL DEFAULT 4 pkg + 220: 000000003bc13405 1 OBJECT GLOBAL DEFAULT 4 acm_configValue + 81: 000000003bc1340b 1 OBJECT LOCAL DEFAULT 4 mem_alloc_cnt + 80: 000000003bc1340a 1 OBJECT LOCAL DEFAULT 4 is_serial_patched.3 + 79: 000000003bc13409 1 OBJECT LOCAL DEFAULT 4 flagReboot + 78: 000000003bc13408 1 OBJECT LOCAL DEFAULT 4 flagEnterDL + 70: 000000003bc13407 1 OBJECT LOCAL DEFAULT 4 configValue + 69: 000000003bc13406 1 OBJECT LOCAL DEFAULT 4 configBreak + 64: 000000003bc13404 1 OBJECT LOCAL DEFAULT 4 ack_idx.6 + 368: 000000003bc0b700 0 NOTYPE GLOBAL DEFAULT 3 __STACKS_START__ + 361: 00000000044000c0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_get_number_of_r + 352: 000000003bc00000 0 NOTYPE GLOBAL DEFAULT 1 __RO_START__ + 350: 000000003bc0d800 0 NOTYPE GLOBAL DEFAULT 4 __BSS_START__ + 348: 0000000004400060 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_load_image + 346: 000000003bc0b434 0 NOTYPE GLOBAL DEFAULT 1 __RO_END__ + 322: 0000000004400040 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_set_boot_src + 319: 000000003bc13410 0 NOTYPE GLOBAL DEFAULT 4 __BSS_END__ + 311: 000000003bc00000 0 NOTYPE GLOBAL DEFAULT 1 bl2_entrypoint + 309: 00000000044000a0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_image_crc + 299: 000000003bc0b700 0 NOTYPE GLOBAL DEFAULT 2 __DATA_END__ + 291: 000000003bc13410 0 NOTYPE GLOBAL DEFAULT 4 __BL2_END__ + 265: 0000000000005c10 0 NOTYPE GLOBAL DEFAULT ABS __BSS_SIZE__ + 259: 00000000044000e0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_verify_rsa + 250: 000000003bc0d700 0 NOTYPE GLOBAL DEFAULT 3 __STACKS_END__ + 226: 000000003bc0b440 0 NOTYPE GLOBAL DEFAULT 2 __DATA_START__ + 208: 0000000004400020 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_get_boot_src + 202: 0000000004400080 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_flash_init + 198: 0000000004400100 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_cryptodma_aes_d + 191: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 190: 0000000000000000 0 FILE LOCAL DEFAULT ABS phy_init.c + 189: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddrc_init.c + 188: 0000000000000000 0 FILE LOCAL DEFAULT ABS cvx16_dram_cap_check.c + 187: 0000000000000000 0 FILE LOCAL DEFAULT ABS cvx16_pinmux.c + 186: 0000000000000000 0 FILE LOCAL DEFAULT ABS phy_pll_init.c + 185: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_sys.c + 184: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_sys_bring_up.c + 183: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_pkg_info.c + 182: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr.c + 178: 0000000000000000 0 FILE LOCAL DEFAULT ABS xxhash.c + 170: 0000000000000000 0 FILE LOCAL DEFAULT ABS lz4_all.c + 165: 0000000000000000 0 FILE LOCAL DEFAULT ABS LzmaDec.c + 163: 0000000000000000 0 FILE LOCAL DEFAULT ABS crc16.c + 162: 0000000000000000 0 FILE LOCAL DEFAULT ABS cv_usb.c + 150: 0000000000000000 0 FILE LOCAL DEFAULT ABS dwc2_udc_otg_xfer_dma.c + 124: 0000000000000000 0 FILE LOCAL DEFAULT ABS dwc2_udc_otg.c + 48: 0000000000000000 0 FILE LOCAL DEFAULT ABS usb_tty.c + 47: 0000000000000000 0 FILE LOCAL DEFAULT ABS cps_cvi.c + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS decompress.c + 36: 0000000000000000 0 FILE LOCAL DEFAULT ABS bl2_main.c + 35: 0000000000000000 0 FILE LOCAL DEFAULT ABS platform_device.c + 34: 0000000000000000 0 FILE LOCAL DEFAULT ABS strlen.c + 33: 0000000000000000 0 FILE LOCAL DEFAULT ABS strcmp.c + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS putchar.c + 31: 0000000000000000 0 FILE LOCAL DEFAULT ABS mem.c + 30: 0000000000000000 0 FILE LOCAL DEFAULT ABS misc.c + 29: 0000000000000000 0 FILE LOCAL DEFAULT ABS security.c + 28: 0000000000000000 0 FILE LOCAL DEFAULT ABS platform.c + 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS tf_printf.c + 25: 0000000000000000 0 FILE LOCAL DEFAULT ABS uart_dw.c + 23: 0000000000000000 0 FILE LOCAL DEFAULT ABS bl2_helper.c + 22: 0000000000000000 0 FILE LOCAL DEFAULT ABS delay_timer.c + 21: 0000000000000000 0 FILE LOCAL DEFAULT ABS cache.c + 20: 0000000000000000 0 FILE LOCAL DEFAULT ABS cpu_helper.c + 19: 000000003bc00144 0 NOTYPE LOCAL DEFAULT 1 die + 18: 000000003bc0012c 0 NOTYPE LOCAL DEFAULT 1 bss_clear + 17: 000000003bc00144 0 NOTYPE LOCAL DEFAULT 1 trap_vector + 16: 000000003bc00020 0 NOTYPE LOCAL DEFAULT 1 bl2_entrypoint_real + 15: 0000000000000000 0 FILE LOCAL DEFAULT ABS /root/.jenkins/workspace/ + 14: 0000000000000000 0 SECTION LOCAL DEFAULT 14 + 13: 0000000000000000 0 SECTION LOCAL DEFAULT 13 + 12: 0000000000000000 0 SECTION LOCAL DEFAULT 12 + 11: 0000000000000000 0 SECTION LOCAL DEFAULT 11 + 10: 0000000000000000 0 SECTION LOCAL DEFAULT 10 + 9: 0000000000000000 0 SECTION LOCAL DEFAULT 9 + 8: 0000000000000000 0 SECTION LOCAL DEFAULT 8 + 7: 0000000000000000 0 SECTION LOCAL DEFAULT 7 + 6: 0000000000000000 0 SECTION LOCAL DEFAULT 6 + 5: 0000000000000000 0 SECTION LOCAL DEFAULT 5 + 4: 000000003bc0d800 0 SECTION LOCAL DEFAULT 4 + 3: 000000003bc0b700 0 SECTION LOCAL DEFAULT 3 + 2: 000000003bc0b434 0 SECTION LOCAL DEFAULT 2 + 1: 000000003bc00000 0 SECTION LOCAL DEFAULT 1 + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND +Symbol table '.symtab' contains 397 entries: + Num: Value Size Type Bind Vis Ndx Name + diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_entrypoint.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_entrypoint.o new file mode 100644 index 000000000..5b15c11ca Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_entrypoint.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o new file mode 100644 index 000000000..4719892a7 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_helper.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o new file mode 100644 index 000000000..b19013818 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/bl2_main.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o new file mode 100644 index 000000000..f1d6f7752 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/build_message.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o new file mode 100644 index 000000000..7fd566d8a Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cache.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o new file mode 100644 index 000000000..7c48d860c Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cps_cvi.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o new file mode 100644 index 000000000..6f0431be7 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cpu_helper.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o new file mode 100644 index 000000000..c8f34d3a3 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/crc16.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o new file mode 100644 index 000000000..4eb56ddae Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cv_usb.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o new file mode 100644 index 000000000..469de3283 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o new file mode 100644 index 000000000..df60916d2 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/cvx16_pinmux.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o new file mode 100644 index 000000000..1ad3b8c77 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o new file mode 100644 index 000000000..72822eb6f Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_patch_regs.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o new file mode 100644 index 000000000..ca13d1b17 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_pkg_info.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o new file mode 100644 index 000000000..33a08bcbd Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o new file mode 100644 index 000000000..50ccb6867 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o new file mode 100644 index 000000000..92fda5ec5 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/ddrc_init.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o new file mode 100644 index 000000000..e5628401e Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/decompress.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o new file mode 100644 index 000000000..924f9e27e Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/delay_timer.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o new file mode 100644 index 000000000..efe55e12f Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o new file mode 100644 index 000000000..aeeb94208 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o new file mode 100644 index 000000000..7f34e7cf0 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/lz4_all.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o new file mode 100644 index 000000000..08e4f90b6 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/mem.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o new file mode 100644 index 000000000..030743c93 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o new file mode 100644 index 000000000..87e4f7b57 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/misc_helpers.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o new file mode 100644 index 000000000..9e9abcfe4 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_init.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o new file mode 100644 index 000000000..8a4346477 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/phy_pll_init.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o new file mode 100644 index 000000000..5449065a5 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o new file mode 100644 index 000000000..684de11da Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/platform_device.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o new file mode 100644 index 000000000..18d7a1e90 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/putchar.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o new file mode 100644 index 000000000..9f1e9cbd2 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/security.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o new file mode 100644 index 000000000..dd8f41302 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strchr.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o new file mode 100644 index 000000000..1660fd445 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strcmp.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o new file mode 100644 index 000000000..260f95a40 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strlen.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o new file mode 100644 index 000000000..95435309e Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strncmp.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o new file mode 100644 index 000000000..d247c14da Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/strnlen.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o new file mode 100644 index 000000000..39e8d881a Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/tf_printf.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o new file mode 100644 index 000000000..21d49f3e8 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/uart_dw.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o new file mode 100644 index 000000000..8a5db4760 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/usb_tty.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o new file mode 100644 index 000000000..9f5e8f3f3 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/bl2/xxhash.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros.bin b/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros.bin new file mode 100755 index 000000000..c9902e4a9 --- /dev/null +++ b/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros.bin @@ -0,0 +1 @@ +ï¾­Þ \ No newline at end of file diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros.env b/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros.env new file mode 100644 index 000000000..cff9e1110 --- /dev/null +++ b/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros.env @@ -0,0 +1,2 @@ +MONITOR_RUNADDR=0x0000000080000000 +BLCP_2ND_RUNADDR=0x0000000083f40000 diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/blmacros.dis b/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/blmacros.dis new file mode 100644 index 000000000..3317de4b7 --- /dev/null +++ b/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/blmacros.dis @@ -0,0 +1,24 @@ + +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/blmacros.elf: file format elf64-littleriscv +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/blmacros.elf +architecture: riscv:rv64, flags 0x00000112: +EXEC_P, HAS_SYMS, D_PAGED +start address 0x0000000000000000 + +Program Header: + LOAD off 0x0000000000001000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**12 + filesz 0x0000000000000004 memsz 0x0000000000000004 flags r-- + STACK off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**4 + filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw- + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000004 0000000000000000 0000000000000000 00001000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA +SYMBOL TABLE: +0000000000000000 l d .text 0000000000000000 .text +0000000083f40000 g *ABS* 0000000000000000 DEF_BLCP_2ND_RUNADDR +0000000080000000 g *ABS* 0000000000000000 DEF_MONITOR_RUNADDR +0000000080000000 g *ABS* 0000000000000000 DEF_DRAM_BASE + + diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/blmacros.elf b/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/blmacros.elf new file mode 100755 index 000000000..e5027bece Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/blmacros.elf differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/blmacros.ld b/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/blmacros.ld new file mode 100644 index 000000000..44cdce7f4 --- /dev/null +++ b/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/blmacros.ld @@ -0,0 +1,10 @@ +SECTIONS +{ + .text : { + LONG(0xDEADBEEF); + *(*) + } + DEF_DRAM_BASE = 0x80000000; + DEF_MONITOR_RUNADDR = 0x80000000; + DEF_BLCP_2ND_RUNADDR = 0x83f40000; +} diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/blmacros.map b/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/blmacros.map new file mode 100644 index 000000000..10e68def3 --- /dev/null +++ b/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/blmacros.map @@ -0,0 +1,39 @@ + +Discarded input sections + + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/build_message.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/build_message.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/build_message.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/build_message.o + .rodata.build_message + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/build_message.o + .rodata.version_string + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/build_message.o + .debug_info 0x0000000000000000 0x89 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/build_message.o + .debug_abbrev 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/build_message.o + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/build_message.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/build_message.o + .debug_macro 0x0000000000000000 0x86e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/build_message.o + .debug_line 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/build_message.o + .debug_str 0x0000000000000000 0x29a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/build_message.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/build_message.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/build_message.o + +Memory Configuration + +Name Origin Length Attributes +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + +.text 0x0000000000000000 0x4 + 0x0000000000000000 0x4 LONG 0xdeadbeef + *(*) + 0x0000000080000000 DEF_DRAM_BASE = 0x80000000 + 0x0000000080000000 DEF_MONITOR_RUNADDR = 0x80000000 + 0x0000000083f40000 DEF_BLCP_2ND_RUNADDR = 0x83f40000 +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/build_message.o +OUTPUT(/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/blmacros.elf elf64-littleriscv) diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/blmacros.sym b/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/blmacros.sym new file mode 100644 index 000000000..9cfdf8696 --- /dev/null +++ b/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/blmacros.sym @@ -0,0 +1,8 @@ + 4: 0000000080000000 0 NOTYPE GLOBAL DEFAULT ABS DEF_DRAM_BASE + 3: 0000000080000000 0 NOTYPE GLOBAL DEFAULT ABS DEF_MONITOR_RUNADDR + 2: 0000000083f40000 0 NOTYPE GLOBAL DEFAULT ABS DEF_BLCP_2ND_RUNADDR + 1: 0000000000000000 0 SECTION LOCAL DEFAULT 1 + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND +Symbol table '.symtab' contains 5 entries: + Num: Value Size Type Bind Vis Ndx Name + diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/build_message.o b/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/build_message.o new file mode 100644 index 000000000..f1d6f7752 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/blmacros/build_message.o differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/chip_conf.bin b/fsbl/build/cv1800b_wdmb_0008a_spinor/chip_conf.bin new file mode 100644 index 000000000..d2dabd686 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/chip_conf.bin differ diff --git a/fsbl/build/cv1800b_wdmb_0008a_spinor/fip.bin b/fsbl/build/cv1800b_wdmb_0008a_spinor/fip.bin new file mode 100644 index 000000000..d844f8e00 Binary files /dev/null and b/fsbl/build/cv1800b_wdmb_0008a_spinor/fip.bin differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2.bin b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2.bin new file mode 100755 index 000000000..4503582c5 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2.bin differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o new file mode 100644 index 000000000..fe0dd6eec Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o new file mode 100644 index 000000000..1e7cf4adb Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2.dis b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2.dis new file mode 100644 index 000000000..5ed85c98c --- /dev/null +++ b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2.dis @@ -0,0 +1,14588 @@ + +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2.elf: file format elf64-littleriscv +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2.elf +architecture: riscv:rv64, flags 0x00000112: +EXEC_P, HAS_SYMS, D_PAGED +start address 0x000000003bc00000 + +Program Header: + LOAD off 0x0000000000001000 vaddr 0x000000003bc00000 paddr 0x000000003bc00000 align 2**12 + filesz 0x000000000000b700 memsz 0x0000000000013410 flags rwx + STACK off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**4 + filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw- + +Sections: +Idx Name Size VMA LMA File off Algn + 0 ro 0000b434 000000003bc00000 000000003bc00000 00001000 2**3 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 000002cc 000000003bc0b434 000000003bc0b434 0000c434 2**3 + CONTENTS, ALLOC, LOAD, DATA + 2 stacks 00002000 000000003bc0b700 000000003bc0b700 0000c700 2**0 + ALLOC + 3 .bss 00005c10 000000003bc0d800 000000003bc0d800 0000c700 2**9 + ALLOC + 4 .debug_info 00068732 0000000000000000 0000000000000000 0000c700 2**0 + CONTENTS, READONLY, DEBUGGING + 5 .debug_abbrev 00004de5 0000000000000000 0000000000000000 00074e32 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_aranges 00001e80 0000000000000000 0000000000000000 00079c20 2**4 + CONTENTS, READONLY, DEBUGGING + 7 .debug_macro 00009b13 0000000000000000 0000000000000000 0007baa0 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_line 00075d63 0000000000000000 0000000000000000 000855b3 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_str 0002394c 0000000000000000 0000000000000000 000fb316 2**0 + CONTENTS, READONLY, DEBUGGING + 10 .comment 0000001d 0000000000000000 0000000000000000 0011ec62 2**0 + CONTENTS, READONLY + 11 .debug_ranges 0002f790 0000000000000000 0000000000000000 0011ec7f 2**0 + CONTENTS, READONLY, DEBUGGING + 12 .debug_frame 000047b8 0000000000000000 0000000000000000 0014e410 2**3 + CONTENTS, READONLY, DEBUGGING + 13 .debug_loc 000c12a0 0000000000000000 0000000000000000 00152bc8 2**0 + CONTENTS, READONLY, DEBUGGING +SYMBOL TABLE: +000000003bc00000 l d ro 0000000000000000 ro +000000003bc0b434 l d .data 0000000000000000 .data +000000003bc0b700 l d stacks 0000000000000000 stacks +000000003bc0d800 l d .bss 0000000000000000 .bss +0000000000000000 l d .debug_info 0000000000000000 .debug_info +0000000000000000 l d .debug_abbrev 0000000000000000 .debug_abbrev +0000000000000000 l d .debug_aranges 0000000000000000 .debug_aranges +0000000000000000 l d .debug_macro 0000000000000000 .debug_macro +0000000000000000 l d .debug_line 0000000000000000 .debug_line +0000000000000000 l d .debug_str 0000000000000000 .debug_str +0000000000000000 l d .comment 0000000000000000 .comment +0000000000000000 l d .debug_ranges 0000000000000000 .debug_ranges +0000000000000000 l d .debug_frame 0000000000000000 .debug_frame +0000000000000000 l d .debug_loc 0000000000000000 .debug_loc +0000000000000000 l df *ABS* 0000000000000000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_entrypoint.o +000000003bc00020 l ro 0000000000000000 bl2_entrypoint_real +000000003bc00144 l ro 0000000000000000 trap_vector +000000003bc0012c l ro 0000000000000000 bss_clear +000000003bc00144 l ro 0000000000000000 die +0000000000000000 l df *ABS* 0000000000000000 cpu_helper.c +0000000000000000 l df *ABS* 0000000000000000 cache.c +0000000000000000 l df *ABS* 0000000000000000 delay_timer.c +0000000000000000 l df *ABS* 0000000000000000 bl2_helper.c +000000003bc132c8 l O .bss 0000000000000030 fw_dynamic_info +0000000000000000 l df *ABS* 0000000000000000 uart_dw.c +0000000000000000 l df *ABS* 0000000000000000 tf_printf.c +000000003bc002d6 l F ro 0000000000000082 unsigned_num_print +0000000000000000 l df *ABS* 0000000000000000 platform.c +0000000000000000 l df *ABS* 0000000000000000 security.c +0000000000000000 l df *ABS* 0000000000000000 misc.c +0000000000000000 l df *ABS* 0000000000000000 mem.c +0000000000000000 l df *ABS* 0000000000000000 putchar.c +0000000000000000 l df *ABS* 0000000000000000 strcmp.c +0000000000000000 l df *ABS* 0000000000000000 strlen.c +0000000000000000 l df *ABS* 0000000000000000 platform_device.c +0000000000000000 l df *ABS* 0000000000000000 bl2_main.c +000000003bc00c06 l F ro 000000000000001a read_time_ms +000000003bc0d800 l O .bss 0000000000001000 fip_param2 +000000003bc0e800 l O .bss 0000000000004000 sram_union_buf +0000000000000000 l df *ABS* 0000000000000000 decompress.c +000000003bc014b6 l F ro 0000000000000002 SzFree +000000003bc014b8 l F ro 0000000000000042 SzAlloc +000000003bc132f8 l O .bss 0000000000000008 comp_alloc_buf +000000003bc13300 l O .bss 0000000000000008 comp_alloc_size +000000003bc0a788 l O ro 0000000000000008 __func__.0 +000000003bc0a790 l O ro 0000000000000010 __func__.1 +0000000000000000 l df *ABS* 0000000000000000 cps_cvi.c +0000000000000000 l df *ABS* 0000000000000000 usb_tty.c +000000003bc01748 l F ro 0000000000000002 resume +000000003bc0174a l F ro 0000000000000038 requestMemAlloc +000000003bc01782 l F ro 0000000000000002 requestMemFree +000000003bc01784 l F ro 000000000000001c acm_complete_set_line_coding +000000003bc017a0 l F ro 0000000000000014 reset +000000003bc017b4 l F ro 000000000000002e disconnect +000000003bc017e2 l F ro 0000000000000026 unbind +000000003bc01808 l F ro 0000000000000042 bind +000000003bc0184a l F ro 0000000000000052 get_unicode_string +000000003bc0189c l F ro 0000000000000234 bulkOutCmpl +000000003bc01b56 l F ro 0000000000000050 bulkInCmpl +000000003bc01ad0 l F ro 000000000000005c getDescAcm +000000003bc01b2c l F ro 000000000000002a reqComplete +000000003bc01ba6 l F ro 0000000000000442 setup +000000003bc01fe8 l F ro 0000000000000002 suspend +000000003bc13404 l O .bss 0000000000000001 ack_idx.6 +000000003bc13310 l O .bss 0000000000000008 bulkBuf +000000003bc13318 l O .bss 0000000000000008 bulkInReq +000000003bc13320 l O .bss 0000000000000008 bulkOutReq +000000003bc13328 l O .bss 0000000000000008 cmdBuf +000000003bc13406 l O .bss 0000000000000001 configBreak +000000003bc13407 l O .bss 0000000000000001 configValue +000000003bc13330 l O .bss 0000000000000008 ep0Buff +000000003bc13338 l O .bss 0000000000000008 ep0Req +000000003bc13340 l O .bss 0000000000000008 epIn +000000003bc13348 l O .bss 0000000000000008 epOut +000000003bc13350 l O .bss 0000000000000008 fip_buf +000000003bc133e0 l O .bss 0000000000000004 fip_tx_offset +000000003bc133e4 l O .bss 0000000000000004 fip_tx_size +000000003bc13408 l O .bss 0000000000000001 flagEnterDL +000000003bc13409 l O .bss 0000000000000001 flagReboot +000000003bc1340a l O .bss 0000000000000001 is_serial_patched.3 +000000003bc1340b l O .bss 0000000000000001 mem_alloc_cnt +000000003bc13358 l O .bss 000000000000001c productDesc +000000003bc13378 l O .bss 0000000000000010 serial.2 +000000003bc13388 l O .bss 000000000000001c serialDesc +000000003bc133e8 l O .bss 0000000000000004 transfer_size +000000003bc133ec l O .bss 0000000000000004 ts +000000003bc133a8 l O .bss 0000000000000010 vendorDesc +000000003bc0b448 l O .data 0000000000000009 ConfDesc +000000003bc0b458 l O .data 0000000000000008 acm_buf +000000003bc0b460 l O .data 0000000000000005 acm_call_mgmt_descriptor +000000003bc0b468 l O .data 0000000000000009 acm_control_interface_desc +000000003bc0b478 l O .data 0000000000000009 acm_data_interface_desc +000000003bc0b488 l O .data 0000000000000004 acm_descriptor +000000003bc0b490 l O .data 0000000000000007 acm_fs_in_desc +000000003bc0b498 l O .data 0000000000000007 acm_fs_notify_desc +000000003bc0b4a0 l O .data 0000000000000007 acm_fs_out_desc +000000003bc0b4a8 l O .data 0000000000000005 acm_header_desc +000000003bc0b4b0 l O .data 0000000000000007 acm_hs_in_desc +000000003bc0b4b8 l O .data 0000000000000007 acm_hs_notify_desc +000000003bc0b4c0 l O .data 0000000000000007 acm_hs_out_desc +000000003bc0b4c8 l O .data 0000000000000005 acm_union_desc +000000003bc0b4d0 l O .data 0000000000000005 bosDesc +000000003bc0b4d8 l O .data 0000000000000008 bulkBufAlloc +000000003bc0b4e0 l O .data 0000000000000007 capabilityExtDesc +000000003bc0b4e8 l O .data 0000000000000008 cb0_buf +000000003bc0b4f0 l O .data 0000000000000008 cb1_buf +000000003bc0b4f8 l O .data 0000000000000008 cb2_buf +000000003bc0b500 l O .data 0000000000000008 cmdBufAlloc +000000003bc0b508 l O .data 0000000000000050 descriptorsFs +000000003bc0b558 l O .data 0000000000000050 descriptorsHs +000000003bc0b5a8 l O .data 0000000000000012 devHsDesc +000000003bc0b5c0 l O .data 0000000000000050 drv_obj +000000003bc0b610 l O .data 0000000000000008 ep0BuffAlloc +000000003bc0b618 l O .data 0000000000000058 g_driver +000000003bc0b670 l O .data 0000000000000008 handler +000000003bc0b678 l O .data 0000000000000004 languageDesc +000000003bc0b680 l O .data 000000000000000a qualifierDesc +000000003bc0b690 l O .data 0000000000000008 rsp_buf +000000003bc0b698 l O .data 0000000000000008 setup_buf +000000003bc0ab80 l O ro 0000000000000005 __func__.0 +000000003bc0ab88 l O ro 0000000000000007 __func__.1 +000000003bc0ab90 l O ro 000000000000000b __func__.4 +000000003bc0aba0 l O ro 0000000000000006 __func__.5 +0000000000000000 l df *ABS* 0000000000000000 dwc2_udc_otg.c +000000003bc0274e l F ro 0000000000000016 dwc2_fifo_status +000000003bc02764 l F ro 000000000000003a dwc2_free_request +000000003bc0279e l F ro 0000000000000048 pullup +000000003bc027e6 l F ro 0000000000000038 dwc2_alloc_request +000000003bc0281e l F ro 00000000000000a0 dwc2_ep_enable +000000003bc028be l F ro 0000000000000002 dwc2_fifo_flush +000000003bc02952 l F ro 0000000000000054 dwc2_dequeue +000000003bc02ab4 l F ro 000000000000003c wakeup +000000003bc02b36 l F ro 0000000000000090 dwc2_hsotg_txfifo_flush.constprop.0 +000000003bc02bc6 l F ro 000000000000005e kill_all_requests.isra.0 +000000003bc02c7a l F ro 00000000000000da dwc2_hsotg_init_fifo.constprop.0 +000000003bc02d54 l F ro 00000000000001a6 _dwc2_ep_disable.isra.0 +000000003bc02efa l F ro 0000000000000020 dwc2_ep_disable +000000003bc0b6a0 l O .data 0000000000000050 dwc2_ep_ops +000000003bc0ad90 l O ro 0000000000000012 __func__.0 +000000003bc0ada8 l O ro 0000000000000011 __func__.1 +000000003bc0adc0 l O ro 0000000000000013 __func__.2 +000000003bc0add8 l O ro 0000000000000018 __func__.3 +000000003bc0adf0 l O ro 0000000000000015 __func__.4 +000000003bc0ae08 l O ro 0000000000000009 driver_name +000000003bc0ae18 l O ro 0000000000000048 dwc2_udc_ops +000000003bc0ae60 l O ro 000000000000000c ep0name +000000003bc0ae70 l O ro 000000000000000b ep1name +000000003bc0ae80 l O ro 000000000000000c ep2name +000000003bc0ae90 l O ro 000000000000000a ep3name +0000000000000000 l df *ABS* 0000000000000000 dwc2_udc_otg_xfer_dma.c +000000003bc034ac l F ro 000000000000008e set_max_pktsize +000000003bc0353a l F ro 000000000000005e dwc2_udc_ep_clear_stall +000000003bc03598 l F ro 0000000000000062 dwc2_udc_ep_set_stall +000000003bc035fa l F ro 0000000000000080 dwc2_ep0_complete_out +000000003bc0367a l F ro 000000000000007e dwc2_udc_ep0_zlp +000000003bc036f8 l F ro 0000000000000068 dwc2_udc_ep0_set_stall.isra.0 +000000003bc03760 l F ro 00000000000000aa setdma_rx.isra.0 +000000003bc0380a l F ro 00000000000000fc complete_rx +000000003bc03960 l F ro 000000000000015c setdma_tx +000000003bc0b6f0 l O .data 0000000000000004 ep0_fifo_size +000000003bc0b6f4 l O .data 0000000000000004 ep_fifo_size +0000000000000000 l df *ABS* 0000000000000000 cv_usb.c +0000000000000000 l df *ABS* 0000000000000000 crc16.c +000000003bc0af18 l O ro 0000000000000200 crc16_tab +0000000000000000 l df *ABS* 0000000000000000 LzmaDec.c +000000003bc04738 l F ro 0000000000000072 LzmaDec_WriteRem +000000003bc047aa l F ro 000000000000138a LzmaDec_DecodeReal2 +000000003bc05b34 l F ro 00000000000004e8 LzmaDec_TryDummy +000000003bc062c8 l F ro 0000000000000066 LzmaDec_AllocateProbs2.isra.0 +0000000000000000 l df *ABS* 0000000000000000 lz4_all.c +000000003bc06452 l F ro 0000000000000024 LZ4F_readLE32 +000000003bc06476 l F ro 0000000000000276 LZ4_decompress_safe_withSmallPrefix +000000003bc066ec l F ro 0000000000000110 LZ4F_updateDict +000000003bc0703a l F ro 00000000000001a4 LZ4F_decodeHeader +000000003bc0b158 l O ro 0000000000000020 blockSizes.0 +000000003bc0b178 l O ro 0000000000000020 dec64table +000000003bc0b198 l O ro 0000000000000020 inc32table +0000000000000000 l df *ABS* 0000000000000000 xxhash.c +000000003bc079ea l F ro 000000000000002c XXH32_avalanche +000000003bc07a16 l F ro 0000000000000016 XXH_read32 +000000003bc07a2c l F ro 000000000000033a XXH32_finalize.constprop.0 +0000000000000000 l df *ABS* 0000000000000000 ddr.c +0000000000000000 l df *ABS* 0000000000000000 ddr_pkg_info.c +0000000000000000 l df *ABS* 0000000000000000 ddr_sys_bring_up.c +0000000000000000 l df *ABS* 0000000000000000 ddr_sys.c +0000000000000000 l df *ABS* 0000000000000000 phy_pll_init.c +0000000000000000 l df *ABS* 0000000000000000 cvx16_pinmux.c +0000000000000000 l df *ABS* 0000000000000000 cvx16_dram_cap_check.c +0000000000000000 l df *ABS* 0000000000000000 ddrc_init.c +0000000000000000 l df *ABS* 0000000000000000 phy_init.c +0000000000000000 l df *ABS* 0000000000000000 +000000003bc083f6 g F ro 000000000000000a get_ddr_vendor +000000003bc001b4 g F ro 000000000000000a mdelay +000000003bc08400 g F ro 0000000000000050 axi_mon_start_all +000000003bc0215c g F ro 0000000000000006 AcmIsr +000000003bc13400 g O .bss 0000000000000004 tar_freq +000000003bc0b440 g O .data 0000000000000008 time_records +0000000004400100 g *ABS* 0000000000000000 p_rom_api_cryptodma_aes_decrypt +000000003bc133f8 g O .bss 0000000000000004 freq_in +000000003bc00d30 g F ro 00000000000000ae load_ddr_param +000000003bc0a010 g O ro 0000000000000010 version_string +0000000004400080 g *ABS* 0000000000000000 p_rom_api_flash_init +000000003bc00994 g F ro 0000000000000004 dec_verify_image +000000003bc03c9e g F ro 00000000000000b2 dwc2_udc_ep_activate +000000003bc00aec g F ro 0000000000000052 putchar_l +000000003bc01610 g F ro 0000000000000002 LZ4_free +000000003bc045d6 g F ro 0000000000000018 dwc2_ep0_kick +0000000004400020 g *ABS* 0000000000000000 p_rom_api_get_boot_src +000000003bc03906 g F ro 0000000000000016 dwc2_udc_pre_setup +000000003bc00292 g F ro 0000000000000002 jump_to_loader_2nd +000000003bc0021a g F ro 0000000000000078 jump_to_monitor +000000003bc13280 g O .bss 0000000000000010 rsp_bufArr +000000003bc133d8 g O .bss 0000000000000008 reg_step +000000003bc133b8 g O .bss 0000000000000008 reg +000000003bc03b4c g F ro 0000000000000048 dwc2_set_address +000000003bc00acc g F ro 0000000000000020 memmove +000000003bc08674 g F ro 000000000000004e cvx16_bist_wr_prbs_init +000000003bc12880 g O .bss 0000000000000200 bulkBufAllocArr +000000003bc067fc g F ro 000000000000026e LZ4_decompress_safe +000000003bc13405 g O .bss 0000000000000001 acm_configValue +000000003bc08c5a g F ro 0000000000000044 cvx16_ddr_phy_power_on_seq1 +000000003bc06030 g F ro 000000000000027c LzmaDec_DecodeToDic +000000003bc08722 g F ro 0000000000000046 cvx16_bist_rdglvl_init +000000003bc09ff0 g O ro 000000000000001a build_message +000000003bc0921e g F ro 0000000000000182 cvx16_wdqlvl_req +000000003bc0b440 g .data 0000000000000000 __DATA_START__ +000000003bc004f2 g F ro 00000000000000c8 __system_reset +000000003bc00834 g F ro 0000000000000044 switch_rtc_mode_2nd_stage +000000003bc01338 g F ro 00000000000000e6 load_rest +000000003bc04706 g F ro 0000000000000032 crc16_ccitt +000000003bc08d72 g F ro 0000000000000028 cvx16_set_dfi_init_complete +000000003bc08d20 g F ro 0000000000000038 cvx16_wait_for_dfi_init_complete +000000003bc03b00 g F ro 000000000000004c dwc2_write_fifo_ep0 +000000003bc12b00 g O .bss 0000000000000080 cb1_bufArr +000000003bc08e4a g F ro 0000000000000002 cvx16_wrlvl_req +000000003bc02af0 g F ro 0000000000000046 dwc2_hsotg_wait_bit_set +000000003bc090ae g F ro 0000000000000170 cvx16_rdlvl_req +000000003bc00a6c g F ro 0000000000000060 memcpy +000000003bc08852 g F ro 00000000000000b0 cvx16_bist_wdqlvl_init +000000003bc028c2 g F ro 000000000000000a dwc2_get_ep0_name +000000003bc02a90 g F ro 0000000000000024 dwc2_hsotg_clear_bit +000000003bc03bbc g F ro 0000000000000040 dwc2_ep0_write +000000003bc028c0 g F ro 0000000000000002 dwc2_log_write +000000003bc02a6e g F ro 0000000000000022 dwc2_hsotg_set_bit +000000003bc132c0 g O .bss 0000000000000008 setup_bufArr +000000003bc099c8 g F ro 000000000000002e ctrl_init_low_patch +000000003bc0601c g F ro 0000000000000014 LzmaDec_Init +000000003bc0100a g F ro 0000000000000126 load_monitor +000000003bc1340f g O .bss 0000000000000001 pkg +000000003bc0d700 g stacks 0000000000000000 __STACKS_END__ +000000003bc08b4c g F ro 0000000000000016 cvx16_clk_div40 +000000003bc005ba g F ro 0000000000000032 panic_handler +000000003bc029a6 g F ro 000000000000002e dwc2_nuke +000000003bc001e2 g F ro 000000000000002a get_random_from_timer +000000003bc0979a g F ro 0000000000000002 cvx16_dram_cap_check +000000003bc08962 g F ro 000000000000006a cvx16_bist_start_check +000000003bc133fc g O .bss 0000000000000004 mod_freq +000000003bc00b6c g F ro 000000000000007c gpio_in_value +00000000044000e0 g *ABS* 0000000000000000 p_rom_api_verify_rsa +000000003bc093a0 g F ro 000000000000001a cvx16_en_rec_vol_mode +000000003bc0020c g F ro 000000000000000e read_count_tick +000000003bc08f78 g F ro 0000000000000070 cvx16_clk_gating_enable +000000003bc016c0 g F ro 000000000000007e decompress +000000003bc086c2 g F ro 0000000000000060 cvx16_bist_wr_sram_init +0000000000005c10 g *ABS* 0000000000000000 __BSS_SIZE__ +000000003bc001be g F ro 0000000000000024 get_timer +000000003bc08ce6 g F ro 000000000000003a cvx16_ddr_phy_power_on_seq3 +000000003bc031a8 g F ro 0000000000000156 usb_gadget_register_driver +000000003bc002a4 g F ro 000000000000001e console_putc +000000003bc133f0 g O .bss 0000000000000004 rddata +000000003bc08b62 g F ro 00000000000000f8 cvx16_chg_pll_freq +000000003bc00294 g F ro 0000000000000010 _uart_putc +000000003bc00156 g F ro 0000000000000024 flush_dcache_range +000000003bc12a80 g O .bss 0000000000000080 cb0_bufArr +000000003bc0068e g F ro 000000000000018e sys_pll_nd +000000003bc00832 g F ro 0000000000000002 switch_rtc_mode_1st_stage +000000003bc00878 g F ro 00000000000000bc set_rtc_en_registers +000000003bc00c60 g F ro 00000000000000d0 load_param2 +000000003bc0720e g F ro 00000000000007dc LZ4F_decompress +000000003bc09460 g F ro 000000000000033a cvx16_pinmux +000000003bc08a72 g F ro 0000000000000068 cvx16_dll_cal +000000003bc02162 g F ro 0000000000000138 acm_app_init +000000003bc022d6 g F ro 0000000000000478 AcmApp +000000003bc08f2e g F ro 000000000000004a cvx16_clk_gating_disable +000000003bc071de g F ro 0000000000000030 LZ4F_createDecompressionContext +000000003bc0173e g F ro 0000000000000006 DWC2_UncachedRead32 +000000003bc022a6 g F ro 0000000000000030 get_usb_polling_timeout_value +000000003bc03b94 g F ro 0000000000000028 dwc2_ep0_read +000000003bc12e00 g O .bss 0000000000000080 ep0BuffAllocArr +000000003bc03460 g F ro 000000000000004c usb_gadget_handle_interrupts +000000003bc13410 g .bss 0000000000000000 __BL2_END__ +000000003bc08c9e g F ro 0000000000000048 cvx16_ddr_phy_power_on_seq2 +000000003bc08d9a g F ro 000000000000002c cvx16_INT_ISR_08 +000000003bc06cd4 g F ro 0000000000000316 LZ4_decompress_safe_forceExtDict +000000003bc01fea g F ro 00000000000000a2 convert_buf_addr +000000003bc06378 g F ro 0000000000000030 LzmaDec_AllocateProbs +000000003bc08e92 g F ro 000000000000009c cvx16_pll_init +000000003bc0141e g F ro 0000000000000098 bl2_main +000000003bc0b700 g .data 0000000000000000 __DATA_END__ +000000003bc062ac g F ro 000000000000001c LzmaDec_FreeProbs +000000003bc014fa g F ro 00000000000000e8 decompress_lzma +000000003bc0017a g F ro 0000000000000010 trig_simulation_timer +000000003bc08902 g F ro 0000000000000060 cvx16_bist_wdmlvl_init +000000003bc0018a g F ro 000000000000002a udelay +000000003bc08d58 g F ro 000000000000001a cvx16_polling_dfi_init_start +000000003bc02912 g F ro 0000000000000040 dwc2_done +000000003bc08768 g F ro 00000000000000ea cvx16_bist_rdlvl_init +000000003bc1340e g O .bss 0000000000000001 ddr_vendor +00000000044000a0 g *ABS* 0000000000000000 p_rom_api_image_crc +000000003bc00c20 g F ro 0000000000000040 load_image_by_usb +000000003bc00000 g ro 0000000000000000 bl2_entrypoint +000000003bc01130 g F ro 0000000000000208 load_loader_2nd +000000003bc02c24 g F ro 0000000000000056 dwc2_disconnect +000000003bc03310 g F ro 0000000000000150 dwc2_udc_probe +000000003bc00934 g F ro 0000000000000060 init_comm_info +000000003bc133f4 g O .bss 0000000000000004 dev_freq +000000003bc045ee g F ro 00000000000000d8 dwc2_queue +000000003bc00680 g F ro 000000000000000e sys_switch_all_to_pll +000000003bc13410 g .bss 0000000000000000 __BSS_END__ +000000003bc081c8 g F ro 000000000000022e read_ddr_pkg_info +000000003bc12800 g O .bss 0000000000000080 acm_bufArr +0000000004400040 g *ABS* 0000000000000000 p_rom_api_set_boot_src +000000003bc0632e g F ro 000000000000004a LzmaProps_Decode +000000003bc08e4c g F ro 0000000000000020 cvx16_setting_check +000000003bc00ea4 g F ro 0000000000000166 load_blcp_2nd +000000003bc133d0 g O .bss 0000000000000008 reg_span +000000003bc08ada g F ro 000000000000005c cvx16_clk_normal +000000003bc0229a g F ro 000000000000000c usb_vbus_det +000000003bc00a12 g F ro 000000000000005a memset +000000003bc03c3c g F ro 0000000000000062 dwc2_udc_set_halt +000000003bc07f82 g F ro 00000000000001d2 XXH32_update +000000003bc0a170 g O ro 0000000000000025 hex2ascii_data +000000003bc099f6 g F ro 000000000000021c ctrl_init_update_by_dram_size +000000003bc03d50 g F ro 0000000000000346 dwc2_handle_ep0 +000000003bc00b3e g F ro 000000000000001c strcmp +000000003bc07f2c g F ro 0000000000000056 XXH32_reset +000000003bc07d66 g F ro 00000000000001c6 XXH32 +000000003bc089cc g F ro 00000000000000a6 cvx16_rdvld_train +000000003bc0979c g F ro 00000000000001fe ddrc_init +000000003bc06a6a g F ro 000000000000026a LZ4_decompress_safe_withPrefix64k +000000003bc00358 g F ro 000000000000019a tf_printf +000000003bc029d4 g F ro 000000000000009a usb_gadget_unregister_driver +000000003bc015e8 g F ro 0000000000000028 LZ4_calloc +000000003bc002c2 g F ro 0000000000000014 console_flush +000000003bc0208c g F ro 00000000000000d0 print_buf_addr +000000003bc0b434 g ro 0000000000000000 __RO_END__ +000000003bc12b80 g O .bss 0000000000000080 cb2_bufArr +0000000004400060 g *ABS* 0000000000000000 p_rom_api_load_image +000000003bc07010 g F ro 000000000000000c LZ4F_isError +000000003bc0d800 g .bss 0000000000000000 __BSS_START__ +000000003bc03bfc g F ro 0000000000000040 dwc2_udc_set_nak +000000003bc00000 g ro 0000000000000000 __RO_START__ +000000003bc08fe8 g F ro 00000000000000c6 cvx16_rdglvl_req +000000003bc032fe g F ro 0000000000000012 dwc2_phy_to_log_ep +000000003bc00998 g F ro 000000000000007a ntostr +000000003bc046c6 g F ro 0000000000000040 usb_polling +000000003bc08dc6 g F ro 000000000000001c cvx16_polling_synp_normal_mode +000000003bc06fea g F ro 0000000000000026 LZ4_decompress_safe_usingDict +000000003bc015e2 g F ro 0000000000000006 LZ4_malloc +000000003bc093ba g F ro 0000000000000022 ctrl_init_detect_dram_size +00000000044000c0 g *ABS* 0000000000000000 p_rom_api_get_number_of_retries +000000003bc0014c g F ro 000000000000000a sync_cache +000000003bc00636 g F ro 000000000000004a setup_dl_flag +000000003bc005ec g F ro 000000000000004a reset_c906l +000000003bc133c8 g O .bss 0000000000000008 reg_set +000000003bc063a8 g F ro 00000000000000aa LzmaDecode +000000003bc00be8 g F ro 000000000000001e usb_id_det +000000003bc0b700 g stacks 0000000000000000 __STACKS_START__ +000000003bc0b6f8 g O .data 0000000000000002 cv_usb_vid +000000003bc0081c g F ro 0000000000000016 sys_pll_init +000000003bc03abc g F ro 0000000000000044 dwc2_ep_fifo_read +000000003bc0b6fc g O .data 0000000000000004 ddr_data_rate +000000003bc12e80 g O .bss 0000000000000400 handlerArr +000000003bc08de2 g F ro 0000000000000068 cvx16_dfi_ca_park_prbs +000000003bc04096 g F ro 0000000000000540 dwc2_udc_irq +000000003bc12c00 g O .bss 0000000000000200 cmdBufAllocArr +000000003bc00b5a g F ro 0000000000000012 strlen +000000003bc1340d g O .bss 0000000000000001 ddr_type +000000003bc08450 g F ro 0000000000000224 ddr_sys_bring_up +000000003bc08154 g F ro 0000000000000040 XXH32_digest +000000003bc08194 g F ro 0000000000000034 ddr_init +000000003bc0391c g F ro 0000000000000044 dwc2_ep_fifo_write +000000003bc01612 g F ro 00000000000000ae decompress_lz4 +000000003bc0701c g F ro 000000000000001e LZ4F_getBlockSize +000000003bc1340c g O .bss 0000000000000001 ddr_capacity +000000003bc13308 g O .bss 0000000000000008 acm +000000003bc01744 g F ro 0000000000000004 DWC2_UncachedWrite32 +000000003bc133c0 g O .bss 0000000000000008 the_controller +000000003bc08e6c g F ro 0000000000000026 cvx16_set_dfi_init_start +000000003bc0999a g F ro 000000000000002e ctrl_init_high_patch +000000003bc00dde g F ro 00000000000000c6 load_ddr +000000003bc028cc g F ro 0000000000000046 udc_reinit +000000003bc08b36 g F ro 0000000000000016 cvx16_clk_div2 +000000003bc09c12 g F ro 00000000000003da phy_init +000000003bc093dc g F ro 0000000000000084 pll_init +000000003bc02f1a g F ro 000000000000028e dwc2_reconfig_usbd + + + +Disassembly of section ro: + +000000003bc00000 <__RO_START__>: + 3bc00000: 0200006f j 3bc00020 + ... + +000000003bc00020 : + 3bc00020: 05900e1b addiw t3,zero,89 + 3bc00024: 019e1e13 slli t3,t3,0x19 + 3bc00028: 03000eb7 lui t4,0x3000 + 3bc0002c: 084e8e9b addiw t4,t4,132 + 3bc00030: 01cea023 sw t3,0(t4) # 3000000 <__BSS_SIZE__+0x2ffa3f0> + 3bc00034: 00000093 li ra,0 + 3bc00038: 00000113 li sp,0 + 3bc0003c: 00000193 li gp,0 + 3bc00040: 00000213 li tp,0 + 3bc00044: 00000293 li t0,0 + 3bc00048: 00000313 li t1,0 + 3bc0004c: 00000393 li t2,0 + 3bc00050: 00000413 li s0,0 + 3bc00054: 00000493 li s1,0 + 3bc00058: 00000513 li a0,0 + 3bc0005c: 00000593 li a1,0 + 3bc00060: 00000613 li a2,0 + 3bc00064: 00000693 li a3,0 + 3bc00068: 00000713 li a4,0 + 3bc0006c: 00000793 li a5,0 + 3bc00070: 00000813 li a6,0 + 3bc00074: 00000893 li a7,0 + 3bc00078: 00000913 li s2,0 + 3bc0007c: 00000993 li s3,0 + 3bc00080: 00000a13 li s4,0 + 3bc00084: 00000a93 li s5,0 + 3bc00088: 00000b13 li s6,0 + 3bc0008c: 00000b93 li s7,0 + 3bc00090: 00000c13 li s8,0 + 3bc00094: 00000c93 li s9,0 + 3bc00098: 00000d13 li s10,0 + 3bc0009c: 00000d93 li s11,0 + 3bc000a0: 00000e13 li t3,0 + 3bc000a4: 00000e93 li t4,0 + 3bc000a8: 00000f13 li t5,0 + 3bc000ac: 00000f93 li t6,0 + 3bc000b0: 34001073 csrw mscratch,zero + 3bc000b4: 00000297 auipc t0,0x0 + 3bc000b8: 09028293 addi t0,t0,144 # 3bc00144 + 3bc000bc: 30529073 csrw mtvec,t0 + 3bc000c0: 000181b7 lui gp,0x18 + 3bc000c4: 0c71819b addiw gp,gp,199 + 3bc000c8: 00f19193 slli gp,gp,0xf + 3bc000cc: 7c019073 csrw mxstatus,gp + 3bc000d0: 702001b7 lui gp,0x70200 + 3bc000d4: ffc1819b addiw gp,gp,-4 + 3bc000d8: 00100213 li tp,1 + 3bc000dc: 0041a023 sw tp,0(gp) # 70200000 <__BL2_END__+0x345ecbf0> + 3bc000e0: 03300193 li gp,51 + 3bc000e4: 7c21b073 csrc mcor,gp + 3bc000e8: 01100193 li gp,17 + 3bc000ec: 7c21a073 csrs mcor,gp + 3bc000f0: 00100193 li gp,1 + 3bc000f4: 7c11a073 csrs mhcr,gp + 3bc000f8: 03300193 li gp,51 + 3bc000fc: 7c21b073 csrc mcor,gp + 3bc00100: 01200193 li gp,18 + 3bc00104: 7c21a073 csrs mcor,gp + 3bc00108: 00200193 li gp,2 + 3bc0010c: 7c11a073 csrs mhcr,gp + 3bc00110: 0000d117 auipc sp,0xd + 3bc00114: 5f010113 addi sp,sp,1520 # 3bc0d700 <__STACKS_END__> + 3bc00118: 0000d697 auipc a3,0xd + 3bc0011c: 6e868693 addi a3,a3,1768 # 3bc0d800 <__BSS_START__> + 3bc00120: 00013717 auipc a4,0x13 + 3bc00124: 2f070713 addi a4,a4,752 # 3bc13410 <__BL2_END__> + 3bc00128: 40d70733 sub a4,a4,a3 + +000000003bc0012c : + 3bc0012c: 0006b023 sd zero,0(a3) + 3bc00130: 00868693 addi a3,a3,8 + 3bc00134: ff870713 addi a4,a4,-8 + 3bc00138: fe071ae3 bnez a4,3bc0012c + 3bc0013c: 2e2010ef jal ra,3bc0141e + 3bc00140: 0040006f j 3bc00144 + +000000003bc00144 : + 3bc00144: 4760006f j 3bc005ba + 3bc00148: ffdff06f j 3bc00144 + +000000003bc0014c : + 3bc0014c: 0100000b icache.iall + 3bc00150: 01a0000b sync.i + 3bc00154: 8082 ret + +000000003bc00156 : + 3bc00156: 87aa mv a5,a0 + 3bc00158: 03f58593 addi a1,a1,63 + 3bc0015c: 95be add a1,a1,a5 + 3bc0015e: fc057513 andi a0,a0,-64 + 3bc00162: fc05f593 andi a1,a1,-64 + 3bc00166: 00b56563 bltu a0,a1,3bc00170 + 3bc0016a: 0190000b sync.s + 3bc0016e: 8082 ret + 3bc00170: 02b5000b dcache.cipa a0 + 3bc00174: 04050513 addi a0,a0,64 + 3bc00178: b7fd j 3bc00166 + +000000003bc0017a : + 3bc0017a: 47e5 li a5,25 + 3bc0017c: 02a787bb mulw a5,a5,a0 + 3bc00180: 03000737 lui a4,0x3000 + 3bc00184: 08f72423 sw a5,136(a4) # 3000088 <__BSS_SIZE__+0x2ffa478> + 3bc00188: 8082 ret + +000000003bc0018a : + 3bc0018a: c0102773 rdtime a4 + 3bc0018e: 47e5 li a5,25 + 3bc00190: 02a786bb mulw a3,a5,a0 + 3bc00194: fff74713 not a4,a4 + 3bc00198: 030007b7 lui a5,0x3000 + 3bc0019c: 2701 sext.w a4,a4 + 3bc0019e: 08d7a423 sw a3,136(a5) # 3000088 <__BSS_SIZE__+0x2ffa478> + 3bc001a2: c01027f3 rdtime a5 + 3bc001a6: fff7c793 not a5,a5 + 3bc001aa: 40f707bb subw a5,a4,a5 + 3bc001ae: fed7eae3 bltu a5,a3,3bc001a2 + 3bc001b2: 8082 ret + +000000003bc001b4 : + 3bc001b4: 3e800793 li a5,1000 + 3bc001b8: 02a7853b mulw a0,a5,a0 + 3bc001bc: b7f9 j 3bc0018a + +000000003bc001be : + 3bc001be: e519 bnez a0,3bc001cc + 3bc001c0: c0102573 rdtime a0 + 3bc001c4: fff54513 not a0,a0 + 3bc001c8: 2501 sext.w a0,a0 + 3bc001ca: 8082 ret + 3bc001cc: c01027f3 rdtime a5 + 3bc001d0: fff7c793 not a5,a5 + 3bc001d4: 9d1d subw a0,a0,a5 + 3bc001d6: 6799 lui a5,0x6 + 3bc001d8: 1a87879b addiw a5,a5,424 + 3bc001dc: 02f5553b divuw a0,a0,a5 + 3bc001e0: 8082 ret + +000000003bc001e2 : + 3bc001e2: e519 bnez a0,3bc001f0 + 3bc001e4: c0102573 rdtime a0 + 3bc001e8: fff54513 not a0,a0 + 3bc001ec: 2501 sext.w a0,a0 + 3bc001ee: 8082 ret + 3bc001f0: c01027f3 rdtime a5 + 3bc001f4: fff7c793 not a5,a5 + 3bc001f8: 9d1d subw a0,a0,a5 + 3bc001fa: 47e5 li a5,25 + 3bc001fc: 02f5553b divuw a0,a0,a5 + 3bc00200: 67e1 lui a5,0x18 + 3bc00202: 6a07879b addiw a5,a5,1696 + 3bc00206: 02f5753b remuw a0,a0,a5 + 3bc0020a: 8082 ret + +000000003bc0020c : + 3bc0020c: c0102573 rdtime a0 + 3bc00210: 47e5 li a5,25 + 3bc00212: 02f55533 divu a0,a0,a5 + 3bc00216: 2501 sext.w a0,a0 + 3bc00218: 8082 ret + +000000003bc0021a : + 3bc0021a: 1101 addi sp,sp,-32 + 3bc0021c: 494257b7 lui a5,0x49425 + 3bc00220: e822 sd s0,16(sp) + 3bc00222: 34f78793 addi a5,a5,847 # 4942534f <__BL2_END__+0xd811f3f> + 3bc00226: 00013417 auipc s0,0x13 + 3bc0022a: 0a240413 addi s0,s0,162 # 3bc132c8 + 3bc0022e: e426 sd s1,8(sp) + 3bc00230: e01c sd a5,0(s0) + 3bc00232: 010014b7 lui s1,0x1001 + 3bc00236: 4785 li a5,1 + 3bc00238: e04a sd s2,0(sp) + 3bc0023a: 00749613 slli a2,s1,0x7 + 3bc0023e: 892a mv s2,a0 + 3bc00240: ec1c sd a5,24(s0) + 3bc00242: 0000a517 auipc a0,0xa + 3bc00246: dde50513 addi a0,a0,-546 # 3bc0a020 + 3bc0024a: 57fd li a5,-1 + 3bc0024c: ec06 sd ra,24(sp) + 3bc0024e: f41c sd a5,40(s0) + 3bc00250: e80c sd a1,16(s0) + 3bc00252: 106000ef jal ra,3bc00358 + 3bc00256: 03000593 li a1,48 + 3bc0025a: 8522 mv a0,s0 + 3bc0025c: efbff0ef jal ra,3bc00156 + 3bc00260: fadff0ef jal ra,3bc0020c + 3bc00264: 3e800793 li a5,1000 + 3bc00268: 3e75051b addiw a0,a0,999 + 3bc0026c: 02f5553b divuw a0,a0,a5 + 3bc00270: 8622 mv a2,s0 + 3bc00272: 0000b797 auipc a5,0xb + 3bc00276: 1ce7b783 ld a5,462(a5) # 3bc0b440 + 3bc0027a: 6442 ld s0,16(sp) + 3bc0027c: 60e2 ld ra,24(sp) + 3bc0027e: 00749593 slli a1,s1,0x7 + 3bc00282: 64a2 ld s1,8(sp) + 3bc00284: 00a79723 sh a0,14(a5) + 3bc00288: 87ca mv a5,s2 + 3bc0028a: 6902 ld s2,0(sp) + 3bc0028c: 4501 li a0,0 + 3bc0028e: 6105 addi sp,sp,32 + 3bc00290: 8782 jr a5 + +000000003bc00292 : + 3bc00292: 8082 ret + +000000003bc00294 <_uart_putc>: + 3bc00294: 04140737 lui a4,0x4140 + 3bc00298: 4b5c lw a5,20(a4) + 3bc0029a: 0207f793 andi a5,a5,32 + 3bc0029e: dfed beqz a5,3bc00298 <_uart_putc+0x4> + 3bc002a0: c308 sw a0,0(a4) + 3bc002a2: 8082 ret + +000000003bc002a4 : + 3bc002a4: 1141 addi sp,sp,-16 + 3bc002a6: e022 sd s0,0(sp) + 3bc002a8: e406 sd ra,8(sp) + 3bc002aa: 47a9 li a5,10 + 3bc002ac: 842a mv s0,a0 + 3bc002ae: 00f51563 bne a0,a5,3bc002b8 + 3bc002b2: 4535 li a0,13 + 3bc002b4: fe1ff0ef jal ra,3bc00294 <_uart_putc> + 3bc002b8: 8522 mv a0,s0 + 3bc002ba: 6402 ld s0,0(sp) + 3bc002bc: 60a2 ld ra,8(sp) + 3bc002be: 0141 addi sp,sp,16 + 3bc002c0: bfd1 j 3bc00294 <_uart_putc> + +000000003bc002c2 : + 3bc002c2: 041406b7 lui a3,0x4140 + 3bc002c6: 06000713 li a4,96 + 3bc002ca: 4adc lw a5,20(a3) + 3bc002cc: 0607f793 andi a5,a5,96 + 3bc002d0: fee79de3 bne a5,a4,3bc002ca + 3bc002d4: 8082 ret + +000000003bc002d6 : + 3bc002d6: 7139 addi sp,sp,-64 + 3bc002d8: f04a sd s2,32(sp) + 3bc002da: 7c05b70b extu a4,a1,31,0 + 3bc002de: fc06 sd ra,56(sp) + 3bc002e0: f822 sd s0,48(sp) + 3bc002e2: f426 sd s1,40(sp) + 3bc002e4: 8932 mv s2,a2 + 3bc002e6: 4801 li a6,0 + 3bc002e8: 45a5 li a1,9 + 3bc002ea: 02e57633 remu a2,a0,a4 + 3bc002ee: 0018041b addiw s0,a6,1 + 3bc002f2: 0ff67793 andi a5,a2,255 + 3bc002f6: 04c5e063 bltu a1,a2,3bc00336 + 3bc002fa: 0307879b addiw a5,a5,48 + 3bc002fe: 0ff7f793 andi a5,a5,255 + 3bc00302: 0030 addi a2,sp,8 + 3bc00304: 0106578b srb a5,a2,a6,0 + 3bc00308: 02e557b3 divu a5,a0,a4 + 3bc0030c: 0805 addi a6,a6,1 + 3bc0030e: 02e57263 bgeu a0,a4,3bc00332 + 3bc00312: 408684bb subw s1,a3,s0 + 3bc00316: 02904363 bgtz s1,3bc0033c + 3bc0031a: 54fd li s1,-1 + 3bc0031c: 147d addi s0,s0,-1 + 3bc0031e: 0004079b sext.w a5,s0 + 3bc00322: 02979463 bne a5,s1,3bc0034a + 3bc00326: 70e2 ld ra,56(sp) + 3bc00328: 7442 ld s0,48(sp) + 3bc0032a: 74a2 ld s1,40(sp) + 3bc0032c: 7902 ld s2,32(sp) + 3bc0032e: 6121 addi sp,sp,64 + 3bc00330: 8082 ret + 3bc00332: 853e mv a0,a5 + 3bc00334: bf5d j 3bc002ea + 3bc00336: 0577879b addiw a5,a5,87 + 3bc0033a: b7d1 j 3bc002fe + 3bc0033c: 85ca mv a1,s2 + 3bc0033e: 03000513 li a0,48 + 3bc00342: 7aa000ef jal ra,3bc00aec + 3bc00346: 34fd addiw s1,s1,-1 + 3bc00348: b7f9 j 3bc00316 + 3bc0034a: 003c addi a5,sp,8 + 3bc0034c: 8087c50b lrbu a0,a5,s0,0 + 3bc00350: 85ca mv a1,s2 + 3bc00352: 79a000ef jal ra,3bc00aec + 3bc00356: b7d9 j 3bc0031c + +000000003bc00358 : + 3bc00358: 7135 addi sp,sp,-160 + 3bc0035a: e8a2 sd s0,80(sp) + 3bc0035c: e4a6 sd s1,72(sp) + 3bc0035e: ec86 sd ra,88(sp) + 3bc00360: e0ca sd s2,64(sp) + 3bc00362: fc4e sd s3,56(sp) + 3bc00364: f852 sd s4,48(sp) + 3bc00366: f456 sd s5,40(sp) + 3bc00368: f05a sd s6,32(sp) + 3bc0036a: f4ae sd a1,104(sp) + 3bc0036c: f8b2 sd a2,112(sp) + 3bc0036e: fcb6 sd a3,120(sp) + 3bc00370: e13a sd a4,128(sp) + 3bc00372: e53e sd a5,136(sp) + 3bc00374: e942 sd a6,144(sp) + 3bc00376: ed46 sd a7,152(sp) + 3bc00378: 842a mv s0,a0 + 3bc0037a: 4489 li s1,2 + 3bc0037c: c11d beqz a0,3bc003a2 + 3bc0037e: 00054703 lbu a4,0(a0) + 3bc00382: 4785 li a5,1 + 3bc00384: 00f71f63 bne a4,a5,3bc003a2 + 3bc00388: 00154783 lbu a5,1(a0) + 3bc0038c: 4711 li a4,4 + 3bc0038e: fd07879b addiw a5,a5,-48 + 3bc00392: 0ff7f693 andi a3,a5,255 + 3bc00396: 00d76663 bltu a4,a3,3bc003a2 + 3bc0039a: 0007849b sext.w s1,a5 + 3bc0039e: 00250413 addi s0,a0,2 + 3bc003a2: 10bc addi a5,sp,104 + 3bc003a4: ec3e sd a5,24(sp) + 3bc003a6: 4a25 li s4,9 + 3bc003a8: 4ad9 li s5,22 + 3bc003aa: 0000a997 auipc s3,0xa + 3bc003ae: ca298993 addi s3,s3,-862 # 3bc0a04c + 3bc003b2: 00044503 lbu a0,0(s0) + 3bc003b6: e919 bnez a0,3bc003cc + 3bc003b8: 60e6 ld ra,88(sp) + 3bc003ba: 6446 ld s0,80(sp) + 3bc003bc: 64a6 ld s1,72(sp) + 3bc003be: 6906 ld s2,64(sp) + 3bc003c0: 79e2 ld s3,56(sp) + 3bc003c2: 7a42 ld s4,48(sp) + 3bc003c4: 7aa2 ld s5,40(sp) + 3bc003c6: 7b02 ld s6,32(sp) + 3bc003c8: 610d addi sp,sp,160 + 3bc003ca: 8082 ret + 3bc003cc: 02500793 li a5,37 + 3bc003d0: 0405 addi s0,s0,1 + 3bc003d2: 10f51c63 bne a0,a5,3bc004ea + 3bc003d6: 4781 li a5,0 + 3bc003d8: 4681 li a3,0 + 3bc003da: 03000613 li a2,48 + 3bc003de: 00044703 lbu a4,0(s0) + 3bc003e2: 00c70c63 beq a4,a2,3bc003fa + 3bc003e6: f9c7071b addiw a4,a4,-100 + 3bc003ea: 0ff77713 andi a4,a4,255 + 3bc003ee: fceae5e3 bltu s5,a4,3bc003b8 + 3bc003f2: 44e9c70b lrw a4,s3,a4,2 + 3bc003f6: 974e add a4,a4,s3 + 3bc003f8: 8702 jr a4 + 3bc003fa: 00144703 lbu a4,1(s0) + 3bc003fe: fd07071b addiw a4,a4,-48 + 3bc00402: 0ff77593 andi a1,a4,255 + 3bc00406: 00ba6463 bltu s4,a1,3bc0040e + 3bc0040a: 0007069b sext.w a3,a4 + 3bc0040e: 0409 addi s0,s0,2 + 3bc00410: b7f9 j 3bc003de + 3bc00412: 6762 ld a4,24(sp) + 3bc00414: 4585 li a1,1 + 3bc00416: 00870613 addi a2,a4,8 # 4140008 <__BSS_SIZE__+0x413a3f8> + 3bc0041a: ec32 sd a2,24(sp) + 3bc0041c: 02f5d563 bge a1,a5,3bc00446 + 3bc00420: 00073903 ld s2,0(a4) + 3bc00424: 00095b63 bgez s2,3bc0043a + 3bc00428: 85a6 mv a1,s1 + 3bc0042a: 02d00513 li a0,45 + 3bc0042e: e436 sd a3,8(sp) + 3bc00430: 6bc000ef jal ra,3bc00aec + 3bc00434: 66a2 ld a3,8(sp) + 3bc00436: 41200933 neg s2,s2 + 3bc0043a: 8626 mv a2,s1 + 3bc0043c: 45a9 li a1,10 + 3bc0043e: 854a mv a0,s2 + 3bc00440: e97ff0ef jal ra,3bc002d6 + 3bc00444: a831 j 3bc00460 + 3bc00446: ffe9 bnez a5,3bc00420 + 3bc00448: 00072903 lw s2,0(a4) + 3bc0044c: bfe1 j 3bc00424 + 3bc0044e: 67e2 ld a5,24(sp) + 3bc00450: 0007b903 ld s2,0(a5) + 3bc00454: 00878713 addi a4,a5,8 + 3bc00458: ec3a sd a4,24(sp) + 3bc0045a: 00094503 lbu a0,0(s2) + 3bc0045e: e119 bnez a0,3bc00464 + 3bc00460: 0405 addi s0,s0,1 + 3bc00462: bf81 j 3bc003b2 + 3bc00464: 85a6 mv a1,s1 + 3bc00466: 0905 addi s2,s2,1 + 3bc00468: 684000ef jal ra,3bc00aec + 3bc0046c: b7fd j 3bc0045a + 3bc0046e: 67e2 ld a5,24(sp) + 3bc00470: 0000a917 auipc s2,0xa + 3bc00474: bd890913 addi s2,s2,-1064 # 3bc0a048 + 3bc00478: 0007bb03 ld s6,0(a5) + 3bc0047c: 00878713 addi a4,a5,8 + 3bc00480: ec3a sd a4,24(sp) + 3bc00482: 000b1c63 bnez s6,3bc0049a + 3bc00486: 8626 mv a2,s1 + 3bc00488: 45c1 li a1,16 + 3bc0048a: 855a mv a0,s6 + 3bc0048c: bf55 j 3bc00440 + 3bc0048e: 85a6 mv a1,s1 + 3bc00490: e436 sd a3,8(sp) + 3bc00492: 65a000ef jal ra,3bc00aec + 3bc00496: 66a2 ld a3,8(sp) + 3bc00498: 0905 addi s2,s2,1 + 3bc0049a: 00094503 lbu a0,0(s2) + 3bc0049e: f965 bnez a0,3bc0048e + 3bc004a0: b7dd j 3bc00486 + 3bc004a2: 6762 ld a4,24(sp) + 3bc004a4: 4585 li a1,1 + 3bc004a6: 00870613 addi a2,a4,8 + 3bc004aa: ec32 sd a2,24(sp) + 3bc004ac: 00f5d663 bge a1,a5,3bc004b8 + 3bc004b0: 6308 ld a0,0(a4) + 3bc004b2: 8626 mv a2,s1 + 3bc004b4: 45c1 li a1,16 + 3bc004b6: b769 j 3bc00440 + 3bc004b8: ffe5 bnez a5,3bc004b0 + 3bc004ba: 00076503 lwu a0,0(a4) + 3bc004be: bfd5 j 3bc004b2 + 3bc004c0: 0405 addi s0,s0,1 + 3bc004c2: 4789 li a5,2 + 3bc004c4: bf29 j 3bc003de + 3bc004c6: 2785 addiw a5,a5,1 + 3bc004c8: 0405 addi s0,s0,1 + 3bc004ca: bf11 j 3bc003de + 3bc004cc: 6762 ld a4,24(sp) + 3bc004ce: 4585 li a1,1 + 3bc004d0: 00870613 addi a2,a4,8 + 3bc004d4: ec32 sd a2,24(sp) + 3bc004d6: 00f5d663 bge a1,a5,3bc004e2 + 3bc004da: 6308 ld a0,0(a4) + 3bc004dc: 8626 mv a2,s1 + 3bc004de: 45a9 li a1,10 + 3bc004e0: b785 j 3bc00440 + 3bc004e2: ffe5 bnez a5,3bc004da + 3bc004e4: 00076503 lwu a0,0(a4) + 3bc004e8: bfd5 j 3bc004dc + 3bc004ea: 85a6 mv a1,s1 + 3bc004ec: 600000ef jal ra,3bc00aec + 3bc004f0: b5c9 j 3bc003b2 + +000000003bc004f2 <__system_reset>: + 3bc004f2: 7179 addi sp,sp,-48 + 3bc004f4: f022 sd s0,32(sp) + 3bc004f6: be00e437 lui s0,0xbe00e + 3bc004fa: f406 sd ra,40(sp) + 3bc004fc: 00340793 addi a5,s0,3 # ffffffffbe00e003 <__BL2_END__+0xffffffff823fabf3> + 3bc00500: ec26 sd s1,24(sp) + 3bc00502: e84a sd s2,16(sp) + 3bc00504: e44e sd s3,8(sp) + 3bc00506: 0e000937 lui s2,0xe000 + 3bc0050a: 862e mv a2,a1 + 3bc0050c: 00f92823 sw a5,16(s2) # e000010 + 3bc00510: 85aa mv a1,a0 + 3bc00512: 0000a517 auipc a0,0xa + 3bc00516: b9650513 addi a0,a0,-1130 # 3bc0a0a8 + 3bc0051a: e3fff0ef jal ra,3bc00358 + 3bc0051e: da5ff0ef jal ra,3bc002c2 + 3bc00522: be0034b7 lui s1,0xbe003 + 3bc00526: 00148793 addi a5,s1,1 # ffffffffbe003001 <__BL2_END__+0xffffffff823efbf1> + 3bc0052a: 030009b7 lui s3,0x3000 + 3bc0052e: 6505 lui a0,0x1 + 3bc00530: 08f9a223 sw a5,132(s3) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc00534: 38850513 addi a0,a0,904 # 1388 <__BSS_SIZE__-0x4888> + 3bc00538: c7dff0ef jal ra,3bc001b4 + 3bc0053c: 050267b7 lui a5,0x5026 + 3bc00540: 4705 li a4,1 + 3bc00542: 0ee7a023 sw a4,224(a5) # 50260e0 + 3bc00546: 0ce7a423 sw a4,200(a5) + 3bc0054a: 0489 addi s1,s1,2 + 3bc0054c: 0899a223 sw s1,132(s3) + 3bc00550: 06400513 li a0,100 + 3bc00554: c37ff0ef jal ra,3bc0018a + 3bc00558: 050257b7 lui a5,0x5025 + 3bc0055c: 672d lui a4,0xb + 3bc0055e: 0a07a623 sw zero,172(a5) # 50250ac + 3bc00562: b1870713 addi a4,a4,-1256 # ab18 <__BSS_SIZE__+0x4f08> + 3bc00566: c3d8 sw a4,4(a5) + 3bc00568: 00400737 lui a4,0x400 + 3bc0056c: 04070713 addi a4,a4,64 # 400040 <__BSS_SIZE__+0x3fa430> + 3bc00570: c798 sw a4,8(a5) + 3bc00572: 030107b7 lui a5,0x3010 + 3bc00576: 06600713 li a4,102 + 3bc0057a: c3d8 sw a4,4(a5) + 3bc0057c: 02000713 li a4,32 + 3bc00580: cfd8 sw a4,28(a5) + 3bc00582: 07600713 li a4,118 + 3bc00586: c7d8 sw a4,12(a5) + 3bc00588: 4745 li a4,17 + 3bc0058a: c398 sw a4,0(a5) + 3bc0058c: 00394783 lbu a5,3(s2) + 3bc00590: 0407f793 andi a5,a5,64 + 3bc00594: c395 beqz a5,3bc005b8 <__system_reset+0xc6> + 3bc00596: 0411 addi s0,s0,4 + 3bc00598: 00892823 sw s0,16(s2) + 3bc0059c: 050266b7 lui a3,0x5026 + 3bc005a0: 470d li a4,3 + 3bc005a2: 0d46a783 lw a5,212(a3) # 50260d4 + 3bc005a6: 2781 sext.w a5,a5 + 3bc005a8: fee79de3 bne a5,a4,3bc005a2 <__system_reset+0xb0> + 3bc005ac: 000807b7 lui a5,0x80 + 3bc005b0: 05025737 lui a4,0x5025 + 3bc005b4: 07a1 addi a5,a5,8 + 3bc005b6: c71c sw a5,8(a4) + 3bc005b8: a001 j 3bc005b8 <__system_reset+0xc6> + +000000003bc005ba : + 3bc005ba: 1141 addi sp,sp,-16 + 3bc005bc: be00e7b7 lui a5,0xbe00e + 3bc005c0: e406 sd ra,8(sp) + 3bc005c2: 0e000737 lui a4,0xe000 + 3bc005c6: 0789 addi a5,a5,2 + 3bc005c8: cb1c sw a5,16(a4) + 3bc005ca: 0000879b sext.w a5,ra + 3bc005ce: 8586 mv a1,ra + 3bc005d0: 0000a517 auipc a0,0xa + 3bc005d4: af050513 addi a0,a0,-1296 # 3bc0a0c0 + 3bc005d8: cb5c sw a5,20(a4) + 3bc005da: d7fff0ef jal ra,3bc00358 + 3bc005de: 55fd li a1,-1 + 3bc005e0: 0000a517 auipc a0,0xa + 3bc005e4: af050513 addi a0,a0,-1296 # 3bc0a0d0 + 3bc005e8: f0bff0ef jal ra,3bc004f2 <__system_reset> + +000000003bc005ec : + 3bc005ec: 1141 addi sp,sp,-16 + 3bc005ee: e022 sd s0,0(sp) + 3bc005f0: 842a mv s0,a0 + 3bc005f2: 0000a517 auipc a0,0xa + 3bc005f6: ae650513 addi a0,a0,-1306 # 3bc0a0d8 + 3bc005fa: e406 sd ra,8(sp) + 3bc005fc: d5dff0ef jal ra,3bc00358 + 3bc00600: 03003737 lui a4,0x3003 + 3bc00604: 535c lw a5,36(a4) + 3bc00606: 6609 lui a2,0x2 + 3bc00608: 60a2 ld ra,8(sp) + 3bc0060a: 2781 sext.w a5,a5 + 3bc0060c: fbf7f793 andi a5,a5,-65 + 3bc00610: d35c sw a5,36(a4) + 3bc00612: 020b07b7 lui a5,0x20b0 + 3bc00616: 43d4 lw a3,4(a5) + 3bc00618: 8ed1 or a3,a3,a2 + 3bc0061a: c3d4 sw a3,4(a5) + 3bc0061c: 0004069b sext.w a3,s0 + 3bc00620: d394 sw a3,32(a5) + 3bc00622: 9401 srai s0,s0,0x20 + 3bc00624: d3c0 sw s0,36(a5) + 3bc00626: 535c lw a5,36(a4) + 3bc00628: 6402 ld s0,0(sp) + 3bc0062a: 2781 sext.w a5,a5 + 3bc0062c: 0407e793 ori a5,a5,64 + 3bc00630: d35c sw a5,36(a4) + 3bc00632: 0141 addi sp,sp,16 + 3bc00634: 8082 ret + +000000003bc00636 : + 3bc00636: 1141 addi sp,sp,-16 + 3bc00638: e406 sd ra,8(sp) + 3bc0063a: c8800097 auipc ra,0xc8800 + 3bc0063e: 9e6080e7 jalr -1562(ra) # 4400020 + 3bc00642: 67b5 lui a5,0xd + 3bc00644: 2501 sext.w a0,a0 + 3bc00646: ea078713 addi a4,a5,-352 # cea0 <__BSS_SIZE__+0x7290> + 3bc0064a: 00e50a63 beq a0,a4,3bc0065e + 3bc0064e: ea378793 addi a5,a5,-349 + 3bc00652: 02f50063 beq a0,a5,3bc00672 + 3bc00656: 0e0007b7 lui a5,0xe000 + 3bc0065a: c3c8 sw a0,4(a5) + 3bc0065c: a801 j 3bc0066c + 3bc0065e: 4d4757b7 lui a5,0x4d475 + 3bc00662: 0e000737 lui a4,0xe000 + 3bc00666: e3278793 addi a5,a5,-462 # 4d474e32 <__BL2_END__+0x11861a22> + 3bc0066a: c35c sw a5,4(a4) + 3bc0066c: 60a2 ld ra,8(sp) + 3bc0066e: 0141 addi sp,sp,16 + 3bc00670: 8082 ret + 3bc00672: 4d4757b7 lui a5,0x4d475 + 3bc00676: 0e000737 lui a4,0xe000 + 3bc0067a: e3178793 addi a5,a5,-463 # 4d474e31 <__BL2_END__+0x11861a21> + 3bc0067e: b7f5 j 3bc0066a + +000000003bc00680 : + 3bc00680: 030027b7 lui a5,0x3002 + 3bc00684: 0207a823 sw zero,48(a5) # 3002030 <__BSS_SIZE__+0x2ffc420> + 3bc00688: 0207aa23 sw zero,52(a5) + 3bc0068c: 8082 ret + +000000003bc0068e : + 3bc0068e: 7139 addi sp,sp,-64 + 3bc00690: 0000a797 auipc a5,0xa + 3bc00694: ab87b783 ld a5,-1352(a5) # 3bc0a148 + 3bc00698: e03e sd a5,0(sp) + 3bc0069a: 0000a797 auipc a5,0xa + 3bc0069e: ab67b783 ld a5,-1354(a5) # 3bc0a150 + 3bc006a2: e43e sd a5,8(sp) + 3bc006a4: 0000a797 auipc a5,0xa + 3bc006a8: ab47b783 ld a5,-1356(a5) # 3bc0a158 + 3bc006ac: e83e sd a5,16(sp) + 3bc006ae: 0000a517 auipc a0,0xa + 3bc006b2: a3250513 addi a0,a0,-1486 # 3bc0a0e0 + 3bc006b6: 0000a797 auipc a5,0xa + 3bc006ba: aaa7b783 ld a5,-1366(a5) # 3bc0a160 + 3bc006be: f426 sd s1,40(sp) + 3bc006c0: ec3e sd a5,24(sp) + 3bc006c2: fc06 sd ra,56(sp) + 3bc006c4: f822 sd s0,48(sp) + 3bc006c6: f04a sd s2,32(sp) + 3bc006c8: c91ff0ef jal ra,3bc00358 + 3bc006cc: 030027b7 lui a5,0x3002 + 3bc006d0: 577d li a4,-1 + 3bc006d2: 5b84 lw s1,48(a5) + 3bc006d4: 03f00693 li a3,63 + 3bc006d8: db98 sw a4,48(a5) + 3bc006da: dbd4 sw a3,52(a5) + 3bc006dc: 054887b7 lui a5,0x5488 + 3bc006e0: 03003737 lui a4,0x3003 + 3bc006e4: 10178793 addi a5,a5,257 # 5488101 + 3bc006e8: 80f72423 sw a5,-2040(a4) # 3002808 <__BSS_SIZE__+0x2ffcbf8> + 3bc006ec: 030037b7 lui a5,0x3003 + 3bc006f0: 84d72023 sw a3,-1984(a4) + 3bc006f4: 2481 sext.w s1,s1 + 3bc006f6: 4601 li a2,0 + 3bc006f8: 85470713 addi a4,a4,-1964 + 3bc006fc: 01010813 addi a6,sp,16 + 3bc00700: 80c78513 addi a0,a5,-2036 # 300280c <__BSS_SIZE__+0x2ffcbfc> + 3bc00704: 45c1 li a1,16 + 3bc00706: 4026468b lrw a3,a2,sp,0 + 3bc0070a: c314 sw a3,0(a4) + 3bc0070c: ffc72683 lw a3,-4(a4) + 3bc00710: 0741 addi a4,a4,16 + 3bc00712: 2681 sext.w a3,a3 + 3bc00714: 9abd andi a3,a3,-17 + 3bc00716: 0016e693 ori a3,a3,1 + 3bc0071a: fed72623 sw a3,-20(a4) + 3bc0071e: 4106468b lrw a3,a2,a6,0 + 3bc00722: 40a6568b srw a3,a2,a0,0 + 3bc00726: 0611 addi a2,a2,4 + 3bc00728: fcb61fe3 bne a2,a1,3bc00706 + 3bc0072c: 80078613 addi a2,a5,-2048 + 3bc00730: 4218 lw a4,0(a2) + 3bc00732: 76bd lui a3,0xfffef + 3bc00734: eee68693 addi a3,a3,-274 # fffffffffffeeeee <__BL2_END__+0xffffffffc43dbade> + 3bc00738: 2701 sext.w a4,a4 + 3bc0073a: 8f75 and a4,a4,a3 + 3bc0073c: c218 sw a4,0(a2) + 3bc0073e: 00448737 lui a4,0x448 + 3bc00742: 90078613 addi a2,a5,-1792 + 3bc00746: 10170713 addi a4,a4,257 # 448101 <__BSS_SIZE__+0x4424f1> + 3bc0074a: c618 sw a4,8(a2) + 3bc0074c: 03002437 lui s0,0x3002 + 3bc00750: 018006b7 lui a3,0x1800 + 3bc00754: 6841 lui a6,0x10 + 3bc00756: d014 sw a3,32(s0) + 3bc00758: 30980593 addi a1,a6,777 # 10309 <__BSS_SIZE__+0xa6f9> + 3bc0075c: 10040693 addi a3,s0,256 # 3002100 <__BSS_SIZE__+0x2ffc4f0> + 3bc00760: da8c sw a1,48(a3) + 3bc00762: 000205b7 lui a1,0x20 + 3bc00766: 20958593 addi a1,a1,521 # 20209 <__BSS_SIZE__+0x1a5f9> + 3bc0076a: de8c sw a1,56(a3) + 3bc0076c: c658 sw a4,12(a2) + 3bc0076e: 00030637 lui a2,0x30 + 3bc00772: 00960313 addi t1,a2,9 # 30009 <__BSS_SIZE__+0x2a3f9> + 3bc00776: 04642423 sw t1,72(s0) + 3bc0077a: 30960713 addi a4,a2,777 + 3bc0077e: 00040537 lui a0,0x40 + 3bc00782: c878 sw a4,84(s0) + 3bc00784: 00080937 lui s2,0x80 + 3bc00788: 00950713 addi a4,a0,9 # 40009 <__BSS_SIZE__+0x3a3f9> + 3bc0078c: d078 sw a4,100(s0) + 3bc0078e: 00990893 addi a7,s2,9 # 80009 <__BSS_SIZE__+0x7a3f9> + 3bc00792: 08040713 addi a4,s0,128 + 3bc00796: 01172423 sw a7,8(a4) + 3bc0079a: 001208b7 lui a7,0x120 + 3bc0079e: 08a5 addi a7,a7,9 + 3bc007a0: 01172c23 sw a7,24(a4) + 3bc007a4: 000f08b7 lui a7,0xf0 + 3bc007a8: 08a5 addi a7,a7,9 + 3bc007aa: 0316a023 sw a7,32(a3) # 1800020 <__BSS_SIZE__+0x17fa410> + 3bc007ae: 0825 addi a6,a6,9 + 3bc007b0: 03072423 sw a6,40(a4) + 3bc007b4: 10960813 addi a6,a2,265 + 3bc007b8: 07072223 sw a6,100(a4) + 3bc007bc: 30950513 addi a0,a0,777 + 3bc007c0: d768 sw a0,108(a4) + 3bc007c2: 00060537 lui a0,0x60 + 3bc007c6: 04672423 sw t1,72(a4) + 3bc007ca: 20950513 addi a0,a0,521 # 60209 <__BSS_SIZE__+0x5a5f9> + 3bc007ce: cb28 sw a0,80(a4) + 3bc007d0: cf28 sw a0,88(a4) + 3bc007d2: ca8c sw a1,16(a3) + 3bc007d4: 20960613 addi a2,a2,521 + 3bc007d8: c2f0 sw a2,68(a3) + 3bc007da: 00050637 lui a2,0x50 + 3bc007de: 0625 addi a2,a2,9 + 3bc007e0: df10 sw a2,56(a4) + 3bc007e2: d6d0 sw a2,44(a3) + 3bc007e4: 88078793 addi a5,a5,-1920 + 3bc007e8: 5398 lw a4,32(a5) + 3bc007ea: 10090913 addi s2,s2,256 + 3bc007ee: 0124f933 and s2,s1,s2 + 3bc007f2: 2701 sext.w a4,a4 + 3bc007f4: 9b6d andi a4,a4,-5 + 3bc007f6: d398 sw a4,32(a5) + 3bc007f8: 57d8 lw a4,44(a5) + 3bc007fa: 0c800513 li a0,200 + 3bc007fe: 2701 sext.w a4,a4 + 3bc00800: 9b65 andi a4,a4,-7 + 3bc00802: d7d8 sw a4,44(a5) + 3bc00804: 987ff0ef jal ra,3bc0018a + 3bc00808: 03242823 sw s2,48(s0) + 3bc0080c: 70e2 ld ra,56(sp) + 3bc0080e: 02042a23 sw zero,52(s0) + 3bc00812: 7442 ld s0,48(sp) + 3bc00814: 74a2 ld s1,40(sp) + 3bc00816: 7902 ld s2,32(sp) + 3bc00818: 6121 addi sp,sp,64 + 3bc0081a: 8082 ret + +000000003bc0081c : + 3bc0081c: 1141 addi sp,sp,-16 + 3bc0081e: e406 sd ra,8(sp) + 3bc00820: e6fff0ef jal ra,3bc0068e + 3bc00824: 60a2 ld ra,8(sp) + 3bc00826: 0000a517 auipc a0,0xa + 3bc0082a: 8ca50513 addi a0,a0,-1846 # 3bc0a0f0 + 3bc0082e: 0141 addi sp,sp,16 + 3bc00830: b625 j 3bc00358 + +000000003bc00832 : + 3bc00832: 8082 ret + +000000003bc00834 : + 3bc00834: 05025737 lui a4,0x5025 + 3bc00838: 475c lw a5,12(a4) + 3bc0083a: 471c lw a5,8(a4) + 3bc0083c: f40006b7 lui a3,0xf4000 + 3bc00840: bff68693 addi a3,a3,-1025 # fffffffff3fffbff <__BL2_END__+0xffffffffb83ec7ef> + 3bc00844: 2781 sext.w a5,a5 + 3bc00846: 8ff5 and a5,a5,a3 + 3bc00848: 0c0006b7 lui a3,0xc000 + 3bc0084c: 8fd5 or a5,a5,a3 + 3bc0084e: c71c sw a5,8(a4) + 3bc00850: 4685 li a3,1 + 3bc00852: 050267b7 lui a5,0x5026 + 3bc00856: 48d7a623 sw a3,1164(a5) # 502648c + 3bc0085a: 4807a623 sw zero,1164(a5) + 3bc0085e: 471c lw a5,8(a4) + 3bc00860: 0c0016b7 lui a3,0xc001 + 3bc00864: 80068693 addi a3,a3,-2048 # c000800 + 3bc00868: 2781 sext.w a5,a5 + 3bc0086a: 8fd5 or a5,a5,a3 + 3bc0086c: c71c sw a5,8(a4) + 3bc0086e: 0000a517 auipc a0,0xa + 3bc00872: 89250513 addi a0,a0,-1902 # 3bc0a100 + 3bc00876: b4cd j 3bc00358 + +000000003bc00878 : + 3bc00878: 1141 addi sp,sp,-16 + 3bc0087a: e022 sd s0,0(sp) + 3bc0087c: 05026437 lui s0,0x5026 + 3bc00880: 0f842583 lw a1,248(s0) # 50260f8 + 3bc00884: 0000a517 auipc a0,0xa + 3bc00888: 89450513 addi a0,a0,-1900 # 3bc0a118 + 3bc0088c: e406 sd ra,8(sp) + 3bc0088e: 2581 sext.w a1,a1 + 3bc00890: ac9ff0ef jal ra,3bc00358 + 3bc00894: 0fc42583 lw a1,252(s0) + 3bc00898: 0000a517 auipc a0,0xa + 3bc0089c: 89850513 addi a0,a0,-1896 # 3bc0a130 + 3bc008a0: 2581 sext.w a1,a1 + 3bc008a2: ab7ff0ef jal ra,3bc00358 + 3bc008a6: 4785 li a5,1 + 3bc008a8: 0cf42023 sw a5,192(s0) + 3bc008ac: 05026737 lui a4,0x5026 + 3bc008b0: 4685 li a3,1 + 3bc008b2: 0c072783 lw a5,192(a4) # 50260c0 + 3bc008b6: 2781 sext.w a5,a5 + 3bc008b8: fed79de3 bne a5,a3,3bc008b2 + 3bc008bc: 0cd72623 sw a3,204(a4) + 3bc008c0: 05026737 lui a4,0x5026 + 3bc008c4: 4685 li a3,1 + 3bc008c6: 0cc72783 lw a5,204(a4) # 50260cc + 3bc008ca: 2781 sext.w a5,a5 + 3bc008cc: fed79de3 bne a5,a3,3bc008c6 + 3bc008d0: 0cd72423 sw a3,200(a4) + 3bc008d4: 05026737 lui a4,0x5026 + 3bc008d8: 4685 li a3,1 + 3bc008da: 0c872783 lw a5,200(a4) # 50260c8 + 3bc008de: 2781 sext.w a5,a5 + 3bc008e0: fed79de3 bne a5,a3,3bc008da + 3bc008e4: 0ed72023 sw a3,224(a4) + 3bc008e8: 050266b7 lui a3,0x5026 + 3bc008ec: 4705 li a4,1 + 3bc008ee: 0e06a783 lw a5,224(a3) # 50260e0 + 3bc008f2: 2781 sext.w a5,a5 + 3bc008f4: fee79de3 bne a5,a4,3bc008ee + 3bc008f8: 05025737 lui a4,0x5025 + 3bc008fc: 08070613 addi a2,a4,128 # 5025080 + 3bc00900: 565c lw a5,44(a2) + 3bc00902: 60a2 ld ra,8(sp) + 3bc00904: 6402 ld s0,0(sp) + 3bc00906: 2781 sext.w a5,a5 + 3bc00908: 0017e793 ori a5,a5,1 + 3bc0090c: d65c sw a5,44(a2) + 3bc0090e: 67ad lui a5,0xb + 3bc00910: b1878793 addi a5,a5,-1256 # ab18 <__BSS_SIZE__+0x4f08> + 3bc00914: c35c sw a5,4(a4) + 3bc00916: 471c lw a5,8(a4) + 3bc00918: 7645 lui a2,0xffff1 + 3bc0091a: 84060613 addi a2,a2,-1984 # ffffffffffff0840 <__BL2_END__+0xffffffffc43dd430> + 3bc0091e: 2781 sext.w a5,a5 + 3bc00920: 8fd1 or a5,a5,a2 + 3bc00922: c71c sw a5,8(a4) + 3bc00924: 0d06a783 lw a5,208(a3) + 3bc00928: 2781 sext.w a5,a5 + 3bc0092a: 9bed andi a5,a5,-5 + 3bc0092c: 0cf6a823 sw a5,208(a3) + 3bc00930: 0141 addi sp,sp,16 + 3bc00932: 8082 ret + +000000003bc00934 : + 3bc00934: 7139 addi sp,sp,-64 + 3bc00936: 0000a797 auipc a5,0xa + 3bc0093a: 8327b783 ld a5,-1998(a5) # 3bc0a168 + 3bc0093e: e43e sd a5,8(sp) + 3bc00940: 000827b7 lui a5,0x82 + 3bc00944: 47378793 addi a5,a5,1139 # 82473 <__BSS_SIZE__+0x7c863> + 3bc00948: 07b2 slli a5,a5,0xc + 3bc0094a: faf1578b sdd a5,a5,(sp),1,4 + 3bc0094e: f03e sd a5,32(sp) + 3bc00950: 6785 lui a5,0x1 + 3bc00952: 10178793 addi a5,a5,257 # 1101 <__BSS_SIZE__-0x4b0f> + 3bc00956: d43e sw a5,40(sp) + 3bc00958: 478d li a5,3 + 3bc0095a: 02f10723 sb a5,46(sp) + 3bc0095e: fc06 sd ra,56(sp) + 3bc00960: 4701 li a4,0 + 3bc00962: 4781 li a5,0 + 3bc00964: 002c addi a1,sp,8 + 3bc00966: 02400693 li a3,36 + 3bc0096a: 80b7460b lrbu a2,a4,a1,0 + 3bc0096e: 0705 addi a4,a4,1 + 3bc00970: 9fb1 addw a5,a5,a2 + 3bc00972: 3c07b78b extu a5,a5,15,0 + 3bc00976: fed71ae3 bne a4,a3,3bc0096a + 3bc0097a: 01900537 lui a0,0x1900 + 3bc0097e: 02800613 li a2,40 + 3bc00982: 40050513 addi a0,a0,1024 # 1900400 <__BSS_SIZE__+0x18fa7f0> + 3bc00986: 02f11623 sh a5,44(sp) + 3bc0098a: 0e2000ef jal ra,3bc00a6c + 3bc0098e: 70e2 ld ra,56(sp) + 3bc00990: 6121 addi sp,sp,64 + 3bc00992: 8082 ret + +000000003bc00994 : + 3bc00994: 4501 li a0,0 + 3bc00996: 8082 ret + +000000003bc00998 : + 3bc00998: 00050023 sb zero,0(a0) + 3bc0099c: 872a mv a4,a0 + 3bc0099e: 00009317 auipc t1,0x9 + 3bc009a2: 7d230313 addi t1,t1,2002 # 3bc0a170 + 3bc009a6: 4e65 li t3,25 + 3bc009a8: 02c5f7b3 remu a5,a1,a2 + 3bc009ac: 80f3478b lrbu a5,t1,a5,0 + 3bc009b0: ce91 beqz a3,3bc009cc + 3bc009b2: f9f7881b addiw a6,a5,-97 + 3bc009b6: 0ff87813 andi a6,a6,255 + 3bc009ba: 02000893 li a7,32 + 3bc009be: 010e7363 bgeu t3,a6,3bc009c4 + 3bc009c2: 4881 li a7,0 + 3bc009c4: 411787bb subw a5,a5,a7 + 3bc009c8: 0ff7f793 andi a5,a5,255 + 3bc009cc: 0817578b sbib a5,(a4),1,0 + 3bc009d0: 02c5d7b3 divu a5,a1,a2 + 3bc009d4: 02c5f463 bgeu a1,a2,3bc009fc + 3bc009d8: 87aa mv a5,a0 + 3bc009da: 86ba mv a3,a4 + 3bc009dc: 02d7e263 bltu a5,a3,3bc00a00 + 3bc009e0: fff50693 addi a3,a0,-1 + 3bc009e4: 4781 li a5,0 + 3bc009e6: 00d76863 bltu a4,a3,3bc009f6 + 3bc009ea: 40a707b3 sub a5,a4,a0 + 3bc009ee: 0785 addi a5,a5,1 + 3bc009f0: 8385 srli a5,a5,0x1 + 3bc009f2: 40f007b3 neg a5,a5 + 3bc009f6: 00f70533 add a0,a4,a5 + 3bc009fa: 8082 ret + 3bc009fc: 85be mv a1,a5 + 3bc009fe: b76d j 3bc009a8 + 3bc00a00: 0006c583 lbu a1,0(a3) + 3bc00a04: 0007c603 lbu a2,0(a5) + 3bc00a08: 1817d58b sbia a1,(a5),1,0 + 3bc00a0c: 19f6d60b sbia a2,(a3),-1,0 + 3bc00a10: b7f1 j 3bc009dc + +000000003bc00a12 : + 3bc00a12: 0ff5f813 andi a6,a1,255 + 3bc00a16: 87aa mv a5,a0 + 3bc00a18: 0077f713 andi a4,a5,7 + 3bc00a1c: c719 beqz a4,3bc00a2a + 3bc00a1e: e211 bnez a2,3bc00a22 + 3bc00a20: 8082 ret + 3bc00a22: 1817d80b sbia a6,(a5),1,0 + 3bc00a26: 167d addi a2,a2,-1 + 3bc00a28: bfc5 j 3bc00a18 + 3bc00a2a: ca05 beqz a2,3bc00a5a + 3bc00a2c: 00009697 auipc a3,0x9 + 3bc00a30: 76c6b683 ld a3,1900(a3) # 3bc0a198 + 3bc00a34: 0ff5f593 andi a1,a1,255 + 3bc00a38: 02d585b3 mul a1,a1,a3 + 3bc00a3c: 489d li a7,7 + 3bc00a3e: 4681 li a3,0 + 3bc00a40: 40d60333 sub t1,a2,a3 + 3bc00a44: 0068ec63 bltu a7,t1,3bc00a5c + 3bc00a48: 00365693 srli a3,a2,0x3 + 3bc00a4c: 55e1 li a1,-8 + 3bc00a4e: 06d7978b addsl a5,a5,a3,3 + 3bc00a52: 20b6960b mula a2,a3,a1 + 3bc00a56: 00e61763 bne a2,a4,3bc00a64 + 3bc00a5a: 8082 ret + 3bc00a5c: 60d7d58b srd a1,a5,a3,0 + 3bc00a60: 06a1 addi a3,a3,8 + 3bc00a62: bff9 j 3bc00a40 + 3bc00a64: 00e7d80b srb a6,a5,a4,0 + 3bc00a68: 0705 addi a4,a4,1 + 3bc00a6a: b7f5 j 3bc00a56 + +000000003bc00a6c : + 3bc00a6c: 00b547b3 xor a5,a0,a1 + 3bc00a70: 8b9d andi a5,a5,7 + 3bc00a72: e7a9 bnez a5,3bc00abc + 3bc00a74: 87aa mv a5,a0 + 3bc00a76: 0077f713 andi a4,a5,7 + 3bc00a7a: cb09 beqz a4,3bc00a8c + 3bc00a7c: e211 bnez a2,3bc00a80 + 3bc00a7e: 8082 ret + 3bc00a80: 9815c70b lbuia a4,(a1),1,0 + 3bc00a84: 167d addi a2,a2,-1 + 3bc00a86: 1817d70b sbia a4,(a5),1,0 + 3bc00a8a: b7f5 j 3bc00a76 + 3bc00a8c: 469d li a3,7 + 3bc00a8e: e619 bnez a2,3bc00a9c + 3bc00a90: 8082 ret + 3bc00a92: 60e5c80b lrd a6,a1,a4,0 + 3bc00a96: 60e7d80b srd a6,a5,a4,0 + 3bc00a9a: 0721 addi a4,a4,8 + 3bc00a9c: 40e60833 sub a6,a2,a4 + 3bc00aa0: ff06e9e3 bltu a3,a6,3bc00a92 + 3bc00aa4: 00365713 srli a4,a2,0x3 + 3bc00aa8: 56e1 li a3,-8 + 3bc00aaa: 20d7160b mula a2,a4,a3 + 3bc00aae: 070e slli a4,a4,0x3 + 3bc00ab0: 97ba add a5,a5,a4 + 3bc00ab2: 95ba add a1,a1,a4 + 3bc00ab4: 4701 li a4,0 + 3bc00ab6: 00e61563 bne a2,a4,3bc00ac0 + 3bc00aba: 8082 ret + 3bc00abc: 87aa mv a5,a0 + 3bc00abe: bfdd j 3bc00ab4 + 3bc00ac0: 80e5c68b lrbu a3,a1,a4,0 + 3bc00ac4: 00e7d68b srb a3,a5,a4,0 + 3bc00ac8: 0705 addi a4,a4,1 + 3bc00aca: b7f5 j 3bc00ab6 + +000000003bc00acc : + 3bc00acc: 40b50733 sub a4,a0,a1 + 3bc00ad0: 87aa mv a5,a0 + 3bc00ad2: 00c76363 bltu a4,a2,3bc00ad8 + 3bc00ad6: bf59 j 3bc00a6c + 3bc00ad8: 95b2 add a1,a1,a2 + 3bc00ada: 9532 add a0,a0,a2 + 3bc00adc: 00f51363 bne a0,a5,3bc00ae2 + 3bc00ae0: 8082 ret + 3bc00ae2: 89f5c70b lbuib a4,(a1),-1,0 + 3bc00ae6: 09f5570b sbib a4,(a0),-1,0 + 3bc00aea: bfcd j 3bc00adc + +000000003bc00aec : + 3bc00aec: 0e0007b7 lui a5,0xe000 + 3bc00af0: 4794 lw a3,8(a5) + 3bc00af2: 1141 addi sp,sp,-16 + 3bc00af4: e022 sd s0,0(sp) + 3bc00af6: e406 sd ra,8(sp) + 3bc00af8: 6709 lui a4,0x2 + 3bc00afa: 842a mv s0,a0 + 3bc00afc: 00e6e463 bltu a3,a4,3bc00b04 + 3bc00b00: 0007a423 sw zero,8(a5) # e000008 + 3bc00b04: 0e0007b7 lui a5,0xe000 + 3bc00b08: 4798 lw a4,8(a5) + 3bc00b0a: 0017069b addiw a3,a4,1 + 3bc00b0e: c794 sw a3,8(a5) + 3bc00b10: 0c0006b7 lui a3,0xc000 + 3bc00b14: 10e6d40b surb s0,a3,a4,0 + 3bc00b18: 4709 li a4,2 + 3bc00b1a: 00b74d63 blt a4,a1,3bc00b34 + 3bc00b1e: 0007c783 lbu a5,0(a5) # e000000 + 3bc00b22: 8b91 andi a5,a5,4 + 3bc00b24: eb81 bnez a5,3bc00b34 + 3bc00b26: 0ff47513 andi a0,s0,255 + 3bc00b2a: f7aff0ef jal ra,3bc002a4 + 3bc00b2e: 00055363 bgez a0,3bc00b34 + 3bc00b32: 547d li s0,-1 + 3bc00b34: 60a2 ld ra,8(sp) + 3bc00b36: 8522 mv a0,s0 + 3bc00b38: 6402 ld s0,0(sp) + 3bc00b3a: 0141 addi sp,sp,16 + 3bc00b3c: 8082 ret + +000000003bc00b3e : + 3bc00b3e: 4701 li a4,0 + 3bc00b40: 80e5478b lrbu a5,a0,a4,0 + 3bc00b44: 80e5c68b lrbu a3,a1,a4,0 + 3bc00b48: 00d78563 beq a5,a3,3bc00b52 + 3bc00b4c: 40d7853b subw a0,a5,a3 + 3bc00b50: 8082 ret + 3bc00b52: 0705 addi a4,a4,1 + 3bc00b54: f7f5 bnez a5,3bc00b40 + 3bc00b56: 4501 li a0,0 + 3bc00b58: 8082 ret + +000000003bc00b5a : + 3bc00b5a: 87aa mv a5,a0 + 3bc00b5c: 0007c703 lbu a4,0(a5) + 3bc00b60: e701 bnez a4,3bc00b68 + 3bc00b62: 40a78533 sub a0,a5,a0 + 3bc00b66: 8082 ret + 3bc00b68: 0785 addi a5,a5,1 + 3bc00b6a: bfcd j 3bc00b5c + +000000003bc00b6c : + 3bc00b6c: 1101 addi sp,sp,-32 + 3bc00b6e: 00c007b7 lui a5,0xc00 + 3bc00b72: e822 sd s0,16(sp) + 3bc00b74: e426 sd s1,8(sp) + 3bc00b76: e04a sd s2,0(sp) + 3bc00b78: 1c55370b extu a4,a0,7,5 + 3bc00b7c: 4007879b addiw a5,a5,1024 + 3bc00b80: 0155541b srliw s0,a0,0x15 + 3bc00b84: 5105390b extu s2,a0,20,16 + 3bc00b88: 1045348b extu s1,a0,4,4 + 3bc00b8c: 3c85350b extu a0,a0,15,8 + 3bc00b90: 9d3d addw a0,a0,a5 + 3bc00b92: 0025151b slliw a0,a0,0x2 + 3bc00b96: ec06 sd ra,24(sp) + 3bc00b98: 7c05350b extu a0,a0,31,0 + 3bc00b9c: c118 sw a4,0(a0) + 3bc00b9e: 4529 li a0,10 + 3bc00ba0: deaff0ef jal ra,3bc0018a + 3bc00ba4: 00447793 andi a5,s0,4 + 3bc00ba8: eb9d bnez a5,3bc00bde + 3bc00baa: 678d lui a5,0x3 + 3bc00bac: 881d andi s0,s0,7 + 3bc00bae: 0207879b addiw a5,a5,32 + 3bc00bb2: 9c3d addw s0,s0,a5 + 3bc00bb4: 00c4141b slliw s0,s0,0xc + 3bc00bb8: 0504041b addiw s0,s0,80 + 3bc00bbc: 7c04340b extu s0,s0,31,0 + 3bc00bc0: 4008 lw a0,0(s0) + 3bc00bc2: 0125553b srlw a0,a0,s2 + 3bc00bc6: 00157793 andi a5,a0,1 + 3bc00bca: 853e mv a0,a5 + 3bc00bcc: c099 beqz s1,3bc00bd2 + 3bc00bce: 0017c513 xori a0,a5,1 + 3bc00bd2: 60e2 ld ra,24(sp) + 3bc00bd4: 6442 ld s0,16(sp) + 3bc00bd6: 64a2 ld s1,8(sp) + 3bc00bd8: 6902 ld s2,0(sp) + 3bc00bda: 6105 addi sp,sp,32 + 3bc00bdc: 8082 ret + 3bc00bde: 05021437 lui s0,0x5021 + 3bc00be2: 05040413 addi s0,s0,80 # 5021050 + 3bc00be6: bfd9 j 3bc00bbc + +000000003bc00be8 : + 3bc00be8: 030507b7 lui a5,0x3050 + 3bc00bec: 1047a783 lw a5,260(a5) # 3050104 <__BSS_SIZE__+0x304a4f4> + 3bc00bf0: 0007851b sext.w a0,a5 + 3bc00bf4: 8b91 andi a5,a5,4 + 3bc00bf6: c391 beqz a5,3bc00bfa + 3bc00bf8: bf95 j 3bc00b6c + 3bc00bfa: 030007b7 lui a5,0x3000 + 3bc00bfe: 43c8 lw a0,4(a5) + 3bc00c00: 2085350b extu a0,a0,8,8 + 3bc00c04: 8082 ret + +000000003bc00c06 : + 3bc00c06: 1141 addi sp,sp,-16 + 3bc00c08: e406 sd ra,8(sp) + 3bc00c0a: e02ff0ef jal ra,3bc0020c + 3bc00c0e: 60a2 ld ra,8(sp) + 3bc00c10: 3e75051b addiw a0,a0,999 + 3bc00c14: 3e800793 li a5,1000 + 3bc00c18: 02f5553b divuw a0,a0,a5 + 3bc00c1c: 0141 addi sp,sp,16 + 3bc00c1e: 8082 ret + +000000003bc00c20 : + 3bc00c20: 7179 addi sp,sp,-48 + 3bc00c22: 8732 mv a4,a2 + 3bc00c24: 2601 sext.w a2,a2 + 3bc00c26: f022 sd s0,32(sp) + 3bc00c28: ec26 sd s1,24(sp) + 3bc00c2a: e03a sd a4,0(sp) + 3bc00c2c: f406 sd ra,40(sp) + 3bc00c2e: 84aa mv s1,a0 + 3bc00c30: e42e sd a1,8(sp) + 3bc00c32: 295030ef jal ra,3bc046c6 + 3bc00c36: 4785 li a5,1 + 3bc00c38: f8d1470b ldd a4,a3,(sp),0,4 + 3bc00c3c: 5479 li s0,-2 + 3bc00c3e: 00f51363 bne a0,a5,3bc00c44 + 3bc00c42: 4401 li s0,0 + 3bc00c44: 8626 mv a2,s1 + 3bc00c46: 85a2 mv a1,s0 + 3bc00c48: 00009517 auipc a0,0x9 + 3bc00c4c: 55850513 addi a0,a0,1368 # 3bc0a1a0 + 3bc00c50: f08ff0ef jal ra,3bc00358 + 3bc00c54: 70a2 ld ra,40(sp) + 3bc00c56: 8522 mv a0,s0 + 3bc00c58: 7402 ld s0,32(sp) + 3bc00c5a: 64e2 ld s1,24(sp) + 3bc00c5c: 6145 addi sp,sp,48 + 3bc00c5e: 8082 ret + +000000003bc00c60 : + 3bc00c60: 1101 addi sp,sp,-32 + 3bc00c62: 0000d617 auipc a2,0xd + 3bc00c66: b9e60613 addi a2,a2,-1122 # 3bc0d800 <__BSS_START__> + 3bc00c6a: e42a sd a0,8(sp) + 3bc00c6c: 6585 lui a1,0x1 + 3bc00c6e: 00009517 auipc a0,0x9 + 3bc00c72: 55250513 addi a0,a0,1362 # 3bc0a1c0 + 3bc00c76: ec06 sd ra,24(sp) + 3bc00c78: e822 sd s0,16(sp) + 3bc00c7a: edeff0ef jal ra,3bc00358 + 3bc00c7e: c87ff097 auipc ra,0xc87ff + 3bc00c82: 3a2080e7 jalr 930(ra) # 4400020 + 3bc00c86: 67b5 lui a5,0xd + 3bc00c88: 2501 sext.w a0,a0 + 3bc00c8a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00c8e: 66a2 ld a3,8(sp) + 3bc00c90: 6605 lui a2,0x1 + 3bc00c92: 04f51463 bne a0,a5,3bc00cda + 3bc00c96: 3c0027b7 lui a5,0x3c002 + 3bc00c9a: 0e07a583 lw a1,224(a5) # 3c0020e0 <__BL2_END__+0x3eecd0> + 3bc00c9e: 0000d517 auipc a0,0xd + 3bc00ca2: b6250513 addi a0,a0,-1182 # 3bc0d800 <__BSS_START__> + 3bc00ca6: f7bff0ef jal ra,3bc00c20 + 3bc00caa: 02054463 bltz a0,3bc00cd2 + 3bc00cae: 0000d417 auipc s0,0xd + 3bc00cb2: b5240413 addi s0,s0,-1198 # 3bc0d800 <__BSS_START__> + 3bc00cb6: 6018 ld a4,0(s0) + 3bc00cb8: 0000a797 auipc a5,0xa + 3bc00cbc: 9607b783 ld a5,-1696(a5) # 3bc0a618 + 3bc00cc0: 02f70a63 beq a4,a5,3bc00cf4 + 3bc00cc4: 00009517 auipc a0,0x9 + 3bc00cc8: 51450513 addi a0,a0,1300 # 3bc0a1d8 + 3bc00ccc: e8cff0ef jal ra,3bc00358 + 3bc00cd0: 557d li a0,-1 + 3bc00cd2: 60e2 ld ra,24(sp) + 3bc00cd4: 6442 ld s0,16(sp) + 3bc00cd6: 6105 addi sp,sp,32 + 3bc00cd8: 8082 ret + 3bc00cda: 3c0027b7 lui a5,0x3c002 + 3bc00cde: 0e07a583 lw a1,224(a5) # 3c0020e0 <__BL2_END__+0x3eecd0> + 3bc00ce2: 0000d517 auipc a0,0xd + 3bc00ce6: b1e50513 addi a0,a0,-1250 # 3bc0d800 <__BSS_START__> + 3bc00cea: c87ff097 auipc ra,0xc87ff + 3bc00cee: 376080e7 jalr 886(ra) # 4400060 + 3bc00cf2: bf65 j 3bc00caa + 3bc00cf4: 6585 lui a1,0x1 + 3bc00cf6: 15d1 addi a1,a1,-12 + 3bc00cf8: 0000d517 auipc a0,0xd + 3bc00cfc: b1450513 addi a0,a0,-1260 # 3bc0d80c <__BSS_START__+0xc> + 3bc00d00: c87ff097 auipc ra,0xc87ff + 3bc00d04: 3a0080e7 jalr 928(ra) # 44000a0 + 3bc00d08: 4410 lw a2,8(s0) + 3bc00d0a: 0005059b sext.w a1,a0 + 3bc00d0e: 00b60963 beq a2,a1,3bc00d20 + 3bc00d12: 00009517 auipc a0,0x9 + 3bc00d16: 4de50513 addi a0,a0,1246 # 3bc0a1f0 + 3bc00d1a: e3eff0ef jal ra,3bc00358 + 3bc00d1e: bf4d j 3bc00cd0 + 3bc00d20: 00009517 auipc a0,0x9 + 3bc00d24: 4f050513 addi a0,a0,1264 # 3bc0a210 + 3bc00d28: e30ff0ef jal ra,3bc00358 + 3bc00d2c: 4501 li a0,0 + 3bc00d2e: b755 j 3bc00cd2 + +000000003bc00d30 : + 3bc00d30: 1101 addi sp,sp,-32 + 3bc00d32: e822 sd s0,16(sp) + 3bc00d34: 0000d417 auipc s0,0xd + 3bc00d38: acc40413 addi s0,s0,-1332 # 3bc0d800 <__BSS_START__> + 3bc00d3c: 4c10 lw a2,24(s0) + 3bc00d3e: 484c lw a1,20(s0) + 3bc00d40: e42a sd a0,8(sp) + 3bc00d42: 00009517 auipc a0,0x9 + 3bc00d46: 4d650513 addi a0,a0,1238 # 3bc0a218 + 3bc00d4a: ec06 sd ra,24(sp) + 3bc00d4c: e0cff0ef jal ra,3bc00358 + 3bc00d50: 4c18 lw a4,24(s0) + 3bc00d52: 6791 lui a5,0x4 + 3bc00d54: 66a2 ld a3,8(sp) + 3bc00d56: 00f76363 bltu a4,a5,3bc00d5c + 3bc00d5a: cc1c sw a5,24(s0) + 3bc00d5c: e436 sd a3,8(sp) + 3bc00d5e: c87ff097 auipc ra,0xc87ff + 3bc00d62: 2c2080e7 jalr 706(ra) # 4400020 + 3bc00d66: 67b5 lui a5,0xd + 3bc00d68: 2501 sext.w a0,a0 + 3bc00d6a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00d6e: 66a2 ld a3,8(sp) + 3bc00d70: 01846603 lwu a2,24(s0) + 3bc00d74: 484c lw a1,20(s0) + 3bc00d76: 04f51363 bne a0,a5,3bc00dbc + 3bc00d7a: 0000e517 auipc a0,0xe + 3bc00d7e: a8650513 addi a0,a0,-1402 # 3bc0e800 + 3bc00d82: e9fff0ef jal ra,3bc00c20 + 3bc00d86: 02054763 bltz a0,3bc00db4 + 3bc00d8a: 4c0c lw a1,24(s0) + 3bc00d8c: 0000e517 auipc a0,0xe + 3bc00d90: a7450513 addi a0,a0,-1420 # 3bc0e800 + 3bc00d94: c87ff097 auipc ra,0xc87ff + 3bc00d98: 30c080e7 jalr 780(ra) # 44000a0 + 3bc00d9c: 4810 lw a2,16(s0) + 3bc00d9e: 0005059b sext.w a1,a0 + 3bc00da2: 02b60663 beq a2,a1,3bc00dce + 3bc00da6: 00009517 auipc a0,0x9 + 3bc00daa: 48a50513 addi a0,a0,1162 # 3bc0a230 + 3bc00dae: daaff0ef jal ra,3bc00358 + 3bc00db2: 557d li a0,-1 + 3bc00db4: 60e2 ld ra,24(sp) + 3bc00db6: 6442 ld s0,16(sp) + 3bc00db8: 6105 addi sp,sp,32 + 3bc00dba: 8082 ret + 3bc00dbc: 0000e517 auipc a0,0xe + 3bc00dc0: a4450513 addi a0,a0,-1468 # 3bc0e800 + 3bc00dc4: c87ff097 auipc ra,0xc87ff + 3bc00dc8: 29c080e7 jalr 668(ra) # 4400060 + 3bc00dcc: bf6d j 3bc00d86 + 3bc00dce: 00009517 auipc a0,0x9 + 3bc00dd2: 48a50513 addi a0,a0,1162 # 3bc0a258 + 3bc00dd6: d82ff0ef jal ra,3bc00358 + 3bc00dda: 4501 li a0,0 + 3bc00ddc: bfe1 j 3bc00db4 + +000000003bc00dde : + 3bc00dde: 7179 addi sp,sp,-48 + 3bc00de0: ec26 sd s1,24(sp) + 3bc00de2: 74cd lui s1,0xffff3 + 3bc00de4: e84a sd s2,16(sp) + 3bc00de6: e44e sd s3,8(sp) + 3bc00de8: e052 sd s4,0(sp) + 3bc00dea: f406 sd ra,40(sp) + 3bc00dec: f022 sd s0,32(sp) + 3bc00dee: 1604849b addiw s1,s1,352 + 3bc00df2: 4995 li s3,5 + 3bc00df4: 4a05 li s4,1 + 3bc00df6: 00009917 auipc s2,0x9 + 3bc00dfa: 46a90913 addi s2,s2,1130 # 3bc0a260 + 3bc00dfe: 4401 li s0,0 + 3bc00e00: c87ff097 auipc ra,0xc87ff + 3bc00e04: 2c0080e7 jalr 704(ra) # 44000c0 + 3bc00e08: 00a45e63 bge s0,a0,3bc00e24 + 3bc00e0c: 8522 mv a0,s0 + 3bc00e0e: e53ff0ef jal ra,3bc00c60 + 3bc00e12: 00055463 bgez a0,3bc00e1a + 3bc00e16: 2405 addiw s0,s0,1 + 3bc00e18: b7e5 j 3bc00e00 + 3bc00e1a: 8522 mv a0,s0 + 3bc00e1c: f15ff0ef jal ra,3bc00d30 + 3bc00e20: fe054be3 bltz a0,3bc00e16 + 3bc00e24: c87ff097 auipc ra,0xc87ff + 3bc00e28: 29c080e7 jalr 668(ra) # 44000c0 + 3bc00e2c: 02a45f63 bge s0,a0,3bc00e6a + 3bc00e30: dd7ff0ef jal ra,3bc00c06 + 3bc00e34: 0000a417 auipc s0,0xa + 3bc00e38: 60c40413 addi s0,s0,1548 # 3bc0b440 + 3bc00e3c: 601c ld a5,0(s0) + 3bc00e3e: 00a79123 sh a0,2(a5) + 3bc00e42: 0000e517 auipc a0,0xe + 3bc00e46: 9be50513 addi a0,a0,-1602 # 3bc0e800 + 3bc00e4a: 34a070ef jal ra,3bc08194 + 3bc00e4e: db9ff0ef jal ra,3bc00c06 + 3bc00e52: 601c ld a5,0(s0) + 3bc00e54: 70a2 ld ra,40(sp) + 3bc00e56: 7402 ld s0,32(sp) + 3bc00e58: 00a79223 sh a0,4(a5) + 3bc00e5c: 64e2 ld s1,24(sp) + 3bc00e5e: 6942 ld s2,16(sp) + 3bc00e60: 69a2 ld s3,8(sp) + 3bc00e62: 6a02 ld s4,0(sp) + 3bc00e64: 4501 li a0,0 + 3bc00e66: 6145 addi sp,sp,48 + 3bc00e68: 8082 ret + 3bc00e6a: c87ff097 auipc ra,0xc87ff + 3bc00e6e: 1b6080e7 jalr 438(ra) # 4400020 + 3bc00e72: 9d25 addw a0,a0,s1 + 3bc00e74: 85a2 mv a1,s0 + 3bc00e76: 00a9ef63 bltu s3,a0,3bc00e94 + 3bc00e7a: 00aa1533 sll a0,s4,a0 + 3bc00e7e: 02957513 andi a0,a0,41 + 3bc00e82: c909 beqz a0,3bc00e94 + 3bc00e84: 854a mv a0,s2 + 3bc00e86: cd2ff0ef jal ra,3bc00358 + 3bc00e8a: c87ff097 auipc ra,0xc87ff + 3bc00e8e: 1f6080e7 jalr 502(ra) # 4400080 + 3bc00e92: b7b5 j 3bc00dfe + 3bc00e94: 00009517 auipc a0,0x9 + 3bc00e98: 3f450513 addi a0,a0,1012 # 3bc0a288 + 3bc00e9c: cbcff0ef jal ra,3bc00358 + 3bc00ea0: f1aff0ef jal ra,3bc005ba + +000000003bc00ea4 : + 3bc00ea4: 7179 addi sp,sp,-48 + 3bc00ea6: e84a sd s2,16(sp) + 3bc00ea8: 0000a917 auipc s2,0xa + 3bc00eac: 59890913 addi s2,s2,1432 # 3bc0b440 + 3bc00eb0: 00093783 ld a5,0(s2) + 3bc00eb4: f022 sd s0,32(sp) + 3bc00eb6: 0000d417 auipc s0,0xd + 3bc00eba: 94a40413 addi s0,s0,-1718 # 3bc0d800 <__BSS_START__> + 3bc00ebe: 0047d703 lhu a4,4(a5) + 3bc00ec2: 5414 lw a3,40(s0) + 3bc00ec4: 5450 lw a2,44(s0) + 3bc00ec6: 504c lw a1,36(s0) + 3bc00ec8: ec26 sd s1,24(sp) + 3bc00eca: f406 sd ra,40(sp) + 3bc00ecc: e44e sd s3,8(sp) + 3bc00ece: 00e79323 sh a4,6(a5) + 3bc00ed2: 84aa mv s1,a0 + 3bc00ed4: 00009517 auipc a0,0x9 + 3bc00ed8: 3dc50513 addi a0,a0,988 # 3bc0a2b0 + 3bc00edc: c7cff0ef jal ra,3bc00358 + 3bc00ee0: 545c lw a5,44(s0) + 3bc00ee2: 00009517 auipc a0,0x9 + 3bc00ee6: 3e650513 addi a0,a0,998 # 3bc0a2c8 + 3bc00eea: 10078763 beqz a5,3bc00ff8 + 3bc00eee: 800006b7 lui a3,0x80000 + 3bc00ef2: 00f6863b addw a2,a3,a5 + 3bc00ef6: 04000737 lui a4,0x4000 + 3bc00efa: 00e66b63 bltu a2,a4,3bc00f10 + 3bc00efe: 85be mv a1,a5 + 3bc00f00: 00009517 auipc a0,0x9 + 3bc00f04: 3e050513 addi a0,a0,992 # 3bc0a2e0 + 3bc00f08: c50ff0ef jal ra,3bc00358 + 3bc00f0c: eaeff0ef jal ra,3bc005ba + 3bc00f10: 540c lw a1,40(s0) + 3bc00f12: 9fad addw a5,a5,a1 + 3bc00f14: 9fb5 addw a5,a5,a3 + 3bc00f16: 00e7e763 bltu a5,a4,3bc00f24 + 3bc00f1a: 00009517 auipc a0,0x9 + 3bc00f1e: 3f650513 addi a0,a0,1014 # 3bc0a310 + 3bc00f22: b7dd j 3bc00f08 + 3bc00f24: c87ff097 auipc ra,0xc87ff + 3bc00f28: 0fc080e7 jalr 252(ra) # 4400020 + 3bc00f2c: 67b5 lui a5,0xd + 3bc00f2e: 0005071b sext.w a4,a0 + 3bc00f32: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00f36: 504c lw a1,36(s0) + 3bc00f38: 02846603 lwu a2,40(s0) + 3bc00f3c: 02c46503 lwu a0,44(s0) + 3bc00f40: 86a6 mv a3,s1 + 3bc00f42: 04f71263 bne a4,a5,3bc00f86 + 3bc00f46: cdbff0ef jal ra,3bc00c20 + 3bc00f4a: 84aa mv s1,a0 + 3bc00f4c: 02054563 bltz a0,3bc00f76 + 3bc00f50: 540c lw a1,40(s0) + 3bc00f52: 02c46503 lwu a0,44(s0) + 3bc00f56: c87ff097 auipc ra,0xc87ff + 3bc00f5a: 14a080e7 jalr 330(ra) # 44000a0 + 3bc00f5e: 5010 lw a2,32(s0) + 3bc00f60: 0005059b sext.w a1,a0 + 3bc00f64: 02b60663 beq a2,a1,3bc00f90 + 3bc00f68: 00009517 auipc a0,0x9 + 3bc00f6c: 3d850513 addi a0,a0,984 # 3bc0a340 + 3bc00f70: be8ff0ef jal ra,3bc00358 + 3bc00f74: 54fd li s1,-1 + 3bc00f76: 70a2 ld ra,40(sp) + 3bc00f78: 7402 ld s0,32(sp) + 3bc00f7a: 6942 ld s2,16(sp) + 3bc00f7c: 69a2 ld s3,8(sp) + 3bc00f7e: 8526 mv a0,s1 + 3bc00f80: 64e2 ld s1,24(sp) + 3bc00f82: 6145 addi sp,sp,48 + 3bc00f84: 8082 ret + 3bc00f86: c87ff097 auipc ra,0xc87ff + 3bc00f8a: 0da080e7 jalr 218(ra) # 4400060 + 3bc00f8e: bf75 j 3bc00f4a + 3bc00f90: 02846583 lwu a1,40(s0) + 3bc00f94: 02c46503 lwu a0,44(s0) + 3bc00f98: 3c0026b7 lui a3,0x3c002 + 3bc00f9c: 4601 li a2,0 + 3bc00f9e: 9f7ff0ef jal ra,3bc00994 + 3bc00fa2: 84aa mv s1,a0 + 3bc00fa4: 00055a63 bgez a0,3bc00fb8 + 3bc00fa8: 85aa mv a1,a0 + 3bc00faa: 00009517 auipc a0,0x9 + 3bc00fae: 3be50513 addi a0,a0,958 # 3bc0a368 + 3bc00fb2: ba6ff0ef jal ra,3bc00358 + 3bc00fb6: b7c1 j 3bc00f76 + 3bc00fb8: 02846583 lwu a1,40(s0) + 3bc00fbc: 02c46503 lwu a0,44(s0) + 3bc00fc0: 0e0009b7 lui s3,0xe000 + 3bc00fc4: 992ff0ef jal ra,3bc00156 + 3bc00fc8: 07c9a483 lw s1,124(s3) # e00007c + 3bc00fcc: 969ff0ef jal ra,3bc00934 + 3bc00fd0: c37ff0ef jal ra,3bc00c06 + 3bc00fd4: 00093783 ld a5,0(s2) + 3bc00fd8: 2481 sext.w s1,s1 + 3bc00fda: 00a79323 sh a0,6(a5) + 3bc00fde: 0abc17b7 lui a5,0xabc1 + 3bc00fe2: def78793 addi a5,a5,-529 # abc0def + 3bc00fe6: 00f49d63 bne s1,a5,3bc01000 + 3bc00fea: 545c lw a5,44(s0) + 3bc00fec: 06f9ae23 sw a5,124(s3) + 3bc00ff0: 00009517 auipc a0,0x9 + 3bc00ff4: 39850513 addi a0,a0,920 # 3bc0a388 + 3bc00ff8: b60ff0ef jal ra,3bc00358 + 3bc00ffc: 4481 li s1,0 + 3bc00ffe: bfa5 j 3bc00f76 + 3bc01000: 02c46503 lwu a0,44(s0) + 3bc01004: de8ff0ef jal ra,3bc005ec + 3bc01008: b7e5 j 3bc00ff0 + +000000003bc0100a : + 3bc0100a: 1101 addi sp,sp,-32 + 3bc0100c: e822 sd s0,16(sp) + 3bc0100e: 0000c417 auipc s0,0xc + 3bc01012: 7f240413 addi s0,s0,2034 # 3bc0d800 <__BSS_START__> + 3bc01016: e04a sd s2,0(sp) + 3bc01018: 5c14 lw a3,56(s0) + 3bc0101a: 5c50 lw a2,60(s0) + 3bc0101c: 892e mv s2,a1 + 3bc0101e: 584c lw a1,52(s0) + 3bc01020: e426 sd s1,8(sp) + 3bc01022: 84aa mv s1,a0 + 3bc01024: 00009517 auipc a0,0x9 + 3bc01028: 36c50513 addi a0,a0,876 # 3bc0a390 + 3bc0102c: ec06 sd ra,24(sp) + 3bc0102e: b2aff0ef jal ra,3bc00358 + 3bc01032: 5c5c lw a5,60(s0) + 3bc01034: eb89 bnez a5,3bc01046 + 3bc01036: 00009517 auipc a0,0x9 + 3bc0103a: 37250513 addi a0,a0,882 # 3bc0a3a8 + 3bc0103e: b1aff0ef jal ra,3bc00358 + 3bc01042: 4481 li s1,0 + 3bc01044: a069 j 3bc010ce + 3bc01046: 800006b7 lui a3,0x80000 + 3bc0104a: 00f6863b addw a2,a3,a5 + 3bc0104e: 04000737 lui a4,0x4000 + 3bc01052: 00e66b63 bltu a2,a4,3bc01068 + 3bc01056: 85be mv a1,a5 + 3bc01058: 00009517 auipc a0,0x9 + 3bc0105c: 36050513 addi a0,a0,864 # 3bc0a3b8 + 3bc01060: af8ff0ef jal ra,3bc00358 + 3bc01064: d56ff0ef jal ra,3bc005ba + 3bc01068: 5c0c lw a1,56(s0) + 3bc0106a: 9fad addw a5,a5,a1 + 3bc0106c: 9fb5 addw a5,a5,a3 + 3bc0106e: 00e7e763 bltu a5,a4,3bc0107c + 3bc01072: 00009517 auipc a0,0x9 + 3bc01076: 37650513 addi a0,a0,886 # 3bc0a3e8 + 3bc0107a: b7dd j 3bc01060 + 3bc0107c: c87ff097 auipc ra,0xc87ff + 3bc01080: fa4080e7 jalr -92(ra) # 4400020 + 3bc01084: 67b5 lui a5,0xd + 3bc01086: 0005071b sext.w a4,a0 + 3bc0108a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0108e: 584c lw a1,52(s0) + 3bc01090: 03846603 lwu a2,56(s0) + 3bc01094: 03c46503 lwu a0,60(s0) + 3bc01098: 86a6 mv a3,s1 + 3bc0109a: 04f71163 bne a4,a5,3bc010dc + 3bc0109e: b83ff0ef jal ra,3bc00c20 + 3bc010a2: 84aa mv s1,a0 + 3bc010a4: 02054563 bltz a0,3bc010ce + 3bc010a8: 5c0c lw a1,56(s0) + 3bc010aa: 03c46503 lwu a0,60(s0) + 3bc010ae: c87ff097 auipc ra,0xc87ff + 3bc010b2: ff2080e7 jalr -14(ra) # 44000a0 + 3bc010b6: 5810 lw a2,48(s0) + 3bc010b8: 0005059b sext.w a1,a0 + 3bc010bc: 02b60563 beq a2,a1,3bc010e6 + 3bc010c0: 00009517 auipc a0,0x9 + 3bc010c4: 35850513 addi a0,a0,856 # 3bc0a418 + 3bc010c8: a90ff0ef jal ra,3bc00358 + 3bc010cc: 54fd li s1,-1 + 3bc010ce: 60e2 ld ra,24(sp) + 3bc010d0: 6442 ld s0,16(sp) + 3bc010d2: 6902 ld s2,0(sp) + 3bc010d4: 8526 mv a0,s1 + 3bc010d6: 64a2 ld s1,8(sp) + 3bc010d8: 6105 addi sp,sp,32 + 3bc010da: 8082 ret + 3bc010dc: c87ff097 auipc ra,0xc87ff + 3bc010e0: f84080e7 jalr -124(ra) # 4400060 + 3bc010e4: bf7d j 3bc010a2 + 3bc010e6: 03846583 lwu a1,56(s0) + 3bc010ea: 03c46503 lwu a0,60(s0) + 3bc010ee: 3c0026b7 lui a3,0x3c002 + 3bc010f2: 4601 li a2,0 + 3bc010f4: 8a1ff0ef jal ra,3bc00994 + 3bc010f8: 84aa mv s1,a0 + 3bc010fa: 00055a63 bgez a0,3bc0110e + 3bc010fe: 85aa mv a1,a0 + 3bc01100: 00009517 auipc a0,0x9 + 3bc01104: 33850513 addi a0,a0,824 # 3bc0a438 + 3bc01108: a50ff0ef jal ra,3bc00358 + 3bc0110c: b7c9 j 3bc010ce + 3bc0110e: 03846583 lwu a1,56(s0) + 3bc01112: 03c46503 lwu a0,60(s0) + 3bc01116: 840ff0ef jal ra,3bc00156 + 3bc0111a: 00009517 auipc a0,0x9 + 3bc0111e: 33e50513 addi a0,a0,830 # 3bc0a458 + 3bc01122: a36ff0ef jal ra,3bc00358 + 3bc01126: 03c46783 lwu a5,60(s0) + 3bc0112a: 00f93023 sd a5,0(s2) + 3bc0112e: bf11 j 3bc01042 + +000000003bc01130 : + 3bc01130: 715d addi sp,sp,-80 + 3bc01132: f44e sd s3,40(sp) + 3bc01134: 0000c997 auipc s3,0xc + 3bc01138: 6cc98993 addi s3,s3,1740 # 3bc0d800 <__BSS_START__> + 3bc0113c: e85a sd s6,16(sp) + 3bc0113e: 8b2e mv s6,a1 + 3bc01140: 0449a583 lw a1,68(s3) + 3bc01144: ec56 sd s5,24(sp) + 3bc01146: 8aaa mv s5,a0 + 3bc01148: 00009517 auipc a0,0x9 + 3bc0114c: 31850513 addi a0,a0,792 # 3bc0a460 + 3bc01150: e486 sd ra,72(sp) + 3bc01152: e0a2 sd s0,64(sp) + 3bc01154: fc26 sd s1,56(sp) + 3bc01156: f84a sd s2,48(sp) + 3bc01158: f052 sd s4,32(sp) + 3bc0115a: 9feff0ef jal ra,3bc00358 + 3bc0115e: c87ff097 auipc ra,0xc87ff + 3bc01162: ec2080e7 jalr -318(ra) # 4400020 + 3bc01166: 67b5 lui a5,0xd + 3bc01168: 2501 sext.w a0,a0 + 3bc0116a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0116e: 0449a583 lw a1,68(s3) + 3bc01172: 86d6 mv a3,s5 + 3bc01174: 20000613 li a2,512 + 3bc01178: 02f51663 bne a0,a5,3bc011a4 + 3bc0117c: 0000d517 auipc a0,0xd + 3bc01180: 68450513 addi a0,a0,1668 # 3bc0e800 + 3bc01184: a9dff0ef jal ra,3bc00c20 + 3bc01188: 02055763 bgez a0,3bc011b6 + 3bc0118c: 59fd li s3,-1 + 3bc0118e: 60a6 ld ra,72(sp) + 3bc01190: 6406 ld s0,64(sp) + 3bc01192: 74e2 ld s1,56(sp) + 3bc01194: 7942 ld s2,48(sp) + 3bc01196: 7a02 ld s4,32(sp) + 3bc01198: 6ae2 ld s5,24(sp) + 3bc0119a: 6b42 ld s6,16(sp) + 3bc0119c: 854e mv a0,s3 + 3bc0119e: 79a2 ld s3,40(sp) + 3bc011a0: 6161 addi sp,sp,80 + 3bc011a2: 8082 ret + 3bc011a4: 0000d517 auipc a0,0xd + 3bc011a8: 65c50513 addi a0,a0,1628 # 3bc0e800 + 3bc011ac: c87ff097 auipc ra,0xc87ff + 3bc011b0: eb4080e7 jalr -332(ra) # 4400060 + 3bc011b4: bfd1 j 3bc01188 + 3bc011b6: 0000d417 auipc s0,0xd + 3bc011ba: 64a40413 addi s0,s0,1610 # 3bc0e800 + 3bc011be: 4458 lw a4,12(s0) + 3bc011c0: 6814 ld a3,16(s0) + 3bc011c2: 4410 lw a2,8(s0) + 3bc011c4: 1ff7049b addiw s1,a4,511 + 3bc011c8: 404c lw a1,4(s0) + 3bc011ca: e004f493 andi s1,s1,-512 + 3bc011ce: 2481 sext.w s1,s1 + 3bc011d0: 87a6 mv a5,s1 + 3bc011d2: 00009517 auipc a0,0x9 + 3bc011d6: 29e50513 addi a0,a0,670 # 3bc0a470 + 3bc011da: 97eff0ef jal ra,3bc00358 + 3bc011de: 4058 lw a4,4(s0) + 3bc011e0: 345a37b7 lui a5,0x345a3 + 3bc011e4: 34278793 addi a5,a5,834 # 345a3342 + 3bc011e8: 06f70363 beq a4,a5,3bc0124e + 3bc011ec: 414d37b7 lui a5,0x414d3 + 3bc011f0: 34278793 addi a5,a5,834 # 414d3342 <__BL2_END__+0x58bff32> + 3bc011f4: 06f70963 beq a4,a5,3bc01266 + 3bc011f8: 01043903 ld s2,16(s0) + 3bc011fc: 4a01 li s4,0 + 3bc011fe: c87ff097 auipc ra,0xc87ff + 3bc01202: e22080e7 jalr -478(ra) # 4400020 + 3bc01206: 67b5 lui a5,0xd + 3bc01208: 2501 sext.w a0,a0 + 3bc0120a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0120e: 0449a583 lw a1,68(s3) + 3bc01212: 86d6 mv a3,s5 + 3bc01214: 8626 mv a2,s1 + 3bc01216: 04f51a63 bne a0,a5,3bc0126a + 3bc0121a: 854a mv a0,s2 + 3bc0121c: a05ff0ef jal ra,3bc00c20 + 3bc01220: f60546e3 bltz a0,3bc0118c + 3bc01224: 444c lw a1,12(s0) + 3bc01226: 00c90993 addi s3,s2,12 + 3bc0122a: 854e mv a0,s3 + 3bc0122c: 35d1 addiw a1,a1,-12 + 3bc0122e: c87ff097 auipc ra,0xc87ff + 3bc01232: e72080e7 jalr -398(ra) # 44000a0 + 3bc01236: 4410 lw a2,8(s0) + 3bc01238: 0005059b sext.w a1,a0 + 3bc0123c: 02b60d63 beq a2,a1,3bc01276 + 3bc01240: 00009517 auipc a0,0x9 + 3bc01244: 26050513 addi a0,a0,608 # 3bc0a4a0 + 3bc01248: 910ff0ef jal ra,3bc00358 + 3bc0124c: b781 j 3bc0118c + 3bc0124e: 4a09 li s4,2 + 3bc01250: 85d2 mv a1,s4 + 3bc01252: 00009517 auipc a0,0x9 + 3bc01256: 23e50513 addi a0,a0,574 # 3bc0a490 + 3bc0125a: 00815937 lui s2,0x815 + 3bc0125e: 8faff0ef jal ra,3bc00358 + 3bc01262: 0922 slli s2,s2,0x8 + 3bc01264: bf69 j 3bc011fe + 3bc01266: 4a05 li s4,1 + 3bc01268: b7e5 j 3bc01250 + 3bc0126a: 854a mv a0,s2 + 3bc0126c: c87ff097 auipc ra,0xc87ff + 3bc01270: df4080e7 jalr -524(ra) # 4400060 + 3bc01274: b775 j 3bc01220 + 3bc01276: 444c lw a1,12(s0) + 3bc01278: 854e mv a0,s3 + 3bc0127a: 3c0026b7 lui a3,0x3c002 + 3bc0127e: 35d1 addiw a1,a1,-12 + 3bc01280: 4651 li a2,20 + 3bc01282: 7c05b58b extu a1,a1,31,0 + 3bc01286: f0eff0ef jal ra,3bc00994 + 3bc0128a: 89aa mv s3,a0 + 3bc0128c: 00055a63 bgez a0,3bc012a0 + 3bc01290: 85aa mv a1,a0 + 3bc01292: 00009517 auipc a0,0x9 + 3bc01296: 23650513 addi a0,a0,566 # 3bc0a4c8 + 3bc0129a: 8beff0ef jal ra,3bc00358 + 3bc0129e: bdc5 j 3bc0118e + 3bc012a0: 967ff0ef jal ra,3bc00c06 + 3bc012a4: 0000a997 auipc s3,0xa + 3bc012a8: 19c98993 addi s3,s3,412 # 3bc0b440 + 3bc012ac: 0009b783 ld a5,0(s3) + 3bc012b0: 00a79423 sh a0,8(a5) + 3bc012b4: bccff0ef jal ra,3bc00680 + 3bc012b8: 94fff0ef jal ra,3bc00c06 + 3bc012bc: 0009b783 ld a5,0(s3) + 3bc012c0: 00a79523 sh a0,10(a5) + 3bc012c4: 040a0363 beqz s4,3bc0130a + 3bc012c8: 6804 ld s1,16(s0) + 3bc012ca: 010007b7 lui a5,0x1000 + 3bc012ce: 02000613 li a2,32 + 3bc012d2: 85ca mv a1,s2 + 3bc012d4: 8526 mv a0,s1 + 3bc012d6: e43e sd a5,8(sp) + 3bc012d8: f94ff0ef jal ra,3bc00a6c + 3bc012dc: 00c46683 lwu a3,12(s0) + 3bc012e0: 02090613 addi a2,s2,32 # 815020 <__BSS_SIZE__+0x80f410> + 3bc012e4: 002c addi a1,sp,8 + 3bc012e6: 02048513 addi a0,s1,32 # ffffffffffff3020 <__BL2_END__+0xffffffffc43dfc10> + 3bc012ea: 8752 mv a4,s4 + 3bc012ec: 3d4000ef jal ra,3bc016c0 + 3bc012f0: 6622 ld a2,8(sp) + 3bc012f2: 85aa mv a1,a0 + 3bc012f4: 0006049b sext.w s1,a2 + 3bc012f8: 00055963 bgez a0,3bc0130a + 3bc012fc: 00009517 auipc a0,0x9 + 3bc01300: 1ec50513 addi a0,a0,492 # 3bc0a4e8 + 3bc01304: 854ff0ef jal ra,3bc00358 + 3bc01308: b551 j 3bc0118c + 3bc0130a: 6808 ld a0,16(s0) + 3bc0130c: 85a6 mv a1,s1 + 3bc0130e: e49fe0ef jal ra,3bc00156 + 3bc01312: 8f5ff0ef jal ra,3bc00c06 + 3bc01316: 0009b783 ld a5,0(s3) + 3bc0131a: 4981 li s3,0 + 3bc0131c: 00a79623 sh a0,12(a5) # 100000c <__BSS_SIZE__+0xffa3fc> + 3bc01320: 00009517 auipc a0,0x9 + 3bc01324: 1f850513 addi a0,a0,504 # 3bc0a518 + 3bc01328: 830ff0ef jal ra,3bc00358 + 3bc0132c: 681c ld a5,16(s0) + 3bc0132e: 02078793 addi a5,a5,32 + 3bc01332: 00fb3023 sd a5,0(s6) + 3bc01336: bda1 j 3bc0118e + +000000003bc01338 : + 3bc01338: 7179 addi sp,sp,-48 + 3bc0133a: ec26 sd s1,24(sp) + 3bc0133c: 74cd lui s1,0xffff3 + 3bc0133e: e84a sd s2,16(sp) + 3bc01340: f406 sd ra,40(sp) + 3bc01342: f022 sd s0,32(sp) + 3bc01344: e002 sd zero,0(sp) + 3bc01346: e402 sd zero,8(sp) + 3bc01348: 1604849b addiw s1,s1,352 + 3bc0134c: cd0ff0ef jal ra,3bc0081c + 3bc01350: 4915 li s2,5 + 3bc01352: 4401 li s0,0 + 3bc01354: c87ff097 auipc ra,0xc87ff + 3bc01358: d6c080e7 jalr -660(ra) # 44000c0 + 3bc0135c: 02a45563 bge s0,a0,3bc01386 + 3bc01360: 8522 mv a0,s0 + 3bc01362: b43ff0ef jal ra,3bc00ea4 + 3bc01366: 00055463 bgez a0,3bc0136e + 3bc0136a: 2405 addiw s0,s0,1 + 3bc0136c: b7e5 j 3bc01354 + 3bc0136e: 858a mv a1,sp + 3bc01370: 8522 mv a0,s0 + 3bc01372: c99ff0ef jal ra,3bc0100a + 3bc01376: fe054ae3 bltz a0,3bc0136a + 3bc0137a: 002c addi a1,sp,8 + 3bc0137c: 8522 mv a0,s0 + 3bc0137e: db3ff0ef jal ra,3bc01130 + 3bc01382: fe0544e3 bltz a0,3bc0136a + 3bc01386: c87ff097 auipc ra,0xc87ff + 3bc0138a: d3a080e7 jalr -710(ra) # 44000c0 + 3bc0138e: 02a45b63 bge s0,a0,3bc013c4 + 3bc01392: dbbfe0ef jal ra,3bc0014c + 3bc01396: f2dfe0ef jal ra,3bc002c2 + 3bc0139a: c9aff0ef jal ra,3bc00834 + 3bc0139e: 6582 ld a1,0(sp) + 3bc013a0: c5a5 beqz a1,3bc01408 + 3bc013a2: 00009517 auipc a0,0x9 + 3bc013a6: 1ae50513 addi a0,a0,430 # 3bc0a550 + 3bc013aa: faffe0ef jal ra,3bc00358 + 3bc013ae: 65a2 ld a1,8(sp) + 3bc013b0: 6502 ld a0,0(sp) + 3bc013b2: e69fe0ef jal ra,3bc0021a + 3bc013b6: 70a2 ld ra,40(sp) + 3bc013b8: 7402 ld s0,32(sp) + 3bc013ba: 64e2 ld s1,24(sp) + 3bc013bc: 6942 ld s2,16(sp) + 3bc013be: 4501 li a0,0 + 3bc013c0: 6145 addi sp,sp,48 + 3bc013c2: 8082 ret + 3bc013c4: c87ff097 auipc ra,0xc87ff + 3bc013c8: c5c080e7 jalr -932(ra) # 4400020 + 3bc013cc: 00a487bb addw a5,s1,a0 + 3bc013d0: 85a2 mv a1,s0 + 3bc013d2: 02f96363 bltu s2,a5,3bc013f8 + 3bc013d6: 4505 li a0,1 + 3bc013d8: 00f51533 sll a0,a0,a5 + 3bc013dc: 02957513 andi a0,a0,41 + 3bc013e0: cd01 beqz a0,3bc013f8 + 3bc013e2: 00009517 auipc a0,0x9 + 3bc013e6: e7e50513 addi a0,a0,-386 # 3bc0a260 + 3bc013ea: f6ffe0ef jal ra,3bc00358 + 3bc013ee: c87ff097 auipc ra,0xc87ff + 3bc013f2: c92080e7 jalr -878(ra) # 4400080 + 3bc013f6: bfb1 j 3bc01352 + 3bc013f8: 00009517 auipc a0,0x9 + 3bc013fc: 13850513 addi a0,a0,312 # 3bc0a530 + 3bc01400: f59fe0ef jal ra,3bc00358 + 3bc01404: 9b6ff0ef jal ra,3bc005ba + 3bc01408: 65a2 ld a1,8(sp) + 3bc0140a: 00009517 auipc a0,0x9 + 3bc0140e: 16650513 addi a0,a0,358 # 3bc0a570 + 3bc01412: f47fe0ef jal ra,3bc00358 + 3bc01416: 6522 ld a0,8(sp) + 3bc01418: e7bfe0ef jal ra,3bc00292 + 3bc0141c: bf69 j 3bc013b6 + +000000003bc0141e : + 3bc0141e: 1141 addi sp,sp,-16 + 3bc01420: e406 sd ra,8(sp) + 3bc01422: b200f737 lui a4,0xb200f + 3bc01426: e022 sd s0,0(sp) + 3bc01428: 030007b7 lui a5,0x3000 + 3bc0142c: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc01430: fd6ff0ef jal ra,3bc00c06 + 3bc01434: 0000a797 auipc a5,0xa + 3bc01438: 00c7b783 ld a5,12(a5) # 3bc0b440 + 3bc0143c: 00a79023 sh a0,0(a5) + 3bc01440: 00009617 auipc a2,0x9 + 3bc01444: bb060613 addi a2,a2,-1104 # 3bc09ff0 + 3bc01448: 00009597 auipc a1,0x9 + 3bc0144c: bc858593 addi a1,a1,-1080 # 3bc0a010 + 3bc01450: 00009517 auipc a0,0x9 + 3bc01454: 14050513 addi a0,a0,320 # 3bc0a590 + 3bc01458: f01fe0ef jal ra,3bc00358 + 3bc0145c: 0e000437 lui s0,0xe000 + 3bc01460: 400c lw a1,0(s0) + 3bc01462: 00009517 auipc a0,0x9 + 3bc01466: 13e50513 addi a0,a0,318 # 3bc0a5a0 + 3bc0146a: eeffe0ef jal ra,3bc00358 + 3bc0146e: 3c0027b7 lui a5,0x3c002 + 3bc01472: 47cc lw a1,12(a5) + 3bc01474: 0e07a603 lw a2,224(a5) # 3c0020e0 <__BL2_END__+0x3eecd0> + 3bc01478: 00009517 auipc a0,0x9 + 3bc0147c: 14050513 addi a0,a0,320 # 3bc0a5b8 + 3bc01480: ed9fe0ef jal ra,3bc00358 + 3bc01484: 4c0c lw a1,24(s0) + 3bc01486: 00009517 auipc a0,0x9 + 3bc0148a: 16a50513 addi a0,a0,362 # 3bc0a5f0 + 3bc0148e: 2581 sext.w a1,a1 + 3bc01490: ec9fe0ef jal ra,3bc00358 + 3bc01494: 9a2ff0ef jal ra,3bc00636 + 3bc01498: b9aff0ef jal ra,3bc00832 + 3bc0149c: bdcff0ef jal ra,3bc00878 + 3bc014a0: 93fff0ef jal ra,3bc00dde + 3bc014a4: e95ff0ef jal ra,3bc01338 + 3bc014a8: 00009517 auipc a0,0x9 + 3bc014ac: 16050513 addi a0,a0,352 # 3bc0a608 + 3bc014b0: ea9fe0ef jal ra,3bc00358 + 3bc014b4: a001 j 3bc014b4 + +000000003bc014b6 : + 3bc014b6: 8082 ret + +000000003bc014b8 : + 3bc014b8: 00012797 auipc a5,0x12 + 3bc014bc: e4078793 addi a5,a5,-448 # 3bc132f8 + 3bc014c0: 6388 ld a0,0(a5) + 3bc014c2: 00b50733 add a4,a0,a1 + 3bc014c6: e398 sd a4,0(a5) + 3bc014c8: 00012797 auipc a5,0x12 + 3bc014cc: e387b783 ld a5,-456(a5) # 3bc13300 + 3bc014d0: 97ba add a5,a5,a4 + 3bc014d2: 02f76363 bltu a4,a5,3bc014f8 + 3bc014d6: 1141 addi sp,sp,-16 + 3bc014d8: 862e mv a2,a1 + 3bc014da: 00009517 auipc a0,0x9 + 3bc014de: 14650513 addi a0,a0,326 # 3bc0a620 + 3bc014e2: 00009597 auipc a1,0x9 + 3bc014e6: 2a658593 addi a1,a1,678 # 3bc0a788 <__func__.0> + 3bc014ea: e406 sd ra,8(sp) + 3bc014ec: e6dfe0ef jal ra,3bc00358 + 3bc014f0: 60a2 ld ra,8(sp) + 3bc014f2: 4501 li a0,0 + 3bc014f4: 0141 addi sp,sp,16 + 3bc014f6: 8082 ret + 3bc014f8: 8082 ret + +000000003bc014fa : + 3bc014fa: 711d addi sp,sp,-96 + 3bc014fc: 00000797 auipc a5,0x0 + 3bc01500: fbc78793 addi a5,a5,-68 # 3bc014b8 + 3bc01504: f83e sd a5,48(sp) + 3bc01506: 00000797 auipc a5,0x0 + 3bc0150a: fb078793 addi a5,a5,-80 # 3bc014b6 + 3bc0150e: ec86 sd ra,88(sp) + 3bc01510: e8a2 sd s0,80(sp) + 3bc01512: e4a6 sd s1,72(sp) + 3bc01514: e0ca sd s2,64(sp) + 3bc01516: ec36 sd a3,24(sp) + 3bc01518: f402 sd zero,40(sp) + 3bc0151a: fc3e sd a5,56(sp) + 3bc0151c: d202 sw zero,36(sp) + 3bc0151e: e19d bnez a1,3bc01544 + 3bc01520: 00009597 auipc a1,0x9 + 3bc01524: 27058593 addi a1,a1,624 # 3bc0a790 <__func__.1> + 3bc01528: 00009517 auipc a0,0x9 + 3bc0152c: 11850513 addi a0,a0,280 # 3bc0a640 + 3bc01530: e29fe0ef jal ra,3bc00358 + 3bc01534: 5429 li s0,-22 + 3bc01536: 60e6 ld ra,88(sp) + 3bc01538: 8522 mv a0,s0 + 3bc0153a: 6446 ld s0,80(sp) + 3bc0153c: 64a6 ld s1,72(sp) + 3bc0153e: 6906 ld s2,64(sp) + 3bc01540: 6125 addi sp,sp,96 + 3bc01542: 8082 ret + 3bc01544: 20500793 li a5,517 + 3bc01548: 07da slli a5,a5,0x16 + 3bc0154a: 842a mv s0,a0 + 3bc0154c: 00012717 auipc a4,0x12 + 3bc01550: daf73623 sd a5,-596(a4) # 3bc132f8 + 3bc01554: 84ae mv s1,a1 + 3bc01556: 001007b7 lui a5,0x100 + 3bc0155a: 85aa mv a1,a0 + 3bc0155c: 00009517 auipc a0,0x9 + 3bc01560: 10450513 addi a0,a0,260 # 3bc0a660 + 3bc01564: 8932 mv s2,a2 + 3bc01566: 00012717 auipc a4,0x12 + 3bc0156a: d8f73d23 sd a5,-614(a4) # 3bc13300 + 3bc0156e: debfe0ef jal ra,3bc00358 + 3bc01572: 67e2 ld a5,24(sp) + 3bc01574: 4611 li a2,4 + 3bc01576: 00590593 addi a1,s2,5 + 3bc0157a: 17ed addi a5,a5,-5 + 3bc0157c: 1008 addi a0,sp,32 + 3bc0157e: ec3e sd a5,24(sp) + 3bc01580: cecff0ef jal ra,3bc00a6c + 3bc01584: 67e2 ld a5,24(sp) + 3bc01586: 02016583 lwu a1,32(sp) + 3bc0158a: 00009517 auipc a0,0x9 + 3bc0158e: 0ee50513 addi a0,a0,238 # 3bc0a678 + 3bc01592: 17e1 addi a5,a5,-8 + 3bc01594: f42e sd a1,40(sp) + 3bc01596: ec3e sd a5,24(sp) + 3bc01598: dc1fe0ef jal ra,3bc00358 + 3bc0159c: 181c addi a5,sp,48 + 3bc0159e: e03e sd a5,0(sp) + 3bc015a0: 8522 mv a0,s0 + 3bc015a2: 02410893 addi a7,sp,36 + 3bc015a6: 4805 li a6,1 + 3bc015a8: 4795 li a5,5 + 3bc015aa: 874a mv a4,s2 + 3bc015ac: 0834 addi a3,sp,24 + 3bc015ae: 00d90613 addi a2,s2,13 + 3bc015b2: 102c addi a1,sp,40 + 3bc015b4: 5f5040ef jal ra,3bc063a8 + 3bc015b8: 842a mv s0,a0 + 3bc015ba: c919 beqz a0,3bc015d0 + 3bc015bc: 5612 lw a2,36(sp) + 3bc015be: 85aa mv a1,a0 + 3bc015c0: 00009517 auipc a0,0x9 + 3bc015c4: 0d850513 addi a0,a0,216 # 3bc0a698 + 3bc015c8: d91fe0ef jal ra,3bc00358 + 3bc015cc: 5449 li s0,-14 + 3bc015ce: b7a5 j 3bc01536 + 3bc015d0: 75a2 ld a1,40(sp) + 3bc015d2: 00009517 auipc a0,0x9 + 3bc015d6: 0ee50513 addi a0,a0,238 # 3bc0a6c0 + 3bc015da: e08c sd a1,0(s1) + 3bc015dc: d7dfe0ef jal ra,3bc00358 + 3bc015e0: bf99 j 3bc01536 + +000000003bc015e2 : + 3bc015e2: 85aa mv a1,a0 + 3bc015e4: 4501 li a0,0 + 3bc015e6: bdc9 j 3bc014b8 + +000000003bc015e8 : + 3bc015e8: 02b50633 mul a2,a0,a1 + 3bc015ec: 1101 addi sp,sp,-32 + 3bc015ee: e822 sd s0,16(sp) + 3bc015f0: ec06 sd ra,24(sp) + 3bc015f2: 8532 mv a0,a2 + 3bc015f4: e432 sd a2,8(sp) + 3bc015f6: fedff0ef jal ra,3bc015e2 + 3bc015fa: 842a mv s0,a0 + 3bc015fc: c509 beqz a0,3bc01606 + 3bc015fe: 6622 ld a2,8(sp) + 3bc01600: 4581 li a1,0 + 3bc01602: c10ff0ef jal ra,3bc00a12 + 3bc01606: 60e2 ld ra,24(sp) + 3bc01608: 8522 mv a0,s0 + 3bc0160a: 6442 ld s0,16(sp) + 3bc0160c: 6105 addi sp,sp,32 + 3bc0160e: 8082 ret + +000000003bc01610 : + 3bc01610: 8082 ret + +000000003bc01612 : + 3bc01612: 20500793 li a5,517 + 3bc01616: 715d addi sp,sp,-80 + 3bc01618: 07da slli a5,a5,0x16 + 3bc0161a: e0a2 sd s0,64(sp) + 3bc0161c: f84a sd s2,48(sp) + 3bc0161e: 00012717 auipc a4,0x12 + 3bc01622: ccf73d23 sd a5,-806(a4) # 3bc132f8 + 3bc01626: 842a mv s0,a0 + 3bc01628: 001007b7 lui a5,0x100 + 3bc0162c: 892e mv s2,a1 + 3bc0162e: 85aa mv a1,a0 + 3bc01630: 00009517 auipc a0,0x9 + 3bc01634: 0a850513 addi a0,a0,168 # 3bc0a6d8 + 3bc01638: e486 sd ra,72(sp) + 3bc0163a: e436 sd a3,8(sp) + 3bc0163c: 00012717 auipc a4,0x12 + 3bc01640: ccf73223 sd a5,-828(a4) # 3bc13300 + 3bc01644: fc26 sd s1,56(sp) + 3bc01646: f44e sd s3,40(sp) + 3bc01648: 89b2 mv s3,a2 + 3bc0164a: d0ffe0ef jal ra,3bc00358 + 3bc0164e: 06400593 li a1,100 + 3bc01652: 0828 addi a0,sp,24 + 3bc01654: 38b050ef jal ra,3bc071de + 3bc01658: 84aa mv s1,a0 + 3bc0165a: 1b7050ef jal ra,3bc07010 + 3bc0165e: 2501 sext.w a0,a0 + 3bc01660: c105 beqz a0,3bc01680 + 3bc01662: 85a6 mv a1,s1 + 3bc01664: 00009517 auipc a0,0x9 + 3bc01668: 08c50513 addi a0,a0,140 # 3bc0a6f0 + 3bc0166c: cedfe0ef jal ra,3bc00358 + 3bc01670: 557d li a0,-1 + 3bc01672: 60a6 ld ra,72(sp) + 3bc01674: 6406 ld s0,64(sp) + 3bc01676: 74e2 ld s1,56(sp) + 3bc01678: 7942 ld s2,48(sp) + 3bc0167a: 79a2 ld s3,40(sp) + 3bc0167c: 6161 addi sp,sp,80 + 3bc0167e: 8082 ret + 3bc01680: 6562 ld a0,24(sp) + 3bc01682: 4781 li a5,0 + 3bc01684: 0038 addi a4,sp,8 + 3bc01686: 85a2 mv a1,s0 + 3bc01688: 86ce mv a3,s3 + 3bc0168a: 864a mv a2,s2 + 3bc0168c: 383050ef jal ra,3bc0720e + 3bc01690: 6622 ld a2,8(sp) + 3bc01692: 00093583 ld a1,0(s2) + 3bc01696: 86aa mv a3,a0 + 3bc01698: 842a mv s0,a0 + 3bc0169a: 00009517 auipc a0,0x9 + 3bc0169e: 06e50513 addi a0,a0,110 # 3bc0a708 + 3bc016a2: cb7fe0ef jal ra,3bc00358 + 3bc016a6: 8526 mv a0,s1 + 3bc016a8: 169050ef jal ra,3bc07010 + 3bc016ac: 0005079b sext.w a5,a0 + 3bc016b0: 4501 li a0,0 + 3bc016b2: d3e1 beqz a5,3bc01672 + 3bc016b4: 85a2 mv a1,s0 + 3bc016b6: 00009517 auipc a0,0x9 + 3bc016ba: 07a50513 addi a0,a0,122 # 3bc0a730 + 3bc016be: b77d j 3bc0166c + +000000003bc016c0 : + 3bc016c0: 7139 addi sp,sp,-64 + 3bc016c2: 87ba mv a5,a4 + 3bc016c4: ec4e sd s3,24(sp) + 3bc016c6: e852 sd s4,16(sp) + 3bc016c8: e456 sd s5,8(sp) + 3bc016ca: 89b2 mv s3,a2 + 3bc016cc: 8a36 mv s4,a3 + 3bc016ce: 8aba mv s5,a4 + 3bc016d0: 8736 mv a4,a3 + 3bc016d2: 86b2 mv a3,a2 + 3bc016d4: 6190 ld a2,0(a1) + 3bc016d6: f426 sd s1,40(sp) + 3bc016d8: f04a sd s2,32(sp) + 3bc016da: 84ae mv s1,a1 + 3bc016dc: 892a mv s2,a0 + 3bc016de: 85aa mv a1,a0 + 3bc016e0: 00009517 auipc a0,0x9 + 3bc016e4: 07050513 addi a0,a0,112 # 3bc0a750 + 3bc016e8: fc06 sd ra,56(sp) + 3bc016ea: f822 sd s0,48(sp) + 3bc016ec: c6dfe0ef jal ra,3bc00358 + 3bc016f0: 4785 li a5,1 + 3bc016f2: 02fa8f63 beq s5,a5,3bc01730 + 3bc016f6: 4789 li a5,2 + 3bc016f8: 5429 li s0,-22 + 3bc016fa: 00fa9963 bne s5,a5,3bc0170c + 3bc016fe: 86d2 mv a3,s4 + 3bc01700: 864e mv a2,s3 + 3bc01702: 85a6 mv a1,s1 + 3bc01704: 854a mv a0,s2 + 3bc01706: f0dff0ef jal ra,3bc01612 + 3bc0170a: 842a mv s0,a0 + 3bc0170c: 608c ld a1,0(s1) + 3bc0170e: 8622 mv a2,s0 + 3bc01710: 00009517 auipc a0,0x9 + 3bc01714: 06050513 addi a0,a0,96 # 3bc0a770 + 3bc01718: c41fe0ef jal ra,3bc00358 + 3bc0171c: 70e2 ld ra,56(sp) + 3bc0171e: 8522 mv a0,s0 + 3bc01720: 7442 ld s0,48(sp) + 3bc01722: 74a2 ld s1,40(sp) + 3bc01724: 7902 ld s2,32(sp) + 3bc01726: 69e2 ld s3,24(sp) + 3bc01728: 6a42 ld s4,16(sp) + 3bc0172a: 6aa2 ld s5,8(sp) + 3bc0172c: 6121 addi sp,sp,64 + 3bc0172e: 8082 ret + 3bc01730: 86d2 mv a3,s4 + 3bc01732: 864e mv a2,s3 + 3bc01734: 85a6 mv a1,s1 + 3bc01736: 854a mv a0,s2 + 3bc01738: dc3ff0ef jal ra,3bc014fa + 3bc0173c: b7f9 j 3bc0170a + +000000003bc0173e : + 3bc0173e: 4108 lw a0,0(a0) + 3bc01740: 2501 sext.w a0,a0 + 3bc01742: 8082 ret + +000000003bc01744 : + 3bc01744: c188 sw a0,0(a1) + 3bc01746: 8082 ret + +000000003bc01748 : + 3bc01748: 8082 ret + +000000003bc0174a : + 3bc0174a: 00012717 auipc a4,0x12 + 3bc0174e: cc170713 addi a4,a4,-831 # 3bc1340b + 3bc01752: 00074783 lbu a5,0(a4) + 3bc01756: eb89 bnez a5,3bc01768 + 3bc01758: 0000a517 auipc a0,0xa + 3bc0175c: d9053503 ld a0,-624(a0) # 3bc0b4e8 + 3bc01760: 2785 addiw a5,a5,1 + 3bc01762: 00f70023 sb a5,0(a4) + 3bc01766: 8082 ret + 3bc01768: 4685 li a3,1 + 3bc0176a: 00d79763 bne a5,a3,3bc01778 + 3bc0176e: 0000a517 auipc a0,0xa + 3bc01772: d8253503 ld a0,-638(a0) # 3bc0b4f0 + 3bc01776: b7ed j 3bc01760 + 3bc01778: 0000a517 auipc a0,0xa + 3bc0177c: d8053503 ld a0,-640(a0) # 3bc0b4f8 + 3bc01780: b7c5 j 3bc01760 + +000000003bc01782 : + 3bc01782: 8082 ret + +000000003bc01784 : + 3bc01784: 698c ld a1,16(a1) + 3bc01786: 00012517 auipc a0,0x12 + 3bc0178a: b8253503 ld a0,-1150(a0) # 3bc13308 + 3bc0178e: 1141 addi sp,sp,-16 + 3bc01790: 461d li a2,7 + 3bc01792: 0511 addi a0,a0,4 + 3bc01794: e406 sd ra,8(sp) + 3bc01796: ad6ff0ef jal ra,3bc00a6c + 3bc0179a: 60a2 ld ra,8(sp) + 3bc0179c: 0141 addi sp,sp,16 + 3bc0179e: 8082 ret + +000000003bc017a0 : + 3bc017a0: 00009597 auipc a1,0x9 + 3bc017a4: 40058593 addi a1,a1,1024 # 3bc0aba0 <__func__.5> + 3bc017a8: 00009517 auipc a0,0x9 + 3bc017ac: ff850513 addi a0,a0,-8 # 3bc0a7a0 <__func__.1+0x10> + 3bc017b0: ba9fe06f j 3bc00358 + +000000003bc017b4 : + 3bc017b4: 00012797 auipc a5,0x12 + 3bc017b8: c40788a3 sb zero,-943(a5) # 3bc13405 + 3bc017bc: 4785 li a5,1 + 3bc017be: 00012717 auipc a4,0x12 + 3bc017c2: c4f706a3 sb a5,-947(a4) # 3bc1340b + 3bc017c6: 00009597 auipc a1,0x9 + 3bc017ca: 3ca58593 addi a1,a1,970 # 3bc0ab90 <__func__.4> + 3bc017ce: 00012797 auipc a5,0x12 + 3bc017d2: c2078ca3 sb zero,-967(a5) # 3bc13407 + 3bc017d6: 00009517 auipc a0,0x9 + 3bc017da: fca50513 addi a0,a0,-54 # 3bc0a7a0 <__func__.1+0x10> + 3bc017de: b7bfe06f j 3bc00358 + +000000003bc017e2 : + 3bc017e2: 1141 addi sp,sp,-16 + 3bc017e4: 00009597 auipc a1,0x9 + 3bc017e8: 3a458593 addi a1,a1,932 # 3bc0ab88 <__func__.1> + 3bc017ec: 00009517 auipc a0,0x9 + 3bc017f0: fcc50513 addi a0,a0,-52 # 3bc0a7b8 <__func__.1+0x28> + 3bc017f4: e406 sd ra,8(sp) + 3bc017f6: b63fe0ef jal ra,3bc00358 + 3bc017fa: 60a2 ld ra,8(sp) + 3bc017fc: 0000a797 auipc a5,0xa + 3bc01800: dc07b223 sd zero,-572(a5) # 3bc0b5c0 + 3bc01804: 0141 addi sp,sp,16 + 3bc01806: 8082 ret + +000000003bc01808 : + 3bc01808: 1141 addi sp,sp,-16 + 3bc0180a: e022 sd s0,0(sp) + 3bc0180c: 00009597 auipc a1,0x9 + 3bc01810: 37458593 addi a1,a1,884 # 3bc0ab80 <__func__.0> + 3bc01814: 842a mv s0,a0 + 3bc01816: 00009517 auipc a0,0x9 + 3bc0181a: fa250513 addi a0,a0,-94 # 3bc0a7b8 <__func__.1+0x28> + 3bc0181e: e406 sd ra,8(sp) + 3bc01820: b39fe0ef jal ra,3bc00358 + 3bc01824: 0000a797 auipc a5,0xa + 3bc01828: d9c78793 addi a5,a5,-612 # 3bc0b5c0 + 3bc0182c: 6398 ld a4,0(a5) + 3bc0182e: cf01 beqz a4,3bc01846 + 3bc01830: 00009517 auipc a0,0x9 + 3bc01834: f9850513 addi a0,a0,-104 # 3bc0a7c8 <__func__.1+0x38> + 3bc01838: b21fe0ef jal ra,3bc00358 + 3bc0183c: 60a2 ld ra,8(sp) + 3bc0183e: 6402 ld s0,0(sp) + 3bc01840: 4501 li a0,0 + 3bc01842: 0141 addi sp,sp,16 + 3bc01844: 8082 ret + 3bc01846: e380 sd s0,0(a5) + 3bc01848: bfd5 j 3bc0183c + +000000003bc0184a : + 3bc0184a: 1101 addi sp,sp,-32 + 3bc0184c: e822 sd s0,16(sp) + 3bc0184e: 842a mv s0,a0 + 3bc01850: 852e mv a0,a1 + 3bc01852: e42e sd a1,8(sp) + 3bc01854: ec06 sd ra,24(sp) + 3bc01856: b04ff0ef jal ra,3bc00b5a + 3bc0185a: 0506 slli a0,a0,0x1 + 3bc0185c: 0025071b addiw a4,a0,2 + 3bc01860: 87a2 mv a5,s0 + 3bc01862: 1827d70b sbia a4,(a5),2,0 + 3bc01866: 470d li a4,3 + 3bc01868: 00e400a3 sb a4,1(s0) # e000001 + 3bc0186c: 06400713 li a4,100 + 3bc01870: 65a2 ld a1,8(sp) + 3bc01872: 00a77463 bgeu a4,a0,3bc0187a + 3bc01876: 06400513 li a0,100 + 3bc0187a: 4701 li a4,0 + 3bc0187c: 00171693 slli a3,a4,0x1 + 3bc01880: 00a6e663 bltu a3,a0,3bc0188c + 3bc01884: 60e2 ld ra,24(sp) + 3bc01886: 6442 ld s0,16(sp) + 3bc01888: 6105 addi sp,sp,32 + 3bc0188a: 8082 ret + 3bc0188c: 80e5c68b lrbu a3,a1,a4,0 + 3bc01890: 0705 addi a4,a4,1 + 3bc01892: 1827d68b sbia a3,(a5),2,0 + 3bc01896: fe078fa3 sb zero,-1(a5) + 3bc0189a: b7cd j 3bc0187c + +000000003bc0189c : + 3bc0189c: 5d98 lw a4,56(a1) + 3bc0189e: fc600793 li a5,-58 + 3bc018a2: 22f70663 beq a4,a5,3bc01ace + 3bc018a6: 699c ld a5,16(a1) + 3bc018a8: 7179 addi sp,sp,-48 + 3bc018aa: e052 sd s4,0(sp) + 3bc018ac: f406 sd ra,40(sp) + 3bc018ae: f022 sd s0,32(sp) + 3bc018b0: ec26 sd s1,24(sp) + 3bc018b2: e84a sd s2,16(sp) + 3bc018b4: e44e sd s3,8(sp) + 3bc018b6: 0037c403 lbu s0,3(a5) + 3bc018ba: 0047c703 lbu a4,4(a5) + 3bc018be: 0017c483 lbu s1,1(a5) + 3bc018c2: 1402 slli s0,s0,0x20 + 3bc018c4: 0762 slli a4,a4,0x18 + 3bc018c6: 943a add s0,s0,a4 + 3bc018c8: 0077c703 lbu a4,7(a5) + 3bc018cc: 0027c603 lbu a2,2(a5) + 3bc018d0: 0084949b slliw s1,s1,0x8 + 3bc018d4: 943a add s0,s0,a4 + 3bc018d6: 0057c703 lbu a4,5(a5) + 3bc018da: 9e25 addw a2,a2,s1 + 3bc018dc: 00012a17 auipc s4,0x12 + 3bc018e0: a4ca0a13 addi s4,s4,-1460 # 3bc13328 + 3bc018e4: 0742 slli a4,a4,0x10 + 3bc018e6: 943a add s0,s0,a4 + 3bc018e8: 0067c703 lbu a4,6(a5) + 3bc018ec: 000a3583 ld a1,0(s4) + 3bc018f0: 84b2 mv s1,a2 + 3bc018f2: 0722 slli a4,a4,0x8 + 3bc018f4: 943a add s0,s0,a4 + 3bc018f6: ee05 bnez a2,3bc0192e + 3bc018f8: e81d bnez s0,3bc0192e + 3bc018fa: 00012797 auipc a5,0x12 + 3bc018fe: a267b783 ld a5,-1498(a5) # 3bc13320 + 3bc01902: 00012717 auipc a4,0x12 + 3bc01906: ae672703 lw a4,-1306(a4) # 3bc133e8 + 3bc0190a: 00012517 auipc a0,0x12 + 3bc0190e: a3e53503 ld a0,-1474(a0) # 3bc13348 + 3bc01912: cf98 sw a4,24(a5) + 3bc01914: 7118 ld a4,32(a0) + 3bc01916: 7402 ld s0,32(sp) + 3bc01918: 70a2 ld ra,40(sp) + 3bc0191a: 64e2 ld s1,24(sp) + 3bc0191c: 6942 ld s2,16(sp) + 3bc0191e: 69a2 ld s3,8(sp) + 3bc01920: 6a02 ld s4,0(sp) + 3bc01922: 7318 ld a4,32(a4) + 3bc01924: eb8c sd a1,16(a5) + 3bc01926: cfcc sw a1,28(a5) + 3bc01928: 85be mv a1,a5 + 3bc0192a: 6145 addi sp,sp,48 + 3bc0192c: 8702 jr a4 + 3bc0192e: 0007c903 lbu s2,0(a5) + 3bc01932: 4501 li a0,0 + 3bc01934: 5d3020ef jal ra,3bc04706 + 3bc01938: 4789 li a5,2 + 3bc0193a: 89aa mv s3,a0 + 3bc0193c: 0ef90763 beq s2,a5,3bc01a2a + 3bc01940: 0327e363 bltu a5,s2,3bc01966 + 3bc01944: 0c091863 bnez s2,3bc01a14 + 3bc01948: 000a3583 ld a1,0(s4) + 3bc0194c: ff84861b addiw a2,s1,-8 + 3bc01950: 00012517 auipc a0,0x12 + 3bc01954: a0053503 ld a0,-1536(a0) # 3bc13350 + 3bc01958: 7c06360b extu a2,a2,31,0 + 3bc0195c: 05a1 addi a1,a1,8 + 3bc0195e: 9522 add a0,a0,s0 + 3bc01960: 90cff0ef jal ra,3bc00a6c + 3bc01964: a021 j 3bc0196c + 3bc01966: 478d li a5,3 + 3bc01968: 0ef90163 beq s2,a5,3bc01a4a + 3bc0196c: 0000a417 auipc s0,0xa + 3bc01970: d2440413 addi s0,s0,-732 # 3bc0b690 + 3bc01974: 6008 ld a0,0(s0) + 3bc01976: 4641 li a2,16 + 3bc01978: 4581 li a1,0 + 3bc0197a: 898ff0ef jal ra,3bc00a12 + 3bc0197e: 601c ld a5,0(s0) + 3bc01980: 00012617 auipc a2,0x12 + 3bc01984: a8460613 addi a2,a2,-1404 # 3bc13404 + 3bc01988: 00064703 lbu a4,0(a2) + 3bc0198c: 0089951b slliw a0,s3,0x8 + 3bc01990: 00012697 auipc a3,0x12 + 3bc01994: a506a683 lw a3,-1456(a3) # 3bc133e0 + 3bc01998: 0089d99b srliw s3,s3,0x8 + 3bc0199c: 01356533 or a0,a0,s3 + 3bc019a0: 00012497 auipc s1,0x12 + 3bc019a4: 97848493 addi s1,s1,-1672 # 3bc13318 + 3bc019a8: 9006968b revw a3,a3 + 3bc019ac: 00a79023 sh a0,0(a5) + 3bc019b0: 00a79123 sh a0,2(a5) + 3bc019b4: c794 sw a3,8(a5) + 3bc019b6: 6088 ld a0,0(s1) + 3bc019b8: 00012697 auipc a3,0x12 + 3bc019bc: a2c6a683 lw a3,-1492(a3) # 3bc133e4 + 3bc019c0: 00e783a3 sb a4,7(a5) + 3bc019c4: 9006968b revw a3,a3 + 3bc019c8: 2705 addiw a4,a4,1 + 3bc019ca: 01278323 sb s2,6(a5) + 3bc019ce: 00079223 sh zero,4(a5) + 3bc019d2: c7d4 sw a3,12(a5) + 3bc019d4: 00e60023 sb a4,0(a2) + 3bc019d8: 4581 li a1,0 + 3bc019da: 04000613 li a2,64 + 3bc019de: 834ff0ef jal ra,3bc00a12 + 3bc019e2: 608c ld a1,0(s1) + 3bc019e4: 47c1 li a5,16 + 3bc019e6: 00012517 auipc a0,0x12 + 3bc019ea: 95a53503 ld a0,-1702(a0) # 3bc13340 + 3bc019ee: cd9c sw a5,24(a1) + 3bc019f0: 601c ld a5,0(s0) + 3bc019f2: 7402 ld s0,32(sp) + 3bc019f4: 70a2 ld ra,40(sp) + 3bc019f6: e99c sd a5,16(a1) + 3bc019f8: cddc sw a5,28(a1) + 3bc019fa: 00000797 auipc a5,0x0 + 3bc019fe: 15c78793 addi a5,a5,348 # 3bc01b56 + 3bc01a02: f59c sd a5,40(a1) + 3bc01a04: 711c ld a5,32(a0) + 3bc01a06: 64e2 ld s1,24(sp) + 3bc01a08: 6942 ld s2,16(sp) + 3bc01a0a: 69a2 ld s3,8(sp) + 3bc01a0c: 6a02 ld s4,0(sp) + 3bc01a0e: 739c ld a5,32(a5) + 3bc01a10: 6145 addi sp,sp,48 + 3bc01a12: 8782 jr a5 + 3bc01a14: 0e0007b7 lui a5,0xe000 + 3bc01a18: 0791 addi a5,a5,4 + 3bc01a1a: f4f419e3 bne s0,a5,3bc0196c + 3bc01a1e: 000a3583 ld a1,0(s4) + 3bc01a22: 4611 li a2,4 + 3bc01a24: 8522 mv a0,s0 + 3bc01a26: 05a1 addi a1,a1,8 + 3bc01a28: bf25 j 3bc01960 + 3bc01a2a: 00009517 auipc a0,0x9 + 3bc01a2e: da650513 addi a0,a0,-602 # 3bc0a7d0 <__func__.1+0x40> + 3bc01a32: 927fe0ef jal ra,3bc00358 + 3bc01a36: 00012797 auipc a5,0x12 + 3bc01a3a: 9c078723 sb zero,-1586(a5) # 3bc13404 + 3bc01a3e: 4785 li a5,1 + 3bc01a40: 00012717 auipc a4,0x12 + 3bc01a44: 9cf70323 sb a5,-1594(a4) # 3bc13406 + 3bc01a48: b715 j 3bc0196c + 3bc01a4a: 000a3583 ld a1,0(s4) + 3bc01a4e: ff84861b addiw a2,s1,-8 + 3bc01a52: 4501 li a0,0 + 3bc01a54: 05a1 addi a1,a1,8 + 3bc01a56: 4b1020ef jal ra,3bc04706 + 3bc01a5a: 842a mv s0,a0 + 3bc01a5c: 00009517 auipc a0,0x9 + 3bc01a60: d8c50513 addi a0,a0,-628 # 3bc0a7e8 <__func__.1+0x58> + 3bc01a64: 8f5fe0ef jal ra,3bc00358 + 3bc01a68: 67b1 lui a5,0xc + 3bc01a6a: 2401 sext.w s0,s0 + 3bc01a6c: 28378793 addi a5,a5,643 # c283 <__BSS_SIZE__+0x6673> + 3bc01a70: 02f41a63 bne s0,a5,3bc01aa4 + 3bc01a74: 00012797 auipc a5,0x12 + 3bc01a78: 98078823 sb zero,-1648(a5) # 3bc13404 + 3bc01a7c: 00012797 auipc a5,0x12 + 3bc01a80: 98c78793 addi a5,a5,-1652 # 3bc13408 + 3bc01a84: 4705 li a4,1 + 3bc01a86: 00e78023 sb a4,0(a5) + 3bc01a8a: 0e000737 lui a4,0xe000 + 3bc01a8e: 00072223 sw zero,4(a4) # e000004 + 3bc01a92: 0007c583 lbu a1,0(a5) + 3bc01a96: 00009517 auipc a0,0x9 + 3bc01a9a: d5a50513 addi a0,a0,-678 # 3bc0a7f0 <__func__.1+0x60> + 3bc01a9e: 8bbfe0ef jal ra,3bc00358 + 3bc01aa2: b5e9 j 3bc0196c + 3bc01aa4: 00012797 auipc a5,0x12 + 3bc01aa8: 96078223 sb zero,-1692(a5) # 3bc13408 + 3bc01aac: 0e0007b7 lui a5,0xe000 + 3bc01ab0: 0007a223 sw zero,4(a5) # e000004 + 3bc01ab4: 00009517 auipc a0,0x9 + 3bc01ab8: d5450513 addi a0,a0,-684 # 3bc0a808 <__func__.1+0x78> + 3bc01abc: 89dfe0ef jal ra,3bc00358 + 3bc01ac0: 00009517 auipc a0,0x9 + 3bc01ac4: d6850513 addi a0,a0,-664 # 3bc0a828 <__func__.1+0x98> + 3bc01ac8: 891fe0ef jal ra,3bc00358 + 3bc01acc: b545 j 3bc0196c + 3bc01ace: 8082 ret + +000000003bc01ad0 : + 3bc01ad0: 7179 addi sp,sp,-48 + 3bc01ad2: f406 sd ra,40(sp) + 3bc01ad4: f022 sd s0,32(sp) + 3bc01ad6: ec26 sd s1,24(sp) + 3bc01ad8: e84a sd s2,16(sp) + 3bc01ada: e44e sd s3,8(sp) + 3bc01adc: 4789 li a5,2 + 3bc01ade: 02f50263 beq a0,a5,3bc01b02 + 3bc01ae2: 478d li a5,3 + 3bc01ae4: 54fd li s1,-1 + 3bc01ae6: 0000a417 auipc s0,0xa + 3bc01aea: a7240413 addi s0,s0,-1422 # 3bc0b558 + 3bc01aee: 00f50e63 beq a0,a5,3bc01b0a + 3bc01af2: 70a2 ld ra,40(sp) + 3bc01af4: 7402 ld s0,32(sp) + 3bc01af6: 6942 ld s2,16(sp) + 3bc01af8: 69a2 ld s3,8(sp) + 3bc01afa: 8526 mv a0,s1 + 3bc01afc: 64e2 ld s1,24(sp) + 3bc01afe: 6145 addi sp,sp,48 + 3bc01b00: 8082 ret + 3bc01b02: 0000a417 auipc s0,0xa + 3bc01b06: a0640413 addi s0,s0,-1530 # 3bc0b508 + 3bc01b0a: 892e mv s2,a1 + 3bc01b0c: 7884458b ldia a1,(s0),8,0 + 3bc01b10: 4481 li s1,0 + 3bc01b12: d1e5 beqz a1,3bc01af2 + 3bc01b14: 0005c983 lbu s3,0(a1) + 3bc01b18: 00990533 add a0,s2,s1 + 3bc01b1c: 864e mv a2,s3 + 3bc01b1e: f4ffe0ef jal ra,3bc00a6c + 3bc01b22: 7884458b ldia a1,(s0),8,0 + 3bc01b26: 009984bb addw s1,s3,s1 + 3bc01b2a: b7e5 j 3bc01b12 + +000000003bc01b2c : + 3bc01b2c: 5d98 lw a4,56(a1) + 3bc01b2e: 57ed li a5,-5 + 3bc01b30: 02f71263 bne a4,a5,3bc01b54 + 3bc01b34: 1141 addi sp,sp,-16 + 3bc01b36: 00009517 auipc a0,0x9 + 3bc01b3a: d0250513 addi a0,a0,-766 # 3bc0a838 <__func__.1+0xa8> + 3bc01b3e: e406 sd ra,8(sp) + 3bc01b40: 819fe0ef jal ra,3bc00358 + 3bc01b44: 60a2 ld ra,8(sp) + 3bc01b46: 4785 li a5,1 + 3bc01b48: 00012717 auipc a4,0x12 + 3bc01b4c: 8cf700a3 sb a5,-1855(a4) # 3bc13409 + 3bc01b50: 0141 addi sp,sp,16 + 3bc01b52: 8082 ret + 3bc01b54: 8082 ret + +000000003bc01b56 : + 3bc01b56: 5d98 lw a4,56(a1) + 3bc01b58: fc600793 li a5,-58 + 3bc01b5c: 04f70463 beq a4,a5,3bc01ba4 + 3bc01b60: 1141 addi sp,sp,-16 + 3bc01b62: e022 sd s0,0(sp) + 3bc01b64: 00011417 auipc s0,0x11 + 3bc01b68: 7c440413 addi s0,s0,1988 # 3bc13328 + 3bc01b6c: 6008 ld a0,0(s0) + 3bc01b6e: 4581 li a1,0 + 3bc01b70: 4621 li a2,8 + 3bc01b72: e406 sd ra,8(sp) + 3bc01b74: e9ffe0ef jal ra,3bc00a12 + 3bc01b78: 00011597 auipc a1,0x11 + 3bc01b7c: 7a85b583 ld a1,1960(a1) # 3bc13320 + 3bc01b80: 00012797 auipc a5,0x12 + 3bc01b84: 8687a783 lw a5,-1944(a5) # 3bc133e8 + 3bc01b88: cd9c sw a5,24(a1) + 3bc01b8a: 601c ld a5,0(s0) + 3bc01b8c: 00011517 auipc a0,0x11 + 3bc01b90: 7bc53503 ld a0,1980(a0) # 3bc13348 + 3bc01b94: 6402 ld s0,0(sp) + 3bc01b96: e99c sd a5,16(a1) + 3bc01b98: cddc sw a5,28(a1) + 3bc01b9a: 711c ld a5,32(a0) + 3bc01b9c: 60a2 ld ra,8(sp) + 3bc01b9e: 739c ld a5,32(a5) + 3bc01ba0: 0141 addi sp,sp,16 + 3bc01ba2: 8782 jr a5 + 3bc01ba4: 8082 ret + +000000003bc01ba6 : + 3bc01ba6: 7159 addi sp,sp,-112 + 3bc01ba8: e4ce sd s3,72(sp) + 3bc01baa: fc56 sd s5,56(sp) + 3bc01bac: 00011997 auipc s3,0x11 + 3bc01bb0: 78498993 addi s3,s3,1924 # 3bc13330 + 3bc01bb4: 00011a97 auipc s5,0x11 + 3bc01bb8: 784a8a93 addi s5,s5,1924 # 3bc13338 + 3bc01bbc: eca6 sd s1,88(sp) + 3bc01bbe: 000ab603 ld a2,0(s5) + 3bc01bc2: 84aa mv s1,a0 + 3bc01bc4: 0009b503 ld a0,0(s3) + 3bc01bc8: e0d2 sd s4,64(sp) + 3bc01bca: f486 sd ra,104(sp) + 3bc01bcc: f0a2 sd s0,96(sp) + 3bc01bce: e8ca sd s2,80(sp) + 3bc01bd0: f85a sd s6,48(sp) + 3bc01bd2: f45e sd s7,40(sp) + 3bc01bd4: f062 sd s8,32(sp) + 3bc01bd6: ec66 sd s9,24(sp) + 3bc01bd8: 0204a803 lw a6,32(s1) + 3bc01bdc: 0015c703 lbu a4,1(a1) + 3bc01be0: 0005c683 lbu a3,0(a1) + 3bc01be4: 0065da03 lhu s4,6(a1) + 3bc01be8: 0025d783 lhu a5,2(a1) + 3bc01bec: 00000597 auipc a1,0x0 + 3bc01bf0: f4058593 addi a1,a1,-192 # 3bc01b2c + 3bc01bf4: f60c sd a1,40(a2) + 3bc01bf6: ea08 sd a0,16(a2) + 3bc01bf8: ce48 sw a0,28(a2) + 3bc01bfa: 4589 li a1,2 + 3bc01bfc: 02b80763 beq a6,a1,3bc01c2a + 3bc01c00: 458d li a1,3 + 3bc01c02: 4905 li s2,1 + 3bc01c04: 06b81063 bne a6,a1,3bc01c64 + 3bc01c08: 0000ab17 auipc s6,0xa + 3bc01c0c: 8b8b0b13 addi s6,s6,-1864 # 3bc0b4c0 + 3bc01c10: 0000ab97 auipc s7,0xa + 3bc01c14: 8a0b8b93 addi s7,s7,-1888 # 3bc0b4b0 + 3bc01c18: 0606f593 andi a1,a3,96 + 3bc01c1c: c185 beqz a1,3bc01c3c + 3bc01c1e: 02000693 li a3,32 + 3bc01c22: 36d58463 beq a1,a3,3bc01f8a + 3bc01c26: 4901 li s2,0 + 3bc01c28: a835 j 3bc01c64 + 3bc01c2a: 0000ab17 auipc s6,0xa + 3bc01c2e: 876b0b13 addi s6,s6,-1930 # 3bc0b4a0 + 3bc01c32: 0000ab97 auipc s7,0xa + 3bc01c36: 85eb8b93 addi s7,s7,-1954 # 3bc0b490 + 3bc01c3a: bff9 j 3bc01c18 + 3bc01c3c: 4621 li a2,8 + 3bc01c3e: 32c70d63 beq a4,a2,3bc01f78 + 3bc01c42: 4625 li a2,9 + 3bc01c44: 24c70a63 beq a4,a2,3bc01e98 + 3bc01c48: 4619 li a2,6 + 3bc01c4a: 597d li s2,-1 + 3bc01c4c: 00c71c63 bne a4,a2,3bc01c64 + 3bc01c50: 8abd andi a3,a3,15 + 3bc01c52: 4705 li a4,1 + 3bc01c54: 02e69663 bne a3,a4,3bc01c80 + 3bc01c58: 00009517 auipc a0,0x9 + 3bc01c5c: bf850513 addi a0,a0,-1032 # 3bc0a850 <__func__.1+0xc0> + 3bc01c60: ef8fe0ef jal ra,3bc00358 + 3bc01c64: 70a6 ld ra,104(sp) + 3bc01c66: 7406 ld s0,96(sp) + 3bc01c68: 64e6 ld s1,88(sp) + 3bc01c6a: 69a6 ld s3,72(sp) + 3bc01c6c: 6a06 ld s4,64(sp) + 3bc01c6e: 7ae2 ld s5,56(sp) + 3bc01c70: 7b42 ld s6,48(sp) + 3bc01c72: 7ba2 ld s7,40(sp) + 3bc01c74: 7c02 ld s8,32(sp) + 3bc01c76: 6ce2 ld s9,24(sp) + 3bc01c78: 854a mv a0,s2 + 3bc01c7a: 6946 ld s2,80(sp) + 3bc01c7c: 6165 addi sp,sp,112 + 3bc01c7e: 8082 ret + 3bc01c80: f2dd bnez a3,3bc01c26 + 3bc01c82: 0087d71b srliw a4,a5,0x8 + 3bc01c86: 377d addiw a4,a4,-1 + 3bc01c88: 3c07360b extu a2,a4,15,0 + 3bc01c8c: 46b9 li a3,14 + 3bc01c8e: 0ac6e663 bltu a3,a2,3bc01d3a + 3bc01c92: 00009697 auipc a3,0x9 + 3bc01c96: c9268693 addi a3,a3,-878 # 3bc0a924 <__func__.1+0x194> + 3bc01c9a: 44c6c70b lrw a4,a3,a2,2 + 3bc01c9e: 9736 add a4,a4,a3 + 3bc01ca0: 8702 jr a4 + 3bc01ca2: 0000a417 auipc s0,0xa + 3bc01ca6: a5640413 addi s0,s0,-1450 # 3bc0b6f8 + 3bc01caa: 00045583 lhu a1,0(s0) + 3bc01cae: cd89 beqz a1,3bc01cc8 + 3bc01cb0: 00009517 auipc a0,0x9 + 3bc01cb4: bd050513 addi a0,a0,-1072 # 3bc0a880 <__func__.1+0xf0> + 3bc01cb8: ea0fe0ef jal ra,3bc00358 + 3bc01cbc: 00045783 lhu a5,0(s0) + 3bc01cc0: 0000a717 auipc a4,0xa + 3bc01cc4: 8ef71823 sh a5,-1808(a4) # 3bc0b5b0 + 3bc01cc8: 0009b503 ld a0,0(s3) + 3bc01ccc: 4649 li a2,18 + 3bc01cce: 0000a597 auipc a1,0xa + 3bc01cd2: 8da58593 addi a1,a1,-1830 # 3bc0b5a8 + 3bc01cd6: df7fe0ef jal ra,3bc00acc + 3bc01cda: 4449 li s0,18 + 3bc01cdc: 4905 li s2,1 + 3bc01cde: 6c88 ld a0,24(s1) + 3bc01ce0: 014427b3 slt a5,s0,s4 + 3bc01ce4: 40fa140b mveqz s0,s4,a5 + 3bc01ce8: 711c ld a5,32(a0) + 3bc01cea: 000ab583 ld a1,0(s5) + 3bc01cee: 739c ld a5,32(a5) + 3bc01cf0: cd80 sw s0,24(a1) + 3bc01cf2: 9782 jalr a5 + 3bc01cf4: f20909e3 beqz s2,3bc01c26 + 3bc01cf8: c00017b7 lui a5,0xc0001 + 3bc01cfc: 03000737 lui a4,0x3000 + 3bc01d00: 0795 addi a5,a5,5 + 3bc01d02: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc01d06: b705 j 3bc01c26 + 3bc01d08: 0ff7f793 andi a5,a5,255 + 3bc01d0c: 4709 li a4,2 + 3bc01d0e: 02e78863 beq a5,a4,3bc01d3e + 3bc01d12: 02f76163 bltu a4,a5,3bc01d34 + 3bc01d16: 00011597 auipc a1,0x11 + 3bc01d1a: 69258593 addi a1,a1,1682 # 3bc133a8 + 3bc01d1e: e789 bnez a5,3bc01d28 + 3bc01d20: 0000a597 auipc a1,0xa + 3bc01d24: 95858593 addi a1,a1,-1704 # 3bc0b678 + 3bc01d28: 0005c403 lbu s0,0(a1) + 3bc01d2c: 8622 mv a2,s0 + 3bc01d2e: 0009b503 ld a0,0(s3) + 3bc01d32: a215 j 3bc01e56 + 3bc01d34: 470d li a4,3 + 3bc01d36: 00e78963 beq a5,a4,3bc01d48 + 3bc01d3a: 597d li s2,-1 + 3bc01d3c: b725 j 3bc01c64 + 3bc01d3e: 00011597 auipc a1,0x11 + 3bc01d42: 61a58593 addi a1,a1,1562 # 3bc13358 + 3bc01d46: b7cd j 3bc01d28 + 3bc01d48: ea1fe0ef jal ra,3bc00be8 + 3bc01d4c: 00009597 auipc a1,0x9 + 3bc01d50: b9c58593 addi a1,a1,-1124 # 3bc0a8e8 <__func__.1+0x158> + 3bc01d54: e55d bnez a0,3bc01e02 + 3bc01d56: 00011b17 auipc s6,0x11 + 3bc01d5a: 6b4b0b13 addi s6,s6,1716 # 3bc1340a + 3bc01d5e: 000b4903 lbu s2,0(s6) + 3bc01d62: 08091263 bnez s2,3bc01de6 + 3bc01d66: 4641 li a2,16 + 3bc01d68: 4581 li a1,0 + 3bc01d6a: 00011517 auipc a0,0x11 + 3bc01d6e: 60e50513 addi a0,a0,1550 # 3bc13378 + 3bc01d72: 03050bb7 lui s7,0x3050 + 3bc01d76: c9dfe0ef jal ra,3bc00a12 + 3bc01d7a: 4401 li s0,0 + 3bc01d7c: 104b8b93 addi s7,s7,260 # 3050104 <__BSS_SIZE__+0x304a4f4> + 3bc01d80: 00009c97 auipc s9,0x9 + 3bc01d84: b10c8c93 addi s9,s9,-1264 # 3bc0a890 <__func__.1+0x100> + 3bc01d88: 4c11 li s8,4 + 3bc01d8a: 448bc60b lrw a2,s7,s0,2 + 3bc01d8e: 0004059b sext.w a1,s0 + 3bc01d92: 8566 mv a0,s9 + 3bc01d94: 2601 sext.w a2,a2 + 3bc01d96: 4481560b srw a2,sp,s0,2 + 3bc01d9a: dbefe0ef jal ra,3bc00358 + 3bc01d9e: 4481478b lrw a5,sp,s0,2 + 3bc01da2: c391 beqz a5,3bc01da6 + 3bc01da4: 4905 li s2,1 + 3bc01da6: 0405 addi s0,s0,1 + 3bc01da8: ff8411e3 bne s0,s8,3bc01d8a + 3bc01dac: 06090663 beqz s2,3bc01e18 + 3bc01db0: 858a mv a1,sp + 3bc01db2: 4641 li a2,16 + 3bc01db4: 4501 li a0,0 + 3bc01db6: 151020ef jal ra,3bc04706 + 3bc01dba: 0005041b sext.w s0,a0 + 3bc01dbe: 85a2 mv a1,s0 + 3bc01dc0: 00009517 auipc a0,0x9 + 3bc01dc4: ae850513 addi a0,a0,-1304 # 3bc0a8a8 <__func__.1+0x118> + 3bc01dc8: d90fe0ef jal ra,3bc00358 + 3bc01dcc: 4681 li a3,0 + 3bc01dce: 4641 li a2,16 + 3bc01dd0: 7c04358b extu a1,s0,31,0 + 3bc01dd4: 00011517 auipc a0,0x11 + 3bc01dd8: 5a450513 addi a0,a0,1444 # 3bc13378 + 3bc01ddc: bbdfe0ef jal ra,3bc00998 + 3bc01de0: 4785 li a5,1 + 3bc01de2: 00fb0023 sb a5,0(s6) + 3bc01de6: 00011597 auipc a1,0x11 + 3bc01dea: 59258593 addi a1,a1,1426 # 3bc13378 + 3bc01dee: 00009517 auipc a0,0x9 + 3bc01df2: aea50513 addi a0,a0,-1302 # 3bc0a8d8 <__func__.1+0x148> + 3bc01df6: d62fe0ef jal ra,3bc00358 + 3bc01dfa: 00011597 auipc a1,0x11 + 3bc01dfe: 57e58593 addi a1,a1,1406 # 3bc13378 + 3bc01e02: 00011517 auipc a0,0x11 + 3bc01e06: 58650513 addi a0,a0,1414 # 3bc13388 + 3bc01e0a: a41ff0ef jal ra,3bc0184a + 3bc01e0e: 00011597 auipc a1,0x11 + 3bc01e12: 57a58593 addi a1,a1,1402 # 3bc13388 + 3bc01e16: bf09 j 3bc01d28 + 3bc01e18: 00011517 auipc a0,0x11 + 3bc01e1c: 5d452503 lw a0,1492(a0) # 3bc133ec + 3bc01e20: bc2fe0ef jal ra,3bc001e2 + 3bc01e24: 0005041b sext.w s0,a0 + 3bc01e28: 85a2 mv a1,s0 + 3bc01e2a: 00009517 auipc a0,0x9 + 3bc01e2e: a9650513 addi a0,a0,-1386 # 3bc0a8c0 <__func__.1+0x130> + 3bc01e32: bf59 j 3bc01dc8 + 3bc01e34: 00009597 auipc a1,0x9 + 3bc01e38: 69c58593 addi a1,a1,1692 # 3bc0b4d0 + 3bc01e3c: 4615 li a2,5 + 3bc01e3e: 0025d403 lhu s0,2(a1) + 3bc01e42: c8bfe0ef jal ra,3bc00acc + 3bc01e46: 0009b503 ld a0,0(s3) + 3bc01e4a: 461d li a2,7 + 3bc01e4c: 00009597 auipc a1,0x9 + 3bc01e50: 69458593 addi a1,a1,1684 # 3bc0b4e0 + 3bc01e54: 0515 addi a0,a0,5 + 3bc01e56: c77fe0ef jal ra,3bc00acc + 3bc01e5a: dc0406e3 beqz s0,3bc01c26 + 3bc01e5e: a809 j 3bc01e70 + 3bc01e60: 4629 li a2,10 + 3bc01e62: 0000a597 auipc a1,0xa + 3bc01e66: 81e58593 addi a1,a1,-2018 # 3bc0b680 + 3bc01e6a: c63fe0ef jal ra,3bc00acc + 3bc01e6e: 4429 li s0,10 + 3bc01e70: 4901 li s2,0 + 3bc01e72: b5b5 j 3bc01cde + 3bc01e74: 00950593 addi a1,a0,9 + 3bc01e78: 8542 mv a0,a6 + 3bc01e7a: c57ff0ef jal ra,3bc01ad0 + 3bc01e7e: 2525 addiw a0,a0,9 + 3bc01e80: 3c05350b extu a0,a0,15,0 + 3bc01e84: 00009597 auipc a1,0x9 + 3bc01e88: 5c458593 addi a1,a1,1476 # 3bc0b448 + 3bc01e8c: 0005041b sext.w s0,a0 + 3bc01e90: 00a59123 sh a0,2(a1) + 3bc01e94: 4625 li a2,9 + 3bc01e96: bd61 j 3bc01d2e + 3bc01e98: 4705 li a4,1 + 3bc01e9a: 597d li s2,-1 + 3bc01e9c: dcf764e3 bltu a4,a5,3bc01c64 + 3bc01ea0: e385 bnez a5,3bc01ec0 + 3bc01ea2: 00011797 auipc a5,0x11 + 3bc01ea6: 560782a3 sb zero,1381(a5) # 3bc13407 + 3bc01eaa: 6080 ld s0,0(s1) + 3bc01eac: d6848de3 beq s1,s0,3bc01c26 + 3bc01eb0: 6c1c ld a5,24(s0) + 3bc01eb2: c789 beqz a5,3bc01ebc + 3bc01eb4: 701c ld a5,32(s0) + 3bc01eb6: 8522 mv a0,s0 + 3bc01eb8: 679c ld a5,8(a5) + 3bc01eba: 9782 jalr a5 + 3bc01ebc: 6000 ld s0,0(s0) + 3bc01ebe: b7fd j 3bc01eac + 3bc01ec0: 00011797 auipc a5,0x11 + 3bc01ec4: 54778793 addi a5,a5,1351 # 3bc13407 + 3bc01ec8: 0007c683 lbu a3,0(a5) + 3bc01ecc: d4e68de3 beq a3,a4,3bc01c26 + 3bc01ed0: 00e78023 sb a4,0(a5) + 3bc01ed4: 6080 ld s0,0(s1) + 3bc01ed6: 00009917 auipc s2,0x9 + 3bc01eda: a2290913 addi s2,s2,-1502 # 3bc0a8f8 <__func__.1+0x168> + 3bc01ede: 00848d63 beq s1,s0,3bc01ef8 + 3bc01ee2: 6c08 ld a0,24(s0) + 3bc01ee4: c141 beqz a0,3bc01f64 + 3bc01ee6: 85ca mv a1,s2 + 3bc01ee8: c57fe0ef jal ra,3bc00b3e + 3bc01eec: ed25 bnez a0,3bc01f64 + 3bc01eee: 701c ld a5,32(s0) + 3bc01ef0: 85de mv a1,s7 + 3bc01ef2: 8522 mv a0,s0 + 3bc01ef4: 639c ld a5,0(a5) + 3bc01ef6: 9782 jalr a5 + 3bc01ef8: 6080 ld s0,0(s1) + 3bc01efa: 00009917 auipc s2,0x9 + 3bc01efe: a0e90913 addi s2,s2,-1522 # 3bc0a908 <__func__.1+0x178> + 3bc01f02: 00848d63 beq s1,s0,3bc01f1c + 3bc01f06: 6c08 ld a0,24(s0) + 3bc01f08: c125 beqz a0,3bc01f68 + 3bc01f0a: 85ca mv a1,s2 + 3bc01f0c: c33fe0ef jal ra,3bc00b3e + 3bc01f10: ed21 bnez a0,3bc01f68 + 3bc01f12: 701c ld a5,32(s0) + 3bc01f14: 85da mv a1,s6 + 3bc01f16: 8522 mv a0,s0 + 3bc01f18: 639c ld a5,0(a5) + 3bc01f1a: 9782 jalr a5 + 3bc01f1c: 6080 ld s0,0(s1) + 3bc01f1e: 00009917 auipc s2,0x9 + 3bc01f22: 9fa90913 addi s2,s2,-1542 # 3bc0a918 <__func__.1+0x188> + 3bc01f26: 02848063 beq s1,s0,3bc01f46 + 3bc01f2a: 6c08 ld a0,24(s0) + 3bc01f2c: c121 beqz a0,3bc01f6c + 3bc01f2e: 85ca mv a1,s2 + 3bc01f30: c0ffe0ef jal ra,3bc00b3e + 3bc01f34: ed05 bnez a0,3bc01f6c + 3bc01f36: 701c ld a5,32(s0) + 3bc01f38: 00009597 auipc a1,0x9 + 3bc01f3c: 56058593 addi a1,a1,1376 # 3bc0b498 + 3bc01f40: 8522 mv a0,s0 + 3bc01f42: 639c ld a5,0(a5) + 3bc01f44: 9782 jalr a5 + 3bc01f46: 689c ld a5,16(s1) + 3bc01f48: 00009717 auipc a4,0x9 + 3bc01f4c: 50774703 lbu a4,1287(a4) # 3bc0b44f + 3bc01f50: 04077713 andi a4,a4,64 + 3bc01f54: 6b9c ld a5,16(a5) + 3bc01f56: cf09 beqz a4,3bc01f70 + 3bc01f58: 4585 li a1,1 + 3bc01f5a: cc0786e3 beqz a5,3bc01c26 + 3bc01f5e: 8526 mv a0,s1 + 3bc01f60: 9782 jalr a5 + 3bc01f62: b1d1 j 3bc01c26 + 3bc01f64: 6000 ld s0,0(s0) + 3bc01f66: bfa5 j 3bc01ede + 3bc01f68: 6000 ld s0,0(s0) + 3bc01f6a: bf61 j 3bc01f02 + 3bc01f6c: 6000 ld s0,0(s0) + 3bc01f6e: bf65 j 3bc01f26 + 3bc01f70: ca078be3 beqz a5,3bc01c26 + 3bc01f74: 4581 li a1,0 + 3bc01f76: b7e5 j 3bc01f5e + 3bc01f78: 4605 li a2,1 + 3bc01f7a: 00011597 auipc a1,0x11 + 3bc01f7e: 48d58593 addi a1,a1,1165 # 3bc13407 + 3bc01f82: b4bfe0ef jal ra,3bc00acc + 3bc01f86: 4405 li s0,1 + 3bc01f88: b5e5 j 3bc01e70 + 3bc01f8a: 02100693 li a3,33 + 3bc01f8e: 04d70263 beq a4,a3,3bc01fd2 + 3bc01f92: 02200693 li a3,34 + 3bc01f96: 02d70263 beq a4,a3,3bc01fba + 3bc01f9a: 4901 li s2,0 + 3bc01f9c: ccb714e3 bne a4,a1,3bc01c64 + 3bc01fa0: fffff797 auipc a5,0xfffff + 3bc01fa4: 7e478793 addi a5,a5,2020 # 3bc01784 + 3bc01fa8: 000a041b sext.w s0,s4 + 3bc01fac: f61c sd a5,40(a2) + 3bc01fae: 4785 li a5,1 + 3bc01fb0: 00011717 auipc a4,0x11 + 3bc01fb4: 44f70aa3 sb a5,1109(a4) # 3bc13405 + 3bc01fb8: b54d j 3bc01e5a + 3bc01fba: 00011717 auipc a4,0x11 + 3bc01fbe: 34e73703 ld a4,846(a4) # 3bc13308 + 3bc01fc2: 00f71623 sh a5,12(a4) + 3bc01fc6: 4785 li a5,1 + 3bc01fc8: 00011717 auipc a4,0x11 + 3bc01fcc: 42f70ea3 sb a5,1085(a4) # 3bc13405 + 3bc01fd0: b999 j 3bc01c26 + 3bc01fd2: 00011597 auipc a1,0x11 + 3bc01fd6: 3365b583 ld a1,822(a1) # 3bc13308 + 3bc01fda: 8652 mv a2,s4 + 3bc01fdc: 0591 addi a1,a1,4 + 3bc01fde: 000a041b sext.w s0,s4 + 3bc01fe2: aebfe0ef jal ra,3bc00acc + 3bc01fe6: b7e1 j 3bc01fae + +000000003bc01fe8 : + 3bc01fe8: 8082 ret + +000000003bc01fea : + 3bc01fea: 00011797 auipc a5,0x11 + 3bc01fee: 89678793 addi a5,a5,-1898 # 3bc12880 + 3bc01ff2: 00009717 auipc a4,0x9 + 3bc01ff6: 4ef73323 sd a5,1254(a4) # 3bc0b4d8 + 3bc01ffa: 00011797 auipc a5,0x11 + 3bc01ffe: c0678793 addi a5,a5,-1018 # 3bc12c00 + 3bc02002: 00009717 auipc a4,0x9 + 3bc02006: 4ef73f23 sd a5,1278(a4) # 3bc0b500 + 3bc0200a: 00011797 auipc a5,0x11 + 3bc0200e: a7678793 addi a5,a5,-1418 # 3bc12a80 + 3bc02012: 00009717 auipc a4,0x9 + 3bc02016: 4cf73b23 sd a5,1238(a4) # 3bc0b4e8 + 3bc0201a: 00011797 auipc a5,0x11 + 3bc0201e: ae678793 addi a5,a5,-1306 # 3bc12b00 + 3bc02022: 00009717 auipc a4,0x9 + 3bc02026: 4cf73723 sd a5,1230(a4) # 3bc0b4f0 + 3bc0202a: 00011797 auipc a5,0x11 + 3bc0202e: b5678793 addi a5,a5,-1194 # 3bc12b80 + 3bc02032: 00009717 auipc a4,0x9 + 3bc02036: 4cf73323 sd a5,1222(a4) # 3bc0b4f8 + 3bc0203a: 00011797 auipc a5,0x11 + 3bc0203e: dc678793 addi a5,a5,-570 # 3bc12e00 + 3bc02042: 00009717 auipc a4,0x9 + 3bc02046: 5cf73723 sd a5,1486(a4) # 3bc0b610 + 3bc0204a: 00011797 auipc a5,0x11 + 3bc0204e: 23678793 addi a5,a5,566 # 3bc13280 + 3bc02052: 00009717 auipc a4,0x9 + 3bc02056: 62f73f23 sd a5,1598(a4) # 3bc0b690 + 3bc0205a: 00010797 auipc a5,0x10 + 3bc0205e: 7a678793 addi a5,a5,1958 # 3bc12800 + 3bc02062: 00009717 auipc a4,0x9 + 3bc02066: 3ef73b23 sd a5,1014(a4) # 3bc0b458 + 3bc0206a: 00011797 auipc a5,0x11 + 3bc0206e: 25678793 addi a5,a5,598 # 3bc132c0 + 3bc02072: 00009717 auipc a4,0x9 + 3bc02076: 62f73323 sd a5,1574(a4) # 3bc0b698 + 3bc0207a: 00011797 auipc a5,0x11 + 3bc0207e: e0678793 addi a5,a5,-506 # 3bc12e80 + 3bc02082: 00009717 auipc a4,0x9 + 3bc02086: 5ef73723 sd a5,1518(a4) # 3bc0b670 + 3bc0208a: 8082 ret + +000000003bc0208c : + 3bc0208c: 1141 addi sp,sp,-16 + 3bc0208e: 00009597 auipc a1,0x9 + 3bc02092: 44a5b583 ld a1,1098(a1) # 3bc0b4d8 + 3bc02096: 00009517 auipc a0,0x9 + 3bc0209a: 8ca50513 addi a0,a0,-1846 # 3bc0a960 <__func__.1+0x1d0> + 3bc0209e: e406 sd ra,8(sp) + 3bc020a0: ab8fe0ef jal ra,3bc00358 + 3bc020a4: 00009597 auipc a1,0x9 + 3bc020a8: 45c5b583 ld a1,1116(a1) # 3bc0b500 + 3bc020ac: 00009517 auipc a0,0x9 + 3bc020b0: 8cc50513 addi a0,a0,-1844 # 3bc0a978 <__func__.1+0x1e8> + 3bc020b4: aa4fe0ef jal ra,3bc00358 + 3bc020b8: 00009597 auipc a1,0x9 + 3bc020bc: 4305b583 ld a1,1072(a1) # 3bc0b4e8 + 3bc020c0: 00009517 auipc a0,0x9 + 3bc020c4: 8d050513 addi a0,a0,-1840 # 3bc0a990 <__func__.1+0x200> + 3bc020c8: a90fe0ef jal ra,3bc00358 + 3bc020cc: 00009597 auipc a1,0x9 + 3bc020d0: 4245b583 ld a1,1060(a1) # 3bc0b4f0 + 3bc020d4: 00009517 auipc a0,0x9 + 3bc020d8: 8d450513 addi a0,a0,-1836 # 3bc0a9a8 <__func__.1+0x218> + 3bc020dc: a7cfe0ef jal ra,3bc00358 + 3bc020e0: 00009597 auipc a1,0x9 + 3bc020e4: 4185b583 ld a1,1048(a1) # 3bc0b4f8 + 3bc020e8: 00009517 auipc a0,0x9 + 3bc020ec: 8d850513 addi a0,a0,-1832 # 3bc0a9c0 <__func__.1+0x230> + 3bc020f0: a68fe0ef jal ra,3bc00358 + 3bc020f4: 00009597 auipc a1,0x9 + 3bc020f8: 51c5b583 ld a1,1308(a1) # 3bc0b610 + 3bc020fc: 00009517 auipc a0,0x9 + 3bc02100: 8dc50513 addi a0,a0,-1828 # 3bc0a9d8 <__func__.1+0x248> + 3bc02104: a54fe0ef jal ra,3bc00358 + 3bc02108: 00009597 auipc a1,0x9 + 3bc0210c: 5885b583 ld a1,1416(a1) # 3bc0b690 + 3bc02110: 00009517 auipc a0,0x9 + 3bc02114: 8e050513 addi a0,a0,-1824 # 3bc0a9f0 <__func__.1+0x260> + 3bc02118: a40fe0ef jal ra,3bc00358 + 3bc0211c: 00009597 auipc a1,0x9 + 3bc02120: 33c5b583 ld a1,828(a1) # 3bc0b458 + 3bc02124: 00009517 auipc a0,0x9 + 3bc02128: 8e450513 addi a0,a0,-1820 # 3bc0aa08 <__func__.1+0x278> + 3bc0212c: a2cfe0ef jal ra,3bc00358 + 3bc02130: 00009597 auipc a1,0x9 + 3bc02134: 5685b583 ld a1,1384(a1) # 3bc0b698 + 3bc02138: 00009517 auipc a0,0x9 + 3bc0213c: 8e850513 addi a0,a0,-1816 # 3bc0aa20 <__func__.1+0x290> + 3bc02140: a18fe0ef jal ra,3bc00358 + 3bc02144: 60a2 ld ra,8(sp) + 3bc02146: 00009597 auipc a1,0x9 + 3bc0214a: 52a5b583 ld a1,1322(a1) # 3bc0b670 + 3bc0214e: 00009517 auipc a0,0x9 + 3bc02152: 8ea50513 addi a0,a0,-1814 # 3bc0aa38 <__func__.1+0x2a8> + 3bc02156: 0141 addi sp,sp,16 + 3bc02158: a00fe06f j 3bc00358 + +000000003bc0215c : + 3bc0215c: 4501 li a0,0 + 3bc0215e: 3020106f j 3bc03460 + +000000003bc02162 : + 3bc02162: 7179 addi sp,sp,-48 + 3bc02164: f022 sd s0,32(sp) + 3bc02166: 00009417 auipc s0,0x9 + 3bc0216a: 45a40413 addi s0,s0,1114 # 3bc0b5c0 + 3bc0216e: 601c ld a5,0(s0) + 3bc02170: 00009597 auipc a1,0x9 + 3bc02174: 8e058593 addi a1,a1,-1824 # 3bc0aa50 <__func__.1+0x2c0> + 3bc02178: 00011517 auipc a0,0x11 + 3bc0217c: 23050513 addi a0,a0,560 # 3bc133a8 + 3bc02180: f406 sd ra,40(sp) + 3bc02182: ec26 sd s1,24(sp) + 3bc02184: e84a sd s2,16(sp) + 3bc02186: 6f84 ld s1,24(a5) + 3bc02188: e44e sd s3,8(sp) + 3bc0218a: ec0ff0ef jal ra,3bc0184a + 3bc0218e: 00011517 auipc a0,0x11 + 3bc02192: 1ca50513 addi a0,a0,458 # 3bc13358 + 3bc02196: 00009597 auipc a1,0x9 + 3bc0219a: 8c258593 addi a1,a1,-1854 # 3bc0aa58 <__func__.1+0x2c8> + 3bc0219e: eacff0ef jal ra,3bc0184a + 3bc021a2: 00009517 auipc a0,0x9 + 3bc021a6: 46e53503 ld a0,1134(a0) # 3bc0b610 + 3bc021aa: 03f57713 andi a4,a0,63 + 3bc021ae: 87aa mv a5,a0 + 3bc021b0: c709 beqz a4,3bc021ba + 3bc021b2: 04000793 li a5,64 + 3bc021b6: 9f99 subw a5,a5,a4 + 3bc021b8: 97aa add a5,a5,a0 + 3bc021ba: 00009997 auipc s3,0x9 + 3bc021be: 31e98993 addi s3,s3,798 # 3bc0b4d8 + 3bc021c2: 00011717 auipc a4,0x11 + 3bc021c6: 16f73723 sd a5,366(a4) # 3bc13330 + 3bc021ca: 0009b783 ld a5,0(s3) + 3bc021ce: 03f7f693 andi a3,a5,63 + 3bc021d2: c689 beqz a3,3bc021dc + 3bc021d4: 04000713 li a4,64 + 3bc021d8: 9f15 subw a4,a4,a3 + 3bc021da: 97ba add a5,a5,a4 + 3bc021dc: 00009917 auipc s2,0x9 + 3bc021e0: 32490913 addi s2,s2,804 # 3bc0b500 + 3bc021e4: 00011717 auipc a4,0x11 + 3bc021e8: 12f73623 sd a5,300(a4) # 3bc13310 + 3bc021ec: 00093783 ld a5,0(s2) + 3bc021f0: 03f7f693 andi a3,a5,63 + 3bc021f4: c689 beqz a3,3bc021fe + 3bc021f6: 04000713 li a4,64 + 3bc021fa: 9f15 subw a4,a4,a3 + 3bc021fc: 97ba add a5,a5,a4 + 3bc021fe: 08000613 li a2,128 + 3bc02202: 4581 li a1,0 + 3bc02204: 00011717 auipc a4,0x11 + 3bc02208: 12f73223 sd a5,292(a4) # 3bc13328 + 3bc0220c: 807fe0ef jal ra,3bc00a12 + 3bc02210: 0009b503 ld a0,0(s3) + 3bc02214: 20000613 li a2,512 + 3bc02218: 4581 li a1,0 + 3bc0221a: ff8fe0ef jal ra,3bc00a12 + 3bc0221e: 00093503 ld a0,0(s2) + 3bc02222: 20000613 li a2,512 + 3bc02226: 4581 li a1,0 + 3bc02228: feafe0ef jal ra,3bc00a12 + 3bc0222c: 709c ld a5,32(s1) + 3bc0222e: 8526 mv a0,s1 + 3bc02230: 6b9c ld a5,16(a5) + 3bc02232: 9782 jalr a5 + 3bc02234: 00011797 auipc a5,0x11 + 3bc02238: 10a7b223 sd a0,260(a5) # 3bc13338 + 3bc0223c: 601c ld a5,0(s0) + 3bc0223e: 53d8 lw a4,36(a5) + 3bc02240: 4791 li a5,4 + 3bc02242: 02e7e263 bltu a5,a4,3bc02266 + 3bc02246: 00009797 auipc a5,0x9 + 3bc0224a: 28a78793 addi a5,a5,650 # 3bc0b4d0 + 3bc0224e: 4731 li a4,12 + 3bc02250: 00e79123 sh a4,2(a5) + 3bc02254: 4705 li a4,1 + 3bc02256: 00e78223 sb a4,4(a5) + 3bc0225a: 20100793 li a5,513 + 3bc0225e: 00009717 auipc a4,0x9 + 3bc02262: 34f71623 sh a5,844(a4) # 3bc0b5aa + 3bc02266: 00009797 auipc a5,0x9 + 3bc0226a: 1f27b783 ld a5,498(a5) # 3bc0b458 + 3bc0226e: 00011717 auipc a4,0x11 + 3bc02272: 08f73d23 sd a5,154(a4) # 3bc13308 + 3bc02276: 000e1737 lui a4,0xe1 + 3bc0227a: c3d8 sw a4,4(a5) + 3bc0227c: 4721 li a4,8 + 3bc0227e: 00079423 sh zero,8(a5) + 3bc02282: 00e78523 sb a4,10(a5) + 3bc02286: 70a2 ld ra,40(sp) + 3bc02288: 7402 ld s0,32(sp) + 3bc0228a: 00079623 sh zero,12(a5) + 3bc0228e: 64e2 ld s1,24(sp) + 3bc02290: 6942 ld s2,16(sp) + 3bc02292: 69a2 ld s3,8(sp) + 3bc02294: 4501 li a0,0 + 3bc02296: 6145 addi sp,sp,48 + 3bc02298: 8082 ret + +000000003bc0229a : + 3bc0229a: 030007b7 lui a5,0x3000 + 3bc0229e: 43c8 lw a0,4(a5) + 3bc022a0: 2495350b extu a0,a0,9,9 + 3bc022a4: 8082 ret + +000000003bc022a6 : + 3bc022a6: 1141 addi sp,sp,-16 + 3bc022a8: e406 sd ra,8(sp) + 3bc022aa: 93ffe0ef jal ra,3bc00be8 + 3bc022ae: 3e800793 li a5,1000 + 3bc022b2: e911 bnez a0,3bc022c6 + 3bc022b4: 0e0007b7 lui a5,0xe000 + 3bc022b8: 639c ld a5,0(a5) + 3bc022ba: 0417b78b extu a5,a5,1,1 + 3bc022be: eb81 bnez a5,3bc022ce + 3bc022c0: 6789 lui a5,0x2 + 3bc022c2: 71078793 addi a5,a5,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc022c6: 60a2 ld ra,8(sp) + 3bc022c8: 853e mv a0,a5 + 3bc022ca: 0141 addi sp,sp,16 + 3bc022cc: 8082 ret + 3bc022ce: 67e1 lui a5,0x18 + 3bc022d0: 69f78793 addi a5,a5,1695 # 1869f <__BSS_SIZE__+0x12a8f> + 3bc022d4: bfcd j 3bc022c6 + +000000003bc022d6 : + 3bc022d6: 7175 addi sp,sp,-144 + 3bc022d8: f0d2 sd s4,96(sp) + 3bc022da: 00011797 auipc a5,0x11 + 3bc022de: 06a7bb23 sd a0,118(a5) # 3bc13350 + 3bc022e2: 00011797 auipc a5,0x11 + 3bc022e6: 0eb7af23 sw a1,254(a5) # 3bc133e0 + 3bc022ea: 00011a17 auipc s4,0x11 + 3bc022ee: 0faa0a13 addi s4,s4,250 # 3bc133e4 + 3bc022f2: e506 sd ra,136(sp) + 3bc022f4: e122 sd s0,128(sp) + 3bc022f6: fca6 sd s1,120(sp) + 3bc022f8: f8ca sd s2,112(sp) + 3bc022fa: f4ce sd s3,104(sp) + 3bc022fc: ecd6 sd s5,88(sp) + 3bc022fe: e8da sd s6,80(sp) + 3bc02300: e4de sd s7,72(sp) + 3bc02302: e0e2 sd s8,64(sp) + 3bc02304: fc66 sd s9,56(sp) + 3bc02306: f86a sd s10,48(sp) + 3bc02308: f46e sd s11,40(sp) + 3bc0230a: 00ca2023 sw a2,0(s4) + 3bc0230e: 0e0007b7 lui a5,0xe000 + 3bc02312: 0007a223 sw zero,4(a5) # e000004 + 3bc02316: f85ff0ef jal ra,3bc0229a + 3bc0231a: e909 bnez a0,3bc0232c + 3bc0231c: 00008517 auipc a0,0x8 + 3bc02320: 74c50513 addi a0,a0,1868 # 3bc0aa68 <__func__.1+0x2d8> + 3bc02324: 834fe0ef jal ra,3bc00358 + 3bc02328: 596d li s2,-5 + 3bc0232a: a111 j 3bc0272e + 3bc0232c: f7bff0ef jal ra,3bc022a6 + 3bc02330: 0005049b sext.w s1,a0 + 3bc02334: 85a6 mv a1,s1 + 3bc02336: 00008517 auipc a0,0x8 + 3bc0233a: 74a50513 addi a0,a0,1866 # 3bc0aa80 <__func__.1+0x2f0> + 3bc0233e: 81afe0ef jal ra,3bc00358 + 3bc02342: 67e1 lui a5,0x18 + 3bc02344: 69e78793 addi a5,a5,1694 # 1869e <__BSS_SIZE__+0x12a8e> + 3bc02348: 0297f463 bgeu a5,s1,3bc02370 + 3bc0234c: 4785 li a5,1 + 3bc0234e: 00008517 auipc a0,0x8 + 3bc02352: 74a50513 addi a0,a0,1866 # 3bc0aa98 <__func__.1+0x308> + 3bc02356: 00011717 auipc a4,0x11 + 3bc0235a: 0af70923 sb a5,178(a4) # 3bc13408 + 3bc0235e: ffbfd0ef jal ra,3bc00358 + 3bc02362: c00037b7 lui a5,0xc0003 + 3bc02366: 03000737 lui a4,0x3000 + 3bc0236a: 078d addi a5,a5,3 + 3bc0236c: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02370: 85a6 mv a1,s1 + 3bc02372: 00008517 auipc a0,0x8 + 3bc02376: 72e50513 addi a0,a0,1838 # 3bc0aaa0 <__func__.1+0x310> + 3bc0237a: fdffd0ef jal ra,3bc00358 + 3bc0237e: 3e800793 li a5,1000 + 3bc02382: 029787bb mulw a5,a5,s1 + 3bc02386: e43e sd a5,8(sp) + 3bc02388: c00037b7 lui a5,0xc0003 + 3bc0238c: 10178793 addi a5,a5,257 # ffffffffc0003101 <__BL2_END__+0xffffffff843efcf1> + 3bc02390: e83e sd a5,16(sp) + 3bc02392: c00017b7 lui a5,0xc0001 + 3bc02396: 0791 addi a5,a5,4 + 3bc02398: ec3e sd a5,24(sp) + 3bc0239a: 00011797 auipc a5,0x11 + 3bc0239e: f607bb23 sd zero,-138(a5) # 3bc13310 + 3bc023a2: 00011797 auipc a5,0x11 + 3bc023a6: f807b323 sd zero,-122(a5) # 3bc13328 + 3bc023aa: 00011797 auipc a5,0x11 + 3bc023ae: f807b323 sd zero,-122(a5) # 3bc13330 + 3bc023b2: 00011797 auipc a5,0x11 + 3bc023b6: f807b723 sd zero,-114(a5) # 3bc13340 + 3bc023ba: 00011797 auipc a5,0x11 + 3bc023be: f807b723 sd zero,-114(a5) # 3bc13348 + 3bc023c2: 00011797 auipc a5,0x11 + 3bc023c6: f407bb23 sd zero,-170(a5) # 3bc13318 + 3bc023ca: 00011797 auipc a5,0x11 + 3bc023ce: f407bb23 sd zero,-170(a5) # 3bc13320 + 3bc023d2: 00011797 auipc a5,0x11 + 3bc023d6: f607b323 sd zero,-154(a5) # 3bc13338 + 3bc023da: 00011797 auipc a5,0x11 + 3bc023de: 020786a3 sb zero,45(a5) # 3bc13407 + 3bc023e2: 00011797 auipc a5,0x11 + 3bc023e6: 02078223 sb zero,36(a5) # 3bc13406 + 3bc023ea: 00011797 auipc a5,0x11 + 3bc023ee: 00078da3 sb zero,27(a5) # 3bc13405 + 3bc023f2: 00011797 auipc a5,0x11 + 3bc023f6: 00078ca3 sb zero,25(a5) # 3bc1340b + 3bc023fa: 00011797 auipc a5,0x11 + 3bc023fe: fe07a723 sw zero,-18(a5) # 3bc133e8 + 3bc02402: 00011797 auipc a5,0x11 + 3bc02406: f007b323 sd zero,-250(a5) # 3bc13308 + 3bc0240a: 00011797 auipc a5,0x11 + 3bc0240e: fe078fa3 sb zero,-1(a5) # 3bc13409 + 3bc02412: bd9ff0ef jal ra,3bc01fea + 3bc02416: c77ff0ef jal ra,3bc0208c + 3bc0241a: 00009417 auipc s0,0x9 + 3bc0241e: 1a640413 addi s0,s0,422 # 3bc0b5c0 + 3bc02422: 00009797 auipc a5,0x9 + 3bc02426: 24e7b783 ld a5,590(a5) # 3bc0b670 + 3bc0242a: e41c sd a5,8(s0) + 3bc0242c: 40000793 li a5,1024 + 3bc02430: c81c sw a5,16(s0) + 3bc02432: 00009517 auipc a0,0x9 + 3bc02436: 19650513 addi a0,a0,406 # 3bc0b5c8 + 3bc0243a: 00009797 auipc a5,0x9 + 3bc0243e: 25e7b783 ld a5,606(a5) # 3bc0b698 + 3bc02442: e43c sd a5,72(s0) + 3bc02444: 6cd000ef jal ra,3bc03310 + 3bc02448: 0005099b sext.w s3,a0 + 3bc0244c: 892a mv s2,a0 + 3bc0244e: 02099063 bnez s3,3bc0246e + 3bc02452: 00009517 auipc a0,0x9 + 3bc02456: 1c650513 addi a0,a0,454 # 3bc0b618 + 3bc0245a: 54f000ef jal ra,3bc031a8 + 3bc0245e: 02055763 bgez a0,3bc0248c + 3bc02462: 00008517 auipc a0,0x8 + 3bc02466: 66650513 addi a0,a0,1638 # 3bc0aac8 <__func__.1+0x338> + 3bc0246a: eeffd0ef jal ra,3bc00358 + 3bc0246e: 85ce mv a1,s3 + 3bc02470: 00008517 auipc a0,0x8 + 3bc02474: 6f050513 addi a0,a0,1776 # 3bc0ab60 <__func__.1+0x3d0> + 3bc02478: ee1fd0ef jal ra,3bc00358 + 3bc0247c: c00037b7 lui a5,0xc0003 + 3bc02480: 03000737 lui a4,0x3000 + 3bc02484: 079d addi a5,a5,7 + 3bc02486: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc0248a: a455 j 3bc0272e + 3bc0248c: 6000 ld s0,0(s0) + 3bc0248e: e411 bnez s0,3bc0249a + 3bc02490: 00008517 auipc a0,0x8 + 3bc02494: 65850513 addi a0,a0,1624 # 3bc0aae8 <__func__.1+0x358> + 3bc02498: bfc9 j 3bc0246a + 3bc0249a: cc9ff0ef jal ra,3bc02162 + 3bc0249e: 4501 li a0,0 + 3bc024a0: d1ffd0ef jal ra,3bc001be + 3bc024a4: 6742 ld a4,16(sp) + 3bc024a6: 00011917 auipc s2,0x11 + 3bc024aa: f4690913 addi s2,s2,-186 # 3bc133ec + 3bc024ae: 00a92023 sw a0,0(s2) + 3bc024b2: 6522 ld a0,8(sp) + 3bc024b4: 030007b7 lui a5,0x3000 + 3bc024b8: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc024bc: cbffd0ef jal ra,3bc0017a + 3bc024c0: 681c ld a5,16(s0) + 3bc024c2: 4585 li a1,1 + 3bc024c4: 8522 mv a0,s0 + 3bc024c6: 779c ld a5,40(a5) + 3bc024c8: 00011997 auipc s3,0x11 + 3bc024cc: e5898993 addi s3,s3,-424 # 3bc13320 + 3bc024d0: 00011b17 auipc s6,0x11 + 3bc024d4: f38b0b13 addi s6,s6,-200 # 3bc13408 + 3bc024d8: 9782 jalr a5 + 3bc024da: 00011a97 auipc s5,0x11 + 3bc024de: f2ba8a93 addi s5,s5,-213 # 3bc13405 + 3bc024e2: 000ac783 lbu a5,0(s5) + 3bc024e6: 18078663 beqz a5,3bc02672 + 3bc024ea: 6762 ld a4,24(sp) + 3bc024ec: 030007b7 lui a5,0x3000 + 3bc024f0: 00043b83 ld s7,0(s0) + 3bc024f4: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc024f8: 4785 li a5,1 + 3bc024fa: 00011717 auipc a4,0x11 + 3bc024fe: f0f708a3 sb a5,-239(a4) # 3bc1340b + 3bc02502: 08200c13 li s8,130 + 3bc02506: 00011c97 auipc s9,0x11 + 3bc0250a: e42c8c93 addi s9,s9,-446 # 3bc13348 + 3bc0250e: 00011d17 auipc s10,0x11 + 3bc02512: e0ad0d13 addi s10,s10,-502 # 3bc13318 + 3bc02516: 00011d97 auipc s11,0x11 + 3bc0251a: e2ad8d93 addi s11,s11,-470 # 3bc13340 + 3bc0251e: 19741b63 bne s0,s7,3bc026b4 + 3bc02522: 02044783 lbu a5,32(s0) + 3bc02526: 470d li a4,3 + 3bc02528: 1ee78063 beq a5,a4,3bc02708 + 3bc0252c: 4715 li a4,5 + 3bc0252e: 1ee78063 beq a5,a4,3bc0270e + 3bc02532: 4709 li a4,2 + 3bc02534: dee79ae3 bne a5,a4,3bc02328 + 3bc02538: 04000793 li a5,64 + 3bc0253c: 0009b503 ld a0,0(s3) + 3bc02540: 04000613 li a2,64 + 3bc02544: 4581 li a1,0 + 3bc02546: 00011717 auipc a4,0x11 + 3bc0254a: eaf72123 sw a5,-350(a4) # 3bc133e8 + 3bc0254e: cc4fe0ef jal ra,3bc00a12 + 3bc02552: 0009b783 ld a5,0(s3) + 3bc02556: 00011717 auipc a4,0x11 + 3bc0255a: dd273703 ld a4,-558(a4) # 3bc13328 + 3bc0255e: 00011b97 auipc s7,0x11 + 3bc02562: e8ab8b93 addi s7,s7,-374 # 3bc133e8 + 3bc02566: eb98 sd a4,16(a5) + 3bc02568: cfd8 sw a4,28(a5) + 3bc0256a: fffff717 auipc a4,0xfffff + 3bc0256e: 33270713 addi a4,a4,818 # 3bc0189c + 3bc02572: f798 sd a4,40(a5) + 3bc02574: 00011c17 auipc s8,0x11 + 3bc02578: da4c0c13 addi s8,s8,-604 # 3bc13318 + 3bc0257c: 000ba703 lw a4,0(s7) + 3bc02580: 000c3503 ld a0,0(s8) + 3bc02584: 04000613 li a2,64 + 3bc02588: cf98 sw a4,24(a5) + 3bc0258a: 4581 li a1,0 + 3bc0258c: c86fe0ef jal ra,3bc00a12 + 3bc02590: 000c3783 ld a5,0(s8) + 3bc02594: 00011717 auipc a4,0x11 + 3bc02598: d7c73703 ld a4,-644(a4) # 3bc13310 + 3bc0259c: 00011517 auipc a0,0x11 + 3bc025a0: dac53503 ld a0,-596(a0) # 3bc13348 + 3bc025a4: eb98 sd a4,16(a5) + 3bc025a6: cfd8 sw a4,28(a5) + 3bc025a8: fffff717 auipc a4,0xfffff + 3bc025ac: 5ae70713 addi a4,a4,1454 # 3bc01b56 + 3bc025b0: f798 sd a4,40(a5) + 3bc025b2: 000ba703 lw a4,0(s7) + 3bc025b6: 0009b583 ld a1,0(s3) + 3bc025ba: 4b85 li s7,1 + 3bc025bc: cf98 sw a4,24(a5) + 3bc025be: 711c ld a5,32(a0) + 3bc025c0: 739c ld a5,32(a5) + 3bc025c2: 9782 jalr a5 + 3bc025c4: 500c lw a1,32(s0) + 3bc025c6: 00008517 auipc a0,0x8 + 3bc025ca: 55a50513 addi a0,a0,1370 # 3bc0ab20 <__func__.1+0x390> + 3bc025ce: d8bfd0ef jal ra,3bc00358 + 3bc025d2: 4501 li a0,0 + 3bc025d4: bebfd0ef jal ra,3bc001be + 3bc025d8: 00a92023 sw a0,0(s2) + 3bc025dc: b81ff0ef jal ra,3bc0215c + 3bc025e0: 000ac783 lbu a5,0(s5) + 3bc025e4: ee078be3 beqz a5,3bc024da + 3bc025e8: 00011797 auipc a5,0x11 + 3bc025ec: e1e78793 addi a5,a5,-482 # 3bc13406 + 3bc025f0: 0007c783 lbu a5,0(a5) + 3bc025f4: eb95 bnez a5,3bc02628 + 3bc025f6: 000b4783 lbu a5,0(s6) + 3bc025fa: 10079d63 bnez a5,3bc02714 + 3bc025fe: 00092503 lw a0,0(s2) + 3bc02602: bbdfd0ef jal ra,3bc001be + 3bc02606: 2501 sext.w a0,a0 + 3bc02608: fca4fae3 bgeu s1,a0,3bc025dc + 3bc0260c: 85a6 mv a1,s1 + 3bc0260e: 00008517 auipc a0,0x8 + 3bc02612: 53250513 addi a0,a0,1330 # 3bc0ab40 <__func__.1+0x3b0> + 3bc02616: d43fd0ef jal ra,3bc00358 + 3bc0261a: c00037b7 lui a5,0xc0003 + 3bc0261e: 03000737 lui a4,0x3000 + 3bc02622: 0795 addi a5,a5,5 + 3bc02624: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02628: 00008517 auipc a0,0x8 + 3bc0262c: 53050513 addi a0,a0,1328 # 3bc0ab58 <__func__.1+0x3c8> + 3bc02630: d29fd0ef jal ra,3bc00358 + 3bc02634: c00037b7 lui a5,0xc0003 + 3bc02638: 03000737 lui a4,0x3000 + 3bc0263c: 0799 addi a5,a5,6 + 3bc0263e: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02642: 681c ld a5,16(s0) + 3bc02644: 4581 li a1,0 + 3bc02646: 8522 mv a0,s0 + 3bc02648: 779c ld a5,40(a5) + 3bc0264a: 9782 jalr a5 + 3bc0264c: 00009517 auipc a0,0x9 + 3bc02650: fcc50513 addi a0,a0,-52 # 3bc0b618 + 3bc02654: 380000ef jal ra,3bc029d4 + 3bc02658: 0e0007b7 lui a5,0xe000 + 3bc0265c: 0047a903 lw s2,4(a5) # e000004 + 3bc02660: 4d4757b7 lui a5,0x4d475 + 3bc02664: e3178793 addi a5,a5,-463 # 4d474e31 <__BL2_END__+0x11861a21> + 3bc02668: 40f90933 sub s2,s2,a5 + 3bc0266c: 00193913 seqz s2,s2 + 3bc02670: a87d j 3bc0272e + 3bc02672: aebff0ef jal ra,3bc0215c + 3bc02676: 00092503 lw a0,0(s2) + 3bc0267a: b45fd0ef jal ra,3bc001be + 3bc0267e: 2501 sext.w a0,a0 + 3bc02680: 02a4f363 bgeu s1,a0,3bc026a6 + 3bc02684: 000b4783 lbu a5,0(s6) + 3bc02688: ef99 bnez a5,3bc026a6 + 3bc0268a: 00008517 auipc a0,0x8 + 3bc0268e: 48650513 addi a0,a0,1158 # 3bc0ab10 <__func__.1+0x380> + 3bc02692: cc7fd0ef jal ra,3bc00358 + 3bc02696: c00037b7 lui a5,0xc0003 + 3bc0269a: 03000737 lui a4,0x3000 + 3bc0269e: 0791 addi a5,a5,4 + 3bc026a0: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc026a4: b151 j 3bc02328 + 3bc026a6: 00011797 auipc a5,0x11 + 3bc026aa: d637c783 lbu a5,-669(a5) # 3bc13409 + 3bc026ae: e20786e3 beqz a5,3bc024da + 3bc026b2: b1e5 j 3bc0239a + 3bc026b4: 030bb703 ld a4,48(s7) + 3bc026b8: c305 beqz a4,3bc026d8 + 3bc026ba: 00274703 lbu a4,2(a4) + 3bc026be: 08100793 li a5,129 + 3bc026c2: 00f71e63 bne a4,a5,3bc026de + 3bc026c6: 020bb703 ld a4,32(s7) + 3bc026ca: 855e mv a0,s7 + 3bc026cc: 6b18 ld a4,16(a4) + 3bc026ce: 9702 jalr a4 + 3bc026d0: 00ad3023 sd a0,0(s10) + 3bc026d4: 017db023 sd s7,0(s11) + 3bc026d8: 000bbb83 ld s7,0(s7) + 3bc026dc: b589 j 3bc0251e + 3bc026de: 4785 li a5,1 + 3bc026e0: 00f71c63 bne a4,a5,3bc026f8 + 3bc026e4: 020bb703 ld a4,32(s7) + 3bc026e8: 855e mv a0,s7 + 3bc026ea: 6b18 ld a4,16(a4) + 3bc026ec: 9702 jalr a4 + 3bc026ee: 00a9b023 sd a0,0(s3) + 3bc026f2: 017cb023 sd s7,0(s9) + 3bc026f6: b7cd j 3bc026d8 + 3bc026f8: ff8710e3 bne a4,s8,3bc026d8 + 3bc026fc: 020bb703 ld a4,32(s7) + 3bc02700: 855e mv a0,s7 + 3bc02702: 6b18 ld a4,16(a4) + 3bc02704: 9702 jalr a4 + 3bc02706: bfc9 j 3bc026d8 + 3bc02708: 20000793 li a5,512 + 3bc0270c: bd05 j 3bc0253c + 3bc0270e: 40000793 li a5,1024 + 3bc02712: b52d j 3bc0253c + 3bc02714: ed7794e3 bne a5,s7,3bc025dc + 3bc02718: 000a2783 lw a5,0(s4) + 3bc0271c: ec0790e3 bnez a5,3bc025dc + 3bc02720: 00008517 auipc a0,0x8 + 3bc02724: 43050513 addi a0,a0,1072 # 3bc0ab50 <__func__.1+0x3c0> + 3bc02728: c31fd0ef jal ra,3bc00358 + 3bc0272c: 4905 li s2,1 + 3bc0272e: 60aa ld ra,136(sp) + 3bc02730: 640a ld s0,128(sp) + 3bc02732: 74e6 ld s1,120(sp) + 3bc02734: 79a6 ld s3,104(sp) + 3bc02736: 7a06 ld s4,96(sp) + 3bc02738: 6ae6 ld s5,88(sp) + 3bc0273a: 6b46 ld s6,80(sp) + 3bc0273c: 6ba6 ld s7,72(sp) + 3bc0273e: 6c06 ld s8,64(sp) + 3bc02740: 7ce2 ld s9,56(sp) + 3bc02742: 7d42 ld s10,48(sp) + 3bc02744: 7da2 ld s11,40(sp) + 3bc02746: 854a mv a0,s2 + 3bc02748: 7946 ld s2,112(sp) + 3bc0274a: 6149 addi sp,sp,144 + 3bc0274c: 8082 ret + +000000003bc0274e : + 3bc0274e: c909 beqz a0,3bc02760 + 3bc02750: 07150783 lb a5,113(a0) + 3bc02754: 4501 li a0,0 + 3bc02756: 0007d663 bgez a5,3bc02762 + 3bc0275a: fd300513 li a0,-45 + 3bc0275e: 8082 ret + 3bc02760: 5535 li a0,-19 + 3bc02762: 8082 ret + +000000003bc02764 : + 3bc02764: 61b8 ld a4,64(a1) + 3bc02766: 7179 addi sp,sp,-48 + 3bc02768: f022 sd s0,32(sp) + 3bc0276a: ec26 sd s1,24(sp) + 3bc0276c: 00011417 auipc s0,0x11 + 3bc02770: c5443403 ld s0,-940(s0) # 3bc133c0 + 3bc02774: f406 sd ra,40(sp) + 3bc02776: 04058793 addi a5,a1,64 + 3bc0277a: 7c04 ld s1,56(s0) + 3bc0277c: 00f70a63 beq a4,a5,3bc02790 + 3bc02780: 00008517 auipc a0,0x8 + 3bc02784: 42850513 addi a0,a0,1064 # 3bc0aba8 <__func__.5+0x8> + 3bc02788: e42e sd a1,8(sp) + 3bc0278a: bcffd0ef jal ra,3bc00358 + 3bc0278e: 65a2 ld a1,8(sp) + 3bc02790: 8522 mv a0,s0 + 3bc02792: 7402 ld s0,32(sp) + 3bc02794: 68bc ld a5,80(s1) + 3bc02796: 70a2 ld ra,40(sp) + 3bc02798: 64e2 ld s1,24(sp) + 3bc0279a: 6145 addi sp,sp,48 + 3bc0279c: 8782 jr a5 + +000000003bc0279e : + 3bc0279e: 7179 addi sp,sp,-48 + 3bc027a0: ec26 sd s1,24(sp) + 3bc027a2: 00011497 auipc s1,0x11 + 3bc027a6: c1648493 addi s1,s1,-1002 # 3bc133b8 + 3bc027aa: 6088 ld a0,0(s1) + 3bc027ac: f022 sd s0,32(sp) + 3bc027ae: 6405 lui s0,0x1 + 3bc027b0: 80440413 addi s0,s0,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc027b4: 9522 add a0,a0,s0 + 3bc027b6: e42e sd a1,8(sp) + 3bc027b8: f406 sd ra,40(sp) + 3bc027ba: f85fe0ef jal ra,3bc0173e + 3bc027be: 65a2 ld a1,8(sp) + 3bc027c0: 609c ld a5,0(s1) + 3bc027c2: 2501 sext.w a0,a0 + 3bc027c4: ed89 bnez a1,3bc027de + 3bc027c6: 008785b3 add a1,a5,s0 + 3bc027ca: 00256513 ori a0,a0,2 + 3bc027ce: f77fe0ef jal ra,3bc01744 + 3bc027d2: 70a2 ld ra,40(sp) + 3bc027d4: 7402 ld s0,32(sp) + 3bc027d6: 64e2 ld s1,24(sp) + 3bc027d8: 4501 li a0,0 + 3bc027da: 6145 addi sp,sp,48 + 3bc027dc: 8082 ret + 3bc027de: 008785b3 add a1,a5,s0 + 3bc027e2: 9975 andi a0,a0,-3 + 3bc027e4: b7ed j 3bc027ce + +000000003bc027e6 : + 3bc027e6: 00011517 auipc a0,0x11 + 3bc027ea: bda53503 ld a0,-1062(a0) # 3bc133c0 + 3bc027ee: 7d1c ld a5,56(a0) + 3bc027f0: 1141 addi sp,sp,-16 + 3bc027f2: e022 sd s0,0(sp) + 3bc027f4: 67bc ld a5,72(a5) + 3bc027f6: e406 sd ra,8(sp) + 3bc027f8: 05000593 li a1,80 + 3bc027fc: 9782 jalr a5 + 3bc027fe: 842a mv s0,a0 + 3bc02800: c911 beqz a0,3bc02814 + 3bc02802: 05000613 li a2,80 + 3bc02806: 4581 li a1,0 + 3bc02808: a0afe0ef jal ra,3bc00a12 + 3bc0280c: 04040793 addi a5,s0,64 + 3bc02810: e03c sd a5,64(s0) + 3bc02812: e43c sd a5,72(s0) + 3bc02814: 60a2 ld ra,8(sp) + 3bc02816: 8522 mv a0,s0 + 3bc02818: 6402 ld s0,0(sp) + 3bc0281a: 0141 addi sp,sp,16 + 3bc0281c: 8082 ret + +000000003bc0281e : + 3bc0281e: cd51 beqz a0,3bc028ba + 3bc02820: 1141 addi sp,sp,-16 + 3bc02822: e022 sd s0,0(sp) + 3bc02824: e406 sd ra,8(sp) + 3bc02826: 842a mv s0,a0 + 3bc02828: 5529 li a0,-22 + 3bc0282a: c5c1 beqz a1,3bc028b2 + 3bc0282c: 603c ld a5,64(s0) + 3bc0282e: e3d1 bnez a5,3bc028b2 + 3bc02830: 6c18 ld a4,24(s0) + 3bc02832: 00008797 auipc a5,0x8 + 3bc02836: 62e78793 addi a5,a5,1582 # 3bc0ae60 + 3bc0283a: 06f70c63 beq a4,a5,3bc028b2 + 3bc0283e: 0015c703 lbu a4,1(a1) + 3bc02842: 4795 li a5,5 + 3bc02844: 06f71763 bne a4,a5,3bc028b2 + 3bc02848: 07144703 lbu a4,113(s0) + 3bc0284c: 0025c783 lbu a5,2(a1) + 3bc02850: 06f71163 bne a4,a5,3bc028b2 + 3bc02854: 0045d783 lhu a5,4(a1) + 3bc02858: 02845703 lhu a4,40(s0) + 3bc0285c: 04f76b63 bltu a4,a5,3bc028b2 + 3bc02860: 07244683 lbu a3,114(s0) + 3bc02864: 0035c703 lbu a4,3(a1) + 3bc02868: 00e68863 beq a3,a4,3bc02878 + 3bc0286c: 4609 li a2,2 + 3bc0286e: 00c68563 beq a3,a2,3bc02878 + 3bc02872: 468d li a3,3 + 3bc02874: 02d71f63 bne a4,a3,3bc028b2 + 3bc02878: fde00513 li a0,-34 + 3bc0287c: cb9d beqz a5,3bc028b2 + 3bc0287e: 7c18 ld a4,56(s0) + 3bc02880: fc600513 li a0,-58 + 3bc02884: 7f14 ld a3,56(a4) + 3bc02886: c695 beqz a3,3bc028b2 + 3bc02888: 5318 lw a4,32(a4) + 3bc0288a: c705 beqz a4,3bc028b2 + 3bc0288c: 02f41423 sh a5,40(s0) + 3bc02890: f80c sd a1,48(s0) + 3bc02892: e02c sd a1,64(s0) + 3bc02894: 8522 mv a0,s0 + 3bc02896: 06040823 sb zero,112(s0) + 3bc0289a: 04043c23 sd zero,88(s0) + 3bc0289e: 35e010ef jal ra,3bc03bfc + 3bc028a2: 4581 li a1,0 + 3bc028a4: 8522 mv a0,s0 + 3bc028a6: 396010ef jal ra,3bc03c3c + 3bc028aa: 8522 mv a0,s0 + 3bc028ac: 3f2010ef jal ra,3bc03c9e + 3bc028b0: 4501 li a0,0 + 3bc028b2: 60a2 ld ra,8(sp) + 3bc028b4: 6402 ld s0,0(sp) + 3bc028b6: 0141 addi sp,sp,16 + 3bc028b8: 8082 ret + 3bc028ba: 5529 li a0,-22 + 3bc028bc: 8082 ret + +000000003bc028be : + 3bc028be: 8082 ret + +000000003bc028c0 : + 3bc028c0: 8082 ret + +000000003bc028c2 : + 3bc028c2: 00008517 auipc a0,0x8 + 3bc028c6: 59e50513 addi a0,a0,1438 # 3bc0ae60 + 3bc028ca: 8082 ret + +000000003bc028cc : + 3bc028cc: 6d1c ld a5,24(a0) + 3bc028ce: f8a5550b sdd a0,a0,(a0),0,4 + 3bc028d2: 29850613 addi a2,a0,664 + 3bc028d6: f8f7d78b sdd a5,a5,(a5),0,4 + 3bc028da: 04052423 sw zero,72(a0) + 3bc028de: 09850793 addi a5,a0,152 + 3bc028e2: fe07bc23 sd zero,-8(a5) + 3bc028e6: 02078423 sb zero,40(a5) + 3bc028ea: f8f7d78b sdd a5,a5,(a5),0,4 + 3bc028ee: 0007b823 sd zero,16(a5) + 3bc028f2: 08078713 addi a4,a5,128 + 3bc028f6: 00c71363 bne a4,a2,3bc028fc + 3bc028fa: 8082 ret + 3bc028fc: 6514 ld a3,8(a0) + 3bc028fe: 03878793 addi a5,a5,56 + 3bc02902: e51c sd a5,8(a0) + 3bc02904: faa73c23 sd a0,-72(a4) + 3bc02908: fcd73023 sd a3,-64(a4) + 3bc0290c: e29c sd a5,0(a3) + 3bc0290e: 87ba mv a5,a4 + 3bc02910: bfc9 j 3bc028e2 + +000000003bc02912 : + 3bc02912: 65b8 ld a4,72(a1) + 3bc02914: 61b4 ld a3,64(a1) + 3bc02916: 1101 addi sp,sp,-32 + 3bc02918: ec06 sd ra,24(sp) + 3bc0291a: e822 sd s0,16(sp) + 3bc0291c: 07054403 lbu s0,112(a0) + 3bc02920: e698 sd a4,8(a3) + 3bc02922: e314 sd a3,0(a4) + 3bc02924: 5d98 lw a4,56(a1) + 3bc02926: 04058793 addi a5,a1,64 + 3bc0292a: e1bc sd a5,64(a1) + 3bc0292c: e5bc sd a5,72(a1) + 3bc0292e: fdc00793 li a5,-36 + 3bc02932: 00f71363 bne a4,a5,3bc02938 + 3bc02936: dd90 sw a2,56(a1) + 3bc02938: 4785 li a5,1 + 3bc0293a: 06f50823 sb a5,112(a0) + 3bc0293e: 759c ld a5,40(a1) + 3bc02940: e42a sd a0,8(sp) + 3bc02942: 9782 jalr a5 + 3bc02944: 6522 ld a0,8(sp) + 3bc02946: 06850823 sb s0,112(a0) + 3bc0294a: 60e2 ld ra,24(sp) + 3bc0294c: 6442 ld s0,16(sp) + 3bc0294e: 6105 addi sp,sp,32 + 3bc02950: 8082 ret + +000000003bc02952 : + 3bc02952: c539 beqz a0,3bc029a0 + 3bc02954: 6d14 ld a3,24(a0) + 3bc02956: 00008797 auipc a5,0x8 + 3bc0295a: 50a78793 addi a5,a5,1290 # 3bc0ae60 + 3bc0295e: 5729 li a4,-22 + 3bc02960: 04f68163 beq a3,a5,3bc029a2 + 3bc02964: 872a mv a4,a0 + 3bc02966: 6e97478b ldib a5,(a4),9,3 + 3bc0296a: fc078793 addi a5,a5,-64 + 3bc0296e: 86be mv a3,a5 + 3bc02970: 6e86c60b ldib a2,(a3),8,3 + 3bc02974: 02e69163 bne a3,a4,3bc02996 + 3bc02978: 5729 li a4,-22 + 3bc0297a: 02f59463 bne a1,a5,3bc029a2 + 3bc0297e: 1141 addi sp,sp,-16 + 3bc02980: fca00613 li a2,-54 + 3bc02984: 85be mv a1,a5 + 3bc02986: e406 sd ra,8(sp) + 3bc02988: f8bff0ef jal ra,3bc02912 + 3bc0298c: 60a2 ld ra,8(sp) + 3bc0298e: 4701 li a4,0 + 3bc02990: 853a mv a0,a4 + 3bc02992: 0141 addi sp,sp,16 + 3bc02994: 8082 ret + 3bc02996: fef584e3 beq a1,a5,3bc0297e + 3bc0299a: fc060793 addi a5,a2,-64 + 3bc0299e: bfc1 j 3bc0296e + 3bc029a0: 5729 li a4,-22 + 3bc029a2: 853a mv a0,a4 + 3bc029a4: 8082 ret + +000000003bc029a6 : + 3bc029a6: 7179 addi sp,sp,-48 + 3bc029a8: f022 sd s0,32(sp) + 3bc029aa: ec26 sd s1,24(sp) + 3bc029ac: f406 sd ra,40(sp) + 3bc029ae: 84ae mv s1,a1 + 3bc029b0: 04850413 addi s0,a0,72 + 3bc029b4: 652c ld a1,72(a0) + 3bc029b6: 00859763 bne a1,s0,3bc029c4 + 3bc029ba: 70a2 ld ra,40(sp) + 3bc029bc: 7402 ld s0,32(sp) + 3bc029be: 64e2 ld s1,24(sp) + 3bc029c0: 6145 addi sp,sp,48 + 3bc029c2: 8082 ret + 3bc029c4: 8626 mv a2,s1 + 3bc029c6: fc058593 addi a1,a1,-64 + 3bc029ca: e42a sd a0,8(sp) + 3bc029cc: f47ff0ef jal ra,3bc02912 + 3bc029d0: 6522 ld a0,8(sp) + 3bc029d2: b7cd j 3bc029b4 + +000000003bc029d4 : + 3bc029d4: 7139 addi sp,sp,-64 + 3bc029d6: f822 sd s0,48(sp) + 3bc029d8: fc06 sd ra,56(sp) + 3bc029da: f426 sd s1,40(sp) + 3bc029dc: f04a sd s2,32(sp) + 3bc029de: ec4e sd s3,24(sp) + 3bc029e0: e852 sd s4,16(sp) + 3bc029e2: e456 sd s5,8(sp) + 3bc029e4: 00011417 auipc s0,0x11 + 3bc029e8: 9dc43403 ld s0,-1572(s0) # 3bc133c0 + 3bc029ec: cc3d beqz s0,3bc02a6a + 3bc029ee: 84aa mv s1,a0 + 3bc029f0: 5529 li a0,-22 + 3bc029f2: c0bd beqz s1,3bc02a58 + 3bc029f4: 7c18 ld a4,56(s0) + 3bc029f6: 06971163 bne a4,s1,3bc02a58 + 3bc029fa: 5018 lw a4,32(s0) + 3bc029fc: 02043c23 sd zero,56(s0) + 3bc02a00: 89a6 mv s3,s1 + 3bc02a02: e311 bnez a4,3bc02a06 + 3bc02a04: 4981 li s3,0 + 3bc02a06: 02042023 sw zero,32(s0) + 3bc02a0a: 05040913 addi s2,s0,80 + 3bc02a0e: 25040a13 addi s4,s0,592 + 3bc02a12: 4a85 li s5,1 + 3bc02a14: 07590823 sb s5,112(s2) + 3bc02a18: 854a mv a0,s2 + 3bc02a1a: fc600593 li a1,-58 + 3bc02a1e: 08090913 addi s2,s2,128 + 3bc02a22: f85ff0ef jal ra,3bc029a6 + 3bc02a26: ff4917e3 bne s2,s4,3bc02a14 + 3bc02a2a: 00098663 beqz s3,3bc02a36 + 3bc02a2e: 0289b783 ld a5,40(s3) + 3bc02a32: 8522 mv a0,s0 + 3bc02a34: 9782 jalr a5 + 3bc02a36: 8522 mv a0,s0 + 3bc02a38: e95ff0ef jal ra,3bc028cc + 3bc02a3c: 6c9c ld a5,24(s1) + 3bc02a3e: 8522 mv a0,s0 + 3bc02a40: 9782 jalr a5 + 3bc02a42: 8522 mv a0,s0 + 3bc02a44: 4581 li a1,0 + 3bc02a46: 106010ef jal ra,3bc03b4c + 3bc02a4a: 4501 li a0,0 + 3bc02a4c: 04042423 sw zero,72(s0) + 3bc02a50: 02042023 sw zero,32(s0) + 3bc02a54: 24040823 sb zero,592(s0) + 3bc02a58: 70e2 ld ra,56(sp) + 3bc02a5a: 7442 ld s0,48(sp) + 3bc02a5c: 74a2 ld s1,40(sp) + 3bc02a5e: 7902 ld s2,32(sp) + 3bc02a60: 69e2 ld s3,24(sp) + 3bc02a62: 6a42 ld s4,16(sp) + 3bc02a64: 6aa2 ld s5,8(sp) + 3bc02a66: 6121 addi sp,sp,64 + 3bc02a68: 8082 ret + 3bc02a6a: 5535 li a0,-19 + 3bc02a6c: b7f5 j 3bc02a58 + +000000003bc02a6e : + 3bc02a6e: 1101 addi sp,sp,-32 + 3bc02a70: e822 sd s0,16(sp) + 3bc02a72: e426 sd s1,8(sp) + 3bc02a74: ec06 sd ra,24(sp) + 3bc02a76: 842e mv s0,a1 + 3bc02a78: 84aa mv s1,a0 + 3bc02a7a: cc5fe0ef jal ra,3bc0173e + 3bc02a7e: 2501 sext.w a0,a0 + 3bc02a80: 8d41 or a0,a0,s0 + 3bc02a82: 6442 ld s0,16(sp) + 3bc02a84: 60e2 ld ra,24(sp) + 3bc02a86: 85a6 mv a1,s1 + 3bc02a88: 64a2 ld s1,8(sp) + 3bc02a8a: 6105 addi sp,sp,32 + 3bc02a8c: cb9fe06f j 3bc01744 + +000000003bc02a90 : + 3bc02a90: 1101 addi sp,sp,-32 + 3bc02a92: e822 sd s0,16(sp) + 3bc02a94: ec06 sd ra,24(sp) + 3bc02a96: 842a mv s0,a0 + 3bc02a98: e42e sd a1,8(sp) + 3bc02a9a: ca5fe0ef jal ra,3bc0173e + 3bc02a9e: 65a2 ld a1,8(sp) + 3bc02aa0: 60e2 ld ra,24(sp) + 3bc02aa2: 2501 sext.w a0,a0 + 3bc02aa4: fff5c793 not a5,a1 + 3bc02aa8: 85a2 mv a1,s0 + 3bc02aaa: 6442 ld s0,16(sp) + 3bc02aac: 8d7d and a0,a0,a5 + 3bc02aae: 6105 addi sp,sp,32 + 3bc02ab0: c95fe06f j 3bc01744 + +000000003bc02ab4 : + 3bc02ab4: 1101 addi sp,sp,-32 + 3bc02ab6: e426 sd s1,8(sp) + 3bc02ab8: 00011497 auipc s1,0x11 + 3bc02abc: 90048493 addi s1,s1,-1792 # 3bc133b8 + 3bc02ac0: 6088 ld a0,0(s1) + 3bc02ac2: e822 sd s0,16(sp) + 3bc02ac4: 6405 lui s0,0x1 + 3bc02ac6: 80440413 addi s0,s0,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02aca: 4585 li a1,1 + 3bc02acc: 9522 add a0,a0,s0 + 3bc02ace: ec06 sd ra,24(sp) + 3bc02ad0: f9fff0ef jal ra,3bc02a6e + 3bc02ad4: 4529 li a0,10 + 3bc02ad6: edefd0ef jal ra,3bc001b4 + 3bc02ada: 6088 ld a0,0(s1) + 3bc02adc: 4585 li a1,1 + 3bc02ade: 9522 add a0,a0,s0 + 3bc02ae0: fb1ff0ef jal ra,3bc02a90 + 3bc02ae4: 60e2 ld ra,24(sp) + 3bc02ae6: 6442 ld s0,16(sp) + 3bc02ae8: 64a2 ld s1,8(sp) + 3bc02aea: 4501 li a0,0 + 3bc02aec: 6105 addi sp,sp,32 + 3bc02aee: 8082 ret + +000000003bc02af0 : + 3bc02af0: 7179 addi sp,sp,-48 + 3bc02af2: f022 sd s0,32(sp) + 3bc02af4: ec26 sd s1,24(sp) + 3bc02af6: e84a sd s2,16(sp) + 3bc02af8: e44e sd s3,8(sp) + 3bc02afa: f406 sd ra,40(sp) + 3bc02afc: 892a mv s2,a0 + 3bc02afe: 89ae mv s3,a1 + 3bc02b00: 84b2 mv s1,a2 + 3bc02b02: 4401 li s0,0 + 3bc02b04: 00941b63 bne s0,s1,3bc02b1a + 3bc02b08: fc400513 li a0,-60 + 3bc02b0c: 70a2 ld ra,40(sp) + 3bc02b0e: 7402 ld s0,32(sp) + 3bc02b10: 64e2 ld s1,24(sp) + 3bc02b12: 6942 ld s2,16(sp) + 3bc02b14: 69a2 ld s3,8(sp) + 3bc02b16: 6145 addi sp,sp,48 + 3bc02b18: 8082 ret + 3bc02b1a: 854a mv a0,s2 + 3bc02b1c: c23fe0ef jal ra,3bc0173e + 3bc02b20: 2501 sext.w a0,a0 + 3bc02b22: 01357533 and a0,a0,s3 + 3bc02b26: e511 bnez a0,3bc02b32 + 3bc02b28: 4505 li a0,1 + 3bc02b2a: e60fd0ef jal ra,3bc0018a + 3bc02b2e: 2405 addiw s0,s0,1 + 3bc02b30: bfd1 j 3bc02b04 + 3bc02b32: 4501 li a0,0 + 3bc02b34: bfe1 j 3bc02b0c + +000000003bc02b36 : + 3bc02b36: 1101 addi sp,sp,-32 + 3bc02b38: e426 sd s1,8(sp) + 3bc02b3a: 00011497 auipc s1,0x11 + 3bc02b3e: 87e48493 addi s1,s1,-1922 # 3bc133b8 + 3bc02b42: e822 sd s0,16(sp) + 3bc02b44: 842a mv s0,a0 + 3bc02b46: 6088 ld a0,0(s1) + 3bc02b48: 6609 lui a2,0x2 + 3bc02b4a: 71060613 addi a2,a2,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc02b4e: 800005b7 lui a1,0x80000 + 3bc02b52: 0541 addi a0,a0,16 + 3bc02b54: ec06 sd ra,24(sp) + 3bc02b56: f9bff0ef jal ra,3bc02af0 + 3bc02b5a: c919 beqz a0,3bc02b70 + 3bc02b5c: 00008597 auipc a1,0x8 + 3bc02b60: 27c58593 addi a1,a1,636 # 3bc0add8 <__func__.3> + 3bc02b64: 00008517 auipc a0,0x8 + 3bc02b68: 06c50513 addi a0,a0,108 # 3bc0abd0 <__func__.5+0x30> + 3bc02b6c: fecfd0ef jal ra,3bc00358 + 3bc02b70: 608c ld a1,0(s1) + 3bc02b72: 0064151b slliw a0,s0,0x6 + 3bc02b76: 02056513 ori a0,a0,32 + 3bc02b7a: 05c1 addi a1,a1,16 + 3bc02b7c: 2501 sext.w a0,a0 + 3bc02b7e: bc7fe0ef jal ra,3bc01744 + 3bc02b82: 06400413 li s0,100 + 3bc02b86: 6088 ld a0,0(s1) + 3bc02b88: 0541 addi a0,a0,16 + 3bc02b8a: bb5fe0ef jal ra,3bc0173e + 3bc02b8e: 0005061b sext.w a2,a0 + 3bc02b92: 02057513 andi a0,a0,32 + 3bc02b96: cd09 beqz a0,3bc02bb0 + 3bc02b98: 347d addiw s0,s0,-1 + 3bc02b9a: e015 bnez s0,3bc02bbe + 3bc02b9c: 00008597 auipc a1,0x8 + 3bc02ba0: 23c58593 addi a1,a1,572 # 3bc0add8 <__func__.3> + 3bc02ba4: 00008517 auipc a0,0x8 + 3bc02ba8: 04c50513 addi a0,a0,76 # 3bc0abf0 <__func__.5+0x50> + 3bc02bac: facfd0ef jal ra,3bc00358 + 3bc02bb0: 6442 ld s0,16(sp) + 3bc02bb2: 60e2 ld ra,24(sp) + 3bc02bb4: 64a2 ld s1,8(sp) + 3bc02bb6: 4505 li a0,1 + 3bc02bb8: 6105 addi sp,sp,32 + 3bc02bba: dd0fd06f j 3bc0018a + 3bc02bbe: 4505 li a0,1 + 3bc02bc0: dcafd0ef jal ra,3bc0018a + 3bc02bc4: b7c9 j 3bc02b86 + +000000003bc02bc6 : + 3bc02bc6: 1101 addi sp,sp,-32 + 3bc02bc8: e426 sd s1,8(sp) + 3bc02bca: e04a sd s2,0(sp) + 3bc02bcc: ec06 sd ra,24(sp) + 3bc02bce: e822 sd s0,16(sp) + 3bc02bd0: 07154403 lbu s0,113(a0) + 3bc02bd4: 84aa mv s1,a0 + 3bc02bd6: 60000913 li s2,1536 + 3bc02bda: 883d andi s0,s0,15 + 3bc02bdc: e019 bnez s0,3bc02be2 + 3bc02bde: 10000913 li s2,256 + 3bc02be2: 8526 mv a0,s1 + 3bc02be4: dc3ff0ef jal ra,3bc029a6 + 3bc02be8: 6505 lui a0,0x1 + 3bc02bea: 91850513 addi a0,a0,-1768 # 918 <__BSS_SIZE__-0x52f8> + 3bc02bee: 0416 slli s0,s0,0x5 + 3bc02bf0: 942a add s0,s0,a0 + 3bc02bf2: 00010517 auipc a0,0x10 + 3bc02bf6: 7c653503 ld a0,1990(a0) # 3bc133b8 + 3bc02bfa: 9522 add a0,a0,s0 + 3bc02bfc: b43fe0ef jal ra,3bc0173e + 3bc02c00: 3c05350b extu a0,a0,15,0 + 3bc02c04: 050a slli a0,a0,0x2 + 3bc02c06: 01257963 bgeu a0,s2,3bc02c18 + 3bc02c0a: 6442 ld s0,16(sp) + 3bc02c0c: 5ca8 lw a0,120(s1) + 3bc02c0e: 60e2 ld ra,24(sp) + 3bc02c10: 64a2 ld s1,8(sp) + 3bc02c12: 6902 ld s2,0(sp) + 3bc02c14: 6105 addi sp,sp,32 + 3bc02c16: b705 j 3bc02b36 + 3bc02c18: 60e2 ld ra,24(sp) + 3bc02c1a: 6442 ld s0,16(sp) + 3bc02c1c: 64a2 ld s1,8(sp) + 3bc02c1e: 6902 ld s2,0(sp) + 3bc02c20: 6105 addi sp,sp,32 + 3bc02c22: 8082 ret + +000000003bc02c24 : + 3bc02c24: 27052783 lw a5,624(a0) + 3bc02c28: cba1 beqz a5,3bc02c78 + 3bc02c2a: 1101 addi sp,sp,-32 + 3bc02c2c: e822 sd s0,16(sp) + 3bc02c2e: e426 sd s1,8(sp) + 3bc02c30: e04a sd s2,0(sp) + 3bc02c32: ec06 sd ra,24(sp) + 3bc02c34: 842a mv s0,a0 + 3bc02c36: 26052823 sw zero,624(a0) + 3bc02c3a: 0d050493 addi s1,a0,208 + 3bc02c3e: 25050913 addi s2,a0,592 + 3bc02c42: 6c9c ld a5,24(s1) + 3bc02c44: c791 beqz a5,3bc02c50 + 3bc02c46: fc600593 li a1,-58 + 3bc02c4a: 8526 mv a0,s1 + 3bc02c4c: f7bff0ef jal ra,3bc02bc6 + 3bc02c50: 08048493 addi s1,s1,128 + 3bc02c54: ff2497e3 bne s1,s2,3bc02c42 + 3bc02c58: 7c1c ld a5,56(s0) + 3bc02c5a: 779c ld a5,40(a5) + 3bc02c5c: cb81 beqz a5,3bc02c6c + 3bc02c5e: 8522 mv a0,s0 + 3bc02c60: 6442 ld s0,16(sp) + 3bc02c62: 60e2 ld ra,24(sp) + 3bc02c64: 64a2 ld s1,8(sp) + 3bc02c66: 6902 ld s2,0(sp) + 3bc02c68: 6105 addi sp,sp,32 + 3bc02c6a: 8782 jr a5 + 3bc02c6c: 60e2 ld ra,24(sp) + 3bc02c6e: 6442 ld s0,16(sp) + 3bc02c70: 64a2 ld s1,8(sp) + 3bc02c72: 6902 ld s2,0(sp) + 3bc02c74: 6105 addi sp,sp,32 + 3bc02c76: 8082 ret + 3bc02c78: 8082 ret + +000000003bc02c7a : + 3bc02c7a: 1101 addi sp,sp,-32 + 3bc02c7c: e822 sd s0,16(sp) + 3bc02c7e: 00010417 auipc s0,0x10 + 3bc02c82: 73a40413 addi s0,s0,1850 # 3bc133b8 + 3bc02c86: 6008 ld a0,0(s0) + 3bc02c88: 6609 lui a2,0x2 + 3bc02c8a: 71060613 addi a2,a2,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc02c8e: 800005b7 lui a1,0x80000 + 3bc02c92: 0541 addi a0,a0,16 + 3bc02c94: ec06 sd ra,24(sp) + 3bc02c96: e426 sd s1,8(sp) + 3bc02c98: e59ff0ef jal ra,3bc02af0 + 3bc02c9c: c919 beqz a0,3bc02cb2 + 3bc02c9e: 00008597 auipc a1,0x8 + 3bc02ca2: 15258593 addi a1,a1,338 # 3bc0adf0 <__func__.4> + 3bc02ca6: 00008517 auipc a0,0x8 + 3bc02caa: f2a50513 addi a0,a0,-214 # 3bc0abd0 <__func__.5+0x30> + 3bc02cae: eaafd0ef jal ra,3bc00358 + 3bc02cb2: 600c ld a1,0(s0) + 3bc02cb4: 40000513 li a0,1024 + 3bc02cb8: 018004b7 lui s1,0x1800 + 3bc02cbc: 02458593 addi a1,a1,36 + 3bc02cc0: a85fe0ef jal ra,3bc01744 + 3bc02cc4: 600c ld a1,0(s0) + 3bc02cc6: 00400537 lui a0,0x400 + 3bc02cca: 40050513 addi a0,a0,1024 # 400400 <__BSS_SIZE__+0x3fa7f0> + 3bc02cce: 02858593 addi a1,a1,40 + 3bc02cd2: a73fe0ef jal ra,3bc01744 + 3bc02cd6: 600c ld a1,0(s0) + 3bc02cd8: 44048513 addi a0,s1,1088 # 1800440 <__BSS_SIZE__+0x17fa830> + 3bc02cdc: 10458593 addi a1,a1,260 + 3bc02ce0: a65fe0ef jal ra,3bc01744 + 3bc02ce4: 600c ld a1,0(s0) + 3bc02ce6: 5c048513 addi a0,s1,1472 + 3bc02cea: 10858593 addi a1,a1,264 + 3bc02cee: a57fe0ef jal ra,3bc01744 + 3bc02cf2: 600c ld a1,0(s0) + 3bc02cf4: 74048513 addi a0,s1,1856 + 3bc02cf8: 06400493 li s1,100 + 3bc02cfc: 10c58593 addi a1,a1,268 + 3bc02d00: a45fe0ef jal ra,3bc01744 + 3bc02d04: 600c ld a1,0(s0) + 3bc02d06: 43000513 li a0,1072 + 3bc02d0a: 05c1 addi a1,a1,16 + 3bc02d0c: a39fe0ef jal ra,3bc01744 + 3bc02d10: 6008 ld a0,0(s0) + 3bc02d12: 0541 addi a0,a0,16 + 3bc02d14: a2bfe0ef jal ra,3bc0173e + 3bc02d18: 0005061b sext.w a2,a0 + 3bc02d1c: 03057513 andi a0,a0,48 + 3bc02d20: c50d beqz a0,3bc02d4a + 3bc02d22: 34fd addiw s1,s1,-1 + 3bc02d24: ec99 bnez s1,3bc02d42 + 3bc02d26: 6442 ld s0,16(sp) + 3bc02d28: 60e2 ld ra,24(sp) + 3bc02d2a: 64a2 ld s1,8(sp) + 3bc02d2c: 00008597 auipc a1,0x8 + 3bc02d30: 0c458593 addi a1,a1,196 # 3bc0adf0 <__func__.4> + 3bc02d34: 00008517 auipc a0,0x8 + 3bc02d38: eec50513 addi a0,a0,-276 # 3bc0ac20 <__func__.5+0x80> + 3bc02d3c: 6105 addi sp,sp,32 + 3bc02d3e: e1afd06f j 3bc00358 + 3bc02d42: 4505 li a0,1 + 3bc02d44: c46fd0ef jal ra,3bc0018a + 3bc02d48: b7e1 j 3bc02d10 + 3bc02d4a: 60e2 ld ra,24(sp) + 3bc02d4c: 6442 ld s0,16(sp) + 3bc02d4e: 64a2 ld s1,8(sp) + 3bc02d50: 6105 addi sp,sp,32 + 3bc02d52: 8082 ret + +000000003bc02d54 <_dwc2_ep_disable.isra.0>: + 3bc02d54: 00010717 auipc a4,0x10 + 3bc02d58: 66c73703 ld a4,1644(a4) # 3bc133c0 + 3bc02d5c: 05070713 addi a4,a4,80 + 3bc02d60: 07154683 lbu a3,113(a0) + 3bc02d64: 00e51c63 bne a0,a4,3bc02d7c <_dwc2_ep_disable.isra.0+0x28> + 3bc02d68: 00008597 auipc a1,0x8 + 3bc02d6c: 04058593 addi a1,a1,64 # 3bc0ada8 <__func__.1> + 3bc02d70: 00008517 auipc a0,0x8 + 3bc02d74: ee050513 addi a0,a0,-288 # 3bc0ac50 <__func__.5+0xb0> + 3bc02d78: de0fd06f j 3bc00358 + 3bc02d7c: 7139 addi sp,sp,-64 + 3bc02d7e: f04a sd s2,32(sp) + 3bc02d80: ec4e sd s3,24(sp) + 3bc02d82: 00010917 auipc s2,0x10 + 3bc02d86: 63690913 addi s2,s2,1590 # 3bc133b8 + 3bc02d8a: fc06 sd ra,56(sp) + 3bc02d8c: f822 sd s0,48(sp) + 3bc02d8e: f426 sd s1,40(sp) + 3bc02d90: e852 sd s4,16(sp) + 3bc02d92: e456 sd s5,8(sp) + 3bc02d94: fc76b70b extu a4,a3,63,7 + 3bc02d98: 00093983 ld s3,0(s2) + 3bc02d9c: 00f6f793 andi a5,a3,15 + 3bc02da0: 0e070563 beqz a4,3bc02e8a <_dwc2_ep_disable.isra.0+0x136> + 3bc02da4: 04878793 addi a5,a5,72 + 3bc02da8: 0796 slli a5,a5,0x5 + 3bc02daa: 99be add s3,s3,a5 + 3bc02dac: 84aa mv s1,a0 + 3bc02dae: 854e mv a0,s3 + 3bc02db0: 98ffe0ef jal ra,3bc0173e + 3bc02db4: 00050a1b sext.w s4,a0 + 3bc02db8: 080a5a63 bgez s4,3bc02e4c <_dwc2_ep_disable.isra.0+0xf8> + 3bc02dbc: 0714c783 lbu a5,113(s1) + 3bc02dc0: 00093503 ld a0,0(s2) + 3bc02dc4: fc77b70b extu a4,a5,63,7 + 3bc02dc8: 00f7f413 andi s0,a5,15 + 3bc02dcc: c371 beqz a4,3bc02e90 <_dwc2_ep_disable.isra.0+0x13c> + 3bc02dce: 04840413 addi s0,s0,72 + 3bc02dd2: 0416 slli s0,s0,0x5 + 3bc02dd4: 00850ab3 add s5,a0,s0 + 3bc02dd8: 0421 addi s0,s0,8 + 3bc02dda: 942a add s0,s0,a0 + 3bc02ddc: 080005b7 lui a1,0x8000 + 3bc02de0: 8556 mv a0,s5 + 3bc02de2: c8dff0ef jal ra,3bc02a6e + 3bc02de6: 06400613 li a2,100 + 3bc02dea: 04000593 li a1,64 + 3bc02dee: 8522 mv a0,s0 + 3bc02df0: d01ff0ef jal ra,3bc02af0 + 3bc02df4: c919 beqz a0,3bc02e0a <_dwc2_ep_disable.isra.0+0xb6> + 3bc02df6: 00008597 auipc a1,0x8 + 3bc02dfa: f9a58593 addi a1,a1,-102 # 3bc0ad90 <__func__.0> + 3bc02dfe: 00008517 auipc a0,0x8 + 3bc02e02: e6a50513 addi a0,a0,-406 # 3bc0ac68 <__func__.5+0xc8> + 3bc02e06: d52fd0ef jal ra,3bc00358 + 3bc02e0a: 480005b7 lui a1,0x48000 + 3bc02e0e: 8556 mv a0,s5 + 3bc02e10: c5fff0ef jal ra,3bc02a6e + 3bc02e14: 06400613 li a2,100 + 3bc02e18: 4589 li a1,2 + 3bc02e1a: 8522 mv a0,s0 + 3bc02e1c: cd5ff0ef jal ra,3bc02af0 + 3bc02e20: c919 beqz a0,3bc02e36 <_dwc2_ep_disable.isra.0+0xe2> + 3bc02e22: 00008597 auipc a1,0x8 + 3bc02e26: f6e58593 addi a1,a1,-146 # 3bc0ad90 <__func__.0> + 3bc02e2a: 00008517 auipc a0,0x8 + 3bc02e2e: e7e50513 addi a0,a0,-386 # 3bc0aca8 <__func__.5+0x108> + 3bc02e32: d26fd0ef jal ra,3bc00358 + 3bc02e36: 4589 li a1,2 + 3bc02e38: 8522 mv a0,s0 + 3bc02e3a: c35ff0ef jal ra,3bc02a6e + 3bc02e3e: 07148783 lb a5,113(s1) + 3bc02e42: 0a07d163 bgez a5,3bc02ee4 <_dwc2_ep_disable.isra.0+0x190> + 3bc02e46: 5ca8 lw a0,120(s1) + 3bc02e48: cefff0ef jal ra,3bc02b36 + 3bc02e4c: 7fff8537 lui a0,0x7fff8 + 3bc02e50: 157d addi a0,a0,-1 + 3bc02e52: 00aa7a33 and s4,s4,a0 + 3bc02e56: 08000537 lui a0,0x8000 + 3bc02e5a: 85ce mv a1,s3 + 3bc02e5c: 00aa6533 or a0,s4,a0 + 3bc02e60: 8e5fe0ef jal ra,3bc01744 + 3bc02e64: 8526 mv a0,s1 + 3bc02e66: fc600593 li a1,-58 + 3bc02e6a: d5dff0ef jal ra,3bc02bc6 + 3bc02e6e: 4785 li a5,1 + 3bc02e70: 06f48823 sb a5,112(s1) + 3bc02e74: 70e2 ld ra,56(sp) + 3bc02e76: 7442 ld s0,48(sp) + 3bc02e78: 0404b023 sd zero,64(s1) + 3bc02e7c: 7902 ld s2,32(sp) + 3bc02e7e: 74a2 ld s1,40(sp) + 3bc02e80: 69e2 ld s3,24(sp) + 3bc02e82: 6a42 ld s4,16(sp) + 3bc02e84: 6aa2 ld s5,8(sp) + 3bc02e86: 6121 addi sp,sp,64 + 3bc02e88: 8082 ret + 3bc02e8a: 05878793 addi a5,a5,88 + 3bc02e8e: bf29 j 3bc02da8 <_dwc2_ep_disable.isra.0+0x54> + 3bc02e90: 05840413 addi s0,s0,88 + 3bc02e94: 0416 slli s0,s0,0x5 + 3bc02e96: 00850ab3 add s5,a0,s0 + 3bc02e9a: 0421 addi s0,s0,8 + 3bc02e9c: 942a add s0,s0,a0 + 3bc02e9e: 0551 addi a0,a0,20 + 3bc02ea0: 89ffe0ef jal ra,3bc0173e + 3bc02ea4: 08057513 andi a0,a0,128 + 3bc02ea8: e919 bnez a0,3bc02ebe <_dwc2_ep_disable.isra.0+0x16a> + 3bc02eaa: 00093503 ld a0,0(s2) + 3bc02eae: 6785 lui a5,0x1 + 3bc02eb0: 80478793 addi a5,a5,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02eb4: 20000593 li a1,512 + 3bc02eb8: 953e add a0,a0,a5 + 3bc02eba: bb5ff0ef jal ra,3bc02a6e + 3bc02ebe: 00093503 ld a0,0(s2) + 3bc02ec2: 06400613 li a2,100 + 3bc02ec6: 08000593 li a1,128 + 3bc02eca: 0551 addi a0,a0,20 + 3bc02ecc: c25ff0ef jal ra,3bc02af0 + 3bc02ed0: dd0d beqz a0,3bc02e0a <_dwc2_ep_disable.isra.0+0xb6> + 3bc02ed2: 00008597 auipc a1,0x8 + 3bc02ed6: ebe58593 addi a1,a1,-322 # 3bc0ad90 <__func__.0> + 3bc02eda: 00008517 auipc a0,0x8 + 3bc02ede: dae50513 addi a0,a0,-594 # 3bc0ac88 <__func__.5+0xe8> + 3bc02ee2: b715 j 3bc02e06 <_dwc2_ep_disable.isra.0+0xb2> + 3bc02ee4: 00093503 ld a0,0(s2) + 3bc02ee8: 6785 lui a5,0x1 + 3bc02eea: 80478793 addi a5,a5,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02eee: 40000593 li a1,1024 + 3bc02ef2: 953e add a0,a0,a5 + 3bc02ef4: b7bff0ef jal ra,3bc02a6e + 3bc02ef8: bf91 j 3bc02e4c <_dwc2_ep_disable.isra.0+0xf8> + +000000003bc02efa : + 3bc02efa: cd09 beqz a0,3bc02f14 + 3bc02efc: 6138 ld a4,64(a0) + 3bc02efe: 57a9 li a5,-22 + 3bc02f00: cb19 beqz a4,3bc02f16 + 3bc02f02: 1141 addi sp,sp,-16 + 3bc02f04: e406 sd ra,8(sp) + 3bc02f06: e4fff0ef jal ra,3bc02d54 <_dwc2_ep_disable.isra.0> + 3bc02f0a: 60a2 ld ra,8(sp) + 3bc02f0c: 4781 li a5,0 + 3bc02f0e: 853e mv a0,a5 + 3bc02f10: 0141 addi sp,sp,16 + 3bc02f12: 8082 ret + 3bc02f14: 57a9 li a5,-22 + 3bc02f16: 853e mv a0,a5 + 3bc02f18: 8082 ret + +000000003bc02f1a : + 3bc02f1a: 7139 addi sp,sp,-64 + 3bc02f1c: f426 sd s1,40(sp) + 3bc02f1e: f04a sd s2,32(sp) + 3bc02f20: ec4e sd s3,24(sp) + 3bc02f22: 84aa mv s1,a0 + 3bc02f24: 04053983 ld s3,64(a0) + 3bc02f28: 892e mv s2,a1 + 3bc02f2a: 05050513 addi a0,a0,80 + 3bc02f2e: fca00593 li a1,-54 + 3bc02f32: fc06 sd ra,56(sp) + 3bc02f34: f822 sd s0,48(sp) + 3bc02f36: e852 sd s4,16(sp) + 3bc02f38: e456 sd s5,8(sp) + 3bc02f3a: c8dff0ef jal ra,3bc02bc6 + 3bc02f3e: 8526 mv a0,s1 + 3bc02f40: 98dff0ef jal ra,3bc028cc + 3bc02f44: 00010417 auipc s0,0x10 + 3bc02f48: 47440413 addi s0,s0,1140 # 3bc133b8 + 3bc02f4c: 22091863 bnez s2,3bc0317c + 3bc02f50: 6008 ld a0,0(s0) + 3bc02f52: 04050513 addi a0,a0,64 + 3bc02f56: fe8fe0ef jal ra,3bc0173e + 3bc02f5a: 600c ld a1,0(s0) + 3bc02f5c: 6791 lui a5,0x4 + 3bc02f5e: 3c05350b extu a0,a0,15,0 + 3bc02f62: 20978793 addi a5,a5,521 # 4209 <__BSS_SIZE__-0x1a07> + 3bc02f66: 05c1 addi a1,a1,16 + 3bc02f68: 06a7ee63 bltu a5,a0,3bc02fe4 + 3bc02f6c: 4505 li a0,1 + 3bc02f6e: fd6fe0ef jal ra,3bc01744 + 3bc02f72: 03300a13 li s4,51 + 3bc02f76: 4505 li a0,1 + 3bc02f78: a12fd0ef jal ra,3bc0018a + 3bc02f7c: 6008 ld a0,0(s0) + 3bc02f7e: 3a7d addiw s4,s4,-1 + 3bc02f80: 0541 addi a0,a0,16 + 3bc02f82: fbcfe0ef jal ra,3bc0173e + 3bc02f86: 0005061b sext.w a2,a0 + 3bc02f8a: 020a1463 bnez s4,3bc02fb2 + 3bc02f8e: 00008597 auipc a1,0x8 + 3bc02f92: e3258593 addi a1,a1,-462 # 3bc0adc0 <__func__.2> + 3bc02f96: 00008517 auipc a0,0x8 + 3bc02f9a: d3250513 addi a0,a0,-718 # 3bc0acc8 <__func__.5+0x128> + 3bc02f9e: 7442 ld s0,48(sp) + 3bc02fa0: 70e2 ld ra,56(sp) + 3bc02fa2: 74a2 ld s1,40(sp) + 3bc02fa4: 7902 ld s2,32(sp) + 3bc02fa6: 69e2 ld s3,24(sp) + 3bc02fa8: 6a42 ld s4,16(sp) + 3bc02faa: 6aa2 ld s5,8(sp) + 3bc02fac: 6121 addi sp,sp,64 + 3bc02fae: baafd06f j 3bc00358 + 3bc02fb2: 8a05 andi a2,a2,1 + 3bc02fb4: f269 bnez a2,3bc02f76 + 3bc02fb6: 03300a13 li s4,51 + 3bc02fba: 4505 li a0,1 + 3bc02fbc: 9cefd0ef jal ra,3bc0018a + 3bc02fc0: 6008 ld a0,0(s0) + 3bc02fc2: 3a7d addiw s4,s4,-1 + 3bc02fc4: 0541 addi a0,a0,16 + 3bc02fc6: f78fe0ef jal ra,3bc0173e + 3bc02fca: 0005061b sext.w a2,a0 + 3bc02fce: 060a1963 bnez s4,3bc03040 + 3bc02fd2: 00008597 auipc a1,0x8 + 3bc02fd6: dee58593 addi a1,a1,-530 # 3bc0adc0 <__func__.2> + 3bc02fda: 00008517 auipc a0,0x8 + 3bc02fde: d3e50513 addi a0,a0,-706 # 3bc0ad18 <__func__.5+0x178> + 3bc02fe2: bf75 j 3bc02f9e + 3bc02fe4: 4505 li a0,1 + 3bc02fe6: f5efe0ef jal ra,3bc01744 + 3bc02fea: 03300a93 li s5,51 + 3bc02fee: 20000a37 lui s4,0x20000 + 3bc02ff2: 4505 li a0,1 + 3bc02ff4: 996fd0ef jal ra,3bc0018a + 3bc02ff8: 6008 ld a0,0(s0) + 3bc02ffa: 3afd addiw s5,s5,-1 + 3bc02ffc: 0541 addi a0,a0,16 + 3bc02ffe: f40fe0ef jal ra,3bc0173e + 3bc03002: 0005061b sext.w a2,a0 + 3bc03006: 000a9b63 bnez s5,3bc0301c + 3bc0300a: 00008597 auipc a1,0x8 + 3bc0300e: db658593 addi a1,a1,-586 # 3bc0adc0 <__func__.2> + 3bc03012: 00008517 auipc a0,0x8 + 3bc03016: cde50513 addi a0,a0,-802 # 3bc0acf0 <__func__.5+0x150> + 3bc0301a: b751 j 3bc02f9e + 3bc0301c: 01467633 and a2,a2,s4 + 3bc03020: 2601 sext.w a2,a2 + 3bc03022: da61 beqz a2,3bc02ff2 + 3bc03024: 6008 ld a0,0(s0) + 3bc03026: 0541 addi a0,a0,16 + 3bc03028: f16fe0ef jal ra,3bc0173e + 3bc0302c: 600c ld a1,0(s0) + 3bc0302e: 2501 sext.w a0,a0 + 3bc03030: 9979 andi a0,a0,-2 + 3bc03032: 01456533 or a0,a0,s4 + 3bc03036: 05c1 addi a1,a1,16 + 3bc03038: 2501 sext.w a0,a0 + 3bc0303a: f0afe0ef jal ra,3bc01744 + 3bc0303e: bfa5 j 3bc02fb6 + 3bc03040: f6065de3 bgez a2,3bc02fba + 3bc03044: 0309a503 lw a0,48(s3) + 3bc03048: e509 bnez a0,3bc03052 + 3bc0304a: 40081537 lui a0,0x40081 + 3bc0304e: 40f50513 addi a0,a0,1039 # 4008140f <__BL2_END__+0x446dfff> + 3bc03052: 600c ld a1,0(s0) + 3bc03054: 05b1 addi a1,a1,12 + 3bc03056: eeefe0ef jal ra,3bc01744 + 3bc0305a: c21ff0ef jal ra,3bc02c7a + 3bc0305e: 02091063 bnez s2,3bc0307e + 3bc03062: 6008 ld a0,0(s0) + 3bc03064: 6985 lui s3,0x1 + 3bc03066: 80498993 addi s3,s3,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc0306a: 954e add a0,a0,s3 + 3bc0306c: ed2fe0ef jal ra,3bc0173e + 3bc03070: 600c ld a1,0(s0) + 3bc03072: 2501 sext.w a0,a0 + 3bc03074: 00256513 ori a0,a0,2 + 3bc03078: 95ce add a1,a1,s3 + 3bc0307a: ecafe0ef jal ra,3bc01744 + 3bc0307e: 600c ld a1,0(s0) + 3bc03080: 6985 lui s3,0x1 + 3bc03082: 80098a13 addi s4,s3,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc03086: 95d2 add a1,a1,s4 + 3bc03088: 00040537 lui a0,0x40 + 3bc0308c: eb8fe0ef jal ra,3bc01744 + 3bc03090: 600c ld a1,0(s0) + 3bc03092: 557d li a0,-1 + 3bc03094: 0591 addi a1,a1,4 + 3bc03096: eaefe0ef jal ra,3bc01744 + 3bc0309a: 600c ld a1,0(s0) + 3bc0309c: 557d li a0,-1 + 3bc0309e: 05d1 addi a1,a1,20 + 3bc030a0: ea4fe0ef jal ra,3bc01744 + 3bc030a4: 600c ld a1,0(s0) + 3bc030a6: 800c4537 lui a0,0x800c4 + 3bc030aa: 81050513 addi a0,a0,-2032 # ffffffff800c3810 <__BL2_END__+0xffffffff444b0400> + 3bc030ae: 05e1 addi a1,a1,24 + 3bc030b0: e94fe0ef jal ra,3bc01744 + 3bc030b4: 600c ld a1,0(s0) + 3bc030b6: 4505 li a0,1 + 3bc030b8: 05a1 addi a1,a1,8 + 3bc030ba: e8afe0ef jal ra,3bc01744 + 3bc030be: 600c ld a1,0(s0) + 3bc030c0: 81098793 addi a5,s3,-2032 + 3bc030c4: 4535 li a0,13 + 3bc030c6: 95be add a1,a1,a5 + 3bc030c8: e7cfe0ef jal ra,3bc01744 + 3bc030cc: 600c ld a1,0(s0) + 3bc030ce: 81498793 addi a5,s3,-2028 + 3bc030d2: 4535 li a0,13 + 3bc030d4: 95be add a1,a1,a5 + 3bc030d6: e6efe0ef jal ra,3bc01744 + 3bc030da: 600c ld a1,0(s0) + 3bc030dc: 81c98793 addi a5,s3,-2020 + 3bc030e0: 6541 lui a0,0x10 + 3bc030e2: 95be add a1,a1,a5 + 3bc030e4: 0505 addi a0,a0,1 + 3bc030e6: e5efe0ef jal ra,3bc01744 + 3bc030ea: 02091f63 bnez s2,3bc03128 + 3bc030ee: 6008 ld a0,0(s0) + 3bc030f0: 80498993 addi s3,s3,-2044 + 3bc030f4: 954e add a0,a0,s3 + 3bc030f6: e48fe0ef jal ra,3bc0173e + 3bc030fa: 600c ld a1,0(s0) + 3bc030fc: 2501 sext.w a0,a0 + 3bc030fe: 01456533 or a0,a0,s4 + 3bc03102: 95ce add a1,a1,s3 + 3bc03104: e40fe0ef jal ra,3bc01744 + 3bc03108: 4529 li a0,10 + 3bc0310a: 880fd0ef jal ra,3bc0018a + 3bc0310e: 6008 ld a0,0(s0) + 3bc03110: 954e add a0,a0,s3 + 3bc03112: e2cfe0ef jal ra,3bc0173e + 3bc03116: 600c ld a1,0(s0) + 3bc03118: 77fd lui a5,0xfffff + 3bc0311a: 2501 sext.w a0,a0 + 3bc0311c: 7ff78793 addi a5,a5,2047 # fffffffffffff7ff <__BL2_END__+0xffffffffc43ec3ef> + 3bc03120: 95ce add a1,a1,s3 + 3bc03122: 8d7d and a0,a0,a5 + 3bc03124: e20fe0ef jal ra,3bc01744 + 3bc03128: 8526 mv a0,s1 + 3bc0312a: 7dc000ef jal ra,3bc03906 + 3bc0312e: 600c ld a1,0(s0) + 3bc03130: 6785 lui a5,0x1 + 3bc03132: 90078793 addi a5,a5,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc03136: 95be add a1,a1,a5 + 3bc03138: 6521 lui a0,0x8 + 3bc0313a: e0afe0ef jal ra,3bc01744 + 3bc0313e: 50000993 li s3,1280 + 3bc03142: 00091463 bnez s2,3bc0314a + 3bc03146: 50200993 li s3,1282 + 3bc0314a: 6008 ld a0,0(s0) + 3bc0314c: 6485 lui s1,0x1 + 3bc0314e: 80448493 addi s1,s1,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc03152: 9526 add a0,a0,s1 + 3bc03154: deafe0ef jal ra,3bc0173e + 3bc03158: 600c ld a1,0(s0) + 3bc0315a: 2501 sext.w a0,a0 + 3bc0315c: 00a9e533 or a0,s3,a0 + 3bc03160: 95a6 add a1,a1,s1 + 3bc03162: de2fe0ef jal ra,3bc01744 + 3bc03166: 7442 ld s0,48(sp) + 3bc03168: 70e2 ld ra,56(sp) + 3bc0316a: 74a2 ld s1,40(sp) + 3bc0316c: 7902 ld s2,32(sp) + 3bc0316e: 69e2 ld s3,24(sp) + 3bc03170: 6a42 ld s4,16(sp) + 3bc03172: 6aa2 ld s5,8(sp) + 3bc03174: 450d li a0,3 + 3bc03176: 6121 addi sp,sp,64 + 3bc03178: 83cfd06f j 3bc001b4 + 3bc0317c: 74fc ld a5,232(s1) + 3bc0317e: c789 beqz a5,3bc03188 + 3bc03180: 0d048513 addi a0,s1,208 + 3bc03184: bd1ff0ef jal ra,3bc02d54 <_dwc2_ep_disable.isra.0> + 3bc03188: 1684b783 ld a5,360(s1) + 3bc0318c: c789 beqz a5,3bc03196 + 3bc0318e: 15048513 addi a0,s1,336 + 3bc03192: bc3ff0ef jal ra,3bc02d54 <_dwc2_ep_disable.isra.0> + 3bc03196: 1e84b783 ld a5,488(s1) + 3bc0319a: ea0785e3 beqz a5,3bc03044 + 3bc0319e: 1d048513 addi a0,s1,464 + 3bc031a2: bb3ff0ef jal ra,3bc02d54 <_dwc2_ep_disable.isra.0> + 3bc031a6: bd79 j 3bc03044 + +000000003bc031a8 : + 3bc031a8: 7139 addi sp,sp,-64 + 3bc031aa: f822 sd s0,48(sp) + 3bc031ac: f426 sd s1,40(sp) + 3bc031ae: fc06 sd ra,56(sp) + 3bc031b0: f04a sd s2,32(sp) + 3bc031b2: ec4e sd s3,24(sp) + 3bc031b4: e852 sd s4,16(sp) + 3bc031b6: e456 sd s5,8(sp) + 3bc031b8: 00010497 auipc s1,0x10 + 3bc031bc: 2084b483 ld s1,520(s1) # 3bc133c0 + 3bc031c0: 5429 li s0,-22 + 3bc031c2: cd0d beqz a0,3bc031fc + 3bc031c4: 451c lw a5,8(a0) + 3bc031c6: 4705 li a4,1 + 3bc031c8: 5429 li s0,-22 + 3bc031ca: 37f9 addiw a5,a5,-2 + 3bc031cc: 02f76863 bltu a4,a5,3bc031fc + 3bc031d0: 691c ld a5,16(a0) + 3bc031d2: c78d beqz a5,3bc031fc + 3bc031d4: 7518 ld a4,40(a0) + 3bc031d6: c31d beqz a4,3bc031fc + 3bc031d8: 7118 ld a4,32(a0) + 3bc031da: c30d beqz a4,3bc031fc + 3bc031dc: 6538 ld a4,72(a0) + 3bc031de: cf19 beqz a4,3bc031fc + 3bc031e0: 6938 ld a4,80(a0) + 3bc031e2: cf09 beqz a4,3bc031fc + 3bc031e4: 5435 li s0,-19 + 3bc031e6: c899 beqz s1,3bc031fc + 3bc031e8: 7c98 ld a4,56(s1) + 3bc031ea: 5441 li s0,-16 + 3bc031ec: eb01 bnez a4,3bc031fc + 3bc031ee: fc88 sd a0,56(s1) + 3bc031f0: 8526 mv a0,s1 + 3bc031f2: 9782 jalr a5 + 3bc031f4: 842a mv s0,a0 + 3bc031f6: cd09 beqz a0,3bc03210 + 3bc031f8: 0204bc23 sd zero,56(s1) + 3bc031fc: 70e2 ld ra,56(sp) + 3bc031fe: 8522 mv a0,s0 + 3bc03200: 7442 ld s0,48(sp) + 3bc03202: 74a2 ld s1,40(sp) + 3bc03204: 7902 ld s2,32(sp) + 3bc03206: 69e2 ld s3,24(sp) + 3bc03208: 6a42 ld s4,16(sp) + 3bc0320a: 6aa2 ld s5,8(sp) + 3bc0320c: 6121 addi sp,sp,64 + 3bc0320e: 8082 ret + 3bc03210: 00010917 auipc s2,0x10 + 3bc03214: 1a890913 addi s2,s2,424 # 3bc133b8 + 3bc03218: 00093583 ld a1,0(s2) + 3bc0321c: 6985 lui s3,0x1 + 3bc0321e: 81498793 addi a5,s3,-2028 # 814 <__BSS_SIZE__-0x53fc> + 3bc03222: 95be add a1,a1,a5 + 3bc03224: 4535 li a0,13 + 3bc03226: 0404ba03 ld s4,64(s1) + 3bc0322a: d1afe0ef jal ra,3bc01744 + 3bc0322e: 00093583 ld a1,0(s2) + 3bc03232: 81098793 addi a5,s3,-2032 + 3bc03236: 4535 li a0,13 + 3bc03238: 95be add a1,a1,a5 + 3bc0323a: d0afe0ef jal ra,3bc01744 + 3bc0323e: 00093583 ld a1,0(s2) + 3bc03242: 81c98793 addi a5,s3,-2020 + 3bc03246: 4501 li a0,0 + 3bc03248: 95be add a1,a1,a5 + 3bc0324a: cfafe0ef jal ra,3bc01744 + 3bc0324e: 00093503 ld a0,0(s2) + 3bc03252: 80498993 addi s3,s3,-2044 + 3bc03256: 954e add a0,a0,s3 + 3bc03258: ce6fe0ef jal ra,3bc0173e + 3bc0325c: 00093583 ld a1,0(s2) + 3bc03260: 2501 sext.w a0,a0 + 3bc03262: 00256513 ori a0,a0,2 + 3bc03266: 95ce add a1,a1,s3 + 3bc03268: cdcfe0ef jal ra,3bc01744 + 3bc0326c: a0fff0ef jal ra,3bc02c7a + 3bc03270: 030a2983 lw s3,48(s4) # 20000030 + 3bc03274: 00099663 bnez s3,3bc03280 + 3bc03278: 400819b7 lui s3,0x40081 + 3bc0327c: 40798993 addi s3,s3,1031 # 40081407 <__BL2_END__+0x446dff7> + 3bc03280: 0e0007b7 lui a5,0xe000 + 3bc03284: 0007c783 lbu a5,0(a5) # e000000 + 3bc03288: 4a01 li s4,0 + 3bc0328a: 8ba1 andi a5,a5,8 + 3bc0328c: c795 beqz a5,3bc032b8 + 3bc0328e: 03006ab7 lui s5,0x3006 + 3bc03292: 014a8513 addi a0,s5,20 # 3006014 <__BSS_SIZE__+0x3000404> + 3bc03296: ca8fe0ef jal ra,3bc0173e + 3bc0329a: 00050a1b sext.w s4,a0 + 3bc0329e: 014a8593 addi a1,s5,20 + 3bc032a2: 18b00513 li a0,395 + 3bc032a6: c9efe0ef jal ra,3bc01744 + 3bc032aa: c00037b7 lui a5,0xc0003 + 3bc032ae: 03000737 lui a4,0x3000 + 3bc032b2: 07ad addi a5,a5,11 + 3bc032b4: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc032b8: 00093583 ld a1,0(s2) + 3bc032bc: 854e mv a0,s3 + 3bc032be: 05b1 addi a1,a1,12 + 3bc032c0: c84fe0ef jal ra,3bc01744 + 3bc032c4: 0e0007b7 lui a5,0xe000 + 3bc032c8: 0007c783 lbu a5,0(a5) # e000000 + 3bc032cc: 8ba1 andi a5,a5,8 + 3bc032ce: cb99 beqz a5,3bc032e4 + 3bc032d0: 030065b7 lui a1,0x3006 + 3bc032d4: 8552 mv a0,s4 + 3bc032d6: 05d1 addi a1,a1,20 + 3bc032d8: c6cfe0ef jal ra,3bc01744 + 3bc032dc: 06400513 li a0,100 + 3bc032e0: eabfc0ef jal ra,3bc0018a + 3bc032e4: 00093583 ld a1,0(s2) + 3bc032e8: 4505 li a0,1 + 3bc032ea: 05a1 addi a1,a1,8 + 3bc032ec: c58fe0ef jal ra,3bc01744 + 3bc032f0: 4581 li a1,0 + 3bc032f2: 8526 mv a0,s1 + 3bc032f4: c27ff0ef jal ra,3bc02f1a + 3bc032f8: 0204a023 sw zero,32(s1) + 3bc032fc: b701 j 3bc031fc + +000000003bc032fe : + 3bc032fe: c901 beqz a0,3bc0330e + 3bc03300: 0015151b slliw a0,a0,0x1 + 3bc03304: 00b035b3 snez a1,a1 + 3bc03308: 9d0d subw a0,a0,a1 + 3bc0330a: 0ff57513 andi a0,a0,255 + 3bc0330e: 8082 ret + +000000003bc03310 : + 3bc03310: 4510 lw a2,8(a0) + 3bc03312: 1101 addi sp,sp,-32 + 3bc03314: ec06 sd ra,24(sp) + 3bc03316: e822 sd s0,16(sp) + 3bc03318: e426 sd s1,8(sp) + 3bc0331a: 27700793 li a5,631 + 3bc0331e: 02c7e063 bltu a5,a2,3bc0333e + 3bc03322: 00008517 auipc a0,0x8 + 3bc03326: a1e50513 addi a0,a0,-1506 # 3bc0ad40 <__func__.5+0x1a0> + 3bc0332a: 27800593 li a1,632 + 3bc0332e: 82afd0ef jal ra,3bc00358 + 3bc03332: 557d li a0,-1 + 3bc03334: 60e2 ld ra,24(sp) + 3bc03336: 6442 ld s0,16(sp) + 3bc03338: 64a2 ld s1,8(sp) + 3bc0333a: 6105 addi sp,sp,32 + 3bc0333c: 8082 ret + 3bc0333e: 6100 ld s0,0(a0) + 3bc03340: 84aa mv s1,a0 + 3bc03342: 27800613 li a2,632 + 3bc03346: 4581 li a1,0 + 3bc03348: 8522 mv a0,s0 + 3bc0334a: ec8fd0ef jal ra,3bc00a12 + 3bc0334e: 708c ld a1,32(s1) + 3bc03350: 00008717 auipc a4,0x8 + 3bc03354: 35070713 addi a4,a4,848 # 3bc0b6a0 + 3bc03358: 20000613 li a2,512 + 3bc0335c: 00010797 auipc a5,0x10 + 3bc03360: 04b7be23 sd a1,92(a5) # 3bc133b8 + 3bc03364: 00008797 auipc a5,0x8 + 3bc03368: ab478793 addi a5,a5,-1356 # 3bc0ae18 + 3bc0336c: e81c sd a5,16(s0) + 3bc0336e: 05040793 addi a5,s0,80 + 3bc03372: ec1c sd a5,24(s0) + 3bc03374: 00008797 auipc a5,0x8 + 3bc03378: a9478793 addi a5,a5,-1388 # 3bc0ae08 + 3bc0337c: f81c sd a5,48(s0) + 3bc0337e: 02c44783 lbu a5,44(s0) + 3bc03382: f838 sd a4,112(s0) + 3bc03384: f878 sd a4,240(s0) + 3bc03386: fc07f793 andi a5,a5,-64 + 3bc0338a: 0017e793 ori a5,a5,1 + 3bc0338e: 02f40623 sb a5,44(s0) + 3bc03392: 478d li a5,3 + 3bc03394: d05c sw a5,36(s0) + 3bc03396: 00008797 auipc a5,0x8 + 3bc0339a: aca78793 addi a5,a5,-1334 # 3bc0ae60 + 3bc0339e: f43c sd a5,104(s0) + 3bc033a0: 04000793 li a5,64 + 3bc033a4: 06f41c23 sh a5,120(s0) + 3bc033a8: 00008797 auipc a5,0x8 + 3bc033ac: ac878793 addi a5,a5,-1336 # 3bc0ae70 + 3bc033b0: f47c sd a5,232(s0) + 3bc033b2: 28100793 li a5,641 + 3bc033b6: 14f410a3 sh a5,321(s0) + 3bc033ba: 4785 li a5,1 + 3bc033bc: 02079693 slli a3,a5,0x20 + 3bc033c0: 00268513 addi a0,a3,2 + 3bc033c4: 14a43223 sd a0,324(s0) + 3bc033c8: 0685 addi a3,a3,1 + 3bc033ca: 00008517 auipc a0,0x8 + 3bc033ce: ab650513 addi a0,a0,-1354 # 3bc0ae80 + 3bc033d2: 16a43423 sd a0,360(s0) + 3bc033d6: 1cd43223 sd a3,452(s0) + 3bc033da: 20100513 li a0,513 + 3bc033de: 00008697 auipc a3,0x8 + 3bc033e2: ab268693 addi a3,a3,-1358 # 3bc0ae90 + 3bc033e6: 1786 slli a5,a5,0x21 + 3bc033e8: 078d addi a5,a5,3 + 3bc033ea: 16e43823 sd a4,368(s0) + 3bc033ee: 1ee43823 sd a4,496(s0) + 3bc033f2: e024 sd s1,64(s0) + 3bc033f4: 24040823 sb zero,592(s0) + 3bc033f8: e440 sd s0,136(s0) + 3bc033fa: 0c0410a3 sh zero,193(s0) + 3bc033fe: 0c042223 sw zero,196(s0) + 3bc03402: 0ec41c23 sh a2,248(s0) + 3bc03406: 10843423 sd s0,264(s0) + 3bc0340a: 16c41c23 sh a2,376(s0) + 3bc0340e: 18843423 sd s0,392(s0) + 3bc03412: 1ca410a3 sh a0,449(s0) + 3bc03416: 1ed43423 sd a3,488(s0) + 3bc0341a: 1ec41c23 sh a2,504(s0) + 3bc0341e: 20843423 sd s0,520(s0) + 3bc03422: 38200713 li a4,898 + 3bc03426: 24e410a3 sh a4,577(s0) + 3bc0342a: 24f43223 sd a5,580(s0) + 3bc0342e: 00010797 auipc a5,0x10 + 3bc03432: f887b923 sd s0,-110(a5) # 3bc133c0 + 3bc03436: 60bc ld a5,64(s1) + 3bc03438: 24f43c23 sd a5,600(s0) + 3bc0343c: eb89 bnez a5,3bc0344e + 3bc0343e: 00008517 auipc a0,0x8 + 3bc03442: 93250513 addi a0,a0,-1742 # 3bc0ad70 <__func__.5+0x1d0> + 3bc03446: f13fc0ef jal ra,3bc00358 + 3bc0344a: 5551 li a0,-12 + 3bc0344c: b5e5 j 3bc03334 + 3bc0344e: 8522 mv a0,s0 + 3bc03450: 26f42023 sw a5,608(s0) + 3bc03454: 26b43423 sd a1,616(s0) + 3bc03458: c74ff0ef jal ra,3bc028cc + 3bc0345c: 4501 li a0,0 + 3bc0345e: bdd9 j 3bc03334 + +000000003bc03460 : + 3bc03460: 1101 addi sp,sp,-32 + 3bc03462: e426 sd s1,8(sp) + 3bc03464: 00010497 auipc s1,0x10 + 3bc03468: f5448493 addi s1,s1,-172 # 3bc133b8 + 3bc0346c: 6088 ld a0,0(s1) + 3bc0346e: ec06 sd ra,24(sp) + 3bc03470: e822 sd s0,16(sp) + 3bc03472: 0551 addi a0,a0,20 + 3bc03474: acafe0ef jal ra,3bc0173e + 3bc03478: 0005041b sext.w s0,a0 + 3bc0347c: 6088 ld a0,0(s1) + 3bc0347e: 0561 addi a0,a0,24 + 3bc03480: abefe0ef jal ra,3bc0173e + 3bc03484: 2501 sext.w a0,a0 + 3bc03486: 8c69 and s0,s0,a0 + 3bc03488: cc01 beqz s0,3bc034a0 + 3bc0348a: 6442 ld s0,16(sp) + 3bc0348c: 60e2 ld ra,24(sp) + 3bc0348e: 64a2 ld s1,8(sp) + 3bc03490: 00010597 auipc a1,0x10 + 3bc03494: f305b583 ld a1,-208(a1) # 3bc133c0 + 3bc03498: 4505 li a0,1 + 3bc0349a: 6105 addi sp,sp,32 + 3bc0349c: 3fb0006f j 3bc04096 + 3bc034a0: 60e2 ld ra,24(sp) + 3bc034a2: 6442 ld s0,16(sp) + 3bc034a4: 64a2 ld s1,8(sp) + 3bc034a6: 4501 li a0,0 + 3bc034a8: 6105 addi sp,sp,32 + 3bc034aa: 8082 ret + +000000003bc034ac : + 3bc034ac: 7179 addi sp,sp,-48 + 3bc034ae: f022 sd s0,32(sp) + 3bc034b0: f406 sd ra,40(sp) + 3bc034b2: ec26 sd s1,24(sp) + 3bc034b4: 470d li a4,3 + 3bc034b6: 26853403 ld s0,616(a0) + 3bc034ba: 00008697 auipc a3,0x8 + 3bc034be: 23668693 addi a3,a3,566 # 3bc0b6f0 + 3bc034c2: 00008797 auipc a5,0x8 + 3bc034c6: 23278793 addi a5,a5,562 # 3bc0b6f4 + 3bc034ca: 06e59163 bne a1,a4,3bc0352c + 3bc034ce: 04000713 li a4,64 + 3bc034d2: c298 sw a4,0(a3) + 3bc034d4: 20000713 li a4,512 + 3bc034d8: c398 sw a4,0(a5) + 3bc034da: d10c sw a1,32(a0) + 3bc034dc: 0007d783 lhu a5,0(a5) + 3bc034e0: 6485 lui s1,0x1 + 3bc034e2: 90048593 addi a1,s1,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc034e6: 95a2 add a1,a1,s0 + 3bc034e8: 04000713 li a4,64 + 3bc034ec: 06e51c23 sh a4,120(a0) + 3bc034f0: 0ef51c23 sh a5,248(a0) + 3bc034f4: 16f51c23 sh a5,376(a0) + 3bc034f8: 1ef51c23 sh a5,504(a0) + 3bc034fc: 852e mv a0,a1 + 3bc034fe: e42e sd a1,8(sp) + 3bc03500: a3efe0ef jal ra,3bc0173e + 3bc03504: 65a2 ld a1,8(sp) + 3bc03506: 2501 sext.w a0,a0 + 3bc03508: 9971 andi a0,a0,-4 + 3bc0350a: b0048493 addi s1,s1,-1280 + 3bc0350e: a36fe0ef jal ra,3bc01744 + 3bc03512: 9426 add s0,s0,s1 + 3bc03514: 8522 mv a0,s0 + 3bc03516: a28fe0ef jal ra,3bc0173e + 3bc0351a: 85a2 mv a1,s0 + 3bc0351c: 7402 ld s0,32(sp) + 3bc0351e: 70a2 ld ra,40(sp) + 3bc03520: 64e2 ld s1,24(sp) + 3bc03522: 2501 sext.w a0,a0 + 3bc03524: 9971 andi a0,a0,-4 + 3bc03526: 6145 addi sp,sp,48 + 3bc03528: a1cfe06f j 3bc01744 + 3bc0352c: 04000713 li a4,64 + 3bc03530: c298 sw a4,0(a3) + 3bc03532: c398 sw a4,0(a5) + 3bc03534: 4709 li a4,2 + 3bc03536: d118 sw a4,32(a0) + 3bc03538: b755 j 3bc034dc + +000000003bc0353a : + 3bc0353a: 1101 addi sp,sp,-32 + 3bc0353c: e822 sd s0,16(sp) + 3bc0353e: ec06 sd ra,24(sp) + 3bc03540: 07154703 lbu a4,113(a0) + 3bc03544: 7d1c ld a5,56(a0) + 3bc03546: 842a mv s0,a0 + 3bc03548: fc77368b extu a3,a4,63,7 + 3bc0354c: 2687b583 ld a1,616(a5) + 3bc03550: 00f77793 andi a5,a4,15 + 3bc03554: ce9d beqz a3,3bc03592 + 3bc03556: 04878793 addi a5,a5,72 + 3bc0355a: 0796 slli a5,a5,0x5 + 3bc0355c: 95be add a1,a1,a5 + 3bc0355e: 852e mv a0,a1 + 3bc03560: e42e sd a1,8(sp) + 3bc03562: 9dcfe0ef jal ra,3bc0173e + 3bc03566: ffe007b7 lui a5,0xffe00 + 3bc0356a: 17fd addi a5,a5,-1 + 3bc0356c: 2501 sext.w a0,a0 + 3bc0356e: 8d7d and a0,a0,a5 + 3bc03570: 07244783 lbu a5,114(s0) + 3bc03574: 4705 li a4,1 + 3bc03576: 65a2 ld a1,8(sp) + 3bc03578: 37f9 addiw a5,a5,-2 + 3bc0357a: 0ff7f793 andi a5,a5,255 + 3bc0357e: 00f76563 bltu a4,a5,3bc03588 + 3bc03582: 100007b7 lui a5,0x10000 + 3bc03586: 8d5d or a0,a0,a5 + 3bc03588: 6442 ld s0,16(sp) + 3bc0358a: 60e2 ld ra,24(sp) + 3bc0358c: 6105 addi sp,sp,32 + 3bc0358e: 9b6fe06f j 3bc01744 + 3bc03592: 05878793 addi a5,a5,88 # 10000058 + 3bc03596: b7d1 j 3bc0355a + +000000003bc03598 : + 3bc03598: 1101 addi sp,sp,-32 + 3bc0359a: ec06 sd ra,24(sp) + 3bc0359c: 07154703 lbu a4,113(a0) + 3bc035a0: 7d1c ld a5,56(a0) + 3bc035a2: fc77368b extu a3,a4,63,7 + 3bc035a6: 2687b583 ld a1,616(a5) + 3bc035aa: 00f77793 andi a5,a4,15 + 3bc035ae: ca85 beqz a3,3bc035de + 3bc035b0: 04878793 addi a5,a5,72 + 3bc035b4: 0796 slli a5,a5,0x5 + 3bc035b6: 95be add a1,a1,a5 + 3bc035b8: 852e mv a0,a1 + 3bc035ba: e42e sd a1,8(sp) + 3bc035bc: 982fe0ef jal ra,3bc0173e + 3bc035c0: 0005079b sext.w a5,a0 + 3bc035c4: 65a2 ld a1,8(sp) + 3bc035c6: 0007d563 bgez a5,3bc035d0 + 3bc035ca: 40000737 lui a4,0x40000 + 3bc035ce: 8fd9 or a5,a5,a4 + 3bc035d0: 00200537 lui a0,0x200 + 3bc035d4: 8d5d or a0,a0,a5 + 3bc035d6: 60e2 ld ra,24(sp) + 3bc035d8: 6105 addi sp,sp,32 + 3bc035da: 96afe06f j 3bc01744 + 3bc035de: 05878793 addi a5,a5,88 + 3bc035e2: 0796 slli a5,a5,0x5 + 3bc035e4: 95be add a1,a1,a5 + 3bc035e6: 852e mv a0,a1 + 3bc035e8: e42e sd a1,8(sp) + 3bc035ea: 954fe0ef jal ra,3bc0173e + 3bc035ee: 002007b7 lui a5,0x200 + 3bc035f2: 8d5d or a0,a0,a5 + 3bc035f4: 65a2 ld a1,8(sp) + 3bc035f6: 2501 sext.w a0,a0 + 3bc035f8: bff9 j 3bc035d6 + +000000003bc035fa : + 3bc035fa: 7139 addi sp,sp,-64 + 3bc035fc: f822 sd s0,48(sp) + 3bc035fe: 26853403 ld s0,616(a0) # 200268 <__BSS_SIZE__+0x1fa658> + 3bc03602: f426 sd s1,40(sp) + 3bc03604: 6485 lui s1,0x1 + 3bc03606: ec4e sd s3,24(sp) + 3bc03608: b1048593 addi a1,s1,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc0360c: 000809b7 lui s3,0x80 + 3bc03610: f04a sd s2,32(sp) + 3bc03612: 95a2 add a1,a1,s0 + 3bc03614: 892a mv s2,a0 + 3bc03616: 00898513 addi a0,s3,8 # 80008 <__BSS_SIZE__+0x7a3f8> + 3bc0361a: fc06 sd ra,56(sp) + 3bc0361c: 928fe0ef jal ra,3bc01744 + 3bc03620: 26092503 lw a0,608(s2) + 3bc03624: b1448593 addi a1,s1,-1260 + 3bc03628: 95a2 add a1,a1,s0 + 3bc0362a: 91afe0ef jal ra,3bc01744 + 3bc0362e: b0048593 addi a1,s1,-1280 + 3bc03632: 95a2 add a1,a1,s0 + 3bc03634: 852e mv a0,a1 + 3bc03636: e42e sd a1,8(sp) + 3bc03638: 906fe0ef jal ra,3bc0173e + 3bc0363c: 0005041b sext.w s0,a0 + 3bc03640: c0000537 lui a0,0xc0000 + 3bc03644: 157d addi a0,a0,-1 + 3bc03646: 65a2 ld a1,8(sp) + 3bc03648: 8c69 and s0,s0,a0 + 3bc0364a: 84000537 lui a0,0x84000 + 3bc0364e: 8c49 or s0,s0,a0 + 3bc03650: 8522 mv a0,s0 + 3bc03652: 8f2fe0ef jal ra,3bc01744 + 3bc03656: 85a2 mv a1,s0 + 3bc03658: 7442 ld s0,48(sp) + 3bc0365a: 26092603 lw a2,608(s2) + 3bc0365e: 70e2 ld ra,56(sp) + 3bc03660: 74a2 ld s1,40(sp) + 3bc03662: 7902 ld s2,32(sp) + 3bc03664: 00898693 addi a3,s3,8 + 3bc03668: 69e2 ld s3,24(sp) + 3bc0366a: 00089537 lui a0,0x89 + 3bc0366e: 4701 li a4,0 + 3bc03670: 88850513 addi a0,a0,-1912 # 88888 <__BSS_SIZE__+0x82c78> + 3bc03674: 6121 addi sp,sp,64 + 3bc03676: a4aff06f j 3bc028c0 + +000000003bc0367a : + 3bc0367a: 7179 addi sp,sp,-48 + 3bc0367c: f022 sd s0,32(sp) + 3bc0367e: 26853403 ld s0,616(a0) + 3bc03682: ec26 sd s1,24(sp) + 3bc03684: e84a sd s2,16(sp) + 3bc03686: 6485 lui s1,0x1 + 3bc03688: 892a mv s2,a0 + 3bc0368a: 26052503 lw a0,608(a0) + 3bc0368e: 91448593 addi a1,s1,-1772 # 914 <__BSS_SIZE__-0x52fc> + 3bc03692: 95a2 add a1,a1,s0 + 3bc03694: f406 sd ra,40(sp) + 3bc03696: 8aefe0ef jal ra,3bc01744 + 3bc0369a: 91048593 addi a1,s1,-1776 + 3bc0369e: 95a2 add a1,a1,s0 + 3bc036a0: 00080537 lui a0,0x80 + 3bc036a4: 8a0fe0ef jal ra,3bc01744 + 3bc036a8: 90048593 addi a1,s1,-1792 + 3bc036ac: 95a2 add a1,a1,s0 + 3bc036ae: 852e mv a0,a1 + 3bc036b0: e42e sd a1,8(sp) + 3bc036b2: 88cfe0ef jal ra,3bc0173e + 3bc036b6: 0005041b sext.w s0,a0 + 3bc036ba: c0000537 lui a0,0xc0000 + 3bc036be: 157d addi a0,a0,-1 + 3bc036c0: 65a2 ld a1,8(sp) + 3bc036c2: 8c69 and s0,s0,a0 + 3bc036c4: 84000537 lui a0,0x84000 + 3bc036c8: 8c49 or s0,s0,a0 + 3bc036ca: 8522 mv a0,s0 + 3bc036cc: 878fe0ef jal ra,3bc01744 + 3bc036d0: 479d li a5,7 + 3bc036d2: 85a2 mv a1,s0 + 3bc036d4: 7402 ld s0,32(sp) + 3bc036d6: 26092603 lw a2,608(s2) + 3bc036da: 70a2 ld ra,40(sp) + 3bc036dc: 64e2 ld s1,24(sp) + 3bc036de: 04f92423 sw a5,72(s2) + 3bc036e2: 6942 ld s2,16(sp) + 3bc036e4: 000ab537 lui a0,0xab + 3bc036e8: 4701 li a4,0 + 3bc036ea: 000806b7 lui a3,0x80 + 3bc036ee: aaa50513 addi a0,a0,-1366 # aaaaa <__BSS_SIZE__+0xa4e9a> + 3bc036f2: 6145 addi sp,sp,48 + 3bc036f4: 9ccff06f j 3bc028c0 + +000000003bc036f8 : + 3bc036f8: 1101 addi sp,sp,-32 + 3bc036fa: e822 sd s0,16(sp) + 3bc036fc: e426 sd s1,8(sp) + 3bc036fe: 26853403 ld s0,616(a0) + 3bc03702: 84aa mv s1,a0 + 3bc03704: 00087537 lui a0,0x87 + 3bc03708: 08750513 addi a0,a0,135 # 87087 <__BSS_SIZE__+0x81477> + 3bc0370c: 4701 li a4,0 + 3bc0370e: 4681 li a3,0 + 3bc03710: 4601 li a2,0 + 3bc03712: e04a sd s2,0(sp) + 3bc03714: ec06 sd ra,24(sp) + 3bc03716: 892e mv s2,a1 + 3bc03718: 9a8ff0ef jal ra,3bc028c0 + 3bc0371c: 6505 lui a0,0x1 + 3bc0371e: 02090b63 beqz s2,3bc03754 + 3bc03722: 90050513 addi a0,a0,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc03726: 9522 add a0,a0,s0 + 3bc03728: 816fe0ef jal ra,3bc0173e + 3bc0372c: 2501 sext.w a0,a0 + 3bc0372e: 002007b7 lui a5,0x200 + 3bc03732: 8d5d or a0,a0,a5 + 3bc03734: 6585 lui a1,0x1 + 3bc03736: 02090263 beqz s2,3bc0375a + 3bc0373a: 90058593 addi a1,a1,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc0373e: 95a2 add a1,a1,s0 + 3bc03740: 804fe0ef jal ra,3bc01744 + 3bc03744: 60e2 ld ra,24(sp) + 3bc03746: 6442 ld s0,16(sp) + 3bc03748: 0404a423 sw zero,72(s1) + 3bc0374c: 6902 ld s2,0(sp) + 3bc0374e: 64a2 ld s1,8(sp) + 3bc03750: 6105 addi sp,sp,32 + 3bc03752: 8082 ret + 3bc03754: b0050513 addi a0,a0,-1280 + 3bc03758: b7f9 j 3bc03726 + 3bc0375a: b0058593 addi a1,a1,-1280 + 3bc0375e: b7c5 j 3bc0373e + +000000003bc03760 : + 3bc03760: 7179 addi sp,sp,-48 + 3bc03762: 7d18 ld a4,56(a0) + 3bc03764: 5dd4 lw a3,60(a1) + 3bc03766: ec26 sd s1,24(sp) + 3bc03768: f406 sd ra,40(sp) + 3bc0376a: f022 sd s0,32(sp) + 3bc0376c: e84a sd s2,16(sp) + 3bc0376e: 07154783 lbu a5,113(a0) + 3bc03772: 84aa mv s1,a0 + 3bc03774: 6988 ld a0,16(a1) + 3bc03776: 26873603 ld a2,616(a4) # 40000268 <__BL2_END__+0x43ece58> + 3bc0377a: 7c06b70b extu a4,a3,31,0 + 3bc0377e: 953a add a0,a0,a4 + 3bc03780: 4d98 lw a4,24(a1) + 3bc03782: 8bbd andi a5,a5,15 + 3bc03784: 6591 lui a1,0x4 + 3bc03786: 9f15 subw a4,a4,a3 + 3bc03788: e399 bnez a5,3bc0378e + 3bc0378a: 0284d583 lhu a1,40(s1) + 3bc0378e: 0007069b sext.w a3,a4 + 3bc03792: 00d5b6b3 sltu a3,a1,a3 + 3bc03796: 0016c693 xori a3,a3,1 + 3bc0379a: 40d5970b mveqz a4,a1,a3 + 3bc0379e: d0b8 sw a4,96(s1) + 3bc037a0: f4a8 sd a0,104(s1) + 3bc037a2: 0007091b sext.w s2,a4 + 3bc037a6: 4405 li s0,1 + 3bc037a8: cb91 beqz a5,3bc037bc + 3bc037aa: 00090963 beqz s2,3bc037bc + 3bc037ae: 0284d683 lhu a3,40(s1) + 3bc037b2: fff9041b addiw s0,s2,-1 + 3bc037b6: 02d4543b divuw s0,s0,a3 + 3bc037ba: 2405 addiw s0,s0,1 + 3bc037bc: 05878793 addi a5,a5,88 # 200058 <__BSS_SIZE__+0x1fa448> + 3bc037c0: 0796 slli a5,a5,0x5 + 3bc037c2: 00f605b3 add a1,a2,a5 + 3bc037c6: 852e mv a0,a1 + 3bc037c8: e42e sd a1,8(sp) + 3bc037ca: f75fd0ef jal ra,3bc0173e + 3bc037ce: 54b0 lw a2,104(s1) + 3bc037d0: 840004b7 lui s1,0x84000 + 3bc037d4: 65a2 ld a1,8(sp) + 3bc037d6: 8cc9 or s1,s1,a0 + 3bc037d8: 2481 sext.w s1,s1 + 3bc037da: 8526 mv a0,s1 + 3bc037dc: 0134141b slliw s0,s0,0x13 + 3bc037e0: e032 sd a2,0(sp) + 3bc037e2: 00896433 or s0,s2,s0 + 3bc037e6: f5ffd0ef jal ra,3bc01744 + 3bc037ea: 0004069b sext.w a3,s0 + 3bc037ee: 7402 ld s0,32(sp) + 3bc037f0: 6602 ld a2,0(sp) + 3bc037f2: 70a2 ld ra,40(sp) + 3bc037f4: 6942 ld s2,16(sp) + 3bc037f6: 85a6 mv a1,s1 + 3bc037f8: 64e2 ld s1,24(sp) + 3bc037fa: 00077537 lui a0,0x77 + 3bc037fe: 4701 li a4,0 + 3bc03800: 77750513 addi a0,a0,1911 # 77777 <__BSS_SIZE__+0x71b67> + 3bc03804: 6145 addi sp,sp,48 + 3bc03806: 8baff06f j 3bc028c0 + +000000003bc0380a : + 3bc0380a: 715d addi sp,sp,-80 + 3bc0380c: ec56 sd s5,24(sp) + 3bc0380e: 8aae mv s5,a1 + 3bc03810: fc26 sd s1,56(sp) + 3bc03812: 4581 li a1,0 + 3bc03814: 84aa mv s1,a0 + 3bc03816: 8556 mv a0,s5 + 3bc03818: e0a2 sd s0,64(sp) + 3bc0381a: f84a sd s2,48(sp) + 3bc0381c: f44e sd s3,40(sp) + 3bc0381e: f052 sd s4,32(sp) + 3bc03820: e486 sd ra,72(sp) + 3bc03822: addff0ef jal ra,3bc032fe + 3bc03826: 0005079b sext.w a5,a0 + 3bc0382a: 00779a13 slli s4,a5,0x7 + 3bc0382e: 014487b3 add a5,s1,s4 + 3bc03832: 00751413 slli s0,a0,0x7 + 3bc03836: 0987b903 ld s2,152(a5) + 3bc0383a: 09840993 addi s3,s0,152 + 3bc0383e: 99a6 add s3,s3,s1 + 3bc03840: 09298563 beq s3,s2,3bc038ca + 3bc03844: 6505 lui a0,0x1 + 3bc03846: b1050513 addi a0,a0,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc0384a: 005a9793 slli a5,s5,0x5 + 3bc0384e: 97aa add a5,a5,a0 + 3bc03850: 2684b503 ld a0,616(s1) # ffffffff84000268 <__BL2_END__+0xffffffff483ece58> + 3bc03854: fc090593 addi a1,s2,-64 + 3bc03858: e42e sd a1,8(sp) + 3bc0385a: 953e add a0,a0,a5 + 3bc0385c: ee3fd0ef jal ra,3bc0173e + 3bc03860: 0005071b sext.w a4,a0 + 3bc03864: 65a2 ld a1,8(sp) + 3bc03866: 07f77693 andi a3,a4,127 + 3bc0386a: 000a8463 beqz s5,3bc03872 + 3bc0386e: fe092683 lw a3,-32(s2) + 3bc03872: 01448833 add a6,s1,s4 + 3bc03876: 0b082703 lw a4,176(a6) + 3bc0387a: ffc92883 lw a7,-4(s2) + 3bc0387e: fd892603 lw a2,-40(s2) + 3bc03882: 40d7033b subw t1,a4,a3 + 3bc03886: 05040513 addi a0,s0,80 + 3bc0388a: 411607bb subw a5,a2,a7 + 3bc0388e: 86be mv a3,a5 + 3bc03890: 00f337b3 sltu a5,t1,a5 + 3bc03894: 0017c793 xori a5,a5,1 + 3bc03898: 40f3168b mveqz a3,t1,a5 + 3bc0389c: 011687bb addw a5,a3,a7 + 3bc038a0: 07885683 lhu a3,120(a6) + 3bc038a4: fef92e23 sw a5,-4(s2) + 3bc038a8: 9526 add a0,a0,s1 + 3bc038aa: 02d3773b remuw a4,t1,a3 + 3bc038ae: e319 bnez a4,3bc038b4 + 3bc038b0: 04f61263 bne a2,a5,3bc038f4 + 3bc038b4: 020a9463 bnez s5,3bc038dc + 3bc038b8: 44b8 lw a4,72(s1) + 3bc038ba: 4791 li a5,4 + 3bc038bc: 02f71063 bne a4,a5,3bc038dc + 3bc038c0: 8526 mv a0,s1 + 3bc038c2: db9ff0ef jal ra,3bc0367a + 3bc038c6: 479d li a5,7 + 3bc038c8: c4bc sw a5,72(s1) + 3bc038ca: 60a6 ld ra,72(sp) + 3bc038cc: 6406 ld s0,64(sp) + 3bc038ce: 74e2 ld s1,56(sp) + 3bc038d0: 7942 ld s2,48(sp) + 3bc038d2: 79a2 ld s3,40(sp) + 3bc038d4: 7a02 ld s4,32(sp) + 3bc038d6: 6ae2 ld s5,24(sp) + 3bc038d8: 6161 addi sp,sp,80 + 3bc038da: 8082 ret + 3bc038dc: 4601 li a2,0 + 3bc038de: e42a sd a0,8(sp) + 3bc038e0: 832ff0ef jal ra,3bc02912 + 3bc038e4: 014487b3 add a5,s1,s4 + 3bc038e8: 6fcc ld a1,152(a5) + 3bc038ea: feb980e3 beq s3,a1,3bc038ca + 3bc038ee: 6522 ld a0,8(sp) + 3bc038f0: fc058593 addi a1,a1,-64 # 3fc0 <__BSS_SIZE__-0x1c50> + 3bc038f4: 6406 ld s0,64(sp) + 3bc038f6: 60a6 ld ra,72(sp) + 3bc038f8: 74e2 ld s1,56(sp) + 3bc038fa: 7942 ld s2,48(sp) + 3bc038fc: 79a2 ld s3,40(sp) + 3bc038fe: 7a02 ld s4,32(sp) + 3bc03900: 6ae2 ld s5,24(sp) + 3bc03902: 6161 addi sp,sp,80 + 3bc03904: bdb1 j 3bc03760 + +000000003bc03906 : + 3bc03906: 26853583 ld a1,616(a0) + 3bc0390a: 6785 lui a5,0x1 + 3bc0390c: b1078793 addi a5,a5,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc03910: 20080537 lui a0,0x20080 + 3bc03914: 95be add a1,a1,a5 + 3bc03916: 0521 addi a0,a0,8 + 3bc03918: e2dfd06f j 3bc01744 + +000000003bc0391c : + 3bc0391c: 7179 addi sp,sp,-48 + 3bc0391e: e84a sd s2,16(sp) + 3bc03920: 26853903 ld s2,616(a0) # 20080268 + 3bc03924: 0585 addi a1,a1,1 + 3bc03926: f022 sd s0,32(sp) + 3bc03928: 05b2 slli a1,a1,0xc + 3bc0392a: 0036841b addiw s0,a3,3 + 3bc0392e: ec26 sd s1,24(sp) + 3bc03930: f406 sd ra,40(sp) + 3bc03932: 4024340b extu s0,s0,16,2 + 3bc03936: 992e add s2,s2,a1 + 3bc03938: 4481 li s1,0 + 3bc0393a: 0004879b sext.w a5,s1 + 3bc0393e: 0087e863 bltu a5,s0,3bc0394e + 3bc03942: 70a2 ld ra,40(sp) + 3bc03944: 7402 ld s0,32(sp) + 3bc03946: 64e2 ld s1,24(sp) + 3bc03948: 6942 ld s2,16(sp) + 3bc0394a: 6145 addi sp,sp,48 + 3bc0394c: 8082 ret + 3bc0394e: 4496450b lrw a0,a2,s1,2 + 3bc03952: 85ca mv a1,s2 + 3bc03954: e432 sd a2,8(sp) + 3bc03956: deffd0ef jal ra,3bc01744 + 3bc0395a: 6622 ld a2,8(sp) + 3bc0395c: 0485 addi s1,s1,1 + 3bc0395e: bff1 j 3bc0393a + +000000003bc03960 : + 3bc03960: 7d1c ld a5,56(a0) + 3bc03962: 7119 addi sp,sp,-128 + 3bc03964: f8a2 sd s0,112(sp) + 3bc03966: f862 sd s8,48(sp) + 3bc03968: f466 sd s9,40(sp) + 3bc0396a: f06a sd s10,32(sp) + 3bc0396c: 2687bc83 ld s9,616(a5) + 3bc03970: fc86 sd ra,120(sp) + 3bc03972: 5ddc lw a5,60(a1) + 3bc03974: f4a6 sd s1,104(sp) + 3bc03976: f0ca sd s2,96(sp) + 3bc03978: ecce sd s3,88(sp) + 3bc0397a: e8d2 sd s4,80(sp) + 3bc0397c: e4d6 sd s5,72(sp) + 3bc0397e: e0da sd s6,64(sp) + 3bc03980: fc5e sd s7,56(sp) + 3bc03982: ec6e sd s11,24(sp) + 3bc03984: 07154903 lbu s2,113(a0) + 3bc03988: 6998 ld a4,16(a1) + 3bc0398a: 4d80 lw s0,24(a1) + 3bc0398c: 7c07b60b extu a2,a5,31,0 + 3bc03990: 00f97d13 andi s10,s2,15 + 3bc03994: 963a add a2,a2,a4 + 3bc03996: 40f4073b subw a4,s0,a5 + 3bc0399a: 6791 lui a5,0x4 + 3bc0399c: 8c2a mv s8,a0 + 3bc0399e: 896a mv s2,s10 + 3bc039a0: 6411 lui s0,0x4 + 3bc039a2: 00e7e363 bltu a5,a4,3bc039a8 + 3bc039a6: 843a mv s0,a4 + 3bc039a8: 000d1d63 bnez s10,3bc039c2 + 3bc039ac: 028c5783 lhu a5,40(s8) + 3bc039b0: 873e mv a4,a5 + 3bc039b2: 00f437b3 sltu a5,s0,a5 + 3bc039b6: 0017c793 xori a5,a5,1 + 3bc039ba: 40f4170b mveqz a4,s0,a5 + 3bc039be: 0007041b sext.w s0,a4 + 3bc039c2: 0004099b sext.w s3,s0 + 3bc039c6: 073c2023 sw s3,96(s8) + 3bc039ca: 06cc3423 sd a2,104(s8) + 3bc039ce: 00060a1b sext.w s4,a2 + 3bc039d2: 4785 li a5,1 + 3bc039d4: c801 beqz s0,3bc039e4 + 3bc039d6: 028c5503 lhu a0,40(s8) + 3bc039da: fff4079b addiw a5,s0,-1 + 3bc039de: 02a7d7bb divuw a5,a5,a0 + 3bc039e2: 2785 addiw a5,a5,1 + 3bc039e4: 6d85 lui s11,0x1 + 3bc039e6: 005d1b13 slli s6,s10,0x5 + 3bc039ea: 910d8a93 addi s5,s11,-1776 # 910 <__BSS_SIZE__-0x5300> + 3bc039ee: 0137979b slliw a5,a5,0x13 + 3bc039f2: 9ada add s5,s5,s6 + 3bc039f4: 00f46533 or a0,s0,a5 + 3bc039f8: 9ae6 add s5,s5,s9 + 3bc039fa: 85d6 mv a1,s5 + 3bc039fc: 2501 sext.w a0,a0 + 3bc039fe: e432 sd a2,8(sp) + 3bc03a00: d45fd0ef jal ra,3bc01744 + 3bc03a04: 900d8793 addi a5,s11,-1792 + 3bc03a08: 9b3e add s6,s6,a5 + 3bc03a0a: 9b66 add s6,s6,s9 + 3bc03a0c: 855a mv a0,s6 + 3bc03a0e: d31fd0ef jal ra,3bc0173e + 3bc03a12: 078c2783 lw a5,120(s8) + 3bc03a16: bc4004b7 lui s1,0xbc400 + 3bc03a1a: 00050b9b sext.w s7,a0 + 3bc03a1e: 14fd addi s1,s1,-1 + 3bc03a20: 0167979b slliw a5,a5,0x16 + 3bc03a24: 009bf4b3 and s1,s7,s1 + 3bc03a28: 8cdd or s1,s1,a5 + 3bc03a2a: 77e1 lui a5,0xffff8 + 3bc03a2c: 7ff78793 addi a5,a5,2047 # ffffffffffff87ff <__BL2_END__+0xffffffffc43e53ef> + 3bc03a30: 2481 sext.w s1,s1 + 3bc03a32: 8cfd and s1,s1,a5 + 3bc03a34: 840007b7 lui a5,0x84000 + 3bc03a38: 8cdd or s1,s1,a5 + 3bc03a3a: 85da mv a1,s6 + 3bc03a3c: 8526 mv a0,s1 + 3bc03a3e: d07fd0ef jal ra,3bc01744 + 3bc03a42: 6622 ld a2,8(sp) + 3bc03a44: 038c3503 ld a0,56(s8) + 3bc03a48: 3c04368b extu a3,s0,15,0 + 3bc03a4c: 85ea mv a1,s10 + 3bc03a4e: ecfff0ef jal ra,3bc0391c + 3bc03a52: c809 beqz s0,3bc03a64 + 3bc03a54: 834d8593 addi a1,s11,-1996 + 3bc03a58: 4505 li a0,1 + 3bc03a5a: 95e6 add a1,a1,s9 + 3bc03a5c: 0125153b sllw a0,a0,s2 + 3bc03a60: ce5fd0ef jal ra,3bc01744 + 3bc03a64: 855a mv a0,s6 + 3bc03a66: cd9fd0ef jal ra,3bc0173e + 3bc03a6a: 0005071b sext.w a4,a0 + 3bc03a6e: 00044537 lui a0,0x44 + 3bc03a72: 86de mv a3,s7 + 3bc03a74: 8652 mv a2,s4 + 3bc03a76: 85a6 mv a1,s1 + 3bc03a78: 44450513 addi a0,a0,1092 # 44444 <__BSS_SIZE__+0x3e834> + 3bc03a7c: e45fe0ef jal ra,3bc028c0 + 3bc03a80: 8556 mv a0,s5 + 3bc03a82: cbdfd0ef jal ra,3bc0173e + 3bc03a86: 0005059b sext.w a1,a0 + 3bc03a8a: 00046537 lui a0,0x46 + 3bc03a8e: 86ca mv a3,s2 + 3bc03a90: 8622 mv a2,s0 + 3bc03a92: 46450513 addi a0,a0,1124 # 46464 <__BSS_SIZE__+0x40854> + 3bc03a96: 4701 li a4,0 + 3bc03a98: e29fe0ef jal ra,3bc028c0 + 3bc03a9c: 70e6 ld ra,120(sp) + 3bc03a9e: 7446 ld s0,112(sp) + 3bc03aa0: 74a6 ld s1,104(sp) + 3bc03aa2: 7906 ld s2,96(sp) + 3bc03aa4: 6a46 ld s4,80(sp) + 3bc03aa6: 6aa6 ld s5,72(sp) + 3bc03aa8: 6b06 ld s6,64(sp) + 3bc03aaa: 7be2 ld s7,56(sp) + 3bc03aac: 7c42 ld s8,48(sp) + 3bc03aae: 7ca2 ld s9,40(sp) + 3bc03ab0: 7d02 ld s10,32(sp) + 3bc03ab2: 6de2 ld s11,24(sp) + 3bc03ab4: 854e mv a0,s3 + 3bc03ab6: 69e6 ld s3,88(sp) + 3bc03ab8: 6109 addi sp,sp,128 + 3bc03aba: 8082 ret + +000000003bc03abc : + 3bc03abc: 7179 addi sp,sp,-48 + 3bc03abe: e84a sd s2,16(sp) + 3bc03ac0: 26853903 ld s2,616(a0) + 3bc03ac4: 0585 addi a1,a1,1 + 3bc03ac6: f022 sd s0,32(sp) + 3bc03ac8: 05b2 slli a1,a1,0xc + 3bc03aca: 0036841b addiw s0,a3,3 + 3bc03ace: ec26 sd s1,24(sp) + 3bc03ad0: f406 sd ra,40(sp) + 3bc03ad2: 4024340b extu s0,s0,16,2 + 3bc03ad6: 992e add s2,s2,a1 + 3bc03ad8: 4481 li s1,0 + 3bc03ada: 0004879b sext.w a5,s1 + 3bc03ade: 0087e863 bltu a5,s0,3bc03aee + 3bc03ae2: 70a2 ld ra,40(sp) + 3bc03ae4: 7402 ld s0,32(sp) + 3bc03ae6: 64e2 ld s1,24(sp) + 3bc03ae8: 6942 ld s2,16(sp) + 3bc03aea: 6145 addi sp,sp,48 + 3bc03aec: 8082 ret + 3bc03aee: 854a mv a0,s2 + 3bc03af0: e432 sd a2,8(sp) + 3bc03af2: c4dfd0ef jal ra,3bc0173e + 3bc03af6: 6622 ld a2,8(sp) + 3bc03af8: 4496550b srw a0,a2,s1,2 + 3bc03afc: 0485 addi s1,s1,1 + 3bc03afe: bff1 j 3bc03ada + +000000003bc03b00 : + 3bc03b00: 7179 addi sp,sp,-48 + 3bc03b02: e44e sd s3,8(sp) + 3bc03b04: 02855983 lhu s3,40(a0) + 3bc03b08: f022 sd s0,32(sp) + 3bc03b0a: ec26 sd s1,24(sp) + 3bc03b0c: f406 sd ra,40(sp) + 3bc03b0e: e84a sd s2,16(sp) + 3bc03b10: 84aa mv s1,a0 + 3bc03b12: 842e mv s0,a1 + 3bc03b14: e4dff0ef jal ra,3bc03960 + 3bc03b18: 2501 sext.w a0,a0 + 3bc03b1a: 00a99e63 bne s3,a0,3bc03b36 + 3bc03b1e: 5c5c lw a5,60(s0) + 3bc03b20: 4c18 lw a4,24(s0) + 3bc03b22: 4501 li a0,0 + 3bc03b24: 013787bb addw a5,a5,s3 + 3bc03b28: 00f71b63 bne a4,a5,3bc03b3e + 3bc03b2c: 505c lw a5,36(s0) + 3bc03b2e: 02e79713 slli a4,a5,0x2e + 3bc03b32: 00074663 bltz a4,3bc03b3e + 3bc03b36: 7c9c ld a5,56(s1) + 3bc03b38: 4505 li a0,1 + 3bc03b3a: 0407a423 sw zero,72(a5) # ffffffff84000048 <__BL2_END__+0xffffffff483ecc38> + 3bc03b3e: 70a2 ld ra,40(sp) + 3bc03b40: 7402 ld s0,32(sp) + 3bc03b42: 64e2 ld s1,24(sp) + 3bc03b44: 6942 ld s2,16(sp) + 3bc03b46: 69a2 ld s3,8(sp) + 3bc03b48: 6145 addi sp,sp,48 + 3bc03b4a: 8082 ret + +000000003bc03b4c : + 3bc03b4c: 7179 addi sp,sp,-48 + 3bc03b4e: ec26 sd s1,24(sp) + 3bc03b50: 84ae mv s1,a1 + 3bc03b52: 26853583 ld a1,616(a0) + 3bc03b56: 6785 lui a5,0x1 + 3bc03b58: 80078793 addi a5,a5,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc03b5c: 95be add a1,a1,a5 + 3bc03b5e: f022 sd s0,32(sp) + 3bc03b60: 842a mv s0,a0 + 3bc03b62: 852e mv a0,a1 + 3bc03b64: f406 sd ra,40(sp) + 3bc03b66: e42e sd a1,8(sp) + 3bc03b68: bd7fd0ef jal ra,3bc0173e + 3bc03b6c: 0044979b slliw a5,s1,0x4 + 3bc03b70: 65a2 ld a1,8(sp) + 3bc03b72: 8d5d or a0,a0,a5 + 3bc03b74: 2501 sext.w a0,a0 + 3bc03b76: bcffd0ef jal ra,3bc01744 + 3bc03b7a: 8522 mv a0,s0 + 3bc03b7c: affff0ef jal ra,3bc0367a + 3bc03b80: 4785 li a5,1 + 3bc03b82: 24940823 sb s1,592(s0) # 4250 <__BSS_SIZE__-0x19c0> + 3bc03b86: 70a2 ld ra,40(sp) + 3bc03b88: 26f42823 sw a5,624(s0) + 3bc03b8c: 7402 ld s0,32(sp) + 3bc03b8e: 64e2 ld s1,24(sp) + 3bc03b90: 6145 addi sp,sp,48 + 3bc03b92: 8082 ret + +000000003bc03b94 : + 3bc03b94: 6d4c ld a1,152(a0) + 3bc03b96: 09850693 addi a3,a0,152 + 3bc03b9a: 05050713 addi a4,a0,80 + 3bc03b9e: 00d58e63 beq a1,a3,3bc03bba + 3bc03ba2: fd85a683 lw a3,-40(a1) + 3bc03ba6: e689 bnez a3,3bc03bb0 + 3bc03ba8: 0a052823 sw zero,176(a0) + 3bc03bac: acfff06f j 3bc0367a + 3bc03bb0: fc058593 addi a1,a1,-64 + 3bc03bb4: 853a mv a0,a4 + 3bc03bb6: babff06f j 3bc03760 + 3bc03bba: 8082 ret + +000000003bc03bbc : + 3bc03bbc: 6d4c ld a1,152(a0) + 3bc03bbe: 09850693 addi a3,a0,152 + 3bc03bc2: 02d58b63 beq a1,a3,3bc03bf8 + 3bc03bc6: 1141 addi sp,sp,-16 + 3bc03bc8: e022 sd s0,0(sp) + 3bc03bca: e406 sd ra,8(sp) + 3bc03bcc: fc058593 addi a1,a1,-64 + 3bc03bd0: 842a mv s0,a0 + 3bc03bd2: 05050713 addi a4,a0,80 + 3bc03bd6: 4501 li a0,0 + 3bc03bd8: c989 beqz a1,3bc03bea + 3bc03bda: 853a mv a0,a4 + 3bc03bdc: f25ff0ef jal ra,3bc03b00 + 3bc03be0: 4785 li a5,1 + 3bc03be2: 00f51863 bne a0,a5,3bc03bf2 + 3bc03be6: 4795 li a5,5 + 3bc03be8: c43c sw a5,72(s0) + 3bc03bea: 60a2 ld ra,8(sp) + 3bc03bec: 6402 ld s0,0(sp) + 3bc03bee: 0141 addi sp,sp,16 + 3bc03bf0: 8082 ret + 3bc03bf2: c43c sw a5,72(s0) + 3bc03bf4: 4505 li a0,1 + 3bc03bf6: bfd5 j 3bc03bea + 3bc03bf8: 4501 li a0,0 + 3bc03bfa: 8082 ret + +000000003bc03bfc : + 3bc03bfc: 1101 addi sp,sp,-32 + 3bc03bfe: ec06 sd ra,24(sp) + 3bc03c00: 07154703 lbu a4,113(a0) + 3bc03c04: 7d1c ld a5,56(a0) + 3bc03c06: fc77368b extu a3,a4,63,7 + 3bc03c0a: 2687b583 ld a1,616(a5) + 3bc03c0e: 00f77793 andi a5,a4,15 + 3bc03c12: c295 beqz a3,3bc03c36 + 3bc03c14: 04878793 addi a5,a5,72 + 3bc03c18: 0796 slli a5,a5,0x5 + 3bc03c1a: 95be add a1,a1,a5 + 3bc03c1c: 852e mv a0,a1 + 3bc03c1e: e42e sd a1,8(sp) + 3bc03c20: b1ffd0ef jal ra,3bc0173e + 3bc03c24: 65a2 ld a1,8(sp) + 3bc03c26: 60e2 ld ra,24(sp) + 3bc03c28: 080007b7 lui a5,0x8000 + 3bc03c2c: 8d5d or a0,a0,a5 + 3bc03c2e: 2501 sext.w a0,a0 + 3bc03c30: 6105 addi sp,sp,32 + 3bc03c32: b13fd06f j 3bc01744 + 3bc03c36: 05878793 addi a5,a5,88 # 8000058 + 3bc03c3a: bff9 j 3bc03c18 + +000000003bc03c3c : + 3bc03c3c: 07154703 lbu a4,113(a0) + 3bc03c40: cd21 beqz a0,3bc03c98 + 3bc03c42: 6134 ld a3,64(a0) + 3bc03c44: 87aa mv a5,a0 + 3bc03c46: caa9 beqz a3,3bc03c98 + 3bc03c48: 00f77613 andi a2,a4,15 + 3bc03c4c: c631 beqz a2,3bc03c98 + 3bc03c4e: 0036c603 lbu a2,3(a3) # 80003 <__BSS_SIZE__+0x7a3f3> + 3bc03c52: 4685 li a3,1 + 3bc03c54: 04d60263 beq a2,a3,3bc03c98 + 3bc03c58: 1101 addi sp,sp,-32 + 3bc03c5a: ec06 sd ra,24(sp) + 3bc03c5c: cd99 beqz a1,3bc03c7a + 3bc03c5e: fc77368b extu a3,a4,63,7 + 3bc03c62: c29d beqz a3,3bc03c88 + 3bc03c64: 6534 ld a3,72(a0) + 3bc03c66: 04850713 addi a4,a0,72 + 3bc03c6a: fdd00593 li a1,-35 + 3bc03c6e: 00e68d63 beq a3,a4,3bc03c88 + 3bc03c72: 60e2 ld ra,24(sp) + 3bc03c74: 852e mv a0,a1 + 3bc03c76: 6105 addi sp,sp,32 + 3bc03c78: 8082 ret + 3bc03c7a: 06050823 sb zero,112(a0) + 3bc03c7e: e42e sd a1,8(sp) + 3bc03c80: 8bbff0ef jal ra,3bc0353a + 3bc03c84: 65a2 ld a1,8(sp) + 3bc03c86: b7f5 j 3bc03c72 + 3bc03c88: 4705 li a4,1 + 3bc03c8a: 06e78823 sb a4,112(a5) + 3bc03c8e: 853e mv a0,a5 + 3bc03c90: 909ff0ef jal ra,3bc03598 + 3bc03c94: 4581 li a1,0 + 3bc03c96: bff1 j 3bc03c72 + 3bc03c98: 55a9 li a1,-22 + 3bc03c9a: 852e mv a0,a1 + 3bc03c9c: 8082 ret + +000000003bc03c9e : + 3bc03c9e: 7d1c ld a5,56(a0) + 3bc03ca0: 7179 addi sp,sp,-48 + 3bc03ca2: f022 sd s0,32(sp) + 3bc03ca4: ec26 sd s1,24(sp) + 3bc03ca6: e84a sd s2,16(sp) + 3bc03ca8: e44e sd s3,8(sp) + 3bc03caa: f406 sd ra,40(sp) + 3bc03cac: 2687b483 ld s1,616(a5) + 3bc03cb0: 07154783 lbu a5,113(a0) + 3bc03cb4: 4905 li s2,1 + 3bc03cb6: 89aa mv s3,a0 + 3bc03cb8: 00f7f413 andi s0,a5,15 + 3bc03cbc: fc77b70b extu a4,a5,63,7 + 3bc03cc0: 0089193b sllw s2,s2,s0 + 3bc03cc4: cf25 beqz a4,3bc03d3c + 3bc03cc6: 04840513 addi a0,s0,72 + 3bc03cca: 0516 slli a0,a0,0x5 + 3bc03ccc: 9526 add a0,a0,s1 + 3bc03cce: a71fd0ef jal ra,3bc0173e + 3bc03cd2: 2501 sext.w a0,a0 + 3bc03cd4: 3cf5378b extu a5,a0,15,15 + 3bc03cd8: ef9d bnez a5,3bc03d16 + 3bc03cda: fff407b7 lui a5,0xfff40 + 3bc03cde: 17fd addi a5,a5,-1 + 3bc03ce0: 8d7d and a0,a0,a5 + 3bc03ce2: 0729c783 lbu a5,114(s3) + 3bc03ce6: 04840593 addi a1,s0,72 + 3bc03cea: 0127979b slliw a5,a5,0x12 + 3bc03cee: 8d5d or a0,a0,a5 + 3bc03cf0: 0289d783 lhu a5,40(s3) + 3bc03cf4: 80057513 andi a0,a0,-2048 + 3bc03cf8: 8d5d or a0,a0,a5 + 3bc03cfa: 180087b7 lui a5,0x18008 + 3bc03cfe: 8d5d or a0,a0,a5 + 3bc03d00: 07198783 lb a5,113(s3) + 3bc03d04: 2501 sext.w a0,a0 + 3bc03d06: 0007c463 bltz a5,3bc03d0e + 3bc03d0a: 05840593 addi a1,s0,88 + 3bc03d0e: 0596 slli a1,a1,0x5 + 3bc03d10: 95a6 add a1,a1,s1 + 3bc03d12: a33fd0ef jal ra,3bc01744 + 3bc03d16: 6585 lui a1,0x1 + 3bc03d18: 81c58593 addi a1,a1,-2020 # 81c <__BSS_SIZE__-0x53f4> + 3bc03d1c: 94ae add s1,s1,a1 + 3bc03d1e: 8526 mv a0,s1 + 3bc03d20: a1ffd0ef jal ra,3bc0173e + 3bc03d24: 2501 sext.w a0,a0 + 3bc03d26: 7402 ld s0,32(sp) + 3bc03d28: 70a2 ld ra,40(sp) + 3bc03d2a: 69a2 ld s3,8(sp) + 3bc03d2c: 85a6 mv a1,s1 + 3bc03d2e: 01256533 or a0,a0,s2 + 3bc03d32: 64e2 ld s1,24(sp) + 3bc03d34: 6942 ld s2,16(sp) + 3bc03d36: 6145 addi sp,sp,48 + 3bc03d38: a0dfd06f j 3bc01744 + 3bc03d3c: 05840513 addi a0,s0,88 + 3bc03d40: 0516 slli a0,a0,0x5 + 3bc03d42: 9526 add a0,a0,s1 + 3bc03d44: 9fbfd0ef jal ra,3bc0173e + 3bc03d48: 2501 sext.w a0,a0 + 3bc03d4a: 0109191b slliw s2,s2,0x10 + 3bc03d4e: b759 j 3bc03cd4 + +000000003bc03d50 : + 3bc03d50: 453c lw a5,72(a0) + 3bc03d52: 34079163 bnez a5,3bc04094 + 3bc03d56: 7139 addi sp,sp,-64 + 3bc03d58: f426 sd s1,40(sp) + 3bc03d5a: 25853483 ld s1,600(a0) + 3bc03d5e: f822 sd s0,48(sp) + 3bc03d60: fa400593 li a1,-92 + 3bc03d64: 842a mv s0,a0 + 3bc03d66: 05050513 addi a0,a0,80 + 3bc03d6a: ec4e sd s3,24(sp) + 3bc03d6c: fc06 sd ra,56(sp) + 3bc03d6e: f04a sd s2,32(sp) + 3bc03d70: e852 sd s4,16(sp) + 3bc03d72: c35fe0ef jal ra,3bc029a6 + 3bc03d76: 0004c783 lbu a5,0(s1) # ffffffffbc400000 <__BL2_END__+0xffffffff807ecbf0> + 3bc03d7a: 0c144703 lbu a4,193(s0) + 3bc03d7e: 0064d983 lhu s3,6(s1) + 3bc03d82: fc77b60b extu a2,a5,63,7 + 3bc03d86: 07f77693 andi a3,a4,127 + 3bc03d8a: c609 beqz a2,3bc03d94 + 3bc03d8c: f8076713 ori a4,a4,-128 + 3bc03d90: 0ff77693 andi a3,a4,255 + 3bc03d94: 0607f793 andi a5,a5,96 + 3bc03d98: 25144703 lbu a4,593(s0) + 3bc03d9c: 0017b793 seqz a5,a5 + 3bc03da0: 0017979b slliw a5,a5,0x1 + 3bc03da4: 0017e793 ori a5,a5,1 + 3bc03da8: 8b8d andi a5,a5,3 + 3bc03daa: 9b71 andi a4,a4,-4 + 3bc03dac: 8fd9 or a5,a5,a4 + 3bc03dae: 24f408a3 sb a5,593(s0) + 3bc03db2: 0cd400a3 sb a3,193(s0) + 3bc03db6: 8b89 andi a5,a5,2 + 3bc03db8: 24078a63 beqz a5,3bc0400c + 3bc03dbc: 0014c703 lbu a4,1(s1) + 3bc03dc0: 47ad li a5,11 + 3bc03dc2: 2ae7e863 bltu a5,a4,3bc04072 + 3bc03dc6: 87ba mv a5,a4 + 3bc03dc8: 00007717 auipc a4,0x7 + 3bc03dcc: 0ec70713 addi a4,a4,236 # 3bc0aeb4 + 3bc03dd0: 44f7478b lrw a5,a4,a5,2 + 3bc03dd4: 97ba add a5,a5,a4 + 3bc03dd6: 8782 jr a5 + 3bc03dd8: 0024d603 lhu a2,2(s1) + 3bc03ddc: 000bc537 lui a0,0xbc + 3bc03de0: 4701 li a4,0 + 3bc03de2: 4681 li a3,0 + 3bc03de4: 4585 li a1,1 + 3bc03de6: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03dea: ad7fe0ef jal ra,3bc028c0 + 3bc03dee: 0004c783 lbu a5,0(s1) + 3bc03df2: 20079d63 bnez a5,3bc0400c + 3bc03df6: 8522 mv a0,s0 + 3bc03df8: 7442 ld s0,48(sp) + 3bc03dfa: 0024c583 lbu a1,2(s1) + 3bc03dfe: 70e2 ld ra,56(sp) + 3bc03e00: 74a2 ld s1,40(sp) + 3bc03e02: 7902 ld s2,32(sp) + 3bc03e04: 69e2 ld s3,24(sp) + 3bc03e06: 6a42 ld s4,16(sp) + 3bc03e08: 6121 addi sp,sp,64 + 3bc03e0a: d43ff06f j 3bc03b4c + 3bc03e0e: 0024d603 lhu a2,2(s1) + 3bc03e12: 4701 li a4,0 + 3bc03e14: 4681 li a3,0 + 3bc03e16: 4589 li a1,2 + 3bc03e18: 000bc537 lui a0,0xbc + 3bc03e1c: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03e20: aa1fe0ef jal ra,3bc028c0 + 3bc03e24: a2e5 j 3bc0400c + 3bc03e26: 4701 li a4,0 + 3bc03e28: 4681 li a3,0 + 3bc03e2a: 4601 li a2,0 + 3bc03e2c: 458d li a1,3 + 3bc03e2e: b7ed j 3bc03e18 + 3bc03e30: 4701 li a4,0 + 3bc03e32: 4681 li a3,0 + 3bc03e34: 4601 li a2,0 + 3bc03e36: 4591 li a1,4 + 3bc03e38: b7c5 j 3bc03e18 + 3bc03e3a: 4701 li a4,0 + 3bc03e3c: 4681 li a3,0 + 3bc03e3e: 4601 li a2,0 + 3bc03e40: 4595 li a1,5 + 3bc03e42: bfd9 j 3bc03e18 + 3bc03e44: 000bc537 lui a0,0xbc + 3bc03e48: 4701 li a4,0 + 3bc03e4a: 4681 li a3,0 + 3bc03e4c: 4601 li a2,0 + 3bc03e4e: 4599 li a1,6 + 3bc03e50: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03e54: a6dfe0ef jal ra,3bc028c0 + 3bc03e58: 0044d503 lhu a0,4(s1) + 3bc03e5c: 1c75358b extu a1,a0,7,7 + 3bc03e60: 07f57513 andi a0,a0,127 + 3bc03e64: c9aff0ef jal ra,3bc032fe + 3bc03e68: 00011723 sh zero,14(sp) + 3bc03e6c: 0004c583 lbu a1,0(s1) + 3bc03e70: 892a mv s2,a0 + 3bc03e72: 00007517 auipc a0,0x7 + 3bc03e76: 02e50513 addi a0,a0,46 # 3bc0aea0 + 3bc03e7a: 89bd andi a1,a1,15 + 3bc03e7c: 26843a03 ld s4,616(s0) + 3bc03e80: cd8fc0ef jal ra,3bc00358 + 3bc03e84: 0004c783 lbu a5,0(s1) + 3bc03e88: 4705 li a4,1 + 3bc03e8a: 8bbd andi a5,a5,15 + 3bc03e8c: 00e78a63 beq a5,a4,3bc03ea0 + 3bc03e90: 4689 li a3,2 + 3bc03e92: 06d78b63 beq a5,a3,3bc03f08 + 3bc03e96: 16079b63 bnez a5,3bc0400c + 3bc03e9a: 00e11723 sh a4,14(sp) + 3bc03e9e: a019 j 3bc03ea4 + 3bc03ea0: 00011723 sh zero,14(sp) + 3bc03ea4: 25843503 ld a0,600(s0) + 3bc03ea8: 4609 li a2,2 + 3bc03eaa: 00e10593 addi a1,sp,14 + 3bc03eae: bbffc0ef jal ra,3bc00a6c + 3bc03eb2: 6485 lui s1,0x1 + 3bc03eb4: 26042503 lw a0,608(s0) + 3bc03eb8: 91448593 addi a1,s1,-1772 # 914 <__BSS_SIZE__-0x52fc> + 3bc03ebc: 95d2 add a1,a1,s4 + 3bc03ebe: 887fd0ef jal ra,3bc01744 + 3bc03ec2: 91048593 addi a1,s1,-1776 + 3bc03ec6: 00080537 lui a0,0x80 + 3bc03eca: 95d2 add a1,a1,s4 + 3bc03ecc: 0509 addi a0,a0,2 + 3bc03ece: 90048493 addi s1,s1,-1792 + 3bc03ed2: 873fd0ef jal ra,3bc01744 + 3bc03ed6: 9a26 add s4,s4,s1 + 3bc03ed8: 8552 mv a0,s4 + 3bc03eda: 865fd0ef jal ra,3bc0173e + 3bc03ede: c00007b7 lui a5,0xc0000 + 3bc03ee2: 17fd addi a5,a5,-1 + 3bc03ee4: 2501 sext.w a0,a0 + 3bc03ee6: 8d7d and a0,a0,a5 + 3bc03ee8: 840007b7 lui a5,0x84000 + 3bc03eec: 8d5d or a0,a0,a5 + 3bc03eee: 85d2 mv a1,s4 + 3bc03ef0: 855fd0ef jal ra,3bc01744 + 3bc03ef4: 47a1 li a5,8 + 3bc03ef6: c43c sw a5,72(s0) + 3bc03ef8: 70e2 ld ra,56(sp) + 3bc03efa: 7442 ld s0,48(sp) + 3bc03efc: 74a2 ld s1,40(sp) + 3bc03efe: 7902 ld s2,32(sp) + 3bc03f00: 69e2 ld s3,24(sp) + 3bc03f02: 6a42 ld s4,16(sp) + 3bc03f04: 6121 addi sp,sp,64 + 3bc03f06: 8082 ret + 3bc03f08: 0064d703 lhu a4,6(s1) + 3bc03f0c: 10e7e063 bltu a5,a4,3bc0400c + 3bc03f10: 2901 sext.w s2,s2 + 3bc03f12: 091e slli s2,s2,0x7 + 3bc03f14: 9922 add s2,s2,s0 + 3bc03f16: 0c094783 lbu a5,192(s2) + 3bc03f1a: 00f11723 sh a5,14(sp) + 3bc03f1e: b759 j 3bc03ea4 + 3bc03f20: 000bc537 lui a0,0xbc + 3bc03f24: 4701 li a4,0 + 3bc03f26: 4681 li a3,0 + 3bc03f28: 4601 li a2,0 + 3bc03f2a: 459d li a1,7 + 3bc03f2c: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03f30: 991fe0ef jal ra,3bc028c0 + 3bc03f34: 0044d503 lhu a0,4(s1) + 3bc03f38: 1c75358b extu a1,a0,7,7 + 3bc03f3c: 07f57513 andi a0,a0,127 + 3bc03f40: bbeff0ef jal ra,3bc032fe + 3bc03f44: 00751913 slli s2,a0,0x7 + 3bc03f48: 05090913 addi s2,s2,80 + 3bc03f4c: 9922 add s2,s2,s0 + 3bc03f4e: 03893a03 ld s4,56(s2) + 3bc03f52: 258a3703 ld a4,600(s4) + 3bc03f56: 00675783 lhu a5,6(a4) + 3bc03f5a: ebcd bnez a5,3bc0400c + 3bc03f5c: 00074783 lbu a5,0(a4) + 3bc03f60: 8bbd andi a5,a5,15 + 3bc03f62: c795 beqz a5,3bc03f8e + 3bc03f64: 4689 li a3,2 + 3bc03f66: f8d799e3 bne a5,a3,3bc03ef8 + 3bc03f6a: 00275783 lhu a5,2(a4) + 3bc03f6e: f7c9 bnez a5,3bc03ef8 + 3bc03f70: 07194403 lbu s0,113(s2) + 3bc03f74: 883d andi s0,s0,15 + 3bc03f76: e415 bnez s0,3bc03fa2 + 3bc03f78: 4585 li a1,1 + 3bc03f7a: 8552 mv a0,s4 + 3bc03f7c: 7442 ld s0,48(sp) + 3bc03f7e: 70e2 ld ra,56(sp) + 3bc03f80: 74a2 ld s1,40(sp) + 3bc03f82: 7902 ld s2,32(sp) + 3bc03f84: 69e2 ld s3,24(sp) + 3bc03f86: 6a42 ld s4,16(sp) + 3bc03f88: 6121 addi sp,sp,64 + 3bc03f8a: f6eff06f j 3bc036f8 + 3bc03f8e: 8552 mv a0,s4 + 3bc03f90: 7442 ld s0,48(sp) + 3bc03f92: 70e2 ld ra,56(sp) + 3bc03f94: 74a2 ld s1,40(sp) + 3bc03f96: 7902 ld s2,32(sp) + 3bc03f98: 69e2 ld s3,24(sp) + 3bc03f9a: 6a42 ld s4,16(sp) + 3bc03f9c: 6121 addi sp,sp,64 + 3bc03f9e: edcff06f j 3bc0367a + 3bc03fa2: 8552 mv a0,s4 + 3bc03fa4: ed6ff0ef jal ra,3bc0367a + 3bc03fa8: 854a mv a0,s2 + 3bc03faa: d90ff0ef jal ra,3bc0353a + 3bc03fae: 854a mv a0,s2 + 3bc03fb0: cefff0ef jal ra,3bc03c9e + 3bc03fb4: 4785 li a5,1 + 3bc03fb6: 06090823 sb zero,112(s2) + 3bc03fba: 268a0a23 sb s0,628(s4) + 3bc03fbe: 26fa0aa3 sb a5,629(s4) + 3bc03fc2: bf1d j 3bc03ef8 + 3bc03fc4: 000bc537 lui a0,0xbc + 3bc03fc8: 4701 li a4,0 + 3bc03fca: 4681 li a3,0 + 3bc03fcc: 4601 li a2,0 + 3bc03fce: 45a1 li a1,8 + 3bc03fd0: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03fd4: 8edfe0ef jal ra,3bc028c0 + 3bc03fd8: 0044d503 lhu a0,4(s1) + 3bc03fdc: 1c75358b extu a1,a0,7,7 + 3bc03fe0: 07f57513 andi a0,a0,127 + 3bc03fe4: b1aff0ef jal ra,3bc032fe + 3bc03fe8: 051e slli a0,a0,0x7 + 3bc03fea: 05050513 addi a0,a0,80 + 3bc03fee: 9522 add a0,a0,s0 + 3bc03ff0: 03853903 ld s2,56(a0) + 3bc03ff4: 25893783 ld a5,600(s2) + 3bc03ff8: 0067d703 lhu a4,6(a5) # ffffffff84000006 <__BL2_END__+0xffffffff483ecbf6> + 3bc03ffc: eb01 bnez a4,3bc0400c + 3bc03ffe: 0007c703 lbu a4,0(a5) + 3bc04002: 8b3d andi a4,a4,15 + 3bc04004: cb15 beqz a4,3bc04038 + 3bc04006: 4689 li a3,2 + 3bc04008: 04d70563 beq a4,a3,3bc04052 + 3bc0400c: 7c1c ld a5,56(s0) + 3bc0400e: cfbd beqz a5,3bc0408c + 3bc04010: 739c ld a5,32(a5) + 3bc04012: 85a6 mv a1,s1 + 3bc04014: 8522 mv a0,s0 + 3bc04016: 9782 jalr a5 + 3bc04018: 06055263 bgez a0,3bc0407c + 3bc0401c: 0064d783 lhu a5,6(s1) + 3bc04020: 4585 li a1,1 + 3bc04022: c789 beqz a5,3bc0402c + 3bc04024: 0c140583 lb a1,193(s0) + 3bc04028: 01f5d59b srliw a1,a1,0x1f + 3bc0402c: 6448 ld a0,136(s0) + 3bc0402e: ecaff0ef jal ra,3bc036f8 + 3bc04032: 04042423 sw zero,72(s0) + 3bc04036: b5c9 j 3bc03ef8 + 3bc04038: 0027d683 lhu a3,2(a5) + 3bc0403c: 4709 li a4,2 + 3bc0403e: 00e69863 bne a3,a4,3bc0404e + 3bc04042: 0047d783 lhu a5,4(a5) + 3bc04046: 0087d79b srliw a5,a5,0x8 + 3bc0404a: 26f90b23 sb a5,630(s2) + 3bc0404e: 854a mv a0,s2 + 3bc04050: b781 j 3bc03f90 + 3bc04052: 0027d783 lhu a5,2(a5) + 3bc04056: ffe5 bnez a5,3bc0404e + 3bc04058: 07154783 lbu a5,113(a0) + 3bc0405c: 8bbd andi a5,a5,15 + 3bc0405e: e781 bnez a5,3bc04066 + 3bc04060: 4585 li a1,1 + 3bc04062: 854a mv a0,s2 + 3bc04064: bf21 j 3bc03f7c + 3bc04066: 4785 li a5,1 + 3bc04068: 06f50823 sb a5,112(a0) + 3bc0406c: d2cff0ef jal ra,3bc03598 + 3bc04070: bff9 j 3bc0404e + 3bc04072: 4701 li a4,0 + 3bc04074: 4681 li a3,0 + 3bc04076: 4601 li a2,0 + 3bc04078: 45a5 li a1,9 + 3bc0407a: bb79 j 3bc03e18 + 3bc0407c: 25144783 lbu a5,593(s0) + 3bc04080: 0017f713 andi a4,a5,1 + 3bc04084: c701 beqz a4,3bc0408c + 3bc04086: 9bf9 andi a5,a5,-2 + 3bc04088: 24f408a3 sb a5,593(s0) + 3bc0408c: e60996e3 bnez s3,3bc03ef8 + 3bc04090: 8522 mv a0,s0 + 3bc04092: bdfd j 3bc03f90 + 3bc04094: 8082 ret + +000000003bc04096 : + 3bc04096: 7119 addi sp,sp,-128 + 3bc04098: ecce sd s3,88(sp) + 3bc0409a: 2685b983 ld s3,616(a1) + 3bc0409e: f0ca sd s2,96(sp) + 3bc040a0: f8a2 sd s0,112(sp) + 3bc040a2: 01498913 addi s2,s3,20 + 3bc040a6: 854a mv a0,s2 + 3bc040a8: f4a6 sd s1,104(sp) + 3bc040aa: e0da sd s6,64(sp) + 3bc040ac: fc86 sd ra,120(sp) + 3bc040ae: e8d2 sd s4,80(sp) + 3bc040b0: e4d6 sd s5,72(sp) + 3bc040b2: fc5e sd s7,56(sp) + 3bc040b4: f862 sd s8,48(sp) + 3bc040b6: f466 sd s9,40(sp) + 3bc040b8: f06a sd s10,32(sp) + 3bc040ba: ec6e sd s11,24(sp) + 3bc040bc: 842e mv s0,a1 + 3bc040be: 01898b13 addi s6,s3,24 + 3bc040c2: e7cfd0ef jal ra,3bc0173e + 3bc040c6: 0005049b sext.w s1,a0 + 3bc040ca: 855a mv a0,s6 + 3bc040cc: e72fd0ef jal ra,3bc0173e + 3bc040d0: 1c048563 beqz s1,3bc0429a + 3bc040d4: 4430 lw a2,72(s0) + 3bc040d6: 00050a9b sext.w s5,a0 + 3bc040da: 6505 lui a0,0x1 + 3bc040dc: 81850513 addi a0,a0,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc040e0: 954e add a0,a0,s3 + 3bc040e2: e432 sd a2,8(sp) + 3bc040e4: e5afd0ef jal ra,3bc0173e + 3bc040e8: 6622 ld a2,8(sp) + 3bc040ea: 0005069b sext.w a3,a0 + 3bc040ee: 653d lui a0,0xf + 3bc040f0: 4701 li a4,0 + 3bc040f2: 85a6 mv a1,s1 + 3bc040f4: 153d addi a0,a0,-17 + 3bc040f6: fcafe0ef jal ra,3bc028c0 + 3bc040fa: 0104f793 andi a5,s1,16 + 3bc040fe: c3b5 beqz a5,3bc04162 + 3bc04100: 85da mv a1,s6 + 3bc04102: fefaf513 andi a0,s5,-17 + 3bc04106: e3efd0ef jal ra,3bc01744 + 3bc0410a: 02098513 addi a0,s3,32 + 3bc0410e: e30fd0ef jal ra,3bc0173e + 3bc04112: 00f57b93 andi s7,a0,15 + 3bc04116: 00050a1b sext.w s4,a0 + 3bc0411a: 4581 li a1,0 + 3bc0411c: 855e mv a0,s7 + 3bc0411e: 9e0ff0ef jal ra,3bc032fe + 3bc04122: 001e07b7 lui a5,0x1e0 + 3bc04126: 00fa77b3 and a5,s4,a5 + 3bc0412a: 00040737 lui a4,0x40 + 3bc0412e: 18e79663 bne a5,a4,3bc042ba + 3bc04132: 384a3a0b extu s4,s4,14,4 + 3bc04136: 020a0163 beqz s4,3bc04158 + 3bc0413a: 0005079b sext.w a5,a0 + 3bc0413e: 079e slli a5,a5,0x7 + 3bc04140: 97a2 add a5,a5,s0 + 3bc04142: 0987bc03 ld s8,152(a5) # 1e0098 <__BSS_SIZE__+0x1da488> + 3bc04146: 86d2 mv a3,s4 + 3bc04148: 85de mv a1,s7 + 3bc0414a: fd0c3603 ld a2,-48(s8) + 3bc0414e: 8522 mv a0,s0 + 3bc04150: 96dff0ef jal ra,3bc03abc + 3bc04154: ff4c2023 sw s4,-32(s8) + 3bc04158: 85da mv a1,s6 + 3bc0415a: 010ae513 ori a0,s5,16 + 3bc0415e: de6fd0ef jal ra,3bc01744 + 3bc04162: 34d4b78b extu a5,s1,13,13 + 3bc04166: cb9d beqz a5,3bc0419c + 3bc04168: 85ca mv a1,s2 + 3bc0416a: 6509 lui a0,0x2 + 3bc0416c: dd8fd0ef jal ra,3bc01744 + 3bc04170: 6505 lui a0,0x1 + 3bc04172: 80850513 addi a0,a0,-2040 # 808 <__BSS_SIZE__-0x5408> + 3bc04176: 954e add a0,a0,s3 + 3bc04178: dc6fd0ef jal ra,3bc0173e + 3bc0417c: 8919 andi a0,a0,6 + 3bc0417e: 14050b63 beqz a0,3bc042d4 + 3bc04182: 4589 li a1,2 + 3bc04184: 8522 mv a0,s0 + 3bc04186: b26ff0ef jal ra,3bc034ac + 3bc0418a: 6509 lui a0,0x2 + 3bc0418c: 4701 li a4,0 + 3bc0418e: 4681 li a3,0 + 3bc04190: 4601 li a2,0 + 3bc04192: 4589 li a1,2 + 3bc04194: 22250513 addi a0,a0,546 # 2222 <__BSS_SIZE__-0x39ee> + 3bc04198: f28fe0ef jal ra,3bc028c0 + 3bc0419c: 4004f793 andi a5,s1,1024 + 3bc041a0: c791 beqz a5,3bc041ac + 3bc041a2: 85ca mv a1,s2 + 3bc041a4: 40000513 li a0,1024 + 3bc041a8: d9cfd0ef jal ra,3bc01744 + 3bc041ac: 6505 lui a0,0x1 + 3bc041ae: 80050a13 addi s4,a0,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc041b2: 0144f7b3 and a5,s1,s4 + 3bc041b6: c395 beqz a5,3bc041da + 3bc041b8: 80850513 addi a0,a0,-2040 + 3bc041bc: 954e add a0,a0,s3 + 3bc041be: d80fd0ef jal ra,3bc0173e + 3bc041c2: 85ca mv a1,s2 + 3bc041c4: 8552 mv a0,s4 + 3bc041c6: d7efd0ef jal ra,3bc01744 + 3bc041ca: 501c lw a5,32(s0) + 3bc041cc: c799 beqz a5,3bc041da + 3bc041ce: 7c1c ld a5,56(s0) + 3bc041d0: c789 beqz a5,3bc041da + 3bc041d2: 7b9c ld a5,48(a5) + 3bc041d4: c399 beqz a5,3bc041da + 3bc041d6: 8522 mv a0,s0 + 3bc041d8: 9782 jalr a5 + 3bc041da: 0004df63 bgez s1,3bc041f8 + 3bc041de: 85ca mv a1,s2 + 3bc041e0: 80000537 lui a0,0x80000 + 3bc041e4: d60fd0ef jal ra,3bc01744 + 3bc041e8: 501c lw a5,32(s0) + 3bc041ea: c799 beqz a5,3bc041f8 + 3bc041ec: 7c1c ld a5,56(s0) + 3bc041ee: c789 beqz a5,3bc041f8 + 3bc041f0: 7f9c ld a5,56(a5) + 3bc041f2: c399 beqz a5,3bc041f8 + 3bc041f4: 8522 mv a0,s0 + 3bc041f6: 9782 jalr a5 + 3bc041f8: 008017b7 lui a5,0x801 + 3bc041fc: 8fe5 and a5,a5,s1 + 3bc041fe: c3bd beqz a5,3bc04264 + 3bc04200: 854e mv a0,s3 + 3bc04202: d3cfd0ef jal ra,3bc0173e + 3bc04206: 0005099b sext.w s3,a0 + 3bc0420a: 6505 lui a0,0x1 + 3bc0420c: 4701 li a4,0 + 3bc0420e: 4681 li a3,0 + 3bc04210: 4601 li a2,0 + 3bc04212: 85ce mv a1,s3 + 3bc04214: 11150513 addi a0,a0,273 # 1111 <__BSS_SIZE__-0x4aff> + 3bc04218: ea8fe0ef jal ra,3bc028c0 + 3bc0421c: 30c4b78b extu a5,s1,12,12 + 3bc04220: c789 beqz a5,3bc0422a + 3bc04222: 85ca mv a1,s2 + 3bc04224: 6505 lui a0,0x1 + 3bc04226: d1efd0ef jal ra,3bc01744 + 3bc0422a: 5d74b78b extu a5,s1,23,23 + 3bc0422e: c791 beqz a5,3bc0423a + 3bc04230: 85ca mv a1,s2 + 3bc04232: 00800537 lui a0,0x800 + 3bc04236: d0efd0ef jal ra,3bc01744 + 3bc0423a: 000c0537 lui a0,0xc0 + 3bc0423e: 00a9f9b3 and s3,s3,a0 + 3bc04242: 000c07b7 lui a5,0xc0 + 3bc04246: 00f99f63 bne s3,a5,3bc04264 + 3bc0424a: 27042903 lw s2,624(s0) + 3bc0424e: 8522 mv a0,s0 + 3bc04250: 9d5fe0ef jal ra,3bc02c24 + 3bc04254: 00090663 beqz s2,3bc04260 + 3bc04258: 4585 li a1,1 + 3bc0425a: 8522 mv a0,s0 + 3bc0425c: cbffe0ef jal ra,3bc02f1a + 3bc04260: 04042423 sw zero,72(s0) + 3bc04264: 4924b78b extu a5,s1,18,18 + 3bc04268: e7c1 bnez a5,3bc042f0 + 3bc0426a: 4d34b48b extu s1,s1,19,19 + 3bc0426e: c495 beqz s1,3bc0429a + 3bc04270: 26843b03 ld s6,616(s0) + 3bc04274: 6505 lui a0,0x1 + 3bc04276: 81850513 addi a0,a0,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc0427a: 955a add a0,a0,s6 + 3bc0427c: cc2fd0ef jal ra,3bc0173e + 3bc04280: 00066a37 lui s4,0x66 + 3bc04284: 6a8d lui s5,0x3 + 3bc04286: 7d05398b extu s3,a0,31,16 + 3bc0428a: 4901 li s2,0 + 3bc0428c: 4b99 li s7,6 + 3bc0428e: 666a0a13 addi s4,s4,1638 # 66666 <__BSS_SIZE__+0x60a56> + 3bc04292: 333a8a93 addi s5,s5,819 # 3333 <__BSS_SIZE__-0x28dd> + 3bc04296: 2a099963 bnez s3,3bc04548 + 3bc0429a: 70e6 ld ra,120(sp) + 3bc0429c: 7446 ld s0,112(sp) + 3bc0429e: 74a6 ld s1,104(sp) + 3bc042a0: 7906 ld s2,96(sp) + 3bc042a2: 69e6 ld s3,88(sp) + 3bc042a4: 6a46 ld s4,80(sp) + 3bc042a6: 6aa6 ld s5,72(sp) + 3bc042a8: 6b06 ld s6,64(sp) + 3bc042aa: 7be2 ld s7,56(sp) + 3bc042ac: 7c42 ld s8,48(sp) + 3bc042ae: 7ca2 ld s9,40(sp) + 3bc042b0: 7d02 ld s10,32(sp) + 3bc042b2: 6de2 ld s11,24(sp) + 3bc042b4: 4501 li a0,0 + 3bc042b6: 6109 addi sp,sp,128 + 3bc042b8: 8082 ret + 3bc042ba: 000c0737 lui a4,0xc0 + 3bc042be: e8e79de3 bne a5,a4,3bc04158 + 3bc042c2: 25843603 ld a2,600(s0) + 3bc042c6: 384a368b extu a3,s4,14,4 + 3bc042ca: 85de mv a1,s7 + 3bc042cc: 8522 mv a0,s0 + 3bc042ce: feeff0ef jal ra,3bc03abc + 3bc042d2: b559 j 3bc04158 + 3bc042d4: 6509 lui a0,0x2 + 3bc042d6: 4701 li a4,0 + 3bc042d8: 4681 li a3,0 + 3bc042da: 4601 li a2,0 + 3bc042dc: 4585 li a1,1 + 3bc042de: 22250513 addi a0,a0,546 # 2222 <__BSS_SIZE__-0x39ee> + 3bc042e2: ddefe0ef jal ra,3bc028c0 + 3bc042e6: 458d li a1,3 + 3bc042e8: 8522 mv a0,s0 + 3bc042ea: 9c2ff0ef jal ra,3bc034ac + 3bc042ee: b57d j 3bc0419c + 3bc042f0: 26843a03 ld s4,616(s0) + 3bc042f4: 6a85 lui s5,0x1 + 3bc042f6: 818a8513 addi a0,s5,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc042fa: 9552 add a0,a0,s4 + 3bc042fc: c42fd0ef jal ra,3bc0173e + 3bc04300: 00737b37 lui s6,0x737 + 3bc04304: 00747bb7 lui s7,0x747 + 3bc04308: 00055c37 lui s8,0x55 + 3bc0430c: 3c05398b extu s3,a0,15,0 + 3bc04310: 4901 li s2,0 + 3bc04312: 373b0b13 addi s6,s6,883 # 737373 <__BSS_SIZE__+0x731763> + 3bc04316: 474b8b93 addi s7,s7,1140 # 747474 <__BSS_SIZE__+0x741864> + 3bc0431a: 555c0c13 addi s8,s8,1365 # 55555 <__BSS_SIZE__+0x4f945> + 3bc0431e: 804a8a93 addi s5,s5,-2044 + 3bc04322: f40984e3 beqz s3,3bc0426a + 3bc04326: 0019f793 andi a5,s3,1 + 3bc0432a: 1c078163 beqz a5,3bc044ec + 3bc0432e: 04890c93 addi s9,s2,72 + 3bc04332: 0c96 slli s9,s9,0x5 + 3bc04334: 008c8d93 addi s11,s9,8 + 3bc04338: 9dd2 add s11,s11,s4 + 3bc0433a: 856e mv a0,s11 + 3bc0433c: c02fd0ef jal ra,3bc0173e + 3bc04340: 00050d1b sext.w s10,a0 + 3bc04344: 010c8513 addi a0,s9,16 + 3bc04348: 9552 add a0,a0,s4 + 3bc0434a: bf4fd0ef jal ra,3bc0173e + 3bc0434e: 0005069b sext.w a3,a0 + 3bc04352: 019a0533 add a0,s4,s9 + 3bc04356: e436 sd a3,8(sp) + 3bc04358: be6fd0ef jal ra,3bc0173e + 3bc0435c: 66a2 ld a3,8(sp) + 3bc0435e: 0005071b sext.w a4,a0 + 3bc04362: 866a mv a2,s10 + 3bc04364: 85ca mv a1,s2 + 3bc04366: 855a mv a0,s6 + 3bc04368: d58fe0ef jal ra,3bc028c0 + 3bc0436c: 014c8513 addi a0,s9,20 + 3bc04370: 9552 add a0,a0,s4 + 3bc04372: bccfd0ef jal ra,3bc0173e + 3bc04376: 0ce1 addi s9,s9,24 + 3bc04378: 0005059b sext.w a1,a0 + 3bc0437c: 019a0533 add a0,s4,s9 + 3bc04380: e42e sd a1,8(sp) + 3bc04382: bbcfd0ef jal ra,3bc0173e + 3bc04386: 65a2 ld a1,8(sp) + 3bc04388: 0005061b sext.w a2,a0 + 3bc0438c: 4701 li a4,0 + 3bc0438e: 4681 li a3,0 + 3bc04390: 855e mv a0,s7 + 3bc04392: d2efe0ef jal ra,3bc028c0 + 3bc04396: 856a mv a0,s10 + 3bc04398: 85ee mv a1,s11 + 3bc0439a: 001d7d13 andi s10,s10,1 + 3bc0439e: ba6fd0ef jal ra,3bc01744 + 3bc043a2: 140d0563 beqz s10,3bc044ec + 3bc043a6: 4585 li a1,1 + 3bc043a8: 854a mv a0,s2 + 3bc043aa: f55fe0ef jal ra,3bc032fe + 3bc043ae: 00050c9b sext.w s9,a0 + 3bc043b2: 0c9e slli s9,s9,0x7 + 3bc043b4: 01940833 add a6,s0,s9 + 3bc043b8: 09883603 ld a2,152(a6) + 3bc043bc: 00751d13 slli s10,a0,0x7 + 3bc043c0: 098d0d93 addi s11,s10,152 + 3bc043c4: 442c lw a1,72(s0) + 3bc043c6: 9da2 add s11,s11,s0 + 3bc043c8: 41b60633 sub a2,a2,s11 + 3bc043cc: 00163613 seqz a2,a2 + 3bc043d0: 4701 li a4,0 + 3bc043d2: 4681 li a3,0 + 3bc043d4: 8562 mv a0,s8 + 3bc043d6: e442 sd a6,8(sp) + 3bc043d8: ce8fe0ef jal ra,3bc028c0 + 3bc043dc: 4430 lw a2,72(s0) + 3bc043de: 47a1 li a5,8 + 3bc043e0: 6822 ld a6,8(sp) + 3bc043e2: 00f61a63 bne a2,a5,3bc043f6 + 3bc043e6: 4799 li a5,6 + 3bc043e8: c43c sw a5,72(s0) + 3bc043ea: 8522 mv a0,s0 + 3bc043ec: a0eff0ef jal ra,3bc035fa + 3bc043f0: 04090c63 beqz s2,3bc04448 + 3bc043f4: a8e5 j 3bc044ec + 3bc043f6: 09883703 ld a4,152(a6) + 3bc043fa: feed8be3 beq s11,a4,3bc043f0 + 3bc043fe: ffc72303 lw t1,-4(a4) # bfffc <__BSS_SIZE__+0xba3ec> + 3bc04402: fd872883 lw a7,-40(a4) + 3bc04406: 0b082783 lw a5,176(a6) + 3bc0440a: 050d0513 addi a0,s10,80 + 3bc0440e: 40688e3b subw t3,a7,t1 + 3bc04412: 0007869b sext.w a3,a5 + 3bc04416: 000e081b sext.w a6,t3 + 3bc0441a: 00d836b3 sltu a3,a6,a3 + 3bc0441e: 0016c693 xori a3,a3,1 + 3bc04422: 40de178b mveqz a5,t3,a3 + 3bc04426: 006786bb addw a3,a5,t1 + 3bc0442a: fed72e23 sw a3,-4(a4) + 3bc0442e: 9522 add a0,a0,s0 + 3bc04430: fc070593 addi a1,a4,-64 + 3bc04434: 08091c63 bnez s2,3bc044cc + 3bc04438: 4785 li a5,1 + 3bc0443a: 06f61463 bne a2,a5,3bc044a2 + 3bc0443e: ec2ff0ef jal ra,3bc03b00 + 3bc04442: c119 beqz a0,3bc04448 + 3bc04444: 4795 li a5,5 + 3bc04446: c43c sw a5,72(s0) + 3bc04448: 27644783 lbu a5,630(s0) + 3bc0444c: c3a9 beqz a5,3bc0448e + 3bc0444e: 26843d03 ld s10,616(s0) + 3bc04452: 00078d9b sext.w s11,a5 + 3bc04456: e43e sd a5,8(sp) + 3bc04458: 9d56 add s10,s10,s5 + 3bc0445a: 856a mv a0,s10 + 3bc0445c: ae2fd0ef jal ra,3bc0173e + 3bc04460: 67a2 ld a5,8(sp) + 3bc04462: 00050c9b sext.w s9,a0 + 3bc04466: 4711 li a4,4 + 3bc04468: 37fd addiw a5,a5,-1 + 3bc0446a: f8fcfc93 andi s9,s9,-113 + 3bc0446e: 02f76063 bltu a4,a5,3bc0448e + 3bc04472: 85ee mv a1,s11 + 3bc04474: 00007517 auipc a0,0x7 + 3bc04478: a7450513 addi a0,a0,-1420 # 3bc0aee8 + 3bc0447c: eddfb0ef jal ra,3bc00358 + 3bc04480: 004d9513 slli a0,s11,0x4 + 3bc04484: 85ea mv a1,s10 + 3bc04486: 01956533 or a0,a0,s9 + 3bc0448a: abafd0ef jal ra,3bc01744 + 3bc0448e: 443c lw a5,72(s0) + 3bc04490: 471d li a4,7 + 3bc04492: 06e79363 bne a5,a4,3bc044f8 + 3bc04496: 04042423 sw zero,72(s0) + 3bc0449a: 8522 mv a0,s0 + 3bc0449c: c6aff0ef jal ra,3bc03906 + 3bc044a0: a8a9 j 3bc044fa + 3bc044a2: 479d li a5,7 + 3bc044a4: 00f61863 bne a2,a5,3bc044b4 + 3bc044a8: 4601 li a2,0 + 3bc044aa: c68fe0ef jal ra,3bc02912 + 3bc044ae: 04042423 sw zero,72(s0) + 3bc044b2: bf59 j 3bc04448 + 3bc044b4: 4795 li a5,5 + 3bc044b6: f8f619e3 bne a2,a5,3bc04448 + 3bc044ba: 4601 li a2,0 + 3bc044bc: c56fe0ef jal ra,3bc02912 + 3bc044c0: 4799 li a5,6 + 3bc044c2: c43c sw a5,72(s0) + 3bc044c4: 8522 mv a0,s0 + 3bc044c6: 934ff0ef jal ra,3bc035fa + 3bc044ca: bfbd j 3bc04448 + 3bc044cc: 00d89763 bne a7,a3,3bc044da + 3bc044d0: 4601 li a2,0 + 3bc044d2: e42a sd a0,8(sp) + 3bc044d4: c3efe0ef jal ra,3bc02912 + 3bc044d8: 6522 ld a0,8(sp) + 3bc044da: 9ca2 add s9,s9,s0 + 3bc044dc: 098cb583 ld a1,152(s9) + 3bc044e0: 00bd8663 beq s11,a1,3bc044ec + 3bc044e4: fc058593 addi a1,a1,-64 + 3bc044e8: c78ff0ef jal ra,3bc03960 + 3bc044ec: 2905 addiw s2,s2,1 + 3bc044ee: 0ff97913 andi s2,s2,255 + 3bc044f2: 0019d993 srli s3,s3,0x1 + 3bc044f6: b535 j 3bc04322 + 3bc044f8: d3cd beqz a5,3bc0449a + 3bc044fa: 27544703 lbu a4,629(s0) + 3bc044fe: 4785 li a5,1 + 3bc04500: fef716e3 bne a4,a5,3bc044ec + 3bc04504: 27444503 lbu a0,628(s0) + 3bc04508: 4585 li a1,1 + 3bc0450a: df5fe0ef jal ra,3bc032fe + 3bc0450e: 0005071b sext.w a4,a0 + 3bc04512: 071e slli a4,a4,0x7 + 3bc04514: 9722 add a4,a4,s0 + 3bc04516: 00751793 slli a5,a0,0x7 + 3bc0451a: 6f4c ld a1,152(a4) + 3bc0451c: 05078513 addi a0,a5,80 # c0050 <__BSS_SIZE__+0xba440> + 3bc04520: 09878793 addi a5,a5,152 + 3bc04524: 97a2 add a5,a5,s0 + 3bc04526: 9522 add a0,a0,s0 + 3bc04528: 00f58a63 beq a1,a5,3bc0453c + 3bc0452c: 0c170783 lb a5,193(a4) + 3bc04530: fc058593 addi a1,a1,-64 + 3bc04534: 0007d763 bgez a5,3bc04542 + 3bc04538: c28ff0ef jal ra,3bc03960 + 3bc0453c: 26040aa3 sb zero,629(s0) + 3bc04540: b775 j 3bc044ec + 3bc04542: a1eff0ef jal ra,3bc03760 + 3bc04546: bfdd j 3bc0453c + 3bc04548: 0019f793 andi a5,s3,1 + 3bc0454c: c3a1 beqz a5,3bc0458c + 3bc0454e: 05890493 addi s1,s2,88 + 3bc04552: 0496 slli s1,s1,0x5 + 3bc04554: 04a1 addi s1,s1,8 + 3bc04556: 94da add s1,s1,s6 + 3bc04558: 8526 mv a0,s1 + 3bc0455a: 9e4fd0ef jal ra,3bc0173e + 3bc0455e: 0005061b sext.w a2,a0 + 3bc04562: 8532 mv a0,a2 + 3bc04564: 85a6 mv a1,s1 + 3bc04566: e432 sd a2,8(sp) + 3bc04568: 9dcfd0ef jal ra,3bc01744 + 3bc0456c: 6622 ld a2,8(sp) + 3bc0456e: 06091063 bnez s2,3bc045ce + 3bc04572: 00867793 andi a5,a2,8 + 3bc04576: c38d beqz a5,3bc04598 + 3bc04578: 8556 mv a0,s5 + 3bc0457a: 4701 li a4,0 + 3bc0457c: 4681 li a3,0 + 3bc0457e: 4601 li a2,0 + 3bc04580: 4581 li a1,0 + 3bc04582: b3efe0ef jal ra,3bc028c0 + 3bc04586: 8522 mv a0,s0 + 3bc04588: fc8ff0ef jal ra,3bc03d50 + 3bc0458c: 2905 addiw s2,s2,1 + 3bc0458e: 0ff97913 andi s2,s2,255 + 3bc04592: 0019d993 srli s3,s3,0x1 + 3bc04596: b301 j 3bc04296 + 3bc04598: 00167793 andi a5,a2,1 + 3bc0459c: dbe5 beqz a5,3bc0458c + 3bc0459e: 443c lw a5,72(s0) + 3bc045a0: 4701 li a4,0 + 3bc045a2: 4681 li a3,0 + 3bc045a4: 01778b63 beq a5,s7,3bc045ba + 3bc045a8: 4585 li a1,1 + 3bc045aa: 8552 mv a0,s4 + 3bc045ac: b14fe0ef jal ra,3bc028c0 + 3bc045b0: 4581 li a1,0 + 3bc045b2: 8522 mv a0,s0 + 3bc045b4: a56ff0ef jal ra,3bc0380a + 3bc045b8: bfd1 j 3bc0458c + 3bc045ba: 8552 mv a0,s4 + 3bc045bc: 4589 li a1,2 + 3bc045be: b02fe0ef jal ra,3bc028c0 + 3bc045c2: 8522 mv a0,s0 + 3bc045c4: 04042423 sw zero,72(s0) + 3bc045c8: b3eff0ef jal ra,3bc03906 + 3bc045cc: b7c1 j 3bc0458c + 3bc045ce: 8a05 andi a2,a2,1 + 3bc045d0: de55 beqz a2,3bc0458c + 3bc045d2: 85ca mv a1,s2 + 3bc045d4: bff9 j 3bc045b2 + +000000003bc045d6 : + 3bc045d6: 07158703 lb a4,113(a1) + 3bc045da: 00075663 bgez a4,3bc045e6 + 3bc045de: 4705 li a4,1 + 3bc045e0: c538 sw a4,72(a0) + 3bc045e2: ddaff06f j 3bc03bbc + 3bc045e6: 4711 li a4,4 + 3bc045e8: c538 sw a4,72(a0) + 3bc045ea: daaff06f j 3bc03b94 + +000000003bc045ee : + 3bc045ee: e581 bnez a1,3bc045f6 + 3bc045f0: 57a9 li a5,-22 + 3bc045f2: 853e mv a0,a5 + 3bc045f4: 8082 ret + 3bc045f6: 759c ld a5,40(a1) + 3bc045f8: dfe5 beqz a5,3bc045f0 + 3bc045fa: 699c ld a5,16(a1) + 3bc045fc: dbf5 beqz a5,3bc045f0 + 3bc045fe: 61bc ld a5,64(a1) + 3bc04600: 7179 addi sp,sp,-48 + 3bc04602: e84a sd s2,16(sp) + 3bc04604: f406 sd ra,40(sp) + 3bc04606: f022 sd s0,32(sp) + 3bc04608: ec26 sd s1,24(sp) + 3bc0460a: e44e sd s3,8(sp) + 3bc0460c: 04058913 addi s2,a1,64 + 3bc04610: 06f91763 bne s2,a5,3bc0467e + 3bc04614: c52d beqz a0,3bc0467e + 3bc04616: 613c ld a5,64(a0) + 3bc04618: 84ae mv s1,a1 + 3bc0461a: 842a mv s0,a0 + 3bc0461c: cbb9 beqz a5,3bc04672 + 3bc0461e: 7c08 ld a0,56(s0) + 3bc04620: 07144683 lbu a3,113(s0) + 3bc04624: fc600793 li a5,-58 + 3bc04628: 7d18 ld a4,56(a0) + 3bc0462a: cb39 beqz a4,3bc04680 + 3bc0462c: 5118 lw a4,32(a0) + 3bc0462e: fc600793 li a5,-58 + 3bc04632: c739 beqz a4,3bc04680 + 3bc04634: 4785 li a5,1 + 3bc04636: 1782 slli a5,a5,0x20 + 3bc04638: fdc78793 addi a5,a5,-36 + 3bc0463c: 26853703 ld a4,616(a0) + 3bc04640: fc9c sd a5,56(s1) + 3bc04642: 643c ld a5,72(s0) + 3bc04644: 04840993 addi s3,s0,72 + 3bc04648: 04f99f63 bne s3,a5,3bc046a6 + 3bc0464c: 07044783 lbu a5,112(s0) + 3bc04650: ebb9 bnez a5,3bc046a6 + 3bc04652: 00f6f793 andi a5,a3,15 + 3bc04656: ef8d bnez a5,3bc04690 + 3bc04658: 683c ld a5,80(s0) + 3bc0465a: 05243823 sd s2,80(s0) + 3bc0465e: 0534b023 sd s3,64(s1) + 3bc04662: e4bc sd a5,72(s1) + 3bc04664: 0127b023 sd s2,0(a5) + 3bc04668: 85a2 mv a1,s0 + 3bc0466a: f6dff0ef jal ra,3bc045d6 + 3bc0466e: 4781 li a5,0 + 3bc04670: a801 j 3bc04680 + 3bc04672: 01853983 ld s3,24(a0) + 3bc04676: a4cfe0ef jal ra,3bc028c2 + 3bc0467a: faa982e3 beq s3,a0,3bc0461e + 3bc0467e: 57a9 li a5,-22 + 3bc04680: 70a2 ld ra,40(sp) + 3bc04682: 7402 ld s0,32(sp) + 3bc04684: 64e2 ld s1,24(sp) + 3bc04686: 6942 ld s2,16(sp) + 3bc04688: 69a2 ld s3,8(sp) + 3bc0468a: 853e mv a0,a5 + 3bc0468c: 6145 addi sp,sp,48 + 3bc0468e: 8082 ret + 3bc04690: fc76b78b extu a5,a3,63,7 + 3bc04694: 01470513 addi a0,a4,20 + 3bc04698: c385 beqz a5,3bc046b8 + 3bc0469a: 8a4fd0ef jal ra,3bc0173e + 3bc0469e: 85a6 mv a1,s1 + 3bc046a0: 8522 mv a0,s0 + 3bc046a2: abeff0ef jal ra,3bc03960 + 3bc046a6: 683c ld a5,80(s0) + 3bc046a8: 05243823 sd s2,80(s0) + 3bc046ac: 0534b023 sd s3,64(s1) + 3bc046b0: e4bc sd a5,72(s1) + 3bc046b2: 0127b023 sd s2,0(a5) + 3bc046b6: bf65 j 3bc0466e + 3bc046b8: 886fd0ef jal ra,3bc0173e + 3bc046bc: 85a6 mv a1,s1 + 3bc046be: 8522 mv a0,s0 + 3bc046c0: 8a0ff0ef jal ra,3bc03760 + 3bc046c4: b7cd j 3bc046a6 + +000000003bc046c6 : + 3bc046c6: 7179 addi sp,sp,-48 + 3bc046c8: f022 sd s0,32(sp) + 3bc046ca: ec26 sd s1,24(sp) + 3bc046cc: f406 sd ra,40(sp) + 3bc046ce: e432 sd a2,8(sp) + 3bc046d0: 0e0007b7 lui a5,0xe000 + 3bc046d4: 84ae mv s1,a1 + 3bc046d6: 638c ld a1,0(a5) + 3bc046d8: 842a mv s0,a0 + 3bc046da: 00007517 auipc a0,0x7 + 3bc046de: 82650513 addi a0,a0,-2010 # 3bc0af00 + 3bc046e2: 5055b78b extu a5,a1,20,5 + 3bc046e6: 85be mv a1,a5 + 3bc046e8: 00007717 auipc a4,0x7 + 3bc046ec: 00f71823 sh a5,16(a4) # 3bc0b6f8 + 3bc046f0: c69fb0ef jal ra,3bc00358 + 3bc046f4: 8522 mv a0,s0 + 3bc046f6: 7402 ld s0,32(sp) + 3bc046f8: 6622 ld a2,8(sp) + 3bc046fa: 70a2 ld ra,40(sp) + 3bc046fc: 85a6 mv a1,s1 + 3bc046fe: 64e2 ld s1,24(sp) + 3bc04700: 6145 addi sp,sp,48 + 3bc04702: bd5fd06f j 3bc022d6 + +000000003bc04706 : + 3bc04706: 4781 li a5,0 + 3bc04708: 00007697 auipc a3,0x7 + 3bc0470c: 81068693 addi a3,a3,-2032 # 3bc0af18 + 3bc04710: 0007871b sext.w a4,a5 + 3bc04714: 00c74363 blt a4,a2,3bc0471a + 3bc04718: 8082 ret + 3bc0471a: 80f5c80b lrbu a6,a1,a5,0 + 3bc0471e: 9c85370b extu a4,a0,39,8 + 3bc04722: 0085151b slliw a0,a0,0x8 + 3bc04726: 01074733 xor a4,a4,a6 + 3bc0472a: a2e6c70b lrhu a4,a3,a4,1 + 3bc0472e: 0785 addi a5,a5,1 + 3bc04730: 8d39 xor a0,a0,a4 + 3bc04732: 3c05350b extu a0,a0,15,0 + 3bc04736: bfe9 j 3bc04710 + +000000003bc04738 : + 3bc04738: 4d78 lw a4,92(a0) + 3bc0473a: 11000793 li a5,272 + 3bc0473e: fff7069b addiw a3,a4,-1 + 3bc04742: 04d7e563 bltu a5,a3,3bc0478c + 3bc04746: 7510 ld a2,40(a0) + 3bc04748: 7c07368b extu a3,a4,31,0 + 3bc0474c: 01853803 ld a6,24(a0) + 3bc04750: 8d91 sub a1,a1,a2 + 3bc04752: 02053e03 ld t3,32(a0) + 3bc04756: 04856883 lwu a7,72(a0) + 3bc0475a: 87ba mv a5,a4 + 3bc0475c: 00d5f463 bgeu a1,a3,3bc04764 + 3bc04760: 0005879b sext.w a5,a1 + 3bc04764: 416c lw a1,68(a0) + 3bc04766: 4134 lw a3,64(a0) + 3bc04768: e599 bnez a1,3bc04776 + 3bc0476a: 414c lw a1,4(a0) + 3bc0476c: 40d5833b subw t1,a1,a3 + 3bc04770: 0067e363 bltu a5,t1,3bc04776 + 3bc04774: c16c sw a1,68(a0) + 3bc04776: 9ebd addw a3,a3,a5 + 3bc04778: 9f1d subw a4,a4,a5 + 3bc0477a: c134 sw a3,64(a0) + 3bc0477c: cd78 sw a4,92(a0) + 3bc0477e: 86be mv a3,a5 + 3bc04780: 8732 mv a4,a2 + 3bc04782: e691 bnez a3,3bc0478e + 3bc04784: 7c07b78b extu a5,a5,31,0 + 3bc04788: 97b2 add a5,a5,a2 + 3bc0478a: f51c sd a5,40(a0) + 3bc0478c: 8082 ret + 3bc0478e: 36fd addiw a3,a3,-1 + 3bc04790: 411705b3 sub a1,a4,a7 + 3bc04794: 8372 mv t1,t3 + 3bc04796: 01176363 bltu a4,a7,3bc0479c + 3bc0479a: 4301 li t1,0 + 3bc0479c: 95c2 add a1,a1,a6 + 3bc0479e: 8065c58b lrbu a1,a1,t1,0 + 3bc047a2: 00e8558b srb a1,a6,a4,0 + 3bc047a6: 0705 addi a4,a4,1 + 3bc047a8: bfe9 j 3bc04782 + +000000003bc047aa : + 3bc047aa: 7155 addi sp,sp,-208 + 3bc047ac: e1a2 sd s0,192(sp) + 3bc047ae: 6405 lui s0,0x1 + 3bc047b0: e586 sd ra,200(sp) + 3bc047b2: fd26 sd s1,184(sp) + 3bc047b4: f94a sd s2,176(sp) + 3bc047b6: f54e sd s3,168(sp) + 3bc047b8: f152 sd s4,160(sp) + 3bc047ba: ed56 sd s5,152(sp) + 3bc047bc: e95a sd s6,144(sp) + 3bc047be: e55e sd s7,136(sp) + 3bc047c0: e162 sd s8,128(sp) + 3bc047c2: fce6 sd s9,120(sp) + 3bc047c4: f8ea sd s10,112(sp) + 3bc047c6: f4ee sd s11,104(sp) + 3bc047c8: e82e sd a1,16(sp) + 3bc047ca: f832 sd a2,48(sp) + 3bc047cc: 8004041b addiw s0,s0,-2048 + 3bc047d0: 417c lw a5,68(a0) + 3bc047d2: 04052e03 lw t3,64(a0) + 3bc047d6: 02853803 ld a6,40(a0) + 3bc047da: ec3e sd a5,24(sp) + 3bc047dc: eba1 bnez a5,3bc0482c + 3bc047de: 415c lw a5,4(a0) + 3bc047e0: 6742 ld a4,16(sp) + 3bc047e2: 66c2 ld a3,16(sp) + 3bc047e4: 41c787bb subw a5,a5,t3 + 3bc047e8: 7c07b78b extu a5,a5,31,0 + 3bc047ec: 41070733 sub a4,a4,a6 + 3bc047f0: e436 sd a3,8(sp) + 3bc047f2: 00e7f463 bgeu a5,a4,3bc047fa + 3bc047f6: 97c2 add a5,a5,a6 + 3bc047f8: e43e sd a5,8(sp) + 3bc047fa: 020e1b63 bnez t3,3bc04830 + 3bc047fe: 5d58 lw a4,60(a0) + 3bc04800: c00007b7 lui a5,0xc0000 + 3bc04804: bff78793 addi a5,a5,-1025 # ffffffffbffffbff <__BL2_END__+0xffffffff843ec7ef> + 3bc04808: 02e7f463 bgeu a5,a4,3bc04830 + 3bc0480c: 4505 li a0,1 + 3bc0480e: 60ae ld ra,200(sp) + 3bc04810: 640e ld s0,192(sp) + 3bc04812: 74ea ld s1,184(sp) + 3bc04814: 794a ld s2,176(sp) + 3bc04816: 79aa ld s3,168(sp) + 3bc04818: 7a0a ld s4,160(sp) + 3bc0481a: 6aea ld s5,152(sp) + 3bc0481c: 6b4a ld s6,144(sp) + 3bc0481e: 6baa ld s7,136(sp) + 3bc04820: 6c0a ld s8,128(sp) + 3bc04822: 7ce6 ld s9,120(sp) + 3bc04824: 7d46 ld s10,112(sp) + 3bc04826: 7da6 ld s11,104(sp) + 3bc04828: 6169 addi sp,sp,208 + 3bc0482a: 8082 ret + 3bc0482c: 67c2 ld a5,16(sp) + 3bc0482e: e43e sd a5,8(sp) + 3bc04830: 497c lw a5,84(a0) + 3bc04832: 00154703 lbu a4,1(a0) + 3bc04836: 690c ld a1,16(a0) + 3bc04838: f03e sd a5,32(sp) + 3bc0483a: 00054783 lbu a5,0(a0) + 3bc0483e: 00254303 lbu t1,2(a0) + 3bc04842: 74fd lui s1,0xfffff + 3bc04844: f43e sd a5,40(sp) + 3bc04846: 76a2 ld a3,40(sp) + 3bc04848: 10000793 li a5,256 + 3bc0484c: 00e7973b sllw a4,a5,a4 + 3bc04850: 02053a83 ld s5,32(a0) + 3bc04854: 00d7d7bb srlw a5,a5,a3 + 3bc04858: 60048493 addi s1,s1,1536 # fffffffffffff600 <__BL2_END__+0xffffffffc43ec1f0> + 3bc0485c: 56fd li a3,-1 + 3bc0485e: 40f707bb subw a5,a4,a5 + 3bc04862: 006696bb sllw a3,a3,t1 + 3bc04866: 94ae add s1,s1,a1 + 3bc04868: fc3e sd a5,56(sp) + 3bc0486a: fff6c693 not a3,a3 + 3bc0486e: e4a6 sd s1,72(sp) + 3bc04870: 05852883 lw a7,88(a0) + 3bc04874: a0058493 addi s1,a1,-1536 + 3bc04878: 04852f83 lw t6,72(a0) + 3bc0487c: 04c52f03 lw t5,76(a0) + 3bc04880: 05052983 lw s3,80(a0) + 3bc04884: 01853a03 ld s4,24(a0) + 3bc04888: 7918 ld a4,48(a0) + 3bc0488a: 5d10 lw a2,56(a0) + 3bc0488c: 5d5c lw a5,60(a0) + 3bc0488e: 2681 sext.w a3,a3 + 3bc04890: e8a6 sd s1,80(sp) + 3bc04892: fffa8493 addi s1,s5,-1 + 3bc04896: e0b6 sd a3,64(sp) + 3bc04898: 4301 li t1,0 + 3bc0489a: 010006b7 lui a3,0x1000 + 3bc0489e: eca6 sd s1,88(sp) + 3bc048a0: 6486 ld s1,64(sp) + 3bc048a2: 01c4feb3 and t4,s1,t3 + 3bc048a6: 004e9e9b slliw t4,t4,0x4 + 3bc048aa: 011e893b addw s2,t4,a7 + 3bc048ae: 02091493 slli s1,s2,0x20 + 3bc048b2: 01f4d913 srli s2,s1,0x1f + 3bc048b6: e0090b93 addi s7,s2,-512 + 3bc048ba: a175cb0b lrhu s6,a1,s7,0 + 3bc048be: 000b039b sext.w t2,s6 + 3bc048c2: 00d67a63 bgeu a2,a3,3bc048d6 + 3bc048c6: 9817428b lbuia t0,(a4),1,0 + 3bc048ca: 0087979b slliw a5,a5,0x8 + 3bc048ce: 0086161b slliw a2,a2,0x8 + 3bc048d2: 00f2e7b3 or a5,t0,a5 + 3bc048d6: 00b6529b srliw t0,a2,0xb + 3bc048da: 027284bb mulw s1,t0,t2 + 3bc048de: 82a6 mv t0,s1 + 3bc048e0: 7497f663 bgeu a5,s1,3bc0502c + 3bc048e4: 6ee2 ld t4,24(sp) + 3bc048e6: 407403bb subw t2,s0,t2 + 3bc048ea: 0053d39b srliw t2,t2,0x5 + 3bc048ee: 016383bb addw t2,t2,s6 + 3bc048f2: 2175d38b srh t2,a1,s7,0 + 3bc048f6: 01ceeeb3 or t4,t4,t3 + 3bc048fa: 28058613 addi a2,a1,640 + 3bc048fe: 020e8b63 beqz t4,3bc04934 + 3bc04902: 6966 ld s2,88(sp) + 3bc04904: fff80393 addi t2,a6,-1 + 3bc04908: 008e1e9b slliw t4,t3,0x8 + 3bc0490c: 4109138b mveqz t2,s2,a6 + 3bc04910: 807a438b lrbu t2,s4,t2,0 + 3bc04914: 01d38ebb addw t4,t2,t4 + 3bc04918: 73e2 ld t2,56(sp) + 3bc0491a: 01d3feb3 and t4,t2,t4 + 3bc0491e: 73a2 ld t2,40(sp) + 3bc04920: 007e9ebb sllw t4,t4,t2 + 3bc04924: 438d li t2,3 + 3bc04926: 027e8ebb mulw t4,t4,t2 + 3bc0492a: 020e9393 slli t2,t4,0x20 + 3bc0492e: 01f3de93 srli t4,t2,0x1f + 3bc04932: 9676 add a2,a2,t4 + 3bc04934: 4e99 li t4,6 + 3bc04936: 2e05 addiw t3,t3,1 + 3bc04938: 311eef63 bltu t4,a7,3bc04c56 + 3bc0493c: 438d li t2,3 + 3bc0493e: 8ec6 mv t4,a7 + 3bc04940: 0113f363 bgeu t2,a7,3bc04946 + 3bc04944: 4e8d li t4,3 + 3bc04946: 00265383 lhu t2,2(a2) + 3bc0494a: 41d888bb subw a7,a7,t4 + 3bc0494e: 00038e9b sext.w t4,t2 + 3bc04952: 00d4fa63 bgeu s1,a3,3bc04966 + 3bc04956: 0082949b slliw s1,t0,0x8 + 3bc0495a: 9817428b lbuia t0,(a4),1,0 + 3bc0495e: 0087979b slliw a5,a5,0x8 + 3bc04962: 00f2e7b3 or a5,t0,a5 + 3bc04966: 00b4d29b srliw t0,s1,0xb + 3bc0496a: 03d2893b mulw s2,t0,t4 + 3bc0496e: 2327f563 bgeu a5,s2,3bc04b98 + 3bc04972: 41d40ebb subw t4,s0,t4 + 3bc04976: 005ede9b srliw t4,t4,0x5 + 3bc0497a: 007e83bb addw t2,t4,t2 + 3bc0497e: 3c03b38b extu t2,t2,15,0 + 3bc04982: 4e89 li t4,2 + 3bc04984: 00761123 sh t2,2(a2) + 3bc04988: b3d6448b lurhu s1,a2,t4,1 + 3bc0498c: 03d61b8b addsl s7,a2,t4,1 + 3bc04990: 0004829b sext.w t0,s1 + 3bc04994: 00d97a63 bgeu s2,a3,3bc049a8 + 3bc04998: 9817438b lbuia t2,(a4),1,0 + 3bc0499c: 0087979b slliw a5,a5,0x8 + 3bc049a0: 0089191b slliw s2,s2,0x8 + 3bc049a4: 00f3e7b3 or a5,t2,a5 + 3bc049a8: 00b95b1b srliw s6,s2,0xb + 3bc049ac: 025b03bb mulw t2,s6,t0 + 3bc049b0: 001e9c1b slliw s8,t4,0x1 + 3bc049b4: 0e86 slli t4,t4,0x1 + 3bc049b6: 1e77fd63 bgeu a5,t2,3bc04bb0 + 3bc049ba: 405402bb subw t0,s0,t0 + 3bc049be: 0052d29b srliw t0,t0,0x5 + 3bc049c2: 009284bb addw s1,t0,s1 + 3bc049c6: 3c04b48b extu s1,s1,15,0 + 3bc049ca: 009b9023 sh s1,0(s7) + 3bc049ce: b3d6490b lurhu s2,a2,t4,1 + 3bc049d2: 020e9493 slli s1,t4,0x20 + 3bc049d6: 01f4dc13 srli s8,s1,0x1f + 3bc049da: 9c32 add s8,s8,a2 + 3bc049dc: 0009029b sext.w t0,s2 + 3bc049e0: 00d3f963 bgeu t2,a3,3bc049f2 + 3bc049e4: 9817448b lbuia s1,(a4),1,0 + 3bc049e8: 0087979b slliw a5,a5,0x8 + 3bc049ec: 0083939b slliw t2,t2,0x8 + 3bc049f0: 8fc5 or a5,a5,s1 + 3bc049f2: 00b3db9b srliw s7,t2,0xb + 3bc049f6: 025b84bb mulw s1,s7,t0 + 3bc049fa: 001e9b1b slliw s6,t4,0x1 + 3bc049fe: 1c97f663 bgeu a5,s1,3bc04bca + 3bc04a02: 405402bb subw t0,s0,t0 + 3bc04a06: 0052d29b srliw t0,t0,0x5 + 3bc04a0a: 0122893b addw s2,t0,s2 + 3bc04a0e: 3c09390b extu s2,s2,15,0 + 3bc04a12: 012c1023 sh s2,0(s8) + 3bc04a16: b366428b lurhu t0,a2,s6,1 + 3bc04a1a: 020b1e93 slli t4,s6,0x20 + 3bc04a1e: 01fedc13 srli s8,t4,0x1f + 3bc04a22: 9c32 add s8,s8,a2 + 3bc04a24: 00028e9b sext.w t4,t0 + 3bc04a28: 00d4fa63 bgeu s1,a3,3bc04a3c + 3bc04a2c: 9817438b lbuia t2,(a4),1,0 + 3bc04a30: 0087979b slliw a5,a5,0x8 + 3bc04a34: 0084949b slliw s1,s1,0x8 + 3bc04a38: 00f3e7b3 or a5,t2,a5 + 3bc04a3c: 00b4db9b srliw s7,s1,0xb + 3bc04a40: 03db83bb mulw t2,s7,t4 + 3bc04a44: 001b191b slliw s2,s6,0x1 + 3bc04a48: 1877fc63 bgeu a5,t2,3bc04be0 + 3bc04a4c: 41d40ebb subw t4,s0,t4 + 3bc04a50: 005ede9b srliw t4,t4,0x5 + 3bc04a54: 005e82bb addw t0,t4,t0 + 3bc04a58: 3c02b28b extu t0,t0,15,0 + 3bc04a5c: 02091493 slli s1,s2,0x20 + 3bc04a60: 005c1023 sh t0,0(s8) + 3bc04a64: 01f4db93 srli s7,s1,0x1f + 3bc04a68: b326448b lurhu s1,a2,s2,1 + 3bc04a6c: 9bb2 add s7,s7,a2 + 3bc04a6e: 00048e9b sext.w t4,s1 + 3bc04a72: 00d3fa63 bgeu t2,a3,3bc04a86 + 3bc04a76: 9817428b lbuia t0,(a4),1,0 + 3bc04a7a: 0087979b slliw a5,a5,0x8 + 3bc04a7e: 0083939b slliw t2,t2,0x8 + 3bc04a82: 00f2e7b3 or a5,t0,a5 + 3bc04a86: 00b3db1b srliw s6,t2,0xb + 3bc04a8a: 03db02bb mulw t0,s6,t4 + 3bc04a8e: 0019191b slliw s2,s2,0x1 + 3bc04a92: 1657f363 bgeu a5,t0,3bc04bf8 + 3bc04a96: 41d40ebb subw t4,s0,t4 + 3bc04a9a: 005ede9b srliw t4,t4,0x5 + 3bc04a9e: 009e84bb addw s1,t4,s1 + 3bc04aa2: 3c04b48b extu s1,s1,15,0 + 3bc04aa6: 009b9023 sh s1,0(s7) + 3bc04aaa: 02091493 slli s1,s2,0x20 + 3bc04aae: 01f4db93 srli s7,s1,0x1f + 3bc04ab2: b326448b lurhu s1,a2,s2,1 + 3bc04ab6: 9bb2 add s7,s7,a2 + 3bc04ab8: 00048e9b sext.w t4,s1 + 3bc04abc: 00d2fa63 bgeu t0,a3,3bc04ad0 + 3bc04ac0: 9817438b lbuia t2,(a4),1,0 + 3bc04ac4: 0087979b slliw a5,a5,0x8 + 3bc04ac8: 0082929b slliw t0,t0,0x8 + 3bc04acc: 00f3e7b3 or a5,t2,a5 + 3bc04ad0: 00b2db1b srliw s6,t0,0xb + 3bc04ad4: 03db03bb mulw t2,s6,t4 + 3bc04ad8: 0019191b slliw s2,s2,0x1 + 3bc04adc: 1277fa63 bgeu a5,t2,3bc04c10 + 3bc04ae0: 41d40ebb subw t4,s0,t4 + 3bc04ae4: 005ede9b srliw t4,t4,0x5 + 3bc04ae8: 009e84bb addw s1,t4,s1 + 3bc04aec: 3c04b48b extu s1,s1,15,0 + 3bc04af0: 009b9023 sh s1,0(s7) + 3bc04af4: 02091493 slli s1,s2,0x20 + 3bc04af8: 01f4db93 srli s7,s1,0x1f + 3bc04afc: b326448b lurhu s1,a2,s2,1 + 3bc04b00: 9bb2 add s7,s7,a2 + 3bc04b02: 00048e9b sext.w t4,s1 + 3bc04b06: 00d3fa63 bgeu t2,a3,3bc04b1a + 3bc04b0a: 9817428b lbuia t0,(a4),1,0 + 3bc04b0e: 0087979b slliw a5,a5,0x8 + 3bc04b12: 0083939b slliw t2,t2,0x8 + 3bc04b16: 00f2e7b3 or a5,t0,a5 + 3bc04b1a: 00b3db1b srliw s6,t2,0xb + 3bc04b1e: 03db02bb mulw t0,s6,t4 + 3bc04b22: 0019191b slliw s2,s2,0x1 + 3bc04b26: 1057f163 bgeu a5,t0,3bc04c28 + 3bc04b2a: 41d40ebb subw t4,s0,t4 + 3bc04b2e: 005ede9b srliw t4,t4,0x5 + 3bc04b32: 009e84bb addw s1,t4,s1 + 3bc04b36: 3c04b48b extu s1,s1,15,0 + 3bc04b3a: 009b9023 sh s1,0(s7) + 3bc04b3e: b3264b8b lurhu s7,a2,s2,1 + 3bc04b42: 02091493 slli s1,s2,0x20 + 3bc04b46: 01f4db13 srli s6,s1,0x1f + 3bc04b4a: 9b32 add s6,s6,a2 + 3bc04b4c: 000b8e9b sext.w t4,s7 + 3bc04b50: 00d2f963 bgeu t0,a3,3bc04b62 + 3bc04b54: 9817460b lbuia a2,(a4),1,0 + 3bc04b58: 0087979b slliw a5,a5,0x8 + 3bc04b5c: 0082929b slliw t0,t0,0x8 + 3bc04b60: 8fd1 or a5,a5,a2 + 3bc04b62: 00b2d39b srliw t2,t0,0xb + 3bc04b66: 03d3863b mulw a2,t2,t4 + 3bc04b6a: 0019149b slliw s1,s2,0x1 + 3bc04b6e: 0cc7f963 bgeu a5,a2,3bc04c40 + 3bc04b72: 41d40ebb subw t4,s0,t4 + 3bc04b76: 005ede9b srliw t4,t4,0x5 + 3bc04b7a: 017e8ebb addw t4,t4,s7 + 3bc04b7e: 01db1023 sh t4,0(s6) + 3bc04b82: 010a548b srb s1,s4,a6,0 + 3bc04b86: 0805 addi a6,a6,1 + 3bc04b88: 64a2 ld s1,8(sp) + 3bc04b8a: 649870e3 bgeu a6,s1,3bc059ca + 3bc04b8e: 74c2 ld s1,48(sp) + 3bc04b90: d09768e3 bltu a4,s1,3bc048a0 + 3bc04b94: 6370006f j 3bc059ca + 3bc04b98: 005ede9b srliw t4,t4,0x5 + 3bc04b9c: 41d383bb subw t2,t2,t4 + 3bc04ba0: 412787bb subw a5,a5,s2 + 3bc04ba4: 3c03b38b extu t2,t2,15,0 + 3bc04ba8: 4124893b subw s2,s1,s2 + 3bc04bac: 4e8d li t4,3 + 3bc04bae: bbd9 j 3bc04984 + 3bc04bb0: 0052d29b srliw t0,t0,0x5 + 3bc04bb4: 405484bb subw s1,s1,t0 + 3bc04bb8: 407787bb subw a5,a5,t2 + 3bc04bbc: 3c04b48b extu s1,s1,15,0 + 3bc04bc0: 001c0e9b addiw t4,s8,1 + 3bc04bc4: 407903bb subw t2,s2,t2 + 3bc04bc8: b509 j 3bc049ca + 3bc04bca: 0052d29b srliw t0,t0,0x5 + 3bc04bce: 4059093b subw s2,s2,t0 + 3bc04bd2: 9f85 subw a5,a5,s1 + 3bc04bd4: 3c09390b extu s2,s2,15,0 + 3bc04bd8: 2b05 addiw s6,s6,1 + 3bc04bda: 409384bb subw s1,t2,s1 + 3bc04bde: bd15 j 3bc04a12 + 3bc04be0: 005ede9b srliw t4,t4,0x5 + 3bc04be4: 41d282bb subw t0,t0,t4 + 3bc04be8: 407787bb subw a5,a5,t2 + 3bc04bec: 3c02b28b extu t0,t0,15,0 + 3bc04bf0: 2905 addiw s2,s2,1 + 3bc04bf2: 407483bb subw t2,s1,t2 + 3bc04bf6: b59d j 3bc04a5c + 3bc04bf8: 005ede9b srliw t4,t4,0x5 + 3bc04bfc: 41d484bb subw s1,s1,t4 + 3bc04c00: 405787bb subw a5,a5,t0 + 3bc04c04: 3c04b48b extu s1,s1,15,0 + 3bc04c08: 2905 addiw s2,s2,1 + 3bc04c0a: 405382bb subw t0,t2,t0 + 3bc04c0e: bd61 j 3bc04aa6 + 3bc04c10: 005ede9b srliw t4,t4,0x5 + 3bc04c14: 41d484bb subw s1,s1,t4 + 3bc04c18: 407787bb subw a5,a5,t2 + 3bc04c1c: 3c04b48b extu s1,s1,15,0 + 3bc04c20: 2905 addiw s2,s2,1 + 3bc04c22: 407283bb subw t2,t0,t2 + 3bc04c26: b5e9 j 3bc04af0 + 3bc04c28: 005ede9b srliw t4,t4,0x5 + 3bc04c2c: 41d484bb subw s1,s1,t4 + 3bc04c30: 405787bb subw a5,a5,t0 + 3bc04c34: 3c04b48b extu s1,s1,15,0 + 3bc04c38: 2905 addiw s2,s2,1 + 3bc04c3a: 405382bb subw t0,t2,t0 + 3bc04c3e: bdf5 j 3bc04b3a + 3bc04c40: 005ede9b srliw t4,t4,0x5 + 3bc04c44: 41db8ebb subw t4,s7,t4 + 3bc04c48: 9f91 subw a5,a5,a2 + 3bc04c4a: 01db1023 sh t4,0(s6) + 3bc04c4e: 2485 addiw s1,s1,1 + 3bc04c50: 40c2863b subw a2,t0,a2 + 3bc04c54: b73d j 3bc04b82 + 3bc04c56: 7c0fb90b extu s2,t6,31,0 + 3bc04c5a: 41280eb3 sub t4,a6,s2 + 3bc04c5e: 83d6 mv t2,s5 + 3bc04c60: 01286363 bltu a6,s2,3bc04c66 + 3bc04c64: 4381 li t2,0 + 3bc04c66: 9ed2 add t4,t4,s4 + 3bc04c68: 4925 li s2,9 + 3bc04c6a: 807ece8b lrbu t4,t4,t2,0 + 3bc04c6e: 438d li t2,3 + 3bc04c70: 01197363 bgeu s2,a7,3bc04c76 + 3bc04c74: 4399 li t2,6 + 3bc04c76: 001e9b1b slliw s6,t4,0x1 + 3bc04c7a: 100b7b13 andi s6,s6,256 + 3bc04c7e: 407888bb subw a7,a7,t2 + 3bc04c82: 101b039b addiw t2,s6,257 + 3bc04c86: b2764c0b lurhu s8,a2,t2,1 + 3bc04c8a: 101b0b93 addi s7,s6,257 + 3bc04c8e: 03761b8b addsl s7,a2,s7,1 + 3bc04c92: 000c039b sext.w t2,s8 + 3bc04c96: 00d4fa63 bgeu s1,a3,3bc04caa + 3bc04c9a: 0082949b slliw s1,t0,0x8 + 3bc04c9e: 9817428b lbuia t0,(a4),1,0 + 3bc04ca2: 0087979b slliw a5,a5,0x8 + 3bc04ca6: 00f2e7b3 or a5,t0,a5 + 3bc04caa: 00b4d29b srliw t0,s1,0xb + 3bc04cae: 0272893b mulw s2,t0,t2 + 3bc04cb2: 2b27ff63 bgeu a5,s2,3bc04f70 + 3bc04cb6: 407403bb subw t2,s0,t2 + 3bc04cba: 0053d39b srliw t2,t2,0x5 + 3bc04cbe: 01838c3b addw s8,t2,s8 + 3bc04cc2: 3c0c3c0b extu s8,s8,15,0 + 3bc04cc6: 100b4b13 xori s6,s6,256 + 3bc04cca: 4289 li t0,2 + 3bc04ccc: 002e939b slliw t2,t4,0x2 + 3bc04cd0: 007b73b3 and t2,s6,t2 + 3bc04cd4: 005b04bb addw s1,s6,t0 + 3bc04cd8: 018b9023 sh s8,0(s7) + 3bc04cdc: 00038c1b sext.w s8,t2 + 3bc04ce0: 007483bb addw t2,s1,t2 + 3bc04ce4: b2764b8b lurhu s7,a2,t2,1 + 3bc04ce8: 02039493 slli s1,t2,0x20 + 3bc04cec: 01f4dd13 srli s10,s1,0x1f + 3bc04cf0: 9d32 add s10,s10,a2 + 3bc04cf2: 000b839b sext.w t2,s7 + 3bc04cf6: 00d97963 bgeu s2,a3,3bc04d08 + 3bc04cfa: 9817448b lbuia s1,(a4),1,0 + 3bc04cfe: 0087979b slliw a5,a5,0x8 + 3bc04d02: 0089191b slliw s2,s2,0x8 + 3bc04d06: 8fc5 or a5,a5,s1 + 3bc04d08: 00b95c9b srliw s9,s2,0xb + 3bc04d0c: 027c84bb mulw s1,s9,t2 + 3bc04d10: 00129d9b slliw s11,t0,0x1 + 3bc04d14: 0286 slli t0,t0,0x1 + 3bc04d16: 2697f963 bgeu a5,s1,3bc04f88 + 3bc04d1a: 407403bb subw t2,s0,t2 + 3bc04d1e: 0053d39b srliw t2,t2,0x5 + 3bc04d22: 01738bbb addw s7,t2,s7 + 3bc04d26: 3c0bbb8b extu s7,s7,15,0 + 3bc04d2a: 018b4c33 xor s8,s6,s8 + 3bc04d2e: 003e939b slliw t2,t4,0x3 + 3bc04d32: 007c73b3 and t2,s8,t2 + 3bc04d36: 005c093b addw s2,s8,t0 + 3bc04d3a: 017d1023 sh s7,0(s10) + 3bc04d3e: 00038b1b sext.w s6,t2 + 3bc04d42: 007903bb addw t2,s2,t2 + 3bc04d46: b2764c8b lurhu s9,a2,t2,1 + 3bc04d4a: 02039913 slli s2,t2,0x20 + 3bc04d4e: 01f95d93 srli s11,s2,0x1f + 3bc04d52: 9db2 add s11,s11,a2 + 3bc04d54: 000c839b sext.w t2,s9 + 3bc04d58: 00d4fa63 bgeu s1,a3,3bc04d6c + 3bc04d5c: 9817490b lbuia s2,(a4),1,0 + 3bc04d60: 0087979b slliw a5,a5,0x8 + 3bc04d64: 0084949b slliw s1,s1,0x8 + 3bc04d68: 00f967b3 or a5,s2,a5 + 3bc04d6c: 00b4dd1b srliw s10,s1,0xb + 3bc04d70: 027d093b mulw s2,s10,t2 + 3bc04d74: 00129b9b slliw s7,t0,0x1 + 3bc04d78: 2327f463 bgeu a5,s2,3bc04fa0 + 3bc04d7c: 407403bb subw t2,s0,t2 + 3bc04d80: 0053d39b srliw t2,t2,0x5 + 3bc04d84: 01938cbb addw s9,t2,s9 + 3bc04d88: 3c0cbc8b extu s9,s9,15,0 + 3bc04d8c: 016c4b33 xor s6,s8,s6 + 3bc04d90: 004e929b slliw t0,t4,0x4 + 3bc04d94: 005b72b3 and t0,s6,t0 + 3bc04d98: 017b03bb addw t2,s6,s7 + 3bc04d9c: 019d9023 sh s9,0(s11) + 3bc04da0: 00028c1b sext.w s8,t0 + 3bc04da4: 005382bb addw t0,t2,t0 + 3bc04da8: b256438b lurhu t2,a2,t0,1 + 3bc04dac: 02029493 slli s1,t0,0x20 + 3bc04db0: 01f4dd13 srli s10,s1,0x1f + 3bc04db4: 9d32 add s10,s10,a2 + 3bc04db6: 0003829b sext.w t0,t2 + 3bc04dba: 00d97963 bgeu s2,a3,3bc04dcc + 3bc04dbe: 9817448b lbuia s1,(a4),1,0 + 3bc04dc2: 0087979b slliw a5,a5,0x8 + 3bc04dc6: 0089191b slliw s2,s2,0x8 + 3bc04dca: 8fc5 or a5,a5,s1 + 3bc04dcc: 00b95c9b srliw s9,s2,0xb + 3bc04dd0: 025c84bb mulw s1,s9,t0 + 3bc04dd4: 001b9b9b slliw s7,s7,0x1 + 3bc04dd8: 1e97f063 bgeu a5,s1,3bc04fb8 + 3bc04ddc: 405402bb subw t0,s0,t0 + 3bc04de0: 0052d29b srliw t0,t0,0x5 + 3bc04de4: 007283bb addw t2,t0,t2 + 3bc04de8: 3c03b38b extu t2,t2,15,0 + 3bc04dec: 018b4c33 xor s8,s6,s8 + 3bc04df0: 005e929b slliw t0,t4,0x5 + 3bc04df4: 007d1023 sh t2,0(s10) + 3bc04df8: 005c72b3 and t0,s8,t0 + 3bc04dfc: 017c03bb addw t2,s8,s7 + 3bc04e00: 00028b1b sext.w s6,t0 + 3bc04e04: 005382bb addw t0,t2,t0 + 3bc04e08: b256490b lurhu s2,a2,t0,1 + 3bc04e0c: 02029393 slli t2,t0,0x20 + 3bc04e10: 01f3dd13 srli s10,t2,0x1f + 3bc04e14: 9d32 add s10,s10,a2 + 3bc04e16: 0009029b sext.w t0,s2 + 3bc04e1a: 00d4fa63 bgeu s1,a3,3bc04e2e + 3bc04e1e: 9817438b lbuia t2,(a4),1,0 + 3bc04e22: 0087979b slliw a5,a5,0x8 + 3bc04e26: 0084949b slliw s1,s1,0x8 + 3bc04e2a: 00f3e7b3 or a5,t2,a5 + 3bc04e2e: 00b4dc9b srliw s9,s1,0xb + 3bc04e32: 025c83bb mulw t2,s9,t0 + 3bc04e36: 001b9b9b slliw s7,s7,0x1 + 3bc04e3a: 1877fa63 bgeu a5,t2,3bc04fce + 3bc04e3e: 405402bb subw t0,s0,t0 + 3bc04e42: 0052d29b srliw t0,t0,0x5 + 3bc04e46: 0122893b addw s2,t0,s2 + 3bc04e4a: 3c09390b extu s2,s2,15,0 + 3bc04e4e: 016c4b33 xor s6,s8,s6 + 3bc04e52: 006e929b slliw t0,t4,0x6 + 3bc04e56: 005b72b3 and t0,s6,t0 + 3bc04e5a: 017b04bb addw s1,s6,s7 + 3bc04e5e: 00028c1b sext.w s8,t0 + 3bc04e62: 005482bb addw t0,s1,t0 + 3bc04e66: 02029493 slli s1,t0,0x20 + 3bc04e6a: 012d1023 sh s2,0(s10) + 3bc04e6e: 01f4dd13 srli s10,s1,0x1f + 3bc04e72: b256448b lurhu s1,a2,t0,1 + 3bc04e76: 9d32 add s10,s10,a2 + 3bc04e78: 0004829b sext.w t0,s1 + 3bc04e7c: 00d3fa63 bgeu t2,a3,3bc04e90 + 3bc04e80: 9817490b lbuia s2,(a4),1,0 + 3bc04e84: 0087979b slliw a5,a5,0x8 + 3bc04e88: 0083939b slliw t2,t2,0x8 + 3bc04e8c: 00f967b3 or a5,s2,a5 + 3bc04e90: 00b3dc9b srliw s9,t2,0xb + 3bc04e94: 025c893b mulw s2,s9,t0 + 3bc04e98: 001b9b9b slliw s7,s7,0x1 + 3bc04e9c: 1527f563 bgeu a5,s2,3bc04fe6 + 3bc04ea0: 405402bb subw t0,s0,t0 + 3bc04ea4: 0052d29b srliw t0,t0,0x5 + 3bc04ea8: 009284bb addw s1,t0,s1 + 3bc04eac: 3c04b48b extu s1,s1,15,0 + 3bc04eb0: 018b4c33 xor s8,s6,s8 + 3bc04eb4: 007e929b slliw t0,t4,0x7 + 3bc04eb8: 005c72b3 and t0,s8,t0 + 3bc04ebc: 017c03bb addw t2,s8,s7 + 3bc04ec0: 009d1023 sh s1,0(s10) + 3bc04ec4: 0002849b sext.w s1,t0 + 3bc04ec8: 005382bb addw t0,t2,t0 + 3bc04ecc: b2564b0b lurhu s6,a2,t0,1 + 3bc04ed0: 02029393 slli t2,t0,0x20 + 3bc04ed4: 01f3dd93 srli s11,t2,0x1f + 3bc04ed8: 9db2 add s11,s11,a2 + 3bc04eda: 000b029b sext.w t0,s6 + 3bc04ede: 00d97a63 bgeu s2,a3,3bc04ef2 + 3bc04ee2: 9817438b lbuia t2,(a4),1,0 + 3bc04ee6: 0087979b slliw a5,a5,0x8 + 3bc04eea: 0089191b slliw s2,s2,0x8 + 3bc04eee: 00f3e7b3 or a5,t2,a5 + 3bc04ef2: 00b95d1b srliw s10,s2,0xb + 3bc04ef6: 025d03bb mulw t2,s10,t0 + 3bc04efa: 001b9c9b slliw s9,s7,0x1 + 3bc04efe: 1077f063 bgeu a5,t2,3bc04ffe + 3bc04f02: 405402bb subw t0,s0,t0 + 3bc04f06: 0052d29b srliw t0,t0,0x5 + 3bc04f0a: 01628b3b addw s6,t0,s6 + 3bc04f0e: 3c0b3b0b extu s6,s6,15,0 + 3bc04f12: 009c44b3 xor s1,s8,s1 + 3bc04f16: 008e9e9b slliw t4,t4,0x8 + 3bc04f1a: 01d4feb3 and t4,s1,t4 + 3bc04f1e: 019484bb addw s1,s1,s9 + 3bc04f22: 01d48ebb addw t4,s1,t4 + 3bc04f26: 016d9023 sh s6,0(s11) + 3bc04f2a: b3d64b0b lurhu s6,a2,t4,1 + 3bc04f2e: 020e9493 slli s1,t4,0x20 + 3bc04f32: 01f4d913 srli s2,s1,0x1f + 3bc04f36: 9932 add s2,s2,a2 + 3bc04f38: 000b0e9b sext.w t4,s6 + 3bc04f3c: 00d3f963 bgeu t2,a3,3bc04f4e + 3bc04f40: 9817460b lbuia a2,(a4),1,0 + 3bc04f44: 0087979b slliw a5,a5,0x8 + 3bc04f48: 0083939b slliw t2,t2,0x8 + 3bc04f4c: 8fd1 or a5,a5,a2 + 3bc04f4e: 00b3d29b srliw t0,t2,0xb + 3bc04f52: 03d2863b mulw a2,t0,t4 + 3bc04f56: 001c949b slliw s1,s9,0x1 + 3bc04f5a: 0ac7fe63 bgeu a5,a2,3bc05016 + 3bc04f5e: 41d40ebb subw t4,s0,t4 + 3bc04f62: 005ede9b srliw t4,t4,0x5 + 3bc04f66: 016e8ebb addw t4,t4,s6 + 3bc04f6a: 01d91023 sh t4,0(s2) + 3bc04f6e: b911 j 3bc04b82 + 3bc04f70: 0053d39b srliw t2,t2,0x5 + 3bc04f74: 407c0c3b subw s8,s8,t2 + 3bc04f78: 412787bb subw a5,a5,s2 + 3bc04f7c: 3c0c3c0b extu s8,s8,15,0 + 3bc04f80: 4124893b subw s2,s1,s2 + 3bc04f84: 428d li t0,3 + 3bc04f86: b399 j 3bc04ccc + 3bc04f88: 0053d39b srliw t2,t2,0x5 + 3bc04f8c: 407b8bbb subw s7,s7,t2 + 3bc04f90: 9f85 subw a5,a5,s1 + 3bc04f92: 3c0bbb8b extu s7,s7,15,0 + 3bc04f96: 001d829b addiw t0,s11,1 + 3bc04f9a: 409904bb subw s1,s2,s1 + 3bc04f9e: bb41 j 3bc04d2e + 3bc04fa0: 0053d39b srliw t2,t2,0x5 + 3bc04fa4: 407c8cbb subw s9,s9,t2 + 3bc04fa8: 412787bb subw a5,a5,s2 + 3bc04fac: 3c0cbc8b extu s9,s9,15,0 + 3bc04fb0: 2b85 addiw s7,s7,1 + 3bc04fb2: 4124893b subw s2,s1,s2 + 3bc04fb6: bbe9 j 3bc04d90 + 3bc04fb8: 0052d29b srliw t0,t0,0x5 + 3bc04fbc: 405383bb subw t2,t2,t0 + 3bc04fc0: 9f85 subw a5,a5,s1 + 3bc04fc2: 3c03b38b extu t2,t2,15,0 + 3bc04fc6: 2b85 addiw s7,s7,1 + 3bc04fc8: 409904bb subw s1,s2,s1 + 3bc04fcc: b515 j 3bc04df0 + 3bc04fce: 0052d29b srliw t0,t0,0x5 + 3bc04fd2: 4059093b subw s2,s2,t0 + 3bc04fd6: 407787bb subw a5,a5,t2 + 3bc04fda: 3c09390b extu s2,s2,15,0 + 3bc04fde: 2b85 addiw s7,s7,1 + 3bc04fe0: 407483bb subw t2,s1,t2 + 3bc04fe4: b5bd j 3bc04e52 + 3bc04fe6: 0052d29b srliw t0,t0,0x5 + 3bc04fea: 405484bb subw s1,s1,t0 + 3bc04fee: 412787bb subw a5,a5,s2 + 3bc04ff2: 3c04b48b extu s1,s1,15,0 + 3bc04ff6: 2b85 addiw s7,s7,1 + 3bc04ff8: 4123893b subw s2,t2,s2 + 3bc04ffc: bd65 j 3bc04eb4 + 3bc04ffe: 0052d29b srliw t0,t0,0x5 + 3bc05002: 405b0b3b subw s6,s6,t0 + 3bc05006: 407787bb subw a5,a5,t2 + 3bc0500a: 3c0b3b0b extu s6,s6,15,0 + 3bc0500e: 2c85 addiw s9,s9,1 + 3bc05010: 407903bb subw t2,s2,t2 + 3bc05014: b709 j 3bc04f16 + 3bc05016: 005ede9b srliw t4,t4,0x5 + 3bc0501a: 41db0ebb subw t4,s6,t4 + 3bc0501e: 9f91 subw a5,a5,a2 + 3bc05020: 01d91023 sh t4,0(s2) + 3bc05024: 2485 addiw s1,s1,1 + 3bc05026: 40c3863b subw a2,t2,a2 + 3bc0502a: bea1 j 3bc04b82 + 3bc0502c: 0053d39b srliw t2,t2,0x5 + 3bc05030: 407b03bb subw t2,s6,t2 + 3bc05034: 2175d38b srh t2,a1,s7,0 + 3bc05038: 7c08bb8b extu s7,a7,31,0 + 3bc0503c: 0bc1 addi s7,s7,16 + 3bc0503e: a375cc0b lrhu s8,a1,s7,1 + 3bc05042: 409604bb subw s1,a2,s1 + 3bc05046: 405787bb subw a5,a5,t0 + 3bc0504a: 001b9b13 slli s6,s7,0x1 + 3bc0504e: 000c039b sext.w t2,s8 + 3bc05052: 00d4fa63 bgeu s1,a3,3bc05066 + 3bc05056: 0087929b slliw t0,a5,0x8 + 3bc0505a: 9817478b lbuia a5,(a4),1,0 + 3bc0505e: 0084949b slliw s1,s1,0x8 + 3bc05062: 0057e7b3 or a5,a5,t0 + 3bc05066: 00b4d29b srliw t0,s1,0xb + 3bc0506a: 0272863b mulw a2,t0,t2 + 3bc0506e: 36c7ff63 bgeu a5,a2,3bc053ec + 3bc05072: 407403bb subw t2,s0,t2 + 3bc05076: 0053d39b srliw t2,t2,0x5 + 3bc0507a: 62c6 ld t0,80(sp) + 3bc0507c: 018383bb addw t2,t2,s8 + 3bc05080: 2375d38b srh t2,a1,s7,1 + 3bc05084: 28b1 addiw a7,a7,12 + 3bc05086: 8b7e mv s6,t6 + 3bc05088: 0002d383 lhu t2,0(t0) + 3bc0508c: 00038f9b sext.w t6,t2 + 3bc05090: 00d67a63 bgeu a2,a3,3bc050a4 + 3bc05094: 9817430b lbuia t1,(a4),1,0 + 3bc05098: 0087979b slliw a5,a5,0x8 + 3bc0509c: 0086161b slliw a2,a2,0x8 + 3bc050a0: 00f367b3 or a5,t1,a5 + 3bc050a4: 00b6531b srliw t1,a2,0xb + 3bc050a8: 03f304bb mulw s1,t1,t6 + 3bc050ac: 8326 mv t1,s1 + 3bc050ae: 5297f663 bgeu a5,s1,3bc055da + 3bc050b2: 41f40fbb subw t6,s0,t6 + 3bc050b6: 005fdf9b srliw t6,t6,0x5 + 3bc050ba: 7c0ebe8b extu t4,t4,31,0 + 3bc050be: 007f8fbb addw t6,t6,t2 + 3bc050c2: 01f29023 sh t6,0(t0) + 3bc050c6: 03d2928b addsl t0,t0,t4,1 + 3bc050ca: 0022de83 lhu t4,2(t0) + 3bc050ce: 000e861b sext.w a2,t4 + 3bc050d2: 00d4fa63 bgeu s1,a3,3bc050e6 + 3bc050d6: 9817430b lbuia t1,(a4),1,0 + 3bc050da: 0087979b slliw a5,a5,0x8 + 3bc050de: 0084949b slliw s1,s1,0x8 + 3bc050e2: 00f367b3 or a5,t1,a5 + 3bc050e6: 00b4d31b srliw t1,s1,0xb + 3bc050ea: 02c30fbb mulw t6,t1,a2 + 3bc050ee: 4bf7f263 bgeu a5,t6,3bc05592 + 3bc050f2: 40c4063b subw a2,s0,a2 + 3bc050f6: 0056561b srliw a2,a2,0x5 + 3bc050fa: 01d60ebb addw t4,a2,t4 + 3bc050fe: 3c0ebe8b extu t4,t4,15,0 + 3bc05102: 4309 li t1,2 + 3bc05104: 01d29123 sh t4,2(t0) + 3bc05108: b262c38b lurhu t2,t0,t1,1 + 3bc0510c: 7c03390b extu s2,t1,31,0 + 3bc05110: 0003861b sext.w a2,t2 + 3bc05114: 00dffa63 bgeu t6,a3,3bc05128 + 3bc05118: 98174e8b lbuia t4,(a4),1,0 + 3bc0511c: 0087979b slliw a5,a5,0x8 + 3bc05120: 008f9f9b slliw t6,t6,0x8 + 3bc05124: 00fee7b3 or a5,t4,a5 + 3bc05128: 00bfd49b srliw s1,t6,0xb + 3bc0512c: 02c48ebb mulw t4,s1,a2 + 3bc05130: 00131b9b slliw s7,t1,0x1 + 3bc05134: 0306 slli t1,t1,0x1 + 3bc05136: 47d7fa63 bgeu a5,t4,3bc055aa + 3bc0513a: 40c4063b subw a2,s0,a2 + 3bc0513e: 0056561b srliw a2,a2,0x5 + 3bc05142: 007603bb addw t2,a2,t2 + 3bc05146: 3c03b38b extu t2,t2,15,0 + 3bc0514a: 2322d38b srh t2,t0,s2,1 + 3bc0514e: b262c38b lurhu t2,t0,t1,1 + 3bc05152: 7c033b8b extu s7,t1,31,0 + 3bc05156: 00038f9b sext.w t6,t2 + 3bc0515a: 00def963 bgeu t4,a3,3bc0516c + 3bc0515e: 9817460b lbuia a2,(a4),1,0 + 3bc05162: 0087979b slliw a5,a5,0x8 + 3bc05166: 008e9e9b slliw t4,t4,0x8 + 3bc0516a: 8fd1 or a5,a5,a2 + 3bc0516c: 00bed91b srliw s2,t4,0xb + 3bc05170: 03f9063b mulw a2,s2,t6 + 3bc05174: 0013131b slliw t1,t1,0x1 + 3bc05178: 44c7f663 bgeu a5,a2,3bc055c4 + 3bc0517c: 41f40fbb subw t6,s0,t6 + 3bc05180: 005fdf9b srliw t6,t6,0x5 + 3bc05184: 007f83bb addw t2,t6,t2 + 3bc05188: 3c03b38b extu t2,t2,15,0 + 3bc0518c: 2372d38b srh t2,t0,s7,1 + 3bc05190: 3361 addiw t1,t1,-8 + 3bc05192: 44ad li s1,11 + 3bc05194: 1114f5e3 bgeu s1,a7,3bc05a9e + 3bc05198: 448d li s1,3 + 3bc0519a: 8f9a mv t6,t1 + 3bc0519c: 0064f363 bgeu s1,t1,3bc051a2 + 3bc051a0: 4f8d li t6,3 + 3bc051a2: 006f9f9b slliw t6,t6,0x6 + 3bc051a6: 040f8f9b addiw t6,t6,64 + 3bc051aa: 7c0fbf8b extu t6,t6,31,0 + 3bc051ae: 03f59f8b addsl t6,a1,t6,1 + 3bc051b2: 002fd383 lhu t2,2(t6) + 3bc051b6: 00038e9b sext.w t4,t2 + 3bc051ba: 00d67a63 bgeu a2,a3,3bc051ce + 3bc051be: 9817428b lbuia t0,(a4),1,0 + 3bc051c2: 0087979b slliw a5,a5,0x8 + 3bc051c6: 0086161b slliw a2,a2,0x8 + 3bc051ca: 00f2e7b3 or a5,t0,a5 + 3bc051ce: 00b6549b srliw s1,a2,0xb + 3bc051d2: 03d482bb mulw t0,s1,t4 + 3bc051d6: 5e57f763 bgeu a5,t0,3bc057c4 + 3bc051da: 41d40ebb subw t4,s0,t4 + 3bc051de: 005ede9b srliw t4,t4,0x5 + 3bc051e2: 007e83bb addw t2,t4,t2 + 3bc051e6: 3c03b38b extu t2,t2,15,0 + 3bc051ea: 4609 li a2,2 + 3bc051ec: 007f9123 sh t2,2(t6) + 3bc051f0: b2cfc48b lurhu s1,t6,a2,1 + 3bc051f4: 7c063b8b extu s7,a2,31,0 + 3bc051f8: 00048e9b sext.w t4,s1 + 3bc051fc: 00d2fa63 bgeu t0,a3,3bc05210 + 3bc05200: 9817438b lbuia t2,(a4),1,0 + 3bc05204: 0087979b slliw a5,a5,0x8 + 3bc05208: 0082929b slliw t0,t0,0x8 + 3bc0520c: 00f3e7b3 or a5,t2,a5 + 3bc05210: 00b2d91b srliw s2,t0,0xb + 3bc05214: 03d903bb mulw t2,s2,t4 + 3bc05218: 00161c1b slliw s8,a2,0x1 + 3bc0521c: 0606 slli a2,a2,0x1 + 3bc0521e: 5a77ff63 bgeu a5,t2,3bc057dc + 3bc05222: 41d40ebb subw t4,s0,t4 + 3bc05226: 005ede9b srliw t4,t4,0x5 + 3bc0522a: 009e84bb addw s1,t4,s1 + 3bc0522e: 3c04b48b extu s1,s1,15,0 + 3bc05232: 237fd48b srh s1,t6,s7,1 + 3bc05236: b2cfc48b lurhu s1,t6,a2,1 + 3bc0523a: 7c063c0b extu s8,a2,31,0 + 3bc0523e: 00048e9b sext.w t4,s1 + 3bc05242: 00d3fa63 bgeu t2,a3,3bc05256 + 3bc05246: 9817428b lbuia t0,(a4),1,0 + 3bc0524a: 0087979b slliw a5,a5,0x8 + 3bc0524e: 0083939b slliw t2,t2,0x8 + 3bc05252: 00f2e7b3 or a5,t0,a5 + 3bc05256: 00b3db9b srliw s7,t2,0xb + 3bc0525a: 03db82bb mulw t0,s7,t4 + 3bc0525e: 0016191b slliw s2,a2,0x1 + 3bc05262: 5857fa63 bgeu a5,t0,3bc057f6 + 3bc05266: 41d40ebb subw t4,s0,t4 + 3bc0526a: 005ede9b srliw t4,t4,0x5 + 3bc0526e: 009e84bb addw s1,t4,s1 + 3bc05272: 3c04b48b extu s1,s1,15,0 + 3bc05276: 238fd48b srh s1,t6,s8,1 + 3bc0527a: b32fc38b lurhu t2,t6,s2,1 + 3bc0527e: 7c093c0b extu s8,s2,31,0 + 3bc05282: 0003861b sext.w a2,t2 + 3bc05286: 00d2fa63 bgeu t0,a3,3bc0529a + 3bc0528a: 98174e8b lbuia t4,(a4),1,0 + 3bc0528e: 0087979b slliw a5,a5,0x8 + 3bc05292: 0082929b slliw t0,t0,0x8 + 3bc05296: 00fee7b3 or a5,t4,a5 + 3bc0529a: 00b2db9b srliw s7,t0,0xb + 3bc0529e: 02cb8ebb mulw t4,s7,a2 + 3bc052a2: 0019149b slliw s1,s2,0x1 + 3bc052a6: 57d7f463 bgeu a5,t4,3bc0580e + 3bc052aa: 40c4063b subw a2,s0,a2 + 3bc052ae: 0056561b srliw a2,a2,0x5 + 3bc052b2: 007603bb addw t2,a2,t2 + 3bc052b6: 3c03b38b extu t2,t2,15,0 + 3bc052ba: 238fd38b srh t2,t6,s8,1 + 3bc052be: b29fc28b lurhu t0,t6,s1,1 + 3bc052c2: 7c04bc0b extu s8,s1,31,0 + 3bc052c6: 0002861b sext.w a2,t0 + 3bc052ca: 00defa63 bgeu t4,a3,3bc052de + 3bc052ce: 9817438b lbuia t2,(a4),1,0 + 3bc052d2: 0087979b slliw a5,a5,0x8 + 3bc052d6: 008e9e9b slliw t4,t4,0x8 + 3bc052da: 00f3e7b3 or a5,t2,a5 + 3bc052de: 00bedb9b srliw s7,t4,0xb + 3bc052e2: 02cb83bb mulw t2,s7,a2 + 3bc052e6: 0014991b slliw s2,s1,0x1 + 3bc052ea: 5277fe63 bgeu a5,t2,3bc05826 + 3bc052ee: 40c4063b subw a2,s0,a2 + 3bc052f2: 0056561b srliw a2,a2,0x5 + 3bc052f6: 005602bb addw t0,a2,t0 + 3bc052fa: 3c02b28b extu t0,t0,15,0 + 3bc052fe: 238fd28b srh t0,t6,s8,1 + 3bc05302: b32fc48b lurhu s1,t6,s2,1 + 3bc05306: 7c093c0b extu s8,s2,31,0 + 3bc0530a: 0004829b sext.w t0,s1 + 3bc0530e: 00d3f963 bgeu t2,a3,3bc05320 + 3bc05312: 9817460b lbuia a2,(a4),1,0 + 3bc05316: 0087979b slliw a5,a5,0x8 + 3bc0531a: 0083939b slliw t2,t2,0x8 + 3bc0531e: 8fd1 or a5,a5,a2 + 3bc05320: 00b3db9b srliw s7,t2,0xb + 3bc05324: 025b863b mulw a2,s7,t0 + 3bc05328: 00191e9b slliw t4,s2,0x1 + 3bc0532c: 50c7f963 bgeu a5,a2,3bc0583e + 3bc05330: 405402bb subw t0,s0,t0 + 3bc05334: 0052d29b srliw t0,t0,0x5 + 3bc05338: 009284bb addw s1,t0,s1 + 3bc0533c: 3c04b48b extu s1,s1,15,0 + 3bc05340: fc0e8e9b addiw t4,t4,-64 + 3bc05344: 238fd48b srh s1,t6,s8,1 + 3bc05348: 000e839b sext.w t2,t4 + 3bc0534c: 448d li s1,3 + 3bc0534e: 0874f063 bgeu s1,t2,3bc053ce + 3bc05352: 001eff93 andi t6,t4,1 + 3bc05356: 44b5 li s1,13 + 3bc05358: 001ed29b srliw t0,t4,0x1 + 3bc0535c: 002fef93 ori t6,t6,2 + 3bc05360: 5074e963 bltu s1,t2,3bc05872 + 3bc05364: 32fd addiw t0,t0,-1 + 3bc05366: 005f9fbb sllw t6,t6,t0 + 3bc0536a: 2f85 addiw t6,t6,1 + 3bc0536c: 4c05 li s8,1 + 3bc0536e: 020f9493 slli s1,t6,0x20 + 3bc05372: 01f4db93 srli s7,s1,0x1f + 3bc05376: 74fd lui s1,0xfffff + 3bc05378: 30048493 addi s1,s1,768 # fffffffffffff300 <__BL2_END__+0xffffffffc43ebef0> + 3bc0537c: 9ba6 add s7,s7,s1 + 3bc0537e: a175c48b lrhu s1,a1,s7,0 + 3bc05382: 0004839b sext.w t2,s1 + 3bc05386: 00d67a63 bgeu a2,a3,3bc0539a + 3bc0538a: 98174e8b lbuia t4,(a4),1,0 + 3bc0538e: 0087979b slliw a5,a5,0x8 + 3bc05392: 0086161b slliw a2,a2,0x8 + 3bc05396: 00fee7b3 or a5,t4,a5 + 3bc0539a: 00b6591b srliw s2,a2,0xb + 3bc0539e: 02790d3b mulw s10,s2,t2 + 3bc053a2: 001c1e9b slliw t4,s8,0x1 + 3bc053a6: 4ba7f963 bgeu a5,s10,3bc05858 + 3bc053aa: 407403bb subw t2,s0,t2 + 3bc053ae: 0053d39b srliw t2,t2,0x5 + 3bc053b2: 009384bb addw s1,t2,s1 + 3bc053b6: 3c04b48b extu s1,s1,15,0 + 3bc053ba: 018f8fbb addw t6,t6,s8 + 3bc053be: 866a mv a2,s10 + 3bc053c0: 2175d48b srh s1,a1,s7,0 + 3bc053c4: 32fd addiw t0,t0,-1 + 3bc053c6: 48029763 bnez t0,3bc05854 + 3bc053ca: 41df83bb subw t2,t6,t4 + 3bc053ce: 44c9 li s1,18 + 3bc053d0: 00138f9b addiw t6,t2,1 + 3bc053d4: 6d14f363 bgeu s1,a7,3bc05a9a + 3bc053d8: 48a9 li a7,10 + 3bc053da: 6ee2 ld t4,24(sp) + 3bc053dc: 41de1e8b mveqz t4,t3,t4 + 3bc053e0: 73d3e063 bltu t2,t4,3bc05b00 + 3bc053e4: 03053423 sd a6,40(a0) + 3bc053e8: c24ff06f j 3bc0480c + 3bc053ec: 0053d39b srliw t2,t2,0x5 + 3bc053f0: 407c03bb subw t2,s8,t2 + 3bc053f4: 2375d38b srh t2,a1,s7,1 + 3bc053f8: 018b0c13 addi s8,s6,24 + 3bc053fc: a185cb8b lrhu s7,a1,s8,0 + 3bc05400: 40c48cbb subw s9,s1,a2 + 3bc05404: 9f91 subw a5,a5,a2 + 3bc05406: 000b839b sext.w t2,s7 + 3bc0540a: 00dcfa63 bgeu s9,a3,3bc0541e + 3bc0540e: 0087929b slliw t0,a5,0x8 + 3bc05412: 9817478b lbuia a5,(a4),1,0 + 3bc05416: 008c9c9b slliw s9,s9,0x8 + 3bc0541a: 0057e7b3 or a5,a5,t0 + 3bc0541e: 00bcd61b srliw a2,s9,0xb + 3bc05422: 027602bb mulw t0,a2,t2 + 3bc05426: 8616 mv a2,t0 + 3bc05428: 0a57f463 bgeu a5,t0,3bc054d0 + 3bc0542c: 407403bb subw t2,s0,t2 + 3bc05430: 0053d39b srliw t2,t2,0x5 + 3bc05434: 74fd lui s1,0xfffff + 3bc05436: 017383bb addw t2,t2,s7 + 3bc0543a: 40048493 addi s1,s1,1024 # fffffffffffff400 <__BL2_END__+0xffffffffc43ebff0> + 3bc0543e: 2185d38b srh t2,a1,s8,0 + 3bc05442: 9926 add s2,s2,s1 + 3bc05444: a125c48b lrhu s1,a1,s2,0 + 3bc05448: 0004839b sext.w t2,s1 + 3bc0544c: 00d2f963 bgeu t0,a3,3bc0545e + 3bc05450: 9817460b lbuia a2,(a4),1,0 + 3bc05454: 0087979b slliw a5,a5,0x8 + 3bc05458: 0082929b slliw t0,t0,0x8 + 3bc0545c: 8fd1 or a5,a5,a2 + 3bc0545e: 00b2db1b srliw s6,t0,0xb + 3bc05462: 027b063b mulw a2,s6,t2 + 3bc05466: 8b32 mv s6,a2 + 3bc05468: 02c7ff63 bgeu a5,a2,3bc054a6 + 3bc0546c: 407403bb subw t2,s0,t2 + 3bc05470: 0053d39b srliw t2,t2,0x5 + 3bc05474: 009383bb addw t2,t2,s1 + 3bc05478: 2125d38b srh t2,a1,s2,0 + 3bc0547c: 7c0fb38b extu t2,t6,31,0 + 3bc05480: 40780eb3 sub t4,a6,t2 + 3bc05484: 82d6 mv t0,s5 + 3bc05486: 00786363 bltu a6,t2,3bc0548c + 3bc0548a: 4281 li t0,0 + 3bc0548c: 9ed2 add t4,t4,s4 + 3bc0548e: 805ece8b lrbu t4,t4,t0,0 + 3bc05492: 2e05 addiw t3,t3,1 + 3bc05494: 010a5e8b srb t4,s4,a6,0 + 3bc05498: 4e99 li t4,6 + 3bc0549a: 0805 addi a6,a6,1 + 3bc0549c: 691ef963 bgeu t4,a7,3bc05b2e + 3bc054a0: 48ad li a7,11 + 3bc054a2: ee6ff06f j 3bc04b88 + 3bc054a6: 0053d39b srliw t2,t2,0x5 + 3bc054aa: 837a mv t1,t5 + 3bc054ac: 407483bb subw t2,s1,t2 + 3bc054b0: 8f7e mv t5,t6 + 3bc054b2: 40c2863b subw a2,t0,a2 + 3bc054b6: 416787bb subw a5,a5,s6 + 3bc054ba: 2125d38b srh t2,a1,s2,0 + 3bc054be: 8f9a mv t6,t1 + 3bc054c0: 4319 li t1,6 + 3bc054c2: 0d137663 bgeu t1,a7,3bc0558e + 3bc054c6: 48ad li a7,11 + 3bc054c8: 8b7a mv s6,t5 + 3bc054ca: 62a6 ld t0,72(sp) + 3bc054cc: 8f7e mv t5,t6 + 3bc054ce: be6d j 3bc05088 + 3bc054d0: 0053d39b srliw t2,t2,0x5 + 3bc054d4: 407b83bb subw t2,s7,t2 + 3bc054d8: 2185d38b srh t2,a1,s8,0 + 3bc054dc: 030b0493 addi s1,s6,48 + 3bc054e0: a095c38b lrhu t2,a1,s1,0 + 3bc054e4: 405c82bb subw t0,s9,t0 + 3bc054e8: 9f91 subw a5,a5,a2 + 3bc054ea: 0003831b sext.w t1,t2 + 3bc054ee: 00d2f963 bgeu t0,a3,3bc05500 + 3bc054f2: 0087961b slliw a2,a5,0x8 + 3bc054f6: 9817478b lbuia a5,(a4),1,0 + 3bc054fa: 0082929b slliw t0,t0,0x8 + 3bc054fe: 8fd1 or a5,a5,a2 + 3bc05500: 00b2d91b srliw s2,t0,0xb + 3bc05504: 0269063b mulw a2,s2,t1 + 3bc05508: 00c7fb63 bgeu a5,a2,3bc0551e + 3bc0550c: 4064033b subw t1,s0,t1 + 3bc05510: 0053531b srliw t1,t1,0x5 + 3bc05514: 0073033b addw t1,t1,t2 + 3bc05518: 2095d30b srh t1,a1,s1,0 + 3bc0551c: b755 j 3bc054c0 + 3bc0551e: 0053531b srliw t1,t1,0x5 + 3bc05522: 4063833b subw t1,t2,t1 + 3bc05526: 2095d30b srh t1,a1,s1,0 + 3bc0552a: 048b0b13 addi s6,s6,72 + 3bc0552e: a165c38b lrhu t2,a1,s6,0 + 3bc05532: 40c28bbb subw s7,t0,a2 + 3bc05536: 9f91 subw a5,a5,a2 + 3bc05538: 0003831b sext.w t1,t2 + 3bc0553c: 00dbfa63 bgeu s7,a3,3bc05550 + 3bc05540: 0087991b slliw s2,a5,0x8 + 3bc05544: 9817478b lbuia a5,(a4),1,0 + 3bc05548: 008b9b9b slliw s7,s7,0x8 + 3bc0554c: 0127e7b3 or a5,a5,s2 + 3bc05550: 00bbd29b srliw t0,s7,0xb + 3bc05554: 0262863b mulw a2,t0,t1 + 3bc05558: 00c7fe63 bgeu a5,a2,3bc05574 + 3bc0555c: 4064033b subw t1,s0,t1 + 3bc05560: 0053531b srliw t1,t1,0x5 + 3bc05564: 0073033b addw t1,t1,t2 + 3bc05568: 2165d30b srh t1,a1,s6,0 + 3bc0556c: 837a mv t1,t5 + 3bc0556e: 8f4e mv t5,s3 + 3bc05570: 899a mv s3,t1 + 3bc05572: b7b9 j 3bc054c0 + 3bc05574: 0053531b srliw t1,t1,0x5 + 3bc05578: 4063833b subw t1,t2,t1 + 3bc0557c: 9f91 subw a5,a5,a2 + 3bc0557e: 2165d30b srh t1,a1,s6,0 + 3bc05582: 40cb863b subw a2,s7,a2 + 3bc05586: 837a mv t1,t5 + 3bc05588: 7f02 ld t5,32(sp) + 3bc0558a: f04e sd s3,32(sp) + 3bc0558c: b7d5 j 3bc05570 + 3bc0558e: 48a1 li a7,8 + 3bc05590: bf25 j 3bc054c8 + 3bc05592: 0056561b srliw a2,a2,0x5 + 3bc05596: 40ce8ebb subw t4,t4,a2 + 3bc0559a: 41f787bb subw a5,a5,t6 + 3bc0559e: 3c0ebe8b extu t4,t4,15,0 + 3bc055a2: 41f48fbb subw t6,s1,t6 + 3bc055a6: 430d li t1,3 + 3bc055a8: beb1 j 3bc05104 + 3bc055aa: 0056561b srliw a2,a2,0x5 + 3bc055ae: 40c383bb subw t2,t2,a2 + 3bc055b2: 41d787bb subw a5,a5,t4 + 3bc055b6: 3c03b38b extu t2,t2,15,0 + 3bc055ba: 001b831b addiw t1,s7,1 + 3bc055be: 41df8ebb subw t4,t6,t4 + 3bc055c2: b661 j 3bc0514a + 3bc055c4: 005fdf9b srliw t6,t6,0x5 + 3bc055c8: 41f383bb subw t2,t2,t6 + 3bc055cc: 9f91 subw a5,a5,a2 + 3bc055ce: 3c03b38b extu t2,t2,15,0 + 3bc055d2: 2305 addiw t1,t1,1 + 3bc055d4: 40ce863b subw a2,t4,a2 + 3bc055d8: be55 j 3bc0518c + 3bc055da: 005fdf9b srliw t6,t6,0x5 + 3bc055de: 41f38fbb subw t6,t2,t6 + 3bc055e2: 0102d383 lhu t2,16(t0) + 3bc055e6: 01f29023 sh t6,0(t0) + 3bc055ea: 9e05 subw a2,a2,s1 + 3bc055ec: 406787bb subw a5,a5,t1 + 3bc055f0: 00038f9b sext.w t6,t2 + 3bc055f4: 00d67a63 bgeu a2,a3,3bc05608 + 3bc055f8: 0087931b slliw t1,a5,0x8 + 3bc055fc: 9817478b lbuia a5,(a4),1,0 + 3bc05600: 0086161b slliw a2,a2,0x8 + 3bc05604: 0067e7b3 or a5,a5,t1 + 3bc05608: 00b6531b srliw t1,a2,0xb + 3bc0560c: 03f304bb mulw s1,t1,t6 + 3bc05610: 1297f563 bgeu a5,s1,3bc0573a + 3bc05614: 41f40fbb subw t6,s0,t6 + 3bc05618: 005fdf9b srliw t6,t6,0x5 + 3bc0561c: 7c0ebe8b extu t4,t4,31,0 + 3bc05620: 007f8fbb addw t6,t6,t2 + 3bc05624: 0ea1 addi t4,t4,8 + 3bc05626: 01f29823 sh t6,16(t0) + 3bc0562a: 03d2928b addsl t0,t0,t4,1 + 3bc0562e: 0022df83 lhu t6,2(t0) + 3bc05632: 000f861b sext.w a2,t6 + 3bc05636: 00d4fa63 bgeu s1,a3,3bc0564a + 3bc0563a: 9817430b lbuia t1,(a4),1,0 + 3bc0563e: 0087979b slliw a5,a5,0x8 + 3bc05642: 0084949b slliw s1,s1,0x8 + 3bc05646: 00f367b3 or a5,t1,a5 + 3bc0564a: 00b4d31b srliw t1,s1,0xb + 3bc0564e: 02c30ebb mulw t4,t1,a2 + 3bc05652: 0bd7f063 bgeu a5,t4,3bc056f2 + 3bc05656: 40c4063b subw a2,s0,a2 + 3bc0565a: 0056561b srliw a2,a2,0x5 + 3bc0565e: 01f60fbb addw t6,a2,t6 + 3bc05662: 3c0fbf8b extu t6,t6,15,0 + 3bc05666: 4309 li t1,2 + 3bc05668: 01f29123 sh t6,2(t0) + 3bc0566c: b262c38b lurhu t2,t0,t1,1 + 3bc05670: 7c03390b extu s2,t1,31,0 + 3bc05674: 0003861b sext.w a2,t2 + 3bc05678: 00defa63 bgeu t4,a3,3bc0568c + 3bc0567c: 98174f8b lbuia t6,(a4),1,0 + 3bc05680: 0087979b slliw a5,a5,0x8 + 3bc05684: 008e9e9b slliw t4,t4,0x8 + 3bc05688: 00ffe7b3 or a5,t6,a5 + 3bc0568c: 00bed49b srliw s1,t4,0xb + 3bc05690: 02c48fbb mulw t6,s1,a2 + 3bc05694: 00131b9b slliw s7,t1,0x1 + 3bc05698: 0306 slli t1,t1,0x1 + 3bc0569a: 07f7f863 bgeu a5,t6,3bc0570a + 3bc0569e: 40c4063b subw a2,s0,a2 + 3bc056a2: 0056561b srliw a2,a2,0x5 + 3bc056a6: 007603bb addw t2,a2,t2 + 3bc056aa: 3c03b38b extu t2,t2,15,0 + 3bc056ae: 2322d38b srh t2,t0,s2,1 + 3bc056b2: b262c48b lurhu s1,t0,t1,1 + 3bc056b6: 7c03390b extu s2,t1,31,0 + 3bc056ba: 00048e9b sext.w t4,s1 + 3bc056be: 00dff963 bgeu t6,a3,3bc056d0 + 3bc056c2: 9817460b lbuia a2,(a4),1,0 + 3bc056c6: 0087979b slliw a5,a5,0x8 + 3bc056ca: 008f9f9b slliw t6,t6,0x8 + 3bc056ce: 8fd1 or a5,a5,a2 + 3bc056d0: 00bfd39b srliw t2,t6,0xb + 3bc056d4: 03d3863b mulw a2,t2,t4 + 3bc056d8: 0013131b slliw t1,t1,0x1 + 3bc056dc: 04c7f463 bgeu a5,a2,3bc05724 + 3bc056e0: 41d40ebb subw t4,s0,t4 + 3bc056e4: 005ede9b srliw t4,t4,0x5 + 3bc056e8: 009e8ebb addw t4,t4,s1 + 3bc056ec: 2322de8b srh t4,t0,s2,1 + 3bc056f0: b44d j 3bc05192 + 3bc056f2: 0056561b srliw a2,a2,0x5 + 3bc056f6: 40cf8fbb subw t6,t6,a2 + 3bc056fa: 41d787bb subw a5,a5,t4 + 3bc056fe: 3c0fbf8b extu t6,t6,15,0 + 3bc05702: 41d48ebb subw t4,s1,t4 + 3bc05706: 430d li t1,3 + 3bc05708: b785 j 3bc05668 + 3bc0570a: 0056561b srliw a2,a2,0x5 + 3bc0570e: 40c383bb subw t2,t2,a2 + 3bc05712: 41f787bb subw a5,a5,t6 + 3bc05716: 3c03b38b extu t2,t2,15,0 + 3bc0571a: 001b831b addiw t1,s7,1 + 3bc0571e: 41fe8fbb subw t6,t4,t6 + 3bc05722: b771 j 3bc056ae + 3bc05724: 005ede9b srliw t4,t4,0x5 + 3bc05728: 41d48ebb subw t4,s1,t4 + 3bc0572c: 9f91 subw a5,a5,a2 + 3bc0572e: 2322de8b srh t4,t0,s2,1 + 3bc05732: 2305 addiw t1,t1,1 + 3bc05734: 40cf863b subw a2,t6,a2 + 3bc05738: bca9 j 3bc05192 + 3bc0573a: 005fdf9b srliw t6,t6,0x5 + 3bc0573e: 41f38fbb subw t6,t2,t6 + 3bc05742: 9e05 subw a2,a2,s1 + 3bc05744: 9f85 subw a5,a5,s1 + 3bc05746: 01f29823 sh t6,16(t0) + 3bc0574a: 4305 li t1,1 + 3bc0574c: 0ff00b93 li s7,255 + 3bc05750: 02031493 slli s1,t1,0x20 + 3bc05754: 01f4de93 srli t4,s1,0x1f + 3bc05758: 200e8e93 addi t4,t4,512 + 3bc0575c: a1d2cf8b lrhu t6,t0,t4,0 + 3bc05760: 01d28c33 add s8,t0,t4 + 3bc05764: 000f8e9b sext.w t4,t6 + 3bc05768: 00d67a63 bgeu a2,a3,3bc0577c + 3bc0576c: 9817438b lbuia t2,(a4),1,0 + 3bc05770: 0087979b slliw a5,a5,0x8 + 3bc05774: 0086161b slliw a2,a2,0x8 + 3bc05778: 00f3e7b3 or a5,t2,a5 + 3bc0577c: 00b6539b srliw t2,a2,0xb + 3bc05780: 03d3893b mulw s2,t2,t4 + 3bc05784: 0013131b slliw t1,t1,0x1 + 3bc05788: 0327f263 bgeu a5,s2,3bc057ac + 3bc0578c: 41d40ebb subw t4,s0,t4 + 3bc05790: 005ede9b srliw t4,t4,0x5 + 3bc05794: 01fe8fbb addw t6,t4,t6 + 3bc05798: 3c0fbf8b extu t6,t6,15,0 + 3bc0579c: 864a mv a2,s2 + 3bc0579e: 01fc1023 sh t6,0(s8) + 3bc057a2: fa6bf7e3 bgeu s7,t1,3bc05750 + 3bc057a6: f103031b addiw t1,t1,-240 + 3bc057aa: b2e5 j 3bc05192 + 3bc057ac: 005ede9b srliw t4,t4,0x5 + 3bc057b0: 41df8fbb subw t6,t6,t4 + 3bc057b4: 4126063b subw a2,a2,s2 + 3bc057b8: 412787bb subw a5,a5,s2 + 3bc057bc: 3c0fbf8b extu t6,t6,15,0 + 3bc057c0: 2305 addiw t1,t1,1 + 3bc057c2: bff1 j 3bc0579e + 3bc057c4: 005ede9b srliw t4,t4,0x5 + 3bc057c8: 41d383bb subw t2,t2,t4 + 3bc057cc: 405787bb subw a5,a5,t0 + 3bc057d0: 3c03b38b extu t2,t2,15,0 + 3bc057d4: 405602bb subw t0,a2,t0 + 3bc057d8: 460d li a2,3 + 3bc057da: bc09 j 3bc051ec + 3bc057dc: 005ede9b srliw t4,t4,0x5 + 3bc057e0: 41d484bb subw s1,s1,t4 + 3bc057e4: 407787bb subw a5,a5,t2 + 3bc057e8: 3c04b48b extu s1,s1,15,0 + 3bc057ec: 001c061b addiw a2,s8,1 + 3bc057f0: 407283bb subw t2,t0,t2 + 3bc057f4: bc3d j 3bc05232 + 3bc057f6: 005ede9b srliw t4,t4,0x5 + 3bc057fa: 41d484bb subw s1,s1,t4 + 3bc057fe: 405787bb subw a5,a5,t0 + 3bc05802: 3c04b48b extu s1,s1,15,0 + 3bc05806: 2905 addiw s2,s2,1 + 3bc05808: 405382bb subw t0,t2,t0 + 3bc0580c: b4ad j 3bc05276 + 3bc0580e: 0056561b srliw a2,a2,0x5 + 3bc05812: 40c383bb subw t2,t2,a2 + 3bc05816: 41d787bb subw a5,a5,t4 + 3bc0581a: 3c03b38b extu t2,t2,15,0 + 3bc0581e: 2485 addiw s1,s1,1 + 3bc05820: 41d28ebb subw t4,t0,t4 + 3bc05824: bc59 j 3bc052ba + 3bc05826: 0056561b srliw a2,a2,0x5 + 3bc0582a: 40c282bb subw t0,t0,a2 + 3bc0582e: 407787bb subw a5,a5,t2 + 3bc05832: 3c02b28b extu t0,t0,15,0 + 3bc05836: 2905 addiw s2,s2,1 + 3bc05838: 407e83bb subw t2,t4,t2 + 3bc0583c: b4c9 j 3bc052fe + 3bc0583e: 0052d29b srliw t0,t0,0x5 + 3bc05842: 405484bb subw s1,s1,t0 + 3bc05846: 9f91 subw a5,a5,a2 + 3bc05848: 3c04b48b extu s1,s1,15,0 + 3bc0584c: 2e85 addiw t4,t4,1 + 3bc0584e: 40c3863b subw a2,t2,a2 + 3bc05852: b4fd j 3bc05340 + 3bc05854: 8c76 mv s8,t4 + 3bc05856: be21 j 3bc0536e + 3bc05858: 0053d39b srliw t2,t2,0x5 + 3bc0585c: 407484bb subw s1,s1,t2 + 3bc05860: 41a6063b subw a2,a2,s10 + 3bc05864: 41a787bb subw a5,a5,s10 + 3bc05868: 3c04b48b extu s1,s1,15,0 + 3bc0586c: 01fe8fbb addw t6,t4,t6 + 3bc05870: be81 j 3bc053c0 + 3bc05872: 32ed addiw t0,t0,-5 + 3bc05874: 00d67a63 bgeu a2,a3,3bc05888 + 3bc05878: 98174e8b lbuia t4,(a4),1,0 + 3bc0587c: 0087979b slliw a5,a5,0x8 + 3bc05880: 0086161b slliw a2,a2,0x8 + 3bc05884: 00fee7b3 or a5,t4,a5 + 3bc05888: 0016539b srliw t2,a2,0x1 + 3bc0588c: 407787bb subw a5,a5,t2 + 3bc05890: 41f7d49b sraiw s1,a5,0x1f + 3bc05894: 001f9f9b slliw t6,t6,0x1 + 3bc05898: 0003861b sext.w a2,t2 + 3bc0589c: 2f85 addiw t6,t6,1 + 3bc0589e: 0093f3b3 and t2,t2,s1 + 3bc058a2: 32fd addiw t0,t0,-1 + 3bc058a4: 01f48fbb addw t6,s1,t6 + 3bc058a8: 007787bb addw a5,a5,t2 + 3bc058ac: fc0294e3 bnez t0,3bc05874 + 3bc058b0: 0025d283 lhu t0,2(a1) + 3bc058b4: 004f9f9b slliw t6,t6,0x4 + 3bc058b8: 00028e9b sext.w t4,t0 + 3bc058bc: 00d67a63 bgeu a2,a3,3bc058d0 + 3bc058c0: 9817438b lbuia t2,(a4),1,0 + 3bc058c4: 0087979b slliw a5,a5,0x8 + 3bc058c8: 0086161b slliw a2,a2,0x8 + 3bc058cc: 00f3e7b3 or a5,t2,a5 + 3bc058d0: 00b6549b srliw s1,a2,0xb + 3bc058d4: 03d483bb mulw t2,s1,t4 + 3bc058d8: 1677f463 bgeu a5,t2,3bc05a40 + 3bc058dc: 41d40ebb subw t4,s0,t4 + 3bc058e0: 005ede9b srliw t4,t4,0x5 + 3bc058e4: 005e82bb addw t0,t4,t0 + 3bc058e8: 3c02b28b extu t0,t0,15,0 + 3bc058ec: 4e89 li t4,2 + 3bc058ee: 00559123 sh t0,2(a1) + 3bc058f2: b3d5c48b lurhu s1,a1,t4,1 + 3bc058f6: 7c0ebb8b extu s7,t4,31,0 + 3bc058fa: 0004861b sext.w a2,s1 + 3bc058fe: 00d3fa63 bgeu t2,a3,3bc05912 + 3bc05902: 9817428b lbuia t0,(a4),1,0 + 3bc05906: 0087979b slliw a5,a5,0x8 + 3bc0590a: 0083939b slliw t2,t2,0x8 + 3bc0590e: 00f2e7b3 or a5,t0,a5 + 3bc05912: 00b3d91b srliw s2,t2,0xb + 3bc05916: 02c902bb mulw t0,s2,a2 + 3bc0591a: 1257ff63 bgeu a5,t0,3bc05a58 + 3bc0591e: 40c4063b subw a2,s0,a2 + 3bc05922: 0056561b srliw a2,a2,0x5 + 3bc05926: 9cb1 addw s1,s1,a2 + 3bc05928: 3c04b48b extu s1,s1,15,0 + 3bc0592c: 0e89 addi t4,t4,2 + 3bc0592e: 2375d48b srh s1,a1,s7,1 + 3bc05932: b3d5cb8b lurhu s7,a1,t4,1 + 3bc05936: 7c0eb90b extu s2,t4,31,0 + 3bc0593a: 000b861b sext.w a2,s7 + 3bc0593e: 00d2fa63 bgeu t0,a3,3bc05952 + 3bc05942: 9817438b lbuia t2,(a4),1,0 + 3bc05946: 0087979b slliw a5,a5,0x8 + 3bc0594a: 0082929b slliw t0,t0,0x8 + 3bc0594e: 00f3e7b3 or a5,t2,a5 + 3bc05952: 00b2d49b srliw s1,t0,0xb + 3bc05956: 02c483bb mulw t2,s1,a2 + 3bc0595a: 1077fa63 bgeu a5,t2,3bc05a6e + 3bc0595e: 40c4063b subw a2,s0,a2 + 3bc05962: 0056561b srliw a2,a2,0x5 + 3bc05966: 01760bbb addw s7,a2,s7 + 3bc0596a: 3c0bbb8b extu s7,s7,15,0 + 3bc0596e: 2e91 addiw t4,t4,4 + 3bc05970: 2325db8b srh s7,a1,s2,1 + 3bc05974: b3d5c48b lurhu s1,a1,t4,1 + 3bc05978: 7c0ebb8b extu s7,t4,31,0 + 3bc0597c: 0004829b sext.w t0,s1 + 3bc05980: 00d3f963 bgeu t2,a3,3bc05992 + 3bc05984: 9817460b lbuia a2,(a4),1,0 + 3bc05988: 0087979b slliw a5,a5,0x8 + 3bc0598c: 0083939b slliw t2,t2,0x8 + 3bc05990: 8fd1 or a5,a5,a2 + 3bc05992: 00b3d91b srliw s2,t2,0xb + 3bc05996: 0259063b mulw a2,s2,t0 + 3bc0599a: 0ec7f663 bgeu a5,a2,3bc05a86 + 3bc0599e: 405402bb subw t0,s0,t0 + 3bc059a2: 0052d29b srliw t0,t0,0x5 + 3bc059a6: 009284bb addw s1,t0,s1 + 3bc059aa: 3c04b48b extu s1,s1,15,0 + 3bc059ae: 3ee1 addiw t4,t4,-8 + 3bc059b0: 01feefb3 or t6,t4,t6 + 3bc059b4: 2375d48b srh s1,a1,s7,1 + 3bc059b8: 000f839b sext.w t2,t6 + 3bc059bc: 54fd li s1,-1 + 3bc059be: a09398e3 bne t2,s1,3bc053ce + 3bc059c2: 38d1 addiw a7,a7,-12 + 3bc059c4: 8fda mv t6,s6 + 3bc059c6: 11200313 li t1,274 + 3bc059ca: 010006b7 lui a3,0x1000 + 3bc059ce: 00d67963 bgeu a2,a3,3bc059e0 + 3bc059d2: 9817468b lbuia a3,(a4),1,0 + 3bc059d6: 0087979b slliw a5,a5,0x8 + 3bc059da: 0086161b slliw a2,a2,0x8 + 3bc059de: 8fd5 or a5,a5,a3 + 3bc059e0: dd5c sw a5,60(a0) + 3bc059e2: 7782 ld a5,32(sp) + 3bc059e4: f918 sd a4,48(a0) + 3bc059e6: dd10 sw a2,56(a0) + 3bc059e8: c97c sw a5,84(a0) + 3bc059ea: 417c lw a5,68(a0) + 3bc059ec: 04652e23 sw t1,92(a0) + 3bc059f0: 03053423 sd a6,40(a0) + 3bc059f4: 05c52023 sw t3,64(a0) + 3bc059f8: 05f52423 sw t6,72(a0) + 3bc059fc: 05e52623 sw t5,76(a0) + 3bc05a00: 05352823 sw s3,80(a0) + 3bc05a04: 05152c23 sw a7,88(a0) + 3bc05a08: e789 bnez a5,3bc05a12 + 3bc05a0a: 415c lw a5,4(a0) + 3bc05a0c: 00fe6363 bltu t3,a5,3bc05a12 + 3bc05a10: c17c sw a5,68(a0) + 3bc05a12: 65c2 ld a1,16(sp) + 3bc05a14: e42a sd a0,8(sp) + 3bc05a16: d23fe0ef jal ra,3bc04738 + 3bc05a1a: 6522 ld a0,8(sp) + 3bc05a1c: 6742 ld a4,16(sp) + 3bc05a1e: 751c ld a5,40(a0) + 3bc05a20: 00e7fd63 bgeu a5,a4,3bc05a3a + 3bc05a24: 791c ld a5,48(a0) + 3bc05a26: 7742 ld a4,48(sp) + 3bc05a28: 00e7f963 bgeu a5,a4,3bc05a3a + 3bc05a2c: 4d78 lw a4,92(a0) + 3bc05a2e: 11100793 li a5,273 + 3bc05a32: 00e7e463 bltu a5,a4,3bc05a3a + 3bc05a36: d9bfe06f j 3bc047d0 + 3bc05a3a: 4501 li a0,0 + 3bc05a3c: dd3fe06f j 3bc0480e + 3bc05a40: 005ede9b srliw t4,t4,0x5 + 3bc05a44: 41d282bb subw t0,t0,t4 + 3bc05a48: 407787bb subw a5,a5,t2 + 3bc05a4c: 3c02b28b extu t0,t0,15,0 + 3bc05a50: 407603bb subw t2,a2,t2 + 3bc05a54: 4e8d li t4,3 + 3bc05a56: bd61 j 3bc058ee + 3bc05a58: 0056561b srliw a2,a2,0x5 + 3bc05a5c: 9c91 subw s1,s1,a2 + 3bc05a5e: 405787bb subw a5,a5,t0 + 3bc05a62: 3c04b48b extu s1,s1,15,0 + 3bc05a66: 0e91 addi t4,t4,4 + 3bc05a68: 405382bb subw t0,t2,t0 + 3bc05a6c: b5c9 j 3bc0592e + 3bc05a6e: 0056561b srliw a2,a2,0x5 + 3bc05a72: 40cb8bbb subw s7,s7,a2 + 3bc05a76: 407787bb subw a5,a5,t2 + 3bc05a7a: 3c0bbb8b extu s7,s7,15,0 + 3bc05a7e: 2ea1 addiw t4,t4,8 + 3bc05a80: 407283bb subw t2,t0,t2 + 3bc05a84: b5f5 j 3bc05970 + 3bc05a86: 0052d29b srliw t0,t0,0x5 + 3bc05a8a: 405484bb subw s1,s1,t0 + 3bc05a8e: 9f91 subw a5,a5,a2 + 3bc05a90: 3c04b48b extu s1,s1,15,0 + 3bc05a94: 40c3863b subw a2,t2,a2 + 3bc05a98: bf21 j 3bc059b0 + 3bc05a9a: 489d li a7,7 + 3bc05a9c: ba3d j 3bc053da + 3bc05a9e: 8fda mv t6,s6 + 3bc05aa0: 64a2 ld s1,8(sp) + 3bc05aa2: 00230e9b addiw t4,t1,2 + 3bc05aa6: 8376 mv t1,t4 + 3bc05aa8: 410483b3 sub t2,s1,a6 + 3bc05aac: 93048ce3 beq s1,a6,3bc053e4 + 3bc05ab0: 7c0eb28b extu t0,t4,31,0 + 3bc05ab4: 0053f463 bgeu t2,t0,3bc05abc + 3bc05ab8: 00038e9b sext.w t4,t2 + 3bc05abc: 7c0fb48b extu s1,t6,31,0 + 3bc05ac0: 409803b3 sub t2,a6,s1 + 3bc05ac4: 82d6 mv t0,s5 + 3bc05ac6: 00986363 bltu a6,s1,3bc05acc + 3bc05aca: 4281 li t0,0 + 3bc05acc: 9396 add t2,t2,t0 + 3bc05ace: 7c0eb48b extu s1,t4,31,0 + 3bc05ad2: 407a8933 sub s2,s5,t2 + 3bc05ad6: 01de0e3b addw t3,t3,t4 + 3bc05ada: 41d3033b subw t1,t1,t4 + 3bc05ade: 010a02b3 add t0,s4,a6 + 3bc05ae2: 02996363 bltu s2,s1,3bc05b08 + 3bc05ae6: 410383b3 sub t2,t2,a6 + 3bc05aea: 00928eb3 add t4,t0,s1 + 3bc05aee: 9826 add a6,a6,s1 + 3bc05af0: 8072c48b lrbu s1,t0,t2,0 + 3bc05af4: 1812d48b sbia s1,(t0),1,0 + 3bc05af8: fe5e9ce3 bne t4,t0,3bc05af0 + 3bc05afc: 88cff06f j 3bc04b88 + 3bc05b00: f04e sd s3,32(sp) + 3bc05b02: 89fa mv s3,t5 + 3bc05b04: 8f5a mv t5,s6 + 3bc05b06: bf69 j 3bc05aa0 + 3bc05b08: 84f6 mv s1,t4 + 3bc05b0a: 807a490b lrbu s2,s4,t2,0 + 3bc05b0e: 0385 addi t2,t2,1 + 3bc05b10: 01228023 sb s2,0(t0) + 3bc05b14: 007a9363 bne s5,t2,3bc05b1a + 3bc05b18: 4381 li t2,0 + 3bc05b1a: 34fd addiw s1,s1,-1 + 3bc05b1c: 0285 addi t0,t0,1 + 3bc05b1e: f4f5 bnez s1,3bc05b0a + 3bc05b20: 3efd addiw t4,t4,-1 + 3bc05b22: 0805 addi a6,a6,1 + 3bc05b24: 7c0ebe8b extu t4,t4,31,0 + 3bc05b28: 9876 add a6,a6,t4 + 3bc05b2a: 85eff06f j 3bc04b88 + 3bc05b2e: 48a5 li a7,9 + 3bc05b30: 858ff06f j 3bc04b88 + +000000003bc05b34 : + 3bc05b34: 00254703 lbu a4,2(a0) + 3bc05b38: 04052303 lw t1,64(a0) + 3bc05b3c: 4805 li a6,1 + 3bc05b3e: 00e8183b sllw a6,a6,a4 + 3bc05b42: 05852e83 lw t4,88(a0) + 3bc05b46: 387d addiw a6,a6,-1 + 3bc05b48: 01037833 and a6,t1,a6 + 3bc05b4c: 0048181b slliw a6,a6,0x4 + 3bc05b50: 010e8e3b addw t3,t4,a6 + 3bc05b54: 01053883 ld a7,16(a0) + 3bc05b58: 020e1713 slli a4,t3,0x20 + 3bc05b5c: 5d14 lw a3,56(a0) + 3bc05b5e: 01f75e13 srli t3,a4,0x1f + 3bc05b62: 9e46 add t3,t3,a7 + 3bc05b64: 01000737 lui a4,0x1000 + 3bc05b68: 5d5c lw a5,60(a0) + 3bc05b6a: e00e5f83 lhu t6,-512(t3) + 3bc05b6e: 8f2a mv t5,a0 + 3bc05b70: 962e add a2,a2,a1 + 3bc05b72: 00e6fc63 bgeu a3,a4,3bc05b8a + 3bc05b76: 4501 li a0,0 + 3bc05b78: 0cc5f463 bgeu a1,a2,3bc05c40 + 3bc05b7c: 9815c70b lbuia a4,(a1),1,0 + 3bc05b80: 0087979b slliw a5,a5,0x8 + 3bc05b84: 0086969b slliw a3,a3,0x8 + 3bc05b88: 8fd9 or a5,a5,a4 + 3bc05b8a: 00b6d71b srliw a4,a3,0xb + 3bc05b8e: 03f7073b mulw a4,a4,t6 + 3bc05b92: 14e7f063 bgeu a5,a4,3bc05cd2 + 3bc05b96: 040f3683 ld a3,64(t5) + 3bc05b9a: 28088893 addi a7,a7,640 # f0280 <__BSS_SIZE__+0xea670> + 3bc05b9e: caa1 beqz a3,3bc05bee + 3bc05ba0: 001f4503 lbu a0,1(t5) + 3bc05ba4: 4685 li a3,1 + 3bc05ba6: 000f4803 lbu a6,0(t5) + 3bc05baa: 00a696bb sllw a3,a3,a0 + 3bc05bae: 36fd addiw a3,a3,-1 + 3bc05bb0: 00d37333 and t1,t1,a3 + 3bc05bb4: 028f3683 ld a3,40(t5) + 3bc05bb8: 018f3e03 ld t3,24(t5) + 3bc05bbc: 0103133b sllw t1,t1,a6 + 3bc05bc0: fff68513 addi a0,a3,-1 # ffffff <__BSS_SIZE__+0xffa3ef> + 3bc05bc4: e681 bnez a3,3bc05bcc + 3bc05bc6: 020f3503 ld a0,32(t5) + 3bc05bca: 157d addi a0,a0,-1 + 3bc05bcc: 80ae468b lrbu a3,t3,a0,0 + 3bc05bd0: 4521 li a0,8 + 3bc05bd2: 4105053b subw a0,a0,a6 + 3bc05bd6: 40a6d6bb sraw a3,a3,a0 + 3bc05bda: 006686bb addw a3,a3,t1 + 3bc05bde: 30000513 li a0,768 + 3bc05be2: 02a686bb mulw a3,a3,a0 + 3bc05be6: 7c06b68b extu a3,a3,31,0 + 3bc05bea: 02d8988b addsl a7,a7,a3,1 + 3bc05bee: 4699 li a3,6 + 3bc05bf0: 05d6eb63 bltu a3,t4,3bc05c46 + 3bc05bf4: 4685 li a3,1 + 3bc05bf6: 01000eb7 lui t4,0x1000 + 3bc05bfa: 0ff00e13 li t3,255 + 3bc05bfe: b2d8c80b lurhu a6,a7,a3,1 + 3bc05c02: 01d77b63 bgeu a4,t4,3bc05c18 + 3bc05c06: 2ec5f363 bgeu a1,a2,3bc05eec + 3bc05c0a: 9815c50b lbuia a0,(a1),1,0 + 3bc05c0e: 0087979b slliw a5,a5,0x8 + 3bc05c12: 0087171b slliw a4,a4,0x8 + 3bc05c16: 8fc9 or a5,a5,a0 + 3bc05c18: 00b7551b srliw a0,a4,0xb + 3bc05c1c: 0305083b mulw a6,a0,a6 + 3bc05c20: 0016969b slliw a3,a3,0x1 + 3bc05c24: 0107ef63 bltu a5,a6,3bc05c42 + 3bc05c28: 4107073b subw a4,a4,a6 + 3bc05c2c: 410787bb subw a5,a5,a6 + 3bc05c30: 2685 addiw a3,a3,1 + 3bc05c32: fcde76e3 bgeu t3,a3,3bc05bfe + 3bc05c36: 4505 li a0,1 + 3bc05c38: 010007b7 lui a5,0x1000 + 3bc05c3c: 2af76663 bltu a4,a5,3bc05ee8 + 3bc05c40: 8082 ret + 3bc05c42: 8742 mv a4,a6 + 3bc05c44: b7fd j 3bc05c32 + 3bc05c46: 028f3303 ld t1,40(t5) + 3bc05c4a: 048f6803 lwu a6,72(t5) + 3bc05c4e: 018f3683 ld a3,24(t5) + 3bc05c52: 4501 li a0,0 + 3bc05c54: 41030e33 sub t3,t1,a6 + 3bc05c58: 01037463 bgeu t1,a6,3bc05c60 + 3bc05c5c: 020f3503 ld a0,32(t5) + 3bc05c60: 96f2 add a3,a3,t3 + 3bc05c62: 80a6ce0b lrbu t3,a3,a0,0 + 3bc05c66: 010002b7 lui t0,0x1000 + 3bc05c6a: 4685 li a3,1 + 3bc05c6c: 10000513 li a0,256 + 3bc05c70: 0ff00f93 li t6,255 + 3bc05c74: 001e181b slliw a6,t3,0x1 + 3bc05c78: 00d5033b addw t1,a0,a3 + 3bc05c7c: 00080e1b sext.w t3,a6 + 3bc05c80: 01057833 and a6,a0,a6 + 3bc05c84: 00080e9b sext.w t4,a6 + 3bc05c88: 0103083b addw a6,t1,a6 + 3bc05c8c: b308c30b lurhu t1,a7,a6,1 + 3bc05c90: 00577c63 bgeu a4,t0,3bc05ca8 + 3bc05c94: 24c5fc63 bgeu a1,a2,3bc05eec + 3bc05c98: 9815c80b lbuia a6,(a1),1,0 + 3bc05c9c: 0087979b slliw a5,a5,0x8 + 3bc05ca0: 0087171b slliw a4,a4,0x8 + 3bc05ca4: 00f867b3 or a5,a6,a5 + 3bc05ca8: 00b7581b srliw a6,a4,0xb + 3bc05cac: 02680f3b mulw t5,a6,t1 + 3bc05cb0: 0016969b slliw a3,a3,0x1 + 3bc05cb4: 01e7f863 bgeu a5,t5,3bc05cc4 + 3bc05cb8: 01d54533 xor a0,a0,t4 + 3bc05cbc: 877a mv a4,t5 + 3bc05cbe: fadffbe3 bgeu t6,a3,3bc05c74 + 3bc05cc2: bf95 j 3bc05c36 + 3bc05cc4: 41e7073b subw a4,a4,t5 + 3bc05cc8: 41e787bb subw a5,a5,t5 + 3bc05ccc: 2685 addiw a3,a3,1 + 3bc05cce: 8576 mv a0,t4 + 3bc05cd0: b7fd j 3bc05cbe + 3bc05cd2: 7c0eb50b extu a0,t4,31,0 + 3bc05cd6: 0541 addi a0,a0,16 + 3bc05cd8: a2a8cf0b lrhu t5,a7,a0,1 + 3bc05cdc: 00151e93 slli t4,a0,0x1 + 3bc05ce0: 40e6833b subw t1,a3,a4 + 3bc05ce4: 01000537 lui a0,0x1000 + 3bc05ce8: 9f99 subw a5,a5,a4 + 3bc05cea: 00a37c63 bgeu t1,a0,3bc05d02 + 3bc05cee: 4501 li a0,0 + 3bc05cf0: f4c5f8e3 bgeu a1,a2,3bc05c40 + 3bc05cf4: 9815c70b lbuia a4,(a1),1,0 + 3bc05cf8: 0087979b slliw a5,a5,0x8 + 3bc05cfc: 0083131b slliw t1,t1,0x8 + 3bc05d00: 8fd9 or a5,a5,a4 + 3bc05d02: 00b3571b srliw a4,t1,0xb + 3bc05d06: 03e706bb mulw a3,a4,t5 + 3bc05d0a: 16d7f563 bgeu a5,a3,3bc05e74 + 3bc05d0e: a0088313 addi t1,a7,-1536 + 3bc05d12: 4509 li a0,2 + 3bc05d14: 4f01 li t5,0 + 3bc05d16: 01000e37 lui t3,0x1000 + 3bc05d1a: 00035703 lhu a4,0(t1) + 3bc05d1e: 01c6fc63 bgeu a3,t3,3bc05d36 + 3bc05d22: 1cc5f563 bgeu a1,a2,3bc05eec + 3bc05d26: 9815ce0b lbuia t3,(a1),1,0 + 3bc05d2a: 0087979b slliw a5,a5,0x8 + 3bc05d2e: 0086969b slliw a3,a3,0x8 + 3bc05d32: 00fe67b3 or a5,t3,a5 + 3bc05d36: 00b6de1b srliw t3,a3,0xb + 3bc05d3a: 02ee073b mulw a4,t3,a4 + 3bc05d3e: 22e7fc63 bgeu a5,a4,3bc05f76 + 3bc05d42: 7c08380b extu a6,a6,31,0 + 3bc05d46: 0303130b addsl t1,t1,a6,1 + 3bc05d4a: 4801 li a6,0 + 3bc05d4c: 46a1 li a3,8 + 3bc05d4e: 4e05 li t3,1 + 3bc05d50: 010003b7 lui t2,0x1000 + 3bc05d54: b3c34f8b lurhu t6,t1,t3,1 + 3bc05d58: 00777c63 bgeu a4,t2,3bc05d70 + 3bc05d5c: 18c5f863 bgeu a1,a2,3bc05eec + 3bc05d60: 9815ce8b lbuia t4,(a1),1,0 + 3bc05d64: 0087979b slliw a5,a5,0x8 + 3bc05d68: 0087171b slliw a4,a4,0x8 + 3bc05d6c: 00fee7b3 or a5,t4,a5 + 3bc05d70: 00b75e9b srliw t4,a4,0xb + 3bc05d74: 03fe8fbb mulw t6,t4,t6 + 3bc05d78: 001e1e1b slliw t3,t3,0x1 + 3bc05d7c: 25f7e663 bltu a5,t6,3bc05fc8 + 3bc05d80: 41f7073b subw a4,a4,t6 + 3bc05d84: 41f787bb subw a5,a5,t6 + 3bc05d88: 2e05 addiw t3,t3,1 + 3bc05d8a: fcde65e3 bltu t3,a3,3bc05d54 + 3bc05d8e: 430d li t1,3 + 3bc05d90: ebe364e3 bltu t1,t5,3bc05c38 + 3bc05d94: 40d806bb subw a3,a6,a3 + 3bc05d98: 01c6883b addw a6,a3,t3 + 3bc05d9c: 86c2 mv a3,a6 + 3bc05d9e: 01037363 bgeu t1,a6,3bc05da4 + 3bc05da2: 468d li a3,3 + 3bc05da4: 0066981b slliw a6,a3,0x6 + 3bc05da8: 0408081b addiw a6,a6,64 + 3bc05dac: 7c08380b extu a6,a6,31,0 + 3bc05db0: 4685 li a3,1 + 3bc05db2: 01000fb7 lui t6,0x1000 + 3bc05db6: 03f00f13 li t5,63 + 3bc05dba: 7c06b30b extu t1,a3,31,0 + 3bc05dbe: 9342 add t1,t1,a6 + 3bc05dc0: a268ce0b lrhu t3,a7,t1,1 + 3bc05dc4: 01f77c63 bgeu a4,t6,3bc05ddc + 3bc05dc8: 12c5f263 bgeu a1,a2,3bc05eec + 3bc05dcc: 9815c30b lbuia t1,(a1),1,0 + 3bc05dd0: 0087979b slliw a5,a5,0x8 + 3bc05dd4: 0087171b slliw a4,a4,0x8 + 3bc05dd8: 00f367b3 or a5,t1,a5 + 3bc05ddc: 00b7531b srliw t1,a4,0xb + 3bc05de0: 03c30e3b mulw t3,t1,t3 + 3bc05de4: 0016969b slliw a3,a3,0x1 + 3bc05de8: 1fc7e263 bltu a5,t3,3bc05fcc + 3bc05dec: 41c7073b subw a4,a4,t3 + 3bc05df0: 41c787bb subw a5,a5,t3 + 3bc05df4: 2685 addiw a3,a3,1 + 3bc05df6: fcdf72e3 bgeu t5,a3,3bc05dba + 3bc05dfa: fc06869b addiw a3,a3,-64 + 3bc05dfe: 0006831b sext.w t1,a3 + 3bc05e02: 480d li a6,3 + 3bc05e04: e2687ae3 bgeu a6,t1,3bc05c38 + 3bc05e08: 4e35 li t3,13 + 3bc05e0a: 0016d81b srliw a6,a3,0x1 + 3bc05e0e: 1c6e6163 bltu t3,t1,3bc05fd0 + 3bc05e12: 8a85 andi a3,a3,1 + 3bc05e14: 387d addiw a6,a6,-1 + 3bc05e16: 0026e693 ori a3,a3,2 + 3bc05e1a: 010696bb sllw a3,a3,a6 + 3bc05e1e: 02069313 slli t1,a3,0x20 + 3bc05e22: 01f35693 srli a3,t1,0x1f + 3bc05e26: 737d lui t1,0xfffff + 3bc05e28: 30030313 addi t1,t1,768 # fffffffffffff300 <__BL2_END__+0xffffffffc43ebef0> + 3bc05e2c: 969a add a3,a3,t1 + 3bc05e2e: 98b6 add a7,a7,a3 + 3bc05e30: 4e05 li t3,1 + 3bc05e32: 4685 li a3,1 + 3bc05e34: 010002b7 lui t0,0x1000 + 3bc05e38: b2d8ce8b lurhu t4,a7,a3,1 + 3bc05e3c: 00577c63 bgeu a4,t0,3bc05e54 + 3bc05e40: 0ac5f663 bgeu a1,a2,3bc05eec + 3bc05e44: 9815c30b lbuia t1,(a1),1,0 + 3bc05e48: 0087979b slliw a5,a5,0x8 + 3bc05e4c: 0087171b slliw a4,a4,0x8 + 3bc05e50: 00f367b3 or a5,t1,a5 + 3bc05e54: 00b7531b srliw t1,a4,0xb + 3bc05e58: 03d30f3b mulw t5,t1,t4 + 3bc05e5c: 001e1f9b slliw t6,t3,0x1 + 3bc05e60: 1be7f763 bgeu a5,t5,3bc0600e + 3bc05e64: 01c686bb addw a3,a3,t3 + 3bc05e68: 877a mv a4,t5 + 3bc05e6a: 387d addiw a6,a6,-1 + 3bc05e6c: dc0806e3 beqz a6,3bc05c38 + 3bc05e70: 8e7e mv t3,t6 + 3bc05e72: b7d9 j 3bc05e38 + 3bc05e74: 40d3053b subw a0,t1,a3 + 3bc05e78: 9ec6 add t4,t4,a7 + 3bc05e7a: 01000f37 lui t5,0x1000 + 3bc05e7e: 40d7873b subw a4,a5,a3 + 3bc05e82: 832a mv t1,a0 + 3bc05e84: 018ed683 lhu a3,24(t4) # 1000018 <__BSS_SIZE__+0xffa408> + 3bc05e88: 01e57c63 bgeu a0,t5,3bc05ea0 + 3bc05e8c: 4501 li a0,0 + 3bc05e8e: dac5f9e3 bgeu a1,a2,3bc05c40 + 3bc05e92: 0087179b slliw a5,a4,0x8 + 3bc05e96: 9815c70b lbuia a4,(a1),1,0 + 3bc05e9a: 0083151b slliw a0,t1,0x8 + 3bc05e9e: 8f5d or a4,a4,a5 + 3bc05ea0: 00b5531b srliw t1,a0,0xb + 3bc05ea4: 02d306bb mulw a3,t1,a3 + 3bc05ea8: 8336 mv t1,a3 + 3bc05eaa: 04d77e63 bgeu a4,a3,3bc05f06 + 3bc05eae: 77fd lui a5,0xfffff + 3bc05eb0: 9e3e add t3,t3,a5 + 3bc05eb2: 010007b7 lui a5,0x1000 + 3bc05eb6: 400e5e03 lhu t3,1024(t3) # 1000400 <__BSS_SIZE__+0xffa7f0> + 3bc05eba: 00f6fc63 bgeu a3,a5,3bc05ed2 + 3bc05ebe: 4501 li a0,0 + 3bc05ec0: d8c5f0e3 bgeu a1,a2,3bc05c40 + 3bc05ec4: 0087179b slliw a5,a4,0x8 + 3bc05ec8: 9815c70b lbuia a4,(a1),1,0 + 3bc05ecc: 0086969b slliw a3,a3,0x8 + 3bc05ed0: 8f5d or a4,a4,a5 + 3bc05ed2: 00b6d79b srliw a5,a3,0xb + 3bc05ed6: 03c7833b mulw t1,a5,t3 + 3bc05eda: 00677b63 bgeu a4,t1,3bc05ef0 + 3bc05ede: 010007b7 lui a5,0x1000 + 3bc05ee2: 450d li a0,3 + 3bc05ee4: d4f37ee3 bgeu t1,a5,3bc05c40 + 3bc05ee8: d4c5ece3 bltu a1,a2,3bc05c40 + 3bc05eec: 4501 li a0,0 + 3bc05eee: bb89 j 3bc05c40 + 3bc05ef0: 406686bb subw a3,a3,t1 + 3bc05ef4: 406707bb subw a5,a4,t1 + 3bc05ef8: 737d lui t1,0xfffff + 3bc05efa: 60030313 addi t1,t1,1536 # fffffffffffff600 <__BL2_END__+0xffffffffc43ec1f0> + 3bc05efe: 9346 add t1,t1,a7 + 3bc05f00: 450d li a0,3 + 3bc05f02: 4f31 li t5,12 + 3bc05f04: bd09 j 3bc05d16 + 3bc05f06: 9d15 subw a0,a0,a3 + 3bc05f08: 01000e37 lui t3,0x1000 + 3bc05f0c: 406707bb subw a5,a4,t1 + 3bc05f10: 86aa mv a3,a0 + 3bc05f12: 030ed303 lhu t1,48(t4) + 3bc05f16: 01c57c63 bgeu a0,t3,3bc05f2e + 3bc05f1a: 4501 li a0,0 + 3bc05f1c: d2c5f2e3 bgeu a1,a2,3bc05c40 + 3bc05f20: 0087971b slliw a4,a5,0x8 + 3bc05f24: 9815c78b lbuia a5,(a1),1,0 + 3bc05f28: 0086951b slliw a0,a3,0x8 + 3bc05f2c: 8fd9 or a5,a5,a4 + 3bc05f2e: 00b5571b srliw a4,a0,0xb + 3bc05f32: 026706bb mulw a3,a4,t1 + 3bc05f36: 8736 mv a4,a3 + 3bc05f38: fcd7e0e3 bltu a5,a3,3bc05ef8 + 3bc05f3c: 9d15 subw a0,a0,a3 + 3bc05f3e: 01000e37 lui t3,0x1000 + 3bc05f42: 048ed303 lhu t1,72(t4) + 3bc05f46: 86aa mv a3,a0 + 3bc05f48: 9f99 subw a5,a5,a4 + 3bc05f4a: 01c57c63 bgeu a0,t3,3bc05f62 + 3bc05f4e: 4501 li a0,0 + 3bc05f50: cec5f8e3 bgeu a1,a2,3bc05c40 + 3bc05f54: 0087971b slliw a4,a5,0x8 + 3bc05f58: 9815c78b lbuia a5,(a1),1,0 + 3bc05f5c: 0086951b slliw a0,a3,0x8 + 3bc05f60: 8fd9 or a5,a5,a4 + 3bc05f62: 00b5571b srliw a4,a0,0xb + 3bc05f66: 026706bb mulw a3,a4,t1 + 3bc05f6a: f8d7e7e3 bltu a5,a3,3bc05ef8 + 3bc05f6e: 9f95 subw a5,a5,a3 + 3bc05f70: 40d506bb subw a3,a0,a3 + 3bc05f74: b751 j 3bc05ef8 + 3bc05f76: 40e68ebb subw t4,a3,a4 + 3bc05f7a: 01000fb7 lui t6,0x1000 + 3bc05f7e: 9f99 subw a5,a5,a4 + 3bc05f80: 01035703 lhu a4,16(t1) + 3bc05f84: 01fefc63 bgeu t4,t6,3bc05f9c + 3bc05f88: f6c5f2e3 bgeu a1,a2,3bc05eec + 3bc05f8c: 00879e1b slliw t3,a5,0x8 + 3bc05f90: 9815c78b lbuia a5,(a1),1,0 + 3bc05f94: 008e9e9b slliw t4,t4,0x8 + 3bc05f98: 01c7e7b3 or a5,a5,t3 + 3bc05f9c: 00bed69b srliw a3,t4,0xb + 3bc05fa0: 02e6873b mulw a4,a3,a4 + 3bc05fa4: 00e7f963 bgeu a5,a4,3bc05fb6 + 3bc05fa8: 7c08368b extu a3,a6,31,0 + 3bc05fac: 06a1 addi a3,a3,8 + 3bc05fae: 02d3130b addsl t1,t1,a3,1 + 3bc05fb2: 4821 li a6,8 + 3bc05fb4: bb61 j 3bc05d4c + 3bc05fb6: 9f99 subw a5,a5,a4 + 3bc05fb8: 20030313 addi t1,t1,512 + 3bc05fbc: 40ee873b subw a4,t4,a4 + 3bc05fc0: 4841 li a6,16 + 3bc05fc2: 10000693 li a3,256 + 3bc05fc6: b361 j 3bc05d4e + 3bc05fc8: 877e mv a4,t6 + 3bc05fca: b3c1 j 3bc05d8a + 3bc05fcc: 8772 mv a4,t3 + 3bc05fce: b525 j 3bc05df6 + 3bc05fd0: 386d addiw a6,a6,-5 + 3bc05fd2: 01000e37 lui t3,0x1000 + 3bc05fd6: 01c77b63 bgeu a4,t3,3bc05fec + 3bc05fda: f0c5f9e3 bgeu a1,a2,3bc05eec + 3bc05fde: 9815c68b lbuia a3,(a1),1,0 + 3bc05fe2: 0087979b slliw a5,a5,0x8 + 3bc05fe6: 0087171b slliw a4,a4,0x8 + 3bc05fea: 8fd5 or a5,a5,a3 + 3bc05fec: 0017531b srliw t1,a4,0x1 + 3bc05ff0: 406786bb subw a3,a5,t1 + 3bc05ff4: 01f6d69b srliw a3,a3,0x1f + 3bc05ff8: 36fd addiw a3,a3,-1 + 3bc05ffa: 0066f6b3 and a3,a3,t1 + 3bc05ffe: 387d addiw a6,a6,-1 + 3bc06000: 0003071b sext.w a4,t1 + 3bc06004: 9f95 subw a5,a5,a3 + 3bc06006: fc0818e3 bnez a6,3bc05fd6 + 3bc0600a: 4811 li a6,4 + 3bc0600c: b515 j 3bc05e30 + 3bc0600e: 41e7073b subw a4,a4,t5 + 3bc06012: 41e787bb subw a5,a5,t5 + 3bc06016: 00df86bb addw a3,t6,a3 + 3bc0601a: bd81 j 3bc05e6a + +000000003bc0601c : + 3bc0601c: 11400793 li a5,276 + 3bc06020: 02053423 sd zero,40(a0) # 1000028 <__BSS_SIZE__+0xffa418> + 3bc06024: 06052223 sw zero,100(a0) + 3bc06028: 04053023 sd zero,64(a0) + 3bc0602c: cd7c sw a5,92(a0) + 3bc0602e: 8082 ret + +000000003bc06030 : + 3bc06030: 7175 addi sp,sp,-144 + 3bc06032: e122 sd s0,128(sp) + 3bc06034: f8ca sd s2,112(sp) + 3bc06036: f4ce sd s3,104(sp) + 3bc06038: f0d2 sd s4,96(sp) + 3bc0603a: f86a sd s10,48(sp) + 3bc0603c: f46e sd s11,40(sp) + 3bc0603e: e506 sd ra,136(sp) + 3bc06040: fca6 sd s1,120(sp) + 3bc06042: ecd6 sd s5,88(sp) + 3bc06044: e8da sd s6,80(sp) + 3bc06046: e4de sd s7,72(sp) + 3bc06048: e0e2 sd s8,64(sp) + 3bc0604a: fc66 sd s9,56(sp) + 3bc0604c: 0006bd83 ld s11,0(a3) + 3bc06050: 0006b023 sd zero,0(a3) + 3bc06054: 0007a023 sw zero,0(a5) # 1000000 <__BSS_SIZE__+0xffa3f0> + 3bc06058: e43a sd a4,8(sp) + 3bc0605a: 4d78 lw a4,92(a0) + 3bc0605c: 89be mv s3,a5 + 3bc0605e: 11200793 li a5,274 + 3bc06062: 8932 mv s2,a2 + 3bc06064: 842a mv s0,a0 + 3bc06066: 8a2e mv s4,a1 + 3bc06068: 8d36 mv s10,a3 + 3bc0606a: 4611 li a2,4 + 3bc0606c: 04e7e263 bltu a5,a4,3bc060b0 + 3bc06070: 85d2 mv a1,s4 + 3bc06072: 8522 mv a0,s0 + 3bc06074: ec4fe0ef jal ra,3bc04738 + 3bc06078: 4b4d li s6,19 + 3bc0607a: 06840a93 addi s5,s0,104 # 1068 <__BSS_SIZE__-0x4ba8> + 3bc0607e: 4c7c lw a5,92(s0) + 3bc06080: 11200713 li a4,274 + 3bc06084: 0ce79663 bne a5,a4,3bc06150 + 3bc06088: 5c5c lw a5,60(s0) + 3bc0608a: eb9d bnez a5,3bc060c0 + 3bc0608c: 4785 li a5,1 + 3bc0608e: a8a1 j 3bc060e6 + 3bc06090: 0017859b addiw a1,a5,1 + 3bc06094: d06c sw a1,100(s0) + 3bc06096: 9819458b lbuia a1,(s2),1,0 + 3bc0609a: 7c07b78b extu a5,a5,31,0 + 3bc0609e: 97a2 add a5,a5,s0 + 3bc060a0: 06b78423 sb a1,104(a5) + 3bc060a4: 000d3783 ld a5,0(s10) + 3bc060a8: 1dfd addi s11,s11,-1 + 3bc060aa: 0785 addi a5,a5,1 + 3bc060ac: 00fd3023 sd a5,0(s10) + 3bc060b0: 507c lw a5,100(s0) + 3bc060b2: 020d8863 beqz s11,3bc060e2 + 3bc060b6: fcf67de3 bgeu a2,a5,3bc06090 + 3bc060ba: 06844603 lbu a2,104(s0) + 3bc060be: ca05 beqz a2,3bc060ee + 3bc060c0: 4485 li s1,1 + 3bc060c2: 60aa ld ra,136(sp) + 3bc060c4: 640a ld s0,128(sp) + 3bc060c6: 7946 ld s2,112(sp) + 3bc060c8: 79a6 ld s3,104(sp) + 3bc060ca: 7a06 ld s4,96(sp) + 3bc060cc: 6ae6 ld s5,88(sp) + 3bc060ce: 6b46 ld s6,80(sp) + 3bc060d0: 6ba6 ld s7,72(sp) + 3bc060d2: 6c06 ld s8,64(sp) + 3bc060d4: 7ce2 ld s9,56(sp) + 3bc060d6: 7d42 ld s10,48(sp) + 3bc060d8: 7da2 ld s11,40(sp) + 3bc060da: 8526 mv a0,s1 + 3bc060dc: 74e6 ld s1,120(sp) + 3bc060de: 6149 addi sp,sp,144 + 3bc060e0: 8082 ret + 3bc060e2: ffe1 bnez a5,3bc060ba + 3bc060e4: 478d li a5,3 + 3bc060e6: 00f9a023 sw a5,0(s3) + 3bc060ea: 4481 li s1,0 + 3bc060ec: bfd9 j 3bc060c2 + 3bc060ee: 4611 li a2,4 + 3bc060f0: fef67ae3 bgeu a2,a5,3bc060e4 + 3bc060f4: 06942783 lw a5,105(s0) + 3bc060f8: 06042223 sw zero,100(s0) + 3bc060fc: 9007978b revw a5,a5 + 3bc06100: dc5c sw a5,60(s0) + 3bc06102: 57fd li a5,-1 + 3bc06104: dc1c sw a5,56(s0) + 3bc06106: 11300793 li a5,275 + 3bc0610a: 02f70c63 beq a4,a5,3bc06142 + 3bc0610e: 00044783 lbu a5,0(s0) + 3bc06112: 00144703 lbu a4,1(s0) + 3bc06116: 6410 ld a2,8(s0) + 3bc06118: 40000593 li a1,1024 + 3bc0611c: 9f3d addw a4,a4,a5 + 3bc0611e: 30000793 li a5,768 + 3bc06122: 00e797bb sllw a5,a5,a4 + 3bc06126: 7c07879b addiw a5,a5,1984 + 3bc0612a: 7c07b78b extu a5,a5,31,0 + 3bc0612e: 4701 li a4,0 + 3bc06130: 00f76c63 bltu a4,a5,3bc06148 + 3bc06134: 4785 li a5,1 + 3bc06136: 1782 slli a5,a5,0x20 + 3bc06138: 0785 addi a5,a5,1 + 3bc0613a: e43c sd a5,72(s0) + 3bc0613c: e83c sd a5,80(s0) + 3bc0613e: 04042c23 sw zero,88(s0) + 3bc06142: 04042e23 sw zero,92(s0) + 3bc06146: b72d j 3bc06070 + 3bc06148: 22e6558b srh a1,a2,a4,1 + 3bc0614c: 0705 addi a4,a4,1 + 3bc0614e: b7cd j 3bc06130 + 3bc06150: 7418 ld a4,40(s0) + 3bc06152: 01476b63 bltu a4,s4,3bc06168 + 3bc06156: 12079f63 bnez a5,3bc06294 + 3bc0615a: 5c5c lw a5,60(s0) + 3bc0615c: 14079363 bnez a5,3bc062a2 + 3bc06160: 4791 li a5,4 + 3bc06162: b751 j 3bc060e6 + 3bc06164: 4789 li a5,2 + 3bc06166: b741 j 3bc060e6 + 3bc06168: 4c81 li s9,0 + 3bc0616a: 06442b83 lw s7,100(s0) + 3bc0616e: 0c0b9263 bnez s7,3bc06232 + 3bc06172: 01bb7463 bgeu s6,s11,3bc0617a + 3bc06176: 040c8263 beqz s9,3bc061ba + 3bc0617a: 866e mv a2,s11 + 3bc0617c: 85ca mv a1,s2 + 3bc0617e: 8522 mv a0,s0 + 3bc06180: 9b5ff0ef jal ra,3bc05b34 + 3bc06184: 0005049b sext.w s1,a0 + 3bc06188: e095 bnez s1,3bc061ac + 3bc0618a: 866e mv a2,s11 + 3bc0618c: 85ca mv a1,s2 + 3bc0618e: 06840513 addi a0,s0,104 + 3bc06192: 8dbfa0ef jal ra,3bc00a6c + 3bc06196: 000d3783 ld a5,0(s10) + 3bc0619a: 07b42223 sw s11,100(s0) + 3bc0619e: 9dbe add s11,s11,a5 + 3bc061a0: 01bd3023 sd s11,0(s10) + 3bc061a4: 478d li a5,3 + 3bc061a6: 00f9a023 sw a5,0(s3) + 3bc061aa: bf21 j 3bc060c2 + 3bc061ac: 000c8563 beqz s9,3bc061b6 + 3bc061b0: 4789 li a5,2 + 3bc061b2: 0ef49463 bne s1,a5,3bc0629a + 3bc061b6: 864a mv a2,s2 + 3bc061b8: a021 j 3bc061c0 + 3bc061ba: fecd8613 addi a2,s11,-20 + 3bc061be: 964a add a2,a2,s2 + 3bc061c0: 03243823 sd s2,48(s0) + 3bc061c4: 85d2 mv a1,s4 + 3bc061c6: 8522 mv a0,s0 + 3bc061c8: de2fe0ef jal ra,3bc047aa + 3bc061cc: ee051ae3 bnez a0,3bc060c0 + 3bc061d0: 7818 ld a4,48(s0) + 3bc061d2: 000d3783 ld a5,0(s10) + 3bc061d6: 41270933 sub s2,a4,s2 + 3bc061da: 97ca add a5,a5,s2 + 3bc061dc: 00fd3023 sd a5,0(s10) + 3bc061e0: 412d8db3 sub s11,s11,s2 + 3bc061e4: 893a mv s2,a4 + 3bc061e6: bd61 j 3bc0607e + 3bc061e8: 8109478b lrbu a5,s2,a6,0 + 3bc061ec: 0106578b srb a5,a2,a6,0 + 3bc061f0: 0805 addi a6,a6,1 + 3bc061f2: 0008079b sext.w a5,a6 + 3bc061f6: e83e sd a5,16(sp) + 3bc061f8: 01780c3b addw s8,a6,s7 + 3bc061fc: 018b6463 bltu s6,s8,3bc06204 + 3bc06200: ffb814e3 bne a6,s11,3bc061e8 + 3bc06204: 07842223 sw s8,100(s0) + 3bc06208: 018b7463 bgeu s6,s8,3bc06210 + 3bc0620c: 020c8f63 beqz s9,3bc0624a + 3bc06210: 7c0c360b extu a2,s8,31,0 + 3bc06214: 85d6 mv a1,s5 + 3bc06216: 8522 mv a0,s0 + 3bc06218: ec42 sd a6,24(sp) + 3bc0621a: 91bff0ef jal ra,3bc05b34 + 3bc0621e: 0005049b sext.w s1,a0 + 3bc06222: 6862 ld a6,24(sp) + 3bc06224: ec91 bnez s1,3bc06240 + 3bc06226: 000d3783 ld a5,0(s10) + 3bc0622a: 983e add a6,a6,a5 + 3bc0622c: 010d3023 sd a6,0(s10) + 3bc06230: bf95 j 3bc061a4 + 3bc06232: 7c0bb60b extu a2,s7,31,0 + 3bc06236: 06860613 addi a2,a2,104 + 3bc0623a: 4801 li a6,0 + 3bc0623c: 9622 add a2,a2,s0 + 3bc0623e: bf55 j 3bc061f2 + 3bc06240: 000c8563 beqz s9,3bc0624a + 3bc06244: 4789 li a5,2 + 3bc06246: 04f49a63 bne s1,a5,3bc0629a + 3bc0624a: 03543823 sd s5,48(s0) + 3bc0624e: 8656 mv a2,s5 + 3bc06250: 85d2 mv a1,s4 + 3bc06252: 8522 mv a0,s0 + 3bc06254: d56fe0ef jal ra,3bc047aa + 3bc06258: e60514e3 bnez a0,3bc060c0 + 3bc0625c: 781c ld a5,48(s0) + 3bc0625e: 415787bb subw a5,a5,s5 + 3bc06262: 02fc6763 bltu s8,a5,3bc06290 + 3bc06266: 66c2 ld a3,16(sp) + 3bc06268: 40fc073b subw a4,s8,a5 + 3bc0626c: 02e6e263 bltu a3,a4,3bc06290 + 3bc06270: 000d3703 ld a4,0(s10) + 3bc06274: 417787bb subw a5,a5,s7 + 3bc06278: 7c07b78b extu a5,a5,31,0 + 3bc0627c: 973e add a4,a4,a5 + 3bc0627e: 00ed3023 sd a4,0(s10) + 3bc06282: 40fd8db3 sub s11,s11,a5 + 3bc06286: 00f90733 add a4,s2,a5 + 3bc0628a: 06042223 sw zero,100(s0) + 3bc0628e: bf99 j 3bc061e4 + 3bc06290: 44ad li s1,11 + 3bc06292: bd05 j 3bc060c2 + 3bc06294: 67a2 ld a5,8(sp) + 3bc06296: ec0787e3 beqz a5,3bc06164 + 3bc0629a: 4789 li a5,2 + 3bc0629c: 00f9a023 sw a5,0(s3) + 3bc062a0: b505 j 3bc060c0 + 3bc062a2: 67a2 ld a5,8(sp) + 3bc062a4: ec0780e3 beqz a5,3bc06164 + 3bc062a8: 4c85 li s9,1 + 3bc062aa: b5c1 j 3bc0616a + +000000003bc062ac : + 3bc062ac: 1141 addi sp,sp,-16 + 3bc062ae: e022 sd s0,0(sp) + 3bc062b0: 842a mv s0,a0 + 3bc062b2: 659c ld a5,8(a1) + 3bc062b4: 852e mv a0,a1 + 3bc062b6: 640c ld a1,8(s0) + 3bc062b8: e406 sd ra,8(sp) + 3bc062ba: 9782 jalr a5 + 3bc062bc: 60a2 ld ra,8(sp) + 3bc062be: 00043423 sd zero,8(s0) + 3bc062c2: 6402 ld s0,0(sp) + 3bc062c4: 0141 addi sp,sp,16 + 3bc062c6: 8082 ret + +000000003bc062c8 : + 3bc062c8: 1101 addi sp,sp,-32 + 3bc062ca: 6518 ld a4,8(a0) + 3bc062cc: e426 sd s1,8(sp) + 3bc062ce: 9db1 addw a1,a1,a2 + 3bc062d0: 30000493 li s1,768 + 3bc062d4: e822 sd s0,16(sp) + 3bc062d6: 00b494bb sllw s1,s1,a1 + 3bc062da: ec06 sd ra,24(sp) + 3bc062dc: e04a sd s2,0(sp) + 3bc062de: 842a mv s0,a0 + 3bc062e0: 7c04849b addiw s1,s1,1984 + 3bc062e4: c719 beqz a4,3bc062f2 + 3bc062e6: 5138 lw a4,96(a0) + 3bc062e8: 0004879b sext.w a5,s1 + 3bc062ec: 4501 li a0,0 + 3bc062ee: 02f70a63 beq a4,a5,3bc06322 + 3bc062f2: 85b6 mv a1,a3 + 3bc062f4: 8522 mv a0,s0 + 3bc062f6: 8936 mv s2,a3 + 3bc062f8: fb5ff0ef jal ra,3bc062ac + 3bc062fc: 00093783 ld a5,0(s2) + 3bc06300: 02049713 slli a4,s1,0x20 + 3bc06304: 01f75593 srli a1,a4,0x1f + 3bc06308: 854a mv a0,s2 + 3bc0630a: 9782 jalr a5 + 3bc0630c: 87aa mv a5,a0 + 3bc0630e: e408 sd a0,8(s0) + 3bc06310: 4509 li a0,2 + 3bc06312: cb81 beqz a5,3bc06322 + 3bc06314: 6505 lui a0,0x1 + 3bc06316: d0050513 addi a0,a0,-768 # d00 <__BSS_SIZE__-0x4f10> + 3bc0631a: 97aa add a5,a5,a0 + 3bc0631c: e81c sd a5,16(s0) + 3bc0631e: d024 sw s1,96(s0) + 3bc06320: 4501 li a0,0 + 3bc06322: 60e2 ld ra,24(sp) + 3bc06324: 6442 ld s0,16(sp) + 3bc06326: 64a2 ld s1,8(sp) + 3bc06328: 6902 ld s2,0(sp) + 3bc0632a: 6105 addi sp,sp,32 + 3bc0632c: 8082 ret + +000000003bc0632e : + 3bc0632e: 4791 li a5,4 + 3bc06330: 00c7e463 bltu a5,a2,3bc06338 + 3bc06334: 4511 li a0,4 + 3bc06336: 8082 ret + 3bc06338: 0015a703 lw a4,1(a1) + 3bc0633c: 6685 lui a3,0x1 + 3bc0633e: 87ba mv a5,a4 + 3bc06340: 00d77363 bgeu a4,a3,3bc06346 + 3bc06344: 6785 lui a5,0x1 + 3bc06346: c15c sw a5,4(a0) + 3bc06348: 0005c783 lbu a5,0(a1) + 3bc0634c: 0e000713 li a4,224 + 3bc06350: fef762e3 bltu a4,a5,3bc06334 + 3bc06354: 4725 li a4,9 + 3bc06356: 02e7f6bb remuw a3,a5,a4 + 3bc0635a: 02e7d7bb divuw a5,a5,a4 + 3bc0635e: 4715 li a4,5 + 3bc06360: 00d50023 sb a3,0(a0) + 3bc06364: 02e7d6bb divuw a3,a5,a4 + 3bc06368: 02e7f7bb remuw a5,a5,a4 + 3bc0636c: 00d50123 sb a3,2(a0) + 3bc06370: 00f500a3 sb a5,1(a0) + 3bc06374: 4501 li a0,0 + 3bc06376: 8082 ret + +000000003bc06378 : + 3bc06378: 7179 addi sp,sp,-48 + 3bc0637a: f022 sd s0,32(sp) + 3bc0637c: 842a mv s0,a0 + 3bc0637e: 0828 addi a0,sp,24 + 3bc06380: f406 sd ra,40(sp) + 3bc06382: e436 sd a3,8(sp) + 3bc06384: fabff0ef jal ra,3bc0632e + 3bc06388: ed01 bnez a0,3bc063a0 + 3bc0638a: 66a2 ld a3,8(sp) + 3bc0638c: 01914603 lbu a2,25(sp) + 3bc06390: 01814583 lbu a1,24(sp) + 3bc06394: 8522 mv a0,s0 + 3bc06396: f33ff0ef jal ra,3bc062c8 + 3bc0639a: e119 bnez a0,3bc063a0 + 3bc0639c: 67e2 ld a5,24(sp) + 3bc0639e: e01c sd a5,0(s0) + 3bc063a0: 70a2 ld ra,40(sp) + 3bc063a2: 7402 ld s0,32(sp) + 3bc063a4: 6145 addi sp,sp,48 + 3bc063a6: 8082 ret + +000000003bc063a8 : + 3bc063a8: 7155 addi sp,sp,-208 + 3bc063aa: e1a2 sd s0,192(sp) + 3bc063ac: f152 sd s4,160(sp) + 3bc063ae: ed56 sd s5,152(sp) + 3bc063b0: e586 sd ra,200(sp) + 3bc063b2: fd26 sd s1,184(sp) + 3bc063b4: f94a sd s2,176(sp) + 3bc063b6: f54e sd s3,168(sp) + 3bc063b8: e95a sd s6,144(sp) + 3bc063ba: e55e sd s7,136(sp) + 3bc063bc: e162 sd s8,128(sp) + 3bc063be: 0005ba03 ld s4,0(a1) + 3bc063c2: 0006ba83 ld s5,0(a3) # 1000 <__BSS_SIZE__-0x4c10> + 3bc063c6: 0006b023 sd zero,0(a3) + 3bc063ca: 0005b023 sd zero,0(a1) + 3bc063ce: 833a mv t1,a4 + 3bc063d0: 0008a023 sw zero,0(a7) + 3bc063d4: 4711 li a4,4 + 3bc063d6: 4419 li s0,6 + 3bc063d8: 07577063 bgeu a4,s5,3bc06438 + 3bc063dc: 84b6 mv s1,a3 + 3bc063de: 66ce ld a3,208(sp) + 3bc063e0: 8bb2 mv s7,a2 + 3bc063e2: 8c2e mv s8,a1 + 3bc063e4: 89aa mv s3,a0 + 3bc063e6: 863e mv a2,a5 + 3bc063e8: 859a mv a1,t1 + 3bc063ea: 850a mv a0,sp + 3bc063ec: 8946 mv s2,a7 + 3bc063ee: 8b42 mv s6,a6 + 3bc063f0: ec02 sd zero,24(sp) + 3bc063f2: e402 sd zero,8(sp) + 3bc063f4: f85ff0ef jal ra,3bc06378 + 3bc063f8: 842a mv s0,a0 + 3bc063fa: ed1d bnez a0,3bc06438 + 3bc063fc: 850a mv a0,sp + 3bc063fe: ec4e sd s3,24(sp) + 3bc06400: f052 sd s4,32(sp) + 3bc06402: c1bff0ef jal ra,3bc0601c + 3bc06406: 87ca mv a5,s2 + 3bc06408: 0154b023 sd s5,0(s1) + 3bc0640c: 875a mv a4,s6 + 3bc0640e: 86a6 mv a3,s1 + 3bc06410: 865e mv a2,s7 + 3bc06412: 85d2 mv a1,s4 + 3bc06414: 850a mv a0,sp + 3bc06416: c1bff0ef jal ra,3bc06030 + 3bc0641a: 77a2 ld a5,40(sp) + 3bc0641c: 842a mv s0,a0 + 3bc0641e: 00fc3023 sd a5,0(s8) + 3bc06422: e519 bnez a0,3bc06430 + 3bc06424: 00092703 lw a4,0(s2) + 3bc06428: 478d li a5,3 + 3bc0642a: 00f71363 bne a4,a5,3bc06430 + 3bc0642e: 4419 li s0,6 + 3bc06430: 65ce ld a1,208(sp) + 3bc06432: 850a mv a0,sp + 3bc06434: e79ff0ef jal ra,3bc062ac + 3bc06438: 60ae ld ra,200(sp) + 3bc0643a: 8522 mv a0,s0 + 3bc0643c: 640e ld s0,192(sp) + 3bc0643e: 74ea ld s1,184(sp) + 3bc06440: 794a ld s2,176(sp) + 3bc06442: 79aa ld s3,168(sp) + 3bc06444: 7a0a ld s4,160(sp) + 3bc06446: 6aea ld s5,152(sp) + 3bc06448: 6b4a ld s6,144(sp) + 3bc0644a: 6baa ld s7,136(sp) + 3bc0644c: 6c0a ld s8,128(sp) + 3bc0644e: 6169 addi sp,sp,208 + 3bc06450: 8082 ret + +000000003bc06452 : + 3bc06452: 00154783 lbu a5,1(a0) + 3bc06456: 00254703 lbu a4,2(a0) + 3bc0645a: 00054683 lbu a3,0(a0) + 3bc0645e: 00354503 lbu a0,3(a0) + 3bc06462: 0107171b slliw a4,a4,0x10 + 3bc06466: 0087979b slliw a5,a5,0x8 + 3bc0646a: 9fb9 addw a5,a5,a4 + 3bc0646c: 9fb5 addw a5,a5,a3 + 3bc0646e: 0185151b slliw a0,a0,0x18 + 3bc06472: 9d3d addw a0,a0,a5 + 3bc06474: 8082 ret + +000000003bc06476 : + 3bc06476: 40e58733 sub a4,a1,a4 + 3bc0647a: 26050763 beqz a0,3bc066e8 + 3bc0647e: 00c50e33 add t3,a0,a2 + 3bc06482: 7119 addi sp,sp,-128 + 3bc06484: ff0e0793 addi a5,t3,-16 # fffff0 <__BSS_SIZE__+0xffa3e0> + 3bc06488: ecce sd s3,88(sp) + 3bc0648a: 00d58eb3 add t4,a1,a3 + 3bc0648e: fc86 sd ra,120(sp) + 3bc06490: f8a2 sd s0,112(sp) + 3bc06492: f4a6 sd s1,104(sp) + 3bc06494: f0ca sd s2,96(sp) + 3bc06496: e8d2 sd s4,80(sp) + 3bc06498: e4d6 sd s5,72(sp) + 3bc0649a: e0da sd s6,64(sp) + 3bc0649c: fc5e sd s7,56(sp) + 3bc0649e: f862 sd s8,48(sp) + 3bc064a0: f466 sd s9,40(sp) + 3bc064a2: f06a sd s10,32(sp) + 3bc064a4: ec6e sd s11,24(sp) + 3bc064a6: e43e sd a5,8(sp) + 3bc064a8: 832a mv t1,a0 + 3bc064aa: fe0e8993 addi s3,t4,-32 + 3bc064ae: ea95 bnez a3,3bc064e2 + 3bc064b0: 4785 li a5,1 + 3bc064b2: 557d li a0,-1 + 3bc064b4: 00f61863 bne a2,a5,3bc064c4 + 3bc064b8: 00034503 lbu a0,0(t1) + 3bc064bc: 00a03533 snez a0,a0 + 3bc064c0: 0005250b ext a0,a0,0,0 + 3bc064c4: 70e6 ld ra,120(sp) + 3bc064c6: 7446 ld s0,112(sp) + 3bc064c8: 74a6 ld s1,104(sp) + 3bc064ca: 7906 ld s2,96(sp) + 3bc064cc: 69e6 ld s3,88(sp) + 3bc064ce: 6a46 ld s4,80(sp) + 3bc064d0: 6aa6 ld s5,72(sp) + 3bc064d2: 6b06 ld s6,64(sp) + 3bc064d4: 7be2 ld s7,56(sp) + 3bc064d6: 7c42 ld s8,48(sp) + 3bc064d8: 7ca2 ld s9,40(sp) + 3bc064da: 7d02 ld s10,32(sp) + 3bc064dc: 6de2 ld s11,24(sp) + 3bc064de: 6109 addi sp,sp,128 + 3bc064e0: 8082 ret + 3bc064e2: 557d li a0,-1 + 3bc064e4: d265 beqz a2,3bc064c4 + 3bc064e6: 879a mv a5,t1 + 3bc064e8: 882e mv a6,a1 + 3bc064ea: 4fbd li t6,15 + 3bc064ec: 429d li t0,7 + 3bc064ee: ff4e8393 addi t2,t4,-12 + 3bc064f2: 4a41 li s4,16 + 3bc064f4: ff9e8f13 addi t5,t4,-7 + 3bc064f8: ffbe8a93 addi s5,t4,-5 + 3bc064fc: 00005b17 auipc s6,0x5 + 3bc06500: c9cb0b13 addi s6,s6,-868 # 3bc0b198 + 3bc06504: 00005b97 auipc s7,0x5 + 3bc06508: c74b8b93 addi s7,s7,-908 # 3bc0b178 + 3bc0650c: ffce0c13 addi s8,t3,-4 + 3bc06510: 0ff00493 li s1,255 + 3bc06514: ff8e0c93 addi s9,t3,-8 + 3bc06518: ff1e0913 addi s2,t3,-15 + 3bc0651c: 5d7d li s10,-1 + 3bc0651e: 9817c50b lbuia a0,(a5),1,0 + 3bc06522: 00455693 srli a3,a0,0x4 + 3bc06526: 0045561b srliw a2,a0,0x4 + 3bc0652a: 07f68063 beq a3,t6,3bc0658a + 3bc0652e: 0109b8b3 sltu a7,s3,a6 + 3bc06532: 0018c893 xori a7,a7,1 + 3bc06536: 0ff8f893 andi a7,a7,255 + 3bc0653a: 00c80433 add s0,a6,a2 + 3bc0653e: 00c786b3 add a3,a5,a2 + 3bc06542: 06088d63 beqz a7,3bc065bc + 3bc06546: 68a2 ld a7,8(sp) + 3bc06548: 0717fa63 bgeu a5,a7,3bc065bc + 3bc0654c: 6390 ld a2,0(a5) + 3bc0654e: 893d andi a0,a0,15 + 3bc06550: 00c83023 sd a2,0(a6) + 3bc06554: 679c ld a5,8(a5) + 3bc06556: 862a mv a2,a0 + 3bc06558: 00f83423 sd a5,8(a6) + 3bc0655c: 87b6 mv a5,a3 + 3bc0655e: b827c88b lhuia a7,(a5),2,0 + 3bc06562: 411406b3 sub a3,s0,a7 + 3bc06566: 0bf50763 beq a0,t6,3bc06614 + 3bc0656a: 0d12f563 bgeu t0,a7,3bc06634 + 3bc0656e: 0ce6e363 bltu a3,a4,3bc06634 + 3bc06572: 6290 ld a2,0(a3) + 3bc06574: 0511 addi a0,a0,4 + 3bc06576: 00a40833 add a6,s0,a0 + 3bc0657a: e010 sd a2,0(s0) + 3bc0657c: 6690 ld a2,8(a3) + 3bc0657e: e410 sd a2,8(s0) + 3bc06580: 0106d683 lhu a3,16(a3) + 3bc06584: 00d41823 sh a3,16(s0) + 3bc06588: bf59 j 3bc0651e + 3bc0658a: 0527fd63 bgeu a5,s2,3bc065e4 + 3bc0658e: 4601 li a2,0 + 3bc06590: 9817c88b lbuia a7,(a5),1,0 + 3bc06594: 00c8863b addw a2,a7,a2 + 3bc06598: 0527f963 bgeu a5,s2,3bc065ea + 3bc0659c: fe988ae3 beq a7,s1,3bc06590 + 3bc065a0: 4681 li a3,0 + 3bc065a2: 7c06360b extu a2,a2,31,0 + 3bc065a6: 063d addi a2,a2,15 + 3bc065a8: 13a68a63 beq a3,s10,3bc066dc + 3bc065ac: 010606b3 add a3,a2,a6 + 3bc065b0: 1306e663 bltu a3,a6,3bc066dc + 3bc065b4: 00f606b3 add a3,a2,a5 + 3bc065b8: 12f6e263 bltu a3,a5,3bc066dc + 3bc065bc: 00c80433 add s0,a6,a2 + 3bc065c0: 00c788b3 add a7,a5,a2 + 3bc065c4: 0083e463 bltu t2,s0,3bc065cc + 3bc065c8: 031cf363 bgeu s9,a7,3bc065ee + 3bc065cc: 111e1863 bne t3,a7,3bc066dc + 3bc065d0: 108ee663 bltu t4,s0,3bc066dc + 3bc065d4: 84ae mv s1,a1 + 3bc065d6: 8542 mv a0,a6 + 3bc065d8: 85be mv a1,a5 + 3bc065da: cf2fa0ef jal ra,3bc00acc + 3bc065de: 4094053b subw a0,s0,s1 + 3bc065e2: b5cd j 3bc064c4 + 3bc065e4: 56fd li a3,-1 + 3bc065e6: 4601 li a2,0 + 3bc065e8: bf6d j 3bc065a2 + 3bc065ea: 56f9 li a3,-2 + 3bc065ec: bf5d j 3bc065a2 + 3bc065ee: 4681 li a3,0 + 3bc065f0: 60d7c60b lrd a2,a5,a3,0 + 3bc065f4: 60d8560b srd a2,a6,a3,0 + 3bc065f8: 06a1 addi a3,a3,8 + 3bc065fa: 00d80633 add a2,a6,a3 + 3bc065fe: fe8669e3 bltu a2,s0,3bc065f0 + 3bc06602: 87c6 mv a5,a7 + 3bc06604: b827c88b lhuia a7,(a5),2,0 + 3bc06608: 00f57613 andi a2,a0,15 + 3bc0660c: 411406b3 sub a3,s0,a7 + 3bc06610: 03f61263 bne a2,t6,3bc06634 + 3bc06614: 4601 li a2,0 + 3bc06616: 9817c80b lbuia a6,(a5),1,0 + 3bc0661a: 00c8063b addw a2,a6,a2 + 3bc0661e: 0b87ff63 bgeu a5,s8,3bc066dc + 3bc06622: fe980ae3 beq a6,s1,3bc06616 + 3bc06626: 7c06360b extu a2,a2,31,0 + 3bc0662a: 063d addi a2,a2,15 + 3bc0662c: 00860533 add a0,a2,s0 + 3bc06630: 0a856663 bltu a0,s0,3bc066dc + 3bc06634: 0611 addi a2,a2,4 + 3bc06636: 0ae6e363 bltu a3,a4,3bc066dc + 3bc0663a: 00c40833 add a6,s0,a2 + 3bc0663e: 0712e463 bltu t0,a7,3bc066a6 + 3bc06642: 00042023 sw zero,0(s0) + 3bc06646: 0006c503 lbu a0,0(a3) + 3bc0664a: 00a40023 sb a0,0(s0) + 3bc0664e: 0016c503 lbu a0,1(a3) + 3bc06652: 00a400a3 sb a0,1(s0) + 3bc06656: 0026c503 lbu a0,2(a3) + 3bc0665a: 00a40123 sb a0,2(s0) + 3bc0665e: 0036c503 lbu a0,3(a3) + 3bc06662: 00a401a3 sb a0,3(s0) + 3bc06666: c51b450b lrwu a0,s6,a7,2 + 3bc0666a: 00a68db3 add s11,a3,a0 + 3bc0666e: 40a6c68b lrw a3,a3,a0,0 + 3bc06672: c054 sw a3,4(s0) + 3bc06674: 451bc68b lrw a3,s7,a7,2 + 3bc06678: 40dd86b3 sub a3,s11,a3 + 3bc0667c: 0503f363 bgeu t2,a6,3bc066c2 + 3bc06680: 050aee63 bltu s5,a6,3bc066dc + 3bc06684: 0421 addi s0,s0,8 + 3bc06686: 01e47e63 bgeu s0,t5,3bc066a2 + 3bc0668a: 8536 mv a0,a3 + 3bc0668c: 8622 mv a2,s0 + 3bc0668e: 7885488b ldia a7,(a0),8,0 + 3bc06692: 7886588b sdia a7,(a2),8,0 + 3bc06696: ffe66ce3 bltu a2,t5,3bc0668e + 3bc0669a: 408f0433 sub s0,t5,s0 + 3bc0669e: 96a2 add a3,a3,s0 + 3bc066a0: 847a mv s0,t5 + 3bc066a2: 4601 li a2,0 + 3bc066a4: a811 j 3bc066b8 + 3bc066a6: 7886c50b ldia a0,(a3),8,0 + 3bc066aa: e008 sd a0,0(s0) + 3bc066ac: bfc1 j 3bc0667c + 3bc066ae: 80c6c50b lrbu a0,a3,a2,0 + 3bc066b2: 00c4550b srb a0,s0,a2,0 + 3bc066b6: 0605 addi a2,a2,1 + 3bc066b8: 00c40533 add a0,s0,a2 + 3bc066bc: ff0569e3 bltu a0,a6,3bc066ae + 3bc066c0: bdb9 j 3bc0651e + 3bc066c2: 6288 ld a0,0(a3) + 3bc066c4: e408 sd a0,8(s0) + 3bc066c6: e4ca7ce3 bgeu s4,a2,3bc0651e + 3bc066ca: 0441 addi s0,s0,16 + 3bc066cc: 06a1 addi a3,a3,8 + 3bc066ce: 7886c60b ldia a2,(a3),8,0 + 3bc066d2: 7884560b sdia a2,(s0),8,0 + 3bc066d6: ff046ce3 bltu s0,a6,3bc066ce + 3bc066da: b591 j 3bc0651e + 3bc066dc: 40678533 sub a0,a5,t1 + 3bc066e0: fff54513 not a0,a0 + 3bc066e4: 2501 sext.w a0,a0 + 3bc066e6: bbf9 j 3bc064c4 + 3bc066e8: 557d li a0,-1 + 3bc066ea: 8082 ret + +000000003bc066ec : + 3bc066ec: 06853803 ld a6,104(a0) + 3bc066f0: 7179 addi sp,sp,-48 + 3bc066f2: f022 sd s0,32(sp) + 3bc066f4: f406 sd ra,40(sp) + 3bc066f6: ec26 sd s1,24(sp) + 3bc066f8: e84a sd s2,16(sp) + 3bc066fa: e44e sd s3,8(sp) + 3bc066fc: 842a mv s0,a0 + 3bc066fe: 00081363 bnez a6,3bc06704 + 3bc06702: f12c sd a1,96(a0) + 3bc06704: 7028 ld a0,96(s0) + 3bc06706: 010507b3 add a5,a0,a6 + 3bc0670a: 00f59663 bne a1,a5,3bc06716 + 3bc0670e: 00c807b3 add a5,a6,a2 + 3bc06712: f43c sd a5,104(s0) + 3bc06714: a811 j 3bc06728 + 3bc06716: 40d588b3 sub a7,a1,a3 + 3bc0671a: 98b2 add a7,a7,a2 + 3bc0671c: 67c1 lui a5,0x10 + 3bc0671e: 00f8ec63 bltu a7,a5,3bc06736 + 3bc06722: f034 sd a3,96(s0) + 3bc06724: 07143423 sd a7,104(s0) + 3bc06728: 70a2 ld ra,40(sp) + 3bc0672a: 7402 ld s0,32(sp) + 3bc0672c: 64e2 ld s1,24(sp) + 3bc0672e: 6942 ld s2,16(sp) + 3bc06730: 69a2 ld s3,8(sp) + 3bc06732: 6145 addi sp,sp,48 + 3bc06734: 8082 ret + 3bc06736: 6c34 ld a3,88(s0) + 3bc06738: 84b2 mv s1,a2 + 3bc0673a: 89ae mv s3,a1 + 3bc0673c: cb29 beqz a4,3bc0678e + 3bc0673e: 00d51563 bne a0,a3,3bc06748 + 3bc06742: 00c807b3 add a5,a6,a2 + 3bc06746: b7f1 j 3bc06712 + 3bc06748: 07043903 ld s2,112(s0) + 3bc0674c: 604c ld a1,128(s0) + 3bc0674e: 7c38 ld a4,120(s0) + 3bc06750: 40d90933 sub s2,s2,a3 + 3bc06754: 40b805b3 sub a1,a6,a1 + 3bc06758: 4601 li a2,0 + 3bc0675a: 00e7ea63 bltu a5,a4,3bc0676e + 3bc0675e: 40e78633 sub a2,a5,a4 + 3bc06762: 00c937b3 sltu a5,s2,a2 + 3bc06766: 0017c793 xori a5,a5,1 + 3bc0676a: 40f9160b mveqz a2,s2,a5 + 3bc0676e: 40c907b3 sub a5,s2,a2 + 3bc06772: 8d91 sub a1,a1,a2 + 3bc06774: 95aa add a1,a1,a0 + 3bc06776: 00f68533 add a0,a3,a5 + 3bc0677a: af2fa0ef jal ra,3bc00a6c + 3bc0677e: 6050 ld a2,128(s0) + 3bc06780: 6c3c ld a5,88(s0) + 3bc06782: 94b2 add s1,s1,a2 + 3bc06784: 9926 add s2,s2,s1 + 3bc06786: f03c sd a5,96(s0) + 3bc06788: 07243423 sd s2,104(s0) + 3bc0678c: bf71 j 3bc06728 + 3bc0678e: 02d51e63 bne a0,a3,3bc067ca + 3bc06792: 7c14 ld a3,56(s0) + 3bc06794: 00c80733 add a4,a6,a2 + 3bc06798: 00e6fe63 bgeu a3,a4,3bc067b4 + 3bc0679c: 40c78933 sub s2,a5,a2 + 3bc067a0: 40f607b3 sub a5,a2,a5 + 3bc067a4: 97c2 add a5,a5,a6 + 3bc067a6: 864a mv a2,s2 + 3bc067a8: 00f505b3 add a1,a0,a5 + 3bc067ac: ac0fa0ef jal ra,3bc00a6c + 3bc067b0: 07243423 sd s2,104(s0) + 3bc067b4: 6c28 ld a0,88(s0) + 3bc067b6: 743c ld a5,104(s0) + 3bc067b8: 8626 mv a2,s1 + 3bc067ba: 85ce mv a1,s3 + 3bc067bc: 953e add a0,a0,a5 + 3bc067be: aaefa0ef jal ra,3bc00a6c + 3bc067c2: 7430 ld a2,104(s0) + 3bc067c4: 94b2 add s1,s1,a2 + 3bc067c6: f424 sd s1,104(s0) + 3bc067c8: b785 j 3bc06728 + 3bc067ca: 8f91 sub a5,a5,a2 + 3bc067cc: 0107b733 sltu a4,a5,a6 + 3bc067d0: 00174713 xori a4,a4,1 + 3bc067d4: 42e8178b mvnez a5,a6,a4 + 3bc067d8: 40f805b3 sub a1,a6,a5 + 3bc067dc: 863e mv a2,a5 + 3bc067de: 95aa add a1,a1,a0 + 3bc067e0: 8536 mv a0,a3 + 3bc067e2: 893e mv s2,a5 + 3bc067e4: a88fa0ef jal ra,3bc00a6c + 3bc067e8: 6c28 ld a0,88(s0) + 3bc067ea: 8626 mv a2,s1 + 3bc067ec: 85ce mv a1,s3 + 3bc067ee: 954a add a0,a0,s2 + 3bc067f0: a7cfa0ef jal ra,3bc00a6c + 3bc067f4: 6c3c ld a5,88(s0) + 3bc067f6: 94ca add s1,s1,s2 + 3bc067f8: f03c sd a5,96(s0) + 3bc067fa: b7f1 j 3bc067c6 + +000000003bc067fc : + 3bc067fc: 26050463 beqz a0,3bc06a64 + 3bc06800: 7159 addi sp,sp,-112 + 3bc06802: eca6 sd s1,88(sp) + 3bc06804: 00c50833 add a6,a0,a2 + 3bc06808: 00d588b3 add a7,a1,a3 + 3bc0680c: f486 sd ra,104(sp) + 3bc0680e: f0a2 sd s0,96(sp) + 3bc06810: e8ca sd s2,80(sp) + 3bc06812: e4ce sd s3,72(sp) + 3bc06814: e0d2 sd s4,64(sp) + 3bc06816: fc56 sd s5,56(sp) + 3bc06818: f85a sd s6,48(sp) + 3bc0681a: f45e sd s7,40(sp) + 3bc0681c: f062 sd s8,32(sp) + 3bc0681e: ec66 sd s9,24(sp) + 3bc06820: e86a sd s10,16(sp) + 3bc06822: e46e sd s11,8(sp) + 3bc06824: ff080393 addi t2,a6,-16 + 3bc06828: fe088493 addi s1,a7,-32 + 3bc0682c: ea9d bnez a3,3bc06862 + 3bc0682e: 4705 li a4,1 + 3bc06830: 57fd li a5,-1 + 3bc06832: 00e61863 bne a2,a4,3bc06842 + 3bc06836: 00054783 lbu a5,0(a0) + 3bc0683a: 00f037b3 snez a5,a5 + 3bc0683e: 0007a78b ext a5,a5,0,0 + 3bc06842: 70a6 ld ra,104(sp) + 3bc06844: 7406 ld s0,96(sp) + 3bc06846: 64e6 ld s1,88(sp) + 3bc06848: 6946 ld s2,80(sp) + 3bc0684a: 69a6 ld s3,72(sp) + 3bc0684c: 6a06 ld s4,64(sp) + 3bc0684e: 7ae2 ld s5,56(sp) + 3bc06850: 7b42 ld s6,48(sp) + 3bc06852: 7ba2 ld s7,40(sp) + 3bc06854: 7c02 ld s8,32(sp) + 3bc06856: 6ce2 ld s9,24(sp) + 3bc06858: 6d42 ld s10,16(sp) + 3bc0685a: 6da2 ld s11,8(sp) + 3bc0685c: 853e mv a0,a5 + 3bc0685e: 6165 addi sp,sp,112 + 3bc06860: 8082 ret + 3bc06862: 57fd li a5,-1 + 3bc06864: de79 beqz a2,3bc06842 + 3bc06866: 87aa mv a5,a0 + 3bc06868: 872e mv a4,a1 + 3bc0686a: 4e3d li t3,15 + 3bc0686c: 4e9d li t4,7 + 3bc0686e: ff488f13 addi t5,a7,-12 + 3bc06872: 4941 li s2,16 + 3bc06874: ff988313 addi t1,a7,-7 + 3bc06878: ffb88993 addi s3,a7,-5 + 3bc0687c: 00005a17 auipc s4,0x5 + 3bc06880: 91ca0a13 addi s4,s4,-1764 # 3bc0b198 + 3bc06884: 00005a97 auipc s5,0x5 + 3bc06888: 8f4a8a93 addi s5,s5,-1804 # 3bc0b178 + 3bc0688c: ffc80b13 addi s6,a6,-4 + 3bc06890: 0ff00f93 li t6,255 + 3bc06894: ff880b93 addi s7,a6,-8 + 3bc06898: ff180293 addi t0,a6,-15 + 3bc0689c: 5c7d li s8,-1 + 3bc0689e: 9817c68b lbuia a3,(a5),1,0 + 3bc068a2: 0046d413 srli s0,a3,0x4 + 3bc068a6: 0046d61b srliw a2,a3,0x4 + 3bc068aa: 05c40d63 beq s0,t3,3bc06904 + 3bc068ae: 00e4bd33 sltu s10,s1,a4 + 3bc068b2: 001d4d13 xori s10,s10,1 + 3bc068b6: 0ffd7d13 andi s10,s10,255 + 3bc068ba: 00c70433 add s0,a4,a2 + 3bc068be: 00c78cb3 add s9,a5,a2 + 3bc068c2: 060d0a63 beqz s10,3bc06936 + 3bc068c6: 0677f863 bgeu a5,t2,3bc06936 + 3bc068ca: 6390 ld a2,0(a5) + 3bc068cc: e310 sd a2,0(a4) + 3bc068ce: 679c ld a5,8(a5) + 3bc068d0: e71c sd a5,8(a4) + 3bc068d2: 87e6 mv a5,s9 + 3bc068d4: b827cc8b lhuia s9,(a5),2,0 + 3bc068d8: 00f6f713 andi a4,a3,15 + 3bc068dc: 86ba mv a3,a4 + 3bc068de: 41940633 sub a2,s0,s9 + 3bc068e2: 0bc70563 beq a4,t3,3bc0698c + 3bc068e6: 0d9ef363 bgeu t4,s9,3bc069ac + 3bc068ea: 0cb66163 bltu a2,a1,3bc069ac + 3bc068ee: 6214 ld a3,0(a2) + 3bc068f0: 0711 addi a4,a4,4 + 3bc068f2: 9722 add a4,a4,s0 + 3bc068f4: e014 sd a3,0(s0) + 3bc068f6: 6614 ld a3,8(a2) + 3bc068f8: e414 sd a3,8(s0) + 3bc068fa: 01065683 lhu a3,16(a2) + 3bc068fe: 00d41823 sh a3,16(s0) + 3bc06902: bf71 j 3bc0689e + 3bc06904: 0457fd63 bgeu a5,t0,3bc0695e + 3bc06908: 4601 li a2,0 + 3bc0690a: 9817cc8b lbuia s9,(a5),1,0 + 3bc0690e: 00cc863b addw a2,s9,a2 + 3bc06912: 0457f963 bgeu a5,t0,3bc06964 + 3bc06916: fffc8ae3 beq s9,t6,3bc0690a + 3bc0691a: 4401 li s0,0 + 3bc0691c: 7c06360b extu a2,a2,31,0 + 3bc06920: 063d addi a2,a2,15 + 3bc06922: 13840c63 beq s0,s8,3bc06a5a + 3bc06926: 00e60433 add s0,a2,a4 + 3bc0692a: 12e46863 bltu s0,a4,3bc06a5a + 3bc0692e: 00f60433 add s0,a2,a5 + 3bc06932: 12f46463 bltu s0,a5,3bc06a5a + 3bc06936: 00c70433 add s0,a4,a2 + 3bc0693a: 00c78cb3 add s9,a5,a2 + 3bc0693e: 008f6463 bltu t5,s0,3bc06946 + 3bc06942: 039bf363 bgeu s7,s9,3bc06968 + 3bc06946: 11981a63 bne a6,s9,3bc06a5a + 3bc0694a: 1088e863 bltu a7,s0,3bc06a5a + 3bc0694e: 84ae mv s1,a1 + 3bc06950: 853a mv a0,a4 + 3bc06952: 85be mv a1,a5 + 3bc06954: 978fa0ef jal ra,3bc00acc + 3bc06958: 409407bb subw a5,s0,s1 + 3bc0695c: b5dd j 3bc06842 + 3bc0695e: 547d li s0,-1 + 3bc06960: 4601 li a2,0 + 3bc06962: bf6d j 3bc0691c + 3bc06964: 5479 li s0,-2 + 3bc06966: bf5d j 3bc0691c + 3bc06968: 4601 li a2,0 + 3bc0696a: 60c7cd0b lrd s10,a5,a2,0 + 3bc0696e: 60c75d0b srd s10,a4,a2,0 + 3bc06972: 0621 addi a2,a2,8 + 3bc06974: 00c70d33 add s10,a4,a2 + 3bc06978: fe8d69e3 bltu s10,s0,3bc0696a + 3bc0697c: 87e6 mv a5,s9 + 3bc0697e: b827cc8b lhuia s9,(a5),2,0 + 3bc06982: 8abd andi a3,a3,15 + 3bc06984: 41940633 sub a2,s0,s9 + 3bc06988: 03c69263 bne a3,t3,3bc069ac + 3bc0698c: 4681 li a3,0 + 3bc0698e: 9817cd0b lbuia s10,(a5),1,0 + 3bc06992: 00dd06bb addw a3,s10,a3 + 3bc06996: 0d67f263 bgeu a5,s6,3bc06a5a + 3bc0699a: fffd0ae3 beq s10,t6,3bc0698e + 3bc0699e: 7c06b68b extu a3,a3,31,0 + 3bc069a2: 06bd addi a3,a3,15 + 3bc069a4: 00868733 add a4,a3,s0 + 3bc069a8: 0a876963 bltu a4,s0,3bc06a5a + 3bc069ac: 0691 addi a3,a3,4 + 3bc069ae: 0ab66663 bltu a2,a1,3bc06a5a + 3bc069b2: 00d40733 add a4,s0,a3 + 3bc069b6: 079ee463 bltu t4,s9,3bc06a1e + 3bc069ba: 00042023 sw zero,0(s0) + 3bc069be: 00064d03 lbu s10,0(a2) + 3bc069c2: 01a40023 sb s10,0(s0) + 3bc069c6: 00164d03 lbu s10,1(a2) + 3bc069ca: 01a400a3 sb s10,1(s0) + 3bc069ce: 00264d03 lbu s10,2(a2) + 3bc069d2: 01a40123 sb s10,2(s0) + 3bc069d6: 00364d03 lbu s10,3(a2) + 3bc069da: 01a401a3 sb s10,3(s0) + 3bc069de: c59a4d0b lrwu s10,s4,s9,2 + 3bc069e2: 01a60db3 add s11,a2,s10 + 3bc069e6: 41a6460b lrw a2,a2,s10,0 + 3bc069ea: c050 sw a2,4(s0) + 3bc069ec: 459ac60b lrw a2,s5,s9,2 + 3bc069f0: 40cd8633 sub a2,s11,a2 + 3bc069f4: 04ef7463 bgeu t5,a4,3bc06a3c + 3bc069f8: 06e9e163 bltu s3,a4,3bc06a5a + 3bc069fc: 0421 addi s0,s0,8 + 3bc069fe: 00647e63 bgeu s0,t1,3bc06a1a + 3bc06a02: 8cb2 mv s9,a2 + 3bc06a04: 86a2 mv a3,s0 + 3bc06a06: 788ccd0b ldia s10,(s9),8,0 + 3bc06a0a: 7886dd0b sdia s10,(a3),8,0 + 3bc06a0e: fe66ece3 bltu a3,t1,3bc06a06 + 3bc06a12: 40830433 sub s0,t1,s0 + 3bc06a16: 9622 add a2,a2,s0 + 3bc06a18: 841a mv s0,t1 + 3bc06a1a: 4681 li a3,0 + 3bc06a1c: a819 j 3bc06a32 + 3bc06a1e: 78864c8b ldia s9,(a2),8,0 + 3bc06a22: 01943023 sd s9,0(s0) + 3bc06a26: b7f9 j 3bc069f4 + 3bc06a28: 80d64c8b lrbu s9,a2,a3,0 + 3bc06a2c: 00d45c8b srb s9,s0,a3,0 + 3bc06a30: 0685 addi a3,a3,1 + 3bc06a32: 00d40cb3 add s9,s0,a3 + 3bc06a36: feece9e3 bltu s9,a4,3bc06a28 + 3bc06a3a: b595 j 3bc0689e + 3bc06a3c: 00063c83 ld s9,0(a2) + 3bc06a40: 01943423 sd s9,8(s0) + 3bc06a44: e4d97de3 bgeu s2,a3,3bc0689e + 3bc06a48: 0441 addi s0,s0,16 + 3bc06a4a: 0621 addi a2,a2,8 + 3bc06a4c: 7886468b ldia a3,(a2),8,0 + 3bc06a50: 7884568b sdia a3,(s0),8,0 + 3bc06a54: fee46ce3 bltu s0,a4,3bc06a4c + 3bc06a58: b599 j 3bc0689e + 3bc06a5a: 8f89 sub a5,a5,a0 + 3bc06a5c: fff7c793 not a5,a5 + 3bc06a60: 2781 sext.w a5,a5 + 3bc06a62: b3c5 j 3bc06842 + 3bc06a64: 57fd li a5,-1 + 3bc06a66: 853e mv a0,a5 + 3bc06a68: 8082 ret + +000000003bc06a6a : + 3bc06a6a: 77c1 lui a5,0xffff0 + 3bc06a6c: 7119 addi sp,sp,-128 + 3bc06a6e: 97ae add a5,a5,a1 + 3bc06a70: fc86 sd ra,120(sp) + 3bc06a72: f8a2 sd s0,112(sp) + 3bc06a74: f4a6 sd s1,104(sp) + 3bc06a76: f0ca sd s2,96(sp) + 3bc06a78: ecce sd s3,88(sp) + 3bc06a7a: e8d2 sd s4,80(sp) + 3bc06a7c: e4d6 sd s5,72(sp) + 3bc06a7e: e0da sd s6,64(sp) + 3bc06a80: fc5e sd s7,56(sp) + 3bc06a82: f862 sd s8,48(sp) + 3bc06a84: f466 sd s9,40(sp) + 3bc06a86: f06a sd s10,32(sp) + 3bc06a88: ec6e sd s11,24(sp) + 3bc06a8a: e43e sd a5,8(sp) + 3bc06a8c: 24050263 beqz a0,3bc06cd0 + 3bc06a90: 00c50333 add t1,a0,a2 + 3bc06a94: 00d58e33 add t3,a1,a3 + 3bc06a98: 88aa mv a7,a0 + 3bc06a9a: ff030913 addi s2,t1,-16 + 3bc06a9e: fe0e0993 addi s3,t3,-32 + 3bc06aa2: ea95 bnez a3,3bc06ad6 + 3bc06aa4: 4785 li a5,1 + 3bc06aa6: 557d li a0,-1 + 3bc06aa8: 00f61863 bne a2,a5,3bc06ab8 + 3bc06aac: 0008c503 lbu a0,0(a7) + 3bc06ab0: 00a03533 snez a0,a0 + 3bc06ab4: 0005250b ext a0,a0,0,0 + 3bc06ab8: 70e6 ld ra,120(sp) + 3bc06aba: 7446 ld s0,112(sp) + 3bc06abc: 74a6 ld s1,104(sp) + 3bc06abe: 7906 ld s2,96(sp) + 3bc06ac0: 69e6 ld s3,88(sp) + 3bc06ac2: 6a46 ld s4,80(sp) + 3bc06ac4: 6aa6 ld s5,72(sp) + 3bc06ac6: 6b06 ld s6,64(sp) + 3bc06ac8: 7be2 ld s7,56(sp) + 3bc06aca: 7c42 ld s8,48(sp) + 3bc06acc: 7ca2 ld s9,40(sp) + 3bc06ace: 7d02 ld s10,32(sp) + 3bc06ad0: 6de2 ld s11,24(sp) + 3bc06ad2: 6109 addi sp,sp,128 + 3bc06ad4: 8082 ret + 3bc06ad6: 557d li a0,-1 + 3bc06ad8: d265 beqz a2,3bc06ab8 + 3bc06ada: 87c6 mv a5,a7 + 3bc06adc: 882e mv a6,a1 + 3bc06ade: 4f3d li t5,15 + 3bc06ae0: 4f9d li t6,7 + 3bc06ae2: ff4e0293 addi t0,t3,-12 + 3bc06ae6: 4a41 li s4,16 + 3bc06ae8: ff9e0e93 addi t4,t3,-7 + 3bc06aec: ffbe0a93 addi s5,t3,-5 + 3bc06af0: 00004b17 auipc s6,0x4 + 3bc06af4: 6a8b0b13 addi s6,s6,1704 # 3bc0b198 + 3bc06af8: 00004b97 auipc s7,0x4 + 3bc06afc: 680b8b93 addi s7,s7,1664 # 3bc0b178 + 3bc06b00: ffc30c13 addi s8,t1,-4 + 3bc06b04: 0ff00393 li t2,255 + 3bc06b08: ff830c93 addi s9,t1,-8 + 3bc06b0c: ff130493 addi s1,t1,-15 + 3bc06b10: 5d7d li s10,-1 + 3bc06b12: 9817c68b lbuia a3,(a5),1,0 + 3bc06b16: 0046d713 srli a4,a3,0x4 + 3bc06b1a: 0046d61b srliw a2,a3,0x4 + 3bc06b1e: 05e70b63 beq a4,t5,3bc06b74 + 3bc06b22: 0109b533 sltu a0,s3,a6 + 3bc06b26: 00154513 xori a0,a0,1 + 3bc06b2a: 0ff57513 andi a0,a0,255 + 3bc06b2e: 00c80433 add s0,a6,a2 + 3bc06b32: 00c78733 add a4,a5,a2 + 3bc06b36: c53d beqz a0,3bc06ba4 + 3bc06b38: 0727f663 bgeu a5,s2,3bc06ba4 + 3bc06b3c: 6390 ld a2,0(a5) + 3bc06b3e: 8abd andi a3,a3,15 + 3bc06b40: 00c83023 sd a2,0(a6) + 3bc06b44: 679c ld a5,8(a5) + 3bc06b46: 00f83423 sd a5,8(a6) + 3bc06b4a: 87ba mv a5,a4 + 3bc06b4c: b827c60b lhuia a2,(a5),2,0 + 3bc06b50: 40c40733 sub a4,s0,a2 + 3bc06b54: 0be68363 beq a3,t5,3bc06bfa + 3bc06b58: 0ccff163 bgeu t6,a2,3bc06c1a + 3bc06b5c: 6310 ld a2,0(a4) + 3bc06b5e: 0691 addi a3,a3,4 + 3bc06b60: 00d40833 add a6,s0,a3 + 3bc06b64: e010 sd a2,0(s0) + 3bc06b66: 6710 ld a2,8(a4) + 3bc06b68: e410 sd a2,8(s0) + 3bc06b6a: 01075703 lhu a4,16(a4) # 1000010 <__BSS_SIZE__+0xffa400> + 3bc06b6e: 00e41823 sh a4,16(s0) + 3bc06b72: b745 j 3bc06b12 + 3bc06b74: 0497fc63 bgeu a5,s1,3bc06bcc + 3bc06b78: 4601 li a2,0 + 3bc06b7a: 9817c50b lbuia a0,(a5),1,0 + 3bc06b7e: 9e29 addw a2,a2,a0 + 3bc06b80: 0497f963 bgeu a5,s1,3bc06bd2 + 3bc06b84: fe750be3 beq a0,t2,3bc06b7a + 3bc06b88: 4701 li a4,0 + 3bc06b8a: 7c06360b extu a2,a2,31,0 + 3bc06b8e: 063d addi a2,a2,15 + 3bc06b90: 13a70a63 beq a4,s10,3bc06cc4 + 3bc06b94: 01060733 add a4,a2,a6 + 3bc06b98: 13076663 bltu a4,a6,3bc06cc4 + 3bc06b9c: 00f60733 add a4,a2,a5 + 3bc06ba0: 12f76263 bltu a4,a5,3bc06cc4 + 3bc06ba4: 00c80433 add s0,a6,a2 + 3bc06ba8: 00c78533 add a0,a5,a2 + 3bc06bac: 0082e463 bltu t0,s0,3bc06bb4 + 3bc06bb0: 02acf363 bgeu s9,a0,3bc06bd6 + 3bc06bb4: 10a31863 bne t1,a0,3bc06cc4 + 3bc06bb8: 108e6663 bltu t3,s0,3bc06cc4 + 3bc06bbc: 84ae mv s1,a1 + 3bc06bbe: 8542 mv a0,a6 + 3bc06bc0: 85be mv a1,a5 + 3bc06bc2: f0bf90ef jal ra,3bc00acc + 3bc06bc6: 4094053b subw a0,s0,s1 + 3bc06bca: b5fd j 3bc06ab8 + 3bc06bcc: 577d li a4,-1 + 3bc06bce: 4601 li a2,0 + 3bc06bd0: bf6d j 3bc06b8a + 3bc06bd2: 5779 li a4,-2 + 3bc06bd4: bf5d j 3bc06b8a + 3bc06bd6: 4701 li a4,0 + 3bc06bd8: 60e7c60b lrd a2,a5,a4,0 + 3bc06bdc: 60e8560b srd a2,a6,a4,0 + 3bc06be0: 0721 addi a4,a4,8 + 3bc06be2: 00e80633 add a2,a6,a4 + 3bc06be6: fe8669e3 bltu a2,s0,3bc06bd8 + 3bc06bea: 87aa mv a5,a0 + 3bc06bec: b827c60b lhuia a2,(a5),2,0 + 3bc06bf0: 8abd andi a3,a3,15 + 3bc06bf2: 40c40733 sub a4,s0,a2 + 3bc06bf6: 03e69263 bne a3,t5,3bc06c1a + 3bc06bfa: 4681 li a3,0 + 3bc06bfc: 9817c80b lbuia a6,(a5),1,0 + 3bc06c00: 00d806bb addw a3,a6,a3 + 3bc06c04: 0d87f063 bgeu a5,s8,3bc06cc4 + 3bc06c08: fe780ae3 beq a6,t2,3bc06bfc + 3bc06c0c: 7c06b68b extu a3,a3,31,0 + 3bc06c10: 06bd addi a3,a3,15 + 3bc06c12: 00868533 add a0,a3,s0 + 3bc06c16: 0a856763 bltu a0,s0,3bc06cc4 + 3bc06c1a: 6522 ld a0,8(sp) + 3bc06c1c: 0691 addi a3,a3,4 + 3bc06c1e: 0aa76363 bltu a4,a0,3bc06cc4 + 3bc06c22: 00d40833 add a6,s0,a3 + 3bc06c26: 06cfe463 bltu t6,a2,3bc06c8e + 3bc06c2a: 00042023 sw zero,0(s0) + 3bc06c2e: 00074503 lbu a0,0(a4) + 3bc06c32: 00a40023 sb a0,0(s0) + 3bc06c36: 00174503 lbu a0,1(a4) + 3bc06c3a: 00a400a3 sb a0,1(s0) + 3bc06c3e: 00274503 lbu a0,2(a4) + 3bc06c42: 00a40123 sb a0,2(s0) + 3bc06c46: 00374503 lbu a0,3(a4) + 3bc06c4a: 00a401a3 sb a0,3(s0) + 3bc06c4e: c4cb450b lrwu a0,s6,a2,2 + 3bc06c52: 00a70db3 add s11,a4,a0 + 3bc06c56: 40a7470b lrw a4,a4,a0,0 + 3bc06c5a: c058 sw a4,4(s0) + 3bc06c5c: 44cbc70b lrw a4,s7,a2,2 + 3bc06c60: 40ed8733 sub a4,s11,a4 + 3bc06c64: 0502f363 bgeu t0,a6,3bc06caa + 3bc06c68: 050aee63 bltu s5,a6,3bc06cc4 + 3bc06c6c: 0421 addi s0,s0,8 + 3bc06c6e: 01d47e63 bgeu s0,t4,3bc06c8a + 3bc06c72: 863a mv a2,a4 + 3bc06c74: 86a2 mv a3,s0 + 3bc06c76: 7886450b ldia a0,(a2),8,0 + 3bc06c7a: 7886d50b sdia a0,(a3),8,0 + 3bc06c7e: ffd6ece3 bltu a3,t4,3bc06c76 + 3bc06c82: 408e8433 sub s0,t4,s0 + 3bc06c86: 9722 add a4,a4,s0 + 3bc06c88: 8476 mv s0,t4 + 3bc06c8a: 4681 li a3,0 + 3bc06c8c: a811 j 3bc06ca0 + 3bc06c8e: 7887460b ldia a2,(a4),8,0 + 3bc06c92: e010 sd a2,0(s0) + 3bc06c94: bfc1 j 3bc06c64 + 3bc06c96: 80d7460b lrbu a2,a4,a3,0 + 3bc06c9a: 00d4560b srb a2,s0,a3,0 + 3bc06c9e: 0685 addi a3,a3,1 + 3bc06ca0: 00d40633 add a2,s0,a3 + 3bc06ca4: ff0669e3 bltu a2,a6,3bc06c96 + 3bc06ca8: b5ad j 3bc06b12 + 3bc06caa: 6310 ld a2,0(a4) + 3bc06cac: e410 sd a2,8(s0) + 3bc06cae: e6da72e3 bgeu s4,a3,3bc06b12 + 3bc06cb2: 0441 addi s0,s0,16 + 3bc06cb4: 0721 addi a4,a4,8 + 3bc06cb6: 7887468b ldia a3,(a4),8,0 + 3bc06cba: 7884568b sdia a3,(s0),8,0 + 3bc06cbe: ff046ce3 bltu s0,a6,3bc06cb6 + 3bc06cc2: bd81 j 3bc06b12 + 3bc06cc4: 41178533 sub a0,a5,a7 + 3bc06cc8: fff54513 not a0,a0 + 3bc06ccc: 2501 sext.w a0,a0 + 3bc06cce: b3ed j 3bc06ab8 + 3bc06cd0: 557d li a0,-1 + 3bc06cd2: b3dd j 3bc06ab8 + +000000003bc06cd4 : + 3bc06cd4: 30050963 beqz a0,3bc06fe6 + 3bc06cd8: 7135 addi sp,sp,-160 + 3bc06cda: e526 sd s1,136(sp) + 3bc06cdc: fcce sd s3,120(sp) + 3bc06cde: f0da sd s6,96(sp) + 3bc06ce0: ecde sd s7,88(sp) + 3bc06ce2: e8e2 sd s8,80(sp) + 3bc06ce4: e0ea sd s10,64(sp) + 3bc06ce6: ed06 sd ra,152(sp) + 3bc06ce8: e922 sd s0,144(sp) + 3bc06cea: e14a sd s2,128(sp) + 3bc06cec: f8d2 sd s4,112(sp) + 3bc06cee: f4d6 sd s5,104(sp) + 3bc06cf0: e4e6 sd s9,72(sp) + 3bc06cf2: fc6e sd s11,56(sp) + 3bc06cf4: 8b2a mv s6,a0 + 3bc06cf6: 8d2e mv s10,a1 + 3bc06cf8: 84ba mv s1,a4 + 3bc06cfa: 89be mv s3,a5 + 3bc06cfc: 00c50bb3 add s7,a0,a2 + 3bc06d00: 00d58c33 add s8,a1,a3 + 3bc06d04: c319 beqz a4,3bc06d0a + 3bc06d06: 00f704b3 add s1,a4,a5 + 3bc06d0a: ff0b8793 addi a5,s7,-16 + 3bc06d0e: e03e sd a5,0(sp) + 3bc06d10: fe0c0793 addi a5,s8,-32 + 3bc06d14: e43e sd a5,8(sp) + 3bc06d16: ea95 bnez a3,3bc06d4a + 3bc06d18: 4785 li a5,1 + 3bc06d1a: 557d li a0,-1 + 3bc06d1c: 00f61863 bne a2,a5,3bc06d2c + 3bc06d20: 000b4503 lbu a0,0(s6) + 3bc06d24: 00a03533 snez a0,a0 + 3bc06d28: 0005250b ext a0,a0,0,0 + 3bc06d2c: 60ea ld ra,152(sp) + 3bc06d2e: 644a ld s0,144(sp) + 3bc06d30: 64aa ld s1,136(sp) + 3bc06d32: 690a ld s2,128(sp) + 3bc06d34: 79e6 ld s3,120(sp) + 3bc06d36: 7a46 ld s4,112(sp) + 3bc06d38: 7aa6 ld s5,104(sp) + 3bc06d3a: 7b06 ld s6,96(sp) + 3bc06d3c: 6be6 ld s7,88(sp) + 3bc06d3e: 6c46 ld s8,80(sp) + 3bc06d40: 6ca6 ld s9,72(sp) + 3bc06d42: 6d06 ld s10,64(sp) + 3bc06d44: 7de2 ld s11,56(sp) + 3bc06d46: 610d addi sp,sp,160 + 3bc06d48: 8082 ret + 3bc06d4a: 557d li a0,-1 + 3bc06d4c: d265 beqz a2,3bc06d2c + 3bc06d4e: ffcb8793 addi a5,s7,-4 + 3bc06d52: e83e sd a5,16(sp) + 3bc06d54: ff8b8793 addi a5,s7,-8 + 3bc06d58: 845a mv s0,s6 + 3bc06d5a: 8cea mv s9,s10 + 3bc06d5c: ff4c0a13 addi s4,s8,-12 + 3bc06d60: ff9c0913 addi s2,s8,-7 + 3bc06d64: ffbc0a93 addi s5,s8,-5 + 3bc06d68: ec3e sd a5,24(sp) + 3bc06d6a: 9814468b lbuia a3,(s0),1,0 + 3bc06d6e: 4ebd li t4,15 + 3bc06d70: 0046d793 srli a5,a3,0x4 + 3bc06d74: 0046d61b srliw a2,a3,0x4 + 3bc06d78: 07d78363 beq a5,t4,3bc06dde + 3bc06d7c: 67a2 ld a5,8(sp) + 3bc06d7e: 00cc8db3 add s11,s9,a2 + 3bc06d82: 00c40533 add a0,s0,a2 + 3bc06d86: 0197b5b3 sltu a1,a5,s9 + 3bc06d8a: 0015c593 xori a1,a1,1 + 3bc06d8e: 0ff5f593 andi a1,a1,255 + 3bc06d92: c5c1 beqz a1,3bc06e1a + 3bc06d94: 6782 ld a5,0(sp) + 3bc06d96: 08f47263 bgeu s0,a5,3bc06e1a + 3bc06d9a: 6010 ld a2,0(s0) + 3bc06d9c: 8abd andi a3,a3,15 + 3bc06d9e: 00ccb023 sd a2,0(s9) + 3bc06da2: 6410 ld a2,8(s0) + 3bc06da4: 842a mv s0,a0 + 3bc06da6: 00ccb423 sd a2,8(s9) + 3bc06daa: b824458b lhuia a1,(s0),2,0 + 3bc06dae: 8636 mv a2,a3 + 3bc06db0: 40bd8533 sub a0,s11,a1 + 3bc06db4: 0dd68063 beq a3,t4,3bc06e74 + 3bc06db8: 471d li a4,7 + 3bc06dba: 0eb77063 bgeu a4,a1,3bc06e9a + 3bc06dbe: 0da56e63 bltu a0,s10,3bc06e9a + 3bc06dc2: 6118 ld a4,0(a0) + 3bc06dc4: 0691 addi a3,a3,4 + 3bc06dc6: 00dd8cb3 add s9,s11,a3 + 3bc06dca: 00edb023 sd a4,0(s11) + 3bc06dce: 6518 ld a4,8(a0) + 3bc06dd0: 00edb423 sd a4,8(s11) + 3bc06dd4: 01055703 lhu a4,16(a0) + 3bc06dd8: 00ed9823 sh a4,16(s11) + 3bc06ddc: b779 j 3bc06d6a + 3bc06dde: ff1b8793 addi a5,s7,-15 + 3bc06de2: 06f47063 bgeu s0,a5,3bc06e42 + 3bc06de6: 4601 li a2,0 + 3bc06de8: 0ff00513 li a0,255 + 3bc06dec: 98144e8b lbuia t4,(s0),1,0 + 3bc06df0: 00ce863b addw a2,t4,a2 + 3bc06df4: 04f47a63 bgeu s0,a5,3bc06e48 + 3bc06df8: feae8ae3 beq t4,a0,3bc06dec + 3bc06dfc: 4781 li a5,0 + 3bc06dfe: 7c06360b extu a2,a2,31,0 + 3bc06e02: 55fd li a1,-1 + 3bc06e04: 063d addi a2,a2,15 + 3bc06e06: 1cb78a63 beq a5,a1,3bc06fda + 3bc06e0a: 019607b3 add a5,a2,s9 + 3bc06e0e: 1d97e663 bltu a5,s9,3bc06fda + 3bc06e12: 008607b3 add a5,a2,s0 + 3bc06e16: 1c87e263 bltu a5,s0,3bc06fda + 3bc06e1a: 00cc8db3 add s11,s9,a2 + 3bc06e1e: 00c405b3 add a1,s0,a2 + 3bc06e22: 01ba6563 bltu s4,s11,3bc06e2c + 3bc06e26: 67e2 ld a5,24(sp) + 3bc06e28: 02b7f263 bgeu a5,a1,3bc06e4c + 3bc06e2c: 1abb9763 bne s7,a1,3bc06fda + 3bc06e30: 1bbc6563 bltu s8,s11,3bc06fda + 3bc06e34: 85a2 mv a1,s0 + 3bc06e36: 8566 mv a0,s9 + 3bc06e38: c95f90ef jal ra,3bc00acc + 3bc06e3c: 41ad853b subw a0,s11,s10 + 3bc06e40: b5f5 j 3bc06d2c + 3bc06e42: 57fd li a5,-1 + 3bc06e44: 4601 li a2,0 + 3bc06e46: bf65 j 3bc06dfe + 3bc06e48: 57f9 li a5,-2 + 3bc06e4a: bf55 j 3bc06dfe + 3bc06e4c: 4601 li a2,0 + 3bc06e4e: 60c4450b lrd a0,s0,a2,0 + 3bc06e52: 60ccd50b srd a0,s9,a2,0 + 3bc06e56: 0621 addi a2,a2,8 + 3bc06e58: 00cc8533 add a0,s9,a2 + 3bc06e5c: ffb569e3 bltu a0,s11,3bc06e4e + 3bc06e60: 842e mv s0,a1 + 3bc06e62: b824458b lhuia a1,(s0),2,0 + 3bc06e66: 00f6f613 andi a2,a3,15 + 3bc06e6a: 473d li a4,15 + 3bc06e6c: 40bd8533 sub a0,s11,a1 + 3bc06e70: 02e61563 bne a2,a4,3bc06e9a + 3bc06e74: 4601 li a2,0 + 3bc06e76: 0ff00693 li a3,255 + 3bc06e7a: 98144e8b lbuia t4,(s0),1,0 + 3bc06e7e: 67c2 ld a5,16(sp) + 3bc06e80: 00ce863b addw a2,t4,a2 + 3bc06e84: 14f47b63 bgeu s0,a5,3bc06fda + 3bc06e88: fede89e3 beq t4,a3,3bc06e7a + 3bc06e8c: 7c06360b extu a2,a2,31,0 + 3bc06e90: 063d addi a2,a2,15 + 3bc06e92: 01b60733 add a4,a2,s11 + 3bc06e96: 15b76263 bltu a4,s11,3bc06fda + 3bc06e9a: 6741 lui a4,0x10 + 3bc06e9c: 0611 addi a2,a2,4 + 3bc06e9e: 00e9f663 bgeu s3,a4,3bc06eaa + 3bc06ea2: 01350733 add a4,a0,s3 + 3bc06ea6: 13a76a63 bltu a4,s10,3bc06fda + 3bc06eaa: 00cd8cb3 add s9,s11,a2 + 3bc06eae: 07a57663 bgeu a0,s10,3bc06f1a + 3bc06eb2: 139ae463 bltu s5,s9,3bc06fda + 3bc06eb6: 40ad06b3 sub a3,s10,a0 + 3bc06eba: 40d485b3 sub a1,s1,a3 + 3bc06ebe: 00c6e663 bltu a3,a2,3bc06eca + 3bc06ec2: 856e mv a0,s11 + 3bc06ec4: c09f90ef jal ra,3bc00acc + 3bc06ec8: b54d j 3bc06d6a + 3bc06eca: 40d60eb3 sub t4,a2,a3 + 3bc06ece: 856e mv a0,s11 + 3bc06ed0: 8636 mv a2,a3 + 3bc06ed2: f476 sd t4,40(sp) + 3bc06ed4: f036 sd a3,32(sp) + 3bc06ed6: b97f90ef jal ra,3bc00a6c + 3bc06eda: 7682 ld a3,32(sp) + 3bc06edc: 7ea2 ld t4,40(sp) + 3bc06ede: 00dd8533 add a0,s11,a3 + 3bc06ee2: 41a507b3 sub a5,a0,s10 + 3bc06ee6: 03d7f563 bgeu a5,t4,3bc06f10 + 3bc06eea: 4781 li a5,0 + 3bc06eec: a031 j 3bc06ef8 + 3bc06eee: 80fd468b lrbu a3,s10,a5,0 + 3bc06ef2: 00f5568b srb a3,a0,a5,0 + 3bc06ef6: 0785 addi a5,a5,1 + 3bc06ef8: 00f506b3 add a3,a0,a5 + 3bc06efc: ff96e9e3 bltu a3,s9,3bc06eee + 3bc06f00: 00acb733 sltu a4,s9,a0 + 3bc06f04: 8676 mv a2,t4 + 3bc06f06: 42e0160b mvnez a2,zero,a4 + 3bc06f0a: 00c50cb3 add s9,a0,a2 + 3bc06f0e: bdb1 j 3bc06d6a + 3bc06f10: 8676 mv a2,t4 + 3bc06f12: 85ea mv a1,s10 + 3bc06f14: b59f90ef jal ra,3bc00a6c + 3bc06f18: bd89 j 3bc06d6a + 3bc06f1a: 469d li a3,7 + 3bc06f1c: 06b6ee63 bltu a3,a1,3bc06f98 + 3bc06f20: 000da023 sw zero,0(s11) + 3bc06f24: 00054683 lbu a3,0(a0) + 3bc06f28: 00004797 auipc a5,0x4 + 3bc06f2c: 27078793 addi a5,a5,624 # 3bc0b198 + 3bc06f30: c4b7ce8b lrwu t4,a5,a1,2 + 3bc06f34: 00dd8023 sb a3,0(s11) + 3bc06f38: 00154683 lbu a3,1(a0) + 3bc06f3c: 00004797 auipc a5,0x4 + 3bc06f40: 23c78793 addi a5,a5,572 # 3bc0b178 + 3bc06f44: 01d50f33 add t5,a0,t4 + 3bc06f48: 00dd80a3 sb a3,1(s11) + 3bc06f4c: 00254683 lbu a3,2(a0) + 3bc06f50: 00dd8123 sb a3,2(s11) + 3bc06f54: 00354683 lbu a3,3(a0) + 3bc06f58: 00dd81a3 sb a3,3(s11) + 3bc06f5c: 41d5468b lrw a3,a0,t4,0 + 3bc06f60: 00dda223 sw a3,4(s11) + 3bc06f64: 44b7c68b lrw a3,a5,a1,2 + 3bc06f68: 40df06b3 sub a3,t5,a3 + 3bc06f6c: 059a7663 bgeu s4,s9,3bc06fb8 + 3bc06f70: 079ae563 bltu s5,s9,3bc06fda + 3bc06f74: 008d8513 addi a0,s11,8 + 3bc06f78: 01257e63 bgeu a0,s2,3bc06f94 + 3bc06f7c: 8636 mv a2,a3 + 3bc06f7e: 87aa mv a5,a0 + 3bc06f80: 7886458b ldia a1,(a2),8,0 + 3bc06f84: 7887d58b sdia a1,(a5),8,0 + 3bc06f88: ff27ece3 bltu a5,s2,3bc06f80 + 3bc06f8c: 40a907b3 sub a5,s2,a0 + 3bc06f90: 96be add a3,a3,a5 + 3bc06f92: 854a mv a0,s2 + 3bc06f94: 4781 li a5,0 + 3bc06f96: a821 j 3bc06fae + 3bc06f98: 86aa mv a3,a0 + 3bc06f9a: 7886c58b ldia a1,(a3),8,0 + 3bc06f9e: 00bdb023 sd a1,0(s11) + 3bc06fa2: b7e9 j 3bc06f6c + 3bc06fa4: 80f6c60b lrbu a2,a3,a5,0 + 3bc06fa8: 00f5560b srb a2,a0,a5,0 + 3bc06fac: 0785 addi a5,a5,1 + 3bc06fae: 00f50633 add a2,a0,a5 + 3bc06fb2: ff9669e3 bltu a2,s9,3bc06fa4 + 3bc06fb6: bb55 j 3bc06d6a + 3bc06fb8: 628c ld a1,0(a3) + 3bc06fba: 00bdb423 sd a1,8(s11) + 3bc06fbe: 45c1 li a1,16 + 3bc06fc0: dac5f5e3 bgeu a1,a2,3bc06d6a + 3bc06fc4: 010d8513 addi a0,s11,16 + 3bc06fc8: 00868613 addi a2,a3,8 + 3bc06fcc: 7886478b ldia a5,(a2),8,0 + 3bc06fd0: 7885578b sdia a5,(a0),8,0 + 3bc06fd4: ff956ce3 bltu a0,s9,3bc06fcc + 3bc06fd8: bb49 j 3bc06d6a + 3bc06fda: 41640533 sub a0,s0,s6 + 3bc06fde: fff54513 not a0,a0 + 3bc06fe2: 2501 sext.w a0,a0 + 3bc06fe4: b3a1 j 3bc06d2c + 3bc06fe6: 557d li a0,-1 + 3bc06fe8: 8082 ret + +000000003bc06fea : + 3bc06fea: 883e mv a6,a5 + 3bc06fec: e399 bnez a5,3bc06ff2 + 3bc06fee: 80fff06f j 3bc067fc + 3bc06ff2: 00f708b3 add a7,a4,a5 + 3bc06ff6: 01159b63 bne a1,a7,3bc0700c + 3bc06ffa: 67c1 lui a5,0x10 + 3bc06ffc: 17f9 addi a5,a5,-2 + 3bc06ffe: 0107d463 bge a5,a6,3bc07006 + 3bc07002: a69ff06f j 3bc06a6a + 3bc07006: 8742 mv a4,a6 + 3bc07008: c6eff06f j 3bc06476 + 3bc0700c: cc9ff06f j 3bc06cd4 + +000000003bc07010 : + 3bc07010: fed53513 sltiu a0,a0,-19 + 3bc07014: 00154513 xori a0,a0,1 + 3bc07018: 2501 sext.w a0,a0 + 3bc0701a: 8082 ret + +000000003bc0701c : + 3bc0701c: e111 bnez a0,3bc07020 + 3bc0701e: 4511 li a0,4 + 3bc07020: ffc5069b addiw a3,a0,-4 + 3bc07024: 470d li a4,3 + 3bc07026: 5579 li a0,-2 + 3bc07028: 00d76863 bltu a4,a3,3bc07038 + 3bc0702c: 00004717 auipc a4,0x4 + 3bc07030: 12c70713 addi a4,a4,300 # 3bc0b158 + 3bc07034: 76d7450b lurd a0,a4,a3,3 + 3bc07038: 8082 ret + +000000003bc0703a : + 3bc0703a: 715d addi sp,sp,-80 + 3bc0703c: f84a sd s2,48(sp) + 3bc0703e: e486 sd ra,72(sp) + 3bc07040: e0a2 sd s0,64(sp) + 3bc07042: fc26 sd s1,56(sp) + 3bc07044: f44e sd s3,40(sp) + 3bc07046: f052 sd s4,32(sp) + 3bc07048: ec56 sd s5,24(sp) + 3bc0704a: e85a sd s6,16(sp) + 3bc0704c: e45e sd s7,8(sp) + 3bc0704e: e062 sd s8,0(sp) + 3bc07050: 4799 li a5,6 + 3bc07052: 5951 li s2,-12 + 3bc07054: 04c7f663 bgeu a5,a2,3bc070a0 + 3bc07058: 84ae mv s1,a1 + 3bc0705a: 8932 mv s2,a2 + 3bc0705c: 4581 li a1,0 + 3bc0705e: 02000613 li a2,32 + 3bc07062: 842a mv s0,a0 + 3bc07064: 9aff90ef jal ra,3bc00a12 + 3bc07068: 8526 mv a0,s1 + 3bc0706a: be8ff0ef jal ra,3bc06452 + 3bc0706e: 2501 sext.w a0,a0 + 3bc07070: 184d37b7 lui a5,0x184d3 + 3bc07074: ff057713 andi a4,a0,-16 + 3bc07078: a5078793 addi a5,a5,-1456 # 184d2a50 + 3bc0707c: 02f71f63 bne a4,a5,3bc070ba + 3bc07080: 4785 li a5,1 + 3bc07082: c45c sw a5,12(s0) + 3bc07084: 0e840793 addi a5,s0,232 + 3bc07088: 00f49963 bne s1,a5,3bc0709a + 3bc0708c: 47a1 li a5,8 + 3bc0708e: e83c sd a5,80(s0) + 3bc07090: 05243423 sd s2,72(s0) + 3bc07094: 47b5 li a5,13 + 3bc07096: d05c sw a5,36(s0) + 3bc07098: a021 j 3bc070a0 + 3bc0709a: 47b1 li a5,12 + 3bc0709c: d05c sw a5,36(s0) + 3bc0709e: 4911 li s2,4 + 3bc070a0: 60a6 ld ra,72(sp) + 3bc070a2: 6406 ld s0,64(sp) + 3bc070a4: 74e2 ld s1,56(sp) + 3bc070a6: 79a2 ld s3,40(sp) + 3bc070a8: 7a02 ld s4,32(sp) + 3bc070aa: 6ae2 ld s5,24(sp) + 3bc070ac: 6b42 ld s6,16(sp) + 3bc070ae: 6ba2 ld s7,8(sp) + 3bc070b0: 6c02 ld s8,0(sp) + 3bc070b2: 854a mv a0,s2 + 3bc070b4: 7942 ld s2,48(sp) + 3bc070b6: 6161 addi sp,sp,80 + 3bc070b8: 8082 ret + 3bc070ba: 184d27b7 lui a5,0x184d2 + 3bc070be: 20478793 addi a5,a5,516 # 184d2204 + 3bc070c2: 10f51863 bne a0,a5,3bc071d2 + 3bc070c6: 00042623 sw zero,12(s0) + 3bc070ca: 0044c783 lbu a5,4(s1) + 3bc070ce: 0417b70b extu a4,a5,1,1 + 3bc070d2: 00078b1b sext.w s6,a5 + 3bc070d6: 0067d693 srli a3,a5,0x6 + 3bc070da: 0e071e63 bnez a4,3bc071d6 + 3bc070de: 4705 li a4,1 + 3bc070e0: 0ee69d63 bne a3,a4,3bc071da + 3bc070e4: 0c3b3c0b extu s8,s6,3,3 + 3bc070e8: 49bd li s3,15 + 3bc070ea: 000c1363 bnez s8,3bc070f0 + 3bc070ee: 499d li s3,7 + 3bc070f0: 0017fa13 andi s4,a5,1 + 3bc070f4: 0549998b addsl s3,s3,s4,2 + 3bc070f8: 03397063 bgeu s2,s3,3bc07118 + 3bc070fc: 0e840513 addi a0,s0,232 + 3bc07100: 00a48663 beq s1,a0,3bc0710c + 3bc07104: 864a mv a2,s2 + 3bc07106: 85a6 mv a1,s1 + 3bc07108: 965f90ef jal ra,3bc00a6c + 3bc0710c: 05243423 sd s2,72(s0) + 3bc07110: 05343823 sd s3,80(s0) + 3bc07114: 4785 li a5,1 + 3bc07116: b741 j 3bc07096 + 3bc07118: 0054c783 lbu a5,5(s1) + 3bc0711c: 5961 li s2,-8 + 3bc0711e: fc77b70b extu a4,a5,63,7 + 3bc07122: 8c47bb8b extu s7,a5,35,4 + 3bc07126: ff2d bnez a4,3bc070a0 + 3bc07128: 004bf713 andi a4,s7,4 + 3bc0712c: 5979 li s2,-2 + 3bc0712e: db2d beqz a4,3bc070a0 + 3bc07130: 8bbd andi a5,a5,15 + 3bc07132: 5961 li s2,-8 + 3bc07134: f7b5 bnez a5,3bc070a0 + 3bc07136: ffb98a93 addi s5,s3,-5 + 3bc0713a: 4601 li a2,0 + 3bc0713c: 85d6 mv a1,s5 + 3bc0713e: 00448513 addi a0,s1,4 + 3bc07142: 425000ef jal ra,3bc07d66 + 3bc07146: 013487b3 add a5,s1,s3 + 3bc0714a: fff7c783 lbu a5,-1(a5) + 3bc0714e: 3c85350b extu a0,a0,15,8 + 3bc07152: 593d li s2,-17 + 3bc07154: f4a796e3 bne a5,a0,3bc070a0 + 3bc07158: 145b378b extu a5,s6,5,5 + 3bc0715c: 007bf513 andi a0,s7,7 + 3bc07160: c05c sw a5,4(s0) + 3bc07162: 104b378b extu a5,s6,4,4 + 3bc07166: 082b3b0b extu s6,s6,2,2 + 3bc0716a: cc5c sw a5,28(s0) + 3bc0716c: 01642423 sw s6,8(s0) + 3bc07170: c008 sw a0,0(s0) + 3bc07172: eabff0ef jal ra,3bc0701c + 3bc07176: f808 sd a0,48(s0) + 3bc07178: 040c0263 beqz s8,3bc071bc + 3bc0717c: 0074c783 lbu a5,7(s1) + 3bc07180: 0084c703 lbu a4,8(s1) + 3bc07184: 0064c683 lbu a3,6(s1) + 3bc07188: 07a2 slli a5,a5,0x8 + 3bc0718a: 0742 slli a4,a4,0x10 + 3bc0718c: 97ba add a5,a5,a4 + 3bc0718e: 0094c703 lbu a4,9(s1) + 3bc07192: 97b6 add a5,a5,a3 + 3bc07194: 0762 slli a4,a4,0x18 + 3bc07196: 97ba add a5,a5,a4 + 3bc07198: 00a4c703 lbu a4,10(s1) + 3bc0719c: 1702 slli a4,a4,0x20 + 3bc0719e: 97ba add a5,a5,a4 + 3bc071a0: 00b4c703 lbu a4,11(s1) + 3bc071a4: 1722 slli a4,a4,0x28 + 3bc071a6: 973e add a4,a4,a5 + 3bc071a8: 00c4c783 lbu a5,12(s1) + 3bc071ac: 17c2 slli a5,a5,0x30 + 3bc071ae: 973e add a4,a4,a5 + 3bc071b0: 00d4c783 lbu a5,13(s1) + 3bc071b4: 17e2 slli a5,a5,0x38 + 3bc071b6: 97ba add a5,a5,a4 + 3bc071b8: e81c sd a5,16(s0) + 3bc071ba: f41c sd a5,40(s0) + 3bc071bc: 000a0763 beqz s4,3bc071ca + 3bc071c0: 01548533 add a0,s1,s5 + 3bc071c4: a8eff0ef jal ra,3bc06452 + 3bc071c8: cc08 sw a0,24(s0) + 3bc071ca: 4789 li a5,2 + 3bc071cc: d05c sw a5,36(s0) + 3bc071ce: 894e mv s2,s3 + 3bc071d0: bdc1 j 3bc070a0 + 3bc071d2: 594d li s2,-13 + 3bc071d4: b5f1 j 3bc070a0 + 3bc071d6: 5961 li s2,-8 + 3bc071d8: b5e1 j 3bc070a0 + 3bc071da: 5969 li s2,-6 + 3bc071dc: b5d1 j 3bc070a0 + +000000003bc071de : + 3bc071de: 1101 addi sp,sp,-32 + 3bc071e0: e822 sd s0,16(sp) + 3bc071e2: e426 sd s1,8(sp) + 3bc071e4: 842a mv s0,a0 + 3bc071e6: 84ae mv s1,a1 + 3bc071e8: 4505 li a0,1 + 3bc071ea: 10000593 li a1,256 + 3bc071ee: ec06 sd ra,24(sp) + 3bc071f0: bf8fa0ef jal ra,3bc015e8 + 3bc071f4: e909 bnez a0,3bc07206 + 3bc071f6: 00043023 sd zero,0(s0) + 3bc071fa: 555d li a0,-9 + 3bc071fc: 60e2 ld ra,24(sp) + 3bc071fe: 6442 ld s0,16(sp) + 3bc07200: 64a2 ld s1,8(sp) + 3bc07202: 6105 addi sp,sp,32 + 3bc07204: 8082 ret + 3bc07206: d104 sw s1,32(a0) + 3bc07208: e008 sd a0,0(s0) + 3bc0720a: 4501 li a0,0 + 3bc0720c: bfc5 j 3bc071fc + +000000003bc0720e : + 3bc0720e: 7131 addi sp,sp,-192 + 3bc07210: ed4e sd s3,152(sp) + 3bc07212: 00073983 ld s3,0(a4) + 3bc07216: e556 sd s5,136(sp) + 3bc07218: e15a sd s6,128(sp) + 3bc0721a: f0ea sd s10,96(sp) + 3bc0721c: ecee sd s11,88(sp) + 3bc0721e: fd06 sd ra,184(sp) + 3bc07220: f922 sd s0,176(sp) + 3bc07222: f526 sd s1,168(sp) + 3bc07224: f14a sd s2,160(sp) + 3bc07226: e952 sd s4,144(sp) + 3bc07228: fcde sd s7,120(sp) + 3bc0722a: f8e2 sd s8,112(sp) + 3bc0722c: f4e6 sd s9,104(sp) + 3bc0722e: fad1560b sdd a2,a3,(sp),1,4 + 3bc07232: e43e sd a5,8(sp) + 3bc07234: 8d2a mv s10,a0 + 3bc07236: 8aae mv s5,a1 + 3bc07238: 8dba mv s11,a4 + 3bc0723a: 99b6 add s3,s3,a3 + 3bc0723c: 4b01 li s6,0 + 3bc0723e: c581 beqz a1,3bc07246 + 3bc07240: 00063b03 ld s6,0(a2) + 3bc07244: 9b2e add s6,s6,a1 + 3bc07246: 0080 addi s0,sp,64 + 3bc07248: 4641 li a2,16 + 3bc0724a: 4581 li a1,0 + 3bc0724c: 8522 mv a0,s0 + 3bc0724e: fc4f90ef jal ra,3bc00a12 + 3bc07252: 67a2 ld a5,8(sp) + 3bc07254: 000db023 sd zero,0(s11) + 3bc07258: 6ce2 ld s9,24(sp) + 3bc0725a: 40f4178b mveqz a5,s0,a5 + 3bc0725e: e43e sd a5,8(sp) + 3bc07260: 67c2 ld a5,16(sp) + 3bc07262: 8956 mv s2,s5 + 3bc07264: 4485 li s1,1 + 3bc07266: 0007b023 sd zero,0(a5) + 3bc0726a: 0ecd0793 addi a5,s10,236 + 3bc0726e: f43e sd a5,40(sp) + 3bc07270: 0b8d0793 addi a5,s10,184 + 3bc07274: 4a05 li s4,1 + 3bc07276: 0e8d0b93 addi s7,s10,232 + 3bc0727a: 088d0c13 addi s8,s10,136 + 3bc0727e: f03e sd a5,32(sp) + 3bc07280: 080a1b63 bnez s4,3bc07316 + 3bc07284: 004d2783 lw a5,4(s10) + 3bc07288: ebbd bnez a5,3bc072fe + 3bc0728a: 060d3583 ld a1,96(s10) + 3bc0728e: 058d3503 ld a0,88(s10) + 3bc07292: 06a58663 beq a1,a0,3bc072fe + 3bc07296: c5a5 beqz a1,3bc072fe + 3bc07298: 67a2 ld a5,8(sp) + 3bc0729a: 439c lw a5,0(a5) + 3bc0729c: e3ad bnez a5,3bc072fe + 3bc0729e: 024d2703 lw a4,36(s10) + 3bc072a2: 479d li a5,7 + 3bc072a4: ffe7069b addiw a3,a4,-2 + 3bc072a8: 04d7eb63 bltu a5,a3,3bc072fe + 3bc072ac: 46a5 li a3,9 + 3bc072ae: 068d3783 ld a5,104(s10) + 3bc072b2: 6ed71c63 bne a4,a3,3bc079aa + 3bc072b6: 080d3683 ld a3,128(s10) + 3bc072ba: 070d3403 ld s0,112(s10) + 3bc072be: 078d3703 ld a4,120(s10) + 3bc072c2: 8f95 sub a5,a5,a3 + 3bc072c4: 66c1 lui a3,0x10 + 3bc072c6: 8c09 sub s0,s0,a0 + 3bc072c8: 4601 li a2,0 + 3bc072ca: 00e6ea63 bltu a3,a4,3bc072de + 3bc072ce: 40e68633 sub a2,a3,a4 + 3bc072d2: 00c43733 sltu a4,s0,a2 + 3bc072d6: 00174713 xori a4,a4,1 + 3bc072da: 40e4160b mveqz a2,s0,a4 + 3bc072de: 8f91 sub a5,a5,a2 + 3bc072e0: 40c40733 sub a4,s0,a2 + 3bc072e4: 95be add a1,a1,a5 + 3bc072e6: 953a add a0,a0,a4 + 3bc072e8: f84f90ef jal ra,3bc00a6c + 3bc072ec: 058d3783 ld a5,88(s10) + 3bc072f0: 06fd3023 sd a5,96(s10) + 3bc072f4: 080d3783 ld a5,128(s10) + 3bc072f8: 943e add s0,s0,a5 + 3bc072fa: 068d3423 sd s0,104(s10) + 3bc072fe: 67e2 ld a5,24(sp) + 3bc07300: 41590933 sub s2,s2,s5 + 3bc07304: 8526 mv a0,s1 + 3bc07306: 40fc88b3 sub a7,s9,a5 + 3bc0730a: 67c2 ld a5,16(sp) + 3bc0730c: 011db023 sd a7,0(s11) + 3bc07310: 0127b023 sd s2,0(a5) + 3bc07314: a055 j 3bc073b8 + 3bc07316: 024d2783 lw a5,36(s10) + 3bc0731a: 4739 li a4,14 + 3bc0731c: f6f762e3 bltu a4,a5,3bc07280 + 3bc07320: 024d6783 lwu a5,36(s10) + 3bc07324: 00004717 auipc a4,0x4 + 3bc07328: df470713 addi a4,a4,-524 # 3bc0b118 + 3bc0732c: 44f7478b lrw a5,a4,a5,2 + 3bc07330: 97ba add a5,a5,a4 + 3bc07332: 8782 jr a5 + 3bc07334: 41998633 sub a2,s3,s9 + 3bc07338: 47c9 li a5,18 + 3bc0733a: 00c7fd63 bgeu a5,a2,3bc07354 + 3bc0733e: 85e6 mv a1,s9 + 3bc07340: 856a mv a0,s10 + 3bc07342: cf9ff0ef jal ra,3bc0703a + 3bc07346: 57b1 li a5,-20 + 3bc07348: 06a7e863 bltu a5,a0,3bc073b8 + 3bc0734c: 00ac8433 add s0,s9,a0 + 3bc07350: 8ca2 mv s9,s0 + 3bc07352: b73d j 3bc07280 + 3bc07354: 040d3423 sd zero,72(s10) + 3bc07358: 673c8d63 beq s9,s3,3bc079d2 + 3bc0735c: 479d li a5,7 + 3bc0735e: 04fd3823 sd a5,80(s10) + 3bc07362: 4785 li a5,1 + 3bc07364: 02fd2223 sw a5,36(s10) + 3bc07368: 048d3503 ld a0,72(s10) + 3bc0736c: 050d3403 ld s0,80(s10) + 3bc07370: 41998633 sub a2,s3,s9 + 3bc07374: 85e6 mv a1,s9 + 3bc07376: 8c09 sub s0,s0,a0 + 3bc07378: 008637b3 sltu a5,a2,s0 + 3bc0737c: 0017c793 xori a5,a5,1 + 3bc07380: 40f6140b mveqz s0,a2,a5 + 3bc07384: 8622 mv a2,s0 + 3bc07386: 955e add a0,a0,s7 + 3bc07388: ee4f90ef jal ra,3bc00a6c + 3bc0738c: 048d3783 ld a5,72(s10) + 3bc07390: 050d3603 ld a2,80(s10) + 3bc07394: 97a2 add a5,a5,s0 + 3bc07396: 04fd3423 sd a5,72(s10) + 3bc0739a: 9466 add s0,s0,s9 + 3bc0739c: 00c7f763 bgeu a5,a2,3bc073aa + 3bc073a0: 0611 addi a2,a2,4 + 3bc073a2: 40f604b3 sub s1,a2,a5 + 3bc073a6: 4a01 li s4,0 + 3bc073a8: b765 j 3bc07350 + 3bc073aa: 85de mv a1,s7 + 3bc073ac: 856a mv a0,s10 + 3bc073ae: c8dff0ef jal ra,3bc0703a + 3bc073b2: 57b1 li a5,-20 + 3bc073b4: f8a7fee3 bgeu a5,a0,3bc07350 + 3bc073b8: 70ea ld ra,184(sp) + 3bc073ba: 744a ld s0,176(sp) + 3bc073bc: 74aa ld s1,168(sp) + 3bc073be: 790a ld s2,160(sp) + 3bc073c0: 69ea ld s3,152(sp) + 3bc073c2: 6a4a ld s4,144(sp) + 3bc073c4: 6aaa ld s5,136(sp) + 3bc073c6: 6b0a ld s6,128(sp) + 3bc073c8: 7be6 ld s7,120(sp) + 3bc073ca: 7c46 ld s8,112(sp) + 3bc073cc: 7ca6 ld s9,104(sp) + 3bc073ce: 7d06 ld s10,96(sp) + 3bc073d0: 6de6 ld s11,88(sp) + 3bc073d2: 6129 addi sp,sp,192 + 3bc073d4: 8082 ret + 3bc073d6: 008d2783 lw a5,8(s10) + 3bc073da: c789 beqz a5,3bc073e4 + 3bc073dc: 4581 li a1,0 + 3bc073de: 8562 mv a0,s8 + 3bc073e0: 34d000ef jal ra,3bc07f2c + 3bc073e4: 004d2403 lw s0,4(s10) + 3bc073e8: 030d3783 ld a5,48(s10) + 3bc073ec: 00143413 seqz s0,s0 + 3bc073f0: 0446 slli s0,s0,0x11 + 3bc073f2: 943e add s0,s0,a5 + 3bc073f4: 038d3783 ld a5,56(s10) + 3bc073f8: 0287fe63 bgeu a5,s0,3bc07434 + 3bc073fc: 040d3503 ld a0,64(s10) + 3bc07400: 020d3c23 sd zero,56(s10) + 3bc07404: a0cfa0ef jal ra,3bc01610 + 3bc07408: 030d3503 ld a0,48(s10) + 3bc0740c: 0511 addi a0,a0,4 + 3bc0740e: 9d4fa0ef jal ra,3bc015e2 + 3bc07412: 04ad3023 sd a0,64(s10) + 3bc07416: e119 bnez a0,3bc0741c + 3bc07418: 555d li a0,-9 + 3bc0741a: bf79 j 3bc073b8 + 3bc0741c: 058d3503 ld a0,88(s10) + 3bc07420: 9f0fa0ef jal ra,3bc01610 + 3bc07424: 8522 mv a0,s0 + 3bc07426: 9bcfa0ef jal ra,3bc015e2 + 3bc0742a: 04ad3c23 sd a0,88(s10) + 3bc0742e: d56d beqz a0,3bc07418 + 3bc07430: 028d3c23 sd s0,56(s10) + 3bc07434: 058d3783 ld a5,88(s10) + 3bc07438: 040d3423 sd zero,72(s10) + 3bc0743c: 040d3823 sd zero,80(s10) + 3bc07440: 06fd3823 sd a5,112(s10) + 3bc07444: 478d li a5,3 + 3bc07446: 080d3023 sd zero,128(s10) + 3bc0744a: 060d3c23 sd zero,120(s10) + 3bc0744e: 02fd2223 sw a5,36(s10) + 3bc07452: 419987b3 sub a5,s3,s9 + 3bc07456: 470d li a4,3 + 3bc07458: 00f77b63 bgeu a4,a5,3bc0746e + 3bc0745c: 024d2703 lw a4,36(s10) + 3bc07460: 4791 li a5,4 + 3bc07462: 004c8413 addi s0,s9,4 + 3bc07466: 04f71e63 bne a4,a5,3bc074c2 + 3bc0746a: 8ca2 mv s9,s0 + 3bc0746c: a031 j 3bc07478 + 3bc0746e: 4791 li a5,4 + 3bc07470: 040d3423 sd zero,72(s10) + 3bc07474: 02fd2223 sw a5,36(s10) + 3bc07478: 048d3683 ld a3,72(s10) + 3bc0747c: 4711 li a4,4 + 3bc0747e: 040d3503 ld a0,64(s10) + 3bc07482: 40d705b3 sub a1,a4,a3 + 3bc07486: 41998633 sub a2,s3,s9 + 3bc0748a: 00c5b7b3 sltu a5,a1,a2 + 3bc0748e: 0017c793 xori a5,a5,1 + 3bc07492: 40f5960b mveqz a2,a1,a5 + 3bc07496: 9536 add a0,a0,a3 + 3bc07498: 85e6 mv a1,s9 + 3bc0749a: f832 sd a2,48(sp) + 3bc0749c: dd0f90ef jal ra,3bc00a6c + 3bc074a0: 048d3783 ld a5,72(s10) + 3bc074a4: 7642 ld a2,48(sp) + 3bc074a6: 00cc8433 add s0,s9,a2 + 3bc074aa: 963e add a2,a2,a5 + 3bc074ac: 04cd3423 sd a2,72(s10) + 3bc074b0: 478d li a5,3 + 3bc074b2: 00c7e663 bltu a5,a2,3bc074be + 3bc074b6: 4711 li a4,4 + 3bc074b8: 40c704b3 sub s1,a4,a2 + 3bc074bc: b5ed j 3bc073a6 + 3bc074be: 040d3c83 ld s9,64(s10) + 3bc074c2: 8566 mv a0,s9 + 3bc074c4: f8ffe0ef jal ra,3bc06452 + 3bc074c8: 2501 sext.w a0,a0 + 3bc074ca: 47a9 li a5,10 + 3bc074cc: c50d beqz a0,3bc074f6 + 3bc074ce: 030d3683 ld a3,48(s10) + 3bc074d2: 7805378b extu a5,a0,30,0 + 3bc074d6: 7c07b70b extu a4,a5,31,0 + 3bc074da: 4ef6ee63 bltu a3,a5,3bc079d6 + 3bc074de: 01cd2783 lw a5,28(s10) + 3bc074e2: 00055d63 bgez a0,3bc074fc + 3bc074e6: 04ed3823 sd a4,80(s10) + 3bc074ea: c789 beqz a5,3bc074f4 + 3bc074ec: 7502 ld a0,32(sp) + 3bc074ee: 4581 li a1,0 + 3bc074f0: 23d000ef jal ra,3bc07f2c + 3bc074f4: 4795 li a5,5 + 3bc074f6: 02fd2223 sw a5,36(s10) + 3bc074fa: bd99 j 3bc07350 + 3bc074fc: 02079693 slli a3,a5,0x20 + 3bc07500: 01e6d793 srli a5,a3,0x1e + 3bc07504: 97ba add a5,a5,a4 + 3bc07506: 471d li a4,7 + 3bc07508: 04fd3823 sd a5,80(s10) + 3bc0750c: 02ed2223 sw a4,36(s10) + 3bc07510: 01690463 beq s2,s6,3bc07518 + 3bc07514: e3341ee3 bne s0,s3,3bc07350 + 3bc07518: 00478493 addi s1,a5,4 + 3bc0751c: b569 j 3bc073a6 + 3bc0751e: 4601 li a2,0 + 3bc07520: 06090e63 beqz s2,3bc0759c + 3bc07524: 41998733 sub a4,s3,s9 + 3bc07528: 412b0633 sub a2,s6,s2 + 3bc0752c: 00c737b3 sltu a5,a4,a2 + 3bc07530: 0017c793 xori a5,a5,1 + 3bc07534: 40f7160b mveqz a2,a4,a5 + 3bc07538: 050d3703 ld a4,80(s10) + 3bc0753c: 85e6 mv a1,s9 + 3bc0753e: 854a mv a0,s2 + 3bc07540: 00c737b3 sltu a5,a4,a2 + 3bc07544: 0017c793 xori a5,a5,1 + 3bc07548: 40f7160b mveqz a2,a4,a5 + 3bc0754c: f832 sd a2,48(sp) + 3bc0754e: d1ef90ef jal ra,3bc00a6c + 3bc07552: 01cd2783 lw a5,28(s10) + 3bc07556: 7642 ld a2,48(sp) + 3bc07558: c791 beqz a5,3bc07564 + 3bc0755a: 7502 ld a0,32(sp) + 3bc0755c: 85e6 mv a1,s9 + 3bc0755e: 225000ef jal ra,3bc07f82 + 3bc07562: 7642 ld a2,48(sp) + 3bc07564: 008d2783 lw a5,8(s10) + 3bc07568: c799 beqz a5,3bc07576 + 3bc0756a: 85e6 mv a1,s9 + 3bc0756c: 8562 mv a0,s8 + 3bc0756e: f832 sd a2,48(sp) + 3bc07570: 213000ef jal ra,3bc07f82 + 3bc07574: 7642 ld a2,48(sp) + 3bc07576: 010d3783 ld a5,16(s10) + 3bc0757a: c791 beqz a5,3bc07586 + 3bc0757c: 028d3783 ld a5,40(s10) + 3bc07580: 8f91 sub a5,a5,a2 + 3bc07582: 02fd3423 sd a5,40(s10) + 3bc07586: 004d2783 lw a5,4(s10) + 3bc0758a: eb89 bnez a5,3bc0759c + 3bc0758c: 4701 li a4,0 + 3bc0758e: 86d6 mv a3,s5 + 3bc07590: 85ca mv a1,s2 + 3bc07592: 856a mv a0,s10 + 3bc07594: f832 sd a2,48(sp) + 3bc07596: 956ff0ef jal ra,3bc066ec + 3bc0759a: 7642 ld a2,48(sp) + 3bc0759c: 050d3783 ld a5,80(s10) + 3bc075a0: 01cd2703 lw a4,28(s10) + 3bc075a4: 00cc8433 add s0,s9,a2 + 3bc075a8: 9932 add s2,s2,a2 + 3bc075aa: 00c79863 bne a5,a2,3bc075ba + 3bc075ae: 28070d63 beqz a4,3bc07848 + 3bc075b2: 040d3423 sd zero,72(s10) + 3bc075b6: 4799 li a5,6 + 3bc075b8: bf3d j 3bc074f6 + 3bc075ba: 40c78633 sub a2,a5,a2 + 3bc075be: 04cd3823 sd a2,80(s10) + 3bc075c2: 00e03733 snez a4,a4 + 3bc075c6: 0611 addi a2,a2,4 + 3bc075c8: 04e6148b addsl s1,a2,a4,2 + 3bc075cc: bbe9 j 3bc073a6 + 3bc075ce: 419987b3 sub a5,s3,s9 + 3bc075d2: 470d li a4,3 + 3bc075d4: 048d3503 ld a0,72(s10) + 3bc075d8: 02f75363 bge a4,a5,3bc075fe + 3bc075dc: e10d bnez a0,3bc075fe + 3bc075de: 004c8413 addi s0,s9,4 + 3bc075e2: 8766 mv a4,s9 + 3bc075e4: 853a mv a0,a4 + 3bc075e6: e6dfe0ef jal ra,3bc06452 + 3bc075ea: 00050c9b sext.w s9,a0 + 3bc075ee: 7502 ld a0,32(sp) + 3bc075f0: 365000ef jal ra,3bc08154 + 3bc075f4: 2501 sext.w a0,a0 + 3bc075f6: 24ac8963 beq s9,a0,3bc07848 + 3bc075fa: 5565 li a0,-7 + 3bc075fc: bb75 j 3bc073b8 + 3bc075fe: 4411 li s0,4 + 3bc07600: 8c09 sub s0,s0,a0 + 3bc07602: 0087b733 sltu a4,a5,s0 + 3bc07606: 00174713 xori a4,a4,1 + 3bc0760a: 40e7940b mveqz s0,a5,a4 + 3bc0760e: 8622 mv a2,s0 + 3bc07610: 85e6 mv a1,s9 + 3bc07612: 955e add a0,a0,s7 + 3bc07614: f85e sd s7,48(sp) + 3bc07616: c56f90ef jal ra,3bc00a6c + 3bc0761a: 048d3783 ld a5,72(s10) + 3bc0761e: 468d li a3,3 + 3bc07620: 7742 ld a4,48(sp) + 3bc07622: 97a2 add a5,a5,s0 + 3bc07624: 04fd3423 sd a5,72(s10) + 3bc07628: 9466 add s0,s0,s9 + 3bc0762a: d6f6fee3 bgeu a3,a5,3bc073a6 + 3bc0762e: bf5d j 3bc075e4 + 3bc07630: 050d3403 ld s0,80(s10) + 3bc07634: 419987b3 sub a5,s3,s9 + 3bc07638: 0087f963 bgeu a5,s0,3bc0764a + 3bc0763c: 47a1 li a5,8 + 3bc0763e: 040d3423 sd zero,72(s10) + 3bc07642: 02fd2223 sw a5,36(s10) + 3bc07646: 8466 mv s0,s9 + 3bc07648: b321 j 3bc07350 + 3bc0764a: 9466 add s0,s0,s9 + 3bc0764c: 01cd2783 lw a5,28(s10) + 3bc07650: 16079563 bnez a5,3bc077ba + 3bc07654: 030d3683 ld a3,48(s10) + 3bc07658: 412b0633 sub a2,s6,s2 + 3bc0765c: 060d3703 ld a4,96(s10) + 3bc07660: 068d3783 ld a5,104(s10) + 3bc07664: 18d67263 bgeu a2,a3,3bc077e8 + 3bc07668: 004d2683 lw a3,4(s10) + 3bc0766c: ea95 bnez a3,3bc076a0 + 3bc0766e: 058d3683 ld a3,88(s10) + 3bc07672: 1cd71d63 bne a4,a3,3bc0784c + 3bc07676: 000206b7 lui a3,0x20 + 3bc0767a: 00f6fc63 bgeu a3,a5,3bc07692 + 3bc0767e: 75c1 lui a1,0xffff0 + 3bc07680: 95be add a1,a1,a5 + 3bc07682: 6641 lui a2,0x10 + 3bc07684: 95ba add a1,a1,a4 + 3bc07686: 853a mv a0,a4 + 3bc07688: be4f90ef jal ra,3bc00a6c + 3bc0768c: 67c1 lui a5,0x10 + 3bc0768e: 06fd3423 sd a5,104(s10) + 3bc07692: 058d3783 ld a5,88(s10) + 3bc07696: 068d3703 ld a4,104(s10) + 3bc0769a: 97ba add a5,a5,a4 + 3bc0769c: 06fd3823 sd a5,112(s10) + 3bc076a0: 060d3703 ld a4,96(s10) + 3bc076a4: 068d3783 ld a5,104(s10) + 3bc076a8: cb09 beqz a4,3bc076ba + 3bc076aa: 400006b7 lui a3,0x40000 + 3bc076ae: 00f6f663 bgeu a3,a5,3bc076ba + 3bc076b2: 76c1 lui a3,0xffff0 + 3bc076b4: 97b6 add a5,a5,a3 + 3bc076b6: 973e add a4,a4,a5 + 3bc076b8: 67c1 lui a5,0x10 + 3bc076ba: 030d2683 lw a3,48(s10) + 3bc076be: 050d2603 lw a2,80(s10) + 3bc076c2: 070d3583 ld a1,112(s10) + 3bc076c6: 8566 mv a0,s9 + 3bc076c8: 2781 sext.w a5,a5 + 3bc076ca: 921ff0ef jal ra,3bc06fea + 3bc076ce: 8caa mv s9,a0 + 3bc076d0: 30054763 bltz a0,3bc079de + 3bc076d4: 008d2783 lw a5,8(s10) + 3bc076d8: c799 beqz a5,3bc076e6 + 3bc076da: 070d3583 ld a1,112(s10) + 3bc076de: 862a mv a2,a0 + 3bc076e0: 8562 mv a0,s8 + 3bc076e2: 0a1000ef jal ra,3bc07f82 + 3bc076e6: 010d3783 ld a5,16(s10) + 3bc076ea: c799 beqz a5,3bc076f8 + 3bc076ec: 028d3783 ld a5,40(s10) + 3bc076f0: 419787b3 sub a5,a5,s9 + 3bc076f4: 02fd3423 sd a5,40(s10) + 3bc076f8: 47a5 li a5,9 + 3bc076fa: 079d3c23 sd s9,120(s10) + 3bc076fe: 080d3023 sd zero,128(s10) + 3bc07702: 02fd2223 sw a5,36(s10) + 3bc07706: 04090763 beqz s2,3bc07754 + 3bc0770a: 080d3703 ld a4,128(s10) + 3bc0770e: 078d3603 ld a2,120(s10) + 3bc07712: 412b06b3 sub a3,s6,s2 + 3bc07716: 070d3583 ld a1,112(s10) + 3bc0771a: 8e19 sub a2,a2,a4 + 3bc0771c: 00c6b7b3 sltu a5,a3,a2 + 3bc07720: 0017c793 xori a5,a5,1 + 3bc07724: 42f6168b mvnez a3,a2,a5 + 3bc07728: 8636 mv a2,a3 + 3bc0772a: 95ba add a1,a1,a4 + 3bc0772c: 854a mv a0,s2 + 3bc0772e: 8cb6 mv s9,a3 + 3bc07730: b3cf90ef jal ra,3bc00a6c + 3bc07734: 004d2783 lw a5,4(s10) + 3bc07738: eb81 bnez a5,3bc07748 + 3bc0773a: 4705 li a4,1 + 3bc0773c: 86d6 mv a3,s5 + 3bc0773e: 8666 mv a2,s9 + 3bc07740: 85ca mv a1,s2 + 3bc07742: 856a mv a0,s10 + 3bc07744: fa9fe0ef jal ra,3bc066ec + 3bc07748: 080d3783 ld a5,128(s10) + 3bc0774c: 9966 add s2,s2,s9 + 3bc0774e: 97e6 add a5,a5,s9 + 3bc07750: 08fd3023 sd a5,128(s10) + 3bc07754: 080d3703 ld a4,128(s10) + 3bc07758: 078d3783 ld a5,120(s10) + 3bc0775c: 0ef70663 beq a4,a5,3bc07848 + 3bc07760: 4491 li s1,4 + 3bc07762: b191 j 3bc073a6 + 3bc07764: 048d3703 ld a4,72(s10) + 3bc07768: 050d3403 ld s0,80(s10) + 3bc0776c: 41998633 sub a2,s3,s9 + 3bc07770: 040d3503 ld a0,64(s10) + 3bc07774: 8c19 sub s0,s0,a4 + 3bc07776: 008637b3 sltu a5,a2,s0 + 3bc0777a: 0017c793 xori a5,a5,1 + 3bc0777e: 40f6140b mveqz s0,a2,a5 + 3bc07782: 8622 mv a2,s0 + 3bc07784: 953a add a0,a0,a4 + 3bc07786: 85e6 mv a1,s9 + 3bc07788: ae4f90ef jal ra,3bc00a6c + 3bc0778c: 048d3783 ld a5,72(s10) + 3bc07790: 00f40733 add a4,s0,a5 + 3bc07794: 050d3783 ld a5,80(s10) + 3bc07798: 04ed3423 sd a4,72(s10) + 3bc0779c: 9466 add s0,s0,s9 + 3bc0779e: 00f77b63 bgeu a4,a5,3bc077b4 + 3bc077a2: 01cd2483 lw s1,28(s10) + 3bc077a6: 0791 addi a5,a5,4 + 3bc077a8: 8f99 sub a5,a5,a4 + 3bc077aa: 009034b3 snez s1,s1 + 3bc077ae: 0497948b addsl s1,a5,s1,2 + 3bc077b2: bed5 j 3bc073a6 + 3bc077b4: 040d3c83 ld s9,64(s10) + 3bc077b8: bd51 j 3bc0764c + 3bc077ba: 050d3583 ld a1,80(s10) + 3bc077be: 15f1 addi a1,a1,-4 + 3bc077c0: 04bd3823 sd a1,80(s10) + 3bc077c4: 00bc8533 add a0,s9,a1 + 3bc077c8: fc2e sd a1,56(sp) + 3bc077ca: c89fe0ef jal ra,3bc06452 + 3bc077ce: 75e2 ld a1,56(sp) + 3bc077d0: 0005079b sext.w a5,a0 + 3bc077d4: 4601 li a2,0 + 3bc077d6: 8566 mv a0,s9 + 3bc077d8: f83e sd a5,48(sp) + 3bc077da: 58c000ef jal ra,3bc07d66 + 3bc077de: 77c2 ld a5,48(sp) + 3bc077e0: 2501 sext.w a0,a0 + 3bc077e2: e6a789e3 beq a5,a0,3bc07654 + 3bc077e6: bd11 j 3bc075fa + 3bc077e8: cb09 beqz a4,3bc077fa + 3bc077ea: 40000637 lui a2,0x40000 + 3bc077ee: 00f67663 bgeu a2,a5,3bc077fa + 3bc077f2: 75c1 lui a1,0xffff0 + 3bc077f4: 97ae add a5,a5,a1 + 3bc077f6: 973e add a4,a4,a5 + 3bc077f8: 67c1 lui a5,0x10 + 3bc077fa: 050d2603 lw a2,80(s10) + 3bc077fe: 8566 mv a0,s9 + 3bc07800: 2781 sext.w a5,a5 + 3bc07802: 2681 sext.w a3,a3 + 3bc07804: 85ca mv a1,s2 + 3bc07806: fe4ff0ef jal ra,3bc06fea + 3bc0780a: 8caa mv s9,a0 + 3bc0780c: 1c054763 bltz a0,3bc079da + 3bc07810: 008d2783 lw a5,8(s10) + 3bc07814: c791 beqz a5,3bc07820 + 3bc07816: 862a mv a2,a0 + 3bc07818: 85ca mv a1,s2 + 3bc0781a: 8562 mv a0,s8 + 3bc0781c: 766000ef jal ra,3bc07f82 + 3bc07820: 010d3783 ld a5,16(s10) + 3bc07824: c799 beqz a5,3bc07832 + 3bc07826: 028d3783 ld a5,40(s10) + 3bc0782a: 419787b3 sub a5,a5,s9 + 3bc0782e: 02fd3423 sd a5,40(s10) + 3bc07832: 004d2783 lw a5,4(s10) + 3bc07836: eb81 bnez a5,3bc07846 + 3bc07838: 4701 li a4,0 + 3bc0783a: 86d6 mv a3,s5 + 3bc0783c: 8666 mv a2,s9 + 3bc0783e: 85ca mv a1,s2 + 3bc07840: 856a mv a0,s10 + 3bc07842: eabfe0ef jal ra,3bc066ec + 3bc07846: 9966 add s2,s2,s9 + 3bc07848: 478d li a5,3 + 3bc0784a: b175 j 3bc074f6 + 3bc0784c: 6741 lui a4,0x10 + 3bc0784e: 00f77363 bgeu a4,a5,3bc07854 + 3bc07852: 67c1 lui a5,0x10 + 3bc07854: 97b6 add a5,a5,a3 + 3bc07856: b599 j 3bc0769c + 3bc07858: 8466 mv s0,s9 + 3bc0785a: b575 j 3bc07706 + 3bc0785c: 028d3483 ld s1,40(s10) + 3bc07860: 18049163 bnez s1,3bc079e2 + 3bc07864: 008d2a03 lw s4,8(s10) + 3bc07868: 000a1963 bnez s4,3bc0787a + 3bc0786c: 020d2223 sw zero,36(s10) + 3bc07870: 060d3023 sd zero,96(s10) + 3bc07874: 060d3423 sd zero,104(s10) + 3bc07878: b3f9 j 3bc07646 + 3bc0787a: 419987b3 sub a5,s3,s9 + 3bc0787e: 470d li a4,3 + 3bc07880: 04f74a63 blt a4,a5,3bc078d4 + 3bc07884: 47ad li a5,11 + 3bc07886: 040d3423 sd zero,72(s10) + 3bc0788a: 02fd2223 sw a5,36(s10) + 3bc0788e: 048d3703 ld a4,72(s10) + 3bc07892: 4491 li s1,4 + 3bc07894: 41998a33 sub s4,s3,s9 + 3bc07898: 40e48633 sub a2,s1,a4 + 3bc0789c: 014637b3 sltu a5,a2,s4 + 3bc078a0: 040d3503 ld a0,64(s10) + 3bc078a4: 0017c793 xori a5,a5,1 + 3bc078a8: 40f61a0b mveqz s4,a2,a5 + 3bc078ac: 8652 mv a2,s4 + 3bc078ae: 85e6 mv a1,s9 + 3bc078b0: 953a add a0,a0,a4 + 3bc078b2: 9baf90ef jal ra,3bc00a6c + 3bc078b6: 048d3603 ld a2,72(s10) + 3bc078ba: 014c8433 add s0,s9,s4 + 3bc078be: 478d li a5,3 + 3bc078c0: 9a32 add s4,s4,a2 + 3bc078c2: 054d3423 sd s4,72(s10) + 3bc078c6: 414484b3 sub s1,s1,s4 + 3bc078ca: ad47fee3 bgeu a5,s4,3bc073a6 + 3bc078ce: 040d3c83 ld s9,64(s10) + 3bc078d2: a019 j 3bc078d8 + 3bc078d4: 004c8413 addi s0,s9,4 + 3bc078d8: 8566 mv a0,s9 + 3bc078da: b79fe0ef jal ra,3bc06452 + 3bc078de: 0005049b sext.w s1,a0 + 3bc078e2: 8562 mv a0,s8 + 3bc078e4: 071000ef jal ra,3bc08154 + 3bc078e8: 2501 sext.w a0,a0 + 3bc078ea: 0ea49e63 bne s1,a0,3bc079e6 + 3bc078ee: 020d2223 sw zero,36(s10) + 3bc078f2: 060d3023 sd zero,96(s10) + 3bc078f6: 060d3423 sd zero,104(s10) + 3bc078fa: 4481 li s1,0 + 3bc078fc: b46d j 3bc073a6 + 3bc078fe: 419987b3 sub a5,s3,s9 + 3bc07902: 470d li a4,3 + 3bc07904: 004c8413 addi s0,s9,4 + 3bc07908: 04f74d63 blt a4,a5,3bc07962 + 3bc0790c: 4791 li a5,4 + 3bc0790e: 04fd3423 sd a5,72(s10) + 3bc07912: 47a1 li a5,8 + 3bc07914: 04fd3823 sd a5,80(s10) + 3bc07918: 47b5 li a5,13 + 3bc0791a: 02fd2223 sw a5,36(s10) + 3bc0791e: 048d3503 ld a0,72(s10) + 3bc07922: 050d3603 ld a2,80(s10) + 3bc07926: 41998733 sub a4,s3,s9 + 3bc0792a: 85e6 mv a1,s9 + 3bc0792c: 8e09 sub a2,a2,a0 + 3bc0792e: 00c737b3 sltu a5,a4,a2 + 3bc07932: 0017c793 xori a5,a5,1 + 3bc07936: 40f7160b mveqz a2,a4,a5 + 3bc0793a: 955e add a0,a0,s7 + 3bc0793c: f832 sd a2,48(sp) + 3bc0793e: 92ef90ef jal ra,3bc00a6c + 3bc07942: 048d3783 ld a5,72(s10) + 3bc07946: 7642 ld a2,48(sp) + 3bc07948: 00cc8433 add s0,s9,a2 + 3bc0794c: 963e add a2,a2,a5 + 3bc0794e: 050d3783 ld a5,80(s10) + 3bc07952: 04cd3423 sd a2,72(s10) + 3bc07956: 00f67563 bgeu a2,a5,3bc07960 + 3bc0795a: 40c784b3 sub s1,a5,a2 + 3bc0795e: b4a1 j 3bc073a6 + 3bc07960: 7ca2 ld s9,40(sp) + 3bc07962: 8566 mv a0,s9 + 3bc07964: aeffe0ef jal ra,3bc06452 + 3bc07968: 7c05350b extu a0,a0,31,0 + 3bc0796c: 00ad3823 sd a0,16(s10) + 3bc07970: 04ad3823 sd a0,80(s10) + 3bc07974: 47b9 li a5,14 + 3bc07976: b641 j 3bc074f6 + 3bc07978: 050d3483 ld s1,80(s10) + 3bc0797c: 41998633 sub a2,s3,s9 + 3bc07980: 4a01 li s4,0 + 3bc07982: 00c4b7b3 sltu a5,s1,a2 + 3bc07986: 0017c793 xori a5,a5,1 + 3bc0798a: 40f4960b mveqz a2,s1,a5 + 3bc0798e: 8c91 sub s1,s1,a2 + 3bc07990: 049d3823 sd s1,80(s10) + 3bc07994: 00cc8433 add s0,s9,a2 + 3bc07998: 9a049ce3 bnez s1,3bc07350 + 3bc0799c: 020d2223 sw zero,36(s10) + 3bc079a0: 060d3023 sd zero,96(s10) + 3bc079a4: 060d3423 sd zero,104(s10) + 3bc079a8: b265 j 3bc07350 + 3bc079aa: 6741 lui a4,0x10 + 3bc079ac: 843e mv s0,a5 + 3bc079ae: 00f77363 bgeu a4,a5,3bc079b4 + 3bc079b2: 6441 lui s0,0x10 + 3bc079b4: 8f81 sub a5,a5,s0 + 3bc079b6: 95be add a1,a1,a5 + 3bc079b8: 8622 mv a2,s0 + 3bc079ba: 8b2f90ef jal ra,3bc00a6c + 3bc079be: 058d3783 ld a5,88(s10) + 3bc079c2: 068d3423 sd s0,104(s10) + 3bc079c6: 06fd3023 sd a5,96(s10) + 3bc079ca: 97a2 add a5,a5,s0 + 3bc079cc: 06fd3823 sd a5,112(s10) + 3bc079d0: b23d j 3bc072fe + 3bc079d2: 451d li a0,7 + 3bc079d4: b2d5 j 3bc073b8 + 3bc079d6: 5579 li a0,-2 + 3bc079d8: b2c5 j 3bc073b8 + 3bc079da: 557d li a0,-1 + 3bc079dc: baf1 j 3bc073b8 + 3bc079de: 5541 li a0,-16 + 3bc079e0: bae1 j 3bc073b8 + 3bc079e2: 5549 li a0,-14 + 3bc079e4: bad1 j 3bc073b8 + 3bc079e6: 5539 li a0,-18 + 3bc079e8: bac1 j 3bc073b8 + +000000003bc079ea : + 3bc079ea: 00f5579b srliw a5,a0,0xf + 3bc079ee: 8d3d xor a0,a0,a5 + 3bc079f0: 85ebd7b7 lui a5,0x85ebd + 3bc079f4: a777879b addiw a5,a5,-1417 + 3bc079f8: 02a7853b mulw a0,a5,a0 + 3bc079fc: 00d5579b srliw a5,a0,0xd + 3bc07a00: 8fa9 xor a5,a5,a0 + 3bc07a02: c2b2b537 lui a0,0xc2b2b + 3bc07a06: e3d5051b addiw a0,a0,-451 + 3bc07a0a: 02a787bb mulw a5,a5,a0 + 3bc07a0e: 0107d51b srliw a0,a5,0x10 + 3bc07a12: 8d3d xor a0,a0,a5 + 3bc07a14: 8082 ret + +000000003bc07a16 : + 3bc07a16: 1101 addi sp,sp,-32 + 3bc07a18: 85aa mv a1,a0 + 3bc07a1a: 4611 li a2,4 + 3bc07a1c: 0068 addi a0,sp,12 + 3bc07a1e: ec06 sd ra,24(sp) + 3bc07a20: 84cf90ef jal ra,3bc00a6c + 3bc07a24: 60e2 ld ra,24(sp) + 3bc07a26: 4532 lw a0,12(sp) + 3bc07a28: 6105 addi sp,sp,32 + 3bc07a2a: 8082 ret + +000000003bc07a2c : + 3bc07a2c: 1101 addi sp,sp,-32 + 3bc07a2e: 8a3d andi a2,a2,15 + 3bc07a30: e822 sd s0,16(sp) + 3bc07a32: ec06 sd ra,24(sp) + 3bc07a34: e426 sd s1,8(sp) + 3bc07a36: e04a sd s2,0(sp) + 3bc07a38: 167d addi a2,a2,-1 + 3bc07a3a: 47b9 li a5,14 + 3bc07a3c: 842a mv s0,a0 + 3bc07a3e: 30c7ec63 bltu a5,a2,3bc07d56 + 3bc07a42: 00003717 auipc a4,0x3 + 3bc07a46: 77670713 addi a4,a4,1910 # 3bc0b1b8 + 3bc07a4a: 44c7478b lrw a5,a4,a2,2 + 3bc07a4e: 84ae mv s1,a1 + 3bc07a50: 8936 mv s2,a3 + 3bc07a52: 97ba add a5,a5,a4 + 3bc07a54: 8782 jr a5 + 3bc07a56: 4785 li a5,1 + 3bc07a58: 08f69a63 bne a3,a5,3bc07aec + 3bc07a5c: 852e mv a0,a1 + 3bc07a5e: fb9ff0ef jal ra,3bc07a16 + 3bc07a62: 0005079b sext.w a5,a0 + 3bc07a66: c2b2b737 lui a4,0xc2b2b + 3bc07a6a: e3d7071b addiw a4,a4,-451 + 3bc07a6e: 24f7140b mulaw s0,a4,a5 + 3bc07a72: 27d4f7b7 lui a5,0x27d4f + 3bc07a76: b2f7879b addiw a5,a5,-1233 + 3bc07a7a: 0491 addi s1,s1,4 + 3bc07a7c: 14f4140b srriw s0,s0,15 + 3bc07a80: 02f4043b mulw s0,s0,a5 + 3bc07a84: 4785 li a5,1 + 3bc07a86: 06f91563 bne s2,a5,3bc07af0 + 3bc07a8a: 8526 mv a0,s1 + 3bc07a8c: f8bff0ef jal ra,3bc07a16 + 3bc07a90: 0005079b sext.w a5,a0 + 3bc07a94: c2b2b737 lui a4,0xc2b2b + 3bc07a98: e3d7071b addiw a4,a4,-451 + 3bc07a9c: 0491 addi s1,s1,4 + 3bc07a9e: 24f7140b mulaw s0,a4,a5 + 3bc07aa2: 27d4f7b7 lui a5,0x27d4f + 3bc07aa6: b2f7879b addiw a5,a5,-1233 + 3bc07aaa: 14f4140b srriw s0,s0,15 + 3bc07aae: 02f4043b mulw s0,s0,a5 + 3bc07ab2: 4785 li a5,1 + 3bc07ab4: 04f91063 bne s2,a5,3bc07af4 + 3bc07ab8: 8526 mv a0,s1 + 3bc07aba: f5dff0ef jal ra,3bc07a16 + 3bc07abe: 0005079b sext.w a5,a0 + 3bc07ac2: c2b2b737 lui a4,0xc2b2b + 3bc07ac6: e3d7071b addiw a4,a4,-451 + 3bc07aca: 24f7140b mulaw s0,a4,a5 + 3bc07ace: 27d4f7b7 lui a5,0x27d4f + 3bc07ad2: b2f7879b addiw a5,a5,-1233 + 3bc07ad6: 14f4150b srriw a0,s0,15 + 3bc07ada: 02a7853b mulw a0,a5,a0 + 3bc07ade: 6442 ld s0,16(sp) + 3bc07ae0: 60e2 ld ra,24(sp) + 3bc07ae2: 64a2 ld s1,8(sp) + 3bc07ae4: 6902 ld s2,0(sp) + 3bc07ae6: 6105 addi sp,sp,32 + 3bc07ae8: f03ff06f j 3bc079ea + 3bc07aec: 419c lw a5,0(a1) + 3bc07aee: bfa5 j 3bc07a66 + 3bc07af0: 409c lw a5,0(s1) + 3bc07af2: b74d j 3bc07a94 + 3bc07af4: 409c lw a5,0(s1) + 3bc07af6: b7f1 j 3bc07ac2 + 3bc07af8: 4785 li a5,1 + 3bc07afa: 0af69263 bne a3,a5,3bc07b9e + 3bc07afe: 852e mv a0,a1 + 3bc07b00: f17ff0ef jal ra,3bc07a16 + 3bc07b04: 0005079b sext.w a5,a0 + 3bc07b08: c2b2b737 lui a4,0xc2b2b + 3bc07b0c: e3d7071b addiw a4,a4,-451 + 3bc07b10: 24f7140b mulaw s0,a4,a5 + 3bc07b14: 27d4f7b7 lui a5,0x27d4f + 3bc07b18: b2f7879b addiw a5,a5,-1233 + 3bc07b1c: 0491 addi s1,s1,4 + 3bc07b1e: 14f4140b srriw s0,s0,15 + 3bc07b22: 02f4043b mulw s0,s0,a5 + 3bc07b26: 4785 li a5,1 + 3bc07b28: 06f91d63 bne s2,a5,3bc07ba2 + 3bc07b2c: 8526 mv a0,s1 + 3bc07b2e: ee9ff0ef jal ra,3bc07a16 + 3bc07b32: 0005079b sext.w a5,a0 + 3bc07b36: c2b2b737 lui a4,0xc2b2b + 3bc07b3a: e3d7071b addiw a4,a4,-451 + 3bc07b3e: 0491 addi s1,s1,4 + 3bc07b40: 24f7140b mulaw s0,a4,a5 + 3bc07b44: 27d4f7b7 lui a5,0x27d4f + 3bc07b48: b2f7879b addiw a5,a5,-1233 + 3bc07b4c: 14f4140b srriw s0,s0,15 + 3bc07b50: 02f4043b mulw s0,s0,a5 + 3bc07b54: 4785 li a5,1 + 3bc07b56: 04f91863 bne s2,a5,3bc07ba6 + 3bc07b5a: 8526 mv a0,s1 + 3bc07b5c: ebbff0ef jal ra,3bc07a16 + 3bc07b60: 0005079b sext.w a5,a0 + 3bc07b64: c2b2b737 lui a4,0xc2b2b + 3bc07b68: e3d7071b addiw a4,a4,-451 + 3bc07b6c: 16566537 lui a0,0x16566 + 3bc07b70: 7b15051b addiw a0,a0,1969 + 3bc07b74: 24f7140b mulaw s0,a4,a5 + 3bc07b78: 0044c783 lbu a5,4(s1) + 3bc07b7c: 27d4f737 lui a4,0x27d4f + 3bc07b80: b2f7071b addiw a4,a4,-1233 + 3bc07b84: 02a787bb mulw a5,a5,a0 + 3bc07b88: 14f4140b srriw s0,s0,15 + 3bc07b8c: 9e378537 lui a0,0x9e378 + 3bc07b90: 9b15051b addiw a0,a0,-1615 + 3bc07b94: 24e4178b mulaw a5,s0,a4 + 3bc07b98: 1557978b srriw a5,a5,21 + 3bc07b9c: bf3d j 3bc07ada + 3bc07b9e: 419c lw a5,0(a1) + 3bc07ba0: b7a5 j 3bc07b08 + 3bc07ba2: 409c lw a5,0(s1) + 3bc07ba4: bf49 j 3bc07b36 + 3bc07ba6: 409c lw a5,0(s1) + 3bc07ba8: bf75 j 3bc07b64 + 3bc07baa: 4785 li a5,1 + 3bc07bac: 0af69a63 bne a3,a5,3bc07c60 + 3bc07bb0: 852e mv a0,a1 + 3bc07bb2: e65ff0ef jal ra,3bc07a16 + 3bc07bb6: 0005079b sext.w a5,a0 + 3bc07bba: c2b2b737 lui a4,0xc2b2b + 3bc07bbe: e3d7071b addiw a4,a4,-451 + 3bc07bc2: 24f7140b mulaw s0,a4,a5 + 3bc07bc6: 27d4f7b7 lui a5,0x27d4f + 3bc07bca: b2f7879b addiw a5,a5,-1233 + 3bc07bce: 0491 addi s1,s1,4 + 3bc07bd0: 14f4140b srriw s0,s0,15 + 3bc07bd4: 02f4043b mulw s0,s0,a5 + 3bc07bd8: 4785 li a5,1 + 3bc07bda: 08f91563 bne s2,a5,3bc07c64 + 3bc07bde: 8526 mv a0,s1 + 3bc07be0: e37ff0ef jal ra,3bc07a16 + 3bc07be4: 0005079b sext.w a5,a0 + 3bc07be8: c2b2b737 lui a4,0xc2b2b + 3bc07bec: e3d7071b addiw a4,a4,-451 + 3bc07bf0: 0491 addi s1,s1,4 + 3bc07bf2: 24f7140b mulaw s0,a4,a5 + 3bc07bf6: 27d4f7b7 lui a5,0x27d4f + 3bc07bfa: b2f7879b addiw a5,a5,-1233 + 3bc07bfe: 14f4140b srriw s0,s0,15 + 3bc07c02: 02f4043b mulw s0,s0,a5 + 3bc07c06: 4785 li a5,1 + 3bc07c08: 06f91063 bne s2,a5,3bc07c68 + 3bc07c0c: 8526 mv a0,s1 + 3bc07c0e: e09ff0ef jal ra,3bc07a16 + 3bc07c12: 0005079b sext.w a5,a0 + 3bc07c16: c2b2b737 lui a4,0xc2b2b + 3bc07c1a: e3d7071b addiw a4,a4,-451 + 3bc07c1e: 9e378537 lui a0,0x9e378 + 3bc07c22: 9b15051b addiw a0,a0,-1615 + 3bc07c26: 24f7140b mulaw s0,a4,a5 + 3bc07c2a: 0044c703 lbu a4,4(s1) + 3bc07c2e: 165667b7 lui a5,0x16566 + 3bc07c32: 7b17869b addiw a3,a5,1969 + 3bc07c36: 27d4f7b7 lui a5,0x27d4f + 3bc07c3a: b2f7879b addiw a5,a5,-1233 + 3bc07c3e: 02d7073b mulw a4,a4,a3 + 3bc07c42: 14f4140b srriw s0,s0,15 + 3bc07c46: 24f4170b mulaw a4,s0,a5 + 3bc07c4a: 0054c783 lbu a5,5(s1) + 3bc07c4e: 02d787bb mulw a5,a5,a3 + 3bc07c52: 1557170b srriw a4,a4,21 + 3bc07c56: 24a7178b mulaw a5,a4,a0 + 3bc07c5a: 1557978b srriw a5,a5,21 + 3bc07c5e: bdb5 j 3bc07ada + 3bc07c60: 419c lw a5,0(a1) + 3bc07c62: bfa1 j 3bc07bba + 3bc07c64: 409c lw a5,0(s1) + 3bc07c66: b749 j 3bc07be8 + 3bc07c68: 409c lw a5,0(s1) + 3bc07c6a: b775 j 3bc07c16 + 3bc07c6c: 4785 li a5,1 + 3bc07c6e: 0ef69663 bne a3,a5,3bc07d5a + 3bc07c72: 852e mv a0,a1 + 3bc07c74: da3ff0ef jal ra,3bc07a16 + 3bc07c78: 0005079b sext.w a5,a0 + 3bc07c7c: c2b2b737 lui a4,0xc2b2b + 3bc07c80: e3d7071b addiw a4,a4,-451 + 3bc07c84: 24f7140b mulaw s0,a4,a5 + 3bc07c88: 27d4f7b7 lui a5,0x27d4f + 3bc07c8c: b2f7879b addiw a5,a5,-1233 + 3bc07c90: 0491 addi s1,s1,4 + 3bc07c92: 14f4140b srriw s0,s0,15 + 3bc07c96: 02f4043b mulw s0,s0,a5 + 3bc07c9a: 4785 li a5,1 + 3bc07c9c: 0cf91163 bne s2,a5,3bc07d5e + 3bc07ca0: 8526 mv a0,s1 + 3bc07ca2: d75ff0ef jal ra,3bc07a16 + 3bc07ca6: 0005079b sext.w a5,a0 + 3bc07caa: c2b2b737 lui a4,0xc2b2b + 3bc07cae: e3d7071b addiw a4,a4,-451 + 3bc07cb2: 0491 addi s1,s1,4 + 3bc07cb4: 24f7140b mulaw s0,a4,a5 + 3bc07cb8: 27d4f7b7 lui a5,0x27d4f + 3bc07cbc: b2f7879b addiw a5,a5,-1233 + 3bc07cc0: 14f4140b srriw s0,s0,15 + 3bc07cc4: 02f4043b mulw s0,s0,a5 + 3bc07cc8: 4785 li a5,1 + 3bc07cca: 08f91c63 bne s2,a5,3bc07d62 + 3bc07cce: 8526 mv a0,s1 + 3bc07cd0: d47ff0ef jal ra,3bc07a16 + 3bc07cd4: 0005079b sext.w a5,a0 + 3bc07cd8: c2b2b737 lui a4,0xc2b2b + 3bc07cdc: e3d7071b addiw a4,a4,-451 + 3bc07ce0: 0491 addi s1,s1,4 + 3bc07ce2: 24f7140b mulaw s0,a4,a5 + 3bc07ce6: 27d4f7b7 lui a5,0x27d4f + 3bc07cea: b2f7879b addiw a5,a5,-1233 + 3bc07cee: 14f4140b srriw s0,s0,15 + 3bc07cf2: 02f4043b mulw s0,s0,a5 + 3bc07cf6: 9814c70b lbuia a4,(s1),1,0 + 3bc07cfa: 165667b7 lui a5,0x16566 + 3bc07cfe: 7b17879b addiw a5,a5,1969 + 3bc07d02: 24f7140b mulaw s0,a4,a5 + 3bc07d06: 9e3787b7 lui a5,0x9e378 + 3bc07d0a: 9b17879b addiw a5,a5,-1615 + 3bc07d0e: 1554140b srriw s0,s0,21 + 3bc07d12: 02f4043b mulw s0,s0,a5 + 3bc07d16: 9814c70b lbuia a4,(s1),1,0 + 3bc07d1a: 165667b7 lui a5,0x16566 + 3bc07d1e: 7b17879b addiw a5,a5,1969 + 3bc07d22: 24f7140b mulaw s0,a4,a5 + 3bc07d26: 9e3787b7 lui a5,0x9e378 + 3bc07d2a: 9b17879b addiw a5,a5,-1615 + 3bc07d2e: 1554140b srriw s0,s0,21 + 3bc07d32: 02f4043b mulw s0,s0,a5 + 3bc07d36: 0004c703 lbu a4,0(s1) + 3bc07d3a: 165667b7 lui a5,0x16566 + 3bc07d3e: 7b17879b addiw a5,a5,1969 + 3bc07d42: 24f7140b mulaw s0,a4,a5 + 3bc07d46: 9e3787b7 lui a5,0x9e378 + 3bc07d4a: 9b17879b addiw a5,a5,-1615 + 3bc07d4e: 1554140b srriw s0,s0,21 + 3bc07d52: 02f4043b mulw s0,s0,a5 + 3bc07d56: 8522 mv a0,s0 + 3bc07d58: b359 j 3bc07ade + 3bc07d5a: 419c lw a5,0(a1) + 3bc07d5c: b705 j 3bc07c7c + 3bc07d5e: 409c lw a5,0(s1) + 3bc07d60: b7a9 j 3bc07caa + 3bc07d62: 409c lw a5,0(s1) + 3bc07d64: bf95 j 3bc07cd8 + +000000003bc07d66 : + 3bc07d66: 711d addi sp,sp,-96 + 3bc07d68: e8a2 sd s0,80(sp) + 3bc07d6a: e0ca sd s2,64(sp) + 3bc07d6c: fc4e sd s3,56(sp) + 3bc07d6e: ec86 sd ra,88(sp) + 3bc07d70: e4a6 sd s1,72(sp) + 3bc07d72: f852 sd s4,48(sp) + 3bc07d74: f456 sd s5,40(sp) + 3bc07d76: f05a sd s6,32(sp) + 3bc07d78: ec5e sd s7,24(sp) + 3bc07d7a: e862 sd s8,16(sp) + 3bc07d7c: e466 sd s9,8(sp) + 3bc07d7e: 00357793 andi a5,a0,3 + 3bc07d82: 892a mv s2,a0 + 3bc07d84: 89ae mv s3,a1 + 3bc07d86: 8432 mv s0,a2 + 3bc07d88: eff1 bnez a5,3bc07e64 + 3bc07d8a: 47bd li a5,15 + 3bc07d8c: 0cb7f663 bgeu a5,a1,3bc07e58 + 3bc07d90: 242347b7 lui a5,0x24234 + 3bc07d94: ff158813 addi a6,a1,-15 # fffffffffffefff1 <__BL2_END__+0xffffffffc43dcbe1> + 3bc07d98: 4287879b addiw a5,a5,1064 + 3bc07d9c: 982a add a6,a6,a0 + 3bc07d9e: 9fb1 addw a5,a5,a2 + 3bc07da0: 61c88537 lui a0,0x61c88 + 3bc07da4: 85ebd637 lui a2,0x85ebd + 3bc07da8: a776061b addiw a2,a2,-1417 + 3bc07dac: 64f5051b addiw a0,a0,1615 + 3bc07db0: 9e3785b7 lui a1,0x9e378 + 3bc07db4: 0086073b addw a4,a2,s0 + 3bc07db8: 9d21 addw a0,a0,s0 + 3bc07dba: 86ca mv a3,s2 + 3bc07dbc: 9b15859b addiw a1,a1,-1615 + 3bc07dc0: 0006a883 lw a7,0(a3) # ffffffffffff0000 <__BL2_END__+0xffffffffc43dcbf0> + 3bc07dc4: 24c8978b mulaw a5,a7,a2 + 3bc07dc8: 0046a883 lw a7,4(a3) + 3bc07dcc: 24c8970b mulaw a4,a7,a2 + 3bc07dd0: 0086a883 lw a7,8(a3) + 3bc07dd4: 1537978b srriw a5,a5,19 + 3bc07dd8: 24c8940b mulaw s0,a7,a2 + 3bc07ddc: 00c6a883 lw a7,12(a3) + 3bc07de0: 1537170b srriw a4,a4,19 + 3bc07de4: 06c1 addi a3,a3,16 + 3bc07de6: 24c8950b mulaw a0,a7,a2 + 3bc07dea: 1534140b srriw s0,s0,19 + 3bc07dee: 1535150b srriw a0,a0,19 + 3bc07df2: 02b787bb mulw a5,a5,a1 + 3bc07df6: 02b7073b mulw a4,a4,a1 + 3bc07dfa: 02b4043b mulw s0,s0,a1 + 3bc07dfe: 02b5053b mulw a0,a0,a1 + 3bc07e02: fb06efe3 bltu a3,a6,3bc07dc0 + 3bc07e06: 00190593 addi a1,s2,1 + 3bc07e0a: 46c1 li a3,16 + 3bc07e0c: 00b86663 bltu a6,a1,3bc07e18 + 3bc07e10: ff098693 addi a3,s3,-16 + 3bc07e14: 9ac1 andi a3,a3,-16 + 3bc07e16: 06c1 addi a3,a3,16 + 3bc07e18: 15f7978b srriw a5,a5,31 + 3bc07e1c: 1597170b srriw a4,a4,25 + 3bc07e20: 9fb9 addw a5,a5,a4 + 3bc07e22: 1544140b srriw s0,s0,20 + 3bc07e26: 9fa1 addw a5,a5,s0 + 3bc07e28: 14e5150b srriw a0,a0,14 + 3bc07e2c: 9936 add s2,s2,a3 + 3bc07e2e: 9d3d addw a0,a0,a5 + 3bc07e30: 4681 li a3,0 + 3bc07e32: 6446 ld s0,80(sp) + 3bc07e34: 60e6 ld ra,88(sp) + 3bc07e36: 64a6 ld s1,72(sp) + 3bc07e38: 7a42 ld s4,48(sp) + 3bc07e3a: 7aa2 ld s5,40(sp) + 3bc07e3c: 7b02 ld s6,32(sp) + 3bc07e3e: 6be2 ld s7,24(sp) + 3bc07e40: 6c42 ld s8,16(sp) + 3bc07e42: 6ca2 ld s9,8(sp) + 3bc07e44: 00f9f613 andi a2,s3,15 + 3bc07e48: 85ca mv a1,s2 + 3bc07e4a: 00a9853b addw a0,s3,a0 + 3bc07e4e: 6906 ld s2,64(sp) + 3bc07e50: 79e2 ld s3,56(sp) + 3bc07e52: 6125 addi sp,sp,96 + 3bc07e54: bd9ff06f j 3bc07a2c + 3bc07e58: 16566537 lui a0,0x16566 + 3bc07e5c: 7b15051b addiw a0,a0,1969 + 3bc07e60: 9d31 addw a0,a0,a2 + 3bc07e62: b7f9 j 3bc07e30 + 3bc07e64: 47bd li a5,15 + 3bc07e66: 0ab7fe63 bgeu a5,a1,3bc07f22 + 3bc07e6a: 242344b7 lui s1,0x24234 + 3bc07e6e: 85ebdab7 lui s5,0x85ebd + 3bc07e72: 61c887b7 lui a5,0x61c88 + 3bc07e76: ff158c93 addi s9,a1,-15 # ffffffff9e377ff1 <__BL2_END__+0xffffffff62764be1> + 3bc07e7a: 4284849b addiw s1,s1,1064 + 3bc07e7e: a77a8a9b addiw s5,s5,-1417 + 3bc07e82: 64f7879b addiw a5,a5,1615 + 3bc07e86: 9e378b37 lui s6,0x9e378 + 3bc07e8a: 9caa add s9,s9,a0 + 3bc07e8c: 9cb1 addw s1,s1,a2 + 3bc07e8e: 00ca8c3b addw s8,s5,a2 + 3bc07e92: 00c78bbb addw s7,a5,a2 + 3bc07e96: 8a2a mv s4,a0 + 3bc07e98: 9b1b0b1b addiw s6,s6,-1615 + 3bc07e9c: 8552 mv a0,s4 + 3bc07e9e: b79ff0ef jal ra,3bc07a16 + 3bc07ea2: 24aa948b mulaw s1,s5,a0 + 3bc07ea6: 004a0513 addi a0,s4,4 + 3bc07eaa: b6dff0ef jal ra,3bc07a16 + 3bc07eae: 8762 mv a4,s8 + 3bc07eb0: 24aa970b mulaw a4,s5,a0 + 3bc07eb4: 008a0513 addi a0,s4,8 + 3bc07eb8: 1534948b srriw s1,s1,19 + 3bc07ebc: 1537170b srriw a4,a4,19 + 3bc07ec0: 03670c3b mulw s8,a4,s6 + 3bc07ec4: b53ff0ef jal ra,3bc07a16 + 3bc07ec8: 24aa940b mulaw s0,s5,a0 + 3bc07ecc: 00ca0513 addi a0,s4,12 + 3bc07ed0: 0a41 addi s4,s4,16 + 3bc07ed2: 1534160b srriw a2,s0,19 + 3bc07ed6: 0366043b mulw s0,a2,s6 + 3bc07eda: b3dff0ef jal ra,3bc07a16 + 3bc07ede: 87de mv a5,s7 + 3bc07ee0: 24aa978b mulaw a5,s5,a0 + 3bc07ee4: 1537978b srriw a5,a5,19 + 3bc07ee8: 036484bb mulw s1,s1,s6 + 3bc07eec: 03678bbb mulw s7,a5,s6 + 3bc07ef0: fb9a66e3 bltu s4,s9,3bc07e9c + 3bc07ef4: 00190713 addi a4,s2,1 + 3bc07ef8: 47c1 li a5,16 + 3bc07efa: 00ece663 bltu s9,a4,3bc07f06 + 3bc07efe: ff098793 addi a5,s3,-16 + 3bc07f02: 9bc1 andi a5,a5,-16 + 3bc07f04: 07c1 addi a5,a5,16 + 3bc07f06: 159c150b srriw a0,s8,25 + 3bc07f0a: 15f4948b srriw s1,s1,31 + 3bc07f0e: 9ca9 addw s1,s1,a0 + 3bc07f10: 1544150b srriw a0,s0,20 + 3bc07f14: 993e add s2,s2,a5 + 3bc07f16: 9d25 addw a0,a0,s1 + 3bc07f18: 14eb940b srriw s0,s7,14 + 3bc07f1c: 9d21 addw a0,a0,s0 + 3bc07f1e: 4685 li a3,1 + 3bc07f20: bf09 j 3bc07e32 + 3bc07f22: 16566537 lui a0,0x16566 + 3bc07f26: 7b15051b addiw a0,a0,1969 + 3bc07f2a: bfcd j 3bc07f1c + +000000003bc07f2c : + 3bc07f2c: 715d addi sp,sp,-80 + 3bc07f2e: e0a2 sd s0,64(sp) + 3bc07f30: fc26 sd s1,56(sp) + 3bc07f32: 842e mv s0,a1 + 3bc07f34: 84aa mv s1,a0 + 3bc07f36: 03000613 li a2,48 + 3bc07f3a: 4581 li a1,0 + 3bc07f3c: 850a mv a0,sp + 3bc07f3e: e486 sd ra,72(sp) + 3bc07f40: ad3f80ef jal ra,3bc00a12 + 3bc07f44: 242347b7 lui a5,0x24234 + 3bc07f48: 4287879b addiw a5,a5,1064 + 3bc07f4c: 9fa1 addw a5,a5,s0 + 3bc07f4e: c43e sw a5,8(sp) + 3bc07f50: 85ebd7b7 lui a5,0x85ebd + 3bc07f54: a777879b addiw a5,a5,-1417 + 3bc07f58: 9fa1 addw a5,a5,s0 + 3bc07f5a: c63e sw a5,12(sp) + 3bc07f5c: 61c887b7 lui a5,0x61c88 + 3bc07f60: 64f7879b addiw a5,a5,1615 + 3bc07f64: c822 sw s0,16(sp) + 3bc07f66: 858a mv a1,sp + 3bc07f68: 9c3d addw s0,s0,a5 + 3bc07f6a: 8526 mv a0,s1 + 3bc07f6c: 02c00613 li a2,44 + 3bc07f70: ca22 sw s0,20(sp) + 3bc07f72: afbf80ef jal ra,3bc00a6c + 3bc07f76: 60a6 ld ra,72(sp) + 3bc07f78: 6406 ld s0,64(sp) + 3bc07f7a: 74e2 ld s1,56(sp) + 3bc07f7c: 4501 li a0,0 + 3bc07f7e: 6161 addi sp,sp,80 + 3bc07f80: 8082 ret + +000000003bc07f82 : + 3bc07f82: 711d addi sp,sp,-96 + 3bc07f84: e0ca sd s2,64(sp) + 3bc07f86: ec86 sd ra,88(sp) + 3bc07f88: e8a2 sd s0,80(sp) + 3bc07f8a: e4a6 sd s1,72(sp) + 3bc07f8c: fc4e sd s3,56(sp) + 3bc07f8e: f852 sd s4,48(sp) + 3bc07f90: f456 sd s5,40(sp) + 3bc07f92: f05a sd s6,32(sp) + 3bc07f94: ec5e sd s7,24(sp) + 3bc07f96: e862 sd s8,16(sp) + 3bc07f98: e466 sd s9,8(sp) + 3bc07f9a: e06a sd s10,0(sp) + 3bc07f9c: 4905 li s2,1 + 3bc07f9e: c5b9 beqz a1,3bc07fec + 3bc07fa0: 4114 lw a3,0(a0) + 3bc07fa2: 842a mv s0,a0 + 3bc07fa4: 01063713 sltiu a4,a2,16 + 3bc07fa8: 00c6853b addw a0,a3,a2 + 3bc07fac: 483d li a6,15 + 3bc07fae: 00a836b3 sltu a3,a6,a0 + 3bc07fb2: 00174713 xori a4,a4,1 + 3bc07fb6: 8f55 or a4,a4,a3 + 3bc07fb8: 4054 lw a3,4(s0) + 3bc07fba: c008 sw a0,0(s0) + 3bc07fbc: 84ae mv s1,a1 + 3bc07fbe: 8f55 or a4,a4,a3 + 3bc07fc0: c058 sw a4,4(s0) + 3bc07fc2: 5418 lw a4,40(s0) + 3bc07fc4: 00c58d33 add s10,a1,a2 + 3bc07fc8: 0006091b sext.w s2,a2 + 3bc07fcc: 7c07350b extu a0,a4,31,0 + 3bc07fd0: 00a607b3 add a5,a2,a0 + 3bc07fd4: 02f86b63 bltu a6,a5,3bc0800a + 3bc07fd8: 01840793 addi a5,s0,24 # 10018 <__BSS_SIZE__+0xa408> + 3bc07fdc: 953e add a0,a0,a5 + 3bc07fde: a8ff80ef jal ra,3bc00a6c + 3bc07fe2: 541c lw a5,40(s0) + 3bc07fe4: 012787bb addw a5,a5,s2 + 3bc07fe8: d41c sw a5,40(s0) + 3bc07fea: 4901 li s2,0 + 3bc07fec: 60e6 ld ra,88(sp) + 3bc07fee: 6446 ld s0,80(sp) + 3bc07ff0: 64a6 ld s1,72(sp) + 3bc07ff2: 79e2 ld s3,56(sp) + 3bc07ff4: 7a42 ld s4,48(sp) + 3bc07ff6: 7aa2 ld s5,40(sp) + 3bc07ff8: 7b02 ld s6,32(sp) + 3bc07ffa: 6be2 ld s7,24(sp) + 3bc07ffc: 6c42 ld s8,16(sp) + 3bc07ffe: 6ca2 ld s9,8(sp) + 3bc08000: 6d02 ld s10,0(sp) + 3bc08002: 854a mv a0,s2 + 3bc08004: 6906 ld s2,64(sp) + 3bc08006: 6125 addi sp,sp,96 + 3bc08008: 8082 ret + 3bc0800a: c355 beqz a4,3bc080ae + 3bc0800c: 4b41 li s6,16 + 3bc0800e: 40eb063b subw a2,s6,a4 + 3bc08012: 01840993 addi s3,s0,24 + 3bc08016: 7c06360b extu a2,a2,31,0 + 3bc0801a: 954e add a0,a0,s3 + 3bc0801c: a51f80ef jal ra,3bc00a6c + 3bc08020: 00842903 lw s2,8(s0) + 3bc08024: 854e mv a0,s3 + 3bc08026: 85ebdab7 lui s5,0x85ebd + 3bc0802a: 9edff0ef jal ra,3bc07a16 + 3bc0802e: a77a8a9b addiw s5,s5,-1417 + 3bc08032: 24aa990b mulaw s2,s5,a0 + 3bc08036: 9e378a37 lui s4,0x9e378 + 3bc0803a: 9b1a0a1b addiw s4,s4,-1615 + 3bc0803e: 00c42983 lw s3,12(s0) + 3bc08042: 01c40513 addi a0,s0,28 + 3bc08046: 1539190b srriw s2,s2,19 + 3bc0804a: 0349093b mulw s2,s2,s4 + 3bc0804e: 01242423 sw s2,8(s0) + 3bc08052: 9c5ff0ef jal ra,3bc07a16 + 3bc08056: 24aa998b mulaw s3,s5,a0 + 3bc0805a: 02040513 addi a0,s0,32 + 3bc0805e: 1539998b srriw s3,s3,19 + 3bc08062: 034989bb mulw s3,s3,s4 + 3bc08066: 01342623 sw s3,12(s0) + 3bc0806a: 01042983 lw s3,16(s0) + 3bc0806e: 9a9ff0ef jal ra,3bc07a16 + 3bc08072: 01442903 lw s2,20(s0) + 3bc08076: 24aa998b mulaw s3,s5,a0 + 3bc0807a: 02440513 addi a0,s0,36 + 3bc0807e: 1539998b srriw s3,s3,19 + 3bc08082: 034989bb mulw s3,s3,s4 + 3bc08086: 01342823 sw s3,16(s0) + 3bc0808a: 98dff0ef jal ra,3bc07a16 + 3bc0808e: 24aa990b mulaw s2,s5,a0 + 3bc08092: 541c lw a5,40(s0) + 3bc08094: 02042423 sw zero,40(s0) + 3bc08098: 40fb0b3b subw s6,s6,a5 + 3bc0809c: 7c0b3b0b extu s6,s6,31,0 + 3bc080a0: 94da add s1,s1,s6 + 3bc080a2: 1539190b srriw s2,s2,19 + 3bc080a6: 0349093b mulw s2,s2,s4 + 3bc080aa: 01242a23 sw s2,20(s0) + 3bc080ae: ff0d0913 addi s2,s10,-16 + 3bc080b2: 08996363 bltu s2,s1,3bc08138 + 3bc080b6: e3844c8b lwd s9,s8,(s0),1,3 + 3bc080ba: e5444a8b lwd s5,s4,(s0),2,3 + 3bc080be: 85ebdbb7 lui s7,0x85ebd + 3bc080c2: 9e378b37 lui s6,0x9e378 + 3bc080c6: 89a6 mv s3,s1 + 3bc080c8: a77b8b9b addiw s7,s7,-1417 + 3bc080cc: 9b1b0b1b addiw s6,s6,-1615 + 3bc080d0: 854e mv a0,s3 + 3bc080d2: 945ff0ef jal ra,3bc07a16 + 3bc080d6: 24ab9c8b mulaw s9,s7,a0 + 3bc080da: 00498513 addi a0,s3,4 + 3bc080de: 939ff0ef jal ra,3bc07a16 + 3bc080e2: 24ab9c0b mulaw s8,s7,a0 + 3bc080e6: 00898513 addi a0,s3,8 + 3bc080ea: 92dff0ef jal ra,3bc07a16 + 3bc080ee: 153c9c8b srriw s9,s9,19 + 3bc080f2: 24ab9a8b mulaw s5,s7,a0 + 3bc080f6: 00c98513 addi a0,s3,12 + 3bc080fa: 91dff0ef jal ra,3bc07a16 + 3bc080fe: 153c1c0b srriw s8,s8,19 + 3bc08102: 09c1 addi s3,s3,16 + 3bc08104: 24ab9a0b mulaw s4,s7,a0 + 3bc08108: 153a9a8b srriw s5,s5,19 + 3bc0810c: 153a1a0b srriw s4,s4,19 + 3bc08110: 036c8cbb mulw s9,s9,s6 + 3bc08114: 036c0c3b mulw s8,s8,s6 + 3bc08118: 036a8abb mulw s5,s5,s6 + 3bc0811c: 036a0a3b mulw s4,s4,s6 + 3bc08120: fb3978e3 bgeu s2,s3,3bc080d0 + 3bc08124: 40990933 sub s2,s2,s1 + 3bc08128: ff097913 andi s2,s2,-16 + 3bc0812c: 0941 addi s2,s2,16 + 3bc0812e: 94ca add s1,s1,s2 + 3bc08130: e3845c8b swd s9,s8,(s0),1,3 + 3bc08134: e5445a8b swd s5,s4,(s0),2,3 + 3bc08138: 4901 li s2,0 + 3bc0813a: eba4f9e3 bgeu s1,s10,3bc07fec + 3bc0813e: 409d0d33 sub s10,s10,s1 + 3bc08142: 866a mv a2,s10 + 3bc08144: 85a6 mv a1,s1 + 3bc08146: 01840513 addi a0,s0,24 + 3bc0814a: 923f80ef jal ra,3bc00a6c + 3bc0814e: 03a42423 sw s10,40(s0) + 3bc08152: bd69 j 3bc07fec + +000000003bc08154 : + 3bc08154: 415c lw a5,4(a0) + 3bc08156: 4918 lw a4,16(a0) + 3bc08158: cb8d beqz a5,3bc0818a + 3bc0815a: 451c lw a5,8(a0) + 3bc0815c: 4554 lw a3,12(a0) + 3bc0815e: 1547170b srriw a4,a4,20 + 3bc08162: 15f7978b srriw a5,a5,31 + 3bc08166: 1596968b srriw a3,a3,25 + 3bc0816a: 9fb5 addw a5,a5,a3 + 3bc0816c: 9fb9 addw a5,a5,a4 + 3bc0816e: 4958 lw a4,20(a0) + 3bc08170: 14e7170b srriw a4,a4,14 + 3bc08174: 85aa mv a1,a0 + 3bc08176: 9fb9 addw a5,a5,a4 + 3bc08178: 5ac5c70b lwia a4,(a1),12,1 + 3bc0817c: 02856603 lwu a2,40(a0) # 16566028 + 3bc08180: 4681 li a3,0 + 3bc08182: 00f7053b addw a0,a4,a5 + 3bc08186: 8a7ff06f j 3bc07a2c + 3bc0818a: 165667b7 lui a5,0x16566 + 3bc0818e: 7b17879b addiw a5,a5,1969 + 3bc08192: b7cd j 3bc08174 + +000000003bc08194 : + 3bc08194: 1141 addi sp,sp,-16 + 3bc08196: e022 sd s0,0(sp) + 3bc08198: 842a mv s0,a0 + 3bc0819a: 00003517 auipc a0,0x3 + 3bc0819e: 05e50513 addi a0,a0,94 # 3bc0b1f8 + 3bc081a2: e406 sd ra,8(sp) + 3bc081a4: 9b4f80ef jal ra,3bc00358 + 3bc081a8: 400c lw a1,0(s0) + 3bc081aa: 00003517 auipc a0,0x3 + 3bc081ae: 05e50513 addi a0,a0,94 # 3bc0b208 + 3bc081b2: 9a6f80ef jal ra,3bc00358 + 3bc081b6: 012000ef jal ra,3bc081c8 + 3bc081ba: 296000ef jal ra,3bc08450 + 3bc081be: 60a2 ld ra,8(sp) + 3bc081c0: 6402 ld s0,0(sp) + 3bc081c2: 4501 li a0,0 + 3bc081c4: 0141 addi sp,sp,16 + 3bc081c6: 8082 ret + +000000003bc081c8 : + 3bc081c8: 030007b7 lui a5,0x3000 + 3bc081cc: 43cc lw a1,4(a5) + 3bc081ce: 7139 addi sp,sp,-64 + 3bc081d0: 030507b7 lui a5,0x3050 + 3bc081d4: 79c5b58b extu a1,a1,30,28 + 3bc081d8: 00003517 auipc a0,0x3 + 3bc081dc: 04850513 addi a0,a0,72 # 3bc0b220 + 3bc081e0: f822 sd s0,48(sp) + 3bc081e2: f426 sd s1,40(sp) + 3bc081e4: f04a sd s2,32(sp) + 3bc081e6: ec4e sd s3,24(sp) + 3bc081e8: fc06 sd ra,56(sp) + 3bc081ea: 1087a983 lw s3,264(a5) # 3050108 <__BSS_SIZE__+0x304a4f8> + 3bc081ee: e42e sd a1,8(sp) + 3bc081f0: 968f80ef jal ra,3bc00358 + 3bc081f4: 65a2 ld a1,8(sp) + 3bc081f6: 00003717 auipc a4,0x3 + 3bc081fa: 10e70713 addi a4,a4,270 # 3bc0b304 + 3bc081fe: 0000b917 auipc s2,0xb + 3bc08202: 21090913 addi s2,s2,528 # 3bc1340e + 3bc08206: 44b7478b lrw a5,a4,a1,2 + 3bc0820a: 0000b497 auipc s1,0xb + 3bc0820e: 20248493 addi s1,s1,514 # 3bc1340c + 3bc08212: 0000b417 auipc s0,0xb + 3bc08216: 1fd40413 addi s0,s0,509 # 3bc1340f + 3bc0821a: 97ba add a5,a5,a4 + 3bc0821c: 8782 jr a5 + 3bc0821e: 478d li a5,3 + 3bc08220: 4709 li a4,2 + 3bc08222: 00f90023 sb a5,0(s2) + 3bc08226: 00e48023 sb a4,0(s1) + 3bc0822a: 00f40023 sb a5,0(s0) + 3bc0822e: a825 j 3bc08266 + 3bc08230: 4791 li a5,4 + 3bc08232: 00f90023 sb a5,0(s2) + 3bc08236: 4785 li a5,1 + 3bc08238: 00f48023 sb a5,0(s1) + 3bc0823c: 478d li a5,3 + 3bc0823e: b7f5 j 3bc0822a + 3bc08240: 00003517 auipc a0,0x3 + 3bc08244: ff050513 addi a0,a0,-16 # 3bc0b230 + 3bc08248: 910f80ef jal ra,3bc00358 + 3bc0824c: 2981 sext.w s3,s3 + 3bc0824e: 6559b78b extu a5,s3,25,21 + 3bc08252: 00f90023 sb a5,0(s2) + 3bc08256: 71a9b78b extu a5,s3,28,26 + 3bc0825a: 01d9d99b srliw s3,s3,0x1d + 3bc0825e: 00f48023 sb a5,0(s1) + 3bc08262: 01340023 sb s3,0(s0) + 3bc08266: 00044583 lbu a1,0(s0) + 3bc0826a: 00094683 lbu a3,0(s2) + 3bc0826e: 0004c603 lbu a2,0(s1) + 3bc08272: 00003517 auipc a0,0x3 + 3bc08276: fe650513 addi a0,a0,-26 # 3bc0b258 + 3bc0827a: 8def80ef jal ra,3bc00358 + 3bc0827e: 00094583 lbu a1,0(s2) + 3bc08282: 4725 li a4,9 + 3bc08284: fff5879b addiw a5,a1,-1 + 3bc08288: 0ff7f793 andi a5,a5,255 + 3bc0828c: 08f76963 bltu a4,a5,3bc0831e + 3bc08290: 00003717 auipc a4,0x3 + 3bc08294: 09470713 addi a4,a4,148 # 3bc0b324 + 3bc08298: 44f7478b lrw a5,a4,a5,2 + 3bc0829c: 0000b917 auipc s2,0xb + 3bc082a0: 17190913 addi s2,s2,369 # 3bc1340d + 3bc082a4: 97ba add a5,a5,a4 + 3bc082a6: 8782 jr a5 + 3bc082a8: 478d li a5,3 + 3bc082aa: 00f90023 sb a5,0(s2) + 3bc082ae: 4789 li a5,2 + 3bc082b0: 00f48023 sb a5,0(s1) + 3bc082b4: 4785 li a5,1 + 3bc082b6: bf95 j 3bc0822a + 3bc082b8: 4791 li a5,4 + 3bc082ba: 00f90023 sb a5,0(s2) + 3bc082be: 4785 li a5,1 + 3bc082c0: 00f48023 sb a5,0(s1) + 3bc082c4: b79d j 3bc0822a + 3bc082c6: 00003517 auipc a0,0x3 + 3bc082ca: f7250513 addi a0,a0,-142 # 3bc0b238 + 3bc082ce: 88af80ef jal ra,3bc00358 + 3bc082d2: bf51 j 3bc08266 + 3bc082d4: 00003517 auipc a0,0x3 + 3bc082d8: f9450513 addi a0,a0,-108 # 3bc0b268 + 3bc082dc: 87cf80ef jal ra,3bc00358 + 3bc082e0: 4785 li a5,1 + 3bc082e2: 00f90023 sb a5,0(s2) + 3bc082e6: 0004c583 lbu a1,0(s1) + 3bc082ea: 478d li a5,3 + 3bc082ec: 0cf58963 beq a1,a5,3bc083be + 3bc082f0: 04b7e263 bltu a5,a1,3bc08334 + 3bc082f4: 4485 li s1,1 + 3bc082f6: 04958a63 beq a1,s1,3bc0834a + 3bc082fa: 4789 li a5,2 + 3bc082fc: 0af58463 beq a1,a5,3bc083a4 + 3bc08300: 00003517 auipc a0,0x3 + 3bc08304: fb050513 addi a0,a0,-80 # 3bc0b2b0 + 3bc08308: 850f80ef jal ra,3bc00358 + 3bc0830c: a82d j 3bc08346 + 3bc0830e: 00003517 auipc a0,0x3 + 3bc08312: f6250513 addi a0,a0,-158 # 3bc0b270 + 3bc08316: 842f80ef jal ra,3bc00358 + 3bc0831a: 4789 li a5,2 + 3bc0831c: b7d9 j 3bc082e2 + 3bc0831e: 00003517 auipc a0,0x3 + 3bc08322: f5a50513 addi a0,a0,-166 # 3bc0b278 + 3bc08326: 832f80ef jal ra,3bc00358 + 3bc0832a: 0000b797 auipc a5,0xb + 3bc0832e: 0e0781a3 sb zero,227(a5) # 3bc1340d + 3bc08332: bf55 j 3bc082e6 + 3bc08334: 4791 li a5,4 + 3bc08336: 00003517 auipc a0,0x3 + 3bc0833a: f7250513 addi a0,a0,-142 # 3bc0b2a8 + 3bc0833e: fcf591e3 bne a1,a5,3bc08300 + 3bc08342: 816f80ef jal ra,3bc00358 + 3bc08346: 4781 li a5,0 + 3bc08348: a839 j 3bc08366 + 3bc0834a: 00003517 auipc a0,0x3 + 3bc0834e: f4650513 addi a0,a0,-186 # 3bc0b290 + 3bc08352: e42e sd a1,8(sp) + 3bc08354: 804f80ef jal ra,3bc00358 + 3bc08358: 00044783 lbu a5,0(s0) + 3bc0835c: 65a2 ld a1,8(sp) + 3bc0835e: 06b78563 beq a5,a1,3bc083c8 + 3bc08362: 67e1 lui a5,0x18 + 3bc08364: 07ad addi a5,a5,11 + 3bc08366: 03000737 lui a4,0x3000 + 3bc0836a: 08f72623 sw a5,140(a4) # 300008c <__BSS_SIZE__+0x2ffa47c> + 3bc0836e: 00044583 lbu a1,0(s0) + 3bc08372: 4789 li a5,2 + 3bc08374: 06f58c63 beq a1,a5,3bc083ec + 3bc08378: 478d li a5,3 + 3bc0837a: 04f58d63 beq a1,a5,3bc083d4 + 3bc0837e: 4785 li a5,1 + 3bc08380: 00003517 auipc a0,0x3 + 3bc08384: f4850513 addi a0,a0,-184 # 3bc0b2c8 + 3bc08388: 04f58a63 beq a1,a5,3bc083dc + 3bc0838c: 7442 ld s0,48(sp) + 3bc0838e: 70e2 ld ra,56(sp) + 3bc08390: 74a2 ld s1,40(sp) + 3bc08392: 7902 ld s2,32(sp) + 3bc08394: 69e2 ld s3,24(sp) + 3bc08396: 00003517 auipc a0,0x3 + 3bc0839a: f5a50513 addi a0,a0,-166 # 3bc0b2f0 + 3bc0839e: 6121 addi sp,sp,64 + 3bc083a0: fb9f706f j 3bc00358 + 3bc083a4: 00003517 auipc a0,0x3 + 3bc083a8: ef450513 addi a0,a0,-268 # 3bc0b298 + 3bc083ac: fadf70ef jal ra,3bc00358 + 3bc083b0: 00044783 lbu a5,0(s0) + 3bc083b4: 00978d63 beq a5,s1,3bc083ce + 3bc083b8: 67e1 lui a5,0x18 + 3bc083ba: 07ed addi a5,a5,27 + 3bc083bc: b76d j 3bc08366 + 3bc083be: 00003517 auipc a0,0x3 + 3bc083c2: ee250513 addi a0,a0,-286 # 3bc0b2a0 + 3bc083c6: bfb5 j 3bc08342 + 3bc083c8: 67e1 lui a5,0x18 + 3bc083ca: 07b1 addi a5,a5,12 + 3bc083cc: bf69 j 3bc08366 + 3bc083ce: 67e1 lui a5,0x18 + 3bc083d0: 07f1 addi a5,a5,28 + 3bc083d2: bf51 j 3bc08366 + 3bc083d4: 00003517 auipc a0,0x3 + 3bc083d8: f0450513 addi a0,a0,-252 # 3bc0b2d8 + 3bc083dc: 7442 ld s0,48(sp) + 3bc083de: 70e2 ld ra,56(sp) + 3bc083e0: 74a2 ld s1,40(sp) + 3bc083e2: 7902 ld s2,32(sp) + 3bc083e4: 69e2 ld s3,24(sp) + 3bc083e6: 6121 addi sp,sp,64 + 3bc083e8: f71f706f j 3bc00358 + 3bc083ec: 00003517 auipc a0,0x3 + 3bc083f0: efc50513 addi a0,a0,-260 # 3bc0b2e8 + 3bc083f4: b7e5 j 3bc083dc + +000000003bc083f6 : + 3bc083f6: 0000b517 auipc a0,0xb + 3bc083fa: 01854503 lbu a0,24(a0) # 3bc1340e + 3bc083fe: 8082 ret + +000000003bc08400 : + 3bc08400: 00030737 lui a4,0x30 + 3bc08404: 080087b7 lui a5,0x8008 + 3bc08408: 0705 addi a4,a4,1 + 3bc0840a: c398 sw a4,0(a5) + 3bc0840c: 08078693 addi a3,a5,128 # 8008080 + 3bc08410: c298 sw a4,0(a3) + 3bc08412: 10078693 addi a3,a5,256 + 3bc08416: c298 sw a4,0(a3) + 3bc08418: 18078693 addi a3,a5,384 + 3bc0841c: c298 sw a4,0(a3) + 3bc0841e: 20078693 addi a3,a5,512 + 3bc08422: c298 sw a4,0(a3) + 3bc08424: 28078693 addi a3,a5,640 + 3bc08428: c298 sw a4,0(a3) + 3bc0842a: 30078693 addi a3,a5,768 + 3bc0842e: c298 sw a4,0(a3) + 3bc08430: 38078693 addi a3,a5,896 + 3bc08434: c298 sw a4,0(a3) + 3bc08436: 40078693 addi a3,a5,1024 + 3bc0843a: c298 sw a4,0(a3) + 3bc0843c: 48078693 addi a3,a5,1152 + 3bc08440: c298 sw a4,0(a3) + 3bc08442: 50078693 addi a3,a5,1280 + 3bc08446: c298 sw a4,0(a3) + 3bc08448: 58078793 addi a5,a5,1408 + 3bc0844c: c398 sw a4,0(a5) + 3bc0844e: 8082 ret + +000000003bc08450 : + 3bc08450: 7179 addi sp,sp,-48 + 3bc08452: f406 sd ra,40(sp) + 3bc08454: 789000ef jal ra,3bc093dc + 3bc08458: 344010ef jal ra,3bc0979c + 3bc0845c: 0800a7b7 lui a5,0x800a + 3bc08460: 0207a023 sw zero,32(a5) # 800a020 + 3bc08464: 007797b7 lui a5,0x779 + 3bc08468: 03000737 lui a4,0x3000 + 3bc0846c: 8aa78793 addi a5,a5,-1878 # 7788aa <__BSS_SIZE__+0x772c9a> + 3bc08470: 1cf72c23 sw a5,472(a4) # 30001d8 <__BSS_SIZE__+0x2ffa5c8> + 3bc08474: 6789 lui a5,0x2 + 3bc08476: 29978793 addi a5,a5,665 # 2299 <__BSS_SIZE__-0x3977> + 3bc0847a: 1cf72e23 sw a5,476(a4) + 3bc0847e: 794010ef jal ra,3bc09c12 + 3bc08482: 1cb000ef jal ra,3bc08e4c + 3bc08486: 7db000ef jal ra,3bc09460 + 3bc0848a: 717000ef jal ra,3bc093a0 + 3bc0848e: 1df000ef jal ra,3bc08e6c + 3bc08492: 7c8000ef jal ra,3bc08c5a + 3bc08496: 0c3000ef jal ra,3bc08d58 + 3bc0849a: 101000ef jal ra,3bc08d9a + 3bc0849e: 049000ef jal ra,3bc08ce6 + 3bc084a2: 07f000ef jal ra,3bc08d20 + 3bc084a6: 121000ef jal ra,3bc08dc6 + 3bc084aa: 1ca000ef jal ra,3bc08674 + 3bc084ae: 0810 addi a2,sp,16 + 3bc084b0: 082c addi a1,sp,24 + 3bc084b2: 0068 addi a0,sp,12 + 3bc084b4: 4ae000ef jal ra,3bc08962 + 3bc084b8: 47b2 lw a5,12(sp) + 3bc084ba: e385 bnez a5,3bc084da + 3bc084bc: 00003517 auipc a0,0x3 + 3bc084c0: e9450513 addi a0,a0,-364 # 3bc0b350 + 3bc084c4: e95f70ef jal ra,3bc00358 + 3bc084c8: fac1468b ldd a3,a2,(sp),1,4 + 3bc084cc: 45b2 lw a1,12(sp) + 3bc084ce: 00003517 auipc a0,0x3 + 3bc084d2: e9a50513 addi a0,a0,-358 # 3bc0b368 + 3bc084d6: e83f70ef jal ra,3bc00358 + 3bc084da: 4ee010ef jal ra,3bc099c8 + 3bc084de: 16d000ef jal ra,3bc08e4a + 3bc084e2: 192000ef jal ra,3bc08674 + 3bc084e6: 0810 addi a2,sp,16 + 3bc084e8: 082c addi a1,sp,24 + 3bc084ea: 0068 addi a0,sp,12 + 3bc084ec: 476000ef jal ra,3bc08962 + 3bc084f0: 47b2 lw a5,12(sp) + 3bc084f2: e385 bnez a5,3bc08512 + 3bc084f4: 00003517 auipc a0,0x3 + 3bc084f8: e5c50513 addi a0,a0,-420 # 3bc0b350 + 3bc084fc: e5df70ef jal ra,3bc00358 + 3bc08500: fac1468b ldd a3,a2,(sp),1,4 + 3bc08504: 45b2 lw a1,12(sp) + 3bc08506: 00003517 auipc a0,0x3 + 3bc0850a: e6250513 addi a0,a0,-414 # 3bc0b368 + 3bc0850e: e4bf70ef jal ra,3bc00358 + 3bc08512: 2d7000ef jal ra,3bc08fe8 + 3bc08516: 15e000ef jal ra,3bc08674 + 3bc0851a: 0810 addi a2,sp,16 + 3bc0851c: 082c addi a1,sp,24 + 3bc0851e: 0068 addi a0,sp,12 + 3bc08520: 442000ef jal ra,3bc08962 + 3bc08524: 47b2 lw a5,12(sp) + 3bc08526: e385 bnez a5,3bc08546 + 3bc08528: 00003517 auipc a0,0x3 + 3bc0852c: e2850513 addi a0,a0,-472 # 3bc0b350 + 3bc08530: e29f70ef jal ra,3bc00358 + 3bc08534: fac1468b ldd a3,a2,(sp),1,4 + 3bc08538: 45b2 lw a1,12(sp) + 3bc0853a: 00003517 auipc a0,0x3 + 3bc0853e: e2e50513 addi a0,a0,-466 # 3bc0b368 + 3bc08542: e17f70ef jal ra,3bc00358 + 3bc08546: 4589 li a1,2 + 3bc08548: 4505 li a0,1 + 3bc0854a: 4d5000ef jal ra,3bc0921e + 3bc0854e: 4585 li a1,1 + 3bc08550: 4505 li a0,1 + 3bc08552: 4cd000ef jal ra,3bc0921e + 3bc08556: 4581 li a1,0 + 3bc08558: 4505 li a0,1 + 3bc0855a: 4c5000ef jal ra,3bc0921e + 3bc0855e: 116000ef jal ra,3bc08674 + 3bc08562: 0810 addi a2,sp,16 + 3bc08564: 082c addi a1,sp,24 + 3bc08566: 0068 addi a0,sp,12 + 3bc08568: 3fa000ef jal ra,3bc08962 + 3bc0856c: 08000737 lui a4,0x8000 + 3bc08570: 08c72783 lw a5,140(a4) # 800008c + 3bc08574: 4505 li a0,1 + 3bc08576: 2781 sext.w a5,a5 + 3bc08578: f0f7f793 andi a5,a5,-241 + 3bc0857c: 0107e793 ori a5,a5,16 + 3bc08580: 0000b697 auipc a3,0xb + 3bc08584: e6f6a823 sw a5,-400(a3) # 3bc133f0 + 3bc08588: 08f72623 sw a5,140(a4) + 3bc0858c: 323000ef jal ra,3bc090ae + 3bc08590: 0e4000ef jal ra,3bc08674 + 3bc08594: 0810 addi a2,sp,16 + 3bc08596: 082c addi a1,sp,24 + 3bc08598: 0068 addi a0,sp,12 + 3bc0859a: 3c8000ef jal ra,3bc08962 + 3bc0859e: 3fc010ef jal ra,3bc0999a + 3bc085a2: 00b10513 addi a0,sp,11 + 3bc085a6: 615000ef jal ra,3bc093ba + 3bc085aa: 00b14503 lbu a0,11(sp) + 3bc085ae: 448010ef jal ra,3bc099f6 + 3bc085b2: 00b14503 lbu a0,11(sp) + 3bc085b6: 1e4010ef jal ra,3bc0979a + 3bc085ba: 1bf000ef jal ra,3bc08f78 + 3bc085be: 0b6000ef jal ra,3bc08674 + 3bc085c2: 0810 addi a2,sp,16 + 3bc085c4: 082c addi a1,sp,24 + 3bc085c6: 0068 addi a0,sp,12 + 3bc085c8: 39a000ef jal ra,3bc08962 + 3bc085cc: 47b2 lw a5,12(sp) + 3bc085ce: eb81 bnez a5,3bc085de + 3bc085d0: 00003517 auipc a0,0x3 + 3bc085d4: dd850513 addi a0,a0,-552 # 3bc0b3a8 + 3bc085d8: d81f70ef jal ra,3bc00358 + 3bc085dc: a001 j 3bc085dc + 3bc085de: 0e4000ef jal ra,3bc086c2 + 3bc085e2: 0810 addi a2,sp,16 + 3bc085e4: 082c addi a1,sp,24 + 3bc085e6: 0068 addi a0,sp,12 + 3bc085e8: 37a000ef jal ra,3bc08962 + 3bc085ec: 47b2 lw a5,12(sp) + 3bc085ee: eb81 bnez a5,3bc085fe + 3bc085f0: 00003517 auipc a0,0x3 + 3bc085f4: db850513 addi a0,a0,-584 # 3bc0b3a8 + 3bc085f8: d61f70ef jal ra,3bc00358 + 3bc085fc: a001 j 3bc085fc + 3bc085fe: 00003517 auipc a0,0x3 + 3bc08602: dc250513 addi a0,a0,-574 # 3bc0b3c0 + 3bc08606: d53f70ef jal ra,3bc00358 + 3bc0860a: 080087b7 lui a5,0x8008 + 3bc0860e: 4595 li a1,5 + 3bc08610: cbac sw a1,80(a5) + 3bc08612: 08078613 addi a2,a5,128 # 8008080 + 3bc08616: 01000737 lui a4,0x1000 + 3bc0861a: ca2c sw a1,80(a2) + 3bc0861c: 10070713 addi a4,a4,256 # 1000100 <__BSS_SIZE__+0xffa4f0> + 3bc08620: c398 sw a4,0(a5) + 3bc08622: 43d4 lw a3,4(a5) + 3bc08624: 2681 sext.w a3,a3 + 3bc08626: c006f693 andi a3,a3,-1024 + 3bc0862a: c3d4 sw a3,4(a5) + 3bc0862c: c218 sw a4,0(a2) + 3bc0862e: 4254 lw a3,4(a2) + 3bc08630: 2681 sext.w a3,a3 + 3bc08632: c006f693 andi a3,a3,-1024 + 3bc08636: c254 sw a3,4(a2) + 3bc08638: 40078613 addi a2,a5,1024 + 3bc0863c: ca2c sw a1,80(a2) + 3bc0863e: 48078793 addi a5,a5,1152 + 3bc08642: cbac sw a1,80(a5) + 3bc08644: c218 sw a4,0(a2) + 3bc08646: 4254 lw a3,4(a2) + 3bc08648: 2681 sext.w a3,a3 + 3bc0864a: c006f693 andi a3,a3,-1024 + 3bc0864e: c254 sw a3,4(a2) + 3bc08650: c398 sw a4,0(a5) + 3bc08652: 43d8 lw a4,4(a5) + 3bc08654: 2701 sext.w a4,a4 + 3bc08656: c0077713 andi a4,a4,-1024 + 3bc0865a: c3d8 sw a4,4(a5) + 3bc0865c: 0800a737 lui a4,0x800a + 3bc08660: 4b5c lw a5,20(a4) + 3bc08662: 2781 sext.w a5,a5 + 3bc08664: 1007e793 ori a5,a5,256 + 3bc08668: cb5c sw a5,20(a4) + 3bc0866a: d97ff0ef jal ra,3bc08400 + 3bc0866e: 70a2 ld ra,40(sp) + 3bc08670: 6145 addi sp,sp,48 + 3bc08672: 8082 ret + +000000003bc08674 : + 3bc08674: 00060737 lui a4,0x60 + 3bc08678: 080107b7 lui a5,0x8010 + 3bc0867c: 0719 addi a4,a4,6 + 3bc0867e: c398 sw a4,0(a5) + 3bc08680: 80200737 lui a4,0x80200 + 3bc08684: 1101 addi sp,sp,-32 + 3bc08686: a0070713 addi a4,a4,-1536 # ffffffff801ffa00 <__BL2_END__+0xffffffff445ec5f0> + 3bc0868a: c63a sw a4,12(sp) + 3bc0868c: 40200737 lui a4,0x40200 + 3bc08690: e802 sd zero,16(sp) + 3bc08692: ec02 sd zero,24(sp) + 3bc08694: a0070713 addi a4,a4,-1536 # 401ffa00 <__BL2_END__+0x45ec5f0> + 3bc08698: c3b8 sw a4,64(a5) + 3bc0869a: 4732 lw a4,12(sp) + 3bc0869c: c3f8 sw a4,68(a5) + 3bc0869e: 4742 lw a4,16(sp) + 3bc086a0: c7b8 sw a4,72(a5) + 3bc086a2: 4752 lw a4,20(sp) + 3bc086a4: c7f8 sw a4,76(a5) + 3bc086a6: 4762 lw a4,24(sp) + 3bc086a8: cbb8 sw a4,80(a5) + 3bc086aa: 4772 lw a4,28(sp) + 3bc086ac: cbf8 sw a4,84(a5) + 3bc086ae: 00100737 lui a4,0x100 + 3bc086b2: 0007a823 sw zero,16(a5) # 8010010 + 3bc086b6: 177d addi a4,a4,-1 + 3bc086b8: cbd8 sw a4,20(a5) + 3bc086ba: 4711 li a4,4 + 3bc086bc: cf98 sw a4,24(a5) + 3bc086be: 6105 addi sp,sp,32 + 3bc086c0: 8082 ret + +000000003bc086c2 : + 3bc086c2: 000c0737 lui a4,0xc0 + 3bc086c6: 080107b7 lui a5,0x8010 + 3bc086ca: 0731 addi a4,a4,12 + 3bc086cc: c398 sw a4,0(a5) + 3bc086ce: 6705 lui a4,0x1 + 3bc086d0: f0570713 addi a4,a4,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc086d4: d3d8 sw a4,36(a5) + 3bc086d6: 80103737 lui a4,0x80103 + 3bc086da: 1101 addi sp,sp,-32 + 3bc086dc: c0f70713 addi a4,a4,-1009 # ffffffff80102c0f <__BL2_END__+0xffffffff444ef7ff> + 3bc086e0: c63a sw a4,12(sp) + 3bc086e2: c0000737 lui a4,0xc0000 + 3bc086e6: 0705 addi a4,a4,1 + 3bc086e8: 1702 slli a4,a4,0x20 + 3bc086ea: e83a sd a4,16(sp) + 3bc086ec: 40103737 lui a4,0x40103 + 3bc086f0: ec02 sd zero,24(sp) + 3bc086f2: c0f70713 addi a4,a4,-1009 # 40102c0f <__BL2_END__+0x44ef7ff> + 3bc086f6: c3b8 sw a4,64(a5) + 3bc086f8: 4732 lw a4,12(sp) + 3bc086fa: c3f8 sw a4,68(a5) + 3bc086fc: 4742 lw a4,16(sp) + 3bc086fe: c7b8 sw a4,72(a5) + 3bc08700: 4752 lw a4,20(sp) + 3bc08702: c7f8 sw a4,76(a5) + 3bc08704: 4762 lw a4,24(sp) + 3bc08706: cbb8 sw a4,80(a5) + 3bc08708: 4772 lw a4,28(sp) + 3bc0870a: cbf8 sw a4,84(a5) + 3bc0870c: 00100737 lui a4,0x100 + 3bc08710: 0007a823 sw zero,16(a5) # 8010010 + 3bc08714: 177d addi a4,a4,-1 + 3bc08716: cbd8 sw a4,20(a5) + 3bc08718: 02000713 li a4,32 + 3bc0871c: cf98 sw a4,24(a5) + 3bc0871e: 6105 addi sp,sp,32 + 3bc08720: 8082 ret + +000000003bc08722 : + 3bc08722: 00060737 lui a4,0x60 + 3bc08726: 080107b7 lui a5,0x8010 + 3bc0872a: 0719 addi a4,a4,6 + 3bc0872c: c398 sw a4,0(a5) + 3bc0872e: 1101 addi sp,sp,-32 + 3bc08730: 80004737 lui a4,0x80004 + 3bc08734: e802 sd zero,16(sp) + 3bc08736: ec02 sd zero,24(sp) + 3bc08738: c602 sw zero,12(sp) + 3bc0873a: a0070713 addi a4,a4,-1536 # ffffffff80003a00 <__BL2_END__+0xffffffff443f05f0> + 3bc0873e: c3b8 sw a4,64(a5) + 3bc08740: 4732 lw a4,12(sp) + 3bc08742: c3f8 sw a4,68(a5) + 3bc08744: 4742 lw a4,16(sp) + 3bc08746: c7b8 sw a4,72(a5) + 3bc08748: 4752 lw a4,20(sp) + 3bc0874a: c7f8 sw a4,76(a5) + 3bc0874c: 4762 lw a4,24(sp) + 3bc0874e: cbb8 sw a4,80(a5) + 3bc08750: 4772 lw a4,28(sp) + 3bc08752: cbf8 sw a4,84(a5) + 3bc08754: 00100737 lui a4,0x100 + 3bc08758: 0007a823 sw zero,16(a5) # 8010010 + 3bc0875c: 177d addi a4,a4,-1 + 3bc0875e: cbd8 sw a4,20(a5) + 3bc08760: 4711 li a4,4 + 3bc08762: cf98 sw a4,24(a5) + 3bc08764: 6105 addi sp,sp,32 + 3bc08766: 8082 ret + +000000003bc08768 : + 3bc08768: 000607b7 lui a5,0x60 + 3bc0876c: 08010737 lui a4,0x8010 + 3bc08770: 0799 addi a5,a5,6 + 3bc08772: c31c sw a5,0(a4) + 3bc08774: 1101 addi sp,sp,-32 + 3bc08776: e519 bnez a0,3bc08784 + 3bc08778: 200017b7 lui a5,0x20001 + 3bc0877c: 078a slli a5,a5,0x2 + 3bc0877e: a0078793 addi a5,a5,-1536 # 20000a00 + 3bc08782: a0ad j 3bc087ec + 3bc08784: 4785 li a5,1 + 3bc08786: 04f51c63 bne a0,a5,3bc087de + 3bc0878a: 6785 lui a5,0x1 + 3bc0878c: f0578793 addi a5,a5,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc08790: d35c sw a5,36(a4) + 3bc08792: 00003797 auipc a5,0x3 + 3bc08796: c467b783 ld a5,-954(a5) # 3bc0b3d8 + 3bc0879a: e43e sd a5,8(sp) + 3bc0879c: 00003797 auipc a5,0x3 + 3bc087a0: c447b783 ld a5,-956(a5) # 3bc0b3e0 + 3bc087a4: e83e sd a5,16(sp) + 3bc087a6: 478d li a5,3 + 3bc087a8: 07fa slli a5,a5,0x1e + 3bc087aa: 0785 addi a5,a5,1 + 3bc087ac: ec3e sd a5,24(sp) + 3bc087ae: 4722 lw a4,8(sp) + 3bc087b0: 080107b7 lui a5,0x8010 + 3bc087b4: c3b8 sw a4,64(a5) + 3bc087b6: 4732 lw a4,12(sp) + 3bc087b8: c3f8 sw a4,68(a5) + 3bc087ba: 4742 lw a4,16(sp) + 3bc087bc: c7b8 sw a4,72(a5) + 3bc087be: 4752 lw a4,20(sp) + 3bc087c0: c7f8 sw a4,76(a5) + 3bc087c2: 4762 lw a4,24(sp) + 3bc087c4: cbb8 sw a4,80(a5) + 3bc087c6: 4772 lw a4,28(sp) + 3bc087c8: cbf8 sw a4,84(a5) + 3bc087ca: 00100737 lui a4,0x100 + 3bc087ce: 0007a823 sw zero,16(a5) # 8010010 + 3bc087d2: 177d addi a4,a4,-1 + 3bc087d4: cbd8 sw a4,20(a5) + 3bc087d6: 4711 li a4,4 + 3bc087d8: cf98 sw a4,24(a5) + 3bc087da: 6105 addi sp,sp,32 + 3bc087dc: 8082 ret + 3bc087de: 4789 li a5,2 + 3bc087e0: 00f51a63 bne a0,a5,3bc087f4 + 3bc087e4: 00003797 auipc a5,0x3 + 3bc087e8: c047b783 ld a5,-1020(a5) # 3bc0b3e8 + 3bc087ec: e43e sd a5,8(sp) + 3bc087ee: e802 sd zero,16(sp) + 3bc087f0: ec02 sd zero,24(sp) + 3bc087f2: bf75 j 3bc087ae + 3bc087f4: 47c9 li a5,18 + 3bc087f6: 02f51563 bne a0,a5,3bc08820 + 3bc087fa: 080006b7 lui a3,0x8000 + 3bc087fe: 0846a783 lw a5,132(a3) # 8000084 + 3bc08802: 6709 lui a4,0x2 + 3bc08804: f0070713 addi a4,a4,-256 # 1f00 <__BSS_SIZE__-0x3d10> + 3bc08808: 2781 sext.w a5,a5 + 3bc0880a: 9b81 andi a5,a5,-32 + 3bc0880c: 01d7e793 ori a5,a5,29 + 3bc08810: 8fd9 or a5,a5,a4 + 3bc08812: 0000b717 auipc a4,0xb + 3bc08816: bcf72f23 sw a5,-1058(a4) # 3bc133f0 + 3bc0881a: 08f6a223 sw a5,132(a3) + 3bc0881e: b7d9 j 3bc087e4 + 3bc08820: 47c1 li a5,16 + 3bc08822: f8f516e3 bne a0,a5,3bc087ae + 3bc08826: 08000637 lui a2,0x8000 + 3bc0882a: 08462783 lw a5,132(a2) # 8000084 + 3bc0882e: 6689 lui a3,0x2 + 3bc08830: f0068693 addi a3,a3,-256 # 1f00 <__BSS_SIZE__-0x3d10> + 3bc08834: 2781 sext.w a5,a5 + 3bc08836: 9b81 andi a5,a5,-32 + 3bc08838: 0017e793 ori a5,a5,1 + 3bc0883c: 3007c713 xori a4,a5,768 + 3bc08840: 8f75 and a4,a4,a3 + 3bc08842: 8fb9 xor a5,a5,a4 + 3bc08844: 0000b717 auipc a4,0xb + 3bc08848: baf72623 sw a5,-1108(a4) # 3bc133f0 + 3bc0884c: 08f62223 sw a5,132(a2) + 3bc08850: b725 j 3bc08778 + +000000003bc08852 : + 3bc08852: 000607b7 lui a5,0x60 + 3bc08856: 08010737 lui a4,0x8010 + 3bc0885a: 0799 addi a5,a5,6 + 3bc0885c: c31c sw a5,0(a4) + 3bc0885e: 1101 addi sp,sp,-32 + 3bc08860: e909 bnez a0,3bc08872 + 3bc08862: 00003797 auipc a5,0x3 + 3bc08866: b8e7b783 ld a5,-1138(a5) # 3bc0b3f0 + 3bc0886a: e43e sd a5,8(sp) + 3bc0886c: e802 sd zero,16(sp) + 3bc0886e: ec02 sd zero,24(sp) + 3bc08870: a035 j 3bc0889c + 3bc08872: 4785 li a5,1 + 3bc08874: 04f51c63 bne a0,a5,3bc088cc + 3bc08878: 6785 lui a5,0x1 + 3bc0887a: f0578793 addi a5,a5,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc0887e: d35c sw a5,36(a4) + 3bc08880: 00003797 auipc a5,0x3 + 3bc08884: b587b783 ld a5,-1192(a5) # 3bc0b3d8 + 3bc08888: e43e sd a5,8(sp) + 3bc0888a: 00003797 auipc a5,0x3 + 3bc0888e: b567b783 ld a5,-1194(a5) # 3bc0b3e0 + 3bc08892: e83e sd a5,16(sp) + 3bc08894: 478d li a5,3 + 3bc08896: 07fa slli a5,a5,0x1e + 3bc08898: 0785 addi a5,a5,1 + 3bc0889a: ec3e sd a5,24(sp) + 3bc0889c: 4722 lw a4,8(sp) + 3bc0889e: 080107b7 lui a5,0x8010 + 3bc088a2: c3b8 sw a4,64(a5) + 3bc088a4: 4732 lw a4,12(sp) + 3bc088a6: c3f8 sw a4,68(a5) + 3bc088a8: 4742 lw a4,16(sp) + 3bc088aa: c7b8 sw a4,72(a5) + 3bc088ac: 4752 lw a4,20(sp) + 3bc088ae: c7f8 sw a4,76(a5) + 3bc088b0: 4762 lw a4,24(sp) + 3bc088b2: cbb8 sw a4,80(a5) + 3bc088b4: 4772 lw a4,28(sp) + 3bc088b6: cbf8 sw a4,84(a5) + 3bc088b8: 00100737 lui a4,0x100 + 3bc088bc: 0007a823 sw zero,16(a5) # 8010010 + 3bc088c0: 177d addi a4,a4,-1 + 3bc088c2: cbd8 sw a4,20(a5) + 3bc088c4: 4711 li a4,4 + 3bc088c6: cf98 sw a4,24(a5) + 3bc088c8: 6105 addi sp,sp,32 + 3bc088ca: 8082 ret + 3bc088cc: 47c5 li a5,17 + 3bc088ce: 00003717 auipc a4,0x3 + 3bc088d2: b2270713 addi a4,a4,-1246 # 3bc0b3f0 + 3bc088d6: 00f51f63 bne a0,a5,3bc088f4 + 3bc088da: 67c1 lui a5,0x10 + 3bc088dc: 30178793 addi a5,a5,769 # 10301 <__BSS_SIZE__+0xa6f1> + 3bc088e0: 0000b697 auipc a3,0xb + 3bc088e4: b0f6a823 sw a5,-1264(a3) # 3bc133f0 + 3bc088e8: 080006b7 lui a3,0x8000 + 3bc088ec: 18f6a823 sw a5,400(a3) # 8000190 + 3bc088f0: 631c ld a5,0(a4) + 3bc088f2: bfa5 j 3bc0886a + 3bc088f4: 47c9 li a5,18 + 3bc088f6: f6f516e3 bne a0,a5,3bc08862 + 3bc088fa: 67c9 lui a5,0x12 + 3bc088fc: f1d78793 addi a5,a5,-227 # 11f1d <__BSS_SIZE__+0xc30d> + 3bc08900: b7c5 j 3bc088e0 + +000000003bc08902 : + 3bc08902: 00060737 lui a4,0x60 + 3bc08906: 080107b7 lui a5,0x8010 + 3bc0890a: 0719 addi a4,a4,6 + 3bc0890c: c398 sw a4,0(a5) + 3bc0890e: 6705 lui a4,0x1 + 3bc08910: f0570713 addi a4,a4,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc08914: d3d8 sw a4,36(a5) + 3bc08916: 40103737 lui a4,0x40103 + 3bc0891a: 1101 addi sp,sp,-32 + 3bc0891c: e0070713 addi a4,a4,-512 # 40102e00 <__BL2_END__+0x44ef9f0> + 3bc08920: c63a sw a4,12(sp) + 3bc08922: 00401737 lui a4,0x401 + 3bc08926: 81770713 addi a4,a4,-2025 # 400817 <__BSS_SIZE__+0x3fac07> + 3bc0892a: 0726 slli a4,a4,0x9 + 3bc0892c: e83a sd a4,16(sp) + 3bc0892e: 40102737 lui a4,0x40102 + 3bc08932: ec02 sd zero,24(sp) + 3bc08934: 60070713 addi a4,a4,1536 # 40102600 <__BL2_END__+0x44ef1f0> + 3bc08938: c3b8 sw a4,64(a5) + 3bc0893a: 4732 lw a4,12(sp) + 3bc0893c: c3f8 sw a4,68(a5) + 3bc0893e: 4742 lw a4,16(sp) + 3bc08940: c7b8 sw a4,72(a5) + 3bc08942: 4752 lw a4,20(sp) + 3bc08944: c7f8 sw a4,76(a5) + 3bc08946: 4762 lw a4,24(sp) + 3bc08948: cbb8 sw a4,80(a5) + 3bc0894a: 4772 lw a4,28(sp) + 3bc0894c: cbf8 sw a4,84(a5) + 3bc0894e: 00100737 lui a4,0x100 + 3bc08952: 0007a823 sw zero,16(a5) # 8010010 + 3bc08956: 177d addi a4,a4,-1 + 3bc08958: cbd8 sw a4,20(a5) + 3bc0895a: 4711 li a4,4 + 3bc0895c: cf98 sw a4,24(a5) + 3bc0895e: 6105 addi sp,sp,32 + 3bc08960: 8082 ret + +000000003bc08962 : + 3bc08962: 000307b7 lui a5,0x30 + 3bc08966: 08010737 lui a4,0x8010 + 3bc0896a: 078d addi a5,a5,3 + 3bc0896c: c31c sw a5,0(a4) + 3bc0896e: 0000b897 auipc a7,0xb + 3bc08972: a8288893 addi a7,a7,-1406 # 3bc133f0 + 3bc08976: 08072783 lw a5,128(a4) # 8010080 + 3bc0897a: 08070693 addi a3,a4,128 + 3bc0897e: 2781 sext.w a5,a5 + 3bc08980: 00f8a023 sw a5,0(a7) + 3bc08984: 0047f813 andi a6,a5,4 + 3bc08988: fe0807e3 beqz a6,3bc08976 + 3bc0898c: 0c37b78b extu a5,a5,3,3 + 3bc08990: c79d beqz a5,3bc089be + 3bc08992: 00052023 sw zero,0(a0) + 3bc08996: e2e6c80b lwd a6,a4,(a3),1,3 + 3bc0899a: e4f6c50b lwd a0,a5,(a3),2,3 + 3bc0899e: 1702 slli a4,a4,0x20 + 3bc089a0: 7c08368b extu a3,a6,31,0 + 3bc089a4: 8f55 or a4,a4,a3 + 3bc089a6: 1782 slli a5,a5,0x20 + 3bc089a8: 7c05350b extu a0,a0,31,0 + 3bc089ac: e198 sd a4,0(a1) + 3bc089ae: 8fc9 or a5,a5,a0 + 3bc089b0: e21c sd a5,0(a2) + 3bc089b2: 080107b7 lui a5,0x8010 + 3bc089b6: 00050737 lui a4,0x50 + 3bc089ba: c398 sw a4,0(a5) + 3bc089bc: 8082 ret + 3bc089be: 4785 li a5,1 + 3bc089c0: c11c sw a5,0(a0) + 3bc089c2: 0005b023 sd zero,0(a1) + 3bc089c6: 00063023 sd zero,0(a2) + 3bc089ca: b7e5 j 3bc089b2 + +000000003bc089cc : + 3bc089cc: 7159 addi sp,sp,-112 + 3bc089ce: f0a2 sd s0,96(sp) + 3bc089d0: eca6 sd s1,88(sp) + 3bc089d2: e8ca sd s2,80(sp) + 3bc089d4: e4ce sd s3,72(sp) + 3bc089d6: e0d2 sd s4,64(sp) + 3bc089d8: fc56 sd s5,56(sp) + 3bc089da: f486 sd ra,104(sp) + 3bc089dc: f85a sd s6,48(sp) + 3bc089de: f45e sd s7,40(sp) + 3bc089e0: f062 sd s8,32(sp) + 3bc089e2: c93ff0ef jal ra,3bc08674 + 3bc089e6: 080017b7 lui a5,0x8001 + 3bc089ea: b147a403 lw s0,-1260(a5) # 8000b14 + 3bc089ee: b447a783 lw a5,-1212(a5) + 3bc089f2: 4925 li s2,9 + 3bc089f4: 080007b7 lui a5,0x8000 + 3bc089f8: 0947a483 lw s1,148(a5) # 8000094 + 3bc089fc: 2401 sext.w s0,s0 + 3bc089fe: 001f0a37 lui s4,0x1f0 + 3bc08a02: 2481 sext.w s1,s1 + 3bc08a04: 080019b7 lui s3,0x8001 + 3bc08a08: 4a85 li s5,1 + 3bc08a0a: 0109171b slliw a4,s2,0x10 + 3bc08a0e: 8f21 xor a4,a4,s0 + 3bc08a10: 01477733 and a4,a4,s4 + 3bc08a14: 8c39 xor s0,s0,a4 + 3bc08a16: 2401 sext.w s0,s0 + 3bc08a18: b089aa23 sw s0,-1260(s3) # 8000b14 + 3bc08a1c: b489a223 sw s0,-1212(s3) + 3bc08a20: 0830 addi a2,sp,24 + 3bc08a22: 080c addi a1,sp,16 + 3bc08a24: 0068 addi a0,sp,12 + 3bc08a26: f3dff0ef jal ra,3bc08962 + 3bc08a2a: 47b2 lw a5,12(sp) + 3bc08a2c: 00090c1b sext.w s8,s2 + 3bc08a30: ef8d bnez a5,3bc08a6a + 3bc08a32: 00f4f793 andi a5,s1,15 + 3bc08a36: 2785 addiw a5,a5,1 + 3bc08a38: 018787bb addw a5,a5,s8 + 3bc08a3c: 0107979b slliw a5,a5,0x10 + 3bc08a40: 8fa1 xor a5,a5,s0 + 3bc08a42: 0147f7b3 and a5,a5,s4 + 3bc08a46: 8c3d xor s0,s0,a5 + 3bc08a48: 2401 sext.w s0,s0 + 3bc08a4a: b089aa23 sw s0,-1260(s3) + 3bc08a4e: b489a223 sw s0,-1212(s3) + 3bc08a52: 70a6 ld ra,104(sp) + 3bc08a54: 7406 ld s0,96(sp) + 3bc08a56: 64e6 ld s1,88(sp) + 3bc08a58: 6946 ld s2,80(sp) + 3bc08a5a: 69a6 ld s3,72(sp) + 3bc08a5c: 6a06 ld s4,64(sp) + 3bc08a5e: 7ae2 ld s5,56(sp) + 3bc08a60: 7b42 ld s6,48(sp) + 3bc08a62: 7ba2 ld s7,40(sp) + 3bc08a64: 7c02 ld s8,32(sp) + 3bc08a66: 6165 addi sp,sp,112 + 3bc08a68: 8082 ret + 3bc08a6a: 397d addiw s2,s2,-1 + 3bc08a6c: f9591fe3 bne s2,s5,3bc08a0a + 3bc08a70: b7cd j 3bc08a52 + +000000003bc08a72 : + 3bc08a72: 080067b7 lui a5,0x8006 + 3bc08a76: 47fc lw a5,76(a5) + 3bc08a78: 0000b717 auipc a4,0xb + 3bc08a7c: 97870713 addi a4,a4,-1672 # 3bc133f0 + 3bc08a80: 2781 sext.w a5,a5 + 3bc08a82: c31c sw a5,0(a4) + 3bc08a84: 1447b78b extu a5,a5,5,4 + 3bc08a88: cf9d beqz a5,3bc08ac6 + 3bc08a8a: 080006b7 lui a3,0x8000 + 3bc08a8e: 42bc lw a5,64(a3) + 3bc08a90: 7601 lui a2,0xfffe0 + 3bc08a92: 1675 addi a2,a2,-3 + 3bc08a94: 2781 sext.w a5,a5 + 3bc08a96: 8ff1 and a5,a5,a2 + 3bc08a98: c31c sw a5,0(a4) + 3bc08a9a: c2bc sw a5,64(a3) + 3bc08a9c: 42bc lw a5,64(a3) + 3bc08a9e: 00020637 lui a2,0x20 + 3bc08aa2: 0609 addi a2,a2,2 + 3bc08aa4: 2781 sext.w a5,a5 + 3bc08aa6: 8fd1 or a5,a5,a2 + 3bc08aa8: c2bc sw a5,64(a3) + 3bc08aaa: 0000b797 auipc a5,0xb + 3bc08aae: 9407a323 sw zero,-1722(a5) # 3bc133f0 + 3bc08ab2: 08003637 lui a2,0x8003 + 3bc08ab6: 66c1 lui a3,0x10 + 3bc08ab8: 4a5c lw a5,20(a2) + 3bc08aba: 2781 sext.w a5,a5 + 3bc08abc: c31c sw a5,0(a4) + 3bc08abe: 8ff5 and a5,a5,a3 + 3bc08ac0: 2781 sext.w a5,a5 + 3bc08ac2: dbfd beqz a5,3bc08ab8 + 3bc08ac4: 8082 ret + 3bc08ac6: 08000637 lui a2,0x8000 + 3bc08aca: 423c lw a5,64(a2) + 3bc08acc: 7681 lui a3,0xfffe0 + 3bc08ace: 16f5 addi a3,a3,-3 + 3bc08ad0: 2781 sext.w a5,a5 + 3bc08ad2: 8ff5 and a5,a5,a3 + 3bc08ad4: c31c sw a5,0(a4) + 3bc08ad6: c23c sw a5,64(a2) + 3bc08ad8: 8082 ret + +000000003bc08ada : + 3bc08ada: 080066b7 lui a3,0x8006 + 3bc08ade: 46dc lw a5,12(a3) + 3bc08ae0: 7769 lui a4,0xffffa + 3bc08ae2: 177d addi a4,a4,-1 + 3bc08ae4: 2781 sext.w a5,a5 + 3bc08ae6: 8ff9 and a5,a5,a4 + 3bc08ae8: 03003737 lui a4,0x3003 + 3bc08aec: c6dc sw a5,12(a3) + 3bc08aee: 90070713 addi a4,a4,-1792 # 3002900 <__BSS_SIZE__+0x2ffccf0> + 3bc08af2: 0000b797 auipc a5,0xb + 3bc08af6: 8d67a783 lw a5,-1834(a5) # 3bc133c8 + 3bc08afa: cb7c sw a5,84(a4) + 3bc08afc: 0000b797 auipc a5,0xb + 3bc08b00: 8d47d783 lhu a5,-1836(a5) # 3bc133d0 + 3bc08b04: cf3c sw a5,88(a4) + 3bc08b06: 0000b797 auipc a5,0xb + 3bc08b0a: 8d27b783 ld a5,-1838(a5) # 3bc133d8 + 3bc08b0e: 5c07b78b extu a5,a5,23,0 + 3bc08b12: 2781 sext.w a5,a5 + 3bc08b14: 0000b697 auipc a3,0xb + 3bc08b18: 8dc68693 addi a3,a3,-1828 # 3bc133f0 + 3bc08b1c: c29c sw a5,0(a3) + 3bc08b1e: cf7c sw a5,92(a4) + 3bc08b20: 4b3c lw a5,80(a4) + 3bc08b22: 2781 sext.w a5,a5 + 3bc08b24: 0017c793 xori a5,a5,1 + 3bc08b28: fa17f793 andi a5,a5,-95 + 3bc08b2c: 0207e793 ori a5,a5,32 + 3bc08b30: c29c sw a5,0(a3) + 3bc08b32: cb3c sw a5,80(a4) + 3bc08b34: 8082 ret + +000000003bc08b36 : + 3bc08b36: 08006737 lui a4,0x8006 + 3bc08b3a: 475c lw a5,12(a4) + 3bc08b3c: 6691 lui a3,0x4 + 3bc08b3e: 8fd5 or a5,a5,a3 + 3bc08b40: 0000b697 auipc a3,0xb + 3bc08b44: 8af6a823 sw a5,-1872(a3) # 3bc133f0 + 3bc08b48: c75c sw a5,12(a4) + 3bc08b4a: 8082 ret + +000000003bc08b4c : + 3bc08b4c: 08006737 lui a4,0x8006 + 3bc08b50: 475c lw a5,12(a4) + 3bc08b52: 6689 lui a3,0x2 + 3bc08b54: 8fd5 or a5,a5,a3 + 3bc08b56: 0000b697 auipc a3,0xb + 3bc08b5a: 88f6ad23 sw a5,-1894(a3) # 3bc133f0 + 3bc08b5e: c75c sw a5,12(a4) + 3bc08b60: 8082 ret + +000000003bc08b62 : + 3bc08b62: 1101 addi sp,sp,-32 + 3bc08b64: 0000b797 auipc a5,0xb + 3bc08b68: 8807a623 sw zero,-1908(a5) # 3bc133f0 + 3bc08b6c: 080066b7 lui a3,0x8006 + 3bc08b70: e822 sd s0,16(sp) + 3bc08b72: ec06 sd ra,24(sp) + 3bc08b74: e426 sd s1,8(sp) + 3bc08b76: e04a sd s2,0(sp) + 3bc08b78: 0006a223 sw zero,4(a3) # 8006004 + 3bc08b7c: 0006a423 sw zero,8(a3) + 3bc08b80: 46dc lw a5,12(a3) + 3bc08b82: 0000b417 auipc s0,0xb + 3bc08b86: 86e40413 addi s0,s0,-1938 # 3bc133f0 + 3bc08b8a: 2781 sext.w a5,a5 + 3bc08b8c: f7f7f793 andi a5,a5,-129 + 3bc08b90: c01c sw a5,0(s0) + 3bc08b92: c6dc sw a5,12(a3) + 3bc08b94: 46fc lw a5,76(a3) + 3bc08b96: c01c sw a5,0(s0) + 3bc08b98: 46fc lw a5,76(a3) + 3bc08b9a: c01c sw a5,0(s0) + 3bc08b9c: 46fc lw a5,76(a3) + 3bc08b9e: c01c sw a5,0(s0) + 3bc08ba0: 46fc lw a5,76(a3) + 3bc08ba2: c01c sw a5,0(s0) + 3bc08ba4: 46fc lw a5,76(a3) + 3bc08ba6: c01c sw a5,0(s0) + 3bc08ba8: 46f8 lw a4,76(a3) + 3bc08baa: 0007079b sext.w a5,a4 + 3bc08bae: 8b05 andi a4,a4,1 + 3bc08bb0: c315 beqz a4,3bc08bd4 + 3bc08bb2: 2487b60b extu a2,a5,9,8 + 3bc08bb6: 1447b70b extu a4,a5,5,4 + 3bc08bba: e629 bnez a2,3bc08c04 + 3bc08bbc: fcf7f793 andi a5,a5,-49 + 3bc08bc0: 0087171b slliw a4,a4,0x8 + 3bc08bc4: 8f3d xor a4,a4,a5 + 3bc08bc6: 30077713 andi a4,a4,768 + 3bc08bca: 8fb9 xor a5,a5,a4 + 3bc08bcc: c01c sw a5,0(s0) + 3bc08bce: c6fc sw a5,76(a3) + 3bc08bd0: f7dff0ef jal ra,3bc08b4c + 3bc08bd4: 4685 li a3,1 + 3bc08bd6: c014 sw a3,0(s0) + 3bc08bd8: 08006737 lui a4,0x8006 + 3bc08bdc: c354 sw a3,4(a4) + 3bc08bde: 475c lw a5,12(a4) + 3bc08be0: 64a1 lui s1,0x8 + 3bc08be2: 08006937 lui s2,0x8006 + 3bc08be6: 2781 sext.w a5,a5 + 3bc08be8: 0807e793 ori a5,a5,128 + 3bc08bec: c75c sw a5,12(a4) + 3bc08bee: c014 sw a3,0(s0) + 3bc08bf0: c714 sw a3,8(a4) + 3bc08bf2: 401c lw a5,0(s0) + 3bc08bf4: 8fe5 and a5,a5,s1 + 3bc08bf6: cbb9 beqz a5,3bc08c4c + 3bc08bf8: 60e2 ld ra,24(sp) + 3bc08bfa: 6442 ld s0,16(sp) + 3bc08bfc: 64a2 ld s1,8(sp) + 3bc08bfe: 6902 ld s2,0(sp) + 3bc08c00: 6105 addi sp,sp,32 + 3bc08c02: 8082 ret + 3bc08c04: 4589 li a1,2 + 3bc08c06: 02b61163 bne a2,a1,3bc08c28 + 3bc08c0a: fcf7f793 andi a5,a5,-49 + 3bc08c0e: 0207e793 ori a5,a5,32 + 3bc08c12: 0087171b slliw a4,a4,0x8 + 3bc08c16: 8f3d xor a4,a4,a5 + 3bc08c18: 30077713 andi a4,a4,768 + 3bc08c1c: 8fb9 xor a5,a5,a4 + 3bc08c1e: c01c sw a5,0(s0) + 3bc08c20: c6fc sw a5,76(a3) + 3bc08c22: eb9ff0ef jal ra,3bc08ada + 3bc08c26: b77d j 3bc08bd4 + 3bc08c28: 4585 li a1,1 + 3bc08c2a: fab615e3 bne a2,a1,3bc08bd4 + 3bc08c2e: fcf7f793 andi a5,a5,-49 + 3bc08c32: 0107e793 ori a5,a5,16 + 3bc08c36: 0087171b slliw a4,a4,0x8 + 3bc08c3a: 8f3d xor a4,a4,a5 + 3bc08c3c: 30077713 andi a4,a4,768 + 3bc08c40: 8fb9 xor a5,a5,a4 + 3bc08c42: c01c sw a5,0(s0) + 3bc08c44: c6fc sw a5,76(a3) + 3bc08c46: ef1ff0ef jal ra,3bc08b36 + 3bc08c4a: b769 j 3bc08bd4 + 3bc08c4c: 01092783 lw a5,16(s2) # 8006010 + 3bc08c50: 4501 li a0,0 + 3bc08c52: c01c sw a5,0(s0) + 3bc08c54: d36f70ef jal ra,3bc0018a + 3bc08c58: bf69 j 3bc08bf2 + +000000003bc08c5a : + 3bc08c5a: 080067b7 lui a5,0x8006 + 3bc08c5e: 43b4 lw a3,64(a5) + 3bc08c60: bf000737 lui a4,0xbf000 + 3bc08c64: 377d addiw a4,a4,-1 + 3bc08c66: 8f75 and a4,a4,a3 + 3bc08c68: 0000a697 auipc a3,0xa + 3bc08c6c: 78868693 addi a3,a3,1928 # 3bc133f0 + 3bc08c70: c298 sw a4,0(a3) + 3bc08c72: c3b8 sw a4,64(a5) + 3bc08c74: 43b8 lw a4,64(a5) + 3bc08c76: 0006a023 sw zero,0(a3) + 3bc08c7a: 0407a023 sw zero,64(a5) # 8006040 + 3bc08c7e: 4fd8 lw a4,28(a5) + 3bc08c80: 2701 sext.w a4,a4 + 3bc08c82: 08076713 ori a4,a4,128 + 3bc08c86: cfd8 sw a4,28(a5) + 3bc08c88: 0006a023 sw zero,0(a3) + 3bc08c8c: 0007a023 sw zero,0(a5) + 3bc08c90: 4fd8 lw a4,28(a5) + 3bc08c92: 2701 sext.w a4,a4 + 3bc08c94: f7f77713 andi a4,a4,-129 + 3bc08c98: c298 sw a4,0(a3) + 3bc08c9a: cfd8 sw a4,28(a5) + 3bc08c9c: 8082 ret + +000000003bc08c9e : + 3bc08c9e: 1141 addi sp,sp,-16 + 3bc08ca0: e406 sd ra,8(sp) + 3bc08ca2: e022 sd s0,0(sp) + 3bc08ca4: ebfff0ef jal ra,3bc08b62 + 3bc08ca8: 08000737 lui a4,0x8000 + 3bc08cac: 15472783 lw a5,340(a4) # 8000154 + 3bc08cb0: 0000a417 auipc s0,0xa + 3bc08cb4: 74040413 addi s0,s0,1856 # 3bc133f0 + 3bc08cb8: 2781 sext.w a5,a5 + 3bc08cba: 9bf9 andi a5,a5,-2 + 3bc08cbc: 14f72a23 sw a5,340(a4) + 3bc08cc0: 00042023 sw zero,0(s0) + 3bc08cc4: 12072823 sw zero,304(a4) + 3bc08cc8: dabff0ef jal ra,3bc08a72 + 3bc08ccc: 080067b7 lui a5,0x8006 + 3bc08cd0: 80000737 lui a4,0x80000 + 3bc08cd4: c3b8 sw a4,64(a5) + 3bc08cd6: 00042023 sw zero,0(s0) + 3bc08cda: 60a2 ld ra,8(sp) + 3bc08cdc: 6402 ld s0,0(sp) + 3bc08cde: 0007a023 sw zero,0(a5) # 8006000 + 3bc08ce2: 0141 addi sp,sp,16 + 3bc08ce4: 8082 ret + +000000003bc08ce6 : + 3bc08ce6: 080007b7 lui a5,0x8000 + 3bc08cea: 10078693 addi a3,a5,256 # 8000100 + 3bc08cee: 4af8 lw a4,84(a3) + 3bc08cf0: 0000a617 auipc a2,0xa + 3bc08cf4: 70060613 addi a2,a2,1792 # 3bc133f0 + 3bc08cf8: 20078793 addi a5,a5,512 + 3bc08cfc: 2701 sext.w a4,a4 + 3bc08cfe: 9b79 andi a4,a4,-2 + 3bc08d00: caf8 sw a4,84(a3) + 3bc08d02: 00062023 sw zero,0(a2) + 3bc08d06: f207a823 sw zero,-208(a5) + 3bc08d0a: 43d4 lw a3,4(a5) + 3bc08d0c: 000405b7 lui a1,0x40 + 3bc08d10: 8ecd or a3,a3,a1 + 3bc08d12: c214 sw a3,0(a2) + 3bc08d14: c3d4 sw a3,4(a5) + 3bc08d16: 53d8 lw a4,36(a5) + 3bc08d18: 8f4d or a4,a4,a1 + 3bc08d1a: c218 sw a4,0(a2) + 3bc08d1c: d3d8 sw a4,36(a5) + 3bc08d1e: 8082 ret + +000000003bc08d20 : + 3bc08d20: 08004737 lui a4,0x8004 + 3bc08d24: 0000a697 auipc a3,0xa + 3bc08d28: 6cc68693 addi a3,a3,1740 # 3bc133f0 + 3bc08d2c: 1bc72783 lw a5,444(a4) # 80041bc + 3bc08d30: 2781 sext.w a5,a5 + 3bc08d32: c29c sw a5,0(a3) + 3bc08d34: 8b85 andi a5,a5,1 + 3bc08d36: dbfd beqz a5,3bc08d2c + 3bc08d38: 32072023 sw zero,800(a4) + 3bc08d3c: 1b072783 lw a5,432(a4) + 3bc08d40: 2781 sext.w a5,a5 + 3bc08d42: fc07f793 andi a5,a5,-64 + 3bc08d46: 0057e793 ori a5,a5,5 + 3bc08d4a: c29c sw a5,0(a3) + 3bc08d4c: 1af72823 sw a5,432(a4) + 3bc08d50: 4785 li a5,1 + 3bc08d52: 32f72023 sw a5,800(a4) + 3bc08d56: 8082 ret + +000000003bc08d58 : + 3bc08d58: 080036b7 lui a3,0x8003 + 3bc08d5c: 0000a717 auipc a4,0xa + 3bc08d60: 69470713 addi a4,a4,1684 # 3bc133f0 + 3bc08d64: 569c lw a5,40(a3) + 3bc08d66: 2781 sext.w a5,a5 + 3bc08d68: c31c sw a5,0(a4) + 3bc08d6a: 1007f793 andi a5,a5,256 + 3bc08d6e: dbfd beqz a5,3bc08d64 + 3bc08d70: 8082 ret + +000000003bc08d72 : + 3bc08d72: 1141 addi sp,sp,-16 + 3bc08d74: 4551 li a0,20 + 3bc08d76: e406 sd ra,8(sp) + 3bc08d78: c12f70ef jal ra,3bc0018a + 3bc08d7c: 080007b7 lui a5,0x8000 + 3bc08d80: 4741 li a4,16 + 3bc08d82: 12e7a023 sw a4,288(a5) # 8000120 + 3bc08d86: 60a2 ld ra,8(sp) + 3bc08d88: 4705 li a4,1 + 3bc08d8a: 0000a697 auipc a3,0xa + 3bc08d8e: 66e6a323 sw a4,1638(a3) # 3bc133f0 + 3bc08d92: 10e7ac23 sw a4,280(a5) + 3bc08d96: 0141 addi sp,sp,16 + 3bc08d98: 8082 ret + +000000003bc08d9a : + 3bc08d9a: 1141 addi sp,sp,-16 + 3bc08d9c: e406 sd ra,8(sp) + 3bc08d9e: 0000a797 auipc a5,0xa + 3bc08da2: 65278793 addi a5,a5,1618 # 3bc133f0 + 3bc08da6: 0007a023 sw zero,0(a5) + 3bc08daa: 08000737 lui a4,0x8000 + 3bc08dae: 10072c23 sw zero,280(a4) # 8000118 + 3bc08db2: 08006737 lui a4,0x8006 + 3bc08db6: 4778 lw a4,76(a4) + 3bc08db8: c398 sw a4,0(a5) + 3bc08dba: ee5ff0ef jal ra,3bc08c9e + 3bc08dbe: 60a2 ld ra,8(sp) + 3bc08dc0: 0141 addi sp,sp,16 + 3bc08dc2: fb1ff06f j 3bc08d72 + +000000003bc08dc6 : + 3bc08dc6: 08004637 lui a2,0x8004 + 3bc08dca: 0000a697 auipc a3,0xa + 3bc08dce: 62668693 addi a3,a3,1574 # 3bc133f0 + 3bc08dd2: 4705 li a4,1 + 3bc08dd4: 425c lw a5,4(a2) + 3bc08dd6: 2781 sext.w a5,a5 + 3bc08dd8: c29c sw a5,0(a3) + 3bc08dda: 8b9d andi a5,a5,7 + 3bc08ddc: fee79ce3 bne a5,a4,3bc08dd4 + 3bc08de0: 8082 ret + +000000003bc08de2 : + 3bc08de2: 4785 li a5,1 + 3bc08de4: 0000a717 auipc a4,0xa + 3bc08de8: 60c70713 addi a4,a4,1548 # 3bc133f0 + 3bc08dec: 080006b7 lui a3,0x8000 + 3bc08df0: c31c sw a5,0(a4) + 3bc08df2: 16f6aa23 sw a5,372(a3) # 8000174 + 3bc08df6: 08003637 lui a2,0x8003 + 3bc08dfa: 468d li a3,3 + 3bc08dfc: 5a1c lw a5,48(a2) + 3bc08dfe: 2781 sext.w a5,a5 + 3bc08e00: c31c sw a5,0(a4) + 3bc08e02: 2487b78b extu a5,a5,9,8 + 3bc08e06: fed79be3 bne a5,a3,3bc08dfc + 3bc08e0a: 4785 li a5,1 + 3bc08e0c: 02f51a63 bne a0,a5,3bc08e40 + 3bc08e10: 0800a7b7 lui a5,0x800a + 3bc08e14: 46ed li a3,27 + 3bc08e16: c394 sw a3,0(a5) + 3bc08e18: 0800a7b7 lui a5,0x800a + 3bc08e1c: 4685 li a3,1 + 3bc08e1e: c3d4 sw a3,4(a5) + 3bc08e20: 020006b7 lui a3,0x2000 + 3bc08e24: fcb68693 addi a3,a3,-53 # 1ffffcb <__BSS_SIZE__+0x1ffa3bb> + 3bc08e28: c794 sw a3,8(a5) + 3bc08e2a: 400006b7 lui a3,0x40000 + 3bc08e2e: 16fd addi a3,a3,-1 + 3bc08e30: c7d4 sw a3,12(a5) + 3bc08e32: 47c1 li a5,16 + 3bc08e34: c31c sw a5,0(a4) + 3bc08e36: 08000737 lui a4,0x8000 + 3bc08e3a: 16f72a23 sw a5,372(a4) # 8000174 + 3bc08e3e: 8082 ret + 3bc08e40: 0800a7b7 lui a5,0x800a + 3bc08e44: 0007a023 sw zero,0(a5) # 800a000 + 3bc08e48: bfc1 j 3bc08e18 + +000000003bc08e4a : + 3bc08e4a: 8082 ret + +000000003bc08e4c : + 3bc08e4c: 08004737 lui a4,0x8004 + 3bc08e50: 080037b7 lui a5,0x8003 + 3bc08e54: 439c lw a5,0(a5) + 3bc08e56: 19072683 lw a3,400(a4) # 8004190 + 3bc08e5a: 0000a797 auipc a5,0xa + 3bc08e5e: 59678793 addi a5,a5,1430 # 3bc133f0 + 3bc08e62: c394 sw a3,0(a5) + 3bc08e64: 19472703 lw a4,404(a4) + 3bc08e68: c398 sw a4,0(a5) + 3bc08e6a: 8082 ret + +000000003bc08e6c : + 3bc08e6c: 08004737 lui a4,0x8004 + 3bc08e70: 32072023 sw zero,800(a4) # 8004320 + 3bc08e74: 1b072783 lw a5,432(a4) + 3bc08e78: 2781 sext.w a5,a5 + 3bc08e7a: 0207e793 ori a5,a5,32 + 3bc08e7e: 0000a697 auipc a3,0xa + 3bc08e82: 56f6a923 sw a5,1394(a3) # 3bc133f0 + 3bc08e86: 1af72823 sw a5,432(a4) + 3bc08e8a: 4785 li a5,1 + 3bc08e8c: 32f72023 sw a5,800(a4) + 3bc08e90: 8082 ret + +000000003bc08e92 : + 3bc08e92: 08006737 lui a4,0x8006 + 3bc08e96: 000807b7 lui a5,0x80 + 3bc08e9a: 02072423 sw zero,40(a4) # 8006028 + 3bc08e9e: 0785 addi a5,a5,1 + 3bc08ea0: 030036b7 lui a3,0x3003 + 3bc08ea4: cb7c sw a5,84(a4) + 3bc08ea6: 90068693 addi a3,a3,-1792 # 3002900 <__BSS_SIZE__+0x2ffccf0> + 3bc08eaa: 0000a797 auipc a5,0xa + 3bc08eae: 51e7a783 lw a5,1310(a5) # 3bc133c8 + 3bc08eb2: cafc sw a5,84(a3) + 3bc08eb4: 0000a797 auipc a5,0xa + 3bc08eb8: 51c7d783 lhu a5,1308(a5) # 3bc133d0 + 3bc08ebc: cebc sw a5,88(a3) + 3bc08ebe: 0000a797 auipc a5,0xa + 3bc08ec2: 51a7b783 ld a5,1306(a5) # 3bc133d8 + 3bc08ec6: 5c07b78b extu a5,a5,23,0 + 3bc08eca: 0000a617 auipc a2,0xa + 3bc08ece: 52660613 addi a2,a2,1318 # 3bc133f0 + 3bc08ed2: 2781 sext.w a5,a5 + 3bc08ed4: c21c sw a5,0(a2) + 3bc08ed6: cefc sw a5,92(a3) + 3bc08ed8: 4abc lw a5,80(a3) + 3bc08eda: 2781 sext.w a5,a5 + 3bc08edc: 0017c793 xori a5,a5,1 + 3bc08ee0: fa17f793 andi a5,a5,-95 + 3bc08ee4: 0207e793 ori a5,a5,32 + 3bc08ee8: c21c sw a5,0(a2) + 3bc08eea: cabc sw a5,80(a3) + 3bc08eec: 475c lw a5,12(a4) + 3bc08eee: 2781 sext.w a5,a5 + 3bc08ef0: 30b7c693 xori a3,a5,779 + 3bc08ef4: 3c06b68b extu a3,a3,15,0 + 3bc08ef8: 8fb5 xor a5,a5,a3 + 3bc08efa: c21c sw a5,0(a2) + 3bc08efc: c75c sw a5,12(a4) + 3bc08efe: 4b1c lw a5,16(a4) + 3bc08f00: 080066b7 lui a3,0x8006 + 3bc08f04: 2781 sext.w a5,a5 + 3bc08f06: f007f793 andi a5,a5,-256 + 3bc08f0a: cb1c sw a5,16(a4) + 3bc08f0c: 4785 li a5,1 + 3bc08f0e: c21c sw a5,0(a2) + 3bc08f10: c35c sw a5,4(a4) + 3bc08f12: 475c lw a5,12(a4) + 3bc08f14: 2781 sext.w a5,a5 + 3bc08f16: 0807e793 ori a5,a5,128 + 3bc08f1a: c21c sw a5,0(a2) + 3bc08f1c: c75c sw a5,12(a4) + 3bc08f1e: 6721 lui a4,0x8 + 3bc08f20: 4a9c lw a5,16(a3) + 3bc08f22: 2781 sext.w a5,a5 + 3bc08f24: c21c sw a5,0(a2) + 3bc08f26: 8ff9 and a5,a5,a4 + 3bc08f28: 2781 sext.w a5,a5 + 3bc08f2a: dbfd beqz a5,3bc08f20 + 3bc08f2c: 8082 ret + +000000003bc08f2e : + 3bc08f2e: 6785 lui a5,0x1 + 3bc08f30: 08006737 lui a4,0x8006 + 3bc08f34: 2f578793 addi a5,a5,757 # 12f5 <__BSS_SIZE__-0x491b> + 3bc08f38: c37c sw a5,68(a4) + 3bc08f3a: 0000a697 auipc a3,0xa + 3bc08f3e: 4b668693 addi a3,a3,1206 # 3bc133f0 + 3bc08f42: 0006a023 sw zero,0(a3) + 3bc08f46: 080007b7 lui a5,0x8000 + 3bc08f4a: 0e07aa23 sw zero,244(a5) # 80000f4 + 3bc08f4e: 080047b7 lui a5,0x8004 + 3bc08f52: 5b98 lw a4,48(a5) + 3bc08f54: 767d lui a2,0xfffff + 3bc08f56: 5ff60613 addi a2,a2,1535 # fffffffffffff5ff <__BL2_END__+0xffffffffc43ec1ef> + 3bc08f5a: 2701 sext.w a4,a4 + 3bc08f5c: 8f71 and a4,a4,a2 + 3bc08f5e: c298 sw a4,0(a3) + 3bc08f60: db98 sw a4,48(a5) + 3bc08f62: 10078793 addi a5,a5,256 # 8004100 + 3bc08f66: 47b8 lw a4,72(a5) + 3bc08f68: 7f800637 lui a2,0x7f800 + 3bc08f6c: 167d addi a2,a2,-1 + 3bc08f6e: 2701 sext.w a4,a4 + 3bc08f70: 8f71 and a4,a4,a2 + 3bc08f72: c298 sw a4,0(a3) + 3bc08f74: c7b8 sw a4,72(a5) + 3bc08f76: 8082 ret + +000000003bc08f78 : + 3bc08f78: 679d lui a5,0x7 + 3bc08f7a: 0000a617 auipc a2,0xa + 3bc08f7e: 47660613 addi a2,a2,1142 # 3bc133f0 + 3bc08f82: c8178793 addi a5,a5,-895 # 6c81 <__BSS_SIZE__+0x1071> + 3bc08f86: c21c sw a5,0(a2) + 3bc08f88: 08006737 lui a4,0x8006 + 3bc08f8c: c37c sw a5,68(a4) + 3bc08f8e: 08004737 lui a4,0x8004 + 3bc08f92: 18070593 addi a1,a4,384 # 8004180 + 3bc08f96: 499c lw a5,16(a1) + 3bc08f98: 060006b7 lui a3,0x6000 + 3bc08f9c: 1f000537 lui a0,0x1f000 + 3bc08fa0: 2781 sext.w a5,a5 + 3bc08fa2: 8ebd xor a3,a3,a5 + 3bc08fa4: 8ee9 and a3,a3,a0 + 3bc08fa6: 8fb5 xor a5,a5,a3 + 3bc08fa8: 2781 sext.w a5,a5 + 3bc08faa: c99c sw a5,16(a1) + 3bc08fac: 000307b7 lui a5,0x30 + 3bc08fb0: 03378793 addi a5,a5,51 # 30033 <__BSS_SIZE__+0x2a423> + 3bc08fb4: c21c sw a5,0(a2) + 3bc08fb6: 080006b7 lui a3,0x8000 + 3bc08fba: 0ef6aa23 sw a5,244(a3) # 80000f4 + 3bc08fbe: 5b1c lw a5,48(a4) + 3bc08fc0: 76fd lui a3,0xfffff + 3bc08fc2: bff68693 addi a3,a3,-1025 # ffffffffffffebff <__BL2_END__+0xffffffffc43eb7ef> + 3bc08fc6: 2781 sext.w a5,a5 + 3bc08fc8: 8ff5 and a5,a5,a3 + 3bc08fca: 6685 lui a3,0x1 + 3bc08fcc: a0068693 addi a3,a3,-1536 # a00 <__BSS_SIZE__-0x5210> + 3bc08fd0: 8fd5 or a5,a5,a3 + 3bc08fd2: c21c sw a5,0(a2) + 3bc08fd4: db1c sw a5,48(a4) + 3bc08fd6: 10070713 addi a4,a4,256 + 3bc08fda: 473c lw a5,72(a4) + 3bc08fdc: 808006b7 lui a3,0x80800 + 3bc08fe0: 8fd5 or a5,a5,a3 + 3bc08fe2: c21c sw a5,0(a2) + 3bc08fe4: c73c sw a5,72(a4) + 3bc08fe6: 8082 ret + +000000003bc08fe8 : + 3bc08fe8: 1101 addi sp,sp,-32 + 3bc08fea: e426 sd s1,8(sp) + 3bc08fec: ec06 sd ra,24(sp) + 3bc08fee: e822 sd s0,16(sp) + 3bc08ff0: e04a sd s2,0(sp) + 3bc08ff2: 080047b7 lui a5,0x8004 + 3bc08ff6: 5407a023 sw zero,1344(a5) # 8004540 + 3bc08ffa: 5e07a823 sw zero,1520(a5) + 3bc08ffe: 6a07a023 sw zero,1696(a5) + 3bc09002: 08004737 lui a4,0x8004 + 3bc09006: 0000a497 auipc s1,0xa + 3bc0900a: 3ea48493 addi s1,s1,1002 # 3bc133f0 + 3bc0900e: 3fc72783 lw a5,1020(a4) # 80043fc + 3bc09012: 2781 sext.w a5,a5 + 3bc09014: c09c sw a5,0(s1) + 3bc09016: ffe5 bnez a5,3bc0900e + 3bc09018: 5b1c lw a5,48(a4) + 3bc0901a: 0007841b sext.w s0,a5 + 3bc0901e: fd447693 andi a3,s0,-44 + 3bc09022: c094 sw a3,0(s1) + 3bc09024: db14 sw a3,48(a4) + 3bc09026: 0017f913 andi s2,a5,1 + 3bc0902a: f05ff0ef jal ra,3bc08f2e + 3bc0902e: ef4ff0ef jal ra,3bc08722 + 3bc09032: 080006b7 lui a3,0x8000 + 3bc09036: 1846a703 lw a4,388(a3) # 8000184 + 3bc0903a: 080037b7 lui a5,0x8003 + 3bc0903e: 2701 sext.w a4,a4 + 3bc09040: 00176713 ori a4,a4,1 + 3bc09044: c098 sw a4,0(s1) + 3bc09046: 18e6a223 sw a4,388(a3) + 3bc0904a: 4447a703 lw a4,1092(a5) # 8003444 + 3bc0904e: 2701 sext.w a4,a4 + 3bc09050: c098 sw a4,0(s1) + 3bc09052: 8b09 andi a4,a4,2 + 3bc09054: db7d beqz a4,3bc0904a + 3bc09056: 080107b7 lui a5,0x8010 + 3bc0905a: 00040737 lui a4,0x40 + 3bc0905e: c398 sw a4,0(a5) + 3bc09060: 080046b7 lui a3,0x8004 + 3bc09064: 5a98 lw a4,48(a3) + 3bc09066: 60e2 ld ra,24(sp) + 3bc09068: 2701 sext.w a4,a4 + 3bc0906a: 00874633 xor a2,a4,s0 + 3bc0906e: 02067613 andi a2,a2,32 + 3bc09072: 8f31 xor a4,a4,a2 + 3bc09074: 00874633 xor a2,a4,s0 + 3bc09078: 8a21 andi a2,a2,8 + 3bc0907a: 8f31 xor a4,a4,a2 + 3bc0907c: 008747b3 xor a5,a4,s0 + 3bc09080: 8b89 andi a5,a5,2 + 3bc09082: 8fb9 xor a5,a5,a4 + 3bc09084: 9bf9 andi a5,a5,-2 + 3bc09086: 0127e7b3 or a5,a5,s2 + 3bc0908a: c09c sw a5,0(s1) + 3bc0908c: da9c sw a5,48(a3) + 3bc0908e: 50068713 addi a4,a3,1280 # 8004500 + 3bc09092: 4785 li a5,1 + 3bc09094: c33c sw a5,64(a4) + 3bc09096: 6442 ld s0,16(sp) + 3bc09098: 58068713 addi a4,a3,1408 + 3bc0909c: 64a2 ld s1,8(sp) + 3bc0909e: 6902 ld s2,0(sp) + 3bc090a0: db3c sw a5,112(a4) + 3bc090a2: 68068693 addi a3,a3,1664 + 3bc090a6: d29c sw a5,32(a3) + 3bc090a8: 6105 addi sp,sp,32 + 3bc090aa: ecfff06f j 3bc08f78 + +000000003bc090ae : + 3bc090ae: 7139 addi sp,sp,-64 + 3bc090b0: f426 sd s1,40(sp) + 3bc090b2: e456 sd s5,8(sp) + 3bc090b4: fc06 sd ra,56(sp) + 3bc090b6: f822 sd s0,48(sp) + 3bc090b8: f04a sd s2,32(sp) + 3bc090ba: ec4e sd s3,24(sp) + 3bc090bc: e852 sd s4,16(sp) + 3bc090be: 080047b7 lui a5,0x8004 + 3bc090c2: 5407a023 sw zero,1344(a5) # 8004540 + 3bc090c6: 5e07a823 sw zero,1520(a5) + 3bc090ca: 8aaa mv s5,a0 + 3bc090cc: 6a07a023 sw zero,1696(a5) + 3bc090d0: 08004737 lui a4,0x8004 + 3bc090d4: 0000a497 auipc s1,0xa + 3bc090d8: 31c48493 addi s1,s1,796 # 3bc133f0 + 3bc090dc: 3fc72783 lw a5,1020(a4) # 80043fc + 3bc090e0: 2781 sext.w a5,a5 + 3bc090e2: c09c sw a5,0(s1) + 3bc090e4: ffe5 bnez a5,3bc090dc + 3bc090e6: 5b1c lw a5,48(a4) + 3bc090e8: 080009b7 lui s3,0x8000 + 3bc090ec: 0007891b sext.w s2,a5 + 3bc090f0: 0017f413 andi s0,a5,1 + 3bc090f4: fd497793 andi a5,s2,-44 + 3bc090f8: c09c sw a5,0(s1) + 3bc090fa: db1c sw a5,48(a4) + 3bc090fc: e33ff0ef jal ra,3bc08f2e + 3bc09100: 4505 li a0,1 + 3bc09102: ce1ff0ef jal ra,3bc08de2 + 3bc09106: 08098693 addi a3,s3,128 # 8000080 + 3bc0910a: 4298 lw a4,0(a3) + 3bc0910c: 002007b7 lui a5,0x200 + 3bc09110: 007f0637 lui a2,0x7f0 + 3bc09114: 2701 sext.w a4,a4 + 3bc09116: 8fb9 xor a5,a5,a4 + 3bc09118: 8ff1 and a5,a5,a2 + 3bc0911a: 8f3d xor a4,a4,a5 + 3bc0911c: 2701 sext.w a4,a4 + 3bc0911e: 1f0007b7 lui a5,0x1f000 + 3bc09122: 8fb9 xor a5,a5,a4 + 3bc09124: 7f000637 lui a2,0x7f000 + 3bc09128: 8ff1 and a5,a5,a2 + 3bc0912a: 8f3d xor a4,a4,a5 + 3bc0912c: 2701 sext.w a4,a4 + 3bc0912e: c098 sw a4,0(s1) + 3bc09130: c298 sw a4,0(a3) + 3bc09132: 46dc lw a5,12(a3) + 3bc09134: 8556 mv a0,s5 + 3bc09136: 0007871b sext.w a4,a5 + 3bc0913a: 0827ba0b extu s4,a5,2,2 + 3bc0913e: ff177793 andi a5,a4,-15 + 3bc09142: c09c sw a5,0(s1) + 3bc09144: c6dc sw a5,12(a3) + 3bc09146: e22ff0ef jal ra,3bc08768 + 3bc0914a: 1889a783 lw a5,392(s3) + 3bc0914e: 08003737 lui a4,0x8003 + 3bc09152: 2781 sext.w a5,a5 + 3bc09154: 0017e793 ori a5,a5,1 + 3bc09158: c09c sw a5,0(s1) + 3bc0915a: 18f9a423 sw a5,392(s3) + 3bc0915e: 44472783 lw a5,1092(a4) # 8003444 + 3bc09162: 2781 sext.w a5,a5 + 3bc09164: c09c sw a5,0(s1) + 3bc09166: 8b91 andi a5,a5,4 + 3bc09168: dbfd beqz a5,3bc0915e + 3bc0916a: 040a0563 beqz s4,3bc091b4 + 3bc0916e: 08000737 lui a4,0x8000 + 3bc09172: 08070693 addi a3,a4,128 # 8000080 + 3bc09176: 46dc lw a5,12(a3) + 3bc09178: 18070713 addi a4,a4,384 + 3bc0917c: 2781 sext.w a5,a5 + 3bc0917e: 9bed andi a5,a5,-5 + 3bc09180: c09c sw a5,0(s1) + 3bc09182: c6dc sw a5,12(a3) + 3bc09184: 471c lw a5,8(a4) + 3bc09186: 2781 sext.w a5,a5 + 3bc09188: 0017e793 ori a5,a5,1 + 3bc0918c: c09c sw a5,0(s1) + 3bc0918e: c71c sw a5,8(a4) + 3bc09190: 08003737 lui a4,0x8003 + 3bc09194: 44472783 lw a5,1092(a4) # 8003444 + 3bc09198: 2781 sext.w a5,a5 + 3bc0919a: c09c sw a5,0(s1) + 3bc0919c: 8b91 andi a5,a5,4 + 3bc0919e: dbfd beqz a5,3bc09194 + 3bc091a0: 08000737 lui a4,0x8000 + 3bc091a4: 08c72783 lw a5,140(a4) # 800008c + 3bc091a8: 2781 sext.w a5,a5 + 3bc091aa: 0047e793 ori a5,a5,4 + 3bc091ae: c09c sw a5,0(s1) + 3bc091b0: 08f72623 sw a5,140(a4) + 3bc091b4: 819ff0ef jal ra,3bc089cc + 3bc091b8: 080107b7 lui a5,0x8010 + 3bc091bc: 00040737 lui a4,0x40 + 3bc091c0: c398 sw a4,0(a5) + 3bc091c2: 4501 li a0,0 + 3bc091c4: c1fff0ef jal ra,3bc08de2 + 3bc091c8: 08004737 lui a4,0x8004 + 3bc091cc: 5b1c lw a5,48(a4) + 3bc091ce: 70e2 ld ra,56(sp) + 3bc091d0: 69e2 ld s3,24(sp) + 3bc091d2: 2781 sext.w a5,a5 + 3bc091d4: 0127c6b3 xor a3,a5,s2 + 3bc091d8: 0206f693 andi a3,a3,32 + 3bc091dc: 8fb5 xor a5,a5,a3 + 3bc091de: 0127c6b3 xor a3,a5,s2 + 3bc091e2: 8aa1 andi a3,a3,8 + 3bc091e4: 8fb5 xor a5,a5,a3 + 3bc091e6: 0127c933 xor s2,a5,s2 + 3bc091ea: 00297913 andi s2,s2,2 + 3bc091ee: 0127c7b3 xor a5,a5,s2 + 3bc091f2: 9bf9 andi a5,a5,-2 + 3bc091f4: 8fc1 or a5,a5,s0 + 3bc091f6: c09c sw a5,0(s1) + 3bc091f8: db1c sw a5,48(a4) + 3bc091fa: 50070693 addi a3,a4,1280 # 8004500 + 3bc091fe: 4785 li a5,1 + 3bc09200: c2bc sw a5,64(a3) + 3bc09202: 7442 ld s0,48(sp) + 3bc09204: 58070693 addi a3,a4,1408 + 3bc09208: 74a2 ld s1,40(sp) + 3bc0920a: 7902 ld s2,32(sp) + 3bc0920c: 6a42 ld s4,16(sp) + 3bc0920e: 6aa2 ld s5,8(sp) + 3bc09210: dabc sw a5,112(a3) + 3bc09212: 68070713 addi a4,a4,1664 + 3bc09216: d31c sw a5,32(a4) + 3bc09218: 6121 addi sp,sp,64 + 3bc0921a: d5fff06f j 3bc08f78 + +000000003bc0921e : + 3bc0921e: 7179 addi sp,sp,-48 + 3bc09220: e84a sd s2,16(sp) + 3bc09222: e44e sd s3,8(sp) + 3bc09224: e052 sd s4,0(sp) + 3bc09226: f406 sd ra,40(sp) + 3bc09228: f022 sd s0,32(sp) + 3bc0922a: ec26 sd s1,24(sp) + 3bc0922c: 080047b7 lui a5,0x8004 + 3bc09230: 5407a023 sw zero,1344(a5) # 8004540 + 3bc09234: 5e07a823 sw zero,1520(a5) + 3bc09238: 89aa mv s3,a0 + 3bc0923a: 8a2e mv s4,a1 + 3bc0923c: 6a07a023 sw zero,1696(a5) + 3bc09240: 08004737 lui a4,0x8004 + 3bc09244: 0000a917 auipc s2,0xa + 3bc09248: 1ac90913 addi s2,s2,428 # 3bc133f0 + 3bc0924c: 3fc72783 lw a5,1020(a4) # 80043fc + 3bc09250: 2781 sext.w a5,a5 + 3bc09252: 00f92023 sw a5,0(s2) + 3bc09256: fbfd bnez a5,3bc0924c + 3bc09258: 5b1c lw a5,48(a4) + 3bc0925a: 0007849b sext.w s1,a5 + 3bc0925e: 0017f413 andi s0,a5,1 + 3bc09262: fd44f793 andi a5,s1,-44 + 3bc09266: 00f92023 sw a5,0(s2) + 3bc0926a: db1c sw a5,48(a4) + 3bc0926c: cc3ff0ef jal ra,3bc08f2e + 3bc09270: 4505 li a0,1 + 3bc09272: b71ff0ef jal ra,3bc08de2 + 3bc09276: 080007b7 lui a5,0x8000 + 3bc0927a: 0bc7a703 lw a4,188(a5) # 80000bc + 3bc0927e: 2701 sext.w a4,a4 + 3bc09280: 000a1863 bnez s4,3bc09290 + 3bc09284: 77fd lui a5,0xfffff + 3bc09286: 17fd addi a5,a5,-1 + 3bc09288: 8f7d and a4,a4,a5 + 3bc0928a: 6789 lui a5,0x2 + 3bc0928c: 8f5d or a4,a4,a5 + 3bc0928e: a821 j 3bc092a6 + 3bc09290: 4785 li a5,1 + 3bc09292: 00fa1763 bne s4,a5,3bc092a0 + 3bc09296: 77f9 lui a5,0xffffe + 3bc09298: 17fd addi a5,a5,-1 + 3bc0929a: 8f7d and a4,a4,a5 + 3bc0929c: 6785 lui a5,0x1 + 3bc0929e: b7fd j 3bc0928c + 3bc092a0: 4789 li a5,2 + 3bc092a2: 0efa0963 beq s4,a5,3bc09394 + 3bc092a6: 00e92023 sw a4,0(s2) + 3bc092aa: 00092703 lw a4,0(s2) + 3bc092ae: 080007b7 lui a5,0x8000 + 3bc092b2: 0ae7ae23 sw a4,188(a5) # 80000bc + 3bc092b6: 0e0a1163 bnez s4,3bc09398 + 3bc092ba: 08004737 lui a4,0x8004 + 3bc092be: 475c lw a5,12(a4) + 3bc092c0: 2781 sext.w a5,a5 + 3bc092c2: 0807e793 ori a5,a5,128 + 3bc092c6: 00f92023 sw a5,0(s2) + 3bc092ca: c75c sw a5,12(a4) + 3bc092cc: e36ff0ef jal ra,3bc08902 + 3bc092d0: 080007b7 lui a5,0x8000 + 3bc092d4: 18c7a783 lw a5,396(a5) # 800018c + 3bc092d8: 2781 sext.w a5,a5 + 3bc092da: 4017e693 ori a3,a5,1025 + 3bc092de: 000a1663 bnez s4,3bc092ea + 3bc092e2: bff7f793 andi a5,a5,-1025 + 3bc092e6: 0017e693 ori a3,a5,1 + 3bc092ea: 4785 li a5,1 + 3bc092ec: 00f98763 beq s3,a5,3bc092fa + 3bc092f0: 39bd addiw s3,s3,-17 + 3bc092f2: fef6f713 andi a4,a3,-17 + 3bc092f6: 0137e463 bltu a5,s3,3bc092fe + 3bc092fa: 0106e713 ori a4,a3,16 + 3bc092fe: 00e92023 sw a4,0(s2) + 3bc09302: 080007b7 lui a5,0x8000 + 3bc09306: 18e7a623 sw a4,396(a5) # 800018c + 3bc0930a: 08003737 lui a4,0x8003 + 3bc0930e: 44472783 lw a5,1092(a4) # 8003444 + 3bc09312: 2781 sext.w a5,a5 + 3bc09314: 00f92023 sw a5,0(s2) + 3bc09318: 8ba1 andi a5,a5,8 + 3bc0931a: dbf5 beqz a5,3bc0930e + 3bc0931c: 080049b7 lui s3,0x8004 + 3bc09320: 00c9a783 lw a5,12(s3) # 800400c + 3bc09324: 00040737 lui a4,0x40 + 3bc09328: 4501 li a0,0 + 3bc0932a: 2781 sext.w a5,a5 + 3bc0932c: f7f7f793 andi a5,a5,-129 + 3bc09330: 00f92023 sw a5,0(s2) + 3bc09334: 00f9a623 sw a5,12(s3) + 3bc09338: 080107b7 lui a5,0x8010 + 3bc0933c: c398 sw a4,0(a5) + 3bc0933e: aa5ff0ef jal ra,3bc08de2 + 3bc09342: 0309a783 lw a5,48(s3) + 3bc09346: 70a2 ld ra,40(sp) + 3bc09348: 6a02 ld s4,0(sp) + 3bc0934a: 2781 sext.w a5,a5 + 3bc0934c: 0097c733 xor a4,a5,s1 + 3bc09350: 02077713 andi a4,a4,32 + 3bc09354: 8fb9 xor a5,a5,a4 + 3bc09356: 0097c733 xor a4,a5,s1 + 3bc0935a: 8b21 andi a4,a4,8 + 3bc0935c: 8fb9 xor a5,a5,a4 + 3bc0935e: 8cbd xor s1,s1,a5 + 3bc09360: 8889 andi s1,s1,2 + 3bc09362: 8fa5 xor a5,a5,s1 + 3bc09364: 9bf9 andi a5,a5,-2 + 3bc09366: 8fc1 or a5,a5,s0 + 3bc09368: 00f92023 sw a5,0(s2) + 3bc0936c: 02f9a823 sw a5,48(s3) + 3bc09370: 50098713 addi a4,s3,1280 + 3bc09374: 4785 li a5,1 + 3bc09376: c33c sw a5,64(a4) + 3bc09378: 58098713 addi a4,s3,1408 + 3bc0937c: 7402 ld s0,32(sp) + 3bc0937e: db3c sw a5,112(a4) + 3bc09380: 68098993 addi s3,s3,1664 + 3bc09384: 64e2 ld s1,24(sp) + 3bc09386: 6942 ld s2,16(sp) + 3bc09388: 02f9a023 sw a5,32(s3) + 3bc0938c: 69a2 ld s3,8(sp) + 3bc0938e: 6145 addi sp,sp,48 + 3bc09390: be9ff06f j 3bc08f78 + 3bc09394: 678d lui a5,0x3 + 3bc09396: bddd j 3bc0928c + 3bc09398: 854e mv a0,s3 + 3bc0939a: cb8ff0ef jal ra,3bc08852 + 3bc0939e: bf0d j 3bc092d0 + +000000003bc093a0 : + 3bc093a0: 6785 lui a5,0x1 + 3bc093a2: 0785 addi a5,a5,1 + 3bc093a4: 0000a717 auipc a4,0xa + 3bc093a8: 04f72623 sw a5,76(a4) # 3bc133f0 + 3bc093ac: 08000737 lui a4,0x8000 + 3bc093b0: 50f72023 sw a5,1280(a4) # 8000500 + 3bc093b4: 54f72023 sw a5,1344(a4) + 3bc093b8: 8082 ret + +000000003bc093ba : + 3bc093ba: 4799 li a5,6 + 3bc093bc: 00f50023 sb a5,0(a0) # 1f000000 + 3bc093c0: 0000a717 auipc a4,0xa + 3bc093c4: 02f72823 sw a5,48(a4) # 3bc133f0 + 3bc093c8: 08000737 lui a4,0x8000 + 3bc093cc: 20f72423 sw a5,520(a4) # 8000208 + 3bc093d0: 080107b7 lui a5,0x8010 + 3bc093d4: 00040737 lui a4,0x40 + 3bc093d8: c398 sw a4,0(a5) + 3bc093da: 8082 ret + +000000003bc093dc : + 3bc093dc: 2f000793 li a5,752 + 3bc093e0: 0000a717 auipc a4,0xa + 3bc093e4: 00f72c23 sw a5,24(a4) # 3bc133f8 + 3bc093e8: 06400793 li a5,100 + 3bc093ec: 0000a717 auipc a4,0xa + 3bc093f0: 00f72823 sw a5,16(a4) # 3bc133fc + 3bc093f4: 00002717 auipc a4,0x2 + 3bc093f8: 30872703 lw a4,776(a4) # 3bc0b6fc + 3bc093fc: 0047569b srliw a3,a4,0x4 + 3bc09400: 463d li a2,15 + 3bc09402: 0000a797 auipc a5,0xa + 3bc09406: fed7af23 sw a3,-2(a5) # 3bc13400 + 3bc0940a: 0000a797 auipc a5,0xa + 3bc0940e: fec7a523 sw a2,-22(a5) # 3bc133f4 + 3bc09412: 02f00713 li a4,47 + 3bc09416: 077a slli a4,a4,0x1e + 3bc09418: 7c06b78b extu a5,a3,31,0 + 3bc0941c: 02f757b3 divu a5,a4,a5 + 3bc09420: 0000a717 auipc a4,0xa + 3bc09424: faf73423 sd a5,-88(a4) # 3bc133c8 + 3bc09428: 0fa00713 li a4,250 + 3bc0942c: 02d7073b mulw a4,a4,a3 + 3bc09430: 06400693 li a3,100 + 3bc09434: 02d7573b divuw a4,a4,a3 + 3bc09438: 7c07370b extu a4,a4,31,0 + 3bc0943c: 0000a697 auipc a3,0xa + 3bc09440: f8e6ba23 sd a4,-108(a3) # 3bc133d0 + 3bc09444: 3e800693 li a3,1000 + 3bc09448: 02d70733 mul a4,a4,a3 + 3bc0944c: 02c787b3 mul a5,a5,a2 + 3bc09450: 02e7d7b3 divu a5,a5,a4 + 3bc09454: 0000a717 auipc a4,0xa + 3bc09458: f8f73223 sd a5,-124(a4) # 3bc133d8 + 3bc0945c: a37ff06f j 3bc08e92 + +000000003bc09460 : + 3bc09460: 1141 addi sp,sp,-16 + 3bc09462: e406 sd ra,8(sp) + 3bc09464: f93fe0ef jal ra,3bc083f6 + 3bc09468: 357d addiw a0,a0,-1 + 3bc0946a: 0ff57513 andi a0,a0,255 + 3bc0946e: 47a5 li a5,9 + 3bc09470: 12a7ef63 bltu a5,a0,3bc095ae + 3bc09474: 00002717 auipc a4,0x2 + 3bc09478: f8470713 addi a4,a4,-124 # 3bc0b3f8 + 3bc0947c: 44a7478b lrw a5,a4,a0,2 + 3bc09480: 97ba add a5,a5,a4 + 3bc09482: 8782 jr a5 + 3bc09484: 12141737 lui a4,0x12141 + 3bc09488: 080007b7 lui a5,0x8000 + 3bc0948c: 074d addi a4,a4,19 + 3bc0948e: c398 sw a4,0(a5) + 3bc09490: 0c041737 lui a4,0xc041 + 3bc09494: 50370713 addi a4,a4,1283 # c041503 + 3bc09498: c3d8 sw a4,4(a5) + 3bc0949a: 06050737 lui a4,0x6050 + 3bc0949e: 0705 addi a4,a4,1 + 3bc094a0: c798 sw a4,8(a5) + 3bc094a2: 08071737 lui a4,0x8071 + 3bc094a6: b0270713 addi a4,a4,-1278 # 8070b02 + 3bc094aa: c7d8 sw a4,12(a5) + 3bc094ac: 0a0f1737 lui a4,0xa0f1 + 3bc094b0: e0970713 addi a4,a4,-503 # a0f0e09 + 3bc094b4: cb98 sw a4,16(a5) + 3bc094b6: 00161737 lui a4,0x161 + 3bc094ba: 10d70713 addi a4,a4,269 # 16110d <__BSS_SIZE__+0x15b4fd> + 3bc094be: cbd8 sw a4,20(a5) + 3bc094c0: 0007ac23 sw zero,24(a5) # 8000018 + 3bc094c4: 10000713 li a4,256 + 3bc094c8: cfd8 sw a4,28(a5) + 3bc094ca: 02136737 lui a4,0x2136 + 3bc094ce: 57470713 addi a4,a4,1396 # 2136574 <__BSS_SIZE__+0x2130964> + 3bc094d2: d398 sw a4,32(a5) + 3bc094d4: 4721 li a4,8 + 3bc094d6: d3d8 sw a4,36(a5) + 3bc094d8: 76512737 lui a4,0x76512 + 3bc094dc: 30870713 addi a4,a4,776 # 76512308 <__BL2_END__+0x3a8feef8> + 3bc094e0: d798 sw a4,40(a5) + 3bc094e2: 4711 li a4,4 + 3bc094e4: d7d8 sw a4,44(a5) + 3bc094e6: a0e1 j 3bc095ae + 3bc094e8: 08071737 lui a4,0x8071 + 3bc094ec: 080007b7 lui a5,0x8000 + 3bc094f0: d0970713 addi a4,a4,-759 # 8070d09 + 3bc094f4: c398 sw a4,0(a5) + 3bc094f6: 06050737 lui a4,0x6050 + 3bc094fa: 20b70713 addi a4,a4,523 # 605020b + 3bc094fe: c3d8 sw a4,4(a5) + 3bc09500: 14040737 lui a4,0x14040 + 3bc09504: 10070713 addi a4,a4,256 # 14040100 + 3bc09508: c798 sw a4,8(a5) + 3bc0950a: 15031737 lui a4,0x15031 + 3bc0950e: e0c70713 addi a4,a4,-500 # 15030e0c + 3bc09512: c7d8 sw a4,12(a5) + 3bc09514: 0a0f1737 lui a4,0xa0f1 + 3bc09518: 21370713 addi a4,a4,531 # a0f1213 + 3bc0951c: cb98 sw a4,16(a5) + 3bc0951e: 00111737 lui a4,0x111 + 3bc09522: 0759 addi a4,a4,22 + 3bc09524: cbd8 sw a4,20(a5) + 3bc09526: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0952a: 10000713 li a4,256 + 3bc0952e: cfd8 sw a4,28(a5) + 3bc09530: 82135737 lui a4,0x82135 + 3bc09534: 76470713 addi a4,a4,1892 # ffffffff82135764 <__BL2_END__+0xffffffff46522354> + 3bc09538: d398 sw a4,32(a5) + 3bc0953a: 67513737 lui a4,0x67513 + 3bc0953e: 0207a223 sw zero,36(a5) + 3bc09542: 02870713 addi a4,a4,40 # 67513028 <__BL2_END__+0x2b8ffc18> + 3bc09546: bf69 j 3bc094e0 + 3bc09548: 08071737 lui a4,0x8071 + 3bc0954c: 080007b7 lui a5,0x8000 + 3bc09550: b0970713 addi a4,a4,-1271 # 8070b09 + 3bc09554: c398 sw a4,0(a5) + 3bc09556: 05000737 lui a4,0x5000 + 3bc0955a: 20670713 addi a4,a4,518 # 5000206 + 3bc0955e: c3d8 sw a4,4(a5) + 3bc09560: 0c040737 lui a4,0xc040 + 3bc09564: 10d70713 addi a4,a4,269 # c04010d + 3bc09568: c798 sw a4,8(a5) + 3bc0956a: 15031737 lui a4,0x15031 + 3bc0956e: a1470713 addi a4,a4,-1516 # 15030a14 + 3bc09572: c7d8 sw a4,12(a5) + 3bc09574: 10111737 lui a4,0x10111 + 3bc09578: 21370713 addi a4,a4,531 # 10111213 + 3bc0957c: cb98 sw a4,16(a5) + 3bc0957e: 000f1737 lui a4,0xf1 + 3bc09582: 60e70713 addi a4,a4,1550 # f160e <__BSS_SIZE__+0xeb9fe> + 3bc09586: cbd8 sw a4,20(a5) + 3bc09588: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0958c: 10000713 li a4,256 + 3bc09590: cfd8 sw a4,28(a5) + 3bc09592: 31756737 lui a4,0x31756 + 3bc09596: 02470713 addi a4,a4,36 # 31756024 + 3bc0959a: d398 sw a4,32(a5) + 3bc0959c: 4721 li a4,8 + 3bc0959e: d3d8 sw a4,36(a5) + 3bc095a0: 26473737 lui a4,0x26473 + 3bc095a4: 51870713 addi a4,a4,1304 # 26473518 + 3bc095a8: d798 sw a4,40(a5) + 3bc095aa: 0207a623 sw zero,44(a5) + 3bc095ae: 60a2 ld ra,8(sp) + 3bc095b0: 0141 addi sp,sp,16 + 3bc095b2: 8082 ret + 3bc095b4: 0c061737 lui a4,0xc061 + 3bc095b8: 080007b7 lui a5,0x8000 + 3bc095bc: 80b70713 addi a4,a4,-2037 # c06080b + 3bc095c0: c398 sw a4,0(a5) + 3bc095c2: 070d1737 lui a4,0x70d1 + 3bc095c6: 90470713 addi a4,a4,-1788 # 70d0904 + 3bc095ca: c3d8 sw a4,4(a5) + 3bc095cc: 6741 lui a4,0x10 + 3bc095ce: 50270713 addi a4,a4,1282 # 10502 <__BSS_SIZE__+0xa8f2> + 3bc095d2: c798 sw a4,8(a5) + 3bc095d4: 110a1737 lui a4,0x110a1 + 3bc095d8: e0370713 addi a4,a4,-509 # 110a0e03 + 3bc095dc: c7d8 sw a4,12(a5) + 3bc095de: 0f141737 lui a4,0xf141 + 3bc095e2: 61070713 addi a4,a4,1552 # f141610 + 3bc095e6: cb98 sw a4,16(a5) + 3bc095e8: 00151737 lui a4,0x151 + 3bc095ec: 31270713 addi a4,a4,786 # 151312 <__BSS_SIZE__+0x14b702> + 3bc095f0: cbd8 sw a4,20(a5) + 3bc095f2: 0007ac23 sw zero,24(a5) # 8000018 + 3bc095f6: 10000713 li a4,256 + 3bc095fa: cfd8 sw a4,28(a5) + 3bc095fc: 71840737 lui a4,0x71840 + 3bc09600: 53270713 addi a4,a4,1330 # 71840532 <__BL2_END__+0x35c2d122> + 3bc09604: d398 sw a4,32(a5) + 3bc09606: 4719 li a4,6 + 3bc09608: d3d8 sw a4,36(a5) + 3bc0960a: 76103737 lui a4,0x76103 + 3bc0960e: 42570713 addi a4,a4,1061 # 76103425 <__BL2_END__+0x3a4f0015> + 3bc09612: d798 sw a4,40(a5) + 3bc09614: 4721 li a4,8 + 3bc09616: b5f9 j 3bc094e4 + 3bc09618: 080b1737 lui a4,0x80b1 + 3bc0961c: 080007b7 lui a5,0x8000 + 3bc09620: d0670713 addi a4,a4,-762 # 80b0d06 + 3bc09624: c398 sw a4,0(a5) + 3bc09626: 09010737 lui a4,0x9010 + 3bc0962a: 40770713 addi a4,a4,1031 # 9010407 + 3bc0962e: c3d8 sw a4,4(a5) + 3bc09630: 14050737 lui a4,0x14050 + 3bc09634: 20c70713 addi a4,a4,524 # 1405020c + 3bc09638: c798 sw a4,8(a5) + 3bc0963a: 15001737 lui a4,0x15001 + 3bc0963e: e0370713 addi a4,a4,-509 # 15000e03 + 3bc09642: c7d8 sw a4,12(a5) + 3bc09644: 0a0f1737 lui a4,0xa0f1 + 3bc09648: 21370713 addi a4,a4,531 # a0f1213 + 3bc0964c: cb98 sw a4,16(a5) + 3bc0964e: 00111737 lui a4,0x111 + 3bc09652: 0759 addi a4,a4,22 + 3bc09654: cbd8 sw a4,20(a5) + 3bc09656: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0965a: 10000713 li a4,256 + 3bc0965e: cfd8 sw a4,28(a5) + 3bc09660: 82135737 lui a4,0x82135 + 3bc09664: 76470713 addi a4,a4,1892 # ffffffff82135764 <__BL2_END__+0xffffffff46522354> + 3bc09668: d398 sw a4,32(a5) + 3bc0966a: 67513737 lui a4,0x67513 + 3bc0966e: 0207a223 sw zero,36(a5) + 3bc09672: 20870713 addi a4,a4,520 # 67513208 <__BL2_END__+0x2b8ffdf8> + 3bc09676: b5ad j 3bc094e0 + 3bc09678: 0b061737 lui a4,0xb061 + 3bc0967c: 080007b7 lui a5,0x8000 + 3bc09680: 90870713 addi a4,a4,-1784 # b060908 + 3bc09684: c398 sw a4,0(a5) + 3bc09686: 02000737 lui a4,0x2000 + 3bc0968a: 10770713 addi a4,a4,263 # 2000107 <__BSS_SIZE__+0x1ffa4f7> + 3bc0968e: c3d8 sw a4,4(a5) + 3bc09690: 0c050737 lui a4,0xc050 + 3bc09694: 40d70713 addi a4,a4,1037 # c05040d + 3bc09698: c798 sw a4,8(a5) + 3bc0969a: 13141737 lui a4,0x13141 + 3bc0969e: 50370713 addi a4,a4,1283 # 13141503 + 3bc096a2: c7d8 sw a4,12(a5) + 3bc096a4: 160a1737 lui a4,0x160a1 + 3bc096a8: 11270713 addi a4,a4,274 # 160a1112 + 3bc096ac: cb98 sw a4,16(a5) + 3bc096ae: 000f1737 lui a4,0xf1 + 3bc096b2: 0739 addi a4,a4,14 + 3bc096b4: cbd8 sw a4,20(a5) + 3bc096b6: 0007ac23 sw zero,24(a5) # 8000018 + 3bc096ba: 10000713 li a4,256 + 3bc096be: cfd8 sw a4,28(a5) + 3bc096c0: 28137737 lui a4,0x28137 + 3bc096c4: 56470713 addi a4,a4,1380 # 28137564 + 3bc096c8: d398 sw a4,32(a5) + 3bc096ca: 76158737 lui a4,0x76158 + 3bc096ce: 0207a223 sw zero,36(a5) + 3bc096d2: 32070713 addi a4,a4,800 # 76158320 <__BL2_END__+0x3a544f10> + 3bc096d6: b529 j 3bc094e0 + 3bc096d8: 08061737 lui a4,0x8061 + 3bc096dc: 080007b7 lui a5,0x8000 + 3bc096e0: b0970713 addi a4,a4,-1271 # 8060b09 + 3bc096e4: c398 sw a4,0(a5) + 3bc096e6: 02040737 lui a4,0x2040 + 3bc096ea: 70170713 addi a4,a4,1793 # 2040701 <__BSS_SIZE__+0x203aaf1> + 3bc096ee: c3d8 sw a4,4(a5) + 3bc096f0: 0c000737 lui a4,0xc000 + 3bc096f4: 50d70713 addi a4,a4,1293 # c00050d + 3bc096f8: c798 sw a4,8(a5) + 3bc096fa: 13150737 lui a4,0x13150 + 3bc096fe: 31470713 addi a4,a4,788 # 13150314 + 3bc09702: c7d8 sw a4,12(a5) + 3bc09704: 10111737 lui a4,0x10111 + 3bc09708: 21670713 addi a4,a4,534 # 10111216 + 3bc0970c: cb98 sw a4,16(a5) + 3bc0970e: 000f1737 lui a4,0xf1 + 3bc09712: a0e70713 addi a4,a4,-1522 # f0a0e <__BSS_SIZE__+0xeadfe> + 3bc09716: cbd8 sw a4,20(a5) + 3bc09718: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0971c: 10000713 li a4,256 + 3bc09720: cfd8 sw a4,28(a5) + 3bc09722: 82135737 lui a4,0x82135 + 3bc09726: 67470713 addi a4,a4,1652 # ffffffff82135674 <__BL2_END__+0xffffffff46522264> + 3bc0972a: d398 sw a4,32(a5) + 3bc0972c: 76153737 lui a4,0x76153 + 3bc09730: 0207a223 sw zero,36(a5) + 3bc09734: 28070713 addi a4,a4,640 # 76153280 <__BL2_END__+0x3a53fe70> + 3bc09738: b365 j 3bc094e0 + 3bc0973a: 070b1737 lui a4,0x70b1 + 3bc0973e: 080007b7 lui a5,0x8000 + 3bc09742: 90c70713 addi a4,a4,-1780 # 70b090c + 3bc09746: c398 sw a4,0(a5) + 3bc09748: 04050737 lui a4,0x4050 + 3bc0974c: 60870713 addi a4,a4,1544 # 4050608 <__BSS_SIZE__+0x404a9f8> + 3bc09750: c3d8 sw a4,4(a5) + 3bc09752: 0e020737 lui a4,0xe020 + 3bc09756: 30d70713 addi a4,a4,781 # e02030d + 3bc0975a: c798 sw a4,8(a5) + 3bc0975c: 110a0737 lui a4,0x110a0 + 3bc09760: 10070713 addi a4,a4,256 # 110a0100 + 3bc09764: c7d8 sw a4,12(a5) + 3bc09766: 0f131737 lui a4,0xf131 + 3bc0976a: 61470713 addi a4,a4,1556 # f131614 + 3bc0976e: cb98 sw a4,16(a5) + 3bc09770: 00151737 lui a4,0x151 + 3bc09774: 0749 addi a4,a4,18 + 3bc09776: cbd8 sw a4,20(a5) + 3bc09778: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0977c: 10000713 li a4,256 + 3bc09780: cfd8 sw a4,28(a5) + 3bc09782: 86014737 lui a4,0x86014 + 3bc09786: 53270713 addi a4,a4,1330 # ffffffff86014532 <__BL2_END__+0xffffffff4a401122> + 3bc0978a: d398 sw a4,32(a5) + 3bc0978c: 471d li a4,7 + 3bc0978e: d3d8 sw a4,36(a5) + 3bc09790: 76012737 lui a4,0x76012 + 3bc09794: 34570713 addi a4,a4,837 # 76012345 <__BL2_END__+0x3a3fef35> + 3bc09798: bdad j 3bc09612 + +000000003bc0979a : + 3bc0979a: 8082 ret + +000000003bc0979c : + 3bc0979c: 63746737 lui a4,0x63746 + 3bc097a0: 080047b7 lui a5,0x8004 + 3bc097a4: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32f61> + 3bc097a8: c7d8 sw a4,12(a5) + 3bc097aa: 14000737 lui a4,0x14000 + 3bc097ae: c3f8 sw a4,68(a5) + 3bc097b0: 470d li a4,3 + 3bc097b2: d7f8 sw a4,108(a5) + 3bc097b4: 979c06b7 lui a3,0x979c0 + 3bc097b8: 10078713 addi a4,a5,256 # 8004100 + 3bc097bc: c734 sw a3,72(a4) + 3bc097be: 810416b7 lui a3,0x81041 + 3bc097c2: 40068693 addi a3,a3,1024 # ffffffff81041400 <__BL2_END__+0xffffffff4542dff0> + 3bc097c6: c394 sw a3,0(a5) + 3bc097c8: 006a06b7 lui a3,0x6a0 + 3bc097cc: 0207a823 sw zero,48(a5) + 3bc097d0: 0685 addi a3,a3,1 + 3bc097d2: dbd4 sw a3,52(a5) + 3bc097d4: 000206b7 lui a3,0x20 + 3bc097d8: df94 sw a3,56(a5) + 3bc097da: 002016b7 lui a3,0x201 + 3bc097de: 07068693 addi a3,a3,112 # 201070 <__BSS_SIZE__+0x1fb460> + 3bc097e2: cbb4 sw a3,80(a5) + 3bc097e4: 005106b7 lui a3,0x510 + 3bc097e8: 0607a023 sw zero,96(a5) + 3bc097ec: 02c68693 addi a3,a3,44 # 51002c <__BSS_SIZE__+0x50a41c> + 3bc097f0: 6641 lui a2,0x10 + 3bc097f2: d3f4 sw a3,100(a5) + 3bc097f4: 04360613 addi a2,a2,67 # 10043 <__BSS_SIZE__+0xa433> + 3bc097f8: 08078693 addi a3,a5,128 + 3bc097fc: cab0 sw a2,80(a3) + 3bc097fe: 03730637 lui a2,0x3730 + 3bc09802: 0c07aa23 sw zero,212(a5) + 3bc09806: 04060613 addi a2,a2,64 # 3730040 <__BSS_SIZE__+0x372a430> + 3bc0980a: cef0 sw a2,92(a3) + 3bc0980c: 00800637 lui a2,0x800 + 3bc09810: d2b0 sw a2,96(a3) + 3bc09812: 0a0116b7 lui a3,0xa011 + 3bc09816: 61068693 addi a3,a3,1552 # a011610 + 3bc0981a: c314 sw a3,0(a4) + 3bc0981c: 000306b7 lui a3,0x30 + 3bc09820: 41468693 addi a3,a3,1044 # 30414 <__BSS_SIZE__+0x2a804> + 3bc09824: c354 sw a3,4(a4) + 3bc09826: 030406b7 lui a3,0x3040 + 3bc0982a: 40868693 addi a3,a3,1032 # 3040408 <__BSS_SIZE__+0x303a7f8> + 3bc0982e: c714 sw a3,8(a4) + 3bc09830: 668d lui a3,0x3 + 3bc09832: 0691 addi a3,a3,4 + 3bc09834: c754 sw a3,12(a4) + 3bc09836: 050206b7 lui a3,0x5020 + 3bc0983a: 40668693 addi a3,a3,1030 # 5020406 + 3bc0983e: cb14 sw a3,16(a4) + 3bc09840: 010106b7 lui a3,0x1010 + 3bc09844: 30368693 addi a3,a3,771 # 1010303 <__BSS_SIZE__+0x100a6f3> + 3bc09848: cb54 sw a3,20(a4) + 3bc0984a: 50300693 li a3,1283 + 3bc0984e: d314 sw a3,32(a4) + 3bc09850: 048586b7 lui a3,0x4858 + 3bc09854: 18078713 addi a4,a5,384 + 3bc09858: 30268693 addi a3,a3,770 # 4858302 + 3bc0985c: cb14 sw a3,16(a4) + 3bc0985e: 000706b7 lui a3,0x70 + 3bc09862: 10268693 addi a3,a3,258 # 70102 <__BSS_SIZE__+0x6a4f2> + 3bc09866: cb54 sw a3,20(a4) + 3bc09868: 07c136b7 lui a3,0x7c13 + 3bc0986c: 12168693 addi a3,a3,289 # 7c13121 + 3bc09870: cf14 sw a3,24(a4) + 3bc09872: 02100693 li a3,33 + 3bc09876: cf54 sw a3,28(a4) + 3bc09878: c04006b7 lui a3,0xc0400 + 3bc0987c: 06e1 addi a3,a3,24 + 3bc0987e: d314 sw a3,32(a4) + 3bc09880: 00fe06b7 lui a3,0xfe0 + 3bc09884: 0ff68693 addi a3,a3,255 # fe00ff <__BSS_SIZE__+0xfda4ef> + 3bc09888: d354 sw a3,36(a4) + 3bc0988a: 800006b7 lui a3,0x80000 + 3bc0988e: d714 sw a3,40(a4) + 3bc09890: 2c100693 li a3,705 + 3bc09894: db14 sw a3,48(a4) + 3bc09896: 4685 li a3,1 + 3bc09898: c334 sw a3,64(a4) + 3bc0989a: 6609 lui a2,0x2 + 3bc0989c: 001405b7 lui a1,0x140 + 3bc098a0: f1f60613 addi a2,a2,-225 # 1f1f <__BSS_SIZE__-0x3cf1> + 3bc098a4: c374 sw a3,68(a4) + 3bc098a6: 70758593 addi a1,a1,1799 # 140707 <__BSS_SIZE__+0x13aaf7> + 3bc098aa: 20078713 addi a4,a5,512 + 3bc098ae: c310 sw a2,0(a4) + 3bc098b0: c34c sw a1,4(a4) + 3bc098b2: 2007a423 sw zero,520(a5) + 3bc098b6: 1f0005b7 lui a1,0x1f000 + 3bc098ba: c74c sw a1,12(a4) + 3bc098bc: cb10 sw a2,16(a4) + 3bc098be: 050f0637 lui a2,0x50f0 + 3bc098c2: 50560613 addi a2,a2,1285 # 50f0505 + 3bc098c6: cb50 sw a2,20(a4) + 3bc098c8: 06060637 lui a2,0x6060 + 3bc098cc: 60560613 addi a2,a2,1541 # 6060605 + 3bc098d0: cf10 sw a2,24(a4) + 3bc098d2: 60600613 li a2,1542 + 3bc098d6: cf50 sw a2,28(a4) + 3bc098d8: 6611 lui a2,0x4 + 3bc098da: f3f60593 addi a1,a2,-193 # 3f3f <__BSS_SIZE__-0x1cd1> + 3bc098de: d30c sw a1,32(a4) + 3bc098e0: 050505b7 lui a1,0x5050 + 3bc098e4: 50558593 addi a1,a1,1285 # 5050505 + 3bc098e8: d34c sw a1,36(a4) + 3bc098ea: d70c sw a1,40(a4) + 3bc098ec: 001f25b7 lui a1,0x1f2 + 3bc098f0: f0558593 addi a1,a1,-251 # 1f1f05 <__BSS_SIZE__+0x1ec2f5> + 3bc098f4: d74c sw a1,44(a4) + 3bc098f6: 070105b7 lui a1,0x7010 + 3bc098fa: 70858593 addi a1,a1,1800 # 7010708 + 3bc098fe: c32c sw a1,64(a4) + 3bc09900: 2407a223 sw zero,580(a5) + 3bc09904: f8560613 addi a2,a2,-123 + 3bc09908: cb30 sw a2,80(a4) + 3bc0990a: 02000613 li a2,32 + 3bc0990e: cb70 sw a2,84(a4) + 3bc09910: 10000637 lui a2,0x10000 + 3bc09914: 0a860613 addi a2,a2,168 # 100000a8 + 3bc09918: cf70 sw a2,92(a4) + 3bc0991a: d370 sw a2,100(a4) + 3bc0991c: d770 sw a2,108(a4) + 3bc0991e: 3007a023 sw zero,768(a5) + 3bc09922: 3007a223 sw zero,772(a5) + 3bc09926: 3007a623 sw zero,780(a5) + 3bc0992a: 30078713 addi a4,a5,768 + 3bc0992e: d314 sw a3,32(a4) + 3bc09930: 3607a623 sw zero,876(a5) + 3bc09934: 40078713 addi a4,a5,1024 + 3bc09938: 4645 li a2,17 + 3bc0993a: c310 sw a2,0(a4) + 3bc0993c: 6619 lui a2,0x6 + 3bc0993e: c350 sw a2,4(a4) + 3bc09940: c710 sw a2,8(a4) + 3bc09942: 48078713 addi a4,a5,1152 + 3bc09946: cb14 sw a3,16(a4) + 3bc09948: 489d li a7,7 + 3bc0994a: 01172a23 sw a7,20(a4) # 14000014 + 3bc0994e: 06a00813 li a6,106 + 3bc09952: 6505 lui a0,0x1 + 3bc09954: 01072c23 sw a6,24(a4) + 3bc09958: e0750513 addi a0,a0,-505 # e07 <__BSS_SIZE__-0x4e09> + 3bc0995c: 01a805b7 lui a1,0x1a80 + 3bc09960: cf48 sw a0,28(a4) + 3bc09962: 1a858593 addi a1,a1,424 # 1a801a8 <__BSS_SIZE__+0x1a7a598> + 3bc09966: d30c sw a1,32(a4) + 3bc09968: db50 sw a2,52(a4) + 3bc0996a: df10 sw a2,56(a4) + 3bc0996c: 50078713 addi a4,a5,1280 + 3bc09970: c334 sw a3,64(a4) + 3bc09972: 05172223 sw a7,68(a4) + 3bc09976: 05072423 sw a6,72(a4) + 3bc0997a: c768 sw a0,76(a4) + 3bc0997c: cb2c sw a1,80(a4) + 3bc0997e: d370 sw a2,100(a4) + 3bc09980: d730 sw a2,104(a4) + 3bc09982: 58078713 addi a4,a5,1408 + 3bc09986: db34 sw a3,112(a4) + 3bc09988: 07172a23 sw a7,116(a4) + 3bc0998c: 07072c23 sw a6,120(a4) + 3bc09990: df68 sw a0,124(a4) + 3bc09992: 60078793 addi a5,a5,1536 + 3bc09996: c38c sw a1,0(a5) + 3bc09998: 8082 ret + +000000003bc0999a : + 3bc0999a: 080047b7 lui a5,0x8004 + 3bc0999e: 4709 li a4,2 + 3bc099a0: db98 sw a4,48(a5) + 3bc099a2: 00400737 lui a4,0x400 + 3bc099a6: 0761 addi a4,a4,24 + 3bc099a8: 18078693 addi a3,a5,384 # 8004180 + 3bc099ac: d298 sw a4,32(a3) + 3bc099ae: 0800a737 lui a4,0x800a + 3bc099b2: 00072a23 sw zero,20(a4) # 800a014 + 3bc099b6: 63746737 lui a4,0x63746 + 3bc099ba: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32f61> + 3bc099be: c7d8 sw a4,12(a5) + 3bc099c0: 08000737 lui a4,0x8000 + 3bc099c4: c3f8 sw a4,68(a5) + 3bc099c6: 8082 ret + +000000003bc099c8 : + 3bc099c8: 080047b7 lui a5,0x8004 + 3bc099cc: c0400737 lui a4,0xc0400 + 3bc099d0: 0207a823 sw zero,48(a5) # 8004030 + 3bc099d4: 0761 addi a4,a4,24 + 3bc099d6: 1ae7a023 sw a4,416(a5) + 3bc099da: 6705 lui a4,0x1 + 3bc099dc: 177d addi a4,a4,-1 + 3bc099de: 0800a6b7 lui a3,0x800a + 3bc099e2: cad8 sw a4,20(a3) + 3bc099e4: 63746737 lui a4,0x63746 + 3bc099e8: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32f61> + 3bc099ec: c7d8 sw a4,12(a5) + 3bc099ee: 14000737 lui a4,0x14000 + 3bc099f2: c3f8 sw a4,68(a5) + 3bc099f4: 8082 ret + +000000003bc099f6 : + 3bc099f6: 080047b7 lui a5,0x8004 + 3bc099fa: 4398 lw a4,0(a5) + 3bc099fc: 0000a797 auipc a5,0xa + 3bc09a00: 9ee7aa23 sw a4,-1548(a5) # 3bc133f0 + 3bc09a04: 34c7368b extu a3,a4,13,12 + 3bc09a08: 4785 li a5,1 + 3bc09a0a: 9f95 subw a5,a5,a3 + 3bc09a0c: 40f557bb sraw a5,a0,a5 + 3bc09a10: 01e7571b srliw a4,a4,0x1e + 3bc09a14: 4689 li a3,2 + 3bc09a16: 40e6873b subw a4,a3,a4 + 3bc09a1a: 0ff7f793 andi a5,a5,255 + 3bc09a1e: 40e7d7bb sraw a5,a5,a4 + 3bc09a22: 0ff7f793 andi a5,a5,255 + 3bc09a26: ffb7861b addiw a2,a5,-5 + 3bc09a2a: 4711 li a4,4 + 3bc09a2c: 1ac76f63 bltu a4,a2,3bc09bea + 3bc09a30: 00002717 auipc a4,0x2 + 3bc09a34: 9f070713 addi a4,a4,-1552 # 3bc0b420 + 3bc09a38: 54c7478b lurw a5,a4,a2,2 + 3bc09a3c: 2781 sext.w a5,a5 + 3bc09a3e: 97ba add a5,a5,a4 + 3bc09a40: 8782 jr a5 + 3bc09a42: 00510737 lui a4,0x510 + 3bc09a46: 080047b7 lui a5,0x8004 + 3bc09a4a: 0765 addi a4,a4,25 + 3bc09a4c: d3f8 sw a4,100(a5) + 3bc09a4e: 0b011737 lui a4,0xb011 + 3bc09a52: 61070713 addi a4,a4,1552 # b011610 + 3bc09a56: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09a5a: 50200713 li a4,1282 + 3bc09a5e: 12e7a023 sw a4,288(a5) + 3bc09a62: 08004637 lui a2,0x8004 + 3bc09a66: 6709 lui a4,0x2 + 3bc09a68: 20060793 addi a5,a2,512 # 8004200 + 3bc09a6c: f1f70713 addi a4,a4,-225 # 1f1f <__BSS_SIZE__-0x3cf1> + 3bc09a70: 003f06b7 lui a3,0x3f0 + 3bc09a74: c398 sw a4,0(a5) + 3bc09a76: 60668693 addi a3,a3,1542 # 3f0606 <__BSS_SIZE__+0x3ea9f6> + 3bc09a7a: c3d4 sw a3,4(a5) + 3bc09a7c: 20062423 sw zero,520(a2) + 3bc09a80: 1f1f06b7 lui a3,0x1f1f0 + 3bc09a84: c7d4 sw a3,12(a5) + 3bc09a86: cb98 sw a4,16(a5) + 3bc09a88: 040f0737 lui a4,0x40f0 + 3bc09a8c: 40470713 addi a4,a4,1028 # 40f0404 <__BSS_SIZE__+0x40ea7f4> + 3bc09a90: cbd8 sw a4,20(a5) + 3bc09a92: 04040737 lui a4,0x4040 + 3bc09a96: 40470713 addi a4,a4,1028 # 4040404 <__BSS_SIZE__+0x403a7f4> + 3bc09a9a: cf98 sw a4,24(a5) + 3bc09a9c: 40400693 li a3,1028 + 3bc09aa0: cfd4 sw a3,28(a5) + 3bc09aa2: 6691 lui a3,0x4 + 3bc09aa4: f3f68693 addi a3,a3,-193 # 3f3f <__BSS_SIZE__-0x1cd1> + 3bc09aa8: d394 sw a3,32(a5) + 3bc09aaa: d3d8 sw a4,36(a5) + 3bc09aac: d798 sw a4,40(a5) + 3bc09aae: 001f2737 lui a4,0x1f2 + 3bc09ab2: f0470713 addi a4,a4,-252 # 1f1f04 <__BSS_SIZE__+0x1ec2f4> + 3bc09ab6: d7d8 sw a4,44(a5) + 3bc09ab8: a289 j 3bc09bfa + 3bc09aba: 00510737 lui a4,0x510 + 3bc09abe: 080047b7 lui a5,0x8004 + 3bc09ac2: 02c70713 addi a4,a4,44 # 51002c <__BSS_SIZE__+0x50a41c> + 3bc09ac6: d3f8 sw a4,100(a5) + 3bc09ac8: 0a011737 lui a4,0xa011 + 3bc09acc: 61070713 addi a4,a4,1552 # a011610 + 3bc09ad0: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09ad4: 50300713 li a4,1283 + 3bc09ad8: 12e7a023 sw a4,288(a5) + 3bc09adc: 08004637 lui a2,0x8004 + 3bc09ae0: 6709 lui a4,0x2 + 3bc09ae2: 20060793 addi a5,a2,512 # 8004200 + 3bc09ae6: f1f70713 addi a4,a4,-225 # 1f1f <__BSS_SIZE__-0x3cf1> + 3bc09aea: 003f06b7 lui a3,0x3f0 + 3bc09aee: c398 sw a4,0(a5) + 3bc09af0: 70768693 addi a3,a3,1799 # 3f0707 <__BSS_SIZE__+0x3eaaf7> + 3bc09af4: c3d4 sw a3,4(a5) + 3bc09af6: 20062423 sw zero,520(a2) + 3bc09afa: 1f0006b7 lui a3,0x1f000 + 3bc09afe: c7d4 sw a3,12(a5) + 3bc09b00: cb98 sw a4,16(a5) + 3bc09b02: 050f0737 lui a4,0x50f0 + 3bc09b06: 50570713 addi a4,a4,1285 # 50f0505 + 3bc09b0a: cbd8 sw a4,20(a5) + 3bc09b0c: 05050737 lui a4,0x5050 + 3bc09b10: 50570713 addi a4,a4,1285 # 5050505 + 3bc09b14: cf98 sw a4,24(a5) + 3bc09b16: 50500693 li a3,1285 + 3bc09b1a: cfd4 sw a3,28(a5) + 3bc09b1c: 6691 lui a3,0x4 + 3bc09b1e: f3f68693 addi a3,a3,-193 # 3f3f <__BSS_SIZE__-0x1cd1> + 3bc09b22: d394 sw a3,32(a5) + 3bc09b24: d3d8 sw a4,36(a5) + 3bc09b26: d798 sw a4,40(a5) + 3bc09b28: 001f2737 lui a4,0x1f2 + 3bc09b2c: f0570713 addi a4,a4,-251 # 1f1f05 <__BSS_SIZE__+0x1ec2f5> + 3bc09b30: b759 j 3bc09ab6 + 3bc09b32: 00510737 lui a4,0x510 + 3bc09b36: 080047b7 lui a5,0x8004 + 3bc09b3a: 02b70713 addi a4,a4,43 # 51002b <__BSS_SIZE__+0x50a41b> + 3bc09b3e: d3f8 sw a4,100(a5) + 3bc09b40: 0b0f1737 lui a4,0xb0f1 + 3bc09b44: 61070713 addi a4,a4,1552 # b0f1610 + 3bc09b48: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09b4c: 50300713 li a4,1283 + 3bc09b50: 12e7a023 sw a4,288(a5) + 3bc09b54: 08004637 lui a2,0x8004 + 3bc09b58: 6709 lui a4,0x2 + 3bc09b5a: 20060793 addi a5,a2,512 # 8004200 + 3bc09b5e: f1f70713 addi a4,a4,-225 # 1f1f <__BSS_SIZE__-0x3cf1> + 3bc09b62: 000706b7 lui a3,0x70 + 3bc09b66: c398 sw a4,0(a5) + 3bc09b68: 70768693 addi a3,a3,1799 # 70707 <__BSS_SIZE__+0x6aaf7> + 3bc09b6c: c3d4 sw a3,4(a5) + 3bc09b6e: 20062423 sw zero,520(a2) + 3bc09b72: 1f0006b7 lui a3,0x1f000 + 3bc09b76: c7d4 sw a3,12(a5) + 3bc09b78: cb98 sw a4,16(a5) + 3bc09b7a: 060f0737 lui a4,0x60f0 + 3bc09b7e: 60670713 addi a4,a4,1542 # 60f0606 + 3bc09b82: cbd8 sw a4,20(a5) + 3bc09b84: 06060737 lui a4,0x6060 + 3bc09b88: 60670713 addi a4,a4,1542 # 6060606 + 3bc09b8c: cf98 sw a4,24(a5) + 3bc09b8e: 60600693 li a3,1542 + 3bc09b92: cfd4 sw a3,28(a5) + 3bc09b94: 6691 lui a3,0x4 + 3bc09b96: f3f68693 addi a3,a3,-193 # 3f3f <__BSS_SIZE__-0x1cd1> + 3bc09b9a: d394 sw a3,32(a5) + 3bc09b9c: d3d8 sw a4,36(a5) + 3bc09b9e: d798 sw a4,40(a5) + 3bc09ba0: 001f2737 lui a4,0x1f2 + 3bc09ba4: f0670713 addi a4,a4,-250 # 1f1f06 <__BSS_SIZE__+0x1ec2f6> + 3bc09ba8: b739 j 3bc09ab6 + 3bc09baa: 00510737 lui a4,0x510 + 3bc09bae: 080047b7 lui a5,0x8004 + 3bc09bb2: 04170713 addi a4,a4,65 # 510041 <__BSS_SIZE__+0x50a431> + 3bc09bb6: d3f8 sw a4,100(a5) + 3bc09bb8: 0b0f1737 lui a4,0xb0f1 + 3bc09bbc: 61070713 addi a4,a4,1552 # b0f1610 + 3bc09bc0: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09bc4: 50400713 li a4,1284 + 3bc09bc8: b761 j 3bc09b50 + 3bc09bca: 00510737 lui a4,0x510 + 3bc09bce: 080047b7 lui a5,0x8004 + 3bc09bd2: 06e70713 addi a4,a4,110 # 51006e <__BSS_SIZE__+0x50a45e> + 3bc09bd6: d3f8 sw a4,100(a5) + 3bc09bd8: 0b0f1737 lui a4,0xb0f1 + 3bc09bdc: 61070713 addi a4,a4,1552 # b0f1610 + 3bc09be0: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09be4: 50500713 li a4,1285 + 3bc09be8: b7a5 j 3bc09b50 + 3bc09bea: 4719 li a4,6 + 3bc09bec: eee788e3 beq a5,a4,3bc09adc + 3bc09bf0: 00f74c63 blt a4,a5,3bc09c08 + 3bc09bf4: 4715 li a4,5 + 3bc09bf6: e6e786e3 beq a5,a4,3bc09a62 + 3bc09bfa: 080047b7 lui a5,0x8004 + 3bc09bfe: 4709 li a4,2 + 3bc09c00: d3b8 sw a4,96(a5) + 3bc09c02: 0607a023 sw zero,96(a5) # 8004060 + 3bc09c06: 8082 ret + 3bc09c08: 37e5 addiw a5,a5,-7 + 3bc09c0a: 4709 li a4,2 + 3bc09c0c: fef767e3 bltu a4,a5,3bc09bfa + 3bc09c10: b791 j 3bc09b54 + +000000003bc09c12 : + 3bc09c12: 03020737 lui a4,0x3020 + 3bc09c16: 080007b7 lui a5,0x8000 + 3bc09c1a: 10070713 addi a4,a4,256 # 3020100 <__BSS_SIZE__+0x301a4f0> + 3bc09c1e: c398 sw a4,0(a5) + 3bc09c20: 07060737 lui a4,0x7060 + 3bc09c24: 50470713 addi a4,a4,1284 # 7060504 + 3bc09c28: c3d8 sw a4,4(a5) + 3bc09c2a: 0b0a1737 lui a4,0xb0a1 + 3bc09c2e: 90870713 addi a4,a4,-1784 # b0a0908 + 3bc09c32: c798 sw a4,8(a5) + 3bc09c34: 0f0e1737 lui a4,0xf0e1 + 3bc09c38: d0c70713 addi a4,a4,-756 # f0e0d0c + 3bc09c3c: c7d8 sw a4,12(a5) + 3bc09c3e: 13121737 lui a4,0x13121 + 3bc09c42: 11070713 addi a4,a4,272 # 13121110 + 3bc09c46: cb98 sw a4,16(a5) + 3bc09c48: 00161737 lui a4,0x161 + 3bc09c4c: 51470713 addi a4,a4,1300 # 161514 <__BSS_SIZE__+0x15b904> + 3bc09c50: cbd8 sw a4,20(a5) + 3bc09c52: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09c56: 10000593 li a1,256 + 3bc09c5a: 76543737 lui a4,0x76543 + 3bc09c5e: cfcc sw a1,28(a5) + 3bc09c60: 21070713 addi a4,a4,528 # 76543210 <__BL2_END__+0x3a92fe00> + 3bc09c64: d398 sw a4,32(a5) + 3bc09c66: 46a1 li a3,8 + 3bc09c68: d3d4 sw a3,36(a5) + 3bc09c6a: d798 sw a4,40(a5) + 3bc09c6c: d7d4 sw a3,44(a5) + 3bc09c6e: 007f0737 lui a4,0x7f0 + 3bc09c72: 0407a023 sw zero,64(a5) + 3bc09c76: 0735 addi a4,a4,13 + 3bc09c78: c3f8 sw a4,68(a5) + 3bc09c7a: 0407a423 sw zero,72(a5) + 3bc09c7e: 4741 li a4,16 + 3bc09c80: c7f8 sw a4,76(a5) + 3bc09c82: 4611 li a2,4 + 3bc09c84: 0c001737 lui a4,0xc001 + 3bc09c88: cbb0 sw a2,80(a5) + 3bc09c8a: b0070713 addi a4,a4,-1280 # c000b00 + 3bc09c8e: cbf8 sw a4,84(a5) + 3bc09c90: 09160737 lui a4,0x9160 + 3bc09c94: 04f70713 addi a4,a4,79 # 916004f + 3bc09c98: cfb8 sw a4,88(a5) + 3bc09c9a: 040008b7 lui a7,0x4000 + 3bc09c9e: 0407ae23 sw zero,92(a5) + 3bc09ca2: 37088713 addi a4,a7,880 # 4000370 <__BSS_SIZE__+0x3ffa760> + 3bc09ca6: d3b8 sw a4,96(a5) + 3bc09ca8: 0e001737 lui a4,0xe001 + 3bc09cac: 94070713 addi a4,a4,-1728 # e000940 + 3bc09cb0: d3f8 sw a4,100(a5) + 3bc09cb2: 00800737 lui a4,0x800 + 3bc09cb6: d7b8 sw a4,104(a5) + 3bc09cb8: 10800713 li a4,264 + 3bc09cbc: dbb8 sw a4,112(a5) + 3bc09cbe: 00072737 lui a4,0x72 + 3bc09cc2: dbf8 sw a4,116(a5) + 3bc09cc4: 1f00e6b7 lui a3,0x1f00e + 3bc09cc8: 08078713 addi a4,a5,128 + 3bc09ccc: c314 sw a3,0(a4) + 3bc09cce: 010916b7 lui a3,0x1091 + 3bc09cd2: 06bd addi a3,a3,15 + 3bc09cd4: c354 sw a3,4(a4) + 3bc09cd6: 0a0106b7 lui a3,0xa010 + 3bc09cda: 11468693 addi a3,a3,276 # a010114 + 3bc09cde: c714 sw a3,8(a4) + 3bc09ce0: aaaa06b7 lui a3,0xaaaa0 + 3bc09ce4: 08f68693 addi a3,a3,143 # ffffffffaaaa008f <__BL2_END__+0xffffffff6ee8cc7f> + 3bc09ce8: c754 sw a3,12(a4) + 3bc09cea: 6691 lui a3,0x4 + 3bc09cec: 80068513 addi a0,a3,-2048 # 3800 <__BSS_SIZE__-0x2410> + 3bc09cf0: cb08 sw a0,16(a4) + 3bc09cf2: 6505 lui a0,0x1 + 3bc09cf4: 80150813 addi a6,a0,-2047 # 801 <__BSS_SIZE__-0x540f> + 3bc09cf8: 01072a23 sw a6,20(a4) # 72014 <__BSS_SIZE__+0x6c404> + 3bc09cfc: 07400837 lui a6,0x7400 + 3bc09d00: 54080813 addi a6,a6,1344 # 7400540 + 3bc09d04: 03072023 sw a6,32(a4) + 3bc09d08: 01420837 lui a6,0x1420 + 3bc09d0c: 50480813 addi a6,a6,1284 # 1420504 <__BSS_SIZE__+0x141a8f4> + 3bc09d10: 03072223 sw a6,36(a4) + 3bc09d14: 00550837 lui a6,0x550 + 3bc09d18: 0829 addi a6,a6,10 + 3bc09d1a: 03072423 sw a6,40(a4) + 3bc09d1e: 00554837 lui a6,0x554 + 3bc09d22: c5a80813 addi a6,a6,-934 # 553c5a <__BSS_SIZE__+0x54e04a> + 3bc09d26: 03072623 sw a6,44(a4) + 3bc09d2a: 00aaa837 lui a6,0xaaa + 3bc09d2e: 5c380813 addi a6,a6,1475 # aaa5c3 <__BSS_SIZE__+0xaa49b3> + 3bc09d32: 03072823 sw a6,48(a4) + 3bc09d36: 00aaf837 lui a6,0xaaf + 3bc09d3a: 0f080813 addi a6,a6,240 # aaf0f0 <__BSS_SIZE__+0xaa94e0> + 3bc09d3e: 03072a23 sw a6,52(a4) + 3bc09d42: 1e001837 lui a6,0x1e001 + 3bc09d46: f0f80813 addi a6,a6,-241 # 1e000f0f + 3bc09d4a: 03072c23 sw a6,56(a4) + 3bc09d4e: 00084837 lui a6,0x84 + 3bc09d52: e1380813 addi a6,a6,-493 # 83e13 <__BSS_SIZE__+0x7e203> + 3bc09d56: 03072e23 sw a6,60(a4) + 3bc09d5a: 00030837 lui a6,0x30 + 3bc09d5e: 0e07a823 sw zero,240(a5) + 3bc09d62: 03380813 addi a6,a6,51 # 30033 <__BSS_SIZE__+0x2a423> + 3bc09d66: 07072a23 sw a6,116(a4) + 3bc09d6a: 00210837 lui a6,0x210 + 3bc09d6e: 02c80813 addi a6,a6,44 # 21002c <__BSS_SIZE__+0x20a41c> + 3bc09d72: 07072c23 sw a6,120(a4) + 3bc09d76: 00370837 lui a6,0x370 + 3bc09d7a: 0859 addi a6,a6,22 + 3bc09d7c: 07072e23 sw a6,124(a4) + 3bc09d80: 10078713 addi a4,a5,256 + 3bc09d84: 01172023 sw a7,0(a4) + 3bc09d88: 1007a223 sw zero,260(a5) + 3bc09d8c: 1007a623 sw zero,268(a5) + 3bc09d90: 1007a823 sw zero,272(a5) + 3bc09d94: 1007aa23 sw zero,276(a5) + 3bc09d98: 681d lui a6,0x7 + 3bc09d9a: 1007ac23 sw zero,280(a5) + 3bc09d9e: a1080813 addi a6,a6,-1520 # 6a10 <__BSS_SIZE__+0xe00> + 3bc09da2: 01072e23 sw a6,28(a4) + 3bc09da6: 1207a023 sw zero,288(a5) + 3bc09daa: ef700813 li a6,-265 + 3bc09dae: 03072223 sw a6,36(a4) + 3bc09db2: 487d li a6,31 + 3bc09db4: 03072423 sw a6,40(a4) + 3bc09db8: 4805 li a6,1 + 3bc09dba: 03072623 sw a6,44(a4) + 3bc09dbe: 10100813 li a6,257 + 3bc09dc2: 03072823 sw a6,48(a4) + 3bc09dc6: db4c sw a1,52(a4) + 3bc09dc8: 48d1 li a7,20 + 3bc09dca: 03172c23 sw a7,56(a4) + 3bc09dce: 1407a023 sw zero,320(a5) + 3bc09dd2: 1407a223 sw zero,324(a5) + 3bc09dd6: 80850e13 addi t3,a0,-2040 + 3bc09dda: 05c72423 sw t3,72(a4) + 3bc09dde: 1407a623 sw zero,332(a5) + 3bc09de2: 4895 li a7,5 + 3bc09de4: 05172823 sw a7,80(a4) + 3bc09de8: 05072a23 sw a6,84(a4) + 3bc09dec: 1407ac23 sw zero,344(a5) + 3bc09df0: 00333837 lui a6,0x333 + 3bc09df4: 1407ae23 sw zero,348(a5) + 3bc09df8: 33180813 addi a6,a6,817 # 333331 <__BSS_SIZE__+0x32d721> + 3bc09dfc: 1607a223 sw zero,356(a5) + 3bc09e00: 07072423 sw a6,104(a4) + 3bc09e04: 1607a623 sw zero,364(a5) + 3bc09e08: 1607a823 sw zero,368(a5) + 3bc09e0c: db6c sw a1,116(a4) + 3bc09e0e: 000205b7 lui a1,0x20 + 3bc09e12: 18078713 addi a4,a5,384 + 3bc09e16: 05c1 addi a1,a1,16 + 3bc09e18: c30c sw a1,0(a4) + 3bc09e1a: 1807a223 sw zero,388(a5) + 3bc09e1e: 000505b7 lui a1,0x50 + 3bc09e22: 1807a423 sw zero,392(a5) + 3bc09e26: 40058593 addi a1,a1,1024 # 50400 <__BSS_SIZE__+0x4a7f0> + 3bc09e2a: c74c sw a1,12(a4) + 3bc09e2c: 000215b7 lui a1,0x21 + 3bc09e30: 20e58593 addi a1,a1,526 # 2120e <__BSS_SIZE__+0x1b5fe> + 3bc09e34: cb0c sw a1,16(a4) + 3bc09e36: 2007a023 sw zero,512(a5) + 3bc09e3a: 20078713 addi a4,a5,512 + 3bc09e3e: 44000593 li a1,1088 + 3bc09e42: c34c sw a1,4(a4) + 3bc09e44: 2007a423 sw zero,520(a5) + 3bc09e48: 2207a023 sw zero,544(a5) + 3bc09e4c: d34c sw a1,36(a4) + 3bc09e4e: 2207a423 sw zero,552(a5) + 3bc09e52: 4007a023 sw zero,1024(a5) + 3bc09e56: 4007a223 sw zero,1028(a5) + 3bc09e5a: 4007a423 sw zero,1032(a5) + 3bc09e5e: 4007a623 sw zero,1036(a5) + 3bc09e62: 001005b7 lui a1,0x100 + 3bc09e66: 40078713 addi a4,a5,1024 + 3bc09e6a: e4b7558b swd a1,a1,(a4),2,3 + 3bc09e6e: 4007ac23 sw zero,1048(a5) + 3bc09e72: 04068693 addi a3,a3,64 + 3bc09e76: cf54 sw a3,28(a4) + 3bc09e78: 000416b7 lui a3,0x41 + 3bc09e7c: 50078713 addi a4,a5,1280 + 3bc09e80: 0685 addi a3,a3,1 + 3bc09e82: e0b7568b swd a3,a1,(a4),0,3 + 3bc09e86: 5007a423 sw zero,1288(a5) + 3bc09e8a: 5007a623 sw zero,1292(a5) + 3bc09e8e: cb10 sw a2,16(a4) + 3bc09e90: 5007aa23 sw zero,1300(a5) + 3bc09e94: 5007ac23 sw zero,1304(a5) + 3bc09e98: 5007ae23 sw zero,1308(a5) + 3bc09e9c: 480d li a6,3 + 3bc09e9e: 03072023 sw a6,32(a4) + 3bc09ea2: c334 sw a3,64(a4) + 3bc09ea4: c36c sw a1,68(a4) + 3bc09ea6: 5407a423 sw zero,1352(a5) + 3bc09eaa: 5407a623 sw zero,1356(a5) + 3bc09eae: cb30 sw a2,80(a4) + 3bc09eb0: 5407aa23 sw zero,1364(a5) + 3bc09eb4: 5407ac23 sw zero,1368(a5) + 3bc09eb8: 5407ae23 sw zero,1372(a5) + 3bc09ebc: 07072023 sw a6,96(a4) + 3bc09ec0: 08001737 lui a4,0x8001 + 3bc09ec4: 90070793 addi a5,a4,-1792 # 8000900 + 3bc09ec8: 40000693 li a3,1024 + 3bc09ecc: c394 sw a3,0(a5) + 3bc09ece: d7d4 sw a3,44(a5) + 3bc09ed0: db94 sw a3,48(a5) + 3bc09ed2: dbd4 sw a3,52(a5) + 3bc09ed4: df94 sw a3,56(a5) + 3bc09ed6: 94072023 sw zero,-1728(a4) + 3bc09eda: 96072823 sw zero,-1680(a4) + 3bc09ede: 96072a23 sw zero,-1676(a4) + 3bc09ee2: 080806b7 lui a3,0x8080 + 3bc09ee6: 96072c23 sw zero,-1672(a4) + 3bc09eea: 40468693 addi a3,a3,1028 # 8080404 + 3bc09eee: 08081837 lui a6,0x8081 + 3bc09ef2: dff4 sw a3,124(a5) + 3bc09ef4: 80880813 addi a6,a6,-2040 # 8080808 + 3bc09ef8: 98070793 addi a5,a4,-1664 + 3bc09efc: 06400637 lui a2,0x6400 + 3bc09f00: 0107a023 sw a6,0(a5) + 3bc09f04: 64060613 addi a2,a2,1600 # 6400640 + 3bc09f08: a0070793 addi a5,a4,-1536 + 3bc09f0c: e0c7d60b swd a2,a2,(a5),0,3 + 3bc09f10: e2c7d60b swd a2,a2,(a5),1,3 + 3bc09f14: 64000f93 li t6,1600 + 3bc09f18: 01f7a823 sw t6,16(a5) + 3bc09f1c: 0d000f37 lui t5,0xd000 + 3bc09f20: 0a001337 lui t1,0xa001 + 3bc09f24: 01e7aa23 sw t5,20(a5) + 3bc09f28: b0030313 addi t1,t1,-1280 # a000b00 + 3bc09f2c: 000408b7 lui a7,0x40 + 3bc09f30: 0067ac23 sw t1,24(a5) + 3bc09f34: 40088893 addi a7,a7,1024 # 40400 <__BSS_SIZE__+0x3a7f0> + 3bc09f38: 004006b7 lui a3,0x400 + 3bc09f3c: 04068693 addi a3,a3,64 # 400040 <__BSS_SIZE__+0x3fa430> + 3bc09f40: 0117ae23 sw a7,28(a5) + 3bc09f44: d394 sw a3,32(a5) + 3bc09f46: d3d4 sw a3,36(a5) + 3bc09f48: d794 sw a3,40(a5) + 3bc09f4a: d7d4 sw a3,44(a5) + 3bc09f4c: 04000e93 li t4,64 + 3bc09f50: 03d7a823 sw t4,48(a5) + 3bc09f54: a2072a23 sw zero,-1484(a4) + 3bc09f58: 03c7ac23 sw t3,56(a5) + 3bc09f5c: 0307ae23 sw a6,60(a5) + 3bc09f60: c3b0 sw a2,64(a5) + 3bc09f62: c3f0 sw a2,68(a5) + 3bc09f64: c7b0 sw a2,72(a5) + 3bc09f66: c7f0 sw a2,76(a5) + 3bc09f68: 05f7a823 sw t6,80(a5) + 3bc09f6c: 05e7aa23 sw t5,84(a5) + 3bc09f70: 0467ac23 sw t1,88(a5) + 3bc09f74: 0517ae23 sw a7,92(a5) + 3bc09f78: d3b4 sw a3,96(a5) + 3bc09f7a: d3f4 sw a3,100(a5) + 3bc09f7c: d7b4 sw a3,104(a5) + 3bc09f7e: d7f4 sw a3,108(a5) + 3bc09f80: 07d7a823 sw t4,112(a5) + 3bc09f84: a6072a23 sw zero,-1420(a4) + 3bc09f88: 07c7ac23 sw t3,120(a5) + 3bc09f8c: 0707ae23 sw a6,124(a5) + 3bc09f90: b0072023 sw zero,-1280(a4) + 3bc09f94: b0072223 sw zero,-1276(a4) + 3bc09f98: b0070793 addi a5,a4,-1280 + 3bc09f9c: 00404837 lui a6,0x404 + 3bc09fa0: 0107a423 sw a6,8(a5) + 3bc09fa4: 90050513 addi a0,a0,-1792 + 3bc09fa8: c7c8 sw a0,12(a5) + 3bc09faa: 000716b7 lui a3,0x71 + 3bc09fae: b0072823 sw zero,-1264(a4) + 3bc09fb2: e0e68693 addi a3,a3,-498 # 70e0e <__BSS_SIZE__+0x6b1fe> + 3bc09fb6: cbd4 sw a3,20(a5) + 3bc09fb8: b0072c23 sw zero,-1256(a4) + 3bc09fbc: b0072e23 sw zero,-1252(a4) + 3bc09fc0: 40400637 lui a2,0x40400 + 3bc09fc4: d390 sw a2,32(a5) + 3bc09fc6: 05c1 addi a1,a1,16 + 3bc09fc8: d3cc sw a1,36(a5) + 3bc09fca: b2072823 sw zero,-1232(a4) + 3bc09fce: b2072a23 sw zero,-1228(a4) + 3bc09fd2: 0307ac23 sw a6,56(a5) + 3bc09fd6: dfc8 sw a0,60(a5) + 3bc09fd8: b4072023 sw zero,-1216(a4) + 3bc09fdc: c3f4 sw a3,68(a5) + 3bc09fde: b4072423 sw zero,-1208(a4) + 3bc09fe2: b4072623 sw zero,-1204(a4) + 3bc09fe6: cbb0 sw a2,80(a5) + 3bc09fe8: cbec sw a1,84(a5) + 3bc09fea: 8082 ret + 3bc09fec: 0000 unimp + ... + +000000003bc09ff0 : + 3bc09ff0: 3032 3232 312d 2d32 3032 3254 3a31 3435 2022-12-20T21:54 + 3bc0a000: 353a 2b39 3830 303a 0030 0000 0000 0000 :59+08:00....... + +000000003bc0a010 : + 3bc0a010: 624a 3832 3967 673a 6536 3835 6565 0031 Jb28g9:g6e58ee1. + 3bc0a020: 3201 504f 4e45 4253 3a49 6e20 7865 5f74 .2OPENSBI: next_ + 3bc0a030: 6461 7264 303d 2578 786c 6120 6772 3d31 addr=0x%lx arg1= + 3bc0a040: 7830 6c25 0078 0000 7830 0000 63c6 ffff 0x%lx...0x...c.. + 3bc0a050: 636c ffff 636c ffff 636c ffff 636c ffff lc..lc..lc..lc.. + 3bc0a060: 63c6 ffff 636c ffff 636c ffff 647a ffff .c..lc..lc..zd.. + 3bc0a070: 636c ffff 636c ffff 636c ffff 6422 ffff lc..lc..lc.."d.. + 3bc0a080: 636c ffff 636c ffff 6402 ffff 636c ffff lc..lc...d..lc.. + 3bc0a090: 6480 ffff 636c ffff 636c ffff 6456 ffff .d..lc..lc..Vd.. + 3bc0a0a0: 636c ffff 6474 ffff 3001 4520 523a 5345 lc..td...0 E:RES + 3bc0a0b0: 5445 253a 3a73 6425 000a 0000 0000 0000 ET:%s:%d........ + 3bc0a0c0: 3001 4520 723a 3d61 7830 6c25 0a78 0000 .0 E:ra=0x%lx... + 3bc0a0d0: 6170 696e 0063 0000 3201 5352 2e43 000a panic....2RSC... + 3bc0a0e0: 3201 4c50 534c 0a2e 0000 0000 0000 0000 .2PLLS.......... + 3bc0a0f0: 3201 4c50 454c 0a2e 0000 0000 0000 0000 .2PLLE.......... + 3bc0a100: 3201 7355 2065 6e69 6574 6e72 6c61 3320 .2Use internal 3 + 3bc0a110: 6b32 000a 0000 0000 3201 7473 6f5f 5f6e 2k.......2st_on_ + 3bc0a120: 6572 7361 6e6f 253d 0a78 0000 0000 0000 reason=%x....... + 3bc0a130: 3201 7473 6f5f 6666 725f 6165 6f73 3d6e .2st_off_reason= + 3bc0a140: 7825 000a 0000 0000 0000 249f 1746 245d %x.........$F.]$ + 3bc0a150: 1746 245d aaab 24aa 8201 0012 8101 0018 F.]$...$........ + 3bc0a160: 8201 0030 8101 0016 c906 a55a 0024 0000 ..0.......Z.$... + +000000003bc0a170 : + 3bc0a170: 3130 3332 3534 3736 3938 6261 6463 6665 0123456789abcdef + 3bc0a180: 6867 6a69 6c6b 6e6d 706f 7271 7473 7675 ghijklmnopqrstuv + 3bc0a190: 7877 7a79 0000 0000 0101 0101 0101 0101 wxyz............ + 3bc0a1a0: 3301 4920 4c3a 4549 252f 2f64 7025 302f .3 I:LIE/%d/%p/0 + 3bc0a1b0: 2578 2f78 6c25 2e75 000a 0000 0000 0000 x%x/%lu......... + 3bc0a1c0: 3201 3250 2f53 7830 6c25 2f78 7025 0a2e .2P2S/0x%lx/%p.. + ... + 3bc0a1d8: 3101 5720 4c3a 3250 4e5f 4d4f 4741 4349 .1 W:LP2_NOMAGIC + 3bc0a1e8: 000a 0000 0000 0000 3001 4520 703a 7261 .........0 E:par + 3bc0a1f8: 6d61 5f32 6b63 7573 206d 3028 2578 2f78 am2_cksum (0x%x/ + 3bc0a208: 7830 7825 0a29 0000 3201 3250 2e45 000a 0x%x)....2P2E... + 3bc0a218: 3201 5044 2f53 7830 7825 302f 2578 2e78 .2DPS/0x%x/0x%x. + 3bc0a228: 000a 0000 0000 0000 3001 4520 643a 7264 .........0 E:ddr + 3bc0a238: 705f 7261 6d61 635f 736b 6d75 2820 7830 _param_cksum (0x + 3bc0a248: 7825 302f 2578 2978 000a 0000 0000 0000 %x/0x%x)........ + 3bc0a258: 3201 5044 2e45 000a 3101 5720 443a 204c .2DPE....1 W:DL + 3bc0a268: 6163 636e 6c65 656c 2e64 4c20 616f 2064 cancelled. Load + 3bc0a278: 6c66 7361 2e68 2820 6425 2e29 000a 0000 flash. (%d)..... + 3bc0a288: 3001 4520 463a 6961 656c 2064 6f74 6c20 .0 E:Failed to l + 3bc0a298: 616f 2064 4444 2052 6170 6172 206d 2528 oad DDR param (% + 3bc0a2a8: 2964 0a2e 0000 0000 3201 3243 2f53 7830 d).......2C2S/0x + 3bc0a2b8: 7825 302f 2578 2f78 7830 7825 0a2e 0000 %x/0x%x/0x%x.... + 3bc0a2c8: 3201 6f4e 4320 3039 4c36 6920 616d 6567 .2No C906L image + 3bc0a2d8: 0a2e 0000 0000 0000 3001 4520 623a 636c .........0 E:blc + 3bc0a2e8: 5f70 6e32 5f64 7572 616e 6464 2072 3028 p_2nd_runaddr (0 + 3bc0a2f8: 2578 2978 6920 2073 6f6e 2074 6e69 4420 x%x) is not in D + 3bc0a308: 4152 2e4d 000a 0000 3001 4520 623a 636c RAM......0 E:blc + 3bc0a318: 5f70 6e32 5f64 6973 657a 2820 7830 7825 p_2nd_size (0x%x + 3bc0a328: 2029 7369 6e20 746f 6920 206e 5244 4d41 ) is not in DRAM + 3bc0a338: 0a2e 0000 0000 0000 3001 4520 623a 636c .........0 E:blc + 3bc0a348: 5f70 6e32 5f64 6b63 7573 206d 3028 2578 p_2nd_cksum (0x% + 3bc0a358: 2f78 7830 7825 0a29 0000 0000 0000 0000 x/0x%x)......... + 3bc0a368: 3001 4520 763a 7265 6669 2079 6c62 7063 .0 E:verify blcp + 3bc0a378: 3220 646e 2820 6425 0a29 0000 0000 0000 2nd (%d)....... + 3bc0a388: 3201 3243 2e45 000a 3201 534d 302f 2578 .2C2E....2MS/0x% + 3bc0a398: 2f78 7830 7825 302f 2578 2e78 000a 0000 x/0x%x/0x%x..... + 3bc0a3a8: 3201 6f4e 6d20 6e6f 7469 726f 0a2e 0000 .2No monitor.... + 3bc0a3b8: 3001 4520 6d3a 6e6f 7469 726f 725f 6e75 .0 E:monitor_run + 3bc0a3c8: 6461 7264 2820 7830 7825 2029 7369 6e20 addr (0x%x) is n + 3bc0a3d8: 746f 6920 206e 5244 4d41 0a2e 0000 0000 ot in DRAM...... + 3bc0a3e8: 3001 4520 6d3a 6e6f 7469 726f 735f 7a69 .0 E:monitor_siz + 3bc0a3f8: 2065 3028 2578 2978 6920 2073 6f6e 2074 e (0x%x) is not + 3bc0a408: 6e69 4420 4152 2e4d 000a 0000 0000 0000 in DRAM......... + 3bc0a418: 3001 4520 6d3a 6e6f 7469 726f 635f 736b .0 E:monitor_cks + 3bc0a428: 6d75 2820 7830 7825 302f 2578 2978 000a um (0x%x/0x%x).. + 3bc0a438: 3001 4520 763a 7265 6669 2079 6f6d 696e .0 E:verify moni + 3bc0a448: 6f74 2072 2528 2964 000a 0000 0000 0000 tor (%d)........ + 3bc0a458: 3201 454d 0a2e 0000 3201 324c 302f 2578 .2ME.....2L2/0x% + 3bc0a468: 2e78 000a 0000 0000 3201 324c 302f 2578 x........2L2/0x% + 3bc0a478: 2f78 7830 7825 302f 2578 786c 302f 2578 x/0x%x/0x%lx/0x% + 3bc0a488: 2f78 7830 7825 000a 3201 4f43 504d 252f x/0x%x...2COMP/% + 3bc0a498: 2e64 000a 0000 0000 3001 4520 6c3a 616f d........0 E:loa + 3bc0a4a8: 6564 5f72 6e32 5f64 6b63 7573 206d 3028 der_2nd_cksum (0 + 3bc0a4b8: 2578 2f78 7830 7825 0a29 0000 0000 0000 x%x/0x%x)....... + 3bc0a4c8: 3001 4520 763a 7265 6669 2079 6f6c 6461 .0 E:verify load + 3bc0a4d8: 7265 3220 646e 2820 6425 0a29 0000 0000 er 2nd (%d)..... + 3bc0a4e8: 3001 4520 463a 6961 656c 2064 6f74 6420 .0 E:Failed to d + 3bc0a4f8: 6365 6d6f 7270 7365 2073 6f6c 6461 7265 ecompress loader + 3bc0a508: 325f 646e 2820 6425 252f 756c 0a29 0000 _2nd (%d/%lu)... + 3bc0a518: 3201 6f4c 6461 7265 325f 646e 6c20 616f .2Loader_2nd loa + 3bc0a528: 6564 2e64 000a 0000 3001 4520 463a 6961 ded......0 E:Fai + 3bc0a538: 656c 2064 6f74 6c20 616f 2064 6572 7473 led to load rest + 3bc0a548: 2820 6425 2e29 000a 3201 754a 706d 7420 (%d)....2Jump t + 3bc0a558: 206f 6f6d 696e 6f74 2072 7461 3020 2578 o monitor at 0x% + 3bc0a568: 786c 0a2e 0000 0000 3201 754a 706d 7420 lx.......2Jump t + 3bc0a578: 206f 6f6c 6461 7265 325f 646e 6120 2074 o loader_2nd at + 3bc0a588: 7830 6c25 2e78 000a 3201 460a 4253 204c 0x%lx....2.FSBL + 3bc0a598: 7325 253a 0a73 0000 3301 4920 733a 5f77 %s:%s....3 I:sw_ + 3bc0a5a8: 6e69 6f66 303d 2578 0a78 0000 0000 0000 info=0x%x....... + 3bc0a5b8: 3301 4920 663a 7069 705f 7261 6d61 3a31 .3 I:fip_param1: + 3bc0a5c8: 7020 7261 6d61 635f 736b 6d75 303d 2578 param_cksum=0x% + 3bc0a5d8: 2078 6170 6172 326d 6c5f 616f 6164 6464 x param2_loadadd + 3bc0a5e8: 3d72 7830 7825 000a 3301 4920 433a 5f50 r=0x%x...3 I:CP_ + 3bc0a5f8: 5453 5441 5f45 4552 3d47 7830 7825 000a STATE_REG=0x%x.. + 3bc0a608: 3201 4c42 2032 6e65 2e64 000a 0000 0000 .2BL2 end....... + 3bc0a618: 5643 444c 3230 000a 3001 4520 253a 2073 CVLD02...0 E:%s + 3bc0a628: 6163 276e 2074 6c61 6f6c 2063 6c25 2075 can't alloc %lu + 3bc0a638: 7962 6574 0a73 0000 3001 4520 253a 3a73 bytes....0 E:%s: + 3bc0a648: 6420 7473 735f 7a69 2065 7369 4e20 4c55 dst_size is NUL + 3bc0a658: 2e4c 000a 0000 0000 3301 4920 4c3a 4d5a L........3 I:LZM + 3bc0a668: 3141 252f 2f70 7025 0a2e 0000 0000 0000 A1/%p/%p........ + 3bc0a678: 3301 4920 4c3a 4d5a 3241 752f 636e 6d6f .3 I:LZMA2/uncom + 3bc0a688: 5f70 6973 657a 303d 2578 786c 000a 0000 p_size=0x%lx.... + 3bc0a698: 3001 4520 4c3a 6d7a 4461 6365 646f 2065 .0 E:LzmaDecode + 3bc0a6a8: 5245 4f52 3a52 2520 2064 7328 6174 7574 ERROR: %d (statu + 3bc0a6b8: 3d73 6425 0a29 0000 3301 4920 4c3a 4d5a s=%d)....3 I:LZM + 3bc0a6c8: 3941 302f 2578 786c 000a 0000 0000 0000 A9/0x%lx........ + 3bc0a6d8: 3301 4920 4c3a 345a 252f 2f70 7025 0a2e .3 I:LZ4/%p/%p.. + ... + 3bc0a6f0: 3001 4520 643a 7463 5378 6174 7574 3d73 .0 E:dctxStatus= + 3bc0a700: 6c25 0a75 0000 0000 3301 4920 643a 7473 %lu......3 I:dst + 3bc0a710: 735f 7a69 3d65 6c25 2075 7273 5f63 6973 _size=%lu src_si + 3bc0a720: 657a 253d 756c 7220 7465 253d 647a 000a ze=%lu ret=%zd.. + 3bc0a730: 3001 4520 4c3a 345a 5f46 6564 6f63 706d .0 E:LZ4F_decomp + 3bc0a740: 6572 7373 253d 756c 000a 0000 0000 0000 ress=%lu........ + 3bc0a750: 3201 4344 2f50 7025 302f 2578 786c 252f .2DCP/%p/0x%lx/% + 3bc0a760: 2f70 7830 6c25 2f78 6425 0a2e 0000 0000 p/0x%lx/%d...... + 3bc0a770: 3201 4344 2f50 7830 6c25 2f78 6425 0a2e .2DCP/0x%lx/%d.. + ... + +000000003bc0a788 <__func__.0>: + 3bc0a788: 7a53 6c41 6f6c 0063 SzAlloc. + +000000003bc0a790 <__func__.1>: + 3bc0a790: 6564 6f63 706d 6572 7373 6c5f 6d7a 0061 decompress_lzma. + 3bc0a7a0: 3301 4920 413a 7070 696c 6163 6974 6e6f .3 I:Application + 3bc0a7b0: 203a 7325 000a 0000 3301 4920 753a 6273 : %s.....3 I:usb + 3bc0a7c0: 2520 0a73 0000 0000 3201 5355 4242 002e %s......2USBB.. + 3bc0a7d0: 3301 4920 433a 4956 555f 4253 425f 4552 .3 I:CVI_USB_BRE + 3bc0a7e0: 4b41 000a 0000 0000 3201 5355 4b42 002e AK.......2USBK.. + 3bc0a7f0: 3301 4920 663a 616c 4567 746e 7265 4c44 .3 I:flagEnterDL + 3bc0a800: 2520 0a64 0000 0000 3301 4920 4d3a 4741 %d......3 I:MAG + 3bc0a810: 4349 4e20 4d55 4e20 544f 4d20 5441 4843 IC NUM NOT MATCH + 3bc0a820: 000a 0000 0000 0000 3201 5355 4b42 2e46 .........2USBKF. + ... + 3bc0a838: 3301 4920 493a 204f 6241 726f 2074 2121 .3 I:IO Abort !! + 3bc0a848: 2121 0a21 0000 0000 3301 4920 723a 6365 !!!......3 I:rec + 3bc0a858: 7069 6569 746e 7420 7261 6567 2074 6163 ipient target ca + 3bc0a868: 6e6e 746f 6220 2065 6e69 6574 6672 6361 nnot be interfac + 3bc0a878: 2165 000a 0000 0000 3201 5355 5042 302f e!.......2USBP/0 + 3bc0a888: 2578 2e78 0000 0000 3301 4920 663a 7374 x%x......3 I:fts + 3bc0a898: 5b6e 6425 205d 203d 7825 000a 0000 0000 n[%d] = %x...... + 3bc0a8a8: 3301 4920 633a 6372 7620 6c61 3d20 2520 .3 I:crc val = % + 3bc0a8b8: 0a78 0000 0000 0000 3301 4920 743a 2073 x........3 I:ts + 3bc0a8c8: 6176 206c 203d 7825 000a 0000 0000 0000 val = %x........ + 3bc0a8d8: 3201 5355 5342 252f 2e73 0000 0000 0000 .2USBS/%s....... + 3bc0a8e8: 3231 3433 3635 3837 4139 4342 0000 0000 123456789ABC.... + 3bc0a8f8: 7065 6931 2d6e 7562 6b6c 0000 0000 0000 ep1in-bulk...... + 3bc0a908: 7065 6f32 7475 622d 6c75 006b 0000 0000 ep2out-bulk..... + 3bc0a918: 7065 6933 2d6e 6e69 0074 0000 737e ffff ep3in-int...~s.. + 3bc0a928: 7550 ffff 73e4 ffff 7416 ffff 7416 ffff Pu...s...t...t.. + 3bc0a938: 753c ffff 7550 ffff 7416 ffff 7416 ffff : + 3bc0ab80: 6962 646e 0000 0000 bind.... + +000000003bc0ab88 <__func__.1>: + 3bc0ab88: 6e75 6962 646e 0000 unbind.. + +000000003bc0ab90 <__func__.4>: + 3bc0ab90: 6964 6373 6e6f 656e 7463 0000 0000 0000 disconnect...... + +000000003bc0aba0 <__func__.5>: + 3bc0aba0: 6572 6573 0074 0000 6177 6e72 6e69 2167 reset...warning! + 3bc0abb0: 6620 6572 2065 6e75 6966 696e 6873 6465 free unfinished + 3bc0abc0: 7220 7165 6575 7473 0a21 0000 0000 0000 request!....... + 3bc0abd0: 7325 203a 4820 4e41 2147 4120 4248 4920 %s: HANG! AHB I + 3bc0abe0: 6c64 2065 5247 4353 4c54 000a 0000 0000 dle GRSCTL...... + 3bc0abf0: 7325 203a 6974 656d 756f 2074 6c66 7375 %s: timeout flus + 3bc0ac00: 6968 676e 6620 6669 206f 4728 5352 4354 hing fifo (GRSTC + 3bc0ac10: 4c54 253d 3830 2978 000a 0000 0000 0000 TL=%08x)........ + 3bc0ac20: 7325 203a 6974 656d 756f 2074 6c66 7375 %s: timeout flus + 3bc0ac30: 6968 676e 6620 6669 736f 2820 7267 7473 hing fifos (grst + 3bc0ac40: 7463 206c 203d 7830 7825 0a29 0000 0000 ctl = 0x%x)..... + 3bc0ac50: 7325 203a 6163 6c6c 6620 726f 6520 3070 %s: call for ep0 + 3bc0ac60: 6f2d 7475 000a 0000 7325 203a 6974 656d -out....%s: time + 3bc0ac70: 756f 2074 4944 5045 4e49 2e54 414e 454b out DIEPINT.NAKE + 3bc0ac80: 4646 000a 0000 0000 7325 203a 6974 656d FF......%s: time + 3bc0ac90: 756f 2074 4947 544e 5453 2e53 4f47 5455 out GINTSTS.GOUT + 3bc0aca0: 414e 454b 4646 000a 7325 203a 6974 656d NAKEFF..%s: time + 3bc0acb0: 756f 2074 4f44 5045 5443 2e4c 5045 6944 out DOEPCTL.EPDi + 3bc0acc0: 6173 6c62 0a65 0000 7325 2928 4820 4e41 sable...%s() HAN + 3bc0acd0: 2147 5320 666f 2074 6552 6573 2074 5247 G! Soft Reset GR + 3bc0ace0: 5453 5443 3d4c 3025 0a78 0000 0000 0000 STCTL=%0x....... + 3bc0acf0: 7325 2928 4820 4e41 2147 5320 666f 2074 %s() HANG! Soft + 3bc0ad00: 2e34 2032 6552 6573 2074 5247 5453 5443 4.2 Reset GRSTCT + 3bc0ad10: 3d4c 3025 0a78 0000 7325 2928 4820 4e41 L=%0x...%s() HAN + 3bc0ad20: 2147 4120 4248 4920 6c64 2065 5247 5453 G! AHB Idle GRST + 3bc0ad30: 5443 3d4c 3025 0a78 0000 0000 0000 0000 CTL=%0x......... + 3bc0ad40: 6973 657a 6620 726f 6820 6e61 6c64 7265 size for handler + 3bc0ad50: 6920 2073 6f74 206f 6173 6c6d 206c 2528 is too samll (% + 3bc0ad60: 646c 202c 6425 0a29 0000 0000 0000 0000 ld, %d)......... + 3bc0ad70: 6f4e 6d20 6d65 726f 2079 7661 6961 616c No memory availa + 3bc0ad80: 6c62 2065 6f66 2072 4455 2143 000a 0000 ble for UDC!.... + +000000003bc0ad90 <__func__.0>: + 3bc0ad90: 7764 3263 655f 5f70 7473 706f 785f 6566 dwc2_ep_stop_xfe + 3bc0ada0: 0072 0000 0000 0000 r....... + +000000003bc0ada8 <__func__.1>: + 3bc0ada8: 645f 6377 5f32 7065 645f 7369 6261 656c _dwc2_ep_disable + ... + +000000003bc0adc0 <__func__.2>: + 3bc0adc0: 7764 3263 725f 6365 6e6f 6966 5f67 7375 dwc2_reconfig_us + 3bc0add0: 6462 0000 0000 0000 bd...... + +000000003bc0add8 <__func__.3>: + 3bc0add8: 7764 3263 685f 6f73 6774 745f 6678 6669 dwc2_hsotg_txfif + 3bc0ade8: 5f6f 6c66 7375 0068 o_flush. + +000000003bc0adf0 <__func__.4>: + 3bc0adf0: 7764 3263 685f 6f73 6774 695f 696e 5f74 dwc2_hsotg_init_ + 3bc0ae00: 6966 6f66 0000 0000 fifo.... + +000000003bc0ae08 : + 3bc0ae08: 7764 3263 752d 6364 0000 0000 0000 0000 dwc2-udc........ + +000000003bc0ae18 : + ... + 3bc0ae20: 2ab4 3bc0 0000 0000 0000 0000 0000 0000 .*.;............ + ... + 3bc0ae40: 279e 3bc0 0000 0000 0000 0000 0000 0000 .'.;............ + ... + +000000003bc0ae60 : + 3bc0ae60: 7065 2d30 6f63 746e 6f72 006c 0000 0000 ep0-control..... + +000000003bc0ae70 : + 3bc0ae70: 7065 6931 2d6e 7562 6b6c 0000 0000 0000 ep1in-bulk...... + +000000003bc0ae80 : + 3bc0ae80: 7065 6f32 7475 622d 6c75 006b 0000 0000 ep2out-bulk..... + +000000003bc0ae90 : + 3bc0ae90: 7065 6933 2d6e 6e69 0074 0000 0000 0000 ep3in-int....... + 3bc0aea0: 7263 2d71 623e 6572 7571 7365 3a74 7830 crq->brequest:0x + 3bc0aeb0: 7825 000a 8f90 ffff 906c ffff 91be ffff %x......l....... + 3bc0aec0: 9110 ffff 91be ffff 8f24 ffff 8f72 ffff ........$...r... + 3bc0aed0: 91be ffff 8f86 ffff 8f5a ffff 91be ffff ........Z....... + 3bc0aee0: 8f7c ffff 0000 0000 7572 206e 6574 7473 |.......run test + 3bc0aef0: 6d20 646f 2065 6425 000a 0000 0000 0000 mode %d........ + 3bc0af00: 3301 4920 553a 4253 4956 2f44 7825 0a2e .3 I:USBVID/%x.. + ... + +000000003bc0af18 : + 3bc0af18: 0000 1021 2042 3063 4084 50a5 60c6 70e7 ..!.B c0.@.P.`.p + 3bc0af28: 8108 9129 a14a b16b c18c d1ad e1ce f1ef ..).J.k......... + 3bc0af38: 1231 0210 3273 2252 52b5 4294 72f7 62d6 1...s2R".R.B.r.b + 3bc0af48: 9339 8318 b37b a35a d3bd c39c f3ff e3de 9...{.Z......... + 3bc0af58: 2462 3443 0420 1401 64e6 74c7 44a4 5485 b$C4 ....d.t.D.T + 3bc0af68: a56a b54b 8528 9509 e5ee f5cf c5ac d58d j.K.(........... + 3bc0af78: 3653 2672 1611 0630 76d7 66f6 5695 46b4 S6r&..0..v.f.V.F + 3bc0af88: b75b a77a 9719 8738 f7df e7fe d79d c7bc [.z...8......... + 3bc0af98: 48c4 58e5 6886 78a7 0840 1861 2802 3823 .H.X.h.x@.a..(#8 + 3bc0afa8: c9cc d9ed e98e f9af 8948 9969 a90a b92b ........H.i...+. + 3bc0afb8: 5af5 4ad4 7ab7 6a96 1a71 0a50 3a33 2a12 .Z.J.z.jq.P.3:.* + 3bc0afc8: dbfd cbdc fbbf eb9e 9b79 8b58 bb3b ab1a ........y.X.;... + 3bc0afd8: 6ca6 7c87 4ce4 5cc5 2c22 3c03 0c60 1c41 .l.|.L.\",.<`.A. + 3bc0afe8: edae fd8f cdec ddcd ad2a bd0b 8d68 9d49 ........*...h.I. + 3bc0aff8: 7e97 6eb6 5ed5 4ef4 3e13 2e32 1e51 0e70 .~.n.^.N.>2.Q.p. + 3bc0b008: ff9f efbe dfdd cffc bf1b af3a 9f59 8f78 ..........:.Y.x. + 3bc0b018: 9188 81a9 b1ca a1eb d10c c12d f14e e16f ..........-.N.o. + 3bc0b028: 1080 00a1 30c2 20e3 5004 4025 7046 6067 .....0. .P%@Fpg` + 3bc0b038: 83b9 9398 a3fb b3da c33d d31c e37f f35e ........=.....^. + 3bc0b048: 02b1 1290 22f3 32d2 4235 5214 6277 7256 .....".25B.RwbVr + 3bc0b058: b5ea a5cb 95a8 8589 f56e e54f d52c c50d ........n.O.,... + 3bc0b068: 34e2 24c3 14a0 0481 7466 6447 5424 4405 .4.$....ftGd$T.D + 3bc0b078: a7db b7fa 8799 97b8 e75f f77e c71d d73c ........_.~...<. + 3bc0b088: 26d3 36f2 0691 16b0 6657 7676 4615 5634 .&.6....Wfvv.F4V + 3bc0b098: d94c c96d f90e e92f 99c8 89e9 b98a a9ab L.m.../......... + 3bc0b0a8: 5844 4865 7806 6827 18c0 08e1 3882 28a3 DXeH.x'h.....8.( + 3bc0b0b8: cb7d db5c eb3f fb1e 8bf9 9bd8 abbb bb9a }.\.?........... + 3bc0b0c8: 4a75 5a54 6a37 7a16 0af1 1ad0 2ab3 3a92 uJTZ7j.z.....*.: + 3bc0b0d8: fd2e ed0f dd6c cd4d bdaa ad8b 9de8 8dc9 ....l.M......... + 3bc0b0e8: 7c26 6c07 5c64 4c45 3ca2 2c83 1ce0 0cc1 &|.ld\EL.<.,.... + 3bc0b0f8: ef1f ff3e cf5d df7c af9b bfba 8fd9 9ff8 ..>.].|......... + 3bc0b108: 6e17 7e36 4e55 5e74 2e93 3eb2 0ed1 1ef0 .n6~UNt^...>.... + 3bc0b118: c21c ffff c250 ffff c2be ffff c33a ffff ....P.......:... + 3bc0b128: c360 ffff c406 ffff c4b6 ffff c518 ffff `............... + 3bc0b138: c64c ffff c740 ffff c744 ffff c776 ffff L...@...D...v... + 3bc0b148: c7e6 ffff c806 ffff c860 ffff 0000 0000 ........`....... + +000000003bc0b158 : + 3bc0b158: 0000 0001 0000 0000 0000 0004 0000 0000 ................ + 3bc0b168: 0000 0010 0000 0000 0000 0040 0000 0000 ..........@..... + +000000003bc0b178 : + ... + 3bc0b184: ffff ffff fffc ffff 0001 0000 0002 0000 ................ + 3bc0b194: 0003 0000 .... + +000000003bc0b198 : + 3bc0b198: 0000 0000 0001 0000 0002 0000 0001 0000 ................ + 3bc0b1a8: 0000 0000 0004 0000 0004 0000 0004 0000 ................ + 3bc0b1b8: cb7e ffff cb5e ffff cb3e ffff c8fa ffff ~...^...>....... + 3bc0b1c8: c99c ffff ca4e ffff cb10 ffff c8cc ffff ....N........... + 3bc0b1d8: c96e ffff ca20 ffff cae2 ffff c89e ffff n... ........... + 3bc0b1e8: c940 ffff c9f2 ffff cab4 ffff 0000 0000 @............... + 3bc0b1f8: 3201 4444 2052 6e69 7469 0a2e 0000 0000 .2DDR init...... + 3bc0b208: 3201 6464 5f72 6170 6172 5b6d 5d30 303d .2ddr_param[0]=0 + 3bc0b218: 2578 2e78 000a 0000 3201 6b70 5f67 7974 x%x......2pkg_ty + 3bc0b228: 6570 253d 0a78 0000 3201 6e32 0a64 0000 pe=%x....22nd... + 3bc0b238: 3201 6e75 6e6b 776f 206e 6b70 5f67 7974 .2unknown pkg_ty + 3bc0b248: 6570 303d 2578 0a78 0000 0000 0000 0000 pe=0x%x......... + 3bc0b258: 3201 2544 5f78 7825 255f 0a78 0000 0000 .2D%x_%x_%x..... + 3bc0b268: 3201 4444 3252 0000 3201 4444 3352 0000 .2DDR2...2DDR3.. + 3bc0b278: 3201 6e75 6e6b 776f 206e 6576 646e 726f .2unknown vendor + 3bc0b288: 253d 0064 0000 0000 3201 352d 3231 004d =%d......2-512M. + 3bc0b298: 3201 312d 0047 0000 3201 322d 0047 0000 .2-1G....2-2G... + 3bc0b2a8: 3201 342d 0047 0000 3201 752d 6b6e 6f6e .2-4G....2-unkno + 3bc0b2b8: 6e77 6320 7061 6361 7469 3d79 6425 0000 wn capacity=%d.. + 3bc0b2c8: 3201 512d 4e46 3838 000a 0000 0000 0000 .2-QFN88........ + 3bc0b2d8: 3201 512d 4e46 3836 000a 0000 0000 0000 .2-QFN68........ + 3bc0b2e8: 3201 422d 4147 000a 3201 752d 6b6e 6f6e .2-BGA...2-unkno + 3bc0b2f8: 6e77 7020 676b 253d 0064 0000 cf3c ffff wn pkg=%d...<... + 3bc0b308: cfc2 ffff cf1a ffff cf2c ffff cf3c ffff ........,...<... + 3bc0b318: cfc2 ffff cfa4 ffff cfb4 ffff cfea ffff ................ + 3bc0b328: cfea ffff cfea ffff cfb0 ffff cfea ffff ................ + 3bc0b338: cfea ffff cfea ffff cfea ffff cfb0 ffff ................ + 3bc0b348: cfea ffff 0000 0000 3001 4520 453a 5252 .........0 E:ERR + 3bc0b358: 524f 6220 7369 5f74 6166 6c69 000a 0000 OR bist_fail.... + 3bc0b368: 3001 4520 623a 7369 5f74 6572 7573 746c .0 E:bist_result + 3bc0b378: 3d20 2520 2c78 6520 7272 645f 7461 5f61 = %x, err_data_ + 3bc0b388: 646f 2064 203d 6c25 2c78 6520 7272 645f odd = %lx, err_d + 3bc0b398: 7461 5f61 7665 6e65 3d20 2520 786c 000a ata_even = %lx.. + 3bc0b3a8: 3201 4444 2052 4942 5453 4620 4941 0a4c .2DDR BIST FAIL. + ... + 3bc0b3c0: 3201 4444 2052 4942 5453 5020 5341 0a53 .2DDR BIST PASS. + ... + 3bc0b3d8: fa02 401f fa02 801f 2c02 4010 2c02 8010 ...@.....,.@.,.. + 3bc0b3e8: 7a00 4000 7a00 8000 3a00 4000 3a00 8000 .z.@.z...:.@.:.. + 3bc0b3f8: e08c ffff e0f0 ffff e150 ffff e1bc ffff ........P....... + 3bc0b408: e280 ffff e220 ffff e1b6 ffff e1b6 ffff .... ........... + 3bc0b418: e342 ffff e2e0 ffff e622 ffff e69a ffff B......."....... + 3bc0b428: e712 ffff e78a ffff e7aa ffff ............ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2.elf b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2.elf new file mode 100755 index 000000000..506a63a9c Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2.elf differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2.ld b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2.ld new file mode 100644 index 000000000..b7fbc239f --- /dev/null +++ b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2.ld @@ -0,0 +1,53 @@ +OUTPUT_FORMAT("elf64-littleriscv") +OUTPUT_ARCH(riscv) +ENTRY(bl2_entrypoint) +MEMORY { + RAM (rwx): ORIGIN = (0x3BC00000), LENGTH = (0x00019000) +} +SECTIONS +{ + . = (0x3BC00000); + ASSERT(. == ALIGN(4096), + "BL2_BASE address is not aligned on a page boundary.") + ro . : { + __RO_START__ = .; + *bl2_entrypoint.o(.text*) + *(.vectors) + *(.text*) + *(.rodata*) + __RO_END__ = .; + } >RAM + .data . : { + . = ALIGN(16); + __DATA_START__ = .; + *(.data*) + . = ALIGN(16); + __DATA_END__ = .; + } >RAM + stacks (NOLOAD) : { + . = ALIGN(64); + __STACKS_START__ = .; + . += 0x2000; + . = ALIGN(64); + __STACKS_END__ = .; + } >RAM + .bss : ALIGN(16) { + . = ALIGN(16); + __BSS_START__ = .; + *(SORT_BY_ALIGNMENT(.bss*)) + *(COMMON) + . = ALIGN(16); + __BSS_END__ = .; + } >RAM + __BL2_END__ = .; + __BSS_SIZE__ = SIZEOF(.bss); + ASSERT(. <= ((0x3BC00000) + (0x00019000)), "BL2 image has exceeded its limit.") +p_rom_api_cryptodma_aes_decrypt = 0x0000000004400100; +p_rom_api_flash_init = 0x0000000004400080; +p_rom_api_get_boot_src = 0x0000000004400020; +p_rom_api_get_number_of_retries = 0x00000000044000c0; +p_rom_api_image_crc = 0x00000000044000a0; +p_rom_api_load_image = 0x0000000004400060; +p_rom_api_set_boot_src = 0x0000000004400040; +p_rom_api_verify_rsa = 0x00000000044000e0; +} diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2.map b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2.map new file mode 100644 index 000000000..7590eab37 --- /dev/null +++ b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2.map @@ -0,0 +1,3413 @@ + +Discarded input sections + + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .text.cpu_report_exception + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .text.enable_cache + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o + .text.memcpy16 + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o + .text.zeromem 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_info 0x0000000000000000 0x1ac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_abbrev 0x0000000000000000 0xdd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_loc 0x0000000000000000 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_aranges + 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_ranges 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_line 0x0000000000000000 0x102 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_str 0x0000000000000000 0x3a69 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_frame 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .text.inv_dcache_range + 0x0000000000000000 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .text.clean_dcache_range + 0x0000000000000000 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .text.enable_dcache + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .text.disable_dcache + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .text.timer_init + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x186b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .text.console_init + 0x0000000000000000 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .text.console_puts + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .text.console_getc + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .text.uart_tstc + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .text.console_tstc + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .rodata.tf_print_buffer.str1.8 + 0x0000000000000000 0x2d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .text.tf_print_buffer + 0x0000000000000000 0x96 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .text.config_core_power + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .text.apply_analog_trimming_data + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .text.bytes_reverse + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .rodata.__assert.str1.8 + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .text.__assert + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .debug_info 0x0000000000000000 0x153 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .debug_abbrev 0x0000000000000000 0xa4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .debug_loc 0x0000000000000000 0x109 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x112 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .debug_line 0x0000000000000000 0x21b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .debug_str 0x0000000000000000 0x6f9a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .debug_frame 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .text.memcmp 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .text.memchr 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .text._memcpy 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o + .text.strchr 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o + .debug_info 0x0000000000000000 0xe4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o + .debug_abbrev 0x0000000000000000 0x7f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o + .debug_loc 0x0000000000000000 0x6f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o + .debug_line 0x0000000000000000 0x14e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o + .debug_str 0x0000000000000000 0x3a7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o + .text.strcasecmp + 0x0000000000000000 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o + .text.strncmp 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o + .debug_info 0x0000000000000000 0x105 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o + .debug_abbrev 0x0000000000000000 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o + .debug_loc 0x0000000000000000 0x15f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o + .debug_line 0x0000000000000000 0x13f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o + .debug_str 0x0000000000000000 0x3a39 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o + .text.strnlen 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o + .debug_info 0x0000000000000000 0x105 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o + .debug_abbrev 0x0000000000000000 0x9f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o + .debug_loc 0x0000000000000000 0xa3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o + .debug_line 0x0000000000000000 0x123 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o + .debug_str 0x0000000000000000 0x3a40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .text.is_usb_dl_enabled + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .rodata.print_sram_log.str1.8 + 0x0000000000000000 0x6d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .text.print_sram_log + 0x0000000000000000 0x86 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_ReadReg32 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_WriteReg32 + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedRead8 + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedRead16 + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedWrite8 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedWrite16 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_WritePhysAddress32 + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_BufferCopy + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_DelayNs + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.set_trigger_cnt + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dfu_usb_get_reset + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.otg_phy_init + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.otg_phy_off + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x517 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .text.crc16_pacing + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .text.crc16_ccitt_with_tag + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_InitDicAndState + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_DecodeToBuf + 0x0000000000000000 0xd6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_Free + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_Allocate + 0x0000000000000000 0xbc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_renormDictT + 0x0000000000000000 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_rotatePattern + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_setExternalDict + 0x0000000000000000 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_reverseCountPattern + 0x0000000000000000 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_countPattern + 0x0000000000000000 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_init_internal + 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_extDict + 0x0000000000000000 0x2aa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_compress_optimal + 0x0000000000000000 0x1d36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_compress_generic_noDictCtx + 0x0000000000000000 0x1b68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_compress_generic + 0x0000000000000000 0x211a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_makeBlock + 0x0000000000000000 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_versionNumber + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.LZ4_versionString.str1.8 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_versionString + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressBound + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofState + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast_extState_fastReset + 0x0000000000000000 0x1428 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_initStream + 0x0000000000000000 0x36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast_extState + 0x0000000000000000 0xd02 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_default + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_destSize + 0x0000000000000000 0x83c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_createStream + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStream + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStream_fast + 0x0000000000000000 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_freeStream + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_loadDict + 0x0000000000000000 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_attach_dictionary + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast_continue + 0x0000000000000000 0x1ca4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlock_continue + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_forceExtDict + 0x0000000000000000 0xa24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_saveDict + 0x0000000000000000 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe_partial + 0x0000000000000000 0x2a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast + 0x0000000000000000 0x1e6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_withPrefix64k + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_createStreamDecode + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_freeStreamDecode + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_setStreamDecode + 0x0000000000000000 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decoderRingBufferSize + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe_continue + 0x0000000000000000 0x3c6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_continue + 0x0000000000000000 0x316 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_usingDict + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput_withState + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_withState + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput_continue + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_continue + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_uncompress + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_uncompress_unknownOutputSize + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofStreamState + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_create + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_slideInputBuffer + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_createStreamHC + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_freeStreamHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_initStreamHC + 0x0000000000000000 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_setCompressionLevel + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_destSize + 0x0000000000000000 0x6a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamHC + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamHC_fast + 0x0000000000000000 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_extStateHC_fastReset + 0x0000000000000000 0x64 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_extStateHC + 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC + 0x0000000000000000 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_initStream + 0x0000000000000000 0x5a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlock + 0x0000000000000000 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_favorDecompressionSpeed + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_loadDictHC + 0x0000000000000000 0xd6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_continue_generic + 0x0000000000000000 0xf0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_attach_HC_dictionary + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_continue + 0x0000000000000000 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlockHC_continue + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlockHC + 0x0000000000000000 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_continue_destSize + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_saveDictHC + 0x0000000000000000 0x96 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_localSaveDict + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC + 0x0000000000000000 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2 + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_withStateHC + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput_withStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_withStateHC + 0x0000000000000000 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput_withStateHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_continue + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput_continue + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofStreamStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamStateHC + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_createHC + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_freeHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_continue + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput_continue + 0x0000000000000000 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_slideInputBufferHC + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.LZ4F_getErrorName.str1.8 + 0x0000000000000000 0x17 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_getErrorName + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_getErrorCode + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_getVersion + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressionLevel_max + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBound_internal + 0x0000000000000000 0x9c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressFrameBound + 0x0000000000000000 0x3e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_freeCDict + 0x0000000000000000 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_createCDict + 0x0000000000000000 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_createCompressionContext + 0x0000000000000000 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_freeCompressionContext + 0x0000000000000000 0x36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBegin_usingCDict + 0x0000000000000000 0x20c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBegin + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBound + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressUpdate + 0x0000000000000000 0x204 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_flush + 0x0000000000000000 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressEnd + 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressFrame_usingCDict + 0x0000000000000000 0x104 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressFrame + 0x0000000000000000 0x112 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_freeDecompressionContext + 0x0000000000000000 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_resetDecompressionContext + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_headerSize + 0x0000000000000000 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_getFrameInfo + 0x0000000000000000 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_decompress_usingDict + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.str1.8 + 0x0000000000000000 0x246 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.cst8 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.LZ4F_errorStrings + 0x0000000000000000 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.clTable.2 + 0x0000000000000000 0x9c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_mergeRound + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_avalanche + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH_read64 + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_finalize.constprop.0 + 0x0000000000000000 0x7be /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .rodata.XXH64_finalize.constprop.0 + 0x0000000000000000 0x7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH_versionNumber + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH32_createState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH32_freeState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH32_copyState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH32_canonicalFromHash + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH32_hashFromCanonical + 0x0000000000000000 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64 0x0000000000000000 0x234 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_createState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_freeState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_copyState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_reset + 0x0000000000000000 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_update + 0x0000000000000000 0x1fa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_digest + 0x0000000000000000 0x8a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_canonicalFromHash + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_hashFromCanonical + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .rodata.cst8 0x0000000000000000 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .text.get_ddr_capacity + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .text.get_pkg 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .text.get_ddr_type + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .rodata.dump_axi_mon_reg.str1.8 + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .text.dump_axi_mon_reg + 0x0000000000000000 0x6c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.ddr_debug_num_write + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_sub_resume2 + 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddrc_suspend + 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_wrlvl_init + 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_synp_mrw + 0x0000000000000000 0x74 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_cal_phyd_hw + 0x0000000000000000 0x10a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_cal_phya_enautok + 0x0000000000000000 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ctrlupd_short + 0x0000000000000000 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_wrlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_rdglvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_rdlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_wdqlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_cal_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_zqcal_status + 0x0000000000000000 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zqcal_isr8 + 0x0000000000000000 0x2d4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zqcal_hw_isr8 + 0x0000000000000000 0x15e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_training_status + 0x0000000000000000 0x134 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_set_dq_vref + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_phya_pd + 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_phyd_save + 0x0000000000000000 0xae6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.ddr_sys_suspend + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_phyd_restore + 0x0000000000000000 0xaf4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_sub_resume3 + 0x0000000000000000 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_sw_upd + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_set_dq_trig_lvl + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_freq_change_ltoh + 0x0000000000000000 0x1ca /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_0_phase40 + 0x0000000000000000 0x16e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_0_external + 0x0000000000000000 0x1ce /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_1_dq_set_highlow + 0x0000000000000000 0x1b4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_2_mux_demux + 0x0000000000000000 0x19c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_3_ca_set_highlow + 0x0000000000000000 0x1e4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_4_ca_clk_pat + 0x0000000000000000 0x132 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.ddr_sys_resume + 0x0000000000000000 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_rdlvl_sw_req + 0x0000000000000000 0x3c0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_wdqlvl_sw_req + 0x0000000000000000 0x1ee /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_freq_change_htol + 0x0000000000000000 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dfi_phyupd_req + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_sw_clr + 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_tx_shift_delay + 0x0000000000000000 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_rx_delay + 0x0000000000000000 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_rx_deskew_delay + 0x0000000000000000 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ca_shift_delay + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_cs_shift_delay + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_mask_shift_delay + 0x0000000000000000 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_reg_toggle + 0x0000000000000000 0x1514 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ana_test + 0x0000000000000000 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zq240 + 0x0000000000000000 0x1c4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zq240_ate + 0x0000000000000000 0x148 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zq240_cal + 0x0000000000000000 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .data.ddr_patch_regs + 0x0000000000000000 0x1c8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .data.ddr_patch_regs_count + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_info 0x0000000000000000 0x121 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_abbrev 0x0000000000000000 0xb5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_line 0x0000000000000000 0x160 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_str 0x0000000000000000 0x53f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_entrypoint.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_entrypoint.o + .bss 0x0000000000000000 0x1000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_entrypoint.o + .rodata 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_entrypoint.o + +Memory Configuration + +Name Origin Length Attributes +RAM 0x000000003bc00000 0x0000000000019000 xrw +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + 0x000000003bc00000 . = 0x3bc00000 + 0x0000000000000001 ASSERT ((. == ALIGN (0x1000)), BL2_BASE address is not aligned on a page boundary.) + +ro 0x000000003bc00000 0xb434 + 0x000000003bc00000 __RO_START__ = . + *bl2_entrypoint.o(.text*) + .text.init 0x000000003bc00000 0x14c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_entrypoint.o + 0x000000003bc00000 bl2_entrypoint + *(.vectors) + *(.text*) + .text.sync_cache + 0x000000003bc0014c 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + 0x000000003bc0014c sync_cache + .text.flush_dcache_range + 0x000000003bc00156 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + 0x000000003bc00156 flush_dcache_range + .text.trig_simulation_timer + 0x000000003bc0017a 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc0017a trig_simulation_timer + .text.udelay 0x000000003bc0018a 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc0018a udelay + .text.mdelay 0x000000003bc001b4 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc001b4 mdelay + .text.get_timer + 0x000000003bc001be 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc001be get_timer + .text.get_random_from_timer + 0x000000003bc001e2 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc001e2 get_random_from_timer + .text.read_count_tick + 0x000000003bc0020c 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc0020c read_count_tick + .text.jump_to_monitor + 0x000000003bc0021a 0x78 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + 0x000000003bc0021a jump_to_monitor + .text.jump_to_loader_2nd + 0x000000003bc00292 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + 0x000000003bc00292 jump_to_loader_2nd + .text._uart_putc + 0x000000003bc00294 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + 0x000000003bc00294 _uart_putc + .text.console_putc + 0x000000003bc002a4 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + 0x000000003bc002a4 console_putc + .text.console_flush + 0x000000003bc002c2 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + 0x000000003bc002c2 console_flush + .text.unsigned_num_print + 0x000000003bc002d6 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .text.tf_printf + 0x000000003bc00358 0x19a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + 0x000000003bc00358 tf_printf + .text.__system_reset + 0x000000003bc004f2 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc004f2 __system_reset + .text.panic_handler + 0x000000003bc005ba 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc005ba panic_handler + .text.reset_c906l + 0x000000003bc005ec 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc005ec reset_c906l + .text.setup_dl_flag + 0x000000003bc00636 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc00636 setup_dl_flag + .text.sys_switch_all_to_pll + 0x000000003bc00680 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc00680 sys_switch_all_to_pll + .text.sys_pll_nd + 0x000000003bc0068e 0x18e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc0068e sys_pll_nd + .text.sys_pll_init + 0x000000003bc0081c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc0081c sys_pll_init + .text.switch_rtc_mode_1st_stage + 0x000000003bc00832 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc00832 switch_rtc_mode_1st_stage + .text.switch_rtc_mode_2nd_stage + 0x000000003bc00834 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc00834 switch_rtc_mode_2nd_stage + .text.set_rtc_en_registers + 0x000000003bc00878 0xbc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc00878 set_rtc_en_registers + .text.init_comm_info + 0x000000003bc00934 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc00934 init_comm_info + .text.dec_verify_image + 0x000000003bc00994 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + 0x000000003bc00994 dec_verify_image + .text.ntostr 0x000000003bc00998 0x7a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + 0x000000003bc00998 ntostr + .text.memset 0x000000003bc00a12 0x5a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + 0x000000003bc00a12 memset + .text.memcpy 0x000000003bc00a6c 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + 0x000000003bc00a6c memcpy + .text.memmove 0x000000003bc00acc 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + 0x000000003bc00acc memmove + .text.putchar_l + 0x000000003bc00aec 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + 0x000000003bc00aec putchar_l + .text.strcmp 0x000000003bc00b3e 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o + 0x000000003bc00b3e strcmp + .text.strlen 0x000000003bc00b5a 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o + 0x000000003bc00b5a strlen + .text.gpio_in_value + 0x000000003bc00b6c 0x7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + 0x000000003bc00b6c gpio_in_value + .text.usb_id_det + 0x000000003bc00be8 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + 0x000000003bc00be8 usb_id_det + .text.read_time_ms + 0x000000003bc00c06 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .text.load_image_by_usb + 0x000000003bc00c20 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00c20 load_image_by_usb + .text.load_param2 + 0x000000003bc00c60 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00c60 load_param2 + .text.load_ddr_param + 0x000000003bc00d30 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00d30 load_ddr_param + .text.load_ddr + 0x000000003bc00dde 0xc6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00dde load_ddr + .text.load_blcp_2nd + 0x000000003bc00ea4 0x166 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00ea4 load_blcp_2nd + .text.load_monitor + 0x000000003bc0100a 0x126 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc0100a load_monitor + .text.load_loader_2nd + 0x000000003bc01130 0x208 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc01130 load_loader_2nd + .text.load_rest + 0x000000003bc01338 0xe6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc01338 load_rest + .text.bl2_main + 0x000000003bc0141e 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc0141e bl2_main + .text.SzFree 0x000000003bc014b6 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .text.SzAlloc 0x000000003bc014b8 0x42 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .text.decompress_lzma + 0x000000003bc014fa 0xe8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + 0x000000003bc014fa decompress_lzma + .text.LZ4_malloc + 0x000000003bc015e2 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + 0x000000003bc015e2 LZ4_malloc + .text.LZ4_calloc + 0x000000003bc015e8 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + 0x000000003bc015e8 LZ4_calloc + .text.LZ4_free + 0x000000003bc01610 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + 0x000000003bc01610 LZ4_free + .text.decompress_lz4 + 0x000000003bc01612 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + 0x000000003bc01612 decompress_lz4 + .text.decompress + 0x000000003bc016c0 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + 0x000000003bc016c0 decompress + .text.DWC2_UncachedRead32 + 0x000000003bc0173e 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + 0x000000003bc0173e DWC2_UncachedRead32 + .text.DWC2_UncachedWrite32 + 0x000000003bc01744 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + 0x000000003bc01744 DWC2_UncachedWrite32 + .text.resume 0x000000003bc01748 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .text.requestMemAlloc + 0x000000003bc0174a 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .text.requestMemFree + 0x000000003bc01782 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .text.acm_complete_set_line_coding + 0x000000003bc01784 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .text.reset 0x000000003bc017a0 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .text.disconnect + 0x000000003bc017b4 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .text.unbind 0x000000003bc017e2 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .text.bind 0x000000003bc01808 0x42 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .text.get_unicode_string + 0x000000003bc0184a 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .text.bulkOutCmpl + 0x000000003bc0189c 0x234 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .text.getDescAcm + 0x000000003bc01ad0 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .text.reqComplete + 0x000000003bc01b2c 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .text.bulkInCmpl + 0x000000003bc01b56 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .text.setup 0x000000003bc01ba6 0x442 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .text.suspend 0x000000003bc01fe8 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .text.convert_buf_addr + 0x000000003bc01fea 0xa2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc01fea convert_buf_addr + .text.print_buf_addr + 0x000000003bc0208c 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc0208c print_buf_addr + .text.AcmIsr 0x000000003bc0215c 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc0215c AcmIsr + .text.acm_app_init + 0x000000003bc02162 0x138 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc02162 acm_app_init + .text.usb_vbus_det + 0x000000003bc0229a 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc0229a usb_vbus_det + .text.get_usb_polling_timeout_value + 0x000000003bc022a6 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc022a6 get_usb_polling_timeout_value + .text.AcmApp 0x000000003bc022d6 0x478 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc022d6 AcmApp + .text.dwc2_fifo_status + 0x000000003bc0274e 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_free_request + 0x000000003bc02764 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.pullup 0x000000003bc0279e 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_alloc_request + 0x000000003bc027e6 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_ep_enable + 0x000000003bc0281e 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_fifo_flush + 0x000000003bc028be 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_log_write + 0x000000003bc028c0 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc028c0 dwc2_log_write + .text.dwc2_get_ep0_name + 0x000000003bc028c2 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc028c2 dwc2_get_ep0_name + .text.udc_reinit + 0x000000003bc028cc 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc028cc udc_reinit + .text.dwc2_done + 0x000000003bc02912 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02912 dwc2_done + .text.dwc2_dequeue + 0x000000003bc02952 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_nuke + 0x000000003bc029a6 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc029a6 dwc2_nuke + .text.usb_gadget_unregister_driver + 0x000000003bc029d4 0x9a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc029d4 usb_gadget_unregister_driver + .text.dwc2_hsotg_set_bit + 0x000000003bc02a6e 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02a6e dwc2_hsotg_set_bit + .text.dwc2_hsotg_clear_bit + 0x000000003bc02a90 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02a90 dwc2_hsotg_clear_bit + .text.wakeup 0x000000003bc02ab4 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_hsotg_wait_bit_set + 0x000000003bc02af0 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02af0 dwc2_hsotg_wait_bit_set + .text.dwc2_hsotg_txfifo_flush.constprop.0 + 0x000000003bc02b36 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.kill_all_requests.isra.0 + 0x000000003bc02bc6 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_disconnect + 0x000000003bc02c24 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02c24 dwc2_disconnect + .text.dwc2_hsotg_init_fifo.constprop.0 + 0x000000003bc02c7a 0xda /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text._dwc2_ep_disable.isra.0 + 0x000000003bc02d54 0x1a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_ep_disable + 0x000000003bc02efa 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_reconfig_usbd + 0x000000003bc02f1a 0x28e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02f1a dwc2_reconfig_usbd + .text.usb_gadget_register_driver + 0x000000003bc031a8 0x156 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc031a8 usb_gadget_register_driver + .text.dwc2_phy_to_log_ep + 0x000000003bc032fe 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc032fe dwc2_phy_to_log_ep + .text.dwc2_udc_probe + 0x000000003bc03310 0x150 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc03310 dwc2_udc_probe + .text.usb_gadget_handle_interrupts + 0x000000003bc03460 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc03460 usb_gadget_handle_interrupts + .text.set_max_pktsize + 0x000000003bc034ac 0x8e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep_clear_stall + 0x000000003bc0353a 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep_set_stall + 0x000000003bc03598 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_ep0_complete_out + 0x000000003bc035fa 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep0_zlp + 0x000000003bc0367a 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep0_set_stall.isra.0 + 0x000000003bc036f8 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.setdma_rx.isra.0 + 0x000000003bc03760 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.complete_rx + 0x000000003bc0380a 0xfc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_pre_setup + 0x000000003bc03906 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03906 dwc2_udc_pre_setup + .text.dwc2_ep_fifo_write + 0x000000003bc0391c 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc0391c dwc2_ep_fifo_write + .text.setdma_tx + 0x000000003bc03960 0x15c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_ep_fifo_read + 0x000000003bc03abc 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03abc dwc2_ep_fifo_read + .text.dwc2_write_fifo_ep0 + 0x000000003bc03b00 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03b00 dwc2_write_fifo_ep0 + .text.dwc2_set_address + 0x000000003bc03b4c 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03b4c dwc2_set_address + .text.dwc2_ep0_read + 0x000000003bc03b94 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03b94 dwc2_ep0_read + .text.dwc2_ep0_write + 0x000000003bc03bbc 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03bbc dwc2_ep0_write + .text.dwc2_udc_set_nak + 0x000000003bc03bfc 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03bfc dwc2_udc_set_nak + .text.dwc2_udc_set_halt + 0x000000003bc03c3c 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03c3c dwc2_udc_set_halt + .text.dwc2_udc_ep_activate + 0x000000003bc03c9e 0xb2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03c9e dwc2_udc_ep_activate + .text.dwc2_handle_ep0 + 0x000000003bc03d50 0x346 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03d50 dwc2_handle_ep0 + .text.dwc2_udc_irq + 0x000000003bc04096 0x540 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc04096 dwc2_udc_irq + .text.dwc2_ep0_kick + 0x000000003bc045d6 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc045d6 dwc2_ep0_kick + .text.dwc2_queue + 0x000000003bc045ee 0xd8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc045ee dwc2_queue + .text.usb_polling + 0x000000003bc046c6 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + 0x000000003bc046c6 usb_polling + .text.crc16_ccitt + 0x000000003bc04706 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + 0x000000003bc04706 crc16_ccitt + .text.LzmaDec_WriteRem + 0x000000003bc04738 0x72 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_DecodeReal2 + 0x000000003bc047aa 0x138a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_TryDummy + 0x000000003bc05b34 0x4e8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_Init + 0x000000003bc0601c 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc0601c LzmaDec_Init + .text.LzmaDec_DecodeToDic + 0x000000003bc06030 0x27c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc06030 LzmaDec_DecodeToDic + .text.LzmaDec_FreeProbs + 0x000000003bc062ac 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc062ac LzmaDec_FreeProbs + .text.LzmaDec_AllocateProbs2.isra.0 + 0x000000003bc062c8 0x66 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaProps_Decode + 0x000000003bc0632e 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc0632e LzmaProps_Decode + .text.LzmaDec_AllocateProbs + 0x000000003bc06378 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc06378 LzmaDec_AllocateProbs + .text.LzmaDecode + 0x000000003bc063a8 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc063a8 LzmaDecode + .text.LZ4F_readLE32 + 0x000000003bc06452 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe_withSmallPrefix + 0x000000003bc06476 0x276 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_updateDict + 0x000000003bc066ec 0x110 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe + 0x000000003bc067fc 0x26e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc067fc LZ4_decompress_safe + .text.LZ4_decompress_safe_withPrefix64k + 0x000000003bc06a6a 0x26a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc06a6a LZ4_decompress_safe_withPrefix64k + .text.LZ4_decompress_safe_forceExtDict + 0x000000003bc06cd4 0x316 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc06cd4 LZ4_decompress_safe_forceExtDict + .text.LZ4_decompress_safe_usingDict + 0x000000003bc06fea 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc06fea LZ4_decompress_safe_usingDict + .text.LZ4F_isError + 0x000000003bc07010 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc07010 LZ4F_isError + .text.LZ4F_getBlockSize + 0x000000003bc0701c 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc0701c LZ4F_getBlockSize + .text.LZ4F_decodeHeader + 0x000000003bc0703a 0x1a4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_createDecompressionContext + 0x000000003bc071de 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc071de LZ4F_createDecompressionContext + .text.LZ4F_decompress + 0x000000003bc0720e 0x7dc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc0720e LZ4F_decompress + .text.XXH32_avalanche + 0x000000003bc079ea 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH_read32 + 0x000000003bc07a16 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH32_finalize.constprop.0 + 0x000000003bc07a2c 0x33a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH32 0x000000003bc07d66 0x1c6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + 0x000000003bc07d66 XXH32 + .text.XXH32_reset + 0x000000003bc07f2c 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + 0x000000003bc07f2c XXH32_reset + .text.XXH32_update + 0x000000003bc07f82 0x1d2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + 0x000000003bc07f82 XXH32_update + .text.XXH32_digest + 0x000000003bc08154 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + 0x000000003bc08154 XXH32_digest + .text.ddr_init + 0x000000003bc08194 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + 0x000000003bc08194 ddr_init + .text.read_ddr_pkg_info + 0x000000003bc081c8 0x22e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc081c8 read_ddr_pkg_info + .text.get_ddr_vendor + 0x000000003bc083f6 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc083f6 get_ddr_vendor + .text.axi_mon_start_all + 0x000000003bc08400 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + 0x000000003bc08400 axi_mon_start_all + .text.ddr_sys_bring_up + 0x000000003bc08450 0x224 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + 0x000000003bc08450 ddr_sys_bring_up + .text.cvx16_bist_wr_prbs_init + 0x000000003bc08674 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08674 cvx16_bist_wr_prbs_init + .text.cvx16_bist_wr_sram_init + 0x000000003bc086c2 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc086c2 cvx16_bist_wr_sram_init + .text.cvx16_bist_rdglvl_init + 0x000000003bc08722 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08722 cvx16_bist_rdglvl_init + .text.cvx16_bist_rdlvl_init + 0x000000003bc08768 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08768 cvx16_bist_rdlvl_init + .text.cvx16_bist_wdqlvl_init + 0x000000003bc08852 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08852 cvx16_bist_wdqlvl_init + .text.cvx16_bist_wdmlvl_init + 0x000000003bc08902 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08902 cvx16_bist_wdmlvl_init + .text.cvx16_bist_start_check + 0x000000003bc08962 0x6a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08962 cvx16_bist_start_check + .text.cvx16_rdvld_train + 0x000000003bc089cc 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc089cc cvx16_rdvld_train + .text.cvx16_dll_cal + 0x000000003bc08a72 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08a72 cvx16_dll_cal + .text.cvx16_clk_normal + 0x000000003bc08ada 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08ada cvx16_clk_normal + .text.cvx16_clk_div2 + 0x000000003bc08b36 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08b36 cvx16_clk_div2 + .text.cvx16_clk_div40 + 0x000000003bc08b4c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08b4c cvx16_clk_div40 + .text.cvx16_chg_pll_freq + 0x000000003bc08b62 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08b62 cvx16_chg_pll_freq + .text.cvx16_ddr_phy_power_on_seq1 + 0x000000003bc08c5a 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08c5a cvx16_ddr_phy_power_on_seq1 + .text.cvx16_ddr_phy_power_on_seq2 + 0x000000003bc08c9e 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08c9e cvx16_ddr_phy_power_on_seq2 + .text.cvx16_ddr_phy_power_on_seq3 + 0x000000003bc08ce6 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08ce6 cvx16_ddr_phy_power_on_seq3 + .text.cvx16_wait_for_dfi_init_complete + 0x000000003bc08d20 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08d20 cvx16_wait_for_dfi_init_complete + .text.cvx16_polling_dfi_init_start + 0x000000003bc08d58 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08d58 cvx16_polling_dfi_init_start + .text.cvx16_set_dfi_init_complete + 0x000000003bc08d72 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08d72 cvx16_set_dfi_init_complete + .text.cvx16_INT_ISR_08 + 0x000000003bc08d9a 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08d9a cvx16_INT_ISR_08 + .text.cvx16_polling_synp_normal_mode + 0x000000003bc08dc6 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08dc6 cvx16_polling_synp_normal_mode + .text.cvx16_dfi_ca_park_prbs + 0x000000003bc08de2 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08de2 cvx16_dfi_ca_park_prbs + .text.cvx16_wrlvl_req + 0x000000003bc08e4a 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08e4a cvx16_wrlvl_req + .text.cvx16_setting_check + 0x000000003bc08e4c 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08e4c cvx16_setting_check + .text.cvx16_set_dfi_init_start + 0x000000003bc08e6c 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08e6c cvx16_set_dfi_init_start + .text.cvx16_pll_init + 0x000000003bc08e92 0x9c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08e92 cvx16_pll_init + .text.cvx16_clk_gating_disable + 0x000000003bc08f2e 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08f2e cvx16_clk_gating_disable + .text.cvx16_clk_gating_enable + 0x000000003bc08f78 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08f78 cvx16_clk_gating_enable + .text.cvx16_rdglvl_req + 0x000000003bc08fe8 0xc6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08fe8 cvx16_rdglvl_req + .text.cvx16_rdlvl_req + 0x000000003bc090ae 0x170 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc090ae cvx16_rdlvl_req + .text.cvx16_wdqlvl_req + 0x000000003bc0921e 0x182 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc0921e cvx16_wdqlvl_req + .text.cvx16_en_rec_vol_mode + 0x000000003bc093a0 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc093a0 cvx16_en_rec_vol_mode + .text.ctrl_init_detect_dram_size + 0x000000003bc093ba 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc093ba ctrl_init_detect_dram_size + .text.pll_init + 0x000000003bc093dc 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc093dc pll_init + .text.cvx16_pinmux + 0x000000003bc09460 0x33a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + 0x000000003bc09460 cvx16_pinmux + .text.cvx16_dram_cap_check + 0x000000003bc0979a 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + 0x000000003bc0979a cvx16_dram_cap_check + .text.ddrc_init + 0x000000003bc0979c 0x1fe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc0979c ddrc_init + .text.ctrl_init_high_patch + 0x000000003bc0999a 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc0999a ctrl_init_high_patch + .text.ctrl_init_low_patch + 0x000000003bc099c8 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc099c8 ctrl_init_low_patch + .text.ctrl_init_update_by_dram_size + 0x000000003bc099f6 0x21c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc099f6 ctrl_init_update_by_dram_size + .text.phy_init + 0x000000003bc09c12 0x3da /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + 0x000000003bc09c12 phy_init + *(.rodata*) + *fill* 0x000000003bc09fec 0x4 + .rodata.build_message + 0x000000003bc09ff0 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o + 0x000000003bc09ff0 build_message + *fill* 0x000000003bc0a00a 0x6 + .rodata.version_string + 0x000000003bc0a010 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o + 0x000000003bc0a010 version_string + .rodata.jump_to_monitor.str1.8 + 0x000000003bc0a020 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + *fill* 0x000000003bc0a046 0x2 + .rodata.tf_printf.str1.8 + 0x000000003bc0a048 0x3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + *fill* 0x000000003bc0a04b 0x1 + .rodata.tf_printf + 0x000000003bc0a04c 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .rodata.__system_reset.str1.8 + 0x000000003bc0a0a8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a0ba 0x6 + .rodata.panic_handler.str1.8 + 0x000000003bc0a0c0 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a0d6 0x2 + .rodata.reset_c906l.str1.8 + 0x000000003bc0a0d8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .rodata.sys_pll_nd.str1.8 + 0x000000003bc0a0e0 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a0e9 0x7 + .rodata.sys_pll_init.str1.8 + 0x000000003bc0a0f0 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a0f9 0x7 + .rodata.switch_rtc_mode_2nd_stage.str1.8 + 0x000000003bc0a100 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a114 0x4 + .rodata.set_rtc_en_registers.str1.8 + 0x000000003bc0a118 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a144 0x4 + .rodata.cst8 0x000000003bc0a148 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .rodata.hex2ascii_data + 0x000000003bc0a170 0x25 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + 0x000000003bc0a170 hex2ascii_data + *fill* 0x000000003bc0a195 0x3 + .rodata.cst8 0x000000003bc0a198 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .rodata.load_image_by_usb.str1.8 + 0x000000003bc0a1a0 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a1ba 0x6 + .rodata.load_param2.str1.8 + 0x000000003bc0a1c0 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .rodata.load_ddr_param.str1.8 + 0x000000003bc0a218 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .rodata.load_ddr.str1.8 + 0x000000003bc0a260 0x4d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a2ad 0x3 + .rodata.load_blcp_2nd.str1.8 + 0x000000003bc0a2b0 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .rodata.load_monitor.str1.8 + 0x000000003bc0a390 0xcf /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a45f 0x1 + .rodata.load_loader_2nd.str1.8 + 0x000000003bc0a460 0xce /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a52e 0x2 + .rodata.load_rest.str1.8 + 0x000000003bc0a530 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .rodata.bl2_main.str1.8 + 0x000000003bc0a590 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a614 0x4 + .rodata.cst8 0x000000003bc0a618 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .rodata.SzAlloc.str1.8 + 0x000000003bc0a620 0x1f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a63f 0x1 + .rodata.decompress_lzma.str1.8 + 0x000000003bc0a640 0x92 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a6d2 0x6 + .rodata.decompress_lz4.str1.8 + 0x000000003bc0a6d8 0x72 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a74a 0x6 + .rodata.decompress.str1.8 + 0x000000003bc0a750 0x31 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a781 0x7 + .rodata.__func__.0 + 0x000000003bc0a788 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .rodata.__func__.1 + 0x000000003bc0a790 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .rodata.reset.str1.8 + 0x000000003bc0a7a0 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a7b6 0x2 + .rodata.unbind.str1.8 + 0x000000003bc0a7b8 0xd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a7c5 0x3 + .rodata.bind.str1.8 + 0x000000003bc0a7c8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .rodata.bulkOutCmpl.str1.8 + 0x000000003bc0a7d0 0x61 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a831 0x7 + .rodata.reqComplete.str1.8 + 0x000000003bc0a838 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a84d 0x3 + .rodata.setup.str1.8 + 0x000000003bc0a850 0xd2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a922 0x2 + .rodata.setup 0x000000003bc0a924 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .rodata.print_buf_addr.str1.8 + 0x000000003bc0a960 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aa4a 0x6 + .rodata.acm_app_init.str1.8 + 0x000000003bc0aa50 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aa65 0x3 + .rodata.AcmApp.str1.8 + 0x000000003bc0aa68 0x10b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab73 0x5 + .rodata.str1.8 + 0x000000003bc0ab78 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab7c 0x4 + .rodata.__func__.0 + 0x000000003bc0ab80 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab85 0x3 + .rodata.__func__.1 + 0x000000003bc0ab88 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab8f 0x1 + .rodata.__func__.4 + 0x000000003bc0ab90 0xb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab9b 0x5 + .rodata.__func__.5 + 0x000000003bc0aba0 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aba6 0x2 + .rodata.dwc2_free_request.str1.8 + 0x000000003bc0aba8 0x23 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0abcb 0x5 + .rodata.dwc2_hsotg_txfifo_flush.constprop.0.str1.8 + 0x000000003bc0abd0 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ac1a 0x6 + .rodata.dwc2_hsotg_init_fifo.constprop.0.str1.8 + 0x000000003bc0ac20 0x2d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ac4d 0x3 + .rodata._dwc2_ep_disable.isra.0.str1.8 + 0x000000003bc0ac50 0x77 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0acc7 0x1 + .rodata.dwc2_reconfig_usbd.str1.8 + 0x000000003bc0acc8 0x71 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ad39 0x7 + .rodata.dwc2_udc_probe.str1.8 + 0x000000003bc0ad40 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ad8e 0x2 + .rodata.__func__.0 + 0x000000003bc0ad90 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ada2 0x6 + .rodata.__func__.1 + 0x000000003bc0ada8 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0adb9 0x7 + .rodata.__func__.2 + 0x000000003bc0adc0 0x13 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0add3 0x5 + .rodata.__func__.3 + 0x000000003bc0add8 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .rodata.__func__.4 + 0x000000003bc0adf0 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae05 0x3 + .rodata.driver_name + 0x000000003bc0ae08 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae11 0x7 + .rodata.dwc2_udc_ops + 0x000000003bc0ae18 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .rodata.ep0name + 0x000000003bc0ae60 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae6c 0x4 + .rodata.ep1name + 0x000000003bc0ae70 0xb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae7b 0x5 + .rodata.ep2name + 0x000000003bc0ae80 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae8c 0x4 + .rodata.ep3name + 0x000000003bc0ae90 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae9a 0x6 + .rodata.dwc2_handle_ep0.str1.8 + 0x000000003bc0aea0 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .rodata.dwc2_handle_ep0 + 0x000000003bc0aeb4 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + *fill* 0x000000003bc0aee4 0x4 + .rodata.dwc2_udc_irq.str1.8 + 0x000000003bc0aee8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + *fill* 0x000000003bc0aefa 0x6 + .rodata.usb_polling.str1.8 + 0x000000003bc0af00 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + *fill* 0x000000003bc0af11 0x7 + .rodata.crc16_tab + 0x000000003bc0af18 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .rodata.LZ4F_decompress + 0x000000003bc0b118 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + *fill* 0x000000003bc0b154 0x4 + .rodata.blockSizes.0 + 0x000000003bc0b158 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.dec64table + 0x000000003bc0b178 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.inc32table + 0x000000003bc0b198 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.XXH32_finalize.constprop.0 + 0x000000003bc0b1b8 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + *fill* 0x000000003bc0b1f4 0x4 + .rodata.ddr_init.str1.8 + 0x000000003bc0b1f8 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + *fill* 0x000000003bc0b21e 0x2 + .rodata.read_ddr_pkg_info.str1.8 + 0x000000003bc0b220 0xe2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + *fill* 0x000000003bc0b302 0x2 + .rodata.read_ddr_pkg_info + 0x000000003bc0b304 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + *fill* 0x000000003bc0b34c 0x4 + .rodata.ddr_sys_bring_up.str1.8 + 0x000000003bc0b350 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + 0x81 (size before relaxing) + .rodata.cst8 0x000000003bc0b3d8 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .rodata.cvx16_pinmux + 0x000000003bc0b3f8 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .rodata.ctrl_init_update_by_dram_size + 0x000000003bc0b420 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc0b434 __RO_END__ = . + +.rela.dyn 0x000000003bc0b438 0x0 + .rela.text.setup_dl_flag + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o + .rela.text.load_param2 + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o + .rela.text.load_ddr_param + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o + .rela.text.load_ddr + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o + .rela.text.load_blcp_2nd + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o + .rela.text.load_monitor + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o + .rela.text.load_loader_2nd + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o + .rela.text.load_rest + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o + .rela.text.init + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o + +.data 0x000000003bc0b434 0x2cc + 0x000000003bc0b440 . = ALIGN (0x10) + *fill* 0x000000003bc0b434 0xc + 0x000000003bc0b440 __DATA_START__ = . + *(.data*) + .data.time_records + 0x000000003bc0b440 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc0b440 time_records + .data.ConfDesc + 0x000000003bc0b448 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b451 0x7 + .data.acm_buf 0x000000003bc0b458 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .data.acm_call_mgmt_descriptor + 0x000000003bc0b460 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b465 0x3 + .data.acm_control_interface_desc + 0x000000003bc0b468 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b471 0x7 + .data.acm_data_interface_desc + 0x000000003bc0b478 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b481 0x7 + .data.acm_descriptor + 0x000000003bc0b488 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b48c 0x4 + .data.acm_fs_in_desc + 0x000000003bc0b490 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b497 0x1 + .data.acm_fs_notify_desc + 0x000000003bc0b498 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b49f 0x1 + .data.acm_fs_out_desc + 0x000000003bc0b4a0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4a7 0x1 + .data.acm_header_desc + 0x000000003bc0b4a8 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4ad 0x3 + .data.acm_hs_in_desc + 0x000000003bc0b4b0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4b7 0x1 + .data.acm_hs_notify_desc + 0x000000003bc0b4b8 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4bf 0x1 + .data.acm_hs_out_desc + 0x000000003bc0b4c0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4c7 0x1 + .data.acm_union_desc + 0x000000003bc0b4c8 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4cd 0x3 + .data.bosDesc 0x000000003bc0b4d0 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4d5 0x3 + .data.bulkBufAlloc + 0x000000003bc0b4d8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .data.capabilityExtDesc + 0x000000003bc0b4e0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4e7 0x1 + .data.cb0_buf 0x000000003bc0b4e8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .data.cb1_buf 0x000000003bc0b4f0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .data.cb2_buf 0x000000003bc0b4f8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .data.cmdBufAlloc + 0x000000003bc0b500 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .data.descriptorsFs + 0x000000003bc0b508 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .data.descriptorsHs + 0x000000003bc0b558 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .data.devHsDesc + 0x000000003bc0b5a8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b5ba 0x6 + .data.drv_obj 0x000000003bc0b5c0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .data.ep0BuffAlloc + 0x000000003bc0b610 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .data.g_driver + 0x000000003bc0b618 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .data.handler 0x000000003bc0b670 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .data.languageDesc + 0x000000003bc0b678 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b67c 0x4 + .data.qualifierDesc + 0x000000003bc0b680 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b68a 0x6 + .data.rsp_buf 0x000000003bc0b690 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .data.setup_buf + 0x000000003bc0b698 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .data.dwc2_ep_ops + 0x000000003bc0b6a0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .data.ep0_fifo_size + 0x000000003bc0b6f0 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .data.ep_fifo_size + 0x000000003bc0b6f4 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .data.cv_usb_vid + 0x000000003bc0b6f8 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + 0x000000003bc0b6f8 cv_usb_vid + *fill* 0x000000003bc0b6fa 0x2 + .data.ddr_data_rate + 0x000000003bc0b6fc 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc0b6fc ddr_data_rate + 0x000000003bc0b700 . = ALIGN (0x10) + 0x000000003bc0b700 __DATA_END__ = . + +stacks 0x000000003bc0b700 0x2000 + 0x000000003bc0b700 . = ALIGN (0x40) + *fill* 0x000000003bc0b700 0x0 + 0x000000003bc0b700 __STACKS_START__ = . + 0x000000003bc0d700 . = (. + 0x2000) + *fill* 0x000000003bc0b700 0x2000 + 0x000000003bc0d700 . = ALIGN (0x40) + 0x000000003bc0d700 __STACKS_END__ = . + +.bss 0x000000003bc0d800 0x5c10 + 0x000000003bc0d800 . = ALIGN (0x10) + 0x000000003bc0d800 __BSS_START__ = . + *(SORT_BY_ALIGNMENT(.bss*)) + .bss.fip_param2 + 0x000000003bc0d800 0x1000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .bss.sram_union_buf + 0x000000003bc0e800 0x4000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .bss.acm_bufArr + 0x000000003bc12800 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12800 acm_bufArr + .bss.bulkBufAllocArr + 0x000000003bc12880 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12880 bulkBufAllocArr + .bss.cb0_bufArr + 0x000000003bc12a80 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12a80 cb0_bufArr + .bss.cb1_bufArr + 0x000000003bc12b00 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12b00 cb1_bufArr + .bss.cb2_bufArr + 0x000000003bc12b80 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12b80 cb2_bufArr + .bss.cmdBufAllocArr + 0x000000003bc12c00 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12c00 cmdBufAllocArr + .bss.ep0BuffAllocArr + 0x000000003bc12e00 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12e00 ep0BuffAllocArr + .bss.handlerArr + 0x000000003bc12e80 0x400 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12e80 handlerArr + .bss.rsp_bufArr + 0x000000003bc13280 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc13280 rsp_bufArr + *fill* 0x000000003bc13290 0x30 + .bss.setup_bufArr + 0x000000003bc132c0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc132c0 setup_bufArr + .bss.fw_dynamic_info + 0x000000003bc132c8 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .bss.comp_alloc_buf + 0x000000003bc132f8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .bss.comp_alloc_size + 0x000000003bc13300 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .bss.acm 0x000000003bc13308 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc13308 acm + .bss.bulkBuf 0x000000003bc13310 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.bulkInReq + 0x000000003bc13318 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.bulkOutReq + 0x000000003bc13320 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.cmdBuf 0x000000003bc13328 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.ep0Buff 0x000000003bc13330 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.ep0Req 0x000000003bc13338 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.epIn 0x000000003bc13340 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.epOut 0x000000003bc13348 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.fip_buf 0x000000003bc13350 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.productDesc + 0x000000003bc13358 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc13374 0x4 + .bss.serial.2 0x000000003bc13378 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.serialDesc + 0x000000003bc13388 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc133a4 0x4 + .bss.vendorDesc + 0x000000003bc133a8 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.reg 0x000000003bc133b8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc133b8 reg + .bss.the_controller + 0x000000003bc133c0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc133c0 the_controller + .bss.reg_set 0x000000003bc133c8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc133c8 reg_set + .bss.reg_span 0x000000003bc133d0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc133d0 reg_span + .bss.reg_step 0x000000003bc133d8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc133d8 reg_step + .bss.fip_tx_offset + 0x000000003bc133e0 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.fip_tx_size + 0x000000003bc133e4 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.transfer_size + 0x000000003bc133e8 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.ts 0x000000003bc133ec 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.rddata 0x000000003bc133f0 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc133f0 rddata + .bss.dev_freq 0x000000003bc133f4 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc133f4 dev_freq + .bss.freq_in 0x000000003bc133f8 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc133f8 freq_in + .bss.mod_freq 0x000000003bc133fc 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc133fc mod_freq + .bss.tar_freq 0x000000003bc13400 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc13400 tar_freq + .bss.ack_idx.6 + 0x000000003bc13404 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.acm_configValue + 0x000000003bc13405 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc13405 acm_configValue + .bss.configBreak + 0x000000003bc13406 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.configValue + 0x000000003bc13407 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.flagEnterDL + 0x000000003bc13408 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.flagReboot + 0x000000003bc13409 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.is_serial_patched.3 + 0x000000003bc1340a 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.mem_alloc_cnt + 0x000000003bc1340b 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.ddr_capacity + 0x000000003bc1340c 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1340c ddr_capacity + .bss.ddr_type 0x000000003bc1340d 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1340d ddr_type + .bss.ddr_vendor + 0x000000003bc1340e 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1340e ddr_vendor + .bss.pkg 0x000000003bc1340f 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1340f pkg + *(COMMON) + 0x000000003bc13410 . = ALIGN (0x10) + 0x000000003bc13410 __BSS_END__ = . + 0x000000003bc13410 __BL2_END__ = . + 0x0000000000005c10 __BSS_SIZE__ = SIZEOF (.bss) + 0x0000000000000001 ASSERT ((. <= 0x3bc19000), BL2 image has exceeded its limit.) + 0x0000000004400100 p_rom_api_cryptodma_aes_decrypt = 0x4400100 + 0x0000000004400080 p_rom_api_flash_init = 0x4400080 + 0x0000000004400020 p_rom_api_get_boot_src = 0x4400020 + 0x00000000044000c0 p_rom_api_get_number_of_retries = 0x44000c0 + 0x00000000044000a0 p_rom_api_image_crc = 0x44000a0 + 0x0000000004400060 p_rom_api_load_image = 0x4400060 + 0x0000000004400040 p_rom_api_set_boot_src = 0x4400040 + 0x00000000044000e0 p_rom_api_verify_rsa = 0x44000e0 +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/assert.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_entrypoint.o +OUTPUT(/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2.elf elf64-littleriscv) + +.debug_info 0x0000000000000000 0x68732 + .debug_info 0x0000000000000000 0x89 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o + .debug_info 0x0000000000000089 0x1a1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_info 0x000000000000022a 0x1e4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .debug_info 0x000000000000040e 0x45f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_info 0x000000000000086d 0x3d6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_info 0x0000000000000c43 0x33f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_info 0x0000000000000f82 0x474 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_info 0x00000000000013f6 0x1a24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_info 0x0000000000002e1a 0x622 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .debug_info 0x000000000000343c 0x22a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .debug_info 0x0000000000003666 0x41f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .debug_info 0x0000000000003a85 0x2d6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .debug_info 0x0000000000003d5b 0x13d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o + .debug_info 0x0000000000003e98 0xf6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o + .debug_info 0x0000000000003f8e 0x483 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_info 0x0000000000004411 0x1c6e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_info 0x000000000000607f 0x9df /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_info 0x0000000000006a5e 0x3a2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_info 0x0000000000006e00 0x2fa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_info 0x0000000000009da8 0x3221 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_info 0x000000000000cfc9 0x39b8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_info 0x0000000000010981 0x2b7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_info 0x0000000000010c38 0x279 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .debug_info 0x0000000000010eb1 0x17cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_info 0x000000000001267e 0x285e2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_info 0x000000000003ac60 0x4039 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_info 0x000000000003ec99 0x1a7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .debug_info 0x000000000003ee40 0x516 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_info 0x000000000003f356 0x1135 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_info 0x000000000004048b 0x23242 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_info 0x00000000000636cd 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_info 0x00000000000638ad 0x11b2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_info 0x0000000000064a5f 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_info 0x0000000000064b27 0x1c32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_info 0x0000000000066759 0x1fab /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .debug_info 0x0000000000068704 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_entrypoint.o + +.debug_abbrev 0x0000000000000000 0x4de5 + .debug_abbrev 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o + .debug_abbrev 0x0000000000000048 0xc1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_abbrev 0x0000000000000109 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .debug_abbrev 0x00000000000001b9 0x1ae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_abbrev 0x0000000000000367 0x197 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_abbrev 0x00000000000004fe 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_abbrev 0x0000000000000685 0x1e5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_abbrev 0x000000000000086a 0x371 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_abbrev 0x0000000000000bdb 0x134 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .debug_abbrev 0x0000000000000d0f 0x11a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .debug_abbrev 0x0000000000000e29 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .debug_abbrev 0x0000000000000f49 0x15d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .debug_abbrev 0x00000000000010a6 0xac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o + .debug_abbrev 0x0000000000001152 0x8c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o + .debug_abbrev 0x00000000000011de 0x202 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_abbrev 0x00000000000013e0 0x42f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_abbrev 0x000000000000180f 0x305 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_abbrev 0x0000000000001b14 0x181 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_abbrev 0x0000000000001c95 0x6f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_abbrev 0x000000000000238b 0x657 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_abbrev 0x00000000000029e2 0x55c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_abbrev 0x0000000000002f3e 0x15a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_abbrev 0x0000000000003098 0x12f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .debug_abbrev 0x00000000000031c7 0x454 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_abbrev 0x000000000000361b 0x69b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_abbrev 0x0000000000003cb6 0x4b9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_abbrev 0x000000000000416f 0xe9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .debug_abbrev 0x0000000000004258 0x17f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_abbrev 0x00000000000043d7 0x203 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_abbrev 0x00000000000045da 0x3e8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_abbrev 0x00000000000049c2 0x9e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_abbrev 0x0000000000004a60 0xd3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_abbrev 0x0000000000004b33 0x69 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_abbrev 0x0000000000004b9c 0x16b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_abbrev 0x0000000000004d07 0xca /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .debug_abbrev 0x0000000000004dd1 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_entrypoint.o + +.debug_aranges 0x0000000000000000 0x1e80 + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o + .debug_aranges + 0x0000000000000020 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_aranges + 0x0000000000000070 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .debug_aranges + 0x00000000000000e0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_aranges + 0x0000000000000170 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_aranges + 0x00000000000001b0 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_aranges + 0x0000000000000250 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_aranges + 0x00000000000002a0 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_aranges + 0x0000000000000380 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .debug_aranges + 0x00000000000003b0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .debug_aranges + 0x00000000000003f0 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .debug_aranges + 0x0000000000000470 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .debug_aranges + 0x00000000000004a0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o + .debug_aranges + 0x00000000000004e0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o + .debug_aranges + 0x0000000000000510 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_aranges + 0x0000000000000560 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_aranges + 0x0000000000000630 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_aranges + 0x00000000000006d0 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_aranges + 0x0000000000000770 0x170 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_aranges + 0x00000000000008e0 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_aranges + 0x0000000000000ae0 0x190 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_aranges + 0x0000000000000c70 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_aranges + 0x0000000000000ca0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .debug_aranges + 0x0000000000000cf0 0x100 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_aranges + 0x0000000000000df0 0x7c0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_aranges + 0x00000000000015b0 0x1b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_aranges + 0x0000000000001760 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .debug_aranges + 0x0000000000001790 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_aranges + 0x0000000000001800 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_aranges + 0x0000000000001850 0x4e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_aranges + 0x0000000000001d30 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_aranges + 0x0000000000001d60 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_aranges + 0x0000000000001d90 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_aranges + 0x0000000000001dc0 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_aranges + 0x0000000000001e20 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .debug_aranges + 0x0000000000001e50 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_entrypoint.o + +.debug_macro 0x0000000000000000 0x9b13 + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o + .debug_macro 0x0000000000000011 0x86e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o + .debug_macro 0x000000000000087f 0x115 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000000994 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001208 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001477 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001488 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x000000000000160f 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001655 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x000000000000166b 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001693 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x00000000000016af 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x000000000000185e 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001923 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x00000000000019a5 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001bce 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001c8c 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001d86 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001f66 0x186b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x00000000000037d1 0x12c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x00000000000038fd 0x121 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000003a1e 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000003b4e 0x178 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000003cc6 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000003d92 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000003da8 0x146 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000003eee 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000003f94 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x000000000000404c 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x000000000000407a 0x14b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x00000000000041c5 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x000000000000443c 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x00000000000044d0 0xe2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x00000000000045b2 0x125 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x00000000000046d7 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000004754 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .debug_macro 0x000000000000479a 0x9b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000004835 0x11b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004950 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004966 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004982 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004a40 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000004a90 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000004ad6 0x1f9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000004ccf 0xa60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x000000000000572f 0x872 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000005fa1 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000005fe1 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000005ffd 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x000000000000601f 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000006125 0x192 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x00000000000062b7 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x00000000000062cd 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x00000000000062f5 0x13c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000006431 0x16b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x000000000000659c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x00000000000065b2 0x61 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000006613 0x9d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x00000000000066b0 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000006702 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006902 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006918 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006928 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000693e 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000697e 0x51d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006e9b 0x17a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000007015 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000703d 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000753a 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x00000000000075ce 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000007644 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000765a 0x207 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007861 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007877 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x00000000000078c3 0x517 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007dda 0x1cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000007fa7 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x00000000000080d7 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000008125 0x308 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x000000000000842d 0x2ef /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x000000000000871c 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000087c4 0x27 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000087eb 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x000000000000884d 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000088ca 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000088f6 0x1ac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000008aa2 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000008af4 0x11b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000008c0f 0xfb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008d0a 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008d26 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008ef9 0x1c4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x00000000000090bd 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000009163 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x00000000000095fc 0xd7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x00000000000096d3 0x110 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x00000000000097e3 0xac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x000000000000988f 0xa1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000009930 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x00000000000099c8 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000009a72 0xa1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + +.debug_line 0x0000000000000000 0x75d63 + .debug_line 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o + .debug_line 0x0000000000000028 0x231 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_line 0x0000000000000259 0x351 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .debug_line 0x00000000000005aa 0x4f5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_line 0x0000000000000a9f 0x341 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_line 0x0000000000000de0 0x559 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_line 0x0000000000001339 0x812 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_line 0x0000000000001b4b 0x1538 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_line 0x0000000000003083 0x21d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .debug_line 0x00000000000032a0 0x2db /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .debug_line 0x000000000000357b 0x5f0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .debug_line 0x0000000000003b6b 0x2f7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .debug_line 0x0000000000003e62 0x1f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o + .debug_line 0x0000000000004058 0x117 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o + .debug_line 0x000000000000416f 0x589 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_line 0x00000000000046f8 0x14d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_line 0x0000000000005bd0 0x792 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_line 0x0000000000006362 0x282 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_line 0x00000000000065e4 0x265c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_line 0x0000000000008c40 0x27a7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_line 0x000000000000b3e7 0x3667 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_line 0x000000000000ea4e 0x2d9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_line 0x000000000000ed27 0x2a4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .debug_line 0x000000000000efcb 0x4528 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_line 0x00000000000134f3 0x34953 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_line 0x0000000000047e46 0x3d78 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_line 0x000000000004bbbe 0x260 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .debug_line 0x000000000004be1e 0x622 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_line 0x000000000004c440 0xcb5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_line 0x000000000004d0f5 0x251fe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_line 0x00000000000722f3 0x301 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_line 0x00000000000725f4 0xc73 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_line 0x0000000000073267 0x165 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_line 0x00000000000733cc 0x136a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_line 0x0000000000074736 0x145c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + .debug_line 0x0000000000075b92 0x1d1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_entrypoint.o + +.debug_str 0x0000000000000000 0x2394c + .debug_str 0x0000000000000000 0x2979 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o + 0x29a6 (size before relaxing) + .debug_str 0x0000000000002979 0x94ac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + 0xbeb1 (size before relaxing) + .debug_str 0x000000000000be25 0x217 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + 0x7166 (size before relaxing) + .debug_str 0x000000000000c03c 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + 0xbf4c (size before relaxing) + .debug_str 0x000000000000c134 0x243 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + 0x720d (size before relaxing) + .debug_str 0x000000000000c377 0x2ec /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + 0x67d1 (size before relaxing) + .debug_str 0x000000000000c663 0x7f0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + 0x7789 (size before relaxing) + .debug_str 0x000000000000ce53 0xf0b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + 0x7f4a (size before relaxing) + .debug_str 0x000000000000dd5e 0x30c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + 0x7793 (size before relaxing) + .debug_str 0x000000000000e06a 0x281 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + 0x4370 (size before relaxing) + .debug_str 0x000000000000e2eb 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + 0x46c2 (size before relaxing) + .debug_str 0x000000000000e36b 0x4b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + 0x709e (size before relaxing) + .debug_str 0x000000000000e3b6 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o + 0x3c13 (size before relaxing) + .debug_str 0x000000000000e3dc 0x1b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o + 0x3a8b (size before relaxing) + .debug_str 0x000000000000e3f7 0x5ca5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + 0xd1bf (size before relaxing) + .debug_str 0x000000000001409c 0x443 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + 0x81e5 (size before relaxing) + .debug_str 0x00000000000144df 0xc1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + 0x8108 (size before relaxing) + .debug_str 0x00000000000150f9 0x1cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + 0x437f (size before relaxing) + .debug_str 0x00000000000152c6 0x4ba0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + 0xca10 (size before relaxing) + .debug_str 0x0000000000019e66 0x6fa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0xba4a (size before relaxing) + .debug_str 0x000000000001a560 0x314 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0xb7f6 (size before relaxing) + .debug_str 0x000000000001a874 0x19 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + 0x75af (size before relaxing) + .debug_str 0x000000000001a88d 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + 0x4115 (size before relaxing) + .debug_str 0x000000000001a8d3 0x12b6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + 0x903e (size before relaxing) + .debug_str 0x000000000001bb89 0x3a87 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + 0x85bd (size before relaxing) + .debug_str 0x000000000001f610 0x7f5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + 0x7a5b (size before relaxing) + .debug_str 0x000000000001fe05 0x51 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + 0x71fd (size before relaxing) + .debug_str 0x000000000001fe56 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + 0x72aa (size before relaxing) + .debug_str 0x000000000001fed3 0x2ed3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + 0x9ee5 (size before relaxing) + .debug_str 0x0000000000022da6 0xa62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x8793 (size before relaxing) + .debug_str 0x0000000000023808 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x985d (size before relaxing) + .debug_str 0x0000000000023858 0x1f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + 0x5093 (size before relaxing) + .debug_str 0x0000000000023877 0x27 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + 0x4e2c (size before relaxing) + .debug_str 0x000000000002389e 0x4f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + 0x7579 (size before relaxing) + .debug_str 0x00000000000238ed 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + 0x743b (size before relaxing) + .debug_str 0x0000000000023921 0x2b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_entrypoint.o + 0x65 (size before relaxing) + +.comment 0x0000000000000000 0x1d + .comment 0x0000000000000000 0x1d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o + 0x1e (size before relaxing) + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + +.note.GNU-stack + 0x0000000000000000 0x0 + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + +.debug_ranges 0x0000000000000000 0x2f790 + .debug_ranges 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_ranges 0x0000000000000040 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .debug_ranges 0x00000000000000a0 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_ranges 0x00000000000001c0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_ranges 0x00000000000001f0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_ranges 0x0000000000000280 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_ranges 0x0000000000000300 0x8d0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_ranges 0x0000000000000bd0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .debug_ranges 0x0000000000000bf0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .debug_ranges 0x0000000000000c20 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .debug_ranges 0x0000000000000d40 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .debug_ranges 0x0000000000000d60 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o + .debug_ranges 0x0000000000000d90 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o + .debug_ranges 0x0000000000000db0 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_ranges 0x0000000000000e90 0x100 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_ranges 0x0000000000000f90 0x160 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_ranges 0x00000000000010f0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_ranges 0x0000000000001180 0x3d0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_ranges 0x0000000000001550 0x480 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_ranges 0x00000000000019d0 0x6b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_ranges 0x0000000000002080 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_ranges 0x00000000000020a0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .debug_ranges 0x00000000000020e0 0xbe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_ranges 0x0000000000002cc0 0x1cf40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_ranges 0x000000000001fc00 0x27b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_ranges 0x00000000000223b0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .debug_ranges 0x00000000000223d0 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_ranges 0x00000000000224a0 0x190 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_ranges 0x0000000000022630 0xc470 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_ranges 0x000000000002eaa0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_ranges 0x000000000002eac0 0x210 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_ranges 0x000000000002ecd0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_ranges 0x000000000002ecf0 0x520 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_ranges 0x000000000002f210 0x580 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + +.debug_frame 0x0000000000000000 0x47b8 + .debug_frame 0x0000000000000000 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_frame 0x0000000000000058 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .debug_frame 0x00000000000000e0 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_frame 0x0000000000000198 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_frame 0x00000000000001f8 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_frame 0x00000000000002f0 0xd8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_frame 0x00000000000003c8 0x1d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_frame 0x00000000000005a0 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .debug_frame 0x00000000000005c8 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .debug_frame 0x0000000000000608 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .debug_frame 0x00000000000006a8 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .debug_frame 0x00000000000006e0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o + .debug_frame 0x0000000000000720 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o + .debug_frame 0x0000000000000748 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_frame 0x00000000000007d0 0x258 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_frame 0x0000000000000a28 0x158 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_frame 0x0000000000000b80 0x118 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_frame 0x0000000000000c98 0x3b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_frame 0x0000000000001048 0x5a8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_frame 0x00000000000015f0 0x520 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_frame 0x0000000000001b10 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_frame 0x0000000000001b50 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .debug_frame 0x0000000000001bb8 0x2d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_frame 0x0000000000001e90 0x1758 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_frame 0x00000000000035e8 0x488 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_frame 0x0000000000003a70 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .debug_frame 0x0000000000003aa8 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_frame 0x0000000000003b60 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_frame 0x0000000000003be8 0xab0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_frame 0x0000000000004698 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_frame 0x00000000000046c0 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_frame 0x00000000000046f8 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_frame 0x0000000000004720 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_frame 0x0000000000004790 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o + +.debug_loc 0x0000000000000000 0xc12a0 + .debug_loc 0x0000000000000000 0x18c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o + .debug_loc 0x000000000000018c 0x28a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_loc 0x0000000000000416 0x143 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_loc 0x0000000000000559 0x24e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_loc 0x00000000000007a7 0x8b7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_loc 0x000000000000105e 0x1f54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o + .debug_loc 0x0000000000002fb2 0x39 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o + .debug_loc 0x0000000000002feb 0x450 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o + .debug_loc 0x000000000000343b 0xc56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o + .debug_loc 0x0000000000004091 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o + .debug_loc 0x000000000000414f 0x262 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o + .debug_loc 0x00000000000043b1 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o + .debug_loc 0x0000000000004433 0x38f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o + .debug_loc 0x00000000000047c2 0xe17 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_loc 0x00000000000055d9 0x9d2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o + .debug_loc 0x0000000000005fab 0x156 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_loc 0x0000000000006101 0x1f8b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_loc 0x000000000000808c 0x28fb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_loc 0x000000000000a987 0x4255 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_loc 0x000000000000ebdc 0x11d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_loc 0x000000000000ecf9 0x33f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o + .debug_loc 0x000000000000f038 0xa0cf /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_loc 0x0000000000019107 0x5f2ef /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_loc 0x00000000000783f6 0x8560 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o + .debug_loc 0x0000000000080956 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o + .debug_loc 0x00000000000809ee 0x22c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_loc 0x0000000000080c1a 0xdfe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_loc 0x0000000000081a18 0x37fb4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_loc 0x00000000000b99cc 0x1c14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_loc 0x00000000000bb5e0 0x2b75 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_loc 0x00000000000be155 0x314b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2.sym b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2.sym new file mode 100644 index 000000000..08b449c14 --- /dev/null +++ b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2.sym @@ -0,0 +1,400 @@ + 39: 000000003bc0e800 16384 OBJECT LOCAL DEFAULT 4 sram_union_buf + 167: 000000003bc047aa 5002 FUNC LOCAL DEFAULT 1 LzmaDec_DecodeReal2 + 38: 000000003bc0d800 4096 OBJECT LOCAL DEFAULT 4 fip_param2 + 279: 000000003bc0720e 2012 FUNC GLOBAL DEFAULT 1 LZ4F_decompress + 375: 000000003bc04096 1344 FUNC GLOBAL DEFAULT 1 dwc2_udc_irq + 168: 000000003bc05b34 1256 FUNC LOCAL DEFAULT 1 LzmaDec_TryDummy + 283: 000000003bc022d6 1144 FUNC GLOBAL DEFAULT 1 AcmApp + 62: 000000003bc01ba6 1090 FUNC LOCAL DEFAULT 1 setup + 373: 000000003bc12e80 1024 OBJECT GLOBAL DEFAULT 4 handlerArr + 394: 000000003bc09c12 986 FUNC GLOBAL DEFAULT 1 phy_init + 334: 000000003bc03d50 838 FUNC GLOBAL DEFAULT 1 dwc2_handle_ep0 + 280: 000000003bc09460 826 FUNC GLOBAL DEFAULT 1 cvx16_pinmux + 181: 000000003bc07a2c 826 FUNC LOCAL DEFAULT 1 XXH32_finalize.constprop. + 294: 000000003bc06cd4 790 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_force + 396: 000000003bc02f1a 654 FUNC GLOBAL DEFAULT 1 dwc2_reconfig_usbd + 222: 000000003bc06030 636 FUNC GLOBAL DEFAULT 1 LzmaDec_DecodeToDic + 172: 000000003bc06476 630 FUNC LOCAL DEFAULT 1 LZ4_decompress_safe_withS + 219: 000000003bc067fc 622 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe + 340: 000000003bc06a6a 618 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_withP + 58: 000000003bc0189c 564 FUNC LOCAL DEFAULT 1 bulkOutCmpl + 320: 000000003bc081c8 558 FUNC GLOBAL DEFAULT 1 read_ddr_pkg_info + 379: 000000003bc08450 548 FUNC GLOBAL DEFAULT 1 ddr_sys_bring_up + 333: 000000003bc099f6 540 FUNC GLOBAL DEFAULT 1 ctrl_init_update_by_dram_ + 312: 000000003bc01130 520 FUNC GLOBAL DEFAULT 1 load_loader_2nd + 376: 000000003bc12c00 512 OBJECT GLOBAL DEFAULT 4 cmdBufAllocArr + 218: 000000003bc12880 512 OBJECT GLOBAL DEFAULT 4 bulkBufAllocArr + 164: 000000003bc0af18 512 OBJECT LOCAL DEFAULT 1 crc16_tab + 339: 000000003bc0979c 510 FUNC GLOBAL DEFAULT 1 ddrc_init + 331: 000000003bc07f82 466 FUNC GLOBAL DEFAULT 1 XXH32_update + 337: 000000003bc07d66 454 FUNC GLOBAL DEFAULT 1 XXH32 + 136: 000000003bc02d54 422 FUNC LOCAL DEFAULT 1 _dwc2_ep_disable.isra.0 + 174: 000000003bc0703a 420 FUNC LOCAL DEFAULT 1 LZ4F_decodeHeader + 341: 000000003bc00358 410 FUNC GLOBAL DEFAULT 1 tf_printf + 275: 000000003bc0068e 398 FUNC GLOBAL DEFAULT 1 sys_pll_nd + 225: 000000003bc0921e 386 FUNC GLOBAL DEFAULT 1 cvx16_wdqlvl_req + 237: 000000003bc090ae 368 FUNC GLOBAL DEFAULT 1 cvx16_rdlvl_req + 325: 000000003bc00ea4 358 FUNC GLOBAL DEFAULT 1 load_blcp_2nd + 159: 000000003bc03960 348 FUNC LOCAL DEFAULT 1 setdma_tx + 268: 000000003bc031a8 342 FUNC GLOBAL DEFAULT 1 usb_gadget_register_drive + 314: 000000003bc03310 336 FUNC GLOBAL DEFAULT 1 dwc2_udc_probe + 282: 000000003bc02162 312 FUNC GLOBAL DEFAULT 1 acm_app_init + 248: 000000003bc0100a 294 FUNC GLOBAL DEFAULT 1 load_monitor + 173: 000000003bc066ec 272 FUNC LOCAL DEFAULT 1 LZ4F_updateDict + 158: 000000003bc0380a 252 FUNC LOCAL DEFAULT 1 complete_rx + 271: 000000003bc08b62 248 FUNC GLOBAL DEFAULT 1 cvx16_chg_pll_freq + 307: 000000003bc08768 234 FUNC GLOBAL DEFAULT 1 cvx16_bist_rdlvl_init + 301: 000000003bc014fa 232 FUNC GLOBAL DEFAULT 1 decompress_lzma + 229: 000000003bc01338 230 FUNC GLOBAL DEFAULT 1 load_rest + 135: 000000003bc02c7a 218 FUNC LOCAL DEFAULT 1 dwc2_hsotg_init_fifo.cons + 317: 000000003bc045ee 216 FUNC GLOBAL DEFAULT 1 dwc2_queue + 345: 000000003bc0208c 208 FUNC GLOBAL DEFAULT 1 print_buf_addr + 278: 000000003bc00c60 208 FUNC GLOBAL DEFAULT 1 load_param2 + 227: 000000003bc004f2 200 FUNC GLOBAL DEFAULT 1 __system_reset + 391: 000000003bc00dde 198 FUNC GLOBAL DEFAULT 1 load_ddr + 353: 000000003bc08fe8 198 FUNC GLOBAL DEFAULT 1 cvx16_rdglvl_req + 277: 000000003bc00878 188 FUNC GLOBAL DEFAULT 1 set_rtc_en_registers + 204: 000000003bc03c9e 178 FUNC GLOBAL DEFAULT 1 dwc2_udc_ep_activate + 239: 000000003bc08852 176 FUNC GLOBAL DEFAULT 1 cvx16_bist_wdqlvl_init + 383: 000000003bc01612 174 FUNC GLOBAL DEFAULT 1 decompress_lz4 + 200: 000000003bc00d30 174 FUNC GLOBAL DEFAULT 1 load_ddr_param + 366: 000000003bc063a8 170 FUNC GLOBAL DEFAULT 1 LzmaDecode + 157: 000000003bc03760 170 FUNC LOCAL DEFAULT 1 setdma_rx.isra.0 + 338: 000000003bc089cc 166 FUNC GLOBAL DEFAULT 1 cvx16_rdvld_train + 295: 000000003bc01fea 162 FUNC GLOBAL DEFAULT 1 convert_buf_addr + 129: 000000003bc0281e 160 FUNC LOCAL DEFAULT 1 dwc2_ep_enable + 297: 000000003bc08e92 156 FUNC GLOBAL DEFAULT 1 cvx16_pll_init + 342: 000000003bc029d4 154 FUNC GLOBAL DEFAULT 1 usb_gadget_unregister_dri + 298: 000000003bc0141e 152 FUNC GLOBAL DEFAULT 1 bl2_main + 133: 000000003bc02b36 144 FUNC LOCAL DEFAULT 1 dwc2_hsotg_txfifo_flush.c + 151: 000000003bc034ac 142 FUNC LOCAL DEFAULT 1 set_max_pktsize + 395: 000000003bc093dc 132 FUNC GLOBAL DEFAULT 1 pll_init + 27: 000000003bc002d6 130 FUNC LOCAL DEFAULT 1 unsigned_num_print + 347: 000000003bc12b80 128 OBJECT GLOBAL DEFAULT 4 cb2_bufArr + 321: 000000003bc12800 128 OBJECT GLOBAL DEFAULT 4 acm_bufArr + 289: 000000003bc12e00 128 OBJECT GLOBAL DEFAULT 4 ep0BuffAllocArr + 274: 000000003bc12a80 128 OBJECT GLOBAL DEFAULT 4 cb0_bufArr + 234: 000000003bc12b00 128 OBJECT GLOBAL DEFAULT 4 cb1_bufArr + 154: 000000003bc035fa 128 FUNC LOCAL DEFAULT 1 dwc2_ep0_complete_out + 263: 000000003bc016c0 126 FUNC GLOBAL DEFAULT 1 decompress + 155: 000000003bc0367a 126 FUNC LOCAL DEFAULT 1 dwc2_udc_ep0_zlp + 258: 000000003bc00b6c 124 FUNC GLOBAL DEFAULT 1 gpio_in_value + 355: 000000003bc00998 122 FUNC GLOBAL DEFAULT 1 ntostr + 211: 000000003bc0021a 120 FUNC GLOBAL DEFAULT 1 jump_to_monitor + 166: 000000003bc04738 114 FUNC LOCAL DEFAULT 1 LzmaDec_WriteRem + 262: 000000003bc08f78 112 FUNC GLOBAL DEFAULT 1 cvx16_clk_gating_enable + 256: 000000003bc08962 106 FUNC GLOBAL DEFAULT 1 cvx16_bist_start_check + 374: 000000003bc08de2 104 FUNC GLOBAL DEFAULT 1 cvx16_dfi_ca_park_prbs + 281: 000000003bc08a72 104 FUNC GLOBAL DEFAULT 1 cvx16_dll_cal + 156: 000000003bc036f8 104 FUNC LOCAL DEFAULT 1 dwc2_udc_ep0_set_stall.is + 169: 000000003bc062c8 102 FUNC LOCAL DEFAULT 1 LzmaDec_AllocateProbs2.is + 330: 000000003bc03c3c 98 FUNC GLOBAL DEFAULT 1 dwc2_udc_set_halt + 153: 000000003bc03598 98 FUNC LOCAL DEFAULT 1 dwc2_udc_ep_set_stall + 315: 000000003bc00934 96 FUNC GLOBAL DEFAULT 1 init_comm_info + 303: 000000003bc08902 96 FUNC GLOBAL DEFAULT 1 cvx16_bist_wdmlvl_init + 264: 000000003bc086c2 96 FUNC GLOBAL DEFAULT 1 cvx16_bist_wr_sram_init + 238: 000000003bc00a6c 96 FUNC GLOBAL DEFAULT 1 memcpy + 152: 000000003bc0353a 94 FUNC LOCAL DEFAULT 1 dwc2_udc_ep_clear_stall + 134: 000000003bc02bc6 94 FUNC LOCAL DEFAULT 1 kill_all_requests.isra.0 + 327: 000000003bc08ada 92 FUNC GLOBAL DEFAULT 1 cvx16_clk_normal + 60: 000000003bc01ad0 92 FUNC LOCAL DEFAULT 1 getDescAcm + 329: 000000003bc00a12 90 FUNC GLOBAL DEFAULT 1 memset + 114: 000000003bc0b618 88 OBJECT LOCAL DEFAULT 2 g_driver + 336: 000000003bc07f2c 86 FUNC GLOBAL DEFAULT 1 XXH32_reset + 313: 000000003bc02c24 86 FUNC GLOBAL DEFAULT 1 dwc2_disconnect + 131: 000000003bc02952 84 FUNC LOCAL DEFAULT 1 dwc2_dequeue + 205: 000000003bc00aec 82 FUNC GLOBAL DEFAULT 1 putchar_l + 57: 000000003bc0184a 82 FUNC LOCAL DEFAULT 1 get_unicode_string + 194: 000000003bc08400 80 FUNC GLOBAL DEFAULT 1 axi_mon_start_all + 138: 000000003bc0b6a0 80 OBJECT LOCAL DEFAULT 2 dwc2_ep_ops + 112: 000000003bc0b5c0 80 OBJECT LOCAL DEFAULT 2 drv_obj + 110: 000000003bc0b558 80 OBJECT LOCAL DEFAULT 2 descriptorsHs + 109: 000000003bc0b508 80 OBJECT LOCAL DEFAULT 2 descriptorsFs + 59: 000000003bc01b56 80 FUNC LOCAL DEFAULT 1 bulkInCmpl + 217: 000000003bc08674 78 FUNC GLOBAL DEFAULT 1 cvx16_bist_wr_prbs_init + 290: 000000003bc03460 76 FUNC GLOBAL DEFAULT 1 usb_gadget_handle_interru + 233: 000000003bc03b00 76 FUNC GLOBAL DEFAULT 1 dwc2_write_fifo_ep0 + 364: 000000003bc005ec 74 FUNC GLOBAL DEFAULT 1 reset_c906l + 363: 000000003bc00636 74 FUNC GLOBAL DEFAULT 1 setup_dl_flag + 323: 000000003bc0632e 74 FUNC GLOBAL DEFAULT 1 LzmaProps_Decode + 284: 000000003bc08f2e 74 FUNC GLOBAL DEFAULT 1 cvx16_clk_gating_disable + 292: 000000003bc08c9e 72 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 215: 000000003bc03b4c 72 FUNC GLOBAL DEFAULT 1 dwc2_set_address + 145: 000000003bc0ae18 72 OBJECT LOCAL DEFAULT 1 dwc2_udc_ops + 127: 000000003bc0279e 72 FUNC LOCAL DEFAULT 1 pullup + 392: 000000003bc028cc 70 FUNC GLOBAL DEFAULT 1 udc_reinit + 236: 000000003bc02af0 70 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_wait_bit_set + 223: 000000003bc08722 70 FUNC GLOBAL DEFAULT 1 cvx16_bist_rdglvl_init + 382: 000000003bc0391c 68 FUNC GLOBAL DEFAULT 1 dwc2_ep_fifo_write + 371: 000000003bc03abc 68 FUNC GLOBAL DEFAULT 1 dwc2_ep_fifo_read + 228: 000000003bc00834 68 FUNC GLOBAL DEFAULT 1 switch_rtc_mode_2nd_stage + 221: 000000003bc08c5a 68 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 56: 000000003bc01808 66 FUNC LOCAL DEFAULT 1 bind + 42: 000000003bc014b8 66 FUNC LOCAL DEFAULT 1 SzAlloc + 380: 000000003bc08154 64 FUNC GLOBAL DEFAULT 1 XXH32_digest + 356: 000000003bc046c6 64 FUNC GLOBAL DEFAULT 1 usb_polling + 351: 000000003bc03bfc 64 FUNC GLOBAL DEFAULT 1 dwc2_udc_set_nak + 310: 000000003bc00c20 64 FUNC GLOBAL DEFAULT 1 load_image_by_usb + 306: 000000003bc02912 64 FUNC GLOBAL DEFAULT 1 dwc2_done + 242: 000000003bc03bbc 64 FUNC GLOBAL DEFAULT 1 dwc2_ep0_write + 132: 000000003bc02ab4 60 FUNC LOCAL DEFAULT 1 wakeup + 267: 000000003bc08ce6 58 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 126: 000000003bc02764 58 FUNC LOCAL DEFAULT 1 dwc2_free_request + 232: 000000003bc08d20 56 FUNC GLOBAL DEFAULT 1 cvx16_wait_for_dfi_init_c + 128: 000000003bc027e6 56 FUNC LOCAL DEFAULT 1 dwc2_alloc_request + 50: 000000003bc0174a 56 FUNC LOCAL DEFAULT 1 requestMemAlloc + 381: 000000003bc08194 52 FUNC GLOBAL DEFAULT 1 ddr_init + 252: 000000003bc005ba 50 FUNC GLOBAL DEFAULT 1 panic_handler + 230: 000000003bc04706 50 FUNC GLOBAL DEFAULT 1 crc16_ccitt + 296: 000000003bc06378 48 FUNC GLOBAL DEFAULT 1 LzmaDec_AllocateProbs + 287: 000000003bc022a6 48 FUNC GLOBAL DEFAULT 1 get_usb_polling_timeout_v + 285: 000000003bc071de 48 FUNC GLOBAL DEFAULT 1 LZ4F_createDecompressionC + 24: 000000003bc132c8 48 OBJECT LOCAL DEFAULT 4 fw_dynamic_info + 390: 000000003bc0999a 46 FUNC GLOBAL DEFAULT 1 ctrl_init_high_patch + 253: 000000003bc029a6 46 FUNC GLOBAL DEFAULT 1 dwc2_nuke + 246: 000000003bc099c8 46 FUNC GLOBAL DEFAULT 1 ctrl_init_low_patch + 54: 000000003bc017b4 46 FUNC LOCAL DEFAULT 1 disconnect + 293: 000000003bc08d9a 44 FUNC GLOBAL DEFAULT 1 cvx16_INT_ISR_08 + 179: 000000003bc079ea 44 FUNC LOCAL DEFAULT 1 XXH32_avalanche + 304: 000000003bc0018a 42 FUNC GLOBAL DEFAULT 1 udelay + 254: 000000003bc001e2 42 FUNC GLOBAL DEFAULT 1 get_random_from_timer + 61: 000000003bc01b2c 42 FUNC LOCAL DEFAULT 1 reqComplete + 343: 000000003bc015e8 40 FUNC GLOBAL DEFAULT 1 LZ4_calloc + 288: 000000003bc03b94 40 FUNC GLOBAL DEFAULT 1 dwc2_ep0_read + 231: 000000003bc08d72 40 FUNC GLOBAL DEFAULT 1 cvx16_set_dfi_init_comple + 389: 000000003bc08e6c 38 FUNC GLOBAL DEFAULT 1 cvx16_set_dfi_init_start + 358: 000000003bc06fea 38 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_using + 55: 000000003bc017e2 38 FUNC LOCAL DEFAULT 1 unbind + 332: 000000003bc0a170 37 OBJECT GLOBAL DEFAULT 1 hex2ascii_data + 273: 000000003bc00156 36 FUNC GLOBAL DEFAULT 1 flush_dcache_range + 266: 000000003bc001be 36 FUNC GLOBAL DEFAULT 1 get_timer + 241: 000000003bc02a90 36 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_clear_bit + 171: 000000003bc06452 36 FUNC LOCAL DEFAULT 1 LZ4F_readLE32 + 360: 000000003bc093ba 34 FUNC GLOBAL DEFAULT 1 ctrl_init_detect_dram_siz + 244: 000000003bc02a6e 34 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_set_bit + 324: 000000003bc08e4c 32 FUNC GLOBAL DEFAULT 1 cvx16_setting_check + 216: 000000003bc00acc 32 FUNC GLOBAL DEFAULT 1 memmove + 177: 000000003bc0b198 32 OBJECT LOCAL DEFAULT 1 inc32table + 176: 000000003bc0b178 32 OBJECT LOCAL DEFAULT 1 dec64table + 175: 000000003bc0b158 32 OBJECT LOCAL DEFAULT 1 blockSizes.0 + 137: 000000003bc02efa 32 FUNC LOCAL DEFAULT 1 dwc2_ep_disable + 384: 000000003bc0701c 30 FUNC GLOBAL DEFAULT 1 LZ4F_getBlockSize + 367: 000000003bc00be8 30 FUNC GLOBAL DEFAULT 1 usb_id_det + 269: 000000003bc002a4 30 FUNC GLOBAL DEFAULT 1 console_putc + 357: 000000003bc08dc6 28 FUNC GLOBAL DEFAULT 1 cvx16_polling_synp_normal + 335: 000000003bc00b3e 28 FUNC GLOBAL DEFAULT 1 strcmp + 300: 000000003bc062ac 28 FUNC GLOBAL DEFAULT 1 LzmaDec_FreeProbs + 84: 000000003bc13388 28 OBJECT LOCAL DEFAULT 4 serialDesc + 82: 000000003bc13358 28 OBJECT LOCAL DEFAULT 4 productDesc + 52: 000000003bc01784 28 FUNC LOCAL DEFAULT 1 acm_complete_set_line_cod + 305: 000000003bc08d58 26 FUNC GLOBAL DEFAULT 1 cvx16_polling_dfi_init_st + 260: 000000003bc093a0 26 FUNC GLOBAL DEFAULT 1 cvx16_en_rec_vol_mode + 224: 000000003bc09ff0 26 OBJECT GLOBAL DEFAULT 1 build_message + 37: 000000003bc00c06 26 FUNC LOCAL DEFAULT 1 read_time_ms + 207: 000000003bc045d6 24 FUNC GLOBAL DEFAULT 1 dwc2_ep0_kick + 142: 000000003bc0add8 24 OBJECT LOCAL DEFAULT 1 __func__.3 + 393: 000000003bc08b36 22 FUNC GLOBAL DEFAULT 1 cvx16_clk_div2 + 370: 000000003bc0081c 22 FUNC GLOBAL DEFAULT 1 sys_pll_init + 251: 000000003bc08b4c 22 FUNC GLOBAL DEFAULT 1 cvx16_clk_div40 + 209: 000000003bc03906 22 FUNC GLOBAL DEFAULT 1 dwc2_udc_pre_setup + 180: 000000003bc07a16 22 FUNC LOCAL DEFAULT 1 XXH_read32 + 125: 000000003bc0274e 22 FUNC LOCAL DEFAULT 1 dwc2_fifo_status + 143: 000000003bc0adf0 21 OBJECT LOCAL DEFAULT 1 __func__.4 + 344: 000000003bc002c2 20 FUNC GLOBAL DEFAULT 1 console_flush + 247: 000000003bc0601c 20 FUNC GLOBAL DEFAULT 1 LzmaDec_Init + 53: 000000003bc017a0 20 FUNC LOCAL DEFAULT 1 reset + 141: 000000003bc0adc0 19 OBJECT LOCAL DEFAULT 1 __func__.2 + 377: 000000003bc00b5a 18 FUNC GLOBAL DEFAULT 1 strlen + 354: 000000003bc032fe 18 FUNC GLOBAL DEFAULT 1 dwc2_phy_to_log_ep + 139: 000000003bc0ad90 18 OBJECT LOCAL DEFAULT 1 __func__.0 + 111: 000000003bc0b5a8 18 OBJECT LOCAL DEFAULT 2 devHsDesc + 140: 000000003bc0ada8 17 OBJECT LOCAL DEFAULT 1 __func__.1 + 302: 000000003bc0017a 16 FUNC GLOBAL DEFAULT 1 trig_simulation_timer + 272: 000000003bc00294 16 FUNC GLOBAL DEFAULT 1 _uart_putc + 212: 000000003bc13280 16 OBJECT GLOBAL DEFAULT 4 rsp_bufArr + 201: 000000003bc0a010 16 OBJECT GLOBAL DEFAULT 1 version_string + 87: 000000003bc133a8 16 OBJECT LOCAL DEFAULT 4 vendorDesc + 83: 000000003bc13378 16 OBJECT LOCAL DEFAULT 4 serial.2 + 46: 000000003bc0a790 16 OBJECT LOCAL DEFAULT 1 __func__.1 + 318: 000000003bc00680 14 FUNC GLOBAL DEFAULT 1 sys_switch_all_to_pll + 261: 000000003bc0020c 14 FUNC GLOBAL DEFAULT 1 read_count_tick + 349: 000000003bc07010 12 FUNC GLOBAL DEFAULT 1 LZ4F_isError + 328: 000000003bc0229a 12 FUNC GLOBAL DEFAULT 1 usb_vbus_det + 148: 000000003bc0ae80 12 OBJECT LOCAL DEFAULT 1 ep2name + 146: 000000003bc0ae60 12 OBJECT LOCAL DEFAULT 1 ep0name + 147: 000000003bc0ae70 11 OBJECT LOCAL DEFAULT 1 ep1name + 122: 000000003bc0ab90 11 OBJECT LOCAL DEFAULT 1 __func__.4 + 362: 000000003bc0014c 10 FUNC GLOBAL DEFAULT 1 sync_cache + 240: 000000003bc028c2 10 FUNC GLOBAL DEFAULT 1 dwc2_get_ep0_name + 193: 000000003bc001b4 10 FUNC GLOBAL DEFAULT 1 mdelay + 192: 000000003bc083f6 10 FUNC GLOBAL DEFAULT 1 get_ddr_vendor + 149: 000000003bc0ae90 10 OBJECT LOCAL DEFAULT 1 ep3name + 117: 000000003bc0b680 10 OBJECT LOCAL DEFAULT 2 qualifierDesc + 144: 000000003bc0ae08 9 OBJECT LOCAL DEFAULT 1 driver_name + 92: 000000003bc0b478 9 OBJECT LOCAL DEFAULT 2 acm_data_interface_desc + 91: 000000003bc0b468 9 OBJECT LOCAL DEFAULT 2 acm_control_interface_des + 88: 000000003bc0b448 9 OBJECT LOCAL DEFAULT 2 ConfDesc + 388: 000000003bc133c0 8 OBJECT GLOBAL DEFAULT 4 the_controller + 386: 000000003bc13308 8 OBJECT GLOBAL DEFAULT 4 acm + 365: 000000003bc133c8 8 OBJECT GLOBAL DEFAULT 4 reg_set + 326: 000000003bc133d0 8 OBJECT GLOBAL DEFAULT 4 reg_span + 245: 000000003bc132c0 8 OBJECT GLOBAL DEFAULT 4 setup_bufArr + 214: 000000003bc133b8 8 OBJECT GLOBAL DEFAULT 4 reg + 213: 000000003bc133d8 8 OBJECT GLOBAL DEFAULT 4 reg_step + 197: 000000003bc0b440 8 OBJECT GLOBAL DEFAULT 2 time_records + 119: 000000003bc0b698 8 OBJECT LOCAL DEFAULT 2 setup_buf + 118: 000000003bc0b690 8 OBJECT LOCAL DEFAULT 2 rsp_buf + 115: 000000003bc0b670 8 OBJECT LOCAL DEFAULT 2 handler + 113: 000000003bc0b610 8 OBJECT LOCAL DEFAULT 2 ep0BuffAlloc + 108: 000000003bc0b500 8 OBJECT LOCAL DEFAULT 2 cmdBufAlloc + 107: 000000003bc0b4f8 8 OBJECT LOCAL DEFAULT 2 cb2_buf + 106: 000000003bc0b4f0 8 OBJECT LOCAL DEFAULT 2 cb1_buf + 105: 000000003bc0b4e8 8 OBJECT LOCAL DEFAULT 2 cb0_buf + 103: 000000003bc0b4d8 8 OBJECT LOCAL DEFAULT 2 bulkBufAlloc + 89: 000000003bc0b458 8 OBJECT LOCAL DEFAULT 2 acm_buf + 75: 000000003bc13350 8 OBJECT LOCAL DEFAULT 4 fip_buf + 74: 000000003bc13348 8 OBJECT LOCAL DEFAULT 4 epOut + 73: 000000003bc13340 8 OBJECT LOCAL DEFAULT 4 epIn + 72: 000000003bc13338 8 OBJECT LOCAL DEFAULT 4 ep0Req + 71: 000000003bc13330 8 OBJECT LOCAL DEFAULT 4 ep0Buff + 68: 000000003bc13328 8 OBJECT LOCAL DEFAULT 4 cmdBuf + 67: 000000003bc13320 8 OBJECT LOCAL DEFAULT 4 bulkOutReq + 66: 000000003bc13318 8 OBJECT LOCAL DEFAULT 4 bulkInReq + 65: 000000003bc13310 8 OBJECT LOCAL DEFAULT 4 bulkBuf + 45: 000000003bc0a788 8 OBJECT LOCAL DEFAULT 1 __func__.0 + 44: 000000003bc13300 8 OBJECT LOCAL DEFAULT 4 comp_alloc_size + 43: 000000003bc132f8 8 OBJECT LOCAL DEFAULT 4 comp_alloc_buf + 121: 000000003bc0ab88 7 OBJECT LOCAL DEFAULT 1 __func__.1 + 104: 000000003bc0b4e0 7 OBJECT LOCAL DEFAULT 2 capabilityExtDesc + 100: 000000003bc0b4c0 7 OBJECT LOCAL DEFAULT 2 acm_hs_out_desc + 99: 000000003bc0b4b8 7 OBJECT LOCAL DEFAULT 2 acm_hs_notify_desc + 98: 000000003bc0b4b0 7 OBJECT LOCAL DEFAULT 2 acm_hs_in_desc + 96: 000000003bc0b4a0 7 OBJECT LOCAL DEFAULT 2 acm_fs_out_desc + 95: 000000003bc0b498 7 OBJECT LOCAL DEFAULT 2 acm_fs_notify_desc + 94: 000000003bc0b490 7 OBJECT LOCAL DEFAULT 2 acm_fs_in_desc + 359: 000000003bc015e2 6 FUNC GLOBAL DEFAULT 1 LZ4_malloc + 286: 000000003bc0173e 6 FUNC GLOBAL DEFAULT 1 DWC2_UncachedRead32 + 195: 000000003bc0215c 6 FUNC GLOBAL DEFAULT 1 AcmIsr + 123: 000000003bc0aba0 6 OBJECT LOCAL DEFAULT 1 __func__.5 + 120: 000000003bc0ab80 5 OBJECT LOCAL DEFAULT 1 __func__.0 + 102: 000000003bc0b4d0 5 OBJECT LOCAL DEFAULT 2 bosDesc + 101: 000000003bc0b4c8 5 OBJECT LOCAL DEFAULT 2 acm_union_desc + 97: 000000003bc0b4a8 5 OBJECT LOCAL DEFAULT 2 acm_header_desc + 90: 000000003bc0b460 5 OBJECT LOCAL DEFAULT 2 acm_call_mgmt_descriptor + 387: 000000003bc01744 4 FUNC GLOBAL DEFAULT 1 DWC2_UncachedWrite32 + 372: 000000003bc0b6fc 4 OBJECT GLOBAL DEFAULT 2 ddr_data_rate + 316: 000000003bc133f4 4 OBJECT GLOBAL DEFAULT 4 dev_freq + 270: 000000003bc133f0 4 OBJECT GLOBAL DEFAULT 4 rddata + 257: 000000003bc133fc 4 OBJECT GLOBAL DEFAULT 4 mod_freq + 203: 000000003bc00994 4 FUNC GLOBAL DEFAULT 1 dec_verify_image + 199: 000000003bc133f8 4 OBJECT GLOBAL DEFAULT 4 freq_in + 196: 000000003bc13400 4 OBJECT GLOBAL DEFAULT 4 tar_freq + 161: 000000003bc0b6f4 4 OBJECT LOCAL DEFAULT 2 ep_fifo_size + 160: 000000003bc0b6f0 4 OBJECT LOCAL DEFAULT 2 ep0_fifo_size + 116: 000000003bc0b678 4 OBJECT LOCAL DEFAULT 2 languageDesc + 93: 000000003bc0b488 4 OBJECT LOCAL DEFAULT 2 acm_descriptor + 86: 000000003bc133ec 4 OBJECT LOCAL DEFAULT 4 ts + 85: 000000003bc133e8 4 OBJECT LOCAL DEFAULT 4 transfer_size + 77: 000000003bc133e4 4 OBJECT LOCAL DEFAULT 4 fip_tx_size + 76: 000000003bc133e0 4 OBJECT LOCAL DEFAULT 4 fip_tx_offset + 369: 000000003bc0b6f8 2 OBJECT GLOBAL DEFAULT 2 cv_usb_vid + 276: 000000003bc00832 2 FUNC GLOBAL DEFAULT 1 switch_rtc_mode_1st_stage + 255: 000000003bc0979a 2 FUNC GLOBAL DEFAULT 1 cvx16_dram_cap_check + 243: 000000003bc028c0 2 FUNC GLOBAL DEFAULT 1 dwc2_log_write + 235: 000000003bc08e4a 2 FUNC GLOBAL DEFAULT 1 cvx16_wrlvl_req + 210: 000000003bc00292 2 FUNC GLOBAL DEFAULT 1 jump_to_loader_2nd + 206: 000000003bc01610 2 FUNC GLOBAL DEFAULT 1 LZ4_free + 130: 000000003bc028be 2 FUNC LOCAL DEFAULT 1 dwc2_fifo_flush + 63: 000000003bc01fe8 2 FUNC LOCAL DEFAULT 1 suspend + 51: 000000003bc01782 2 FUNC LOCAL DEFAULT 1 requestMemFree + 49: 000000003bc01748 2 FUNC LOCAL DEFAULT 1 resume + 41: 000000003bc014b6 2 FUNC LOCAL DEFAULT 1 SzFree + 385: 000000003bc1340c 1 OBJECT GLOBAL DEFAULT 4 ddr_capacity + 378: 000000003bc1340d 1 OBJECT GLOBAL DEFAULT 4 ddr_type + 308: 000000003bc1340e 1 OBJECT GLOBAL DEFAULT 4 ddr_vendor + 249: 000000003bc1340f 1 OBJECT GLOBAL DEFAULT 4 pkg + 220: 000000003bc13405 1 OBJECT GLOBAL DEFAULT 4 acm_configValue + 81: 000000003bc1340b 1 OBJECT LOCAL DEFAULT 4 mem_alloc_cnt + 80: 000000003bc1340a 1 OBJECT LOCAL DEFAULT 4 is_serial_patched.3 + 79: 000000003bc13409 1 OBJECT LOCAL DEFAULT 4 flagReboot + 78: 000000003bc13408 1 OBJECT LOCAL DEFAULT 4 flagEnterDL + 70: 000000003bc13407 1 OBJECT LOCAL DEFAULT 4 configValue + 69: 000000003bc13406 1 OBJECT LOCAL DEFAULT 4 configBreak + 64: 000000003bc13404 1 OBJECT LOCAL DEFAULT 4 ack_idx.6 + 368: 000000003bc0b700 0 NOTYPE GLOBAL DEFAULT 3 __STACKS_START__ + 361: 00000000044000c0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_get_number_of_r + 352: 000000003bc00000 0 NOTYPE GLOBAL DEFAULT 1 __RO_START__ + 350: 000000003bc0d800 0 NOTYPE GLOBAL DEFAULT 4 __BSS_START__ + 348: 0000000004400060 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_load_image + 346: 000000003bc0b434 0 NOTYPE GLOBAL DEFAULT 1 __RO_END__ + 322: 0000000004400040 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_set_boot_src + 319: 000000003bc13410 0 NOTYPE GLOBAL DEFAULT 4 __BSS_END__ + 311: 000000003bc00000 0 NOTYPE GLOBAL DEFAULT 1 bl2_entrypoint + 309: 00000000044000a0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_image_crc + 299: 000000003bc0b700 0 NOTYPE GLOBAL DEFAULT 2 __DATA_END__ + 291: 000000003bc13410 0 NOTYPE GLOBAL DEFAULT 4 __BL2_END__ + 265: 0000000000005c10 0 NOTYPE GLOBAL DEFAULT ABS __BSS_SIZE__ + 259: 00000000044000e0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_verify_rsa + 250: 000000003bc0d700 0 NOTYPE GLOBAL DEFAULT 3 __STACKS_END__ + 226: 000000003bc0b440 0 NOTYPE GLOBAL DEFAULT 2 __DATA_START__ + 208: 0000000004400020 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_get_boot_src + 202: 0000000004400080 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_flash_init + 198: 0000000004400100 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_cryptodma_aes_d + 191: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 190: 0000000000000000 0 FILE LOCAL DEFAULT ABS phy_init.c + 189: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddrc_init.c + 188: 0000000000000000 0 FILE LOCAL DEFAULT ABS cvx16_dram_cap_check.c + 187: 0000000000000000 0 FILE LOCAL DEFAULT ABS cvx16_pinmux.c + 186: 0000000000000000 0 FILE LOCAL DEFAULT ABS phy_pll_init.c + 185: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_sys.c + 184: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_sys_bring_up.c + 183: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_pkg_info.c + 182: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr.c + 178: 0000000000000000 0 FILE LOCAL DEFAULT ABS xxhash.c + 170: 0000000000000000 0 FILE LOCAL DEFAULT ABS lz4_all.c + 165: 0000000000000000 0 FILE LOCAL DEFAULT ABS LzmaDec.c + 163: 0000000000000000 0 FILE LOCAL DEFAULT ABS crc16.c + 162: 0000000000000000 0 FILE LOCAL DEFAULT ABS cv_usb.c + 150: 0000000000000000 0 FILE LOCAL DEFAULT ABS dwc2_udc_otg_xfer_dma.c + 124: 0000000000000000 0 FILE LOCAL DEFAULT ABS dwc2_udc_otg.c + 48: 0000000000000000 0 FILE LOCAL DEFAULT ABS usb_tty.c + 47: 0000000000000000 0 FILE LOCAL DEFAULT ABS cps_cvi.c + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS decompress.c + 36: 0000000000000000 0 FILE LOCAL DEFAULT ABS bl2_main.c + 35: 0000000000000000 0 FILE LOCAL DEFAULT ABS platform_device.c + 34: 0000000000000000 0 FILE LOCAL DEFAULT ABS strlen.c + 33: 0000000000000000 0 FILE LOCAL DEFAULT ABS strcmp.c + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS putchar.c + 31: 0000000000000000 0 FILE LOCAL DEFAULT ABS mem.c + 30: 0000000000000000 0 FILE LOCAL DEFAULT ABS misc.c + 29: 0000000000000000 0 FILE LOCAL DEFAULT ABS security.c + 28: 0000000000000000 0 FILE LOCAL DEFAULT ABS platform.c + 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS tf_printf.c + 25: 0000000000000000 0 FILE LOCAL DEFAULT ABS uart_dw.c + 23: 0000000000000000 0 FILE LOCAL DEFAULT ABS bl2_helper.c + 22: 0000000000000000 0 FILE LOCAL DEFAULT ABS delay_timer.c + 21: 0000000000000000 0 FILE LOCAL DEFAULT ABS cache.c + 20: 0000000000000000 0 FILE LOCAL DEFAULT ABS cpu_helper.c + 19: 000000003bc00144 0 NOTYPE LOCAL DEFAULT 1 die + 18: 000000003bc0012c 0 NOTYPE LOCAL DEFAULT 1 bss_clear + 17: 000000003bc00144 0 NOTYPE LOCAL DEFAULT 1 trap_vector + 16: 000000003bc00020 0 NOTYPE LOCAL DEFAULT 1 bl2_entrypoint_real + 15: 0000000000000000 0 FILE LOCAL DEFAULT ABS /root/.jenkins/workspace/ + 14: 0000000000000000 0 SECTION LOCAL DEFAULT 14 + 13: 0000000000000000 0 SECTION LOCAL DEFAULT 13 + 12: 0000000000000000 0 SECTION LOCAL DEFAULT 12 + 11: 0000000000000000 0 SECTION LOCAL DEFAULT 11 + 10: 0000000000000000 0 SECTION LOCAL DEFAULT 10 + 9: 0000000000000000 0 SECTION LOCAL DEFAULT 9 + 8: 0000000000000000 0 SECTION LOCAL DEFAULT 8 + 7: 0000000000000000 0 SECTION LOCAL DEFAULT 7 + 6: 0000000000000000 0 SECTION LOCAL DEFAULT 6 + 5: 0000000000000000 0 SECTION LOCAL DEFAULT 5 + 4: 000000003bc0d800 0 SECTION LOCAL DEFAULT 4 + 3: 000000003bc0b700 0 SECTION LOCAL DEFAULT 3 + 2: 000000003bc0b434 0 SECTION LOCAL DEFAULT 2 + 1: 000000003bc00000 0 SECTION LOCAL DEFAULT 1 + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND +Symbol table '.symtab' contains 397 entries: + Num: Value Size Type Bind Vis Ndx Name + diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_entrypoint.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_entrypoint.o new file mode 100644 index 000000000..5b15c11ca Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_entrypoint.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o new file mode 100644 index 000000000..10155fb51 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_helper.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o new file mode 100644 index 000000000..63bd556fe Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/bl2_main.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o new file mode 100644 index 000000000..3dd63bd26 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/build_message.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o new file mode 100644 index 000000000..8ca5a788c Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cache.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o new file mode 100644 index 000000000..7c48d860c Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cps_cvi.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o new file mode 100644 index 000000000..ec547a190 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cpu_helper.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o new file mode 100644 index 000000000..c8f34d3a3 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/crc16.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o new file mode 100644 index 000000000..b21b9c009 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cv_usb.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o new file mode 100644 index 000000000..469de3283 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o new file mode 100644 index 000000000..df60916d2 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/cvx16_pinmux.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o new file mode 100644 index 000000000..861f214b3 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o new file mode 100644 index 000000000..72822eb6f Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_patch_regs.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o new file mode 100644 index 000000000..0d264c3d5 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_pkg_info.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o new file mode 100644 index 000000000..33a08bcbd Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o new file mode 100644 index 000000000..202022efa Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o new file mode 100644 index 000000000..92fda5ec5 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/ddrc_init.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o new file mode 100644 index 000000000..58526a4a2 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/decompress.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o new file mode 100644 index 000000000..76ebb8752 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/delay_timer.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o new file mode 100644 index 000000000..0e4cd5d3a Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o new file mode 100644 index 000000000..3c2e762dd Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o new file mode 100644 index 000000000..7f34e7cf0 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/lz4_all.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o new file mode 100644 index 000000000..08e4f90b6 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/mem.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o new file mode 100644 index 000000000..030743c93 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o new file mode 100644 index 000000000..87e4f7b57 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/misc_helpers.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o new file mode 100644 index 000000000..9e9abcfe4 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_init.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o new file mode 100644 index 000000000..8aade1790 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/phy_pll_init.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o new file mode 100644 index 000000000..07aec2be1 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o new file mode 100644 index 000000000..864786aea Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/platform_device.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o new file mode 100644 index 000000000..b1cdc4d6b Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/putchar.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o new file mode 100644 index 000000000..bca52685a Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/security.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o new file mode 100644 index 000000000..dd8f41302 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strchr.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o new file mode 100644 index 000000000..1660fd445 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strcmp.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o new file mode 100644 index 000000000..260f95a40 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strlen.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o new file mode 100644 index 000000000..95435309e Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strncmp.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o new file mode 100644 index 000000000..d247c14da Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/strnlen.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o new file mode 100644 index 000000000..579d6a2f1 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/tf_printf.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o new file mode 100644 index 000000000..1e9b5ff92 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/uart_dw.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o new file mode 100644 index 000000000..d68392196 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/usb_tty.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o new file mode 100644 index 000000000..2c540132d Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/bl2/xxhash.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros.bin b/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros.bin new file mode 100755 index 000000000..c9902e4a9 --- /dev/null +++ b/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros.bin @@ -0,0 +1 @@ +ï¾­Þ \ No newline at end of file diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros.env b/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros.env new file mode 100644 index 000000000..cff9e1110 --- /dev/null +++ b/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros.env @@ -0,0 +1,2 @@ +MONITOR_RUNADDR=0x0000000080000000 +BLCP_2ND_RUNADDR=0x0000000083f40000 diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/blmacros.dis b/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/blmacros.dis new file mode 100644 index 000000000..43137e42b --- /dev/null +++ b/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/blmacros.dis @@ -0,0 +1,24 @@ + +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/blmacros.elf: file format elf64-littleriscv +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/blmacros.elf +architecture: riscv:rv64, flags 0x00000112: +EXEC_P, HAS_SYMS, D_PAGED +start address 0x0000000000000000 + +Program Header: + LOAD off 0x0000000000001000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**12 + filesz 0x0000000000000004 memsz 0x0000000000000004 flags r-- + STACK off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**4 + filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw- + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000004 0000000000000000 0000000000000000 00001000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA +SYMBOL TABLE: +0000000000000000 l d .text 0000000000000000 .text +0000000083f40000 g *ABS* 0000000000000000 DEF_BLCP_2ND_RUNADDR +0000000080000000 g *ABS* 0000000000000000 DEF_MONITOR_RUNADDR +0000000080000000 g *ABS* 0000000000000000 DEF_DRAM_BASE + + diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/blmacros.elf b/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/blmacros.elf new file mode 100755 index 000000000..e5027bece Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/blmacros.elf differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/blmacros.ld b/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/blmacros.ld new file mode 100644 index 000000000..44cdce7f4 --- /dev/null +++ b/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/blmacros.ld @@ -0,0 +1,10 @@ +SECTIONS +{ + .text : { + LONG(0xDEADBEEF); + *(*) + } + DEF_DRAM_BASE = 0x80000000; + DEF_MONITOR_RUNADDR = 0x80000000; + DEF_BLCP_2ND_RUNADDR = 0x83f40000; +} diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/blmacros.map b/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/blmacros.map new file mode 100644 index 000000000..fbae2cda8 --- /dev/null +++ b/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/blmacros.map @@ -0,0 +1,39 @@ + +Discarded input sections + + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/build_message.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/build_message.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/build_message.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/build_message.o + .rodata.build_message + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/build_message.o + .rodata.version_string + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/build_message.o + .debug_info 0x0000000000000000 0x89 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/build_message.o + .debug_abbrev 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/build_message.o + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/build_message.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/build_message.o + .debug_macro 0x0000000000000000 0x86e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/build_message.o + .debug_line 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/build_message.o + .debug_str 0x0000000000000000 0x29a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/build_message.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/build_message.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/build_message.o + +Memory Configuration + +Name Origin Length Attributes +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + +.text 0x0000000000000000 0x4 + 0x0000000000000000 0x4 LONG 0xdeadbeef + *(*) + 0x0000000080000000 DEF_DRAM_BASE = 0x80000000 + 0x0000000080000000 DEF_MONITOR_RUNADDR = 0x80000000 + 0x0000000083f40000 DEF_BLCP_2ND_RUNADDR = 0x83f40000 +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/build_message.o +OUTPUT(/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/blmacros.elf elf64-littleriscv) diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/blmacros.sym b/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/blmacros.sym new file mode 100644 index 000000000..9cfdf8696 --- /dev/null +++ b/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/blmacros.sym @@ -0,0 +1,8 @@ + 4: 0000000080000000 0 NOTYPE GLOBAL DEFAULT ABS DEF_DRAM_BASE + 3: 0000000080000000 0 NOTYPE GLOBAL DEFAULT ABS DEF_MONITOR_RUNADDR + 2: 0000000083f40000 0 NOTYPE GLOBAL DEFAULT ABS DEF_BLCP_2ND_RUNADDR + 1: 0000000000000000 0 SECTION LOCAL DEFAULT 1 + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND +Symbol table '.symtab' contains 5 entries: + Num: Value Size Type Bind Vis Ndx Name + diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/build_message.o b/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/build_message.o new file mode 100644 index 000000000..3dd63bd26 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/blmacros/build_message.o differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/chip_conf.bin b/fsbl/build/cv1800b_wevb_0008a_spinor/chip_conf.bin new file mode 100644 index 000000000..d2dabd686 Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/chip_conf.bin differ diff --git a/fsbl/build/cv1800b_wevb_0008a_spinor/fip.bin b/fsbl/build/cv1800b_wevb_0008a_spinor/fip.bin new file mode 100644 index 000000000..b650b1b8a Binary files /dev/null and b/fsbl/build/cv1800b_wevb_0008a_spinor/fip.bin differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2.bin b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2.bin new file mode 100755 index 000000000..fb48ac45b Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2.bin differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o new file mode 100644 index 000000000..aab3be327 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o new file mode 100644 index 000000000..010eef271 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2.dis b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2.dis new file mode 100644 index 000000000..c08665113 --- /dev/null +++ b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2.dis @@ -0,0 +1,14588 @@ + +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2.elf: file format elf64-littleriscv +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2.elf +architecture: riscv:rv64, flags 0x00000112: +EXEC_P, HAS_SYMS, D_PAGED +start address 0x000000003bc00000 + +Program Header: + LOAD off 0x0000000000001000 vaddr 0x000000003bc00000 paddr 0x000000003bc00000 align 2**12 + filesz 0x000000000000b700 memsz 0x0000000000013410 flags rwx + STACK off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**4 + filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw- + +Sections: +Idx Name Size VMA LMA File off Algn + 0 ro 0000b434 000000003bc00000 000000003bc00000 00001000 2**3 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 000002cc 000000003bc0b434 000000003bc0b434 0000c434 2**3 + CONTENTS, ALLOC, LOAD, DATA + 2 stacks 00002000 000000003bc0b700 000000003bc0b700 0000c700 2**0 + ALLOC + 3 .bss 00005c10 000000003bc0d800 000000003bc0d800 0000c700 2**9 + ALLOC + 4 .debug_info 00068732 0000000000000000 0000000000000000 0000c700 2**0 + CONTENTS, READONLY, DEBUGGING + 5 .debug_abbrev 00004de5 0000000000000000 0000000000000000 00074e32 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_aranges 00001e80 0000000000000000 0000000000000000 00079c20 2**4 + CONTENTS, READONLY, DEBUGGING + 7 .debug_macro 00009b13 0000000000000000 0000000000000000 0007baa0 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_line 00075d63 0000000000000000 0000000000000000 000855b3 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_str 0002394c 0000000000000000 0000000000000000 000fb316 2**0 + CONTENTS, READONLY, DEBUGGING + 10 .comment 0000001d 0000000000000000 0000000000000000 0011ec62 2**0 + CONTENTS, READONLY + 11 .debug_ranges 0002f790 0000000000000000 0000000000000000 0011ec7f 2**0 + CONTENTS, READONLY, DEBUGGING + 12 .debug_frame 000047b8 0000000000000000 0000000000000000 0014e410 2**3 + CONTENTS, READONLY, DEBUGGING + 13 .debug_loc 000c12a0 0000000000000000 0000000000000000 00152bc8 2**0 + CONTENTS, READONLY, DEBUGGING +SYMBOL TABLE: +000000003bc00000 l d ro 0000000000000000 ro +000000003bc0b434 l d .data 0000000000000000 .data +000000003bc0b700 l d stacks 0000000000000000 stacks +000000003bc0d800 l d .bss 0000000000000000 .bss +0000000000000000 l d .debug_info 0000000000000000 .debug_info +0000000000000000 l d .debug_abbrev 0000000000000000 .debug_abbrev +0000000000000000 l d .debug_aranges 0000000000000000 .debug_aranges +0000000000000000 l d .debug_macro 0000000000000000 .debug_macro +0000000000000000 l d .debug_line 0000000000000000 .debug_line +0000000000000000 l d .debug_str 0000000000000000 .debug_str +0000000000000000 l d .comment 0000000000000000 .comment +0000000000000000 l d .debug_ranges 0000000000000000 .debug_ranges +0000000000000000 l d .debug_frame 0000000000000000 .debug_frame +0000000000000000 l d .debug_loc 0000000000000000 .debug_loc +0000000000000000 l df *ABS* 0000000000000000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_entrypoint.o +000000003bc00020 l ro 0000000000000000 bl2_entrypoint_real +000000003bc00144 l ro 0000000000000000 trap_vector +000000003bc0012c l ro 0000000000000000 bss_clear +000000003bc00144 l ro 0000000000000000 die +0000000000000000 l df *ABS* 0000000000000000 cpu_helper.c +0000000000000000 l df *ABS* 0000000000000000 cache.c +0000000000000000 l df *ABS* 0000000000000000 delay_timer.c +0000000000000000 l df *ABS* 0000000000000000 bl2_helper.c +000000003bc132c8 l O .bss 0000000000000030 fw_dynamic_info +0000000000000000 l df *ABS* 0000000000000000 uart_dw.c +0000000000000000 l df *ABS* 0000000000000000 tf_printf.c +000000003bc002d6 l F ro 0000000000000082 unsigned_num_print +0000000000000000 l df *ABS* 0000000000000000 platform.c +0000000000000000 l df *ABS* 0000000000000000 security.c +0000000000000000 l df *ABS* 0000000000000000 misc.c +0000000000000000 l df *ABS* 0000000000000000 mem.c +0000000000000000 l df *ABS* 0000000000000000 putchar.c +0000000000000000 l df *ABS* 0000000000000000 strcmp.c +0000000000000000 l df *ABS* 0000000000000000 strlen.c +0000000000000000 l df *ABS* 0000000000000000 platform_device.c +0000000000000000 l df *ABS* 0000000000000000 bl2_main.c +000000003bc00c06 l F ro 000000000000001a read_time_ms +000000003bc0d800 l O .bss 0000000000001000 fip_param2 +000000003bc0e800 l O .bss 0000000000004000 sram_union_buf +0000000000000000 l df *ABS* 0000000000000000 decompress.c +000000003bc014b6 l F ro 0000000000000002 SzFree +000000003bc014b8 l F ro 0000000000000042 SzAlloc +000000003bc132f8 l O .bss 0000000000000008 comp_alloc_buf +000000003bc13300 l O .bss 0000000000000008 comp_alloc_size +000000003bc0a788 l O ro 0000000000000008 __func__.0 +000000003bc0a790 l O ro 0000000000000010 __func__.1 +0000000000000000 l df *ABS* 0000000000000000 cps_cvi.c +0000000000000000 l df *ABS* 0000000000000000 usb_tty.c +000000003bc01748 l F ro 0000000000000002 resume +000000003bc0174a l F ro 0000000000000038 requestMemAlloc +000000003bc01782 l F ro 0000000000000002 requestMemFree +000000003bc01784 l F ro 000000000000001c acm_complete_set_line_coding +000000003bc017a0 l F ro 0000000000000014 reset +000000003bc017b4 l F ro 000000000000002e disconnect +000000003bc017e2 l F ro 0000000000000026 unbind +000000003bc01808 l F ro 0000000000000042 bind +000000003bc0184a l F ro 0000000000000052 get_unicode_string +000000003bc0189c l F ro 0000000000000234 bulkOutCmpl +000000003bc01b56 l F ro 0000000000000050 bulkInCmpl +000000003bc01ad0 l F ro 000000000000005c getDescAcm +000000003bc01b2c l F ro 000000000000002a reqComplete +000000003bc01ba6 l F ro 0000000000000442 setup +000000003bc01fe8 l F ro 0000000000000002 suspend +000000003bc13404 l O .bss 0000000000000001 ack_idx.6 +000000003bc13310 l O .bss 0000000000000008 bulkBuf +000000003bc13318 l O .bss 0000000000000008 bulkInReq +000000003bc13320 l O .bss 0000000000000008 bulkOutReq +000000003bc13328 l O .bss 0000000000000008 cmdBuf +000000003bc13406 l O .bss 0000000000000001 configBreak +000000003bc13407 l O .bss 0000000000000001 configValue +000000003bc13330 l O .bss 0000000000000008 ep0Buff +000000003bc13338 l O .bss 0000000000000008 ep0Req +000000003bc13340 l O .bss 0000000000000008 epIn +000000003bc13348 l O .bss 0000000000000008 epOut +000000003bc13350 l O .bss 0000000000000008 fip_buf +000000003bc133e0 l O .bss 0000000000000004 fip_tx_offset +000000003bc133e4 l O .bss 0000000000000004 fip_tx_size +000000003bc13408 l O .bss 0000000000000001 flagEnterDL +000000003bc13409 l O .bss 0000000000000001 flagReboot +000000003bc1340a l O .bss 0000000000000001 is_serial_patched.3 +000000003bc1340b l O .bss 0000000000000001 mem_alloc_cnt +000000003bc13358 l O .bss 000000000000001c productDesc +000000003bc13378 l O .bss 0000000000000010 serial.2 +000000003bc13388 l O .bss 000000000000001c serialDesc +000000003bc133e8 l O .bss 0000000000000004 transfer_size +000000003bc133ec l O .bss 0000000000000004 ts +000000003bc133a8 l O .bss 0000000000000010 vendorDesc +000000003bc0b448 l O .data 0000000000000009 ConfDesc +000000003bc0b458 l O .data 0000000000000008 acm_buf +000000003bc0b460 l O .data 0000000000000005 acm_call_mgmt_descriptor +000000003bc0b468 l O .data 0000000000000009 acm_control_interface_desc +000000003bc0b478 l O .data 0000000000000009 acm_data_interface_desc +000000003bc0b488 l O .data 0000000000000004 acm_descriptor +000000003bc0b490 l O .data 0000000000000007 acm_fs_in_desc +000000003bc0b498 l O .data 0000000000000007 acm_fs_notify_desc +000000003bc0b4a0 l O .data 0000000000000007 acm_fs_out_desc +000000003bc0b4a8 l O .data 0000000000000005 acm_header_desc +000000003bc0b4b0 l O .data 0000000000000007 acm_hs_in_desc +000000003bc0b4b8 l O .data 0000000000000007 acm_hs_notify_desc +000000003bc0b4c0 l O .data 0000000000000007 acm_hs_out_desc +000000003bc0b4c8 l O .data 0000000000000005 acm_union_desc +000000003bc0b4d0 l O .data 0000000000000005 bosDesc +000000003bc0b4d8 l O .data 0000000000000008 bulkBufAlloc +000000003bc0b4e0 l O .data 0000000000000007 capabilityExtDesc +000000003bc0b4e8 l O .data 0000000000000008 cb0_buf +000000003bc0b4f0 l O .data 0000000000000008 cb1_buf +000000003bc0b4f8 l O .data 0000000000000008 cb2_buf +000000003bc0b500 l O .data 0000000000000008 cmdBufAlloc +000000003bc0b508 l O .data 0000000000000050 descriptorsFs +000000003bc0b558 l O .data 0000000000000050 descriptorsHs +000000003bc0b5a8 l O .data 0000000000000012 devHsDesc +000000003bc0b5c0 l O .data 0000000000000050 drv_obj +000000003bc0b610 l O .data 0000000000000008 ep0BuffAlloc +000000003bc0b618 l O .data 0000000000000058 g_driver +000000003bc0b670 l O .data 0000000000000008 handler +000000003bc0b678 l O .data 0000000000000004 languageDesc +000000003bc0b680 l O .data 000000000000000a qualifierDesc +000000003bc0b690 l O .data 0000000000000008 rsp_buf +000000003bc0b698 l O .data 0000000000000008 setup_buf +000000003bc0ab80 l O ro 0000000000000005 __func__.0 +000000003bc0ab88 l O ro 0000000000000007 __func__.1 +000000003bc0ab90 l O ro 000000000000000b __func__.4 +000000003bc0aba0 l O ro 0000000000000006 __func__.5 +0000000000000000 l df *ABS* 0000000000000000 dwc2_udc_otg.c +000000003bc0274e l F ro 0000000000000016 dwc2_fifo_status +000000003bc02764 l F ro 000000000000003a dwc2_free_request +000000003bc0279e l F ro 0000000000000048 pullup +000000003bc027e6 l F ro 0000000000000038 dwc2_alloc_request +000000003bc0281e l F ro 00000000000000a0 dwc2_ep_enable +000000003bc028be l F ro 0000000000000002 dwc2_fifo_flush +000000003bc02952 l F ro 0000000000000054 dwc2_dequeue +000000003bc02ab4 l F ro 000000000000003c wakeup +000000003bc02b36 l F ro 0000000000000090 dwc2_hsotg_txfifo_flush.constprop.0 +000000003bc02bc6 l F ro 000000000000005e kill_all_requests.isra.0 +000000003bc02c7a l F ro 00000000000000da dwc2_hsotg_init_fifo.constprop.0 +000000003bc02d54 l F ro 00000000000001a6 _dwc2_ep_disable.isra.0 +000000003bc02efa l F ro 0000000000000020 dwc2_ep_disable +000000003bc0b6a0 l O .data 0000000000000050 dwc2_ep_ops +000000003bc0ad90 l O ro 0000000000000012 __func__.0 +000000003bc0ada8 l O ro 0000000000000011 __func__.1 +000000003bc0adc0 l O ro 0000000000000013 __func__.2 +000000003bc0add8 l O ro 0000000000000018 __func__.3 +000000003bc0adf0 l O ro 0000000000000015 __func__.4 +000000003bc0ae08 l O ro 0000000000000009 driver_name +000000003bc0ae18 l O ro 0000000000000048 dwc2_udc_ops +000000003bc0ae60 l O ro 000000000000000c ep0name +000000003bc0ae70 l O ro 000000000000000b ep1name +000000003bc0ae80 l O ro 000000000000000c ep2name +000000003bc0ae90 l O ro 000000000000000a ep3name +0000000000000000 l df *ABS* 0000000000000000 dwc2_udc_otg_xfer_dma.c +000000003bc034ac l F ro 000000000000008e set_max_pktsize +000000003bc0353a l F ro 000000000000005e dwc2_udc_ep_clear_stall +000000003bc03598 l F ro 0000000000000062 dwc2_udc_ep_set_stall +000000003bc035fa l F ro 0000000000000080 dwc2_ep0_complete_out +000000003bc0367a l F ro 000000000000007e dwc2_udc_ep0_zlp +000000003bc036f8 l F ro 0000000000000068 dwc2_udc_ep0_set_stall.isra.0 +000000003bc03760 l F ro 00000000000000aa setdma_rx.isra.0 +000000003bc0380a l F ro 00000000000000fc complete_rx +000000003bc03960 l F ro 000000000000015c setdma_tx +000000003bc0b6f0 l O .data 0000000000000004 ep0_fifo_size +000000003bc0b6f4 l O .data 0000000000000004 ep_fifo_size +0000000000000000 l df *ABS* 0000000000000000 cv_usb.c +0000000000000000 l df *ABS* 0000000000000000 crc16.c +000000003bc0af18 l O ro 0000000000000200 crc16_tab +0000000000000000 l df *ABS* 0000000000000000 LzmaDec.c +000000003bc04738 l F ro 0000000000000072 LzmaDec_WriteRem +000000003bc047aa l F ro 000000000000138a LzmaDec_DecodeReal2 +000000003bc05b34 l F ro 00000000000004e8 LzmaDec_TryDummy +000000003bc062c8 l F ro 0000000000000066 LzmaDec_AllocateProbs2.isra.0 +0000000000000000 l df *ABS* 0000000000000000 lz4_all.c +000000003bc06452 l F ro 0000000000000024 LZ4F_readLE32 +000000003bc06476 l F ro 0000000000000276 LZ4_decompress_safe_withSmallPrefix +000000003bc066ec l F ro 0000000000000110 LZ4F_updateDict +000000003bc0703a l F ro 00000000000001a4 LZ4F_decodeHeader +000000003bc0b158 l O ro 0000000000000020 blockSizes.0 +000000003bc0b178 l O ro 0000000000000020 dec64table +000000003bc0b198 l O ro 0000000000000020 inc32table +0000000000000000 l df *ABS* 0000000000000000 xxhash.c +000000003bc079ea l F ro 000000000000002c XXH32_avalanche +000000003bc07a16 l F ro 0000000000000016 XXH_read32 +000000003bc07a2c l F ro 000000000000033a XXH32_finalize.constprop.0 +0000000000000000 l df *ABS* 0000000000000000 ddr.c +0000000000000000 l df *ABS* 0000000000000000 ddr_pkg_info.c +0000000000000000 l df *ABS* 0000000000000000 ddr_sys_bring_up.c +0000000000000000 l df *ABS* 0000000000000000 ddr_sys.c +0000000000000000 l df *ABS* 0000000000000000 phy_pll_init.c +0000000000000000 l df *ABS* 0000000000000000 cvx16_pinmux.c +0000000000000000 l df *ABS* 0000000000000000 cvx16_dram_cap_check.c +0000000000000000 l df *ABS* 0000000000000000 ddrc_init.c +0000000000000000 l df *ABS* 0000000000000000 phy_init.c +0000000000000000 l df *ABS* 0000000000000000 +000000003bc083f6 g F ro 000000000000000a get_ddr_vendor +000000003bc001b4 g F ro 000000000000000a mdelay +000000003bc08400 g F ro 0000000000000050 axi_mon_start_all +000000003bc0215c g F ro 0000000000000006 AcmIsr +000000003bc13400 g O .bss 0000000000000004 tar_freq +000000003bc0b440 g O .data 0000000000000008 time_records +0000000004400100 g *ABS* 0000000000000000 p_rom_api_cryptodma_aes_decrypt +000000003bc133f8 g O .bss 0000000000000004 freq_in +000000003bc00d30 g F ro 00000000000000ae load_ddr_param +000000003bc0a010 g O ro 0000000000000010 version_string +0000000004400080 g *ABS* 0000000000000000 p_rom_api_flash_init +000000003bc00994 g F ro 0000000000000004 dec_verify_image +000000003bc03c9e g F ro 00000000000000b2 dwc2_udc_ep_activate +000000003bc00aec g F ro 0000000000000052 putchar_l +000000003bc01610 g F ro 0000000000000002 LZ4_free +000000003bc045d6 g F ro 0000000000000018 dwc2_ep0_kick +0000000004400020 g *ABS* 0000000000000000 p_rom_api_get_boot_src +000000003bc03906 g F ro 0000000000000016 dwc2_udc_pre_setup +000000003bc00292 g F ro 0000000000000002 jump_to_loader_2nd +000000003bc0021a g F ro 0000000000000078 jump_to_monitor +000000003bc13280 g O .bss 0000000000000010 rsp_bufArr +000000003bc133d8 g O .bss 0000000000000008 reg_step +000000003bc133b8 g O .bss 0000000000000008 reg +000000003bc03b4c g F ro 0000000000000048 dwc2_set_address +000000003bc00acc g F ro 0000000000000020 memmove +000000003bc08674 g F ro 000000000000004e cvx16_bist_wr_prbs_init +000000003bc12880 g O .bss 0000000000000200 bulkBufAllocArr +000000003bc067fc g F ro 000000000000026e LZ4_decompress_safe +000000003bc13405 g O .bss 0000000000000001 acm_configValue +000000003bc08c5a g F ro 0000000000000044 cvx16_ddr_phy_power_on_seq1 +000000003bc06030 g F ro 000000000000027c LzmaDec_DecodeToDic +000000003bc08722 g F ro 0000000000000046 cvx16_bist_rdglvl_init +000000003bc09ff0 g O ro 000000000000001a build_message +000000003bc0921e g F ro 0000000000000182 cvx16_wdqlvl_req +000000003bc0b440 g .data 0000000000000000 __DATA_START__ +000000003bc004f2 g F ro 00000000000000c8 __system_reset +000000003bc00834 g F ro 0000000000000044 switch_rtc_mode_2nd_stage +000000003bc01338 g F ro 00000000000000e6 load_rest +000000003bc04706 g F ro 0000000000000032 crc16_ccitt +000000003bc08d72 g F ro 0000000000000028 cvx16_set_dfi_init_complete +000000003bc08d20 g F ro 0000000000000038 cvx16_wait_for_dfi_init_complete +000000003bc03b00 g F ro 000000000000004c dwc2_write_fifo_ep0 +000000003bc12b00 g O .bss 0000000000000080 cb1_bufArr +000000003bc08e4a g F ro 0000000000000002 cvx16_wrlvl_req +000000003bc02af0 g F ro 0000000000000046 dwc2_hsotg_wait_bit_set +000000003bc090ae g F ro 0000000000000170 cvx16_rdlvl_req +000000003bc00a6c g F ro 0000000000000060 memcpy +000000003bc08852 g F ro 00000000000000b0 cvx16_bist_wdqlvl_init +000000003bc028c2 g F ro 000000000000000a dwc2_get_ep0_name +000000003bc02a90 g F ro 0000000000000024 dwc2_hsotg_clear_bit +000000003bc03bbc g F ro 0000000000000040 dwc2_ep0_write +000000003bc028c0 g F ro 0000000000000002 dwc2_log_write +000000003bc02a6e g F ro 0000000000000022 dwc2_hsotg_set_bit +000000003bc132c0 g O .bss 0000000000000008 setup_bufArr +000000003bc099c8 g F ro 000000000000002e ctrl_init_low_patch +000000003bc0601c g F ro 0000000000000014 LzmaDec_Init +000000003bc0100a g F ro 0000000000000126 load_monitor +000000003bc1340f g O .bss 0000000000000001 pkg +000000003bc0d700 g stacks 0000000000000000 __STACKS_END__ +000000003bc08b4c g F ro 0000000000000016 cvx16_clk_div40 +000000003bc005ba g F ro 0000000000000032 panic_handler +000000003bc029a6 g F ro 000000000000002e dwc2_nuke +000000003bc001e2 g F ro 000000000000002a get_random_from_timer +000000003bc0979a g F ro 0000000000000002 cvx16_dram_cap_check +000000003bc08962 g F ro 000000000000006a cvx16_bist_start_check +000000003bc133fc g O .bss 0000000000000004 mod_freq +000000003bc00b6c g F ro 000000000000007c gpio_in_value +00000000044000e0 g *ABS* 0000000000000000 p_rom_api_verify_rsa +000000003bc093a0 g F ro 000000000000001a cvx16_en_rec_vol_mode +000000003bc0020c g F ro 000000000000000e read_count_tick +000000003bc08f78 g F ro 0000000000000070 cvx16_clk_gating_enable +000000003bc016c0 g F ro 000000000000007e decompress +000000003bc086c2 g F ro 0000000000000060 cvx16_bist_wr_sram_init +0000000000005c10 g *ABS* 0000000000000000 __BSS_SIZE__ +000000003bc001be g F ro 0000000000000024 get_timer +000000003bc08ce6 g F ro 000000000000003a cvx16_ddr_phy_power_on_seq3 +000000003bc031a8 g F ro 0000000000000156 usb_gadget_register_driver +000000003bc002a4 g F ro 000000000000001e console_putc +000000003bc133f0 g O .bss 0000000000000004 rddata +000000003bc08b62 g F ro 00000000000000f8 cvx16_chg_pll_freq +000000003bc00294 g F ro 0000000000000010 _uart_putc +000000003bc00156 g F ro 0000000000000024 flush_dcache_range +000000003bc12a80 g O .bss 0000000000000080 cb0_bufArr +000000003bc0068e g F ro 000000000000018e sys_pll_nd +000000003bc00832 g F ro 0000000000000002 switch_rtc_mode_1st_stage +000000003bc00878 g F ro 00000000000000bc set_rtc_en_registers +000000003bc00c60 g F ro 00000000000000d0 load_param2 +000000003bc0720e g F ro 00000000000007dc LZ4F_decompress +000000003bc09460 g F ro 000000000000033a cvx16_pinmux +000000003bc08a72 g F ro 0000000000000068 cvx16_dll_cal +000000003bc02162 g F ro 0000000000000138 acm_app_init +000000003bc022d6 g F ro 0000000000000478 AcmApp +000000003bc08f2e g F ro 000000000000004a cvx16_clk_gating_disable +000000003bc071de g F ro 0000000000000030 LZ4F_createDecompressionContext +000000003bc0173e g F ro 0000000000000006 DWC2_UncachedRead32 +000000003bc022a6 g F ro 0000000000000030 get_usb_polling_timeout_value +000000003bc03b94 g F ro 0000000000000028 dwc2_ep0_read +000000003bc12e00 g O .bss 0000000000000080 ep0BuffAllocArr +000000003bc03460 g F ro 000000000000004c usb_gadget_handle_interrupts +000000003bc13410 g .bss 0000000000000000 __BL2_END__ +000000003bc08c9e g F ro 0000000000000048 cvx16_ddr_phy_power_on_seq2 +000000003bc08d9a g F ro 000000000000002c cvx16_INT_ISR_08 +000000003bc06cd4 g F ro 0000000000000316 LZ4_decompress_safe_forceExtDict +000000003bc01fea g F ro 00000000000000a2 convert_buf_addr +000000003bc06378 g F ro 0000000000000030 LzmaDec_AllocateProbs +000000003bc08e92 g F ro 000000000000009c cvx16_pll_init +000000003bc0141e g F ro 0000000000000098 bl2_main +000000003bc0b700 g .data 0000000000000000 __DATA_END__ +000000003bc062ac g F ro 000000000000001c LzmaDec_FreeProbs +000000003bc014fa g F ro 00000000000000e8 decompress_lzma +000000003bc0017a g F ro 0000000000000010 trig_simulation_timer +000000003bc08902 g F ro 0000000000000060 cvx16_bist_wdmlvl_init +000000003bc0018a g F ro 000000000000002a udelay +000000003bc08d58 g F ro 000000000000001a cvx16_polling_dfi_init_start +000000003bc02912 g F ro 0000000000000040 dwc2_done +000000003bc08768 g F ro 00000000000000ea cvx16_bist_rdlvl_init +000000003bc1340e g O .bss 0000000000000001 ddr_vendor +00000000044000a0 g *ABS* 0000000000000000 p_rom_api_image_crc +000000003bc00c20 g F ro 0000000000000040 load_image_by_usb +000000003bc00000 g ro 0000000000000000 bl2_entrypoint +000000003bc01130 g F ro 0000000000000208 load_loader_2nd +000000003bc02c24 g F ro 0000000000000056 dwc2_disconnect +000000003bc03310 g F ro 0000000000000150 dwc2_udc_probe +000000003bc00934 g F ro 0000000000000060 init_comm_info +000000003bc133f4 g O .bss 0000000000000004 dev_freq +000000003bc045ee g F ro 00000000000000d8 dwc2_queue +000000003bc00680 g F ro 000000000000000e sys_switch_all_to_pll +000000003bc13410 g .bss 0000000000000000 __BSS_END__ +000000003bc081c8 g F ro 000000000000022e read_ddr_pkg_info +000000003bc12800 g O .bss 0000000000000080 acm_bufArr +0000000004400040 g *ABS* 0000000000000000 p_rom_api_set_boot_src +000000003bc0632e g F ro 000000000000004a LzmaProps_Decode +000000003bc08e4c g F ro 0000000000000020 cvx16_setting_check +000000003bc00ea4 g F ro 0000000000000166 load_blcp_2nd +000000003bc133d0 g O .bss 0000000000000008 reg_span +000000003bc08ada g F ro 000000000000005c cvx16_clk_normal +000000003bc0229a g F ro 000000000000000c usb_vbus_det +000000003bc00a12 g F ro 000000000000005a memset +000000003bc03c3c g F ro 0000000000000062 dwc2_udc_set_halt +000000003bc07f82 g F ro 00000000000001d2 XXH32_update +000000003bc0a170 g O ro 0000000000000025 hex2ascii_data +000000003bc099f6 g F ro 000000000000021c ctrl_init_update_by_dram_size +000000003bc03d50 g F ro 0000000000000346 dwc2_handle_ep0 +000000003bc00b3e g F ro 000000000000001c strcmp +000000003bc07f2c g F ro 0000000000000056 XXH32_reset +000000003bc07d66 g F ro 00000000000001c6 XXH32 +000000003bc089cc g F ro 00000000000000a6 cvx16_rdvld_train +000000003bc0979c g F ro 00000000000001fe ddrc_init +000000003bc06a6a g F ro 000000000000026a LZ4_decompress_safe_withPrefix64k +000000003bc00358 g F ro 000000000000019a tf_printf +000000003bc029d4 g F ro 000000000000009a usb_gadget_unregister_driver +000000003bc015e8 g F ro 0000000000000028 LZ4_calloc +000000003bc002c2 g F ro 0000000000000014 console_flush +000000003bc0208c g F ro 00000000000000d0 print_buf_addr +000000003bc0b434 g ro 0000000000000000 __RO_END__ +000000003bc12b80 g O .bss 0000000000000080 cb2_bufArr +0000000004400060 g *ABS* 0000000000000000 p_rom_api_load_image +000000003bc07010 g F ro 000000000000000c LZ4F_isError +000000003bc0d800 g .bss 0000000000000000 __BSS_START__ +000000003bc03bfc g F ro 0000000000000040 dwc2_udc_set_nak +000000003bc00000 g ro 0000000000000000 __RO_START__ +000000003bc08fe8 g F ro 00000000000000c6 cvx16_rdglvl_req +000000003bc032fe g F ro 0000000000000012 dwc2_phy_to_log_ep +000000003bc00998 g F ro 000000000000007a ntostr +000000003bc046c6 g F ro 0000000000000040 usb_polling +000000003bc08dc6 g F ro 000000000000001c cvx16_polling_synp_normal_mode +000000003bc06fea g F ro 0000000000000026 LZ4_decompress_safe_usingDict +000000003bc015e2 g F ro 0000000000000006 LZ4_malloc +000000003bc093ba g F ro 0000000000000022 ctrl_init_detect_dram_size +00000000044000c0 g *ABS* 0000000000000000 p_rom_api_get_number_of_retries +000000003bc0014c g F ro 000000000000000a sync_cache +000000003bc00636 g F ro 000000000000004a setup_dl_flag +000000003bc005ec g F ro 000000000000004a reset_c906l +000000003bc133c8 g O .bss 0000000000000008 reg_set +000000003bc063a8 g F ro 00000000000000aa LzmaDecode +000000003bc00be8 g F ro 000000000000001e usb_id_det +000000003bc0b700 g stacks 0000000000000000 __STACKS_START__ +000000003bc0b6f8 g O .data 0000000000000002 cv_usb_vid +000000003bc0081c g F ro 0000000000000016 sys_pll_init +000000003bc03abc g F ro 0000000000000044 dwc2_ep_fifo_read +000000003bc0b6fc g O .data 0000000000000004 ddr_data_rate +000000003bc12e80 g O .bss 0000000000000400 handlerArr +000000003bc08de2 g F ro 0000000000000068 cvx16_dfi_ca_park_prbs +000000003bc04096 g F ro 0000000000000540 dwc2_udc_irq +000000003bc12c00 g O .bss 0000000000000200 cmdBufAllocArr +000000003bc00b5a g F ro 0000000000000012 strlen +000000003bc1340d g O .bss 0000000000000001 ddr_type +000000003bc08450 g F ro 0000000000000224 ddr_sys_bring_up +000000003bc08154 g F ro 0000000000000040 XXH32_digest +000000003bc08194 g F ro 0000000000000034 ddr_init +000000003bc0391c g F ro 0000000000000044 dwc2_ep_fifo_write +000000003bc01612 g F ro 00000000000000ae decompress_lz4 +000000003bc0701c g F ro 000000000000001e LZ4F_getBlockSize +000000003bc1340c g O .bss 0000000000000001 ddr_capacity +000000003bc13308 g O .bss 0000000000000008 acm +000000003bc01744 g F ro 0000000000000004 DWC2_UncachedWrite32 +000000003bc133c0 g O .bss 0000000000000008 the_controller +000000003bc08e6c g F ro 0000000000000026 cvx16_set_dfi_init_start +000000003bc0999a g F ro 000000000000002e ctrl_init_high_patch +000000003bc00dde g F ro 00000000000000c6 load_ddr +000000003bc028cc g F ro 0000000000000046 udc_reinit +000000003bc08b36 g F ro 0000000000000016 cvx16_clk_div2 +000000003bc09c12 g F ro 00000000000003da phy_init +000000003bc093dc g F ro 0000000000000084 pll_init +000000003bc02f1a g F ro 000000000000028e dwc2_reconfig_usbd + + + +Disassembly of section ro: + +000000003bc00000 <__RO_START__>: + 3bc00000: 0200006f j 3bc00020 + ... + +000000003bc00020 : + 3bc00020: 05900e1b addiw t3,zero,89 + 3bc00024: 019e1e13 slli t3,t3,0x19 + 3bc00028: 03000eb7 lui t4,0x3000 + 3bc0002c: 084e8e9b addiw t4,t4,132 + 3bc00030: 01cea023 sw t3,0(t4) # 3000000 <__BSS_SIZE__+0x2ffa3f0> + 3bc00034: 00000093 li ra,0 + 3bc00038: 00000113 li sp,0 + 3bc0003c: 00000193 li gp,0 + 3bc00040: 00000213 li tp,0 + 3bc00044: 00000293 li t0,0 + 3bc00048: 00000313 li t1,0 + 3bc0004c: 00000393 li t2,0 + 3bc00050: 00000413 li s0,0 + 3bc00054: 00000493 li s1,0 + 3bc00058: 00000513 li a0,0 + 3bc0005c: 00000593 li a1,0 + 3bc00060: 00000613 li a2,0 + 3bc00064: 00000693 li a3,0 + 3bc00068: 00000713 li a4,0 + 3bc0006c: 00000793 li a5,0 + 3bc00070: 00000813 li a6,0 + 3bc00074: 00000893 li a7,0 + 3bc00078: 00000913 li s2,0 + 3bc0007c: 00000993 li s3,0 + 3bc00080: 00000a13 li s4,0 + 3bc00084: 00000a93 li s5,0 + 3bc00088: 00000b13 li s6,0 + 3bc0008c: 00000b93 li s7,0 + 3bc00090: 00000c13 li s8,0 + 3bc00094: 00000c93 li s9,0 + 3bc00098: 00000d13 li s10,0 + 3bc0009c: 00000d93 li s11,0 + 3bc000a0: 00000e13 li t3,0 + 3bc000a4: 00000e93 li t4,0 + 3bc000a8: 00000f13 li t5,0 + 3bc000ac: 00000f93 li t6,0 + 3bc000b0: 34001073 csrw mscratch,zero + 3bc000b4: 00000297 auipc t0,0x0 + 3bc000b8: 09028293 addi t0,t0,144 # 3bc00144 + 3bc000bc: 30529073 csrw mtvec,t0 + 3bc000c0: 000181b7 lui gp,0x18 + 3bc000c4: 0c71819b addiw gp,gp,199 + 3bc000c8: 00f19193 slli gp,gp,0xf + 3bc000cc: 7c019073 csrw mxstatus,gp + 3bc000d0: 702001b7 lui gp,0x70200 + 3bc000d4: ffc1819b addiw gp,gp,-4 + 3bc000d8: 00100213 li tp,1 + 3bc000dc: 0041a023 sw tp,0(gp) # 70200000 <__BL2_END__+0x345ecbf0> + 3bc000e0: 03300193 li gp,51 + 3bc000e4: 7c21b073 csrc mcor,gp + 3bc000e8: 01100193 li gp,17 + 3bc000ec: 7c21a073 csrs mcor,gp + 3bc000f0: 00100193 li gp,1 + 3bc000f4: 7c11a073 csrs mhcr,gp + 3bc000f8: 03300193 li gp,51 + 3bc000fc: 7c21b073 csrc mcor,gp + 3bc00100: 01200193 li gp,18 + 3bc00104: 7c21a073 csrs mcor,gp + 3bc00108: 00200193 li gp,2 + 3bc0010c: 7c11a073 csrs mhcr,gp + 3bc00110: 0000d117 auipc sp,0xd + 3bc00114: 5f010113 addi sp,sp,1520 # 3bc0d700 <__STACKS_END__> + 3bc00118: 0000d697 auipc a3,0xd + 3bc0011c: 6e868693 addi a3,a3,1768 # 3bc0d800 <__BSS_START__> + 3bc00120: 00013717 auipc a4,0x13 + 3bc00124: 2f070713 addi a4,a4,752 # 3bc13410 <__BL2_END__> + 3bc00128: 40d70733 sub a4,a4,a3 + +000000003bc0012c : + 3bc0012c: 0006b023 sd zero,0(a3) + 3bc00130: 00868693 addi a3,a3,8 + 3bc00134: ff870713 addi a4,a4,-8 + 3bc00138: fe071ae3 bnez a4,3bc0012c + 3bc0013c: 2e2010ef jal ra,3bc0141e + 3bc00140: 0040006f j 3bc00144 + +000000003bc00144 : + 3bc00144: 4760006f j 3bc005ba + 3bc00148: ffdff06f j 3bc00144 + +000000003bc0014c : + 3bc0014c: 0100000b icache.iall + 3bc00150: 01a0000b sync.i + 3bc00154: 8082 ret + +000000003bc00156 : + 3bc00156: 87aa mv a5,a0 + 3bc00158: 03f58593 addi a1,a1,63 + 3bc0015c: 95be add a1,a1,a5 + 3bc0015e: fc057513 andi a0,a0,-64 + 3bc00162: fc05f593 andi a1,a1,-64 + 3bc00166: 00b56563 bltu a0,a1,3bc00170 + 3bc0016a: 0190000b sync.s + 3bc0016e: 8082 ret + 3bc00170: 02b5000b dcache.cipa a0 + 3bc00174: 04050513 addi a0,a0,64 + 3bc00178: b7fd j 3bc00166 + +000000003bc0017a : + 3bc0017a: 47e5 li a5,25 + 3bc0017c: 02a787bb mulw a5,a5,a0 + 3bc00180: 03000737 lui a4,0x3000 + 3bc00184: 08f72423 sw a5,136(a4) # 3000088 <__BSS_SIZE__+0x2ffa478> + 3bc00188: 8082 ret + +000000003bc0018a : + 3bc0018a: c0102773 rdtime a4 + 3bc0018e: 47e5 li a5,25 + 3bc00190: 02a786bb mulw a3,a5,a0 + 3bc00194: fff74713 not a4,a4 + 3bc00198: 030007b7 lui a5,0x3000 + 3bc0019c: 2701 sext.w a4,a4 + 3bc0019e: 08d7a423 sw a3,136(a5) # 3000088 <__BSS_SIZE__+0x2ffa478> + 3bc001a2: c01027f3 rdtime a5 + 3bc001a6: fff7c793 not a5,a5 + 3bc001aa: 40f707bb subw a5,a4,a5 + 3bc001ae: fed7eae3 bltu a5,a3,3bc001a2 + 3bc001b2: 8082 ret + +000000003bc001b4 : + 3bc001b4: 3e800793 li a5,1000 + 3bc001b8: 02a7853b mulw a0,a5,a0 + 3bc001bc: b7f9 j 3bc0018a + +000000003bc001be : + 3bc001be: e519 bnez a0,3bc001cc + 3bc001c0: c0102573 rdtime a0 + 3bc001c4: fff54513 not a0,a0 + 3bc001c8: 2501 sext.w a0,a0 + 3bc001ca: 8082 ret + 3bc001cc: c01027f3 rdtime a5 + 3bc001d0: fff7c793 not a5,a5 + 3bc001d4: 9d1d subw a0,a0,a5 + 3bc001d6: 6799 lui a5,0x6 + 3bc001d8: 1a87879b addiw a5,a5,424 + 3bc001dc: 02f5553b divuw a0,a0,a5 + 3bc001e0: 8082 ret + +000000003bc001e2 : + 3bc001e2: e519 bnez a0,3bc001f0 + 3bc001e4: c0102573 rdtime a0 + 3bc001e8: fff54513 not a0,a0 + 3bc001ec: 2501 sext.w a0,a0 + 3bc001ee: 8082 ret + 3bc001f0: c01027f3 rdtime a5 + 3bc001f4: fff7c793 not a5,a5 + 3bc001f8: 9d1d subw a0,a0,a5 + 3bc001fa: 47e5 li a5,25 + 3bc001fc: 02f5553b divuw a0,a0,a5 + 3bc00200: 67e1 lui a5,0x18 + 3bc00202: 6a07879b addiw a5,a5,1696 + 3bc00206: 02f5753b remuw a0,a0,a5 + 3bc0020a: 8082 ret + +000000003bc0020c : + 3bc0020c: c0102573 rdtime a0 + 3bc00210: 47e5 li a5,25 + 3bc00212: 02f55533 divu a0,a0,a5 + 3bc00216: 2501 sext.w a0,a0 + 3bc00218: 8082 ret + +000000003bc0021a : + 3bc0021a: 1101 addi sp,sp,-32 + 3bc0021c: 494257b7 lui a5,0x49425 + 3bc00220: e822 sd s0,16(sp) + 3bc00222: 34f78793 addi a5,a5,847 # 4942534f <__BL2_END__+0xd811f3f> + 3bc00226: 00013417 auipc s0,0x13 + 3bc0022a: 0a240413 addi s0,s0,162 # 3bc132c8 + 3bc0022e: e426 sd s1,8(sp) + 3bc00230: e01c sd a5,0(s0) + 3bc00232: 010014b7 lui s1,0x1001 + 3bc00236: 4785 li a5,1 + 3bc00238: e04a sd s2,0(sp) + 3bc0023a: 00749613 slli a2,s1,0x7 + 3bc0023e: 892a mv s2,a0 + 3bc00240: ec1c sd a5,24(s0) + 3bc00242: 0000a517 auipc a0,0xa + 3bc00246: dde50513 addi a0,a0,-546 # 3bc0a020 + 3bc0024a: 57fd li a5,-1 + 3bc0024c: ec06 sd ra,24(sp) + 3bc0024e: f41c sd a5,40(s0) + 3bc00250: e80c sd a1,16(s0) + 3bc00252: 106000ef jal ra,3bc00358 + 3bc00256: 03000593 li a1,48 + 3bc0025a: 8522 mv a0,s0 + 3bc0025c: efbff0ef jal ra,3bc00156 + 3bc00260: fadff0ef jal ra,3bc0020c + 3bc00264: 3e800793 li a5,1000 + 3bc00268: 3e75051b addiw a0,a0,999 + 3bc0026c: 02f5553b divuw a0,a0,a5 + 3bc00270: 8622 mv a2,s0 + 3bc00272: 0000b797 auipc a5,0xb + 3bc00276: 1ce7b783 ld a5,462(a5) # 3bc0b440 + 3bc0027a: 6442 ld s0,16(sp) + 3bc0027c: 60e2 ld ra,24(sp) + 3bc0027e: 00749593 slli a1,s1,0x7 + 3bc00282: 64a2 ld s1,8(sp) + 3bc00284: 00a79723 sh a0,14(a5) + 3bc00288: 87ca mv a5,s2 + 3bc0028a: 6902 ld s2,0(sp) + 3bc0028c: 4501 li a0,0 + 3bc0028e: 6105 addi sp,sp,32 + 3bc00290: 8782 jr a5 + +000000003bc00292 : + 3bc00292: 8082 ret + +000000003bc00294 <_uart_putc>: + 3bc00294: 04140737 lui a4,0x4140 + 3bc00298: 4b5c lw a5,20(a4) + 3bc0029a: 0207f793 andi a5,a5,32 + 3bc0029e: dfed beqz a5,3bc00298 <_uart_putc+0x4> + 3bc002a0: c308 sw a0,0(a4) + 3bc002a2: 8082 ret + +000000003bc002a4 : + 3bc002a4: 1141 addi sp,sp,-16 + 3bc002a6: e022 sd s0,0(sp) + 3bc002a8: e406 sd ra,8(sp) + 3bc002aa: 47a9 li a5,10 + 3bc002ac: 842a mv s0,a0 + 3bc002ae: 00f51563 bne a0,a5,3bc002b8 + 3bc002b2: 4535 li a0,13 + 3bc002b4: fe1ff0ef jal ra,3bc00294 <_uart_putc> + 3bc002b8: 8522 mv a0,s0 + 3bc002ba: 6402 ld s0,0(sp) + 3bc002bc: 60a2 ld ra,8(sp) + 3bc002be: 0141 addi sp,sp,16 + 3bc002c0: bfd1 j 3bc00294 <_uart_putc> + +000000003bc002c2 : + 3bc002c2: 041406b7 lui a3,0x4140 + 3bc002c6: 06000713 li a4,96 + 3bc002ca: 4adc lw a5,20(a3) + 3bc002cc: 0607f793 andi a5,a5,96 + 3bc002d0: fee79de3 bne a5,a4,3bc002ca + 3bc002d4: 8082 ret + +000000003bc002d6 : + 3bc002d6: 7139 addi sp,sp,-64 + 3bc002d8: f04a sd s2,32(sp) + 3bc002da: 7c05b70b extu a4,a1,31,0 + 3bc002de: fc06 sd ra,56(sp) + 3bc002e0: f822 sd s0,48(sp) + 3bc002e2: f426 sd s1,40(sp) + 3bc002e4: 8932 mv s2,a2 + 3bc002e6: 4801 li a6,0 + 3bc002e8: 45a5 li a1,9 + 3bc002ea: 02e57633 remu a2,a0,a4 + 3bc002ee: 0018041b addiw s0,a6,1 + 3bc002f2: 0ff67793 andi a5,a2,255 + 3bc002f6: 04c5e063 bltu a1,a2,3bc00336 + 3bc002fa: 0307879b addiw a5,a5,48 + 3bc002fe: 0ff7f793 andi a5,a5,255 + 3bc00302: 0030 addi a2,sp,8 + 3bc00304: 0106578b srb a5,a2,a6,0 + 3bc00308: 02e557b3 divu a5,a0,a4 + 3bc0030c: 0805 addi a6,a6,1 + 3bc0030e: 02e57263 bgeu a0,a4,3bc00332 + 3bc00312: 408684bb subw s1,a3,s0 + 3bc00316: 02904363 bgtz s1,3bc0033c + 3bc0031a: 54fd li s1,-1 + 3bc0031c: 147d addi s0,s0,-1 + 3bc0031e: 0004079b sext.w a5,s0 + 3bc00322: 02979463 bne a5,s1,3bc0034a + 3bc00326: 70e2 ld ra,56(sp) + 3bc00328: 7442 ld s0,48(sp) + 3bc0032a: 74a2 ld s1,40(sp) + 3bc0032c: 7902 ld s2,32(sp) + 3bc0032e: 6121 addi sp,sp,64 + 3bc00330: 8082 ret + 3bc00332: 853e mv a0,a5 + 3bc00334: bf5d j 3bc002ea + 3bc00336: 0577879b addiw a5,a5,87 + 3bc0033a: b7d1 j 3bc002fe + 3bc0033c: 85ca mv a1,s2 + 3bc0033e: 03000513 li a0,48 + 3bc00342: 7aa000ef jal ra,3bc00aec + 3bc00346: 34fd addiw s1,s1,-1 + 3bc00348: b7f9 j 3bc00316 + 3bc0034a: 003c addi a5,sp,8 + 3bc0034c: 8087c50b lrbu a0,a5,s0,0 + 3bc00350: 85ca mv a1,s2 + 3bc00352: 79a000ef jal ra,3bc00aec + 3bc00356: b7d9 j 3bc0031c + +000000003bc00358 : + 3bc00358: 7135 addi sp,sp,-160 + 3bc0035a: e8a2 sd s0,80(sp) + 3bc0035c: e4a6 sd s1,72(sp) + 3bc0035e: ec86 sd ra,88(sp) + 3bc00360: e0ca sd s2,64(sp) + 3bc00362: fc4e sd s3,56(sp) + 3bc00364: f852 sd s4,48(sp) + 3bc00366: f456 sd s5,40(sp) + 3bc00368: f05a sd s6,32(sp) + 3bc0036a: f4ae sd a1,104(sp) + 3bc0036c: f8b2 sd a2,112(sp) + 3bc0036e: fcb6 sd a3,120(sp) + 3bc00370: e13a sd a4,128(sp) + 3bc00372: e53e sd a5,136(sp) + 3bc00374: e942 sd a6,144(sp) + 3bc00376: ed46 sd a7,152(sp) + 3bc00378: 842a mv s0,a0 + 3bc0037a: 4489 li s1,2 + 3bc0037c: c11d beqz a0,3bc003a2 + 3bc0037e: 00054703 lbu a4,0(a0) + 3bc00382: 4785 li a5,1 + 3bc00384: 00f71f63 bne a4,a5,3bc003a2 + 3bc00388: 00154783 lbu a5,1(a0) + 3bc0038c: 4711 li a4,4 + 3bc0038e: fd07879b addiw a5,a5,-48 + 3bc00392: 0ff7f693 andi a3,a5,255 + 3bc00396: 00d76663 bltu a4,a3,3bc003a2 + 3bc0039a: 0007849b sext.w s1,a5 + 3bc0039e: 00250413 addi s0,a0,2 + 3bc003a2: 10bc addi a5,sp,104 + 3bc003a4: ec3e sd a5,24(sp) + 3bc003a6: 4a25 li s4,9 + 3bc003a8: 4ad9 li s5,22 + 3bc003aa: 0000a997 auipc s3,0xa + 3bc003ae: ca298993 addi s3,s3,-862 # 3bc0a04c + 3bc003b2: 00044503 lbu a0,0(s0) + 3bc003b6: e919 bnez a0,3bc003cc + 3bc003b8: 60e6 ld ra,88(sp) + 3bc003ba: 6446 ld s0,80(sp) + 3bc003bc: 64a6 ld s1,72(sp) + 3bc003be: 6906 ld s2,64(sp) + 3bc003c0: 79e2 ld s3,56(sp) + 3bc003c2: 7a42 ld s4,48(sp) + 3bc003c4: 7aa2 ld s5,40(sp) + 3bc003c6: 7b02 ld s6,32(sp) + 3bc003c8: 610d addi sp,sp,160 + 3bc003ca: 8082 ret + 3bc003cc: 02500793 li a5,37 + 3bc003d0: 0405 addi s0,s0,1 + 3bc003d2: 10f51c63 bne a0,a5,3bc004ea + 3bc003d6: 4781 li a5,0 + 3bc003d8: 4681 li a3,0 + 3bc003da: 03000613 li a2,48 + 3bc003de: 00044703 lbu a4,0(s0) + 3bc003e2: 00c70c63 beq a4,a2,3bc003fa + 3bc003e6: f9c7071b addiw a4,a4,-100 + 3bc003ea: 0ff77713 andi a4,a4,255 + 3bc003ee: fceae5e3 bltu s5,a4,3bc003b8 + 3bc003f2: 44e9c70b lrw a4,s3,a4,2 + 3bc003f6: 974e add a4,a4,s3 + 3bc003f8: 8702 jr a4 + 3bc003fa: 00144703 lbu a4,1(s0) + 3bc003fe: fd07071b addiw a4,a4,-48 + 3bc00402: 0ff77593 andi a1,a4,255 + 3bc00406: 00ba6463 bltu s4,a1,3bc0040e + 3bc0040a: 0007069b sext.w a3,a4 + 3bc0040e: 0409 addi s0,s0,2 + 3bc00410: b7f9 j 3bc003de + 3bc00412: 6762 ld a4,24(sp) + 3bc00414: 4585 li a1,1 + 3bc00416: 00870613 addi a2,a4,8 # 4140008 <__BSS_SIZE__+0x413a3f8> + 3bc0041a: ec32 sd a2,24(sp) + 3bc0041c: 02f5d563 bge a1,a5,3bc00446 + 3bc00420: 00073903 ld s2,0(a4) + 3bc00424: 00095b63 bgez s2,3bc0043a + 3bc00428: 85a6 mv a1,s1 + 3bc0042a: 02d00513 li a0,45 + 3bc0042e: e436 sd a3,8(sp) + 3bc00430: 6bc000ef jal ra,3bc00aec + 3bc00434: 66a2 ld a3,8(sp) + 3bc00436: 41200933 neg s2,s2 + 3bc0043a: 8626 mv a2,s1 + 3bc0043c: 45a9 li a1,10 + 3bc0043e: 854a mv a0,s2 + 3bc00440: e97ff0ef jal ra,3bc002d6 + 3bc00444: a831 j 3bc00460 + 3bc00446: ffe9 bnez a5,3bc00420 + 3bc00448: 00072903 lw s2,0(a4) + 3bc0044c: bfe1 j 3bc00424 + 3bc0044e: 67e2 ld a5,24(sp) + 3bc00450: 0007b903 ld s2,0(a5) + 3bc00454: 00878713 addi a4,a5,8 + 3bc00458: ec3a sd a4,24(sp) + 3bc0045a: 00094503 lbu a0,0(s2) + 3bc0045e: e119 bnez a0,3bc00464 + 3bc00460: 0405 addi s0,s0,1 + 3bc00462: bf81 j 3bc003b2 + 3bc00464: 85a6 mv a1,s1 + 3bc00466: 0905 addi s2,s2,1 + 3bc00468: 684000ef jal ra,3bc00aec + 3bc0046c: b7fd j 3bc0045a + 3bc0046e: 67e2 ld a5,24(sp) + 3bc00470: 0000a917 auipc s2,0xa + 3bc00474: bd890913 addi s2,s2,-1064 # 3bc0a048 + 3bc00478: 0007bb03 ld s6,0(a5) + 3bc0047c: 00878713 addi a4,a5,8 + 3bc00480: ec3a sd a4,24(sp) + 3bc00482: 000b1c63 bnez s6,3bc0049a + 3bc00486: 8626 mv a2,s1 + 3bc00488: 45c1 li a1,16 + 3bc0048a: 855a mv a0,s6 + 3bc0048c: bf55 j 3bc00440 + 3bc0048e: 85a6 mv a1,s1 + 3bc00490: e436 sd a3,8(sp) + 3bc00492: 65a000ef jal ra,3bc00aec + 3bc00496: 66a2 ld a3,8(sp) + 3bc00498: 0905 addi s2,s2,1 + 3bc0049a: 00094503 lbu a0,0(s2) + 3bc0049e: f965 bnez a0,3bc0048e + 3bc004a0: b7dd j 3bc00486 + 3bc004a2: 6762 ld a4,24(sp) + 3bc004a4: 4585 li a1,1 + 3bc004a6: 00870613 addi a2,a4,8 + 3bc004aa: ec32 sd a2,24(sp) + 3bc004ac: 00f5d663 bge a1,a5,3bc004b8 + 3bc004b0: 6308 ld a0,0(a4) + 3bc004b2: 8626 mv a2,s1 + 3bc004b4: 45c1 li a1,16 + 3bc004b6: b769 j 3bc00440 + 3bc004b8: ffe5 bnez a5,3bc004b0 + 3bc004ba: 00076503 lwu a0,0(a4) + 3bc004be: bfd5 j 3bc004b2 + 3bc004c0: 0405 addi s0,s0,1 + 3bc004c2: 4789 li a5,2 + 3bc004c4: bf29 j 3bc003de + 3bc004c6: 2785 addiw a5,a5,1 + 3bc004c8: 0405 addi s0,s0,1 + 3bc004ca: bf11 j 3bc003de + 3bc004cc: 6762 ld a4,24(sp) + 3bc004ce: 4585 li a1,1 + 3bc004d0: 00870613 addi a2,a4,8 + 3bc004d4: ec32 sd a2,24(sp) + 3bc004d6: 00f5d663 bge a1,a5,3bc004e2 + 3bc004da: 6308 ld a0,0(a4) + 3bc004dc: 8626 mv a2,s1 + 3bc004de: 45a9 li a1,10 + 3bc004e0: b785 j 3bc00440 + 3bc004e2: ffe5 bnez a5,3bc004da + 3bc004e4: 00076503 lwu a0,0(a4) + 3bc004e8: bfd5 j 3bc004dc + 3bc004ea: 85a6 mv a1,s1 + 3bc004ec: 600000ef jal ra,3bc00aec + 3bc004f0: b5c9 j 3bc003b2 + +000000003bc004f2 <__system_reset>: + 3bc004f2: 7179 addi sp,sp,-48 + 3bc004f4: f022 sd s0,32(sp) + 3bc004f6: be00e437 lui s0,0xbe00e + 3bc004fa: f406 sd ra,40(sp) + 3bc004fc: 00340793 addi a5,s0,3 # ffffffffbe00e003 <__BL2_END__+0xffffffff823fabf3> + 3bc00500: ec26 sd s1,24(sp) + 3bc00502: e84a sd s2,16(sp) + 3bc00504: e44e sd s3,8(sp) + 3bc00506: 0e000937 lui s2,0xe000 + 3bc0050a: 862e mv a2,a1 + 3bc0050c: 00f92823 sw a5,16(s2) # e000010 + 3bc00510: 85aa mv a1,a0 + 3bc00512: 0000a517 auipc a0,0xa + 3bc00516: b9650513 addi a0,a0,-1130 # 3bc0a0a8 + 3bc0051a: e3fff0ef jal ra,3bc00358 + 3bc0051e: da5ff0ef jal ra,3bc002c2 + 3bc00522: be0034b7 lui s1,0xbe003 + 3bc00526: 00148793 addi a5,s1,1 # ffffffffbe003001 <__BL2_END__+0xffffffff823efbf1> + 3bc0052a: 030009b7 lui s3,0x3000 + 3bc0052e: 6505 lui a0,0x1 + 3bc00530: 08f9a223 sw a5,132(s3) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc00534: 38850513 addi a0,a0,904 # 1388 <__BSS_SIZE__-0x4888> + 3bc00538: c7dff0ef jal ra,3bc001b4 + 3bc0053c: 050267b7 lui a5,0x5026 + 3bc00540: 4705 li a4,1 + 3bc00542: 0ee7a023 sw a4,224(a5) # 50260e0 + 3bc00546: 0ce7a423 sw a4,200(a5) + 3bc0054a: 0489 addi s1,s1,2 + 3bc0054c: 0899a223 sw s1,132(s3) + 3bc00550: 06400513 li a0,100 + 3bc00554: c37ff0ef jal ra,3bc0018a + 3bc00558: 050257b7 lui a5,0x5025 + 3bc0055c: 672d lui a4,0xb + 3bc0055e: 0a07a623 sw zero,172(a5) # 50250ac + 3bc00562: b1870713 addi a4,a4,-1256 # ab18 <__BSS_SIZE__+0x4f08> + 3bc00566: c3d8 sw a4,4(a5) + 3bc00568: 00400737 lui a4,0x400 + 3bc0056c: 04070713 addi a4,a4,64 # 400040 <__BSS_SIZE__+0x3fa430> + 3bc00570: c798 sw a4,8(a5) + 3bc00572: 030107b7 lui a5,0x3010 + 3bc00576: 06600713 li a4,102 + 3bc0057a: c3d8 sw a4,4(a5) + 3bc0057c: 02000713 li a4,32 + 3bc00580: cfd8 sw a4,28(a5) + 3bc00582: 07600713 li a4,118 + 3bc00586: c7d8 sw a4,12(a5) + 3bc00588: 4745 li a4,17 + 3bc0058a: c398 sw a4,0(a5) + 3bc0058c: 00394783 lbu a5,3(s2) + 3bc00590: 0407f793 andi a5,a5,64 + 3bc00594: c395 beqz a5,3bc005b8 <__system_reset+0xc6> + 3bc00596: 0411 addi s0,s0,4 + 3bc00598: 00892823 sw s0,16(s2) + 3bc0059c: 050266b7 lui a3,0x5026 + 3bc005a0: 470d li a4,3 + 3bc005a2: 0d46a783 lw a5,212(a3) # 50260d4 + 3bc005a6: 2781 sext.w a5,a5 + 3bc005a8: fee79de3 bne a5,a4,3bc005a2 <__system_reset+0xb0> + 3bc005ac: 000807b7 lui a5,0x80 + 3bc005b0: 05025737 lui a4,0x5025 + 3bc005b4: 07a1 addi a5,a5,8 + 3bc005b6: c71c sw a5,8(a4) + 3bc005b8: a001 j 3bc005b8 <__system_reset+0xc6> + +000000003bc005ba : + 3bc005ba: 1141 addi sp,sp,-16 + 3bc005bc: be00e7b7 lui a5,0xbe00e + 3bc005c0: e406 sd ra,8(sp) + 3bc005c2: 0e000737 lui a4,0xe000 + 3bc005c6: 0789 addi a5,a5,2 + 3bc005c8: cb1c sw a5,16(a4) + 3bc005ca: 0000879b sext.w a5,ra + 3bc005ce: 8586 mv a1,ra + 3bc005d0: 0000a517 auipc a0,0xa + 3bc005d4: af050513 addi a0,a0,-1296 # 3bc0a0c0 + 3bc005d8: cb5c sw a5,20(a4) + 3bc005da: d7fff0ef jal ra,3bc00358 + 3bc005de: 55fd li a1,-1 + 3bc005e0: 0000a517 auipc a0,0xa + 3bc005e4: af050513 addi a0,a0,-1296 # 3bc0a0d0 + 3bc005e8: f0bff0ef jal ra,3bc004f2 <__system_reset> + +000000003bc005ec : + 3bc005ec: 1141 addi sp,sp,-16 + 3bc005ee: e022 sd s0,0(sp) + 3bc005f0: 842a mv s0,a0 + 3bc005f2: 0000a517 auipc a0,0xa + 3bc005f6: ae650513 addi a0,a0,-1306 # 3bc0a0d8 + 3bc005fa: e406 sd ra,8(sp) + 3bc005fc: d5dff0ef jal ra,3bc00358 + 3bc00600: 03003737 lui a4,0x3003 + 3bc00604: 535c lw a5,36(a4) + 3bc00606: 6609 lui a2,0x2 + 3bc00608: 60a2 ld ra,8(sp) + 3bc0060a: 2781 sext.w a5,a5 + 3bc0060c: fbf7f793 andi a5,a5,-65 + 3bc00610: d35c sw a5,36(a4) + 3bc00612: 020b07b7 lui a5,0x20b0 + 3bc00616: 43d4 lw a3,4(a5) + 3bc00618: 8ed1 or a3,a3,a2 + 3bc0061a: c3d4 sw a3,4(a5) + 3bc0061c: 0004069b sext.w a3,s0 + 3bc00620: d394 sw a3,32(a5) + 3bc00622: 9401 srai s0,s0,0x20 + 3bc00624: d3c0 sw s0,36(a5) + 3bc00626: 535c lw a5,36(a4) + 3bc00628: 6402 ld s0,0(sp) + 3bc0062a: 2781 sext.w a5,a5 + 3bc0062c: 0407e793 ori a5,a5,64 + 3bc00630: d35c sw a5,36(a4) + 3bc00632: 0141 addi sp,sp,16 + 3bc00634: 8082 ret + +000000003bc00636 : + 3bc00636: 1141 addi sp,sp,-16 + 3bc00638: e406 sd ra,8(sp) + 3bc0063a: c8800097 auipc ra,0xc8800 + 3bc0063e: 9e6080e7 jalr -1562(ra) # 4400020 + 3bc00642: 67b5 lui a5,0xd + 3bc00644: 2501 sext.w a0,a0 + 3bc00646: ea078713 addi a4,a5,-352 # cea0 <__BSS_SIZE__+0x7290> + 3bc0064a: 00e50a63 beq a0,a4,3bc0065e + 3bc0064e: ea378793 addi a5,a5,-349 + 3bc00652: 02f50063 beq a0,a5,3bc00672 + 3bc00656: 0e0007b7 lui a5,0xe000 + 3bc0065a: c3c8 sw a0,4(a5) + 3bc0065c: a801 j 3bc0066c + 3bc0065e: 4d4757b7 lui a5,0x4d475 + 3bc00662: 0e000737 lui a4,0xe000 + 3bc00666: e3278793 addi a5,a5,-462 # 4d474e32 <__BL2_END__+0x11861a22> + 3bc0066a: c35c sw a5,4(a4) + 3bc0066c: 60a2 ld ra,8(sp) + 3bc0066e: 0141 addi sp,sp,16 + 3bc00670: 8082 ret + 3bc00672: 4d4757b7 lui a5,0x4d475 + 3bc00676: 0e000737 lui a4,0xe000 + 3bc0067a: e3178793 addi a5,a5,-463 # 4d474e31 <__BL2_END__+0x11861a21> + 3bc0067e: b7f5 j 3bc0066a + +000000003bc00680 : + 3bc00680: 030027b7 lui a5,0x3002 + 3bc00684: 0207a823 sw zero,48(a5) # 3002030 <__BSS_SIZE__+0x2ffc420> + 3bc00688: 0207aa23 sw zero,52(a5) + 3bc0068c: 8082 ret + +000000003bc0068e : + 3bc0068e: 7139 addi sp,sp,-64 + 3bc00690: 0000a797 auipc a5,0xa + 3bc00694: ab87b783 ld a5,-1352(a5) # 3bc0a148 + 3bc00698: e03e sd a5,0(sp) + 3bc0069a: 0000a797 auipc a5,0xa + 3bc0069e: ab67b783 ld a5,-1354(a5) # 3bc0a150 + 3bc006a2: e43e sd a5,8(sp) + 3bc006a4: 0000a797 auipc a5,0xa + 3bc006a8: ab47b783 ld a5,-1356(a5) # 3bc0a158 + 3bc006ac: e83e sd a5,16(sp) + 3bc006ae: 0000a517 auipc a0,0xa + 3bc006b2: a3250513 addi a0,a0,-1486 # 3bc0a0e0 + 3bc006b6: 0000a797 auipc a5,0xa + 3bc006ba: aaa7b783 ld a5,-1366(a5) # 3bc0a160 + 3bc006be: f426 sd s1,40(sp) + 3bc006c0: ec3e sd a5,24(sp) + 3bc006c2: fc06 sd ra,56(sp) + 3bc006c4: f822 sd s0,48(sp) + 3bc006c6: f04a sd s2,32(sp) + 3bc006c8: c91ff0ef jal ra,3bc00358 + 3bc006cc: 030027b7 lui a5,0x3002 + 3bc006d0: 577d li a4,-1 + 3bc006d2: 5b84 lw s1,48(a5) + 3bc006d4: 03f00693 li a3,63 + 3bc006d8: db98 sw a4,48(a5) + 3bc006da: dbd4 sw a3,52(a5) + 3bc006dc: 054887b7 lui a5,0x5488 + 3bc006e0: 03003737 lui a4,0x3003 + 3bc006e4: 10178793 addi a5,a5,257 # 5488101 + 3bc006e8: 80f72423 sw a5,-2040(a4) # 3002808 <__BSS_SIZE__+0x2ffcbf8> + 3bc006ec: 030037b7 lui a5,0x3003 + 3bc006f0: 84d72023 sw a3,-1984(a4) + 3bc006f4: 2481 sext.w s1,s1 + 3bc006f6: 4601 li a2,0 + 3bc006f8: 85470713 addi a4,a4,-1964 + 3bc006fc: 01010813 addi a6,sp,16 + 3bc00700: 80c78513 addi a0,a5,-2036 # 300280c <__BSS_SIZE__+0x2ffcbfc> + 3bc00704: 45c1 li a1,16 + 3bc00706: 4026468b lrw a3,a2,sp,0 + 3bc0070a: c314 sw a3,0(a4) + 3bc0070c: ffc72683 lw a3,-4(a4) + 3bc00710: 0741 addi a4,a4,16 + 3bc00712: 2681 sext.w a3,a3 + 3bc00714: 9abd andi a3,a3,-17 + 3bc00716: 0016e693 ori a3,a3,1 + 3bc0071a: fed72623 sw a3,-20(a4) + 3bc0071e: 4106468b lrw a3,a2,a6,0 + 3bc00722: 40a6568b srw a3,a2,a0,0 + 3bc00726: 0611 addi a2,a2,4 + 3bc00728: fcb61fe3 bne a2,a1,3bc00706 + 3bc0072c: 80078613 addi a2,a5,-2048 + 3bc00730: 4218 lw a4,0(a2) + 3bc00732: 76bd lui a3,0xfffef + 3bc00734: eee68693 addi a3,a3,-274 # fffffffffffeeeee <__BL2_END__+0xffffffffc43dbade> + 3bc00738: 2701 sext.w a4,a4 + 3bc0073a: 8f75 and a4,a4,a3 + 3bc0073c: c218 sw a4,0(a2) + 3bc0073e: 00448737 lui a4,0x448 + 3bc00742: 90078613 addi a2,a5,-1792 + 3bc00746: 10170713 addi a4,a4,257 # 448101 <__BSS_SIZE__+0x4424f1> + 3bc0074a: c618 sw a4,8(a2) + 3bc0074c: 03002437 lui s0,0x3002 + 3bc00750: 018006b7 lui a3,0x1800 + 3bc00754: 6841 lui a6,0x10 + 3bc00756: d014 sw a3,32(s0) + 3bc00758: 30980593 addi a1,a6,777 # 10309 <__BSS_SIZE__+0xa6f9> + 3bc0075c: 10040693 addi a3,s0,256 # 3002100 <__BSS_SIZE__+0x2ffc4f0> + 3bc00760: da8c sw a1,48(a3) + 3bc00762: 000205b7 lui a1,0x20 + 3bc00766: 20958593 addi a1,a1,521 # 20209 <__BSS_SIZE__+0x1a5f9> + 3bc0076a: de8c sw a1,56(a3) + 3bc0076c: c658 sw a4,12(a2) + 3bc0076e: 00030637 lui a2,0x30 + 3bc00772: 00960313 addi t1,a2,9 # 30009 <__BSS_SIZE__+0x2a3f9> + 3bc00776: 04642423 sw t1,72(s0) + 3bc0077a: 30960713 addi a4,a2,777 + 3bc0077e: 00040537 lui a0,0x40 + 3bc00782: c878 sw a4,84(s0) + 3bc00784: 00080937 lui s2,0x80 + 3bc00788: 00950713 addi a4,a0,9 # 40009 <__BSS_SIZE__+0x3a3f9> + 3bc0078c: d078 sw a4,100(s0) + 3bc0078e: 00990893 addi a7,s2,9 # 80009 <__BSS_SIZE__+0x7a3f9> + 3bc00792: 08040713 addi a4,s0,128 + 3bc00796: 01172423 sw a7,8(a4) + 3bc0079a: 001208b7 lui a7,0x120 + 3bc0079e: 08a5 addi a7,a7,9 + 3bc007a0: 01172c23 sw a7,24(a4) + 3bc007a4: 000f08b7 lui a7,0xf0 + 3bc007a8: 08a5 addi a7,a7,9 + 3bc007aa: 0316a023 sw a7,32(a3) # 1800020 <__BSS_SIZE__+0x17fa410> + 3bc007ae: 0825 addi a6,a6,9 + 3bc007b0: 03072423 sw a6,40(a4) + 3bc007b4: 10960813 addi a6,a2,265 + 3bc007b8: 07072223 sw a6,100(a4) + 3bc007bc: 30950513 addi a0,a0,777 + 3bc007c0: d768 sw a0,108(a4) + 3bc007c2: 00060537 lui a0,0x60 + 3bc007c6: 04672423 sw t1,72(a4) + 3bc007ca: 20950513 addi a0,a0,521 # 60209 <__BSS_SIZE__+0x5a5f9> + 3bc007ce: cb28 sw a0,80(a4) + 3bc007d0: cf28 sw a0,88(a4) + 3bc007d2: ca8c sw a1,16(a3) + 3bc007d4: 20960613 addi a2,a2,521 + 3bc007d8: c2f0 sw a2,68(a3) + 3bc007da: 00050637 lui a2,0x50 + 3bc007de: 0625 addi a2,a2,9 + 3bc007e0: df10 sw a2,56(a4) + 3bc007e2: d6d0 sw a2,44(a3) + 3bc007e4: 88078793 addi a5,a5,-1920 + 3bc007e8: 5398 lw a4,32(a5) + 3bc007ea: 10090913 addi s2,s2,256 + 3bc007ee: 0124f933 and s2,s1,s2 + 3bc007f2: 2701 sext.w a4,a4 + 3bc007f4: 9b6d andi a4,a4,-5 + 3bc007f6: d398 sw a4,32(a5) + 3bc007f8: 57d8 lw a4,44(a5) + 3bc007fa: 0c800513 li a0,200 + 3bc007fe: 2701 sext.w a4,a4 + 3bc00800: 9b65 andi a4,a4,-7 + 3bc00802: d7d8 sw a4,44(a5) + 3bc00804: 987ff0ef jal ra,3bc0018a + 3bc00808: 03242823 sw s2,48(s0) + 3bc0080c: 70e2 ld ra,56(sp) + 3bc0080e: 02042a23 sw zero,52(s0) + 3bc00812: 7442 ld s0,48(sp) + 3bc00814: 74a2 ld s1,40(sp) + 3bc00816: 7902 ld s2,32(sp) + 3bc00818: 6121 addi sp,sp,64 + 3bc0081a: 8082 ret + +000000003bc0081c : + 3bc0081c: 1141 addi sp,sp,-16 + 3bc0081e: e406 sd ra,8(sp) + 3bc00820: e6fff0ef jal ra,3bc0068e + 3bc00824: 60a2 ld ra,8(sp) + 3bc00826: 0000a517 auipc a0,0xa + 3bc0082a: 8ca50513 addi a0,a0,-1846 # 3bc0a0f0 + 3bc0082e: 0141 addi sp,sp,16 + 3bc00830: b625 j 3bc00358 + +000000003bc00832 : + 3bc00832: 8082 ret + +000000003bc00834 : + 3bc00834: 05025737 lui a4,0x5025 + 3bc00838: 475c lw a5,12(a4) + 3bc0083a: 471c lw a5,8(a4) + 3bc0083c: f40006b7 lui a3,0xf4000 + 3bc00840: bff68693 addi a3,a3,-1025 # fffffffff3fffbff <__BL2_END__+0xffffffffb83ec7ef> + 3bc00844: 2781 sext.w a5,a5 + 3bc00846: 8ff5 and a5,a5,a3 + 3bc00848: 0c0006b7 lui a3,0xc000 + 3bc0084c: 8fd5 or a5,a5,a3 + 3bc0084e: c71c sw a5,8(a4) + 3bc00850: 4685 li a3,1 + 3bc00852: 050267b7 lui a5,0x5026 + 3bc00856: 48d7a623 sw a3,1164(a5) # 502648c + 3bc0085a: 4807a623 sw zero,1164(a5) + 3bc0085e: 471c lw a5,8(a4) + 3bc00860: 0c0016b7 lui a3,0xc001 + 3bc00864: 80068693 addi a3,a3,-2048 # c000800 + 3bc00868: 2781 sext.w a5,a5 + 3bc0086a: 8fd5 or a5,a5,a3 + 3bc0086c: c71c sw a5,8(a4) + 3bc0086e: 0000a517 auipc a0,0xa + 3bc00872: 89250513 addi a0,a0,-1902 # 3bc0a100 + 3bc00876: b4cd j 3bc00358 + +000000003bc00878 : + 3bc00878: 1141 addi sp,sp,-16 + 3bc0087a: e022 sd s0,0(sp) + 3bc0087c: 05026437 lui s0,0x5026 + 3bc00880: 0f842583 lw a1,248(s0) # 50260f8 + 3bc00884: 0000a517 auipc a0,0xa + 3bc00888: 89450513 addi a0,a0,-1900 # 3bc0a118 + 3bc0088c: e406 sd ra,8(sp) + 3bc0088e: 2581 sext.w a1,a1 + 3bc00890: ac9ff0ef jal ra,3bc00358 + 3bc00894: 0fc42583 lw a1,252(s0) + 3bc00898: 0000a517 auipc a0,0xa + 3bc0089c: 89850513 addi a0,a0,-1896 # 3bc0a130 + 3bc008a0: 2581 sext.w a1,a1 + 3bc008a2: ab7ff0ef jal ra,3bc00358 + 3bc008a6: 4785 li a5,1 + 3bc008a8: 0cf42023 sw a5,192(s0) + 3bc008ac: 05026737 lui a4,0x5026 + 3bc008b0: 4685 li a3,1 + 3bc008b2: 0c072783 lw a5,192(a4) # 50260c0 + 3bc008b6: 2781 sext.w a5,a5 + 3bc008b8: fed79de3 bne a5,a3,3bc008b2 + 3bc008bc: 0cd72623 sw a3,204(a4) + 3bc008c0: 05026737 lui a4,0x5026 + 3bc008c4: 4685 li a3,1 + 3bc008c6: 0cc72783 lw a5,204(a4) # 50260cc + 3bc008ca: 2781 sext.w a5,a5 + 3bc008cc: fed79de3 bne a5,a3,3bc008c6 + 3bc008d0: 0cd72423 sw a3,200(a4) + 3bc008d4: 05026737 lui a4,0x5026 + 3bc008d8: 4685 li a3,1 + 3bc008da: 0c872783 lw a5,200(a4) # 50260c8 + 3bc008de: 2781 sext.w a5,a5 + 3bc008e0: fed79de3 bne a5,a3,3bc008da + 3bc008e4: 0ed72023 sw a3,224(a4) + 3bc008e8: 050266b7 lui a3,0x5026 + 3bc008ec: 4705 li a4,1 + 3bc008ee: 0e06a783 lw a5,224(a3) # 50260e0 + 3bc008f2: 2781 sext.w a5,a5 + 3bc008f4: fee79de3 bne a5,a4,3bc008ee + 3bc008f8: 05025737 lui a4,0x5025 + 3bc008fc: 08070613 addi a2,a4,128 # 5025080 + 3bc00900: 565c lw a5,44(a2) + 3bc00902: 60a2 ld ra,8(sp) + 3bc00904: 6402 ld s0,0(sp) + 3bc00906: 2781 sext.w a5,a5 + 3bc00908: 0017e793 ori a5,a5,1 + 3bc0090c: d65c sw a5,44(a2) + 3bc0090e: 67ad lui a5,0xb + 3bc00910: b1878793 addi a5,a5,-1256 # ab18 <__BSS_SIZE__+0x4f08> + 3bc00914: c35c sw a5,4(a4) + 3bc00916: 471c lw a5,8(a4) + 3bc00918: 7645 lui a2,0xffff1 + 3bc0091a: 84060613 addi a2,a2,-1984 # ffffffffffff0840 <__BL2_END__+0xffffffffc43dd430> + 3bc0091e: 2781 sext.w a5,a5 + 3bc00920: 8fd1 or a5,a5,a2 + 3bc00922: c71c sw a5,8(a4) + 3bc00924: 0d06a783 lw a5,208(a3) + 3bc00928: 2781 sext.w a5,a5 + 3bc0092a: 9bed andi a5,a5,-5 + 3bc0092c: 0cf6a823 sw a5,208(a3) + 3bc00930: 0141 addi sp,sp,16 + 3bc00932: 8082 ret + +000000003bc00934 : + 3bc00934: 7139 addi sp,sp,-64 + 3bc00936: 0000a797 auipc a5,0xa + 3bc0093a: 8327b783 ld a5,-1998(a5) # 3bc0a168 + 3bc0093e: e43e sd a5,8(sp) + 3bc00940: 000827b7 lui a5,0x82 + 3bc00944: 47378793 addi a5,a5,1139 # 82473 <__BSS_SIZE__+0x7c863> + 3bc00948: 07b2 slli a5,a5,0xc + 3bc0094a: faf1578b sdd a5,a5,(sp),1,4 + 3bc0094e: f03e sd a5,32(sp) + 3bc00950: 6785 lui a5,0x1 + 3bc00952: 10178793 addi a5,a5,257 # 1101 <__BSS_SIZE__-0x4b0f> + 3bc00956: d43e sw a5,40(sp) + 3bc00958: 478d li a5,3 + 3bc0095a: 02f10723 sb a5,46(sp) + 3bc0095e: fc06 sd ra,56(sp) + 3bc00960: 4701 li a4,0 + 3bc00962: 4781 li a5,0 + 3bc00964: 002c addi a1,sp,8 + 3bc00966: 02400693 li a3,36 + 3bc0096a: 80b7460b lrbu a2,a4,a1,0 + 3bc0096e: 0705 addi a4,a4,1 + 3bc00970: 9fb1 addw a5,a5,a2 + 3bc00972: 3c07b78b extu a5,a5,15,0 + 3bc00976: fed71ae3 bne a4,a3,3bc0096a + 3bc0097a: 01900537 lui a0,0x1900 + 3bc0097e: 02800613 li a2,40 + 3bc00982: 40050513 addi a0,a0,1024 # 1900400 <__BSS_SIZE__+0x18fa7f0> + 3bc00986: 02f11623 sh a5,44(sp) + 3bc0098a: 0e2000ef jal ra,3bc00a6c + 3bc0098e: 70e2 ld ra,56(sp) + 3bc00990: 6121 addi sp,sp,64 + 3bc00992: 8082 ret + +000000003bc00994 : + 3bc00994: 4501 li a0,0 + 3bc00996: 8082 ret + +000000003bc00998 : + 3bc00998: 00050023 sb zero,0(a0) + 3bc0099c: 872a mv a4,a0 + 3bc0099e: 00009317 auipc t1,0x9 + 3bc009a2: 7d230313 addi t1,t1,2002 # 3bc0a170 + 3bc009a6: 4e65 li t3,25 + 3bc009a8: 02c5f7b3 remu a5,a1,a2 + 3bc009ac: 80f3478b lrbu a5,t1,a5,0 + 3bc009b0: ce91 beqz a3,3bc009cc + 3bc009b2: f9f7881b addiw a6,a5,-97 + 3bc009b6: 0ff87813 andi a6,a6,255 + 3bc009ba: 02000893 li a7,32 + 3bc009be: 010e7363 bgeu t3,a6,3bc009c4 + 3bc009c2: 4881 li a7,0 + 3bc009c4: 411787bb subw a5,a5,a7 + 3bc009c8: 0ff7f793 andi a5,a5,255 + 3bc009cc: 0817578b sbib a5,(a4),1,0 + 3bc009d0: 02c5d7b3 divu a5,a1,a2 + 3bc009d4: 02c5f463 bgeu a1,a2,3bc009fc + 3bc009d8: 87aa mv a5,a0 + 3bc009da: 86ba mv a3,a4 + 3bc009dc: 02d7e263 bltu a5,a3,3bc00a00 + 3bc009e0: fff50693 addi a3,a0,-1 + 3bc009e4: 4781 li a5,0 + 3bc009e6: 00d76863 bltu a4,a3,3bc009f6 + 3bc009ea: 40a707b3 sub a5,a4,a0 + 3bc009ee: 0785 addi a5,a5,1 + 3bc009f0: 8385 srli a5,a5,0x1 + 3bc009f2: 40f007b3 neg a5,a5 + 3bc009f6: 00f70533 add a0,a4,a5 + 3bc009fa: 8082 ret + 3bc009fc: 85be mv a1,a5 + 3bc009fe: b76d j 3bc009a8 + 3bc00a00: 0006c583 lbu a1,0(a3) + 3bc00a04: 0007c603 lbu a2,0(a5) + 3bc00a08: 1817d58b sbia a1,(a5),1,0 + 3bc00a0c: 19f6d60b sbia a2,(a3),-1,0 + 3bc00a10: b7f1 j 3bc009dc + +000000003bc00a12 : + 3bc00a12: 0ff5f813 andi a6,a1,255 + 3bc00a16: 87aa mv a5,a0 + 3bc00a18: 0077f713 andi a4,a5,7 + 3bc00a1c: c719 beqz a4,3bc00a2a + 3bc00a1e: e211 bnez a2,3bc00a22 + 3bc00a20: 8082 ret + 3bc00a22: 1817d80b sbia a6,(a5),1,0 + 3bc00a26: 167d addi a2,a2,-1 + 3bc00a28: bfc5 j 3bc00a18 + 3bc00a2a: ca05 beqz a2,3bc00a5a + 3bc00a2c: 00009697 auipc a3,0x9 + 3bc00a30: 76c6b683 ld a3,1900(a3) # 3bc0a198 + 3bc00a34: 0ff5f593 andi a1,a1,255 + 3bc00a38: 02d585b3 mul a1,a1,a3 + 3bc00a3c: 489d li a7,7 + 3bc00a3e: 4681 li a3,0 + 3bc00a40: 40d60333 sub t1,a2,a3 + 3bc00a44: 0068ec63 bltu a7,t1,3bc00a5c + 3bc00a48: 00365693 srli a3,a2,0x3 + 3bc00a4c: 55e1 li a1,-8 + 3bc00a4e: 06d7978b addsl a5,a5,a3,3 + 3bc00a52: 20b6960b mula a2,a3,a1 + 3bc00a56: 00e61763 bne a2,a4,3bc00a64 + 3bc00a5a: 8082 ret + 3bc00a5c: 60d7d58b srd a1,a5,a3,0 + 3bc00a60: 06a1 addi a3,a3,8 + 3bc00a62: bff9 j 3bc00a40 + 3bc00a64: 00e7d80b srb a6,a5,a4,0 + 3bc00a68: 0705 addi a4,a4,1 + 3bc00a6a: b7f5 j 3bc00a56 + +000000003bc00a6c : + 3bc00a6c: 00b547b3 xor a5,a0,a1 + 3bc00a70: 8b9d andi a5,a5,7 + 3bc00a72: e7a9 bnez a5,3bc00abc + 3bc00a74: 87aa mv a5,a0 + 3bc00a76: 0077f713 andi a4,a5,7 + 3bc00a7a: cb09 beqz a4,3bc00a8c + 3bc00a7c: e211 bnez a2,3bc00a80 + 3bc00a7e: 8082 ret + 3bc00a80: 9815c70b lbuia a4,(a1),1,0 + 3bc00a84: 167d addi a2,a2,-1 + 3bc00a86: 1817d70b sbia a4,(a5),1,0 + 3bc00a8a: b7f5 j 3bc00a76 + 3bc00a8c: 469d li a3,7 + 3bc00a8e: e619 bnez a2,3bc00a9c + 3bc00a90: 8082 ret + 3bc00a92: 60e5c80b lrd a6,a1,a4,0 + 3bc00a96: 60e7d80b srd a6,a5,a4,0 + 3bc00a9a: 0721 addi a4,a4,8 + 3bc00a9c: 40e60833 sub a6,a2,a4 + 3bc00aa0: ff06e9e3 bltu a3,a6,3bc00a92 + 3bc00aa4: 00365713 srli a4,a2,0x3 + 3bc00aa8: 56e1 li a3,-8 + 3bc00aaa: 20d7160b mula a2,a4,a3 + 3bc00aae: 070e slli a4,a4,0x3 + 3bc00ab0: 97ba add a5,a5,a4 + 3bc00ab2: 95ba add a1,a1,a4 + 3bc00ab4: 4701 li a4,0 + 3bc00ab6: 00e61563 bne a2,a4,3bc00ac0 + 3bc00aba: 8082 ret + 3bc00abc: 87aa mv a5,a0 + 3bc00abe: bfdd j 3bc00ab4 + 3bc00ac0: 80e5c68b lrbu a3,a1,a4,0 + 3bc00ac4: 00e7d68b srb a3,a5,a4,0 + 3bc00ac8: 0705 addi a4,a4,1 + 3bc00aca: b7f5 j 3bc00ab6 + +000000003bc00acc : + 3bc00acc: 40b50733 sub a4,a0,a1 + 3bc00ad0: 87aa mv a5,a0 + 3bc00ad2: 00c76363 bltu a4,a2,3bc00ad8 + 3bc00ad6: bf59 j 3bc00a6c + 3bc00ad8: 95b2 add a1,a1,a2 + 3bc00ada: 9532 add a0,a0,a2 + 3bc00adc: 00f51363 bne a0,a5,3bc00ae2 + 3bc00ae0: 8082 ret + 3bc00ae2: 89f5c70b lbuib a4,(a1),-1,0 + 3bc00ae6: 09f5570b sbib a4,(a0),-1,0 + 3bc00aea: bfcd j 3bc00adc + +000000003bc00aec : + 3bc00aec: 0e0007b7 lui a5,0xe000 + 3bc00af0: 4794 lw a3,8(a5) + 3bc00af2: 1141 addi sp,sp,-16 + 3bc00af4: e022 sd s0,0(sp) + 3bc00af6: e406 sd ra,8(sp) + 3bc00af8: 6709 lui a4,0x2 + 3bc00afa: 842a mv s0,a0 + 3bc00afc: 00e6e463 bltu a3,a4,3bc00b04 + 3bc00b00: 0007a423 sw zero,8(a5) # e000008 + 3bc00b04: 0e0007b7 lui a5,0xe000 + 3bc00b08: 4798 lw a4,8(a5) + 3bc00b0a: 0017069b addiw a3,a4,1 + 3bc00b0e: c794 sw a3,8(a5) + 3bc00b10: 0c0006b7 lui a3,0xc000 + 3bc00b14: 10e6d40b surb s0,a3,a4,0 + 3bc00b18: 4709 li a4,2 + 3bc00b1a: 00b74d63 blt a4,a1,3bc00b34 + 3bc00b1e: 0007c783 lbu a5,0(a5) # e000000 + 3bc00b22: 8b91 andi a5,a5,4 + 3bc00b24: eb81 bnez a5,3bc00b34 + 3bc00b26: 0ff47513 andi a0,s0,255 + 3bc00b2a: f7aff0ef jal ra,3bc002a4 + 3bc00b2e: 00055363 bgez a0,3bc00b34 + 3bc00b32: 547d li s0,-1 + 3bc00b34: 60a2 ld ra,8(sp) + 3bc00b36: 8522 mv a0,s0 + 3bc00b38: 6402 ld s0,0(sp) + 3bc00b3a: 0141 addi sp,sp,16 + 3bc00b3c: 8082 ret + +000000003bc00b3e : + 3bc00b3e: 4701 li a4,0 + 3bc00b40: 80e5478b lrbu a5,a0,a4,0 + 3bc00b44: 80e5c68b lrbu a3,a1,a4,0 + 3bc00b48: 00d78563 beq a5,a3,3bc00b52 + 3bc00b4c: 40d7853b subw a0,a5,a3 + 3bc00b50: 8082 ret + 3bc00b52: 0705 addi a4,a4,1 + 3bc00b54: f7f5 bnez a5,3bc00b40 + 3bc00b56: 4501 li a0,0 + 3bc00b58: 8082 ret + +000000003bc00b5a : + 3bc00b5a: 87aa mv a5,a0 + 3bc00b5c: 0007c703 lbu a4,0(a5) + 3bc00b60: e701 bnez a4,3bc00b68 + 3bc00b62: 40a78533 sub a0,a5,a0 + 3bc00b66: 8082 ret + 3bc00b68: 0785 addi a5,a5,1 + 3bc00b6a: bfcd j 3bc00b5c + +000000003bc00b6c : + 3bc00b6c: 1101 addi sp,sp,-32 + 3bc00b6e: 00c007b7 lui a5,0xc00 + 3bc00b72: e822 sd s0,16(sp) + 3bc00b74: e426 sd s1,8(sp) + 3bc00b76: e04a sd s2,0(sp) + 3bc00b78: 1c55370b extu a4,a0,7,5 + 3bc00b7c: 4007879b addiw a5,a5,1024 + 3bc00b80: 0155541b srliw s0,a0,0x15 + 3bc00b84: 5105390b extu s2,a0,20,16 + 3bc00b88: 1045348b extu s1,a0,4,4 + 3bc00b8c: 3c85350b extu a0,a0,15,8 + 3bc00b90: 9d3d addw a0,a0,a5 + 3bc00b92: 0025151b slliw a0,a0,0x2 + 3bc00b96: ec06 sd ra,24(sp) + 3bc00b98: 7c05350b extu a0,a0,31,0 + 3bc00b9c: c118 sw a4,0(a0) + 3bc00b9e: 4529 li a0,10 + 3bc00ba0: deaff0ef jal ra,3bc0018a + 3bc00ba4: 00447793 andi a5,s0,4 + 3bc00ba8: eb9d bnez a5,3bc00bde + 3bc00baa: 678d lui a5,0x3 + 3bc00bac: 881d andi s0,s0,7 + 3bc00bae: 0207879b addiw a5,a5,32 + 3bc00bb2: 9c3d addw s0,s0,a5 + 3bc00bb4: 00c4141b slliw s0,s0,0xc + 3bc00bb8: 0504041b addiw s0,s0,80 + 3bc00bbc: 7c04340b extu s0,s0,31,0 + 3bc00bc0: 4008 lw a0,0(s0) + 3bc00bc2: 0125553b srlw a0,a0,s2 + 3bc00bc6: 00157793 andi a5,a0,1 + 3bc00bca: 853e mv a0,a5 + 3bc00bcc: c099 beqz s1,3bc00bd2 + 3bc00bce: 0017c513 xori a0,a5,1 + 3bc00bd2: 60e2 ld ra,24(sp) + 3bc00bd4: 6442 ld s0,16(sp) + 3bc00bd6: 64a2 ld s1,8(sp) + 3bc00bd8: 6902 ld s2,0(sp) + 3bc00bda: 6105 addi sp,sp,32 + 3bc00bdc: 8082 ret + 3bc00bde: 05021437 lui s0,0x5021 + 3bc00be2: 05040413 addi s0,s0,80 # 5021050 + 3bc00be6: bfd9 j 3bc00bbc + +000000003bc00be8 : + 3bc00be8: 030507b7 lui a5,0x3050 + 3bc00bec: 1047a783 lw a5,260(a5) # 3050104 <__BSS_SIZE__+0x304a4f4> + 3bc00bf0: 0007851b sext.w a0,a5 + 3bc00bf4: 8b91 andi a5,a5,4 + 3bc00bf6: c391 beqz a5,3bc00bfa + 3bc00bf8: bf95 j 3bc00b6c + 3bc00bfa: 030007b7 lui a5,0x3000 + 3bc00bfe: 43c8 lw a0,4(a5) + 3bc00c00: 2085350b extu a0,a0,8,8 + 3bc00c04: 8082 ret + +000000003bc00c06 : + 3bc00c06: 1141 addi sp,sp,-16 + 3bc00c08: e406 sd ra,8(sp) + 3bc00c0a: e02ff0ef jal ra,3bc0020c + 3bc00c0e: 60a2 ld ra,8(sp) + 3bc00c10: 3e75051b addiw a0,a0,999 + 3bc00c14: 3e800793 li a5,1000 + 3bc00c18: 02f5553b divuw a0,a0,a5 + 3bc00c1c: 0141 addi sp,sp,16 + 3bc00c1e: 8082 ret + +000000003bc00c20 : + 3bc00c20: 7179 addi sp,sp,-48 + 3bc00c22: 8732 mv a4,a2 + 3bc00c24: 2601 sext.w a2,a2 + 3bc00c26: f022 sd s0,32(sp) + 3bc00c28: ec26 sd s1,24(sp) + 3bc00c2a: e03a sd a4,0(sp) + 3bc00c2c: f406 sd ra,40(sp) + 3bc00c2e: 84aa mv s1,a0 + 3bc00c30: e42e sd a1,8(sp) + 3bc00c32: 295030ef jal ra,3bc046c6 + 3bc00c36: 4785 li a5,1 + 3bc00c38: f8d1470b ldd a4,a3,(sp),0,4 + 3bc00c3c: 5479 li s0,-2 + 3bc00c3e: 00f51363 bne a0,a5,3bc00c44 + 3bc00c42: 4401 li s0,0 + 3bc00c44: 8626 mv a2,s1 + 3bc00c46: 85a2 mv a1,s0 + 3bc00c48: 00009517 auipc a0,0x9 + 3bc00c4c: 55850513 addi a0,a0,1368 # 3bc0a1a0 + 3bc00c50: f08ff0ef jal ra,3bc00358 + 3bc00c54: 70a2 ld ra,40(sp) + 3bc00c56: 8522 mv a0,s0 + 3bc00c58: 7402 ld s0,32(sp) + 3bc00c5a: 64e2 ld s1,24(sp) + 3bc00c5c: 6145 addi sp,sp,48 + 3bc00c5e: 8082 ret + +000000003bc00c60 : + 3bc00c60: 1101 addi sp,sp,-32 + 3bc00c62: 0000d617 auipc a2,0xd + 3bc00c66: b9e60613 addi a2,a2,-1122 # 3bc0d800 <__BSS_START__> + 3bc00c6a: e42a sd a0,8(sp) + 3bc00c6c: 6585 lui a1,0x1 + 3bc00c6e: 00009517 auipc a0,0x9 + 3bc00c72: 55250513 addi a0,a0,1362 # 3bc0a1c0 + 3bc00c76: ec06 sd ra,24(sp) + 3bc00c78: e822 sd s0,16(sp) + 3bc00c7a: edeff0ef jal ra,3bc00358 + 3bc00c7e: c87ff097 auipc ra,0xc87ff + 3bc00c82: 3a2080e7 jalr 930(ra) # 4400020 + 3bc00c86: 67b5 lui a5,0xd + 3bc00c88: 2501 sext.w a0,a0 + 3bc00c8a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00c8e: 66a2 ld a3,8(sp) + 3bc00c90: 6605 lui a2,0x1 + 3bc00c92: 04f51463 bne a0,a5,3bc00cda + 3bc00c96: 3c0027b7 lui a5,0x3c002 + 3bc00c9a: 0e07a583 lw a1,224(a5) # 3c0020e0 <__BL2_END__+0x3eecd0> + 3bc00c9e: 0000d517 auipc a0,0xd + 3bc00ca2: b6250513 addi a0,a0,-1182 # 3bc0d800 <__BSS_START__> + 3bc00ca6: f7bff0ef jal ra,3bc00c20 + 3bc00caa: 02054463 bltz a0,3bc00cd2 + 3bc00cae: 0000d417 auipc s0,0xd + 3bc00cb2: b5240413 addi s0,s0,-1198 # 3bc0d800 <__BSS_START__> + 3bc00cb6: 6018 ld a4,0(s0) + 3bc00cb8: 0000a797 auipc a5,0xa + 3bc00cbc: 9607b783 ld a5,-1696(a5) # 3bc0a618 + 3bc00cc0: 02f70a63 beq a4,a5,3bc00cf4 + 3bc00cc4: 00009517 auipc a0,0x9 + 3bc00cc8: 51450513 addi a0,a0,1300 # 3bc0a1d8 + 3bc00ccc: e8cff0ef jal ra,3bc00358 + 3bc00cd0: 557d li a0,-1 + 3bc00cd2: 60e2 ld ra,24(sp) + 3bc00cd4: 6442 ld s0,16(sp) + 3bc00cd6: 6105 addi sp,sp,32 + 3bc00cd8: 8082 ret + 3bc00cda: 3c0027b7 lui a5,0x3c002 + 3bc00cde: 0e07a583 lw a1,224(a5) # 3c0020e0 <__BL2_END__+0x3eecd0> + 3bc00ce2: 0000d517 auipc a0,0xd + 3bc00ce6: b1e50513 addi a0,a0,-1250 # 3bc0d800 <__BSS_START__> + 3bc00cea: c87ff097 auipc ra,0xc87ff + 3bc00cee: 376080e7 jalr 886(ra) # 4400060 + 3bc00cf2: bf65 j 3bc00caa + 3bc00cf4: 6585 lui a1,0x1 + 3bc00cf6: 15d1 addi a1,a1,-12 + 3bc00cf8: 0000d517 auipc a0,0xd + 3bc00cfc: b1450513 addi a0,a0,-1260 # 3bc0d80c <__BSS_START__+0xc> + 3bc00d00: c87ff097 auipc ra,0xc87ff + 3bc00d04: 3a0080e7 jalr 928(ra) # 44000a0 + 3bc00d08: 4410 lw a2,8(s0) + 3bc00d0a: 0005059b sext.w a1,a0 + 3bc00d0e: 00b60963 beq a2,a1,3bc00d20 + 3bc00d12: 00009517 auipc a0,0x9 + 3bc00d16: 4de50513 addi a0,a0,1246 # 3bc0a1f0 + 3bc00d1a: e3eff0ef jal ra,3bc00358 + 3bc00d1e: bf4d j 3bc00cd0 + 3bc00d20: 00009517 auipc a0,0x9 + 3bc00d24: 4f050513 addi a0,a0,1264 # 3bc0a210 + 3bc00d28: e30ff0ef jal ra,3bc00358 + 3bc00d2c: 4501 li a0,0 + 3bc00d2e: b755 j 3bc00cd2 + +000000003bc00d30 : + 3bc00d30: 1101 addi sp,sp,-32 + 3bc00d32: e822 sd s0,16(sp) + 3bc00d34: 0000d417 auipc s0,0xd + 3bc00d38: acc40413 addi s0,s0,-1332 # 3bc0d800 <__BSS_START__> + 3bc00d3c: 4c10 lw a2,24(s0) + 3bc00d3e: 484c lw a1,20(s0) + 3bc00d40: e42a sd a0,8(sp) + 3bc00d42: 00009517 auipc a0,0x9 + 3bc00d46: 4d650513 addi a0,a0,1238 # 3bc0a218 + 3bc00d4a: ec06 sd ra,24(sp) + 3bc00d4c: e0cff0ef jal ra,3bc00358 + 3bc00d50: 4c18 lw a4,24(s0) + 3bc00d52: 6791 lui a5,0x4 + 3bc00d54: 66a2 ld a3,8(sp) + 3bc00d56: 00f76363 bltu a4,a5,3bc00d5c + 3bc00d5a: cc1c sw a5,24(s0) + 3bc00d5c: e436 sd a3,8(sp) + 3bc00d5e: c87ff097 auipc ra,0xc87ff + 3bc00d62: 2c2080e7 jalr 706(ra) # 4400020 + 3bc00d66: 67b5 lui a5,0xd + 3bc00d68: 2501 sext.w a0,a0 + 3bc00d6a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00d6e: 66a2 ld a3,8(sp) + 3bc00d70: 01846603 lwu a2,24(s0) + 3bc00d74: 484c lw a1,20(s0) + 3bc00d76: 04f51363 bne a0,a5,3bc00dbc + 3bc00d7a: 0000e517 auipc a0,0xe + 3bc00d7e: a8650513 addi a0,a0,-1402 # 3bc0e800 + 3bc00d82: e9fff0ef jal ra,3bc00c20 + 3bc00d86: 02054763 bltz a0,3bc00db4 + 3bc00d8a: 4c0c lw a1,24(s0) + 3bc00d8c: 0000e517 auipc a0,0xe + 3bc00d90: a7450513 addi a0,a0,-1420 # 3bc0e800 + 3bc00d94: c87ff097 auipc ra,0xc87ff + 3bc00d98: 30c080e7 jalr 780(ra) # 44000a0 + 3bc00d9c: 4810 lw a2,16(s0) + 3bc00d9e: 0005059b sext.w a1,a0 + 3bc00da2: 02b60663 beq a2,a1,3bc00dce + 3bc00da6: 00009517 auipc a0,0x9 + 3bc00daa: 48a50513 addi a0,a0,1162 # 3bc0a230 + 3bc00dae: daaff0ef jal ra,3bc00358 + 3bc00db2: 557d li a0,-1 + 3bc00db4: 60e2 ld ra,24(sp) + 3bc00db6: 6442 ld s0,16(sp) + 3bc00db8: 6105 addi sp,sp,32 + 3bc00dba: 8082 ret + 3bc00dbc: 0000e517 auipc a0,0xe + 3bc00dc0: a4450513 addi a0,a0,-1468 # 3bc0e800 + 3bc00dc4: c87ff097 auipc ra,0xc87ff + 3bc00dc8: 29c080e7 jalr 668(ra) # 4400060 + 3bc00dcc: bf6d j 3bc00d86 + 3bc00dce: 00009517 auipc a0,0x9 + 3bc00dd2: 48a50513 addi a0,a0,1162 # 3bc0a258 + 3bc00dd6: d82ff0ef jal ra,3bc00358 + 3bc00dda: 4501 li a0,0 + 3bc00ddc: bfe1 j 3bc00db4 + +000000003bc00dde : + 3bc00dde: 7179 addi sp,sp,-48 + 3bc00de0: ec26 sd s1,24(sp) + 3bc00de2: 74cd lui s1,0xffff3 + 3bc00de4: e84a sd s2,16(sp) + 3bc00de6: e44e sd s3,8(sp) + 3bc00de8: e052 sd s4,0(sp) + 3bc00dea: f406 sd ra,40(sp) + 3bc00dec: f022 sd s0,32(sp) + 3bc00dee: 1604849b addiw s1,s1,352 + 3bc00df2: 4995 li s3,5 + 3bc00df4: 4a05 li s4,1 + 3bc00df6: 00009917 auipc s2,0x9 + 3bc00dfa: 46a90913 addi s2,s2,1130 # 3bc0a260 + 3bc00dfe: 4401 li s0,0 + 3bc00e00: c87ff097 auipc ra,0xc87ff + 3bc00e04: 2c0080e7 jalr 704(ra) # 44000c0 + 3bc00e08: 00a45e63 bge s0,a0,3bc00e24 + 3bc00e0c: 8522 mv a0,s0 + 3bc00e0e: e53ff0ef jal ra,3bc00c60 + 3bc00e12: 00055463 bgez a0,3bc00e1a + 3bc00e16: 2405 addiw s0,s0,1 + 3bc00e18: b7e5 j 3bc00e00 + 3bc00e1a: 8522 mv a0,s0 + 3bc00e1c: f15ff0ef jal ra,3bc00d30 + 3bc00e20: fe054be3 bltz a0,3bc00e16 + 3bc00e24: c87ff097 auipc ra,0xc87ff + 3bc00e28: 29c080e7 jalr 668(ra) # 44000c0 + 3bc00e2c: 02a45f63 bge s0,a0,3bc00e6a + 3bc00e30: dd7ff0ef jal ra,3bc00c06 + 3bc00e34: 0000a417 auipc s0,0xa + 3bc00e38: 60c40413 addi s0,s0,1548 # 3bc0b440 + 3bc00e3c: 601c ld a5,0(s0) + 3bc00e3e: 00a79123 sh a0,2(a5) + 3bc00e42: 0000e517 auipc a0,0xe + 3bc00e46: 9be50513 addi a0,a0,-1602 # 3bc0e800 + 3bc00e4a: 34a070ef jal ra,3bc08194 + 3bc00e4e: db9ff0ef jal ra,3bc00c06 + 3bc00e52: 601c ld a5,0(s0) + 3bc00e54: 70a2 ld ra,40(sp) + 3bc00e56: 7402 ld s0,32(sp) + 3bc00e58: 00a79223 sh a0,4(a5) + 3bc00e5c: 64e2 ld s1,24(sp) + 3bc00e5e: 6942 ld s2,16(sp) + 3bc00e60: 69a2 ld s3,8(sp) + 3bc00e62: 6a02 ld s4,0(sp) + 3bc00e64: 4501 li a0,0 + 3bc00e66: 6145 addi sp,sp,48 + 3bc00e68: 8082 ret + 3bc00e6a: c87ff097 auipc ra,0xc87ff + 3bc00e6e: 1b6080e7 jalr 438(ra) # 4400020 + 3bc00e72: 9d25 addw a0,a0,s1 + 3bc00e74: 85a2 mv a1,s0 + 3bc00e76: 00a9ef63 bltu s3,a0,3bc00e94 + 3bc00e7a: 00aa1533 sll a0,s4,a0 + 3bc00e7e: 02957513 andi a0,a0,41 + 3bc00e82: c909 beqz a0,3bc00e94 + 3bc00e84: 854a mv a0,s2 + 3bc00e86: cd2ff0ef jal ra,3bc00358 + 3bc00e8a: c87ff097 auipc ra,0xc87ff + 3bc00e8e: 1f6080e7 jalr 502(ra) # 4400080 + 3bc00e92: b7b5 j 3bc00dfe + 3bc00e94: 00009517 auipc a0,0x9 + 3bc00e98: 3f450513 addi a0,a0,1012 # 3bc0a288 + 3bc00e9c: cbcff0ef jal ra,3bc00358 + 3bc00ea0: f1aff0ef jal ra,3bc005ba + +000000003bc00ea4 : + 3bc00ea4: 7179 addi sp,sp,-48 + 3bc00ea6: e84a sd s2,16(sp) + 3bc00ea8: 0000a917 auipc s2,0xa + 3bc00eac: 59890913 addi s2,s2,1432 # 3bc0b440 + 3bc00eb0: 00093783 ld a5,0(s2) + 3bc00eb4: f022 sd s0,32(sp) + 3bc00eb6: 0000d417 auipc s0,0xd + 3bc00eba: 94a40413 addi s0,s0,-1718 # 3bc0d800 <__BSS_START__> + 3bc00ebe: 0047d703 lhu a4,4(a5) + 3bc00ec2: 5414 lw a3,40(s0) + 3bc00ec4: 5450 lw a2,44(s0) + 3bc00ec6: 504c lw a1,36(s0) + 3bc00ec8: ec26 sd s1,24(sp) + 3bc00eca: f406 sd ra,40(sp) + 3bc00ecc: e44e sd s3,8(sp) + 3bc00ece: 00e79323 sh a4,6(a5) + 3bc00ed2: 84aa mv s1,a0 + 3bc00ed4: 00009517 auipc a0,0x9 + 3bc00ed8: 3dc50513 addi a0,a0,988 # 3bc0a2b0 + 3bc00edc: c7cff0ef jal ra,3bc00358 + 3bc00ee0: 545c lw a5,44(s0) + 3bc00ee2: 00009517 auipc a0,0x9 + 3bc00ee6: 3e650513 addi a0,a0,998 # 3bc0a2c8 + 3bc00eea: 10078763 beqz a5,3bc00ff8 + 3bc00eee: 800006b7 lui a3,0x80000 + 3bc00ef2: 00f6863b addw a2,a3,a5 + 3bc00ef6: 04000737 lui a4,0x4000 + 3bc00efa: 00e66b63 bltu a2,a4,3bc00f10 + 3bc00efe: 85be mv a1,a5 + 3bc00f00: 00009517 auipc a0,0x9 + 3bc00f04: 3e050513 addi a0,a0,992 # 3bc0a2e0 + 3bc00f08: c50ff0ef jal ra,3bc00358 + 3bc00f0c: eaeff0ef jal ra,3bc005ba + 3bc00f10: 540c lw a1,40(s0) + 3bc00f12: 9fad addw a5,a5,a1 + 3bc00f14: 9fb5 addw a5,a5,a3 + 3bc00f16: 00e7e763 bltu a5,a4,3bc00f24 + 3bc00f1a: 00009517 auipc a0,0x9 + 3bc00f1e: 3f650513 addi a0,a0,1014 # 3bc0a310 + 3bc00f22: b7dd j 3bc00f08 + 3bc00f24: c87ff097 auipc ra,0xc87ff + 3bc00f28: 0fc080e7 jalr 252(ra) # 4400020 + 3bc00f2c: 67b5 lui a5,0xd + 3bc00f2e: 0005071b sext.w a4,a0 + 3bc00f32: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00f36: 504c lw a1,36(s0) + 3bc00f38: 02846603 lwu a2,40(s0) + 3bc00f3c: 02c46503 lwu a0,44(s0) + 3bc00f40: 86a6 mv a3,s1 + 3bc00f42: 04f71263 bne a4,a5,3bc00f86 + 3bc00f46: cdbff0ef jal ra,3bc00c20 + 3bc00f4a: 84aa mv s1,a0 + 3bc00f4c: 02054563 bltz a0,3bc00f76 + 3bc00f50: 540c lw a1,40(s0) + 3bc00f52: 02c46503 lwu a0,44(s0) + 3bc00f56: c87ff097 auipc ra,0xc87ff + 3bc00f5a: 14a080e7 jalr 330(ra) # 44000a0 + 3bc00f5e: 5010 lw a2,32(s0) + 3bc00f60: 0005059b sext.w a1,a0 + 3bc00f64: 02b60663 beq a2,a1,3bc00f90 + 3bc00f68: 00009517 auipc a0,0x9 + 3bc00f6c: 3d850513 addi a0,a0,984 # 3bc0a340 + 3bc00f70: be8ff0ef jal ra,3bc00358 + 3bc00f74: 54fd li s1,-1 + 3bc00f76: 70a2 ld ra,40(sp) + 3bc00f78: 7402 ld s0,32(sp) + 3bc00f7a: 6942 ld s2,16(sp) + 3bc00f7c: 69a2 ld s3,8(sp) + 3bc00f7e: 8526 mv a0,s1 + 3bc00f80: 64e2 ld s1,24(sp) + 3bc00f82: 6145 addi sp,sp,48 + 3bc00f84: 8082 ret + 3bc00f86: c87ff097 auipc ra,0xc87ff + 3bc00f8a: 0da080e7 jalr 218(ra) # 4400060 + 3bc00f8e: bf75 j 3bc00f4a + 3bc00f90: 02846583 lwu a1,40(s0) + 3bc00f94: 02c46503 lwu a0,44(s0) + 3bc00f98: 3c0026b7 lui a3,0x3c002 + 3bc00f9c: 4601 li a2,0 + 3bc00f9e: 9f7ff0ef jal ra,3bc00994 + 3bc00fa2: 84aa mv s1,a0 + 3bc00fa4: 00055a63 bgez a0,3bc00fb8 + 3bc00fa8: 85aa mv a1,a0 + 3bc00faa: 00009517 auipc a0,0x9 + 3bc00fae: 3be50513 addi a0,a0,958 # 3bc0a368 + 3bc00fb2: ba6ff0ef jal ra,3bc00358 + 3bc00fb6: b7c1 j 3bc00f76 + 3bc00fb8: 02846583 lwu a1,40(s0) + 3bc00fbc: 02c46503 lwu a0,44(s0) + 3bc00fc0: 0e0009b7 lui s3,0xe000 + 3bc00fc4: 992ff0ef jal ra,3bc00156 + 3bc00fc8: 07c9a483 lw s1,124(s3) # e00007c + 3bc00fcc: 969ff0ef jal ra,3bc00934 + 3bc00fd0: c37ff0ef jal ra,3bc00c06 + 3bc00fd4: 00093783 ld a5,0(s2) + 3bc00fd8: 2481 sext.w s1,s1 + 3bc00fda: 00a79323 sh a0,6(a5) + 3bc00fde: 0abc17b7 lui a5,0xabc1 + 3bc00fe2: def78793 addi a5,a5,-529 # abc0def + 3bc00fe6: 00f49d63 bne s1,a5,3bc01000 + 3bc00fea: 545c lw a5,44(s0) + 3bc00fec: 06f9ae23 sw a5,124(s3) + 3bc00ff0: 00009517 auipc a0,0x9 + 3bc00ff4: 39850513 addi a0,a0,920 # 3bc0a388 + 3bc00ff8: b60ff0ef jal ra,3bc00358 + 3bc00ffc: 4481 li s1,0 + 3bc00ffe: bfa5 j 3bc00f76 + 3bc01000: 02c46503 lwu a0,44(s0) + 3bc01004: de8ff0ef jal ra,3bc005ec + 3bc01008: b7e5 j 3bc00ff0 + +000000003bc0100a : + 3bc0100a: 1101 addi sp,sp,-32 + 3bc0100c: e822 sd s0,16(sp) + 3bc0100e: 0000c417 auipc s0,0xc + 3bc01012: 7f240413 addi s0,s0,2034 # 3bc0d800 <__BSS_START__> + 3bc01016: e04a sd s2,0(sp) + 3bc01018: 5c14 lw a3,56(s0) + 3bc0101a: 5c50 lw a2,60(s0) + 3bc0101c: 892e mv s2,a1 + 3bc0101e: 584c lw a1,52(s0) + 3bc01020: e426 sd s1,8(sp) + 3bc01022: 84aa mv s1,a0 + 3bc01024: 00009517 auipc a0,0x9 + 3bc01028: 36c50513 addi a0,a0,876 # 3bc0a390 + 3bc0102c: ec06 sd ra,24(sp) + 3bc0102e: b2aff0ef jal ra,3bc00358 + 3bc01032: 5c5c lw a5,60(s0) + 3bc01034: eb89 bnez a5,3bc01046 + 3bc01036: 00009517 auipc a0,0x9 + 3bc0103a: 37250513 addi a0,a0,882 # 3bc0a3a8 + 3bc0103e: b1aff0ef jal ra,3bc00358 + 3bc01042: 4481 li s1,0 + 3bc01044: a069 j 3bc010ce + 3bc01046: 800006b7 lui a3,0x80000 + 3bc0104a: 00f6863b addw a2,a3,a5 + 3bc0104e: 04000737 lui a4,0x4000 + 3bc01052: 00e66b63 bltu a2,a4,3bc01068 + 3bc01056: 85be mv a1,a5 + 3bc01058: 00009517 auipc a0,0x9 + 3bc0105c: 36050513 addi a0,a0,864 # 3bc0a3b8 + 3bc01060: af8ff0ef jal ra,3bc00358 + 3bc01064: d56ff0ef jal ra,3bc005ba + 3bc01068: 5c0c lw a1,56(s0) + 3bc0106a: 9fad addw a5,a5,a1 + 3bc0106c: 9fb5 addw a5,a5,a3 + 3bc0106e: 00e7e763 bltu a5,a4,3bc0107c + 3bc01072: 00009517 auipc a0,0x9 + 3bc01076: 37650513 addi a0,a0,886 # 3bc0a3e8 + 3bc0107a: b7dd j 3bc01060 + 3bc0107c: c87ff097 auipc ra,0xc87ff + 3bc01080: fa4080e7 jalr -92(ra) # 4400020 + 3bc01084: 67b5 lui a5,0xd + 3bc01086: 0005071b sext.w a4,a0 + 3bc0108a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0108e: 584c lw a1,52(s0) + 3bc01090: 03846603 lwu a2,56(s0) + 3bc01094: 03c46503 lwu a0,60(s0) + 3bc01098: 86a6 mv a3,s1 + 3bc0109a: 04f71163 bne a4,a5,3bc010dc + 3bc0109e: b83ff0ef jal ra,3bc00c20 + 3bc010a2: 84aa mv s1,a0 + 3bc010a4: 02054563 bltz a0,3bc010ce + 3bc010a8: 5c0c lw a1,56(s0) + 3bc010aa: 03c46503 lwu a0,60(s0) + 3bc010ae: c87ff097 auipc ra,0xc87ff + 3bc010b2: ff2080e7 jalr -14(ra) # 44000a0 + 3bc010b6: 5810 lw a2,48(s0) + 3bc010b8: 0005059b sext.w a1,a0 + 3bc010bc: 02b60563 beq a2,a1,3bc010e6 + 3bc010c0: 00009517 auipc a0,0x9 + 3bc010c4: 35850513 addi a0,a0,856 # 3bc0a418 + 3bc010c8: a90ff0ef jal ra,3bc00358 + 3bc010cc: 54fd li s1,-1 + 3bc010ce: 60e2 ld ra,24(sp) + 3bc010d0: 6442 ld s0,16(sp) + 3bc010d2: 6902 ld s2,0(sp) + 3bc010d4: 8526 mv a0,s1 + 3bc010d6: 64a2 ld s1,8(sp) + 3bc010d8: 6105 addi sp,sp,32 + 3bc010da: 8082 ret + 3bc010dc: c87ff097 auipc ra,0xc87ff + 3bc010e0: f84080e7 jalr -124(ra) # 4400060 + 3bc010e4: bf7d j 3bc010a2 + 3bc010e6: 03846583 lwu a1,56(s0) + 3bc010ea: 03c46503 lwu a0,60(s0) + 3bc010ee: 3c0026b7 lui a3,0x3c002 + 3bc010f2: 4601 li a2,0 + 3bc010f4: 8a1ff0ef jal ra,3bc00994 + 3bc010f8: 84aa mv s1,a0 + 3bc010fa: 00055a63 bgez a0,3bc0110e + 3bc010fe: 85aa mv a1,a0 + 3bc01100: 00009517 auipc a0,0x9 + 3bc01104: 33850513 addi a0,a0,824 # 3bc0a438 + 3bc01108: a50ff0ef jal ra,3bc00358 + 3bc0110c: b7c9 j 3bc010ce + 3bc0110e: 03846583 lwu a1,56(s0) + 3bc01112: 03c46503 lwu a0,60(s0) + 3bc01116: 840ff0ef jal ra,3bc00156 + 3bc0111a: 00009517 auipc a0,0x9 + 3bc0111e: 33e50513 addi a0,a0,830 # 3bc0a458 + 3bc01122: a36ff0ef jal ra,3bc00358 + 3bc01126: 03c46783 lwu a5,60(s0) + 3bc0112a: 00f93023 sd a5,0(s2) + 3bc0112e: bf11 j 3bc01042 + +000000003bc01130 : + 3bc01130: 715d addi sp,sp,-80 + 3bc01132: f44e sd s3,40(sp) + 3bc01134: 0000c997 auipc s3,0xc + 3bc01138: 6cc98993 addi s3,s3,1740 # 3bc0d800 <__BSS_START__> + 3bc0113c: e85a sd s6,16(sp) + 3bc0113e: 8b2e mv s6,a1 + 3bc01140: 0449a583 lw a1,68(s3) + 3bc01144: ec56 sd s5,24(sp) + 3bc01146: 8aaa mv s5,a0 + 3bc01148: 00009517 auipc a0,0x9 + 3bc0114c: 31850513 addi a0,a0,792 # 3bc0a460 + 3bc01150: e486 sd ra,72(sp) + 3bc01152: e0a2 sd s0,64(sp) + 3bc01154: fc26 sd s1,56(sp) + 3bc01156: f84a sd s2,48(sp) + 3bc01158: f052 sd s4,32(sp) + 3bc0115a: 9feff0ef jal ra,3bc00358 + 3bc0115e: c87ff097 auipc ra,0xc87ff + 3bc01162: ec2080e7 jalr -318(ra) # 4400020 + 3bc01166: 67b5 lui a5,0xd + 3bc01168: 2501 sext.w a0,a0 + 3bc0116a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0116e: 0449a583 lw a1,68(s3) + 3bc01172: 86d6 mv a3,s5 + 3bc01174: 20000613 li a2,512 + 3bc01178: 02f51663 bne a0,a5,3bc011a4 + 3bc0117c: 0000d517 auipc a0,0xd + 3bc01180: 68450513 addi a0,a0,1668 # 3bc0e800 + 3bc01184: a9dff0ef jal ra,3bc00c20 + 3bc01188: 02055763 bgez a0,3bc011b6 + 3bc0118c: 59fd li s3,-1 + 3bc0118e: 60a6 ld ra,72(sp) + 3bc01190: 6406 ld s0,64(sp) + 3bc01192: 74e2 ld s1,56(sp) + 3bc01194: 7942 ld s2,48(sp) + 3bc01196: 7a02 ld s4,32(sp) + 3bc01198: 6ae2 ld s5,24(sp) + 3bc0119a: 6b42 ld s6,16(sp) + 3bc0119c: 854e mv a0,s3 + 3bc0119e: 79a2 ld s3,40(sp) + 3bc011a0: 6161 addi sp,sp,80 + 3bc011a2: 8082 ret + 3bc011a4: 0000d517 auipc a0,0xd + 3bc011a8: 65c50513 addi a0,a0,1628 # 3bc0e800 + 3bc011ac: c87ff097 auipc ra,0xc87ff + 3bc011b0: eb4080e7 jalr -332(ra) # 4400060 + 3bc011b4: bfd1 j 3bc01188 + 3bc011b6: 0000d417 auipc s0,0xd + 3bc011ba: 64a40413 addi s0,s0,1610 # 3bc0e800 + 3bc011be: 4458 lw a4,12(s0) + 3bc011c0: 6814 ld a3,16(s0) + 3bc011c2: 4410 lw a2,8(s0) + 3bc011c4: 1ff7049b addiw s1,a4,511 + 3bc011c8: 404c lw a1,4(s0) + 3bc011ca: e004f493 andi s1,s1,-512 + 3bc011ce: 2481 sext.w s1,s1 + 3bc011d0: 87a6 mv a5,s1 + 3bc011d2: 00009517 auipc a0,0x9 + 3bc011d6: 29e50513 addi a0,a0,670 # 3bc0a470 + 3bc011da: 97eff0ef jal ra,3bc00358 + 3bc011de: 4058 lw a4,4(s0) + 3bc011e0: 345a37b7 lui a5,0x345a3 + 3bc011e4: 34278793 addi a5,a5,834 # 345a3342 + 3bc011e8: 06f70363 beq a4,a5,3bc0124e + 3bc011ec: 414d37b7 lui a5,0x414d3 + 3bc011f0: 34278793 addi a5,a5,834 # 414d3342 <__BL2_END__+0x58bff32> + 3bc011f4: 06f70963 beq a4,a5,3bc01266 + 3bc011f8: 01043903 ld s2,16(s0) + 3bc011fc: 4a01 li s4,0 + 3bc011fe: c87ff097 auipc ra,0xc87ff + 3bc01202: e22080e7 jalr -478(ra) # 4400020 + 3bc01206: 67b5 lui a5,0xd + 3bc01208: 2501 sext.w a0,a0 + 3bc0120a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0120e: 0449a583 lw a1,68(s3) + 3bc01212: 86d6 mv a3,s5 + 3bc01214: 8626 mv a2,s1 + 3bc01216: 04f51a63 bne a0,a5,3bc0126a + 3bc0121a: 854a mv a0,s2 + 3bc0121c: a05ff0ef jal ra,3bc00c20 + 3bc01220: f60546e3 bltz a0,3bc0118c + 3bc01224: 444c lw a1,12(s0) + 3bc01226: 00c90993 addi s3,s2,12 + 3bc0122a: 854e mv a0,s3 + 3bc0122c: 35d1 addiw a1,a1,-12 + 3bc0122e: c87ff097 auipc ra,0xc87ff + 3bc01232: e72080e7 jalr -398(ra) # 44000a0 + 3bc01236: 4410 lw a2,8(s0) + 3bc01238: 0005059b sext.w a1,a0 + 3bc0123c: 02b60d63 beq a2,a1,3bc01276 + 3bc01240: 00009517 auipc a0,0x9 + 3bc01244: 26050513 addi a0,a0,608 # 3bc0a4a0 + 3bc01248: 910ff0ef jal ra,3bc00358 + 3bc0124c: b781 j 3bc0118c + 3bc0124e: 4a09 li s4,2 + 3bc01250: 85d2 mv a1,s4 + 3bc01252: 00009517 auipc a0,0x9 + 3bc01256: 23e50513 addi a0,a0,574 # 3bc0a490 + 3bc0125a: 00815937 lui s2,0x815 + 3bc0125e: 8faff0ef jal ra,3bc00358 + 3bc01262: 0922 slli s2,s2,0x8 + 3bc01264: bf69 j 3bc011fe + 3bc01266: 4a05 li s4,1 + 3bc01268: b7e5 j 3bc01250 + 3bc0126a: 854a mv a0,s2 + 3bc0126c: c87ff097 auipc ra,0xc87ff + 3bc01270: df4080e7 jalr -524(ra) # 4400060 + 3bc01274: b775 j 3bc01220 + 3bc01276: 444c lw a1,12(s0) + 3bc01278: 854e mv a0,s3 + 3bc0127a: 3c0026b7 lui a3,0x3c002 + 3bc0127e: 35d1 addiw a1,a1,-12 + 3bc01280: 4651 li a2,20 + 3bc01282: 7c05b58b extu a1,a1,31,0 + 3bc01286: f0eff0ef jal ra,3bc00994 + 3bc0128a: 89aa mv s3,a0 + 3bc0128c: 00055a63 bgez a0,3bc012a0 + 3bc01290: 85aa mv a1,a0 + 3bc01292: 00009517 auipc a0,0x9 + 3bc01296: 23650513 addi a0,a0,566 # 3bc0a4c8 + 3bc0129a: 8beff0ef jal ra,3bc00358 + 3bc0129e: bdc5 j 3bc0118e + 3bc012a0: 967ff0ef jal ra,3bc00c06 + 3bc012a4: 0000a997 auipc s3,0xa + 3bc012a8: 19c98993 addi s3,s3,412 # 3bc0b440 + 3bc012ac: 0009b783 ld a5,0(s3) + 3bc012b0: 00a79423 sh a0,8(a5) + 3bc012b4: bccff0ef jal ra,3bc00680 + 3bc012b8: 94fff0ef jal ra,3bc00c06 + 3bc012bc: 0009b783 ld a5,0(s3) + 3bc012c0: 00a79523 sh a0,10(a5) + 3bc012c4: 040a0363 beqz s4,3bc0130a + 3bc012c8: 6804 ld s1,16(s0) + 3bc012ca: 010007b7 lui a5,0x1000 + 3bc012ce: 02000613 li a2,32 + 3bc012d2: 85ca mv a1,s2 + 3bc012d4: 8526 mv a0,s1 + 3bc012d6: e43e sd a5,8(sp) + 3bc012d8: f94ff0ef jal ra,3bc00a6c + 3bc012dc: 00c46683 lwu a3,12(s0) + 3bc012e0: 02090613 addi a2,s2,32 # 815020 <__BSS_SIZE__+0x80f410> + 3bc012e4: 002c addi a1,sp,8 + 3bc012e6: 02048513 addi a0,s1,32 # ffffffffffff3020 <__BL2_END__+0xffffffffc43dfc10> + 3bc012ea: 8752 mv a4,s4 + 3bc012ec: 3d4000ef jal ra,3bc016c0 + 3bc012f0: 6622 ld a2,8(sp) + 3bc012f2: 85aa mv a1,a0 + 3bc012f4: 0006049b sext.w s1,a2 + 3bc012f8: 00055963 bgez a0,3bc0130a + 3bc012fc: 00009517 auipc a0,0x9 + 3bc01300: 1ec50513 addi a0,a0,492 # 3bc0a4e8 + 3bc01304: 854ff0ef jal ra,3bc00358 + 3bc01308: b551 j 3bc0118c + 3bc0130a: 6808 ld a0,16(s0) + 3bc0130c: 85a6 mv a1,s1 + 3bc0130e: e49fe0ef jal ra,3bc00156 + 3bc01312: 8f5ff0ef jal ra,3bc00c06 + 3bc01316: 0009b783 ld a5,0(s3) + 3bc0131a: 4981 li s3,0 + 3bc0131c: 00a79623 sh a0,12(a5) # 100000c <__BSS_SIZE__+0xffa3fc> + 3bc01320: 00009517 auipc a0,0x9 + 3bc01324: 1f850513 addi a0,a0,504 # 3bc0a518 + 3bc01328: 830ff0ef jal ra,3bc00358 + 3bc0132c: 681c ld a5,16(s0) + 3bc0132e: 02078793 addi a5,a5,32 + 3bc01332: 00fb3023 sd a5,0(s6) + 3bc01336: bda1 j 3bc0118e + +000000003bc01338 : + 3bc01338: 7179 addi sp,sp,-48 + 3bc0133a: ec26 sd s1,24(sp) + 3bc0133c: 74cd lui s1,0xffff3 + 3bc0133e: e84a sd s2,16(sp) + 3bc01340: f406 sd ra,40(sp) + 3bc01342: f022 sd s0,32(sp) + 3bc01344: e002 sd zero,0(sp) + 3bc01346: e402 sd zero,8(sp) + 3bc01348: 1604849b addiw s1,s1,352 + 3bc0134c: cd0ff0ef jal ra,3bc0081c + 3bc01350: 4915 li s2,5 + 3bc01352: 4401 li s0,0 + 3bc01354: c87ff097 auipc ra,0xc87ff + 3bc01358: d6c080e7 jalr -660(ra) # 44000c0 + 3bc0135c: 02a45563 bge s0,a0,3bc01386 + 3bc01360: 8522 mv a0,s0 + 3bc01362: b43ff0ef jal ra,3bc00ea4 + 3bc01366: 00055463 bgez a0,3bc0136e + 3bc0136a: 2405 addiw s0,s0,1 + 3bc0136c: b7e5 j 3bc01354 + 3bc0136e: 858a mv a1,sp + 3bc01370: 8522 mv a0,s0 + 3bc01372: c99ff0ef jal ra,3bc0100a + 3bc01376: fe054ae3 bltz a0,3bc0136a + 3bc0137a: 002c addi a1,sp,8 + 3bc0137c: 8522 mv a0,s0 + 3bc0137e: db3ff0ef jal ra,3bc01130 + 3bc01382: fe0544e3 bltz a0,3bc0136a + 3bc01386: c87ff097 auipc ra,0xc87ff + 3bc0138a: d3a080e7 jalr -710(ra) # 44000c0 + 3bc0138e: 02a45b63 bge s0,a0,3bc013c4 + 3bc01392: dbbfe0ef jal ra,3bc0014c + 3bc01396: f2dfe0ef jal ra,3bc002c2 + 3bc0139a: c9aff0ef jal ra,3bc00834 + 3bc0139e: 6582 ld a1,0(sp) + 3bc013a0: c5a5 beqz a1,3bc01408 + 3bc013a2: 00009517 auipc a0,0x9 + 3bc013a6: 1ae50513 addi a0,a0,430 # 3bc0a550 + 3bc013aa: faffe0ef jal ra,3bc00358 + 3bc013ae: 65a2 ld a1,8(sp) + 3bc013b0: 6502 ld a0,0(sp) + 3bc013b2: e69fe0ef jal ra,3bc0021a + 3bc013b6: 70a2 ld ra,40(sp) + 3bc013b8: 7402 ld s0,32(sp) + 3bc013ba: 64e2 ld s1,24(sp) + 3bc013bc: 6942 ld s2,16(sp) + 3bc013be: 4501 li a0,0 + 3bc013c0: 6145 addi sp,sp,48 + 3bc013c2: 8082 ret + 3bc013c4: c87ff097 auipc ra,0xc87ff + 3bc013c8: c5c080e7 jalr -932(ra) # 4400020 + 3bc013cc: 00a487bb addw a5,s1,a0 + 3bc013d0: 85a2 mv a1,s0 + 3bc013d2: 02f96363 bltu s2,a5,3bc013f8 + 3bc013d6: 4505 li a0,1 + 3bc013d8: 00f51533 sll a0,a0,a5 + 3bc013dc: 02957513 andi a0,a0,41 + 3bc013e0: cd01 beqz a0,3bc013f8 + 3bc013e2: 00009517 auipc a0,0x9 + 3bc013e6: e7e50513 addi a0,a0,-386 # 3bc0a260 + 3bc013ea: f6ffe0ef jal ra,3bc00358 + 3bc013ee: c87ff097 auipc ra,0xc87ff + 3bc013f2: c92080e7 jalr -878(ra) # 4400080 + 3bc013f6: bfb1 j 3bc01352 + 3bc013f8: 00009517 auipc a0,0x9 + 3bc013fc: 13850513 addi a0,a0,312 # 3bc0a530 + 3bc01400: f59fe0ef jal ra,3bc00358 + 3bc01404: 9b6ff0ef jal ra,3bc005ba + 3bc01408: 65a2 ld a1,8(sp) + 3bc0140a: 00009517 auipc a0,0x9 + 3bc0140e: 16650513 addi a0,a0,358 # 3bc0a570 + 3bc01412: f47fe0ef jal ra,3bc00358 + 3bc01416: 6522 ld a0,8(sp) + 3bc01418: e7bfe0ef jal ra,3bc00292 + 3bc0141c: bf69 j 3bc013b6 + +000000003bc0141e : + 3bc0141e: 1141 addi sp,sp,-16 + 3bc01420: e406 sd ra,8(sp) + 3bc01422: b200f737 lui a4,0xb200f + 3bc01426: e022 sd s0,0(sp) + 3bc01428: 030007b7 lui a5,0x3000 + 3bc0142c: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc01430: fd6ff0ef jal ra,3bc00c06 + 3bc01434: 0000a797 auipc a5,0xa + 3bc01438: 00c7b783 ld a5,12(a5) # 3bc0b440 + 3bc0143c: 00a79023 sh a0,0(a5) + 3bc01440: 00009617 auipc a2,0x9 + 3bc01444: bb060613 addi a2,a2,-1104 # 3bc09ff0 + 3bc01448: 00009597 auipc a1,0x9 + 3bc0144c: bc858593 addi a1,a1,-1080 # 3bc0a010 + 3bc01450: 00009517 auipc a0,0x9 + 3bc01454: 14050513 addi a0,a0,320 # 3bc0a590 + 3bc01458: f01fe0ef jal ra,3bc00358 + 3bc0145c: 0e000437 lui s0,0xe000 + 3bc01460: 400c lw a1,0(s0) + 3bc01462: 00009517 auipc a0,0x9 + 3bc01466: 13e50513 addi a0,a0,318 # 3bc0a5a0 + 3bc0146a: eeffe0ef jal ra,3bc00358 + 3bc0146e: 3c0027b7 lui a5,0x3c002 + 3bc01472: 47cc lw a1,12(a5) + 3bc01474: 0e07a603 lw a2,224(a5) # 3c0020e0 <__BL2_END__+0x3eecd0> + 3bc01478: 00009517 auipc a0,0x9 + 3bc0147c: 14050513 addi a0,a0,320 # 3bc0a5b8 + 3bc01480: ed9fe0ef jal ra,3bc00358 + 3bc01484: 4c0c lw a1,24(s0) + 3bc01486: 00009517 auipc a0,0x9 + 3bc0148a: 16a50513 addi a0,a0,362 # 3bc0a5f0 + 3bc0148e: 2581 sext.w a1,a1 + 3bc01490: ec9fe0ef jal ra,3bc00358 + 3bc01494: 9a2ff0ef jal ra,3bc00636 + 3bc01498: b9aff0ef jal ra,3bc00832 + 3bc0149c: bdcff0ef jal ra,3bc00878 + 3bc014a0: 93fff0ef jal ra,3bc00dde + 3bc014a4: e95ff0ef jal ra,3bc01338 + 3bc014a8: 00009517 auipc a0,0x9 + 3bc014ac: 16050513 addi a0,a0,352 # 3bc0a608 + 3bc014b0: ea9fe0ef jal ra,3bc00358 + 3bc014b4: a001 j 3bc014b4 + +000000003bc014b6 : + 3bc014b6: 8082 ret + +000000003bc014b8 : + 3bc014b8: 00012797 auipc a5,0x12 + 3bc014bc: e4078793 addi a5,a5,-448 # 3bc132f8 + 3bc014c0: 6388 ld a0,0(a5) + 3bc014c2: 00b50733 add a4,a0,a1 + 3bc014c6: e398 sd a4,0(a5) + 3bc014c8: 00012797 auipc a5,0x12 + 3bc014cc: e387b783 ld a5,-456(a5) # 3bc13300 + 3bc014d0: 97ba add a5,a5,a4 + 3bc014d2: 02f76363 bltu a4,a5,3bc014f8 + 3bc014d6: 1141 addi sp,sp,-16 + 3bc014d8: 862e mv a2,a1 + 3bc014da: 00009517 auipc a0,0x9 + 3bc014de: 14650513 addi a0,a0,326 # 3bc0a620 + 3bc014e2: 00009597 auipc a1,0x9 + 3bc014e6: 2a658593 addi a1,a1,678 # 3bc0a788 <__func__.0> + 3bc014ea: e406 sd ra,8(sp) + 3bc014ec: e6dfe0ef jal ra,3bc00358 + 3bc014f0: 60a2 ld ra,8(sp) + 3bc014f2: 4501 li a0,0 + 3bc014f4: 0141 addi sp,sp,16 + 3bc014f6: 8082 ret + 3bc014f8: 8082 ret + +000000003bc014fa : + 3bc014fa: 711d addi sp,sp,-96 + 3bc014fc: 00000797 auipc a5,0x0 + 3bc01500: fbc78793 addi a5,a5,-68 # 3bc014b8 + 3bc01504: f83e sd a5,48(sp) + 3bc01506: 00000797 auipc a5,0x0 + 3bc0150a: fb078793 addi a5,a5,-80 # 3bc014b6 + 3bc0150e: ec86 sd ra,88(sp) + 3bc01510: e8a2 sd s0,80(sp) + 3bc01512: e4a6 sd s1,72(sp) + 3bc01514: e0ca sd s2,64(sp) + 3bc01516: ec36 sd a3,24(sp) + 3bc01518: f402 sd zero,40(sp) + 3bc0151a: fc3e sd a5,56(sp) + 3bc0151c: d202 sw zero,36(sp) + 3bc0151e: e19d bnez a1,3bc01544 + 3bc01520: 00009597 auipc a1,0x9 + 3bc01524: 27058593 addi a1,a1,624 # 3bc0a790 <__func__.1> + 3bc01528: 00009517 auipc a0,0x9 + 3bc0152c: 11850513 addi a0,a0,280 # 3bc0a640 + 3bc01530: e29fe0ef jal ra,3bc00358 + 3bc01534: 5429 li s0,-22 + 3bc01536: 60e6 ld ra,88(sp) + 3bc01538: 8522 mv a0,s0 + 3bc0153a: 6446 ld s0,80(sp) + 3bc0153c: 64a6 ld s1,72(sp) + 3bc0153e: 6906 ld s2,64(sp) + 3bc01540: 6125 addi sp,sp,96 + 3bc01542: 8082 ret + 3bc01544: 20500793 li a5,517 + 3bc01548: 07da slli a5,a5,0x16 + 3bc0154a: 842a mv s0,a0 + 3bc0154c: 00012717 auipc a4,0x12 + 3bc01550: daf73623 sd a5,-596(a4) # 3bc132f8 + 3bc01554: 84ae mv s1,a1 + 3bc01556: 001007b7 lui a5,0x100 + 3bc0155a: 85aa mv a1,a0 + 3bc0155c: 00009517 auipc a0,0x9 + 3bc01560: 10450513 addi a0,a0,260 # 3bc0a660 + 3bc01564: 8932 mv s2,a2 + 3bc01566: 00012717 auipc a4,0x12 + 3bc0156a: d8f73d23 sd a5,-614(a4) # 3bc13300 + 3bc0156e: debfe0ef jal ra,3bc00358 + 3bc01572: 67e2 ld a5,24(sp) + 3bc01574: 4611 li a2,4 + 3bc01576: 00590593 addi a1,s2,5 + 3bc0157a: 17ed addi a5,a5,-5 + 3bc0157c: 1008 addi a0,sp,32 + 3bc0157e: ec3e sd a5,24(sp) + 3bc01580: cecff0ef jal ra,3bc00a6c + 3bc01584: 67e2 ld a5,24(sp) + 3bc01586: 02016583 lwu a1,32(sp) + 3bc0158a: 00009517 auipc a0,0x9 + 3bc0158e: 0ee50513 addi a0,a0,238 # 3bc0a678 + 3bc01592: 17e1 addi a5,a5,-8 + 3bc01594: f42e sd a1,40(sp) + 3bc01596: ec3e sd a5,24(sp) + 3bc01598: dc1fe0ef jal ra,3bc00358 + 3bc0159c: 181c addi a5,sp,48 + 3bc0159e: e03e sd a5,0(sp) + 3bc015a0: 8522 mv a0,s0 + 3bc015a2: 02410893 addi a7,sp,36 + 3bc015a6: 4805 li a6,1 + 3bc015a8: 4795 li a5,5 + 3bc015aa: 874a mv a4,s2 + 3bc015ac: 0834 addi a3,sp,24 + 3bc015ae: 00d90613 addi a2,s2,13 + 3bc015b2: 102c addi a1,sp,40 + 3bc015b4: 5f5040ef jal ra,3bc063a8 + 3bc015b8: 842a mv s0,a0 + 3bc015ba: c919 beqz a0,3bc015d0 + 3bc015bc: 5612 lw a2,36(sp) + 3bc015be: 85aa mv a1,a0 + 3bc015c0: 00009517 auipc a0,0x9 + 3bc015c4: 0d850513 addi a0,a0,216 # 3bc0a698 + 3bc015c8: d91fe0ef jal ra,3bc00358 + 3bc015cc: 5449 li s0,-14 + 3bc015ce: b7a5 j 3bc01536 + 3bc015d0: 75a2 ld a1,40(sp) + 3bc015d2: 00009517 auipc a0,0x9 + 3bc015d6: 0ee50513 addi a0,a0,238 # 3bc0a6c0 + 3bc015da: e08c sd a1,0(s1) + 3bc015dc: d7dfe0ef jal ra,3bc00358 + 3bc015e0: bf99 j 3bc01536 + +000000003bc015e2 : + 3bc015e2: 85aa mv a1,a0 + 3bc015e4: 4501 li a0,0 + 3bc015e6: bdc9 j 3bc014b8 + +000000003bc015e8 : + 3bc015e8: 02b50633 mul a2,a0,a1 + 3bc015ec: 1101 addi sp,sp,-32 + 3bc015ee: e822 sd s0,16(sp) + 3bc015f0: ec06 sd ra,24(sp) + 3bc015f2: 8532 mv a0,a2 + 3bc015f4: e432 sd a2,8(sp) + 3bc015f6: fedff0ef jal ra,3bc015e2 + 3bc015fa: 842a mv s0,a0 + 3bc015fc: c509 beqz a0,3bc01606 + 3bc015fe: 6622 ld a2,8(sp) + 3bc01600: 4581 li a1,0 + 3bc01602: c10ff0ef jal ra,3bc00a12 + 3bc01606: 60e2 ld ra,24(sp) + 3bc01608: 8522 mv a0,s0 + 3bc0160a: 6442 ld s0,16(sp) + 3bc0160c: 6105 addi sp,sp,32 + 3bc0160e: 8082 ret + +000000003bc01610 : + 3bc01610: 8082 ret + +000000003bc01612 : + 3bc01612: 20500793 li a5,517 + 3bc01616: 715d addi sp,sp,-80 + 3bc01618: 07da slli a5,a5,0x16 + 3bc0161a: e0a2 sd s0,64(sp) + 3bc0161c: f84a sd s2,48(sp) + 3bc0161e: 00012717 auipc a4,0x12 + 3bc01622: ccf73d23 sd a5,-806(a4) # 3bc132f8 + 3bc01626: 842a mv s0,a0 + 3bc01628: 001007b7 lui a5,0x100 + 3bc0162c: 892e mv s2,a1 + 3bc0162e: 85aa mv a1,a0 + 3bc01630: 00009517 auipc a0,0x9 + 3bc01634: 0a850513 addi a0,a0,168 # 3bc0a6d8 + 3bc01638: e486 sd ra,72(sp) + 3bc0163a: e436 sd a3,8(sp) + 3bc0163c: 00012717 auipc a4,0x12 + 3bc01640: ccf73223 sd a5,-828(a4) # 3bc13300 + 3bc01644: fc26 sd s1,56(sp) + 3bc01646: f44e sd s3,40(sp) + 3bc01648: 89b2 mv s3,a2 + 3bc0164a: d0ffe0ef jal ra,3bc00358 + 3bc0164e: 06400593 li a1,100 + 3bc01652: 0828 addi a0,sp,24 + 3bc01654: 38b050ef jal ra,3bc071de + 3bc01658: 84aa mv s1,a0 + 3bc0165a: 1b7050ef jal ra,3bc07010 + 3bc0165e: 2501 sext.w a0,a0 + 3bc01660: c105 beqz a0,3bc01680 + 3bc01662: 85a6 mv a1,s1 + 3bc01664: 00009517 auipc a0,0x9 + 3bc01668: 08c50513 addi a0,a0,140 # 3bc0a6f0 + 3bc0166c: cedfe0ef jal ra,3bc00358 + 3bc01670: 557d li a0,-1 + 3bc01672: 60a6 ld ra,72(sp) + 3bc01674: 6406 ld s0,64(sp) + 3bc01676: 74e2 ld s1,56(sp) + 3bc01678: 7942 ld s2,48(sp) + 3bc0167a: 79a2 ld s3,40(sp) + 3bc0167c: 6161 addi sp,sp,80 + 3bc0167e: 8082 ret + 3bc01680: 6562 ld a0,24(sp) + 3bc01682: 4781 li a5,0 + 3bc01684: 0038 addi a4,sp,8 + 3bc01686: 85a2 mv a1,s0 + 3bc01688: 86ce mv a3,s3 + 3bc0168a: 864a mv a2,s2 + 3bc0168c: 383050ef jal ra,3bc0720e + 3bc01690: 6622 ld a2,8(sp) + 3bc01692: 00093583 ld a1,0(s2) + 3bc01696: 86aa mv a3,a0 + 3bc01698: 842a mv s0,a0 + 3bc0169a: 00009517 auipc a0,0x9 + 3bc0169e: 06e50513 addi a0,a0,110 # 3bc0a708 + 3bc016a2: cb7fe0ef jal ra,3bc00358 + 3bc016a6: 8526 mv a0,s1 + 3bc016a8: 169050ef jal ra,3bc07010 + 3bc016ac: 0005079b sext.w a5,a0 + 3bc016b0: 4501 li a0,0 + 3bc016b2: d3e1 beqz a5,3bc01672 + 3bc016b4: 85a2 mv a1,s0 + 3bc016b6: 00009517 auipc a0,0x9 + 3bc016ba: 07a50513 addi a0,a0,122 # 3bc0a730 + 3bc016be: b77d j 3bc0166c + +000000003bc016c0 : + 3bc016c0: 7139 addi sp,sp,-64 + 3bc016c2: 87ba mv a5,a4 + 3bc016c4: ec4e sd s3,24(sp) + 3bc016c6: e852 sd s4,16(sp) + 3bc016c8: e456 sd s5,8(sp) + 3bc016ca: 89b2 mv s3,a2 + 3bc016cc: 8a36 mv s4,a3 + 3bc016ce: 8aba mv s5,a4 + 3bc016d0: 8736 mv a4,a3 + 3bc016d2: 86b2 mv a3,a2 + 3bc016d4: 6190 ld a2,0(a1) + 3bc016d6: f426 sd s1,40(sp) + 3bc016d8: f04a sd s2,32(sp) + 3bc016da: 84ae mv s1,a1 + 3bc016dc: 892a mv s2,a0 + 3bc016de: 85aa mv a1,a0 + 3bc016e0: 00009517 auipc a0,0x9 + 3bc016e4: 07050513 addi a0,a0,112 # 3bc0a750 + 3bc016e8: fc06 sd ra,56(sp) + 3bc016ea: f822 sd s0,48(sp) + 3bc016ec: c6dfe0ef jal ra,3bc00358 + 3bc016f0: 4785 li a5,1 + 3bc016f2: 02fa8f63 beq s5,a5,3bc01730 + 3bc016f6: 4789 li a5,2 + 3bc016f8: 5429 li s0,-22 + 3bc016fa: 00fa9963 bne s5,a5,3bc0170c + 3bc016fe: 86d2 mv a3,s4 + 3bc01700: 864e mv a2,s3 + 3bc01702: 85a6 mv a1,s1 + 3bc01704: 854a mv a0,s2 + 3bc01706: f0dff0ef jal ra,3bc01612 + 3bc0170a: 842a mv s0,a0 + 3bc0170c: 608c ld a1,0(s1) + 3bc0170e: 8622 mv a2,s0 + 3bc01710: 00009517 auipc a0,0x9 + 3bc01714: 06050513 addi a0,a0,96 # 3bc0a770 + 3bc01718: c41fe0ef jal ra,3bc00358 + 3bc0171c: 70e2 ld ra,56(sp) + 3bc0171e: 8522 mv a0,s0 + 3bc01720: 7442 ld s0,48(sp) + 3bc01722: 74a2 ld s1,40(sp) + 3bc01724: 7902 ld s2,32(sp) + 3bc01726: 69e2 ld s3,24(sp) + 3bc01728: 6a42 ld s4,16(sp) + 3bc0172a: 6aa2 ld s5,8(sp) + 3bc0172c: 6121 addi sp,sp,64 + 3bc0172e: 8082 ret + 3bc01730: 86d2 mv a3,s4 + 3bc01732: 864e mv a2,s3 + 3bc01734: 85a6 mv a1,s1 + 3bc01736: 854a mv a0,s2 + 3bc01738: dc3ff0ef jal ra,3bc014fa + 3bc0173c: b7f9 j 3bc0170a + +000000003bc0173e : + 3bc0173e: 4108 lw a0,0(a0) + 3bc01740: 2501 sext.w a0,a0 + 3bc01742: 8082 ret + +000000003bc01744 : + 3bc01744: c188 sw a0,0(a1) + 3bc01746: 8082 ret + +000000003bc01748 : + 3bc01748: 8082 ret + +000000003bc0174a : + 3bc0174a: 00012717 auipc a4,0x12 + 3bc0174e: cc170713 addi a4,a4,-831 # 3bc1340b + 3bc01752: 00074783 lbu a5,0(a4) + 3bc01756: eb89 bnez a5,3bc01768 + 3bc01758: 0000a517 auipc a0,0xa + 3bc0175c: d9053503 ld a0,-624(a0) # 3bc0b4e8 + 3bc01760: 2785 addiw a5,a5,1 + 3bc01762: 00f70023 sb a5,0(a4) + 3bc01766: 8082 ret + 3bc01768: 4685 li a3,1 + 3bc0176a: 00d79763 bne a5,a3,3bc01778 + 3bc0176e: 0000a517 auipc a0,0xa + 3bc01772: d8253503 ld a0,-638(a0) # 3bc0b4f0 + 3bc01776: b7ed j 3bc01760 + 3bc01778: 0000a517 auipc a0,0xa + 3bc0177c: d8053503 ld a0,-640(a0) # 3bc0b4f8 + 3bc01780: b7c5 j 3bc01760 + +000000003bc01782 : + 3bc01782: 8082 ret + +000000003bc01784 : + 3bc01784: 698c ld a1,16(a1) + 3bc01786: 00012517 auipc a0,0x12 + 3bc0178a: b8253503 ld a0,-1150(a0) # 3bc13308 + 3bc0178e: 1141 addi sp,sp,-16 + 3bc01790: 461d li a2,7 + 3bc01792: 0511 addi a0,a0,4 + 3bc01794: e406 sd ra,8(sp) + 3bc01796: ad6ff0ef jal ra,3bc00a6c + 3bc0179a: 60a2 ld ra,8(sp) + 3bc0179c: 0141 addi sp,sp,16 + 3bc0179e: 8082 ret + +000000003bc017a0 : + 3bc017a0: 00009597 auipc a1,0x9 + 3bc017a4: 40058593 addi a1,a1,1024 # 3bc0aba0 <__func__.5> + 3bc017a8: 00009517 auipc a0,0x9 + 3bc017ac: ff850513 addi a0,a0,-8 # 3bc0a7a0 <__func__.1+0x10> + 3bc017b0: ba9fe06f j 3bc00358 + +000000003bc017b4 : + 3bc017b4: 00012797 auipc a5,0x12 + 3bc017b8: c40788a3 sb zero,-943(a5) # 3bc13405 + 3bc017bc: 4785 li a5,1 + 3bc017be: 00012717 auipc a4,0x12 + 3bc017c2: c4f706a3 sb a5,-947(a4) # 3bc1340b + 3bc017c6: 00009597 auipc a1,0x9 + 3bc017ca: 3ca58593 addi a1,a1,970 # 3bc0ab90 <__func__.4> + 3bc017ce: 00012797 auipc a5,0x12 + 3bc017d2: c2078ca3 sb zero,-967(a5) # 3bc13407 + 3bc017d6: 00009517 auipc a0,0x9 + 3bc017da: fca50513 addi a0,a0,-54 # 3bc0a7a0 <__func__.1+0x10> + 3bc017de: b7bfe06f j 3bc00358 + +000000003bc017e2 : + 3bc017e2: 1141 addi sp,sp,-16 + 3bc017e4: 00009597 auipc a1,0x9 + 3bc017e8: 3a458593 addi a1,a1,932 # 3bc0ab88 <__func__.1> + 3bc017ec: 00009517 auipc a0,0x9 + 3bc017f0: fcc50513 addi a0,a0,-52 # 3bc0a7b8 <__func__.1+0x28> + 3bc017f4: e406 sd ra,8(sp) + 3bc017f6: b63fe0ef jal ra,3bc00358 + 3bc017fa: 60a2 ld ra,8(sp) + 3bc017fc: 0000a797 auipc a5,0xa + 3bc01800: dc07b223 sd zero,-572(a5) # 3bc0b5c0 + 3bc01804: 0141 addi sp,sp,16 + 3bc01806: 8082 ret + +000000003bc01808 : + 3bc01808: 1141 addi sp,sp,-16 + 3bc0180a: e022 sd s0,0(sp) + 3bc0180c: 00009597 auipc a1,0x9 + 3bc01810: 37458593 addi a1,a1,884 # 3bc0ab80 <__func__.0> + 3bc01814: 842a mv s0,a0 + 3bc01816: 00009517 auipc a0,0x9 + 3bc0181a: fa250513 addi a0,a0,-94 # 3bc0a7b8 <__func__.1+0x28> + 3bc0181e: e406 sd ra,8(sp) + 3bc01820: b39fe0ef jal ra,3bc00358 + 3bc01824: 0000a797 auipc a5,0xa + 3bc01828: d9c78793 addi a5,a5,-612 # 3bc0b5c0 + 3bc0182c: 6398 ld a4,0(a5) + 3bc0182e: cf01 beqz a4,3bc01846 + 3bc01830: 00009517 auipc a0,0x9 + 3bc01834: f9850513 addi a0,a0,-104 # 3bc0a7c8 <__func__.1+0x38> + 3bc01838: b21fe0ef jal ra,3bc00358 + 3bc0183c: 60a2 ld ra,8(sp) + 3bc0183e: 6402 ld s0,0(sp) + 3bc01840: 4501 li a0,0 + 3bc01842: 0141 addi sp,sp,16 + 3bc01844: 8082 ret + 3bc01846: e380 sd s0,0(a5) + 3bc01848: bfd5 j 3bc0183c + +000000003bc0184a : + 3bc0184a: 1101 addi sp,sp,-32 + 3bc0184c: e822 sd s0,16(sp) + 3bc0184e: 842a mv s0,a0 + 3bc01850: 852e mv a0,a1 + 3bc01852: e42e sd a1,8(sp) + 3bc01854: ec06 sd ra,24(sp) + 3bc01856: b04ff0ef jal ra,3bc00b5a + 3bc0185a: 0506 slli a0,a0,0x1 + 3bc0185c: 0025071b addiw a4,a0,2 + 3bc01860: 87a2 mv a5,s0 + 3bc01862: 1827d70b sbia a4,(a5),2,0 + 3bc01866: 470d li a4,3 + 3bc01868: 00e400a3 sb a4,1(s0) # e000001 + 3bc0186c: 06400713 li a4,100 + 3bc01870: 65a2 ld a1,8(sp) + 3bc01872: 00a77463 bgeu a4,a0,3bc0187a + 3bc01876: 06400513 li a0,100 + 3bc0187a: 4701 li a4,0 + 3bc0187c: 00171693 slli a3,a4,0x1 + 3bc01880: 00a6e663 bltu a3,a0,3bc0188c + 3bc01884: 60e2 ld ra,24(sp) + 3bc01886: 6442 ld s0,16(sp) + 3bc01888: 6105 addi sp,sp,32 + 3bc0188a: 8082 ret + 3bc0188c: 80e5c68b lrbu a3,a1,a4,0 + 3bc01890: 0705 addi a4,a4,1 + 3bc01892: 1827d68b sbia a3,(a5),2,0 + 3bc01896: fe078fa3 sb zero,-1(a5) + 3bc0189a: b7cd j 3bc0187c + +000000003bc0189c : + 3bc0189c: 5d98 lw a4,56(a1) + 3bc0189e: fc600793 li a5,-58 + 3bc018a2: 22f70663 beq a4,a5,3bc01ace + 3bc018a6: 699c ld a5,16(a1) + 3bc018a8: 7179 addi sp,sp,-48 + 3bc018aa: e052 sd s4,0(sp) + 3bc018ac: f406 sd ra,40(sp) + 3bc018ae: f022 sd s0,32(sp) + 3bc018b0: ec26 sd s1,24(sp) + 3bc018b2: e84a sd s2,16(sp) + 3bc018b4: e44e sd s3,8(sp) + 3bc018b6: 0037c403 lbu s0,3(a5) + 3bc018ba: 0047c703 lbu a4,4(a5) + 3bc018be: 0017c483 lbu s1,1(a5) + 3bc018c2: 1402 slli s0,s0,0x20 + 3bc018c4: 0762 slli a4,a4,0x18 + 3bc018c6: 943a add s0,s0,a4 + 3bc018c8: 0077c703 lbu a4,7(a5) + 3bc018cc: 0027c603 lbu a2,2(a5) + 3bc018d0: 0084949b slliw s1,s1,0x8 + 3bc018d4: 943a add s0,s0,a4 + 3bc018d6: 0057c703 lbu a4,5(a5) + 3bc018da: 9e25 addw a2,a2,s1 + 3bc018dc: 00012a17 auipc s4,0x12 + 3bc018e0: a4ca0a13 addi s4,s4,-1460 # 3bc13328 + 3bc018e4: 0742 slli a4,a4,0x10 + 3bc018e6: 943a add s0,s0,a4 + 3bc018e8: 0067c703 lbu a4,6(a5) + 3bc018ec: 000a3583 ld a1,0(s4) + 3bc018f0: 84b2 mv s1,a2 + 3bc018f2: 0722 slli a4,a4,0x8 + 3bc018f4: 943a add s0,s0,a4 + 3bc018f6: ee05 bnez a2,3bc0192e + 3bc018f8: e81d bnez s0,3bc0192e + 3bc018fa: 00012797 auipc a5,0x12 + 3bc018fe: a267b783 ld a5,-1498(a5) # 3bc13320 + 3bc01902: 00012717 auipc a4,0x12 + 3bc01906: ae672703 lw a4,-1306(a4) # 3bc133e8 + 3bc0190a: 00012517 auipc a0,0x12 + 3bc0190e: a3e53503 ld a0,-1474(a0) # 3bc13348 + 3bc01912: cf98 sw a4,24(a5) + 3bc01914: 7118 ld a4,32(a0) + 3bc01916: 7402 ld s0,32(sp) + 3bc01918: 70a2 ld ra,40(sp) + 3bc0191a: 64e2 ld s1,24(sp) + 3bc0191c: 6942 ld s2,16(sp) + 3bc0191e: 69a2 ld s3,8(sp) + 3bc01920: 6a02 ld s4,0(sp) + 3bc01922: 7318 ld a4,32(a4) + 3bc01924: eb8c sd a1,16(a5) + 3bc01926: cfcc sw a1,28(a5) + 3bc01928: 85be mv a1,a5 + 3bc0192a: 6145 addi sp,sp,48 + 3bc0192c: 8702 jr a4 + 3bc0192e: 0007c903 lbu s2,0(a5) + 3bc01932: 4501 li a0,0 + 3bc01934: 5d3020ef jal ra,3bc04706 + 3bc01938: 4789 li a5,2 + 3bc0193a: 89aa mv s3,a0 + 3bc0193c: 0ef90763 beq s2,a5,3bc01a2a + 3bc01940: 0327e363 bltu a5,s2,3bc01966 + 3bc01944: 0c091863 bnez s2,3bc01a14 + 3bc01948: 000a3583 ld a1,0(s4) + 3bc0194c: ff84861b addiw a2,s1,-8 + 3bc01950: 00012517 auipc a0,0x12 + 3bc01954: a0053503 ld a0,-1536(a0) # 3bc13350 + 3bc01958: 7c06360b extu a2,a2,31,0 + 3bc0195c: 05a1 addi a1,a1,8 + 3bc0195e: 9522 add a0,a0,s0 + 3bc01960: 90cff0ef jal ra,3bc00a6c + 3bc01964: a021 j 3bc0196c + 3bc01966: 478d li a5,3 + 3bc01968: 0ef90163 beq s2,a5,3bc01a4a + 3bc0196c: 0000a417 auipc s0,0xa + 3bc01970: d2440413 addi s0,s0,-732 # 3bc0b690 + 3bc01974: 6008 ld a0,0(s0) + 3bc01976: 4641 li a2,16 + 3bc01978: 4581 li a1,0 + 3bc0197a: 898ff0ef jal ra,3bc00a12 + 3bc0197e: 601c ld a5,0(s0) + 3bc01980: 00012617 auipc a2,0x12 + 3bc01984: a8460613 addi a2,a2,-1404 # 3bc13404 + 3bc01988: 00064703 lbu a4,0(a2) + 3bc0198c: 0089951b slliw a0,s3,0x8 + 3bc01990: 00012697 auipc a3,0x12 + 3bc01994: a506a683 lw a3,-1456(a3) # 3bc133e0 + 3bc01998: 0089d99b srliw s3,s3,0x8 + 3bc0199c: 01356533 or a0,a0,s3 + 3bc019a0: 00012497 auipc s1,0x12 + 3bc019a4: 97848493 addi s1,s1,-1672 # 3bc13318 + 3bc019a8: 9006968b revw a3,a3 + 3bc019ac: 00a79023 sh a0,0(a5) + 3bc019b0: 00a79123 sh a0,2(a5) + 3bc019b4: c794 sw a3,8(a5) + 3bc019b6: 6088 ld a0,0(s1) + 3bc019b8: 00012697 auipc a3,0x12 + 3bc019bc: a2c6a683 lw a3,-1492(a3) # 3bc133e4 + 3bc019c0: 00e783a3 sb a4,7(a5) + 3bc019c4: 9006968b revw a3,a3 + 3bc019c8: 2705 addiw a4,a4,1 + 3bc019ca: 01278323 sb s2,6(a5) + 3bc019ce: 00079223 sh zero,4(a5) + 3bc019d2: c7d4 sw a3,12(a5) + 3bc019d4: 00e60023 sb a4,0(a2) + 3bc019d8: 4581 li a1,0 + 3bc019da: 04000613 li a2,64 + 3bc019de: 834ff0ef jal ra,3bc00a12 + 3bc019e2: 608c ld a1,0(s1) + 3bc019e4: 47c1 li a5,16 + 3bc019e6: 00012517 auipc a0,0x12 + 3bc019ea: 95a53503 ld a0,-1702(a0) # 3bc13340 + 3bc019ee: cd9c sw a5,24(a1) + 3bc019f0: 601c ld a5,0(s0) + 3bc019f2: 7402 ld s0,32(sp) + 3bc019f4: 70a2 ld ra,40(sp) + 3bc019f6: e99c sd a5,16(a1) + 3bc019f8: cddc sw a5,28(a1) + 3bc019fa: 00000797 auipc a5,0x0 + 3bc019fe: 15c78793 addi a5,a5,348 # 3bc01b56 + 3bc01a02: f59c sd a5,40(a1) + 3bc01a04: 711c ld a5,32(a0) + 3bc01a06: 64e2 ld s1,24(sp) + 3bc01a08: 6942 ld s2,16(sp) + 3bc01a0a: 69a2 ld s3,8(sp) + 3bc01a0c: 6a02 ld s4,0(sp) + 3bc01a0e: 739c ld a5,32(a5) + 3bc01a10: 6145 addi sp,sp,48 + 3bc01a12: 8782 jr a5 + 3bc01a14: 0e0007b7 lui a5,0xe000 + 3bc01a18: 0791 addi a5,a5,4 + 3bc01a1a: f4f419e3 bne s0,a5,3bc0196c + 3bc01a1e: 000a3583 ld a1,0(s4) + 3bc01a22: 4611 li a2,4 + 3bc01a24: 8522 mv a0,s0 + 3bc01a26: 05a1 addi a1,a1,8 + 3bc01a28: bf25 j 3bc01960 + 3bc01a2a: 00009517 auipc a0,0x9 + 3bc01a2e: da650513 addi a0,a0,-602 # 3bc0a7d0 <__func__.1+0x40> + 3bc01a32: 927fe0ef jal ra,3bc00358 + 3bc01a36: 00012797 auipc a5,0x12 + 3bc01a3a: 9c078723 sb zero,-1586(a5) # 3bc13404 + 3bc01a3e: 4785 li a5,1 + 3bc01a40: 00012717 auipc a4,0x12 + 3bc01a44: 9cf70323 sb a5,-1594(a4) # 3bc13406 + 3bc01a48: b715 j 3bc0196c + 3bc01a4a: 000a3583 ld a1,0(s4) + 3bc01a4e: ff84861b addiw a2,s1,-8 + 3bc01a52: 4501 li a0,0 + 3bc01a54: 05a1 addi a1,a1,8 + 3bc01a56: 4b1020ef jal ra,3bc04706 + 3bc01a5a: 842a mv s0,a0 + 3bc01a5c: 00009517 auipc a0,0x9 + 3bc01a60: d8c50513 addi a0,a0,-628 # 3bc0a7e8 <__func__.1+0x58> + 3bc01a64: 8f5fe0ef jal ra,3bc00358 + 3bc01a68: 67b1 lui a5,0xc + 3bc01a6a: 2401 sext.w s0,s0 + 3bc01a6c: 28378793 addi a5,a5,643 # c283 <__BSS_SIZE__+0x6673> + 3bc01a70: 02f41a63 bne s0,a5,3bc01aa4 + 3bc01a74: 00012797 auipc a5,0x12 + 3bc01a78: 98078823 sb zero,-1648(a5) # 3bc13404 + 3bc01a7c: 00012797 auipc a5,0x12 + 3bc01a80: 98c78793 addi a5,a5,-1652 # 3bc13408 + 3bc01a84: 4705 li a4,1 + 3bc01a86: 00e78023 sb a4,0(a5) + 3bc01a8a: 0e000737 lui a4,0xe000 + 3bc01a8e: 00072223 sw zero,4(a4) # e000004 + 3bc01a92: 0007c583 lbu a1,0(a5) + 3bc01a96: 00009517 auipc a0,0x9 + 3bc01a9a: d5a50513 addi a0,a0,-678 # 3bc0a7f0 <__func__.1+0x60> + 3bc01a9e: 8bbfe0ef jal ra,3bc00358 + 3bc01aa2: b5e9 j 3bc0196c + 3bc01aa4: 00012797 auipc a5,0x12 + 3bc01aa8: 96078223 sb zero,-1692(a5) # 3bc13408 + 3bc01aac: 0e0007b7 lui a5,0xe000 + 3bc01ab0: 0007a223 sw zero,4(a5) # e000004 + 3bc01ab4: 00009517 auipc a0,0x9 + 3bc01ab8: d5450513 addi a0,a0,-684 # 3bc0a808 <__func__.1+0x78> + 3bc01abc: 89dfe0ef jal ra,3bc00358 + 3bc01ac0: 00009517 auipc a0,0x9 + 3bc01ac4: d6850513 addi a0,a0,-664 # 3bc0a828 <__func__.1+0x98> + 3bc01ac8: 891fe0ef jal ra,3bc00358 + 3bc01acc: b545 j 3bc0196c + 3bc01ace: 8082 ret + +000000003bc01ad0 : + 3bc01ad0: 7179 addi sp,sp,-48 + 3bc01ad2: f406 sd ra,40(sp) + 3bc01ad4: f022 sd s0,32(sp) + 3bc01ad6: ec26 sd s1,24(sp) + 3bc01ad8: e84a sd s2,16(sp) + 3bc01ada: e44e sd s3,8(sp) + 3bc01adc: 4789 li a5,2 + 3bc01ade: 02f50263 beq a0,a5,3bc01b02 + 3bc01ae2: 478d li a5,3 + 3bc01ae4: 54fd li s1,-1 + 3bc01ae6: 0000a417 auipc s0,0xa + 3bc01aea: a7240413 addi s0,s0,-1422 # 3bc0b558 + 3bc01aee: 00f50e63 beq a0,a5,3bc01b0a + 3bc01af2: 70a2 ld ra,40(sp) + 3bc01af4: 7402 ld s0,32(sp) + 3bc01af6: 6942 ld s2,16(sp) + 3bc01af8: 69a2 ld s3,8(sp) + 3bc01afa: 8526 mv a0,s1 + 3bc01afc: 64e2 ld s1,24(sp) + 3bc01afe: 6145 addi sp,sp,48 + 3bc01b00: 8082 ret + 3bc01b02: 0000a417 auipc s0,0xa + 3bc01b06: a0640413 addi s0,s0,-1530 # 3bc0b508 + 3bc01b0a: 892e mv s2,a1 + 3bc01b0c: 7884458b ldia a1,(s0),8,0 + 3bc01b10: 4481 li s1,0 + 3bc01b12: d1e5 beqz a1,3bc01af2 + 3bc01b14: 0005c983 lbu s3,0(a1) + 3bc01b18: 00990533 add a0,s2,s1 + 3bc01b1c: 864e mv a2,s3 + 3bc01b1e: f4ffe0ef jal ra,3bc00a6c + 3bc01b22: 7884458b ldia a1,(s0),8,0 + 3bc01b26: 009984bb addw s1,s3,s1 + 3bc01b2a: b7e5 j 3bc01b12 + +000000003bc01b2c : + 3bc01b2c: 5d98 lw a4,56(a1) + 3bc01b2e: 57ed li a5,-5 + 3bc01b30: 02f71263 bne a4,a5,3bc01b54 + 3bc01b34: 1141 addi sp,sp,-16 + 3bc01b36: 00009517 auipc a0,0x9 + 3bc01b3a: d0250513 addi a0,a0,-766 # 3bc0a838 <__func__.1+0xa8> + 3bc01b3e: e406 sd ra,8(sp) + 3bc01b40: 819fe0ef jal ra,3bc00358 + 3bc01b44: 60a2 ld ra,8(sp) + 3bc01b46: 4785 li a5,1 + 3bc01b48: 00012717 auipc a4,0x12 + 3bc01b4c: 8cf700a3 sb a5,-1855(a4) # 3bc13409 + 3bc01b50: 0141 addi sp,sp,16 + 3bc01b52: 8082 ret + 3bc01b54: 8082 ret + +000000003bc01b56 : + 3bc01b56: 5d98 lw a4,56(a1) + 3bc01b58: fc600793 li a5,-58 + 3bc01b5c: 04f70463 beq a4,a5,3bc01ba4 + 3bc01b60: 1141 addi sp,sp,-16 + 3bc01b62: e022 sd s0,0(sp) + 3bc01b64: 00011417 auipc s0,0x11 + 3bc01b68: 7c440413 addi s0,s0,1988 # 3bc13328 + 3bc01b6c: 6008 ld a0,0(s0) + 3bc01b6e: 4581 li a1,0 + 3bc01b70: 4621 li a2,8 + 3bc01b72: e406 sd ra,8(sp) + 3bc01b74: e9ffe0ef jal ra,3bc00a12 + 3bc01b78: 00011597 auipc a1,0x11 + 3bc01b7c: 7a85b583 ld a1,1960(a1) # 3bc13320 + 3bc01b80: 00012797 auipc a5,0x12 + 3bc01b84: 8687a783 lw a5,-1944(a5) # 3bc133e8 + 3bc01b88: cd9c sw a5,24(a1) + 3bc01b8a: 601c ld a5,0(s0) + 3bc01b8c: 00011517 auipc a0,0x11 + 3bc01b90: 7bc53503 ld a0,1980(a0) # 3bc13348 + 3bc01b94: 6402 ld s0,0(sp) + 3bc01b96: e99c sd a5,16(a1) + 3bc01b98: cddc sw a5,28(a1) + 3bc01b9a: 711c ld a5,32(a0) + 3bc01b9c: 60a2 ld ra,8(sp) + 3bc01b9e: 739c ld a5,32(a5) + 3bc01ba0: 0141 addi sp,sp,16 + 3bc01ba2: 8782 jr a5 + 3bc01ba4: 8082 ret + +000000003bc01ba6 : + 3bc01ba6: 7159 addi sp,sp,-112 + 3bc01ba8: e4ce sd s3,72(sp) + 3bc01baa: fc56 sd s5,56(sp) + 3bc01bac: 00011997 auipc s3,0x11 + 3bc01bb0: 78498993 addi s3,s3,1924 # 3bc13330 + 3bc01bb4: 00011a97 auipc s5,0x11 + 3bc01bb8: 784a8a93 addi s5,s5,1924 # 3bc13338 + 3bc01bbc: eca6 sd s1,88(sp) + 3bc01bbe: 000ab603 ld a2,0(s5) + 3bc01bc2: 84aa mv s1,a0 + 3bc01bc4: 0009b503 ld a0,0(s3) + 3bc01bc8: e0d2 sd s4,64(sp) + 3bc01bca: f486 sd ra,104(sp) + 3bc01bcc: f0a2 sd s0,96(sp) + 3bc01bce: e8ca sd s2,80(sp) + 3bc01bd0: f85a sd s6,48(sp) + 3bc01bd2: f45e sd s7,40(sp) + 3bc01bd4: f062 sd s8,32(sp) + 3bc01bd6: ec66 sd s9,24(sp) + 3bc01bd8: 0204a803 lw a6,32(s1) + 3bc01bdc: 0015c703 lbu a4,1(a1) + 3bc01be0: 0005c683 lbu a3,0(a1) + 3bc01be4: 0065da03 lhu s4,6(a1) + 3bc01be8: 0025d783 lhu a5,2(a1) + 3bc01bec: 00000597 auipc a1,0x0 + 3bc01bf0: f4058593 addi a1,a1,-192 # 3bc01b2c + 3bc01bf4: f60c sd a1,40(a2) + 3bc01bf6: ea08 sd a0,16(a2) + 3bc01bf8: ce48 sw a0,28(a2) + 3bc01bfa: 4589 li a1,2 + 3bc01bfc: 02b80763 beq a6,a1,3bc01c2a + 3bc01c00: 458d li a1,3 + 3bc01c02: 4905 li s2,1 + 3bc01c04: 06b81063 bne a6,a1,3bc01c64 + 3bc01c08: 0000ab17 auipc s6,0xa + 3bc01c0c: 8b8b0b13 addi s6,s6,-1864 # 3bc0b4c0 + 3bc01c10: 0000ab97 auipc s7,0xa + 3bc01c14: 8a0b8b93 addi s7,s7,-1888 # 3bc0b4b0 + 3bc01c18: 0606f593 andi a1,a3,96 + 3bc01c1c: c185 beqz a1,3bc01c3c + 3bc01c1e: 02000693 li a3,32 + 3bc01c22: 36d58463 beq a1,a3,3bc01f8a + 3bc01c26: 4901 li s2,0 + 3bc01c28: a835 j 3bc01c64 + 3bc01c2a: 0000ab17 auipc s6,0xa + 3bc01c2e: 876b0b13 addi s6,s6,-1930 # 3bc0b4a0 + 3bc01c32: 0000ab97 auipc s7,0xa + 3bc01c36: 85eb8b93 addi s7,s7,-1954 # 3bc0b490 + 3bc01c3a: bff9 j 3bc01c18 + 3bc01c3c: 4621 li a2,8 + 3bc01c3e: 32c70d63 beq a4,a2,3bc01f78 + 3bc01c42: 4625 li a2,9 + 3bc01c44: 24c70a63 beq a4,a2,3bc01e98 + 3bc01c48: 4619 li a2,6 + 3bc01c4a: 597d li s2,-1 + 3bc01c4c: 00c71c63 bne a4,a2,3bc01c64 + 3bc01c50: 8abd andi a3,a3,15 + 3bc01c52: 4705 li a4,1 + 3bc01c54: 02e69663 bne a3,a4,3bc01c80 + 3bc01c58: 00009517 auipc a0,0x9 + 3bc01c5c: bf850513 addi a0,a0,-1032 # 3bc0a850 <__func__.1+0xc0> + 3bc01c60: ef8fe0ef jal ra,3bc00358 + 3bc01c64: 70a6 ld ra,104(sp) + 3bc01c66: 7406 ld s0,96(sp) + 3bc01c68: 64e6 ld s1,88(sp) + 3bc01c6a: 69a6 ld s3,72(sp) + 3bc01c6c: 6a06 ld s4,64(sp) + 3bc01c6e: 7ae2 ld s5,56(sp) + 3bc01c70: 7b42 ld s6,48(sp) + 3bc01c72: 7ba2 ld s7,40(sp) + 3bc01c74: 7c02 ld s8,32(sp) + 3bc01c76: 6ce2 ld s9,24(sp) + 3bc01c78: 854a mv a0,s2 + 3bc01c7a: 6946 ld s2,80(sp) + 3bc01c7c: 6165 addi sp,sp,112 + 3bc01c7e: 8082 ret + 3bc01c80: f2dd bnez a3,3bc01c26 + 3bc01c82: 0087d71b srliw a4,a5,0x8 + 3bc01c86: 377d addiw a4,a4,-1 + 3bc01c88: 3c07360b extu a2,a4,15,0 + 3bc01c8c: 46b9 li a3,14 + 3bc01c8e: 0ac6e663 bltu a3,a2,3bc01d3a + 3bc01c92: 00009697 auipc a3,0x9 + 3bc01c96: c9268693 addi a3,a3,-878 # 3bc0a924 <__func__.1+0x194> + 3bc01c9a: 44c6c70b lrw a4,a3,a2,2 + 3bc01c9e: 9736 add a4,a4,a3 + 3bc01ca0: 8702 jr a4 + 3bc01ca2: 0000a417 auipc s0,0xa + 3bc01ca6: a5640413 addi s0,s0,-1450 # 3bc0b6f8 + 3bc01caa: 00045583 lhu a1,0(s0) + 3bc01cae: cd89 beqz a1,3bc01cc8 + 3bc01cb0: 00009517 auipc a0,0x9 + 3bc01cb4: bd050513 addi a0,a0,-1072 # 3bc0a880 <__func__.1+0xf0> + 3bc01cb8: ea0fe0ef jal ra,3bc00358 + 3bc01cbc: 00045783 lhu a5,0(s0) + 3bc01cc0: 0000a717 auipc a4,0xa + 3bc01cc4: 8ef71823 sh a5,-1808(a4) # 3bc0b5b0 + 3bc01cc8: 0009b503 ld a0,0(s3) + 3bc01ccc: 4649 li a2,18 + 3bc01cce: 0000a597 auipc a1,0xa + 3bc01cd2: 8da58593 addi a1,a1,-1830 # 3bc0b5a8 + 3bc01cd6: df7fe0ef jal ra,3bc00acc + 3bc01cda: 4449 li s0,18 + 3bc01cdc: 4905 li s2,1 + 3bc01cde: 6c88 ld a0,24(s1) + 3bc01ce0: 014427b3 slt a5,s0,s4 + 3bc01ce4: 40fa140b mveqz s0,s4,a5 + 3bc01ce8: 711c ld a5,32(a0) + 3bc01cea: 000ab583 ld a1,0(s5) + 3bc01cee: 739c ld a5,32(a5) + 3bc01cf0: cd80 sw s0,24(a1) + 3bc01cf2: 9782 jalr a5 + 3bc01cf4: f20909e3 beqz s2,3bc01c26 + 3bc01cf8: c00017b7 lui a5,0xc0001 + 3bc01cfc: 03000737 lui a4,0x3000 + 3bc01d00: 0795 addi a5,a5,5 + 3bc01d02: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc01d06: b705 j 3bc01c26 + 3bc01d08: 0ff7f793 andi a5,a5,255 + 3bc01d0c: 4709 li a4,2 + 3bc01d0e: 02e78863 beq a5,a4,3bc01d3e + 3bc01d12: 02f76163 bltu a4,a5,3bc01d34 + 3bc01d16: 00011597 auipc a1,0x11 + 3bc01d1a: 69258593 addi a1,a1,1682 # 3bc133a8 + 3bc01d1e: e789 bnez a5,3bc01d28 + 3bc01d20: 0000a597 auipc a1,0xa + 3bc01d24: 95858593 addi a1,a1,-1704 # 3bc0b678 + 3bc01d28: 0005c403 lbu s0,0(a1) + 3bc01d2c: 8622 mv a2,s0 + 3bc01d2e: 0009b503 ld a0,0(s3) + 3bc01d32: a215 j 3bc01e56 + 3bc01d34: 470d li a4,3 + 3bc01d36: 00e78963 beq a5,a4,3bc01d48 + 3bc01d3a: 597d li s2,-1 + 3bc01d3c: b725 j 3bc01c64 + 3bc01d3e: 00011597 auipc a1,0x11 + 3bc01d42: 61a58593 addi a1,a1,1562 # 3bc13358 + 3bc01d46: b7cd j 3bc01d28 + 3bc01d48: ea1fe0ef jal ra,3bc00be8 + 3bc01d4c: 00009597 auipc a1,0x9 + 3bc01d50: b9c58593 addi a1,a1,-1124 # 3bc0a8e8 <__func__.1+0x158> + 3bc01d54: e55d bnez a0,3bc01e02 + 3bc01d56: 00011b17 auipc s6,0x11 + 3bc01d5a: 6b4b0b13 addi s6,s6,1716 # 3bc1340a + 3bc01d5e: 000b4903 lbu s2,0(s6) + 3bc01d62: 08091263 bnez s2,3bc01de6 + 3bc01d66: 4641 li a2,16 + 3bc01d68: 4581 li a1,0 + 3bc01d6a: 00011517 auipc a0,0x11 + 3bc01d6e: 60e50513 addi a0,a0,1550 # 3bc13378 + 3bc01d72: 03050bb7 lui s7,0x3050 + 3bc01d76: c9dfe0ef jal ra,3bc00a12 + 3bc01d7a: 4401 li s0,0 + 3bc01d7c: 104b8b93 addi s7,s7,260 # 3050104 <__BSS_SIZE__+0x304a4f4> + 3bc01d80: 00009c97 auipc s9,0x9 + 3bc01d84: b10c8c93 addi s9,s9,-1264 # 3bc0a890 <__func__.1+0x100> + 3bc01d88: 4c11 li s8,4 + 3bc01d8a: 448bc60b lrw a2,s7,s0,2 + 3bc01d8e: 0004059b sext.w a1,s0 + 3bc01d92: 8566 mv a0,s9 + 3bc01d94: 2601 sext.w a2,a2 + 3bc01d96: 4481560b srw a2,sp,s0,2 + 3bc01d9a: dbefe0ef jal ra,3bc00358 + 3bc01d9e: 4481478b lrw a5,sp,s0,2 + 3bc01da2: c391 beqz a5,3bc01da6 + 3bc01da4: 4905 li s2,1 + 3bc01da6: 0405 addi s0,s0,1 + 3bc01da8: ff8411e3 bne s0,s8,3bc01d8a + 3bc01dac: 06090663 beqz s2,3bc01e18 + 3bc01db0: 858a mv a1,sp + 3bc01db2: 4641 li a2,16 + 3bc01db4: 4501 li a0,0 + 3bc01db6: 151020ef jal ra,3bc04706 + 3bc01dba: 0005041b sext.w s0,a0 + 3bc01dbe: 85a2 mv a1,s0 + 3bc01dc0: 00009517 auipc a0,0x9 + 3bc01dc4: ae850513 addi a0,a0,-1304 # 3bc0a8a8 <__func__.1+0x118> + 3bc01dc8: d90fe0ef jal ra,3bc00358 + 3bc01dcc: 4681 li a3,0 + 3bc01dce: 4641 li a2,16 + 3bc01dd0: 7c04358b extu a1,s0,31,0 + 3bc01dd4: 00011517 auipc a0,0x11 + 3bc01dd8: 5a450513 addi a0,a0,1444 # 3bc13378 + 3bc01ddc: bbdfe0ef jal ra,3bc00998 + 3bc01de0: 4785 li a5,1 + 3bc01de2: 00fb0023 sb a5,0(s6) + 3bc01de6: 00011597 auipc a1,0x11 + 3bc01dea: 59258593 addi a1,a1,1426 # 3bc13378 + 3bc01dee: 00009517 auipc a0,0x9 + 3bc01df2: aea50513 addi a0,a0,-1302 # 3bc0a8d8 <__func__.1+0x148> + 3bc01df6: d62fe0ef jal ra,3bc00358 + 3bc01dfa: 00011597 auipc a1,0x11 + 3bc01dfe: 57e58593 addi a1,a1,1406 # 3bc13378 + 3bc01e02: 00011517 auipc a0,0x11 + 3bc01e06: 58650513 addi a0,a0,1414 # 3bc13388 + 3bc01e0a: a41ff0ef jal ra,3bc0184a + 3bc01e0e: 00011597 auipc a1,0x11 + 3bc01e12: 57a58593 addi a1,a1,1402 # 3bc13388 + 3bc01e16: bf09 j 3bc01d28 + 3bc01e18: 00011517 auipc a0,0x11 + 3bc01e1c: 5d452503 lw a0,1492(a0) # 3bc133ec + 3bc01e20: bc2fe0ef jal ra,3bc001e2 + 3bc01e24: 0005041b sext.w s0,a0 + 3bc01e28: 85a2 mv a1,s0 + 3bc01e2a: 00009517 auipc a0,0x9 + 3bc01e2e: a9650513 addi a0,a0,-1386 # 3bc0a8c0 <__func__.1+0x130> + 3bc01e32: bf59 j 3bc01dc8 + 3bc01e34: 00009597 auipc a1,0x9 + 3bc01e38: 69c58593 addi a1,a1,1692 # 3bc0b4d0 + 3bc01e3c: 4615 li a2,5 + 3bc01e3e: 0025d403 lhu s0,2(a1) + 3bc01e42: c8bfe0ef jal ra,3bc00acc + 3bc01e46: 0009b503 ld a0,0(s3) + 3bc01e4a: 461d li a2,7 + 3bc01e4c: 00009597 auipc a1,0x9 + 3bc01e50: 69458593 addi a1,a1,1684 # 3bc0b4e0 + 3bc01e54: 0515 addi a0,a0,5 + 3bc01e56: c77fe0ef jal ra,3bc00acc + 3bc01e5a: dc0406e3 beqz s0,3bc01c26 + 3bc01e5e: a809 j 3bc01e70 + 3bc01e60: 4629 li a2,10 + 3bc01e62: 0000a597 auipc a1,0xa + 3bc01e66: 81e58593 addi a1,a1,-2018 # 3bc0b680 + 3bc01e6a: c63fe0ef jal ra,3bc00acc + 3bc01e6e: 4429 li s0,10 + 3bc01e70: 4901 li s2,0 + 3bc01e72: b5b5 j 3bc01cde + 3bc01e74: 00950593 addi a1,a0,9 + 3bc01e78: 8542 mv a0,a6 + 3bc01e7a: c57ff0ef jal ra,3bc01ad0 + 3bc01e7e: 2525 addiw a0,a0,9 + 3bc01e80: 3c05350b extu a0,a0,15,0 + 3bc01e84: 00009597 auipc a1,0x9 + 3bc01e88: 5c458593 addi a1,a1,1476 # 3bc0b448 + 3bc01e8c: 0005041b sext.w s0,a0 + 3bc01e90: 00a59123 sh a0,2(a1) + 3bc01e94: 4625 li a2,9 + 3bc01e96: bd61 j 3bc01d2e + 3bc01e98: 4705 li a4,1 + 3bc01e9a: 597d li s2,-1 + 3bc01e9c: dcf764e3 bltu a4,a5,3bc01c64 + 3bc01ea0: e385 bnez a5,3bc01ec0 + 3bc01ea2: 00011797 auipc a5,0x11 + 3bc01ea6: 560782a3 sb zero,1381(a5) # 3bc13407 + 3bc01eaa: 6080 ld s0,0(s1) + 3bc01eac: d6848de3 beq s1,s0,3bc01c26 + 3bc01eb0: 6c1c ld a5,24(s0) + 3bc01eb2: c789 beqz a5,3bc01ebc + 3bc01eb4: 701c ld a5,32(s0) + 3bc01eb6: 8522 mv a0,s0 + 3bc01eb8: 679c ld a5,8(a5) + 3bc01eba: 9782 jalr a5 + 3bc01ebc: 6000 ld s0,0(s0) + 3bc01ebe: b7fd j 3bc01eac + 3bc01ec0: 00011797 auipc a5,0x11 + 3bc01ec4: 54778793 addi a5,a5,1351 # 3bc13407 + 3bc01ec8: 0007c683 lbu a3,0(a5) + 3bc01ecc: d4e68de3 beq a3,a4,3bc01c26 + 3bc01ed0: 00e78023 sb a4,0(a5) + 3bc01ed4: 6080 ld s0,0(s1) + 3bc01ed6: 00009917 auipc s2,0x9 + 3bc01eda: a2290913 addi s2,s2,-1502 # 3bc0a8f8 <__func__.1+0x168> + 3bc01ede: 00848d63 beq s1,s0,3bc01ef8 + 3bc01ee2: 6c08 ld a0,24(s0) + 3bc01ee4: c141 beqz a0,3bc01f64 + 3bc01ee6: 85ca mv a1,s2 + 3bc01ee8: c57fe0ef jal ra,3bc00b3e + 3bc01eec: ed25 bnez a0,3bc01f64 + 3bc01eee: 701c ld a5,32(s0) + 3bc01ef0: 85de mv a1,s7 + 3bc01ef2: 8522 mv a0,s0 + 3bc01ef4: 639c ld a5,0(a5) + 3bc01ef6: 9782 jalr a5 + 3bc01ef8: 6080 ld s0,0(s1) + 3bc01efa: 00009917 auipc s2,0x9 + 3bc01efe: a0e90913 addi s2,s2,-1522 # 3bc0a908 <__func__.1+0x178> + 3bc01f02: 00848d63 beq s1,s0,3bc01f1c + 3bc01f06: 6c08 ld a0,24(s0) + 3bc01f08: c125 beqz a0,3bc01f68 + 3bc01f0a: 85ca mv a1,s2 + 3bc01f0c: c33fe0ef jal ra,3bc00b3e + 3bc01f10: ed21 bnez a0,3bc01f68 + 3bc01f12: 701c ld a5,32(s0) + 3bc01f14: 85da mv a1,s6 + 3bc01f16: 8522 mv a0,s0 + 3bc01f18: 639c ld a5,0(a5) + 3bc01f1a: 9782 jalr a5 + 3bc01f1c: 6080 ld s0,0(s1) + 3bc01f1e: 00009917 auipc s2,0x9 + 3bc01f22: 9fa90913 addi s2,s2,-1542 # 3bc0a918 <__func__.1+0x188> + 3bc01f26: 02848063 beq s1,s0,3bc01f46 + 3bc01f2a: 6c08 ld a0,24(s0) + 3bc01f2c: c121 beqz a0,3bc01f6c + 3bc01f2e: 85ca mv a1,s2 + 3bc01f30: c0ffe0ef jal ra,3bc00b3e + 3bc01f34: ed05 bnez a0,3bc01f6c + 3bc01f36: 701c ld a5,32(s0) + 3bc01f38: 00009597 auipc a1,0x9 + 3bc01f3c: 56058593 addi a1,a1,1376 # 3bc0b498 + 3bc01f40: 8522 mv a0,s0 + 3bc01f42: 639c ld a5,0(a5) + 3bc01f44: 9782 jalr a5 + 3bc01f46: 689c ld a5,16(s1) + 3bc01f48: 00009717 auipc a4,0x9 + 3bc01f4c: 50774703 lbu a4,1287(a4) # 3bc0b44f + 3bc01f50: 04077713 andi a4,a4,64 + 3bc01f54: 6b9c ld a5,16(a5) + 3bc01f56: cf09 beqz a4,3bc01f70 + 3bc01f58: 4585 li a1,1 + 3bc01f5a: cc0786e3 beqz a5,3bc01c26 + 3bc01f5e: 8526 mv a0,s1 + 3bc01f60: 9782 jalr a5 + 3bc01f62: b1d1 j 3bc01c26 + 3bc01f64: 6000 ld s0,0(s0) + 3bc01f66: bfa5 j 3bc01ede + 3bc01f68: 6000 ld s0,0(s0) + 3bc01f6a: bf61 j 3bc01f02 + 3bc01f6c: 6000 ld s0,0(s0) + 3bc01f6e: bf65 j 3bc01f26 + 3bc01f70: ca078be3 beqz a5,3bc01c26 + 3bc01f74: 4581 li a1,0 + 3bc01f76: b7e5 j 3bc01f5e + 3bc01f78: 4605 li a2,1 + 3bc01f7a: 00011597 auipc a1,0x11 + 3bc01f7e: 48d58593 addi a1,a1,1165 # 3bc13407 + 3bc01f82: b4bfe0ef jal ra,3bc00acc + 3bc01f86: 4405 li s0,1 + 3bc01f88: b5e5 j 3bc01e70 + 3bc01f8a: 02100693 li a3,33 + 3bc01f8e: 04d70263 beq a4,a3,3bc01fd2 + 3bc01f92: 02200693 li a3,34 + 3bc01f96: 02d70263 beq a4,a3,3bc01fba + 3bc01f9a: 4901 li s2,0 + 3bc01f9c: ccb714e3 bne a4,a1,3bc01c64 + 3bc01fa0: fffff797 auipc a5,0xfffff + 3bc01fa4: 7e478793 addi a5,a5,2020 # 3bc01784 + 3bc01fa8: 000a041b sext.w s0,s4 + 3bc01fac: f61c sd a5,40(a2) + 3bc01fae: 4785 li a5,1 + 3bc01fb0: 00011717 auipc a4,0x11 + 3bc01fb4: 44f70aa3 sb a5,1109(a4) # 3bc13405 + 3bc01fb8: b54d j 3bc01e5a + 3bc01fba: 00011717 auipc a4,0x11 + 3bc01fbe: 34e73703 ld a4,846(a4) # 3bc13308 + 3bc01fc2: 00f71623 sh a5,12(a4) + 3bc01fc6: 4785 li a5,1 + 3bc01fc8: 00011717 auipc a4,0x11 + 3bc01fcc: 42f70ea3 sb a5,1085(a4) # 3bc13405 + 3bc01fd0: b999 j 3bc01c26 + 3bc01fd2: 00011597 auipc a1,0x11 + 3bc01fd6: 3365b583 ld a1,822(a1) # 3bc13308 + 3bc01fda: 8652 mv a2,s4 + 3bc01fdc: 0591 addi a1,a1,4 + 3bc01fde: 000a041b sext.w s0,s4 + 3bc01fe2: aebfe0ef jal ra,3bc00acc + 3bc01fe6: b7e1 j 3bc01fae + +000000003bc01fe8 : + 3bc01fe8: 8082 ret + +000000003bc01fea : + 3bc01fea: 00011797 auipc a5,0x11 + 3bc01fee: 89678793 addi a5,a5,-1898 # 3bc12880 + 3bc01ff2: 00009717 auipc a4,0x9 + 3bc01ff6: 4ef73323 sd a5,1254(a4) # 3bc0b4d8 + 3bc01ffa: 00011797 auipc a5,0x11 + 3bc01ffe: c0678793 addi a5,a5,-1018 # 3bc12c00 + 3bc02002: 00009717 auipc a4,0x9 + 3bc02006: 4ef73f23 sd a5,1278(a4) # 3bc0b500 + 3bc0200a: 00011797 auipc a5,0x11 + 3bc0200e: a7678793 addi a5,a5,-1418 # 3bc12a80 + 3bc02012: 00009717 auipc a4,0x9 + 3bc02016: 4cf73b23 sd a5,1238(a4) # 3bc0b4e8 + 3bc0201a: 00011797 auipc a5,0x11 + 3bc0201e: ae678793 addi a5,a5,-1306 # 3bc12b00 + 3bc02022: 00009717 auipc a4,0x9 + 3bc02026: 4cf73723 sd a5,1230(a4) # 3bc0b4f0 + 3bc0202a: 00011797 auipc a5,0x11 + 3bc0202e: b5678793 addi a5,a5,-1194 # 3bc12b80 + 3bc02032: 00009717 auipc a4,0x9 + 3bc02036: 4cf73323 sd a5,1222(a4) # 3bc0b4f8 + 3bc0203a: 00011797 auipc a5,0x11 + 3bc0203e: dc678793 addi a5,a5,-570 # 3bc12e00 + 3bc02042: 00009717 auipc a4,0x9 + 3bc02046: 5cf73723 sd a5,1486(a4) # 3bc0b610 + 3bc0204a: 00011797 auipc a5,0x11 + 3bc0204e: 23678793 addi a5,a5,566 # 3bc13280 + 3bc02052: 00009717 auipc a4,0x9 + 3bc02056: 62f73f23 sd a5,1598(a4) # 3bc0b690 + 3bc0205a: 00010797 auipc a5,0x10 + 3bc0205e: 7a678793 addi a5,a5,1958 # 3bc12800 + 3bc02062: 00009717 auipc a4,0x9 + 3bc02066: 3ef73b23 sd a5,1014(a4) # 3bc0b458 + 3bc0206a: 00011797 auipc a5,0x11 + 3bc0206e: 25678793 addi a5,a5,598 # 3bc132c0 + 3bc02072: 00009717 auipc a4,0x9 + 3bc02076: 62f73323 sd a5,1574(a4) # 3bc0b698 + 3bc0207a: 00011797 auipc a5,0x11 + 3bc0207e: e0678793 addi a5,a5,-506 # 3bc12e80 + 3bc02082: 00009717 auipc a4,0x9 + 3bc02086: 5ef73723 sd a5,1518(a4) # 3bc0b670 + 3bc0208a: 8082 ret + +000000003bc0208c : + 3bc0208c: 1141 addi sp,sp,-16 + 3bc0208e: 00009597 auipc a1,0x9 + 3bc02092: 44a5b583 ld a1,1098(a1) # 3bc0b4d8 + 3bc02096: 00009517 auipc a0,0x9 + 3bc0209a: 8ca50513 addi a0,a0,-1846 # 3bc0a960 <__func__.1+0x1d0> + 3bc0209e: e406 sd ra,8(sp) + 3bc020a0: ab8fe0ef jal ra,3bc00358 + 3bc020a4: 00009597 auipc a1,0x9 + 3bc020a8: 45c5b583 ld a1,1116(a1) # 3bc0b500 + 3bc020ac: 00009517 auipc a0,0x9 + 3bc020b0: 8cc50513 addi a0,a0,-1844 # 3bc0a978 <__func__.1+0x1e8> + 3bc020b4: aa4fe0ef jal ra,3bc00358 + 3bc020b8: 00009597 auipc a1,0x9 + 3bc020bc: 4305b583 ld a1,1072(a1) # 3bc0b4e8 + 3bc020c0: 00009517 auipc a0,0x9 + 3bc020c4: 8d050513 addi a0,a0,-1840 # 3bc0a990 <__func__.1+0x200> + 3bc020c8: a90fe0ef jal ra,3bc00358 + 3bc020cc: 00009597 auipc a1,0x9 + 3bc020d0: 4245b583 ld a1,1060(a1) # 3bc0b4f0 + 3bc020d4: 00009517 auipc a0,0x9 + 3bc020d8: 8d450513 addi a0,a0,-1836 # 3bc0a9a8 <__func__.1+0x218> + 3bc020dc: a7cfe0ef jal ra,3bc00358 + 3bc020e0: 00009597 auipc a1,0x9 + 3bc020e4: 4185b583 ld a1,1048(a1) # 3bc0b4f8 + 3bc020e8: 00009517 auipc a0,0x9 + 3bc020ec: 8d850513 addi a0,a0,-1832 # 3bc0a9c0 <__func__.1+0x230> + 3bc020f0: a68fe0ef jal ra,3bc00358 + 3bc020f4: 00009597 auipc a1,0x9 + 3bc020f8: 51c5b583 ld a1,1308(a1) # 3bc0b610 + 3bc020fc: 00009517 auipc a0,0x9 + 3bc02100: 8dc50513 addi a0,a0,-1828 # 3bc0a9d8 <__func__.1+0x248> + 3bc02104: a54fe0ef jal ra,3bc00358 + 3bc02108: 00009597 auipc a1,0x9 + 3bc0210c: 5885b583 ld a1,1416(a1) # 3bc0b690 + 3bc02110: 00009517 auipc a0,0x9 + 3bc02114: 8e050513 addi a0,a0,-1824 # 3bc0a9f0 <__func__.1+0x260> + 3bc02118: a40fe0ef jal ra,3bc00358 + 3bc0211c: 00009597 auipc a1,0x9 + 3bc02120: 33c5b583 ld a1,828(a1) # 3bc0b458 + 3bc02124: 00009517 auipc a0,0x9 + 3bc02128: 8e450513 addi a0,a0,-1820 # 3bc0aa08 <__func__.1+0x278> + 3bc0212c: a2cfe0ef jal ra,3bc00358 + 3bc02130: 00009597 auipc a1,0x9 + 3bc02134: 5685b583 ld a1,1384(a1) # 3bc0b698 + 3bc02138: 00009517 auipc a0,0x9 + 3bc0213c: 8e850513 addi a0,a0,-1816 # 3bc0aa20 <__func__.1+0x290> + 3bc02140: a18fe0ef jal ra,3bc00358 + 3bc02144: 60a2 ld ra,8(sp) + 3bc02146: 00009597 auipc a1,0x9 + 3bc0214a: 52a5b583 ld a1,1322(a1) # 3bc0b670 + 3bc0214e: 00009517 auipc a0,0x9 + 3bc02152: 8ea50513 addi a0,a0,-1814 # 3bc0aa38 <__func__.1+0x2a8> + 3bc02156: 0141 addi sp,sp,16 + 3bc02158: a00fe06f j 3bc00358 + +000000003bc0215c : + 3bc0215c: 4501 li a0,0 + 3bc0215e: 3020106f j 3bc03460 + +000000003bc02162 : + 3bc02162: 7179 addi sp,sp,-48 + 3bc02164: f022 sd s0,32(sp) + 3bc02166: 00009417 auipc s0,0x9 + 3bc0216a: 45a40413 addi s0,s0,1114 # 3bc0b5c0 + 3bc0216e: 601c ld a5,0(s0) + 3bc02170: 00009597 auipc a1,0x9 + 3bc02174: 8e058593 addi a1,a1,-1824 # 3bc0aa50 <__func__.1+0x2c0> + 3bc02178: 00011517 auipc a0,0x11 + 3bc0217c: 23050513 addi a0,a0,560 # 3bc133a8 + 3bc02180: f406 sd ra,40(sp) + 3bc02182: ec26 sd s1,24(sp) + 3bc02184: e84a sd s2,16(sp) + 3bc02186: 6f84 ld s1,24(a5) + 3bc02188: e44e sd s3,8(sp) + 3bc0218a: ec0ff0ef jal ra,3bc0184a + 3bc0218e: 00011517 auipc a0,0x11 + 3bc02192: 1ca50513 addi a0,a0,458 # 3bc13358 + 3bc02196: 00009597 auipc a1,0x9 + 3bc0219a: 8c258593 addi a1,a1,-1854 # 3bc0aa58 <__func__.1+0x2c8> + 3bc0219e: eacff0ef jal ra,3bc0184a + 3bc021a2: 00009517 auipc a0,0x9 + 3bc021a6: 46e53503 ld a0,1134(a0) # 3bc0b610 + 3bc021aa: 03f57713 andi a4,a0,63 + 3bc021ae: 87aa mv a5,a0 + 3bc021b0: c709 beqz a4,3bc021ba + 3bc021b2: 04000793 li a5,64 + 3bc021b6: 9f99 subw a5,a5,a4 + 3bc021b8: 97aa add a5,a5,a0 + 3bc021ba: 00009997 auipc s3,0x9 + 3bc021be: 31e98993 addi s3,s3,798 # 3bc0b4d8 + 3bc021c2: 00011717 auipc a4,0x11 + 3bc021c6: 16f73723 sd a5,366(a4) # 3bc13330 + 3bc021ca: 0009b783 ld a5,0(s3) + 3bc021ce: 03f7f693 andi a3,a5,63 + 3bc021d2: c689 beqz a3,3bc021dc + 3bc021d4: 04000713 li a4,64 + 3bc021d8: 9f15 subw a4,a4,a3 + 3bc021da: 97ba add a5,a5,a4 + 3bc021dc: 00009917 auipc s2,0x9 + 3bc021e0: 32490913 addi s2,s2,804 # 3bc0b500 + 3bc021e4: 00011717 auipc a4,0x11 + 3bc021e8: 12f73623 sd a5,300(a4) # 3bc13310 + 3bc021ec: 00093783 ld a5,0(s2) + 3bc021f0: 03f7f693 andi a3,a5,63 + 3bc021f4: c689 beqz a3,3bc021fe + 3bc021f6: 04000713 li a4,64 + 3bc021fa: 9f15 subw a4,a4,a3 + 3bc021fc: 97ba add a5,a5,a4 + 3bc021fe: 08000613 li a2,128 + 3bc02202: 4581 li a1,0 + 3bc02204: 00011717 auipc a4,0x11 + 3bc02208: 12f73223 sd a5,292(a4) # 3bc13328 + 3bc0220c: 807fe0ef jal ra,3bc00a12 + 3bc02210: 0009b503 ld a0,0(s3) + 3bc02214: 20000613 li a2,512 + 3bc02218: 4581 li a1,0 + 3bc0221a: ff8fe0ef jal ra,3bc00a12 + 3bc0221e: 00093503 ld a0,0(s2) + 3bc02222: 20000613 li a2,512 + 3bc02226: 4581 li a1,0 + 3bc02228: feafe0ef jal ra,3bc00a12 + 3bc0222c: 709c ld a5,32(s1) + 3bc0222e: 8526 mv a0,s1 + 3bc02230: 6b9c ld a5,16(a5) + 3bc02232: 9782 jalr a5 + 3bc02234: 00011797 auipc a5,0x11 + 3bc02238: 10a7b223 sd a0,260(a5) # 3bc13338 + 3bc0223c: 601c ld a5,0(s0) + 3bc0223e: 53d8 lw a4,36(a5) + 3bc02240: 4791 li a5,4 + 3bc02242: 02e7e263 bltu a5,a4,3bc02266 + 3bc02246: 00009797 auipc a5,0x9 + 3bc0224a: 28a78793 addi a5,a5,650 # 3bc0b4d0 + 3bc0224e: 4731 li a4,12 + 3bc02250: 00e79123 sh a4,2(a5) + 3bc02254: 4705 li a4,1 + 3bc02256: 00e78223 sb a4,4(a5) + 3bc0225a: 20100793 li a5,513 + 3bc0225e: 00009717 auipc a4,0x9 + 3bc02262: 34f71623 sh a5,844(a4) # 3bc0b5aa + 3bc02266: 00009797 auipc a5,0x9 + 3bc0226a: 1f27b783 ld a5,498(a5) # 3bc0b458 + 3bc0226e: 00011717 auipc a4,0x11 + 3bc02272: 08f73d23 sd a5,154(a4) # 3bc13308 + 3bc02276: 000e1737 lui a4,0xe1 + 3bc0227a: c3d8 sw a4,4(a5) + 3bc0227c: 4721 li a4,8 + 3bc0227e: 00079423 sh zero,8(a5) + 3bc02282: 00e78523 sb a4,10(a5) + 3bc02286: 70a2 ld ra,40(sp) + 3bc02288: 7402 ld s0,32(sp) + 3bc0228a: 00079623 sh zero,12(a5) + 3bc0228e: 64e2 ld s1,24(sp) + 3bc02290: 6942 ld s2,16(sp) + 3bc02292: 69a2 ld s3,8(sp) + 3bc02294: 4501 li a0,0 + 3bc02296: 6145 addi sp,sp,48 + 3bc02298: 8082 ret + +000000003bc0229a : + 3bc0229a: 030007b7 lui a5,0x3000 + 3bc0229e: 43c8 lw a0,4(a5) + 3bc022a0: 2495350b extu a0,a0,9,9 + 3bc022a4: 8082 ret + +000000003bc022a6 : + 3bc022a6: 1141 addi sp,sp,-16 + 3bc022a8: e406 sd ra,8(sp) + 3bc022aa: 93ffe0ef jal ra,3bc00be8 + 3bc022ae: 3e800793 li a5,1000 + 3bc022b2: e911 bnez a0,3bc022c6 + 3bc022b4: 0e0007b7 lui a5,0xe000 + 3bc022b8: 639c ld a5,0(a5) + 3bc022ba: 0417b78b extu a5,a5,1,1 + 3bc022be: eb81 bnez a5,3bc022ce + 3bc022c0: 6789 lui a5,0x2 + 3bc022c2: 71078793 addi a5,a5,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc022c6: 60a2 ld ra,8(sp) + 3bc022c8: 853e mv a0,a5 + 3bc022ca: 0141 addi sp,sp,16 + 3bc022cc: 8082 ret + 3bc022ce: 67e1 lui a5,0x18 + 3bc022d0: 69f78793 addi a5,a5,1695 # 1869f <__BSS_SIZE__+0x12a8f> + 3bc022d4: bfcd j 3bc022c6 + +000000003bc022d6 : + 3bc022d6: 7175 addi sp,sp,-144 + 3bc022d8: f0d2 sd s4,96(sp) + 3bc022da: 00011797 auipc a5,0x11 + 3bc022de: 06a7bb23 sd a0,118(a5) # 3bc13350 + 3bc022e2: 00011797 auipc a5,0x11 + 3bc022e6: 0eb7af23 sw a1,254(a5) # 3bc133e0 + 3bc022ea: 00011a17 auipc s4,0x11 + 3bc022ee: 0faa0a13 addi s4,s4,250 # 3bc133e4 + 3bc022f2: e506 sd ra,136(sp) + 3bc022f4: e122 sd s0,128(sp) + 3bc022f6: fca6 sd s1,120(sp) + 3bc022f8: f8ca sd s2,112(sp) + 3bc022fa: f4ce sd s3,104(sp) + 3bc022fc: ecd6 sd s5,88(sp) + 3bc022fe: e8da sd s6,80(sp) + 3bc02300: e4de sd s7,72(sp) + 3bc02302: e0e2 sd s8,64(sp) + 3bc02304: fc66 sd s9,56(sp) + 3bc02306: f86a sd s10,48(sp) + 3bc02308: f46e sd s11,40(sp) + 3bc0230a: 00ca2023 sw a2,0(s4) + 3bc0230e: 0e0007b7 lui a5,0xe000 + 3bc02312: 0007a223 sw zero,4(a5) # e000004 + 3bc02316: f85ff0ef jal ra,3bc0229a + 3bc0231a: e909 bnez a0,3bc0232c + 3bc0231c: 00008517 auipc a0,0x8 + 3bc02320: 74c50513 addi a0,a0,1868 # 3bc0aa68 <__func__.1+0x2d8> + 3bc02324: 834fe0ef jal ra,3bc00358 + 3bc02328: 596d li s2,-5 + 3bc0232a: a111 j 3bc0272e + 3bc0232c: f7bff0ef jal ra,3bc022a6 + 3bc02330: 0005049b sext.w s1,a0 + 3bc02334: 85a6 mv a1,s1 + 3bc02336: 00008517 auipc a0,0x8 + 3bc0233a: 74a50513 addi a0,a0,1866 # 3bc0aa80 <__func__.1+0x2f0> + 3bc0233e: 81afe0ef jal ra,3bc00358 + 3bc02342: 67e1 lui a5,0x18 + 3bc02344: 69e78793 addi a5,a5,1694 # 1869e <__BSS_SIZE__+0x12a8e> + 3bc02348: 0297f463 bgeu a5,s1,3bc02370 + 3bc0234c: 4785 li a5,1 + 3bc0234e: 00008517 auipc a0,0x8 + 3bc02352: 74a50513 addi a0,a0,1866 # 3bc0aa98 <__func__.1+0x308> + 3bc02356: 00011717 auipc a4,0x11 + 3bc0235a: 0af70923 sb a5,178(a4) # 3bc13408 + 3bc0235e: ffbfd0ef jal ra,3bc00358 + 3bc02362: c00037b7 lui a5,0xc0003 + 3bc02366: 03000737 lui a4,0x3000 + 3bc0236a: 078d addi a5,a5,3 + 3bc0236c: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02370: 85a6 mv a1,s1 + 3bc02372: 00008517 auipc a0,0x8 + 3bc02376: 72e50513 addi a0,a0,1838 # 3bc0aaa0 <__func__.1+0x310> + 3bc0237a: fdffd0ef jal ra,3bc00358 + 3bc0237e: 3e800793 li a5,1000 + 3bc02382: 029787bb mulw a5,a5,s1 + 3bc02386: e43e sd a5,8(sp) + 3bc02388: c00037b7 lui a5,0xc0003 + 3bc0238c: 10178793 addi a5,a5,257 # ffffffffc0003101 <__BL2_END__+0xffffffff843efcf1> + 3bc02390: e83e sd a5,16(sp) + 3bc02392: c00017b7 lui a5,0xc0001 + 3bc02396: 0791 addi a5,a5,4 + 3bc02398: ec3e sd a5,24(sp) + 3bc0239a: 00011797 auipc a5,0x11 + 3bc0239e: f607bb23 sd zero,-138(a5) # 3bc13310 + 3bc023a2: 00011797 auipc a5,0x11 + 3bc023a6: f807b323 sd zero,-122(a5) # 3bc13328 + 3bc023aa: 00011797 auipc a5,0x11 + 3bc023ae: f807b323 sd zero,-122(a5) # 3bc13330 + 3bc023b2: 00011797 auipc a5,0x11 + 3bc023b6: f807b723 sd zero,-114(a5) # 3bc13340 + 3bc023ba: 00011797 auipc a5,0x11 + 3bc023be: f807b723 sd zero,-114(a5) # 3bc13348 + 3bc023c2: 00011797 auipc a5,0x11 + 3bc023c6: f407bb23 sd zero,-170(a5) # 3bc13318 + 3bc023ca: 00011797 auipc a5,0x11 + 3bc023ce: f407bb23 sd zero,-170(a5) # 3bc13320 + 3bc023d2: 00011797 auipc a5,0x11 + 3bc023d6: f607b323 sd zero,-154(a5) # 3bc13338 + 3bc023da: 00011797 auipc a5,0x11 + 3bc023de: 020786a3 sb zero,45(a5) # 3bc13407 + 3bc023e2: 00011797 auipc a5,0x11 + 3bc023e6: 02078223 sb zero,36(a5) # 3bc13406 + 3bc023ea: 00011797 auipc a5,0x11 + 3bc023ee: 00078da3 sb zero,27(a5) # 3bc13405 + 3bc023f2: 00011797 auipc a5,0x11 + 3bc023f6: 00078ca3 sb zero,25(a5) # 3bc1340b + 3bc023fa: 00011797 auipc a5,0x11 + 3bc023fe: fe07a723 sw zero,-18(a5) # 3bc133e8 + 3bc02402: 00011797 auipc a5,0x11 + 3bc02406: f007b323 sd zero,-250(a5) # 3bc13308 + 3bc0240a: 00011797 auipc a5,0x11 + 3bc0240e: fe078fa3 sb zero,-1(a5) # 3bc13409 + 3bc02412: bd9ff0ef jal ra,3bc01fea + 3bc02416: c77ff0ef jal ra,3bc0208c + 3bc0241a: 00009417 auipc s0,0x9 + 3bc0241e: 1a640413 addi s0,s0,422 # 3bc0b5c0 + 3bc02422: 00009797 auipc a5,0x9 + 3bc02426: 24e7b783 ld a5,590(a5) # 3bc0b670 + 3bc0242a: e41c sd a5,8(s0) + 3bc0242c: 40000793 li a5,1024 + 3bc02430: c81c sw a5,16(s0) + 3bc02432: 00009517 auipc a0,0x9 + 3bc02436: 19650513 addi a0,a0,406 # 3bc0b5c8 + 3bc0243a: 00009797 auipc a5,0x9 + 3bc0243e: 25e7b783 ld a5,606(a5) # 3bc0b698 + 3bc02442: e43c sd a5,72(s0) + 3bc02444: 6cd000ef jal ra,3bc03310 + 3bc02448: 0005099b sext.w s3,a0 + 3bc0244c: 892a mv s2,a0 + 3bc0244e: 02099063 bnez s3,3bc0246e + 3bc02452: 00009517 auipc a0,0x9 + 3bc02456: 1c650513 addi a0,a0,454 # 3bc0b618 + 3bc0245a: 54f000ef jal ra,3bc031a8 + 3bc0245e: 02055763 bgez a0,3bc0248c + 3bc02462: 00008517 auipc a0,0x8 + 3bc02466: 66650513 addi a0,a0,1638 # 3bc0aac8 <__func__.1+0x338> + 3bc0246a: eeffd0ef jal ra,3bc00358 + 3bc0246e: 85ce mv a1,s3 + 3bc02470: 00008517 auipc a0,0x8 + 3bc02474: 6f050513 addi a0,a0,1776 # 3bc0ab60 <__func__.1+0x3d0> + 3bc02478: ee1fd0ef jal ra,3bc00358 + 3bc0247c: c00037b7 lui a5,0xc0003 + 3bc02480: 03000737 lui a4,0x3000 + 3bc02484: 079d addi a5,a5,7 + 3bc02486: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc0248a: a455 j 3bc0272e + 3bc0248c: 6000 ld s0,0(s0) + 3bc0248e: e411 bnez s0,3bc0249a + 3bc02490: 00008517 auipc a0,0x8 + 3bc02494: 65850513 addi a0,a0,1624 # 3bc0aae8 <__func__.1+0x358> + 3bc02498: bfc9 j 3bc0246a + 3bc0249a: cc9ff0ef jal ra,3bc02162 + 3bc0249e: 4501 li a0,0 + 3bc024a0: d1ffd0ef jal ra,3bc001be + 3bc024a4: 6742 ld a4,16(sp) + 3bc024a6: 00011917 auipc s2,0x11 + 3bc024aa: f4690913 addi s2,s2,-186 # 3bc133ec + 3bc024ae: 00a92023 sw a0,0(s2) + 3bc024b2: 6522 ld a0,8(sp) + 3bc024b4: 030007b7 lui a5,0x3000 + 3bc024b8: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc024bc: cbffd0ef jal ra,3bc0017a + 3bc024c0: 681c ld a5,16(s0) + 3bc024c2: 4585 li a1,1 + 3bc024c4: 8522 mv a0,s0 + 3bc024c6: 779c ld a5,40(a5) + 3bc024c8: 00011997 auipc s3,0x11 + 3bc024cc: e5898993 addi s3,s3,-424 # 3bc13320 + 3bc024d0: 00011b17 auipc s6,0x11 + 3bc024d4: f38b0b13 addi s6,s6,-200 # 3bc13408 + 3bc024d8: 9782 jalr a5 + 3bc024da: 00011a97 auipc s5,0x11 + 3bc024de: f2ba8a93 addi s5,s5,-213 # 3bc13405 + 3bc024e2: 000ac783 lbu a5,0(s5) + 3bc024e6: 18078663 beqz a5,3bc02672 + 3bc024ea: 6762 ld a4,24(sp) + 3bc024ec: 030007b7 lui a5,0x3000 + 3bc024f0: 00043b83 ld s7,0(s0) + 3bc024f4: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc024f8: 4785 li a5,1 + 3bc024fa: 00011717 auipc a4,0x11 + 3bc024fe: f0f708a3 sb a5,-239(a4) # 3bc1340b + 3bc02502: 08200c13 li s8,130 + 3bc02506: 00011c97 auipc s9,0x11 + 3bc0250a: e42c8c93 addi s9,s9,-446 # 3bc13348 + 3bc0250e: 00011d17 auipc s10,0x11 + 3bc02512: e0ad0d13 addi s10,s10,-502 # 3bc13318 + 3bc02516: 00011d97 auipc s11,0x11 + 3bc0251a: e2ad8d93 addi s11,s11,-470 # 3bc13340 + 3bc0251e: 19741b63 bne s0,s7,3bc026b4 + 3bc02522: 02044783 lbu a5,32(s0) + 3bc02526: 470d li a4,3 + 3bc02528: 1ee78063 beq a5,a4,3bc02708 + 3bc0252c: 4715 li a4,5 + 3bc0252e: 1ee78063 beq a5,a4,3bc0270e + 3bc02532: 4709 li a4,2 + 3bc02534: dee79ae3 bne a5,a4,3bc02328 + 3bc02538: 04000793 li a5,64 + 3bc0253c: 0009b503 ld a0,0(s3) + 3bc02540: 04000613 li a2,64 + 3bc02544: 4581 li a1,0 + 3bc02546: 00011717 auipc a4,0x11 + 3bc0254a: eaf72123 sw a5,-350(a4) # 3bc133e8 + 3bc0254e: cc4fe0ef jal ra,3bc00a12 + 3bc02552: 0009b783 ld a5,0(s3) + 3bc02556: 00011717 auipc a4,0x11 + 3bc0255a: dd273703 ld a4,-558(a4) # 3bc13328 + 3bc0255e: 00011b97 auipc s7,0x11 + 3bc02562: e8ab8b93 addi s7,s7,-374 # 3bc133e8 + 3bc02566: eb98 sd a4,16(a5) + 3bc02568: cfd8 sw a4,28(a5) + 3bc0256a: fffff717 auipc a4,0xfffff + 3bc0256e: 33270713 addi a4,a4,818 # 3bc0189c + 3bc02572: f798 sd a4,40(a5) + 3bc02574: 00011c17 auipc s8,0x11 + 3bc02578: da4c0c13 addi s8,s8,-604 # 3bc13318 + 3bc0257c: 000ba703 lw a4,0(s7) + 3bc02580: 000c3503 ld a0,0(s8) + 3bc02584: 04000613 li a2,64 + 3bc02588: cf98 sw a4,24(a5) + 3bc0258a: 4581 li a1,0 + 3bc0258c: c86fe0ef jal ra,3bc00a12 + 3bc02590: 000c3783 ld a5,0(s8) + 3bc02594: 00011717 auipc a4,0x11 + 3bc02598: d7c73703 ld a4,-644(a4) # 3bc13310 + 3bc0259c: 00011517 auipc a0,0x11 + 3bc025a0: dac53503 ld a0,-596(a0) # 3bc13348 + 3bc025a4: eb98 sd a4,16(a5) + 3bc025a6: cfd8 sw a4,28(a5) + 3bc025a8: fffff717 auipc a4,0xfffff + 3bc025ac: 5ae70713 addi a4,a4,1454 # 3bc01b56 + 3bc025b0: f798 sd a4,40(a5) + 3bc025b2: 000ba703 lw a4,0(s7) + 3bc025b6: 0009b583 ld a1,0(s3) + 3bc025ba: 4b85 li s7,1 + 3bc025bc: cf98 sw a4,24(a5) + 3bc025be: 711c ld a5,32(a0) + 3bc025c0: 739c ld a5,32(a5) + 3bc025c2: 9782 jalr a5 + 3bc025c4: 500c lw a1,32(s0) + 3bc025c6: 00008517 auipc a0,0x8 + 3bc025ca: 55a50513 addi a0,a0,1370 # 3bc0ab20 <__func__.1+0x390> + 3bc025ce: d8bfd0ef jal ra,3bc00358 + 3bc025d2: 4501 li a0,0 + 3bc025d4: bebfd0ef jal ra,3bc001be + 3bc025d8: 00a92023 sw a0,0(s2) + 3bc025dc: b81ff0ef jal ra,3bc0215c + 3bc025e0: 000ac783 lbu a5,0(s5) + 3bc025e4: ee078be3 beqz a5,3bc024da + 3bc025e8: 00011797 auipc a5,0x11 + 3bc025ec: e1e78793 addi a5,a5,-482 # 3bc13406 + 3bc025f0: 0007c783 lbu a5,0(a5) + 3bc025f4: eb95 bnez a5,3bc02628 + 3bc025f6: 000b4783 lbu a5,0(s6) + 3bc025fa: 10079d63 bnez a5,3bc02714 + 3bc025fe: 00092503 lw a0,0(s2) + 3bc02602: bbdfd0ef jal ra,3bc001be + 3bc02606: 2501 sext.w a0,a0 + 3bc02608: fca4fae3 bgeu s1,a0,3bc025dc + 3bc0260c: 85a6 mv a1,s1 + 3bc0260e: 00008517 auipc a0,0x8 + 3bc02612: 53250513 addi a0,a0,1330 # 3bc0ab40 <__func__.1+0x3b0> + 3bc02616: d43fd0ef jal ra,3bc00358 + 3bc0261a: c00037b7 lui a5,0xc0003 + 3bc0261e: 03000737 lui a4,0x3000 + 3bc02622: 0795 addi a5,a5,5 + 3bc02624: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02628: 00008517 auipc a0,0x8 + 3bc0262c: 53050513 addi a0,a0,1328 # 3bc0ab58 <__func__.1+0x3c8> + 3bc02630: d29fd0ef jal ra,3bc00358 + 3bc02634: c00037b7 lui a5,0xc0003 + 3bc02638: 03000737 lui a4,0x3000 + 3bc0263c: 0799 addi a5,a5,6 + 3bc0263e: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02642: 681c ld a5,16(s0) + 3bc02644: 4581 li a1,0 + 3bc02646: 8522 mv a0,s0 + 3bc02648: 779c ld a5,40(a5) + 3bc0264a: 9782 jalr a5 + 3bc0264c: 00009517 auipc a0,0x9 + 3bc02650: fcc50513 addi a0,a0,-52 # 3bc0b618 + 3bc02654: 380000ef jal ra,3bc029d4 + 3bc02658: 0e0007b7 lui a5,0xe000 + 3bc0265c: 0047a903 lw s2,4(a5) # e000004 + 3bc02660: 4d4757b7 lui a5,0x4d475 + 3bc02664: e3178793 addi a5,a5,-463 # 4d474e31 <__BL2_END__+0x11861a21> + 3bc02668: 40f90933 sub s2,s2,a5 + 3bc0266c: 00193913 seqz s2,s2 + 3bc02670: a87d j 3bc0272e + 3bc02672: aebff0ef jal ra,3bc0215c + 3bc02676: 00092503 lw a0,0(s2) + 3bc0267a: b45fd0ef jal ra,3bc001be + 3bc0267e: 2501 sext.w a0,a0 + 3bc02680: 02a4f363 bgeu s1,a0,3bc026a6 + 3bc02684: 000b4783 lbu a5,0(s6) + 3bc02688: ef99 bnez a5,3bc026a6 + 3bc0268a: 00008517 auipc a0,0x8 + 3bc0268e: 48650513 addi a0,a0,1158 # 3bc0ab10 <__func__.1+0x380> + 3bc02692: cc7fd0ef jal ra,3bc00358 + 3bc02696: c00037b7 lui a5,0xc0003 + 3bc0269a: 03000737 lui a4,0x3000 + 3bc0269e: 0791 addi a5,a5,4 + 3bc026a0: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc026a4: b151 j 3bc02328 + 3bc026a6: 00011797 auipc a5,0x11 + 3bc026aa: d637c783 lbu a5,-669(a5) # 3bc13409 + 3bc026ae: e20786e3 beqz a5,3bc024da + 3bc026b2: b1e5 j 3bc0239a + 3bc026b4: 030bb703 ld a4,48(s7) + 3bc026b8: c305 beqz a4,3bc026d8 + 3bc026ba: 00274703 lbu a4,2(a4) + 3bc026be: 08100793 li a5,129 + 3bc026c2: 00f71e63 bne a4,a5,3bc026de + 3bc026c6: 020bb703 ld a4,32(s7) + 3bc026ca: 855e mv a0,s7 + 3bc026cc: 6b18 ld a4,16(a4) + 3bc026ce: 9702 jalr a4 + 3bc026d0: 00ad3023 sd a0,0(s10) + 3bc026d4: 017db023 sd s7,0(s11) + 3bc026d8: 000bbb83 ld s7,0(s7) + 3bc026dc: b589 j 3bc0251e + 3bc026de: 4785 li a5,1 + 3bc026e0: 00f71c63 bne a4,a5,3bc026f8 + 3bc026e4: 020bb703 ld a4,32(s7) + 3bc026e8: 855e mv a0,s7 + 3bc026ea: 6b18 ld a4,16(a4) + 3bc026ec: 9702 jalr a4 + 3bc026ee: 00a9b023 sd a0,0(s3) + 3bc026f2: 017cb023 sd s7,0(s9) + 3bc026f6: b7cd j 3bc026d8 + 3bc026f8: ff8710e3 bne a4,s8,3bc026d8 + 3bc026fc: 020bb703 ld a4,32(s7) + 3bc02700: 855e mv a0,s7 + 3bc02702: 6b18 ld a4,16(a4) + 3bc02704: 9702 jalr a4 + 3bc02706: bfc9 j 3bc026d8 + 3bc02708: 20000793 li a5,512 + 3bc0270c: bd05 j 3bc0253c + 3bc0270e: 40000793 li a5,1024 + 3bc02712: b52d j 3bc0253c + 3bc02714: ed7794e3 bne a5,s7,3bc025dc + 3bc02718: 000a2783 lw a5,0(s4) + 3bc0271c: ec0790e3 bnez a5,3bc025dc + 3bc02720: 00008517 auipc a0,0x8 + 3bc02724: 43050513 addi a0,a0,1072 # 3bc0ab50 <__func__.1+0x3c0> + 3bc02728: c31fd0ef jal ra,3bc00358 + 3bc0272c: 4905 li s2,1 + 3bc0272e: 60aa ld ra,136(sp) + 3bc02730: 640a ld s0,128(sp) + 3bc02732: 74e6 ld s1,120(sp) + 3bc02734: 79a6 ld s3,104(sp) + 3bc02736: 7a06 ld s4,96(sp) + 3bc02738: 6ae6 ld s5,88(sp) + 3bc0273a: 6b46 ld s6,80(sp) + 3bc0273c: 6ba6 ld s7,72(sp) + 3bc0273e: 6c06 ld s8,64(sp) + 3bc02740: 7ce2 ld s9,56(sp) + 3bc02742: 7d42 ld s10,48(sp) + 3bc02744: 7da2 ld s11,40(sp) + 3bc02746: 854a mv a0,s2 + 3bc02748: 7946 ld s2,112(sp) + 3bc0274a: 6149 addi sp,sp,144 + 3bc0274c: 8082 ret + +000000003bc0274e : + 3bc0274e: c909 beqz a0,3bc02760 + 3bc02750: 07150783 lb a5,113(a0) + 3bc02754: 4501 li a0,0 + 3bc02756: 0007d663 bgez a5,3bc02762 + 3bc0275a: fd300513 li a0,-45 + 3bc0275e: 8082 ret + 3bc02760: 5535 li a0,-19 + 3bc02762: 8082 ret + +000000003bc02764 : + 3bc02764: 61b8 ld a4,64(a1) + 3bc02766: 7179 addi sp,sp,-48 + 3bc02768: f022 sd s0,32(sp) + 3bc0276a: ec26 sd s1,24(sp) + 3bc0276c: 00011417 auipc s0,0x11 + 3bc02770: c5443403 ld s0,-940(s0) # 3bc133c0 + 3bc02774: f406 sd ra,40(sp) + 3bc02776: 04058793 addi a5,a1,64 + 3bc0277a: 7c04 ld s1,56(s0) + 3bc0277c: 00f70a63 beq a4,a5,3bc02790 + 3bc02780: 00008517 auipc a0,0x8 + 3bc02784: 42850513 addi a0,a0,1064 # 3bc0aba8 <__func__.5+0x8> + 3bc02788: e42e sd a1,8(sp) + 3bc0278a: bcffd0ef jal ra,3bc00358 + 3bc0278e: 65a2 ld a1,8(sp) + 3bc02790: 8522 mv a0,s0 + 3bc02792: 7402 ld s0,32(sp) + 3bc02794: 68bc ld a5,80(s1) + 3bc02796: 70a2 ld ra,40(sp) + 3bc02798: 64e2 ld s1,24(sp) + 3bc0279a: 6145 addi sp,sp,48 + 3bc0279c: 8782 jr a5 + +000000003bc0279e : + 3bc0279e: 7179 addi sp,sp,-48 + 3bc027a0: ec26 sd s1,24(sp) + 3bc027a2: 00011497 auipc s1,0x11 + 3bc027a6: c1648493 addi s1,s1,-1002 # 3bc133b8 + 3bc027aa: 6088 ld a0,0(s1) + 3bc027ac: f022 sd s0,32(sp) + 3bc027ae: 6405 lui s0,0x1 + 3bc027b0: 80440413 addi s0,s0,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc027b4: 9522 add a0,a0,s0 + 3bc027b6: e42e sd a1,8(sp) + 3bc027b8: f406 sd ra,40(sp) + 3bc027ba: f85fe0ef jal ra,3bc0173e + 3bc027be: 65a2 ld a1,8(sp) + 3bc027c0: 609c ld a5,0(s1) + 3bc027c2: 2501 sext.w a0,a0 + 3bc027c4: ed89 bnez a1,3bc027de + 3bc027c6: 008785b3 add a1,a5,s0 + 3bc027ca: 00256513 ori a0,a0,2 + 3bc027ce: f77fe0ef jal ra,3bc01744 + 3bc027d2: 70a2 ld ra,40(sp) + 3bc027d4: 7402 ld s0,32(sp) + 3bc027d6: 64e2 ld s1,24(sp) + 3bc027d8: 4501 li a0,0 + 3bc027da: 6145 addi sp,sp,48 + 3bc027dc: 8082 ret + 3bc027de: 008785b3 add a1,a5,s0 + 3bc027e2: 9975 andi a0,a0,-3 + 3bc027e4: b7ed j 3bc027ce + +000000003bc027e6 : + 3bc027e6: 00011517 auipc a0,0x11 + 3bc027ea: bda53503 ld a0,-1062(a0) # 3bc133c0 + 3bc027ee: 7d1c ld a5,56(a0) + 3bc027f0: 1141 addi sp,sp,-16 + 3bc027f2: e022 sd s0,0(sp) + 3bc027f4: 67bc ld a5,72(a5) + 3bc027f6: e406 sd ra,8(sp) + 3bc027f8: 05000593 li a1,80 + 3bc027fc: 9782 jalr a5 + 3bc027fe: 842a mv s0,a0 + 3bc02800: c911 beqz a0,3bc02814 + 3bc02802: 05000613 li a2,80 + 3bc02806: 4581 li a1,0 + 3bc02808: a0afe0ef jal ra,3bc00a12 + 3bc0280c: 04040793 addi a5,s0,64 + 3bc02810: e03c sd a5,64(s0) + 3bc02812: e43c sd a5,72(s0) + 3bc02814: 60a2 ld ra,8(sp) + 3bc02816: 8522 mv a0,s0 + 3bc02818: 6402 ld s0,0(sp) + 3bc0281a: 0141 addi sp,sp,16 + 3bc0281c: 8082 ret + +000000003bc0281e : + 3bc0281e: cd51 beqz a0,3bc028ba + 3bc02820: 1141 addi sp,sp,-16 + 3bc02822: e022 sd s0,0(sp) + 3bc02824: e406 sd ra,8(sp) + 3bc02826: 842a mv s0,a0 + 3bc02828: 5529 li a0,-22 + 3bc0282a: c5c1 beqz a1,3bc028b2 + 3bc0282c: 603c ld a5,64(s0) + 3bc0282e: e3d1 bnez a5,3bc028b2 + 3bc02830: 6c18 ld a4,24(s0) + 3bc02832: 00008797 auipc a5,0x8 + 3bc02836: 62e78793 addi a5,a5,1582 # 3bc0ae60 + 3bc0283a: 06f70c63 beq a4,a5,3bc028b2 + 3bc0283e: 0015c703 lbu a4,1(a1) + 3bc02842: 4795 li a5,5 + 3bc02844: 06f71763 bne a4,a5,3bc028b2 + 3bc02848: 07144703 lbu a4,113(s0) + 3bc0284c: 0025c783 lbu a5,2(a1) + 3bc02850: 06f71163 bne a4,a5,3bc028b2 + 3bc02854: 0045d783 lhu a5,4(a1) + 3bc02858: 02845703 lhu a4,40(s0) + 3bc0285c: 04f76b63 bltu a4,a5,3bc028b2 + 3bc02860: 07244683 lbu a3,114(s0) + 3bc02864: 0035c703 lbu a4,3(a1) + 3bc02868: 00e68863 beq a3,a4,3bc02878 + 3bc0286c: 4609 li a2,2 + 3bc0286e: 00c68563 beq a3,a2,3bc02878 + 3bc02872: 468d li a3,3 + 3bc02874: 02d71f63 bne a4,a3,3bc028b2 + 3bc02878: fde00513 li a0,-34 + 3bc0287c: cb9d beqz a5,3bc028b2 + 3bc0287e: 7c18 ld a4,56(s0) + 3bc02880: fc600513 li a0,-58 + 3bc02884: 7f14 ld a3,56(a4) + 3bc02886: c695 beqz a3,3bc028b2 + 3bc02888: 5318 lw a4,32(a4) + 3bc0288a: c705 beqz a4,3bc028b2 + 3bc0288c: 02f41423 sh a5,40(s0) + 3bc02890: f80c sd a1,48(s0) + 3bc02892: e02c sd a1,64(s0) + 3bc02894: 8522 mv a0,s0 + 3bc02896: 06040823 sb zero,112(s0) + 3bc0289a: 04043c23 sd zero,88(s0) + 3bc0289e: 35e010ef jal ra,3bc03bfc + 3bc028a2: 4581 li a1,0 + 3bc028a4: 8522 mv a0,s0 + 3bc028a6: 396010ef jal ra,3bc03c3c + 3bc028aa: 8522 mv a0,s0 + 3bc028ac: 3f2010ef jal ra,3bc03c9e + 3bc028b0: 4501 li a0,0 + 3bc028b2: 60a2 ld ra,8(sp) + 3bc028b4: 6402 ld s0,0(sp) + 3bc028b6: 0141 addi sp,sp,16 + 3bc028b8: 8082 ret + 3bc028ba: 5529 li a0,-22 + 3bc028bc: 8082 ret + +000000003bc028be : + 3bc028be: 8082 ret + +000000003bc028c0 : + 3bc028c0: 8082 ret + +000000003bc028c2 : + 3bc028c2: 00008517 auipc a0,0x8 + 3bc028c6: 59e50513 addi a0,a0,1438 # 3bc0ae60 + 3bc028ca: 8082 ret + +000000003bc028cc : + 3bc028cc: 6d1c ld a5,24(a0) + 3bc028ce: f8a5550b sdd a0,a0,(a0),0,4 + 3bc028d2: 29850613 addi a2,a0,664 + 3bc028d6: f8f7d78b sdd a5,a5,(a5),0,4 + 3bc028da: 04052423 sw zero,72(a0) + 3bc028de: 09850793 addi a5,a0,152 + 3bc028e2: fe07bc23 sd zero,-8(a5) + 3bc028e6: 02078423 sb zero,40(a5) + 3bc028ea: f8f7d78b sdd a5,a5,(a5),0,4 + 3bc028ee: 0007b823 sd zero,16(a5) + 3bc028f2: 08078713 addi a4,a5,128 + 3bc028f6: 00c71363 bne a4,a2,3bc028fc + 3bc028fa: 8082 ret + 3bc028fc: 6514 ld a3,8(a0) + 3bc028fe: 03878793 addi a5,a5,56 + 3bc02902: e51c sd a5,8(a0) + 3bc02904: faa73c23 sd a0,-72(a4) + 3bc02908: fcd73023 sd a3,-64(a4) + 3bc0290c: e29c sd a5,0(a3) + 3bc0290e: 87ba mv a5,a4 + 3bc02910: bfc9 j 3bc028e2 + +000000003bc02912 : + 3bc02912: 65b8 ld a4,72(a1) + 3bc02914: 61b4 ld a3,64(a1) + 3bc02916: 1101 addi sp,sp,-32 + 3bc02918: ec06 sd ra,24(sp) + 3bc0291a: e822 sd s0,16(sp) + 3bc0291c: 07054403 lbu s0,112(a0) + 3bc02920: e698 sd a4,8(a3) + 3bc02922: e314 sd a3,0(a4) + 3bc02924: 5d98 lw a4,56(a1) + 3bc02926: 04058793 addi a5,a1,64 + 3bc0292a: e1bc sd a5,64(a1) + 3bc0292c: e5bc sd a5,72(a1) + 3bc0292e: fdc00793 li a5,-36 + 3bc02932: 00f71363 bne a4,a5,3bc02938 + 3bc02936: dd90 sw a2,56(a1) + 3bc02938: 4785 li a5,1 + 3bc0293a: 06f50823 sb a5,112(a0) + 3bc0293e: 759c ld a5,40(a1) + 3bc02940: e42a sd a0,8(sp) + 3bc02942: 9782 jalr a5 + 3bc02944: 6522 ld a0,8(sp) + 3bc02946: 06850823 sb s0,112(a0) + 3bc0294a: 60e2 ld ra,24(sp) + 3bc0294c: 6442 ld s0,16(sp) + 3bc0294e: 6105 addi sp,sp,32 + 3bc02950: 8082 ret + +000000003bc02952 : + 3bc02952: c539 beqz a0,3bc029a0 + 3bc02954: 6d14 ld a3,24(a0) + 3bc02956: 00008797 auipc a5,0x8 + 3bc0295a: 50a78793 addi a5,a5,1290 # 3bc0ae60 + 3bc0295e: 5729 li a4,-22 + 3bc02960: 04f68163 beq a3,a5,3bc029a2 + 3bc02964: 872a mv a4,a0 + 3bc02966: 6e97478b ldib a5,(a4),9,3 + 3bc0296a: fc078793 addi a5,a5,-64 + 3bc0296e: 86be mv a3,a5 + 3bc02970: 6e86c60b ldib a2,(a3),8,3 + 3bc02974: 02e69163 bne a3,a4,3bc02996 + 3bc02978: 5729 li a4,-22 + 3bc0297a: 02f59463 bne a1,a5,3bc029a2 + 3bc0297e: 1141 addi sp,sp,-16 + 3bc02980: fca00613 li a2,-54 + 3bc02984: 85be mv a1,a5 + 3bc02986: e406 sd ra,8(sp) + 3bc02988: f8bff0ef jal ra,3bc02912 + 3bc0298c: 60a2 ld ra,8(sp) + 3bc0298e: 4701 li a4,0 + 3bc02990: 853a mv a0,a4 + 3bc02992: 0141 addi sp,sp,16 + 3bc02994: 8082 ret + 3bc02996: fef584e3 beq a1,a5,3bc0297e + 3bc0299a: fc060793 addi a5,a2,-64 + 3bc0299e: bfc1 j 3bc0296e + 3bc029a0: 5729 li a4,-22 + 3bc029a2: 853a mv a0,a4 + 3bc029a4: 8082 ret + +000000003bc029a6 : + 3bc029a6: 7179 addi sp,sp,-48 + 3bc029a8: f022 sd s0,32(sp) + 3bc029aa: ec26 sd s1,24(sp) + 3bc029ac: f406 sd ra,40(sp) + 3bc029ae: 84ae mv s1,a1 + 3bc029b0: 04850413 addi s0,a0,72 + 3bc029b4: 652c ld a1,72(a0) + 3bc029b6: 00859763 bne a1,s0,3bc029c4 + 3bc029ba: 70a2 ld ra,40(sp) + 3bc029bc: 7402 ld s0,32(sp) + 3bc029be: 64e2 ld s1,24(sp) + 3bc029c0: 6145 addi sp,sp,48 + 3bc029c2: 8082 ret + 3bc029c4: 8626 mv a2,s1 + 3bc029c6: fc058593 addi a1,a1,-64 + 3bc029ca: e42a sd a0,8(sp) + 3bc029cc: f47ff0ef jal ra,3bc02912 + 3bc029d0: 6522 ld a0,8(sp) + 3bc029d2: b7cd j 3bc029b4 + +000000003bc029d4 : + 3bc029d4: 7139 addi sp,sp,-64 + 3bc029d6: f822 sd s0,48(sp) + 3bc029d8: fc06 sd ra,56(sp) + 3bc029da: f426 sd s1,40(sp) + 3bc029dc: f04a sd s2,32(sp) + 3bc029de: ec4e sd s3,24(sp) + 3bc029e0: e852 sd s4,16(sp) + 3bc029e2: e456 sd s5,8(sp) + 3bc029e4: 00011417 auipc s0,0x11 + 3bc029e8: 9dc43403 ld s0,-1572(s0) # 3bc133c0 + 3bc029ec: cc3d beqz s0,3bc02a6a + 3bc029ee: 84aa mv s1,a0 + 3bc029f0: 5529 li a0,-22 + 3bc029f2: c0bd beqz s1,3bc02a58 + 3bc029f4: 7c18 ld a4,56(s0) + 3bc029f6: 06971163 bne a4,s1,3bc02a58 + 3bc029fa: 5018 lw a4,32(s0) + 3bc029fc: 02043c23 sd zero,56(s0) + 3bc02a00: 89a6 mv s3,s1 + 3bc02a02: e311 bnez a4,3bc02a06 + 3bc02a04: 4981 li s3,0 + 3bc02a06: 02042023 sw zero,32(s0) + 3bc02a0a: 05040913 addi s2,s0,80 + 3bc02a0e: 25040a13 addi s4,s0,592 + 3bc02a12: 4a85 li s5,1 + 3bc02a14: 07590823 sb s5,112(s2) + 3bc02a18: 854a mv a0,s2 + 3bc02a1a: fc600593 li a1,-58 + 3bc02a1e: 08090913 addi s2,s2,128 + 3bc02a22: f85ff0ef jal ra,3bc029a6 + 3bc02a26: ff4917e3 bne s2,s4,3bc02a14 + 3bc02a2a: 00098663 beqz s3,3bc02a36 + 3bc02a2e: 0289b783 ld a5,40(s3) + 3bc02a32: 8522 mv a0,s0 + 3bc02a34: 9782 jalr a5 + 3bc02a36: 8522 mv a0,s0 + 3bc02a38: e95ff0ef jal ra,3bc028cc + 3bc02a3c: 6c9c ld a5,24(s1) + 3bc02a3e: 8522 mv a0,s0 + 3bc02a40: 9782 jalr a5 + 3bc02a42: 8522 mv a0,s0 + 3bc02a44: 4581 li a1,0 + 3bc02a46: 106010ef jal ra,3bc03b4c + 3bc02a4a: 4501 li a0,0 + 3bc02a4c: 04042423 sw zero,72(s0) + 3bc02a50: 02042023 sw zero,32(s0) + 3bc02a54: 24040823 sb zero,592(s0) + 3bc02a58: 70e2 ld ra,56(sp) + 3bc02a5a: 7442 ld s0,48(sp) + 3bc02a5c: 74a2 ld s1,40(sp) + 3bc02a5e: 7902 ld s2,32(sp) + 3bc02a60: 69e2 ld s3,24(sp) + 3bc02a62: 6a42 ld s4,16(sp) + 3bc02a64: 6aa2 ld s5,8(sp) + 3bc02a66: 6121 addi sp,sp,64 + 3bc02a68: 8082 ret + 3bc02a6a: 5535 li a0,-19 + 3bc02a6c: b7f5 j 3bc02a58 + +000000003bc02a6e : + 3bc02a6e: 1101 addi sp,sp,-32 + 3bc02a70: e822 sd s0,16(sp) + 3bc02a72: e426 sd s1,8(sp) + 3bc02a74: ec06 sd ra,24(sp) + 3bc02a76: 842e mv s0,a1 + 3bc02a78: 84aa mv s1,a0 + 3bc02a7a: cc5fe0ef jal ra,3bc0173e + 3bc02a7e: 2501 sext.w a0,a0 + 3bc02a80: 8d41 or a0,a0,s0 + 3bc02a82: 6442 ld s0,16(sp) + 3bc02a84: 60e2 ld ra,24(sp) + 3bc02a86: 85a6 mv a1,s1 + 3bc02a88: 64a2 ld s1,8(sp) + 3bc02a8a: 6105 addi sp,sp,32 + 3bc02a8c: cb9fe06f j 3bc01744 + +000000003bc02a90 : + 3bc02a90: 1101 addi sp,sp,-32 + 3bc02a92: e822 sd s0,16(sp) + 3bc02a94: ec06 sd ra,24(sp) + 3bc02a96: 842a mv s0,a0 + 3bc02a98: e42e sd a1,8(sp) + 3bc02a9a: ca5fe0ef jal ra,3bc0173e + 3bc02a9e: 65a2 ld a1,8(sp) + 3bc02aa0: 60e2 ld ra,24(sp) + 3bc02aa2: 2501 sext.w a0,a0 + 3bc02aa4: fff5c793 not a5,a1 + 3bc02aa8: 85a2 mv a1,s0 + 3bc02aaa: 6442 ld s0,16(sp) + 3bc02aac: 8d7d and a0,a0,a5 + 3bc02aae: 6105 addi sp,sp,32 + 3bc02ab0: c95fe06f j 3bc01744 + +000000003bc02ab4 : + 3bc02ab4: 1101 addi sp,sp,-32 + 3bc02ab6: e426 sd s1,8(sp) + 3bc02ab8: 00011497 auipc s1,0x11 + 3bc02abc: 90048493 addi s1,s1,-1792 # 3bc133b8 + 3bc02ac0: 6088 ld a0,0(s1) + 3bc02ac2: e822 sd s0,16(sp) + 3bc02ac4: 6405 lui s0,0x1 + 3bc02ac6: 80440413 addi s0,s0,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02aca: 4585 li a1,1 + 3bc02acc: 9522 add a0,a0,s0 + 3bc02ace: ec06 sd ra,24(sp) + 3bc02ad0: f9fff0ef jal ra,3bc02a6e + 3bc02ad4: 4529 li a0,10 + 3bc02ad6: edefd0ef jal ra,3bc001b4 + 3bc02ada: 6088 ld a0,0(s1) + 3bc02adc: 4585 li a1,1 + 3bc02ade: 9522 add a0,a0,s0 + 3bc02ae0: fb1ff0ef jal ra,3bc02a90 + 3bc02ae4: 60e2 ld ra,24(sp) + 3bc02ae6: 6442 ld s0,16(sp) + 3bc02ae8: 64a2 ld s1,8(sp) + 3bc02aea: 4501 li a0,0 + 3bc02aec: 6105 addi sp,sp,32 + 3bc02aee: 8082 ret + +000000003bc02af0 : + 3bc02af0: 7179 addi sp,sp,-48 + 3bc02af2: f022 sd s0,32(sp) + 3bc02af4: ec26 sd s1,24(sp) + 3bc02af6: e84a sd s2,16(sp) + 3bc02af8: e44e sd s3,8(sp) + 3bc02afa: f406 sd ra,40(sp) + 3bc02afc: 892a mv s2,a0 + 3bc02afe: 89ae mv s3,a1 + 3bc02b00: 84b2 mv s1,a2 + 3bc02b02: 4401 li s0,0 + 3bc02b04: 00941b63 bne s0,s1,3bc02b1a + 3bc02b08: fc400513 li a0,-60 + 3bc02b0c: 70a2 ld ra,40(sp) + 3bc02b0e: 7402 ld s0,32(sp) + 3bc02b10: 64e2 ld s1,24(sp) + 3bc02b12: 6942 ld s2,16(sp) + 3bc02b14: 69a2 ld s3,8(sp) + 3bc02b16: 6145 addi sp,sp,48 + 3bc02b18: 8082 ret + 3bc02b1a: 854a mv a0,s2 + 3bc02b1c: c23fe0ef jal ra,3bc0173e + 3bc02b20: 2501 sext.w a0,a0 + 3bc02b22: 01357533 and a0,a0,s3 + 3bc02b26: e511 bnez a0,3bc02b32 + 3bc02b28: 4505 li a0,1 + 3bc02b2a: e60fd0ef jal ra,3bc0018a + 3bc02b2e: 2405 addiw s0,s0,1 + 3bc02b30: bfd1 j 3bc02b04 + 3bc02b32: 4501 li a0,0 + 3bc02b34: bfe1 j 3bc02b0c + +000000003bc02b36 : + 3bc02b36: 1101 addi sp,sp,-32 + 3bc02b38: e426 sd s1,8(sp) + 3bc02b3a: 00011497 auipc s1,0x11 + 3bc02b3e: 87e48493 addi s1,s1,-1922 # 3bc133b8 + 3bc02b42: e822 sd s0,16(sp) + 3bc02b44: 842a mv s0,a0 + 3bc02b46: 6088 ld a0,0(s1) + 3bc02b48: 6609 lui a2,0x2 + 3bc02b4a: 71060613 addi a2,a2,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc02b4e: 800005b7 lui a1,0x80000 + 3bc02b52: 0541 addi a0,a0,16 + 3bc02b54: ec06 sd ra,24(sp) + 3bc02b56: f9bff0ef jal ra,3bc02af0 + 3bc02b5a: c919 beqz a0,3bc02b70 + 3bc02b5c: 00008597 auipc a1,0x8 + 3bc02b60: 27c58593 addi a1,a1,636 # 3bc0add8 <__func__.3> + 3bc02b64: 00008517 auipc a0,0x8 + 3bc02b68: 06c50513 addi a0,a0,108 # 3bc0abd0 <__func__.5+0x30> + 3bc02b6c: fecfd0ef jal ra,3bc00358 + 3bc02b70: 608c ld a1,0(s1) + 3bc02b72: 0064151b slliw a0,s0,0x6 + 3bc02b76: 02056513 ori a0,a0,32 + 3bc02b7a: 05c1 addi a1,a1,16 + 3bc02b7c: 2501 sext.w a0,a0 + 3bc02b7e: bc7fe0ef jal ra,3bc01744 + 3bc02b82: 06400413 li s0,100 + 3bc02b86: 6088 ld a0,0(s1) + 3bc02b88: 0541 addi a0,a0,16 + 3bc02b8a: bb5fe0ef jal ra,3bc0173e + 3bc02b8e: 0005061b sext.w a2,a0 + 3bc02b92: 02057513 andi a0,a0,32 + 3bc02b96: cd09 beqz a0,3bc02bb0 + 3bc02b98: 347d addiw s0,s0,-1 + 3bc02b9a: e015 bnez s0,3bc02bbe + 3bc02b9c: 00008597 auipc a1,0x8 + 3bc02ba0: 23c58593 addi a1,a1,572 # 3bc0add8 <__func__.3> + 3bc02ba4: 00008517 auipc a0,0x8 + 3bc02ba8: 04c50513 addi a0,a0,76 # 3bc0abf0 <__func__.5+0x50> + 3bc02bac: facfd0ef jal ra,3bc00358 + 3bc02bb0: 6442 ld s0,16(sp) + 3bc02bb2: 60e2 ld ra,24(sp) + 3bc02bb4: 64a2 ld s1,8(sp) + 3bc02bb6: 4505 li a0,1 + 3bc02bb8: 6105 addi sp,sp,32 + 3bc02bba: dd0fd06f j 3bc0018a + 3bc02bbe: 4505 li a0,1 + 3bc02bc0: dcafd0ef jal ra,3bc0018a + 3bc02bc4: b7c9 j 3bc02b86 + +000000003bc02bc6 : + 3bc02bc6: 1101 addi sp,sp,-32 + 3bc02bc8: e426 sd s1,8(sp) + 3bc02bca: e04a sd s2,0(sp) + 3bc02bcc: ec06 sd ra,24(sp) + 3bc02bce: e822 sd s0,16(sp) + 3bc02bd0: 07154403 lbu s0,113(a0) + 3bc02bd4: 84aa mv s1,a0 + 3bc02bd6: 60000913 li s2,1536 + 3bc02bda: 883d andi s0,s0,15 + 3bc02bdc: e019 bnez s0,3bc02be2 + 3bc02bde: 10000913 li s2,256 + 3bc02be2: 8526 mv a0,s1 + 3bc02be4: dc3ff0ef jal ra,3bc029a6 + 3bc02be8: 6505 lui a0,0x1 + 3bc02bea: 91850513 addi a0,a0,-1768 # 918 <__BSS_SIZE__-0x52f8> + 3bc02bee: 0416 slli s0,s0,0x5 + 3bc02bf0: 942a add s0,s0,a0 + 3bc02bf2: 00010517 auipc a0,0x10 + 3bc02bf6: 7c653503 ld a0,1990(a0) # 3bc133b8 + 3bc02bfa: 9522 add a0,a0,s0 + 3bc02bfc: b43fe0ef jal ra,3bc0173e + 3bc02c00: 3c05350b extu a0,a0,15,0 + 3bc02c04: 050a slli a0,a0,0x2 + 3bc02c06: 01257963 bgeu a0,s2,3bc02c18 + 3bc02c0a: 6442 ld s0,16(sp) + 3bc02c0c: 5ca8 lw a0,120(s1) + 3bc02c0e: 60e2 ld ra,24(sp) + 3bc02c10: 64a2 ld s1,8(sp) + 3bc02c12: 6902 ld s2,0(sp) + 3bc02c14: 6105 addi sp,sp,32 + 3bc02c16: b705 j 3bc02b36 + 3bc02c18: 60e2 ld ra,24(sp) + 3bc02c1a: 6442 ld s0,16(sp) + 3bc02c1c: 64a2 ld s1,8(sp) + 3bc02c1e: 6902 ld s2,0(sp) + 3bc02c20: 6105 addi sp,sp,32 + 3bc02c22: 8082 ret + +000000003bc02c24 : + 3bc02c24: 27052783 lw a5,624(a0) + 3bc02c28: cba1 beqz a5,3bc02c78 + 3bc02c2a: 1101 addi sp,sp,-32 + 3bc02c2c: e822 sd s0,16(sp) + 3bc02c2e: e426 sd s1,8(sp) + 3bc02c30: e04a sd s2,0(sp) + 3bc02c32: ec06 sd ra,24(sp) + 3bc02c34: 842a mv s0,a0 + 3bc02c36: 26052823 sw zero,624(a0) + 3bc02c3a: 0d050493 addi s1,a0,208 + 3bc02c3e: 25050913 addi s2,a0,592 + 3bc02c42: 6c9c ld a5,24(s1) + 3bc02c44: c791 beqz a5,3bc02c50 + 3bc02c46: fc600593 li a1,-58 + 3bc02c4a: 8526 mv a0,s1 + 3bc02c4c: f7bff0ef jal ra,3bc02bc6 + 3bc02c50: 08048493 addi s1,s1,128 + 3bc02c54: ff2497e3 bne s1,s2,3bc02c42 + 3bc02c58: 7c1c ld a5,56(s0) + 3bc02c5a: 779c ld a5,40(a5) + 3bc02c5c: cb81 beqz a5,3bc02c6c + 3bc02c5e: 8522 mv a0,s0 + 3bc02c60: 6442 ld s0,16(sp) + 3bc02c62: 60e2 ld ra,24(sp) + 3bc02c64: 64a2 ld s1,8(sp) + 3bc02c66: 6902 ld s2,0(sp) + 3bc02c68: 6105 addi sp,sp,32 + 3bc02c6a: 8782 jr a5 + 3bc02c6c: 60e2 ld ra,24(sp) + 3bc02c6e: 6442 ld s0,16(sp) + 3bc02c70: 64a2 ld s1,8(sp) + 3bc02c72: 6902 ld s2,0(sp) + 3bc02c74: 6105 addi sp,sp,32 + 3bc02c76: 8082 ret + 3bc02c78: 8082 ret + +000000003bc02c7a : + 3bc02c7a: 1101 addi sp,sp,-32 + 3bc02c7c: e822 sd s0,16(sp) + 3bc02c7e: 00010417 auipc s0,0x10 + 3bc02c82: 73a40413 addi s0,s0,1850 # 3bc133b8 + 3bc02c86: 6008 ld a0,0(s0) + 3bc02c88: 6609 lui a2,0x2 + 3bc02c8a: 71060613 addi a2,a2,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc02c8e: 800005b7 lui a1,0x80000 + 3bc02c92: 0541 addi a0,a0,16 + 3bc02c94: ec06 sd ra,24(sp) + 3bc02c96: e426 sd s1,8(sp) + 3bc02c98: e59ff0ef jal ra,3bc02af0 + 3bc02c9c: c919 beqz a0,3bc02cb2 + 3bc02c9e: 00008597 auipc a1,0x8 + 3bc02ca2: 15258593 addi a1,a1,338 # 3bc0adf0 <__func__.4> + 3bc02ca6: 00008517 auipc a0,0x8 + 3bc02caa: f2a50513 addi a0,a0,-214 # 3bc0abd0 <__func__.5+0x30> + 3bc02cae: eaafd0ef jal ra,3bc00358 + 3bc02cb2: 600c ld a1,0(s0) + 3bc02cb4: 40000513 li a0,1024 + 3bc02cb8: 018004b7 lui s1,0x1800 + 3bc02cbc: 02458593 addi a1,a1,36 + 3bc02cc0: a85fe0ef jal ra,3bc01744 + 3bc02cc4: 600c ld a1,0(s0) + 3bc02cc6: 00400537 lui a0,0x400 + 3bc02cca: 40050513 addi a0,a0,1024 # 400400 <__BSS_SIZE__+0x3fa7f0> + 3bc02cce: 02858593 addi a1,a1,40 + 3bc02cd2: a73fe0ef jal ra,3bc01744 + 3bc02cd6: 600c ld a1,0(s0) + 3bc02cd8: 44048513 addi a0,s1,1088 # 1800440 <__BSS_SIZE__+0x17fa830> + 3bc02cdc: 10458593 addi a1,a1,260 + 3bc02ce0: a65fe0ef jal ra,3bc01744 + 3bc02ce4: 600c ld a1,0(s0) + 3bc02ce6: 5c048513 addi a0,s1,1472 + 3bc02cea: 10858593 addi a1,a1,264 + 3bc02cee: a57fe0ef jal ra,3bc01744 + 3bc02cf2: 600c ld a1,0(s0) + 3bc02cf4: 74048513 addi a0,s1,1856 + 3bc02cf8: 06400493 li s1,100 + 3bc02cfc: 10c58593 addi a1,a1,268 + 3bc02d00: a45fe0ef jal ra,3bc01744 + 3bc02d04: 600c ld a1,0(s0) + 3bc02d06: 43000513 li a0,1072 + 3bc02d0a: 05c1 addi a1,a1,16 + 3bc02d0c: a39fe0ef jal ra,3bc01744 + 3bc02d10: 6008 ld a0,0(s0) + 3bc02d12: 0541 addi a0,a0,16 + 3bc02d14: a2bfe0ef jal ra,3bc0173e + 3bc02d18: 0005061b sext.w a2,a0 + 3bc02d1c: 03057513 andi a0,a0,48 + 3bc02d20: c50d beqz a0,3bc02d4a + 3bc02d22: 34fd addiw s1,s1,-1 + 3bc02d24: ec99 bnez s1,3bc02d42 + 3bc02d26: 6442 ld s0,16(sp) + 3bc02d28: 60e2 ld ra,24(sp) + 3bc02d2a: 64a2 ld s1,8(sp) + 3bc02d2c: 00008597 auipc a1,0x8 + 3bc02d30: 0c458593 addi a1,a1,196 # 3bc0adf0 <__func__.4> + 3bc02d34: 00008517 auipc a0,0x8 + 3bc02d38: eec50513 addi a0,a0,-276 # 3bc0ac20 <__func__.5+0x80> + 3bc02d3c: 6105 addi sp,sp,32 + 3bc02d3e: e1afd06f j 3bc00358 + 3bc02d42: 4505 li a0,1 + 3bc02d44: c46fd0ef jal ra,3bc0018a + 3bc02d48: b7e1 j 3bc02d10 + 3bc02d4a: 60e2 ld ra,24(sp) + 3bc02d4c: 6442 ld s0,16(sp) + 3bc02d4e: 64a2 ld s1,8(sp) + 3bc02d50: 6105 addi sp,sp,32 + 3bc02d52: 8082 ret + +000000003bc02d54 <_dwc2_ep_disable.isra.0>: + 3bc02d54: 00010717 auipc a4,0x10 + 3bc02d58: 66c73703 ld a4,1644(a4) # 3bc133c0 + 3bc02d5c: 05070713 addi a4,a4,80 + 3bc02d60: 07154683 lbu a3,113(a0) + 3bc02d64: 00e51c63 bne a0,a4,3bc02d7c <_dwc2_ep_disable.isra.0+0x28> + 3bc02d68: 00008597 auipc a1,0x8 + 3bc02d6c: 04058593 addi a1,a1,64 # 3bc0ada8 <__func__.1> + 3bc02d70: 00008517 auipc a0,0x8 + 3bc02d74: ee050513 addi a0,a0,-288 # 3bc0ac50 <__func__.5+0xb0> + 3bc02d78: de0fd06f j 3bc00358 + 3bc02d7c: 7139 addi sp,sp,-64 + 3bc02d7e: f04a sd s2,32(sp) + 3bc02d80: ec4e sd s3,24(sp) + 3bc02d82: 00010917 auipc s2,0x10 + 3bc02d86: 63690913 addi s2,s2,1590 # 3bc133b8 + 3bc02d8a: fc06 sd ra,56(sp) + 3bc02d8c: f822 sd s0,48(sp) + 3bc02d8e: f426 sd s1,40(sp) + 3bc02d90: e852 sd s4,16(sp) + 3bc02d92: e456 sd s5,8(sp) + 3bc02d94: fc76b70b extu a4,a3,63,7 + 3bc02d98: 00093983 ld s3,0(s2) + 3bc02d9c: 00f6f793 andi a5,a3,15 + 3bc02da0: 0e070563 beqz a4,3bc02e8a <_dwc2_ep_disable.isra.0+0x136> + 3bc02da4: 04878793 addi a5,a5,72 + 3bc02da8: 0796 slli a5,a5,0x5 + 3bc02daa: 99be add s3,s3,a5 + 3bc02dac: 84aa mv s1,a0 + 3bc02dae: 854e mv a0,s3 + 3bc02db0: 98ffe0ef jal ra,3bc0173e + 3bc02db4: 00050a1b sext.w s4,a0 + 3bc02db8: 080a5a63 bgez s4,3bc02e4c <_dwc2_ep_disable.isra.0+0xf8> + 3bc02dbc: 0714c783 lbu a5,113(s1) + 3bc02dc0: 00093503 ld a0,0(s2) + 3bc02dc4: fc77b70b extu a4,a5,63,7 + 3bc02dc8: 00f7f413 andi s0,a5,15 + 3bc02dcc: c371 beqz a4,3bc02e90 <_dwc2_ep_disable.isra.0+0x13c> + 3bc02dce: 04840413 addi s0,s0,72 + 3bc02dd2: 0416 slli s0,s0,0x5 + 3bc02dd4: 00850ab3 add s5,a0,s0 + 3bc02dd8: 0421 addi s0,s0,8 + 3bc02dda: 942a add s0,s0,a0 + 3bc02ddc: 080005b7 lui a1,0x8000 + 3bc02de0: 8556 mv a0,s5 + 3bc02de2: c8dff0ef jal ra,3bc02a6e + 3bc02de6: 06400613 li a2,100 + 3bc02dea: 04000593 li a1,64 + 3bc02dee: 8522 mv a0,s0 + 3bc02df0: d01ff0ef jal ra,3bc02af0 + 3bc02df4: c919 beqz a0,3bc02e0a <_dwc2_ep_disable.isra.0+0xb6> + 3bc02df6: 00008597 auipc a1,0x8 + 3bc02dfa: f9a58593 addi a1,a1,-102 # 3bc0ad90 <__func__.0> + 3bc02dfe: 00008517 auipc a0,0x8 + 3bc02e02: e6a50513 addi a0,a0,-406 # 3bc0ac68 <__func__.5+0xc8> + 3bc02e06: d52fd0ef jal ra,3bc00358 + 3bc02e0a: 480005b7 lui a1,0x48000 + 3bc02e0e: 8556 mv a0,s5 + 3bc02e10: c5fff0ef jal ra,3bc02a6e + 3bc02e14: 06400613 li a2,100 + 3bc02e18: 4589 li a1,2 + 3bc02e1a: 8522 mv a0,s0 + 3bc02e1c: cd5ff0ef jal ra,3bc02af0 + 3bc02e20: c919 beqz a0,3bc02e36 <_dwc2_ep_disable.isra.0+0xe2> + 3bc02e22: 00008597 auipc a1,0x8 + 3bc02e26: f6e58593 addi a1,a1,-146 # 3bc0ad90 <__func__.0> + 3bc02e2a: 00008517 auipc a0,0x8 + 3bc02e2e: e7e50513 addi a0,a0,-386 # 3bc0aca8 <__func__.5+0x108> + 3bc02e32: d26fd0ef jal ra,3bc00358 + 3bc02e36: 4589 li a1,2 + 3bc02e38: 8522 mv a0,s0 + 3bc02e3a: c35ff0ef jal ra,3bc02a6e + 3bc02e3e: 07148783 lb a5,113(s1) + 3bc02e42: 0a07d163 bgez a5,3bc02ee4 <_dwc2_ep_disable.isra.0+0x190> + 3bc02e46: 5ca8 lw a0,120(s1) + 3bc02e48: cefff0ef jal ra,3bc02b36 + 3bc02e4c: 7fff8537 lui a0,0x7fff8 + 3bc02e50: 157d addi a0,a0,-1 + 3bc02e52: 00aa7a33 and s4,s4,a0 + 3bc02e56: 08000537 lui a0,0x8000 + 3bc02e5a: 85ce mv a1,s3 + 3bc02e5c: 00aa6533 or a0,s4,a0 + 3bc02e60: 8e5fe0ef jal ra,3bc01744 + 3bc02e64: 8526 mv a0,s1 + 3bc02e66: fc600593 li a1,-58 + 3bc02e6a: d5dff0ef jal ra,3bc02bc6 + 3bc02e6e: 4785 li a5,1 + 3bc02e70: 06f48823 sb a5,112(s1) + 3bc02e74: 70e2 ld ra,56(sp) + 3bc02e76: 7442 ld s0,48(sp) + 3bc02e78: 0404b023 sd zero,64(s1) + 3bc02e7c: 7902 ld s2,32(sp) + 3bc02e7e: 74a2 ld s1,40(sp) + 3bc02e80: 69e2 ld s3,24(sp) + 3bc02e82: 6a42 ld s4,16(sp) + 3bc02e84: 6aa2 ld s5,8(sp) + 3bc02e86: 6121 addi sp,sp,64 + 3bc02e88: 8082 ret + 3bc02e8a: 05878793 addi a5,a5,88 + 3bc02e8e: bf29 j 3bc02da8 <_dwc2_ep_disable.isra.0+0x54> + 3bc02e90: 05840413 addi s0,s0,88 + 3bc02e94: 0416 slli s0,s0,0x5 + 3bc02e96: 00850ab3 add s5,a0,s0 + 3bc02e9a: 0421 addi s0,s0,8 + 3bc02e9c: 942a add s0,s0,a0 + 3bc02e9e: 0551 addi a0,a0,20 + 3bc02ea0: 89ffe0ef jal ra,3bc0173e + 3bc02ea4: 08057513 andi a0,a0,128 + 3bc02ea8: e919 bnez a0,3bc02ebe <_dwc2_ep_disable.isra.0+0x16a> + 3bc02eaa: 00093503 ld a0,0(s2) + 3bc02eae: 6785 lui a5,0x1 + 3bc02eb0: 80478793 addi a5,a5,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02eb4: 20000593 li a1,512 + 3bc02eb8: 953e add a0,a0,a5 + 3bc02eba: bb5ff0ef jal ra,3bc02a6e + 3bc02ebe: 00093503 ld a0,0(s2) + 3bc02ec2: 06400613 li a2,100 + 3bc02ec6: 08000593 li a1,128 + 3bc02eca: 0551 addi a0,a0,20 + 3bc02ecc: c25ff0ef jal ra,3bc02af0 + 3bc02ed0: dd0d beqz a0,3bc02e0a <_dwc2_ep_disable.isra.0+0xb6> + 3bc02ed2: 00008597 auipc a1,0x8 + 3bc02ed6: ebe58593 addi a1,a1,-322 # 3bc0ad90 <__func__.0> + 3bc02eda: 00008517 auipc a0,0x8 + 3bc02ede: dae50513 addi a0,a0,-594 # 3bc0ac88 <__func__.5+0xe8> + 3bc02ee2: b715 j 3bc02e06 <_dwc2_ep_disable.isra.0+0xb2> + 3bc02ee4: 00093503 ld a0,0(s2) + 3bc02ee8: 6785 lui a5,0x1 + 3bc02eea: 80478793 addi a5,a5,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02eee: 40000593 li a1,1024 + 3bc02ef2: 953e add a0,a0,a5 + 3bc02ef4: b7bff0ef jal ra,3bc02a6e + 3bc02ef8: bf91 j 3bc02e4c <_dwc2_ep_disable.isra.0+0xf8> + +000000003bc02efa : + 3bc02efa: cd09 beqz a0,3bc02f14 + 3bc02efc: 6138 ld a4,64(a0) + 3bc02efe: 57a9 li a5,-22 + 3bc02f00: cb19 beqz a4,3bc02f16 + 3bc02f02: 1141 addi sp,sp,-16 + 3bc02f04: e406 sd ra,8(sp) + 3bc02f06: e4fff0ef jal ra,3bc02d54 <_dwc2_ep_disable.isra.0> + 3bc02f0a: 60a2 ld ra,8(sp) + 3bc02f0c: 4781 li a5,0 + 3bc02f0e: 853e mv a0,a5 + 3bc02f10: 0141 addi sp,sp,16 + 3bc02f12: 8082 ret + 3bc02f14: 57a9 li a5,-22 + 3bc02f16: 853e mv a0,a5 + 3bc02f18: 8082 ret + +000000003bc02f1a : + 3bc02f1a: 7139 addi sp,sp,-64 + 3bc02f1c: f426 sd s1,40(sp) + 3bc02f1e: f04a sd s2,32(sp) + 3bc02f20: ec4e sd s3,24(sp) + 3bc02f22: 84aa mv s1,a0 + 3bc02f24: 04053983 ld s3,64(a0) + 3bc02f28: 892e mv s2,a1 + 3bc02f2a: 05050513 addi a0,a0,80 + 3bc02f2e: fca00593 li a1,-54 + 3bc02f32: fc06 sd ra,56(sp) + 3bc02f34: f822 sd s0,48(sp) + 3bc02f36: e852 sd s4,16(sp) + 3bc02f38: e456 sd s5,8(sp) + 3bc02f3a: c8dff0ef jal ra,3bc02bc6 + 3bc02f3e: 8526 mv a0,s1 + 3bc02f40: 98dff0ef jal ra,3bc028cc + 3bc02f44: 00010417 auipc s0,0x10 + 3bc02f48: 47440413 addi s0,s0,1140 # 3bc133b8 + 3bc02f4c: 22091863 bnez s2,3bc0317c + 3bc02f50: 6008 ld a0,0(s0) + 3bc02f52: 04050513 addi a0,a0,64 + 3bc02f56: fe8fe0ef jal ra,3bc0173e + 3bc02f5a: 600c ld a1,0(s0) + 3bc02f5c: 6791 lui a5,0x4 + 3bc02f5e: 3c05350b extu a0,a0,15,0 + 3bc02f62: 20978793 addi a5,a5,521 # 4209 <__BSS_SIZE__-0x1a07> + 3bc02f66: 05c1 addi a1,a1,16 + 3bc02f68: 06a7ee63 bltu a5,a0,3bc02fe4 + 3bc02f6c: 4505 li a0,1 + 3bc02f6e: fd6fe0ef jal ra,3bc01744 + 3bc02f72: 03300a13 li s4,51 + 3bc02f76: 4505 li a0,1 + 3bc02f78: a12fd0ef jal ra,3bc0018a + 3bc02f7c: 6008 ld a0,0(s0) + 3bc02f7e: 3a7d addiw s4,s4,-1 + 3bc02f80: 0541 addi a0,a0,16 + 3bc02f82: fbcfe0ef jal ra,3bc0173e + 3bc02f86: 0005061b sext.w a2,a0 + 3bc02f8a: 020a1463 bnez s4,3bc02fb2 + 3bc02f8e: 00008597 auipc a1,0x8 + 3bc02f92: e3258593 addi a1,a1,-462 # 3bc0adc0 <__func__.2> + 3bc02f96: 00008517 auipc a0,0x8 + 3bc02f9a: d3250513 addi a0,a0,-718 # 3bc0acc8 <__func__.5+0x128> + 3bc02f9e: 7442 ld s0,48(sp) + 3bc02fa0: 70e2 ld ra,56(sp) + 3bc02fa2: 74a2 ld s1,40(sp) + 3bc02fa4: 7902 ld s2,32(sp) + 3bc02fa6: 69e2 ld s3,24(sp) + 3bc02fa8: 6a42 ld s4,16(sp) + 3bc02faa: 6aa2 ld s5,8(sp) + 3bc02fac: 6121 addi sp,sp,64 + 3bc02fae: baafd06f j 3bc00358 + 3bc02fb2: 8a05 andi a2,a2,1 + 3bc02fb4: f269 bnez a2,3bc02f76 + 3bc02fb6: 03300a13 li s4,51 + 3bc02fba: 4505 li a0,1 + 3bc02fbc: 9cefd0ef jal ra,3bc0018a + 3bc02fc0: 6008 ld a0,0(s0) + 3bc02fc2: 3a7d addiw s4,s4,-1 + 3bc02fc4: 0541 addi a0,a0,16 + 3bc02fc6: f78fe0ef jal ra,3bc0173e + 3bc02fca: 0005061b sext.w a2,a0 + 3bc02fce: 060a1963 bnez s4,3bc03040 + 3bc02fd2: 00008597 auipc a1,0x8 + 3bc02fd6: dee58593 addi a1,a1,-530 # 3bc0adc0 <__func__.2> + 3bc02fda: 00008517 auipc a0,0x8 + 3bc02fde: d3e50513 addi a0,a0,-706 # 3bc0ad18 <__func__.5+0x178> + 3bc02fe2: bf75 j 3bc02f9e + 3bc02fe4: 4505 li a0,1 + 3bc02fe6: f5efe0ef jal ra,3bc01744 + 3bc02fea: 03300a93 li s5,51 + 3bc02fee: 20000a37 lui s4,0x20000 + 3bc02ff2: 4505 li a0,1 + 3bc02ff4: 996fd0ef jal ra,3bc0018a + 3bc02ff8: 6008 ld a0,0(s0) + 3bc02ffa: 3afd addiw s5,s5,-1 + 3bc02ffc: 0541 addi a0,a0,16 + 3bc02ffe: f40fe0ef jal ra,3bc0173e + 3bc03002: 0005061b sext.w a2,a0 + 3bc03006: 000a9b63 bnez s5,3bc0301c + 3bc0300a: 00008597 auipc a1,0x8 + 3bc0300e: db658593 addi a1,a1,-586 # 3bc0adc0 <__func__.2> + 3bc03012: 00008517 auipc a0,0x8 + 3bc03016: cde50513 addi a0,a0,-802 # 3bc0acf0 <__func__.5+0x150> + 3bc0301a: b751 j 3bc02f9e + 3bc0301c: 01467633 and a2,a2,s4 + 3bc03020: 2601 sext.w a2,a2 + 3bc03022: da61 beqz a2,3bc02ff2 + 3bc03024: 6008 ld a0,0(s0) + 3bc03026: 0541 addi a0,a0,16 + 3bc03028: f16fe0ef jal ra,3bc0173e + 3bc0302c: 600c ld a1,0(s0) + 3bc0302e: 2501 sext.w a0,a0 + 3bc03030: 9979 andi a0,a0,-2 + 3bc03032: 01456533 or a0,a0,s4 + 3bc03036: 05c1 addi a1,a1,16 + 3bc03038: 2501 sext.w a0,a0 + 3bc0303a: f0afe0ef jal ra,3bc01744 + 3bc0303e: bfa5 j 3bc02fb6 + 3bc03040: f6065de3 bgez a2,3bc02fba + 3bc03044: 0309a503 lw a0,48(s3) + 3bc03048: e509 bnez a0,3bc03052 + 3bc0304a: 40081537 lui a0,0x40081 + 3bc0304e: 40f50513 addi a0,a0,1039 # 4008140f <__BL2_END__+0x446dfff> + 3bc03052: 600c ld a1,0(s0) + 3bc03054: 05b1 addi a1,a1,12 + 3bc03056: eeefe0ef jal ra,3bc01744 + 3bc0305a: c21ff0ef jal ra,3bc02c7a + 3bc0305e: 02091063 bnez s2,3bc0307e + 3bc03062: 6008 ld a0,0(s0) + 3bc03064: 6985 lui s3,0x1 + 3bc03066: 80498993 addi s3,s3,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc0306a: 954e add a0,a0,s3 + 3bc0306c: ed2fe0ef jal ra,3bc0173e + 3bc03070: 600c ld a1,0(s0) + 3bc03072: 2501 sext.w a0,a0 + 3bc03074: 00256513 ori a0,a0,2 + 3bc03078: 95ce add a1,a1,s3 + 3bc0307a: ecafe0ef jal ra,3bc01744 + 3bc0307e: 600c ld a1,0(s0) + 3bc03080: 6985 lui s3,0x1 + 3bc03082: 80098a13 addi s4,s3,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc03086: 95d2 add a1,a1,s4 + 3bc03088: 00040537 lui a0,0x40 + 3bc0308c: eb8fe0ef jal ra,3bc01744 + 3bc03090: 600c ld a1,0(s0) + 3bc03092: 557d li a0,-1 + 3bc03094: 0591 addi a1,a1,4 + 3bc03096: eaefe0ef jal ra,3bc01744 + 3bc0309a: 600c ld a1,0(s0) + 3bc0309c: 557d li a0,-1 + 3bc0309e: 05d1 addi a1,a1,20 + 3bc030a0: ea4fe0ef jal ra,3bc01744 + 3bc030a4: 600c ld a1,0(s0) + 3bc030a6: 800c4537 lui a0,0x800c4 + 3bc030aa: 81050513 addi a0,a0,-2032 # ffffffff800c3810 <__BL2_END__+0xffffffff444b0400> + 3bc030ae: 05e1 addi a1,a1,24 + 3bc030b0: e94fe0ef jal ra,3bc01744 + 3bc030b4: 600c ld a1,0(s0) + 3bc030b6: 4505 li a0,1 + 3bc030b8: 05a1 addi a1,a1,8 + 3bc030ba: e8afe0ef jal ra,3bc01744 + 3bc030be: 600c ld a1,0(s0) + 3bc030c0: 81098793 addi a5,s3,-2032 + 3bc030c4: 4535 li a0,13 + 3bc030c6: 95be add a1,a1,a5 + 3bc030c8: e7cfe0ef jal ra,3bc01744 + 3bc030cc: 600c ld a1,0(s0) + 3bc030ce: 81498793 addi a5,s3,-2028 + 3bc030d2: 4535 li a0,13 + 3bc030d4: 95be add a1,a1,a5 + 3bc030d6: e6efe0ef jal ra,3bc01744 + 3bc030da: 600c ld a1,0(s0) + 3bc030dc: 81c98793 addi a5,s3,-2020 + 3bc030e0: 6541 lui a0,0x10 + 3bc030e2: 95be add a1,a1,a5 + 3bc030e4: 0505 addi a0,a0,1 + 3bc030e6: e5efe0ef jal ra,3bc01744 + 3bc030ea: 02091f63 bnez s2,3bc03128 + 3bc030ee: 6008 ld a0,0(s0) + 3bc030f0: 80498993 addi s3,s3,-2044 + 3bc030f4: 954e add a0,a0,s3 + 3bc030f6: e48fe0ef jal ra,3bc0173e + 3bc030fa: 600c ld a1,0(s0) + 3bc030fc: 2501 sext.w a0,a0 + 3bc030fe: 01456533 or a0,a0,s4 + 3bc03102: 95ce add a1,a1,s3 + 3bc03104: e40fe0ef jal ra,3bc01744 + 3bc03108: 4529 li a0,10 + 3bc0310a: 880fd0ef jal ra,3bc0018a + 3bc0310e: 6008 ld a0,0(s0) + 3bc03110: 954e add a0,a0,s3 + 3bc03112: e2cfe0ef jal ra,3bc0173e + 3bc03116: 600c ld a1,0(s0) + 3bc03118: 77fd lui a5,0xfffff + 3bc0311a: 2501 sext.w a0,a0 + 3bc0311c: 7ff78793 addi a5,a5,2047 # fffffffffffff7ff <__BL2_END__+0xffffffffc43ec3ef> + 3bc03120: 95ce add a1,a1,s3 + 3bc03122: 8d7d and a0,a0,a5 + 3bc03124: e20fe0ef jal ra,3bc01744 + 3bc03128: 8526 mv a0,s1 + 3bc0312a: 7dc000ef jal ra,3bc03906 + 3bc0312e: 600c ld a1,0(s0) + 3bc03130: 6785 lui a5,0x1 + 3bc03132: 90078793 addi a5,a5,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc03136: 95be add a1,a1,a5 + 3bc03138: 6521 lui a0,0x8 + 3bc0313a: e0afe0ef jal ra,3bc01744 + 3bc0313e: 50000993 li s3,1280 + 3bc03142: 00091463 bnez s2,3bc0314a + 3bc03146: 50200993 li s3,1282 + 3bc0314a: 6008 ld a0,0(s0) + 3bc0314c: 6485 lui s1,0x1 + 3bc0314e: 80448493 addi s1,s1,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc03152: 9526 add a0,a0,s1 + 3bc03154: deafe0ef jal ra,3bc0173e + 3bc03158: 600c ld a1,0(s0) + 3bc0315a: 2501 sext.w a0,a0 + 3bc0315c: 00a9e533 or a0,s3,a0 + 3bc03160: 95a6 add a1,a1,s1 + 3bc03162: de2fe0ef jal ra,3bc01744 + 3bc03166: 7442 ld s0,48(sp) + 3bc03168: 70e2 ld ra,56(sp) + 3bc0316a: 74a2 ld s1,40(sp) + 3bc0316c: 7902 ld s2,32(sp) + 3bc0316e: 69e2 ld s3,24(sp) + 3bc03170: 6a42 ld s4,16(sp) + 3bc03172: 6aa2 ld s5,8(sp) + 3bc03174: 450d li a0,3 + 3bc03176: 6121 addi sp,sp,64 + 3bc03178: 83cfd06f j 3bc001b4 + 3bc0317c: 74fc ld a5,232(s1) + 3bc0317e: c789 beqz a5,3bc03188 + 3bc03180: 0d048513 addi a0,s1,208 + 3bc03184: bd1ff0ef jal ra,3bc02d54 <_dwc2_ep_disable.isra.0> + 3bc03188: 1684b783 ld a5,360(s1) + 3bc0318c: c789 beqz a5,3bc03196 + 3bc0318e: 15048513 addi a0,s1,336 + 3bc03192: bc3ff0ef jal ra,3bc02d54 <_dwc2_ep_disable.isra.0> + 3bc03196: 1e84b783 ld a5,488(s1) + 3bc0319a: ea0785e3 beqz a5,3bc03044 + 3bc0319e: 1d048513 addi a0,s1,464 + 3bc031a2: bb3ff0ef jal ra,3bc02d54 <_dwc2_ep_disable.isra.0> + 3bc031a6: bd79 j 3bc03044 + +000000003bc031a8 : + 3bc031a8: 7139 addi sp,sp,-64 + 3bc031aa: f822 sd s0,48(sp) + 3bc031ac: f426 sd s1,40(sp) + 3bc031ae: fc06 sd ra,56(sp) + 3bc031b0: f04a sd s2,32(sp) + 3bc031b2: ec4e sd s3,24(sp) + 3bc031b4: e852 sd s4,16(sp) + 3bc031b6: e456 sd s5,8(sp) + 3bc031b8: 00010497 auipc s1,0x10 + 3bc031bc: 2084b483 ld s1,520(s1) # 3bc133c0 + 3bc031c0: 5429 li s0,-22 + 3bc031c2: cd0d beqz a0,3bc031fc + 3bc031c4: 451c lw a5,8(a0) + 3bc031c6: 4705 li a4,1 + 3bc031c8: 5429 li s0,-22 + 3bc031ca: 37f9 addiw a5,a5,-2 + 3bc031cc: 02f76863 bltu a4,a5,3bc031fc + 3bc031d0: 691c ld a5,16(a0) + 3bc031d2: c78d beqz a5,3bc031fc + 3bc031d4: 7518 ld a4,40(a0) + 3bc031d6: c31d beqz a4,3bc031fc + 3bc031d8: 7118 ld a4,32(a0) + 3bc031da: c30d beqz a4,3bc031fc + 3bc031dc: 6538 ld a4,72(a0) + 3bc031de: cf19 beqz a4,3bc031fc + 3bc031e0: 6938 ld a4,80(a0) + 3bc031e2: cf09 beqz a4,3bc031fc + 3bc031e4: 5435 li s0,-19 + 3bc031e6: c899 beqz s1,3bc031fc + 3bc031e8: 7c98 ld a4,56(s1) + 3bc031ea: 5441 li s0,-16 + 3bc031ec: eb01 bnez a4,3bc031fc + 3bc031ee: fc88 sd a0,56(s1) + 3bc031f0: 8526 mv a0,s1 + 3bc031f2: 9782 jalr a5 + 3bc031f4: 842a mv s0,a0 + 3bc031f6: cd09 beqz a0,3bc03210 + 3bc031f8: 0204bc23 sd zero,56(s1) + 3bc031fc: 70e2 ld ra,56(sp) + 3bc031fe: 8522 mv a0,s0 + 3bc03200: 7442 ld s0,48(sp) + 3bc03202: 74a2 ld s1,40(sp) + 3bc03204: 7902 ld s2,32(sp) + 3bc03206: 69e2 ld s3,24(sp) + 3bc03208: 6a42 ld s4,16(sp) + 3bc0320a: 6aa2 ld s5,8(sp) + 3bc0320c: 6121 addi sp,sp,64 + 3bc0320e: 8082 ret + 3bc03210: 00010917 auipc s2,0x10 + 3bc03214: 1a890913 addi s2,s2,424 # 3bc133b8 + 3bc03218: 00093583 ld a1,0(s2) + 3bc0321c: 6985 lui s3,0x1 + 3bc0321e: 81498793 addi a5,s3,-2028 # 814 <__BSS_SIZE__-0x53fc> + 3bc03222: 95be add a1,a1,a5 + 3bc03224: 4535 li a0,13 + 3bc03226: 0404ba03 ld s4,64(s1) + 3bc0322a: d1afe0ef jal ra,3bc01744 + 3bc0322e: 00093583 ld a1,0(s2) + 3bc03232: 81098793 addi a5,s3,-2032 + 3bc03236: 4535 li a0,13 + 3bc03238: 95be add a1,a1,a5 + 3bc0323a: d0afe0ef jal ra,3bc01744 + 3bc0323e: 00093583 ld a1,0(s2) + 3bc03242: 81c98793 addi a5,s3,-2020 + 3bc03246: 4501 li a0,0 + 3bc03248: 95be add a1,a1,a5 + 3bc0324a: cfafe0ef jal ra,3bc01744 + 3bc0324e: 00093503 ld a0,0(s2) + 3bc03252: 80498993 addi s3,s3,-2044 + 3bc03256: 954e add a0,a0,s3 + 3bc03258: ce6fe0ef jal ra,3bc0173e + 3bc0325c: 00093583 ld a1,0(s2) + 3bc03260: 2501 sext.w a0,a0 + 3bc03262: 00256513 ori a0,a0,2 + 3bc03266: 95ce add a1,a1,s3 + 3bc03268: cdcfe0ef jal ra,3bc01744 + 3bc0326c: a0fff0ef jal ra,3bc02c7a + 3bc03270: 030a2983 lw s3,48(s4) # 20000030 + 3bc03274: 00099663 bnez s3,3bc03280 + 3bc03278: 400819b7 lui s3,0x40081 + 3bc0327c: 40798993 addi s3,s3,1031 # 40081407 <__BL2_END__+0x446dff7> + 3bc03280: 0e0007b7 lui a5,0xe000 + 3bc03284: 0007c783 lbu a5,0(a5) # e000000 + 3bc03288: 4a01 li s4,0 + 3bc0328a: 8ba1 andi a5,a5,8 + 3bc0328c: c795 beqz a5,3bc032b8 + 3bc0328e: 03006ab7 lui s5,0x3006 + 3bc03292: 014a8513 addi a0,s5,20 # 3006014 <__BSS_SIZE__+0x3000404> + 3bc03296: ca8fe0ef jal ra,3bc0173e + 3bc0329a: 00050a1b sext.w s4,a0 + 3bc0329e: 014a8593 addi a1,s5,20 + 3bc032a2: 18b00513 li a0,395 + 3bc032a6: c9efe0ef jal ra,3bc01744 + 3bc032aa: c00037b7 lui a5,0xc0003 + 3bc032ae: 03000737 lui a4,0x3000 + 3bc032b2: 07ad addi a5,a5,11 + 3bc032b4: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc032b8: 00093583 ld a1,0(s2) + 3bc032bc: 854e mv a0,s3 + 3bc032be: 05b1 addi a1,a1,12 + 3bc032c0: c84fe0ef jal ra,3bc01744 + 3bc032c4: 0e0007b7 lui a5,0xe000 + 3bc032c8: 0007c783 lbu a5,0(a5) # e000000 + 3bc032cc: 8ba1 andi a5,a5,8 + 3bc032ce: cb99 beqz a5,3bc032e4 + 3bc032d0: 030065b7 lui a1,0x3006 + 3bc032d4: 8552 mv a0,s4 + 3bc032d6: 05d1 addi a1,a1,20 + 3bc032d8: c6cfe0ef jal ra,3bc01744 + 3bc032dc: 06400513 li a0,100 + 3bc032e0: eabfc0ef jal ra,3bc0018a + 3bc032e4: 00093583 ld a1,0(s2) + 3bc032e8: 4505 li a0,1 + 3bc032ea: 05a1 addi a1,a1,8 + 3bc032ec: c58fe0ef jal ra,3bc01744 + 3bc032f0: 4581 li a1,0 + 3bc032f2: 8526 mv a0,s1 + 3bc032f4: c27ff0ef jal ra,3bc02f1a + 3bc032f8: 0204a023 sw zero,32(s1) + 3bc032fc: b701 j 3bc031fc + +000000003bc032fe : + 3bc032fe: c901 beqz a0,3bc0330e + 3bc03300: 0015151b slliw a0,a0,0x1 + 3bc03304: 00b035b3 snez a1,a1 + 3bc03308: 9d0d subw a0,a0,a1 + 3bc0330a: 0ff57513 andi a0,a0,255 + 3bc0330e: 8082 ret + +000000003bc03310 : + 3bc03310: 4510 lw a2,8(a0) + 3bc03312: 1101 addi sp,sp,-32 + 3bc03314: ec06 sd ra,24(sp) + 3bc03316: e822 sd s0,16(sp) + 3bc03318: e426 sd s1,8(sp) + 3bc0331a: 27700793 li a5,631 + 3bc0331e: 02c7e063 bltu a5,a2,3bc0333e + 3bc03322: 00008517 auipc a0,0x8 + 3bc03326: a1e50513 addi a0,a0,-1506 # 3bc0ad40 <__func__.5+0x1a0> + 3bc0332a: 27800593 li a1,632 + 3bc0332e: 82afd0ef jal ra,3bc00358 + 3bc03332: 557d li a0,-1 + 3bc03334: 60e2 ld ra,24(sp) + 3bc03336: 6442 ld s0,16(sp) + 3bc03338: 64a2 ld s1,8(sp) + 3bc0333a: 6105 addi sp,sp,32 + 3bc0333c: 8082 ret + 3bc0333e: 6100 ld s0,0(a0) + 3bc03340: 84aa mv s1,a0 + 3bc03342: 27800613 li a2,632 + 3bc03346: 4581 li a1,0 + 3bc03348: 8522 mv a0,s0 + 3bc0334a: ec8fd0ef jal ra,3bc00a12 + 3bc0334e: 708c ld a1,32(s1) + 3bc03350: 00008717 auipc a4,0x8 + 3bc03354: 35070713 addi a4,a4,848 # 3bc0b6a0 + 3bc03358: 20000613 li a2,512 + 3bc0335c: 00010797 auipc a5,0x10 + 3bc03360: 04b7be23 sd a1,92(a5) # 3bc133b8 + 3bc03364: 00008797 auipc a5,0x8 + 3bc03368: ab478793 addi a5,a5,-1356 # 3bc0ae18 + 3bc0336c: e81c sd a5,16(s0) + 3bc0336e: 05040793 addi a5,s0,80 + 3bc03372: ec1c sd a5,24(s0) + 3bc03374: 00008797 auipc a5,0x8 + 3bc03378: a9478793 addi a5,a5,-1388 # 3bc0ae08 + 3bc0337c: f81c sd a5,48(s0) + 3bc0337e: 02c44783 lbu a5,44(s0) + 3bc03382: f838 sd a4,112(s0) + 3bc03384: f878 sd a4,240(s0) + 3bc03386: fc07f793 andi a5,a5,-64 + 3bc0338a: 0017e793 ori a5,a5,1 + 3bc0338e: 02f40623 sb a5,44(s0) + 3bc03392: 478d li a5,3 + 3bc03394: d05c sw a5,36(s0) + 3bc03396: 00008797 auipc a5,0x8 + 3bc0339a: aca78793 addi a5,a5,-1334 # 3bc0ae60 + 3bc0339e: f43c sd a5,104(s0) + 3bc033a0: 04000793 li a5,64 + 3bc033a4: 06f41c23 sh a5,120(s0) + 3bc033a8: 00008797 auipc a5,0x8 + 3bc033ac: ac878793 addi a5,a5,-1336 # 3bc0ae70 + 3bc033b0: f47c sd a5,232(s0) + 3bc033b2: 28100793 li a5,641 + 3bc033b6: 14f410a3 sh a5,321(s0) + 3bc033ba: 4785 li a5,1 + 3bc033bc: 02079693 slli a3,a5,0x20 + 3bc033c0: 00268513 addi a0,a3,2 + 3bc033c4: 14a43223 sd a0,324(s0) + 3bc033c8: 0685 addi a3,a3,1 + 3bc033ca: 00008517 auipc a0,0x8 + 3bc033ce: ab650513 addi a0,a0,-1354 # 3bc0ae80 + 3bc033d2: 16a43423 sd a0,360(s0) + 3bc033d6: 1cd43223 sd a3,452(s0) + 3bc033da: 20100513 li a0,513 + 3bc033de: 00008697 auipc a3,0x8 + 3bc033e2: ab268693 addi a3,a3,-1358 # 3bc0ae90 + 3bc033e6: 1786 slli a5,a5,0x21 + 3bc033e8: 078d addi a5,a5,3 + 3bc033ea: 16e43823 sd a4,368(s0) + 3bc033ee: 1ee43823 sd a4,496(s0) + 3bc033f2: e024 sd s1,64(s0) + 3bc033f4: 24040823 sb zero,592(s0) + 3bc033f8: e440 sd s0,136(s0) + 3bc033fa: 0c0410a3 sh zero,193(s0) + 3bc033fe: 0c042223 sw zero,196(s0) + 3bc03402: 0ec41c23 sh a2,248(s0) + 3bc03406: 10843423 sd s0,264(s0) + 3bc0340a: 16c41c23 sh a2,376(s0) + 3bc0340e: 18843423 sd s0,392(s0) + 3bc03412: 1ca410a3 sh a0,449(s0) + 3bc03416: 1ed43423 sd a3,488(s0) + 3bc0341a: 1ec41c23 sh a2,504(s0) + 3bc0341e: 20843423 sd s0,520(s0) + 3bc03422: 38200713 li a4,898 + 3bc03426: 24e410a3 sh a4,577(s0) + 3bc0342a: 24f43223 sd a5,580(s0) + 3bc0342e: 00010797 auipc a5,0x10 + 3bc03432: f887b923 sd s0,-110(a5) # 3bc133c0 + 3bc03436: 60bc ld a5,64(s1) + 3bc03438: 24f43c23 sd a5,600(s0) + 3bc0343c: eb89 bnez a5,3bc0344e + 3bc0343e: 00008517 auipc a0,0x8 + 3bc03442: 93250513 addi a0,a0,-1742 # 3bc0ad70 <__func__.5+0x1d0> + 3bc03446: f13fc0ef jal ra,3bc00358 + 3bc0344a: 5551 li a0,-12 + 3bc0344c: b5e5 j 3bc03334 + 3bc0344e: 8522 mv a0,s0 + 3bc03450: 26f42023 sw a5,608(s0) + 3bc03454: 26b43423 sd a1,616(s0) + 3bc03458: c74ff0ef jal ra,3bc028cc + 3bc0345c: 4501 li a0,0 + 3bc0345e: bdd9 j 3bc03334 + +000000003bc03460 : + 3bc03460: 1101 addi sp,sp,-32 + 3bc03462: e426 sd s1,8(sp) + 3bc03464: 00010497 auipc s1,0x10 + 3bc03468: f5448493 addi s1,s1,-172 # 3bc133b8 + 3bc0346c: 6088 ld a0,0(s1) + 3bc0346e: ec06 sd ra,24(sp) + 3bc03470: e822 sd s0,16(sp) + 3bc03472: 0551 addi a0,a0,20 + 3bc03474: acafe0ef jal ra,3bc0173e + 3bc03478: 0005041b sext.w s0,a0 + 3bc0347c: 6088 ld a0,0(s1) + 3bc0347e: 0561 addi a0,a0,24 + 3bc03480: abefe0ef jal ra,3bc0173e + 3bc03484: 2501 sext.w a0,a0 + 3bc03486: 8c69 and s0,s0,a0 + 3bc03488: cc01 beqz s0,3bc034a0 + 3bc0348a: 6442 ld s0,16(sp) + 3bc0348c: 60e2 ld ra,24(sp) + 3bc0348e: 64a2 ld s1,8(sp) + 3bc03490: 00010597 auipc a1,0x10 + 3bc03494: f305b583 ld a1,-208(a1) # 3bc133c0 + 3bc03498: 4505 li a0,1 + 3bc0349a: 6105 addi sp,sp,32 + 3bc0349c: 3fb0006f j 3bc04096 + 3bc034a0: 60e2 ld ra,24(sp) + 3bc034a2: 6442 ld s0,16(sp) + 3bc034a4: 64a2 ld s1,8(sp) + 3bc034a6: 4501 li a0,0 + 3bc034a8: 6105 addi sp,sp,32 + 3bc034aa: 8082 ret + +000000003bc034ac : + 3bc034ac: 7179 addi sp,sp,-48 + 3bc034ae: f022 sd s0,32(sp) + 3bc034b0: f406 sd ra,40(sp) + 3bc034b2: ec26 sd s1,24(sp) + 3bc034b4: 470d li a4,3 + 3bc034b6: 26853403 ld s0,616(a0) + 3bc034ba: 00008697 auipc a3,0x8 + 3bc034be: 23668693 addi a3,a3,566 # 3bc0b6f0 + 3bc034c2: 00008797 auipc a5,0x8 + 3bc034c6: 23278793 addi a5,a5,562 # 3bc0b6f4 + 3bc034ca: 06e59163 bne a1,a4,3bc0352c + 3bc034ce: 04000713 li a4,64 + 3bc034d2: c298 sw a4,0(a3) + 3bc034d4: 20000713 li a4,512 + 3bc034d8: c398 sw a4,0(a5) + 3bc034da: d10c sw a1,32(a0) + 3bc034dc: 0007d783 lhu a5,0(a5) + 3bc034e0: 6485 lui s1,0x1 + 3bc034e2: 90048593 addi a1,s1,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc034e6: 95a2 add a1,a1,s0 + 3bc034e8: 04000713 li a4,64 + 3bc034ec: 06e51c23 sh a4,120(a0) + 3bc034f0: 0ef51c23 sh a5,248(a0) + 3bc034f4: 16f51c23 sh a5,376(a0) + 3bc034f8: 1ef51c23 sh a5,504(a0) + 3bc034fc: 852e mv a0,a1 + 3bc034fe: e42e sd a1,8(sp) + 3bc03500: a3efe0ef jal ra,3bc0173e + 3bc03504: 65a2 ld a1,8(sp) + 3bc03506: 2501 sext.w a0,a0 + 3bc03508: 9971 andi a0,a0,-4 + 3bc0350a: b0048493 addi s1,s1,-1280 + 3bc0350e: a36fe0ef jal ra,3bc01744 + 3bc03512: 9426 add s0,s0,s1 + 3bc03514: 8522 mv a0,s0 + 3bc03516: a28fe0ef jal ra,3bc0173e + 3bc0351a: 85a2 mv a1,s0 + 3bc0351c: 7402 ld s0,32(sp) + 3bc0351e: 70a2 ld ra,40(sp) + 3bc03520: 64e2 ld s1,24(sp) + 3bc03522: 2501 sext.w a0,a0 + 3bc03524: 9971 andi a0,a0,-4 + 3bc03526: 6145 addi sp,sp,48 + 3bc03528: a1cfe06f j 3bc01744 + 3bc0352c: 04000713 li a4,64 + 3bc03530: c298 sw a4,0(a3) + 3bc03532: c398 sw a4,0(a5) + 3bc03534: 4709 li a4,2 + 3bc03536: d118 sw a4,32(a0) + 3bc03538: b755 j 3bc034dc + +000000003bc0353a : + 3bc0353a: 1101 addi sp,sp,-32 + 3bc0353c: e822 sd s0,16(sp) + 3bc0353e: ec06 sd ra,24(sp) + 3bc03540: 07154703 lbu a4,113(a0) + 3bc03544: 7d1c ld a5,56(a0) + 3bc03546: 842a mv s0,a0 + 3bc03548: fc77368b extu a3,a4,63,7 + 3bc0354c: 2687b583 ld a1,616(a5) + 3bc03550: 00f77793 andi a5,a4,15 + 3bc03554: ce9d beqz a3,3bc03592 + 3bc03556: 04878793 addi a5,a5,72 + 3bc0355a: 0796 slli a5,a5,0x5 + 3bc0355c: 95be add a1,a1,a5 + 3bc0355e: 852e mv a0,a1 + 3bc03560: e42e sd a1,8(sp) + 3bc03562: 9dcfe0ef jal ra,3bc0173e + 3bc03566: ffe007b7 lui a5,0xffe00 + 3bc0356a: 17fd addi a5,a5,-1 + 3bc0356c: 2501 sext.w a0,a0 + 3bc0356e: 8d7d and a0,a0,a5 + 3bc03570: 07244783 lbu a5,114(s0) + 3bc03574: 4705 li a4,1 + 3bc03576: 65a2 ld a1,8(sp) + 3bc03578: 37f9 addiw a5,a5,-2 + 3bc0357a: 0ff7f793 andi a5,a5,255 + 3bc0357e: 00f76563 bltu a4,a5,3bc03588 + 3bc03582: 100007b7 lui a5,0x10000 + 3bc03586: 8d5d or a0,a0,a5 + 3bc03588: 6442 ld s0,16(sp) + 3bc0358a: 60e2 ld ra,24(sp) + 3bc0358c: 6105 addi sp,sp,32 + 3bc0358e: 9b6fe06f j 3bc01744 + 3bc03592: 05878793 addi a5,a5,88 # 10000058 + 3bc03596: b7d1 j 3bc0355a + +000000003bc03598 : + 3bc03598: 1101 addi sp,sp,-32 + 3bc0359a: ec06 sd ra,24(sp) + 3bc0359c: 07154703 lbu a4,113(a0) + 3bc035a0: 7d1c ld a5,56(a0) + 3bc035a2: fc77368b extu a3,a4,63,7 + 3bc035a6: 2687b583 ld a1,616(a5) + 3bc035aa: 00f77793 andi a5,a4,15 + 3bc035ae: ca85 beqz a3,3bc035de + 3bc035b0: 04878793 addi a5,a5,72 + 3bc035b4: 0796 slli a5,a5,0x5 + 3bc035b6: 95be add a1,a1,a5 + 3bc035b8: 852e mv a0,a1 + 3bc035ba: e42e sd a1,8(sp) + 3bc035bc: 982fe0ef jal ra,3bc0173e + 3bc035c0: 0005079b sext.w a5,a0 + 3bc035c4: 65a2 ld a1,8(sp) + 3bc035c6: 0007d563 bgez a5,3bc035d0 + 3bc035ca: 40000737 lui a4,0x40000 + 3bc035ce: 8fd9 or a5,a5,a4 + 3bc035d0: 00200537 lui a0,0x200 + 3bc035d4: 8d5d or a0,a0,a5 + 3bc035d6: 60e2 ld ra,24(sp) + 3bc035d8: 6105 addi sp,sp,32 + 3bc035da: 96afe06f j 3bc01744 + 3bc035de: 05878793 addi a5,a5,88 + 3bc035e2: 0796 slli a5,a5,0x5 + 3bc035e4: 95be add a1,a1,a5 + 3bc035e6: 852e mv a0,a1 + 3bc035e8: e42e sd a1,8(sp) + 3bc035ea: 954fe0ef jal ra,3bc0173e + 3bc035ee: 002007b7 lui a5,0x200 + 3bc035f2: 8d5d or a0,a0,a5 + 3bc035f4: 65a2 ld a1,8(sp) + 3bc035f6: 2501 sext.w a0,a0 + 3bc035f8: bff9 j 3bc035d6 + +000000003bc035fa : + 3bc035fa: 7139 addi sp,sp,-64 + 3bc035fc: f822 sd s0,48(sp) + 3bc035fe: 26853403 ld s0,616(a0) # 200268 <__BSS_SIZE__+0x1fa658> + 3bc03602: f426 sd s1,40(sp) + 3bc03604: 6485 lui s1,0x1 + 3bc03606: ec4e sd s3,24(sp) + 3bc03608: b1048593 addi a1,s1,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc0360c: 000809b7 lui s3,0x80 + 3bc03610: f04a sd s2,32(sp) + 3bc03612: 95a2 add a1,a1,s0 + 3bc03614: 892a mv s2,a0 + 3bc03616: 00898513 addi a0,s3,8 # 80008 <__BSS_SIZE__+0x7a3f8> + 3bc0361a: fc06 sd ra,56(sp) + 3bc0361c: 928fe0ef jal ra,3bc01744 + 3bc03620: 26092503 lw a0,608(s2) + 3bc03624: b1448593 addi a1,s1,-1260 + 3bc03628: 95a2 add a1,a1,s0 + 3bc0362a: 91afe0ef jal ra,3bc01744 + 3bc0362e: b0048593 addi a1,s1,-1280 + 3bc03632: 95a2 add a1,a1,s0 + 3bc03634: 852e mv a0,a1 + 3bc03636: e42e sd a1,8(sp) + 3bc03638: 906fe0ef jal ra,3bc0173e + 3bc0363c: 0005041b sext.w s0,a0 + 3bc03640: c0000537 lui a0,0xc0000 + 3bc03644: 157d addi a0,a0,-1 + 3bc03646: 65a2 ld a1,8(sp) + 3bc03648: 8c69 and s0,s0,a0 + 3bc0364a: 84000537 lui a0,0x84000 + 3bc0364e: 8c49 or s0,s0,a0 + 3bc03650: 8522 mv a0,s0 + 3bc03652: 8f2fe0ef jal ra,3bc01744 + 3bc03656: 85a2 mv a1,s0 + 3bc03658: 7442 ld s0,48(sp) + 3bc0365a: 26092603 lw a2,608(s2) + 3bc0365e: 70e2 ld ra,56(sp) + 3bc03660: 74a2 ld s1,40(sp) + 3bc03662: 7902 ld s2,32(sp) + 3bc03664: 00898693 addi a3,s3,8 + 3bc03668: 69e2 ld s3,24(sp) + 3bc0366a: 00089537 lui a0,0x89 + 3bc0366e: 4701 li a4,0 + 3bc03670: 88850513 addi a0,a0,-1912 # 88888 <__BSS_SIZE__+0x82c78> + 3bc03674: 6121 addi sp,sp,64 + 3bc03676: a4aff06f j 3bc028c0 + +000000003bc0367a : + 3bc0367a: 7179 addi sp,sp,-48 + 3bc0367c: f022 sd s0,32(sp) + 3bc0367e: 26853403 ld s0,616(a0) + 3bc03682: ec26 sd s1,24(sp) + 3bc03684: e84a sd s2,16(sp) + 3bc03686: 6485 lui s1,0x1 + 3bc03688: 892a mv s2,a0 + 3bc0368a: 26052503 lw a0,608(a0) + 3bc0368e: 91448593 addi a1,s1,-1772 # 914 <__BSS_SIZE__-0x52fc> + 3bc03692: 95a2 add a1,a1,s0 + 3bc03694: f406 sd ra,40(sp) + 3bc03696: 8aefe0ef jal ra,3bc01744 + 3bc0369a: 91048593 addi a1,s1,-1776 + 3bc0369e: 95a2 add a1,a1,s0 + 3bc036a0: 00080537 lui a0,0x80 + 3bc036a4: 8a0fe0ef jal ra,3bc01744 + 3bc036a8: 90048593 addi a1,s1,-1792 + 3bc036ac: 95a2 add a1,a1,s0 + 3bc036ae: 852e mv a0,a1 + 3bc036b0: e42e sd a1,8(sp) + 3bc036b2: 88cfe0ef jal ra,3bc0173e + 3bc036b6: 0005041b sext.w s0,a0 + 3bc036ba: c0000537 lui a0,0xc0000 + 3bc036be: 157d addi a0,a0,-1 + 3bc036c0: 65a2 ld a1,8(sp) + 3bc036c2: 8c69 and s0,s0,a0 + 3bc036c4: 84000537 lui a0,0x84000 + 3bc036c8: 8c49 or s0,s0,a0 + 3bc036ca: 8522 mv a0,s0 + 3bc036cc: 878fe0ef jal ra,3bc01744 + 3bc036d0: 479d li a5,7 + 3bc036d2: 85a2 mv a1,s0 + 3bc036d4: 7402 ld s0,32(sp) + 3bc036d6: 26092603 lw a2,608(s2) + 3bc036da: 70a2 ld ra,40(sp) + 3bc036dc: 64e2 ld s1,24(sp) + 3bc036de: 04f92423 sw a5,72(s2) + 3bc036e2: 6942 ld s2,16(sp) + 3bc036e4: 000ab537 lui a0,0xab + 3bc036e8: 4701 li a4,0 + 3bc036ea: 000806b7 lui a3,0x80 + 3bc036ee: aaa50513 addi a0,a0,-1366 # aaaaa <__BSS_SIZE__+0xa4e9a> + 3bc036f2: 6145 addi sp,sp,48 + 3bc036f4: 9ccff06f j 3bc028c0 + +000000003bc036f8 : + 3bc036f8: 1101 addi sp,sp,-32 + 3bc036fa: e822 sd s0,16(sp) + 3bc036fc: e426 sd s1,8(sp) + 3bc036fe: 26853403 ld s0,616(a0) + 3bc03702: 84aa mv s1,a0 + 3bc03704: 00087537 lui a0,0x87 + 3bc03708: 08750513 addi a0,a0,135 # 87087 <__BSS_SIZE__+0x81477> + 3bc0370c: 4701 li a4,0 + 3bc0370e: 4681 li a3,0 + 3bc03710: 4601 li a2,0 + 3bc03712: e04a sd s2,0(sp) + 3bc03714: ec06 sd ra,24(sp) + 3bc03716: 892e mv s2,a1 + 3bc03718: 9a8ff0ef jal ra,3bc028c0 + 3bc0371c: 6505 lui a0,0x1 + 3bc0371e: 02090b63 beqz s2,3bc03754 + 3bc03722: 90050513 addi a0,a0,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc03726: 9522 add a0,a0,s0 + 3bc03728: 816fe0ef jal ra,3bc0173e + 3bc0372c: 2501 sext.w a0,a0 + 3bc0372e: 002007b7 lui a5,0x200 + 3bc03732: 8d5d or a0,a0,a5 + 3bc03734: 6585 lui a1,0x1 + 3bc03736: 02090263 beqz s2,3bc0375a + 3bc0373a: 90058593 addi a1,a1,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc0373e: 95a2 add a1,a1,s0 + 3bc03740: 804fe0ef jal ra,3bc01744 + 3bc03744: 60e2 ld ra,24(sp) + 3bc03746: 6442 ld s0,16(sp) + 3bc03748: 0404a423 sw zero,72(s1) + 3bc0374c: 6902 ld s2,0(sp) + 3bc0374e: 64a2 ld s1,8(sp) + 3bc03750: 6105 addi sp,sp,32 + 3bc03752: 8082 ret + 3bc03754: b0050513 addi a0,a0,-1280 + 3bc03758: b7f9 j 3bc03726 + 3bc0375a: b0058593 addi a1,a1,-1280 + 3bc0375e: b7c5 j 3bc0373e + +000000003bc03760 : + 3bc03760: 7179 addi sp,sp,-48 + 3bc03762: 7d18 ld a4,56(a0) + 3bc03764: 5dd4 lw a3,60(a1) + 3bc03766: ec26 sd s1,24(sp) + 3bc03768: f406 sd ra,40(sp) + 3bc0376a: f022 sd s0,32(sp) + 3bc0376c: e84a sd s2,16(sp) + 3bc0376e: 07154783 lbu a5,113(a0) + 3bc03772: 84aa mv s1,a0 + 3bc03774: 6988 ld a0,16(a1) + 3bc03776: 26873603 ld a2,616(a4) # 40000268 <__BL2_END__+0x43ece58> + 3bc0377a: 7c06b70b extu a4,a3,31,0 + 3bc0377e: 953a add a0,a0,a4 + 3bc03780: 4d98 lw a4,24(a1) + 3bc03782: 8bbd andi a5,a5,15 + 3bc03784: 6591 lui a1,0x4 + 3bc03786: 9f15 subw a4,a4,a3 + 3bc03788: e399 bnez a5,3bc0378e + 3bc0378a: 0284d583 lhu a1,40(s1) + 3bc0378e: 0007069b sext.w a3,a4 + 3bc03792: 00d5b6b3 sltu a3,a1,a3 + 3bc03796: 0016c693 xori a3,a3,1 + 3bc0379a: 40d5970b mveqz a4,a1,a3 + 3bc0379e: d0b8 sw a4,96(s1) + 3bc037a0: f4a8 sd a0,104(s1) + 3bc037a2: 0007091b sext.w s2,a4 + 3bc037a6: 4405 li s0,1 + 3bc037a8: cb91 beqz a5,3bc037bc + 3bc037aa: 00090963 beqz s2,3bc037bc + 3bc037ae: 0284d683 lhu a3,40(s1) + 3bc037b2: fff9041b addiw s0,s2,-1 + 3bc037b6: 02d4543b divuw s0,s0,a3 + 3bc037ba: 2405 addiw s0,s0,1 + 3bc037bc: 05878793 addi a5,a5,88 # 200058 <__BSS_SIZE__+0x1fa448> + 3bc037c0: 0796 slli a5,a5,0x5 + 3bc037c2: 00f605b3 add a1,a2,a5 + 3bc037c6: 852e mv a0,a1 + 3bc037c8: e42e sd a1,8(sp) + 3bc037ca: f75fd0ef jal ra,3bc0173e + 3bc037ce: 54b0 lw a2,104(s1) + 3bc037d0: 840004b7 lui s1,0x84000 + 3bc037d4: 65a2 ld a1,8(sp) + 3bc037d6: 8cc9 or s1,s1,a0 + 3bc037d8: 2481 sext.w s1,s1 + 3bc037da: 8526 mv a0,s1 + 3bc037dc: 0134141b slliw s0,s0,0x13 + 3bc037e0: e032 sd a2,0(sp) + 3bc037e2: 00896433 or s0,s2,s0 + 3bc037e6: f5ffd0ef jal ra,3bc01744 + 3bc037ea: 0004069b sext.w a3,s0 + 3bc037ee: 7402 ld s0,32(sp) + 3bc037f0: 6602 ld a2,0(sp) + 3bc037f2: 70a2 ld ra,40(sp) + 3bc037f4: 6942 ld s2,16(sp) + 3bc037f6: 85a6 mv a1,s1 + 3bc037f8: 64e2 ld s1,24(sp) + 3bc037fa: 00077537 lui a0,0x77 + 3bc037fe: 4701 li a4,0 + 3bc03800: 77750513 addi a0,a0,1911 # 77777 <__BSS_SIZE__+0x71b67> + 3bc03804: 6145 addi sp,sp,48 + 3bc03806: 8baff06f j 3bc028c0 + +000000003bc0380a : + 3bc0380a: 715d addi sp,sp,-80 + 3bc0380c: ec56 sd s5,24(sp) + 3bc0380e: 8aae mv s5,a1 + 3bc03810: fc26 sd s1,56(sp) + 3bc03812: 4581 li a1,0 + 3bc03814: 84aa mv s1,a0 + 3bc03816: 8556 mv a0,s5 + 3bc03818: e0a2 sd s0,64(sp) + 3bc0381a: f84a sd s2,48(sp) + 3bc0381c: f44e sd s3,40(sp) + 3bc0381e: f052 sd s4,32(sp) + 3bc03820: e486 sd ra,72(sp) + 3bc03822: addff0ef jal ra,3bc032fe + 3bc03826: 0005079b sext.w a5,a0 + 3bc0382a: 00779a13 slli s4,a5,0x7 + 3bc0382e: 014487b3 add a5,s1,s4 + 3bc03832: 00751413 slli s0,a0,0x7 + 3bc03836: 0987b903 ld s2,152(a5) + 3bc0383a: 09840993 addi s3,s0,152 + 3bc0383e: 99a6 add s3,s3,s1 + 3bc03840: 09298563 beq s3,s2,3bc038ca + 3bc03844: 6505 lui a0,0x1 + 3bc03846: b1050513 addi a0,a0,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc0384a: 005a9793 slli a5,s5,0x5 + 3bc0384e: 97aa add a5,a5,a0 + 3bc03850: 2684b503 ld a0,616(s1) # ffffffff84000268 <__BL2_END__+0xffffffff483ece58> + 3bc03854: fc090593 addi a1,s2,-64 + 3bc03858: e42e sd a1,8(sp) + 3bc0385a: 953e add a0,a0,a5 + 3bc0385c: ee3fd0ef jal ra,3bc0173e + 3bc03860: 0005071b sext.w a4,a0 + 3bc03864: 65a2 ld a1,8(sp) + 3bc03866: 07f77693 andi a3,a4,127 + 3bc0386a: 000a8463 beqz s5,3bc03872 + 3bc0386e: fe092683 lw a3,-32(s2) + 3bc03872: 01448833 add a6,s1,s4 + 3bc03876: 0b082703 lw a4,176(a6) + 3bc0387a: ffc92883 lw a7,-4(s2) + 3bc0387e: fd892603 lw a2,-40(s2) + 3bc03882: 40d7033b subw t1,a4,a3 + 3bc03886: 05040513 addi a0,s0,80 + 3bc0388a: 411607bb subw a5,a2,a7 + 3bc0388e: 86be mv a3,a5 + 3bc03890: 00f337b3 sltu a5,t1,a5 + 3bc03894: 0017c793 xori a5,a5,1 + 3bc03898: 40f3168b mveqz a3,t1,a5 + 3bc0389c: 011687bb addw a5,a3,a7 + 3bc038a0: 07885683 lhu a3,120(a6) + 3bc038a4: fef92e23 sw a5,-4(s2) + 3bc038a8: 9526 add a0,a0,s1 + 3bc038aa: 02d3773b remuw a4,t1,a3 + 3bc038ae: e319 bnez a4,3bc038b4 + 3bc038b0: 04f61263 bne a2,a5,3bc038f4 + 3bc038b4: 020a9463 bnez s5,3bc038dc + 3bc038b8: 44b8 lw a4,72(s1) + 3bc038ba: 4791 li a5,4 + 3bc038bc: 02f71063 bne a4,a5,3bc038dc + 3bc038c0: 8526 mv a0,s1 + 3bc038c2: db9ff0ef jal ra,3bc0367a + 3bc038c6: 479d li a5,7 + 3bc038c8: c4bc sw a5,72(s1) + 3bc038ca: 60a6 ld ra,72(sp) + 3bc038cc: 6406 ld s0,64(sp) + 3bc038ce: 74e2 ld s1,56(sp) + 3bc038d0: 7942 ld s2,48(sp) + 3bc038d2: 79a2 ld s3,40(sp) + 3bc038d4: 7a02 ld s4,32(sp) + 3bc038d6: 6ae2 ld s5,24(sp) + 3bc038d8: 6161 addi sp,sp,80 + 3bc038da: 8082 ret + 3bc038dc: 4601 li a2,0 + 3bc038de: e42a sd a0,8(sp) + 3bc038e0: 832ff0ef jal ra,3bc02912 + 3bc038e4: 014487b3 add a5,s1,s4 + 3bc038e8: 6fcc ld a1,152(a5) + 3bc038ea: feb980e3 beq s3,a1,3bc038ca + 3bc038ee: 6522 ld a0,8(sp) + 3bc038f0: fc058593 addi a1,a1,-64 # 3fc0 <__BSS_SIZE__-0x1c50> + 3bc038f4: 6406 ld s0,64(sp) + 3bc038f6: 60a6 ld ra,72(sp) + 3bc038f8: 74e2 ld s1,56(sp) + 3bc038fa: 7942 ld s2,48(sp) + 3bc038fc: 79a2 ld s3,40(sp) + 3bc038fe: 7a02 ld s4,32(sp) + 3bc03900: 6ae2 ld s5,24(sp) + 3bc03902: 6161 addi sp,sp,80 + 3bc03904: bdb1 j 3bc03760 + +000000003bc03906 : + 3bc03906: 26853583 ld a1,616(a0) + 3bc0390a: 6785 lui a5,0x1 + 3bc0390c: b1078793 addi a5,a5,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc03910: 20080537 lui a0,0x20080 + 3bc03914: 95be add a1,a1,a5 + 3bc03916: 0521 addi a0,a0,8 + 3bc03918: e2dfd06f j 3bc01744 + +000000003bc0391c : + 3bc0391c: 7179 addi sp,sp,-48 + 3bc0391e: e84a sd s2,16(sp) + 3bc03920: 26853903 ld s2,616(a0) # 20080268 + 3bc03924: 0585 addi a1,a1,1 + 3bc03926: f022 sd s0,32(sp) + 3bc03928: 05b2 slli a1,a1,0xc + 3bc0392a: 0036841b addiw s0,a3,3 + 3bc0392e: ec26 sd s1,24(sp) + 3bc03930: f406 sd ra,40(sp) + 3bc03932: 4024340b extu s0,s0,16,2 + 3bc03936: 992e add s2,s2,a1 + 3bc03938: 4481 li s1,0 + 3bc0393a: 0004879b sext.w a5,s1 + 3bc0393e: 0087e863 bltu a5,s0,3bc0394e + 3bc03942: 70a2 ld ra,40(sp) + 3bc03944: 7402 ld s0,32(sp) + 3bc03946: 64e2 ld s1,24(sp) + 3bc03948: 6942 ld s2,16(sp) + 3bc0394a: 6145 addi sp,sp,48 + 3bc0394c: 8082 ret + 3bc0394e: 4496450b lrw a0,a2,s1,2 + 3bc03952: 85ca mv a1,s2 + 3bc03954: e432 sd a2,8(sp) + 3bc03956: deffd0ef jal ra,3bc01744 + 3bc0395a: 6622 ld a2,8(sp) + 3bc0395c: 0485 addi s1,s1,1 + 3bc0395e: bff1 j 3bc0393a + +000000003bc03960 : + 3bc03960: 7d1c ld a5,56(a0) + 3bc03962: 7119 addi sp,sp,-128 + 3bc03964: f8a2 sd s0,112(sp) + 3bc03966: f862 sd s8,48(sp) + 3bc03968: f466 sd s9,40(sp) + 3bc0396a: f06a sd s10,32(sp) + 3bc0396c: 2687bc83 ld s9,616(a5) + 3bc03970: fc86 sd ra,120(sp) + 3bc03972: 5ddc lw a5,60(a1) + 3bc03974: f4a6 sd s1,104(sp) + 3bc03976: f0ca sd s2,96(sp) + 3bc03978: ecce sd s3,88(sp) + 3bc0397a: e8d2 sd s4,80(sp) + 3bc0397c: e4d6 sd s5,72(sp) + 3bc0397e: e0da sd s6,64(sp) + 3bc03980: fc5e sd s7,56(sp) + 3bc03982: ec6e sd s11,24(sp) + 3bc03984: 07154903 lbu s2,113(a0) + 3bc03988: 6998 ld a4,16(a1) + 3bc0398a: 4d80 lw s0,24(a1) + 3bc0398c: 7c07b60b extu a2,a5,31,0 + 3bc03990: 00f97d13 andi s10,s2,15 + 3bc03994: 963a add a2,a2,a4 + 3bc03996: 40f4073b subw a4,s0,a5 + 3bc0399a: 6791 lui a5,0x4 + 3bc0399c: 8c2a mv s8,a0 + 3bc0399e: 896a mv s2,s10 + 3bc039a0: 6411 lui s0,0x4 + 3bc039a2: 00e7e363 bltu a5,a4,3bc039a8 + 3bc039a6: 843a mv s0,a4 + 3bc039a8: 000d1d63 bnez s10,3bc039c2 + 3bc039ac: 028c5783 lhu a5,40(s8) + 3bc039b0: 873e mv a4,a5 + 3bc039b2: 00f437b3 sltu a5,s0,a5 + 3bc039b6: 0017c793 xori a5,a5,1 + 3bc039ba: 40f4170b mveqz a4,s0,a5 + 3bc039be: 0007041b sext.w s0,a4 + 3bc039c2: 0004099b sext.w s3,s0 + 3bc039c6: 073c2023 sw s3,96(s8) + 3bc039ca: 06cc3423 sd a2,104(s8) + 3bc039ce: 00060a1b sext.w s4,a2 + 3bc039d2: 4785 li a5,1 + 3bc039d4: c801 beqz s0,3bc039e4 + 3bc039d6: 028c5503 lhu a0,40(s8) + 3bc039da: fff4079b addiw a5,s0,-1 + 3bc039de: 02a7d7bb divuw a5,a5,a0 + 3bc039e2: 2785 addiw a5,a5,1 + 3bc039e4: 6d85 lui s11,0x1 + 3bc039e6: 005d1b13 slli s6,s10,0x5 + 3bc039ea: 910d8a93 addi s5,s11,-1776 # 910 <__BSS_SIZE__-0x5300> + 3bc039ee: 0137979b slliw a5,a5,0x13 + 3bc039f2: 9ada add s5,s5,s6 + 3bc039f4: 00f46533 or a0,s0,a5 + 3bc039f8: 9ae6 add s5,s5,s9 + 3bc039fa: 85d6 mv a1,s5 + 3bc039fc: 2501 sext.w a0,a0 + 3bc039fe: e432 sd a2,8(sp) + 3bc03a00: d45fd0ef jal ra,3bc01744 + 3bc03a04: 900d8793 addi a5,s11,-1792 + 3bc03a08: 9b3e add s6,s6,a5 + 3bc03a0a: 9b66 add s6,s6,s9 + 3bc03a0c: 855a mv a0,s6 + 3bc03a0e: d31fd0ef jal ra,3bc0173e + 3bc03a12: 078c2783 lw a5,120(s8) + 3bc03a16: bc4004b7 lui s1,0xbc400 + 3bc03a1a: 00050b9b sext.w s7,a0 + 3bc03a1e: 14fd addi s1,s1,-1 + 3bc03a20: 0167979b slliw a5,a5,0x16 + 3bc03a24: 009bf4b3 and s1,s7,s1 + 3bc03a28: 8cdd or s1,s1,a5 + 3bc03a2a: 77e1 lui a5,0xffff8 + 3bc03a2c: 7ff78793 addi a5,a5,2047 # ffffffffffff87ff <__BL2_END__+0xffffffffc43e53ef> + 3bc03a30: 2481 sext.w s1,s1 + 3bc03a32: 8cfd and s1,s1,a5 + 3bc03a34: 840007b7 lui a5,0x84000 + 3bc03a38: 8cdd or s1,s1,a5 + 3bc03a3a: 85da mv a1,s6 + 3bc03a3c: 8526 mv a0,s1 + 3bc03a3e: d07fd0ef jal ra,3bc01744 + 3bc03a42: 6622 ld a2,8(sp) + 3bc03a44: 038c3503 ld a0,56(s8) + 3bc03a48: 3c04368b extu a3,s0,15,0 + 3bc03a4c: 85ea mv a1,s10 + 3bc03a4e: ecfff0ef jal ra,3bc0391c + 3bc03a52: c809 beqz s0,3bc03a64 + 3bc03a54: 834d8593 addi a1,s11,-1996 + 3bc03a58: 4505 li a0,1 + 3bc03a5a: 95e6 add a1,a1,s9 + 3bc03a5c: 0125153b sllw a0,a0,s2 + 3bc03a60: ce5fd0ef jal ra,3bc01744 + 3bc03a64: 855a mv a0,s6 + 3bc03a66: cd9fd0ef jal ra,3bc0173e + 3bc03a6a: 0005071b sext.w a4,a0 + 3bc03a6e: 00044537 lui a0,0x44 + 3bc03a72: 86de mv a3,s7 + 3bc03a74: 8652 mv a2,s4 + 3bc03a76: 85a6 mv a1,s1 + 3bc03a78: 44450513 addi a0,a0,1092 # 44444 <__BSS_SIZE__+0x3e834> + 3bc03a7c: e45fe0ef jal ra,3bc028c0 + 3bc03a80: 8556 mv a0,s5 + 3bc03a82: cbdfd0ef jal ra,3bc0173e + 3bc03a86: 0005059b sext.w a1,a0 + 3bc03a8a: 00046537 lui a0,0x46 + 3bc03a8e: 86ca mv a3,s2 + 3bc03a90: 8622 mv a2,s0 + 3bc03a92: 46450513 addi a0,a0,1124 # 46464 <__BSS_SIZE__+0x40854> + 3bc03a96: 4701 li a4,0 + 3bc03a98: e29fe0ef jal ra,3bc028c0 + 3bc03a9c: 70e6 ld ra,120(sp) + 3bc03a9e: 7446 ld s0,112(sp) + 3bc03aa0: 74a6 ld s1,104(sp) + 3bc03aa2: 7906 ld s2,96(sp) + 3bc03aa4: 6a46 ld s4,80(sp) + 3bc03aa6: 6aa6 ld s5,72(sp) + 3bc03aa8: 6b06 ld s6,64(sp) + 3bc03aaa: 7be2 ld s7,56(sp) + 3bc03aac: 7c42 ld s8,48(sp) + 3bc03aae: 7ca2 ld s9,40(sp) + 3bc03ab0: 7d02 ld s10,32(sp) + 3bc03ab2: 6de2 ld s11,24(sp) + 3bc03ab4: 854e mv a0,s3 + 3bc03ab6: 69e6 ld s3,88(sp) + 3bc03ab8: 6109 addi sp,sp,128 + 3bc03aba: 8082 ret + +000000003bc03abc : + 3bc03abc: 7179 addi sp,sp,-48 + 3bc03abe: e84a sd s2,16(sp) + 3bc03ac0: 26853903 ld s2,616(a0) + 3bc03ac4: 0585 addi a1,a1,1 + 3bc03ac6: f022 sd s0,32(sp) + 3bc03ac8: 05b2 slli a1,a1,0xc + 3bc03aca: 0036841b addiw s0,a3,3 + 3bc03ace: ec26 sd s1,24(sp) + 3bc03ad0: f406 sd ra,40(sp) + 3bc03ad2: 4024340b extu s0,s0,16,2 + 3bc03ad6: 992e add s2,s2,a1 + 3bc03ad8: 4481 li s1,0 + 3bc03ada: 0004879b sext.w a5,s1 + 3bc03ade: 0087e863 bltu a5,s0,3bc03aee + 3bc03ae2: 70a2 ld ra,40(sp) + 3bc03ae4: 7402 ld s0,32(sp) + 3bc03ae6: 64e2 ld s1,24(sp) + 3bc03ae8: 6942 ld s2,16(sp) + 3bc03aea: 6145 addi sp,sp,48 + 3bc03aec: 8082 ret + 3bc03aee: 854a mv a0,s2 + 3bc03af0: e432 sd a2,8(sp) + 3bc03af2: c4dfd0ef jal ra,3bc0173e + 3bc03af6: 6622 ld a2,8(sp) + 3bc03af8: 4496550b srw a0,a2,s1,2 + 3bc03afc: 0485 addi s1,s1,1 + 3bc03afe: bff1 j 3bc03ada + +000000003bc03b00 : + 3bc03b00: 7179 addi sp,sp,-48 + 3bc03b02: e44e sd s3,8(sp) + 3bc03b04: 02855983 lhu s3,40(a0) + 3bc03b08: f022 sd s0,32(sp) + 3bc03b0a: ec26 sd s1,24(sp) + 3bc03b0c: f406 sd ra,40(sp) + 3bc03b0e: e84a sd s2,16(sp) + 3bc03b10: 84aa mv s1,a0 + 3bc03b12: 842e mv s0,a1 + 3bc03b14: e4dff0ef jal ra,3bc03960 + 3bc03b18: 2501 sext.w a0,a0 + 3bc03b1a: 00a99e63 bne s3,a0,3bc03b36 + 3bc03b1e: 5c5c lw a5,60(s0) + 3bc03b20: 4c18 lw a4,24(s0) + 3bc03b22: 4501 li a0,0 + 3bc03b24: 013787bb addw a5,a5,s3 + 3bc03b28: 00f71b63 bne a4,a5,3bc03b3e + 3bc03b2c: 505c lw a5,36(s0) + 3bc03b2e: 02e79713 slli a4,a5,0x2e + 3bc03b32: 00074663 bltz a4,3bc03b3e + 3bc03b36: 7c9c ld a5,56(s1) + 3bc03b38: 4505 li a0,1 + 3bc03b3a: 0407a423 sw zero,72(a5) # ffffffff84000048 <__BL2_END__+0xffffffff483ecc38> + 3bc03b3e: 70a2 ld ra,40(sp) + 3bc03b40: 7402 ld s0,32(sp) + 3bc03b42: 64e2 ld s1,24(sp) + 3bc03b44: 6942 ld s2,16(sp) + 3bc03b46: 69a2 ld s3,8(sp) + 3bc03b48: 6145 addi sp,sp,48 + 3bc03b4a: 8082 ret + +000000003bc03b4c : + 3bc03b4c: 7179 addi sp,sp,-48 + 3bc03b4e: ec26 sd s1,24(sp) + 3bc03b50: 84ae mv s1,a1 + 3bc03b52: 26853583 ld a1,616(a0) + 3bc03b56: 6785 lui a5,0x1 + 3bc03b58: 80078793 addi a5,a5,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc03b5c: 95be add a1,a1,a5 + 3bc03b5e: f022 sd s0,32(sp) + 3bc03b60: 842a mv s0,a0 + 3bc03b62: 852e mv a0,a1 + 3bc03b64: f406 sd ra,40(sp) + 3bc03b66: e42e sd a1,8(sp) + 3bc03b68: bd7fd0ef jal ra,3bc0173e + 3bc03b6c: 0044979b slliw a5,s1,0x4 + 3bc03b70: 65a2 ld a1,8(sp) + 3bc03b72: 8d5d or a0,a0,a5 + 3bc03b74: 2501 sext.w a0,a0 + 3bc03b76: bcffd0ef jal ra,3bc01744 + 3bc03b7a: 8522 mv a0,s0 + 3bc03b7c: affff0ef jal ra,3bc0367a + 3bc03b80: 4785 li a5,1 + 3bc03b82: 24940823 sb s1,592(s0) # 4250 <__BSS_SIZE__-0x19c0> + 3bc03b86: 70a2 ld ra,40(sp) + 3bc03b88: 26f42823 sw a5,624(s0) + 3bc03b8c: 7402 ld s0,32(sp) + 3bc03b8e: 64e2 ld s1,24(sp) + 3bc03b90: 6145 addi sp,sp,48 + 3bc03b92: 8082 ret + +000000003bc03b94 : + 3bc03b94: 6d4c ld a1,152(a0) + 3bc03b96: 09850693 addi a3,a0,152 + 3bc03b9a: 05050713 addi a4,a0,80 + 3bc03b9e: 00d58e63 beq a1,a3,3bc03bba + 3bc03ba2: fd85a683 lw a3,-40(a1) + 3bc03ba6: e689 bnez a3,3bc03bb0 + 3bc03ba8: 0a052823 sw zero,176(a0) + 3bc03bac: acfff06f j 3bc0367a + 3bc03bb0: fc058593 addi a1,a1,-64 + 3bc03bb4: 853a mv a0,a4 + 3bc03bb6: babff06f j 3bc03760 + 3bc03bba: 8082 ret + +000000003bc03bbc : + 3bc03bbc: 6d4c ld a1,152(a0) + 3bc03bbe: 09850693 addi a3,a0,152 + 3bc03bc2: 02d58b63 beq a1,a3,3bc03bf8 + 3bc03bc6: 1141 addi sp,sp,-16 + 3bc03bc8: e022 sd s0,0(sp) + 3bc03bca: e406 sd ra,8(sp) + 3bc03bcc: fc058593 addi a1,a1,-64 + 3bc03bd0: 842a mv s0,a0 + 3bc03bd2: 05050713 addi a4,a0,80 + 3bc03bd6: 4501 li a0,0 + 3bc03bd8: c989 beqz a1,3bc03bea + 3bc03bda: 853a mv a0,a4 + 3bc03bdc: f25ff0ef jal ra,3bc03b00 + 3bc03be0: 4785 li a5,1 + 3bc03be2: 00f51863 bne a0,a5,3bc03bf2 + 3bc03be6: 4795 li a5,5 + 3bc03be8: c43c sw a5,72(s0) + 3bc03bea: 60a2 ld ra,8(sp) + 3bc03bec: 6402 ld s0,0(sp) + 3bc03bee: 0141 addi sp,sp,16 + 3bc03bf0: 8082 ret + 3bc03bf2: c43c sw a5,72(s0) + 3bc03bf4: 4505 li a0,1 + 3bc03bf6: bfd5 j 3bc03bea + 3bc03bf8: 4501 li a0,0 + 3bc03bfa: 8082 ret + +000000003bc03bfc : + 3bc03bfc: 1101 addi sp,sp,-32 + 3bc03bfe: ec06 sd ra,24(sp) + 3bc03c00: 07154703 lbu a4,113(a0) + 3bc03c04: 7d1c ld a5,56(a0) + 3bc03c06: fc77368b extu a3,a4,63,7 + 3bc03c0a: 2687b583 ld a1,616(a5) + 3bc03c0e: 00f77793 andi a5,a4,15 + 3bc03c12: c295 beqz a3,3bc03c36 + 3bc03c14: 04878793 addi a5,a5,72 + 3bc03c18: 0796 slli a5,a5,0x5 + 3bc03c1a: 95be add a1,a1,a5 + 3bc03c1c: 852e mv a0,a1 + 3bc03c1e: e42e sd a1,8(sp) + 3bc03c20: b1ffd0ef jal ra,3bc0173e + 3bc03c24: 65a2 ld a1,8(sp) + 3bc03c26: 60e2 ld ra,24(sp) + 3bc03c28: 080007b7 lui a5,0x8000 + 3bc03c2c: 8d5d or a0,a0,a5 + 3bc03c2e: 2501 sext.w a0,a0 + 3bc03c30: 6105 addi sp,sp,32 + 3bc03c32: b13fd06f j 3bc01744 + 3bc03c36: 05878793 addi a5,a5,88 # 8000058 + 3bc03c3a: bff9 j 3bc03c18 + +000000003bc03c3c : + 3bc03c3c: 07154703 lbu a4,113(a0) + 3bc03c40: cd21 beqz a0,3bc03c98 + 3bc03c42: 6134 ld a3,64(a0) + 3bc03c44: 87aa mv a5,a0 + 3bc03c46: caa9 beqz a3,3bc03c98 + 3bc03c48: 00f77613 andi a2,a4,15 + 3bc03c4c: c631 beqz a2,3bc03c98 + 3bc03c4e: 0036c603 lbu a2,3(a3) # 80003 <__BSS_SIZE__+0x7a3f3> + 3bc03c52: 4685 li a3,1 + 3bc03c54: 04d60263 beq a2,a3,3bc03c98 + 3bc03c58: 1101 addi sp,sp,-32 + 3bc03c5a: ec06 sd ra,24(sp) + 3bc03c5c: cd99 beqz a1,3bc03c7a + 3bc03c5e: fc77368b extu a3,a4,63,7 + 3bc03c62: c29d beqz a3,3bc03c88 + 3bc03c64: 6534 ld a3,72(a0) + 3bc03c66: 04850713 addi a4,a0,72 + 3bc03c6a: fdd00593 li a1,-35 + 3bc03c6e: 00e68d63 beq a3,a4,3bc03c88 + 3bc03c72: 60e2 ld ra,24(sp) + 3bc03c74: 852e mv a0,a1 + 3bc03c76: 6105 addi sp,sp,32 + 3bc03c78: 8082 ret + 3bc03c7a: 06050823 sb zero,112(a0) + 3bc03c7e: e42e sd a1,8(sp) + 3bc03c80: 8bbff0ef jal ra,3bc0353a + 3bc03c84: 65a2 ld a1,8(sp) + 3bc03c86: b7f5 j 3bc03c72 + 3bc03c88: 4705 li a4,1 + 3bc03c8a: 06e78823 sb a4,112(a5) + 3bc03c8e: 853e mv a0,a5 + 3bc03c90: 909ff0ef jal ra,3bc03598 + 3bc03c94: 4581 li a1,0 + 3bc03c96: bff1 j 3bc03c72 + 3bc03c98: 55a9 li a1,-22 + 3bc03c9a: 852e mv a0,a1 + 3bc03c9c: 8082 ret + +000000003bc03c9e : + 3bc03c9e: 7d1c ld a5,56(a0) + 3bc03ca0: 7179 addi sp,sp,-48 + 3bc03ca2: f022 sd s0,32(sp) + 3bc03ca4: ec26 sd s1,24(sp) + 3bc03ca6: e84a sd s2,16(sp) + 3bc03ca8: e44e sd s3,8(sp) + 3bc03caa: f406 sd ra,40(sp) + 3bc03cac: 2687b483 ld s1,616(a5) + 3bc03cb0: 07154783 lbu a5,113(a0) + 3bc03cb4: 4905 li s2,1 + 3bc03cb6: 89aa mv s3,a0 + 3bc03cb8: 00f7f413 andi s0,a5,15 + 3bc03cbc: fc77b70b extu a4,a5,63,7 + 3bc03cc0: 0089193b sllw s2,s2,s0 + 3bc03cc4: cf25 beqz a4,3bc03d3c + 3bc03cc6: 04840513 addi a0,s0,72 + 3bc03cca: 0516 slli a0,a0,0x5 + 3bc03ccc: 9526 add a0,a0,s1 + 3bc03cce: a71fd0ef jal ra,3bc0173e + 3bc03cd2: 2501 sext.w a0,a0 + 3bc03cd4: 3cf5378b extu a5,a0,15,15 + 3bc03cd8: ef9d bnez a5,3bc03d16 + 3bc03cda: fff407b7 lui a5,0xfff40 + 3bc03cde: 17fd addi a5,a5,-1 + 3bc03ce0: 8d7d and a0,a0,a5 + 3bc03ce2: 0729c783 lbu a5,114(s3) + 3bc03ce6: 04840593 addi a1,s0,72 + 3bc03cea: 0127979b slliw a5,a5,0x12 + 3bc03cee: 8d5d or a0,a0,a5 + 3bc03cf0: 0289d783 lhu a5,40(s3) + 3bc03cf4: 80057513 andi a0,a0,-2048 + 3bc03cf8: 8d5d or a0,a0,a5 + 3bc03cfa: 180087b7 lui a5,0x18008 + 3bc03cfe: 8d5d or a0,a0,a5 + 3bc03d00: 07198783 lb a5,113(s3) + 3bc03d04: 2501 sext.w a0,a0 + 3bc03d06: 0007c463 bltz a5,3bc03d0e + 3bc03d0a: 05840593 addi a1,s0,88 + 3bc03d0e: 0596 slli a1,a1,0x5 + 3bc03d10: 95a6 add a1,a1,s1 + 3bc03d12: a33fd0ef jal ra,3bc01744 + 3bc03d16: 6585 lui a1,0x1 + 3bc03d18: 81c58593 addi a1,a1,-2020 # 81c <__BSS_SIZE__-0x53f4> + 3bc03d1c: 94ae add s1,s1,a1 + 3bc03d1e: 8526 mv a0,s1 + 3bc03d20: a1ffd0ef jal ra,3bc0173e + 3bc03d24: 2501 sext.w a0,a0 + 3bc03d26: 7402 ld s0,32(sp) + 3bc03d28: 70a2 ld ra,40(sp) + 3bc03d2a: 69a2 ld s3,8(sp) + 3bc03d2c: 85a6 mv a1,s1 + 3bc03d2e: 01256533 or a0,a0,s2 + 3bc03d32: 64e2 ld s1,24(sp) + 3bc03d34: 6942 ld s2,16(sp) + 3bc03d36: 6145 addi sp,sp,48 + 3bc03d38: a0dfd06f j 3bc01744 + 3bc03d3c: 05840513 addi a0,s0,88 + 3bc03d40: 0516 slli a0,a0,0x5 + 3bc03d42: 9526 add a0,a0,s1 + 3bc03d44: 9fbfd0ef jal ra,3bc0173e + 3bc03d48: 2501 sext.w a0,a0 + 3bc03d4a: 0109191b slliw s2,s2,0x10 + 3bc03d4e: b759 j 3bc03cd4 + +000000003bc03d50 : + 3bc03d50: 453c lw a5,72(a0) + 3bc03d52: 34079163 bnez a5,3bc04094 + 3bc03d56: 7139 addi sp,sp,-64 + 3bc03d58: f426 sd s1,40(sp) + 3bc03d5a: 25853483 ld s1,600(a0) + 3bc03d5e: f822 sd s0,48(sp) + 3bc03d60: fa400593 li a1,-92 + 3bc03d64: 842a mv s0,a0 + 3bc03d66: 05050513 addi a0,a0,80 + 3bc03d6a: ec4e sd s3,24(sp) + 3bc03d6c: fc06 sd ra,56(sp) + 3bc03d6e: f04a sd s2,32(sp) + 3bc03d70: e852 sd s4,16(sp) + 3bc03d72: c35fe0ef jal ra,3bc029a6 + 3bc03d76: 0004c783 lbu a5,0(s1) # ffffffffbc400000 <__BL2_END__+0xffffffff807ecbf0> + 3bc03d7a: 0c144703 lbu a4,193(s0) + 3bc03d7e: 0064d983 lhu s3,6(s1) + 3bc03d82: fc77b60b extu a2,a5,63,7 + 3bc03d86: 07f77693 andi a3,a4,127 + 3bc03d8a: c609 beqz a2,3bc03d94 + 3bc03d8c: f8076713 ori a4,a4,-128 + 3bc03d90: 0ff77693 andi a3,a4,255 + 3bc03d94: 0607f793 andi a5,a5,96 + 3bc03d98: 25144703 lbu a4,593(s0) + 3bc03d9c: 0017b793 seqz a5,a5 + 3bc03da0: 0017979b slliw a5,a5,0x1 + 3bc03da4: 0017e793 ori a5,a5,1 + 3bc03da8: 8b8d andi a5,a5,3 + 3bc03daa: 9b71 andi a4,a4,-4 + 3bc03dac: 8fd9 or a5,a5,a4 + 3bc03dae: 24f408a3 sb a5,593(s0) + 3bc03db2: 0cd400a3 sb a3,193(s0) + 3bc03db6: 8b89 andi a5,a5,2 + 3bc03db8: 24078a63 beqz a5,3bc0400c + 3bc03dbc: 0014c703 lbu a4,1(s1) + 3bc03dc0: 47ad li a5,11 + 3bc03dc2: 2ae7e863 bltu a5,a4,3bc04072 + 3bc03dc6: 87ba mv a5,a4 + 3bc03dc8: 00007717 auipc a4,0x7 + 3bc03dcc: 0ec70713 addi a4,a4,236 # 3bc0aeb4 + 3bc03dd0: 44f7478b lrw a5,a4,a5,2 + 3bc03dd4: 97ba add a5,a5,a4 + 3bc03dd6: 8782 jr a5 + 3bc03dd8: 0024d603 lhu a2,2(s1) + 3bc03ddc: 000bc537 lui a0,0xbc + 3bc03de0: 4701 li a4,0 + 3bc03de2: 4681 li a3,0 + 3bc03de4: 4585 li a1,1 + 3bc03de6: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03dea: ad7fe0ef jal ra,3bc028c0 + 3bc03dee: 0004c783 lbu a5,0(s1) + 3bc03df2: 20079d63 bnez a5,3bc0400c + 3bc03df6: 8522 mv a0,s0 + 3bc03df8: 7442 ld s0,48(sp) + 3bc03dfa: 0024c583 lbu a1,2(s1) + 3bc03dfe: 70e2 ld ra,56(sp) + 3bc03e00: 74a2 ld s1,40(sp) + 3bc03e02: 7902 ld s2,32(sp) + 3bc03e04: 69e2 ld s3,24(sp) + 3bc03e06: 6a42 ld s4,16(sp) + 3bc03e08: 6121 addi sp,sp,64 + 3bc03e0a: d43ff06f j 3bc03b4c + 3bc03e0e: 0024d603 lhu a2,2(s1) + 3bc03e12: 4701 li a4,0 + 3bc03e14: 4681 li a3,0 + 3bc03e16: 4589 li a1,2 + 3bc03e18: 000bc537 lui a0,0xbc + 3bc03e1c: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03e20: aa1fe0ef jal ra,3bc028c0 + 3bc03e24: a2e5 j 3bc0400c + 3bc03e26: 4701 li a4,0 + 3bc03e28: 4681 li a3,0 + 3bc03e2a: 4601 li a2,0 + 3bc03e2c: 458d li a1,3 + 3bc03e2e: b7ed j 3bc03e18 + 3bc03e30: 4701 li a4,0 + 3bc03e32: 4681 li a3,0 + 3bc03e34: 4601 li a2,0 + 3bc03e36: 4591 li a1,4 + 3bc03e38: b7c5 j 3bc03e18 + 3bc03e3a: 4701 li a4,0 + 3bc03e3c: 4681 li a3,0 + 3bc03e3e: 4601 li a2,0 + 3bc03e40: 4595 li a1,5 + 3bc03e42: bfd9 j 3bc03e18 + 3bc03e44: 000bc537 lui a0,0xbc + 3bc03e48: 4701 li a4,0 + 3bc03e4a: 4681 li a3,0 + 3bc03e4c: 4601 li a2,0 + 3bc03e4e: 4599 li a1,6 + 3bc03e50: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03e54: a6dfe0ef jal ra,3bc028c0 + 3bc03e58: 0044d503 lhu a0,4(s1) + 3bc03e5c: 1c75358b extu a1,a0,7,7 + 3bc03e60: 07f57513 andi a0,a0,127 + 3bc03e64: c9aff0ef jal ra,3bc032fe + 3bc03e68: 00011723 sh zero,14(sp) + 3bc03e6c: 0004c583 lbu a1,0(s1) + 3bc03e70: 892a mv s2,a0 + 3bc03e72: 00007517 auipc a0,0x7 + 3bc03e76: 02e50513 addi a0,a0,46 # 3bc0aea0 + 3bc03e7a: 89bd andi a1,a1,15 + 3bc03e7c: 26843a03 ld s4,616(s0) + 3bc03e80: cd8fc0ef jal ra,3bc00358 + 3bc03e84: 0004c783 lbu a5,0(s1) + 3bc03e88: 4705 li a4,1 + 3bc03e8a: 8bbd andi a5,a5,15 + 3bc03e8c: 00e78a63 beq a5,a4,3bc03ea0 + 3bc03e90: 4689 li a3,2 + 3bc03e92: 06d78b63 beq a5,a3,3bc03f08 + 3bc03e96: 16079b63 bnez a5,3bc0400c + 3bc03e9a: 00e11723 sh a4,14(sp) + 3bc03e9e: a019 j 3bc03ea4 + 3bc03ea0: 00011723 sh zero,14(sp) + 3bc03ea4: 25843503 ld a0,600(s0) + 3bc03ea8: 4609 li a2,2 + 3bc03eaa: 00e10593 addi a1,sp,14 + 3bc03eae: bbffc0ef jal ra,3bc00a6c + 3bc03eb2: 6485 lui s1,0x1 + 3bc03eb4: 26042503 lw a0,608(s0) + 3bc03eb8: 91448593 addi a1,s1,-1772 # 914 <__BSS_SIZE__-0x52fc> + 3bc03ebc: 95d2 add a1,a1,s4 + 3bc03ebe: 887fd0ef jal ra,3bc01744 + 3bc03ec2: 91048593 addi a1,s1,-1776 + 3bc03ec6: 00080537 lui a0,0x80 + 3bc03eca: 95d2 add a1,a1,s4 + 3bc03ecc: 0509 addi a0,a0,2 + 3bc03ece: 90048493 addi s1,s1,-1792 + 3bc03ed2: 873fd0ef jal ra,3bc01744 + 3bc03ed6: 9a26 add s4,s4,s1 + 3bc03ed8: 8552 mv a0,s4 + 3bc03eda: 865fd0ef jal ra,3bc0173e + 3bc03ede: c00007b7 lui a5,0xc0000 + 3bc03ee2: 17fd addi a5,a5,-1 + 3bc03ee4: 2501 sext.w a0,a0 + 3bc03ee6: 8d7d and a0,a0,a5 + 3bc03ee8: 840007b7 lui a5,0x84000 + 3bc03eec: 8d5d or a0,a0,a5 + 3bc03eee: 85d2 mv a1,s4 + 3bc03ef0: 855fd0ef jal ra,3bc01744 + 3bc03ef4: 47a1 li a5,8 + 3bc03ef6: c43c sw a5,72(s0) + 3bc03ef8: 70e2 ld ra,56(sp) + 3bc03efa: 7442 ld s0,48(sp) + 3bc03efc: 74a2 ld s1,40(sp) + 3bc03efe: 7902 ld s2,32(sp) + 3bc03f00: 69e2 ld s3,24(sp) + 3bc03f02: 6a42 ld s4,16(sp) + 3bc03f04: 6121 addi sp,sp,64 + 3bc03f06: 8082 ret + 3bc03f08: 0064d703 lhu a4,6(s1) + 3bc03f0c: 10e7e063 bltu a5,a4,3bc0400c + 3bc03f10: 2901 sext.w s2,s2 + 3bc03f12: 091e slli s2,s2,0x7 + 3bc03f14: 9922 add s2,s2,s0 + 3bc03f16: 0c094783 lbu a5,192(s2) + 3bc03f1a: 00f11723 sh a5,14(sp) + 3bc03f1e: b759 j 3bc03ea4 + 3bc03f20: 000bc537 lui a0,0xbc + 3bc03f24: 4701 li a4,0 + 3bc03f26: 4681 li a3,0 + 3bc03f28: 4601 li a2,0 + 3bc03f2a: 459d li a1,7 + 3bc03f2c: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03f30: 991fe0ef jal ra,3bc028c0 + 3bc03f34: 0044d503 lhu a0,4(s1) + 3bc03f38: 1c75358b extu a1,a0,7,7 + 3bc03f3c: 07f57513 andi a0,a0,127 + 3bc03f40: bbeff0ef jal ra,3bc032fe + 3bc03f44: 00751913 slli s2,a0,0x7 + 3bc03f48: 05090913 addi s2,s2,80 + 3bc03f4c: 9922 add s2,s2,s0 + 3bc03f4e: 03893a03 ld s4,56(s2) + 3bc03f52: 258a3703 ld a4,600(s4) + 3bc03f56: 00675783 lhu a5,6(a4) + 3bc03f5a: ebcd bnez a5,3bc0400c + 3bc03f5c: 00074783 lbu a5,0(a4) + 3bc03f60: 8bbd andi a5,a5,15 + 3bc03f62: c795 beqz a5,3bc03f8e + 3bc03f64: 4689 li a3,2 + 3bc03f66: f8d799e3 bne a5,a3,3bc03ef8 + 3bc03f6a: 00275783 lhu a5,2(a4) + 3bc03f6e: f7c9 bnez a5,3bc03ef8 + 3bc03f70: 07194403 lbu s0,113(s2) + 3bc03f74: 883d andi s0,s0,15 + 3bc03f76: e415 bnez s0,3bc03fa2 + 3bc03f78: 4585 li a1,1 + 3bc03f7a: 8552 mv a0,s4 + 3bc03f7c: 7442 ld s0,48(sp) + 3bc03f7e: 70e2 ld ra,56(sp) + 3bc03f80: 74a2 ld s1,40(sp) + 3bc03f82: 7902 ld s2,32(sp) + 3bc03f84: 69e2 ld s3,24(sp) + 3bc03f86: 6a42 ld s4,16(sp) + 3bc03f88: 6121 addi sp,sp,64 + 3bc03f8a: f6eff06f j 3bc036f8 + 3bc03f8e: 8552 mv a0,s4 + 3bc03f90: 7442 ld s0,48(sp) + 3bc03f92: 70e2 ld ra,56(sp) + 3bc03f94: 74a2 ld s1,40(sp) + 3bc03f96: 7902 ld s2,32(sp) + 3bc03f98: 69e2 ld s3,24(sp) + 3bc03f9a: 6a42 ld s4,16(sp) + 3bc03f9c: 6121 addi sp,sp,64 + 3bc03f9e: edcff06f j 3bc0367a + 3bc03fa2: 8552 mv a0,s4 + 3bc03fa4: ed6ff0ef jal ra,3bc0367a + 3bc03fa8: 854a mv a0,s2 + 3bc03faa: d90ff0ef jal ra,3bc0353a + 3bc03fae: 854a mv a0,s2 + 3bc03fb0: cefff0ef jal ra,3bc03c9e + 3bc03fb4: 4785 li a5,1 + 3bc03fb6: 06090823 sb zero,112(s2) + 3bc03fba: 268a0a23 sb s0,628(s4) + 3bc03fbe: 26fa0aa3 sb a5,629(s4) + 3bc03fc2: bf1d j 3bc03ef8 + 3bc03fc4: 000bc537 lui a0,0xbc + 3bc03fc8: 4701 li a4,0 + 3bc03fca: 4681 li a3,0 + 3bc03fcc: 4601 li a2,0 + 3bc03fce: 45a1 li a1,8 + 3bc03fd0: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03fd4: 8edfe0ef jal ra,3bc028c0 + 3bc03fd8: 0044d503 lhu a0,4(s1) + 3bc03fdc: 1c75358b extu a1,a0,7,7 + 3bc03fe0: 07f57513 andi a0,a0,127 + 3bc03fe4: b1aff0ef jal ra,3bc032fe + 3bc03fe8: 051e slli a0,a0,0x7 + 3bc03fea: 05050513 addi a0,a0,80 + 3bc03fee: 9522 add a0,a0,s0 + 3bc03ff0: 03853903 ld s2,56(a0) + 3bc03ff4: 25893783 ld a5,600(s2) + 3bc03ff8: 0067d703 lhu a4,6(a5) # ffffffff84000006 <__BL2_END__+0xffffffff483ecbf6> + 3bc03ffc: eb01 bnez a4,3bc0400c + 3bc03ffe: 0007c703 lbu a4,0(a5) + 3bc04002: 8b3d andi a4,a4,15 + 3bc04004: cb15 beqz a4,3bc04038 + 3bc04006: 4689 li a3,2 + 3bc04008: 04d70563 beq a4,a3,3bc04052 + 3bc0400c: 7c1c ld a5,56(s0) + 3bc0400e: cfbd beqz a5,3bc0408c + 3bc04010: 739c ld a5,32(a5) + 3bc04012: 85a6 mv a1,s1 + 3bc04014: 8522 mv a0,s0 + 3bc04016: 9782 jalr a5 + 3bc04018: 06055263 bgez a0,3bc0407c + 3bc0401c: 0064d783 lhu a5,6(s1) + 3bc04020: 4585 li a1,1 + 3bc04022: c789 beqz a5,3bc0402c + 3bc04024: 0c140583 lb a1,193(s0) + 3bc04028: 01f5d59b srliw a1,a1,0x1f + 3bc0402c: 6448 ld a0,136(s0) + 3bc0402e: ecaff0ef jal ra,3bc036f8 + 3bc04032: 04042423 sw zero,72(s0) + 3bc04036: b5c9 j 3bc03ef8 + 3bc04038: 0027d683 lhu a3,2(a5) + 3bc0403c: 4709 li a4,2 + 3bc0403e: 00e69863 bne a3,a4,3bc0404e + 3bc04042: 0047d783 lhu a5,4(a5) + 3bc04046: 0087d79b srliw a5,a5,0x8 + 3bc0404a: 26f90b23 sb a5,630(s2) + 3bc0404e: 854a mv a0,s2 + 3bc04050: b781 j 3bc03f90 + 3bc04052: 0027d783 lhu a5,2(a5) + 3bc04056: ffe5 bnez a5,3bc0404e + 3bc04058: 07154783 lbu a5,113(a0) + 3bc0405c: 8bbd andi a5,a5,15 + 3bc0405e: e781 bnez a5,3bc04066 + 3bc04060: 4585 li a1,1 + 3bc04062: 854a mv a0,s2 + 3bc04064: bf21 j 3bc03f7c + 3bc04066: 4785 li a5,1 + 3bc04068: 06f50823 sb a5,112(a0) + 3bc0406c: d2cff0ef jal ra,3bc03598 + 3bc04070: bff9 j 3bc0404e + 3bc04072: 4701 li a4,0 + 3bc04074: 4681 li a3,0 + 3bc04076: 4601 li a2,0 + 3bc04078: 45a5 li a1,9 + 3bc0407a: bb79 j 3bc03e18 + 3bc0407c: 25144783 lbu a5,593(s0) + 3bc04080: 0017f713 andi a4,a5,1 + 3bc04084: c701 beqz a4,3bc0408c + 3bc04086: 9bf9 andi a5,a5,-2 + 3bc04088: 24f408a3 sb a5,593(s0) + 3bc0408c: e60996e3 bnez s3,3bc03ef8 + 3bc04090: 8522 mv a0,s0 + 3bc04092: bdfd j 3bc03f90 + 3bc04094: 8082 ret + +000000003bc04096 : + 3bc04096: 7119 addi sp,sp,-128 + 3bc04098: ecce sd s3,88(sp) + 3bc0409a: 2685b983 ld s3,616(a1) + 3bc0409e: f0ca sd s2,96(sp) + 3bc040a0: f8a2 sd s0,112(sp) + 3bc040a2: 01498913 addi s2,s3,20 + 3bc040a6: 854a mv a0,s2 + 3bc040a8: f4a6 sd s1,104(sp) + 3bc040aa: e0da sd s6,64(sp) + 3bc040ac: fc86 sd ra,120(sp) + 3bc040ae: e8d2 sd s4,80(sp) + 3bc040b0: e4d6 sd s5,72(sp) + 3bc040b2: fc5e sd s7,56(sp) + 3bc040b4: f862 sd s8,48(sp) + 3bc040b6: f466 sd s9,40(sp) + 3bc040b8: f06a sd s10,32(sp) + 3bc040ba: ec6e sd s11,24(sp) + 3bc040bc: 842e mv s0,a1 + 3bc040be: 01898b13 addi s6,s3,24 + 3bc040c2: e7cfd0ef jal ra,3bc0173e + 3bc040c6: 0005049b sext.w s1,a0 + 3bc040ca: 855a mv a0,s6 + 3bc040cc: e72fd0ef jal ra,3bc0173e + 3bc040d0: 1c048563 beqz s1,3bc0429a + 3bc040d4: 4430 lw a2,72(s0) + 3bc040d6: 00050a9b sext.w s5,a0 + 3bc040da: 6505 lui a0,0x1 + 3bc040dc: 81850513 addi a0,a0,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc040e0: 954e add a0,a0,s3 + 3bc040e2: e432 sd a2,8(sp) + 3bc040e4: e5afd0ef jal ra,3bc0173e + 3bc040e8: 6622 ld a2,8(sp) + 3bc040ea: 0005069b sext.w a3,a0 + 3bc040ee: 653d lui a0,0xf + 3bc040f0: 4701 li a4,0 + 3bc040f2: 85a6 mv a1,s1 + 3bc040f4: 153d addi a0,a0,-17 + 3bc040f6: fcafe0ef jal ra,3bc028c0 + 3bc040fa: 0104f793 andi a5,s1,16 + 3bc040fe: c3b5 beqz a5,3bc04162 + 3bc04100: 85da mv a1,s6 + 3bc04102: fefaf513 andi a0,s5,-17 + 3bc04106: e3efd0ef jal ra,3bc01744 + 3bc0410a: 02098513 addi a0,s3,32 + 3bc0410e: e30fd0ef jal ra,3bc0173e + 3bc04112: 00f57b93 andi s7,a0,15 + 3bc04116: 00050a1b sext.w s4,a0 + 3bc0411a: 4581 li a1,0 + 3bc0411c: 855e mv a0,s7 + 3bc0411e: 9e0ff0ef jal ra,3bc032fe + 3bc04122: 001e07b7 lui a5,0x1e0 + 3bc04126: 00fa77b3 and a5,s4,a5 + 3bc0412a: 00040737 lui a4,0x40 + 3bc0412e: 18e79663 bne a5,a4,3bc042ba + 3bc04132: 384a3a0b extu s4,s4,14,4 + 3bc04136: 020a0163 beqz s4,3bc04158 + 3bc0413a: 0005079b sext.w a5,a0 + 3bc0413e: 079e slli a5,a5,0x7 + 3bc04140: 97a2 add a5,a5,s0 + 3bc04142: 0987bc03 ld s8,152(a5) # 1e0098 <__BSS_SIZE__+0x1da488> + 3bc04146: 86d2 mv a3,s4 + 3bc04148: 85de mv a1,s7 + 3bc0414a: fd0c3603 ld a2,-48(s8) + 3bc0414e: 8522 mv a0,s0 + 3bc04150: 96dff0ef jal ra,3bc03abc + 3bc04154: ff4c2023 sw s4,-32(s8) + 3bc04158: 85da mv a1,s6 + 3bc0415a: 010ae513 ori a0,s5,16 + 3bc0415e: de6fd0ef jal ra,3bc01744 + 3bc04162: 34d4b78b extu a5,s1,13,13 + 3bc04166: cb9d beqz a5,3bc0419c + 3bc04168: 85ca mv a1,s2 + 3bc0416a: 6509 lui a0,0x2 + 3bc0416c: dd8fd0ef jal ra,3bc01744 + 3bc04170: 6505 lui a0,0x1 + 3bc04172: 80850513 addi a0,a0,-2040 # 808 <__BSS_SIZE__-0x5408> + 3bc04176: 954e add a0,a0,s3 + 3bc04178: dc6fd0ef jal ra,3bc0173e + 3bc0417c: 8919 andi a0,a0,6 + 3bc0417e: 14050b63 beqz a0,3bc042d4 + 3bc04182: 4589 li a1,2 + 3bc04184: 8522 mv a0,s0 + 3bc04186: b26ff0ef jal ra,3bc034ac + 3bc0418a: 6509 lui a0,0x2 + 3bc0418c: 4701 li a4,0 + 3bc0418e: 4681 li a3,0 + 3bc04190: 4601 li a2,0 + 3bc04192: 4589 li a1,2 + 3bc04194: 22250513 addi a0,a0,546 # 2222 <__BSS_SIZE__-0x39ee> + 3bc04198: f28fe0ef jal ra,3bc028c0 + 3bc0419c: 4004f793 andi a5,s1,1024 + 3bc041a0: c791 beqz a5,3bc041ac + 3bc041a2: 85ca mv a1,s2 + 3bc041a4: 40000513 li a0,1024 + 3bc041a8: d9cfd0ef jal ra,3bc01744 + 3bc041ac: 6505 lui a0,0x1 + 3bc041ae: 80050a13 addi s4,a0,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc041b2: 0144f7b3 and a5,s1,s4 + 3bc041b6: c395 beqz a5,3bc041da + 3bc041b8: 80850513 addi a0,a0,-2040 + 3bc041bc: 954e add a0,a0,s3 + 3bc041be: d80fd0ef jal ra,3bc0173e + 3bc041c2: 85ca mv a1,s2 + 3bc041c4: 8552 mv a0,s4 + 3bc041c6: d7efd0ef jal ra,3bc01744 + 3bc041ca: 501c lw a5,32(s0) + 3bc041cc: c799 beqz a5,3bc041da + 3bc041ce: 7c1c ld a5,56(s0) + 3bc041d0: c789 beqz a5,3bc041da + 3bc041d2: 7b9c ld a5,48(a5) + 3bc041d4: c399 beqz a5,3bc041da + 3bc041d6: 8522 mv a0,s0 + 3bc041d8: 9782 jalr a5 + 3bc041da: 0004df63 bgez s1,3bc041f8 + 3bc041de: 85ca mv a1,s2 + 3bc041e0: 80000537 lui a0,0x80000 + 3bc041e4: d60fd0ef jal ra,3bc01744 + 3bc041e8: 501c lw a5,32(s0) + 3bc041ea: c799 beqz a5,3bc041f8 + 3bc041ec: 7c1c ld a5,56(s0) + 3bc041ee: c789 beqz a5,3bc041f8 + 3bc041f0: 7f9c ld a5,56(a5) + 3bc041f2: c399 beqz a5,3bc041f8 + 3bc041f4: 8522 mv a0,s0 + 3bc041f6: 9782 jalr a5 + 3bc041f8: 008017b7 lui a5,0x801 + 3bc041fc: 8fe5 and a5,a5,s1 + 3bc041fe: c3bd beqz a5,3bc04264 + 3bc04200: 854e mv a0,s3 + 3bc04202: d3cfd0ef jal ra,3bc0173e + 3bc04206: 0005099b sext.w s3,a0 + 3bc0420a: 6505 lui a0,0x1 + 3bc0420c: 4701 li a4,0 + 3bc0420e: 4681 li a3,0 + 3bc04210: 4601 li a2,0 + 3bc04212: 85ce mv a1,s3 + 3bc04214: 11150513 addi a0,a0,273 # 1111 <__BSS_SIZE__-0x4aff> + 3bc04218: ea8fe0ef jal ra,3bc028c0 + 3bc0421c: 30c4b78b extu a5,s1,12,12 + 3bc04220: c789 beqz a5,3bc0422a + 3bc04222: 85ca mv a1,s2 + 3bc04224: 6505 lui a0,0x1 + 3bc04226: d1efd0ef jal ra,3bc01744 + 3bc0422a: 5d74b78b extu a5,s1,23,23 + 3bc0422e: c791 beqz a5,3bc0423a + 3bc04230: 85ca mv a1,s2 + 3bc04232: 00800537 lui a0,0x800 + 3bc04236: d0efd0ef jal ra,3bc01744 + 3bc0423a: 000c0537 lui a0,0xc0 + 3bc0423e: 00a9f9b3 and s3,s3,a0 + 3bc04242: 000c07b7 lui a5,0xc0 + 3bc04246: 00f99f63 bne s3,a5,3bc04264 + 3bc0424a: 27042903 lw s2,624(s0) + 3bc0424e: 8522 mv a0,s0 + 3bc04250: 9d5fe0ef jal ra,3bc02c24 + 3bc04254: 00090663 beqz s2,3bc04260 + 3bc04258: 4585 li a1,1 + 3bc0425a: 8522 mv a0,s0 + 3bc0425c: cbffe0ef jal ra,3bc02f1a + 3bc04260: 04042423 sw zero,72(s0) + 3bc04264: 4924b78b extu a5,s1,18,18 + 3bc04268: e7c1 bnez a5,3bc042f0 + 3bc0426a: 4d34b48b extu s1,s1,19,19 + 3bc0426e: c495 beqz s1,3bc0429a + 3bc04270: 26843b03 ld s6,616(s0) + 3bc04274: 6505 lui a0,0x1 + 3bc04276: 81850513 addi a0,a0,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc0427a: 955a add a0,a0,s6 + 3bc0427c: cc2fd0ef jal ra,3bc0173e + 3bc04280: 00066a37 lui s4,0x66 + 3bc04284: 6a8d lui s5,0x3 + 3bc04286: 7d05398b extu s3,a0,31,16 + 3bc0428a: 4901 li s2,0 + 3bc0428c: 4b99 li s7,6 + 3bc0428e: 666a0a13 addi s4,s4,1638 # 66666 <__BSS_SIZE__+0x60a56> + 3bc04292: 333a8a93 addi s5,s5,819 # 3333 <__BSS_SIZE__-0x28dd> + 3bc04296: 2a099963 bnez s3,3bc04548 + 3bc0429a: 70e6 ld ra,120(sp) + 3bc0429c: 7446 ld s0,112(sp) + 3bc0429e: 74a6 ld s1,104(sp) + 3bc042a0: 7906 ld s2,96(sp) + 3bc042a2: 69e6 ld s3,88(sp) + 3bc042a4: 6a46 ld s4,80(sp) + 3bc042a6: 6aa6 ld s5,72(sp) + 3bc042a8: 6b06 ld s6,64(sp) + 3bc042aa: 7be2 ld s7,56(sp) + 3bc042ac: 7c42 ld s8,48(sp) + 3bc042ae: 7ca2 ld s9,40(sp) + 3bc042b0: 7d02 ld s10,32(sp) + 3bc042b2: 6de2 ld s11,24(sp) + 3bc042b4: 4501 li a0,0 + 3bc042b6: 6109 addi sp,sp,128 + 3bc042b8: 8082 ret + 3bc042ba: 000c0737 lui a4,0xc0 + 3bc042be: e8e79de3 bne a5,a4,3bc04158 + 3bc042c2: 25843603 ld a2,600(s0) + 3bc042c6: 384a368b extu a3,s4,14,4 + 3bc042ca: 85de mv a1,s7 + 3bc042cc: 8522 mv a0,s0 + 3bc042ce: feeff0ef jal ra,3bc03abc + 3bc042d2: b559 j 3bc04158 + 3bc042d4: 6509 lui a0,0x2 + 3bc042d6: 4701 li a4,0 + 3bc042d8: 4681 li a3,0 + 3bc042da: 4601 li a2,0 + 3bc042dc: 4585 li a1,1 + 3bc042de: 22250513 addi a0,a0,546 # 2222 <__BSS_SIZE__-0x39ee> + 3bc042e2: ddefe0ef jal ra,3bc028c0 + 3bc042e6: 458d li a1,3 + 3bc042e8: 8522 mv a0,s0 + 3bc042ea: 9c2ff0ef jal ra,3bc034ac + 3bc042ee: b57d j 3bc0419c + 3bc042f0: 26843a03 ld s4,616(s0) + 3bc042f4: 6a85 lui s5,0x1 + 3bc042f6: 818a8513 addi a0,s5,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc042fa: 9552 add a0,a0,s4 + 3bc042fc: c42fd0ef jal ra,3bc0173e + 3bc04300: 00737b37 lui s6,0x737 + 3bc04304: 00747bb7 lui s7,0x747 + 3bc04308: 00055c37 lui s8,0x55 + 3bc0430c: 3c05398b extu s3,a0,15,0 + 3bc04310: 4901 li s2,0 + 3bc04312: 373b0b13 addi s6,s6,883 # 737373 <__BSS_SIZE__+0x731763> + 3bc04316: 474b8b93 addi s7,s7,1140 # 747474 <__BSS_SIZE__+0x741864> + 3bc0431a: 555c0c13 addi s8,s8,1365 # 55555 <__BSS_SIZE__+0x4f945> + 3bc0431e: 804a8a93 addi s5,s5,-2044 + 3bc04322: f40984e3 beqz s3,3bc0426a + 3bc04326: 0019f793 andi a5,s3,1 + 3bc0432a: 1c078163 beqz a5,3bc044ec + 3bc0432e: 04890c93 addi s9,s2,72 + 3bc04332: 0c96 slli s9,s9,0x5 + 3bc04334: 008c8d93 addi s11,s9,8 + 3bc04338: 9dd2 add s11,s11,s4 + 3bc0433a: 856e mv a0,s11 + 3bc0433c: c02fd0ef jal ra,3bc0173e + 3bc04340: 00050d1b sext.w s10,a0 + 3bc04344: 010c8513 addi a0,s9,16 + 3bc04348: 9552 add a0,a0,s4 + 3bc0434a: bf4fd0ef jal ra,3bc0173e + 3bc0434e: 0005069b sext.w a3,a0 + 3bc04352: 019a0533 add a0,s4,s9 + 3bc04356: e436 sd a3,8(sp) + 3bc04358: be6fd0ef jal ra,3bc0173e + 3bc0435c: 66a2 ld a3,8(sp) + 3bc0435e: 0005071b sext.w a4,a0 + 3bc04362: 866a mv a2,s10 + 3bc04364: 85ca mv a1,s2 + 3bc04366: 855a mv a0,s6 + 3bc04368: d58fe0ef jal ra,3bc028c0 + 3bc0436c: 014c8513 addi a0,s9,20 + 3bc04370: 9552 add a0,a0,s4 + 3bc04372: bccfd0ef jal ra,3bc0173e + 3bc04376: 0ce1 addi s9,s9,24 + 3bc04378: 0005059b sext.w a1,a0 + 3bc0437c: 019a0533 add a0,s4,s9 + 3bc04380: e42e sd a1,8(sp) + 3bc04382: bbcfd0ef jal ra,3bc0173e + 3bc04386: 65a2 ld a1,8(sp) + 3bc04388: 0005061b sext.w a2,a0 + 3bc0438c: 4701 li a4,0 + 3bc0438e: 4681 li a3,0 + 3bc04390: 855e mv a0,s7 + 3bc04392: d2efe0ef jal ra,3bc028c0 + 3bc04396: 856a mv a0,s10 + 3bc04398: 85ee mv a1,s11 + 3bc0439a: 001d7d13 andi s10,s10,1 + 3bc0439e: ba6fd0ef jal ra,3bc01744 + 3bc043a2: 140d0563 beqz s10,3bc044ec + 3bc043a6: 4585 li a1,1 + 3bc043a8: 854a mv a0,s2 + 3bc043aa: f55fe0ef jal ra,3bc032fe + 3bc043ae: 00050c9b sext.w s9,a0 + 3bc043b2: 0c9e slli s9,s9,0x7 + 3bc043b4: 01940833 add a6,s0,s9 + 3bc043b8: 09883603 ld a2,152(a6) + 3bc043bc: 00751d13 slli s10,a0,0x7 + 3bc043c0: 098d0d93 addi s11,s10,152 + 3bc043c4: 442c lw a1,72(s0) + 3bc043c6: 9da2 add s11,s11,s0 + 3bc043c8: 41b60633 sub a2,a2,s11 + 3bc043cc: 00163613 seqz a2,a2 + 3bc043d0: 4701 li a4,0 + 3bc043d2: 4681 li a3,0 + 3bc043d4: 8562 mv a0,s8 + 3bc043d6: e442 sd a6,8(sp) + 3bc043d8: ce8fe0ef jal ra,3bc028c0 + 3bc043dc: 4430 lw a2,72(s0) + 3bc043de: 47a1 li a5,8 + 3bc043e0: 6822 ld a6,8(sp) + 3bc043e2: 00f61a63 bne a2,a5,3bc043f6 + 3bc043e6: 4799 li a5,6 + 3bc043e8: c43c sw a5,72(s0) + 3bc043ea: 8522 mv a0,s0 + 3bc043ec: a0eff0ef jal ra,3bc035fa + 3bc043f0: 04090c63 beqz s2,3bc04448 + 3bc043f4: a8e5 j 3bc044ec + 3bc043f6: 09883703 ld a4,152(a6) + 3bc043fa: feed8be3 beq s11,a4,3bc043f0 + 3bc043fe: ffc72303 lw t1,-4(a4) # bfffc <__BSS_SIZE__+0xba3ec> + 3bc04402: fd872883 lw a7,-40(a4) + 3bc04406: 0b082783 lw a5,176(a6) + 3bc0440a: 050d0513 addi a0,s10,80 + 3bc0440e: 40688e3b subw t3,a7,t1 + 3bc04412: 0007869b sext.w a3,a5 + 3bc04416: 000e081b sext.w a6,t3 + 3bc0441a: 00d836b3 sltu a3,a6,a3 + 3bc0441e: 0016c693 xori a3,a3,1 + 3bc04422: 40de178b mveqz a5,t3,a3 + 3bc04426: 006786bb addw a3,a5,t1 + 3bc0442a: fed72e23 sw a3,-4(a4) + 3bc0442e: 9522 add a0,a0,s0 + 3bc04430: fc070593 addi a1,a4,-64 + 3bc04434: 08091c63 bnez s2,3bc044cc + 3bc04438: 4785 li a5,1 + 3bc0443a: 06f61463 bne a2,a5,3bc044a2 + 3bc0443e: ec2ff0ef jal ra,3bc03b00 + 3bc04442: c119 beqz a0,3bc04448 + 3bc04444: 4795 li a5,5 + 3bc04446: c43c sw a5,72(s0) + 3bc04448: 27644783 lbu a5,630(s0) + 3bc0444c: c3a9 beqz a5,3bc0448e + 3bc0444e: 26843d03 ld s10,616(s0) + 3bc04452: 00078d9b sext.w s11,a5 + 3bc04456: e43e sd a5,8(sp) + 3bc04458: 9d56 add s10,s10,s5 + 3bc0445a: 856a mv a0,s10 + 3bc0445c: ae2fd0ef jal ra,3bc0173e + 3bc04460: 67a2 ld a5,8(sp) + 3bc04462: 00050c9b sext.w s9,a0 + 3bc04466: 4711 li a4,4 + 3bc04468: 37fd addiw a5,a5,-1 + 3bc0446a: f8fcfc93 andi s9,s9,-113 + 3bc0446e: 02f76063 bltu a4,a5,3bc0448e + 3bc04472: 85ee mv a1,s11 + 3bc04474: 00007517 auipc a0,0x7 + 3bc04478: a7450513 addi a0,a0,-1420 # 3bc0aee8 + 3bc0447c: eddfb0ef jal ra,3bc00358 + 3bc04480: 004d9513 slli a0,s11,0x4 + 3bc04484: 85ea mv a1,s10 + 3bc04486: 01956533 or a0,a0,s9 + 3bc0448a: abafd0ef jal ra,3bc01744 + 3bc0448e: 443c lw a5,72(s0) + 3bc04490: 471d li a4,7 + 3bc04492: 06e79363 bne a5,a4,3bc044f8 + 3bc04496: 04042423 sw zero,72(s0) + 3bc0449a: 8522 mv a0,s0 + 3bc0449c: c6aff0ef jal ra,3bc03906 + 3bc044a0: a8a9 j 3bc044fa + 3bc044a2: 479d li a5,7 + 3bc044a4: 00f61863 bne a2,a5,3bc044b4 + 3bc044a8: 4601 li a2,0 + 3bc044aa: c68fe0ef jal ra,3bc02912 + 3bc044ae: 04042423 sw zero,72(s0) + 3bc044b2: bf59 j 3bc04448 + 3bc044b4: 4795 li a5,5 + 3bc044b6: f8f619e3 bne a2,a5,3bc04448 + 3bc044ba: 4601 li a2,0 + 3bc044bc: c56fe0ef jal ra,3bc02912 + 3bc044c0: 4799 li a5,6 + 3bc044c2: c43c sw a5,72(s0) + 3bc044c4: 8522 mv a0,s0 + 3bc044c6: 934ff0ef jal ra,3bc035fa + 3bc044ca: bfbd j 3bc04448 + 3bc044cc: 00d89763 bne a7,a3,3bc044da + 3bc044d0: 4601 li a2,0 + 3bc044d2: e42a sd a0,8(sp) + 3bc044d4: c3efe0ef jal ra,3bc02912 + 3bc044d8: 6522 ld a0,8(sp) + 3bc044da: 9ca2 add s9,s9,s0 + 3bc044dc: 098cb583 ld a1,152(s9) + 3bc044e0: 00bd8663 beq s11,a1,3bc044ec + 3bc044e4: fc058593 addi a1,a1,-64 + 3bc044e8: c78ff0ef jal ra,3bc03960 + 3bc044ec: 2905 addiw s2,s2,1 + 3bc044ee: 0ff97913 andi s2,s2,255 + 3bc044f2: 0019d993 srli s3,s3,0x1 + 3bc044f6: b535 j 3bc04322 + 3bc044f8: d3cd beqz a5,3bc0449a + 3bc044fa: 27544703 lbu a4,629(s0) + 3bc044fe: 4785 li a5,1 + 3bc04500: fef716e3 bne a4,a5,3bc044ec + 3bc04504: 27444503 lbu a0,628(s0) + 3bc04508: 4585 li a1,1 + 3bc0450a: df5fe0ef jal ra,3bc032fe + 3bc0450e: 0005071b sext.w a4,a0 + 3bc04512: 071e slli a4,a4,0x7 + 3bc04514: 9722 add a4,a4,s0 + 3bc04516: 00751793 slli a5,a0,0x7 + 3bc0451a: 6f4c ld a1,152(a4) + 3bc0451c: 05078513 addi a0,a5,80 # c0050 <__BSS_SIZE__+0xba440> + 3bc04520: 09878793 addi a5,a5,152 + 3bc04524: 97a2 add a5,a5,s0 + 3bc04526: 9522 add a0,a0,s0 + 3bc04528: 00f58a63 beq a1,a5,3bc0453c + 3bc0452c: 0c170783 lb a5,193(a4) + 3bc04530: fc058593 addi a1,a1,-64 + 3bc04534: 0007d763 bgez a5,3bc04542 + 3bc04538: c28ff0ef jal ra,3bc03960 + 3bc0453c: 26040aa3 sb zero,629(s0) + 3bc04540: b775 j 3bc044ec + 3bc04542: a1eff0ef jal ra,3bc03760 + 3bc04546: bfdd j 3bc0453c + 3bc04548: 0019f793 andi a5,s3,1 + 3bc0454c: c3a1 beqz a5,3bc0458c + 3bc0454e: 05890493 addi s1,s2,88 + 3bc04552: 0496 slli s1,s1,0x5 + 3bc04554: 04a1 addi s1,s1,8 + 3bc04556: 94da add s1,s1,s6 + 3bc04558: 8526 mv a0,s1 + 3bc0455a: 9e4fd0ef jal ra,3bc0173e + 3bc0455e: 0005061b sext.w a2,a0 + 3bc04562: 8532 mv a0,a2 + 3bc04564: 85a6 mv a1,s1 + 3bc04566: e432 sd a2,8(sp) + 3bc04568: 9dcfd0ef jal ra,3bc01744 + 3bc0456c: 6622 ld a2,8(sp) + 3bc0456e: 06091063 bnez s2,3bc045ce + 3bc04572: 00867793 andi a5,a2,8 + 3bc04576: c38d beqz a5,3bc04598 + 3bc04578: 8556 mv a0,s5 + 3bc0457a: 4701 li a4,0 + 3bc0457c: 4681 li a3,0 + 3bc0457e: 4601 li a2,0 + 3bc04580: 4581 li a1,0 + 3bc04582: b3efe0ef jal ra,3bc028c0 + 3bc04586: 8522 mv a0,s0 + 3bc04588: fc8ff0ef jal ra,3bc03d50 + 3bc0458c: 2905 addiw s2,s2,1 + 3bc0458e: 0ff97913 andi s2,s2,255 + 3bc04592: 0019d993 srli s3,s3,0x1 + 3bc04596: b301 j 3bc04296 + 3bc04598: 00167793 andi a5,a2,1 + 3bc0459c: dbe5 beqz a5,3bc0458c + 3bc0459e: 443c lw a5,72(s0) + 3bc045a0: 4701 li a4,0 + 3bc045a2: 4681 li a3,0 + 3bc045a4: 01778b63 beq a5,s7,3bc045ba + 3bc045a8: 4585 li a1,1 + 3bc045aa: 8552 mv a0,s4 + 3bc045ac: b14fe0ef jal ra,3bc028c0 + 3bc045b0: 4581 li a1,0 + 3bc045b2: 8522 mv a0,s0 + 3bc045b4: a56ff0ef jal ra,3bc0380a + 3bc045b8: bfd1 j 3bc0458c + 3bc045ba: 8552 mv a0,s4 + 3bc045bc: 4589 li a1,2 + 3bc045be: b02fe0ef jal ra,3bc028c0 + 3bc045c2: 8522 mv a0,s0 + 3bc045c4: 04042423 sw zero,72(s0) + 3bc045c8: b3eff0ef jal ra,3bc03906 + 3bc045cc: b7c1 j 3bc0458c + 3bc045ce: 8a05 andi a2,a2,1 + 3bc045d0: de55 beqz a2,3bc0458c + 3bc045d2: 85ca mv a1,s2 + 3bc045d4: bff9 j 3bc045b2 + +000000003bc045d6 : + 3bc045d6: 07158703 lb a4,113(a1) + 3bc045da: 00075663 bgez a4,3bc045e6 + 3bc045de: 4705 li a4,1 + 3bc045e0: c538 sw a4,72(a0) + 3bc045e2: ddaff06f j 3bc03bbc + 3bc045e6: 4711 li a4,4 + 3bc045e8: c538 sw a4,72(a0) + 3bc045ea: daaff06f j 3bc03b94 + +000000003bc045ee : + 3bc045ee: e581 bnez a1,3bc045f6 + 3bc045f0: 57a9 li a5,-22 + 3bc045f2: 853e mv a0,a5 + 3bc045f4: 8082 ret + 3bc045f6: 759c ld a5,40(a1) + 3bc045f8: dfe5 beqz a5,3bc045f0 + 3bc045fa: 699c ld a5,16(a1) + 3bc045fc: dbf5 beqz a5,3bc045f0 + 3bc045fe: 61bc ld a5,64(a1) + 3bc04600: 7179 addi sp,sp,-48 + 3bc04602: e84a sd s2,16(sp) + 3bc04604: f406 sd ra,40(sp) + 3bc04606: f022 sd s0,32(sp) + 3bc04608: ec26 sd s1,24(sp) + 3bc0460a: e44e sd s3,8(sp) + 3bc0460c: 04058913 addi s2,a1,64 + 3bc04610: 06f91763 bne s2,a5,3bc0467e + 3bc04614: c52d beqz a0,3bc0467e + 3bc04616: 613c ld a5,64(a0) + 3bc04618: 84ae mv s1,a1 + 3bc0461a: 842a mv s0,a0 + 3bc0461c: cbb9 beqz a5,3bc04672 + 3bc0461e: 7c08 ld a0,56(s0) + 3bc04620: 07144683 lbu a3,113(s0) + 3bc04624: fc600793 li a5,-58 + 3bc04628: 7d18 ld a4,56(a0) + 3bc0462a: cb39 beqz a4,3bc04680 + 3bc0462c: 5118 lw a4,32(a0) + 3bc0462e: fc600793 li a5,-58 + 3bc04632: c739 beqz a4,3bc04680 + 3bc04634: 4785 li a5,1 + 3bc04636: 1782 slli a5,a5,0x20 + 3bc04638: fdc78793 addi a5,a5,-36 + 3bc0463c: 26853703 ld a4,616(a0) + 3bc04640: fc9c sd a5,56(s1) + 3bc04642: 643c ld a5,72(s0) + 3bc04644: 04840993 addi s3,s0,72 + 3bc04648: 04f99f63 bne s3,a5,3bc046a6 + 3bc0464c: 07044783 lbu a5,112(s0) + 3bc04650: ebb9 bnez a5,3bc046a6 + 3bc04652: 00f6f793 andi a5,a3,15 + 3bc04656: ef8d bnez a5,3bc04690 + 3bc04658: 683c ld a5,80(s0) + 3bc0465a: 05243823 sd s2,80(s0) + 3bc0465e: 0534b023 sd s3,64(s1) + 3bc04662: e4bc sd a5,72(s1) + 3bc04664: 0127b023 sd s2,0(a5) + 3bc04668: 85a2 mv a1,s0 + 3bc0466a: f6dff0ef jal ra,3bc045d6 + 3bc0466e: 4781 li a5,0 + 3bc04670: a801 j 3bc04680 + 3bc04672: 01853983 ld s3,24(a0) + 3bc04676: a4cfe0ef jal ra,3bc028c2 + 3bc0467a: faa982e3 beq s3,a0,3bc0461e + 3bc0467e: 57a9 li a5,-22 + 3bc04680: 70a2 ld ra,40(sp) + 3bc04682: 7402 ld s0,32(sp) + 3bc04684: 64e2 ld s1,24(sp) + 3bc04686: 6942 ld s2,16(sp) + 3bc04688: 69a2 ld s3,8(sp) + 3bc0468a: 853e mv a0,a5 + 3bc0468c: 6145 addi sp,sp,48 + 3bc0468e: 8082 ret + 3bc04690: fc76b78b extu a5,a3,63,7 + 3bc04694: 01470513 addi a0,a4,20 + 3bc04698: c385 beqz a5,3bc046b8 + 3bc0469a: 8a4fd0ef jal ra,3bc0173e + 3bc0469e: 85a6 mv a1,s1 + 3bc046a0: 8522 mv a0,s0 + 3bc046a2: abeff0ef jal ra,3bc03960 + 3bc046a6: 683c ld a5,80(s0) + 3bc046a8: 05243823 sd s2,80(s0) + 3bc046ac: 0534b023 sd s3,64(s1) + 3bc046b0: e4bc sd a5,72(s1) + 3bc046b2: 0127b023 sd s2,0(a5) + 3bc046b6: bf65 j 3bc0466e + 3bc046b8: 886fd0ef jal ra,3bc0173e + 3bc046bc: 85a6 mv a1,s1 + 3bc046be: 8522 mv a0,s0 + 3bc046c0: 8a0ff0ef jal ra,3bc03760 + 3bc046c4: b7cd j 3bc046a6 + +000000003bc046c6 : + 3bc046c6: 7179 addi sp,sp,-48 + 3bc046c8: f022 sd s0,32(sp) + 3bc046ca: ec26 sd s1,24(sp) + 3bc046cc: f406 sd ra,40(sp) + 3bc046ce: e432 sd a2,8(sp) + 3bc046d0: 0e0007b7 lui a5,0xe000 + 3bc046d4: 84ae mv s1,a1 + 3bc046d6: 638c ld a1,0(a5) + 3bc046d8: 842a mv s0,a0 + 3bc046da: 00007517 auipc a0,0x7 + 3bc046de: 82650513 addi a0,a0,-2010 # 3bc0af00 + 3bc046e2: 5055b78b extu a5,a1,20,5 + 3bc046e6: 85be mv a1,a5 + 3bc046e8: 00007717 auipc a4,0x7 + 3bc046ec: 00f71823 sh a5,16(a4) # 3bc0b6f8 + 3bc046f0: c69fb0ef jal ra,3bc00358 + 3bc046f4: 8522 mv a0,s0 + 3bc046f6: 7402 ld s0,32(sp) + 3bc046f8: 6622 ld a2,8(sp) + 3bc046fa: 70a2 ld ra,40(sp) + 3bc046fc: 85a6 mv a1,s1 + 3bc046fe: 64e2 ld s1,24(sp) + 3bc04700: 6145 addi sp,sp,48 + 3bc04702: bd5fd06f j 3bc022d6 + +000000003bc04706 : + 3bc04706: 4781 li a5,0 + 3bc04708: 00007697 auipc a3,0x7 + 3bc0470c: 81068693 addi a3,a3,-2032 # 3bc0af18 + 3bc04710: 0007871b sext.w a4,a5 + 3bc04714: 00c74363 blt a4,a2,3bc0471a + 3bc04718: 8082 ret + 3bc0471a: 80f5c80b lrbu a6,a1,a5,0 + 3bc0471e: 9c85370b extu a4,a0,39,8 + 3bc04722: 0085151b slliw a0,a0,0x8 + 3bc04726: 01074733 xor a4,a4,a6 + 3bc0472a: a2e6c70b lrhu a4,a3,a4,1 + 3bc0472e: 0785 addi a5,a5,1 + 3bc04730: 8d39 xor a0,a0,a4 + 3bc04732: 3c05350b extu a0,a0,15,0 + 3bc04736: bfe9 j 3bc04710 + +000000003bc04738 : + 3bc04738: 4d78 lw a4,92(a0) + 3bc0473a: 11000793 li a5,272 + 3bc0473e: fff7069b addiw a3,a4,-1 + 3bc04742: 04d7e563 bltu a5,a3,3bc0478c + 3bc04746: 7510 ld a2,40(a0) + 3bc04748: 7c07368b extu a3,a4,31,0 + 3bc0474c: 01853803 ld a6,24(a0) + 3bc04750: 8d91 sub a1,a1,a2 + 3bc04752: 02053e03 ld t3,32(a0) + 3bc04756: 04856883 lwu a7,72(a0) + 3bc0475a: 87ba mv a5,a4 + 3bc0475c: 00d5f463 bgeu a1,a3,3bc04764 + 3bc04760: 0005879b sext.w a5,a1 + 3bc04764: 416c lw a1,68(a0) + 3bc04766: 4134 lw a3,64(a0) + 3bc04768: e599 bnez a1,3bc04776 + 3bc0476a: 414c lw a1,4(a0) + 3bc0476c: 40d5833b subw t1,a1,a3 + 3bc04770: 0067e363 bltu a5,t1,3bc04776 + 3bc04774: c16c sw a1,68(a0) + 3bc04776: 9ebd addw a3,a3,a5 + 3bc04778: 9f1d subw a4,a4,a5 + 3bc0477a: c134 sw a3,64(a0) + 3bc0477c: cd78 sw a4,92(a0) + 3bc0477e: 86be mv a3,a5 + 3bc04780: 8732 mv a4,a2 + 3bc04782: e691 bnez a3,3bc0478e + 3bc04784: 7c07b78b extu a5,a5,31,0 + 3bc04788: 97b2 add a5,a5,a2 + 3bc0478a: f51c sd a5,40(a0) + 3bc0478c: 8082 ret + 3bc0478e: 36fd addiw a3,a3,-1 + 3bc04790: 411705b3 sub a1,a4,a7 + 3bc04794: 8372 mv t1,t3 + 3bc04796: 01176363 bltu a4,a7,3bc0479c + 3bc0479a: 4301 li t1,0 + 3bc0479c: 95c2 add a1,a1,a6 + 3bc0479e: 8065c58b lrbu a1,a1,t1,0 + 3bc047a2: 00e8558b srb a1,a6,a4,0 + 3bc047a6: 0705 addi a4,a4,1 + 3bc047a8: bfe9 j 3bc04782 + +000000003bc047aa : + 3bc047aa: 7155 addi sp,sp,-208 + 3bc047ac: e1a2 sd s0,192(sp) + 3bc047ae: 6405 lui s0,0x1 + 3bc047b0: e586 sd ra,200(sp) + 3bc047b2: fd26 sd s1,184(sp) + 3bc047b4: f94a sd s2,176(sp) + 3bc047b6: f54e sd s3,168(sp) + 3bc047b8: f152 sd s4,160(sp) + 3bc047ba: ed56 sd s5,152(sp) + 3bc047bc: e95a sd s6,144(sp) + 3bc047be: e55e sd s7,136(sp) + 3bc047c0: e162 sd s8,128(sp) + 3bc047c2: fce6 sd s9,120(sp) + 3bc047c4: f8ea sd s10,112(sp) + 3bc047c6: f4ee sd s11,104(sp) + 3bc047c8: e82e sd a1,16(sp) + 3bc047ca: f832 sd a2,48(sp) + 3bc047cc: 8004041b addiw s0,s0,-2048 + 3bc047d0: 417c lw a5,68(a0) + 3bc047d2: 04052e03 lw t3,64(a0) + 3bc047d6: 02853803 ld a6,40(a0) + 3bc047da: ec3e sd a5,24(sp) + 3bc047dc: eba1 bnez a5,3bc0482c + 3bc047de: 415c lw a5,4(a0) + 3bc047e0: 6742 ld a4,16(sp) + 3bc047e2: 66c2 ld a3,16(sp) + 3bc047e4: 41c787bb subw a5,a5,t3 + 3bc047e8: 7c07b78b extu a5,a5,31,0 + 3bc047ec: 41070733 sub a4,a4,a6 + 3bc047f0: e436 sd a3,8(sp) + 3bc047f2: 00e7f463 bgeu a5,a4,3bc047fa + 3bc047f6: 97c2 add a5,a5,a6 + 3bc047f8: e43e sd a5,8(sp) + 3bc047fa: 020e1b63 bnez t3,3bc04830 + 3bc047fe: 5d58 lw a4,60(a0) + 3bc04800: c00007b7 lui a5,0xc0000 + 3bc04804: bff78793 addi a5,a5,-1025 # ffffffffbffffbff <__BL2_END__+0xffffffff843ec7ef> + 3bc04808: 02e7f463 bgeu a5,a4,3bc04830 + 3bc0480c: 4505 li a0,1 + 3bc0480e: 60ae ld ra,200(sp) + 3bc04810: 640e ld s0,192(sp) + 3bc04812: 74ea ld s1,184(sp) + 3bc04814: 794a ld s2,176(sp) + 3bc04816: 79aa ld s3,168(sp) + 3bc04818: 7a0a ld s4,160(sp) + 3bc0481a: 6aea ld s5,152(sp) + 3bc0481c: 6b4a ld s6,144(sp) + 3bc0481e: 6baa ld s7,136(sp) + 3bc04820: 6c0a ld s8,128(sp) + 3bc04822: 7ce6 ld s9,120(sp) + 3bc04824: 7d46 ld s10,112(sp) + 3bc04826: 7da6 ld s11,104(sp) + 3bc04828: 6169 addi sp,sp,208 + 3bc0482a: 8082 ret + 3bc0482c: 67c2 ld a5,16(sp) + 3bc0482e: e43e sd a5,8(sp) + 3bc04830: 497c lw a5,84(a0) + 3bc04832: 00154703 lbu a4,1(a0) + 3bc04836: 690c ld a1,16(a0) + 3bc04838: f03e sd a5,32(sp) + 3bc0483a: 00054783 lbu a5,0(a0) + 3bc0483e: 00254303 lbu t1,2(a0) + 3bc04842: 74fd lui s1,0xfffff + 3bc04844: f43e sd a5,40(sp) + 3bc04846: 76a2 ld a3,40(sp) + 3bc04848: 10000793 li a5,256 + 3bc0484c: 00e7973b sllw a4,a5,a4 + 3bc04850: 02053a83 ld s5,32(a0) + 3bc04854: 00d7d7bb srlw a5,a5,a3 + 3bc04858: 60048493 addi s1,s1,1536 # fffffffffffff600 <__BL2_END__+0xffffffffc43ec1f0> + 3bc0485c: 56fd li a3,-1 + 3bc0485e: 40f707bb subw a5,a4,a5 + 3bc04862: 006696bb sllw a3,a3,t1 + 3bc04866: 94ae add s1,s1,a1 + 3bc04868: fc3e sd a5,56(sp) + 3bc0486a: fff6c693 not a3,a3 + 3bc0486e: e4a6 sd s1,72(sp) + 3bc04870: 05852883 lw a7,88(a0) + 3bc04874: a0058493 addi s1,a1,-1536 + 3bc04878: 04852f83 lw t6,72(a0) + 3bc0487c: 04c52f03 lw t5,76(a0) + 3bc04880: 05052983 lw s3,80(a0) + 3bc04884: 01853a03 ld s4,24(a0) + 3bc04888: 7918 ld a4,48(a0) + 3bc0488a: 5d10 lw a2,56(a0) + 3bc0488c: 5d5c lw a5,60(a0) + 3bc0488e: 2681 sext.w a3,a3 + 3bc04890: e8a6 sd s1,80(sp) + 3bc04892: fffa8493 addi s1,s5,-1 + 3bc04896: e0b6 sd a3,64(sp) + 3bc04898: 4301 li t1,0 + 3bc0489a: 010006b7 lui a3,0x1000 + 3bc0489e: eca6 sd s1,88(sp) + 3bc048a0: 6486 ld s1,64(sp) + 3bc048a2: 01c4feb3 and t4,s1,t3 + 3bc048a6: 004e9e9b slliw t4,t4,0x4 + 3bc048aa: 011e893b addw s2,t4,a7 + 3bc048ae: 02091493 slli s1,s2,0x20 + 3bc048b2: 01f4d913 srli s2,s1,0x1f + 3bc048b6: e0090b93 addi s7,s2,-512 + 3bc048ba: a175cb0b lrhu s6,a1,s7,0 + 3bc048be: 000b039b sext.w t2,s6 + 3bc048c2: 00d67a63 bgeu a2,a3,3bc048d6 + 3bc048c6: 9817428b lbuia t0,(a4),1,0 + 3bc048ca: 0087979b slliw a5,a5,0x8 + 3bc048ce: 0086161b slliw a2,a2,0x8 + 3bc048d2: 00f2e7b3 or a5,t0,a5 + 3bc048d6: 00b6529b srliw t0,a2,0xb + 3bc048da: 027284bb mulw s1,t0,t2 + 3bc048de: 82a6 mv t0,s1 + 3bc048e0: 7497f663 bgeu a5,s1,3bc0502c + 3bc048e4: 6ee2 ld t4,24(sp) + 3bc048e6: 407403bb subw t2,s0,t2 + 3bc048ea: 0053d39b srliw t2,t2,0x5 + 3bc048ee: 016383bb addw t2,t2,s6 + 3bc048f2: 2175d38b srh t2,a1,s7,0 + 3bc048f6: 01ceeeb3 or t4,t4,t3 + 3bc048fa: 28058613 addi a2,a1,640 + 3bc048fe: 020e8b63 beqz t4,3bc04934 + 3bc04902: 6966 ld s2,88(sp) + 3bc04904: fff80393 addi t2,a6,-1 + 3bc04908: 008e1e9b slliw t4,t3,0x8 + 3bc0490c: 4109138b mveqz t2,s2,a6 + 3bc04910: 807a438b lrbu t2,s4,t2,0 + 3bc04914: 01d38ebb addw t4,t2,t4 + 3bc04918: 73e2 ld t2,56(sp) + 3bc0491a: 01d3feb3 and t4,t2,t4 + 3bc0491e: 73a2 ld t2,40(sp) + 3bc04920: 007e9ebb sllw t4,t4,t2 + 3bc04924: 438d li t2,3 + 3bc04926: 027e8ebb mulw t4,t4,t2 + 3bc0492a: 020e9393 slli t2,t4,0x20 + 3bc0492e: 01f3de93 srli t4,t2,0x1f + 3bc04932: 9676 add a2,a2,t4 + 3bc04934: 4e99 li t4,6 + 3bc04936: 2e05 addiw t3,t3,1 + 3bc04938: 311eef63 bltu t4,a7,3bc04c56 + 3bc0493c: 438d li t2,3 + 3bc0493e: 8ec6 mv t4,a7 + 3bc04940: 0113f363 bgeu t2,a7,3bc04946 + 3bc04944: 4e8d li t4,3 + 3bc04946: 00265383 lhu t2,2(a2) + 3bc0494a: 41d888bb subw a7,a7,t4 + 3bc0494e: 00038e9b sext.w t4,t2 + 3bc04952: 00d4fa63 bgeu s1,a3,3bc04966 + 3bc04956: 0082949b slliw s1,t0,0x8 + 3bc0495a: 9817428b lbuia t0,(a4),1,0 + 3bc0495e: 0087979b slliw a5,a5,0x8 + 3bc04962: 00f2e7b3 or a5,t0,a5 + 3bc04966: 00b4d29b srliw t0,s1,0xb + 3bc0496a: 03d2893b mulw s2,t0,t4 + 3bc0496e: 2327f563 bgeu a5,s2,3bc04b98 + 3bc04972: 41d40ebb subw t4,s0,t4 + 3bc04976: 005ede9b srliw t4,t4,0x5 + 3bc0497a: 007e83bb addw t2,t4,t2 + 3bc0497e: 3c03b38b extu t2,t2,15,0 + 3bc04982: 4e89 li t4,2 + 3bc04984: 00761123 sh t2,2(a2) + 3bc04988: b3d6448b lurhu s1,a2,t4,1 + 3bc0498c: 03d61b8b addsl s7,a2,t4,1 + 3bc04990: 0004829b sext.w t0,s1 + 3bc04994: 00d97a63 bgeu s2,a3,3bc049a8 + 3bc04998: 9817438b lbuia t2,(a4),1,0 + 3bc0499c: 0087979b slliw a5,a5,0x8 + 3bc049a0: 0089191b slliw s2,s2,0x8 + 3bc049a4: 00f3e7b3 or a5,t2,a5 + 3bc049a8: 00b95b1b srliw s6,s2,0xb + 3bc049ac: 025b03bb mulw t2,s6,t0 + 3bc049b0: 001e9c1b slliw s8,t4,0x1 + 3bc049b4: 0e86 slli t4,t4,0x1 + 3bc049b6: 1e77fd63 bgeu a5,t2,3bc04bb0 + 3bc049ba: 405402bb subw t0,s0,t0 + 3bc049be: 0052d29b srliw t0,t0,0x5 + 3bc049c2: 009284bb addw s1,t0,s1 + 3bc049c6: 3c04b48b extu s1,s1,15,0 + 3bc049ca: 009b9023 sh s1,0(s7) + 3bc049ce: b3d6490b lurhu s2,a2,t4,1 + 3bc049d2: 020e9493 slli s1,t4,0x20 + 3bc049d6: 01f4dc13 srli s8,s1,0x1f + 3bc049da: 9c32 add s8,s8,a2 + 3bc049dc: 0009029b sext.w t0,s2 + 3bc049e0: 00d3f963 bgeu t2,a3,3bc049f2 + 3bc049e4: 9817448b lbuia s1,(a4),1,0 + 3bc049e8: 0087979b slliw a5,a5,0x8 + 3bc049ec: 0083939b slliw t2,t2,0x8 + 3bc049f0: 8fc5 or a5,a5,s1 + 3bc049f2: 00b3db9b srliw s7,t2,0xb + 3bc049f6: 025b84bb mulw s1,s7,t0 + 3bc049fa: 001e9b1b slliw s6,t4,0x1 + 3bc049fe: 1c97f663 bgeu a5,s1,3bc04bca + 3bc04a02: 405402bb subw t0,s0,t0 + 3bc04a06: 0052d29b srliw t0,t0,0x5 + 3bc04a0a: 0122893b addw s2,t0,s2 + 3bc04a0e: 3c09390b extu s2,s2,15,0 + 3bc04a12: 012c1023 sh s2,0(s8) + 3bc04a16: b366428b lurhu t0,a2,s6,1 + 3bc04a1a: 020b1e93 slli t4,s6,0x20 + 3bc04a1e: 01fedc13 srli s8,t4,0x1f + 3bc04a22: 9c32 add s8,s8,a2 + 3bc04a24: 00028e9b sext.w t4,t0 + 3bc04a28: 00d4fa63 bgeu s1,a3,3bc04a3c + 3bc04a2c: 9817438b lbuia t2,(a4),1,0 + 3bc04a30: 0087979b slliw a5,a5,0x8 + 3bc04a34: 0084949b slliw s1,s1,0x8 + 3bc04a38: 00f3e7b3 or a5,t2,a5 + 3bc04a3c: 00b4db9b srliw s7,s1,0xb + 3bc04a40: 03db83bb mulw t2,s7,t4 + 3bc04a44: 001b191b slliw s2,s6,0x1 + 3bc04a48: 1877fc63 bgeu a5,t2,3bc04be0 + 3bc04a4c: 41d40ebb subw t4,s0,t4 + 3bc04a50: 005ede9b srliw t4,t4,0x5 + 3bc04a54: 005e82bb addw t0,t4,t0 + 3bc04a58: 3c02b28b extu t0,t0,15,0 + 3bc04a5c: 02091493 slli s1,s2,0x20 + 3bc04a60: 005c1023 sh t0,0(s8) + 3bc04a64: 01f4db93 srli s7,s1,0x1f + 3bc04a68: b326448b lurhu s1,a2,s2,1 + 3bc04a6c: 9bb2 add s7,s7,a2 + 3bc04a6e: 00048e9b sext.w t4,s1 + 3bc04a72: 00d3fa63 bgeu t2,a3,3bc04a86 + 3bc04a76: 9817428b lbuia t0,(a4),1,0 + 3bc04a7a: 0087979b slliw a5,a5,0x8 + 3bc04a7e: 0083939b slliw t2,t2,0x8 + 3bc04a82: 00f2e7b3 or a5,t0,a5 + 3bc04a86: 00b3db1b srliw s6,t2,0xb + 3bc04a8a: 03db02bb mulw t0,s6,t4 + 3bc04a8e: 0019191b slliw s2,s2,0x1 + 3bc04a92: 1657f363 bgeu a5,t0,3bc04bf8 + 3bc04a96: 41d40ebb subw t4,s0,t4 + 3bc04a9a: 005ede9b srliw t4,t4,0x5 + 3bc04a9e: 009e84bb addw s1,t4,s1 + 3bc04aa2: 3c04b48b extu s1,s1,15,0 + 3bc04aa6: 009b9023 sh s1,0(s7) + 3bc04aaa: 02091493 slli s1,s2,0x20 + 3bc04aae: 01f4db93 srli s7,s1,0x1f + 3bc04ab2: b326448b lurhu s1,a2,s2,1 + 3bc04ab6: 9bb2 add s7,s7,a2 + 3bc04ab8: 00048e9b sext.w t4,s1 + 3bc04abc: 00d2fa63 bgeu t0,a3,3bc04ad0 + 3bc04ac0: 9817438b lbuia t2,(a4),1,0 + 3bc04ac4: 0087979b slliw a5,a5,0x8 + 3bc04ac8: 0082929b slliw t0,t0,0x8 + 3bc04acc: 00f3e7b3 or a5,t2,a5 + 3bc04ad0: 00b2db1b srliw s6,t0,0xb + 3bc04ad4: 03db03bb mulw t2,s6,t4 + 3bc04ad8: 0019191b slliw s2,s2,0x1 + 3bc04adc: 1277fa63 bgeu a5,t2,3bc04c10 + 3bc04ae0: 41d40ebb subw t4,s0,t4 + 3bc04ae4: 005ede9b srliw t4,t4,0x5 + 3bc04ae8: 009e84bb addw s1,t4,s1 + 3bc04aec: 3c04b48b extu s1,s1,15,0 + 3bc04af0: 009b9023 sh s1,0(s7) + 3bc04af4: 02091493 slli s1,s2,0x20 + 3bc04af8: 01f4db93 srli s7,s1,0x1f + 3bc04afc: b326448b lurhu s1,a2,s2,1 + 3bc04b00: 9bb2 add s7,s7,a2 + 3bc04b02: 00048e9b sext.w t4,s1 + 3bc04b06: 00d3fa63 bgeu t2,a3,3bc04b1a + 3bc04b0a: 9817428b lbuia t0,(a4),1,0 + 3bc04b0e: 0087979b slliw a5,a5,0x8 + 3bc04b12: 0083939b slliw t2,t2,0x8 + 3bc04b16: 00f2e7b3 or a5,t0,a5 + 3bc04b1a: 00b3db1b srliw s6,t2,0xb + 3bc04b1e: 03db02bb mulw t0,s6,t4 + 3bc04b22: 0019191b slliw s2,s2,0x1 + 3bc04b26: 1057f163 bgeu a5,t0,3bc04c28 + 3bc04b2a: 41d40ebb subw t4,s0,t4 + 3bc04b2e: 005ede9b srliw t4,t4,0x5 + 3bc04b32: 009e84bb addw s1,t4,s1 + 3bc04b36: 3c04b48b extu s1,s1,15,0 + 3bc04b3a: 009b9023 sh s1,0(s7) + 3bc04b3e: b3264b8b lurhu s7,a2,s2,1 + 3bc04b42: 02091493 slli s1,s2,0x20 + 3bc04b46: 01f4db13 srli s6,s1,0x1f + 3bc04b4a: 9b32 add s6,s6,a2 + 3bc04b4c: 000b8e9b sext.w t4,s7 + 3bc04b50: 00d2f963 bgeu t0,a3,3bc04b62 + 3bc04b54: 9817460b lbuia a2,(a4),1,0 + 3bc04b58: 0087979b slliw a5,a5,0x8 + 3bc04b5c: 0082929b slliw t0,t0,0x8 + 3bc04b60: 8fd1 or a5,a5,a2 + 3bc04b62: 00b2d39b srliw t2,t0,0xb + 3bc04b66: 03d3863b mulw a2,t2,t4 + 3bc04b6a: 0019149b slliw s1,s2,0x1 + 3bc04b6e: 0cc7f963 bgeu a5,a2,3bc04c40 + 3bc04b72: 41d40ebb subw t4,s0,t4 + 3bc04b76: 005ede9b srliw t4,t4,0x5 + 3bc04b7a: 017e8ebb addw t4,t4,s7 + 3bc04b7e: 01db1023 sh t4,0(s6) + 3bc04b82: 010a548b srb s1,s4,a6,0 + 3bc04b86: 0805 addi a6,a6,1 + 3bc04b88: 64a2 ld s1,8(sp) + 3bc04b8a: 649870e3 bgeu a6,s1,3bc059ca + 3bc04b8e: 74c2 ld s1,48(sp) + 3bc04b90: d09768e3 bltu a4,s1,3bc048a0 + 3bc04b94: 6370006f j 3bc059ca + 3bc04b98: 005ede9b srliw t4,t4,0x5 + 3bc04b9c: 41d383bb subw t2,t2,t4 + 3bc04ba0: 412787bb subw a5,a5,s2 + 3bc04ba4: 3c03b38b extu t2,t2,15,0 + 3bc04ba8: 4124893b subw s2,s1,s2 + 3bc04bac: 4e8d li t4,3 + 3bc04bae: bbd9 j 3bc04984 + 3bc04bb0: 0052d29b srliw t0,t0,0x5 + 3bc04bb4: 405484bb subw s1,s1,t0 + 3bc04bb8: 407787bb subw a5,a5,t2 + 3bc04bbc: 3c04b48b extu s1,s1,15,0 + 3bc04bc0: 001c0e9b addiw t4,s8,1 + 3bc04bc4: 407903bb subw t2,s2,t2 + 3bc04bc8: b509 j 3bc049ca + 3bc04bca: 0052d29b srliw t0,t0,0x5 + 3bc04bce: 4059093b subw s2,s2,t0 + 3bc04bd2: 9f85 subw a5,a5,s1 + 3bc04bd4: 3c09390b extu s2,s2,15,0 + 3bc04bd8: 2b05 addiw s6,s6,1 + 3bc04bda: 409384bb subw s1,t2,s1 + 3bc04bde: bd15 j 3bc04a12 + 3bc04be0: 005ede9b srliw t4,t4,0x5 + 3bc04be4: 41d282bb subw t0,t0,t4 + 3bc04be8: 407787bb subw a5,a5,t2 + 3bc04bec: 3c02b28b extu t0,t0,15,0 + 3bc04bf0: 2905 addiw s2,s2,1 + 3bc04bf2: 407483bb subw t2,s1,t2 + 3bc04bf6: b59d j 3bc04a5c + 3bc04bf8: 005ede9b srliw t4,t4,0x5 + 3bc04bfc: 41d484bb subw s1,s1,t4 + 3bc04c00: 405787bb subw a5,a5,t0 + 3bc04c04: 3c04b48b extu s1,s1,15,0 + 3bc04c08: 2905 addiw s2,s2,1 + 3bc04c0a: 405382bb subw t0,t2,t0 + 3bc04c0e: bd61 j 3bc04aa6 + 3bc04c10: 005ede9b srliw t4,t4,0x5 + 3bc04c14: 41d484bb subw s1,s1,t4 + 3bc04c18: 407787bb subw a5,a5,t2 + 3bc04c1c: 3c04b48b extu s1,s1,15,0 + 3bc04c20: 2905 addiw s2,s2,1 + 3bc04c22: 407283bb subw t2,t0,t2 + 3bc04c26: b5e9 j 3bc04af0 + 3bc04c28: 005ede9b srliw t4,t4,0x5 + 3bc04c2c: 41d484bb subw s1,s1,t4 + 3bc04c30: 405787bb subw a5,a5,t0 + 3bc04c34: 3c04b48b extu s1,s1,15,0 + 3bc04c38: 2905 addiw s2,s2,1 + 3bc04c3a: 405382bb subw t0,t2,t0 + 3bc04c3e: bdf5 j 3bc04b3a + 3bc04c40: 005ede9b srliw t4,t4,0x5 + 3bc04c44: 41db8ebb subw t4,s7,t4 + 3bc04c48: 9f91 subw a5,a5,a2 + 3bc04c4a: 01db1023 sh t4,0(s6) + 3bc04c4e: 2485 addiw s1,s1,1 + 3bc04c50: 40c2863b subw a2,t0,a2 + 3bc04c54: b73d j 3bc04b82 + 3bc04c56: 7c0fb90b extu s2,t6,31,0 + 3bc04c5a: 41280eb3 sub t4,a6,s2 + 3bc04c5e: 83d6 mv t2,s5 + 3bc04c60: 01286363 bltu a6,s2,3bc04c66 + 3bc04c64: 4381 li t2,0 + 3bc04c66: 9ed2 add t4,t4,s4 + 3bc04c68: 4925 li s2,9 + 3bc04c6a: 807ece8b lrbu t4,t4,t2,0 + 3bc04c6e: 438d li t2,3 + 3bc04c70: 01197363 bgeu s2,a7,3bc04c76 + 3bc04c74: 4399 li t2,6 + 3bc04c76: 001e9b1b slliw s6,t4,0x1 + 3bc04c7a: 100b7b13 andi s6,s6,256 + 3bc04c7e: 407888bb subw a7,a7,t2 + 3bc04c82: 101b039b addiw t2,s6,257 + 3bc04c86: b2764c0b lurhu s8,a2,t2,1 + 3bc04c8a: 101b0b93 addi s7,s6,257 + 3bc04c8e: 03761b8b addsl s7,a2,s7,1 + 3bc04c92: 000c039b sext.w t2,s8 + 3bc04c96: 00d4fa63 bgeu s1,a3,3bc04caa + 3bc04c9a: 0082949b slliw s1,t0,0x8 + 3bc04c9e: 9817428b lbuia t0,(a4),1,0 + 3bc04ca2: 0087979b slliw a5,a5,0x8 + 3bc04ca6: 00f2e7b3 or a5,t0,a5 + 3bc04caa: 00b4d29b srliw t0,s1,0xb + 3bc04cae: 0272893b mulw s2,t0,t2 + 3bc04cb2: 2b27ff63 bgeu a5,s2,3bc04f70 + 3bc04cb6: 407403bb subw t2,s0,t2 + 3bc04cba: 0053d39b srliw t2,t2,0x5 + 3bc04cbe: 01838c3b addw s8,t2,s8 + 3bc04cc2: 3c0c3c0b extu s8,s8,15,0 + 3bc04cc6: 100b4b13 xori s6,s6,256 + 3bc04cca: 4289 li t0,2 + 3bc04ccc: 002e939b slliw t2,t4,0x2 + 3bc04cd0: 007b73b3 and t2,s6,t2 + 3bc04cd4: 005b04bb addw s1,s6,t0 + 3bc04cd8: 018b9023 sh s8,0(s7) + 3bc04cdc: 00038c1b sext.w s8,t2 + 3bc04ce0: 007483bb addw t2,s1,t2 + 3bc04ce4: b2764b8b lurhu s7,a2,t2,1 + 3bc04ce8: 02039493 slli s1,t2,0x20 + 3bc04cec: 01f4dd13 srli s10,s1,0x1f + 3bc04cf0: 9d32 add s10,s10,a2 + 3bc04cf2: 000b839b sext.w t2,s7 + 3bc04cf6: 00d97963 bgeu s2,a3,3bc04d08 + 3bc04cfa: 9817448b lbuia s1,(a4),1,0 + 3bc04cfe: 0087979b slliw a5,a5,0x8 + 3bc04d02: 0089191b slliw s2,s2,0x8 + 3bc04d06: 8fc5 or a5,a5,s1 + 3bc04d08: 00b95c9b srliw s9,s2,0xb + 3bc04d0c: 027c84bb mulw s1,s9,t2 + 3bc04d10: 00129d9b slliw s11,t0,0x1 + 3bc04d14: 0286 slli t0,t0,0x1 + 3bc04d16: 2697f963 bgeu a5,s1,3bc04f88 + 3bc04d1a: 407403bb subw t2,s0,t2 + 3bc04d1e: 0053d39b srliw t2,t2,0x5 + 3bc04d22: 01738bbb addw s7,t2,s7 + 3bc04d26: 3c0bbb8b extu s7,s7,15,0 + 3bc04d2a: 018b4c33 xor s8,s6,s8 + 3bc04d2e: 003e939b slliw t2,t4,0x3 + 3bc04d32: 007c73b3 and t2,s8,t2 + 3bc04d36: 005c093b addw s2,s8,t0 + 3bc04d3a: 017d1023 sh s7,0(s10) + 3bc04d3e: 00038b1b sext.w s6,t2 + 3bc04d42: 007903bb addw t2,s2,t2 + 3bc04d46: b2764c8b lurhu s9,a2,t2,1 + 3bc04d4a: 02039913 slli s2,t2,0x20 + 3bc04d4e: 01f95d93 srli s11,s2,0x1f + 3bc04d52: 9db2 add s11,s11,a2 + 3bc04d54: 000c839b sext.w t2,s9 + 3bc04d58: 00d4fa63 bgeu s1,a3,3bc04d6c + 3bc04d5c: 9817490b lbuia s2,(a4),1,0 + 3bc04d60: 0087979b slliw a5,a5,0x8 + 3bc04d64: 0084949b slliw s1,s1,0x8 + 3bc04d68: 00f967b3 or a5,s2,a5 + 3bc04d6c: 00b4dd1b srliw s10,s1,0xb + 3bc04d70: 027d093b mulw s2,s10,t2 + 3bc04d74: 00129b9b slliw s7,t0,0x1 + 3bc04d78: 2327f463 bgeu a5,s2,3bc04fa0 + 3bc04d7c: 407403bb subw t2,s0,t2 + 3bc04d80: 0053d39b srliw t2,t2,0x5 + 3bc04d84: 01938cbb addw s9,t2,s9 + 3bc04d88: 3c0cbc8b extu s9,s9,15,0 + 3bc04d8c: 016c4b33 xor s6,s8,s6 + 3bc04d90: 004e929b slliw t0,t4,0x4 + 3bc04d94: 005b72b3 and t0,s6,t0 + 3bc04d98: 017b03bb addw t2,s6,s7 + 3bc04d9c: 019d9023 sh s9,0(s11) + 3bc04da0: 00028c1b sext.w s8,t0 + 3bc04da4: 005382bb addw t0,t2,t0 + 3bc04da8: b256438b lurhu t2,a2,t0,1 + 3bc04dac: 02029493 slli s1,t0,0x20 + 3bc04db0: 01f4dd13 srli s10,s1,0x1f + 3bc04db4: 9d32 add s10,s10,a2 + 3bc04db6: 0003829b sext.w t0,t2 + 3bc04dba: 00d97963 bgeu s2,a3,3bc04dcc + 3bc04dbe: 9817448b lbuia s1,(a4),1,0 + 3bc04dc2: 0087979b slliw a5,a5,0x8 + 3bc04dc6: 0089191b slliw s2,s2,0x8 + 3bc04dca: 8fc5 or a5,a5,s1 + 3bc04dcc: 00b95c9b srliw s9,s2,0xb + 3bc04dd0: 025c84bb mulw s1,s9,t0 + 3bc04dd4: 001b9b9b slliw s7,s7,0x1 + 3bc04dd8: 1e97f063 bgeu a5,s1,3bc04fb8 + 3bc04ddc: 405402bb subw t0,s0,t0 + 3bc04de0: 0052d29b srliw t0,t0,0x5 + 3bc04de4: 007283bb addw t2,t0,t2 + 3bc04de8: 3c03b38b extu t2,t2,15,0 + 3bc04dec: 018b4c33 xor s8,s6,s8 + 3bc04df0: 005e929b slliw t0,t4,0x5 + 3bc04df4: 007d1023 sh t2,0(s10) + 3bc04df8: 005c72b3 and t0,s8,t0 + 3bc04dfc: 017c03bb addw t2,s8,s7 + 3bc04e00: 00028b1b sext.w s6,t0 + 3bc04e04: 005382bb addw t0,t2,t0 + 3bc04e08: b256490b lurhu s2,a2,t0,1 + 3bc04e0c: 02029393 slli t2,t0,0x20 + 3bc04e10: 01f3dd13 srli s10,t2,0x1f + 3bc04e14: 9d32 add s10,s10,a2 + 3bc04e16: 0009029b sext.w t0,s2 + 3bc04e1a: 00d4fa63 bgeu s1,a3,3bc04e2e + 3bc04e1e: 9817438b lbuia t2,(a4),1,0 + 3bc04e22: 0087979b slliw a5,a5,0x8 + 3bc04e26: 0084949b slliw s1,s1,0x8 + 3bc04e2a: 00f3e7b3 or a5,t2,a5 + 3bc04e2e: 00b4dc9b srliw s9,s1,0xb + 3bc04e32: 025c83bb mulw t2,s9,t0 + 3bc04e36: 001b9b9b slliw s7,s7,0x1 + 3bc04e3a: 1877fa63 bgeu a5,t2,3bc04fce + 3bc04e3e: 405402bb subw t0,s0,t0 + 3bc04e42: 0052d29b srliw t0,t0,0x5 + 3bc04e46: 0122893b addw s2,t0,s2 + 3bc04e4a: 3c09390b extu s2,s2,15,0 + 3bc04e4e: 016c4b33 xor s6,s8,s6 + 3bc04e52: 006e929b slliw t0,t4,0x6 + 3bc04e56: 005b72b3 and t0,s6,t0 + 3bc04e5a: 017b04bb addw s1,s6,s7 + 3bc04e5e: 00028c1b sext.w s8,t0 + 3bc04e62: 005482bb addw t0,s1,t0 + 3bc04e66: 02029493 slli s1,t0,0x20 + 3bc04e6a: 012d1023 sh s2,0(s10) + 3bc04e6e: 01f4dd13 srli s10,s1,0x1f + 3bc04e72: b256448b lurhu s1,a2,t0,1 + 3bc04e76: 9d32 add s10,s10,a2 + 3bc04e78: 0004829b sext.w t0,s1 + 3bc04e7c: 00d3fa63 bgeu t2,a3,3bc04e90 + 3bc04e80: 9817490b lbuia s2,(a4),1,0 + 3bc04e84: 0087979b slliw a5,a5,0x8 + 3bc04e88: 0083939b slliw t2,t2,0x8 + 3bc04e8c: 00f967b3 or a5,s2,a5 + 3bc04e90: 00b3dc9b srliw s9,t2,0xb + 3bc04e94: 025c893b mulw s2,s9,t0 + 3bc04e98: 001b9b9b slliw s7,s7,0x1 + 3bc04e9c: 1527f563 bgeu a5,s2,3bc04fe6 + 3bc04ea0: 405402bb subw t0,s0,t0 + 3bc04ea4: 0052d29b srliw t0,t0,0x5 + 3bc04ea8: 009284bb addw s1,t0,s1 + 3bc04eac: 3c04b48b extu s1,s1,15,0 + 3bc04eb0: 018b4c33 xor s8,s6,s8 + 3bc04eb4: 007e929b slliw t0,t4,0x7 + 3bc04eb8: 005c72b3 and t0,s8,t0 + 3bc04ebc: 017c03bb addw t2,s8,s7 + 3bc04ec0: 009d1023 sh s1,0(s10) + 3bc04ec4: 0002849b sext.w s1,t0 + 3bc04ec8: 005382bb addw t0,t2,t0 + 3bc04ecc: b2564b0b lurhu s6,a2,t0,1 + 3bc04ed0: 02029393 slli t2,t0,0x20 + 3bc04ed4: 01f3dd93 srli s11,t2,0x1f + 3bc04ed8: 9db2 add s11,s11,a2 + 3bc04eda: 000b029b sext.w t0,s6 + 3bc04ede: 00d97a63 bgeu s2,a3,3bc04ef2 + 3bc04ee2: 9817438b lbuia t2,(a4),1,0 + 3bc04ee6: 0087979b slliw a5,a5,0x8 + 3bc04eea: 0089191b slliw s2,s2,0x8 + 3bc04eee: 00f3e7b3 or a5,t2,a5 + 3bc04ef2: 00b95d1b srliw s10,s2,0xb + 3bc04ef6: 025d03bb mulw t2,s10,t0 + 3bc04efa: 001b9c9b slliw s9,s7,0x1 + 3bc04efe: 1077f063 bgeu a5,t2,3bc04ffe + 3bc04f02: 405402bb subw t0,s0,t0 + 3bc04f06: 0052d29b srliw t0,t0,0x5 + 3bc04f0a: 01628b3b addw s6,t0,s6 + 3bc04f0e: 3c0b3b0b extu s6,s6,15,0 + 3bc04f12: 009c44b3 xor s1,s8,s1 + 3bc04f16: 008e9e9b slliw t4,t4,0x8 + 3bc04f1a: 01d4feb3 and t4,s1,t4 + 3bc04f1e: 019484bb addw s1,s1,s9 + 3bc04f22: 01d48ebb addw t4,s1,t4 + 3bc04f26: 016d9023 sh s6,0(s11) + 3bc04f2a: b3d64b0b lurhu s6,a2,t4,1 + 3bc04f2e: 020e9493 slli s1,t4,0x20 + 3bc04f32: 01f4d913 srli s2,s1,0x1f + 3bc04f36: 9932 add s2,s2,a2 + 3bc04f38: 000b0e9b sext.w t4,s6 + 3bc04f3c: 00d3f963 bgeu t2,a3,3bc04f4e + 3bc04f40: 9817460b lbuia a2,(a4),1,0 + 3bc04f44: 0087979b slliw a5,a5,0x8 + 3bc04f48: 0083939b slliw t2,t2,0x8 + 3bc04f4c: 8fd1 or a5,a5,a2 + 3bc04f4e: 00b3d29b srliw t0,t2,0xb + 3bc04f52: 03d2863b mulw a2,t0,t4 + 3bc04f56: 001c949b slliw s1,s9,0x1 + 3bc04f5a: 0ac7fe63 bgeu a5,a2,3bc05016 + 3bc04f5e: 41d40ebb subw t4,s0,t4 + 3bc04f62: 005ede9b srliw t4,t4,0x5 + 3bc04f66: 016e8ebb addw t4,t4,s6 + 3bc04f6a: 01d91023 sh t4,0(s2) + 3bc04f6e: b911 j 3bc04b82 + 3bc04f70: 0053d39b srliw t2,t2,0x5 + 3bc04f74: 407c0c3b subw s8,s8,t2 + 3bc04f78: 412787bb subw a5,a5,s2 + 3bc04f7c: 3c0c3c0b extu s8,s8,15,0 + 3bc04f80: 4124893b subw s2,s1,s2 + 3bc04f84: 428d li t0,3 + 3bc04f86: b399 j 3bc04ccc + 3bc04f88: 0053d39b srliw t2,t2,0x5 + 3bc04f8c: 407b8bbb subw s7,s7,t2 + 3bc04f90: 9f85 subw a5,a5,s1 + 3bc04f92: 3c0bbb8b extu s7,s7,15,0 + 3bc04f96: 001d829b addiw t0,s11,1 + 3bc04f9a: 409904bb subw s1,s2,s1 + 3bc04f9e: bb41 j 3bc04d2e + 3bc04fa0: 0053d39b srliw t2,t2,0x5 + 3bc04fa4: 407c8cbb subw s9,s9,t2 + 3bc04fa8: 412787bb subw a5,a5,s2 + 3bc04fac: 3c0cbc8b extu s9,s9,15,0 + 3bc04fb0: 2b85 addiw s7,s7,1 + 3bc04fb2: 4124893b subw s2,s1,s2 + 3bc04fb6: bbe9 j 3bc04d90 + 3bc04fb8: 0052d29b srliw t0,t0,0x5 + 3bc04fbc: 405383bb subw t2,t2,t0 + 3bc04fc0: 9f85 subw a5,a5,s1 + 3bc04fc2: 3c03b38b extu t2,t2,15,0 + 3bc04fc6: 2b85 addiw s7,s7,1 + 3bc04fc8: 409904bb subw s1,s2,s1 + 3bc04fcc: b515 j 3bc04df0 + 3bc04fce: 0052d29b srliw t0,t0,0x5 + 3bc04fd2: 4059093b subw s2,s2,t0 + 3bc04fd6: 407787bb subw a5,a5,t2 + 3bc04fda: 3c09390b extu s2,s2,15,0 + 3bc04fde: 2b85 addiw s7,s7,1 + 3bc04fe0: 407483bb subw t2,s1,t2 + 3bc04fe4: b5bd j 3bc04e52 + 3bc04fe6: 0052d29b srliw t0,t0,0x5 + 3bc04fea: 405484bb subw s1,s1,t0 + 3bc04fee: 412787bb subw a5,a5,s2 + 3bc04ff2: 3c04b48b extu s1,s1,15,0 + 3bc04ff6: 2b85 addiw s7,s7,1 + 3bc04ff8: 4123893b subw s2,t2,s2 + 3bc04ffc: bd65 j 3bc04eb4 + 3bc04ffe: 0052d29b srliw t0,t0,0x5 + 3bc05002: 405b0b3b subw s6,s6,t0 + 3bc05006: 407787bb subw a5,a5,t2 + 3bc0500a: 3c0b3b0b extu s6,s6,15,0 + 3bc0500e: 2c85 addiw s9,s9,1 + 3bc05010: 407903bb subw t2,s2,t2 + 3bc05014: b709 j 3bc04f16 + 3bc05016: 005ede9b srliw t4,t4,0x5 + 3bc0501a: 41db0ebb subw t4,s6,t4 + 3bc0501e: 9f91 subw a5,a5,a2 + 3bc05020: 01d91023 sh t4,0(s2) + 3bc05024: 2485 addiw s1,s1,1 + 3bc05026: 40c3863b subw a2,t2,a2 + 3bc0502a: bea1 j 3bc04b82 + 3bc0502c: 0053d39b srliw t2,t2,0x5 + 3bc05030: 407b03bb subw t2,s6,t2 + 3bc05034: 2175d38b srh t2,a1,s7,0 + 3bc05038: 7c08bb8b extu s7,a7,31,0 + 3bc0503c: 0bc1 addi s7,s7,16 + 3bc0503e: a375cc0b lrhu s8,a1,s7,1 + 3bc05042: 409604bb subw s1,a2,s1 + 3bc05046: 405787bb subw a5,a5,t0 + 3bc0504a: 001b9b13 slli s6,s7,0x1 + 3bc0504e: 000c039b sext.w t2,s8 + 3bc05052: 00d4fa63 bgeu s1,a3,3bc05066 + 3bc05056: 0087929b slliw t0,a5,0x8 + 3bc0505a: 9817478b lbuia a5,(a4),1,0 + 3bc0505e: 0084949b slliw s1,s1,0x8 + 3bc05062: 0057e7b3 or a5,a5,t0 + 3bc05066: 00b4d29b srliw t0,s1,0xb + 3bc0506a: 0272863b mulw a2,t0,t2 + 3bc0506e: 36c7ff63 bgeu a5,a2,3bc053ec + 3bc05072: 407403bb subw t2,s0,t2 + 3bc05076: 0053d39b srliw t2,t2,0x5 + 3bc0507a: 62c6 ld t0,80(sp) + 3bc0507c: 018383bb addw t2,t2,s8 + 3bc05080: 2375d38b srh t2,a1,s7,1 + 3bc05084: 28b1 addiw a7,a7,12 + 3bc05086: 8b7e mv s6,t6 + 3bc05088: 0002d383 lhu t2,0(t0) + 3bc0508c: 00038f9b sext.w t6,t2 + 3bc05090: 00d67a63 bgeu a2,a3,3bc050a4 + 3bc05094: 9817430b lbuia t1,(a4),1,0 + 3bc05098: 0087979b slliw a5,a5,0x8 + 3bc0509c: 0086161b slliw a2,a2,0x8 + 3bc050a0: 00f367b3 or a5,t1,a5 + 3bc050a4: 00b6531b srliw t1,a2,0xb + 3bc050a8: 03f304bb mulw s1,t1,t6 + 3bc050ac: 8326 mv t1,s1 + 3bc050ae: 5297f663 bgeu a5,s1,3bc055da + 3bc050b2: 41f40fbb subw t6,s0,t6 + 3bc050b6: 005fdf9b srliw t6,t6,0x5 + 3bc050ba: 7c0ebe8b extu t4,t4,31,0 + 3bc050be: 007f8fbb addw t6,t6,t2 + 3bc050c2: 01f29023 sh t6,0(t0) + 3bc050c6: 03d2928b addsl t0,t0,t4,1 + 3bc050ca: 0022de83 lhu t4,2(t0) + 3bc050ce: 000e861b sext.w a2,t4 + 3bc050d2: 00d4fa63 bgeu s1,a3,3bc050e6 + 3bc050d6: 9817430b lbuia t1,(a4),1,0 + 3bc050da: 0087979b slliw a5,a5,0x8 + 3bc050de: 0084949b slliw s1,s1,0x8 + 3bc050e2: 00f367b3 or a5,t1,a5 + 3bc050e6: 00b4d31b srliw t1,s1,0xb + 3bc050ea: 02c30fbb mulw t6,t1,a2 + 3bc050ee: 4bf7f263 bgeu a5,t6,3bc05592 + 3bc050f2: 40c4063b subw a2,s0,a2 + 3bc050f6: 0056561b srliw a2,a2,0x5 + 3bc050fa: 01d60ebb addw t4,a2,t4 + 3bc050fe: 3c0ebe8b extu t4,t4,15,0 + 3bc05102: 4309 li t1,2 + 3bc05104: 01d29123 sh t4,2(t0) + 3bc05108: b262c38b lurhu t2,t0,t1,1 + 3bc0510c: 7c03390b extu s2,t1,31,0 + 3bc05110: 0003861b sext.w a2,t2 + 3bc05114: 00dffa63 bgeu t6,a3,3bc05128 + 3bc05118: 98174e8b lbuia t4,(a4),1,0 + 3bc0511c: 0087979b slliw a5,a5,0x8 + 3bc05120: 008f9f9b slliw t6,t6,0x8 + 3bc05124: 00fee7b3 or a5,t4,a5 + 3bc05128: 00bfd49b srliw s1,t6,0xb + 3bc0512c: 02c48ebb mulw t4,s1,a2 + 3bc05130: 00131b9b slliw s7,t1,0x1 + 3bc05134: 0306 slli t1,t1,0x1 + 3bc05136: 47d7fa63 bgeu a5,t4,3bc055aa + 3bc0513a: 40c4063b subw a2,s0,a2 + 3bc0513e: 0056561b srliw a2,a2,0x5 + 3bc05142: 007603bb addw t2,a2,t2 + 3bc05146: 3c03b38b extu t2,t2,15,0 + 3bc0514a: 2322d38b srh t2,t0,s2,1 + 3bc0514e: b262c38b lurhu t2,t0,t1,1 + 3bc05152: 7c033b8b extu s7,t1,31,0 + 3bc05156: 00038f9b sext.w t6,t2 + 3bc0515a: 00def963 bgeu t4,a3,3bc0516c + 3bc0515e: 9817460b lbuia a2,(a4),1,0 + 3bc05162: 0087979b slliw a5,a5,0x8 + 3bc05166: 008e9e9b slliw t4,t4,0x8 + 3bc0516a: 8fd1 or a5,a5,a2 + 3bc0516c: 00bed91b srliw s2,t4,0xb + 3bc05170: 03f9063b mulw a2,s2,t6 + 3bc05174: 0013131b slliw t1,t1,0x1 + 3bc05178: 44c7f663 bgeu a5,a2,3bc055c4 + 3bc0517c: 41f40fbb subw t6,s0,t6 + 3bc05180: 005fdf9b srliw t6,t6,0x5 + 3bc05184: 007f83bb addw t2,t6,t2 + 3bc05188: 3c03b38b extu t2,t2,15,0 + 3bc0518c: 2372d38b srh t2,t0,s7,1 + 3bc05190: 3361 addiw t1,t1,-8 + 3bc05192: 44ad li s1,11 + 3bc05194: 1114f5e3 bgeu s1,a7,3bc05a9e + 3bc05198: 448d li s1,3 + 3bc0519a: 8f9a mv t6,t1 + 3bc0519c: 0064f363 bgeu s1,t1,3bc051a2 + 3bc051a0: 4f8d li t6,3 + 3bc051a2: 006f9f9b slliw t6,t6,0x6 + 3bc051a6: 040f8f9b addiw t6,t6,64 + 3bc051aa: 7c0fbf8b extu t6,t6,31,0 + 3bc051ae: 03f59f8b addsl t6,a1,t6,1 + 3bc051b2: 002fd383 lhu t2,2(t6) + 3bc051b6: 00038e9b sext.w t4,t2 + 3bc051ba: 00d67a63 bgeu a2,a3,3bc051ce + 3bc051be: 9817428b lbuia t0,(a4),1,0 + 3bc051c2: 0087979b slliw a5,a5,0x8 + 3bc051c6: 0086161b slliw a2,a2,0x8 + 3bc051ca: 00f2e7b3 or a5,t0,a5 + 3bc051ce: 00b6549b srliw s1,a2,0xb + 3bc051d2: 03d482bb mulw t0,s1,t4 + 3bc051d6: 5e57f763 bgeu a5,t0,3bc057c4 + 3bc051da: 41d40ebb subw t4,s0,t4 + 3bc051de: 005ede9b srliw t4,t4,0x5 + 3bc051e2: 007e83bb addw t2,t4,t2 + 3bc051e6: 3c03b38b extu t2,t2,15,0 + 3bc051ea: 4609 li a2,2 + 3bc051ec: 007f9123 sh t2,2(t6) + 3bc051f0: b2cfc48b lurhu s1,t6,a2,1 + 3bc051f4: 7c063b8b extu s7,a2,31,0 + 3bc051f8: 00048e9b sext.w t4,s1 + 3bc051fc: 00d2fa63 bgeu t0,a3,3bc05210 + 3bc05200: 9817438b lbuia t2,(a4),1,0 + 3bc05204: 0087979b slliw a5,a5,0x8 + 3bc05208: 0082929b slliw t0,t0,0x8 + 3bc0520c: 00f3e7b3 or a5,t2,a5 + 3bc05210: 00b2d91b srliw s2,t0,0xb + 3bc05214: 03d903bb mulw t2,s2,t4 + 3bc05218: 00161c1b slliw s8,a2,0x1 + 3bc0521c: 0606 slli a2,a2,0x1 + 3bc0521e: 5a77ff63 bgeu a5,t2,3bc057dc + 3bc05222: 41d40ebb subw t4,s0,t4 + 3bc05226: 005ede9b srliw t4,t4,0x5 + 3bc0522a: 009e84bb addw s1,t4,s1 + 3bc0522e: 3c04b48b extu s1,s1,15,0 + 3bc05232: 237fd48b srh s1,t6,s7,1 + 3bc05236: b2cfc48b lurhu s1,t6,a2,1 + 3bc0523a: 7c063c0b extu s8,a2,31,0 + 3bc0523e: 00048e9b sext.w t4,s1 + 3bc05242: 00d3fa63 bgeu t2,a3,3bc05256 + 3bc05246: 9817428b lbuia t0,(a4),1,0 + 3bc0524a: 0087979b slliw a5,a5,0x8 + 3bc0524e: 0083939b slliw t2,t2,0x8 + 3bc05252: 00f2e7b3 or a5,t0,a5 + 3bc05256: 00b3db9b srliw s7,t2,0xb + 3bc0525a: 03db82bb mulw t0,s7,t4 + 3bc0525e: 0016191b slliw s2,a2,0x1 + 3bc05262: 5857fa63 bgeu a5,t0,3bc057f6 + 3bc05266: 41d40ebb subw t4,s0,t4 + 3bc0526a: 005ede9b srliw t4,t4,0x5 + 3bc0526e: 009e84bb addw s1,t4,s1 + 3bc05272: 3c04b48b extu s1,s1,15,0 + 3bc05276: 238fd48b srh s1,t6,s8,1 + 3bc0527a: b32fc38b lurhu t2,t6,s2,1 + 3bc0527e: 7c093c0b extu s8,s2,31,0 + 3bc05282: 0003861b sext.w a2,t2 + 3bc05286: 00d2fa63 bgeu t0,a3,3bc0529a + 3bc0528a: 98174e8b lbuia t4,(a4),1,0 + 3bc0528e: 0087979b slliw a5,a5,0x8 + 3bc05292: 0082929b slliw t0,t0,0x8 + 3bc05296: 00fee7b3 or a5,t4,a5 + 3bc0529a: 00b2db9b srliw s7,t0,0xb + 3bc0529e: 02cb8ebb mulw t4,s7,a2 + 3bc052a2: 0019149b slliw s1,s2,0x1 + 3bc052a6: 57d7f463 bgeu a5,t4,3bc0580e + 3bc052aa: 40c4063b subw a2,s0,a2 + 3bc052ae: 0056561b srliw a2,a2,0x5 + 3bc052b2: 007603bb addw t2,a2,t2 + 3bc052b6: 3c03b38b extu t2,t2,15,0 + 3bc052ba: 238fd38b srh t2,t6,s8,1 + 3bc052be: b29fc28b lurhu t0,t6,s1,1 + 3bc052c2: 7c04bc0b extu s8,s1,31,0 + 3bc052c6: 0002861b sext.w a2,t0 + 3bc052ca: 00defa63 bgeu t4,a3,3bc052de + 3bc052ce: 9817438b lbuia t2,(a4),1,0 + 3bc052d2: 0087979b slliw a5,a5,0x8 + 3bc052d6: 008e9e9b slliw t4,t4,0x8 + 3bc052da: 00f3e7b3 or a5,t2,a5 + 3bc052de: 00bedb9b srliw s7,t4,0xb + 3bc052e2: 02cb83bb mulw t2,s7,a2 + 3bc052e6: 0014991b slliw s2,s1,0x1 + 3bc052ea: 5277fe63 bgeu a5,t2,3bc05826 + 3bc052ee: 40c4063b subw a2,s0,a2 + 3bc052f2: 0056561b srliw a2,a2,0x5 + 3bc052f6: 005602bb addw t0,a2,t0 + 3bc052fa: 3c02b28b extu t0,t0,15,0 + 3bc052fe: 238fd28b srh t0,t6,s8,1 + 3bc05302: b32fc48b lurhu s1,t6,s2,1 + 3bc05306: 7c093c0b extu s8,s2,31,0 + 3bc0530a: 0004829b sext.w t0,s1 + 3bc0530e: 00d3f963 bgeu t2,a3,3bc05320 + 3bc05312: 9817460b lbuia a2,(a4),1,0 + 3bc05316: 0087979b slliw a5,a5,0x8 + 3bc0531a: 0083939b slliw t2,t2,0x8 + 3bc0531e: 8fd1 or a5,a5,a2 + 3bc05320: 00b3db9b srliw s7,t2,0xb + 3bc05324: 025b863b mulw a2,s7,t0 + 3bc05328: 00191e9b slliw t4,s2,0x1 + 3bc0532c: 50c7f963 bgeu a5,a2,3bc0583e + 3bc05330: 405402bb subw t0,s0,t0 + 3bc05334: 0052d29b srliw t0,t0,0x5 + 3bc05338: 009284bb addw s1,t0,s1 + 3bc0533c: 3c04b48b extu s1,s1,15,0 + 3bc05340: fc0e8e9b addiw t4,t4,-64 + 3bc05344: 238fd48b srh s1,t6,s8,1 + 3bc05348: 000e839b sext.w t2,t4 + 3bc0534c: 448d li s1,3 + 3bc0534e: 0874f063 bgeu s1,t2,3bc053ce + 3bc05352: 001eff93 andi t6,t4,1 + 3bc05356: 44b5 li s1,13 + 3bc05358: 001ed29b srliw t0,t4,0x1 + 3bc0535c: 002fef93 ori t6,t6,2 + 3bc05360: 5074e963 bltu s1,t2,3bc05872 + 3bc05364: 32fd addiw t0,t0,-1 + 3bc05366: 005f9fbb sllw t6,t6,t0 + 3bc0536a: 2f85 addiw t6,t6,1 + 3bc0536c: 4c05 li s8,1 + 3bc0536e: 020f9493 slli s1,t6,0x20 + 3bc05372: 01f4db93 srli s7,s1,0x1f + 3bc05376: 74fd lui s1,0xfffff + 3bc05378: 30048493 addi s1,s1,768 # fffffffffffff300 <__BL2_END__+0xffffffffc43ebef0> + 3bc0537c: 9ba6 add s7,s7,s1 + 3bc0537e: a175c48b lrhu s1,a1,s7,0 + 3bc05382: 0004839b sext.w t2,s1 + 3bc05386: 00d67a63 bgeu a2,a3,3bc0539a + 3bc0538a: 98174e8b lbuia t4,(a4),1,0 + 3bc0538e: 0087979b slliw a5,a5,0x8 + 3bc05392: 0086161b slliw a2,a2,0x8 + 3bc05396: 00fee7b3 or a5,t4,a5 + 3bc0539a: 00b6591b srliw s2,a2,0xb + 3bc0539e: 02790d3b mulw s10,s2,t2 + 3bc053a2: 001c1e9b slliw t4,s8,0x1 + 3bc053a6: 4ba7f963 bgeu a5,s10,3bc05858 + 3bc053aa: 407403bb subw t2,s0,t2 + 3bc053ae: 0053d39b srliw t2,t2,0x5 + 3bc053b2: 009384bb addw s1,t2,s1 + 3bc053b6: 3c04b48b extu s1,s1,15,0 + 3bc053ba: 018f8fbb addw t6,t6,s8 + 3bc053be: 866a mv a2,s10 + 3bc053c0: 2175d48b srh s1,a1,s7,0 + 3bc053c4: 32fd addiw t0,t0,-1 + 3bc053c6: 48029763 bnez t0,3bc05854 + 3bc053ca: 41df83bb subw t2,t6,t4 + 3bc053ce: 44c9 li s1,18 + 3bc053d0: 00138f9b addiw t6,t2,1 + 3bc053d4: 6d14f363 bgeu s1,a7,3bc05a9a + 3bc053d8: 48a9 li a7,10 + 3bc053da: 6ee2 ld t4,24(sp) + 3bc053dc: 41de1e8b mveqz t4,t3,t4 + 3bc053e0: 73d3e063 bltu t2,t4,3bc05b00 + 3bc053e4: 03053423 sd a6,40(a0) + 3bc053e8: c24ff06f j 3bc0480c + 3bc053ec: 0053d39b srliw t2,t2,0x5 + 3bc053f0: 407c03bb subw t2,s8,t2 + 3bc053f4: 2375d38b srh t2,a1,s7,1 + 3bc053f8: 018b0c13 addi s8,s6,24 + 3bc053fc: a185cb8b lrhu s7,a1,s8,0 + 3bc05400: 40c48cbb subw s9,s1,a2 + 3bc05404: 9f91 subw a5,a5,a2 + 3bc05406: 000b839b sext.w t2,s7 + 3bc0540a: 00dcfa63 bgeu s9,a3,3bc0541e + 3bc0540e: 0087929b slliw t0,a5,0x8 + 3bc05412: 9817478b lbuia a5,(a4),1,0 + 3bc05416: 008c9c9b slliw s9,s9,0x8 + 3bc0541a: 0057e7b3 or a5,a5,t0 + 3bc0541e: 00bcd61b srliw a2,s9,0xb + 3bc05422: 027602bb mulw t0,a2,t2 + 3bc05426: 8616 mv a2,t0 + 3bc05428: 0a57f463 bgeu a5,t0,3bc054d0 + 3bc0542c: 407403bb subw t2,s0,t2 + 3bc05430: 0053d39b srliw t2,t2,0x5 + 3bc05434: 74fd lui s1,0xfffff + 3bc05436: 017383bb addw t2,t2,s7 + 3bc0543a: 40048493 addi s1,s1,1024 # fffffffffffff400 <__BL2_END__+0xffffffffc43ebff0> + 3bc0543e: 2185d38b srh t2,a1,s8,0 + 3bc05442: 9926 add s2,s2,s1 + 3bc05444: a125c48b lrhu s1,a1,s2,0 + 3bc05448: 0004839b sext.w t2,s1 + 3bc0544c: 00d2f963 bgeu t0,a3,3bc0545e + 3bc05450: 9817460b lbuia a2,(a4),1,0 + 3bc05454: 0087979b slliw a5,a5,0x8 + 3bc05458: 0082929b slliw t0,t0,0x8 + 3bc0545c: 8fd1 or a5,a5,a2 + 3bc0545e: 00b2db1b srliw s6,t0,0xb + 3bc05462: 027b063b mulw a2,s6,t2 + 3bc05466: 8b32 mv s6,a2 + 3bc05468: 02c7ff63 bgeu a5,a2,3bc054a6 + 3bc0546c: 407403bb subw t2,s0,t2 + 3bc05470: 0053d39b srliw t2,t2,0x5 + 3bc05474: 009383bb addw t2,t2,s1 + 3bc05478: 2125d38b srh t2,a1,s2,0 + 3bc0547c: 7c0fb38b extu t2,t6,31,0 + 3bc05480: 40780eb3 sub t4,a6,t2 + 3bc05484: 82d6 mv t0,s5 + 3bc05486: 00786363 bltu a6,t2,3bc0548c + 3bc0548a: 4281 li t0,0 + 3bc0548c: 9ed2 add t4,t4,s4 + 3bc0548e: 805ece8b lrbu t4,t4,t0,0 + 3bc05492: 2e05 addiw t3,t3,1 + 3bc05494: 010a5e8b srb t4,s4,a6,0 + 3bc05498: 4e99 li t4,6 + 3bc0549a: 0805 addi a6,a6,1 + 3bc0549c: 691ef963 bgeu t4,a7,3bc05b2e + 3bc054a0: 48ad li a7,11 + 3bc054a2: ee6ff06f j 3bc04b88 + 3bc054a6: 0053d39b srliw t2,t2,0x5 + 3bc054aa: 837a mv t1,t5 + 3bc054ac: 407483bb subw t2,s1,t2 + 3bc054b0: 8f7e mv t5,t6 + 3bc054b2: 40c2863b subw a2,t0,a2 + 3bc054b6: 416787bb subw a5,a5,s6 + 3bc054ba: 2125d38b srh t2,a1,s2,0 + 3bc054be: 8f9a mv t6,t1 + 3bc054c0: 4319 li t1,6 + 3bc054c2: 0d137663 bgeu t1,a7,3bc0558e + 3bc054c6: 48ad li a7,11 + 3bc054c8: 8b7a mv s6,t5 + 3bc054ca: 62a6 ld t0,72(sp) + 3bc054cc: 8f7e mv t5,t6 + 3bc054ce: be6d j 3bc05088 + 3bc054d0: 0053d39b srliw t2,t2,0x5 + 3bc054d4: 407b83bb subw t2,s7,t2 + 3bc054d8: 2185d38b srh t2,a1,s8,0 + 3bc054dc: 030b0493 addi s1,s6,48 + 3bc054e0: a095c38b lrhu t2,a1,s1,0 + 3bc054e4: 405c82bb subw t0,s9,t0 + 3bc054e8: 9f91 subw a5,a5,a2 + 3bc054ea: 0003831b sext.w t1,t2 + 3bc054ee: 00d2f963 bgeu t0,a3,3bc05500 + 3bc054f2: 0087961b slliw a2,a5,0x8 + 3bc054f6: 9817478b lbuia a5,(a4),1,0 + 3bc054fa: 0082929b slliw t0,t0,0x8 + 3bc054fe: 8fd1 or a5,a5,a2 + 3bc05500: 00b2d91b srliw s2,t0,0xb + 3bc05504: 0269063b mulw a2,s2,t1 + 3bc05508: 00c7fb63 bgeu a5,a2,3bc0551e + 3bc0550c: 4064033b subw t1,s0,t1 + 3bc05510: 0053531b srliw t1,t1,0x5 + 3bc05514: 0073033b addw t1,t1,t2 + 3bc05518: 2095d30b srh t1,a1,s1,0 + 3bc0551c: b755 j 3bc054c0 + 3bc0551e: 0053531b srliw t1,t1,0x5 + 3bc05522: 4063833b subw t1,t2,t1 + 3bc05526: 2095d30b srh t1,a1,s1,0 + 3bc0552a: 048b0b13 addi s6,s6,72 + 3bc0552e: a165c38b lrhu t2,a1,s6,0 + 3bc05532: 40c28bbb subw s7,t0,a2 + 3bc05536: 9f91 subw a5,a5,a2 + 3bc05538: 0003831b sext.w t1,t2 + 3bc0553c: 00dbfa63 bgeu s7,a3,3bc05550 + 3bc05540: 0087991b slliw s2,a5,0x8 + 3bc05544: 9817478b lbuia a5,(a4),1,0 + 3bc05548: 008b9b9b slliw s7,s7,0x8 + 3bc0554c: 0127e7b3 or a5,a5,s2 + 3bc05550: 00bbd29b srliw t0,s7,0xb + 3bc05554: 0262863b mulw a2,t0,t1 + 3bc05558: 00c7fe63 bgeu a5,a2,3bc05574 + 3bc0555c: 4064033b subw t1,s0,t1 + 3bc05560: 0053531b srliw t1,t1,0x5 + 3bc05564: 0073033b addw t1,t1,t2 + 3bc05568: 2165d30b srh t1,a1,s6,0 + 3bc0556c: 837a mv t1,t5 + 3bc0556e: 8f4e mv t5,s3 + 3bc05570: 899a mv s3,t1 + 3bc05572: b7b9 j 3bc054c0 + 3bc05574: 0053531b srliw t1,t1,0x5 + 3bc05578: 4063833b subw t1,t2,t1 + 3bc0557c: 9f91 subw a5,a5,a2 + 3bc0557e: 2165d30b srh t1,a1,s6,0 + 3bc05582: 40cb863b subw a2,s7,a2 + 3bc05586: 837a mv t1,t5 + 3bc05588: 7f02 ld t5,32(sp) + 3bc0558a: f04e sd s3,32(sp) + 3bc0558c: b7d5 j 3bc05570 + 3bc0558e: 48a1 li a7,8 + 3bc05590: bf25 j 3bc054c8 + 3bc05592: 0056561b srliw a2,a2,0x5 + 3bc05596: 40ce8ebb subw t4,t4,a2 + 3bc0559a: 41f787bb subw a5,a5,t6 + 3bc0559e: 3c0ebe8b extu t4,t4,15,0 + 3bc055a2: 41f48fbb subw t6,s1,t6 + 3bc055a6: 430d li t1,3 + 3bc055a8: beb1 j 3bc05104 + 3bc055aa: 0056561b srliw a2,a2,0x5 + 3bc055ae: 40c383bb subw t2,t2,a2 + 3bc055b2: 41d787bb subw a5,a5,t4 + 3bc055b6: 3c03b38b extu t2,t2,15,0 + 3bc055ba: 001b831b addiw t1,s7,1 + 3bc055be: 41df8ebb subw t4,t6,t4 + 3bc055c2: b661 j 3bc0514a + 3bc055c4: 005fdf9b srliw t6,t6,0x5 + 3bc055c8: 41f383bb subw t2,t2,t6 + 3bc055cc: 9f91 subw a5,a5,a2 + 3bc055ce: 3c03b38b extu t2,t2,15,0 + 3bc055d2: 2305 addiw t1,t1,1 + 3bc055d4: 40ce863b subw a2,t4,a2 + 3bc055d8: be55 j 3bc0518c + 3bc055da: 005fdf9b srliw t6,t6,0x5 + 3bc055de: 41f38fbb subw t6,t2,t6 + 3bc055e2: 0102d383 lhu t2,16(t0) + 3bc055e6: 01f29023 sh t6,0(t0) + 3bc055ea: 9e05 subw a2,a2,s1 + 3bc055ec: 406787bb subw a5,a5,t1 + 3bc055f0: 00038f9b sext.w t6,t2 + 3bc055f4: 00d67a63 bgeu a2,a3,3bc05608 + 3bc055f8: 0087931b slliw t1,a5,0x8 + 3bc055fc: 9817478b lbuia a5,(a4),1,0 + 3bc05600: 0086161b slliw a2,a2,0x8 + 3bc05604: 0067e7b3 or a5,a5,t1 + 3bc05608: 00b6531b srliw t1,a2,0xb + 3bc0560c: 03f304bb mulw s1,t1,t6 + 3bc05610: 1297f563 bgeu a5,s1,3bc0573a + 3bc05614: 41f40fbb subw t6,s0,t6 + 3bc05618: 005fdf9b srliw t6,t6,0x5 + 3bc0561c: 7c0ebe8b extu t4,t4,31,0 + 3bc05620: 007f8fbb addw t6,t6,t2 + 3bc05624: 0ea1 addi t4,t4,8 + 3bc05626: 01f29823 sh t6,16(t0) + 3bc0562a: 03d2928b addsl t0,t0,t4,1 + 3bc0562e: 0022df83 lhu t6,2(t0) + 3bc05632: 000f861b sext.w a2,t6 + 3bc05636: 00d4fa63 bgeu s1,a3,3bc0564a + 3bc0563a: 9817430b lbuia t1,(a4),1,0 + 3bc0563e: 0087979b slliw a5,a5,0x8 + 3bc05642: 0084949b slliw s1,s1,0x8 + 3bc05646: 00f367b3 or a5,t1,a5 + 3bc0564a: 00b4d31b srliw t1,s1,0xb + 3bc0564e: 02c30ebb mulw t4,t1,a2 + 3bc05652: 0bd7f063 bgeu a5,t4,3bc056f2 + 3bc05656: 40c4063b subw a2,s0,a2 + 3bc0565a: 0056561b srliw a2,a2,0x5 + 3bc0565e: 01f60fbb addw t6,a2,t6 + 3bc05662: 3c0fbf8b extu t6,t6,15,0 + 3bc05666: 4309 li t1,2 + 3bc05668: 01f29123 sh t6,2(t0) + 3bc0566c: b262c38b lurhu t2,t0,t1,1 + 3bc05670: 7c03390b extu s2,t1,31,0 + 3bc05674: 0003861b sext.w a2,t2 + 3bc05678: 00defa63 bgeu t4,a3,3bc0568c + 3bc0567c: 98174f8b lbuia t6,(a4),1,0 + 3bc05680: 0087979b slliw a5,a5,0x8 + 3bc05684: 008e9e9b slliw t4,t4,0x8 + 3bc05688: 00ffe7b3 or a5,t6,a5 + 3bc0568c: 00bed49b srliw s1,t4,0xb + 3bc05690: 02c48fbb mulw t6,s1,a2 + 3bc05694: 00131b9b slliw s7,t1,0x1 + 3bc05698: 0306 slli t1,t1,0x1 + 3bc0569a: 07f7f863 bgeu a5,t6,3bc0570a + 3bc0569e: 40c4063b subw a2,s0,a2 + 3bc056a2: 0056561b srliw a2,a2,0x5 + 3bc056a6: 007603bb addw t2,a2,t2 + 3bc056aa: 3c03b38b extu t2,t2,15,0 + 3bc056ae: 2322d38b srh t2,t0,s2,1 + 3bc056b2: b262c48b lurhu s1,t0,t1,1 + 3bc056b6: 7c03390b extu s2,t1,31,0 + 3bc056ba: 00048e9b sext.w t4,s1 + 3bc056be: 00dff963 bgeu t6,a3,3bc056d0 + 3bc056c2: 9817460b lbuia a2,(a4),1,0 + 3bc056c6: 0087979b slliw a5,a5,0x8 + 3bc056ca: 008f9f9b slliw t6,t6,0x8 + 3bc056ce: 8fd1 or a5,a5,a2 + 3bc056d0: 00bfd39b srliw t2,t6,0xb + 3bc056d4: 03d3863b mulw a2,t2,t4 + 3bc056d8: 0013131b slliw t1,t1,0x1 + 3bc056dc: 04c7f463 bgeu a5,a2,3bc05724 + 3bc056e0: 41d40ebb subw t4,s0,t4 + 3bc056e4: 005ede9b srliw t4,t4,0x5 + 3bc056e8: 009e8ebb addw t4,t4,s1 + 3bc056ec: 2322de8b srh t4,t0,s2,1 + 3bc056f0: b44d j 3bc05192 + 3bc056f2: 0056561b srliw a2,a2,0x5 + 3bc056f6: 40cf8fbb subw t6,t6,a2 + 3bc056fa: 41d787bb subw a5,a5,t4 + 3bc056fe: 3c0fbf8b extu t6,t6,15,0 + 3bc05702: 41d48ebb subw t4,s1,t4 + 3bc05706: 430d li t1,3 + 3bc05708: b785 j 3bc05668 + 3bc0570a: 0056561b srliw a2,a2,0x5 + 3bc0570e: 40c383bb subw t2,t2,a2 + 3bc05712: 41f787bb subw a5,a5,t6 + 3bc05716: 3c03b38b extu t2,t2,15,0 + 3bc0571a: 001b831b addiw t1,s7,1 + 3bc0571e: 41fe8fbb subw t6,t4,t6 + 3bc05722: b771 j 3bc056ae + 3bc05724: 005ede9b srliw t4,t4,0x5 + 3bc05728: 41d48ebb subw t4,s1,t4 + 3bc0572c: 9f91 subw a5,a5,a2 + 3bc0572e: 2322de8b srh t4,t0,s2,1 + 3bc05732: 2305 addiw t1,t1,1 + 3bc05734: 40cf863b subw a2,t6,a2 + 3bc05738: bca9 j 3bc05192 + 3bc0573a: 005fdf9b srliw t6,t6,0x5 + 3bc0573e: 41f38fbb subw t6,t2,t6 + 3bc05742: 9e05 subw a2,a2,s1 + 3bc05744: 9f85 subw a5,a5,s1 + 3bc05746: 01f29823 sh t6,16(t0) + 3bc0574a: 4305 li t1,1 + 3bc0574c: 0ff00b93 li s7,255 + 3bc05750: 02031493 slli s1,t1,0x20 + 3bc05754: 01f4de93 srli t4,s1,0x1f + 3bc05758: 200e8e93 addi t4,t4,512 + 3bc0575c: a1d2cf8b lrhu t6,t0,t4,0 + 3bc05760: 01d28c33 add s8,t0,t4 + 3bc05764: 000f8e9b sext.w t4,t6 + 3bc05768: 00d67a63 bgeu a2,a3,3bc0577c + 3bc0576c: 9817438b lbuia t2,(a4),1,0 + 3bc05770: 0087979b slliw a5,a5,0x8 + 3bc05774: 0086161b slliw a2,a2,0x8 + 3bc05778: 00f3e7b3 or a5,t2,a5 + 3bc0577c: 00b6539b srliw t2,a2,0xb + 3bc05780: 03d3893b mulw s2,t2,t4 + 3bc05784: 0013131b slliw t1,t1,0x1 + 3bc05788: 0327f263 bgeu a5,s2,3bc057ac + 3bc0578c: 41d40ebb subw t4,s0,t4 + 3bc05790: 005ede9b srliw t4,t4,0x5 + 3bc05794: 01fe8fbb addw t6,t4,t6 + 3bc05798: 3c0fbf8b extu t6,t6,15,0 + 3bc0579c: 864a mv a2,s2 + 3bc0579e: 01fc1023 sh t6,0(s8) + 3bc057a2: fa6bf7e3 bgeu s7,t1,3bc05750 + 3bc057a6: f103031b addiw t1,t1,-240 + 3bc057aa: b2e5 j 3bc05192 + 3bc057ac: 005ede9b srliw t4,t4,0x5 + 3bc057b0: 41df8fbb subw t6,t6,t4 + 3bc057b4: 4126063b subw a2,a2,s2 + 3bc057b8: 412787bb subw a5,a5,s2 + 3bc057bc: 3c0fbf8b extu t6,t6,15,0 + 3bc057c0: 2305 addiw t1,t1,1 + 3bc057c2: bff1 j 3bc0579e + 3bc057c4: 005ede9b srliw t4,t4,0x5 + 3bc057c8: 41d383bb subw t2,t2,t4 + 3bc057cc: 405787bb subw a5,a5,t0 + 3bc057d0: 3c03b38b extu t2,t2,15,0 + 3bc057d4: 405602bb subw t0,a2,t0 + 3bc057d8: 460d li a2,3 + 3bc057da: bc09 j 3bc051ec + 3bc057dc: 005ede9b srliw t4,t4,0x5 + 3bc057e0: 41d484bb subw s1,s1,t4 + 3bc057e4: 407787bb subw a5,a5,t2 + 3bc057e8: 3c04b48b extu s1,s1,15,0 + 3bc057ec: 001c061b addiw a2,s8,1 + 3bc057f0: 407283bb subw t2,t0,t2 + 3bc057f4: bc3d j 3bc05232 + 3bc057f6: 005ede9b srliw t4,t4,0x5 + 3bc057fa: 41d484bb subw s1,s1,t4 + 3bc057fe: 405787bb subw a5,a5,t0 + 3bc05802: 3c04b48b extu s1,s1,15,0 + 3bc05806: 2905 addiw s2,s2,1 + 3bc05808: 405382bb subw t0,t2,t0 + 3bc0580c: b4ad j 3bc05276 + 3bc0580e: 0056561b srliw a2,a2,0x5 + 3bc05812: 40c383bb subw t2,t2,a2 + 3bc05816: 41d787bb subw a5,a5,t4 + 3bc0581a: 3c03b38b extu t2,t2,15,0 + 3bc0581e: 2485 addiw s1,s1,1 + 3bc05820: 41d28ebb subw t4,t0,t4 + 3bc05824: bc59 j 3bc052ba + 3bc05826: 0056561b srliw a2,a2,0x5 + 3bc0582a: 40c282bb subw t0,t0,a2 + 3bc0582e: 407787bb subw a5,a5,t2 + 3bc05832: 3c02b28b extu t0,t0,15,0 + 3bc05836: 2905 addiw s2,s2,1 + 3bc05838: 407e83bb subw t2,t4,t2 + 3bc0583c: b4c9 j 3bc052fe + 3bc0583e: 0052d29b srliw t0,t0,0x5 + 3bc05842: 405484bb subw s1,s1,t0 + 3bc05846: 9f91 subw a5,a5,a2 + 3bc05848: 3c04b48b extu s1,s1,15,0 + 3bc0584c: 2e85 addiw t4,t4,1 + 3bc0584e: 40c3863b subw a2,t2,a2 + 3bc05852: b4fd j 3bc05340 + 3bc05854: 8c76 mv s8,t4 + 3bc05856: be21 j 3bc0536e + 3bc05858: 0053d39b srliw t2,t2,0x5 + 3bc0585c: 407484bb subw s1,s1,t2 + 3bc05860: 41a6063b subw a2,a2,s10 + 3bc05864: 41a787bb subw a5,a5,s10 + 3bc05868: 3c04b48b extu s1,s1,15,0 + 3bc0586c: 01fe8fbb addw t6,t4,t6 + 3bc05870: be81 j 3bc053c0 + 3bc05872: 32ed addiw t0,t0,-5 + 3bc05874: 00d67a63 bgeu a2,a3,3bc05888 + 3bc05878: 98174e8b lbuia t4,(a4),1,0 + 3bc0587c: 0087979b slliw a5,a5,0x8 + 3bc05880: 0086161b slliw a2,a2,0x8 + 3bc05884: 00fee7b3 or a5,t4,a5 + 3bc05888: 0016539b srliw t2,a2,0x1 + 3bc0588c: 407787bb subw a5,a5,t2 + 3bc05890: 41f7d49b sraiw s1,a5,0x1f + 3bc05894: 001f9f9b slliw t6,t6,0x1 + 3bc05898: 0003861b sext.w a2,t2 + 3bc0589c: 2f85 addiw t6,t6,1 + 3bc0589e: 0093f3b3 and t2,t2,s1 + 3bc058a2: 32fd addiw t0,t0,-1 + 3bc058a4: 01f48fbb addw t6,s1,t6 + 3bc058a8: 007787bb addw a5,a5,t2 + 3bc058ac: fc0294e3 bnez t0,3bc05874 + 3bc058b0: 0025d283 lhu t0,2(a1) + 3bc058b4: 004f9f9b slliw t6,t6,0x4 + 3bc058b8: 00028e9b sext.w t4,t0 + 3bc058bc: 00d67a63 bgeu a2,a3,3bc058d0 + 3bc058c0: 9817438b lbuia t2,(a4),1,0 + 3bc058c4: 0087979b slliw a5,a5,0x8 + 3bc058c8: 0086161b slliw a2,a2,0x8 + 3bc058cc: 00f3e7b3 or a5,t2,a5 + 3bc058d0: 00b6549b srliw s1,a2,0xb + 3bc058d4: 03d483bb mulw t2,s1,t4 + 3bc058d8: 1677f463 bgeu a5,t2,3bc05a40 + 3bc058dc: 41d40ebb subw t4,s0,t4 + 3bc058e0: 005ede9b srliw t4,t4,0x5 + 3bc058e4: 005e82bb addw t0,t4,t0 + 3bc058e8: 3c02b28b extu t0,t0,15,0 + 3bc058ec: 4e89 li t4,2 + 3bc058ee: 00559123 sh t0,2(a1) + 3bc058f2: b3d5c48b lurhu s1,a1,t4,1 + 3bc058f6: 7c0ebb8b extu s7,t4,31,0 + 3bc058fa: 0004861b sext.w a2,s1 + 3bc058fe: 00d3fa63 bgeu t2,a3,3bc05912 + 3bc05902: 9817428b lbuia t0,(a4),1,0 + 3bc05906: 0087979b slliw a5,a5,0x8 + 3bc0590a: 0083939b slliw t2,t2,0x8 + 3bc0590e: 00f2e7b3 or a5,t0,a5 + 3bc05912: 00b3d91b srliw s2,t2,0xb + 3bc05916: 02c902bb mulw t0,s2,a2 + 3bc0591a: 1257ff63 bgeu a5,t0,3bc05a58 + 3bc0591e: 40c4063b subw a2,s0,a2 + 3bc05922: 0056561b srliw a2,a2,0x5 + 3bc05926: 9cb1 addw s1,s1,a2 + 3bc05928: 3c04b48b extu s1,s1,15,0 + 3bc0592c: 0e89 addi t4,t4,2 + 3bc0592e: 2375d48b srh s1,a1,s7,1 + 3bc05932: b3d5cb8b lurhu s7,a1,t4,1 + 3bc05936: 7c0eb90b extu s2,t4,31,0 + 3bc0593a: 000b861b sext.w a2,s7 + 3bc0593e: 00d2fa63 bgeu t0,a3,3bc05952 + 3bc05942: 9817438b lbuia t2,(a4),1,0 + 3bc05946: 0087979b slliw a5,a5,0x8 + 3bc0594a: 0082929b slliw t0,t0,0x8 + 3bc0594e: 00f3e7b3 or a5,t2,a5 + 3bc05952: 00b2d49b srliw s1,t0,0xb + 3bc05956: 02c483bb mulw t2,s1,a2 + 3bc0595a: 1077fa63 bgeu a5,t2,3bc05a6e + 3bc0595e: 40c4063b subw a2,s0,a2 + 3bc05962: 0056561b srliw a2,a2,0x5 + 3bc05966: 01760bbb addw s7,a2,s7 + 3bc0596a: 3c0bbb8b extu s7,s7,15,0 + 3bc0596e: 2e91 addiw t4,t4,4 + 3bc05970: 2325db8b srh s7,a1,s2,1 + 3bc05974: b3d5c48b lurhu s1,a1,t4,1 + 3bc05978: 7c0ebb8b extu s7,t4,31,0 + 3bc0597c: 0004829b sext.w t0,s1 + 3bc05980: 00d3f963 bgeu t2,a3,3bc05992 + 3bc05984: 9817460b lbuia a2,(a4),1,0 + 3bc05988: 0087979b slliw a5,a5,0x8 + 3bc0598c: 0083939b slliw t2,t2,0x8 + 3bc05990: 8fd1 or a5,a5,a2 + 3bc05992: 00b3d91b srliw s2,t2,0xb + 3bc05996: 0259063b mulw a2,s2,t0 + 3bc0599a: 0ec7f663 bgeu a5,a2,3bc05a86 + 3bc0599e: 405402bb subw t0,s0,t0 + 3bc059a2: 0052d29b srliw t0,t0,0x5 + 3bc059a6: 009284bb addw s1,t0,s1 + 3bc059aa: 3c04b48b extu s1,s1,15,0 + 3bc059ae: 3ee1 addiw t4,t4,-8 + 3bc059b0: 01feefb3 or t6,t4,t6 + 3bc059b4: 2375d48b srh s1,a1,s7,1 + 3bc059b8: 000f839b sext.w t2,t6 + 3bc059bc: 54fd li s1,-1 + 3bc059be: a09398e3 bne t2,s1,3bc053ce + 3bc059c2: 38d1 addiw a7,a7,-12 + 3bc059c4: 8fda mv t6,s6 + 3bc059c6: 11200313 li t1,274 + 3bc059ca: 010006b7 lui a3,0x1000 + 3bc059ce: 00d67963 bgeu a2,a3,3bc059e0 + 3bc059d2: 9817468b lbuia a3,(a4),1,0 + 3bc059d6: 0087979b slliw a5,a5,0x8 + 3bc059da: 0086161b slliw a2,a2,0x8 + 3bc059de: 8fd5 or a5,a5,a3 + 3bc059e0: dd5c sw a5,60(a0) + 3bc059e2: 7782 ld a5,32(sp) + 3bc059e4: f918 sd a4,48(a0) + 3bc059e6: dd10 sw a2,56(a0) + 3bc059e8: c97c sw a5,84(a0) + 3bc059ea: 417c lw a5,68(a0) + 3bc059ec: 04652e23 sw t1,92(a0) + 3bc059f0: 03053423 sd a6,40(a0) + 3bc059f4: 05c52023 sw t3,64(a0) + 3bc059f8: 05f52423 sw t6,72(a0) + 3bc059fc: 05e52623 sw t5,76(a0) + 3bc05a00: 05352823 sw s3,80(a0) + 3bc05a04: 05152c23 sw a7,88(a0) + 3bc05a08: e789 bnez a5,3bc05a12 + 3bc05a0a: 415c lw a5,4(a0) + 3bc05a0c: 00fe6363 bltu t3,a5,3bc05a12 + 3bc05a10: c17c sw a5,68(a0) + 3bc05a12: 65c2 ld a1,16(sp) + 3bc05a14: e42a sd a0,8(sp) + 3bc05a16: d23fe0ef jal ra,3bc04738 + 3bc05a1a: 6522 ld a0,8(sp) + 3bc05a1c: 6742 ld a4,16(sp) + 3bc05a1e: 751c ld a5,40(a0) + 3bc05a20: 00e7fd63 bgeu a5,a4,3bc05a3a + 3bc05a24: 791c ld a5,48(a0) + 3bc05a26: 7742 ld a4,48(sp) + 3bc05a28: 00e7f963 bgeu a5,a4,3bc05a3a + 3bc05a2c: 4d78 lw a4,92(a0) + 3bc05a2e: 11100793 li a5,273 + 3bc05a32: 00e7e463 bltu a5,a4,3bc05a3a + 3bc05a36: d9bfe06f j 3bc047d0 + 3bc05a3a: 4501 li a0,0 + 3bc05a3c: dd3fe06f j 3bc0480e + 3bc05a40: 005ede9b srliw t4,t4,0x5 + 3bc05a44: 41d282bb subw t0,t0,t4 + 3bc05a48: 407787bb subw a5,a5,t2 + 3bc05a4c: 3c02b28b extu t0,t0,15,0 + 3bc05a50: 407603bb subw t2,a2,t2 + 3bc05a54: 4e8d li t4,3 + 3bc05a56: bd61 j 3bc058ee + 3bc05a58: 0056561b srliw a2,a2,0x5 + 3bc05a5c: 9c91 subw s1,s1,a2 + 3bc05a5e: 405787bb subw a5,a5,t0 + 3bc05a62: 3c04b48b extu s1,s1,15,0 + 3bc05a66: 0e91 addi t4,t4,4 + 3bc05a68: 405382bb subw t0,t2,t0 + 3bc05a6c: b5c9 j 3bc0592e + 3bc05a6e: 0056561b srliw a2,a2,0x5 + 3bc05a72: 40cb8bbb subw s7,s7,a2 + 3bc05a76: 407787bb subw a5,a5,t2 + 3bc05a7a: 3c0bbb8b extu s7,s7,15,0 + 3bc05a7e: 2ea1 addiw t4,t4,8 + 3bc05a80: 407283bb subw t2,t0,t2 + 3bc05a84: b5f5 j 3bc05970 + 3bc05a86: 0052d29b srliw t0,t0,0x5 + 3bc05a8a: 405484bb subw s1,s1,t0 + 3bc05a8e: 9f91 subw a5,a5,a2 + 3bc05a90: 3c04b48b extu s1,s1,15,0 + 3bc05a94: 40c3863b subw a2,t2,a2 + 3bc05a98: bf21 j 3bc059b0 + 3bc05a9a: 489d li a7,7 + 3bc05a9c: ba3d j 3bc053da + 3bc05a9e: 8fda mv t6,s6 + 3bc05aa0: 64a2 ld s1,8(sp) + 3bc05aa2: 00230e9b addiw t4,t1,2 + 3bc05aa6: 8376 mv t1,t4 + 3bc05aa8: 410483b3 sub t2,s1,a6 + 3bc05aac: 93048ce3 beq s1,a6,3bc053e4 + 3bc05ab0: 7c0eb28b extu t0,t4,31,0 + 3bc05ab4: 0053f463 bgeu t2,t0,3bc05abc + 3bc05ab8: 00038e9b sext.w t4,t2 + 3bc05abc: 7c0fb48b extu s1,t6,31,0 + 3bc05ac0: 409803b3 sub t2,a6,s1 + 3bc05ac4: 82d6 mv t0,s5 + 3bc05ac6: 00986363 bltu a6,s1,3bc05acc + 3bc05aca: 4281 li t0,0 + 3bc05acc: 9396 add t2,t2,t0 + 3bc05ace: 7c0eb48b extu s1,t4,31,0 + 3bc05ad2: 407a8933 sub s2,s5,t2 + 3bc05ad6: 01de0e3b addw t3,t3,t4 + 3bc05ada: 41d3033b subw t1,t1,t4 + 3bc05ade: 010a02b3 add t0,s4,a6 + 3bc05ae2: 02996363 bltu s2,s1,3bc05b08 + 3bc05ae6: 410383b3 sub t2,t2,a6 + 3bc05aea: 00928eb3 add t4,t0,s1 + 3bc05aee: 9826 add a6,a6,s1 + 3bc05af0: 8072c48b lrbu s1,t0,t2,0 + 3bc05af4: 1812d48b sbia s1,(t0),1,0 + 3bc05af8: fe5e9ce3 bne t4,t0,3bc05af0 + 3bc05afc: 88cff06f j 3bc04b88 + 3bc05b00: f04e sd s3,32(sp) + 3bc05b02: 89fa mv s3,t5 + 3bc05b04: 8f5a mv t5,s6 + 3bc05b06: bf69 j 3bc05aa0 + 3bc05b08: 84f6 mv s1,t4 + 3bc05b0a: 807a490b lrbu s2,s4,t2,0 + 3bc05b0e: 0385 addi t2,t2,1 + 3bc05b10: 01228023 sb s2,0(t0) + 3bc05b14: 007a9363 bne s5,t2,3bc05b1a + 3bc05b18: 4381 li t2,0 + 3bc05b1a: 34fd addiw s1,s1,-1 + 3bc05b1c: 0285 addi t0,t0,1 + 3bc05b1e: f4f5 bnez s1,3bc05b0a + 3bc05b20: 3efd addiw t4,t4,-1 + 3bc05b22: 0805 addi a6,a6,1 + 3bc05b24: 7c0ebe8b extu t4,t4,31,0 + 3bc05b28: 9876 add a6,a6,t4 + 3bc05b2a: 85eff06f j 3bc04b88 + 3bc05b2e: 48a5 li a7,9 + 3bc05b30: 858ff06f j 3bc04b88 + +000000003bc05b34 : + 3bc05b34: 00254703 lbu a4,2(a0) + 3bc05b38: 04052303 lw t1,64(a0) + 3bc05b3c: 4805 li a6,1 + 3bc05b3e: 00e8183b sllw a6,a6,a4 + 3bc05b42: 05852e83 lw t4,88(a0) + 3bc05b46: 387d addiw a6,a6,-1 + 3bc05b48: 01037833 and a6,t1,a6 + 3bc05b4c: 0048181b slliw a6,a6,0x4 + 3bc05b50: 010e8e3b addw t3,t4,a6 + 3bc05b54: 01053883 ld a7,16(a0) + 3bc05b58: 020e1713 slli a4,t3,0x20 + 3bc05b5c: 5d14 lw a3,56(a0) + 3bc05b5e: 01f75e13 srli t3,a4,0x1f + 3bc05b62: 9e46 add t3,t3,a7 + 3bc05b64: 01000737 lui a4,0x1000 + 3bc05b68: 5d5c lw a5,60(a0) + 3bc05b6a: e00e5f83 lhu t6,-512(t3) + 3bc05b6e: 8f2a mv t5,a0 + 3bc05b70: 962e add a2,a2,a1 + 3bc05b72: 00e6fc63 bgeu a3,a4,3bc05b8a + 3bc05b76: 4501 li a0,0 + 3bc05b78: 0cc5f463 bgeu a1,a2,3bc05c40 + 3bc05b7c: 9815c70b lbuia a4,(a1),1,0 + 3bc05b80: 0087979b slliw a5,a5,0x8 + 3bc05b84: 0086969b slliw a3,a3,0x8 + 3bc05b88: 8fd9 or a5,a5,a4 + 3bc05b8a: 00b6d71b srliw a4,a3,0xb + 3bc05b8e: 03f7073b mulw a4,a4,t6 + 3bc05b92: 14e7f063 bgeu a5,a4,3bc05cd2 + 3bc05b96: 040f3683 ld a3,64(t5) + 3bc05b9a: 28088893 addi a7,a7,640 # f0280 <__BSS_SIZE__+0xea670> + 3bc05b9e: caa1 beqz a3,3bc05bee + 3bc05ba0: 001f4503 lbu a0,1(t5) + 3bc05ba4: 4685 li a3,1 + 3bc05ba6: 000f4803 lbu a6,0(t5) + 3bc05baa: 00a696bb sllw a3,a3,a0 + 3bc05bae: 36fd addiw a3,a3,-1 + 3bc05bb0: 00d37333 and t1,t1,a3 + 3bc05bb4: 028f3683 ld a3,40(t5) + 3bc05bb8: 018f3e03 ld t3,24(t5) + 3bc05bbc: 0103133b sllw t1,t1,a6 + 3bc05bc0: fff68513 addi a0,a3,-1 # ffffff <__BSS_SIZE__+0xffa3ef> + 3bc05bc4: e681 bnez a3,3bc05bcc + 3bc05bc6: 020f3503 ld a0,32(t5) + 3bc05bca: 157d addi a0,a0,-1 + 3bc05bcc: 80ae468b lrbu a3,t3,a0,0 + 3bc05bd0: 4521 li a0,8 + 3bc05bd2: 4105053b subw a0,a0,a6 + 3bc05bd6: 40a6d6bb sraw a3,a3,a0 + 3bc05bda: 006686bb addw a3,a3,t1 + 3bc05bde: 30000513 li a0,768 + 3bc05be2: 02a686bb mulw a3,a3,a0 + 3bc05be6: 7c06b68b extu a3,a3,31,0 + 3bc05bea: 02d8988b addsl a7,a7,a3,1 + 3bc05bee: 4699 li a3,6 + 3bc05bf0: 05d6eb63 bltu a3,t4,3bc05c46 + 3bc05bf4: 4685 li a3,1 + 3bc05bf6: 01000eb7 lui t4,0x1000 + 3bc05bfa: 0ff00e13 li t3,255 + 3bc05bfe: b2d8c80b lurhu a6,a7,a3,1 + 3bc05c02: 01d77b63 bgeu a4,t4,3bc05c18 + 3bc05c06: 2ec5f363 bgeu a1,a2,3bc05eec + 3bc05c0a: 9815c50b lbuia a0,(a1),1,0 + 3bc05c0e: 0087979b slliw a5,a5,0x8 + 3bc05c12: 0087171b slliw a4,a4,0x8 + 3bc05c16: 8fc9 or a5,a5,a0 + 3bc05c18: 00b7551b srliw a0,a4,0xb + 3bc05c1c: 0305083b mulw a6,a0,a6 + 3bc05c20: 0016969b slliw a3,a3,0x1 + 3bc05c24: 0107ef63 bltu a5,a6,3bc05c42 + 3bc05c28: 4107073b subw a4,a4,a6 + 3bc05c2c: 410787bb subw a5,a5,a6 + 3bc05c30: 2685 addiw a3,a3,1 + 3bc05c32: fcde76e3 bgeu t3,a3,3bc05bfe + 3bc05c36: 4505 li a0,1 + 3bc05c38: 010007b7 lui a5,0x1000 + 3bc05c3c: 2af76663 bltu a4,a5,3bc05ee8 + 3bc05c40: 8082 ret + 3bc05c42: 8742 mv a4,a6 + 3bc05c44: b7fd j 3bc05c32 + 3bc05c46: 028f3303 ld t1,40(t5) + 3bc05c4a: 048f6803 lwu a6,72(t5) + 3bc05c4e: 018f3683 ld a3,24(t5) + 3bc05c52: 4501 li a0,0 + 3bc05c54: 41030e33 sub t3,t1,a6 + 3bc05c58: 01037463 bgeu t1,a6,3bc05c60 + 3bc05c5c: 020f3503 ld a0,32(t5) + 3bc05c60: 96f2 add a3,a3,t3 + 3bc05c62: 80a6ce0b lrbu t3,a3,a0,0 + 3bc05c66: 010002b7 lui t0,0x1000 + 3bc05c6a: 4685 li a3,1 + 3bc05c6c: 10000513 li a0,256 + 3bc05c70: 0ff00f93 li t6,255 + 3bc05c74: 001e181b slliw a6,t3,0x1 + 3bc05c78: 00d5033b addw t1,a0,a3 + 3bc05c7c: 00080e1b sext.w t3,a6 + 3bc05c80: 01057833 and a6,a0,a6 + 3bc05c84: 00080e9b sext.w t4,a6 + 3bc05c88: 0103083b addw a6,t1,a6 + 3bc05c8c: b308c30b lurhu t1,a7,a6,1 + 3bc05c90: 00577c63 bgeu a4,t0,3bc05ca8 + 3bc05c94: 24c5fc63 bgeu a1,a2,3bc05eec + 3bc05c98: 9815c80b lbuia a6,(a1),1,0 + 3bc05c9c: 0087979b slliw a5,a5,0x8 + 3bc05ca0: 0087171b slliw a4,a4,0x8 + 3bc05ca4: 00f867b3 or a5,a6,a5 + 3bc05ca8: 00b7581b srliw a6,a4,0xb + 3bc05cac: 02680f3b mulw t5,a6,t1 + 3bc05cb0: 0016969b slliw a3,a3,0x1 + 3bc05cb4: 01e7f863 bgeu a5,t5,3bc05cc4 + 3bc05cb8: 01d54533 xor a0,a0,t4 + 3bc05cbc: 877a mv a4,t5 + 3bc05cbe: fadffbe3 bgeu t6,a3,3bc05c74 + 3bc05cc2: bf95 j 3bc05c36 + 3bc05cc4: 41e7073b subw a4,a4,t5 + 3bc05cc8: 41e787bb subw a5,a5,t5 + 3bc05ccc: 2685 addiw a3,a3,1 + 3bc05cce: 8576 mv a0,t4 + 3bc05cd0: b7fd j 3bc05cbe + 3bc05cd2: 7c0eb50b extu a0,t4,31,0 + 3bc05cd6: 0541 addi a0,a0,16 + 3bc05cd8: a2a8cf0b lrhu t5,a7,a0,1 + 3bc05cdc: 00151e93 slli t4,a0,0x1 + 3bc05ce0: 40e6833b subw t1,a3,a4 + 3bc05ce4: 01000537 lui a0,0x1000 + 3bc05ce8: 9f99 subw a5,a5,a4 + 3bc05cea: 00a37c63 bgeu t1,a0,3bc05d02 + 3bc05cee: 4501 li a0,0 + 3bc05cf0: f4c5f8e3 bgeu a1,a2,3bc05c40 + 3bc05cf4: 9815c70b lbuia a4,(a1),1,0 + 3bc05cf8: 0087979b slliw a5,a5,0x8 + 3bc05cfc: 0083131b slliw t1,t1,0x8 + 3bc05d00: 8fd9 or a5,a5,a4 + 3bc05d02: 00b3571b srliw a4,t1,0xb + 3bc05d06: 03e706bb mulw a3,a4,t5 + 3bc05d0a: 16d7f563 bgeu a5,a3,3bc05e74 + 3bc05d0e: a0088313 addi t1,a7,-1536 + 3bc05d12: 4509 li a0,2 + 3bc05d14: 4f01 li t5,0 + 3bc05d16: 01000e37 lui t3,0x1000 + 3bc05d1a: 00035703 lhu a4,0(t1) + 3bc05d1e: 01c6fc63 bgeu a3,t3,3bc05d36 + 3bc05d22: 1cc5f563 bgeu a1,a2,3bc05eec + 3bc05d26: 9815ce0b lbuia t3,(a1),1,0 + 3bc05d2a: 0087979b slliw a5,a5,0x8 + 3bc05d2e: 0086969b slliw a3,a3,0x8 + 3bc05d32: 00fe67b3 or a5,t3,a5 + 3bc05d36: 00b6de1b srliw t3,a3,0xb + 3bc05d3a: 02ee073b mulw a4,t3,a4 + 3bc05d3e: 22e7fc63 bgeu a5,a4,3bc05f76 + 3bc05d42: 7c08380b extu a6,a6,31,0 + 3bc05d46: 0303130b addsl t1,t1,a6,1 + 3bc05d4a: 4801 li a6,0 + 3bc05d4c: 46a1 li a3,8 + 3bc05d4e: 4e05 li t3,1 + 3bc05d50: 010003b7 lui t2,0x1000 + 3bc05d54: b3c34f8b lurhu t6,t1,t3,1 + 3bc05d58: 00777c63 bgeu a4,t2,3bc05d70 + 3bc05d5c: 18c5f863 bgeu a1,a2,3bc05eec + 3bc05d60: 9815ce8b lbuia t4,(a1),1,0 + 3bc05d64: 0087979b slliw a5,a5,0x8 + 3bc05d68: 0087171b slliw a4,a4,0x8 + 3bc05d6c: 00fee7b3 or a5,t4,a5 + 3bc05d70: 00b75e9b srliw t4,a4,0xb + 3bc05d74: 03fe8fbb mulw t6,t4,t6 + 3bc05d78: 001e1e1b slliw t3,t3,0x1 + 3bc05d7c: 25f7e663 bltu a5,t6,3bc05fc8 + 3bc05d80: 41f7073b subw a4,a4,t6 + 3bc05d84: 41f787bb subw a5,a5,t6 + 3bc05d88: 2e05 addiw t3,t3,1 + 3bc05d8a: fcde65e3 bltu t3,a3,3bc05d54 + 3bc05d8e: 430d li t1,3 + 3bc05d90: ebe364e3 bltu t1,t5,3bc05c38 + 3bc05d94: 40d806bb subw a3,a6,a3 + 3bc05d98: 01c6883b addw a6,a3,t3 + 3bc05d9c: 86c2 mv a3,a6 + 3bc05d9e: 01037363 bgeu t1,a6,3bc05da4 + 3bc05da2: 468d li a3,3 + 3bc05da4: 0066981b slliw a6,a3,0x6 + 3bc05da8: 0408081b addiw a6,a6,64 + 3bc05dac: 7c08380b extu a6,a6,31,0 + 3bc05db0: 4685 li a3,1 + 3bc05db2: 01000fb7 lui t6,0x1000 + 3bc05db6: 03f00f13 li t5,63 + 3bc05dba: 7c06b30b extu t1,a3,31,0 + 3bc05dbe: 9342 add t1,t1,a6 + 3bc05dc0: a268ce0b lrhu t3,a7,t1,1 + 3bc05dc4: 01f77c63 bgeu a4,t6,3bc05ddc + 3bc05dc8: 12c5f263 bgeu a1,a2,3bc05eec + 3bc05dcc: 9815c30b lbuia t1,(a1),1,0 + 3bc05dd0: 0087979b slliw a5,a5,0x8 + 3bc05dd4: 0087171b slliw a4,a4,0x8 + 3bc05dd8: 00f367b3 or a5,t1,a5 + 3bc05ddc: 00b7531b srliw t1,a4,0xb + 3bc05de0: 03c30e3b mulw t3,t1,t3 + 3bc05de4: 0016969b slliw a3,a3,0x1 + 3bc05de8: 1fc7e263 bltu a5,t3,3bc05fcc + 3bc05dec: 41c7073b subw a4,a4,t3 + 3bc05df0: 41c787bb subw a5,a5,t3 + 3bc05df4: 2685 addiw a3,a3,1 + 3bc05df6: fcdf72e3 bgeu t5,a3,3bc05dba + 3bc05dfa: fc06869b addiw a3,a3,-64 + 3bc05dfe: 0006831b sext.w t1,a3 + 3bc05e02: 480d li a6,3 + 3bc05e04: e2687ae3 bgeu a6,t1,3bc05c38 + 3bc05e08: 4e35 li t3,13 + 3bc05e0a: 0016d81b srliw a6,a3,0x1 + 3bc05e0e: 1c6e6163 bltu t3,t1,3bc05fd0 + 3bc05e12: 8a85 andi a3,a3,1 + 3bc05e14: 387d addiw a6,a6,-1 + 3bc05e16: 0026e693 ori a3,a3,2 + 3bc05e1a: 010696bb sllw a3,a3,a6 + 3bc05e1e: 02069313 slli t1,a3,0x20 + 3bc05e22: 01f35693 srli a3,t1,0x1f + 3bc05e26: 737d lui t1,0xfffff + 3bc05e28: 30030313 addi t1,t1,768 # fffffffffffff300 <__BL2_END__+0xffffffffc43ebef0> + 3bc05e2c: 969a add a3,a3,t1 + 3bc05e2e: 98b6 add a7,a7,a3 + 3bc05e30: 4e05 li t3,1 + 3bc05e32: 4685 li a3,1 + 3bc05e34: 010002b7 lui t0,0x1000 + 3bc05e38: b2d8ce8b lurhu t4,a7,a3,1 + 3bc05e3c: 00577c63 bgeu a4,t0,3bc05e54 + 3bc05e40: 0ac5f663 bgeu a1,a2,3bc05eec + 3bc05e44: 9815c30b lbuia t1,(a1),1,0 + 3bc05e48: 0087979b slliw a5,a5,0x8 + 3bc05e4c: 0087171b slliw a4,a4,0x8 + 3bc05e50: 00f367b3 or a5,t1,a5 + 3bc05e54: 00b7531b srliw t1,a4,0xb + 3bc05e58: 03d30f3b mulw t5,t1,t4 + 3bc05e5c: 001e1f9b slliw t6,t3,0x1 + 3bc05e60: 1be7f763 bgeu a5,t5,3bc0600e + 3bc05e64: 01c686bb addw a3,a3,t3 + 3bc05e68: 877a mv a4,t5 + 3bc05e6a: 387d addiw a6,a6,-1 + 3bc05e6c: dc0806e3 beqz a6,3bc05c38 + 3bc05e70: 8e7e mv t3,t6 + 3bc05e72: b7d9 j 3bc05e38 + 3bc05e74: 40d3053b subw a0,t1,a3 + 3bc05e78: 9ec6 add t4,t4,a7 + 3bc05e7a: 01000f37 lui t5,0x1000 + 3bc05e7e: 40d7873b subw a4,a5,a3 + 3bc05e82: 832a mv t1,a0 + 3bc05e84: 018ed683 lhu a3,24(t4) # 1000018 <__BSS_SIZE__+0xffa408> + 3bc05e88: 01e57c63 bgeu a0,t5,3bc05ea0 + 3bc05e8c: 4501 li a0,0 + 3bc05e8e: dac5f9e3 bgeu a1,a2,3bc05c40 + 3bc05e92: 0087179b slliw a5,a4,0x8 + 3bc05e96: 9815c70b lbuia a4,(a1),1,0 + 3bc05e9a: 0083151b slliw a0,t1,0x8 + 3bc05e9e: 8f5d or a4,a4,a5 + 3bc05ea0: 00b5531b srliw t1,a0,0xb + 3bc05ea4: 02d306bb mulw a3,t1,a3 + 3bc05ea8: 8336 mv t1,a3 + 3bc05eaa: 04d77e63 bgeu a4,a3,3bc05f06 + 3bc05eae: 77fd lui a5,0xfffff + 3bc05eb0: 9e3e add t3,t3,a5 + 3bc05eb2: 010007b7 lui a5,0x1000 + 3bc05eb6: 400e5e03 lhu t3,1024(t3) # 1000400 <__BSS_SIZE__+0xffa7f0> + 3bc05eba: 00f6fc63 bgeu a3,a5,3bc05ed2 + 3bc05ebe: 4501 li a0,0 + 3bc05ec0: d8c5f0e3 bgeu a1,a2,3bc05c40 + 3bc05ec4: 0087179b slliw a5,a4,0x8 + 3bc05ec8: 9815c70b lbuia a4,(a1),1,0 + 3bc05ecc: 0086969b slliw a3,a3,0x8 + 3bc05ed0: 8f5d or a4,a4,a5 + 3bc05ed2: 00b6d79b srliw a5,a3,0xb + 3bc05ed6: 03c7833b mulw t1,a5,t3 + 3bc05eda: 00677b63 bgeu a4,t1,3bc05ef0 + 3bc05ede: 010007b7 lui a5,0x1000 + 3bc05ee2: 450d li a0,3 + 3bc05ee4: d4f37ee3 bgeu t1,a5,3bc05c40 + 3bc05ee8: d4c5ece3 bltu a1,a2,3bc05c40 + 3bc05eec: 4501 li a0,0 + 3bc05eee: bb89 j 3bc05c40 + 3bc05ef0: 406686bb subw a3,a3,t1 + 3bc05ef4: 406707bb subw a5,a4,t1 + 3bc05ef8: 737d lui t1,0xfffff + 3bc05efa: 60030313 addi t1,t1,1536 # fffffffffffff600 <__BL2_END__+0xffffffffc43ec1f0> + 3bc05efe: 9346 add t1,t1,a7 + 3bc05f00: 450d li a0,3 + 3bc05f02: 4f31 li t5,12 + 3bc05f04: bd09 j 3bc05d16 + 3bc05f06: 9d15 subw a0,a0,a3 + 3bc05f08: 01000e37 lui t3,0x1000 + 3bc05f0c: 406707bb subw a5,a4,t1 + 3bc05f10: 86aa mv a3,a0 + 3bc05f12: 030ed303 lhu t1,48(t4) + 3bc05f16: 01c57c63 bgeu a0,t3,3bc05f2e + 3bc05f1a: 4501 li a0,0 + 3bc05f1c: d2c5f2e3 bgeu a1,a2,3bc05c40 + 3bc05f20: 0087971b slliw a4,a5,0x8 + 3bc05f24: 9815c78b lbuia a5,(a1),1,0 + 3bc05f28: 0086951b slliw a0,a3,0x8 + 3bc05f2c: 8fd9 or a5,a5,a4 + 3bc05f2e: 00b5571b srliw a4,a0,0xb + 3bc05f32: 026706bb mulw a3,a4,t1 + 3bc05f36: 8736 mv a4,a3 + 3bc05f38: fcd7e0e3 bltu a5,a3,3bc05ef8 + 3bc05f3c: 9d15 subw a0,a0,a3 + 3bc05f3e: 01000e37 lui t3,0x1000 + 3bc05f42: 048ed303 lhu t1,72(t4) + 3bc05f46: 86aa mv a3,a0 + 3bc05f48: 9f99 subw a5,a5,a4 + 3bc05f4a: 01c57c63 bgeu a0,t3,3bc05f62 + 3bc05f4e: 4501 li a0,0 + 3bc05f50: cec5f8e3 bgeu a1,a2,3bc05c40 + 3bc05f54: 0087971b slliw a4,a5,0x8 + 3bc05f58: 9815c78b lbuia a5,(a1),1,0 + 3bc05f5c: 0086951b slliw a0,a3,0x8 + 3bc05f60: 8fd9 or a5,a5,a4 + 3bc05f62: 00b5571b srliw a4,a0,0xb + 3bc05f66: 026706bb mulw a3,a4,t1 + 3bc05f6a: f8d7e7e3 bltu a5,a3,3bc05ef8 + 3bc05f6e: 9f95 subw a5,a5,a3 + 3bc05f70: 40d506bb subw a3,a0,a3 + 3bc05f74: b751 j 3bc05ef8 + 3bc05f76: 40e68ebb subw t4,a3,a4 + 3bc05f7a: 01000fb7 lui t6,0x1000 + 3bc05f7e: 9f99 subw a5,a5,a4 + 3bc05f80: 01035703 lhu a4,16(t1) + 3bc05f84: 01fefc63 bgeu t4,t6,3bc05f9c + 3bc05f88: f6c5f2e3 bgeu a1,a2,3bc05eec + 3bc05f8c: 00879e1b slliw t3,a5,0x8 + 3bc05f90: 9815c78b lbuia a5,(a1),1,0 + 3bc05f94: 008e9e9b slliw t4,t4,0x8 + 3bc05f98: 01c7e7b3 or a5,a5,t3 + 3bc05f9c: 00bed69b srliw a3,t4,0xb + 3bc05fa0: 02e6873b mulw a4,a3,a4 + 3bc05fa4: 00e7f963 bgeu a5,a4,3bc05fb6 + 3bc05fa8: 7c08368b extu a3,a6,31,0 + 3bc05fac: 06a1 addi a3,a3,8 + 3bc05fae: 02d3130b addsl t1,t1,a3,1 + 3bc05fb2: 4821 li a6,8 + 3bc05fb4: bb61 j 3bc05d4c + 3bc05fb6: 9f99 subw a5,a5,a4 + 3bc05fb8: 20030313 addi t1,t1,512 + 3bc05fbc: 40ee873b subw a4,t4,a4 + 3bc05fc0: 4841 li a6,16 + 3bc05fc2: 10000693 li a3,256 + 3bc05fc6: b361 j 3bc05d4e + 3bc05fc8: 877e mv a4,t6 + 3bc05fca: b3c1 j 3bc05d8a + 3bc05fcc: 8772 mv a4,t3 + 3bc05fce: b525 j 3bc05df6 + 3bc05fd0: 386d addiw a6,a6,-5 + 3bc05fd2: 01000e37 lui t3,0x1000 + 3bc05fd6: 01c77b63 bgeu a4,t3,3bc05fec + 3bc05fda: f0c5f9e3 bgeu a1,a2,3bc05eec + 3bc05fde: 9815c68b lbuia a3,(a1),1,0 + 3bc05fe2: 0087979b slliw a5,a5,0x8 + 3bc05fe6: 0087171b slliw a4,a4,0x8 + 3bc05fea: 8fd5 or a5,a5,a3 + 3bc05fec: 0017531b srliw t1,a4,0x1 + 3bc05ff0: 406786bb subw a3,a5,t1 + 3bc05ff4: 01f6d69b srliw a3,a3,0x1f + 3bc05ff8: 36fd addiw a3,a3,-1 + 3bc05ffa: 0066f6b3 and a3,a3,t1 + 3bc05ffe: 387d addiw a6,a6,-1 + 3bc06000: 0003071b sext.w a4,t1 + 3bc06004: 9f95 subw a5,a5,a3 + 3bc06006: fc0818e3 bnez a6,3bc05fd6 + 3bc0600a: 4811 li a6,4 + 3bc0600c: b515 j 3bc05e30 + 3bc0600e: 41e7073b subw a4,a4,t5 + 3bc06012: 41e787bb subw a5,a5,t5 + 3bc06016: 00df86bb addw a3,t6,a3 + 3bc0601a: bd81 j 3bc05e6a + +000000003bc0601c : + 3bc0601c: 11400793 li a5,276 + 3bc06020: 02053423 sd zero,40(a0) # 1000028 <__BSS_SIZE__+0xffa418> + 3bc06024: 06052223 sw zero,100(a0) + 3bc06028: 04053023 sd zero,64(a0) + 3bc0602c: cd7c sw a5,92(a0) + 3bc0602e: 8082 ret + +000000003bc06030 : + 3bc06030: 7175 addi sp,sp,-144 + 3bc06032: e122 sd s0,128(sp) + 3bc06034: f8ca sd s2,112(sp) + 3bc06036: f4ce sd s3,104(sp) + 3bc06038: f0d2 sd s4,96(sp) + 3bc0603a: f86a sd s10,48(sp) + 3bc0603c: f46e sd s11,40(sp) + 3bc0603e: e506 sd ra,136(sp) + 3bc06040: fca6 sd s1,120(sp) + 3bc06042: ecd6 sd s5,88(sp) + 3bc06044: e8da sd s6,80(sp) + 3bc06046: e4de sd s7,72(sp) + 3bc06048: e0e2 sd s8,64(sp) + 3bc0604a: fc66 sd s9,56(sp) + 3bc0604c: 0006bd83 ld s11,0(a3) + 3bc06050: 0006b023 sd zero,0(a3) + 3bc06054: 0007a023 sw zero,0(a5) # 1000000 <__BSS_SIZE__+0xffa3f0> + 3bc06058: e43a sd a4,8(sp) + 3bc0605a: 4d78 lw a4,92(a0) + 3bc0605c: 89be mv s3,a5 + 3bc0605e: 11200793 li a5,274 + 3bc06062: 8932 mv s2,a2 + 3bc06064: 842a mv s0,a0 + 3bc06066: 8a2e mv s4,a1 + 3bc06068: 8d36 mv s10,a3 + 3bc0606a: 4611 li a2,4 + 3bc0606c: 04e7e263 bltu a5,a4,3bc060b0 + 3bc06070: 85d2 mv a1,s4 + 3bc06072: 8522 mv a0,s0 + 3bc06074: ec4fe0ef jal ra,3bc04738 + 3bc06078: 4b4d li s6,19 + 3bc0607a: 06840a93 addi s5,s0,104 # 1068 <__BSS_SIZE__-0x4ba8> + 3bc0607e: 4c7c lw a5,92(s0) + 3bc06080: 11200713 li a4,274 + 3bc06084: 0ce79663 bne a5,a4,3bc06150 + 3bc06088: 5c5c lw a5,60(s0) + 3bc0608a: eb9d bnez a5,3bc060c0 + 3bc0608c: 4785 li a5,1 + 3bc0608e: a8a1 j 3bc060e6 + 3bc06090: 0017859b addiw a1,a5,1 + 3bc06094: d06c sw a1,100(s0) + 3bc06096: 9819458b lbuia a1,(s2),1,0 + 3bc0609a: 7c07b78b extu a5,a5,31,0 + 3bc0609e: 97a2 add a5,a5,s0 + 3bc060a0: 06b78423 sb a1,104(a5) + 3bc060a4: 000d3783 ld a5,0(s10) + 3bc060a8: 1dfd addi s11,s11,-1 + 3bc060aa: 0785 addi a5,a5,1 + 3bc060ac: 00fd3023 sd a5,0(s10) + 3bc060b0: 507c lw a5,100(s0) + 3bc060b2: 020d8863 beqz s11,3bc060e2 + 3bc060b6: fcf67de3 bgeu a2,a5,3bc06090 + 3bc060ba: 06844603 lbu a2,104(s0) + 3bc060be: ca05 beqz a2,3bc060ee + 3bc060c0: 4485 li s1,1 + 3bc060c2: 60aa ld ra,136(sp) + 3bc060c4: 640a ld s0,128(sp) + 3bc060c6: 7946 ld s2,112(sp) + 3bc060c8: 79a6 ld s3,104(sp) + 3bc060ca: 7a06 ld s4,96(sp) + 3bc060cc: 6ae6 ld s5,88(sp) + 3bc060ce: 6b46 ld s6,80(sp) + 3bc060d0: 6ba6 ld s7,72(sp) + 3bc060d2: 6c06 ld s8,64(sp) + 3bc060d4: 7ce2 ld s9,56(sp) + 3bc060d6: 7d42 ld s10,48(sp) + 3bc060d8: 7da2 ld s11,40(sp) + 3bc060da: 8526 mv a0,s1 + 3bc060dc: 74e6 ld s1,120(sp) + 3bc060de: 6149 addi sp,sp,144 + 3bc060e0: 8082 ret + 3bc060e2: ffe1 bnez a5,3bc060ba + 3bc060e4: 478d li a5,3 + 3bc060e6: 00f9a023 sw a5,0(s3) + 3bc060ea: 4481 li s1,0 + 3bc060ec: bfd9 j 3bc060c2 + 3bc060ee: 4611 li a2,4 + 3bc060f0: fef67ae3 bgeu a2,a5,3bc060e4 + 3bc060f4: 06942783 lw a5,105(s0) + 3bc060f8: 06042223 sw zero,100(s0) + 3bc060fc: 9007978b revw a5,a5 + 3bc06100: dc5c sw a5,60(s0) + 3bc06102: 57fd li a5,-1 + 3bc06104: dc1c sw a5,56(s0) + 3bc06106: 11300793 li a5,275 + 3bc0610a: 02f70c63 beq a4,a5,3bc06142 + 3bc0610e: 00044783 lbu a5,0(s0) + 3bc06112: 00144703 lbu a4,1(s0) + 3bc06116: 6410 ld a2,8(s0) + 3bc06118: 40000593 li a1,1024 + 3bc0611c: 9f3d addw a4,a4,a5 + 3bc0611e: 30000793 li a5,768 + 3bc06122: 00e797bb sllw a5,a5,a4 + 3bc06126: 7c07879b addiw a5,a5,1984 + 3bc0612a: 7c07b78b extu a5,a5,31,0 + 3bc0612e: 4701 li a4,0 + 3bc06130: 00f76c63 bltu a4,a5,3bc06148 + 3bc06134: 4785 li a5,1 + 3bc06136: 1782 slli a5,a5,0x20 + 3bc06138: 0785 addi a5,a5,1 + 3bc0613a: e43c sd a5,72(s0) + 3bc0613c: e83c sd a5,80(s0) + 3bc0613e: 04042c23 sw zero,88(s0) + 3bc06142: 04042e23 sw zero,92(s0) + 3bc06146: b72d j 3bc06070 + 3bc06148: 22e6558b srh a1,a2,a4,1 + 3bc0614c: 0705 addi a4,a4,1 + 3bc0614e: b7cd j 3bc06130 + 3bc06150: 7418 ld a4,40(s0) + 3bc06152: 01476b63 bltu a4,s4,3bc06168 + 3bc06156: 12079f63 bnez a5,3bc06294 + 3bc0615a: 5c5c lw a5,60(s0) + 3bc0615c: 14079363 bnez a5,3bc062a2 + 3bc06160: 4791 li a5,4 + 3bc06162: b751 j 3bc060e6 + 3bc06164: 4789 li a5,2 + 3bc06166: b741 j 3bc060e6 + 3bc06168: 4c81 li s9,0 + 3bc0616a: 06442b83 lw s7,100(s0) + 3bc0616e: 0c0b9263 bnez s7,3bc06232 + 3bc06172: 01bb7463 bgeu s6,s11,3bc0617a + 3bc06176: 040c8263 beqz s9,3bc061ba + 3bc0617a: 866e mv a2,s11 + 3bc0617c: 85ca mv a1,s2 + 3bc0617e: 8522 mv a0,s0 + 3bc06180: 9b5ff0ef jal ra,3bc05b34 + 3bc06184: 0005049b sext.w s1,a0 + 3bc06188: e095 bnez s1,3bc061ac + 3bc0618a: 866e mv a2,s11 + 3bc0618c: 85ca mv a1,s2 + 3bc0618e: 06840513 addi a0,s0,104 + 3bc06192: 8dbfa0ef jal ra,3bc00a6c + 3bc06196: 000d3783 ld a5,0(s10) + 3bc0619a: 07b42223 sw s11,100(s0) + 3bc0619e: 9dbe add s11,s11,a5 + 3bc061a0: 01bd3023 sd s11,0(s10) + 3bc061a4: 478d li a5,3 + 3bc061a6: 00f9a023 sw a5,0(s3) + 3bc061aa: bf21 j 3bc060c2 + 3bc061ac: 000c8563 beqz s9,3bc061b6 + 3bc061b0: 4789 li a5,2 + 3bc061b2: 0ef49463 bne s1,a5,3bc0629a + 3bc061b6: 864a mv a2,s2 + 3bc061b8: a021 j 3bc061c0 + 3bc061ba: fecd8613 addi a2,s11,-20 + 3bc061be: 964a add a2,a2,s2 + 3bc061c0: 03243823 sd s2,48(s0) + 3bc061c4: 85d2 mv a1,s4 + 3bc061c6: 8522 mv a0,s0 + 3bc061c8: de2fe0ef jal ra,3bc047aa + 3bc061cc: ee051ae3 bnez a0,3bc060c0 + 3bc061d0: 7818 ld a4,48(s0) + 3bc061d2: 000d3783 ld a5,0(s10) + 3bc061d6: 41270933 sub s2,a4,s2 + 3bc061da: 97ca add a5,a5,s2 + 3bc061dc: 00fd3023 sd a5,0(s10) + 3bc061e0: 412d8db3 sub s11,s11,s2 + 3bc061e4: 893a mv s2,a4 + 3bc061e6: bd61 j 3bc0607e + 3bc061e8: 8109478b lrbu a5,s2,a6,0 + 3bc061ec: 0106578b srb a5,a2,a6,0 + 3bc061f0: 0805 addi a6,a6,1 + 3bc061f2: 0008079b sext.w a5,a6 + 3bc061f6: e83e sd a5,16(sp) + 3bc061f8: 01780c3b addw s8,a6,s7 + 3bc061fc: 018b6463 bltu s6,s8,3bc06204 + 3bc06200: ffb814e3 bne a6,s11,3bc061e8 + 3bc06204: 07842223 sw s8,100(s0) + 3bc06208: 018b7463 bgeu s6,s8,3bc06210 + 3bc0620c: 020c8f63 beqz s9,3bc0624a + 3bc06210: 7c0c360b extu a2,s8,31,0 + 3bc06214: 85d6 mv a1,s5 + 3bc06216: 8522 mv a0,s0 + 3bc06218: ec42 sd a6,24(sp) + 3bc0621a: 91bff0ef jal ra,3bc05b34 + 3bc0621e: 0005049b sext.w s1,a0 + 3bc06222: 6862 ld a6,24(sp) + 3bc06224: ec91 bnez s1,3bc06240 + 3bc06226: 000d3783 ld a5,0(s10) + 3bc0622a: 983e add a6,a6,a5 + 3bc0622c: 010d3023 sd a6,0(s10) + 3bc06230: bf95 j 3bc061a4 + 3bc06232: 7c0bb60b extu a2,s7,31,0 + 3bc06236: 06860613 addi a2,a2,104 + 3bc0623a: 4801 li a6,0 + 3bc0623c: 9622 add a2,a2,s0 + 3bc0623e: bf55 j 3bc061f2 + 3bc06240: 000c8563 beqz s9,3bc0624a + 3bc06244: 4789 li a5,2 + 3bc06246: 04f49a63 bne s1,a5,3bc0629a + 3bc0624a: 03543823 sd s5,48(s0) + 3bc0624e: 8656 mv a2,s5 + 3bc06250: 85d2 mv a1,s4 + 3bc06252: 8522 mv a0,s0 + 3bc06254: d56fe0ef jal ra,3bc047aa + 3bc06258: e60514e3 bnez a0,3bc060c0 + 3bc0625c: 781c ld a5,48(s0) + 3bc0625e: 415787bb subw a5,a5,s5 + 3bc06262: 02fc6763 bltu s8,a5,3bc06290 + 3bc06266: 66c2 ld a3,16(sp) + 3bc06268: 40fc073b subw a4,s8,a5 + 3bc0626c: 02e6e263 bltu a3,a4,3bc06290 + 3bc06270: 000d3703 ld a4,0(s10) + 3bc06274: 417787bb subw a5,a5,s7 + 3bc06278: 7c07b78b extu a5,a5,31,0 + 3bc0627c: 973e add a4,a4,a5 + 3bc0627e: 00ed3023 sd a4,0(s10) + 3bc06282: 40fd8db3 sub s11,s11,a5 + 3bc06286: 00f90733 add a4,s2,a5 + 3bc0628a: 06042223 sw zero,100(s0) + 3bc0628e: bf99 j 3bc061e4 + 3bc06290: 44ad li s1,11 + 3bc06292: bd05 j 3bc060c2 + 3bc06294: 67a2 ld a5,8(sp) + 3bc06296: ec0787e3 beqz a5,3bc06164 + 3bc0629a: 4789 li a5,2 + 3bc0629c: 00f9a023 sw a5,0(s3) + 3bc062a0: b505 j 3bc060c0 + 3bc062a2: 67a2 ld a5,8(sp) + 3bc062a4: ec0780e3 beqz a5,3bc06164 + 3bc062a8: 4c85 li s9,1 + 3bc062aa: b5c1 j 3bc0616a + +000000003bc062ac : + 3bc062ac: 1141 addi sp,sp,-16 + 3bc062ae: e022 sd s0,0(sp) + 3bc062b0: 842a mv s0,a0 + 3bc062b2: 659c ld a5,8(a1) + 3bc062b4: 852e mv a0,a1 + 3bc062b6: 640c ld a1,8(s0) + 3bc062b8: e406 sd ra,8(sp) + 3bc062ba: 9782 jalr a5 + 3bc062bc: 60a2 ld ra,8(sp) + 3bc062be: 00043423 sd zero,8(s0) + 3bc062c2: 6402 ld s0,0(sp) + 3bc062c4: 0141 addi sp,sp,16 + 3bc062c6: 8082 ret + +000000003bc062c8 : + 3bc062c8: 1101 addi sp,sp,-32 + 3bc062ca: 6518 ld a4,8(a0) + 3bc062cc: e426 sd s1,8(sp) + 3bc062ce: 9db1 addw a1,a1,a2 + 3bc062d0: 30000493 li s1,768 + 3bc062d4: e822 sd s0,16(sp) + 3bc062d6: 00b494bb sllw s1,s1,a1 + 3bc062da: ec06 sd ra,24(sp) + 3bc062dc: e04a sd s2,0(sp) + 3bc062de: 842a mv s0,a0 + 3bc062e0: 7c04849b addiw s1,s1,1984 + 3bc062e4: c719 beqz a4,3bc062f2 + 3bc062e6: 5138 lw a4,96(a0) + 3bc062e8: 0004879b sext.w a5,s1 + 3bc062ec: 4501 li a0,0 + 3bc062ee: 02f70a63 beq a4,a5,3bc06322 + 3bc062f2: 85b6 mv a1,a3 + 3bc062f4: 8522 mv a0,s0 + 3bc062f6: 8936 mv s2,a3 + 3bc062f8: fb5ff0ef jal ra,3bc062ac + 3bc062fc: 00093783 ld a5,0(s2) + 3bc06300: 02049713 slli a4,s1,0x20 + 3bc06304: 01f75593 srli a1,a4,0x1f + 3bc06308: 854a mv a0,s2 + 3bc0630a: 9782 jalr a5 + 3bc0630c: 87aa mv a5,a0 + 3bc0630e: e408 sd a0,8(s0) + 3bc06310: 4509 li a0,2 + 3bc06312: cb81 beqz a5,3bc06322 + 3bc06314: 6505 lui a0,0x1 + 3bc06316: d0050513 addi a0,a0,-768 # d00 <__BSS_SIZE__-0x4f10> + 3bc0631a: 97aa add a5,a5,a0 + 3bc0631c: e81c sd a5,16(s0) + 3bc0631e: d024 sw s1,96(s0) + 3bc06320: 4501 li a0,0 + 3bc06322: 60e2 ld ra,24(sp) + 3bc06324: 6442 ld s0,16(sp) + 3bc06326: 64a2 ld s1,8(sp) + 3bc06328: 6902 ld s2,0(sp) + 3bc0632a: 6105 addi sp,sp,32 + 3bc0632c: 8082 ret + +000000003bc0632e : + 3bc0632e: 4791 li a5,4 + 3bc06330: 00c7e463 bltu a5,a2,3bc06338 + 3bc06334: 4511 li a0,4 + 3bc06336: 8082 ret + 3bc06338: 0015a703 lw a4,1(a1) + 3bc0633c: 6685 lui a3,0x1 + 3bc0633e: 87ba mv a5,a4 + 3bc06340: 00d77363 bgeu a4,a3,3bc06346 + 3bc06344: 6785 lui a5,0x1 + 3bc06346: c15c sw a5,4(a0) + 3bc06348: 0005c783 lbu a5,0(a1) + 3bc0634c: 0e000713 li a4,224 + 3bc06350: fef762e3 bltu a4,a5,3bc06334 + 3bc06354: 4725 li a4,9 + 3bc06356: 02e7f6bb remuw a3,a5,a4 + 3bc0635a: 02e7d7bb divuw a5,a5,a4 + 3bc0635e: 4715 li a4,5 + 3bc06360: 00d50023 sb a3,0(a0) + 3bc06364: 02e7d6bb divuw a3,a5,a4 + 3bc06368: 02e7f7bb remuw a5,a5,a4 + 3bc0636c: 00d50123 sb a3,2(a0) + 3bc06370: 00f500a3 sb a5,1(a0) + 3bc06374: 4501 li a0,0 + 3bc06376: 8082 ret + +000000003bc06378 : + 3bc06378: 7179 addi sp,sp,-48 + 3bc0637a: f022 sd s0,32(sp) + 3bc0637c: 842a mv s0,a0 + 3bc0637e: 0828 addi a0,sp,24 + 3bc06380: f406 sd ra,40(sp) + 3bc06382: e436 sd a3,8(sp) + 3bc06384: fabff0ef jal ra,3bc0632e + 3bc06388: ed01 bnez a0,3bc063a0 + 3bc0638a: 66a2 ld a3,8(sp) + 3bc0638c: 01914603 lbu a2,25(sp) + 3bc06390: 01814583 lbu a1,24(sp) + 3bc06394: 8522 mv a0,s0 + 3bc06396: f33ff0ef jal ra,3bc062c8 + 3bc0639a: e119 bnez a0,3bc063a0 + 3bc0639c: 67e2 ld a5,24(sp) + 3bc0639e: e01c sd a5,0(s0) + 3bc063a0: 70a2 ld ra,40(sp) + 3bc063a2: 7402 ld s0,32(sp) + 3bc063a4: 6145 addi sp,sp,48 + 3bc063a6: 8082 ret + +000000003bc063a8 : + 3bc063a8: 7155 addi sp,sp,-208 + 3bc063aa: e1a2 sd s0,192(sp) + 3bc063ac: f152 sd s4,160(sp) + 3bc063ae: ed56 sd s5,152(sp) + 3bc063b0: e586 sd ra,200(sp) + 3bc063b2: fd26 sd s1,184(sp) + 3bc063b4: f94a sd s2,176(sp) + 3bc063b6: f54e sd s3,168(sp) + 3bc063b8: e95a sd s6,144(sp) + 3bc063ba: e55e sd s7,136(sp) + 3bc063bc: e162 sd s8,128(sp) + 3bc063be: 0005ba03 ld s4,0(a1) + 3bc063c2: 0006ba83 ld s5,0(a3) # 1000 <__BSS_SIZE__-0x4c10> + 3bc063c6: 0006b023 sd zero,0(a3) + 3bc063ca: 0005b023 sd zero,0(a1) + 3bc063ce: 833a mv t1,a4 + 3bc063d0: 0008a023 sw zero,0(a7) + 3bc063d4: 4711 li a4,4 + 3bc063d6: 4419 li s0,6 + 3bc063d8: 07577063 bgeu a4,s5,3bc06438 + 3bc063dc: 84b6 mv s1,a3 + 3bc063de: 66ce ld a3,208(sp) + 3bc063e0: 8bb2 mv s7,a2 + 3bc063e2: 8c2e mv s8,a1 + 3bc063e4: 89aa mv s3,a0 + 3bc063e6: 863e mv a2,a5 + 3bc063e8: 859a mv a1,t1 + 3bc063ea: 850a mv a0,sp + 3bc063ec: 8946 mv s2,a7 + 3bc063ee: 8b42 mv s6,a6 + 3bc063f0: ec02 sd zero,24(sp) + 3bc063f2: e402 sd zero,8(sp) + 3bc063f4: f85ff0ef jal ra,3bc06378 + 3bc063f8: 842a mv s0,a0 + 3bc063fa: ed1d bnez a0,3bc06438 + 3bc063fc: 850a mv a0,sp + 3bc063fe: ec4e sd s3,24(sp) + 3bc06400: f052 sd s4,32(sp) + 3bc06402: c1bff0ef jal ra,3bc0601c + 3bc06406: 87ca mv a5,s2 + 3bc06408: 0154b023 sd s5,0(s1) + 3bc0640c: 875a mv a4,s6 + 3bc0640e: 86a6 mv a3,s1 + 3bc06410: 865e mv a2,s7 + 3bc06412: 85d2 mv a1,s4 + 3bc06414: 850a mv a0,sp + 3bc06416: c1bff0ef jal ra,3bc06030 + 3bc0641a: 77a2 ld a5,40(sp) + 3bc0641c: 842a mv s0,a0 + 3bc0641e: 00fc3023 sd a5,0(s8) + 3bc06422: e519 bnez a0,3bc06430 + 3bc06424: 00092703 lw a4,0(s2) + 3bc06428: 478d li a5,3 + 3bc0642a: 00f71363 bne a4,a5,3bc06430 + 3bc0642e: 4419 li s0,6 + 3bc06430: 65ce ld a1,208(sp) + 3bc06432: 850a mv a0,sp + 3bc06434: e79ff0ef jal ra,3bc062ac + 3bc06438: 60ae ld ra,200(sp) + 3bc0643a: 8522 mv a0,s0 + 3bc0643c: 640e ld s0,192(sp) + 3bc0643e: 74ea ld s1,184(sp) + 3bc06440: 794a ld s2,176(sp) + 3bc06442: 79aa ld s3,168(sp) + 3bc06444: 7a0a ld s4,160(sp) + 3bc06446: 6aea ld s5,152(sp) + 3bc06448: 6b4a ld s6,144(sp) + 3bc0644a: 6baa ld s7,136(sp) + 3bc0644c: 6c0a ld s8,128(sp) + 3bc0644e: 6169 addi sp,sp,208 + 3bc06450: 8082 ret + +000000003bc06452 : + 3bc06452: 00154783 lbu a5,1(a0) + 3bc06456: 00254703 lbu a4,2(a0) + 3bc0645a: 00054683 lbu a3,0(a0) + 3bc0645e: 00354503 lbu a0,3(a0) + 3bc06462: 0107171b slliw a4,a4,0x10 + 3bc06466: 0087979b slliw a5,a5,0x8 + 3bc0646a: 9fb9 addw a5,a5,a4 + 3bc0646c: 9fb5 addw a5,a5,a3 + 3bc0646e: 0185151b slliw a0,a0,0x18 + 3bc06472: 9d3d addw a0,a0,a5 + 3bc06474: 8082 ret + +000000003bc06476 : + 3bc06476: 40e58733 sub a4,a1,a4 + 3bc0647a: 26050763 beqz a0,3bc066e8 + 3bc0647e: 00c50e33 add t3,a0,a2 + 3bc06482: 7119 addi sp,sp,-128 + 3bc06484: ff0e0793 addi a5,t3,-16 # fffff0 <__BSS_SIZE__+0xffa3e0> + 3bc06488: ecce sd s3,88(sp) + 3bc0648a: 00d58eb3 add t4,a1,a3 + 3bc0648e: fc86 sd ra,120(sp) + 3bc06490: f8a2 sd s0,112(sp) + 3bc06492: f4a6 sd s1,104(sp) + 3bc06494: f0ca sd s2,96(sp) + 3bc06496: e8d2 sd s4,80(sp) + 3bc06498: e4d6 sd s5,72(sp) + 3bc0649a: e0da sd s6,64(sp) + 3bc0649c: fc5e sd s7,56(sp) + 3bc0649e: f862 sd s8,48(sp) + 3bc064a0: f466 sd s9,40(sp) + 3bc064a2: f06a sd s10,32(sp) + 3bc064a4: ec6e sd s11,24(sp) + 3bc064a6: e43e sd a5,8(sp) + 3bc064a8: 832a mv t1,a0 + 3bc064aa: fe0e8993 addi s3,t4,-32 + 3bc064ae: ea95 bnez a3,3bc064e2 + 3bc064b0: 4785 li a5,1 + 3bc064b2: 557d li a0,-1 + 3bc064b4: 00f61863 bne a2,a5,3bc064c4 + 3bc064b8: 00034503 lbu a0,0(t1) + 3bc064bc: 00a03533 snez a0,a0 + 3bc064c0: 0005250b ext a0,a0,0,0 + 3bc064c4: 70e6 ld ra,120(sp) + 3bc064c6: 7446 ld s0,112(sp) + 3bc064c8: 74a6 ld s1,104(sp) + 3bc064ca: 7906 ld s2,96(sp) + 3bc064cc: 69e6 ld s3,88(sp) + 3bc064ce: 6a46 ld s4,80(sp) + 3bc064d0: 6aa6 ld s5,72(sp) + 3bc064d2: 6b06 ld s6,64(sp) + 3bc064d4: 7be2 ld s7,56(sp) + 3bc064d6: 7c42 ld s8,48(sp) + 3bc064d8: 7ca2 ld s9,40(sp) + 3bc064da: 7d02 ld s10,32(sp) + 3bc064dc: 6de2 ld s11,24(sp) + 3bc064de: 6109 addi sp,sp,128 + 3bc064e0: 8082 ret + 3bc064e2: 557d li a0,-1 + 3bc064e4: d265 beqz a2,3bc064c4 + 3bc064e6: 879a mv a5,t1 + 3bc064e8: 882e mv a6,a1 + 3bc064ea: 4fbd li t6,15 + 3bc064ec: 429d li t0,7 + 3bc064ee: ff4e8393 addi t2,t4,-12 + 3bc064f2: 4a41 li s4,16 + 3bc064f4: ff9e8f13 addi t5,t4,-7 + 3bc064f8: ffbe8a93 addi s5,t4,-5 + 3bc064fc: 00005b17 auipc s6,0x5 + 3bc06500: c9cb0b13 addi s6,s6,-868 # 3bc0b198 + 3bc06504: 00005b97 auipc s7,0x5 + 3bc06508: c74b8b93 addi s7,s7,-908 # 3bc0b178 + 3bc0650c: ffce0c13 addi s8,t3,-4 + 3bc06510: 0ff00493 li s1,255 + 3bc06514: ff8e0c93 addi s9,t3,-8 + 3bc06518: ff1e0913 addi s2,t3,-15 + 3bc0651c: 5d7d li s10,-1 + 3bc0651e: 9817c50b lbuia a0,(a5),1,0 + 3bc06522: 00455693 srli a3,a0,0x4 + 3bc06526: 0045561b srliw a2,a0,0x4 + 3bc0652a: 07f68063 beq a3,t6,3bc0658a + 3bc0652e: 0109b8b3 sltu a7,s3,a6 + 3bc06532: 0018c893 xori a7,a7,1 + 3bc06536: 0ff8f893 andi a7,a7,255 + 3bc0653a: 00c80433 add s0,a6,a2 + 3bc0653e: 00c786b3 add a3,a5,a2 + 3bc06542: 06088d63 beqz a7,3bc065bc + 3bc06546: 68a2 ld a7,8(sp) + 3bc06548: 0717fa63 bgeu a5,a7,3bc065bc + 3bc0654c: 6390 ld a2,0(a5) + 3bc0654e: 893d andi a0,a0,15 + 3bc06550: 00c83023 sd a2,0(a6) + 3bc06554: 679c ld a5,8(a5) + 3bc06556: 862a mv a2,a0 + 3bc06558: 00f83423 sd a5,8(a6) + 3bc0655c: 87b6 mv a5,a3 + 3bc0655e: b827c88b lhuia a7,(a5),2,0 + 3bc06562: 411406b3 sub a3,s0,a7 + 3bc06566: 0bf50763 beq a0,t6,3bc06614 + 3bc0656a: 0d12f563 bgeu t0,a7,3bc06634 + 3bc0656e: 0ce6e363 bltu a3,a4,3bc06634 + 3bc06572: 6290 ld a2,0(a3) + 3bc06574: 0511 addi a0,a0,4 + 3bc06576: 00a40833 add a6,s0,a0 + 3bc0657a: e010 sd a2,0(s0) + 3bc0657c: 6690 ld a2,8(a3) + 3bc0657e: e410 sd a2,8(s0) + 3bc06580: 0106d683 lhu a3,16(a3) + 3bc06584: 00d41823 sh a3,16(s0) + 3bc06588: bf59 j 3bc0651e + 3bc0658a: 0527fd63 bgeu a5,s2,3bc065e4 + 3bc0658e: 4601 li a2,0 + 3bc06590: 9817c88b lbuia a7,(a5),1,0 + 3bc06594: 00c8863b addw a2,a7,a2 + 3bc06598: 0527f963 bgeu a5,s2,3bc065ea + 3bc0659c: fe988ae3 beq a7,s1,3bc06590 + 3bc065a0: 4681 li a3,0 + 3bc065a2: 7c06360b extu a2,a2,31,0 + 3bc065a6: 063d addi a2,a2,15 + 3bc065a8: 13a68a63 beq a3,s10,3bc066dc + 3bc065ac: 010606b3 add a3,a2,a6 + 3bc065b0: 1306e663 bltu a3,a6,3bc066dc + 3bc065b4: 00f606b3 add a3,a2,a5 + 3bc065b8: 12f6e263 bltu a3,a5,3bc066dc + 3bc065bc: 00c80433 add s0,a6,a2 + 3bc065c0: 00c788b3 add a7,a5,a2 + 3bc065c4: 0083e463 bltu t2,s0,3bc065cc + 3bc065c8: 031cf363 bgeu s9,a7,3bc065ee + 3bc065cc: 111e1863 bne t3,a7,3bc066dc + 3bc065d0: 108ee663 bltu t4,s0,3bc066dc + 3bc065d4: 84ae mv s1,a1 + 3bc065d6: 8542 mv a0,a6 + 3bc065d8: 85be mv a1,a5 + 3bc065da: cf2fa0ef jal ra,3bc00acc + 3bc065de: 4094053b subw a0,s0,s1 + 3bc065e2: b5cd j 3bc064c4 + 3bc065e4: 56fd li a3,-1 + 3bc065e6: 4601 li a2,0 + 3bc065e8: bf6d j 3bc065a2 + 3bc065ea: 56f9 li a3,-2 + 3bc065ec: bf5d j 3bc065a2 + 3bc065ee: 4681 li a3,0 + 3bc065f0: 60d7c60b lrd a2,a5,a3,0 + 3bc065f4: 60d8560b srd a2,a6,a3,0 + 3bc065f8: 06a1 addi a3,a3,8 + 3bc065fa: 00d80633 add a2,a6,a3 + 3bc065fe: fe8669e3 bltu a2,s0,3bc065f0 + 3bc06602: 87c6 mv a5,a7 + 3bc06604: b827c88b lhuia a7,(a5),2,0 + 3bc06608: 00f57613 andi a2,a0,15 + 3bc0660c: 411406b3 sub a3,s0,a7 + 3bc06610: 03f61263 bne a2,t6,3bc06634 + 3bc06614: 4601 li a2,0 + 3bc06616: 9817c80b lbuia a6,(a5),1,0 + 3bc0661a: 00c8063b addw a2,a6,a2 + 3bc0661e: 0b87ff63 bgeu a5,s8,3bc066dc + 3bc06622: fe980ae3 beq a6,s1,3bc06616 + 3bc06626: 7c06360b extu a2,a2,31,0 + 3bc0662a: 063d addi a2,a2,15 + 3bc0662c: 00860533 add a0,a2,s0 + 3bc06630: 0a856663 bltu a0,s0,3bc066dc + 3bc06634: 0611 addi a2,a2,4 + 3bc06636: 0ae6e363 bltu a3,a4,3bc066dc + 3bc0663a: 00c40833 add a6,s0,a2 + 3bc0663e: 0712e463 bltu t0,a7,3bc066a6 + 3bc06642: 00042023 sw zero,0(s0) + 3bc06646: 0006c503 lbu a0,0(a3) + 3bc0664a: 00a40023 sb a0,0(s0) + 3bc0664e: 0016c503 lbu a0,1(a3) + 3bc06652: 00a400a3 sb a0,1(s0) + 3bc06656: 0026c503 lbu a0,2(a3) + 3bc0665a: 00a40123 sb a0,2(s0) + 3bc0665e: 0036c503 lbu a0,3(a3) + 3bc06662: 00a401a3 sb a0,3(s0) + 3bc06666: c51b450b lrwu a0,s6,a7,2 + 3bc0666a: 00a68db3 add s11,a3,a0 + 3bc0666e: 40a6c68b lrw a3,a3,a0,0 + 3bc06672: c054 sw a3,4(s0) + 3bc06674: 451bc68b lrw a3,s7,a7,2 + 3bc06678: 40dd86b3 sub a3,s11,a3 + 3bc0667c: 0503f363 bgeu t2,a6,3bc066c2 + 3bc06680: 050aee63 bltu s5,a6,3bc066dc + 3bc06684: 0421 addi s0,s0,8 + 3bc06686: 01e47e63 bgeu s0,t5,3bc066a2 + 3bc0668a: 8536 mv a0,a3 + 3bc0668c: 8622 mv a2,s0 + 3bc0668e: 7885488b ldia a7,(a0),8,0 + 3bc06692: 7886588b sdia a7,(a2),8,0 + 3bc06696: ffe66ce3 bltu a2,t5,3bc0668e + 3bc0669a: 408f0433 sub s0,t5,s0 + 3bc0669e: 96a2 add a3,a3,s0 + 3bc066a0: 847a mv s0,t5 + 3bc066a2: 4601 li a2,0 + 3bc066a4: a811 j 3bc066b8 + 3bc066a6: 7886c50b ldia a0,(a3),8,0 + 3bc066aa: e008 sd a0,0(s0) + 3bc066ac: bfc1 j 3bc0667c + 3bc066ae: 80c6c50b lrbu a0,a3,a2,0 + 3bc066b2: 00c4550b srb a0,s0,a2,0 + 3bc066b6: 0605 addi a2,a2,1 + 3bc066b8: 00c40533 add a0,s0,a2 + 3bc066bc: ff0569e3 bltu a0,a6,3bc066ae + 3bc066c0: bdb9 j 3bc0651e + 3bc066c2: 6288 ld a0,0(a3) + 3bc066c4: e408 sd a0,8(s0) + 3bc066c6: e4ca7ce3 bgeu s4,a2,3bc0651e + 3bc066ca: 0441 addi s0,s0,16 + 3bc066cc: 06a1 addi a3,a3,8 + 3bc066ce: 7886c60b ldia a2,(a3),8,0 + 3bc066d2: 7884560b sdia a2,(s0),8,0 + 3bc066d6: ff046ce3 bltu s0,a6,3bc066ce + 3bc066da: b591 j 3bc0651e + 3bc066dc: 40678533 sub a0,a5,t1 + 3bc066e0: fff54513 not a0,a0 + 3bc066e4: 2501 sext.w a0,a0 + 3bc066e6: bbf9 j 3bc064c4 + 3bc066e8: 557d li a0,-1 + 3bc066ea: 8082 ret + +000000003bc066ec : + 3bc066ec: 06853803 ld a6,104(a0) + 3bc066f0: 7179 addi sp,sp,-48 + 3bc066f2: f022 sd s0,32(sp) + 3bc066f4: f406 sd ra,40(sp) + 3bc066f6: ec26 sd s1,24(sp) + 3bc066f8: e84a sd s2,16(sp) + 3bc066fa: e44e sd s3,8(sp) + 3bc066fc: 842a mv s0,a0 + 3bc066fe: 00081363 bnez a6,3bc06704 + 3bc06702: f12c sd a1,96(a0) + 3bc06704: 7028 ld a0,96(s0) + 3bc06706: 010507b3 add a5,a0,a6 + 3bc0670a: 00f59663 bne a1,a5,3bc06716 + 3bc0670e: 00c807b3 add a5,a6,a2 + 3bc06712: f43c sd a5,104(s0) + 3bc06714: a811 j 3bc06728 + 3bc06716: 40d588b3 sub a7,a1,a3 + 3bc0671a: 98b2 add a7,a7,a2 + 3bc0671c: 67c1 lui a5,0x10 + 3bc0671e: 00f8ec63 bltu a7,a5,3bc06736 + 3bc06722: f034 sd a3,96(s0) + 3bc06724: 07143423 sd a7,104(s0) + 3bc06728: 70a2 ld ra,40(sp) + 3bc0672a: 7402 ld s0,32(sp) + 3bc0672c: 64e2 ld s1,24(sp) + 3bc0672e: 6942 ld s2,16(sp) + 3bc06730: 69a2 ld s3,8(sp) + 3bc06732: 6145 addi sp,sp,48 + 3bc06734: 8082 ret + 3bc06736: 6c34 ld a3,88(s0) + 3bc06738: 84b2 mv s1,a2 + 3bc0673a: 89ae mv s3,a1 + 3bc0673c: cb29 beqz a4,3bc0678e + 3bc0673e: 00d51563 bne a0,a3,3bc06748 + 3bc06742: 00c807b3 add a5,a6,a2 + 3bc06746: b7f1 j 3bc06712 + 3bc06748: 07043903 ld s2,112(s0) + 3bc0674c: 604c ld a1,128(s0) + 3bc0674e: 7c38 ld a4,120(s0) + 3bc06750: 40d90933 sub s2,s2,a3 + 3bc06754: 40b805b3 sub a1,a6,a1 + 3bc06758: 4601 li a2,0 + 3bc0675a: 00e7ea63 bltu a5,a4,3bc0676e + 3bc0675e: 40e78633 sub a2,a5,a4 + 3bc06762: 00c937b3 sltu a5,s2,a2 + 3bc06766: 0017c793 xori a5,a5,1 + 3bc0676a: 40f9160b mveqz a2,s2,a5 + 3bc0676e: 40c907b3 sub a5,s2,a2 + 3bc06772: 8d91 sub a1,a1,a2 + 3bc06774: 95aa add a1,a1,a0 + 3bc06776: 00f68533 add a0,a3,a5 + 3bc0677a: af2fa0ef jal ra,3bc00a6c + 3bc0677e: 6050 ld a2,128(s0) + 3bc06780: 6c3c ld a5,88(s0) + 3bc06782: 94b2 add s1,s1,a2 + 3bc06784: 9926 add s2,s2,s1 + 3bc06786: f03c sd a5,96(s0) + 3bc06788: 07243423 sd s2,104(s0) + 3bc0678c: bf71 j 3bc06728 + 3bc0678e: 02d51e63 bne a0,a3,3bc067ca + 3bc06792: 7c14 ld a3,56(s0) + 3bc06794: 00c80733 add a4,a6,a2 + 3bc06798: 00e6fe63 bgeu a3,a4,3bc067b4 + 3bc0679c: 40c78933 sub s2,a5,a2 + 3bc067a0: 40f607b3 sub a5,a2,a5 + 3bc067a4: 97c2 add a5,a5,a6 + 3bc067a6: 864a mv a2,s2 + 3bc067a8: 00f505b3 add a1,a0,a5 + 3bc067ac: ac0fa0ef jal ra,3bc00a6c + 3bc067b0: 07243423 sd s2,104(s0) + 3bc067b4: 6c28 ld a0,88(s0) + 3bc067b6: 743c ld a5,104(s0) + 3bc067b8: 8626 mv a2,s1 + 3bc067ba: 85ce mv a1,s3 + 3bc067bc: 953e add a0,a0,a5 + 3bc067be: aaefa0ef jal ra,3bc00a6c + 3bc067c2: 7430 ld a2,104(s0) + 3bc067c4: 94b2 add s1,s1,a2 + 3bc067c6: f424 sd s1,104(s0) + 3bc067c8: b785 j 3bc06728 + 3bc067ca: 8f91 sub a5,a5,a2 + 3bc067cc: 0107b733 sltu a4,a5,a6 + 3bc067d0: 00174713 xori a4,a4,1 + 3bc067d4: 42e8178b mvnez a5,a6,a4 + 3bc067d8: 40f805b3 sub a1,a6,a5 + 3bc067dc: 863e mv a2,a5 + 3bc067de: 95aa add a1,a1,a0 + 3bc067e0: 8536 mv a0,a3 + 3bc067e2: 893e mv s2,a5 + 3bc067e4: a88fa0ef jal ra,3bc00a6c + 3bc067e8: 6c28 ld a0,88(s0) + 3bc067ea: 8626 mv a2,s1 + 3bc067ec: 85ce mv a1,s3 + 3bc067ee: 954a add a0,a0,s2 + 3bc067f0: a7cfa0ef jal ra,3bc00a6c + 3bc067f4: 6c3c ld a5,88(s0) + 3bc067f6: 94ca add s1,s1,s2 + 3bc067f8: f03c sd a5,96(s0) + 3bc067fa: b7f1 j 3bc067c6 + +000000003bc067fc : + 3bc067fc: 26050463 beqz a0,3bc06a64 + 3bc06800: 7159 addi sp,sp,-112 + 3bc06802: eca6 sd s1,88(sp) + 3bc06804: 00c50833 add a6,a0,a2 + 3bc06808: 00d588b3 add a7,a1,a3 + 3bc0680c: f486 sd ra,104(sp) + 3bc0680e: f0a2 sd s0,96(sp) + 3bc06810: e8ca sd s2,80(sp) + 3bc06812: e4ce sd s3,72(sp) + 3bc06814: e0d2 sd s4,64(sp) + 3bc06816: fc56 sd s5,56(sp) + 3bc06818: f85a sd s6,48(sp) + 3bc0681a: f45e sd s7,40(sp) + 3bc0681c: f062 sd s8,32(sp) + 3bc0681e: ec66 sd s9,24(sp) + 3bc06820: e86a sd s10,16(sp) + 3bc06822: e46e sd s11,8(sp) + 3bc06824: ff080393 addi t2,a6,-16 + 3bc06828: fe088493 addi s1,a7,-32 + 3bc0682c: ea9d bnez a3,3bc06862 + 3bc0682e: 4705 li a4,1 + 3bc06830: 57fd li a5,-1 + 3bc06832: 00e61863 bne a2,a4,3bc06842 + 3bc06836: 00054783 lbu a5,0(a0) + 3bc0683a: 00f037b3 snez a5,a5 + 3bc0683e: 0007a78b ext a5,a5,0,0 + 3bc06842: 70a6 ld ra,104(sp) + 3bc06844: 7406 ld s0,96(sp) + 3bc06846: 64e6 ld s1,88(sp) + 3bc06848: 6946 ld s2,80(sp) + 3bc0684a: 69a6 ld s3,72(sp) + 3bc0684c: 6a06 ld s4,64(sp) + 3bc0684e: 7ae2 ld s5,56(sp) + 3bc06850: 7b42 ld s6,48(sp) + 3bc06852: 7ba2 ld s7,40(sp) + 3bc06854: 7c02 ld s8,32(sp) + 3bc06856: 6ce2 ld s9,24(sp) + 3bc06858: 6d42 ld s10,16(sp) + 3bc0685a: 6da2 ld s11,8(sp) + 3bc0685c: 853e mv a0,a5 + 3bc0685e: 6165 addi sp,sp,112 + 3bc06860: 8082 ret + 3bc06862: 57fd li a5,-1 + 3bc06864: de79 beqz a2,3bc06842 + 3bc06866: 87aa mv a5,a0 + 3bc06868: 872e mv a4,a1 + 3bc0686a: 4e3d li t3,15 + 3bc0686c: 4e9d li t4,7 + 3bc0686e: ff488f13 addi t5,a7,-12 + 3bc06872: 4941 li s2,16 + 3bc06874: ff988313 addi t1,a7,-7 + 3bc06878: ffb88993 addi s3,a7,-5 + 3bc0687c: 00005a17 auipc s4,0x5 + 3bc06880: 91ca0a13 addi s4,s4,-1764 # 3bc0b198 + 3bc06884: 00005a97 auipc s5,0x5 + 3bc06888: 8f4a8a93 addi s5,s5,-1804 # 3bc0b178 + 3bc0688c: ffc80b13 addi s6,a6,-4 + 3bc06890: 0ff00f93 li t6,255 + 3bc06894: ff880b93 addi s7,a6,-8 + 3bc06898: ff180293 addi t0,a6,-15 + 3bc0689c: 5c7d li s8,-1 + 3bc0689e: 9817c68b lbuia a3,(a5),1,0 + 3bc068a2: 0046d413 srli s0,a3,0x4 + 3bc068a6: 0046d61b srliw a2,a3,0x4 + 3bc068aa: 05c40d63 beq s0,t3,3bc06904 + 3bc068ae: 00e4bd33 sltu s10,s1,a4 + 3bc068b2: 001d4d13 xori s10,s10,1 + 3bc068b6: 0ffd7d13 andi s10,s10,255 + 3bc068ba: 00c70433 add s0,a4,a2 + 3bc068be: 00c78cb3 add s9,a5,a2 + 3bc068c2: 060d0a63 beqz s10,3bc06936 + 3bc068c6: 0677f863 bgeu a5,t2,3bc06936 + 3bc068ca: 6390 ld a2,0(a5) + 3bc068cc: e310 sd a2,0(a4) + 3bc068ce: 679c ld a5,8(a5) + 3bc068d0: e71c sd a5,8(a4) + 3bc068d2: 87e6 mv a5,s9 + 3bc068d4: b827cc8b lhuia s9,(a5),2,0 + 3bc068d8: 00f6f713 andi a4,a3,15 + 3bc068dc: 86ba mv a3,a4 + 3bc068de: 41940633 sub a2,s0,s9 + 3bc068e2: 0bc70563 beq a4,t3,3bc0698c + 3bc068e6: 0d9ef363 bgeu t4,s9,3bc069ac + 3bc068ea: 0cb66163 bltu a2,a1,3bc069ac + 3bc068ee: 6214 ld a3,0(a2) + 3bc068f0: 0711 addi a4,a4,4 + 3bc068f2: 9722 add a4,a4,s0 + 3bc068f4: e014 sd a3,0(s0) + 3bc068f6: 6614 ld a3,8(a2) + 3bc068f8: e414 sd a3,8(s0) + 3bc068fa: 01065683 lhu a3,16(a2) + 3bc068fe: 00d41823 sh a3,16(s0) + 3bc06902: bf71 j 3bc0689e + 3bc06904: 0457fd63 bgeu a5,t0,3bc0695e + 3bc06908: 4601 li a2,0 + 3bc0690a: 9817cc8b lbuia s9,(a5),1,0 + 3bc0690e: 00cc863b addw a2,s9,a2 + 3bc06912: 0457f963 bgeu a5,t0,3bc06964 + 3bc06916: fffc8ae3 beq s9,t6,3bc0690a + 3bc0691a: 4401 li s0,0 + 3bc0691c: 7c06360b extu a2,a2,31,0 + 3bc06920: 063d addi a2,a2,15 + 3bc06922: 13840c63 beq s0,s8,3bc06a5a + 3bc06926: 00e60433 add s0,a2,a4 + 3bc0692a: 12e46863 bltu s0,a4,3bc06a5a + 3bc0692e: 00f60433 add s0,a2,a5 + 3bc06932: 12f46463 bltu s0,a5,3bc06a5a + 3bc06936: 00c70433 add s0,a4,a2 + 3bc0693a: 00c78cb3 add s9,a5,a2 + 3bc0693e: 008f6463 bltu t5,s0,3bc06946 + 3bc06942: 039bf363 bgeu s7,s9,3bc06968 + 3bc06946: 11981a63 bne a6,s9,3bc06a5a + 3bc0694a: 1088e863 bltu a7,s0,3bc06a5a + 3bc0694e: 84ae mv s1,a1 + 3bc06950: 853a mv a0,a4 + 3bc06952: 85be mv a1,a5 + 3bc06954: 978fa0ef jal ra,3bc00acc + 3bc06958: 409407bb subw a5,s0,s1 + 3bc0695c: b5dd j 3bc06842 + 3bc0695e: 547d li s0,-1 + 3bc06960: 4601 li a2,0 + 3bc06962: bf6d j 3bc0691c + 3bc06964: 5479 li s0,-2 + 3bc06966: bf5d j 3bc0691c + 3bc06968: 4601 li a2,0 + 3bc0696a: 60c7cd0b lrd s10,a5,a2,0 + 3bc0696e: 60c75d0b srd s10,a4,a2,0 + 3bc06972: 0621 addi a2,a2,8 + 3bc06974: 00c70d33 add s10,a4,a2 + 3bc06978: fe8d69e3 bltu s10,s0,3bc0696a + 3bc0697c: 87e6 mv a5,s9 + 3bc0697e: b827cc8b lhuia s9,(a5),2,0 + 3bc06982: 8abd andi a3,a3,15 + 3bc06984: 41940633 sub a2,s0,s9 + 3bc06988: 03c69263 bne a3,t3,3bc069ac + 3bc0698c: 4681 li a3,0 + 3bc0698e: 9817cd0b lbuia s10,(a5),1,0 + 3bc06992: 00dd06bb addw a3,s10,a3 + 3bc06996: 0d67f263 bgeu a5,s6,3bc06a5a + 3bc0699a: fffd0ae3 beq s10,t6,3bc0698e + 3bc0699e: 7c06b68b extu a3,a3,31,0 + 3bc069a2: 06bd addi a3,a3,15 + 3bc069a4: 00868733 add a4,a3,s0 + 3bc069a8: 0a876963 bltu a4,s0,3bc06a5a + 3bc069ac: 0691 addi a3,a3,4 + 3bc069ae: 0ab66663 bltu a2,a1,3bc06a5a + 3bc069b2: 00d40733 add a4,s0,a3 + 3bc069b6: 079ee463 bltu t4,s9,3bc06a1e + 3bc069ba: 00042023 sw zero,0(s0) + 3bc069be: 00064d03 lbu s10,0(a2) + 3bc069c2: 01a40023 sb s10,0(s0) + 3bc069c6: 00164d03 lbu s10,1(a2) + 3bc069ca: 01a400a3 sb s10,1(s0) + 3bc069ce: 00264d03 lbu s10,2(a2) + 3bc069d2: 01a40123 sb s10,2(s0) + 3bc069d6: 00364d03 lbu s10,3(a2) + 3bc069da: 01a401a3 sb s10,3(s0) + 3bc069de: c59a4d0b lrwu s10,s4,s9,2 + 3bc069e2: 01a60db3 add s11,a2,s10 + 3bc069e6: 41a6460b lrw a2,a2,s10,0 + 3bc069ea: c050 sw a2,4(s0) + 3bc069ec: 459ac60b lrw a2,s5,s9,2 + 3bc069f0: 40cd8633 sub a2,s11,a2 + 3bc069f4: 04ef7463 bgeu t5,a4,3bc06a3c + 3bc069f8: 06e9e163 bltu s3,a4,3bc06a5a + 3bc069fc: 0421 addi s0,s0,8 + 3bc069fe: 00647e63 bgeu s0,t1,3bc06a1a + 3bc06a02: 8cb2 mv s9,a2 + 3bc06a04: 86a2 mv a3,s0 + 3bc06a06: 788ccd0b ldia s10,(s9),8,0 + 3bc06a0a: 7886dd0b sdia s10,(a3),8,0 + 3bc06a0e: fe66ece3 bltu a3,t1,3bc06a06 + 3bc06a12: 40830433 sub s0,t1,s0 + 3bc06a16: 9622 add a2,a2,s0 + 3bc06a18: 841a mv s0,t1 + 3bc06a1a: 4681 li a3,0 + 3bc06a1c: a819 j 3bc06a32 + 3bc06a1e: 78864c8b ldia s9,(a2),8,0 + 3bc06a22: 01943023 sd s9,0(s0) + 3bc06a26: b7f9 j 3bc069f4 + 3bc06a28: 80d64c8b lrbu s9,a2,a3,0 + 3bc06a2c: 00d45c8b srb s9,s0,a3,0 + 3bc06a30: 0685 addi a3,a3,1 + 3bc06a32: 00d40cb3 add s9,s0,a3 + 3bc06a36: feece9e3 bltu s9,a4,3bc06a28 + 3bc06a3a: b595 j 3bc0689e + 3bc06a3c: 00063c83 ld s9,0(a2) + 3bc06a40: 01943423 sd s9,8(s0) + 3bc06a44: e4d97de3 bgeu s2,a3,3bc0689e + 3bc06a48: 0441 addi s0,s0,16 + 3bc06a4a: 0621 addi a2,a2,8 + 3bc06a4c: 7886468b ldia a3,(a2),8,0 + 3bc06a50: 7884568b sdia a3,(s0),8,0 + 3bc06a54: fee46ce3 bltu s0,a4,3bc06a4c + 3bc06a58: b599 j 3bc0689e + 3bc06a5a: 8f89 sub a5,a5,a0 + 3bc06a5c: fff7c793 not a5,a5 + 3bc06a60: 2781 sext.w a5,a5 + 3bc06a62: b3c5 j 3bc06842 + 3bc06a64: 57fd li a5,-1 + 3bc06a66: 853e mv a0,a5 + 3bc06a68: 8082 ret + +000000003bc06a6a : + 3bc06a6a: 77c1 lui a5,0xffff0 + 3bc06a6c: 7119 addi sp,sp,-128 + 3bc06a6e: 97ae add a5,a5,a1 + 3bc06a70: fc86 sd ra,120(sp) + 3bc06a72: f8a2 sd s0,112(sp) + 3bc06a74: f4a6 sd s1,104(sp) + 3bc06a76: f0ca sd s2,96(sp) + 3bc06a78: ecce sd s3,88(sp) + 3bc06a7a: e8d2 sd s4,80(sp) + 3bc06a7c: e4d6 sd s5,72(sp) + 3bc06a7e: e0da sd s6,64(sp) + 3bc06a80: fc5e sd s7,56(sp) + 3bc06a82: f862 sd s8,48(sp) + 3bc06a84: f466 sd s9,40(sp) + 3bc06a86: f06a sd s10,32(sp) + 3bc06a88: ec6e sd s11,24(sp) + 3bc06a8a: e43e sd a5,8(sp) + 3bc06a8c: 24050263 beqz a0,3bc06cd0 + 3bc06a90: 00c50333 add t1,a0,a2 + 3bc06a94: 00d58e33 add t3,a1,a3 + 3bc06a98: 88aa mv a7,a0 + 3bc06a9a: ff030913 addi s2,t1,-16 + 3bc06a9e: fe0e0993 addi s3,t3,-32 + 3bc06aa2: ea95 bnez a3,3bc06ad6 + 3bc06aa4: 4785 li a5,1 + 3bc06aa6: 557d li a0,-1 + 3bc06aa8: 00f61863 bne a2,a5,3bc06ab8 + 3bc06aac: 0008c503 lbu a0,0(a7) + 3bc06ab0: 00a03533 snez a0,a0 + 3bc06ab4: 0005250b ext a0,a0,0,0 + 3bc06ab8: 70e6 ld ra,120(sp) + 3bc06aba: 7446 ld s0,112(sp) + 3bc06abc: 74a6 ld s1,104(sp) + 3bc06abe: 7906 ld s2,96(sp) + 3bc06ac0: 69e6 ld s3,88(sp) + 3bc06ac2: 6a46 ld s4,80(sp) + 3bc06ac4: 6aa6 ld s5,72(sp) + 3bc06ac6: 6b06 ld s6,64(sp) + 3bc06ac8: 7be2 ld s7,56(sp) + 3bc06aca: 7c42 ld s8,48(sp) + 3bc06acc: 7ca2 ld s9,40(sp) + 3bc06ace: 7d02 ld s10,32(sp) + 3bc06ad0: 6de2 ld s11,24(sp) + 3bc06ad2: 6109 addi sp,sp,128 + 3bc06ad4: 8082 ret + 3bc06ad6: 557d li a0,-1 + 3bc06ad8: d265 beqz a2,3bc06ab8 + 3bc06ada: 87c6 mv a5,a7 + 3bc06adc: 882e mv a6,a1 + 3bc06ade: 4f3d li t5,15 + 3bc06ae0: 4f9d li t6,7 + 3bc06ae2: ff4e0293 addi t0,t3,-12 + 3bc06ae6: 4a41 li s4,16 + 3bc06ae8: ff9e0e93 addi t4,t3,-7 + 3bc06aec: ffbe0a93 addi s5,t3,-5 + 3bc06af0: 00004b17 auipc s6,0x4 + 3bc06af4: 6a8b0b13 addi s6,s6,1704 # 3bc0b198 + 3bc06af8: 00004b97 auipc s7,0x4 + 3bc06afc: 680b8b93 addi s7,s7,1664 # 3bc0b178 + 3bc06b00: ffc30c13 addi s8,t1,-4 + 3bc06b04: 0ff00393 li t2,255 + 3bc06b08: ff830c93 addi s9,t1,-8 + 3bc06b0c: ff130493 addi s1,t1,-15 + 3bc06b10: 5d7d li s10,-1 + 3bc06b12: 9817c68b lbuia a3,(a5),1,0 + 3bc06b16: 0046d713 srli a4,a3,0x4 + 3bc06b1a: 0046d61b srliw a2,a3,0x4 + 3bc06b1e: 05e70b63 beq a4,t5,3bc06b74 + 3bc06b22: 0109b533 sltu a0,s3,a6 + 3bc06b26: 00154513 xori a0,a0,1 + 3bc06b2a: 0ff57513 andi a0,a0,255 + 3bc06b2e: 00c80433 add s0,a6,a2 + 3bc06b32: 00c78733 add a4,a5,a2 + 3bc06b36: c53d beqz a0,3bc06ba4 + 3bc06b38: 0727f663 bgeu a5,s2,3bc06ba4 + 3bc06b3c: 6390 ld a2,0(a5) + 3bc06b3e: 8abd andi a3,a3,15 + 3bc06b40: 00c83023 sd a2,0(a6) + 3bc06b44: 679c ld a5,8(a5) + 3bc06b46: 00f83423 sd a5,8(a6) + 3bc06b4a: 87ba mv a5,a4 + 3bc06b4c: b827c60b lhuia a2,(a5),2,0 + 3bc06b50: 40c40733 sub a4,s0,a2 + 3bc06b54: 0be68363 beq a3,t5,3bc06bfa + 3bc06b58: 0ccff163 bgeu t6,a2,3bc06c1a + 3bc06b5c: 6310 ld a2,0(a4) + 3bc06b5e: 0691 addi a3,a3,4 + 3bc06b60: 00d40833 add a6,s0,a3 + 3bc06b64: e010 sd a2,0(s0) + 3bc06b66: 6710 ld a2,8(a4) + 3bc06b68: e410 sd a2,8(s0) + 3bc06b6a: 01075703 lhu a4,16(a4) # 1000010 <__BSS_SIZE__+0xffa400> + 3bc06b6e: 00e41823 sh a4,16(s0) + 3bc06b72: b745 j 3bc06b12 + 3bc06b74: 0497fc63 bgeu a5,s1,3bc06bcc + 3bc06b78: 4601 li a2,0 + 3bc06b7a: 9817c50b lbuia a0,(a5),1,0 + 3bc06b7e: 9e29 addw a2,a2,a0 + 3bc06b80: 0497f963 bgeu a5,s1,3bc06bd2 + 3bc06b84: fe750be3 beq a0,t2,3bc06b7a + 3bc06b88: 4701 li a4,0 + 3bc06b8a: 7c06360b extu a2,a2,31,0 + 3bc06b8e: 063d addi a2,a2,15 + 3bc06b90: 13a70a63 beq a4,s10,3bc06cc4 + 3bc06b94: 01060733 add a4,a2,a6 + 3bc06b98: 13076663 bltu a4,a6,3bc06cc4 + 3bc06b9c: 00f60733 add a4,a2,a5 + 3bc06ba0: 12f76263 bltu a4,a5,3bc06cc4 + 3bc06ba4: 00c80433 add s0,a6,a2 + 3bc06ba8: 00c78533 add a0,a5,a2 + 3bc06bac: 0082e463 bltu t0,s0,3bc06bb4 + 3bc06bb0: 02acf363 bgeu s9,a0,3bc06bd6 + 3bc06bb4: 10a31863 bne t1,a0,3bc06cc4 + 3bc06bb8: 108e6663 bltu t3,s0,3bc06cc4 + 3bc06bbc: 84ae mv s1,a1 + 3bc06bbe: 8542 mv a0,a6 + 3bc06bc0: 85be mv a1,a5 + 3bc06bc2: f0bf90ef jal ra,3bc00acc + 3bc06bc6: 4094053b subw a0,s0,s1 + 3bc06bca: b5fd j 3bc06ab8 + 3bc06bcc: 577d li a4,-1 + 3bc06bce: 4601 li a2,0 + 3bc06bd0: bf6d j 3bc06b8a + 3bc06bd2: 5779 li a4,-2 + 3bc06bd4: bf5d j 3bc06b8a + 3bc06bd6: 4701 li a4,0 + 3bc06bd8: 60e7c60b lrd a2,a5,a4,0 + 3bc06bdc: 60e8560b srd a2,a6,a4,0 + 3bc06be0: 0721 addi a4,a4,8 + 3bc06be2: 00e80633 add a2,a6,a4 + 3bc06be6: fe8669e3 bltu a2,s0,3bc06bd8 + 3bc06bea: 87aa mv a5,a0 + 3bc06bec: b827c60b lhuia a2,(a5),2,0 + 3bc06bf0: 8abd andi a3,a3,15 + 3bc06bf2: 40c40733 sub a4,s0,a2 + 3bc06bf6: 03e69263 bne a3,t5,3bc06c1a + 3bc06bfa: 4681 li a3,0 + 3bc06bfc: 9817c80b lbuia a6,(a5),1,0 + 3bc06c00: 00d806bb addw a3,a6,a3 + 3bc06c04: 0d87f063 bgeu a5,s8,3bc06cc4 + 3bc06c08: fe780ae3 beq a6,t2,3bc06bfc + 3bc06c0c: 7c06b68b extu a3,a3,31,0 + 3bc06c10: 06bd addi a3,a3,15 + 3bc06c12: 00868533 add a0,a3,s0 + 3bc06c16: 0a856763 bltu a0,s0,3bc06cc4 + 3bc06c1a: 6522 ld a0,8(sp) + 3bc06c1c: 0691 addi a3,a3,4 + 3bc06c1e: 0aa76363 bltu a4,a0,3bc06cc4 + 3bc06c22: 00d40833 add a6,s0,a3 + 3bc06c26: 06cfe463 bltu t6,a2,3bc06c8e + 3bc06c2a: 00042023 sw zero,0(s0) + 3bc06c2e: 00074503 lbu a0,0(a4) + 3bc06c32: 00a40023 sb a0,0(s0) + 3bc06c36: 00174503 lbu a0,1(a4) + 3bc06c3a: 00a400a3 sb a0,1(s0) + 3bc06c3e: 00274503 lbu a0,2(a4) + 3bc06c42: 00a40123 sb a0,2(s0) + 3bc06c46: 00374503 lbu a0,3(a4) + 3bc06c4a: 00a401a3 sb a0,3(s0) + 3bc06c4e: c4cb450b lrwu a0,s6,a2,2 + 3bc06c52: 00a70db3 add s11,a4,a0 + 3bc06c56: 40a7470b lrw a4,a4,a0,0 + 3bc06c5a: c058 sw a4,4(s0) + 3bc06c5c: 44cbc70b lrw a4,s7,a2,2 + 3bc06c60: 40ed8733 sub a4,s11,a4 + 3bc06c64: 0502f363 bgeu t0,a6,3bc06caa + 3bc06c68: 050aee63 bltu s5,a6,3bc06cc4 + 3bc06c6c: 0421 addi s0,s0,8 + 3bc06c6e: 01d47e63 bgeu s0,t4,3bc06c8a + 3bc06c72: 863a mv a2,a4 + 3bc06c74: 86a2 mv a3,s0 + 3bc06c76: 7886450b ldia a0,(a2),8,0 + 3bc06c7a: 7886d50b sdia a0,(a3),8,0 + 3bc06c7e: ffd6ece3 bltu a3,t4,3bc06c76 + 3bc06c82: 408e8433 sub s0,t4,s0 + 3bc06c86: 9722 add a4,a4,s0 + 3bc06c88: 8476 mv s0,t4 + 3bc06c8a: 4681 li a3,0 + 3bc06c8c: a811 j 3bc06ca0 + 3bc06c8e: 7887460b ldia a2,(a4),8,0 + 3bc06c92: e010 sd a2,0(s0) + 3bc06c94: bfc1 j 3bc06c64 + 3bc06c96: 80d7460b lrbu a2,a4,a3,0 + 3bc06c9a: 00d4560b srb a2,s0,a3,0 + 3bc06c9e: 0685 addi a3,a3,1 + 3bc06ca0: 00d40633 add a2,s0,a3 + 3bc06ca4: ff0669e3 bltu a2,a6,3bc06c96 + 3bc06ca8: b5ad j 3bc06b12 + 3bc06caa: 6310 ld a2,0(a4) + 3bc06cac: e410 sd a2,8(s0) + 3bc06cae: e6da72e3 bgeu s4,a3,3bc06b12 + 3bc06cb2: 0441 addi s0,s0,16 + 3bc06cb4: 0721 addi a4,a4,8 + 3bc06cb6: 7887468b ldia a3,(a4),8,0 + 3bc06cba: 7884568b sdia a3,(s0),8,0 + 3bc06cbe: ff046ce3 bltu s0,a6,3bc06cb6 + 3bc06cc2: bd81 j 3bc06b12 + 3bc06cc4: 41178533 sub a0,a5,a7 + 3bc06cc8: fff54513 not a0,a0 + 3bc06ccc: 2501 sext.w a0,a0 + 3bc06cce: b3ed j 3bc06ab8 + 3bc06cd0: 557d li a0,-1 + 3bc06cd2: b3dd j 3bc06ab8 + +000000003bc06cd4 : + 3bc06cd4: 30050963 beqz a0,3bc06fe6 + 3bc06cd8: 7135 addi sp,sp,-160 + 3bc06cda: e526 sd s1,136(sp) + 3bc06cdc: fcce sd s3,120(sp) + 3bc06cde: f0da sd s6,96(sp) + 3bc06ce0: ecde sd s7,88(sp) + 3bc06ce2: e8e2 sd s8,80(sp) + 3bc06ce4: e0ea sd s10,64(sp) + 3bc06ce6: ed06 sd ra,152(sp) + 3bc06ce8: e922 sd s0,144(sp) + 3bc06cea: e14a sd s2,128(sp) + 3bc06cec: f8d2 sd s4,112(sp) + 3bc06cee: f4d6 sd s5,104(sp) + 3bc06cf0: e4e6 sd s9,72(sp) + 3bc06cf2: fc6e sd s11,56(sp) + 3bc06cf4: 8b2a mv s6,a0 + 3bc06cf6: 8d2e mv s10,a1 + 3bc06cf8: 84ba mv s1,a4 + 3bc06cfa: 89be mv s3,a5 + 3bc06cfc: 00c50bb3 add s7,a0,a2 + 3bc06d00: 00d58c33 add s8,a1,a3 + 3bc06d04: c319 beqz a4,3bc06d0a + 3bc06d06: 00f704b3 add s1,a4,a5 + 3bc06d0a: ff0b8793 addi a5,s7,-16 + 3bc06d0e: e03e sd a5,0(sp) + 3bc06d10: fe0c0793 addi a5,s8,-32 + 3bc06d14: e43e sd a5,8(sp) + 3bc06d16: ea95 bnez a3,3bc06d4a + 3bc06d18: 4785 li a5,1 + 3bc06d1a: 557d li a0,-1 + 3bc06d1c: 00f61863 bne a2,a5,3bc06d2c + 3bc06d20: 000b4503 lbu a0,0(s6) + 3bc06d24: 00a03533 snez a0,a0 + 3bc06d28: 0005250b ext a0,a0,0,0 + 3bc06d2c: 60ea ld ra,152(sp) + 3bc06d2e: 644a ld s0,144(sp) + 3bc06d30: 64aa ld s1,136(sp) + 3bc06d32: 690a ld s2,128(sp) + 3bc06d34: 79e6 ld s3,120(sp) + 3bc06d36: 7a46 ld s4,112(sp) + 3bc06d38: 7aa6 ld s5,104(sp) + 3bc06d3a: 7b06 ld s6,96(sp) + 3bc06d3c: 6be6 ld s7,88(sp) + 3bc06d3e: 6c46 ld s8,80(sp) + 3bc06d40: 6ca6 ld s9,72(sp) + 3bc06d42: 6d06 ld s10,64(sp) + 3bc06d44: 7de2 ld s11,56(sp) + 3bc06d46: 610d addi sp,sp,160 + 3bc06d48: 8082 ret + 3bc06d4a: 557d li a0,-1 + 3bc06d4c: d265 beqz a2,3bc06d2c + 3bc06d4e: ffcb8793 addi a5,s7,-4 + 3bc06d52: e83e sd a5,16(sp) + 3bc06d54: ff8b8793 addi a5,s7,-8 + 3bc06d58: 845a mv s0,s6 + 3bc06d5a: 8cea mv s9,s10 + 3bc06d5c: ff4c0a13 addi s4,s8,-12 + 3bc06d60: ff9c0913 addi s2,s8,-7 + 3bc06d64: ffbc0a93 addi s5,s8,-5 + 3bc06d68: ec3e sd a5,24(sp) + 3bc06d6a: 9814468b lbuia a3,(s0),1,0 + 3bc06d6e: 4ebd li t4,15 + 3bc06d70: 0046d793 srli a5,a3,0x4 + 3bc06d74: 0046d61b srliw a2,a3,0x4 + 3bc06d78: 07d78363 beq a5,t4,3bc06dde + 3bc06d7c: 67a2 ld a5,8(sp) + 3bc06d7e: 00cc8db3 add s11,s9,a2 + 3bc06d82: 00c40533 add a0,s0,a2 + 3bc06d86: 0197b5b3 sltu a1,a5,s9 + 3bc06d8a: 0015c593 xori a1,a1,1 + 3bc06d8e: 0ff5f593 andi a1,a1,255 + 3bc06d92: c5c1 beqz a1,3bc06e1a + 3bc06d94: 6782 ld a5,0(sp) + 3bc06d96: 08f47263 bgeu s0,a5,3bc06e1a + 3bc06d9a: 6010 ld a2,0(s0) + 3bc06d9c: 8abd andi a3,a3,15 + 3bc06d9e: 00ccb023 sd a2,0(s9) + 3bc06da2: 6410 ld a2,8(s0) + 3bc06da4: 842a mv s0,a0 + 3bc06da6: 00ccb423 sd a2,8(s9) + 3bc06daa: b824458b lhuia a1,(s0),2,0 + 3bc06dae: 8636 mv a2,a3 + 3bc06db0: 40bd8533 sub a0,s11,a1 + 3bc06db4: 0dd68063 beq a3,t4,3bc06e74 + 3bc06db8: 471d li a4,7 + 3bc06dba: 0eb77063 bgeu a4,a1,3bc06e9a + 3bc06dbe: 0da56e63 bltu a0,s10,3bc06e9a + 3bc06dc2: 6118 ld a4,0(a0) + 3bc06dc4: 0691 addi a3,a3,4 + 3bc06dc6: 00dd8cb3 add s9,s11,a3 + 3bc06dca: 00edb023 sd a4,0(s11) + 3bc06dce: 6518 ld a4,8(a0) + 3bc06dd0: 00edb423 sd a4,8(s11) + 3bc06dd4: 01055703 lhu a4,16(a0) + 3bc06dd8: 00ed9823 sh a4,16(s11) + 3bc06ddc: b779 j 3bc06d6a + 3bc06dde: ff1b8793 addi a5,s7,-15 + 3bc06de2: 06f47063 bgeu s0,a5,3bc06e42 + 3bc06de6: 4601 li a2,0 + 3bc06de8: 0ff00513 li a0,255 + 3bc06dec: 98144e8b lbuia t4,(s0),1,0 + 3bc06df0: 00ce863b addw a2,t4,a2 + 3bc06df4: 04f47a63 bgeu s0,a5,3bc06e48 + 3bc06df8: feae8ae3 beq t4,a0,3bc06dec + 3bc06dfc: 4781 li a5,0 + 3bc06dfe: 7c06360b extu a2,a2,31,0 + 3bc06e02: 55fd li a1,-1 + 3bc06e04: 063d addi a2,a2,15 + 3bc06e06: 1cb78a63 beq a5,a1,3bc06fda + 3bc06e0a: 019607b3 add a5,a2,s9 + 3bc06e0e: 1d97e663 bltu a5,s9,3bc06fda + 3bc06e12: 008607b3 add a5,a2,s0 + 3bc06e16: 1c87e263 bltu a5,s0,3bc06fda + 3bc06e1a: 00cc8db3 add s11,s9,a2 + 3bc06e1e: 00c405b3 add a1,s0,a2 + 3bc06e22: 01ba6563 bltu s4,s11,3bc06e2c + 3bc06e26: 67e2 ld a5,24(sp) + 3bc06e28: 02b7f263 bgeu a5,a1,3bc06e4c + 3bc06e2c: 1abb9763 bne s7,a1,3bc06fda + 3bc06e30: 1bbc6563 bltu s8,s11,3bc06fda + 3bc06e34: 85a2 mv a1,s0 + 3bc06e36: 8566 mv a0,s9 + 3bc06e38: c95f90ef jal ra,3bc00acc + 3bc06e3c: 41ad853b subw a0,s11,s10 + 3bc06e40: b5f5 j 3bc06d2c + 3bc06e42: 57fd li a5,-1 + 3bc06e44: 4601 li a2,0 + 3bc06e46: bf65 j 3bc06dfe + 3bc06e48: 57f9 li a5,-2 + 3bc06e4a: bf55 j 3bc06dfe + 3bc06e4c: 4601 li a2,0 + 3bc06e4e: 60c4450b lrd a0,s0,a2,0 + 3bc06e52: 60ccd50b srd a0,s9,a2,0 + 3bc06e56: 0621 addi a2,a2,8 + 3bc06e58: 00cc8533 add a0,s9,a2 + 3bc06e5c: ffb569e3 bltu a0,s11,3bc06e4e + 3bc06e60: 842e mv s0,a1 + 3bc06e62: b824458b lhuia a1,(s0),2,0 + 3bc06e66: 00f6f613 andi a2,a3,15 + 3bc06e6a: 473d li a4,15 + 3bc06e6c: 40bd8533 sub a0,s11,a1 + 3bc06e70: 02e61563 bne a2,a4,3bc06e9a + 3bc06e74: 4601 li a2,0 + 3bc06e76: 0ff00693 li a3,255 + 3bc06e7a: 98144e8b lbuia t4,(s0),1,0 + 3bc06e7e: 67c2 ld a5,16(sp) + 3bc06e80: 00ce863b addw a2,t4,a2 + 3bc06e84: 14f47b63 bgeu s0,a5,3bc06fda + 3bc06e88: fede89e3 beq t4,a3,3bc06e7a + 3bc06e8c: 7c06360b extu a2,a2,31,0 + 3bc06e90: 063d addi a2,a2,15 + 3bc06e92: 01b60733 add a4,a2,s11 + 3bc06e96: 15b76263 bltu a4,s11,3bc06fda + 3bc06e9a: 6741 lui a4,0x10 + 3bc06e9c: 0611 addi a2,a2,4 + 3bc06e9e: 00e9f663 bgeu s3,a4,3bc06eaa + 3bc06ea2: 01350733 add a4,a0,s3 + 3bc06ea6: 13a76a63 bltu a4,s10,3bc06fda + 3bc06eaa: 00cd8cb3 add s9,s11,a2 + 3bc06eae: 07a57663 bgeu a0,s10,3bc06f1a + 3bc06eb2: 139ae463 bltu s5,s9,3bc06fda + 3bc06eb6: 40ad06b3 sub a3,s10,a0 + 3bc06eba: 40d485b3 sub a1,s1,a3 + 3bc06ebe: 00c6e663 bltu a3,a2,3bc06eca + 3bc06ec2: 856e mv a0,s11 + 3bc06ec4: c09f90ef jal ra,3bc00acc + 3bc06ec8: b54d j 3bc06d6a + 3bc06eca: 40d60eb3 sub t4,a2,a3 + 3bc06ece: 856e mv a0,s11 + 3bc06ed0: 8636 mv a2,a3 + 3bc06ed2: f476 sd t4,40(sp) + 3bc06ed4: f036 sd a3,32(sp) + 3bc06ed6: b97f90ef jal ra,3bc00a6c + 3bc06eda: 7682 ld a3,32(sp) + 3bc06edc: 7ea2 ld t4,40(sp) + 3bc06ede: 00dd8533 add a0,s11,a3 + 3bc06ee2: 41a507b3 sub a5,a0,s10 + 3bc06ee6: 03d7f563 bgeu a5,t4,3bc06f10 + 3bc06eea: 4781 li a5,0 + 3bc06eec: a031 j 3bc06ef8 + 3bc06eee: 80fd468b lrbu a3,s10,a5,0 + 3bc06ef2: 00f5568b srb a3,a0,a5,0 + 3bc06ef6: 0785 addi a5,a5,1 + 3bc06ef8: 00f506b3 add a3,a0,a5 + 3bc06efc: ff96e9e3 bltu a3,s9,3bc06eee + 3bc06f00: 00acb733 sltu a4,s9,a0 + 3bc06f04: 8676 mv a2,t4 + 3bc06f06: 42e0160b mvnez a2,zero,a4 + 3bc06f0a: 00c50cb3 add s9,a0,a2 + 3bc06f0e: bdb1 j 3bc06d6a + 3bc06f10: 8676 mv a2,t4 + 3bc06f12: 85ea mv a1,s10 + 3bc06f14: b59f90ef jal ra,3bc00a6c + 3bc06f18: bd89 j 3bc06d6a + 3bc06f1a: 469d li a3,7 + 3bc06f1c: 06b6ee63 bltu a3,a1,3bc06f98 + 3bc06f20: 000da023 sw zero,0(s11) + 3bc06f24: 00054683 lbu a3,0(a0) + 3bc06f28: 00004797 auipc a5,0x4 + 3bc06f2c: 27078793 addi a5,a5,624 # 3bc0b198 + 3bc06f30: c4b7ce8b lrwu t4,a5,a1,2 + 3bc06f34: 00dd8023 sb a3,0(s11) + 3bc06f38: 00154683 lbu a3,1(a0) + 3bc06f3c: 00004797 auipc a5,0x4 + 3bc06f40: 23c78793 addi a5,a5,572 # 3bc0b178 + 3bc06f44: 01d50f33 add t5,a0,t4 + 3bc06f48: 00dd80a3 sb a3,1(s11) + 3bc06f4c: 00254683 lbu a3,2(a0) + 3bc06f50: 00dd8123 sb a3,2(s11) + 3bc06f54: 00354683 lbu a3,3(a0) + 3bc06f58: 00dd81a3 sb a3,3(s11) + 3bc06f5c: 41d5468b lrw a3,a0,t4,0 + 3bc06f60: 00dda223 sw a3,4(s11) + 3bc06f64: 44b7c68b lrw a3,a5,a1,2 + 3bc06f68: 40df06b3 sub a3,t5,a3 + 3bc06f6c: 059a7663 bgeu s4,s9,3bc06fb8 + 3bc06f70: 079ae563 bltu s5,s9,3bc06fda + 3bc06f74: 008d8513 addi a0,s11,8 + 3bc06f78: 01257e63 bgeu a0,s2,3bc06f94 + 3bc06f7c: 8636 mv a2,a3 + 3bc06f7e: 87aa mv a5,a0 + 3bc06f80: 7886458b ldia a1,(a2),8,0 + 3bc06f84: 7887d58b sdia a1,(a5),8,0 + 3bc06f88: ff27ece3 bltu a5,s2,3bc06f80 + 3bc06f8c: 40a907b3 sub a5,s2,a0 + 3bc06f90: 96be add a3,a3,a5 + 3bc06f92: 854a mv a0,s2 + 3bc06f94: 4781 li a5,0 + 3bc06f96: a821 j 3bc06fae + 3bc06f98: 86aa mv a3,a0 + 3bc06f9a: 7886c58b ldia a1,(a3),8,0 + 3bc06f9e: 00bdb023 sd a1,0(s11) + 3bc06fa2: b7e9 j 3bc06f6c + 3bc06fa4: 80f6c60b lrbu a2,a3,a5,0 + 3bc06fa8: 00f5560b srb a2,a0,a5,0 + 3bc06fac: 0785 addi a5,a5,1 + 3bc06fae: 00f50633 add a2,a0,a5 + 3bc06fb2: ff9669e3 bltu a2,s9,3bc06fa4 + 3bc06fb6: bb55 j 3bc06d6a + 3bc06fb8: 628c ld a1,0(a3) + 3bc06fba: 00bdb423 sd a1,8(s11) + 3bc06fbe: 45c1 li a1,16 + 3bc06fc0: dac5f5e3 bgeu a1,a2,3bc06d6a + 3bc06fc4: 010d8513 addi a0,s11,16 + 3bc06fc8: 00868613 addi a2,a3,8 + 3bc06fcc: 7886478b ldia a5,(a2),8,0 + 3bc06fd0: 7885578b sdia a5,(a0),8,0 + 3bc06fd4: ff956ce3 bltu a0,s9,3bc06fcc + 3bc06fd8: bb49 j 3bc06d6a + 3bc06fda: 41640533 sub a0,s0,s6 + 3bc06fde: fff54513 not a0,a0 + 3bc06fe2: 2501 sext.w a0,a0 + 3bc06fe4: b3a1 j 3bc06d2c + 3bc06fe6: 557d li a0,-1 + 3bc06fe8: 8082 ret + +000000003bc06fea : + 3bc06fea: 883e mv a6,a5 + 3bc06fec: e399 bnez a5,3bc06ff2 + 3bc06fee: 80fff06f j 3bc067fc + 3bc06ff2: 00f708b3 add a7,a4,a5 + 3bc06ff6: 01159b63 bne a1,a7,3bc0700c + 3bc06ffa: 67c1 lui a5,0x10 + 3bc06ffc: 17f9 addi a5,a5,-2 + 3bc06ffe: 0107d463 bge a5,a6,3bc07006 + 3bc07002: a69ff06f j 3bc06a6a + 3bc07006: 8742 mv a4,a6 + 3bc07008: c6eff06f j 3bc06476 + 3bc0700c: cc9ff06f j 3bc06cd4 + +000000003bc07010 : + 3bc07010: fed53513 sltiu a0,a0,-19 + 3bc07014: 00154513 xori a0,a0,1 + 3bc07018: 2501 sext.w a0,a0 + 3bc0701a: 8082 ret + +000000003bc0701c : + 3bc0701c: e111 bnez a0,3bc07020 + 3bc0701e: 4511 li a0,4 + 3bc07020: ffc5069b addiw a3,a0,-4 + 3bc07024: 470d li a4,3 + 3bc07026: 5579 li a0,-2 + 3bc07028: 00d76863 bltu a4,a3,3bc07038 + 3bc0702c: 00004717 auipc a4,0x4 + 3bc07030: 12c70713 addi a4,a4,300 # 3bc0b158 + 3bc07034: 76d7450b lurd a0,a4,a3,3 + 3bc07038: 8082 ret + +000000003bc0703a : + 3bc0703a: 715d addi sp,sp,-80 + 3bc0703c: f84a sd s2,48(sp) + 3bc0703e: e486 sd ra,72(sp) + 3bc07040: e0a2 sd s0,64(sp) + 3bc07042: fc26 sd s1,56(sp) + 3bc07044: f44e sd s3,40(sp) + 3bc07046: f052 sd s4,32(sp) + 3bc07048: ec56 sd s5,24(sp) + 3bc0704a: e85a sd s6,16(sp) + 3bc0704c: e45e sd s7,8(sp) + 3bc0704e: e062 sd s8,0(sp) + 3bc07050: 4799 li a5,6 + 3bc07052: 5951 li s2,-12 + 3bc07054: 04c7f663 bgeu a5,a2,3bc070a0 + 3bc07058: 84ae mv s1,a1 + 3bc0705a: 8932 mv s2,a2 + 3bc0705c: 4581 li a1,0 + 3bc0705e: 02000613 li a2,32 + 3bc07062: 842a mv s0,a0 + 3bc07064: 9aff90ef jal ra,3bc00a12 + 3bc07068: 8526 mv a0,s1 + 3bc0706a: be8ff0ef jal ra,3bc06452 + 3bc0706e: 2501 sext.w a0,a0 + 3bc07070: 184d37b7 lui a5,0x184d3 + 3bc07074: ff057713 andi a4,a0,-16 + 3bc07078: a5078793 addi a5,a5,-1456 # 184d2a50 + 3bc0707c: 02f71f63 bne a4,a5,3bc070ba + 3bc07080: 4785 li a5,1 + 3bc07082: c45c sw a5,12(s0) + 3bc07084: 0e840793 addi a5,s0,232 + 3bc07088: 00f49963 bne s1,a5,3bc0709a + 3bc0708c: 47a1 li a5,8 + 3bc0708e: e83c sd a5,80(s0) + 3bc07090: 05243423 sd s2,72(s0) + 3bc07094: 47b5 li a5,13 + 3bc07096: d05c sw a5,36(s0) + 3bc07098: a021 j 3bc070a0 + 3bc0709a: 47b1 li a5,12 + 3bc0709c: d05c sw a5,36(s0) + 3bc0709e: 4911 li s2,4 + 3bc070a0: 60a6 ld ra,72(sp) + 3bc070a2: 6406 ld s0,64(sp) + 3bc070a4: 74e2 ld s1,56(sp) + 3bc070a6: 79a2 ld s3,40(sp) + 3bc070a8: 7a02 ld s4,32(sp) + 3bc070aa: 6ae2 ld s5,24(sp) + 3bc070ac: 6b42 ld s6,16(sp) + 3bc070ae: 6ba2 ld s7,8(sp) + 3bc070b0: 6c02 ld s8,0(sp) + 3bc070b2: 854a mv a0,s2 + 3bc070b4: 7942 ld s2,48(sp) + 3bc070b6: 6161 addi sp,sp,80 + 3bc070b8: 8082 ret + 3bc070ba: 184d27b7 lui a5,0x184d2 + 3bc070be: 20478793 addi a5,a5,516 # 184d2204 + 3bc070c2: 10f51863 bne a0,a5,3bc071d2 + 3bc070c6: 00042623 sw zero,12(s0) + 3bc070ca: 0044c783 lbu a5,4(s1) + 3bc070ce: 0417b70b extu a4,a5,1,1 + 3bc070d2: 00078b1b sext.w s6,a5 + 3bc070d6: 0067d693 srli a3,a5,0x6 + 3bc070da: 0e071e63 bnez a4,3bc071d6 + 3bc070de: 4705 li a4,1 + 3bc070e0: 0ee69d63 bne a3,a4,3bc071da + 3bc070e4: 0c3b3c0b extu s8,s6,3,3 + 3bc070e8: 49bd li s3,15 + 3bc070ea: 000c1363 bnez s8,3bc070f0 + 3bc070ee: 499d li s3,7 + 3bc070f0: 0017fa13 andi s4,a5,1 + 3bc070f4: 0549998b addsl s3,s3,s4,2 + 3bc070f8: 03397063 bgeu s2,s3,3bc07118 + 3bc070fc: 0e840513 addi a0,s0,232 + 3bc07100: 00a48663 beq s1,a0,3bc0710c + 3bc07104: 864a mv a2,s2 + 3bc07106: 85a6 mv a1,s1 + 3bc07108: 965f90ef jal ra,3bc00a6c + 3bc0710c: 05243423 sd s2,72(s0) + 3bc07110: 05343823 sd s3,80(s0) + 3bc07114: 4785 li a5,1 + 3bc07116: b741 j 3bc07096 + 3bc07118: 0054c783 lbu a5,5(s1) + 3bc0711c: 5961 li s2,-8 + 3bc0711e: fc77b70b extu a4,a5,63,7 + 3bc07122: 8c47bb8b extu s7,a5,35,4 + 3bc07126: ff2d bnez a4,3bc070a0 + 3bc07128: 004bf713 andi a4,s7,4 + 3bc0712c: 5979 li s2,-2 + 3bc0712e: db2d beqz a4,3bc070a0 + 3bc07130: 8bbd andi a5,a5,15 + 3bc07132: 5961 li s2,-8 + 3bc07134: f7b5 bnez a5,3bc070a0 + 3bc07136: ffb98a93 addi s5,s3,-5 + 3bc0713a: 4601 li a2,0 + 3bc0713c: 85d6 mv a1,s5 + 3bc0713e: 00448513 addi a0,s1,4 + 3bc07142: 425000ef jal ra,3bc07d66 + 3bc07146: 013487b3 add a5,s1,s3 + 3bc0714a: fff7c783 lbu a5,-1(a5) + 3bc0714e: 3c85350b extu a0,a0,15,8 + 3bc07152: 593d li s2,-17 + 3bc07154: f4a796e3 bne a5,a0,3bc070a0 + 3bc07158: 145b378b extu a5,s6,5,5 + 3bc0715c: 007bf513 andi a0,s7,7 + 3bc07160: c05c sw a5,4(s0) + 3bc07162: 104b378b extu a5,s6,4,4 + 3bc07166: 082b3b0b extu s6,s6,2,2 + 3bc0716a: cc5c sw a5,28(s0) + 3bc0716c: 01642423 sw s6,8(s0) + 3bc07170: c008 sw a0,0(s0) + 3bc07172: eabff0ef jal ra,3bc0701c + 3bc07176: f808 sd a0,48(s0) + 3bc07178: 040c0263 beqz s8,3bc071bc + 3bc0717c: 0074c783 lbu a5,7(s1) + 3bc07180: 0084c703 lbu a4,8(s1) + 3bc07184: 0064c683 lbu a3,6(s1) + 3bc07188: 07a2 slli a5,a5,0x8 + 3bc0718a: 0742 slli a4,a4,0x10 + 3bc0718c: 97ba add a5,a5,a4 + 3bc0718e: 0094c703 lbu a4,9(s1) + 3bc07192: 97b6 add a5,a5,a3 + 3bc07194: 0762 slli a4,a4,0x18 + 3bc07196: 97ba add a5,a5,a4 + 3bc07198: 00a4c703 lbu a4,10(s1) + 3bc0719c: 1702 slli a4,a4,0x20 + 3bc0719e: 97ba add a5,a5,a4 + 3bc071a0: 00b4c703 lbu a4,11(s1) + 3bc071a4: 1722 slli a4,a4,0x28 + 3bc071a6: 973e add a4,a4,a5 + 3bc071a8: 00c4c783 lbu a5,12(s1) + 3bc071ac: 17c2 slli a5,a5,0x30 + 3bc071ae: 973e add a4,a4,a5 + 3bc071b0: 00d4c783 lbu a5,13(s1) + 3bc071b4: 17e2 slli a5,a5,0x38 + 3bc071b6: 97ba add a5,a5,a4 + 3bc071b8: e81c sd a5,16(s0) + 3bc071ba: f41c sd a5,40(s0) + 3bc071bc: 000a0763 beqz s4,3bc071ca + 3bc071c0: 01548533 add a0,s1,s5 + 3bc071c4: a8eff0ef jal ra,3bc06452 + 3bc071c8: cc08 sw a0,24(s0) + 3bc071ca: 4789 li a5,2 + 3bc071cc: d05c sw a5,36(s0) + 3bc071ce: 894e mv s2,s3 + 3bc071d0: bdc1 j 3bc070a0 + 3bc071d2: 594d li s2,-13 + 3bc071d4: b5f1 j 3bc070a0 + 3bc071d6: 5961 li s2,-8 + 3bc071d8: b5e1 j 3bc070a0 + 3bc071da: 5969 li s2,-6 + 3bc071dc: b5d1 j 3bc070a0 + +000000003bc071de : + 3bc071de: 1101 addi sp,sp,-32 + 3bc071e0: e822 sd s0,16(sp) + 3bc071e2: e426 sd s1,8(sp) + 3bc071e4: 842a mv s0,a0 + 3bc071e6: 84ae mv s1,a1 + 3bc071e8: 4505 li a0,1 + 3bc071ea: 10000593 li a1,256 + 3bc071ee: ec06 sd ra,24(sp) + 3bc071f0: bf8fa0ef jal ra,3bc015e8 + 3bc071f4: e909 bnez a0,3bc07206 + 3bc071f6: 00043023 sd zero,0(s0) + 3bc071fa: 555d li a0,-9 + 3bc071fc: 60e2 ld ra,24(sp) + 3bc071fe: 6442 ld s0,16(sp) + 3bc07200: 64a2 ld s1,8(sp) + 3bc07202: 6105 addi sp,sp,32 + 3bc07204: 8082 ret + 3bc07206: d104 sw s1,32(a0) + 3bc07208: e008 sd a0,0(s0) + 3bc0720a: 4501 li a0,0 + 3bc0720c: bfc5 j 3bc071fc + +000000003bc0720e : + 3bc0720e: 7131 addi sp,sp,-192 + 3bc07210: ed4e sd s3,152(sp) + 3bc07212: 00073983 ld s3,0(a4) + 3bc07216: e556 sd s5,136(sp) + 3bc07218: e15a sd s6,128(sp) + 3bc0721a: f0ea sd s10,96(sp) + 3bc0721c: ecee sd s11,88(sp) + 3bc0721e: fd06 sd ra,184(sp) + 3bc07220: f922 sd s0,176(sp) + 3bc07222: f526 sd s1,168(sp) + 3bc07224: f14a sd s2,160(sp) + 3bc07226: e952 sd s4,144(sp) + 3bc07228: fcde sd s7,120(sp) + 3bc0722a: f8e2 sd s8,112(sp) + 3bc0722c: f4e6 sd s9,104(sp) + 3bc0722e: fad1560b sdd a2,a3,(sp),1,4 + 3bc07232: e43e sd a5,8(sp) + 3bc07234: 8d2a mv s10,a0 + 3bc07236: 8aae mv s5,a1 + 3bc07238: 8dba mv s11,a4 + 3bc0723a: 99b6 add s3,s3,a3 + 3bc0723c: 4b01 li s6,0 + 3bc0723e: c581 beqz a1,3bc07246 + 3bc07240: 00063b03 ld s6,0(a2) + 3bc07244: 9b2e add s6,s6,a1 + 3bc07246: 0080 addi s0,sp,64 + 3bc07248: 4641 li a2,16 + 3bc0724a: 4581 li a1,0 + 3bc0724c: 8522 mv a0,s0 + 3bc0724e: fc4f90ef jal ra,3bc00a12 + 3bc07252: 67a2 ld a5,8(sp) + 3bc07254: 000db023 sd zero,0(s11) + 3bc07258: 6ce2 ld s9,24(sp) + 3bc0725a: 40f4178b mveqz a5,s0,a5 + 3bc0725e: e43e sd a5,8(sp) + 3bc07260: 67c2 ld a5,16(sp) + 3bc07262: 8956 mv s2,s5 + 3bc07264: 4485 li s1,1 + 3bc07266: 0007b023 sd zero,0(a5) + 3bc0726a: 0ecd0793 addi a5,s10,236 + 3bc0726e: f43e sd a5,40(sp) + 3bc07270: 0b8d0793 addi a5,s10,184 + 3bc07274: 4a05 li s4,1 + 3bc07276: 0e8d0b93 addi s7,s10,232 + 3bc0727a: 088d0c13 addi s8,s10,136 + 3bc0727e: f03e sd a5,32(sp) + 3bc07280: 080a1b63 bnez s4,3bc07316 + 3bc07284: 004d2783 lw a5,4(s10) + 3bc07288: ebbd bnez a5,3bc072fe + 3bc0728a: 060d3583 ld a1,96(s10) + 3bc0728e: 058d3503 ld a0,88(s10) + 3bc07292: 06a58663 beq a1,a0,3bc072fe + 3bc07296: c5a5 beqz a1,3bc072fe + 3bc07298: 67a2 ld a5,8(sp) + 3bc0729a: 439c lw a5,0(a5) + 3bc0729c: e3ad bnez a5,3bc072fe + 3bc0729e: 024d2703 lw a4,36(s10) + 3bc072a2: 479d li a5,7 + 3bc072a4: ffe7069b addiw a3,a4,-2 + 3bc072a8: 04d7eb63 bltu a5,a3,3bc072fe + 3bc072ac: 46a5 li a3,9 + 3bc072ae: 068d3783 ld a5,104(s10) + 3bc072b2: 6ed71c63 bne a4,a3,3bc079aa + 3bc072b6: 080d3683 ld a3,128(s10) + 3bc072ba: 070d3403 ld s0,112(s10) + 3bc072be: 078d3703 ld a4,120(s10) + 3bc072c2: 8f95 sub a5,a5,a3 + 3bc072c4: 66c1 lui a3,0x10 + 3bc072c6: 8c09 sub s0,s0,a0 + 3bc072c8: 4601 li a2,0 + 3bc072ca: 00e6ea63 bltu a3,a4,3bc072de + 3bc072ce: 40e68633 sub a2,a3,a4 + 3bc072d2: 00c43733 sltu a4,s0,a2 + 3bc072d6: 00174713 xori a4,a4,1 + 3bc072da: 40e4160b mveqz a2,s0,a4 + 3bc072de: 8f91 sub a5,a5,a2 + 3bc072e0: 40c40733 sub a4,s0,a2 + 3bc072e4: 95be add a1,a1,a5 + 3bc072e6: 953a add a0,a0,a4 + 3bc072e8: f84f90ef jal ra,3bc00a6c + 3bc072ec: 058d3783 ld a5,88(s10) + 3bc072f0: 06fd3023 sd a5,96(s10) + 3bc072f4: 080d3783 ld a5,128(s10) + 3bc072f8: 943e add s0,s0,a5 + 3bc072fa: 068d3423 sd s0,104(s10) + 3bc072fe: 67e2 ld a5,24(sp) + 3bc07300: 41590933 sub s2,s2,s5 + 3bc07304: 8526 mv a0,s1 + 3bc07306: 40fc88b3 sub a7,s9,a5 + 3bc0730a: 67c2 ld a5,16(sp) + 3bc0730c: 011db023 sd a7,0(s11) + 3bc07310: 0127b023 sd s2,0(a5) + 3bc07314: a055 j 3bc073b8 + 3bc07316: 024d2783 lw a5,36(s10) + 3bc0731a: 4739 li a4,14 + 3bc0731c: f6f762e3 bltu a4,a5,3bc07280 + 3bc07320: 024d6783 lwu a5,36(s10) + 3bc07324: 00004717 auipc a4,0x4 + 3bc07328: df470713 addi a4,a4,-524 # 3bc0b118 + 3bc0732c: 44f7478b lrw a5,a4,a5,2 + 3bc07330: 97ba add a5,a5,a4 + 3bc07332: 8782 jr a5 + 3bc07334: 41998633 sub a2,s3,s9 + 3bc07338: 47c9 li a5,18 + 3bc0733a: 00c7fd63 bgeu a5,a2,3bc07354 + 3bc0733e: 85e6 mv a1,s9 + 3bc07340: 856a mv a0,s10 + 3bc07342: cf9ff0ef jal ra,3bc0703a + 3bc07346: 57b1 li a5,-20 + 3bc07348: 06a7e863 bltu a5,a0,3bc073b8 + 3bc0734c: 00ac8433 add s0,s9,a0 + 3bc07350: 8ca2 mv s9,s0 + 3bc07352: b73d j 3bc07280 + 3bc07354: 040d3423 sd zero,72(s10) + 3bc07358: 673c8d63 beq s9,s3,3bc079d2 + 3bc0735c: 479d li a5,7 + 3bc0735e: 04fd3823 sd a5,80(s10) + 3bc07362: 4785 li a5,1 + 3bc07364: 02fd2223 sw a5,36(s10) + 3bc07368: 048d3503 ld a0,72(s10) + 3bc0736c: 050d3403 ld s0,80(s10) + 3bc07370: 41998633 sub a2,s3,s9 + 3bc07374: 85e6 mv a1,s9 + 3bc07376: 8c09 sub s0,s0,a0 + 3bc07378: 008637b3 sltu a5,a2,s0 + 3bc0737c: 0017c793 xori a5,a5,1 + 3bc07380: 40f6140b mveqz s0,a2,a5 + 3bc07384: 8622 mv a2,s0 + 3bc07386: 955e add a0,a0,s7 + 3bc07388: ee4f90ef jal ra,3bc00a6c + 3bc0738c: 048d3783 ld a5,72(s10) + 3bc07390: 050d3603 ld a2,80(s10) + 3bc07394: 97a2 add a5,a5,s0 + 3bc07396: 04fd3423 sd a5,72(s10) + 3bc0739a: 9466 add s0,s0,s9 + 3bc0739c: 00c7f763 bgeu a5,a2,3bc073aa + 3bc073a0: 0611 addi a2,a2,4 + 3bc073a2: 40f604b3 sub s1,a2,a5 + 3bc073a6: 4a01 li s4,0 + 3bc073a8: b765 j 3bc07350 + 3bc073aa: 85de mv a1,s7 + 3bc073ac: 856a mv a0,s10 + 3bc073ae: c8dff0ef jal ra,3bc0703a + 3bc073b2: 57b1 li a5,-20 + 3bc073b4: f8a7fee3 bgeu a5,a0,3bc07350 + 3bc073b8: 70ea ld ra,184(sp) + 3bc073ba: 744a ld s0,176(sp) + 3bc073bc: 74aa ld s1,168(sp) + 3bc073be: 790a ld s2,160(sp) + 3bc073c0: 69ea ld s3,152(sp) + 3bc073c2: 6a4a ld s4,144(sp) + 3bc073c4: 6aaa ld s5,136(sp) + 3bc073c6: 6b0a ld s6,128(sp) + 3bc073c8: 7be6 ld s7,120(sp) + 3bc073ca: 7c46 ld s8,112(sp) + 3bc073cc: 7ca6 ld s9,104(sp) + 3bc073ce: 7d06 ld s10,96(sp) + 3bc073d0: 6de6 ld s11,88(sp) + 3bc073d2: 6129 addi sp,sp,192 + 3bc073d4: 8082 ret + 3bc073d6: 008d2783 lw a5,8(s10) + 3bc073da: c789 beqz a5,3bc073e4 + 3bc073dc: 4581 li a1,0 + 3bc073de: 8562 mv a0,s8 + 3bc073e0: 34d000ef jal ra,3bc07f2c + 3bc073e4: 004d2403 lw s0,4(s10) + 3bc073e8: 030d3783 ld a5,48(s10) + 3bc073ec: 00143413 seqz s0,s0 + 3bc073f0: 0446 slli s0,s0,0x11 + 3bc073f2: 943e add s0,s0,a5 + 3bc073f4: 038d3783 ld a5,56(s10) + 3bc073f8: 0287fe63 bgeu a5,s0,3bc07434 + 3bc073fc: 040d3503 ld a0,64(s10) + 3bc07400: 020d3c23 sd zero,56(s10) + 3bc07404: a0cfa0ef jal ra,3bc01610 + 3bc07408: 030d3503 ld a0,48(s10) + 3bc0740c: 0511 addi a0,a0,4 + 3bc0740e: 9d4fa0ef jal ra,3bc015e2 + 3bc07412: 04ad3023 sd a0,64(s10) + 3bc07416: e119 bnez a0,3bc0741c + 3bc07418: 555d li a0,-9 + 3bc0741a: bf79 j 3bc073b8 + 3bc0741c: 058d3503 ld a0,88(s10) + 3bc07420: 9f0fa0ef jal ra,3bc01610 + 3bc07424: 8522 mv a0,s0 + 3bc07426: 9bcfa0ef jal ra,3bc015e2 + 3bc0742a: 04ad3c23 sd a0,88(s10) + 3bc0742e: d56d beqz a0,3bc07418 + 3bc07430: 028d3c23 sd s0,56(s10) + 3bc07434: 058d3783 ld a5,88(s10) + 3bc07438: 040d3423 sd zero,72(s10) + 3bc0743c: 040d3823 sd zero,80(s10) + 3bc07440: 06fd3823 sd a5,112(s10) + 3bc07444: 478d li a5,3 + 3bc07446: 080d3023 sd zero,128(s10) + 3bc0744a: 060d3c23 sd zero,120(s10) + 3bc0744e: 02fd2223 sw a5,36(s10) + 3bc07452: 419987b3 sub a5,s3,s9 + 3bc07456: 470d li a4,3 + 3bc07458: 00f77b63 bgeu a4,a5,3bc0746e + 3bc0745c: 024d2703 lw a4,36(s10) + 3bc07460: 4791 li a5,4 + 3bc07462: 004c8413 addi s0,s9,4 + 3bc07466: 04f71e63 bne a4,a5,3bc074c2 + 3bc0746a: 8ca2 mv s9,s0 + 3bc0746c: a031 j 3bc07478 + 3bc0746e: 4791 li a5,4 + 3bc07470: 040d3423 sd zero,72(s10) + 3bc07474: 02fd2223 sw a5,36(s10) + 3bc07478: 048d3683 ld a3,72(s10) + 3bc0747c: 4711 li a4,4 + 3bc0747e: 040d3503 ld a0,64(s10) + 3bc07482: 40d705b3 sub a1,a4,a3 + 3bc07486: 41998633 sub a2,s3,s9 + 3bc0748a: 00c5b7b3 sltu a5,a1,a2 + 3bc0748e: 0017c793 xori a5,a5,1 + 3bc07492: 40f5960b mveqz a2,a1,a5 + 3bc07496: 9536 add a0,a0,a3 + 3bc07498: 85e6 mv a1,s9 + 3bc0749a: f832 sd a2,48(sp) + 3bc0749c: dd0f90ef jal ra,3bc00a6c + 3bc074a0: 048d3783 ld a5,72(s10) + 3bc074a4: 7642 ld a2,48(sp) + 3bc074a6: 00cc8433 add s0,s9,a2 + 3bc074aa: 963e add a2,a2,a5 + 3bc074ac: 04cd3423 sd a2,72(s10) + 3bc074b0: 478d li a5,3 + 3bc074b2: 00c7e663 bltu a5,a2,3bc074be + 3bc074b6: 4711 li a4,4 + 3bc074b8: 40c704b3 sub s1,a4,a2 + 3bc074bc: b5ed j 3bc073a6 + 3bc074be: 040d3c83 ld s9,64(s10) + 3bc074c2: 8566 mv a0,s9 + 3bc074c4: f8ffe0ef jal ra,3bc06452 + 3bc074c8: 2501 sext.w a0,a0 + 3bc074ca: 47a9 li a5,10 + 3bc074cc: c50d beqz a0,3bc074f6 + 3bc074ce: 030d3683 ld a3,48(s10) + 3bc074d2: 7805378b extu a5,a0,30,0 + 3bc074d6: 7c07b70b extu a4,a5,31,0 + 3bc074da: 4ef6ee63 bltu a3,a5,3bc079d6 + 3bc074de: 01cd2783 lw a5,28(s10) + 3bc074e2: 00055d63 bgez a0,3bc074fc + 3bc074e6: 04ed3823 sd a4,80(s10) + 3bc074ea: c789 beqz a5,3bc074f4 + 3bc074ec: 7502 ld a0,32(sp) + 3bc074ee: 4581 li a1,0 + 3bc074f0: 23d000ef jal ra,3bc07f2c + 3bc074f4: 4795 li a5,5 + 3bc074f6: 02fd2223 sw a5,36(s10) + 3bc074fa: bd99 j 3bc07350 + 3bc074fc: 02079693 slli a3,a5,0x20 + 3bc07500: 01e6d793 srli a5,a3,0x1e + 3bc07504: 97ba add a5,a5,a4 + 3bc07506: 471d li a4,7 + 3bc07508: 04fd3823 sd a5,80(s10) + 3bc0750c: 02ed2223 sw a4,36(s10) + 3bc07510: 01690463 beq s2,s6,3bc07518 + 3bc07514: e3341ee3 bne s0,s3,3bc07350 + 3bc07518: 00478493 addi s1,a5,4 + 3bc0751c: b569 j 3bc073a6 + 3bc0751e: 4601 li a2,0 + 3bc07520: 06090e63 beqz s2,3bc0759c + 3bc07524: 41998733 sub a4,s3,s9 + 3bc07528: 412b0633 sub a2,s6,s2 + 3bc0752c: 00c737b3 sltu a5,a4,a2 + 3bc07530: 0017c793 xori a5,a5,1 + 3bc07534: 40f7160b mveqz a2,a4,a5 + 3bc07538: 050d3703 ld a4,80(s10) + 3bc0753c: 85e6 mv a1,s9 + 3bc0753e: 854a mv a0,s2 + 3bc07540: 00c737b3 sltu a5,a4,a2 + 3bc07544: 0017c793 xori a5,a5,1 + 3bc07548: 40f7160b mveqz a2,a4,a5 + 3bc0754c: f832 sd a2,48(sp) + 3bc0754e: d1ef90ef jal ra,3bc00a6c + 3bc07552: 01cd2783 lw a5,28(s10) + 3bc07556: 7642 ld a2,48(sp) + 3bc07558: c791 beqz a5,3bc07564 + 3bc0755a: 7502 ld a0,32(sp) + 3bc0755c: 85e6 mv a1,s9 + 3bc0755e: 225000ef jal ra,3bc07f82 + 3bc07562: 7642 ld a2,48(sp) + 3bc07564: 008d2783 lw a5,8(s10) + 3bc07568: c799 beqz a5,3bc07576 + 3bc0756a: 85e6 mv a1,s9 + 3bc0756c: 8562 mv a0,s8 + 3bc0756e: f832 sd a2,48(sp) + 3bc07570: 213000ef jal ra,3bc07f82 + 3bc07574: 7642 ld a2,48(sp) + 3bc07576: 010d3783 ld a5,16(s10) + 3bc0757a: c791 beqz a5,3bc07586 + 3bc0757c: 028d3783 ld a5,40(s10) + 3bc07580: 8f91 sub a5,a5,a2 + 3bc07582: 02fd3423 sd a5,40(s10) + 3bc07586: 004d2783 lw a5,4(s10) + 3bc0758a: eb89 bnez a5,3bc0759c + 3bc0758c: 4701 li a4,0 + 3bc0758e: 86d6 mv a3,s5 + 3bc07590: 85ca mv a1,s2 + 3bc07592: 856a mv a0,s10 + 3bc07594: f832 sd a2,48(sp) + 3bc07596: 956ff0ef jal ra,3bc066ec + 3bc0759a: 7642 ld a2,48(sp) + 3bc0759c: 050d3783 ld a5,80(s10) + 3bc075a0: 01cd2703 lw a4,28(s10) + 3bc075a4: 00cc8433 add s0,s9,a2 + 3bc075a8: 9932 add s2,s2,a2 + 3bc075aa: 00c79863 bne a5,a2,3bc075ba + 3bc075ae: 28070d63 beqz a4,3bc07848 + 3bc075b2: 040d3423 sd zero,72(s10) + 3bc075b6: 4799 li a5,6 + 3bc075b8: bf3d j 3bc074f6 + 3bc075ba: 40c78633 sub a2,a5,a2 + 3bc075be: 04cd3823 sd a2,80(s10) + 3bc075c2: 00e03733 snez a4,a4 + 3bc075c6: 0611 addi a2,a2,4 + 3bc075c8: 04e6148b addsl s1,a2,a4,2 + 3bc075cc: bbe9 j 3bc073a6 + 3bc075ce: 419987b3 sub a5,s3,s9 + 3bc075d2: 470d li a4,3 + 3bc075d4: 048d3503 ld a0,72(s10) + 3bc075d8: 02f75363 bge a4,a5,3bc075fe + 3bc075dc: e10d bnez a0,3bc075fe + 3bc075de: 004c8413 addi s0,s9,4 + 3bc075e2: 8766 mv a4,s9 + 3bc075e4: 853a mv a0,a4 + 3bc075e6: e6dfe0ef jal ra,3bc06452 + 3bc075ea: 00050c9b sext.w s9,a0 + 3bc075ee: 7502 ld a0,32(sp) + 3bc075f0: 365000ef jal ra,3bc08154 + 3bc075f4: 2501 sext.w a0,a0 + 3bc075f6: 24ac8963 beq s9,a0,3bc07848 + 3bc075fa: 5565 li a0,-7 + 3bc075fc: bb75 j 3bc073b8 + 3bc075fe: 4411 li s0,4 + 3bc07600: 8c09 sub s0,s0,a0 + 3bc07602: 0087b733 sltu a4,a5,s0 + 3bc07606: 00174713 xori a4,a4,1 + 3bc0760a: 40e7940b mveqz s0,a5,a4 + 3bc0760e: 8622 mv a2,s0 + 3bc07610: 85e6 mv a1,s9 + 3bc07612: 955e add a0,a0,s7 + 3bc07614: f85e sd s7,48(sp) + 3bc07616: c56f90ef jal ra,3bc00a6c + 3bc0761a: 048d3783 ld a5,72(s10) + 3bc0761e: 468d li a3,3 + 3bc07620: 7742 ld a4,48(sp) + 3bc07622: 97a2 add a5,a5,s0 + 3bc07624: 04fd3423 sd a5,72(s10) + 3bc07628: 9466 add s0,s0,s9 + 3bc0762a: d6f6fee3 bgeu a3,a5,3bc073a6 + 3bc0762e: bf5d j 3bc075e4 + 3bc07630: 050d3403 ld s0,80(s10) + 3bc07634: 419987b3 sub a5,s3,s9 + 3bc07638: 0087f963 bgeu a5,s0,3bc0764a + 3bc0763c: 47a1 li a5,8 + 3bc0763e: 040d3423 sd zero,72(s10) + 3bc07642: 02fd2223 sw a5,36(s10) + 3bc07646: 8466 mv s0,s9 + 3bc07648: b321 j 3bc07350 + 3bc0764a: 9466 add s0,s0,s9 + 3bc0764c: 01cd2783 lw a5,28(s10) + 3bc07650: 16079563 bnez a5,3bc077ba + 3bc07654: 030d3683 ld a3,48(s10) + 3bc07658: 412b0633 sub a2,s6,s2 + 3bc0765c: 060d3703 ld a4,96(s10) + 3bc07660: 068d3783 ld a5,104(s10) + 3bc07664: 18d67263 bgeu a2,a3,3bc077e8 + 3bc07668: 004d2683 lw a3,4(s10) + 3bc0766c: ea95 bnez a3,3bc076a0 + 3bc0766e: 058d3683 ld a3,88(s10) + 3bc07672: 1cd71d63 bne a4,a3,3bc0784c + 3bc07676: 000206b7 lui a3,0x20 + 3bc0767a: 00f6fc63 bgeu a3,a5,3bc07692 + 3bc0767e: 75c1 lui a1,0xffff0 + 3bc07680: 95be add a1,a1,a5 + 3bc07682: 6641 lui a2,0x10 + 3bc07684: 95ba add a1,a1,a4 + 3bc07686: 853a mv a0,a4 + 3bc07688: be4f90ef jal ra,3bc00a6c + 3bc0768c: 67c1 lui a5,0x10 + 3bc0768e: 06fd3423 sd a5,104(s10) + 3bc07692: 058d3783 ld a5,88(s10) + 3bc07696: 068d3703 ld a4,104(s10) + 3bc0769a: 97ba add a5,a5,a4 + 3bc0769c: 06fd3823 sd a5,112(s10) + 3bc076a0: 060d3703 ld a4,96(s10) + 3bc076a4: 068d3783 ld a5,104(s10) + 3bc076a8: cb09 beqz a4,3bc076ba + 3bc076aa: 400006b7 lui a3,0x40000 + 3bc076ae: 00f6f663 bgeu a3,a5,3bc076ba + 3bc076b2: 76c1 lui a3,0xffff0 + 3bc076b4: 97b6 add a5,a5,a3 + 3bc076b6: 973e add a4,a4,a5 + 3bc076b8: 67c1 lui a5,0x10 + 3bc076ba: 030d2683 lw a3,48(s10) + 3bc076be: 050d2603 lw a2,80(s10) + 3bc076c2: 070d3583 ld a1,112(s10) + 3bc076c6: 8566 mv a0,s9 + 3bc076c8: 2781 sext.w a5,a5 + 3bc076ca: 921ff0ef jal ra,3bc06fea + 3bc076ce: 8caa mv s9,a0 + 3bc076d0: 30054763 bltz a0,3bc079de + 3bc076d4: 008d2783 lw a5,8(s10) + 3bc076d8: c799 beqz a5,3bc076e6 + 3bc076da: 070d3583 ld a1,112(s10) + 3bc076de: 862a mv a2,a0 + 3bc076e0: 8562 mv a0,s8 + 3bc076e2: 0a1000ef jal ra,3bc07f82 + 3bc076e6: 010d3783 ld a5,16(s10) + 3bc076ea: c799 beqz a5,3bc076f8 + 3bc076ec: 028d3783 ld a5,40(s10) + 3bc076f0: 419787b3 sub a5,a5,s9 + 3bc076f4: 02fd3423 sd a5,40(s10) + 3bc076f8: 47a5 li a5,9 + 3bc076fa: 079d3c23 sd s9,120(s10) + 3bc076fe: 080d3023 sd zero,128(s10) + 3bc07702: 02fd2223 sw a5,36(s10) + 3bc07706: 04090763 beqz s2,3bc07754 + 3bc0770a: 080d3703 ld a4,128(s10) + 3bc0770e: 078d3603 ld a2,120(s10) + 3bc07712: 412b06b3 sub a3,s6,s2 + 3bc07716: 070d3583 ld a1,112(s10) + 3bc0771a: 8e19 sub a2,a2,a4 + 3bc0771c: 00c6b7b3 sltu a5,a3,a2 + 3bc07720: 0017c793 xori a5,a5,1 + 3bc07724: 42f6168b mvnez a3,a2,a5 + 3bc07728: 8636 mv a2,a3 + 3bc0772a: 95ba add a1,a1,a4 + 3bc0772c: 854a mv a0,s2 + 3bc0772e: 8cb6 mv s9,a3 + 3bc07730: b3cf90ef jal ra,3bc00a6c + 3bc07734: 004d2783 lw a5,4(s10) + 3bc07738: eb81 bnez a5,3bc07748 + 3bc0773a: 4705 li a4,1 + 3bc0773c: 86d6 mv a3,s5 + 3bc0773e: 8666 mv a2,s9 + 3bc07740: 85ca mv a1,s2 + 3bc07742: 856a mv a0,s10 + 3bc07744: fa9fe0ef jal ra,3bc066ec + 3bc07748: 080d3783 ld a5,128(s10) + 3bc0774c: 9966 add s2,s2,s9 + 3bc0774e: 97e6 add a5,a5,s9 + 3bc07750: 08fd3023 sd a5,128(s10) + 3bc07754: 080d3703 ld a4,128(s10) + 3bc07758: 078d3783 ld a5,120(s10) + 3bc0775c: 0ef70663 beq a4,a5,3bc07848 + 3bc07760: 4491 li s1,4 + 3bc07762: b191 j 3bc073a6 + 3bc07764: 048d3703 ld a4,72(s10) + 3bc07768: 050d3403 ld s0,80(s10) + 3bc0776c: 41998633 sub a2,s3,s9 + 3bc07770: 040d3503 ld a0,64(s10) + 3bc07774: 8c19 sub s0,s0,a4 + 3bc07776: 008637b3 sltu a5,a2,s0 + 3bc0777a: 0017c793 xori a5,a5,1 + 3bc0777e: 40f6140b mveqz s0,a2,a5 + 3bc07782: 8622 mv a2,s0 + 3bc07784: 953a add a0,a0,a4 + 3bc07786: 85e6 mv a1,s9 + 3bc07788: ae4f90ef jal ra,3bc00a6c + 3bc0778c: 048d3783 ld a5,72(s10) + 3bc07790: 00f40733 add a4,s0,a5 + 3bc07794: 050d3783 ld a5,80(s10) + 3bc07798: 04ed3423 sd a4,72(s10) + 3bc0779c: 9466 add s0,s0,s9 + 3bc0779e: 00f77b63 bgeu a4,a5,3bc077b4 + 3bc077a2: 01cd2483 lw s1,28(s10) + 3bc077a6: 0791 addi a5,a5,4 + 3bc077a8: 8f99 sub a5,a5,a4 + 3bc077aa: 009034b3 snez s1,s1 + 3bc077ae: 0497948b addsl s1,a5,s1,2 + 3bc077b2: bed5 j 3bc073a6 + 3bc077b4: 040d3c83 ld s9,64(s10) + 3bc077b8: bd51 j 3bc0764c + 3bc077ba: 050d3583 ld a1,80(s10) + 3bc077be: 15f1 addi a1,a1,-4 + 3bc077c0: 04bd3823 sd a1,80(s10) + 3bc077c4: 00bc8533 add a0,s9,a1 + 3bc077c8: fc2e sd a1,56(sp) + 3bc077ca: c89fe0ef jal ra,3bc06452 + 3bc077ce: 75e2 ld a1,56(sp) + 3bc077d0: 0005079b sext.w a5,a0 + 3bc077d4: 4601 li a2,0 + 3bc077d6: 8566 mv a0,s9 + 3bc077d8: f83e sd a5,48(sp) + 3bc077da: 58c000ef jal ra,3bc07d66 + 3bc077de: 77c2 ld a5,48(sp) + 3bc077e0: 2501 sext.w a0,a0 + 3bc077e2: e6a789e3 beq a5,a0,3bc07654 + 3bc077e6: bd11 j 3bc075fa + 3bc077e8: cb09 beqz a4,3bc077fa + 3bc077ea: 40000637 lui a2,0x40000 + 3bc077ee: 00f67663 bgeu a2,a5,3bc077fa + 3bc077f2: 75c1 lui a1,0xffff0 + 3bc077f4: 97ae add a5,a5,a1 + 3bc077f6: 973e add a4,a4,a5 + 3bc077f8: 67c1 lui a5,0x10 + 3bc077fa: 050d2603 lw a2,80(s10) + 3bc077fe: 8566 mv a0,s9 + 3bc07800: 2781 sext.w a5,a5 + 3bc07802: 2681 sext.w a3,a3 + 3bc07804: 85ca mv a1,s2 + 3bc07806: fe4ff0ef jal ra,3bc06fea + 3bc0780a: 8caa mv s9,a0 + 3bc0780c: 1c054763 bltz a0,3bc079da + 3bc07810: 008d2783 lw a5,8(s10) + 3bc07814: c791 beqz a5,3bc07820 + 3bc07816: 862a mv a2,a0 + 3bc07818: 85ca mv a1,s2 + 3bc0781a: 8562 mv a0,s8 + 3bc0781c: 766000ef jal ra,3bc07f82 + 3bc07820: 010d3783 ld a5,16(s10) + 3bc07824: c799 beqz a5,3bc07832 + 3bc07826: 028d3783 ld a5,40(s10) + 3bc0782a: 419787b3 sub a5,a5,s9 + 3bc0782e: 02fd3423 sd a5,40(s10) + 3bc07832: 004d2783 lw a5,4(s10) + 3bc07836: eb81 bnez a5,3bc07846 + 3bc07838: 4701 li a4,0 + 3bc0783a: 86d6 mv a3,s5 + 3bc0783c: 8666 mv a2,s9 + 3bc0783e: 85ca mv a1,s2 + 3bc07840: 856a mv a0,s10 + 3bc07842: eabfe0ef jal ra,3bc066ec + 3bc07846: 9966 add s2,s2,s9 + 3bc07848: 478d li a5,3 + 3bc0784a: b175 j 3bc074f6 + 3bc0784c: 6741 lui a4,0x10 + 3bc0784e: 00f77363 bgeu a4,a5,3bc07854 + 3bc07852: 67c1 lui a5,0x10 + 3bc07854: 97b6 add a5,a5,a3 + 3bc07856: b599 j 3bc0769c + 3bc07858: 8466 mv s0,s9 + 3bc0785a: b575 j 3bc07706 + 3bc0785c: 028d3483 ld s1,40(s10) + 3bc07860: 18049163 bnez s1,3bc079e2 + 3bc07864: 008d2a03 lw s4,8(s10) + 3bc07868: 000a1963 bnez s4,3bc0787a + 3bc0786c: 020d2223 sw zero,36(s10) + 3bc07870: 060d3023 sd zero,96(s10) + 3bc07874: 060d3423 sd zero,104(s10) + 3bc07878: b3f9 j 3bc07646 + 3bc0787a: 419987b3 sub a5,s3,s9 + 3bc0787e: 470d li a4,3 + 3bc07880: 04f74a63 blt a4,a5,3bc078d4 + 3bc07884: 47ad li a5,11 + 3bc07886: 040d3423 sd zero,72(s10) + 3bc0788a: 02fd2223 sw a5,36(s10) + 3bc0788e: 048d3703 ld a4,72(s10) + 3bc07892: 4491 li s1,4 + 3bc07894: 41998a33 sub s4,s3,s9 + 3bc07898: 40e48633 sub a2,s1,a4 + 3bc0789c: 014637b3 sltu a5,a2,s4 + 3bc078a0: 040d3503 ld a0,64(s10) + 3bc078a4: 0017c793 xori a5,a5,1 + 3bc078a8: 40f61a0b mveqz s4,a2,a5 + 3bc078ac: 8652 mv a2,s4 + 3bc078ae: 85e6 mv a1,s9 + 3bc078b0: 953a add a0,a0,a4 + 3bc078b2: 9baf90ef jal ra,3bc00a6c + 3bc078b6: 048d3603 ld a2,72(s10) + 3bc078ba: 014c8433 add s0,s9,s4 + 3bc078be: 478d li a5,3 + 3bc078c0: 9a32 add s4,s4,a2 + 3bc078c2: 054d3423 sd s4,72(s10) + 3bc078c6: 414484b3 sub s1,s1,s4 + 3bc078ca: ad47fee3 bgeu a5,s4,3bc073a6 + 3bc078ce: 040d3c83 ld s9,64(s10) + 3bc078d2: a019 j 3bc078d8 + 3bc078d4: 004c8413 addi s0,s9,4 + 3bc078d8: 8566 mv a0,s9 + 3bc078da: b79fe0ef jal ra,3bc06452 + 3bc078de: 0005049b sext.w s1,a0 + 3bc078e2: 8562 mv a0,s8 + 3bc078e4: 071000ef jal ra,3bc08154 + 3bc078e8: 2501 sext.w a0,a0 + 3bc078ea: 0ea49e63 bne s1,a0,3bc079e6 + 3bc078ee: 020d2223 sw zero,36(s10) + 3bc078f2: 060d3023 sd zero,96(s10) + 3bc078f6: 060d3423 sd zero,104(s10) + 3bc078fa: 4481 li s1,0 + 3bc078fc: b46d j 3bc073a6 + 3bc078fe: 419987b3 sub a5,s3,s9 + 3bc07902: 470d li a4,3 + 3bc07904: 004c8413 addi s0,s9,4 + 3bc07908: 04f74d63 blt a4,a5,3bc07962 + 3bc0790c: 4791 li a5,4 + 3bc0790e: 04fd3423 sd a5,72(s10) + 3bc07912: 47a1 li a5,8 + 3bc07914: 04fd3823 sd a5,80(s10) + 3bc07918: 47b5 li a5,13 + 3bc0791a: 02fd2223 sw a5,36(s10) + 3bc0791e: 048d3503 ld a0,72(s10) + 3bc07922: 050d3603 ld a2,80(s10) + 3bc07926: 41998733 sub a4,s3,s9 + 3bc0792a: 85e6 mv a1,s9 + 3bc0792c: 8e09 sub a2,a2,a0 + 3bc0792e: 00c737b3 sltu a5,a4,a2 + 3bc07932: 0017c793 xori a5,a5,1 + 3bc07936: 40f7160b mveqz a2,a4,a5 + 3bc0793a: 955e add a0,a0,s7 + 3bc0793c: f832 sd a2,48(sp) + 3bc0793e: 92ef90ef jal ra,3bc00a6c + 3bc07942: 048d3783 ld a5,72(s10) + 3bc07946: 7642 ld a2,48(sp) + 3bc07948: 00cc8433 add s0,s9,a2 + 3bc0794c: 963e add a2,a2,a5 + 3bc0794e: 050d3783 ld a5,80(s10) + 3bc07952: 04cd3423 sd a2,72(s10) + 3bc07956: 00f67563 bgeu a2,a5,3bc07960 + 3bc0795a: 40c784b3 sub s1,a5,a2 + 3bc0795e: b4a1 j 3bc073a6 + 3bc07960: 7ca2 ld s9,40(sp) + 3bc07962: 8566 mv a0,s9 + 3bc07964: aeffe0ef jal ra,3bc06452 + 3bc07968: 7c05350b extu a0,a0,31,0 + 3bc0796c: 00ad3823 sd a0,16(s10) + 3bc07970: 04ad3823 sd a0,80(s10) + 3bc07974: 47b9 li a5,14 + 3bc07976: b641 j 3bc074f6 + 3bc07978: 050d3483 ld s1,80(s10) + 3bc0797c: 41998633 sub a2,s3,s9 + 3bc07980: 4a01 li s4,0 + 3bc07982: 00c4b7b3 sltu a5,s1,a2 + 3bc07986: 0017c793 xori a5,a5,1 + 3bc0798a: 40f4960b mveqz a2,s1,a5 + 3bc0798e: 8c91 sub s1,s1,a2 + 3bc07990: 049d3823 sd s1,80(s10) + 3bc07994: 00cc8433 add s0,s9,a2 + 3bc07998: 9a049ce3 bnez s1,3bc07350 + 3bc0799c: 020d2223 sw zero,36(s10) + 3bc079a0: 060d3023 sd zero,96(s10) + 3bc079a4: 060d3423 sd zero,104(s10) + 3bc079a8: b265 j 3bc07350 + 3bc079aa: 6741 lui a4,0x10 + 3bc079ac: 843e mv s0,a5 + 3bc079ae: 00f77363 bgeu a4,a5,3bc079b4 + 3bc079b2: 6441 lui s0,0x10 + 3bc079b4: 8f81 sub a5,a5,s0 + 3bc079b6: 95be add a1,a1,a5 + 3bc079b8: 8622 mv a2,s0 + 3bc079ba: 8b2f90ef jal ra,3bc00a6c + 3bc079be: 058d3783 ld a5,88(s10) + 3bc079c2: 068d3423 sd s0,104(s10) + 3bc079c6: 06fd3023 sd a5,96(s10) + 3bc079ca: 97a2 add a5,a5,s0 + 3bc079cc: 06fd3823 sd a5,112(s10) + 3bc079d0: b23d j 3bc072fe + 3bc079d2: 451d li a0,7 + 3bc079d4: b2d5 j 3bc073b8 + 3bc079d6: 5579 li a0,-2 + 3bc079d8: b2c5 j 3bc073b8 + 3bc079da: 557d li a0,-1 + 3bc079dc: baf1 j 3bc073b8 + 3bc079de: 5541 li a0,-16 + 3bc079e0: bae1 j 3bc073b8 + 3bc079e2: 5549 li a0,-14 + 3bc079e4: bad1 j 3bc073b8 + 3bc079e6: 5539 li a0,-18 + 3bc079e8: bac1 j 3bc073b8 + +000000003bc079ea : + 3bc079ea: 00f5579b srliw a5,a0,0xf + 3bc079ee: 8d3d xor a0,a0,a5 + 3bc079f0: 85ebd7b7 lui a5,0x85ebd + 3bc079f4: a777879b addiw a5,a5,-1417 + 3bc079f8: 02a7853b mulw a0,a5,a0 + 3bc079fc: 00d5579b srliw a5,a0,0xd + 3bc07a00: 8fa9 xor a5,a5,a0 + 3bc07a02: c2b2b537 lui a0,0xc2b2b + 3bc07a06: e3d5051b addiw a0,a0,-451 + 3bc07a0a: 02a787bb mulw a5,a5,a0 + 3bc07a0e: 0107d51b srliw a0,a5,0x10 + 3bc07a12: 8d3d xor a0,a0,a5 + 3bc07a14: 8082 ret + +000000003bc07a16 : + 3bc07a16: 1101 addi sp,sp,-32 + 3bc07a18: 85aa mv a1,a0 + 3bc07a1a: 4611 li a2,4 + 3bc07a1c: 0068 addi a0,sp,12 + 3bc07a1e: ec06 sd ra,24(sp) + 3bc07a20: 84cf90ef jal ra,3bc00a6c + 3bc07a24: 60e2 ld ra,24(sp) + 3bc07a26: 4532 lw a0,12(sp) + 3bc07a28: 6105 addi sp,sp,32 + 3bc07a2a: 8082 ret + +000000003bc07a2c : + 3bc07a2c: 1101 addi sp,sp,-32 + 3bc07a2e: 8a3d andi a2,a2,15 + 3bc07a30: e822 sd s0,16(sp) + 3bc07a32: ec06 sd ra,24(sp) + 3bc07a34: e426 sd s1,8(sp) + 3bc07a36: e04a sd s2,0(sp) + 3bc07a38: 167d addi a2,a2,-1 + 3bc07a3a: 47b9 li a5,14 + 3bc07a3c: 842a mv s0,a0 + 3bc07a3e: 30c7ec63 bltu a5,a2,3bc07d56 + 3bc07a42: 00003717 auipc a4,0x3 + 3bc07a46: 77670713 addi a4,a4,1910 # 3bc0b1b8 + 3bc07a4a: 44c7478b lrw a5,a4,a2,2 + 3bc07a4e: 84ae mv s1,a1 + 3bc07a50: 8936 mv s2,a3 + 3bc07a52: 97ba add a5,a5,a4 + 3bc07a54: 8782 jr a5 + 3bc07a56: 4785 li a5,1 + 3bc07a58: 08f69a63 bne a3,a5,3bc07aec + 3bc07a5c: 852e mv a0,a1 + 3bc07a5e: fb9ff0ef jal ra,3bc07a16 + 3bc07a62: 0005079b sext.w a5,a0 + 3bc07a66: c2b2b737 lui a4,0xc2b2b + 3bc07a6a: e3d7071b addiw a4,a4,-451 + 3bc07a6e: 24f7140b mulaw s0,a4,a5 + 3bc07a72: 27d4f7b7 lui a5,0x27d4f + 3bc07a76: b2f7879b addiw a5,a5,-1233 + 3bc07a7a: 0491 addi s1,s1,4 + 3bc07a7c: 14f4140b srriw s0,s0,15 + 3bc07a80: 02f4043b mulw s0,s0,a5 + 3bc07a84: 4785 li a5,1 + 3bc07a86: 06f91563 bne s2,a5,3bc07af0 + 3bc07a8a: 8526 mv a0,s1 + 3bc07a8c: f8bff0ef jal ra,3bc07a16 + 3bc07a90: 0005079b sext.w a5,a0 + 3bc07a94: c2b2b737 lui a4,0xc2b2b + 3bc07a98: e3d7071b addiw a4,a4,-451 + 3bc07a9c: 0491 addi s1,s1,4 + 3bc07a9e: 24f7140b mulaw s0,a4,a5 + 3bc07aa2: 27d4f7b7 lui a5,0x27d4f + 3bc07aa6: b2f7879b addiw a5,a5,-1233 + 3bc07aaa: 14f4140b srriw s0,s0,15 + 3bc07aae: 02f4043b mulw s0,s0,a5 + 3bc07ab2: 4785 li a5,1 + 3bc07ab4: 04f91063 bne s2,a5,3bc07af4 + 3bc07ab8: 8526 mv a0,s1 + 3bc07aba: f5dff0ef jal ra,3bc07a16 + 3bc07abe: 0005079b sext.w a5,a0 + 3bc07ac2: c2b2b737 lui a4,0xc2b2b + 3bc07ac6: e3d7071b addiw a4,a4,-451 + 3bc07aca: 24f7140b mulaw s0,a4,a5 + 3bc07ace: 27d4f7b7 lui a5,0x27d4f + 3bc07ad2: b2f7879b addiw a5,a5,-1233 + 3bc07ad6: 14f4150b srriw a0,s0,15 + 3bc07ada: 02a7853b mulw a0,a5,a0 + 3bc07ade: 6442 ld s0,16(sp) + 3bc07ae0: 60e2 ld ra,24(sp) + 3bc07ae2: 64a2 ld s1,8(sp) + 3bc07ae4: 6902 ld s2,0(sp) + 3bc07ae6: 6105 addi sp,sp,32 + 3bc07ae8: f03ff06f j 3bc079ea + 3bc07aec: 419c lw a5,0(a1) + 3bc07aee: bfa5 j 3bc07a66 + 3bc07af0: 409c lw a5,0(s1) + 3bc07af2: b74d j 3bc07a94 + 3bc07af4: 409c lw a5,0(s1) + 3bc07af6: b7f1 j 3bc07ac2 + 3bc07af8: 4785 li a5,1 + 3bc07afa: 0af69263 bne a3,a5,3bc07b9e + 3bc07afe: 852e mv a0,a1 + 3bc07b00: f17ff0ef jal ra,3bc07a16 + 3bc07b04: 0005079b sext.w a5,a0 + 3bc07b08: c2b2b737 lui a4,0xc2b2b + 3bc07b0c: e3d7071b addiw a4,a4,-451 + 3bc07b10: 24f7140b mulaw s0,a4,a5 + 3bc07b14: 27d4f7b7 lui a5,0x27d4f + 3bc07b18: b2f7879b addiw a5,a5,-1233 + 3bc07b1c: 0491 addi s1,s1,4 + 3bc07b1e: 14f4140b srriw s0,s0,15 + 3bc07b22: 02f4043b mulw s0,s0,a5 + 3bc07b26: 4785 li a5,1 + 3bc07b28: 06f91d63 bne s2,a5,3bc07ba2 + 3bc07b2c: 8526 mv a0,s1 + 3bc07b2e: ee9ff0ef jal ra,3bc07a16 + 3bc07b32: 0005079b sext.w a5,a0 + 3bc07b36: c2b2b737 lui a4,0xc2b2b + 3bc07b3a: e3d7071b addiw a4,a4,-451 + 3bc07b3e: 0491 addi s1,s1,4 + 3bc07b40: 24f7140b mulaw s0,a4,a5 + 3bc07b44: 27d4f7b7 lui a5,0x27d4f + 3bc07b48: b2f7879b addiw a5,a5,-1233 + 3bc07b4c: 14f4140b srriw s0,s0,15 + 3bc07b50: 02f4043b mulw s0,s0,a5 + 3bc07b54: 4785 li a5,1 + 3bc07b56: 04f91863 bne s2,a5,3bc07ba6 + 3bc07b5a: 8526 mv a0,s1 + 3bc07b5c: ebbff0ef jal ra,3bc07a16 + 3bc07b60: 0005079b sext.w a5,a0 + 3bc07b64: c2b2b737 lui a4,0xc2b2b + 3bc07b68: e3d7071b addiw a4,a4,-451 + 3bc07b6c: 16566537 lui a0,0x16566 + 3bc07b70: 7b15051b addiw a0,a0,1969 + 3bc07b74: 24f7140b mulaw s0,a4,a5 + 3bc07b78: 0044c783 lbu a5,4(s1) + 3bc07b7c: 27d4f737 lui a4,0x27d4f + 3bc07b80: b2f7071b addiw a4,a4,-1233 + 3bc07b84: 02a787bb mulw a5,a5,a0 + 3bc07b88: 14f4140b srriw s0,s0,15 + 3bc07b8c: 9e378537 lui a0,0x9e378 + 3bc07b90: 9b15051b addiw a0,a0,-1615 + 3bc07b94: 24e4178b mulaw a5,s0,a4 + 3bc07b98: 1557978b srriw a5,a5,21 + 3bc07b9c: bf3d j 3bc07ada + 3bc07b9e: 419c lw a5,0(a1) + 3bc07ba0: b7a5 j 3bc07b08 + 3bc07ba2: 409c lw a5,0(s1) + 3bc07ba4: bf49 j 3bc07b36 + 3bc07ba6: 409c lw a5,0(s1) + 3bc07ba8: bf75 j 3bc07b64 + 3bc07baa: 4785 li a5,1 + 3bc07bac: 0af69a63 bne a3,a5,3bc07c60 + 3bc07bb0: 852e mv a0,a1 + 3bc07bb2: e65ff0ef jal ra,3bc07a16 + 3bc07bb6: 0005079b sext.w a5,a0 + 3bc07bba: c2b2b737 lui a4,0xc2b2b + 3bc07bbe: e3d7071b addiw a4,a4,-451 + 3bc07bc2: 24f7140b mulaw s0,a4,a5 + 3bc07bc6: 27d4f7b7 lui a5,0x27d4f + 3bc07bca: b2f7879b addiw a5,a5,-1233 + 3bc07bce: 0491 addi s1,s1,4 + 3bc07bd0: 14f4140b srriw s0,s0,15 + 3bc07bd4: 02f4043b mulw s0,s0,a5 + 3bc07bd8: 4785 li a5,1 + 3bc07bda: 08f91563 bne s2,a5,3bc07c64 + 3bc07bde: 8526 mv a0,s1 + 3bc07be0: e37ff0ef jal ra,3bc07a16 + 3bc07be4: 0005079b sext.w a5,a0 + 3bc07be8: c2b2b737 lui a4,0xc2b2b + 3bc07bec: e3d7071b addiw a4,a4,-451 + 3bc07bf0: 0491 addi s1,s1,4 + 3bc07bf2: 24f7140b mulaw s0,a4,a5 + 3bc07bf6: 27d4f7b7 lui a5,0x27d4f + 3bc07bfa: b2f7879b addiw a5,a5,-1233 + 3bc07bfe: 14f4140b srriw s0,s0,15 + 3bc07c02: 02f4043b mulw s0,s0,a5 + 3bc07c06: 4785 li a5,1 + 3bc07c08: 06f91063 bne s2,a5,3bc07c68 + 3bc07c0c: 8526 mv a0,s1 + 3bc07c0e: e09ff0ef jal ra,3bc07a16 + 3bc07c12: 0005079b sext.w a5,a0 + 3bc07c16: c2b2b737 lui a4,0xc2b2b + 3bc07c1a: e3d7071b addiw a4,a4,-451 + 3bc07c1e: 9e378537 lui a0,0x9e378 + 3bc07c22: 9b15051b addiw a0,a0,-1615 + 3bc07c26: 24f7140b mulaw s0,a4,a5 + 3bc07c2a: 0044c703 lbu a4,4(s1) + 3bc07c2e: 165667b7 lui a5,0x16566 + 3bc07c32: 7b17869b addiw a3,a5,1969 + 3bc07c36: 27d4f7b7 lui a5,0x27d4f + 3bc07c3a: b2f7879b addiw a5,a5,-1233 + 3bc07c3e: 02d7073b mulw a4,a4,a3 + 3bc07c42: 14f4140b srriw s0,s0,15 + 3bc07c46: 24f4170b mulaw a4,s0,a5 + 3bc07c4a: 0054c783 lbu a5,5(s1) + 3bc07c4e: 02d787bb mulw a5,a5,a3 + 3bc07c52: 1557170b srriw a4,a4,21 + 3bc07c56: 24a7178b mulaw a5,a4,a0 + 3bc07c5a: 1557978b srriw a5,a5,21 + 3bc07c5e: bdb5 j 3bc07ada + 3bc07c60: 419c lw a5,0(a1) + 3bc07c62: bfa1 j 3bc07bba + 3bc07c64: 409c lw a5,0(s1) + 3bc07c66: b749 j 3bc07be8 + 3bc07c68: 409c lw a5,0(s1) + 3bc07c6a: b775 j 3bc07c16 + 3bc07c6c: 4785 li a5,1 + 3bc07c6e: 0ef69663 bne a3,a5,3bc07d5a + 3bc07c72: 852e mv a0,a1 + 3bc07c74: da3ff0ef jal ra,3bc07a16 + 3bc07c78: 0005079b sext.w a5,a0 + 3bc07c7c: c2b2b737 lui a4,0xc2b2b + 3bc07c80: e3d7071b addiw a4,a4,-451 + 3bc07c84: 24f7140b mulaw s0,a4,a5 + 3bc07c88: 27d4f7b7 lui a5,0x27d4f + 3bc07c8c: b2f7879b addiw a5,a5,-1233 + 3bc07c90: 0491 addi s1,s1,4 + 3bc07c92: 14f4140b srriw s0,s0,15 + 3bc07c96: 02f4043b mulw s0,s0,a5 + 3bc07c9a: 4785 li a5,1 + 3bc07c9c: 0cf91163 bne s2,a5,3bc07d5e + 3bc07ca0: 8526 mv a0,s1 + 3bc07ca2: d75ff0ef jal ra,3bc07a16 + 3bc07ca6: 0005079b sext.w a5,a0 + 3bc07caa: c2b2b737 lui a4,0xc2b2b + 3bc07cae: e3d7071b addiw a4,a4,-451 + 3bc07cb2: 0491 addi s1,s1,4 + 3bc07cb4: 24f7140b mulaw s0,a4,a5 + 3bc07cb8: 27d4f7b7 lui a5,0x27d4f + 3bc07cbc: b2f7879b addiw a5,a5,-1233 + 3bc07cc0: 14f4140b srriw s0,s0,15 + 3bc07cc4: 02f4043b mulw s0,s0,a5 + 3bc07cc8: 4785 li a5,1 + 3bc07cca: 08f91c63 bne s2,a5,3bc07d62 + 3bc07cce: 8526 mv a0,s1 + 3bc07cd0: d47ff0ef jal ra,3bc07a16 + 3bc07cd4: 0005079b sext.w a5,a0 + 3bc07cd8: c2b2b737 lui a4,0xc2b2b + 3bc07cdc: e3d7071b addiw a4,a4,-451 + 3bc07ce0: 0491 addi s1,s1,4 + 3bc07ce2: 24f7140b mulaw s0,a4,a5 + 3bc07ce6: 27d4f7b7 lui a5,0x27d4f + 3bc07cea: b2f7879b addiw a5,a5,-1233 + 3bc07cee: 14f4140b srriw s0,s0,15 + 3bc07cf2: 02f4043b mulw s0,s0,a5 + 3bc07cf6: 9814c70b lbuia a4,(s1),1,0 + 3bc07cfa: 165667b7 lui a5,0x16566 + 3bc07cfe: 7b17879b addiw a5,a5,1969 + 3bc07d02: 24f7140b mulaw s0,a4,a5 + 3bc07d06: 9e3787b7 lui a5,0x9e378 + 3bc07d0a: 9b17879b addiw a5,a5,-1615 + 3bc07d0e: 1554140b srriw s0,s0,21 + 3bc07d12: 02f4043b mulw s0,s0,a5 + 3bc07d16: 9814c70b lbuia a4,(s1),1,0 + 3bc07d1a: 165667b7 lui a5,0x16566 + 3bc07d1e: 7b17879b addiw a5,a5,1969 + 3bc07d22: 24f7140b mulaw s0,a4,a5 + 3bc07d26: 9e3787b7 lui a5,0x9e378 + 3bc07d2a: 9b17879b addiw a5,a5,-1615 + 3bc07d2e: 1554140b srriw s0,s0,21 + 3bc07d32: 02f4043b mulw s0,s0,a5 + 3bc07d36: 0004c703 lbu a4,0(s1) + 3bc07d3a: 165667b7 lui a5,0x16566 + 3bc07d3e: 7b17879b addiw a5,a5,1969 + 3bc07d42: 24f7140b mulaw s0,a4,a5 + 3bc07d46: 9e3787b7 lui a5,0x9e378 + 3bc07d4a: 9b17879b addiw a5,a5,-1615 + 3bc07d4e: 1554140b srriw s0,s0,21 + 3bc07d52: 02f4043b mulw s0,s0,a5 + 3bc07d56: 8522 mv a0,s0 + 3bc07d58: b359 j 3bc07ade + 3bc07d5a: 419c lw a5,0(a1) + 3bc07d5c: b705 j 3bc07c7c + 3bc07d5e: 409c lw a5,0(s1) + 3bc07d60: b7a9 j 3bc07caa + 3bc07d62: 409c lw a5,0(s1) + 3bc07d64: bf95 j 3bc07cd8 + +000000003bc07d66 : + 3bc07d66: 711d addi sp,sp,-96 + 3bc07d68: e8a2 sd s0,80(sp) + 3bc07d6a: e0ca sd s2,64(sp) + 3bc07d6c: fc4e sd s3,56(sp) + 3bc07d6e: ec86 sd ra,88(sp) + 3bc07d70: e4a6 sd s1,72(sp) + 3bc07d72: f852 sd s4,48(sp) + 3bc07d74: f456 sd s5,40(sp) + 3bc07d76: f05a sd s6,32(sp) + 3bc07d78: ec5e sd s7,24(sp) + 3bc07d7a: e862 sd s8,16(sp) + 3bc07d7c: e466 sd s9,8(sp) + 3bc07d7e: 00357793 andi a5,a0,3 + 3bc07d82: 892a mv s2,a0 + 3bc07d84: 89ae mv s3,a1 + 3bc07d86: 8432 mv s0,a2 + 3bc07d88: eff1 bnez a5,3bc07e64 + 3bc07d8a: 47bd li a5,15 + 3bc07d8c: 0cb7f663 bgeu a5,a1,3bc07e58 + 3bc07d90: 242347b7 lui a5,0x24234 + 3bc07d94: ff158813 addi a6,a1,-15 # fffffffffffefff1 <__BL2_END__+0xffffffffc43dcbe1> + 3bc07d98: 4287879b addiw a5,a5,1064 + 3bc07d9c: 982a add a6,a6,a0 + 3bc07d9e: 9fb1 addw a5,a5,a2 + 3bc07da0: 61c88537 lui a0,0x61c88 + 3bc07da4: 85ebd637 lui a2,0x85ebd + 3bc07da8: a776061b addiw a2,a2,-1417 + 3bc07dac: 64f5051b addiw a0,a0,1615 + 3bc07db0: 9e3785b7 lui a1,0x9e378 + 3bc07db4: 0086073b addw a4,a2,s0 + 3bc07db8: 9d21 addw a0,a0,s0 + 3bc07dba: 86ca mv a3,s2 + 3bc07dbc: 9b15859b addiw a1,a1,-1615 + 3bc07dc0: 0006a883 lw a7,0(a3) # ffffffffffff0000 <__BL2_END__+0xffffffffc43dcbf0> + 3bc07dc4: 24c8978b mulaw a5,a7,a2 + 3bc07dc8: 0046a883 lw a7,4(a3) + 3bc07dcc: 24c8970b mulaw a4,a7,a2 + 3bc07dd0: 0086a883 lw a7,8(a3) + 3bc07dd4: 1537978b srriw a5,a5,19 + 3bc07dd8: 24c8940b mulaw s0,a7,a2 + 3bc07ddc: 00c6a883 lw a7,12(a3) + 3bc07de0: 1537170b srriw a4,a4,19 + 3bc07de4: 06c1 addi a3,a3,16 + 3bc07de6: 24c8950b mulaw a0,a7,a2 + 3bc07dea: 1534140b srriw s0,s0,19 + 3bc07dee: 1535150b srriw a0,a0,19 + 3bc07df2: 02b787bb mulw a5,a5,a1 + 3bc07df6: 02b7073b mulw a4,a4,a1 + 3bc07dfa: 02b4043b mulw s0,s0,a1 + 3bc07dfe: 02b5053b mulw a0,a0,a1 + 3bc07e02: fb06efe3 bltu a3,a6,3bc07dc0 + 3bc07e06: 00190593 addi a1,s2,1 + 3bc07e0a: 46c1 li a3,16 + 3bc07e0c: 00b86663 bltu a6,a1,3bc07e18 + 3bc07e10: ff098693 addi a3,s3,-16 + 3bc07e14: 9ac1 andi a3,a3,-16 + 3bc07e16: 06c1 addi a3,a3,16 + 3bc07e18: 15f7978b srriw a5,a5,31 + 3bc07e1c: 1597170b srriw a4,a4,25 + 3bc07e20: 9fb9 addw a5,a5,a4 + 3bc07e22: 1544140b srriw s0,s0,20 + 3bc07e26: 9fa1 addw a5,a5,s0 + 3bc07e28: 14e5150b srriw a0,a0,14 + 3bc07e2c: 9936 add s2,s2,a3 + 3bc07e2e: 9d3d addw a0,a0,a5 + 3bc07e30: 4681 li a3,0 + 3bc07e32: 6446 ld s0,80(sp) + 3bc07e34: 60e6 ld ra,88(sp) + 3bc07e36: 64a6 ld s1,72(sp) + 3bc07e38: 7a42 ld s4,48(sp) + 3bc07e3a: 7aa2 ld s5,40(sp) + 3bc07e3c: 7b02 ld s6,32(sp) + 3bc07e3e: 6be2 ld s7,24(sp) + 3bc07e40: 6c42 ld s8,16(sp) + 3bc07e42: 6ca2 ld s9,8(sp) + 3bc07e44: 00f9f613 andi a2,s3,15 + 3bc07e48: 85ca mv a1,s2 + 3bc07e4a: 00a9853b addw a0,s3,a0 + 3bc07e4e: 6906 ld s2,64(sp) + 3bc07e50: 79e2 ld s3,56(sp) + 3bc07e52: 6125 addi sp,sp,96 + 3bc07e54: bd9ff06f j 3bc07a2c + 3bc07e58: 16566537 lui a0,0x16566 + 3bc07e5c: 7b15051b addiw a0,a0,1969 + 3bc07e60: 9d31 addw a0,a0,a2 + 3bc07e62: b7f9 j 3bc07e30 + 3bc07e64: 47bd li a5,15 + 3bc07e66: 0ab7fe63 bgeu a5,a1,3bc07f22 + 3bc07e6a: 242344b7 lui s1,0x24234 + 3bc07e6e: 85ebdab7 lui s5,0x85ebd + 3bc07e72: 61c887b7 lui a5,0x61c88 + 3bc07e76: ff158c93 addi s9,a1,-15 # ffffffff9e377ff1 <__BL2_END__+0xffffffff62764be1> + 3bc07e7a: 4284849b addiw s1,s1,1064 + 3bc07e7e: a77a8a9b addiw s5,s5,-1417 + 3bc07e82: 64f7879b addiw a5,a5,1615 + 3bc07e86: 9e378b37 lui s6,0x9e378 + 3bc07e8a: 9caa add s9,s9,a0 + 3bc07e8c: 9cb1 addw s1,s1,a2 + 3bc07e8e: 00ca8c3b addw s8,s5,a2 + 3bc07e92: 00c78bbb addw s7,a5,a2 + 3bc07e96: 8a2a mv s4,a0 + 3bc07e98: 9b1b0b1b addiw s6,s6,-1615 + 3bc07e9c: 8552 mv a0,s4 + 3bc07e9e: b79ff0ef jal ra,3bc07a16 + 3bc07ea2: 24aa948b mulaw s1,s5,a0 + 3bc07ea6: 004a0513 addi a0,s4,4 + 3bc07eaa: b6dff0ef jal ra,3bc07a16 + 3bc07eae: 8762 mv a4,s8 + 3bc07eb0: 24aa970b mulaw a4,s5,a0 + 3bc07eb4: 008a0513 addi a0,s4,8 + 3bc07eb8: 1534948b srriw s1,s1,19 + 3bc07ebc: 1537170b srriw a4,a4,19 + 3bc07ec0: 03670c3b mulw s8,a4,s6 + 3bc07ec4: b53ff0ef jal ra,3bc07a16 + 3bc07ec8: 24aa940b mulaw s0,s5,a0 + 3bc07ecc: 00ca0513 addi a0,s4,12 + 3bc07ed0: 0a41 addi s4,s4,16 + 3bc07ed2: 1534160b srriw a2,s0,19 + 3bc07ed6: 0366043b mulw s0,a2,s6 + 3bc07eda: b3dff0ef jal ra,3bc07a16 + 3bc07ede: 87de mv a5,s7 + 3bc07ee0: 24aa978b mulaw a5,s5,a0 + 3bc07ee4: 1537978b srriw a5,a5,19 + 3bc07ee8: 036484bb mulw s1,s1,s6 + 3bc07eec: 03678bbb mulw s7,a5,s6 + 3bc07ef0: fb9a66e3 bltu s4,s9,3bc07e9c + 3bc07ef4: 00190713 addi a4,s2,1 + 3bc07ef8: 47c1 li a5,16 + 3bc07efa: 00ece663 bltu s9,a4,3bc07f06 + 3bc07efe: ff098793 addi a5,s3,-16 + 3bc07f02: 9bc1 andi a5,a5,-16 + 3bc07f04: 07c1 addi a5,a5,16 + 3bc07f06: 159c150b srriw a0,s8,25 + 3bc07f0a: 15f4948b srriw s1,s1,31 + 3bc07f0e: 9ca9 addw s1,s1,a0 + 3bc07f10: 1544150b srriw a0,s0,20 + 3bc07f14: 993e add s2,s2,a5 + 3bc07f16: 9d25 addw a0,a0,s1 + 3bc07f18: 14eb940b srriw s0,s7,14 + 3bc07f1c: 9d21 addw a0,a0,s0 + 3bc07f1e: 4685 li a3,1 + 3bc07f20: bf09 j 3bc07e32 + 3bc07f22: 16566537 lui a0,0x16566 + 3bc07f26: 7b15051b addiw a0,a0,1969 + 3bc07f2a: bfcd j 3bc07f1c + +000000003bc07f2c : + 3bc07f2c: 715d addi sp,sp,-80 + 3bc07f2e: e0a2 sd s0,64(sp) + 3bc07f30: fc26 sd s1,56(sp) + 3bc07f32: 842e mv s0,a1 + 3bc07f34: 84aa mv s1,a0 + 3bc07f36: 03000613 li a2,48 + 3bc07f3a: 4581 li a1,0 + 3bc07f3c: 850a mv a0,sp + 3bc07f3e: e486 sd ra,72(sp) + 3bc07f40: ad3f80ef jal ra,3bc00a12 + 3bc07f44: 242347b7 lui a5,0x24234 + 3bc07f48: 4287879b addiw a5,a5,1064 + 3bc07f4c: 9fa1 addw a5,a5,s0 + 3bc07f4e: c43e sw a5,8(sp) + 3bc07f50: 85ebd7b7 lui a5,0x85ebd + 3bc07f54: a777879b addiw a5,a5,-1417 + 3bc07f58: 9fa1 addw a5,a5,s0 + 3bc07f5a: c63e sw a5,12(sp) + 3bc07f5c: 61c887b7 lui a5,0x61c88 + 3bc07f60: 64f7879b addiw a5,a5,1615 + 3bc07f64: c822 sw s0,16(sp) + 3bc07f66: 858a mv a1,sp + 3bc07f68: 9c3d addw s0,s0,a5 + 3bc07f6a: 8526 mv a0,s1 + 3bc07f6c: 02c00613 li a2,44 + 3bc07f70: ca22 sw s0,20(sp) + 3bc07f72: afbf80ef jal ra,3bc00a6c + 3bc07f76: 60a6 ld ra,72(sp) + 3bc07f78: 6406 ld s0,64(sp) + 3bc07f7a: 74e2 ld s1,56(sp) + 3bc07f7c: 4501 li a0,0 + 3bc07f7e: 6161 addi sp,sp,80 + 3bc07f80: 8082 ret + +000000003bc07f82 : + 3bc07f82: 711d addi sp,sp,-96 + 3bc07f84: e0ca sd s2,64(sp) + 3bc07f86: ec86 sd ra,88(sp) + 3bc07f88: e8a2 sd s0,80(sp) + 3bc07f8a: e4a6 sd s1,72(sp) + 3bc07f8c: fc4e sd s3,56(sp) + 3bc07f8e: f852 sd s4,48(sp) + 3bc07f90: f456 sd s5,40(sp) + 3bc07f92: f05a sd s6,32(sp) + 3bc07f94: ec5e sd s7,24(sp) + 3bc07f96: e862 sd s8,16(sp) + 3bc07f98: e466 sd s9,8(sp) + 3bc07f9a: e06a sd s10,0(sp) + 3bc07f9c: 4905 li s2,1 + 3bc07f9e: c5b9 beqz a1,3bc07fec + 3bc07fa0: 4114 lw a3,0(a0) + 3bc07fa2: 842a mv s0,a0 + 3bc07fa4: 01063713 sltiu a4,a2,16 + 3bc07fa8: 00c6853b addw a0,a3,a2 + 3bc07fac: 483d li a6,15 + 3bc07fae: 00a836b3 sltu a3,a6,a0 + 3bc07fb2: 00174713 xori a4,a4,1 + 3bc07fb6: 8f55 or a4,a4,a3 + 3bc07fb8: 4054 lw a3,4(s0) + 3bc07fba: c008 sw a0,0(s0) + 3bc07fbc: 84ae mv s1,a1 + 3bc07fbe: 8f55 or a4,a4,a3 + 3bc07fc0: c058 sw a4,4(s0) + 3bc07fc2: 5418 lw a4,40(s0) + 3bc07fc4: 00c58d33 add s10,a1,a2 + 3bc07fc8: 0006091b sext.w s2,a2 + 3bc07fcc: 7c07350b extu a0,a4,31,0 + 3bc07fd0: 00a607b3 add a5,a2,a0 + 3bc07fd4: 02f86b63 bltu a6,a5,3bc0800a + 3bc07fd8: 01840793 addi a5,s0,24 # 10018 <__BSS_SIZE__+0xa408> + 3bc07fdc: 953e add a0,a0,a5 + 3bc07fde: a8ff80ef jal ra,3bc00a6c + 3bc07fe2: 541c lw a5,40(s0) + 3bc07fe4: 012787bb addw a5,a5,s2 + 3bc07fe8: d41c sw a5,40(s0) + 3bc07fea: 4901 li s2,0 + 3bc07fec: 60e6 ld ra,88(sp) + 3bc07fee: 6446 ld s0,80(sp) + 3bc07ff0: 64a6 ld s1,72(sp) + 3bc07ff2: 79e2 ld s3,56(sp) + 3bc07ff4: 7a42 ld s4,48(sp) + 3bc07ff6: 7aa2 ld s5,40(sp) + 3bc07ff8: 7b02 ld s6,32(sp) + 3bc07ffa: 6be2 ld s7,24(sp) + 3bc07ffc: 6c42 ld s8,16(sp) + 3bc07ffe: 6ca2 ld s9,8(sp) + 3bc08000: 6d02 ld s10,0(sp) + 3bc08002: 854a mv a0,s2 + 3bc08004: 6906 ld s2,64(sp) + 3bc08006: 6125 addi sp,sp,96 + 3bc08008: 8082 ret + 3bc0800a: c355 beqz a4,3bc080ae + 3bc0800c: 4b41 li s6,16 + 3bc0800e: 40eb063b subw a2,s6,a4 + 3bc08012: 01840993 addi s3,s0,24 + 3bc08016: 7c06360b extu a2,a2,31,0 + 3bc0801a: 954e add a0,a0,s3 + 3bc0801c: a51f80ef jal ra,3bc00a6c + 3bc08020: 00842903 lw s2,8(s0) + 3bc08024: 854e mv a0,s3 + 3bc08026: 85ebdab7 lui s5,0x85ebd + 3bc0802a: 9edff0ef jal ra,3bc07a16 + 3bc0802e: a77a8a9b addiw s5,s5,-1417 + 3bc08032: 24aa990b mulaw s2,s5,a0 + 3bc08036: 9e378a37 lui s4,0x9e378 + 3bc0803a: 9b1a0a1b addiw s4,s4,-1615 + 3bc0803e: 00c42983 lw s3,12(s0) + 3bc08042: 01c40513 addi a0,s0,28 + 3bc08046: 1539190b srriw s2,s2,19 + 3bc0804a: 0349093b mulw s2,s2,s4 + 3bc0804e: 01242423 sw s2,8(s0) + 3bc08052: 9c5ff0ef jal ra,3bc07a16 + 3bc08056: 24aa998b mulaw s3,s5,a0 + 3bc0805a: 02040513 addi a0,s0,32 + 3bc0805e: 1539998b srriw s3,s3,19 + 3bc08062: 034989bb mulw s3,s3,s4 + 3bc08066: 01342623 sw s3,12(s0) + 3bc0806a: 01042983 lw s3,16(s0) + 3bc0806e: 9a9ff0ef jal ra,3bc07a16 + 3bc08072: 01442903 lw s2,20(s0) + 3bc08076: 24aa998b mulaw s3,s5,a0 + 3bc0807a: 02440513 addi a0,s0,36 + 3bc0807e: 1539998b srriw s3,s3,19 + 3bc08082: 034989bb mulw s3,s3,s4 + 3bc08086: 01342823 sw s3,16(s0) + 3bc0808a: 98dff0ef jal ra,3bc07a16 + 3bc0808e: 24aa990b mulaw s2,s5,a0 + 3bc08092: 541c lw a5,40(s0) + 3bc08094: 02042423 sw zero,40(s0) + 3bc08098: 40fb0b3b subw s6,s6,a5 + 3bc0809c: 7c0b3b0b extu s6,s6,31,0 + 3bc080a0: 94da add s1,s1,s6 + 3bc080a2: 1539190b srriw s2,s2,19 + 3bc080a6: 0349093b mulw s2,s2,s4 + 3bc080aa: 01242a23 sw s2,20(s0) + 3bc080ae: ff0d0913 addi s2,s10,-16 + 3bc080b2: 08996363 bltu s2,s1,3bc08138 + 3bc080b6: e3844c8b lwd s9,s8,(s0),1,3 + 3bc080ba: e5444a8b lwd s5,s4,(s0),2,3 + 3bc080be: 85ebdbb7 lui s7,0x85ebd + 3bc080c2: 9e378b37 lui s6,0x9e378 + 3bc080c6: 89a6 mv s3,s1 + 3bc080c8: a77b8b9b addiw s7,s7,-1417 + 3bc080cc: 9b1b0b1b addiw s6,s6,-1615 + 3bc080d0: 854e mv a0,s3 + 3bc080d2: 945ff0ef jal ra,3bc07a16 + 3bc080d6: 24ab9c8b mulaw s9,s7,a0 + 3bc080da: 00498513 addi a0,s3,4 + 3bc080de: 939ff0ef jal ra,3bc07a16 + 3bc080e2: 24ab9c0b mulaw s8,s7,a0 + 3bc080e6: 00898513 addi a0,s3,8 + 3bc080ea: 92dff0ef jal ra,3bc07a16 + 3bc080ee: 153c9c8b srriw s9,s9,19 + 3bc080f2: 24ab9a8b mulaw s5,s7,a0 + 3bc080f6: 00c98513 addi a0,s3,12 + 3bc080fa: 91dff0ef jal ra,3bc07a16 + 3bc080fe: 153c1c0b srriw s8,s8,19 + 3bc08102: 09c1 addi s3,s3,16 + 3bc08104: 24ab9a0b mulaw s4,s7,a0 + 3bc08108: 153a9a8b srriw s5,s5,19 + 3bc0810c: 153a1a0b srriw s4,s4,19 + 3bc08110: 036c8cbb mulw s9,s9,s6 + 3bc08114: 036c0c3b mulw s8,s8,s6 + 3bc08118: 036a8abb mulw s5,s5,s6 + 3bc0811c: 036a0a3b mulw s4,s4,s6 + 3bc08120: fb3978e3 bgeu s2,s3,3bc080d0 + 3bc08124: 40990933 sub s2,s2,s1 + 3bc08128: ff097913 andi s2,s2,-16 + 3bc0812c: 0941 addi s2,s2,16 + 3bc0812e: 94ca add s1,s1,s2 + 3bc08130: e3845c8b swd s9,s8,(s0),1,3 + 3bc08134: e5445a8b swd s5,s4,(s0),2,3 + 3bc08138: 4901 li s2,0 + 3bc0813a: eba4f9e3 bgeu s1,s10,3bc07fec + 3bc0813e: 409d0d33 sub s10,s10,s1 + 3bc08142: 866a mv a2,s10 + 3bc08144: 85a6 mv a1,s1 + 3bc08146: 01840513 addi a0,s0,24 + 3bc0814a: 923f80ef jal ra,3bc00a6c + 3bc0814e: 03a42423 sw s10,40(s0) + 3bc08152: bd69 j 3bc07fec + +000000003bc08154 : + 3bc08154: 415c lw a5,4(a0) + 3bc08156: 4918 lw a4,16(a0) + 3bc08158: cb8d beqz a5,3bc0818a + 3bc0815a: 451c lw a5,8(a0) + 3bc0815c: 4554 lw a3,12(a0) + 3bc0815e: 1547170b srriw a4,a4,20 + 3bc08162: 15f7978b srriw a5,a5,31 + 3bc08166: 1596968b srriw a3,a3,25 + 3bc0816a: 9fb5 addw a5,a5,a3 + 3bc0816c: 9fb9 addw a5,a5,a4 + 3bc0816e: 4958 lw a4,20(a0) + 3bc08170: 14e7170b srriw a4,a4,14 + 3bc08174: 85aa mv a1,a0 + 3bc08176: 9fb9 addw a5,a5,a4 + 3bc08178: 5ac5c70b lwia a4,(a1),12,1 + 3bc0817c: 02856603 lwu a2,40(a0) # 16566028 + 3bc08180: 4681 li a3,0 + 3bc08182: 00f7053b addw a0,a4,a5 + 3bc08186: 8a7ff06f j 3bc07a2c + 3bc0818a: 165667b7 lui a5,0x16566 + 3bc0818e: 7b17879b addiw a5,a5,1969 + 3bc08192: b7cd j 3bc08174 + +000000003bc08194 : + 3bc08194: 1141 addi sp,sp,-16 + 3bc08196: e022 sd s0,0(sp) + 3bc08198: 842a mv s0,a0 + 3bc0819a: 00003517 auipc a0,0x3 + 3bc0819e: 05e50513 addi a0,a0,94 # 3bc0b1f8 + 3bc081a2: e406 sd ra,8(sp) + 3bc081a4: 9b4f80ef jal ra,3bc00358 + 3bc081a8: 400c lw a1,0(s0) + 3bc081aa: 00003517 auipc a0,0x3 + 3bc081ae: 05e50513 addi a0,a0,94 # 3bc0b208 + 3bc081b2: 9a6f80ef jal ra,3bc00358 + 3bc081b6: 012000ef jal ra,3bc081c8 + 3bc081ba: 296000ef jal ra,3bc08450 + 3bc081be: 60a2 ld ra,8(sp) + 3bc081c0: 6402 ld s0,0(sp) + 3bc081c2: 4501 li a0,0 + 3bc081c4: 0141 addi sp,sp,16 + 3bc081c6: 8082 ret + +000000003bc081c8 : + 3bc081c8: 030007b7 lui a5,0x3000 + 3bc081cc: 43cc lw a1,4(a5) + 3bc081ce: 7139 addi sp,sp,-64 + 3bc081d0: 030507b7 lui a5,0x3050 + 3bc081d4: 79c5b58b extu a1,a1,30,28 + 3bc081d8: 00003517 auipc a0,0x3 + 3bc081dc: 04850513 addi a0,a0,72 # 3bc0b220 + 3bc081e0: f822 sd s0,48(sp) + 3bc081e2: f426 sd s1,40(sp) + 3bc081e4: f04a sd s2,32(sp) + 3bc081e6: ec4e sd s3,24(sp) + 3bc081e8: fc06 sd ra,56(sp) + 3bc081ea: 1087a983 lw s3,264(a5) # 3050108 <__BSS_SIZE__+0x304a4f8> + 3bc081ee: e42e sd a1,8(sp) + 3bc081f0: 968f80ef jal ra,3bc00358 + 3bc081f4: 65a2 ld a1,8(sp) + 3bc081f6: 00003717 auipc a4,0x3 + 3bc081fa: 10e70713 addi a4,a4,270 # 3bc0b304 + 3bc081fe: 0000b917 auipc s2,0xb + 3bc08202: 21090913 addi s2,s2,528 # 3bc1340e + 3bc08206: 44b7478b lrw a5,a4,a1,2 + 3bc0820a: 0000b497 auipc s1,0xb + 3bc0820e: 20248493 addi s1,s1,514 # 3bc1340c + 3bc08212: 0000b417 auipc s0,0xb + 3bc08216: 1fd40413 addi s0,s0,509 # 3bc1340f + 3bc0821a: 97ba add a5,a5,a4 + 3bc0821c: 8782 jr a5 + 3bc0821e: 478d li a5,3 + 3bc08220: 4709 li a4,2 + 3bc08222: 00f90023 sb a5,0(s2) + 3bc08226: 00e48023 sb a4,0(s1) + 3bc0822a: 00f40023 sb a5,0(s0) + 3bc0822e: a825 j 3bc08266 + 3bc08230: 4791 li a5,4 + 3bc08232: 00f90023 sb a5,0(s2) + 3bc08236: 4785 li a5,1 + 3bc08238: 00f48023 sb a5,0(s1) + 3bc0823c: 478d li a5,3 + 3bc0823e: b7f5 j 3bc0822a + 3bc08240: 00003517 auipc a0,0x3 + 3bc08244: ff050513 addi a0,a0,-16 # 3bc0b230 + 3bc08248: 910f80ef jal ra,3bc00358 + 3bc0824c: 2981 sext.w s3,s3 + 3bc0824e: 6559b78b extu a5,s3,25,21 + 3bc08252: 00f90023 sb a5,0(s2) + 3bc08256: 71a9b78b extu a5,s3,28,26 + 3bc0825a: 01d9d99b srliw s3,s3,0x1d + 3bc0825e: 00f48023 sb a5,0(s1) + 3bc08262: 01340023 sb s3,0(s0) + 3bc08266: 00044583 lbu a1,0(s0) + 3bc0826a: 00094683 lbu a3,0(s2) + 3bc0826e: 0004c603 lbu a2,0(s1) + 3bc08272: 00003517 auipc a0,0x3 + 3bc08276: fe650513 addi a0,a0,-26 # 3bc0b258 + 3bc0827a: 8def80ef jal ra,3bc00358 + 3bc0827e: 00094583 lbu a1,0(s2) + 3bc08282: 4725 li a4,9 + 3bc08284: fff5879b addiw a5,a1,-1 + 3bc08288: 0ff7f793 andi a5,a5,255 + 3bc0828c: 08f76963 bltu a4,a5,3bc0831e + 3bc08290: 00003717 auipc a4,0x3 + 3bc08294: 09470713 addi a4,a4,148 # 3bc0b324 + 3bc08298: 44f7478b lrw a5,a4,a5,2 + 3bc0829c: 0000b917 auipc s2,0xb + 3bc082a0: 17190913 addi s2,s2,369 # 3bc1340d + 3bc082a4: 97ba add a5,a5,a4 + 3bc082a6: 8782 jr a5 + 3bc082a8: 478d li a5,3 + 3bc082aa: 00f90023 sb a5,0(s2) + 3bc082ae: 4789 li a5,2 + 3bc082b0: 00f48023 sb a5,0(s1) + 3bc082b4: 4785 li a5,1 + 3bc082b6: bf95 j 3bc0822a + 3bc082b8: 4791 li a5,4 + 3bc082ba: 00f90023 sb a5,0(s2) + 3bc082be: 4785 li a5,1 + 3bc082c0: 00f48023 sb a5,0(s1) + 3bc082c4: b79d j 3bc0822a + 3bc082c6: 00003517 auipc a0,0x3 + 3bc082ca: f7250513 addi a0,a0,-142 # 3bc0b238 + 3bc082ce: 88af80ef jal ra,3bc00358 + 3bc082d2: bf51 j 3bc08266 + 3bc082d4: 00003517 auipc a0,0x3 + 3bc082d8: f9450513 addi a0,a0,-108 # 3bc0b268 + 3bc082dc: 87cf80ef jal ra,3bc00358 + 3bc082e0: 4785 li a5,1 + 3bc082e2: 00f90023 sb a5,0(s2) + 3bc082e6: 0004c583 lbu a1,0(s1) + 3bc082ea: 478d li a5,3 + 3bc082ec: 0cf58963 beq a1,a5,3bc083be + 3bc082f0: 04b7e263 bltu a5,a1,3bc08334 + 3bc082f4: 4485 li s1,1 + 3bc082f6: 04958a63 beq a1,s1,3bc0834a + 3bc082fa: 4789 li a5,2 + 3bc082fc: 0af58463 beq a1,a5,3bc083a4 + 3bc08300: 00003517 auipc a0,0x3 + 3bc08304: fb050513 addi a0,a0,-80 # 3bc0b2b0 + 3bc08308: 850f80ef jal ra,3bc00358 + 3bc0830c: a82d j 3bc08346 + 3bc0830e: 00003517 auipc a0,0x3 + 3bc08312: f6250513 addi a0,a0,-158 # 3bc0b270 + 3bc08316: 842f80ef jal ra,3bc00358 + 3bc0831a: 4789 li a5,2 + 3bc0831c: b7d9 j 3bc082e2 + 3bc0831e: 00003517 auipc a0,0x3 + 3bc08322: f5a50513 addi a0,a0,-166 # 3bc0b278 + 3bc08326: 832f80ef jal ra,3bc00358 + 3bc0832a: 0000b797 auipc a5,0xb + 3bc0832e: 0e0781a3 sb zero,227(a5) # 3bc1340d + 3bc08332: bf55 j 3bc082e6 + 3bc08334: 4791 li a5,4 + 3bc08336: 00003517 auipc a0,0x3 + 3bc0833a: f7250513 addi a0,a0,-142 # 3bc0b2a8 + 3bc0833e: fcf591e3 bne a1,a5,3bc08300 + 3bc08342: 816f80ef jal ra,3bc00358 + 3bc08346: 4781 li a5,0 + 3bc08348: a839 j 3bc08366 + 3bc0834a: 00003517 auipc a0,0x3 + 3bc0834e: f4650513 addi a0,a0,-186 # 3bc0b290 + 3bc08352: e42e sd a1,8(sp) + 3bc08354: 804f80ef jal ra,3bc00358 + 3bc08358: 00044783 lbu a5,0(s0) + 3bc0835c: 65a2 ld a1,8(sp) + 3bc0835e: 06b78563 beq a5,a1,3bc083c8 + 3bc08362: 67e1 lui a5,0x18 + 3bc08364: 07ad addi a5,a5,11 + 3bc08366: 03000737 lui a4,0x3000 + 3bc0836a: 08f72623 sw a5,140(a4) # 300008c <__BSS_SIZE__+0x2ffa47c> + 3bc0836e: 00044583 lbu a1,0(s0) + 3bc08372: 4789 li a5,2 + 3bc08374: 06f58c63 beq a1,a5,3bc083ec + 3bc08378: 478d li a5,3 + 3bc0837a: 04f58d63 beq a1,a5,3bc083d4 + 3bc0837e: 4785 li a5,1 + 3bc08380: 00003517 auipc a0,0x3 + 3bc08384: f4850513 addi a0,a0,-184 # 3bc0b2c8 + 3bc08388: 04f58a63 beq a1,a5,3bc083dc + 3bc0838c: 7442 ld s0,48(sp) + 3bc0838e: 70e2 ld ra,56(sp) + 3bc08390: 74a2 ld s1,40(sp) + 3bc08392: 7902 ld s2,32(sp) + 3bc08394: 69e2 ld s3,24(sp) + 3bc08396: 00003517 auipc a0,0x3 + 3bc0839a: f5a50513 addi a0,a0,-166 # 3bc0b2f0 + 3bc0839e: 6121 addi sp,sp,64 + 3bc083a0: fb9f706f j 3bc00358 + 3bc083a4: 00003517 auipc a0,0x3 + 3bc083a8: ef450513 addi a0,a0,-268 # 3bc0b298 + 3bc083ac: fadf70ef jal ra,3bc00358 + 3bc083b0: 00044783 lbu a5,0(s0) + 3bc083b4: 00978d63 beq a5,s1,3bc083ce + 3bc083b8: 67e1 lui a5,0x18 + 3bc083ba: 07ed addi a5,a5,27 + 3bc083bc: b76d j 3bc08366 + 3bc083be: 00003517 auipc a0,0x3 + 3bc083c2: ee250513 addi a0,a0,-286 # 3bc0b2a0 + 3bc083c6: bfb5 j 3bc08342 + 3bc083c8: 67e1 lui a5,0x18 + 3bc083ca: 07b1 addi a5,a5,12 + 3bc083cc: bf69 j 3bc08366 + 3bc083ce: 67e1 lui a5,0x18 + 3bc083d0: 07f1 addi a5,a5,28 + 3bc083d2: bf51 j 3bc08366 + 3bc083d4: 00003517 auipc a0,0x3 + 3bc083d8: f0450513 addi a0,a0,-252 # 3bc0b2d8 + 3bc083dc: 7442 ld s0,48(sp) + 3bc083de: 70e2 ld ra,56(sp) + 3bc083e0: 74a2 ld s1,40(sp) + 3bc083e2: 7902 ld s2,32(sp) + 3bc083e4: 69e2 ld s3,24(sp) + 3bc083e6: 6121 addi sp,sp,64 + 3bc083e8: f71f706f j 3bc00358 + 3bc083ec: 00003517 auipc a0,0x3 + 3bc083f0: efc50513 addi a0,a0,-260 # 3bc0b2e8 + 3bc083f4: b7e5 j 3bc083dc + +000000003bc083f6 : + 3bc083f6: 0000b517 auipc a0,0xb + 3bc083fa: 01854503 lbu a0,24(a0) # 3bc1340e + 3bc083fe: 8082 ret + +000000003bc08400 : + 3bc08400: 00030737 lui a4,0x30 + 3bc08404: 080087b7 lui a5,0x8008 + 3bc08408: 0705 addi a4,a4,1 + 3bc0840a: c398 sw a4,0(a5) + 3bc0840c: 08078693 addi a3,a5,128 # 8008080 + 3bc08410: c298 sw a4,0(a3) + 3bc08412: 10078693 addi a3,a5,256 + 3bc08416: c298 sw a4,0(a3) + 3bc08418: 18078693 addi a3,a5,384 + 3bc0841c: c298 sw a4,0(a3) + 3bc0841e: 20078693 addi a3,a5,512 + 3bc08422: c298 sw a4,0(a3) + 3bc08424: 28078693 addi a3,a5,640 + 3bc08428: c298 sw a4,0(a3) + 3bc0842a: 30078693 addi a3,a5,768 + 3bc0842e: c298 sw a4,0(a3) + 3bc08430: 38078693 addi a3,a5,896 + 3bc08434: c298 sw a4,0(a3) + 3bc08436: 40078693 addi a3,a5,1024 + 3bc0843a: c298 sw a4,0(a3) + 3bc0843c: 48078693 addi a3,a5,1152 + 3bc08440: c298 sw a4,0(a3) + 3bc08442: 50078693 addi a3,a5,1280 + 3bc08446: c298 sw a4,0(a3) + 3bc08448: 58078793 addi a5,a5,1408 + 3bc0844c: c398 sw a4,0(a5) + 3bc0844e: 8082 ret + +000000003bc08450 : + 3bc08450: 7179 addi sp,sp,-48 + 3bc08452: f406 sd ra,40(sp) + 3bc08454: 789000ef jal ra,3bc093dc + 3bc08458: 344010ef jal ra,3bc0979c + 3bc0845c: 0800a7b7 lui a5,0x800a + 3bc08460: 0207a023 sw zero,32(a5) # 800a020 + 3bc08464: 007797b7 lui a5,0x779 + 3bc08468: 03000737 lui a4,0x3000 + 3bc0846c: 8aa78793 addi a5,a5,-1878 # 7788aa <__BSS_SIZE__+0x772c9a> + 3bc08470: 1cf72c23 sw a5,472(a4) # 30001d8 <__BSS_SIZE__+0x2ffa5c8> + 3bc08474: 6789 lui a5,0x2 + 3bc08476: 29978793 addi a5,a5,665 # 2299 <__BSS_SIZE__-0x3977> + 3bc0847a: 1cf72e23 sw a5,476(a4) + 3bc0847e: 794010ef jal ra,3bc09c12 + 3bc08482: 1cb000ef jal ra,3bc08e4c + 3bc08486: 7db000ef jal ra,3bc09460 + 3bc0848a: 717000ef jal ra,3bc093a0 + 3bc0848e: 1df000ef jal ra,3bc08e6c + 3bc08492: 7c8000ef jal ra,3bc08c5a + 3bc08496: 0c3000ef jal ra,3bc08d58 + 3bc0849a: 101000ef jal ra,3bc08d9a + 3bc0849e: 049000ef jal ra,3bc08ce6 + 3bc084a2: 07f000ef jal ra,3bc08d20 + 3bc084a6: 121000ef jal ra,3bc08dc6 + 3bc084aa: 1ca000ef jal ra,3bc08674 + 3bc084ae: 0810 addi a2,sp,16 + 3bc084b0: 082c addi a1,sp,24 + 3bc084b2: 0068 addi a0,sp,12 + 3bc084b4: 4ae000ef jal ra,3bc08962 + 3bc084b8: 47b2 lw a5,12(sp) + 3bc084ba: e385 bnez a5,3bc084da + 3bc084bc: 00003517 auipc a0,0x3 + 3bc084c0: e9450513 addi a0,a0,-364 # 3bc0b350 + 3bc084c4: e95f70ef jal ra,3bc00358 + 3bc084c8: fac1468b ldd a3,a2,(sp),1,4 + 3bc084cc: 45b2 lw a1,12(sp) + 3bc084ce: 00003517 auipc a0,0x3 + 3bc084d2: e9a50513 addi a0,a0,-358 # 3bc0b368 + 3bc084d6: e83f70ef jal ra,3bc00358 + 3bc084da: 4ee010ef jal ra,3bc099c8 + 3bc084de: 16d000ef jal ra,3bc08e4a + 3bc084e2: 192000ef jal ra,3bc08674 + 3bc084e6: 0810 addi a2,sp,16 + 3bc084e8: 082c addi a1,sp,24 + 3bc084ea: 0068 addi a0,sp,12 + 3bc084ec: 476000ef jal ra,3bc08962 + 3bc084f0: 47b2 lw a5,12(sp) + 3bc084f2: e385 bnez a5,3bc08512 + 3bc084f4: 00003517 auipc a0,0x3 + 3bc084f8: e5c50513 addi a0,a0,-420 # 3bc0b350 + 3bc084fc: e5df70ef jal ra,3bc00358 + 3bc08500: fac1468b ldd a3,a2,(sp),1,4 + 3bc08504: 45b2 lw a1,12(sp) + 3bc08506: 00003517 auipc a0,0x3 + 3bc0850a: e6250513 addi a0,a0,-414 # 3bc0b368 + 3bc0850e: e4bf70ef jal ra,3bc00358 + 3bc08512: 2d7000ef jal ra,3bc08fe8 + 3bc08516: 15e000ef jal ra,3bc08674 + 3bc0851a: 0810 addi a2,sp,16 + 3bc0851c: 082c addi a1,sp,24 + 3bc0851e: 0068 addi a0,sp,12 + 3bc08520: 442000ef jal ra,3bc08962 + 3bc08524: 47b2 lw a5,12(sp) + 3bc08526: e385 bnez a5,3bc08546 + 3bc08528: 00003517 auipc a0,0x3 + 3bc0852c: e2850513 addi a0,a0,-472 # 3bc0b350 + 3bc08530: e29f70ef jal ra,3bc00358 + 3bc08534: fac1468b ldd a3,a2,(sp),1,4 + 3bc08538: 45b2 lw a1,12(sp) + 3bc0853a: 00003517 auipc a0,0x3 + 3bc0853e: e2e50513 addi a0,a0,-466 # 3bc0b368 + 3bc08542: e17f70ef jal ra,3bc00358 + 3bc08546: 4589 li a1,2 + 3bc08548: 4505 li a0,1 + 3bc0854a: 4d5000ef jal ra,3bc0921e + 3bc0854e: 4585 li a1,1 + 3bc08550: 4505 li a0,1 + 3bc08552: 4cd000ef jal ra,3bc0921e + 3bc08556: 4581 li a1,0 + 3bc08558: 4505 li a0,1 + 3bc0855a: 4c5000ef jal ra,3bc0921e + 3bc0855e: 116000ef jal ra,3bc08674 + 3bc08562: 0810 addi a2,sp,16 + 3bc08564: 082c addi a1,sp,24 + 3bc08566: 0068 addi a0,sp,12 + 3bc08568: 3fa000ef jal ra,3bc08962 + 3bc0856c: 08000737 lui a4,0x8000 + 3bc08570: 08c72783 lw a5,140(a4) # 800008c + 3bc08574: 4505 li a0,1 + 3bc08576: 2781 sext.w a5,a5 + 3bc08578: f0f7f793 andi a5,a5,-241 + 3bc0857c: 0107e793 ori a5,a5,16 + 3bc08580: 0000b697 auipc a3,0xb + 3bc08584: e6f6a823 sw a5,-400(a3) # 3bc133f0 + 3bc08588: 08f72623 sw a5,140(a4) + 3bc0858c: 323000ef jal ra,3bc090ae + 3bc08590: 0e4000ef jal ra,3bc08674 + 3bc08594: 0810 addi a2,sp,16 + 3bc08596: 082c addi a1,sp,24 + 3bc08598: 0068 addi a0,sp,12 + 3bc0859a: 3c8000ef jal ra,3bc08962 + 3bc0859e: 3fc010ef jal ra,3bc0999a + 3bc085a2: 00b10513 addi a0,sp,11 + 3bc085a6: 615000ef jal ra,3bc093ba + 3bc085aa: 00b14503 lbu a0,11(sp) + 3bc085ae: 448010ef jal ra,3bc099f6 + 3bc085b2: 00b14503 lbu a0,11(sp) + 3bc085b6: 1e4010ef jal ra,3bc0979a + 3bc085ba: 1bf000ef jal ra,3bc08f78 + 3bc085be: 0b6000ef jal ra,3bc08674 + 3bc085c2: 0810 addi a2,sp,16 + 3bc085c4: 082c addi a1,sp,24 + 3bc085c6: 0068 addi a0,sp,12 + 3bc085c8: 39a000ef jal ra,3bc08962 + 3bc085cc: 47b2 lw a5,12(sp) + 3bc085ce: eb81 bnez a5,3bc085de + 3bc085d0: 00003517 auipc a0,0x3 + 3bc085d4: dd850513 addi a0,a0,-552 # 3bc0b3a8 + 3bc085d8: d81f70ef jal ra,3bc00358 + 3bc085dc: a001 j 3bc085dc + 3bc085de: 0e4000ef jal ra,3bc086c2 + 3bc085e2: 0810 addi a2,sp,16 + 3bc085e4: 082c addi a1,sp,24 + 3bc085e6: 0068 addi a0,sp,12 + 3bc085e8: 37a000ef jal ra,3bc08962 + 3bc085ec: 47b2 lw a5,12(sp) + 3bc085ee: eb81 bnez a5,3bc085fe + 3bc085f0: 00003517 auipc a0,0x3 + 3bc085f4: db850513 addi a0,a0,-584 # 3bc0b3a8 + 3bc085f8: d61f70ef jal ra,3bc00358 + 3bc085fc: a001 j 3bc085fc + 3bc085fe: 00003517 auipc a0,0x3 + 3bc08602: dc250513 addi a0,a0,-574 # 3bc0b3c0 + 3bc08606: d53f70ef jal ra,3bc00358 + 3bc0860a: 080087b7 lui a5,0x8008 + 3bc0860e: 4595 li a1,5 + 3bc08610: cbac sw a1,80(a5) + 3bc08612: 08078613 addi a2,a5,128 # 8008080 + 3bc08616: 01000737 lui a4,0x1000 + 3bc0861a: ca2c sw a1,80(a2) + 3bc0861c: 10070713 addi a4,a4,256 # 1000100 <__BSS_SIZE__+0xffa4f0> + 3bc08620: c398 sw a4,0(a5) + 3bc08622: 43d4 lw a3,4(a5) + 3bc08624: 2681 sext.w a3,a3 + 3bc08626: c006f693 andi a3,a3,-1024 + 3bc0862a: c3d4 sw a3,4(a5) + 3bc0862c: c218 sw a4,0(a2) + 3bc0862e: 4254 lw a3,4(a2) + 3bc08630: 2681 sext.w a3,a3 + 3bc08632: c006f693 andi a3,a3,-1024 + 3bc08636: c254 sw a3,4(a2) + 3bc08638: 40078613 addi a2,a5,1024 + 3bc0863c: ca2c sw a1,80(a2) + 3bc0863e: 48078793 addi a5,a5,1152 + 3bc08642: cbac sw a1,80(a5) + 3bc08644: c218 sw a4,0(a2) + 3bc08646: 4254 lw a3,4(a2) + 3bc08648: 2681 sext.w a3,a3 + 3bc0864a: c006f693 andi a3,a3,-1024 + 3bc0864e: c254 sw a3,4(a2) + 3bc08650: c398 sw a4,0(a5) + 3bc08652: 43d8 lw a4,4(a5) + 3bc08654: 2701 sext.w a4,a4 + 3bc08656: c0077713 andi a4,a4,-1024 + 3bc0865a: c3d8 sw a4,4(a5) + 3bc0865c: 0800a737 lui a4,0x800a + 3bc08660: 4b5c lw a5,20(a4) + 3bc08662: 2781 sext.w a5,a5 + 3bc08664: 1007e793 ori a5,a5,256 + 3bc08668: cb5c sw a5,20(a4) + 3bc0866a: d97ff0ef jal ra,3bc08400 + 3bc0866e: 70a2 ld ra,40(sp) + 3bc08670: 6145 addi sp,sp,48 + 3bc08672: 8082 ret + +000000003bc08674 : + 3bc08674: 00060737 lui a4,0x60 + 3bc08678: 080107b7 lui a5,0x8010 + 3bc0867c: 0719 addi a4,a4,6 + 3bc0867e: c398 sw a4,0(a5) + 3bc08680: 80200737 lui a4,0x80200 + 3bc08684: 1101 addi sp,sp,-32 + 3bc08686: a0070713 addi a4,a4,-1536 # ffffffff801ffa00 <__BL2_END__+0xffffffff445ec5f0> + 3bc0868a: c63a sw a4,12(sp) + 3bc0868c: 40200737 lui a4,0x40200 + 3bc08690: e802 sd zero,16(sp) + 3bc08692: ec02 sd zero,24(sp) + 3bc08694: a0070713 addi a4,a4,-1536 # 401ffa00 <__BL2_END__+0x45ec5f0> + 3bc08698: c3b8 sw a4,64(a5) + 3bc0869a: 4732 lw a4,12(sp) + 3bc0869c: c3f8 sw a4,68(a5) + 3bc0869e: 4742 lw a4,16(sp) + 3bc086a0: c7b8 sw a4,72(a5) + 3bc086a2: 4752 lw a4,20(sp) + 3bc086a4: c7f8 sw a4,76(a5) + 3bc086a6: 4762 lw a4,24(sp) + 3bc086a8: cbb8 sw a4,80(a5) + 3bc086aa: 4772 lw a4,28(sp) + 3bc086ac: cbf8 sw a4,84(a5) + 3bc086ae: 00100737 lui a4,0x100 + 3bc086b2: 0007a823 sw zero,16(a5) # 8010010 + 3bc086b6: 177d addi a4,a4,-1 + 3bc086b8: cbd8 sw a4,20(a5) + 3bc086ba: 4711 li a4,4 + 3bc086bc: cf98 sw a4,24(a5) + 3bc086be: 6105 addi sp,sp,32 + 3bc086c0: 8082 ret + +000000003bc086c2 : + 3bc086c2: 000c0737 lui a4,0xc0 + 3bc086c6: 080107b7 lui a5,0x8010 + 3bc086ca: 0731 addi a4,a4,12 + 3bc086cc: c398 sw a4,0(a5) + 3bc086ce: 6705 lui a4,0x1 + 3bc086d0: f0570713 addi a4,a4,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc086d4: d3d8 sw a4,36(a5) + 3bc086d6: 80103737 lui a4,0x80103 + 3bc086da: 1101 addi sp,sp,-32 + 3bc086dc: c0f70713 addi a4,a4,-1009 # ffffffff80102c0f <__BL2_END__+0xffffffff444ef7ff> + 3bc086e0: c63a sw a4,12(sp) + 3bc086e2: c0000737 lui a4,0xc0000 + 3bc086e6: 0705 addi a4,a4,1 + 3bc086e8: 1702 slli a4,a4,0x20 + 3bc086ea: e83a sd a4,16(sp) + 3bc086ec: 40103737 lui a4,0x40103 + 3bc086f0: ec02 sd zero,24(sp) + 3bc086f2: c0f70713 addi a4,a4,-1009 # 40102c0f <__BL2_END__+0x44ef7ff> + 3bc086f6: c3b8 sw a4,64(a5) + 3bc086f8: 4732 lw a4,12(sp) + 3bc086fa: c3f8 sw a4,68(a5) + 3bc086fc: 4742 lw a4,16(sp) + 3bc086fe: c7b8 sw a4,72(a5) + 3bc08700: 4752 lw a4,20(sp) + 3bc08702: c7f8 sw a4,76(a5) + 3bc08704: 4762 lw a4,24(sp) + 3bc08706: cbb8 sw a4,80(a5) + 3bc08708: 4772 lw a4,28(sp) + 3bc0870a: cbf8 sw a4,84(a5) + 3bc0870c: 00100737 lui a4,0x100 + 3bc08710: 0007a823 sw zero,16(a5) # 8010010 + 3bc08714: 177d addi a4,a4,-1 + 3bc08716: cbd8 sw a4,20(a5) + 3bc08718: 02000713 li a4,32 + 3bc0871c: cf98 sw a4,24(a5) + 3bc0871e: 6105 addi sp,sp,32 + 3bc08720: 8082 ret + +000000003bc08722 : + 3bc08722: 00060737 lui a4,0x60 + 3bc08726: 080107b7 lui a5,0x8010 + 3bc0872a: 0719 addi a4,a4,6 + 3bc0872c: c398 sw a4,0(a5) + 3bc0872e: 1101 addi sp,sp,-32 + 3bc08730: 80004737 lui a4,0x80004 + 3bc08734: e802 sd zero,16(sp) + 3bc08736: ec02 sd zero,24(sp) + 3bc08738: c602 sw zero,12(sp) + 3bc0873a: a0070713 addi a4,a4,-1536 # ffffffff80003a00 <__BL2_END__+0xffffffff443f05f0> + 3bc0873e: c3b8 sw a4,64(a5) + 3bc08740: 4732 lw a4,12(sp) + 3bc08742: c3f8 sw a4,68(a5) + 3bc08744: 4742 lw a4,16(sp) + 3bc08746: c7b8 sw a4,72(a5) + 3bc08748: 4752 lw a4,20(sp) + 3bc0874a: c7f8 sw a4,76(a5) + 3bc0874c: 4762 lw a4,24(sp) + 3bc0874e: cbb8 sw a4,80(a5) + 3bc08750: 4772 lw a4,28(sp) + 3bc08752: cbf8 sw a4,84(a5) + 3bc08754: 00100737 lui a4,0x100 + 3bc08758: 0007a823 sw zero,16(a5) # 8010010 + 3bc0875c: 177d addi a4,a4,-1 + 3bc0875e: cbd8 sw a4,20(a5) + 3bc08760: 4711 li a4,4 + 3bc08762: cf98 sw a4,24(a5) + 3bc08764: 6105 addi sp,sp,32 + 3bc08766: 8082 ret + +000000003bc08768 : + 3bc08768: 000607b7 lui a5,0x60 + 3bc0876c: 08010737 lui a4,0x8010 + 3bc08770: 0799 addi a5,a5,6 + 3bc08772: c31c sw a5,0(a4) + 3bc08774: 1101 addi sp,sp,-32 + 3bc08776: e519 bnez a0,3bc08784 + 3bc08778: 200017b7 lui a5,0x20001 + 3bc0877c: 078a slli a5,a5,0x2 + 3bc0877e: a0078793 addi a5,a5,-1536 # 20000a00 + 3bc08782: a0ad j 3bc087ec + 3bc08784: 4785 li a5,1 + 3bc08786: 04f51c63 bne a0,a5,3bc087de + 3bc0878a: 6785 lui a5,0x1 + 3bc0878c: f0578793 addi a5,a5,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc08790: d35c sw a5,36(a4) + 3bc08792: 00003797 auipc a5,0x3 + 3bc08796: c467b783 ld a5,-954(a5) # 3bc0b3d8 + 3bc0879a: e43e sd a5,8(sp) + 3bc0879c: 00003797 auipc a5,0x3 + 3bc087a0: c447b783 ld a5,-956(a5) # 3bc0b3e0 + 3bc087a4: e83e sd a5,16(sp) + 3bc087a6: 478d li a5,3 + 3bc087a8: 07fa slli a5,a5,0x1e + 3bc087aa: 0785 addi a5,a5,1 + 3bc087ac: ec3e sd a5,24(sp) + 3bc087ae: 4722 lw a4,8(sp) + 3bc087b0: 080107b7 lui a5,0x8010 + 3bc087b4: c3b8 sw a4,64(a5) + 3bc087b6: 4732 lw a4,12(sp) + 3bc087b8: c3f8 sw a4,68(a5) + 3bc087ba: 4742 lw a4,16(sp) + 3bc087bc: c7b8 sw a4,72(a5) + 3bc087be: 4752 lw a4,20(sp) + 3bc087c0: c7f8 sw a4,76(a5) + 3bc087c2: 4762 lw a4,24(sp) + 3bc087c4: cbb8 sw a4,80(a5) + 3bc087c6: 4772 lw a4,28(sp) + 3bc087c8: cbf8 sw a4,84(a5) + 3bc087ca: 00100737 lui a4,0x100 + 3bc087ce: 0007a823 sw zero,16(a5) # 8010010 + 3bc087d2: 177d addi a4,a4,-1 + 3bc087d4: cbd8 sw a4,20(a5) + 3bc087d6: 4711 li a4,4 + 3bc087d8: cf98 sw a4,24(a5) + 3bc087da: 6105 addi sp,sp,32 + 3bc087dc: 8082 ret + 3bc087de: 4789 li a5,2 + 3bc087e0: 00f51a63 bne a0,a5,3bc087f4 + 3bc087e4: 00003797 auipc a5,0x3 + 3bc087e8: c047b783 ld a5,-1020(a5) # 3bc0b3e8 + 3bc087ec: e43e sd a5,8(sp) + 3bc087ee: e802 sd zero,16(sp) + 3bc087f0: ec02 sd zero,24(sp) + 3bc087f2: bf75 j 3bc087ae + 3bc087f4: 47c9 li a5,18 + 3bc087f6: 02f51563 bne a0,a5,3bc08820 + 3bc087fa: 080006b7 lui a3,0x8000 + 3bc087fe: 0846a783 lw a5,132(a3) # 8000084 + 3bc08802: 6709 lui a4,0x2 + 3bc08804: f0070713 addi a4,a4,-256 # 1f00 <__BSS_SIZE__-0x3d10> + 3bc08808: 2781 sext.w a5,a5 + 3bc0880a: 9b81 andi a5,a5,-32 + 3bc0880c: 01d7e793 ori a5,a5,29 + 3bc08810: 8fd9 or a5,a5,a4 + 3bc08812: 0000b717 auipc a4,0xb + 3bc08816: bcf72f23 sw a5,-1058(a4) # 3bc133f0 + 3bc0881a: 08f6a223 sw a5,132(a3) + 3bc0881e: b7d9 j 3bc087e4 + 3bc08820: 47c1 li a5,16 + 3bc08822: f8f516e3 bne a0,a5,3bc087ae + 3bc08826: 08000637 lui a2,0x8000 + 3bc0882a: 08462783 lw a5,132(a2) # 8000084 + 3bc0882e: 6689 lui a3,0x2 + 3bc08830: f0068693 addi a3,a3,-256 # 1f00 <__BSS_SIZE__-0x3d10> + 3bc08834: 2781 sext.w a5,a5 + 3bc08836: 9b81 andi a5,a5,-32 + 3bc08838: 0017e793 ori a5,a5,1 + 3bc0883c: 3007c713 xori a4,a5,768 + 3bc08840: 8f75 and a4,a4,a3 + 3bc08842: 8fb9 xor a5,a5,a4 + 3bc08844: 0000b717 auipc a4,0xb + 3bc08848: baf72623 sw a5,-1108(a4) # 3bc133f0 + 3bc0884c: 08f62223 sw a5,132(a2) + 3bc08850: b725 j 3bc08778 + +000000003bc08852 : + 3bc08852: 000607b7 lui a5,0x60 + 3bc08856: 08010737 lui a4,0x8010 + 3bc0885a: 0799 addi a5,a5,6 + 3bc0885c: c31c sw a5,0(a4) + 3bc0885e: 1101 addi sp,sp,-32 + 3bc08860: e909 bnez a0,3bc08872 + 3bc08862: 00003797 auipc a5,0x3 + 3bc08866: b8e7b783 ld a5,-1138(a5) # 3bc0b3f0 + 3bc0886a: e43e sd a5,8(sp) + 3bc0886c: e802 sd zero,16(sp) + 3bc0886e: ec02 sd zero,24(sp) + 3bc08870: a035 j 3bc0889c + 3bc08872: 4785 li a5,1 + 3bc08874: 04f51c63 bne a0,a5,3bc088cc + 3bc08878: 6785 lui a5,0x1 + 3bc0887a: f0578793 addi a5,a5,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc0887e: d35c sw a5,36(a4) + 3bc08880: 00003797 auipc a5,0x3 + 3bc08884: b587b783 ld a5,-1192(a5) # 3bc0b3d8 + 3bc08888: e43e sd a5,8(sp) + 3bc0888a: 00003797 auipc a5,0x3 + 3bc0888e: b567b783 ld a5,-1194(a5) # 3bc0b3e0 + 3bc08892: e83e sd a5,16(sp) + 3bc08894: 478d li a5,3 + 3bc08896: 07fa slli a5,a5,0x1e + 3bc08898: 0785 addi a5,a5,1 + 3bc0889a: ec3e sd a5,24(sp) + 3bc0889c: 4722 lw a4,8(sp) + 3bc0889e: 080107b7 lui a5,0x8010 + 3bc088a2: c3b8 sw a4,64(a5) + 3bc088a4: 4732 lw a4,12(sp) + 3bc088a6: c3f8 sw a4,68(a5) + 3bc088a8: 4742 lw a4,16(sp) + 3bc088aa: c7b8 sw a4,72(a5) + 3bc088ac: 4752 lw a4,20(sp) + 3bc088ae: c7f8 sw a4,76(a5) + 3bc088b0: 4762 lw a4,24(sp) + 3bc088b2: cbb8 sw a4,80(a5) + 3bc088b4: 4772 lw a4,28(sp) + 3bc088b6: cbf8 sw a4,84(a5) + 3bc088b8: 00100737 lui a4,0x100 + 3bc088bc: 0007a823 sw zero,16(a5) # 8010010 + 3bc088c0: 177d addi a4,a4,-1 + 3bc088c2: cbd8 sw a4,20(a5) + 3bc088c4: 4711 li a4,4 + 3bc088c6: cf98 sw a4,24(a5) + 3bc088c8: 6105 addi sp,sp,32 + 3bc088ca: 8082 ret + 3bc088cc: 47c5 li a5,17 + 3bc088ce: 00003717 auipc a4,0x3 + 3bc088d2: b2270713 addi a4,a4,-1246 # 3bc0b3f0 + 3bc088d6: 00f51f63 bne a0,a5,3bc088f4 + 3bc088da: 67c1 lui a5,0x10 + 3bc088dc: 30178793 addi a5,a5,769 # 10301 <__BSS_SIZE__+0xa6f1> + 3bc088e0: 0000b697 auipc a3,0xb + 3bc088e4: b0f6a823 sw a5,-1264(a3) # 3bc133f0 + 3bc088e8: 080006b7 lui a3,0x8000 + 3bc088ec: 18f6a823 sw a5,400(a3) # 8000190 + 3bc088f0: 631c ld a5,0(a4) + 3bc088f2: bfa5 j 3bc0886a + 3bc088f4: 47c9 li a5,18 + 3bc088f6: f6f516e3 bne a0,a5,3bc08862 + 3bc088fa: 67c9 lui a5,0x12 + 3bc088fc: f1d78793 addi a5,a5,-227 # 11f1d <__BSS_SIZE__+0xc30d> + 3bc08900: b7c5 j 3bc088e0 + +000000003bc08902 : + 3bc08902: 00060737 lui a4,0x60 + 3bc08906: 080107b7 lui a5,0x8010 + 3bc0890a: 0719 addi a4,a4,6 + 3bc0890c: c398 sw a4,0(a5) + 3bc0890e: 6705 lui a4,0x1 + 3bc08910: f0570713 addi a4,a4,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc08914: d3d8 sw a4,36(a5) + 3bc08916: 40103737 lui a4,0x40103 + 3bc0891a: 1101 addi sp,sp,-32 + 3bc0891c: e0070713 addi a4,a4,-512 # 40102e00 <__BL2_END__+0x44ef9f0> + 3bc08920: c63a sw a4,12(sp) + 3bc08922: 00401737 lui a4,0x401 + 3bc08926: 81770713 addi a4,a4,-2025 # 400817 <__BSS_SIZE__+0x3fac07> + 3bc0892a: 0726 slli a4,a4,0x9 + 3bc0892c: e83a sd a4,16(sp) + 3bc0892e: 40102737 lui a4,0x40102 + 3bc08932: ec02 sd zero,24(sp) + 3bc08934: 60070713 addi a4,a4,1536 # 40102600 <__BL2_END__+0x44ef1f0> + 3bc08938: c3b8 sw a4,64(a5) + 3bc0893a: 4732 lw a4,12(sp) + 3bc0893c: c3f8 sw a4,68(a5) + 3bc0893e: 4742 lw a4,16(sp) + 3bc08940: c7b8 sw a4,72(a5) + 3bc08942: 4752 lw a4,20(sp) + 3bc08944: c7f8 sw a4,76(a5) + 3bc08946: 4762 lw a4,24(sp) + 3bc08948: cbb8 sw a4,80(a5) + 3bc0894a: 4772 lw a4,28(sp) + 3bc0894c: cbf8 sw a4,84(a5) + 3bc0894e: 00100737 lui a4,0x100 + 3bc08952: 0007a823 sw zero,16(a5) # 8010010 + 3bc08956: 177d addi a4,a4,-1 + 3bc08958: cbd8 sw a4,20(a5) + 3bc0895a: 4711 li a4,4 + 3bc0895c: cf98 sw a4,24(a5) + 3bc0895e: 6105 addi sp,sp,32 + 3bc08960: 8082 ret + +000000003bc08962 : + 3bc08962: 000307b7 lui a5,0x30 + 3bc08966: 08010737 lui a4,0x8010 + 3bc0896a: 078d addi a5,a5,3 + 3bc0896c: c31c sw a5,0(a4) + 3bc0896e: 0000b897 auipc a7,0xb + 3bc08972: a8288893 addi a7,a7,-1406 # 3bc133f0 + 3bc08976: 08072783 lw a5,128(a4) # 8010080 + 3bc0897a: 08070693 addi a3,a4,128 + 3bc0897e: 2781 sext.w a5,a5 + 3bc08980: 00f8a023 sw a5,0(a7) + 3bc08984: 0047f813 andi a6,a5,4 + 3bc08988: fe0807e3 beqz a6,3bc08976 + 3bc0898c: 0c37b78b extu a5,a5,3,3 + 3bc08990: c79d beqz a5,3bc089be + 3bc08992: 00052023 sw zero,0(a0) + 3bc08996: e2e6c80b lwd a6,a4,(a3),1,3 + 3bc0899a: e4f6c50b lwd a0,a5,(a3),2,3 + 3bc0899e: 1702 slli a4,a4,0x20 + 3bc089a0: 7c08368b extu a3,a6,31,0 + 3bc089a4: 8f55 or a4,a4,a3 + 3bc089a6: 1782 slli a5,a5,0x20 + 3bc089a8: 7c05350b extu a0,a0,31,0 + 3bc089ac: e198 sd a4,0(a1) + 3bc089ae: 8fc9 or a5,a5,a0 + 3bc089b0: e21c sd a5,0(a2) + 3bc089b2: 080107b7 lui a5,0x8010 + 3bc089b6: 00050737 lui a4,0x50 + 3bc089ba: c398 sw a4,0(a5) + 3bc089bc: 8082 ret + 3bc089be: 4785 li a5,1 + 3bc089c0: c11c sw a5,0(a0) + 3bc089c2: 0005b023 sd zero,0(a1) + 3bc089c6: 00063023 sd zero,0(a2) + 3bc089ca: b7e5 j 3bc089b2 + +000000003bc089cc : + 3bc089cc: 7159 addi sp,sp,-112 + 3bc089ce: f0a2 sd s0,96(sp) + 3bc089d0: eca6 sd s1,88(sp) + 3bc089d2: e8ca sd s2,80(sp) + 3bc089d4: e4ce sd s3,72(sp) + 3bc089d6: e0d2 sd s4,64(sp) + 3bc089d8: fc56 sd s5,56(sp) + 3bc089da: f486 sd ra,104(sp) + 3bc089dc: f85a sd s6,48(sp) + 3bc089de: f45e sd s7,40(sp) + 3bc089e0: f062 sd s8,32(sp) + 3bc089e2: c93ff0ef jal ra,3bc08674 + 3bc089e6: 080017b7 lui a5,0x8001 + 3bc089ea: b147a403 lw s0,-1260(a5) # 8000b14 + 3bc089ee: b447a783 lw a5,-1212(a5) + 3bc089f2: 4925 li s2,9 + 3bc089f4: 080007b7 lui a5,0x8000 + 3bc089f8: 0947a483 lw s1,148(a5) # 8000094 + 3bc089fc: 2401 sext.w s0,s0 + 3bc089fe: 001f0a37 lui s4,0x1f0 + 3bc08a02: 2481 sext.w s1,s1 + 3bc08a04: 080019b7 lui s3,0x8001 + 3bc08a08: 4a85 li s5,1 + 3bc08a0a: 0109171b slliw a4,s2,0x10 + 3bc08a0e: 8f21 xor a4,a4,s0 + 3bc08a10: 01477733 and a4,a4,s4 + 3bc08a14: 8c39 xor s0,s0,a4 + 3bc08a16: 2401 sext.w s0,s0 + 3bc08a18: b089aa23 sw s0,-1260(s3) # 8000b14 + 3bc08a1c: b489a223 sw s0,-1212(s3) + 3bc08a20: 0830 addi a2,sp,24 + 3bc08a22: 080c addi a1,sp,16 + 3bc08a24: 0068 addi a0,sp,12 + 3bc08a26: f3dff0ef jal ra,3bc08962 + 3bc08a2a: 47b2 lw a5,12(sp) + 3bc08a2c: 00090c1b sext.w s8,s2 + 3bc08a30: ef8d bnez a5,3bc08a6a + 3bc08a32: 00f4f793 andi a5,s1,15 + 3bc08a36: 2785 addiw a5,a5,1 + 3bc08a38: 018787bb addw a5,a5,s8 + 3bc08a3c: 0107979b slliw a5,a5,0x10 + 3bc08a40: 8fa1 xor a5,a5,s0 + 3bc08a42: 0147f7b3 and a5,a5,s4 + 3bc08a46: 8c3d xor s0,s0,a5 + 3bc08a48: 2401 sext.w s0,s0 + 3bc08a4a: b089aa23 sw s0,-1260(s3) + 3bc08a4e: b489a223 sw s0,-1212(s3) + 3bc08a52: 70a6 ld ra,104(sp) + 3bc08a54: 7406 ld s0,96(sp) + 3bc08a56: 64e6 ld s1,88(sp) + 3bc08a58: 6946 ld s2,80(sp) + 3bc08a5a: 69a6 ld s3,72(sp) + 3bc08a5c: 6a06 ld s4,64(sp) + 3bc08a5e: 7ae2 ld s5,56(sp) + 3bc08a60: 7b42 ld s6,48(sp) + 3bc08a62: 7ba2 ld s7,40(sp) + 3bc08a64: 7c02 ld s8,32(sp) + 3bc08a66: 6165 addi sp,sp,112 + 3bc08a68: 8082 ret + 3bc08a6a: 397d addiw s2,s2,-1 + 3bc08a6c: f9591fe3 bne s2,s5,3bc08a0a + 3bc08a70: b7cd j 3bc08a52 + +000000003bc08a72 : + 3bc08a72: 080067b7 lui a5,0x8006 + 3bc08a76: 47fc lw a5,76(a5) + 3bc08a78: 0000b717 auipc a4,0xb + 3bc08a7c: 97870713 addi a4,a4,-1672 # 3bc133f0 + 3bc08a80: 2781 sext.w a5,a5 + 3bc08a82: c31c sw a5,0(a4) + 3bc08a84: 1447b78b extu a5,a5,5,4 + 3bc08a88: cf9d beqz a5,3bc08ac6 + 3bc08a8a: 080006b7 lui a3,0x8000 + 3bc08a8e: 42bc lw a5,64(a3) + 3bc08a90: 7601 lui a2,0xfffe0 + 3bc08a92: 1675 addi a2,a2,-3 + 3bc08a94: 2781 sext.w a5,a5 + 3bc08a96: 8ff1 and a5,a5,a2 + 3bc08a98: c31c sw a5,0(a4) + 3bc08a9a: c2bc sw a5,64(a3) + 3bc08a9c: 42bc lw a5,64(a3) + 3bc08a9e: 00020637 lui a2,0x20 + 3bc08aa2: 0609 addi a2,a2,2 + 3bc08aa4: 2781 sext.w a5,a5 + 3bc08aa6: 8fd1 or a5,a5,a2 + 3bc08aa8: c2bc sw a5,64(a3) + 3bc08aaa: 0000b797 auipc a5,0xb + 3bc08aae: 9407a323 sw zero,-1722(a5) # 3bc133f0 + 3bc08ab2: 08003637 lui a2,0x8003 + 3bc08ab6: 66c1 lui a3,0x10 + 3bc08ab8: 4a5c lw a5,20(a2) + 3bc08aba: 2781 sext.w a5,a5 + 3bc08abc: c31c sw a5,0(a4) + 3bc08abe: 8ff5 and a5,a5,a3 + 3bc08ac0: 2781 sext.w a5,a5 + 3bc08ac2: dbfd beqz a5,3bc08ab8 + 3bc08ac4: 8082 ret + 3bc08ac6: 08000637 lui a2,0x8000 + 3bc08aca: 423c lw a5,64(a2) + 3bc08acc: 7681 lui a3,0xfffe0 + 3bc08ace: 16f5 addi a3,a3,-3 + 3bc08ad0: 2781 sext.w a5,a5 + 3bc08ad2: 8ff5 and a5,a5,a3 + 3bc08ad4: c31c sw a5,0(a4) + 3bc08ad6: c23c sw a5,64(a2) + 3bc08ad8: 8082 ret + +000000003bc08ada : + 3bc08ada: 080066b7 lui a3,0x8006 + 3bc08ade: 46dc lw a5,12(a3) + 3bc08ae0: 7769 lui a4,0xffffa + 3bc08ae2: 177d addi a4,a4,-1 + 3bc08ae4: 2781 sext.w a5,a5 + 3bc08ae6: 8ff9 and a5,a5,a4 + 3bc08ae8: 03003737 lui a4,0x3003 + 3bc08aec: c6dc sw a5,12(a3) + 3bc08aee: 90070713 addi a4,a4,-1792 # 3002900 <__BSS_SIZE__+0x2ffccf0> + 3bc08af2: 0000b797 auipc a5,0xb + 3bc08af6: 8d67a783 lw a5,-1834(a5) # 3bc133c8 + 3bc08afa: cb7c sw a5,84(a4) + 3bc08afc: 0000b797 auipc a5,0xb + 3bc08b00: 8d47d783 lhu a5,-1836(a5) # 3bc133d0 + 3bc08b04: cf3c sw a5,88(a4) + 3bc08b06: 0000b797 auipc a5,0xb + 3bc08b0a: 8d27b783 ld a5,-1838(a5) # 3bc133d8 + 3bc08b0e: 5c07b78b extu a5,a5,23,0 + 3bc08b12: 2781 sext.w a5,a5 + 3bc08b14: 0000b697 auipc a3,0xb + 3bc08b18: 8dc68693 addi a3,a3,-1828 # 3bc133f0 + 3bc08b1c: c29c sw a5,0(a3) + 3bc08b1e: cf7c sw a5,92(a4) + 3bc08b20: 4b3c lw a5,80(a4) + 3bc08b22: 2781 sext.w a5,a5 + 3bc08b24: 0017c793 xori a5,a5,1 + 3bc08b28: fa17f793 andi a5,a5,-95 + 3bc08b2c: 0207e793 ori a5,a5,32 + 3bc08b30: c29c sw a5,0(a3) + 3bc08b32: cb3c sw a5,80(a4) + 3bc08b34: 8082 ret + +000000003bc08b36 : + 3bc08b36: 08006737 lui a4,0x8006 + 3bc08b3a: 475c lw a5,12(a4) + 3bc08b3c: 6691 lui a3,0x4 + 3bc08b3e: 8fd5 or a5,a5,a3 + 3bc08b40: 0000b697 auipc a3,0xb + 3bc08b44: 8af6a823 sw a5,-1872(a3) # 3bc133f0 + 3bc08b48: c75c sw a5,12(a4) + 3bc08b4a: 8082 ret + +000000003bc08b4c : + 3bc08b4c: 08006737 lui a4,0x8006 + 3bc08b50: 475c lw a5,12(a4) + 3bc08b52: 6689 lui a3,0x2 + 3bc08b54: 8fd5 or a5,a5,a3 + 3bc08b56: 0000b697 auipc a3,0xb + 3bc08b5a: 88f6ad23 sw a5,-1894(a3) # 3bc133f0 + 3bc08b5e: c75c sw a5,12(a4) + 3bc08b60: 8082 ret + +000000003bc08b62 : + 3bc08b62: 1101 addi sp,sp,-32 + 3bc08b64: 0000b797 auipc a5,0xb + 3bc08b68: 8807a623 sw zero,-1908(a5) # 3bc133f0 + 3bc08b6c: 080066b7 lui a3,0x8006 + 3bc08b70: e822 sd s0,16(sp) + 3bc08b72: ec06 sd ra,24(sp) + 3bc08b74: e426 sd s1,8(sp) + 3bc08b76: e04a sd s2,0(sp) + 3bc08b78: 0006a223 sw zero,4(a3) # 8006004 + 3bc08b7c: 0006a423 sw zero,8(a3) + 3bc08b80: 46dc lw a5,12(a3) + 3bc08b82: 0000b417 auipc s0,0xb + 3bc08b86: 86e40413 addi s0,s0,-1938 # 3bc133f0 + 3bc08b8a: 2781 sext.w a5,a5 + 3bc08b8c: f7f7f793 andi a5,a5,-129 + 3bc08b90: c01c sw a5,0(s0) + 3bc08b92: c6dc sw a5,12(a3) + 3bc08b94: 46fc lw a5,76(a3) + 3bc08b96: c01c sw a5,0(s0) + 3bc08b98: 46fc lw a5,76(a3) + 3bc08b9a: c01c sw a5,0(s0) + 3bc08b9c: 46fc lw a5,76(a3) + 3bc08b9e: c01c sw a5,0(s0) + 3bc08ba0: 46fc lw a5,76(a3) + 3bc08ba2: c01c sw a5,0(s0) + 3bc08ba4: 46fc lw a5,76(a3) + 3bc08ba6: c01c sw a5,0(s0) + 3bc08ba8: 46f8 lw a4,76(a3) + 3bc08baa: 0007079b sext.w a5,a4 + 3bc08bae: 8b05 andi a4,a4,1 + 3bc08bb0: c315 beqz a4,3bc08bd4 + 3bc08bb2: 2487b60b extu a2,a5,9,8 + 3bc08bb6: 1447b70b extu a4,a5,5,4 + 3bc08bba: e629 bnez a2,3bc08c04 + 3bc08bbc: fcf7f793 andi a5,a5,-49 + 3bc08bc0: 0087171b slliw a4,a4,0x8 + 3bc08bc4: 8f3d xor a4,a4,a5 + 3bc08bc6: 30077713 andi a4,a4,768 + 3bc08bca: 8fb9 xor a5,a5,a4 + 3bc08bcc: c01c sw a5,0(s0) + 3bc08bce: c6fc sw a5,76(a3) + 3bc08bd0: f7dff0ef jal ra,3bc08b4c + 3bc08bd4: 4685 li a3,1 + 3bc08bd6: c014 sw a3,0(s0) + 3bc08bd8: 08006737 lui a4,0x8006 + 3bc08bdc: c354 sw a3,4(a4) + 3bc08bde: 475c lw a5,12(a4) + 3bc08be0: 64a1 lui s1,0x8 + 3bc08be2: 08006937 lui s2,0x8006 + 3bc08be6: 2781 sext.w a5,a5 + 3bc08be8: 0807e793 ori a5,a5,128 + 3bc08bec: c75c sw a5,12(a4) + 3bc08bee: c014 sw a3,0(s0) + 3bc08bf0: c714 sw a3,8(a4) + 3bc08bf2: 401c lw a5,0(s0) + 3bc08bf4: 8fe5 and a5,a5,s1 + 3bc08bf6: cbb9 beqz a5,3bc08c4c + 3bc08bf8: 60e2 ld ra,24(sp) + 3bc08bfa: 6442 ld s0,16(sp) + 3bc08bfc: 64a2 ld s1,8(sp) + 3bc08bfe: 6902 ld s2,0(sp) + 3bc08c00: 6105 addi sp,sp,32 + 3bc08c02: 8082 ret + 3bc08c04: 4589 li a1,2 + 3bc08c06: 02b61163 bne a2,a1,3bc08c28 + 3bc08c0a: fcf7f793 andi a5,a5,-49 + 3bc08c0e: 0207e793 ori a5,a5,32 + 3bc08c12: 0087171b slliw a4,a4,0x8 + 3bc08c16: 8f3d xor a4,a4,a5 + 3bc08c18: 30077713 andi a4,a4,768 + 3bc08c1c: 8fb9 xor a5,a5,a4 + 3bc08c1e: c01c sw a5,0(s0) + 3bc08c20: c6fc sw a5,76(a3) + 3bc08c22: eb9ff0ef jal ra,3bc08ada + 3bc08c26: b77d j 3bc08bd4 + 3bc08c28: 4585 li a1,1 + 3bc08c2a: fab615e3 bne a2,a1,3bc08bd4 + 3bc08c2e: fcf7f793 andi a5,a5,-49 + 3bc08c32: 0107e793 ori a5,a5,16 + 3bc08c36: 0087171b slliw a4,a4,0x8 + 3bc08c3a: 8f3d xor a4,a4,a5 + 3bc08c3c: 30077713 andi a4,a4,768 + 3bc08c40: 8fb9 xor a5,a5,a4 + 3bc08c42: c01c sw a5,0(s0) + 3bc08c44: c6fc sw a5,76(a3) + 3bc08c46: ef1ff0ef jal ra,3bc08b36 + 3bc08c4a: b769 j 3bc08bd4 + 3bc08c4c: 01092783 lw a5,16(s2) # 8006010 + 3bc08c50: 4501 li a0,0 + 3bc08c52: c01c sw a5,0(s0) + 3bc08c54: d36f70ef jal ra,3bc0018a + 3bc08c58: bf69 j 3bc08bf2 + +000000003bc08c5a : + 3bc08c5a: 080067b7 lui a5,0x8006 + 3bc08c5e: 43b4 lw a3,64(a5) + 3bc08c60: bf000737 lui a4,0xbf000 + 3bc08c64: 377d addiw a4,a4,-1 + 3bc08c66: 8f75 and a4,a4,a3 + 3bc08c68: 0000a697 auipc a3,0xa + 3bc08c6c: 78868693 addi a3,a3,1928 # 3bc133f0 + 3bc08c70: c298 sw a4,0(a3) + 3bc08c72: c3b8 sw a4,64(a5) + 3bc08c74: 43b8 lw a4,64(a5) + 3bc08c76: 0006a023 sw zero,0(a3) + 3bc08c7a: 0407a023 sw zero,64(a5) # 8006040 + 3bc08c7e: 4fd8 lw a4,28(a5) + 3bc08c80: 2701 sext.w a4,a4 + 3bc08c82: 08076713 ori a4,a4,128 + 3bc08c86: cfd8 sw a4,28(a5) + 3bc08c88: 0006a023 sw zero,0(a3) + 3bc08c8c: 0007a023 sw zero,0(a5) + 3bc08c90: 4fd8 lw a4,28(a5) + 3bc08c92: 2701 sext.w a4,a4 + 3bc08c94: f7f77713 andi a4,a4,-129 + 3bc08c98: c298 sw a4,0(a3) + 3bc08c9a: cfd8 sw a4,28(a5) + 3bc08c9c: 8082 ret + +000000003bc08c9e : + 3bc08c9e: 1141 addi sp,sp,-16 + 3bc08ca0: e406 sd ra,8(sp) + 3bc08ca2: e022 sd s0,0(sp) + 3bc08ca4: ebfff0ef jal ra,3bc08b62 + 3bc08ca8: 08000737 lui a4,0x8000 + 3bc08cac: 15472783 lw a5,340(a4) # 8000154 + 3bc08cb0: 0000a417 auipc s0,0xa + 3bc08cb4: 74040413 addi s0,s0,1856 # 3bc133f0 + 3bc08cb8: 2781 sext.w a5,a5 + 3bc08cba: 9bf9 andi a5,a5,-2 + 3bc08cbc: 14f72a23 sw a5,340(a4) + 3bc08cc0: 00042023 sw zero,0(s0) + 3bc08cc4: 12072823 sw zero,304(a4) + 3bc08cc8: dabff0ef jal ra,3bc08a72 + 3bc08ccc: 080067b7 lui a5,0x8006 + 3bc08cd0: 80000737 lui a4,0x80000 + 3bc08cd4: c3b8 sw a4,64(a5) + 3bc08cd6: 00042023 sw zero,0(s0) + 3bc08cda: 60a2 ld ra,8(sp) + 3bc08cdc: 6402 ld s0,0(sp) + 3bc08cde: 0007a023 sw zero,0(a5) # 8006000 + 3bc08ce2: 0141 addi sp,sp,16 + 3bc08ce4: 8082 ret + +000000003bc08ce6 : + 3bc08ce6: 080007b7 lui a5,0x8000 + 3bc08cea: 10078693 addi a3,a5,256 # 8000100 + 3bc08cee: 4af8 lw a4,84(a3) + 3bc08cf0: 0000a617 auipc a2,0xa + 3bc08cf4: 70060613 addi a2,a2,1792 # 3bc133f0 + 3bc08cf8: 20078793 addi a5,a5,512 + 3bc08cfc: 2701 sext.w a4,a4 + 3bc08cfe: 9b79 andi a4,a4,-2 + 3bc08d00: caf8 sw a4,84(a3) + 3bc08d02: 00062023 sw zero,0(a2) + 3bc08d06: f207a823 sw zero,-208(a5) + 3bc08d0a: 43d4 lw a3,4(a5) + 3bc08d0c: 000405b7 lui a1,0x40 + 3bc08d10: 8ecd or a3,a3,a1 + 3bc08d12: c214 sw a3,0(a2) + 3bc08d14: c3d4 sw a3,4(a5) + 3bc08d16: 53d8 lw a4,36(a5) + 3bc08d18: 8f4d or a4,a4,a1 + 3bc08d1a: c218 sw a4,0(a2) + 3bc08d1c: d3d8 sw a4,36(a5) + 3bc08d1e: 8082 ret + +000000003bc08d20 : + 3bc08d20: 08004737 lui a4,0x8004 + 3bc08d24: 0000a697 auipc a3,0xa + 3bc08d28: 6cc68693 addi a3,a3,1740 # 3bc133f0 + 3bc08d2c: 1bc72783 lw a5,444(a4) # 80041bc + 3bc08d30: 2781 sext.w a5,a5 + 3bc08d32: c29c sw a5,0(a3) + 3bc08d34: 8b85 andi a5,a5,1 + 3bc08d36: dbfd beqz a5,3bc08d2c + 3bc08d38: 32072023 sw zero,800(a4) + 3bc08d3c: 1b072783 lw a5,432(a4) + 3bc08d40: 2781 sext.w a5,a5 + 3bc08d42: fc07f793 andi a5,a5,-64 + 3bc08d46: 0057e793 ori a5,a5,5 + 3bc08d4a: c29c sw a5,0(a3) + 3bc08d4c: 1af72823 sw a5,432(a4) + 3bc08d50: 4785 li a5,1 + 3bc08d52: 32f72023 sw a5,800(a4) + 3bc08d56: 8082 ret + +000000003bc08d58 : + 3bc08d58: 080036b7 lui a3,0x8003 + 3bc08d5c: 0000a717 auipc a4,0xa + 3bc08d60: 69470713 addi a4,a4,1684 # 3bc133f0 + 3bc08d64: 569c lw a5,40(a3) + 3bc08d66: 2781 sext.w a5,a5 + 3bc08d68: c31c sw a5,0(a4) + 3bc08d6a: 1007f793 andi a5,a5,256 + 3bc08d6e: dbfd beqz a5,3bc08d64 + 3bc08d70: 8082 ret + +000000003bc08d72 : + 3bc08d72: 1141 addi sp,sp,-16 + 3bc08d74: 4551 li a0,20 + 3bc08d76: e406 sd ra,8(sp) + 3bc08d78: c12f70ef jal ra,3bc0018a + 3bc08d7c: 080007b7 lui a5,0x8000 + 3bc08d80: 4741 li a4,16 + 3bc08d82: 12e7a023 sw a4,288(a5) # 8000120 + 3bc08d86: 60a2 ld ra,8(sp) + 3bc08d88: 4705 li a4,1 + 3bc08d8a: 0000a697 auipc a3,0xa + 3bc08d8e: 66e6a323 sw a4,1638(a3) # 3bc133f0 + 3bc08d92: 10e7ac23 sw a4,280(a5) + 3bc08d96: 0141 addi sp,sp,16 + 3bc08d98: 8082 ret + +000000003bc08d9a : + 3bc08d9a: 1141 addi sp,sp,-16 + 3bc08d9c: e406 sd ra,8(sp) + 3bc08d9e: 0000a797 auipc a5,0xa + 3bc08da2: 65278793 addi a5,a5,1618 # 3bc133f0 + 3bc08da6: 0007a023 sw zero,0(a5) + 3bc08daa: 08000737 lui a4,0x8000 + 3bc08dae: 10072c23 sw zero,280(a4) # 8000118 + 3bc08db2: 08006737 lui a4,0x8006 + 3bc08db6: 4778 lw a4,76(a4) + 3bc08db8: c398 sw a4,0(a5) + 3bc08dba: ee5ff0ef jal ra,3bc08c9e + 3bc08dbe: 60a2 ld ra,8(sp) + 3bc08dc0: 0141 addi sp,sp,16 + 3bc08dc2: fb1ff06f j 3bc08d72 + +000000003bc08dc6 : + 3bc08dc6: 08004637 lui a2,0x8004 + 3bc08dca: 0000a697 auipc a3,0xa + 3bc08dce: 62668693 addi a3,a3,1574 # 3bc133f0 + 3bc08dd2: 4705 li a4,1 + 3bc08dd4: 425c lw a5,4(a2) + 3bc08dd6: 2781 sext.w a5,a5 + 3bc08dd8: c29c sw a5,0(a3) + 3bc08dda: 8b9d andi a5,a5,7 + 3bc08ddc: fee79ce3 bne a5,a4,3bc08dd4 + 3bc08de0: 8082 ret + +000000003bc08de2 : + 3bc08de2: 4785 li a5,1 + 3bc08de4: 0000a717 auipc a4,0xa + 3bc08de8: 60c70713 addi a4,a4,1548 # 3bc133f0 + 3bc08dec: 080006b7 lui a3,0x8000 + 3bc08df0: c31c sw a5,0(a4) + 3bc08df2: 16f6aa23 sw a5,372(a3) # 8000174 + 3bc08df6: 08003637 lui a2,0x8003 + 3bc08dfa: 468d li a3,3 + 3bc08dfc: 5a1c lw a5,48(a2) + 3bc08dfe: 2781 sext.w a5,a5 + 3bc08e00: c31c sw a5,0(a4) + 3bc08e02: 2487b78b extu a5,a5,9,8 + 3bc08e06: fed79be3 bne a5,a3,3bc08dfc + 3bc08e0a: 4785 li a5,1 + 3bc08e0c: 02f51a63 bne a0,a5,3bc08e40 + 3bc08e10: 0800a7b7 lui a5,0x800a + 3bc08e14: 46ed li a3,27 + 3bc08e16: c394 sw a3,0(a5) + 3bc08e18: 0800a7b7 lui a5,0x800a + 3bc08e1c: 4685 li a3,1 + 3bc08e1e: c3d4 sw a3,4(a5) + 3bc08e20: 020006b7 lui a3,0x2000 + 3bc08e24: fcb68693 addi a3,a3,-53 # 1ffffcb <__BSS_SIZE__+0x1ffa3bb> + 3bc08e28: c794 sw a3,8(a5) + 3bc08e2a: 400006b7 lui a3,0x40000 + 3bc08e2e: 16fd addi a3,a3,-1 + 3bc08e30: c7d4 sw a3,12(a5) + 3bc08e32: 47c1 li a5,16 + 3bc08e34: c31c sw a5,0(a4) + 3bc08e36: 08000737 lui a4,0x8000 + 3bc08e3a: 16f72a23 sw a5,372(a4) # 8000174 + 3bc08e3e: 8082 ret + 3bc08e40: 0800a7b7 lui a5,0x800a + 3bc08e44: 0007a023 sw zero,0(a5) # 800a000 + 3bc08e48: bfc1 j 3bc08e18 + +000000003bc08e4a : + 3bc08e4a: 8082 ret + +000000003bc08e4c : + 3bc08e4c: 08004737 lui a4,0x8004 + 3bc08e50: 080037b7 lui a5,0x8003 + 3bc08e54: 439c lw a5,0(a5) + 3bc08e56: 19072683 lw a3,400(a4) # 8004190 + 3bc08e5a: 0000a797 auipc a5,0xa + 3bc08e5e: 59678793 addi a5,a5,1430 # 3bc133f0 + 3bc08e62: c394 sw a3,0(a5) + 3bc08e64: 19472703 lw a4,404(a4) + 3bc08e68: c398 sw a4,0(a5) + 3bc08e6a: 8082 ret + +000000003bc08e6c : + 3bc08e6c: 08004737 lui a4,0x8004 + 3bc08e70: 32072023 sw zero,800(a4) # 8004320 + 3bc08e74: 1b072783 lw a5,432(a4) + 3bc08e78: 2781 sext.w a5,a5 + 3bc08e7a: 0207e793 ori a5,a5,32 + 3bc08e7e: 0000a697 auipc a3,0xa + 3bc08e82: 56f6a923 sw a5,1394(a3) # 3bc133f0 + 3bc08e86: 1af72823 sw a5,432(a4) + 3bc08e8a: 4785 li a5,1 + 3bc08e8c: 32f72023 sw a5,800(a4) + 3bc08e90: 8082 ret + +000000003bc08e92 : + 3bc08e92: 08006737 lui a4,0x8006 + 3bc08e96: 000807b7 lui a5,0x80 + 3bc08e9a: 02072423 sw zero,40(a4) # 8006028 + 3bc08e9e: 0785 addi a5,a5,1 + 3bc08ea0: 030036b7 lui a3,0x3003 + 3bc08ea4: cb7c sw a5,84(a4) + 3bc08ea6: 90068693 addi a3,a3,-1792 # 3002900 <__BSS_SIZE__+0x2ffccf0> + 3bc08eaa: 0000a797 auipc a5,0xa + 3bc08eae: 51e7a783 lw a5,1310(a5) # 3bc133c8 + 3bc08eb2: cafc sw a5,84(a3) + 3bc08eb4: 0000a797 auipc a5,0xa + 3bc08eb8: 51c7d783 lhu a5,1308(a5) # 3bc133d0 + 3bc08ebc: cebc sw a5,88(a3) + 3bc08ebe: 0000a797 auipc a5,0xa + 3bc08ec2: 51a7b783 ld a5,1306(a5) # 3bc133d8 + 3bc08ec6: 5c07b78b extu a5,a5,23,0 + 3bc08eca: 0000a617 auipc a2,0xa + 3bc08ece: 52660613 addi a2,a2,1318 # 3bc133f0 + 3bc08ed2: 2781 sext.w a5,a5 + 3bc08ed4: c21c sw a5,0(a2) + 3bc08ed6: cefc sw a5,92(a3) + 3bc08ed8: 4abc lw a5,80(a3) + 3bc08eda: 2781 sext.w a5,a5 + 3bc08edc: 0017c793 xori a5,a5,1 + 3bc08ee0: fa17f793 andi a5,a5,-95 + 3bc08ee4: 0207e793 ori a5,a5,32 + 3bc08ee8: c21c sw a5,0(a2) + 3bc08eea: cabc sw a5,80(a3) + 3bc08eec: 475c lw a5,12(a4) + 3bc08eee: 2781 sext.w a5,a5 + 3bc08ef0: 30b7c693 xori a3,a5,779 + 3bc08ef4: 3c06b68b extu a3,a3,15,0 + 3bc08ef8: 8fb5 xor a5,a5,a3 + 3bc08efa: c21c sw a5,0(a2) + 3bc08efc: c75c sw a5,12(a4) + 3bc08efe: 4b1c lw a5,16(a4) + 3bc08f00: 080066b7 lui a3,0x8006 + 3bc08f04: 2781 sext.w a5,a5 + 3bc08f06: f007f793 andi a5,a5,-256 + 3bc08f0a: cb1c sw a5,16(a4) + 3bc08f0c: 4785 li a5,1 + 3bc08f0e: c21c sw a5,0(a2) + 3bc08f10: c35c sw a5,4(a4) + 3bc08f12: 475c lw a5,12(a4) + 3bc08f14: 2781 sext.w a5,a5 + 3bc08f16: 0807e793 ori a5,a5,128 + 3bc08f1a: c21c sw a5,0(a2) + 3bc08f1c: c75c sw a5,12(a4) + 3bc08f1e: 6721 lui a4,0x8 + 3bc08f20: 4a9c lw a5,16(a3) + 3bc08f22: 2781 sext.w a5,a5 + 3bc08f24: c21c sw a5,0(a2) + 3bc08f26: 8ff9 and a5,a5,a4 + 3bc08f28: 2781 sext.w a5,a5 + 3bc08f2a: dbfd beqz a5,3bc08f20 + 3bc08f2c: 8082 ret + +000000003bc08f2e : + 3bc08f2e: 6785 lui a5,0x1 + 3bc08f30: 08006737 lui a4,0x8006 + 3bc08f34: 2f578793 addi a5,a5,757 # 12f5 <__BSS_SIZE__-0x491b> + 3bc08f38: c37c sw a5,68(a4) + 3bc08f3a: 0000a697 auipc a3,0xa + 3bc08f3e: 4b668693 addi a3,a3,1206 # 3bc133f0 + 3bc08f42: 0006a023 sw zero,0(a3) + 3bc08f46: 080007b7 lui a5,0x8000 + 3bc08f4a: 0e07aa23 sw zero,244(a5) # 80000f4 + 3bc08f4e: 080047b7 lui a5,0x8004 + 3bc08f52: 5b98 lw a4,48(a5) + 3bc08f54: 767d lui a2,0xfffff + 3bc08f56: 5ff60613 addi a2,a2,1535 # fffffffffffff5ff <__BL2_END__+0xffffffffc43ec1ef> + 3bc08f5a: 2701 sext.w a4,a4 + 3bc08f5c: 8f71 and a4,a4,a2 + 3bc08f5e: c298 sw a4,0(a3) + 3bc08f60: db98 sw a4,48(a5) + 3bc08f62: 10078793 addi a5,a5,256 # 8004100 + 3bc08f66: 47b8 lw a4,72(a5) + 3bc08f68: 7f800637 lui a2,0x7f800 + 3bc08f6c: 167d addi a2,a2,-1 + 3bc08f6e: 2701 sext.w a4,a4 + 3bc08f70: 8f71 and a4,a4,a2 + 3bc08f72: c298 sw a4,0(a3) + 3bc08f74: c7b8 sw a4,72(a5) + 3bc08f76: 8082 ret + +000000003bc08f78 : + 3bc08f78: 679d lui a5,0x7 + 3bc08f7a: 0000a617 auipc a2,0xa + 3bc08f7e: 47660613 addi a2,a2,1142 # 3bc133f0 + 3bc08f82: c8178793 addi a5,a5,-895 # 6c81 <__BSS_SIZE__+0x1071> + 3bc08f86: c21c sw a5,0(a2) + 3bc08f88: 08006737 lui a4,0x8006 + 3bc08f8c: c37c sw a5,68(a4) + 3bc08f8e: 08004737 lui a4,0x8004 + 3bc08f92: 18070593 addi a1,a4,384 # 8004180 + 3bc08f96: 499c lw a5,16(a1) + 3bc08f98: 060006b7 lui a3,0x6000 + 3bc08f9c: 1f000537 lui a0,0x1f000 + 3bc08fa0: 2781 sext.w a5,a5 + 3bc08fa2: 8ebd xor a3,a3,a5 + 3bc08fa4: 8ee9 and a3,a3,a0 + 3bc08fa6: 8fb5 xor a5,a5,a3 + 3bc08fa8: 2781 sext.w a5,a5 + 3bc08faa: c99c sw a5,16(a1) + 3bc08fac: 000307b7 lui a5,0x30 + 3bc08fb0: 03378793 addi a5,a5,51 # 30033 <__BSS_SIZE__+0x2a423> + 3bc08fb4: c21c sw a5,0(a2) + 3bc08fb6: 080006b7 lui a3,0x8000 + 3bc08fba: 0ef6aa23 sw a5,244(a3) # 80000f4 + 3bc08fbe: 5b1c lw a5,48(a4) + 3bc08fc0: 76fd lui a3,0xfffff + 3bc08fc2: bff68693 addi a3,a3,-1025 # ffffffffffffebff <__BL2_END__+0xffffffffc43eb7ef> + 3bc08fc6: 2781 sext.w a5,a5 + 3bc08fc8: 8ff5 and a5,a5,a3 + 3bc08fca: 6685 lui a3,0x1 + 3bc08fcc: a0068693 addi a3,a3,-1536 # a00 <__BSS_SIZE__-0x5210> + 3bc08fd0: 8fd5 or a5,a5,a3 + 3bc08fd2: c21c sw a5,0(a2) + 3bc08fd4: db1c sw a5,48(a4) + 3bc08fd6: 10070713 addi a4,a4,256 + 3bc08fda: 473c lw a5,72(a4) + 3bc08fdc: 808006b7 lui a3,0x80800 + 3bc08fe0: 8fd5 or a5,a5,a3 + 3bc08fe2: c21c sw a5,0(a2) + 3bc08fe4: c73c sw a5,72(a4) + 3bc08fe6: 8082 ret + +000000003bc08fe8 : + 3bc08fe8: 1101 addi sp,sp,-32 + 3bc08fea: e426 sd s1,8(sp) + 3bc08fec: ec06 sd ra,24(sp) + 3bc08fee: e822 sd s0,16(sp) + 3bc08ff0: e04a sd s2,0(sp) + 3bc08ff2: 080047b7 lui a5,0x8004 + 3bc08ff6: 5407a023 sw zero,1344(a5) # 8004540 + 3bc08ffa: 5e07a823 sw zero,1520(a5) + 3bc08ffe: 6a07a023 sw zero,1696(a5) + 3bc09002: 08004737 lui a4,0x8004 + 3bc09006: 0000a497 auipc s1,0xa + 3bc0900a: 3ea48493 addi s1,s1,1002 # 3bc133f0 + 3bc0900e: 3fc72783 lw a5,1020(a4) # 80043fc + 3bc09012: 2781 sext.w a5,a5 + 3bc09014: c09c sw a5,0(s1) + 3bc09016: ffe5 bnez a5,3bc0900e + 3bc09018: 5b1c lw a5,48(a4) + 3bc0901a: 0007841b sext.w s0,a5 + 3bc0901e: fd447693 andi a3,s0,-44 + 3bc09022: c094 sw a3,0(s1) + 3bc09024: db14 sw a3,48(a4) + 3bc09026: 0017f913 andi s2,a5,1 + 3bc0902a: f05ff0ef jal ra,3bc08f2e + 3bc0902e: ef4ff0ef jal ra,3bc08722 + 3bc09032: 080006b7 lui a3,0x8000 + 3bc09036: 1846a703 lw a4,388(a3) # 8000184 + 3bc0903a: 080037b7 lui a5,0x8003 + 3bc0903e: 2701 sext.w a4,a4 + 3bc09040: 00176713 ori a4,a4,1 + 3bc09044: c098 sw a4,0(s1) + 3bc09046: 18e6a223 sw a4,388(a3) + 3bc0904a: 4447a703 lw a4,1092(a5) # 8003444 + 3bc0904e: 2701 sext.w a4,a4 + 3bc09050: c098 sw a4,0(s1) + 3bc09052: 8b09 andi a4,a4,2 + 3bc09054: db7d beqz a4,3bc0904a + 3bc09056: 080107b7 lui a5,0x8010 + 3bc0905a: 00040737 lui a4,0x40 + 3bc0905e: c398 sw a4,0(a5) + 3bc09060: 080046b7 lui a3,0x8004 + 3bc09064: 5a98 lw a4,48(a3) + 3bc09066: 60e2 ld ra,24(sp) + 3bc09068: 2701 sext.w a4,a4 + 3bc0906a: 00874633 xor a2,a4,s0 + 3bc0906e: 02067613 andi a2,a2,32 + 3bc09072: 8f31 xor a4,a4,a2 + 3bc09074: 00874633 xor a2,a4,s0 + 3bc09078: 8a21 andi a2,a2,8 + 3bc0907a: 8f31 xor a4,a4,a2 + 3bc0907c: 008747b3 xor a5,a4,s0 + 3bc09080: 8b89 andi a5,a5,2 + 3bc09082: 8fb9 xor a5,a5,a4 + 3bc09084: 9bf9 andi a5,a5,-2 + 3bc09086: 0127e7b3 or a5,a5,s2 + 3bc0908a: c09c sw a5,0(s1) + 3bc0908c: da9c sw a5,48(a3) + 3bc0908e: 50068713 addi a4,a3,1280 # 8004500 + 3bc09092: 4785 li a5,1 + 3bc09094: c33c sw a5,64(a4) + 3bc09096: 6442 ld s0,16(sp) + 3bc09098: 58068713 addi a4,a3,1408 + 3bc0909c: 64a2 ld s1,8(sp) + 3bc0909e: 6902 ld s2,0(sp) + 3bc090a0: db3c sw a5,112(a4) + 3bc090a2: 68068693 addi a3,a3,1664 + 3bc090a6: d29c sw a5,32(a3) + 3bc090a8: 6105 addi sp,sp,32 + 3bc090aa: ecfff06f j 3bc08f78 + +000000003bc090ae : + 3bc090ae: 7139 addi sp,sp,-64 + 3bc090b0: f426 sd s1,40(sp) + 3bc090b2: e456 sd s5,8(sp) + 3bc090b4: fc06 sd ra,56(sp) + 3bc090b6: f822 sd s0,48(sp) + 3bc090b8: f04a sd s2,32(sp) + 3bc090ba: ec4e sd s3,24(sp) + 3bc090bc: e852 sd s4,16(sp) + 3bc090be: 080047b7 lui a5,0x8004 + 3bc090c2: 5407a023 sw zero,1344(a5) # 8004540 + 3bc090c6: 5e07a823 sw zero,1520(a5) + 3bc090ca: 8aaa mv s5,a0 + 3bc090cc: 6a07a023 sw zero,1696(a5) + 3bc090d0: 08004737 lui a4,0x8004 + 3bc090d4: 0000a497 auipc s1,0xa + 3bc090d8: 31c48493 addi s1,s1,796 # 3bc133f0 + 3bc090dc: 3fc72783 lw a5,1020(a4) # 80043fc + 3bc090e0: 2781 sext.w a5,a5 + 3bc090e2: c09c sw a5,0(s1) + 3bc090e4: ffe5 bnez a5,3bc090dc + 3bc090e6: 5b1c lw a5,48(a4) + 3bc090e8: 080009b7 lui s3,0x8000 + 3bc090ec: 0007891b sext.w s2,a5 + 3bc090f0: 0017f413 andi s0,a5,1 + 3bc090f4: fd497793 andi a5,s2,-44 + 3bc090f8: c09c sw a5,0(s1) + 3bc090fa: db1c sw a5,48(a4) + 3bc090fc: e33ff0ef jal ra,3bc08f2e + 3bc09100: 4505 li a0,1 + 3bc09102: ce1ff0ef jal ra,3bc08de2 + 3bc09106: 08098693 addi a3,s3,128 # 8000080 + 3bc0910a: 4298 lw a4,0(a3) + 3bc0910c: 002007b7 lui a5,0x200 + 3bc09110: 007f0637 lui a2,0x7f0 + 3bc09114: 2701 sext.w a4,a4 + 3bc09116: 8fb9 xor a5,a5,a4 + 3bc09118: 8ff1 and a5,a5,a2 + 3bc0911a: 8f3d xor a4,a4,a5 + 3bc0911c: 2701 sext.w a4,a4 + 3bc0911e: 1f0007b7 lui a5,0x1f000 + 3bc09122: 8fb9 xor a5,a5,a4 + 3bc09124: 7f000637 lui a2,0x7f000 + 3bc09128: 8ff1 and a5,a5,a2 + 3bc0912a: 8f3d xor a4,a4,a5 + 3bc0912c: 2701 sext.w a4,a4 + 3bc0912e: c098 sw a4,0(s1) + 3bc09130: c298 sw a4,0(a3) + 3bc09132: 46dc lw a5,12(a3) + 3bc09134: 8556 mv a0,s5 + 3bc09136: 0007871b sext.w a4,a5 + 3bc0913a: 0827ba0b extu s4,a5,2,2 + 3bc0913e: ff177793 andi a5,a4,-15 + 3bc09142: c09c sw a5,0(s1) + 3bc09144: c6dc sw a5,12(a3) + 3bc09146: e22ff0ef jal ra,3bc08768 + 3bc0914a: 1889a783 lw a5,392(s3) + 3bc0914e: 08003737 lui a4,0x8003 + 3bc09152: 2781 sext.w a5,a5 + 3bc09154: 0017e793 ori a5,a5,1 + 3bc09158: c09c sw a5,0(s1) + 3bc0915a: 18f9a423 sw a5,392(s3) + 3bc0915e: 44472783 lw a5,1092(a4) # 8003444 + 3bc09162: 2781 sext.w a5,a5 + 3bc09164: c09c sw a5,0(s1) + 3bc09166: 8b91 andi a5,a5,4 + 3bc09168: dbfd beqz a5,3bc0915e + 3bc0916a: 040a0563 beqz s4,3bc091b4 + 3bc0916e: 08000737 lui a4,0x8000 + 3bc09172: 08070693 addi a3,a4,128 # 8000080 + 3bc09176: 46dc lw a5,12(a3) + 3bc09178: 18070713 addi a4,a4,384 + 3bc0917c: 2781 sext.w a5,a5 + 3bc0917e: 9bed andi a5,a5,-5 + 3bc09180: c09c sw a5,0(s1) + 3bc09182: c6dc sw a5,12(a3) + 3bc09184: 471c lw a5,8(a4) + 3bc09186: 2781 sext.w a5,a5 + 3bc09188: 0017e793 ori a5,a5,1 + 3bc0918c: c09c sw a5,0(s1) + 3bc0918e: c71c sw a5,8(a4) + 3bc09190: 08003737 lui a4,0x8003 + 3bc09194: 44472783 lw a5,1092(a4) # 8003444 + 3bc09198: 2781 sext.w a5,a5 + 3bc0919a: c09c sw a5,0(s1) + 3bc0919c: 8b91 andi a5,a5,4 + 3bc0919e: dbfd beqz a5,3bc09194 + 3bc091a0: 08000737 lui a4,0x8000 + 3bc091a4: 08c72783 lw a5,140(a4) # 800008c + 3bc091a8: 2781 sext.w a5,a5 + 3bc091aa: 0047e793 ori a5,a5,4 + 3bc091ae: c09c sw a5,0(s1) + 3bc091b0: 08f72623 sw a5,140(a4) + 3bc091b4: 819ff0ef jal ra,3bc089cc + 3bc091b8: 080107b7 lui a5,0x8010 + 3bc091bc: 00040737 lui a4,0x40 + 3bc091c0: c398 sw a4,0(a5) + 3bc091c2: 4501 li a0,0 + 3bc091c4: c1fff0ef jal ra,3bc08de2 + 3bc091c8: 08004737 lui a4,0x8004 + 3bc091cc: 5b1c lw a5,48(a4) + 3bc091ce: 70e2 ld ra,56(sp) + 3bc091d0: 69e2 ld s3,24(sp) + 3bc091d2: 2781 sext.w a5,a5 + 3bc091d4: 0127c6b3 xor a3,a5,s2 + 3bc091d8: 0206f693 andi a3,a3,32 + 3bc091dc: 8fb5 xor a5,a5,a3 + 3bc091de: 0127c6b3 xor a3,a5,s2 + 3bc091e2: 8aa1 andi a3,a3,8 + 3bc091e4: 8fb5 xor a5,a5,a3 + 3bc091e6: 0127c933 xor s2,a5,s2 + 3bc091ea: 00297913 andi s2,s2,2 + 3bc091ee: 0127c7b3 xor a5,a5,s2 + 3bc091f2: 9bf9 andi a5,a5,-2 + 3bc091f4: 8fc1 or a5,a5,s0 + 3bc091f6: c09c sw a5,0(s1) + 3bc091f8: db1c sw a5,48(a4) + 3bc091fa: 50070693 addi a3,a4,1280 # 8004500 + 3bc091fe: 4785 li a5,1 + 3bc09200: c2bc sw a5,64(a3) + 3bc09202: 7442 ld s0,48(sp) + 3bc09204: 58070693 addi a3,a4,1408 + 3bc09208: 74a2 ld s1,40(sp) + 3bc0920a: 7902 ld s2,32(sp) + 3bc0920c: 6a42 ld s4,16(sp) + 3bc0920e: 6aa2 ld s5,8(sp) + 3bc09210: dabc sw a5,112(a3) + 3bc09212: 68070713 addi a4,a4,1664 + 3bc09216: d31c sw a5,32(a4) + 3bc09218: 6121 addi sp,sp,64 + 3bc0921a: d5fff06f j 3bc08f78 + +000000003bc0921e : + 3bc0921e: 7179 addi sp,sp,-48 + 3bc09220: e84a sd s2,16(sp) + 3bc09222: e44e sd s3,8(sp) + 3bc09224: e052 sd s4,0(sp) + 3bc09226: f406 sd ra,40(sp) + 3bc09228: f022 sd s0,32(sp) + 3bc0922a: ec26 sd s1,24(sp) + 3bc0922c: 080047b7 lui a5,0x8004 + 3bc09230: 5407a023 sw zero,1344(a5) # 8004540 + 3bc09234: 5e07a823 sw zero,1520(a5) + 3bc09238: 89aa mv s3,a0 + 3bc0923a: 8a2e mv s4,a1 + 3bc0923c: 6a07a023 sw zero,1696(a5) + 3bc09240: 08004737 lui a4,0x8004 + 3bc09244: 0000a917 auipc s2,0xa + 3bc09248: 1ac90913 addi s2,s2,428 # 3bc133f0 + 3bc0924c: 3fc72783 lw a5,1020(a4) # 80043fc + 3bc09250: 2781 sext.w a5,a5 + 3bc09252: 00f92023 sw a5,0(s2) + 3bc09256: fbfd bnez a5,3bc0924c + 3bc09258: 5b1c lw a5,48(a4) + 3bc0925a: 0007849b sext.w s1,a5 + 3bc0925e: 0017f413 andi s0,a5,1 + 3bc09262: fd44f793 andi a5,s1,-44 + 3bc09266: 00f92023 sw a5,0(s2) + 3bc0926a: db1c sw a5,48(a4) + 3bc0926c: cc3ff0ef jal ra,3bc08f2e + 3bc09270: 4505 li a0,1 + 3bc09272: b71ff0ef jal ra,3bc08de2 + 3bc09276: 080007b7 lui a5,0x8000 + 3bc0927a: 0bc7a703 lw a4,188(a5) # 80000bc + 3bc0927e: 2701 sext.w a4,a4 + 3bc09280: 000a1863 bnez s4,3bc09290 + 3bc09284: 77fd lui a5,0xfffff + 3bc09286: 17fd addi a5,a5,-1 + 3bc09288: 8f7d and a4,a4,a5 + 3bc0928a: 6789 lui a5,0x2 + 3bc0928c: 8f5d or a4,a4,a5 + 3bc0928e: a821 j 3bc092a6 + 3bc09290: 4785 li a5,1 + 3bc09292: 00fa1763 bne s4,a5,3bc092a0 + 3bc09296: 77f9 lui a5,0xffffe + 3bc09298: 17fd addi a5,a5,-1 + 3bc0929a: 8f7d and a4,a4,a5 + 3bc0929c: 6785 lui a5,0x1 + 3bc0929e: b7fd j 3bc0928c + 3bc092a0: 4789 li a5,2 + 3bc092a2: 0efa0963 beq s4,a5,3bc09394 + 3bc092a6: 00e92023 sw a4,0(s2) + 3bc092aa: 00092703 lw a4,0(s2) + 3bc092ae: 080007b7 lui a5,0x8000 + 3bc092b2: 0ae7ae23 sw a4,188(a5) # 80000bc + 3bc092b6: 0e0a1163 bnez s4,3bc09398 + 3bc092ba: 08004737 lui a4,0x8004 + 3bc092be: 475c lw a5,12(a4) + 3bc092c0: 2781 sext.w a5,a5 + 3bc092c2: 0807e793 ori a5,a5,128 + 3bc092c6: 00f92023 sw a5,0(s2) + 3bc092ca: c75c sw a5,12(a4) + 3bc092cc: e36ff0ef jal ra,3bc08902 + 3bc092d0: 080007b7 lui a5,0x8000 + 3bc092d4: 18c7a783 lw a5,396(a5) # 800018c + 3bc092d8: 2781 sext.w a5,a5 + 3bc092da: 4017e693 ori a3,a5,1025 + 3bc092de: 000a1663 bnez s4,3bc092ea + 3bc092e2: bff7f793 andi a5,a5,-1025 + 3bc092e6: 0017e693 ori a3,a5,1 + 3bc092ea: 4785 li a5,1 + 3bc092ec: 00f98763 beq s3,a5,3bc092fa + 3bc092f0: 39bd addiw s3,s3,-17 + 3bc092f2: fef6f713 andi a4,a3,-17 + 3bc092f6: 0137e463 bltu a5,s3,3bc092fe + 3bc092fa: 0106e713 ori a4,a3,16 + 3bc092fe: 00e92023 sw a4,0(s2) + 3bc09302: 080007b7 lui a5,0x8000 + 3bc09306: 18e7a623 sw a4,396(a5) # 800018c + 3bc0930a: 08003737 lui a4,0x8003 + 3bc0930e: 44472783 lw a5,1092(a4) # 8003444 + 3bc09312: 2781 sext.w a5,a5 + 3bc09314: 00f92023 sw a5,0(s2) + 3bc09318: 8ba1 andi a5,a5,8 + 3bc0931a: dbf5 beqz a5,3bc0930e + 3bc0931c: 080049b7 lui s3,0x8004 + 3bc09320: 00c9a783 lw a5,12(s3) # 800400c + 3bc09324: 00040737 lui a4,0x40 + 3bc09328: 4501 li a0,0 + 3bc0932a: 2781 sext.w a5,a5 + 3bc0932c: f7f7f793 andi a5,a5,-129 + 3bc09330: 00f92023 sw a5,0(s2) + 3bc09334: 00f9a623 sw a5,12(s3) + 3bc09338: 080107b7 lui a5,0x8010 + 3bc0933c: c398 sw a4,0(a5) + 3bc0933e: aa5ff0ef jal ra,3bc08de2 + 3bc09342: 0309a783 lw a5,48(s3) + 3bc09346: 70a2 ld ra,40(sp) + 3bc09348: 6a02 ld s4,0(sp) + 3bc0934a: 2781 sext.w a5,a5 + 3bc0934c: 0097c733 xor a4,a5,s1 + 3bc09350: 02077713 andi a4,a4,32 + 3bc09354: 8fb9 xor a5,a5,a4 + 3bc09356: 0097c733 xor a4,a5,s1 + 3bc0935a: 8b21 andi a4,a4,8 + 3bc0935c: 8fb9 xor a5,a5,a4 + 3bc0935e: 8cbd xor s1,s1,a5 + 3bc09360: 8889 andi s1,s1,2 + 3bc09362: 8fa5 xor a5,a5,s1 + 3bc09364: 9bf9 andi a5,a5,-2 + 3bc09366: 8fc1 or a5,a5,s0 + 3bc09368: 00f92023 sw a5,0(s2) + 3bc0936c: 02f9a823 sw a5,48(s3) + 3bc09370: 50098713 addi a4,s3,1280 + 3bc09374: 4785 li a5,1 + 3bc09376: c33c sw a5,64(a4) + 3bc09378: 58098713 addi a4,s3,1408 + 3bc0937c: 7402 ld s0,32(sp) + 3bc0937e: db3c sw a5,112(a4) + 3bc09380: 68098993 addi s3,s3,1664 + 3bc09384: 64e2 ld s1,24(sp) + 3bc09386: 6942 ld s2,16(sp) + 3bc09388: 02f9a023 sw a5,32(s3) + 3bc0938c: 69a2 ld s3,8(sp) + 3bc0938e: 6145 addi sp,sp,48 + 3bc09390: be9ff06f j 3bc08f78 + 3bc09394: 678d lui a5,0x3 + 3bc09396: bddd j 3bc0928c + 3bc09398: 854e mv a0,s3 + 3bc0939a: cb8ff0ef jal ra,3bc08852 + 3bc0939e: bf0d j 3bc092d0 + +000000003bc093a0 : + 3bc093a0: 6785 lui a5,0x1 + 3bc093a2: 0785 addi a5,a5,1 + 3bc093a4: 0000a717 auipc a4,0xa + 3bc093a8: 04f72623 sw a5,76(a4) # 3bc133f0 + 3bc093ac: 08000737 lui a4,0x8000 + 3bc093b0: 50f72023 sw a5,1280(a4) # 8000500 + 3bc093b4: 54f72023 sw a5,1344(a4) + 3bc093b8: 8082 ret + +000000003bc093ba : + 3bc093ba: 4799 li a5,6 + 3bc093bc: 00f50023 sb a5,0(a0) # 1f000000 + 3bc093c0: 0000a717 auipc a4,0xa + 3bc093c4: 02f72823 sw a5,48(a4) # 3bc133f0 + 3bc093c8: 08000737 lui a4,0x8000 + 3bc093cc: 20f72423 sw a5,520(a4) # 8000208 + 3bc093d0: 080107b7 lui a5,0x8010 + 3bc093d4: 00040737 lui a4,0x40 + 3bc093d8: c398 sw a4,0(a5) + 3bc093da: 8082 ret + +000000003bc093dc : + 3bc093dc: 2f000793 li a5,752 + 3bc093e0: 0000a717 auipc a4,0xa + 3bc093e4: 00f72c23 sw a5,24(a4) # 3bc133f8 + 3bc093e8: 06400793 li a5,100 + 3bc093ec: 0000a717 auipc a4,0xa + 3bc093f0: 00f72823 sw a5,16(a4) # 3bc133fc + 3bc093f4: 00002717 auipc a4,0x2 + 3bc093f8: 30872703 lw a4,776(a4) # 3bc0b6fc + 3bc093fc: 0047569b srliw a3,a4,0x4 + 3bc09400: 463d li a2,15 + 3bc09402: 0000a797 auipc a5,0xa + 3bc09406: fed7af23 sw a3,-2(a5) # 3bc13400 + 3bc0940a: 0000a797 auipc a5,0xa + 3bc0940e: fec7a523 sw a2,-22(a5) # 3bc133f4 + 3bc09412: 02f00713 li a4,47 + 3bc09416: 077a slli a4,a4,0x1e + 3bc09418: 7c06b78b extu a5,a3,31,0 + 3bc0941c: 02f757b3 divu a5,a4,a5 + 3bc09420: 0000a717 auipc a4,0xa + 3bc09424: faf73423 sd a5,-88(a4) # 3bc133c8 + 3bc09428: 0fa00713 li a4,250 + 3bc0942c: 02d7073b mulw a4,a4,a3 + 3bc09430: 06400693 li a3,100 + 3bc09434: 02d7573b divuw a4,a4,a3 + 3bc09438: 7c07370b extu a4,a4,31,0 + 3bc0943c: 0000a697 auipc a3,0xa + 3bc09440: f8e6ba23 sd a4,-108(a3) # 3bc133d0 + 3bc09444: 3e800693 li a3,1000 + 3bc09448: 02d70733 mul a4,a4,a3 + 3bc0944c: 02c787b3 mul a5,a5,a2 + 3bc09450: 02e7d7b3 divu a5,a5,a4 + 3bc09454: 0000a717 auipc a4,0xa + 3bc09458: f8f73223 sd a5,-124(a4) # 3bc133d8 + 3bc0945c: a37ff06f j 3bc08e92 + +000000003bc09460 : + 3bc09460: 1141 addi sp,sp,-16 + 3bc09462: e406 sd ra,8(sp) + 3bc09464: f93fe0ef jal ra,3bc083f6 + 3bc09468: 357d addiw a0,a0,-1 + 3bc0946a: 0ff57513 andi a0,a0,255 + 3bc0946e: 47a5 li a5,9 + 3bc09470: 12a7ef63 bltu a5,a0,3bc095ae + 3bc09474: 00002717 auipc a4,0x2 + 3bc09478: f8470713 addi a4,a4,-124 # 3bc0b3f8 + 3bc0947c: 44a7478b lrw a5,a4,a0,2 + 3bc09480: 97ba add a5,a5,a4 + 3bc09482: 8782 jr a5 + 3bc09484: 12141737 lui a4,0x12141 + 3bc09488: 080007b7 lui a5,0x8000 + 3bc0948c: 074d addi a4,a4,19 + 3bc0948e: c398 sw a4,0(a5) + 3bc09490: 0c041737 lui a4,0xc041 + 3bc09494: 50370713 addi a4,a4,1283 # c041503 + 3bc09498: c3d8 sw a4,4(a5) + 3bc0949a: 06050737 lui a4,0x6050 + 3bc0949e: 0705 addi a4,a4,1 + 3bc094a0: c798 sw a4,8(a5) + 3bc094a2: 08071737 lui a4,0x8071 + 3bc094a6: b0270713 addi a4,a4,-1278 # 8070b02 + 3bc094aa: c7d8 sw a4,12(a5) + 3bc094ac: 0a0f1737 lui a4,0xa0f1 + 3bc094b0: e0970713 addi a4,a4,-503 # a0f0e09 + 3bc094b4: cb98 sw a4,16(a5) + 3bc094b6: 00161737 lui a4,0x161 + 3bc094ba: 10d70713 addi a4,a4,269 # 16110d <__BSS_SIZE__+0x15b4fd> + 3bc094be: cbd8 sw a4,20(a5) + 3bc094c0: 0007ac23 sw zero,24(a5) # 8000018 + 3bc094c4: 10000713 li a4,256 + 3bc094c8: cfd8 sw a4,28(a5) + 3bc094ca: 02136737 lui a4,0x2136 + 3bc094ce: 57470713 addi a4,a4,1396 # 2136574 <__BSS_SIZE__+0x2130964> + 3bc094d2: d398 sw a4,32(a5) + 3bc094d4: 4721 li a4,8 + 3bc094d6: d3d8 sw a4,36(a5) + 3bc094d8: 76512737 lui a4,0x76512 + 3bc094dc: 30870713 addi a4,a4,776 # 76512308 <__BL2_END__+0x3a8feef8> + 3bc094e0: d798 sw a4,40(a5) + 3bc094e2: 4711 li a4,4 + 3bc094e4: d7d8 sw a4,44(a5) + 3bc094e6: a0e1 j 3bc095ae + 3bc094e8: 08071737 lui a4,0x8071 + 3bc094ec: 080007b7 lui a5,0x8000 + 3bc094f0: d0970713 addi a4,a4,-759 # 8070d09 + 3bc094f4: c398 sw a4,0(a5) + 3bc094f6: 06050737 lui a4,0x6050 + 3bc094fa: 20b70713 addi a4,a4,523 # 605020b + 3bc094fe: c3d8 sw a4,4(a5) + 3bc09500: 14040737 lui a4,0x14040 + 3bc09504: 10070713 addi a4,a4,256 # 14040100 + 3bc09508: c798 sw a4,8(a5) + 3bc0950a: 15031737 lui a4,0x15031 + 3bc0950e: e0c70713 addi a4,a4,-500 # 15030e0c + 3bc09512: c7d8 sw a4,12(a5) + 3bc09514: 0a0f1737 lui a4,0xa0f1 + 3bc09518: 21370713 addi a4,a4,531 # a0f1213 + 3bc0951c: cb98 sw a4,16(a5) + 3bc0951e: 00111737 lui a4,0x111 + 3bc09522: 0759 addi a4,a4,22 + 3bc09524: cbd8 sw a4,20(a5) + 3bc09526: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0952a: 10000713 li a4,256 + 3bc0952e: cfd8 sw a4,28(a5) + 3bc09530: 82135737 lui a4,0x82135 + 3bc09534: 76470713 addi a4,a4,1892 # ffffffff82135764 <__BL2_END__+0xffffffff46522354> + 3bc09538: d398 sw a4,32(a5) + 3bc0953a: 67513737 lui a4,0x67513 + 3bc0953e: 0207a223 sw zero,36(a5) + 3bc09542: 02870713 addi a4,a4,40 # 67513028 <__BL2_END__+0x2b8ffc18> + 3bc09546: bf69 j 3bc094e0 + 3bc09548: 08071737 lui a4,0x8071 + 3bc0954c: 080007b7 lui a5,0x8000 + 3bc09550: b0970713 addi a4,a4,-1271 # 8070b09 + 3bc09554: c398 sw a4,0(a5) + 3bc09556: 05000737 lui a4,0x5000 + 3bc0955a: 20670713 addi a4,a4,518 # 5000206 + 3bc0955e: c3d8 sw a4,4(a5) + 3bc09560: 0c040737 lui a4,0xc040 + 3bc09564: 10d70713 addi a4,a4,269 # c04010d + 3bc09568: c798 sw a4,8(a5) + 3bc0956a: 15031737 lui a4,0x15031 + 3bc0956e: a1470713 addi a4,a4,-1516 # 15030a14 + 3bc09572: c7d8 sw a4,12(a5) + 3bc09574: 10111737 lui a4,0x10111 + 3bc09578: 21370713 addi a4,a4,531 # 10111213 + 3bc0957c: cb98 sw a4,16(a5) + 3bc0957e: 000f1737 lui a4,0xf1 + 3bc09582: 60e70713 addi a4,a4,1550 # f160e <__BSS_SIZE__+0xeb9fe> + 3bc09586: cbd8 sw a4,20(a5) + 3bc09588: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0958c: 10000713 li a4,256 + 3bc09590: cfd8 sw a4,28(a5) + 3bc09592: 31756737 lui a4,0x31756 + 3bc09596: 02470713 addi a4,a4,36 # 31756024 + 3bc0959a: d398 sw a4,32(a5) + 3bc0959c: 4721 li a4,8 + 3bc0959e: d3d8 sw a4,36(a5) + 3bc095a0: 26473737 lui a4,0x26473 + 3bc095a4: 51870713 addi a4,a4,1304 # 26473518 + 3bc095a8: d798 sw a4,40(a5) + 3bc095aa: 0207a623 sw zero,44(a5) + 3bc095ae: 60a2 ld ra,8(sp) + 3bc095b0: 0141 addi sp,sp,16 + 3bc095b2: 8082 ret + 3bc095b4: 0c061737 lui a4,0xc061 + 3bc095b8: 080007b7 lui a5,0x8000 + 3bc095bc: 80b70713 addi a4,a4,-2037 # c06080b + 3bc095c0: c398 sw a4,0(a5) + 3bc095c2: 070d1737 lui a4,0x70d1 + 3bc095c6: 90470713 addi a4,a4,-1788 # 70d0904 + 3bc095ca: c3d8 sw a4,4(a5) + 3bc095cc: 6741 lui a4,0x10 + 3bc095ce: 50270713 addi a4,a4,1282 # 10502 <__BSS_SIZE__+0xa8f2> + 3bc095d2: c798 sw a4,8(a5) + 3bc095d4: 110a1737 lui a4,0x110a1 + 3bc095d8: e0370713 addi a4,a4,-509 # 110a0e03 + 3bc095dc: c7d8 sw a4,12(a5) + 3bc095de: 0f141737 lui a4,0xf141 + 3bc095e2: 61070713 addi a4,a4,1552 # f141610 + 3bc095e6: cb98 sw a4,16(a5) + 3bc095e8: 00151737 lui a4,0x151 + 3bc095ec: 31270713 addi a4,a4,786 # 151312 <__BSS_SIZE__+0x14b702> + 3bc095f0: cbd8 sw a4,20(a5) + 3bc095f2: 0007ac23 sw zero,24(a5) # 8000018 + 3bc095f6: 10000713 li a4,256 + 3bc095fa: cfd8 sw a4,28(a5) + 3bc095fc: 71840737 lui a4,0x71840 + 3bc09600: 53270713 addi a4,a4,1330 # 71840532 <__BL2_END__+0x35c2d122> + 3bc09604: d398 sw a4,32(a5) + 3bc09606: 4719 li a4,6 + 3bc09608: d3d8 sw a4,36(a5) + 3bc0960a: 76103737 lui a4,0x76103 + 3bc0960e: 42570713 addi a4,a4,1061 # 76103425 <__BL2_END__+0x3a4f0015> + 3bc09612: d798 sw a4,40(a5) + 3bc09614: 4721 li a4,8 + 3bc09616: b5f9 j 3bc094e4 + 3bc09618: 080b1737 lui a4,0x80b1 + 3bc0961c: 080007b7 lui a5,0x8000 + 3bc09620: d0670713 addi a4,a4,-762 # 80b0d06 + 3bc09624: c398 sw a4,0(a5) + 3bc09626: 09010737 lui a4,0x9010 + 3bc0962a: 40770713 addi a4,a4,1031 # 9010407 + 3bc0962e: c3d8 sw a4,4(a5) + 3bc09630: 14050737 lui a4,0x14050 + 3bc09634: 20c70713 addi a4,a4,524 # 1405020c + 3bc09638: c798 sw a4,8(a5) + 3bc0963a: 15001737 lui a4,0x15001 + 3bc0963e: e0370713 addi a4,a4,-509 # 15000e03 + 3bc09642: c7d8 sw a4,12(a5) + 3bc09644: 0a0f1737 lui a4,0xa0f1 + 3bc09648: 21370713 addi a4,a4,531 # a0f1213 + 3bc0964c: cb98 sw a4,16(a5) + 3bc0964e: 00111737 lui a4,0x111 + 3bc09652: 0759 addi a4,a4,22 + 3bc09654: cbd8 sw a4,20(a5) + 3bc09656: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0965a: 10000713 li a4,256 + 3bc0965e: cfd8 sw a4,28(a5) + 3bc09660: 82135737 lui a4,0x82135 + 3bc09664: 76470713 addi a4,a4,1892 # ffffffff82135764 <__BL2_END__+0xffffffff46522354> + 3bc09668: d398 sw a4,32(a5) + 3bc0966a: 67513737 lui a4,0x67513 + 3bc0966e: 0207a223 sw zero,36(a5) + 3bc09672: 20870713 addi a4,a4,520 # 67513208 <__BL2_END__+0x2b8ffdf8> + 3bc09676: b5ad j 3bc094e0 + 3bc09678: 0b061737 lui a4,0xb061 + 3bc0967c: 080007b7 lui a5,0x8000 + 3bc09680: 90870713 addi a4,a4,-1784 # b060908 + 3bc09684: c398 sw a4,0(a5) + 3bc09686: 02000737 lui a4,0x2000 + 3bc0968a: 10770713 addi a4,a4,263 # 2000107 <__BSS_SIZE__+0x1ffa4f7> + 3bc0968e: c3d8 sw a4,4(a5) + 3bc09690: 0c050737 lui a4,0xc050 + 3bc09694: 40d70713 addi a4,a4,1037 # c05040d + 3bc09698: c798 sw a4,8(a5) + 3bc0969a: 13141737 lui a4,0x13141 + 3bc0969e: 50370713 addi a4,a4,1283 # 13141503 + 3bc096a2: c7d8 sw a4,12(a5) + 3bc096a4: 160a1737 lui a4,0x160a1 + 3bc096a8: 11270713 addi a4,a4,274 # 160a1112 + 3bc096ac: cb98 sw a4,16(a5) + 3bc096ae: 000f1737 lui a4,0xf1 + 3bc096b2: 0739 addi a4,a4,14 + 3bc096b4: cbd8 sw a4,20(a5) + 3bc096b6: 0007ac23 sw zero,24(a5) # 8000018 + 3bc096ba: 10000713 li a4,256 + 3bc096be: cfd8 sw a4,28(a5) + 3bc096c0: 28137737 lui a4,0x28137 + 3bc096c4: 56470713 addi a4,a4,1380 # 28137564 + 3bc096c8: d398 sw a4,32(a5) + 3bc096ca: 76158737 lui a4,0x76158 + 3bc096ce: 0207a223 sw zero,36(a5) + 3bc096d2: 32070713 addi a4,a4,800 # 76158320 <__BL2_END__+0x3a544f10> + 3bc096d6: b529 j 3bc094e0 + 3bc096d8: 08061737 lui a4,0x8061 + 3bc096dc: 080007b7 lui a5,0x8000 + 3bc096e0: b0970713 addi a4,a4,-1271 # 8060b09 + 3bc096e4: c398 sw a4,0(a5) + 3bc096e6: 02040737 lui a4,0x2040 + 3bc096ea: 70170713 addi a4,a4,1793 # 2040701 <__BSS_SIZE__+0x203aaf1> + 3bc096ee: c3d8 sw a4,4(a5) + 3bc096f0: 0c000737 lui a4,0xc000 + 3bc096f4: 50d70713 addi a4,a4,1293 # c00050d + 3bc096f8: c798 sw a4,8(a5) + 3bc096fa: 13150737 lui a4,0x13150 + 3bc096fe: 31470713 addi a4,a4,788 # 13150314 + 3bc09702: c7d8 sw a4,12(a5) + 3bc09704: 10111737 lui a4,0x10111 + 3bc09708: 21670713 addi a4,a4,534 # 10111216 + 3bc0970c: cb98 sw a4,16(a5) + 3bc0970e: 000f1737 lui a4,0xf1 + 3bc09712: a0e70713 addi a4,a4,-1522 # f0a0e <__BSS_SIZE__+0xeadfe> + 3bc09716: cbd8 sw a4,20(a5) + 3bc09718: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0971c: 10000713 li a4,256 + 3bc09720: cfd8 sw a4,28(a5) + 3bc09722: 82135737 lui a4,0x82135 + 3bc09726: 67470713 addi a4,a4,1652 # ffffffff82135674 <__BL2_END__+0xffffffff46522264> + 3bc0972a: d398 sw a4,32(a5) + 3bc0972c: 76153737 lui a4,0x76153 + 3bc09730: 0207a223 sw zero,36(a5) + 3bc09734: 28070713 addi a4,a4,640 # 76153280 <__BL2_END__+0x3a53fe70> + 3bc09738: b365 j 3bc094e0 + 3bc0973a: 070b1737 lui a4,0x70b1 + 3bc0973e: 080007b7 lui a5,0x8000 + 3bc09742: 90c70713 addi a4,a4,-1780 # 70b090c + 3bc09746: c398 sw a4,0(a5) + 3bc09748: 04050737 lui a4,0x4050 + 3bc0974c: 60870713 addi a4,a4,1544 # 4050608 <__BSS_SIZE__+0x404a9f8> + 3bc09750: c3d8 sw a4,4(a5) + 3bc09752: 0e020737 lui a4,0xe020 + 3bc09756: 30d70713 addi a4,a4,781 # e02030d + 3bc0975a: c798 sw a4,8(a5) + 3bc0975c: 110a0737 lui a4,0x110a0 + 3bc09760: 10070713 addi a4,a4,256 # 110a0100 + 3bc09764: c7d8 sw a4,12(a5) + 3bc09766: 0f131737 lui a4,0xf131 + 3bc0976a: 61470713 addi a4,a4,1556 # f131614 + 3bc0976e: cb98 sw a4,16(a5) + 3bc09770: 00151737 lui a4,0x151 + 3bc09774: 0749 addi a4,a4,18 + 3bc09776: cbd8 sw a4,20(a5) + 3bc09778: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0977c: 10000713 li a4,256 + 3bc09780: cfd8 sw a4,28(a5) + 3bc09782: 86014737 lui a4,0x86014 + 3bc09786: 53270713 addi a4,a4,1330 # ffffffff86014532 <__BL2_END__+0xffffffff4a401122> + 3bc0978a: d398 sw a4,32(a5) + 3bc0978c: 471d li a4,7 + 3bc0978e: d3d8 sw a4,36(a5) + 3bc09790: 76012737 lui a4,0x76012 + 3bc09794: 34570713 addi a4,a4,837 # 76012345 <__BL2_END__+0x3a3fef35> + 3bc09798: bdad j 3bc09612 + +000000003bc0979a : + 3bc0979a: 8082 ret + +000000003bc0979c : + 3bc0979c: 63746737 lui a4,0x63746 + 3bc097a0: 080047b7 lui a5,0x8004 + 3bc097a4: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32f61> + 3bc097a8: c7d8 sw a4,12(a5) + 3bc097aa: 14000737 lui a4,0x14000 + 3bc097ae: c3f8 sw a4,68(a5) + 3bc097b0: 470d li a4,3 + 3bc097b2: d7f8 sw a4,108(a5) + 3bc097b4: 979c06b7 lui a3,0x979c0 + 3bc097b8: 10078713 addi a4,a5,256 # 8004100 + 3bc097bc: c734 sw a3,72(a4) + 3bc097be: 810416b7 lui a3,0x81041 + 3bc097c2: 40068693 addi a3,a3,1024 # ffffffff81041400 <__BL2_END__+0xffffffff4542dff0> + 3bc097c6: c394 sw a3,0(a5) + 3bc097c8: 006a06b7 lui a3,0x6a0 + 3bc097cc: 0207a823 sw zero,48(a5) + 3bc097d0: 0685 addi a3,a3,1 + 3bc097d2: dbd4 sw a3,52(a5) + 3bc097d4: 000206b7 lui a3,0x20 + 3bc097d8: df94 sw a3,56(a5) + 3bc097da: 002016b7 lui a3,0x201 + 3bc097de: 07068693 addi a3,a3,112 # 201070 <__BSS_SIZE__+0x1fb460> + 3bc097e2: cbb4 sw a3,80(a5) + 3bc097e4: 005106b7 lui a3,0x510 + 3bc097e8: 0607a023 sw zero,96(a5) + 3bc097ec: 02c68693 addi a3,a3,44 # 51002c <__BSS_SIZE__+0x50a41c> + 3bc097f0: 6641 lui a2,0x10 + 3bc097f2: d3f4 sw a3,100(a5) + 3bc097f4: 04360613 addi a2,a2,67 # 10043 <__BSS_SIZE__+0xa433> + 3bc097f8: 08078693 addi a3,a5,128 + 3bc097fc: cab0 sw a2,80(a3) + 3bc097fe: 03730637 lui a2,0x3730 + 3bc09802: 0c07aa23 sw zero,212(a5) + 3bc09806: 04060613 addi a2,a2,64 # 3730040 <__BSS_SIZE__+0x372a430> + 3bc0980a: cef0 sw a2,92(a3) + 3bc0980c: 00800637 lui a2,0x800 + 3bc09810: d2b0 sw a2,96(a3) + 3bc09812: 0a0116b7 lui a3,0xa011 + 3bc09816: 61068693 addi a3,a3,1552 # a011610 + 3bc0981a: c314 sw a3,0(a4) + 3bc0981c: 000306b7 lui a3,0x30 + 3bc09820: 41468693 addi a3,a3,1044 # 30414 <__BSS_SIZE__+0x2a804> + 3bc09824: c354 sw a3,4(a4) + 3bc09826: 030406b7 lui a3,0x3040 + 3bc0982a: 40868693 addi a3,a3,1032 # 3040408 <__BSS_SIZE__+0x303a7f8> + 3bc0982e: c714 sw a3,8(a4) + 3bc09830: 668d lui a3,0x3 + 3bc09832: 0691 addi a3,a3,4 + 3bc09834: c754 sw a3,12(a4) + 3bc09836: 050206b7 lui a3,0x5020 + 3bc0983a: 40668693 addi a3,a3,1030 # 5020406 + 3bc0983e: cb14 sw a3,16(a4) + 3bc09840: 010106b7 lui a3,0x1010 + 3bc09844: 30368693 addi a3,a3,771 # 1010303 <__BSS_SIZE__+0x100a6f3> + 3bc09848: cb54 sw a3,20(a4) + 3bc0984a: 50300693 li a3,1283 + 3bc0984e: d314 sw a3,32(a4) + 3bc09850: 048586b7 lui a3,0x4858 + 3bc09854: 18078713 addi a4,a5,384 + 3bc09858: 30268693 addi a3,a3,770 # 4858302 + 3bc0985c: cb14 sw a3,16(a4) + 3bc0985e: 000706b7 lui a3,0x70 + 3bc09862: 10268693 addi a3,a3,258 # 70102 <__BSS_SIZE__+0x6a4f2> + 3bc09866: cb54 sw a3,20(a4) + 3bc09868: 07c136b7 lui a3,0x7c13 + 3bc0986c: 12168693 addi a3,a3,289 # 7c13121 + 3bc09870: cf14 sw a3,24(a4) + 3bc09872: 02100693 li a3,33 + 3bc09876: cf54 sw a3,28(a4) + 3bc09878: c04006b7 lui a3,0xc0400 + 3bc0987c: 06e1 addi a3,a3,24 + 3bc0987e: d314 sw a3,32(a4) + 3bc09880: 00fe06b7 lui a3,0xfe0 + 3bc09884: 0ff68693 addi a3,a3,255 # fe00ff <__BSS_SIZE__+0xfda4ef> + 3bc09888: d354 sw a3,36(a4) + 3bc0988a: 800006b7 lui a3,0x80000 + 3bc0988e: d714 sw a3,40(a4) + 3bc09890: 2c100693 li a3,705 + 3bc09894: db14 sw a3,48(a4) + 3bc09896: 4685 li a3,1 + 3bc09898: c334 sw a3,64(a4) + 3bc0989a: 6609 lui a2,0x2 + 3bc0989c: 001405b7 lui a1,0x140 + 3bc098a0: f1f60613 addi a2,a2,-225 # 1f1f <__BSS_SIZE__-0x3cf1> + 3bc098a4: c374 sw a3,68(a4) + 3bc098a6: 70758593 addi a1,a1,1799 # 140707 <__BSS_SIZE__+0x13aaf7> + 3bc098aa: 20078713 addi a4,a5,512 + 3bc098ae: c310 sw a2,0(a4) + 3bc098b0: c34c sw a1,4(a4) + 3bc098b2: 2007a423 sw zero,520(a5) + 3bc098b6: 1f0005b7 lui a1,0x1f000 + 3bc098ba: c74c sw a1,12(a4) + 3bc098bc: cb10 sw a2,16(a4) + 3bc098be: 050f0637 lui a2,0x50f0 + 3bc098c2: 50560613 addi a2,a2,1285 # 50f0505 + 3bc098c6: cb50 sw a2,20(a4) + 3bc098c8: 06060637 lui a2,0x6060 + 3bc098cc: 60560613 addi a2,a2,1541 # 6060605 + 3bc098d0: cf10 sw a2,24(a4) + 3bc098d2: 60600613 li a2,1542 + 3bc098d6: cf50 sw a2,28(a4) + 3bc098d8: 6611 lui a2,0x4 + 3bc098da: f3f60593 addi a1,a2,-193 # 3f3f <__BSS_SIZE__-0x1cd1> + 3bc098de: d30c sw a1,32(a4) + 3bc098e0: 050505b7 lui a1,0x5050 + 3bc098e4: 50558593 addi a1,a1,1285 # 5050505 + 3bc098e8: d34c sw a1,36(a4) + 3bc098ea: d70c sw a1,40(a4) + 3bc098ec: 001f25b7 lui a1,0x1f2 + 3bc098f0: f0558593 addi a1,a1,-251 # 1f1f05 <__BSS_SIZE__+0x1ec2f5> + 3bc098f4: d74c sw a1,44(a4) + 3bc098f6: 070105b7 lui a1,0x7010 + 3bc098fa: 70858593 addi a1,a1,1800 # 7010708 + 3bc098fe: c32c sw a1,64(a4) + 3bc09900: 2407a223 sw zero,580(a5) + 3bc09904: f8560613 addi a2,a2,-123 + 3bc09908: cb30 sw a2,80(a4) + 3bc0990a: 02000613 li a2,32 + 3bc0990e: cb70 sw a2,84(a4) + 3bc09910: 10000637 lui a2,0x10000 + 3bc09914: 0a860613 addi a2,a2,168 # 100000a8 + 3bc09918: cf70 sw a2,92(a4) + 3bc0991a: d370 sw a2,100(a4) + 3bc0991c: d770 sw a2,108(a4) + 3bc0991e: 3007a023 sw zero,768(a5) + 3bc09922: 3007a223 sw zero,772(a5) + 3bc09926: 3007a623 sw zero,780(a5) + 3bc0992a: 30078713 addi a4,a5,768 + 3bc0992e: d314 sw a3,32(a4) + 3bc09930: 3607a623 sw zero,876(a5) + 3bc09934: 40078713 addi a4,a5,1024 + 3bc09938: 4645 li a2,17 + 3bc0993a: c310 sw a2,0(a4) + 3bc0993c: 6619 lui a2,0x6 + 3bc0993e: c350 sw a2,4(a4) + 3bc09940: c710 sw a2,8(a4) + 3bc09942: 48078713 addi a4,a5,1152 + 3bc09946: cb14 sw a3,16(a4) + 3bc09948: 489d li a7,7 + 3bc0994a: 01172a23 sw a7,20(a4) # 14000014 + 3bc0994e: 06a00813 li a6,106 + 3bc09952: 6505 lui a0,0x1 + 3bc09954: 01072c23 sw a6,24(a4) + 3bc09958: e0750513 addi a0,a0,-505 # e07 <__BSS_SIZE__-0x4e09> + 3bc0995c: 01a805b7 lui a1,0x1a80 + 3bc09960: cf48 sw a0,28(a4) + 3bc09962: 1a858593 addi a1,a1,424 # 1a801a8 <__BSS_SIZE__+0x1a7a598> + 3bc09966: d30c sw a1,32(a4) + 3bc09968: db50 sw a2,52(a4) + 3bc0996a: df10 sw a2,56(a4) + 3bc0996c: 50078713 addi a4,a5,1280 + 3bc09970: c334 sw a3,64(a4) + 3bc09972: 05172223 sw a7,68(a4) + 3bc09976: 05072423 sw a6,72(a4) + 3bc0997a: c768 sw a0,76(a4) + 3bc0997c: cb2c sw a1,80(a4) + 3bc0997e: d370 sw a2,100(a4) + 3bc09980: d730 sw a2,104(a4) + 3bc09982: 58078713 addi a4,a5,1408 + 3bc09986: db34 sw a3,112(a4) + 3bc09988: 07172a23 sw a7,116(a4) + 3bc0998c: 07072c23 sw a6,120(a4) + 3bc09990: df68 sw a0,124(a4) + 3bc09992: 60078793 addi a5,a5,1536 + 3bc09996: c38c sw a1,0(a5) + 3bc09998: 8082 ret + +000000003bc0999a : + 3bc0999a: 080047b7 lui a5,0x8004 + 3bc0999e: 4709 li a4,2 + 3bc099a0: db98 sw a4,48(a5) + 3bc099a2: 00400737 lui a4,0x400 + 3bc099a6: 0761 addi a4,a4,24 + 3bc099a8: 18078693 addi a3,a5,384 # 8004180 + 3bc099ac: d298 sw a4,32(a3) + 3bc099ae: 0800a737 lui a4,0x800a + 3bc099b2: 00072a23 sw zero,20(a4) # 800a014 + 3bc099b6: 63746737 lui a4,0x63746 + 3bc099ba: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32f61> + 3bc099be: c7d8 sw a4,12(a5) + 3bc099c0: 08000737 lui a4,0x8000 + 3bc099c4: c3f8 sw a4,68(a5) + 3bc099c6: 8082 ret + +000000003bc099c8 : + 3bc099c8: 080047b7 lui a5,0x8004 + 3bc099cc: c0400737 lui a4,0xc0400 + 3bc099d0: 0207a823 sw zero,48(a5) # 8004030 + 3bc099d4: 0761 addi a4,a4,24 + 3bc099d6: 1ae7a023 sw a4,416(a5) + 3bc099da: 6705 lui a4,0x1 + 3bc099dc: 177d addi a4,a4,-1 + 3bc099de: 0800a6b7 lui a3,0x800a + 3bc099e2: cad8 sw a4,20(a3) + 3bc099e4: 63746737 lui a4,0x63746 + 3bc099e8: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32f61> + 3bc099ec: c7d8 sw a4,12(a5) + 3bc099ee: 14000737 lui a4,0x14000 + 3bc099f2: c3f8 sw a4,68(a5) + 3bc099f4: 8082 ret + +000000003bc099f6 : + 3bc099f6: 080047b7 lui a5,0x8004 + 3bc099fa: 4398 lw a4,0(a5) + 3bc099fc: 0000a797 auipc a5,0xa + 3bc09a00: 9ee7aa23 sw a4,-1548(a5) # 3bc133f0 + 3bc09a04: 34c7368b extu a3,a4,13,12 + 3bc09a08: 4785 li a5,1 + 3bc09a0a: 9f95 subw a5,a5,a3 + 3bc09a0c: 40f557bb sraw a5,a0,a5 + 3bc09a10: 01e7571b srliw a4,a4,0x1e + 3bc09a14: 4689 li a3,2 + 3bc09a16: 40e6873b subw a4,a3,a4 + 3bc09a1a: 0ff7f793 andi a5,a5,255 + 3bc09a1e: 40e7d7bb sraw a5,a5,a4 + 3bc09a22: 0ff7f793 andi a5,a5,255 + 3bc09a26: ffb7861b addiw a2,a5,-5 + 3bc09a2a: 4711 li a4,4 + 3bc09a2c: 1ac76f63 bltu a4,a2,3bc09bea + 3bc09a30: 00002717 auipc a4,0x2 + 3bc09a34: 9f070713 addi a4,a4,-1552 # 3bc0b420 + 3bc09a38: 54c7478b lurw a5,a4,a2,2 + 3bc09a3c: 2781 sext.w a5,a5 + 3bc09a3e: 97ba add a5,a5,a4 + 3bc09a40: 8782 jr a5 + 3bc09a42: 00510737 lui a4,0x510 + 3bc09a46: 080047b7 lui a5,0x8004 + 3bc09a4a: 0765 addi a4,a4,25 + 3bc09a4c: d3f8 sw a4,100(a5) + 3bc09a4e: 0b011737 lui a4,0xb011 + 3bc09a52: 61070713 addi a4,a4,1552 # b011610 + 3bc09a56: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09a5a: 50200713 li a4,1282 + 3bc09a5e: 12e7a023 sw a4,288(a5) + 3bc09a62: 08004637 lui a2,0x8004 + 3bc09a66: 6709 lui a4,0x2 + 3bc09a68: 20060793 addi a5,a2,512 # 8004200 + 3bc09a6c: f1f70713 addi a4,a4,-225 # 1f1f <__BSS_SIZE__-0x3cf1> + 3bc09a70: 003f06b7 lui a3,0x3f0 + 3bc09a74: c398 sw a4,0(a5) + 3bc09a76: 60668693 addi a3,a3,1542 # 3f0606 <__BSS_SIZE__+0x3ea9f6> + 3bc09a7a: c3d4 sw a3,4(a5) + 3bc09a7c: 20062423 sw zero,520(a2) + 3bc09a80: 1f1f06b7 lui a3,0x1f1f0 + 3bc09a84: c7d4 sw a3,12(a5) + 3bc09a86: cb98 sw a4,16(a5) + 3bc09a88: 040f0737 lui a4,0x40f0 + 3bc09a8c: 40470713 addi a4,a4,1028 # 40f0404 <__BSS_SIZE__+0x40ea7f4> + 3bc09a90: cbd8 sw a4,20(a5) + 3bc09a92: 04040737 lui a4,0x4040 + 3bc09a96: 40470713 addi a4,a4,1028 # 4040404 <__BSS_SIZE__+0x403a7f4> + 3bc09a9a: cf98 sw a4,24(a5) + 3bc09a9c: 40400693 li a3,1028 + 3bc09aa0: cfd4 sw a3,28(a5) + 3bc09aa2: 6691 lui a3,0x4 + 3bc09aa4: f3f68693 addi a3,a3,-193 # 3f3f <__BSS_SIZE__-0x1cd1> + 3bc09aa8: d394 sw a3,32(a5) + 3bc09aaa: d3d8 sw a4,36(a5) + 3bc09aac: d798 sw a4,40(a5) + 3bc09aae: 001f2737 lui a4,0x1f2 + 3bc09ab2: f0470713 addi a4,a4,-252 # 1f1f04 <__BSS_SIZE__+0x1ec2f4> + 3bc09ab6: d7d8 sw a4,44(a5) + 3bc09ab8: a289 j 3bc09bfa + 3bc09aba: 00510737 lui a4,0x510 + 3bc09abe: 080047b7 lui a5,0x8004 + 3bc09ac2: 02c70713 addi a4,a4,44 # 51002c <__BSS_SIZE__+0x50a41c> + 3bc09ac6: d3f8 sw a4,100(a5) + 3bc09ac8: 0a011737 lui a4,0xa011 + 3bc09acc: 61070713 addi a4,a4,1552 # a011610 + 3bc09ad0: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09ad4: 50300713 li a4,1283 + 3bc09ad8: 12e7a023 sw a4,288(a5) + 3bc09adc: 08004637 lui a2,0x8004 + 3bc09ae0: 6709 lui a4,0x2 + 3bc09ae2: 20060793 addi a5,a2,512 # 8004200 + 3bc09ae6: f1f70713 addi a4,a4,-225 # 1f1f <__BSS_SIZE__-0x3cf1> + 3bc09aea: 003f06b7 lui a3,0x3f0 + 3bc09aee: c398 sw a4,0(a5) + 3bc09af0: 70768693 addi a3,a3,1799 # 3f0707 <__BSS_SIZE__+0x3eaaf7> + 3bc09af4: c3d4 sw a3,4(a5) + 3bc09af6: 20062423 sw zero,520(a2) + 3bc09afa: 1f0006b7 lui a3,0x1f000 + 3bc09afe: c7d4 sw a3,12(a5) + 3bc09b00: cb98 sw a4,16(a5) + 3bc09b02: 050f0737 lui a4,0x50f0 + 3bc09b06: 50570713 addi a4,a4,1285 # 50f0505 + 3bc09b0a: cbd8 sw a4,20(a5) + 3bc09b0c: 05050737 lui a4,0x5050 + 3bc09b10: 50570713 addi a4,a4,1285 # 5050505 + 3bc09b14: cf98 sw a4,24(a5) + 3bc09b16: 50500693 li a3,1285 + 3bc09b1a: cfd4 sw a3,28(a5) + 3bc09b1c: 6691 lui a3,0x4 + 3bc09b1e: f3f68693 addi a3,a3,-193 # 3f3f <__BSS_SIZE__-0x1cd1> + 3bc09b22: d394 sw a3,32(a5) + 3bc09b24: d3d8 sw a4,36(a5) + 3bc09b26: d798 sw a4,40(a5) + 3bc09b28: 001f2737 lui a4,0x1f2 + 3bc09b2c: f0570713 addi a4,a4,-251 # 1f1f05 <__BSS_SIZE__+0x1ec2f5> + 3bc09b30: b759 j 3bc09ab6 + 3bc09b32: 00510737 lui a4,0x510 + 3bc09b36: 080047b7 lui a5,0x8004 + 3bc09b3a: 02b70713 addi a4,a4,43 # 51002b <__BSS_SIZE__+0x50a41b> + 3bc09b3e: d3f8 sw a4,100(a5) + 3bc09b40: 0b0f1737 lui a4,0xb0f1 + 3bc09b44: 61070713 addi a4,a4,1552 # b0f1610 + 3bc09b48: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09b4c: 50300713 li a4,1283 + 3bc09b50: 12e7a023 sw a4,288(a5) + 3bc09b54: 08004637 lui a2,0x8004 + 3bc09b58: 6709 lui a4,0x2 + 3bc09b5a: 20060793 addi a5,a2,512 # 8004200 + 3bc09b5e: f1f70713 addi a4,a4,-225 # 1f1f <__BSS_SIZE__-0x3cf1> + 3bc09b62: 000706b7 lui a3,0x70 + 3bc09b66: c398 sw a4,0(a5) + 3bc09b68: 70768693 addi a3,a3,1799 # 70707 <__BSS_SIZE__+0x6aaf7> + 3bc09b6c: c3d4 sw a3,4(a5) + 3bc09b6e: 20062423 sw zero,520(a2) + 3bc09b72: 1f0006b7 lui a3,0x1f000 + 3bc09b76: c7d4 sw a3,12(a5) + 3bc09b78: cb98 sw a4,16(a5) + 3bc09b7a: 060f0737 lui a4,0x60f0 + 3bc09b7e: 60670713 addi a4,a4,1542 # 60f0606 + 3bc09b82: cbd8 sw a4,20(a5) + 3bc09b84: 06060737 lui a4,0x6060 + 3bc09b88: 60670713 addi a4,a4,1542 # 6060606 + 3bc09b8c: cf98 sw a4,24(a5) + 3bc09b8e: 60600693 li a3,1542 + 3bc09b92: cfd4 sw a3,28(a5) + 3bc09b94: 6691 lui a3,0x4 + 3bc09b96: f3f68693 addi a3,a3,-193 # 3f3f <__BSS_SIZE__-0x1cd1> + 3bc09b9a: d394 sw a3,32(a5) + 3bc09b9c: d3d8 sw a4,36(a5) + 3bc09b9e: d798 sw a4,40(a5) + 3bc09ba0: 001f2737 lui a4,0x1f2 + 3bc09ba4: f0670713 addi a4,a4,-250 # 1f1f06 <__BSS_SIZE__+0x1ec2f6> + 3bc09ba8: b739 j 3bc09ab6 + 3bc09baa: 00510737 lui a4,0x510 + 3bc09bae: 080047b7 lui a5,0x8004 + 3bc09bb2: 04170713 addi a4,a4,65 # 510041 <__BSS_SIZE__+0x50a431> + 3bc09bb6: d3f8 sw a4,100(a5) + 3bc09bb8: 0b0f1737 lui a4,0xb0f1 + 3bc09bbc: 61070713 addi a4,a4,1552 # b0f1610 + 3bc09bc0: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09bc4: 50400713 li a4,1284 + 3bc09bc8: b761 j 3bc09b50 + 3bc09bca: 00510737 lui a4,0x510 + 3bc09bce: 080047b7 lui a5,0x8004 + 3bc09bd2: 06e70713 addi a4,a4,110 # 51006e <__BSS_SIZE__+0x50a45e> + 3bc09bd6: d3f8 sw a4,100(a5) + 3bc09bd8: 0b0f1737 lui a4,0xb0f1 + 3bc09bdc: 61070713 addi a4,a4,1552 # b0f1610 + 3bc09be0: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09be4: 50500713 li a4,1285 + 3bc09be8: b7a5 j 3bc09b50 + 3bc09bea: 4719 li a4,6 + 3bc09bec: eee788e3 beq a5,a4,3bc09adc + 3bc09bf0: 00f74c63 blt a4,a5,3bc09c08 + 3bc09bf4: 4715 li a4,5 + 3bc09bf6: e6e786e3 beq a5,a4,3bc09a62 + 3bc09bfa: 080047b7 lui a5,0x8004 + 3bc09bfe: 4709 li a4,2 + 3bc09c00: d3b8 sw a4,96(a5) + 3bc09c02: 0607a023 sw zero,96(a5) # 8004060 + 3bc09c06: 8082 ret + 3bc09c08: 37e5 addiw a5,a5,-7 + 3bc09c0a: 4709 li a4,2 + 3bc09c0c: fef767e3 bltu a4,a5,3bc09bfa + 3bc09c10: b791 j 3bc09b54 + +000000003bc09c12 : + 3bc09c12: 03020737 lui a4,0x3020 + 3bc09c16: 080007b7 lui a5,0x8000 + 3bc09c1a: 10070713 addi a4,a4,256 # 3020100 <__BSS_SIZE__+0x301a4f0> + 3bc09c1e: c398 sw a4,0(a5) + 3bc09c20: 07060737 lui a4,0x7060 + 3bc09c24: 50470713 addi a4,a4,1284 # 7060504 + 3bc09c28: c3d8 sw a4,4(a5) + 3bc09c2a: 0b0a1737 lui a4,0xb0a1 + 3bc09c2e: 90870713 addi a4,a4,-1784 # b0a0908 + 3bc09c32: c798 sw a4,8(a5) + 3bc09c34: 0f0e1737 lui a4,0xf0e1 + 3bc09c38: d0c70713 addi a4,a4,-756 # f0e0d0c + 3bc09c3c: c7d8 sw a4,12(a5) + 3bc09c3e: 13121737 lui a4,0x13121 + 3bc09c42: 11070713 addi a4,a4,272 # 13121110 + 3bc09c46: cb98 sw a4,16(a5) + 3bc09c48: 00161737 lui a4,0x161 + 3bc09c4c: 51470713 addi a4,a4,1300 # 161514 <__BSS_SIZE__+0x15b904> + 3bc09c50: cbd8 sw a4,20(a5) + 3bc09c52: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09c56: 10000593 li a1,256 + 3bc09c5a: 76543737 lui a4,0x76543 + 3bc09c5e: cfcc sw a1,28(a5) + 3bc09c60: 21070713 addi a4,a4,528 # 76543210 <__BL2_END__+0x3a92fe00> + 3bc09c64: d398 sw a4,32(a5) + 3bc09c66: 46a1 li a3,8 + 3bc09c68: d3d4 sw a3,36(a5) + 3bc09c6a: d798 sw a4,40(a5) + 3bc09c6c: d7d4 sw a3,44(a5) + 3bc09c6e: 007f0737 lui a4,0x7f0 + 3bc09c72: 0407a023 sw zero,64(a5) + 3bc09c76: 0735 addi a4,a4,13 + 3bc09c78: c3f8 sw a4,68(a5) + 3bc09c7a: 0407a423 sw zero,72(a5) + 3bc09c7e: 4741 li a4,16 + 3bc09c80: c7f8 sw a4,76(a5) + 3bc09c82: 4611 li a2,4 + 3bc09c84: 0c001737 lui a4,0xc001 + 3bc09c88: cbb0 sw a2,80(a5) + 3bc09c8a: b0070713 addi a4,a4,-1280 # c000b00 + 3bc09c8e: cbf8 sw a4,84(a5) + 3bc09c90: 09160737 lui a4,0x9160 + 3bc09c94: 04f70713 addi a4,a4,79 # 916004f + 3bc09c98: cfb8 sw a4,88(a5) + 3bc09c9a: 040008b7 lui a7,0x4000 + 3bc09c9e: 0407ae23 sw zero,92(a5) + 3bc09ca2: 37088713 addi a4,a7,880 # 4000370 <__BSS_SIZE__+0x3ffa760> + 3bc09ca6: d3b8 sw a4,96(a5) + 3bc09ca8: 0e001737 lui a4,0xe001 + 3bc09cac: 94070713 addi a4,a4,-1728 # e000940 + 3bc09cb0: d3f8 sw a4,100(a5) + 3bc09cb2: 00800737 lui a4,0x800 + 3bc09cb6: d7b8 sw a4,104(a5) + 3bc09cb8: 10800713 li a4,264 + 3bc09cbc: dbb8 sw a4,112(a5) + 3bc09cbe: 00072737 lui a4,0x72 + 3bc09cc2: dbf8 sw a4,116(a5) + 3bc09cc4: 1f00e6b7 lui a3,0x1f00e + 3bc09cc8: 08078713 addi a4,a5,128 + 3bc09ccc: c314 sw a3,0(a4) + 3bc09cce: 010916b7 lui a3,0x1091 + 3bc09cd2: 06bd addi a3,a3,15 + 3bc09cd4: c354 sw a3,4(a4) + 3bc09cd6: 0a0106b7 lui a3,0xa010 + 3bc09cda: 11468693 addi a3,a3,276 # a010114 + 3bc09cde: c714 sw a3,8(a4) + 3bc09ce0: aaaa06b7 lui a3,0xaaaa0 + 3bc09ce4: 08f68693 addi a3,a3,143 # ffffffffaaaa008f <__BL2_END__+0xffffffff6ee8cc7f> + 3bc09ce8: c754 sw a3,12(a4) + 3bc09cea: 6691 lui a3,0x4 + 3bc09cec: 80068513 addi a0,a3,-2048 # 3800 <__BSS_SIZE__-0x2410> + 3bc09cf0: cb08 sw a0,16(a4) + 3bc09cf2: 6505 lui a0,0x1 + 3bc09cf4: 80150813 addi a6,a0,-2047 # 801 <__BSS_SIZE__-0x540f> + 3bc09cf8: 01072a23 sw a6,20(a4) # 72014 <__BSS_SIZE__+0x6c404> + 3bc09cfc: 07400837 lui a6,0x7400 + 3bc09d00: 54080813 addi a6,a6,1344 # 7400540 + 3bc09d04: 03072023 sw a6,32(a4) + 3bc09d08: 01420837 lui a6,0x1420 + 3bc09d0c: 50480813 addi a6,a6,1284 # 1420504 <__BSS_SIZE__+0x141a8f4> + 3bc09d10: 03072223 sw a6,36(a4) + 3bc09d14: 00550837 lui a6,0x550 + 3bc09d18: 0829 addi a6,a6,10 + 3bc09d1a: 03072423 sw a6,40(a4) + 3bc09d1e: 00554837 lui a6,0x554 + 3bc09d22: c5a80813 addi a6,a6,-934 # 553c5a <__BSS_SIZE__+0x54e04a> + 3bc09d26: 03072623 sw a6,44(a4) + 3bc09d2a: 00aaa837 lui a6,0xaaa + 3bc09d2e: 5c380813 addi a6,a6,1475 # aaa5c3 <__BSS_SIZE__+0xaa49b3> + 3bc09d32: 03072823 sw a6,48(a4) + 3bc09d36: 00aaf837 lui a6,0xaaf + 3bc09d3a: 0f080813 addi a6,a6,240 # aaf0f0 <__BSS_SIZE__+0xaa94e0> + 3bc09d3e: 03072a23 sw a6,52(a4) + 3bc09d42: 1e001837 lui a6,0x1e001 + 3bc09d46: f0f80813 addi a6,a6,-241 # 1e000f0f + 3bc09d4a: 03072c23 sw a6,56(a4) + 3bc09d4e: 00084837 lui a6,0x84 + 3bc09d52: e1380813 addi a6,a6,-493 # 83e13 <__BSS_SIZE__+0x7e203> + 3bc09d56: 03072e23 sw a6,60(a4) + 3bc09d5a: 00030837 lui a6,0x30 + 3bc09d5e: 0e07a823 sw zero,240(a5) + 3bc09d62: 03380813 addi a6,a6,51 # 30033 <__BSS_SIZE__+0x2a423> + 3bc09d66: 07072a23 sw a6,116(a4) + 3bc09d6a: 00210837 lui a6,0x210 + 3bc09d6e: 02c80813 addi a6,a6,44 # 21002c <__BSS_SIZE__+0x20a41c> + 3bc09d72: 07072c23 sw a6,120(a4) + 3bc09d76: 00370837 lui a6,0x370 + 3bc09d7a: 0859 addi a6,a6,22 + 3bc09d7c: 07072e23 sw a6,124(a4) + 3bc09d80: 10078713 addi a4,a5,256 + 3bc09d84: 01172023 sw a7,0(a4) + 3bc09d88: 1007a223 sw zero,260(a5) + 3bc09d8c: 1007a623 sw zero,268(a5) + 3bc09d90: 1007a823 sw zero,272(a5) + 3bc09d94: 1007aa23 sw zero,276(a5) + 3bc09d98: 681d lui a6,0x7 + 3bc09d9a: 1007ac23 sw zero,280(a5) + 3bc09d9e: a1080813 addi a6,a6,-1520 # 6a10 <__BSS_SIZE__+0xe00> + 3bc09da2: 01072e23 sw a6,28(a4) + 3bc09da6: 1207a023 sw zero,288(a5) + 3bc09daa: ef700813 li a6,-265 + 3bc09dae: 03072223 sw a6,36(a4) + 3bc09db2: 487d li a6,31 + 3bc09db4: 03072423 sw a6,40(a4) + 3bc09db8: 4805 li a6,1 + 3bc09dba: 03072623 sw a6,44(a4) + 3bc09dbe: 10100813 li a6,257 + 3bc09dc2: 03072823 sw a6,48(a4) + 3bc09dc6: db4c sw a1,52(a4) + 3bc09dc8: 48d1 li a7,20 + 3bc09dca: 03172c23 sw a7,56(a4) + 3bc09dce: 1407a023 sw zero,320(a5) + 3bc09dd2: 1407a223 sw zero,324(a5) + 3bc09dd6: 80850e13 addi t3,a0,-2040 + 3bc09dda: 05c72423 sw t3,72(a4) + 3bc09dde: 1407a623 sw zero,332(a5) + 3bc09de2: 4895 li a7,5 + 3bc09de4: 05172823 sw a7,80(a4) + 3bc09de8: 05072a23 sw a6,84(a4) + 3bc09dec: 1407ac23 sw zero,344(a5) + 3bc09df0: 00333837 lui a6,0x333 + 3bc09df4: 1407ae23 sw zero,348(a5) + 3bc09df8: 33180813 addi a6,a6,817 # 333331 <__BSS_SIZE__+0x32d721> + 3bc09dfc: 1607a223 sw zero,356(a5) + 3bc09e00: 07072423 sw a6,104(a4) + 3bc09e04: 1607a623 sw zero,364(a5) + 3bc09e08: 1607a823 sw zero,368(a5) + 3bc09e0c: db6c sw a1,116(a4) + 3bc09e0e: 000205b7 lui a1,0x20 + 3bc09e12: 18078713 addi a4,a5,384 + 3bc09e16: 05c1 addi a1,a1,16 + 3bc09e18: c30c sw a1,0(a4) + 3bc09e1a: 1807a223 sw zero,388(a5) + 3bc09e1e: 000505b7 lui a1,0x50 + 3bc09e22: 1807a423 sw zero,392(a5) + 3bc09e26: 40058593 addi a1,a1,1024 # 50400 <__BSS_SIZE__+0x4a7f0> + 3bc09e2a: c74c sw a1,12(a4) + 3bc09e2c: 000215b7 lui a1,0x21 + 3bc09e30: 20e58593 addi a1,a1,526 # 2120e <__BSS_SIZE__+0x1b5fe> + 3bc09e34: cb0c sw a1,16(a4) + 3bc09e36: 2007a023 sw zero,512(a5) + 3bc09e3a: 20078713 addi a4,a5,512 + 3bc09e3e: 44000593 li a1,1088 + 3bc09e42: c34c sw a1,4(a4) + 3bc09e44: 2007a423 sw zero,520(a5) + 3bc09e48: 2207a023 sw zero,544(a5) + 3bc09e4c: d34c sw a1,36(a4) + 3bc09e4e: 2207a423 sw zero,552(a5) + 3bc09e52: 4007a023 sw zero,1024(a5) + 3bc09e56: 4007a223 sw zero,1028(a5) + 3bc09e5a: 4007a423 sw zero,1032(a5) + 3bc09e5e: 4007a623 sw zero,1036(a5) + 3bc09e62: 001005b7 lui a1,0x100 + 3bc09e66: 40078713 addi a4,a5,1024 + 3bc09e6a: e4b7558b swd a1,a1,(a4),2,3 + 3bc09e6e: 4007ac23 sw zero,1048(a5) + 3bc09e72: 04068693 addi a3,a3,64 + 3bc09e76: cf54 sw a3,28(a4) + 3bc09e78: 000416b7 lui a3,0x41 + 3bc09e7c: 50078713 addi a4,a5,1280 + 3bc09e80: 0685 addi a3,a3,1 + 3bc09e82: e0b7568b swd a3,a1,(a4),0,3 + 3bc09e86: 5007a423 sw zero,1288(a5) + 3bc09e8a: 5007a623 sw zero,1292(a5) + 3bc09e8e: cb10 sw a2,16(a4) + 3bc09e90: 5007aa23 sw zero,1300(a5) + 3bc09e94: 5007ac23 sw zero,1304(a5) + 3bc09e98: 5007ae23 sw zero,1308(a5) + 3bc09e9c: 480d li a6,3 + 3bc09e9e: 03072023 sw a6,32(a4) + 3bc09ea2: c334 sw a3,64(a4) + 3bc09ea4: c36c sw a1,68(a4) + 3bc09ea6: 5407a423 sw zero,1352(a5) + 3bc09eaa: 5407a623 sw zero,1356(a5) + 3bc09eae: cb30 sw a2,80(a4) + 3bc09eb0: 5407aa23 sw zero,1364(a5) + 3bc09eb4: 5407ac23 sw zero,1368(a5) + 3bc09eb8: 5407ae23 sw zero,1372(a5) + 3bc09ebc: 07072023 sw a6,96(a4) + 3bc09ec0: 08001737 lui a4,0x8001 + 3bc09ec4: 90070793 addi a5,a4,-1792 # 8000900 + 3bc09ec8: 40000693 li a3,1024 + 3bc09ecc: c394 sw a3,0(a5) + 3bc09ece: d7d4 sw a3,44(a5) + 3bc09ed0: db94 sw a3,48(a5) + 3bc09ed2: dbd4 sw a3,52(a5) + 3bc09ed4: df94 sw a3,56(a5) + 3bc09ed6: 94072023 sw zero,-1728(a4) + 3bc09eda: 96072823 sw zero,-1680(a4) + 3bc09ede: 96072a23 sw zero,-1676(a4) + 3bc09ee2: 080806b7 lui a3,0x8080 + 3bc09ee6: 96072c23 sw zero,-1672(a4) + 3bc09eea: 40468693 addi a3,a3,1028 # 8080404 + 3bc09eee: 08081837 lui a6,0x8081 + 3bc09ef2: dff4 sw a3,124(a5) + 3bc09ef4: 80880813 addi a6,a6,-2040 # 8080808 + 3bc09ef8: 98070793 addi a5,a4,-1664 + 3bc09efc: 06400637 lui a2,0x6400 + 3bc09f00: 0107a023 sw a6,0(a5) + 3bc09f04: 64060613 addi a2,a2,1600 # 6400640 + 3bc09f08: a0070793 addi a5,a4,-1536 + 3bc09f0c: e0c7d60b swd a2,a2,(a5),0,3 + 3bc09f10: e2c7d60b swd a2,a2,(a5),1,3 + 3bc09f14: 64000f93 li t6,1600 + 3bc09f18: 01f7a823 sw t6,16(a5) + 3bc09f1c: 0d000f37 lui t5,0xd000 + 3bc09f20: 0a001337 lui t1,0xa001 + 3bc09f24: 01e7aa23 sw t5,20(a5) + 3bc09f28: b0030313 addi t1,t1,-1280 # a000b00 + 3bc09f2c: 000408b7 lui a7,0x40 + 3bc09f30: 0067ac23 sw t1,24(a5) + 3bc09f34: 40088893 addi a7,a7,1024 # 40400 <__BSS_SIZE__+0x3a7f0> + 3bc09f38: 004006b7 lui a3,0x400 + 3bc09f3c: 04068693 addi a3,a3,64 # 400040 <__BSS_SIZE__+0x3fa430> + 3bc09f40: 0117ae23 sw a7,28(a5) + 3bc09f44: d394 sw a3,32(a5) + 3bc09f46: d3d4 sw a3,36(a5) + 3bc09f48: d794 sw a3,40(a5) + 3bc09f4a: d7d4 sw a3,44(a5) + 3bc09f4c: 04000e93 li t4,64 + 3bc09f50: 03d7a823 sw t4,48(a5) + 3bc09f54: a2072a23 sw zero,-1484(a4) + 3bc09f58: 03c7ac23 sw t3,56(a5) + 3bc09f5c: 0307ae23 sw a6,60(a5) + 3bc09f60: c3b0 sw a2,64(a5) + 3bc09f62: c3f0 sw a2,68(a5) + 3bc09f64: c7b0 sw a2,72(a5) + 3bc09f66: c7f0 sw a2,76(a5) + 3bc09f68: 05f7a823 sw t6,80(a5) + 3bc09f6c: 05e7aa23 sw t5,84(a5) + 3bc09f70: 0467ac23 sw t1,88(a5) + 3bc09f74: 0517ae23 sw a7,92(a5) + 3bc09f78: d3b4 sw a3,96(a5) + 3bc09f7a: d3f4 sw a3,100(a5) + 3bc09f7c: d7b4 sw a3,104(a5) + 3bc09f7e: d7f4 sw a3,108(a5) + 3bc09f80: 07d7a823 sw t4,112(a5) + 3bc09f84: a6072a23 sw zero,-1420(a4) + 3bc09f88: 07c7ac23 sw t3,120(a5) + 3bc09f8c: 0707ae23 sw a6,124(a5) + 3bc09f90: b0072023 sw zero,-1280(a4) + 3bc09f94: b0072223 sw zero,-1276(a4) + 3bc09f98: b0070793 addi a5,a4,-1280 + 3bc09f9c: 00404837 lui a6,0x404 + 3bc09fa0: 0107a423 sw a6,8(a5) + 3bc09fa4: 90050513 addi a0,a0,-1792 + 3bc09fa8: c7c8 sw a0,12(a5) + 3bc09faa: 000716b7 lui a3,0x71 + 3bc09fae: b0072823 sw zero,-1264(a4) + 3bc09fb2: e0e68693 addi a3,a3,-498 # 70e0e <__BSS_SIZE__+0x6b1fe> + 3bc09fb6: cbd4 sw a3,20(a5) + 3bc09fb8: b0072c23 sw zero,-1256(a4) + 3bc09fbc: b0072e23 sw zero,-1252(a4) + 3bc09fc0: 40400637 lui a2,0x40400 + 3bc09fc4: d390 sw a2,32(a5) + 3bc09fc6: 05c1 addi a1,a1,16 + 3bc09fc8: d3cc sw a1,36(a5) + 3bc09fca: b2072823 sw zero,-1232(a4) + 3bc09fce: b2072a23 sw zero,-1228(a4) + 3bc09fd2: 0307ac23 sw a6,56(a5) + 3bc09fd6: dfc8 sw a0,60(a5) + 3bc09fd8: b4072023 sw zero,-1216(a4) + 3bc09fdc: c3f4 sw a3,68(a5) + 3bc09fde: b4072423 sw zero,-1208(a4) + 3bc09fe2: b4072623 sw zero,-1204(a4) + 3bc09fe6: cbb0 sw a2,80(a5) + 3bc09fe8: cbec sw a1,84(a5) + 3bc09fea: 8082 ret + 3bc09fec: 0000 unimp + ... + +000000003bc09ff0 : + 3bc09ff0: 3032 3232 312d 2d32 3032 3254 3a31 3535 2022-12-20T21:55 + 3bc0a000: 333a 2b36 3830 303a 0030 0000 0000 0000 :36+08:00....... + +000000003bc0a010 : + 3bc0a010: 624a 3832 3967 673a 6536 3835 6565 0031 Jb28g9:g6e58ee1. + 3bc0a020: 3201 504f 4e45 4253 3a49 6e20 7865 5f74 .2OPENSBI: next_ + 3bc0a030: 6461 7264 303d 2578 786c 6120 6772 3d31 addr=0x%lx arg1= + 3bc0a040: 7830 6c25 0078 0000 7830 0000 63c6 ffff 0x%lx...0x...c.. + 3bc0a050: 636c ffff 636c ffff 636c ffff 636c ffff lc..lc..lc..lc.. + 3bc0a060: 63c6 ffff 636c ffff 636c ffff 647a ffff .c..lc..lc..zd.. + 3bc0a070: 636c ffff 636c ffff 636c ffff 6422 ffff lc..lc..lc.."d.. + 3bc0a080: 636c ffff 636c ffff 6402 ffff 636c ffff lc..lc...d..lc.. + 3bc0a090: 6480 ffff 636c ffff 636c ffff 6456 ffff .d..lc..lc..Vd.. + 3bc0a0a0: 636c ffff 6474 ffff 3001 4520 523a 5345 lc..td...0 E:RES + 3bc0a0b0: 5445 253a 3a73 6425 000a 0000 0000 0000 ET:%s:%d........ + 3bc0a0c0: 3001 4520 723a 3d61 7830 6c25 0a78 0000 .0 E:ra=0x%lx... + 3bc0a0d0: 6170 696e 0063 0000 3201 5352 2e43 000a panic....2RSC... + 3bc0a0e0: 3201 4c50 534c 0a2e 0000 0000 0000 0000 .2PLLS.......... + 3bc0a0f0: 3201 4c50 454c 0a2e 0000 0000 0000 0000 .2PLLE.......... + 3bc0a100: 3201 7355 2065 6e69 6574 6e72 6c61 3320 .2Use internal 3 + 3bc0a110: 6b32 000a 0000 0000 3201 7473 6f5f 5f6e 2k.......2st_on_ + 3bc0a120: 6572 7361 6e6f 253d 0a78 0000 0000 0000 reason=%x....... + 3bc0a130: 3201 7473 6f5f 6666 725f 6165 6f73 3d6e .2st_off_reason= + 3bc0a140: 7825 000a 0000 0000 0000 249f 1746 245d %x.........$F.]$ + 3bc0a150: 1746 245d aaab 24aa 8201 0012 8101 0018 F.]$...$........ + 3bc0a160: 8201 0030 8101 0016 c906 a55a 0024 0000 ..0.......Z.$... + +000000003bc0a170 : + 3bc0a170: 3130 3332 3534 3736 3938 6261 6463 6665 0123456789abcdef + 3bc0a180: 6867 6a69 6c6b 6e6d 706f 7271 7473 7675 ghijklmnopqrstuv + 3bc0a190: 7877 7a79 0000 0000 0101 0101 0101 0101 wxyz............ + 3bc0a1a0: 3301 4920 4c3a 4549 252f 2f64 7025 302f .3 I:LIE/%d/%p/0 + 3bc0a1b0: 2578 2f78 6c25 2e75 000a 0000 0000 0000 x%x/%lu......... + 3bc0a1c0: 3201 3250 2f53 7830 6c25 2f78 7025 0a2e .2P2S/0x%lx/%p.. + ... + 3bc0a1d8: 3101 5720 4c3a 3250 4e5f 4d4f 4741 4349 .1 W:LP2_NOMAGIC + 3bc0a1e8: 000a 0000 0000 0000 3001 4520 703a 7261 .........0 E:par + 3bc0a1f8: 6d61 5f32 6b63 7573 206d 3028 2578 2f78 am2_cksum (0x%x/ + 3bc0a208: 7830 7825 0a29 0000 3201 3250 2e45 000a 0x%x)....2P2E... + 3bc0a218: 3201 5044 2f53 7830 7825 302f 2578 2e78 .2DPS/0x%x/0x%x. + 3bc0a228: 000a 0000 0000 0000 3001 4520 643a 7264 .........0 E:ddr + 3bc0a238: 705f 7261 6d61 635f 736b 6d75 2820 7830 _param_cksum (0x + 3bc0a248: 7825 302f 2578 2978 000a 0000 0000 0000 %x/0x%x)........ + 3bc0a258: 3201 5044 2e45 000a 3101 5720 443a 204c .2DPE....1 W:DL + 3bc0a268: 6163 636e 6c65 656c 2e64 4c20 616f 2064 cancelled. Load + 3bc0a278: 6c66 7361 2e68 2820 6425 2e29 000a 0000 flash. (%d)..... + 3bc0a288: 3001 4520 463a 6961 656c 2064 6f74 6c20 .0 E:Failed to l + 3bc0a298: 616f 2064 4444 2052 6170 6172 206d 2528 oad DDR param (% + 3bc0a2a8: 2964 0a2e 0000 0000 3201 3243 2f53 7830 d).......2C2S/0x + 3bc0a2b8: 7825 302f 2578 2f78 7830 7825 0a2e 0000 %x/0x%x/0x%x.... + 3bc0a2c8: 3201 6f4e 4320 3039 4c36 6920 616d 6567 .2No C906L image + 3bc0a2d8: 0a2e 0000 0000 0000 3001 4520 623a 636c .........0 E:blc + 3bc0a2e8: 5f70 6e32 5f64 7572 616e 6464 2072 3028 p_2nd_runaddr (0 + 3bc0a2f8: 2578 2978 6920 2073 6f6e 2074 6e69 4420 x%x) is not in D + 3bc0a308: 4152 2e4d 000a 0000 3001 4520 623a 636c RAM......0 E:blc + 3bc0a318: 5f70 6e32 5f64 6973 657a 2820 7830 7825 p_2nd_size (0x%x + 3bc0a328: 2029 7369 6e20 746f 6920 206e 5244 4d41 ) is not in DRAM + 3bc0a338: 0a2e 0000 0000 0000 3001 4520 623a 636c .........0 E:blc + 3bc0a348: 5f70 6e32 5f64 6b63 7573 206d 3028 2578 p_2nd_cksum (0x% + 3bc0a358: 2f78 7830 7825 0a29 0000 0000 0000 0000 x/0x%x)......... + 3bc0a368: 3001 4520 763a 7265 6669 2079 6c62 7063 .0 E:verify blcp + 3bc0a378: 3220 646e 2820 6425 0a29 0000 0000 0000 2nd (%d)....... + 3bc0a388: 3201 3243 2e45 000a 3201 534d 302f 2578 .2C2E....2MS/0x% + 3bc0a398: 2f78 7830 7825 302f 2578 2e78 000a 0000 x/0x%x/0x%x..... + 3bc0a3a8: 3201 6f4e 6d20 6e6f 7469 726f 0a2e 0000 .2No monitor.... + 3bc0a3b8: 3001 4520 6d3a 6e6f 7469 726f 725f 6e75 .0 E:monitor_run + 3bc0a3c8: 6461 7264 2820 7830 7825 2029 7369 6e20 addr (0x%x) is n + 3bc0a3d8: 746f 6920 206e 5244 4d41 0a2e 0000 0000 ot in DRAM...... + 3bc0a3e8: 3001 4520 6d3a 6e6f 7469 726f 735f 7a69 .0 E:monitor_siz + 3bc0a3f8: 2065 3028 2578 2978 6920 2073 6f6e 2074 e (0x%x) is not + 3bc0a408: 6e69 4420 4152 2e4d 000a 0000 0000 0000 in DRAM......... + 3bc0a418: 3001 4520 6d3a 6e6f 7469 726f 635f 736b .0 E:monitor_cks + 3bc0a428: 6d75 2820 7830 7825 302f 2578 2978 000a um (0x%x/0x%x).. + 3bc0a438: 3001 4520 763a 7265 6669 2079 6f6d 696e .0 E:verify moni + 3bc0a448: 6f74 2072 2528 2964 000a 0000 0000 0000 tor (%d)........ + 3bc0a458: 3201 454d 0a2e 0000 3201 324c 302f 2578 .2ME.....2L2/0x% + 3bc0a468: 2e78 000a 0000 0000 3201 324c 302f 2578 x........2L2/0x% + 3bc0a478: 2f78 7830 7825 302f 2578 786c 302f 2578 x/0x%x/0x%lx/0x% + 3bc0a488: 2f78 7830 7825 000a 3201 4f43 504d 252f x/0x%x...2COMP/% + 3bc0a498: 2e64 000a 0000 0000 3001 4520 6c3a 616f d........0 E:loa + 3bc0a4a8: 6564 5f72 6e32 5f64 6b63 7573 206d 3028 der_2nd_cksum (0 + 3bc0a4b8: 2578 2f78 7830 7825 0a29 0000 0000 0000 x%x/0x%x)....... + 3bc0a4c8: 3001 4520 763a 7265 6669 2079 6f6c 6461 .0 E:verify load + 3bc0a4d8: 7265 3220 646e 2820 6425 0a29 0000 0000 er 2nd (%d)..... + 3bc0a4e8: 3001 4520 463a 6961 656c 2064 6f74 6420 .0 E:Failed to d + 3bc0a4f8: 6365 6d6f 7270 7365 2073 6f6c 6461 7265 ecompress loader + 3bc0a508: 325f 646e 2820 6425 252f 756c 0a29 0000 _2nd (%d/%lu)... + 3bc0a518: 3201 6f4c 6461 7265 325f 646e 6c20 616f .2Loader_2nd loa + 3bc0a528: 6564 2e64 000a 0000 3001 4520 463a 6961 ded......0 E:Fai + 3bc0a538: 656c 2064 6f74 6c20 616f 2064 6572 7473 led to load rest + 3bc0a548: 2820 6425 2e29 000a 3201 754a 706d 7420 (%d)....2Jump t + 3bc0a558: 206f 6f6d 696e 6f74 2072 7461 3020 2578 o monitor at 0x% + 3bc0a568: 786c 0a2e 0000 0000 3201 754a 706d 7420 lx.......2Jump t + 3bc0a578: 206f 6f6c 6461 7265 325f 646e 6120 2074 o loader_2nd at + 3bc0a588: 7830 6c25 2e78 000a 3201 460a 4253 204c 0x%lx....2.FSBL + 3bc0a598: 7325 253a 0a73 0000 3301 4920 733a 5f77 %s:%s....3 I:sw_ + 3bc0a5a8: 6e69 6f66 303d 2578 0a78 0000 0000 0000 info=0x%x....... + 3bc0a5b8: 3301 4920 663a 7069 705f 7261 6d61 3a31 .3 I:fip_param1: + 3bc0a5c8: 7020 7261 6d61 635f 736b 6d75 303d 2578 param_cksum=0x% + 3bc0a5d8: 2078 6170 6172 326d 6c5f 616f 6164 6464 x param2_loadadd + 3bc0a5e8: 3d72 7830 7825 000a 3301 4920 433a 5f50 r=0x%x...3 I:CP_ + 3bc0a5f8: 5453 5441 5f45 4552 3d47 7830 7825 000a STATE_REG=0x%x.. + 3bc0a608: 3201 4c42 2032 6e65 2e64 000a 0000 0000 .2BL2 end....... + 3bc0a618: 5643 444c 3230 000a 3001 4520 253a 2073 CVLD02...0 E:%s + 3bc0a628: 6163 276e 2074 6c61 6f6c 2063 6c25 2075 can't alloc %lu + 3bc0a638: 7962 6574 0a73 0000 3001 4520 253a 3a73 bytes....0 E:%s: + 3bc0a648: 6420 7473 735f 7a69 2065 7369 4e20 4c55 dst_size is NUL + 3bc0a658: 2e4c 000a 0000 0000 3301 4920 4c3a 4d5a L........3 I:LZM + 3bc0a668: 3141 252f 2f70 7025 0a2e 0000 0000 0000 A1/%p/%p........ + 3bc0a678: 3301 4920 4c3a 4d5a 3241 752f 636e 6d6f .3 I:LZMA2/uncom + 3bc0a688: 5f70 6973 657a 303d 2578 786c 000a 0000 p_size=0x%lx.... + 3bc0a698: 3001 4520 4c3a 6d7a 4461 6365 646f 2065 .0 E:LzmaDecode + 3bc0a6a8: 5245 4f52 3a52 2520 2064 7328 6174 7574 ERROR: %d (statu + 3bc0a6b8: 3d73 6425 0a29 0000 3301 4920 4c3a 4d5a s=%d)....3 I:LZM + 3bc0a6c8: 3941 302f 2578 786c 000a 0000 0000 0000 A9/0x%lx........ + 3bc0a6d8: 3301 4920 4c3a 345a 252f 2f70 7025 0a2e .3 I:LZ4/%p/%p.. + ... + 3bc0a6f0: 3001 4520 643a 7463 5378 6174 7574 3d73 .0 E:dctxStatus= + 3bc0a700: 6c25 0a75 0000 0000 3301 4920 643a 7473 %lu......3 I:dst + 3bc0a710: 735f 7a69 3d65 6c25 2075 7273 5f63 6973 _size=%lu src_si + 3bc0a720: 657a 253d 756c 7220 7465 253d 647a 000a ze=%lu ret=%zd.. + 3bc0a730: 3001 4520 4c3a 345a 5f46 6564 6f63 706d .0 E:LZ4F_decomp + 3bc0a740: 6572 7373 253d 756c 000a 0000 0000 0000 ress=%lu........ + 3bc0a750: 3201 4344 2f50 7025 302f 2578 786c 252f .2DCP/%p/0x%lx/% + 3bc0a760: 2f70 7830 6c25 2f78 6425 0a2e 0000 0000 p/0x%lx/%d...... + 3bc0a770: 3201 4344 2f50 7830 6c25 2f78 6425 0a2e .2DCP/0x%lx/%d.. + ... + +000000003bc0a788 <__func__.0>: + 3bc0a788: 7a53 6c41 6f6c 0063 SzAlloc. + +000000003bc0a790 <__func__.1>: + 3bc0a790: 6564 6f63 706d 6572 7373 6c5f 6d7a 0061 decompress_lzma. + 3bc0a7a0: 3301 4920 413a 7070 696c 6163 6974 6e6f .3 I:Application + 3bc0a7b0: 203a 7325 000a 0000 3301 4920 753a 6273 : %s.....3 I:usb + 3bc0a7c0: 2520 0a73 0000 0000 3201 5355 4242 002e %s......2USBB.. + 3bc0a7d0: 3301 4920 433a 4956 555f 4253 425f 4552 .3 I:CVI_USB_BRE + 3bc0a7e0: 4b41 000a 0000 0000 3201 5355 4b42 002e AK.......2USBK.. + 3bc0a7f0: 3301 4920 663a 616c 4567 746e 7265 4c44 .3 I:flagEnterDL + 3bc0a800: 2520 0a64 0000 0000 3301 4920 4d3a 4741 %d......3 I:MAG + 3bc0a810: 4349 4e20 4d55 4e20 544f 4d20 5441 4843 IC NUM NOT MATCH + 3bc0a820: 000a 0000 0000 0000 3201 5355 4b42 2e46 .........2USBKF. + ... + 3bc0a838: 3301 4920 493a 204f 6241 726f 2074 2121 .3 I:IO Abort !! + 3bc0a848: 2121 0a21 0000 0000 3301 4920 723a 6365 !!!......3 I:rec + 3bc0a858: 7069 6569 746e 7420 7261 6567 2074 6163 ipient target ca + 3bc0a868: 6e6e 746f 6220 2065 6e69 6574 6672 6361 nnot be interfac + 3bc0a878: 2165 000a 0000 0000 3201 5355 5042 302f e!.......2USBP/0 + 3bc0a888: 2578 2e78 0000 0000 3301 4920 663a 7374 x%x......3 I:fts + 3bc0a898: 5b6e 6425 205d 203d 7825 000a 0000 0000 n[%d] = %x...... + 3bc0a8a8: 3301 4920 633a 6372 7620 6c61 3d20 2520 .3 I:crc val = % + 3bc0a8b8: 0a78 0000 0000 0000 3301 4920 743a 2073 x........3 I:ts + 3bc0a8c8: 6176 206c 203d 7825 000a 0000 0000 0000 val = %x........ + 3bc0a8d8: 3201 5355 5342 252f 2e73 0000 0000 0000 .2USBS/%s....... + 3bc0a8e8: 3231 3433 3635 3837 4139 4342 0000 0000 123456789ABC.... + 3bc0a8f8: 7065 6931 2d6e 7562 6b6c 0000 0000 0000 ep1in-bulk...... + 3bc0a908: 7065 6f32 7475 622d 6c75 006b 0000 0000 ep2out-bulk..... + 3bc0a918: 7065 6933 2d6e 6e69 0074 0000 737e ffff ep3in-int...~s.. + 3bc0a928: 7550 ffff 73e4 ffff 7416 ffff 7416 ffff Pu...s...t...t.. + 3bc0a938: 753c ffff 7550 ffff 7416 ffff 7416 ffff : + 3bc0ab80: 6962 646e 0000 0000 bind.... + +000000003bc0ab88 <__func__.1>: + 3bc0ab88: 6e75 6962 646e 0000 unbind.. + +000000003bc0ab90 <__func__.4>: + 3bc0ab90: 6964 6373 6e6f 656e 7463 0000 0000 0000 disconnect...... + +000000003bc0aba0 <__func__.5>: + 3bc0aba0: 6572 6573 0074 0000 6177 6e72 6e69 2167 reset...warning! + 3bc0abb0: 6620 6572 2065 6e75 6966 696e 6873 6465 free unfinished + 3bc0abc0: 7220 7165 6575 7473 0a21 0000 0000 0000 request!....... + 3bc0abd0: 7325 203a 4820 4e41 2147 4120 4248 4920 %s: HANG! AHB I + 3bc0abe0: 6c64 2065 5247 4353 4c54 000a 0000 0000 dle GRSCTL...... + 3bc0abf0: 7325 203a 6974 656d 756f 2074 6c66 7375 %s: timeout flus + 3bc0ac00: 6968 676e 6620 6669 206f 4728 5352 4354 hing fifo (GRSTC + 3bc0ac10: 4c54 253d 3830 2978 000a 0000 0000 0000 TL=%08x)........ + 3bc0ac20: 7325 203a 6974 656d 756f 2074 6c66 7375 %s: timeout flus + 3bc0ac30: 6968 676e 6620 6669 736f 2820 7267 7473 hing fifos (grst + 3bc0ac40: 7463 206c 203d 7830 7825 0a29 0000 0000 ctl = 0x%x)..... + 3bc0ac50: 7325 203a 6163 6c6c 6620 726f 6520 3070 %s: call for ep0 + 3bc0ac60: 6f2d 7475 000a 0000 7325 203a 6974 656d -out....%s: time + 3bc0ac70: 756f 2074 4944 5045 4e49 2e54 414e 454b out DIEPINT.NAKE + 3bc0ac80: 4646 000a 0000 0000 7325 203a 6974 656d FF......%s: time + 3bc0ac90: 756f 2074 4947 544e 5453 2e53 4f47 5455 out GINTSTS.GOUT + 3bc0aca0: 414e 454b 4646 000a 7325 203a 6974 656d NAKEFF..%s: time + 3bc0acb0: 756f 2074 4f44 5045 5443 2e4c 5045 6944 out DOEPCTL.EPDi + 3bc0acc0: 6173 6c62 0a65 0000 7325 2928 4820 4e41 sable...%s() HAN + 3bc0acd0: 2147 5320 666f 2074 6552 6573 2074 5247 G! Soft Reset GR + 3bc0ace0: 5453 5443 3d4c 3025 0a78 0000 0000 0000 STCTL=%0x....... + 3bc0acf0: 7325 2928 4820 4e41 2147 5320 666f 2074 %s() HANG! Soft + 3bc0ad00: 2e34 2032 6552 6573 2074 5247 5453 5443 4.2 Reset GRSTCT + 3bc0ad10: 3d4c 3025 0a78 0000 7325 2928 4820 4e41 L=%0x...%s() HAN + 3bc0ad20: 2147 4120 4248 4920 6c64 2065 5247 5453 G! AHB Idle GRST + 3bc0ad30: 5443 3d4c 3025 0a78 0000 0000 0000 0000 CTL=%0x......... + 3bc0ad40: 6973 657a 6620 726f 6820 6e61 6c64 7265 size for handler + 3bc0ad50: 6920 2073 6f74 206f 6173 6c6d 206c 2528 is too samll (% + 3bc0ad60: 646c 202c 6425 0a29 0000 0000 0000 0000 ld, %d)......... + 3bc0ad70: 6f4e 6d20 6d65 726f 2079 7661 6961 616c No memory availa + 3bc0ad80: 6c62 2065 6f66 2072 4455 2143 000a 0000 ble for UDC!.... + +000000003bc0ad90 <__func__.0>: + 3bc0ad90: 7764 3263 655f 5f70 7473 706f 785f 6566 dwc2_ep_stop_xfe + 3bc0ada0: 0072 0000 0000 0000 r....... + +000000003bc0ada8 <__func__.1>: + 3bc0ada8: 645f 6377 5f32 7065 645f 7369 6261 656c _dwc2_ep_disable + ... + +000000003bc0adc0 <__func__.2>: + 3bc0adc0: 7764 3263 725f 6365 6e6f 6966 5f67 7375 dwc2_reconfig_us + 3bc0add0: 6462 0000 0000 0000 bd...... + +000000003bc0add8 <__func__.3>: + 3bc0add8: 7764 3263 685f 6f73 6774 745f 6678 6669 dwc2_hsotg_txfif + 3bc0ade8: 5f6f 6c66 7375 0068 o_flush. + +000000003bc0adf0 <__func__.4>: + 3bc0adf0: 7764 3263 685f 6f73 6774 695f 696e 5f74 dwc2_hsotg_init_ + 3bc0ae00: 6966 6f66 0000 0000 fifo.... + +000000003bc0ae08 : + 3bc0ae08: 7764 3263 752d 6364 0000 0000 0000 0000 dwc2-udc........ + +000000003bc0ae18 : + ... + 3bc0ae20: 2ab4 3bc0 0000 0000 0000 0000 0000 0000 .*.;............ + ... + 3bc0ae40: 279e 3bc0 0000 0000 0000 0000 0000 0000 .'.;............ + ... + +000000003bc0ae60 : + 3bc0ae60: 7065 2d30 6f63 746e 6f72 006c 0000 0000 ep0-control..... + +000000003bc0ae70 : + 3bc0ae70: 7065 6931 2d6e 7562 6b6c 0000 0000 0000 ep1in-bulk...... + +000000003bc0ae80 : + 3bc0ae80: 7065 6f32 7475 622d 6c75 006b 0000 0000 ep2out-bulk..... + +000000003bc0ae90 : + 3bc0ae90: 7065 6933 2d6e 6e69 0074 0000 0000 0000 ep3in-int....... + 3bc0aea0: 7263 2d71 623e 6572 7571 7365 3a74 7830 crq->brequest:0x + 3bc0aeb0: 7825 000a 8f90 ffff 906c ffff 91be ffff %x......l....... + 3bc0aec0: 9110 ffff 91be ffff 8f24 ffff 8f72 ffff ........$...r... + 3bc0aed0: 91be ffff 8f86 ffff 8f5a ffff 91be ffff ........Z....... + 3bc0aee0: 8f7c ffff 0000 0000 7572 206e 6574 7473 |.......run test + 3bc0aef0: 6d20 646f 2065 6425 000a 0000 0000 0000 mode %d........ + 3bc0af00: 3301 4920 553a 4253 4956 2f44 7825 0a2e .3 I:USBVID/%x.. + ... + +000000003bc0af18 : + 3bc0af18: 0000 1021 2042 3063 4084 50a5 60c6 70e7 ..!.B c0.@.P.`.p + 3bc0af28: 8108 9129 a14a b16b c18c d1ad e1ce f1ef ..).J.k......... + 3bc0af38: 1231 0210 3273 2252 52b5 4294 72f7 62d6 1...s2R".R.B.r.b + 3bc0af48: 9339 8318 b37b a35a d3bd c39c f3ff e3de 9...{.Z......... + 3bc0af58: 2462 3443 0420 1401 64e6 74c7 44a4 5485 b$C4 ....d.t.D.T + 3bc0af68: a56a b54b 8528 9509 e5ee f5cf c5ac d58d j.K.(........... + 3bc0af78: 3653 2672 1611 0630 76d7 66f6 5695 46b4 S6r&..0..v.f.V.F + 3bc0af88: b75b a77a 9719 8738 f7df e7fe d79d c7bc [.z...8......... + 3bc0af98: 48c4 58e5 6886 78a7 0840 1861 2802 3823 .H.X.h.x@.a..(#8 + 3bc0afa8: c9cc d9ed e98e f9af 8948 9969 a90a b92b ........H.i...+. + 3bc0afb8: 5af5 4ad4 7ab7 6a96 1a71 0a50 3a33 2a12 .Z.J.z.jq.P.3:.* + 3bc0afc8: dbfd cbdc fbbf eb9e 9b79 8b58 bb3b ab1a ........y.X.;... + 3bc0afd8: 6ca6 7c87 4ce4 5cc5 2c22 3c03 0c60 1c41 .l.|.L.\",.<`.A. + 3bc0afe8: edae fd8f cdec ddcd ad2a bd0b 8d68 9d49 ........*...h.I. + 3bc0aff8: 7e97 6eb6 5ed5 4ef4 3e13 2e32 1e51 0e70 .~.n.^.N.>2.Q.p. + 3bc0b008: ff9f efbe dfdd cffc bf1b af3a 9f59 8f78 ..........:.Y.x. + 3bc0b018: 9188 81a9 b1ca a1eb d10c c12d f14e e16f ..........-.N.o. + 3bc0b028: 1080 00a1 30c2 20e3 5004 4025 7046 6067 .....0. .P%@Fpg` + 3bc0b038: 83b9 9398 a3fb b3da c33d d31c e37f f35e ........=.....^. + 3bc0b048: 02b1 1290 22f3 32d2 4235 5214 6277 7256 .....".25B.RwbVr + 3bc0b058: b5ea a5cb 95a8 8589 f56e e54f d52c c50d ........n.O.,... + 3bc0b068: 34e2 24c3 14a0 0481 7466 6447 5424 4405 .4.$....ftGd$T.D + 3bc0b078: a7db b7fa 8799 97b8 e75f f77e c71d d73c ........_.~...<. + 3bc0b088: 26d3 36f2 0691 16b0 6657 7676 4615 5634 .&.6....Wfvv.F4V + 3bc0b098: d94c c96d f90e e92f 99c8 89e9 b98a a9ab L.m.../......... + 3bc0b0a8: 5844 4865 7806 6827 18c0 08e1 3882 28a3 DXeH.x'h.....8.( + 3bc0b0b8: cb7d db5c eb3f fb1e 8bf9 9bd8 abbb bb9a }.\.?........... + 3bc0b0c8: 4a75 5a54 6a37 7a16 0af1 1ad0 2ab3 3a92 uJTZ7j.z.....*.: + 3bc0b0d8: fd2e ed0f dd6c cd4d bdaa ad8b 9de8 8dc9 ....l.M......... + 3bc0b0e8: 7c26 6c07 5c64 4c45 3ca2 2c83 1ce0 0cc1 &|.ld\EL.<.,.... + 3bc0b0f8: ef1f ff3e cf5d df7c af9b bfba 8fd9 9ff8 ..>.].|......... + 3bc0b108: 6e17 7e36 4e55 5e74 2e93 3eb2 0ed1 1ef0 .n6~UNt^...>.... + 3bc0b118: c21c ffff c250 ffff c2be ffff c33a ffff ....P.......:... + 3bc0b128: c360 ffff c406 ffff c4b6 ffff c518 ffff `............... + 3bc0b138: c64c ffff c740 ffff c744 ffff c776 ffff L...@...D...v... + 3bc0b148: c7e6 ffff c806 ffff c860 ffff 0000 0000 ........`....... + +000000003bc0b158 : + 3bc0b158: 0000 0001 0000 0000 0000 0004 0000 0000 ................ + 3bc0b168: 0000 0010 0000 0000 0000 0040 0000 0000 ..........@..... + +000000003bc0b178 : + ... + 3bc0b184: ffff ffff fffc ffff 0001 0000 0002 0000 ................ + 3bc0b194: 0003 0000 .... + +000000003bc0b198 : + 3bc0b198: 0000 0000 0001 0000 0002 0000 0001 0000 ................ + 3bc0b1a8: 0000 0000 0004 0000 0004 0000 0004 0000 ................ + 3bc0b1b8: cb7e ffff cb5e ffff cb3e ffff c8fa ffff ~...^...>....... + 3bc0b1c8: c99c ffff ca4e ffff cb10 ffff c8cc ffff ....N........... + 3bc0b1d8: c96e ffff ca20 ffff cae2 ffff c89e ffff n... ........... + 3bc0b1e8: c940 ffff c9f2 ffff cab4 ffff 0000 0000 @............... + 3bc0b1f8: 3201 4444 2052 6e69 7469 0a2e 0000 0000 .2DDR init...... + 3bc0b208: 3201 6464 5f72 6170 6172 5b6d 5d30 303d .2ddr_param[0]=0 + 3bc0b218: 2578 2e78 000a 0000 3201 6b70 5f67 7974 x%x......2pkg_ty + 3bc0b228: 6570 253d 0a78 0000 3201 6e32 0a64 0000 pe=%x....22nd... + 3bc0b238: 3201 6e75 6e6b 776f 206e 6b70 5f67 7974 .2unknown pkg_ty + 3bc0b248: 6570 303d 2578 0a78 0000 0000 0000 0000 pe=0x%x......... + 3bc0b258: 3201 2544 5f78 7825 255f 0a78 0000 0000 .2D%x_%x_%x..... + 3bc0b268: 3201 4444 3252 0000 3201 4444 3352 0000 .2DDR2...2DDR3.. + 3bc0b278: 3201 6e75 6e6b 776f 206e 6576 646e 726f .2unknown vendor + 3bc0b288: 253d 0064 0000 0000 3201 352d 3231 004d =%d......2-512M. + 3bc0b298: 3201 312d 0047 0000 3201 322d 0047 0000 .2-1G....2-2G... + 3bc0b2a8: 3201 342d 0047 0000 3201 752d 6b6e 6f6e .2-4G....2-unkno + 3bc0b2b8: 6e77 6320 7061 6361 7469 3d79 6425 0000 wn capacity=%d.. + 3bc0b2c8: 3201 512d 4e46 3838 000a 0000 0000 0000 .2-QFN88........ + 3bc0b2d8: 3201 512d 4e46 3836 000a 0000 0000 0000 .2-QFN68........ + 3bc0b2e8: 3201 422d 4147 000a 3201 752d 6b6e 6f6e .2-BGA...2-unkno + 3bc0b2f8: 6e77 7020 676b 253d 0064 0000 cf3c ffff wn pkg=%d...<... + 3bc0b308: cfc2 ffff cf1a ffff cf2c ffff cf3c ffff ........,...<... + 3bc0b318: cfc2 ffff cfa4 ffff cfb4 ffff cfea ffff ................ + 3bc0b328: cfea ffff cfea ffff cfb0 ffff cfea ffff ................ + 3bc0b338: cfea ffff cfea ffff cfea ffff cfb0 ffff ................ + 3bc0b348: cfea ffff 0000 0000 3001 4520 453a 5252 .........0 E:ERR + 3bc0b358: 524f 6220 7369 5f74 6166 6c69 000a 0000 OR bist_fail.... + 3bc0b368: 3001 4520 623a 7369 5f74 6572 7573 746c .0 E:bist_result + 3bc0b378: 3d20 2520 2c78 6520 7272 645f 7461 5f61 = %x, err_data_ + 3bc0b388: 646f 2064 203d 6c25 2c78 6520 7272 645f odd = %lx, err_d + 3bc0b398: 7461 5f61 7665 6e65 3d20 2520 786c 000a ata_even = %lx.. + 3bc0b3a8: 3201 4444 2052 4942 5453 4620 4941 0a4c .2DDR BIST FAIL. + ... + 3bc0b3c0: 3201 4444 2052 4942 5453 5020 5341 0a53 .2DDR BIST PASS. + ... + 3bc0b3d8: fa02 401f fa02 801f 2c02 4010 2c02 8010 ...@.....,.@.,.. + 3bc0b3e8: 7a00 4000 7a00 8000 3a00 4000 3a00 8000 .z.@.z...:.@.:.. + 3bc0b3f8: e08c ffff e0f0 ffff e150 ffff e1bc ffff ........P....... + 3bc0b408: e280 ffff e220 ffff e1b6 ffff e1b6 ffff .... ........... + 3bc0b418: e342 ffff e2e0 ffff e622 ffff e69a ffff B......."....... + 3bc0b428: e712 ffff e78a ffff e7aa ffff ............ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2.elf b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2.elf new file mode 100755 index 000000000..f56ca9b99 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2.elf differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2.ld b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2.ld new file mode 100644 index 000000000..b7fbc239f --- /dev/null +++ b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2.ld @@ -0,0 +1,53 @@ +OUTPUT_FORMAT("elf64-littleriscv") +OUTPUT_ARCH(riscv) +ENTRY(bl2_entrypoint) +MEMORY { + RAM (rwx): ORIGIN = (0x3BC00000), LENGTH = (0x00019000) +} +SECTIONS +{ + . = (0x3BC00000); + ASSERT(. == ALIGN(4096), + "BL2_BASE address is not aligned on a page boundary.") + ro . : { + __RO_START__ = .; + *bl2_entrypoint.o(.text*) + *(.vectors) + *(.text*) + *(.rodata*) + __RO_END__ = .; + } >RAM + .data . : { + . = ALIGN(16); + __DATA_START__ = .; + *(.data*) + . = ALIGN(16); + __DATA_END__ = .; + } >RAM + stacks (NOLOAD) : { + . = ALIGN(64); + __STACKS_START__ = .; + . += 0x2000; + . = ALIGN(64); + __STACKS_END__ = .; + } >RAM + .bss : ALIGN(16) { + . = ALIGN(16); + __BSS_START__ = .; + *(SORT_BY_ALIGNMENT(.bss*)) + *(COMMON) + . = ALIGN(16); + __BSS_END__ = .; + } >RAM + __BL2_END__ = .; + __BSS_SIZE__ = SIZEOF(.bss); + ASSERT(. <= ((0x3BC00000) + (0x00019000)), "BL2 image has exceeded its limit.") +p_rom_api_cryptodma_aes_decrypt = 0x0000000004400100; +p_rom_api_flash_init = 0x0000000004400080; +p_rom_api_get_boot_src = 0x0000000004400020; +p_rom_api_get_number_of_retries = 0x00000000044000c0; +p_rom_api_image_crc = 0x00000000044000a0; +p_rom_api_load_image = 0x0000000004400060; +p_rom_api_set_boot_src = 0x0000000004400040; +p_rom_api_verify_rsa = 0x00000000044000e0; +} diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2.map b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2.map new file mode 100644 index 000000000..232380fd2 --- /dev/null +++ b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2.map @@ -0,0 +1,3413 @@ + +Discarded input sections + + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .text.cpu_report_exception + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .text.enable_cache + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o + .text.memcpy16 + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o + .text.zeromem 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o + .debug_info 0x0000000000000000 0x1ac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o + .debug_abbrev 0x0000000000000000 0xdd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o + .debug_loc 0x0000000000000000 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o + .debug_aranges + 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o + .debug_ranges 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o + .debug_line 0x0000000000000000 0x102 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o + .debug_str 0x0000000000000000 0x3a69 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o + .debug_frame 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .text.inv_dcache_range + 0x0000000000000000 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .text.clean_dcache_range + 0x0000000000000000 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .text.enable_dcache + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .text.disable_dcache + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .text.timer_init + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x186b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .text.console_init + 0x0000000000000000 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .text.console_puts + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .text.console_getc + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .text.uart_tstc + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .text.console_tstc + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .rodata.tf_print_buffer.str1.8 + 0x0000000000000000 0x2d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .text.tf_print_buffer + 0x0000000000000000 0x96 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .text.config_core_power + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .text.apply_analog_trimming_data + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .text.bytes_reverse + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .rodata.__assert.str1.8 + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .text.__assert + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .debug_info 0x0000000000000000 0x153 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .debug_abbrev 0x0000000000000000 0xa4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .debug_loc 0x0000000000000000 0x109 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x112 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .debug_line 0x0000000000000000 0x21b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .debug_str 0x0000000000000000 0x6f9a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .debug_frame 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .text.memcmp 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .text.memchr 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .text._memcpy 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o + .text.strchr 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o + .debug_info 0x0000000000000000 0xe4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o + .debug_abbrev 0x0000000000000000 0x7f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o + .debug_loc 0x0000000000000000 0x6f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o + .debug_line 0x0000000000000000 0x14e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o + .debug_str 0x0000000000000000 0x3a7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o + .text.strcasecmp + 0x0000000000000000 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o + .text.strncmp 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o + .debug_info 0x0000000000000000 0x105 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o + .debug_abbrev 0x0000000000000000 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o + .debug_loc 0x0000000000000000 0x15f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o + .debug_line 0x0000000000000000 0x13f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o + .debug_str 0x0000000000000000 0x3a39 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o + .text.strnlen 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o + .debug_info 0x0000000000000000 0x105 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o + .debug_abbrev 0x0000000000000000 0x9f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o + .debug_loc 0x0000000000000000 0xa3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o + .debug_line 0x0000000000000000 0x123 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o + .debug_str 0x0000000000000000 0x3a40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .text.is_usb_dl_enabled + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .rodata.print_sram_log.str1.8 + 0x0000000000000000 0x6d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .text.print_sram_log + 0x0000000000000000 0x86 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_ReadReg32 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_WriteReg32 + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedRead8 + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedRead16 + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedWrite8 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedWrite16 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_WritePhysAddress32 + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_BufferCopy + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_DelayNs + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.set_trigger_cnt + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dfu_usb_get_reset + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.otg_phy_init + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.otg_phy_off + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x517 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .text.crc16_pacing + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .text.crc16_ccitt_with_tag + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .text.LzmaDec_InitDicAndState + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .text.LzmaDec_DecodeToBuf + 0x0000000000000000 0xd6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .text.LzmaDec_Free + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .text.LzmaDec_Allocate + 0x0000000000000000 0xbc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_renormDictT + 0x0000000000000000 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4HC_rotatePattern + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4HC_setExternalDict + 0x0000000000000000 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4HC_reverseCountPattern + 0x0000000000000000 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4HC_countPattern + 0x0000000000000000 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4HC_init_internal + 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_extDict + 0x0000000000000000 0x2aa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4HC_compress_optimal + 0x0000000000000000 0x1d36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4HC_compress_generic_noDictCtx + 0x0000000000000000 0x1b68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4HC_compress_generic + 0x0000000000000000 0x211a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_makeBlock + 0x0000000000000000 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_versionNumber + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .rodata.LZ4_versionString.str1.8 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_versionString + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressBound + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofState + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast_extState_fastReset + 0x0000000000000000 0x1428 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_initStream + 0x0000000000000000 0x36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast_extState + 0x0000000000000000 0xd02 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_default + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_destSize + 0x0000000000000000 0x83c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_createStream + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_resetStream + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_resetStream_fast + 0x0000000000000000 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_freeStream + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_loadDict + 0x0000000000000000 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_attach_dictionary + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast_continue + 0x0000000000000000 0x1ca4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlock_continue + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_forceExtDict + 0x0000000000000000 0xa24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_saveDict + 0x0000000000000000 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe_partial + 0x0000000000000000 0x2a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast + 0x0000000000000000 0x1e6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_withPrefix64k + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_createStreamDecode + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_freeStreamDecode + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_setStreamDecode + 0x0000000000000000 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decoderRingBufferSize + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe_continue + 0x0000000000000000 0x3c6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_continue + 0x0000000000000000 0x316 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_usingDict + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput_withState + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_withState + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput_continue + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_continue + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_uncompress + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_uncompress_unknownOutputSize + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofStreamState + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_create + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_slideInputBuffer + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_createStreamHC + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_freeStreamHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_initStreamHC + 0x0000000000000000 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_setCompressionLevel + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_destSize + 0x0000000000000000 0x6a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamHC + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamHC_fast + 0x0000000000000000 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_extStateHC_fastReset + 0x0000000000000000 0x64 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_extStateHC + 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC + 0x0000000000000000 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_initStream + 0x0000000000000000 0x5a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlock + 0x0000000000000000 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_favorDecompressionSpeed + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_loadDictHC + 0x0000000000000000 0xd6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_continue_generic + 0x0000000000000000 0xf0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_attach_HC_dictionary + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_continue + 0x0000000000000000 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlockHC_continue + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlockHC + 0x0000000000000000 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_continue_destSize + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_saveDictHC + 0x0000000000000000 0x96 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_localSaveDict + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC + 0x0000000000000000 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2 + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_withStateHC + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput_withStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_withStateHC + 0x0000000000000000 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput_withStateHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_continue + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput_continue + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofStreamStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamStateHC + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_createHC + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_freeHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_continue + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput_continue + 0x0000000000000000 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_slideInputBufferHC + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .rodata.LZ4F_getErrorName.str1.8 + 0x0000000000000000 0x17 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_getErrorName + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_getErrorCode + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_getVersion + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressionLevel_max + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBound_internal + 0x0000000000000000 0x9c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressFrameBound + 0x0000000000000000 0x3e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_freeCDict + 0x0000000000000000 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_createCDict + 0x0000000000000000 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_createCompressionContext + 0x0000000000000000 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_freeCompressionContext + 0x0000000000000000 0x36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBegin_usingCDict + 0x0000000000000000 0x20c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBegin + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBound + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressUpdate + 0x0000000000000000 0x204 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_flush + 0x0000000000000000 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressEnd + 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressFrame_usingCDict + 0x0000000000000000 0x104 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressFrame + 0x0000000000000000 0x112 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_freeDecompressionContext + 0x0000000000000000 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_resetDecompressionContext + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_headerSize + 0x0000000000000000 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_getFrameInfo + 0x0000000000000000 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_decompress_usingDict + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .rodata.str1.8 + 0x0000000000000000 0x246 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .rodata.cst8 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .rodata.LZ4F_errorStrings + 0x0000000000000000 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .rodata.clTable.2 + 0x0000000000000000 0x9c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH64_mergeRound + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH64_avalanche + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH_read64 + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH64_finalize.constprop.0 + 0x0000000000000000 0x7be /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .rodata.XXH64_finalize.constprop.0 + 0x0000000000000000 0x7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH_versionNumber + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH32_createState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH32_freeState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH32_copyState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH32_canonicalFromHash + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH32_hashFromCanonical + 0x0000000000000000 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH64 0x0000000000000000 0x234 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH64_createState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH64_freeState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH64_copyState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH64_reset + 0x0000000000000000 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH64_update + 0x0000000000000000 0x1fa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH64_digest + 0x0000000000000000 0x8a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH64_canonicalFromHash + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH64_hashFromCanonical + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .rodata.cst8 0x0000000000000000 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .text.get_ddr_capacity + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .text.get_pkg 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .text.get_ddr_type + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .rodata.dump_axi_mon_reg.str1.8 + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .text.dump_axi_mon_reg + 0x0000000000000000 0x6c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.ddr_debug_num_write + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_sub_resume2 + 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddrc_suspend + 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_wrlvl_init + 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_synp_mrw + 0x0000000000000000 0x74 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_cal_phyd_hw + 0x0000000000000000 0x10a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_cal_phya_enautok + 0x0000000000000000 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ctrlupd_short + 0x0000000000000000 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_wrlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_rdglvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_rdlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_wdqlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_cal_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_zqcal_status + 0x0000000000000000 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zqcal_isr8 + 0x0000000000000000 0x2d4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zqcal_hw_isr8 + 0x0000000000000000 0x15e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_training_status + 0x0000000000000000 0x134 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_set_dq_vref + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_phya_pd + 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_phyd_save + 0x0000000000000000 0xae6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.ddr_sys_suspend + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_phyd_restore + 0x0000000000000000 0xaf4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_sub_resume3 + 0x0000000000000000 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_sw_upd + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_set_dq_trig_lvl + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_freq_change_ltoh + 0x0000000000000000 0x1ca /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_0_phase40 + 0x0000000000000000 0x16e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_0_external + 0x0000000000000000 0x1ce /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_1_dq_set_highlow + 0x0000000000000000 0x1b4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_2_mux_demux + 0x0000000000000000 0x19c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_3_ca_set_highlow + 0x0000000000000000 0x1e4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_4_ca_clk_pat + 0x0000000000000000 0x132 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.ddr_sys_resume + 0x0000000000000000 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_rdlvl_sw_req + 0x0000000000000000 0x3c0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_wdqlvl_sw_req + 0x0000000000000000 0x1ee /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_freq_change_htol + 0x0000000000000000 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_dfi_phyupd_req + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_sw_clr + 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_tx_shift_delay + 0x0000000000000000 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_rx_delay + 0x0000000000000000 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_rx_deskew_delay + 0x0000000000000000 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ca_shift_delay + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_cs_shift_delay + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_mask_shift_delay + 0x0000000000000000 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_reg_toggle + 0x0000000000000000 0x1514 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ana_test + 0x0000000000000000 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zq240 + 0x0000000000000000 0x1c4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zq240_ate + 0x0000000000000000 0x148 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zq240_cal + 0x0000000000000000 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .data.ddr_patch_regs + 0x0000000000000000 0x1c8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .data.ddr_patch_regs_count + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_info 0x0000000000000000 0x121 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_abbrev 0x0000000000000000 0xb5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_line 0x0000000000000000 0x160 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_str 0x0000000000000000 0x53f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_entrypoint.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_entrypoint.o + .bss 0x0000000000000000 0x1000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_entrypoint.o + .rodata 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_entrypoint.o + +Memory Configuration + +Name Origin Length Attributes +RAM 0x000000003bc00000 0x0000000000019000 xrw +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + 0x000000003bc00000 . = 0x3bc00000 + 0x0000000000000001 ASSERT ((. == ALIGN (0x1000)), BL2_BASE address is not aligned on a page boundary.) + +ro 0x000000003bc00000 0xb434 + 0x000000003bc00000 __RO_START__ = . + *bl2_entrypoint.o(.text*) + .text.init 0x000000003bc00000 0x14c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_entrypoint.o + 0x000000003bc00000 bl2_entrypoint + *(.vectors) + *(.text*) + .text.sync_cache + 0x000000003bc0014c 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + 0x000000003bc0014c sync_cache + .text.flush_dcache_range + 0x000000003bc00156 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + 0x000000003bc00156 flush_dcache_range + .text.trig_simulation_timer + 0x000000003bc0017a 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + 0x000000003bc0017a trig_simulation_timer + .text.udelay 0x000000003bc0018a 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + 0x000000003bc0018a udelay + .text.mdelay 0x000000003bc001b4 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + 0x000000003bc001b4 mdelay + .text.get_timer + 0x000000003bc001be 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + 0x000000003bc001be get_timer + .text.get_random_from_timer + 0x000000003bc001e2 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + 0x000000003bc001e2 get_random_from_timer + .text.read_count_tick + 0x000000003bc0020c 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + 0x000000003bc0020c read_count_tick + .text.jump_to_monitor + 0x000000003bc0021a 0x78 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + 0x000000003bc0021a jump_to_monitor + .text.jump_to_loader_2nd + 0x000000003bc00292 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + 0x000000003bc00292 jump_to_loader_2nd + .text._uart_putc + 0x000000003bc00294 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + 0x000000003bc00294 _uart_putc + .text.console_putc + 0x000000003bc002a4 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + 0x000000003bc002a4 console_putc + .text.console_flush + 0x000000003bc002c2 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + 0x000000003bc002c2 console_flush + .text.unsigned_num_print + 0x000000003bc002d6 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .text.tf_printf + 0x000000003bc00358 0x19a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + 0x000000003bc00358 tf_printf + .text.__system_reset + 0x000000003bc004f2 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + 0x000000003bc004f2 __system_reset + .text.panic_handler + 0x000000003bc005ba 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + 0x000000003bc005ba panic_handler + .text.reset_c906l + 0x000000003bc005ec 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + 0x000000003bc005ec reset_c906l + .text.setup_dl_flag + 0x000000003bc00636 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + 0x000000003bc00636 setup_dl_flag + .text.sys_switch_all_to_pll + 0x000000003bc00680 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + 0x000000003bc00680 sys_switch_all_to_pll + .text.sys_pll_nd + 0x000000003bc0068e 0x18e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + 0x000000003bc0068e sys_pll_nd + .text.sys_pll_init + 0x000000003bc0081c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + 0x000000003bc0081c sys_pll_init + .text.switch_rtc_mode_1st_stage + 0x000000003bc00832 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + 0x000000003bc00832 switch_rtc_mode_1st_stage + .text.switch_rtc_mode_2nd_stage + 0x000000003bc00834 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + 0x000000003bc00834 switch_rtc_mode_2nd_stage + .text.set_rtc_en_registers + 0x000000003bc00878 0xbc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + 0x000000003bc00878 set_rtc_en_registers + .text.init_comm_info + 0x000000003bc00934 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + 0x000000003bc00934 init_comm_info + .text.dec_verify_image + 0x000000003bc00994 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + 0x000000003bc00994 dec_verify_image + .text.ntostr 0x000000003bc00998 0x7a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + 0x000000003bc00998 ntostr + .text.memset 0x000000003bc00a12 0x5a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + 0x000000003bc00a12 memset + .text.memcpy 0x000000003bc00a6c 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + 0x000000003bc00a6c memcpy + .text.memmove 0x000000003bc00acc 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + 0x000000003bc00acc memmove + .text.putchar_l + 0x000000003bc00aec 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + 0x000000003bc00aec putchar_l + .text.strcmp 0x000000003bc00b3e 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o + 0x000000003bc00b3e strcmp + .text.strlen 0x000000003bc00b5a 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o + 0x000000003bc00b5a strlen + .text.gpio_in_value + 0x000000003bc00b6c 0x7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + 0x000000003bc00b6c gpio_in_value + .text.usb_id_det + 0x000000003bc00be8 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + 0x000000003bc00be8 usb_id_det + .text.read_time_ms + 0x000000003bc00c06 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .text.load_image_by_usb + 0x000000003bc00c20 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc00c20 load_image_by_usb + .text.load_param2 + 0x000000003bc00c60 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc00c60 load_param2 + .text.load_ddr_param + 0x000000003bc00d30 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc00d30 load_ddr_param + .text.load_ddr + 0x000000003bc00dde 0xc6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc00dde load_ddr + .text.load_blcp_2nd + 0x000000003bc00ea4 0x166 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc00ea4 load_blcp_2nd + .text.load_monitor + 0x000000003bc0100a 0x126 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc0100a load_monitor + .text.load_loader_2nd + 0x000000003bc01130 0x208 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc01130 load_loader_2nd + .text.load_rest + 0x000000003bc01338 0xe6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc01338 load_rest + .text.bl2_main + 0x000000003bc0141e 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc0141e bl2_main + .text.SzFree 0x000000003bc014b6 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .text.SzAlloc 0x000000003bc014b8 0x42 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .text.decompress_lzma + 0x000000003bc014fa 0xe8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + 0x000000003bc014fa decompress_lzma + .text.LZ4_malloc + 0x000000003bc015e2 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + 0x000000003bc015e2 LZ4_malloc + .text.LZ4_calloc + 0x000000003bc015e8 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + 0x000000003bc015e8 LZ4_calloc + .text.LZ4_free + 0x000000003bc01610 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + 0x000000003bc01610 LZ4_free + .text.decompress_lz4 + 0x000000003bc01612 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + 0x000000003bc01612 decompress_lz4 + .text.decompress + 0x000000003bc016c0 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + 0x000000003bc016c0 decompress + .text.DWC2_UncachedRead32 + 0x000000003bc0173e 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + 0x000000003bc0173e DWC2_UncachedRead32 + .text.DWC2_UncachedWrite32 + 0x000000003bc01744 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + 0x000000003bc01744 DWC2_UncachedWrite32 + .text.resume 0x000000003bc01748 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .text.requestMemAlloc + 0x000000003bc0174a 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .text.requestMemFree + 0x000000003bc01782 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .text.acm_complete_set_line_coding + 0x000000003bc01784 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .text.reset 0x000000003bc017a0 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .text.disconnect + 0x000000003bc017b4 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .text.unbind 0x000000003bc017e2 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .text.bind 0x000000003bc01808 0x42 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .text.get_unicode_string + 0x000000003bc0184a 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .text.bulkOutCmpl + 0x000000003bc0189c 0x234 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .text.getDescAcm + 0x000000003bc01ad0 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .text.reqComplete + 0x000000003bc01b2c 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .text.bulkInCmpl + 0x000000003bc01b56 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .text.setup 0x000000003bc01ba6 0x442 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .text.suspend 0x000000003bc01fe8 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .text.convert_buf_addr + 0x000000003bc01fea 0xa2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc01fea convert_buf_addr + .text.print_buf_addr + 0x000000003bc0208c 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc0208c print_buf_addr + .text.AcmIsr 0x000000003bc0215c 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc0215c AcmIsr + .text.acm_app_init + 0x000000003bc02162 0x138 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc02162 acm_app_init + .text.usb_vbus_det + 0x000000003bc0229a 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc0229a usb_vbus_det + .text.get_usb_polling_timeout_value + 0x000000003bc022a6 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc022a6 get_usb_polling_timeout_value + .text.AcmApp 0x000000003bc022d6 0x478 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc022d6 AcmApp + .text.dwc2_fifo_status + 0x000000003bc0274e 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_free_request + 0x000000003bc02764 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.pullup 0x000000003bc0279e 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_alloc_request + 0x000000003bc027e6 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_ep_enable + 0x000000003bc0281e 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_fifo_flush + 0x000000003bc028be 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_log_write + 0x000000003bc028c0 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc028c0 dwc2_log_write + .text.dwc2_get_ep0_name + 0x000000003bc028c2 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc028c2 dwc2_get_ep0_name + .text.udc_reinit + 0x000000003bc028cc 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc028cc udc_reinit + .text.dwc2_done + 0x000000003bc02912 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02912 dwc2_done + .text.dwc2_dequeue + 0x000000003bc02952 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_nuke + 0x000000003bc029a6 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc029a6 dwc2_nuke + .text.usb_gadget_unregister_driver + 0x000000003bc029d4 0x9a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc029d4 usb_gadget_unregister_driver + .text.dwc2_hsotg_set_bit + 0x000000003bc02a6e 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02a6e dwc2_hsotg_set_bit + .text.dwc2_hsotg_clear_bit + 0x000000003bc02a90 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02a90 dwc2_hsotg_clear_bit + .text.wakeup 0x000000003bc02ab4 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_hsotg_wait_bit_set + 0x000000003bc02af0 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02af0 dwc2_hsotg_wait_bit_set + .text.dwc2_hsotg_txfifo_flush.constprop.0 + 0x000000003bc02b36 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.kill_all_requests.isra.0 + 0x000000003bc02bc6 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_disconnect + 0x000000003bc02c24 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02c24 dwc2_disconnect + .text.dwc2_hsotg_init_fifo.constprop.0 + 0x000000003bc02c7a 0xda /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text._dwc2_ep_disable.isra.0 + 0x000000003bc02d54 0x1a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_ep_disable + 0x000000003bc02efa 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_reconfig_usbd + 0x000000003bc02f1a 0x28e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02f1a dwc2_reconfig_usbd + .text.usb_gadget_register_driver + 0x000000003bc031a8 0x156 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc031a8 usb_gadget_register_driver + .text.dwc2_phy_to_log_ep + 0x000000003bc032fe 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc032fe dwc2_phy_to_log_ep + .text.dwc2_udc_probe + 0x000000003bc03310 0x150 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc03310 dwc2_udc_probe + .text.usb_gadget_handle_interrupts + 0x000000003bc03460 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc03460 usb_gadget_handle_interrupts + .text.set_max_pktsize + 0x000000003bc034ac 0x8e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep_clear_stall + 0x000000003bc0353a 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep_set_stall + 0x000000003bc03598 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_ep0_complete_out + 0x000000003bc035fa 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep0_zlp + 0x000000003bc0367a 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep0_set_stall.isra.0 + 0x000000003bc036f8 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.setdma_rx.isra.0 + 0x000000003bc03760 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.complete_rx + 0x000000003bc0380a 0xfc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_pre_setup + 0x000000003bc03906 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03906 dwc2_udc_pre_setup + .text.dwc2_ep_fifo_write + 0x000000003bc0391c 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc0391c dwc2_ep_fifo_write + .text.setdma_tx + 0x000000003bc03960 0x15c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_ep_fifo_read + 0x000000003bc03abc 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03abc dwc2_ep_fifo_read + .text.dwc2_write_fifo_ep0 + 0x000000003bc03b00 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03b00 dwc2_write_fifo_ep0 + .text.dwc2_set_address + 0x000000003bc03b4c 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03b4c dwc2_set_address + .text.dwc2_ep0_read + 0x000000003bc03b94 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03b94 dwc2_ep0_read + .text.dwc2_ep0_write + 0x000000003bc03bbc 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03bbc dwc2_ep0_write + .text.dwc2_udc_set_nak + 0x000000003bc03bfc 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03bfc dwc2_udc_set_nak + .text.dwc2_udc_set_halt + 0x000000003bc03c3c 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03c3c dwc2_udc_set_halt + .text.dwc2_udc_ep_activate + 0x000000003bc03c9e 0xb2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03c9e dwc2_udc_ep_activate + .text.dwc2_handle_ep0 + 0x000000003bc03d50 0x346 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03d50 dwc2_handle_ep0 + .text.dwc2_udc_irq + 0x000000003bc04096 0x540 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc04096 dwc2_udc_irq + .text.dwc2_ep0_kick + 0x000000003bc045d6 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc045d6 dwc2_ep0_kick + .text.dwc2_queue + 0x000000003bc045ee 0xd8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc045ee dwc2_queue + .text.usb_polling + 0x000000003bc046c6 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + 0x000000003bc046c6 usb_polling + .text.crc16_ccitt + 0x000000003bc04706 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + 0x000000003bc04706 crc16_ccitt + .text.LzmaDec_WriteRem + 0x000000003bc04738 0x72 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .text.LzmaDec_DecodeReal2 + 0x000000003bc047aa 0x138a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .text.LzmaDec_TryDummy + 0x000000003bc05b34 0x4e8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .text.LzmaDec_Init + 0x000000003bc0601c 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + 0x000000003bc0601c LzmaDec_Init + .text.LzmaDec_DecodeToDic + 0x000000003bc06030 0x27c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + 0x000000003bc06030 LzmaDec_DecodeToDic + .text.LzmaDec_FreeProbs + 0x000000003bc062ac 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + 0x000000003bc062ac LzmaDec_FreeProbs + .text.LzmaDec_AllocateProbs2.isra.0 + 0x000000003bc062c8 0x66 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .text.LzmaProps_Decode + 0x000000003bc0632e 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + 0x000000003bc0632e LzmaProps_Decode + .text.LzmaDec_AllocateProbs + 0x000000003bc06378 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + 0x000000003bc06378 LzmaDec_AllocateProbs + .text.LzmaDecode + 0x000000003bc063a8 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + 0x000000003bc063a8 LzmaDecode + .text.LZ4F_readLE32 + 0x000000003bc06452 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe_withSmallPrefix + 0x000000003bc06476 0x276 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_updateDict + 0x000000003bc066ec 0x110 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe + 0x000000003bc067fc 0x26e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + 0x000000003bc067fc LZ4_decompress_safe + .text.LZ4_decompress_safe_withPrefix64k + 0x000000003bc06a6a 0x26a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + 0x000000003bc06a6a LZ4_decompress_safe_withPrefix64k + .text.LZ4_decompress_safe_forceExtDict + 0x000000003bc06cd4 0x316 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + 0x000000003bc06cd4 LZ4_decompress_safe_forceExtDict + .text.LZ4_decompress_safe_usingDict + 0x000000003bc06fea 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + 0x000000003bc06fea LZ4_decompress_safe_usingDict + .text.LZ4F_isError + 0x000000003bc07010 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + 0x000000003bc07010 LZ4F_isError + .text.LZ4F_getBlockSize + 0x000000003bc0701c 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + 0x000000003bc0701c LZ4F_getBlockSize + .text.LZ4F_decodeHeader + 0x000000003bc0703a 0x1a4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_createDecompressionContext + 0x000000003bc071de 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + 0x000000003bc071de LZ4F_createDecompressionContext + .text.LZ4F_decompress + 0x000000003bc0720e 0x7dc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + 0x000000003bc0720e LZ4F_decompress + .text.XXH32_avalanche + 0x000000003bc079ea 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH_read32 + 0x000000003bc07a16 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH32_finalize.constprop.0 + 0x000000003bc07a2c 0x33a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH32 0x000000003bc07d66 0x1c6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + 0x000000003bc07d66 XXH32 + .text.XXH32_reset + 0x000000003bc07f2c 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + 0x000000003bc07f2c XXH32_reset + .text.XXH32_update + 0x000000003bc07f82 0x1d2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + 0x000000003bc07f82 XXH32_update + .text.XXH32_digest + 0x000000003bc08154 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + 0x000000003bc08154 XXH32_digest + .text.ddr_init + 0x000000003bc08194 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + 0x000000003bc08194 ddr_init + .text.read_ddr_pkg_info + 0x000000003bc081c8 0x22e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc081c8 read_ddr_pkg_info + .text.get_ddr_vendor + 0x000000003bc083f6 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc083f6 get_ddr_vendor + .text.axi_mon_start_all + 0x000000003bc08400 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + 0x000000003bc08400 axi_mon_start_all + .text.ddr_sys_bring_up + 0x000000003bc08450 0x224 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + 0x000000003bc08450 ddr_sys_bring_up + .text.cvx16_bist_wr_prbs_init + 0x000000003bc08674 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08674 cvx16_bist_wr_prbs_init + .text.cvx16_bist_wr_sram_init + 0x000000003bc086c2 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc086c2 cvx16_bist_wr_sram_init + .text.cvx16_bist_rdglvl_init + 0x000000003bc08722 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08722 cvx16_bist_rdglvl_init + .text.cvx16_bist_rdlvl_init + 0x000000003bc08768 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08768 cvx16_bist_rdlvl_init + .text.cvx16_bist_wdqlvl_init + 0x000000003bc08852 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08852 cvx16_bist_wdqlvl_init + .text.cvx16_bist_wdmlvl_init + 0x000000003bc08902 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08902 cvx16_bist_wdmlvl_init + .text.cvx16_bist_start_check + 0x000000003bc08962 0x6a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08962 cvx16_bist_start_check + .text.cvx16_rdvld_train + 0x000000003bc089cc 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc089cc cvx16_rdvld_train + .text.cvx16_dll_cal + 0x000000003bc08a72 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08a72 cvx16_dll_cal + .text.cvx16_clk_normal + 0x000000003bc08ada 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08ada cvx16_clk_normal + .text.cvx16_clk_div2 + 0x000000003bc08b36 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08b36 cvx16_clk_div2 + .text.cvx16_clk_div40 + 0x000000003bc08b4c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08b4c cvx16_clk_div40 + .text.cvx16_chg_pll_freq + 0x000000003bc08b62 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08b62 cvx16_chg_pll_freq + .text.cvx16_ddr_phy_power_on_seq1 + 0x000000003bc08c5a 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08c5a cvx16_ddr_phy_power_on_seq1 + .text.cvx16_ddr_phy_power_on_seq2 + 0x000000003bc08c9e 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08c9e cvx16_ddr_phy_power_on_seq2 + .text.cvx16_ddr_phy_power_on_seq3 + 0x000000003bc08ce6 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08ce6 cvx16_ddr_phy_power_on_seq3 + .text.cvx16_wait_for_dfi_init_complete + 0x000000003bc08d20 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08d20 cvx16_wait_for_dfi_init_complete + .text.cvx16_polling_dfi_init_start + 0x000000003bc08d58 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08d58 cvx16_polling_dfi_init_start + .text.cvx16_set_dfi_init_complete + 0x000000003bc08d72 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08d72 cvx16_set_dfi_init_complete + .text.cvx16_INT_ISR_08 + 0x000000003bc08d9a 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08d9a cvx16_INT_ISR_08 + .text.cvx16_polling_synp_normal_mode + 0x000000003bc08dc6 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08dc6 cvx16_polling_synp_normal_mode + .text.cvx16_dfi_ca_park_prbs + 0x000000003bc08de2 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08de2 cvx16_dfi_ca_park_prbs + .text.cvx16_wrlvl_req + 0x000000003bc08e4a 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08e4a cvx16_wrlvl_req + .text.cvx16_setting_check + 0x000000003bc08e4c 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08e4c cvx16_setting_check + .text.cvx16_set_dfi_init_start + 0x000000003bc08e6c 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08e6c cvx16_set_dfi_init_start + .text.cvx16_pll_init + 0x000000003bc08e92 0x9c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08e92 cvx16_pll_init + .text.cvx16_clk_gating_disable + 0x000000003bc08f2e 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08f2e cvx16_clk_gating_disable + .text.cvx16_clk_gating_enable + 0x000000003bc08f78 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08f78 cvx16_clk_gating_enable + .text.cvx16_rdglvl_req + 0x000000003bc08fe8 0xc6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08fe8 cvx16_rdglvl_req + .text.cvx16_rdlvl_req + 0x000000003bc090ae 0x170 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc090ae cvx16_rdlvl_req + .text.cvx16_wdqlvl_req + 0x000000003bc0921e 0x182 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc0921e cvx16_wdqlvl_req + .text.cvx16_en_rec_vol_mode + 0x000000003bc093a0 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc093a0 cvx16_en_rec_vol_mode + .text.ctrl_init_detect_dram_size + 0x000000003bc093ba 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc093ba ctrl_init_detect_dram_size + .text.pll_init + 0x000000003bc093dc 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + 0x000000003bc093dc pll_init + .text.cvx16_pinmux + 0x000000003bc09460 0x33a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + 0x000000003bc09460 cvx16_pinmux + .text.cvx16_dram_cap_check + 0x000000003bc0979a 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + 0x000000003bc0979a cvx16_dram_cap_check + .text.ddrc_init + 0x000000003bc0979c 0x1fe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + 0x000000003bc0979c ddrc_init + .text.ctrl_init_high_patch + 0x000000003bc0999a 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + 0x000000003bc0999a ctrl_init_high_patch + .text.ctrl_init_low_patch + 0x000000003bc099c8 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + 0x000000003bc099c8 ctrl_init_low_patch + .text.ctrl_init_update_by_dram_size + 0x000000003bc099f6 0x21c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + 0x000000003bc099f6 ctrl_init_update_by_dram_size + .text.phy_init + 0x000000003bc09c12 0x3da /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + 0x000000003bc09c12 phy_init + *(.rodata*) + *fill* 0x000000003bc09fec 0x4 + .rodata.build_message + 0x000000003bc09ff0 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o + 0x000000003bc09ff0 build_message + *fill* 0x000000003bc0a00a 0x6 + .rodata.version_string + 0x000000003bc0a010 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o + 0x000000003bc0a010 version_string + .rodata.jump_to_monitor.str1.8 + 0x000000003bc0a020 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + *fill* 0x000000003bc0a046 0x2 + .rodata.tf_printf.str1.8 + 0x000000003bc0a048 0x3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + *fill* 0x000000003bc0a04b 0x1 + .rodata.tf_printf + 0x000000003bc0a04c 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .rodata.__system_reset.str1.8 + 0x000000003bc0a0a8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + *fill* 0x000000003bc0a0ba 0x6 + .rodata.panic_handler.str1.8 + 0x000000003bc0a0c0 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + *fill* 0x000000003bc0a0d6 0x2 + .rodata.reset_c906l.str1.8 + 0x000000003bc0a0d8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .rodata.sys_pll_nd.str1.8 + 0x000000003bc0a0e0 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + *fill* 0x000000003bc0a0e9 0x7 + .rodata.sys_pll_init.str1.8 + 0x000000003bc0a0f0 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + *fill* 0x000000003bc0a0f9 0x7 + .rodata.switch_rtc_mode_2nd_stage.str1.8 + 0x000000003bc0a100 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + *fill* 0x000000003bc0a114 0x4 + .rodata.set_rtc_en_registers.str1.8 + 0x000000003bc0a118 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + *fill* 0x000000003bc0a144 0x4 + .rodata.cst8 0x000000003bc0a148 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .rodata.hex2ascii_data + 0x000000003bc0a170 0x25 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + 0x000000003bc0a170 hex2ascii_data + *fill* 0x000000003bc0a195 0x3 + .rodata.cst8 0x000000003bc0a198 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .rodata.load_image_by_usb.str1.8 + 0x000000003bc0a1a0 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a1ba 0x6 + .rodata.load_param2.str1.8 + 0x000000003bc0a1c0 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .rodata.load_ddr_param.str1.8 + 0x000000003bc0a218 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .rodata.load_ddr.str1.8 + 0x000000003bc0a260 0x4d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a2ad 0x3 + .rodata.load_blcp_2nd.str1.8 + 0x000000003bc0a2b0 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .rodata.load_monitor.str1.8 + 0x000000003bc0a390 0xcf /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a45f 0x1 + .rodata.load_loader_2nd.str1.8 + 0x000000003bc0a460 0xce /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a52e 0x2 + .rodata.load_rest.str1.8 + 0x000000003bc0a530 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .rodata.bl2_main.str1.8 + 0x000000003bc0a590 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a614 0x4 + .rodata.cst8 0x000000003bc0a618 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .rodata.SzAlloc.str1.8 + 0x000000003bc0a620 0x1f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a63f 0x1 + .rodata.decompress_lzma.str1.8 + 0x000000003bc0a640 0x92 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a6d2 0x6 + .rodata.decompress_lz4.str1.8 + 0x000000003bc0a6d8 0x72 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a74a 0x6 + .rodata.decompress.str1.8 + 0x000000003bc0a750 0x31 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a781 0x7 + .rodata.__func__.0 + 0x000000003bc0a788 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .rodata.__func__.1 + 0x000000003bc0a790 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .rodata.reset.str1.8 + 0x000000003bc0a7a0 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a7b6 0x2 + .rodata.unbind.str1.8 + 0x000000003bc0a7b8 0xd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a7c5 0x3 + .rodata.bind.str1.8 + 0x000000003bc0a7c8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .rodata.bulkOutCmpl.str1.8 + 0x000000003bc0a7d0 0x61 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a831 0x7 + .rodata.reqComplete.str1.8 + 0x000000003bc0a838 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a84d 0x3 + .rodata.setup.str1.8 + 0x000000003bc0a850 0xd2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a922 0x2 + .rodata.setup 0x000000003bc0a924 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .rodata.print_buf_addr.str1.8 + 0x000000003bc0a960 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aa4a 0x6 + .rodata.acm_app_init.str1.8 + 0x000000003bc0aa50 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aa65 0x3 + .rodata.AcmApp.str1.8 + 0x000000003bc0aa68 0x10b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab73 0x5 + .rodata.str1.8 + 0x000000003bc0ab78 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab7c 0x4 + .rodata.__func__.0 + 0x000000003bc0ab80 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab85 0x3 + .rodata.__func__.1 + 0x000000003bc0ab88 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab8f 0x1 + .rodata.__func__.4 + 0x000000003bc0ab90 0xb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab9b 0x5 + .rodata.__func__.5 + 0x000000003bc0aba0 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aba6 0x2 + .rodata.dwc2_free_request.str1.8 + 0x000000003bc0aba8 0x23 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0abcb 0x5 + .rodata.dwc2_hsotg_txfifo_flush.constprop.0.str1.8 + 0x000000003bc0abd0 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ac1a 0x6 + .rodata.dwc2_hsotg_init_fifo.constprop.0.str1.8 + 0x000000003bc0ac20 0x2d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ac4d 0x3 + .rodata._dwc2_ep_disable.isra.0.str1.8 + 0x000000003bc0ac50 0x77 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0acc7 0x1 + .rodata.dwc2_reconfig_usbd.str1.8 + 0x000000003bc0acc8 0x71 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ad39 0x7 + .rodata.dwc2_udc_probe.str1.8 + 0x000000003bc0ad40 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ad8e 0x2 + .rodata.__func__.0 + 0x000000003bc0ad90 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ada2 0x6 + .rodata.__func__.1 + 0x000000003bc0ada8 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0adb9 0x7 + .rodata.__func__.2 + 0x000000003bc0adc0 0x13 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0add3 0x5 + .rodata.__func__.3 + 0x000000003bc0add8 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .rodata.__func__.4 + 0x000000003bc0adf0 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae05 0x3 + .rodata.driver_name + 0x000000003bc0ae08 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae11 0x7 + .rodata.dwc2_udc_ops + 0x000000003bc0ae18 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .rodata.ep0name + 0x000000003bc0ae60 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae6c 0x4 + .rodata.ep1name + 0x000000003bc0ae70 0xb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae7b 0x5 + .rodata.ep2name + 0x000000003bc0ae80 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae8c 0x4 + .rodata.ep3name + 0x000000003bc0ae90 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae9a 0x6 + .rodata.dwc2_handle_ep0.str1.8 + 0x000000003bc0aea0 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .rodata.dwc2_handle_ep0 + 0x000000003bc0aeb4 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + *fill* 0x000000003bc0aee4 0x4 + .rodata.dwc2_udc_irq.str1.8 + 0x000000003bc0aee8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + *fill* 0x000000003bc0aefa 0x6 + .rodata.usb_polling.str1.8 + 0x000000003bc0af00 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + *fill* 0x000000003bc0af11 0x7 + .rodata.crc16_tab + 0x000000003bc0af18 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .rodata.LZ4F_decompress + 0x000000003bc0b118 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + *fill* 0x000000003bc0b154 0x4 + .rodata.blockSizes.0 + 0x000000003bc0b158 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .rodata.dec64table + 0x000000003bc0b178 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .rodata.inc32table + 0x000000003bc0b198 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .rodata.XXH32_finalize.constprop.0 + 0x000000003bc0b1b8 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + *fill* 0x000000003bc0b1f4 0x4 + .rodata.ddr_init.str1.8 + 0x000000003bc0b1f8 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + *fill* 0x000000003bc0b21e 0x2 + .rodata.read_ddr_pkg_info.str1.8 + 0x000000003bc0b220 0xe2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + *fill* 0x000000003bc0b302 0x2 + .rodata.read_ddr_pkg_info + 0x000000003bc0b304 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + *fill* 0x000000003bc0b34c 0x4 + .rodata.ddr_sys_bring_up.str1.8 + 0x000000003bc0b350 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + 0x81 (size before relaxing) + .rodata.cst8 0x000000003bc0b3d8 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .rodata.cvx16_pinmux + 0x000000003bc0b3f8 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .rodata.ctrl_init_update_by_dram_size + 0x000000003bc0b420 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + 0x000000003bc0b434 __RO_END__ = . + +.rela.dyn 0x000000003bc0b438 0x0 + .rela.text.setup_dl_flag + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o + .rela.text.load_param2 + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o + .rela.text.load_ddr_param + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o + .rela.text.load_ddr + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o + .rela.text.load_blcp_2nd + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o + .rela.text.load_monitor + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o + .rela.text.load_loader_2nd + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o + .rela.text.load_rest + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o + .rela.text.init + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o + +.data 0x000000003bc0b434 0x2cc + 0x000000003bc0b440 . = ALIGN (0x10) + *fill* 0x000000003bc0b434 0xc + 0x000000003bc0b440 __DATA_START__ = . + *(.data*) + .data.time_records + 0x000000003bc0b440 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc0b440 time_records + .data.ConfDesc + 0x000000003bc0b448 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b451 0x7 + .data.acm_buf 0x000000003bc0b458 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .data.acm_call_mgmt_descriptor + 0x000000003bc0b460 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b465 0x3 + .data.acm_control_interface_desc + 0x000000003bc0b468 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b471 0x7 + .data.acm_data_interface_desc + 0x000000003bc0b478 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b481 0x7 + .data.acm_descriptor + 0x000000003bc0b488 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b48c 0x4 + .data.acm_fs_in_desc + 0x000000003bc0b490 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b497 0x1 + .data.acm_fs_notify_desc + 0x000000003bc0b498 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b49f 0x1 + .data.acm_fs_out_desc + 0x000000003bc0b4a0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4a7 0x1 + .data.acm_header_desc + 0x000000003bc0b4a8 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4ad 0x3 + .data.acm_hs_in_desc + 0x000000003bc0b4b0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4b7 0x1 + .data.acm_hs_notify_desc + 0x000000003bc0b4b8 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4bf 0x1 + .data.acm_hs_out_desc + 0x000000003bc0b4c0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4c7 0x1 + .data.acm_union_desc + 0x000000003bc0b4c8 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4cd 0x3 + .data.bosDesc 0x000000003bc0b4d0 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4d5 0x3 + .data.bulkBufAlloc + 0x000000003bc0b4d8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .data.capabilityExtDesc + 0x000000003bc0b4e0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4e7 0x1 + .data.cb0_buf 0x000000003bc0b4e8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .data.cb1_buf 0x000000003bc0b4f0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .data.cb2_buf 0x000000003bc0b4f8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .data.cmdBufAlloc + 0x000000003bc0b500 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .data.descriptorsFs + 0x000000003bc0b508 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .data.descriptorsHs + 0x000000003bc0b558 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .data.devHsDesc + 0x000000003bc0b5a8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b5ba 0x6 + .data.drv_obj 0x000000003bc0b5c0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .data.ep0BuffAlloc + 0x000000003bc0b610 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .data.g_driver + 0x000000003bc0b618 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .data.handler 0x000000003bc0b670 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .data.languageDesc + 0x000000003bc0b678 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b67c 0x4 + .data.qualifierDesc + 0x000000003bc0b680 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b68a 0x6 + .data.rsp_buf 0x000000003bc0b690 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .data.setup_buf + 0x000000003bc0b698 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .data.dwc2_ep_ops + 0x000000003bc0b6a0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .data.ep0_fifo_size + 0x000000003bc0b6f0 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .data.ep_fifo_size + 0x000000003bc0b6f4 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .data.cv_usb_vid + 0x000000003bc0b6f8 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + 0x000000003bc0b6f8 cv_usb_vid + *fill* 0x000000003bc0b6fa 0x2 + .data.ddr_data_rate + 0x000000003bc0b6fc 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + 0x000000003bc0b6fc ddr_data_rate + 0x000000003bc0b700 . = ALIGN (0x10) + 0x000000003bc0b700 __DATA_END__ = . + +stacks 0x000000003bc0b700 0x2000 + 0x000000003bc0b700 . = ALIGN (0x40) + *fill* 0x000000003bc0b700 0x0 + 0x000000003bc0b700 __STACKS_START__ = . + 0x000000003bc0d700 . = (. + 0x2000) + *fill* 0x000000003bc0b700 0x2000 + 0x000000003bc0d700 . = ALIGN (0x40) + 0x000000003bc0d700 __STACKS_END__ = . + +.bss 0x000000003bc0d800 0x5c10 + 0x000000003bc0d800 . = ALIGN (0x10) + 0x000000003bc0d800 __BSS_START__ = . + *(SORT_BY_ALIGNMENT(.bss*)) + .bss.fip_param2 + 0x000000003bc0d800 0x1000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .bss.sram_union_buf + 0x000000003bc0e800 0x4000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .bss.acm_bufArr + 0x000000003bc12800 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc12800 acm_bufArr + .bss.bulkBufAllocArr + 0x000000003bc12880 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc12880 bulkBufAllocArr + .bss.cb0_bufArr + 0x000000003bc12a80 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc12a80 cb0_bufArr + .bss.cb1_bufArr + 0x000000003bc12b00 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc12b00 cb1_bufArr + .bss.cb2_bufArr + 0x000000003bc12b80 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc12b80 cb2_bufArr + .bss.cmdBufAllocArr + 0x000000003bc12c00 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc12c00 cmdBufAllocArr + .bss.ep0BuffAllocArr + 0x000000003bc12e00 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc12e00 ep0BuffAllocArr + .bss.handlerArr + 0x000000003bc12e80 0x400 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc12e80 handlerArr + .bss.rsp_bufArr + 0x000000003bc13280 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc13280 rsp_bufArr + *fill* 0x000000003bc13290 0x30 + .bss.setup_bufArr + 0x000000003bc132c0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc132c0 setup_bufArr + .bss.fw_dynamic_info + 0x000000003bc132c8 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .bss.comp_alloc_buf + 0x000000003bc132f8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .bss.comp_alloc_size + 0x000000003bc13300 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .bss.acm 0x000000003bc13308 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc13308 acm + .bss.bulkBuf 0x000000003bc13310 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.bulkInReq + 0x000000003bc13318 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.bulkOutReq + 0x000000003bc13320 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.cmdBuf 0x000000003bc13328 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.ep0Buff 0x000000003bc13330 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.ep0Req 0x000000003bc13338 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.epIn 0x000000003bc13340 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.epOut 0x000000003bc13348 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.fip_buf 0x000000003bc13350 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.productDesc + 0x000000003bc13358 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc13374 0x4 + .bss.serial.2 0x000000003bc13378 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.serialDesc + 0x000000003bc13388 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc133a4 0x4 + .bss.vendorDesc + 0x000000003bc133a8 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.reg 0x000000003bc133b8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc133b8 reg + .bss.the_controller + 0x000000003bc133c0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc133c0 the_controller + .bss.reg_set 0x000000003bc133c8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + 0x000000003bc133c8 reg_set + .bss.reg_span 0x000000003bc133d0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + 0x000000003bc133d0 reg_span + .bss.reg_step 0x000000003bc133d8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + 0x000000003bc133d8 reg_step + .bss.fip_tx_offset + 0x000000003bc133e0 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.fip_tx_size + 0x000000003bc133e4 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.transfer_size + 0x000000003bc133e8 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.ts 0x000000003bc133ec 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.rddata 0x000000003bc133f0 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc133f0 rddata + .bss.dev_freq 0x000000003bc133f4 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + 0x000000003bc133f4 dev_freq + .bss.freq_in 0x000000003bc133f8 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + 0x000000003bc133f8 freq_in + .bss.mod_freq 0x000000003bc133fc 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + 0x000000003bc133fc mod_freq + .bss.tar_freq 0x000000003bc13400 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + 0x000000003bc13400 tar_freq + .bss.ack_idx.6 + 0x000000003bc13404 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.acm_configValue + 0x000000003bc13405 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc13405 acm_configValue + .bss.configBreak + 0x000000003bc13406 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.configValue + 0x000000003bc13407 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.flagEnterDL + 0x000000003bc13408 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.flagReboot + 0x000000003bc13409 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.is_serial_patched.3 + 0x000000003bc1340a 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.mem_alloc_cnt + 0x000000003bc1340b 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.ddr_capacity + 0x000000003bc1340c 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1340c ddr_capacity + .bss.ddr_type 0x000000003bc1340d 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1340d ddr_type + .bss.ddr_vendor + 0x000000003bc1340e 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1340e ddr_vendor + .bss.pkg 0x000000003bc1340f 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1340f pkg + *(COMMON) + 0x000000003bc13410 . = ALIGN (0x10) + 0x000000003bc13410 __BSS_END__ = . + 0x000000003bc13410 __BL2_END__ = . + 0x0000000000005c10 __BSS_SIZE__ = SIZEOF (.bss) + 0x0000000000000001 ASSERT ((. <= 0x3bc19000), BL2 image has exceeded its limit.) + 0x0000000004400100 p_rom_api_cryptodma_aes_decrypt = 0x4400100 + 0x0000000004400080 p_rom_api_flash_init = 0x4400080 + 0x0000000004400020 p_rom_api_get_boot_src = 0x4400020 + 0x00000000044000c0 p_rom_api_get_number_of_retries = 0x44000c0 + 0x00000000044000a0 p_rom_api_image_crc = 0x44000a0 + 0x0000000004400060 p_rom_api_load_image = 0x4400060 + 0x0000000004400040 p_rom_api_set_boot_src = 0x4400040 + 0x00000000044000e0 p_rom_api_verify_rsa = 0x44000e0 +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/assert.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_entrypoint.o +OUTPUT(/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2.elf elf64-littleriscv) + +.debug_info 0x0000000000000000 0x68732 + .debug_info 0x0000000000000000 0x89 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o + .debug_info 0x0000000000000089 0x1a1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_info 0x000000000000022a 0x1e4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .debug_info 0x000000000000040e 0x45f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_info 0x000000000000086d 0x3d6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_info 0x0000000000000c43 0x33f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_info 0x0000000000000f82 0x474 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_info 0x00000000000013f6 0x1a24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_info 0x0000000000002e1a 0x622 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .debug_info 0x000000000000343c 0x22a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .debug_info 0x0000000000003666 0x41f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .debug_info 0x0000000000003a85 0x2d6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .debug_info 0x0000000000003d5b 0x13d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o + .debug_info 0x0000000000003e98 0xf6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o + .debug_info 0x0000000000003f8e 0x483 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_info 0x0000000000004411 0x1c6e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_info 0x000000000000607f 0x9df /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_info 0x0000000000006a5e 0x3a2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_info 0x0000000000006e00 0x2fa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_info 0x0000000000009da8 0x3221 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_info 0x000000000000cfc9 0x39b8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_info 0x0000000000010981 0x2b7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_info 0x0000000000010c38 0x279 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .debug_info 0x0000000000010eb1 0x17cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_info 0x000000000001267e 0x285e2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_info 0x000000000003ac60 0x4039 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_info 0x000000000003ec99 0x1a7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .debug_info 0x000000000003ee40 0x516 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_info 0x000000000003f356 0x1135 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_info 0x000000000004048b 0x23242 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_info 0x00000000000636cd 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_info 0x00000000000638ad 0x11b2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_info 0x0000000000064a5f 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_info 0x0000000000064b27 0x1c32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_info 0x0000000000066759 0x1fab /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .debug_info 0x0000000000068704 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_entrypoint.o + +.debug_abbrev 0x0000000000000000 0x4de5 + .debug_abbrev 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o + .debug_abbrev 0x0000000000000048 0xc1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_abbrev 0x0000000000000109 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .debug_abbrev 0x00000000000001b9 0x1ae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_abbrev 0x0000000000000367 0x197 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_abbrev 0x00000000000004fe 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_abbrev 0x0000000000000685 0x1e5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_abbrev 0x000000000000086a 0x371 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_abbrev 0x0000000000000bdb 0x134 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .debug_abbrev 0x0000000000000d0f 0x11a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .debug_abbrev 0x0000000000000e29 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .debug_abbrev 0x0000000000000f49 0x15d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .debug_abbrev 0x00000000000010a6 0xac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o + .debug_abbrev 0x0000000000001152 0x8c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o + .debug_abbrev 0x00000000000011de 0x202 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_abbrev 0x00000000000013e0 0x42f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_abbrev 0x000000000000180f 0x305 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_abbrev 0x0000000000001b14 0x181 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_abbrev 0x0000000000001c95 0x6f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_abbrev 0x000000000000238b 0x657 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_abbrev 0x00000000000029e2 0x55c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_abbrev 0x0000000000002f3e 0x15a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_abbrev 0x0000000000003098 0x12f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .debug_abbrev 0x00000000000031c7 0x454 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_abbrev 0x000000000000361b 0x69b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_abbrev 0x0000000000003cb6 0x4b9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_abbrev 0x000000000000416f 0xe9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .debug_abbrev 0x0000000000004258 0x17f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_abbrev 0x00000000000043d7 0x203 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_abbrev 0x00000000000045da 0x3e8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_abbrev 0x00000000000049c2 0x9e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_abbrev 0x0000000000004a60 0xd3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_abbrev 0x0000000000004b33 0x69 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_abbrev 0x0000000000004b9c 0x16b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_abbrev 0x0000000000004d07 0xca /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .debug_abbrev 0x0000000000004dd1 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_entrypoint.o + +.debug_aranges 0x0000000000000000 0x1e80 + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o + .debug_aranges + 0x0000000000000020 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_aranges + 0x0000000000000070 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .debug_aranges + 0x00000000000000e0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_aranges + 0x0000000000000170 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_aranges + 0x00000000000001b0 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_aranges + 0x0000000000000250 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_aranges + 0x00000000000002a0 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_aranges + 0x0000000000000380 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .debug_aranges + 0x00000000000003b0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .debug_aranges + 0x00000000000003f0 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .debug_aranges + 0x0000000000000470 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .debug_aranges + 0x00000000000004a0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o + .debug_aranges + 0x00000000000004e0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o + .debug_aranges + 0x0000000000000510 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_aranges + 0x0000000000000560 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_aranges + 0x0000000000000630 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_aranges + 0x00000000000006d0 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_aranges + 0x0000000000000770 0x170 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_aranges + 0x00000000000008e0 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_aranges + 0x0000000000000ae0 0x190 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_aranges + 0x0000000000000c70 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_aranges + 0x0000000000000ca0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .debug_aranges + 0x0000000000000cf0 0x100 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_aranges + 0x0000000000000df0 0x7c0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_aranges + 0x00000000000015b0 0x1b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_aranges + 0x0000000000001760 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .debug_aranges + 0x0000000000001790 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_aranges + 0x0000000000001800 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_aranges + 0x0000000000001850 0x4e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_aranges + 0x0000000000001d30 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_aranges + 0x0000000000001d60 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_aranges + 0x0000000000001d90 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_aranges + 0x0000000000001dc0 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_aranges + 0x0000000000001e20 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .debug_aranges + 0x0000000000001e50 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_entrypoint.o + +.debug_macro 0x0000000000000000 0x9b13 + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o + .debug_macro 0x0000000000000011 0x86e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o + .debug_macro 0x000000000000087f 0x115 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000000994 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001208 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001477 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001488 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x000000000000160f 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001655 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x000000000000166b 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001693 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x00000000000016af 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x000000000000185e 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001923 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x00000000000019a5 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001bce 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001c8c 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001d86 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001f66 0x186b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x00000000000037d1 0x12c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x00000000000038fd 0x121 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000003a1e 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000003b4e 0x178 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000003cc6 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000003d92 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000003da8 0x146 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000003eee 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000003f94 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x000000000000404c 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x000000000000407a 0x14b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x00000000000041c5 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x000000000000443c 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x00000000000044d0 0xe2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x00000000000045b2 0x125 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x00000000000046d7 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .debug_macro 0x0000000000004754 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .debug_macro 0x000000000000479a 0x9b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000004835 0x11b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004950 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004966 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004982 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004a40 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000004a90 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o + .debug_macro 0x0000000000004ad6 0x1f9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000004ccf 0xa60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x000000000000572f 0x872 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000005fa1 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000005fe1 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000005ffd 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x000000000000601f 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000006125 0x192 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x00000000000062b7 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x00000000000062cd 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x00000000000062f5 0x13c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000006431 0x16b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x000000000000659c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x00000000000065b2 0x61 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000006613 0x9d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x00000000000066b0 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000006702 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006902 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006918 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006928 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000693e 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000697e 0x51d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006e9b 0x17a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000007015 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000703d 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000753a 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x00000000000075ce 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000007644 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000765a 0x207 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007861 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007877 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x00000000000078c3 0x517 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007dda 0x1cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000007fa7 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x00000000000080d7 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .debug_macro 0x0000000000008125 0x308 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x000000000000842d 0x2ef /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x000000000000871c 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000087c4 0x27 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000087eb 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x000000000000884d 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000088ca 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000088f6 0x1ac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000008aa2 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000008af4 0x11b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000008c0f 0xfb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008d0a 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008d26 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008ef9 0x1c4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x00000000000090bd 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000009163 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x00000000000095fc 0xd7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x00000000000096d3 0x110 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x00000000000097e3 0xac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x000000000000988f 0xa1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000009930 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x00000000000099c8 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000009a72 0xa1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + +.debug_line 0x0000000000000000 0x75d63 + .debug_line 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o + .debug_line 0x0000000000000028 0x231 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_line 0x0000000000000259 0x351 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .debug_line 0x00000000000005aa 0x4f5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_line 0x0000000000000a9f 0x341 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_line 0x0000000000000de0 0x559 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_line 0x0000000000001339 0x812 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_line 0x0000000000001b4b 0x1538 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_line 0x0000000000003083 0x21d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .debug_line 0x00000000000032a0 0x2db /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .debug_line 0x000000000000357b 0x5f0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .debug_line 0x0000000000003b6b 0x2f7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .debug_line 0x0000000000003e62 0x1f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o + .debug_line 0x0000000000004058 0x117 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o + .debug_line 0x000000000000416f 0x589 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_line 0x00000000000046f8 0x14d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_line 0x0000000000005bd0 0x792 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_line 0x0000000000006362 0x282 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_line 0x00000000000065e4 0x265c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_line 0x0000000000008c40 0x27a7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_line 0x000000000000b3e7 0x3667 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_line 0x000000000000ea4e 0x2d9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_line 0x000000000000ed27 0x2a4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .debug_line 0x000000000000efcb 0x4528 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_line 0x00000000000134f3 0x34953 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_line 0x0000000000047e46 0x3d78 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_line 0x000000000004bbbe 0x260 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .debug_line 0x000000000004be1e 0x622 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_line 0x000000000004c440 0xcb5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_line 0x000000000004d0f5 0x251fe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_line 0x00000000000722f3 0x301 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_line 0x00000000000725f4 0xc73 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_line 0x0000000000073267 0x165 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_line 0x00000000000733cc 0x136a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_line 0x0000000000074736 0x145c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + .debug_line 0x0000000000075b92 0x1d1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_entrypoint.o + +.debug_str 0x0000000000000000 0x2394c + .debug_str 0x0000000000000000 0x2979 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o + 0x29a6 (size before relaxing) + .debug_str 0x0000000000002979 0x94ac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + 0xbeb1 (size before relaxing) + .debug_str 0x000000000000be25 0x217 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + 0x7166 (size before relaxing) + .debug_str 0x000000000000c03c 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + 0xbf4c (size before relaxing) + .debug_str 0x000000000000c134 0x243 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + 0x720d (size before relaxing) + .debug_str 0x000000000000c377 0x2ec /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + 0x67d1 (size before relaxing) + .debug_str 0x000000000000c663 0x7f0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + 0x7789 (size before relaxing) + .debug_str 0x000000000000ce53 0xf0b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + 0x7f4a (size before relaxing) + .debug_str 0x000000000000dd5e 0x30c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + 0x7793 (size before relaxing) + .debug_str 0x000000000000e06a 0x281 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + 0x4370 (size before relaxing) + .debug_str 0x000000000000e2eb 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + 0x46c2 (size before relaxing) + .debug_str 0x000000000000e36b 0x4b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + 0x709e (size before relaxing) + .debug_str 0x000000000000e3b6 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o + 0x3c13 (size before relaxing) + .debug_str 0x000000000000e3dc 0x1b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o + 0x3a8b (size before relaxing) + .debug_str 0x000000000000e3f7 0x5ca5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + 0xd1bf (size before relaxing) + .debug_str 0x000000000001409c 0x443 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + 0x81e5 (size before relaxing) + .debug_str 0x00000000000144df 0xc1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + 0x8108 (size before relaxing) + .debug_str 0x00000000000150f9 0x1cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + 0x437f (size before relaxing) + .debug_str 0x00000000000152c6 0x4ba0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + 0xca10 (size before relaxing) + .debug_str 0x0000000000019e66 0x6fa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0xba4a (size before relaxing) + .debug_str 0x000000000001a560 0x314 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0xb7f6 (size before relaxing) + .debug_str 0x000000000001a874 0x19 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + 0x75af (size before relaxing) + .debug_str 0x000000000001a88d 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + 0x4115 (size before relaxing) + .debug_str 0x000000000001a8d3 0x12b6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + 0x903e (size before relaxing) + .debug_str 0x000000000001bb89 0x3a87 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + 0x85bd (size before relaxing) + .debug_str 0x000000000001f610 0x7f5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + 0x7a5b (size before relaxing) + .debug_str 0x000000000001fe05 0x51 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + 0x71fd (size before relaxing) + .debug_str 0x000000000001fe56 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + 0x72aa (size before relaxing) + .debug_str 0x000000000001fed3 0x2ed3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + 0x9ee5 (size before relaxing) + .debug_str 0x0000000000022da6 0xa62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x8793 (size before relaxing) + .debug_str 0x0000000000023808 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + 0x985d (size before relaxing) + .debug_str 0x0000000000023858 0x1f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + 0x5093 (size before relaxing) + .debug_str 0x0000000000023877 0x27 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + 0x4e2c (size before relaxing) + .debug_str 0x000000000002389e 0x4f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + 0x7579 (size before relaxing) + .debug_str 0x00000000000238ed 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + 0x743b (size before relaxing) + .debug_str 0x0000000000023921 0x2b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_entrypoint.o + 0x65 (size before relaxing) + +.comment 0x0000000000000000 0x1d + .comment 0x0000000000000000 0x1d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o + 0x1e (size before relaxing) + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + +.note.GNU-stack + 0x0000000000000000 0x0 + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + +.debug_ranges 0x0000000000000000 0x2f790 + .debug_ranges 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_ranges 0x0000000000000040 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .debug_ranges 0x00000000000000a0 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_ranges 0x00000000000001c0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_ranges 0x00000000000001f0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_ranges 0x0000000000000280 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_ranges 0x0000000000000300 0x8d0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_ranges 0x0000000000000bd0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .debug_ranges 0x0000000000000bf0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .debug_ranges 0x0000000000000c20 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .debug_ranges 0x0000000000000d40 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .debug_ranges 0x0000000000000d60 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o + .debug_ranges 0x0000000000000d90 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o + .debug_ranges 0x0000000000000db0 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_ranges 0x0000000000000e90 0x100 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_ranges 0x0000000000000f90 0x160 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_ranges 0x00000000000010f0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_ranges 0x0000000000001180 0x3d0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_ranges 0x0000000000001550 0x480 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_ranges 0x00000000000019d0 0x6b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_ranges 0x0000000000002080 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_ranges 0x00000000000020a0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .debug_ranges 0x00000000000020e0 0xbe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_ranges 0x0000000000002cc0 0x1cf40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_ranges 0x000000000001fc00 0x27b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_ranges 0x00000000000223b0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .debug_ranges 0x00000000000223d0 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_ranges 0x00000000000224a0 0x190 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_ranges 0x0000000000022630 0xc470 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_ranges 0x000000000002eaa0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_ranges 0x000000000002eac0 0x210 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_ranges 0x000000000002ecd0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_ranges 0x000000000002ecf0 0x520 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_ranges 0x000000000002f210 0x580 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + +.debug_frame 0x0000000000000000 0x47b8 + .debug_frame 0x0000000000000000 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_frame 0x0000000000000058 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .debug_frame 0x00000000000000e0 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_frame 0x0000000000000198 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_frame 0x00000000000001f8 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_frame 0x00000000000002f0 0xd8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_frame 0x00000000000003c8 0x1d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_frame 0x00000000000005a0 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .debug_frame 0x00000000000005c8 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .debug_frame 0x0000000000000608 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .debug_frame 0x00000000000006a8 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .debug_frame 0x00000000000006e0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o + .debug_frame 0x0000000000000720 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o + .debug_frame 0x0000000000000748 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_frame 0x00000000000007d0 0x258 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_frame 0x0000000000000a28 0x158 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_frame 0x0000000000000b80 0x118 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_frame 0x0000000000000c98 0x3b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_frame 0x0000000000001048 0x5a8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_frame 0x00000000000015f0 0x520 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_frame 0x0000000000001b10 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_frame 0x0000000000001b50 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .debug_frame 0x0000000000001bb8 0x2d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_frame 0x0000000000001e90 0x1758 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_frame 0x00000000000035e8 0x488 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_frame 0x0000000000003a70 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .debug_frame 0x0000000000003aa8 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_frame 0x0000000000003b60 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_frame 0x0000000000003be8 0xab0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_frame 0x0000000000004698 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_frame 0x00000000000046c0 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_frame 0x00000000000046f8 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_frame 0x0000000000004720 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_frame 0x0000000000004790 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o + +.debug_loc 0x0000000000000000 0xc12a0 + .debug_loc 0x0000000000000000 0x18c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o + .debug_loc 0x000000000000018c 0x28a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_loc 0x0000000000000416 0x143 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_loc 0x0000000000000559 0x24e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_loc 0x00000000000007a7 0x8b7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_loc 0x000000000000105e 0x1f54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o + .debug_loc 0x0000000000002fb2 0x39 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o + .debug_loc 0x0000000000002feb 0x450 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o + .debug_loc 0x000000000000343b 0xc56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o + .debug_loc 0x0000000000004091 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o + .debug_loc 0x000000000000414f 0x262 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o + .debug_loc 0x00000000000043b1 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o + .debug_loc 0x0000000000004433 0x38f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o + .debug_loc 0x00000000000047c2 0xe17 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_loc 0x00000000000055d9 0x9d2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o + .debug_loc 0x0000000000005fab 0x156 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_loc 0x0000000000006101 0x1f8b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_loc 0x000000000000808c 0x28fb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_loc 0x000000000000a987 0x4255 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_loc 0x000000000000ebdc 0x11d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_loc 0x000000000000ecf9 0x33f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o + .debug_loc 0x000000000000f038 0xa0cf /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_loc 0x0000000000019107 0x5f2ef /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_loc 0x00000000000783f6 0x8560 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o + .debug_loc 0x0000000000080956 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o + .debug_loc 0x00000000000809ee 0x22c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_loc 0x0000000000080c1a 0xdfe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_loc 0x0000000000081a18 0x37fb4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_loc 0x00000000000b99cc 0x1c14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_loc 0x00000000000bb5e0 0x2b75 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_loc 0x00000000000be155 0x314b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2.sym b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2.sym new file mode 100644 index 000000000..08b449c14 --- /dev/null +++ b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2.sym @@ -0,0 +1,400 @@ + 39: 000000003bc0e800 16384 OBJECT LOCAL DEFAULT 4 sram_union_buf + 167: 000000003bc047aa 5002 FUNC LOCAL DEFAULT 1 LzmaDec_DecodeReal2 + 38: 000000003bc0d800 4096 OBJECT LOCAL DEFAULT 4 fip_param2 + 279: 000000003bc0720e 2012 FUNC GLOBAL DEFAULT 1 LZ4F_decompress + 375: 000000003bc04096 1344 FUNC GLOBAL DEFAULT 1 dwc2_udc_irq + 168: 000000003bc05b34 1256 FUNC LOCAL DEFAULT 1 LzmaDec_TryDummy + 283: 000000003bc022d6 1144 FUNC GLOBAL DEFAULT 1 AcmApp + 62: 000000003bc01ba6 1090 FUNC LOCAL DEFAULT 1 setup + 373: 000000003bc12e80 1024 OBJECT GLOBAL DEFAULT 4 handlerArr + 394: 000000003bc09c12 986 FUNC GLOBAL DEFAULT 1 phy_init + 334: 000000003bc03d50 838 FUNC GLOBAL DEFAULT 1 dwc2_handle_ep0 + 280: 000000003bc09460 826 FUNC GLOBAL DEFAULT 1 cvx16_pinmux + 181: 000000003bc07a2c 826 FUNC LOCAL DEFAULT 1 XXH32_finalize.constprop. + 294: 000000003bc06cd4 790 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_force + 396: 000000003bc02f1a 654 FUNC GLOBAL DEFAULT 1 dwc2_reconfig_usbd + 222: 000000003bc06030 636 FUNC GLOBAL DEFAULT 1 LzmaDec_DecodeToDic + 172: 000000003bc06476 630 FUNC LOCAL DEFAULT 1 LZ4_decompress_safe_withS + 219: 000000003bc067fc 622 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe + 340: 000000003bc06a6a 618 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_withP + 58: 000000003bc0189c 564 FUNC LOCAL DEFAULT 1 bulkOutCmpl + 320: 000000003bc081c8 558 FUNC GLOBAL DEFAULT 1 read_ddr_pkg_info + 379: 000000003bc08450 548 FUNC GLOBAL DEFAULT 1 ddr_sys_bring_up + 333: 000000003bc099f6 540 FUNC GLOBAL DEFAULT 1 ctrl_init_update_by_dram_ + 312: 000000003bc01130 520 FUNC GLOBAL DEFAULT 1 load_loader_2nd + 376: 000000003bc12c00 512 OBJECT GLOBAL DEFAULT 4 cmdBufAllocArr + 218: 000000003bc12880 512 OBJECT GLOBAL DEFAULT 4 bulkBufAllocArr + 164: 000000003bc0af18 512 OBJECT LOCAL DEFAULT 1 crc16_tab + 339: 000000003bc0979c 510 FUNC GLOBAL DEFAULT 1 ddrc_init + 331: 000000003bc07f82 466 FUNC GLOBAL DEFAULT 1 XXH32_update + 337: 000000003bc07d66 454 FUNC GLOBAL DEFAULT 1 XXH32 + 136: 000000003bc02d54 422 FUNC LOCAL DEFAULT 1 _dwc2_ep_disable.isra.0 + 174: 000000003bc0703a 420 FUNC LOCAL DEFAULT 1 LZ4F_decodeHeader + 341: 000000003bc00358 410 FUNC GLOBAL DEFAULT 1 tf_printf + 275: 000000003bc0068e 398 FUNC GLOBAL DEFAULT 1 sys_pll_nd + 225: 000000003bc0921e 386 FUNC GLOBAL DEFAULT 1 cvx16_wdqlvl_req + 237: 000000003bc090ae 368 FUNC GLOBAL DEFAULT 1 cvx16_rdlvl_req + 325: 000000003bc00ea4 358 FUNC GLOBAL DEFAULT 1 load_blcp_2nd + 159: 000000003bc03960 348 FUNC LOCAL DEFAULT 1 setdma_tx + 268: 000000003bc031a8 342 FUNC GLOBAL DEFAULT 1 usb_gadget_register_drive + 314: 000000003bc03310 336 FUNC GLOBAL DEFAULT 1 dwc2_udc_probe + 282: 000000003bc02162 312 FUNC GLOBAL DEFAULT 1 acm_app_init + 248: 000000003bc0100a 294 FUNC GLOBAL DEFAULT 1 load_monitor + 173: 000000003bc066ec 272 FUNC LOCAL DEFAULT 1 LZ4F_updateDict + 158: 000000003bc0380a 252 FUNC LOCAL DEFAULT 1 complete_rx + 271: 000000003bc08b62 248 FUNC GLOBAL DEFAULT 1 cvx16_chg_pll_freq + 307: 000000003bc08768 234 FUNC GLOBAL DEFAULT 1 cvx16_bist_rdlvl_init + 301: 000000003bc014fa 232 FUNC GLOBAL DEFAULT 1 decompress_lzma + 229: 000000003bc01338 230 FUNC GLOBAL DEFAULT 1 load_rest + 135: 000000003bc02c7a 218 FUNC LOCAL DEFAULT 1 dwc2_hsotg_init_fifo.cons + 317: 000000003bc045ee 216 FUNC GLOBAL DEFAULT 1 dwc2_queue + 345: 000000003bc0208c 208 FUNC GLOBAL DEFAULT 1 print_buf_addr + 278: 000000003bc00c60 208 FUNC GLOBAL DEFAULT 1 load_param2 + 227: 000000003bc004f2 200 FUNC GLOBAL DEFAULT 1 __system_reset + 391: 000000003bc00dde 198 FUNC GLOBAL DEFAULT 1 load_ddr + 353: 000000003bc08fe8 198 FUNC GLOBAL DEFAULT 1 cvx16_rdglvl_req + 277: 000000003bc00878 188 FUNC GLOBAL DEFAULT 1 set_rtc_en_registers + 204: 000000003bc03c9e 178 FUNC GLOBAL DEFAULT 1 dwc2_udc_ep_activate + 239: 000000003bc08852 176 FUNC GLOBAL DEFAULT 1 cvx16_bist_wdqlvl_init + 383: 000000003bc01612 174 FUNC GLOBAL DEFAULT 1 decompress_lz4 + 200: 000000003bc00d30 174 FUNC GLOBAL DEFAULT 1 load_ddr_param + 366: 000000003bc063a8 170 FUNC GLOBAL DEFAULT 1 LzmaDecode + 157: 000000003bc03760 170 FUNC LOCAL DEFAULT 1 setdma_rx.isra.0 + 338: 000000003bc089cc 166 FUNC GLOBAL DEFAULT 1 cvx16_rdvld_train + 295: 000000003bc01fea 162 FUNC GLOBAL DEFAULT 1 convert_buf_addr + 129: 000000003bc0281e 160 FUNC LOCAL DEFAULT 1 dwc2_ep_enable + 297: 000000003bc08e92 156 FUNC GLOBAL DEFAULT 1 cvx16_pll_init + 342: 000000003bc029d4 154 FUNC GLOBAL DEFAULT 1 usb_gadget_unregister_dri + 298: 000000003bc0141e 152 FUNC GLOBAL DEFAULT 1 bl2_main + 133: 000000003bc02b36 144 FUNC LOCAL DEFAULT 1 dwc2_hsotg_txfifo_flush.c + 151: 000000003bc034ac 142 FUNC LOCAL DEFAULT 1 set_max_pktsize + 395: 000000003bc093dc 132 FUNC GLOBAL DEFAULT 1 pll_init + 27: 000000003bc002d6 130 FUNC LOCAL DEFAULT 1 unsigned_num_print + 347: 000000003bc12b80 128 OBJECT GLOBAL DEFAULT 4 cb2_bufArr + 321: 000000003bc12800 128 OBJECT GLOBAL DEFAULT 4 acm_bufArr + 289: 000000003bc12e00 128 OBJECT GLOBAL DEFAULT 4 ep0BuffAllocArr + 274: 000000003bc12a80 128 OBJECT GLOBAL DEFAULT 4 cb0_bufArr + 234: 000000003bc12b00 128 OBJECT GLOBAL DEFAULT 4 cb1_bufArr + 154: 000000003bc035fa 128 FUNC LOCAL DEFAULT 1 dwc2_ep0_complete_out + 263: 000000003bc016c0 126 FUNC GLOBAL DEFAULT 1 decompress + 155: 000000003bc0367a 126 FUNC LOCAL DEFAULT 1 dwc2_udc_ep0_zlp + 258: 000000003bc00b6c 124 FUNC GLOBAL DEFAULT 1 gpio_in_value + 355: 000000003bc00998 122 FUNC GLOBAL DEFAULT 1 ntostr + 211: 000000003bc0021a 120 FUNC GLOBAL DEFAULT 1 jump_to_monitor + 166: 000000003bc04738 114 FUNC LOCAL DEFAULT 1 LzmaDec_WriteRem + 262: 000000003bc08f78 112 FUNC GLOBAL DEFAULT 1 cvx16_clk_gating_enable + 256: 000000003bc08962 106 FUNC GLOBAL DEFAULT 1 cvx16_bist_start_check + 374: 000000003bc08de2 104 FUNC GLOBAL DEFAULT 1 cvx16_dfi_ca_park_prbs + 281: 000000003bc08a72 104 FUNC GLOBAL DEFAULT 1 cvx16_dll_cal + 156: 000000003bc036f8 104 FUNC LOCAL DEFAULT 1 dwc2_udc_ep0_set_stall.is + 169: 000000003bc062c8 102 FUNC LOCAL DEFAULT 1 LzmaDec_AllocateProbs2.is + 330: 000000003bc03c3c 98 FUNC GLOBAL DEFAULT 1 dwc2_udc_set_halt + 153: 000000003bc03598 98 FUNC LOCAL DEFAULT 1 dwc2_udc_ep_set_stall + 315: 000000003bc00934 96 FUNC GLOBAL DEFAULT 1 init_comm_info + 303: 000000003bc08902 96 FUNC GLOBAL DEFAULT 1 cvx16_bist_wdmlvl_init + 264: 000000003bc086c2 96 FUNC GLOBAL DEFAULT 1 cvx16_bist_wr_sram_init + 238: 000000003bc00a6c 96 FUNC GLOBAL DEFAULT 1 memcpy + 152: 000000003bc0353a 94 FUNC LOCAL DEFAULT 1 dwc2_udc_ep_clear_stall + 134: 000000003bc02bc6 94 FUNC LOCAL DEFAULT 1 kill_all_requests.isra.0 + 327: 000000003bc08ada 92 FUNC GLOBAL DEFAULT 1 cvx16_clk_normal + 60: 000000003bc01ad0 92 FUNC LOCAL DEFAULT 1 getDescAcm + 329: 000000003bc00a12 90 FUNC GLOBAL DEFAULT 1 memset + 114: 000000003bc0b618 88 OBJECT LOCAL DEFAULT 2 g_driver + 336: 000000003bc07f2c 86 FUNC GLOBAL DEFAULT 1 XXH32_reset + 313: 000000003bc02c24 86 FUNC GLOBAL DEFAULT 1 dwc2_disconnect + 131: 000000003bc02952 84 FUNC LOCAL DEFAULT 1 dwc2_dequeue + 205: 000000003bc00aec 82 FUNC GLOBAL DEFAULT 1 putchar_l + 57: 000000003bc0184a 82 FUNC LOCAL DEFAULT 1 get_unicode_string + 194: 000000003bc08400 80 FUNC GLOBAL DEFAULT 1 axi_mon_start_all + 138: 000000003bc0b6a0 80 OBJECT LOCAL DEFAULT 2 dwc2_ep_ops + 112: 000000003bc0b5c0 80 OBJECT LOCAL DEFAULT 2 drv_obj + 110: 000000003bc0b558 80 OBJECT LOCAL DEFAULT 2 descriptorsHs + 109: 000000003bc0b508 80 OBJECT LOCAL DEFAULT 2 descriptorsFs + 59: 000000003bc01b56 80 FUNC LOCAL DEFAULT 1 bulkInCmpl + 217: 000000003bc08674 78 FUNC GLOBAL DEFAULT 1 cvx16_bist_wr_prbs_init + 290: 000000003bc03460 76 FUNC GLOBAL DEFAULT 1 usb_gadget_handle_interru + 233: 000000003bc03b00 76 FUNC GLOBAL DEFAULT 1 dwc2_write_fifo_ep0 + 364: 000000003bc005ec 74 FUNC GLOBAL DEFAULT 1 reset_c906l + 363: 000000003bc00636 74 FUNC GLOBAL DEFAULT 1 setup_dl_flag + 323: 000000003bc0632e 74 FUNC GLOBAL DEFAULT 1 LzmaProps_Decode + 284: 000000003bc08f2e 74 FUNC GLOBAL DEFAULT 1 cvx16_clk_gating_disable + 292: 000000003bc08c9e 72 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 215: 000000003bc03b4c 72 FUNC GLOBAL DEFAULT 1 dwc2_set_address + 145: 000000003bc0ae18 72 OBJECT LOCAL DEFAULT 1 dwc2_udc_ops + 127: 000000003bc0279e 72 FUNC LOCAL DEFAULT 1 pullup + 392: 000000003bc028cc 70 FUNC GLOBAL DEFAULT 1 udc_reinit + 236: 000000003bc02af0 70 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_wait_bit_set + 223: 000000003bc08722 70 FUNC GLOBAL DEFAULT 1 cvx16_bist_rdglvl_init + 382: 000000003bc0391c 68 FUNC GLOBAL DEFAULT 1 dwc2_ep_fifo_write + 371: 000000003bc03abc 68 FUNC GLOBAL DEFAULT 1 dwc2_ep_fifo_read + 228: 000000003bc00834 68 FUNC GLOBAL DEFAULT 1 switch_rtc_mode_2nd_stage + 221: 000000003bc08c5a 68 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 56: 000000003bc01808 66 FUNC LOCAL DEFAULT 1 bind + 42: 000000003bc014b8 66 FUNC LOCAL DEFAULT 1 SzAlloc + 380: 000000003bc08154 64 FUNC GLOBAL DEFAULT 1 XXH32_digest + 356: 000000003bc046c6 64 FUNC GLOBAL DEFAULT 1 usb_polling + 351: 000000003bc03bfc 64 FUNC GLOBAL DEFAULT 1 dwc2_udc_set_nak + 310: 000000003bc00c20 64 FUNC GLOBAL DEFAULT 1 load_image_by_usb + 306: 000000003bc02912 64 FUNC GLOBAL DEFAULT 1 dwc2_done + 242: 000000003bc03bbc 64 FUNC GLOBAL DEFAULT 1 dwc2_ep0_write + 132: 000000003bc02ab4 60 FUNC LOCAL DEFAULT 1 wakeup + 267: 000000003bc08ce6 58 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 126: 000000003bc02764 58 FUNC LOCAL DEFAULT 1 dwc2_free_request + 232: 000000003bc08d20 56 FUNC GLOBAL DEFAULT 1 cvx16_wait_for_dfi_init_c + 128: 000000003bc027e6 56 FUNC LOCAL DEFAULT 1 dwc2_alloc_request + 50: 000000003bc0174a 56 FUNC LOCAL DEFAULT 1 requestMemAlloc + 381: 000000003bc08194 52 FUNC GLOBAL DEFAULT 1 ddr_init + 252: 000000003bc005ba 50 FUNC GLOBAL DEFAULT 1 panic_handler + 230: 000000003bc04706 50 FUNC GLOBAL DEFAULT 1 crc16_ccitt + 296: 000000003bc06378 48 FUNC GLOBAL DEFAULT 1 LzmaDec_AllocateProbs + 287: 000000003bc022a6 48 FUNC GLOBAL DEFAULT 1 get_usb_polling_timeout_v + 285: 000000003bc071de 48 FUNC GLOBAL DEFAULT 1 LZ4F_createDecompressionC + 24: 000000003bc132c8 48 OBJECT LOCAL DEFAULT 4 fw_dynamic_info + 390: 000000003bc0999a 46 FUNC GLOBAL DEFAULT 1 ctrl_init_high_patch + 253: 000000003bc029a6 46 FUNC GLOBAL DEFAULT 1 dwc2_nuke + 246: 000000003bc099c8 46 FUNC GLOBAL DEFAULT 1 ctrl_init_low_patch + 54: 000000003bc017b4 46 FUNC LOCAL DEFAULT 1 disconnect + 293: 000000003bc08d9a 44 FUNC GLOBAL DEFAULT 1 cvx16_INT_ISR_08 + 179: 000000003bc079ea 44 FUNC LOCAL DEFAULT 1 XXH32_avalanche + 304: 000000003bc0018a 42 FUNC GLOBAL DEFAULT 1 udelay + 254: 000000003bc001e2 42 FUNC GLOBAL DEFAULT 1 get_random_from_timer + 61: 000000003bc01b2c 42 FUNC LOCAL DEFAULT 1 reqComplete + 343: 000000003bc015e8 40 FUNC GLOBAL DEFAULT 1 LZ4_calloc + 288: 000000003bc03b94 40 FUNC GLOBAL DEFAULT 1 dwc2_ep0_read + 231: 000000003bc08d72 40 FUNC GLOBAL DEFAULT 1 cvx16_set_dfi_init_comple + 389: 000000003bc08e6c 38 FUNC GLOBAL DEFAULT 1 cvx16_set_dfi_init_start + 358: 000000003bc06fea 38 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_using + 55: 000000003bc017e2 38 FUNC LOCAL DEFAULT 1 unbind + 332: 000000003bc0a170 37 OBJECT GLOBAL DEFAULT 1 hex2ascii_data + 273: 000000003bc00156 36 FUNC GLOBAL DEFAULT 1 flush_dcache_range + 266: 000000003bc001be 36 FUNC GLOBAL DEFAULT 1 get_timer + 241: 000000003bc02a90 36 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_clear_bit + 171: 000000003bc06452 36 FUNC LOCAL DEFAULT 1 LZ4F_readLE32 + 360: 000000003bc093ba 34 FUNC GLOBAL DEFAULT 1 ctrl_init_detect_dram_siz + 244: 000000003bc02a6e 34 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_set_bit + 324: 000000003bc08e4c 32 FUNC GLOBAL DEFAULT 1 cvx16_setting_check + 216: 000000003bc00acc 32 FUNC GLOBAL DEFAULT 1 memmove + 177: 000000003bc0b198 32 OBJECT LOCAL DEFAULT 1 inc32table + 176: 000000003bc0b178 32 OBJECT LOCAL DEFAULT 1 dec64table + 175: 000000003bc0b158 32 OBJECT LOCAL DEFAULT 1 blockSizes.0 + 137: 000000003bc02efa 32 FUNC LOCAL DEFAULT 1 dwc2_ep_disable + 384: 000000003bc0701c 30 FUNC GLOBAL DEFAULT 1 LZ4F_getBlockSize + 367: 000000003bc00be8 30 FUNC GLOBAL DEFAULT 1 usb_id_det + 269: 000000003bc002a4 30 FUNC GLOBAL DEFAULT 1 console_putc + 357: 000000003bc08dc6 28 FUNC GLOBAL DEFAULT 1 cvx16_polling_synp_normal + 335: 000000003bc00b3e 28 FUNC GLOBAL DEFAULT 1 strcmp + 300: 000000003bc062ac 28 FUNC GLOBAL DEFAULT 1 LzmaDec_FreeProbs + 84: 000000003bc13388 28 OBJECT LOCAL DEFAULT 4 serialDesc + 82: 000000003bc13358 28 OBJECT LOCAL DEFAULT 4 productDesc + 52: 000000003bc01784 28 FUNC LOCAL DEFAULT 1 acm_complete_set_line_cod + 305: 000000003bc08d58 26 FUNC GLOBAL DEFAULT 1 cvx16_polling_dfi_init_st + 260: 000000003bc093a0 26 FUNC GLOBAL DEFAULT 1 cvx16_en_rec_vol_mode + 224: 000000003bc09ff0 26 OBJECT GLOBAL DEFAULT 1 build_message + 37: 000000003bc00c06 26 FUNC LOCAL DEFAULT 1 read_time_ms + 207: 000000003bc045d6 24 FUNC GLOBAL DEFAULT 1 dwc2_ep0_kick + 142: 000000003bc0add8 24 OBJECT LOCAL DEFAULT 1 __func__.3 + 393: 000000003bc08b36 22 FUNC GLOBAL DEFAULT 1 cvx16_clk_div2 + 370: 000000003bc0081c 22 FUNC GLOBAL DEFAULT 1 sys_pll_init + 251: 000000003bc08b4c 22 FUNC GLOBAL DEFAULT 1 cvx16_clk_div40 + 209: 000000003bc03906 22 FUNC GLOBAL DEFAULT 1 dwc2_udc_pre_setup + 180: 000000003bc07a16 22 FUNC LOCAL DEFAULT 1 XXH_read32 + 125: 000000003bc0274e 22 FUNC LOCAL DEFAULT 1 dwc2_fifo_status + 143: 000000003bc0adf0 21 OBJECT LOCAL DEFAULT 1 __func__.4 + 344: 000000003bc002c2 20 FUNC GLOBAL DEFAULT 1 console_flush + 247: 000000003bc0601c 20 FUNC GLOBAL DEFAULT 1 LzmaDec_Init + 53: 000000003bc017a0 20 FUNC LOCAL DEFAULT 1 reset + 141: 000000003bc0adc0 19 OBJECT LOCAL DEFAULT 1 __func__.2 + 377: 000000003bc00b5a 18 FUNC GLOBAL DEFAULT 1 strlen + 354: 000000003bc032fe 18 FUNC GLOBAL DEFAULT 1 dwc2_phy_to_log_ep + 139: 000000003bc0ad90 18 OBJECT LOCAL DEFAULT 1 __func__.0 + 111: 000000003bc0b5a8 18 OBJECT LOCAL DEFAULT 2 devHsDesc + 140: 000000003bc0ada8 17 OBJECT LOCAL DEFAULT 1 __func__.1 + 302: 000000003bc0017a 16 FUNC GLOBAL DEFAULT 1 trig_simulation_timer + 272: 000000003bc00294 16 FUNC GLOBAL DEFAULT 1 _uart_putc + 212: 000000003bc13280 16 OBJECT GLOBAL DEFAULT 4 rsp_bufArr + 201: 000000003bc0a010 16 OBJECT GLOBAL DEFAULT 1 version_string + 87: 000000003bc133a8 16 OBJECT LOCAL DEFAULT 4 vendorDesc + 83: 000000003bc13378 16 OBJECT LOCAL DEFAULT 4 serial.2 + 46: 000000003bc0a790 16 OBJECT LOCAL DEFAULT 1 __func__.1 + 318: 000000003bc00680 14 FUNC GLOBAL DEFAULT 1 sys_switch_all_to_pll + 261: 000000003bc0020c 14 FUNC GLOBAL DEFAULT 1 read_count_tick + 349: 000000003bc07010 12 FUNC GLOBAL DEFAULT 1 LZ4F_isError + 328: 000000003bc0229a 12 FUNC GLOBAL DEFAULT 1 usb_vbus_det + 148: 000000003bc0ae80 12 OBJECT LOCAL DEFAULT 1 ep2name + 146: 000000003bc0ae60 12 OBJECT LOCAL DEFAULT 1 ep0name + 147: 000000003bc0ae70 11 OBJECT LOCAL DEFAULT 1 ep1name + 122: 000000003bc0ab90 11 OBJECT LOCAL DEFAULT 1 __func__.4 + 362: 000000003bc0014c 10 FUNC GLOBAL DEFAULT 1 sync_cache + 240: 000000003bc028c2 10 FUNC GLOBAL DEFAULT 1 dwc2_get_ep0_name + 193: 000000003bc001b4 10 FUNC GLOBAL DEFAULT 1 mdelay + 192: 000000003bc083f6 10 FUNC GLOBAL DEFAULT 1 get_ddr_vendor + 149: 000000003bc0ae90 10 OBJECT LOCAL DEFAULT 1 ep3name + 117: 000000003bc0b680 10 OBJECT LOCAL DEFAULT 2 qualifierDesc + 144: 000000003bc0ae08 9 OBJECT LOCAL DEFAULT 1 driver_name + 92: 000000003bc0b478 9 OBJECT LOCAL DEFAULT 2 acm_data_interface_desc + 91: 000000003bc0b468 9 OBJECT LOCAL DEFAULT 2 acm_control_interface_des + 88: 000000003bc0b448 9 OBJECT LOCAL DEFAULT 2 ConfDesc + 388: 000000003bc133c0 8 OBJECT GLOBAL DEFAULT 4 the_controller + 386: 000000003bc13308 8 OBJECT GLOBAL DEFAULT 4 acm + 365: 000000003bc133c8 8 OBJECT GLOBAL DEFAULT 4 reg_set + 326: 000000003bc133d0 8 OBJECT GLOBAL DEFAULT 4 reg_span + 245: 000000003bc132c0 8 OBJECT GLOBAL DEFAULT 4 setup_bufArr + 214: 000000003bc133b8 8 OBJECT GLOBAL DEFAULT 4 reg + 213: 000000003bc133d8 8 OBJECT GLOBAL DEFAULT 4 reg_step + 197: 000000003bc0b440 8 OBJECT GLOBAL DEFAULT 2 time_records + 119: 000000003bc0b698 8 OBJECT LOCAL DEFAULT 2 setup_buf + 118: 000000003bc0b690 8 OBJECT LOCAL DEFAULT 2 rsp_buf + 115: 000000003bc0b670 8 OBJECT LOCAL DEFAULT 2 handler + 113: 000000003bc0b610 8 OBJECT LOCAL DEFAULT 2 ep0BuffAlloc + 108: 000000003bc0b500 8 OBJECT LOCAL DEFAULT 2 cmdBufAlloc + 107: 000000003bc0b4f8 8 OBJECT LOCAL DEFAULT 2 cb2_buf + 106: 000000003bc0b4f0 8 OBJECT LOCAL DEFAULT 2 cb1_buf + 105: 000000003bc0b4e8 8 OBJECT LOCAL DEFAULT 2 cb0_buf + 103: 000000003bc0b4d8 8 OBJECT LOCAL DEFAULT 2 bulkBufAlloc + 89: 000000003bc0b458 8 OBJECT LOCAL DEFAULT 2 acm_buf + 75: 000000003bc13350 8 OBJECT LOCAL DEFAULT 4 fip_buf + 74: 000000003bc13348 8 OBJECT LOCAL DEFAULT 4 epOut + 73: 000000003bc13340 8 OBJECT LOCAL DEFAULT 4 epIn + 72: 000000003bc13338 8 OBJECT LOCAL DEFAULT 4 ep0Req + 71: 000000003bc13330 8 OBJECT LOCAL DEFAULT 4 ep0Buff + 68: 000000003bc13328 8 OBJECT LOCAL DEFAULT 4 cmdBuf + 67: 000000003bc13320 8 OBJECT LOCAL DEFAULT 4 bulkOutReq + 66: 000000003bc13318 8 OBJECT LOCAL DEFAULT 4 bulkInReq + 65: 000000003bc13310 8 OBJECT LOCAL DEFAULT 4 bulkBuf + 45: 000000003bc0a788 8 OBJECT LOCAL DEFAULT 1 __func__.0 + 44: 000000003bc13300 8 OBJECT LOCAL DEFAULT 4 comp_alloc_size + 43: 000000003bc132f8 8 OBJECT LOCAL DEFAULT 4 comp_alloc_buf + 121: 000000003bc0ab88 7 OBJECT LOCAL DEFAULT 1 __func__.1 + 104: 000000003bc0b4e0 7 OBJECT LOCAL DEFAULT 2 capabilityExtDesc + 100: 000000003bc0b4c0 7 OBJECT LOCAL DEFAULT 2 acm_hs_out_desc + 99: 000000003bc0b4b8 7 OBJECT LOCAL DEFAULT 2 acm_hs_notify_desc + 98: 000000003bc0b4b0 7 OBJECT LOCAL DEFAULT 2 acm_hs_in_desc + 96: 000000003bc0b4a0 7 OBJECT LOCAL DEFAULT 2 acm_fs_out_desc + 95: 000000003bc0b498 7 OBJECT LOCAL DEFAULT 2 acm_fs_notify_desc + 94: 000000003bc0b490 7 OBJECT LOCAL DEFAULT 2 acm_fs_in_desc + 359: 000000003bc015e2 6 FUNC GLOBAL DEFAULT 1 LZ4_malloc + 286: 000000003bc0173e 6 FUNC GLOBAL DEFAULT 1 DWC2_UncachedRead32 + 195: 000000003bc0215c 6 FUNC GLOBAL DEFAULT 1 AcmIsr + 123: 000000003bc0aba0 6 OBJECT LOCAL DEFAULT 1 __func__.5 + 120: 000000003bc0ab80 5 OBJECT LOCAL DEFAULT 1 __func__.0 + 102: 000000003bc0b4d0 5 OBJECT LOCAL DEFAULT 2 bosDesc + 101: 000000003bc0b4c8 5 OBJECT LOCAL DEFAULT 2 acm_union_desc + 97: 000000003bc0b4a8 5 OBJECT LOCAL DEFAULT 2 acm_header_desc + 90: 000000003bc0b460 5 OBJECT LOCAL DEFAULT 2 acm_call_mgmt_descriptor + 387: 000000003bc01744 4 FUNC GLOBAL DEFAULT 1 DWC2_UncachedWrite32 + 372: 000000003bc0b6fc 4 OBJECT GLOBAL DEFAULT 2 ddr_data_rate + 316: 000000003bc133f4 4 OBJECT GLOBAL DEFAULT 4 dev_freq + 270: 000000003bc133f0 4 OBJECT GLOBAL DEFAULT 4 rddata + 257: 000000003bc133fc 4 OBJECT GLOBAL DEFAULT 4 mod_freq + 203: 000000003bc00994 4 FUNC GLOBAL DEFAULT 1 dec_verify_image + 199: 000000003bc133f8 4 OBJECT GLOBAL DEFAULT 4 freq_in + 196: 000000003bc13400 4 OBJECT GLOBAL DEFAULT 4 tar_freq + 161: 000000003bc0b6f4 4 OBJECT LOCAL DEFAULT 2 ep_fifo_size + 160: 000000003bc0b6f0 4 OBJECT LOCAL DEFAULT 2 ep0_fifo_size + 116: 000000003bc0b678 4 OBJECT LOCAL DEFAULT 2 languageDesc + 93: 000000003bc0b488 4 OBJECT LOCAL DEFAULT 2 acm_descriptor + 86: 000000003bc133ec 4 OBJECT LOCAL DEFAULT 4 ts + 85: 000000003bc133e8 4 OBJECT LOCAL DEFAULT 4 transfer_size + 77: 000000003bc133e4 4 OBJECT LOCAL DEFAULT 4 fip_tx_size + 76: 000000003bc133e0 4 OBJECT LOCAL DEFAULT 4 fip_tx_offset + 369: 000000003bc0b6f8 2 OBJECT GLOBAL DEFAULT 2 cv_usb_vid + 276: 000000003bc00832 2 FUNC GLOBAL DEFAULT 1 switch_rtc_mode_1st_stage + 255: 000000003bc0979a 2 FUNC GLOBAL DEFAULT 1 cvx16_dram_cap_check + 243: 000000003bc028c0 2 FUNC GLOBAL DEFAULT 1 dwc2_log_write + 235: 000000003bc08e4a 2 FUNC GLOBAL DEFAULT 1 cvx16_wrlvl_req + 210: 000000003bc00292 2 FUNC GLOBAL DEFAULT 1 jump_to_loader_2nd + 206: 000000003bc01610 2 FUNC GLOBAL DEFAULT 1 LZ4_free + 130: 000000003bc028be 2 FUNC LOCAL DEFAULT 1 dwc2_fifo_flush + 63: 000000003bc01fe8 2 FUNC LOCAL DEFAULT 1 suspend + 51: 000000003bc01782 2 FUNC LOCAL DEFAULT 1 requestMemFree + 49: 000000003bc01748 2 FUNC LOCAL DEFAULT 1 resume + 41: 000000003bc014b6 2 FUNC LOCAL DEFAULT 1 SzFree + 385: 000000003bc1340c 1 OBJECT GLOBAL DEFAULT 4 ddr_capacity + 378: 000000003bc1340d 1 OBJECT GLOBAL DEFAULT 4 ddr_type + 308: 000000003bc1340e 1 OBJECT GLOBAL DEFAULT 4 ddr_vendor + 249: 000000003bc1340f 1 OBJECT GLOBAL DEFAULT 4 pkg + 220: 000000003bc13405 1 OBJECT GLOBAL DEFAULT 4 acm_configValue + 81: 000000003bc1340b 1 OBJECT LOCAL DEFAULT 4 mem_alloc_cnt + 80: 000000003bc1340a 1 OBJECT LOCAL DEFAULT 4 is_serial_patched.3 + 79: 000000003bc13409 1 OBJECT LOCAL DEFAULT 4 flagReboot + 78: 000000003bc13408 1 OBJECT LOCAL DEFAULT 4 flagEnterDL + 70: 000000003bc13407 1 OBJECT LOCAL DEFAULT 4 configValue + 69: 000000003bc13406 1 OBJECT LOCAL DEFAULT 4 configBreak + 64: 000000003bc13404 1 OBJECT LOCAL DEFAULT 4 ack_idx.6 + 368: 000000003bc0b700 0 NOTYPE GLOBAL DEFAULT 3 __STACKS_START__ + 361: 00000000044000c0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_get_number_of_r + 352: 000000003bc00000 0 NOTYPE GLOBAL DEFAULT 1 __RO_START__ + 350: 000000003bc0d800 0 NOTYPE GLOBAL DEFAULT 4 __BSS_START__ + 348: 0000000004400060 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_load_image + 346: 000000003bc0b434 0 NOTYPE GLOBAL DEFAULT 1 __RO_END__ + 322: 0000000004400040 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_set_boot_src + 319: 000000003bc13410 0 NOTYPE GLOBAL DEFAULT 4 __BSS_END__ + 311: 000000003bc00000 0 NOTYPE GLOBAL DEFAULT 1 bl2_entrypoint + 309: 00000000044000a0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_image_crc + 299: 000000003bc0b700 0 NOTYPE GLOBAL DEFAULT 2 __DATA_END__ + 291: 000000003bc13410 0 NOTYPE GLOBAL DEFAULT 4 __BL2_END__ + 265: 0000000000005c10 0 NOTYPE GLOBAL DEFAULT ABS __BSS_SIZE__ + 259: 00000000044000e0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_verify_rsa + 250: 000000003bc0d700 0 NOTYPE GLOBAL DEFAULT 3 __STACKS_END__ + 226: 000000003bc0b440 0 NOTYPE GLOBAL DEFAULT 2 __DATA_START__ + 208: 0000000004400020 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_get_boot_src + 202: 0000000004400080 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_flash_init + 198: 0000000004400100 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_cryptodma_aes_d + 191: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 190: 0000000000000000 0 FILE LOCAL DEFAULT ABS phy_init.c + 189: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddrc_init.c + 188: 0000000000000000 0 FILE LOCAL DEFAULT ABS cvx16_dram_cap_check.c + 187: 0000000000000000 0 FILE LOCAL DEFAULT ABS cvx16_pinmux.c + 186: 0000000000000000 0 FILE LOCAL DEFAULT ABS phy_pll_init.c + 185: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_sys.c + 184: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_sys_bring_up.c + 183: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_pkg_info.c + 182: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr.c + 178: 0000000000000000 0 FILE LOCAL DEFAULT ABS xxhash.c + 170: 0000000000000000 0 FILE LOCAL DEFAULT ABS lz4_all.c + 165: 0000000000000000 0 FILE LOCAL DEFAULT ABS LzmaDec.c + 163: 0000000000000000 0 FILE LOCAL DEFAULT ABS crc16.c + 162: 0000000000000000 0 FILE LOCAL DEFAULT ABS cv_usb.c + 150: 0000000000000000 0 FILE LOCAL DEFAULT ABS dwc2_udc_otg_xfer_dma.c + 124: 0000000000000000 0 FILE LOCAL DEFAULT ABS dwc2_udc_otg.c + 48: 0000000000000000 0 FILE LOCAL DEFAULT ABS usb_tty.c + 47: 0000000000000000 0 FILE LOCAL DEFAULT ABS cps_cvi.c + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS decompress.c + 36: 0000000000000000 0 FILE LOCAL DEFAULT ABS bl2_main.c + 35: 0000000000000000 0 FILE LOCAL DEFAULT ABS platform_device.c + 34: 0000000000000000 0 FILE LOCAL DEFAULT ABS strlen.c + 33: 0000000000000000 0 FILE LOCAL DEFAULT ABS strcmp.c + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS putchar.c + 31: 0000000000000000 0 FILE LOCAL DEFAULT ABS mem.c + 30: 0000000000000000 0 FILE LOCAL DEFAULT ABS misc.c + 29: 0000000000000000 0 FILE LOCAL DEFAULT ABS security.c + 28: 0000000000000000 0 FILE LOCAL DEFAULT ABS platform.c + 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS tf_printf.c + 25: 0000000000000000 0 FILE LOCAL DEFAULT ABS uart_dw.c + 23: 0000000000000000 0 FILE LOCAL DEFAULT ABS bl2_helper.c + 22: 0000000000000000 0 FILE LOCAL DEFAULT ABS delay_timer.c + 21: 0000000000000000 0 FILE LOCAL DEFAULT ABS cache.c + 20: 0000000000000000 0 FILE LOCAL DEFAULT ABS cpu_helper.c + 19: 000000003bc00144 0 NOTYPE LOCAL DEFAULT 1 die + 18: 000000003bc0012c 0 NOTYPE LOCAL DEFAULT 1 bss_clear + 17: 000000003bc00144 0 NOTYPE LOCAL DEFAULT 1 trap_vector + 16: 000000003bc00020 0 NOTYPE LOCAL DEFAULT 1 bl2_entrypoint_real + 15: 0000000000000000 0 FILE LOCAL DEFAULT ABS /root/.jenkins/workspace/ + 14: 0000000000000000 0 SECTION LOCAL DEFAULT 14 + 13: 0000000000000000 0 SECTION LOCAL DEFAULT 13 + 12: 0000000000000000 0 SECTION LOCAL DEFAULT 12 + 11: 0000000000000000 0 SECTION LOCAL DEFAULT 11 + 10: 0000000000000000 0 SECTION LOCAL DEFAULT 10 + 9: 0000000000000000 0 SECTION LOCAL DEFAULT 9 + 8: 0000000000000000 0 SECTION LOCAL DEFAULT 8 + 7: 0000000000000000 0 SECTION LOCAL DEFAULT 7 + 6: 0000000000000000 0 SECTION LOCAL DEFAULT 6 + 5: 0000000000000000 0 SECTION LOCAL DEFAULT 5 + 4: 000000003bc0d800 0 SECTION LOCAL DEFAULT 4 + 3: 000000003bc0b700 0 SECTION LOCAL DEFAULT 3 + 2: 000000003bc0b434 0 SECTION LOCAL DEFAULT 2 + 1: 000000003bc00000 0 SECTION LOCAL DEFAULT 1 + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND +Symbol table '.symtab' contains 397 entries: + Num: Value Size Type Bind Vis Ndx Name + diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_entrypoint.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_entrypoint.o new file mode 100644 index 000000000..5b15c11ca Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_entrypoint.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o new file mode 100644 index 000000000..d2f8c8901 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_helper.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o new file mode 100644 index 000000000..089d644cd Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/bl2_main.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o new file mode 100644 index 000000000..4acb4adf3 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/build_message.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o new file mode 100644 index 000000000..a788b0824 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cache.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o new file mode 100644 index 000000000..7c48d860c Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cps_cvi.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o new file mode 100644 index 000000000..004c579c7 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cpu_helper.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o new file mode 100644 index 000000000..c8f34d3a3 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/crc16.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o new file mode 100644 index 000000000..2e2e735a0 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cv_usb.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o new file mode 100644 index 000000000..469de3283 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o new file mode 100644 index 000000000..df60916d2 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/cvx16_pinmux.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o new file mode 100644 index 000000000..1dbb9ebf7 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o new file mode 100644 index 000000000..72822eb6f Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_patch_regs.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o new file mode 100644 index 000000000..e9f4caf0d Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_pkg_info.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o new file mode 100644 index 000000000..33a08bcbd Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o new file mode 100644 index 000000000..274c51ef3 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o new file mode 100644 index 000000000..92fda5ec5 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/ddrc_init.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o new file mode 100644 index 000000000..a1b1590f9 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/decompress.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o new file mode 100644 index 000000000..35091115b Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/delay_timer.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o new file mode 100644 index 000000000..0145912f2 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o new file mode 100644 index 000000000..acd3759cc Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o new file mode 100644 index 000000000..7f34e7cf0 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/lz4_all.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o new file mode 100644 index 000000000..08e4f90b6 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/mem.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o new file mode 100644 index 000000000..030743c93 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o new file mode 100644 index 000000000..87e4f7b57 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/misc_helpers.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o new file mode 100644 index 000000000..9e9abcfe4 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_init.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o new file mode 100644 index 000000000..9c1ab1f25 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/phy_pll_init.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o new file mode 100644 index 000000000..67c27466c Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o new file mode 100644 index 000000000..b8de0b188 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/platform_device.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o new file mode 100644 index 000000000..fda86eb6b Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/putchar.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o new file mode 100644 index 000000000..ad490f555 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/security.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o new file mode 100644 index 000000000..dd8f41302 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strchr.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o new file mode 100644 index 000000000..1660fd445 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strcmp.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o new file mode 100644 index 000000000..260f95a40 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strlen.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o new file mode 100644 index 000000000..95435309e Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strncmp.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o new file mode 100644 index 000000000..d247c14da Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/strnlen.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o new file mode 100644 index 000000000..18931f9d4 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/tf_printf.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o new file mode 100644 index 000000000..baa275a08 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/uart_dw.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o new file mode 100644 index 000000000..4f7788a75 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/usb_tty.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o new file mode 100644 index 000000000..c9f8b107b Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/bl2/xxhash.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros.bin b/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros.bin new file mode 100755 index 000000000..c9902e4a9 --- /dev/null +++ b/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros.bin @@ -0,0 +1 @@ +ï¾­Þ \ No newline at end of file diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros.env b/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros.env new file mode 100644 index 000000000..cff9e1110 --- /dev/null +++ b/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros.env @@ -0,0 +1,2 @@ +MONITOR_RUNADDR=0x0000000080000000 +BLCP_2ND_RUNADDR=0x0000000083f40000 diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/blmacros.dis b/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/blmacros.dis new file mode 100644 index 000000000..b76158f63 --- /dev/null +++ b/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/blmacros.dis @@ -0,0 +1,24 @@ + +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/blmacros.elf: file format elf64-littleriscv +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/blmacros.elf +architecture: riscv:rv64, flags 0x00000112: +EXEC_P, HAS_SYMS, D_PAGED +start address 0x0000000000000000 + +Program Header: + LOAD off 0x0000000000001000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**12 + filesz 0x0000000000000004 memsz 0x0000000000000004 flags r-- + STACK off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**4 + filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw- + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000004 0000000000000000 0000000000000000 00001000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA +SYMBOL TABLE: +0000000000000000 l d .text 0000000000000000 .text +0000000083f40000 g *ABS* 0000000000000000 DEF_BLCP_2ND_RUNADDR +0000000080000000 g *ABS* 0000000000000000 DEF_MONITOR_RUNADDR +0000000080000000 g *ABS* 0000000000000000 DEF_DRAM_BASE + + diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/blmacros.elf b/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/blmacros.elf new file mode 100755 index 000000000..e5027bece Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/blmacros.elf differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/blmacros.ld b/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/blmacros.ld new file mode 100644 index 000000000..44cdce7f4 --- /dev/null +++ b/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/blmacros.ld @@ -0,0 +1,10 @@ +SECTIONS +{ + .text : { + LONG(0xDEADBEEF); + *(*) + } + DEF_DRAM_BASE = 0x80000000; + DEF_MONITOR_RUNADDR = 0x80000000; + DEF_BLCP_2ND_RUNADDR = 0x83f40000; +} diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/blmacros.map b/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/blmacros.map new file mode 100644 index 000000000..42d029824 --- /dev/null +++ b/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/blmacros.map @@ -0,0 +1,39 @@ + +Discarded input sections + + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/build_message.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/build_message.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/build_message.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/build_message.o + .rodata.build_message + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/build_message.o + .rodata.version_string + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/build_message.o + .debug_info 0x0000000000000000 0x89 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/build_message.o + .debug_abbrev 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/build_message.o + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/build_message.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/build_message.o + .debug_macro 0x0000000000000000 0x86e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/build_message.o + .debug_line 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/build_message.o + .debug_str 0x0000000000000000 0x29a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/build_message.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/build_message.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/build_message.o + +Memory Configuration + +Name Origin Length Attributes +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + +.text 0x0000000000000000 0x4 + 0x0000000000000000 0x4 LONG 0xdeadbeef + *(*) + 0x0000000080000000 DEF_DRAM_BASE = 0x80000000 + 0x0000000080000000 DEF_MONITOR_RUNADDR = 0x80000000 + 0x0000000083f40000 DEF_BLCP_2ND_RUNADDR = 0x83f40000 +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/build_message.o +OUTPUT(/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/blmacros.elf elf64-littleriscv) diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/blmacros.sym b/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/blmacros.sym new file mode 100644 index 000000000..9cfdf8696 --- /dev/null +++ b/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/blmacros.sym @@ -0,0 +1,8 @@ + 4: 0000000080000000 0 NOTYPE GLOBAL DEFAULT ABS DEF_DRAM_BASE + 3: 0000000080000000 0 NOTYPE GLOBAL DEFAULT ABS DEF_MONITOR_RUNADDR + 2: 0000000083f40000 0 NOTYPE GLOBAL DEFAULT ABS DEF_BLCP_2ND_RUNADDR + 1: 0000000000000000 0 SECTION LOCAL DEFAULT 1 + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND +Symbol table '.symtab' contains 5 entries: + Num: Value Size Type Bind Vis Ndx Name + diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/build_message.o b/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/build_message.o new file mode 100644 index 000000000..4acb4adf3 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/blmacros/build_message.o differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/chip_conf.bin b/fsbl/build/cv1800c_wevb_0009a_spinor/chip_conf.bin new file mode 100644 index 000000000..d2dabd686 Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/chip_conf.bin differ diff --git a/fsbl/build/cv1800c_wevb_0009a_spinor/fip.bin b/fsbl/build/cv1800c_wevb_0009a_spinor/fip.bin new file mode 100644 index 000000000..628b7868e Binary files /dev/null and b/fsbl/build/cv1800c_wevb_0009a_spinor/fip.bin differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2.bin b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2.bin new file mode 100755 index 000000000..054a70f5c Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2.bin differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o new file mode 100644 index 000000000..5a4ff7163 Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o new file mode 100644 index 000000000..ade7bff91 Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2.dis b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2.dis new file mode 100644 index 000000000..7743c9a49 --- /dev/null +++ b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2.dis @@ -0,0 +1,14885 @@ + +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2.elf: file format elf64-littleriscv +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2.elf +architecture: riscv:rv64, flags 0x00000112: +EXEC_P, HAS_SYMS, D_PAGED +start address 0x000000003bc00000 + +Program Header: + LOAD off 0x0000000000001000 vaddr 0x000000003bc00000 paddr 0x000000003bc00000 align 2**12 + filesz 0x000000000000ba10 memsz 0x0000000000013810 flags rwx + STACK off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**4 + filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw- + +Sections: +Idx Name Size VMA LMA File off Algn + 0 ro 0000b74c 000000003bc00000 000000003bc00000 00001000 2**3 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 000002c4 000000003bc0b74c 000000003bc0b74c 0000c74c 2**3 + CONTENTS, ALLOC, LOAD, DATA + 2 stacks 00002030 000000003bc0ba10 000000003bc0ba10 0000ca10 2**0 + ALLOC + 3 .bss 00005c10 000000003bc0dc00 000000003bc0dc00 0000ca10 2**9 + ALLOC + 4 .debug_info 0006993c 0000000000000000 0000000000000000 0000ca10 2**0 + CONTENTS, READONLY, DEBUGGING + 5 .debug_abbrev 00004df7 0000000000000000 0000000000000000 0007634c 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_aranges 00001e80 0000000000000000 0000000000000000 0007b150 2**4 + CONTENTS, READONLY, DEBUGGING + 7 .debug_macro 00009b13 0000000000000000 0000000000000000 0007cfd0 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_line 000777fd 0000000000000000 0000000000000000 00086ae3 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_str 0002399c 0000000000000000 0000000000000000 000fe2e0 2**0 + CONTENTS, READONLY, DEBUGGING + 10 .comment 0000001d 0000000000000000 0000000000000000 00121c7c 2**0 + CONTENTS, READONLY + 11 .debug_ranges 000301e0 0000000000000000 0000000000000000 00121c99 2**0 + CONTENTS, READONLY, DEBUGGING + 12 .debug_frame 00004810 0000000000000000 0000000000000000 00151e80 2**3 + CONTENTS, READONLY, DEBUGGING + 13 .debug_loc 000c2b4e 0000000000000000 0000000000000000 00156690 2**0 + CONTENTS, READONLY, DEBUGGING +SYMBOL TABLE: +000000003bc00000 l d ro 0000000000000000 ro +000000003bc0b74c l d .data 0000000000000000 .data +000000003bc0ba10 l d stacks 0000000000000000 stacks +000000003bc0dc00 l d .bss 0000000000000000 .bss +0000000000000000 l d .debug_info 0000000000000000 .debug_info +0000000000000000 l d .debug_abbrev 0000000000000000 .debug_abbrev +0000000000000000 l d .debug_aranges 0000000000000000 .debug_aranges +0000000000000000 l d .debug_macro 0000000000000000 .debug_macro +0000000000000000 l d .debug_line 0000000000000000 .debug_line +0000000000000000 l d .debug_str 0000000000000000 .debug_str +0000000000000000 l d .comment 0000000000000000 .comment +0000000000000000 l d .debug_ranges 0000000000000000 .debug_ranges +0000000000000000 l d .debug_frame 0000000000000000 .debug_frame +0000000000000000 l d .debug_loc 0000000000000000 .debug_loc +0000000000000000 l df *ABS* 0000000000000000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_entrypoint.o +000000003bc00020 l ro 0000000000000000 bl2_entrypoint_real +000000003bc00144 l ro 0000000000000000 trap_vector +000000003bc0012c l ro 0000000000000000 bss_clear +000000003bc00144 l ro 0000000000000000 die +0000000000000000 l df *ABS* 0000000000000000 cpu_helper.c +0000000000000000 l df *ABS* 0000000000000000 cache.c +0000000000000000 l df *ABS* 0000000000000000 delay_timer.c +0000000000000000 l df *ABS* 0000000000000000 bl2_helper.c +000000003bc136c8 l O .bss 0000000000000030 fw_dynamic_info +0000000000000000 l df *ABS* 0000000000000000 uart_dw.c +0000000000000000 l df *ABS* 0000000000000000 tf_printf.c +000000003bc002d6 l F ro 0000000000000082 unsigned_num_print +0000000000000000 l df *ABS* 0000000000000000 platform.c +0000000000000000 l df *ABS* 0000000000000000 security.c +0000000000000000 l df *ABS* 0000000000000000 misc.c +0000000000000000 l df *ABS* 0000000000000000 mem.c +0000000000000000 l df *ABS* 0000000000000000 putchar.c +0000000000000000 l df *ABS* 0000000000000000 strcmp.c +0000000000000000 l df *ABS* 0000000000000000 strlen.c +0000000000000000 l df *ABS* 0000000000000000 platform_device.c +0000000000000000 l df *ABS* 0000000000000000 bl2_main.c +000000003bc00c14 l F ro 000000000000001a read_time_ms +000000003bc0dc00 l O .bss 0000000000001000 fip_param2 +000000003bc0ec00 l O .bss 0000000000004000 sram_union_buf +0000000000000000 l df *ABS* 0000000000000000 decompress.c +000000003bc014c4 l F ro 0000000000000002 SzFree +000000003bc014c6 l F ro 0000000000000042 SzAlloc +000000003bc136f8 l O .bss 0000000000000008 comp_alloc_buf +000000003bc13700 l O .bss 0000000000000008 comp_alloc_size +000000003bc0aaa0 l O ro 0000000000000008 __func__.0 +000000003bc0aaa8 l O ro 0000000000000010 __func__.1 +0000000000000000 l df *ABS* 0000000000000000 cps_cvi.c +0000000000000000 l df *ABS* 0000000000000000 usb_tty.c +000000003bc01756 l F ro 0000000000000002 resume +000000003bc01758 l F ro 0000000000000038 requestMemAlloc +000000003bc01790 l F ro 0000000000000002 requestMemFree +000000003bc01792 l F ro 000000000000001c acm_complete_set_line_coding +000000003bc017ae l F ro 0000000000000014 reset +000000003bc017c2 l F ro 000000000000002e disconnect +000000003bc017f0 l F ro 0000000000000026 unbind +000000003bc01816 l F ro 0000000000000042 bind +000000003bc01858 l F ro 0000000000000052 get_unicode_string +000000003bc018aa l F ro 0000000000000234 bulkOutCmpl +000000003bc01b64 l F ro 0000000000000050 bulkInCmpl +000000003bc01ade l F ro 000000000000005c getDescAcm +000000003bc01b3a l F ro 000000000000002a reqComplete +000000003bc01bb4 l F ro 0000000000000442 setup +000000003bc01ff6 l F ro 0000000000000002 suspend +000000003bc13804 l O .bss 0000000000000001 ack_idx.6 +000000003bc13710 l O .bss 0000000000000008 bulkBuf +000000003bc13718 l O .bss 0000000000000008 bulkInReq +000000003bc13720 l O .bss 0000000000000008 bulkOutReq +000000003bc13728 l O .bss 0000000000000008 cmdBuf +000000003bc13806 l O .bss 0000000000000001 configBreak +000000003bc13807 l O .bss 0000000000000001 configValue +000000003bc13730 l O .bss 0000000000000008 ep0Buff +000000003bc13738 l O .bss 0000000000000008 ep0Req +000000003bc13740 l O .bss 0000000000000008 epIn +000000003bc13748 l O .bss 0000000000000008 epOut +000000003bc13750 l O .bss 0000000000000008 fip_buf +000000003bc137e0 l O .bss 0000000000000004 fip_tx_offset +000000003bc137e4 l O .bss 0000000000000004 fip_tx_size +000000003bc13808 l O .bss 0000000000000001 flagEnterDL +000000003bc13809 l O .bss 0000000000000001 flagReboot +000000003bc1380a l O .bss 0000000000000001 is_serial_patched.3 +000000003bc1380b l O .bss 0000000000000001 mem_alloc_cnt +000000003bc13758 l O .bss 000000000000001c productDesc +000000003bc13778 l O .bss 0000000000000010 serial.2 +000000003bc13788 l O .bss 000000000000001c serialDesc +000000003bc137e8 l O .bss 0000000000000004 transfer_size +000000003bc137ec l O .bss 0000000000000004 ts +000000003bc137a8 l O .bss 0000000000000010 vendorDesc +000000003bc0b758 l O .data 0000000000000009 ConfDesc +000000003bc0b768 l O .data 0000000000000008 acm_buf +000000003bc0b770 l O .data 0000000000000005 acm_call_mgmt_descriptor +000000003bc0b778 l O .data 0000000000000009 acm_control_interface_desc +000000003bc0b788 l O .data 0000000000000009 acm_data_interface_desc +000000003bc0b798 l O .data 0000000000000004 acm_descriptor +000000003bc0b7a0 l O .data 0000000000000007 acm_fs_in_desc +000000003bc0b7a8 l O .data 0000000000000007 acm_fs_notify_desc +000000003bc0b7b0 l O .data 0000000000000007 acm_fs_out_desc +000000003bc0b7b8 l O .data 0000000000000005 acm_header_desc +000000003bc0b7c0 l O .data 0000000000000007 acm_hs_in_desc +000000003bc0b7c8 l O .data 0000000000000007 acm_hs_notify_desc +000000003bc0b7d0 l O .data 0000000000000007 acm_hs_out_desc +000000003bc0b7d8 l O .data 0000000000000005 acm_union_desc +000000003bc0b7e0 l O .data 0000000000000005 bosDesc +000000003bc0b7e8 l O .data 0000000000000008 bulkBufAlloc +000000003bc0b7f0 l O .data 0000000000000007 capabilityExtDesc +000000003bc0b7f8 l O .data 0000000000000008 cb0_buf +000000003bc0b800 l O .data 0000000000000008 cb1_buf +000000003bc0b808 l O .data 0000000000000008 cb2_buf +000000003bc0b810 l O .data 0000000000000008 cmdBufAlloc +000000003bc0b818 l O .data 0000000000000050 descriptorsFs +000000003bc0b868 l O .data 0000000000000050 descriptorsHs +000000003bc0b8b8 l O .data 0000000000000012 devHsDesc +000000003bc0b8d0 l O .data 0000000000000050 drv_obj +000000003bc0b920 l O .data 0000000000000008 ep0BuffAlloc +000000003bc0b928 l O .data 0000000000000058 g_driver +000000003bc0b980 l O .data 0000000000000008 handler +000000003bc0b988 l O .data 0000000000000004 languageDesc +000000003bc0b990 l O .data 000000000000000a qualifierDesc +000000003bc0b9a0 l O .data 0000000000000008 rsp_buf +000000003bc0b9a8 l O .data 0000000000000008 setup_buf +000000003bc0ae98 l O ro 0000000000000005 __func__.0 +000000003bc0aea0 l O ro 0000000000000007 __func__.1 +000000003bc0aea8 l O ro 000000000000000b __func__.4 +000000003bc0aeb8 l O ro 0000000000000006 __func__.5 +0000000000000000 l df *ABS* 0000000000000000 dwc2_udc_otg.c +000000003bc0275c l F ro 0000000000000016 dwc2_fifo_status +000000003bc02772 l F ro 000000000000003a dwc2_free_request +000000003bc027ac l F ro 0000000000000048 pullup +000000003bc027f4 l F ro 0000000000000038 dwc2_alloc_request +000000003bc0282c l F ro 00000000000000a0 dwc2_ep_enable +000000003bc028cc l F ro 0000000000000002 dwc2_fifo_flush +000000003bc02960 l F ro 0000000000000054 dwc2_dequeue +000000003bc02ac2 l F ro 000000000000003c wakeup +000000003bc02b44 l F ro 0000000000000090 dwc2_hsotg_txfifo_flush.constprop.0 +000000003bc02bd4 l F ro 000000000000005e kill_all_requests.isra.0 +000000003bc02c88 l F ro 00000000000000da dwc2_hsotg_init_fifo.constprop.0 +000000003bc02d62 l F ro 00000000000001a6 _dwc2_ep_disable.isra.0 +000000003bc02f08 l F ro 0000000000000020 dwc2_ep_disable +000000003bc0b9b0 l O .data 0000000000000050 dwc2_ep_ops +000000003bc0b0a8 l O ro 0000000000000012 __func__.0 +000000003bc0b0c0 l O ro 0000000000000011 __func__.1 +000000003bc0b0d8 l O ro 0000000000000013 __func__.2 +000000003bc0b0f0 l O ro 0000000000000018 __func__.3 +000000003bc0b108 l O ro 0000000000000015 __func__.4 +000000003bc0b120 l O ro 0000000000000009 driver_name +000000003bc0b130 l O ro 0000000000000048 dwc2_udc_ops +000000003bc0b178 l O ro 000000000000000c ep0name +000000003bc0b188 l O ro 000000000000000b ep1name +000000003bc0b198 l O ro 000000000000000c ep2name +000000003bc0b1a8 l O ro 000000000000000a ep3name +0000000000000000 l df *ABS* 0000000000000000 dwc2_udc_otg_xfer_dma.c +000000003bc034ba l F ro 000000000000008e set_max_pktsize +000000003bc03548 l F ro 000000000000005e dwc2_udc_ep_clear_stall +000000003bc035a6 l F ro 0000000000000062 dwc2_udc_ep_set_stall +000000003bc03608 l F ro 0000000000000080 dwc2_ep0_complete_out +000000003bc03688 l F ro 000000000000007e dwc2_udc_ep0_zlp +000000003bc03706 l F ro 0000000000000068 dwc2_udc_ep0_set_stall.isra.0 +000000003bc0376e l F ro 00000000000000aa setdma_rx.isra.0 +000000003bc03818 l F ro 00000000000000fc complete_rx +000000003bc0396e l F ro 000000000000015c setdma_tx +000000003bc0ba00 l O .data 0000000000000004 ep0_fifo_size +000000003bc0ba04 l O .data 0000000000000004 ep_fifo_size +0000000000000000 l df *ABS* 0000000000000000 cv_usb.c +0000000000000000 l df *ABS* 0000000000000000 crc16.c +000000003bc0b230 l O ro 0000000000000200 crc16_tab +0000000000000000 l df *ABS* 0000000000000000 LzmaDec.c +000000003bc04746 l F ro 0000000000000072 LzmaDec_WriteRem +000000003bc047b8 l F ro 000000000000138a LzmaDec_DecodeReal2 +000000003bc05b42 l F ro 00000000000004e8 LzmaDec_TryDummy +000000003bc062d6 l F ro 0000000000000066 LzmaDec_AllocateProbs2.isra.0 +0000000000000000 l df *ABS* 0000000000000000 lz4_all.c +000000003bc06460 l F ro 0000000000000024 LZ4F_readLE32 +000000003bc06484 l F ro 0000000000000276 LZ4_decompress_safe_withSmallPrefix +000000003bc066fa l F ro 0000000000000110 LZ4F_updateDict +000000003bc07048 l F ro 00000000000001a4 LZ4F_decodeHeader +000000003bc0b470 l O ro 0000000000000020 blockSizes.0 +000000003bc0b490 l O ro 0000000000000020 dec64table +000000003bc0b4b0 l O ro 0000000000000020 inc32table +0000000000000000 l df *ABS* 0000000000000000 xxhash.c +000000003bc079f8 l F ro 000000000000002c XXH32_avalanche +000000003bc07a24 l F ro 0000000000000016 XXH_read32 +000000003bc07a3a l F ro 000000000000033a XXH32_finalize.constprop.0 +0000000000000000 l df *ABS* 0000000000000000 ddr.c +0000000000000000 l df *ABS* 0000000000000000 ddr_pkg_info.c +0000000000000000 l df *ABS* 0000000000000000 ddr_sys_bring_up.c +0000000000000000 l df *ABS* 0000000000000000 ddr_sys.c +0000000000000000 l df *ABS* 0000000000000000 phy_pll_init.c +0000000000000000 l df *ABS* 0000000000000000 cvx16_pinmux.c +0000000000000000 l df *ABS* 0000000000000000 cvx16_dram_cap_check.c +0000000000000000 l df *ABS* 0000000000000000 ddrc_init.c +0000000000000000 l df *ABS* 0000000000000000 phy_init.c +0000000000000000 l df *ABS* 0000000000000000 +000000003bc08404 g F ro 000000000000000a get_ddr_vendor +000000003bc001b4 g F ro 000000000000000a mdelay +000000003bc0840e g F ro 0000000000000050 axi_mon_start_all +000000003bc0216a g F ro 0000000000000006 AcmIsr +000000003bc13800 g O .bss 0000000000000004 tar_freq +000000003bc0b750 g O .data 0000000000000008 time_records +0000000004400100 g *ABS* 0000000000000000 p_rom_api_cryptodma_aes_decrypt +000000003bc137f8 g O .bss 0000000000000004 freq_in +000000003bc00d3e g F ro 00000000000000ae load_ddr_param +000000003bc0a320 g O ro 0000000000000010 version_string +0000000004400080 g *ABS* 0000000000000000 p_rom_api_flash_init +000000003bc009a2 g F ro 0000000000000004 dec_verify_image +000000003bc03cac g F ro 00000000000000b2 dwc2_udc_ep_activate +000000003bc00afa g F ro 0000000000000052 putchar_l +000000003bc0161e g F ro 0000000000000002 LZ4_free +000000003bc045e4 g F ro 0000000000000018 dwc2_ep0_kick +0000000004400020 g *ABS* 0000000000000000 p_rom_api_get_boot_src +000000003bc03914 g F ro 0000000000000016 dwc2_udc_pre_setup +000000003bc00292 g F ro 0000000000000002 jump_to_loader_2nd +000000003bc0021a g F ro 0000000000000078 jump_to_monitor +000000003bc13680 g O .bss 0000000000000010 rsp_bufArr +000000003bc137d8 g O .bss 0000000000000008 reg_step +000000003bc137b8 g O .bss 0000000000000008 reg +000000003bc03b5a g F ro 0000000000000048 dwc2_set_address +000000003bc00ada g F ro 0000000000000020 memmove +000000003bc08682 g F ro 000000000000004e cvx16_bist_wr_prbs_init +000000003bc12c80 g O .bss 0000000000000200 bulkBufAllocArr +000000003bc0680a g F ro 000000000000026e LZ4_decompress_safe +000000003bc13805 g O .bss 0000000000000001 acm_configValue +000000003bc08d22 g F ro 0000000000000044 cvx16_ddr_phy_power_on_seq1 +000000003bc0603e g F ro 000000000000027c LzmaDec_DecodeToDic +000000003bc08776 g F ro 0000000000000046 cvx16_bist_rdglvl_init +000000003bc08730 g F ro 0000000000000046 cvx16_bist_wrlvl_init +000000003bc0a300 g O ro 000000000000001a build_message +000000003bc095b6 g F ro 0000000000000182 cvx16_wdqlvl_req +000000003bc0b750 g .data 0000000000000000 __DATA_START__ +000000003bc004f2 g F ro 00000000000000c8 __system_reset +000000003bc00834 g F ro 0000000000000044 switch_rtc_mode_2nd_stage +000000003bc01346 g F ro 00000000000000e6 load_rest +000000003bc04714 g F ro 0000000000000032 crc16_ccitt +000000003bc08e3a g F ro 0000000000000028 cvx16_set_dfi_init_complete +000000003bc08de8 g F ro 0000000000000038 cvx16_wait_for_dfi_init_complete +000000003bc03b0e g F ro 000000000000004c dwc2_write_fifo_ep0 +000000003bc12f00 g O .bss 0000000000000080 cb1_bufArr +000000003bc090b8 g F ro 00000000000001d6 cvx16_wrlvl_req +000000003bc02afe g F ro 0000000000000046 dwc2_hsotg_wait_bit_set +000000003bc093cc g F ro 00000000000001ea cvx16_rdlvl_req +000000003bc00a7a g F ro 0000000000000060 memcpy +000000003bc088a6 g F ro 00000000000000b0 cvx16_bist_wdqlvl_init +000000003bc028d0 g F ro 000000000000000a dwc2_get_ep0_name +000000003bc02a9e g F ro 0000000000000024 dwc2_hsotg_clear_bit +000000003bc03bca g F ro 0000000000000040 dwc2_ep0_write +000000003bc028ce g F ro 0000000000000002 dwc2_log_write +000000003bc02a7c g F ro 0000000000000022 dwc2_hsotg_set_bit +000000003bc136c0 g O .bss 0000000000000008 setup_bufArr +000000003bc09e66 g F ro 000000000000002e ctrl_init_low_patch +000000003bc0602a g F ro 0000000000000014 LzmaDec_Init +000000003bc01018 g F ro 0000000000000126 load_monitor +000000003bc1380f g O .bss 0000000000000001 pkg +000000003bc0da40 g stacks 0000000000000000 __STACKS_END__ +000000003bc08c14 g F ro 0000000000000016 cvx16_clk_div40 +000000003bc005ba g F ro 0000000000000032 panic_handler +000000003bc029b4 g F ro 000000000000002e dwc2_nuke +000000003bc001e2 g F ro 000000000000002a get_random_from_timer +000000003bc09c12 g F ro 0000000000000002 cvx16_dram_cap_check +000000003bc089b6 g F ro 000000000000006a cvx16_bist_start_check +000000003bc137fc g O .bss 0000000000000004 mod_freq +000000003bc00b7a g F ro 000000000000007c gpio_in_value +00000000044000e0 g *ABS* 0000000000000000 p_rom_api_verify_rsa +000000003bc09738 g F ro 0000000000000002 cvx16_en_rec_vol_mode +000000003bc0020c g F ro 000000000000000e read_count_tick +000000003bc09048 g F ro 0000000000000070 cvx16_clk_gating_enable +000000003bc016ce g F ro 000000000000007e decompress +000000003bc086d0 g F ro 0000000000000060 cvx16_bist_wr_sram_init +0000000000005c10 g *ABS* 0000000000000000 __BSS_SIZE__ +000000003bc001be g F ro 0000000000000024 get_timer +000000003bc08dae g F ro 000000000000003a cvx16_ddr_phy_power_on_seq3 +000000003bc031b6 g F ro 0000000000000156 usb_gadget_register_driver +000000003bc002a4 g F ro 000000000000001e console_putc +000000003bc137f0 g O .bss 0000000000000004 rddata +000000003bc08c2a g F ro 00000000000000f8 cvx16_chg_pll_freq +000000003bc00294 g F ro 0000000000000010 _uart_putc +000000003bc00156 g F ro 0000000000000024 flush_dcache_range +000000003bc12e80 g O .bss 0000000000000080 cb0_bufArr +000000003bc0068e g F ro 000000000000018e sys_pll_nd +000000003bc00832 g F ro 0000000000000002 switch_rtc_mode_1st_stage +000000003bc00878 g F ro 00000000000000bc set_rtc_en_registers +000000003bc00c6e g F ro 00000000000000d0 load_param2 +000000003bc0721c g F ro 00000000000007dc LZ4F_decompress +000000003bc098d8 g F ro 000000000000033a cvx16_pinmux +000000003bc08b3a g F ro 0000000000000068 cvx16_dll_cal +000000003bc02170 g F ro 0000000000000138 acm_app_init +000000003bc022e4 g F ro 0000000000000478 AcmApp +000000003bc08ffe g F ro 000000000000004a cvx16_clk_gating_disable +000000003bc071ec g F ro 0000000000000030 LZ4F_createDecompressionContext +000000003bc0174c g F ro 0000000000000006 DWC2_UncachedRead32 +000000003bc022b4 g F ro 0000000000000030 get_usb_polling_timeout_value +000000003bc03ba2 g F ro 0000000000000028 dwc2_ep0_read +000000003bc13200 g O .bss 0000000000000080 ep0BuffAllocArr +000000003bc0346e g F ro 000000000000004c usb_gadget_handle_interrupts +000000003bc13810 g .bss 0000000000000000 __BL2_END__ +000000003bc08d66 g F ro 0000000000000048 cvx16_ddr_phy_power_on_seq2 +000000003bc08e62 g F ro 000000000000002c cvx16_INT_ISR_08 +000000003bc06ce2 g F ro 0000000000000316 LZ4_decompress_safe_forceExtDict +000000003bc01ff8 g F ro 00000000000000a2 convert_buf_addr +000000003bc06386 g F ro 0000000000000030 LzmaDec_AllocateProbs +000000003bc08f58 g F ro 00000000000000a6 cvx16_pll_init +000000003bc0142c g F ro 0000000000000098 bl2_main +000000003bc0ba10 g .data 0000000000000000 __DATA_END__ +000000003bc062ba g F ro 000000000000001c LzmaDec_FreeProbs +000000003bc01508 g F ro 00000000000000e8 decompress_lzma +000000003bc0017a g F ro 0000000000000010 trig_simulation_timer +000000003bc08956 g F ro 0000000000000060 cvx16_bist_wdmlvl_init +000000003bc0018a g F ro 000000000000002a udelay +000000003bc08e20 g F ro 000000000000001a cvx16_polling_dfi_init_start +000000003bc02920 g F ro 0000000000000040 dwc2_done +000000003bc087bc g F ro 00000000000000ea cvx16_bist_rdlvl_init +000000003bc1380e g O .bss 0000000000000001 ddr_vendor +00000000044000a0 g *ABS* 0000000000000000 p_rom_api_image_crc +000000003bc00c2e g F ro 0000000000000040 load_image_by_usb +000000003bc00000 g ro 0000000000000000 bl2_entrypoint +000000003bc0113e g F ro 0000000000000208 load_loader_2nd +000000003bc02c32 g F ro 0000000000000056 dwc2_disconnect +000000003bc0331e g F ro 0000000000000150 dwc2_udc_probe +000000003bc00934 g F ro 000000000000006e init_comm_info +000000003bc137f4 g O .bss 0000000000000004 dev_freq +000000003bc045fc g F ro 00000000000000d8 dwc2_queue +000000003bc00680 g F ro 000000000000000e sys_switch_all_to_pll +000000003bc13810 g .bss 0000000000000000 __BSS_END__ +000000003bc081d6 g F ro 000000000000022e read_ddr_pkg_info +000000003bc12c00 g O .bss 0000000000000080 acm_bufArr +0000000004400040 g *ABS* 0000000000000000 p_rom_api_set_boot_src +000000003bc0633c g F ro 000000000000004a LzmaProps_Decode +000000003bc08f12 g F ro 0000000000000020 cvx16_setting_check +000000003bc00eb2 g F ro 0000000000000166 load_blcp_2nd +000000003bc137d0 g O .bss 0000000000000008 reg_span +000000003bc08ba2 g F ro 000000000000005c cvx16_clk_normal +000000003bc022a8 g F ro 000000000000000c usb_vbus_det +000000003bc00a20 g F ro 000000000000005a memset +000000003bc03c4a g F ro 0000000000000062 dwc2_udc_set_halt +000000003bc07f90 g F ro 00000000000001d2 XXH32_update +000000003bc0a488 g O ro 0000000000000025 hex2ascii_data +000000003bc09e94 g F ro 00000000000000b2 ctrl_init_update_by_dram_size +000000003bc03d5e g F ro 0000000000000346 dwc2_handle_ep0 +000000003bc00b4c g F ro 000000000000001c strcmp +000000003bc07f3a g F ro 0000000000000056 XXH32_reset +000000003bc07d74 g F ro 00000000000001c6 XXH32 +000000003bc08a20 g F ro 00000000000000a6 cvx16_rdvld_train +000000003bc09c14 g F ro 0000000000000224 ddrc_init +000000003bc06a78 g F ro 000000000000026a LZ4_decompress_safe_withPrefix64k +000000003bc00358 g F ro 000000000000019a tf_printf +000000003bc029e2 g F ro 000000000000009a usb_gadget_unregister_driver +000000003bc015f6 g F ro 0000000000000028 LZ4_calloc +000000003bc002c2 g F ro 0000000000000014 console_flush +000000003bc0209a g F ro 00000000000000d0 print_buf_addr +000000003bc0b74c g ro 0000000000000000 __RO_END__ +000000003bc12f80 g O .bss 0000000000000080 cb2_bufArr +0000000004400060 g *ABS* 0000000000000000 p_rom_api_load_image +000000003bc0701e g F ro 000000000000000c LZ4F_isError +000000003bc0dc00 g .bss 0000000000000000 __BSS_START__ +000000003bc03c0a g F ro 0000000000000040 dwc2_udc_set_nak +000000003bc00000 g ro 0000000000000000 __RO_START__ +000000003bc0928e g F ro 000000000000013e cvx16_rdglvl_req +000000003bc0330c g F ro 0000000000000012 dwc2_phy_to_log_ep +000000003bc009a6 g F ro 000000000000007a ntostr +000000003bc046d4 g F ro 0000000000000040 usb_polling +000000003bc08e8e g F ro 000000000000001c cvx16_polling_synp_normal_mode +000000003bc06ff8 g F ro 0000000000000026 LZ4_decompress_safe_usingDict +000000003bc015f0 g F ro 0000000000000006 LZ4_malloc +000000003bc0973a g F ro 000000000000011a ctrl_init_detect_dram_size +00000000044000c0 g *ABS* 0000000000000000 p_rom_api_get_number_of_retries +000000003bc0014c g F ro 000000000000000a sync_cache +000000003bc00636 g F ro 000000000000004a setup_dl_flag +000000003bc005ec g F ro 000000000000004a reset_c906l +000000003bc137c8 g O .bss 0000000000000008 reg_set +000000003bc063b6 g F ro 00000000000000aa LzmaDecode +000000003bc00bf6 g F ro 000000000000001e usb_id_det +000000003bc0ba40 g stacks 0000000000000000 __STACKS_START__ +000000003bc0ba08 g O .data 0000000000000002 cv_usb_vid +000000003bc0081c g F ro 0000000000000016 sys_pll_init +000000003bc03aca g F ro 0000000000000044 dwc2_ep_fifo_read +000000003bc0ba0c g O .data 0000000000000004 ddr_data_rate +000000003bc13280 g O .bss 0000000000000400 handlerArr +000000003bc08eaa g F ro 0000000000000068 cvx16_dfi_ca_park_prbs +000000003bc040a4 g F ro 0000000000000540 dwc2_udc_irq +000000003bc13000 g O .bss 0000000000000200 cmdBufAllocArr +000000003bc00b68 g F ro 0000000000000012 strlen +000000003bc1380d g O .bss 0000000000000001 ddr_type +000000003bc0845e g F ro 0000000000000224 ddr_sys_bring_up +000000003bc08162 g F ro 0000000000000040 XXH32_digest +000000003bc081a2 g F ro 0000000000000034 ddr_init +000000003bc0392a g F ro 0000000000000044 dwc2_ep_fifo_write +000000003bc01620 g F ro 00000000000000ae decompress_lz4 +000000003bc0702a g F ro 000000000000001e LZ4F_getBlockSize +000000003bc1380c g O .bss 0000000000000001 ddr_capacity +000000003bc13708 g O .bss 0000000000000008 acm +000000003bc01752 g F ro 0000000000000004 DWC2_UncachedWrite32 +000000003bc137c0 g O .bss 0000000000000008 the_controller +000000003bc08f32 g F ro 0000000000000026 cvx16_set_dfi_init_start +000000003bc09e38 g F ro 000000000000002e ctrl_init_high_patch +000000003bc00dec g F ro 00000000000000c6 load_ddr +000000003bc08ac6 g F ro 0000000000000074 cvx16_synp_mrw +000000003bc028da g F ro 0000000000000046 udc_reinit +000000003bc08bfe g F ro 0000000000000016 cvx16_clk_div2 +000000003bc09f46 g F ro 00000000000003b6 phy_init +000000003bc09854 g F ro 0000000000000084 pll_init +000000003bc02f28 g F ro 000000000000028e dwc2_reconfig_usbd + + + +Disassembly of section ro: + +000000003bc00000 <__RO_START__>: + 3bc00000: 0200006f j 3bc00020 + ... + +000000003bc00020 : + 3bc00020: 05900e1b addiw t3,zero,89 + 3bc00024: 019e1e13 slli t3,t3,0x19 + 3bc00028: 03000eb7 lui t4,0x3000 + 3bc0002c: 084e8e9b addiw t4,t4,132 + 3bc00030: 01cea023 sw t3,0(t4) # 3000000 <__BSS_SIZE__+0x2ffa3f0> + 3bc00034: 00000093 li ra,0 + 3bc00038: 00000113 li sp,0 + 3bc0003c: 00000193 li gp,0 + 3bc00040: 00000213 li tp,0 + 3bc00044: 00000293 li t0,0 + 3bc00048: 00000313 li t1,0 + 3bc0004c: 00000393 li t2,0 + 3bc00050: 00000413 li s0,0 + 3bc00054: 00000493 li s1,0 + 3bc00058: 00000513 li a0,0 + 3bc0005c: 00000593 li a1,0 + 3bc00060: 00000613 li a2,0 + 3bc00064: 00000693 li a3,0 + 3bc00068: 00000713 li a4,0 + 3bc0006c: 00000793 li a5,0 + 3bc00070: 00000813 li a6,0 + 3bc00074: 00000893 li a7,0 + 3bc00078: 00000913 li s2,0 + 3bc0007c: 00000993 li s3,0 + 3bc00080: 00000a13 li s4,0 + 3bc00084: 00000a93 li s5,0 + 3bc00088: 00000b13 li s6,0 + 3bc0008c: 00000b93 li s7,0 + 3bc00090: 00000c13 li s8,0 + 3bc00094: 00000c93 li s9,0 + 3bc00098: 00000d13 li s10,0 + 3bc0009c: 00000d93 li s11,0 + 3bc000a0: 00000e13 li t3,0 + 3bc000a4: 00000e93 li t4,0 + 3bc000a8: 00000f13 li t5,0 + 3bc000ac: 00000f93 li t6,0 + 3bc000b0: 34001073 csrw mscratch,zero + 3bc000b4: 00000297 auipc t0,0x0 + 3bc000b8: 09028293 addi t0,t0,144 # 3bc00144 + 3bc000bc: 30529073 csrw mtvec,t0 + 3bc000c0: 000181b7 lui gp,0x18 + 3bc000c4: 0c71819b addiw gp,gp,199 + 3bc000c8: 00f19193 slli gp,gp,0xf + 3bc000cc: 7c019073 csrw mxstatus,gp + 3bc000d0: 702001b7 lui gp,0x70200 + 3bc000d4: ffc1819b addiw gp,gp,-4 + 3bc000d8: 00100213 li tp,1 + 3bc000dc: 0041a023 sw tp,0(gp) # 70200000 <__BL2_END__+0x345ec7f0> + 3bc000e0: 03300193 li gp,51 + 3bc000e4: 7c21b073 csrc mcor,gp + 3bc000e8: 01100193 li gp,17 + 3bc000ec: 7c21a073 csrs mcor,gp + 3bc000f0: 00100193 li gp,1 + 3bc000f4: 7c11a073 csrs mhcr,gp + 3bc000f8: 03300193 li gp,51 + 3bc000fc: 7c21b073 csrc mcor,gp + 3bc00100: 01200193 li gp,18 + 3bc00104: 7c21a073 csrs mcor,gp + 3bc00108: 00200193 li gp,2 + 3bc0010c: 7c11a073 csrs mhcr,gp + 3bc00110: 0000e117 auipc sp,0xe + 3bc00114: 93010113 addi sp,sp,-1744 # 3bc0da40 <__STACKS_END__> + 3bc00118: 0000e697 auipc a3,0xe + 3bc0011c: ae868693 addi a3,a3,-1304 # 3bc0dc00 <__BSS_START__> + 3bc00120: 00013717 auipc a4,0x13 + 3bc00124: 6f070713 addi a4,a4,1776 # 3bc13810 <__BL2_END__> + 3bc00128: 40d70733 sub a4,a4,a3 + +000000003bc0012c : + 3bc0012c: 0006b023 sd zero,0(a3) + 3bc00130: 00868693 addi a3,a3,8 + 3bc00134: ff870713 addi a4,a4,-8 + 3bc00138: fe071ae3 bnez a4,3bc0012c + 3bc0013c: 2f0010ef jal ra,3bc0142c + 3bc00140: 0040006f j 3bc00144 + +000000003bc00144 : + 3bc00144: 4760006f j 3bc005ba + 3bc00148: ffdff06f j 3bc00144 + +000000003bc0014c : + 3bc0014c: 0100000b icache.iall + 3bc00150: 01a0000b sync.i + 3bc00154: 8082 ret + +000000003bc00156 : + 3bc00156: 87aa mv a5,a0 + 3bc00158: 03f58593 addi a1,a1,63 + 3bc0015c: 95be add a1,a1,a5 + 3bc0015e: fc057513 andi a0,a0,-64 + 3bc00162: fc05f593 andi a1,a1,-64 + 3bc00166: 00b56563 bltu a0,a1,3bc00170 + 3bc0016a: 0190000b sync.s + 3bc0016e: 8082 ret + 3bc00170: 02b5000b dcache.cipa a0 + 3bc00174: 04050513 addi a0,a0,64 + 3bc00178: b7fd j 3bc00166 + +000000003bc0017a : + 3bc0017a: 47e5 li a5,25 + 3bc0017c: 02a787bb mulw a5,a5,a0 + 3bc00180: 03000737 lui a4,0x3000 + 3bc00184: 08f72423 sw a5,136(a4) # 3000088 <__BSS_SIZE__+0x2ffa478> + 3bc00188: 8082 ret + +000000003bc0018a : + 3bc0018a: c0102773 rdtime a4 + 3bc0018e: 47e5 li a5,25 + 3bc00190: 02a786bb mulw a3,a5,a0 + 3bc00194: fff74713 not a4,a4 + 3bc00198: 030007b7 lui a5,0x3000 + 3bc0019c: 2701 sext.w a4,a4 + 3bc0019e: 08d7a423 sw a3,136(a5) # 3000088 <__BSS_SIZE__+0x2ffa478> + 3bc001a2: c01027f3 rdtime a5 + 3bc001a6: fff7c793 not a5,a5 + 3bc001aa: 40f707bb subw a5,a4,a5 + 3bc001ae: fed7eae3 bltu a5,a3,3bc001a2 + 3bc001b2: 8082 ret + +000000003bc001b4 : + 3bc001b4: 3e800793 li a5,1000 + 3bc001b8: 02a7853b mulw a0,a5,a0 + 3bc001bc: b7f9 j 3bc0018a + +000000003bc001be : + 3bc001be: e519 bnez a0,3bc001cc + 3bc001c0: c0102573 rdtime a0 + 3bc001c4: fff54513 not a0,a0 + 3bc001c8: 2501 sext.w a0,a0 + 3bc001ca: 8082 ret + 3bc001cc: c01027f3 rdtime a5 + 3bc001d0: fff7c793 not a5,a5 + 3bc001d4: 9d1d subw a0,a0,a5 + 3bc001d6: 6799 lui a5,0x6 + 3bc001d8: 1a87879b addiw a5,a5,424 + 3bc001dc: 02f5553b divuw a0,a0,a5 + 3bc001e0: 8082 ret + +000000003bc001e2 : + 3bc001e2: e519 bnez a0,3bc001f0 + 3bc001e4: c0102573 rdtime a0 + 3bc001e8: fff54513 not a0,a0 + 3bc001ec: 2501 sext.w a0,a0 + 3bc001ee: 8082 ret + 3bc001f0: c01027f3 rdtime a5 + 3bc001f4: fff7c793 not a5,a5 + 3bc001f8: 9d1d subw a0,a0,a5 + 3bc001fa: 47e5 li a5,25 + 3bc001fc: 02f5553b divuw a0,a0,a5 + 3bc00200: 67e1 lui a5,0x18 + 3bc00202: 6a07879b addiw a5,a5,1696 + 3bc00206: 02f5753b remuw a0,a0,a5 + 3bc0020a: 8082 ret + +000000003bc0020c : + 3bc0020c: c0102573 rdtime a0 + 3bc00210: 47e5 li a5,25 + 3bc00212: 02f55533 divu a0,a0,a5 + 3bc00216: 2501 sext.w a0,a0 + 3bc00218: 8082 ret + +000000003bc0021a : + 3bc0021a: 1101 addi sp,sp,-32 + 3bc0021c: 494257b7 lui a5,0x49425 + 3bc00220: e822 sd s0,16(sp) + 3bc00222: 34f78793 addi a5,a5,847 # 4942534f <__BL2_END__+0xd811b3f> + 3bc00226: 00013417 auipc s0,0x13 + 3bc0022a: 4a240413 addi s0,s0,1186 # 3bc136c8 + 3bc0022e: e426 sd s1,8(sp) + 3bc00230: e01c sd a5,0(s0) + 3bc00232: 010014b7 lui s1,0x1001 + 3bc00236: 4785 li a5,1 + 3bc00238: e04a sd s2,0(sp) + 3bc0023a: 00749613 slli a2,s1,0x7 + 3bc0023e: 892a mv s2,a0 + 3bc00240: ec1c sd a5,24(s0) + 3bc00242: 0000a517 auipc a0,0xa + 3bc00246: 0ee50513 addi a0,a0,238 # 3bc0a330 + 3bc0024a: 57fd li a5,-1 + 3bc0024c: ec06 sd ra,24(sp) + 3bc0024e: f41c sd a5,40(s0) + 3bc00250: e80c sd a1,16(s0) + 3bc00252: 106000ef jal ra,3bc00358 + 3bc00256: 03000593 li a1,48 + 3bc0025a: 8522 mv a0,s0 + 3bc0025c: efbff0ef jal ra,3bc00156 + 3bc00260: fadff0ef jal ra,3bc0020c + 3bc00264: 3e800793 li a5,1000 + 3bc00268: 3e75051b addiw a0,a0,999 + 3bc0026c: 02f5553b divuw a0,a0,a5 + 3bc00270: 8622 mv a2,s0 + 3bc00272: 0000b797 auipc a5,0xb + 3bc00276: 4de7b783 ld a5,1246(a5) # 3bc0b750 + 3bc0027a: 6442 ld s0,16(sp) + 3bc0027c: 60e2 ld ra,24(sp) + 3bc0027e: 00749593 slli a1,s1,0x7 + 3bc00282: 64a2 ld s1,8(sp) + 3bc00284: 00a79723 sh a0,14(a5) + 3bc00288: 87ca mv a5,s2 + 3bc0028a: 6902 ld s2,0(sp) + 3bc0028c: 4501 li a0,0 + 3bc0028e: 6105 addi sp,sp,32 + 3bc00290: 8782 jr a5 + +000000003bc00292 : + 3bc00292: 8082 ret + +000000003bc00294 <_uart_putc>: + 3bc00294: 04140737 lui a4,0x4140 + 3bc00298: 4b5c lw a5,20(a4) + 3bc0029a: 0207f793 andi a5,a5,32 + 3bc0029e: dfed beqz a5,3bc00298 <_uart_putc+0x4> + 3bc002a0: c308 sw a0,0(a4) + 3bc002a2: 8082 ret + +000000003bc002a4 : + 3bc002a4: 1141 addi sp,sp,-16 + 3bc002a6: e022 sd s0,0(sp) + 3bc002a8: e406 sd ra,8(sp) + 3bc002aa: 47a9 li a5,10 + 3bc002ac: 842a mv s0,a0 + 3bc002ae: 00f51563 bne a0,a5,3bc002b8 + 3bc002b2: 4535 li a0,13 + 3bc002b4: fe1ff0ef jal ra,3bc00294 <_uart_putc> + 3bc002b8: 8522 mv a0,s0 + 3bc002ba: 6402 ld s0,0(sp) + 3bc002bc: 60a2 ld ra,8(sp) + 3bc002be: 0141 addi sp,sp,16 + 3bc002c0: bfd1 j 3bc00294 <_uart_putc> + +000000003bc002c2 : + 3bc002c2: 041406b7 lui a3,0x4140 + 3bc002c6: 06000713 li a4,96 + 3bc002ca: 4adc lw a5,20(a3) + 3bc002cc: 0607f793 andi a5,a5,96 + 3bc002d0: fee79de3 bne a5,a4,3bc002ca + 3bc002d4: 8082 ret + +000000003bc002d6 : + 3bc002d6: 7139 addi sp,sp,-64 + 3bc002d8: f04a sd s2,32(sp) + 3bc002da: 7c05b70b extu a4,a1,31,0 + 3bc002de: fc06 sd ra,56(sp) + 3bc002e0: f822 sd s0,48(sp) + 3bc002e2: f426 sd s1,40(sp) + 3bc002e4: 8932 mv s2,a2 + 3bc002e6: 4801 li a6,0 + 3bc002e8: 45a5 li a1,9 + 3bc002ea: 02e57633 remu a2,a0,a4 + 3bc002ee: 0018041b addiw s0,a6,1 + 3bc002f2: 0ff67793 andi a5,a2,255 + 3bc002f6: 04c5e063 bltu a1,a2,3bc00336 + 3bc002fa: 0307879b addiw a5,a5,48 + 3bc002fe: 0ff7f793 andi a5,a5,255 + 3bc00302: 0030 addi a2,sp,8 + 3bc00304: 0106578b srb a5,a2,a6,0 + 3bc00308: 02e557b3 divu a5,a0,a4 + 3bc0030c: 0805 addi a6,a6,1 + 3bc0030e: 02e57263 bgeu a0,a4,3bc00332 + 3bc00312: 408684bb subw s1,a3,s0 + 3bc00316: 02904363 bgtz s1,3bc0033c + 3bc0031a: 54fd li s1,-1 + 3bc0031c: 147d addi s0,s0,-1 + 3bc0031e: 0004079b sext.w a5,s0 + 3bc00322: 02979463 bne a5,s1,3bc0034a + 3bc00326: 70e2 ld ra,56(sp) + 3bc00328: 7442 ld s0,48(sp) + 3bc0032a: 74a2 ld s1,40(sp) + 3bc0032c: 7902 ld s2,32(sp) + 3bc0032e: 6121 addi sp,sp,64 + 3bc00330: 8082 ret + 3bc00332: 853e mv a0,a5 + 3bc00334: bf5d j 3bc002ea + 3bc00336: 0577879b addiw a5,a5,87 + 3bc0033a: b7d1 j 3bc002fe + 3bc0033c: 85ca mv a1,s2 + 3bc0033e: 03000513 li a0,48 + 3bc00342: 7b8000ef jal ra,3bc00afa + 3bc00346: 34fd addiw s1,s1,-1 + 3bc00348: b7f9 j 3bc00316 + 3bc0034a: 003c addi a5,sp,8 + 3bc0034c: 8087c50b lrbu a0,a5,s0,0 + 3bc00350: 85ca mv a1,s2 + 3bc00352: 7a8000ef jal ra,3bc00afa + 3bc00356: b7d9 j 3bc0031c + +000000003bc00358 : + 3bc00358: 7135 addi sp,sp,-160 + 3bc0035a: e8a2 sd s0,80(sp) + 3bc0035c: e4a6 sd s1,72(sp) + 3bc0035e: ec86 sd ra,88(sp) + 3bc00360: e0ca sd s2,64(sp) + 3bc00362: fc4e sd s3,56(sp) + 3bc00364: f852 sd s4,48(sp) + 3bc00366: f456 sd s5,40(sp) + 3bc00368: f05a sd s6,32(sp) + 3bc0036a: f4ae sd a1,104(sp) + 3bc0036c: f8b2 sd a2,112(sp) + 3bc0036e: fcb6 sd a3,120(sp) + 3bc00370: e13a sd a4,128(sp) + 3bc00372: e53e sd a5,136(sp) + 3bc00374: e942 sd a6,144(sp) + 3bc00376: ed46 sd a7,152(sp) + 3bc00378: 842a mv s0,a0 + 3bc0037a: 4489 li s1,2 + 3bc0037c: c11d beqz a0,3bc003a2 + 3bc0037e: 00054703 lbu a4,0(a0) + 3bc00382: 4785 li a5,1 + 3bc00384: 00f71f63 bne a4,a5,3bc003a2 + 3bc00388: 00154783 lbu a5,1(a0) + 3bc0038c: 4711 li a4,4 + 3bc0038e: fd07879b addiw a5,a5,-48 + 3bc00392: 0ff7f693 andi a3,a5,255 + 3bc00396: 00d76663 bltu a4,a3,3bc003a2 + 3bc0039a: 0007849b sext.w s1,a5 + 3bc0039e: 00250413 addi s0,a0,2 + 3bc003a2: 10bc addi a5,sp,104 + 3bc003a4: ec3e sd a5,24(sp) + 3bc003a6: 4a25 li s4,9 + 3bc003a8: 4ad9 li s5,22 + 3bc003aa: 0000a997 auipc s3,0xa + 3bc003ae: fb298993 addi s3,s3,-78 # 3bc0a35c + 3bc003b2: 00044503 lbu a0,0(s0) + 3bc003b6: e919 bnez a0,3bc003cc + 3bc003b8: 60e6 ld ra,88(sp) + 3bc003ba: 6446 ld s0,80(sp) + 3bc003bc: 64a6 ld s1,72(sp) + 3bc003be: 6906 ld s2,64(sp) + 3bc003c0: 79e2 ld s3,56(sp) + 3bc003c2: 7a42 ld s4,48(sp) + 3bc003c4: 7aa2 ld s5,40(sp) + 3bc003c6: 7b02 ld s6,32(sp) + 3bc003c8: 610d addi sp,sp,160 + 3bc003ca: 8082 ret + 3bc003cc: 02500793 li a5,37 + 3bc003d0: 0405 addi s0,s0,1 + 3bc003d2: 10f51c63 bne a0,a5,3bc004ea + 3bc003d6: 4781 li a5,0 + 3bc003d8: 4681 li a3,0 + 3bc003da: 03000613 li a2,48 + 3bc003de: 00044703 lbu a4,0(s0) + 3bc003e2: 00c70c63 beq a4,a2,3bc003fa + 3bc003e6: f9c7071b addiw a4,a4,-100 + 3bc003ea: 0ff77713 andi a4,a4,255 + 3bc003ee: fceae5e3 bltu s5,a4,3bc003b8 + 3bc003f2: 44e9c70b lrw a4,s3,a4,2 + 3bc003f6: 974e add a4,a4,s3 + 3bc003f8: 8702 jr a4 + 3bc003fa: 00144703 lbu a4,1(s0) + 3bc003fe: fd07071b addiw a4,a4,-48 + 3bc00402: 0ff77593 andi a1,a4,255 + 3bc00406: 00ba6463 bltu s4,a1,3bc0040e + 3bc0040a: 0007069b sext.w a3,a4 + 3bc0040e: 0409 addi s0,s0,2 + 3bc00410: b7f9 j 3bc003de + 3bc00412: 6762 ld a4,24(sp) + 3bc00414: 4585 li a1,1 + 3bc00416: 00870613 addi a2,a4,8 # 4140008 <__BSS_SIZE__+0x413a3f8> + 3bc0041a: ec32 sd a2,24(sp) + 3bc0041c: 02f5d563 bge a1,a5,3bc00446 + 3bc00420: 00073903 ld s2,0(a4) + 3bc00424: 00095b63 bgez s2,3bc0043a + 3bc00428: 85a6 mv a1,s1 + 3bc0042a: 02d00513 li a0,45 + 3bc0042e: e436 sd a3,8(sp) + 3bc00430: 6ca000ef jal ra,3bc00afa + 3bc00434: 66a2 ld a3,8(sp) + 3bc00436: 41200933 neg s2,s2 + 3bc0043a: 8626 mv a2,s1 + 3bc0043c: 45a9 li a1,10 + 3bc0043e: 854a mv a0,s2 + 3bc00440: e97ff0ef jal ra,3bc002d6 + 3bc00444: a831 j 3bc00460 + 3bc00446: ffe9 bnez a5,3bc00420 + 3bc00448: 00072903 lw s2,0(a4) + 3bc0044c: bfe1 j 3bc00424 + 3bc0044e: 67e2 ld a5,24(sp) + 3bc00450: 0007b903 ld s2,0(a5) + 3bc00454: 00878713 addi a4,a5,8 + 3bc00458: ec3a sd a4,24(sp) + 3bc0045a: 00094503 lbu a0,0(s2) + 3bc0045e: e119 bnez a0,3bc00464 + 3bc00460: 0405 addi s0,s0,1 + 3bc00462: bf81 j 3bc003b2 + 3bc00464: 85a6 mv a1,s1 + 3bc00466: 0905 addi s2,s2,1 + 3bc00468: 692000ef jal ra,3bc00afa + 3bc0046c: b7fd j 3bc0045a + 3bc0046e: 67e2 ld a5,24(sp) + 3bc00470: 0000a917 auipc s2,0xa + 3bc00474: ee890913 addi s2,s2,-280 # 3bc0a358 + 3bc00478: 0007bb03 ld s6,0(a5) + 3bc0047c: 00878713 addi a4,a5,8 + 3bc00480: ec3a sd a4,24(sp) + 3bc00482: 000b1c63 bnez s6,3bc0049a + 3bc00486: 8626 mv a2,s1 + 3bc00488: 45c1 li a1,16 + 3bc0048a: 855a mv a0,s6 + 3bc0048c: bf55 j 3bc00440 + 3bc0048e: 85a6 mv a1,s1 + 3bc00490: e436 sd a3,8(sp) + 3bc00492: 668000ef jal ra,3bc00afa + 3bc00496: 66a2 ld a3,8(sp) + 3bc00498: 0905 addi s2,s2,1 + 3bc0049a: 00094503 lbu a0,0(s2) + 3bc0049e: f965 bnez a0,3bc0048e + 3bc004a0: b7dd j 3bc00486 + 3bc004a2: 6762 ld a4,24(sp) + 3bc004a4: 4585 li a1,1 + 3bc004a6: 00870613 addi a2,a4,8 + 3bc004aa: ec32 sd a2,24(sp) + 3bc004ac: 00f5d663 bge a1,a5,3bc004b8 + 3bc004b0: 6308 ld a0,0(a4) + 3bc004b2: 8626 mv a2,s1 + 3bc004b4: 45c1 li a1,16 + 3bc004b6: b769 j 3bc00440 + 3bc004b8: ffe5 bnez a5,3bc004b0 + 3bc004ba: 00076503 lwu a0,0(a4) + 3bc004be: bfd5 j 3bc004b2 + 3bc004c0: 0405 addi s0,s0,1 + 3bc004c2: 4789 li a5,2 + 3bc004c4: bf29 j 3bc003de + 3bc004c6: 2785 addiw a5,a5,1 + 3bc004c8: 0405 addi s0,s0,1 + 3bc004ca: bf11 j 3bc003de + 3bc004cc: 6762 ld a4,24(sp) + 3bc004ce: 4585 li a1,1 + 3bc004d0: 00870613 addi a2,a4,8 + 3bc004d4: ec32 sd a2,24(sp) + 3bc004d6: 00f5d663 bge a1,a5,3bc004e2 + 3bc004da: 6308 ld a0,0(a4) + 3bc004dc: 8626 mv a2,s1 + 3bc004de: 45a9 li a1,10 + 3bc004e0: b785 j 3bc00440 + 3bc004e2: ffe5 bnez a5,3bc004da + 3bc004e4: 00076503 lwu a0,0(a4) + 3bc004e8: bfd5 j 3bc004dc + 3bc004ea: 85a6 mv a1,s1 + 3bc004ec: 60e000ef jal ra,3bc00afa + 3bc004f0: b5c9 j 3bc003b2 + +000000003bc004f2 <__system_reset>: + 3bc004f2: 7179 addi sp,sp,-48 + 3bc004f4: f022 sd s0,32(sp) + 3bc004f6: be00e437 lui s0,0xbe00e + 3bc004fa: f406 sd ra,40(sp) + 3bc004fc: 00340793 addi a5,s0,3 # ffffffffbe00e003 <__BL2_END__+0xffffffff823fa7f3> + 3bc00500: ec26 sd s1,24(sp) + 3bc00502: e84a sd s2,16(sp) + 3bc00504: e44e sd s3,8(sp) + 3bc00506: 0e000937 lui s2,0xe000 + 3bc0050a: 862e mv a2,a1 + 3bc0050c: 00f92823 sw a5,16(s2) # e000010 + 3bc00510: 85aa mv a1,a0 + 3bc00512: 0000a517 auipc a0,0xa + 3bc00516: ea650513 addi a0,a0,-346 # 3bc0a3b8 + 3bc0051a: e3fff0ef jal ra,3bc00358 + 3bc0051e: da5ff0ef jal ra,3bc002c2 + 3bc00522: be0034b7 lui s1,0xbe003 + 3bc00526: 00148793 addi a5,s1,1 # ffffffffbe003001 <__BL2_END__+0xffffffff823ef7f1> + 3bc0052a: 030009b7 lui s3,0x3000 + 3bc0052e: 6505 lui a0,0x1 + 3bc00530: 08f9a223 sw a5,132(s3) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc00534: 38850513 addi a0,a0,904 # 1388 <__BSS_SIZE__-0x4888> + 3bc00538: c7dff0ef jal ra,3bc001b4 + 3bc0053c: 050267b7 lui a5,0x5026 + 3bc00540: 4705 li a4,1 + 3bc00542: 0ee7a023 sw a4,224(a5) # 50260e0 + 3bc00546: 0ce7a423 sw a4,200(a5) + 3bc0054a: 0489 addi s1,s1,2 + 3bc0054c: 0899a223 sw s1,132(s3) + 3bc00550: 06400513 li a0,100 + 3bc00554: c37ff0ef jal ra,3bc0018a + 3bc00558: 050257b7 lui a5,0x5025 + 3bc0055c: 672d lui a4,0xb + 3bc0055e: 0a07a623 sw zero,172(a5) # 50250ac + 3bc00562: b1870713 addi a4,a4,-1256 # ab18 <__BSS_SIZE__+0x4f08> + 3bc00566: c3d8 sw a4,4(a5) + 3bc00568: 00400737 lui a4,0x400 + 3bc0056c: 04070713 addi a4,a4,64 # 400040 <__BSS_SIZE__+0x3fa430> + 3bc00570: c798 sw a4,8(a5) + 3bc00572: 030107b7 lui a5,0x3010 + 3bc00576: 06600713 li a4,102 + 3bc0057a: c3d8 sw a4,4(a5) + 3bc0057c: 02000713 li a4,32 + 3bc00580: cfd8 sw a4,28(a5) + 3bc00582: 07600713 li a4,118 + 3bc00586: c7d8 sw a4,12(a5) + 3bc00588: 4745 li a4,17 + 3bc0058a: c398 sw a4,0(a5) + 3bc0058c: 00394783 lbu a5,3(s2) + 3bc00590: 0407f793 andi a5,a5,64 + 3bc00594: c395 beqz a5,3bc005b8 <__system_reset+0xc6> + 3bc00596: 0411 addi s0,s0,4 + 3bc00598: 00892823 sw s0,16(s2) + 3bc0059c: 050266b7 lui a3,0x5026 + 3bc005a0: 470d li a4,3 + 3bc005a2: 0d46a783 lw a5,212(a3) # 50260d4 + 3bc005a6: 2781 sext.w a5,a5 + 3bc005a8: fee79de3 bne a5,a4,3bc005a2 <__system_reset+0xb0> + 3bc005ac: 000807b7 lui a5,0x80 + 3bc005b0: 05025737 lui a4,0x5025 + 3bc005b4: 07a1 addi a5,a5,8 + 3bc005b6: c71c sw a5,8(a4) + 3bc005b8: a001 j 3bc005b8 <__system_reset+0xc6> + +000000003bc005ba : + 3bc005ba: 1141 addi sp,sp,-16 + 3bc005bc: be00e7b7 lui a5,0xbe00e + 3bc005c0: e406 sd ra,8(sp) + 3bc005c2: 0e000737 lui a4,0xe000 + 3bc005c6: 0789 addi a5,a5,2 + 3bc005c8: cb1c sw a5,16(a4) + 3bc005ca: 0000879b sext.w a5,ra + 3bc005ce: 8586 mv a1,ra + 3bc005d0: 0000a517 auipc a0,0xa + 3bc005d4: e0050513 addi a0,a0,-512 # 3bc0a3d0 + 3bc005d8: cb5c sw a5,20(a4) + 3bc005da: d7fff0ef jal ra,3bc00358 + 3bc005de: 55fd li a1,-1 + 3bc005e0: 0000a517 auipc a0,0xa + 3bc005e4: e0050513 addi a0,a0,-512 # 3bc0a3e0 + 3bc005e8: f0bff0ef jal ra,3bc004f2 <__system_reset> + +000000003bc005ec : + 3bc005ec: 1141 addi sp,sp,-16 + 3bc005ee: e022 sd s0,0(sp) + 3bc005f0: 842a mv s0,a0 + 3bc005f2: 0000a517 auipc a0,0xa + 3bc005f6: df650513 addi a0,a0,-522 # 3bc0a3e8 + 3bc005fa: e406 sd ra,8(sp) + 3bc005fc: d5dff0ef jal ra,3bc00358 + 3bc00600: 03003737 lui a4,0x3003 + 3bc00604: 535c lw a5,36(a4) + 3bc00606: 6609 lui a2,0x2 + 3bc00608: 60a2 ld ra,8(sp) + 3bc0060a: 2781 sext.w a5,a5 + 3bc0060c: fbf7f793 andi a5,a5,-65 + 3bc00610: d35c sw a5,36(a4) + 3bc00612: 020b07b7 lui a5,0x20b0 + 3bc00616: 43d4 lw a3,4(a5) + 3bc00618: 8ed1 or a3,a3,a2 + 3bc0061a: c3d4 sw a3,4(a5) + 3bc0061c: 0004069b sext.w a3,s0 + 3bc00620: d394 sw a3,32(a5) + 3bc00622: 9401 srai s0,s0,0x20 + 3bc00624: d3c0 sw s0,36(a5) + 3bc00626: 535c lw a5,36(a4) + 3bc00628: 6402 ld s0,0(sp) + 3bc0062a: 2781 sext.w a5,a5 + 3bc0062c: 0407e793 ori a5,a5,64 + 3bc00630: d35c sw a5,36(a4) + 3bc00632: 0141 addi sp,sp,16 + 3bc00634: 8082 ret + +000000003bc00636 : + 3bc00636: 1141 addi sp,sp,-16 + 3bc00638: e406 sd ra,8(sp) + 3bc0063a: c8800097 auipc ra,0xc8800 + 3bc0063e: 9e6080e7 jalr -1562(ra) # 4400020 + 3bc00642: 67b5 lui a5,0xd + 3bc00644: 2501 sext.w a0,a0 + 3bc00646: ea078713 addi a4,a5,-352 # cea0 <__BSS_SIZE__+0x7290> + 3bc0064a: 00e50a63 beq a0,a4,3bc0065e + 3bc0064e: ea378793 addi a5,a5,-349 + 3bc00652: 02f50063 beq a0,a5,3bc00672 + 3bc00656: 0e0007b7 lui a5,0xe000 + 3bc0065a: c3c8 sw a0,4(a5) + 3bc0065c: a801 j 3bc0066c + 3bc0065e: 4d4757b7 lui a5,0x4d475 + 3bc00662: 0e000737 lui a4,0xe000 + 3bc00666: e3278793 addi a5,a5,-462 # 4d474e32 <__BL2_END__+0x11861622> + 3bc0066a: c35c sw a5,4(a4) + 3bc0066c: 60a2 ld ra,8(sp) + 3bc0066e: 0141 addi sp,sp,16 + 3bc00670: 8082 ret + 3bc00672: 4d4757b7 lui a5,0x4d475 + 3bc00676: 0e000737 lui a4,0xe000 + 3bc0067a: e3178793 addi a5,a5,-463 # 4d474e31 <__BL2_END__+0x11861621> + 3bc0067e: b7f5 j 3bc0066a + +000000003bc00680 : + 3bc00680: 030027b7 lui a5,0x3002 + 3bc00684: 0207a823 sw zero,48(a5) # 3002030 <__BSS_SIZE__+0x2ffc420> + 3bc00688: 0207aa23 sw zero,52(a5) + 3bc0068c: 8082 ret + +000000003bc0068e : + 3bc0068e: 7139 addi sp,sp,-64 + 3bc00690: 0000a797 auipc a5,0xa + 3bc00694: dc87b783 ld a5,-568(a5) # 3bc0a458 + 3bc00698: e03e sd a5,0(sp) + 3bc0069a: 0000a797 auipc a5,0xa + 3bc0069e: dc67b783 ld a5,-570(a5) # 3bc0a460 + 3bc006a2: e43e sd a5,8(sp) + 3bc006a4: 0000a797 auipc a5,0xa + 3bc006a8: dc47b783 ld a5,-572(a5) # 3bc0a468 + 3bc006ac: e83e sd a5,16(sp) + 3bc006ae: 0000a517 auipc a0,0xa + 3bc006b2: d4250513 addi a0,a0,-702 # 3bc0a3f0 + 3bc006b6: 0000a797 auipc a5,0xa + 3bc006ba: dba7b783 ld a5,-582(a5) # 3bc0a470 + 3bc006be: f426 sd s1,40(sp) + 3bc006c0: ec3e sd a5,24(sp) + 3bc006c2: fc06 sd ra,56(sp) + 3bc006c4: f822 sd s0,48(sp) + 3bc006c6: f04a sd s2,32(sp) + 3bc006c8: c91ff0ef jal ra,3bc00358 + 3bc006cc: 030027b7 lui a5,0x3002 + 3bc006d0: 577d li a4,-1 + 3bc006d2: 5b84 lw s1,48(a5) + 3bc006d4: 03f00693 li a3,63 + 3bc006d8: db98 sw a4,48(a5) + 3bc006da: dbd4 sw a3,52(a5) + 3bc006dc: 054887b7 lui a5,0x5488 + 3bc006e0: 03003737 lui a4,0x3003 + 3bc006e4: 10178793 addi a5,a5,257 # 5488101 + 3bc006e8: 80f72423 sw a5,-2040(a4) # 3002808 <__BSS_SIZE__+0x2ffcbf8> + 3bc006ec: 030037b7 lui a5,0x3003 + 3bc006f0: 84d72023 sw a3,-1984(a4) + 3bc006f4: 2481 sext.w s1,s1 + 3bc006f6: 4601 li a2,0 + 3bc006f8: 85470713 addi a4,a4,-1964 + 3bc006fc: 01010813 addi a6,sp,16 + 3bc00700: 80c78513 addi a0,a5,-2036 # 300280c <__BSS_SIZE__+0x2ffcbfc> + 3bc00704: 45c1 li a1,16 + 3bc00706: 4026468b lrw a3,a2,sp,0 + 3bc0070a: c314 sw a3,0(a4) + 3bc0070c: ffc72683 lw a3,-4(a4) + 3bc00710: 0741 addi a4,a4,16 + 3bc00712: 2681 sext.w a3,a3 + 3bc00714: 9abd andi a3,a3,-17 + 3bc00716: 0016e693 ori a3,a3,1 + 3bc0071a: fed72623 sw a3,-20(a4) + 3bc0071e: 4106468b lrw a3,a2,a6,0 + 3bc00722: 40a6568b srw a3,a2,a0,0 + 3bc00726: 0611 addi a2,a2,4 + 3bc00728: fcb61fe3 bne a2,a1,3bc00706 + 3bc0072c: 80078613 addi a2,a5,-2048 + 3bc00730: 4218 lw a4,0(a2) + 3bc00732: 76bd lui a3,0xfffef + 3bc00734: eee68693 addi a3,a3,-274 # fffffffffffeeeee <__BL2_END__+0xffffffffc43db6de> + 3bc00738: 2701 sext.w a4,a4 + 3bc0073a: 8f75 and a4,a4,a3 + 3bc0073c: c218 sw a4,0(a2) + 3bc0073e: 00448737 lui a4,0x448 + 3bc00742: 90078613 addi a2,a5,-1792 + 3bc00746: 10170713 addi a4,a4,257 # 448101 <__BSS_SIZE__+0x4424f1> + 3bc0074a: c618 sw a4,8(a2) + 3bc0074c: 03002437 lui s0,0x3002 + 3bc00750: 018006b7 lui a3,0x1800 + 3bc00754: 6841 lui a6,0x10 + 3bc00756: d014 sw a3,32(s0) + 3bc00758: 30980593 addi a1,a6,777 # 10309 <__BSS_SIZE__+0xa6f9> + 3bc0075c: 10040693 addi a3,s0,256 # 3002100 <__BSS_SIZE__+0x2ffc4f0> + 3bc00760: da8c sw a1,48(a3) + 3bc00762: 000205b7 lui a1,0x20 + 3bc00766: 20958593 addi a1,a1,521 # 20209 <__BSS_SIZE__+0x1a5f9> + 3bc0076a: de8c sw a1,56(a3) + 3bc0076c: c658 sw a4,12(a2) + 3bc0076e: 00030637 lui a2,0x30 + 3bc00772: 00960313 addi t1,a2,9 # 30009 <__BSS_SIZE__+0x2a3f9> + 3bc00776: 04642423 sw t1,72(s0) + 3bc0077a: 30960713 addi a4,a2,777 + 3bc0077e: 00040537 lui a0,0x40 + 3bc00782: c878 sw a4,84(s0) + 3bc00784: 00080937 lui s2,0x80 + 3bc00788: 00950713 addi a4,a0,9 # 40009 <__BSS_SIZE__+0x3a3f9> + 3bc0078c: d078 sw a4,100(s0) + 3bc0078e: 00990893 addi a7,s2,9 # 80009 <__BSS_SIZE__+0x7a3f9> + 3bc00792: 08040713 addi a4,s0,128 + 3bc00796: 01172423 sw a7,8(a4) + 3bc0079a: 001208b7 lui a7,0x120 + 3bc0079e: 08a5 addi a7,a7,9 + 3bc007a0: 01172c23 sw a7,24(a4) + 3bc007a4: 000f08b7 lui a7,0xf0 + 3bc007a8: 08a5 addi a7,a7,9 + 3bc007aa: 0316a023 sw a7,32(a3) # 1800020 <__BSS_SIZE__+0x17fa410> + 3bc007ae: 0825 addi a6,a6,9 + 3bc007b0: 03072423 sw a6,40(a4) + 3bc007b4: 10960813 addi a6,a2,265 + 3bc007b8: 07072223 sw a6,100(a4) + 3bc007bc: 30950513 addi a0,a0,777 + 3bc007c0: d768 sw a0,108(a4) + 3bc007c2: 00060537 lui a0,0x60 + 3bc007c6: 04672423 sw t1,72(a4) + 3bc007ca: 20950513 addi a0,a0,521 # 60209 <__BSS_SIZE__+0x5a5f9> + 3bc007ce: cb28 sw a0,80(a4) + 3bc007d0: cf28 sw a0,88(a4) + 3bc007d2: ca8c sw a1,16(a3) + 3bc007d4: 20960613 addi a2,a2,521 + 3bc007d8: c2f0 sw a2,68(a3) + 3bc007da: 00050637 lui a2,0x50 + 3bc007de: 0625 addi a2,a2,9 + 3bc007e0: df10 sw a2,56(a4) + 3bc007e2: d6d0 sw a2,44(a3) + 3bc007e4: 88078793 addi a5,a5,-1920 + 3bc007e8: 5398 lw a4,32(a5) + 3bc007ea: 10090913 addi s2,s2,256 + 3bc007ee: 0124f933 and s2,s1,s2 + 3bc007f2: 2701 sext.w a4,a4 + 3bc007f4: 9b6d andi a4,a4,-5 + 3bc007f6: d398 sw a4,32(a5) + 3bc007f8: 57d8 lw a4,44(a5) + 3bc007fa: 0c800513 li a0,200 + 3bc007fe: 2701 sext.w a4,a4 + 3bc00800: 9b65 andi a4,a4,-7 + 3bc00802: d7d8 sw a4,44(a5) + 3bc00804: 987ff0ef jal ra,3bc0018a + 3bc00808: 03242823 sw s2,48(s0) + 3bc0080c: 70e2 ld ra,56(sp) + 3bc0080e: 02042a23 sw zero,52(s0) + 3bc00812: 7442 ld s0,48(sp) + 3bc00814: 74a2 ld s1,40(sp) + 3bc00816: 7902 ld s2,32(sp) + 3bc00818: 6121 addi sp,sp,64 + 3bc0081a: 8082 ret + +000000003bc0081c : + 3bc0081c: 1141 addi sp,sp,-16 + 3bc0081e: e406 sd ra,8(sp) + 3bc00820: e6fff0ef jal ra,3bc0068e + 3bc00824: 60a2 ld ra,8(sp) + 3bc00826: 0000a517 auipc a0,0xa + 3bc0082a: bda50513 addi a0,a0,-1062 # 3bc0a400 + 3bc0082e: 0141 addi sp,sp,16 + 3bc00830: b625 j 3bc00358 + +000000003bc00832 : + 3bc00832: 8082 ret + +000000003bc00834 : + 3bc00834: 05025737 lui a4,0x5025 + 3bc00838: 475c lw a5,12(a4) + 3bc0083a: 471c lw a5,8(a4) + 3bc0083c: f40006b7 lui a3,0xf4000 + 3bc00840: bff68693 addi a3,a3,-1025 # fffffffff3fffbff <__BL2_END__+0xffffffffb83ec3ef> + 3bc00844: 2781 sext.w a5,a5 + 3bc00846: 8ff5 and a5,a5,a3 + 3bc00848: 0c0006b7 lui a3,0xc000 + 3bc0084c: 8fd5 or a5,a5,a3 + 3bc0084e: c71c sw a5,8(a4) + 3bc00850: 4685 li a3,1 + 3bc00852: 050267b7 lui a5,0x5026 + 3bc00856: 48d7a623 sw a3,1164(a5) # 502648c + 3bc0085a: 4807a623 sw zero,1164(a5) + 3bc0085e: 471c lw a5,8(a4) + 3bc00860: 0c0016b7 lui a3,0xc001 + 3bc00864: 80068693 addi a3,a3,-2048 # c000800 + 3bc00868: 2781 sext.w a5,a5 + 3bc0086a: 8fd5 or a5,a5,a3 + 3bc0086c: c71c sw a5,8(a4) + 3bc0086e: 0000a517 auipc a0,0xa + 3bc00872: ba250513 addi a0,a0,-1118 # 3bc0a410 + 3bc00876: b4cd j 3bc00358 + +000000003bc00878 : + 3bc00878: 1141 addi sp,sp,-16 + 3bc0087a: e022 sd s0,0(sp) + 3bc0087c: 05026437 lui s0,0x5026 + 3bc00880: 0f842583 lw a1,248(s0) # 50260f8 + 3bc00884: 0000a517 auipc a0,0xa + 3bc00888: ba450513 addi a0,a0,-1116 # 3bc0a428 + 3bc0088c: e406 sd ra,8(sp) + 3bc0088e: 2581 sext.w a1,a1 + 3bc00890: ac9ff0ef jal ra,3bc00358 + 3bc00894: 0fc42583 lw a1,252(s0) + 3bc00898: 0000a517 auipc a0,0xa + 3bc0089c: ba850513 addi a0,a0,-1112 # 3bc0a440 + 3bc008a0: 2581 sext.w a1,a1 + 3bc008a2: ab7ff0ef jal ra,3bc00358 + 3bc008a6: 4785 li a5,1 + 3bc008a8: 0cf42023 sw a5,192(s0) + 3bc008ac: 05026737 lui a4,0x5026 + 3bc008b0: 4685 li a3,1 + 3bc008b2: 0c072783 lw a5,192(a4) # 50260c0 + 3bc008b6: 2781 sext.w a5,a5 + 3bc008b8: fed79de3 bne a5,a3,3bc008b2 + 3bc008bc: 0cd72623 sw a3,204(a4) + 3bc008c0: 05026737 lui a4,0x5026 + 3bc008c4: 4685 li a3,1 + 3bc008c6: 0cc72783 lw a5,204(a4) # 50260cc + 3bc008ca: 2781 sext.w a5,a5 + 3bc008cc: fed79de3 bne a5,a3,3bc008c6 + 3bc008d0: 0cd72423 sw a3,200(a4) + 3bc008d4: 05026737 lui a4,0x5026 + 3bc008d8: 4685 li a3,1 + 3bc008da: 0c872783 lw a5,200(a4) # 50260c8 + 3bc008de: 2781 sext.w a5,a5 + 3bc008e0: fed79de3 bne a5,a3,3bc008da + 3bc008e4: 0ed72023 sw a3,224(a4) + 3bc008e8: 050266b7 lui a3,0x5026 + 3bc008ec: 4705 li a4,1 + 3bc008ee: 0e06a783 lw a5,224(a3) # 50260e0 + 3bc008f2: 2781 sext.w a5,a5 + 3bc008f4: fee79de3 bne a5,a4,3bc008ee + 3bc008f8: 05025737 lui a4,0x5025 + 3bc008fc: 08070613 addi a2,a4,128 # 5025080 + 3bc00900: 565c lw a5,44(a2) + 3bc00902: 60a2 ld ra,8(sp) + 3bc00904: 6402 ld s0,0(sp) + 3bc00906: 2781 sext.w a5,a5 + 3bc00908: 0017e793 ori a5,a5,1 + 3bc0090c: d65c sw a5,44(a2) + 3bc0090e: 67ad lui a5,0xb + 3bc00910: b1878793 addi a5,a5,-1256 # ab18 <__BSS_SIZE__+0x4f08> + 3bc00914: c35c sw a5,4(a4) + 3bc00916: 471c lw a5,8(a4) + 3bc00918: 7645 lui a2,0xffff1 + 3bc0091a: 84060613 addi a2,a2,-1984 # ffffffffffff0840 <__BL2_END__+0xffffffffc43dd030> + 3bc0091e: 2781 sext.w a5,a5 + 3bc00920: 8fd1 or a5,a5,a2 + 3bc00922: c71c sw a5,8(a4) + 3bc00924: 0d06a783 lw a5,208(a3) + 3bc00928: 2781 sext.w a5,a5 + 3bc0092a: 9bed andi a5,a5,-5 + 3bc0092c: 0cf6a823 sw a5,208(a3) + 3bc00930: 0141 addi sp,sp,16 + 3bc00932: 8082 ret + +000000003bc00934 : + 3bc00934: 7139 addi sp,sp,-64 + 3bc00936: 0000a797 auipc a5,0xa + 3bc0093a: b427b783 ld a5,-1214(a5) # 3bc0a478 + 3bc0093e: e43e sd a5,8(sp) + 3bc00940: 0000a797 auipc a5,0xa + 3bc00944: b407b783 ld a5,-1216(a5) # 3bc0a480 + 3bc00948: e83e sd a5,16(sp) + 3bc0094a: 400007b7 lui a5,0x40000 + 3bc0094e: 10778793 addi a5,a5,263 # 40000107 <__BL2_END__+0x43ec8f7> + 3bc00952: 07de slli a5,a5,0x17 + 3bc00954: ec3e sd a5,24(sp) + 3bc00956: 41d00793 li a5,1053 + 3bc0095a: 07d6 slli a5,a5,0x15 + 3bc0095c: f03e sd a5,32(sp) + 3bc0095e: 6785 lui a5,0x1 + 3bc00960: 10178793 addi a5,a5,257 # 1101 <__BSS_SIZE__-0x4b0f> + 3bc00964: d43e sw a5,40(sp) + 3bc00966: 478d li a5,3 + 3bc00968: 02f10723 sb a5,46(sp) + 3bc0096c: fc06 sd ra,56(sp) + 3bc0096e: 4701 li a4,0 + 3bc00970: 4781 li a5,0 + 3bc00972: 002c addi a1,sp,8 + 3bc00974: 02400693 li a3,36 + 3bc00978: 80b7460b lrbu a2,a4,a1,0 + 3bc0097c: 0705 addi a4,a4,1 + 3bc0097e: 9fb1 addw a5,a5,a2 + 3bc00980: 3c07b78b extu a5,a5,15,0 + 3bc00984: fed71ae3 bne a4,a3,3bc00978 + 3bc00988: 01900537 lui a0,0x1900 + 3bc0098c: 02800613 li a2,40 + 3bc00990: 40050513 addi a0,a0,1024 # 1900400 <__BSS_SIZE__+0x18fa7f0> + 3bc00994: 02f11623 sh a5,44(sp) + 3bc00998: 0e2000ef jal ra,3bc00a7a + 3bc0099c: 70e2 ld ra,56(sp) + 3bc0099e: 6121 addi sp,sp,64 + 3bc009a0: 8082 ret + +000000003bc009a2 : + 3bc009a2: 4501 li a0,0 + 3bc009a4: 8082 ret + +000000003bc009a6 : + 3bc009a6: 00050023 sb zero,0(a0) + 3bc009aa: 872a mv a4,a0 + 3bc009ac: 0000a317 auipc t1,0xa + 3bc009b0: adc30313 addi t1,t1,-1316 # 3bc0a488 + 3bc009b4: 4e65 li t3,25 + 3bc009b6: 02c5f7b3 remu a5,a1,a2 + 3bc009ba: 80f3478b lrbu a5,t1,a5,0 + 3bc009be: ce91 beqz a3,3bc009da + 3bc009c0: f9f7881b addiw a6,a5,-97 + 3bc009c4: 0ff87813 andi a6,a6,255 + 3bc009c8: 02000893 li a7,32 + 3bc009cc: 010e7363 bgeu t3,a6,3bc009d2 + 3bc009d0: 4881 li a7,0 + 3bc009d2: 411787bb subw a5,a5,a7 + 3bc009d6: 0ff7f793 andi a5,a5,255 + 3bc009da: 0817578b sbib a5,(a4),1,0 + 3bc009de: 02c5d7b3 divu a5,a1,a2 + 3bc009e2: 02c5f463 bgeu a1,a2,3bc00a0a + 3bc009e6: 87aa mv a5,a0 + 3bc009e8: 86ba mv a3,a4 + 3bc009ea: 02d7e263 bltu a5,a3,3bc00a0e + 3bc009ee: fff50693 addi a3,a0,-1 + 3bc009f2: 4781 li a5,0 + 3bc009f4: 00d76863 bltu a4,a3,3bc00a04 + 3bc009f8: 40a707b3 sub a5,a4,a0 + 3bc009fc: 0785 addi a5,a5,1 + 3bc009fe: 8385 srli a5,a5,0x1 + 3bc00a00: 40f007b3 neg a5,a5 + 3bc00a04: 00f70533 add a0,a4,a5 + 3bc00a08: 8082 ret + 3bc00a0a: 85be mv a1,a5 + 3bc00a0c: b76d j 3bc009b6 + 3bc00a0e: 0006c583 lbu a1,0(a3) + 3bc00a12: 0007c603 lbu a2,0(a5) + 3bc00a16: 1817d58b sbia a1,(a5),1,0 + 3bc00a1a: 19f6d60b sbia a2,(a3),-1,0 + 3bc00a1e: b7f1 j 3bc009ea + +000000003bc00a20 : + 3bc00a20: 0ff5f813 andi a6,a1,255 + 3bc00a24: 87aa mv a5,a0 + 3bc00a26: 0077f713 andi a4,a5,7 + 3bc00a2a: c719 beqz a4,3bc00a38 + 3bc00a2c: e211 bnez a2,3bc00a30 + 3bc00a2e: 8082 ret + 3bc00a30: 1817d80b sbia a6,(a5),1,0 + 3bc00a34: 167d addi a2,a2,-1 + 3bc00a36: bfc5 j 3bc00a26 + 3bc00a38: ca05 beqz a2,3bc00a68 + 3bc00a3a: 0000a697 auipc a3,0xa + 3bc00a3e: a766b683 ld a3,-1418(a3) # 3bc0a4b0 + 3bc00a42: 0ff5f593 andi a1,a1,255 + 3bc00a46: 02d585b3 mul a1,a1,a3 + 3bc00a4a: 489d li a7,7 + 3bc00a4c: 4681 li a3,0 + 3bc00a4e: 40d60333 sub t1,a2,a3 + 3bc00a52: 0068ec63 bltu a7,t1,3bc00a6a + 3bc00a56: 00365693 srli a3,a2,0x3 + 3bc00a5a: 55e1 li a1,-8 + 3bc00a5c: 06d7978b addsl a5,a5,a3,3 + 3bc00a60: 20b6960b mula a2,a3,a1 + 3bc00a64: 00e61763 bne a2,a4,3bc00a72 + 3bc00a68: 8082 ret + 3bc00a6a: 60d7d58b srd a1,a5,a3,0 + 3bc00a6e: 06a1 addi a3,a3,8 + 3bc00a70: bff9 j 3bc00a4e + 3bc00a72: 00e7d80b srb a6,a5,a4,0 + 3bc00a76: 0705 addi a4,a4,1 + 3bc00a78: b7f5 j 3bc00a64 + +000000003bc00a7a : + 3bc00a7a: 00b547b3 xor a5,a0,a1 + 3bc00a7e: 8b9d andi a5,a5,7 + 3bc00a80: e7a9 bnez a5,3bc00aca + 3bc00a82: 87aa mv a5,a0 + 3bc00a84: 0077f713 andi a4,a5,7 + 3bc00a88: cb09 beqz a4,3bc00a9a + 3bc00a8a: e211 bnez a2,3bc00a8e + 3bc00a8c: 8082 ret + 3bc00a8e: 9815c70b lbuia a4,(a1),1,0 + 3bc00a92: 167d addi a2,a2,-1 + 3bc00a94: 1817d70b sbia a4,(a5),1,0 + 3bc00a98: b7f5 j 3bc00a84 + 3bc00a9a: 469d li a3,7 + 3bc00a9c: e619 bnez a2,3bc00aaa + 3bc00a9e: 8082 ret + 3bc00aa0: 60e5c80b lrd a6,a1,a4,0 + 3bc00aa4: 60e7d80b srd a6,a5,a4,0 + 3bc00aa8: 0721 addi a4,a4,8 + 3bc00aaa: 40e60833 sub a6,a2,a4 + 3bc00aae: ff06e9e3 bltu a3,a6,3bc00aa0 + 3bc00ab2: 00365713 srli a4,a2,0x3 + 3bc00ab6: 56e1 li a3,-8 + 3bc00ab8: 20d7160b mula a2,a4,a3 + 3bc00abc: 070e slli a4,a4,0x3 + 3bc00abe: 97ba add a5,a5,a4 + 3bc00ac0: 95ba add a1,a1,a4 + 3bc00ac2: 4701 li a4,0 + 3bc00ac4: 00e61563 bne a2,a4,3bc00ace + 3bc00ac8: 8082 ret + 3bc00aca: 87aa mv a5,a0 + 3bc00acc: bfdd j 3bc00ac2 + 3bc00ace: 80e5c68b lrbu a3,a1,a4,0 + 3bc00ad2: 00e7d68b srb a3,a5,a4,0 + 3bc00ad6: 0705 addi a4,a4,1 + 3bc00ad8: b7f5 j 3bc00ac4 + +000000003bc00ada : + 3bc00ada: 40b50733 sub a4,a0,a1 + 3bc00ade: 87aa mv a5,a0 + 3bc00ae0: 00c76363 bltu a4,a2,3bc00ae6 + 3bc00ae4: bf59 j 3bc00a7a + 3bc00ae6: 95b2 add a1,a1,a2 + 3bc00ae8: 9532 add a0,a0,a2 + 3bc00aea: 00f51363 bne a0,a5,3bc00af0 + 3bc00aee: 8082 ret + 3bc00af0: 89f5c70b lbuib a4,(a1),-1,0 + 3bc00af4: 09f5570b sbib a4,(a0),-1,0 + 3bc00af8: bfcd j 3bc00aea + +000000003bc00afa : + 3bc00afa: 0e0007b7 lui a5,0xe000 + 3bc00afe: 4794 lw a3,8(a5) + 3bc00b00: 1141 addi sp,sp,-16 + 3bc00b02: e022 sd s0,0(sp) + 3bc00b04: e406 sd ra,8(sp) + 3bc00b06: 6709 lui a4,0x2 + 3bc00b08: 842a mv s0,a0 + 3bc00b0a: 00e6e463 bltu a3,a4,3bc00b12 + 3bc00b0e: 0007a423 sw zero,8(a5) # e000008 + 3bc00b12: 0e0007b7 lui a5,0xe000 + 3bc00b16: 4798 lw a4,8(a5) + 3bc00b18: 0017069b addiw a3,a4,1 + 3bc00b1c: c794 sw a3,8(a5) + 3bc00b1e: 0c0006b7 lui a3,0xc000 + 3bc00b22: 10e6d40b surb s0,a3,a4,0 + 3bc00b26: 4709 li a4,2 + 3bc00b28: 00b74d63 blt a4,a1,3bc00b42 + 3bc00b2c: 0007c783 lbu a5,0(a5) # e000000 + 3bc00b30: 8b91 andi a5,a5,4 + 3bc00b32: eb81 bnez a5,3bc00b42 + 3bc00b34: 0ff47513 andi a0,s0,255 + 3bc00b38: f6cff0ef jal ra,3bc002a4 + 3bc00b3c: 00055363 bgez a0,3bc00b42 + 3bc00b40: 547d li s0,-1 + 3bc00b42: 60a2 ld ra,8(sp) + 3bc00b44: 8522 mv a0,s0 + 3bc00b46: 6402 ld s0,0(sp) + 3bc00b48: 0141 addi sp,sp,16 + 3bc00b4a: 8082 ret + +000000003bc00b4c : + 3bc00b4c: 4701 li a4,0 + 3bc00b4e: 80e5478b lrbu a5,a0,a4,0 + 3bc00b52: 80e5c68b lrbu a3,a1,a4,0 + 3bc00b56: 00d78563 beq a5,a3,3bc00b60 + 3bc00b5a: 40d7853b subw a0,a5,a3 + 3bc00b5e: 8082 ret + 3bc00b60: 0705 addi a4,a4,1 + 3bc00b62: f7f5 bnez a5,3bc00b4e + 3bc00b64: 4501 li a0,0 + 3bc00b66: 8082 ret + +000000003bc00b68 : + 3bc00b68: 87aa mv a5,a0 + 3bc00b6a: 0007c703 lbu a4,0(a5) + 3bc00b6e: e701 bnez a4,3bc00b76 + 3bc00b70: 40a78533 sub a0,a5,a0 + 3bc00b74: 8082 ret + 3bc00b76: 0785 addi a5,a5,1 + 3bc00b78: bfcd j 3bc00b6a + +000000003bc00b7a : + 3bc00b7a: 1101 addi sp,sp,-32 + 3bc00b7c: 00c007b7 lui a5,0xc00 + 3bc00b80: e822 sd s0,16(sp) + 3bc00b82: e426 sd s1,8(sp) + 3bc00b84: e04a sd s2,0(sp) + 3bc00b86: 1c55370b extu a4,a0,7,5 + 3bc00b8a: 4007879b addiw a5,a5,1024 + 3bc00b8e: 0155541b srliw s0,a0,0x15 + 3bc00b92: 5105390b extu s2,a0,20,16 + 3bc00b96: 1045348b extu s1,a0,4,4 + 3bc00b9a: 3c85350b extu a0,a0,15,8 + 3bc00b9e: 9d3d addw a0,a0,a5 + 3bc00ba0: 0025151b slliw a0,a0,0x2 + 3bc00ba4: ec06 sd ra,24(sp) + 3bc00ba6: 7c05350b extu a0,a0,31,0 + 3bc00baa: c118 sw a4,0(a0) + 3bc00bac: 4529 li a0,10 + 3bc00bae: ddcff0ef jal ra,3bc0018a + 3bc00bb2: 00447793 andi a5,s0,4 + 3bc00bb6: eb9d bnez a5,3bc00bec + 3bc00bb8: 678d lui a5,0x3 + 3bc00bba: 881d andi s0,s0,7 + 3bc00bbc: 0207879b addiw a5,a5,32 + 3bc00bc0: 9c3d addw s0,s0,a5 + 3bc00bc2: 00c4141b slliw s0,s0,0xc + 3bc00bc6: 0504041b addiw s0,s0,80 + 3bc00bca: 7c04340b extu s0,s0,31,0 + 3bc00bce: 4008 lw a0,0(s0) + 3bc00bd0: 0125553b srlw a0,a0,s2 + 3bc00bd4: 00157793 andi a5,a0,1 + 3bc00bd8: 853e mv a0,a5 + 3bc00bda: c099 beqz s1,3bc00be0 + 3bc00bdc: 0017c513 xori a0,a5,1 + 3bc00be0: 60e2 ld ra,24(sp) + 3bc00be2: 6442 ld s0,16(sp) + 3bc00be4: 64a2 ld s1,8(sp) + 3bc00be6: 6902 ld s2,0(sp) + 3bc00be8: 6105 addi sp,sp,32 + 3bc00bea: 8082 ret + 3bc00bec: 05021437 lui s0,0x5021 + 3bc00bf0: 05040413 addi s0,s0,80 # 5021050 + 3bc00bf4: bfd9 j 3bc00bca + +000000003bc00bf6 : + 3bc00bf6: 030507b7 lui a5,0x3050 + 3bc00bfa: 1047a783 lw a5,260(a5) # 3050104 <__BSS_SIZE__+0x304a4f4> + 3bc00bfe: 0007851b sext.w a0,a5 + 3bc00c02: 8b91 andi a5,a5,4 + 3bc00c04: c391 beqz a5,3bc00c08 + 3bc00c06: bf95 j 3bc00b7a + 3bc00c08: 030007b7 lui a5,0x3000 + 3bc00c0c: 43c8 lw a0,4(a5) + 3bc00c0e: 2085350b extu a0,a0,8,8 + 3bc00c12: 8082 ret + +000000003bc00c14 : + 3bc00c14: 1141 addi sp,sp,-16 + 3bc00c16: e406 sd ra,8(sp) + 3bc00c18: df4ff0ef jal ra,3bc0020c + 3bc00c1c: 60a2 ld ra,8(sp) + 3bc00c1e: 3e75051b addiw a0,a0,999 + 3bc00c22: 3e800793 li a5,1000 + 3bc00c26: 02f5553b divuw a0,a0,a5 + 3bc00c2a: 0141 addi sp,sp,16 + 3bc00c2c: 8082 ret + +000000003bc00c2e : + 3bc00c2e: 7179 addi sp,sp,-48 + 3bc00c30: 8732 mv a4,a2 + 3bc00c32: 2601 sext.w a2,a2 + 3bc00c34: f022 sd s0,32(sp) + 3bc00c36: ec26 sd s1,24(sp) + 3bc00c38: e03a sd a4,0(sp) + 3bc00c3a: f406 sd ra,40(sp) + 3bc00c3c: 84aa mv s1,a0 + 3bc00c3e: e42e sd a1,8(sp) + 3bc00c40: 295030ef jal ra,3bc046d4 + 3bc00c44: 4785 li a5,1 + 3bc00c46: f8d1470b ldd a4,a3,(sp),0,4 + 3bc00c4a: 5479 li s0,-2 + 3bc00c4c: 00f51363 bne a0,a5,3bc00c52 + 3bc00c50: 4401 li s0,0 + 3bc00c52: 8626 mv a2,s1 + 3bc00c54: 85a2 mv a1,s0 + 3bc00c56: 0000a517 auipc a0,0xa + 3bc00c5a: 86250513 addi a0,a0,-1950 # 3bc0a4b8 + 3bc00c5e: efaff0ef jal ra,3bc00358 + 3bc00c62: 70a2 ld ra,40(sp) + 3bc00c64: 8522 mv a0,s0 + 3bc00c66: 7402 ld s0,32(sp) + 3bc00c68: 64e2 ld s1,24(sp) + 3bc00c6a: 6145 addi sp,sp,48 + 3bc00c6c: 8082 ret + +000000003bc00c6e : + 3bc00c6e: 1101 addi sp,sp,-32 + 3bc00c70: 0000d617 auipc a2,0xd + 3bc00c74: f9060613 addi a2,a2,-112 # 3bc0dc00 <__BSS_START__> + 3bc00c78: e42a sd a0,8(sp) + 3bc00c7a: 6585 lui a1,0x1 + 3bc00c7c: 0000a517 auipc a0,0xa + 3bc00c80: 85c50513 addi a0,a0,-1956 # 3bc0a4d8 + 3bc00c84: ec06 sd ra,24(sp) + 3bc00c86: e822 sd s0,16(sp) + 3bc00c88: ed0ff0ef jal ra,3bc00358 + 3bc00c8c: c87ff097 auipc ra,0xc87ff + 3bc00c90: 394080e7 jalr 916(ra) # 4400020 + 3bc00c94: 67b5 lui a5,0xd + 3bc00c96: 2501 sext.w a0,a0 + 3bc00c98: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00c9c: 66a2 ld a3,8(sp) + 3bc00c9e: 6605 lui a2,0x1 + 3bc00ca0: 04f51463 bne a0,a5,3bc00ce8 + 3bc00ca4: 3c0027b7 lui a5,0x3c002 + 3bc00ca8: 0e07a583 lw a1,224(a5) # 3c0020e0 <__BL2_END__+0x3ee8d0> + 3bc00cac: 0000d517 auipc a0,0xd + 3bc00cb0: f5450513 addi a0,a0,-172 # 3bc0dc00 <__BSS_START__> + 3bc00cb4: f7bff0ef jal ra,3bc00c2e + 3bc00cb8: 02054463 bltz a0,3bc00ce0 + 3bc00cbc: 0000d417 auipc s0,0xd + 3bc00cc0: f4440413 addi s0,s0,-188 # 3bc0dc00 <__BSS_START__> + 3bc00cc4: 6018 ld a4,0(s0) + 3bc00cc6: 0000a797 auipc a5,0xa + 3bc00cca: c6a7b783 ld a5,-918(a5) # 3bc0a930 + 3bc00cce: 02f70a63 beq a4,a5,3bc00d02 + 3bc00cd2: 0000a517 auipc a0,0xa + 3bc00cd6: 81e50513 addi a0,a0,-2018 # 3bc0a4f0 + 3bc00cda: e7eff0ef jal ra,3bc00358 + 3bc00cde: 557d li a0,-1 + 3bc00ce0: 60e2 ld ra,24(sp) + 3bc00ce2: 6442 ld s0,16(sp) + 3bc00ce4: 6105 addi sp,sp,32 + 3bc00ce6: 8082 ret + 3bc00ce8: 3c0027b7 lui a5,0x3c002 + 3bc00cec: 0e07a583 lw a1,224(a5) # 3c0020e0 <__BL2_END__+0x3ee8d0> + 3bc00cf0: 0000d517 auipc a0,0xd + 3bc00cf4: f1050513 addi a0,a0,-240 # 3bc0dc00 <__BSS_START__> + 3bc00cf8: c87ff097 auipc ra,0xc87ff + 3bc00cfc: 368080e7 jalr 872(ra) # 4400060 + 3bc00d00: bf65 j 3bc00cb8 + 3bc00d02: 6585 lui a1,0x1 + 3bc00d04: 15d1 addi a1,a1,-12 + 3bc00d06: 0000d517 auipc a0,0xd + 3bc00d0a: f0650513 addi a0,a0,-250 # 3bc0dc0c <__BSS_START__+0xc> + 3bc00d0e: c87ff097 auipc ra,0xc87ff + 3bc00d12: 392080e7 jalr 914(ra) # 44000a0 + 3bc00d16: 4410 lw a2,8(s0) + 3bc00d18: 0005059b sext.w a1,a0 + 3bc00d1c: 00b60963 beq a2,a1,3bc00d2e + 3bc00d20: 00009517 auipc a0,0x9 + 3bc00d24: 7e850513 addi a0,a0,2024 # 3bc0a508 + 3bc00d28: e30ff0ef jal ra,3bc00358 + 3bc00d2c: bf4d j 3bc00cde + 3bc00d2e: 00009517 auipc a0,0x9 + 3bc00d32: 7fa50513 addi a0,a0,2042 # 3bc0a528 + 3bc00d36: e22ff0ef jal ra,3bc00358 + 3bc00d3a: 4501 li a0,0 + 3bc00d3c: b755 j 3bc00ce0 + +000000003bc00d3e : + 3bc00d3e: 1101 addi sp,sp,-32 + 3bc00d40: e822 sd s0,16(sp) + 3bc00d42: 0000d417 auipc s0,0xd + 3bc00d46: ebe40413 addi s0,s0,-322 # 3bc0dc00 <__BSS_START__> + 3bc00d4a: 4c10 lw a2,24(s0) + 3bc00d4c: 484c lw a1,20(s0) + 3bc00d4e: e42a sd a0,8(sp) + 3bc00d50: 00009517 auipc a0,0x9 + 3bc00d54: 7e050513 addi a0,a0,2016 # 3bc0a530 + 3bc00d58: ec06 sd ra,24(sp) + 3bc00d5a: dfeff0ef jal ra,3bc00358 + 3bc00d5e: 4c18 lw a4,24(s0) + 3bc00d60: 6791 lui a5,0x4 + 3bc00d62: 66a2 ld a3,8(sp) + 3bc00d64: 00f76363 bltu a4,a5,3bc00d6a + 3bc00d68: cc1c sw a5,24(s0) + 3bc00d6a: e436 sd a3,8(sp) + 3bc00d6c: c87ff097 auipc ra,0xc87ff + 3bc00d70: 2b4080e7 jalr 692(ra) # 4400020 + 3bc00d74: 67b5 lui a5,0xd + 3bc00d76: 2501 sext.w a0,a0 + 3bc00d78: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00d7c: 66a2 ld a3,8(sp) + 3bc00d7e: 01846603 lwu a2,24(s0) + 3bc00d82: 484c lw a1,20(s0) + 3bc00d84: 04f51363 bne a0,a5,3bc00dca + 3bc00d88: 0000e517 auipc a0,0xe + 3bc00d8c: e7850513 addi a0,a0,-392 # 3bc0ec00 + 3bc00d90: e9fff0ef jal ra,3bc00c2e + 3bc00d94: 02054763 bltz a0,3bc00dc2 + 3bc00d98: 4c0c lw a1,24(s0) + 3bc00d9a: 0000e517 auipc a0,0xe + 3bc00d9e: e6650513 addi a0,a0,-410 # 3bc0ec00 + 3bc00da2: c87ff097 auipc ra,0xc87ff + 3bc00da6: 2fe080e7 jalr 766(ra) # 44000a0 + 3bc00daa: 4810 lw a2,16(s0) + 3bc00dac: 0005059b sext.w a1,a0 + 3bc00db0: 02b60663 beq a2,a1,3bc00ddc + 3bc00db4: 00009517 auipc a0,0x9 + 3bc00db8: 79450513 addi a0,a0,1940 # 3bc0a548 + 3bc00dbc: d9cff0ef jal ra,3bc00358 + 3bc00dc0: 557d li a0,-1 + 3bc00dc2: 60e2 ld ra,24(sp) + 3bc00dc4: 6442 ld s0,16(sp) + 3bc00dc6: 6105 addi sp,sp,32 + 3bc00dc8: 8082 ret + 3bc00dca: 0000e517 auipc a0,0xe + 3bc00dce: e3650513 addi a0,a0,-458 # 3bc0ec00 + 3bc00dd2: c87ff097 auipc ra,0xc87ff + 3bc00dd6: 28e080e7 jalr 654(ra) # 4400060 + 3bc00dda: bf6d j 3bc00d94 + 3bc00ddc: 00009517 auipc a0,0x9 + 3bc00de0: 79450513 addi a0,a0,1940 # 3bc0a570 + 3bc00de4: d74ff0ef jal ra,3bc00358 + 3bc00de8: 4501 li a0,0 + 3bc00dea: bfe1 j 3bc00dc2 + +000000003bc00dec : + 3bc00dec: 7179 addi sp,sp,-48 + 3bc00dee: ec26 sd s1,24(sp) + 3bc00df0: 74cd lui s1,0xffff3 + 3bc00df2: e84a sd s2,16(sp) + 3bc00df4: e44e sd s3,8(sp) + 3bc00df6: e052 sd s4,0(sp) + 3bc00df8: f406 sd ra,40(sp) + 3bc00dfa: f022 sd s0,32(sp) + 3bc00dfc: 1604849b addiw s1,s1,352 + 3bc00e00: 4995 li s3,5 + 3bc00e02: 4a05 li s4,1 + 3bc00e04: 00009917 auipc s2,0x9 + 3bc00e08: 77490913 addi s2,s2,1908 # 3bc0a578 + 3bc00e0c: 4401 li s0,0 + 3bc00e0e: c87ff097 auipc ra,0xc87ff + 3bc00e12: 2b2080e7 jalr 690(ra) # 44000c0 + 3bc00e16: 00a45e63 bge s0,a0,3bc00e32 + 3bc00e1a: 8522 mv a0,s0 + 3bc00e1c: e53ff0ef jal ra,3bc00c6e + 3bc00e20: 00055463 bgez a0,3bc00e28 + 3bc00e24: 2405 addiw s0,s0,1 + 3bc00e26: b7e5 j 3bc00e0e + 3bc00e28: 8522 mv a0,s0 + 3bc00e2a: f15ff0ef jal ra,3bc00d3e + 3bc00e2e: fe054be3 bltz a0,3bc00e24 + 3bc00e32: c87ff097 auipc ra,0xc87ff + 3bc00e36: 28e080e7 jalr 654(ra) # 44000c0 + 3bc00e3a: 02a45f63 bge s0,a0,3bc00e78 + 3bc00e3e: dd7ff0ef jal ra,3bc00c14 + 3bc00e42: 0000b417 auipc s0,0xb + 3bc00e46: 90e40413 addi s0,s0,-1778 # 3bc0b750 + 3bc00e4a: 601c ld a5,0(s0) + 3bc00e4c: 00a79123 sh a0,2(a5) + 3bc00e50: 0000e517 auipc a0,0xe + 3bc00e54: db050513 addi a0,a0,-592 # 3bc0ec00 + 3bc00e58: 34a070ef jal ra,3bc081a2 + 3bc00e5c: db9ff0ef jal ra,3bc00c14 + 3bc00e60: 601c ld a5,0(s0) + 3bc00e62: 70a2 ld ra,40(sp) + 3bc00e64: 7402 ld s0,32(sp) + 3bc00e66: 00a79223 sh a0,4(a5) + 3bc00e6a: 64e2 ld s1,24(sp) + 3bc00e6c: 6942 ld s2,16(sp) + 3bc00e6e: 69a2 ld s3,8(sp) + 3bc00e70: 6a02 ld s4,0(sp) + 3bc00e72: 4501 li a0,0 + 3bc00e74: 6145 addi sp,sp,48 + 3bc00e76: 8082 ret + 3bc00e78: c87ff097 auipc ra,0xc87ff + 3bc00e7c: 1a8080e7 jalr 424(ra) # 4400020 + 3bc00e80: 9d25 addw a0,a0,s1 + 3bc00e82: 85a2 mv a1,s0 + 3bc00e84: 00a9ef63 bltu s3,a0,3bc00ea2 + 3bc00e88: 00aa1533 sll a0,s4,a0 + 3bc00e8c: 02957513 andi a0,a0,41 + 3bc00e90: c909 beqz a0,3bc00ea2 + 3bc00e92: 854a mv a0,s2 + 3bc00e94: cc4ff0ef jal ra,3bc00358 + 3bc00e98: c87ff097 auipc ra,0xc87ff + 3bc00e9c: 1e8080e7 jalr 488(ra) # 4400080 + 3bc00ea0: b7b5 j 3bc00e0c + 3bc00ea2: 00009517 auipc a0,0x9 + 3bc00ea6: 6fe50513 addi a0,a0,1790 # 3bc0a5a0 + 3bc00eaa: caeff0ef jal ra,3bc00358 + 3bc00eae: f0cff0ef jal ra,3bc005ba + +000000003bc00eb2 : + 3bc00eb2: 7179 addi sp,sp,-48 + 3bc00eb4: e84a sd s2,16(sp) + 3bc00eb6: 0000b917 auipc s2,0xb + 3bc00eba: 89a90913 addi s2,s2,-1894 # 3bc0b750 + 3bc00ebe: 00093783 ld a5,0(s2) + 3bc00ec2: f022 sd s0,32(sp) + 3bc00ec4: 0000d417 auipc s0,0xd + 3bc00ec8: d3c40413 addi s0,s0,-708 # 3bc0dc00 <__BSS_START__> + 3bc00ecc: 0047d703 lhu a4,4(a5) + 3bc00ed0: 5414 lw a3,40(s0) + 3bc00ed2: 5450 lw a2,44(s0) + 3bc00ed4: 504c lw a1,36(s0) + 3bc00ed6: ec26 sd s1,24(sp) + 3bc00ed8: f406 sd ra,40(sp) + 3bc00eda: e44e sd s3,8(sp) + 3bc00edc: 00e79323 sh a4,6(a5) + 3bc00ee0: 84aa mv s1,a0 + 3bc00ee2: 00009517 auipc a0,0x9 + 3bc00ee6: 6e650513 addi a0,a0,1766 # 3bc0a5c8 + 3bc00eea: c6eff0ef jal ra,3bc00358 + 3bc00eee: 545c lw a5,44(s0) + 3bc00ef0: 00009517 auipc a0,0x9 + 3bc00ef4: 6f050513 addi a0,a0,1776 # 3bc0a5e0 + 3bc00ef8: 10078763 beqz a5,3bc01006 + 3bc00efc: 800006b7 lui a3,0x80000 + 3bc00f00: 00f6863b addw a2,a3,a5 + 3bc00f04: 08000737 lui a4,0x8000 + 3bc00f08: 00e66b63 bltu a2,a4,3bc00f1e + 3bc00f0c: 85be mv a1,a5 + 3bc00f0e: 00009517 auipc a0,0x9 + 3bc00f12: 6ea50513 addi a0,a0,1770 # 3bc0a5f8 + 3bc00f16: c42ff0ef jal ra,3bc00358 + 3bc00f1a: ea0ff0ef jal ra,3bc005ba + 3bc00f1e: 540c lw a1,40(s0) + 3bc00f20: 9fad addw a5,a5,a1 + 3bc00f22: 9fb5 addw a5,a5,a3 + 3bc00f24: 00e7e763 bltu a5,a4,3bc00f32 + 3bc00f28: 00009517 auipc a0,0x9 + 3bc00f2c: 70050513 addi a0,a0,1792 # 3bc0a628 + 3bc00f30: b7dd j 3bc00f16 + 3bc00f32: c87ff097 auipc ra,0xc87ff + 3bc00f36: 0ee080e7 jalr 238(ra) # 4400020 + 3bc00f3a: 67b5 lui a5,0xd + 3bc00f3c: 0005071b sext.w a4,a0 + 3bc00f40: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00f44: 504c lw a1,36(s0) + 3bc00f46: 02846603 lwu a2,40(s0) + 3bc00f4a: 02c46503 lwu a0,44(s0) + 3bc00f4e: 86a6 mv a3,s1 + 3bc00f50: 04f71263 bne a4,a5,3bc00f94 + 3bc00f54: cdbff0ef jal ra,3bc00c2e + 3bc00f58: 84aa mv s1,a0 + 3bc00f5a: 02054563 bltz a0,3bc00f84 + 3bc00f5e: 540c lw a1,40(s0) + 3bc00f60: 02c46503 lwu a0,44(s0) + 3bc00f64: c87ff097 auipc ra,0xc87ff + 3bc00f68: 13c080e7 jalr 316(ra) # 44000a0 + 3bc00f6c: 5010 lw a2,32(s0) + 3bc00f6e: 0005059b sext.w a1,a0 + 3bc00f72: 02b60663 beq a2,a1,3bc00f9e + 3bc00f76: 00009517 auipc a0,0x9 + 3bc00f7a: 6e250513 addi a0,a0,1762 # 3bc0a658 + 3bc00f7e: bdaff0ef jal ra,3bc00358 + 3bc00f82: 54fd li s1,-1 + 3bc00f84: 70a2 ld ra,40(sp) + 3bc00f86: 7402 ld s0,32(sp) + 3bc00f88: 6942 ld s2,16(sp) + 3bc00f8a: 69a2 ld s3,8(sp) + 3bc00f8c: 8526 mv a0,s1 + 3bc00f8e: 64e2 ld s1,24(sp) + 3bc00f90: 6145 addi sp,sp,48 + 3bc00f92: 8082 ret + 3bc00f94: c87ff097 auipc ra,0xc87ff + 3bc00f98: 0cc080e7 jalr 204(ra) # 4400060 + 3bc00f9c: bf75 j 3bc00f58 + 3bc00f9e: 02846583 lwu a1,40(s0) + 3bc00fa2: 02c46503 lwu a0,44(s0) + 3bc00fa6: 3c0026b7 lui a3,0x3c002 + 3bc00faa: 4601 li a2,0 + 3bc00fac: 9f7ff0ef jal ra,3bc009a2 + 3bc00fb0: 84aa mv s1,a0 + 3bc00fb2: 00055a63 bgez a0,3bc00fc6 + 3bc00fb6: 85aa mv a1,a0 + 3bc00fb8: 00009517 auipc a0,0x9 + 3bc00fbc: 6c850513 addi a0,a0,1736 # 3bc0a680 + 3bc00fc0: b98ff0ef jal ra,3bc00358 + 3bc00fc4: b7c1 j 3bc00f84 + 3bc00fc6: 02846583 lwu a1,40(s0) + 3bc00fca: 02c46503 lwu a0,44(s0) + 3bc00fce: 0e0009b7 lui s3,0xe000 + 3bc00fd2: 984ff0ef jal ra,3bc00156 + 3bc00fd6: 07c9a483 lw s1,124(s3) # e00007c + 3bc00fda: 95bff0ef jal ra,3bc00934 + 3bc00fde: c37ff0ef jal ra,3bc00c14 + 3bc00fe2: 00093783 ld a5,0(s2) + 3bc00fe6: 2481 sext.w s1,s1 + 3bc00fe8: 00a79323 sh a0,6(a5) + 3bc00fec: 0abc17b7 lui a5,0xabc1 + 3bc00ff0: def78793 addi a5,a5,-529 # abc0def + 3bc00ff4: 00f49d63 bne s1,a5,3bc0100e + 3bc00ff8: 545c lw a5,44(s0) + 3bc00ffa: 06f9ae23 sw a5,124(s3) + 3bc00ffe: 00009517 auipc a0,0x9 + 3bc01002: 6a250513 addi a0,a0,1698 # 3bc0a6a0 + 3bc01006: b52ff0ef jal ra,3bc00358 + 3bc0100a: 4481 li s1,0 + 3bc0100c: bfa5 j 3bc00f84 + 3bc0100e: 02c46503 lwu a0,44(s0) + 3bc01012: ddaff0ef jal ra,3bc005ec + 3bc01016: b7e5 j 3bc00ffe + +000000003bc01018 : + 3bc01018: 1101 addi sp,sp,-32 + 3bc0101a: e822 sd s0,16(sp) + 3bc0101c: 0000d417 auipc s0,0xd + 3bc01020: be440413 addi s0,s0,-1052 # 3bc0dc00 <__BSS_START__> + 3bc01024: e04a sd s2,0(sp) + 3bc01026: 5c14 lw a3,56(s0) + 3bc01028: 5c50 lw a2,60(s0) + 3bc0102a: 892e mv s2,a1 + 3bc0102c: 584c lw a1,52(s0) + 3bc0102e: e426 sd s1,8(sp) + 3bc01030: 84aa mv s1,a0 + 3bc01032: 00009517 auipc a0,0x9 + 3bc01036: 67650513 addi a0,a0,1654 # 3bc0a6a8 + 3bc0103a: ec06 sd ra,24(sp) + 3bc0103c: b1cff0ef jal ra,3bc00358 + 3bc01040: 5c5c lw a5,60(s0) + 3bc01042: eb89 bnez a5,3bc01054 + 3bc01044: 00009517 auipc a0,0x9 + 3bc01048: 67c50513 addi a0,a0,1660 # 3bc0a6c0 + 3bc0104c: b0cff0ef jal ra,3bc00358 + 3bc01050: 4481 li s1,0 + 3bc01052: a069 j 3bc010dc + 3bc01054: 800006b7 lui a3,0x80000 + 3bc01058: 00f6863b addw a2,a3,a5 + 3bc0105c: 08000737 lui a4,0x8000 + 3bc01060: 00e66b63 bltu a2,a4,3bc01076 + 3bc01064: 85be mv a1,a5 + 3bc01066: 00009517 auipc a0,0x9 + 3bc0106a: 66a50513 addi a0,a0,1642 # 3bc0a6d0 + 3bc0106e: aeaff0ef jal ra,3bc00358 + 3bc01072: d48ff0ef jal ra,3bc005ba + 3bc01076: 5c0c lw a1,56(s0) + 3bc01078: 9fad addw a5,a5,a1 + 3bc0107a: 9fb5 addw a5,a5,a3 + 3bc0107c: 00e7e763 bltu a5,a4,3bc0108a + 3bc01080: 00009517 auipc a0,0x9 + 3bc01084: 68050513 addi a0,a0,1664 # 3bc0a700 + 3bc01088: b7dd j 3bc0106e + 3bc0108a: c87ff097 auipc ra,0xc87ff + 3bc0108e: f96080e7 jalr -106(ra) # 4400020 + 3bc01092: 67b5 lui a5,0xd + 3bc01094: 0005071b sext.w a4,a0 + 3bc01098: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0109c: 584c lw a1,52(s0) + 3bc0109e: 03846603 lwu a2,56(s0) + 3bc010a2: 03c46503 lwu a0,60(s0) + 3bc010a6: 86a6 mv a3,s1 + 3bc010a8: 04f71163 bne a4,a5,3bc010ea + 3bc010ac: b83ff0ef jal ra,3bc00c2e + 3bc010b0: 84aa mv s1,a0 + 3bc010b2: 02054563 bltz a0,3bc010dc + 3bc010b6: 5c0c lw a1,56(s0) + 3bc010b8: 03c46503 lwu a0,60(s0) + 3bc010bc: c87ff097 auipc ra,0xc87ff + 3bc010c0: fe4080e7 jalr -28(ra) # 44000a0 + 3bc010c4: 5810 lw a2,48(s0) + 3bc010c6: 0005059b sext.w a1,a0 + 3bc010ca: 02b60563 beq a2,a1,3bc010f4 + 3bc010ce: 00009517 auipc a0,0x9 + 3bc010d2: 66250513 addi a0,a0,1634 # 3bc0a730 + 3bc010d6: a82ff0ef jal ra,3bc00358 + 3bc010da: 54fd li s1,-1 + 3bc010dc: 60e2 ld ra,24(sp) + 3bc010de: 6442 ld s0,16(sp) + 3bc010e0: 6902 ld s2,0(sp) + 3bc010e2: 8526 mv a0,s1 + 3bc010e4: 64a2 ld s1,8(sp) + 3bc010e6: 6105 addi sp,sp,32 + 3bc010e8: 8082 ret + 3bc010ea: c87ff097 auipc ra,0xc87ff + 3bc010ee: f76080e7 jalr -138(ra) # 4400060 + 3bc010f2: bf7d j 3bc010b0 + 3bc010f4: 03846583 lwu a1,56(s0) + 3bc010f8: 03c46503 lwu a0,60(s0) + 3bc010fc: 3c0026b7 lui a3,0x3c002 + 3bc01100: 4601 li a2,0 + 3bc01102: 8a1ff0ef jal ra,3bc009a2 + 3bc01106: 84aa mv s1,a0 + 3bc01108: 00055a63 bgez a0,3bc0111c + 3bc0110c: 85aa mv a1,a0 + 3bc0110e: 00009517 auipc a0,0x9 + 3bc01112: 64250513 addi a0,a0,1602 # 3bc0a750 + 3bc01116: a42ff0ef jal ra,3bc00358 + 3bc0111a: b7c9 j 3bc010dc + 3bc0111c: 03846583 lwu a1,56(s0) + 3bc01120: 03c46503 lwu a0,60(s0) + 3bc01124: 832ff0ef jal ra,3bc00156 + 3bc01128: 00009517 auipc a0,0x9 + 3bc0112c: 64850513 addi a0,a0,1608 # 3bc0a770 + 3bc01130: a28ff0ef jal ra,3bc00358 + 3bc01134: 03c46783 lwu a5,60(s0) + 3bc01138: 00f93023 sd a5,0(s2) + 3bc0113c: bf11 j 3bc01050 + +000000003bc0113e : + 3bc0113e: 715d addi sp,sp,-80 + 3bc01140: f44e sd s3,40(sp) + 3bc01142: 0000d997 auipc s3,0xd + 3bc01146: abe98993 addi s3,s3,-1346 # 3bc0dc00 <__BSS_START__> + 3bc0114a: e85a sd s6,16(sp) + 3bc0114c: 8b2e mv s6,a1 + 3bc0114e: 0449a583 lw a1,68(s3) + 3bc01152: ec56 sd s5,24(sp) + 3bc01154: 8aaa mv s5,a0 + 3bc01156: 00009517 auipc a0,0x9 + 3bc0115a: 62250513 addi a0,a0,1570 # 3bc0a778 + 3bc0115e: e486 sd ra,72(sp) + 3bc01160: e0a2 sd s0,64(sp) + 3bc01162: fc26 sd s1,56(sp) + 3bc01164: f84a sd s2,48(sp) + 3bc01166: f052 sd s4,32(sp) + 3bc01168: 9f0ff0ef jal ra,3bc00358 + 3bc0116c: c87ff097 auipc ra,0xc87ff + 3bc01170: eb4080e7 jalr -332(ra) # 4400020 + 3bc01174: 67b5 lui a5,0xd + 3bc01176: 2501 sext.w a0,a0 + 3bc01178: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0117c: 0449a583 lw a1,68(s3) + 3bc01180: 86d6 mv a3,s5 + 3bc01182: 20000613 li a2,512 + 3bc01186: 02f51663 bne a0,a5,3bc011b2 + 3bc0118a: 0000e517 auipc a0,0xe + 3bc0118e: a7650513 addi a0,a0,-1418 # 3bc0ec00 + 3bc01192: a9dff0ef jal ra,3bc00c2e + 3bc01196: 02055763 bgez a0,3bc011c4 + 3bc0119a: 59fd li s3,-1 + 3bc0119c: 60a6 ld ra,72(sp) + 3bc0119e: 6406 ld s0,64(sp) + 3bc011a0: 74e2 ld s1,56(sp) + 3bc011a2: 7942 ld s2,48(sp) + 3bc011a4: 7a02 ld s4,32(sp) + 3bc011a6: 6ae2 ld s5,24(sp) + 3bc011a8: 6b42 ld s6,16(sp) + 3bc011aa: 854e mv a0,s3 + 3bc011ac: 79a2 ld s3,40(sp) + 3bc011ae: 6161 addi sp,sp,80 + 3bc011b0: 8082 ret + 3bc011b2: 0000e517 auipc a0,0xe + 3bc011b6: a4e50513 addi a0,a0,-1458 # 3bc0ec00 + 3bc011ba: c87ff097 auipc ra,0xc87ff + 3bc011be: ea6080e7 jalr -346(ra) # 4400060 + 3bc011c2: bfd1 j 3bc01196 + 3bc011c4: 0000e417 auipc s0,0xe + 3bc011c8: a3c40413 addi s0,s0,-1476 # 3bc0ec00 + 3bc011cc: 4458 lw a4,12(s0) + 3bc011ce: 6814 ld a3,16(s0) + 3bc011d0: 4410 lw a2,8(s0) + 3bc011d2: 1ff7049b addiw s1,a4,511 + 3bc011d6: 404c lw a1,4(s0) + 3bc011d8: e004f493 andi s1,s1,-512 + 3bc011dc: 2481 sext.w s1,s1 + 3bc011de: 87a6 mv a5,s1 + 3bc011e0: 00009517 auipc a0,0x9 + 3bc011e4: 5a850513 addi a0,a0,1448 # 3bc0a788 + 3bc011e8: 970ff0ef jal ra,3bc00358 + 3bc011ec: 4058 lw a4,4(s0) + 3bc011ee: 345a37b7 lui a5,0x345a3 + 3bc011f2: 34278793 addi a5,a5,834 # 345a3342 + 3bc011f6: 06f70363 beq a4,a5,3bc0125c + 3bc011fa: 414d37b7 lui a5,0x414d3 + 3bc011fe: 34278793 addi a5,a5,834 # 414d3342 <__BL2_END__+0x58bfb32> + 3bc01202: 06f70963 beq a4,a5,3bc01274 + 3bc01206: 01043903 ld s2,16(s0) + 3bc0120a: 4a01 li s4,0 + 3bc0120c: c87ff097 auipc ra,0xc87ff + 3bc01210: e14080e7 jalr -492(ra) # 4400020 + 3bc01214: 67b5 lui a5,0xd + 3bc01216: 2501 sext.w a0,a0 + 3bc01218: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0121c: 0449a583 lw a1,68(s3) + 3bc01220: 86d6 mv a3,s5 + 3bc01222: 8626 mv a2,s1 + 3bc01224: 04f51a63 bne a0,a5,3bc01278 + 3bc01228: 854a mv a0,s2 + 3bc0122a: a05ff0ef jal ra,3bc00c2e + 3bc0122e: f60546e3 bltz a0,3bc0119a + 3bc01232: 444c lw a1,12(s0) + 3bc01234: 00c90993 addi s3,s2,12 + 3bc01238: 854e mv a0,s3 + 3bc0123a: 35d1 addiw a1,a1,-12 + 3bc0123c: c87ff097 auipc ra,0xc87ff + 3bc01240: e64080e7 jalr -412(ra) # 44000a0 + 3bc01244: 4410 lw a2,8(s0) + 3bc01246: 0005059b sext.w a1,a0 + 3bc0124a: 02b60d63 beq a2,a1,3bc01284 + 3bc0124e: 00009517 auipc a0,0x9 + 3bc01252: 56a50513 addi a0,a0,1386 # 3bc0a7b8 + 3bc01256: 902ff0ef jal ra,3bc00358 + 3bc0125a: b781 j 3bc0119a + 3bc0125c: 4a09 li s4,2 + 3bc0125e: 85d2 mv a1,s4 + 3bc01260: 00009517 auipc a0,0x9 + 3bc01264: 54850513 addi a0,a0,1352 # 3bc0a7a8 + 3bc01268: 00819937 lui s2,0x819 + 3bc0126c: 8ecff0ef jal ra,3bc00358 + 3bc01270: 0922 slli s2,s2,0x8 + 3bc01272: bf69 j 3bc0120c + 3bc01274: 4a05 li s4,1 + 3bc01276: b7e5 j 3bc0125e + 3bc01278: 854a mv a0,s2 + 3bc0127a: c87ff097 auipc ra,0xc87ff + 3bc0127e: de6080e7 jalr -538(ra) # 4400060 + 3bc01282: b775 j 3bc0122e + 3bc01284: 444c lw a1,12(s0) + 3bc01286: 854e mv a0,s3 + 3bc01288: 3c0026b7 lui a3,0x3c002 + 3bc0128c: 35d1 addiw a1,a1,-12 + 3bc0128e: 4651 li a2,20 + 3bc01290: 7c05b58b extu a1,a1,31,0 + 3bc01294: f0eff0ef jal ra,3bc009a2 + 3bc01298: 89aa mv s3,a0 + 3bc0129a: 00055a63 bgez a0,3bc012ae + 3bc0129e: 85aa mv a1,a0 + 3bc012a0: 00009517 auipc a0,0x9 + 3bc012a4: 54050513 addi a0,a0,1344 # 3bc0a7e0 + 3bc012a8: 8b0ff0ef jal ra,3bc00358 + 3bc012ac: bdc5 j 3bc0119c + 3bc012ae: 967ff0ef jal ra,3bc00c14 + 3bc012b2: 0000a997 auipc s3,0xa + 3bc012b6: 49e98993 addi s3,s3,1182 # 3bc0b750 + 3bc012ba: 0009b783 ld a5,0(s3) + 3bc012be: 00a79423 sh a0,8(a5) + 3bc012c2: bbeff0ef jal ra,3bc00680 + 3bc012c6: 94fff0ef jal ra,3bc00c14 + 3bc012ca: 0009b783 ld a5,0(s3) + 3bc012ce: 00a79523 sh a0,10(a5) + 3bc012d2: 040a0363 beqz s4,3bc01318 + 3bc012d6: 6804 ld s1,16(s0) + 3bc012d8: 010007b7 lui a5,0x1000 + 3bc012dc: 02000613 li a2,32 + 3bc012e0: 85ca mv a1,s2 + 3bc012e2: 8526 mv a0,s1 + 3bc012e4: e43e sd a5,8(sp) + 3bc012e6: f94ff0ef jal ra,3bc00a7a + 3bc012ea: 00c46683 lwu a3,12(s0) + 3bc012ee: 02090613 addi a2,s2,32 # 819020 <__BSS_SIZE__+0x813410> + 3bc012f2: 002c addi a1,sp,8 + 3bc012f4: 02048513 addi a0,s1,32 # ffffffffffff3020 <__BL2_END__+0xffffffffc43df810> + 3bc012f8: 8752 mv a4,s4 + 3bc012fa: 3d4000ef jal ra,3bc016ce + 3bc012fe: 6622 ld a2,8(sp) + 3bc01300: 85aa mv a1,a0 + 3bc01302: 0006049b sext.w s1,a2 + 3bc01306: 00055963 bgez a0,3bc01318 + 3bc0130a: 00009517 auipc a0,0x9 + 3bc0130e: 4f650513 addi a0,a0,1270 # 3bc0a800 + 3bc01312: 846ff0ef jal ra,3bc00358 + 3bc01316: b551 j 3bc0119a + 3bc01318: 6808 ld a0,16(s0) + 3bc0131a: 85a6 mv a1,s1 + 3bc0131c: e3bfe0ef jal ra,3bc00156 + 3bc01320: 8f5ff0ef jal ra,3bc00c14 + 3bc01324: 0009b783 ld a5,0(s3) + 3bc01328: 4981 li s3,0 + 3bc0132a: 00a79623 sh a0,12(a5) # 100000c <__BSS_SIZE__+0xffa3fc> + 3bc0132e: 00009517 auipc a0,0x9 + 3bc01332: 50250513 addi a0,a0,1282 # 3bc0a830 + 3bc01336: 822ff0ef jal ra,3bc00358 + 3bc0133a: 681c ld a5,16(s0) + 3bc0133c: 02078793 addi a5,a5,32 + 3bc01340: 00fb3023 sd a5,0(s6) + 3bc01344: bda1 j 3bc0119c + +000000003bc01346 : + 3bc01346: 7179 addi sp,sp,-48 + 3bc01348: ec26 sd s1,24(sp) + 3bc0134a: 74cd lui s1,0xffff3 + 3bc0134c: e84a sd s2,16(sp) + 3bc0134e: f406 sd ra,40(sp) + 3bc01350: f022 sd s0,32(sp) + 3bc01352: e002 sd zero,0(sp) + 3bc01354: e402 sd zero,8(sp) + 3bc01356: 1604849b addiw s1,s1,352 + 3bc0135a: cc2ff0ef jal ra,3bc0081c + 3bc0135e: 4915 li s2,5 + 3bc01360: 4401 li s0,0 + 3bc01362: c87ff097 auipc ra,0xc87ff + 3bc01366: d5e080e7 jalr -674(ra) # 44000c0 + 3bc0136a: 02a45563 bge s0,a0,3bc01394 + 3bc0136e: 8522 mv a0,s0 + 3bc01370: b43ff0ef jal ra,3bc00eb2 + 3bc01374: 00055463 bgez a0,3bc0137c + 3bc01378: 2405 addiw s0,s0,1 + 3bc0137a: b7e5 j 3bc01362 + 3bc0137c: 858a mv a1,sp + 3bc0137e: 8522 mv a0,s0 + 3bc01380: c99ff0ef jal ra,3bc01018 + 3bc01384: fe054ae3 bltz a0,3bc01378 + 3bc01388: 002c addi a1,sp,8 + 3bc0138a: 8522 mv a0,s0 + 3bc0138c: db3ff0ef jal ra,3bc0113e + 3bc01390: fe0544e3 bltz a0,3bc01378 + 3bc01394: c87ff097 auipc ra,0xc87ff + 3bc01398: d2c080e7 jalr -724(ra) # 44000c0 + 3bc0139c: 02a45b63 bge s0,a0,3bc013d2 + 3bc013a0: dadfe0ef jal ra,3bc0014c + 3bc013a4: f1ffe0ef jal ra,3bc002c2 + 3bc013a8: c8cff0ef jal ra,3bc00834 + 3bc013ac: 6582 ld a1,0(sp) + 3bc013ae: c5a5 beqz a1,3bc01416 + 3bc013b0: 00009517 auipc a0,0x9 + 3bc013b4: 4b850513 addi a0,a0,1208 # 3bc0a868 + 3bc013b8: fa1fe0ef jal ra,3bc00358 + 3bc013bc: 65a2 ld a1,8(sp) + 3bc013be: 6502 ld a0,0(sp) + 3bc013c0: e5bfe0ef jal ra,3bc0021a + 3bc013c4: 70a2 ld ra,40(sp) + 3bc013c6: 7402 ld s0,32(sp) + 3bc013c8: 64e2 ld s1,24(sp) + 3bc013ca: 6942 ld s2,16(sp) + 3bc013cc: 4501 li a0,0 + 3bc013ce: 6145 addi sp,sp,48 + 3bc013d0: 8082 ret + 3bc013d2: c87ff097 auipc ra,0xc87ff + 3bc013d6: c4e080e7 jalr -946(ra) # 4400020 + 3bc013da: 00a487bb addw a5,s1,a0 + 3bc013de: 85a2 mv a1,s0 + 3bc013e0: 02f96363 bltu s2,a5,3bc01406 + 3bc013e4: 4505 li a0,1 + 3bc013e6: 00f51533 sll a0,a0,a5 + 3bc013ea: 02957513 andi a0,a0,41 + 3bc013ee: cd01 beqz a0,3bc01406 + 3bc013f0: 00009517 auipc a0,0x9 + 3bc013f4: 18850513 addi a0,a0,392 # 3bc0a578 + 3bc013f8: f61fe0ef jal ra,3bc00358 + 3bc013fc: c87ff097 auipc ra,0xc87ff + 3bc01400: c84080e7 jalr -892(ra) # 4400080 + 3bc01404: bfb1 j 3bc01360 + 3bc01406: 00009517 auipc a0,0x9 + 3bc0140a: 44250513 addi a0,a0,1090 # 3bc0a848 + 3bc0140e: f4bfe0ef jal ra,3bc00358 + 3bc01412: 9a8ff0ef jal ra,3bc005ba + 3bc01416: 65a2 ld a1,8(sp) + 3bc01418: 00009517 auipc a0,0x9 + 3bc0141c: 47050513 addi a0,a0,1136 # 3bc0a888 + 3bc01420: f39fe0ef jal ra,3bc00358 + 3bc01424: 6522 ld a0,8(sp) + 3bc01426: e6dfe0ef jal ra,3bc00292 + 3bc0142a: bf69 j 3bc013c4 + +000000003bc0142c : + 3bc0142c: 1141 addi sp,sp,-16 + 3bc0142e: e406 sd ra,8(sp) + 3bc01430: b200f737 lui a4,0xb200f + 3bc01434: e022 sd s0,0(sp) + 3bc01436: 030007b7 lui a5,0x3000 + 3bc0143a: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc0143e: fd6ff0ef jal ra,3bc00c14 + 3bc01442: 0000a797 auipc a5,0xa + 3bc01446: 30e7b783 ld a5,782(a5) # 3bc0b750 + 3bc0144a: 00a79023 sh a0,0(a5) + 3bc0144e: 00009617 auipc a2,0x9 + 3bc01452: eb260613 addi a2,a2,-334 # 3bc0a300 + 3bc01456: 00009597 auipc a1,0x9 + 3bc0145a: eca58593 addi a1,a1,-310 # 3bc0a320 + 3bc0145e: 00009517 auipc a0,0x9 + 3bc01462: 44a50513 addi a0,a0,1098 # 3bc0a8a8 + 3bc01466: ef3fe0ef jal ra,3bc00358 + 3bc0146a: 0e000437 lui s0,0xe000 + 3bc0146e: 400c lw a1,0(s0) + 3bc01470: 00009517 auipc a0,0x9 + 3bc01474: 44850513 addi a0,a0,1096 # 3bc0a8b8 + 3bc01478: ee1fe0ef jal ra,3bc00358 + 3bc0147c: 3c0027b7 lui a5,0x3c002 + 3bc01480: 47cc lw a1,12(a5) + 3bc01482: 0e07a603 lw a2,224(a5) # 3c0020e0 <__BL2_END__+0x3ee8d0> + 3bc01486: 00009517 auipc a0,0x9 + 3bc0148a: 44a50513 addi a0,a0,1098 # 3bc0a8d0 + 3bc0148e: ecbfe0ef jal ra,3bc00358 + 3bc01492: 4c0c lw a1,24(s0) + 3bc01494: 00009517 auipc a0,0x9 + 3bc01498: 47450513 addi a0,a0,1140 # 3bc0a908 + 3bc0149c: 2581 sext.w a1,a1 + 3bc0149e: ebbfe0ef jal ra,3bc00358 + 3bc014a2: 994ff0ef jal ra,3bc00636 + 3bc014a6: b8cff0ef jal ra,3bc00832 + 3bc014aa: bceff0ef jal ra,3bc00878 + 3bc014ae: 93fff0ef jal ra,3bc00dec + 3bc014b2: e95ff0ef jal ra,3bc01346 + 3bc014b6: 00009517 auipc a0,0x9 + 3bc014ba: 46a50513 addi a0,a0,1130 # 3bc0a920 + 3bc014be: e9bfe0ef jal ra,3bc00358 + 3bc014c2: a001 j 3bc014c2 + +000000003bc014c4 : + 3bc014c4: 8082 ret + +000000003bc014c6 : + 3bc014c6: 00012797 auipc a5,0x12 + 3bc014ca: 23278793 addi a5,a5,562 # 3bc136f8 + 3bc014ce: 6388 ld a0,0(a5) + 3bc014d0: 00b50733 add a4,a0,a1 + 3bc014d4: e398 sd a4,0(a5) + 3bc014d6: 00012797 auipc a5,0x12 + 3bc014da: 22a7b783 ld a5,554(a5) # 3bc13700 + 3bc014de: 97ba add a5,a5,a4 + 3bc014e0: 02f76363 bltu a4,a5,3bc01506 + 3bc014e4: 1141 addi sp,sp,-16 + 3bc014e6: 862e mv a2,a1 + 3bc014e8: 00009517 auipc a0,0x9 + 3bc014ec: 45050513 addi a0,a0,1104 # 3bc0a938 + 3bc014f0: 00009597 auipc a1,0x9 + 3bc014f4: 5b058593 addi a1,a1,1456 # 3bc0aaa0 <__func__.0> + 3bc014f8: e406 sd ra,8(sp) + 3bc014fa: e5ffe0ef jal ra,3bc00358 + 3bc014fe: 60a2 ld ra,8(sp) + 3bc01500: 4501 li a0,0 + 3bc01502: 0141 addi sp,sp,16 + 3bc01504: 8082 ret + 3bc01506: 8082 ret + +000000003bc01508 : + 3bc01508: 711d addi sp,sp,-96 + 3bc0150a: 00000797 auipc a5,0x0 + 3bc0150e: fbc78793 addi a5,a5,-68 # 3bc014c6 + 3bc01512: f83e sd a5,48(sp) + 3bc01514: 00000797 auipc a5,0x0 + 3bc01518: fb078793 addi a5,a5,-80 # 3bc014c4 + 3bc0151c: ec86 sd ra,88(sp) + 3bc0151e: e8a2 sd s0,80(sp) + 3bc01520: e4a6 sd s1,72(sp) + 3bc01522: e0ca sd s2,64(sp) + 3bc01524: ec36 sd a3,24(sp) + 3bc01526: f402 sd zero,40(sp) + 3bc01528: fc3e sd a5,56(sp) + 3bc0152a: d202 sw zero,36(sp) + 3bc0152c: e19d bnez a1,3bc01552 + 3bc0152e: 00009597 auipc a1,0x9 + 3bc01532: 57a58593 addi a1,a1,1402 # 3bc0aaa8 <__func__.1> + 3bc01536: 00009517 auipc a0,0x9 + 3bc0153a: 42250513 addi a0,a0,1058 # 3bc0a958 + 3bc0153e: e1bfe0ef jal ra,3bc00358 + 3bc01542: 5429 li s0,-22 + 3bc01544: 60e6 ld ra,88(sp) + 3bc01546: 8522 mv a0,s0 + 3bc01548: 6446 ld s0,80(sp) + 3bc0154a: 64a6 ld s1,72(sp) + 3bc0154c: 6906 ld s2,64(sp) + 3bc0154e: 6125 addi sp,sp,96 + 3bc01550: 8082 ret + 3bc01552: 10300793 li a5,259 + 3bc01556: 07de slli a5,a5,0x17 + 3bc01558: 842a mv s0,a0 + 3bc0155a: 00012717 auipc a4,0x12 + 3bc0155e: 18f73f23 sd a5,414(a4) # 3bc136f8 + 3bc01562: 84ae mv s1,a1 + 3bc01564: 001007b7 lui a5,0x100 + 3bc01568: 85aa mv a1,a0 + 3bc0156a: 00009517 auipc a0,0x9 + 3bc0156e: 40e50513 addi a0,a0,1038 # 3bc0a978 + 3bc01572: 8932 mv s2,a2 + 3bc01574: 00012717 auipc a4,0x12 + 3bc01578: 18f73623 sd a5,396(a4) # 3bc13700 + 3bc0157c: dddfe0ef jal ra,3bc00358 + 3bc01580: 67e2 ld a5,24(sp) + 3bc01582: 4611 li a2,4 + 3bc01584: 00590593 addi a1,s2,5 + 3bc01588: 17ed addi a5,a5,-5 + 3bc0158a: 1008 addi a0,sp,32 + 3bc0158c: ec3e sd a5,24(sp) + 3bc0158e: cecff0ef jal ra,3bc00a7a + 3bc01592: 67e2 ld a5,24(sp) + 3bc01594: 02016583 lwu a1,32(sp) + 3bc01598: 00009517 auipc a0,0x9 + 3bc0159c: 3f850513 addi a0,a0,1016 # 3bc0a990 + 3bc015a0: 17e1 addi a5,a5,-8 + 3bc015a2: f42e sd a1,40(sp) + 3bc015a4: ec3e sd a5,24(sp) + 3bc015a6: db3fe0ef jal ra,3bc00358 + 3bc015aa: 181c addi a5,sp,48 + 3bc015ac: e03e sd a5,0(sp) + 3bc015ae: 8522 mv a0,s0 + 3bc015b0: 02410893 addi a7,sp,36 + 3bc015b4: 4805 li a6,1 + 3bc015b6: 4795 li a5,5 + 3bc015b8: 874a mv a4,s2 + 3bc015ba: 0834 addi a3,sp,24 + 3bc015bc: 00d90613 addi a2,s2,13 + 3bc015c0: 102c addi a1,sp,40 + 3bc015c2: 5f5040ef jal ra,3bc063b6 + 3bc015c6: 842a mv s0,a0 + 3bc015c8: c919 beqz a0,3bc015de + 3bc015ca: 5612 lw a2,36(sp) + 3bc015cc: 85aa mv a1,a0 + 3bc015ce: 00009517 auipc a0,0x9 + 3bc015d2: 3e250513 addi a0,a0,994 # 3bc0a9b0 + 3bc015d6: d83fe0ef jal ra,3bc00358 + 3bc015da: 5449 li s0,-14 + 3bc015dc: b7a5 j 3bc01544 + 3bc015de: 75a2 ld a1,40(sp) + 3bc015e0: 00009517 auipc a0,0x9 + 3bc015e4: 3f850513 addi a0,a0,1016 # 3bc0a9d8 + 3bc015e8: e08c sd a1,0(s1) + 3bc015ea: d6ffe0ef jal ra,3bc00358 + 3bc015ee: bf99 j 3bc01544 + +000000003bc015f0 : + 3bc015f0: 85aa mv a1,a0 + 3bc015f2: 4501 li a0,0 + 3bc015f4: bdc9 j 3bc014c6 + +000000003bc015f6 : + 3bc015f6: 02b50633 mul a2,a0,a1 + 3bc015fa: 1101 addi sp,sp,-32 + 3bc015fc: e822 sd s0,16(sp) + 3bc015fe: ec06 sd ra,24(sp) + 3bc01600: 8532 mv a0,a2 + 3bc01602: e432 sd a2,8(sp) + 3bc01604: fedff0ef jal ra,3bc015f0 + 3bc01608: 842a mv s0,a0 + 3bc0160a: c509 beqz a0,3bc01614 + 3bc0160c: 6622 ld a2,8(sp) + 3bc0160e: 4581 li a1,0 + 3bc01610: c10ff0ef jal ra,3bc00a20 + 3bc01614: 60e2 ld ra,24(sp) + 3bc01616: 8522 mv a0,s0 + 3bc01618: 6442 ld s0,16(sp) + 3bc0161a: 6105 addi sp,sp,32 + 3bc0161c: 8082 ret + +000000003bc0161e : + 3bc0161e: 8082 ret + +000000003bc01620 : + 3bc01620: 10300793 li a5,259 + 3bc01624: 715d addi sp,sp,-80 + 3bc01626: 07de slli a5,a5,0x17 + 3bc01628: e0a2 sd s0,64(sp) + 3bc0162a: f84a sd s2,48(sp) + 3bc0162c: 00012717 auipc a4,0x12 + 3bc01630: 0cf73623 sd a5,204(a4) # 3bc136f8 + 3bc01634: 842a mv s0,a0 + 3bc01636: 001007b7 lui a5,0x100 + 3bc0163a: 892e mv s2,a1 + 3bc0163c: 85aa mv a1,a0 + 3bc0163e: 00009517 auipc a0,0x9 + 3bc01642: 3b250513 addi a0,a0,946 # 3bc0a9f0 + 3bc01646: e486 sd ra,72(sp) + 3bc01648: e436 sd a3,8(sp) + 3bc0164a: 00012717 auipc a4,0x12 + 3bc0164e: 0af73b23 sd a5,182(a4) # 3bc13700 + 3bc01652: fc26 sd s1,56(sp) + 3bc01654: f44e sd s3,40(sp) + 3bc01656: 89b2 mv s3,a2 + 3bc01658: d01fe0ef jal ra,3bc00358 + 3bc0165c: 06400593 li a1,100 + 3bc01660: 0828 addi a0,sp,24 + 3bc01662: 38b050ef jal ra,3bc071ec + 3bc01666: 84aa mv s1,a0 + 3bc01668: 1b7050ef jal ra,3bc0701e + 3bc0166c: 2501 sext.w a0,a0 + 3bc0166e: c105 beqz a0,3bc0168e + 3bc01670: 85a6 mv a1,s1 + 3bc01672: 00009517 auipc a0,0x9 + 3bc01676: 39650513 addi a0,a0,918 # 3bc0aa08 + 3bc0167a: cdffe0ef jal ra,3bc00358 + 3bc0167e: 557d li a0,-1 + 3bc01680: 60a6 ld ra,72(sp) + 3bc01682: 6406 ld s0,64(sp) + 3bc01684: 74e2 ld s1,56(sp) + 3bc01686: 7942 ld s2,48(sp) + 3bc01688: 79a2 ld s3,40(sp) + 3bc0168a: 6161 addi sp,sp,80 + 3bc0168c: 8082 ret + 3bc0168e: 6562 ld a0,24(sp) + 3bc01690: 4781 li a5,0 + 3bc01692: 0038 addi a4,sp,8 + 3bc01694: 85a2 mv a1,s0 + 3bc01696: 86ce mv a3,s3 + 3bc01698: 864a mv a2,s2 + 3bc0169a: 383050ef jal ra,3bc0721c + 3bc0169e: 6622 ld a2,8(sp) + 3bc016a0: 00093583 ld a1,0(s2) + 3bc016a4: 86aa mv a3,a0 + 3bc016a6: 842a mv s0,a0 + 3bc016a8: 00009517 auipc a0,0x9 + 3bc016ac: 37850513 addi a0,a0,888 # 3bc0aa20 + 3bc016b0: ca9fe0ef jal ra,3bc00358 + 3bc016b4: 8526 mv a0,s1 + 3bc016b6: 169050ef jal ra,3bc0701e + 3bc016ba: 0005079b sext.w a5,a0 + 3bc016be: 4501 li a0,0 + 3bc016c0: d3e1 beqz a5,3bc01680 + 3bc016c2: 85a2 mv a1,s0 + 3bc016c4: 00009517 auipc a0,0x9 + 3bc016c8: 38450513 addi a0,a0,900 # 3bc0aa48 + 3bc016cc: b77d j 3bc0167a + +000000003bc016ce : + 3bc016ce: 7139 addi sp,sp,-64 + 3bc016d0: 87ba mv a5,a4 + 3bc016d2: ec4e sd s3,24(sp) + 3bc016d4: e852 sd s4,16(sp) + 3bc016d6: e456 sd s5,8(sp) + 3bc016d8: 89b2 mv s3,a2 + 3bc016da: 8a36 mv s4,a3 + 3bc016dc: 8aba mv s5,a4 + 3bc016de: 8736 mv a4,a3 + 3bc016e0: 86b2 mv a3,a2 + 3bc016e2: 6190 ld a2,0(a1) + 3bc016e4: f426 sd s1,40(sp) + 3bc016e6: f04a sd s2,32(sp) + 3bc016e8: 84ae mv s1,a1 + 3bc016ea: 892a mv s2,a0 + 3bc016ec: 85aa mv a1,a0 + 3bc016ee: 00009517 auipc a0,0x9 + 3bc016f2: 37a50513 addi a0,a0,890 # 3bc0aa68 + 3bc016f6: fc06 sd ra,56(sp) + 3bc016f8: f822 sd s0,48(sp) + 3bc016fa: c5ffe0ef jal ra,3bc00358 + 3bc016fe: 4785 li a5,1 + 3bc01700: 02fa8f63 beq s5,a5,3bc0173e + 3bc01704: 4789 li a5,2 + 3bc01706: 5429 li s0,-22 + 3bc01708: 00fa9963 bne s5,a5,3bc0171a + 3bc0170c: 86d2 mv a3,s4 + 3bc0170e: 864e mv a2,s3 + 3bc01710: 85a6 mv a1,s1 + 3bc01712: 854a mv a0,s2 + 3bc01714: f0dff0ef jal ra,3bc01620 + 3bc01718: 842a mv s0,a0 + 3bc0171a: 608c ld a1,0(s1) + 3bc0171c: 8622 mv a2,s0 + 3bc0171e: 00009517 auipc a0,0x9 + 3bc01722: 36a50513 addi a0,a0,874 # 3bc0aa88 + 3bc01726: c33fe0ef jal ra,3bc00358 + 3bc0172a: 70e2 ld ra,56(sp) + 3bc0172c: 8522 mv a0,s0 + 3bc0172e: 7442 ld s0,48(sp) + 3bc01730: 74a2 ld s1,40(sp) + 3bc01732: 7902 ld s2,32(sp) + 3bc01734: 69e2 ld s3,24(sp) + 3bc01736: 6a42 ld s4,16(sp) + 3bc01738: 6aa2 ld s5,8(sp) + 3bc0173a: 6121 addi sp,sp,64 + 3bc0173c: 8082 ret + 3bc0173e: 86d2 mv a3,s4 + 3bc01740: 864e mv a2,s3 + 3bc01742: 85a6 mv a1,s1 + 3bc01744: 854a mv a0,s2 + 3bc01746: dc3ff0ef jal ra,3bc01508 + 3bc0174a: b7f9 j 3bc01718 + +000000003bc0174c : + 3bc0174c: 4108 lw a0,0(a0) + 3bc0174e: 2501 sext.w a0,a0 + 3bc01750: 8082 ret + +000000003bc01752 : + 3bc01752: c188 sw a0,0(a1) + 3bc01754: 8082 ret + +000000003bc01756 : + 3bc01756: 8082 ret + +000000003bc01758 : + 3bc01758: 00012717 auipc a4,0x12 + 3bc0175c: 0b370713 addi a4,a4,179 # 3bc1380b + 3bc01760: 00074783 lbu a5,0(a4) + 3bc01764: eb89 bnez a5,3bc01776 + 3bc01766: 0000a517 auipc a0,0xa + 3bc0176a: 09253503 ld a0,146(a0) # 3bc0b7f8 + 3bc0176e: 2785 addiw a5,a5,1 + 3bc01770: 00f70023 sb a5,0(a4) + 3bc01774: 8082 ret + 3bc01776: 4685 li a3,1 + 3bc01778: 00d79763 bne a5,a3,3bc01786 + 3bc0177c: 0000a517 auipc a0,0xa + 3bc01780: 08453503 ld a0,132(a0) # 3bc0b800 + 3bc01784: b7ed j 3bc0176e + 3bc01786: 0000a517 auipc a0,0xa + 3bc0178a: 08253503 ld a0,130(a0) # 3bc0b808 + 3bc0178e: b7c5 j 3bc0176e + +000000003bc01790 : + 3bc01790: 8082 ret + +000000003bc01792 : + 3bc01792: 698c ld a1,16(a1) + 3bc01794: 00012517 auipc a0,0x12 + 3bc01798: f7453503 ld a0,-140(a0) # 3bc13708 + 3bc0179c: 1141 addi sp,sp,-16 + 3bc0179e: 461d li a2,7 + 3bc017a0: 0511 addi a0,a0,4 + 3bc017a2: e406 sd ra,8(sp) + 3bc017a4: ad6ff0ef jal ra,3bc00a7a + 3bc017a8: 60a2 ld ra,8(sp) + 3bc017aa: 0141 addi sp,sp,16 + 3bc017ac: 8082 ret + +000000003bc017ae : + 3bc017ae: 00009597 auipc a1,0x9 + 3bc017b2: 70a58593 addi a1,a1,1802 # 3bc0aeb8 <__func__.5> + 3bc017b6: 00009517 auipc a0,0x9 + 3bc017ba: 30250513 addi a0,a0,770 # 3bc0aab8 <__func__.1+0x10> + 3bc017be: b9bfe06f j 3bc00358 + +000000003bc017c2 : + 3bc017c2: 00012797 auipc a5,0x12 + 3bc017c6: 040781a3 sb zero,67(a5) # 3bc13805 + 3bc017ca: 4785 li a5,1 + 3bc017cc: 00012717 auipc a4,0x12 + 3bc017d0: 02f70fa3 sb a5,63(a4) # 3bc1380b + 3bc017d4: 00009597 auipc a1,0x9 + 3bc017d8: 6d458593 addi a1,a1,1748 # 3bc0aea8 <__func__.4> + 3bc017dc: 00012797 auipc a5,0x12 + 3bc017e0: 020785a3 sb zero,43(a5) # 3bc13807 + 3bc017e4: 00009517 auipc a0,0x9 + 3bc017e8: 2d450513 addi a0,a0,724 # 3bc0aab8 <__func__.1+0x10> + 3bc017ec: b6dfe06f j 3bc00358 + +000000003bc017f0 : + 3bc017f0: 1141 addi sp,sp,-16 + 3bc017f2: 00009597 auipc a1,0x9 + 3bc017f6: 6ae58593 addi a1,a1,1710 # 3bc0aea0 <__func__.1> + 3bc017fa: 00009517 auipc a0,0x9 + 3bc017fe: 2d650513 addi a0,a0,726 # 3bc0aad0 <__func__.1+0x28> + 3bc01802: e406 sd ra,8(sp) + 3bc01804: b55fe0ef jal ra,3bc00358 + 3bc01808: 60a2 ld ra,8(sp) + 3bc0180a: 0000a797 auipc a5,0xa + 3bc0180e: 0c07b323 sd zero,198(a5) # 3bc0b8d0 + 3bc01812: 0141 addi sp,sp,16 + 3bc01814: 8082 ret + +000000003bc01816 : + 3bc01816: 1141 addi sp,sp,-16 + 3bc01818: e022 sd s0,0(sp) + 3bc0181a: 00009597 auipc a1,0x9 + 3bc0181e: 67e58593 addi a1,a1,1662 # 3bc0ae98 <__func__.0> + 3bc01822: 842a mv s0,a0 + 3bc01824: 00009517 auipc a0,0x9 + 3bc01828: 2ac50513 addi a0,a0,684 # 3bc0aad0 <__func__.1+0x28> + 3bc0182c: e406 sd ra,8(sp) + 3bc0182e: b2bfe0ef jal ra,3bc00358 + 3bc01832: 0000a797 auipc a5,0xa + 3bc01836: 09e78793 addi a5,a5,158 # 3bc0b8d0 + 3bc0183a: 6398 ld a4,0(a5) + 3bc0183c: cf01 beqz a4,3bc01854 + 3bc0183e: 00009517 auipc a0,0x9 + 3bc01842: 2a250513 addi a0,a0,674 # 3bc0aae0 <__func__.1+0x38> + 3bc01846: b13fe0ef jal ra,3bc00358 + 3bc0184a: 60a2 ld ra,8(sp) + 3bc0184c: 6402 ld s0,0(sp) + 3bc0184e: 4501 li a0,0 + 3bc01850: 0141 addi sp,sp,16 + 3bc01852: 8082 ret + 3bc01854: e380 sd s0,0(a5) + 3bc01856: bfd5 j 3bc0184a + +000000003bc01858 : + 3bc01858: 1101 addi sp,sp,-32 + 3bc0185a: e822 sd s0,16(sp) + 3bc0185c: 842a mv s0,a0 + 3bc0185e: 852e mv a0,a1 + 3bc01860: e42e sd a1,8(sp) + 3bc01862: ec06 sd ra,24(sp) + 3bc01864: b04ff0ef jal ra,3bc00b68 + 3bc01868: 0506 slli a0,a0,0x1 + 3bc0186a: 0025071b addiw a4,a0,2 + 3bc0186e: 87a2 mv a5,s0 + 3bc01870: 1827d70b sbia a4,(a5),2,0 + 3bc01874: 470d li a4,3 + 3bc01876: 00e400a3 sb a4,1(s0) # e000001 + 3bc0187a: 06400713 li a4,100 + 3bc0187e: 65a2 ld a1,8(sp) + 3bc01880: 00a77463 bgeu a4,a0,3bc01888 + 3bc01884: 06400513 li a0,100 + 3bc01888: 4701 li a4,0 + 3bc0188a: 00171693 slli a3,a4,0x1 + 3bc0188e: 00a6e663 bltu a3,a0,3bc0189a + 3bc01892: 60e2 ld ra,24(sp) + 3bc01894: 6442 ld s0,16(sp) + 3bc01896: 6105 addi sp,sp,32 + 3bc01898: 8082 ret + 3bc0189a: 80e5c68b lrbu a3,a1,a4,0 + 3bc0189e: 0705 addi a4,a4,1 + 3bc018a0: 1827d68b sbia a3,(a5),2,0 + 3bc018a4: fe078fa3 sb zero,-1(a5) + 3bc018a8: b7cd j 3bc0188a + +000000003bc018aa : + 3bc018aa: 5d98 lw a4,56(a1) + 3bc018ac: fc600793 li a5,-58 + 3bc018b0: 22f70663 beq a4,a5,3bc01adc + 3bc018b4: 699c ld a5,16(a1) + 3bc018b6: 7179 addi sp,sp,-48 + 3bc018b8: e052 sd s4,0(sp) + 3bc018ba: f406 sd ra,40(sp) + 3bc018bc: f022 sd s0,32(sp) + 3bc018be: ec26 sd s1,24(sp) + 3bc018c0: e84a sd s2,16(sp) + 3bc018c2: e44e sd s3,8(sp) + 3bc018c4: 0037c403 lbu s0,3(a5) + 3bc018c8: 0047c703 lbu a4,4(a5) + 3bc018cc: 0017c483 lbu s1,1(a5) + 3bc018d0: 1402 slli s0,s0,0x20 + 3bc018d2: 0762 slli a4,a4,0x18 + 3bc018d4: 943a add s0,s0,a4 + 3bc018d6: 0077c703 lbu a4,7(a5) + 3bc018da: 0027c603 lbu a2,2(a5) + 3bc018de: 0084949b slliw s1,s1,0x8 + 3bc018e2: 943a add s0,s0,a4 + 3bc018e4: 0057c703 lbu a4,5(a5) + 3bc018e8: 9e25 addw a2,a2,s1 + 3bc018ea: 00012a17 auipc s4,0x12 + 3bc018ee: e3ea0a13 addi s4,s4,-450 # 3bc13728 + 3bc018f2: 0742 slli a4,a4,0x10 + 3bc018f4: 943a add s0,s0,a4 + 3bc018f6: 0067c703 lbu a4,6(a5) + 3bc018fa: 000a3583 ld a1,0(s4) + 3bc018fe: 84b2 mv s1,a2 + 3bc01900: 0722 slli a4,a4,0x8 + 3bc01902: 943a add s0,s0,a4 + 3bc01904: ee05 bnez a2,3bc0193c + 3bc01906: e81d bnez s0,3bc0193c + 3bc01908: 00012797 auipc a5,0x12 + 3bc0190c: e187b783 ld a5,-488(a5) # 3bc13720 + 3bc01910: 00012717 auipc a4,0x12 + 3bc01914: ed872703 lw a4,-296(a4) # 3bc137e8 + 3bc01918: 00012517 auipc a0,0x12 + 3bc0191c: e3053503 ld a0,-464(a0) # 3bc13748 + 3bc01920: cf98 sw a4,24(a5) + 3bc01922: 7118 ld a4,32(a0) + 3bc01924: 7402 ld s0,32(sp) + 3bc01926: 70a2 ld ra,40(sp) + 3bc01928: 64e2 ld s1,24(sp) + 3bc0192a: 6942 ld s2,16(sp) + 3bc0192c: 69a2 ld s3,8(sp) + 3bc0192e: 6a02 ld s4,0(sp) + 3bc01930: 7318 ld a4,32(a4) + 3bc01932: eb8c sd a1,16(a5) + 3bc01934: cfcc sw a1,28(a5) + 3bc01936: 85be mv a1,a5 + 3bc01938: 6145 addi sp,sp,48 + 3bc0193a: 8702 jr a4 + 3bc0193c: 0007c903 lbu s2,0(a5) + 3bc01940: 4501 li a0,0 + 3bc01942: 5d3020ef jal ra,3bc04714 + 3bc01946: 4789 li a5,2 + 3bc01948: 89aa mv s3,a0 + 3bc0194a: 0ef90763 beq s2,a5,3bc01a38 + 3bc0194e: 0327e363 bltu a5,s2,3bc01974 + 3bc01952: 0c091863 bnez s2,3bc01a22 + 3bc01956: 000a3583 ld a1,0(s4) + 3bc0195a: ff84861b addiw a2,s1,-8 + 3bc0195e: 00012517 auipc a0,0x12 + 3bc01962: df253503 ld a0,-526(a0) # 3bc13750 + 3bc01966: 7c06360b extu a2,a2,31,0 + 3bc0196a: 05a1 addi a1,a1,8 + 3bc0196c: 9522 add a0,a0,s0 + 3bc0196e: 90cff0ef jal ra,3bc00a7a + 3bc01972: a021 j 3bc0197a + 3bc01974: 478d li a5,3 + 3bc01976: 0ef90163 beq s2,a5,3bc01a58 + 3bc0197a: 0000a417 auipc s0,0xa + 3bc0197e: 02640413 addi s0,s0,38 # 3bc0b9a0 + 3bc01982: 6008 ld a0,0(s0) + 3bc01984: 4641 li a2,16 + 3bc01986: 4581 li a1,0 + 3bc01988: 898ff0ef jal ra,3bc00a20 + 3bc0198c: 601c ld a5,0(s0) + 3bc0198e: 00012617 auipc a2,0x12 + 3bc01992: e7660613 addi a2,a2,-394 # 3bc13804 + 3bc01996: 00064703 lbu a4,0(a2) + 3bc0199a: 0089951b slliw a0,s3,0x8 + 3bc0199e: 00012697 auipc a3,0x12 + 3bc019a2: e426a683 lw a3,-446(a3) # 3bc137e0 + 3bc019a6: 0089d99b srliw s3,s3,0x8 + 3bc019aa: 01356533 or a0,a0,s3 + 3bc019ae: 00012497 auipc s1,0x12 + 3bc019b2: d6a48493 addi s1,s1,-662 # 3bc13718 + 3bc019b6: 9006968b revw a3,a3 + 3bc019ba: 00a79023 sh a0,0(a5) + 3bc019be: 00a79123 sh a0,2(a5) + 3bc019c2: c794 sw a3,8(a5) + 3bc019c4: 6088 ld a0,0(s1) + 3bc019c6: 00012697 auipc a3,0x12 + 3bc019ca: e1e6a683 lw a3,-482(a3) # 3bc137e4 + 3bc019ce: 00e783a3 sb a4,7(a5) + 3bc019d2: 9006968b revw a3,a3 + 3bc019d6: 2705 addiw a4,a4,1 + 3bc019d8: 01278323 sb s2,6(a5) + 3bc019dc: 00079223 sh zero,4(a5) + 3bc019e0: c7d4 sw a3,12(a5) + 3bc019e2: 00e60023 sb a4,0(a2) + 3bc019e6: 4581 li a1,0 + 3bc019e8: 04000613 li a2,64 + 3bc019ec: 834ff0ef jal ra,3bc00a20 + 3bc019f0: 608c ld a1,0(s1) + 3bc019f2: 47c1 li a5,16 + 3bc019f4: 00012517 auipc a0,0x12 + 3bc019f8: d4c53503 ld a0,-692(a0) # 3bc13740 + 3bc019fc: cd9c sw a5,24(a1) + 3bc019fe: 601c ld a5,0(s0) + 3bc01a00: 7402 ld s0,32(sp) + 3bc01a02: 70a2 ld ra,40(sp) + 3bc01a04: e99c sd a5,16(a1) + 3bc01a06: cddc sw a5,28(a1) + 3bc01a08: 00000797 auipc a5,0x0 + 3bc01a0c: 15c78793 addi a5,a5,348 # 3bc01b64 + 3bc01a10: f59c sd a5,40(a1) + 3bc01a12: 711c ld a5,32(a0) + 3bc01a14: 64e2 ld s1,24(sp) + 3bc01a16: 6942 ld s2,16(sp) + 3bc01a18: 69a2 ld s3,8(sp) + 3bc01a1a: 6a02 ld s4,0(sp) + 3bc01a1c: 739c ld a5,32(a5) + 3bc01a1e: 6145 addi sp,sp,48 + 3bc01a20: 8782 jr a5 + 3bc01a22: 0e0007b7 lui a5,0xe000 + 3bc01a26: 0791 addi a5,a5,4 + 3bc01a28: f4f419e3 bne s0,a5,3bc0197a + 3bc01a2c: 000a3583 ld a1,0(s4) + 3bc01a30: 4611 li a2,4 + 3bc01a32: 8522 mv a0,s0 + 3bc01a34: 05a1 addi a1,a1,8 + 3bc01a36: bf25 j 3bc0196e + 3bc01a38: 00009517 auipc a0,0x9 + 3bc01a3c: 0b050513 addi a0,a0,176 # 3bc0aae8 <__func__.1+0x40> + 3bc01a40: 919fe0ef jal ra,3bc00358 + 3bc01a44: 00012797 auipc a5,0x12 + 3bc01a48: dc078023 sb zero,-576(a5) # 3bc13804 + 3bc01a4c: 4785 li a5,1 + 3bc01a4e: 00012717 auipc a4,0x12 + 3bc01a52: daf70c23 sb a5,-584(a4) # 3bc13806 + 3bc01a56: b715 j 3bc0197a + 3bc01a58: 000a3583 ld a1,0(s4) + 3bc01a5c: ff84861b addiw a2,s1,-8 + 3bc01a60: 4501 li a0,0 + 3bc01a62: 05a1 addi a1,a1,8 + 3bc01a64: 4b1020ef jal ra,3bc04714 + 3bc01a68: 842a mv s0,a0 + 3bc01a6a: 00009517 auipc a0,0x9 + 3bc01a6e: 09650513 addi a0,a0,150 # 3bc0ab00 <__func__.1+0x58> + 3bc01a72: 8e7fe0ef jal ra,3bc00358 + 3bc01a76: 67b1 lui a5,0xc + 3bc01a78: 2401 sext.w s0,s0 + 3bc01a7a: 28378793 addi a5,a5,643 # c283 <__BSS_SIZE__+0x6673> + 3bc01a7e: 02f41a63 bne s0,a5,3bc01ab2 + 3bc01a82: 00012797 auipc a5,0x12 + 3bc01a86: d8078123 sb zero,-638(a5) # 3bc13804 + 3bc01a8a: 00012797 auipc a5,0x12 + 3bc01a8e: d7e78793 addi a5,a5,-642 # 3bc13808 + 3bc01a92: 4705 li a4,1 + 3bc01a94: 00e78023 sb a4,0(a5) + 3bc01a98: 0e000737 lui a4,0xe000 + 3bc01a9c: 00072223 sw zero,4(a4) # e000004 + 3bc01aa0: 0007c583 lbu a1,0(a5) + 3bc01aa4: 00009517 auipc a0,0x9 + 3bc01aa8: 06450513 addi a0,a0,100 # 3bc0ab08 <__func__.1+0x60> + 3bc01aac: 8adfe0ef jal ra,3bc00358 + 3bc01ab0: b5e9 j 3bc0197a + 3bc01ab2: 00012797 auipc a5,0x12 + 3bc01ab6: d4078b23 sb zero,-682(a5) # 3bc13808 + 3bc01aba: 0e0007b7 lui a5,0xe000 + 3bc01abe: 0007a223 sw zero,4(a5) # e000004 + 3bc01ac2: 00009517 auipc a0,0x9 + 3bc01ac6: 05e50513 addi a0,a0,94 # 3bc0ab20 <__func__.1+0x78> + 3bc01aca: 88ffe0ef jal ra,3bc00358 + 3bc01ace: 00009517 auipc a0,0x9 + 3bc01ad2: 07250513 addi a0,a0,114 # 3bc0ab40 <__func__.1+0x98> + 3bc01ad6: 883fe0ef jal ra,3bc00358 + 3bc01ada: b545 j 3bc0197a + 3bc01adc: 8082 ret + +000000003bc01ade : + 3bc01ade: 7179 addi sp,sp,-48 + 3bc01ae0: f406 sd ra,40(sp) + 3bc01ae2: f022 sd s0,32(sp) + 3bc01ae4: ec26 sd s1,24(sp) + 3bc01ae6: e84a sd s2,16(sp) + 3bc01ae8: e44e sd s3,8(sp) + 3bc01aea: 4789 li a5,2 + 3bc01aec: 02f50263 beq a0,a5,3bc01b10 + 3bc01af0: 478d li a5,3 + 3bc01af2: 54fd li s1,-1 + 3bc01af4: 0000a417 auipc s0,0xa + 3bc01af8: d7440413 addi s0,s0,-652 # 3bc0b868 + 3bc01afc: 00f50e63 beq a0,a5,3bc01b18 + 3bc01b00: 70a2 ld ra,40(sp) + 3bc01b02: 7402 ld s0,32(sp) + 3bc01b04: 6942 ld s2,16(sp) + 3bc01b06: 69a2 ld s3,8(sp) + 3bc01b08: 8526 mv a0,s1 + 3bc01b0a: 64e2 ld s1,24(sp) + 3bc01b0c: 6145 addi sp,sp,48 + 3bc01b0e: 8082 ret + 3bc01b10: 0000a417 auipc s0,0xa + 3bc01b14: d0840413 addi s0,s0,-760 # 3bc0b818 + 3bc01b18: 892e mv s2,a1 + 3bc01b1a: 7884458b ldia a1,(s0),8,0 + 3bc01b1e: 4481 li s1,0 + 3bc01b20: d1e5 beqz a1,3bc01b00 + 3bc01b22: 0005c983 lbu s3,0(a1) + 3bc01b26: 00990533 add a0,s2,s1 + 3bc01b2a: 864e mv a2,s3 + 3bc01b2c: f4ffe0ef jal ra,3bc00a7a + 3bc01b30: 7884458b ldia a1,(s0),8,0 + 3bc01b34: 009984bb addw s1,s3,s1 + 3bc01b38: b7e5 j 3bc01b20 + +000000003bc01b3a : + 3bc01b3a: 5d98 lw a4,56(a1) + 3bc01b3c: 57ed li a5,-5 + 3bc01b3e: 02f71263 bne a4,a5,3bc01b62 + 3bc01b42: 1141 addi sp,sp,-16 + 3bc01b44: 00009517 auipc a0,0x9 + 3bc01b48: 00c50513 addi a0,a0,12 # 3bc0ab50 <__func__.1+0xa8> + 3bc01b4c: e406 sd ra,8(sp) + 3bc01b4e: 80bfe0ef jal ra,3bc00358 + 3bc01b52: 60a2 ld ra,8(sp) + 3bc01b54: 4785 li a5,1 + 3bc01b56: 00012717 auipc a4,0x12 + 3bc01b5a: caf709a3 sb a5,-845(a4) # 3bc13809 + 3bc01b5e: 0141 addi sp,sp,16 + 3bc01b60: 8082 ret + 3bc01b62: 8082 ret + +000000003bc01b64 : + 3bc01b64: 5d98 lw a4,56(a1) + 3bc01b66: fc600793 li a5,-58 + 3bc01b6a: 04f70463 beq a4,a5,3bc01bb2 + 3bc01b6e: 1141 addi sp,sp,-16 + 3bc01b70: e022 sd s0,0(sp) + 3bc01b72: 00012417 auipc s0,0x12 + 3bc01b76: bb640413 addi s0,s0,-1098 # 3bc13728 + 3bc01b7a: 6008 ld a0,0(s0) + 3bc01b7c: 4581 li a1,0 + 3bc01b7e: 4621 li a2,8 + 3bc01b80: e406 sd ra,8(sp) + 3bc01b82: e9ffe0ef jal ra,3bc00a20 + 3bc01b86: 00012597 auipc a1,0x12 + 3bc01b8a: b9a5b583 ld a1,-1126(a1) # 3bc13720 + 3bc01b8e: 00012797 auipc a5,0x12 + 3bc01b92: c5a7a783 lw a5,-934(a5) # 3bc137e8 + 3bc01b96: cd9c sw a5,24(a1) + 3bc01b98: 601c ld a5,0(s0) + 3bc01b9a: 00012517 auipc a0,0x12 + 3bc01b9e: bae53503 ld a0,-1106(a0) # 3bc13748 + 3bc01ba2: 6402 ld s0,0(sp) + 3bc01ba4: e99c sd a5,16(a1) + 3bc01ba6: cddc sw a5,28(a1) + 3bc01ba8: 711c ld a5,32(a0) + 3bc01baa: 60a2 ld ra,8(sp) + 3bc01bac: 739c ld a5,32(a5) + 3bc01bae: 0141 addi sp,sp,16 + 3bc01bb0: 8782 jr a5 + 3bc01bb2: 8082 ret + +000000003bc01bb4 : + 3bc01bb4: 7159 addi sp,sp,-112 + 3bc01bb6: e4ce sd s3,72(sp) + 3bc01bb8: fc56 sd s5,56(sp) + 3bc01bba: 00012997 auipc s3,0x12 + 3bc01bbe: b7698993 addi s3,s3,-1162 # 3bc13730 + 3bc01bc2: 00012a97 auipc s5,0x12 + 3bc01bc6: b76a8a93 addi s5,s5,-1162 # 3bc13738 + 3bc01bca: eca6 sd s1,88(sp) + 3bc01bcc: 000ab603 ld a2,0(s5) + 3bc01bd0: 84aa mv s1,a0 + 3bc01bd2: 0009b503 ld a0,0(s3) + 3bc01bd6: e0d2 sd s4,64(sp) + 3bc01bd8: f486 sd ra,104(sp) + 3bc01bda: f0a2 sd s0,96(sp) + 3bc01bdc: e8ca sd s2,80(sp) + 3bc01bde: f85a sd s6,48(sp) + 3bc01be0: f45e sd s7,40(sp) + 3bc01be2: f062 sd s8,32(sp) + 3bc01be4: ec66 sd s9,24(sp) + 3bc01be6: 0204a803 lw a6,32(s1) + 3bc01bea: 0015c703 lbu a4,1(a1) + 3bc01bee: 0005c683 lbu a3,0(a1) + 3bc01bf2: 0065da03 lhu s4,6(a1) + 3bc01bf6: 0025d783 lhu a5,2(a1) + 3bc01bfa: 00000597 auipc a1,0x0 + 3bc01bfe: f4058593 addi a1,a1,-192 # 3bc01b3a + 3bc01c02: f60c sd a1,40(a2) + 3bc01c04: ea08 sd a0,16(a2) + 3bc01c06: ce48 sw a0,28(a2) + 3bc01c08: 4589 li a1,2 + 3bc01c0a: 02b80763 beq a6,a1,3bc01c38 + 3bc01c0e: 458d li a1,3 + 3bc01c10: 4905 li s2,1 + 3bc01c12: 06b81063 bne a6,a1,3bc01c72 + 3bc01c16: 0000ab17 auipc s6,0xa + 3bc01c1a: bbab0b13 addi s6,s6,-1094 # 3bc0b7d0 + 3bc01c1e: 0000ab97 auipc s7,0xa + 3bc01c22: ba2b8b93 addi s7,s7,-1118 # 3bc0b7c0 + 3bc01c26: 0606f593 andi a1,a3,96 + 3bc01c2a: c185 beqz a1,3bc01c4a + 3bc01c2c: 02000693 li a3,32 + 3bc01c30: 36d58463 beq a1,a3,3bc01f98 + 3bc01c34: 4901 li s2,0 + 3bc01c36: a835 j 3bc01c72 + 3bc01c38: 0000ab17 auipc s6,0xa + 3bc01c3c: b78b0b13 addi s6,s6,-1160 # 3bc0b7b0 + 3bc01c40: 0000ab97 auipc s7,0xa + 3bc01c44: b60b8b93 addi s7,s7,-1184 # 3bc0b7a0 + 3bc01c48: bff9 j 3bc01c26 + 3bc01c4a: 4621 li a2,8 + 3bc01c4c: 32c70d63 beq a4,a2,3bc01f86 + 3bc01c50: 4625 li a2,9 + 3bc01c52: 24c70a63 beq a4,a2,3bc01ea6 + 3bc01c56: 4619 li a2,6 + 3bc01c58: 597d li s2,-1 + 3bc01c5a: 00c71c63 bne a4,a2,3bc01c72 + 3bc01c5e: 8abd andi a3,a3,15 + 3bc01c60: 4705 li a4,1 + 3bc01c62: 02e69663 bne a3,a4,3bc01c8e + 3bc01c66: 00009517 auipc a0,0x9 + 3bc01c6a: f0250513 addi a0,a0,-254 # 3bc0ab68 <__func__.1+0xc0> + 3bc01c6e: eeafe0ef jal ra,3bc00358 + 3bc01c72: 70a6 ld ra,104(sp) + 3bc01c74: 7406 ld s0,96(sp) + 3bc01c76: 64e6 ld s1,88(sp) + 3bc01c78: 69a6 ld s3,72(sp) + 3bc01c7a: 6a06 ld s4,64(sp) + 3bc01c7c: 7ae2 ld s5,56(sp) + 3bc01c7e: 7b42 ld s6,48(sp) + 3bc01c80: 7ba2 ld s7,40(sp) + 3bc01c82: 7c02 ld s8,32(sp) + 3bc01c84: 6ce2 ld s9,24(sp) + 3bc01c86: 854a mv a0,s2 + 3bc01c88: 6946 ld s2,80(sp) + 3bc01c8a: 6165 addi sp,sp,112 + 3bc01c8c: 8082 ret + 3bc01c8e: f2dd bnez a3,3bc01c34 + 3bc01c90: 0087d71b srliw a4,a5,0x8 + 3bc01c94: 377d addiw a4,a4,-1 + 3bc01c96: 3c07360b extu a2,a4,15,0 + 3bc01c9a: 46b9 li a3,14 + 3bc01c9c: 0ac6e663 bltu a3,a2,3bc01d48 + 3bc01ca0: 00009697 auipc a3,0x9 + 3bc01ca4: f9c68693 addi a3,a3,-100 # 3bc0ac3c <__func__.1+0x194> + 3bc01ca8: 44c6c70b lrw a4,a3,a2,2 + 3bc01cac: 9736 add a4,a4,a3 + 3bc01cae: 8702 jr a4 + 3bc01cb0: 0000a417 auipc s0,0xa + 3bc01cb4: d5840413 addi s0,s0,-680 # 3bc0ba08 + 3bc01cb8: 00045583 lhu a1,0(s0) + 3bc01cbc: cd89 beqz a1,3bc01cd6 + 3bc01cbe: 00009517 auipc a0,0x9 + 3bc01cc2: eda50513 addi a0,a0,-294 # 3bc0ab98 <__func__.1+0xf0> + 3bc01cc6: e92fe0ef jal ra,3bc00358 + 3bc01cca: 00045783 lhu a5,0(s0) + 3bc01cce: 0000a717 auipc a4,0xa + 3bc01cd2: bef71923 sh a5,-1038(a4) # 3bc0b8c0 + 3bc01cd6: 0009b503 ld a0,0(s3) + 3bc01cda: 4649 li a2,18 + 3bc01cdc: 0000a597 auipc a1,0xa + 3bc01ce0: bdc58593 addi a1,a1,-1060 # 3bc0b8b8 + 3bc01ce4: df7fe0ef jal ra,3bc00ada + 3bc01ce8: 4449 li s0,18 + 3bc01cea: 4905 li s2,1 + 3bc01cec: 6c88 ld a0,24(s1) + 3bc01cee: 014427b3 slt a5,s0,s4 + 3bc01cf2: 40fa140b mveqz s0,s4,a5 + 3bc01cf6: 711c ld a5,32(a0) + 3bc01cf8: 000ab583 ld a1,0(s5) + 3bc01cfc: 739c ld a5,32(a5) + 3bc01cfe: cd80 sw s0,24(a1) + 3bc01d00: 9782 jalr a5 + 3bc01d02: f20909e3 beqz s2,3bc01c34 + 3bc01d06: c00017b7 lui a5,0xc0001 + 3bc01d0a: 03000737 lui a4,0x3000 + 3bc01d0e: 0795 addi a5,a5,5 + 3bc01d10: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc01d14: b705 j 3bc01c34 + 3bc01d16: 0ff7f793 andi a5,a5,255 + 3bc01d1a: 4709 li a4,2 + 3bc01d1c: 02e78863 beq a5,a4,3bc01d4c + 3bc01d20: 02f76163 bltu a4,a5,3bc01d42 + 3bc01d24: 00012597 auipc a1,0x12 + 3bc01d28: a8458593 addi a1,a1,-1404 # 3bc137a8 + 3bc01d2c: e789 bnez a5,3bc01d36 + 3bc01d2e: 0000a597 auipc a1,0xa + 3bc01d32: c5a58593 addi a1,a1,-934 # 3bc0b988 + 3bc01d36: 0005c403 lbu s0,0(a1) + 3bc01d3a: 8622 mv a2,s0 + 3bc01d3c: 0009b503 ld a0,0(s3) + 3bc01d40: a215 j 3bc01e64 + 3bc01d42: 470d li a4,3 + 3bc01d44: 00e78963 beq a5,a4,3bc01d56 + 3bc01d48: 597d li s2,-1 + 3bc01d4a: b725 j 3bc01c72 + 3bc01d4c: 00012597 auipc a1,0x12 + 3bc01d50: a0c58593 addi a1,a1,-1524 # 3bc13758 + 3bc01d54: b7cd j 3bc01d36 + 3bc01d56: ea1fe0ef jal ra,3bc00bf6 + 3bc01d5a: 00009597 auipc a1,0x9 + 3bc01d5e: ea658593 addi a1,a1,-346 # 3bc0ac00 <__func__.1+0x158> + 3bc01d62: e55d bnez a0,3bc01e10 + 3bc01d64: 00012b17 auipc s6,0x12 + 3bc01d68: aa6b0b13 addi s6,s6,-1370 # 3bc1380a + 3bc01d6c: 000b4903 lbu s2,0(s6) + 3bc01d70: 08091263 bnez s2,3bc01df4 + 3bc01d74: 4641 li a2,16 + 3bc01d76: 4581 li a1,0 + 3bc01d78: 00012517 auipc a0,0x12 + 3bc01d7c: a0050513 addi a0,a0,-1536 # 3bc13778 + 3bc01d80: 03050bb7 lui s7,0x3050 + 3bc01d84: c9dfe0ef jal ra,3bc00a20 + 3bc01d88: 4401 li s0,0 + 3bc01d8a: 104b8b93 addi s7,s7,260 # 3050104 <__BSS_SIZE__+0x304a4f4> + 3bc01d8e: 00009c97 auipc s9,0x9 + 3bc01d92: e1ac8c93 addi s9,s9,-486 # 3bc0aba8 <__func__.1+0x100> + 3bc01d96: 4c11 li s8,4 + 3bc01d98: 448bc60b lrw a2,s7,s0,2 + 3bc01d9c: 0004059b sext.w a1,s0 + 3bc01da0: 8566 mv a0,s9 + 3bc01da2: 2601 sext.w a2,a2 + 3bc01da4: 4481560b srw a2,sp,s0,2 + 3bc01da8: db0fe0ef jal ra,3bc00358 + 3bc01dac: 4481478b lrw a5,sp,s0,2 + 3bc01db0: c391 beqz a5,3bc01db4 + 3bc01db2: 4905 li s2,1 + 3bc01db4: 0405 addi s0,s0,1 + 3bc01db6: ff8411e3 bne s0,s8,3bc01d98 + 3bc01dba: 06090663 beqz s2,3bc01e26 + 3bc01dbe: 858a mv a1,sp + 3bc01dc0: 4641 li a2,16 + 3bc01dc2: 4501 li a0,0 + 3bc01dc4: 151020ef jal ra,3bc04714 + 3bc01dc8: 0005041b sext.w s0,a0 + 3bc01dcc: 85a2 mv a1,s0 + 3bc01dce: 00009517 auipc a0,0x9 + 3bc01dd2: df250513 addi a0,a0,-526 # 3bc0abc0 <__func__.1+0x118> + 3bc01dd6: d82fe0ef jal ra,3bc00358 + 3bc01dda: 4681 li a3,0 + 3bc01ddc: 4641 li a2,16 + 3bc01dde: 7c04358b extu a1,s0,31,0 + 3bc01de2: 00012517 auipc a0,0x12 + 3bc01de6: 99650513 addi a0,a0,-1642 # 3bc13778 + 3bc01dea: bbdfe0ef jal ra,3bc009a6 + 3bc01dee: 4785 li a5,1 + 3bc01df0: 00fb0023 sb a5,0(s6) + 3bc01df4: 00012597 auipc a1,0x12 + 3bc01df8: 98458593 addi a1,a1,-1660 # 3bc13778 + 3bc01dfc: 00009517 auipc a0,0x9 + 3bc01e00: df450513 addi a0,a0,-524 # 3bc0abf0 <__func__.1+0x148> + 3bc01e04: d54fe0ef jal ra,3bc00358 + 3bc01e08: 00012597 auipc a1,0x12 + 3bc01e0c: 97058593 addi a1,a1,-1680 # 3bc13778 + 3bc01e10: 00012517 auipc a0,0x12 + 3bc01e14: 97850513 addi a0,a0,-1672 # 3bc13788 + 3bc01e18: a41ff0ef jal ra,3bc01858 + 3bc01e1c: 00012597 auipc a1,0x12 + 3bc01e20: 96c58593 addi a1,a1,-1684 # 3bc13788 + 3bc01e24: bf09 j 3bc01d36 + 3bc01e26: 00012517 auipc a0,0x12 + 3bc01e2a: 9c652503 lw a0,-1594(a0) # 3bc137ec + 3bc01e2e: bb4fe0ef jal ra,3bc001e2 + 3bc01e32: 0005041b sext.w s0,a0 + 3bc01e36: 85a2 mv a1,s0 + 3bc01e38: 00009517 auipc a0,0x9 + 3bc01e3c: da050513 addi a0,a0,-608 # 3bc0abd8 <__func__.1+0x130> + 3bc01e40: bf59 j 3bc01dd6 + 3bc01e42: 0000a597 auipc a1,0xa + 3bc01e46: 99e58593 addi a1,a1,-1634 # 3bc0b7e0 + 3bc01e4a: 4615 li a2,5 + 3bc01e4c: 0025d403 lhu s0,2(a1) + 3bc01e50: c8bfe0ef jal ra,3bc00ada + 3bc01e54: 0009b503 ld a0,0(s3) + 3bc01e58: 461d li a2,7 + 3bc01e5a: 0000a597 auipc a1,0xa + 3bc01e5e: 99658593 addi a1,a1,-1642 # 3bc0b7f0 + 3bc01e62: 0515 addi a0,a0,5 + 3bc01e64: c77fe0ef jal ra,3bc00ada + 3bc01e68: dc0406e3 beqz s0,3bc01c34 + 3bc01e6c: a809 j 3bc01e7e + 3bc01e6e: 4629 li a2,10 + 3bc01e70: 0000a597 auipc a1,0xa + 3bc01e74: b2058593 addi a1,a1,-1248 # 3bc0b990 + 3bc01e78: c63fe0ef jal ra,3bc00ada + 3bc01e7c: 4429 li s0,10 + 3bc01e7e: 4901 li s2,0 + 3bc01e80: b5b5 j 3bc01cec + 3bc01e82: 00950593 addi a1,a0,9 + 3bc01e86: 8542 mv a0,a6 + 3bc01e88: c57ff0ef jal ra,3bc01ade + 3bc01e8c: 2525 addiw a0,a0,9 + 3bc01e8e: 3c05350b extu a0,a0,15,0 + 3bc01e92: 0000a597 auipc a1,0xa + 3bc01e96: 8c658593 addi a1,a1,-1850 # 3bc0b758 + 3bc01e9a: 0005041b sext.w s0,a0 + 3bc01e9e: 00a59123 sh a0,2(a1) + 3bc01ea2: 4625 li a2,9 + 3bc01ea4: bd61 j 3bc01d3c + 3bc01ea6: 4705 li a4,1 + 3bc01ea8: 597d li s2,-1 + 3bc01eaa: dcf764e3 bltu a4,a5,3bc01c72 + 3bc01eae: e385 bnez a5,3bc01ece + 3bc01eb0: 00012797 auipc a5,0x12 + 3bc01eb4: 94078ba3 sb zero,-1705(a5) # 3bc13807 + 3bc01eb8: 6080 ld s0,0(s1) + 3bc01eba: d6848de3 beq s1,s0,3bc01c34 + 3bc01ebe: 6c1c ld a5,24(s0) + 3bc01ec0: c789 beqz a5,3bc01eca + 3bc01ec2: 701c ld a5,32(s0) + 3bc01ec4: 8522 mv a0,s0 + 3bc01ec6: 679c ld a5,8(a5) + 3bc01ec8: 9782 jalr a5 + 3bc01eca: 6000 ld s0,0(s0) + 3bc01ecc: b7fd j 3bc01eba + 3bc01ece: 00012797 auipc a5,0x12 + 3bc01ed2: 93978793 addi a5,a5,-1735 # 3bc13807 + 3bc01ed6: 0007c683 lbu a3,0(a5) + 3bc01eda: d4e68de3 beq a3,a4,3bc01c34 + 3bc01ede: 00e78023 sb a4,0(a5) + 3bc01ee2: 6080 ld s0,0(s1) + 3bc01ee4: 00009917 auipc s2,0x9 + 3bc01ee8: d2c90913 addi s2,s2,-724 # 3bc0ac10 <__func__.1+0x168> + 3bc01eec: 00848d63 beq s1,s0,3bc01f06 + 3bc01ef0: 6c08 ld a0,24(s0) + 3bc01ef2: c141 beqz a0,3bc01f72 + 3bc01ef4: 85ca mv a1,s2 + 3bc01ef6: c57fe0ef jal ra,3bc00b4c + 3bc01efa: ed25 bnez a0,3bc01f72 + 3bc01efc: 701c ld a5,32(s0) + 3bc01efe: 85de mv a1,s7 + 3bc01f00: 8522 mv a0,s0 + 3bc01f02: 639c ld a5,0(a5) + 3bc01f04: 9782 jalr a5 + 3bc01f06: 6080 ld s0,0(s1) + 3bc01f08: 00009917 auipc s2,0x9 + 3bc01f0c: d1890913 addi s2,s2,-744 # 3bc0ac20 <__func__.1+0x178> + 3bc01f10: 00848d63 beq s1,s0,3bc01f2a + 3bc01f14: 6c08 ld a0,24(s0) + 3bc01f16: c125 beqz a0,3bc01f76 + 3bc01f18: 85ca mv a1,s2 + 3bc01f1a: c33fe0ef jal ra,3bc00b4c + 3bc01f1e: ed21 bnez a0,3bc01f76 + 3bc01f20: 701c ld a5,32(s0) + 3bc01f22: 85da mv a1,s6 + 3bc01f24: 8522 mv a0,s0 + 3bc01f26: 639c ld a5,0(a5) + 3bc01f28: 9782 jalr a5 + 3bc01f2a: 6080 ld s0,0(s1) + 3bc01f2c: 00009917 auipc s2,0x9 + 3bc01f30: d0490913 addi s2,s2,-764 # 3bc0ac30 <__func__.1+0x188> + 3bc01f34: 02848063 beq s1,s0,3bc01f54 + 3bc01f38: 6c08 ld a0,24(s0) + 3bc01f3a: c121 beqz a0,3bc01f7a + 3bc01f3c: 85ca mv a1,s2 + 3bc01f3e: c0ffe0ef jal ra,3bc00b4c + 3bc01f42: ed05 bnez a0,3bc01f7a + 3bc01f44: 701c ld a5,32(s0) + 3bc01f46: 0000a597 auipc a1,0xa + 3bc01f4a: 86258593 addi a1,a1,-1950 # 3bc0b7a8 + 3bc01f4e: 8522 mv a0,s0 + 3bc01f50: 639c ld a5,0(a5) + 3bc01f52: 9782 jalr a5 + 3bc01f54: 689c ld a5,16(s1) + 3bc01f56: 0000a717 auipc a4,0xa + 3bc01f5a: 80974703 lbu a4,-2039(a4) # 3bc0b75f + 3bc01f5e: 04077713 andi a4,a4,64 + 3bc01f62: 6b9c ld a5,16(a5) + 3bc01f64: cf09 beqz a4,3bc01f7e + 3bc01f66: 4585 li a1,1 + 3bc01f68: cc0786e3 beqz a5,3bc01c34 + 3bc01f6c: 8526 mv a0,s1 + 3bc01f6e: 9782 jalr a5 + 3bc01f70: b1d1 j 3bc01c34 + 3bc01f72: 6000 ld s0,0(s0) + 3bc01f74: bfa5 j 3bc01eec + 3bc01f76: 6000 ld s0,0(s0) + 3bc01f78: bf61 j 3bc01f10 + 3bc01f7a: 6000 ld s0,0(s0) + 3bc01f7c: bf65 j 3bc01f34 + 3bc01f7e: ca078be3 beqz a5,3bc01c34 + 3bc01f82: 4581 li a1,0 + 3bc01f84: b7e5 j 3bc01f6c + 3bc01f86: 4605 li a2,1 + 3bc01f88: 00012597 auipc a1,0x12 + 3bc01f8c: 87f58593 addi a1,a1,-1921 # 3bc13807 + 3bc01f90: b4bfe0ef jal ra,3bc00ada + 3bc01f94: 4405 li s0,1 + 3bc01f96: b5e5 j 3bc01e7e + 3bc01f98: 02100693 li a3,33 + 3bc01f9c: 04d70263 beq a4,a3,3bc01fe0 + 3bc01fa0: 02200693 li a3,34 + 3bc01fa4: 02d70263 beq a4,a3,3bc01fc8 + 3bc01fa8: 4901 li s2,0 + 3bc01faa: ccb714e3 bne a4,a1,3bc01c72 + 3bc01fae: fffff797 auipc a5,0xfffff + 3bc01fb2: 7e478793 addi a5,a5,2020 # 3bc01792 + 3bc01fb6: 000a041b sext.w s0,s4 + 3bc01fba: f61c sd a5,40(a2) + 3bc01fbc: 4785 li a5,1 + 3bc01fbe: 00012717 auipc a4,0x12 + 3bc01fc2: 84f703a3 sb a5,-1977(a4) # 3bc13805 + 3bc01fc6: b54d j 3bc01e68 + 3bc01fc8: 00011717 auipc a4,0x11 + 3bc01fcc: 74073703 ld a4,1856(a4) # 3bc13708 + 3bc01fd0: 00f71623 sh a5,12(a4) + 3bc01fd4: 4785 li a5,1 + 3bc01fd6: 00012717 auipc a4,0x12 + 3bc01fda: 82f707a3 sb a5,-2001(a4) # 3bc13805 + 3bc01fde: b999 j 3bc01c34 + 3bc01fe0: 00011597 auipc a1,0x11 + 3bc01fe4: 7285b583 ld a1,1832(a1) # 3bc13708 + 3bc01fe8: 8652 mv a2,s4 + 3bc01fea: 0591 addi a1,a1,4 + 3bc01fec: 000a041b sext.w s0,s4 + 3bc01ff0: aebfe0ef jal ra,3bc00ada + 3bc01ff4: b7e1 j 3bc01fbc + +000000003bc01ff6 : + 3bc01ff6: 8082 ret + +000000003bc01ff8 : + 3bc01ff8: 00011797 auipc a5,0x11 + 3bc01ffc: c8878793 addi a5,a5,-888 # 3bc12c80 + 3bc02000: 00009717 auipc a4,0x9 + 3bc02004: 7ef73423 sd a5,2024(a4) # 3bc0b7e8 + 3bc02008: 00011797 auipc a5,0x11 + 3bc0200c: ff878793 addi a5,a5,-8 # 3bc13000 + 3bc02010: 0000a717 auipc a4,0xa + 3bc02014: 80f73023 sd a5,-2048(a4) # 3bc0b810 + 3bc02018: 00011797 auipc a5,0x11 + 3bc0201c: e6878793 addi a5,a5,-408 # 3bc12e80 + 3bc02020: 00009717 auipc a4,0x9 + 3bc02024: 7cf73c23 sd a5,2008(a4) # 3bc0b7f8 + 3bc02028: 00011797 auipc a5,0x11 + 3bc0202c: ed878793 addi a5,a5,-296 # 3bc12f00 + 3bc02030: 00009717 auipc a4,0x9 + 3bc02034: 7cf73823 sd a5,2000(a4) # 3bc0b800 + 3bc02038: 00011797 auipc a5,0x11 + 3bc0203c: f4878793 addi a5,a5,-184 # 3bc12f80 + 3bc02040: 00009717 auipc a4,0x9 + 3bc02044: 7cf73423 sd a5,1992(a4) # 3bc0b808 + 3bc02048: 00011797 auipc a5,0x11 + 3bc0204c: 1b878793 addi a5,a5,440 # 3bc13200 + 3bc02050: 0000a717 auipc a4,0xa + 3bc02054: 8cf73823 sd a5,-1840(a4) # 3bc0b920 + 3bc02058: 00011797 auipc a5,0x11 + 3bc0205c: 62878793 addi a5,a5,1576 # 3bc13680 + 3bc02060: 0000a717 auipc a4,0xa + 3bc02064: 94f73023 sd a5,-1728(a4) # 3bc0b9a0 + 3bc02068: 00011797 auipc a5,0x11 + 3bc0206c: b9878793 addi a5,a5,-1128 # 3bc12c00 + 3bc02070: 00009717 auipc a4,0x9 + 3bc02074: 6ef73c23 sd a5,1784(a4) # 3bc0b768 + 3bc02078: 00011797 auipc a5,0x11 + 3bc0207c: 64878793 addi a5,a5,1608 # 3bc136c0 + 3bc02080: 0000a717 auipc a4,0xa + 3bc02084: 92f73423 sd a5,-1752(a4) # 3bc0b9a8 + 3bc02088: 00011797 auipc a5,0x11 + 3bc0208c: 1f878793 addi a5,a5,504 # 3bc13280 + 3bc02090: 0000a717 auipc a4,0xa + 3bc02094: 8ef73823 sd a5,-1808(a4) # 3bc0b980 + 3bc02098: 8082 ret + +000000003bc0209a : + 3bc0209a: 1141 addi sp,sp,-16 + 3bc0209c: 00009597 auipc a1,0x9 + 3bc020a0: 74c5b583 ld a1,1868(a1) # 3bc0b7e8 + 3bc020a4: 00009517 auipc a0,0x9 + 3bc020a8: bd450513 addi a0,a0,-1068 # 3bc0ac78 <__func__.1+0x1d0> + 3bc020ac: e406 sd ra,8(sp) + 3bc020ae: aaafe0ef jal ra,3bc00358 + 3bc020b2: 00009597 auipc a1,0x9 + 3bc020b6: 75e5b583 ld a1,1886(a1) # 3bc0b810 + 3bc020ba: 00009517 auipc a0,0x9 + 3bc020be: bd650513 addi a0,a0,-1066 # 3bc0ac90 <__func__.1+0x1e8> + 3bc020c2: a96fe0ef jal ra,3bc00358 + 3bc020c6: 00009597 auipc a1,0x9 + 3bc020ca: 7325b583 ld a1,1842(a1) # 3bc0b7f8 + 3bc020ce: 00009517 auipc a0,0x9 + 3bc020d2: bda50513 addi a0,a0,-1062 # 3bc0aca8 <__func__.1+0x200> + 3bc020d6: a82fe0ef jal ra,3bc00358 + 3bc020da: 00009597 auipc a1,0x9 + 3bc020de: 7265b583 ld a1,1830(a1) # 3bc0b800 + 3bc020e2: 00009517 auipc a0,0x9 + 3bc020e6: bde50513 addi a0,a0,-1058 # 3bc0acc0 <__func__.1+0x218> + 3bc020ea: a6efe0ef jal ra,3bc00358 + 3bc020ee: 00009597 auipc a1,0x9 + 3bc020f2: 71a5b583 ld a1,1818(a1) # 3bc0b808 + 3bc020f6: 00009517 auipc a0,0x9 + 3bc020fa: be250513 addi a0,a0,-1054 # 3bc0acd8 <__func__.1+0x230> + 3bc020fe: a5afe0ef jal ra,3bc00358 + 3bc02102: 0000a597 auipc a1,0xa + 3bc02106: 81e5b583 ld a1,-2018(a1) # 3bc0b920 + 3bc0210a: 00009517 auipc a0,0x9 + 3bc0210e: be650513 addi a0,a0,-1050 # 3bc0acf0 <__func__.1+0x248> + 3bc02112: a46fe0ef jal ra,3bc00358 + 3bc02116: 0000a597 auipc a1,0xa + 3bc0211a: 88a5b583 ld a1,-1910(a1) # 3bc0b9a0 + 3bc0211e: 00009517 auipc a0,0x9 + 3bc02122: bea50513 addi a0,a0,-1046 # 3bc0ad08 <__func__.1+0x260> + 3bc02126: a32fe0ef jal ra,3bc00358 + 3bc0212a: 00009597 auipc a1,0x9 + 3bc0212e: 63e5b583 ld a1,1598(a1) # 3bc0b768 + 3bc02132: 00009517 auipc a0,0x9 + 3bc02136: bee50513 addi a0,a0,-1042 # 3bc0ad20 <__func__.1+0x278> + 3bc0213a: a1efe0ef jal ra,3bc00358 + 3bc0213e: 0000a597 auipc a1,0xa + 3bc02142: 86a5b583 ld a1,-1942(a1) # 3bc0b9a8 + 3bc02146: 00009517 auipc a0,0x9 + 3bc0214a: bf250513 addi a0,a0,-1038 # 3bc0ad38 <__func__.1+0x290> + 3bc0214e: a0afe0ef jal ra,3bc00358 + 3bc02152: 60a2 ld ra,8(sp) + 3bc02154: 0000a597 auipc a1,0xa + 3bc02158: 82c5b583 ld a1,-2004(a1) # 3bc0b980 + 3bc0215c: 00009517 auipc a0,0x9 + 3bc02160: bf450513 addi a0,a0,-1036 # 3bc0ad50 <__func__.1+0x2a8> + 3bc02164: 0141 addi sp,sp,16 + 3bc02166: 9f2fe06f j 3bc00358 + +000000003bc0216a : + 3bc0216a: 4501 li a0,0 + 3bc0216c: 3020106f j 3bc0346e + +000000003bc02170 : + 3bc02170: 7179 addi sp,sp,-48 + 3bc02172: f022 sd s0,32(sp) + 3bc02174: 00009417 auipc s0,0x9 + 3bc02178: 75c40413 addi s0,s0,1884 # 3bc0b8d0 + 3bc0217c: 601c ld a5,0(s0) + 3bc0217e: 00009597 auipc a1,0x9 + 3bc02182: bea58593 addi a1,a1,-1046 # 3bc0ad68 <__func__.1+0x2c0> + 3bc02186: 00011517 auipc a0,0x11 + 3bc0218a: 62250513 addi a0,a0,1570 # 3bc137a8 + 3bc0218e: f406 sd ra,40(sp) + 3bc02190: ec26 sd s1,24(sp) + 3bc02192: e84a sd s2,16(sp) + 3bc02194: 6f84 ld s1,24(a5) + 3bc02196: e44e sd s3,8(sp) + 3bc02198: ec0ff0ef jal ra,3bc01858 + 3bc0219c: 00011517 auipc a0,0x11 + 3bc021a0: 5bc50513 addi a0,a0,1468 # 3bc13758 + 3bc021a4: 00009597 auipc a1,0x9 + 3bc021a8: bcc58593 addi a1,a1,-1076 # 3bc0ad70 <__func__.1+0x2c8> + 3bc021ac: eacff0ef jal ra,3bc01858 + 3bc021b0: 00009517 auipc a0,0x9 + 3bc021b4: 77053503 ld a0,1904(a0) # 3bc0b920 + 3bc021b8: 03f57713 andi a4,a0,63 + 3bc021bc: 87aa mv a5,a0 + 3bc021be: c709 beqz a4,3bc021c8 + 3bc021c0: 04000793 li a5,64 + 3bc021c4: 9f99 subw a5,a5,a4 + 3bc021c6: 97aa add a5,a5,a0 + 3bc021c8: 00009997 auipc s3,0x9 + 3bc021cc: 62098993 addi s3,s3,1568 # 3bc0b7e8 + 3bc021d0: 00011717 auipc a4,0x11 + 3bc021d4: 56f73023 sd a5,1376(a4) # 3bc13730 + 3bc021d8: 0009b783 ld a5,0(s3) + 3bc021dc: 03f7f693 andi a3,a5,63 + 3bc021e0: c689 beqz a3,3bc021ea + 3bc021e2: 04000713 li a4,64 + 3bc021e6: 9f15 subw a4,a4,a3 + 3bc021e8: 97ba add a5,a5,a4 + 3bc021ea: 00009917 auipc s2,0x9 + 3bc021ee: 62690913 addi s2,s2,1574 # 3bc0b810 + 3bc021f2: 00011717 auipc a4,0x11 + 3bc021f6: 50f73f23 sd a5,1310(a4) # 3bc13710 + 3bc021fa: 00093783 ld a5,0(s2) + 3bc021fe: 03f7f693 andi a3,a5,63 + 3bc02202: c689 beqz a3,3bc0220c + 3bc02204: 04000713 li a4,64 + 3bc02208: 9f15 subw a4,a4,a3 + 3bc0220a: 97ba add a5,a5,a4 + 3bc0220c: 08000613 li a2,128 + 3bc02210: 4581 li a1,0 + 3bc02212: 00011717 auipc a4,0x11 + 3bc02216: 50f73b23 sd a5,1302(a4) # 3bc13728 + 3bc0221a: 807fe0ef jal ra,3bc00a20 + 3bc0221e: 0009b503 ld a0,0(s3) + 3bc02222: 20000613 li a2,512 + 3bc02226: 4581 li a1,0 + 3bc02228: ff8fe0ef jal ra,3bc00a20 + 3bc0222c: 00093503 ld a0,0(s2) + 3bc02230: 20000613 li a2,512 + 3bc02234: 4581 li a1,0 + 3bc02236: feafe0ef jal ra,3bc00a20 + 3bc0223a: 709c ld a5,32(s1) + 3bc0223c: 8526 mv a0,s1 + 3bc0223e: 6b9c ld a5,16(a5) + 3bc02240: 9782 jalr a5 + 3bc02242: 00011797 auipc a5,0x11 + 3bc02246: 4ea7bb23 sd a0,1270(a5) # 3bc13738 + 3bc0224a: 601c ld a5,0(s0) + 3bc0224c: 53d8 lw a4,36(a5) + 3bc0224e: 4791 li a5,4 + 3bc02250: 02e7e263 bltu a5,a4,3bc02274 + 3bc02254: 00009797 auipc a5,0x9 + 3bc02258: 58c78793 addi a5,a5,1420 # 3bc0b7e0 + 3bc0225c: 4731 li a4,12 + 3bc0225e: 00e79123 sh a4,2(a5) + 3bc02262: 4705 li a4,1 + 3bc02264: 00e78223 sb a4,4(a5) + 3bc02268: 20100793 li a5,513 + 3bc0226c: 00009717 auipc a4,0x9 + 3bc02270: 64f71723 sh a5,1614(a4) # 3bc0b8ba + 3bc02274: 00009797 auipc a5,0x9 + 3bc02278: 4f47b783 ld a5,1268(a5) # 3bc0b768 + 3bc0227c: 00011717 auipc a4,0x11 + 3bc02280: 48f73623 sd a5,1164(a4) # 3bc13708 + 3bc02284: 000e1737 lui a4,0xe1 + 3bc02288: c3d8 sw a4,4(a5) + 3bc0228a: 4721 li a4,8 + 3bc0228c: 00079423 sh zero,8(a5) + 3bc02290: 00e78523 sb a4,10(a5) + 3bc02294: 70a2 ld ra,40(sp) + 3bc02296: 7402 ld s0,32(sp) + 3bc02298: 00079623 sh zero,12(a5) + 3bc0229c: 64e2 ld s1,24(sp) + 3bc0229e: 6942 ld s2,16(sp) + 3bc022a0: 69a2 ld s3,8(sp) + 3bc022a2: 4501 li a0,0 + 3bc022a4: 6145 addi sp,sp,48 + 3bc022a6: 8082 ret + +000000003bc022a8 : + 3bc022a8: 030007b7 lui a5,0x3000 + 3bc022ac: 43c8 lw a0,4(a5) + 3bc022ae: 2495350b extu a0,a0,9,9 + 3bc022b2: 8082 ret + +000000003bc022b4 : + 3bc022b4: 1141 addi sp,sp,-16 + 3bc022b6: e406 sd ra,8(sp) + 3bc022b8: 93ffe0ef jal ra,3bc00bf6 + 3bc022bc: 3e800793 li a5,1000 + 3bc022c0: e911 bnez a0,3bc022d4 + 3bc022c2: 0e0007b7 lui a5,0xe000 + 3bc022c6: 639c ld a5,0(a5) + 3bc022c8: 0417b78b extu a5,a5,1,1 + 3bc022cc: eb81 bnez a5,3bc022dc + 3bc022ce: 6789 lui a5,0x2 + 3bc022d0: 71078793 addi a5,a5,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc022d4: 60a2 ld ra,8(sp) + 3bc022d6: 853e mv a0,a5 + 3bc022d8: 0141 addi sp,sp,16 + 3bc022da: 8082 ret + 3bc022dc: 67e1 lui a5,0x18 + 3bc022de: 69f78793 addi a5,a5,1695 # 1869f <__BSS_SIZE__+0x12a8f> + 3bc022e2: bfcd j 3bc022d4 + +000000003bc022e4 : + 3bc022e4: 7175 addi sp,sp,-144 + 3bc022e6: f0d2 sd s4,96(sp) + 3bc022e8: 00011797 auipc a5,0x11 + 3bc022ec: 46a7b423 sd a0,1128(a5) # 3bc13750 + 3bc022f0: 00011797 auipc a5,0x11 + 3bc022f4: 4eb7a823 sw a1,1264(a5) # 3bc137e0 + 3bc022f8: 00011a17 auipc s4,0x11 + 3bc022fc: 4eca0a13 addi s4,s4,1260 # 3bc137e4 + 3bc02300: e506 sd ra,136(sp) + 3bc02302: e122 sd s0,128(sp) + 3bc02304: fca6 sd s1,120(sp) + 3bc02306: f8ca sd s2,112(sp) + 3bc02308: f4ce sd s3,104(sp) + 3bc0230a: ecd6 sd s5,88(sp) + 3bc0230c: e8da sd s6,80(sp) + 3bc0230e: e4de sd s7,72(sp) + 3bc02310: e0e2 sd s8,64(sp) + 3bc02312: fc66 sd s9,56(sp) + 3bc02314: f86a sd s10,48(sp) + 3bc02316: f46e sd s11,40(sp) + 3bc02318: 00ca2023 sw a2,0(s4) + 3bc0231c: 0e0007b7 lui a5,0xe000 + 3bc02320: 0007a223 sw zero,4(a5) # e000004 + 3bc02324: f85ff0ef jal ra,3bc022a8 + 3bc02328: e909 bnez a0,3bc0233a + 3bc0232a: 00009517 auipc a0,0x9 + 3bc0232e: a5650513 addi a0,a0,-1450 # 3bc0ad80 <__func__.1+0x2d8> + 3bc02332: 826fe0ef jal ra,3bc00358 + 3bc02336: 596d li s2,-5 + 3bc02338: a111 j 3bc0273c + 3bc0233a: f7bff0ef jal ra,3bc022b4 + 3bc0233e: 0005049b sext.w s1,a0 + 3bc02342: 85a6 mv a1,s1 + 3bc02344: 00009517 auipc a0,0x9 + 3bc02348: a5450513 addi a0,a0,-1452 # 3bc0ad98 <__func__.1+0x2f0> + 3bc0234c: 80cfe0ef jal ra,3bc00358 + 3bc02350: 67e1 lui a5,0x18 + 3bc02352: 69e78793 addi a5,a5,1694 # 1869e <__BSS_SIZE__+0x12a8e> + 3bc02356: 0297f463 bgeu a5,s1,3bc0237e + 3bc0235a: 4785 li a5,1 + 3bc0235c: 00009517 auipc a0,0x9 + 3bc02360: a5450513 addi a0,a0,-1452 # 3bc0adb0 <__func__.1+0x308> + 3bc02364: 00011717 auipc a4,0x11 + 3bc02368: 4af70223 sb a5,1188(a4) # 3bc13808 + 3bc0236c: fedfd0ef jal ra,3bc00358 + 3bc02370: c00037b7 lui a5,0xc0003 + 3bc02374: 03000737 lui a4,0x3000 + 3bc02378: 078d addi a5,a5,3 + 3bc0237a: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc0237e: 85a6 mv a1,s1 + 3bc02380: 00009517 auipc a0,0x9 + 3bc02384: a3850513 addi a0,a0,-1480 # 3bc0adb8 <__func__.1+0x310> + 3bc02388: fd1fd0ef jal ra,3bc00358 + 3bc0238c: 3e800793 li a5,1000 + 3bc02390: 029787bb mulw a5,a5,s1 + 3bc02394: e43e sd a5,8(sp) + 3bc02396: c00037b7 lui a5,0xc0003 + 3bc0239a: 10178793 addi a5,a5,257 # ffffffffc0003101 <__BL2_END__+0xffffffff843ef8f1> + 3bc0239e: e83e sd a5,16(sp) + 3bc023a0: c00017b7 lui a5,0xc0001 + 3bc023a4: 0791 addi a5,a5,4 + 3bc023a6: ec3e sd a5,24(sp) + 3bc023a8: 00011797 auipc a5,0x11 + 3bc023ac: 3607b423 sd zero,872(a5) # 3bc13710 + 3bc023b0: 00011797 auipc a5,0x11 + 3bc023b4: 3607bc23 sd zero,888(a5) # 3bc13728 + 3bc023b8: 00011797 auipc a5,0x11 + 3bc023bc: 3607bc23 sd zero,888(a5) # 3bc13730 + 3bc023c0: 00011797 auipc a5,0x11 + 3bc023c4: 3807b023 sd zero,896(a5) # 3bc13740 + 3bc023c8: 00011797 auipc a5,0x11 + 3bc023cc: 3807b023 sd zero,896(a5) # 3bc13748 + 3bc023d0: 00011797 auipc a5,0x11 + 3bc023d4: 3407b423 sd zero,840(a5) # 3bc13718 + 3bc023d8: 00011797 auipc a5,0x11 + 3bc023dc: 3407b423 sd zero,840(a5) # 3bc13720 + 3bc023e0: 00011797 auipc a5,0x11 + 3bc023e4: 3407bc23 sd zero,856(a5) # 3bc13738 + 3bc023e8: 00011797 auipc a5,0x11 + 3bc023ec: 40078fa3 sb zero,1055(a5) # 3bc13807 + 3bc023f0: 00011797 auipc a5,0x11 + 3bc023f4: 40078b23 sb zero,1046(a5) # 3bc13806 + 3bc023f8: 00011797 auipc a5,0x11 + 3bc023fc: 400786a3 sb zero,1037(a5) # 3bc13805 + 3bc02400: 00011797 auipc a5,0x11 + 3bc02404: 400785a3 sb zero,1035(a5) # 3bc1380b + 3bc02408: 00011797 auipc a5,0x11 + 3bc0240c: 3e07a023 sw zero,992(a5) # 3bc137e8 + 3bc02410: 00011797 auipc a5,0x11 + 3bc02414: 2e07bc23 sd zero,760(a5) # 3bc13708 + 3bc02418: 00011797 auipc a5,0x11 + 3bc0241c: 3e0788a3 sb zero,1009(a5) # 3bc13809 + 3bc02420: bd9ff0ef jal ra,3bc01ff8 + 3bc02424: c77ff0ef jal ra,3bc0209a + 3bc02428: 00009417 auipc s0,0x9 + 3bc0242c: 4a840413 addi s0,s0,1192 # 3bc0b8d0 + 3bc02430: 00009797 auipc a5,0x9 + 3bc02434: 5507b783 ld a5,1360(a5) # 3bc0b980 + 3bc02438: e41c sd a5,8(s0) + 3bc0243a: 40000793 li a5,1024 + 3bc0243e: c81c sw a5,16(s0) + 3bc02440: 00009517 auipc a0,0x9 + 3bc02444: 49850513 addi a0,a0,1176 # 3bc0b8d8 + 3bc02448: 00009797 auipc a5,0x9 + 3bc0244c: 5607b783 ld a5,1376(a5) # 3bc0b9a8 + 3bc02450: e43c sd a5,72(s0) + 3bc02452: 6cd000ef jal ra,3bc0331e + 3bc02456: 0005099b sext.w s3,a0 + 3bc0245a: 892a mv s2,a0 + 3bc0245c: 02099063 bnez s3,3bc0247c + 3bc02460: 00009517 auipc a0,0x9 + 3bc02464: 4c850513 addi a0,a0,1224 # 3bc0b928 + 3bc02468: 54f000ef jal ra,3bc031b6 + 3bc0246c: 02055763 bgez a0,3bc0249a + 3bc02470: 00009517 auipc a0,0x9 + 3bc02474: 97050513 addi a0,a0,-1680 # 3bc0ade0 <__func__.1+0x338> + 3bc02478: ee1fd0ef jal ra,3bc00358 + 3bc0247c: 85ce mv a1,s3 + 3bc0247e: 00009517 auipc a0,0x9 + 3bc02482: 9fa50513 addi a0,a0,-1542 # 3bc0ae78 <__func__.1+0x3d0> + 3bc02486: ed3fd0ef jal ra,3bc00358 + 3bc0248a: c00037b7 lui a5,0xc0003 + 3bc0248e: 03000737 lui a4,0x3000 + 3bc02492: 079d addi a5,a5,7 + 3bc02494: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02498: a455 j 3bc0273c + 3bc0249a: 6000 ld s0,0(s0) + 3bc0249c: e411 bnez s0,3bc024a8 + 3bc0249e: 00009517 auipc a0,0x9 + 3bc024a2: 96250513 addi a0,a0,-1694 # 3bc0ae00 <__func__.1+0x358> + 3bc024a6: bfc9 j 3bc02478 + 3bc024a8: cc9ff0ef jal ra,3bc02170 + 3bc024ac: 4501 li a0,0 + 3bc024ae: d11fd0ef jal ra,3bc001be + 3bc024b2: 6742 ld a4,16(sp) + 3bc024b4: 00011917 auipc s2,0x11 + 3bc024b8: 33890913 addi s2,s2,824 # 3bc137ec + 3bc024bc: 00a92023 sw a0,0(s2) + 3bc024c0: 6522 ld a0,8(sp) + 3bc024c2: 030007b7 lui a5,0x3000 + 3bc024c6: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc024ca: cb1fd0ef jal ra,3bc0017a + 3bc024ce: 681c ld a5,16(s0) + 3bc024d0: 4585 li a1,1 + 3bc024d2: 8522 mv a0,s0 + 3bc024d4: 779c ld a5,40(a5) + 3bc024d6: 00011997 auipc s3,0x11 + 3bc024da: 24a98993 addi s3,s3,586 # 3bc13720 + 3bc024de: 00011b17 auipc s6,0x11 + 3bc024e2: 32ab0b13 addi s6,s6,810 # 3bc13808 + 3bc024e6: 9782 jalr a5 + 3bc024e8: 00011a97 auipc s5,0x11 + 3bc024ec: 31da8a93 addi s5,s5,797 # 3bc13805 + 3bc024f0: 000ac783 lbu a5,0(s5) + 3bc024f4: 18078663 beqz a5,3bc02680 + 3bc024f8: 6762 ld a4,24(sp) + 3bc024fa: 030007b7 lui a5,0x3000 + 3bc024fe: 00043b83 ld s7,0(s0) + 3bc02502: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02506: 4785 li a5,1 + 3bc02508: 00011717 auipc a4,0x11 + 3bc0250c: 30f701a3 sb a5,771(a4) # 3bc1380b + 3bc02510: 08200c13 li s8,130 + 3bc02514: 00011c97 auipc s9,0x11 + 3bc02518: 234c8c93 addi s9,s9,564 # 3bc13748 + 3bc0251c: 00011d17 auipc s10,0x11 + 3bc02520: 1fcd0d13 addi s10,s10,508 # 3bc13718 + 3bc02524: 00011d97 auipc s11,0x11 + 3bc02528: 21cd8d93 addi s11,s11,540 # 3bc13740 + 3bc0252c: 19741b63 bne s0,s7,3bc026c2 + 3bc02530: 02044783 lbu a5,32(s0) + 3bc02534: 470d li a4,3 + 3bc02536: 1ee78063 beq a5,a4,3bc02716 + 3bc0253a: 4715 li a4,5 + 3bc0253c: 1ee78063 beq a5,a4,3bc0271c + 3bc02540: 4709 li a4,2 + 3bc02542: dee79ae3 bne a5,a4,3bc02336 + 3bc02546: 04000793 li a5,64 + 3bc0254a: 0009b503 ld a0,0(s3) + 3bc0254e: 04000613 li a2,64 + 3bc02552: 4581 li a1,0 + 3bc02554: 00011717 auipc a4,0x11 + 3bc02558: 28f72a23 sw a5,660(a4) # 3bc137e8 + 3bc0255c: cc4fe0ef jal ra,3bc00a20 + 3bc02560: 0009b783 ld a5,0(s3) + 3bc02564: 00011717 auipc a4,0x11 + 3bc02568: 1c473703 ld a4,452(a4) # 3bc13728 + 3bc0256c: 00011b97 auipc s7,0x11 + 3bc02570: 27cb8b93 addi s7,s7,636 # 3bc137e8 + 3bc02574: eb98 sd a4,16(a5) + 3bc02576: cfd8 sw a4,28(a5) + 3bc02578: fffff717 auipc a4,0xfffff + 3bc0257c: 33270713 addi a4,a4,818 # 3bc018aa + 3bc02580: f798 sd a4,40(a5) + 3bc02582: 00011c17 auipc s8,0x11 + 3bc02586: 196c0c13 addi s8,s8,406 # 3bc13718 + 3bc0258a: 000ba703 lw a4,0(s7) + 3bc0258e: 000c3503 ld a0,0(s8) + 3bc02592: 04000613 li a2,64 + 3bc02596: cf98 sw a4,24(a5) + 3bc02598: 4581 li a1,0 + 3bc0259a: c86fe0ef jal ra,3bc00a20 + 3bc0259e: 000c3783 ld a5,0(s8) + 3bc025a2: 00011717 auipc a4,0x11 + 3bc025a6: 16e73703 ld a4,366(a4) # 3bc13710 + 3bc025aa: 00011517 auipc a0,0x11 + 3bc025ae: 19e53503 ld a0,414(a0) # 3bc13748 + 3bc025b2: eb98 sd a4,16(a5) + 3bc025b4: cfd8 sw a4,28(a5) + 3bc025b6: fffff717 auipc a4,0xfffff + 3bc025ba: 5ae70713 addi a4,a4,1454 # 3bc01b64 + 3bc025be: f798 sd a4,40(a5) + 3bc025c0: 000ba703 lw a4,0(s7) + 3bc025c4: 0009b583 ld a1,0(s3) + 3bc025c8: 4b85 li s7,1 + 3bc025ca: cf98 sw a4,24(a5) + 3bc025cc: 711c ld a5,32(a0) + 3bc025ce: 739c ld a5,32(a5) + 3bc025d0: 9782 jalr a5 + 3bc025d2: 500c lw a1,32(s0) + 3bc025d4: 00009517 auipc a0,0x9 + 3bc025d8: 86450513 addi a0,a0,-1948 # 3bc0ae38 <__func__.1+0x390> + 3bc025dc: d7dfd0ef jal ra,3bc00358 + 3bc025e0: 4501 li a0,0 + 3bc025e2: bddfd0ef jal ra,3bc001be + 3bc025e6: 00a92023 sw a0,0(s2) + 3bc025ea: b81ff0ef jal ra,3bc0216a + 3bc025ee: 000ac783 lbu a5,0(s5) + 3bc025f2: ee078be3 beqz a5,3bc024e8 + 3bc025f6: 00011797 auipc a5,0x11 + 3bc025fa: 21078793 addi a5,a5,528 # 3bc13806 + 3bc025fe: 0007c783 lbu a5,0(a5) + 3bc02602: eb95 bnez a5,3bc02636 + 3bc02604: 000b4783 lbu a5,0(s6) + 3bc02608: 10079d63 bnez a5,3bc02722 + 3bc0260c: 00092503 lw a0,0(s2) + 3bc02610: baffd0ef jal ra,3bc001be + 3bc02614: 2501 sext.w a0,a0 + 3bc02616: fca4fae3 bgeu s1,a0,3bc025ea + 3bc0261a: 85a6 mv a1,s1 + 3bc0261c: 00009517 auipc a0,0x9 + 3bc02620: 83c50513 addi a0,a0,-1988 # 3bc0ae58 <__func__.1+0x3b0> + 3bc02624: d35fd0ef jal ra,3bc00358 + 3bc02628: c00037b7 lui a5,0xc0003 + 3bc0262c: 03000737 lui a4,0x3000 + 3bc02630: 0795 addi a5,a5,5 + 3bc02632: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02636: 00009517 auipc a0,0x9 + 3bc0263a: 83a50513 addi a0,a0,-1990 # 3bc0ae70 <__func__.1+0x3c8> + 3bc0263e: d1bfd0ef jal ra,3bc00358 + 3bc02642: c00037b7 lui a5,0xc0003 + 3bc02646: 03000737 lui a4,0x3000 + 3bc0264a: 0799 addi a5,a5,6 + 3bc0264c: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02650: 681c ld a5,16(s0) + 3bc02652: 4581 li a1,0 + 3bc02654: 8522 mv a0,s0 + 3bc02656: 779c ld a5,40(a5) + 3bc02658: 9782 jalr a5 + 3bc0265a: 00009517 auipc a0,0x9 + 3bc0265e: 2ce50513 addi a0,a0,718 # 3bc0b928 + 3bc02662: 380000ef jal ra,3bc029e2 + 3bc02666: 0e0007b7 lui a5,0xe000 + 3bc0266a: 0047a903 lw s2,4(a5) # e000004 + 3bc0266e: 4d4757b7 lui a5,0x4d475 + 3bc02672: e3178793 addi a5,a5,-463 # 4d474e31 <__BL2_END__+0x11861621> + 3bc02676: 40f90933 sub s2,s2,a5 + 3bc0267a: 00193913 seqz s2,s2 + 3bc0267e: a87d j 3bc0273c + 3bc02680: aebff0ef jal ra,3bc0216a + 3bc02684: 00092503 lw a0,0(s2) + 3bc02688: b37fd0ef jal ra,3bc001be + 3bc0268c: 2501 sext.w a0,a0 + 3bc0268e: 02a4f363 bgeu s1,a0,3bc026b4 + 3bc02692: 000b4783 lbu a5,0(s6) + 3bc02696: ef99 bnez a5,3bc026b4 + 3bc02698: 00008517 auipc a0,0x8 + 3bc0269c: 79050513 addi a0,a0,1936 # 3bc0ae28 <__func__.1+0x380> + 3bc026a0: cb9fd0ef jal ra,3bc00358 + 3bc026a4: c00037b7 lui a5,0xc0003 + 3bc026a8: 03000737 lui a4,0x3000 + 3bc026ac: 0791 addi a5,a5,4 + 3bc026ae: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc026b2: b151 j 3bc02336 + 3bc026b4: 00011797 auipc a5,0x11 + 3bc026b8: 1557c783 lbu a5,341(a5) # 3bc13809 + 3bc026bc: e20786e3 beqz a5,3bc024e8 + 3bc026c0: b1e5 j 3bc023a8 + 3bc026c2: 030bb703 ld a4,48(s7) + 3bc026c6: c305 beqz a4,3bc026e6 + 3bc026c8: 00274703 lbu a4,2(a4) + 3bc026cc: 08100793 li a5,129 + 3bc026d0: 00f71e63 bne a4,a5,3bc026ec + 3bc026d4: 020bb703 ld a4,32(s7) + 3bc026d8: 855e mv a0,s7 + 3bc026da: 6b18 ld a4,16(a4) + 3bc026dc: 9702 jalr a4 + 3bc026de: 00ad3023 sd a0,0(s10) + 3bc026e2: 017db023 sd s7,0(s11) + 3bc026e6: 000bbb83 ld s7,0(s7) + 3bc026ea: b589 j 3bc0252c + 3bc026ec: 4785 li a5,1 + 3bc026ee: 00f71c63 bne a4,a5,3bc02706 + 3bc026f2: 020bb703 ld a4,32(s7) + 3bc026f6: 855e mv a0,s7 + 3bc026f8: 6b18 ld a4,16(a4) + 3bc026fa: 9702 jalr a4 + 3bc026fc: 00a9b023 sd a0,0(s3) + 3bc02700: 017cb023 sd s7,0(s9) + 3bc02704: b7cd j 3bc026e6 + 3bc02706: ff8710e3 bne a4,s8,3bc026e6 + 3bc0270a: 020bb703 ld a4,32(s7) + 3bc0270e: 855e mv a0,s7 + 3bc02710: 6b18 ld a4,16(a4) + 3bc02712: 9702 jalr a4 + 3bc02714: bfc9 j 3bc026e6 + 3bc02716: 20000793 li a5,512 + 3bc0271a: bd05 j 3bc0254a + 3bc0271c: 40000793 li a5,1024 + 3bc02720: b52d j 3bc0254a + 3bc02722: ed7794e3 bne a5,s7,3bc025ea + 3bc02726: 000a2783 lw a5,0(s4) + 3bc0272a: ec0790e3 bnez a5,3bc025ea + 3bc0272e: 00008517 auipc a0,0x8 + 3bc02732: 73a50513 addi a0,a0,1850 # 3bc0ae68 <__func__.1+0x3c0> + 3bc02736: c23fd0ef jal ra,3bc00358 + 3bc0273a: 4905 li s2,1 + 3bc0273c: 60aa ld ra,136(sp) + 3bc0273e: 640a ld s0,128(sp) + 3bc02740: 74e6 ld s1,120(sp) + 3bc02742: 79a6 ld s3,104(sp) + 3bc02744: 7a06 ld s4,96(sp) + 3bc02746: 6ae6 ld s5,88(sp) + 3bc02748: 6b46 ld s6,80(sp) + 3bc0274a: 6ba6 ld s7,72(sp) + 3bc0274c: 6c06 ld s8,64(sp) + 3bc0274e: 7ce2 ld s9,56(sp) + 3bc02750: 7d42 ld s10,48(sp) + 3bc02752: 7da2 ld s11,40(sp) + 3bc02754: 854a mv a0,s2 + 3bc02756: 7946 ld s2,112(sp) + 3bc02758: 6149 addi sp,sp,144 + 3bc0275a: 8082 ret + +000000003bc0275c : + 3bc0275c: c909 beqz a0,3bc0276e + 3bc0275e: 07150783 lb a5,113(a0) + 3bc02762: 4501 li a0,0 + 3bc02764: 0007d663 bgez a5,3bc02770 + 3bc02768: fd300513 li a0,-45 + 3bc0276c: 8082 ret + 3bc0276e: 5535 li a0,-19 + 3bc02770: 8082 ret + +000000003bc02772 : + 3bc02772: 61b8 ld a4,64(a1) + 3bc02774: 7179 addi sp,sp,-48 + 3bc02776: f022 sd s0,32(sp) + 3bc02778: ec26 sd s1,24(sp) + 3bc0277a: 00011417 auipc s0,0x11 + 3bc0277e: 04643403 ld s0,70(s0) # 3bc137c0 + 3bc02782: f406 sd ra,40(sp) + 3bc02784: 04058793 addi a5,a1,64 + 3bc02788: 7c04 ld s1,56(s0) + 3bc0278a: 00f70a63 beq a4,a5,3bc0279e + 3bc0278e: 00008517 auipc a0,0x8 + 3bc02792: 73250513 addi a0,a0,1842 # 3bc0aec0 <__func__.5+0x8> + 3bc02796: e42e sd a1,8(sp) + 3bc02798: bc1fd0ef jal ra,3bc00358 + 3bc0279c: 65a2 ld a1,8(sp) + 3bc0279e: 8522 mv a0,s0 + 3bc027a0: 7402 ld s0,32(sp) + 3bc027a2: 68bc ld a5,80(s1) + 3bc027a4: 70a2 ld ra,40(sp) + 3bc027a6: 64e2 ld s1,24(sp) + 3bc027a8: 6145 addi sp,sp,48 + 3bc027aa: 8782 jr a5 + +000000003bc027ac : + 3bc027ac: 7179 addi sp,sp,-48 + 3bc027ae: ec26 sd s1,24(sp) + 3bc027b0: 00011497 auipc s1,0x11 + 3bc027b4: 00848493 addi s1,s1,8 # 3bc137b8 + 3bc027b8: 6088 ld a0,0(s1) + 3bc027ba: f022 sd s0,32(sp) + 3bc027bc: 6405 lui s0,0x1 + 3bc027be: 80440413 addi s0,s0,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc027c2: 9522 add a0,a0,s0 + 3bc027c4: e42e sd a1,8(sp) + 3bc027c6: f406 sd ra,40(sp) + 3bc027c8: f85fe0ef jal ra,3bc0174c + 3bc027cc: 65a2 ld a1,8(sp) + 3bc027ce: 609c ld a5,0(s1) + 3bc027d0: 2501 sext.w a0,a0 + 3bc027d2: ed89 bnez a1,3bc027ec + 3bc027d4: 008785b3 add a1,a5,s0 + 3bc027d8: 00256513 ori a0,a0,2 + 3bc027dc: f77fe0ef jal ra,3bc01752 + 3bc027e0: 70a2 ld ra,40(sp) + 3bc027e2: 7402 ld s0,32(sp) + 3bc027e4: 64e2 ld s1,24(sp) + 3bc027e6: 4501 li a0,0 + 3bc027e8: 6145 addi sp,sp,48 + 3bc027ea: 8082 ret + 3bc027ec: 008785b3 add a1,a5,s0 + 3bc027f0: 9975 andi a0,a0,-3 + 3bc027f2: b7ed j 3bc027dc + +000000003bc027f4 : + 3bc027f4: 00011517 auipc a0,0x11 + 3bc027f8: fcc53503 ld a0,-52(a0) # 3bc137c0 + 3bc027fc: 7d1c ld a5,56(a0) + 3bc027fe: 1141 addi sp,sp,-16 + 3bc02800: e022 sd s0,0(sp) + 3bc02802: 67bc ld a5,72(a5) + 3bc02804: e406 sd ra,8(sp) + 3bc02806: 05000593 li a1,80 + 3bc0280a: 9782 jalr a5 + 3bc0280c: 842a mv s0,a0 + 3bc0280e: c911 beqz a0,3bc02822 + 3bc02810: 05000613 li a2,80 + 3bc02814: 4581 li a1,0 + 3bc02816: a0afe0ef jal ra,3bc00a20 + 3bc0281a: 04040793 addi a5,s0,64 + 3bc0281e: e03c sd a5,64(s0) + 3bc02820: e43c sd a5,72(s0) + 3bc02822: 60a2 ld ra,8(sp) + 3bc02824: 8522 mv a0,s0 + 3bc02826: 6402 ld s0,0(sp) + 3bc02828: 0141 addi sp,sp,16 + 3bc0282a: 8082 ret + +000000003bc0282c : + 3bc0282c: cd51 beqz a0,3bc028c8 + 3bc0282e: 1141 addi sp,sp,-16 + 3bc02830: e022 sd s0,0(sp) + 3bc02832: e406 sd ra,8(sp) + 3bc02834: 842a mv s0,a0 + 3bc02836: 5529 li a0,-22 + 3bc02838: c5c1 beqz a1,3bc028c0 + 3bc0283a: 603c ld a5,64(s0) + 3bc0283c: e3d1 bnez a5,3bc028c0 + 3bc0283e: 6c18 ld a4,24(s0) + 3bc02840: 00009797 auipc a5,0x9 + 3bc02844: 93878793 addi a5,a5,-1736 # 3bc0b178 + 3bc02848: 06f70c63 beq a4,a5,3bc028c0 + 3bc0284c: 0015c703 lbu a4,1(a1) + 3bc02850: 4795 li a5,5 + 3bc02852: 06f71763 bne a4,a5,3bc028c0 + 3bc02856: 07144703 lbu a4,113(s0) + 3bc0285a: 0025c783 lbu a5,2(a1) + 3bc0285e: 06f71163 bne a4,a5,3bc028c0 + 3bc02862: 0045d783 lhu a5,4(a1) + 3bc02866: 02845703 lhu a4,40(s0) + 3bc0286a: 04f76b63 bltu a4,a5,3bc028c0 + 3bc0286e: 07244683 lbu a3,114(s0) + 3bc02872: 0035c703 lbu a4,3(a1) + 3bc02876: 00e68863 beq a3,a4,3bc02886 + 3bc0287a: 4609 li a2,2 + 3bc0287c: 00c68563 beq a3,a2,3bc02886 + 3bc02880: 468d li a3,3 + 3bc02882: 02d71f63 bne a4,a3,3bc028c0 + 3bc02886: fde00513 li a0,-34 + 3bc0288a: cb9d beqz a5,3bc028c0 + 3bc0288c: 7c18 ld a4,56(s0) + 3bc0288e: fc600513 li a0,-58 + 3bc02892: 7f14 ld a3,56(a4) + 3bc02894: c695 beqz a3,3bc028c0 + 3bc02896: 5318 lw a4,32(a4) + 3bc02898: c705 beqz a4,3bc028c0 + 3bc0289a: 02f41423 sh a5,40(s0) + 3bc0289e: f80c sd a1,48(s0) + 3bc028a0: e02c sd a1,64(s0) + 3bc028a2: 8522 mv a0,s0 + 3bc028a4: 06040823 sb zero,112(s0) + 3bc028a8: 04043c23 sd zero,88(s0) + 3bc028ac: 35e010ef jal ra,3bc03c0a + 3bc028b0: 4581 li a1,0 + 3bc028b2: 8522 mv a0,s0 + 3bc028b4: 396010ef jal ra,3bc03c4a + 3bc028b8: 8522 mv a0,s0 + 3bc028ba: 3f2010ef jal ra,3bc03cac + 3bc028be: 4501 li a0,0 + 3bc028c0: 60a2 ld ra,8(sp) + 3bc028c2: 6402 ld s0,0(sp) + 3bc028c4: 0141 addi sp,sp,16 + 3bc028c6: 8082 ret + 3bc028c8: 5529 li a0,-22 + 3bc028ca: 8082 ret + +000000003bc028cc : + 3bc028cc: 8082 ret + +000000003bc028ce : + 3bc028ce: 8082 ret + +000000003bc028d0 : + 3bc028d0: 00009517 auipc a0,0x9 + 3bc028d4: 8a850513 addi a0,a0,-1880 # 3bc0b178 + 3bc028d8: 8082 ret + +000000003bc028da : + 3bc028da: 6d1c ld a5,24(a0) + 3bc028dc: f8a5550b sdd a0,a0,(a0),0,4 + 3bc028e0: 29850613 addi a2,a0,664 + 3bc028e4: f8f7d78b sdd a5,a5,(a5),0,4 + 3bc028e8: 04052423 sw zero,72(a0) + 3bc028ec: 09850793 addi a5,a0,152 + 3bc028f0: fe07bc23 sd zero,-8(a5) + 3bc028f4: 02078423 sb zero,40(a5) + 3bc028f8: f8f7d78b sdd a5,a5,(a5),0,4 + 3bc028fc: 0007b823 sd zero,16(a5) + 3bc02900: 08078713 addi a4,a5,128 + 3bc02904: 00c71363 bne a4,a2,3bc0290a + 3bc02908: 8082 ret + 3bc0290a: 6514 ld a3,8(a0) + 3bc0290c: 03878793 addi a5,a5,56 + 3bc02910: e51c sd a5,8(a0) + 3bc02912: faa73c23 sd a0,-72(a4) + 3bc02916: fcd73023 sd a3,-64(a4) + 3bc0291a: e29c sd a5,0(a3) + 3bc0291c: 87ba mv a5,a4 + 3bc0291e: bfc9 j 3bc028f0 + +000000003bc02920 : + 3bc02920: 65b8 ld a4,72(a1) + 3bc02922: 61b4 ld a3,64(a1) + 3bc02924: 1101 addi sp,sp,-32 + 3bc02926: ec06 sd ra,24(sp) + 3bc02928: e822 sd s0,16(sp) + 3bc0292a: 07054403 lbu s0,112(a0) + 3bc0292e: e698 sd a4,8(a3) + 3bc02930: e314 sd a3,0(a4) + 3bc02932: 5d98 lw a4,56(a1) + 3bc02934: 04058793 addi a5,a1,64 + 3bc02938: e1bc sd a5,64(a1) + 3bc0293a: e5bc sd a5,72(a1) + 3bc0293c: fdc00793 li a5,-36 + 3bc02940: 00f71363 bne a4,a5,3bc02946 + 3bc02944: dd90 sw a2,56(a1) + 3bc02946: 4785 li a5,1 + 3bc02948: 06f50823 sb a5,112(a0) + 3bc0294c: 759c ld a5,40(a1) + 3bc0294e: e42a sd a0,8(sp) + 3bc02950: 9782 jalr a5 + 3bc02952: 6522 ld a0,8(sp) + 3bc02954: 06850823 sb s0,112(a0) + 3bc02958: 60e2 ld ra,24(sp) + 3bc0295a: 6442 ld s0,16(sp) + 3bc0295c: 6105 addi sp,sp,32 + 3bc0295e: 8082 ret + +000000003bc02960 : + 3bc02960: c539 beqz a0,3bc029ae + 3bc02962: 6d14 ld a3,24(a0) + 3bc02964: 00009797 auipc a5,0x9 + 3bc02968: 81478793 addi a5,a5,-2028 # 3bc0b178 + 3bc0296c: 5729 li a4,-22 + 3bc0296e: 04f68163 beq a3,a5,3bc029b0 + 3bc02972: 872a mv a4,a0 + 3bc02974: 6e97478b ldib a5,(a4),9,3 + 3bc02978: fc078793 addi a5,a5,-64 + 3bc0297c: 86be mv a3,a5 + 3bc0297e: 6e86c60b ldib a2,(a3),8,3 + 3bc02982: 02e69163 bne a3,a4,3bc029a4 + 3bc02986: 5729 li a4,-22 + 3bc02988: 02f59463 bne a1,a5,3bc029b0 + 3bc0298c: 1141 addi sp,sp,-16 + 3bc0298e: fca00613 li a2,-54 + 3bc02992: 85be mv a1,a5 + 3bc02994: e406 sd ra,8(sp) + 3bc02996: f8bff0ef jal ra,3bc02920 + 3bc0299a: 60a2 ld ra,8(sp) + 3bc0299c: 4701 li a4,0 + 3bc0299e: 853a mv a0,a4 + 3bc029a0: 0141 addi sp,sp,16 + 3bc029a2: 8082 ret + 3bc029a4: fef584e3 beq a1,a5,3bc0298c + 3bc029a8: fc060793 addi a5,a2,-64 + 3bc029ac: bfc1 j 3bc0297c + 3bc029ae: 5729 li a4,-22 + 3bc029b0: 853a mv a0,a4 + 3bc029b2: 8082 ret + +000000003bc029b4 : + 3bc029b4: 7179 addi sp,sp,-48 + 3bc029b6: f022 sd s0,32(sp) + 3bc029b8: ec26 sd s1,24(sp) + 3bc029ba: f406 sd ra,40(sp) + 3bc029bc: 84ae mv s1,a1 + 3bc029be: 04850413 addi s0,a0,72 + 3bc029c2: 652c ld a1,72(a0) + 3bc029c4: 00859763 bne a1,s0,3bc029d2 + 3bc029c8: 70a2 ld ra,40(sp) + 3bc029ca: 7402 ld s0,32(sp) + 3bc029cc: 64e2 ld s1,24(sp) + 3bc029ce: 6145 addi sp,sp,48 + 3bc029d0: 8082 ret + 3bc029d2: 8626 mv a2,s1 + 3bc029d4: fc058593 addi a1,a1,-64 + 3bc029d8: e42a sd a0,8(sp) + 3bc029da: f47ff0ef jal ra,3bc02920 + 3bc029de: 6522 ld a0,8(sp) + 3bc029e0: b7cd j 3bc029c2 + +000000003bc029e2 : + 3bc029e2: 7139 addi sp,sp,-64 + 3bc029e4: f822 sd s0,48(sp) + 3bc029e6: fc06 sd ra,56(sp) + 3bc029e8: f426 sd s1,40(sp) + 3bc029ea: f04a sd s2,32(sp) + 3bc029ec: ec4e sd s3,24(sp) + 3bc029ee: e852 sd s4,16(sp) + 3bc029f0: e456 sd s5,8(sp) + 3bc029f2: 00011417 auipc s0,0x11 + 3bc029f6: dce43403 ld s0,-562(s0) # 3bc137c0 + 3bc029fa: cc3d beqz s0,3bc02a78 + 3bc029fc: 84aa mv s1,a0 + 3bc029fe: 5529 li a0,-22 + 3bc02a00: c0bd beqz s1,3bc02a66 + 3bc02a02: 7c18 ld a4,56(s0) + 3bc02a04: 06971163 bne a4,s1,3bc02a66 + 3bc02a08: 5018 lw a4,32(s0) + 3bc02a0a: 02043c23 sd zero,56(s0) + 3bc02a0e: 89a6 mv s3,s1 + 3bc02a10: e311 bnez a4,3bc02a14 + 3bc02a12: 4981 li s3,0 + 3bc02a14: 02042023 sw zero,32(s0) + 3bc02a18: 05040913 addi s2,s0,80 + 3bc02a1c: 25040a13 addi s4,s0,592 + 3bc02a20: 4a85 li s5,1 + 3bc02a22: 07590823 sb s5,112(s2) + 3bc02a26: 854a mv a0,s2 + 3bc02a28: fc600593 li a1,-58 + 3bc02a2c: 08090913 addi s2,s2,128 + 3bc02a30: f85ff0ef jal ra,3bc029b4 + 3bc02a34: ff4917e3 bne s2,s4,3bc02a22 + 3bc02a38: 00098663 beqz s3,3bc02a44 + 3bc02a3c: 0289b783 ld a5,40(s3) + 3bc02a40: 8522 mv a0,s0 + 3bc02a42: 9782 jalr a5 + 3bc02a44: 8522 mv a0,s0 + 3bc02a46: e95ff0ef jal ra,3bc028da + 3bc02a4a: 6c9c ld a5,24(s1) + 3bc02a4c: 8522 mv a0,s0 + 3bc02a4e: 9782 jalr a5 + 3bc02a50: 8522 mv a0,s0 + 3bc02a52: 4581 li a1,0 + 3bc02a54: 106010ef jal ra,3bc03b5a + 3bc02a58: 4501 li a0,0 + 3bc02a5a: 04042423 sw zero,72(s0) + 3bc02a5e: 02042023 sw zero,32(s0) + 3bc02a62: 24040823 sb zero,592(s0) + 3bc02a66: 70e2 ld ra,56(sp) + 3bc02a68: 7442 ld s0,48(sp) + 3bc02a6a: 74a2 ld s1,40(sp) + 3bc02a6c: 7902 ld s2,32(sp) + 3bc02a6e: 69e2 ld s3,24(sp) + 3bc02a70: 6a42 ld s4,16(sp) + 3bc02a72: 6aa2 ld s5,8(sp) + 3bc02a74: 6121 addi sp,sp,64 + 3bc02a76: 8082 ret + 3bc02a78: 5535 li a0,-19 + 3bc02a7a: b7f5 j 3bc02a66 + +000000003bc02a7c : + 3bc02a7c: 1101 addi sp,sp,-32 + 3bc02a7e: e822 sd s0,16(sp) + 3bc02a80: e426 sd s1,8(sp) + 3bc02a82: ec06 sd ra,24(sp) + 3bc02a84: 842e mv s0,a1 + 3bc02a86: 84aa mv s1,a0 + 3bc02a88: cc5fe0ef jal ra,3bc0174c + 3bc02a8c: 2501 sext.w a0,a0 + 3bc02a8e: 8d41 or a0,a0,s0 + 3bc02a90: 6442 ld s0,16(sp) + 3bc02a92: 60e2 ld ra,24(sp) + 3bc02a94: 85a6 mv a1,s1 + 3bc02a96: 64a2 ld s1,8(sp) + 3bc02a98: 6105 addi sp,sp,32 + 3bc02a9a: cb9fe06f j 3bc01752 + +000000003bc02a9e : + 3bc02a9e: 1101 addi sp,sp,-32 + 3bc02aa0: e822 sd s0,16(sp) + 3bc02aa2: ec06 sd ra,24(sp) + 3bc02aa4: 842a mv s0,a0 + 3bc02aa6: e42e sd a1,8(sp) + 3bc02aa8: ca5fe0ef jal ra,3bc0174c + 3bc02aac: 65a2 ld a1,8(sp) + 3bc02aae: 60e2 ld ra,24(sp) + 3bc02ab0: 2501 sext.w a0,a0 + 3bc02ab2: fff5c793 not a5,a1 + 3bc02ab6: 85a2 mv a1,s0 + 3bc02ab8: 6442 ld s0,16(sp) + 3bc02aba: 8d7d and a0,a0,a5 + 3bc02abc: 6105 addi sp,sp,32 + 3bc02abe: c95fe06f j 3bc01752 + +000000003bc02ac2 : + 3bc02ac2: 1101 addi sp,sp,-32 + 3bc02ac4: e426 sd s1,8(sp) + 3bc02ac6: 00011497 auipc s1,0x11 + 3bc02aca: cf248493 addi s1,s1,-782 # 3bc137b8 + 3bc02ace: 6088 ld a0,0(s1) + 3bc02ad0: e822 sd s0,16(sp) + 3bc02ad2: 6405 lui s0,0x1 + 3bc02ad4: 80440413 addi s0,s0,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02ad8: 4585 li a1,1 + 3bc02ada: 9522 add a0,a0,s0 + 3bc02adc: ec06 sd ra,24(sp) + 3bc02ade: f9fff0ef jal ra,3bc02a7c + 3bc02ae2: 4529 li a0,10 + 3bc02ae4: ed0fd0ef jal ra,3bc001b4 + 3bc02ae8: 6088 ld a0,0(s1) + 3bc02aea: 4585 li a1,1 + 3bc02aec: 9522 add a0,a0,s0 + 3bc02aee: fb1ff0ef jal ra,3bc02a9e + 3bc02af2: 60e2 ld ra,24(sp) + 3bc02af4: 6442 ld s0,16(sp) + 3bc02af6: 64a2 ld s1,8(sp) + 3bc02af8: 4501 li a0,0 + 3bc02afa: 6105 addi sp,sp,32 + 3bc02afc: 8082 ret + +000000003bc02afe : + 3bc02afe: 7179 addi sp,sp,-48 + 3bc02b00: f022 sd s0,32(sp) + 3bc02b02: ec26 sd s1,24(sp) + 3bc02b04: e84a sd s2,16(sp) + 3bc02b06: e44e sd s3,8(sp) + 3bc02b08: f406 sd ra,40(sp) + 3bc02b0a: 892a mv s2,a0 + 3bc02b0c: 89ae mv s3,a1 + 3bc02b0e: 84b2 mv s1,a2 + 3bc02b10: 4401 li s0,0 + 3bc02b12: 00941b63 bne s0,s1,3bc02b28 + 3bc02b16: fc400513 li a0,-60 + 3bc02b1a: 70a2 ld ra,40(sp) + 3bc02b1c: 7402 ld s0,32(sp) + 3bc02b1e: 64e2 ld s1,24(sp) + 3bc02b20: 6942 ld s2,16(sp) + 3bc02b22: 69a2 ld s3,8(sp) + 3bc02b24: 6145 addi sp,sp,48 + 3bc02b26: 8082 ret + 3bc02b28: 854a mv a0,s2 + 3bc02b2a: c23fe0ef jal ra,3bc0174c + 3bc02b2e: 2501 sext.w a0,a0 + 3bc02b30: 01357533 and a0,a0,s3 + 3bc02b34: e511 bnez a0,3bc02b40 + 3bc02b36: 4505 li a0,1 + 3bc02b38: e52fd0ef jal ra,3bc0018a + 3bc02b3c: 2405 addiw s0,s0,1 + 3bc02b3e: bfd1 j 3bc02b12 + 3bc02b40: 4501 li a0,0 + 3bc02b42: bfe1 j 3bc02b1a + +000000003bc02b44 : + 3bc02b44: 1101 addi sp,sp,-32 + 3bc02b46: e426 sd s1,8(sp) + 3bc02b48: 00011497 auipc s1,0x11 + 3bc02b4c: c7048493 addi s1,s1,-912 # 3bc137b8 + 3bc02b50: e822 sd s0,16(sp) + 3bc02b52: 842a mv s0,a0 + 3bc02b54: 6088 ld a0,0(s1) + 3bc02b56: 6609 lui a2,0x2 + 3bc02b58: 71060613 addi a2,a2,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc02b5c: 800005b7 lui a1,0x80000 + 3bc02b60: 0541 addi a0,a0,16 + 3bc02b62: ec06 sd ra,24(sp) + 3bc02b64: f9bff0ef jal ra,3bc02afe + 3bc02b68: c919 beqz a0,3bc02b7e + 3bc02b6a: 00008597 auipc a1,0x8 + 3bc02b6e: 58658593 addi a1,a1,1414 # 3bc0b0f0 <__func__.3> + 3bc02b72: 00008517 auipc a0,0x8 + 3bc02b76: 37650513 addi a0,a0,886 # 3bc0aee8 <__func__.5+0x30> + 3bc02b7a: fdefd0ef jal ra,3bc00358 + 3bc02b7e: 608c ld a1,0(s1) + 3bc02b80: 0064151b slliw a0,s0,0x6 + 3bc02b84: 02056513 ori a0,a0,32 + 3bc02b88: 05c1 addi a1,a1,16 + 3bc02b8a: 2501 sext.w a0,a0 + 3bc02b8c: bc7fe0ef jal ra,3bc01752 + 3bc02b90: 06400413 li s0,100 + 3bc02b94: 6088 ld a0,0(s1) + 3bc02b96: 0541 addi a0,a0,16 + 3bc02b98: bb5fe0ef jal ra,3bc0174c + 3bc02b9c: 0005061b sext.w a2,a0 + 3bc02ba0: 02057513 andi a0,a0,32 + 3bc02ba4: cd09 beqz a0,3bc02bbe + 3bc02ba6: 347d addiw s0,s0,-1 + 3bc02ba8: e015 bnez s0,3bc02bcc + 3bc02baa: 00008597 auipc a1,0x8 + 3bc02bae: 54658593 addi a1,a1,1350 # 3bc0b0f0 <__func__.3> + 3bc02bb2: 00008517 auipc a0,0x8 + 3bc02bb6: 35650513 addi a0,a0,854 # 3bc0af08 <__func__.5+0x50> + 3bc02bba: f9efd0ef jal ra,3bc00358 + 3bc02bbe: 6442 ld s0,16(sp) + 3bc02bc0: 60e2 ld ra,24(sp) + 3bc02bc2: 64a2 ld s1,8(sp) + 3bc02bc4: 4505 li a0,1 + 3bc02bc6: 6105 addi sp,sp,32 + 3bc02bc8: dc2fd06f j 3bc0018a + 3bc02bcc: 4505 li a0,1 + 3bc02bce: dbcfd0ef jal ra,3bc0018a + 3bc02bd2: b7c9 j 3bc02b94 + +000000003bc02bd4 : + 3bc02bd4: 1101 addi sp,sp,-32 + 3bc02bd6: e426 sd s1,8(sp) + 3bc02bd8: e04a sd s2,0(sp) + 3bc02bda: ec06 sd ra,24(sp) + 3bc02bdc: e822 sd s0,16(sp) + 3bc02bde: 07154403 lbu s0,113(a0) + 3bc02be2: 84aa mv s1,a0 + 3bc02be4: 60000913 li s2,1536 + 3bc02be8: 883d andi s0,s0,15 + 3bc02bea: e019 bnez s0,3bc02bf0 + 3bc02bec: 10000913 li s2,256 + 3bc02bf0: 8526 mv a0,s1 + 3bc02bf2: dc3ff0ef jal ra,3bc029b4 + 3bc02bf6: 6505 lui a0,0x1 + 3bc02bf8: 91850513 addi a0,a0,-1768 # 918 <__BSS_SIZE__-0x52f8> + 3bc02bfc: 0416 slli s0,s0,0x5 + 3bc02bfe: 942a add s0,s0,a0 + 3bc02c00: 00011517 auipc a0,0x11 + 3bc02c04: bb853503 ld a0,-1096(a0) # 3bc137b8 + 3bc02c08: 9522 add a0,a0,s0 + 3bc02c0a: b43fe0ef jal ra,3bc0174c + 3bc02c0e: 3c05350b extu a0,a0,15,0 + 3bc02c12: 050a slli a0,a0,0x2 + 3bc02c14: 01257963 bgeu a0,s2,3bc02c26 + 3bc02c18: 6442 ld s0,16(sp) + 3bc02c1a: 5ca8 lw a0,120(s1) + 3bc02c1c: 60e2 ld ra,24(sp) + 3bc02c1e: 64a2 ld s1,8(sp) + 3bc02c20: 6902 ld s2,0(sp) + 3bc02c22: 6105 addi sp,sp,32 + 3bc02c24: b705 j 3bc02b44 + 3bc02c26: 60e2 ld ra,24(sp) + 3bc02c28: 6442 ld s0,16(sp) + 3bc02c2a: 64a2 ld s1,8(sp) + 3bc02c2c: 6902 ld s2,0(sp) + 3bc02c2e: 6105 addi sp,sp,32 + 3bc02c30: 8082 ret + +000000003bc02c32 : + 3bc02c32: 27052783 lw a5,624(a0) + 3bc02c36: cba1 beqz a5,3bc02c86 + 3bc02c38: 1101 addi sp,sp,-32 + 3bc02c3a: e822 sd s0,16(sp) + 3bc02c3c: e426 sd s1,8(sp) + 3bc02c3e: e04a sd s2,0(sp) + 3bc02c40: ec06 sd ra,24(sp) + 3bc02c42: 842a mv s0,a0 + 3bc02c44: 26052823 sw zero,624(a0) + 3bc02c48: 0d050493 addi s1,a0,208 + 3bc02c4c: 25050913 addi s2,a0,592 + 3bc02c50: 6c9c ld a5,24(s1) + 3bc02c52: c791 beqz a5,3bc02c5e + 3bc02c54: fc600593 li a1,-58 + 3bc02c58: 8526 mv a0,s1 + 3bc02c5a: f7bff0ef jal ra,3bc02bd4 + 3bc02c5e: 08048493 addi s1,s1,128 + 3bc02c62: ff2497e3 bne s1,s2,3bc02c50 + 3bc02c66: 7c1c ld a5,56(s0) + 3bc02c68: 779c ld a5,40(a5) + 3bc02c6a: cb81 beqz a5,3bc02c7a + 3bc02c6c: 8522 mv a0,s0 + 3bc02c6e: 6442 ld s0,16(sp) + 3bc02c70: 60e2 ld ra,24(sp) + 3bc02c72: 64a2 ld s1,8(sp) + 3bc02c74: 6902 ld s2,0(sp) + 3bc02c76: 6105 addi sp,sp,32 + 3bc02c78: 8782 jr a5 + 3bc02c7a: 60e2 ld ra,24(sp) + 3bc02c7c: 6442 ld s0,16(sp) + 3bc02c7e: 64a2 ld s1,8(sp) + 3bc02c80: 6902 ld s2,0(sp) + 3bc02c82: 6105 addi sp,sp,32 + 3bc02c84: 8082 ret + 3bc02c86: 8082 ret + +000000003bc02c88 : + 3bc02c88: 1101 addi sp,sp,-32 + 3bc02c8a: e822 sd s0,16(sp) + 3bc02c8c: 00011417 auipc s0,0x11 + 3bc02c90: b2c40413 addi s0,s0,-1236 # 3bc137b8 + 3bc02c94: 6008 ld a0,0(s0) + 3bc02c96: 6609 lui a2,0x2 + 3bc02c98: 71060613 addi a2,a2,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc02c9c: 800005b7 lui a1,0x80000 + 3bc02ca0: 0541 addi a0,a0,16 + 3bc02ca2: ec06 sd ra,24(sp) + 3bc02ca4: e426 sd s1,8(sp) + 3bc02ca6: e59ff0ef jal ra,3bc02afe + 3bc02caa: c919 beqz a0,3bc02cc0 + 3bc02cac: 00008597 auipc a1,0x8 + 3bc02cb0: 45c58593 addi a1,a1,1116 # 3bc0b108 <__func__.4> + 3bc02cb4: 00008517 auipc a0,0x8 + 3bc02cb8: 23450513 addi a0,a0,564 # 3bc0aee8 <__func__.5+0x30> + 3bc02cbc: e9cfd0ef jal ra,3bc00358 + 3bc02cc0: 600c ld a1,0(s0) + 3bc02cc2: 40000513 li a0,1024 + 3bc02cc6: 018004b7 lui s1,0x1800 + 3bc02cca: 02458593 addi a1,a1,36 + 3bc02cce: a85fe0ef jal ra,3bc01752 + 3bc02cd2: 600c ld a1,0(s0) + 3bc02cd4: 00400537 lui a0,0x400 + 3bc02cd8: 40050513 addi a0,a0,1024 # 400400 <__BSS_SIZE__+0x3fa7f0> + 3bc02cdc: 02858593 addi a1,a1,40 + 3bc02ce0: a73fe0ef jal ra,3bc01752 + 3bc02ce4: 600c ld a1,0(s0) + 3bc02ce6: 44048513 addi a0,s1,1088 # 1800440 <__BSS_SIZE__+0x17fa830> + 3bc02cea: 10458593 addi a1,a1,260 + 3bc02cee: a65fe0ef jal ra,3bc01752 + 3bc02cf2: 600c ld a1,0(s0) + 3bc02cf4: 5c048513 addi a0,s1,1472 + 3bc02cf8: 10858593 addi a1,a1,264 + 3bc02cfc: a57fe0ef jal ra,3bc01752 + 3bc02d00: 600c ld a1,0(s0) + 3bc02d02: 74048513 addi a0,s1,1856 + 3bc02d06: 06400493 li s1,100 + 3bc02d0a: 10c58593 addi a1,a1,268 + 3bc02d0e: a45fe0ef jal ra,3bc01752 + 3bc02d12: 600c ld a1,0(s0) + 3bc02d14: 43000513 li a0,1072 + 3bc02d18: 05c1 addi a1,a1,16 + 3bc02d1a: a39fe0ef jal ra,3bc01752 + 3bc02d1e: 6008 ld a0,0(s0) + 3bc02d20: 0541 addi a0,a0,16 + 3bc02d22: a2bfe0ef jal ra,3bc0174c + 3bc02d26: 0005061b sext.w a2,a0 + 3bc02d2a: 03057513 andi a0,a0,48 + 3bc02d2e: c50d beqz a0,3bc02d58 + 3bc02d30: 34fd addiw s1,s1,-1 + 3bc02d32: ec99 bnez s1,3bc02d50 + 3bc02d34: 6442 ld s0,16(sp) + 3bc02d36: 60e2 ld ra,24(sp) + 3bc02d38: 64a2 ld s1,8(sp) + 3bc02d3a: 00008597 auipc a1,0x8 + 3bc02d3e: 3ce58593 addi a1,a1,974 # 3bc0b108 <__func__.4> + 3bc02d42: 00008517 auipc a0,0x8 + 3bc02d46: 1f650513 addi a0,a0,502 # 3bc0af38 <__func__.5+0x80> + 3bc02d4a: 6105 addi sp,sp,32 + 3bc02d4c: e0cfd06f j 3bc00358 + 3bc02d50: 4505 li a0,1 + 3bc02d52: c38fd0ef jal ra,3bc0018a + 3bc02d56: b7e1 j 3bc02d1e + 3bc02d58: 60e2 ld ra,24(sp) + 3bc02d5a: 6442 ld s0,16(sp) + 3bc02d5c: 64a2 ld s1,8(sp) + 3bc02d5e: 6105 addi sp,sp,32 + 3bc02d60: 8082 ret + +000000003bc02d62 <_dwc2_ep_disable.isra.0>: + 3bc02d62: 00011717 auipc a4,0x11 + 3bc02d66: a5e73703 ld a4,-1442(a4) # 3bc137c0 + 3bc02d6a: 05070713 addi a4,a4,80 + 3bc02d6e: 07154683 lbu a3,113(a0) + 3bc02d72: 00e51c63 bne a0,a4,3bc02d8a <_dwc2_ep_disable.isra.0+0x28> + 3bc02d76: 00008597 auipc a1,0x8 + 3bc02d7a: 34a58593 addi a1,a1,842 # 3bc0b0c0 <__func__.1> + 3bc02d7e: 00008517 auipc a0,0x8 + 3bc02d82: 1ea50513 addi a0,a0,490 # 3bc0af68 <__func__.5+0xb0> + 3bc02d86: dd2fd06f j 3bc00358 + 3bc02d8a: 7139 addi sp,sp,-64 + 3bc02d8c: f04a sd s2,32(sp) + 3bc02d8e: ec4e sd s3,24(sp) + 3bc02d90: 00011917 auipc s2,0x11 + 3bc02d94: a2890913 addi s2,s2,-1496 # 3bc137b8 + 3bc02d98: fc06 sd ra,56(sp) + 3bc02d9a: f822 sd s0,48(sp) + 3bc02d9c: f426 sd s1,40(sp) + 3bc02d9e: e852 sd s4,16(sp) + 3bc02da0: e456 sd s5,8(sp) + 3bc02da2: fc76b70b extu a4,a3,63,7 + 3bc02da6: 00093983 ld s3,0(s2) + 3bc02daa: 00f6f793 andi a5,a3,15 + 3bc02dae: 0e070563 beqz a4,3bc02e98 <_dwc2_ep_disable.isra.0+0x136> + 3bc02db2: 04878793 addi a5,a5,72 + 3bc02db6: 0796 slli a5,a5,0x5 + 3bc02db8: 99be add s3,s3,a5 + 3bc02dba: 84aa mv s1,a0 + 3bc02dbc: 854e mv a0,s3 + 3bc02dbe: 98ffe0ef jal ra,3bc0174c + 3bc02dc2: 00050a1b sext.w s4,a0 + 3bc02dc6: 080a5a63 bgez s4,3bc02e5a <_dwc2_ep_disable.isra.0+0xf8> + 3bc02dca: 0714c783 lbu a5,113(s1) + 3bc02dce: 00093503 ld a0,0(s2) + 3bc02dd2: fc77b70b extu a4,a5,63,7 + 3bc02dd6: 00f7f413 andi s0,a5,15 + 3bc02dda: c371 beqz a4,3bc02e9e <_dwc2_ep_disable.isra.0+0x13c> + 3bc02ddc: 04840413 addi s0,s0,72 + 3bc02de0: 0416 slli s0,s0,0x5 + 3bc02de2: 00850ab3 add s5,a0,s0 + 3bc02de6: 0421 addi s0,s0,8 + 3bc02de8: 942a add s0,s0,a0 + 3bc02dea: 080005b7 lui a1,0x8000 + 3bc02dee: 8556 mv a0,s5 + 3bc02df0: c8dff0ef jal ra,3bc02a7c + 3bc02df4: 06400613 li a2,100 + 3bc02df8: 04000593 li a1,64 + 3bc02dfc: 8522 mv a0,s0 + 3bc02dfe: d01ff0ef jal ra,3bc02afe + 3bc02e02: c919 beqz a0,3bc02e18 <_dwc2_ep_disable.isra.0+0xb6> + 3bc02e04: 00008597 auipc a1,0x8 + 3bc02e08: 2a458593 addi a1,a1,676 # 3bc0b0a8 <__func__.0> + 3bc02e0c: 00008517 auipc a0,0x8 + 3bc02e10: 17450513 addi a0,a0,372 # 3bc0af80 <__func__.5+0xc8> + 3bc02e14: d44fd0ef jal ra,3bc00358 + 3bc02e18: 480005b7 lui a1,0x48000 + 3bc02e1c: 8556 mv a0,s5 + 3bc02e1e: c5fff0ef jal ra,3bc02a7c + 3bc02e22: 06400613 li a2,100 + 3bc02e26: 4589 li a1,2 + 3bc02e28: 8522 mv a0,s0 + 3bc02e2a: cd5ff0ef jal ra,3bc02afe + 3bc02e2e: c919 beqz a0,3bc02e44 <_dwc2_ep_disable.isra.0+0xe2> + 3bc02e30: 00008597 auipc a1,0x8 + 3bc02e34: 27858593 addi a1,a1,632 # 3bc0b0a8 <__func__.0> + 3bc02e38: 00008517 auipc a0,0x8 + 3bc02e3c: 18850513 addi a0,a0,392 # 3bc0afc0 <__func__.5+0x108> + 3bc02e40: d18fd0ef jal ra,3bc00358 + 3bc02e44: 4589 li a1,2 + 3bc02e46: 8522 mv a0,s0 + 3bc02e48: c35ff0ef jal ra,3bc02a7c + 3bc02e4c: 07148783 lb a5,113(s1) + 3bc02e50: 0a07d163 bgez a5,3bc02ef2 <_dwc2_ep_disable.isra.0+0x190> + 3bc02e54: 5ca8 lw a0,120(s1) + 3bc02e56: cefff0ef jal ra,3bc02b44 + 3bc02e5a: 7fff8537 lui a0,0x7fff8 + 3bc02e5e: 157d addi a0,a0,-1 + 3bc02e60: 00aa7a33 and s4,s4,a0 + 3bc02e64: 08000537 lui a0,0x8000 + 3bc02e68: 85ce mv a1,s3 + 3bc02e6a: 00aa6533 or a0,s4,a0 + 3bc02e6e: 8e5fe0ef jal ra,3bc01752 + 3bc02e72: 8526 mv a0,s1 + 3bc02e74: fc600593 li a1,-58 + 3bc02e78: d5dff0ef jal ra,3bc02bd4 + 3bc02e7c: 4785 li a5,1 + 3bc02e7e: 06f48823 sb a5,112(s1) + 3bc02e82: 70e2 ld ra,56(sp) + 3bc02e84: 7442 ld s0,48(sp) + 3bc02e86: 0404b023 sd zero,64(s1) + 3bc02e8a: 7902 ld s2,32(sp) + 3bc02e8c: 74a2 ld s1,40(sp) + 3bc02e8e: 69e2 ld s3,24(sp) + 3bc02e90: 6a42 ld s4,16(sp) + 3bc02e92: 6aa2 ld s5,8(sp) + 3bc02e94: 6121 addi sp,sp,64 + 3bc02e96: 8082 ret + 3bc02e98: 05878793 addi a5,a5,88 + 3bc02e9c: bf29 j 3bc02db6 <_dwc2_ep_disable.isra.0+0x54> + 3bc02e9e: 05840413 addi s0,s0,88 + 3bc02ea2: 0416 slli s0,s0,0x5 + 3bc02ea4: 00850ab3 add s5,a0,s0 + 3bc02ea8: 0421 addi s0,s0,8 + 3bc02eaa: 942a add s0,s0,a0 + 3bc02eac: 0551 addi a0,a0,20 + 3bc02eae: 89ffe0ef jal ra,3bc0174c + 3bc02eb2: 08057513 andi a0,a0,128 + 3bc02eb6: e919 bnez a0,3bc02ecc <_dwc2_ep_disable.isra.0+0x16a> + 3bc02eb8: 00093503 ld a0,0(s2) + 3bc02ebc: 6785 lui a5,0x1 + 3bc02ebe: 80478793 addi a5,a5,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02ec2: 20000593 li a1,512 + 3bc02ec6: 953e add a0,a0,a5 + 3bc02ec8: bb5ff0ef jal ra,3bc02a7c + 3bc02ecc: 00093503 ld a0,0(s2) + 3bc02ed0: 06400613 li a2,100 + 3bc02ed4: 08000593 li a1,128 + 3bc02ed8: 0551 addi a0,a0,20 + 3bc02eda: c25ff0ef jal ra,3bc02afe + 3bc02ede: dd0d beqz a0,3bc02e18 <_dwc2_ep_disable.isra.0+0xb6> + 3bc02ee0: 00008597 auipc a1,0x8 + 3bc02ee4: 1c858593 addi a1,a1,456 # 3bc0b0a8 <__func__.0> + 3bc02ee8: 00008517 auipc a0,0x8 + 3bc02eec: 0b850513 addi a0,a0,184 # 3bc0afa0 <__func__.5+0xe8> + 3bc02ef0: b715 j 3bc02e14 <_dwc2_ep_disable.isra.0+0xb2> + 3bc02ef2: 00093503 ld a0,0(s2) + 3bc02ef6: 6785 lui a5,0x1 + 3bc02ef8: 80478793 addi a5,a5,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02efc: 40000593 li a1,1024 + 3bc02f00: 953e add a0,a0,a5 + 3bc02f02: b7bff0ef jal ra,3bc02a7c + 3bc02f06: bf91 j 3bc02e5a <_dwc2_ep_disable.isra.0+0xf8> + +000000003bc02f08 : + 3bc02f08: cd09 beqz a0,3bc02f22 + 3bc02f0a: 6138 ld a4,64(a0) + 3bc02f0c: 57a9 li a5,-22 + 3bc02f0e: cb19 beqz a4,3bc02f24 + 3bc02f10: 1141 addi sp,sp,-16 + 3bc02f12: e406 sd ra,8(sp) + 3bc02f14: e4fff0ef jal ra,3bc02d62 <_dwc2_ep_disable.isra.0> + 3bc02f18: 60a2 ld ra,8(sp) + 3bc02f1a: 4781 li a5,0 + 3bc02f1c: 853e mv a0,a5 + 3bc02f1e: 0141 addi sp,sp,16 + 3bc02f20: 8082 ret + 3bc02f22: 57a9 li a5,-22 + 3bc02f24: 853e mv a0,a5 + 3bc02f26: 8082 ret + +000000003bc02f28 : + 3bc02f28: 7139 addi sp,sp,-64 + 3bc02f2a: f426 sd s1,40(sp) + 3bc02f2c: f04a sd s2,32(sp) + 3bc02f2e: ec4e sd s3,24(sp) + 3bc02f30: 84aa mv s1,a0 + 3bc02f32: 04053983 ld s3,64(a0) + 3bc02f36: 892e mv s2,a1 + 3bc02f38: 05050513 addi a0,a0,80 + 3bc02f3c: fca00593 li a1,-54 + 3bc02f40: fc06 sd ra,56(sp) + 3bc02f42: f822 sd s0,48(sp) + 3bc02f44: e852 sd s4,16(sp) + 3bc02f46: e456 sd s5,8(sp) + 3bc02f48: c8dff0ef jal ra,3bc02bd4 + 3bc02f4c: 8526 mv a0,s1 + 3bc02f4e: 98dff0ef jal ra,3bc028da + 3bc02f52: 00011417 auipc s0,0x11 + 3bc02f56: 86640413 addi s0,s0,-1946 # 3bc137b8 + 3bc02f5a: 22091863 bnez s2,3bc0318a + 3bc02f5e: 6008 ld a0,0(s0) + 3bc02f60: 04050513 addi a0,a0,64 + 3bc02f64: fe8fe0ef jal ra,3bc0174c + 3bc02f68: 600c ld a1,0(s0) + 3bc02f6a: 6791 lui a5,0x4 + 3bc02f6c: 3c05350b extu a0,a0,15,0 + 3bc02f70: 20978793 addi a5,a5,521 # 4209 <__BSS_SIZE__-0x1a07> + 3bc02f74: 05c1 addi a1,a1,16 + 3bc02f76: 06a7ee63 bltu a5,a0,3bc02ff2 + 3bc02f7a: 4505 li a0,1 + 3bc02f7c: fd6fe0ef jal ra,3bc01752 + 3bc02f80: 03300a13 li s4,51 + 3bc02f84: 4505 li a0,1 + 3bc02f86: a04fd0ef jal ra,3bc0018a + 3bc02f8a: 6008 ld a0,0(s0) + 3bc02f8c: 3a7d addiw s4,s4,-1 + 3bc02f8e: 0541 addi a0,a0,16 + 3bc02f90: fbcfe0ef jal ra,3bc0174c + 3bc02f94: 0005061b sext.w a2,a0 + 3bc02f98: 020a1463 bnez s4,3bc02fc0 + 3bc02f9c: 00008597 auipc a1,0x8 + 3bc02fa0: 13c58593 addi a1,a1,316 # 3bc0b0d8 <__func__.2> + 3bc02fa4: 00008517 auipc a0,0x8 + 3bc02fa8: 03c50513 addi a0,a0,60 # 3bc0afe0 <__func__.5+0x128> + 3bc02fac: 7442 ld s0,48(sp) + 3bc02fae: 70e2 ld ra,56(sp) + 3bc02fb0: 74a2 ld s1,40(sp) + 3bc02fb2: 7902 ld s2,32(sp) + 3bc02fb4: 69e2 ld s3,24(sp) + 3bc02fb6: 6a42 ld s4,16(sp) + 3bc02fb8: 6aa2 ld s5,8(sp) + 3bc02fba: 6121 addi sp,sp,64 + 3bc02fbc: b9cfd06f j 3bc00358 + 3bc02fc0: 8a05 andi a2,a2,1 + 3bc02fc2: f269 bnez a2,3bc02f84 + 3bc02fc4: 03300a13 li s4,51 + 3bc02fc8: 4505 li a0,1 + 3bc02fca: 9c0fd0ef jal ra,3bc0018a + 3bc02fce: 6008 ld a0,0(s0) + 3bc02fd0: 3a7d addiw s4,s4,-1 + 3bc02fd2: 0541 addi a0,a0,16 + 3bc02fd4: f78fe0ef jal ra,3bc0174c + 3bc02fd8: 0005061b sext.w a2,a0 + 3bc02fdc: 060a1963 bnez s4,3bc0304e + 3bc02fe0: 00008597 auipc a1,0x8 + 3bc02fe4: 0f858593 addi a1,a1,248 # 3bc0b0d8 <__func__.2> + 3bc02fe8: 00008517 auipc a0,0x8 + 3bc02fec: 04850513 addi a0,a0,72 # 3bc0b030 <__func__.5+0x178> + 3bc02ff0: bf75 j 3bc02fac + 3bc02ff2: 4505 li a0,1 + 3bc02ff4: f5efe0ef jal ra,3bc01752 + 3bc02ff8: 03300a93 li s5,51 + 3bc02ffc: 20000a37 lui s4,0x20000 + 3bc03000: 4505 li a0,1 + 3bc03002: 988fd0ef jal ra,3bc0018a + 3bc03006: 6008 ld a0,0(s0) + 3bc03008: 3afd addiw s5,s5,-1 + 3bc0300a: 0541 addi a0,a0,16 + 3bc0300c: f40fe0ef jal ra,3bc0174c + 3bc03010: 0005061b sext.w a2,a0 + 3bc03014: 000a9b63 bnez s5,3bc0302a + 3bc03018: 00008597 auipc a1,0x8 + 3bc0301c: 0c058593 addi a1,a1,192 # 3bc0b0d8 <__func__.2> + 3bc03020: 00008517 auipc a0,0x8 + 3bc03024: fe850513 addi a0,a0,-24 # 3bc0b008 <__func__.5+0x150> + 3bc03028: b751 j 3bc02fac + 3bc0302a: 01467633 and a2,a2,s4 + 3bc0302e: 2601 sext.w a2,a2 + 3bc03030: da61 beqz a2,3bc03000 + 3bc03032: 6008 ld a0,0(s0) + 3bc03034: 0541 addi a0,a0,16 + 3bc03036: f16fe0ef jal ra,3bc0174c + 3bc0303a: 600c ld a1,0(s0) + 3bc0303c: 2501 sext.w a0,a0 + 3bc0303e: 9979 andi a0,a0,-2 + 3bc03040: 01456533 or a0,a0,s4 + 3bc03044: 05c1 addi a1,a1,16 + 3bc03046: 2501 sext.w a0,a0 + 3bc03048: f0afe0ef jal ra,3bc01752 + 3bc0304c: bfa5 j 3bc02fc4 + 3bc0304e: f6065de3 bgez a2,3bc02fc8 + 3bc03052: 0309a503 lw a0,48(s3) + 3bc03056: e509 bnez a0,3bc03060 + 3bc03058: 40081537 lui a0,0x40081 + 3bc0305c: 40f50513 addi a0,a0,1039 # 4008140f <__BL2_END__+0x446dbff> + 3bc03060: 600c ld a1,0(s0) + 3bc03062: 05b1 addi a1,a1,12 + 3bc03064: eeefe0ef jal ra,3bc01752 + 3bc03068: c21ff0ef jal ra,3bc02c88 + 3bc0306c: 02091063 bnez s2,3bc0308c + 3bc03070: 6008 ld a0,0(s0) + 3bc03072: 6985 lui s3,0x1 + 3bc03074: 80498993 addi s3,s3,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc03078: 954e add a0,a0,s3 + 3bc0307a: ed2fe0ef jal ra,3bc0174c + 3bc0307e: 600c ld a1,0(s0) + 3bc03080: 2501 sext.w a0,a0 + 3bc03082: 00256513 ori a0,a0,2 + 3bc03086: 95ce add a1,a1,s3 + 3bc03088: ecafe0ef jal ra,3bc01752 + 3bc0308c: 600c ld a1,0(s0) + 3bc0308e: 6985 lui s3,0x1 + 3bc03090: 80098a13 addi s4,s3,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc03094: 95d2 add a1,a1,s4 + 3bc03096: 00040537 lui a0,0x40 + 3bc0309a: eb8fe0ef jal ra,3bc01752 + 3bc0309e: 600c ld a1,0(s0) + 3bc030a0: 557d li a0,-1 + 3bc030a2: 0591 addi a1,a1,4 + 3bc030a4: eaefe0ef jal ra,3bc01752 + 3bc030a8: 600c ld a1,0(s0) + 3bc030aa: 557d li a0,-1 + 3bc030ac: 05d1 addi a1,a1,20 + 3bc030ae: ea4fe0ef jal ra,3bc01752 + 3bc030b2: 600c ld a1,0(s0) + 3bc030b4: 800c4537 lui a0,0x800c4 + 3bc030b8: 81050513 addi a0,a0,-2032 # ffffffff800c3810 <__BL2_END__+0xffffffff444b0000> + 3bc030bc: 05e1 addi a1,a1,24 + 3bc030be: e94fe0ef jal ra,3bc01752 + 3bc030c2: 600c ld a1,0(s0) + 3bc030c4: 4505 li a0,1 + 3bc030c6: 05a1 addi a1,a1,8 + 3bc030c8: e8afe0ef jal ra,3bc01752 + 3bc030cc: 600c ld a1,0(s0) + 3bc030ce: 81098793 addi a5,s3,-2032 + 3bc030d2: 4535 li a0,13 + 3bc030d4: 95be add a1,a1,a5 + 3bc030d6: e7cfe0ef jal ra,3bc01752 + 3bc030da: 600c ld a1,0(s0) + 3bc030dc: 81498793 addi a5,s3,-2028 + 3bc030e0: 4535 li a0,13 + 3bc030e2: 95be add a1,a1,a5 + 3bc030e4: e6efe0ef jal ra,3bc01752 + 3bc030e8: 600c ld a1,0(s0) + 3bc030ea: 81c98793 addi a5,s3,-2020 + 3bc030ee: 6541 lui a0,0x10 + 3bc030f0: 95be add a1,a1,a5 + 3bc030f2: 0505 addi a0,a0,1 + 3bc030f4: e5efe0ef jal ra,3bc01752 + 3bc030f8: 02091f63 bnez s2,3bc03136 + 3bc030fc: 6008 ld a0,0(s0) + 3bc030fe: 80498993 addi s3,s3,-2044 + 3bc03102: 954e add a0,a0,s3 + 3bc03104: e48fe0ef jal ra,3bc0174c + 3bc03108: 600c ld a1,0(s0) + 3bc0310a: 2501 sext.w a0,a0 + 3bc0310c: 01456533 or a0,a0,s4 + 3bc03110: 95ce add a1,a1,s3 + 3bc03112: e40fe0ef jal ra,3bc01752 + 3bc03116: 4529 li a0,10 + 3bc03118: 872fd0ef jal ra,3bc0018a + 3bc0311c: 6008 ld a0,0(s0) + 3bc0311e: 954e add a0,a0,s3 + 3bc03120: e2cfe0ef jal ra,3bc0174c + 3bc03124: 600c ld a1,0(s0) + 3bc03126: 77fd lui a5,0xfffff + 3bc03128: 2501 sext.w a0,a0 + 3bc0312a: 7ff78793 addi a5,a5,2047 # fffffffffffff7ff <__BL2_END__+0xffffffffc43ebfef> + 3bc0312e: 95ce add a1,a1,s3 + 3bc03130: 8d7d and a0,a0,a5 + 3bc03132: e20fe0ef jal ra,3bc01752 + 3bc03136: 8526 mv a0,s1 + 3bc03138: 7dc000ef jal ra,3bc03914 + 3bc0313c: 600c ld a1,0(s0) + 3bc0313e: 6785 lui a5,0x1 + 3bc03140: 90078793 addi a5,a5,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc03144: 95be add a1,a1,a5 + 3bc03146: 6521 lui a0,0x8 + 3bc03148: e0afe0ef jal ra,3bc01752 + 3bc0314c: 50000993 li s3,1280 + 3bc03150: 00091463 bnez s2,3bc03158 + 3bc03154: 50200993 li s3,1282 + 3bc03158: 6008 ld a0,0(s0) + 3bc0315a: 6485 lui s1,0x1 + 3bc0315c: 80448493 addi s1,s1,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc03160: 9526 add a0,a0,s1 + 3bc03162: deafe0ef jal ra,3bc0174c + 3bc03166: 600c ld a1,0(s0) + 3bc03168: 2501 sext.w a0,a0 + 3bc0316a: 00a9e533 or a0,s3,a0 + 3bc0316e: 95a6 add a1,a1,s1 + 3bc03170: de2fe0ef jal ra,3bc01752 + 3bc03174: 7442 ld s0,48(sp) + 3bc03176: 70e2 ld ra,56(sp) + 3bc03178: 74a2 ld s1,40(sp) + 3bc0317a: 7902 ld s2,32(sp) + 3bc0317c: 69e2 ld s3,24(sp) + 3bc0317e: 6a42 ld s4,16(sp) + 3bc03180: 6aa2 ld s5,8(sp) + 3bc03182: 450d li a0,3 + 3bc03184: 6121 addi sp,sp,64 + 3bc03186: 82efd06f j 3bc001b4 + 3bc0318a: 74fc ld a5,232(s1) + 3bc0318c: c789 beqz a5,3bc03196 + 3bc0318e: 0d048513 addi a0,s1,208 + 3bc03192: bd1ff0ef jal ra,3bc02d62 <_dwc2_ep_disable.isra.0> + 3bc03196: 1684b783 ld a5,360(s1) + 3bc0319a: c789 beqz a5,3bc031a4 + 3bc0319c: 15048513 addi a0,s1,336 + 3bc031a0: bc3ff0ef jal ra,3bc02d62 <_dwc2_ep_disable.isra.0> + 3bc031a4: 1e84b783 ld a5,488(s1) + 3bc031a8: ea0785e3 beqz a5,3bc03052 + 3bc031ac: 1d048513 addi a0,s1,464 + 3bc031b0: bb3ff0ef jal ra,3bc02d62 <_dwc2_ep_disable.isra.0> + 3bc031b4: bd79 j 3bc03052 + +000000003bc031b6 : + 3bc031b6: 7139 addi sp,sp,-64 + 3bc031b8: f822 sd s0,48(sp) + 3bc031ba: f426 sd s1,40(sp) + 3bc031bc: fc06 sd ra,56(sp) + 3bc031be: f04a sd s2,32(sp) + 3bc031c0: ec4e sd s3,24(sp) + 3bc031c2: e852 sd s4,16(sp) + 3bc031c4: e456 sd s5,8(sp) + 3bc031c6: 00010497 auipc s1,0x10 + 3bc031ca: 5fa4b483 ld s1,1530(s1) # 3bc137c0 + 3bc031ce: 5429 li s0,-22 + 3bc031d0: cd0d beqz a0,3bc0320a + 3bc031d2: 451c lw a5,8(a0) + 3bc031d4: 4705 li a4,1 + 3bc031d6: 5429 li s0,-22 + 3bc031d8: 37f9 addiw a5,a5,-2 + 3bc031da: 02f76863 bltu a4,a5,3bc0320a + 3bc031de: 691c ld a5,16(a0) + 3bc031e0: c78d beqz a5,3bc0320a + 3bc031e2: 7518 ld a4,40(a0) + 3bc031e4: c31d beqz a4,3bc0320a + 3bc031e6: 7118 ld a4,32(a0) + 3bc031e8: c30d beqz a4,3bc0320a + 3bc031ea: 6538 ld a4,72(a0) + 3bc031ec: cf19 beqz a4,3bc0320a + 3bc031ee: 6938 ld a4,80(a0) + 3bc031f0: cf09 beqz a4,3bc0320a + 3bc031f2: 5435 li s0,-19 + 3bc031f4: c899 beqz s1,3bc0320a + 3bc031f6: 7c98 ld a4,56(s1) + 3bc031f8: 5441 li s0,-16 + 3bc031fa: eb01 bnez a4,3bc0320a + 3bc031fc: fc88 sd a0,56(s1) + 3bc031fe: 8526 mv a0,s1 + 3bc03200: 9782 jalr a5 + 3bc03202: 842a mv s0,a0 + 3bc03204: cd09 beqz a0,3bc0321e + 3bc03206: 0204bc23 sd zero,56(s1) + 3bc0320a: 70e2 ld ra,56(sp) + 3bc0320c: 8522 mv a0,s0 + 3bc0320e: 7442 ld s0,48(sp) + 3bc03210: 74a2 ld s1,40(sp) + 3bc03212: 7902 ld s2,32(sp) + 3bc03214: 69e2 ld s3,24(sp) + 3bc03216: 6a42 ld s4,16(sp) + 3bc03218: 6aa2 ld s5,8(sp) + 3bc0321a: 6121 addi sp,sp,64 + 3bc0321c: 8082 ret + 3bc0321e: 00010917 auipc s2,0x10 + 3bc03222: 59a90913 addi s2,s2,1434 # 3bc137b8 + 3bc03226: 00093583 ld a1,0(s2) + 3bc0322a: 6985 lui s3,0x1 + 3bc0322c: 81498793 addi a5,s3,-2028 # 814 <__BSS_SIZE__-0x53fc> + 3bc03230: 95be add a1,a1,a5 + 3bc03232: 4535 li a0,13 + 3bc03234: 0404ba03 ld s4,64(s1) + 3bc03238: d1afe0ef jal ra,3bc01752 + 3bc0323c: 00093583 ld a1,0(s2) + 3bc03240: 81098793 addi a5,s3,-2032 + 3bc03244: 4535 li a0,13 + 3bc03246: 95be add a1,a1,a5 + 3bc03248: d0afe0ef jal ra,3bc01752 + 3bc0324c: 00093583 ld a1,0(s2) + 3bc03250: 81c98793 addi a5,s3,-2020 + 3bc03254: 4501 li a0,0 + 3bc03256: 95be add a1,a1,a5 + 3bc03258: cfafe0ef jal ra,3bc01752 + 3bc0325c: 00093503 ld a0,0(s2) + 3bc03260: 80498993 addi s3,s3,-2044 + 3bc03264: 954e add a0,a0,s3 + 3bc03266: ce6fe0ef jal ra,3bc0174c + 3bc0326a: 00093583 ld a1,0(s2) + 3bc0326e: 2501 sext.w a0,a0 + 3bc03270: 00256513 ori a0,a0,2 + 3bc03274: 95ce add a1,a1,s3 + 3bc03276: cdcfe0ef jal ra,3bc01752 + 3bc0327a: a0fff0ef jal ra,3bc02c88 + 3bc0327e: 030a2983 lw s3,48(s4) # 20000030 + 3bc03282: 00099663 bnez s3,3bc0328e + 3bc03286: 400819b7 lui s3,0x40081 + 3bc0328a: 40798993 addi s3,s3,1031 # 40081407 <__BL2_END__+0x446dbf7> + 3bc0328e: 0e0007b7 lui a5,0xe000 + 3bc03292: 0007c783 lbu a5,0(a5) # e000000 + 3bc03296: 4a01 li s4,0 + 3bc03298: 8ba1 andi a5,a5,8 + 3bc0329a: c795 beqz a5,3bc032c6 + 3bc0329c: 03006ab7 lui s5,0x3006 + 3bc032a0: 014a8513 addi a0,s5,20 # 3006014 <__BSS_SIZE__+0x3000404> + 3bc032a4: ca8fe0ef jal ra,3bc0174c + 3bc032a8: 00050a1b sext.w s4,a0 + 3bc032ac: 014a8593 addi a1,s5,20 + 3bc032b0: 18b00513 li a0,395 + 3bc032b4: c9efe0ef jal ra,3bc01752 + 3bc032b8: c00037b7 lui a5,0xc0003 + 3bc032bc: 03000737 lui a4,0x3000 + 3bc032c0: 07ad addi a5,a5,11 + 3bc032c2: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc032c6: 00093583 ld a1,0(s2) + 3bc032ca: 854e mv a0,s3 + 3bc032cc: 05b1 addi a1,a1,12 + 3bc032ce: c84fe0ef jal ra,3bc01752 + 3bc032d2: 0e0007b7 lui a5,0xe000 + 3bc032d6: 0007c783 lbu a5,0(a5) # e000000 + 3bc032da: 8ba1 andi a5,a5,8 + 3bc032dc: cb99 beqz a5,3bc032f2 + 3bc032de: 030065b7 lui a1,0x3006 + 3bc032e2: 8552 mv a0,s4 + 3bc032e4: 05d1 addi a1,a1,20 + 3bc032e6: c6cfe0ef jal ra,3bc01752 + 3bc032ea: 06400513 li a0,100 + 3bc032ee: e9dfc0ef jal ra,3bc0018a + 3bc032f2: 00093583 ld a1,0(s2) + 3bc032f6: 4505 li a0,1 + 3bc032f8: 05a1 addi a1,a1,8 + 3bc032fa: c58fe0ef jal ra,3bc01752 + 3bc032fe: 4581 li a1,0 + 3bc03300: 8526 mv a0,s1 + 3bc03302: c27ff0ef jal ra,3bc02f28 + 3bc03306: 0204a023 sw zero,32(s1) + 3bc0330a: b701 j 3bc0320a + +000000003bc0330c : + 3bc0330c: c901 beqz a0,3bc0331c + 3bc0330e: 0015151b slliw a0,a0,0x1 + 3bc03312: 00b035b3 snez a1,a1 + 3bc03316: 9d0d subw a0,a0,a1 + 3bc03318: 0ff57513 andi a0,a0,255 + 3bc0331c: 8082 ret + +000000003bc0331e : + 3bc0331e: 4510 lw a2,8(a0) + 3bc03320: 1101 addi sp,sp,-32 + 3bc03322: ec06 sd ra,24(sp) + 3bc03324: e822 sd s0,16(sp) + 3bc03326: e426 sd s1,8(sp) + 3bc03328: 27700793 li a5,631 + 3bc0332c: 02c7e063 bltu a5,a2,3bc0334c + 3bc03330: 00008517 auipc a0,0x8 + 3bc03334: d2850513 addi a0,a0,-728 # 3bc0b058 <__func__.5+0x1a0> + 3bc03338: 27800593 li a1,632 + 3bc0333c: 81cfd0ef jal ra,3bc00358 + 3bc03340: 557d li a0,-1 + 3bc03342: 60e2 ld ra,24(sp) + 3bc03344: 6442 ld s0,16(sp) + 3bc03346: 64a2 ld s1,8(sp) + 3bc03348: 6105 addi sp,sp,32 + 3bc0334a: 8082 ret + 3bc0334c: 6100 ld s0,0(a0) + 3bc0334e: 84aa mv s1,a0 + 3bc03350: 27800613 li a2,632 + 3bc03354: 4581 li a1,0 + 3bc03356: 8522 mv a0,s0 + 3bc03358: ec8fd0ef jal ra,3bc00a20 + 3bc0335c: 708c ld a1,32(s1) + 3bc0335e: 00008717 auipc a4,0x8 + 3bc03362: 65270713 addi a4,a4,1618 # 3bc0b9b0 + 3bc03366: 20000613 li a2,512 + 3bc0336a: 00010797 auipc a5,0x10 + 3bc0336e: 44b7b723 sd a1,1102(a5) # 3bc137b8 + 3bc03372: 00008797 auipc a5,0x8 + 3bc03376: dbe78793 addi a5,a5,-578 # 3bc0b130 + 3bc0337a: e81c sd a5,16(s0) + 3bc0337c: 05040793 addi a5,s0,80 + 3bc03380: ec1c sd a5,24(s0) + 3bc03382: 00008797 auipc a5,0x8 + 3bc03386: d9e78793 addi a5,a5,-610 # 3bc0b120 + 3bc0338a: f81c sd a5,48(s0) + 3bc0338c: 02c44783 lbu a5,44(s0) + 3bc03390: f838 sd a4,112(s0) + 3bc03392: f878 sd a4,240(s0) + 3bc03394: fc07f793 andi a5,a5,-64 + 3bc03398: 0017e793 ori a5,a5,1 + 3bc0339c: 02f40623 sb a5,44(s0) + 3bc033a0: 478d li a5,3 + 3bc033a2: d05c sw a5,36(s0) + 3bc033a4: 00008797 auipc a5,0x8 + 3bc033a8: dd478793 addi a5,a5,-556 # 3bc0b178 + 3bc033ac: f43c sd a5,104(s0) + 3bc033ae: 04000793 li a5,64 + 3bc033b2: 06f41c23 sh a5,120(s0) + 3bc033b6: 00008797 auipc a5,0x8 + 3bc033ba: dd278793 addi a5,a5,-558 # 3bc0b188 + 3bc033be: f47c sd a5,232(s0) + 3bc033c0: 28100793 li a5,641 + 3bc033c4: 14f410a3 sh a5,321(s0) + 3bc033c8: 4785 li a5,1 + 3bc033ca: 02079693 slli a3,a5,0x20 + 3bc033ce: 00268513 addi a0,a3,2 + 3bc033d2: 14a43223 sd a0,324(s0) + 3bc033d6: 0685 addi a3,a3,1 + 3bc033d8: 00008517 auipc a0,0x8 + 3bc033dc: dc050513 addi a0,a0,-576 # 3bc0b198 + 3bc033e0: 16a43423 sd a0,360(s0) + 3bc033e4: 1cd43223 sd a3,452(s0) + 3bc033e8: 20100513 li a0,513 + 3bc033ec: 00008697 auipc a3,0x8 + 3bc033f0: dbc68693 addi a3,a3,-580 # 3bc0b1a8 + 3bc033f4: 1786 slli a5,a5,0x21 + 3bc033f6: 078d addi a5,a5,3 + 3bc033f8: 16e43823 sd a4,368(s0) + 3bc033fc: 1ee43823 sd a4,496(s0) + 3bc03400: e024 sd s1,64(s0) + 3bc03402: 24040823 sb zero,592(s0) + 3bc03406: e440 sd s0,136(s0) + 3bc03408: 0c0410a3 sh zero,193(s0) + 3bc0340c: 0c042223 sw zero,196(s0) + 3bc03410: 0ec41c23 sh a2,248(s0) + 3bc03414: 10843423 sd s0,264(s0) + 3bc03418: 16c41c23 sh a2,376(s0) + 3bc0341c: 18843423 sd s0,392(s0) + 3bc03420: 1ca410a3 sh a0,449(s0) + 3bc03424: 1ed43423 sd a3,488(s0) + 3bc03428: 1ec41c23 sh a2,504(s0) + 3bc0342c: 20843423 sd s0,520(s0) + 3bc03430: 38200713 li a4,898 + 3bc03434: 24e410a3 sh a4,577(s0) + 3bc03438: 24f43223 sd a5,580(s0) + 3bc0343c: 00010797 auipc a5,0x10 + 3bc03440: 3887b223 sd s0,900(a5) # 3bc137c0 + 3bc03444: 60bc ld a5,64(s1) + 3bc03446: 24f43c23 sd a5,600(s0) + 3bc0344a: eb89 bnez a5,3bc0345c + 3bc0344c: 00008517 auipc a0,0x8 + 3bc03450: c3c50513 addi a0,a0,-964 # 3bc0b088 <__func__.5+0x1d0> + 3bc03454: f05fc0ef jal ra,3bc00358 + 3bc03458: 5551 li a0,-12 + 3bc0345a: b5e5 j 3bc03342 + 3bc0345c: 8522 mv a0,s0 + 3bc0345e: 26f42023 sw a5,608(s0) + 3bc03462: 26b43423 sd a1,616(s0) + 3bc03466: c74ff0ef jal ra,3bc028da + 3bc0346a: 4501 li a0,0 + 3bc0346c: bdd9 j 3bc03342 + +000000003bc0346e : + 3bc0346e: 1101 addi sp,sp,-32 + 3bc03470: e426 sd s1,8(sp) + 3bc03472: 00010497 auipc s1,0x10 + 3bc03476: 34648493 addi s1,s1,838 # 3bc137b8 + 3bc0347a: 6088 ld a0,0(s1) + 3bc0347c: ec06 sd ra,24(sp) + 3bc0347e: e822 sd s0,16(sp) + 3bc03480: 0551 addi a0,a0,20 + 3bc03482: acafe0ef jal ra,3bc0174c + 3bc03486: 0005041b sext.w s0,a0 + 3bc0348a: 6088 ld a0,0(s1) + 3bc0348c: 0561 addi a0,a0,24 + 3bc0348e: abefe0ef jal ra,3bc0174c + 3bc03492: 2501 sext.w a0,a0 + 3bc03494: 8c69 and s0,s0,a0 + 3bc03496: cc01 beqz s0,3bc034ae + 3bc03498: 6442 ld s0,16(sp) + 3bc0349a: 60e2 ld ra,24(sp) + 3bc0349c: 64a2 ld s1,8(sp) + 3bc0349e: 00010597 auipc a1,0x10 + 3bc034a2: 3225b583 ld a1,802(a1) # 3bc137c0 + 3bc034a6: 4505 li a0,1 + 3bc034a8: 6105 addi sp,sp,32 + 3bc034aa: 3fb0006f j 3bc040a4 + 3bc034ae: 60e2 ld ra,24(sp) + 3bc034b0: 6442 ld s0,16(sp) + 3bc034b2: 64a2 ld s1,8(sp) + 3bc034b4: 4501 li a0,0 + 3bc034b6: 6105 addi sp,sp,32 + 3bc034b8: 8082 ret + +000000003bc034ba : + 3bc034ba: 7179 addi sp,sp,-48 + 3bc034bc: f022 sd s0,32(sp) + 3bc034be: f406 sd ra,40(sp) + 3bc034c0: ec26 sd s1,24(sp) + 3bc034c2: 470d li a4,3 + 3bc034c4: 26853403 ld s0,616(a0) + 3bc034c8: 00008697 auipc a3,0x8 + 3bc034cc: 53868693 addi a3,a3,1336 # 3bc0ba00 + 3bc034d0: 00008797 auipc a5,0x8 + 3bc034d4: 53478793 addi a5,a5,1332 # 3bc0ba04 + 3bc034d8: 06e59163 bne a1,a4,3bc0353a + 3bc034dc: 04000713 li a4,64 + 3bc034e0: c298 sw a4,0(a3) + 3bc034e2: 20000713 li a4,512 + 3bc034e6: c398 sw a4,0(a5) + 3bc034e8: d10c sw a1,32(a0) + 3bc034ea: 0007d783 lhu a5,0(a5) + 3bc034ee: 6485 lui s1,0x1 + 3bc034f0: 90048593 addi a1,s1,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc034f4: 95a2 add a1,a1,s0 + 3bc034f6: 04000713 li a4,64 + 3bc034fa: 06e51c23 sh a4,120(a0) + 3bc034fe: 0ef51c23 sh a5,248(a0) + 3bc03502: 16f51c23 sh a5,376(a0) + 3bc03506: 1ef51c23 sh a5,504(a0) + 3bc0350a: 852e mv a0,a1 + 3bc0350c: e42e sd a1,8(sp) + 3bc0350e: a3efe0ef jal ra,3bc0174c + 3bc03512: 65a2 ld a1,8(sp) + 3bc03514: 2501 sext.w a0,a0 + 3bc03516: 9971 andi a0,a0,-4 + 3bc03518: b0048493 addi s1,s1,-1280 + 3bc0351c: a36fe0ef jal ra,3bc01752 + 3bc03520: 9426 add s0,s0,s1 + 3bc03522: 8522 mv a0,s0 + 3bc03524: a28fe0ef jal ra,3bc0174c + 3bc03528: 85a2 mv a1,s0 + 3bc0352a: 7402 ld s0,32(sp) + 3bc0352c: 70a2 ld ra,40(sp) + 3bc0352e: 64e2 ld s1,24(sp) + 3bc03530: 2501 sext.w a0,a0 + 3bc03532: 9971 andi a0,a0,-4 + 3bc03534: 6145 addi sp,sp,48 + 3bc03536: a1cfe06f j 3bc01752 + 3bc0353a: 04000713 li a4,64 + 3bc0353e: c298 sw a4,0(a3) + 3bc03540: c398 sw a4,0(a5) + 3bc03542: 4709 li a4,2 + 3bc03544: d118 sw a4,32(a0) + 3bc03546: b755 j 3bc034ea + +000000003bc03548 : + 3bc03548: 1101 addi sp,sp,-32 + 3bc0354a: e822 sd s0,16(sp) + 3bc0354c: ec06 sd ra,24(sp) + 3bc0354e: 07154703 lbu a4,113(a0) + 3bc03552: 7d1c ld a5,56(a0) + 3bc03554: 842a mv s0,a0 + 3bc03556: fc77368b extu a3,a4,63,7 + 3bc0355a: 2687b583 ld a1,616(a5) + 3bc0355e: 00f77793 andi a5,a4,15 + 3bc03562: ce9d beqz a3,3bc035a0 + 3bc03564: 04878793 addi a5,a5,72 + 3bc03568: 0796 slli a5,a5,0x5 + 3bc0356a: 95be add a1,a1,a5 + 3bc0356c: 852e mv a0,a1 + 3bc0356e: e42e sd a1,8(sp) + 3bc03570: 9dcfe0ef jal ra,3bc0174c + 3bc03574: ffe007b7 lui a5,0xffe00 + 3bc03578: 17fd addi a5,a5,-1 + 3bc0357a: 2501 sext.w a0,a0 + 3bc0357c: 8d7d and a0,a0,a5 + 3bc0357e: 07244783 lbu a5,114(s0) + 3bc03582: 4705 li a4,1 + 3bc03584: 65a2 ld a1,8(sp) + 3bc03586: 37f9 addiw a5,a5,-2 + 3bc03588: 0ff7f793 andi a5,a5,255 + 3bc0358c: 00f76563 bltu a4,a5,3bc03596 + 3bc03590: 100007b7 lui a5,0x10000 + 3bc03594: 8d5d or a0,a0,a5 + 3bc03596: 6442 ld s0,16(sp) + 3bc03598: 60e2 ld ra,24(sp) + 3bc0359a: 6105 addi sp,sp,32 + 3bc0359c: 9b6fe06f j 3bc01752 + 3bc035a0: 05878793 addi a5,a5,88 # 10000058 + 3bc035a4: b7d1 j 3bc03568 + +000000003bc035a6 : + 3bc035a6: 1101 addi sp,sp,-32 + 3bc035a8: ec06 sd ra,24(sp) + 3bc035aa: 07154703 lbu a4,113(a0) + 3bc035ae: 7d1c ld a5,56(a0) + 3bc035b0: fc77368b extu a3,a4,63,7 + 3bc035b4: 2687b583 ld a1,616(a5) + 3bc035b8: 00f77793 andi a5,a4,15 + 3bc035bc: ca85 beqz a3,3bc035ec + 3bc035be: 04878793 addi a5,a5,72 + 3bc035c2: 0796 slli a5,a5,0x5 + 3bc035c4: 95be add a1,a1,a5 + 3bc035c6: 852e mv a0,a1 + 3bc035c8: e42e sd a1,8(sp) + 3bc035ca: 982fe0ef jal ra,3bc0174c + 3bc035ce: 0005079b sext.w a5,a0 + 3bc035d2: 65a2 ld a1,8(sp) + 3bc035d4: 0007d563 bgez a5,3bc035de + 3bc035d8: 40000737 lui a4,0x40000 + 3bc035dc: 8fd9 or a5,a5,a4 + 3bc035de: 00200537 lui a0,0x200 + 3bc035e2: 8d5d or a0,a0,a5 + 3bc035e4: 60e2 ld ra,24(sp) + 3bc035e6: 6105 addi sp,sp,32 + 3bc035e8: 96afe06f j 3bc01752 + 3bc035ec: 05878793 addi a5,a5,88 + 3bc035f0: 0796 slli a5,a5,0x5 + 3bc035f2: 95be add a1,a1,a5 + 3bc035f4: 852e mv a0,a1 + 3bc035f6: e42e sd a1,8(sp) + 3bc035f8: 954fe0ef jal ra,3bc0174c + 3bc035fc: 002007b7 lui a5,0x200 + 3bc03600: 8d5d or a0,a0,a5 + 3bc03602: 65a2 ld a1,8(sp) + 3bc03604: 2501 sext.w a0,a0 + 3bc03606: bff9 j 3bc035e4 + +000000003bc03608 : + 3bc03608: 7139 addi sp,sp,-64 + 3bc0360a: f822 sd s0,48(sp) + 3bc0360c: 26853403 ld s0,616(a0) # 200268 <__BSS_SIZE__+0x1fa658> + 3bc03610: f426 sd s1,40(sp) + 3bc03612: 6485 lui s1,0x1 + 3bc03614: ec4e sd s3,24(sp) + 3bc03616: b1048593 addi a1,s1,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc0361a: 000809b7 lui s3,0x80 + 3bc0361e: f04a sd s2,32(sp) + 3bc03620: 95a2 add a1,a1,s0 + 3bc03622: 892a mv s2,a0 + 3bc03624: 00898513 addi a0,s3,8 # 80008 <__BSS_SIZE__+0x7a3f8> + 3bc03628: fc06 sd ra,56(sp) + 3bc0362a: 928fe0ef jal ra,3bc01752 + 3bc0362e: 26092503 lw a0,608(s2) + 3bc03632: b1448593 addi a1,s1,-1260 + 3bc03636: 95a2 add a1,a1,s0 + 3bc03638: 91afe0ef jal ra,3bc01752 + 3bc0363c: b0048593 addi a1,s1,-1280 + 3bc03640: 95a2 add a1,a1,s0 + 3bc03642: 852e mv a0,a1 + 3bc03644: e42e sd a1,8(sp) + 3bc03646: 906fe0ef jal ra,3bc0174c + 3bc0364a: 0005041b sext.w s0,a0 + 3bc0364e: c0000537 lui a0,0xc0000 + 3bc03652: 157d addi a0,a0,-1 + 3bc03654: 65a2 ld a1,8(sp) + 3bc03656: 8c69 and s0,s0,a0 + 3bc03658: 84000537 lui a0,0x84000 + 3bc0365c: 8c49 or s0,s0,a0 + 3bc0365e: 8522 mv a0,s0 + 3bc03660: 8f2fe0ef jal ra,3bc01752 + 3bc03664: 85a2 mv a1,s0 + 3bc03666: 7442 ld s0,48(sp) + 3bc03668: 26092603 lw a2,608(s2) + 3bc0366c: 70e2 ld ra,56(sp) + 3bc0366e: 74a2 ld s1,40(sp) + 3bc03670: 7902 ld s2,32(sp) + 3bc03672: 00898693 addi a3,s3,8 + 3bc03676: 69e2 ld s3,24(sp) + 3bc03678: 00089537 lui a0,0x89 + 3bc0367c: 4701 li a4,0 + 3bc0367e: 88850513 addi a0,a0,-1912 # 88888 <__BSS_SIZE__+0x82c78> + 3bc03682: 6121 addi sp,sp,64 + 3bc03684: a4aff06f j 3bc028ce + +000000003bc03688 : + 3bc03688: 7179 addi sp,sp,-48 + 3bc0368a: f022 sd s0,32(sp) + 3bc0368c: 26853403 ld s0,616(a0) + 3bc03690: ec26 sd s1,24(sp) + 3bc03692: e84a sd s2,16(sp) + 3bc03694: 6485 lui s1,0x1 + 3bc03696: 892a mv s2,a0 + 3bc03698: 26052503 lw a0,608(a0) + 3bc0369c: 91448593 addi a1,s1,-1772 # 914 <__BSS_SIZE__-0x52fc> + 3bc036a0: 95a2 add a1,a1,s0 + 3bc036a2: f406 sd ra,40(sp) + 3bc036a4: 8aefe0ef jal ra,3bc01752 + 3bc036a8: 91048593 addi a1,s1,-1776 + 3bc036ac: 95a2 add a1,a1,s0 + 3bc036ae: 00080537 lui a0,0x80 + 3bc036b2: 8a0fe0ef jal ra,3bc01752 + 3bc036b6: 90048593 addi a1,s1,-1792 + 3bc036ba: 95a2 add a1,a1,s0 + 3bc036bc: 852e mv a0,a1 + 3bc036be: e42e sd a1,8(sp) + 3bc036c0: 88cfe0ef jal ra,3bc0174c + 3bc036c4: 0005041b sext.w s0,a0 + 3bc036c8: c0000537 lui a0,0xc0000 + 3bc036cc: 157d addi a0,a0,-1 + 3bc036ce: 65a2 ld a1,8(sp) + 3bc036d0: 8c69 and s0,s0,a0 + 3bc036d2: 84000537 lui a0,0x84000 + 3bc036d6: 8c49 or s0,s0,a0 + 3bc036d8: 8522 mv a0,s0 + 3bc036da: 878fe0ef jal ra,3bc01752 + 3bc036de: 479d li a5,7 + 3bc036e0: 85a2 mv a1,s0 + 3bc036e2: 7402 ld s0,32(sp) + 3bc036e4: 26092603 lw a2,608(s2) + 3bc036e8: 70a2 ld ra,40(sp) + 3bc036ea: 64e2 ld s1,24(sp) + 3bc036ec: 04f92423 sw a5,72(s2) + 3bc036f0: 6942 ld s2,16(sp) + 3bc036f2: 000ab537 lui a0,0xab + 3bc036f6: 4701 li a4,0 + 3bc036f8: 000806b7 lui a3,0x80 + 3bc036fc: aaa50513 addi a0,a0,-1366 # aaaaa <__BSS_SIZE__+0xa4e9a> + 3bc03700: 6145 addi sp,sp,48 + 3bc03702: 9ccff06f j 3bc028ce + +000000003bc03706 : + 3bc03706: 1101 addi sp,sp,-32 + 3bc03708: e822 sd s0,16(sp) + 3bc0370a: e426 sd s1,8(sp) + 3bc0370c: 26853403 ld s0,616(a0) + 3bc03710: 84aa mv s1,a0 + 3bc03712: 00087537 lui a0,0x87 + 3bc03716: 08750513 addi a0,a0,135 # 87087 <__BSS_SIZE__+0x81477> + 3bc0371a: 4701 li a4,0 + 3bc0371c: 4681 li a3,0 + 3bc0371e: 4601 li a2,0 + 3bc03720: e04a sd s2,0(sp) + 3bc03722: ec06 sd ra,24(sp) + 3bc03724: 892e mv s2,a1 + 3bc03726: 9a8ff0ef jal ra,3bc028ce + 3bc0372a: 6505 lui a0,0x1 + 3bc0372c: 02090b63 beqz s2,3bc03762 + 3bc03730: 90050513 addi a0,a0,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc03734: 9522 add a0,a0,s0 + 3bc03736: 816fe0ef jal ra,3bc0174c + 3bc0373a: 2501 sext.w a0,a0 + 3bc0373c: 002007b7 lui a5,0x200 + 3bc03740: 8d5d or a0,a0,a5 + 3bc03742: 6585 lui a1,0x1 + 3bc03744: 02090263 beqz s2,3bc03768 + 3bc03748: 90058593 addi a1,a1,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc0374c: 95a2 add a1,a1,s0 + 3bc0374e: 804fe0ef jal ra,3bc01752 + 3bc03752: 60e2 ld ra,24(sp) + 3bc03754: 6442 ld s0,16(sp) + 3bc03756: 0404a423 sw zero,72(s1) + 3bc0375a: 6902 ld s2,0(sp) + 3bc0375c: 64a2 ld s1,8(sp) + 3bc0375e: 6105 addi sp,sp,32 + 3bc03760: 8082 ret + 3bc03762: b0050513 addi a0,a0,-1280 + 3bc03766: b7f9 j 3bc03734 + 3bc03768: b0058593 addi a1,a1,-1280 + 3bc0376c: b7c5 j 3bc0374c + +000000003bc0376e : + 3bc0376e: 7179 addi sp,sp,-48 + 3bc03770: 7d18 ld a4,56(a0) + 3bc03772: 5dd4 lw a3,60(a1) + 3bc03774: ec26 sd s1,24(sp) + 3bc03776: f406 sd ra,40(sp) + 3bc03778: f022 sd s0,32(sp) + 3bc0377a: e84a sd s2,16(sp) + 3bc0377c: 07154783 lbu a5,113(a0) + 3bc03780: 84aa mv s1,a0 + 3bc03782: 6988 ld a0,16(a1) + 3bc03784: 26873603 ld a2,616(a4) # 40000268 <__BL2_END__+0x43eca58> + 3bc03788: 7c06b70b extu a4,a3,31,0 + 3bc0378c: 953a add a0,a0,a4 + 3bc0378e: 4d98 lw a4,24(a1) + 3bc03790: 8bbd andi a5,a5,15 + 3bc03792: 6591 lui a1,0x4 + 3bc03794: 9f15 subw a4,a4,a3 + 3bc03796: e399 bnez a5,3bc0379c + 3bc03798: 0284d583 lhu a1,40(s1) + 3bc0379c: 0007069b sext.w a3,a4 + 3bc037a0: 00d5b6b3 sltu a3,a1,a3 + 3bc037a4: 0016c693 xori a3,a3,1 + 3bc037a8: 40d5970b mveqz a4,a1,a3 + 3bc037ac: d0b8 sw a4,96(s1) + 3bc037ae: f4a8 sd a0,104(s1) + 3bc037b0: 0007091b sext.w s2,a4 + 3bc037b4: 4405 li s0,1 + 3bc037b6: cb91 beqz a5,3bc037ca + 3bc037b8: 00090963 beqz s2,3bc037ca + 3bc037bc: 0284d683 lhu a3,40(s1) + 3bc037c0: fff9041b addiw s0,s2,-1 + 3bc037c4: 02d4543b divuw s0,s0,a3 + 3bc037c8: 2405 addiw s0,s0,1 + 3bc037ca: 05878793 addi a5,a5,88 # 200058 <__BSS_SIZE__+0x1fa448> + 3bc037ce: 0796 slli a5,a5,0x5 + 3bc037d0: 00f605b3 add a1,a2,a5 + 3bc037d4: 852e mv a0,a1 + 3bc037d6: e42e sd a1,8(sp) + 3bc037d8: f75fd0ef jal ra,3bc0174c + 3bc037dc: 54b0 lw a2,104(s1) + 3bc037de: 840004b7 lui s1,0x84000 + 3bc037e2: 65a2 ld a1,8(sp) + 3bc037e4: 8cc9 or s1,s1,a0 + 3bc037e6: 2481 sext.w s1,s1 + 3bc037e8: 8526 mv a0,s1 + 3bc037ea: 0134141b slliw s0,s0,0x13 + 3bc037ee: e032 sd a2,0(sp) + 3bc037f0: 00896433 or s0,s2,s0 + 3bc037f4: f5ffd0ef jal ra,3bc01752 + 3bc037f8: 0004069b sext.w a3,s0 + 3bc037fc: 7402 ld s0,32(sp) + 3bc037fe: 6602 ld a2,0(sp) + 3bc03800: 70a2 ld ra,40(sp) + 3bc03802: 6942 ld s2,16(sp) + 3bc03804: 85a6 mv a1,s1 + 3bc03806: 64e2 ld s1,24(sp) + 3bc03808: 00077537 lui a0,0x77 + 3bc0380c: 4701 li a4,0 + 3bc0380e: 77750513 addi a0,a0,1911 # 77777 <__BSS_SIZE__+0x71b67> + 3bc03812: 6145 addi sp,sp,48 + 3bc03814: 8baff06f j 3bc028ce + +000000003bc03818 : + 3bc03818: 715d addi sp,sp,-80 + 3bc0381a: ec56 sd s5,24(sp) + 3bc0381c: 8aae mv s5,a1 + 3bc0381e: fc26 sd s1,56(sp) + 3bc03820: 4581 li a1,0 + 3bc03822: 84aa mv s1,a0 + 3bc03824: 8556 mv a0,s5 + 3bc03826: e0a2 sd s0,64(sp) + 3bc03828: f84a sd s2,48(sp) + 3bc0382a: f44e sd s3,40(sp) + 3bc0382c: f052 sd s4,32(sp) + 3bc0382e: e486 sd ra,72(sp) + 3bc03830: addff0ef jal ra,3bc0330c + 3bc03834: 0005079b sext.w a5,a0 + 3bc03838: 00779a13 slli s4,a5,0x7 + 3bc0383c: 014487b3 add a5,s1,s4 + 3bc03840: 00751413 slli s0,a0,0x7 + 3bc03844: 0987b903 ld s2,152(a5) + 3bc03848: 09840993 addi s3,s0,152 + 3bc0384c: 99a6 add s3,s3,s1 + 3bc0384e: 09298563 beq s3,s2,3bc038d8 + 3bc03852: 6505 lui a0,0x1 + 3bc03854: b1050513 addi a0,a0,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc03858: 005a9793 slli a5,s5,0x5 + 3bc0385c: 97aa add a5,a5,a0 + 3bc0385e: 2684b503 ld a0,616(s1) # ffffffff84000268 <__BL2_END__+0xffffffff483eca58> + 3bc03862: fc090593 addi a1,s2,-64 + 3bc03866: e42e sd a1,8(sp) + 3bc03868: 953e add a0,a0,a5 + 3bc0386a: ee3fd0ef jal ra,3bc0174c + 3bc0386e: 0005071b sext.w a4,a0 + 3bc03872: 65a2 ld a1,8(sp) + 3bc03874: 07f77693 andi a3,a4,127 + 3bc03878: 000a8463 beqz s5,3bc03880 + 3bc0387c: fe092683 lw a3,-32(s2) + 3bc03880: 01448833 add a6,s1,s4 + 3bc03884: 0b082703 lw a4,176(a6) + 3bc03888: ffc92883 lw a7,-4(s2) + 3bc0388c: fd892603 lw a2,-40(s2) + 3bc03890: 40d7033b subw t1,a4,a3 + 3bc03894: 05040513 addi a0,s0,80 + 3bc03898: 411607bb subw a5,a2,a7 + 3bc0389c: 86be mv a3,a5 + 3bc0389e: 00f337b3 sltu a5,t1,a5 + 3bc038a2: 0017c793 xori a5,a5,1 + 3bc038a6: 40f3168b mveqz a3,t1,a5 + 3bc038aa: 011687bb addw a5,a3,a7 + 3bc038ae: 07885683 lhu a3,120(a6) + 3bc038b2: fef92e23 sw a5,-4(s2) + 3bc038b6: 9526 add a0,a0,s1 + 3bc038b8: 02d3773b remuw a4,t1,a3 + 3bc038bc: e319 bnez a4,3bc038c2 + 3bc038be: 04f61263 bne a2,a5,3bc03902 + 3bc038c2: 020a9463 bnez s5,3bc038ea + 3bc038c6: 44b8 lw a4,72(s1) + 3bc038c8: 4791 li a5,4 + 3bc038ca: 02f71063 bne a4,a5,3bc038ea + 3bc038ce: 8526 mv a0,s1 + 3bc038d0: db9ff0ef jal ra,3bc03688 + 3bc038d4: 479d li a5,7 + 3bc038d6: c4bc sw a5,72(s1) + 3bc038d8: 60a6 ld ra,72(sp) + 3bc038da: 6406 ld s0,64(sp) + 3bc038dc: 74e2 ld s1,56(sp) + 3bc038de: 7942 ld s2,48(sp) + 3bc038e0: 79a2 ld s3,40(sp) + 3bc038e2: 7a02 ld s4,32(sp) + 3bc038e4: 6ae2 ld s5,24(sp) + 3bc038e6: 6161 addi sp,sp,80 + 3bc038e8: 8082 ret + 3bc038ea: 4601 li a2,0 + 3bc038ec: e42a sd a0,8(sp) + 3bc038ee: 832ff0ef jal ra,3bc02920 + 3bc038f2: 014487b3 add a5,s1,s4 + 3bc038f6: 6fcc ld a1,152(a5) + 3bc038f8: feb980e3 beq s3,a1,3bc038d8 + 3bc038fc: 6522 ld a0,8(sp) + 3bc038fe: fc058593 addi a1,a1,-64 # 3fc0 <__BSS_SIZE__-0x1c50> + 3bc03902: 6406 ld s0,64(sp) + 3bc03904: 60a6 ld ra,72(sp) + 3bc03906: 74e2 ld s1,56(sp) + 3bc03908: 7942 ld s2,48(sp) + 3bc0390a: 79a2 ld s3,40(sp) + 3bc0390c: 7a02 ld s4,32(sp) + 3bc0390e: 6ae2 ld s5,24(sp) + 3bc03910: 6161 addi sp,sp,80 + 3bc03912: bdb1 j 3bc0376e + +000000003bc03914 : + 3bc03914: 26853583 ld a1,616(a0) + 3bc03918: 6785 lui a5,0x1 + 3bc0391a: b1078793 addi a5,a5,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc0391e: 20080537 lui a0,0x20080 + 3bc03922: 95be add a1,a1,a5 + 3bc03924: 0521 addi a0,a0,8 + 3bc03926: e2dfd06f j 3bc01752 + +000000003bc0392a : + 3bc0392a: 7179 addi sp,sp,-48 + 3bc0392c: e84a sd s2,16(sp) + 3bc0392e: 26853903 ld s2,616(a0) # 20080268 + 3bc03932: 0585 addi a1,a1,1 + 3bc03934: f022 sd s0,32(sp) + 3bc03936: 05b2 slli a1,a1,0xc + 3bc03938: 0036841b addiw s0,a3,3 + 3bc0393c: ec26 sd s1,24(sp) + 3bc0393e: f406 sd ra,40(sp) + 3bc03940: 4024340b extu s0,s0,16,2 + 3bc03944: 992e add s2,s2,a1 + 3bc03946: 4481 li s1,0 + 3bc03948: 0004879b sext.w a5,s1 + 3bc0394c: 0087e863 bltu a5,s0,3bc0395c + 3bc03950: 70a2 ld ra,40(sp) + 3bc03952: 7402 ld s0,32(sp) + 3bc03954: 64e2 ld s1,24(sp) + 3bc03956: 6942 ld s2,16(sp) + 3bc03958: 6145 addi sp,sp,48 + 3bc0395a: 8082 ret + 3bc0395c: 4496450b lrw a0,a2,s1,2 + 3bc03960: 85ca mv a1,s2 + 3bc03962: e432 sd a2,8(sp) + 3bc03964: deffd0ef jal ra,3bc01752 + 3bc03968: 6622 ld a2,8(sp) + 3bc0396a: 0485 addi s1,s1,1 + 3bc0396c: bff1 j 3bc03948 + +000000003bc0396e : + 3bc0396e: 7d1c ld a5,56(a0) + 3bc03970: 7119 addi sp,sp,-128 + 3bc03972: f8a2 sd s0,112(sp) + 3bc03974: f862 sd s8,48(sp) + 3bc03976: f466 sd s9,40(sp) + 3bc03978: f06a sd s10,32(sp) + 3bc0397a: 2687bc83 ld s9,616(a5) + 3bc0397e: fc86 sd ra,120(sp) + 3bc03980: 5ddc lw a5,60(a1) + 3bc03982: f4a6 sd s1,104(sp) + 3bc03984: f0ca sd s2,96(sp) + 3bc03986: ecce sd s3,88(sp) + 3bc03988: e8d2 sd s4,80(sp) + 3bc0398a: e4d6 sd s5,72(sp) + 3bc0398c: e0da sd s6,64(sp) + 3bc0398e: fc5e sd s7,56(sp) + 3bc03990: ec6e sd s11,24(sp) + 3bc03992: 07154903 lbu s2,113(a0) + 3bc03996: 6998 ld a4,16(a1) + 3bc03998: 4d80 lw s0,24(a1) + 3bc0399a: 7c07b60b extu a2,a5,31,0 + 3bc0399e: 00f97d13 andi s10,s2,15 + 3bc039a2: 963a add a2,a2,a4 + 3bc039a4: 40f4073b subw a4,s0,a5 + 3bc039a8: 6791 lui a5,0x4 + 3bc039aa: 8c2a mv s8,a0 + 3bc039ac: 896a mv s2,s10 + 3bc039ae: 6411 lui s0,0x4 + 3bc039b0: 00e7e363 bltu a5,a4,3bc039b6 + 3bc039b4: 843a mv s0,a4 + 3bc039b6: 000d1d63 bnez s10,3bc039d0 + 3bc039ba: 028c5783 lhu a5,40(s8) + 3bc039be: 873e mv a4,a5 + 3bc039c0: 00f437b3 sltu a5,s0,a5 + 3bc039c4: 0017c793 xori a5,a5,1 + 3bc039c8: 40f4170b mveqz a4,s0,a5 + 3bc039cc: 0007041b sext.w s0,a4 + 3bc039d0: 0004099b sext.w s3,s0 + 3bc039d4: 073c2023 sw s3,96(s8) + 3bc039d8: 06cc3423 sd a2,104(s8) + 3bc039dc: 00060a1b sext.w s4,a2 + 3bc039e0: 4785 li a5,1 + 3bc039e2: c801 beqz s0,3bc039f2 + 3bc039e4: 028c5503 lhu a0,40(s8) + 3bc039e8: fff4079b addiw a5,s0,-1 + 3bc039ec: 02a7d7bb divuw a5,a5,a0 + 3bc039f0: 2785 addiw a5,a5,1 + 3bc039f2: 6d85 lui s11,0x1 + 3bc039f4: 005d1b13 slli s6,s10,0x5 + 3bc039f8: 910d8a93 addi s5,s11,-1776 # 910 <__BSS_SIZE__-0x5300> + 3bc039fc: 0137979b slliw a5,a5,0x13 + 3bc03a00: 9ada add s5,s5,s6 + 3bc03a02: 00f46533 or a0,s0,a5 + 3bc03a06: 9ae6 add s5,s5,s9 + 3bc03a08: 85d6 mv a1,s5 + 3bc03a0a: 2501 sext.w a0,a0 + 3bc03a0c: e432 sd a2,8(sp) + 3bc03a0e: d45fd0ef jal ra,3bc01752 + 3bc03a12: 900d8793 addi a5,s11,-1792 + 3bc03a16: 9b3e add s6,s6,a5 + 3bc03a18: 9b66 add s6,s6,s9 + 3bc03a1a: 855a mv a0,s6 + 3bc03a1c: d31fd0ef jal ra,3bc0174c + 3bc03a20: 078c2783 lw a5,120(s8) + 3bc03a24: bc4004b7 lui s1,0xbc400 + 3bc03a28: 00050b9b sext.w s7,a0 + 3bc03a2c: 14fd addi s1,s1,-1 + 3bc03a2e: 0167979b slliw a5,a5,0x16 + 3bc03a32: 009bf4b3 and s1,s7,s1 + 3bc03a36: 8cdd or s1,s1,a5 + 3bc03a38: 77e1 lui a5,0xffff8 + 3bc03a3a: 7ff78793 addi a5,a5,2047 # ffffffffffff87ff <__BL2_END__+0xffffffffc43e4fef> + 3bc03a3e: 2481 sext.w s1,s1 + 3bc03a40: 8cfd and s1,s1,a5 + 3bc03a42: 840007b7 lui a5,0x84000 + 3bc03a46: 8cdd or s1,s1,a5 + 3bc03a48: 85da mv a1,s6 + 3bc03a4a: 8526 mv a0,s1 + 3bc03a4c: d07fd0ef jal ra,3bc01752 + 3bc03a50: 6622 ld a2,8(sp) + 3bc03a52: 038c3503 ld a0,56(s8) + 3bc03a56: 3c04368b extu a3,s0,15,0 + 3bc03a5a: 85ea mv a1,s10 + 3bc03a5c: ecfff0ef jal ra,3bc0392a + 3bc03a60: c809 beqz s0,3bc03a72 + 3bc03a62: 834d8593 addi a1,s11,-1996 + 3bc03a66: 4505 li a0,1 + 3bc03a68: 95e6 add a1,a1,s9 + 3bc03a6a: 0125153b sllw a0,a0,s2 + 3bc03a6e: ce5fd0ef jal ra,3bc01752 + 3bc03a72: 855a mv a0,s6 + 3bc03a74: cd9fd0ef jal ra,3bc0174c + 3bc03a78: 0005071b sext.w a4,a0 + 3bc03a7c: 00044537 lui a0,0x44 + 3bc03a80: 86de mv a3,s7 + 3bc03a82: 8652 mv a2,s4 + 3bc03a84: 85a6 mv a1,s1 + 3bc03a86: 44450513 addi a0,a0,1092 # 44444 <__BSS_SIZE__+0x3e834> + 3bc03a8a: e45fe0ef jal ra,3bc028ce + 3bc03a8e: 8556 mv a0,s5 + 3bc03a90: cbdfd0ef jal ra,3bc0174c + 3bc03a94: 0005059b sext.w a1,a0 + 3bc03a98: 00046537 lui a0,0x46 + 3bc03a9c: 86ca mv a3,s2 + 3bc03a9e: 8622 mv a2,s0 + 3bc03aa0: 46450513 addi a0,a0,1124 # 46464 <__BSS_SIZE__+0x40854> + 3bc03aa4: 4701 li a4,0 + 3bc03aa6: e29fe0ef jal ra,3bc028ce + 3bc03aaa: 70e6 ld ra,120(sp) + 3bc03aac: 7446 ld s0,112(sp) + 3bc03aae: 74a6 ld s1,104(sp) + 3bc03ab0: 7906 ld s2,96(sp) + 3bc03ab2: 6a46 ld s4,80(sp) + 3bc03ab4: 6aa6 ld s5,72(sp) + 3bc03ab6: 6b06 ld s6,64(sp) + 3bc03ab8: 7be2 ld s7,56(sp) + 3bc03aba: 7c42 ld s8,48(sp) + 3bc03abc: 7ca2 ld s9,40(sp) + 3bc03abe: 7d02 ld s10,32(sp) + 3bc03ac0: 6de2 ld s11,24(sp) + 3bc03ac2: 854e mv a0,s3 + 3bc03ac4: 69e6 ld s3,88(sp) + 3bc03ac6: 6109 addi sp,sp,128 + 3bc03ac8: 8082 ret + +000000003bc03aca : + 3bc03aca: 7179 addi sp,sp,-48 + 3bc03acc: e84a sd s2,16(sp) + 3bc03ace: 26853903 ld s2,616(a0) + 3bc03ad2: 0585 addi a1,a1,1 + 3bc03ad4: f022 sd s0,32(sp) + 3bc03ad6: 05b2 slli a1,a1,0xc + 3bc03ad8: 0036841b addiw s0,a3,3 + 3bc03adc: ec26 sd s1,24(sp) + 3bc03ade: f406 sd ra,40(sp) + 3bc03ae0: 4024340b extu s0,s0,16,2 + 3bc03ae4: 992e add s2,s2,a1 + 3bc03ae6: 4481 li s1,0 + 3bc03ae8: 0004879b sext.w a5,s1 + 3bc03aec: 0087e863 bltu a5,s0,3bc03afc + 3bc03af0: 70a2 ld ra,40(sp) + 3bc03af2: 7402 ld s0,32(sp) + 3bc03af4: 64e2 ld s1,24(sp) + 3bc03af6: 6942 ld s2,16(sp) + 3bc03af8: 6145 addi sp,sp,48 + 3bc03afa: 8082 ret + 3bc03afc: 854a mv a0,s2 + 3bc03afe: e432 sd a2,8(sp) + 3bc03b00: c4dfd0ef jal ra,3bc0174c + 3bc03b04: 6622 ld a2,8(sp) + 3bc03b06: 4496550b srw a0,a2,s1,2 + 3bc03b0a: 0485 addi s1,s1,1 + 3bc03b0c: bff1 j 3bc03ae8 + +000000003bc03b0e : + 3bc03b0e: 7179 addi sp,sp,-48 + 3bc03b10: e44e sd s3,8(sp) + 3bc03b12: 02855983 lhu s3,40(a0) + 3bc03b16: f022 sd s0,32(sp) + 3bc03b18: ec26 sd s1,24(sp) + 3bc03b1a: f406 sd ra,40(sp) + 3bc03b1c: e84a sd s2,16(sp) + 3bc03b1e: 84aa mv s1,a0 + 3bc03b20: 842e mv s0,a1 + 3bc03b22: e4dff0ef jal ra,3bc0396e + 3bc03b26: 2501 sext.w a0,a0 + 3bc03b28: 00a99e63 bne s3,a0,3bc03b44 + 3bc03b2c: 5c5c lw a5,60(s0) + 3bc03b2e: 4c18 lw a4,24(s0) + 3bc03b30: 4501 li a0,0 + 3bc03b32: 013787bb addw a5,a5,s3 + 3bc03b36: 00f71b63 bne a4,a5,3bc03b4c + 3bc03b3a: 505c lw a5,36(s0) + 3bc03b3c: 02e79713 slli a4,a5,0x2e + 3bc03b40: 00074663 bltz a4,3bc03b4c + 3bc03b44: 7c9c ld a5,56(s1) + 3bc03b46: 4505 li a0,1 + 3bc03b48: 0407a423 sw zero,72(a5) # ffffffff84000048 <__BL2_END__+0xffffffff483ec838> + 3bc03b4c: 70a2 ld ra,40(sp) + 3bc03b4e: 7402 ld s0,32(sp) + 3bc03b50: 64e2 ld s1,24(sp) + 3bc03b52: 6942 ld s2,16(sp) + 3bc03b54: 69a2 ld s3,8(sp) + 3bc03b56: 6145 addi sp,sp,48 + 3bc03b58: 8082 ret + +000000003bc03b5a : + 3bc03b5a: 7179 addi sp,sp,-48 + 3bc03b5c: ec26 sd s1,24(sp) + 3bc03b5e: 84ae mv s1,a1 + 3bc03b60: 26853583 ld a1,616(a0) + 3bc03b64: 6785 lui a5,0x1 + 3bc03b66: 80078793 addi a5,a5,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc03b6a: 95be add a1,a1,a5 + 3bc03b6c: f022 sd s0,32(sp) + 3bc03b6e: 842a mv s0,a0 + 3bc03b70: 852e mv a0,a1 + 3bc03b72: f406 sd ra,40(sp) + 3bc03b74: e42e sd a1,8(sp) + 3bc03b76: bd7fd0ef jal ra,3bc0174c + 3bc03b7a: 0044979b slliw a5,s1,0x4 + 3bc03b7e: 65a2 ld a1,8(sp) + 3bc03b80: 8d5d or a0,a0,a5 + 3bc03b82: 2501 sext.w a0,a0 + 3bc03b84: bcffd0ef jal ra,3bc01752 + 3bc03b88: 8522 mv a0,s0 + 3bc03b8a: affff0ef jal ra,3bc03688 + 3bc03b8e: 4785 li a5,1 + 3bc03b90: 24940823 sb s1,592(s0) # 4250 <__BSS_SIZE__-0x19c0> + 3bc03b94: 70a2 ld ra,40(sp) + 3bc03b96: 26f42823 sw a5,624(s0) + 3bc03b9a: 7402 ld s0,32(sp) + 3bc03b9c: 64e2 ld s1,24(sp) + 3bc03b9e: 6145 addi sp,sp,48 + 3bc03ba0: 8082 ret + +000000003bc03ba2 : + 3bc03ba2: 6d4c ld a1,152(a0) + 3bc03ba4: 09850693 addi a3,a0,152 + 3bc03ba8: 05050713 addi a4,a0,80 + 3bc03bac: 00d58e63 beq a1,a3,3bc03bc8 + 3bc03bb0: fd85a683 lw a3,-40(a1) + 3bc03bb4: e689 bnez a3,3bc03bbe + 3bc03bb6: 0a052823 sw zero,176(a0) + 3bc03bba: acfff06f j 3bc03688 + 3bc03bbe: fc058593 addi a1,a1,-64 + 3bc03bc2: 853a mv a0,a4 + 3bc03bc4: babff06f j 3bc0376e + 3bc03bc8: 8082 ret + +000000003bc03bca : + 3bc03bca: 6d4c ld a1,152(a0) + 3bc03bcc: 09850693 addi a3,a0,152 + 3bc03bd0: 02d58b63 beq a1,a3,3bc03c06 + 3bc03bd4: 1141 addi sp,sp,-16 + 3bc03bd6: e022 sd s0,0(sp) + 3bc03bd8: e406 sd ra,8(sp) + 3bc03bda: fc058593 addi a1,a1,-64 + 3bc03bde: 842a mv s0,a0 + 3bc03be0: 05050713 addi a4,a0,80 + 3bc03be4: 4501 li a0,0 + 3bc03be6: c989 beqz a1,3bc03bf8 + 3bc03be8: 853a mv a0,a4 + 3bc03bea: f25ff0ef jal ra,3bc03b0e + 3bc03bee: 4785 li a5,1 + 3bc03bf0: 00f51863 bne a0,a5,3bc03c00 + 3bc03bf4: 4795 li a5,5 + 3bc03bf6: c43c sw a5,72(s0) + 3bc03bf8: 60a2 ld ra,8(sp) + 3bc03bfa: 6402 ld s0,0(sp) + 3bc03bfc: 0141 addi sp,sp,16 + 3bc03bfe: 8082 ret + 3bc03c00: c43c sw a5,72(s0) + 3bc03c02: 4505 li a0,1 + 3bc03c04: bfd5 j 3bc03bf8 + 3bc03c06: 4501 li a0,0 + 3bc03c08: 8082 ret + +000000003bc03c0a : + 3bc03c0a: 1101 addi sp,sp,-32 + 3bc03c0c: ec06 sd ra,24(sp) + 3bc03c0e: 07154703 lbu a4,113(a0) + 3bc03c12: 7d1c ld a5,56(a0) + 3bc03c14: fc77368b extu a3,a4,63,7 + 3bc03c18: 2687b583 ld a1,616(a5) + 3bc03c1c: 00f77793 andi a5,a4,15 + 3bc03c20: c295 beqz a3,3bc03c44 + 3bc03c22: 04878793 addi a5,a5,72 + 3bc03c26: 0796 slli a5,a5,0x5 + 3bc03c28: 95be add a1,a1,a5 + 3bc03c2a: 852e mv a0,a1 + 3bc03c2c: e42e sd a1,8(sp) + 3bc03c2e: b1ffd0ef jal ra,3bc0174c + 3bc03c32: 65a2 ld a1,8(sp) + 3bc03c34: 60e2 ld ra,24(sp) + 3bc03c36: 080007b7 lui a5,0x8000 + 3bc03c3a: 8d5d or a0,a0,a5 + 3bc03c3c: 2501 sext.w a0,a0 + 3bc03c3e: 6105 addi sp,sp,32 + 3bc03c40: b13fd06f j 3bc01752 + 3bc03c44: 05878793 addi a5,a5,88 # 8000058 + 3bc03c48: bff9 j 3bc03c26 + +000000003bc03c4a : + 3bc03c4a: 07154703 lbu a4,113(a0) + 3bc03c4e: cd21 beqz a0,3bc03ca6 + 3bc03c50: 6134 ld a3,64(a0) + 3bc03c52: 87aa mv a5,a0 + 3bc03c54: caa9 beqz a3,3bc03ca6 + 3bc03c56: 00f77613 andi a2,a4,15 + 3bc03c5a: c631 beqz a2,3bc03ca6 + 3bc03c5c: 0036c603 lbu a2,3(a3) # 80003 <__BSS_SIZE__+0x7a3f3> + 3bc03c60: 4685 li a3,1 + 3bc03c62: 04d60263 beq a2,a3,3bc03ca6 + 3bc03c66: 1101 addi sp,sp,-32 + 3bc03c68: ec06 sd ra,24(sp) + 3bc03c6a: cd99 beqz a1,3bc03c88 + 3bc03c6c: fc77368b extu a3,a4,63,7 + 3bc03c70: c29d beqz a3,3bc03c96 + 3bc03c72: 6534 ld a3,72(a0) + 3bc03c74: 04850713 addi a4,a0,72 + 3bc03c78: fdd00593 li a1,-35 + 3bc03c7c: 00e68d63 beq a3,a4,3bc03c96 + 3bc03c80: 60e2 ld ra,24(sp) + 3bc03c82: 852e mv a0,a1 + 3bc03c84: 6105 addi sp,sp,32 + 3bc03c86: 8082 ret + 3bc03c88: 06050823 sb zero,112(a0) + 3bc03c8c: e42e sd a1,8(sp) + 3bc03c8e: 8bbff0ef jal ra,3bc03548 + 3bc03c92: 65a2 ld a1,8(sp) + 3bc03c94: b7f5 j 3bc03c80 + 3bc03c96: 4705 li a4,1 + 3bc03c98: 06e78823 sb a4,112(a5) + 3bc03c9c: 853e mv a0,a5 + 3bc03c9e: 909ff0ef jal ra,3bc035a6 + 3bc03ca2: 4581 li a1,0 + 3bc03ca4: bff1 j 3bc03c80 + 3bc03ca6: 55a9 li a1,-22 + 3bc03ca8: 852e mv a0,a1 + 3bc03caa: 8082 ret + +000000003bc03cac : + 3bc03cac: 7d1c ld a5,56(a0) + 3bc03cae: 7179 addi sp,sp,-48 + 3bc03cb0: f022 sd s0,32(sp) + 3bc03cb2: ec26 sd s1,24(sp) + 3bc03cb4: e84a sd s2,16(sp) + 3bc03cb6: e44e sd s3,8(sp) + 3bc03cb8: f406 sd ra,40(sp) + 3bc03cba: 2687b483 ld s1,616(a5) + 3bc03cbe: 07154783 lbu a5,113(a0) + 3bc03cc2: 4905 li s2,1 + 3bc03cc4: 89aa mv s3,a0 + 3bc03cc6: 00f7f413 andi s0,a5,15 + 3bc03cca: fc77b70b extu a4,a5,63,7 + 3bc03cce: 0089193b sllw s2,s2,s0 + 3bc03cd2: cf25 beqz a4,3bc03d4a + 3bc03cd4: 04840513 addi a0,s0,72 + 3bc03cd8: 0516 slli a0,a0,0x5 + 3bc03cda: 9526 add a0,a0,s1 + 3bc03cdc: a71fd0ef jal ra,3bc0174c + 3bc03ce0: 2501 sext.w a0,a0 + 3bc03ce2: 3cf5378b extu a5,a0,15,15 + 3bc03ce6: ef9d bnez a5,3bc03d24 + 3bc03ce8: fff407b7 lui a5,0xfff40 + 3bc03cec: 17fd addi a5,a5,-1 + 3bc03cee: 8d7d and a0,a0,a5 + 3bc03cf0: 0729c783 lbu a5,114(s3) + 3bc03cf4: 04840593 addi a1,s0,72 + 3bc03cf8: 0127979b slliw a5,a5,0x12 + 3bc03cfc: 8d5d or a0,a0,a5 + 3bc03cfe: 0289d783 lhu a5,40(s3) + 3bc03d02: 80057513 andi a0,a0,-2048 + 3bc03d06: 8d5d or a0,a0,a5 + 3bc03d08: 180087b7 lui a5,0x18008 + 3bc03d0c: 8d5d or a0,a0,a5 + 3bc03d0e: 07198783 lb a5,113(s3) + 3bc03d12: 2501 sext.w a0,a0 + 3bc03d14: 0007c463 bltz a5,3bc03d1c + 3bc03d18: 05840593 addi a1,s0,88 + 3bc03d1c: 0596 slli a1,a1,0x5 + 3bc03d1e: 95a6 add a1,a1,s1 + 3bc03d20: a33fd0ef jal ra,3bc01752 + 3bc03d24: 6585 lui a1,0x1 + 3bc03d26: 81c58593 addi a1,a1,-2020 # 81c <__BSS_SIZE__-0x53f4> + 3bc03d2a: 94ae add s1,s1,a1 + 3bc03d2c: 8526 mv a0,s1 + 3bc03d2e: a1ffd0ef jal ra,3bc0174c + 3bc03d32: 2501 sext.w a0,a0 + 3bc03d34: 7402 ld s0,32(sp) + 3bc03d36: 70a2 ld ra,40(sp) + 3bc03d38: 69a2 ld s3,8(sp) + 3bc03d3a: 85a6 mv a1,s1 + 3bc03d3c: 01256533 or a0,a0,s2 + 3bc03d40: 64e2 ld s1,24(sp) + 3bc03d42: 6942 ld s2,16(sp) + 3bc03d44: 6145 addi sp,sp,48 + 3bc03d46: a0dfd06f j 3bc01752 + 3bc03d4a: 05840513 addi a0,s0,88 + 3bc03d4e: 0516 slli a0,a0,0x5 + 3bc03d50: 9526 add a0,a0,s1 + 3bc03d52: 9fbfd0ef jal ra,3bc0174c + 3bc03d56: 2501 sext.w a0,a0 + 3bc03d58: 0109191b slliw s2,s2,0x10 + 3bc03d5c: b759 j 3bc03ce2 + +000000003bc03d5e : + 3bc03d5e: 453c lw a5,72(a0) + 3bc03d60: 34079163 bnez a5,3bc040a2 + 3bc03d64: 7139 addi sp,sp,-64 + 3bc03d66: f426 sd s1,40(sp) + 3bc03d68: 25853483 ld s1,600(a0) + 3bc03d6c: f822 sd s0,48(sp) + 3bc03d6e: fa400593 li a1,-92 + 3bc03d72: 842a mv s0,a0 + 3bc03d74: 05050513 addi a0,a0,80 + 3bc03d78: ec4e sd s3,24(sp) + 3bc03d7a: fc06 sd ra,56(sp) + 3bc03d7c: f04a sd s2,32(sp) + 3bc03d7e: e852 sd s4,16(sp) + 3bc03d80: c35fe0ef jal ra,3bc029b4 + 3bc03d84: 0004c783 lbu a5,0(s1) # ffffffffbc400000 <__BL2_END__+0xffffffff807ec7f0> + 3bc03d88: 0c144703 lbu a4,193(s0) + 3bc03d8c: 0064d983 lhu s3,6(s1) + 3bc03d90: fc77b60b extu a2,a5,63,7 + 3bc03d94: 07f77693 andi a3,a4,127 + 3bc03d98: c609 beqz a2,3bc03da2 + 3bc03d9a: f8076713 ori a4,a4,-128 + 3bc03d9e: 0ff77693 andi a3,a4,255 + 3bc03da2: 0607f793 andi a5,a5,96 + 3bc03da6: 25144703 lbu a4,593(s0) + 3bc03daa: 0017b793 seqz a5,a5 + 3bc03dae: 0017979b slliw a5,a5,0x1 + 3bc03db2: 0017e793 ori a5,a5,1 + 3bc03db6: 8b8d andi a5,a5,3 + 3bc03db8: 9b71 andi a4,a4,-4 + 3bc03dba: 8fd9 or a5,a5,a4 + 3bc03dbc: 24f408a3 sb a5,593(s0) + 3bc03dc0: 0cd400a3 sb a3,193(s0) + 3bc03dc4: 8b89 andi a5,a5,2 + 3bc03dc6: 24078a63 beqz a5,3bc0401a + 3bc03dca: 0014c703 lbu a4,1(s1) + 3bc03dce: 47ad li a5,11 + 3bc03dd0: 2ae7e863 bltu a5,a4,3bc04080 + 3bc03dd4: 87ba mv a5,a4 + 3bc03dd6: 00007717 auipc a4,0x7 + 3bc03dda: 3f670713 addi a4,a4,1014 # 3bc0b1cc + 3bc03dde: 44f7478b lrw a5,a4,a5,2 + 3bc03de2: 97ba add a5,a5,a4 + 3bc03de4: 8782 jr a5 + 3bc03de6: 0024d603 lhu a2,2(s1) + 3bc03dea: 000bc537 lui a0,0xbc + 3bc03dee: 4701 li a4,0 + 3bc03df0: 4681 li a3,0 + 3bc03df2: 4585 li a1,1 + 3bc03df4: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03df8: ad7fe0ef jal ra,3bc028ce + 3bc03dfc: 0004c783 lbu a5,0(s1) + 3bc03e00: 20079d63 bnez a5,3bc0401a + 3bc03e04: 8522 mv a0,s0 + 3bc03e06: 7442 ld s0,48(sp) + 3bc03e08: 0024c583 lbu a1,2(s1) + 3bc03e0c: 70e2 ld ra,56(sp) + 3bc03e0e: 74a2 ld s1,40(sp) + 3bc03e10: 7902 ld s2,32(sp) + 3bc03e12: 69e2 ld s3,24(sp) + 3bc03e14: 6a42 ld s4,16(sp) + 3bc03e16: 6121 addi sp,sp,64 + 3bc03e18: d43ff06f j 3bc03b5a + 3bc03e1c: 0024d603 lhu a2,2(s1) + 3bc03e20: 4701 li a4,0 + 3bc03e22: 4681 li a3,0 + 3bc03e24: 4589 li a1,2 + 3bc03e26: 000bc537 lui a0,0xbc + 3bc03e2a: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03e2e: aa1fe0ef jal ra,3bc028ce + 3bc03e32: a2e5 j 3bc0401a + 3bc03e34: 4701 li a4,0 + 3bc03e36: 4681 li a3,0 + 3bc03e38: 4601 li a2,0 + 3bc03e3a: 458d li a1,3 + 3bc03e3c: b7ed j 3bc03e26 + 3bc03e3e: 4701 li a4,0 + 3bc03e40: 4681 li a3,0 + 3bc03e42: 4601 li a2,0 + 3bc03e44: 4591 li a1,4 + 3bc03e46: b7c5 j 3bc03e26 + 3bc03e48: 4701 li a4,0 + 3bc03e4a: 4681 li a3,0 + 3bc03e4c: 4601 li a2,0 + 3bc03e4e: 4595 li a1,5 + 3bc03e50: bfd9 j 3bc03e26 + 3bc03e52: 000bc537 lui a0,0xbc + 3bc03e56: 4701 li a4,0 + 3bc03e58: 4681 li a3,0 + 3bc03e5a: 4601 li a2,0 + 3bc03e5c: 4599 li a1,6 + 3bc03e5e: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03e62: a6dfe0ef jal ra,3bc028ce + 3bc03e66: 0044d503 lhu a0,4(s1) + 3bc03e6a: 1c75358b extu a1,a0,7,7 + 3bc03e6e: 07f57513 andi a0,a0,127 + 3bc03e72: c9aff0ef jal ra,3bc0330c + 3bc03e76: 00011723 sh zero,14(sp) + 3bc03e7a: 0004c583 lbu a1,0(s1) + 3bc03e7e: 892a mv s2,a0 + 3bc03e80: 00007517 auipc a0,0x7 + 3bc03e84: 33850513 addi a0,a0,824 # 3bc0b1b8 + 3bc03e88: 89bd andi a1,a1,15 + 3bc03e8a: 26843a03 ld s4,616(s0) + 3bc03e8e: ccafc0ef jal ra,3bc00358 + 3bc03e92: 0004c783 lbu a5,0(s1) + 3bc03e96: 4705 li a4,1 + 3bc03e98: 8bbd andi a5,a5,15 + 3bc03e9a: 00e78a63 beq a5,a4,3bc03eae + 3bc03e9e: 4689 li a3,2 + 3bc03ea0: 06d78b63 beq a5,a3,3bc03f16 + 3bc03ea4: 16079b63 bnez a5,3bc0401a + 3bc03ea8: 00e11723 sh a4,14(sp) + 3bc03eac: a019 j 3bc03eb2 + 3bc03eae: 00011723 sh zero,14(sp) + 3bc03eb2: 25843503 ld a0,600(s0) + 3bc03eb6: 4609 li a2,2 + 3bc03eb8: 00e10593 addi a1,sp,14 + 3bc03ebc: bbffc0ef jal ra,3bc00a7a + 3bc03ec0: 6485 lui s1,0x1 + 3bc03ec2: 26042503 lw a0,608(s0) + 3bc03ec6: 91448593 addi a1,s1,-1772 # 914 <__BSS_SIZE__-0x52fc> + 3bc03eca: 95d2 add a1,a1,s4 + 3bc03ecc: 887fd0ef jal ra,3bc01752 + 3bc03ed0: 91048593 addi a1,s1,-1776 + 3bc03ed4: 00080537 lui a0,0x80 + 3bc03ed8: 95d2 add a1,a1,s4 + 3bc03eda: 0509 addi a0,a0,2 + 3bc03edc: 90048493 addi s1,s1,-1792 + 3bc03ee0: 873fd0ef jal ra,3bc01752 + 3bc03ee4: 9a26 add s4,s4,s1 + 3bc03ee6: 8552 mv a0,s4 + 3bc03ee8: 865fd0ef jal ra,3bc0174c + 3bc03eec: c00007b7 lui a5,0xc0000 + 3bc03ef0: 17fd addi a5,a5,-1 + 3bc03ef2: 2501 sext.w a0,a0 + 3bc03ef4: 8d7d and a0,a0,a5 + 3bc03ef6: 840007b7 lui a5,0x84000 + 3bc03efa: 8d5d or a0,a0,a5 + 3bc03efc: 85d2 mv a1,s4 + 3bc03efe: 855fd0ef jal ra,3bc01752 + 3bc03f02: 47a1 li a5,8 + 3bc03f04: c43c sw a5,72(s0) + 3bc03f06: 70e2 ld ra,56(sp) + 3bc03f08: 7442 ld s0,48(sp) + 3bc03f0a: 74a2 ld s1,40(sp) + 3bc03f0c: 7902 ld s2,32(sp) + 3bc03f0e: 69e2 ld s3,24(sp) + 3bc03f10: 6a42 ld s4,16(sp) + 3bc03f12: 6121 addi sp,sp,64 + 3bc03f14: 8082 ret + 3bc03f16: 0064d703 lhu a4,6(s1) + 3bc03f1a: 10e7e063 bltu a5,a4,3bc0401a + 3bc03f1e: 2901 sext.w s2,s2 + 3bc03f20: 091e slli s2,s2,0x7 + 3bc03f22: 9922 add s2,s2,s0 + 3bc03f24: 0c094783 lbu a5,192(s2) + 3bc03f28: 00f11723 sh a5,14(sp) + 3bc03f2c: b759 j 3bc03eb2 + 3bc03f2e: 000bc537 lui a0,0xbc + 3bc03f32: 4701 li a4,0 + 3bc03f34: 4681 li a3,0 + 3bc03f36: 4601 li a2,0 + 3bc03f38: 459d li a1,7 + 3bc03f3a: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03f3e: 991fe0ef jal ra,3bc028ce + 3bc03f42: 0044d503 lhu a0,4(s1) + 3bc03f46: 1c75358b extu a1,a0,7,7 + 3bc03f4a: 07f57513 andi a0,a0,127 + 3bc03f4e: bbeff0ef jal ra,3bc0330c + 3bc03f52: 00751913 slli s2,a0,0x7 + 3bc03f56: 05090913 addi s2,s2,80 + 3bc03f5a: 9922 add s2,s2,s0 + 3bc03f5c: 03893a03 ld s4,56(s2) + 3bc03f60: 258a3703 ld a4,600(s4) + 3bc03f64: 00675783 lhu a5,6(a4) + 3bc03f68: ebcd bnez a5,3bc0401a + 3bc03f6a: 00074783 lbu a5,0(a4) + 3bc03f6e: 8bbd andi a5,a5,15 + 3bc03f70: c795 beqz a5,3bc03f9c + 3bc03f72: 4689 li a3,2 + 3bc03f74: f8d799e3 bne a5,a3,3bc03f06 + 3bc03f78: 00275783 lhu a5,2(a4) + 3bc03f7c: f7c9 bnez a5,3bc03f06 + 3bc03f7e: 07194403 lbu s0,113(s2) + 3bc03f82: 883d andi s0,s0,15 + 3bc03f84: e415 bnez s0,3bc03fb0 + 3bc03f86: 4585 li a1,1 + 3bc03f88: 8552 mv a0,s4 + 3bc03f8a: 7442 ld s0,48(sp) + 3bc03f8c: 70e2 ld ra,56(sp) + 3bc03f8e: 74a2 ld s1,40(sp) + 3bc03f90: 7902 ld s2,32(sp) + 3bc03f92: 69e2 ld s3,24(sp) + 3bc03f94: 6a42 ld s4,16(sp) + 3bc03f96: 6121 addi sp,sp,64 + 3bc03f98: f6eff06f j 3bc03706 + 3bc03f9c: 8552 mv a0,s4 + 3bc03f9e: 7442 ld s0,48(sp) + 3bc03fa0: 70e2 ld ra,56(sp) + 3bc03fa2: 74a2 ld s1,40(sp) + 3bc03fa4: 7902 ld s2,32(sp) + 3bc03fa6: 69e2 ld s3,24(sp) + 3bc03fa8: 6a42 ld s4,16(sp) + 3bc03faa: 6121 addi sp,sp,64 + 3bc03fac: edcff06f j 3bc03688 + 3bc03fb0: 8552 mv a0,s4 + 3bc03fb2: ed6ff0ef jal ra,3bc03688 + 3bc03fb6: 854a mv a0,s2 + 3bc03fb8: d90ff0ef jal ra,3bc03548 + 3bc03fbc: 854a mv a0,s2 + 3bc03fbe: cefff0ef jal ra,3bc03cac + 3bc03fc2: 4785 li a5,1 + 3bc03fc4: 06090823 sb zero,112(s2) + 3bc03fc8: 268a0a23 sb s0,628(s4) + 3bc03fcc: 26fa0aa3 sb a5,629(s4) + 3bc03fd0: bf1d j 3bc03f06 + 3bc03fd2: 000bc537 lui a0,0xbc + 3bc03fd6: 4701 li a4,0 + 3bc03fd8: 4681 li a3,0 + 3bc03fda: 4601 li a2,0 + 3bc03fdc: 45a1 li a1,8 + 3bc03fde: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03fe2: 8edfe0ef jal ra,3bc028ce + 3bc03fe6: 0044d503 lhu a0,4(s1) + 3bc03fea: 1c75358b extu a1,a0,7,7 + 3bc03fee: 07f57513 andi a0,a0,127 + 3bc03ff2: b1aff0ef jal ra,3bc0330c + 3bc03ff6: 051e slli a0,a0,0x7 + 3bc03ff8: 05050513 addi a0,a0,80 + 3bc03ffc: 9522 add a0,a0,s0 + 3bc03ffe: 03853903 ld s2,56(a0) + 3bc04002: 25893783 ld a5,600(s2) + 3bc04006: 0067d703 lhu a4,6(a5) # ffffffff84000006 <__BL2_END__+0xffffffff483ec7f6> + 3bc0400a: eb01 bnez a4,3bc0401a + 3bc0400c: 0007c703 lbu a4,0(a5) + 3bc04010: 8b3d andi a4,a4,15 + 3bc04012: cb15 beqz a4,3bc04046 + 3bc04014: 4689 li a3,2 + 3bc04016: 04d70563 beq a4,a3,3bc04060 + 3bc0401a: 7c1c ld a5,56(s0) + 3bc0401c: cfbd beqz a5,3bc0409a + 3bc0401e: 739c ld a5,32(a5) + 3bc04020: 85a6 mv a1,s1 + 3bc04022: 8522 mv a0,s0 + 3bc04024: 9782 jalr a5 + 3bc04026: 06055263 bgez a0,3bc0408a + 3bc0402a: 0064d783 lhu a5,6(s1) + 3bc0402e: 4585 li a1,1 + 3bc04030: c789 beqz a5,3bc0403a + 3bc04032: 0c140583 lb a1,193(s0) + 3bc04036: 01f5d59b srliw a1,a1,0x1f + 3bc0403a: 6448 ld a0,136(s0) + 3bc0403c: ecaff0ef jal ra,3bc03706 + 3bc04040: 04042423 sw zero,72(s0) + 3bc04044: b5c9 j 3bc03f06 + 3bc04046: 0027d683 lhu a3,2(a5) + 3bc0404a: 4709 li a4,2 + 3bc0404c: 00e69863 bne a3,a4,3bc0405c + 3bc04050: 0047d783 lhu a5,4(a5) + 3bc04054: 0087d79b srliw a5,a5,0x8 + 3bc04058: 26f90b23 sb a5,630(s2) + 3bc0405c: 854a mv a0,s2 + 3bc0405e: b781 j 3bc03f9e + 3bc04060: 0027d783 lhu a5,2(a5) + 3bc04064: ffe5 bnez a5,3bc0405c + 3bc04066: 07154783 lbu a5,113(a0) + 3bc0406a: 8bbd andi a5,a5,15 + 3bc0406c: e781 bnez a5,3bc04074 + 3bc0406e: 4585 li a1,1 + 3bc04070: 854a mv a0,s2 + 3bc04072: bf21 j 3bc03f8a + 3bc04074: 4785 li a5,1 + 3bc04076: 06f50823 sb a5,112(a0) + 3bc0407a: d2cff0ef jal ra,3bc035a6 + 3bc0407e: bff9 j 3bc0405c + 3bc04080: 4701 li a4,0 + 3bc04082: 4681 li a3,0 + 3bc04084: 4601 li a2,0 + 3bc04086: 45a5 li a1,9 + 3bc04088: bb79 j 3bc03e26 + 3bc0408a: 25144783 lbu a5,593(s0) + 3bc0408e: 0017f713 andi a4,a5,1 + 3bc04092: c701 beqz a4,3bc0409a + 3bc04094: 9bf9 andi a5,a5,-2 + 3bc04096: 24f408a3 sb a5,593(s0) + 3bc0409a: e60996e3 bnez s3,3bc03f06 + 3bc0409e: 8522 mv a0,s0 + 3bc040a0: bdfd j 3bc03f9e + 3bc040a2: 8082 ret + +000000003bc040a4 : + 3bc040a4: 7119 addi sp,sp,-128 + 3bc040a6: ecce sd s3,88(sp) + 3bc040a8: 2685b983 ld s3,616(a1) + 3bc040ac: f0ca sd s2,96(sp) + 3bc040ae: f8a2 sd s0,112(sp) + 3bc040b0: 01498913 addi s2,s3,20 + 3bc040b4: 854a mv a0,s2 + 3bc040b6: f4a6 sd s1,104(sp) + 3bc040b8: e0da sd s6,64(sp) + 3bc040ba: fc86 sd ra,120(sp) + 3bc040bc: e8d2 sd s4,80(sp) + 3bc040be: e4d6 sd s5,72(sp) + 3bc040c0: fc5e sd s7,56(sp) + 3bc040c2: f862 sd s8,48(sp) + 3bc040c4: f466 sd s9,40(sp) + 3bc040c6: f06a sd s10,32(sp) + 3bc040c8: ec6e sd s11,24(sp) + 3bc040ca: 842e mv s0,a1 + 3bc040cc: 01898b13 addi s6,s3,24 + 3bc040d0: e7cfd0ef jal ra,3bc0174c + 3bc040d4: 0005049b sext.w s1,a0 + 3bc040d8: 855a mv a0,s6 + 3bc040da: e72fd0ef jal ra,3bc0174c + 3bc040de: 1c048563 beqz s1,3bc042a8 + 3bc040e2: 4430 lw a2,72(s0) + 3bc040e4: 00050a9b sext.w s5,a0 + 3bc040e8: 6505 lui a0,0x1 + 3bc040ea: 81850513 addi a0,a0,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc040ee: 954e add a0,a0,s3 + 3bc040f0: e432 sd a2,8(sp) + 3bc040f2: e5afd0ef jal ra,3bc0174c + 3bc040f6: 6622 ld a2,8(sp) + 3bc040f8: 0005069b sext.w a3,a0 + 3bc040fc: 653d lui a0,0xf + 3bc040fe: 4701 li a4,0 + 3bc04100: 85a6 mv a1,s1 + 3bc04102: 153d addi a0,a0,-17 + 3bc04104: fcafe0ef jal ra,3bc028ce + 3bc04108: 0104f793 andi a5,s1,16 + 3bc0410c: c3b5 beqz a5,3bc04170 + 3bc0410e: 85da mv a1,s6 + 3bc04110: fefaf513 andi a0,s5,-17 + 3bc04114: e3efd0ef jal ra,3bc01752 + 3bc04118: 02098513 addi a0,s3,32 + 3bc0411c: e30fd0ef jal ra,3bc0174c + 3bc04120: 00f57b93 andi s7,a0,15 + 3bc04124: 00050a1b sext.w s4,a0 + 3bc04128: 4581 li a1,0 + 3bc0412a: 855e mv a0,s7 + 3bc0412c: 9e0ff0ef jal ra,3bc0330c + 3bc04130: 001e07b7 lui a5,0x1e0 + 3bc04134: 00fa77b3 and a5,s4,a5 + 3bc04138: 00040737 lui a4,0x40 + 3bc0413c: 18e79663 bne a5,a4,3bc042c8 + 3bc04140: 384a3a0b extu s4,s4,14,4 + 3bc04144: 020a0163 beqz s4,3bc04166 + 3bc04148: 0005079b sext.w a5,a0 + 3bc0414c: 079e slli a5,a5,0x7 + 3bc0414e: 97a2 add a5,a5,s0 + 3bc04150: 0987bc03 ld s8,152(a5) # 1e0098 <__BSS_SIZE__+0x1da488> + 3bc04154: 86d2 mv a3,s4 + 3bc04156: 85de mv a1,s7 + 3bc04158: fd0c3603 ld a2,-48(s8) + 3bc0415c: 8522 mv a0,s0 + 3bc0415e: 96dff0ef jal ra,3bc03aca + 3bc04162: ff4c2023 sw s4,-32(s8) + 3bc04166: 85da mv a1,s6 + 3bc04168: 010ae513 ori a0,s5,16 + 3bc0416c: de6fd0ef jal ra,3bc01752 + 3bc04170: 34d4b78b extu a5,s1,13,13 + 3bc04174: cb9d beqz a5,3bc041aa + 3bc04176: 85ca mv a1,s2 + 3bc04178: 6509 lui a0,0x2 + 3bc0417a: dd8fd0ef jal ra,3bc01752 + 3bc0417e: 6505 lui a0,0x1 + 3bc04180: 80850513 addi a0,a0,-2040 # 808 <__BSS_SIZE__-0x5408> + 3bc04184: 954e add a0,a0,s3 + 3bc04186: dc6fd0ef jal ra,3bc0174c + 3bc0418a: 8919 andi a0,a0,6 + 3bc0418c: 14050b63 beqz a0,3bc042e2 + 3bc04190: 4589 li a1,2 + 3bc04192: 8522 mv a0,s0 + 3bc04194: b26ff0ef jal ra,3bc034ba + 3bc04198: 6509 lui a0,0x2 + 3bc0419a: 4701 li a4,0 + 3bc0419c: 4681 li a3,0 + 3bc0419e: 4601 li a2,0 + 3bc041a0: 4589 li a1,2 + 3bc041a2: 22250513 addi a0,a0,546 # 2222 <__BSS_SIZE__-0x39ee> + 3bc041a6: f28fe0ef jal ra,3bc028ce + 3bc041aa: 4004f793 andi a5,s1,1024 + 3bc041ae: c791 beqz a5,3bc041ba + 3bc041b0: 85ca mv a1,s2 + 3bc041b2: 40000513 li a0,1024 + 3bc041b6: d9cfd0ef jal ra,3bc01752 + 3bc041ba: 6505 lui a0,0x1 + 3bc041bc: 80050a13 addi s4,a0,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc041c0: 0144f7b3 and a5,s1,s4 + 3bc041c4: c395 beqz a5,3bc041e8 + 3bc041c6: 80850513 addi a0,a0,-2040 + 3bc041ca: 954e add a0,a0,s3 + 3bc041cc: d80fd0ef jal ra,3bc0174c + 3bc041d0: 85ca mv a1,s2 + 3bc041d2: 8552 mv a0,s4 + 3bc041d4: d7efd0ef jal ra,3bc01752 + 3bc041d8: 501c lw a5,32(s0) + 3bc041da: c799 beqz a5,3bc041e8 + 3bc041dc: 7c1c ld a5,56(s0) + 3bc041de: c789 beqz a5,3bc041e8 + 3bc041e0: 7b9c ld a5,48(a5) + 3bc041e2: c399 beqz a5,3bc041e8 + 3bc041e4: 8522 mv a0,s0 + 3bc041e6: 9782 jalr a5 + 3bc041e8: 0004df63 bgez s1,3bc04206 + 3bc041ec: 85ca mv a1,s2 + 3bc041ee: 80000537 lui a0,0x80000 + 3bc041f2: d60fd0ef jal ra,3bc01752 + 3bc041f6: 501c lw a5,32(s0) + 3bc041f8: c799 beqz a5,3bc04206 + 3bc041fa: 7c1c ld a5,56(s0) + 3bc041fc: c789 beqz a5,3bc04206 + 3bc041fe: 7f9c ld a5,56(a5) + 3bc04200: c399 beqz a5,3bc04206 + 3bc04202: 8522 mv a0,s0 + 3bc04204: 9782 jalr a5 + 3bc04206: 008017b7 lui a5,0x801 + 3bc0420a: 8fe5 and a5,a5,s1 + 3bc0420c: c3bd beqz a5,3bc04272 + 3bc0420e: 854e mv a0,s3 + 3bc04210: d3cfd0ef jal ra,3bc0174c + 3bc04214: 0005099b sext.w s3,a0 + 3bc04218: 6505 lui a0,0x1 + 3bc0421a: 4701 li a4,0 + 3bc0421c: 4681 li a3,0 + 3bc0421e: 4601 li a2,0 + 3bc04220: 85ce mv a1,s3 + 3bc04222: 11150513 addi a0,a0,273 # 1111 <__BSS_SIZE__-0x4aff> + 3bc04226: ea8fe0ef jal ra,3bc028ce + 3bc0422a: 30c4b78b extu a5,s1,12,12 + 3bc0422e: c789 beqz a5,3bc04238 + 3bc04230: 85ca mv a1,s2 + 3bc04232: 6505 lui a0,0x1 + 3bc04234: d1efd0ef jal ra,3bc01752 + 3bc04238: 5d74b78b extu a5,s1,23,23 + 3bc0423c: c791 beqz a5,3bc04248 + 3bc0423e: 85ca mv a1,s2 + 3bc04240: 00800537 lui a0,0x800 + 3bc04244: d0efd0ef jal ra,3bc01752 + 3bc04248: 000c0537 lui a0,0xc0 + 3bc0424c: 00a9f9b3 and s3,s3,a0 + 3bc04250: 000c07b7 lui a5,0xc0 + 3bc04254: 00f99f63 bne s3,a5,3bc04272 + 3bc04258: 27042903 lw s2,624(s0) + 3bc0425c: 8522 mv a0,s0 + 3bc0425e: 9d5fe0ef jal ra,3bc02c32 + 3bc04262: 00090663 beqz s2,3bc0426e + 3bc04266: 4585 li a1,1 + 3bc04268: 8522 mv a0,s0 + 3bc0426a: cbffe0ef jal ra,3bc02f28 + 3bc0426e: 04042423 sw zero,72(s0) + 3bc04272: 4924b78b extu a5,s1,18,18 + 3bc04276: e7c1 bnez a5,3bc042fe + 3bc04278: 4d34b48b extu s1,s1,19,19 + 3bc0427c: c495 beqz s1,3bc042a8 + 3bc0427e: 26843b03 ld s6,616(s0) + 3bc04282: 6505 lui a0,0x1 + 3bc04284: 81850513 addi a0,a0,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc04288: 955a add a0,a0,s6 + 3bc0428a: cc2fd0ef jal ra,3bc0174c + 3bc0428e: 00066a37 lui s4,0x66 + 3bc04292: 6a8d lui s5,0x3 + 3bc04294: 7d05398b extu s3,a0,31,16 + 3bc04298: 4901 li s2,0 + 3bc0429a: 4b99 li s7,6 + 3bc0429c: 666a0a13 addi s4,s4,1638 # 66666 <__BSS_SIZE__+0x60a56> + 3bc042a0: 333a8a93 addi s5,s5,819 # 3333 <__BSS_SIZE__-0x28dd> + 3bc042a4: 2a099963 bnez s3,3bc04556 + 3bc042a8: 70e6 ld ra,120(sp) + 3bc042aa: 7446 ld s0,112(sp) + 3bc042ac: 74a6 ld s1,104(sp) + 3bc042ae: 7906 ld s2,96(sp) + 3bc042b0: 69e6 ld s3,88(sp) + 3bc042b2: 6a46 ld s4,80(sp) + 3bc042b4: 6aa6 ld s5,72(sp) + 3bc042b6: 6b06 ld s6,64(sp) + 3bc042b8: 7be2 ld s7,56(sp) + 3bc042ba: 7c42 ld s8,48(sp) + 3bc042bc: 7ca2 ld s9,40(sp) + 3bc042be: 7d02 ld s10,32(sp) + 3bc042c0: 6de2 ld s11,24(sp) + 3bc042c2: 4501 li a0,0 + 3bc042c4: 6109 addi sp,sp,128 + 3bc042c6: 8082 ret + 3bc042c8: 000c0737 lui a4,0xc0 + 3bc042cc: e8e79de3 bne a5,a4,3bc04166 + 3bc042d0: 25843603 ld a2,600(s0) + 3bc042d4: 384a368b extu a3,s4,14,4 + 3bc042d8: 85de mv a1,s7 + 3bc042da: 8522 mv a0,s0 + 3bc042dc: feeff0ef jal ra,3bc03aca + 3bc042e0: b559 j 3bc04166 + 3bc042e2: 6509 lui a0,0x2 + 3bc042e4: 4701 li a4,0 + 3bc042e6: 4681 li a3,0 + 3bc042e8: 4601 li a2,0 + 3bc042ea: 4585 li a1,1 + 3bc042ec: 22250513 addi a0,a0,546 # 2222 <__BSS_SIZE__-0x39ee> + 3bc042f0: ddefe0ef jal ra,3bc028ce + 3bc042f4: 458d li a1,3 + 3bc042f6: 8522 mv a0,s0 + 3bc042f8: 9c2ff0ef jal ra,3bc034ba + 3bc042fc: b57d j 3bc041aa + 3bc042fe: 26843a03 ld s4,616(s0) + 3bc04302: 6a85 lui s5,0x1 + 3bc04304: 818a8513 addi a0,s5,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc04308: 9552 add a0,a0,s4 + 3bc0430a: c42fd0ef jal ra,3bc0174c + 3bc0430e: 00737b37 lui s6,0x737 + 3bc04312: 00747bb7 lui s7,0x747 + 3bc04316: 00055c37 lui s8,0x55 + 3bc0431a: 3c05398b extu s3,a0,15,0 + 3bc0431e: 4901 li s2,0 + 3bc04320: 373b0b13 addi s6,s6,883 # 737373 <__BSS_SIZE__+0x731763> + 3bc04324: 474b8b93 addi s7,s7,1140 # 747474 <__BSS_SIZE__+0x741864> + 3bc04328: 555c0c13 addi s8,s8,1365 # 55555 <__BSS_SIZE__+0x4f945> + 3bc0432c: 804a8a93 addi s5,s5,-2044 + 3bc04330: f40984e3 beqz s3,3bc04278 + 3bc04334: 0019f793 andi a5,s3,1 + 3bc04338: 1c078163 beqz a5,3bc044fa + 3bc0433c: 04890c93 addi s9,s2,72 + 3bc04340: 0c96 slli s9,s9,0x5 + 3bc04342: 008c8d93 addi s11,s9,8 + 3bc04346: 9dd2 add s11,s11,s4 + 3bc04348: 856e mv a0,s11 + 3bc0434a: c02fd0ef jal ra,3bc0174c + 3bc0434e: 00050d1b sext.w s10,a0 + 3bc04352: 010c8513 addi a0,s9,16 + 3bc04356: 9552 add a0,a0,s4 + 3bc04358: bf4fd0ef jal ra,3bc0174c + 3bc0435c: 0005069b sext.w a3,a0 + 3bc04360: 019a0533 add a0,s4,s9 + 3bc04364: e436 sd a3,8(sp) + 3bc04366: be6fd0ef jal ra,3bc0174c + 3bc0436a: 66a2 ld a3,8(sp) + 3bc0436c: 0005071b sext.w a4,a0 + 3bc04370: 866a mv a2,s10 + 3bc04372: 85ca mv a1,s2 + 3bc04374: 855a mv a0,s6 + 3bc04376: d58fe0ef jal ra,3bc028ce + 3bc0437a: 014c8513 addi a0,s9,20 + 3bc0437e: 9552 add a0,a0,s4 + 3bc04380: bccfd0ef jal ra,3bc0174c + 3bc04384: 0ce1 addi s9,s9,24 + 3bc04386: 0005059b sext.w a1,a0 + 3bc0438a: 019a0533 add a0,s4,s9 + 3bc0438e: e42e sd a1,8(sp) + 3bc04390: bbcfd0ef jal ra,3bc0174c + 3bc04394: 65a2 ld a1,8(sp) + 3bc04396: 0005061b sext.w a2,a0 + 3bc0439a: 4701 li a4,0 + 3bc0439c: 4681 li a3,0 + 3bc0439e: 855e mv a0,s7 + 3bc043a0: d2efe0ef jal ra,3bc028ce + 3bc043a4: 856a mv a0,s10 + 3bc043a6: 85ee mv a1,s11 + 3bc043a8: 001d7d13 andi s10,s10,1 + 3bc043ac: ba6fd0ef jal ra,3bc01752 + 3bc043b0: 140d0563 beqz s10,3bc044fa + 3bc043b4: 4585 li a1,1 + 3bc043b6: 854a mv a0,s2 + 3bc043b8: f55fe0ef jal ra,3bc0330c + 3bc043bc: 00050c9b sext.w s9,a0 + 3bc043c0: 0c9e slli s9,s9,0x7 + 3bc043c2: 01940833 add a6,s0,s9 + 3bc043c6: 09883603 ld a2,152(a6) + 3bc043ca: 00751d13 slli s10,a0,0x7 + 3bc043ce: 098d0d93 addi s11,s10,152 + 3bc043d2: 442c lw a1,72(s0) + 3bc043d4: 9da2 add s11,s11,s0 + 3bc043d6: 41b60633 sub a2,a2,s11 + 3bc043da: 00163613 seqz a2,a2 + 3bc043de: 4701 li a4,0 + 3bc043e0: 4681 li a3,0 + 3bc043e2: 8562 mv a0,s8 + 3bc043e4: e442 sd a6,8(sp) + 3bc043e6: ce8fe0ef jal ra,3bc028ce + 3bc043ea: 4430 lw a2,72(s0) + 3bc043ec: 47a1 li a5,8 + 3bc043ee: 6822 ld a6,8(sp) + 3bc043f0: 00f61a63 bne a2,a5,3bc04404 + 3bc043f4: 4799 li a5,6 + 3bc043f6: c43c sw a5,72(s0) + 3bc043f8: 8522 mv a0,s0 + 3bc043fa: a0eff0ef jal ra,3bc03608 + 3bc043fe: 04090c63 beqz s2,3bc04456 + 3bc04402: a8e5 j 3bc044fa + 3bc04404: 09883703 ld a4,152(a6) + 3bc04408: feed8be3 beq s11,a4,3bc043fe + 3bc0440c: ffc72303 lw t1,-4(a4) # bfffc <__BSS_SIZE__+0xba3ec> + 3bc04410: fd872883 lw a7,-40(a4) + 3bc04414: 0b082783 lw a5,176(a6) + 3bc04418: 050d0513 addi a0,s10,80 + 3bc0441c: 40688e3b subw t3,a7,t1 + 3bc04420: 0007869b sext.w a3,a5 + 3bc04424: 000e081b sext.w a6,t3 + 3bc04428: 00d836b3 sltu a3,a6,a3 + 3bc0442c: 0016c693 xori a3,a3,1 + 3bc04430: 40de178b mveqz a5,t3,a3 + 3bc04434: 006786bb addw a3,a5,t1 + 3bc04438: fed72e23 sw a3,-4(a4) + 3bc0443c: 9522 add a0,a0,s0 + 3bc0443e: fc070593 addi a1,a4,-64 + 3bc04442: 08091c63 bnez s2,3bc044da + 3bc04446: 4785 li a5,1 + 3bc04448: 06f61463 bne a2,a5,3bc044b0 + 3bc0444c: ec2ff0ef jal ra,3bc03b0e + 3bc04450: c119 beqz a0,3bc04456 + 3bc04452: 4795 li a5,5 + 3bc04454: c43c sw a5,72(s0) + 3bc04456: 27644783 lbu a5,630(s0) + 3bc0445a: c3a9 beqz a5,3bc0449c + 3bc0445c: 26843d03 ld s10,616(s0) + 3bc04460: 00078d9b sext.w s11,a5 + 3bc04464: e43e sd a5,8(sp) + 3bc04466: 9d56 add s10,s10,s5 + 3bc04468: 856a mv a0,s10 + 3bc0446a: ae2fd0ef jal ra,3bc0174c + 3bc0446e: 67a2 ld a5,8(sp) + 3bc04470: 00050c9b sext.w s9,a0 + 3bc04474: 4711 li a4,4 + 3bc04476: 37fd addiw a5,a5,-1 + 3bc04478: f8fcfc93 andi s9,s9,-113 + 3bc0447c: 02f76063 bltu a4,a5,3bc0449c + 3bc04480: 85ee mv a1,s11 + 3bc04482: 00007517 auipc a0,0x7 + 3bc04486: d7e50513 addi a0,a0,-642 # 3bc0b200 + 3bc0448a: ecffb0ef jal ra,3bc00358 + 3bc0448e: 004d9513 slli a0,s11,0x4 + 3bc04492: 85ea mv a1,s10 + 3bc04494: 01956533 or a0,a0,s9 + 3bc04498: abafd0ef jal ra,3bc01752 + 3bc0449c: 443c lw a5,72(s0) + 3bc0449e: 471d li a4,7 + 3bc044a0: 06e79363 bne a5,a4,3bc04506 + 3bc044a4: 04042423 sw zero,72(s0) + 3bc044a8: 8522 mv a0,s0 + 3bc044aa: c6aff0ef jal ra,3bc03914 + 3bc044ae: a8a9 j 3bc04508 + 3bc044b0: 479d li a5,7 + 3bc044b2: 00f61863 bne a2,a5,3bc044c2 + 3bc044b6: 4601 li a2,0 + 3bc044b8: c68fe0ef jal ra,3bc02920 + 3bc044bc: 04042423 sw zero,72(s0) + 3bc044c0: bf59 j 3bc04456 + 3bc044c2: 4795 li a5,5 + 3bc044c4: f8f619e3 bne a2,a5,3bc04456 + 3bc044c8: 4601 li a2,0 + 3bc044ca: c56fe0ef jal ra,3bc02920 + 3bc044ce: 4799 li a5,6 + 3bc044d0: c43c sw a5,72(s0) + 3bc044d2: 8522 mv a0,s0 + 3bc044d4: 934ff0ef jal ra,3bc03608 + 3bc044d8: bfbd j 3bc04456 + 3bc044da: 00d89763 bne a7,a3,3bc044e8 + 3bc044de: 4601 li a2,0 + 3bc044e0: e42a sd a0,8(sp) + 3bc044e2: c3efe0ef jal ra,3bc02920 + 3bc044e6: 6522 ld a0,8(sp) + 3bc044e8: 9ca2 add s9,s9,s0 + 3bc044ea: 098cb583 ld a1,152(s9) + 3bc044ee: 00bd8663 beq s11,a1,3bc044fa + 3bc044f2: fc058593 addi a1,a1,-64 + 3bc044f6: c78ff0ef jal ra,3bc0396e + 3bc044fa: 2905 addiw s2,s2,1 + 3bc044fc: 0ff97913 andi s2,s2,255 + 3bc04500: 0019d993 srli s3,s3,0x1 + 3bc04504: b535 j 3bc04330 + 3bc04506: d3cd beqz a5,3bc044a8 + 3bc04508: 27544703 lbu a4,629(s0) + 3bc0450c: 4785 li a5,1 + 3bc0450e: fef716e3 bne a4,a5,3bc044fa + 3bc04512: 27444503 lbu a0,628(s0) + 3bc04516: 4585 li a1,1 + 3bc04518: df5fe0ef jal ra,3bc0330c + 3bc0451c: 0005071b sext.w a4,a0 + 3bc04520: 071e slli a4,a4,0x7 + 3bc04522: 9722 add a4,a4,s0 + 3bc04524: 00751793 slli a5,a0,0x7 + 3bc04528: 6f4c ld a1,152(a4) + 3bc0452a: 05078513 addi a0,a5,80 # c0050 <__BSS_SIZE__+0xba440> + 3bc0452e: 09878793 addi a5,a5,152 + 3bc04532: 97a2 add a5,a5,s0 + 3bc04534: 9522 add a0,a0,s0 + 3bc04536: 00f58a63 beq a1,a5,3bc0454a + 3bc0453a: 0c170783 lb a5,193(a4) + 3bc0453e: fc058593 addi a1,a1,-64 + 3bc04542: 0007d763 bgez a5,3bc04550 + 3bc04546: c28ff0ef jal ra,3bc0396e + 3bc0454a: 26040aa3 sb zero,629(s0) + 3bc0454e: b775 j 3bc044fa + 3bc04550: a1eff0ef jal ra,3bc0376e + 3bc04554: bfdd j 3bc0454a + 3bc04556: 0019f793 andi a5,s3,1 + 3bc0455a: c3a1 beqz a5,3bc0459a + 3bc0455c: 05890493 addi s1,s2,88 + 3bc04560: 0496 slli s1,s1,0x5 + 3bc04562: 04a1 addi s1,s1,8 + 3bc04564: 94da add s1,s1,s6 + 3bc04566: 8526 mv a0,s1 + 3bc04568: 9e4fd0ef jal ra,3bc0174c + 3bc0456c: 0005061b sext.w a2,a0 + 3bc04570: 8532 mv a0,a2 + 3bc04572: 85a6 mv a1,s1 + 3bc04574: e432 sd a2,8(sp) + 3bc04576: 9dcfd0ef jal ra,3bc01752 + 3bc0457a: 6622 ld a2,8(sp) + 3bc0457c: 06091063 bnez s2,3bc045dc + 3bc04580: 00867793 andi a5,a2,8 + 3bc04584: c38d beqz a5,3bc045a6 + 3bc04586: 8556 mv a0,s5 + 3bc04588: 4701 li a4,0 + 3bc0458a: 4681 li a3,0 + 3bc0458c: 4601 li a2,0 + 3bc0458e: 4581 li a1,0 + 3bc04590: b3efe0ef jal ra,3bc028ce + 3bc04594: 8522 mv a0,s0 + 3bc04596: fc8ff0ef jal ra,3bc03d5e + 3bc0459a: 2905 addiw s2,s2,1 + 3bc0459c: 0ff97913 andi s2,s2,255 + 3bc045a0: 0019d993 srli s3,s3,0x1 + 3bc045a4: b301 j 3bc042a4 + 3bc045a6: 00167793 andi a5,a2,1 + 3bc045aa: dbe5 beqz a5,3bc0459a + 3bc045ac: 443c lw a5,72(s0) + 3bc045ae: 4701 li a4,0 + 3bc045b0: 4681 li a3,0 + 3bc045b2: 01778b63 beq a5,s7,3bc045c8 + 3bc045b6: 4585 li a1,1 + 3bc045b8: 8552 mv a0,s4 + 3bc045ba: b14fe0ef jal ra,3bc028ce + 3bc045be: 4581 li a1,0 + 3bc045c0: 8522 mv a0,s0 + 3bc045c2: a56ff0ef jal ra,3bc03818 + 3bc045c6: bfd1 j 3bc0459a + 3bc045c8: 8552 mv a0,s4 + 3bc045ca: 4589 li a1,2 + 3bc045cc: b02fe0ef jal ra,3bc028ce + 3bc045d0: 8522 mv a0,s0 + 3bc045d2: 04042423 sw zero,72(s0) + 3bc045d6: b3eff0ef jal ra,3bc03914 + 3bc045da: b7c1 j 3bc0459a + 3bc045dc: 8a05 andi a2,a2,1 + 3bc045de: de55 beqz a2,3bc0459a + 3bc045e0: 85ca mv a1,s2 + 3bc045e2: bff9 j 3bc045c0 + +000000003bc045e4 : + 3bc045e4: 07158703 lb a4,113(a1) + 3bc045e8: 00075663 bgez a4,3bc045f4 + 3bc045ec: 4705 li a4,1 + 3bc045ee: c538 sw a4,72(a0) + 3bc045f0: ddaff06f j 3bc03bca + 3bc045f4: 4711 li a4,4 + 3bc045f6: c538 sw a4,72(a0) + 3bc045f8: daaff06f j 3bc03ba2 + +000000003bc045fc : + 3bc045fc: e581 bnez a1,3bc04604 + 3bc045fe: 57a9 li a5,-22 + 3bc04600: 853e mv a0,a5 + 3bc04602: 8082 ret + 3bc04604: 759c ld a5,40(a1) + 3bc04606: dfe5 beqz a5,3bc045fe + 3bc04608: 699c ld a5,16(a1) + 3bc0460a: dbf5 beqz a5,3bc045fe + 3bc0460c: 61bc ld a5,64(a1) + 3bc0460e: 7179 addi sp,sp,-48 + 3bc04610: e84a sd s2,16(sp) + 3bc04612: f406 sd ra,40(sp) + 3bc04614: f022 sd s0,32(sp) + 3bc04616: ec26 sd s1,24(sp) + 3bc04618: e44e sd s3,8(sp) + 3bc0461a: 04058913 addi s2,a1,64 + 3bc0461e: 06f91763 bne s2,a5,3bc0468c + 3bc04622: c52d beqz a0,3bc0468c + 3bc04624: 613c ld a5,64(a0) + 3bc04626: 84ae mv s1,a1 + 3bc04628: 842a mv s0,a0 + 3bc0462a: cbb9 beqz a5,3bc04680 + 3bc0462c: 7c08 ld a0,56(s0) + 3bc0462e: 07144683 lbu a3,113(s0) + 3bc04632: fc600793 li a5,-58 + 3bc04636: 7d18 ld a4,56(a0) + 3bc04638: cb39 beqz a4,3bc0468e + 3bc0463a: 5118 lw a4,32(a0) + 3bc0463c: fc600793 li a5,-58 + 3bc04640: c739 beqz a4,3bc0468e + 3bc04642: 4785 li a5,1 + 3bc04644: 1782 slli a5,a5,0x20 + 3bc04646: fdc78793 addi a5,a5,-36 + 3bc0464a: 26853703 ld a4,616(a0) + 3bc0464e: fc9c sd a5,56(s1) + 3bc04650: 643c ld a5,72(s0) + 3bc04652: 04840993 addi s3,s0,72 + 3bc04656: 04f99f63 bne s3,a5,3bc046b4 + 3bc0465a: 07044783 lbu a5,112(s0) + 3bc0465e: ebb9 bnez a5,3bc046b4 + 3bc04660: 00f6f793 andi a5,a3,15 + 3bc04664: ef8d bnez a5,3bc0469e + 3bc04666: 683c ld a5,80(s0) + 3bc04668: 05243823 sd s2,80(s0) + 3bc0466c: 0534b023 sd s3,64(s1) + 3bc04670: e4bc sd a5,72(s1) + 3bc04672: 0127b023 sd s2,0(a5) + 3bc04676: 85a2 mv a1,s0 + 3bc04678: f6dff0ef jal ra,3bc045e4 + 3bc0467c: 4781 li a5,0 + 3bc0467e: a801 j 3bc0468e + 3bc04680: 01853983 ld s3,24(a0) + 3bc04684: a4cfe0ef jal ra,3bc028d0 + 3bc04688: faa982e3 beq s3,a0,3bc0462c + 3bc0468c: 57a9 li a5,-22 + 3bc0468e: 70a2 ld ra,40(sp) + 3bc04690: 7402 ld s0,32(sp) + 3bc04692: 64e2 ld s1,24(sp) + 3bc04694: 6942 ld s2,16(sp) + 3bc04696: 69a2 ld s3,8(sp) + 3bc04698: 853e mv a0,a5 + 3bc0469a: 6145 addi sp,sp,48 + 3bc0469c: 8082 ret + 3bc0469e: fc76b78b extu a5,a3,63,7 + 3bc046a2: 01470513 addi a0,a4,20 + 3bc046a6: c385 beqz a5,3bc046c6 + 3bc046a8: 8a4fd0ef jal ra,3bc0174c + 3bc046ac: 85a6 mv a1,s1 + 3bc046ae: 8522 mv a0,s0 + 3bc046b0: abeff0ef jal ra,3bc0396e + 3bc046b4: 683c ld a5,80(s0) + 3bc046b6: 05243823 sd s2,80(s0) + 3bc046ba: 0534b023 sd s3,64(s1) + 3bc046be: e4bc sd a5,72(s1) + 3bc046c0: 0127b023 sd s2,0(a5) + 3bc046c4: bf65 j 3bc0467c + 3bc046c6: 886fd0ef jal ra,3bc0174c + 3bc046ca: 85a6 mv a1,s1 + 3bc046cc: 8522 mv a0,s0 + 3bc046ce: 8a0ff0ef jal ra,3bc0376e + 3bc046d2: b7cd j 3bc046b4 + +000000003bc046d4 : + 3bc046d4: 7179 addi sp,sp,-48 + 3bc046d6: f022 sd s0,32(sp) + 3bc046d8: ec26 sd s1,24(sp) + 3bc046da: f406 sd ra,40(sp) + 3bc046dc: e432 sd a2,8(sp) + 3bc046de: 0e0007b7 lui a5,0xe000 + 3bc046e2: 84ae mv s1,a1 + 3bc046e4: 638c ld a1,0(a5) + 3bc046e6: 842a mv s0,a0 + 3bc046e8: 00007517 auipc a0,0x7 + 3bc046ec: b3050513 addi a0,a0,-1232 # 3bc0b218 + 3bc046f0: 5055b78b extu a5,a1,20,5 + 3bc046f4: 85be mv a1,a5 + 3bc046f6: 00007717 auipc a4,0x7 + 3bc046fa: 30f71923 sh a5,786(a4) # 3bc0ba08 + 3bc046fe: c5bfb0ef jal ra,3bc00358 + 3bc04702: 8522 mv a0,s0 + 3bc04704: 7402 ld s0,32(sp) + 3bc04706: 6622 ld a2,8(sp) + 3bc04708: 70a2 ld ra,40(sp) + 3bc0470a: 85a6 mv a1,s1 + 3bc0470c: 64e2 ld s1,24(sp) + 3bc0470e: 6145 addi sp,sp,48 + 3bc04710: bd5fd06f j 3bc022e4 + +000000003bc04714 : + 3bc04714: 4781 li a5,0 + 3bc04716: 00007697 auipc a3,0x7 + 3bc0471a: b1a68693 addi a3,a3,-1254 # 3bc0b230 + 3bc0471e: 0007871b sext.w a4,a5 + 3bc04722: 00c74363 blt a4,a2,3bc04728 + 3bc04726: 8082 ret + 3bc04728: 80f5c80b lrbu a6,a1,a5,0 + 3bc0472c: 9c85370b extu a4,a0,39,8 + 3bc04730: 0085151b slliw a0,a0,0x8 + 3bc04734: 01074733 xor a4,a4,a6 + 3bc04738: a2e6c70b lrhu a4,a3,a4,1 + 3bc0473c: 0785 addi a5,a5,1 + 3bc0473e: 8d39 xor a0,a0,a4 + 3bc04740: 3c05350b extu a0,a0,15,0 + 3bc04744: bfe9 j 3bc0471e + +000000003bc04746 : + 3bc04746: 4d78 lw a4,92(a0) + 3bc04748: 11000793 li a5,272 + 3bc0474c: fff7069b addiw a3,a4,-1 + 3bc04750: 04d7e563 bltu a5,a3,3bc0479a + 3bc04754: 7510 ld a2,40(a0) + 3bc04756: 7c07368b extu a3,a4,31,0 + 3bc0475a: 01853803 ld a6,24(a0) + 3bc0475e: 8d91 sub a1,a1,a2 + 3bc04760: 02053e03 ld t3,32(a0) + 3bc04764: 04856883 lwu a7,72(a0) + 3bc04768: 87ba mv a5,a4 + 3bc0476a: 00d5f463 bgeu a1,a3,3bc04772 + 3bc0476e: 0005879b sext.w a5,a1 + 3bc04772: 416c lw a1,68(a0) + 3bc04774: 4134 lw a3,64(a0) + 3bc04776: e599 bnez a1,3bc04784 + 3bc04778: 414c lw a1,4(a0) + 3bc0477a: 40d5833b subw t1,a1,a3 + 3bc0477e: 0067e363 bltu a5,t1,3bc04784 + 3bc04782: c16c sw a1,68(a0) + 3bc04784: 9ebd addw a3,a3,a5 + 3bc04786: 9f1d subw a4,a4,a5 + 3bc04788: c134 sw a3,64(a0) + 3bc0478a: cd78 sw a4,92(a0) + 3bc0478c: 86be mv a3,a5 + 3bc0478e: 8732 mv a4,a2 + 3bc04790: e691 bnez a3,3bc0479c + 3bc04792: 7c07b78b extu a5,a5,31,0 + 3bc04796: 97b2 add a5,a5,a2 + 3bc04798: f51c sd a5,40(a0) + 3bc0479a: 8082 ret + 3bc0479c: 36fd addiw a3,a3,-1 + 3bc0479e: 411705b3 sub a1,a4,a7 + 3bc047a2: 8372 mv t1,t3 + 3bc047a4: 01176363 bltu a4,a7,3bc047aa + 3bc047a8: 4301 li t1,0 + 3bc047aa: 95c2 add a1,a1,a6 + 3bc047ac: 8065c58b lrbu a1,a1,t1,0 + 3bc047b0: 00e8558b srb a1,a6,a4,0 + 3bc047b4: 0705 addi a4,a4,1 + 3bc047b6: bfe9 j 3bc04790 + +000000003bc047b8 : + 3bc047b8: 7155 addi sp,sp,-208 + 3bc047ba: e1a2 sd s0,192(sp) + 3bc047bc: 6405 lui s0,0x1 + 3bc047be: e586 sd ra,200(sp) + 3bc047c0: fd26 sd s1,184(sp) + 3bc047c2: f94a sd s2,176(sp) + 3bc047c4: f54e sd s3,168(sp) + 3bc047c6: f152 sd s4,160(sp) + 3bc047c8: ed56 sd s5,152(sp) + 3bc047ca: e95a sd s6,144(sp) + 3bc047cc: e55e sd s7,136(sp) + 3bc047ce: e162 sd s8,128(sp) + 3bc047d0: fce6 sd s9,120(sp) + 3bc047d2: f8ea sd s10,112(sp) + 3bc047d4: f4ee sd s11,104(sp) + 3bc047d6: e82e sd a1,16(sp) + 3bc047d8: f832 sd a2,48(sp) + 3bc047da: 8004041b addiw s0,s0,-2048 + 3bc047de: 417c lw a5,68(a0) + 3bc047e0: 04052e03 lw t3,64(a0) + 3bc047e4: 02853803 ld a6,40(a0) + 3bc047e8: ec3e sd a5,24(sp) + 3bc047ea: eba1 bnez a5,3bc0483a + 3bc047ec: 415c lw a5,4(a0) + 3bc047ee: 6742 ld a4,16(sp) + 3bc047f0: 66c2 ld a3,16(sp) + 3bc047f2: 41c787bb subw a5,a5,t3 + 3bc047f6: 7c07b78b extu a5,a5,31,0 + 3bc047fa: 41070733 sub a4,a4,a6 + 3bc047fe: e436 sd a3,8(sp) + 3bc04800: 00e7f463 bgeu a5,a4,3bc04808 + 3bc04804: 97c2 add a5,a5,a6 + 3bc04806: e43e sd a5,8(sp) + 3bc04808: 020e1b63 bnez t3,3bc0483e + 3bc0480c: 5d58 lw a4,60(a0) + 3bc0480e: c00007b7 lui a5,0xc0000 + 3bc04812: bff78793 addi a5,a5,-1025 # ffffffffbffffbff <__BL2_END__+0xffffffff843ec3ef> + 3bc04816: 02e7f463 bgeu a5,a4,3bc0483e + 3bc0481a: 4505 li a0,1 + 3bc0481c: 60ae ld ra,200(sp) + 3bc0481e: 640e ld s0,192(sp) + 3bc04820: 74ea ld s1,184(sp) + 3bc04822: 794a ld s2,176(sp) + 3bc04824: 79aa ld s3,168(sp) + 3bc04826: 7a0a ld s4,160(sp) + 3bc04828: 6aea ld s5,152(sp) + 3bc0482a: 6b4a ld s6,144(sp) + 3bc0482c: 6baa ld s7,136(sp) + 3bc0482e: 6c0a ld s8,128(sp) + 3bc04830: 7ce6 ld s9,120(sp) + 3bc04832: 7d46 ld s10,112(sp) + 3bc04834: 7da6 ld s11,104(sp) + 3bc04836: 6169 addi sp,sp,208 + 3bc04838: 8082 ret + 3bc0483a: 67c2 ld a5,16(sp) + 3bc0483c: e43e sd a5,8(sp) + 3bc0483e: 497c lw a5,84(a0) + 3bc04840: 00154703 lbu a4,1(a0) + 3bc04844: 690c ld a1,16(a0) + 3bc04846: f03e sd a5,32(sp) + 3bc04848: 00054783 lbu a5,0(a0) + 3bc0484c: 00254303 lbu t1,2(a0) + 3bc04850: 74fd lui s1,0xfffff + 3bc04852: f43e sd a5,40(sp) + 3bc04854: 76a2 ld a3,40(sp) + 3bc04856: 10000793 li a5,256 + 3bc0485a: 00e7973b sllw a4,a5,a4 + 3bc0485e: 02053a83 ld s5,32(a0) + 3bc04862: 00d7d7bb srlw a5,a5,a3 + 3bc04866: 60048493 addi s1,s1,1536 # fffffffffffff600 <__BL2_END__+0xffffffffc43ebdf0> + 3bc0486a: 56fd li a3,-1 + 3bc0486c: 40f707bb subw a5,a4,a5 + 3bc04870: 006696bb sllw a3,a3,t1 + 3bc04874: 94ae add s1,s1,a1 + 3bc04876: fc3e sd a5,56(sp) + 3bc04878: fff6c693 not a3,a3 + 3bc0487c: e4a6 sd s1,72(sp) + 3bc0487e: 05852883 lw a7,88(a0) + 3bc04882: a0058493 addi s1,a1,-1536 + 3bc04886: 04852f83 lw t6,72(a0) + 3bc0488a: 04c52f03 lw t5,76(a0) + 3bc0488e: 05052983 lw s3,80(a0) + 3bc04892: 01853a03 ld s4,24(a0) + 3bc04896: 7918 ld a4,48(a0) + 3bc04898: 5d10 lw a2,56(a0) + 3bc0489a: 5d5c lw a5,60(a0) + 3bc0489c: 2681 sext.w a3,a3 + 3bc0489e: e8a6 sd s1,80(sp) + 3bc048a0: fffa8493 addi s1,s5,-1 + 3bc048a4: e0b6 sd a3,64(sp) + 3bc048a6: 4301 li t1,0 + 3bc048a8: 010006b7 lui a3,0x1000 + 3bc048ac: eca6 sd s1,88(sp) + 3bc048ae: 6486 ld s1,64(sp) + 3bc048b0: 01c4feb3 and t4,s1,t3 + 3bc048b4: 004e9e9b slliw t4,t4,0x4 + 3bc048b8: 011e893b addw s2,t4,a7 + 3bc048bc: 02091493 slli s1,s2,0x20 + 3bc048c0: 01f4d913 srli s2,s1,0x1f + 3bc048c4: e0090b93 addi s7,s2,-512 + 3bc048c8: a175cb0b lrhu s6,a1,s7,0 + 3bc048cc: 000b039b sext.w t2,s6 + 3bc048d0: 00d67a63 bgeu a2,a3,3bc048e4 + 3bc048d4: 9817428b lbuia t0,(a4),1,0 + 3bc048d8: 0087979b slliw a5,a5,0x8 + 3bc048dc: 0086161b slliw a2,a2,0x8 + 3bc048e0: 00f2e7b3 or a5,t0,a5 + 3bc048e4: 00b6529b srliw t0,a2,0xb + 3bc048e8: 027284bb mulw s1,t0,t2 + 3bc048ec: 82a6 mv t0,s1 + 3bc048ee: 7497f663 bgeu a5,s1,3bc0503a + 3bc048f2: 6ee2 ld t4,24(sp) + 3bc048f4: 407403bb subw t2,s0,t2 + 3bc048f8: 0053d39b srliw t2,t2,0x5 + 3bc048fc: 016383bb addw t2,t2,s6 + 3bc04900: 2175d38b srh t2,a1,s7,0 + 3bc04904: 01ceeeb3 or t4,t4,t3 + 3bc04908: 28058613 addi a2,a1,640 + 3bc0490c: 020e8b63 beqz t4,3bc04942 + 3bc04910: 6966 ld s2,88(sp) + 3bc04912: fff80393 addi t2,a6,-1 + 3bc04916: 008e1e9b slliw t4,t3,0x8 + 3bc0491a: 4109138b mveqz t2,s2,a6 + 3bc0491e: 807a438b lrbu t2,s4,t2,0 + 3bc04922: 01d38ebb addw t4,t2,t4 + 3bc04926: 73e2 ld t2,56(sp) + 3bc04928: 01d3feb3 and t4,t2,t4 + 3bc0492c: 73a2 ld t2,40(sp) + 3bc0492e: 007e9ebb sllw t4,t4,t2 + 3bc04932: 438d li t2,3 + 3bc04934: 027e8ebb mulw t4,t4,t2 + 3bc04938: 020e9393 slli t2,t4,0x20 + 3bc0493c: 01f3de93 srli t4,t2,0x1f + 3bc04940: 9676 add a2,a2,t4 + 3bc04942: 4e99 li t4,6 + 3bc04944: 2e05 addiw t3,t3,1 + 3bc04946: 311eef63 bltu t4,a7,3bc04c64 + 3bc0494a: 438d li t2,3 + 3bc0494c: 8ec6 mv t4,a7 + 3bc0494e: 0113f363 bgeu t2,a7,3bc04954 + 3bc04952: 4e8d li t4,3 + 3bc04954: 00265383 lhu t2,2(a2) + 3bc04958: 41d888bb subw a7,a7,t4 + 3bc0495c: 00038e9b sext.w t4,t2 + 3bc04960: 00d4fa63 bgeu s1,a3,3bc04974 + 3bc04964: 0082949b slliw s1,t0,0x8 + 3bc04968: 9817428b lbuia t0,(a4),1,0 + 3bc0496c: 0087979b slliw a5,a5,0x8 + 3bc04970: 00f2e7b3 or a5,t0,a5 + 3bc04974: 00b4d29b srliw t0,s1,0xb + 3bc04978: 03d2893b mulw s2,t0,t4 + 3bc0497c: 2327f563 bgeu a5,s2,3bc04ba6 + 3bc04980: 41d40ebb subw t4,s0,t4 + 3bc04984: 005ede9b srliw t4,t4,0x5 + 3bc04988: 007e83bb addw t2,t4,t2 + 3bc0498c: 3c03b38b extu t2,t2,15,0 + 3bc04990: 4e89 li t4,2 + 3bc04992: 00761123 sh t2,2(a2) + 3bc04996: b3d6448b lurhu s1,a2,t4,1 + 3bc0499a: 03d61b8b addsl s7,a2,t4,1 + 3bc0499e: 0004829b sext.w t0,s1 + 3bc049a2: 00d97a63 bgeu s2,a3,3bc049b6 + 3bc049a6: 9817438b lbuia t2,(a4),1,0 + 3bc049aa: 0087979b slliw a5,a5,0x8 + 3bc049ae: 0089191b slliw s2,s2,0x8 + 3bc049b2: 00f3e7b3 or a5,t2,a5 + 3bc049b6: 00b95b1b srliw s6,s2,0xb + 3bc049ba: 025b03bb mulw t2,s6,t0 + 3bc049be: 001e9c1b slliw s8,t4,0x1 + 3bc049c2: 0e86 slli t4,t4,0x1 + 3bc049c4: 1e77fd63 bgeu a5,t2,3bc04bbe + 3bc049c8: 405402bb subw t0,s0,t0 + 3bc049cc: 0052d29b srliw t0,t0,0x5 + 3bc049d0: 009284bb addw s1,t0,s1 + 3bc049d4: 3c04b48b extu s1,s1,15,0 + 3bc049d8: 009b9023 sh s1,0(s7) + 3bc049dc: b3d6490b lurhu s2,a2,t4,1 + 3bc049e0: 020e9493 slli s1,t4,0x20 + 3bc049e4: 01f4dc13 srli s8,s1,0x1f + 3bc049e8: 9c32 add s8,s8,a2 + 3bc049ea: 0009029b sext.w t0,s2 + 3bc049ee: 00d3f963 bgeu t2,a3,3bc04a00 + 3bc049f2: 9817448b lbuia s1,(a4),1,0 + 3bc049f6: 0087979b slliw a5,a5,0x8 + 3bc049fa: 0083939b slliw t2,t2,0x8 + 3bc049fe: 8fc5 or a5,a5,s1 + 3bc04a00: 00b3db9b srliw s7,t2,0xb + 3bc04a04: 025b84bb mulw s1,s7,t0 + 3bc04a08: 001e9b1b slliw s6,t4,0x1 + 3bc04a0c: 1c97f663 bgeu a5,s1,3bc04bd8 + 3bc04a10: 405402bb subw t0,s0,t0 + 3bc04a14: 0052d29b srliw t0,t0,0x5 + 3bc04a18: 0122893b addw s2,t0,s2 + 3bc04a1c: 3c09390b extu s2,s2,15,0 + 3bc04a20: 012c1023 sh s2,0(s8) + 3bc04a24: b366428b lurhu t0,a2,s6,1 + 3bc04a28: 020b1e93 slli t4,s6,0x20 + 3bc04a2c: 01fedc13 srli s8,t4,0x1f + 3bc04a30: 9c32 add s8,s8,a2 + 3bc04a32: 00028e9b sext.w t4,t0 + 3bc04a36: 00d4fa63 bgeu s1,a3,3bc04a4a + 3bc04a3a: 9817438b lbuia t2,(a4),1,0 + 3bc04a3e: 0087979b slliw a5,a5,0x8 + 3bc04a42: 0084949b slliw s1,s1,0x8 + 3bc04a46: 00f3e7b3 or a5,t2,a5 + 3bc04a4a: 00b4db9b srliw s7,s1,0xb + 3bc04a4e: 03db83bb mulw t2,s7,t4 + 3bc04a52: 001b191b slliw s2,s6,0x1 + 3bc04a56: 1877fc63 bgeu a5,t2,3bc04bee + 3bc04a5a: 41d40ebb subw t4,s0,t4 + 3bc04a5e: 005ede9b srliw t4,t4,0x5 + 3bc04a62: 005e82bb addw t0,t4,t0 + 3bc04a66: 3c02b28b extu t0,t0,15,0 + 3bc04a6a: 02091493 slli s1,s2,0x20 + 3bc04a6e: 005c1023 sh t0,0(s8) + 3bc04a72: 01f4db93 srli s7,s1,0x1f + 3bc04a76: b326448b lurhu s1,a2,s2,1 + 3bc04a7a: 9bb2 add s7,s7,a2 + 3bc04a7c: 00048e9b sext.w t4,s1 + 3bc04a80: 00d3fa63 bgeu t2,a3,3bc04a94 + 3bc04a84: 9817428b lbuia t0,(a4),1,0 + 3bc04a88: 0087979b slliw a5,a5,0x8 + 3bc04a8c: 0083939b slliw t2,t2,0x8 + 3bc04a90: 00f2e7b3 or a5,t0,a5 + 3bc04a94: 00b3db1b srliw s6,t2,0xb + 3bc04a98: 03db02bb mulw t0,s6,t4 + 3bc04a9c: 0019191b slliw s2,s2,0x1 + 3bc04aa0: 1657f363 bgeu a5,t0,3bc04c06 + 3bc04aa4: 41d40ebb subw t4,s0,t4 + 3bc04aa8: 005ede9b srliw t4,t4,0x5 + 3bc04aac: 009e84bb addw s1,t4,s1 + 3bc04ab0: 3c04b48b extu s1,s1,15,0 + 3bc04ab4: 009b9023 sh s1,0(s7) + 3bc04ab8: 02091493 slli s1,s2,0x20 + 3bc04abc: 01f4db93 srli s7,s1,0x1f + 3bc04ac0: b326448b lurhu s1,a2,s2,1 + 3bc04ac4: 9bb2 add s7,s7,a2 + 3bc04ac6: 00048e9b sext.w t4,s1 + 3bc04aca: 00d2fa63 bgeu t0,a3,3bc04ade + 3bc04ace: 9817438b lbuia t2,(a4),1,0 + 3bc04ad2: 0087979b slliw a5,a5,0x8 + 3bc04ad6: 0082929b slliw t0,t0,0x8 + 3bc04ada: 00f3e7b3 or a5,t2,a5 + 3bc04ade: 00b2db1b srliw s6,t0,0xb + 3bc04ae2: 03db03bb mulw t2,s6,t4 + 3bc04ae6: 0019191b slliw s2,s2,0x1 + 3bc04aea: 1277fa63 bgeu a5,t2,3bc04c1e + 3bc04aee: 41d40ebb subw t4,s0,t4 + 3bc04af2: 005ede9b srliw t4,t4,0x5 + 3bc04af6: 009e84bb addw s1,t4,s1 + 3bc04afa: 3c04b48b extu s1,s1,15,0 + 3bc04afe: 009b9023 sh s1,0(s7) + 3bc04b02: 02091493 slli s1,s2,0x20 + 3bc04b06: 01f4db93 srli s7,s1,0x1f + 3bc04b0a: b326448b lurhu s1,a2,s2,1 + 3bc04b0e: 9bb2 add s7,s7,a2 + 3bc04b10: 00048e9b sext.w t4,s1 + 3bc04b14: 00d3fa63 bgeu t2,a3,3bc04b28 + 3bc04b18: 9817428b lbuia t0,(a4),1,0 + 3bc04b1c: 0087979b slliw a5,a5,0x8 + 3bc04b20: 0083939b slliw t2,t2,0x8 + 3bc04b24: 00f2e7b3 or a5,t0,a5 + 3bc04b28: 00b3db1b srliw s6,t2,0xb + 3bc04b2c: 03db02bb mulw t0,s6,t4 + 3bc04b30: 0019191b slliw s2,s2,0x1 + 3bc04b34: 1057f163 bgeu a5,t0,3bc04c36 + 3bc04b38: 41d40ebb subw t4,s0,t4 + 3bc04b3c: 005ede9b srliw t4,t4,0x5 + 3bc04b40: 009e84bb addw s1,t4,s1 + 3bc04b44: 3c04b48b extu s1,s1,15,0 + 3bc04b48: 009b9023 sh s1,0(s7) + 3bc04b4c: b3264b8b lurhu s7,a2,s2,1 + 3bc04b50: 02091493 slli s1,s2,0x20 + 3bc04b54: 01f4db13 srli s6,s1,0x1f + 3bc04b58: 9b32 add s6,s6,a2 + 3bc04b5a: 000b8e9b sext.w t4,s7 + 3bc04b5e: 00d2f963 bgeu t0,a3,3bc04b70 + 3bc04b62: 9817460b lbuia a2,(a4),1,0 + 3bc04b66: 0087979b slliw a5,a5,0x8 + 3bc04b6a: 0082929b slliw t0,t0,0x8 + 3bc04b6e: 8fd1 or a5,a5,a2 + 3bc04b70: 00b2d39b srliw t2,t0,0xb + 3bc04b74: 03d3863b mulw a2,t2,t4 + 3bc04b78: 0019149b slliw s1,s2,0x1 + 3bc04b7c: 0cc7f963 bgeu a5,a2,3bc04c4e + 3bc04b80: 41d40ebb subw t4,s0,t4 + 3bc04b84: 005ede9b srliw t4,t4,0x5 + 3bc04b88: 017e8ebb addw t4,t4,s7 + 3bc04b8c: 01db1023 sh t4,0(s6) + 3bc04b90: 010a548b srb s1,s4,a6,0 + 3bc04b94: 0805 addi a6,a6,1 + 3bc04b96: 64a2 ld s1,8(sp) + 3bc04b98: 649870e3 bgeu a6,s1,3bc059d8 + 3bc04b9c: 74c2 ld s1,48(sp) + 3bc04b9e: d09768e3 bltu a4,s1,3bc048ae + 3bc04ba2: 6370006f j 3bc059d8 + 3bc04ba6: 005ede9b srliw t4,t4,0x5 + 3bc04baa: 41d383bb subw t2,t2,t4 + 3bc04bae: 412787bb subw a5,a5,s2 + 3bc04bb2: 3c03b38b extu t2,t2,15,0 + 3bc04bb6: 4124893b subw s2,s1,s2 + 3bc04bba: 4e8d li t4,3 + 3bc04bbc: bbd9 j 3bc04992 + 3bc04bbe: 0052d29b srliw t0,t0,0x5 + 3bc04bc2: 405484bb subw s1,s1,t0 + 3bc04bc6: 407787bb subw a5,a5,t2 + 3bc04bca: 3c04b48b extu s1,s1,15,0 + 3bc04bce: 001c0e9b addiw t4,s8,1 + 3bc04bd2: 407903bb subw t2,s2,t2 + 3bc04bd6: b509 j 3bc049d8 + 3bc04bd8: 0052d29b srliw t0,t0,0x5 + 3bc04bdc: 4059093b subw s2,s2,t0 + 3bc04be0: 9f85 subw a5,a5,s1 + 3bc04be2: 3c09390b extu s2,s2,15,0 + 3bc04be6: 2b05 addiw s6,s6,1 + 3bc04be8: 409384bb subw s1,t2,s1 + 3bc04bec: bd15 j 3bc04a20 + 3bc04bee: 005ede9b srliw t4,t4,0x5 + 3bc04bf2: 41d282bb subw t0,t0,t4 + 3bc04bf6: 407787bb subw a5,a5,t2 + 3bc04bfa: 3c02b28b extu t0,t0,15,0 + 3bc04bfe: 2905 addiw s2,s2,1 + 3bc04c00: 407483bb subw t2,s1,t2 + 3bc04c04: b59d j 3bc04a6a + 3bc04c06: 005ede9b srliw t4,t4,0x5 + 3bc04c0a: 41d484bb subw s1,s1,t4 + 3bc04c0e: 405787bb subw a5,a5,t0 + 3bc04c12: 3c04b48b extu s1,s1,15,0 + 3bc04c16: 2905 addiw s2,s2,1 + 3bc04c18: 405382bb subw t0,t2,t0 + 3bc04c1c: bd61 j 3bc04ab4 + 3bc04c1e: 005ede9b srliw t4,t4,0x5 + 3bc04c22: 41d484bb subw s1,s1,t4 + 3bc04c26: 407787bb subw a5,a5,t2 + 3bc04c2a: 3c04b48b extu s1,s1,15,0 + 3bc04c2e: 2905 addiw s2,s2,1 + 3bc04c30: 407283bb subw t2,t0,t2 + 3bc04c34: b5e9 j 3bc04afe + 3bc04c36: 005ede9b srliw t4,t4,0x5 + 3bc04c3a: 41d484bb subw s1,s1,t4 + 3bc04c3e: 405787bb subw a5,a5,t0 + 3bc04c42: 3c04b48b extu s1,s1,15,0 + 3bc04c46: 2905 addiw s2,s2,1 + 3bc04c48: 405382bb subw t0,t2,t0 + 3bc04c4c: bdf5 j 3bc04b48 + 3bc04c4e: 005ede9b srliw t4,t4,0x5 + 3bc04c52: 41db8ebb subw t4,s7,t4 + 3bc04c56: 9f91 subw a5,a5,a2 + 3bc04c58: 01db1023 sh t4,0(s6) + 3bc04c5c: 2485 addiw s1,s1,1 + 3bc04c5e: 40c2863b subw a2,t0,a2 + 3bc04c62: b73d j 3bc04b90 + 3bc04c64: 7c0fb90b extu s2,t6,31,0 + 3bc04c68: 41280eb3 sub t4,a6,s2 + 3bc04c6c: 83d6 mv t2,s5 + 3bc04c6e: 01286363 bltu a6,s2,3bc04c74 + 3bc04c72: 4381 li t2,0 + 3bc04c74: 9ed2 add t4,t4,s4 + 3bc04c76: 4925 li s2,9 + 3bc04c78: 807ece8b lrbu t4,t4,t2,0 + 3bc04c7c: 438d li t2,3 + 3bc04c7e: 01197363 bgeu s2,a7,3bc04c84 + 3bc04c82: 4399 li t2,6 + 3bc04c84: 001e9b1b slliw s6,t4,0x1 + 3bc04c88: 100b7b13 andi s6,s6,256 + 3bc04c8c: 407888bb subw a7,a7,t2 + 3bc04c90: 101b039b addiw t2,s6,257 + 3bc04c94: b2764c0b lurhu s8,a2,t2,1 + 3bc04c98: 101b0b93 addi s7,s6,257 + 3bc04c9c: 03761b8b addsl s7,a2,s7,1 + 3bc04ca0: 000c039b sext.w t2,s8 + 3bc04ca4: 00d4fa63 bgeu s1,a3,3bc04cb8 + 3bc04ca8: 0082949b slliw s1,t0,0x8 + 3bc04cac: 9817428b lbuia t0,(a4),1,0 + 3bc04cb0: 0087979b slliw a5,a5,0x8 + 3bc04cb4: 00f2e7b3 or a5,t0,a5 + 3bc04cb8: 00b4d29b srliw t0,s1,0xb + 3bc04cbc: 0272893b mulw s2,t0,t2 + 3bc04cc0: 2b27ff63 bgeu a5,s2,3bc04f7e + 3bc04cc4: 407403bb subw t2,s0,t2 + 3bc04cc8: 0053d39b srliw t2,t2,0x5 + 3bc04ccc: 01838c3b addw s8,t2,s8 + 3bc04cd0: 3c0c3c0b extu s8,s8,15,0 + 3bc04cd4: 100b4b13 xori s6,s6,256 + 3bc04cd8: 4289 li t0,2 + 3bc04cda: 002e939b slliw t2,t4,0x2 + 3bc04cde: 007b73b3 and t2,s6,t2 + 3bc04ce2: 005b04bb addw s1,s6,t0 + 3bc04ce6: 018b9023 sh s8,0(s7) + 3bc04cea: 00038c1b sext.w s8,t2 + 3bc04cee: 007483bb addw t2,s1,t2 + 3bc04cf2: b2764b8b lurhu s7,a2,t2,1 + 3bc04cf6: 02039493 slli s1,t2,0x20 + 3bc04cfa: 01f4dd13 srli s10,s1,0x1f + 3bc04cfe: 9d32 add s10,s10,a2 + 3bc04d00: 000b839b sext.w t2,s7 + 3bc04d04: 00d97963 bgeu s2,a3,3bc04d16 + 3bc04d08: 9817448b lbuia s1,(a4),1,0 + 3bc04d0c: 0087979b slliw a5,a5,0x8 + 3bc04d10: 0089191b slliw s2,s2,0x8 + 3bc04d14: 8fc5 or a5,a5,s1 + 3bc04d16: 00b95c9b srliw s9,s2,0xb + 3bc04d1a: 027c84bb mulw s1,s9,t2 + 3bc04d1e: 00129d9b slliw s11,t0,0x1 + 3bc04d22: 0286 slli t0,t0,0x1 + 3bc04d24: 2697f963 bgeu a5,s1,3bc04f96 + 3bc04d28: 407403bb subw t2,s0,t2 + 3bc04d2c: 0053d39b srliw t2,t2,0x5 + 3bc04d30: 01738bbb addw s7,t2,s7 + 3bc04d34: 3c0bbb8b extu s7,s7,15,0 + 3bc04d38: 018b4c33 xor s8,s6,s8 + 3bc04d3c: 003e939b slliw t2,t4,0x3 + 3bc04d40: 007c73b3 and t2,s8,t2 + 3bc04d44: 005c093b addw s2,s8,t0 + 3bc04d48: 017d1023 sh s7,0(s10) + 3bc04d4c: 00038b1b sext.w s6,t2 + 3bc04d50: 007903bb addw t2,s2,t2 + 3bc04d54: b2764c8b lurhu s9,a2,t2,1 + 3bc04d58: 02039913 slli s2,t2,0x20 + 3bc04d5c: 01f95d93 srli s11,s2,0x1f + 3bc04d60: 9db2 add s11,s11,a2 + 3bc04d62: 000c839b sext.w t2,s9 + 3bc04d66: 00d4fa63 bgeu s1,a3,3bc04d7a + 3bc04d6a: 9817490b lbuia s2,(a4),1,0 + 3bc04d6e: 0087979b slliw a5,a5,0x8 + 3bc04d72: 0084949b slliw s1,s1,0x8 + 3bc04d76: 00f967b3 or a5,s2,a5 + 3bc04d7a: 00b4dd1b srliw s10,s1,0xb + 3bc04d7e: 027d093b mulw s2,s10,t2 + 3bc04d82: 00129b9b slliw s7,t0,0x1 + 3bc04d86: 2327f463 bgeu a5,s2,3bc04fae + 3bc04d8a: 407403bb subw t2,s0,t2 + 3bc04d8e: 0053d39b srliw t2,t2,0x5 + 3bc04d92: 01938cbb addw s9,t2,s9 + 3bc04d96: 3c0cbc8b extu s9,s9,15,0 + 3bc04d9a: 016c4b33 xor s6,s8,s6 + 3bc04d9e: 004e929b slliw t0,t4,0x4 + 3bc04da2: 005b72b3 and t0,s6,t0 + 3bc04da6: 017b03bb addw t2,s6,s7 + 3bc04daa: 019d9023 sh s9,0(s11) + 3bc04dae: 00028c1b sext.w s8,t0 + 3bc04db2: 005382bb addw t0,t2,t0 + 3bc04db6: b256438b lurhu t2,a2,t0,1 + 3bc04dba: 02029493 slli s1,t0,0x20 + 3bc04dbe: 01f4dd13 srli s10,s1,0x1f + 3bc04dc2: 9d32 add s10,s10,a2 + 3bc04dc4: 0003829b sext.w t0,t2 + 3bc04dc8: 00d97963 bgeu s2,a3,3bc04dda + 3bc04dcc: 9817448b lbuia s1,(a4),1,0 + 3bc04dd0: 0087979b slliw a5,a5,0x8 + 3bc04dd4: 0089191b slliw s2,s2,0x8 + 3bc04dd8: 8fc5 or a5,a5,s1 + 3bc04dda: 00b95c9b srliw s9,s2,0xb + 3bc04dde: 025c84bb mulw s1,s9,t0 + 3bc04de2: 001b9b9b slliw s7,s7,0x1 + 3bc04de6: 1e97f063 bgeu a5,s1,3bc04fc6 + 3bc04dea: 405402bb subw t0,s0,t0 + 3bc04dee: 0052d29b srliw t0,t0,0x5 + 3bc04df2: 007283bb addw t2,t0,t2 + 3bc04df6: 3c03b38b extu t2,t2,15,0 + 3bc04dfa: 018b4c33 xor s8,s6,s8 + 3bc04dfe: 005e929b slliw t0,t4,0x5 + 3bc04e02: 007d1023 sh t2,0(s10) + 3bc04e06: 005c72b3 and t0,s8,t0 + 3bc04e0a: 017c03bb addw t2,s8,s7 + 3bc04e0e: 00028b1b sext.w s6,t0 + 3bc04e12: 005382bb addw t0,t2,t0 + 3bc04e16: b256490b lurhu s2,a2,t0,1 + 3bc04e1a: 02029393 slli t2,t0,0x20 + 3bc04e1e: 01f3dd13 srli s10,t2,0x1f + 3bc04e22: 9d32 add s10,s10,a2 + 3bc04e24: 0009029b sext.w t0,s2 + 3bc04e28: 00d4fa63 bgeu s1,a3,3bc04e3c + 3bc04e2c: 9817438b lbuia t2,(a4),1,0 + 3bc04e30: 0087979b slliw a5,a5,0x8 + 3bc04e34: 0084949b slliw s1,s1,0x8 + 3bc04e38: 00f3e7b3 or a5,t2,a5 + 3bc04e3c: 00b4dc9b srliw s9,s1,0xb + 3bc04e40: 025c83bb mulw t2,s9,t0 + 3bc04e44: 001b9b9b slliw s7,s7,0x1 + 3bc04e48: 1877fa63 bgeu a5,t2,3bc04fdc + 3bc04e4c: 405402bb subw t0,s0,t0 + 3bc04e50: 0052d29b srliw t0,t0,0x5 + 3bc04e54: 0122893b addw s2,t0,s2 + 3bc04e58: 3c09390b extu s2,s2,15,0 + 3bc04e5c: 016c4b33 xor s6,s8,s6 + 3bc04e60: 006e929b slliw t0,t4,0x6 + 3bc04e64: 005b72b3 and t0,s6,t0 + 3bc04e68: 017b04bb addw s1,s6,s7 + 3bc04e6c: 00028c1b sext.w s8,t0 + 3bc04e70: 005482bb addw t0,s1,t0 + 3bc04e74: 02029493 slli s1,t0,0x20 + 3bc04e78: 012d1023 sh s2,0(s10) + 3bc04e7c: 01f4dd13 srli s10,s1,0x1f + 3bc04e80: b256448b lurhu s1,a2,t0,1 + 3bc04e84: 9d32 add s10,s10,a2 + 3bc04e86: 0004829b sext.w t0,s1 + 3bc04e8a: 00d3fa63 bgeu t2,a3,3bc04e9e + 3bc04e8e: 9817490b lbuia s2,(a4),1,0 + 3bc04e92: 0087979b slliw a5,a5,0x8 + 3bc04e96: 0083939b slliw t2,t2,0x8 + 3bc04e9a: 00f967b3 or a5,s2,a5 + 3bc04e9e: 00b3dc9b srliw s9,t2,0xb + 3bc04ea2: 025c893b mulw s2,s9,t0 + 3bc04ea6: 001b9b9b slliw s7,s7,0x1 + 3bc04eaa: 1527f563 bgeu a5,s2,3bc04ff4 + 3bc04eae: 405402bb subw t0,s0,t0 + 3bc04eb2: 0052d29b srliw t0,t0,0x5 + 3bc04eb6: 009284bb addw s1,t0,s1 + 3bc04eba: 3c04b48b extu s1,s1,15,0 + 3bc04ebe: 018b4c33 xor s8,s6,s8 + 3bc04ec2: 007e929b slliw t0,t4,0x7 + 3bc04ec6: 005c72b3 and t0,s8,t0 + 3bc04eca: 017c03bb addw t2,s8,s7 + 3bc04ece: 009d1023 sh s1,0(s10) + 3bc04ed2: 0002849b sext.w s1,t0 + 3bc04ed6: 005382bb addw t0,t2,t0 + 3bc04eda: b2564b0b lurhu s6,a2,t0,1 + 3bc04ede: 02029393 slli t2,t0,0x20 + 3bc04ee2: 01f3dd93 srli s11,t2,0x1f + 3bc04ee6: 9db2 add s11,s11,a2 + 3bc04ee8: 000b029b sext.w t0,s6 + 3bc04eec: 00d97a63 bgeu s2,a3,3bc04f00 + 3bc04ef0: 9817438b lbuia t2,(a4),1,0 + 3bc04ef4: 0087979b slliw a5,a5,0x8 + 3bc04ef8: 0089191b slliw s2,s2,0x8 + 3bc04efc: 00f3e7b3 or a5,t2,a5 + 3bc04f00: 00b95d1b srliw s10,s2,0xb + 3bc04f04: 025d03bb mulw t2,s10,t0 + 3bc04f08: 001b9c9b slliw s9,s7,0x1 + 3bc04f0c: 1077f063 bgeu a5,t2,3bc0500c + 3bc04f10: 405402bb subw t0,s0,t0 + 3bc04f14: 0052d29b srliw t0,t0,0x5 + 3bc04f18: 01628b3b addw s6,t0,s6 + 3bc04f1c: 3c0b3b0b extu s6,s6,15,0 + 3bc04f20: 009c44b3 xor s1,s8,s1 + 3bc04f24: 008e9e9b slliw t4,t4,0x8 + 3bc04f28: 01d4feb3 and t4,s1,t4 + 3bc04f2c: 019484bb addw s1,s1,s9 + 3bc04f30: 01d48ebb addw t4,s1,t4 + 3bc04f34: 016d9023 sh s6,0(s11) + 3bc04f38: b3d64b0b lurhu s6,a2,t4,1 + 3bc04f3c: 020e9493 slli s1,t4,0x20 + 3bc04f40: 01f4d913 srli s2,s1,0x1f + 3bc04f44: 9932 add s2,s2,a2 + 3bc04f46: 000b0e9b sext.w t4,s6 + 3bc04f4a: 00d3f963 bgeu t2,a3,3bc04f5c + 3bc04f4e: 9817460b lbuia a2,(a4),1,0 + 3bc04f52: 0087979b slliw a5,a5,0x8 + 3bc04f56: 0083939b slliw t2,t2,0x8 + 3bc04f5a: 8fd1 or a5,a5,a2 + 3bc04f5c: 00b3d29b srliw t0,t2,0xb + 3bc04f60: 03d2863b mulw a2,t0,t4 + 3bc04f64: 001c949b slliw s1,s9,0x1 + 3bc04f68: 0ac7fe63 bgeu a5,a2,3bc05024 + 3bc04f6c: 41d40ebb subw t4,s0,t4 + 3bc04f70: 005ede9b srliw t4,t4,0x5 + 3bc04f74: 016e8ebb addw t4,t4,s6 + 3bc04f78: 01d91023 sh t4,0(s2) + 3bc04f7c: b911 j 3bc04b90 + 3bc04f7e: 0053d39b srliw t2,t2,0x5 + 3bc04f82: 407c0c3b subw s8,s8,t2 + 3bc04f86: 412787bb subw a5,a5,s2 + 3bc04f8a: 3c0c3c0b extu s8,s8,15,0 + 3bc04f8e: 4124893b subw s2,s1,s2 + 3bc04f92: 428d li t0,3 + 3bc04f94: b399 j 3bc04cda + 3bc04f96: 0053d39b srliw t2,t2,0x5 + 3bc04f9a: 407b8bbb subw s7,s7,t2 + 3bc04f9e: 9f85 subw a5,a5,s1 + 3bc04fa0: 3c0bbb8b extu s7,s7,15,0 + 3bc04fa4: 001d829b addiw t0,s11,1 + 3bc04fa8: 409904bb subw s1,s2,s1 + 3bc04fac: bb41 j 3bc04d3c + 3bc04fae: 0053d39b srliw t2,t2,0x5 + 3bc04fb2: 407c8cbb subw s9,s9,t2 + 3bc04fb6: 412787bb subw a5,a5,s2 + 3bc04fba: 3c0cbc8b extu s9,s9,15,0 + 3bc04fbe: 2b85 addiw s7,s7,1 + 3bc04fc0: 4124893b subw s2,s1,s2 + 3bc04fc4: bbe9 j 3bc04d9e + 3bc04fc6: 0052d29b srliw t0,t0,0x5 + 3bc04fca: 405383bb subw t2,t2,t0 + 3bc04fce: 9f85 subw a5,a5,s1 + 3bc04fd0: 3c03b38b extu t2,t2,15,0 + 3bc04fd4: 2b85 addiw s7,s7,1 + 3bc04fd6: 409904bb subw s1,s2,s1 + 3bc04fda: b515 j 3bc04dfe + 3bc04fdc: 0052d29b srliw t0,t0,0x5 + 3bc04fe0: 4059093b subw s2,s2,t0 + 3bc04fe4: 407787bb subw a5,a5,t2 + 3bc04fe8: 3c09390b extu s2,s2,15,0 + 3bc04fec: 2b85 addiw s7,s7,1 + 3bc04fee: 407483bb subw t2,s1,t2 + 3bc04ff2: b5bd j 3bc04e60 + 3bc04ff4: 0052d29b srliw t0,t0,0x5 + 3bc04ff8: 405484bb subw s1,s1,t0 + 3bc04ffc: 412787bb subw a5,a5,s2 + 3bc05000: 3c04b48b extu s1,s1,15,0 + 3bc05004: 2b85 addiw s7,s7,1 + 3bc05006: 4123893b subw s2,t2,s2 + 3bc0500a: bd65 j 3bc04ec2 + 3bc0500c: 0052d29b srliw t0,t0,0x5 + 3bc05010: 405b0b3b subw s6,s6,t0 + 3bc05014: 407787bb subw a5,a5,t2 + 3bc05018: 3c0b3b0b extu s6,s6,15,0 + 3bc0501c: 2c85 addiw s9,s9,1 + 3bc0501e: 407903bb subw t2,s2,t2 + 3bc05022: b709 j 3bc04f24 + 3bc05024: 005ede9b srliw t4,t4,0x5 + 3bc05028: 41db0ebb subw t4,s6,t4 + 3bc0502c: 9f91 subw a5,a5,a2 + 3bc0502e: 01d91023 sh t4,0(s2) + 3bc05032: 2485 addiw s1,s1,1 + 3bc05034: 40c3863b subw a2,t2,a2 + 3bc05038: bea1 j 3bc04b90 + 3bc0503a: 0053d39b srliw t2,t2,0x5 + 3bc0503e: 407b03bb subw t2,s6,t2 + 3bc05042: 2175d38b srh t2,a1,s7,0 + 3bc05046: 7c08bb8b extu s7,a7,31,0 + 3bc0504a: 0bc1 addi s7,s7,16 + 3bc0504c: a375cc0b lrhu s8,a1,s7,1 + 3bc05050: 409604bb subw s1,a2,s1 + 3bc05054: 405787bb subw a5,a5,t0 + 3bc05058: 001b9b13 slli s6,s7,0x1 + 3bc0505c: 000c039b sext.w t2,s8 + 3bc05060: 00d4fa63 bgeu s1,a3,3bc05074 + 3bc05064: 0087929b slliw t0,a5,0x8 + 3bc05068: 9817478b lbuia a5,(a4),1,0 + 3bc0506c: 0084949b slliw s1,s1,0x8 + 3bc05070: 0057e7b3 or a5,a5,t0 + 3bc05074: 00b4d29b srliw t0,s1,0xb + 3bc05078: 0272863b mulw a2,t0,t2 + 3bc0507c: 36c7ff63 bgeu a5,a2,3bc053fa + 3bc05080: 407403bb subw t2,s0,t2 + 3bc05084: 0053d39b srliw t2,t2,0x5 + 3bc05088: 62c6 ld t0,80(sp) + 3bc0508a: 018383bb addw t2,t2,s8 + 3bc0508e: 2375d38b srh t2,a1,s7,1 + 3bc05092: 28b1 addiw a7,a7,12 + 3bc05094: 8b7e mv s6,t6 + 3bc05096: 0002d383 lhu t2,0(t0) + 3bc0509a: 00038f9b sext.w t6,t2 + 3bc0509e: 00d67a63 bgeu a2,a3,3bc050b2 + 3bc050a2: 9817430b lbuia t1,(a4),1,0 + 3bc050a6: 0087979b slliw a5,a5,0x8 + 3bc050aa: 0086161b slliw a2,a2,0x8 + 3bc050ae: 00f367b3 or a5,t1,a5 + 3bc050b2: 00b6531b srliw t1,a2,0xb + 3bc050b6: 03f304bb mulw s1,t1,t6 + 3bc050ba: 8326 mv t1,s1 + 3bc050bc: 5297f663 bgeu a5,s1,3bc055e8 + 3bc050c0: 41f40fbb subw t6,s0,t6 + 3bc050c4: 005fdf9b srliw t6,t6,0x5 + 3bc050c8: 7c0ebe8b extu t4,t4,31,0 + 3bc050cc: 007f8fbb addw t6,t6,t2 + 3bc050d0: 01f29023 sh t6,0(t0) + 3bc050d4: 03d2928b addsl t0,t0,t4,1 + 3bc050d8: 0022de83 lhu t4,2(t0) + 3bc050dc: 000e861b sext.w a2,t4 + 3bc050e0: 00d4fa63 bgeu s1,a3,3bc050f4 + 3bc050e4: 9817430b lbuia t1,(a4),1,0 + 3bc050e8: 0087979b slliw a5,a5,0x8 + 3bc050ec: 0084949b slliw s1,s1,0x8 + 3bc050f0: 00f367b3 or a5,t1,a5 + 3bc050f4: 00b4d31b srliw t1,s1,0xb + 3bc050f8: 02c30fbb mulw t6,t1,a2 + 3bc050fc: 4bf7f263 bgeu a5,t6,3bc055a0 + 3bc05100: 40c4063b subw a2,s0,a2 + 3bc05104: 0056561b srliw a2,a2,0x5 + 3bc05108: 01d60ebb addw t4,a2,t4 + 3bc0510c: 3c0ebe8b extu t4,t4,15,0 + 3bc05110: 4309 li t1,2 + 3bc05112: 01d29123 sh t4,2(t0) + 3bc05116: b262c38b lurhu t2,t0,t1,1 + 3bc0511a: 7c03390b extu s2,t1,31,0 + 3bc0511e: 0003861b sext.w a2,t2 + 3bc05122: 00dffa63 bgeu t6,a3,3bc05136 + 3bc05126: 98174e8b lbuia t4,(a4),1,0 + 3bc0512a: 0087979b slliw a5,a5,0x8 + 3bc0512e: 008f9f9b slliw t6,t6,0x8 + 3bc05132: 00fee7b3 or a5,t4,a5 + 3bc05136: 00bfd49b srliw s1,t6,0xb + 3bc0513a: 02c48ebb mulw t4,s1,a2 + 3bc0513e: 00131b9b slliw s7,t1,0x1 + 3bc05142: 0306 slli t1,t1,0x1 + 3bc05144: 47d7fa63 bgeu a5,t4,3bc055b8 + 3bc05148: 40c4063b subw a2,s0,a2 + 3bc0514c: 0056561b srliw a2,a2,0x5 + 3bc05150: 007603bb addw t2,a2,t2 + 3bc05154: 3c03b38b extu t2,t2,15,0 + 3bc05158: 2322d38b srh t2,t0,s2,1 + 3bc0515c: b262c38b lurhu t2,t0,t1,1 + 3bc05160: 7c033b8b extu s7,t1,31,0 + 3bc05164: 00038f9b sext.w t6,t2 + 3bc05168: 00def963 bgeu t4,a3,3bc0517a + 3bc0516c: 9817460b lbuia a2,(a4),1,0 + 3bc05170: 0087979b slliw a5,a5,0x8 + 3bc05174: 008e9e9b slliw t4,t4,0x8 + 3bc05178: 8fd1 or a5,a5,a2 + 3bc0517a: 00bed91b srliw s2,t4,0xb + 3bc0517e: 03f9063b mulw a2,s2,t6 + 3bc05182: 0013131b slliw t1,t1,0x1 + 3bc05186: 44c7f663 bgeu a5,a2,3bc055d2 + 3bc0518a: 41f40fbb subw t6,s0,t6 + 3bc0518e: 005fdf9b srliw t6,t6,0x5 + 3bc05192: 007f83bb addw t2,t6,t2 + 3bc05196: 3c03b38b extu t2,t2,15,0 + 3bc0519a: 2372d38b srh t2,t0,s7,1 + 3bc0519e: 3361 addiw t1,t1,-8 + 3bc051a0: 44ad li s1,11 + 3bc051a2: 1114f5e3 bgeu s1,a7,3bc05aac + 3bc051a6: 448d li s1,3 + 3bc051a8: 8f9a mv t6,t1 + 3bc051aa: 0064f363 bgeu s1,t1,3bc051b0 + 3bc051ae: 4f8d li t6,3 + 3bc051b0: 006f9f9b slliw t6,t6,0x6 + 3bc051b4: 040f8f9b addiw t6,t6,64 + 3bc051b8: 7c0fbf8b extu t6,t6,31,0 + 3bc051bc: 03f59f8b addsl t6,a1,t6,1 + 3bc051c0: 002fd383 lhu t2,2(t6) + 3bc051c4: 00038e9b sext.w t4,t2 + 3bc051c8: 00d67a63 bgeu a2,a3,3bc051dc + 3bc051cc: 9817428b lbuia t0,(a4),1,0 + 3bc051d0: 0087979b slliw a5,a5,0x8 + 3bc051d4: 0086161b slliw a2,a2,0x8 + 3bc051d8: 00f2e7b3 or a5,t0,a5 + 3bc051dc: 00b6549b srliw s1,a2,0xb + 3bc051e0: 03d482bb mulw t0,s1,t4 + 3bc051e4: 5e57f763 bgeu a5,t0,3bc057d2 + 3bc051e8: 41d40ebb subw t4,s0,t4 + 3bc051ec: 005ede9b srliw t4,t4,0x5 + 3bc051f0: 007e83bb addw t2,t4,t2 + 3bc051f4: 3c03b38b extu t2,t2,15,0 + 3bc051f8: 4609 li a2,2 + 3bc051fa: 007f9123 sh t2,2(t6) + 3bc051fe: b2cfc48b lurhu s1,t6,a2,1 + 3bc05202: 7c063b8b extu s7,a2,31,0 + 3bc05206: 00048e9b sext.w t4,s1 + 3bc0520a: 00d2fa63 bgeu t0,a3,3bc0521e + 3bc0520e: 9817438b lbuia t2,(a4),1,0 + 3bc05212: 0087979b slliw a5,a5,0x8 + 3bc05216: 0082929b slliw t0,t0,0x8 + 3bc0521a: 00f3e7b3 or a5,t2,a5 + 3bc0521e: 00b2d91b srliw s2,t0,0xb + 3bc05222: 03d903bb mulw t2,s2,t4 + 3bc05226: 00161c1b slliw s8,a2,0x1 + 3bc0522a: 0606 slli a2,a2,0x1 + 3bc0522c: 5a77ff63 bgeu a5,t2,3bc057ea + 3bc05230: 41d40ebb subw t4,s0,t4 + 3bc05234: 005ede9b srliw t4,t4,0x5 + 3bc05238: 009e84bb addw s1,t4,s1 + 3bc0523c: 3c04b48b extu s1,s1,15,0 + 3bc05240: 237fd48b srh s1,t6,s7,1 + 3bc05244: b2cfc48b lurhu s1,t6,a2,1 + 3bc05248: 7c063c0b extu s8,a2,31,0 + 3bc0524c: 00048e9b sext.w t4,s1 + 3bc05250: 00d3fa63 bgeu t2,a3,3bc05264 + 3bc05254: 9817428b lbuia t0,(a4),1,0 + 3bc05258: 0087979b slliw a5,a5,0x8 + 3bc0525c: 0083939b slliw t2,t2,0x8 + 3bc05260: 00f2e7b3 or a5,t0,a5 + 3bc05264: 00b3db9b srliw s7,t2,0xb + 3bc05268: 03db82bb mulw t0,s7,t4 + 3bc0526c: 0016191b slliw s2,a2,0x1 + 3bc05270: 5857fa63 bgeu a5,t0,3bc05804 + 3bc05274: 41d40ebb subw t4,s0,t4 + 3bc05278: 005ede9b srliw t4,t4,0x5 + 3bc0527c: 009e84bb addw s1,t4,s1 + 3bc05280: 3c04b48b extu s1,s1,15,0 + 3bc05284: 238fd48b srh s1,t6,s8,1 + 3bc05288: b32fc38b lurhu t2,t6,s2,1 + 3bc0528c: 7c093c0b extu s8,s2,31,0 + 3bc05290: 0003861b sext.w a2,t2 + 3bc05294: 00d2fa63 bgeu t0,a3,3bc052a8 + 3bc05298: 98174e8b lbuia t4,(a4),1,0 + 3bc0529c: 0087979b slliw a5,a5,0x8 + 3bc052a0: 0082929b slliw t0,t0,0x8 + 3bc052a4: 00fee7b3 or a5,t4,a5 + 3bc052a8: 00b2db9b srliw s7,t0,0xb + 3bc052ac: 02cb8ebb mulw t4,s7,a2 + 3bc052b0: 0019149b slliw s1,s2,0x1 + 3bc052b4: 57d7f463 bgeu a5,t4,3bc0581c + 3bc052b8: 40c4063b subw a2,s0,a2 + 3bc052bc: 0056561b srliw a2,a2,0x5 + 3bc052c0: 007603bb addw t2,a2,t2 + 3bc052c4: 3c03b38b extu t2,t2,15,0 + 3bc052c8: 238fd38b srh t2,t6,s8,1 + 3bc052cc: b29fc28b lurhu t0,t6,s1,1 + 3bc052d0: 7c04bc0b extu s8,s1,31,0 + 3bc052d4: 0002861b sext.w a2,t0 + 3bc052d8: 00defa63 bgeu t4,a3,3bc052ec + 3bc052dc: 9817438b lbuia t2,(a4),1,0 + 3bc052e0: 0087979b slliw a5,a5,0x8 + 3bc052e4: 008e9e9b slliw t4,t4,0x8 + 3bc052e8: 00f3e7b3 or a5,t2,a5 + 3bc052ec: 00bedb9b srliw s7,t4,0xb + 3bc052f0: 02cb83bb mulw t2,s7,a2 + 3bc052f4: 0014991b slliw s2,s1,0x1 + 3bc052f8: 5277fe63 bgeu a5,t2,3bc05834 + 3bc052fc: 40c4063b subw a2,s0,a2 + 3bc05300: 0056561b srliw a2,a2,0x5 + 3bc05304: 005602bb addw t0,a2,t0 + 3bc05308: 3c02b28b extu t0,t0,15,0 + 3bc0530c: 238fd28b srh t0,t6,s8,1 + 3bc05310: b32fc48b lurhu s1,t6,s2,1 + 3bc05314: 7c093c0b extu s8,s2,31,0 + 3bc05318: 0004829b sext.w t0,s1 + 3bc0531c: 00d3f963 bgeu t2,a3,3bc0532e + 3bc05320: 9817460b lbuia a2,(a4),1,0 + 3bc05324: 0087979b slliw a5,a5,0x8 + 3bc05328: 0083939b slliw t2,t2,0x8 + 3bc0532c: 8fd1 or a5,a5,a2 + 3bc0532e: 00b3db9b srliw s7,t2,0xb + 3bc05332: 025b863b mulw a2,s7,t0 + 3bc05336: 00191e9b slliw t4,s2,0x1 + 3bc0533a: 50c7f963 bgeu a5,a2,3bc0584c + 3bc0533e: 405402bb subw t0,s0,t0 + 3bc05342: 0052d29b srliw t0,t0,0x5 + 3bc05346: 009284bb addw s1,t0,s1 + 3bc0534a: 3c04b48b extu s1,s1,15,0 + 3bc0534e: fc0e8e9b addiw t4,t4,-64 + 3bc05352: 238fd48b srh s1,t6,s8,1 + 3bc05356: 000e839b sext.w t2,t4 + 3bc0535a: 448d li s1,3 + 3bc0535c: 0874f063 bgeu s1,t2,3bc053dc + 3bc05360: 001eff93 andi t6,t4,1 + 3bc05364: 44b5 li s1,13 + 3bc05366: 001ed29b srliw t0,t4,0x1 + 3bc0536a: 002fef93 ori t6,t6,2 + 3bc0536e: 5074e963 bltu s1,t2,3bc05880 + 3bc05372: 32fd addiw t0,t0,-1 + 3bc05374: 005f9fbb sllw t6,t6,t0 + 3bc05378: 2f85 addiw t6,t6,1 + 3bc0537a: 4c05 li s8,1 + 3bc0537c: 020f9493 slli s1,t6,0x20 + 3bc05380: 01f4db93 srli s7,s1,0x1f + 3bc05384: 74fd lui s1,0xfffff + 3bc05386: 30048493 addi s1,s1,768 # fffffffffffff300 <__BL2_END__+0xffffffffc43ebaf0> + 3bc0538a: 9ba6 add s7,s7,s1 + 3bc0538c: a175c48b lrhu s1,a1,s7,0 + 3bc05390: 0004839b sext.w t2,s1 + 3bc05394: 00d67a63 bgeu a2,a3,3bc053a8 + 3bc05398: 98174e8b lbuia t4,(a4),1,0 + 3bc0539c: 0087979b slliw a5,a5,0x8 + 3bc053a0: 0086161b slliw a2,a2,0x8 + 3bc053a4: 00fee7b3 or a5,t4,a5 + 3bc053a8: 00b6591b srliw s2,a2,0xb + 3bc053ac: 02790d3b mulw s10,s2,t2 + 3bc053b0: 001c1e9b slliw t4,s8,0x1 + 3bc053b4: 4ba7f963 bgeu a5,s10,3bc05866 + 3bc053b8: 407403bb subw t2,s0,t2 + 3bc053bc: 0053d39b srliw t2,t2,0x5 + 3bc053c0: 009384bb addw s1,t2,s1 + 3bc053c4: 3c04b48b extu s1,s1,15,0 + 3bc053c8: 018f8fbb addw t6,t6,s8 + 3bc053cc: 866a mv a2,s10 + 3bc053ce: 2175d48b srh s1,a1,s7,0 + 3bc053d2: 32fd addiw t0,t0,-1 + 3bc053d4: 48029763 bnez t0,3bc05862 + 3bc053d8: 41df83bb subw t2,t6,t4 + 3bc053dc: 44c9 li s1,18 + 3bc053de: 00138f9b addiw t6,t2,1 + 3bc053e2: 6d14f363 bgeu s1,a7,3bc05aa8 + 3bc053e6: 48a9 li a7,10 + 3bc053e8: 6ee2 ld t4,24(sp) + 3bc053ea: 41de1e8b mveqz t4,t3,t4 + 3bc053ee: 73d3e063 bltu t2,t4,3bc05b0e + 3bc053f2: 03053423 sd a6,40(a0) + 3bc053f6: c24ff06f j 3bc0481a + 3bc053fa: 0053d39b srliw t2,t2,0x5 + 3bc053fe: 407c03bb subw t2,s8,t2 + 3bc05402: 2375d38b srh t2,a1,s7,1 + 3bc05406: 018b0c13 addi s8,s6,24 + 3bc0540a: a185cb8b lrhu s7,a1,s8,0 + 3bc0540e: 40c48cbb subw s9,s1,a2 + 3bc05412: 9f91 subw a5,a5,a2 + 3bc05414: 000b839b sext.w t2,s7 + 3bc05418: 00dcfa63 bgeu s9,a3,3bc0542c + 3bc0541c: 0087929b slliw t0,a5,0x8 + 3bc05420: 9817478b lbuia a5,(a4),1,0 + 3bc05424: 008c9c9b slliw s9,s9,0x8 + 3bc05428: 0057e7b3 or a5,a5,t0 + 3bc0542c: 00bcd61b srliw a2,s9,0xb + 3bc05430: 027602bb mulw t0,a2,t2 + 3bc05434: 8616 mv a2,t0 + 3bc05436: 0a57f463 bgeu a5,t0,3bc054de + 3bc0543a: 407403bb subw t2,s0,t2 + 3bc0543e: 0053d39b srliw t2,t2,0x5 + 3bc05442: 74fd lui s1,0xfffff + 3bc05444: 017383bb addw t2,t2,s7 + 3bc05448: 40048493 addi s1,s1,1024 # fffffffffffff400 <__BL2_END__+0xffffffffc43ebbf0> + 3bc0544c: 2185d38b srh t2,a1,s8,0 + 3bc05450: 9926 add s2,s2,s1 + 3bc05452: a125c48b lrhu s1,a1,s2,0 + 3bc05456: 0004839b sext.w t2,s1 + 3bc0545a: 00d2f963 bgeu t0,a3,3bc0546c + 3bc0545e: 9817460b lbuia a2,(a4),1,0 + 3bc05462: 0087979b slliw a5,a5,0x8 + 3bc05466: 0082929b slliw t0,t0,0x8 + 3bc0546a: 8fd1 or a5,a5,a2 + 3bc0546c: 00b2db1b srliw s6,t0,0xb + 3bc05470: 027b063b mulw a2,s6,t2 + 3bc05474: 8b32 mv s6,a2 + 3bc05476: 02c7ff63 bgeu a5,a2,3bc054b4 + 3bc0547a: 407403bb subw t2,s0,t2 + 3bc0547e: 0053d39b srliw t2,t2,0x5 + 3bc05482: 009383bb addw t2,t2,s1 + 3bc05486: 2125d38b srh t2,a1,s2,0 + 3bc0548a: 7c0fb38b extu t2,t6,31,0 + 3bc0548e: 40780eb3 sub t4,a6,t2 + 3bc05492: 82d6 mv t0,s5 + 3bc05494: 00786363 bltu a6,t2,3bc0549a + 3bc05498: 4281 li t0,0 + 3bc0549a: 9ed2 add t4,t4,s4 + 3bc0549c: 805ece8b lrbu t4,t4,t0,0 + 3bc054a0: 2e05 addiw t3,t3,1 + 3bc054a2: 010a5e8b srb t4,s4,a6,0 + 3bc054a6: 4e99 li t4,6 + 3bc054a8: 0805 addi a6,a6,1 + 3bc054aa: 691ef963 bgeu t4,a7,3bc05b3c + 3bc054ae: 48ad li a7,11 + 3bc054b0: ee6ff06f j 3bc04b96 + 3bc054b4: 0053d39b srliw t2,t2,0x5 + 3bc054b8: 837a mv t1,t5 + 3bc054ba: 407483bb subw t2,s1,t2 + 3bc054be: 8f7e mv t5,t6 + 3bc054c0: 40c2863b subw a2,t0,a2 + 3bc054c4: 416787bb subw a5,a5,s6 + 3bc054c8: 2125d38b srh t2,a1,s2,0 + 3bc054cc: 8f9a mv t6,t1 + 3bc054ce: 4319 li t1,6 + 3bc054d0: 0d137663 bgeu t1,a7,3bc0559c + 3bc054d4: 48ad li a7,11 + 3bc054d6: 8b7a mv s6,t5 + 3bc054d8: 62a6 ld t0,72(sp) + 3bc054da: 8f7e mv t5,t6 + 3bc054dc: be6d j 3bc05096 + 3bc054de: 0053d39b srliw t2,t2,0x5 + 3bc054e2: 407b83bb subw t2,s7,t2 + 3bc054e6: 2185d38b srh t2,a1,s8,0 + 3bc054ea: 030b0493 addi s1,s6,48 + 3bc054ee: a095c38b lrhu t2,a1,s1,0 + 3bc054f2: 405c82bb subw t0,s9,t0 + 3bc054f6: 9f91 subw a5,a5,a2 + 3bc054f8: 0003831b sext.w t1,t2 + 3bc054fc: 00d2f963 bgeu t0,a3,3bc0550e + 3bc05500: 0087961b slliw a2,a5,0x8 + 3bc05504: 9817478b lbuia a5,(a4),1,0 + 3bc05508: 0082929b slliw t0,t0,0x8 + 3bc0550c: 8fd1 or a5,a5,a2 + 3bc0550e: 00b2d91b srliw s2,t0,0xb + 3bc05512: 0269063b mulw a2,s2,t1 + 3bc05516: 00c7fb63 bgeu a5,a2,3bc0552c + 3bc0551a: 4064033b subw t1,s0,t1 + 3bc0551e: 0053531b srliw t1,t1,0x5 + 3bc05522: 0073033b addw t1,t1,t2 + 3bc05526: 2095d30b srh t1,a1,s1,0 + 3bc0552a: b755 j 3bc054ce + 3bc0552c: 0053531b srliw t1,t1,0x5 + 3bc05530: 4063833b subw t1,t2,t1 + 3bc05534: 2095d30b srh t1,a1,s1,0 + 3bc05538: 048b0b13 addi s6,s6,72 + 3bc0553c: a165c38b lrhu t2,a1,s6,0 + 3bc05540: 40c28bbb subw s7,t0,a2 + 3bc05544: 9f91 subw a5,a5,a2 + 3bc05546: 0003831b sext.w t1,t2 + 3bc0554a: 00dbfa63 bgeu s7,a3,3bc0555e + 3bc0554e: 0087991b slliw s2,a5,0x8 + 3bc05552: 9817478b lbuia a5,(a4),1,0 + 3bc05556: 008b9b9b slliw s7,s7,0x8 + 3bc0555a: 0127e7b3 or a5,a5,s2 + 3bc0555e: 00bbd29b srliw t0,s7,0xb + 3bc05562: 0262863b mulw a2,t0,t1 + 3bc05566: 00c7fe63 bgeu a5,a2,3bc05582 + 3bc0556a: 4064033b subw t1,s0,t1 + 3bc0556e: 0053531b srliw t1,t1,0x5 + 3bc05572: 0073033b addw t1,t1,t2 + 3bc05576: 2165d30b srh t1,a1,s6,0 + 3bc0557a: 837a mv t1,t5 + 3bc0557c: 8f4e mv t5,s3 + 3bc0557e: 899a mv s3,t1 + 3bc05580: b7b9 j 3bc054ce + 3bc05582: 0053531b srliw t1,t1,0x5 + 3bc05586: 4063833b subw t1,t2,t1 + 3bc0558a: 9f91 subw a5,a5,a2 + 3bc0558c: 2165d30b srh t1,a1,s6,0 + 3bc05590: 40cb863b subw a2,s7,a2 + 3bc05594: 837a mv t1,t5 + 3bc05596: 7f02 ld t5,32(sp) + 3bc05598: f04e sd s3,32(sp) + 3bc0559a: b7d5 j 3bc0557e + 3bc0559c: 48a1 li a7,8 + 3bc0559e: bf25 j 3bc054d6 + 3bc055a0: 0056561b srliw a2,a2,0x5 + 3bc055a4: 40ce8ebb subw t4,t4,a2 + 3bc055a8: 41f787bb subw a5,a5,t6 + 3bc055ac: 3c0ebe8b extu t4,t4,15,0 + 3bc055b0: 41f48fbb subw t6,s1,t6 + 3bc055b4: 430d li t1,3 + 3bc055b6: beb1 j 3bc05112 + 3bc055b8: 0056561b srliw a2,a2,0x5 + 3bc055bc: 40c383bb subw t2,t2,a2 + 3bc055c0: 41d787bb subw a5,a5,t4 + 3bc055c4: 3c03b38b extu t2,t2,15,0 + 3bc055c8: 001b831b addiw t1,s7,1 + 3bc055cc: 41df8ebb subw t4,t6,t4 + 3bc055d0: b661 j 3bc05158 + 3bc055d2: 005fdf9b srliw t6,t6,0x5 + 3bc055d6: 41f383bb subw t2,t2,t6 + 3bc055da: 9f91 subw a5,a5,a2 + 3bc055dc: 3c03b38b extu t2,t2,15,0 + 3bc055e0: 2305 addiw t1,t1,1 + 3bc055e2: 40ce863b subw a2,t4,a2 + 3bc055e6: be55 j 3bc0519a + 3bc055e8: 005fdf9b srliw t6,t6,0x5 + 3bc055ec: 41f38fbb subw t6,t2,t6 + 3bc055f0: 0102d383 lhu t2,16(t0) + 3bc055f4: 01f29023 sh t6,0(t0) + 3bc055f8: 9e05 subw a2,a2,s1 + 3bc055fa: 406787bb subw a5,a5,t1 + 3bc055fe: 00038f9b sext.w t6,t2 + 3bc05602: 00d67a63 bgeu a2,a3,3bc05616 + 3bc05606: 0087931b slliw t1,a5,0x8 + 3bc0560a: 9817478b lbuia a5,(a4),1,0 + 3bc0560e: 0086161b slliw a2,a2,0x8 + 3bc05612: 0067e7b3 or a5,a5,t1 + 3bc05616: 00b6531b srliw t1,a2,0xb + 3bc0561a: 03f304bb mulw s1,t1,t6 + 3bc0561e: 1297f563 bgeu a5,s1,3bc05748 + 3bc05622: 41f40fbb subw t6,s0,t6 + 3bc05626: 005fdf9b srliw t6,t6,0x5 + 3bc0562a: 7c0ebe8b extu t4,t4,31,0 + 3bc0562e: 007f8fbb addw t6,t6,t2 + 3bc05632: 0ea1 addi t4,t4,8 + 3bc05634: 01f29823 sh t6,16(t0) + 3bc05638: 03d2928b addsl t0,t0,t4,1 + 3bc0563c: 0022df83 lhu t6,2(t0) + 3bc05640: 000f861b sext.w a2,t6 + 3bc05644: 00d4fa63 bgeu s1,a3,3bc05658 + 3bc05648: 9817430b lbuia t1,(a4),1,0 + 3bc0564c: 0087979b slliw a5,a5,0x8 + 3bc05650: 0084949b slliw s1,s1,0x8 + 3bc05654: 00f367b3 or a5,t1,a5 + 3bc05658: 00b4d31b srliw t1,s1,0xb + 3bc0565c: 02c30ebb mulw t4,t1,a2 + 3bc05660: 0bd7f063 bgeu a5,t4,3bc05700 + 3bc05664: 40c4063b subw a2,s0,a2 + 3bc05668: 0056561b srliw a2,a2,0x5 + 3bc0566c: 01f60fbb addw t6,a2,t6 + 3bc05670: 3c0fbf8b extu t6,t6,15,0 + 3bc05674: 4309 li t1,2 + 3bc05676: 01f29123 sh t6,2(t0) + 3bc0567a: b262c38b lurhu t2,t0,t1,1 + 3bc0567e: 7c03390b extu s2,t1,31,0 + 3bc05682: 0003861b sext.w a2,t2 + 3bc05686: 00defa63 bgeu t4,a3,3bc0569a + 3bc0568a: 98174f8b lbuia t6,(a4),1,0 + 3bc0568e: 0087979b slliw a5,a5,0x8 + 3bc05692: 008e9e9b slliw t4,t4,0x8 + 3bc05696: 00ffe7b3 or a5,t6,a5 + 3bc0569a: 00bed49b srliw s1,t4,0xb + 3bc0569e: 02c48fbb mulw t6,s1,a2 + 3bc056a2: 00131b9b slliw s7,t1,0x1 + 3bc056a6: 0306 slli t1,t1,0x1 + 3bc056a8: 07f7f863 bgeu a5,t6,3bc05718 + 3bc056ac: 40c4063b subw a2,s0,a2 + 3bc056b0: 0056561b srliw a2,a2,0x5 + 3bc056b4: 007603bb addw t2,a2,t2 + 3bc056b8: 3c03b38b extu t2,t2,15,0 + 3bc056bc: 2322d38b srh t2,t0,s2,1 + 3bc056c0: b262c48b lurhu s1,t0,t1,1 + 3bc056c4: 7c03390b extu s2,t1,31,0 + 3bc056c8: 00048e9b sext.w t4,s1 + 3bc056cc: 00dff963 bgeu t6,a3,3bc056de + 3bc056d0: 9817460b lbuia a2,(a4),1,0 + 3bc056d4: 0087979b slliw a5,a5,0x8 + 3bc056d8: 008f9f9b slliw t6,t6,0x8 + 3bc056dc: 8fd1 or a5,a5,a2 + 3bc056de: 00bfd39b srliw t2,t6,0xb + 3bc056e2: 03d3863b mulw a2,t2,t4 + 3bc056e6: 0013131b slliw t1,t1,0x1 + 3bc056ea: 04c7f463 bgeu a5,a2,3bc05732 + 3bc056ee: 41d40ebb subw t4,s0,t4 + 3bc056f2: 005ede9b srliw t4,t4,0x5 + 3bc056f6: 009e8ebb addw t4,t4,s1 + 3bc056fa: 2322de8b srh t4,t0,s2,1 + 3bc056fe: b44d j 3bc051a0 + 3bc05700: 0056561b srliw a2,a2,0x5 + 3bc05704: 40cf8fbb subw t6,t6,a2 + 3bc05708: 41d787bb subw a5,a5,t4 + 3bc0570c: 3c0fbf8b extu t6,t6,15,0 + 3bc05710: 41d48ebb subw t4,s1,t4 + 3bc05714: 430d li t1,3 + 3bc05716: b785 j 3bc05676 + 3bc05718: 0056561b srliw a2,a2,0x5 + 3bc0571c: 40c383bb subw t2,t2,a2 + 3bc05720: 41f787bb subw a5,a5,t6 + 3bc05724: 3c03b38b extu t2,t2,15,0 + 3bc05728: 001b831b addiw t1,s7,1 + 3bc0572c: 41fe8fbb subw t6,t4,t6 + 3bc05730: b771 j 3bc056bc + 3bc05732: 005ede9b srliw t4,t4,0x5 + 3bc05736: 41d48ebb subw t4,s1,t4 + 3bc0573a: 9f91 subw a5,a5,a2 + 3bc0573c: 2322de8b srh t4,t0,s2,1 + 3bc05740: 2305 addiw t1,t1,1 + 3bc05742: 40cf863b subw a2,t6,a2 + 3bc05746: bca9 j 3bc051a0 + 3bc05748: 005fdf9b srliw t6,t6,0x5 + 3bc0574c: 41f38fbb subw t6,t2,t6 + 3bc05750: 9e05 subw a2,a2,s1 + 3bc05752: 9f85 subw a5,a5,s1 + 3bc05754: 01f29823 sh t6,16(t0) + 3bc05758: 4305 li t1,1 + 3bc0575a: 0ff00b93 li s7,255 + 3bc0575e: 02031493 slli s1,t1,0x20 + 3bc05762: 01f4de93 srli t4,s1,0x1f + 3bc05766: 200e8e93 addi t4,t4,512 + 3bc0576a: a1d2cf8b lrhu t6,t0,t4,0 + 3bc0576e: 01d28c33 add s8,t0,t4 + 3bc05772: 000f8e9b sext.w t4,t6 + 3bc05776: 00d67a63 bgeu a2,a3,3bc0578a + 3bc0577a: 9817438b lbuia t2,(a4),1,0 + 3bc0577e: 0087979b slliw a5,a5,0x8 + 3bc05782: 0086161b slliw a2,a2,0x8 + 3bc05786: 00f3e7b3 or a5,t2,a5 + 3bc0578a: 00b6539b srliw t2,a2,0xb + 3bc0578e: 03d3893b mulw s2,t2,t4 + 3bc05792: 0013131b slliw t1,t1,0x1 + 3bc05796: 0327f263 bgeu a5,s2,3bc057ba + 3bc0579a: 41d40ebb subw t4,s0,t4 + 3bc0579e: 005ede9b srliw t4,t4,0x5 + 3bc057a2: 01fe8fbb addw t6,t4,t6 + 3bc057a6: 3c0fbf8b extu t6,t6,15,0 + 3bc057aa: 864a mv a2,s2 + 3bc057ac: 01fc1023 sh t6,0(s8) + 3bc057b0: fa6bf7e3 bgeu s7,t1,3bc0575e + 3bc057b4: f103031b addiw t1,t1,-240 + 3bc057b8: b2e5 j 3bc051a0 + 3bc057ba: 005ede9b srliw t4,t4,0x5 + 3bc057be: 41df8fbb subw t6,t6,t4 + 3bc057c2: 4126063b subw a2,a2,s2 + 3bc057c6: 412787bb subw a5,a5,s2 + 3bc057ca: 3c0fbf8b extu t6,t6,15,0 + 3bc057ce: 2305 addiw t1,t1,1 + 3bc057d0: bff1 j 3bc057ac + 3bc057d2: 005ede9b srliw t4,t4,0x5 + 3bc057d6: 41d383bb subw t2,t2,t4 + 3bc057da: 405787bb subw a5,a5,t0 + 3bc057de: 3c03b38b extu t2,t2,15,0 + 3bc057e2: 405602bb subw t0,a2,t0 + 3bc057e6: 460d li a2,3 + 3bc057e8: bc09 j 3bc051fa + 3bc057ea: 005ede9b srliw t4,t4,0x5 + 3bc057ee: 41d484bb subw s1,s1,t4 + 3bc057f2: 407787bb subw a5,a5,t2 + 3bc057f6: 3c04b48b extu s1,s1,15,0 + 3bc057fa: 001c061b addiw a2,s8,1 + 3bc057fe: 407283bb subw t2,t0,t2 + 3bc05802: bc3d j 3bc05240 + 3bc05804: 005ede9b srliw t4,t4,0x5 + 3bc05808: 41d484bb subw s1,s1,t4 + 3bc0580c: 405787bb subw a5,a5,t0 + 3bc05810: 3c04b48b extu s1,s1,15,0 + 3bc05814: 2905 addiw s2,s2,1 + 3bc05816: 405382bb subw t0,t2,t0 + 3bc0581a: b4ad j 3bc05284 + 3bc0581c: 0056561b srliw a2,a2,0x5 + 3bc05820: 40c383bb subw t2,t2,a2 + 3bc05824: 41d787bb subw a5,a5,t4 + 3bc05828: 3c03b38b extu t2,t2,15,0 + 3bc0582c: 2485 addiw s1,s1,1 + 3bc0582e: 41d28ebb subw t4,t0,t4 + 3bc05832: bc59 j 3bc052c8 + 3bc05834: 0056561b srliw a2,a2,0x5 + 3bc05838: 40c282bb subw t0,t0,a2 + 3bc0583c: 407787bb subw a5,a5,t2 + 3bc05840: 3c02b28b extu t0,t0,15,0 + 3bc05844: 2905 addiw s2,s2,1 + 3bc05846: 407e83bb subw t2,t4,t2 + 3bc0584a: b4c9 j 3bc0530c + 3bc0584c: 0052d29b srliw t0,t0,0x5 + 3bc05850: 405484bb subw s1,s1,t0 + 3bc05854: 9f91 subw a5,a5,a2 + 3bc05856: 3c04b48b extu s1,s1,15,0 + 3bc0585a: 2e85 addiw t4,t4,1 + 3bc0585c: 40c3863b subw a2,t2,a2 + 3bc05860: b4fd j 3bc0534e + 3bc05862: 8c76 mv s8,t4 + 3bc05864: be21 j 3bc0537c + 3bc05866: 0053d39b srliw t2,t2,0x5 + 3bc0586a: 407484bb subw s1,s1,t2 + 3bc0586e: 41a6063b subw a2,a2,s10 + 3bc05872: 41a787bb subw a5,a5,s10 + 3bc05876: 3c04b48b extu s1,s1,15,0 + 3bc0587a: 01fe8fbb addw t6,t4,t6 + 3bc0587e: be81 j 3bc053ce + 3bc05880: 32ed addiw t0,t0,-5 + 3bc05882: 00d67a63 bgeu a2,a3,3bc05896 + 3bc05886: 98174e8b lbuia t4,(a4),1,0 + 3bc0588a: 0087979b slliw a5,a5,0x8 + 3bc0588e: 0086161b slliw a2,a2,0x8 + 3bc05892: 00fee7b3 or a5,t4,a5 + 3bc05896: 0016539b srliw t2,a2,0x1 + 3bc0589a: 407787bb subw a5,a5,t2 + 3bc0589e: 41f7d49b sraiw s1,a5,0x1f + 3bc058a2: 001f9f9b slliw t6,t6,0x1 + 3bc058a6: 0003861b sext.w a2,t2 + 3bc058aa: 2f85 addiw t6,t6,1 + 3bc058ac: 0093f3b3 and t2,t2,s1 + 3bc058b0: 32fd addiw t0,t0,-1 + 3bc058b2: 01f48fbb addw t6,s1,t6 + 3bc058b6: 007787bb addw a5,a5,t2 + 3bc058ba: fc0294e3 bnez t0,3bc05882 + 3bc058be: 0025d283 lhu t0,2(a1) + 3bc058c2: 004f9f9b slliw t6,t6,0x4 + 3bc058c6: 00028e9b sext.w t4,t0 + 3bc058ca: 00d67a63 bgeu a2,a3,3bc058de + 3bc058ce: 9817438b lbuia t2,(a4),1,0 + 3bc058d2: 0087979b slliw a5,a5,0x8 + 3bc058d6: 0086161b slliw a2,a2,0x8 + 3bc058da: 00f3e7b3 or a5,t2,a5 + 3bc058de: 00b6549b srliw s1,a2,0xb + 3bc058e2: 03d483bb mulw t2,s1,t4 + 3bc058e6: 1677f463 bgeu a5,t2,3bc05a4e + 3bc058ea: 41d40ebb subw t4,s0,t4 + 3bc058ee: 005ede9b srliw t4,t4,0x5 + 3bc058f2: 005e82bb addw t0,t4,t0 + 3bc058f6: 3c02b28b extu t0,t0,15,0 + 3bc058fa: 4e89 li t4,2 + 3bc058fc: 00559123 sh t0,2(a1) + 3bc05900: b3d5c48b lurhu s1,a1,t4,1 + 3bc05904: 7c0ebb8b extu s7,t4,31,0 + 3bc05908: 0004861b sext.w a2,s1 + 3bc0590c: 00d3fa63 bgeu t2,a3,3bc05920 + 3bc05910: 9817428b lbuia t0,(a4),1,0 + 3bc05914: 0087979b slliw a5,a5,0x8 + 3bc05918: 0083939b slliw t2,t2,0x8 + 3bc0591c: 00f2e7b3 or a5,t0,a5 + 3bc05920: 00b3d91b srliw s2,t2,0xb + 3bc05924: 02c902bb mulw t0,s2,a2 + 3bc05928: 1257ff63 bgeu a5,t0,3bc05a66 + 3bc0592c: 40c4063b subw a2,s0,a2 + 3bc05930: 0056561b srliw a2,a2,0x5 + 3bc05934: 9cb1 addw s1,s1,a2 + 3bc05936: 3c04b48b extu s1,s1,15,0 + 3bc0593a: 0e89 addi t4,t4,2 + 3bc0593c: 2375d48b srh s1,a1,s7,1 + 3bc05940: b3d5cb8b lurhu s7,a1,t4,1 + 3bc05944: 7c0eb90b extu s2,t4,31,0 + 3bc05948: 000b861b sext.w a2,s7 + 3bc0594c: 00d2fa63 bgeu t0,a3,3bc05960 + 3bc05950: 9817438b lbuia t2,(a4),1,0 + 3bc05954: 0087979b slliw a5,a5,0x8 + 3bc05958: 0082929b slliw t0,t0,0x8 + 3bc0595c: 00f3e7b3 or a5,t2,a5 + 3bc05960: 00b2d49b srliw s1,t0,0xb + 3bc05964: 02c483bb mulw t2,s1,a2 + 3bc05968: 1077fa63 bgeu a5,t2,3bc05a7c + 3bc0596c: 40c4063b subw a2,s0,a2 + 3bc05970: 0056561b srliw a2,a2,0x5 + 3bc05974: 01760bbb addw s7,a2,s7 + 3bc05978: 3c0bbb8b extu s7,s7,15,0 + 3bc0597c: 2e91 addiw t4,t4,4 + 3bc0597e: 2325db8b srh s7,a1,s2,1 + 3bc05982: b3d5c48b lurhu s1,a1,t4,1 + 3bc05986: 7c0ebb8b extu s7,t4,31,0 + 3bc0598a: 0004829b sext.w t0,s1 + 3bc0598e: 00d3f963 bgeu t2,a3,3bc059a0 + 3bc05992: 9817460b lbuia a2,(a4),1,0 + 3bc05996: 0087979b slliw a5,a5,0x8 + 3bc0599a: 0083939b slliw t2,t2,0x8 + 3bc0599e: 8fd1 or a5,a5,a2 + 3bc059a0: 00b3d91b srliw s2,t2,0xb + 3bc059a4: 0259063b mulw a2,s2,t0 + 3bc059a8: 0ec7f663 bgeu a5,a2,3bc05a94 + 3bc059ac: 405402bb subw t0,s0,t0 + 3bc059b0: 0052d29b srliw t0,t0,0x5 + 3bc059b4: 009284bb addw s1,t0,s1 + 3bc059b8: 3c04b48b extu s1,s1,15,0 + 3bc059bc: 3ee1 addiw t4,t4,-8 + 3bc059be: 01feefb3 or t6,t4,t6 + 3bc059c2: 2375d48b srh s1,a1,s7,1 + 3bc059c6: 000f839b sext.w t2,t6 + 3bc059ca: 54fd li s1,-1 + 3bc059cc: a09398e3 bne t2,s1,3bc053dc + 3bc059d0: 38d1 addiw a7,a7,-12 + 3bc059d2: 8fda mv t6,s6 + 3bc059d4: 11200313 li t1,274 + 3bc059d8: 010006b7 lui a3,0x1000 + 3bc059dc: 00d67963 bgeu a2,a3,3bc059ee + 3bc059e0: 9817468b lbuia a3,(a4),1,0 + 3bc059e4: 0087979b slliw a5,a5,0x8 + 3bc059e8: 0086161b slliw a2,a2,0x8 + 3bc059ec: 8fd5 or a5,a5,a3 + 3bc059ee: dd5c sw a5,60(a0) + 3bc059f0: 7782 ld a5,32(sp) + 3bc059f2: f918 sd a4,48(a0) + 3bc059f4: dd10 sw a2,56(a0) + 3bc059f6: c97c sw a5,84(a0) + 3bc059f8: 417c lw a5,68(a0) + 3bc059fa: 04652e23 sw t1,92(a0) + 3bc059fe: 03053423 sd a6,40(a0) + 3bc05a02: 05c52023 sw t3,64(a0) + 3bc05a06: 05f52423 sw t6,72(a0) + 3bc05a0a: 05e52623 sw t5,76(a0) + 3bc05a0e: 05352823 sw s3,80(a0) + 3bc05a12: 05152c23 sw a7,88(a0) + 3bc05a16: e789 bnez a5,3bc05a20 + 3bc05a18: 415c lw a5,4(a0) + 3bc05a1a: 00fe6363 bltu t3,a5,3bc05a20 + 3bc05a1e: c17c sw a5,68(a0) + 3bc05a20: 65c2 ld a1,16(sp) + 3bc05a22: e42a sd a0,8(sp) + 3bc05a24: d23fe0ef jal ra,3bc04746 + 3bc05a28: 6522 ld a0,8(sp) + 3bc05a2a: 6742 ld a4,16(sp) + 3bc05a2c: 751c ld a5,40(a0) + 3bc05a2e: 00e7fd63 bgeu a5,a4,3bc05a48 + 3bc05a32: 791c ld a5,48(a0) + 3bc05a34: 7742 ld a4,48(sp) + 3bc05a36: 00e7f963 bgeu a5,a4,3bc05a48 + 3bc05a3a: 4d78 lw a4,92(a0) + 3bc05a3c: 11100793 li a5,273 + 3bc05a40: 00e7e463 bltu a5,a4,3bc05a48 + 3bc05a44: d9bfe06f j 3bc047de + 3bc05a48: 4501 li a0,0 + 3bc05a4a: dd3fe06f j 3bc0481c + 3bc05a4e: 005ede9b srliw t4,t4,0x5 + 3bc05a52: 41d282bb subw t0,t0,t4 + 3bc05a56: 407787bb subw a5,a5,t2 + 3bc05a5a: 3c02b28b extu t0,t0,15,0 + 3bc05a5e: 407603bb subw t2,a2,t2 + 3bc05a62: 4e8d li t4,3 + 3bc05a64: bd61 j 3bc058fc + 3bc05a66: 0056561b srliw a2,a2,0x5 + 3bc05a6a: 9c91 subw s1,s1,a2 + 3bc05a6c: 405787bb subw a5,a5,t0 + 3bc05a70: 3c04b48b extu s1,s1,15,0 + 3bc05a74: 0e91 addi t4,t4,4 + 3bc05a76: 405382bb subw t0,t2,t0 + 3bc05a7a: b5c9 j 3bc0593c + 3bc05a7c: 0056561b srliw a2,a2,0x5 + 3bc05a80: 40cb8bbb subw s7,s7,a2 + 3bc05a84: 407787bb subw a5,a5,t2 + 3bc05a88: 3c0bbb8b extu s7,s7,15,0 + 3bc05a8c: 2ea1 addiw t4,t4,8 + 3bc05a8e: 407283bb subw t2,t0,t2 + 3bc05a92: b5f5 j 3bc0597e + 3bc05a94: 0052d29b srliw t0,t0,0x5 + 3bc05a98: 405484bb subw s1,s1,t0 + 3bc05a9c: 9f91 subw a5,a5,a2 + 3bc05a9e: 3c04b48b extu s1,s1,15,0 + 3bc05aa2: 40c3863b subw a2,t2,a2 + 3bc05aa6: bf21 j 3bc059be + 3bc05aa8: 489d li a7,7 + 3bc05aaa: ba3d j 3bc053e8 + 3bc05aac: 8fda mv t6,s6 + 3bc05aae: 64a2 ld s1,8(sp) + 3bc05ab0: 00230e9b addiw t4,t1,2 + 3bc05ab4: 8376 mv t1,t4 + 3bc05ab6: 410483b3 sub t2,s1,a6 + 3bc05aba: 93048ce3 beq s1,a6,3bc053f2 + 3bc05abe: 7c0eb28b extu t0,t4,31,0 + 3bc05ac2: 0053f463 bgeu t2,t0,3bc05aca + 3bc05ac6: 00038e9b sext.w t4,t2 + 3bc05aca: 7c0fb48b extu s1,t6,31,0 + 3bc05ace: 409803b3 sub t2,a6,s1 + 3bc05ad2: 82d6 mv t0,s5 + 3bc05ad4: 00986363 bltu a6,s1,3bc05ada + 3bc05ad8: 4281 li t0,0 + 3bc05ada: 9396 add t2,t2,t0 + 3bc05adc: 7c0eb48b extu s1,t4,31,0 + 3bc05ae0: 407a8933 sub s2,s5,t2 + 3bc05ae4: 01de0e3b addw t3,t3,t4 + 3bc05ae8: 41d3033b subw t1,t1,t4 + 3bc05aec: 010a02b3 add t0,s4,a6 + 3bc05af0: 02996363 bltu s2,s1,3bc05b16 + 3bc05af4: 410383b3 sub t2,t2,a6 + 3bc05af8: 00928eb3 add t4,t0,s1 + 3bc05afc: 9826 add a6,a6,s1 + 3bc05afe: 8072c48b lrbu s1,t0,t2,0 + 3bc05b02: 1812d48b sbia s1,(t0),1,0 + 3bc05b06: fe5e9ce3 bne t4,t0,3bc05afe + 3bc05b0a: 88cff06f j 3bc04b96 + 3bc05b0e: f04e sd s3,32(sp) + 3bc05b10: 89fa mv s3,t5 + 3bc05b12: 8f5a mv t5,s6 + 3bc05b14: bf69 j 3bc05aae + 3bc05b16: 84f6 mv s1,t4 + 3bc05b18: 807a490b lrbu s2,s4,t2,0 + 3bc05b1c: 0385 addi t2,t2,1 + 3bc05b1e: 01228023 sb s2,0(t0) + 3bc05b22: 007a9363 bne s5,t2,3bc05b28 + 3bc05b26: 4381 li t2,0 + 3bc05b28: 34fd addiw s1,s1,-1 + 3bc05b2a: 0285 addi t0,t0,1 + 3bc05b2c: f4f5 bnez s1,3bc05b18 + 3bc05b2e: 3efd addiw t4,t4,-1 + 3bc05b30: 0805 addi a6,a6,1 + 3bc05b32: 7c0ebe8b extu t4,t4,31,0 + 3bc05b36: 9876 add a6,a6,t4 + 3bc05b38: 85eff06f j 3bc04b96 + 3bc05b3c: 48a5 li a7,9 + 3bc05b3e: 858ff06f j 3bc04b96 + +000000003bc05b42 : + 3bc05b42: 00254703 lbu a4,2(a0) + 3bc05b46: 04052303 lw t1,64(a0) + 3bc05b4a: 4805 li a6,1 + 3bc05b4c: 00e8183b sllw a6,a6,a4 + 3bc05b50: 05852e83 lw t4,88(a0) + 3bc05b54: 387d addiw a6,a6,-1 + 3bc05b56: 01037833 and a6,t1,a6 + 3bc05b5a: 0048181b slliw a6,a6,0x4 + 3bc05b5e: 010e8e3b addw t3,t4,a6 + 3bc05b62: 01053883 ld a7,16(a0) + 3bc05b66: 020e1713 slli a4,t3,0x20 + 3bc05b6a: 5d14 lw a3,56(a0) + 3bc05b6c: 01f75e13 srli t3,a4,0x1f + 3bc05b70: 9e46 add t3,t3,a7 + 3bc05b72: 01000737 lui a4,0x1000 + 3bc05b76: 5d5c lw a5,60(a0) + 3bc05b78: e00e5f83 lhu t6,-512(t3) + 3bc05b7c: 8f2a mv t5,a0 + 3bc05b7e: 962e add a2,a2,a1 + 3bc05b80: 00e6fc63 bgeu a3,a4,3bc05b98 + 3bc05b84: 4501 li a0,0 + 3bc05b86: 0cc5f463 bgeu a1,a2,3bc05c4e + 3bc05b8a: 9815c70b lbuia a4,(a1),1,0 + 3bc05b8e: 0087979b slliw a5,a5,0x8 + 3bc05b92: 0086969b slliw a3,a3,0x8 + 3bc05b96: 8fd9 or a5,a5,a4 + 3bc05b98: 00b6d71b srliw a4,a3,0xb + 3bc05b9c: 03f7073b mulw a4,a4,t6 + 3bc05ba0: 14e7f063 bgeu a5,a4,3bc05ce0 + 3bc05ba4: 040f3683 ld a3,64(t5) + 3bc05ba8: 28088893 addi a7,a7,640 # f0280 <__BSS_SIZE__+0xea670> + 3bc05bac: caa1 beqz a3,3bc05bfc + 3bc05bae: 001f4503 lbu a0,1(t5) + 3bc05bb2: 4685 li a3,1 + 3bc05bb4: 000f4803 lbu a6,0(t5) + 3bc05bb8: 00a696bb sllw a3,a3,a0 + 3bc05bbc: 36fd addiw a3,a3,-1 + 3bc05bbe: 00d37333 and t1,t1,a3 + 3bc05bc2: 028f3683 ld a3,40(t5) + 3bc05bc6: 018f3e03 ld t3,24(t5) + 3bc05bca: 0103133b sllw t1,t1,a6 + 3bc05bce: fff68513 addi a0,a3,-1 # ffffff <__BSS_SIZE__+0xffa3ef> + 3bc05bd2: e681 bnez a3,3bc05bda + 3bc05bd4: 020f3503 ld a0,32(t5) + 3bc05bd8: 157d addi a0,a0,-1 + 3bc05bda: 80ae468b lrbu a3,t3,a0,0 + 3bc05bde: 4521 li a0,8 + 3bc05be0: 4105053b subw a0,a0,a6 + 3bc05be4: 40a6d6bb sraw a3,a3,a0 + 3bc05be8: 006686bb addw a3,a3,t1 + 3bc05bec: 30000513 li a0,768 + 3bc05bf0: 02a686bb mulw a3,a3,a0 + 3bc05bf4: 7c06b68b extu a3,a3,31,0 + 3bc05bf8: 02d8988b addsl a7,a7,a3,1 + 3bc05bfc: 4699 li a3,6 + 3bc05bfe: 05d6eb63 bltu a3,t4,3bc05c54 + 3bc05c02: 4685 li a3,1 + 3bc05c04: 01000eb7 lui t4,0x1000 + 3bc05c08: 0ff00e13 li t3,255 + 3bc05c0c: b2d8c80b lurhu a6,a7,a3,1 + 3bc05c10: 01d77b63 bgeu a4,t4,3bc05c26 + 3bc05c14: 2ec5f363 bgeu a1,a2,3bc05efa + 3bc05c18: 9815c50b lbuia a0,(a1),1,0 + 3bc05c1c: 0087979b slliw a5,a5,0x8 + 3bc05c20: 0087171b slliw a4,a4,0x8 + 3bc05c24: 8fc9 or a5,a5,a0 + 3bc05c26: 00b7551b srliw a0,a4,0xb + 3bc05c2a: 0305083b mulw a6,a0,a6 + 3bc05c2e: 0016969b slliw a3,a3,0x1 + 3bc05c32: 0107ef63 bltu a5,a6,3bc05c50 + 3bc05c36: 4107073b subw a4,a4,a6 + 3bc05c3a: 410787bb subw a5,a5,a6 + 3bc05c3e: 2685 addiw a3,a3,1 + 3bc05c40: fcde76e3 bgeu t3,a3,3bc05c0c + 3bc05c44: 4505 li a0,1 + 3bc05c46: 010007b7 lui a5,0x1000 + 3bc05c4a: 2af76663 bltu a4,a5,3bc05ef6 + 3bc05c4e: 8082 ret + 3bc05c50: 8742 mv a4,a6 + 3bc05c52: b7fd j 3bc05c40 + 3bc05c54: 028f3303 ld t1,40(t5) + 3bc05c58: 048f6803 lwu a6,72(t5) + 3bc05c5c: 018f3683 ld a3,24(t5) + 3bc05c60: 4501 li a0,0 + 3bc05c62: 41030e33 sub t3,t1,a6 + 3bc05c66: 01037463 bgeu t1,a6,3bc05c6e + 3bc05c6a: 020f3503 ld a0,32(t5) + 3bc05c6e: 96f2 add a3,a3,t3 + 3bc05c70: 80a6ce0b lrbu t3,a3,a0,0 + 3bc05c74: 010002b7 lui t0,0x1000 + 3bc05c78: 4685 li a3,1 + 3bc05c7a: 10000513 li a0,256 + 3bc05c7e: 0ff00f93 li t6,255 + 3bc05c82: 001e181b slliw a6,t3,0x1 + 3bc05c86: 00d5033b addw t1,a0,a3 + 3bc05c8a: 00080e1b sext.w t3,a6 + 3bc05c8e: 01057833 and a6,a0,a6 + 3bc05c92: 00080e9b sext.w t4,a6 + 3bc05c96: 0103083b addw a6,t1,a6 + 3bc05c9a: b308c30b lurhu t1,a7,a6,1 + 3bc05c9e: 00577c63 bgeu a4,t0,3bc05cb6 + 3bc05ca2: 24c5fc63 bgeu a1,a2,3bc05efa + 3bc05ca6: 9815c80b lbuia a6,(a1),1,0 + 3bc05caa: 0087979b slliw a5,a5,0x8 + 3bc05cae: 0087171b slliw a4,a4,0x8 + 3bc05cb2: 00f867b3 or a5,a6,a5 + 3bc05cb6: 00b7581b srliw a6,a4,0xb + 3bc05cba: 02680f3b mulw t5,a6,t1 + 3bc05cbe: 0016969b slliw a3,a3,0x1 + 3bc05cc2: 01e7f863 bgeu a5,t5,3bc05cd2 + 3bc05cc6: 01d54533 xor a0,a0,t4 + 3bc05cca: 877a mv a4,t5 + 3bc05ccc: fadffbe3 bgeu t6,a3,3bc05c82 + 3bc05cd0: bf95 j 3bc05c44 + 3bc05cd2: 41e7073b subw a4,a4,t5 + 3bc05cd6: 41e787bb subw a5,a5,t5 + 3bc05cda: 2685 addiw a3,a3,1 + 3bc05cdc: 8576 mv a0,t4 + 3bc05cde: b7fd j 3bc05ccc + 3bc05ce0: 7c0eb50b extu a0,t4,31,0 + 3bc05ce4: 0541 addi a0,a0,16 + 3bc05ce6: a2a8cf0b lrhu t5,a7,a0,1 + 3bc05cea: 00151e93 slli t4,a0,0x1 + 3bc05cee: 40e6833b subw t1,a3,a4 + 3bc05cf2: 01000537 lui a0,0x1000 + 3bc05cf6: 9f99 subw a5,a5,a4 + 3bc05cf8: 00a37c63 bgeu t1,a0,3bc05d10 + 3bc05cfc: 4501 li a0,0 + 3bc05cfe: f4c5f8e3 bgeu a1,a2,3bc05c4e + 3bc05d02: 9815c70b lbuia a4,(a1),1,0 + 3bc05d06: 0087979b slliw a5,a5,0x8 + 3bc05d0a: 0083131b slliw t1,t1,0x8 + 3bc05d0e: 8fd9 or a5,a5,a4 + 3bc05d10: 00b3571b srliw a4,t1,0xb + 3bc05d14: 03e706bb mulw a3,a4,t5 + 3bc05d18: 16d7f563 bgeu a5,a3,3bc05e82 + 3bc05d1c: a0088313 addi t1,a7,-1536 + 3bc05d20: 4509 li a0,2 + 3bc05d22: 4f01 li t5,0 + 3bc05d24: 01000e37 lui t3,0x1000 + 3bc05d28: 00035703 lhu a4,0(t1) + 3bc05d2c: 01c6fc63 bgeu a3,t3,3bc05d44 + 3bc05d30: 1cc5f563 bgeu a1,a2,3bc05efa + 3bc05d34: 9815ce0b lbuia t3,(a1),1,0 + 3bc05d38: 0087979b slliw a5,a5,0x8 + 3bc05d3c: 0086969b slliw a3,a3,0x8 + 3bc05d40: 00fe67b3 or a5,t3,a5 + 3bc05d44: 00b6de1b srliw t3,a3,0xb + 3bc05d48: 02ee073b mulw a4,t3,a4 + 3bc05d4c: 22e7fc63 bgeu a5,a4,3bc05f84 + 3bc05d50: 7c08380b extu a6,a6,31,0 + 3bc05d54: 0303130b addsl t1,t1,a6,1 + 3bc05d58: 4801 li a6,0 + 3bc05d5a: 46a1 li a3,8 + 3bc05d5c: 4e05 li t3,1 + 3bc05d5e: 010003b7 lui t2,0x1000 + 3bc05d62: b3c34f8b lurhu t6,t1,t3,1 + 3bc05d66: 00777c63 bgeu a4,t2,3bc05d7e + 3bc05d6a: 18c5f863 bgeu a1,a2,3bc05efa + 3bc05d6e: 9815ce8b lbuia t4,(a1),1,0 + 3bc05d72: 0087979b slliw a5,a5,0x8 + 3bc05d76: 0087171b slliw a4,a4,0x8 + 3bc05d7a: 00fee7b3 or a5,t4,a5 + 3bc05d7e: 00b75e9b srliw t4,a4,0xb + 3bc05d82: 03fe8fbb mulw t6,t4,t6 + 3bc05d86: 001e1e1b slliw t3,t3,0x1 + 3bc05d8a: 25f7e663 bltu a5,t6,3bc05fd6 + 3bc05d8e: 41f7073b subw a4,a4,t6 + 3bc05d92: 41f787bb subw a5,a5,t6 + 3bc05d96: 2e05 addiw t3,t3,1 + 3bc05d98: fcde65e3 bltu t3,a3,3bc05d62 + 3bc05d9c: 430d li t1,3 + 3bc05d9e: ebe364e3 bltu t1,t5,3bc05c46 + 3bc05da2: 40d806bb subw a3,a6,a3 + 3bc05da6: 01c6883b addw a6,a3,t3 + 3bc05daa: 86c2 mv a3,a6 + 3bc05dac: 01037363 bgeu t1,a6,3bc05db2 + 3bc05db0: 468d li a3,3 + 3bc05db2: 0066981b slliw a6,a3,0x6 + 3bc05db6: 0408081b addiw a6,a6,64 + 3bc05dba: 7c08380b extu a6,a6,31,0 + 3bc05dbe: 4685 li a3,1 + 3bc05dc0: 01000fb7 lui t6,0x1000 + 3bc05dc4: 03f00f13 li t5,63 + 3bc05dc8: 7c06b30b extu t1,a3,31,0 + 3bc05dcc: 9342 add t1,t1,a6 + 3bc05dce: a268ce0b lrhu t3,a7,t1,1 + 3bc05dd2: 01f77c63 bgeu a4,t6,3bc05dea + 3bc05dd6: 12c5f263 bgeu a1,a2,3bc05efa + 3bc05dda: 9815c30b lbuia t1,(a1),1,0 + 3bc05dde: 0087979b slliw a5,a5,0x8 + 3bc05de2: 0087171b slliw a4,a4,0x8 + 3bc05de6: 00f367b3 or a5,t1,a5 + 3bc05dea: 00b7531b srliw t1,a4,0xb + 3bc05dee: 03c30e3b mulw t3,t1,t3 + 3bc05df2: 0016969b slliw a3,a3,0x1 + 3bc05df6: 1fc7e263 bltu a5,t3,3bc05fda + 3bc05dfa: 41c7073b subw a4,a4,t3 + 3bc05dfe: 41c787bb subw a5,a5,t3 + 3bc05e02: 2685 addiw a3,a3,1 + 3bc05e04: fcdf72e3 bgeu t5,a3,3bc05dc8 + 3bc05e08: fc06869b addiw a3,a3,-64 + 3bc05e0c: 0006831b sext.w t1,a3 + 3bc05e10: 480d li a6,3 + 3bc05e12: e2687ae3 bgeu a6,t1,3bc05c46 + 3bc05e16: 4e35 li t3,13 + 3bc05e18: 0016d81b srliw a6,a3,0x1 + 3bc05e1c: 1c6e6163 bltu t3,t1,3bc05fde + 3bc05e20: 8a85 andi a3,a3,1 + 3bc05e22: 387d addiw a6,a6,-1 + 3bc05e24: 0026e693 ori a3,a3,2 + 3bc05e28: 010696bb sllw a3,a3,a6 + 3bc05e2c: 02069313 slli t1,a3,0x20 + 3bc05e30: 01f35693 srli a3,t1,0x1f + 3bc05e34: 737d lui t1,0xfffff + 3bc05e36: 30030313 addi t1,t1,768 # fffffffffffff300 <__BL2_END__+0xffffffffc43ebaf0> + 3bc05e3a: 969a add a3,a3,t1 + 3bc05e3c: 98b6 add a7,a7,a3 + 3bc05e3e: 4e05 li t3,1 + 3bc05e40: 4685 li a3,1 + 3bc05e42: 010002b7 lui t0,0x1000 + 3bc05e46: b2d8ce8b lurhu t4,a7,a3,1 + 3bc05e4a: 00577c63 bgeu a4,t0,3bc05e62 + 3bc05e4e: 0ac5f663 bgeu a1,a2,3bc05efa + 3bc05e52: 9815c30b lbuia t1,(a1),1,0 + 3bc05e56: 0087979b slliw a5,a5,0x8 + 3bc05e5a: 0087171b slliw a4,a4,0x8 + 3bc05e5e: 00f367b3 or a5,t1,a5 + 3bc05e62: 00b7531b srliw t1,a4,0xb + 3bc05e66: 03d30f3b mulw t5,t1,t4 + 3bc05e6a: 001e1f9b slliw t6,t3,0x1 + 3bc05e6e: 1be7f763 bgeu a5,t5,3bc0601c + 3bc05e72: 01c686bb addw a3,a3,t3 + 3bc05e76: 877a mv a4,t5 + 3bc05e78: 387d addiw a6,a6,-1 + 3bc05e7a: dc0806e3 beqz a6,3bc05c46 + 3bc05e7e: 8e7e mv t3,t6 + 3bc05e80: b7d9 j 3bc05e46 + 3bc05e82: 40d3053b subw a0,t1,a3 + 3bc05e86: 9ec6 add t4,t4,a7 + 3bc05e88: 01000f37 lui t5,0x1000 + 3bc05e8c: 40d7873b subw a4,a5,a3 + 3bc05e90: 832a mv t1,a0 + 3bc05e92: 018ed683 lhu a3,24(t4) # 1000018 <__BSS_SIZE__+0xffa408> + 3bc05e96: 01e57c63 bgeu a0,t5,3bc05eae + 3bc05e9a: 4501 li a0,0 + 3bc05e9c: dac5f9e3 bgeu a1,a2,3bc05c4e + 3bc05ea0: 0087179b slliw a5,a4,0x8 + 3bc05ea4: 9815c70b lbuia a4,(a1),1,0 + 3bc05ea8: 0083151b slliw a0,t1,0x8 + 3bc05eac: 8f5d or a4,a4,a5 + 3bc05eae: 00b5531b srliw t1,a0,0xb + 3bc05eb2: 02d306bb mulw a3,t1,a3 + 3bc05eb6: 8336 mv t1,a3 + 3bc05eb8: 04d77e63 bgeu a4,a3,3bc05f14 + 3bc05ebc: 77fd lui a5,0xfffff + 3bc05ebe: 9e3e add t3,t3,a5 + 3bc05ec0: 010007b7 lui a5,0x1000 + 3bc05ec4: 400e5e03 lhu t3,1024(t3) # 1000400 <__BSS_SIZE__+0xffa7f0> + 3bc05ec8: 00f6fc63 bgeu a3,a5,3bc05ee0 + 3bc05ecc: 4501 li a0,0 + 3bc05ece: d8c5f0e3 bgeu a1,a2,3bc05c4e + 3bc05ed2: 0087179b slliw a5,a4,0x8 + 3bc05ed6: 9815c70b lbuia a4,(a1),1,0 + 3bc05eda: 0086969b slliw a3,a3,0x8 + 3bc05ede: 8f5d or a4,a4,a5 + 3bc05ee0: 00b6d79b srliw a5,a3,0xb + 3bc05ee4: 03c7833b mulw t1,a5,t3 + 3bc05ee8: 00677b63 bgeu a4,t1,3bc05efe + 3bc05eec: 010007b7 lui a5,0x1000 + 3bc05ef0: 450d li a0,3 + 3bc05ef2: d4f37ee3 bgeu t1,a5,3bc05c4e + 3bc05ef6: d4c5ece3 bltu a1,a2,3bc05c4e + 3bc05efa: 4501 li a0,0 + 3bc05efc: bb89 j 3bc05c4e + 3bc05efe: 406686bb subw a3,a3,t1 + 3bc05f02: 406707bb subw a5,a4,t1 + 3bc05f06: 737d lui t1,0xfffff + 3bc05f08: 60030313 addi t1,t1,1536 # fffffffffffff600 <__BL2_END__+0xffffffffc43ebdf0> + 3bc05f0c: 9346 add t1,t1,a7 + 3bc05f0e: 450d li a0,3 + 3bc05f10: 4f31 li t5,12 + 3bc05f12: bd09 j 3bc05d24 + 3bc05f14: 9d15 subw a0,a0,a3 + 3bc05f16: 01000e37 lui t3,0x1000 + 3bc05f1a: 406707bb subw a5,a4,t1 + 3bc05f1e: 86aa mv a3,a0 + 3bc05f20: 030ed303 lhu t1,48(t4) + 3bc05f24: 01c57c63 bgeu a0,t3,3bc05f3c + 3bc05f28: 4501 li a0,0 + 3bc05f2a: d2c5f2e3 bgeu a1,a2,3bc05c4e + 3bc05f2e: 0087971b slliw a4,a5,0x8 + 3bc05f32: 9815c78b lbuia a5,(a1),1,0 + 3bc05f36: 0086951b slliw a0,a3,0x8 + 3bc05f3a: 8fd9 or a5,a5,a4 + 3bc05f3c: 00b5571b srliw a4,a0,0xb + 3bc05f40: 026706bb mulw a3,a4,t1 + 3bc05f44: 8736 mv a4,a3 + 3bc05f46: fcd7e0e3 bltu a5,a3,3bc05f06 + 3bc05f4a: 9d15 subw a0,a0,a3 + 3bc05f4c: 01000e37 lui t3,0x1000 + 3bc05f50: 048ed303 lhu t1,72(t4) + 3bc05f54: 86aa mv a3,a0 + 3bc05f56: 9f99 subw a5,a5,a4 + 3bc05f58: 01c57c63 bgeu a0,t3,3bc05f70 + 3bc05f5c: 4501 li a0,0 + 3bc05f5e: cec5f8e3 bgeu a1,a2,3bc05c4e + 3bc05f62: 0087971b slliw a4,a5,0x8 + 3bc05f66: 9815c78b lbuia a5,(a1),1,0 + 3bc05f6a: 0086951b slliw a0,a3,0x8 + 3bc05f6e: 8fd9 or a5,a5,a4 + 3bc05f70: 00b5571b srliw a4,a0,0xb + 3bc05f74: 026706bb mulw a3,a4,t1 + 3bc05f78: f8d7e7e3 bltu a5,a3,3bc05f06 + 3bc05f7c: 9f95 subw a5,a5,a3 + 3bc05f7e: 40d506bb subw a3,a0,a3 + 3bc05f82: b751 j 3bc05f06 + 3bc05f84: 40e68ebb subw t4,a3,a4 + 3bc05f88: 01000fb7 lui t6,0x1000 + 3bc05f8c: 9f99 subw a5,a5,a4 + 3bc05f8e: 01035703 lhu a4,16(t1) + 3bc05f92: 01fefc63 bgeu t4,t6,3bc05faa + 3bc05f96: f6c5f2e3 bgeu a1,a2,3bc05efa + 3bc05f9a: 00879e1b slliw t3,a5,0x8 + 3bc05f9e: 9815c78b lbuia a5,(a1),1,0 + 3bc05fa2: 008e9e9b slliw t4,t4,0x8 + 3bc05fa6: 01c7e7b3 or a5,a5,t3 + 3bc05faa: 00bed69b srliw a3,t4,0xb + 3bc05fae: 02e6873b mulw a4,a3,a4 + 3bc05fb2: 00e7f963 bgeu a5,a4,3bc05fc4 + 3bc05fb6: 7c08368b extu a3,a6,31,0 + 3bc05fba: 06a1 addi a3,a3,8 + 3bc05fbc: 02d3130b addsl t1,t1,a3,1 + 3bc05fc0: 4821 li a6,8 + 3bc05fc2: bb61 j 3bc05d5a + 3bc05fc4: 9f99 subw a5,a5,a4 + 3bc05fc6: 20030313 addi t1,t1,512 + 3bc05fca: 40ee873b subw a4,t4,a4 + 3bc05fce: 4841 li a6,16 + 3bc05fd0: 10000693 li a3,256 + 3bc05fd4: b361 j 3bc05d5c + 3bc05fd6: 877e mv a4,t6 + 3bc05fd8: b3c1 j 3bc05d98 + 3bc05fda: 8772 mv a4,t3 + 3bc05fdc: b525 j 3bc05e04 + 3bc05fde: 386d addiw a6,a6,-5 + 3bc05fe0: 01000e37 lui t3,0x1000 + 3bc05fe4: 01c77b63 bgeu a4,t3,3bc05ffa + 3bc05fe8: f0c5f9e3 bgeu a1,a2,3bc05efa + 3bc05fec: 9815c68b lbuia a3,(a1),1,0 + 3bc05ff0: 0087979b slliw a5,a5,0x8 + 3bc05ff4: 0087171b slliw a4,a4,0x8 + 3bc05ff8: 8fd5 or a5,a5,a3 + 3bc05ffa: 0017531b srliw t1,a4,0x1 + 3bc05ffe: 406786bb subw a3,a5,t1 + 3bc06002: 01f6d69b srliw a3,a3,0x1f + 3bc06006: 36fd addiw a3,a3,-1 + 3bc06008: 0066f6b3 and a3,a3,t1 + 3bc0600c: 387d addiw a6,a6,-1 + 3bc0600e: 0003071b sext.w a4,t1 + 3bc06012: 9f95 subw a5,a5,a3 + 3bc06014: fc0818e3 bnez a6,3bc05fe4 + 3bc06018: 4811 li a6,4 + 3bc0601a: b515 j 3bc05e3e + 3bc0601c: 41e7073b subw a4,a4,t5 + 3bc06020: 41e787bb subw a5,a5,t5 + 3bc06024: 00df86bb addw a3,t6,a3 + 3bc06028: bd81 j 3bc05e78 + +000000003bc0602a : + 3bc0602a: 11400793 li a5,276 + 3bc0602e: 02053423 sd zero,40(a0) # 1000028 <__BSS_SIZE__+0xffa418> + 3bc06032: 06052223 sw zero,100(a0) + 3bc06036: 04053023 sd zero,64(a0) + 3bc0603a: cd7c sw a5,92(a0) + 3bc0603c: 8082 ret + +000000003bc0603e : + 3bc0603e: 7175 addi sp,sp,-144 + 3bc06040: e122 sd s0,128(sp) + 3bc06042: f8ca sd s2,112(sp) + 3bc06044: f4ce sd s3,104(sp) + 3bc06046: f0d2 sd s4,96(sp) + 3bc06048: f86a sd s10,48(sp) + 3bc0604a: f46e sd s11,40(sp) + 3bc0604c: e506 sd ra,136(sp) + 3bc0604e: fca6 sd s1,120(sp) + 3bc06050: ecd6 sd s5,88(sp) + 3bc06052: e8da sd s6,80(sp) + 3bc06054: e4de sd s7,72(sp) + 3bc06056: e0e2 sd s8,64(sp) + 3bc06058: fc66 sd s9,56(sp) + 3bc0605a: 0006bd83 ld s11,0(a3) + 3bc0605e: 0006b023 sd zero,0(a3) + 3bc06062: 0007a023 sw zero,0(a5) # 1000000 <__BSS_SIZE__+0xffa3f0> + 3bc06066: e43a sd a4,8(sp) + 3bc06068: 4d78 lw a4,92(a0) + 3bc0606a: 89be mv s3,a5 + 3bc0606c: 11200793 li a5,274 + 3bc06070: 8932 mv s2,a2 + 3bc06072: 842a mv s0,a0 + 3bc06074: 8a2e mv s4,a1 + 3bc06076: 8d36 mv s10,a3 + 3bc06078: 4611 li a2,4 + 3bc0607a: 04e7e263 bltu a5,a4,3bc060be + 3bc0607e: 85d2 mv a1,s4 + 3bc06080: 8522 mv a0,s0 + 3bc06082: ec4fe0ef jal ra,3bc04746 + 3bc06086: 4b4d li s6,19 + 3bc06088: 06840a93 addi s5,s0,104 # 1068 <__BSS_SIZE__-0x4ba8> + 3bc0608c: 4c7c lw a5,92(s0) + 3bc0608e: 11200713 li a4,274 + 3bc06092: 0ce79663 bne a5,a4,3bc0615e + 3bc06096: 5c5c lw a5,60(s0) + 3bc06098: eb9d bnez a5,3bc060ce + 3bc0609a: 4785 li a5,1 + 3bc0609c: a8a1 j 3bc060f4 + 3bc0609e: 0017859b addiw a1,a5,1 + 3bc060a2: d06c sw a1,100(s0) + 3bc060a4: 9819458b lbuia a1,(s2),1,0 + 3bc060a8: 7c07b78b extu a5,a5,31,0 + 3bc060ac: 97a2 add a5,a5,s0 + 3bc060ae: 06b78423 sb a1,104(a5) + 3bc060b2: 000d3783 ld a5,0(s10) + 3bc060b6: 1dfd addi s11,s11,-1 + 3bc060b8: 0785 addi a5,a5,1 + 3bc060ba: 00fd3023 sd a5,0(s10) + 3bc060be: 507c lw a5,100(s0) + 3bc060c0: 020d8863 beqz s11,3bc060f0 + 3bc060c4: fcf67de3 bgeu a2,a5,3bc0609e + 3bc060c8: 06844603 lbu a2,104(s0) + 3bc060cc: ca05 beqz a2,3bc060fc + 3bc060ce: 4485 li s1,1 + 3bc060d0: 60aa ld ra,136(sp) + 3bc060d2: 640a ld s0,128(sp) + 3bc060d4: 7946 ld s2,112(sp) + 3bc060d6: 79a6 ld s3,104(sp) + 3bc060d8: 7a06 ld s4,96(sp) + 3bc060da: 6ae6 ld s5,88(sp) + 3bc060dc: 6b46 ld s6,80(sp) + 3bc060de: 6ba6 ld s7,72(sp) + 3bc060e0: 6c06 ld s8,64(sp) + 3bc060e2: 7ce2 ld s9,56(sp) + 3bc060e4: 7d42 ld s10,48(sp) + 3bc060e6: 7da2 ld s11,40(sp) + 3bc060e8: 8526 mv a0,s1 + 3bc060ea: 74e6 ld s1,120(sp) + 3bc060ec: 6149 addi sp,sp,144 + 3bc060ee: 8082 ret + 3bc060f0: ffe1 bnez a5,3bc060c8 + 3bc060f2: 478d li a5,3 + 3bc060f4: 00f9a023 sw a5,0(s3) + 3bc060f8: 4481 li s1,0 + 3bc060fa: bfd9 j 3bc060d0 + 3bc060fc: 4611 li a2,4 + 3bc060fe: fef67ae3 bgeu a2,a5,3bc060f2 + 3bc06102: 06942783 lw a5,105(s0) + 3bc06106: 06042223 sw zero,100(s0) + 3bc0610a: 9007978b revw a5,a5 + 3bc0610e: dc5c sw a5,60(s0) + 3bc06110: 57fd li a5,-1 + 3bc06112: dc1c sw a5,56(s0) + 3bc06114: 11300793 li a5,275 + 3bc06118: 02f70c63 beq a4,a5,3bc06150 + 3bc0611c: 00044783 lbu a5,0(s0) + 3bc06120: 00144703 lbu a4,1(s0) + 3bc06124: 6410 ld a2,8(s0) + 3bc06126: 40000593 li a1,1024 + 3bc0612a: 9f3d addw a4,a4,a5 + 3bc0612c: 30000793 li a5,768 + 3bc06130: 00e797bb sllw a5,a5,a4 + 3bc06134: 7c07879b addiw a5,a5,1984 + 3bc06138: 7c07b78b extu a5,a5,31,0 + 3bc0613c: 4701 li a4,0 + 3bc0613e: 00f76c63 bltu a4,a5,3bc06156 + 3bc06142: 4785 li a5,1 + 3bc06144: 1782 slli a5,a5,0x20 + 3bc06146: 0785 addi a5,a5,1 + 3bc06148: e43c sd a5,72(s0) + 3bc0614a: e83c sd a5,80(s0) + 3bc0614c: 04042c23 sw zero,88(s0) + 3bc06150: 04042e23 sw zero,92(s0) + 3bc06154: b72d j 3bc0607e + 3bc06156: 22e6558b srh a1,a2,a4,1 + 3bc0615a: 0705 addi a4,a4,1 + 3bc0615c: b7cd j 3bc0613e + 3bc0615e: 7418 ld a4,40(s0) + 3bc06160: 01476b63 bltu a4,s4,3bc06176 + 3bc06164: 12079f63 bnez a5,3bc062a2 + 3bc06168: 5c5c lw a5,60(s0) + 3bc0616a: 14079363 bnez a5,3bc062b0 + 3bc0616e: 4791 li a5,4 + 3bc06170: b751 j 3bc060f4 + 3bc06172: 4789 li a5,2 + 3bc06174: b741 j 3bc060f4 + 3bc06176: 4c81 li s9,0 + 3bc06178: 06442b83 lw s7,100(s0) + 3bc0617c: 0c0b9263 bnez s7,3bc06240 + 3bc06180: 01bb7463 bgeu s6,s11,3bc06188 + 3bc06184: 040c8263 beqz s9,3bc061c8 + 3bc06188: 866e mv a2,s11 + 3bc0618a: 85ca mv a1,s2 + 3bc0618c: 8522 mv a0,s0 + 3bc0618e: 9b5ff0ef jal ra,3bc05b42 + 3bc06192: 0005049b sext.w s1,a0 + 3bc06196: e095 bnez s1,3bc061ba + 3bc06198: 866e mv a2,s11 + 3bc0619a: 85ca mv a1,s2 + 3bc0619c: 06840513 addi a0,s0,104 + 3bc061a0: 8dbfa0ef jal ra,3bc00a7a + 3bc061a4: 000d3783 ld a5,0(s10) + 3bc061a8: 07b42223 sw s11,100(s0) + 3bc061ac: 9dbe add s11,s11,a5 + 3bc061ae: 01bd3023 sd s11,0(s10) + 3bc061b2: 478d li a5,3 + 3bc061b4: 00f9a023 sw a5,0(s3) + 3bc061b8: bf21 j 3bc060d0 + 3bc061ba: 000c8563 beqz s9,3bc061c4 + 3bc061be: 4789 li a5,2 + 3bc061c0: 0ef49463 bne s1,a5,3bc062a8 + 3bc061c4: 864a mv a2,s2 + 3bc061c6: a021 j 3bc061ce + 3bc061c8: fecd8613 addi a2,s11,-20 + 3bc061cc: 964a add a2,a2,s2 + 3bc061ce: 03243823 sd s2,48(s0) + 3bc061d2: 85d2 mv a1,s4 + 3bc061d4: 8522 mv a0,s0 + 3bc061d6: de2fe0ef jal ra,3bc047b8 + 3bc061da: ee051ae3 bnez a0,3bc060ce + 3bc061de: 7818 ld a4,48(s0) + 3bc061e0: 000d3783 ld a5,0(s10) + 3bc061e4: 41270933 sub s2,a4,s2 + 3bc061e8: 97ca add a5,a5,s2 + 3bc061ea: 00fd3023 sd a5,0(s10) + 3bc061ee: 412d8db3 sub s11,s11,s2 + 3bc061f2: 893a mv s2,a4 + 3bc061f4: bd61 j 3bc0608c + 3bc061f6: 8109478b lrbu a5,s2,a6,0 + 3bc061fa: 0106578b srb a5,a2,a6,0 + 3bc061fe: 0805 addi a6,a6,1 + 3bc06200: 0008079b sext.w a5,a6 + 3bc06204: e83e sd a5,16(sp) + 3bc06206: 01780c3b addw s8,a6,s7 + 3bc0620a: 018b6463 bltu s6,s8,3bc06212 + 3bc0620e: ffb814e3 bne a6,s11,3bc061f6 + 3bc06212: 07842223 sw s8,100(s0) + 3bc06216: 018b7463 bgeu s6,s8,3bc0621e + 3bc0621a: 020c8f63 beqz s9,3bc06258 + 3bc0621e: 7c0c360b extu a2,s8,31,0 + 3bc06222: 85d6 mv a1,s5 + 3bc06224: 8522 mv a0,s0 + 3bc06226: ec42 sd a6,24(sp) + 3bc06228: 91bff0ef jal ra,3bc05b42 + 3bc0622c: 0005049b sext.w s1,a0 + 3bc06230: 6862 ld a6,24(sp) + 3bc06232: ec91 bnez s1,3bc0624e + 3bc06234: 000d3783 ld a5,0(s10) + 3bc06238: 983e add a6,a6,a5 + 3bc0623a: 010d3023 sd a6,0(s10) + 3bc0623e: bf95 j 3bc061b2 + 3bc06240: 7c0bb60b extu a2,s7,31,0 + 3bc06244: 06860613 addi a2,a2,104 + 3bc06248: 4801 li a6,0 + 3bc0624a: 9622 add a2,a2,s0 + 3bc0624c: bf55 j 3bc06200 + 3bc0624e: 000c8563 beqz s9,3bc06258 + 3bc06252: 4789 li a5,2 + 3bc06254: 04f49a63 bne s1,a5,3bc062a8 + 3bc06258: 03543823 sd s5,48(s0) + 3bc0625c: 8656 mv a2,s5 + 3bc0625e: 85d2 mv a1,s4 + 3bc06260: 8522 mv a0,s0 + 3bc06262: d56fe0ef jal ra,3bc047b8 + 3bc06266: e60514e3 bnez a0,3bc060ce + 3bc0626a: 781c ld a5,48(s0) + 3bc0626c: 415787bb subw a5,a5,s5 + 3bc06270: 02fc6763 bltu s8,a5,3bc0629e + 3bc06274: 66c2 ld a3,16(sp) + 3bc06276: 40fc073b subw a4,s8,a5 + 3bc0627a: 02e6e263 bltu a3,a4,3bc0629e + 3bc0627e: 000d3703 ld a4,0(s10) + 3bc06282: 417787bb subw a5,a5,s7 + 3bc06286: 7c07b78b extu a5,a5,31,0 + 3bc0628a: 973e add a4,a4,a5 + 3bc0628c: 00ed3023 sd a4,0(s10) + 3bc06290: 40fd8db3 sub s11,s11,a5 + 3bc06294: 00f90733 add a4,s2,a5 + 3bc06298: 06042223 sw zero,100(s0) + 3bc0629c: bf99 j 3bc061f2 + 3bc0629e: 44ad li s1,11 + 3bc062a0: bd05 j 3bc060d0 + 3bc062a2: 67a2 ld a5,8(sp) + 3bc062a4: ec0787e3 beqz a5,3bc06172 + 3bc062a8: 4789 li a5,2 + 3bc062aa: 00f9a023 sw a5,0(s3) + 3bc062ae: b505 j 3bc060ce + 3bc062b0: 67a2 ld a5,8(sp) + 3bc062b2: ec0780e3 beqz a5,3bc06172 + 3bc062b6: 4c85 li s9,1 + 3bc062b8: b5c1 j 3bc06178 + +000000003bc062ba : + 3bc062ba: 1141 addi sp,sp,-16 + 3bc062bc: e022 sd s0,0(sp) + 3bc062be: 842a mv s0,a0 + 3bc062c0: 659c ld a5,8(a1) + 3bc062c2: 852e mv a0,a1 + 3bc062c4: 640c ld a1,8(s0) + 3bc062c6: e406 sd ra,8(sp) + 3bc062c8: 9782 jalr a5 + 3bc062ca: 60a2 ld ra,8(sp) + 3bc062cc: 00043423 sd zero,8(s0) + 3bc062d0: 6402 ld s0,0(sp) + 3bc062d2: 0141 addi sp,sp,16 + 3bc062d4: 8082 ret + +000000003bc062d6 : + 3bc062d6: 1101 addi sp,sp,-32 + 3bc062d8: 6518 ld a4,8(a0) + 3bc062da: e426 sd s1,8(sp) + 3bc062dc: 9db1 addw a1,a1,a2 + 3bc062de: 30000493 li s1,768 + 3bc062e2: e822 sd s0,16(sp) + 3bc062e4: 00b494bb sllw s1,s1,a1 + 3bc062e8: ec06 sd ra,24(sp) + 3bc062ea: e04a sd s2,0(sp) + 3bc062ec: 842a mv s0,a0 + 3bc062ee: 7c04849b addiw s1,s1,1984 + 3bc062f2: c719 beqz a4,3bc06300 + 3bc062f4: 5138 lw a4,96(a0) + 3bc062f6: 0004879b sext.w a5,s1 + 3bc062fa: 4501 li a0,0 + 3bc062fc: 02f70a63 beq a4,a5,3bc06330 + 3bc06300: 85b6 mv a1,a3 + 3bc06302: 8522 mv a0,s0 + 3bc06304: 8936 mv s2,a3 + 3bc06306: fb5ff0ef jal ra,3bc062ba + 3bc0630a: 00093783 ld a5,0(s2) + 3bc0630e: 02049713 slli a4,s1,0x20 + 3bc06312: 01f75593 srli a1,a4,0x1f + 3bc06316: 854a mv a0,s2 + 3bc06318: 9782 jalr a5 + 3bc0631a: 87aa mv a5,a0 + 3bc0631c: e408 sd a0,8(s0) + 3bc0631e: 4509 li a0,2 + 3bc06320: cb81 beqz a5,3bc06330 + 3bc06322: 6505 lui a0,0x1 + 3bc06324: d0050513 addi a0,a0,-768 # d00 <__BSS_SIZE__-0x4f10> + 3bc06328: 97aa add a5,a5,a0 + 3bc0632a: e81c sd a5,16(s0) + 3bc0632c: d024 sw s1,96(s0) + 3bc0632e: 4501 li a0,0 + 3bc06330: 60e2 ld ra,24(sp) + 3bc06332: 6442 ld s0,16(sp) + 3bc06334: 64a2 ld s1,8(sp) + 3bc06336: 6902 ld s2,0(sp) + 3bc06338: 6105 addi sp,sp,32 + 3bc0633a: 8082 ret + +000000003bc0633c : + 3bc0633c: 4791 li a5,4 + 3bc0633e: 00c7e463 bltu a5,a2,3bc06346 + 3bc06342: 4511 li a0,4 + 3bc06344: 8082 ret + 3bc06346: 0015a703 lw a4,1(a1) + 3bc0634a: 6685 lui a3,0x1 + 3bc0634c: 87ba mv a5,a4 + 3bc0634e: 00d77363 bgeu a4,a3,3bc06354 + 3bc06352: 6785 lui a5,0x1 + 3bc06354: c15c sw a5,4(a0) + 3bc06356: 0005c783 lbu a5,0(a1) + 3bc0635a: 0e000713 li a4,224 + 3bc0635e: fef762e3 bltu a4,a5,3bc06342 + 3bc06362: 4725 li a4,9 + 3bc06364: 02e7f6bb remuw a3,a5,a4 + 3bc06368: 02e7d7bb divuw a5,a5,a4 + 3bc0636c: 4715 li a4,5 + 3bc0636e: 00d50023 sb a3,0(a0) + 3bc06372: 02e7d6bb divuw a3,a5,a4 + 3bc06376: 02e7f7bb remuw a5,a5,a4 + 3bc0637a: 00d50123 sb a3,2(a0) + 3bc0637e: 00f500a3 sb a5,1(a0) + 3bc06382: 4501 li a0,0 + 3bc06384: 8082 ret + +000000003bc06386 : + 3bc06386: 7179 addi sp,sp,-48 + 3bc06388: f022 sd s0,32(sp) + 3bc0638a: 842a mv s0,a0 + 3bc0638c: 0828 addi a0,sp,24 + 3bc0638e: f406 sd ra,40(sp) + 3bc06390: e436 sd a3,8(sp) + 3bc06392: fabff0ef jal ra,3bc0633c + 3bc06396: ed01 bnez a0,3bc063ae + 3bc06398: 66a2 ld a3,8(sp) + 3bc0639a: 01914603 lbu a2,25(sp) + 3bc0639e: 01814583 lbu a1,24(sp) + 3bc063a2: 8522 mv a0,s0 + 3bc063a4: f33ff0ef jal ra,3bc062d6 + 3bc063a8: e119 bnez a0,3bc063ae + 3bc063aa: 67e2 ld a5,24(sp) + 3bc063ac: e01c sd a5,0(s0) + 3bc063ae: 70a2 ld ra,40(sp) + 3bc063b0: 7402 ld s0,32(sp) + 3bc063b2: 6145 addi sp,sp,48 + 3bc063b4: 8082 ret + +000000003bc063b6 : + 3bc063b6: 7155 addi sp,sp,-208 + 3bc063b8: e1a2 sd s0,192(sp) + 3bc063ba: f152 sd s4,160(sp) + 3bc063bc: ed56 sd s5,152(sp) + 3bc063be: e586 sd ra,200(sp) + 3bc063c0: fd26 sd s1,184(sp) + 3bc063c2: f94a sd s2,176(sp) + 3bc063c4: f54e sd s3,168(sp) + 3bc063c6: e95a sd s6,144(sp) + 3bc063c8: e55e sd s7,136(sp) + 3bc063ca: e162 sd s8,128(sp) + 3bc063cc: 0005ba03 ld s4,0(a1) + 3bc063d0: 0006ba83 ld s5,0(a3) # 1000 <__BSS_SIZE__-0x4c10> + 3bc063d4: 0006b023 sd zero,0(a3) + 3bc063d8: 0005b023 sd zero,0(a1) + 3bc063dc: 833a mv t1,a4 + 3bc063de: 0008a023 sw zero,0(a7) + 3bc063e2: 4711 li a4,4 + 3bc063e4: 4419 li s0,6 + 3bc063e6: 07577063 bgeu a4,s5,3bc06446 + 3bc063ea: 84b6 mv s1,a3 + 3bc063ec: 66ce ld a3,208(sp) + 3bc063ee: 8bb2 mv s7,a2 + 3bc063f0: 8c2e mv s8,a1 + 3bc063f2: 89aa mv s3,a0 + 3bc063f4: 863e mv a2,a5 + 3bc063f6: 859a mv a1,t1 + 3bc063f8: 850a mv a0,sp + 3bc063fa: 8946 mv s2,a7 + 3bc063fc: 8b42 mv s6,a6 + 3bc063fe: ec02 sd zero,24(sp) + 3bc06400: e402 sd zero,8(sp) + 3bc06402: f85ff0ef jal ra,3bc06386 + 3bc06406: 842a mv s0,a0 + 3bc06408: ed1d bnez a0,3bc06446 + 3bc0640a: 850a mv a0,sp + 3bc0640c: ec4e sd s3,24(sp) + 3bc0640e: f052 sd s4,32(sp) + 3bc06410: c1bff0ef jal ra,3bc0602a + 3bc06414: 87ca mv a5,s2 + 3bc06416: 0154b023 sd s5,0(s1) + 3bc0641a: 875a mv a4,s6 + 3bc0641c: 86a6 mv a3,s1 + 3bc0641e: 865e mv a2,s7 + 3bc06420: 85d2 mv a1,s4 + 3bc06422: 850a mv a0,sp + 3bc06424: c1bff0ef jal ra,3bc0603e + 3bc06428: 77a2 ld a5,40(sp) + 3bc0642a: 842a mv s0,a0 + 3bc0642c: 00fc3023 sd a5,0(s8) + 3bc06430: e519 bnez a0,3bc0643e + 3bc06432: 00092703 lw a4,0(s2) + 3bc06436: 478d li a5,3 + 3bc06438: 00f71363 bne a4,a5,3bc0643e + 3bc0643c: 4419 li s0,6 + 3bc0643e: 65ce ld a1,208(sp) + 3bc06440: 850a mv a0,sp + 3bc06442: e79ff0ef jal ra,3bc062ba + 3bc06446: 60ae ld ra,200(sp) + 3bc06448: 8522 mv a0,s0 + 3bc0644a: 640e ld s0,192(sp) + 3bc0644c: 74ea ld s1,184(sp) + 3bc0644e: 794a ld s2,176(sp) + 3bc06450: 79aa ld s3,168(sp) + 3bc06452: 7a0a ld s4,160(sp) + 3bc06454: 6aea ld s5,152(sp) + 3bc06456: 6b4a ld s6,144(sp) + 3bc06458: 6baa ld s7,136(sp) + 3bc0645a: 6c0a ld s8,128(sp) + 3bc0645c: 6169 addi sp,sp,208 + 3bc0645e: 8082 ret + +000000003bc06460 : + 3bc06460: 00154783 lbu a5,1(a0) + 3bc06464: 00254703 lbu a4,2(a0) + 3bc06468: 00054683 lbu a3,0(a0) + 3bc0646c: 00354503 lbu a0,3(a0) + 3bc06470: 0107171b slliw a4,a4,0x10 + 3bc06474: 0087979b slliw a5,a5,0x8 + 3bc06478: 9fb9 addw a5,a5,a4 + 3bc0647a: 9fb5 addw a5,a5,a3 + 3bc0647c: 0185151b slliw a0,a0,0x18 + 3bc06480: 9d3d addw a0,a0,a5 + 3bc06482: 8082 ret + +000000003bc06484 : + 3bc06484: 40e58733 sub a4,a1,a4 + 3bc06488: 26050763 beqz a0,3bc066f6 + 3bc0648c: 00c50e33 add t3,a0,a2 + 3bc06490: 7119 addi sp,sp,-128 + 3bc06492: ff0e0793 addi a5,t3,-16 # fffff0 <__BSS_SIZE__+0xffa3e0> + 3bc06496: ecce sd s3,88(sp) + 3bc06498: 00d58eb3 add t4,a1,a3 + 3bc0649c: fc86 sd ra,120(sp) + 3bc0649e: f8a2 sd s0,112(sp) + 3bc064a0: f4a6 sd s1,104(sp) + 3bc064a2: f0ca sd s2,96(sp) + 3bc064a4: e8d2 sd s4,80(sp) + 3bc064a6: e4d6 sd s5,72(sp) + 3bc064a8: e0da sd s6,64(sp) + 3bc064aa: fc5e sd s7,56(sp) + 3bc064ac: f862 sd s8,48(sp) + 3bc064ae: f466 sd s9,40(sp) + 3bc064b0: f06a sd s10,32(sp) + 3bc064b2: ec6e sd s11,24(sp) + 3bc064b4: e43e sd a5,8(sp) + 3bc064b6: 832a mv t1,a0 + 3bc064b8: fe0e8993 addi s3,t4,-32 + 3bc064bc: ea95 bnez a3,3bc064f0 + 3bc064be: 4785 li a5,1 + 3bc064c0: 557d li a0,-1 + 3bc064c2: 00f61863 bne a2,a5,3bc064d2 + 3bc064c6: 00034503 lbu a0,0(t1) + 3bc064ca: 00a03533 snez a0,a0 + 3bc064ce: 0005250b ext a0,a0,0,0 + 3bc064d2: 70e6 ld ra,120(sp) + 3bc064d4: 7446 ld s0,112(sp) + 3bc064d6: 74a6 ld s1,104(sp) + 3bc064d8: 7906 ld s2,96(sp) + 3bc064da: 69e6 ld s3,88(sp) + 3bc064dc: 6a46 ld s4,80(sp) + 3bc064de: 6aa6 ld s5,72(sp) + 3bc064e0: 6b06 ld s6,64(sp) + 3bc064e2: 7be2 ld s7,56(sp) + 3bc064e4: 7c42 ld s8,48(sp) + 3bc064e6: 7ca2 ld s9,40(sp) + 3bc064e8: 7d02 ld s10,32(sp) + 3bc064ea: 6de2 ld s11,24(sp) + 3bc064ec: 6109 addi sp,sp,128 + 3bc064ee: 8082 ret + 3bc064f0: 557d li a0,-1 + 3bc064f2: d265 beqz a2,3bc064d2 + 3bc064f4: 879a mv a5,t1 + 3bc064f6: 882e mv a6,a1 + 3bc064f8: 4fbd li t6,15 + 3bc064fa: 429d li t0,7 + 3bc064fc: ff4e8393 addi t2,t4,-12 + 3bc06500: 4a41 li s4,16 + 3bc06502: ff9e8f13 addi t5,t4,-7 + 3bc06506: ffbe8a93 addi s5,t4,-5 + 3bc0650a: 00005b17 auipc s6,0x5 + 3bc0650e: fa6b0b13 addi s6,s6,-90 # 3bc0b4b0 + 3bc06512: 00005b97 auipc s7,0x5 + 3bc06516: f7eb8b93 addi s7,s7,-130 # 3bc0b490 + 3bc0651a: ffce0c13 addi s8,t3,-4 + 3bc0651e: 0ff00493 li s1,255 + 3bc06522: ff8e0c93 addi s9,t3,-8 + 3bc06526: ff1e0913 addi s2,t3,-15 + 3bc0652a: 5d7d li s10,-1 + 3bc0652c: 9817c50b lbuia a0,(a5),1,0 + 3bc06530: 00455693 srli a3,a0,0x4 + 3bc06534: 0045561b srliw a2,a0,0x4 + 3bc06538: 07f68063 beq a3,t6,3bc06598 + 3bc0653c: 0109b8b3 sltu a7,s3,a6 + 3bc06540: 0018c893 xori a7,a7,1 + 3bc06544: 0ff8f893 andi a7,a7,255 + 3bc06548: 00c80433 add s0,a6,a2 + 3bc0654c: 00c786b3 add a3,a5,a2 + 3bc06550: 06088d63 beqz a7,3bc065ca + 3bc06554: 68a2 ld a7,8(sp) + 3bc06556: 0717fa63 bgeu a5,a7,3bc065ca + 3bc0655a: 6390 ld a2,0(a5) + 3bc0655c: 893d andi a0,a0,15 + 3bc0655e: 00c83023 sd a2,0(a6) + 3bc06562: 679c ld a5,8(a5) + 3bc06564: 862a mv a2,a0 + 3bc06566: 00f83423 sd a5,8(a6) + 3bc0656a: 87b6 mv a5,a3 + 3bc0656c: b827c88b lhuia a7,(a5),2,0 + 3bc06570: 411406b3 sub a3,s0,a7 + 3bc06574: 0bf50763 beq a0,t6,3bc06622 + 3bc06578: 0d12f563 bgeu t0,a7,3bc06642 + 3bc0657c: 0ce6e363 bltu a3,a4,3bc06642 + 3bc06580: 6290 ld a2,0(a3) + 3bc06582: 0511 addi a0,a0,4 + 3bc06584: 00a40833 add a6,s0,a0 + 3bc06588: e010 sd a2,0(s0) + 3bc0658a: 6690 ld a2,8(a3) + 3bc0658c: e410 sd a2,8(s0) + 3bc0658e: 0106d683 lhu a3,16(a3) + 3bc06592: 00d41823 sh a3,16(s0) + 3bc06596: bf59 j 3bc0652c + 3bc06598: 0527fd63 bgeu a5,s2,3bc065f2 + 3bc0659c: 4601 li a2,0 + 3bc0659e: 9817c88b lbuia a7,(a5),1,0 + 3bc065a2: 00c8863b addw a2,a7,a2 + 3bc065a6: 0527f963 bgeu a5,s2,3bc065f8 + 3bc065aa: fe988ae3 beq a7,s1,3bc0659e + 3bc065ae: 4681 li a3,0 + 3bc065b0: 7c06360b extu a2,a2,31,0 + 3bc065b4: 063d addi a2,a2,15 + 3bc065b6: 13a68a63 beq a3,s10,3bc066ea + 3bc065ba: 010606b3 add a3,a2,a6 + 3bc065be: 1306e663 bltu a3,a6,3bc066ea + 3bc065c2: 00f606b3 add a3,a2,a5 + 3bc065c6: 12f6e263 bltu a3,a5,3bc066ea + 3bc065ca: 00c80433 add s0,a6,a2 + 3bc065ce: 00c788b3 add a7,a5,a2 + 3bc065d2: 0083e463 bltu t2,s0,3bc065da + 3bc065d6: 031cf363 bgeu s9,a7,3bc065fc + 3bc065da: 111e1863 bne t3,a7,3bc066ea + 3bc065de: 108ee663 bltu t4,s0,3bc066ea + 3bc065e2: 84ae mv s1,a1 + 3bc065e4: 8542 mv a0,a6 + 3bc065e6: 85be mv a1,a5 + 3bc065e8: cf2fa0ef jal ra,3bc00ada + 3bc065ec: 4094053b subw a0,s0,s1 + 3bc065f0: b5cd j 3bc064d2 + 3bc065f2: 56fd li a3,-1 + 3bc065f4: 4601 li a2,0 + 3bc065f6: bf6d j 3bc065b0 + 3bc065f8: 56f9 li a3,-2 + 3bc065fa: bf5d j 3bc065b0 + 3bc065fc: 4681 li a3,0 + 3bc065fe: 60d7c60b lrd a2,a5,a3,0 + 3bc06602: 60d8560b srd a2,a6,a3,0 + 3bc06606: 06a1 addi a3,a3,8 + 3bc06608: 00d80633 add a2,a6,a3 + 3bc0660c: fe8669e3 bltu a2,s0,3bc065fe + 3bc06610: 87c6 mv a5,a7 + 3bc06612: b827c88b lhuia a7,(a5),2,0 + 3bc06616: 00f57613 andi a2,a0,15 + 3bc0661a: 411406b3 sub a3,s0,a7 + 3bc0661e: 03f61263 bne a2,t6,3bc06642 + 3bc06622: 4601 li a2,0 + 3bc06624: 9817c80b lbuia a6,(a5),1,0 + 3bc06628: 00c8063b addw a2,a6,a2 + 3bc0662c: 0b87ff63 bgeu a5,s8,3bc066ea + 3bc06630: fe980ae3 beq a6,s1,3bc06624 + 3bc06634: 7c06360b extu a2,a2,31,0 + 3bc06638: 063d addi a2,a2,15 + 3bc0663a: 00860533 add a0,a2,s0 + 3bc0663e: 0a856663 bltu a0,s0,3bc066ea + 3bc06642: 0611 addi a2,a2,4 + 3bc06644: 0ae6e363 bltu a3,a4,3bc066ea + 3bc06648: 00c40833 add a6,s0,a2 + 3bc0664c: 0712e463 bltu t0,a7,3bc066b4 + 3bc06650: 00042023 sw zero,0(s0) + 3bc06654: 0006c503 lbu a0,0(a3) + 3bc06658: 00a40023 sb a0,0(s0) + 3bc0665c: 0016c503 lbu a0,1(a3) + 3bc06660: 00a400a3 sb a0,1(s0) + 3bc06664: 0026c503 lbu a0,2(a3) + 3bc06668: 00a40123 sb a0,2(s0) + 3bc0666c: 0036c503 lbu a0,3(a3) + 3bc06670: 00a401a3 sb a0,3(s0) + 3bc06674: c51b450b lrwu a0,s6,a7,2 + 3bc06678: 00a68db3 add s11,a3,a0 + 3bc0667c: 40a6c68b lrw a3,a3,a0,0 + 3bc06680: c054 sw a3,4(s0) + 3bc06682: 451bc68b lrw a3,s7,a7,2 + 3bc06686: 40dd86b3 sub a3,s11,a3 + 3bc0668a: 0503f363 bgeu t2,a6,3bc066d0 + 3bc0668e: 050aee63 bltu s5,a6,3bc066ea + 3bc06692: 0421 addi s0,s0,8 + 3bc06694: 01e47e63 bgeu s0,t5,3bc066b0 + 3bc06698: 8536 mv a0,a3 + 3bc0669a: 8622 mv a2,s0 + 3bc0669c: 7885488b ldia a7,(a0),8,0 + 3bc066a0: 7886588b sdia a7,(a2),8,0 + 3bc066a4: ffe66ce3 bltu a2,t5,3bc0669c + 3bc066a8: 408f0433 sub s0,t5,s0 + 3bc066ac: 96a2 add a3,a3,s0 + 3bc066ae: 847a mv s0,t5 + 3bc066b0: 4601 li a2,0 + 3bc066b2: a811 j 3bc066c6 + 3bc066b4: 7886c50b ldia a0,(a3),8,0 + 3bc066b8: e008 sd a0,0(s0) + 3bc066ba: bfc1 j 3bc0668a + 3bc066bc: 80c6c50b lrbu a0,a3,a2,0 + 3bc066c0: 00c4550b srb a0,s0,a2,0 + 3bc066c4: 0605 addi a2,a2,1 + 3bc066c6: 00c40533 add a0,s0,a2 + 3bc066ca: ff0569e3 bltu a0,a6,3bc066bc + 3bc066ce: bdb9 j 3bc0652c + 3bc066d0: 6288 ld a0,0(a3) + 3bc066d2: e408 sd a0,8(s0) + 3bc066d4: e4ca7ce3 bgeu s4,a2,3bc0652c + 3bc066d8: 0441 addi s0,s0,16 + 3bc066da: 06a1 addi a3,a3,8 + 3bc066dc: 7886c60b ldia a2,(a3),8,0 + 3bc066e0: 7884560b sdia a2,(s0),8,0 + 3bc066e4: ff046ce3 bltu s0,a6,3bc066dc + 3bc066e8: b591 j 3bc0652c + 3bc066ea: 40678533 sub a0,a5,t1 + 3bc066ee: fff54513 not a0,a0 + 3bc066f2: 2501 sext.w a0,a0 + 3bc066f4: bbf9 j 3bc064d2 + 3bc066f6: 557d li a0,-1 + 3bc066f8: 8082 ret + +000000003bc066fa : + 3bc066fa: 06853803 ld a6,104(a0) + 3bc066fe: 7179 addi sp,sp,-48 + 3bc06700: f022 sd s0,32(sp) + 3bc06702: f406 sd ra,40(sp) + 3bc06704: ec26 sd s1,24(sp) + 3bc06706: e84a sd s2,16(sp) + 3bc06708: e44e sd s3,8(sp) + 3bc0670a: 842a mv s0,a0 + 3bc0670c: 00081363 bnez a6,3bc06712 + 3bc06710: f12c sd a1,96(a0) + 3bc06712: 7028 ld a0,96(s0) + 3bc06714: 010507b3 add a5,a0,a6 + 3bc06718: 00f59663 bne a1,a5,3bc06724 + 3bc0671c: 00c807b3 add a5,a6,a2 + 3bc06720: f43c sd a5,104(s0) + 3bc06722: a811 j 3bc06736 + 3bc06724: 40d588b3 sub a7,a1,a3 + 3bc06728: 98b2 add a7,a7,a2 + 3bc0672a: 67c1 lui a5,0x10 + 3bc0672c: 00f8ec63 bltu a7,a5,3bc06744 + 3bc06730: f034 sd a3,96(s0) + 3bc06732: 07143423 sd a7,104(s0) + 3bc06736: 70a2 ld ra,40(sp) + 3bc06738: 7402 ld s0,32(sp) + 3bc0673a: 64e2 ld s1,24(sp) + 3bc0673c: 6942 ld s2,16(sp) + 3bc0673e: 69a2 ld s3,8(sp) + 3bc06740: 6145 addi sp,sp,48 + 3bc06742: 8082 ret + 3bc06744: 6c34 ld a3,88(s0) + 3bc06746: 84b2 mv s1,a2 + 3bc06748: 89ae mv s3,a1 + 3bc0674a: cb29 beqz a4,3bc0679c + 3bc0674c: 00d51563 bne a0,a3,3bc06756 + 3bc06750: 00c807b3 add a5,a6,a2 + 3bc06754: b7f1 j 3bc06720 + 3bc06756: 07043903 ld s2,112(s0) + 3bc0675a: 604c ld a1,128(s0) + 3bc0675c: 7c38 ld a4,120(s0) + 3bc0675e: 40d90933 sub s2,s2,a3 + 3bc06762: 40b805b3 sub a1,a6,a1 + 3bc06766: 4601 li a2,0 + 3bc06768: 00e7ea63 bltu a5,a4,3bc0677c + 3bc0676c: 40e78633 sub a2,a5,a4 + 3bc06770: 00c937b3 sltu a5,s2,a2 + 3bc06774: 0017c793 xori a5,a5,1 + 3bc06778: 40f9160b mveqz a2,s2,a5 + 3bc0677c: 40c907b3 sub a5,s2,a2 + 3bc06780: 8d91 sub a1,a1,a2 + 3bc06782: 95aa add a1,a1,a0 + 3bc06784: 00f68533 add a0,a3,a5 + 3bc06788: af2fa0ef jal ra,3bc00a7a + 3bc0678c: 6050 ld a2,128(s0) + 3bc0678e: 6c3c ld a5,88(s0) + 3bc06790: 94b2 add s1,s1,a2 + 3bc06792: 9926 add s2,s2,s1 + 3bc06794: f03c sd a5,96(s0) + 3bc06796: 07243423 sd s2,104(s0) + 3bc0679a: bf71 j 3bc06736 + 3bc0679c: 02d51e63 bne a0,a3,3bc067d8 + 3bc067a0: 7c14 ld a3,56(s0) + 3bc067a2: 00c80733 add a4,a6,a2 + 3bc067a6: 00e6fe63 bgeu a3,a4,3bc067c2 + 3bc067aa: 40c78933 sub s2,a5,a2 + 3bc067ae: 40f607b3 sub a5,a2,a5 + 3bc067b2: 97c2 add a5,a5,a6 + 3bc067b4: 864a mv a2,s2 + 3bc067b6: 00f505b3 add a1,a0,a5 + 3bc067ba: ac0fa0ef jal ra,3bc00a7a + 3bc067be: 07243423 sd s2,104(s0) + 3bc067c2: 6c28 ld a0,88(s0) + 3bc067c4: 743c ld a5,104(s0) + 3bc067c6: 8626 mv a2,s1 + 3bc067c8: 85ce mv a1,s3 + 3bc067ca: 953e add a0,a0,a5 + 3bc067cc: aaefa0ef jal ra,3bc00a7a + 3bc067d0: 7430 ld a2,104(s0) + 3bc067d2: 94b2 add s1,s1,a2 + 3bc067d4: f424 sd s1,104(s0) + 3bc067d6: b785 j 3bc06736 + 3bc067d8: 8f91 sub a5,a5,a2 + 3bc067da: 0107b733 sltu a4,a5,a6 + 3bc067de: 00174713 xori a4,a4,1 + 3bc067e2: 42e8178b mvnez a5,a6,a4 + 3bc067e6: 40f805b3 sub a1,a6,a5 + 3bc067ea: 863e mv a2,a5 + 3bc067ec: 95aa add a1,a1,a0 + 3bc067ee: 8536 mv a0,a3 + 3bc067f0: 893e mv s2,a5 + 3bc067f2: a88fa0ef jal ra,3bc00a7a + 3bc067f6: 6c28 ld a0,88(s0) + 3bc067f8: 8626 mv a2,s1 + 3bc067fa: 85ce mv a1,s3 + 3bc067fc: 954a add a0,a0,s2 + 3bc067fe: a7cfa0ef jal ra,3bc00a7a + 3bc06802: 6c3c ld a5,88(s0) + 3bc06804: 94ca add s1,s1,s2 + 3bc06806: f03c sd a5,96(s0) + 3bc06808: b7f1 j 3bc067d4 + +000000003bc0680a : + 3bc0680a: 26050463 beqz a0,3bc06a72 + 3bc0680e: 7159 addi sp,sp,-112 + 3bc06810: eca6 sd s1,88(sp) + 3bc06812: 00c50833 add a6,a0,a2 + 3bc06816: 00d588b3 add a7,a1,a3 + 3bc0681a: f486 sd ra,104(sp) + 3bc0681c: f0a2 sd s0,96(sp) + 3bc0681e: e8ca sd s2,80(sp) + 3bc06820: e4ce sd s3,72(sp) + 3bc06822: e0d2 sd s4,64(sp) + 3bc06824: fc56 sd s5,56(sp) + 3bc06826: f85a sd s6,48(sp) + 3bc06828: f45e sd s7,40(sp) + 3bc0682a: f062 sd s8,32(sp) + 3bc0682c: ec66 sd s9,24(sp) + 3bc0682e: e86a sd s10,16(sp) + 3bc06830: e46e sd s11,8(sp) + 3bc06832: ff080393 addi t2,a6,-16 + 3bc06836: fe088493 addi s1,a7,-32 + 3bc0683a: ea9d bnez a3,3bc06870 + 3bc0683c: 4705 li a4,1 + 3bc0683e: 57fd li a5,-1 + 3bc06840: 00e61863 bne a2,a4,3bc06850 + 3bc06844: 00054783 lbu a5,0(a0) + 3bc06848: 00f037b3 snez a5,a5 + 3bc0684c: 0007a78b ext a5,a5,0,0 + 3bc06850: 70a6 ld ra,104(sp) + 3bc06852: 7406 ld s0,96(sp) + 3bc06854: 64e6 ld s1,88(sp) + 3bc06856: 6946 ld s2,80(sp) + 3bc06858: 69a6 ld s3,72(sp) + 3bc0685a: 6a06 ld s4,64(sp) + 3bc0685c: 7ae2 ld s5,56(sp) + 3bc0685e: 7b42 ld s6,48(sp) + 3bc06860: 7ba2 ld s7,40(sp) + 3bc06862: 7c02 ld s8,32(sp) + 3bc06864: 6ce2 ld s9,24(sp) + 3bc06866: 6d42 ld s10,16(sp) + 3bc06868: 6da2 ld s11,8(sp) + 3bc0686a: 853e mv a0,a5 + 3bc0686c: 6165 addi sp,sp,112 + 3bc0686e: 8082 ret + 3bc06870: 57fd li a5,-1 + 3bc06872: de79 beqz a2,3bc06850 + 3bc06874: 87aa mv a5,a0 + 3bc06876: 872e mv a4,a1 + 3bc06878: 4e3d li t3,15 + 3bc0687a: 4e9d li t4,7 + 3bc0687c: ff488f13 addi t5,a7,-12 + 3bc06880: 4941 li s2,16 + 3bc06882: ff988313 addi t1,a7,-7 + 3bc06886: ffb88993 addi s3,a7,-5 + 3bc0688a: 00005a17 auipc s4,0x5 + 3bc0688e: c26a0a13 addi s4,s4,-986 # 3bc0b4b0 + 3bc06892: 00005a97 auipc s5,0x5 + 3bc06896: bfea8a93 addi s5,s5,-1026 # 3bc0b490 + 3bc0689a: ffc80b13 addi s6,a6,-4 + 3bc0689e: 0ff00f93 li t6,255 + 3bc068a2: ff880b93 addi s7,a6,-8 + 3bc068a6: ff180293 addi t0,a6,-15 + 3bc068aa: 5c7d li s8,-1 + 3bc068ac: 9817c68b lbuia a3,(a5),1,0 + 3bc068b0: 0046d413 srli s0,a3,0x4 + 3bc068b4: 0046d61b srliw a2,a3,0x4 + 3bc068b8: 05c40d63 beq s0,t3,3bc06912 + 3bc068bc: 00e4bd33 sltu s10,s1,a4 + 3bc068c0: 001d4d13 xori s10,s10,1 + 3bc068c4: 0ffd7d13 andi s10,s10,255 + 3bc068c8: 00c70433 add s0,a4,a2 + 3bc068cc: 00c78cb3 add s9,a5,a2 + 3bc068d0: 060d0a63 beqz s10,3bc06944 + 3bc068d4: 0677f863 bgeu a5,t2,3bc06944 + 3bc068d8: 6390 ld a2,0(a5) + 3bc068da: e310 sd a2,0(a4) + 3bc068dc: 679c ld a5,8(a5) + 3bc068de: e71c sd a5,8(a4) + 3bc068e0: 87e6 mv a5,s9 + 3bc068e2: b827cc8b lhuia s9,(a5),2,0 + 3bc068e6: 00f6f713 andi a4,a3,15 + 3bc068ea: 86ba mv a3,a4 + 3bc068ec: 41940633 sub a2,s0,s9 + 3bc068f0: 0bc70563 beq a4,t3,3bc0699a + 3bc068f4: 0d9ef363 bgeu t4,s9,3bc069ba + 3bc068f8: 0cb66163 bltu a2,a1,3bc069ba + 3bc068fc: 6214 ld a3,0(a2) + 3bc068fe: 0711 addi a4,a4,4 + 3bc06900: 9722 add a4,a4,s0 + 3bc06902: e014 sd a3,0(s0) + 3bc06904: 6614 ld a3,8(a2) + 3bc06906: e414 sd a3,8(s0) + 3bc06908: 01065683 lhu a3,16(a2) + 3bc0690c: 00d41823 sh a3,16(s0) + 3bc06910: bf71 j 3bc068ac + 3bc06912: 0457fd63 bgeu a5,t0,3bc0696c + 3bc06916: 4601 li a2,0 + 3bc06918: 9817cc8b lbuia s9,(a5),1,0 + 3bc0691c: 00cc863b addw a2,s9,a2 + 3bc06920: 0457f963 bgeu a5,t0,3bc06972 + 3bc06924: fffc8ae3 beq s9,t6,3bc06918 + 3bc06928: 4401 li s0,0 + 3bc0692a: 7c06360b extu a2,a2,31,0 + 3bc0692e: 063d addi a2,a2,15 + 3bc06930: 13840c63 beq s0,s8,3bc06a68 + 3bc06934: 00e60433 add s0,a2,a4 + 3bc06938: 12e46863 bltu s0,a4,3bc06a68 + 3bc0693c: 00f60433 add s0,a2,a5 + 3bc06940: 12f46463 bltu s0,a5,3bc06a68 + 3bc06944: 00c70433 add s0,a4,a2 + 3bc06948: 00c78cb3 add s9,a5,a2 + 3bc0694c: 008f6463 bltu t5,s0,3bc06954 + 3bc06950: 039bf363 bgeu s7,s9,3bc06976 + 3bc06954: 11981a63 bne a6,s9,3bc06a68 + 3bc06958: 1088e863 bltu a7,s0,3bc06a68 + 3bc0695c: 84ae mv s1,a1 + 3bc0695e: 853a mv a0,a4 + 3bc06960: 85be mv a1,a5 + 3bc06962: 978fa0ef jal ra,3bc00ada + 3bc06966: 409407bb subw a5,s0,s1 + 3bc0696a: b5dd j 3bc06850 + 3bc0696c: 547d li s0,-1 + 3bc0696e: 4601 li a2,0 + 3bc06970: bf6d j 3bc0692a + 3bc06972: 5479 li s0,-2 + 3bc06974: bf5d j 3bc0692a + 3bc06976: 4601 li a2,0 + 3bc06978: 60c7cd0b lrd s10,a5,a2,0 + 3bc0697c: 60c75d0b srd s10,a4,a2,0 + 3bc06980: 0621 addi a2,a2,8 + 3bc06982: 00c70d33 add s10,a4,a2 + 3bc06986: fe8d69e3 bltu s10,s0,3bc06978 + 3bc0698a: 87e6 mv a5,s9 + 3bc0698c: b827cc8b lhuia s9,(a5),2,0 + 3bc06990: 8abd andi a3,a3,15 + 3bc06992: 41940633 sub a2,s0,s9 + 3bc06996: 03c69263 bne a3,t3,3bc069ba + 3bc0699a: 4681 li a3,0 + 3bc0699c: 9817cd0b lbuia s10,(a5),1,0 + 3bc069a0: 00dd06bb addw a3,s10,a3 + 3bc069a4: 0d67f263 bgeu a5,s6,3bc06a68 + 3bc069a8: fffd0ae3 beq s10,t6,3bc0699c + 3bc069ac: 7c06b68b extu a3,a3,31,0 + 3bc069b0: 06bd addi a3,a3,15 + 3bc069b2: 00868733 add a4,a3,s0 + 3bc069b6: 0a876963 bltu a4,s0,3bc06a68 + 3bc069ba: 0691 addi a3,a3,4 + 3bc069bc: 0ab66663 bltu a2,a1,3bc06a68 + 3bc069c0: 00d40733 add a4,s0,a3 + 3bc069c4: 079ee463 bltu t4,s9,3bc06a2c + 3bc069c8: 00042023 sw zero,0(s0) + 3bc069cc: 00064d03 lbu s10,0(a2) + 3bc069d0: 01a40023 sb s10,0(s0) + 3bc069d4: 00164d03 lbu s10,1(a2) + 3bc069d8: 01a400a3 sb s10,1(s0) + 3bc069dc: 00264d03 lbu s10,2(a2) + 3bc069e0: 01a40123 sb s10,2(s0) + 3bc069e4: 00364d03 lbu s10,3(a2) + 3bc069e8: 01a401a3 sb s10,3(s0) + 3bc069ec: c59a4d0b lrwu s10,s4,s9,2 + 3bc069f0: 01a60db3 add s11,a2,s10 + 3bc069f4: 41a6460b lrw a2,a2,s10,0 + 3bc069f8: c050 sw a2,4(s0) + 3bc069fa: 459ac60b lrw a2,s5,s9,2 + 3bc069fe: 40cd8633 sub a2,s11,a2 + 3bc06a02: 04ef7463 bgeu t5,a4,3bc06a4a + 3bc06a06: 06e9e163 bltu s3,a4,3bc06a68 + 3bc06a0a: 0421 addi s0,s0,8 + 3bc06a0c: 00647e63 bgeu s0,t1,3bc06a28 + 3bc06a10: 8cb2 mv s9,a2 + 3bc06a12: 86a2 mv a3,s0 + 3bc06a14: 788ccd0b ldia s10,(s9),8,0 + 3bc06a18: 7886dd0b sdia s10,(a3),8,0 + 3bc06a1c: fe66ece3 bltu a3,t1,3bc06a14 + 3bc06a20: 40830433 sub s0,t1,s0 + 3bc06a24: 9622 add a2,a2,s0 + 3bc06a26: 841a mv s0,t1 + 3bc06a28: 4681 li a3,0 + 3bc06a2a: a819 j 3bc06a40 + 3bc06a2c: 78864c8b ldia s9,(a2),8,0 + 3bc06a30: 01943023 sd s9,0(s0) + 3bc06a34: b7f9 j 3bc06a02 + 3bc06a36: 80d64c8b lrbu s9,a2,a3,0 + 3bc06a3a: 00d45c8b srb s9,s0,a3,0 + 3bc06a3e: 0685 addi a3,a3,1 + 3bc06a40: 00d40cb3 add s9,s0,a3 + 3bc06a44: feece9e3 bltu s9,a4,3bc06a36 + 3bc06a48: b595 j 3bc068ac + 3bc06a4a: 00063c83 ld s9,0(a2) + 3bc06a4e: 01943423 sd s9,8(s0) + 3bc06a52: e4d97de3 bgeu s2,a3,3bc068ac + 3bc06a56: 0441 addi s0,s0,16 + 3bc06a58: 0621 addi a2,a2,8 + 3bc06a5a: 7886468b ldia a3,(a2),8,0 + 3bc06a5e: 7884568b sdia a3,(s0),8,0 + 3bc06a62: fee46ce3 bltu s0,a4,3bc06a5a + 3bc06a66: b599 j 3bc068ac + 3bc06a68: 8f89 sub a5,a5,a0 + 3bc06a6a: fff7c793 not a5,a5 + 3bc06a6e: 2781 sext.w a5,a5 + 3bc06a70: b3c5 j 3bc06850 + 3bc06a72: 57fd li a5,-1 + 3bc06a74: 853e mv a0,a5 + 3bc06a76: 8082 ret + +000000003bc06a78 : + 3bc06a78: 77c1 lui a5,0xffff0 + 3bc06a7a: 7119 addi sp,sp,-128 + 3bc06a7c: 97ae add a5,a5,a1 + 3bc06a7e: fc86 sd ra,120(sp) + 3bc06a80: f8a2 sd s0,112(sp) + 3bc06a82: f4a6 sd s1,104(sp) + 3bc06a84: f0ca sd s2,96(sp) + 3bc06a86: ecce sd s3,88(sp) + 3bc06a88: e8d2 sd s4,80(sp) + 3bc06a8a: e4d6 sd s5,72(sp) + 3bc06a8c: e0da sd s6,64(sp) + 3bc06a8e: fc5e sd s7,56(sp) + 3bc06a90: f862 sd s8,48(sp) + 3bc06a92: f466 sd s9,40(sp) + 3bc06a94: f06a sd s10,32(sp) + 3bc06a96: ec6e sd s11,24(sp) + 3bc06a98: e43e sd a5,8(sp) + 3bc06a9a: 24050263 beqz a0,3bc06cde + 3bc06a9e: 00c50333 add t1,a0,a2 + 3bc06aa2: 00d58e33 add t3,a1,a3 + 3bc06aa6: 88aa mv a7,a0 + 3bc06aa8: ff030913 addi s2,t1,-16 + 3bc06aac: fe0e0993 addi s3,t3,-32 + 3bc06ab0: ea95 bnez a3,3bc06ae4 + 3bc06ab2: 4785 li a5,1 + 3bc06ab4: 557d li a0,-1 + 3bc06ab6: 00f61863 bne a2,a5,3bc06ac6 + 3bc06aba: 0008c503 lbu a0,0(a7) + 3bc06abe: 00a03533 snez a0,a0 + 3bc06ac2: 0005250b ext a0,a0,0,0 + 3bc06ac6: 70e6 ld ra,120(sp) + 3bc06ac8: 7446 ld s0,112(sp) + 3bc06aca: 74a6 ld s1,104(sp) + 3bc06acc: 7906 ld s2,96(sp) + 3bc06ace: 69e6 ld s3,88(sp) + 3bc06ad0: 6a46 ld s4,80(sp) + 3bc06ad2: 6aa6 ld s5,72(sp) + 3bc06ad4: 6b06 ld s6,64(sp) + 3bc06ad6: 7be2 ld s7,56(sp) + 3bc06ad8: 7c42 ld s8,48(sp) + 3bc06ada: 7ca2 ld s9,40(sp) + 3bc06adc: 7d02 ld s10,32(sp) + 3bc06ade: 6de2 ld s11,24(sp) + 3bc06ae0: 6109 addi sp,sp,128 + 3bc06ae2: 8082 ret + 3bc06ae4: 557d li a0,-1 + 3bc06ae6: d265 beqz a2,3bc06ac6 + 3bc06ae8: 87c6 mv a5,a7 + 3bc06aea: 882e mv a6,a1 + 3bc06aec: 4f3d li t5,15 + 3bc06aee: 4f9d li t6,7 + 3bc06af0: ff4e0293 addi t0,t3,-12 + 3bc06af4: 4a41 li s4,16 + 3bc06af6: ff9e0e93 addi t4,t3,-7 + 3bc06afa: ffbe0a93 addi s5,t3,-5 + 3bc06afe: 00005b17 auipc s6,0x5 + 3bc06b02: 9b2b0b13 addi s6,s6,-1614 # 3bc0b4b0 + 3bc06b06: 00005b97 auipc s7,0x5 + 3bc06b0a: 98ab8b93 addi s7,s7,-1654 # 3bc0b490 + 3bc06b0e: ffc30c13 addi s8,t1,-4 + 3bc06b12: 0ff00393 li t2,255 + 3bc06b16: ff830c93 addi s9,t1,-8 + 3bc06b1a: ff130493 addi s1,t1,-15 + 3bc06b1e: 5d7d li s10,-1 + 3bc06b20: 9817c68b lbuia a3,(a5),1,0 + 3bc06b24: 0046d713 srli a4,a3,0x4 + 3bc06b28: 0046d61b srliw a2,a3,0x4 + 3bc06b2c: 05e70b63 beq a4,t5,3bc06b82 + 3bc06b30: 0109b533 sltu a0,s3,a6 + 3bc06b34: 00154513 xori a0,a0,1 + 3bc06b38: 0ff57513 andi a0,a0,255 + 3bc06b3c: 00c80433 add s0,a6,a2 + 3bc06b40: 00c78733 add a4,a5,a2 + 3bc06b44: c53d beqz a0,3bc06bb2 + 3bc06b46: 0727f663 bgeu a5,s2,3bc06bb2 + 3bc06b4a: 6390 ld a2,0(a5) + 3bc06b4c: 8abd andi a3,a3,15 + 3bc06b4e: 00c83023 sd a2,0(a6) + 3bc06b52: 679c ld a5,8(a5) + 3bc06b54: 00f83423 sd a5,8(a6) + 3bc06b58: 87ba mv a5,a4 + 3bc06b5a: b827c60b lhuia a2,(a5),2,0 + 3bc06b5e: 40c40733 sub a4,s0,a2 + 3bc06b62: 0be68363 beq a3,t5,3bc06c08 + 3bc06b66: 0ccff163 bgeu t6,a2,3bc06c28 + 3bc06b6a: 6310 ld a2,0(a4) + 3bc06b6c: 0691 addi a3,a3,4 + 3bc06b6e: 00d40833 add a6,s0,a3 + 3bc06b72: e010 sd a2,0(s0) + 3bc06b74: 6710 ld a2,8(a4) + 3bc06b76: e410 sd a2,8(s0) + 3bc06b78: 01075703 lhu a4,16(a4) # 1000010 <__BSS_SIZE__+0xffa400> + 3bc06b7c: 00e41823 sh a4,16(s0) + 3bc06b80: b745 j 3bc06b20 + 3bc06b82: 0497fc63 bgeu a5,s1,3bc06bda + 3bc06b86: 4601 li a2,0 + 3bc06b88: 9817c50b lbuia a0,(a5),1,0 + 3bc06b8c: 9e29 addw a2,a2,a0 + 3bc06b8e: 0497f963 bgeu a5,s1,3bc06be0 + 3bc06b92: fe750be3 beq a0,t2,3bc06b88 + 3bc06b96: 4701 li a4,0 + 3bc06b98: 7c06360b extu a2,a2,31,0 + 3bc06b9c: 063d addi a2,a2,15 + 3bc06b9e: 13a70a63 beq a4,s10,3bc06cd2 + 3bc06ba2: 01060733 add a4,a2,a6 + 3bc06ba6: 13076663 bltu a4,a6,3bc06cd2 + 3bc06baa: 00f60733 add a4,a2,a5 + 3bc06bae: 12f76263 bltu a4,a5,3bc06cd2 + 3bc06bb2: 00c80433 add s0,a6,a2 + 3bc06bb6: 00c78533 add a0,a5,a2 + 3bc06bba: 0082e463 bltu t0,s0,3bc06bc2 + 3bc06bbe: 02acf363 bgeu s9,a0,3bc06be4 + 3bc06bc2: 10a31863 bne t1,a0,3bc06cd2 + 3bc06bc6: 108e6663 bltu t3,s0,3bc06cd2 + 3bc06bca: 84ae mv s1,a1 + 3bc06bcc: 8542 mv a0,a6 + 3bc06bce: 85be mv a1,a5 + 3bc06bd0: f0bf90ef jal ra,3bc00ada + 3bc06bd4: 4094053b subw a0,s0,s1 + 3bc06bd8: b5fd j 3bc06ac6 + 3bc06bda: 577d li a4,-1 + 3bc06bdc: 4601 li a2,0 + 3bc06bde: bf6d j 3bc06b98 + 3bc06be0: 5779 li a4,-2 + 3bc06be2: bf5d j 3bc06b98 + 3bc06be4: 4701 li a4,0 + 3bc06be6: 60e7c60b lrd a2,a5,a4,0 + 3bc06bea: 60e8560b srd a2,a6,a4,0 + 3bc06bee: 0721 addi a4,a4,8 + 3bc06bf0: 00e80633 add a2,a6,a4 + 3bc06bf4: fe8669e3 bltu a2,s0,3bc06be6 + 3bc06bf8: 87aa mv a5,a0 + 3bc06bfa: b827c60b lhuia a2,(a5),2,0 + 3bc06bfe: 8abd andi a3,a3,15 + 3bc06c00: 40c40733 sub a4,s0,a2 + 3bc06c04: 03e69263 bne a3,t5,3bc06c28 + 3bc06c08: 4681 li a3,0 + 3bc06c0a: 9817c80b lbuia a6,(a5),1,0 + 3bc06c0e: 00d806bb addw a3,a6,a3 + 3bc06c12: 0d87f063 bgeu a5,s8,3bc06cd2 + 3bc06c16: fe780ae3 beq a6,t2,3bc06c0a + 3bc06c1a: 7c06b68b extu a3,a3,31,0 + 3bc06c1e: 06bd addi a3,a3,15 + 3bc06c20: 00868533 add a0,a3,s0 + 3bc06c24: 0a856763 bltu a0,s0,3bc06cd2 + 3bc06c28: 6522 ld a0,8(sp) + 3bc06c2a: 0691 addi a3,a3,4 + 3bc06c2c: 0aa76363 bltu a4,a0,3bc06cd2 + 3bc06c30: 00d40833 add a6,s0,a3 + 3bc06c34: 06cfe463 bltu t6,a2,3bc06c9c + 3bc06c38: 00042023 sw zero,0(s0) + 3bc06c3c: 00074503 lbu a0,0(a4) + 3bc06c40: 00a40023 sb a0,0(s0) + 3bc06c44: 00174503 lbu a0,1(a4) + 3bc06c48: 00a400a3 sb a0,1(s0) + 3bc06c4c: 00274503 lbu a0,2(a4) + 3bc06c50: 00a40123 sb a0,2(s0) + 3bc06c54: 00374503 lbu a0,3(a4) + 3bc06c58: 00a401a3 sb a0,3(s0) + 3bc06c5c: c4cb450b lrwu a0,s6,a2,2 + 3bc06c60: 00a70db3 add s11,a4,a0 + 3bc06c64: 40a7470b lrw a4,a4,a0,0 + 3bc06c68: c058 sw a4,4(s0) + 3bc06c6a: 44cbc70b lrw a4,s7,a2,2 + 3bc06c6e: 40ed8733 sub a4,s11,a4 + 3bc06c72: 0502f363 bgeu t0,a6,3bc06cb8 + 3bc06c76: 050aee63 bltu s5,a6,3bc06cd2 + 3bc06c7a: 0421 addi s0,s0,8 + 3bc06c7c: 01d47e63 bgeu s0,t4,3bc06c98 + 3bc06c80: 863a mv a2,a4 + 3bc06c82: 86a2 mv a3,s0 + 3bc06c84: 7886450b ldia a0,(a2),8,0 + 3bc06c88: 7886d50b sdia a0,(a3),8,0 + 3bc06c8c: ffd6ece3 bltu a3,t4,3bc06c84 + 3bc06c90: 408e8433 sub s0,t4,s0 + 3bc06c94: 9722 add a4,a4,s0 + 3bc06c96: 8476 mv s0,t4 + 3bc06c98: 4681 li a3,0 + 3bc06c9a: a811 j 3bc06cae + 3bc06c9c: 7887460b ldia a2,(a4),8,0 + 3bc06ca0: e010 sd a2,0(s0) + 3bc06ca2: bfc1 j 3bc06c72 + 3bc06ca4: 80d7460b lrbu a2,a4,a3,0 + 3bc06ca8: 00d4560b srb a2,s0,a3,0 + 3bc06cac: 0685 addi a3,a3,1 + 3bc06cae: 00d40633 add a2,s0,a3 + 3bc06cb2: ff0669e3 bltu a2,a6,3bc06ca4 + 3bc06cb6: b5ad j 3bc06b20 + 3bc06cb8: 6310 ld a2,0(a4) + 3bc06cba: e410 sd a2,8(s0) + 3bc06cbc: e6da72e3 bgeu s4,a3,3bc06b20 + 3bc06cc0: 0441 addi s0,s0,16 + 3bc06cc2: 0721 addi a4,a4,8 + 3bc06cc4: 7887468b ldia a3,(a4),8,0 + 3bc06cc8: 7884568b sdia a3,(s0),8,0 + 3bc06ccc: ff046ce3 bltu s0,a6,3bc06cc4 + 3bc06cd0: bd81 j 3bc06b20 + 3bc06cd2: 41178533 sub a0,a5,a7 + 3bc06cd6: fff54513 not a0,a0 + 3bc06cda: 2501 sext.w a0,a0 + 3bc06cdc: b3ed j 3bc06ac6 + 3bc06cde: 557d li a0,-1 + 3bc06ce0: b3dd j 3bc06ac6 + +000000003bc06ce2 : + 3bc06ce2: 30050963 beqz a0,3bc06ff4 + 3bc06ce6: 7135 addi sp,sp,-160 + 3bc06ce8: e526 sd s1,136(sp) + 3bc06cea: fcce sd s3,120(sp) + 3bc06cec: f0da sd s6,96(sp) + 3bc06cee: ecde sd s7,88(sp) + 3bc06cf0: e8e2 sd s8,80(sp) + 3bc06cf2: e0ea sd s10,64(sp) + 3bc06cf4: ed06 sd ra,152(sp) + 3bc06cf6: e922 sd s0,144(sp) + 3bc06cf8: e14a sd s2,128(sp) + 3bc06cfa: f8d2 sd s4,112(sp) + 3bc06cfc: f4d6 sd s5,104(sp) + 3bc06cfe: e4e6 sd s9,72(sp) + 3bc06d00: fc6e sd s11,56(sp) + 3bc06d02: 8b2a mv s6,a0 + 3bc06d04: 8d2e mv s10,a1 + 3bc06d06: 84ba mv s1,a4 + 3bc06d08: 89be mv s3,a5 + 3bc06d0a: 00c50bb3 add s7,a0,a2 + 3bc06d0e: 00d58c33 add s8,a1,a3 + 3bc06d12: c319 beqz a4,3bc06d18 + 3bc06d14: 00f704b3 add s1,a4,a5 + 3bc06d18: ff0b8793 addi a5,s7,-16 + 3bc06d1c: e03e sd a5,0(sp) + 3bc06d1e: fe0c0793 addi a5,s8,-32 + 3bc06d22: e43e sd a5,8(sp) + 3bc06d24: ea95 bnez a3,3bc06d58 + 3bc06d26: 4785 li a5,1 + 3bc06d28: 557d li a0,-1 + 3bc06d2a: 00f61863 bne a2,a5,3bc06d3a + 3bc06d2e: 000b4503 lbu a0,0(s6) + 3bc06d32: 00a03533 snez a0,a0 + 3bc06d36: 0005250b ext a0,a0,0,0 + 3bc06d3a: 60ea ld ra,152(sp) + 3bc06d3c: 644a ld s0,144(sp) + 3bc06d3e: 64aa ld s1,136(sp) + 3bc06d40: 690a ld s2,128(sp) + 3bc06d42: 79e6 ld s3,120(sp) + 3bc06d44: 7a46 ld s4,112(sp) + 3bc06d46: 7aa6 ld s5,104(sp) + 3bc06d48: 7b06 ld s6,96(sp) + 3bc06d4a: 6be6 ld s7,88(sp) + 3bc06d4c: 6c46 ld s8,80(sp) + 3bc06d4e: 6ca6 ld s9,72(sp) + 3bc06d50: 6d06 ld s10,64(sp) + 3bc06d52: 7de2 ld s11,56(sp) + 3bc06d54: 610d addi sp,sp,160 + 3bc06d56: 8082 ret + 3bc06d58: 557d li a0,-1 + 3bc06d5a: d265 beqz a2,3bc06d3a + 3bc06d5c: ffcb8793 addi a5,s7,-4 + 3bc06d60: e83e sd a5,16(sp) + 3bc06d62: ff8b8793 addi a5,s7,-8 + 3bc06d66: 845a mv s0,s6 + 3bc06d68: 8cea mv s9,s10 + 3bc06d6a: ff4c0a13 addi s4,s8,-12 + 3bc06d6e: ff9c0913 addi s2,s8,-7 + 3bc06d72: ffbc0a93 addi s5,s8,-5 + 3bc06d76: ec3e sd a5,24(sp) + 3bc06d78: 9814468b lbuia a3,(s0),1,0 + 3bc06d7c: 4ebd li t4,15 + 3bc06d7e: 0046d793 srli a5,a3,0x4 + 3bc06d82: 0046d61b srliw a2,a3,0x4 + 3bc06d86: 07d78363 beq a5,t4,3bc06dec + 3bc06d8a: 67a2 ld a5,8(sp) + 3bc06d8c: 00cc8db3 add s11,s9,a2 + 3bc06d90: 00c40533 add a0,s0,a2 + 3bc06d94: 0197b5b3 sltu a1,a5,s9 + 3bc06d98: 0015c593 xori a1,a1,1 + 3bc06d9c: 0ff5f593 andi a1,a1,255 + 3bc06da0: c5c1 beqz a1,3bc06e28 + 3bc06da2: 6782 ld a5,0(sp) + 3bc06da4: 08f47263 bgeu s0,a5,3bc06e28 + 3bc06da8: 6010 ld a2,0(s0) + 3bc06daa: 8abd andi a3,a3,15 + 3bc06dac: 00ccb023 sd a2,0(s9) + 3bc06db0: 6410 ld a2,8(s0) + 3bc06db2: 842a mv s0,a0 + 3bc06db4: 00ccb423 sd a2,8(s9) + 3bc06db8: b824458b lhuia a1,(s0),2,0 + 3bc06dbc: 8636 mv a2,a3 + 3bc06dbe: 40bd8533 sub a0,s11,a1 + 3bc06dc2: 0dd68063 beq a3,t4,3bc06e82 + 3bc06dc6: 471d li a4,7 + 3bc06dc8: 0eb77063 bgeu a4,a1,3bc06ea8 + 3bc06dcc: 0da56e63 bltu a0,s10,3bc06ea8 + 3bc06dd0: 6118 ld a4,0(a0) + 3bc06dd2: 0691 addi a3,a3,4 + 3bc06dd4: 00dd8cb3 add s9,s11,a3 + 3bc06dd8: 00edb023 sd a4,0(s11) + 3bc06ddc: 6518 ld a4,8(a0) + 3bc06dde: 00edb423 sd a4,8(s11) + 3bc06de2: 01055703 lhu a4,16(a0) + 3bc06de6: 00ed9823 sh a4,16(s11) + 3bc06dea: b779 j 3bc06d78 + 3bc06dec: ff1b8793 addi a5,s7,-15 + 3bc06df0: 06f47063 bgeu s0,a5,3bc06e50 + 3bc06df4: 4601 li a2,0 + 3bc06df6: 0ff00513 li a0,255 + 3bc06dfa: 98144e8b lbuia t4,(s0),1,0 + 3bc06dfe: 00ce863b addw a2,t4,a2 + 3bc06e02: 04f47a63 bgeu s0,a5,3bc06e56 + 3bc06e06: feae8ae3 beq t4,a0,3bc06dfa + 3bc06e0a: 4781 li a5,0 + 3bc06e0c: 7c06360b extu a2,a2,31,0 + 3bc06e10: 55fd li a1,-1 + 3bc06e12: 063d addi a2,a2,15 + 3bc06e14: 1cb78a63 beq a5,a1,3bc06fe8 + 3bc06e18: 019607b3 add a5,a2,s9 + 3bc06e1c: 1d97e663 bltu a5,s9,3bc06fe8 + 3bc06e20: 008607b3 add a5,a2,s0 + 3bc06e24: 1c87e263 bltu a5,s0,3bc06fe8 + 3bc06e28: 00cc8db3 add s11,s9,a2 + 3bc06e2c: 00c405b3 add a1,s0,a2 + 3bc06e30: 01ba6563 bltu s4,s11,3bc06e3a + 3bc06e34: 67e2 ld a5,24(sp) + 3bc06e36: 02b7f263 bgeu a5,a1,3bc06e5a + 3bc06e3a: 1abb9763 bne s7,a1,3bc06fe8 + 3bc06e3e: 1bbc6563 bltu s8,s11,3bc06fe8 + 3bc06e42: 85a2 mv a1,s0 + 3bc06e44: 8566 mv a0,s9 + 3bc06e46: c95f90ef jal ra,3bc00ada + 3bc06e4a: 41ad853b subw a0,s11,s10 + 3bc06e4e: b5f5 j 3bc06d3a + 3bc06e50: 57fd li a5,-1 + 3bc06e52: 4601 li a2,0 + 3bc06e54: bf65 j 3bc06e0c + 3bc06e56: 57f9 li a5,-2 + 3bc06e58: bf55 j 3bc06e0c + 3bc06e5a: 4601 li a2,0 + 3bc06e5c: 60c4450b lrd a0,s0,a2,0 + 3bc06e60: 60ccd50b srd a0,s9,a2,0 + 3bc06e64: 0621 addi a2,a2,8 + 3bc06e66: 00cc8533 add a0,s9,a2 + 3bc06e6a: ffb569e3 bltu a0,s11,3bc06e5c + 3bc06e6e: 842e mv s0,a1 + 3bc06e70: b824458b lhuia a1,(s0),2,0 + 3bc06e74: 00f6f613 andi a2,a3,15 + 3bc06e78: 473d li a4,15 + 3bc06e7a: 40bd8533 sub a0,s11,a1 + 3bc06e7e: 02e61563 bne a2,a4,3bc06ea8 + 3bc06e82: 4601 li a2,0 + 3bc06e84: 0ff00693 li a3,255 + 3bc06e88: 98144e8b lbuia t4,(s0),1,0 + 3bc06e8c: 67c2 ld a5,16(sp) + 3bc06e8e: 00ce863b addw a2,t4,a2 + 3bc06e92: 14f47b63 bgeu s0,a5,3bc06fe8 + 3bc06e96: fede89e3 beq t4,a3,3bc06e88 + 3bc06e9a: 7c06360b extu a2,a2,31,0 + 3bc06e9e: 063d addi a2,a2,15 + 3bc06ea0: 01b60733 add a4,a2,s11 + 3bc06ea4: 15b76263 bltu a4,s11,3bc06fe8 + 3bc06ea8: 6741 lui a4,0x10 + 3bc06eaa: 0611 addi a2,a2,4 + 3bc06eac: 00e9f663 bgeu s3,a4,3bc06eb8 + 3bc06eb0: 01350733 add a4,a0,s3 + 3bc06eb4: 13a76a63 bltu a4,s10,3bc06fe8 + 3bc06eb8: 00cd8cb3 add s9,s11,a2 + 3bc06ebc: 07a57663 bgeu a0,s10,3bc06f28 + 3bc06ec0: 139ae463 bltu s5,s9,3bc06fe8 + 3bc06ec4: 40ad06b3 sub a3,s10,a0 + 3bc06ec8: 40d485b3 sub a1,s1,a3 + 3bc06ecc: 00c6e663 bltu a3,a2,3bc06ed8 + 3bc06ed0: 856e mv a0,s11 + 3bc06ed2: c09f90ef jal ra,3bc00ada + 3bc06ed6: b54d j 3bc06d78 + 3bc06ed8: 40d60eb3 sub t4,a2,a3 + 3bc06edc: 856e mv a0,s11 + 3bc06ede: 8636 mv a2,a3 + 3bc06ee0: f476 sd t4,40(sp) + 3bc06ee2: f036 sd a3,32(sp) + 3bc06ee4: b97f90ef jal ra,3bc00a7a + 3bc06ee8: 7682 ld a3,32(sp) + 3bc06eea: 7ea2 ld t4,40(sp) + 3bc06eec: 00dd8533 add a0,s11,a3 + 3bc06ef0: 41a507b3 sub a5,a0,s10 + 3bc06ef4: 03d7f563 bgeu a5,t4,3bc06f1e + 3bc06ef8: 4781 li a5,0 + 3bc06efa: a031 j 3bc06f06 + 3bc06efc: 80fd468b lrbu a3,s10,a5,0 + 3bc06f00: 00f5568b srb a3,a0,a5,0 + 3bc06f04: 0785 addi a5,a5,1 + 3bc06f06: 00f506b3 add a3,a0,a5 + 3bc06f0a: ff96e9e3 bltu a3,s9,3bc06efc + 3bc06f0e: 00acb733 sltu a4,s9,a0 + 3bc06f12: 8676 mv a2,t4 + 3bc06f14: 42e0160b mvnez a2,zero,a4 + 3bc06f18: 00c50cb3 add s9,a0,a2 + 3bc06f1c: bdb1 j 3bc06d78 + 3bc06f1e: 8676 mv a2,t4 + 3bc06f20: 85ea mv a1,s10 + 3bc06f22: b59f90ef jal ra,3bc00a7a + 3bc06f26: bd89 j 3bc06d78 + 3bc06f28: 469d li a3,7 + 3bc06f2a: 06b6ee63 bltu a3,a1,3bc06fa6 + 3bc06f2e: 000da023 sw zero,0(s11) + 3bc06f32: 00054683 lbu a3,0(a0) + 3bc06f36: 00004797 auipc a5,0x4 + 3bc06f3a: 57a78793 addi a5,a5,1402 # 3bc0b4b0 + 3bc06f3e: c4b7ce8b lrwu t4,a5,a1,2 + 3bc06f42: 00dd8023 sb a3,0(s11) + 3bc06f46: 00154683 lbu a3,1(a0) + 3bc06f4a: 00004797 auipc a5,0x4 + 3bc06f4e: 54678793 addi a5,a5,1350 # 3bc0b490 + 3bc06f52: 01d50f33 add t5,a0,t4 + 3bc06f56: 00dd80a3 sb a3,1(s11) + 3bc06f5a: 00254683 lbu a3,2(a0) + 3bc06f5e: 00dd8123 sb a3,2(s11) + 3bc06f62: 00354683 lbu a3,3(a0) + 3bc06f66: 00dd81a3 sb a3,3(s11) + 3bc06f6a: 41d5468b lrw a3,a0,t4,0 + 3bc06f6e: 00dda223 sw a3,4(s11) + 3bc06f72: 44b7c68b lrw a3,a5,a1,2 + 3bc06f76: 40df06b3 sub a3,t5,a3 + 3bc06f7a: 059a7663 bgeu s4,s9,3bc06fc6 + 3bc06f7e: 079ae563 bltu s5,s9,3bc06fe8 + 3bc06f82: 008d8513 addi a0,s11,8 + 3bc06f86: 01257e63 bgeu a0,s2,3bc06fa2 + 3bc06f8a: 8636 mv a2,a3 + 3bc06f8c: 87aa mv a5,a0 + 3bc06f8e: 7886458b ldia a1,(a2),8,0 + 3bc06f92: 7887d58b sdia a1,(a5),8,0 + 3bc06f96: ff27ece3 bltu a5,s2,3bc06f8e + 3bc06f9a: 40a907b3 sub a5,s2,a0 + 3bc06f9e: 96be add a3,a3,a5 + 3bc06fa0: 854a mv a0,s2 + 3bc06fa2: 4781 li a5,0 + 3bc06fa4: a821 j 3bc06fbc + 3bc06fa6: 86aa mv a3,a0 + 3bc06fa8: 7886c58b ldia a1,(a3),8,0 + 3bc06fac: 00bdb023 sd a1,0(s11) + 3bc06fb0: b7e9 j 3bc06f7a + 3bc06fb2: 80f6c60b lrbu a2,a3,a5,0 + 3bc06fb6: 00f5560b srb a2,a0,a5,0 + 3bc06fba: 0785 addi a5,a5,1 + 3bc06fbc: 00f50633 add a2,a0,a5 + 3bc06fc0: ff9669e3 bltu a2,s9,3bc06fb2 + 3bc06fc4: bb55 j 3bc06d78 + 3bc06fc6: 628c ld a1,0(a3) + 3bc06fc8: 00bdb423 sd a1,8(s11) + 3bc06fcc: 45c1 li a1,16 + 3bc06fce: dac5f5e3 bgeu a1,a2,3bc06d78 + 3bc06fd2: 010d8513 addi a0,s11,16 + 3bc06fd6: 00868613 addi a2,a3,8 + 3bc06fda: 7886478b ldia a5,(a2),8,0 + 3bc06fde: 7885578b sdia a5,(a0),8,0 + 3bc06fe2: ff956ce3 bltu a0,s9,3bc06fda + 3bc06fe6: bb49 j 3bc06d78 + 3bc06fe8: 41640533 sub a0,s0,s6 + 3bc06fec: fff54513 not a0,a0 + 3bc06ff0: 2501 sext.w a0,a0 + 3bc06ff2: b3a1 j 3bc06d3a + 3bc06ff4: 557d li a0,-1 + 3bc06ff6: 8082 ret + +000000003bc06ff8 : + 3bc06ff8: 883e mv a6,a5 + 3bc06ffa: e399 bnez a5,3bc07000 + 3bc06ffc: 80fff06f j 3bc0680a + 3bc07000: 00f708b3 add a7,a4,a5 + 3bc07004: 01159b63 bne a1,a7,3bc0701a + 3bc07008: 67c1 lui a5,0x10 + 3bc0700a: 17f9 addi a5,a5,-2 + 3bc0700c: 0107d463 bge a5,a6,3bc07014 + 3bc07010: a69ff06f j 3bc06a78 + 3bc07014: 8742 mv a4,a6 + 3bc07016: c6eff06f j 3bc06484 + 3bc0701a: cc9ff06f j 3bc06ce2 + +000000003bc0701e : + 3bc0701e: fed53513 sltiu a0,a0,-19 + 3bc07022: 00154513 xori a0,a0,1 + 3bc07026: 2501 sext.w a0,a0 + 3bc07028: 8082 ret + +000000003bc0702a : + 3bc0702a: e111 bnez a0,3bc0702e + 3bc0702c: 4511 li a0,4 + 3bc0702e: ffc5069b addiw a3,a0,-4 + 3bc07032: 470d li a4,3 + 3bc07034: 5579 li a0,-2 + 3bc07036: 00d76863 bltu a4,a3,3bc07046 + 3bc0703a: 00004717 auipc a4,0x4 + 3bc0703e: 43670713 addi a4,a4,1078 # 3bc0b470 + 3bc07042: 76d7450b lurd a0,a4,a3,3 + 3bc07046: 8082 ret + +000000003bc07048 : + 3bc07048: 715d addi sp,sp,-80 + 3bc0704a: f84a sd s2,48(sp) + 3bc0704c: e486 sd ra,72(sp) + 3bc0704e: e0a2 sd s0,64(sp) + 3bc07050: fc26 sd s1,56(sp) + 3bc07052: f44e sd s3,40(sp) + 3bc07054: f052 sd s4,32(sp) + 3bc07056: ec56 sd s5,24(sp) + 3bc07058: e85a sd s6,16(sp) + 3bc0705a: e45e sd s7,8(sp) + 3bc0705c: e062 sd s8,0(sp) + 3bc0705e: 4799 li a5,6 + 3bc07060: 5951 li s2,-12 + 3bc07062: 04c7f663 bgeu a5,a2,3bc070ae + 3bc07066: 84ae mv s1,a1 + 3bc07068: 8932 mv s2,a2 + 3bc0706a: 4581 li a1,0 + 3bc0706c: 02000613 li a2,32 + 3bc07070: 842a mv s0,a0 + 3bc07072: 9aff90ef jal ra,3bc00a20 + 3bc07076: 8526 mv a0,s1 + 3bc07078: be8ff0ef jal ra,3bc06460 + 3bc0707c: 2501 sext.w a0,a0 + 3bc0707e: 184d37b7 lui a5,0x184d3 + 3bc07082: ff057713 andi a4,a0,-16 + 3bc07086: a5078793 addi a5,a5,-1456 # 184d2a50 + 3bc0708a: 02f71f63 bne a4,a5,3bc070c8 + 3bc0708e: 4785 li a5,1 + 3bc07090: c45c sw a5,12(s0) + 3bc07092: 0e840793 addi a5,s0,232 + 3bc07096: 00f49963 bne s1,a5,3bc070a8 + 3bc0709a: 47a1 li a5,8 + 3bc0709c: e83c sd a5,80(s0) + 3bc0709e: 05243423 sd s2,72(s0) + 3bc070a2: 47b5 li a5,13 + 3bc070a4: d05c sw a5,36(s0) + 3bc070a6: a021 j 3bc070ae + 3bc070a8: 47b1 li a5,12 + 3bc070aa: d05c sw a5,36(s0) + 3bc070ac: 4911 li s2,4 + 3bc070ae: 60a6 ld ra,72(sp) + 3bc070b0: 6406 ld s0,64(sp) + 3bc070b2: 74e2 ld s1,56(sp) + 3bc070b4: 79a2 ld s3,40(sp) + 3bc070b6: 7a02 ld s4,32(sp) + 3bc070b8: 6ae2 ld s5,24(sp) + 3bc070ba: 6b42 ld s6,16(sp) + 3bc070bc: 6ba2 ld s7,8(sp) + 3bc070be: 6c02 ld s8,0(sp) + 3bc070c0: 854a mv a0,s2 + 3bc070c2: 7942 ld s2,48(sp) + 3bc070c4: 6161 addi sp,sp,80 + 3bc070c6: 8082 ret + 3bc070c8: 184d27b7 lui a5,0x184d2 + 3bc070cc: 20478793 addi a5,a5,516 # 184d2204 + 3bc070d0: 10f51863 bne a0,a5,3bc071e0 + 3bc070d4: 00042623 sw zero,12(s0) + 3bc070d8: 0044c783 lbu a5,4(s1) + 3bc070dc: 0417b70b extu a4,a5,1,1 + 3bc070e0: 00078b1b sext.w s6,a5 + 3bc070e4: 0067d693 srli a3,a5,0x6 + 3bc070e8: 0e071e63 bnez a4,3bc071e4 + 3bc070ec: 4705 li a4,1 + 3bc070ee: 0ee69d63 bne a3,a4,3bc071e8 + 3bc070f2: 0c3b3c0b extu s8,s6,3,3 + 3bc070f6: 49bd li s3,15 + 3bc070f8: 000c1363 bnez s8,3bc070fe + 3bc070fc: 499d li s3,7 + 3bc070fe: 0017fa13 andi s4,a5,1 + 3bc07102: 0549998b addsl s3,s3,s4,2 + 3bc07106: 03397063 bgeu s2,s3,3bc07126 + 3bc0710a: 0e840513 addi a0,s0,232 + 3bc0710e: 00a48663 beq s1,a0,3bc0711a + 3bc07112: 864a mv a2,s2 + 3bc07114: 85a6 mv a1,s1 + 3bc07116: 965f90ef jal ra,3bc00a7a + 3bc0711a: 05243423 sd s2,72(s0) + 3bc0711e: 05343823 sd s3,80(s0) + 3bc07122: 4785 li a5,1 + 3bc07124: b741 j 3bc070a4 + 3bc07126: 0054c783 lbu a5,5(s1) + 3bc0712a: 5961 li s2,-8 + 3bc0712c: fc77b70b extu a4,a5,63,7 + 3bc07130: 8c47bb8b extu s7,a5,35,4 + 3bc07134: ff2d bnez a4,3bc070ae + 3bc07136: 004bf713 andi a4,s7,4 + 3bc0713a: 5979 li s2,-2 + 3bc0713c: db2d beqz a4,3bc070ae + 3bc0713e: 8bbd andi a5,a5,15 + 3bc07140: 5961 li s2,-8 + 3bc07142: f7b5 bnez a5,3bc070ae + 3bc07144: ffb98a93 addi s5,s3,-5 + 3bc07148: 4601 li a2,0 + 3bc0714a: 85d6 mv a1,s5 + 3bc0714c: 00448513 addi a0,s1,4 + 3bc07150: 425000ef jal ra,3bc07d74 + 3bc07154: 013487b3 add a5,s1,s3 + 3bc07158: fff7c783 lbu a5,-1(a5) + 3bc0715c: 3c85350b extu a0,a0,15,8 + 3bc07160: 593d li s2,-17 + 3bc07162: f4a796e3 bne a5,a0,3bc070ae + 3bc07166: 145b378b extu a5,s6,5,5 + 3bc0716a: 007bf513 andi a0,s7,7 + 3bc0716e: c05c sw a5,4(s0) + 3bc07170: 104b378b extu a5,s6,4,4 + 3bc07174: 082b3b0b extu s6,s6,2,2 + 3bc07178: cc5c sw a5,28(s0) + 3bc0717a: 01642423 sw s6,8(s0) + 3bc0717e: c008 sw a0,0(s0) + 3bc07180: eabff0ef jal ra,3bc0702a + 3bc07184: f808 sd a0,48(s0) + 3bc07186: 040c0263 beqz s8,3bc071ca + 3bc0718a: 0074c783 lbu a5,7(s1) + 3bc0718e: 0084c703 lbu a4,8(s1) + 3bc07192: 0064c683 lbu a3,6(s1) + 3bc07196: 07a2 slli a5,a5,0x8 + 3bc07198: 0742 slli a4,a4,0x10 + 3bc0719a: 97ba add a5,a5,a4 + 3bc0719c: 0094c703 lbu a4,9(s1) + 3bc071a0: 97b6 add a5,a5,a3 + 3bc071a2: 0762 slli a4,a4,0x18 + 3bc071a4: 97ba add a5,a5,a4 + 3bc071a6: 00a4c703 lbu a4,10(s1) + 3bc071aa: 1702 slli a4,a4,0x20 + 3bc071ac: 97ba add a5,a5,a4 + 3bc071ae: 00b4c703 lbu a4,11(s1) + 3bc071b2: 1722 slli a4,a4,0x28 + 3bc071b4: 973e add a4,a4,a5 + 3bc071b6: 00c4c783 lbu a5,12(s1) + 3bc071ba: 17c2 slli a5,a5,0x30 + 3bc071bc: 973e add a4,a4,a5 + 3bc071be: 00d4c783 lbu a5,13(s1) + 3bc071c2: 17e2 slli a5,a5,0x38 + 3bc071c4: 97ba add a5,a5,a4 + 3bc071c6: e81c sd a5,16(s0) + 3bc071c8: f41c sd a5,40(s0) + 3bc071ca: 000a0763 beqz s4,3bc071d8 + 3bc071ce: 01548533 add a0,s1,s5 + 3bc071d2: a8eff0ef jal ra,3bc06460 + 3bc071d6: cc08 sw a0,24(s0) + 3bc071d8: 4789 li a5,2 + 3bc071da: d05c sw a5,36(s0) + 3bc071dc: 894e mv s2,s3 + 3bc071de: bdc1 j 3bc070ae + 3bc071e0: 594d li s2,-13 + 3bc071e2: b5f1 j 3bc070ae + 3bc071e4: 5961 li s2,-8 + 3bc071e6: b5e1 j 3bc070ae + 3bc071e8: 5969 li s2,-6 + 3bc071ea: b5d1 j 3bc070ae + +000000003bc071ec : + 3bc071ec: 1101 addi sp,sp,-32 + 3bc071ee: e822 sd s0,16(sp) + 3bc071f0: e426 sd s1,8(sp) + 3bc071f2: 842a mv s0,a0 + 3bc071f4: 84ae mv s1,a1 + 3bc071f6: 4505 li a0,1 + 3bc071f8: 10000593 li a1,256 + 3bc071fc: ec06 sd ra,24(sp) + 3bc071fe: bf8fa0ef jal ra,3bc015f6 + 3bc07202: e909 bnez a0,3bc07214 + 3bc07204: 00043023 sd zero,0(s0) + 3bc07208: 555d li a0,-9 + 3bc0720a: 60e2 ld ra,24(sp) + 3bc0720c: 6442 ld s0,16(sp) + 3bc0720e: 64a2 ld s1,8(sp) + 3bc07210: 6105 addi sp,sp,32 + 3bc07212: 8082 ret + 3bc07214: d104 sw s1,32(a0) + 3bc07216: e008 sd a0,0(s0) + 3bc07218: 4501 li a0,0 + 3bc0721a: bfc5 j 3bc0720a + +000000003bc0721c : + 3bc0721c: 7131 addi sp,sp,-192 + 3bc0721e: ed4e sd s3,152(sp) + 3bc07220: 00073983 ld s3,0(a4) + 3bc07224: e556 sd s5,136(sp) + 3bc07226: e15a sd s6,128(sp) + 3bc07228: f0ea sd s10,96(sp) + 3bc0722a: ecee sd s11,88(sp) + 3bc0722c: fd06 sd ra,184(sp) + 3bc0722e: f922 sd s0,176(sp) + 3bc07230: f526 sd s1,168(sp) + 3bc07232: f14a sd s2,160(sp) + 3bc07234: e952 sd s4,144(sp) + 3bc07236: fcde sd s7,120(sp) + 3bc07238: f8e2 sd s8,112(sp) + 3bc0723a: f4e6 sd s9,104(sp) + 3bc0723c: fad1560b sdd a2,a3,(sp),1,4 + 3bc07240: e43e sd a5,8(sp) + 3bc07242: 8d2a mv s10,a0 + 3bc07244: 8aae mv s5,a1 + 3bc07246: 8dba mv s11,a4 + 3bc07248: 99b6 add s3,s3,a3 + 3bc0724a: 4b01 li s6,0 + 3bc0724c: c581 beqz a1,3bc07254 + 3bc0724e: 00063b03 ld s6,0(a2) + 3bc07252: 9b2e add s6,s6,a1 + 3bc07254: 0080 addi s0,sp,64 + 3bc07256: 4641 li a2,16 + 3bc07258: 4581 li a1,0 + 3bc0725a: 8522 mv a0,s0 + 3bc0725c: fc4f90ef jal ra,3bc00a20 + 3bc07260: 67a2 ld a5,8(sp) + 3bc07262: 000db023 sd zero,0(s11) + 3bc07266: 6ce2 ld s9,24(sp) + 3bc07268: 40f4178b mveqz a5,s0,a5 + 3bc0726c: e43e sd a5,8(sp) + 3bc0726e: 67c2 ld a5,16(sp) + 3bc07270: 8956 mv s2,s5 + 3bc07272: 4485 li s1,1 + 3bc07274: 0007b023 sd zero,0(a5) + 3bc07278: 0ecd0793 addi a5,s10,236 + 3bc0727c: f43e sd a5,40(sp) + 3bc0727e: 0b8d0793 addi a5,s10,184 + 3bc07282: 4a05 li s4,1 + 3bc07284: 0e8d0b93 addi s7,s10,232 + 3bc07288: 088d0c13 addi s8,s10,136 + 3bc0728c: f03e sd a5,32(sp) + 3bc0728e: 080a1b63 bnez s4,3bc07324 + 3bc07292: 004d2783 lw a5,4(s10) + 3bc07296: ebbd bnez a5,3bc0730c + 3bc07298: 060d3583 ld a1,96(s10) + 3bc0729c: 058d3503 ld a0,88(s10) + 3bc072a0: 06a58663 beq a1,a0,3bc0730c + 3bc072a4: c5a5 beqz a1,3bc0730c + 3bc072a6: 67a2 ld a5,8(sp) + 3bc072a8: 439c lw a5,0(a5) + 3bc072aa: e3ad bnez a5,3bc0730c + 3bc072ac: 024d2703 lw a4,36(s10) + 3bc072b0: 479d li a5,7 + 3bc072b2: ffe7069b addiw a3,a4,-2 + 3bc072b6: 04d7eb63 bltu a5,a3,3bc0730c + 3bc072ba: 46a5 li a3,9 + 3bc072bc: 068d3783 ld a5,104(s10) + 3bc072c0: 6ed71c63 bne a4,a3,3bc079b8 + 3bc072c4: 080d3683 ld a3,128(s10) + 3bc072c8: 070d3403 ld s0,112(s10) + 3bc072cc: 078d3703 ld a4,120(s10) + 3bc072d0: 8f95 sub a5,a5,a3 + 3bc072d2: 66c1 lui a3,0x10 + 3bc072d4: 8c09 sub s0,s0,a0 + 3bc072d6: 4601 li a2,0 + 3bc072d8: 00e6ea63 bltu a3,a4,3bc072ec + 3bc072dc: 40e68633 sub a2,a3,a4 + 3bc072e0: 00c43733 sltu a4,s0,a2 + 3bc072e4: 00174713 xori a4,a4,1 + 3bc072e8: 40e4160b mveqz a2,s0,a4 + 3bc072ec: 8f91 sub a5,a5,a2 + 3bc072ee: 40c40733 sub a4,s0,a2 + 3bc072f2: 95be add a1,a1,a5 + 3bc072f4: 953a add a0,a0,a4 + 3bc072f6: f84f90ef jal ra,3bc00a7a + 3bc072fa: 058d3783 ld a5,88(s10) + 3bc072fe: 06fd3023 sd a5,96(s10) + 3bc07302: 080d3783 ld a5,128(s10) + 3bc07306: 943e add s0,s0,a5 + 3bc07308: 068d3423 sd s0,104(s10) + 3bc0730c: 67e2 ld a5,24(sp) + 3bc0730e: 41590933 sub s2,s2,s5 + 3bc07312: 8526 mv a0,s1 + 3bc07314: 40fc88b3 sub a7,s9,a5 + 3bc07318: 67c2 ld a5,16(sp) + 3bc0731a: 011db023 sd a7,0(s11) + 3bc0731e: 0127b023 sd s2,0(a5) + 3bc07322: a055 j 3bc073c6 + 3bc07324: 024d2783 lw a5,36(s10) + 3bc07328: 4739 li a4,14 + 3bc0732a: f6f762e3 bltu a4,a5,3bc0728e + 3bc0732e: 024d6783 lwu a5,36(s10) + 3bc07332: 00004717 auipc a4,0x4 + 3bc07336: 0fe70713 addi a4,a4,254 # 3bc0b430 + 3bc0733a: 44f7478b lrw a5,a4,a5,2 + 3bc0733e: 97ba add a5,a5,a4 + 3bc07340: 8782 jr a5 + 3bc07342: 41998633 sub a2,s3,s9 + 3bc07346: 47c9 li a5,18 + 3bc07348: 00c7fd63 bgeu a5,a2,3bc07362 + 3bc0734c: 85e6 mv a1,s9 + 3bc0734e: 856a mv a0,s10 + 3bc07350: cf9ff0ef jal ra,3bc07048 + 3bc07354: 57b1 li a5,-20 + 3bc07356: 06a7e863 bltu a5,a0,3bc073c6 + 3bc0735a: 00ac8433 add s0,s9,a0 + 3bc0735e: 8ca2 mv s9,s0 + 3bc07360: b73d j 3bc0728e + 3bc07362: 040d3423 sd zero,72(s10) + 3bc07366: 673c8d63 beq s9,s3,3bc079e0 + 3bc0736a: 479d li a5,7 + 3bc0736c: 04fd3823 sd a5,80(s10) + 3bc07370: 4785 li a5,1 + 3bc07372: 02fd2223 sw a5,36(s10) + 3bc07376: 048d3503 ld a0,72(s10) + 3bc0737a: 050d3403 ld s0,80(s10) + 3bc0737e: 41998633 sub a2,s3,s9 + 3bc07382: 85e6 mv a1,s9 + 3bc07384: 8c09 sub s0,s0,a0 + 3bc07386: 008637b3 sltu a5,a2,s0 + 3bc0738a: 0017c793 xori a5,a5,1 + 3bc0738e: 40f6140b mveqz s0,a2,a5 + 3bc07392: 8622 mv a2,s0 + 3bc07394: 955e add a0,a0,s7 + 3bc07396: ee4f90ef jal ra,3bc00a7a + 3bc0739a: 048d3783 ld a5,72(s10) + 3bc0739e: 050d3603 ld a2,80(s10) + 3bc073a2: 97a2 add a5,a5,s0 + 3bc073a4: 04fd3423 sd a5,72(s10) + 3bc073a8: 9466 add s0,s0,s9 + 3bc073aa: 00c7f763 bgeu a5,a2,3bc073b8 + 3bc073ae: 0611 addi a2,a2,4 + 3bc073b0: 40f604b3 sub s1,a2,a5 + 3bc073b4: 4a01 li s4,0 + 3bc073b6: b765 j 3bc0735e + 3bc073b8: 85de mv a1,s7 + 3bc073ba: 856a mv a0,s10 + 3bc073bc: c8dff0ef jal ra,3bc07048 + 3bc073c0: 57b1 li a5,-20 + 3bc073c2: f8a7fee3 bgeu a5,a0,3bc0735e + 3bc073c6: 70ea ld ra,184(sp) + 3bc073c8: 744a ld s0,176(sp) + 3bc073ca: 74aa ld s1,168(sp) + 3bc073cc: 790a ld s2,160(sp) + 3bc073ce: 69ea ld s3,152(sp) + 3bc073d0: 6a4a ld s4,144(sp) + 3bc073d2: 6aaa ld s5,136(sp) + 3bc073d4: 6b0a ld s6,128(sp) + 3bc073d6: 7be6 ld s7,120(sp) + 3bc073d8: 7c46 ld s8,112(sp) + 3bc073da: 7ca6 ld s9,104(sp) + 3bc073dc: 7d06 ld s10,96(sp) + 3bc073de: 6de6 ld s11,88(sp) + 3bc073e0: 6129 addi sp,sp,192 + 3bc073e2: 8082 ret + 3bc073e4: 008d2783 lw a5,8(s10) + 3bc073e8: c789 beqz a5,3bc073f2 + 3bc073ea: 4581 li a1,0 + 3bc073ec: 8562 mv a0,s8 + 3bc073ee: 34d000ef jal ra,3bc07f3a + 3bc073f2: 004d2403 lw s0,4(s10) + 3bc073f6: 030d3783 ld a5,48(s10) + 3bc073fa: 00143413 seqz s0,s0 + 3bc073fe: 0446 slli s0,s0,0x11 + 3bc07400: 943e add s0,s0,a5 + 3bc07402: 038d3783 ld a5,56(s10) + 3bc07406: 0287fe63 bgeu a5,s0,3bc07442 + 3bc0740a: 040d3503 ld a0,64(s10) + 3bc0740e: 020d3c23 sd zero,56(s10) + 3bc07412: a0cfa0ef jal ra,3bc0161e + 3bc07416: 030d3503 ld a0,48(s10) + 3bc0741a: 0511 addi a0,a0,4 + 3bc0741c: 9d4fa0ef jal ra,3bc015f0 + 3bc07420: 04ad3023 sd a0,64(s10) + 3bc07424: e119 bnez a0,3bc0742a + 3bc07426: 555d li a0,-9 + 3bc07428: bf79 j 3bc073c6 + 3bc0742a: 058d3503 ld a0,88(s10) + 3bc0742e: 9f0fa0ef jal ra,3bc0161e + 3bc07432: 8522 mv a0,s0 + 3bc07434: 9bcfa0ef jal ra,3bc015f0 + 3bc07438: 04ad3c23 sd a0,88(s10) + 3bc0743c: d56d beqz a0,3bc07426 + 3bc0743e: 028d3c23 sd s0,56(s10) + 3bc07442: 058d3783 ld a5,88(s10) + 3bc07446: 040d3423 sd zero,72(s10) + 3bc0744a: 040d3823 sd zero,80(s10) + 3bc0744e: 06fd3823 sd a5,112(s10) + 3bc07452: 478d li a5,3 + 3bc07454: 080d3023 sd zero,128(s10) + 3bc07458: 060d3c23 sd zero,120(s10) + 3bc0745c: 02fd2223 sw a5,36(s10) + 3bc07460: 419987b3 sub a5,s3,s9 + 3bc07464: 470d li a4,3 + 3bc07466: 00f77b63 bgeu a4,a5,3bc0747c + 3bc0746a: 024d2703 lw a4,36(s10) + 3bc0746e: 4791 li a5,4 + 3bc07470: 004c8413 addi s0,s9,4 + 3bc07474: 04f71e63 bne a4,a5,3bc074d0 + 3bc07478: 8ca2 mv s9,s0 + 3bc0747a: a031 j 3bc07486 + 3bc0747c: 4791 li a5,4 + 3bc0747e: 040d3423 sd zero,72(s10) + 3bc07482: 02fd2223 sw a5,36(s10) + 3bc07486: 048d3683 ld a3,72(s10) + 3bc0748a: 4711 li a4,4 + 3bc0748c: 040d3503 ld a0,64(s10) + 3bc07490: 40d705b3 sub a1,a4,a3 + 3bc07494: 41998633 sub a2,s3,s9 + 3bc07498: 00c5b7b3 sltu a5,a1,a2 + 3bc0749c: 0017c793 xori a5,a5,1 + 3bc074a0: 40f5960b mveqz a2,a1,a5 + 3bc074a4: 9536 add a0,a0,a3 + 3bc074a6: 85e6 mv a1,s9 + 3bc074a8: f832 sd a2,48(sp) + 3bc074aa: dd0f90ef jal ra,3bc00a7a + 3bc074ae: 048d3783 ld a5,72(s10) + 3bc074b2: 7642 ld a2,48(sp) + 3bc074b4: 00cc8433 add s0,s9,a2 + 3bc074b8: 963e add a2,a2,a5 + 3bc074ba: 04cd3423 sd a2,72(s10) + 3bc074be: 478d li a5,3 + 3bc074c0: 00c7e663 bltu a5,a2,3bc074cc + 3bc074c4: 4711 li a4,4 + 3bc074c6: 40c704b3 sub s1,a4,a2 + 3bc074ca: b5ed j 3bc073b4 + 3bc074cc: 040d3c83 ld s9,64(s10) + 3bc074d0: 8566 mv a0,s9 + 3bc074d2: f8ffe0ef jal ra,3bc06460 + 3bc074d6: 2501 sext.w a0,a0 + 3bc074d8: 47a9 li a5,10 + 3bc074da: c50d beqz a0,3bc07504 + 3bc074dc: 030d3683 ld a3,48(s10) + 3bc074e0: 7805378b extu a5,a0,30,0 + 3bc074e4: 7c07b70b extu a4,a5,31,0 + 3bc074e8: 4ef6ee63 bltu a3,a5,3bc079e4 + 3bc074ec: 01cd2783 lw a5,28(s10) + 3bc074f0: 00055d63 bgez a0,3bc0750a + 3bc074f4: 04ed3823 sd a4,80(s10) + 3bc074f8: c789 beqz a5,3bc07502 + 3bc074fa: 7502 ld a0,32(sp) + 3bc074fc: 4581 li a1,0 + 3bc074fe: 23d000ef jal ra,3bc07f3a + 3bc07502: 4795 li a5,5 + 3bc07504: 02fd2223 sw a5,36(s10) + 3bc07508: bd99 j 3bc0735e + 3bc0750a: 02079693 slli a3,a5,0x20 + 3bc0750e: 01e6d793 srli a5,a3,0x1e + 3bc07512: 97ba add a5,a5,a4 + 3bc07514: 471d li a4,7 + 3bc07516: 04fd3823 sd a5,80(s10) + 3bc0751a: 02ed2223 sw a4,36(s10) + 3bc0751e: 01690463 beq s2,s6,3bc07526 + 3bc07522: e3341ee3 bne s0,s3,3bc0735e + 3bc07526: 00478493 addi s1,a5,4 + 3bc0752a: b569 j 3bc073b4 + 3bc0752c: 4601 li a2,0 + 3bc0752e: 06090e63 beqz s2,3bc075aa + 3bc07532: 41998733 sub a4,s3,s9 + 3bc07536: 412b0633 sub a2,s6,s2 + 3bc0753a: 00c737b3 sltu a5,a4,a2 + 3bc0753e: 0017c793 xori a5,a5,1 + 3bc07542: 40f7160b mveqz a2,a4,a5 + 3bc07546: 050d3703 ld a4,80(s10) + 3bc0754a: 85e6 mv a1,s9 + 3bc0754c: 854a mv a0,s2 + 3bc0754e: 00c737b3 sltu a5,a4,a2 + 3bc07552: 0017c793 xori a5,a5,1 + 3bc07556: 40f7160b mveqz a2,a4,a5 + 3bc0755a: f832 sd a2,48(sp) + 3bc0755c: d1ef90ef jal ra,3bc00a7a + 3bc07560: 01cd2783 lw a5,28(s10) + 3bc07564: 7642 ld a2,48(sp) + 3bc07566: c791 beqz a5,3bc07572 + 3bc07568: 7502 ld a0,32(sp) + 3bc0756a: 85e6 mv a1,s9 + 3bc0756c: 225000ef jal ra,3bc07f90 + 3bc07570: 7642 ld a2,48(sp) + 3bc07572: 008d2783 lw a5,8(s10) + 3bc07576: c799 beqz a5,3bc07584 + 3bc07578: 85e6 mv a1,s9 + 3bc0757a: 8562 mv a0,s8 + 3bc0757c: f832 sd a2,48(sp) + 3bc0757e: 213000ef jal ra,3bc07f90 + 3bc07582: 7642 ld a2,48(sp) + 3bc07584: 010d3783 ld a5,16(s10) + 3bc07588: c791 beqz a5,3bc07594 + 3bc0758a: 028d3783 ld a5,40(s10) + 3bc0758e: 8f91 sub a5,a5,a2 + 3bc07590: 02fd3423 sd a5,40(s10) + 3bc07594: 004d2783 lw a5,4(s10) + 3bc07598: eb89 bnez a5,3bc075aa + 3bc0759a: 4701 li a4,0 + 3bc0759c: 86d6 mv a3,s5 + 3bc0759e: 85ca mv a1,s2 + 3bc075a0: 856a mv a0,s10 + 3bc075a2: f832 sd a2,48(sp) + 3bc075a4: 956ff0ef jal ra,3bc066fa + 3bc075a8: 7642 ld a2,48(sp) + 3bc075aa: 050d3783 ld a5,80(s10) + 3bc075ae: 01cd2703 lw a4,28(s10) + 3bc075b2: 00cc8433 add s0,s9,a2 + 3bc075b6: 9932 add s2,s2,a2 + 3bc075b8: 00c79863 bne a5,a2,3bc075c8 + 3bc075bc: 28070d63 beqz a4,3bc07856 + 3bc075c0: 040d3423 sd zero,72(s10) + 3bc075c4: 4799 li a5,6 + 3bc075c6: bf3d j 3bc07504 + 3bc075c8: 40c78633 sub a2,a5,a2 + 3bc075cc: 04cd3823 sd a2,80(s10) + 3bc075d0: 00e03733 snez a4,a4 + 3bc075d4: 0611 addi a2,a2,4 + 3bc075d6: 04e6148b addsl s1,a2,a4,2 + 3bc075da: bbe9 j 3bc073b4 + 3bc075dc: 419987b3 sub a5,s3,s9 + 3bc075e0: 470d li a4,3 + 3bc075e2: 048d3503 ld a0,72(s10) + 3bc075e6: 02f75363 bge a4,a5,3bc0760c + 3bc075ea: e10d bnez a0,3bc0760c + 3bc075ec: 004c8413 addi s0,s9,4 + 3bc075f0: 8766 mv a4,s9 + 3bc075f2: 853a mv a0,a4 + 3bc075f4: e6dfe0ef jal ra,3bc06460 + 3bc075f8: 00050c9b sext.w s9,a0 + 3bc075fc: 7502 ld a0,32(sp) + 3bc075fe: 365000ef jal ra,3bc08162 + 3bc07602: 2501 sext.w a0,a0 + 3bc07604: 24ac8963 beq s9,a0,3bc07856 + 3bc07608: 5565 li a0,-7 + 3bc0760a: bb75 j 3bc073c6 + 3bc0760c: 4411 li s0,4 + 3bc0760e: 8c09 sub s0,s0,a0 + 3bc07610: 0087b733 sltu a4,a5,s0 + 3bc07614: 00174713 xori a4,a4,1 + 3bc07618: 40e7940b mveqz s0,a5,a4 + 3bc0761c: 8622 mv a2,s0 + 3bc0761e: 85e6 mv a1,s9 + 3bc07620: 955e add a0,a0,s7 + 3bc07622: f85e sd s7,48(sp) + 3bc07624: c56f90ef jal ra,3bc00a7a + 3bc07628: 048d3783 ld a5,72(s10) + 3bc0762c: 468d li a3,3 + 3bc0762e: 7742 ld a4,48(sp) + 3bc07630: 97a2 add a5,a5,s0 + 3bc07632: 04fd3423 sd a5,72(s10) + 3bc07636: 9466 add s0,s0,s9 + 3bc07638: d6f6fee3 bgeu a3,a5,3bc073b4 + 3bc0763c: bf5d j 3bc075f2 + 3bc0763e: 050d3403 ld s0,80(s10) + 3bc07642: 419987b3 sub a5,s3,s9 + 3bc07646: 0087f963 bgeu a5,s0,3bc07658 + 3bc0764a: 47a1 li a5,8 + 3bc0764c: 040d3423 sd zero,72(s10) + 3bc07650: 02fd2223 sw a5,36(s10) + 3bc07654: 8466 mv s0,s9 + 3bc07656: b321 j 3bc0735e + 3bc07658: 9466 add s0,s0,s9 + 3bc0765a: 01cd2783 lw a5,28(s10) + 3bc0765e: 16079563 bnez a5,3bc077c8 + 3bc07662: 030d3683 ld a3,48(s10) + 3bc07666: 412b0633 sub a2,s6,s2 + 3bc0766a: 060d3703 ld a4,96(s10) + 3bc0766e: 068d3783 ld a5,104(s10) + 3bc07672: 18d67263 bgeu a2,a3,3bc077f6 + 3bc07676: 004d2683 lw a3,4(s10) + 3bc0767a: ea95 bnez a3,3bc076ae + 3bc0767c: 058d3683 ld a3,88(s10) + 3bc07680: 1cd71d63 bne a4,a3,3bc0785a + 3bc07684: 000206b7 lui a3,0x20 + 3bc07688: 00f6fc63 bgeu a3,a5,3bc076a0 + 3bc0768c: 75c1 lui a1,0xffff0 + 3bc0768e: 95be add a1,a1,a5 + 3bc07690: 6641 lui a2,0x10 + 3bc07692: 95ba add a1,a1,a4 + 3bc07694: 853a mv a0,a4 + 3bc07696: be4f90ef jal ra,3bc00a7a + 3bc0769a: 67c1 lui a5,0x10 + 3bc0769c: 06fd3423 sd a5,104(s10) + 3bc076a0: 058d3783 ld a5,88(s10) + 3bc076a4: 068d3703 ld a4,104(s10) + 3bc076a8: 97ba add a5,a5,a4 + 3bc076aa: 06fd3823 sd a5,112(s10) + 3bc076ae: 060d3703 ld a4,96(s10) + 3bc076b2: 068d3783 ld a5,104(s10) + 3bc076b6: cb09 beqz a4,3bc076c8 + 3bc076b8: 400006b7 lui a3,0x40000 + 3bc076bc: 00f6f663 bgeu a3,a5,3bc076c8 + 3bc076c0: 76c1 lui a3,0xffff0 + 3bc076c2: 97b6 add a5,a5,a3 + 3bc076c4: 973e add a4,a4,a5 + 3bc076c6: 67c1 lui a5,0x10 + 3bc076c8: 030d2683 lw a3,48(s10) + 3bc076cc: 050d2603 lw a2,80(s10) + 3bc076d0: 070d3583 ld a1,112(s10) + 3bc076d4: 8566 mv a0,s9 + 3bc076d6: 2781 sext.w a5,a5 + 3bc076d8: 921ff0ef jal ra,3bc06ff8 + 3bc076dc: 8caa mv s9,a0 + 3bc076de: 30054763 bltz a0,3bc079ec + 3bc076e2: 008d2783 lw a5,8(s10) + 3bc076e6: c799 beqz a5,3bc076f4 + 3bc076e8: 070d3583 ld a1,112(s10) + 3bc076ec: 862a mv a2,a0 + 3bc076ee: 8562 mv a0,s8 + 3bc076f0: 0a1000ef jal ra,3bc07f90 + 3bc076f4: 010d3783 ld a5,16(s10) + 3bc076f8: c799 beqz a5,3bc07706 + 3bc076fa: 028d3783 ld a5,40(s10) + 3bc076fe: 419787b3 sub a5,a5,s9 + 3bc07702: 02fd3423 sd a5,40(s10) + 3bc07706: 47a5 li a5,9 + 3bc07708: 079d3c23 sd s9,120(s10) + 3bc0770c: 080d3023 sd zero,128(s10) + 3bc07710: 02fd2223 sw a5,36(s10) + 3bc07714: 04090763 beqz s2,3bc07762 + 3bc07718: 080d3703 ld a4,128(s10) + 3bc0771c: 078d3603 ld a2,120(s10) + 3bc07720: 412b06b3 sub a3,s6,s2 + 3bc07724: 070d3583 ld a1,112(s10) + 3bc07728: 8e19 sub a2,a2,a4 + 3bc0772a: 00c6b7b3 sltu a5,a3,a2 + 3bc0772e: 0017c793 xori a5,a5,1 + 3bc07732: 42f6168b mvnez a3,a2,a5 + 3bc07736: 8636 mv a2,a3 + 3bc07738: 95ba add a1,a1,a4 + 3bc0773a: 854a mv a0,s2 + 3bc0773c: 8cb6 mv s9,a3 + 3bc0773e: b3cf90ef jal ra,3bc00a7a + 3bc07742: 004d2783 lw a5,4(s10) + 3bc07746: eb81 bnez a5,3bc07756 + 3bc07748: 4705 li a4,1 + 3bc0774a: 86d6 mv a3,s5 + 3bc0774c: 8666 mv a2,s9 + 3bc0774e: 85ca mv a1,s2 + 3bc07750: 856a mv a0,s10 + 3bc07752: fa9fe0ef jal ra,3bc066fa + 3bc07756: 080d3783 ld a5,128(s10) + 3bc0775a: 9966 add s2,s2,s9 + 3bc0775c: 97e6 add a5,a5,s9 + 3bc0775e: 08fd3023 sd a5,128(s10) + 3bc07762: 080d3703 ld a4,128(s10) + 3bc07766: 078d3783 ld a5,120(s10) + 3bc0776a: 0ef70663 beq a4,a5,3bc07856 + 3bc0776e: 4491 li s1,4 + 3bc07770: b191 j 3bc073b4 + 3bc07772: 048d3703 ld a4,72(s10) + 3bc07776: 050d3403 ld s0,80(s10) + 3bc0777a: 41998633 sub a2,s3,s9 + 3bc0777e: 040d3503 ld a0,64(s10) + 3bc07782: 8c19 sub s0,s0,a4 + 3bc07784: 008637b3 sltu a5,a2,s0 + 3bc07788: 0017c793 xori a5,a5,1 + 3bc0778c: 40f6140b mveqz s0,a2,a5 + 3bc07790: 8622 mv a2,s0 + 3bc07792: 953a add a0,a0,a4 + 3bc07794: 85e6 mv a1,s9 + 3bc07796: ae4f90ef jal ra,3bc00a7a + 3bc0779a: 048d3783 ld a5,72(s10) + 3bc0779e: 00f40733 add a4,s0,a5 + 3bc077a2: 050d3783 ld a5,80(s10) + 3bc077a6: 04ed3423 sd a4,72(s10) + 3bc077aa: 9466 add s0,s0,s9 + 3bc077ac: 00f77b63 bgeu a4,a5,3bc077c2 + 3bc077b0: 01cd2483 lw s1,28(s10) + 3bc077b4: 0791 addi a5,a5,4 + 3bc077b6: 8f99 sub a5,a5,a4 + 3bc077b8: 009034b3 snez s1,s1 + 3bc077bc: 0497948b addsl s1,a5,s1,2 + 3bc077c0: bed5 j 3bc073b4 + 3bc077c2: 040d3c83 ld s9,64(s10) + 3bc077c6: bd51 j 3bc0765a + 3bc077c8: 050d3583 ld a1,80(s10) + 3bc077cc: 15f1 addi a1,a1,-4 + 3bc077ce: 04bd3823 sd a1,80(s10) + 3bc077d2: 00bc8533 add a0,s9,a1 + 3bc077d6: fc2e sd a1,56(sp) + 3bc077d8: c89fe0ef jal ra,3bc06460 + 3bc077dc: 75e2 ld a1,56(sp) + 3bc077de: 0005079b sext.w a5,a0 + 3bc077e2: 4601 li a2,0 + 3bc077e4: 8566 mv a0,s9 + 3bc077e6: f83e sd a5,48(sp) + 3bc077e8: 58c000ef jal ra,3bc07d74 + 3bc077ec: 77c2 ld a5,48(sp) + 3bc077ee: 2501 sext.w a0,a0 + 3bc077f0: e6a789e3 beq a5,a0,3bc07662 + 3bc077f4: bd11 j 3bc07608 + 3bc077f6: cb09 beqz a4,3bc07808 + 3bc077f8: 40000637 lui a2,0x40000 + 3bc077fc: 00f67663 bgeu a2,a5,3bc07808 + 3bc07800: 75c1 lui a1,0xffff0 + 3bc07802: 97ae add a5,a5,a1 + 3bc07804: 973e add a4,a4,a5 + 3bc07806: 67c1 lui a5,0x10 + 3bc07808: 050d2603 lw a2,80(s10) + 3bc0780c: 8566 mv a0,s9 + 3bc0780e: 2781 sext.w a5,a5 + 3bc07810: 2681 sext.w a3,a3 + 3bc07812: 85ca mv a1,s2 + 3bc07814: fe4ff0ef jal ra,3bc06ff8 + 3bc07818: 8caa mv s9,a0 + 3bc0781a: 1c054763 bltz a0,3bc079e8 + 3bc0781e: 008d2783 lw a5,8(s10) + 3bc07822: c791 beqz a5,3bc0782e + 3bc07824: 862a mv a2,a0 + 3bc07826: 85ca mv a1,s2 + 3bc07828: 8562 mv a0,s8 + 3bc0782a: 766000ef jal ra,3bc07f90 + 3bc0782e: 010d3783 ld a5,16(s10) + 3bc07832: c799 beqz a5,3bc07840 + 3bc07834: 028d3783 ld a5,40(s10) + 3bc07838: 419787b3 sub a5,a5,s9 + 3bc0783c: 02fd3423 sd a5,40(s10) + 3bc07840: 004d2783 lw a5,4(s10) + 3bc07844: eb81 bnez a5,3bc07854 + 3bc07846: 4701 li a4,0 + 3bc07848: 86d6 mv a3,s5 + 3bc0784a: 8666 mv a2,s9 + 3bc0784c: 85ca mv a1,s2 + 3bc0784e: 856a mv a0,s10 + 3bc07850: eabfe0ef jal ra,3bc066fa + 3bc07854: 9966 add s2,s2,s9 + 3bc07856: 478d li a5,3 + 3bc07858: b175 j 3bc07504 + 3bc0785a: 6741 lui a4,0x10 + 3bc0785c: 00f77363 bgeu a4,a5,3bc07862 + 3bc07860: 67c1 lui a5,0x10 + 3bc07862: 97b6 add a5,a5,a3 + 3bc07864: b599 j 3bc076aa + 3bc07866: 8466 mv s0,s9 + 3bc07868: b575 j 3bc07714 + 3bc0786a: 028d3483 ld s1,40(s10) + 3bc0786e: 18049163 bnez s1,3bc079f0 + 3bc07872: 008d2a03 lw s4,8(s10) + 3bc07876: 000a1963 bnez s4,3bc07888 + 3bc0787a: 020d2223 sw zero,36(s10) + 3bc0787e: 060d3023 sd zero,96(s10) + 3bc07882: 060d3423 sd zero,104(s10) + 3bc07886: b3f9 j 3bc07654 + 3bc07888: 419987b3 sub a5,s3,s9 + 3bc0788c: 470d li a4,3 + 3bc0788e: 04f74a63 blt a4,a5,3bc078e2 + 3bc07892: 47ad li a5,11 + 3bc07894: 040d3423 sd zero,72(s10) + 3bc07898: 02fd2223 sw a5,36(s10) + 3bc0789c: 048d3703 ld a4,72(s10) + 3bc078a0: 4491 li s1,4 + 3bc078a2: 41998a33 sub s4,s3,s9 + 3bc078a6: 40e48633 sub a2,s1,a4 + 3bc078aa: 014637b3 sltu a5,a2,s4 + 3bc078ae: 040d3503 ld a0,64(s10) + 3bc078b2: 0017c793 xori a5,a5,1 + 3bc078b6: 40f61a0b mveqz s4,a2,a5 + 3bc078ba: 8652 mv a2,s4 + 3bc078bc: 85e6 mv a1,s9 + 3bc078be: 953a add a0,a0,a4 + 3bc078c0: 9baf90ef jal ra,3bc00a7a + 3bc078c4: 048d3603 ld a2,72(s10) + 3bc078c8: 014c8433 add s0,s9,s4 + 3bc078cc: 478d li a5,3 + 3bc078ce: 9a32 add s4,s4,a2 + 3bc078d0: 054d3423 sd s4,72(s10) + 3bc078d4: 414484b3 sub s1,s1,s4 + 3bc078d8: ad47fee3 bgeu a5,s4,3bc073b4 + 3bc078dc: 040d3c83 ld s9,64(s10) + 3bc078e0: a019 j 3bc078e6 + 3bc078e2: 004c8413 addi s0,s9,4 + 3bc078e6: 8566 mv a0,s9 + 3bc078e8: b79fe0ef jal ra,3bc06460 + 3bc078ec: 0005049b sext.w s1,a0 + 3bc078f0: 8562 mv a0,s8 + 3bc078f2: 071000ef jal ra,3bc08162 + 3bc078f6: 2501 sext.w a0,a0 + 3bc078f8: 0ea49e63 bne s1,a0,3bc079f4 + 3bc078fc: 020d2223 sw zero,36(s10) + 3bc07900: 060d3023 sd zero,96(s10) + 3bc07904: 060d3423 sd zero,104(s10) + 3bc07908: 4481 li s1,0 + 3bc0790a: b46d j 3bc073b4 + 3bc0790c: 419987b3 sub a5,s3,s9 + 3bc07910: 470d li a4,3 + 3bc07912: 004c8413 addi s0,s9,4 + 3bc07916: 04f74d63 blt a4,a5,3bc07970 + 3bc0791a: 4791 li a5,4 + 3bc0791c: 04fd3423 sd a5,72(s10) + 3bc07920: 47a1 li a5,8 + 3bc07922: 04fd3823 sd a5,80(s10) + 3bc07926: 47b5 li a5,13 + 3bc07928: 02fd2223 sw a5,36(s10) + 3bc0792c: 048d3503 ld a0,72(s10) + 3bc07930: 050d3603 ld a2,80(s10) + 3bc07934: 41998733 sub a4,s3,s9 + 3bc07938: 85e6 mv a1,s9 + 3bc0793a: 8e09 sub a2,a2,a0 + 3bc0793c: 00c737b3 sltu a5,a4,a2 + 3bc07940: 0017c793 xori a5,a5,1 + 3bc07944: 40f7160b mveqz a2,a4,a5 + 3bc07948: 955e add a0,a0,s7 + 3bc0794a: f832 sd a2,48(sp) + 3bc0794c: 92ef90ef jal ra,3bc00a7a + 3bc07950: 048d3783 ld a5,72(s10) + 3bc07954: 7642 ld a2,48(sp) + 3bc07956: 00cc8433 add s0,s9,a2 + 3bc0795a: 963e add a2,a2,a5 + 3bc0795c: 050d3783 ld a5,80(s10) + 3bc07960: 04cd3423 sd a2,72(s10) + 3bc07964: 00f67563 bgeu a2,a5,3bc0796e + 3bc07968: 40c784b3 sub s1,a5,a2 + 3bc0796c: b4a1 j 3bc073b4 + 3bc0796e: 7ca2 ld s9,40(sp) + 3bc07970: 8566 mv a0,s9 + 3bc07972: aeffe0ef jal ra,3bc06460 + 3bc07976: 7c05350b extu a0,a0,31,0 + 3bc0797a: 00ad3823 sd a0,16(s10) + 3bc0797e: 04ad3823 sd a0,80(s10) + 3bc07982: 47b9 li a5,14 + 3bc07984: b641 j 3bc07504 + 3bc07986: 050d3483 ld s1,80(s10) + 3bc0798a: 41998633 sub a2,s3,s9 + 3bc0798e: 4a01 li s4,0 + 3bc07990: 00c4b7b3 sltu a5,s1,a2 + 3bc07994: 0017c793 xori a5,a5,1 + 3bc07998: 40f4960b mveqz a2,s1,a5 + 3bc0799c: 8c91 sub s1,s1,a2 + 3bc0799e: 049d3823 sd s1,80(s10) + 3bc079a2: 00cc8433 add s0,s9,a2 + 3bc079a6: 9a049ce3 bnez s1,3bc0735e + 3bc079aa: 020d2223 sw zero,36(s10) + 3bc079ae: 060d3023 sd zero,96(s10) + 3bc079b2: 060d3423 sd zero,104(s10) + 3bc079b6: b265 j 3bc0735e + 3bc079b8: 6741 lui a4,0x10 + 3bc079ba: 843e mv s0,a5 + 3bc079bc: 00f77363 bgeu a4,a5,3bc079c2 + 3bc079c0: 6441 lui s0,0x10 + 3bc079c2: 8f81 sub a5,a5,s0 + 3bc079c4: 95be add a1,a1,a5 + 3bc079c6: 8622 mv a2,s0 + 3bc079c8: 8b2f90ef jal ra,3bc00a7a + 3bc079cc: 058d3783 ld a5,88(s10) + 3bc079d0: 068d3423 sd s0,104(s10) + 3bc079d4: 06fd3023 sd a5,96(s10) + 3bc079d8: 97a2 add a5,a5,s0 + 3bc079da: 06fd3823 sd a5,112(s10) + 3bc079de: b23d j 3bc0730c + 3bc079e0: 451d li a0,7 + 3bc079e2: b2d5 j 3bc073c6 + 3bc079e4: 5579 li a0,-2 + 3bc079e6: b2c5 j 3bc073c6 + 3bc079e8: 557d li a0,-1 + 3bc079ea: baf1 j 3bc073c6 + 3bc079ec: 5541 li a0,-16 + 3bc079ee: bae1 j 3bc073c6 + 3bc079f0: 5549 li a0,-14 + 3bc079f2: bad1 j 3bc073c6 + 3bc079f4: 5539 li a0,-18 + 3bc079f6: bac1 j 3bc073c6 + +000000003bc079f8 : + 3bc079f8: 00f5579b srliw a5,a0,0xf + 3bc079fc: 8d3d xor a0,a0,a5 + 3bc079fe: 85ebd7b7 lui a5,0x85ebd + 3bc07a02: a777879b addiw a5,a5,-1417 + 3bc07a06: 02a7853b mulw a0,a5,a0 + 3bc07a0a: 00d5579b srliw a5,a0,0xd + 3bc07a0e: 8fa9 xor a5,a5,a0 + 3bc07a10: c2b2b537 lui a0,0xc2b2b + 3bc07a14: e3d5051b addiw a0,a0,-451 + 3bc07a18: 02a787bb mulw a5,a5,a0 + 3bc07a1c: 0107d51b srliw a0,a5,0x10 + 3bc07a20: 8d3d xor a0,a0,a5 + 3bc07a22: 8082 ret + +000000003bc07a24 : + 3bc07a24: 1101 addi sp,sp,-32 + 3bc07a26: 85aa mv a1,a0 + 3bc07a28: 4611 li a2,4 + 3bc07a2a: 0068 addi a0,sp,12 + 3bc07a2c: ec06 sd ra,24(sp) + 3bc07a2e: 84cf90ef jal ra,3bc00a7a + 3bc07a32: 60e2 ld ra,24(sp) + 3bc07a34: 4532 lw a0,12(sp) + 3bc07a36: 6105 addi sp,sp,32 + 3bc07a38: 8082 ret + +000000003bc07a3a : + 3bc07a3a: 1101 addi sp,sp,-32 + 3bc07a3c: 8a3d andi a2,a2,15 + 3bc07a3e: e822 sd s0,16(sp) + 3bc07a40: ec06 sd ra,24(sp) + 3bc07a42: e426 sd s1,8(sp) + 3bc07a44: e04a sd s2,0(sp) + 3bc07a46: 167d addi a2,a2,-1 + 3bc07a48: 47b9 li a5,14 + 3bc07a4a: 842a mv s0,a0 + 3bc07a4c: 30c7ec63 bltu a5,a2,3bc07d64 + 3bc07a50: 00004717 auipc a4,0x4 + 3bc07a54: a8070713 addi a4,a4,-1408 # 3bc0b4d0 + 3bc07a58: 44c7478b lrw a5,a4,a2,2 + 3bc07a5c: 84ae mv s1,a1 + 3bc07a5e: 8936 mv s2,a3 + 3bc07a60: 97ba add a5,a5,a4 + 3bc07a62: 8782 jr a5 + 3bc07a64: 4785 li a5,1 + 3bc07a66: 08f69a63 bne a3,a5,3bc07afa + 3bc07a6a: 852e mv a0,a1 + 3bc07a6c: fb9ff0ef jal ra,3bc07a24 + 3bc07a70: 0005079b sext.w a5,a0 + 3bc07a74: c2b2b737 lui a4,0xc2b2b + 3bc07a78: e3d7071b addiw a4,a4,-451 + 3bc07a7c: 24f7140b mulaw s0,a4,a5 + 3bc07a80: 27d4f7b7 lui a5,0x27d4f + 3bc07a84: b2f7879b addiw a5,a5,-1233 + 3bc07a88: 0491 addi s1,s1,4 + 3bc07a8a: 14f4140b srriw s0,s0,15 + 3bc07a8e: 02f4043b mulw s0,s0,a5 + 3bc07a92: 4785 li a5,1 + 3bc07a94: 06f91563 bne s2,a5,3bc07afe + 3bc07a98: 8526 mv a0,s1 + 3bc07a9a: f8bff0ef jal ra,3bc07a24 + 3bc07a9e: 0005079b sext.w a5,a0 + 3bc07aa2: c2b2b737 lui a4,0xc2b2b + 3bc07aa6: e3d7071b addiw a4,a4,-451 + 3bc07aaa: 0491 addi s1,s1,4 + 3bc07aac: 24f7140b mulaw s0,a4,a5 + 3bc07ab0: 27d4f7b7 lui a5,0x27d4f + 3bc07ab4: b2f7879b addiw a5,a5,-1233 + 3bc07ab8: 14f4140b srriw s0,s0,15 + 3bc07abc: 02f4043b mulw s0,s0,a5 + 3bc07ac0: 4785 li a5,1 + 3bc07ac2: 04f91063 bne s2,a5,3bc07b02 + 3bc07ac6: 8526 mv a0,s1 + 3bc07ac8: f5dff0ef jal ra,3bc07a24 + 3bc07acc: 0005079b sext.w a5,a0 + 3bc07ad0: c2b2b737 lui a4,0xc2b2b + 3bc07ad4: e3d7071b addiw a4,a4,-451 + 3bc07ad8: 24f7140b mulaw s0,a4,a5 + 3bc07adc: 27d4f7b7 lui a5,0x27d4f + 3bc07ae0: b2f7879b addiw a5,a5,-1233 + 3bc07ae4: 14f4150b srriw a0,s0,15 + 3bc07ae8: 02a7853b mulw a0,a5,a0 + 3bc07aec: 6442 ld s0,16(sp) + 3bc07aee: 60e2 ld ra,24(sp) + 3bc07af0: 64a2 ld s1,8(sp) + 3bc07af2: 6902 ld s2,0(sp) + 3bc07af4: 6105 addi sp,sp,32 + 3bc07af6: f03ff06f j 3bc079f8 + 3bc07afa: 419c lw a5,0(a1) + 3bc07afc: bfa5 j 3bc07a74 + 3bc07afe: 409c lw a5,0(s1) + 3bc07b00: b74d j 3bc07aa2 + 3bc07b02: 409c lw a5,0(s1) + 3bc07b04: b7f1 j 3bc07ad0 + 3bc07b06: 4785 li a5,1 + 3bc07b08: 0af69263 bne a3,a5,3bc07bac + 3bc07b0c: 852e mv a0,a1 + 3bc07b0e: f17ff0ef jal ra,3bc07a24 + 3bc07b12: 0005079b sext.w a5,a0 + 3bc07b16: c2b2b737 lui a4,0xc2b2b + 3bc07b1a: e3d7071b addiw a4,a4,-451 + 3bc07b1e: 24f7140b mulaw s0,a4,a5 + 3bc07b22: 27d4f7b7 lui a5,0x27d4f + 3bc07b26: b2f7879b addiw a5,a5,-1233 + 3bc07b2a: 0491 addi s1,s1,4 + 3bc07b2c: 14f4140b srriw s0,s0,15 + 3bc07b30: 02f4043b mulw s0,s0,a5 + 3bc07b34: 4785 li a5,1 + 3bc07b36: 06f91d63 bne s2,a5,3bc07bb0 + 3bc07b3a: 8526 mv a0,s1 + 3bc07b3c: ee9ff0ef jal ra,3bc07a24 + 3bc07b40: 0005079b sext.w a5,a0 + 3bc07b44: c2b2b737 lui a4,0xc2b2b + 3bc07b48: e3d7071b addiw a4,a4,-451 + 3bc07b4c: 0491 addi s1,s1,4 + 3bc07b4e: 24f7140b mulaw s0,a4,a5 + 3bc07b52: 27d4f7b7 lui a5,0x27d4f + 3bc07b56: b2f7879b addiw a5,a5,-1233 + 3bc07b5a: 14f4140b srriw s0,s0,15 + 3bc07b5e: 02f4043b mulw s0,s0,a5 + 3bc07b62: 4785 li a5,1 + 3bc07b64: 04f91863 bne s2,a5,3bc07bb4 + 3bc07b68: 8526 mv a0,s1 + 3bc07b6a: ebbff0ef jal ra,3bc07a24 + 3bc07b6e: 0005079b sext.w a5,a0 + 3bc07b72: c2b2b737 lui a4,0xc2b2b + 3bc07b76: e3d7071b addiw a4,a4,-451 + 3bc07b7a: 16566537 lui a0,0x16566 + 3bc07b7e: 7b15051b addiw a0,a0,1969 + 3bc07b82: 24f7140b mulaw s0,a4,a5 + 3bc07b86: 0044c783 lbu a5,4(s1) + 3bc07b8a: 27d4f737 lui a4,0x27d4f + 3bc07b8e: b2f7071b addiw a4,a4,-1233 + 3bc07b92: 02a787bb mulw a5,a5,a0 + 3bc07b96: 14f4140b srriw s0,s0,15 + 3bc07b9a: 9e378537 lui a0,0x9e378 + 3bc07b9e: 9b15051b addiw a0,a0,-1615 + 3bc07ba2: 24e4178b mulaw a5,s0,a4 + 3bc07ba6: 1557978b srriw a5,a5,21 + 3bc07baa: bf3d j 3bc07ae8 + 3bc07bac: 419c lw a5,0(a1) + 3bc07bae: b7a5 j 3bc07b16 + 3bc07bb0: 409c lw a5,0(s1) + 3bc07bb2: bf49 j 3bc07b44 + 3bc07bb4: 409c lw a5,0(s1) + 3bc07bb6: bf75 j 3bc07b72 + 3bc07bb8: 4785 li a5,1 + 3bc07bba: 0af69a63 bne a3,a5,3bc07c6e + 3bc07bbe: 852e mv a0,a1 + 3bc07bc0: e65ff0ef jal ra,3bc07a24 + 3bc07bc4: 0005079b sext.w a5,a0 + 3bc07bc8: c2b2b737 lui a4,0xc2b2b + 3bc07bcc: e3d7071b addiw a4,a4,-451 + 3bc07bd0: 24f7140b mulaw s0,a4,a5 + 3bc07bd4: 27d4f7b7 lui a5,0x27d4f + 3bc07bd8: b2f7879b addiw a5,a5,-1233 + 3bc07bdc: 0491 addi s1,s1,4 + 3bc07bde: 14f4140b srriw s0,s0,15 + 3bc07be2: 02f4043b mulw s0,s0,a5 + 3bc07be6: 4785 li a5,1 + 3bc07be8: 08f91563 bne s2,a5,3bc07c72 + 3bc07bec: 8526 mv a0,s1 + 3bc07bee: e37ff0ef jal ra,3bc07a24 + 3bc07bf2: 0005079b sext.w a5,a0 + 3bc07bf6: c2b2b737 lui a4,0xc2b2b + 3bc07bfa: e3d7071b addiw a4,a4,-451 + 3bc07bfe: 0491 addi s1,s1,4 + 3bc07c00: 24f7140b mulaw s0,a4,a5 + 3bc07c04: 27d4f7b7 lui a5,0x27d4f + 3bc07c08: b2f7879b addiw a5,a5,-1233 + 3bc07c0c: 14f4140b srriw s0,s0,15 + 3bc07c10: 02f4043b mulw s0,s0,a5 + 3bc07c14: 4785 li a5,1 + 3bc07c16: 06f91063 bne s2,a5,3bc07c76 + 3bc07c1a: 8526 mv a0,s1 + 3bc07c1c: e09ff0ef jal ra,3bc07a24 + 3bc07c20: 0005079b sext.w a5,a0 + 3bc07c24: c2b2b737 lui a4,0xc2b2b + 3bc07c28: e3d7071b addiw a4,a4,-451 + 3bc07c2c: 9e378537 lui a0,0x9e378 + 3bc07c30: 9b15051b addiw a0,a0,-1615 + 3bc07c34: 24f7140b mulaw s0,a4,a5 + 3bc07c38: 0044c703 lbu a4,4(s1) + 3bc07c3c: 165667b7 lui a5,0x16566 + 3bc07c40: 7b17869b addiw a3,a5,1969 + 3bc07c44: 27d4f7b7 lui a5,0x27d4f + 3bc07c48: b2f7879b addiw a5,a5,-1233 + 3bc07c4c: 02d7073b mulw a4,a4,a3 + 3bc07c50: 14f4140b srriw s0,s0,15 + 3bc07c54: 24f4170b mulaw a4,s0,a5 + 3bc07c58: 0054c783 lbu a5,5(s1) + 3bc07c5c: 02d787bb mulw a5,a5,a3 + 3bc07c60: 1557170b srriw a4,a4,21 + 3bc07c64: 24a7178b mulaw a5,a4,a0 + 3bc07c68: 1557978b srriw a5,a5,21 + 3bc07c6c: bdb5 j 3bc07ae8 + 3bc07c6e: 419c lw a5,0(a1) + 3bc07c70: bfa1 j 3bc07bc8 + 3bc07c72: 409c lw a5,0(s1) + 3bc07c74: b749 j 3bc07bf6 + 3bc07c76: 409c lw a5,0(s1) + 3bc07c78: b775 j 3bc07c24 + 3bc07c7a: 4785 li a5,1 + 3bc07c7c: 0ef69663 bne a3,a5,3bc07d68 + 3bc07c80: 852e mv a0,a1 + 3bc07c82: da3ff0ef jal ra,3bc07a24 + 3bc07c86: 0005079b sext.w a5,a0 + 3bc07c8a: c2b2b737 lui a4,0xc2b2b + 3bc07c8e: e3d7071b addiw a4,a4,-451 + 3bc07c92: 24f7140b mulaw s0,a4,a5 + 3bc07c96: 27d4f7b7 lui a5,0x27d4f + 3bc07c9a: b2f7879b addiw a5,a5,-1233 + 3bc07c9e: 0491 addi s1,s1,4 + 3bc07ca0: 14f4140b srriw s0,s0,15 + 3bc07ca4: 02f4043b mulw s0,s0,a5 + 3bc07ca8: 4785 li a5,1 + 3bc07caa: 0cf91163 bne s2,a5,3bc07d6c + 3bc07cae: 8526 mv a0,s1 + 3bc07cb0: d75ff0ef jal ra,3bc07a24 + 3bc07cb4: 0005079b sext.w a5,a0 + 3bc07cb8: c2b2b737 lui a4,0xc2b2b + 3bc07cbc: e3d7071b addiw a4,a4,-451 + 3bc07cc0: 0491 addi s1,s1,4 + 3bc07cc2: 24f7140b mulaw s0,a4,a5 + 3bc07cc6: 27d4f7b7 lui a5,0x27d4f + 3bc07cca: b2f7879b addiw a5,a5,-1233 + 3bc07cce: 14f4140b srriw s0,s0,15 + 3bc07cd2: 02f4043b mulw s0,s0,a5 + 3bc07cd6: 4785 li a5,1 + 3bc07cd8: 08f91c63 bne s2,a5,3bc07d70 + 3bc07cdc: 8526 mv a0,s1 + 3bc07cde: d47ff0ef jal ra,3bc07a24 + 3bc07ce2: 0005079b sext.w a5,a0 + 3bc07ce6: c2b2b737 lui a4,0xc2b2b + 3bc07cea: e3d7071b addiw a4,a4,-451 + 3bc07cee: 0491 addi s1,s1,4 + 3bc07cf0: 24f7140b mulaw s0,a4,a5 + 3bc07cf4: 27d4f7b7 lui a5,0x27d4f + 3bc07cf8: b2f7879b addiw a5,a5,-1233 + 3bc07cfc: 14f4140b srriw s0,s0,15 + 3bc07d00: 02f4043b mulw s0,s0,a5 + 3bc07d04: 9814c70b lbuia a4,(s1),1,0 + 3bc07d08: 165667b7 lui a5,0x16566 + 3bc07d0c: 7b17879b addiw a5,a5,1969 + 3bc07d10: 24f7140b mulaw s0,a4,a5 + 3bc07d14: 9e3787b7 lui a5,0x9e378 + 3bc07d18: 9b17879b addiw a5,a5,-1615 + 3bc07d1c: 1554140b srriw s0,s0,21 + 3bc07d20: 02f4043b mulw s0,s0,a5 + 3bc07d24: 9814c70b lbuia a4,(s1),1,0 + 3bc07d28: 165667b7 lui a5,0x16566 + 3bc07d2c: 7b17879b addiw a5,a5,1969 + 3bc07d30: 24f7140b mulaw s0,a4,a5 + 3bc07d34: 9e3787b7 lui a5,0x9e378 + 3bc07d38: 9b17879b addiw a5,a5,-1615 + 3bc07d3c: 1554140b srriw s0,s0,21 + 3bc07d40: 02f4043b mulw s0,s0,a5 + 3bc07d44: 0004c703 lbu a4,0(s1) + 3bc07d48: 165667b7 lui a5,0x16566 + 3bc07d4c: 7b17879b addiw a5,a5,1969 + 3bc07d50: 24f7140b mulaw s0,a4,a5 + 3bc07d54: 9e3787b7 lui a5,0x9e378 + 3bc07d58: 9b17879b addiw a5,a5,-1615 + 3bc07d5c: 1554140b srriw s0,s0,21 + 3bc07d60: 02f4043b mulw s0,s0,a5 + 3bc07d64: 8522 mv a0,s0 + 3bc07d66: b359 j 3bc07aec + 3bc07d68: 419c lw a5,0(a1) + 3bc07d6a: b705 j 3bc07c8a + 3bc07d6c: 409c lw a5,0(s1) + 3bc07d6e: b7a9 j 3bc07cb8 + 3bc07d70: 409c lw a5,0(s1) + 3bc07d72: bf95 j 3bc07ce6 + +000000003bc07d74 : + 3bc07d74: 711d addi sp,sp,-96 + 3bc07d76: e8a2 sd s0,80(sp) + 3bc07d78: e0ca sd s2,64(sp) + 3bc07d7a: fc4e sd s3,56(sp) + 3bc07d7c: ec86 sd ra,88(sp) + 3bc07d7e: e4a6 sd s1,72(sp) + 3bc07d80: f852 sd s4,48(sp) + 3bc07d82: f456 sd s5,40(sp) + 3bc07d84: f05a sd s6,32(sp) + 3bc07d86: ec5e sd s7,24(sp) + 3bc07d88: e862 sd s8,16(sp) + 3bc07d8a: e466 sd s9,8(sp) + 3bc07d8c: 00357793 andi a5,a0,3 + 3bc07d90: 892a mv s2,a0 + 3bc07d92: 89ae mv s3,a1 + 3bc07d94: 8432 mv s0,a2 + 3bc07d96: eff1 bnez a5,3bc07e72 + 3bc07d98: 47bd li a5,15 + 3bc07d9a: 0cb7f663 bgeu a5,a1,3bc07e66 + 3bc07d9e: 242347b7 lui a5,0x24234 + 3bc07da2: ff158813 addi a6,a1,-15 # fffffffffffefff1 <__BL2_END__+0xffffffffc43dc7e1> + 3bc07da6: 4287879b addiw a5,a5,1064 + 3bc07daa: 982a add a6,a6,a0 + 3bc07dac: 9fb1 addw a5,a5,a2 + 3bc07dae: 61c88537 lui a0,0x61c88 + 3bc07db2: 85ebd637 lui a2,0x85ebd + 3bc07db6: a776061b addiw a2,a2,-1417 + 3bc07dba: 64f5051b addiw a0,a0,1615 + 3bc07dbe: 9e3785b7 lui a1,0x9e378 + 3bc07dc2: 0086073b addw a4,a2,s0 + 3bc07dc6: 9d21 addw a0,a0,s0 + 3bc07dc8: 86ca mv a3,s2 + 3bc07dca: 9b15859b addiw a1,a1,-1615 + 3bc07dce: 0006a883 lw a7,0(a3) # ffffffffffff0000 <__BL2_END__+0xffffffffc43dc7f0> + 3bc07dd2: 24c8978b mulaw a5,a7,a2 + 3bc07dd6: 0046a883 lw a7,4(a3) + 3bc07dda: 24c8970b mulaw a4,a7,a2 + 3bc07dde: 0086a883 lw a7,8(a3) + 3bc07de2: 1537978b srriw a5,a5,19 + 3bc07de6: 24c8940b mulaw s0,a7,a2 + 3bc07dea: 00c6a883 lw a7,12(a3) + 3bc07dee: 1537170b srriw a4,a4,19 + 3bc07df2: 06c1 addi a3,a3,16 + 3bc07df4: 24c8950b mulaw a0,a7,a2 + 3bc07df8: 1534140b srriw s0,s0,19 + 3bc07dfc: 1535150b srriw a0,a0,19 + 3bc07e00: 02b787bb mulw a5,a5,a1 + 3bc07e04: 02b7073b mulw a4,a4,a1 + 3bc07e08: 02b4043b mulw s0,s0,a1 + 3bc07e0c: 02b5053b mulw a0,a0,a1 + 3bc07e10: fb06efe3 bltu a3,a6,3bc07dce + 3bc07e14: 00190593 addi a1,s2,1 + 3bc07e18: 46c1 li a3,16 + 3bc07e1a: 00b86663 bltu a6,a1,3bc07e26 + 3bc07e1e: ff098693 addi a3,s3,-16 + 3bc07e22: 9ac1 andi a3,a3,-16 + 3bc07e24: 06c1 addi a3,a3,16 + 3bc07e26: 15f7978b srriw a5,a5,31 + 3bc07e2a: 1597170b srriw a4,a4,25 + 3bc07e2e: 9fb9 addw a5,a5,a4 + 3bc07e30: 1544140b srriw s0,s0,20 + 3bc07e34: 9fa1 addw a5,a5,s0 + 3bc07e36: 14e5150b srriw a0,a0,14 + 3bc07e3a: 9936 add s2,s2,a3 + 3bc07e3c: 9d3d addw a0,a0,a5 + 3bc07e3e: 4681 li a3,0 + 3bc07e40: 6446 ld s0,80(sp) + 3bc07e42: 60e6 ld ra,88(sp) + 3bc07e44: 64a6 ld s1,72(sp) + 3bc07e46: 7a42 ld s4,48(sp) + 3bc07e48: 7aa2 ld s5,40(sp) + 3bc07e4a: 7b02 ld s6,32(sp) + 3bc07e4c: 6be2 ld s7,24(sp) + 3bc07e4e: 6c42 ld s8,16(sp) + 3bc07e50: 6ca2 ld s9,8(sp) + 3bc07e52: 00f9f613 andi a2,s3,15 + 3bc07e56: 85ca mv a1,s2 + 3bc07e58: 00a9853b addw a0,s3,a0 + 3bc07e5c: 6906 ld s2,64(sp) + 3bc07e5e: 79e2 ld s3,56(sp) + 3bc07e60: 6125 addi sp,sp,96 + 3bc07e62: bd9ff06f j 3bc07a3a + 3bc07e66: 16566537 lui a0,0x16566 + 3bc07e6a: 7b15051b addiw a0,a0,1969 + 3bc07e6e: 9d31 addw a0,a0,a2 + 3bc07e70: b7f9 j 3bc07e3e + 3bc07e72: 47bd li a5,15 + 3bc07e74: 0ab7fe63 bgeu a5,a1,3bc07f30 + 3bc07e78: 242344b7 lui s1,0x24234 + 3bc07e7c: 85ebdab7 lui s5,0x85ebd + 3bc07e80: 61c887b7 lui a5,0x61c88 + 3bc07e84: ff158c93 addi s9,a1,-15 # ffffffff9e377ff1 <__BL2_END__+0xffffffff627647e1> + 3bc07e88: 4284849b addiw s1,s1,1064 + 3bc07e8c: a77a8a9b addiw s5,s5,-1417 + 3bc07e90: 64f7879b addiw a5,a5,1615 + 3bc07e94: 9e378b37 lui s6,0x9e378 + 3bc07e98: 9caa add s9,s9,a0 + 3bc07e9a: 9cb1 addw s1,s1,a2 + 3bc07e9c: 00ca8c3b addw s8,s5,a2 + 3bc07ea0: 00c78bbb addw s7,a5,a2 + 3bc07ea4: 8a2a mv s4,a0 + 3bc07ea6: 9b1b0b1b addiw s6,s6,-1615 + 3bc07eaa: 8552 mv a0,s4 + 3bc07eac: b79ff0ef jal ra,3bc07a24 + 3bc07eb0: 24aa948b mulaw s1,s5,a0 + 3bc07eb4: 004a0513 addi a0,s4,4 + 3bc07eb8: b6dff0ef jal ra,3bc07a24 + 3bc07ebc: 8762 mv a4,s8 + 3bc07ebe: 24aa970b mulaw a4,s5,a0 + 3bc07ec2: 008a0513 addi a0,s4,8 + 3bc07ec6: 1534948b srriw s1,s1,19 + 3bc07eca: 1537170b srriw a4,a4,19 + 3bc07ece: 03670c3b mulw s8,a4,s6 + 3bc07ed2: b53ff0ef jal ra,3bc07a24 + 3bc07ed6: 24aa940b mulaw s0,s5,a0 + 3bc07eda: 00ca0513 addi a0,s4,12 + 3bc07ede: 0a41 addi s4,s4,16 + 3bc07ee0: 1534160b srriw a2,s0,19 + 3bc07ee4: 0366043b mulw s0,a2,s6 + 3bc07ee8: b3dff0ef jal ra,3bc07a24 + 3bc07eec: 87de mv a5,s7 + 3bc07eee: 24aa978b mulaw a5,s5,a0 + 3bc07ef2: 1537978b srriw a5,a5,19 + 3bc07ef6: 036484bb mulw s1,s1,s6 + 3bc07efa: 03678bbb mulw s7,a5,s6 + 3bc07efe: fb9a66e3 bltu s4,s9,3bc07eaa + 3bc07f02: 00190713 addi a4,s2,1 + 3bc07f06: 47c1 li a5,16 + 3bc07f08: 00ece663 bltu s9,a4,3bc07f14 + 3bc07f0c: ff098793 addi a5,s3,-16 + 3bc07f10: 9bc1 andi a5,a5,-16 + 3bc07f12: 07c1 addi a5,a5,16 + 3bc07f14: 159c150b srriw a0,s8,25 + 3bc07f18: 15f4948b srriw s1,s1,31 + 3bc07f1c: 9ca9 addw s1,s1,a0 + 3bc07f1e: 1544150b srriw a0,s0,20 + 3bc07f22: 993e add s2,s2,a5 + 3bc07f24: 9d25 addw a0,a0,s1 + 3bc07f26: 14eb940b srriw s0,s7,14 + 3bc07f2a: 9d21 addw a0,a0,s0 + 3bc07f2c: 4685 li a3,1 + 3bc07f2e: bf09 j 3bc07e40 + 3bc07f30: 16566537 lui a0,0x16566 + 3bc07f34: 7b15051b addiw a0,a0,1969 + 3bc07f38: bfcd j 3bc07f2a + +000000003bc07f3a : + 3bc07f3a: 715d addi sp,sp,-80 + 3bc07f3c: e0a2 sd s0,64(sp) + 3bc07f3e: fc26 sd s1,56(sp) + 3bc07f40: 842e mv s0,a1 + 3bc07f42: 84aa mv s1,a0 + 3bc07f44: 03000613 li a2,48 + 3bc07f48: 4581 li a1,0 + 3bc07f4a: 850a mv a0,sp + 3bc07f4c: e486 sd ra,72(sp) + 3bc07f4e: ad3f80ef jal ra,3bc00a20 + 3bc07f52: 242347b7 lui a5,0x24234 + 3bc07f56: 4287879b addiw a5,a5,1064 + 3bc07f5a: 9fa1 addw a5,a5,s0 + 3bc07f5c: c43e sw a5,8(sp) + 3bc07f5e: 85ebd7b7 lui a5,0x85ebd + 3bc07f62: a777879b addiw a5,a5,-1417 + 3bc07f66: 9fa1 addw a5,a5,s0 + 3bc07f68: c63e sw a5,12(sp) + 3bc07f6a: 61c887b7 lui a5,0x61c88 + 3bc07f6e: 64f7879b addiw a5,a5,1615 + 3bc07f72: c822 sw s0,16(sp) + 3bc07f74: 858a mv a1,sp + 3bc07f76: 9c3d addw s0,s0,a5 + 3bc07f78: 8526 mv a0,s1 + 3bc07f7a: 02c00613 li a2,44 + 3bc07f7e: ca22 sw s0,20(sp) + 3bc07f80: afbf80ef jal ra,3bc00a7a + 3bc07f84: 60a6 ld ra,72(sp) + 3bc07f86: 6406 ld s0,64(sp) + 3bc07f88: 74e2 ld s1,56(sp) + 3bc07f8a: 4501 li a0,0 + 3bc07f8c: 6161 addi sp,sp,80 + 3bc07f8e: 8082 ret + +000000003bc07f90 : + 3bc07f90: 711d addi sp,sp,-96 + 3bc07f92: e0ca sd s2,64(sp) + 3bc07f94: ec86 sd ra,88(sp) + 3bc07f96: e8a2 sd s0,80(sp) + 3bc07f98: e4a6 sd s1,72(sp) + 3bc07f9a: fc4e sd s3,56(sp) + 3bc07f9c: f852 sd s4,48(sp) + 3bc07f9e: f456 sd s5,40(sp) + 3bc07fa0: f05a sd s6,32(sp) + 3bc07fa2: ec5e sd s7,24(sp) + 3bc07fa4: e862 sd s8,16(sp) + 3bc07fa6: e466 sd s9,8(sp) + 3bc07fa8: e06a sd s10,0(sp) + 3bc07faa: 4905 li s2,1 + 3bc07fac: c5b9 beqz a1,3bc07ffa + 3bc07fae: 4114 lw a3,0(a0) + 3bc07fb0: 842a mv s0,a0 + 3bc07fb2: 01063713 sltiu a4,a2,16 + 3bc07fb6: 00c6853b addw a0,a3,a2 + 3bc07fba: 483d li a6,15 + 3bc07fbc: 00a836b3 sltu a3,a6,a0 + 3bc07fc0: 00174713 xori a4,a4,1 + 3bc07fc4: 8f55 or a4,a4,a3 + 3bc07fc6: 4054 lw a3,4(s0) + 3bc07fc8: c008 sw a0,0(s0) + 3bc07fca: 84ae mv s1,a1 + 3bc07fcc: 8f55 or a4,a4,a3 + 3bc07fce: c058 sw a4,4(s0) + 3bc07fd0: 5418 lw a4,40(s0) + 3bc07fd2: 00c58d33 add s10,a1,a2 + 3bc07fd6: 0006091b sext.w s2,a2 + 3bc07fda: 7c07350b extu a0,a4,31,0 + 3bc07fde: 00a607b3 add a5,a2,a0 + 3bc07fe2: 02f86b63 bltu a6,a5,3bc08018 + 3bc07fe6: 01840793 addi a5,s0,24 # 10018 <__BSS_SIZE__+0xa408> + 3bc07fea: 953e add a0,a0,a5 + 3bc07fec: a8ff80ef jal ra,3bc00a7a + 3bc07ff0: 541c lw a5,40(s0) + 3bc07ff2: 012787bb addw a5,a5,s2 + 3bc07ff6: d41c sw a5,40(s0) + 3bc07ff8: 4901 li s2,0 + 3bc07ffa: 60e6 ld ra,88(sp) + 3bc07ffc: 6446 ld s0,80(sp) + 3bc07ffe: 64a6 ld s1,72(sp) + 3bc08000: 79e2 ld s3,56(sp) + 3bc08002: 7a42 ld s4,48(sp) + 3bc08004: 7aa2 ld s5,40(sp) + 3bc08006: 7b02 ld s6,32(sp) + 3bc08008: 6be2 ld s7,24(sp) + 3bc0800a: 6c42 ld s8,16(sp) + 3bc0800c: 6ca2 ld s9,8(sp) + 3bc0800e: 6d02 ld s10,0(sp) + 3bc08010: 854a mv a0,s2 + 3bc08012: 6906 ld s2,64(sp) + 3bc08014: 6125 addi sp,sp,96 + 3bc08016: 8082 ret + 3bc08018: c355 beqz a4,3bc080bc + 3bc0801a: 4b41 li s6,16 + 3bc0801c: 40eb063b subw a2,s6,a4 + 3bc08020: 01840993 addi s3,s0,24 + 3bc08024: 7c06360b extu a2,a2,31,0 + 3bc08028: 954e add a0,a0,s3 + 3bc0802a: a51f80ef jal ra,3bc00a7a + 3bc0802e: 00842903 lw s2,8(s0) + 3bc08032: 854e mv a0,s3 + 3bc08034: 85ebdab7 lui s5,0x85ebd + 3bc08038: 9edff0ef jal ra,3bc07a24 + 3bc0803c: a77a8a9b addiw s5,s5,-1417 + 3bc08040: 24aa990b mulaw s2,s5,a0 + 3bc08044: 9e378a37 lui s4,0x9e378 + 3bc08048: 9b1a0a1b addiw s4,s4,-1615 + 3bc0804c: 00c42983 lw s3,12(s0) + 3bc08050: 01c40513 addi a0,s0,28 + 3bc08054: 1539190b srriw s2,s2,19 + 3bc08058: 0349093b mulw s2,s2,s4 + 3bc0805c: 01242423 sw s2,8(s0) + 3bc08060: 9c5ff0ef jal ra,3bc07a24 + 3bc08064: 24aa998b mulaw s3,s5,a0 + 3bc08068: 02040513 addi a0,s0,32 + 3bc0806c: 1539998b srriw s3,s3,19 + 3bc08070: 034989bb mulw s3,s3,s4 + 3bc08074: 01342623 sw s3,12(s0) + 3bc08078: 01042983 lw s3,16(s0) + 3bc0807c: 9a9ff0ef jal ra,3bc07a24 + 3bc08080: 01442903 lw s2,20(s0) + 3bc08084: 24aa998b mulaw s3,s5,a0 + 3bc08088: 02440513 addi a0,s0,36 + 3bc0808c: 1539998b srriw s3,s3,19 + 3bc08090: 034989bb mulw s3,s3,s4 + 3bc08094: 01342823 sw s3,16(s0) + 3bc08098: 98dff0ef jal ra,3bc07a24 + 3bc0809c: 24aa990b mulaw s2,s5,a0 + 3bc080a0: 541c lw a5,40(s0) + 3bc080a2: 02042423 sw zero,40(s0) + 3bc080a6: 40fb0b3b subw s6,s6,a5 + 3bc080aa: 7c0b3b0b extu s6,s6,31,0 + 3bc080ae: 94da add s1,s1,s6 + 3bc080b0: 1539190b srriw s2,s2,19 + 3bc080b4: 0349093b mulw s2,s2,s4 + 3bc080b8: 01242a23 sw s2,20(s0) + 3bc080bc: ff0d0913 addi s2,s10,-16 + 3bc080c0: 08996363 bltu s2,s1,3bc08146 + 3bc080c4: e3844c8b lwd s9,s8,(s0),1,3 + 3bc080c8: e5444a8b lwd s5,s4,(s0),2,3 + 3bc080cc: 85ebdbb7 lui s7,0x85ebd + 3bc080d0: 9e378b37 lui s6,0x9e378 + 3bc080d4: 89a6 mv s3,s1 + 3bc080d6: a77b8b9b addiw s7,s7,-1417 + 3bc080da: 9b1b0b1b addiw s6,s6,-1615 + 3bc080de: 854e mv a0,s3 + 3bc080e0: 945ff0ef jal ra,3bc07a24 + 3bc080e4: 24ab9c8b mulaw s9,s7,a0 + 3bc080e8: 00498513 addi a0,s3,4 + 3bc080ec: 939ff0ef jal ra,3bc07a24 + 3bc080f0: 24ab9c0b mulaw s8,s7,a0 + 3bc080f4: 00898513 addi a0,s3,8 + 3bc080f8: 92dff0ef jal ra,3bc07a24 + 3bc080fc: 153c9c8b srriw s9,s9,19 + 3bc08100: 24ab9a8b mulaw s5,s7,a0 + 3bc08104: 00c98513 addi a0,s3,12 + 3bc08108: 91dff0ef jal ra,3bc07a24 + 3bc0810c: 153c1c0b srriw s8,s8,19 + 3bc08110: 09c1 addi s3,s3,16 + 3bc08112: 24ab9a0b mulaw s4,s7,a0 + 3bc08116: 153a9a8b srriw s5,s5,19 + 3bc0811a: 153a1a0b srriw s4,s4,19 + 3bc0811e: 036c8cbb mulw s9,s9,s6 + 3bc08122: 036c0c3b mulw s8,s8,s6 + 3bc08126: 036a8abb mulw s5,s5,s6 + 3bc0812a: 036a0a3b mulw s4,s4,s6 + 3bc0812e: fb3978e3 bgeu s2,s3,3bc080de + 3bc08132: 40990933 sub s2,s2,s1 + 3bc08136: ff097913 andi s2,s2,-16 + 3bc0813a: 0941 addi s2,s2,16 + 3bc0813c: 94ca add s1,s1,s2 + 3bc0813e: e3845c8b swd s9,s8,(s0),1,3 + 3bc08142: e5445a8b swd s5,s4,(s0),2,3 + 3bc08146: 4901 li s2,0 + 3bc08148: eba4f9e3 bgeu s1,s10,3bc07ffa + 3bc0814c: 409d0d33 sub s10,s10,s1 + 3bc08150: 866a mv a2,s10 + 3bc08152: 85a6 mv a1,s1 + 3bc08154: 01840513 addi a0,s0,24 + 3bc08158: 923f80ef jal ra,3bc00a7a + 3bc0815c: 03a42423 sw s10,40(s0) + 3bc08160: bd69 j 3bc07ffa + +000000003bc08162 : + 3bc08162: 415c lw a5,4(a0) + 3bc08164: 4918 lw a4,16(a0) + 3bc08166: cb8d beqz a5,3bc08198 + 3bc08168: 451c lw a5,8(a0) + 3bc0816a: 4554 lw a3,12(a0) + 3bc0816c: 1547170b srriw a4,a4,20 + 3bc08170: 15f7978b srriw a5,a5,31 + 3bc08174: 1596968b srriw a3,a3,25 + 3bc08178: 9fb5 addw a5,a5,a3 + 3bc0817a: 9fb9 addw a5,a5,a4 + 3bc0817c: 4958 lw a4,20(a0) + 3bc0817e: 14e7170b srriw a4,a4,14 + 3bc08182: 85aa mv a1,a0 + 3bc08184: 9fb9 addw a5,a5,a4 + 3bc08186: 5ac5c70b lwia a4,(a1),12,1 + 3bc0818a: 02856603 lwu a2,40(a0) # 16566028 + 3bc0818e: 4681 li a3,0 + 3bc08190: 00f7053b addw a0,a4,a5 + 3bc08194: 8a7ff06f j 3bc07a3a + 3bc08198: 165667b7 lui a5,0x16566 + 3bc0819c: 7b17879b addiw a5,a5,1969 + 3bc081a0: b7cd j 3bc08182 + +000000003bc081a2 : + 3bc081a2: 1141 addi sp,sp,-16 + 3bc081a4: e022 sd s0,0(sp) + 3bc081a6: 842a mv s0,a0 + 3bc081a8: 00003517 auipc a0,0x3 + 3bc081ac: 36850513 addi a0,a0,872 # 3bc0b510 + 3bc081b0: e406 sd ra,8(sp) + 3bc081b2: 9a6f80ef jal ra,3bc00358 + 3bc081b6: 400c lw a1,0(s0) + 3bc081b8: 00003517 auipc a0,0x3 + 3bc081bc: 36850513 addi a0,a0,872 # 3bc0b520 + 3bc081c0: 998f80ef jal ra,3bc00358 + 3bc081c4: 012000ef jal ra,3bc081d6 + 3bc081c8: 296000ef jal ra,3bc0845e + 3bc081cc: 60a2 ld ra,8(sp) + 3bc081ce: 6402 ld s0,0(sp) + 3bc081d0: 4501 li a0,0 + 3bc081d2: 0141 addi sp,sp,16 + 3bc081d4: 8082 ret + +000000003bc081d6 : + 3bc081d6: 030007b7 lui a5,0x3000 + 3bc081da: 43cc lw a1,4(a5) + 3bc081dc: 7139 addi sp,sp,-64 + 3bc081de: 030507b7 lui a5,0x3050 + 3bc081e2: 79c5b58b extu a1,a1,30,28 + 3bc081e6: 00003517 auipc a0,0x3 + 3bc081ea: 35250513 addi a0,a0,850 # 3bc0b538 + 3bc081ee: f822 sd s0,48(sp) + 3bc081f0: f426 sd s1,40(sp) + 3bc081f2: f04a sd s2,32(sp) + 3bc081f4: ec4e sd s3,24(sp) + 3bc081f6: fc06 sd ra,56(sp) + 3bc081f8: 1087a983 lw s3,264(a5) # 3050108 <__BSS_SIZE__+0x304a4f8> + 3bc081fc: e42e sd a1,8(sp) + 3bc081fe: 95af80ef jal ra,3bc00358 + 3bc08202: 65a2 ld a1,8(sp) + 3bc08204: 00003717 auipc a4,0x3 + 3bc08208: 41870713 addi a4,a4,1048 # 3bc0b61c + 3bc0820c: 0000b917 auipc s2,0xb + 3bc08210: 60290913 addi s2,s2,1538 # 3bc1380e + 3bc08214: 44b7478b lrw a5,a4,a1,2 + 3bc08218: 0000b497 auipc s1,0xb + 3bc0821c: 5f448493 addi s1,s1,1524 # 3bc1380c + 3bc08220: 0000b417 auipc s0,0xb + 3bc08224: 5ef40413 addi s0,s0,1519 # 3bc1380f + 3bc08228: 97ba add a5,a5,a4 + 3bc0822a: 8782 jr a5 + 3bc0822c: 478d li a5,3 + 3bc0822e: 4709 li a4,2 + 3bc08230: 00f90023 sb a5,0(s2) + 3bc08234: 00e48023 sb a4,0(s1) + 3bc08238: 00f40023 sb a5,0(s0) + 3bc0823c: a825 j 3bc08274 + 3bc0823e: 4791 li a5,4 + 3bc08240: 00f90023 sb a5,0(s2) + 3bc08244: 4785 li a5,1 + 3bc08246: 00f48023 sb a5,0(s1) + 3bc0824a: 478d li a5,3 + 3bc0824c: b7f5 j 3bc08238 + 3bc0824e: 00003517 auipc a0,0x3 + 3bc08252: 2fa50513 addi a0,a0,762 # 3bc0b548 + 3bc08256: 902f80ef jal ra,3bc00358 + 3bc0825a: 2981 sext.w s3,s3 + 3bc0825c: 6559b78b extu a5,s3,25,21 + 3bc08260: 00f90023 sb a5,0(s2) + 3bc08264: 71a9b78b extu a5,s3,28,26 + 3bc08268: 01d9d99b srliw s3,s3,0x1d + 3bc0826c: 00f48023 sb a5,0(s1) + 3bc08270: 01340023 sb s3,0(s0) + 3bc08274: 00044583 lbu a1,0(s0) + 3bc08278: 00094683 lbu a3,0(s2) + 3bc0827c: 0004c603 lbu a2,0(s1) + 3bc08280: 00003517 auipc a0,0x3 + 3bc08284: 2f050513 addi a0,a0,752 # 3bc0b570 + 3bc08288: 8d0f80ef jal ra,3bc00358 + 3bc0828c: 00094583 lbu a1,0(s2) + 3bc08290: 4725 li a4,9 + 3bc08292: fff5879b addiw a5,a1,-1 + 3bc08296: 0ff7f793 andi a5,a5,255 + 3bc0829a: 08f76963 bltu a4,a5,3bc0832c + 3bc0829e: 00003717 auipc a4,0x3 + 3bc082a2: 39e70713 addi a4,a4,926 # 3bc0b63c + 3bc082a6: 44f7478b lrw a5,a4,a5,2 + 3bc082aa: 0000b917 auipc s2,0xb + 3bc082ae: 56390913 addi s2,s2,1379 # 3bc1380d + 3bc082b2: 97ba add a5,a5,a4 + 3bc082b4: 8782 jr a5 + 3bc082b6: 478d li a5,3 + 3bc082b8: 00f90023 sb a5,0(s2) + 3bc082bc: 4789 li a5,2 + 3bc082be: 00f48023 sb a5,0(s1) + 3bc082c2: 4785 li a5,1 + 3bc082c4: bf95 j 3bc08238 + 3bc082c6: 4791 li a5,4 + 3bc082c8: 00f90023 sb a5,0(s2) + 3bc082cc: 4785 li a5,1 + 3bc082ce: 00f48023 sb a5,0(s1) + 3bc082d2: b79d j 3bc08238 + 3bc082d4: 00003517 auipc a0,0x3 + 3bc082d8: 27c50513 addi a0,a0,636 # 3bc0b550 + 3bc082dc: 87cf80ef jal ra,3bc00358 + 3bc082e0: bf51 j 3bc08274 + 3bc082e2: 00003517 auipc a0,0x3 + 3bc082e6: 29e50513 addi a0,a0,670 # 3bc0b580 + 3bc082ea: 86ef80ef jal ra,3bc00358 + 3bc082ee: 4785 li a5,1 + 3bc082f0: 00f90023 sb a5,0(s2) + 3bc082f4: 0004c583 lbu a1,0(s1) + 3bc082f8: 478d li a5,3 + 3bc082fa: 0cf58963 beq a1,a5,3bc083cc + 3bc082fe: 04b7e263 bltu a5,a1,3bc08342 + 3bc08302: 4485 li s1,1 + 3bc08304: 04958a63 beq a1,s1,3bc08358 + 3bc08308: 4789 li a5,2 + 3bc0830a: 0af58463 beq a1,a5,3bc083b2 + 3bc0830e: 00003517 auipc a0,0x3 + 3bc08312: 2ba50513 addi a0,a0,698 # 3bc0b5c8 + 3bc08316: 842f80ef jal ra,3bc00358 + 3bc0831a: a82d j 3bc08354 + 3bc0831c: 00003517 auipc a0,0x3 + 3bc08320: 26c50513 addi a0,a0,620 # 3bc0b588 + 3bc08324: 834f80ef jal ra,3bc00358 + 3bc08328: 4789 li a5,2 + 3bc0832a: b7d9 j 3bc082f0 + 3bc0832c: 00003517 auipc a0,0x3 + 3bc08330: 26450513 addi a0,a0,612 # 3bc0b590 + 3bc08334: 824f80ef jal ra,3bc00358 + 3bc08338: 0000b797 auipc a5,0xb + 3bc0833c: 4c078aa3 sb zero,1237(a5) # 3bc1380d + 3bc08340: bf55 j 3bc082f4 + 3bc08342: 4791 li a5,4 + 3bc08344: 00003517 auipc a0,0x3 + 3bc08348: 27c50513 addi a0,a0,636 # 3bc0b5c0 + 3bc0834c: fcf591e3 bne a1,a5,3bc0830e + 3bc08350: 808f80ef jal ra,3bc00358 + 3bc08354: 4781 li a5,0 + 3bc08356: a839 j 3bc08374 + 3bc08358: 00003517 auipc a0,0x3 + 3bc0835c: 25050513 addi a0,a0,592 # 3bc0b5a8 + 3bc08360: e42e sd a1,8(sp) + 3bc08362: ff7f70ef jal ra,3bc00358 + 3bc08366: 00044783 lbu a5,0(s0) + 3bc0836a: 65a2 ld a1,8(sp) + 3bc0836c: 06b78563 beq a5,a1,3bc083d6 + 3bc08370: 67e1 lui a5,0x18 + 3bc08372: 07ad addi a5,a5,11 + 3bc08374: 03000737 lui a4,0x3000 + 3bc08378: 08f72623 sw a5,140(a4) # 300008c <__BSS_SIZE__+0x2ffa47c> + 3bc0837c: 00044583 lbu a1,0(s0) + 3bc08380: 4789 li a5,2 + 3bc08382: 06f58c63 beq a1,a5,3bc083fa + 3bc08386: 478d li a5,3 + 3bc08388: 04f58d63 beq a1,a5,3bc083e2 + 3bc0838c: 4785 li a5,1 + 3bc0838e: 00003517 auipc a0,0x3 + 3bc08392: 25250513 addi a0,a0,594 # 3bc0b5e0 + 3bc08396: 04f58a63 beq a1,a5,3bc083ea + 3bc0839a: 7442 ld s0,48(sp) + 3bc0839c: 70e2 ld ra,56(sp) + 3bc0839e: 74a2 ld s1,40(sp) + 3bc083a0: 7902 ld s2,32(sp) + 3bc083a2: 69e2 ld s3,24(sp) + 3bc083a4: 00003517 auipc a0,0x3 + 3bc083a8: 26450513 addi a0,a0,612 # 3bc0b608 + 3bc083ac: 6121 addi sp,sp,64 + 3bc083ae: fabf706f j 3bc00358 + 3bc083b2: 00003517 auipc a0,0x3 + 3bc083b6: 1fe50513 addi a0,a0,510 # 3bc0b5b0 + 3bc083ba: f9ff70ef jal ra,3bc00358 + 3bc083be: 00044783 lbu a5,0(s0) + 3bc083c2: 00978d63 beq a5,s1,3bc083dc + 3bc083c6: 67e1 lui a5,0x18 + 3bc083c8: 07ed addi a5,a5,27 + 3bc083ca: b76d j 3bc08374 + 3bc083cc: 00003517 auipc a0,0x3 + 3bc083d0: 1ec50513 addi a0,a0,492 # 3bc0b5b8 + 3bc083d4: bfb5 j 3bc08350 + 3bc083d6: 67e1 lui a5,0x18 + 3bc083d8: 07b1 addi a5,a5,12 + 3bc083da: bf69 j 3bc08374 + 3bc083dc: 67e1 lui a5,0x18 + 3bc083de: 07f1 addi a5,a5,28 + 3bc083e0: bf51 j 3bc08374 + 3bc083e2: 00003517 auipc a0,0x3 + 3bc083e6: 20e50513 addi a0,a0,526 # 3bc0b5f0 + 3bc083ea: 7442 ld s0,48(sp) + 3bc083ec: 70e2 ld ra,56(sp) + 3bc083ee: 74a2 ld s1,40(sp) + 3bc083f0: 7902 ld s2,32(sp) + 3bc083f2: 69e2 ld s3,24(sp) + 3bc083f4: 6121 addi sp,sp,64 + 3bc083f6: f63f706f j 3bc00358 + 3bc083fa: 00003517 auipc a0,0x3 + 3bc083fe: 20650513 addi a0,a0,518 # 3bc0b600 + 3bc08402: b7e5 j 3bc083ea + +000000003bc08404 : + 3bc08404: 0000b517 auipc a0,0xb + 3bc08408: 40a54503 lbu a0,1034(a0) # 3bc1380e + 3bc0840c: 8082 ret + +000000003bc0840e : + 3bc0840e: 00030737 lui a4,0x30 + 3bc08412: 080087b7 lui a5,0x8008 + 3bc08416: 0705 addi a4,a4,1 + 3bc08418: c398 sw a4,0(a5) + 3bc0841a: 08078693 addi a3,a5,128 # 8008080 + 3bc0841e: c298 sw a4,0(a3) + 3bc08420: 10078693 addi a3,a5,256 + 3bc08424: c298 sw a4,0(a3) + 3bc08426: 18078693 addi a3,a5,384 + 3bc0842a: c298 sw a4,0(a3) + 3bc0842c: 20078693 addi a3,a5,512 + 3bc08430: c298 sw a4,0(a3) + 3bc08432: 28078693 addi a3,a5,640 + 3bc08436: c298 sw a4,0(a3) + 3bc08438: 30078693 addi a3,a5,768 + 3bc0843c: c298 sw a4,0(a3) + 3bc0843e: 38078693 addi a3,a5,896 + 3bc08442: c298 sw a4,0(a3) + 3bc08444: 40078693 addi a3,a5,1024 + 3bc08448: c298 sw a4,0(a3) + 3bc0844a: 48078693 addi a3,a5,1152 + 3bc0844e: c298 sw a4,0(a3) + 3bc08450: 50078693 addi a3,a5,1280 + 3bc08454: c298 sw a4,0(a3) + 3bc08456: 58078793 addi a5,a5,1408 + 3bc0845a: c398 sw a4,0(a5) + 3bc0845c: 8082 ret + +000000003bc0845e : + 3bc0845e: 7179 addi sp,sp,-48 + 3bc08460: f406 sd ra,40(sp) + 3bc08462: 3f2010ef jal ra,3bc09854 + 3bc08466: 7ae010ef jal ra,3bc09c14 + 3bc0846a: 0800a7b7 lui a5,0x800a + 3bc0846e: 0207a023 sw zero,32(a5) # 800a020 + 3bc08472: 007797b7 lui a5,0x779 + 3bc08476: 03000737 lui a4,0x3000 + 3bc0847a: 8aa78793 addi a5,a5,-1878 # 7788aa <__BSS_SIZE__+0x772c9a> + 3bc0847e: 1cf72c23 sw a5,472(a4) # 30001d8 <__BSS_SIZE__+0x2ffa5c8> + 3bc08482: 6789 lui a5,0x2 + 3bc08484: 29978793 addi a5,a5,665 # 2299 <__BSS_SIZE__-0x3977> + 3bc08488: 1cf72e23 sw a5,476(a4) + 3bc0848c: 2bb010ef jal ra,3bc09f46 + 3bc08490: 283000ef jal ra,3bc08f12 + 3bc08494: 444010ef jal ra,3bc098d8 + 3bc08498: 2a0010ef jal ra,3bc09738 + 3bc0849c: 297000ef jal ra,3bc08f32 + 3bc084a0: 083000ef jal ra,3bc08d22 + 3bc084a4: 17d000ef jal ra,3bc08e20 + 3bc084a8: 1bb000ef jal ra,3bc08e62 + 3bc084ac: 103000ef jal ra,3bc08dae + 3bc084b0: 139000ef jal ra,3bc08de8 + 3bc084b4: 1db000ef jal ra,3bc08e8e + 3bc084b8: 1ca000ef jal ra,3bc08682 + 3bc084bc: 0810 addi a2,sp,16 + 3bc084be: 082c addi a1,sp,24 + 3bc084c0: 0068 addi a0,sp,12 + 3bc084c2: 4f4000ef jal ra,3bc089b6 + 3bc084c6: 47b2 lw a5,12(sp) + 3bc084c8: e385 bnez a5,3bc084e8 + 3bc084ca: 00003517 auipc a0,0x3 + 3bc084ce: 19e50513 addi a0,a0,414 # 3bc0b668 + 3bc084d2: e87f70ef jal ra,3bc00358 + 3bc084d6: fac1468b ldd a3,a2,(sp),1,4 + 3bc084da: 45b2 lw a1,12(sp) + 3bc084dc: 00003517 auipc a0,0x3 + 3bc084e0: 1a450513 addi a0,a0,420 # 3bc0b680 + 3bc084e4: e75f70ef jal ra,3bc00358 + 3bc084e8: 17f010ef jal ra,3bc09e66 + 3bc084ec: 3cd000ef jal ra,3bc090b8 + 3bc084f0: 192000ef jal ra,3bc08682 + 3bc084f4: 0810 addi a2,sp,16 + 3bc084f6: 082c addi a1,sp,24 + 3bc084f8: 0068 addi a0,sp,12 + 3bc084fa: 4bc000ef jal ra,3bc089b6 + 3bc084fe: 47b2 lw a5,12(sp) + 3bc08500: e385 bnez a5,3bc08520 + 3bc08502: 00003517 auipc a0,0x3 + 3bc08506: 16650513 addi a0,a0,358 # 3bc0b668 + 3bc0850a: e4ff70ef jal ra,3bc00358 + 3bc0850e: fac1468b ldd a3,a2,(sp),1,4 + 3bc08512: 45b2 lw a1,12(sp) + 3bc08514: 00003517 auipc a0,0x3 + 3bc08518: 16c50513 addi a0,a0,364 # 3bc0b680 + 3bc0851c: e3df70ef jal ra,3bc00358 + 3bc08520: 56f000ef jal ra,3bc0928e + 3bc08524: 15e000ef jal ra,3bc08682 + 3bc08528: 0810 addi a2,sp,16 + 3bc0852a: 082c addi a1,sp,24 + 3bc0852c: 0068 addi a0,sp,12 + 3bc0852e: 488000ef jal ra,3bc089b6 + 3bc08532: 47b2 lw a5,12(sp) + 3bc08534: e385 bnez a5,3bc08554 + 3bc08536: 00003517 auipc a0,0x3 + 3bc0853a: 13250513 addi a0,a0,306 # 3bc0b668 + 3bc0853e: e1bf70ef jal ra,3bc00358 + 3bc08542: fac1468b ldd a3,a2,(sp),1,4 + 3bc08546: 45b2 lw a1,12(sp) + 3bc08548: 00003517 auipc a0,0x3 + 3bc0854c: 13850513 addi a0,a0,312 # 3bc0b680 + 3bc08550: e09f70ef jal ra,3bc00358 + 3bc08554: 4589 li a1,2 + 3bc08556: 4505 li a0,1 + 3bc08558: 05e010ef jal ra,3bc095b6 + 3bc0855c: 4585 li a1,1 + 3bc0855e: 4505 li a0,1 + 3bc08560: 056010ef jal ra,3bc095b6 + 3bc08564: 4581 li a1,0 + 3bc08566: 4505 li a0,1 + 3bc08568: 04e010ef jal ra,3bc095b6 + 3bc0856c: 116000ef jal ra,3bc08682 + 3bc08570: 0810 addi a2,sp,16 + 3bc08572: 082c addi a1,sp,24 + 3bc08574: 0068 addi a0,sp,12 + 3bc08576: 440000ef jal ra,3bc089b6 + 3bc0857a: 08000737 lui a4,0x8000 + 3bc0857e: 08c72783 lw a5,140(a4) # 800008c + 3bc08582: 4505 li a0,1 + 3bc08584: 2781 sext.w a5,a5 + 3bc08586: f0f7f793 andi a5,a5,-241 + 3bc0858a: 0107e793 ori a5,a5,16 + 3bc0858e: 0000b697 auipc a3,0xb + 3bc08592: 26f6a123 sw a5,610(a3) # 3bc137f0 + 3bc08596: 08f72623 sw a5,140(a4) + 3bc0859a: 633000ef jal ra,3bc093cc + 3bc0859e: 0e4000ef jal ra,3bc08682 + 3bc085a2: 0810 addi a2,sp,16 + 3bc085a4: 082c addi a1,sp,24 + 3bc085a6: 0068 addi a0,sp,12 + 3bc085a8: 40e000ef jal ra,3bc089b6 + 3bc085ac: 08d010ef jal ra,3bc09e38 + 3bc085b0: 00b10513 addi a0,sp,11 + 3bc085b4: 186010ef jal ra,3bc0973a + 3bc085b8: 00b14503 lbu a0,11(sp) + 3bc085bc: 0d9010ef jal ra,3bc09e94 + 3bc085c0: 00b14503 lbu a0,11(sp) + 3bc085c4: 64e010ef jal ra,3bc09c12 + 3bc085c8: 281000ef jal ra,3bc09048 + 3bc085cc: 0b6000ef jal ra,3bc08682 + 3bc085d0: 0810 addi a2,sp,16 + 3bc085d2: 082c addi a1,sp,24 + 3bc085d4: 0068 addi a0,sp,12 + 3bc085d6: 3e0000ef jal ra,3bc089b6 + 3bc085da: 47b2 lw a5,12(sp) + 3bc085dc: eb81 bnez a5,3bc085ec + 3bc085de: 00003517 auipc a0,0x3 + 3bc085e2: 0e250513 addi a0,a0,226 # 3bc0b6c0 + 3bc085e6: d73f70ef jal ra,3bc00358 + 3bc085ea: a001 j 3bc085ea + 3bc085ec: 0e4000ef jal ra,3bc086d0 + 3bc085f0: 0810 addi a2,sp,16 + 3bc085f2: 082c addi a1,sp,24 + 3bc085f4: 0068 addi a0,sp,12 + 3bc085f6: 3c0000ef jal ra,3bc089b6 + 3bc085fa: 47b2 lw a5,12(sp) + 3bc085fc: eb81 bnez a5,3bc0860c + 3bc085fe: 00003517 auipc a0,0x3 + 3bc08602: 0c250513 addi a0,a0,194 # 3bc0b6c0 + 3bc08606: d53f70ef jal ra,3bc00358 + 3bc0860a: a001 j 3bc0860a + 3bc0860c: 00003517 auipc a0,0x3 + 3bc08610: 0cc50513 addi a0,a0,204 # 3bc0b6d8 + 3bc08614: d45f70ef jal ra,3bc00358 + 3bc08618: 080087b7 lui a5,0x8008 + 3bc0861c: 4595 li a1,5 + 3bc0861e: cbac sw a1,80(a5) + 3bc08620: 08078613 addi a2,a5,128 # 8008080 + 3bc08624: 01000737 lui a4,0x1000 + 3bc08628: ca2c sw a1,80(a2) + 3bc0862a: 10070713 addi a4,a4,256 # 1000100 <__BSS_SIZE__+0xffa4f0> + 3bc0862e: c398 sw a4,0(a5) + 3bc08630: 43d4 lw a3,4(a5) + 3bc08632: 2681 sext.w a3,a3 + 3bc08634: c006f693 andi a3,a3,-1024 + 3bc08638: c3d4 sw a3,4(a5) + 3bc0863a: c218 sw a4,0(a2) + 3bc0863c: 4254 lw a3,4(a2) + 3bc0863e: 2681 sext.w a3,a3 + 3bc08640: c006f693 andi a3,a3,-1024 + 3bc08644: c254 sw a3,4(a2) + 3bc08646: 40078613 addi a2,a5,1024 + 3bc0864a: ca2c sw a1,80(a2) + 3bc0864c: 48078793 addi a5,a5,1152 + 3bc08650: cbac sw a1,80(a5) + 3bc08652: c218 sw a4,0(a2) + 3bc08654: 4254 lw a3,4(a2) + 3bc08656: 2681 sext.w a3,a3 + 3bc08658: c006f693 andi a3,a3,-1024 + 3bc0865c: c254 sw a3,4(a2) + 3bc0865e: c398 sw a4,0(a5) + 3bc08660: 43d8 lw a4,4(a5) + 3bc08662: 2701 sext.w a4,a4 + 3bc08664: c0077713 andi a4,a4,-1024 + 3bc08668: c3d8 sw a4,4(a5) + 3bc0866a: 0800a737 lui a4,0x800a + 3bc0866e: 4b5c lw a5,20(a4) + 3bc08670: 2781 sext.w a5,a5 + 3bc08672: 1007e793 ori a5,a5,256 + 3bc08676: cb5c sw a5,20(a4) + 3bc08678: d97ff0ef jal ra,3bc0840e + 3bc0867c: 70a2 ld ra,40(sp) + 3bc0867e: 6145 addi sp,sp,48 + 3bc08680: 8082 ret + +000000003bc08682 : + 3bc08682: 00060737 lui a4,0x60 + 3bc08686: 080107b7 lui a5,0x8010 + 3bc0868a: 0719 addi a4,a4,6 + 3bc0868c: c398 sw a4,0(a5) + 3bc0868e: 80200737 lui a4,0x80200 + 3bc08692: 1101 addi sp,sp,-32 + 3bc08694: a0070713 addi a4,a4,-1536 # ffffffff801ffa00 <__BL2_END__+0xffffffff445ec1f0> + 3bc08698: c63a sw a4,12(sp) + 3bc0869a: 40200737 lui a4,0x40200 + 3bc0869e: e802 sd zero,16(sp) + 3bc086a0: ec02 sd zero,24(sp) + 3bc086a2: a0070713 addi a4,a4,-1536 # 401ffa00 <__BL2_END__+0x45ec1f0> + 3bc086a6: c3b8 sw a4,64(a5) + 3bc086a8: 4732 lw a4,12(sp) + 3bc086aa: c3f8 sw a4,68(a5) + 3bc086ac: 4742 lw a4,16(sp) + 3bc086ae: c7b8 sw a4,72(a5) + 3bc086b0: 4752 lw a4,20(sp) + 3bc086b2: c7f8 sw a4,76(a5) + 3bc086b4: 4762 lw a4,24(sp) + 3bc086b6: cbb8 sw a4,80(a5) + 3bc086b8: 4772 lw a4,28(sp) + 3bc086ba: cbf8 sw a4,84(a5) + 3bc086bc: 00100737 lui a4,0x100 + 3bc086c0: 0007a823 sw zero,16(a5) # 8010010 + 3bc086c4: 177d addi a4,a4,-1 + 3bc086c6: cbd8 sw a4,20(a5) + 3bc086c8: 4711 li a4,4 + 3bc086ca: cf98 sw a4,24(a5) + 3bc086cc: 6105 addi sp,sp,32 + 3bc086ce: 8082 ret + +000000003bc086d0 : + 3bc086d0: 000c0737 lui a4,0xc0 + 3bc086d4: 080107b7 lui a5,0x8010 + 3bc086d8: 0731 addi a4,a4,12 + 3bc086da: c398 sw a4,0(a5) + 3bc086dc: 6705 lui a4,0x1 + 3bc086de: f0570713 addi a4,a4,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc086e2: d3d8 sw a4,36(a5) + 3bc086e4: 80103737 lui a4,0x80103 + 3bc086e8: 1101 addi sp,sp,-32 + 3bc086ea: c0f70713 addi a4,a4,-1009 # ffffffff80102c0f <__BL2_END__+0xffffffff444ef3ff> + 3bc086ee: c63a sw a4,12(sp) + 3bc086f0: c0000737 lui a4,0xc0000 + 3bc086f4: 0705 addi a4,a4,1 + 3bc086f6: 1702 slli a4,a4,0x20 + 3bc086f8: e83a sd a4,16(sp) + 3bc086fa: 40103737 lui a4,0x40103 + 3bc086fe: ec02 sd zero,24(sp) + 3bc08700: c0f70713 addi a4,a4,-1009 # 40102c0f <__BL2_END__+0x44ef3ff> + 3bc08704: c3b8 sw a4,64(a5) + 3bc08706: 4732 lw a4,12(sp) + 3bc08708: c3f8 sw a4,68(a5) + 3bc0870a: 4742 lw a4,16(sp) + 3bc0870c: c7b8 sw a4,72(a5) + 3bc0870e: 4752 lw a4,20(sp) + 3bc08710: c7f8 sw a4,76(a5) + 3bc08712: 4762 lw a4,24(sp) + 3bc08714: cbb8 sw a4,80(a5) + 3bc08716: 4772 lw a4,28(sp) + 3bc08718: cbf8 sw a4,84(a5) + 3bc0871a: 00100737 lui a4,0x100 + 3bc0871e: 0007a823 sw zero,16(a5) # 8010010 + 3bc08722: 177d addi a4,a4,-1 + 3bc08724: cbd8 sw a4,20(a5) + 3bc08726: 02000713 li a4,32 + 3bc0872a: cf98 sw a4,24(a5) + 3bc0872c: 6105 addi sp,sp,32 + 3bc0872e: 8082 ret + +000000003bc08730 : + 3bc08730: 00060737 lui a4,0x60 + 3bc08734: 080107b7 lui a5,0x8010 + 3bc08738: 0719 addi a4,a4,6 + 3bc0873a: c398 sw a4,0(a5) + 3bc0873c: 1101 addi sp,sp,-32 + 3bc0873e: 40001737 lui a4,0x40001 + 3bc08742: e802 sd zero,16(sp) + 3bc08744: ec02 sd zero,24(sp) + 3bc08746: c602 sw zero,12(sp) + 3bc08748: a0070713 addi a4,a4,-1536 # 40000a00 <__BL2_END__+0x43ed1f0> + 3bc0874c: c3b8 sw a4,64(a5) + 3bc0874e: 4732 lw a4,12(sp) + 3bc08750: c3f8 sw a4,68(a5) + 3bc08752: 4742 lw a4,16(sp) + 3bc08754: c7b8 sw a4,72(a5) + 3bc08756: 4752 lw a4,20(sp) + 3bc08758: c7f8 sw a4,76(a5) + 3bc0875a: 4762 lw a4,24(sp) + 3bc0875c: cbb8 sw a4,80(a5) + 3bc0875e: 4772 lw a4,28(sp) + 3bc08760: cbf8 sw a4,84(a5) + 3bc08762: 00100737 lui a4,0x100 + 3bc08766: 0007a823 sw zero,16(a5) # 8010010 + 3bc0876a: 177d addi a4,a4,-1 + 3bc0876c: cbd8 sw a4,20(a5) + 3bc0876e: 4711 li a4,4 + 3bc08770: cf98 sw a4,24(a5) + 3bc08772: 6105 addi sp,sp,32 + 3bc08774: 8082 ret + +000000003bc08776 : + 3bc08776: 00060737 lui a4,0x60 + 3bc0877a: 080107b7 lui a5,0x8010 + 3bc0877e: 0719 addi a4,a4,6 + 3bc08780: c398 sw a4,0(a5) + 3bc08782: 1101 addi sp,sp,-32 + 3bc08784: 80004737 lui a4,0x80004 + 3bc08788: e802 sd zero,16(sp) + 3bc0878a: ec02 sd zero,24(sp) + 3bc0878c: c602 sw zero,12(sp) + 3bc0878e: a0070713 addi a4,a4,-1536 # ffffffff80003a00 <__BL2_END__+0xffffffff443f01f0> + 3bc08792: c3b8 sw a4,64(a5) + 3bc08794: 4732 lw a4,12(sp) + 3bc08796: c3f8 sw a4,68(a5) + 3bc08798: 4742 lw a4,16(sp) + 3bc0879a: c7b8 sw a4,72(a5) + 3bc0879c: 4752 lw a4,20(sp) + 3bc0879e: c7f8 sw a4,76(a5) + 3bc087a0: 4762 lw a4,24(sp) + 3bc087a2: cbb8 sw a4,80(a5) + 3bc087a4: 4772 lw a4,28(sp) + 3bc087a6: cbf8 sw a4,84(a5) + 3bc087a8: 00100737 lui a4,0x100 + 3bc087ac: 0007a823 sw zero,16(a5) # 8010010 + 3bc087b0: 177d addi a4,a4,-1 + 3bc087b2: cbd8 sw a4,20(a5) + 3bc087b4: 4711 li a4,4 + 3bc087b6: cf98 sw a4,24(a5) + 3bc087b8: 6105 addi sp,sp,32 + 3bc087ba: 8082 ret + +000000003bc087bc : + 3bc087bc: 000607b7 lui a5,0x60 + 3bc087c0: 08010737 lui a4,0x8010 + 3bc087c4: 0799 addi a5,a5,6 + 3bc087c6: c31c sw a5,0(a4) + 3bc087c8: 1101 addi sp,sp,-32 + 3bc087ca: e519 bnez a0,3bc087d8 + 3bc087cc: 200017b7 lui a5,0x20001 + 3bc087d0: 078a slli a5,a5,0x2 + 3bc087d2: a0078793 addi a5,a5,-1536 # 20000a00 + 3bc087d6: a0ad j 3bc08840 + 3bc087d8: 4785 li a5,1 + 3bc087da: 04f51c63 bne a0,a5,3bc08832 + 3bc087de: 6785 lui a5,0x1 + 3bc087e0: f0578793 addi a5,a5,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc087e4: d35c sw a5,36(a4) + 3bc087e6: 00003797 auipc a5,0x3 + 3bc087ea: f0a7b783 ld a5,-246(a5) # 3bc0b6f0 + 3bc087ee: e43e sd a5,8(sp) + 3bc087f0: 00003797 auipc a5,0x3 + 3bc087f4: f087b783 ld a5,-248(a5) # 3bc0b6f8 + 3bc087f8: e83e sd a5,16(sp) + 3bc087fa: 478d li a5,3 + 3bc087fc: 07fa slli a5,a5,0x1e + 3bc087fe: 0785 addi a5,a5,1 + 3bc08800: ec3e sd a5,24(sp) + 3bc08802: 4722 lw a4,8(sp) + 3bc08804: 080107b7 lui a5,0x8010 + 3bc08808: c3b8 sw a4,64(a5) + 3bc0880a: 4732 lw a4,12(sp) + 3bc0880c: c3f8 sw a4,68(a5) + 3bc0880e: 4742 lw a4,16(sp) + 3bc08810: c7b8 sw a4,72(a5) + 3bc08812: 4752 lw a4,20(sp) + 3bc08814: c7f8 sw a4,76(a5) + 3bc08816: 4762 lw a4,24(sp) + 3bc08818: cbb8 sw a4,80(a5) + 3bc0881a: 4772 lw a4,28(sp) + 3bc0881c: cbf8 sw a4,84(a5) + 3bc0881e: 00100737 lui a4,0x100 + 3bc08822: 0007a823 sw zero,16(a5) # 8010010 + 3bc08826: 177d addi a4,a4,-1 + 3bc08828: cbd8 sw a4,20(a5) + 3bc0882a: 4711 li a4,4 + 3bc0882c: cf98 sw a4,24(a5) + 3bc0882e: 6105 addi sp,sp,32 + 3bc08830: 8082 ret + 3bc08832: 4789 li a5,2 + 3bc08834: 00f51a63 bne a0,a5,3bc08848 + 3bc08838: 00003797 auipc a5,0x3 + 3bc0883c: ec87b783 ld a5,-312(a5) # 3bc0b700 + 3bc08840: e43e sd a5,8(sp) + 3bc08842: e802 sd zero,16(sp) + 3bc08844: ec02 sd zero,24(sp) + 3bc08846: bf75 j 3bc08802 + 3bc08848: 47c9 li a5,18 + 3bc0884a: 02f51563 bne a0,a5,3bc08874 + 3bc0884e: 080006b7 lui a3,0x8000 + 3bc08852: 0846a783 lw a5,132(a3) # 8000084 + 3bc08856: 6709 lui a4,0x2 + 3bc08858: f0070713 addi a4,a4,-256 # 1f00 <__BSS_SIZE__-0x3d10> + 3bc0885c: 2781 sext.w a5,a5 + 3bc0885e: 9b81 andi a5,a5,-32 + 3bc08860: 01d7e793 ori a5,a5,29 + 3bc08864: 8fd9 or a5,a5,a4 + 3bc08866: 0000b717 auipc a4,0xb + 3bc0886a: f8f72523 sw a5,-118(a4) # 3bc137f0 + 3bc0886e: 08f6a223 sw a5,132(a3) + 3bc08872: b7d9 j 3bc08838 + 3bc08874: 47c1 li a5,16 + 3bc08876: f8f516e3 bne a0,a5,3bc08802 + 3bc0887a: 08000637 lui a2,0x8000 + 3bc0887e: 08462783 lw a5,132(a2) # 8000084 + 3bc08882: 6689 lui a3,0x2 + 3bc08884: f0068693 addi a3,a3,-256 # 1f00 <__BSS_SIZE__-0x3d10> + 3bc08888: 2781 sext.w a5,a5 + 3bc0888a: 9b81 andi a5,a5,-32 + 3bc0888c: 0017e793 ori a5,a5,1 + 3bc08890: 3007c713 xori a4,a5,768 + 3bc08894: 8f75 and a4,a4,a3 + 3bc08896: 8fb9 xor a5,a5,a4 + 3bc08898: 0000b717 auipc a4,0xb + 3bc0889c: f4f72c23 sw a5,-168(a4) # 3bc137f0 + 3bc088a0: 08f62223 sw a5,132(a2) + 3bc088a4: b725 j 3bc087cc + +000000003bc088a6 : + 3bc088a6: 000607b7 lui a5,0x60 + 3bc088aa: 08010737 lui a4,0x8010 + 3bc088ae: 0799 addi a5,a5,6 + 3bc088b0: c31c sw a5,0(a4) + 3bc088b2: 1101 addi sp,sp,-32 + 3bc088b4: e909 bnez a0,3bc088c6 + 3bc088b6: 00003797 auipc a5,0x3 + 3bc088ba: e527b783 ld a5,-430(a5) # 3bc0b708 + 3bc088be: e43e sd a5,8(sp) + 3bc088c0: e802 sd zero,16(sp) + 3bc088c2: ec02 sd zero,24(sp) + 3bc088c4: a035 j 3bc088f0 + 3bc088c6: 4785 li a5,1 + 3bc088c8: 04f51c63 bne a0,a5,3bc08920 + 3bc088cc: 6785 lui a5,0x1 + 3bc088ce: f0578793 addi a5,a5,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc088d2: d35c sw a5,36(a4) + 3bc088d4: 00003797 auipc a5,0x3 + 3bc088d8: e1c7b783 ld a5,-484(a5) # 3bc0b6f0 + 3bc088dc: e43e sd a5,8(sp) + 3bc088de: 00003797 auipc a5,0x3 + 3bc088e2: e1a7b783 ld a5,-486(a5) # 3bc0b6f8 + 3bc088e6: e83e sd a5,16(sp) + 3bc088e8: 478d li a5,3 + 3bc088ea: 07fa slli a5,a5,0x1e + 3bc088ec: 0785 addi a5,a5,1 + 3bc088ee: ec3e sd a5,24(sp) + 3bc088f0: 4722 lw a4,8(sp) + 3bc088f2: 080107b7 lui a5,0x8010 + 3bc088f6: c3b8 sw a4,64(a5) + 3bc088f8: 4732 lw a4,12(sp) + 3bc088fa: c3f8 sw a4,68(a5) + 3bc088fc: 4742 lw a4,16(sp) + 3bc088fe: c7b8 sw a4,72(a5) + 3bc08900: 4752 lw a4,20(sp) + 3bc08902: c7f8 sw a4,76(a5) + 3bc08904: 4762 lw a4,24(sp) + 3bc08906: cbb8 sw a4,80(a5) + 3bc08908: 4772 lw a4,28(sp) + 3bc0890a: cbf8 sw a4,84(a5) + 3bc0890c: 00100737 lui a4,0x100 + 3bc08910: 0007a823 sw zero,16(a5) # 8010010 + 3bc08914: 177d addi a4,a4,-1 + 3bc08916: cbd8 sw a4,20(a5) + 3bc08918: 4711 li a4,4 + 3bc0891a: cf98 sw a4,24(a5) + 3bc0891c: 6105 addi sp,sp,32 + 3bc0891e: 8082 ret + 3bc08920: 47c5 li a5,17 + 3bc08922: 00003717 auipc a4,0x3 + 3bc08926: de670713 addi a4,a4,-538 # 3bc0b708 + 3bc0892a: 00f51f63 bne a0,a5,3bc08948 + 3bc0892e: 67c1 lui a5,0x10 + 3bc08930: 30178793 addi a5,a5,769 # 10301 <__BSS_SIZE__+0xa6f1> + 3bc08934: 0000b697 auipc a3,0xb + 3bc08938: eaf6ae23 sw a5,-324(a3) # 3bc137f0 + 3bc0893c: 080006b7 lui a3,0x8000 + 3bc08940: 18f6a823 sw a5,400(a3) # 8000190 + 3bc08944: 631c ld a5,0(a4) + 3bc08946: bfa5 j 3bc088be + 3bc08948: 47c9 li a5,18 + 3bc0894a: f6f516e3 bne a0,a5,3bc088b6 + 3bc0894e: 67c9 lui a5,0x12 + 3bc08950: f1d78793 addi a5,a5,-227 # 11f1d <__BSS_SIZE__+0xc30d> + 3bc08954: b7c5 j 3bc08934 + +000000003bc08956 : + 3bc08956: 00060737 lui a4,0x60 + 3bc0895a: 080107b7 lui a5,0x8010 + 3bc0895e: 0719 addi a4,a4,6 + 3bc08960: c398 sw a4,0(a5) + 3bc08962: 6705 lui a4,0x1 + 3bc08964: f0570713 addi a4,a4,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc08968: d3d8 sw a4,36(a5) + 3bc0896a: 40103737 lui a4,0x40103 + 3bc0896e: 1101 addi sp,sp,-32 + 3bc08970: e0070713 addi a4,a4,-512 # 40102e00 <__BL2_END__+0x44ef5f0> + 3bc08974: c63a sw a4,12(sp) + 3bc08976: 00401737 lui a4,0x401 + 3bc0897a: 81770713 addi a4,a4,-2025 # 400817 <__BSS_SIZE__+0x3fac07> + 3bc0897e: 0726 slli a4,a4,0x9 + 3bc08980: e83a sd a4,16(sp) + 3bc08982: 40102737 lui a4,0x40102 + 3bc08986: ec02 sd zero,24(sp) + 3bc08988: 60070713 addi a4,a4,1536 # 40102600 <__BL2_END__+0x44eedf0> + 3bc0898c: c3b8 sw a4,64(a5) + 3bc0898e: 4732 lw a4,12(sp) + 3bc08990: c3f8 sw a4,68(a5) + 3bc08992: 4742 lw a4,16(sp) + 3bc08994: c7b8 sw a4,72(a5) + 3bc08996: 4752 lw a4,20(sp) + 3bc08998: c7f8 sw a4,76(a5) + 3bc0899a: 4762 lw a4,24(sp) + 3bc0899c: cbb8 sw a4,80(a5) + 3bc0899e: 4772 lw a4,28(sp) + 3bc089a0: cbf8 sw a4,84(a5) + 3bc089a2: 00100737 lui a4,0x100 + 3bc089a6: 0007a823 sw zero,16(a5) # 8010010 + 3bc089aa: 177d addi a4,a4,-1 + 3bc089ac: cbd8 sw a4,20(a5) + 3bc089ae: 4711 li a4,4 + 3bc089b0: cf98 sw a4,24(a5) + 3bc089b2: 6105 addi sp,sp,32 + 3bc089b4: 8082 ret + +000000003bc089b6 : + 3bc089b6: 000307b7 lui a5,0x30 + 3bc089ba: 08010737 lui a4,0x8010 + 3bc089be: 078d addi a5,a5,3 + 3bc089c0: c31c sw a5,0(a4) + 3bc089c2: 0000b897 auipc a7,0xb + 3bc089c6: e2e88893 addi a7,a7,-466 # 3bc137f0 + 3bc089ca: 08072783 lw a5,128(a4) # 8010080 + 3bc089ce: 08070693 addi a3,a4,128 + 3bc089d2: 2781 sext.w a5,a5 + 3bc089d4: 00f8a023 sw a5,0(a7) + 3bc089d8: 0047f813 andi a6,a5,4 + 3bc089dc: fe0807e3 beqz a6,3bc089ca + 3bc089e0: 0c37b78b extu a5,a5,3,3 + 3bc089e4: c79d beqz a5,3bc08a12 + 3bc089e6: 00052023 sw zero,0(a0) + 3bc089ea: e2e6c80b lwd a6,a4,(a3),1,3 + 3bc089ee: e4f6c50b lwd a0,a5,(a3),2,3 + 3bc089f2: 1702 slli a4,a4,0x20 + 3bc089f4: 7c08368b extu a3,a6,31,0 + 3bc089f8: 8f55 or a4,a4,a3 + 3bc089fa: 1782 slli a5,a5,0x20 + 3bc089fc: 7c05350b extu a0,a0,31,0 + 3bc08a00: e198 sd a4,0(a1) + 3bc08a02: 8fc9 or a5,a5,a0 + 3bc08a04: e21c sd a5,0(a2) + 3bc08a06: 080107b7 lui a5,0x8010 + 3bc08a0a: 00050737 lui a4,0x50 + 3bc08a0e: c398 sw a4,0(a5) + 3bc08a10: 8082 ret + 3bc08a12: 4785 li a5,1 + 3bc08a14: c11c sw a5,0(a0) + 3bc08a16: 0005b023 sd zero,0(a1) + 3bc08a1a: 00063023 sd zero,0(a2) + 3bc08a1e: b7e5 j 3bc08a06 + +000000003bc08a20 : + 3bc08a20: 7159 addi sp,sp,-112 + 3bc08a22: f0a2 sd s0,96(sp) + 3bc08a24: eca6 sd s1,88(sp) + 3bc08a26: e8ca sd s2,80(sp) + 3bc08a28: e4ce sd s3,72(sp) + 3bc08a2a: e0d2 sd s4,64(sp) + 3bc08a2c: fc56 sd s5,56(sp) + 3bc08a2e: f486 sd ra,104(sp) + 3bc08a30: f85a sd s6,48(sp) + 3bc08a32: f45e sd s7,40(sp) + 3bc08a34: f062 sd s8,32(sp) + 3bc08a36: c4dff0ef jal ra,3bc08682 + 3bc08a3a: 080017b7 lui a5,0x8001 + 3bc08a3e: b147a403 lw s0,-1260(a5) # 8000b14 + 3bc08a42: b447a783 lw a5,-1212(a5) + 3bc08a46: 4925 li s2,9 + 3bc08a48: 080007b7 lui a5,0x8000 + 3bc08a4c: 0947a483 lw s1,148(a5) # 8000094 + 3bc08a50: 2401 sext.w s0,s0 + 3bc08a52: 001f0a37 lui s4,0x1f0 + 3bc08a56: 2481 sext.w s1,s1 + 3bc08a58: 080019b7 lui s3,0x8001 + 3bc08a5c: 4a85 li s5,1 + 3bc08a5e: 0109171b slliw a4,s2,0x10 + 3bc08a62: 8f21 xor a4,a4,s0 + 3bc08a64: 01477733 and a4,a4,s4 + 3bc08a68: 8c39 xor s0,s0,a4 + 3bc08a6a: 2401 sext.w s0,s0 + 3bc08a6c: b089aa23 sw s0,-1260(s3) # 8000b14 + 3bc08a70: b489a223 sw s0,-1212(s3) + 3bc08a74: 0830 addi a2,sp,24 + 3bc08a76: 080c addi a1,sp,16 + 3bc08a78: 0068 addi a0,sp,12 + 3bc08a7a: f3dff0ef jal ra,3bc089b6 + 3bc08a7e: 47b2 lw a5,12(sp) + 3bc08a80: 00090c1b sext.w s8,s2 + 3bc08a84: ef8d bnez a5,3bc08abe + 3bc08a86: 00f4f793 andi a5,s1,15 + 3bc08a8a: 2785 addiw a5,a5,1 + 3bc08a8c: 018787bb addw a5,a5,s8 + 3bc08a90: 0107979b slliw a5,a5,0x10 + 3bc08a94: 8fa1 xor a5,a5,s0 + 3bc08a96: 0147f7b3 and a5,a5,s4 + 3bc08a9a: 8c3d xor s0,s0,a5 + 3bc08a9c: 2401 sext.w s0,s0 + 3bc08a9e: b089aa23 sw s0,-1260(s3) + 3bc08aa2: b489a223 sw s0,-1212(s3) + 3bc08aa6: 70a6 ld ra,104(sp) + 3bc08aa8: 7406 ld s0,96(sp) + 3bc08aaa: 64e6 ld s1,88(sp) + 3bc08aac: 6946 ld s2,80(sp) + 3bc08aae: 69a6 ld s3,72(sp) + 3bc08ab0: 6a06 ld s4,64(sp) + 3bc08ab2: 7ae2 ld s5,56(sp) + 3bc08ab4: 7b42 ld s6,48(sp) + 3bc08ab6: 7ba2 ld s7,40(sp) + 3bc08ab8: 7c02 ld s8,32(sp) + 3bc08aba: 6165 addi sp,sp,112 + 3bc08abc: 8082 ret + 3bc08abe: 397d addiw s2,s2,-1 + 3bc08ac0: f9591fe3 bne s2,s5,3bc08a5e + 3bc08ac4: b7cd j 3bc08aa6 + +000000003bc08ac6 : + 3bc08ac6: 08004737 lui a4,0x8004 + 3bc08aca: 18072683 lw a3,384(a4) # 8004180 + 3bc08ace: 0006879b sext.w a5,a3 + 3bc08ad2: 01f6d69b srliw a3,a3,0x1f + 3bc08ad6: e691 bnez a3,3bc08ae2 + 3bc08ad8: 80000637 lui a2,0x80000 + 3bc08adc: 8fd1 or a5,a5,a2 + 3bc08ade: 18f72023 sw a5,384(a4) + 3bc08ae2: 0000b797 auipc a5,0xb + 3bc08ae6: d007a723 sw zero,-754(a5) # 3bc137f0 + 3bc08aea: 08004737 lui a4,0x8004 + 3bc08aee: 0000b617 auipc a2,0xb + 3bc08af2: d0260613 addi a2,a2,-766 # 3bc137f0 + 3bc08af6: 4f1c lw a5,24(a4) + 3bc08af8: 2781 sext.w a5,a5 + 3bc08afa: c21c sw a5,0(a2) + 3bc08afc: 8b85 andi a5,a5,1 + 3bc08afe: ffe5 bnez a5,3bc08af6 + 3bc08b00: 00c5179b slliw a5,a0,0xc + 3bc08b04: 0107c793 xori a5,a5,16 + 3bc08b08: 653d lui a0,0xf + 3bc08b0a: 8fe9 and a5,a5,a0 + 3bc08b0c: 0107c793 xori a5,a5,16 + 3bc08b10: 2781 sext.w a5,a5 + 3bc08b12: cb1c sw a5,16(a4) + 3bc08b14: c20c sw a1,0(a2) + 3bc08b16: cb4c sw a1,20(a4) + 3bc08b18: 4b1c lw a5,16(a4) + 3bc08b1a: 800005b7 lui a1,0x80000 + 3bc08b1e: 8fcd or a5,a5,a1 + 3bc08b20: c21c sw a5,0(a2) + 3bc08b22: cb1c sw a5,16(a4) + 3bc08b24: ea91 bnez a3,3bc08b38 + 3bc08b26: 18072783 lw a5,384(a4) # 8004180 + 3bc08b2a: 2781 sext.w a5,a5 + 3bc08b2c: 7807b78b extu a5,a5,30,0 + 3bc08b30: 2781 sext.w a5,a5 + 3bc08b32: c21c sw a5,0(a2) + 3bc08b34: 18f72023 sw a5,384(a4) + 3bc08b38: 8082 ret + +000000003bc08b3a : + 3bc08b3a: 080067b7 lui a5,0x8006 + 3bc08b3e: 47fc lw a5,76(a5) + 3bc08b40: 0000b717 auipc a4,0xb + 3bc08b44: cb070713 addi a4,a4,-848 # 3bc137f0 + 3bc08b48: 2781 sext.w a5,a5 + 3bc08b4a: c31c sw a5,0(a4) + 3bc08b4c: 1447b78b extu a5,a5,5,4 + 3bc08b50: cf9d beqz a5,3bc08b8e + 3bc08b52: 080006b7 lui a3,0x8000 + 3bc08b56: 42bc lw a5,64(a3) + 3bc08b58: 7601 lui a2,0xfffe0 + 3bc08b5a: 1675 addi a2,a2,-3 + 3bc08b5c: 2781 sext.w a5,a5 + 3bc08b5e: 8ff1 and a5,a5,a2 + 3bc08b60: c31c sw a5,0(a4) + 3bc08b62: c2bc sw a5,64(a3) + 3bc08b64: 42bc lw a5,64(a3) + 3bc08b66: 00020637 lui a2,0x20 + 3bc08b6a: 0609 addi a2,a2,2 + 3bc08b6c: 2781 sext.w a5,a5 + 3bc08b6e: 8fd1 or a5,a5,a2 + 3bc08b70: c2bc sw a5,64(a3) + 3bc08b72: 0000b797 auipc a5,0xb + 3bc08b76: c607af23 sw zero,-898(a5) # 3bc137f0 + 3bc08b7a: 08003637 lui a2,0x8003 + 3bc08b7e: 66c1 lui a3,0x10 + 3bc08b80: 4a5c lw a5,20(a2) + 3bc08b82: 2781 sext.w a5,a5 + 3bc08b84: c31c sw a5,0(a4) + 3bc08b86: 8ff5 and a5,a5,a3 + 3bc08b88: 2781 sext.w a5,a5 + 3bc08b8a: dbfd beqz a5,3bc08b80 + 3bc08b8c: 8082 ret + 3bc08b8e: 08000637 lui a2,0x8000 + 3bc08b92: 423c lw a5,64(a2) + 3bc08b94: 7681 lui a3,0xfffe0 + 3bc08b96: 16f5 addi a3,a3,-3 + 3bc08b98: 2781 sext.w a5,a5 + 3bc08b9a: 8ff5 and a5,a5,a3 + 3bc08b9c: c31c sw a5,0(a4) + 3bc08b9e: c23c sw a5,64(a2) + 3bc08ba0: 8082 ret + +000000003bc08ba2 : + 3bc08ba2: 080066b7 lui a3,0x8006 + 3bc08ba6: 46dc lw a5,12(a3) + 3bc08ba8: 7769 lui a4,0xffffa + 3bc08baa: 177d addi a4,a4,-1 + 3bc08bac: 2781 sext.w a5,a5 + 3bc08bae: 8ff9 and a5,a5,a4 + 3bc08bb0: 03003737 lui a4,0x3003 + 3bc08bb4: c6dc sw a5,12(a3) + 3bc08bb6: 90070713 addi a4,a4,-1792 # 3002900 <__BSS_SIZE__+0x2ffccf0> + 3bc08bba: 0000b797 auipc a5,0xb + 3bc08bbe: c0e7a783 lw a5,-1010(a5) # 3bc137c8 + 3bc08bc2: cb7c sw a5,84(a4) + 3bc08bc4: 0000b797 auipc a5,0xb + 3bc08bc8: c0c7d783 lhu a5,-1012(a5) # 3bc137d0 + 3bc08bcc: cf3c sw a5,88(a4) + 3bc08bce: 0000b797 auipc a5,0xb + 3bc08bd2: c0a7b783 ld a5,-1014(a5) # 3bc137d8 + 3bc08bd6: 5c07b78b extu a5,a5,23,0 + 3bc08bda: 2781 sext.w a5,a5 + 3bc08bdc: 0000b697 auipc a3,0xb + 3bc08be0: c1468693 addi a3,a3,-1004 # 3bc137f0 + 3bc08be4: c29c sw a5,0(a3) + 3bc08be6: cf7c sw a5,92(a4) + 3bc08be8: 4b3c lw a5,80(a4) + 3bc08bea: 2781 sext.w a5,a5 + 3bc08bec: 0017c793 xori a5,a5,1 + 3bc08bf0: fa17f793 andi a5,a5,-95 + 3bc08bf4: 0207e793 ori a5,a5,32 + 3bc08bf8: c29c sw a5,0(a3) + 3bc08bfa: cb3c sw a5,80(a4) + 3bc08bfc: 8082 ret + +000000003bc08bfe : + 3bc08bfe: 08006737 lui a4,0x8006 + 3bc08c02: 475c lw a5,12(a4) + 3bc08c04: 6691 lui a3,0x4 + 3bc08c06: 8fd5 or a5,a5,a3 + 3bc08c08: 0000b697 auipc a3,0xb + 3bc08c0c: bef6a423 sw a5,-1048(a3) # 3bc137f0 + 3bc08c10: c75c sw a5,12(a4) + 3bc08c12: 8082 ret + +000000003bc08c14 : + 3bc08c14: 08006737 lui a4,0x8006 + 3bc08c18: 475c lw a5,12(a4) + 3bc08c1a: 6689 lui a3,0x2 + 3bc08c1c: 8fd5 or a5,a5,a3 + 3bc08c1e: 0000b697 auipc a3,0xb + 3bc08c22: bcf6a923 sw a5,-1070(a3) # 3bc137f0 + 3bc08c26: c75c sw a5,12(a4) + 3bc08c28: 8082 ret + +000000003bc08c2a : + 3bc08c2a: 1101 addi sp,sp,-32 + 3bc08c2c: 0000b797 auipc a5,0xb + 3bc08c30: bc07a223 sw zero,-1084(a5) # 3bc137f0 + 3bc08c34: 080066b7 lui a3,0x8006 + 3bc08c38: e822 sd s0,16(sp) + 3bc08c3a: ec06 sd ra,24(sp) + 3bc08c3c: e426 sd s1,8(sp) + 3bc08c3e: e04a sd s2,0(sp) + 3bc08c40: 0006a223 sw zero,4(a3) # 8006004 + 3bc08c44: 0006a423 sw zero,8(a3) + 3bc08c48: 46dc lw a5,12(a3) + 3bc08c4a: 0000b417 auipc s0,0xb + 3bc08c4e: ba640413 addi s0,s0,-1114 # 3bc137f0 + 3bc08c52: 2781 sext.w a5,a5 + 3bc08c54: f7f7f793 andi a5,a5,-129 + 3bc08c58: c01c sw a5,0(s0) + 3bc08c5a: c6dc sw a5,12(a3) + 3bc08c5c: 46fc lw a5,76(a3) + 3bc08c5e: c01c sw a5,0(s0) + 3bc08c60: 46fc lw a5,76(a3) + 3bc08c62: c01c sw a5,0(s0) + 3bc08c64: 46fc lw a5,76(a3) + 3bc08c66: c01c sw a5,0(s0) + 3bc08c68: 46fc lw a5,76(a3) + 3bc08c6a: c01c sw a5,0(s0) + 3bc08c6c: 46fc lw a5,76(a3) + 3bc08c6e: c01c sw a5,0(s0) + 3bc08c70: 46f8 lw a4,76(a3) + 3bc08c72: 0007079b sext.w a5,a4 + 3bc08c76: 8b05 andi a4,a4,1 + 3bc08c78: c315 beqz a4,3bc08c9c + 3bc08c7a: 2487b60b extu a2,a5,9,8 + 3bc08c7e: 1447b70b extu a4,a5,5,4 + 3bc08c82: e629 bnez a2,3bc08ccc + 3bc08c84: fcf7f793 andi a5,a5,-49 + 3bc08c88: 0087171b slliw a4,a4,0x8 + 3bc08c8c: 8f3d xor a4,a4,a5 + 3bc08c8e: 30077713 andi a4,a4,768 + 3bc08c92: 8fb9 xor a5,a5,a4 + 3bc08c94: c01c sw a5,0(s0) + 3bc08c96: c6fc sw a5,76(a3) + 3bc08c98: f7dff0ef jal ra,3bc08c14 + 3bc08c9c: 4685 li a3,1 + 3bc08c9e: c014 sw a3,0(s0) + 3bc08ca0: 08006737 lui a4,0x8006 + 3bc08ca4: c354 sw a3,4(a4) + 3bc08ca6: 475c lw a5,12(a4) + 3bc08ca8: 64a1 lui s1,0x8 + 3bc08caa: 08006937 lui s2,0x8006 + 3bc08cae: 2781 sext.w a5,a5 + 3bc08cb0: 0807e793 ori a5,a5,128 + 3bc08cb4: c75c sw a5,12(a4) + 3bc08cb6: c014 sw a3,0(s0) + 3bc08cb8: c714 sw a3,8(a4) + 3bc08cba: 401c lw a5,0(s0) + 3bc08cbc: 8fe5 and a5,a5,s1 + 3bc08cbe: cbb9 beqz a5,3bc08d14 + 3bc08cc0: 60e2 ld ra,24(sp) + 3bc08cc2: 6442 ld s0,16(sp) + 3bc08cc4: 64a2 ld s1,8(sp) + 3bc08cc6: 6902 ld s2,0(sp) + 3bc08cc8: 6105 addi sp,sp,32 + 3bc08cca: 8082 ret + 3bc08ccc: 4589 li a1,2 + 3bc08cce: 02b61163 bne a2,a1,3bc08cf0 + 3bc08cd2: fcf7f793 andi a5,a5,-49 + 3bc08cd6: 0207e793 ori a5,a5,32 + 3bc08cda: 0087171b slliw a4,a4,0x8 + 3bc08cde: 8f3d xor a4,a4,a5 + 3bc08ce0: 30077713 andi a4,a4,768 + 3bc08ce4: 8fb9 xor a5,a5,a4 + 3bc08ce6: c01c sw a5,0(s0) + 3bc08ce8: c6fc sw a5,76(a3) + 3bc08cea: eb9ff0ef jal ra,3bc08ba2 + 3bc08cee: b77d j 3bc08c9c + 3bc08cf0: 4585 li a1,1 + 3bc08cf2: fab615e3 bne a2,a1,3bc08c9c + 3bc08cf6: fcf7f793 andi a5,a5,-49 + 3bc08cfa: 0107e793 ori a5,a5,16 + 3bc08cfe: 0087171b slliw a4,a4,0x8 + 3bc08d02: 8f3d xor a4,a4,a5 + 3bc08d04: 30077713 andi a4,a4,768 + 3bc08d08: 8fb9 xor a5,a5,a4 + 3bc08d0a: c01c sw a5,0(s0) + 3bc08d0c: c6fc sw a5,76(a3) + 3bc08d0e: ef1ff0ef jal ra,3bc08bfe + 3bc08d12: b769 j 3bc08c9c + 3bc08d14: 01092783 lw a5,16(s2) # 8006010 + 3bc08d18: 4501 li a0,0 + 3bc08d1a: c01c sw a5,0(s0) + 3bc08d1c: c6ef70ef jal ra,3bc0018a + 3bc08d20: bf69 j 3bc08cba + +000000003bc08d22 : + 3bc08d22: 080067b7 lui a5,0x8006 + 3bc08d26: 43b4 lw a3,64(a5) + 3bc08d28: bf000737 lui a4,0xbf000 + 3bc08d2c: 377d addiw a4,a4,-1 + 3bc08d2e: 8f75 and a4,a4,a3 + 3bc08d30: 0000b697 auipc a3,0xb + 3bc08d34: ac068693 addi a3,a3,-1344 # 3bc137f0 + 3bc08d38: c298 sw a4,0(a3) + 3bc08d3a: c3b8 sw a4,64(a5) + 3bc08d3c: 43b8 lw a4,64(a5) + 3bc08d3e: 0006a023 sw zero,0(a3) + 3bc08d42: 0407a023 sw zero,64(a5) # 8006040 + 3bc08d46: 4fd8 lw a4,28(a5) + 3bc08d48: 2701 sext.w a4,a4 + 3bc08d4a: 08076713 ori a4,a4,128 + 3bc08d4e: cfd8 sw a4,28(a5) + 3bc08d50: 0006a023 sw zero,0(a3) + 3bc08d54: 0007a023 sw zero,0(a5) + 3bc08d58: 4fd8 lw a4,28(a5) + 3bc08d5a: 2701 sext.w a4,a4 + 3bc08d5c: f7f77713 andi a4,a4,-129 + 3bc08d60: c298 sw a4,0(a3) + 3bc08d62: cfd8 sw a4,28(a5) + 3bc08d64: 8082 ret + +000000003bc08d66 : + 3bc08d66: 1141 addi sp,sp,-16 + 3bc08d68: e406 sd ra,8(sp) + 3bc08d6a: e022 sd s0,0(sp) + 3bc08d6c: ebfff0ef jal ra,3bc08c2a + 3bc08d70: 08000737 lui a4,0x8000 + 3bc08d74: 15472783 lw a5,340(a4) # 8000154 + 3bc08d78: 0000b417 auipc s0,0xb + 3bc08d7c: a7840413 addi s0,s0,-1416 # 3bc137f0 + 3bc08d80: 2781 sext.w a5,a5 + 3bc08d82: 9bf9 andi a5,a5,-2 + 3bc08d84: 14f72a23 sw a5,340(a4) + 3bc08d88: 00042023 sw zero,0(s0) + 3bc08d8c: 12072823 sw zero,304(a4) + 3bc08d90: dabff0ef jal ra,3bc08b3a + 3bc08d94: 080067b7 lui a5,0x8006 + 3bc08d98: 80000737 lui a4,0x80000 + 3bc08d9c: c3b8 sw a4,64(a5) + 3bc08d9e: 00042023 sw zero,0(s0) + 3bc08da2: 60a2 ld ra,8(sp) + 3bc08da4: 6402 ld s0,0(sp) + 3bc08da6: 0007a023 sw zero,0(a5) # 8006000 + 3bc08daa: 0141 addi sp,sp,16 + 3bc08dac: 8082 ret + +000000003bc08dae : + 3bc08dae: 080007b7 lui a5,0x8000 + 3bc08db2: 10078693 addi a3,a5,256 # 8000100 + 3bc08db6: 4af8 lw a4,84(a3) + 3bc08db8: 0000b617 auipc a2,0xb + 3bc08dbc: a3860613 addi a2,a2,-1480 # 3bc137f0 + 3bc08dc0: 20078793 addi a5,a5,512 + 3bc08dc4: 2701 sext.w a4,a4 + 3bc08dc6: 9b79 andi a4,a4,-2 + 3bc08dc8: caf8 sw a4,84(a3) + 3bc08dca: 00062023 sw zero,0(a2) + 3bc08dce: f207a823 sw zero,-208(a5) + 3bc08dd2: 43d4 lw a3,4(a5) + 3bc08dd4: 000405b7 lui a1,0x40 + 3bc08dd8: 8ecd or a3,a3,a1 + 3bc08dda: c214 sw a3,0(a2) + 3bc08ddc: c3d4 sw a3,4(a5) + 3bc08dde: 53d8 lw a4,36(a5) + 3bc08de0: 8f4d or a4,a4,a1 + 3bc08de2: c218 sw a4,0(a2) + 3bc08de4: d3d8 sw a4,36(a5) + 3bc08de6: 8082 ret + +000000003bc08de8 : + 3bc08de8: 08004737 lui a4,0x8004 + 3bc08dec: 0000b697 auipc a3,0xb + 3bc08df0: a0468693 addi a3,a3,-1532 # 3bc137f0 + 3bc08df4: 1bc72783 lw a5,444(a4) # 80041bc + 3bc08df8: 2781 sext.w a5,a5 + 3bc08dfa: c29c sw a5,0(a3) + 3bc08dfc: 8b85 andi a5,a5,1 + 3bc08dfe: dbfd beqz a5,3bc08df4 + 3bc08e00: 32072023 sw zero,800(a4) + 3bc08e04: 1b072783 lw a5,432(a4) + 3bc08e08: 2781 sext.w a5,a5 + 3bc08e0a: fc07f793 andi a5,a5,-64 + 3bc08e0e: 0057e793 ori a5,a5,5 + 3bc08e12: c29c sw a5,0(a3) + 3bc08e14: 1af72823 sw a5,432(a4) + 3bc08e18: 4785 li a5,1 + 3bc08e1a: 32f72023 sw a5,800(a4) + 3bc08e1e: 8082 ret + +000000003bc08e20 : + 3bc08e20: 080036b7 lui a3,0x8003 + 3bc08e24: 0000b717 auipc a4,0xb + 3bc08e28: 9cc70713 addi a4,a4,-1588 # 3bc137f0 + 3bc08e2c: 569c lw a5,40(a3) + 3bc08e2e: 2781 sext.w a5,a5 + 3bc08e30: c31c sw a5,0(a4) + 3bc08e32: 1007f793 andi a5,a5,256 + 3bc08e36: dbfd beqz a5,3bc08e2c + 3bc08e38: 8082 ret + +000000003bc08e3a : + 3bc08e3a: 1141 addi sp,sp,-16 + 3bc08e3c: 4551 li a0,20 + 3bc08e3e: e406 sd ra,8(sp) + 3bc08e40: b4af70ef jal ra,3bc0018a + 3bc08e44: 080007b7 lui a5,0x8000 + 3bc08e48: 4741 li a4,16 + 3bc08e4a: 12e7a023 sw a4,288(a5) # 8000120 + 3bc08e4e: 60a2 ld ra,8(sp) + 3bc08e50: 4705 li a4,1 + 3bc08e52: 0000b697 auipc a3,0xb + 3bc08e56: 98e6af23 sw a4,-1634(a3) # 3bc137f0 + 3bc08e5a: 10e7ac23 sw a4,280(a5) + 3bc08e5e: 0141 addi sp,sp,16 + 3bc08e60: 8082 ret + +000000003bc08e62 : + 3bc08e62: 1141 addi sp,sp,-16 + 3bc08e64: e406 sd ra,8(sp) + 3bc08e66: 0000b797 auipc a5,0xb + 3bc08e6a: 98a78793 addi a5,a5,-1654 # 3bc137f0 + 3bc08e6e: 0007a023 sw zero,0(a5) + 3bc08e72: 08000737 lui a4,0x8000 + 3bc08e76: 10072c23 sw zero,280(a4) # 8000118 + 3bc08e7a: 08006737 lui a4,0x8006 + 3bc08e7e: 4778 lw a4,76(a4) + 3bc08e80: c398 sw a4,0(a5) + 3bc08e82: ee5ff0ef jal ra,3bc08d66 + 3bc08e86: 60a2 ld ra,8(sp) + 3bc08e88: 0141 addi sp,sp,16 + 3bc08e8a: fb1ff06f j 3bc08e3a + +000000003bc08e8e : + 3bc08e8e: 08004637 lui a2,0x8004 + 3bc08e92: 0000b697 auipc a3,0xb + 3bc08e96: 95e68693 addi a3,a3,-1698 # 3bc137f0 + 3bc08e9a: 4705 li a4,1 + 3bc08e9c: 425c lw a5,4(a2) + 3bc08e9e: 2781 sext.w a5,a5 + 3bc08ea0: c29c sw a5,0(a3) + 3bc08ea2: 8b9d andi a5,a5,7 + 3bc08ea4: fee79ce3 bne a5,a4,3bc08e9c + 3bc08ea8: 8082 ret + +000000003bc08eaa : + 3bc08eaa: 4785 li a5,1 + 3bc08eac: 0000b717 auipc a4,0xb + 3bc08eb0: 94470713 addi a4,a4,-1724 # 3bc137f0 + 3bc08eb4: 080006b7 lui a3,0x8000 + 3bc08eb8: c31c sw a5,0(a4) + 3bc08eba: 16f6aa23 sw a5,372(a3) # 8000174 + 3bc08ebe: 08003637 lui a2,0x8003 + 3bc08ec2: 468d li a3,3 + 3bc08ec4: 5a1c lw a5,48(a2) + 3bc08ec6: 2781 sext.w a5,a5 + 3bc08ec8: c31c sw a5,0(a4) + 3bc08eca: 2487b78b extu a5,a5,9,8 + 3bc08ece: fed79be3 bne a5,a3,3bc08ec4 + 3bc08ed2: 4785 li a5,1 + 3bc08ed4: 02f51a63 bne a0,a5,3bc08f08 + 3bc08ed8: 0800a7b7 lui a5,0x800a + 3bc08edc: 46ed li a3,27 + 3bc08ede: c394 sw a3,0(a5) + 3bc08ee0: 0800a7b7 lui a5,0x800a + 3bc08ee4: 4685 li a3,1 + 3bc08ee6: c3d4 sw a3,4(a5) + 3bc08ee8: 020006b7 lui a3,0x2000 + 3bc08eec: fcb68693 addi a3,a3,-53 # 1ffffcb <__BSS_SIZE__+0x1ffa3bb> + 3bc08ef0: c794 sw a3,8(a5) + 3bc08ef2: 400006b7 lui a3,0x40000 + 3bc08ef6: 16fd addi a3,a3,-1 + 3bc08ef8: c7d4 sw a3,12(a5) + 3bc08efa: 47c1 li a5,16 + 3bc08efc: c31c sw a5,0(a4) + 3bc08efe: 08000737 lui a4,0x8000 + 3bc08f02: 16f72a23 sw a5,372(a4) # 8000174 + 3bc08f06: 8082 ret + 3bc08f08: 0800a7b7 lui a5,0x800a + 3bc08f0c: 0007a023 sw zero,0(a5) # 800a000 + 3bc08f10: bfc1 j 3bc08ee0 + +000000003bc08f12 : + 3bc08f12: 08004737 lui a4,0x8004 + 3bc08f16: 080037b7 lui a5,0x8003 + 3bc08f1a: 439c lw a5,0(a5) + 3bc08f1c: 19072683 lw a3,400(a4) # 8004190 + 3bc08f20: 0000b797 auipc a5,0xb + 3bc08f24: 8d078793 addi a5,a5,-1840 # 3bc137f0 + 3bc08f28: c394 sw a3,0(a5) + 3bc08f2a: 19472703 lw a4,404(a4) + 3bc08f2e: c398 sw a4,0(a5) + 3bc08f30: 8082 ret + +000000003bc08f32 : + 3bc08f32: 08004737 lui a4,0x8004 + 3bc08f36: 32072023 sw zero,800(a4) # 8004320 + 3bc08f3a: 1b072783 lw a5,432(a4) + 3bc08f3e: 2781 sext.w a5,a5 + 3bc08f40: 0207e793 ori a5,a5,32 + 3bc08f44: 0000b697 auipc a3,0xb + 3bc08f48: 8af6a623 sw a5,-1876(a3) # 3bc137f0 + 3bc08f4c: 1af72823 sw a5,432(a4) + 3bc08f50: 4785 li a5,1 + 3bc08f52: 32f72023 sw a5,800(a4) + 3bc08f56: 8082 ret + +000000003bc08f58 : + 3bc08f58: 080067b7 lui a5,0x8006 + 3bc08f5c: 00080737 lui a4,0x80 + 3bc08f60: 0207a423 sw zero,40(a5) # 8006028 + 3bc08f64: 0705 addi a4,a4,1 + 3bc08f66: cbf8 sw a4,84(a5) + 3bc08f68: 01011737 lui a4,0x1011 + 3bc08f6c: 80870713 addi a4,a4,-2040 # 1010808 <__BSS_SIZE__+0x100abf8> + 3bc08f70: 030036b7 lui a3,0x3003 + 3bc08f74: cfb8 sw a4,88(a5) + 3bc08f76: 90068693 addi a3,a3,-1792 # 3002900 <__BSS_SIZE__+0x2ffccf0> + 3bc08f7a: 0000b717 auipc a4,0xb + 3bc08f7e: 84e72703 lw a4,-1970(a4) # 3bc137c8 + 3bc08f82: caf8 sw a4,84(a3) + 3bc08f84: 0000b717 auipc a4,0xb + 3bc08f88: 84c75703 lhu a4,-1972(a4) # 3bc137d0 + 3bc08f8c: ceb8 sw a4,88(a3) + 3bc08f8e: 0000b717 auipc a4,0xb + 3bc08f92: 84a73703 ld a4,-1974(a4) # 3bc137d8 + 3bc08f96: 5c07370b extu a4,a4,23,0 + 3bc08f9a: 0000b617 auipc a2,0xb + 3bc08f9e: 85660613 addi a2,a2,-1962 # 3bc137f0 + 3bc08fa2: 2701 sext.w a4,a4 + 3bc08fa4: c218 sw a4,0(a2) + 3bc08fa6: cef8 sw a4,92(a3) + 3bc08fa8: 4ab8 lw a4,80(a3) + 3bc08faa: 2701 sext.w a4,a4 + 3bc08fac: 00174713 xori a4,a4,1 + 3bc08fb0: fa177713 andi a4,a4,-95 + 3bc08fb4: 02076713 ori a4,a4,32 + 3bc08fb8: c218 sw a4,0(a2) + 3bc08fba: cab8 sw a4,80(a3) + 3bc08fbc: 47d8 lw a4,12(a5) + 3bc08fbe: 2701 sext.w a4,a4 + 3bc08fc0: 30b74693 xori a3,a4,779 + 3bc08fc4: 3c06b68b extu a3,a3,15,0 + 3bc08fc8: 8f35 xor a4,a4,a3 + 3bc08fca: c218 sw a4,0(a2) + 3bc08fcc: c7d8 sw a4,12(a5) + 3bc08fce: 4b98 lw a4,16(a5) + 3bc08fd0: 080066b7 lui a3,0x8006 + 3bc08fd4: 2701 sext.w a4,a4 + 3bc08fd6: f0077713 andi a4,a4,-256 + 3bc08fda: cb98 sw a4,16(a5) + 3bc08fdc: 4705 li a4,1 + 3bc08fde: c218 sw a4,0(a2) + 3bc08fe0: c3d8 sw a4,4(a5) + 3bc08fe2: 47d8 lw a4,12(a5) + 3bc08fe4: 2701 sext.w a4,a4 + 3bc08fe6: 08076713 ori a4,a4,128 + 3bc08fea: c218 sw a4,0(a2) + 3bc08fec: c7d8 sw a4,12(a5) + 3bc08fee: 6721 lui a4,0x8 + 3bc08ff0: 4a9c lw a5,16(a3) + 3bc08ff2: 2781 sext.w a5,a5 + 3bc08ff4: c21c sw a5,0(a2) + 3bc08ff6: 8ff9 and a5,a5,a4 + 3bc08ff8: 2781 sext.w a5,a5 + 3bc08ffa: dbfd beqz a5,3bc08ff0 + 3bc08ffc: 8082 ret + +000000003bc08ffe : + 3bc08ffe: 6785 lui a5,0x1 + 3bc09000: 08006737 lui a4,0x8006 + 3bc09004: 2f578793 addi a5,a5,757 # 12f5 <__BSS_SIZE__-0x491b> + 3bc09008: c37c sw a5,68(a4) + 3bc0900a: 0000a697 auipc a3,0xa + 3bc0900e: 7e668693 addi a3,a3,2022 # 3bc137f0 + 3bc09012: 0006a023 sw zero,0(a3) + 3bc09016: 080007b7 lui a5,0x8000 + 3bc0901a: 0e07aa23 sw zero,244(a5) # 80000f4 + 3bc0901e: 080047b7 lui a5,0x8004 + 3bc09022: 5b98 lw a4,48(a5) + 3bc09024: 767d lui a2,0xfffff + 3bc09026: 5ff60613 addi a2,a2,1535 # fffffffffffff5ff <__BL2_END__+0xffffffffc43ebdef> + 3bc0902a: 2701 sext.w a4,a4 + 3bc0902c: 8f71 and a4,a4,a2 + 3bc0902e: c298 sw a4,0(a3) + 3bc09030: db98 sw a4,48(a5) + 3bc09032: 10078793 addi a5,a5,256 # 8004100 + 3bc09036: 47b8 lw a4,72(a5) + 3bc09038: 7f800637 lui a2,0x7f800 + 3bc0903c: 167d addi a2,a2,-1 + 3bc0903e: 2701 sext.w a4,a4 + 3bc09040: 8f71 and a4,a4,a2 + 3bc09042: c298 sw a4,0(a3) + 3bc09044: c7b8 sw a4,72(a5) + 3bc09046: 8082 ret + +000000003bc09048 : + 3bc09048: 679d lui a5,0x7 + 3bc0904a: 0000a617 auipc a2,0xa + 3bc0904e: 7a660613 addi a2,a2,1958 # 3bc137f0 + 3bc09052: c8178793 addi a5,a5,-895 # 6c81 <__BSS_SIZE__+0x1071> + 3bc09056: c21c sw a5,0(a2) + 3bc09058: 08006737 lui a4,0x8006 + 3bc0905c: c37c sw a5,68(a4) + 3bc0905e: 08004737 lui a4,0x8004 + 3bc09062: 18070593 addi a1,a4,384 # 8004180 + 3bc09066: 499c lw a5,16(a1) + 3bc09068: 060006b7 lui a3,0x6000 + 3bc0906c: 1f000537 lui a0,0x1f000 + 3bc09070: 2781 sext.w a5,a5 + 3bc09072: 8ebd xor a3,a3,a5 + 3bc09074: 8ee9 and a3,a3,a0 + 3bc09076: 8fb5 xor a5,a5,a3 + 3bc09078: 2781 sext.w a5,a5 + 3bc0907a: c99c sw a5,16(a1) + 3bc0907c: 000307b7 lui a5,0x30 + 3bc09080: 03378793 addi a5,a5,51 # 30033 <__BSS_SIZE__+0x2a423> + 3bc09084: c21c sw a5,0(a2) + 3bc09086: 080006b7 lui a3,0x8000 + 3bc0908a: 0ef6aa23 sw a5,244(a3) # 80000f4 + 3bc0908e: 5b1c lw a5,48(a4) + 3bc09090: 76fd lui a3,0xfffff + 3bc09092: bff68693 addi a3,a3,-1025 # ffffffffffffebff <__BL2_END__+0xffffffffc43eb3ef> + 3bc09096: 2781 sext.w a5,a5 + 3bc09098: 8ff5 and a5,a5,a3 + 3bc0909a: 6685 lui a3,0x1 + 3bc0909c: a0068693 addi a3,a3,-1536 # a00 <__BSS_SIZE__-0x5210> + 3bc090a0: 8fd5 or a5,a5,a3 + 3bc090a2: c21c sw a5,0(a2) + 3bc090a4: db1c sw a5,48(a4) + 3bc090a6: 10070713 addi a4,a4,256 + 3bc090aa: 473c lw a5,72(a4) + 3bc090ac: 808006b7 lui a3,0x80800 + 3bc090b0: 8fd5 or a5,a5,a3 + 3bc090b2: c21c sw a5,0(a2) + 3bc090b4: c73c sw a5,72(a4) + 3bc090b6: 8082 ret + +000000003bc090b8 : + 3bc090b8: 715d addi sp,sp,-80 + 3bc090ba: f44e sd s3,40(sp) + 3bc090bc: e85a sd s6,16(sp) + 3bc090be: e486 sd ra,72(sp) + 3bc090c0: e0a2 sd s0,64(sp) + 3bc090c2: fc26 sd s1,56(sp) + 3bc090c4: f84a sd s2,48(sp) + 3bc090c6: f052 sd s4,32(sp) + 3bc090c8: ec56 sd s5,24(sp) + 3bc090ca: e45e sd s7,8(sp) + 3bc090cc: 080007b7 lui a5,0x8000 + 3bc090d0: 00fe0737 lui a4,0xfe0 + 3bc090d4: cff8 sw a4,92(a5) + 3bc090d6: 080047b7 lui a5,0x8004 + 3bc090da: 5407a023 sw zero,1344(a5) # 8004540 + 3bc090de: 5e07a823 sw zero,1520(a5) + 3bc090e2: 6a07a023 sw zero,1696(a5) + 3bc090e6: 08004b37 lui s6,0x8004 + 3bc090ea: 0000a997 auipc s3,0xa + 3bc090ee: 70698993 addi s3,s3,1798 # 3bc137f0 + 3bc090f2: 3fcb2783 lw a5,1020(s6) # 80043fc + 3bc090f6: 2781 sext.w a5,a5 + 3bc090f8: 00f9a023 sw a5,0(s3) + 3bc090fc: fbfd bnez a5,3bc090f2 + 3bc090fe: 030b2783 lw a5,48(s6) + 3bc09102: 0007849b sext.w s1,a5 + 3bc09106: 0017f913 andi s2,a5,1 + 3bc0910a: fd44f793 andi a5,s1,-44 + 3bc0910e: 00f9a023 sw a5,0(s3) + 3bc09112: 02fb2823 sw a5,48(s6) + 3bc09116: ee9ff0ef jal ra,3bc08ffe + 3bc0911a: 244b2a03 lw s4,580(s6) + 3bc0911e: 2a01 sext.w s4,s4 + 3bc09120: 0149a023 sw s4,0(s3) + 3bc09124: 001a7a13 andi s4,s4,1 + 3bc09128: e08ff0ef jal ra,3bc08730 + 3bc0912c: 120a0e63 beqz s4,3bc09268 + 3bc09130: 0e0b2403 lw s0,224(s6) + 3bc09134: 00040a9b sext.w s5,s0 + 3bc09138: 01945b9b srliw s7,s0,0x19 + 3bc0913c: 6994340b extu s0,s0,26,25 + 3bc09140: e07d bnez s0,3bc09226 + 3bc09142: 0159a023 sw s5,0(s3) + 3bc09146: 3c04358b extu a1,s0,15,0 + 3bc0914a: 0805e593 ori a1,a1,128 + 3bc0914e: 4505 li a0,1 + 3bc09150: 977ff0ef jal ra,3bc08ac6 + 3bc09154: 08000737 lui a4,0x8000 + 3bc09158: 18072783 lw a5,384(a4) # 8000180 + 3bc0915c: 004a1a1b slliw s4,s4,0x4 + 3bc09160: 2781 sext.w a5,a5 + 3bc09162: 0017e793 ori a5,a5,1 + 3bc09166: 0147ca33 xor s4,a5,s4 + 3bc0916a: 010a7a13 andi s4,s4,16 + 3bc0916e: 0147ca33 xor s4,a5,s4 + 3bc09172: 0149a023 sw s4,0(s3) + 3bc09176: 19472023 sw s4,384(a4) + 3bc0917a: 08003737 lui a4,0x8003 + 3bc0917e: 44472783 lw a5,1092(a4) # 8003444 + 3bc09182: 2781 sext.w a5,a5 + 3bc09184: 00f9a023 sw a5,0(s3) + 3bc09188: 8b85 andi a5,a5,1 + 3bc0918a: dbf5 beqz a5,3bc0917e + 3bc0918c: 00040737 lui a4,0x40 + 3bc09190: 080107b7 lui a5,0x8010 + 3bc09194: 08004437 lui s0,0x8004 + 3bc09198: c398 sw a4,0(a5) + 3bc0919a: 503c lw a5,96(s0) + 3bc0919c: 08040a13 addi s4,s0,128 # 8004080 + 3bc091a0: 4505 li a0,1 + 3bc091a2: 2781 sext.w a5,a5 + 3bc091a4: 9bf9 andi a5,a5,-2 + 3bc091a6: 00f9a023 sw a5,0(s3) + 3bc091aa: d03c sw a5,96(s0) + 3bc091ac: 05ca2583 lw a1,92(s4) # 1f005c <__BSS_SIZE__+0x1ea44c> + 3bc091b0: 2581 sext.w a1,a1 + 3bc091b2: 00b9a023 sw a1,0(s3) + 3bc091b6: 3c05b58b extu a1,a1,15,0 + 3bc091ba: 90dff0ef jal ra,3bc08ac6 + 3bc091be: 060a2583 lw a1,96(s4) + 3bc091c2: 4509 li a0,2 + 3bc091c4: 2581 sext.w a1,a1 + 3bc091c6: 00b9a023 sw a1,0(s3) + 3bc091ca: 7d05b58b extu a1,a1,31,16 + 3bc091ce: 8f9ff0ef jal ra,3bc08ac6 + 3bc091d2: 581c lw a5,48(s0) + 3bc091d4: 60a6 ld ra,72(sp) + 3bc091d6: 7a02 ld s4,32(sp) + 3bc091d8: 2781 sext.w a5,a5 + 3bc091da: 0097c733 xor a4,a5,s1 + 3bc091de: 02077713 andi a4,a4,32 + 3bc091e2: 8fb9 xor a5,a5,a4 + 3bc091e4: 0097c733 xor a4,a5,s1 + 3bc091e8: 8b21 andi a4,a4,8 + 3bc091ea: 8fb9 xor a5,a5,a4 + 3bc091ec: 8cbd xor s1,s1,a5 + 3bc091ee: 8889 andi s1,s1,2 + 3bc091f0: 8fa5 xor a5,a5,s1 + 3bc091f2: 9bf9 andi a5,a5,-2 + 3bc091f4: 0127e7b3 or a5,a5,s2 + 3bc091f8: 00f9a023 sw a5,0(s3) + 3bc091fc: d81c sw a5,48(s0) + 3bc091fe: 50040713 addi a4,s0,1280 + 3bc09202: 4785 li a5,1 + 3bc09204: c33c sw a5,64(a4) + 3bc09206: 58040713 addi a4,s0,1408 + 3bc0920a: db3c sw a5,112(a4) + 3bc0920c: 68040413 addi s0,s0,1664 + 3bc09210: d01c sw a5,32(s0) + 3bc09212: 6406 ld s0,64(sp) + 3bc09214: 74e2 ld s1,56(sp) + 3bc09216: 7942 ld s2,48(sp) + 3bc09218: 79a2 ld s3,40(sp) + 3bc0921a: 6ae2 ld s5,24(sp) + 3bc0921c: 6b42 ld s6,16(sp) + 3bc0921e: 6ba2 ld s7,8(sp) + 3bc09220: 6161 addi sp,sp,80 + 3bc09222: e27ff06f j 3bc09048 + 3bc09226: fa0005b7 lui a1,0xfa000 + 3bc0922a: 15fd addi a1,a1,-1 + 3bc0922c: 00baf5b3 and a1,s5,a1 + 3bc09230: 00b9a023 sw a1,0(s3) + 3bc09234: 4509 li a0,2 + 3bc09236: 7d05b58b extu a1,a1,31,16 + 3bc0923a: 88dff0ef jal ra,3bc08ac6 + 3bc0923e: 0dcb2403 lw s0,220(s6) + 3bc09242: 01aad59b srliw a1,s5,0x1a + 3bc09246: 0065959b slliw a1,a1,0x6 + 3bc0924a: 2401 sext.w s0,s0 + 3bc0924c: 0089a023 sw s0,0(s3) + 3bc09250: dff47413 andi s0,s0,-513 + 3bc09254: 8da1 xor a1,a1,s0 + 3bc09256: 0405f593 andi a1,a1,64 + 3bc0925a: 8c2d xor s0,s0,a1 + 3bc0925c: 002b959b slliw a1,s7,0x2 + 3bc09260: 8da1 xor a1,a1,s0 + 3bc09262: 8991 andi a1,a1,4 + 3bc09264: 8c2d xor s0,s0,a1 + 3bc09266: b5c5 j 3bc09146 + 3bc09268: 0dcb2583 lw a1,220(s6) + 3bc0926c: 67c1 lui a5,0x10 + 3bc0926e: dfb78793 addi a5,a5,-517 # fdfb <__BSS_SIZE__+0xa1eb> + 3bc09272: 2581 sext.w a1,a1 + 3bc09274: 00b9a023 sw a1,0(s3) + 3bc09278: dfb5f413 andi s0,a1,-517 + 3bc0927c: 8dfd and a1,a1,a5 + 3bc0927e: 0405e593 ori a1,a1,64 + 3bc09282: 4505 li a0,1 + 3bc09284: 04046413 ori s0,s0,64 + 3bc09288: 83fff0ef jal ra,3bc08ac6 + 3bc0928c: bd6d j 3bc09146 + +000000003bc0928e : + 3bc0928e: 7179 addi sp,sp,-48 + 3bc09290: f022 sd s0,32(sp) + 3bc09292: e052 sd s4,0(sp) + 3bc09294: f406 sd ra,40(sp) + 3bc09296: ec26 sd s1,24(sp) + 3bc09298: e84a sd s2,16(sp) + 3bc0929a: e44e sd s3,8(sp) + 3bc0929c: 080047b7 lui a5,0x8004 + 3bc092a0: 5407a023 sw zero,1344(a5) # 8004540 + 3bc092a4: 5e07a823 sw zero,1520(a5) + 3bc092a8: 6a07a023 sw zero,1696(a5) + 3bc092ac: 08004a37 lui s4,0x8004 + 3bc092b0: 0000a417 auipc s0,0xa + 3bc092b4: 54040413 addi s0,s0,1344 # 3bc137f0 + 3bc092b8: 3fca2783 lw a5,1020(s4) # 80043fc + 3bc092bc: 2781 sext.w a5,a5 + 3bc092be: c01c sw a5,0(s0) + 3bc092c0: ffe5 bnez a5,3bc092b8 + 3bc092c2: 030a2783 lw a5,48(s4) + 3bc092c6: 0007849b sext.w s1,a5 + 3bc092ca: 0017f913 andi s2,a5,1 + 3bc092ce: fd44f793 andi a5,s1,-44 + 3bc092d2: c01c sw a5,0(s0) + 3bc092d4: 02fa2823 sw a5,48(s4) + 3bc092d8: d27ff0ef jal ra,3bc08ffe + 3bc092dc: 080007b7 lui a5,0x8000 + 3bc092e0: 1847a983 lw s3,388(a5) # 8000184 + 3bc092e4: 2981 sext.w s3,s3 + 3bc092e6: 01342023 sw s3,0(s0) + 3bc092ea: 1049b98b extu s3,s3,4,4 + 3bc092ee: 02098763 beqz s3,3bc0931c + 3bc092f2: 060a2783 lw a5,96(s4) + 3bc092f6: 450d li a0,3 + 3bc092f8: 2781 sext.w a5,a5 + 3bc092fa: 0017e793 ori a5,a5,1 + 3bc092fe: c01c sw a5,0(s0) + 3bc09300: 06fa2023 sw a5,96(s4) + 3bc09304: 0e0a2583 lw a1,224(s4) + 3bc09308: 2581 sext.w a1,a1 + 3bc0930a: 0045e793 ori a5,a1,4 + 3bc0930e: 3c05b58b extu a1,a1,15,0 + 3bc09312: 0045e593 ori a1,a1,4 + 3bc09316: c01c sw a5,0(s0) + 3bc09318: faeff0ef jal ra,3bc08ac6 + 3bc0931c: c5aff0ef jal ra,3bc08776 + 3bc09320: 08000737 lui a4,0x8000 + 3bc09324: 18472783 lw a5,388(a4) # 8000184 + 3bc09328: 2781 sext.w a5,a5 + 3bc0932a: 0017e793 ori a5,a5,1 + 3bc0932e: c01c sw a5,0(s0) + 3bc09330: 18f72223 sw a5,388(a4) + 3bc09334: 08003737 lui a4,0x8003 + 3bc09338: 44472783 lw a5,1092(a4) # 8003444 + 3bc0933c: 2781 sext.w a5,a5 + 3bc0933e: c01c sw a5,0(s0) + 3bc09340: 8b89 andi a5,a5,2 + 3bc09342: dbfd beqz a5,3bc09338 + 3bc09344: 080107b7 lui a5,0x8010 + 3bc09348: 00040737 lui a4,0x40 + 3bc0934c: c398 sw a4,0(a5) + 3bc0934e: 02098763 beqz s3,3bc0937c + 3bc09352: 080049b7 lui s3,0x8004 + 3bc09356: 0e09a783 lw a5,224(s3) # 80040e0 + 3bc0935a: 65c1 lui a1,0x10 + 3bc0935c: 15ed addi a1,a1,-5 + 3bc0935e: 2781 sext.w a5,a5 + 3bc09360: ffb7f713 andi a4,a5,-5 + 3bc09364: 8dfd and a1,a1,a5 + 3bc09366: 450d li a0,3 + 3bc09368: c018 sw a4,0(s0) + 3bc0936a: f5cff0ef jal ra,3bc08ac6 + 3bc0936e: 0609a783 lw a5,96(s3) + 3bc09372: 2781 sext.w a5,a5 + 3bc09374: 9bf9 andi a5,a5,-2 + 3bc09376: c01c sw a5,0(s0) + 3bc09378: 06f9a023 sw a5,96(s3) + 3bc0937c: 08004737 lui a4,0x8004 + 3bc09380: 5b1c lw a5,48(a4) + 3bc09382: 70a2 ld ra,40(sp) + 3bc09384: 69a2 ld s3,8(sp) + 3bc09386: 2781 sext.w a5,a5 + 3bc09388: 0097c6b3 xor a3,a5,s1 + 3bc0938c: 0206f693 andi a3,a3,32 + 3bc09390: 8fb5 xor a5,a5,a3 + 3bc09392: 0097c6b3 xor a3,a5,s1 + 3bc09396: 8aa1 andi a3,a3,8 + 3bc09398: 8fb5 xor a5,a5,a3 + 3bc0939a: 8cbd xor s1,s1,a5 + 3bc0939c: 8889 andi s1,s1,2 + 3bc0939e: 8fa5 xor a5,a5,s1 + 3bc093a0: 9bf9 andi a5,a5,-2 + 3bc093a2: 0127e7b3 or a5,a5,s2 + 3bc093a6: c01c sw a5,0(s0) + 3bc093a8: db1c sw a5,48(a4) + 3bc093aa: 50070693 addi a3,a4,1280 # 8004500 + 3bc093ae: 4785 li a5,1 + 3bc093b0: c2bc sw a5,64(a3) + 3bc093b2: 7402 ld s0,32(sp) + 3bc093b4: 58070693 addi a3,a4,1408 + 3bc093b8: 64e2 ld s1,24(sp) + 3bc093ba: 6942 ld s2,16(sp) + 3bc093bc: 6a02 ld s4,0(sp) + 3bc093be: dabc sw a5,112(a3) + 3bc093c0: 68070713 addi a4,a4,1664 + 3bc093c4: d31c sw a5,32(a4) + 3bc093c6: 6145 addi sp,sp,48 + 3bc093c8: c81ff06f j 3bc09048 + +000000003bc093cc : + 3bc093cc: 7139 addi sp,sp,-64 + 3bc093ce: f822 sd s0,48(sp) + 3bc093d0: e456 sd s5,8(sp) + 3bc093d2: e05a sd s6,0(sp) + 3bc093d4: fc06 sd ra,56(sp) + 3bc093d6: f426 sd s1,40(sp) + 3bc093d8: f04a sd s2,32(sp) + 3bc093da: ec4e sd s3,24(sp) + 3bc093dc: e852 sd s4,16(sp) + 3bc093de: 080047b7 lui a5,0x8004 + 3bc093e2: 5407a023 sw zero,1344(a5) # 8004540 + 3bc093e6: 5e07a823 sw zero,1520(a5) + 3bc093ea: 8aaa mv s5,a0 + 3bc093ec: 6a07a023 sw zero,1696(a5) + 3bc093f0: 08004b37 lui s6,0x8004 + 3bc093f4: 0000a417 auipc s0,0xa + 3bc093f8: 3fc40413 addi s0,s0,1020 # 3bc137f0 + 3bc093fc: 3fcb2783 lw a5,1020(s6) # 80043fc + 3bc09400: 2781 sext.w a5,a5 + 3bc09402: c01c sw a5,0(s0) + 3bc09404: ffe5 bnez a5,3bc093fc + 3bc09406: 030b2783 lw a5,48(s6) + 3bc0940a: 0007891b sext.w s2,a5 + 3bc0940e: 0017f493 andi s1,a5,1 + 3bc09412: fd497793 andi a5,s2,-44 + 3bc09416: c01c sw a5,0(s0) + 3bc09418: 02fb2823 sw a5,48(s6) + 3bc0941c: be3ff0ef jal ra,3bc08ffe + 3bc09420: 4505 li a0,1 + 3bc09422: a89ff0ef jal ra,3bc08eaa + 3bc09426: 080006b7 lui a3,0x8000 + 3bc0942a: 08068613 addi a2,a3,128 # 8000080 + 3bc0942e: 4218 lw a4,0(a2) + 3bc09430: 002007b7 lui a5,0x200 + 3bc09434: 007f05b7 lui a1,0x7f0 + 3bc09438: 2701 sext.w a4,a4 + 3bc0943a: 8fb9 xor a5,a5,a4 + 3bc0943c: 8fed and a5,a5,a1 + 3bc0943e: 8f3d xor a4,a4,a5 + 3bc09440: 2701 sext.w a4,a4 + 3bc09442: 1f0007b7 lui a5,0x1f000 + 3bc09446: 8fb9 xor a5,a5,a4 + 3bc09448: 7f0005b7 lui a1,0x7f000 + 3bc0944c: 8fed and a5,a5,a1 + 3bc0944e: 8f3d xor a4,a4,a5 + 3bc09450: 2701 sext.w a4,a4 + 3bc09452: c018 sw a4,0(s0) + 3bc09454: c218 sw a4,0(a2) + 3bc09456: 00c62a03 lw s4,12(a2) + 3bc0945a: 18068693 addi a3,a3,384 + 3bc0945e: 000a079b sext.w a5,s4 + 3bc09462: 9bc5 andi a5,a5,-15 + 3bc09464: c01c sw a5,0(s0) + 3bc09466: c65c sw a5,12(a2) + 3bc09468: 0086a983 lw s3,8(a3) + 3bc0946c: 082a3a0b extu s4,s4,2,2 + 3bc09470: 2981 sext.w s3,s3 + 3bc09472: 01342023 sw s3,0(s0) + 3bc09476: 1049b98b extu s3,s3,4,4 + 3bc0947a: 02098763 beqz s3,3bc094a8 + 3bc0947e: 060b2783 lw a5,96(s6) + 3bc09482: 450d li a0,3 + 3bc09484: 2781 sext.w a5,a5 + 3bc09486: 0017e793 ori a5,a5,1 + 3bc0948a: c01c sw a5,0(s0) + 3bc0948c: 06fb2023 sw a5,96(s6) + 3bc09490: 0e0b2583 lw a1,224(s6) + 3bc09494: 2581 sext.w a1,a1 + 3bc09496: 0045e793 ori a5,a1,4 + 3bc0949a: 3c05b58b extu a1,a1,15,0 + 3bc0949e: 0045e593 ori a1,a1,4 + 3bc094a2: c01c sw a5,0(s0) + 3bc094a4: e22ff0ef jal ra,3bc08ac6 + 3bc094a8: 8556 mv a0,s5 + 3bc094aa: b12ff0ef jal ra,3bc087bc + 3bc094ae: 08000737 lui a4,0x8000 + 3bc094b2: 18872783 lw a5,392(a4) # 8000188 + 3bc094b6: 2781 sext.w a5,a5 + 3bc094b8: 0017e793 ori a5,a5,1 + 3bc094bc: c01c sw a5,0(s0) + 3bc094be: 18f72423 sw a5,392(a4) + 3bc094c2: 08003737 lui a4,0x8003 + 3bc094c6: 44472783 lw a5,1092(a4) # 8003444 + 3bc094ca: 2781 sext.w a5,a5 + 3bc094cc: c01c sw a5,0(s0) + 3bc094ce: 8b91 andi a5,a5,4 + 3bc094d0: dbfd beqz a5,3bc094c6 + 3bc094d2: 040a0563 beqz s4,3bc0951c + 3bc094d6: 08000737 lui a4,0x8000 + 3bc094da: 08070693 addi a3,a4,128 # 8000080 + 3bc094de: 46dc lw a5,12(a3) + 3bc094e0: 18070713 addi a4,a4,384 + 3bc094e4: 2781 sext.w a5,a5 + 3bc094e6: 9bed andi a5,a5,-5 + 3bc094e8: c01c sw a5,0(s0) + 3bc094ea: c6dc sw a5,12(a3) + 3bc094ec: 471c lw a5,8(a4) + 3bc094ee: 2781 sext.w a5,a5 + 3bc094f0: 0017e793 ori a5,a5,1 + 3bc094f4: c01c sw a5,0(s0) + 3bc094f6: c71c sw a5,8(a4) + 3bc094f8: 08003737 lui a4,0x8003 + 3bc094fc: 44472783 lw a5,1092(a4) # 8003444 + 3bc09500: 2781 sext.w a5,a5 + 3bc09502: c01c sw a5,0(s0) + 3bc09504: 8b91 andi a5,a5,4 + 3bc09506: dbfd beqz a5,3bc094fc + 3bc09508: 08000737 lui a4,0x8000 + 3bc0950c: 08c72783 lw a5,140(a4) # 800008c + 3bc09510: 2781 sext.w a5,a5 + 3bc09512: 0047e793 ori a5,a5,4 + 3bc09516: c01c sw a5,0(s0) + 3bc09518: 08f72623 sw a5,140(a4) + 3bc0951c: 02098763 beqz s3,3bc0954a + 3bc09520: 080049b7 lui s3,0x8004 + 3bc09524: 0e09a783 lw a5,224(s3) # 80040e0 + 3bc09528: 65c1 lui a1,0x10 + 3bc0952a: 15ed addi a1,a1,-5 + 3bc0952c: 2781 sext.w a5,a5 + 3bc0952e: ffb7f713 andi a4,a5,-5 + 3bc09532: 8dfd and a1,a1,a5 + 3bc09534: 450d li a0,3 + 3bc09536: c018 sw a4,0(s0) + 3bc09538: d8eff0ef jal ra,3bc08ac6 + 3bc0953c: 0609a783 lw a5,96(s3) + 3bc09540: 2781 sext.w a5,a5 + 3bc09542: 9bf9 andi a5,a5,-2 + 3bc09544: c01c sw a5,0(s0) + 3bc09546: 06f9a023 sw a5,96(s3) + 3bc0954a: cd6ff0ef jal ra,3bc08a20 + 3bc0954e: 080107b7 lui a5,0x8010 + 3bc09552: 00040737 lui a4,0x40 + 3bc09556: c398 sw a4,0(a5) + 3bc09558: 4501 li a0,0 + 3bc0955a: 951ff0ef jal ra,3bc08eaa + 3bc0955e: 08004737 lui a4,0x8004 + 3bc09562: 5b1c lw a5,48(a4) + 3bc09564: 70e2 ld ra,56(sp) + 3bc09566: 69e2 ld s3,24(sp) + 3bc09568: 2781 sext.w a5,a5 + 3bc0956a: 0127c6b3 xor a3,a5,s2 + 3bc0956e: 0206f693 andi a3,a3,32 + 3bc09572: 8fb5 xor a5,a5,a3 + 3bc09574: 0127c6b3 xor a3,a5,s2 + 3bc09578: 8aa1 andi a3,a3,8 + 3bc0957a: 8fb5 xor a5,a5,a3 + 3bc0957c: 0127c933 xor s2,a5,s2 + 3bc09580: 00297913 andi s2,s2,2 + 3bc09584: 0127c7b3 xor a5,a5,s2 + 3bc09588: 9bf9 andi a5,a5,-2 + 3bc0958a: 8fc5 or a5,a5,s1 + 3bc0958c: c01c sw a5,0(s0) + 3bc0958e: db1c sw a5,48(a4) + 3bc09590: 50070693 addi a3,a4,1280 # 8004500 + 3bc09594: 4785 li a5,1 + 3bc09596: c2bc sw a5,64(a3) + 3bc09598: 7442 ld s0,48(sp) + 3bc0959a: 58070693 addi a3,a4,1408 + 3bc0959e: 74a2 ld s1,40(sp) + 3bc095a0: 7902 ld s2,32(sp) + 3bc095a2: 6a42 ld s4,16(sp) + 3bc095a4: 6aa2 ld s5,8(sp) + 3bc095a6: 6b02 ld s6,0(sp) + 3bc095a8: dabc sw a5,112(a3) + 3bc095aa: 68070713 addi a4,a4,1664 + 3bc095ae: d31c sw a5,32(a4) + 3bc095b0: 6121 addi sp,sp,64 + 3bc095b2: a97ff06f j 3bc09048 + +000000003bc095b6 : + 3bc095b6: 7179 addi sp,sp,-48 + 3bc095b8: e84a sd s2,16(sp) + 3bc095ba: e44e sd s3,8(sp) + 3bc095bc: e052 sd s4,0(sp) + 3bc095be: f406 sd ra,40(sp) + 3bc095c0: f022 sd s0,32(sp) + 3bc095c2: ec26 sd s1,24(sp) + 3bc095c4: 080047b7 lui a5,0x8004 + 3bc095c8: 5407a023 sw zero,1344(a5) # 8004540 + 3bc095cc: 5e07a823 sw zero,1520(a5) + 3bc095d0: 89aa mv s3,a0 + 3bc095d2: 8a2e mv s4,a1 + 3bc095d4: 6a07a023 sw zero,1696(a5) + 3bc095d8: 08004737 lui a4,0x8004 + 3bc095dc: 0000a917 auipc s2,0xa + 3bc095e0: 21490913 addi s2,s2,532 # 3bc137f0 + 3bc095e4: 3fc72783 lw a5,1020(a4) # 80043fc + 3bc095e8: 2781 sext.w a5,a5 + 3bc095ea: 00f92023 sw a5,0(s2) + 3bc095ee: fbfd bnez a5,3bc095e4 + 3bc095f0: 5b1c lw a5,48(a4) + 3bc095f2: 0007849b sext.w s1,a5 + 3bc095f6: 0017f413 andi s0,a5,1 + 3bc095fa: fd44f793 andi a5,s1,-44 + 3bc095fe: 00f92023 sw a5,0(s2) + 3bc09602: db1c sw a5,48(a4) + 3bc09604: 9fbff0ef jal ra,3bc08ffe + 3bc09608: 4505 li a0,1 + 3bc0960a: 8a1ff0ef jal ra,3bc08eaa + 3bc0960e: 080007b7 lui a5,0x8000 + 3bc09612: 0bc7a703 lw a4,188(a5) # 80000bc + 3bc09616: 2701 sext.w a4,a4 + 3bc09618: 000a1863 bnez s4,3bc09628 + 3bc0961c: 77fd lui a5,0xfffff + 3bc0961e: 17fd addi a5,a5,-1 + 3bc09620: 8f7d and a4,a4,a5 + 3bc09622: 6789 lui a5,0x2 + 3bc09624: 8f5d or a4,a4,a5 + 3bc09626: a821 j 3bc0963e + 3bc09628: 4785 li a5,1 + 3bc0962a: 00fa1763 bne s4,a5,3bc09638 + 3bc0962e: 77f9 lui a5,0xffffe + 3bc09630: 17fd addi a5,a5,-1 + 3bc09632: 8f7d and a4,a4,a5 + 3bc09634: 6785 lui a5,0x1 + 3bc09636: b7fd j 3bc09624 + 3bc09638: 4789 li a5,2 + 3bc0963a: 0efa0963 beq s4,a5,3bc0972c + 3bc0963e: 00e92023 sw a4,0(s2) + 3bc09642: 00092703 lw a4,0(s2) + 3bc09646: 080007b7 lui a5,0x8000 + 3bc0964a: 0ae7ae23 sw a4,188(a5) # 80000bc + 3bc0964e: 0e0a1163 bnez s4,3bc09730 + 3bc09652: 08004737 lui a4,0x8004 + 3bc09656: 475c lw a5,12(a4) + 3bc09658: 2781 sext.w a5,a5 + 3bc0965a: 0807e793 ori a5,a5,128 + 3bc0965e: 00f92023 sw a5,0(s2) + 3bc09662: c75c sw a5,12(a4) + 3bc09664: af2ff0ef jal ra,3bc08956 + 3bc09668: 080007b7 lui a5,0x8000 + 3bc0966c: 18c7a783 lw a5,396(a5) # 800018c + 3bc09670: 2781 sext.w a5,a5 + 3bc09672: 4017e693 ori a3,a5,1025 + 3bc09676: 000a1663 bnez s4,3bc09682 + 3bc0967a: bff7f793 andi a5,a5,-1025 + 3bc0967e: 0017e693 ori a3,a5,1 + 3bc09682: 4785 li a5,1 + 3bc09684: 00f98763 beq s3,a5,3bc09692 + 3bc09688: 39bd addiw s3,s3,-17 + 3bc0968a: fef6f713 andi a4,a3,-17 + 3bc0968e: 0137e463 bltu a5,s3,3bc09696 + 3bc09692: 0106e713 ori a4,a3,16 + 3bc09696: 00e92023 sw a4,0(s2) + 3bc0969a: 080007b7 lui a5,0x8000 + 3bc0969e: 18e7a623 sw a4,396(a5) # 800018c + 3bc096a2: 08003737 lui a4,0x8003 + 3bc096a6: 44472783 lw a5,1092(a4) # 8003444 + 3bc096aa: 2781 sext.w a5,a5 + 3bc096ac: 00f92023 sw a5,0(s2) + 3bc096b0: 8ba1 andi a5,a5,8 + 3bc096b2: dbf5 beqz a5,3bc096a6 + 3bc096b4: 080049b7 lui s3,0x8004 + 3bc096b8: 00c9a783 lw a5,12(s3) # 800400c + 3bc096bc: 00040737 lui a4,0x40 + 3bc096c0: 4501 li a0,0 + 3bc096c2: 2781 sext.w a5,a5 + 3bc096c4: f7f7f793 andi a5,a5,-129 + 3bc096c8: 00f92023 sw a5,0(s2) + 3bc096cc: 00f9a623 sw a5,12(s3) + 3bc096d0: 080107b7 lui a5,0x8010 + 3bc096d4: c398 sw a4,0(a5) + 3bc096d6: fd4ff0ef jal ra,3bc08eaa + 3bc096da: 0309a783 lw a5,48(s3) + 3bc096de: 70a2 ld ra,40(sp) + 3bc096e0: 6a02 ld s4,0(sp) + 3bc096e2: 2781 sext.w a5,a5 + 3bc096e4: 0097c733 xor a4,a5,s1 + 3bc096e8: 02077713 andi a4,a4,32 + 3bc096ec: 8fb9 xor a5,a5,a4 + 3bc096ee: 0097c733 xor a4,a5,s1 + 3bc096f2: 8b21 andi a4,a4,8 + 3bc096f4: 8fb9 xor a5,a5,a4 + 3bc096f6: 8cbd xor s1,s1,a5 + 3bc096f8: 8889 andi s1,s1,2 + 3bc096fa: 8fa5 xor a5,a5,s1 + 3bc096fc: 9bf9 andi a5,a5,-2 + 3bc096fe: 8fc1 or a5,a5,s0 + 3bc09700: 00f92023 sw a5,0(s2) + 3bc09704: 02f9a823 sw a5,48(s3) + 3bc09708: 50098713 addi a4,s3,1280 + 3bc0970c: 4785 li a5,1 + 3bc0970e: c33c sw a5,64(a4) + 3bc09710: 58098713 addi a4,s3,1408 + 3bc09714: 7402 ld s0,32(sp) + 3bc09716: db3c sw a5,112(a4) + 3bc09718: 68098993 addi s3,s3,1664 + 3bc0971c: 64e2 ld s1,24(sp) + 3bc0971e: 6942 ld s2,16(sp) + 3bc09720: 02f9a023 sw a5,32(s3) + 3bc09724: 69a2 ld s3,8(sp) + 3bc09726: 6145 addi sp,sp,48 + 3bc09728: 921ff06f j 3bc09048 + 3bc0972c: 678d lui a5,0x3 + 3bc0972e: bddd j 3bc09624 + 3bc09730: 854e mv a0,s3 + 3bc09732: 974ff0ef jal ra,3bc088a6 + 3bc09736: bf0d j 3bc09668 + +000000003bc09738 : + 3bc09738: 8082 ret + +000000003bc0973a : + 3bc0973a: 1101 addi sp,sp,-32 + 3bc0973c: 000e0737 lui a4,0xe0 + 3bc09740: e802 sd zero,16(sp) + 3bc09742: ec02 sd zero,24(sp) + 3bc09744: c602 sw zero,12(sp) + 3bc09746: 080107b7 lui a5,0x8010 + 3bc0974a: 0719 addi a4,a4,6 + 3bc0974c: c398 sw a4,0(a5) + 3bc0974e: 0007a823 sw zero,16(a5) # 8010010 + 3bc09752: 577d li a4,-1 + 3bc09754: cbd8 sw a4,20(a5) + 3bc09756: 4711 li a4,4 + 3bc09758: cf98 sw a4,24(a5) + 3bc0975a: 40004737 lui a4,0x40004 + 3bc0975e: a0070713 addi a4,a4,-1536 # 40003a00 <__BL2_END__+0x43f01f0> + 3bc09762: c3b8 sw a4,64(a5) + 3bc09764: 4732 lw a4,12(sp) + 3bc09766: 0000a617 auipc a2,0xa + 3bc0976a: 08a60613 addi a2,a2,138 # 3bc137f0 + 3bc0976e: c3f8 sw a4,68(a5) + 3bc09770: 4742 lw a4,16(sp) + 3bc09772: c7b8 sw a4,72(a5) + 3bc09774: 4752 lw a4,20(sp) + 3bc09776: c7f8 sw a4,76(a5) + 3bc09778: 4762 lw a4,24(sp) + 3bc0977a: cbb8 sw a4,80(a5) + 3bc0977c: 4772 lw a4,28(sp) + 3bc0977e: cbf8 sw a4,84(a5) + 3bc09780: 6741 lui a4,0x10 + 3bc09782: 0705 addi a4,a4,1 + 3bc09784: c398 sw a4,0(a5) + 3bc09786: 08010737 lui a4,0x8010 + 3bc0978a: 08072783 lw a5,128(a4) # 8010080 + 3bc0978e: 2781 sext.w a5,a5 + 3bc09790: c21c sw a5,0(a2) + 3bc09792: 8b91 andi a5,a5,4 + 3bc09794: dbfd beqz a5,3bc0978a + 3bc09796: 68c1 lui a7,0x10 + 3bc09798: 67c1 lui a5,0x10 + 3bc0979a: 40004837 lui a6,0x40004 + 3bc0979e: 00188e13 addi t3,a7,1 # 10001 <__BSS_SIZE__+0xa3f1> + 3bc097a2: 80004337 lui t1,0x80004 + 3bc097a6: c31c sw a5,0(a4) + 3bc097a8: 45d5 li a1,21 + 3bc097aa: 4f05 li t5,1 + 3bc097ac: 080107b7 lui a5,0x8010 + 3bc097b0: b0080813 addi a6,a6,-1280 # 40003b00 <__BL2_END__+0x43f02f0> + 3bc097b4: 8ff2 mv t6,t3 + 3bc097b6: a0030313 addi t1,t1,-1536 # ffffffff80003a00 <__BL2_END__+0xffffffff443f01f0> + 3bc097ba: 02000e93 li t4,32 + 3bc097be: 00bf16bb sllw a3,t5,a1 + 3bc097c2: cb94 sw a3,16(a5) + 3bc097c4: 0507a023 sw a6,64(a5) # 8010040 + 3bc097c8: 46b2 lw a3,12(sp) + 3bc097ca: ff05871b addiw a4,a1,-16 + 3bc097ce: 0ff77713 andi a4,a4,255 + 3bc097d2: c3f4 sw a3,68(a5) + 3bc097d4: 46c2 lw a3,16(sp) + 3bc097d6: c7b4 sw a3,72(a5) + 3bc097d8: 46d2 lw a3,20(sp) + 3bc097da: c7f4 sw a3,76(a5) + 3bc097dc: 46e2 lw a3,24(sp) + 3bc097de: cbb4 sw a3,80(a5) + 3bc097e0: 46f2 lw a3,28(sp) + 3bc097e2: cbf4 sw a3,84(a5) + 3bc097e4: 01f7a023 sw t6,0(a5) + 3bc097e8: 0807a683 lw a3,128(a5) + 3bc097ec: 2681 sext.w a3,a3 + 3bc097ee: c214 sw a3,0(a2) + 3bc097f0: 8a91 andi a3,a3,4 + 3bc097f2: dafd beqz a3,3bc097e8 + 3bc097f4: 0117a023 sw a7,0(a5) + 3bc097f8: 0007a823 sw zero,16(a5) + 3bc097fc: 0467a023 sw t1,64(a5) + 3bc09800: 46b2 lw a3,12(sp) + 3bc09802: c3f4 sw a3,68(a5) + 3bc09804: 46c2 lw a3,16(sp) + 3bc09806: c7b4 sw a3,72(a5) + 3bc09808: 46d2 lw a3,20(sp) + 3bc0980a: c7f4 sw a3,76(a5) + 3bc0980c: 46e2 lw a3,24(sp) + 3bc0980e: cbb4 sw a3,80(a5) + 3bc09810: 46f2 lw a3,28(sp) + 3bc09812: cbf4 sw a3,84(a5) + 3bc09814: 01c7a023 sw t3,0(a5) + 3bc09818: 0807a683 lw a3,128(a5) + 3bc0981c: 2681 sext.w a3,a3 + 3bc0981e: c214 sw a3,0(a2) + 3bc09820: 8a91 andi a3,a3,4 + 3bc09822: dafd beqz a3,3bc09818 + 3bc09824: 0117a023 sw a7,0(a5) + 3bc09828: 4214 lw a3,0(a2) + 3bc0982a: 8aa1 andi a3,a3,8 + 3bc0982c: e689 bnez a3,3bc09836 + 3bc0982e: 2585 addiw a1,a1,1 + 3bc09830: f9d597e3 bne a1,t4,3bc097be + 3bc09834: 473d li a4,15 + 3bc09836: 00e50023 sb a4,0(a0) # 1f000000 + 3bc0983a: 2701 sext.w a4,a4 + 3bc0983c: c218 sw a4,0(a2) + 3bc0983e: 080007b7 lui a5,0x8000 + 3bc09842: 20e7a423 sw a4,520(a5) # 8000208 + 3bc09846: 080107b7 lui a5,0x8010 + 3bc0984a: 00040737 lui a4,0x40 + 3bc0984e: c398 sw a4,0(a5) + 3bc09850: 6105 addi sp,sp,32 + 3bc09852: 8082 ret + +000000003bc09854 : + 3bc09854: 2f000793 li a5,752 + 3bc09858: 0000a717 auipc a4,0xa + 3bc0985c: faf72023 sw a5,-96(a4) # 3bc137f8 + 3bc09860: 06400793 li a5,100 + 3bc09864: 0000a717 auipc a4,0xa + 3bc09868: f8f72c23 sw a5,-104(a4) # 3bc137fc + 3bc0986c: 00002717 auipc a4,0x2 + 3bc09870: 1a072703 lw a4,416(a4) # 3bc0ba0c + 3bc09874: 0047569b srliw a3,a4,0x4 + 3bc09878: 463d li a2,15 + 3bc0987a: 0000a797 auipc a5,0xa + 3bc0987e: f8d7a323 sw a3,-122(a5) # 3bc13800 + 3bc09882: 0000a797 auipc a5,0xa + 3bc09886: f6c7a923 sw a2,-142(a5) # 3bc137f4 + 3bc0988a: 02f00713 li a4,47 + 3bc0988e: 077a slli a4,a4,0x1e + 3bc09890: 7c06b78b extu a5,a3,31,0 + 3bc09894: 02f757b3 divu a5,a4,a5 + 3bc09898: 0000a717 auipc a4,0xa + 3bc0989c: f2f73823 sd a5,-208(a4) # 3bc137c8 + 3bc098a0: 0fa00713 li a4,250 + 3bc098a4: 02d7073b mulw a4,a4,a3 + 3bc098a8: 06400693 li a3,100 + 3bc098ac: 02d7573b divuw a4,a4,a3 + 3bc098b0: 7c07370b extu a4,a4,31,0 + 3bc098b4: 0000a697 auipc a3,0xa + 3bc098b8: f0e6be23 sd a4,-228(a3) # 3bc137d0 + 3bc098bc: 3e800693 li a3,1000 + 3bc098c0: 02d70733 mul a4,a4,a3 + 3bc098c4: 02c787b3 mul a5,a5,a2 + 3bc098c8: 02e7d7b3 divu a5,a5,a4 + 3bc098cc: 0000a717 auipc a4,0xa + 3bc098d0: f0f73623 sd a5,-244(a4) # 3bc137d8 + 3bc098d4: e84ff06f j 3bc08f58 + +000000003bc098d8 : + 3bc098d8: 1141 addi sp,sp,-16 + 3bc098da: e406 sd ra,8(sp) + 3bc098dc: b29fe0ef jal ra,3bc08404 + 3bc098e0: 357d addiw a0,a0,-1 + 3bc098e2: 0ff57513 andi a0,a0,255 + 3bc098e6: 47a5 li a5,9 + 3bc098e8: 12a7ef63 bltu a5,a0,3bc09a26 + 3bc098ec: 00002717 auipc a4,0x2 + 3bc098f0: e2470713 addi a4,a4,-476 # 3bc0b710 + 3bc098f4: 44a7478b lrw a5,a4,a0,2 + 3bc098f8: 97ba add a5,a5,a4 + 3bc098fa: 8782 jr a5 + 3bc098fc: 12141737 lui a4,0x12141 + 3bc09900: 080007b7 lui a5,0x8000 + 3bc09904: 074d addi a4,a4,19 + 3bc09906: c398 sw a4,0(a5) + 3bc09908: 0c041737 lui a4,0xc041 + 3bc0990c: 50370713 addi a4,a4,1283 # c041503 + 3bc09910: c3d8 sw a4,4(a5) + 3bc09912: 06050737 lui a4,0x6050 + 3bc09916: 0705 addi a4,a4,1 + 3bc09918: c798 sw a4,8(a5) + 3bc0991a: 08071737 lui a4,0x8071 + 3bc0991e: b0270713 addi a4,a4,-1278 # 8070b02 + 3bc09922: c7d8 sw a4,12(a5) + 3bc09924: 0a0f1737 lui a4,0xa0f1 + 3bc09928: e0970713 addi a4,a4,-503 # a0f0e09 + 3bc0992c: cb98 sw a4,16(a5) + 3bc0992e: 00161737 lui a4,0x161 + 3bc09932: 10d70713 addi a4,a4,269 # 16110d <__BSS_SIZE__+0x15b4fd> + 3bc09936: cbd8 sw a4,20(a5) + 3bc09938: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0993c: 10000713 li a4,256 + 3bc09940: cfd8 sw a4,28(a5) + 3bc09942: 02136737 lui a4,0x2136 + 3bc09946: 57470713 addi a4,a4,1396 # 2136574 <__BSS_SIZE__+0x2130964> + 3bc0994a: d398 sw a4,32(a5) + 3bc0994c: 4721 li a4,8 + 3bc0994e: d3d8 sw a4,36(a5) + 3bc09950: 76512737 lui a4,0x76512 + 3bc09954: 30870713 addi a4,a4,776 # 76512308 <__BL2_END__+0x3a8feaf8> + 3bc09958: d798 sw a4,40(a5) + 3bc0995a: 4711 li a4,4 + 3bc0995c: d7d8 sw a4,44(a5) + 3bc0995e: a0e1 j 3bc09a26 + 3bc09960: 08071737 lui a4,0x8071 + 3bc09964: 080007b7 lui a5,0x8000 + 3bc09968: d0970713 addi a4,a4,-759 # 8070d09 + 3bc0996c: c398 sw a4,0(a5) + 3bc0996e: 06050737 lui a4,0x6050 + 3bc09972: 20b70713 addi a4,a4,523 # 605020b + 3bc09976: c3d8 sw a4,4(a5) + 3bc09978: 14040737 lui a4,0x14040 + 3bc0997c: 10070713 addi a4,a4,256 # 14040100 + 3bc09980: c798 sw a4,8(a5) + 3bc09982: 15031737 lui a4,0x15031 + 3bc09986: e0c70713 addi a4,a4,-500 # 15030e0c + 3bc0998a: c7d8 sw a4,12(a5) + 3bc0998c: 0a0f1737 lui a4,0xa0f1 + 3bc09990: 21370713 addi a4,a4,531 # a0f1213 + 3bc09994: cb98 sw a4,16(a5) + 3bc09996: 00111737 lui a4,0x111 + 3bc0999a: 0759 addi a4,a4,22 + 3bc0999c: cbd8 sw a4,20(a5) + 3bc0999e: 0007ac23 sw zero,24(a5) # 8000018 + 3bc099a2: 10000713 li a4,256 + 3bc099a6: cfd8 sw a4,28(a5) + 3bc099a8: 82135737 lui a4,0x82135 + 3bc099ac: 76470713 addi a4,a4,1892 # ffffffff82135764 <__BL2_END__+0xffffffff46521f54> + 3bc099b0: d398 sw a4,32(a5) + 3bc099b2: 67513737 lui a4,0x67513 + 3bc099b6: 0207a223 sw zero,36(a5) + 3bc099ba: 02870713 addi a4,a4,40 # 67513028 <__BL2_END__+0x2b8ff818> + 3bc099be: bf69 j 3bc09958 + 3bc099c0: 08071737 lui a4,0x8071 + 3bc099c4: 080007b7 lui a5,0x8000 + 3bc099c8: b0970713 addi a4,a4,-1271 # 8070b09 + 3bc099cc: c398 sw a4,0(a5) + 3bc099ce: 05000737 lui a4,0x5000 + 3bc099d2: 20670713 addi a4,a4,518 # 5000206 + 3bc099d6: c3d8 sw a4,4(a5) + 3bc099d8: 0c040737 lui a4,0xc040 + 3bc099dc: 10d70713 addi a4,a4,269 # c04010d + 3bc099e0: c798 sw a4,8(a5) + 3bc099e2: 15031737 lui a4,0x15031 + 3bc099e6: a1470713 addi a4,a4,-1516 # 15030a14 + 3bc099ea: c7d8 sw a4,12(a5) + 3bc099ec: 10111737 lui a4,0x10111 + 3bc099f0: 21370713 addi a4,a4,531 # 10111213 + 3bc099f4: cb98 sw a4,16(a5) + 3bc099f6: 000f1737 lui a4,0xf1 + 3bc099fa: 60e70713 addi a4,a4,1550 # f160e <__BSS_SIZE__+0xeb9fe> + 3bc099fe: cbd8 sw a4,20(a5) + 3bc09a00: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09a04: 10000713 li a4,256 + 3bc09a08: cfd8 sw a4,28(a5) + 3bc09a0a: 31756737 lui a4,0x31756 + 3bc09a0e: 02470713 addi a4,a4,36 # 31756024 + 3bc09a12: d398 sw a4,32(a5) + 3bc09a14: 4721 li a4,8 + 3bc09a16: d3d8 sw a4,36(a5) + 3bc09a18: 26473737 lui a4,0x26473 + 3bc09a1c: 51870713 addi a4,a4,1304 # 26473518 + 3bc09a20: d798 sw a4,40(a5) + 3bc09a22: 0207a623 sw zero,44(a5) + 3bc09a26: 60a2 ld ra,8(sp) + 3bc09a28: 0141 addi sp,sp,16 + 3bc09a2a: 8082 ret + 3bc09a2c: 0c061737 lui a4,0xc061 + 3bc09a30: 080007b7 lui a5,0x8000 + 3bc09a34: 80b70713 addi a4,a4,-2037 # c06080b + 3bc09a38: c398 sw a4,0(a5) + 3bc09a3a: 070d1737 lui a4,0x70d1 + 3bc09a3e: 90470713 addi a4,a4,-1788 # 70d0904 + 3bc09a42: c3d8 sw a4,4(a5) + 3bc09a44: 6741 lui a4,0x10 + 3bc09a46: 50270713 addi a4,a4,1282 # 10502 <__BSS_SIZE__+0xa8f2> + 3bc09a4a: c798 sw a4,8(a5) + 3bc09a4c: 110a1737 lui a4,0x110a1 + 3bc09a50: e0370713 addi a4,a4,-509 # 110a0e03 + 3bc09a54: c7d8 sw a4,12(a5) + 3bc09a56: 0f141737 lui a4,0xf141 + 3bc09a5a: 61070713 addi a4,a4,1552 # f141610 + 3bc09a5e: cb98 sw a4,16(a5) + 3bc09a60: 00151737 lui a4,0x151 + 3bc09a64: 31270713 addi a4,a4,786 # 151312 <__BSS_SIZE__+0x14b702> + 3bc09a68: cbd8 sw a4,20(a5) + 3bc09a6a: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09a6e: 10000713 li a4,256 + 3bc09a72: cfd8 sw a4,28(a5) + 3bc09a74: 71840737 lui a4,0x71840 + 3bc09a78: 53270713 addi a4,a4,1330 # 71840532 <__BL2_END__+0x35c2cd22> + 3bc09a7c: d398 sw a4,32(a5) + 3bc09a7e: 4719 li a4,6 + 3bc09a80: d3d8 sw a4,36(a5) + 3bc09a82: 76103737 lui a4,0x76103 + 3bc09a86: 42570713 addi a4,a4,1061 # 76103425 <__BL2_END__+0x3a4efc15> + 3bc09a8a: d798 sw a4,40(a5) + 3bc09a8c: 4721 li a4,8 + 3bc09a8e: b5f9 j 3bc0995c + 3bc09a90: 080b1737 lui a4,0x80b1 + 3bc09a94: 080007b7 lui a5,0x8000 + 3bc09a98: d0670713 addi a4,a4,-762 # 80b0d06 + 3bc09a9c: c398 sw a4,0(a5) + 3bc09a9e: 09010737 lui a4,0x9010 + 3bc09aa2: 40770713 addi a4,a4,1031 # 9010407 + 3bc09aa6: c3d8 sw a4,4(a5) + 3bc09aa8: 14050737 lui a4,0x14050 + 3bc09aac: 20c70713 addi a4,a4,524 # 1405020c + 3bc09ab0: c798 sw a4,8(a5) + 3bc09ab2: 15001737 lui a4,0x15001 + 3bc09ab6: e0370713 addi a4,a4,-509 # 15000e03 + 3bc09aba: c7d8 sw a4,12(a5) + 3bc09abc: 0a0f1737 lui a4,0xa0f1 + 3bc09ac0: 21370713 addi a4,a4,531 # a0f1213 + 3bc09ac4: cb98 sw a4,16(a5) + 3bc09ac6: 00111737 lui a4,0x111 + 3bc09aca: 0759 addi a4,a4,22 + 3bc09acc: cbd8 sw a4,20(a5) + 3bc09ace: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09ad2: 10000713 li a4,256 + 3bc09ad6: cfd8 sw a4,28(a5) + 3bc09ad8: 82135737 lui a4,0x82135 + 3bc09adc: 76470713 addi a4,a4,1892 # ffffffff82135764 <__BL2_END__+0xffffffff46521f54> + 3bc09ae0: d398 sw a4,32(a5) + 3bc09ae2: 67513737 lui a4,0x67513 + 3bc09ae6: 0207a223 sw zero,36(a5) + 3bc09aea: 20870713 addi a4,a4,520 # 67513208 <__BL2_END__+0x2b8ff9f8> + 3bc09aee: b5ad j 3bc09958 + 3bc09af0: 0b061737 lui a4,0xb061 + 3bc09af4: 080007b7 lui a5,0x8000 + 3bc09af8: 90870713 addi a4,a4,-1784 # b060908 + 3bc09afc: c398 sw a4,0(a5) + 3bc09afe: 02000737 lui a4,0x2000 + 3bc09b02: 10770713 addi a4,a4,263 # 2000107 <__BSS_SIZE__+0x1ffa4f7> + 3bc09b06: c3d8 sw a4,4(a5) + 3bc09b08: 0c050737 lui a4,0xc050 + 3bc09b0c: 40d70713 addi a4,a4,1037 # c05040d + 3bc09b10: c798 sw a4,8(a5) + 3bc09b12: 13141737 lui a4,0x13141 + 3bc09b16: 50370713 addi a4,a4,1283 # 13141503 + 3bc09b1a: c7d8 sw a4,12(a5) + 3bc09b1c: 160a1737 lui a4,0x160a1 + 3bc09b20: 11270713 addi a4,a4,274 # 160a1112 + 3bc09b24: cb98 sw a4,16(a5) + 3bc09b26: 000f1737 lui a4,0xf1 + 3bc09b2a: 0739 addi a4,a4,14 + 3bc09b2c: cbd8 sw a4,20(a5) + 3bc09b2e: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09b32: 10000713 li a4,256 + 3bc09b36: cfd8 sw a4,28(a5) + 3bc09b38: 28137737 lui a4,0x28137 + 3bc09b3c: 56470713 addi a4,a4,1380 # 28137564 + 3bc09b40: d398 sw a4,32(a5) + 3bc09b42: 76158737 lui a4,0x76158 + 3bc09b46: 0207a223 sw zero,36(a5) + 3bc09b4a: 32070713 addi a4,a4,800 # 76158320 <__BL2_END__+0x3a544b10> + 3bc09b4e: b529 j 3bc09958 + 3bc09b50: 08061737 lui a4,0x8061 + 3bc09b54: 080007b7 lui a5,0x8000 + 3bc09b58: b0970713 addi a4,a4,-1271 # 8060b09 + 3bc09b5c: c398 sw a4,0(a5) + 3bc09b5e: 02040737 lui a4,0x2040 + 3bc09b62: 70170713 addi a4,a4,1793 # 2040701 <__BSS_SIZE__+0x203aaf1> + 3bc09b66: c3d8 sw a4,4(a5) + 3bc09b68: 0c000737 lui a4,0xc000 + 3bc09b6c: 50d70713 addi a4,a4,1293 # c00050d + 3bc09b70: c798 sw a4,8(a5) + 3bc09b72: 13150737 lui a4,0x13150 + 3bc09b76: 31470713 addi a4,a4,788 # 13150314 + 3bc09b7a: c7d8 sw a4,12(a5) + 3bc09b7c: 10111737 lui a4,0x10111 + 3bc09b80: 21670713 addi a4,a4,534 # 10111216 + 3bc09b84: cb98 sw a4,16(a5) + 3bc09b86: 000f1737 lui a4,0xf1 + 3bc09b8a: a0e70713 addi a4,a4,-1522 # f0a0e <__BSS_SIZE__+0xeadfe> + 3bc09b8e: cbd8 sw a4,20(a5) + 3bc09b90: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09b94: 10000713 li a4,256 + 3bc09b98: cfd8 sw a4,28(a5) + 3bc09b9a: 82135737 lui a4,0x82135 + 3bc09b9e: 67470713 addi a4,a4,1652 # ffffffff82135674 <__BL2_END__+0xffffffff46521e64> + 3bc09ba2: d398 sw a4,32(a5) + 3bc09ba4: 76153737 lui a4,0x76153 + 3bc09ba8: 0207a223 sw zero,36(a5) + 3bc09bac: 28070713 addi a4,a4,640 # 76153280 <__BL2_END__+0x3a53fa70> + 3bc09bb0: b365 j 3bc09958 + 3bc09bb2: 070b1737 lui a4,0x70b1 + 3bc09bb6: 080007b7 lui a5,0x8000 + 3bc09bba: 90c70713 addi a4,a4,-1780 # 70b090c + 3bc09bbe: c398 sw a4,0(a5) + 3bc09bc0: 04050737 lui a4,0x4050 + 3bc09bc4: 60870713 addi a4,a4,1544 # 4050608 <__BSS_SIZE__+0x404a9f8> + 3bc09bc8: c3d8 sw a4,4(a5) + 3bc09bca: 0e020737 lui a4,0xe020 + 3bc09bce: 30d70713 addi a4,a4,781 # e02030d + 3bc09bd2: c798 sw a4,8(a5) + 3bc09bd4: 110a0737 lui a4,0x110a0 + 3bc09bd8: 10070713 addi a4,a4,256 # 110a0100 + 3bc09bdc: c7d8 sw a4,12(a5) + 3bc09bde: 0f131737 lui a4,0xf131 + 3bc09be2: 61470713 addi a4,a4,1556 # f131614 + 3bc09be6: cb98 sw a4,16(a5) + 3bc09be8: 00151737 lui a4,0x151 + 3bc09bec: 0749 addi a4,a4,18 + 3bc09bee: cbd8 sw a4,20(a5) + 3bc09bf0: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09bf4: 10000713 li a4,256 + 3bc09bf8: cfd8 sw a4,28(a5) + 3bc09bfa: 86014737 lui a4,0x86014 + 3bc09bfe: 53270713 addi a4,a4,1330 # ffffffff86014532 <__BL2_END__+0xffffffff4a400d22> + 3bc09c02: d398 sw a4,32(a5) + 3bc09c04: 471d li a4,7 + 3bc09c06: d3d8 sw a4,36(a5) + 3bc09c08: 76012737 lui a4,0x76012 + 3bc09c0c: 34570713 addi a4,a4,837 # 76012345 <__BL2_END__+0x3a3feb35> + 3bc09c10: bdad j 3bc09a8a + +000000003bc09c12 : + 3bc09c12: 8082 ret + +000000003bc09c14 : + 3bc09c14: 63746737 lui a4,0x63746 + 3bc09c18: 080047b7 lui a5,0x8004 + 3bc09c1c: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32b61> + 3bc09c20: c7d8 sw a4,12(a5) + 3bc09c22: 14000737 lui a4,0x14000 + 3bc09c26: c3f8 sw a4,68(a5) + 3bc09c28: 470d li a4,3 + 3bc09c2a: d7f8 sw a4,108(a5) + 3bc09c2c: 999f06b7 lui a3,0x999f0 + 3bc09c30: 10078713 addi a4,a5,256 # 8004100 + 3bc09c34: c734 sw a3,72(a4) + 3bc09c36: 810416b7 lui a3,0x81041 + 3bc09c3a: 40168693 addi a3,a3,1025 # ffffffff81041401 <__BL2_END__+0xffffffff4542dbf1> + 3bc09c3e: c394 sw a3,0(a5) + 3bc09c40: 009306b7 lui a3,0x930 + 3bc09c44: 0207a823 sw zero,48(a5) + 3bc09c48: 0685 addi a3,a3,1 + 3bc09c4a: dbd4 sw a3,52(a5) + 3bc09c4c: 000206b7 lui a3,0x20 + 3bc09c50: df94 sw a3,56(a5) + 3bc09c52: 002016b7 lui a3,0x201 + 3bc09c56: 07068693 addi a3,a3,112 # 201070 <__BSS_SIZE__+0x1fb460> + 3bc09c5a: cbb4 sw a3,80(a5) + 3bc09c5c: 007106b7 lui a3,0x710 + 3bc09c60: 0607a023 sw zero,96(a5) + 3bc09c64: 0a468693 addi a3,a3,164 # 7100a4 <__BSS_SIZE__+0x70a494> + 3bc09c68: d3f4 sw a3,100(a5) + 3bc09c6a: 0c07a023 sw zero,192(a5) + 3bc09c6e: 6641 lui a2,0x10 + 3bc09c70: 0c07a223 sw zero,196(a5) + 3bc09c74: 08078693 addi a3,a5,128 + 3bc09c78: 0e560613 addi a2,a2,229 # 100e5 <__BSS_SIZE__+0xa4d5> + 3bc09c7c: cab0 sw a2,80(a3) + 3bc09c7e: 006a0637 lui a2,0x6a0 + 3bc09c82: caf0 sw a2,84(a3) + 3bc09c84: 1f140637 lui a2,0x1f140 + 3bc09c88: 04060613 addi a2,a2,64 # 1f140040 + 3bc09c8c: cef0 sw a2,92(a3) + 3bc09c8e: 00600637 lui a2,0x600 + 3bc09c92: d2b0 sw a2,96(a3) + 3bc09c94: 000b0637 lui a2,0xb0 + 3bc09c98: 3bf60613 addi a2,a2,959 # b03bf <__BSS_SIZE__+0xaa7af> + 3bc09c9c: d2f0 sw a2,100(a3) + 3bc09c9e: 0e1126b7 lui a3,0xe112 + 3bc09ca2: f1068693 addi a3,a3,-240 # e111f10 + 3bc09ca6: c314 sw a3,0(a4) + 3bc09ca8: 000306b7 lui a3,0x30 + 3bc09cac: 41768693 addi a3,a3,1047 # 30417 <__BSS_SIZE__+0x2a807> + 3bc09cb0: c354 sw a3,4(a4) + 3bc09cb2: 050706b7 lui a3,0x5070 + 3bc09cb6: 60a68693 addi a3,a3,1546 # 507060a + 3bc09cba: 6589 lui a1,0x2 + 3bc09cbc: c714 sw a3,8(a4) + 3bc09cbe: 00758693 addi a3,a1,7 # 2007 <__BSS_SIZE__-0x3c09> + 3bc09cc2: c754 sw a3,12(a4) + 3bc09cc4: 070206b7 lui a3,0x7020 + 3bc09cc8: 30768693 addi a3,a3,775 # 7020307 + 3bc09ccc: cb14 sw a3,16(a4) + 3bc09cce: 050506b7 lui a3,0x5050 + 3bc09cd2: 30368693 addi a3,a3,771 # 5050303 + 3bc09cd6: 6605 lui a2,0x1 + 3bc09cd8: cb54 sw a3,20(a4) + 3bc09cda: 90760693 addi a3,a2,-1785 # 907 <__BSS_SIZE__-0x5309> + 3bc09cde: d314 sw a3,32(a4) + 3bc09ce0: c09606b7 lui a3,0xc0960 + 3bc09ce4: 18078713 addi a4,a5,384 + 3bc09ce8: 1207ae23 sw zero,316(a5) + 3bc09cec: 02668693 addi a3,a3,38 # ffffffffc0960026 <__BL2_END__+0xffffffff84d4c816> + 3bc09cf0: c314 sw a3,0(a4) + 3bc09cf2: 048a8537 lui a0,0x48a8 + 3bc09cf6: 4685 li a3,1 + 3bc09cf8: c354 sw a3,4(a4) + 3bc09cfa: 30550513 addi a0,a0,773 # 48a8305 + 3bc09cfe: cb08 sw a0,16(a4) + 3bc09d00: 00070537 lui a0,0x70 + 3bc09d04: 20250813 addi a6,a0,514 # 70202 <__BSS_SIZE__+0x6a5f2> + 3bc09d08: 01072a23 sw a6,20(a4) # 14000014 + 3bc09d0c: 07c13837 lui a6,0x7c13 + 3bc09d10: 12180813 addi a6,a6,289 # 7c13121 + 3bc09d14: 01072c23 sw a6,24(a4) + 3bc09d18: 02100813 li a6,33 + 3bc09d1c: 01072e23 sw a6,28(a4) + 3bc09d20: c0400837 lui a6,0xc0400 + 3bc09d24: 0861 addi a6,a6,24 + 3bc09d26: 03072023 sw a6,32(a4) + 3bc09d2a: 00fe0837 lui a6,0xfe0 + 3bc09d2e: 0ff80813 addi a6,a6,255 # fe00ff <__BSS_SIZE__+0xfda4ef> + 3bc09d32: 03072223 sw a6,36(a4) + 3bc09d36: 80000837 lui a6,0x80000 + 3bc09d3a: 03072423 sw a6,40(a4) + 3bc09d3e: 2c100813 li a6,705 + 3bc09d42: 03072823 sw a6,48(a4) + 3bc09d46: c334 sw a3,64(a4) + 3bc09d48: c374 sw a3,68(a4) + 3bc09d4a: f1f58593 addi a1,a1,-225 + 3bc09d4e: 20078713 addi a4,a5,512 + 3bc09d52: c30c sw a1,0(a4) + 3bc09d54: 70750513 addi a0,a0,1799 + 3bc09d58: c348 sw a0,4(a4) + 3bc09d5a: 2007a423 sw zero,520(a5) + 3bc09d5e: 1f000537 lui a0,0x1f000 + 3bc09d62: c748 sw a0,12(a4) + 3bc09d64: cb0c sw a1,16(a4) + 3bc09d66: 060f05b7 lui a1,0x60f0 + 3bc09d6a: 60658593 addi a1,a1,1542 # 60f0606 + 3bc09d6e: cb4c sw a1,20(a4) + 3bc09d70: 060605b7 lui a1,0x6060 + 3bc09d74: 60658593 addi a1,a1,1542 # 6060606 + 3bc09d78: cf0c sw a1,24(a4) + 3bc09d7a: 60600513 li a0,1542 + 3bc09d7e: cf48 sw a0,28(a4) + 3bc09d80: 6511 lui a0,0x4 + 3bc09d82: f3f50813 addi a6,a0,-193 # 3f3f <__BSS_SIZE__-0x1cd1> + 3bc09d86: 03072023 sw a6,32(a4) + 3bc09d8a: d34c sw a1,36(a4) + 3bc09d8c: d70c sw a1,40(a4) + 3bc09d8e: 001f25b7 lui a1,0x1f2 + 3bc09d92: f0658593 addi a1,a1,-250 # 1f1f06 <__BSS_SIZE__+0x1ec2f6> + 3bc09d96: d74c sw a1,44(a4) + 3bc09d98: 080005b7 lui a1,0x8000 + 3bc09d9c: 61058593 addi a1,a1,1552 # 8000610 + 3bc09da0: c32c sw a1,64(a4) + 3bc09da2: 2407a223 sw zero,580(a5) + 3bc09da6: f8550513 addi a0,a0,-123 + 3bc09daa: cb28 sw a0,80(a4) + 3bc09dac: 100005b7 lui a1,0x10000 + 3bc09db0: 2407aa23 sw zero,596(a5) + 3bc09db4: 0f058593 addi a1,a1,240 # 100000f0 + 3bc09db8: cf6c sw a1,92(a4) + 3bc09dba: d36c sw a1,100(a4) + 3bc09dbc: d76c sw a1,108(a4) + 3bc09dbe: 3007a023 sw zero,768(a5) + 3bc09dc2: 3007a223 sw zero,772(a5) + 3bc09dc6: 3007a623 sw zero,780(a5) + 3bc09dca: 30078713 addi a4,a5,768 + 3bc09dce: d314 sw a3,32(a4) + 3bc09dd0: 3607a623 sw zero,876(a5) + 3bc09dd4: 40078713 addi a4,a5,1024 + 3bc09dd8: 45c5 li a1,17 + 3bc09dda: c30c sw a1,0(a4) + 3bc09ddc: 6599 lui a1,0x6 + 3bc09dde: c34c sw a1,4(a4) + 3bc09de0: 489d li a7,7 + 3bc09de2: c70c sw a1,8(a4) + 3bc09de4: 48078713 addi a4,a5,1152 + 3bc09de8: cb14 sw a3,16(a4) + 3bc09dea: 06a00813 li a6,106 + 3bc09dee: 01172a23 sw a7,20(a4) + 3bc09df2: 01072c23 sw a6,24(a4) + 3bc09df6: e0760613 addi a2,a2,-505 + 3bc09dfa: 01a80537 lui a0,0x1a80 + 3bc09dfe: cf50 sw a2,28(a4) + 3bc09e00: 1a850513 addi a0,a0,424 # 1a801a8 <__BSS_SIZE__+0x1a7a598> + 3bc09e04: d308 sw a0,32(a4) + 3bc09e06: db4c sw a1,52(a4) + 3bc09e08: df0c sw a1,56(a4) + 3bc09e0a: 50078713 addi a4,a5,1280 + 3bc09e0e: c334 sw a3,64(a4) + 3bc09e10: 05172223 sw a7,68(a4) + 3bc09e14: 05072423 sw a6,72(a4) + 3bc09e18: c770 sw a2,76(a4) + 3bc09e1a: cb28 sw a0,80(a4) + 3bc09e1c: d36c sw a1,100(a4) + 3bc09e1e: d72c sw a1,104(a4) + 3bc09e20: 58078713 addi a4,a5,1408 + 3bc09e24: db34 sw a3,112(a4) + 3bc09e26: 07172a23 sw a7,116(a4) + 3bc09e2a: 07072c23 sw a6,120(a4) + 3bc09e2e: df70 sw a2,124(a4) + 3bc09e30: 60078793 addi a5,a5,1536 + 3bc09e34: c388 sw a0,0(a5) + 3bc09e36: 8082 ret + +000000003bc09e38 : + 3bc09e38: 080047b7 lui a5,0x8004 + 3bc09e3c: 4709 li a4,2 + 3bc09e3e: db98 sw a4,48(a5) + 3bc09e40: 00400737 lui a4,0x400 + 3bc09e44: 0761 addi a4,a4,24 + 3bc09e46: 18078693 addi a3,a5,384 # 8004180 + 3bc09e4a: d298 sw a4,32(a3) + 3bc09e4c: 0800a737 lui a4,0x800a + 3bc09e50: 00072a23 sw zero,20(a4) # 800a014 + 3bc09e54: 63746737 lui a4,0x63746 + 3bc09e58: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32b61> + 3bc09e5c: c7d8 sw a4,12(a5) + 3bc09e5e: 08000737 lui a4,0x8000 + 3bc09e62: c3f8 sw a4,68(a5) + 3bc09e64: 8082 ret + +000000003bc09e66 : + 3bc09e66: 080047b7 lui a5,0x8004 + 3bc09e6a: c0400737 lui a4,0xc0400 + 3bc09e6e: 0207a823 sw zero,48(a5) # 8004030 + 3bc09e72: 0761 addi a4,a4,24 + 3bc09e74: 1ae7a023 sw a4,416(a5) + 3bc09e78: 6705 lui a4,0x1 + 3bc09e7a: 177d addi a4,a4,-1 + 3bc09e7c: 0800a6b7 lui a3,0x800a + 3bc09e80: cad8 sw a4,20(a3) + 3bc09e82: 63746737 lui a4,0x63746 + 3bc09e86: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32b61> + 3bc09e8a: c7d8 sw a4,12(a5) + 3bc09e8c: 14000737 lui a4,0x14000 + 3bc09e90: c3f8 sw a4,68(a5) + 3bc09e92: 8082 ret + +000000003bc09e94 : + 3bc09e94: 080047b7 lui a5,0x8004 + 3bc09e98: 4398 lw a4,0(a5) + 3bc09e9a: 0000a797 auipc a5,0xa + 3bc09e9e: 94e7ab23 sw a4,-1706(a5) # 3bc137f0 + 3bc09ea2: 34c7368b extu a3,a4,13,12 + 3bc09ea6: 4785 li a5,1 + 3bc09ea8: 9f95 subw a5,a5,a3 + 3bc09eaa: 40f557bb sraw a5,a0,a5 + 3bc09eae: 4689 li a3,2 + 3bc09eb0: 01e7571b srliw a4,a4,0x1e + 3bc09eb4: 40e6873b subw a4,a3,a4 + 3bc09eb8: 0ff7f793 andi a5,a5,255 + 3bc09ebc: 40e7d7bb sraw a5,a5,a4 + 3bc09ec0: 0ff7f793 andi a5,a5,255 + 3bc09ec4: ffa7869b addiw a3,a5,-6 + 3bc09ec8: 4711 li a4,4 + 3bc09eca: 02d76763 bltu a4,a3,3bc09ef8 + 3bc09ece: 00002717 auipc a4,0x2 + 3bc09ed2: 86a70713 addi a4,a4,-1942 # 3bc0b738 + 3bc09ed6: 54d7478b lurw a5,a4,a3,2 + 3bc09eda: 2781 sext.w a5,a5 + 3bc09edc: 97ba add a5,a5,a4 + 3bc09ede: 08004737 lui a4,0x8004 + 3bc09ee2: 8782 jr a5 + 3bc09ee4: 007107b7 lui a5,0x710 + 3bc09ee8: 02a78793 addi a5,a5,42 # 71002a <__BSS_SIZE__+0x70a41a> + 3bc09eec: d37c sw a5,100(a4) + 3bc09eee: 6785 lui a5,0x1 + 3bc09ef0: 90378793 addi a5,a5,-1789 # 903 <__BSS_SIZE__-0x530d> + 3bc09ef4: 12f72023 sw a5,288(a4) # 8004120 + 3bc09ef8: 080047b7 lui a5,0x8004 + 3bc09efc: 4709 li a4,2 + 3bc09efe: d3b8 sw a4,96(a5) + 3bc09f00: 0607a023 sw zero,96(a5) # 8004060 + 3bc09f04: 8082 ret + 3bc09f06: 007107b7 lui a5,0x710 + 3bc09f0a: 03478793 addi a5,a5,52 # 710034 <__BSS_SIZE__+0x70a424> + 3bc09f0e: bff9 j 3bc09eec + 3bc09f10: 007107b7 lui a5,0x710 + 3bc09f14: 04b78793 addi a5,a5,75 # 71004b <__BSS_SIZE__+0x70a43b> + 3bc09f18: d37c sw a5,100(a4) + 3bc09f1a: 6785 lui a5,0x1 + 3bc09f1c: 90478793 addi a5,a5,-1788 # 904 <__BSS_SIZE__-0x530c> + 3bc09f20: bfd1 j 3bc09ef4 + 3bc09f22: 007107b7 lui a5,0x710 + 3bc09f26: 07a78793 addi a5,a5,122 # 71007a <__BSS_SIZE__+0x70a46a> + 3bc09f2a: d37c sw a5,100(a4) + 3bc09f2c: 6785 lui a5,0x1 + 3bc09f2e: 90578793 addi a5,a5,-1787 # 905 <__BSS_SIZE__-0x530b> + 3bc09f32: b7c9 j 3bc09ef4 + 3bc09f34: 007107b7 lui a5,0x710 + 3bc09f38: 0a478793 addi a5,a5,164 # 7100a4 <__BSS_SIZE__+0x70a494> + 3bc09f3c: d37c sw a5,100(a4) + 3bc09f3e: 6785 lui a5,0x1 + 3bc09f40: 90778793 addi a5,a5,-1785 # 907 <__BSS_SIZE__-0x5309> + 3bc09f44: bf45 j 3bc09ef4 + +000000003bc09f46 : + 3bc09f46: 03020737 lui a4,0x3020 + 3bc09f4a: 080007b7 lui a5,0x8000 + 3bc09f4e: 10070713 addi a4,a4,256 # 3020100 <__BSS_SIZE__+0x301a4f0> + 3bc09f52: c398 sw a4,0(a5) + 3bc09f54: 07060737 lui a4,0x7060 + 3bc09f58: 50470713 addi a4,a4,1284 # 7060504 + 3bc09f5c: c3d8 sw a4,4(a5) + 3bc09f5e: 0b0a1737 lui a4,0xb0a1 + 3bc09f62: 90870713 addi a4,a4,-1784 # b0a0908 + 3bc09f66: c798 sw a4,8(a5) + 3bc09f68: 0f0e1737 lui a4,0xf0e1 + 3bc09f6c: d0c70713 addi a4,a4,-756 # f0e0d0c + 3bc09f70: c7d8 sw a4,12(a5) + 3bc09f72: 13121737 lui a4,0x13121 + 3bc09f76: 11070713 addi a4,a4,272 # 13121110 + 3bc09f7a: cb98 sw a4,16(a5) + 3bc09f7c: 00161737 lui a4,0x161 + 3bc09f80: 51470713 addi a4,a4,1300 # 161514 <__BSS_SIZE__+0x15b904> + 3bc09f84: cbd8 sw a4,20(a5) + 3bc09f86: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09f8a: 10000613 li a2,256 + 3bc09f8e: 76543737 lui a4,0x76543 + 3bc09f92: cfd0 sw a2,28(a5) + 3bc09f94: 21070713 addi a4,a4,528 # 76543210 <__BL2_END__+0x3a92fa00> + 3bc09f98: d398 sw a4,32(a5) + 3bc09f9a: 46a1 li a3,8 + 3bc09f9c: d3d4 sw a3,36(a5) + 3bc09f9e: d798 sw a4,40(a5) + 3bc09fa0: d7d4 sw a3,44(a5) + 3bc09fa2: 007f0737 lui a4,0x7f0 + 3bc09fa6: 0407a023 sw zero,64(a5) + 3bc09faa: 0735 addi a4,a4,13 + 3bc09fac: c3f8 sw a4,68(a5) + 3bc09fae: 0407a423 sw zero,72(a5) + 3bc09fb2: c7f4 sw a3,76(a5) + 3bc09fb4: 4719 li a4,6 + 3bc09fb6: cbb8 sw a4,80(a5) + 3bc09fb8: 0c001737 lui a4,0xc001 + 3bc09fbc: b0070713 addi a4,a4,-1280 # c000b00 + 3bc09fc0: cbf8 sw a4,84(a5) + 3bc09fc2: 09160737 lui a4,0x9160 + 3bc09fc6: 04f70713 addi a4,a4,79 # 916004f + 3bc09fca: cfb8 sw a4,88(a5) + 3bc09fcc: 04000837 lui a6,0x4000 + 3bc09fd0: 0407ae23 sw zero,92(a5) + 3bc09fd4: 37080713 addi a4,a6,880 # 4000370 <__BSS_SIZE__+0x3ffa760> + 3bc09fd8: d3b8 sw a4,96(a5) + 3bc09fda: 10001737 lui a4,0x10001 + 3bc09fde: c0070713 addi a4,a4,-1024 # 10000c00 + 3bc09fe2: d3f8 sw a4,100(a5) + 3bc09fe4: 00800737 lui a4,0x800 + 3bc09fe8: d7b8 sw a4,104(a5) + 3bc09fea: 10800713 li a4,264 + 3bc09fee: dbb8 sw a4,112(a5) + 3bc09ff0: 00072737 lui a4,0x72 + 3bc09ff4: dbf8 sw a4,116(a5) + 3bc09ff6: 1f00e6b7 lui a3,0x1f00e + 3bc09ffa: 08078713 addi a4,a5,128 + 3bc09ffe: c314 sw a3,0(a4) + 3bc0a000: 010b16b7 lui a3,0x10b1 + 3bc0a004: c0a68693 addi a3,a3,-1014 # 10b0c0a <__BSS_SIZE__+0x10aaffa> + 3bc0a008: c354 sw a3,4(a4) + 3bc0a00a: 0a0106b7 lui a3,0xa010 + 3bc0a00e: 11468693 addi a3,a3,276 # a010114 + 3bc0a012: c714 sw a3,8(a4) + 3bc0a014: aaaa06b7 lui a3,0xaaaa0 + 3bc0a018: 08f68693 addi a3,a3,143 # ffffffffaaaa008f <__BL2_END__+0xffffffff6ee8c87f> + 3bc0a01c: c754 sw a3,12(a4) + 3bc0a01e: 6691 lui a3,0x4 + 3bc0a020: 80068593 addi a1,a3,-2048 # 3800 <__BSS_SIZE__-0x2410> + 3bc0a024: 6505 lui a0,0x1 + 3bc0a026: cb0c sw a1,16(a4) + 3bc0a028: 80150593 addi a1,a0,-2047 # 801 <__BSS_SIZE__-0x540f> + 3bc0a02c: cb4c sw a1,20(a4) + 3bc0a02e: 074005b7 lui a1,0x7400 + 3bc0a032: 54058593 addi a1,a1,1344 # 7400540 + 3bc0a036: d30c sw a1,32(a4) + 3bc0a038: 014205b7 lui a1,0x1420 + 3bc0a03c: 50458593 addi a1,a1,1284 # 1420504 <__BSS_SIZE__+0x141a8f4> + 3bc0a040: d34c sw a1,36(a4) + 3bc0a042: 005505b7 lui a1,0x550 + 3bc0a046: 05a9 addi a1,a1,10 + 3bc0a048: d70c sw a1,40(a4) + 3bc0a04a: 005545b7 lui a1,0x554 + 3bc0a04e: c5a58593 addi a1,a1,-934 # 553c5a <__BSS_SIZE__+0x54e04a> + 3bc0a052: d74c sw a1,44(a4) + 3bc0a054: 00aaa5b7 lui a1,0xaaa + 3bc0a058: 5c358593 addi a1,a1,1475 # aaa5c3 <__BSS_SIZE__+0xaa49b3> + 3bc0a05c: db0c sw a1,48(a4) + 3bc0a05e: 00aaf5b7 lui a1,0xaaf + 3bc0a062: 0f058593 addi a1,a1,240 # aaf0f0 <__BSS_SIZE__+0xaa94e0> + 3bc0a066: db4c sw a1,52(a4) + 3bc0a068: 1e0015b7 lui a1,0x1e001 + 3bc0a06c: f0f58593 addi a1,a1,-241 # 1e000f0f + 3bc0a070: df0c sw a1,56(a4) + 3bc0a072: 000845b7 lui a1,0x84 + 3bc0a076: e1358593 addi a1,a1,-493 # 83e13 <__BSS_SIZE__+0x7e203> + 3bc0a07a: df4c sw a1,60(a4) + 3bc0a07c: 000305b7 lui a1,0x30 + 3bc0a080: 0e07a823 sw zero,240(a5) + 3bc0a084: 03358593 addi a1,a1,51 # 30033 <__BSS_SIZE__+0x2a423> + 3bc0a088: db6c sw a1,116(a4) + 3bc0a08a: 002105b7 lui a1,0x210 + 3bc0a08e: 02c58593 addi a1,a1,44 # 21002c <__BSS_SIZE__+0x20a41c> + 3bc0a092: df2c sw a1,120(a4) + 3bc0a094: 003705b7 lui a1,0x370 + 3bc0a098: 05d9 addi a1,a1,22 + 3bc0a09a: df6c sw a1,124(a4) + 3bc0a09c: 10078713 addi a4,a5,256 + 3bc0a0a0: 01072023 sw a6,0(a4) # 72000 <__BSS_SIZE__+0x6c3f0> + 3bc0a0a4: 1007a223 sw zero,260(a5) + 3bc0a0a8: 1007a623 sw zero,268(a5) + 3bc0a0ac: 1007a823 sw zero,272(a5) + 3bc0a0b0: 1007aa23 sw zero,276(a5) + 3bc0a0b4: 659d lui a1,0x7 + 3bc0a0b6: 1007ac23 sw zero,280(a5) + 3bc0a0ba: a1058593 addi a1,a1,-1520 # 6a10 <__BSS_SIZE__+0xe00> + 3bc0a0be: cf4c sw a1,28(a4) + 3bc0a0c0: 1207a023 sw zero,288(a5) + 3bc0a0c4: ef700593 li a1,-265 + 3bc0a0c8: d34c sw a1,36(a4) + 3bc0a0ca: 45fd li a1,31 + 3bc0a0cc: d70c sw a1,40(a4) + 3bc0a0ce: 4585 li a1,1 + 3bc0a0d0: d74c sw a1,44(a4) + 3bc0a0d2: 10100593 li a1,257 + 3bc0a0d6: db0c sw a1,48(a4) + 3bc0a0d8: db50 sw a2,52(a4) + 3bc0a0da: 4851 li a6,20 + 3bc0a0dc: 03072c23 sw a6,56(a4) + 3bc0a0e0: 1407a023 sw zero,320(a5) + 3bc0a0e4: 1407a223 sw zero,324(a5) + 3bc0a0e8: 80850e13 addi t3,a0,-2040 + 3bc0a0ec: 05c72423 sw t3,72(a4) + 3bc0a0f0: 1407a623 sw zero,332(a5) + 3bc0a0f4: 4815 li a6,5 + 3bc0a0f6: 05072823 sw a6,80(a4) + 3bc0a0fa: cb6c sw a1,84(a4) + 3bc0a0fc: 1407ac23 sw zero,344(a5) + 3bc0a100: 003335b7 lui a1,0x333 + 3bc0a104: 1407ae23 sw zero,348(a5) + 3bc0a108: 33158593 addi a1,a1,817 # 333331 <__BSS_SIZE__+0x32d721> + 3bc0a10c: 1607a223 sw zero,356(a5) + 3bc0a110: d72c sw a1,104(a4) + 3bc0a112: 1607a623 sw zero,364(a5) + 3bc0a116: 1607a823 sw zero,368(a5) + 3bc0a11a: db70 sw a2,116(a4) + 3bc0a11c: 00020637 lui a2,0x20 + 3bc0a120: 18078713 addi a4,a5,384 + 3bc0a124: 0641 addi a2,a2,16 + 3bc0a126: c310 sw a2,0(a4) + 3bc0a128: 1807a223 sw zero,388(a5) + 3bc0a12c: 00090637 lui a2,0x90 + 3bc0a130: 1807a423 sw zero,392(a5) + 3bc0a134: 40060613 addi a2,a2,1024 # 90400 <__BSS_SIZE__+0x8a7f0> + 3bc0a138: c750 sw a2,12(a4) + 3bc0a13a: 00021637 lui a2,0x21 + 3bc0a13e: 20e60613 addi a2,a2,526 # 2120e <__BSS_SIZE__+0x1b5fe> + 3bc0a142: cb10 sw a2,16(a4) + 3bc0a144: 2007a023 sw zero,512(a5) + 3bc0a148: 20078713 addi a4,a5,512 + 3bc0a14c: 44000613 li a2,1088 + 3bc0a150: c350 sw a2,4(a4) + 3bc0a152: 2007a423 sw zero,520(a5) + 3bc0a156: 2207a023 sw zero,544(a5) + 3bc0a15a: d350 sw a2,36(a4) + 3bc0a15c: 2207a423 sw zero,552(a5) + 3bc0a160: 4007a023 sw zero,1024(a5) + 3bc0a164: 4007a223 sw zero,1028(a5) + 3bc0a168: 4007a423 sw zero,1032(a5) + 3bc0a16c: 4007a623 sw zero,1036(a5) + 3bc0a170: 40078713 addi a4,a5,1024 + 3bc0a174: 001005b7 lui a1,0x100 + 3bc0a178: e4b7558b swd a1,a1,(a4),2,3 + 3bc0a17c: 4609 li a2,2 + 3bc0a17e: cf10 sw a2,24(a4) + 3bc0a180: 04068693 addi a3,a3,64 + 3bc0a184: cf54 sw a3,28(a4) + 3bc0a186: 000416b7 lui a3,0x41 + 3bc0a18a: 50078713 addi a4,a5,1280 + 3bc0a18e: 0685 addi a3,a3,1 + 3bc0a190: e0b7568b swd a3,a1,(a4),0,3 + 3bc0a194: 5007a423 sw zero,1288(a5) + 3bc0a198: 5007a623 sw zero,1292(a5) + 3bc0a19c: 4811 li a6,4 + 3bc0a19e: 01072823 sw a6,16(a4) + 3bc0a1a2: 5007aa23 sw zero,1300(a5) + 3bc0a1a6: 5007ac23 sw zero,1304(a5) + 3bc0a1aa: 5007ae23 sw zero,1308(a5) + 3bc0a1ae: 460d li a2,3 + 3bc0a1b0: d310 sw a2,32(a4) + 3bc0a1b2: c334 sw a3,64(a4) + 3bc0a1b4: c36c sw a1,68(a4) + 3bc0a1b6: 5407a423 sw zero,1352(a5) + 3bc0a1ba: 5407a623 sw zero,1356(a5) + 3bc0a1be: 05072823 sw a6,80(a4) + 3bc0a1c2: 5407aa23 sw zero,1364(a5) + 3bc0a1c6: 5407ac23 sw zero,1368(a5) + 3bc0a1ca: 5407ae23 sw zero,1372(a5) + 3bc0a1ce: d330 sw a2,96(a4) + 3bc0a1d0: 08001737 lui a4,0x8001 + 3bc0a1d4: 90070793 addi a5,a4,-1792 # 8000900 + 3bc0a1d8: 40000693 li a3,1024 + 3bc0a1dc: c394 sw a3,0(a5) + 3bc0a1de: d7d4 sw a3,44(a5) + 3bc0a1e0: db94 sw a3,48(a5) + 3bc0a1e2: dbd4 sw a3,52(a5) + 3bc0a1e4: df94 sw a3,56(a5) + 3bc0a1e6: 94072023 sw zero,-1728(a4) + 3bc0a1ea: 96072823 sw zero,-1680(a4) + 3bc0a1ee: 96072a23 sw zero,-1676(a4) + 3bc0a1f2: 080806b7 lui a3,0x8080 + 3bc0a1f6: 96072c23 sw zero,-1672(a4) + 3bc0a1fa: 40468693 addi a3,a3,1028 # 8080404 + 3bc0a1fe: 08081837 lui a6,0x8081 + 3bc0a202: dff4 sw a3,124(a5) + 3bc0a204: 80880813 addi a6,a6,-2040 # 8080808 + 3bc0a208: 98070793 addi a5,a4,-1664 + 3bc0a20c: 06400637 lui a2,0x6400 + 3bc0a210: 0107a023 sw a6,0(a5) + 3bc0a214: 64060613 addi a2,a2,1600 # 6400640 + 3bc0a218: a0070793 addi a5,a4,-1536 + 3bc0a21c: e0c7d60b swd a2,a2,(a5),0,3 + 3bc0a220: e2c7d60b swd a2,a2,(a5),1,3 + 3bc0a224: 64000f93 li t6,1600 + 3bc0a228: 01f7a823 sw t6,16(a5) + 3bc0a22c: 0b000f37 lui t5,0xb000 + 3bc0a230: 0a001337 lui t1,0xa001 + 3bc0a234: 01e7aa23 sw t5,20(a5) + 3bc0a238: 90030313 addi t1,t1,-1792 # a000900 + 3bc0a23c: 000408b7 lui a7,0x40 + 3bc0a240: 0067ac23 sw t1,24(a5) + 3bc0a244: 60088893 addi a7,a7,1536 # 40600 <__BSS_SIZE__+0x3a9f0> + 3bc0a248: 004006b7 lui a3,0x400 + 3bc0a24c: 04068693 addi a3,a3,64 # 400040 <__BSS_SIZE__+0x3fa430> + 3bc0a250: 0117ae23 sw a7,28(a5) + 3bc0a254: d394 sw a3,32(a5) + 3bc0a256: d3d4 sw a3,36(a5) + 3bc0a258: d794 sw a3,40(a5) + 3bc0a25a: d7d4 sw a3,44(a5) + 3bc0a25c: 04000e93 li t4,64 + 3bc0a260: 03d7a823 sw t4,48(a5) + 3bc0a264: a2072a23 sw zero,-1484(a4) + 3bc0a268: 03c7ac23 sw t3,56(a5) + 3bc0a26c: 0307ae23 sw a6,60(a5) + 3bc0a270: c3b0 sw a2,64(a5) + 3bc0a272: c3f0 sw a2,68(a5) + 3bc0a274: c7b0 sw a2,72(a5) + 3bc0a276: c7f0 sw a2,76(a5) + 3bc0a278: 05f7a823 sw t6,80(a5) + 3bc0a27c: 05e7aa23 sw t5,84(a5) + 3bc0a280: 0467ac23 sw t1,88(a5) + 3bc0a284: 0517ae23 sw a7,92(a5) + 3bc0a288: d3b4 sw a3,96(a5) + 3bc0a28a: d3f4 sw a3,100(a5) + 3bc0a28c: d7b4 sw a3,104(a5) + 3bc0a28e: d7f4 sw a3,108(a5) + 3bc0a290: 07d7a823 sw t4,112(a5) + 3bc0a294: a6072a23 sw zero,-1420(a4) + 3bc0a298: 07c7ac23 sw t3,120(a5) + 3bc0a29c: 0707ae23 sw a6,124(a5) + 3bc0a2a0: b0072023 sw zero,-1280(a4) + 3bc0a2a4: b0072223 sw zero,-1276(a4) + 3bc0a2a8: b0070793 addi a5,a4,-1280 + 3bc0a2ac: 00404837 lui a6,0x404 + 3bc0a2b0: 0107a423 sw a6,8(a5) + 3bc0a2b4: b4050513 addi a0,a0,-1216 + 3bc0a2b8: c7c8 sw a0,12(a5) + 3bc0a2ba: 000816b7 lui a3,0x81 + 3bc0a2be: b0072823 sw zero,-1264(a4) + 3bc0a2c2: e0e68693 addi a3,a3,-498 # 80e0e <__BSS_SIZE__+0x7b1fe> + 3bc0a2c6: cbd4 sw a3,20(a5) + 3bc0a2c8: b0072c23 sw zero,-1256(a4) + 3bc0a2cc: b0072e23 sw zero,-1252(a4) + 3bc0a2d0: 40400637 lui a2,0x40400 + 3bc0a2d4: d390 sw a2,32(a5) + 3bc0a2d6: 05c1 addi a1,a1,16 + 3bc0a2d8: d3cc sw a1,36(a5) + 3bc0a2da: b2072823 sw zero,-1232(a4) + 3bc0a2de: b2072a23 sw zero,-1228(a4) + 3bc0a2e2: 0307ac23 sw a6,56(a5) + 3bc0a2e6: dfc8 sw a0,60(a5) + 3bc0a2e8: b4072023 sw zero,-1216(a4) + 3bc0a2ec: c3f4 sw a3,68(a5) + 3bc0a2ee: b4072423 sw zero,-1208(a4) + 3bc0a2f2: b4072623 sw zero,-1204(a4) + 3bc0a2f6: cbb0 sw a2,80(a5) + 3bc0a2f8: cbec sw a1,84(a5) + 3bc0a2fa: 8082 ret + 3bc0a2fc: 0000 unimp + ... + +000000003bc0a300 : + 3bc0a300: 3032 3232 312d 2d32 3032 3254 3a31 3635 2022-12-20T21:56 + 3bc0a310: 313a 2b32 3830 303a 0030 0000 0000 0000 :12+08:00....... + +000000003bc0a320 : + 3bc0a320: 624a 3832 3967 673a 6536 3835 6565 0031 Jb28g9:g6e58ee1. + 3bc0a330: 3201 504f 4e45 4253 3a49 6e20 7865 5f74 .2OPENSBI: next_ + 3bc0a340: 6461 7264 303d 2578 786c 6120 6772 3d31 addr=0x%lx arg1= + 3bc0a350: 7830 6c25 0078 0000 7830 0000 60b6 ffff 0x%lx...0x...`.. + 3bc0a360: 605c ffff 605c ffff 605c ffff 605c ffff \`..\`..\`..\`.. + 3bc0a370: 60b6 ffff 605c ffff 605c ffff 616a ffff .`..\`..\`..ja.. + 3bc0a380: 605c ffff 605c ffff 605c ffff 6112 ffff \`..\`..\`...a.. + 3bc0a390: 605c ffff 605c ffff 60f2 ffff 605c ffff \`..\`...`..\`.. + 3bc0a3a0: 6170 ffff 605c ffff 605c ffff 6146 ffff pa..\`..\`..Fa.. + 3bc0a3b0: 605c ffff 6164 ffff 3001 4520 523a 5345 \`..da...0 E:RES + 3bc0a3c0: 5445 253a 3a73 6425 000a 0000 0000 0000 ET:%s:%d........ + 3bc0a3d0: 3001 4520 723a 3d61 7830 6c25 0a78 0000 .0 E:ra=0x%lx... + 3bc0a3e0: 6170 696e 0063 0000 3201 5352 2e43 000a panic....2RSC... + 3bc0a3f0: 3201 4c50 534c 0a2e 0000 0000 0000 0000 .2PLLS.......... + 3bc0a400: 3201 4c50 454c 0a2e 0000 0000 0000 0000 .2PLLE.......... + 3bc0a410: 3201 7355 2065 6e69 6574 6e72 6c61 3320 .2Use internal 3 + 3bc0a420: 6b32 000a 0000 0000 3201 7473 6f5f 5f6e 2k.......2st_on_ + 3bc0a430: 6572 7361 6e6f 253d 0a78 0000 0000 0000 reason=%x....... + 3bc0a440: 3201 7473 6f5f 6666 725f 6165 6f73 3d6e .2st_off_reason= + 3bc0a450: 7825 000a 0000 0000 0000 249f 1746 245d %x.........$F.]$ + 3bc0a460: 1746 245d aaab 24aa 8201 0012 8101 0018 F.]$...$........ + 3bc0a470: 8201 0030 8101 0016 c906 a55a 0024 0000 ..0.......Z.$... + 3bc0a480: 0000 83a0 0000 0140 ......@. + +000000003bc0a488 : + 3bc0a488: 3130 3332 3534 3736 3938 6261 6463 6665 0123456789abcdef + 3bc0a498: 6867 6a69 6c6b 6e6d 706f 7271 7473 7675 ghijklmnopqrstuv + 3bc0a4a8: 7877 7a79 0000 0000 0101 0101 0101 0101 wxyz............ + 3bc0a4b8: 3301 4920 4c3a 4549 252f 2f64 7025 302f .3 I:LIE/%d/%p/0 + 3bc0a4c8: 2578 2f78 6c25 2e75 000a 0000 0000 0000 x%x/%lu......... + 3bc0a4d8: 3201 3250 2f53 7830 6c25 2f78 7025 0a2e .2P2S/0x%lx/%p.. + ... + 3bc0a4f0: 3101 5720 4c3a 3250 4e5f 4d4f 4741 4349 .1 W:LP2_NOMAGIC + 3bc0a500: 000a 0000 0000 0000 3001 4520 703a 7261 .........0 E:par + 3bc0a510: 6d61 5f32 6b63 7573 206d 3028 2578 2f78 am2_cksum (0x%x/ + 3bc0a520: 7830 7825 0a29 0000 3201 3250 2e45 000a 0x%x)....2P2E... + 3bc0a530: 3201 5044 2f53 7830 7825 302f 2578 2e78 .2DPS/0x%x/0x%x. + 3bc0a540: 000a 0000 0000 0000 3001 4520 643a 7264 .........0 E:ddr + 3bc0a550: 705f 7261 6d61 635f 736b 6d75 2820 7830 _param_cksum (0x + 3bc0a560: 7825 302f 2578 2978 000a 0000 0000 0000 %x/0x%x)........ + 3bc0a570: 3201 5044 2e45 000a 3101 5720 443a 204c .2DPE....1 W:DL + 3bc0a580: 6163 636e 6c65 656c 2e64 4c20 616f 2064 cancelled. Load + 3bc0a590: 6c66 7361 2e68 2820 6425 2e29 000a 0000 flash. (%d)..... + 3bc0a5a0: 3001 4520 463a 6961 656c 2064 6f74 6c20 .0 E:Failed to l + 3bc0a5b0: 616f 2064 4444 2052 6170 6172 206d 2528 oad DDR param (% + 3bc0a5c0: 2964 0a2e 0000 0000 3201 3243 2f53 7830 d).......2C2S/0x + 3bc0a5d0: 7825 302f 2578 2f78 7830 7825 0a2e 0000 %x/0x%x/0x%x.... + 3bc0a5e0: 3201 6f4e 4320 3039 4c36 6920 616d 6567 .2No C906L image + 3bc0a5f0: 0a2e 0000 0000 0000 3001 4520 623a 636c .........0 E:blc + 3bc0a600: 5f70 6e32 5f64 7572 616e 6464 2072 3028 p_2nd_runaddr (0 + 3bc0a610: 2578 2978 6920 2073 6f6e 2074 6e69 4420 x%x) is not in D + 3bc0a620: 4152 2e4d 000a 0000 3001 4520 623a 636c RAM......0 E:blc + 3bc0a630: 5f70 6e32 5f64 6973 657a 2820 7830 7825 p_2nd_size (0x%x + 3bc0a640: 2029 7369 6e20 746f 6920 206e 5244 4d41 ) is not in DRAM + 3bc0a650: 0a2e 0000 0000 0000 3001 4520 623a 636c .........0 E:blc + 3bc0a660: 5f70 6e32 5f64 6b63 7573 206d 3028 2578 p_2nd_cksum (0x% + 3bc0a670: 2f78 7830 7825 0a29 0000 0000 0000 0000 x/0x%x)......... + 3bc0a680: 3001 4520 763a 7265 6669 2079 6c62 7063 .0 E:verify blcp + 3bc0a690: 3220 646e 2820 6425 0a29 0000 0000 0000 2nd (%d)....... + 3bc0a6a0: 3201 3243 2e45 000a 3201 534d 302f 2578 .2C2E....2MS/0x% + 3bc0a6b0: 2f78 7830 7825 302f 2578 2e78 000a 0000 x/0x%x/0x%x..... + 3bc0a6c0: 3201 6f4e 6d20 6e6f 7469 726f 0a2e 0000 .2No monitor.... + 3bc0a6d0: 3001 4520 6d3a 6e6f 7469 726f 725f 6e75 .0 E:monitor_run + 3bc0a6e0: 6461 7264 2820 7830 7825 2029 7369 6e20 addr (0x%x) is n + 3bc0a6f0: 746f 6920 206e 5244 4d41 0a2e 0000 0000 ot in DRAM...... + 3bc0a700: 3001 4520 6d3a 6e6f 7469 726f 735f 7a69 .0 E:monitor_siz + 3bc0a710: 2065 3028 2578 2978 6920 2073 6f6e 2074 e (0x%x) is not + 3bc0a720: 6e69 4420 4152 2e4d 000a 0000 0000 0000 in DRAM......... + 3bc0a730: 3001 4520 6d3a 6e6f 7469 726f 635f 736b .0 E:monitor_cks + 3bc0a740: 6d75 2820 7830 7825 302f 2578 2978 000a um (0x%x/0x%x).. + 3bc0a750: 3001 4520 763a 7265 6669 2079 6f6d 696e .0 E:verify moni + 3bc0a760: 6f74 2072 2528 2964 000a 0000 0000 0000 tor (%d)........ + 3bc0a770: 3201 454d 0a2e 0000 3201 324c 302f 2578 .2ME.....2L2/0x% + 3bc0a780: 2e78 000a 0000 0000 3201 324c 302f 2578 x........2L2/0x% + 3bc0a790: 2f78 7830 7825 302f 2578 786c 302f 2578 x/0x%x/0x%lx/0x% + 3bc0a7a0: 2f78 7830 7825 000a 3201 4f43 504d 252f x/0x%x...2COMP/% + 3bc0a7b0: 2e64 000a 0000 0000 3001 4520 6c3a 616f d........0 E:loa + 3bc0a7c0: 6564 5f72 6e32 5f64 6b63 7573 206d 3028 der_2nd_cksum (0 + 3bc0a7d0: 2578 2f78 7830 7825 0a29 0000 0000 0000 x%x/0x%x)....... + 3bc0a7e0: 3001 4520 763a 7265 6669 2079 6f6c 6461 .0 E:verify load + 3bc0a7f0: 7265 3220 646e 2820 6425 0a29 0000 0000 er 2nd (%d)..... + 3bc0a800: 3001 4520 463a 6961 656c 2064 6f74 6420 .0 E:Failed to d + 3bc0a810: 6365 6d6f 7270 7365 2073 6f6c 6461 7265 ecompress loader + 3bc0a820: 325f 646e 2820 6425 252f 756c 0a29 0000 _2nd (%d/%lu)... + 3bc0a830: 3201 6f4c 6461 7265 325f 646e 6c20 616f .2Loader_2nd loa + 3bc0a840: 6564 2e64 000a 0000 3001 4520 463a 6961 ded......0 E:Fai + 3bc0a850: 656c 2064 6f74 6c20 616f 2064 6572 7473 led to load rest + 3bc0a860: 2820 6425 2e29 000a 3201 754a 706d 7420 (%d)....2Jump t + 3bc0a870: 206f 6f6d 696e 6f74 2072 7461 3020 2578 o monitor at 0x% + 3bc0a880: 786c 0a2e 0000 0000 3201 754a 706d 7420 lx.......2Jump t + 3bc0a890: 206f 6f6c 6461 7265 325f 646e 6120 2074 o loader_2nd at + 3bc0a8a0: 7830 6c25 2e78 000a 3201 460a 4253 204c 0x%lx....2.FSBL + 3bc0a8b0: 7325 253a 0a73 0000 3301 4920 733a 5f77 %s:%s....3 I:sw_ + 3bc0a8c0: 6e69 6f66 303d 2578 0a78 0000 0000 0000 info=0x%x....... + 3bc0a8d0: 3301 4920 663a 7069 705f 7261 6d61 3a31 .3 I:fip_param1: + 3bc0a8e0: 7020 7261 6d61 635f 736b 6d75 303d 2578 param_cksum=0x% + 3bc0a8f0: 2078 6170 6172 326d 6c5f 616f 6164 6464 x param2_loadadd + 3bc0a900: 3d72 7830 7825 000a 3301 4920 433a 5f50 r=0x%x...3 I:CP_ + 3bc0a910: 5453 5441 5f45 4552 3d47 7830 7825 000a STATE_REG=0x%x.. + 3bc0a920: 3201 4c42 2032 6e65 2e64 000a 0000 0000 .2BL2 end....... + 3bc0a930: 5643 444c 3230 000a 3001 4520 253a 2073 CVLD02...0 E:%s + 3bc0a940: 6163 276e 2074 6c61 6f6c 2063 6c25 2075 can't alloc %lu + 3bc0a950: 7962 6574 0a73 0000 3001 4520 253a 3a73 bytes....0 E:%s: + 3bc0a960: 6420 7473 735f 7a69 2065 7369 4e20 4c55 dst_size is NUL + 3bc0a970: 2e4c 000a 0000 0000 3301 4920 4c3a 4d5a L........3 I:LZM + 3bc0a980: 3141 252f 2f70 7025 0a2e 0000 0000 0000 A1/%p/%p........ + 3bc0a990: 3301 4920 4c3a 4d5a 3241 752f 636e 6d6f .3 I:LZMA2/uncom + 3bc0a9a0: 5f70 6973 657a 303d 2578 786c 000a 0000 p_size=0x%lx.... + 3bc0a9b0: 3001 4520 4c3a 6d7a 4461 6365 646f 2065 .0 E:LzmaDecode + 3bc0a9c0: 5245 4f52 3a52 2520 2064 7328 6174 7574 ERROR: %d (statu + 3bc0a9d0: 3d73 6425 0a29 0000 3301 4920 4c3a 4d5a s=%d)....3 I:LZM + 3bc0a9e0: 3941 302f 2578 786c 000a 0000 0000 0000 A9/0x%lx........ + 3bc0a9f0: 3301 4920 4c3a 345a 252f 2f70 7025 0a2e .3 I:LZ4/%p/%p.. + ... + 3bc0aa08: 3001 4520 643a 7463 5378 6174 7574 3d73 .0 E:dctxStatus= + 3bc0aa18: 6c25 0a75 0000 0000 3301 4920 643a 7473 %lu......3 I:dst + 3bc0aa28: 735f 7a69 3d65 6c25 2075 7273 5f63 6973 _size=%lu src_si + 3bc0aa38: 657a 253d 756c 7220 7465 253d 647a 000a ze=%lu ret=%zd.. + 3bc0aa48: 3001 4520 4c3a 345a 5f46 6564 6f63 706d .0 E:LZ4F_decomp + 3bc0aa58: 6572 7373 253d 756c 000a 0000 0000 0000 ress=%lu........ + 3bc0aa68: 3201 4344 2f50 7025 302f 2578 786c 252f .2DCP/%p/0x%lx/% + 3bc0aa78: 2f70 7830 6c25 2f78 6425 0a2e 0000 0000 p/0x%lx/%d...... + 3bc0aa88: 3201 4344 2f50 7830 6c25 2f78 6425 0a2e .2DCP/0x%lx/%d.. + ... + +000000003bc0aaa0 <__func__.0>: + 3bc0aaa0: 7a53 6c41 6f6c 0063 SzAlloc. + +000000003bc0aaa8 <__func__.1>: + 3bc0aaa8: 6564 6f63 706d 6572 7373 6c5f 6d7a 0061 decompress_lzma. + 3bc0aab8: 3301 4920 413a 7070 696c 6163 6974 6e6f .3 I:Application + 3bc0aac8: 203a 7325 000a 0000 3301 4920 753a 6273 : %s.....3 I:usb + 3bc0aad8: 2520 0a73 0000 0000 3201 5355 4242 002e %s......2USBB.. + 3bc0aae8: 3301 4920 433a 4956 555f 4253 425f 4552 .3 I:CVI_USB_BRE + 3bc0aaf8: 4b41 000a 0000 0000 3201 5355 4b42 002e AK.......2USBK.. + 3bc0ab08: 3301 4920 663a 616c 4567 746e 7265 4c44 .3 I:flagEnterDL + 3bc0ab18: 2520 0a64 0000 0000 3301 4920 4d3a 4741 %d......3 I:MAG + 3bc0ab28: 4349 4e20 4d55 4e20 544f 4d20 5441 4843 IC NUM NOT MATCH + 3bc0ab38: 000a 0000 0000 0000 3201 5355 4b42 2e46 .........2USBKF. + ... + 3bc0ab50: 3301 4920 493a 204f 6241 726f 2074 2121 .3 I:IO Abort !! + 3bc0ab60: 2121 0a21 0000 0000 3301 4920 723a 6365 !!!......3 I:rec + 3bc0ab70: 7069 6569 746e 7420 7261 6567 2074 6163 ipient target ca + 3bc0ab80: 6e6e 746f 6220 2065 6e69 6574 6672 6361 nnot be interfac + 3bc0ab90: 2165 000a 0000 0000 3201 5355 5042 302f e!.......2USBP/0 + 3bc0aba0: 2578 2e78 0000 0000 3301 4920 663a 7374 x%x......3 I:fts + 3bc0abb0: 5b6e 6425 205d 203d 7825 000a 0000 0000 n[%d] = %x...... + 3bc0abc0: 3301 4920 633a 6372 7620 6c61 3d20 2520 .3 I:crc val = % + 3bc0abd0: 0a78 0000 0000 0000 3301 4920 743a 2073 x........3 I:ts + 3bc0abe0: 6176 206c 203d 7825 000a 0000 0000 0000 val = %x........ + 3bc0abf0: 3201 5355 5342 252f 2e73 0000 0000 0000 .2USBS/%s....... + 3bc0ac00: 3231 3433 3635 3837 4139 4342 0000 0000 123456789ABC.... + 3bc0ac10: 7065 6931 2d6e 7562 6b6c 0000 0000 0000 ep1in-bulk...... + 3bc0ac20: 7065 6f32 7475 622d 6c75 006b 0000 0000 ep2out-bulk..... + 3bc0ac30: 7065 6933 2d6e 6e69 0074 0000 7074 ffff ep3in-int...tp.. + 3bc0ac40: 7246 ffff 70da ffff 710c ffff 710c ffff Fr...p...q...q.. + 3bc0ac50: 7232 ffff 7246 ffff 710c ffff 710c ffff 2r..Fr...q...q.. + 3bc0ac60: 710c ffff 710c ffff 710c ffff 710c ffff .q...q...q...q.. + 3bc0ac70: 710c ffff 7206 ffff 3301 4920 623a 6c75 .q...r...3 I:bul + 3bc0ac80: 426b 6675 6c41 6f6c 3a63 2520 0a70 0000 kBufAlloc: %p... + 3bc0ac90: 3301 4920 633a 646d 7542 4166 6c6c 636f .3 I:cmdBufAlloc + 3bc0aca0: 203a 7025 000a 0000 3301 4920 633a 3062 : %p.....3 I:cb0 + 3bc0acb0: 625f 6675 203a 7025 000a 0000 0000 0000 _buf: %p........ + 3bc0acc0: 3301 4920 633a 3162 625f 6675 203a 7025 .3 I:cb1_buf: %p + 3bc0acd0: 000a 0000 0000 0000 3301 4920 633a 3262 .........3 I:cb2 + 3bc0ace0: 625f 6675 203a 7025 000a 0000 0000 0000 _buf: %p........ + 3bc0acf0: 3301 4920 653a 3070 7542 6666 6c41 6f6c .3 I:ep0BuffAllo + 3bc0ad00: 3a63 2520 0a70 0000 3301 4920 723a 7073 c: %p....3 I:rsp + 3bc0ad10: 625f 6675 203a 7025 000a 0000 0000 0000 _buf: %p........ + 3bc0ad20: 3301 4920 613a 6d63 625f 6675 203a 7025 .3 I:acm_buf: %p + 3bc0ad30: 000a 0000 0000 0000 3301 4920 733a 7465 .........3 I:set + 3bc0ad40: 7075 625f 6675 203a 7025 000a 0000 0000 up_buf: %p...... + 3bc0ad50: 3301 4920 683a 6e61 6c64 7265 203a 7025 .3 I:handler: %p + 3bc0ad60: 000a 0000 0000 0000 5643 5449 4b45 0000 ........CVITEK.. + 3bc0ad70: 5355 2042 6f43 206d 6f50 7472 0000 0000 USB Com Port.... + 3bc0ad80: 3301 4920 553a 4253 7620 7562 2073 7369 .3 I:USB vbus is + 3bc0ad90: 6f20 6666 000a 0000 3301 4920 743a 6d69 off.....3 I:tim + 3bc0ada0: 6f65 7475 695f 5f6e 736d 2520 0a64 0000 eout_in_ms %d... + 3bc0adb0: 3201 5355 4342 002e 3301 4920 553a 4253 .2USBC...3 I:USB + 3bc0adc0: 7020 6c6f 696c 676e 7420 6d69 6f65 7475 polling timeout + 3bc0add0: 695f 5f6e 736d 203a 6425 000a 0000 0000 _in_ms: %d...... + 3bc0ade0: 3301 4920 473a 6461 6567 2074 6552 6967 .3 I:Gadget Regi + 3bc0adf0: 7473 7265 4620 6961 0a6c 0000 0000 0000 ster Fail....... + 3bc0ae00: 3301 4920 473a 6461 6567 2074 626f 656a .3 I:Gadget obje + 3bc0ae10: 7463 6e20 746f 6520 6978 7473 6465 0a21 ct not existed!. + ... + 3bc0ae28: 3201 5355 4542 2e46 0000 0000 0000 0000 .2USBEF......... + 3bc0ae38: 3301 4920 633a 6e6f 656e 7463 6f69 206e .3 I:connection + 3bc0ae48: 7073 6565 3a64 2520 0a64 0000 0000 0000 speed: %d....... + 3bc0ae58: 3201 5355 5742 252f 2e64 0000 0000 0000 .2USBW/%d....... + 3bc0ae68: 3201 5355 4442 002e 3201 5355 4c42 002e .2USBD...2USBL.. + 3bc0ae78: 3001 4520 553a 4253 4520 7272 726f 2520 .0 E:USB Error % + 3bc0ae88: 0a75 0000 0000 0000 5454 0059 0000 0000 u.......TTY..... + +000000003bc0ae98 <__func__.0>: + 3bc0ae98: 6962 646e 0000 0000 bind.... + +000000003bc0aea0 <__func__.1>: + 3bc0aea0: 6e75 6962 646e 0000 unbind.. + +000000003bc0aea8 <__func__.4>: + 3bc0aea8: 6964 6373 6e6f 656e 7463 0000 0000 0000 disconnect...... + +000000003bc0aeb8 <__func__.5>: + 3bc0aeb8: 6572 6573 0074 0000 6177 6e72 6e69 2167 reset...warning! + 3bc0aec8: 6620 6572 2065 6e75 6966 696e 6873 6465 free unfinished + 3bc0aed8: 7220 7165 6575 7473 0a21 0000 0000 0000 request!....... + 3bc0aee8: 7325 203a 4820 4e41 2147 4120 4248 4920 %s: HANG! AHB I + 3bc0aef8: 6c64 2065 5247 4353 4c54 000a 0000 0000 dle GRSCTL...... + 3bc0af08: 7325 203a 6974 656d 756f 2074 6c66 7375 %s: timeout flus + 3bc0af18: 6968 676e 6620 6669 206f 4728 5352 4354 hing fifo (GRSTC + 3bc0af28: 4c54 253d 3830 2978 000a 0000 0000 0000 TL=%08x)........ + 3bc0af38: 7325 203a 6974 656d 756f 2074 6c66 7375 %s: timeout flus + 3bc0af48: 6968 676e 6620 6669 736f 2820 7267 7473 hing fifos (grst + 3bc0af58: 7463 206c 203d 7830 7825 0a29 0000 0000 ctl = 0x%x)..... + 3bc0af68: 7325 203a 6163 6c6c 6620 726f 6520 3070 %s: call for ep0 + 3bc0af78: 6f2d 7475 000a 0000 7325 203a 6974 656d -out....%s: time + 3bc0af88: 756f 2074 4944 5045 4e49 2e54 414e 454b out DIEPINT.NAKE + 3bc0af98: 4646 000a 0000 0000 7325 203a 6974 656d FF......%s: time + 3bc0afa8: 756f 2074 4947 544e 5453 2e53 4f47 5455 out GINTSTS.GOUT + 3bc0afb8: 414e 454b 4646 000a 7325 203a 6974 656d NAKEFF..%s: time + 3bc0afc8: 756f 2074 4f44 5045 5443 2e4c 5045 6944 out DOEPCTL.EPDi + 3bc0afd8: 6173 6c62 0a65 0000 7325 2928 4820 4e41 sable...%s() HAN + 3bc0afe8: 2147 5320 666f 2074 6552 6573 2074 5247 G! Soft Reset GR + 3bc0aff8: 5453 5443 3d4c 3025 0a78 0000 0000 0000 STCTL=%0x....... + 3bc0b008: 7325 2928 4820 4e41 2147 5320 666f 2074 %s() HANG! Soft + 3bc0b018: 2e34 2032 6552 6573 2074 5247 5453 5443 4.2 Reset GRSTCT + 3bc0b028: 3d4c 3025 0a78 0000 7325 2928 4820 4e41 L=%0x...%s() HAN + 3bc0b038: 2147 4120 4248 4920 6c64 2065 5247 5453 G! AHB Idle GRST + 3bc0b048: 5443 3d4c 3025 0a78 0000 0000 0000 0000 CTL=%0x......... + 3bc0b058: 6973 657a 6620 726f 6820 6e61 6c64 7265 size for handler + 3bc0b068: 6920 2073 6f74 206f 6173 6c6d 206c 2528 is too samll (% + 3bc0b078: 646c 202c 6425 0a29 0000 0000 0000 0000 ld, %d)......... + 3bc0b088: 6f4e 6d20 6d65 726f 2079 7661 6961 616c No memory availa + 3bc0b098: 6c62 2065 6f66 2072 4455 2143 000a 0000 ble for UDC!.... + +000000003bc0b0a8 <__func__.0>: + 3bc0b0a8: 7764 3263 655f 5f70 7473 706f 785f 6566 dwc2_ep_stop_xfe + 3bc0b0b8: 0072 0000 0000 0000 r....... + +000000003bc0b0c0 <__func__.1>: + 3bc0b0c0: 645f 6377 5f32 7065 645f 7369 6261 656c _dwc2_ep_disable + ... + +000000003bc0b0d8 <__func__.2>: + 3bc0b0d8: 7764 3263 725f 6365 6e6f 6966 5f67 7375 dwc2_reconfig_us + 3bc0b0e8: 6462 0000 0000 0000 bd...... + +000000003bc0b0f0 <__func__.3>: + 3bc0b0f0: 7764 3263 685f 6f73 6774 745f 6678 6669 dwc2_hsotg_txfif + 3bc0b100: 5f6f 6c66 7375 0068 o_flush. + +000000003bc0b108 <__func__.4>: + 3bc0b108: 7764 3263 685f 6f73 6774 695f 696e 5f74 dwc2_hsotg_init_ + 3bc0b118: 6966 6f66 0000 0000 fifo.... + +000000003bc0b120 : + 3bc0b120: 7764 3263 752d 6364 0000 0000 0000 0000 dwc2-udc........ + +000000003bc0b130 : + ... + 3bc0b138: 2ac2 3bc0 0000 0000 0000 0000 0000 0000 .*.;............ + ... + 3bc0b158: 27ac 3bc0 0000 0000 0000 0000 0000 0000 .'.;............ + ... + +000000003bc0b178 : + 3bc0b178: 7065 2d30 6f63 746e 6f72 006c 0000 0000 ep0-control..... + +000000003bc0b188 : + 3bc0b188: 7065 6931 2d6e 7562 6b6c 0000 0000 0000 ep1in-bulk...... + +000000003bc0b198 : + 3bc0b198: 7065 6f32 7475 622d 6c75 006b 0000 0000 ep2out-bulk..... + +000000003bc0b1a8 : + 3bc0b1a8: 7065 6933 2d6e 6e69 0074 0000 0000 0000 ep3in-int....... + 3bc0b1b8: 7263 2d71 623e 6572 7571 7365 3a74 7830 crq->brequest:0x + 3bc0b1c8: 7825 000a 8c86 ffff 8d62 ffff 8eb4 ffff %x......b....... + 3bc0b1d8: 8e06 ffff 8eb4 ffff 8c1a ffff 8c68 ffff ............h... + 3bc0b1e8: 8eb4 ffff 8c7c ffff 8c50 ffff 8eb4 ffff ....|...P....... + 3bc0b1f8: 8c72 ffff 0000 0000 7572 206e 6574 7473 r.......run test + 3bc0b208: 6d20 646f 2065 6425 000a 0000 0000 0000 mode %d........ + 3bc0b218: 3301 4920 553a 4253 4956 2f44 7825 0a2e .3 I:USBVID/%x.. + ... + +000000003bc0b230 : + 3bc0b230: 0000 1021 2042 3063 4084 50a5 60c6 70e7 ..!.B c0.@.P.`.p + 3bc0b240: 8108 9129 a14a b16b c18c d1ad e1ce f1ef ..).J.k......... + 3bc0b250: 1231 0210 3273 2252 52b5 4294 72f7 62d6 1...s2R".R.B.r.b + 3bc0b260: 9339 8318 b37b a35a d3bd c39c f3ff e3de 9...{.Z......... + 3bc0b270: 2462 3443 0420 1401 64e6 74c7 44a4 5485 b$C4 ....d.t.D.T + 3bc0b280: a56a b54b 8528 9509 e5ee f5cf c5ac d58d j.K.(........... + 3bc0b290: 3653 2672 1611 0630 76d7 66f6 5695 46b4 S6r&..0..v.f.V.F + 3bc0b2a0: b75b a77a 9719 8738 f7df e7fe d79d c7bc [.z...8......... + 3bc0b2b0: 48c4 58e5 6886 78a7 0840 1861 2802 3823 .H.X.h.x@.a..(#8 + 3bc0b2c0: c9cc d9ed e98e f9af 8948 9969 a90a b92b ........H.i...+. + 3bc0b2d0: 5af5 4ad4 7ab7 6a96 1a71 0a50 3a33 2a12 .Z.J.z.jq.P.3:.* + 3bc0b2e0: dbfd cbdc fbbf eb9e 9b79 8b58 bb3b ab1a ........y.X.;... + 3bc0b2f0: 6ca6 7c87 4ce4 5cc5 2c22 3c03 0c60 1c41 .l.|.L.\",.<`.A. + 3bc0b300: edae fd8f cdec ddcd ad2a bd0b 8d68 9d49 ........*...h.I. + 3bc0b310: 7e97 6eb6 5ed5 4ef4 3e13 2e32 1e51 0e70 .~.n.^.N.>2.Q.p. + 3bc0b320: ff9f efbe dfdd cffc bf1b af3a 9f59 8f78 ..........:.Y.x. + 3bc0b330: 9188 81a9 b1ca a1eb d10c c12d f14e e16f ..........-.N.o. + 3bc0b340: 1080 00a1 30c2 20e3 5004 4025 7046 6067 .....0. .P%@Fpg` + 3bc0b350: 83b9 9398 a3fb b3da c33d d31c e37f f35e ........=.....^. + 3bc0b360: 02b1 1290 22f3 32d2 4235 5214 6277 7256 .....".25B.RwbVr + 3bc0b370: b5ea a5cb 95a8 8589 f56e e54f d52c c50d ........n.O.,... + 3bc0b380: 34e2 24c3 14a0 0481 7466 6447 5424 4405 .4.$....ftGd$T.D + 3bc0b390: a7db b7fa 8799 97b8 e75f f77e c71d d73c ........_.~...<. + 3bc0b3a0: 26d3 36f2 0691 16b0 6657 7676 4615 5634 .&.6....Wfvv.F4V + 3bc0b3b0: d94c c96d f90e e92f 99c8 89e9 b98a a9ab L.m.../......... + 3bc0b3c0: 5844 4865 7806 6827 18c0 08e1 3882 28a3 DXeH.x'h.....8.( + 3bc0b3d0: cb7d db5c eb3f fb1e 8bf9 9bd8 abbb bb9a }.\.?........... + 3bc0b3e0: 4a75 5a54 6a37 7a16 0af1 1ad0 2ab3 3a92 uJTZ7j.z.....*.: + 3bc0b3f0: fd2e ed0f dd6c cd4d bdaa ad8b 9de8 8dc9 ....l.M......... + 3bc0b400: 7c26 6c07 5c64 4c45 3ca2 2c83 1ce0 0cc1 &|.ld\EL.<.,.... + 3bc0b410: ef1f ff3e cf5d df7c af9b bfba 8fd9 9ff8 ..>.].|......... + 3bc0b420: 6e17 7e36 4e55 5e74 2e93 3eb2 0ed1 1ef0 .n6~UNt^...>.... + 3bc0b430: bf12 ffff bf46 ffff bfb4 ffff c030 ffff ....F.......0... + 3bc0b440: c056 ffff c0fc ffff c1ac ffff c20e ffff V............... + 3bc0b450: c342 ffff c436 ffff c43a ffff c46c ffff B...6...:...l... + 3bc0b460: c4dc ffff c4fc ffff c556 ffff 0000 0000 ........V....... + +000000003bc0b470 : + 3bc0b470: 0000 0001 0000 0000 0000 0004 0000 0000 ................ + 3bc0b480: 0000 0010 0000 0000 0000 0040 0000 0000 ..........@..... + +000000003bc0b490 : + ... + 3bc0b49c: ffff ffff fffc ffff 0001 0000 0002 0000 ................ + 3bc0b4ac: 0003 0000 .... + +000000003bc0b4b0 : + 3bc0b4b0: 0000 0000 0001 0000 0002 0000 0001 0000 ................ + 3bc0b4c0: 0000 0000 0004 0000 0004 0000 0004 0000 ................ + 3bc0b4d0: c874 ffff c854 ffff c834 ffff c5f0 ffff t...T...4....... + 3bc0b4e0: c692 ffff c744 ffff c806 ffff c5c2 ffff ....D........... + 3bc0b4f0: c664 ffff c716 ffff c7d8 ffff c594 ffff d............... + 3bc0b500: c636 ffff c6e8 ffff c7aa ffff 0000 0000 6............... + 3bc0b510: 3201 4444 2052 6e69 7469 0a2e 0000 0000 .2DDR init...... + 3bc0b520: 3201 6464 5f72 6170 6172 5b6d 5d30 303d .2ddr_param[0]=0 + 3bc0b530: 2578 2e78 000a 0000 3201 6b70 5f67 7974 x%x......2pkg_ty + 3bc0b540: 6570 253d 0a78 0000 3201 6e32 0a64 0000 pe=%x....22nd... + 3bc0b550: 3201 6e75 6e6b 776f 206e 6b70 5f67 7974 .2unknown pkg_ty + 3bc0b560: 6570 303d 2578 0a78 0000 0000 0000 0000 pe=0x%x......... + 3bc0b570: 3201 2544 5f78 7825 255f 0a78 0000 0000 .2D%x_%x_%x..... + 3bc0b580: 3201 4444 3252 0000 3201 4444 3352 0000 .2DDR2...2DDR3.. + 3bc0b590: 3201 6e75 6e6b 776f 206e 6576 646e 726f .2unknown vendor + 3bc0b5a0: 253d 0064 0000 0000 3201 352d 3231 004d =%d......2-512M. + 3bc0b5b0: 3201 312d 0047 0000 3201 322d 0047 0000 .2-1G....2-2G... + 3bc0b5c0: 3201 342d 0047 0000 3201 752d 6b6e 6f6e .2-4G....2-unkno + 3bc0b5d0: 6e77 6320 7061 6361 7469 3d79 6425 0000 wn capacity=%d.. + 3bc0b5e0: 3201 512d 4e46 3838 000a 0000 0000 0000 .2-QFN88........ + 3bc0b5f0: 3201 512d 4e46 3836 000a 0000 0000 0000 .2-QFN68........ + 3bc0b600: 3201 422d 4147 000a 3201 752d 6b6e 6f6e .2-BGA...2-unkno + 3bc0b610: 6e77 7020 676b 253d 0064 0000 cc32 ffff wn pkg=%d...2... + 3bc0b620: ccb8 ffff cc10 ffff cc22 ffff cc32 ffff ........"...2... + 3bc0b630: ccb8 ffff cc9a ffff ccaa ffff cce0 ffff ................ + 3bc0b640: cce0 ffff cce0 ffff cca6 ffff cce0 ffff ................ + 3bc0b650: cce0 ffff cce0 ffff cce0 ffff cca6 ffff ................ + 3bc0b660: cce0 ffff 0000 0000 3001 4520 453a 5252 .........0 E:ERR + 3bc0b670: 524f 6220 7369 5f74 6166 6c69 000a 0000 OR bist_fail.... + 3bc0b680: 3001 4520 623a 7369 5f74 6572 7573 746c .0 E:bist_result + 3bc0b690: 3d20 2520 2c78 6520 7272 645f 7461 5f61 = %x, err_data_ + 3bc0b6a0: 646f 2064 203d 6c25 2c78 6520 7272 645f odd = %lx, err_d + 3bc0b6b0: 7461 5f61 7665 6e65 3d20 2520 786c 000a ata_even = %lx.. + 3bc0b6c0: 3201 4444 2052 4942 5453 4620 4941 0a4c .2DDR BIST FAIL. + ... + 3bc0b6d8: 3201 4444 2052 4942 5453 5020 5341 0a53 .2DDR BIST PASS. + ... + 3bc0b6f0: fa02 401f fa02 801f 2c02 4010 2c02 8010 ...@.....,.@.,.. + 3bc0b700: 7a00 4000 7a00 8000 3a00 4000 3a00 8000 .z.@.z...:.@.:.. + 3bc0b710: e1ec ffff e250 ffff e2b0 ffff e31c ffff ....P........... + 3bc0b720: e3e0 ffff e380 ffff e316 ffff e316 ffff ................ + 3bc0b730: e4a2 ffff e440 ffff e7ac ffff e7ce ffff ....@........... + 3bc0b740: e7d8 ffff e7ea ffff e7fc ffff ............ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2.elf b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2.elf new file mode 100755 index 000000000..8dc0c1608 Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2.elf differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2.ld b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2.ld new file mode 100644 index 000000000..b7fbc239f --- /dev/null +++ b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2.ld @@ -0,0 +1,53 @@ +OUTPUT_FORMAT("elf64-littleriscv") +OUTPUT_ARCH(riscv) +ENTRY(bl2_entrypoint) +MEMORY { + RAM (rwx): ORIGIN = (0x3BC00000), LENGTH = (0x00019000) +} +SECTIONS +{ + . = (0x3BC00000); + ASSERT(. == ALIGN(4096), + "BL2_BASE address is not aligned on a page boundary.") + ro . : { + __RO_START__ = .; + *bl2_entrypoint.o(.text*) + *(.vectors) + *(.text*) + *(.rodata*) + __RO_END__ = .; + } >RAM + .data . : { + . = ALIGN(16); + __DATA_START__ = .; + *(.data*) + . = ALIGN(16); + __DATA_END__ = .; + } >RAM + stacks (NOLOAD) : { + . = ALIGN(64); + __STACKS_START__ = .; + . += 0x2000; + . = ALIGN(64); + __STACKS_END__ = .; + } >RAM + .bss : ALIGN(16) { + . = ALIGN(16); + __BSS_START__ = .; + *(SORT_BY_ALIGNMENT(.bss*)) + *(COMMON) + . = ALIGN(16); + __BSS_END__ = .; + } >RAM + __BL2_END__ = .; + __BSS_SIZE__ = SIZEOF(.bss); + ASSERT(. <= ((0x3BC00000) + (0x00019000)), "BL2 image has exceeded its limit.") +p_rom_api_cryptodma_aes_decrypt = 0x0000000004400100; +p_rom_api_flash_init = 0x0000000004400080; +p_rom_api_get_boot_src = 0x0000000004400020; +p_rom_api_get_number_of_retries = 0x00000000044000c0; +p_rom_api_image_crc = 0x00000000044000a0; +p_rom_api_load_image = 0x0000000004400060; +p_rom_api_set_boot_src = 0x0000000004400040; +p_rom_api_verify_rsa = 0x00000000044000e0; +} diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2.map b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2.map new file mode 100644 index 000000000..898c01693 --- /dev/null +++ b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2.map @@ -0,0 +1,3415 @@ + +Discarded input sections + + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .text.cpu_report_exception + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .text.enable_cache + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o + .text.memcpy16 + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o + .text.zeromem 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_info 0x0000000000000000 0x1ac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_abbrev 0x0000000000000000 0xdd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_loc 0x0000000000000000 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_aranges + 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_ranges 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_line 0x0000000000000000 0x102 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_str 0x0000000000000000 0x3a69 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_frame 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .text.inv_dcache_range + 0x0000000000000000 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .text.clean_dcache_range + 0x0000000000000000 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .text.enable_dcache + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .text.disable_dcache + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .text.timer_init + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x186b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .text.console_init + 0x0000000000000000 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .text.console_puts + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .text.console_getc + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .text.uart_tstc + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .text.console_tstc + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .rodata.tf_print_buffer.str1.8 + 0x0000000000000000 0x2d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .text.tf_print_buffer + 0x0000000000000000 0x96 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .text.config_core_power + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .text.apply_analog_trimming_data + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .text.bytes_reverse + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .rodata.__assert.str1.8 + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .text.__assert + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .debug_info 0x0000000000000000 0x153 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .debug_abbrev 0x0000000000000000 0xa4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .debug_loc 0x0000000000000000 0x109 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x112 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .debug_line 0x0000000000000000 0x21b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .debug_str 0x0000000000000000 0x6fb3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .debug_frame 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .text.memcmp 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .text.memchr 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .text._memcpy 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o + .text.strchr 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o + .debug_info 0x0000000000000000 0xe4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o + .debug_abbrev 0x0000000000000000 0x7f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o + .debug_loc 0x0000000000000000 0x6f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o + .debug_line 0x0000000000000000 0x14e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o + .debug_str 0x0000000000000000 0x3a7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o + .text.strcasecmp + 0x0000000000000000 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o + .text.strncmp 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o + .debug_info 0x0000000000000000 0x105 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o + .debug_abbrev 0x0000000000000000 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o + .debug_loc 0x0000000000000000 0x15f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o + .debug_line 0x0000000000000000 0x13f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o + .debug_str 0x0000000000000000 0x3a39 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o + .text.strnlen 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o + .debug_info 0x0000000000000000 0x105 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o + .debug_abbrev 0x0000000000000000 0x9f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o + .debug_loc 0x0000000000000000 0xa3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o + .debug_line 0x0000000000000000 0x123 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o + .debug_str 0x0000000000000000 0x3a40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .text.is_usb_dl_enabled + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .rodata.print_sram_log.str1.8 + 0x0000000000000000 0x6d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .text.print_sram_log + 0x0000000000000000 0x86 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_ReadReg32 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_WriteReg32 + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedRead8 + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedRead16 + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedWrite8 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedWrite16 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_WritePhysAddress32 + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_BufferCopy + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_DelayNs + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.set_trigger_cnt + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dfu_usb_get_reset + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.otg_phy_init + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.otg_phy_off + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x517 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .text.crc16_pacing + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .text.crc16_ccitt_with_tag + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_InitDicAndState + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_DecodeToBuf + 0x0000000000000000 0xd6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_Free + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_Allocate + 0x0000000000000000 0xbc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_renormDictT + 0x0000000000000000 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_rotatePattern + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_setExternalDict + 0x0000000000000000 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_reverseCountPattern + 0x0000000000000000 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_countPattern + 0x0000000000000000 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_init_internal + 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_extDict + 0x0000000000000000 0x2aa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_compress_optimal + 0x0000000000000000 0x1d36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_compress_generic_noDictCtx + 0x0000000000000000 0x1b68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_compress_generic + 0x0000000000000000 0x211a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_makeBlock + 0x0000000000000000 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_versionNumber + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.LZ4_versionString.str1.8 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_versionString + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressBound + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofState + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast_extState_fastReset + 0x0000000000000000 0x1428 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_initStream + 0x0000000000000000 0x36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast_extState + 0x0000000000000000 0xd02 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_default + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_destSize + 0x0000000000000000 0x83c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_createStream + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStream + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStream_fast + 0x0000000000000000 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_freeStream + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_loadDict + 0x0000000000000000 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_attach_dictionary + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast_continue + 0x0000000000000000 0x1ca4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlock_continue + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_forceExtDict + 0x0000000000000000 0xa24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_saveDict + 0x0000000000000000 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe_partial + 0x0000000000000000 0x2a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast + 0x0000000000000000 0x1e6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_withPrefix64k + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_createStreamDecode + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_freeStreamDecode + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_setStreamDecode + 0x0000000000000000 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decoderRingBufferSize + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe_continue + 0x0000000000000000 0x3c6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_continue + 0x0000000000000000 0x316 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_usingDict + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput_withState + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_withState + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput_continue + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_continue + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_uncompress + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_uncompress_unknownOutputSize + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofStreamState + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_create + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_slideInputBuffer + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_createStreamHC + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_freeStreamHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_initStreamHC + 0x0000000000000000 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_setCompressionLevel + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_destSize + 0x0000000000000000 0x6a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamHC + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamHC_fast + 0x0000000000000000 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_extStateHC_fastReset + 0x0000000000000000 0x64 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_extStateHC + 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC + 0x0000000000000000 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_initStream + 0x0000000000000000 0x5a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlock + 0x0000000000000000 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_favorDecompressionSpeed + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_loadDictHC + 0x0000000000000000 0xd6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_continue_generic + 0x0000000000000000 0xf0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_attach_HC_dictionary + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_continue + 0x0000000000000000 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlockHC_continue + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlockHC + 0x0000000000000000 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_continue_destSize + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_saveDictHC + 0x0000000000000000 0x96 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_localSaveDict + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC + 0x0000000000000000 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2 + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_withStateHC + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput_withStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_withStateHC + 0x0000000000000000 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput_withStateHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_continue + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput_continue + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofStreamStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamStateHC + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_createHC + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_freeHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_continue + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput_continue + 0x0000000000000000 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_slideInputBufferHC + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.LZ4F_getErrorName.str1.8 + 0x0000000000000000 0x17 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_getErrorName + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_getErrorCode + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_getVersion + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressionLevel_max + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBound_internal + 0x0000000000000000 0x9c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressFrameBound + 0x0000000000000000 0x3e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_freeCDict + 0x0000000000000000 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_createCDict + 0x0000000000000000 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_createCompressionContext + 0x0000000000000000 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_freeCompressionContext + 0x0000000000000000 0x36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBegin_usingCDict + 0x0000000000000000 0x20c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBegin + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBound + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressUpdate + 0x0000000000000000 0x204 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_flush + 0x0000000000000000 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressEnd + 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressFrame_usingCDict + 0x0000000000000000 0x104 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressFrame + 0x0000000000000000 0x112 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_freeDecompressionContext + 0x0000000000000000 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_resetDecompressionContext + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_headerSize + 0x0000000000000000 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_getFrameInfo + 0x0000000000000000 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_decompress_usingDict + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.str1.8 + 0x0000000000000000 0x246 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.cst8 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.LZ4F_errorStrings + 0x0000000000000000 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.clTable.2 + 0x0000000000000000 0x9c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_mergeRound + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_avalanche + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH_read64 + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_finalize.constprop.0 + 0x0000000000000000 0x7be /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .rodata.XXH64_finalize.constprop.0 + 0x0000000000000000 0x7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH_versionNumber + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH32_createState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH32_freeState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH32_copyState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH32_canonicalFromHash + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH32_hashFromCanonical + 0x0000000000000000 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64 0x0000000000000000 0x234 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_createState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_freeState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_copyState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_reset + 0x0000000000000000 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_update + 0x0000000000000000 0x1fa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_digest + 0x0000000000000000 0x8a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_canonicalFromHash + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_hashFromCanonical + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .rodata.cst8 0x0000000000000000 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .text.get_ddr_capacity + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .text.get_pkg 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .text.get_ddr_type + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .rodata.dump_axi_mon_reg.str1.8 + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .text.dump_axi_mon_reg + 0x0000000000000000 0x6c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.ddr_debug_num_write + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_sub_resume2 + 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddrc_suspend + 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_cal_phyd_hw + 0x0000000000000000 0x10a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_cal_phya_enautok + 0x0000000000000000 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ctrlupd_short + 0x0000000000000000 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_wrlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_rdglvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_rdlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_wdqlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_cal_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_zqcal_status + 0x0000000000000000 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zqcal_isr8 + 0x0000000000000000 0x2d4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zqcal_hw_isr8 + 0x0000000000000000 0x15e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_training_status + 0x0000000000000000 0x134 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_set_dq_vref + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_phya_pd + 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_phyd_save + 0x0000000000000000 0xae6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.ddr_sys_suspend + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_phyd_restore + 0x0000000000000000 0xaf4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_sub_resume3 + 0x0000000000000000 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_sw_upd + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_set_dq_trig_lvl + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_freq_change_ltoh + 0x0000000000000000 0x276 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_0_phase40 + 0x0000000000000000 0x16e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_0_external + 0x0000000000000000 0x1ce /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_1_dq_set_highlow + 0x0000000000000000 0x1b4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_2_mux_demux + 0x0000000000000000 0x19c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_3_ca_set_highlow + 0x0000000000000000 0x1e4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_4_ca_clk_pat + 0x0000000000000000 0x132 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.ddr_sys_resume + 0x0000000000000000 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_rdlvl_sw_req + 0x0000000000000000 0x44c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_wdqlvl_sw_req + 0x0000000000000000 0x1ee /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_freq_change_htol + 0x0000000000000000 0x30a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dfi_phyupd_req + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_sw_clr + 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_tx_shift_delay + 0x0000000000000000 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_rx_delay + 0x0000000000000000 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_rx_deskew_delay + 0x0000000000000000 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ca_shift_delay + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_cs_shift_delay + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_mask_shift_delay + 0x0000000000000000 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_reg_toggle + 0x0000000000000000 0x1514 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ana_test + 0x0000000000000000 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zq240 + 0x0000000000000000 0x1c4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zq240_ate + 0x0000000000000000 0x148 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zq240_cal + 0x0000000000000000 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .data.ddr_patch_regs + 0x0000000000000000 0x1c8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .data.ddr_patch_regs_count + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_info 0x0000000000000000 0x121 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_abbrev 0x0000000000000000 0xb5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_line 0x0000000000000000 0x160 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_str 0x0000000000000000 0x53f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_entrypoint.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_entrypoint.o + .bss 0x0000000000000000 0x1000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_entrypoint.o + .rodata 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_entrypoint.o + +Memory Configuration + +Name Origin Length Attributes +RAM 0x000000003bc00000 0x0000000000019000 xrw +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + 0x000000003bc00000 . = 0x3bc00000 + 0x0000000000000001 ASSERT ((. == ALIGN (0x1000)), BL2_BASE address is not aligned on a page boundary.) + +ro 0x000000003bc00000 0xb74c + 0x000000003bc00000 __RO_START__ = . + *bl2_entrypoint.o(.text*) + .text.init 0x000000003bc00000 0x14c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_entrypoint.o + 0x000000003bc00000 bl2_entrypoint + *(.vectors) + *(.text*) + .text.sync_cache + 0x000000003bc0014c 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + 0x000000003bc0014c sync_cache + .text.flush_dcache_range + 0x000000003bc00156 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + 0x000000003bc00156 flush_dcache_range + .text.trig_simulation_timer + 0x000000003bc0017a 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc0017a trig_simulation_timer + .text.udelay 0x000000003bc0018a 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc0018a udelay + .text.mdelay 0x000000003bc001b4 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc001b4 mdelay + .text.get_timer + 0x000000003bc001be 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc001be get_timer + .text.get_random_from_timer + 0x000000003bc001e2 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc001e2 get_random_from_timer + .text.read_count_tick + 0x000000003bc0020c 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc0020c read_count_tick + .text.jump_to_monitor + 0x000000003bc0021a 0x78 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + 0x000000003bc0021a jump_to_monitor + .text.jump_to_loader_2nd + 0x000000003bc00292 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + 0x000000003bc00292 jump_to_loader_2nd + .text._uart_putc + 0x000000003bc00294 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + 0x000000003bc00294 _uart_putc + .text.console_putc + 0x000000003bc002a4 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + 0x000000003bc002a4 console_putc + .text.console_flush + 0x000000003bc002c2 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + 0x000000003bc002c2 console_flush + .text.unsigned_num_print + 0x000000003bc002d6 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .text.tf_printf + 0x000000003bc00358 0x19a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + 0x000000003bc00358 tf_printf + .text.__system_reset + 0x000000003bc004f2 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc004f2 __system_reset + .text.panic_handler + 0x000000003bc005ba 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc005ba panic_handler + .text.reset_c906l + 0x000000003bc005ec 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc005ec reset_c906l + .text.setup_dl_flag + 0x000000003bc00636 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc00636 setup_dl_flag + .text.sys_switch_all_to_pll + 0x000000003bc00680 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc00680 sys_switch_all_to_pll + .text.sys_pll_nd + 0x000000003bc0068e 0x18e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc0068e sys_pll_nd + .text.sys_pll_init + 0x000000003bc0081c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc0081c sys_pll_init + .text.switch_rtc_mode_1st_stage + 0x000000003bc00832 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc00832 switch_rtc_mode_1st_stage + .text.switch_rtc_mode_2nd_stage + 0x000000003bc00834 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc00834 switch_rtc_mode_2nd_stage + .text.set_rtc_en_registers + 0x000000003bc00878 0xbc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc00878 set_rtc_en_registers + .text.init_comm_info + 0x000000003bc00934 0x6e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc00934 init_comm_info + .text.dec_verify_image + 0x000000003bc009a2 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + 0x000000003bc009a2 dec_verify_image + .text.ntostr 0x000000003bc009a6 0x7a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + 0x000000003bc009a6 ntostr + .text.memset 0x000000003bc00a20 0x5a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + 0x000000003bc00a20 memset + .text.memcpy 0x000000003bc00a7a 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + 0x000000003bc00a7a memcpy + .text.memmove 0x000000003bc00ada 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + 0x000000003bc00ada memmove + .text.putchar_l + 0x000000003bc00afa 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + 0x000000003bc00afa putchar_l + .text.strcmp 0x000000003bc00b4c 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o + 0x000000003bc00b4c strcmp + .text.strlen 0x000000003bc00b68 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o + 0x000000003bc00b68 strlen + .text.gpio_in_value + 0x000000003bc00b7a 0x7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + 0x000000003bc00b7a gpio_in_value + .text.usb_id_det + 0x000000003bc00bf6 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + 0x000000003bc00bf6 usb_id_det + .text.read_time_ms + 0x000000003bc00c14 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .text.load_image_by_usb + 0x000000003bc00c2e 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00c2e load_image_by_usb + .text.load_param2 + 0x000000003bc00c6e 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00c6e load_param2 + .text.load_ddr_param + 0x000000003bc00d3e 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00d3e load_ddr_param + .text.load_ddr + 0x000000003bc00dec 0xc6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00dec load_ddr + .text.load_blcp_2nd + 0x000000003bc00eb2 0x166 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00eb2 load_blcp_2nd + .text.load_monitor + 0x000000003bc01018 0x126 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc01018 load_monitor + .text.load_loader_2nd + 0x000000003bc0113e 0x208 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc0113e load_loader_2nd + .text.load_rest + 0x000000003bc01346 0xe6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc01346 load_rest + .text.bl2_main + 0x000000003bc0142c 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc0142c bl2_main + .text.SzFree 0x000000003bc014c4 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .text.SzAlloc 0x000000003bc014c6 0x42 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .text.decompress_lzma + 0x000000003bc01508 0xe8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + 0x000000003bc01508 decompress_lzma + .text.LZ4_malloc + 0x000000003bc015f0 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + 0x000000003bc015f0 LZ4_malloc + .text.LZ4_calloc + 0x000000003bc015f6 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + 0x000000003bc015f6 LZ4_calloc + .text.LZ4_free + 0x000000003bc0161e 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + 0x000000003bc0161e LZ4_free + .text.decompress_lz4 + 0x000000003bc01620 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + 0x000000003bc01620 decompress_lz4 + .text.decompress + 0x000000003bc016ce 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + 0x000000003bc016ce decompress + .text.DWC2_UncachedRead32 + 0x000000003bc0174c 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + 0x000000003bc0174c DWC2_UncachedRead32 + .text.DWC2_UncachedWrite32 + 0x000000003bc01752 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + 0x000000003bc01752 DWC2_UncachedWrite32 + .text.resume 0x000000003bc01756 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .text.requestMemAlloc + 0x000000003bc01758 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .text.requestMemFree + 0x000000003bc01790 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .text.acm_complete_set_line_coding + 0x000000003bc01792 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .text.reset 0x000000003bc017ae 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .text.disconnect + 0x000000003bc017c2 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .text.unbind 0x000000003bc017f0 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .text.bind 0x000000003bc01816 0x42 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .text.get_unicode_string + 0x000000003bc01858 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .text.bulkOutCmpl + 0x000000003bc018aa 0x234 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .text.getDescAcm + 0x000000003bc01ade 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .text.reqComplete + 0x000000003bc01b3a 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .text.bulkInCmpl + 0x000000003bc01b64 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .text.setup 0x000000003bc01bb4 0x442 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .text.suspend 0x000000003bc01ff6 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .text.convert_buf_addr + 0x000000003bc01ff8 0xa2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc01ff8 convert_buf_addr + .text.print_buf_addr + 0x000000003bc0209a 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc0209a print_buf_addr + .text.AcmIsr 0x000000003bc0216a 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc0216a AcmIsr + .text.acm_app_init + 0x000000003bc02170 0x138 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc02170 acm_app_init + .text.usb_vbus_det + 0x000000003bc022a8 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc022a8 usb_vbus_det + .text.get_usb_polling_timeout_value + 0x000000003bc022b4 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc022b4 get_usb_polling_timeout_value + .text.AcmApp 0x000000003bc022e4 0x478 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc022e4 AcmApp + .text.dwc2_fifo_status + 0x000000003bc0275c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_free_request + 0x000000003bc02772 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.pullup 0x000000003bc027ac 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_alloc_request + 0x000000003bc027f4 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_ep_enable + 0x000000003bc0282c 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_fifo_flush + 0x000000003bc028cc 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_log_write + 0x000000003bc028ce 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc028ce dwc2_log_write + .text.dwc2_get_ep0_name + 0x000000003bc028d0 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc028d0 dwc2_get_ep0_name + .text.udc_reinit + 0x000000003bc028da 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc028da udc_reinit + .text.dwc2_done + 0x000000003bc02920 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02920 dwc2_done + .text.dwc2_dequeue + 0x000000003bc02960 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_nuke + 0x000000003bc029b4 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc029b4 dwc2_nuke + .text.usb_gadget_unregister_driver + 0x000000003bc029e2 0x9a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc029e2 usb_gadget_unregister_driver + .text.dwc2_hsotg_set_bit + 0x000000003bc02a7c 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02a7c dwc2_hsotg_set_bit + .text.dwc2_hsotg_clear_bit + 0x000000003bc02a9e 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02a9e dwc2_hsotg_clear_bit + .text.wakeup 0x000000003bc02ac2 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_hsotg_wait_bit_set + 0x000000003bc02afe 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02afe dwc2_hsotg_wait_bit_set + .text.dwc2_hsotg_txfifo_flush.constprop.0 + 0x000000003bc02b44 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.kill_all_requests.isra.0 + 0x000000003bc02bd4 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_disconnect + 0x000000003bc02c32 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02c32 dwc2_disconnect + .text.dwc2_hsotg_init_fifo.constprop.0 + 0x000000003bc02c88 0xda /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text._dwc2_ep_disable.isra.0 + 0x000000003bc02d62 0x1a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_ep_disable + 0x000000003bc02f08 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_reconfig_usbd + 0x000000003bc02f28 0x28e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02f28 dwc2_reconfig_usbd + .text.usb_gadget_register_driver + 0x000000003bc031b6 0x156 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc031b6 usb_gadget_register_driver + .text.dwc2_phy_to_log_ep + 0x000000003bc0330c 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc0330c dwc2_phy_to_log_ep + .text.dwc2_udc_probe + 0x000000003bc0331e 0x150 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc0331e dwc2_udc_probe + .text.usb_gadget_handle_interrupts + 0x000000003bc0346e 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc0346e usb_gadget_handle_interrupts + .text.set_max_pktsize + 0x000000003bc034ba 0x8e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep_clear_stall + 0x000000003bc03548 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep_set_stall + 0x000000003bc035a6 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_ep0_complete_out + 0x000000003bc03608 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep0_zlp + 0x000000003bc03688 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep0_set_stall.isra.0 + 0x000000003bc03706 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.setdma_rx.isra.0 + 0x000000003bc0376e 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.complete_rx + 0x000000003bc03818 0xfc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_pre_setup + 0x000000003bc03914 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03914 dwc2_udc_pre_setup + .text.dwc2_ep_fifo_write + 0x000000003bc0392a 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc0392a dwc2_ep_fifo_write + .text.setdma_tx + 0x000000003bc0396e 0x15c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_ep_fifo_read + 0x000000003bc03aca 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03aca dwc2_ep_fifo_read + .text.dwc2_write_fifo_ep0 + 0x000000003bc03b0e 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03b0e dwc2_write_fifo_ep0 + .text.dwc2_set_address + 0x000000003bc03b5a 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03b5a dwc2_set_address + .text.dwc2_ep0_read + 0x000000003bc03ba2 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03ba2 dwc2_ep0_read + .text.dwc2_ep0_write + 0x000000003bc03bca 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03bca dwc2_ep0_write + .text.dwc2_udc_set_nak + 0x000000003bc03c0a 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03c0a dwc2_udc_set_nak + .text.dwc2_udc_set_halt + 0x000000003bc03c4a 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03c4a dwc2_udc_set_halt + .text.dwc2_udc_ep_activate + 0x000000003bc03cac 0xb2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03cac dwc2_udc_ep_activate + .text.dwc2_handle_ep0 + 0x000000003bc03d5e 0x346 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03d5e dwc2_handle_ep0 + .text.dwc2_udc_irq + 0x000000003bc040a4 0x540 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc040a4 dwc2_udc_irq + .text.dwc2_ep0_kick + 0x000000003bc045e4 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc045e4 dwc2_ep0_kick + .text.dwc2_queue + 0x000000003bc045fc 0xd8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc045fc dwc2_queue + .text.usb_polling + 0x000000003bc046d4 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + 0x000000003bc046d4 usb_polling + .text.crc16_ccitt + 0x000000003bc04714 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + 0x000000003bc04714 crc16_ccitt + .text.LzmaDec_WriteRem + 0x000000003bc04746 0x72 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_DecodeReal2 + 0x000000003bc047b8 0x138a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_TryDummy + 0x000000003bc05b42 0x4e8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_Init + 0x000000003bc0602a 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc0602a LzmaDec_Init + .text.LzmaDec_DecodeToDic + 0x000000003bc0603e 0x27c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc0603e LzmaDec_DecodeToDic + .text.LzmaDec_FreeProbs + 0x000000003bc062ba 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc062ba LzmaDec_FreeProbs + .text.LzmaDec_AllocateProbs2.isra.0 + 0x000000003bc062d6 0x66 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaProps_Decode + 0x000000003bc0633c 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc0633c LzmaProps_Decode + .text.LzmaDec_AllocateProbs + 0x000000003bc06386 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc06386 LzmaDec_AllocateProbs + .text.LzmaDecode + 0x000000003bc063b6 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc063b6 LzmaDecode + .text.LZ4F_readLE32 + 0x000000003bc06460 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe_withSmallPrefix + 0x000000003bc06484 0x276 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_updateDict + 0x000000003bc066fa 0x110 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe + 0x000000003bc0680a 0x26e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc0680a LZ4_decompress_safe + .text.LZ4_decompress_safe_withPrefix64k + 0x000000003bc06a78 0x26a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc06a78 LZ4_decompress_safe_withPrefix64k + .text.LZ4_decompress_safe_forceExtDict + 0x000000003bc06ce2 0x316 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc06ce2 LZ4_decompress_safe_forceExtDict + .text.LZ4_decompress_safe_usingDict + 0x000000003bc06ff8 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc06ff8 LZ4_decompress_safe_usingDict + .text.LZ4F_isError + 0x000000003bc0701e 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc0701e LZ4F_isError + .text.LZ4F_getBlockSize + 0x000000003bc0702a 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc0702a LZ4F_getBlockSize + .text.LZ4F_decodeHeader + 0x000000003bc07048 0x1a4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_createDecompressionContext + 0x000000003bc071ec 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc071ec LZ4F_createDecompressionContext + .text.LZ4F_decompress + 0x000000003bc0721c 0x7dc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc0721c LZ4F_decompress + .text.XXH32_avalanche + 0x000000003bc079f8 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH_read32 + 0x000000003bc07a24 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH32_finalize.constprop.0 + 0x000000003bc07a3a 0x33a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH32 0x000000003bc07d74 0x1c6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + 0x000000003bc07d74 XXH32 + .text.XXH32_reset + 0x000000003bc07f3a 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + 0x000000003bc07f3a XXH32_reset + .text.XXH32_update + 0x000000003bc07f90 0x1d2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + 0x000000003bc07f90 XXH32_update + .text.XXH32_digest + 0x000000003bc08162 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + 0x000000003bc08162 XXH32_digest + .text.ddr_init + 0x000000003bc081a2 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + 0x000000003bc081a2 ddr_init + .text.read_ddr_pkg_info + 0x000000003bc081d6 0x22e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc081d6 read_ddr_pkg_info + .text.get_ddr_vendor + 0x000000003bc08404 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc08404 get_ddr_vendor + .text.axi_mon_start_all + 0x000000003bc0840e 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + 0x000000003bc0840e axi_mon_start_all + .text.ddr_sys_bring_up + 0x000000003bc0845e 0x224 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + 0x000000003bc0845e ddr_sys_bring_up + .text.cvx16_bist_wr_prbs_init + 0x000000003bc08682 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08682 cvx16_bist_wr_prbs_init + .text.cvx16_bist_wr_sram_init + 0x000000003bc086d0 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc086d0 cvx16_bist_wr_sram_init + .text.cvx16_bist_wrlvl_init + 0x000000003bc08730 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08730 cvx16_bist_wrlvl_init + .text.cvx16_bist_rdglvl_init + 0x000000003bc08776 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08776 cvx16_bist_rdglvl_init + .text.cvx16_bist_rdlvl_init + 0x000000003bc087bc 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc087bc cvx16_bist_rdlvl_init + .text.cvx16_bist_wdqlvl_init + 0x000000003bc088a6 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc088a6 cvx16_bist_wdqlvl_init + .text.cvx16_bist_wdmlvl_init + 0x000000003bc08956 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08956 cvx16_bist_wdmlvl_init + .text.cvx16_bist_start_check + 0x000000003bc089b6 0x6a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc089b6 cvx16_bist_start_check + .text.cvx16_rdvld_train + 0x000000003bc08a20 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08a20 cvx16_rdvld_train + .text.cvx16_synp_mrw + 0x000000003bc08ac6 0x74 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08ac6 cvx16_synp_mrw + .text.cvx16_dll_cal + 0x000000003bc08b3a 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08b3a cvx16_dll_cal + .text.cvx16_clk_normal + 0x000000003bc08ba2 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08ba2 cvx16_clk_normal + .text.cvx16_clk_div2 + 0x000000003bc08bfe 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08bfe cvx16_clk_div2 + .text.cvx16_clk_div40 + 0x000000003bc08c14 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08c14 cvx16_clk_div40 + .text.cvx16_chg_pll_freq + 0x000000003bc08c2a 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08c2a cvx16_chg_pll_freq + .text.cvx16_ddr_phy_power_on_seq1 + 0x000000003bc08d22 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08d22 cvx16_ddr_phy_power_on_seq1 + .text.cvx16_ddr_phy_power_on_seq2 + 0x000000003bc08d66 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08d66 cvx16_ddr_phy_power_on_seq2 + .text.cvx16_ddr_phy_power_on_seq3 + 0x000000003bc08dae 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08dae cvx16_ddr_phy_power_on_seq3 + .text.cvx16_wait_for_dfi_init_complete + 0x000000003bc08de8 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08de8 cvx16_wait_for_dfi_init_complete + .text.cvx16_polling_dfi_init_start + 0x000000003bc08e20 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08e20 cvx16_polling_dfi_init_start + .text.cvx16_set_dfi_init_complete + 0x000000003bc08e3a 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08e3a cvx16_set_dfi_init_complete + .text.cvx16_INT_ISR_08 + 0x000000003bc08e62 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08e62 cvx16_INT_ISR_08 + .text.cvx16_polling_synp_normal_mode + 0x000000003bc08e8e 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08e8e cvx16_polling_synp_normal_mode + .text.cvx16_dfi_ca_park_prbs + 0x000000003bc08eaa 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08eaa cvx16_dfi_ca_park_prbs + .text.cvx16_setting_check + 0x000000003bc08f12 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08f12 cvx16_setting_check + .text.cvx16_set_dfi_init_start + 0x000000003bc08f32 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08f32 cvx16_set_dfi_init_start + .text.cvx16_pll_init + 0x000000003bc08f58 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08f58 cvx16_pll_init + .text.cvx16_clk_gating_disable + 0x000000003bc08ffe 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08ffe cvx16_clk_gating_disable + .text.cvx16_clk_gating_enable + 0x000000003bc09048 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc09048 cvx16_clk_gating_enable + .text.cvx16_wrlvl_req + 0x000000003bc090b8 0x1d6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc090b8 cvx16_wrlvl_req + .text.cvx16_rdglvl_req + 0x000000003bc0928e 0x13e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc0928e cvx16_rdglvl_req + .text.cvx16_rdlvl_req + 0x000000003bc093cc 0x1ea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc093cc cvx16_rdlvl_req + .text.cvx16_wdqlvl_req + 0x000000003bc095b6 0x182 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc095b6 cvx16_wdqlvl_req + .text.cvx16_en_rec_vol_mode + 0x000000003bc09738 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc09738 cvx16_en_rec_vol_mode + .text.ctrl_init_detect_dram_size + 0x000000003bc0973a 0x11a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc0973a ctrl_init_detect_dram_size + .text.pll_init + 0x000000003bc09854 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc09854 pll_init + .text.cvx16_pinmux + 0x000000003bc098d8 0x33a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + 0x000000003bc098d8 cvx16_pinmux + .text.cvx16_dram_cap_check + 0x000000003bc09c12 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + 0x000000003bc09c12 cvx16_dram_cap_check + .text.ddrc_init + 0x000000003bc09c14 0x224 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc09c14 ddrc_init + .text.ctrl_init_high_patch + 0x000000003bc09e38 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc09e38 ctrl_init_high_patch + .text.ctrl_init_low_patch + 0x000000003bc09e66 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc09e66 ctrl_init_low_patch + .text.ctrl_init_update_by_dram_size + 0x000000003bc09e94 0xb2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc09e94 ctrl_init_update_by_dram_size + .text.phy_init + 0x000000003bc09f46 0x3b6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + 0x000000003bc09f46 phy_init + *(.rodata*) + *fill* 0x000000003bc0a2fc 0x4 + .rodata.build_message + 0x000000003bc0a300 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o + 0x000000003bc0a300 build_message + *fill* 0x000000003bc0a31a 0x6 + .rodata.version_string + 0x000000003bc0a320 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o + 0x000000003bc0a320 version_string + .rodata.jump_to_monitor.str1.8 + 0x000000003bc0a330 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + *fill* 0x000000003bc0a356 0x2 + .rodata.tf_printf.str1.8 + 0x000000003bc0a358 0x3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + *fill* 0x000000003bc0a35b 0x1 + .rodata.tf_printf + 0x000000003bc0a35c 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .rodata.__system_reset.str1.8 + 0x000000003bc0a3b8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a3ca 0x6 + .rodata.panic_handler.str1.8 + 0x000000003bc0a3d0 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a3e6 0x2 + .rodata.reset_c906l.str1.8 + 0x000000003bc0a3e8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .rodata.sys_pll_nd.str1.8 + 0x000000003bc0a3f0 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a3f9 0x7 + .rodata.sys_pll_init.str1.8 + 0x000000003bc0a400 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a409 0x7 + .rodata.switch_rtc_mode_2nd_stage.str1.8 + 0x000000003bc0a410 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a424 0x4 + .rodata.set_rtc_en_registers.str1.8 + 0x000000003bc0a428 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a454 0x4 + .rodata.cst8 0x000000003bc0a458 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .rodata.hex2ascii_data + 0x000000003bc0a488 0x25 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + 0x000000003bc0a488 hex2ascii_data + *fill* 0x000000003bc0a4ad 0x3 + .rodata.cst8 0x000000003bc0a4b0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .rodata.load_image_by_usb.str1.8 + 0x000000003bc0a4b8 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a4d2 0x6 + .rodata.load_param2.str1.8 + 0x000000003bc0a4d8 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .rodata.load_ddr_param.str1.8 + 0x000000003bc0a530 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .rodata.load_ddr.str1.8 + 0x000000003bc0a578 0x4d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a5c5 0x3 + .rodata.load_blcp_2nd.str1.8 + 0x000000003bc0a5c8 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .rodata.load_monitor.str1.8 + 0x000000003bc0a6a8 0xcf /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a777 0x1 + .rodata.load_loader_2nd.str1.8 + 0x000000003bc0a778 0xce /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a846 0x2 + .rodata.load_rest.str1.8 + 0x000000003bc0a848 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .rodata.bl2_main.str1.8 + 0x000000003bc0a8a8 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a92c 0x4 + .rodata.cst8 0x000000003bc0a930 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .rodata.SzAlloc.str1.8 + 0x000000003bc0a938 0x1f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a957 0x1 + .rodata.decompress_lzma.str1.8 + 0x000000003bc0a958 0x92 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a9ea 0x6 + .rodata.decompress_lz4.str1.8 + 0x000000003bc0a9f0 0x72 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + *fill* 0x000000003bc0aa62 0x6 + .rodata.decompress.str1.8 + 0x000000003bc0aa68 0x31 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + *fill* 0x000000003bc0aa99 0x7 + .rodata.__func__.0 + 0x000000003bc0aaa0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .rodata.__func__.1 + 0x000000003bc0aaa8 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .rodata.reset.str1.8 + 0x000000003bc0aab8 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aace 0x2 + .rodata.unbind.str1.8 + 0x000000003bc0aad0 0xd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aadd 0x3 + .rodata.bind.str1.8 + 0x000000003bc0aae0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .rodata.bulkOutCmpl.str1.8 + 0x000000003bc0aae8 0x61 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab49 0x7 + .rodata.reqComplete.str1.8 + 0x000000003bc0ab50 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab65 0x3 + .rodata.setup.str1.8 + 0x000000003bc0ab68 0xd2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ac3a 0x2 + .rodata.setup 0x000000003bc0ac3c 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .rodata.print_buf_addr.str1.8 + 0x000000003bc0ac78 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ad62 0x6 + .rodata.acm_app_init.str1.8 + 0x000000003bc0ad68 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ad7d 0x3 + .rodata.AcmApp.str1.8 + 0x000000003bc0ad80 0x10b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ae8b 0x5 + .rodata.str1.8 + 0x000000003bc0ae90 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ae94 0x4 + .rodata.__func__.0 + 0x000000003bc0ae98 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ae9d 0x3 + .rodata.__func__.1 + 0x000000003bc0aea0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aea7 0x1 + .rodata.__func__.4 + 0x000000003bc0aea8 0xb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aeb3 0x5 + .rodata.__func__.5 + 0x000000003bc0aeb8 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aebe 0x2 + .rodata.dwc2_free_request.str1.8 + 0x000000003bc0aec0 0x23 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0aee3 0x5 + .rodata.dwc2_hsotg_txfifo_flush.constprop.0.str1.8 + 0x000000003bc0aee8 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0af32 0x6 + .rodata.dwc2_hsotg_init_fifo.constprop.0.str1.8 + 0x000000003bc0af38 0x2d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0af65 0x3 + .rodata._dwc2_ep_disable.isra.0.str1.8 + 0x000000003bc0af68 0x77 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0afdf 0x1 + .rodata.dwc2_reconfig_usbd.str1.8 + 0x000000003bc0afe0 0x71 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b051 0x7 + .rodata.dwc2_udc_probe.str1.8 + 0x000000003bc0b058 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b0a6 0x2 + .rodata.__func__.0 + 0x000000003bc0b0a8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b0ba 0x6 + .rodata.__func__.1 + 0x000000003bc0b0c0 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b0d1 0x7 + .rodata.__func__.2 + 0x000000003bc0b0d8 0x13 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b0eb 0x5 + .rodata.__func__.3 + 0x000000003bc0b0f0 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .rodata.__func__.4 + 0x000000003bc0b108 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b11d 0x3 + .rodata.driver_name + 0x000000003bc0b120 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b129 0x7 + .rodata.dwc2_udc_ops + 0x000000003bc0b130 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .rodata.ep0name + 0x000000003bc0b178 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b184 0x4 + .rodata.ep1name + 0x000000003bc0b188 0xb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b193 0x5 + .rodata.ep2name + 0x000000003bc0b198 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b1a4 0x4 + .rodata.ep3name + 0x000000003bc0b1a8 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b1b2 0x6 + .rodata.dwc2_handle_ep0.str1.8 + 0x000000003bc0b1b8 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .rodata.dwc2_handle_ep0 + 0x000000003bc0b1cc 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + *fill* 0x000000003bc0b1fc 0x4 + .rodata.dwc2_udc_irq.str1.8 + 0x000000003bc0b200 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + *fill* 0x000000003bc0b212 0x6 + .rodata.usb_polling.str1.8 + 0x000000003bc0b218 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + *fill* 0x000000003bc0b229 0x7 + .rodata.crc16_tab + 0x000000003bc0b230 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .rodata.LZ4F_decompress + 0x000000003bc0b430 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + *fill* 0x000000003bc0b46c 0x4 + .rodata.blockSizes.0 + 0x000000003bc0b470 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.dec64table + 0x000000003bc0b490 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.inc32table + 0x000000003bc0b4b0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.XXH32_finalize.constprop.0 + 0x000000003bc0b4d0 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + *fill* 0x000000003bc0b50c 0x4 + .rodata.ddr_init.str1.8 + 0x000000003bc0b510 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + *fill* 0x000000003bc0b536 0x2 + .rodata.read_ddr_pkg_info.str1.8 + 0x000000003bc0b538 0xe2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + *fill* 0x000000003bc0b61a 0x2 + .rodata.read_ddr_pkg_info + 0x000000003bc0b61c 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + *fill* 0x000000003bc0b664 0x4 + .rodata.ddr_sys_bring_up.str1.8 + 0x000000003bc0b668 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + 0x81 (size before relaxing) + .rodata.cst8 0x000000003bc0b6f0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .rodata.cvx16_pinmux + 0x000000003bc0b710 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .rodata.ctrl_init_update_by_dram_size + 0x000000003bc0b738 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc0b74c __RO_END__ = . + +.rela.dyn 0x000000003bc0b750 0x0 + .rela.text.setup_dl_flag + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o + .rela.text.load_param2 + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o + .rela.text.load_ddr_param + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o + .rela.text.load_ddr + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o + .rela.text.load_blcp_2nd + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o + .rela.text.load_monitor + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o + .rela.text.load_loader_2nd + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o + .rela.text.load_rest + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o + .rela.text.init + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o + +.data 0x000000003bc0b74c 0x2c4 + 0x000000003bc0b750 . = ALIGN (0x10) + *fill* 0x000000003bc0b74c 0x4 + 0x000000003bc0b750 __DATA_START__ = . + *(.data*) + .data.time_records + 0x000000003bc0b750 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc0b750 time_records + .data.ConfDesc + 0x000000003bc0b758 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b761 0x7 + .data.acm_buf 0x000000003bc0b768 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .data.acm_call_mgmt_descriptor + 0x000000003bc0b770 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b775 0x3 + .data.acm_control_interface_desc + 0x000000003bc0b778 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b781 0x7 + .data.acm_data_interface_desc + 0x000000003bc0b788 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b791 0x7 + .data.acm_descriptor + 0x000000003bc0b798 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b79c 0x4 + .data.acm_fs_in_desc + 0x000000003bc0b7a0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7a7 0x1 + .data.acm_fs_notify_desc + 0x000000003bc0b7a8 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7af 0x1 + .data.acm_fs_out_desc + 0x000000003bc0b7b0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7b7 0x1 + .data.acm_header_desc + 0x000000003bc0b7b8 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7bd 0x3 + .data.acm_hs_in_desc + 0x000000003bc0b7c0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7c7 0x1 + .data.acm_hs_notify_desc + 0x000000003bc0b7c8 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7cf 0x1 + .data.acm_hs_out_desc + 0x000000003bc0b7d0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7d7 0x1 + .data.acm_union_desc + 0x000000003bc0b7d8 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7dd 0x3 + .data.bosDesc 0x000000003bc0b7e0 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7e5 0x3 + .data.bulkBufAlloc + 0x000000003bc0b7e8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .data.capabilityExtDesc + 0x000000003bc0b7f0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7f7 0x1 + .data.cb0_buf 0x000000003bc0b7f8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .data.cb1_buf 0x000000003bc0b800 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .data.cb2_buf 0x000000003bc0b808 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .data.cmdBufAlloc + 0x000000003bc0b810 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .data.descriptorsFs + 0x000000003bc0b818 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .data.descriptorsHs + 0x000000003bc0b868 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .data.devHsDesc + 0x000000003bc0b8b8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b8ca 0x6 + .data.drv_obj 0x000000003bc0b8d0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .data.ep0BuffAlloc + 0x000000003bc0b920 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .data.g_driver + 0x000000003bc0b928 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .data.handler 0x000000003bc0b980 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .data.languageDesc + 0x000000003bc0b988 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b98c 0x4 + .data.qualifierDesc + 0x000000003bc0b990 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b99a 0x6 + .data.rsp_buf 0x000000003bc0b9a0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .data.setup_buf + 0x000000003bc0b9a8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .data.dwc2_ep_ops + 0x000000003bc0b9b0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .data.ep0_fifo_size + 0x000000003bc0ba00 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .data.ep_fifo_size + 0x000000003bc0ba04 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .data.cv_usb_vid + 0x000000003bc0ba08 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + 0x000000003bc0ba08 cv_usb_vid + *fill* 0x000000003bc0ba0a 0x2 + .data.ddr_data_rate + 0x000000003bc0ba0c 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc0ba0c ddr_data_rate + 0x000000003bc0ba10 . = ALIGN (0x10) + 0x000000003bc0ba10 __DATA_END__ = . + +stacks 0x000000003bc0ba10 0x2030 + 0x000000003bc0ba40 . = ALIGN (0x40) + *fill* 0x000000003bc0ba10 0x30 + 0x000000003bc0ba40 __STACKS_START__ = . + 0x000000003bc0da40 . = (. + 0x2000) + *fill* 0x000000003bc0ba40 0x2000 + 0x000000003bc0da40 . = ALIGN (0x40) + 0x000000003bc0da40 __STACKS_END__ = . + +.bss 0x000000003bc0dc00 0x5c10 + 0x000000003bc0dc00 . = ALIGN (0x10) + 0x000000003bc0dc00 __BSS_START__ = . + *(SORT_BY_ALIGNMENT(.bss*)) + .bss.fip_param2 + 0x000000003bc0dc00 0x1000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .bss.sram_union_buf + 0x000000003bc0ec00 0x4000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .bss.acm_bufArr + 0x000000003bc12c00 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12c00 acm_bufArr + .bss.bulkBufAllocArr + 0x000000003bc12c80 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12c80 bulkBufAllocArr + .bss.cb0_bufArr + 0x000000003bc12e80 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12e80 cb0_bufArr + .bss.cb1_bufArr + 0x000000003bc12f00 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12f00 cb1_bufArr + .bss.cb2_bufArr + 0x000000003bc12f80 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12f80 cb2_bufArr + .bss.cmdBufAllocArr + 0x000000003bc13000 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc13000 cmdBufAllocArr + .bss.ep0BuffAllocArr + 0x000000003bc13200 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc13200 ep0BuffAllocArr + .bss.handlerArr + 0x000000003bc13280 0x400 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc13280 handlerArr + .bss.rsp_bufArr + 0x000000003bc13680 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc13680 rsp_bufArr + *fill* 0x000000003bc13690 0x30 + .bss.setup_bufArr + 0x000000003bc136c0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc136c0 setup_bufArr + .bss.fw_dynamic_info + 0x000000003bc136c8 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .bss.comp_alloc_buf + 0x000000003bc136f8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .bss.comp_alloc_size + 0x000000003bc13700 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .bss.acm 0x000000003bc13708 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc13708 acm + .bss.bulkBuf 0x000000003bc13710 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.bulkInReq + 0x000000003bc13718 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.bulkOutReq + 0x000000003bc13720 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.cmdBuf 0x000000003bc13728 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.ep0Buff 0x000000003bc13730 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.ep0Req 0x000000003bc13738 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.epIn 0x000000003bc13740 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.epOut 0x000000003bc13748 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.fip_buf 0x000000003bc13750 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.productDesc + 0x000000003bc13758 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc13774 0x4 + .bss.serial.2 0x000000003bc13778 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.serialDesc + 0x000000003bc13788 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc137a4 0x4 + .bss.vendorDesc + 0x000000003bc137a8 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.reg 0x000000003bc137b8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc137b8 reg + .bss.the_controller + 0x000000003bc137c0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc137c0 the_controller + .bss.reg_set 0x000000003bc137c8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc137c8 reg_set + .bss.reg_span 0x000000003bc137d0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc137d0 reg_span + .bss.reg_step 0x000000003bc137d8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc137d8 reg_step + .bss.fip_tx_offset + 0x000000003bc137e0 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.fip_tx_size + 0x000000003bc137e4 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.transfer_size + 0x000000003bc137e8 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.ts 0x000000003bc137ec 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.rddata 0x000000003bc137f0 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc137f0 rddata + .bss.dev_freq 0x000000003bc137f4 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc137f4 dev_freq + .bss.freq_in 0x000000003bc137f8 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc137f8 freq_in + .bss.mod_freq 0x000000003bc137fc 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc137fc mod_freq + .bss.tar_freq 0x000000003bc13800 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc13800 tar_freq + .bss.ack_idx.6 + 0x000000003bc13804 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.acm_configValue + 0x000000003bc13805 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc13805 acm_configValue + .bss.configBreak + 0x000000003bc13806 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.configValue + 0x000000003bc13807 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.flagEnterDL + 0x000000003bc13808 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.flagReboot + 0x000000003bc13809 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.is_serial_patched.3 + 0x000000003bc1380a 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.mem_alloc_cnt + 0x000000003bc1380b 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .bss.ddr_capacity + 0x000000003bc1380c 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1380c ddr_capacity + .bss.ddr_type 0x000000003bc1380d 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1380d ddr_type + .bss.ddr_vendor + 0x000000003bc1380e 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1380e ddr_vendor + .bss.pkg 0x000000003bc1380f 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1380f pkg + *(COMMON) + 0x000000003bc13810 . = ALIGN (0x10) + 0x000000003bc13810 __BSS_END__ = . + 0x000000003bc13810 __BL2_END__ = . + 0x0000000000005c10 __BSS_SIZE__ = SIZEOF (.bss) + 0x0000000000000001 ASSERT ((. <= 0x3bc19000), BL2 image has exceeded its limit.) + 0x0000000004400100 p_rom_api_cryptodma_aes_decrypt = 0x4400100 + 0x0000000004400080 p_rom_api_flash_init = 0x4400080 + 0x0000000004400020 p_rom_api_get_boot_src = 0x4400020 + 0x00000000044000c0 p_rom_api_get_number_of_retries = 0x44000c0 + 0x00000000044000a0 p_rom_api_image_crc = 0x44000a0 + 0x0000000004400060 p_rom_api_load_image = 0x4400060 + 0x0000000004400040 p_rom_api_set_boot_src = 0x4400040 + 0x00000000044000e0 p_rom_api_verify_rsa = 0x44000e0 +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/assert.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_entrypoint.o +OUTPUT(/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2.elf elf64-littleriscv) + +.debug_info 0x0000000000000000 0x6993c + .debug_info 0x0000000000000000 0x89 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o + .debug_info 0x0000000000000089 0x1a1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_info 0x000000000000022a 0x1e4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .debug_info 0x000000000000040e 0x45f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_info 0x000000000000086d 0x3d6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_info 0x0000000000000c43 0x33f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_info 0x0000000000000f82 0x474 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_info 0x00000000000013f6 0x1a24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_info 0x0000000000002e1a 0x622 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .debug_info 0x000000000000343c 0x22a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .debug_info 0x0000000000003666 0x41f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .debug_info 0x0000000000003a85 0x2d6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .debug_info 0x0000000000003d5b 0x13d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o + .debug_info 0x0000000000003e98 0xf6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o + .debug_info 0x0000000000003f8e 0x483 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_info 0x0000000000004411 0x1c6e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_info 0x000000000000607f 0x9df /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_info 0x0000000000006a5e 0x3a2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_info 0x0000000000006e00 0x2fa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_info 0x0000000000009da8 0x3221 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_info 0x000000000000cfc9 0x39b8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_info 0x0000000000010981 0x2b7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_info 0x0000000000010c38 0x279 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .debug_info 0x0000000000010eb1 0x17cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_info 0x000000000001267e 0x285e2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_info 0x000000000003ac60 0x4039 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_info 0x000000000003ec99 0x1a7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .debug_info 0x000000000003ee40 0x516 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_info 0x000000000003f356 0x1135 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_info 0x000000000004048b 0x24b1d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_info 0x0000000000064fa8 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_info 0x0000000000065188 0x11b2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_info 0x000000000006633a 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_info 0x0000000000066402 0x1561 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_info 0x0000000000067963 0x1fab /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .debug_info 0x000000000006990e 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_entrypoint.o + +.debug_abbrev 0x0000000000000000 0x4df7 + .debug_abbrev 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o + .debug_abbrev 0x0000000000000048 0xc1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_abbrev 0x0000000000000109 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .debug_abbrev 0x00000000000001b9 0x1ae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_abbrev 0x0000000000000367 0x197 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_abbrev 0x00000000000004fe 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_abbrev 0x0000000000000685 0x1e5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_abbrev 0x000000000000086a 0x371 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_abbrev 0x0000000000000bdb 0x134 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .debug_abbrev 0x0000000000000d0f 0x11a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .debug_abbrev 0x0000000000000e29 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .debug_abbrev 0x0000000000000f49 0x15d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .debug_abbrev 0x00000000000010a6 0xac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o + .debug_abbrev 0x0000000000001152 0x8c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o + .debug_abbrev 0x00000000000011de 0x202 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_abbrev 0x00000000000013e0 0x42f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_abbrev 0x000000000000180f 0x305 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_abbrev 0x0000000000001b14 0x181 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_abbrev 0x0000000000001c95 0x6f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_abbrev 0x000000000000238b 0x657 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_abbrev 0x00000000000029e2 0x55c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_abbrev 0x0000000000002f3e 0x15a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_abbrev 0x0000000000003098 0x12f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .debug_abbrev 0x00000000000031c7 0x454 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_abbrev 0x000000000000361b 0x69b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_abbrev 0x0000000000003cb6 0x4b9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_abbrev 0x000000000000416f 0xe9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .debug_abbrev 0x0000000000004258 0x17f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_abbrev 0x00000000000043d7 0x203 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_abbrev 0x00000000000045da 0x3e8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_abbrev 0x00000000000049c2 0x9e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_abbrev 0x0000000000004a60 0xd3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_abbrev 0x0000000000004b33 0x69 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_abbrev 0x0000000000004b9c 0x17d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_abbrev 0x0000000000004d19 0xca /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .debug_abbrev 0x0000000000004de3 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_entrypoint.o + +.debug_aranges 0x0000000000000000 0x1e80 + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o + .debug_aranges + 0x0000000000000020 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_aranges + 0x0000000000000070 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .debug_aranges + 0x00000000000000e0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_aranges + 0x0000000000000170 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_aranges + 0x00000000000001b0 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_aranges + 0x0000000000000250 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_aranges + 0x00000000000002a0 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_aranges + 0x0000000000000380 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .debug_aranges + 0x00000000000003b0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .debug_aranges + 0x00000000000003f0 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .debug_aranges + 0x0000000000000470 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .debug_aranges + 0x00000000000004a0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o + .debug_aranges + 0x00000000000004e0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o + .debug_aranges + 0x0000000000000510 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_aranges + 0x0000000000000560 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_aranges + 0x0000000000000630 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_aranges + 0x00000000000006d0 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_aranges + 0x0000000000000770 0x170 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_aranges + 0x00000000000008e0 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_aranges + 0x0000000000000ae0 0x190 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_aranges + 0x0000000000000c70 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_aranges + 0x0000000000000ca0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .debug_aranges + 0x0000000000000cf0 0x100 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_aranges + 0x0000000000000df0 0x7c0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_aranges + 0x00000000000015b0 0x1b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_aranges + 0x0000000000001760 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .debug_aranges + 0x0000000000001790 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_aranges + 0x0000000000001800 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_aranges + 0x0000000000001850 0x4e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_aranges + 0x0000000000001d30 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_aranges + 0x0000000000001d60 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_aranges + 0x0000000000001d90 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_aranges + 0x0000000000001dc0 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_aranges + 0x0000000000001e20 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .debug_aranges + 0x0000000000001e50 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_entrypoint.o + +.debug_macro 0x0000000000000000 0x9b13 + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o + .debug_macro 0x0000000000000011 0x86e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o + .debug_macro 0x000000000000087f 0x115 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000000994 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001208 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001477 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001488 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x000000000000160f 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001655 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x000000000000166b 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001693 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x00000000000016af 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x000000000000185e 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001923 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x00000000000019a5 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001bce 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001c8c 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001d86 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001f66 0x186b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x00000000000037d1 0x12c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x00000000000038fd 0x121 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000003a1e 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000003b4e 0x178 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000003cc6 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000003d92 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000003da8 0x146 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000003eee 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000003f94 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x000000000000404c 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x000000000000407a 0x14b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x00000000000041c5 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x000000000000443c 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x00000000000044d0 0xe2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x00000000000045b2 0x125 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x00000000000046d7 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000004754 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .debug_macro 0x000000000000479a 0x9b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000004835 0x11b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004950 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004966 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004982 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004a40 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000004a90 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000004ad6 0x1f9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000004ccf 0xa60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x000000000000572f 0x872 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000005fa1 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000005fe1 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000005ffd 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x000000000000601f 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000006125 0x192 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x00000000000062b7 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x00000000000062cd 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x00000000000062f5 0x13c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000006431 0x16b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x000000000000659c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x00000000000065b2 0x61 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000006613 0x9d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x00000000000066b0 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000006702 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006902 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006918 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006928 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000693e 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000697e 0x51d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006e9b 0x17a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000007015 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000703d 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000753a 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x00000000000075ce 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000007644 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000765a 0x207 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007861 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007877 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x00000000000078c3 0x517 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007dda 0x1cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000007fa7 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x00000000000080d7 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000008125 0x308 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x000000000000842d 0x2ef /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x000000000000871c 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000087c4 0x27 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000087eb 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x000000000000884d 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000088ca 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000088f6 0x1ac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000008aa2 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000008af4 0x11b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000008c0f 0xfb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008d0a 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008d26 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008ef9 0x1c4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x00000000000090bd 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000009163 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x00000000000095fc 0xd7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x00000000000096d3 0x110 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x00000000000097e3 0xac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x000000000000988f 0xa1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000009930 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x00000000000099c8 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000009a72 0xa1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + +.debug_line 0x0000000000000000 0x777fd + .debug_line 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o + .debug_line 0x0000000000000028 0x231 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_line 0x0000000000000259 0x351 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .debug_line 0x00000000000005aa 0x4f5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_line 0x0000000000000a9f 0x341 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_line 0x0000000000000de0 0x559 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_line 0x0000000000001339 0x812 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_line 0x0000000000001b4b 0x1538 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_line 0x0000000000003083 0x21d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .debug_line 0x00000000000032a0 0x2db /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .debug_line 0x000000000000357b 0x5f0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .debug_line 0x0000000000003b6b 0x2f7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .debug_line 0x0000000000003e62 0x1f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o + .debug_line 0x0000000000004058 0x117 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o + .debug_line 0x000000000000416f 0x589 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_line 0x00000000000046f8 0x14d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_line 0x0000000000005bd0 0x792 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_line 0x0000000000006362 0x282 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_line 0x00000000000065e4 0x265c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_line 0x0000000000008c40 0x27a7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_line 0x000000000000b3e7 0x3667 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_line 0x000000000000ea4e 0x2d9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_line 0x000000000000ed27 0x2a4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .debug_line 0x000000000000efcb 0x4528 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_line 0x00000000000134f3 0x34953 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_line 0x0000000000047e46 0x3d78 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_line 0x000000000004bbbe 0x260 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .debug_line 0x000000000004be1e 0x622 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_line 0x000000000004c440 0xcb5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_line 0x000000000004d0f5 0x27146 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_line 0x000000000007423b 0x301 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_line 0x000000000007453c 0xc73 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_line 0x00000000000751af 0x165 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_line 0x0000000000075314 0xebc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_line 0x00000000000761d0 0x145c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + .debug_line 0x000000000007762c 0x1d1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_entrypoint.o + +.debug_str 0x0000000000000000 0x2399c + .debug_str 0x0000000000000000 0x2980 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o + 0x29a6 (size before relaxing) + .debug_str 0x0000000000002980 0x94c5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + 0xbeca (size before relaxing) + .debug_str 0x000000000000be45 0x217 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + 0x717f (size before relaxing) + .debug_str 0x000000000000c05c 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + 0xbf65 (size before relaxing) + .debug_str 0x000000000000c154 0x243 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + 0x7226 (size before relaxing) + .debug_str 0x000000000000c397 0x2ec /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + 0x67ea (size before relaxing) + .debug_str 0x000000000000c683 0x7f0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + 0x77a2 (size before relaxing) + .debug_str 0x000000000000ce73 0xf0b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + 0x7f63 (size before relaxing) + .debug_str 0x000000000000dd7e 0x30c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + 0x77ac (size before relaxing) + .debug_str 0x000000000000e08a 0x281 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + 0x4370 (size before relaxing) + .debug_str 0x000000000000e30b 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + 0x46c2 (size before relaxing) + .debug_str 0x000000000000e38b 0x4b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + 0x70b7 (size before relaxing) + .debug_str 0x000000000000e3d6 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o + 0x3c13 (size before relaxing) + .debug_str 0x000000000000e3fc 0x1b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o + 0x3a8b (size before relaxing) + .debug_str 0x000000000000e417 0x5ca5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + 0xd1d8 (size before relaxing) + .debug_str 0x00000000000140bc 0x443 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + 0x81fe (size before relaxing) + .debug_str 0x00000000000144ff 0xc1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + 0x8121 (size before relaxing) + .debug_str 0x0000000000015119 0x1cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + 0x437f (size before relaxing) + .debug_str 0x00000000000152e6 0x4ba0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + 0xca29 (size before relaxing) + .debug_str 0x0000000000019e86 0x6fa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0xba63 (size before relaxing) + .debug_str 0x000000000001a580 0x314 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0xb80f (size before relaxing) + .debug_str 0x000000000001a894 0x19 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + 0x75c8 (size before relaxing) + .debug_str 0x000000000001a8ad 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + 0x4115 (size before relaxing) + .debug_str 0x000000000001a8f3 0x12b6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + 0x9057 (size before relaxing) + .debug_str 0x000000000001bba9 0x3a87 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + 0x85bd (size before relaxing) + .debug_str 0x000000000001f630 0x7f5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + 0x7a74 (size before relaxing) + .debug_str 0x000000000001fe25 0x51 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + 0x7216 (size before relaxing) + .debug_str 0x000000000001fe76 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + 0x72c3 (size before relaxing) + .debug_str 0x000000000001fef3 0x2ed3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + 0x9efe (size before relaxing) + .debug_str 0x0000000000022dc6 0xa92 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + 0x87c3 (size before relaxing) + .debug_str 0x0000000000023858 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x9876 (size before relaxing) + .debug_str 0x00000000000238a8 0x1f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + 0x5093 (size before relaxing) + .debug_str 0x00000000000238c7 0x27 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + 0x4e2c (size before relaxing) + .debug_str 0x00000000000238ee 0x4f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + 0x7579 (size before relaxing) + .debug_str 0x000000000002393d 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + 0x743b (size before relaxing) + .debug_str 0x0000000000023971 0x2b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_entrypoint.o + 0x65 (size before relaxing) + +.comment 0x0000000000000000 0x1d + .comment 0x0000000000000000 0x1d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o + 0x1e (size before relaxing) + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + +.note.GNU-stack + 0x0000000000000000 0x0 + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + +.debug_ranges 0x0000000000000000 0x301e0 + .debug_ranges 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_ranges 0x0000000000000040 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .debug_ranges 0x00000000000000a0 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_ranges 0x00000000000001c0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_ranges 0x00000000000001f0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_ranges 0x0000000000000280 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_ranges 0x0000000000000300 0x8d0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_ranges 0x0000000000000bd0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .debug_ranges 0x0000000000000bf0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .debug_ranges 0x0000000000000c20 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .debug_ranges 0x0000000000000d40 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .debug_ranges 0x0000000000000d60 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o + .debug_ranges 0x0000000000000d90 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o + .debug_ranges 0x0000000000000db0 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_ranges 0x0000000000000e90 0x100 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_ranges 0x0000000000000f90 0x160 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_ranges 0x00000000000010f0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_ranges 0x0000000000001180 0x3d0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_ranges 0x0000000000001550 0x480 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_ranges 0x00000000000019d0 0x6b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_ranges 0x0000000000002080 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_ranges 0x00000000000020a0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .debug_ranges 0x00000000000020e0 0xbe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_ranges 0x0000000000002cc0 0x1cf40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_ranges 0x000000000001fc00 0x27b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_ranges 0x00000000000223b0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .debug_ranges 0x00000000000223d0 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_ranges 0x00000000000224a0 0x190 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_ranges 0x0000000000022630 0xce70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_ranges 0x000000000002f4a0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_ranges 0x000000000002f4c0 0x210 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_ranges 0x000000000002f6d0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_ranges 0x000000000002f6f0 0x570 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_ranges 0x000000000002fc60 0x580 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + +.debug_frame 0x0000000000000000 0x4810 + .debug_frame 0x0000000000000000 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_frame 0x0000000000000058 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .debug_frame 0x00000000000000e0 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_frame 0x0000000000000198 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_frame 0x00000000000001f8 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_frame 0x00000000000002f0 0xd8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_frame 0x00000000000003c8 0x1d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_frame 0x00000000000005a0 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .debug_frame 0x00000000000005c8 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .debug_frame 0x0000000000000608 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .debug_frame 0x00000000000006a8 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .debug_frame 0x00000000000006e0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o + .debug_frame 0x0000000000000720 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o + .debug_frame 0x0000000000000748 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_frame 0x00000000000007d0 0x258 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_frame 0x0000000000000a28 0x158 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_frame 0x0000000000000b80 0x118 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_frame 0x0000000000000c98 0x3b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_frame 0x0000000000001048 0x5a8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_frame 0x00000000000015f0 0x520 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_frame 0x0000000000001b10 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_frame 0x0000000000001b50 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .debug_frame 0x0000000000001bb8 0x2d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_frame 0x0000000000001e90 0x1758 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_frame 0x00000000000035e8 0x488 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_frame 0x0000000000003a70 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .debug_frame 0x0000000000003aa8 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_frame 0x0000000000003b60 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_frame 0x0000000000003be8 0xb08 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_frame 0x00000000000046f0 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_frame 0x0000000000004718 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_frame 0x0000000000004750 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_frame 0x0000000000004778 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_frame 0x00000000000047e8 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o + +.debug_loc 0x0000000000000000 0xc2b4e + .debug_loc 0x0000000000000000 0x18c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o + .debug_loc 0x000000000000018c 0x28a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o + .debug_loc 0x0000000000000416 0x143 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_loc 0x0000000000000559 0x24e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o + .debug_loc 0x00000000000007a7 0x8b7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o + .debug_loc 0x000000000000105e 0x1f54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o + .debug_loc 0x0000000000002fb2 0x39 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o + .debug_loc 0x0000000000002feb 0x450 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o + .debug_loc 0x000000000000343b 0xc56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o + .debug_loc 0x0000000000004091 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o + .debug_loc 0x000000000000414f 0x262 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o + .debug_loc 0x00000000000043b1 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o + .debug_loc 0x0000000000004433 0x38f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o + .debug_loc 0x00000000000047c2 0xe17 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o + .debug_loc 0x00000000000055d9 0x9d2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o + .debug_loc 0x0000000000005fab 0x156 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_loc 0x0000000000006101 0x1f8b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o + .debug_loc 0x000000000000808c 0x28fb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_loc 0x000000000000a987 0x4255 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_loc 0x000000000000ebdc 0x11d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o + .debug_loc 0x000000000000ecf9 0x33f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o + .debug_loc 0x000000000000f038 0xa0cf /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_loc 0x0000000000019107 0x5f2ef /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o + .debug_loc 0x00000000000783f6 0x8560 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o + .debug_loc 0x0000000000080956 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o + .debug_loc 0x00000000000809ee 0x22c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_loc 0x0000000000080c1a 0xdfe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_loc 0x0000000000081a18 0x3a3d4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_loc 0x00000000000bbdec 0x1c14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_loc 0x00000000000bda00 0x2003 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_loc 0x00000000000bfa03 0x314b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2.sym b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2.sym new file mode 100644 index 000000000..aa68b6c67 --- /dev/null +++ b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2.sym @@ -0,0 +1,402 @@ + 39: 000000003bc0ec00 16384 OBJECT LOCAL DEFAULT 4 sram_union_buf + 167: 000000003bc047b8 5002 FUNC LOCAL DEFAULT 1 LzmaDec_DecodeReal2 + 38: 000000003bc0dc00 4096 OBJECT LOCAL DEFAULT 4 fip_param2 + 280: 000000003bc0721c 2012 FUNC GLOBAL DEFAULT 1 LZ4F_decompress + 376: 000000003bc040a4 1344 FUNC GLOBAL DEFAULT 1 dwc2_udc_irq + 168: 000000003bc05b42 1256 FUNC LOCAL DEFAULT 1 LzmaDec_TryDummy + 284: 000000003bc022e4 1144 FUNC GLOBAL DEFAULT 1 AcmApp + 62: 000000003bc01bb4 1090 FUNC LOCAL DEFAULT 1 setup + 374: 000000003bc13280 1024 OBJECT GLOBAL DEFAULT 4 handlerArr + 396: 000000003bc09f46 950 FUNC GLOBAL DEFAULT 1 phy_init + 335: 000000003bc03d5e 838 FUNC GLOBAL DEFAULT 1 dwc2_handle_ep0 + 281: 000000003bc098d8 826 FUNC GLOBAL DEFAULT 1 cvx16_pinmux + 181: 000000003bc07a3a 826 FUNC LOCAL DEFAULT 1 XXH32_finalize.constprop. + 295: 000000003bc06ce2 790 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_force + 398: 000000003bc02f28 654 FUNC GLOBAL DEFAULT 1 dwc2_reconfig_usbd + 222: 000000003bc0603e 636 FUNC GLOBAL DEFAULT 1 LzmaDec_DecodeToDic + 172: 000000003bc06484 630 FUNC LOCAL DEFAULT 1 LZ4_decompress_safe_withS + 219: 000000003bc0680a 622 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe + 341: 000000003bc06a78 618 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_withP + 58: 000000003bc018aa 564 FUNC LOCAL DEFAULT 1 bulkOutCmpl + 321: 000000003bc081d6 558 FUNC GLOBAL DEFAULT 1 read_ddr_pkg_info + 380: 000000003bc0845e 548 FUNC GLOBAL DEFAULT 1 ddr_sys_bring_up + 340: 000000003bc09c14 548 FUNC GLOBAL DEFAULT 1 ddrc_init + 313: 000000003bc0113e 520 FUNC GLOBAL DEFAULT 1 load_loader_2nd + 377: 000000003bc13000 512 OBJECT GLOBAL DEFAULT 4 cmdBufAllocArr + 218: 000000003bc12c80 512 OBJECT GLOBAL DEFAULT 4 bulkBufAllocArr + 164: 000000003bc0b230 512 OBJECT LOCAL DEFAULT 1 crc16_tab + 238: 000000003bc093cc 490 FUNC GLOBAL DEFAULT 1 cvx16_rdlvl_req + 236: 000000003bc090b8 470 FUNC GLOBAL DEFAULT 1 cvx16_wrlvl_req + 332: 000000003bc07f90 466 FUNC GLOBAL DEFAULT 1 XXH32_update + 338: 000000003bc07d74 454 FUNC GLOBAL DEFAULT 1 XXH32 + 136: 000000003bc02d62 422 FUNC LOCAL DEFAULT 1 _dwc2_ep_disable.isra.0 + 174: 000000003bc07048 420 FUNC LOCAL DEFAULT 1 LZ4F_decodeHeader + 342: 000000003bc00358 410 FUNC GLOBAL DEFAULT 1 tf_printf + 276: 000000003bc0068e 398 FUNC GLOBAL DEFAULT 1 sys_pll_nd + 226: 000000003bc095b6 386 FUNC GLOBAL DEFAULT 1 cvx16_wdqlvl_req + 326: 000000003bc00eb2 358 FUNC GLOBAL DEFAULT 1 load_blcp_2nd + 159: 000000003bc0396e 348 FUNC LOCAL DEFAULT 1 setdma_tx + 269: 000000003bc031b6 342 FUNC GLOBAL DEFAULT 1 usb_gadget_register_drive + 315: 000000003bc0331e 336 FUNC GLOBAL DEFAULT 1 dwc2_udc_probe + 354: 000000003bc0928e 318 FUNC GLOBAL DEFAULT 1 cvx16_rdglvl_req + 283: 000000003bc02170 312 FUNC GLOBAL DEFAULT 1 acm_app_init + 249: 000000003bc01018 294 FUNC GLOBAL DEFAULT 1 load_monitor + 361: 000000003bc0973a 282 FUNC GLOBAL DEFAULT 1 ctrl_init_detect_dram_siz + 173: 000000003bc066fa 272 FUNC LOCAL DEFAULT 1 LZ4F_updateDict + 158: 000000003bc03818 252 FUNC LOCAL DEFAULT 1 complete_rx + 272: 000000003bc08c2a 248 FUNC GLOBAL DEFAULT 1 cvx16_chg_pll_freq + 308: 000000003bc087bc 234 FUNC GLOBAL DEFAULT 1 cvx16_bist_rdlvl_init + 302: 000000003bc01508 232 FUNC GLOBAL DEFAULT 1 decompress_lzma + 230: 000000003bc01346 230 FUNC GLOBAL DEFAULT 1 load_rest + 135: 000000003bc02c88 218 FUNC LOCAL DEFAULT 1 dwc2_hsotg_init_fifo.cons + 318: 000000003bc045fc 216 FUNC GLOBAL DEFAULT 1 dwc2_queue + 346: 000000003bc0209a 208 FUNC GLOBAL DEFAULT 1 print_buf_addr + 279: 000000003bc00c6e 208 FUNC GLOBAL DEFAULT 1 load_param2 + 228: 000000003bc004f2 200 FUNC GLOBAL DEFAULT 1 __system_reset + 392: 000000003bc00dec 198 FUNC GLOBAL DEFAULT 1 load_ddr + 278: 000000003bc00878 188 FUNC GLOBAL DEFAULT 1 set_rtc_en_registers + 334: 000000003bc09e94 178 FUNC GLOBAL DEFAULT 1 ctrl_init_update_by_dram_ + 204: 000000003bc03cac 178 FUNC GLOBAL DEFAULT 1 dwc2_udc_ep_activate + 240: 000000003bc088a6 176 FUNC GLOBAL DEFAULT 1 cvx16_bist_wdqlvl_init + 384: 000000003bc01620 174 FUNC GLOBAL DEFAULT 1 decompress_lz4 + 200: 000000003bc00d3e 174 FUNC GLOBAL DEFAULT 1 load_ddr_param + 367: 000000003bc063b6 170 FUNC GLOBAL DEFAULT 1 LzmaDecode + 157: 000000003bc0376e 170 FUNC LOCAL DEFAULT 1 setdma_rx.isra.0 + 339: 000000003bc08a20 166 FUNC GLOBAL DEFAULT 1 cvx16_rdvld_train + 298: 000000003bc08f58 166 FUNC GLOBAL DEFAULT 1 cvx16_pll_init + 296: 000000003bc01ff8 162 FUNC GLOBAL DEFAULT 1 convert_buf_addr + 129: 000000003bc0282c 160 FUNC LOCAL DEFAULT 1 dwc2_ep_enable + 343: 000000003bc029e2 154 FUNC GLOBAL DEFAULT 1 usb_gadget_unregister_dri + 299: 000000003bc0142c 152 FUNC GLOBAL DEFAULT 1 bl2_main + 133: 000000003bc02b44 144 FUNC LOCAL DEFAULT 1 dwc2_hsotg_txfifo_flush.c + 151: 000000003bc034ba 142 FUNC LOCAL DEFAULT 1 set_max_pktsize + 397: 000000003bc09854 132 FUNC GLOBAL DEFAULT 1 pll_init + 27: 000000003bc002d6 130 FUNC LOCAL DEFAULT 1 unsigned_num_print + 348: 000000003bc12f80 128 OBJECT GLOBAL DEFAULT 4 cb2_bufArr + 322: 000000003bc12c00 128 OBJECT GLOBAL DEFAULT 4 acm_bufArr + 290: 000000003bc13200 128 OBJECT GLOBAL DEFAULT 4 ep0BuffAllocArr + 275: 000000003bc12e80 128 OBJECT GLOBAL DEFAULT 4 cb0_bufArr + 235: 000000003bc12f00 128 OBJECT GLOBAL DEFAULT 4 cb1_bufArr + 154: 000000003bc03608 128 FUNC LOCAL DEFAULT 1 dwc2_ep0_complete_out + 264: 000000003bc016ce 126 FUNC GLOBAL DEFAULT 1 decompress + 155: 000000003bc03688 126 FUNC LOCAL DEFAULT 1 dwc2_udc_ep0_zlp + 259: 000000003bc00b7a 124 FUNC GLOBAL DEFAULT 1 gpio_in_value + 356: 000000003bc009a6 122 FUNC GLOBAL DEFAULT 1 ntostr + 211: 000000003bc0021a 120 FUNC GLOBAL DEFAULT 1 jump_to_monitor + 393: 000000003bc08ac6 116 FUNC GLOBAL DEFAULT 1 cvx16_synp_mrw + 166: 000000003bc04746 114 FUNC LOCAL DEFAULT 1 LzmaDec_WriteRem + 263: 000000003bc09048 112 FUNC GLOBAL DEFAULT 1 cvx16_clk_gating_enable + 316: 000000003bc00934 110 FUNC GLOBAL DEFAULT 1 init_comm_info + 257: 000000003bc089b6 106 FUNC GLOBAL DEFAULT 1 cvx16_bist_start_check + 375: 000000003bc08eaa 104 FUNC GLOBAL DEFAULT 1 cvx16_dfi_ca_park_prbs + 282: 000000003bc08b3a 104 FUNC GLOBAL DEFAULT 1 cvx16_dll_cal + 156: 000000003bc03706 104 FUNC LOCAL DEFAULT 1 dwc2_udc_ep0_set_stall.is + 169: 000000003bc062d6 102 FUNC LOCAL DEFAULT 1 LzmaDec_AllocateProbs2.is + 331: 000000003bc03c4a 98 FUNC GLOBAL DEFAULT 1 dwc2_udc_set_halt + 153: 000000003bc035a6 98 FUNC LOCAL DEFAULT 1 dwc2_udc_ep_set_stall + 304: 000000003bc08956 96 FUNC GLOBAL DEFAULT 1 cvx16_bist_wdmlvl_init + 265: 000000003bc086d0 96 FUNC GLOBAL DEFAULT 1 cvx16_bist_wr_sram_init + 239: 000000003bc00a7a 96 FUNC GLOBAL DEFAULT 1 memcpy + 152: 000000003bc03548 94 FUNC LOCAL DEFAULT 1 dwc2_udc_ep_clear_stall + 134: 000000003bc02bd4 94 FUNC LOCAL DEFAULT 1 kill_all_requests.isra.0 + 328: 000000003bc08ba2 92 FUNC GLOBAL DEFAULT 1 cvx16_clk_normal + 60: 000000003bc01ade 92 FUNC LOCAL DEFAULT 1 getDescAcm + 330: 000000003bc00a20 90 FUNC GLOBAL DEFAULT 1 memset + 114: 000000003bc0b928 88 OBJECT LOCAL DEFAULT 2 g_driver + 337: 000000003bc07f3a 86 FUNC GLOBAL DEFAULT 1 XXH32_reset + 314: 000000003bc02c32 86 FUNC GLOBAL DEFAULT 1 dwc2_disconnect + 131: 000000003bc02960 84 FUNC LOCAL DEFAULT 1 dwc2_dequeue + 205: 000000003bc00afa 82 FUNC GLOBAL DEFAULT 1 putchar_l + 57: 000000003bc01858 82 FUNC LOCAL DEFAULT 1 get_unicode_string + 194: 000000003bc0840e 80 FUNC GLOBAL DEFAULT 1 axi_mon_start_all + 138: 000000003bc0b9b0 80 OBJECT LOCAL DEFAULT 2 dwc2_ep_ops + 112: 000000003bc0b8d0 80 OBJECT LOCAL DEFAULT 2 drv_obj + 110: 000000003bc0b868 80 OBJECT LOCAL DEFAULT 2 descriptorsHs + 109: 000000003bc0b818 80 OBJECT LOCAL DEFAULT 2 descriptorsFs + 59: 000000003bc01b64 80 FUNC LOCAL DEFAULT 1 bulkInCmpl + 217: 000000003bc08682 78 FUNC GLOBAL DEFAULT 1 cvx16_bist_wr_prbs_init + 291: 000000003bc0346e 76 FUNC GLOBAL DEFAULT 1 usb_gadget_handle_interru + 234: 000000003bc03b0e 76 FUNC GLOBAL DEFAULT 1 dwc2_write_fifo_ep0 + 365: 000000003bc005ec 74 FUNC GLOBAL DEFAULT 1 reset_c906l + 364: 000000003bc00636 74 FUNC GLOBAL DEFAULT 1 setup_dl_flag + 324: 000000003bc0633c 74 FUNC GLOBAL DEFAULT 1 LzmaProps_Decode + 285: 000000003bc08ffe 74 FUNC GLOBAL DEFAULT 1 cvx16_clk_gating_disable + 293: 000000003bc08d66 72 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 215: 000000003bc03b5a 72 FUNC GLOBAL DEFAULT 1 dwc2_set_address + 145: 000000003bc0b130 72 OBJECT LOCAL DEFAULT 1 dwc2_udc_ops + 127: 000000003bc027ac 72 FUNC LOCAL DEFAULT 1 pullup + 394: 000000003bc028da 70 FUNC GLOBAL DEFAULT 1 udc_reinit + 237: 000000003bc02afe 70 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_wait_bit_set + 224: 000000003bc08730 70 FUNC GLOBAL DEFAULT 1 cvx16_bist_wrlvl_init + 223: 000000003bc08776 70 FUNC GLOBAL DEFAULT 1 cvx16_bist_rdglvl_init + 383: 000000003bc0392a 68 FUNC GLOBAL DEFAULT 1 dwc2_ep_fifo_write + 372: 000000003bc03aca 68 FUNC GLOBAL DEFAULT 1 dwc2_ep_fifo_read + 229: 000000003bc00834 68 FUNC GLOBAL DEFAULT 1 switch_rtc_mode_2nd_stage + 221: 000000003bc08d22 68 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 56: 000000003bc01816 66 FUNC LOCAL DEFAULT 1 bind + 42: 000000003bc014c6 66 FUNC LOCAL DEFAULT 1 SzAlloc + 381: 000000003bc08162 64 FUNC GLOBAL DEFAULT 1 XXH32_digest + 357: 000000003bc046d4 64 FUNC GLOBAL DEFAULT 1 usb_polling + 352: 000000003bc03c0a 64 FUNC GLOBAL DEFAULT 1 dwc2_udc_set_nak + 311: 000000003bc00c2e 64 FUNC GLOBAL DEFAULT 1 load_image_by_usb + 307: 000000003bc02920 64 FUNC GLOBAL DEFAULT 1 dwc2_done + 243: 000000003bc03bca 64 FUNC GLOBAL DEFAULT 1 dwc2_ep0_write + 132: 000000003bc02ac2 60 FUNC LOCAL DEFAULT 1 wakeup + 268: 000000003bc08dae 58 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 126: 000000003bc02772 58 FUNC LOCAL DEFAULT 1 dwc2_free_request + 233: 000000003bc08de8 56 FUNC GLOBAL DEFAULT 1 cvx16_wait_for_dfi_init_c + 128: 000000003bc027f4 56 FUNC LOCAL DEFAULT 1 dwc2_alloc_request + 50: 000000003bc01758 56 FUNC LOCAL DEFAULT 1 requestMemAlloc + 382: 000000003bc081a2 52 FUNC GLOBAL DEFAULT 1 ddr_init + 253: 000000003bc005ba 50 FUNC GLOBAL DEFAULT 1 panic_handler + 231: 000000003bc04714 50 FUNC GLOBAL DEFAULT 1 crc16_ccitt + 297: 000000003bc06386 48 FUNC GLOBAL DEFAULT 1 LzmaDec_AllocateProbs + 288: 000000003bc022b4 48 FUNC GLOBAL DEFAULT 1 get_usb_polling_timeout_v + 286: 000000003bc071ec 48 FUNC GLOBAL DEFAULT 1 LZ4F_createDecompressionC + 24: 000000003bc136c8 48 OBJECT LOCAL DEFAULT 4 fw_dynamic_info + 391: 000000003bc09e38 46 FUNC GLOBAL DEFAULT 1 ctrl_init_high_patch + 254: 000000003bc029b4 46 FUNC GLOBAL DEFAULT 1 dwc2_nuke + 247: 000000003bc09e66 46 FUNC GLOBAL DEFAULT 1 ctrl_init_low_patch + 54: 000000003bc017c2 46 FUNC LOCAL DEFAULT 1 disconnect + 294: 000000003bc08e62 44 FUNC GLOBAL DEFAULT 1 cvx16_INT_ISR_08 + 179: 000000003bc079f8 44 FUNC LOCAL DEFAULT 1 XXH32_avalanche + 305: 000000003bc0018a 42 FUNC GLOBAL DEFAULT 1 udelay + 255: 000000003bc001e2 42 FUNC GLOBAL DEFAULT 1 get_random_from_timer + 61: 000000003bc01b3a 42 FUNC LOCAL DEFAULT 1 reqComplete + 344: 000000003bc015f6 40 FUNC GLOBAL DEFAULT 1 LZ4_calloc + 289: 000000003bc03ba2 40 FUNC GLOBAL DEFAULT 1 dwc2_ep0_read + 232: 000000003bc08e3a 40 FUNC GLOBAL DEFAULT 1 cvx16_set_dfi_init_comple + 390: 000000003bc08f32 38 FUNC GLOBAL DEFAULT 1 cvx16_set_dfi_init_start + 359: 000000003bc06ff8 38 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_using + 55: 000000003bc017f0 38 FUNC LOCAL DEFAULT 1 unbind + 333: 000000003bc0a488 37 OBJECT GLOBAL DEFAULT 1 hex2ascii_data + 274: 000000003bc00156 36 FUNC GLOBAL DEFAULT 1 flush_dcache_range + 267: 000000003bc001be 36 FUNC GLOBAL DEFAULT 1 get_timer + 242: 000000003bc02a9e 36 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_clear_bit + 171: 000000003bc06460 36 FUNC LOCAL DEFAULT 1 LZ4F_readLE32 + 245: 000000003bc02a7c 34 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_set_bit + 325: 000000003bc08f12 32 FUNC GLOBAL DEFAULT 1 cvx16_setting_check + 216: 000000003bc00ada 32 FUNC GLOBAL DEFAULT 1 memmove + 177: 000000003bc0b4b0 32 OBJECT LOCAL DEFAULT 1 inc32table + 176: 000000003bc0b490 32 OBJECT LOCAL DEFAULT 1 dec64table + 175: 000000003bc0b470 32 OBJECT LOCAL DEFAULT 1 blockSizes.0 + 137: 000000003bc02f08 32 FUNC LOCAL DEFAULT 1 dwc2_ep_disable + 385: 000000003bc0702a 30 FUNC GLOBAL DEFAULT 1 LZ4F_getBlockSize + 368: 000000003bc00bf6 30 FUNC GLOBAL DEFAULT 1 usb_id_det + 270: 000000003bc002a4 30 FUNC GLOBAL DEFAULT 1 console_putc + 358: 000000003bc08e8e 28 FUNC GLOBAL DEFAULT 1 cvx16_polling_synp_normal + 336: 000000003bc00b4c 28 FUNC GLOBAL DEFAULT 1 strcmp + 301: 000000003bc062ba 28 FUNC GLOBAL DEFAULT 1 LzmaDec_FreeProbs + 84: 000000003bc13788 28 OBJECT LOCAL DEFAULT 4 serialDesc + 82: 000000003bc13758 28 OBJECT LOCAL DEFAULT 4 productDesc + 52: 000000003bc01792 28 FUNC LOCAL DEFAULT 1 acm_complete_set_line_cod + 306: 000000003bc08e20 26 FUNC GLOBAL DEFAULT 1 cvx16_polling_dfi_init_st + 225: 000000003bc0a300 26 OBJECT GLOBAL DEFAULT 1 build_message + 37: 000000003bc00c14 26 FUNC LOCAL DEFAULT 1 read_time_ms + 207: 000000003bc045e4 24 FUNC GLOBAL DEFAULT 1 dwc2_ep0_kick + 142: 000000003bc0b0f0 24 OBJECT LOCAL DEFAULT 1 __func__.3 + 395: 000000003bc08bfe 22 FUNC GLOBAL DEFAULT 1 cvx16_clk_div2 + 371: 000000003bc0081c 22 FUNC GLOBAL DEFAULT 1 sys_pll_init + 252: 000000003bc08c14 22 FUNC GLOBAL DEFAULT 1 cvx16_clk_div40 + 209: 000000003bc03914 22 FUNC GLOBAL DEFAULT 1 dwc2_udc_pre_setup + 180: 000000003bc07a24 22 FUNC LOCAL DEFAULT 1 XXH_read32 + 125: 000000003bc0275c 22 FUNC LOCAL DEFAULT 1 dwc2_fifo_status + 143: 000000003bc0b108 21 OBJECT LOCAL DEFAULT 1 __func__.4 + 345: 000000003bc002c2 20 FUNC GLOBAL DEFAULT 1 console_flush + 248: 000000003bc0602a 20 FUNC GLOBAL DEFAULT 1 LzmaDec_Init + 53: 000000003bc017ae 20 FUNC LOCAL DEFAULT 1 reset + 141: 000000003bc0b0d8 19 OBJECT LOCAL DEFAULT 1 __func__.2 + 378: 000000003bc00b68 18 FUNC GLOBAL DEFAULT 1 strlen + 355: 000000003bc0330c 18 FUNC GLOBAL DEFAULT 1 dwc2_phy_to_log_ep + 139: 000000003bc0b0a8 18 OBJECT LOCAL DEFAULT 1 __func__.0 + 111: 000000003bc0b8b8 18 OBJECT LOCAL DEFAULT 2 devHsDesc + 140: 000000003bc0b0c0 17 OBJECT LOCAL DEFAULT 1 __func__.1 + 303: 000000003bc0017a 16 FUNC GLOBAL DEFAULT 1 trig_simulation_timer + 273: 000000003bc00294 16 FUNC GLOBAL DEFAULT 1 _uart_putc + 212: 000000003bc13680 16 OBJECT GLOBAL DEFAULT 4 rsp_bufArr + 201: 000000003bc0a320 16 OBJECT GLOBAL DEFAULT 1 version_string + 87: 000000003bc137a8 16 OBJECT LOCAL DEFAULT 4 vendorDesc + 83: 000000003bc13778 16 OBJECT LOCAL DEFAULT 4 serial.2 + 46: 000000003bc0aaa8 16 OBJECT LOCAL DEFAULT 1 __func__.1 + 319: 000000003bc00680 14 FUNC GLOBAL DEFAULT 1 sys_switch_all_to_pll + 262: 000000003bc0020c 14 FUNC GLOBAL DEFAULT 1 read_count_tick + 350: 000000003bc0701e 12 FUNC GLOBAL DEFAULT 1 LZ4F_isError + 329: 000000003bc022a8 12 FUNC GLOBAL DEFAULT 1 usb_vbus_det + 148: 000000003bc0b198 12 OBJECT LOCAL DEFAULT 1 ep2name + 146: 000000003bc0b178 12 OBJECT LOCAL DEFAULT 1 ep0name + 147: 000000003bc0b188 11 OBJECT LOCAL DEFAULT 1 ep1name + 122: 000000003bc0aea8 11 OBJECT LOCAL DEFAULT 1 __func__.4 + 363: 000000003bc0014c 10 FUNC GLOBAL DEFAULT 1 sync_cache + 241: 000000003bc028d0 10 FUNC GLOBAL DEFAULT 1 dwc2_get_ep0_name + 193: 000000003bc001b4 10 FUNC GLOBAL DEFAULT 1 mdelay + 192: 000000003bc08404 10 FUNC GLOBAL DEFAULT 1 get_ddr_vendor + 149: 000000003bc0b1a8 10 OBJECT LOCAL DEFAULT 1 ep3name + 117: 000000003bc0b990 10 OBJECT LOCAL DEFAULT 2 qualifierDesc + 144: 000000003bc0b120 9 OBJECT LOCAL DEFAULT 1 driver_name + 92: 000000003bc0b788 9 OBJECT LOCAL DEFAULT 2 acm_data_interface_desc + 91: 000000003bc0b778 9 OBJECT LOCAL DEFAULT 2 acm_control_interface_des + 88: 000000003bc0b758 9 OBJECT LOCAL DEFAULT 2 ConfDesc + 389: 000000003bc137c0 8 OBJECT GLOBAL DEFAULT 4 the_controller + 387: 000000003bc13708 8 OBJECT GLOBAL DEFAULT 4 acm + 366: 000000003bc137c8 8 OBJECT GLOBAL DEFAULT 4 reg_set + 327: 000000003bc137d0 8 OBJECT GLOBAL DEFAULT 4 reg_span + 246: 000000003bc136c0 8 OBJECT GLOBAL DEFAULT 4 setup_bufArr + 214: 000000003bc137b8 8 OBJECT GLOBAL DEFAULT 4 reg + 213: 000000003bc137d8 8 OBJECT GLOBAL DEFAULT 4 reg_step + 197: 000000003bc0b750 8 OBJECT GLOBAL DEFAULT 2 time_records + 119: 000000003bc0b9a8 8 OBJECT LOCAL DEFAULT 2 setup_buf + 118: 000000003bc0b9a0 8 OBJECT LOCAL DEFAULT 2 rsp_buf + 115: 000000003bc0b980 8 OBJECT LOCAL DEFAULT 2 handler + 113: 000000003bc0b920 8 OBJECT LOCAL DEFAULT 2 ep0BuffAlloc + 108: 000000003bc0b810 8 OBJECT LOCAL DEFAULT 2 cmdBufAlloc + 107: 000000003bc0b808 8 OBJECT LOCAL DEFAULT 2 cb2_buf + 106: 000000003bc0b800 8 OBJECT LOCAL DEFAULT 2 cb1_buf + 105: 000000003bc0b7f8 8 OBJECT LOCAL DEFAULT 2 cb0_buf + 103: 000000003bc0b7e8 8 OBJECT LOCAL DEFAULT 2 bulkBufAlloc + 89: 000000003bc0b768 8 OBJECT LOCAL DEFAULT 2 acm_buf + 75: 000000003bc13750 8 OBJECT LOCAL DEFAULT 4 fip_buf + 74: 000000003bc13748 8 OBJECT LOCAL DEFAULT 4 epOut + 73: 000000003bc13740 8 OBJECT LOCAL DEFAULT 4 epIn + 72: 000000003bc13738 8 OBJECT LOCAL DEFAULT 4 ep0Req + 71: 000000003bc13730 8 OBJECT LOCAL DEFAULT 4 ep0Buff + 68: 000000003bc13728 8 OBJECT LOCAL DEFAULT 4 cmdBuf + 67: 000000003bc13720 8 OBJECT LOCAL DEFAULT 4 bulkOutReq + 66: 000000003bc13718 8 OBJECT LOCAL DEFAULT 4 bulkInReq + 65: 000000003bc13710 8 OBJECT LOCAL DEFAULT 4 bulkBuf + 45: 000000003bc0aaa0 8 OBJECT LOCAL DEFAULT 1 __func__.0 + 44: 000000003bc13700 8 OBJECT LOCAL DEFAULT 4 comp_alloc_size + 43: 000000003bc136f8 8 OBJECT LOCAL DEFAULT 4 comp_alloc_buf + 121: 000000003bc0aea0 7 OBJECT LOCAL DEFAULT 1 __func__.1 + 104: 000000003bc0b7f0 7 OBJECT LOCAL DEFAULT 2 capabilityExtDesc + 100: 000000003bc0b7d0 7 OBJECT LOCAL DEFAULT 2 acm_hs_out_desc + 99: 000000003bc0b7c8 7 OBJECT LOCAL DEFAULT 2 acm_hs_notify_desc + 98: 000000003bc0b7c0 7 OBJECT LOCAL DEFAULT 2 acm_hs_in_desc + 96: 000000003bc0b7b0 7 OBJECT LOCAL DEFAULT 2 acm_fs_out_desc + 95: 000000003bc0b7a8 7 OBJECT LOCAL DEFAULT 2 acm_fs_notify_desc + 94: 000000003bc0b7a0 7 OBJECT LOCAL DEFAULT 2 acm_fs_in_desc + 360: 000000003bc015f0 6 FUNC GLOBAL DEFAULT 1 LZ4_malloc + 287: 000000003bc0174c 6 FUNC GLOBAL DEFAULT 1 DWC2_UncachedRead32 + 195: 000000003bc0216a 6 FUNC GLOBAL DEFAULT 1 AcmIsr + 123: 000000003bc0aeb8 6 OBJECT LOCAL DEFAULT 1 __func__.5 + 120: 000000003bc0ae98 5 OBJECT LOCAL DEFAULT 1 __func__.0 + 102: 000000003bc0b7e0 5 OBJECT LOCAL DEFAULT 2 bosDesc + 101: 000000003bc0b7d8 5 OBJECT LOCAL DEFAULT 2 acm_union_desc + 97: 000000003bc0b7b8 5 OBJECT LOCAL DEFAULT 2 acm_header_desc + 90: 000000003bc0b770 5 OBJECT LOCAL DEFAULT 2 acm_call_mgmt_descriptor + 388: 000000003bc01752 4 FUNC GLOBAL DEFAULT 1 DWC2_UncachedWrite32 + 373: 000000003bc0ba0c 4 OBJECT GLOBAL DEFAULT 2 ddr_data_rate + 317: 000000003bc137f4 4 OBJECT GLOBAL DEFAULT 4 dev_freq + 271: 000000003bc137f0 4 OBJECT GLOBAL DEFAULT 4 rddata + 258: 000000003bc137fc 4 OBJECT GLOBAL DEFAULT 4 mod_freq + 203: 000000003bc009a2 4 FUNC GLOBAL DEFAULT 1 dec_verify_image + 199: 000000003bc137f8 4 OBJECT GLOBAL DEFAULT 4 freq_in + 196: 000000003bc13800 4 OBJECT GLOBAL DEFAULT 4 tar_freq + 161: 000000003bc0ba04 4 OBJECT LOCAL DEFAULT 2 ep_fifo_size + 160: 000000003bc0ba00 4 OBJECT LOCAL DEFAULT 2 ep0_fifo_size + 116: 000000003bc0b988 4 OBJECT LOCAL DEFAULT 2 languageDesc + 93: 000000003bc0b798 4 OBJECT LOCAL DEFAULT 2 acm_descriptor + 86: 000000003bc137ec 4 OBJECT LOCAL DEFAULT 4 ts + 85: 000000003bc137e8 4 OBJECT LOCAL DEFAULT 4 transfer_size + 77: 000000003bc137e4 4 OBJECT LOCAL DEFAULT 4 fip_tx_size + 76: 000000003bc137e0 4 OBJECT LOCAL DEFAULT 4 fip_tx_offset + 370: 000000003bc0ba08 2 OBJECT GLOBAL DEFAULT 2 cv_usb_vid + 277: 000000003bc00832 2 FUNC GLOBAL DEFAULT 1 switch_rtc_mode_1st_stage + 261: 000000003bc09738 2 FUNC GLOBAL DEFAULT 1 cvx16_en_rec_vol_mode + 256: 000000003bc09c12 2 FUNC GLOBAL DEFAULT 1 cvx16_dram_cap_check + 244: 000000003bc028ce 2 FUNC GLOBAL DEFAULT 1 dwc2_log_write + 210: 000000003bc00292 2 FUNC GLOBAL DEFAULT 1 jump_to_loader_2nd + 206: 000000003bc0161e 2 FUNC GLOBAL DEFAULT 1 LZ4_free + 130: 000000003bc028cc 2 FUNC LOCAL DEFAULT 1 dwc2_fifo_flush + 63: 000000003bc01ff6 2 FUNC LOCAL DEFAULT 1 suspend + 51: 000000003bc01790 2 FUNC LOCAL DEFAULT 1 requestMemFree + 49: 000000003bc01756 2 FUNC LOCAL DEFAULT 1 resume + 41: 000000003bc014c4 2 FUNC LOCAL DEFAULT 1 SzFree + 386: 000000003bc1380c 1 OBJECT GLOBAL DEFAULT 4 ddr_capacity + 379: 000000003bc1380d 1 OBJECT GLOBAL DEFAULT 4 ddr_type + 309: 000000003bc1380e 1 OBJECT GLOBAL DEFAULT 4 ddr_vendor + 250: 000000003bc1380f 1 OBJECT GLOBAL DEFAULT 4 pkg + 220: 000000003bc13805 1 OBJECT GLOBAL DEFAULT 4 acm_configValue + 81: 000000003bc1380b 1 OBJECT LOCAL DEFAULT 4 mem_alloc_cnt + 80: 000000003bc1380a 1 OBJECT LOCAL DEFAULT 4 is_serial_patched.3 + 79: 000000003bc13809 1 OBJECT LOCAL DEFAULT 4 flagReboot + 78: 000000003bc13808 1 OBJECT LOCAL DEFAULT 4 flagEnterDL + 70: 000000003bc13807 1 OBJECT LOCAL DEFAULT 4 configValue + 69: 000000003bc13806 1 OBJECT LOCAL DEFAULT 4 configBreak + 64: 000000003bc13804 1 OBJECT LOCAL DEFAULT 4 ack_idx.6 + 369: 000000003bc0ba40 0 NOTYPE GLOBAL DEFAULT 3 __STACKS_START__ + 362: 00000000044000c0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_get_number_of_r + 353: 000000003bc00000 0 NOTYPE GLOBAL DEFAULT 1 __RO_START__ + 351: 000000003bc0dc00 0 NOTYPE GLOBAL DEFAULT 4 __BSS_START__ + 349: 0000000004400060 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_load_image + 347: 000000003bc0b74c 0 NOTYPE GLOBAL DEFAULT 1 __RO_END__ + 323: 0000000004400040 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_set_boot_src + 320: 000000003bc13810 0 NOTYPE GLOBAL DEFAULT 4 __BSS_END__ + 312: 000000003bc00000 0 NOTYPE GLOBAL DEFAULT 1 bl2_entrypoint + 310: 00000000044000a0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_image_crc + 300: 000000003bc0ba10 0 NOTYPE GLOBAL DEFAULT 2 __DATA_END__ + 292: 000000003bc13810 0 NOTYPE GLOBAL DEFAULT 4 __BL2_END__ + 266: 0000000000005c10 0 NOTYPE GLOBAL DEFAULT ABS __BSS_SIZE__ + 260: 00000000044000e0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_verify_rsa + 251: 000000003bc0da40 0 NOTYPE GLOBAL DEFAULT 3 __STACKS_END__ + 227: 000000003bc0b750 0 NOTYPE GLOBAL DEFAULT 2 __DATA_START__ + 208: 0000000004400020 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_get_boot_src + 202: 0000000004400080 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_flash_init + 198: 0000000004400100 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_cryptodma_aes_d + 191: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 190: 0000000000000000 0 FILE LOCAL DEFAULT ABS phy_init.c + 189: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddrc_init.c + 188: 0000000000000000 0 FILE LOCAL DEFAULT ABS cvx16_dram_cap_check.c + 187: 0000000000000000 0 FILE LOCAL DEFAULT ABS cvx16_pinmux.c + 186: 0000000000000000 0 FILE LOCAL DEFAULT ABS phy_pll_init.c + 185: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_sys.c + 184: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_sys_bring_up.c + 183: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_pkg_info.c + 182: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr.c + 178: 0000000000000000 0 FILE LOCAL DEFAULT ABS xxhash.c + 170: 0000000000000000 0 FILE LOCAL DEFAULT ABS lz4_all.c + 165: 0000000000000000 0 FILE LOCAL DEFAULT ABS LzmaDec.c + 163: 0000000000000000 0 FILE LOCAL DEFAULT ABS crc16.c + 162: 0000000000000000 0 FILE LOCAL DEFAULT ABS cv_usb.c + 150: 0000000000000000 0 FILE LOCAL DEFAULT ABS dwc2_udc_otg_xfer_dma.c + 124: 0000000000000000 0 FILE LOCAL DEFAULT ABS dwc2_udc_otg.c + 48: 0000000000000000 0 FILE LOCAL DEFAULT ABS usb_tty.c + 47: 0000000000000000 0 FILE LOCAL DEFAULT ABS cps_cvi.c + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS decompress.c + 36: 0000000000000000 0 FILE LOCAL DEFAULT ABS bl2_main.c + 35: 0000000000000000 0 FILE LOCAL DEFAULT ABS platform_device.c + 34: 0000000000000000 0 FILE LOCAL DEFAULT ABS strlen.c + 33: 0000000000000000 0 FILE LOCAL DEFAULT ABS strcmp.c + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS putchar.c + 31: 0000000000000000 0 FILE LOCAL DEFAULT ABS mem.c + 30: 0000000000000000 0 FILE LOCAL DEFAULT ABS misc.c + 29: 0000000000000000 0 FILE LOCAL DEFAULT ABS security.c + 28: 0000000000000000 0 FILE LOCAL DEFAULT ABS platform.c + 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS tf_printf.c + 25: 0000000000000000 0 FILE LOCAL DEFAULT ABS uart_dw.c + 23: 0000000000000000 0 FILE LOCAL DEFAULT ABS bl2_helper.c + 22: 0000000000000000 0 FILE LOCAL DEFAULT ABS delay_timer.c + 21: 0000000000000000 0 FILE LOCAL DEFAULT ABS cache.c + 20: 0000000000000000 0 FILE LOCAL DEFAULT ABS cpu_helper.c + 19: 000000003bc00144 0 NOTYPE LOCAL DEFAULT 1 die + 18: 000000003bc0012c 0 NOTYPE LOCAL DEFAULT 1 bss_clear + 17: 000000003bc00144 0 NOTYPE LOCAL DEFAULT 1 trap_vector + 16: 000000003bc00020 0 NOTYPE LOCAL DEFAULT 1 bl2_entrypoint_real + 15: 0000000000000000 0 FILE LOCAL DEFAULT ABS /root/.jenkins/workspace/ + 14: 0000000000000000 0 SECTION LOCAL DEFAULT 14 + 13: 0000000000000000 0 SECTION LOCAL DEFAULT 13 + 12: 0000000000000000 0 SECTION LOCAL DEFAULT 12 + 11: 0000000000000000 0 SECTION LOCAL DEFAULT 11 + 10: 0000000000000000 0 SECTION LOCAL DEFAULT 10 + 9: 0000000000000000 0 SECTION LOCAL DEFAULT 9 + 8: 0000000000000000 0 SECTION LOCAL DEFAULT 8 + 7: 0000000000000000 0 SECTION LOCAL DEFAULT 7 + 6: 0000000000000000 0 SECTION LOCAL DEFAULT 6 + 5: 0000000000000000 0 SECTION LOCAL DEFAULT 5 + 4: 000000003bc0dc00 0 SECTION LOCAL DEFAULT 4 + 3: 000000003bc0ba10 0 SECTION LOCAL DEFAULT 3 + 2: 000000003bc0b74c 0 SECTION LOCAL DEFAULT 2 + 1: 000000003bc00000 0 SECTION LOCAL DEFAULT 1 + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND +Symbol table '.symtab' contains 399 entries: + Num: Value Size Type Bind Vis Ndx Name + diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_entrypoint.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_entrypoint.o new file mode 100644 index 000000000..5b15c11ca Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_entrypoint.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o new file mode 100644 index 000000000..d92289fda Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_helper.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o new file mode 100644 index 000000000..3443a73ea Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/bl2_main.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o new file mode 100644 index 000000000..deb088e8c Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/build_message.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o new file mode 100644 index 000000000..4ba94f537 Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cache.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o new file mode 100644 index 000000000..5b519211c Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cps_cvi.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o new file mode 100644 index 000000000..9c47d2666 Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cpu_helper.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o new file mode 100644 index 000000000..797b5fecb Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/crc16.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o new file mode 100644 index 000000000..1961e4b91 Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cv_usb.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o new file mode 100644 index 000000000..42a331caf Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o new file mode 100644 index 000000000..fdc6a703f Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/cvx16_pinmux.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o new file mode 100644 index 000000000..33f1cafde Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o new file mode 100644 index 000000000..33b3cac76 Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_patch_regs.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o new file mode 100644 index 000000000..74ca9a912 Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_pkg_info.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o new file mode 100644 index 000000000..5616b5c09 Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o new file mode 100644 index 000000000..0e11ca63d Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o new file mode 100644 index 000000000..69f66962e Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/ddrc_init.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o new file mode 100644 index 000000000..cb966182f Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/decompress.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o new file mode 100644 index 000000000..1bac0866a Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/delay_timer.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o new file mode 100644 index 000000000..04dfda86c Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o new file mode 100644 index 000000000..d042d3369 Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o new file mode 100644 index 000000000..ed39f4816 Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/lz4_all.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o new file mode 100644 index 000000000..7cd1a72df Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/mem.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o new file mode 100644 index 000000000..a0c465275 Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o new file mode 100644 index 000000000..9db7c9ec8 Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/misc_helpers.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o new file mode 100644 index 000000000..5a319c15c Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_init.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o new file mode 100644 index 000000000..1901d2e7f Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/phy_pll_init.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o new file mode 100644 index 000000000..79de79c91 Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o new file mode 100644 index 000000000..94ada05dd Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/platform_device.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o new file mode 100644 index 000000000..6b0377e8a Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/putchar.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o new file mode 100644 index 000000000..7f0636ac2 Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/security.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o new file mode 100644 index 000000000..af3025b4f Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strchr.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o new file mode 100644 index 000000000..b4194d6e8 Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strcmp.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o new file mode 100644 index 000000000..8a1a585be Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strlen.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o new file mode 100644 index 000000000..9730729f0 Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strncmp.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o new file mode 100644 index 000000000..902d8c7d8 Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/strnlen.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o new file mode 100644 index 000000000..7c2adcbdb Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/tf_printf.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o new file mode 100644 index 000000000..be4073b2f Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/uart_dw.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o new file mode 100644 index 000000000..c1cab3eb1 Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/usb_tty.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o new file mode 100644 index 000000000..2e0a916b6 Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/bl2/xxhash.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros.bin b/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros.bin new file mode 100755 index 000000000..c9902e4a9 --- /dev/null +++ b/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros.bin @@ -0,0 +1 @@ +ï¾­Þ \ No newline at end of file diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros.env b/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros.env new file mode 100644 index 000000000..a57837ce1 --- /dev/null +++ b/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros.env @@ -0,0 +1,2 @@ +MONITOR_RUNADDR=0x0000000080000000 +BLCP_2ND_RUNADDR=0x0000000087e00000 diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/blmacros.dis b/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/blmacros.dis new file mode 100644 index 000000000..fc80ec3fa --- /dev/null +++ b/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/blmacros.dis @@ -0,0 +1,24 @@ + +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/blmacros.elf: file format elf64-littleriscv +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/blmacros.elf +architecture: riscv:rv64, flags 0x00000112: +EXEC_P, HAS_SYMS, D_PAGED +start address 0x0000000000000000 + +Program Header: + LOAD off 0x0000000000001000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**12 + filesz 0x0000000000000004 memsz 0x0000000000000004 flags r-- + STACK off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**4 + filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw- + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000004 0000000000000000 0000000000000000 00001000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA +SYMBOL TABLE: +0000000000000000 l d .text 0000000000000000 .text +0000000087e00000 g *ABS* 0000000000000000 DEF_BLCP_2ND_RUNADDR +0000000080000000 g *ABS* 0000000000000000 DEF_MONITOR_RUNADDR +0000000080000000 g *ABS* 0000000000000000 DEF_DRAM_BASE + + diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/blmacros.elf b/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/blmacros.elf new file mode 100755 index 000000000..158106cd9 Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/blmacros.elf differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/blmacros.ld b/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/blmacros.ld new file mode 100644 index 000000000..c5eb9698a --- /dev/null +++ b/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/blmacros.ld @@ -0,0 +1,10 @@ +SECTIONS +{ + .text : { + LONG(0xDEADBEEF); + *(*) + } + DEF_DRAM_BASE = 0x80000000; + DEF_MONITOR_RUNADDR = 0x80000000; + DEF_BLCP_2ND_RUNADDR = 0x87e00000; +} diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/blmacros.map b/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/blmacros.map new file mode 100644 index 000000000..0777b02e5 --- /dev/null +++ b/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/blmacros.map @@ -0,0 +1,39 @@ + +Discarded input sections + + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/build_message.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/build_message.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/build_message.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/build_message.o + .rodata.build_message + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/build_message.o + .rodata.version_string + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/build_message.o + .debug_info 0x0000000000000000 0x89 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/build_message.o + .debug_abbrev 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/build_message.o + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/build_message.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/build_message.o + .debug_macro 0x0000000000000000 0x86e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/build_message.o + .debug_line 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/build_message.o + .debug_str 0x0000000000000000 0x29a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/build_message.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/build_message.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/build_message.o + +Memory Configuration + +Name Origin Length Attributes +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + +.text 0x0000000000000000 0x4 + 0x0000000000000000 0x4 LONG 0xdeadbeef + *(*) + 0x0000000080000000 DEF_DRAM_BASE = 0x80000000 + 0x0000000080000000 DEF_MONITOR_RUNADDR = 0x80000000 + 0x0000000087e00000 DEF_BLCP_2ND_RUNADDR = 0x87e00000 +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/build_message.o +OUTPUT(/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/blmacros.elf elf64-littleriscv) diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/blmacros.sym b/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/blmacros.sym new file mode 100644 index 000000000..f7a57862c --- /dev/null +++ b/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/blmacros.sym @@ -0,0 +1,8 @@ + 4: 0000000080000000 0 NOTYPE GLOBAL DEFAULT ABS DEF_DRAM_BASE + 3: 0000000080000000 0 NOTYPE GLOBAL DEFAULT ABS DEF_MONITOR_RUNADDR + 2: 0000000087e00000 0 NOTYPE GLOBAL DEFAULT ABS DEF_BLCP_2ND_RUNADDR + 1: 0000000000000000 0 SECTION LOCAL DEFAULT 1 + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND +Symbol table '.symtab' contains 5 entries: + Num: Value Size Type Bind Vis Ndx Name + diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/build_message.o b/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/build_message.o new file mode 100644 index 000000000..deb088e8c Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/blmacros/build_message.o differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/chip_conf.bin b/fsbl/build/cv1801b_wevb_0008a_spinor/chip_conf.bin new file mode 100644 index 000000000..d2dabd686 Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/chip_conf.bin differ diff --git a/fsbl/build/cv1801b_wevb_0008a_spinor/fip.bin b/fsbl/build/cv1801b_wevb_0008a_spinor/fip.bin new file mode 100644 index 000000000..2e5897e6c Binary files /dev/null and b/fsbl/build/cv1801b_wevb_0008a_spinor/fip.bin differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2.bin b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2.bin new file mode 100755 index 000000000..33d4ade84 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2.bin differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o new file mode 100644 index 000000000..80521c850 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o new file mode 100644 index 000000000..7f7c1a1f3 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2.dis b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2.dis new file mode 100644 index 000000000..589601b6d --- /dev/null +++ b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2.dis @@ -0,0 +1,14885 @@ + +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2.elf: file format elf64-littleriscv +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2.elf +architecture: riscv:rv64, flags 0x00000112: +EXEC_P, HAS_SYMS, D_PAGED +start address 0x000000003bc00000 + +Program Header: + LOAD off 0x0000000000001000 vaddr 0x000000003bc00000 paddr 0x000000003bc00000 align 2**12 + filesz 0x000000000000ba10 memsz 0x0000000000013810 flags rwx + STACK off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**4 + filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw- + +Sections: +Idx Name Size VMA LMA File off Algn + 0 ro 0000b74c 000000003bc00000 000000003bc00000 00001000 2**3 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 000002c4 000000003bc0b74c 000000003bc0b74c 0000c74c 2**3 + CONTENTS, ALLOC, LOAD, DATA + 2 stacks 00002030 000000003bc0ba10 000000003bc0ba10 0000ca10 2**0 + ALLOC + 3 .bss 00005c10 000000003bc0dc00 000000003bc0dc00 0000ca10 2**9 + ALLOC + 4 .debug_info 0006993c 0000000000000000 0000000000000000 0000ca10 2**0 + CONTENTS, READONLY, DEBUGGING + 5 .debug_abbrev 00004df7 0000000000000000 0000000000000000 0007634c 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_aranges 00001e80 0000000000000000 0000000000000000 0007b150 2**4 + CONTENTS, READONLY, DEBUGGING + 7 .debug_macro 00009b13 0000000000000000 0000000000000000 0007cfd0 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_line 000777fd 0000000000000000 0000000000000000 00086ae3 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_str 0002399c 0000000000000000 0000000000000000 000fe2e0 2**0 + CONTENTS, READONLY, DEBUGGING + 10 .comment 0000001d 0000000000000000 0000000000000000 00121c7c 2**0 + CONTENTS, READONLY + 11 .debug_ranges 000301e0 0000000000000000 0000000000000000 00121c99 2**0 + CONTENTS, READONLY, DEBUGGING + 12 .debug_frame 00004810 0000000000000000 0000000000000000 00151e80 2**3 + CONTENTS, READONLY, DEBUGGING + 13 .debug_loc 000c2b4e 0000000000000000 0000000000000000 00156690 2**0 + CONTENTS, READONLY, DEBUGGING +SYMBOL TABLE: +000000003bc00000 l d ro 0000000000000000 ro +000000003bc0b74c l d .data 0000000000000000 .data +000000003bc0ba10 l d stacks 0000000000000000 stacks +000000003bc0dc00 l d .bss 0000000000000000 .bss +0000000000000000 l d .debug_info 0000000000000000 .debug_info +0000000000000000 l d .debug_abbrev 0000000000000000 .debug_abbrev +0000000000000000 l d .debug_aranges 0000000000000000 .debug_aranges +0000000000000000 l d .debug_macro 0000000000000000 .debug_macro +0000000000000000 l d .debug_line 0000000000000000 .debug_line +0000000000000000 l d .debug_str 0000000000000000 .debug_str +0000000000000000 l d .comment 0000000000000000 .comment +0000000000000000 l d .debug_ranges 0000000000000000 .debug_ranges +0000000000000000 l d .debug_frame 0000000000000000 .debug_frame +0000000000000000 l d .debug_loc 0000000000000000 .debug_loc +0000000000000000 l df *ABS* 0000000000000000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_entrypoint.o +000000003bc00020 l ro 0000000000000000 bl2_entrypoint_real +000000003bc00144 l ro 0000000000000000 trap_vector +000000003bc0012c l ro 0000000000000000 bss_clear +000000003bc00144 l ro 0000000000000000 die +0000000000000000 l df *ABS* 0000000000000000 cpu_helper.c +0000000000000000 l df *ABS* 0000000000000000 cache.c +0000000000000000 l df *ABS* 0000000000000000 delay_timer.c +0000000000000000 l df *ABS* 0000000000000000 bl2_helper.c +000000003bc136c8 l O .bss 0000000000000030 fw_dynamic_info +0000000000000000 l df *ABS* 0000000000000000 uart_dw.c +0000000000000000 l df *ABS* 0000000000000000 tf_printf.c +000000003bc002d6 l F ro 0000000000000082 unsigned_num_print +0000000000000000 l df *ABS* 0000000000000000 platform.c +0000000000000000 l df *ABS* 0000000000000000 security.c +0000000000000000 l df *ABS* 0000000000000000 misc.c +0000000000000000 l df *ABS* 0000000000000000 mem.c +0000000000000000 l df *ABS* 0000000000000000 putchar.c +0000000000000000 l df *ABS* 0000000000000000 strcmp.c +0000000000000000 l df *ABS* 0000000000000000 strlen.c +0000000000000000 l df *ABS* 0000000000000000 platform_device.c +0000000000000000 l df *ABS* 0000000000000000 bl2_main.c +000000003bc00c14 l F ro 000000000000001a read_time_ms +000000003bc0dc00 l O .bss 0000000000001000 fip_param2 +000000003bc0ec00 l O .bss 0000000000004000 sram_union_buf +0000000000000000 l df *ABS* 0000000000000000 decompress.c +000000003bc014c4 l F ro 0000000000000002 SzFree +000000003bc014c6 l F ro 0000000000000042 SzAlloc +000000003bc136f8 l O .bss 0000000000000008 comp_alloc_buf +000000003bc13700 l O .bss 0000000000000008 comp_alloc_size +000000003bc0aaa0 l O ro 0000000000000008 __func__.0 +000000003bc0aaa8 l O ro 0000000000000010 __func__.1 +0000000000000000 l df *ABS* 0000000000000000 cps_cvi.c +0000000000000000 l df *ABS* 0000000000000000 usb_tty.c +000000003bc01756 l F ro 0000000000000002 resume +000000003bc01758 l F ro 0000000000000038 requestMemAlloc +000000003bc01790 l F ro 0000000000000002 requestMemFree +000000003bc01792 l F ro 000000000000001c acm_complete_set_line_coding +000000003bc017ae l F ro 0000000000000014 reset +000000003bc017c2 l F ro 000000000000002e disconnect +000000003bc017f0 l F ro 0000000000000026 unbind +000000003bc01816 l F ro 0000000000000042 bind +000000003bc01858 l F ro 0000000000000052 get_unicode_string +000000003bc018aa l F ro 0000000000000234 bulkOutCmpl +000000003bc01b64 l F ro 0000000000000050 bulkInCmpl +000000003bc01ade l F ro 000000000000005c getDescAcm +000000003bc01b3a l F ro 000000000000002a reqComplete +000000003bc01bb4 l F ro 0000000000000442 setup +000000003bc01ff6 l F ro 0000000000000002 suspend +000000003bc13804 l O .bss 0000000000000001 ack_idx.6 +000000003bc13710 l O .bss 0000000000000008 bulkBuf +000000003bc13718 l O .bss 0000000000000008 bulkInReq +000000003bc13720 l O .bss 0000000000000008 bulkOutReq +000000003bc13728 l O .bss 0000000000000008 cmdBuf +000000003bc13806 l O .bss 0000000000000001 configBreak +000000003bc13807 l O .bss 0000000000000001 configValue +000000003bc13730 l O .bss 0000000000000008 ep0Buff +000000003bc13738 l O .bss 0000000000000008 ep0Req +000000003bc13740 l O .bss 0000000000000008 epIn +000000003bc13748 l O .bss 0000000000000008 epOut +000000003bc13750 l O .bss 0000000000000008 fip_buf +000000003bc137e0 l O .bss 0000000000000004 fip_tx_offset +000000003bc137e4 l O .bss 0000000000000004 fip_tx_size +000000003bc13808 l O .bss 0000000000000001 flagEnterDL +000000003bc13809 l O .bss 0000000000000001 flagReboot +000000003bc1380a l O .bss 0000000000000001 is_serial_patched.3 +000000003bc1380b l O .bss 0000000000000001 mem_alloc_cnt +000000003bc13758 l O .bss 000000000000001c productDesc +000000003bc13778 l O .bss 0000000000000010 serial.2 +000000003bc13788 l O .bss 000000000000001c serialDesc +000000003bc137e8 l O .bss 0000000000000004 transfer_size +000000003bc137ec l O .bss 0000000000000004 ts +000000003bc137a8 l O .bss 0000000000000010 vendorDesc +000000003bc0b758 l O .data 0000000000000009 ConfDesc +000000003bc0b768 l O .data 0000000000000008 acm_buf +000000003bc0b770 l O .data 0000000000000005 acm_call_mgmt_descriptor +000000003bc0b778 l O .data 0000000000000009 acm_control_interface_desc +000000003bc0b788 l O .data 0000000000000009 acm_data_interface_desc +000000003bc0b798 l O .data 0000000000000004 acm_descriptor +000000003bc0b7a0 l O .data 0000000000000007 acm_fs_in_desc +000000003bc0b7a8 l O .data 0000000000000007 acm_fs_notify_desc +000000003bc0b7b0 l O .data 0000000000000007 acm_fs_out_desc +000000003bc0b7b8 l O .data 0000000000000005 acm_header_desc +000000003bc0b7c0 l O .data 0000000000000007 acm_hs_in_desc +000000003bc0b7c8 l O .data 0000000000000007 acm_hs_notify_desc +000000003bc0b7d0 l O .data 0000000000000007 acm_hs_out_desc +000000003bc0b7d8 l O .data 0000000000000005 acm_union_desc +000000003bc0b7e0 l O .data 0000000000000005 bosDesc +000000003bc0b7e8 l O .data 0000000000000008 bulkBufAlloc +000000003bc0b7f0 l O .data 0000000000000007 capabilityExtDesc +000000003bc0b7f8 l O .data 0000000000000008 cb0_buf +000000003bc0b800 l O .data 0000000000000008 cb1_buf +000000003bc0b808 l O .data 0000000000000008 cb2_buf +000000003bc0b810 l O .data 0000000000000008 cmdBufAlloc +000000003bc0b818 l O .data 0000000000000050 descriptorsFs +000000003bc0b868 l O .data 0000000000000050 descriptorsHs +000000003bc0b8b8 l O .data 0000000000000012 devHsDesc +000000003bc0b8d0 l O .data 0000000000000050 drv_obj +000000003bc0b920 l O .data 0000000000000008 ep0BuffAlloc +000000003bc0b928 l O .data 0000000000000058 g_driver +000000003bc0b980 l O .data 0000000000000008 handler +000000003bc0b988 l O .data 0000000000000004 languageDesc +000000003bc0b990 l O .data 000000000000000a qualifierDesc +000000003bc0b9a0 l O .data 0000000000000008 rsp_buf +000000003bc0b9a8 l O .data 0000000000000008 setup_buf +000000003bc0ae98 l O ro 0000000000000005 __func__.0 +000000003bc0aea0 l O ro 0000000000000007 __func__.1 +000000003bc0aea8 l O ro 000000000000000b __func__.4 +000000003bc0aeb8 l O ro 0000000000000006 __func__.5 +0000000000000000 l df *ABS* 0000000000000000 dwc2_udc_otg.c +000000003bc0275c l F ro 0000000000000016 dwc2_fifo_status +000000003bc02772 l F ro 000000000000003a dwc2_free_request +000000003bc027ac l F ro 0000000000000048 pullup +000000003bc027f4 l F ro 0000000000000038 dwc2_alloc_request +000000003bc0282c l F ro 00000000000000a0 dwc2_ep_enable +000000003bc028cc l F ro 0000000000000002 dwc2_fifo_flush +000000003bc02960 l F ro 0000000000000054 dwc2_dequeue +000000003bc02ac2 l F ro 000000000000003c wakeup +000000003bc02b44 l F ro 0000000000000090 dwc2_hsotg_txfifo_flush.constprop.0 +000000003bc02bd4 l F ro 000000000000005e kill_all_requests.isra.0 +000000003bc02c88 l F ro 00000000000000da dwc2_hsotg_init_fifo.constprop.0 +000000003bc02d62 l F ro 00000000000001a6 _dwc2_ep_disable.isra.0 +000000003bc02f08 l F ro 0000000000000020 dwc2_ep_disable +000000003bc0b9b0 l O .data 0000000000000050 dwc2_ep_ops +000000003bc0b0a8 l O ro 0000000000000012 __func__.0 +000000003bc0b0c0 l O ro 0000000000000011 __func__.1 +000000003bc0b0d8 l O ro 0000000000000013 __func__.2 +000000003bc0b0f0 l O ro 0000000000000018 __func__.3 +000000003bc0b108 l O ro 0000000000000015 __func__.4 +000000003bc0b120 l O ro 0000000000000009 driver_name +000000003bc0b130 l O ro 0000000000000048 dwc2_udc_ops +000000003bc0b178 l O ro 000000000000000c ep0name +000000003bc0b188 l O ro 000000000000000b ep1name +000000003bc0b198 l O ro 000000000000000c ep2name +000000003bc0b1a8 l O ro 000000000000000a ep3name +0000000000000000 l df *ABS* 0000000000000000 dwc2_udc_otg_xfer_dma.c +000000003bc034ba l F ro 000000000000008e set_max_pktsize +000000003bc03548 l F ro 000000000000005e dwc2_udc_ep_clear_stall +000000003bc035a6 l F ro 0000000000000062 dwc2_udc_ep_set_stall +000000003bc03608 l F ro 0000000000000080 dwc2_ep0_complete_out +000000003bc03688 l F ro 000000000000007e dwc2_udc_ep0_zlp +000000003bc03706 l F ro 0000000000000068 dwc2_udc_ep0_set_stall.isra.0 +000000003bc0376e l F ro 00000000000000aa setdma_rx.isra.0 +000000003bc03818 l F ro 00000000000000fc complete_rx +000000003bc0396e l F ro 000000000000015c setdma_tx +000000003bc0ba00 l O .data 0000000000000004 ep0_fifo_size +000000003bc0ba04 l O .data 0000000000000004 ep_fifo_size +0000000000000000 l df *ABS* 0000000000000000 cv_usb.c +0000000000000000 l df *ABS* 0000000000000000 crc16.c +000000003bc0b230 l O ro 0000000000000200 crc16_tab +0000000000000000 l df *ABS* 0000000000000000 LzmaDec.c +000000003bc04746 l F ro 0000000000000072 LzmaDec_WriteRem +000000003bc047b8 l F ro 000000000000138a LzmaDec_DecodeReal2 +000000003bc05b42 l F ro 00000000000004e8 LzmaDec_TryDummy +000000003bc062d6 l F ro 0000000000000066 LzmaDec_AllocateProbs2.isra.0 +0000000000000000 l df *ABS* 0000000000000000 lz4_all.c +000000003bc06460 l F ro 0000000000000024 LZ4F_readLE32 +000000003bc06484 l F ro 0000000000000276 LZ4_decompress_safe_withSmallPrefix +000000003bc066fa l F ro 0000000000000110 LZ4F_updateDict +000000003bc07048 l F ro 00000000000001a4 LZ4F_decodeHeader +000000003bc0b470 l O ro 0000000000000020 blockSizes.0 +000000003bc0b490 l O ro 0000000000000020 dec64table +000000003bc0b4b0 l O ro 0000000000000020 inc32table +0000000000000000 l df *ABS* 0000000000000000 xxhash.c +000000003bc079f8 l F ro 000000000000002c XXH32_avalanche +000000003bc07a24 l F ro 0000000000000016 XXH_read32 +000000003bc07a3a l F ro 000000000000033a XXH32_finalize.constprop.0 +0000000000000000 l df *ABS* 0000000000000000 ddr.c +0000000000000000 l df *ABS* 0000000000000000 ddr_pkg_info.c +0000000000000000 l df *ABS* 0000000000000000 ddr_sys_bring_up.c +0000000000000000 l df *ABS* 0000000000000000 ddr_sys.c +0000000000000000 l df *ABS* 0000000000000000 phy_pll_init.c +0000000000000000 l df *ABS* 0000000000000000 cvx16_pinmux.c +0000000000000000 l df *ABS* 0000000000000000 cvx16_dram_cap_check.c +0000000000000000 l df *ABS* 0000000000000000 ddrc_init.c +0000000000000000 l df *ABS* 0000000000000000 phy_init.c +0000000000000000 l df *ABS* 0000000000000000 +000000003bc08404 g F ro 000000000000000a get_ddr_vendor +000000003bc001b4 g F ro 000000000000000a mdelay +000000003bc0840e g F ro 0000000000000050 axi_mon_start_all +000000003bc0216a g F ro 0000000000000006 AcmIsr +000000003bc13800 g O .bss 0000000000000004 tar_freq +000000003bc0b750 g O .data 0000000000000008 time_records +0000000004400100 g *ABS* 0000000000000000 p_rom_api_cryptodma_aes_decrypt +000000003bc137f8 g O .bss 0000000000000004 freq_in +000000003bc00d3e g F ro 00000000000000ae load_ddr_param +000000003bc0a320 g O ro 0000000000000010 version_string +0000000004400080 g *ABS* 0000000000000000 p_rom_api_flash_init +000000003bc009a2 g F ro 0000000000000004 dec_verify_image +000000003bc03cac g F ro 00000000000000b2 dwc2_udc_ep_activate +000000003bc00afa g F ro 0000000000000052 putchar_l +000000003bc0161e g F ro 0000000000000002 LZ4_free +000000003bc045e4 g F ro 0000000000000018 dwc2_ep0_kick +0000000004400020 g *ABS* 0000000000000000 p_rom_api_get_boot_src +000000003bc03914 g F ro 0000000000000016 dwc2_udc_pre_setup +000000003bc00292 g F ro 0000000000000002 jump_to_loader_2nd +000000003bc0021a g F ro 0000000000000078 jump_to_monitor +000000003bc13680 g O .bss 0000000000000010 rsp_bufArr +000000003bc137d8 g O .bss 0000000000000008 reg_step +000000003bc137b8 g O .bss 0000000000000008 reg +000000003bc03b5a g F ro 0000000000000048 dwc2_set_address +000000003bc00ada g F ro 0000000000000020 memmove +000000003bc08682 g F ro 000000000000004e cvx16_bist_wr_prbs_init +000000003bc12c80 g O .bss 0000000000000200 bulkBufAllocArr +000000003bc0680a g F ro 000000000000026e LZ4_decompress_safe +000000003bc13805 g O .bss 0000000000000001 acm_configValue +000000003bc08d22 g F ro 0000000000000044 cvx16_ddr_phy_power_on_seq1 +000000003bc0603e g F ro 000000000000027c LzmaDec_DecodeToDic +000000003bc08776 g F ro 0000000000000046 cvx16_bist_rdglvl_init +000000003bc08730 g F ro 0000000000000046 cvx16_bist_wrlvl_init +000000003bc0a300 g O ro 000000000000001a build_message +000000003bc095b6 g F ro 0000000000000182 cvx16_wdqlvl_req +000000003bc0b750 g .data 0000000000000000 __DATA_START__ +000000003bc004f2 g F ro 00000000000000c8 __system_reset +000000003bc00834 g F ro 0000000000000044 switch_rtc_mode_2nd_stage +000000003bc01346 g F ro 00000000000000e6 load_rest +000000003bc04714 g F ro 0000000000000032 crc16_ccitt +000000003bc08e3a g F ro 0000000000000028 cvx16_set_dfi_init_complete +000000003bc08de8 g F ro 0000000000000038 cvx16_wait_for_dfi_init_complete +000000003bc03b0e g F ro 000000000000004c dwc2_write_fifo_ep0 +000000003bc12f00 g O .bss 0000000000000080 cb1_bufArr +000000003bc090b8 g F ro 00000000000001d6 cvx16_wrlvl_req +000000003bc02afe g F ro 0000000000000046 dwc2_hsotg_wait_bit_set +000000003bc093cc g F ro 00000000000001ea cvx16_rdlvl_req +000000003bc00a7a g F ro 0000000000000060 memcpy +000000003bc088a6 g F ro 00000000000000b0 cvx16_bist_wdqlvl_init +000000003bc028d0 g F ro 000000000000000a dwc2_get_ep0_name +000000003bc02a9e g F ro 0000000000000024 dwc2_hsotg_clear_bit +000000003bc03bca g F ro 0000000000000040 dwc2_ep0_write +000000003bc028ce g F ro 0000000000000002 dwc2_log_write +000000003bc02a7c g F ro 0000000000000022 dwc2_hsotg_set_bit +000000003bc136c0 g O .bss 0000000000000008 setup_bufArr +000000003bc09e66 g F ro 000000000000002e ctrl_init_low_patch +000000003bc0602a g F ro 0000000000000014 LzmaDec_Init +000000003bc01018 g F ro 0000000000000126 load_monitor +000000003bc1380f g O .bss 0000000000000001 pkg +000000003bc0da40 g stacks 0000000000000000 __STACKS_END__ +000000003bc08c14 g F ro 0000000000000016 cvx16_clk_div40 +000000003bc005ba g F ro 0000000000000032 panic_handler +000000003bc029b4 g F ro 000000000000002e dwc2_nuke +000000003bc001e2 g F ro 000000000000002a get_random_from_timer +000000003bc09c12 g F ro 0000000000000002 cvx16_dram_cap_check +000000003bc089b6 g F ro 000000000000006a cvx16_bist_start_check +000000003bc137fc g O .bss 0000000000000004 mod_freq +000000003bc00b7a g F ro 000000000000007c gpio_in_value +00000000044000e0 g *ABS* 0000000000000000 p_rom_api_verify_rsa +000000003bc09738 g F ro 0000000000000002 cvx16_en_rec_vol_mode +000000003bc0020c g F ro 000000000000000e read_count_tick +000000003bc09048 g F ro 0000000000000070 cvx16_clk_gating_enable +000000003bc016ce g F ro 000000000000007e decompress +000000003bc086d0 g F ro 0000000000000060 cvx16_bist_wr_sram_init +0000000000005c10 g *ABS* 0000000000000000 __BSS_SIZE__ +000000003bc001be g F ro 0000000000000024 get_timer +000000003bc08dae g F ro 000000000000003a cvx16_ddr_phy_power_on_seq3 +000000003bc031b6 g F ro 0000000000000156 usb_gadget_register_driver +000000003bc002a4 g F ro 000000000000001e console_putc +000000003bc137f0 g O .bss 0000000000000004 rddata +000000003bc08c2a g F ro 00000000000000f8 cvx16_chg_pll_freq +000000003bc00294 g F ro 0000000000000010 _uart_putc +000000003bc00156 g F ro 0000000000000024 flush_dcache_range +000000003bc12e80 g O .bss 0000000000000080 cb0_bufArr +000000003bc0068e g F ro 000000000000018e sys_pll_nd +000000003bc00832 g F ro 0000000000000002 switch_rtc_mode_1st_stage +000000003bc00878 g F ro 00000000000000bc set_rtc_en_registers +000000003bc00c6e g F ro 00000000000000d0 load_param2 +000000003bc0721c g F ro 00000000000007dc LZ4F_decompress +000000003bc098d8 g F ro 000000000000033a cvx16_pinmux +000000003bc08b3a g F ro 0000000000000068 cvx16_dll_cal +000000003bc02170 g F ro 0000000000000138 acm_app_init +000000003bc022e4 g F ro 0000000000000478 AcmApp +000000003bc08ffe g F ro 000000000000004a cvx16_clk_gating_disable +000000003bc071ec g F ro 0000000000000030 LZ4F_createDecompressionContext +000000003bc0174c g F ro 0000000000000006 DWC2_UncachedRead32 +000000003bc022b4 g F ro 0000000000000030 get_usb_polling_timeout_value +000000003bc03ba2 g F ro 0000000000000028 dwc2_ep0_read +000000003bc13200 g O .bss 0000000000000080 ep0BuffAllocArr +000000003bc0346e g F ro 000000000000004c usb_gadget_handle_interrupts +000000003bc13810 g .bss 0000000000000000 __BL2_END__ +000000003bc08d66 g F ro 0000000000000048 cvx16_ddr_phy_power_on_seq2 +000000003bc08e62 g F ro 000000000000002c cvx16_INT_ISR_08 +000000003bc06ce2 g F ro 0000000000000316 LZ4_decompress_safe_forceExtDict +000000003bc01ff8 g F ro 00000000000000a2 convert_buf_addr +000000003bc06386 g F ro 0000000000000030 LzmaDec_AllocateProbs +000000003bc08f58 g F ro 00000000000000a6 cvx16_pll_init +000000003bc0142c g F ro 0000000000000098 bl2_main +000000003bc0ba10 g .data 0000000000000000 __DATA_END__ +000000003bc062ba g F ro 000000000000001c LzmaDec_FreeProbs +000000003bc01508 g F ro 00000000000000e8 decompress_lzma +000000003bc0017a g F ro 0000000000000010 trig_simulation_timer +000000003bc08956 g F ro 0000000000000060 cvx16_bist_wdmlvl_init +000000003bc0018a g F ro 000000000000002a udelay +000000003bc08e20 g F ro 000000000000001a cvx16_polling_dfi_init_start +000000003bc02920 g F ro 0000000000000040 dwc2_done +000000003bc087bc g F ro 00000000000000ea cvx16_bist_rdlvl_init +000000003bc1380e g O .bss 0000000000000001 ddr_vendor +00000000044000a0 g *ABS* 0000000000000000 p_rom_api_image_crc +000000003bc00c2e g F ro 0000000000000040 load_image_by_usb +000000003bc00000 g ro 0000000000000000 bl2_entrypoint +000000003bc0113e g F ro 0000000000000208 load_loader_2nd +000000003bc02c32 g F ro 0000000000000056 dwc2_disconnect +000000003bc0331e g F ro 0000000000000150 dwc2_udc_probe +000000003bc00934 g F ro 000000000000006e init_comm_info +000000003bc137f4 g O .bss 0000000000000004 dev_freq +000000003bc045fc g F ro 00000000000000d8 dwc2_queue +000000003bc00680 g F ro 000000000000000e sys_switch_all_to_pll +000000003bc13810 g .bss 0000000000000000 __BSS_END__ +000000003bc081d6 g F ro 000000000000022e read_ddr_pkg_info +000000003bc12c00 g O .bss 0000000000000080 acm_bufArr +0000000004400040 g *ABS* 0000000000000000 p_rom_api_set_boot_src +000000003bc0633c g F ro 000000000000004a LzmaProps_Decode +000000003bc08f12 g F ro 0000000000000020 cvx16_setting_check +000000003bc00eb2 g F ro 0000000000000166 load_blcp_2nd +000000003bc137d0 g O .bss 0000000000000008 reg_span +000000003bc08ba2 g F ro 000000000000005c cvx16_clk_normal +000000003bc022a8 g F ro 000000000000000c usb_vbus_det +000000003bc00a20 g F ro 000000000000005a memset +000000003bc03c4a g F ro 0000000000000062 dwc2_udc_set_halt +000000003bc07f90 g F ro 00000000000001d2 XXH32_update +000000003bc0a488 g O ro 0000000000000025 hex2ascii_data +000000003bc09e94 g F ro 00000000000000b2 ctrl_init_update_by_dram_size +000000003bc03d5e g F ro 0000000000000346 dwc2_handle_ep0 +000000003bc00b4c g F ro 000000000000001c strcmp +000000003bc07f3a g F ro 0000000000000056 XXH32_reset +000000003bc07d74 g F ro 00000000000001c6 XXH32 +000000003bc08a20 g F ro 00000000000000a6 cvx16_rdvld_train +000000003bc09c14 g F ro 0000000000000224 ddrc_init +000000003bc06a78 g F ro 000000000000026a LZ4_decompress_safe_withPrefix64k +000000003bc00358 g F ro 000000000000019a tf_printf +000000003bc029e2 g F ro 000000000000009a usb_gadget_unregister_driver +000000003bc015f6 g F ro 0000000000000028 LZ4_calloc +000000003bc002c2 g F ro 0000000000000014 console_flush +000000003bc0209a g F ro 00000000000000d0 print_buf_addr +000000003bc0b74c g ro 0000000000000000 __RO_END__ +000000003bc12f80 g O .bss 0000000000000080 cb2_bufArr +0000000004400060 g *ABS* 0000000000000000 p_rom_api_load_image +000000003bc0701e g F ro 000000000000000c LZ4F_isError +000000003bc0dc00 g .bss 0000000000000000 __BSS_START__ +000000003bc03c0a g F ro 0000000000000040 dwc2_udc_set_nak +000000003bc00000 g ro 0000000000000000 __RO_START__ +000000003bc0928e g F ro 000000000000013e cvx16_rdglvl_req +000000003bc0330c g F ro 0000000000000012 dwc2_phy_to_log_ep +000000003bc009a6 g F ro 000000000000007a ntostr +000000003bc046d4 g F ro 0000000000000040 usb_polling +000000003bc08e8e g F ro 000000000000001c cvx16_polling_synp_normal_mode +000000003bc06ff8 g F ro 0000000000000026 LZ4_decompress_safe_usingDict +000000003bc015f0 g F ro 0000000000000006 LZ4_malloc +000000003bc0973a g F ro 000000000000011a ctrl_init_detect_dram_size +00000000044000c0 g *ABS* 0000000000000000 p_rom_api_get_number_of_retries +000000003bc0014c g F ro 000000000000000a sync_cache +000000003bc00636 g F ro 000000000000004a setup_dl_flag +000000003bc005ec g F ro 000000000000004a reset_c906l +000000003bc137c8 g O .bss 0000000000000008 reg_set +000000003bc063b6 g F ro 00000000000000aa LzmaDecode +000000003bc00bf6 g F ro 000000000000001e usb_id_det +000000003bc0ba40 g stacks 0000000000000000 __STACKS_START__ +000000003bc0ba08 g O .data 0000000000000002 cv_usb_vid +000000003bc0081c g F ro 0000000000000016 sys_pll_init +000000003bc03aca g F ro 0000000000000044 dwc2_ep_fifo_read +000000003bc0ba0c g O .data 0000000000000004 ddr_data_rate +000000003bc13280 g O .bss 0000000000000400 handlerArr +000000003bc08eaa g F ro 0000000000000068 cvx16_dfi_ca_park_prbs +000000003bc040a4 g F ro 0000000000000540 dwc2_udc_irq +000000003bc13000 g O .bss 0000000000000200 cmdBufAllocArr +000000003bc00b68 g F ro 0000000000000012 strlen +000000003bc1380d g O .bss 0000000000000001 ddr_type +000000003bc0845e g F ro 0000000000000224 ddr_sys_bring_up +000000003bc08162 g F ro 0000000000000040 XXH32_digest +000000003bc081a2 g F ro 0000000000000034 ddr_init +000000003bc0392a g F ro 0000000000000044 dwc2_ep_fifo_write +000000003bc01620 g F ro 00000000000000ae decompress_lz4 +000000003bc0702a g F ro 000000000000001e LZ4F_getBlockSize +000000003bc1380c g O .bss 0000000000000001 ddr_capacity +000000003bc13708 g O .bss 0000000000000008 acm +000000003bc01752 g F ro 0000000000000004 DWC2_UncachedWrite32 +000000003bc137c0 g O .bss 0000000000000008 the_controller +000000003bc08f32 g F ro 0000000000000026 cvx16_set_dfi_init_start +000000003bc09e38 g F ro 000000000000002e ctrl_init_high_patch +000000003bc00dec g F ro 00000000000000c6 load_ddr +000000003bc08ac6 g F ro 0000000000000074 cvx16_synp_mrw +000000003bc028da g F ro 0000000000000046 udc_reinit +000000003bc08bfe g F ro 0000000000000016 cvx16_clk_div2 +000000003bc09f46 g F ro 00000000000003b6 phy_init +000000003bc09854 g F ro 0000000000000084 pll_init +000000003bc02f28 g F ro 000000000000028e dwc2_reconfig_usbd + + + +Disassembly of section ro: + +000000003bc00000 <__RO_START__>: + 3bc00000: 0200006f j 3bc00020 + ... + +000000003bc00020 : + 3bc00020: 05900e1b addiw t3,zero,89 + 3bc00024: 019e1e13 slli t3,t3,0x19 + 3bc00028: 03000eb7 lui t4,0x3000 + 3bc0002c: 084e8e9b addiw t4,t4,132 + 3bc00030: 01cea023 sw t3,0(t4) # 3000000 <__BSS_SIZE__+0x2ffa3f0> + 3bc00034: 00000093 li ra,0 + 3bc00038: 00000113 li sp,0 + 3bc0003c: 00000193 li gp,0 + 3bc00040: 00000213 li tp,0 + 3bc00044: 00000293 li t0,0 + 3bc00048: 00000313 li t1,0 + 3bc0004c: 00000393 li t2,0 + 3bc00050: 00000413 li s0,0 + 3bc00054: 00000493 li s1,0 + 3bc00058: 00000513 li a0,0 + 3bc0005c: 00000593 li a1,0 + 3bc00060: 00000613 li a2,0 + 3bc00064: 00000693 li a3,0 + 3bc00068: 00000713 li a4,0 + 3bc0006c: 00000793 li a5,0 + 3bc00070: 00000813 li a6,0 + 3bc00074: 00000893 li a7,0 + 3bc00078: 00000913 li s2,0 + 3bc0007c: 00000993 li s3,0 + 3bc00080: 00000a13 li s4,0 + 3bc00084: 00000a93 li s5,0 + 3bc00088: 00000b13 li s6,0 + 3bc0008c: 00000b93 li s7,0 + 3bc00090: 00000c13 li s8,0 + 3bc00094: 00000c93 li s9,0 + 3bc00098: 00000d13 li s10,0 + 3bc0009c: 00000d93 li s11,0 + 3bc000a0: 00000e13 li t3,0 + 3bc000a4: 00000e93 li t4,0 + 3bc000a8: 00000f13 li t5,0 + 3bc000ac: 00000f93 li t6,0 + 3bc000b0: 34001073 csrw mscratch,zero + 3bc000b4: 00000297 auipc t0,0x0 + 3bc000b8: 09028293 addi t0,t0,144 # 3bc00144 + 3bc000bc: 30529073 csrw mtvec,t0 + 3bc000c0: 000181b7 lui gp,0x18 + 3bc000c4: 0c71819b addiw gp,gp,199 + 3bc000c8: 00f19193 slli gp,gp,0xf + 3bc000cc: 7c019073 csrw mxstatus,gp + 3bc000d0: 702001b7 lui gp,0x70200 + 3bc000d4: ffc1819b addiw gp,gp,-4 + 3bc000d8: 00100213 li tp,1 + 3bc000dc: 0041a023 sw tp,0(gp) # 70200000 <__BL2_END__+0x345ec7f0> + 3bc000e0: 03300193 li gp,51 + 3bc000e4: 7c21b073 csrc mcor,gp + 3bc000e8: 01100193 li gp,17 + 3bc000ec: 7c21a073 csrs mcor,gp + 3bc000f0: 00100193 li gp,1 + 3bc000f4: 7c11a073 csrs mhcr,gp + 3bc000f8: 03300193 li gp,51 + 3bc000fc: 7c21b073 csrc mcor,gp + 3bc00100: 01200193 li gp,18 + 3bc00104: 7c21a073 csrs mcor,gp + 3bc00108: 00200193 li gp,2 + 3bc0010c: 7c11a073 csrs mhcr,gp + 3bc00110: 0000e117 auipc sp,0xe + 3bc00114: 93010113 addi sp,sp,-1744 # 3bc0da40 <__STACKS_END__> + 3bc00118: 0000e697 auipc a3,0xe + 3bc0011c: ae868693 addi a3,a3,-1304 # 3bc0dc00 <__BSS_START__> + 3bc00120: 00013717 auipc a4,0x13 + 3bc00124: 6f070713 addi a4,a4,1776 # 3bc13810 <__BL2_END__> + 3bc00128: 40d70733 sub a4,a4,a3 + +000000003bc0012c : + 3bc0012c: 0006b023 sd zero,0(a3) + 3bc00130: 00868693 addi a3,a3,8 + 3bc00134: ff870713 addi a4,a4,-8 + 3bc00138: fe071ae3 bnez a4,3bc0012c + 3bc0013c: 2f0010ef jal ra,3bc0142c + 3bc00140: 0040006f j 3bc00144 + +000000003bc00144 : + 3bc00144: 4760006f j 3bc005ba + 3bc00148: ffdff06f j 3bc00144 + +000000003bc0014c : + 3bc0014c: 0100000b icache.iall + 3bc00150: 01a0000b sync.i + 3bc00154: 8082 ret + +000000003bc00156 : + 3bc00156: 87aa mv a5,a0 + 3bc00158: 03f58593 addi a1,a1,63 + 3bc0015c: 95be add a1,a1,a5 + 3bc0015e: fc057513 andi a0,a0,-64 + 3bc00162: fc05f593 andi a1,a1,-64 + 3bc00166: 00b56563 bltu a0,a1,3bc00170 + 3bc0016a: 0190000b sync.s + 3bc0016e: 8082 ret + 3bc00170: 02b5000b dcache.cipa a0 + 3bc00174: 04050513 addi a0,a0,64 + 3bc00178: b7fd j 3bc00166 + +000000003bc0017a : + 3bc0017a: 47e5 li a5,25 + 3bc0017c: 02a787bb mulw a5,a5,a0 + 3bc00180: 03000737 lui a4,0x3000 + 3bc00184: 08f72423 sw a5,136(a4) # 3000088 <__BSS_SIZE__+0x2ffa478> + 3bc00188: 8082 ret + +000000003bc0018a : + 3bc0018a: c0102773 rdtime a4 + 3bc0018e: 47e5 li a5,25 + 3bc00190: 02a786bb mulw a3,a5,a0 + 3bc00194: fff74713 not a4,a4 + 3bc00198: 030007b7 lui a5,0x3000 + 3bc0019c: 2701 sext.w a4,a4 + 3bc0019e: 08d7a423 sw a3,136(a5) # 3000088 <__BSS_SIZE__+0x2ffa478> + 3bc001a2: c01027f3 rdtime a5 + 3bc001a6: fff7c793 not a5,a5 + 3bc001aa: 40f707bb subw a5,a4,a5 + 3bc001ae: fed7eae3 bltu a5,a3,3bc001a2 + 3bc001b2: 8082 ret + +000000003bc001b4 : + 3bc001b4: 3e800793 li a5,1000 + 3bc001b8: 02a7853b mulw a0,a5,a0 + 3bc001bc: b7f9 j 3bc0018a + +000000003bc001be : + 3bc001be: e519 bnez a0,3bc001cc + 3bc001c0: c0102573 rdtime a0 + 3bc001c4: fff54513 not a0,a0 + 3bc001c8: 2501 sext.w a0,a0 + 3bc001ca: 8082 ret + 3bc001cc: c01027f3 rdtime a5 + 3bc001d0: fff7c793 not a5,a5 + 3bc001d4: 9d1d subw a0,a0,a5 + 3bc001d6: 6799 lui a5,0x6 + 3bc001d8: 1a87879b addiw a5,a5,424 + 3bc001dc: 02f5553b divuw a0,a0,a5 + 3bc001e0: 8082 ret + +000000003bc001e2 : + 3bc001e2: e519 bnez a0,3bc001f0 + 3bc001e4: c0102573 rdtime a0 + 3bc001e8: fff54513 not a0,a0 + 3bc001ec: 2501 sext.w a0,a0 + 3bc001ee: 8082 ret + 3bc001f0: c01027f3 rdtime a5 + 3bc001f4: fff7c793 not a5,a5 + 3bc001f8: 9d1d subw a0,a0,a5 + 3bc001fa: 47e5 li a5,25 + 3bc001fc: 02f5553b divuw a0,a0,a5 + 3bc00200: 67e1 lui a5,0x18 + 3bc00202: 6a07879b addiw a5,a5,1696 + 3bc00206: 02f5753b remuw a0,a0,a5 + 3bc0020a: 8082 ret + +000000003bc0020c : + 3bc0020c: c0102573 rdtime a0 + 3bc00210: 47e5 li a5,25 + 3bc00212: 02f55533 divu a0,a0,a5 + 3bc00216: 2501 sext.w a0,a0 + 3bc00218: 8082 ret + +000000003bc0021a : + 3bc0021a: 1101 addi sp,sp,-32 + 3bc0021c: 494257b7 lui a5,0x49425 + 3bc00220: e822 sd s0,16(sp) + 3bc00222: 34f78793 addi a5,a5,847 # 4942534f <__BL2_END__+0xd811b3f> + 3bc00226: 00013417 auipc s0,0x13 + 3bc0022a: 4a240413 addi s0,s0,1186 # 3bc136c8 + 3bc0022e: e426 sd s1,8(sp) + 3bc00230: e01c sd a5,0(s0) + 3bc00232: 010014b7 lui s1,0x1001 + 3bc00236: 4785 li a5,1 + 3bc00238: e04a sd s2,0(sp) + 3bc0023a: 00749613 slli a2,s1,0x7 + 3bc0023e: 892a mv s2,a0 + 3bc00240: ec1c sd a5,24(s0) + 3bc00242: 0000a517 auipc a0,0xa + 3bc00246: 0ee50513 addi a0,a0,238 # 3bc0a330 + 3bc0024a: 57fd li a5,-1 + 3bc0024c: ec06 sd ra,24(sp) + 3bc0024e: f41c sd a5,40(s0) + 3bc00250: e80c sd a1,16(s0) + 3bc00252: 106000ef jal ra,3bc00358 + 3bc00256: 03000593 li a1,48 + 3bc0025a: 8522 mv a0,s0 + 3bc0025c: efbff0ef jal ra,3bc00156 + 3bc00260: fadff0ef jal ra,3bc0020c + 3bc00264: 3e800793 li a5,1000 + 3bc00268: 3e75051b addiw a0,a0,999 + 3bc0026c: 02f5553b divuw a0,a0,a5 + 3bc00270: 8622 mv a2,s0 + 3bc00272: 0000b797 auipc a5,0xb + 3bc00276: 4de7b783 ld a5,1246(a5) # 3bc0b750 + 3bc0027a: 6442 ld s0,16(sp) + 3bc0027c: 60e2 ld ra,24(sp) + 3bc0027e: 00749593 slli a1,s1,0x7 + 3bc00282: 64a2 ld s1,8(sp) + 3bc00284: 00a79723 sh a0,14(a5) + 3bc00288: 87ca mv a5,s2 + 3bc0028a: 6902 ld s2,0(sp) + 3bc0028c: 4501 li a0,0 + 3bc0028e: 6105 addi sp,sp,32 + 3bc00290: 8782 jr a5 + +000000003bc00292 : + 3bc00292: 8082 ret + +000000003bc00294 <_uart_putc>: + 3bc00294: 04140737 lui a4,0x4140 + 3bc00298: 4b5c lw a5,20(a4) + 3bc0029a: 0207f793 andi a5,a5,32 + 3bc0029e: dfed beqz a5,3bc00298 <_uart_putc+0x4> + 3bc002a0: c308 sw a0,0(a4) + 3bc002a2: 8082 ret + +000000003bc002a4 : + 3bc002a4: 1141 addi sp,sp,-16 + 3bc002a6: e022 sd s0,0(sp) + 3bc002a8: e406 sd ra,8(sp) + 3bc002aa: 47a9 li a5,10 + 3bc002ac: 842a mv s0,a0 + 3bc002ae: 00f51563 bne a0,a5,3bc002b8 + 3bc002b2: 4535 li a0,13 + 3bc002b4: fe1ff0ef jal ra,3bc00294 <_uart_putc> + 3bc002b8: 8522 mv a0,s0 + 3bc002ba: 6402 ld s0,0(sp) + 3bc002bc: 60a2 ld ra,8(sp) + 3bc002be: 0141 addi sp,sp,16 + 3bc002c0: bfd1 j 3bc00294 <_uart_putc> + +000000003bc002c2 : + 3bc002c2: 041406b7 lui a3,0x4140 + 3bc002c6: 06000713 li a4,96 + 3bc002ca: 4adc lw a5,20(a3) + 3bc002cc: 0607f793 andi a5,a5,96 + 3bc002d0: fee79de3 bne a5,a4,3bc002ca + 3bc002d4: 8082 ret + +000000003bc002d6 : + 3bc002d6: 7139 addi sp,sp,-64 + 3bc002d8: f04a sd s2,32(sp) + 3bc002da: 7c05b70b extu a4,a1,31,0 + 3bc002de: fc06 sd ra,56(sp) + 3bc002e0: f822 sd s0,48(sp) + 3bc002e2: f426 sd s1,40(sp) + 3bc002e4: 8932 mv s2,a2 + 3bc002e6: 4801 li a6,0 + 3bc002e8: 45a5 li a1,9 + 3bc002ea: 02e57633 remu a2,a0,a4 + 3bc002ee: 0018041b addiw s0,a6,1 + 3bc002f2: 0ff67793 andi a5,a2,255 + 3bc002f6: 04c5e063 bltu a1,a2,3bc00336 + 3bc002fa: 0307879b addiw a5,a5,48 + 3bc002fe: 0ff7f793 andi a5,a5,255 + 3bc00302: 0030 addi a2,sp,8 + 3bc00304: 0106578b srb a5,a2,a6,0 + 3bc00308: 02e557b3 divu a5,a0,a4 + 3bc0030c: 0805 addi a6,a6,1 + 3bc0030e: 02e57263 bgeu a0,a4,3bc00332 + 3bc00312: 408684bb subw s1,a3,s0 + 3bc00316: 02904363 bgtz s1,3bc0033c + 3bc0031a: 54fd li s1,-1 + 3bc0031c: 147d addi s0,s0,-1 + 3bc0031e: 0004079b sext.w a5,s0 + 3bc00322: 02979463 bne a5,s1,3bc0034a + 3bc00326: 70e2 ld ra,56(sp) + 3bc00328: 7442 ld s0,48(sp) + 3bc0032a: 74a2 ld s1,40(sp) + 3bc0032c: 7902 ld s2,32(sp) + 3bc0032e: 6121 addi sp,sp,64 + 3bc00330: 8082 ret + 3bc00332: 853e mv a0,a5 + 3bc00334: bf5d j 3bc002ea + 3bc00336: 0577879b addiw a5,a5,87 + 3bc0033a: b7d1 j 3bc002fe + 3bc0033c: 85ca mv a1,s2 + 3bc0033e: 03000513 li a0,48 + 3bc00342: 7b8000ef jal ra,3bc00afa + 3bc00346: 34fd addiw s1,s1,-1 + 3bc00348: b7f9 j 3bc00316 + 3bc0034a: 003c addi a5,sp,8 + 3bc0034c: 8087c50b lrbu a0,a5,s0,0 + 3bc00350: 85ca mv a1,s2 + 3bc00352: 7a8000ef jal ra,3bc00afa + 3bc00356: b7d9 j 3bc0031c + +000000003bc00358 : + 3bc00358: 7135 addi sp,sp,-160 + 3bc0035a: e8a2 sd s0,80(sp) + 3bc0035c: e4a6 sd s1,72(sp) + 3bc0035e: ec86 sd ra,88(sp) + 3bc00360: e0ca sd s2,64(sp) + 3bc00362: fc4e sd s3,56(sp) + 3bc00364: f852 sd s4,48(sp) + 3bc00366: f456 sd s5,40(sp) + 3bc00368: f05a sd s6,32(sp) + 3bc0036a: f4ae sd a1,104(sp) + 3bc0036c: f8b2 sd a2,112(sp) + 3bc0036e: fcb6 sd a3,120(sp) + 3bc00370: e13a sd a4,128(sp) + 3bc00372: e53e sd a5,136(sp) + 3bc00374: e942 sd a6,144(sp) + 3bc00376: ed46 sd a7,152(sp) + 3bc00378: 842a mv s0,a0 + 3bc0037a: 4489 li s1,2 + 3bc0037c: c11d beqz a0,3bc003a2 + 3bc0037e: 00054703 lbu a4,0(a0) + 3bc00382: 4785 li a5,1 + 3bc00384: 00f71f63 bne a4,a5,3bc003a2 + 3bc00388: 00154783 lbu a5,1(a0) + 3bc0038c: 4711 li a4,4 + 3bc0038e: fd07879b addiw a5,a5,-48 + 3bc00392: 0ff7f693 andi a3,a5,255 + 3bc00396: 00d76663 bltu a4,a3,3bc003a2 + 3bc0039a: 0007849b sext.w s1,a5 + 3bc0039e: 00250413 addi s0,a0,2 + 3bc003a2: 10bc addi a5,sp,104 + 3bc003a4: ec3e sd a5,24(sp) + 3bc003a6: 4a25 li s4,9 + 3bc003a8: 4ad9 li s5,22 + 3bc003aa: 0000a997 auipc s3,0xa + 3bc003ae: fb298993 addi s3,s3,-78 # 3bc0a35c + 3bc003b2: 00044503 lbu a0,0(s0) + 3bc003b6: e919 bnez a0,3bc003cc + 3bc003b8: 60e6 ld ra,88(sp) + 3bc003ba: 6446 ld s0,80(sp) + 3bc003bc: 64a6 ld s1,72(sp) + 3bc003be: 6906 ld s2,64(sp) + 3bc003c0: 79e2 ld s3,56(sp) + 3bc003c2: 7a42 ld s4,48(sp) + 3bc003c4: 7aa2 ld s5,40(sp) + 3bc003c6: 7b02 ld s6,32(sp) + 3bc003c8: 610d addi sp,sp,160 + 3bc003ca: 8082 ret + 3bc003cc: 02500793 li a5,37 + 3bc003d0: 0405 addi s0,s0,1 + 3bc003d2: 10f51c63 bne a0,a5,3bc004ea + 3bc003d6: 4781 li a5,0 + 3bc003d8: 4681 li a3,0 + 3bc003da: 03000613 li a2,48 + 3bc003de: 00044703 lbu a4,0(s0) + 3bc003e2: 00c70c63 beq a4,a2,3bc003fa + 3bc003e6: f9c7071b addiw a4,a4,-100 + 3bc003ea: 0ff77713 andi a4,a4,255 + 3bc003ee: fceae5e3 bltu s5,a4,3bc003b8 + 3bc003f2: 44e9c70b lrw a4,s3,a4,2 + 3bc003f6: 974e add a4,a4,s3 + 3bc003f8: 8702 jr a4 + 3bc003fa: 00144703 lbu a4,1(s0) + 3bc003fe: fd07071b addiw a4,a4,-48 + 3bc00402: 0ff77593 andi a1,a4,255 + 3bc00406: 00ba6463 bltu s4,a1,3bc0040e + 3bc0040a: 0007069b sext.w a3,a4 + 3bc0040e: 0409 addi s0,s0,2 + 3bc00410: b7f9 j 3bc003de + 3bc00412: 6762 ld a4,24(sp) + 3bc00414: 4585 li a1,1 + 3bc00416: 00870613 addi a2,a4,8 # 4140008 <__BSS_SIZE__+0x413a3f8> + 3bc0041a: ec32 sd a2,24(sp) + 3bc0041c: 02f5d563 bge a1,a5,3bc00446 + 3bc00420: 00073903 ld s2,0(a4) + 3bc00424: 00095b63 bgez s2,3bc0043a + 3bc00428: 85a6 mv a1,s1 + 3bc0042a: 02d00513 li a0,45 + 3bc0042e: e436 sd a3,8(sp) + 3bc00430: 6ca000ef jal ra,3bc00afa + 3bc00434: 66a2 ld a3,8(sp) + 3bc00436: 41200933 neg s2,s2 + 3bc0043a: 8626 mv a2,s1 + 3bc0043c: 45a9 li a1,10 + 3bc0043e: 854a mv a0,s2 + 3bc00440: e97ff0ef jal ra,3bc002d6 + 3bc00444: a831 j 3bc00460 + 3bc00446: ffe9 bnez a5,3bc00420 + 3bc00448: 00072903 lw s2,0(a4) + 3bc0044c: bfe1 j 3bc00424 + 3bc0044e: 67e2 ld a5,24(sp) + 3bc00450: 0007b903 ld s2,0(a5) + 3bc00454: 00878713 addi a4,a5,8 + 3bc00458: ec3a sd a4,24(sp) + 3bc0045a: 00094503 lbu a0,0(s2) + 3bc0045e: e119 bnez a0,3bc00464 + 3bc00460: 0405 addi s0,s0,1 + 3bc00462: bf81 j 3bc003b2 + 3bc00464: 85a6 mv a1,s1 + 3bc00466: 0905 addi s2,s2,1 + 3bc00468: 692000ef jal ra,3bc00afa + 3bc0046c: b7fd j 3bc0045a + 3bc0046e: 67e2 ld a5,24(sp) + 3bc00470: 0000a917 auipc s2,0xa + 3bc00474: ee890913 addi s2,s2,-280 # 3bc0a358 + 3bc00478: 0007bb03 ld s6,0(a5) + 3bc0047c: 00878713 addi a4,a5,8 + 3bc00480: ec3a sd a4,24(sp) + 3bc00482: 000b1c63 bnez s6,3bc0049a + 3bc00486: 8626 mv a2,s1 + 3bc00488: 45c1 li a1,16 + 3bc0048a: 855a mv a0,s6 + 3bc0048c: bf55 j 3bc00440 + 3bc0048e: 85a6 mv a1,s1 + 3bc00490: e436 sd a3,8(sp) + 3bc00492: 668000ef jal ra,3bc00afa + 3bc00496: 66a2 ld a3,8(sp) + 3bc00498: 0905 addi s2,s2,1 + 3bc0049a: 00094503 lbu a0,0(s2) + 3bc0049e: f965 bnez a0,3bc0048e + 3bc004a0: b7dd j 3bc00486 + 3bc004a2: 6762 ld a4,24(sp) + 3bc004a4: 4585 li a1,1 + 3bc004a6: 00870613 addi a2,a4,8 + 3bc004aa: ec32 sd a2,24(sp) + 3bc004ac: 00f5d663 bge a1,a5,3bc004b8 + 3bc004b0: 6308 ld a0,0(a4) + 3bc004b2: 8626 mv a2,s1 + 3bc004b4: 45c1 li a1,16 + 3bc004b6: b769 j 3bc00440 + 3bc004b8: ffe5 bnez a5,3bc004b0 + 3bc004ba: 00076503 lwu a0,0(a4) + 3bc004be: bfd5 j 3bc004b2 + 3bc004c0: 0405 addi s0,s0,1 + 3bc004c2: 4789 li a5,2 + 3bc004c4: bf29 j 3bc003de + 3bc004c6: 2785 addiw a5,a5,1 + 3bc004c8: 0405 addi s0,s0,1 + 3bc004ca: bf11 j 3bc003de + 3bc004cc: 6762 ld a4,24(sp) + 3bc004ce: 4585 li a1,1 + 3bc004d0: 00870613 addi a2,a4,8 + 3bc004d4: ec32 sd a2,24(sp) + 3bc004d6: 00f5d663 bge a1,a5,3bc004e2 + 3bc004da: 6308 ld a0,0(a4) + 3bc004dc: 8626 mv a2,s1 + 3bc004de: 45a9 li a1,10 + 3bc004e0: b785 j 3bc00440 + 3bc004e2: ffe5 bnez a5,3bc004da + 3bc004e4: 00076503 lwu a0,0(a4) + 3bc004e8: bfd5 j 3bc004dc + 3bc004ea: 85a6 mv a1,s1 + 3bc004ec: 60e000ef jal ra,3bc00afa + 3bc004f0: b5c9 j 3bc003b2 + +000000003bc004f2 <__system_reset>: + 3bc004f2: 7179 addi sp,sp,-48 + 3bc004f4: f022 sd s0,32(sp) + 3bc004f6: be00e437 lui s0,0xbe00e + 3bc004fa: f406 sd ra,40(sp) + 3bc004fc: 00340793 addi a5,s0,3 # ffffffffbe00e003 <__BL2_END__+0xffffffff823fa7f3> + 3bc00500: ec26 sd s1,24(sp) + 3bc00502: e84a sd s2,16(sp) + 3bc00504: e44e sd s3,8(sp) + 3bc00506: 0e000937 lui s2,0xe000 + 3bc0050a: 862e mv a2,a1 + 3bc0050c: 00f92823 sw a5,16(s2) # e000010 + 3bc00510: 85aa mv a1,a0 + 3bc00512: 0000a517 auipc a0,0xa + 3bc00516: ea650513 addi a0,a0,-346 # 3bc0a3b8 + 3bc0051a: e3fff0ef jal ra,3bc00358 + 3bc0051e: da5ff0ef jal ra,3bc002c2 + 3bc00522: be0034b7 lui s1,0xbe003 + 3bc00526: 00148793 addi a5,s1,1 # ffffffffbe003001 <__BL2_END__+0xffffffff823ef7f1> + 3bc0052a: 030009b7 lui s3,0x3000 + 3bc0052e: 6505 lui a0,0x1 + 3bc00530: 08f9a223 sw a5,132(s3) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc00534: 38850513 addi a0,a0,904 # 1388 <__BSS_SIZE__-0x4888> + 3bc00538: c7dff0ef jal ra,3bc001b4 + 3bc0053c: 050267b7 lui a5,0x5026 + 3bc00540: 4705 li a4,1 + 3bc00542: 0ee7a023 sw a4,224(a5) # 50260e0 + 3bc00546: 0ce7a423 sw a4,200(a5) + 3bc0054a: 0489 addi s1,s1,2 + 3bc0054c: 0899a223 sw s1,132(s3) + 3bc00550: 06400513 li a0,100 + 3bc00554: c37ff0ef jal ra,3bc0018a + 3bc00558: 050257b7 lui a5,0x5025 + 3bc0055c: 672d lui a4,0xb + 3bc0055e: 0a07a623 sw zero,172(a5) # 50250ac + 3bc00562: b1870713 addi a4,a4,-1256 # ab18 <__BSS_SIZE__+0x4f08> + 3bc00566: c3d8 sw a4,4(a5) + 3bc00568: 00400737 lui a4,0x400 + 3bc0056c: 04070713 addi a4,a4,64 # 400040 <__BSS_SIZE__+0x3fa430> + 3bc00570: c798 sw a4,8(a5) + 3bc00572: 030107b7 lui a5,0x3010 + 3bc00576: 06600713 li a4,102 + 3bc0057a: c3d8 sw a4,4(a5) + 3bc0057c: 02000713 li a4,32 + 3bc00580: cfd8 sw a4,28(a5) + 3bc00582: 07600713 li a4,118 + 3bc00586: c7d8 sw a4,12(a5) + 3bc00588: 4745 li a4,17 + 3bc0058a: c398 sw a4,0(a5) + 3bc0058c: 00394783 lbu a5,3(s2) + 3bc00590: 0407f793 andi a5,a5,64 + 3bc00594: c395 beqz a5,3bc005b8 <__system_reset+0xc6> + 3bc00596: 0411 addi s0,s0,4 + 3bc00598: 00892823 sw s0,16(s2) + 3bc0059c: 050266b7 lui a3,0x5026 + 3bc005a0: 470d li a4,3 + 3bc005a2: 0d46a783 lw a5,212(a3) # 50260d4 + 3bc005a6: 2781 sext.w a5,a5 + 3bc005a8: fee79de3 bne a5,a4,3bc005a2 <__system_reset+0xb0> + 3bc005ac: 000807b7 lui a5,0x80 + 3bc005b0: 05025737 lui a4,0x5025 + 3bc005b4: 07a1 addi a5,a5,8 + 3bc005b6: c71c sw a5,8(a4) + 3bc005b8: a001 j 3bc005b8 <__system_reset+0xc6> + +000000003bc005ba : + 3bc005ba: 1141 addi sp,sp,-16 + 3bc005bc: be00e7b7 lui a5,0xbe00e + 3bc005c0: e406 sd ra,8(sp) + 3bc005c2: 0e000737 lui a4,0xe000 + 3bc005c6: 0789 addi a5,a5,2 + 3bc005c8: cb1c sw a5,16(a4) + 3bc005ca: 0000879b sext.w a5,ra + 3bc005ce: 8586 mv a1,ra + 3bc005d0: 0000a517 auipc a0,0xa + 3bc005d4: e0050513 addi a0,a0,-512 # 3bc0a3d0 + 3bc005d8: cb5c sw a5,20(a4) + 3bc005da: d7fff0ef jal ra,3bc00358 + 3bc005de: 55fd li a1,-1 + 3bc005e0: 0000a517 auipc a0,0xa + 3bc005e4: e0050513 addi a0,a0,-512 # 3bc0a3e0 + 3bc005e8: f0bff0ef jal ra,3bc004f2 <__system_reset> + +000000003bc005ec : + 3bc005ec: 1141 addi sp,sp,-16 + 3bc005ee: e022 sd s0,0(sp) + 3bc005f0: 842a mv s0,a0 + 3bc005f2: 0000a517 auipc a0,0xa + 3bc005f6: df650513 addi a0,a0,-522 # 3bc0a3e8 + 3bc005fa: e406 sd ra,8(sp) + 3bc005fc: d5dff0ef jal ra,3bc00358 + 3bc00600: 03003737 lui a4,0x3003 + 3bc00604: 535c lw a5,36(a4) + 3bc00606: 6609 lui a2,0x2 + 3bc00608: 60a2 ld ra,8(sp) + 3bc0060a: 2781 sext.w a5,a5 + 3bc0060c: fbf7f793 andi a5,a5,-65 + 3bc00610: d35c sw a5,36(a4) + 3bc00612: 020b07b7 lui a5,0x20b0 + 3bc00616: 43d4 lw a3,4(a5) + 3bc00618: 8ed1 or a3,a3,a2 + 3bc0061a: c3d4 sw a3,4(a5) + 3bc0061c: 0004069b sext.w a3,s0 + 3bc00620: d394 sw a3,32(a5) + 3bc00622: 9401 srai s0,s0,0x20 + 3bc00624: d3c0 sw s0,36(a5) + 3bc00626: 535c lw a5,36(a4) + 3bc00628: 6402 ld s0,0(sp) + 3bc0062a: 2781 sext.w a5,a5 + 3bc0062c: 0407e793 ori a5,a5,64 + 3bc00630: d35c sw a5,36(a4) + 3bc00632: 0141 addi sp,sp,16 + 3bc00634: 8082 ret + +000000003bc00636 : + 3bc00636: 1141 addi sp,sp,-16 + 3bc00638: e406 sd ra,8(sp) + 3bc0063a: c8800097 auipc ra,0xc8800 + 3bc0063e: 9e6080e7 jalr -1562(ra) # 4400020 + 3bc00642: 67b5 lui a5,0xd + 3bc00644: 2501 sext.w a0,a0 + 3bc00646: ea078713 addi a4,a5,-352 # cea0 <__BSS_SIZE__+0x7290> + 3bc0064a: 00e50a63 beq a0,a4,3bc0065e + 3bc0064e: ea378793 addi a5,a5,-349 + 3bc00652: 02f50063 beq a0,a5,3bc00672 + 3bc00656: 0e0007b7 lui a5,0xe000 + 3bc0065a: c3c8 sw a0,4(a5) + 3bc0065c: a801 j 3bc0066c + 3bc0065e: 4d4757b7 lui a5,0x4d475 + 3bc00662: 0e000737 lui a4,0xe000 + 3bc00666: e3278793 addi a5,a5,-462 # 4d474e32 <__BL2_END__+0x11861622> + 3bc0066a: c35c sw a5,4(a4) + 3bc0066c: 60a2 ld ra,8(sp) + 3bc0066e: 0141 addi sp,sp,16 + 3bc00670: 8082 ret + 3bc00672: 4d4757b7 lui a5,0x4d475 + 3bc00676: 0e000737 lui a4,0xe000 + 3bc0067a: e3178793 addi a5,a5,-463 # 4d474e31 <__BL2_END__+0x11861621> + 3bc0067e: b7f5 j 3bc0066a + +000000003bc00680 : + 3bc00680: 030027b7 lui a5,0x3002 + 3bc00684: 0207a823 sw zero,48(a5) # 3002030 <__BSS_SIZE__+0x2ffc420> + 3bc00688: 0207aa23 sw zero,52(a5) + 3bc0068c: 8082 ret + +000000003bc0068e : + 3bc0068e: 7139 addi sp,sp,-64 + 3bc00690: 0000a797 auipc a5,0xa + 3bc00694: dc87b783 ld a5,-568(a5) # 3bc0a458 + 3bc00698: e03e sd a5,0(sp) + 3bc0069a: 0000a797 auipc a5,0xa + 3bc0069e: dc67b783 ld a5,-570(a5) # 3bc0a460 + 3bc006a2: e43e sd a5,8(sp) + 3bc006a4: 0000a797 auipc a5,0xa + 3bc006a8: dc47b783 ld a5,-572(a5) # 3bc0a468 + 3bc006ac: e83e sd a5,16(sp) + 3bc006ae: 0000a517 auipc a0,0xa + 3bc006b2: d4250513 addi a0,a0,-702 # 3bc0a3f0 + 3bc006b6: 0000a797 auipc a5,0xa + 3bc006ba: dba7b783 ld a5,-582(a5) # 3bc0a470 + 3bc006be: f426 sd s1,40(sp) + 3bc006c0: ec3e sd a5,24(sp) + 3bc006c2: fc06 sd ra,56(sp) + 3bc006c4: f822 sd s0,48(sp) + 3bc006c6: f04a sd s2,32(sp) + 3bc006c8: c91ff0ef jal ra,3bc00358 + 3bc006cc: 030027b7 lui a5,0x3002 + 3bc006d0: 577d li a4,-1 + 3bc006d2: 5b84 lw s1,48(a5) + 3bc006d4: 03f00693 li a3,63 + 3bc006d8: db98 sw a4,48(a5) + 3bc006da: dbd4 sw a3,52(a5) + 3bc006dc: 054887b7 lui a5,0x5488 + 3bc006e0: 03003737 lui a4,0x3003 + 3bc006e4: 10178793 addi a5,a5,257 # 5488101 + 3bc006e8: 80f72423 sw a5,-2040(a4) # 3002808 <__BSS_SIZE__+0x2ffcbf8> + 3bc006ec: 030037b7 lui a5,0x3003 + 3bc006f0: 84d72023 sw a3,-1984(a4) + 3bc006f4: 2481 sext.w s1,s1 + 3bc006f6: 4601 li a2,0 + 3bc006f8: 85470713 addi a4,a4,-1964 + 3bc006fc: 01010813 addi a6,sp,16 + 3bc00700: 80c78513 addi a0,a5,-2036 # 300280c <__BSS_SIZE__+0x2ffcbfc> + 3bc00704: 45c1 li a1,16 + 3bc00706: 4026468b lrw a3,a2,sp,0 + 3bc0070a: c314 sw a3,0(a4) + 3bc0070c: ffc72683 lw a3,-4(a4) + 3bc00710: 0741 addi a4,a4,16 + 3bc00712: 2681 sext.w a3,a3 + 3bc00714: 9abd andi a3,a3,-17 + 3bc00716: 0016e693 ori a3,a3,1 + 3bc0071a: fed72623 sw a3,-20(a4) + 3bc0071e: 4106468b lrw a3,a2,a6,0 + 3bc00722: 40a6568b srw a3,a2,a0,0 + 3bc00726: 0611 addi a2,a2,4 + 3bc00728: fcb61fe3 bne a2,a1,3bc00706 + 3bc0072c: 80078613 addi a2,a5,-2048 + 3bc00730: 4218 lw a4,0(a2) + 3bc00732: 76bd lui a3,0xfffef + 3bc00734: eee68693 addi a3,a3,-274 # fffffffffffeeeee <__BL2_END__+0xffffffffc43db6de> + 3bc00738: 2701 sext.w a4,a4 + 3bc0073a: 8f75 and a4,a4,a3 + 3bc0073c: c218 sw a4,0(a2) + 3bc0073e: 00448737 lui a4,0x448 + 3bc00742: 90078613 addi a2,a5,-1792 + 3bc00746: 10170713 addi a4,a4,257 # 448101 <__BSS_SIZE__+0x4424f1> + 3bc0074a: c618 sw a4,8(a2) + 3bc0074c: 03002437 lui s0,0x3002 + 3bc00750: 018006b7 lui a3,0x1800 + 3bc00754: 6841 lui a6,0x10 + 3bc00756: d014 sw a3,32(s0) + 3bc00758: 30980593 addi a1,a6,777 # 10309 <__BSS_SIZE__+0xa6f9> + 3bc0075c: 10040693 addi a3,s0,256 # 3002100 <__BSS_SIZE__+0x2ffc4f0> + 3bc00760: da8c sw a1,48(a3) + 3bc00762: 000205b7 lui a1,0x20 + 3bc00766: 20958593 addi a1,a1,521 # 20209 <__BSS_SIZE__+0x1a5f9> + 3bc0076a: de8c sw a1,56(a3) + 3bc0076c: c658 sw a4,12(a2) + 3bc0076e: 00030637 lui a2,0x30 + 3bc00772: 00960313 addi t1,a2,9 # 30009 <__BSS_SIZE__+0x2a3f9> + 3bc00776: 04642423 sw t1,72(s0) + 3bc0077a: 30960713 addi a4,a2,777 + 3bc0077e: 00040537 lui a0,0x40 + 3bc00782: c878 sw a4,84(s0) + 3bc00784: 00080937 lui s2,0x80 + 3bc00788: 00950713 addi a4,a0,9 # 40009 <__BSS_SIZE__+0x3a3f9> + 3bc0078c: d078 sw a4,100(s0) + 3bc0078e: 00990893 addi a7,s2,9 # 80009 <__BSS_SIZE__+0x7a3f9> + 3bc00792: 08040713 addi a4,s0,128 + 3bc00796: 01172423 sw a7,8(a4) + 3bc0079a: 001208b7 lui a7,0x120 + 3bc0079e: 08a5 addi a7,a7,9 + 3bc007a0: 01172c23 sw a7,24(a4) + 3bc007a4: 000f08b7 lui a7,0xf0 + 3bc007a8: 08a5 addi a7,a7,9 + 3bc007aa: 0316a023 sw a7,32(a3) # 1800020 <__BSS_SIZE__+0x17fa410> + 3bc007ae: 0825 addi a6,a6,9 + 3bc007b0: 03072423 sw a6,40(a4) + 3bc007b4: 10960813 addi a6,a2,265 + 3bc007b8: 07072223 sw a6,100(a4) + 3bc007bc: 30950513 addi a0,a0,777 + 3bc007c0: d768 sw a0,108(a4) + 3bc007c2: 00060537 lui a0,0x60 + 3bc007c6: 04672423 sw t1,72(a4) + 3bc007ca: 20950513 addi a0,a0,521 # 60209 <__BSS_SIZE__+0x5a5f9> + 3bc007ce: cb28 sw a0,80(a4) + 3bc007d0: cf28 sw a0,88(a4) + 3bc007d2: ca8c sw a1,16(a3) + 3bc007d4: 20960613 addi a2,a2,521 + 3bc007d8: c2f0 sw a2,68(a3) + 3bc007da: 00050637 lui a2,0x50 + 3bc007de: 0625 addi a2,a2,9 + 3bc007e0: df10 sw a2,56(a4) + 3bc007e2: d6d0 sw a2,44(a3) + 3bc007e4: 88078793 addi a5,a5,-1920 + 3bc007e8: 5398 lw a4,32(a5) + 3bc007ea: 10090913 addi s2,s2,256 + 3bc007ee: 0124f933 and s2,s1,s2 + 3bc007f2: 2701 sext.w a4,a4 + 3bc007f4: 9b6d andi a4,a4,-5 + 3bc007f6: d398 sw a4,32(a5) + 3bc007f8: 57d8 lw a4,44(a5) + 3bc007fa: 0c800513 li a0,200 + 3bc007fe: 2701 sext.w a4,a4 + 3bc00800: 9b65 andi a4,a4,-7 + 3bc00802: d7d8 sw a4,44(a5) + 3bc00804: 987ff0ef jal ra,3bc0018a + 3bc00808: 03242823 sw s2,48(s0) + 3bc0080c: 70e2 ld ra,56(sp) + 3bc0080e: 02042a23 sw zero,52(s0) + 3bc00812: 7442 ld s0,48(sp) + 3bc00814: 74a2 ld s1,40(sp) + 3bc00816: 7902 ld s2,32(sp) + 3bc00818: 6121 addi sp,sp,64 + 3bc0081a: 8082 ret + +000000003bc0081c : + 3bc0081c: 1141 addi sp,sp,-16 + 3bc0081e: e406 sd ra,8(sp) + 3bc00820: e6fff0ef jal ra,3bc0068e + 3bc00824: 60a2 ld ra,8(sp) + 3bc00826: 0000a517 auipc a0,0xa + 3bc0082a: bda50513 addi a0,a0,-1062 # 3bc0a400 + 3bc0082e: 0141 addi sp,sp,16 + 3bc00830: b625 j 3bc00358 + +000000003bc00832 : + 3bc00832: 8082 ret + +000000003bc00834 : + 3bc00834: 05025737 lui a4,0x5025 + 3bc00838: 475c lw a5,12(a4) + 3bc0083a: 471c lw a5,8(a4) + 3bc0083c: f40006b7 lui a3,0xf4000 + 3bc00840: bff68693 addi a3,a3,-1025 # fffffffff3fffbff <__BL2_END__+0xffffffffb83ec3ef> + 3bc00844: 2781 sext.w a5,a5 + 3bc00846: 8ff5 and a5,a5,a3 + 3bc00848: 0c0006b7 lui a3,0xc000 + 3bc0084c: 8fd5 or a5,a5,a3 + 3bc0084e: c71c sw a5,8(a4) + 3bc00850: 4685 li a3,1 + 3bc00852: 050267b7 lui a5,0x5026 + 3bc00856: 48d7a623 sw a3,1164(a5) # 502648c + 3bc0085a: 4807a623 sw zero,1164(a5) + 3bc0085e: 471c lw a5,8(a4) + 3bc00860: 0c0016b7 lui a3,0xc001 + 3bc00864: 80068693 addi a3,a3,-2048 # c000800 + 3bc00868: 2781 sext.w a5,a5 + 3bc0086a: 8fd5 or a5,a5,a3 + 3bc0086c: c71c sw a5,8(a4) + 3bc0086e: 0000a517 auipc a0,0xa + 3bc00872: ba250513 addi a0,a0,-1118 # 3bc0a410 + 3bc00876: b4cd j 3bc00358 + +000000003bc00878 : + 3bc00878: 1141 addi sp,sp,-16 + 3bc0087a: e022 sd s0,0(sp) + 3bc0087c: 05026437 lui s0,0x5026 + 3bc00880: 0f842583 lw a1,248(s0) # 50260f8 + 3bc00884: 0000a517 auipc a0,0xa + 3bc00888: ba450513 addi a0,a0,-1116 # 3bc0a428 + 3bc0088c: e406 sd ra,8(sp) + 3bc0088e: 2581 sext.w a1,a1 + 3bc00890: ac9ff0ef jal ra,3bc00358 + 3bc00894: 0fc42583 lw a1,252(s0) + 3bc00898: 0000a517 auipc a0,0xa + 3bc0089c: ba850513 addi a0,a0,-1112 # 3bc0a440 + 3bc008a0: 2581 sext.w a1,a1 + 3bc008a2: ab7ff0ef jal ra,3bc00358 + 3bc008a6: 4785 li a5,1 + 3bc008a8: 0cf42023 sw a5,192(s0) + 3bc008ac: 05026737 lui a4,0x5026 + 3bc008b0: 4685 li a3,1 + 3bc008b2: 0c072783 lw a5,192(a4) # 50260c0 + 3bc008b6: 2781 sext.w a5,a5 + 3bc008b8: fed79de3 bne a5,a3,3bc008b2 + 3bc008bc: 0cd72623 sw a3,204(a4) + 3bc008c0: 05026737 lui a4,0x5026 + 3bc008c4: 4685 li a3,1 + 3bc008c6: 0cc72783 lw a5,204(a4) # 50260cc + 3bc008ca: 2781 sext.w a5,a5 + 3bc008cc: fed79de3 bne a5,a3,3bc008c6 + 3bc008d0: 0cd72423 sw a3,200(a4) + 3bc008d4: 05026737 lui a4,0x5026 + 3bc008d8: 4685 li a3,1 + 3bc008da: 0c872783 lw a5,200(a4) # 50260c8 + 3bc008de: 2781 sext.w a5,a5 + 3bc008e0: fed79de3 bne a5,a3,3bc008da + 3bc008e4: 0ed72023 sw a3,224(a4) + 3bc008e8: 050266b7 lui a3,0x5026 + 3bc008ec: 4705 li a4,1 + 3bc008ee: 0e06a783 lw a5,224(a3) # 50260e0 + 3bc008f2: 2781 sext.w a5,a5 + 3bc008f4: fee79de3 bne a5,a4,3bc008ee + 3bc008f8: 05025737 lui a4,0x5025 + 3bc008fc: 08070613 addi a2,a4,128 # 5025080 + 3bc00900: 565c lw a5,44(a2) + 3bc00902: 60a2 ld ra,8(sp) + 3bc00904: 6402 ld s0,0(sp) + 3bc00906: 2781 sext.w a5,a5 + 3bc00908: 0017e793 ori a5,a5,1 + 3bc0090c: d65c sw a5,44(a2) + 3bc0090e: 67ad lui a5,0xb + 3bc00910: b1878793 addi a5,a5,-1256 # ab18 <__BSS_SIZE__+0x4f08> + 3bc00914: c35c sw a5,4(a4) + 3bc00916: 471c lw a5,8(a4) + 3bc00918: 7645 lui a2,0xffff1 + 3bc0091a: 84060613 addi a2,a2,-1984 # ffffffffffff0840 <__BL2_END__+0xffffffffc43dd030> + 3bc0091e: 2781 sext.w a5,a5 + 3bc00920: 8fd1 or a5,a5,a2 + 3bc00922: c71c sw a5,8(a4) + 3bc00924: 0d06a783 lw a5,208(a3) + 3bc00928: 2781 sext.w a5,a5 + 3bc0092a: 9bed andi a5,a5,-5 + 3bc0092c: 0cf6a823 sw a5,208(a3) + 3bc00930: 0141 addi sp,sp,16 + 3bc00932: 8082 ret + +000000003bc00934 : + 3bc00934: 7139 addi sp,sp,-64 + 3bc00936: 0000a797 auipc a5,0xa + 3bc0093a: b427b783 ld a5,-1214(a5) # 3bc0a478 + 3bc0093e: e43e sd a5,8(sp) + 3bc00940: 0000a797 auipc a5,0xa + 3bc00944: b407b783 ld a5,-1216(a5) # 3bc0a480 + 3bc00948: e83e sd a5,16(sp) + 3bc0094a: 400007b7 lui a5,0x40000 + 3bc0094e: 10778793 addi a5,a5,263 # 40000107 <__BL2_END__+0x43ec8f7> + 3bc00952: 07de slli a5,a5,0x17 + 3bc00954: ec3e sd a5,24(sp) + 3bc00956: 41d00793 li a5,1053 + 3bc0095a: 07d6 slli a5,a5,0x15 + 3bc0095c: f03e sd a5,32(sp) + 3bc0095e: 6785 lui a5,0x1 + 3bc00960: 10178793 addi a5,a5,257 # 1101 <__BSS_SIZE__-0x4b0f> + 3bc00964: d43e sw a5,40(sp) + 3bc00966: 478d li a5,3 + 3bc00968: 02f10723 sb a5,46(sp) + 3bc0096c: fc06 sd ra,56(sp) + 3bc0096e: 4701 li a4,0 + 3bc00970: 4781 li a5,0 + 3bc00972: 002c addi a1,sp,8 + 3bc00974: 02400693 li a3,36 + 3bc00978: 80b7460b lrbu a2,a4,a1,0 + 3bc0097c: 0705 addi a4,a4,1 + 3bc0097e: 9fb1 addw a5,a5,a2 + 3bc00980: 3c07b78b extu a5,a5,15,0 + 3bc00984: fed71ae3 bne a4,a3,3bc00978 + 3bc00988: 01900537 lui a0,0x1900 + 3bc0098c: 02800613 li a2,40 + 3bc00990: 40050513 addi a0,a0,1024 # 1900400 <__BSS_SIZE__+0x18fa7f0> + 3bc00994: 02f11623 sh a5,44(sp) + 3bc00998: 0e2000ef jal ra,3bc00a7a + 3bc0099c: 70e2 ld ra,56(sp) + 3bc0099e: 6121 addi sp,sp,64 + 3bc009a0: 8082 ret + +000000003bc009a2 : + 3bc009a2: 4501 li a0,0 + 3bc009a4: 8082 ret + +000000003bc009a6 : + 3bc009a6: 00050023 sb zero,0(a0) + 3bc009aa: 872a mv a4,a0 + 3bc009ac: 0000a317 auipc t1,0xa + 3bc009b0: adc30313 addi t1,t1,-1316 # 3bc0a488 + 3bc009b4: 4e65 li t3,25 + 3bc009b6: 02c5f7b3 remu a5,a1,a2 + 3bc009ba: 80f3478b lrbu a5,t1,a5,0 + 3bc009be: ce91 beqz a3,3bc009da + 3bc009c0: f9f7881b addiw a6,a5,-97 + 3bc009c4: 0ff87813 andi a6,a6,255 + 3bc009c8: 02000893 li a7,32 + 3bc009cc: 010e7363 bgeu t3,a6,3bc009d2 + 3bc009d0: 4881 li a7,0 + 3bc009d2: 411787bb subw a5,a5,a7 + 3bc009d6: 0ff7f793 andi a5,a5,255 + 3bc009da: 0817578b sbib a5,(a4),1,0 + 3bc009de: 02c5d7b3 divu a5,a1,a2 + 3bc009e2: 02c5f463 bgeu a1,a2,3bc00a0a + 3bc009e6: 87aa mv a5,a0 + 3bc009e8: 86ba mv a3,a4 + 3bc009ea: 02d7e263 bltu a5,a3,3bc00a0e + 3bc009ee: fff50693 addi a3,a0,-1 + 3bc009f2: 4781 li a5,0 + 3bc009f4: 00d76863 bltu a4,a3,3bc00a04 + 3bc009f8: 40a707b3 sub a5,a4,a0 + 3bc009fc: 0785 addi a5,a5,1 + 3bc009fe: 8385 srli a5,a5,0x1 + 3bc00a00: 40f007b3 neg a5,a5 + 3bc00a04: 00f70533 add a0,a4,a5 + 3bc00a08: 8082 ret + 3bc00a0a: 85be mv a1,a5 + 3bc00a0c: b76d j 3bc009b6 + 3bc00a0e: 0006c583 lbu a1,0(a3) + 3bc00a12: 0007c603 lbu a2,0(a5) + 3bc00a16: 1817d58b sbia a1,(a5),1,0 + 3bc00a1a: 19f6d60b sbia a2,(a3),-1,0 + 3bc00a1e: b7f1 j 3bc009ea + +000000003bc00a20 : + 3bc00a20: 0ff5f813 andi a6,a1,255 + 3bc00a24: 87aa mv a5,a0 + 3bc00a26: 0077f713 andi a4,a5,7 + 3bc00a2a: c719 beqz a4,3bc00a38 + 3bc00a2c: e211 bnez a2,3bc00a30 + 3bc00a2e: 8082 ret + 3bc00a30: 1817d80b sbia a6,(a5),1,0 + 3bc00a34: 167d addi a2,a2,-1 + 3bc00a36: bfc5 j 3bc00a26 + 3bc00a38: ca05 beqz a2,3bc00a68 + 3bc00a3a: 0000a697 auipc a3,0xa + 3bc00a3e: a766b683 ld a3,-1418(a3) # 3bc0a4b0 + 3bc00a42: 0ff5f593 andi a1,a1,255 + 3bc00a46: 02d585b3 mul a1,a1,a3 + 3bc00a4a: 489d li a7,7 + 3bc00a4c: 4681 li a3,0 + 3bc00a4e: 40d60333 sub t1,a2,a3 + 3bc00a52: 0068ec63 bltu a7,t1,3bc00a6a + 3bc00a56: 00365693 srli a3,a2,0x3 + 3bc00a5a: 55e1 li a1,-8 + 3bc00a5c: 06d7978b addsl a5,a5,a3,3 + 3bc00a60: 20b6960b mula a2,a3,a1 + 3bc00a64: 00e61763 bne a2,a4,3bc00a72 + 3bc00a68: 8082 ret + 3bc00a6a: 60d7d58b srd a1,a5,a3,0 + 3bc00a6e: 06a1 addi a3,a3,8 + 3bc00a70: bff9 j 3bc00a4e + 3bc00a72: 00e7d80b srb a6,a5,a4,0 + 3bc00a76: 0705 addi a4,a4,1 + 3bc00a78: b7f5 j 3bc00a64 + +000000003bc00a7a : + 3bc00a7a: 00b547b3 xor a5,a0,a1 + 3bc00a7e: 8b9d andi a5,a5,7 + 3bc00a80: e7a9 bnez a5,3bc00aca + 3bc00a82: 87aa mv a5,a0 + 3bc00a84: 0077f713 andi a4,a5,7 + 3bc00a88: cb09 beqz a4,3bc00a9a + 3bc00a8a: e211 bnez a2,3bc00a8e + 3bc00a8c: 8082 ret + 3bc00a8e: 9815c70b lbuia a4,(a1),1,0 + 3bc00a92: 167d addi a2,a2,-1 + 3bc00a94: 1817d70b sbia a4,(a5),1,0 + 3bc00a98: b7f5 j 3bc00a84 + 3bc00a9a: 469d li a3,7 + 3bc00a9c: e619 bnez a2,3bc00aaa + 3bc00a9e: 8082 ret + 3bc00aa0: 60e5c80b lrd a6,a1,a4,0 + 3bc00aa4: 60e7d80b srd a6,a5,a4,0 + 3bc00aa8: 0721 addi a4,a4,8 + 3bc00aaa: 40e60833 sub a6,a2,a4 + 3bc00aae: ff06e9e3 bltu a3,a6,3bc00aa0 + 3bc00ab2: 00365713 srli a4,a2,0x3 + 3bc00ab6: 56e1 li a3,-8 + 3bc00ab8: 20d7160b mula a2,a4,a3 + 3bc00abc: 070e slli a4,a4,0x3 + 3bc00abe: 97ba add a5,a5,a4 + 3bc00ac0: 95ba add a1,a1,a4 + 3bc00ac2: 4701 li a4,0 + 3bc00ac4: 00e61563 bne a2,a4,3bc00ace + 3bc00ac8: 8082 ret + 3bc00aca: 87aa mv a5,a0 + 3bc00acc: bfdd j 3bc00ac2 + 3bc00ace: 80e5c68b lrbu a3,a1,a4,0 + 3bc00ad2: 00e7d68b srb a3,a5,a4,0 + 3bc00ad6: 0705 addi a4,a4,1 + 3bc00ad8: b7f5 j 3bc00ac4 + +000000003bc00ada : + 3bc00ada: 40b50733 sub a4,a0,a1 + 3bc00ade: 87aa mv a5,a0 + 3bc00ae0: 00c76363 bltu a4,a2,3bc00ae6 + 3bc00ae4: bf59 j 3bc00a7a + 3bc00ae6: 95b2 add a1,a1,a2 + 3bc00ae8: 9532 add a0,a0,a2 + 3bc00aea: 00f51363 bne a0,a5,3bc00af0 + 3bc00aee: 8082 ret + 3bc00af0: 89f5c70b lbuib a4,(a1),-1,0 + 3bc00af4: 09f5570b sbib a4,(a0),-1,0 + 3bc00af8: bfcd j 3bc00aea + +000000003bc00afa : + 3bc00afa: 0e0007b7 lui a5,0xe000 + 3bc00afe: 4794 lw a3,8(a5) + 3bc00b00: 1141 addi sp,sp,-16 + 3bc00b02: e022 sd s0,0(sp) + 3bc00b04: e406 sd ra,8(sp) + 3bc00b06: 6709 lui a4,0x2 + 3bc00b08: 842a mv s0,a0 + 3bc00b0a: 00e6e463 bltu a3,a4,3bc00b12 + 3bc00b0e: 0007a423 sw zero,8(a5) # e000008 + 3bc00b12: 0e0007b7 lui a5,0xe000 + 3bc00b16: 4798 lw a4,8(a5) + 3bc00b18: 0017069b addiw a3,a4,1 + 3bc00b1c: c794 sw a3,8(a5) + 3bc00b1e: 0c0006b7 lui a3,0xc000 + 3bc00b22: 10e6d40b surb s0,a3,a4,0 + 3bc00b26: 4709 li a4,2 + 3bc00b28: 00b74d63 blt a4,a1,3bc00b42 + 3bc00b2c: 0007c783 lbu a5,0(a5) # e000000 + 3bc00b30: 8b91 andi a5,a5,4 + 3bc00b32: eb81 bnez a5,3bc00b42 + 3bc00b34: 0ff47513 andi a0,s0,255 + 3bc00b38: f6cff0ef jal ra,3bc002a4 + 3bc00b3c: 00055363 bgez a0,3bc00b42 + 3bc00b40: 547d li s0,-1 + 3bc00b42: 60a2 ld ra,8(sp) + 3bc00b44: 8522 mv a0,s0 + 3bc00b46: 6402 ld s0,0(sp) + 3bc00b48: 0141 addi sp,sp,16 + 3bc00b4a: 8082 ret + +000000003bc00b4c : + 3bc00b4c: 4701 li a4,0 + 3bc00b4e: 80e5478b lrbu a5,a0,a4,0 + 3bc00b52: 80e5c68b lrbu a3,a1,a4,0 + 3bc00b56: 00d78563 beq a5,a3,3bc00b60 + 3bc00b5a: 40d7853b subw a0,a5,a3 + 3bc00b5e: 8082 ret + 3bc00b60: 0705 addi a4,a4,1 + 3bc00b62: f7f5 bnez a5,3bc00b4e + 3bc00b64: 4501 li a0,0 + 3bc00b66: 8082 ret + +000000003bc00b68 : + 3bc00b68: 87aa mv a5,a0 + 3bc00b6a: 0007c703 lbu a4,0(a5) + 3bc00b6e: e701 bnez a4,3bc00b76 + 3bc00b70: 40a78533 sub a0,a5,a0 + 3bc00b74: 8082 ret + 3bc00b76: 0785 addi a5,a5,1 + 3bc00b78: bfcd j 3bc00b6a + +000000003bc00b7a : + 3bc00b7a: 1101 addi sp,sp,-32 + 3bc00b7c: 00c007b7 lui a5,0xc00 + 3bc00b80: e822 sd s0,16(sp) + 3bc00b82: e426 sd s1,8(sp) + 3bc00b84: e04a sd s2,0(sp) + 3bc00b86: 1c55370b extu a4,a0,7,5 + 3bc00b8a: 4007879b addiw a5,a5,1024 + 3bc00b8e: 0155541b srliw s0,a0,0x15 + 3bc00b92: 5105390b extu s2,a0,20,16 + 3bc00b96: 1045348b extu s1,a0,4,4 + 3bc00b9a: 3c85350b extu a0,a0,15,8 + 3bc00b9e: 9d3d addw a0,a0,a5 + 3bc00ba0: 0025151b slliw a0,a0,0x2 + 3bc00ba4: ec06 sd ra,24(sp) + 3bc00ba6: 7c05350b extu a0,a0,31,0 + 3bc00baa: c118 sw a4,0(a0) + 3bc00bac: 4529 li a0,10 + 3bc00bae: ddcff0ef jal ra,3bc0018a + 3bc00bb2: 00447793 andi a5,s0,4 + 3bc00bb6: eb9d bnez a5,3bc00bec + 3bc00bb8: 678d lui a5,0x3 + 3bc00bba: 881d andi s0,s0,7 + 3bc00bbc: 0207879b addiw a5,a5,32 + 3bc00bc0: 9c3d addw s0,s0,a5 + 3bc00bc2: 00c4141b slliw s0,s0,0xc + 3bc00bc6: 0504041b addiw s0,s0,80 + 3bc00bca: 7c04340b extu s0,s0,31,0 + 3bc00bce: 4008 lw a0,0(s0) + 3bc00bd0: 0125553b srlw a0,a0,s2 + 3bc00bd4: 00157793 andi a5,a0,1 + 3bc00bd8: 853e mv a0,a5 + 3bc00bda: c099 beqz s1,3bc00be0 + 3bc00bdc: 0017c513 xori a0,a5,1 + 3bc00be0: 60e2 ld ra,24(sp) + 3bc00be2: 6442 ld s0,16(sp) + 3bc00be4: 64a2 ld s1,8(sp) + 3bc00be6: 6902 ld s2,0(sp) + 3bc00be8: 6105 addi sp,sp,32 + 3bc00bea: 8082 ret + 3bc00bec: 05021437 lui s0,0x5021 + 3bc00bf0: 05040413 addi s0,s0,80 # 5021050 + 3bc00bf4: bfd9 j 3bc00bca + +000000003bc00bf6 : + 3bc00bf6: 030507b7 lui a5,0x3050 + 3bc00bfa: 1047a783 lw a5,260(a5) # 3050104 <__BSS_SIZE__+0x304a4f4> + 3bc00bfe: 0007851b sext.w a0,a5 + 3bc00c02: 8b91 andi a5,a5,4 + 3bc00c04: c391 beqz a5,3bc00c08 + 3bc00c06: bf95 j 3bc00b7a + 3bc00c08: 030007b7 lui a5,0x3000 + 3bc00c0c: 43c8 lw a0,4(a5) + 3bc00c0e: 2085350b extu a0,a0,8,8 + 3bc00c12: 8082 ret + +000000003bc00c14 : + 3bc00c14: 1141 addi sp,sp,-16 + 3bc00c16: e406 sd ra,8(sp) + 3bc00c18: df4ff0ef jal ra,3bc0020c + 3bc00c1c: 60a2 ld ra,8(sp) + 3bc00c1e: 3e75051b addiw a0,a0,999 + 3bc00c22: 3e800793 li a5,1000 + 3bc00c26: 02f5553b divuw a0,a0,a5 + 3bc00c2a: 0141 addi sp,sp,16 + 3bc00c2c: 8082 ret + +000000003bc00c2e : + 3bc00c2e: 7179 addi sp,sp,-48 + 3bc00c30: 8732 mv a4,a2 + 3bc00c32: 2601 sext.w a2,a2 + 3bc00c34: f022 sd s0,32(sp) + 3bc00c36: ec26 sd s1,24(sp) + 3bc00c38: e03a sd a4,0(sp) + 3bc00c3a: f406 sd ra,40(sp) + 3bc00c3c: 84aa mv s1,a0 + 3bc00c3e: e42e sd a1,8(sp) + 3bc00c40: 295030ef jal ra,3bc046d4 + 3bc00c44: 4785 li a5,1 + 3bc00c46: f8d1470b ldd a4,a3,(sp),0,4 + 3bc00c4a: 5479 li s0,-2 + 3bc00c4c: 00f51363 bne a0,a5,3bc00c52 + 3bc00c50: 4401 li s0,0 + 3bc00c52: 8626 mv a2,s1 + 3bc00c54: 85a2 mv a1,s0 + 3bc00c56: 0000a517 auipc a0,0xa + 3bc00c5a: 86250513 addi a0,a0,-1950 # 3bc0a4b8 + 3bc00c5e: efaff0ef jal ra,3bc00358 + 3bc00c62: 70a2 ld ra,40(sp) + 3bc00c64: 8522 mv a0,s0 + 3bc00c66: 7402 ld s0,32(sp) + 3bc00c68: 64e2 ld s1,24(sp) + 3bc00c6a: 6145 addi sp,sp,48 + 3bc00c6c: 8082 ret + +000000003bc00c6e : + 3bc00c6e: 1101 addi sp,sp,-32 + 3bc00c70: 0000d617 auipc a2,0xd + 3bc00c74: f9060613 addi a2,a2,-112 # 3bc0dc00 <__BSS_START__> + 3bc00c78: e42a sd a0,8(sp) + 3bc00c7a: 6585 lui a1,0x1 + 3bc00c7c: 0000a517 auipc a0,0xa + 3bc00c80: 85c50513 addi a0,a0,-1956 # 3bc0a4d8 + 3bc00c84: ec06 sd ra,24(sp) + 3bc00c86: e822 sd s0,16(sp) + 3bc00c88: ed0ff0ef jal ra,3bc00358 + 3bc00c8c: c87ff097 auipc ra,0xc87ff + 3bc00c90: 394080e7 jalr 916(ra) # 4400020 + 3bc00c94: 67b5 lui a5,0xd + 3bc00c96: 2501 sext.w a0,a0 + 3bc00c98: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00c9c: 66a2 ld a3,8(sp) + 3bc00c9e: 6605 lui a2,0x1 + 3bc00ca0: 04f51463 bne a0,a5,3bc00ce8 + 3bc00ca4: 3c0027b7 lui a5,0x3c002 + 3bc00ca8: 0e07a583 lw a1,224(a5) # 3c0020e0 <__BL2_END__+0x3ee8d0> + 3bc00cac: 0000d517 auipc a0,0xd + 3bc00cb0: f5450513 addi a0,a0,-172 # 3bc0dc00 <__BSS_START__> + 3bc00cb4: f7bff0ef jal ra,3bc00c2e + 3bc00cb8: 02054463 bltz a0,3bc00ce0 + 3bc00cbc: 0000d417 auipc s0,0xd + 3bc00cc0: f4440413 addi s0,s0,-188 # 3bc0dc00 <__BSS_START__> + 3bc00cc4: 6018 ld a4,0(s0) + 3bc00cc6: 0000a797 auipc a5,0xa + 3bc00cca: c6a7b783 ld a5,-918(a5) # 3bc0a930 + 3bc00cce: 02f70a63 beq a4,a5,3bc00d02 + 3bc00cd2: 0000a517 auipc a0,0xa + 3bc00cd6: 81e50513 addi a0,a0,-2018 # 3bc0a4f0 + 3bc00cda: e7eff0ef jal ra,3bc00358 + 3bc00cde: 557d li a0,-1 + 3bc00ce0: 60e2 ld ra,24(sp) + 3bc00ce2: 6442 ld s0,16(sp) + 3bc00ce4: 6105 addi sp,sp,32 + 3bc00ce6: 8082 ret + 3bc00ce8: 3c0027b7 lui a5,0x3c002 + 3bc00cec: 0e07a583 lw a1,224(a5) # 3c0020e0 <__BL2_END__+0x3ee8d0> + 3bc00cf0: 0000d517 auipc a0,0xd + 3bc00cf4: f1050513 addi a0,a0,-240 # 3bc0dc00 <__BSS_START__> + 3bc00cf8: c87ff097 auipc ra,0xc87ff + 3bc00cfc: 368080e7 jalr 872(ra) # 4400060 + 3bc00d00: bf65 j 3bc00cb8 + 3bc00d02: 6585 lui a1,0x1 + 3bc00d04: 15d1 addi a1,a1,-12 + 3bc00d06: 0000d517 auipc a0,0xd + 3bc00d0a: f0650513 addi a0,a0,-250 # 3bc0dc0c <__BSS_START__+0xc> + 3bc00d0e: c87ff097 auipc ra,0xc87ff + 3bc00d12: 392080e7 jalr 914(ra) # 44000a0 + 3bc00d16: 4410 lw a2,8(s0) + 3bc00d18: 0005059b sext.w a1,a0 + 3bc00d1c: 00b60963 beq a2,a1,3bc00d2e + 3bc00d20: 00009517 auipc a0,0x9 + 3bc00d24: 7e850513 addi a0,a0,2024 # 3bc0a508 + 3bc00d28: e30ff0ef jal ra,3bc00358 + 3bc00d2c: bf4d j 3bc00cde + 3bc00d2e: 00009517 auipc a0,0x9 + 3bc00d32: 7fa50513 addi a0,a0,2042 # 3bc0a528 + 3bc00d36: e22ff0ef jal ra,3bc00358 + 3bc00d3a: 4501 li a0,0 + 3bc00d3c: b755 j 3bc00ce0 + +000000003bc00d3e : + 3bc00d3e: 1101 addi sp,sp,-32 + 3bc00d40: e822 sd s0,16(sp) + 3bc00d42: 0000d417 auipc s0,0xd + 3bc00d46: ebe40413 addi s0,s0,-322 # 3bc0dc00 <__BSS_START__> + 3bc00d4a: 4c10 lw a2,24(s0) + 3bc00d4c: 484c lw a1,20(s0) + 3bc00d4e: e42a sd a0,8(sp) + 3bc00d50: 00009517 auipc a0,0x9 + 3bc00d54: 7e050513 addi a0,a0,2016 # 3bc0a530 + 3bc00d58: ec06 sd ra,24(sp) + 3bc00d5a: dfeff0ef jal ra,3bc00358 + 3bc00d5e: 4c18 lw a4,24(s0) + 3bc00d60: 6791 lui a5,0x4 + 3bc00d62: 66a2 ld a3,8(sp) + 3bc00d64: 00f76363 bltu a4,a5,3bc00d6a + 3bc00d68: cc1c sw a5,24(s0) + 3bc00d6a: e436 sd a3,8(sp) + 3bc00d6c: c87ff097 auipc ra,0xc87ff + 3bc00d70: 2b4080e7 jalr 692(ra) # 4400020 + 3bc00d74: 67b5 lui a5,0xd + 3bc00d76: 2501 sext.w a0,a0 + 3bc00d78: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00d7c: 66a2 ld a3,8(sp) + 3bc00d7e: 01846603 lwu a2,24(s0) + 3bc00d82: 484c lw a1,20(s0) + 3bc00d84: 04f51363 bne a0,a5,3bc00dca + 3bc00d88: 0000e517 auipc a0,0xe + 3bc00d8c: e7850513 addi a0,a0,-392 # 3bc0ec00 + 3bc00d90: e9fff0ef jal ra,3bc00c2e + 3bc00d94: 02054763 bltz a0,3bc00dc2 + 3bc00d98: 4c0c lw a1,24(s0) + 3bc00d9a: 0000e517 auipc a0,0xe + 3bc00d9e: e6650513 addi a0,a0,-410 # 3bc0ec00 + 3bc00da2: c87ff097 auipc ra,0xc87ff + 3bc00da6: 2fe080e7 jalr 766(ra) # 44000a0 + 3bc00daa: 4810 lw a2,16(s0) + 3bc00dac: 0005059b sext.w a1,a0 + 3bc00db0: 02b60663 beq a2,a1,3bc00ddc + 3bc00db4: 00009517 auipc a0,0x9 + 3bc00db8: 79450513 addi a0,a0,1940 # 3bc0a548 + 3bc00dbc: d9cff0ef jal ra,3bc00358 + 3bc00dc0: 557d li a0,-1 + 3bc00dc2: 60e2 ld ra,24(sp) + 3bc00dc4: 6442 ld s0,16(sp) + 3bc00dc6: 6105 addi sp,sp,32 + 3bc00dc8: 8082 ret + 3bc00dca: 0000e517 auipc a0,0xe + 3bc00dce: e3650513 addi a0,a0,-458 # 3bc0ec00 + 3bc00dd2: c87ff097 auipc ra,0xc87ff + 3bc00dd6: 28e080e7 jalr 654(ra) # 4400060 + 3bc00dda: bf6d j 3bc00d94 + 3bc00ddc: 00009517 auipc a0,0x9 + 3bc00de0: 79450513 addi a0,a0,1940 # 3bc0a570 + 3bc00de4: d74ff0ef jal ra,3bc00358 + 3bc00de8: 4501 li a0,0 + 3bc00dea: bfe1 j 3bc00dc2 + +000000003bc00dec : + 3bc00dec: 7179 addi sp,sp,-48 + 3bc00dee: ec26 sd s1,24(sp) + 3bc00df0: 74cd lui s1,0xffff3 + 3bc00df2: e84a sd s2,16(sp) + 3bc00df4: e44e sd s3,8(sp) + 3bc00df6: e052 sd s4,0(sp) + 3bc00df8: f406 sd ra,40(sp) + 3bc00dfa: f022 sd s0,32(sp) + 3bc00dfc: 1604849b addiw s1,s1,352 + 3bc00e00: 4995 li s3,5 + 3bc00e02: 4a05 li s4,1 + 3bc00e04: 00009917 auipc s2,0x9 + 3bc00e08: 77490913 addi s2,s2,1908 # 3bc0a578 + 3bc00e0c: 4401 li s0,0 + 3bc00e0e: c87ff097 auipc ra,0xc87ff + 3bc00e12: 2b2080e7 jalr 690(ra) # 44000c0 + 3bc00e16: 00a45e63 bge s0,a0,3bc00e32 + 3bc00e1a: 8522 mv a0,s0 + 3bc00e1c: e53ff0ef jal ra,3bc00c6e + 3bc00e20: 00055463 bgez a0,3bc00e28 + 3bc00e24: 2405 addiw s0,s0,1 + 3bc00e26: b7e5 j 3bc00e0e + 3bc00e28: 8522 mv a0,s0 + 3bc00e2a: f15ff0ef jal ra,3bc00d3e + 3bc00e2e: fe054be3 bltz a0,3bc00e24 + 3bc00e32: c87ff097 auipc ra,0xc87ff + 3bc00e36: 28e080e7 jalr 654(ra) # 44000c0 + 3bc00e3a: 02a45f63 bge s0,a0,3bc00e78 + 3bc00e3e: dd7ff0ef jal ra,3bc00c14 + 3bc00e42: 0000b417 auipc s0,0xb + 3bc00e46: 90e40413 addi s0,s0,-1778 # 3bc0b750 + 3bc00e4a: 601c ld a5,0(s0) + 3bc00e4c: 00a79123 sh a0,2(a5) + 3bc00e50: 0000e517 auipc a0,0xe + 3bc00e54: db050513 addi a0,a0,-592 # 3bc0ec00 + 3bc00e58: 34a070ef jal ra,3bc081a2 + 3bc00e5c: db9ff0ef jal ra,3bc00c14 + 3bc00e60: 601c ld a5,0(s0) + 3bc00e62: 70a2 ld ra,40(sp) + 3bc00e64: 7402 ld s0,32(sp) + 3bc00e66: 00a79223 sh a0,4(a5) + 3bc00e6a: 64e2 ld s1,24(sp) + 3bc00e6c: 6942 ld s2,16(sp) + 3bc00e6e: 69a2 ld s3,8(sp) + 3bc00e70: 6a02 ld s4,0(sp) + 3bc00e72: 4501 li a0,0 + 3bc00e74: 6145 addi sp,sp,48 + 3bc00e76: 8082 ret + 3bc00e78: c87ff097 auipc ra,0xc87ff + 3bc00e7c: 1a8080e7 jalr 424(ra) # 4400020 + 3bc00e80: 9d25 addw a0,a0,s1 + 3bc00e82: 85a2 mv a1,s0 + 3bc00e84: 00a9ef63 bltu s3,a0,3bc00ea2 + 3bc00e88: 00aa1533 sll a0,s4,a0 + 3bc00e8c: 02957513 andi a0,a0,41 + 3bc00e90: c909 beqz a0,3bc00ea2 + 3bc00e92: 854a mv a0,s2 + 3bc00e94: cc4ff0ef jal ra,3bc00358 + 3bc00e98: c87ff097 auipc ra,0xc87ff + 3bc00e9c: 1e8080e7 jalr 488(ra) # 4400080 + 3bc00ea0: b7b5 j 3bc00e0c + 3bc00ea2: 00009517 auipc a0,0x9 + 3bc00ea6: 6fe50513 addi a0,a0,1790 # 3bc0a5a0 + 3bc00eaa: caeff0ef jal ra,3bc00358 + 3bc00eae: f0cff0ef jal ra,3bc005ba + +000000003bc00eb2 : + 3bc00eb2: 7179 addi sp,sp,-48 + 3bc00eb4: e84a sd s2,16(sp) + 3bc00eb6: 0000b917 auipc s2,0xb + 3bc00eba: 89a90913 addi s2,s2,-1894 # 3bc0b750 + 3bc00ebe: 00093783 ld a5,0(s2) + 3bc00ec2: f022 sd s0,32(sp) + 3bc00ec4: 0000d417 auipc s0,0xd + 3bc00ec8: d3c40413 addi s0,s0,-708 # 3bc0dc00 <__BSS_START__> + 3bc00ecc: 0047d703 lhu a4,4(a5) + 3bc00ed0: 5414 lw a3,40(s0) + 3bc00ed2: 5450 lw a2,44(s0) + 3bc00ed4: 504c lw a1,36(s0) + 3bc00ed6: ec26 sd s1,24(sp) + 3bc00ed8: f406 sd ra,40(sp) + 3bc00eda: e44e sd s3,8(sp) + 3bc00edc: 00e79323 sh a4,6(a5) + 3bc00ee0: 84aa mv s1,a0 + 3bc00ee2: 00009517 auipc a0,0x9 + 3bc00ee6: 6e650513 addi a0,a0,1766 # 3bc0a5c8 + 3bc00eea: c6eff0ef jal ra,3bc00358 + 3bc00eee: 545c lw a5,44(s0) + 3bc00ef0: 00009517 auipc a0,0x9 + 3bc00ef4: 6f050513 addi a0,a0,1776 # 3bc0a5e0 + 3bc00ef8: 10078763 beqz a5,3bc01006 + 3bc00efc: 800006b7 lui a3,0x80000 + 3bc00f00: 00f6863b addw a2,a3,a5 + 3bc00f04: 08000737 lui a4,0x8000 + 3bc00f08: 00e66b63 bltu a2,a4,3bc00f1e + 3bc00f0c: 85be mv a1,a5 + 3bc00f0e: 00009517 auipc a0,0x9 + 3bc00f12: 6ea50513 addi a0,a0,1770 # 3bc0a5f8 + 3bc00f16: c42ff0ef jal ra,3bc00358 + 3bc00f1a: ea0ff0ef jal ra,3bc005ba + 3bc00f1e: 540c lw a1,40(s0) + 3bc00f20: 9fad addw a5,a5,a1 + 3bc00f22: 9fb5 addw a5,a5,a3 + 3bc00f24: 00e7e763 bltu a5,a4,3bc00f32 + 3bc00f28: 00009517 auipc a0,0x9 + 3bc00f2c: 70050513 addi a0,a0,1792 # 3bc0a628 + 3bc00f30: b7dd j 3bc00f16 + 3bc00f32: c87ff097 auipc ra,0xc87ff + 3bc00f36: 0ee080e7 jalr 238(ra) # 4400020 + 3bc00f3a: 67b5 lui a5,0xd + 3bc00f3c: 0005071b sext.w a4,a0 + 3bc00f40: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00f44: 504c lw a1,36(s0) + 3bc00f46: 02846603 lwu a2,40(s0) + 3bc00f4a: 02c46503 lwu a0,44(s0) + 3bc00f4e: 86a6 mv a3,s1 + 3bc00f50: 04f71263 bne a4,a5,3bc00f94 + 3bc00f54: cdbff0ef jal ra,3bc00c2e + 3bc00f58: 84aa mv s1,a0 + 3bc00f5a: 02054563 bltz a0,3bc00f84 + 3bc00f5e: 540c lw a1,40(s0) + 3bc00f60: 02c46503 lwu a0,44(s0) + 3bc00f64: c87ff097 auipc ra,0xc87ff + 3bc00f68: 13c080e7 jalr 316(ra) # 44000a0 + 3bc00f6c: 5010 lw a2,32(s0) + 3bc00f6e: 0005059b sext.w a1,a0 + 3bc00f72: 02b60663 beq a2,a1,3bc00f9e + 3bc00f76: 00009517 auipc a0,0x9 + 3bc00f7a: 6e250513 addi a0,a0,1762 # 3bc0a658 + 3bc00f7e: bdaff0ef jal ra,3bc00358 + 3bc00f82: 54fd li s1,-1 + 3bc00f84: 70a2 ld ra,40(sp) + 3bc00f86: 7402 ld s0,32(sp) + 3bc00f88: 6942 ld s2,16(sp) + 3bc00f8a: 69a2 ld s3,8(sp) + 3bc00f8c: 8526 mv a0,s1 + 3bc00f8e: 64e2 ld s1,24(sp) + 3bc00f90: 6145 addi sp,sp,48 + 3bc00f92: 8082 ret + 3bc00f94: c87ff097 auipc ra,0xc87ff + 3bc00f98: 0cc080e7 jalr 204(ra) # 4400060 + 3bc00f9c: bf75 j 3bc00f58 + 3bc00f9e: 02846583 lwu a1,40(s0) + 3bc00fa2: 02c46503 lwu a0,44(s0) + 3bc00fa6: 3c0026b7 lui a3,0x3c002 + 3bc00faa: 4601 li a2,0 + 3bc00fac: 9f7ff0ef jal ra,3bc009a2 + 3bc00fb0: 84aa mv s1,a0 + 3bc00fb2: 00055a63 bgez a0,3bc00fc6 + 3bc00fb6: 85aa mv a1,a0 + 3bc00fb8: 00009517 auipc a0,0x9 + 3bc00fbc: 6c850513 addi a0,a0,1736 # 3bc0a680 + 3bc00fc0: b98ff0ef jal ra,3bc00358 + 3bc00fc4: b7c1 j 3bc00f84 + 3bc00fc6: 02846583 lwu a1,40(s0) + 3bc00fca: 02c46503 lwu a0,44(s0) + 3bc00fce: 0e0009b7 lui s3,0xe000 + 3bc00fd2: 984ff0ef jal ra,3bc00156 + 3bc00fd6: 07c9a483 lw s1,124(s3) # e00007c + 3bc00fda: 95bff0ef jal ra,3bc00934 + 3bc00fde: c37ff0ef jal ra,3bc00c14 + 3bc00fe2: 00093783 ld a5,0(s2) + 3bc00fe6: 2481 sext.w s1,s1 + 3bc00fe8: 00a79323 sh a0,6(a5) + 3bc00fec: 0abc17b7 lui a5,0xabc1 + 3bc00ff0: def78793 addi a5,a5,-529 # abc0def + 3bc00ff4: 00f49d63 bne s1,a5,3bc0100e + 3bc00ff8: 545c lw a5,44(s0) + 3bc00ffa: 06f9ae23 sw a5,124(s3) + 3bc00ffe: 00009517 auipc a0,0x9 + 3bc01002: 6a250513 addi a0,a0,1698 # 3bc0a6a0 + 3bc01006: b52ff0ef jal ra,3bc00358 + 3bc0100a: 4481 li s1,0 + 3bc0100c: bfa5 j 3bc00f84 + 3bc0100e: 02c46503 lwu a0,44(s0) + 3bc01012: ddaff0ef jal ra,3bc005ec + 3bc01016: b7e5 j 3bc00ffe + +000000003bc01018 : + 3bc01018: 1101 addi sp,sp,-32 + 3bc0101a: e822 sd s0,16(sp) + 3bc0101c: 0000d417 auipc s0,0xd + 3bc01020: be440413 addi s0,s0,-1052 # 3bc0dc00 <__BSS_START__> + 3bc01024: e04a sd s2,0(sp) + 3bc01026: 5c14 lw a3,56(s0) + 3bc01028: 5c50 lw a2,60(s0) + 3bc0102a: 892e mv s2,a1 + 3bc0102c: 584c lw a1,52(s0) + 3bc0102e: e426 sd s1,8(sp) + 3bc01030: 84aa mv s1,a0 + 3bc01032: 00009517 auipc a0,0x9 + 3bc01036: 67650513 addi a0,a0,1654 # 3bc0a6a8 + 3bc0103a: ec06 sd ra,24(sp) + 3bc0103c: b1cff0ef jal ra,3bc00358 + 3bc01040: 5c5c lw a5,60(s0) + 3bc01042: eb89 bnez a5,3bc01054 + 3bc01044: 00009517 auipc a0,0x9 + 3bc01048: 67c50513 addi a0,a0,1660 # 3bc0a6c0 + 3bc0104c: b0cff0ef jal ra,3bc00358 + 3bc01050: 4481 li s1,0 + 3bc01052: a069 j 3bc010dc + 3bc01054: 800006b7 lui a3,0x80000 + 3bc01058: 00f6863b addw a2,a3,a5 + 3bc0105c: 08000737 lui a4,0x8000 + 3bc01060: 00e66b63 bltu a2,a4,3bc01076 + 3bc01064: 85be mv a1,a5 + 3bc01066: 00009517 auipc a0,0x9 + 3bc0106a: 66a50513 addi a0,a0,1642 # 3bc0a6d0 + 3bc0106e: aeaff0ef jal ra,3bc00358 + 3bc01072: d48ff0ef jal ra,3bc005ba + 3bc01076: 5c0c lw a1,56(s0) + 3bc01078: 9fad addw a5,a5,a1 + 3bc0107a: 9fb5 addw a5,a5,a3 + 3bc0107c: 00e7e763 bltu a5,a4,3bc0108a + 3bc01080: 00009517 auipc a0,0x9 + 3bc01084: 68050513 addi a0,a0,1664 # 3bc0a700 + 3bc01088: b7dd j 3bc0106e + 3bc0108a: c87ff097 auipc ra,0xc87ff + 3bc0108e: f96080e7 jalr -106(ra) # 4400020 + 3bc01092: 67b5 lui a5,0xd + 3bc01094: 0005071b sext.w a4,a0 + 3bc01098: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0109c: 584c lw a1,52(s0) + 3bc0109e: 03846603 lwu a2,56(s0) + 3bc010a2: 03c46503 lwu a0,60(s0) + 3bc010a6: 86a6 mv a3,s1 + 3bc010a8: 04f71163 bne a4,a5,3bc010ea + 3bc010ac: b83ff0ef jal ra,3bc00c2e + 3bc010b0: 84aa mv s1,a0 + 3bc010b2: 02054563 bltz a0,3bc010dc + 3bc010b6: 5c0c lw a1,56(s0) + 3bc010b8: 03c46503 lwu a0,60(s0) + 3bc010bc: c87ff097 auipc ra,0xc87ff + 3bc010c0: fe4080e7 jalr -28(ra) # 44000a0 + 3bc010c4: 5810 lw a2,48(s0) + 3bc010c6: 0005059b sext.w a1,a0 + 3bc010ca: 02b60563 beq a2,a1,3bc010f4 + 3bc010ce: 00009517 auipc a0,0x9 + 3bc010d2: 66250513 addi a0,a0,1634 # 3bc0a730 + 3bc010d6: a82ff0ef jal ra,3bc00358 + 3bc010da: 54fd li s1,-1 + 3bc010dc: 60e2 ld ra,24(sp) + 3bc010de: 6442 ld s0,16(sp) + 3bc010e0: 6902 ld s2,0(sp) + 3bc010e2: 8526 mv a0,s1 + 3bc010e4: 64a2 ld s1,8(sp) + 3bc010e6: 6105 addi sp,sp,32 + 3bc010e8: 8082 ret + 3bc010ea: c87ff097 auipc ra,0xc87ff + 3bc010ee: f76080e7 jalr -138(ra) # 4400060 + 3bc010f2: bf7d j 3bc010b0 + 3bc010f4: 03846583 lwu a1,56(s0) + 3bc010f8: 03c46503 lwu a0,60(s0) + 3bc010fc: 3c0026b7 lui a3,0x3c002 + 3bc01100: 4601 li a2,0 + 3bc01102: 8a1ff0ef jal ra,3bc009a2 + 3bc01106: 84aa mv s1,a0 + 3bc01108: 00055a63 bgez a0,3bc0111c + 3bc0110c: 85aa mv a1,a0 + 3bc0110e: 00009517 auipc a0,0x9 + 3bc01112: 64250513 addi a0,a0,1602 # 3bc0a750 + 3bc01116: a42ff0ef jal ra,3bc00358 + 3bc0111a: b7c9 j 3bc010dc + 3bc0111c: 03846583 lwu a1,56(s0) + 3bc01120: 03c46503 lwu a0,60(s0) + 3bc01124: 832ff0ef jal ra,3bc00156 + 3bc01128: 00009517 auipc a0,0x9 + 3bc0112c: 64850513 addi a0,a0,1608 # 3bc0a770 + 3bc01130: a28ff0ef jal ra,3bc00358 + 3bc01134: 03c46783 lwu a5,60(s0) + 3bc01138: 00f93023 sd a5,0(s2) + 3bc0113c: bf11 j 3bc01050 + +000000003bc0113e : + 3bc0113e: 715d addi sp,sp,-80 + 3bc01140: f44e sd s3,40(sp) + 3bc01142: 0000d997 auipc s3,0xd + 3bc01146: abe98993 addi s3,s3,-1346 # 3bc0dc00 <__BSS_START__> + 3bc0114a: e85a sd s6,16(sp) + 3bc0114c: 8b2e mv s6,a1 + 3bc0114e: 0449a583 lw a1,68(s3) + 3bc01152: ec56 sd s5,24(sp) + 3bc01154: 8aaa mv s5,a0 + 3bc01156: 00009517 auipc a0,0x9 + 3bc0115a: 62250513 addi a0,a0,1570 # 3bc0a778 + 3bc0115e: e486 sd ra,72(sp) + 3bc01160: e0a2 sd s0,64(sp) + 3bc01162: fc26 sd s1,56(sp) + 3bc01164: f84a sd s2,48(sp) + 3bc01166: f052 sd s4,32(sp) + 3bc01168: 9f0ff0ef jal ra,3bc00358 + 3bc0116c: c87ff097 auipc ra,0xc87ff + 3bc01170: eb4080e7 jalr -332(ra) # 4400020 + 3bc01174: 67b5 lui a5,0xd + 3bc01176: 2501 sext.w a0,a0 + 3bc01178: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0117c: 0449a583 lw a1,68(s3) + 3bc01180: 86d6 mv a3,s5 + 3bc01182: 20000613 li a2,512 + 3bc01186: 02f51663 bne a0,a5,3bc011b2 + 3bc0118a: 0000e517 auipc a0,0xe + 3bc0118e: a7650513 addi a0,a0,-1418 # 3bc0ec00 + 3bc01192: a9dff0ef jal ra,3bc00c2e + 3bc01196: 02055763 bgez a0,3bc011c4 + 3bc0119a: 59fd li s3,-1 + 3bc0119c: 60a6 ld ra,72(sp) + 3bc0119e: 6406 ld s0,64(sp) + 3bc011a0: 74e2 ld s1,56(sp) + 3bc011a2: 7942 ld s2,48(sp) + 3bc011a4: 7a02 ld s4,32(sp) + 3bc011a6: 6ae2 ld s5,24(sp) + 3bc011a8: 6b42 ld s6,16(sp) + 3bc011aa: 854e mv a0,s3 + 3bc011ac: 79a2 ld s3,40(sp) + 3bc011ae: 6161 addi sp,sp,80 + 3bc011b0: 8082 ret + 3bc011b2: 0000e517 auipc a0,0xe + 3bc011b6: a4e50513 addi a0,a0,-1458 # 3bc0ec00 + 3bc011ba: c87ff097 auipc ra,0xc87ff + 3bc011be: ea6080e7 jalr -346(ra) # 4400060 + 3bc011c2: bfd1 j 3bc01196 + 3bc011c4: 0000e417 auipc s0,0xe + 3bc011c8: a3c40413 addi s0,s0,-1476 # 3bc0ec00 + 3bc011cc: 4458 lw a4,12(s0) + 3bc011ce: 6814 ld a3,16(s0) + 3bc011d0: 4410 lw a2,8(s0) + 3bc011d2: 1ff7049b addiw s1,a4,511 + 3bc011d6: 404c lw a1,4(s0) + 3bc011d8: e004f493 andi s1,s1,-512 + 3bc011dc: 2481 sext.w s1,s1 + 3bc011de: 87a6 mv a5,s1 + 3bc011e0: 00009517 auipc a0,0x9 + 3bc011e4: 5a850513 addi a0,a0,1448 # 3bc0a788 + 3bc011e8: 970ff0ef jal ra,3bc00358 + 3bc011ec: 4058 lw a4,4(s0) + 3bc011ee: 345a37b7 lui a5,0x345a3 + 3bc011f2: 34278793 addi a5,a5,834 # 345a3342 + 3bc011f6: 06f70363 beq a4,a5,3bc0125c + 3bc011fa: 414d37b7 lui a5,0x414d3 + 3bc011fe: 34278793 addi a5,a5,834 # 414d3342 <__BL2_END__+0x58bfb32> + 3bc01202: 06f70963 beq a4,a5,3bc01274 + 3bc01206: 01043903 ld s2,16(s0) + 3bc0120a: 4a01 li s4,0 + 3bc0120c: c87ff097 auipc ra,0xc87ff + 3bc01210: e14080e7 jalr -492(ra) # 4400020 + 3bc01214: 67b5 lui a5,0xd + 3bc01216: 2501 sext.w a0,a0 + 3bc01218: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0121c: 0449a583 lw a1,68(s3) + 3bc01220: 86d6 mv a3,s5 + 3bc01222: 8626 mv a2,s1 + 3bc01224: 04f51a63 bne a0,a5,3bc01278 + 3bc01228: 854a mv a0,s2 + 3bc0122a: a05ff0ef jal ra,3bc00c2e + 3bc0122e: f60546e3 bltz a0,3bc0119a + 3bc01232: 444c lw a1,12(s0) + 3bc01234: 00c90993 addi s3,s2,12 + 3bc01238: 854e mv a0,s3 + 3bc0123a: 35d1 addiw a1,a1,-12 + 3bc0123c: c87ff097 auipc ra,0xc87ff + 3bc01240: e64080e7 jalr -412(ra) # 44000a0 + 3bc01244: 4410 lw a2,8(s0) + 3bc01246: 0005059b sext.w a1,a0 + 3bc0124a: 02b60d63 beq a2,a1,3bc01284 + 3bc0124e: 00009517 auipc a0,0x9 + 3bc01252: 56a50513 addi a0,a0,1386 # 3bc0a7b8 + 3bc01256: 902ff0ef jal ra,3bc00358 + 3bc0125a: b781 j 3bc0119a + 3bc0125c: 4a09 li s4,2 + 3bc0125e: 85d2 mv a1,s4 + 3bc01260: 00009517 auipc a0,0x9 + 3bc01264: 54850513 addi a0,a0,1352 # 3bc0a7a8 + 3bc01268: 00819937 lui s2,0x819 + 3bc0126c: 8ecff0ef jal ra,3bc00358 + 3bc01270: 0922 slli s2,s2,0x8 + 3bc01272: bf69 j 3bc0120c + 3bc01274: 4a05 li s4,1 + 3bc01276: b7e5 j 3bc0125e + 3bc01278: 854a mv a0,s2 + 3bc0127a: c87ff097 auipc ra,0xc87ff + 3bc0127e: de6080e7 jalr -538(ra) # 4400060 + 3bc01282: b775 j 3bc0122e + 3bc01284: 444c lw a1,12(s0) + 3bc01286: 854e mv a0,s3 + 3bc01288: 3c0026b7 lui a3,0x3c002 + 3bc0128c: 35d1 addiw a1,a1,-12 + 3bc0128e: 4651 li a2,20 + 3bc01290: 7c05b58b extu a1,a1,31,0 + 3bc01294: f0eff0ef jal ra,3bc009a2 + 3bc01298: 89aa mv s3,a0 + 3bc0129a: 00055a63 bgez a0,3bc012ae + 3bc0129e: 85aa mv a1,a0 + 3bc012a0: 00009517 auipc a0,0x9 + 3bc012a4: 54050513 addi a0,a0,1344 # 3bc0a7e0 + 3bc012a8: 8b0ff0ef jal ra,3bc00358 + 3bc012ac: bdc5 j 3bc0119c + 3bc012ae: 967ff0ef jal ra,3bc00c14 + 3bc012b2: 0000a997 auipc s3,0xa + 3bc012b6: 49e98993 addi s3,s3,1182 # 3bc0b750 + 3bc012ba: 0009b783 ld a5,0(s3) + 3bc012be: 00a79423 sh a0,8(a5) + 3bc012c2: bbeff0ef jal ra,3bc00680 + 3bc012c6: 94fff0ef jal ra,3bc00c14 + 3bc012ca: 0009b783 ld a5,0(s3) + 3bc012ce: 00a79523 sh a0,10(a5) + 3bc012d2: 040a0363 beqz s4,3bc01318 + 3bc012d6: 6804 ld s1,16(s0) + 3bc012d8: 010007b7 lui a5,0x1000 + 3bc012dc: 02000613 li a2,32 + 3bc012e0: 85ca mv a1,s2 + 3bc012e2: 8526 mv a0,s1 + 3bc012e4: e43e sd a5,8(sp) + 3bc012e6: f94ff0ef jal ra,3bc00a7a + 3bc012ea: 00c46683 lwu a3,12(s0) + 3bc012ee: 02090613 addi a2,s2,32 # 819020 <__BSS_SIZE__+0x813410> + 3bc012f2: 002c addi a1,sp,8 + 3bc012f4: 02048513 addi a0,s1,32 # ffffffffffff3020 <__BL2_END__+0xffffffffc43df810> + 3bc012f8: 8752 mv a4,s4 + 3bc012fa: 3d4000ef jal ra,3bc016ce + 3bc012fe: 6622 ld a2,8(sp) + 3bc01300: 85aa mv a1,a0 + 3bc01302: 0006049b sext.w s1,a2 + 3bc01306: 00055963 bgez a0,3bc01318 + 3bc0130a: 00009517 auipc a0,0x9 + 3bc0130e: 4f650513 addi a0,a0,1270 # 3bc0a800 + 3bc01312: 846ff0ef jal ra,3bc00358 + 3bc01316: b551 j 3bc0119a + 3bc01318: 6808 ld a0,16(s0) + 3bc0131a: 85a6 mv a1,s1 + 3bc0131c: e3bfe0ef jal ra,3bc00156 + 3bc01320: 8f5ff0ef jal ra,3bc00c14 + 3bc01324: 0009b783 ld a5,0(s3) + 3bc01328: 4981 li s3,0 + 3bc0132a: 00a79623 sh a0,12(a5) # 100000c <__BSS_SIZE__+0xffa3fc> + 3bc0132e: 00009517 auipc a0,0x9 + 3bc01332: 50250513 addi a0,a0,1282 # 3bc0a830 + 3bc01336: 822ff0ef jal ra,3bc00358 + 3bc0133a: 681c ld a5,16(s0) + 3bc0133c: 02078793 addi a5,a5,32 + 3bc01340: 00fb3023 sd a5,0(s6) + 3bc01344: bda1 j 3bc0119c + +000000003bc01346 : + 3bc01346: 7179 addi sp,sp,-48 + 3bc01348: ec26 sd s1,24(sp) + 3bc0134a: 74cd lui s1,0xffff3 + 3bc0134c: e84a sd s2,16(sp) + 3bc0134e: f406 sd ra,40(sp) + 3bc01350: f022 sd s0,32(sp) + 3bc01352: e002 sd zero,0(sp) + 3bc01354: e402 sd zero,8(sp) + 3bc01356: 1604849b addiw s1,s1,352 + 3bc0135a: cc2ff0ef jal ra,3bc0081c + 3bc0135e: 4915 li s2,5 + 3bc01360: 4401 li s0,0 + 3bc01362: c87ff097 auipc ra,0xc87ff + 3bc01366: d5e080e7 jalr -674(ra) # 44000c0 + 3bc0136a: 02a45563 bge s0,a0,3bc01394 + 3bc0136e: 8522 mv a0,s0 + 3bc01370: b43ff0ef jal ra,3bc00eb2 + 3bc01374: 00055463 bgez a0,3bc0137c + 3bc01378: 2405 addiw s0,s0,1 + 3bc0137a: b7e5 j 3bc01362 + 3bc0137c: 858a mv a1,sp + 3bc0137e: 8522 mv a0,s0 + 3bc01380: c99ff0ef jal ra,3bc01018 + 3bc01384: fe054ae3 bltz a0,3bc01378 + 3bc01388: 002c addi a1,sp,8 + 3bc0138a: 8522 mv a0,s0 + 3bc0138c: db3ff0ef jal ra,3bc0113e + 3bc01390: fe0544e3 bltz a0,3bc01378 + 3bc01394: c87ff097 auipc ra,0xc87ff + 3bc01398: d2c080e7 jalr -724(ra) # 44000c0 + 3bc0139c: 02a45b63 bge s0,a0,3bc013d2 + 3bc013a0: dadfe0ef jal ra,3bc0014c + 3bc013a4: f1ffe0ef jal ra,3bc002c2 + 3bc013a8: c8cff0ef jal ra,3bc00834 + 3bc013ac: 6582 ld a1,0(sp) + 3bc013ae: c5a5 beqz a1,3bc01416 + 3bc013b0: 00009517 auipc a0,0x9 + 3bc013b4: 4b850513 addi a0,a0,1208 # 3bc0a868 + 3bc013b8: fa1fe0ef jal ra,3bc00358 + 3bc013bc: 65a2 ld a1,8(sp) + 3bc013be: 6502 ld a0,0(sp) + 3bc013c0: e5bfe0ef jal ra,3bc0021a + 3bc013c4: 70a2 ld ra,40(sp) + 3bc013c6: 7402 ld s0,32(sp) + 3bc013c8: 64e2 ld s1,24(sp) + 3bc013ca: 6942 ld s2,16(sp) + 3bc013cc: 4501 li a0,0 + 3bc013ce: 6145 addi sp,sp,48 + 3bc013d0: 8082 ret + 3bc013d2: c87ff097 auipc ra,0xc87ff + 3bc013d6: c4e080e7 jalr -946(ra) # 4400020 + 3bc013da: 00a487bb addw a5,s1,a0 + 3bc013de: 85a2 mv a1,s0 + 3bc013e0: 02f96363 bltu s2,a5,3bc01406 + 3bc013e4: 4505 li a0,1 + 3bc013e6: 00f51533 sll a0,a0,a5 + 3bc013ea: 02957513 andi a0,a0,41 + 3bc013ee: cd01 beqz a0,3bc01406 + 3bc013f0: 00009517 auipc a0,0x9 + 3bc013f4: 18850513 addi a0,a0,392 # 3bc0a578 + 3bc013f8: f61fe0ef jal ra,3bc00358 + 3bc013fc: c87ff097 auipc ra,0xc87ff + 3bc01400: c84080e7 jalr -892(ra) # 4400080 + 3bc01404: bfb1 j 3bc01360 + 3bc01406: 00009517 auipc a0,0x9 + 3bc0140a: 44250513 addi a0,a0,1090 # 3bc0a848 + 3bc0140e: f4bfe0ef jal ra,3bc00358 + 3bc01412: 9a8ff0ef jal ra,3bc005ba + 3bc01416: 65a2 ld a1,8(sp) + 3bc01418: 00009517 auipc a0,0x9 + 3bc0141c: 47050513 addi a0,a0,1136 # 3bc0a888 + 3bc01420: f39fe0ef jal ra,3bc00358 + 3bc01424: 6522 ld a0,8(sp) + 3bc01426: e6dfe0ef jal ra,3bc00292 + 3bc0142a: bf69 j 3bc013c4 + +000000003bc0142c : + 3bc0142c: 1141 addi sp,sp,-16 + 3bc0142e: e406 sd ra,8(sp) + 3bc01430: b200f737 lui a4,0xb200f + 3bc01434: e022 sd s0,0(sp) + 3bc01436: 030007b7 lui a5,0x3000 + 3bc0143a: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc0143e: fd6ff0ef jal ra,3bc00c14 + 3bc01442: 0000a797 auipc a5,0xa + 3bc01446: 30e7b783 ld a5,782(a5) # 3bc0b750 + 3bc0144a: 00a79023 sh a0,0(a5) + 3bc0144e: 00009617 auipc a2,0x9 + 3bc01452: eb260613 addi a2,a2,-334 # 3bc0a300 + 3bc01456: 00009597 auipc a1,0x9 + 3bc0145a: eca58593 addi a1,a1,-310 # 3bc0a320 + 3bc0145e: 00009517 auipc a0,0x9 + 3bc01462: 44a50513 addi a0,a0,1098 # 3bc0a8a8 + 3bc01466: ef3fe0ef jal ra,3bc00358 + 3bc0146a: 0e000437 lui s0,0xe000 + 3bc0146e: 400c lw a1,0(s0) + 3bc01470: 00009517 auipc a0,0x9 + 3bc01474: 44850513 addi a0,a0,1096 # 3bc0a8b8 + 3bc01478: ee1fe0ef jal ra,3bc00358 + 3bc0147c: 3c0027b7 lui a5,0x3c002 + 3bc01480: 47cc lw a1,12(a5) + 3bc01482: 0e07a603 lw a2,224(a5) # 3c0020e0 <__BL2_END__+0x3ee8d0> + 3bc01486: 00009517 auipc a0,0x9 + 3bc0148a: 44a50513 addi a0,a0,1098 # 3bc0a8d0 + 3bc0148e: ecbfe0ef jal ra,3bc00358 + 3bc01492: 4c0c lw a1,24(s0) + 3bc01494: 00009517 auipc a0,0x9 + 3bc01498: 47450513 addi a0,a0,1140 # 3bc0a908 + 3bc0149c: 2581 sext.w a1,a1 + 3bc0149e: ebbfe0ef jal ra,3bc00358 + 3bc014a2: 994ff0ef jal ra,3bc00636 + 3bc014a6: b8cff0ef jal ra,3bc00832 + 3bc014aa: bceff0ef jal ra,3bc00878 + 3bc014ae: 93fff0ef jal ra,3bc00dec + 3bc014b2: e95ff0ef jal ra,3bc01346 + 3bc014b6: 00009517 auipc a0,0x9 + 3bc014ba: 46a50513 addi a0,a0,1130 # 3bc0a920 + 3bc014be: e9bfe0ef jal ra,3bc00358 + 3bc014c2: a001 j 3bc014c2 + +000000003bc014c4 : + 3bc014c4: 8082 ret + +000000003bc014c6 : + 3bc014c6: 00012797 auipc a5,0x12 + 3bc014ca: 23278793 addi a5,a5,562 # 3bc136f8 + 3bc014ce: 6388 ld a0,0(a5) + 3bc014d0: 00b50733 add a4,a0,a1 + 3bc014d4: e398 sd a4,0(a5) + 3bc014d6: 00012797 auipc a5,0x12 + 3bc014da: 22a7b783 ld a5,554(a5) # 3bc13700 + 3bc014de: 97ba add a5,a5,a4 + 3bc014e0: 02f76363 bltu a4,a5,3bc01506 + 3bc014e4: 1141 addi sp,sp,-16 + 3bc014e6: 862e mv a2,a1 + 3bc014e8: 00009517 auipc a0,0x9 + 3bc014ec: 45050513 addi a0,a0,1104 # 3bc0a938 + 3bc014f0: 00009597 auipc a1,0x9 + 3bc014f4: 5b058593 addi a1,a1,1456 # 3bc0aaa0 <__func__.0> + 3bc014f8: e406 sd ra,8(sp) + 3bc014fa: e5ffe0ef jal ra,3bc00358 + 3bc014fe: 60a2 ld ra,8(sp) + 3bc01500: 4501 li a0,0 + 3bc01502: 0141 addi sp,sp,16 + 3bc01504: 8082 ret + 3bc01506: 8082 ret + +000000003bc01508 : + 3bc01508: 711d addi sp,sp,-96 + 3bc0150a: 00000797 auipc a5,0x0 + 3bc0150e: fbc78793 addi a5,a5,-68 # 3bc014c6 + 3bc01512: f83e sd a5,48(sp) + 3bc01514: 00000797 auipc a5,0x0 + 3bc01518: fb078793 addi a5,a5,-80 # 3bc014c4 + 3bc0151c: ec86 sd ra,88(sp) + 3bc0151e: e8a2 sd s0,80(sp) + 3bc01520: e4a6 sd s1,72(sp) + 3bc01522: e0ca sd s2,64(sp) + 3bc01524: ec36 sd a3,24(sp) + 3bc01526: f402 sd zero,40(sp) + 3bc01528: fc3e sd a5,56(sp) + 3bc0152a: d202 sw zero,36(sp) + 3bc0152c: e19d bnez a1,3bc01552 + 3bc0152e: 00009597 auipc a1,0x9 + 3bc01532: 57a58593 addi a1,a1,1402 # 3bc0aaa8 <__func__.1> + 3bc01536: 00009517 auipc a0,0x9 + 3bc0153a: 42250513 addi a0,a0,1058 # 3bc0a958 + 3bc0153e: e1bfe0ef jal ra,3bc00358 + 3bc01542: 5429 li s0,-22 + 3bc01544: 60e6 ld ra,88(sp) + 3bc01546: 8522 mv a0,s0 + 3bc01548: 6446 ld s0,80(sp) + 3bc0154a: 64a6 ld s1,72(sp) + 3bc0154c: 6906 ld s2,64(sp) + 3bc0154e: 6125 addi sp,sp,96 + 3bc01550: 8082 ret + 3bc01552: 10300793 li a5,259 + 3bc01556: 07de slli a5,a5,0x17 + 3bc01558: 842a mv s0,a0 + 3bc0155a: 00012717 auipc a4,0x12 + 3bc0155e: 18f73f23 sd a5,414(a4) # 3bc136f8 + 3bc01562: 84ae mv s1,a1 + 3bc01564: 001007b7 lui a5,0x100 + 3bc01568: 85aa mv a1,a0 + 3bc0156a: 00009517 auipc a0,0x9 + 3bc0156e: 40e50513 addi a0,a0,1038 # 3bc0a978 + 3bc01572: 8932 mv s2,a2 + 3bc01574: 00012717 auipc a4,0x12 + 3bc01578: 18f73623 sd a5,396(a4) # 3bc13700 + 3bc0157c: dddfe0ef jal ra,3bc00358 + 3bc01580: 67e2 ld a5,24(sp) + 3bc01582: 4611 li a2,4 + 3bc01584: 00590593 addi a1,s2,5 + 3bc01588: 17ed addi a5,a5,-5 + 3bc0158a: 1008 addi a0,sp,32 + 3bc0158c: ec3e sd a5,24(sp) + 3bc0158e: cecff0ef jal ra,3bc00a7a + 3bc01592: 67e2 ld a5,24(sp) + 3bc01594: 02016583 lwu a1,32(sp) + 3bc01598: 00009517 auipc a0,0x9 + 3bc0159c: 3f850513 addi a0,a0,1016 # 3bc0a990 + 3bc015a0: 17e1 addi a5,a5,-8 + 3bc015a2: f42e sd a1,40(sp) + 3bc015a4: ec3e sd a5,24(sp) + 3bc015a6: db3fe0ef jal ra,3bc00358 + 3bc015aa: 181c addi a5,sp,48 + 3bc015ac: e03e sd a5,0(sp) + 3bc015ae: 8522 mv a0,s0 + 3bc015b0: 02410893 addi a7,sp,36 + 3bc015b4: 4805 li a6,1 + 3bc015b6: 4795 li a5,5 + 3bc015b8: 874a mv a4,s2 + 3bc015ba: 0834 addi a3,sp,24 + 3bc015bc: 00d90613 addi a2,s2,13 + 3bc015c0: 102c addi a1,sp,40 + 3bc015c2: 5f5040ef jal ra,3bc063b6 + 3bc015c6: 842a mv s0,a0 + 3bc015c8: c919 beqz a0,3bc015de + 3bc015ca: 5612 lw a2,36(sp) + 3bc015cc: 85aa mv a1,a0 + 3bc015ce: 00009517 auipc a0,0x9 + 3bc015d2: 3e250513 addi a0,a0,994 # 3bc0a9b0 + 3bc015d6: d83fe0ef jal ra,3bc00358 + 3bc015da: 5449 li s0,-14 + 3bc015dc: b7a5 j 3bc01544 + 3bc015de: 75a2 ld a1,40(sp) + 3bc015e0: 00009517 auipc a0,0x9 + 3bc015e4: 3f850513 addi a0,a0,1016 # 3bc0a9d8 + 3bc015e8: e08c sd a1,0(s1) + 3bc015ea: d6ffe0ef jal ra,3bc00358 + 3bc015ee: bf99 j 3bc01544 + +000000003bc015f0 : + 3bc015f0: 85aa mv a1,a0 + 3bc015f2: 4501 li a0,0 + 3bc015f4: bdc9 j 3bc014c6 + +000000003bc015f6 : + 3bc015f6: 02b50633 mul a2,a0,a1 + 3bc015fa: 1101 addi sp,sp,-32 + 3bc015fc: e822 sd s0,16(sp) + 3bc015fe: ec06 sd ra,24(sp) + 3bc01600: 8532 mv a0,a2 + 3bc01602: e432 sd a2,8(sp) + 3bc01604: fedff0ef jal ra,3bc015f0 + 3bc01608: 842a mv s0,a0 + 3bc0160a: c509 beqz a0,3bc01614 + 3bc0160c: 6622 ld a2,8(sp) + 3bc0160e: 4581 li a1,0 + 3bc01610: c10ff0ef jal ra,3bc00a20 + 3bc01614: 60e2 ld ra,24(sp) + 3bc01616: 8522 mv a0,s0 + 3bc01618: 6442 ld s0,16(sp) + 3bc0161a: 6105 addi sp,sp,32 + 3bc0161c: 8082 ret + +000000003bc0161e : + 3bc0161e: 8082 ret + +000000003bc01620 : + 3bc01620: 10300793 li a5,259 + 3bc01624: 715d addi sp,sp,-80 + 3bc01626: 07de slli a5,a5,0x17 + 3bc01628: e0a2 sd s0,64(sp) + 3bc0162a: f84a sd s2,48(sp) + 3bc0162c: 00012717 auipc a4,0x12 + 3bc01630: 0cf73623 sd a5,204(a4) # 3bc136f8 + 3bc01634: 842a mv s0,a0 + 3bc01636: 001007b7 lui a5,0x100 + 3bc0163a: 892e mv s2,a1 + 3bc0163c: 85aa mv a1,a0 + 3bc0163e: 00009517 auipc a0,0x9 + 3bc01642: 3b250513 addi a0,a0,946 # 3bc0a9f0 + 3bc01646: e486 sd ra,72(sp) + 3bc01648: e436 sd a3,8(sp) + 3bc0164a: 00012717 auipc a4,0x12 + 3bc0164e: 0af73b23 sd a5,182(a4) # 3bc13700 + 3bc01652: fc26 sd s1,56(sp) + 3bc01654: f44e sd s3,40(sp) + 3bc01656: 89b2 mv s3,a2 + 3bc01658: d01fe0ef jal ra,3bc00358 + 3bc0165c: 06400593 li a1,100 + 3bc01660: 0828 addi a0,sp,24 + 3bc01662: 38b050ef jal ra,3bc071ec + 3bc01666: 84aa mv s1,a0 + 3bc01668: 1b7050ef jal ra,3bc0701e + 3bc0166c: 2501 sext.w a0,a0 + 3bc0166e: c105 beqz a0,3bc0168e + 3bc01670: 85a6 mv a1,s1 + 3bc01672: 00009517 auipc a0,0x9 + 3bc01676: 39650513 addi a0,a0,918 # 3bc0aa08 + 3bc0167a: cdffe0ef jal ra,3bc00358 + 3bc0167e: 557d li a0,-1 + 3bc01680: 60a6 ld ra,72(sp) + 3bc01682: 6406 ld s0,64(sp) + 3bc01684: 74e2 ld s1,56(sp) + 3bc01686: 7942 ld s2,48(sp) + 3bc01688: 79a2 ld s3,40(sp) + 3bc0168a: 6161 addi sp,sp,80 + 3bc0168c: 8082 ret + 3bc0168e: 6562 ld a0,24(sp) + 3bc01690: 4781 li a5,0 + 3bc01692: 0038 addi a4,sp,8 + 3bc01694: 85a2 mv a1,s0 + 3bc01696: 86ce mv a3,s3 + 3bc01698: 864a mv a2,s2 + 3bc0169a: 383050ef jal ra,3bc0721c + 3bc0169e: 6622 ld a2,8(sp) + 3bc016a0: 00093583 ld a1,0(s2) + 3bc016a4: 86aa mv a3,a0 + 3bc016a6: 842a mv s0,a0 + 3bc016a8: 00009517 auipc a0,0x9 + 3bc016ac: 37850513 addi a0,a0,888 # 3bc0aa20 + 3bc016b0: ca9fe0ef jal ra,3bc00358 + 3bc016b4: 8526 mv a0,s1 + 3bc016b6: 169050ef jal ra,3bc0701e + 3bc016ba: 0005079b sext.w a5,a0 + 3bc016be: 4501 li a0,0 + 3bc016c0: d3e1 beqz a5,3bc01680 + 3bc016c2: 85a2 mv a1,s0 + 3bc016c4: 00009517 auipc a0,0x9 + 3bc016c8: 38450513 addi a0,a0,900 # 3bc0aa48 + 3bc016cc: b77d j 3bc0167a + +000000003bc016ce : + 3bc016ce: 7139 addi sp,sp,-64 + 3bc016d0: 87ba mv a5,a4 + 3bc016d2: ec4e sd s3,24(sp) + 3bc016d4: e852 sd s4,16(sp) + 3bc016d6: e456 sd s5,8(sp) + 3bc016d8: 89b2 mv s3,a2 + 3bc016da: 8a36 mv s4,a3 + 3bc016dc: 8aba mv s5,a4 + 3bc016de: 8736 mv a4,a3 + 3bc016e0: 86b2 mv a3,a2 + 3bc016e2: 6190 ld a2,0(a1) + 3bc016e4: f426 sd s1,40(sp) + 3bc016e6: f04a sd s2,32(sp) + 3bc016e8: 84ae mv s1,a1 + 3bc016ea: 892a mv s2,a0 + 3bc016ec: 85aa mv a1,a0 + 3bc016ee: 00009517 auipc a0,0x9 + 3bc016f2: 37a50513 addi a0,a0,890 # 3bc0aa68 + 3bc016f6: fc06 sd ra,56(sp) + 3bc016f8: f822 sd s0,48(sp) + 3bc016fa: c5ffe0ef jal ra,3bc00358 + 3bc016fe: 4785 li a5,1 + 3bc01700: 02fa8f63 beq s5,a5,3bc0173e + 3bc01704: 4789 li a5,2 + 3bc01706: 5429 li s0,-22 + 3bc01708: 00fa9963 bne s5,a5,3bc0171a + 3bc0170c: 86d2 mv a3,s4 + 3bc0170e: 864e mv a2,s3 + 3bc01710: 85a6 mv a1,s1 + 3bc01712: 854a mv a0,s2 + 3bc01714: f0dff0ef jal ra,3bc01620 + 3bc01718: 842a mv s0,a0 + 3bc0171a: 608c ld a1,0(s1) + 3bc0171c: 8622 mv a2,s0 + 3bc0171e: 00009517 auipc a0,0x9 + 3bc01722: 36a50513 addi a0,a0,874 # 3bc0aa88 + 3bc01726: c33fe0ef jal ra,3bc00358 + 3bc0172a: 70e2 ld ra,56(sp) + 3bc0172c: 8522 mv a0,s0 + 3bc0172e: 7442 ld s0,48(sp) + 3bc01730: 74a2 ld s1,40(sp) + 3bc01732: 7902 ld s2,32(sp) + 3bc01734: 69e2 ld s3,24(sp) + 3bc01736: 6a42 ld s4,16(sp) + 3bc01738: 6aa2 ld s5,8(sp) + 3bc0173a: 6121 addi sp,sp,64 + 3bc0173c: 8082 ret + 3bc0173e: 86d2 mv a3,s4 + 3bc01740: 864e mv a2,s3 + 3bc01742: 85a6 mv a1,s1 + 3bc01744: 854a mv a0,s2 + 3bc01746: dc3ff0ef jal ra,3bc01508 + 3bc0174a: b7f9 j 3bc01718 + +000000003bc0174c : + 3bc0174c: 4108 lw a0,0(a0) + 3bc0174e: 2501 sext.w a0,a0 + 3bc01750: 8082 ret + +000000003bc01752 : + 3bc01752: c188 sw a0,0(a1) + 3bc01754: 8082 ret + +000000003bc01756 : + 3bc01756: 8082 ret + +000000003bc01758 : + 3bc01758: 00012717 auipc a4,0x12 + 3bc0175c: 0b370713 addi a4,a4,179 # 3bc1380b + 3bc01760: 00074783 lbu a5,0(a4) + 3bc01764: eb89 bnez a5,3bc01776 + 3bc01766: 0000a517 auipc a0,0xa + 3bc0176a: 09253503 ld a0,146(a0) # 3bc0b7f8 + 3bc0176e: 2785 addiw a5,a5,1 + 3bc01770: 00f70023 sb a5,0(a4) + 3bc01774: 8082 ret + 3bc01776: 4685 li a3,1 + 3bc01778: 00d79763 bne a5,a3,3bc01786 + 3bc0177c: 0000a517 auipc a0,0xa + 3bc01780: 08453503 ld a0,132(a0) # 3bc0b800 + 3bc01784: b7ed j 3bc0176e + 3bc01786: 0000a517 auipc a0,0xa + 3bc0178a: 08253503 ld a0,130(a0) # 3bc0b808 + 3bc0178e: b7c5 j 3bc0176e + +000000003bc01790 : + 3bc01790: 8082 ret + +000000003bc01792 : + 3bc01792: 698c ld a1,16(a1) + 3bc01794: 00012517 auipc a0,0x12 + 3bc01798: f7453503 ld a0,-140(a0) # 3bc13708 + 3bc0179c: 1141 addi sp,sp,-16 + 3bc0179e: 461d li a2,7 + 3bc017a0: 0511 addi a0,a0,4 + 3bc017a2: e406 sd ra,8(sp) + 3bc017a4: ad6ff0ef jal ra,3bc00a7a + 3bc017a8: 60a2 ld ra,8(sp) + 3bc017aa: 0141 addi sp,sp,16 + 3bc017ac: 8082 ret + +000000003bc017ae : + 3bc017ae: 00009597 auipc a1,0x9 + 3bc017b2: 70a58593 addi a1,a1,1802 # 3bc0aeb8 <__func__.5> + 3bc017b6: 00009517 auipc a0,0x9 + 3bc017ba: 30250513 addi a0,a0,770 # 3bc0aab8 <__func__.1+0x10> + 3bc017be: b9bfe06f j 3bc00358 + +000000003bc017c2 : + 3bc017c2: 00012797 auipc a5,0x12 + 3bc017c6: 040781a3 sb zero,67(a5) # 3bc13805 + 3bc017ca: 4785 li a5,1 + 3bc017cc: 00012717 auipc a4,0x12 + 3bc017d0: 02f70fa3 sb a5,63(a4) # 3bc1380b + 3bc017d4: 00009597 auipc a1,0x9 + 3bc017d8: 6d458593 addi a1,a1,1748 # 3bc0aea8 <__func__.4> + 3bc017dc: 00012797 auipc a5,0x12 + 3bc017e0: 020785a3 sb zero,43(a5) # 3bc13807 + 3bc017e4: 00009517 auipc a0,0x9 + 3bc017e8: 2d450513 addi a0,a0,724 # 3bc0aab8 <__func__.1+0x10> + 3bc017ec: b6dfe06f j 3bc00358 + +000000003bc017f0 : + 3bc017f0: 1141 addi sp,sp,-16 + 3bc017f2: 00009597 auipc a1,0x9 + 3bc017f6: 6ae58593 addi a1,a1,1710 # 3bc0aea0 <__func__.1> + 3bc017fa: 00009517 auipc a0,0x9 + 3bc017fe: 2d650513 addi a0,a0,726 # 3bc0aad0 <__func__.1+0x28> + 3bc01802: e406 sd ra,8(sp) + 3bc01804: b55fe0ef jal ra,3bc00358 + 3bc01808: 60a2 ld ra,8(sp) + 3bc0180a: 0000a797 auipc a5,0xa + 3bc0180e: 0c07b323 sd zero,198(a5) # 3bc0b8d0 + 3bc01812: 0141 addi sp,sp,16 + 3bc01814: 8082 ret + +000000003bc01816 : + 3bc01816: 1141 addi sp,sp,-16 + 3bc01818: e022 sd s0,0(sp) + 3bc0181a: 00009597 auipc a1,0x9 + 3bc0181e: 67e58593 addi a1,a1,1662 # 3bc0ae98 <__func__.0> + 3bc01822: 842a mv s0,a0 + 3bc01824: 00009517 auipc a0,0x9 + 3bc01828: 2ac50513 addi a0,a0,684 # 3bc0aad0 <__func__.1+0x28> + 3bc0182c: e406 sd ra,8(sp) + 3bc0182e: b2bfe0ef jal ra,3bc00358 + 3bc01832: 0000a797 auipc a5,0xa + 3bc01836: 09e78793 addi a5,a5,158 # 3bc0b8d0 + 3bc0183a: 6398 ld a4,0(a5) + 3bc0183c: cf01 beqz a4,3bc01854 + 3bc0183e: 00009517 auipc a0,0x9 + 3bc01842: 2a250513 addi a0,a0,674 # 3bc0aae0 <__func__.1+0x38> + 3bc01846: b13fe0ef jal ra,3bc00358 + 3bc0184a: 60a2 ld ra,8(sp) + 3bc0184c: 6402 ld s0,0(sp) + 3bc0184e: 4501 li a0,0 + 3bc01850: 0141 addi sp,sp,16 + 3bc01852: 8082 ret + 3bc01854: e380 sd s0,0(a5) + 3bc01856: bfd5 j 3bc0184a + +000000003bc01858 : + 3bc01858: 1101 addi sp,sp,-32 + 3bc0185a: e822 sd s0,16(sp) + 3bc0185c: 842a mv s0,a0 + 3bc0185e: 852e mv a0,a1 + 3bc01860: e42e sd a1,8(sp) + 3bc01862: ec06 sd ra,24(sp) + 3bc01864: b04ff0ef jal ra,3bc00b68 + 3bc01868: 0506 slli a0,a0,0x1 + 3bc0186a: 0025071b addiw a4,a0,2 + 3bc0186e: 87a2 mv a5,s0 + 3bc01870: 1827d70b sbia a4,(a5),2,0 + 3bc01874: 470d li a4,3 + 3bc01876: 00e400a3 sb a4,1(s0) # e000001 + 3bc0187a: 06400713 li a4,100 + 3bc0187e: 65a2 ld a1,8(sp) + 3bc01880: 00a77463 bgeu a4,a0,3bc01888 + 3bc01884: 06400513 li a0,100 + 3bc01888: 4701 li a4,0 + 3bc0188a: 00171693 slli a3,a4,0x1 + 3bc0188e: 00a6e663 bltu a3,a0,3bc0189a + 3bc01892: 60e2 ld ra,24(sp) + 3bc01894: 6442 ld s0,16(sp) + 3bc01896: 6105 addi sp,sp,32 + 3bc01898: 8082 ret + 3bc0189a: 80e5c68b lrbu a3,a1,a4,0 + 3bc0189e: 0705 addi a4,a4,1 + 3bc018a0: 1827d68b sbia a3,(a5),2,0 + 3bc018a4: fe078fa3 sb zero,-1(a5) + 3bc018a8: b7cd j 3bc0188a + +000000003bc018aa : + 3bc018aa: 5d98 lw a4,56(a1) + 3bc018ac: fc600793 li a5,-58 + 3bc018b0: 22f70663 beq a4,a5,3bc01adc + 3bc018b4: 699c ld a5,16(a1) + 3bc018b6: 7179 addi sp,sp,-48 + 3bc018b8: e052 sd s4,0(sp) + 3bc018ba: f406 sd ra,40(sp) + 3bc018bc: f022 sd s0,32(sp) + 3bc018be: ec26 sd s1,24(sp) + 3bc018c0: e84a sd s2,16(sp) + 3bc018c2: e44e sd s3,8(sp) + 3bc018c4: 0037c403 lbu s0,3(a5) + 3bc018c8: 0047c703 lbu a4,4(a5) + 3bc018cc: 0017c483 lbu s1,1(a5) + 3bc018d0: 1402 slli s0,s0,0x20 + 3bc018d2: 0762 slli a4,a4,0x18 + 3bc018d4: 943a add s0,s0,a4 + 3bc018d6: 0077c703 lbu a4,7(a5) + 3bc018da: 0027c603 lbu a2,2(a5) + 3bc018de: 0084949b slliw s1,s1,0x8 + 3bc018e2: 943a add s0,s0,a4 + 3bc018e4: 0057c703 lbu a4,5(a5) + 3bc018e8: 9e25 addw a2,a2,s1 + 3bc018ea: 00012a17 auipc s4,0x12 + 3bc018ee: e3ea0a13 addi s4,s4,-450 # 3bc13728 + 3bc018f2: 0742 slli a4,a4,0x10 + 3bc018f4: 943a add s0,s0,a4 + 3bc018f6: 0067c703 lbu a4,6(a5) + 3bc018fa: 000a3583 ld a1,0(s4) + 3bc018fe: 84b2 mv s1,a2 + 3bc01900: 0722 slli a4,a4,0x8 + 3bc01902: 943a add s0,s0,a4 + 3bc01904: ee05 bnez a2,3bc0193c + 3bc01906: e81d bnez s0,3bc0193c + 3bc01908: 00012797 auipc a5,0x12 + 3bc0190c: e187b783 ld a5,-488(a5) # 3bc13720 + 3bc01910: 00012717 auipc a4,0x12 + 3bc01914: ed872703 lw a4,-296(a4) # 3bc137e8 + 3bc01918: 00012517 auipc a0,0x12 + 3bc0191c: e3053503 ld a0,-464(a0) # 3bc13748 + 3bc01920: cf98 sw a4,24(a5) + 3bc01922: 7118 ld a4,32(a0) + 3bc01924: 7402 ld s0,32(sp) + 3bc01926: 70a2 ld ra,40(sp) + 3bc01928: 64e2 ld s1,24(sp) + 3bc0192a: 6942 ld s2,16(sp) + 3bc0192c: 69a2 ld s3,8(sp) + 3bc0192e: 6a02 ld s4,0(sp) + 3bc01930: 7318 ld a4,32(a4) + 3bc01932: eb8c sd a1,16(a5) + 3bc01934: cfcc sw a1,28(a5) + 3bc01936: 85be mv a1,a5 + 3bc01938: 6145 addi sp,sp,48 + 3bc0193a: 8702 jr a4 + 3bc0193c: 0007c903 lbu s2,0(a5) + 3bc01940: 4501 li a0,0 + 3bc01942: 5d3020ef jal ra,3bc04714 + 3bc01946: 4789 li a5,2 + 3bc01948: 89aa mv s3,a0 + 3bc0194a: 0ef90763 beq s2,a5,3bc01a38 + 3bc0194e: 0327e363 bltu a5,s2,3bc01974 + 3bc01952: 0c091863 bnez s2,3bc01a22 + 3bc01956: 000a3583 ld a1,0(s4) + 3bc0195a: ff84861b addiw a2,s1,-8 + 3bc0195e: 00012517 auipc a0,0x12 + 3bc01962: df253503 ld a0,-526(a0) # 3bc13750 + 3bc01966: 7c06360b extu a2,a2,31,0 + 3bc0196a: 05a1 addi a1,a1,8 + 3bc0196c: 9522 add a0,a0,s0 + 3bc0196e: 90cff0ef jal ra,3bc00a7a + 3bc01972: a021 j 3bc0197a + 3bc01974: 478d li a5,3 + 3bc01976: 0ef90163 beq s2,a5,3bc01a58 + 3bc0197a: 0000a417 auipc s0,0xa + 3bc0197e: 02640413 addi s0,s0,38 # 3bc0b9a0 + 3bc01982: 6008 ld a0,0(s0) + 3bc01984: 4641 li a2,16 + 3bc01986: 4581 li a1,0 + 3bc01988: 898ff0ef jal ra,3bc00a20 + 3bc0198c: 601c ld a5,0(s0) + 3bc0198e: 00012617 auipc a2,0x12 + 3bc01992: e7660613 addi a2,a2,-394 # 3bc13804 + 3bc01996: 00064703 lbu a4,0(a2) + 3bc0199a: 0089951b slliw a0,s3,0x8 + 3bc0199e: 00012697 auipc a3,0x12 + 3bc019a2: e426a683 lw a3,-446(a3) # 3bc137e0 + 3bc019a6: 0089d99b srliw s3,s3,0x8 + 3bc019aa: 01356533 or a0,a0,s3 + 3bc019ae: 00012497 auipc s1,0x12 + 3bc019b2: d6a48493 addi s1,s1,-662 # 3bc13718 + 3bc019b6: 9006968b revw a3,a3 + 3bc019ba: 00a79023 sh a0,0(a5) + 3bc019be: 00a79123 sh a0,2(a5) + 3bc019c2: c794 sw a3,8(a5) + 3bc019c4: 6088 ld a0,0(s1) + 3bc019c6: 00012697 auipc a3,0x12 + 3bc019ca: e1e6a683 lw a3,-482(a3) # 3bc137e4 + 3bc019ce: 00e783a3 sb a4,7(a5) + 3bc019d2: 9006968b revw a3,a3 + 3bc019d6: 2705 addiw a4,a4,1 + 3bc019d8: 01278323 sb s2,6(a5) + 3bc019dc: 00079223 sh zero,4(a5) + 3bc019e0: c7d4 sw a3,12(a5) + 3bc019e2: 00e60023 sb a4,0(a2) + 3bc019e6: 4581 li a1,0 + 3bc019e8: 04000613 li a2,64 + 3bc019ec: 834ff0ef jal ra,3bc00a20 + 3bc019f0: 608c ld a1,0(s1) + 3bc019f2: 47c1 li a5,16 + 3bc019f4: 00012517 auipc a0,0x12 + 3bc019f8: d4c53503 ld a0,-692(a0) # 3bc13740 + 3bc019fc: cd9c sw a5,24(a1) + 3bc019fe: 601c ld a5,0(s0) + 3bc01a00: 7402 ld s0,32(sp) + 3bc01a02: 70a2 ld ra,40(sp) + 3bc01a04: e99c sd a5,16(a1) + 3bc01a06: cddc sw a5,28(a1) + 3bc01a08: 00000797 auipc a5,0x0 + 3bc01a0c: 15c78793 addi a5,a5,348 # 3bc01b64 + 3bc01a10: f59c sd a5,40(a1) + 3bc01a12: 711c ld a5,32(a0) + 3bc01a14: 64e2 ld s1,24(sp) + 3bc01a16: 6942 ld s2,16(sp) + 3bc01a18: 69a2 ld s3,8(sp) + 3bc01a1a: 6a02 ld s4,0(sp) + 3bc01a1c: 739c ld a5,32(a5) + 3bc01a1e: 6145 addi sp,sp,48 + 3bc01a20: 8782 jr a5 + 3bc01a22: 0e0007b7 lui a5,0xe000 + 3bc01a26: 0791 addi a5,a5,4 + 3bc01a28: f4f419e3 bne s0,a5,3bc0197a + 3bc01a2c: 000a3583 ld a1,0(s4) + 3bc01a30: 4611 li a2,4 + 3bc01a32: 8522 mv a0,s0 + 3bc01a34: 05a1 addi a1,a1,8 + 3bc01a36: bf25 j 3bc0196e + 3bc01a38: 00009517 auipc a0,0x9 + 3bc01a3c: 0b050513 addi a0,a0,176 # 3bc0aae8 <__func__.1+0x40> + 3bc01a40: 919fe0ef jal ra,3bc00358 + 3bc01a44: 00012797 auipc a5,0x12 + 3bc01a48: dc078023 sb zero,-576(a5) # 3bc13804 + 3bc01a4c: 4785 li a5,1 + 3bc01a4e: 00012717 auipc a4,0x12 + 3bc01a52: daf70c23 sb a5,-584(a4) # 3bc13806 + 3bc01a56: b715 j 3bc0197a + 3bc01a58: 000a3583 ld a1,0(s4) + 3bc01a5c: ff84861b addiw a2,s1,-8 + 3bc01a60: 4501 li a0,0 + 3bc01a62: 05a1 addi a1,a1,8 + 3bc01a64: 4b1020ef jal ra,3bc04714 + 3bc01a68: 842a mv s0,a0 + 3bc01a6a: 00009517 auipc a0,0x9 + 3bc01a6e: 09650513 addi a0,a0,150 # 3bc0ab00 <__func__.1+0x58> + 3bc01a72: 8e7fe0ef jal ra,3bc00358 + 3bc01a76: 67b1 lui a5,0xc + 3bc01a78: 2401 sext.w s0,s0 + 3bc01a7a: 28378793 addi a5,a5,643 # c283 <__BSS_SIZE__+0x6673> + 3bc01a7e: 02f41a63 bne s0,a5,3bc01ab2 + 3bc01a82: 00012797 auipc a5,0x12 + 3bc01a86: d8078123 sb zero,-638(a5) # 3bc13804 + 3bc01a8a: 00012797 auipc a5,0x12 + 3bc01a8e: d7e78793 addi a5,a5,-642 # 3bc13808 + 3bc01a92: 4705 li a4,1 + 3bc01a94: 00e78023 sb a4,0(a5) + 3bc01a98: 0e000737 lui a4,0xe000 + 3bc01a9c: 00072223 sw zero,4(a4) # e000004 + 3bc01aa0: 0007c583 lbu a1,0(a5) + 3bc01aa4: 00009517 auipc a0,0x9 + 3bc01aa8: 06450513 addi a0,a0,100 # 3bc0ab08 <__func__.1+0x60> + 3bc01aac: 8adfe0ef jal ra,3bc00358 + 3bc01ab0: b5e9 j 3bc0197a + 3bc01ab2: 00012797 auipc a5,0x12 + 3bc01ab6: d4078b23 sb zero,-682(a5) # 3bc13808 + 3bc01aba: 0e0007b7 lui a5,0xe000 + 3bc01abe: 0007a223 sw zero,4(a5) # e000004 + 3bc01ac2: 00009517 auipc a0,0x9 + 3bc01ac6: 05e50513 addi a0,a0,94 # 3bc0ab20 <__func__.1+0x78> + 3bc01aca: 88ffe0ef jal ra,3bc00358 + 3bc01ace: 00009517 auipc a0,0x9 + 3bc01ad2: 07250513 addi a0,a0,114 # 3bc0ab40 <__func__.1+0x98> + 3bc01ad6: 883fe0ef jal ra,3bc00358 + 3bc01ada: b545 j 3bc0197a + 3bc01adc: 8082 ret + +000000003bc01ade : + 3bc01ade: 7179 addi sp,sp,-48 + 3bc01ae0: f406 sd ra,40(sp) + 3bc01ae2: f022 sd s0,32(sp) + 3bc01ae4: ec26 sd s1,24(sp) + 3bc01ae6: e84a sd s2,16(sp) + 3bc01ae8: e44e sd s3,8(sp) + 3bc01aea: 4789 li a5,2 + 3bc01aec: 02f50263 beq a0,a5,3bc01b10 + 3bc01af0: 478d li a5,3 + 3bc01af2: 54fd li s1,-1 + 3bc01af4: 0000a417 auipc s0,0xa + 3bc01af8: d7440413 addi s0,s0,-652 # 3bc0b868 + 3bc01afc: 00f50e63 beq a0,a5,3bc01b18 + 3bc01b00: 70a2 ld ra,40(sp) + 3bc01b02: 7402 ld s0,32(sp) + 3bc01b04: 6942 ld s2,16(sp) + 3bc01b06: 69a2 ld s3,8(sp) + 3bc01b08: 8526 mv a0,s1 + 3bc01b0a: 64e2 ld s1,24(sp) + 3bc01b0c: 6145 addi sp,sp,48 + 3bc01b0e: 8082 ret + 3bc01b10: 0000a417 auipc s0,0xa + 3bc01b14: d0840413 addi s0,s0,-760 # 3bc0b818 + 3bc01b18: 892e mv s2,a1 + 3bc01b1a: 7884458b ldia a1,(s0),8,0 + 3bc01b1e: 4481 li s1,0 + 3bc01b20: d1e5 beqz a1,3bc01b00 + 3bc01b22: 0005c983 lbu s3,0(a1) + 3bc01b26: 00990533 add a0,s2,s1 + 3bc01b2a: 864e mv a2,s3 + 3bc01b2c: f4ffe0ef jal ra,3bc00a7a + 3bc01b30: 7884458b ldia a1,(s0),8,0 + 3bc01b34: 009984bb addw s1,s3,s1 + 3bc01b38: b7e5 j 3bc01b20 + +000000003bc01b3a : + 3bc01b3a: 5d98 lw a4,56(a1) + 3bc01b3c: 57ed li a5,-5 + 3bc01b3e: 02f71263 bne a4,a5,3bc01b62 + 3bc01b42: 1141 addi sp,sp,-16 + 3bc01b44: 00009517 auipc a0,0x9 + 3bc01b48: 00c50513 addi a0,a0,12 # 3bc0ab50 <__func__.1+0xa8> + 3bc01b4c: e406 sd ra,8(sp) + 3bc01b4e: 80bfe0ef jal ra,3bc00358 + 3bc01b52: 60a2 ld ra,8(sp) + 3bc01b54: 4785 li a5,1 + 3bc01b56: 00012717 auipc a4,0x12 + 3bc01b5a: caf709a3 sb a5,-845(a4) # 3bc13809 + 3bc01b5e: 0141 addi sp,sp,16 + 3bc01b60: 8082 ret + 3bc01b62: 8082 ret + +000000003bc01b64 : + 3bc01b64: 5d98 lw a4,56(a1) + 3bc01b66: fc600793 li a5,-58 + 3bc01b6a: 04f70463 beq a4,a5,3bc01bb2 + 3bc01b6e: 1141 addi sp,sp,-16 + 3bc01b70: e022 sd s0,0(sp) + 3bc01b72: 00012417 auipc s0,0x12 + 3bc01b76: bb640413 addi s0,s0,-1098 # 3bc13728 + 3bc01b7a: 6008 ld a0,0(s0) + 3bc01b7c: 4581 li a1,0 + 3bc01b7e: 4621 li a2,8 + 3bc01b80: e406 sd ra,8(sp) + 3bc01b82: e9ffe0ef jal ra,3bc00a20 + 3bc01b86: 00012597 auipc a1,0x12 + 3bc01b8a: b9a5b583 ld a1,-1126(a1) # 3bc13720 + 3bc01b8e: 00012797 auipc a5,0x12 + 3bc01b92: c5a7a783 lw a5,-934(a5) # 3bc137e8 + 3bc01b96: cd9c sw a5,24(a1) + 3bc01b98: 601c ld a5,0(s0) + 3bc01b9a: 00012517 auipc a0,0x12 + 3bc01b9e: bae53503 ld a0,-1106(a0) # 3bc13748 + 3bc01ba2: 6402 ld s0,0(sp) + 3bc01ba4: e99c sd a5,16(a1) + 3bc01ba6: cddc sw a5,28(a1) + 3bc01ba8: 711c ld a5,32(a0) + 3bc01baa: 60a2 ld ra,8(sp) + 3bc01bac: 739c ld a5,32(a5) + 3bc01bae: 0141 addi sp,sp,16 + 3bc01bb0: 8782 jr a5 + 3bc01bb2: 8082 ret + +000000003bc01bb4 : + 3bc01bb4: 7159 addi sp,sp,-112 + 3bc01bb6: e4ce sd s3,72(sp) + 3bc01bb8: fc56 sd s5,56(sp) + 3bc01bba: 00012997 auipc s3,0x12 + 3bc01bbe: b7698993 addi s3,s3,-1162 # 3bc13730 + 3bc01bc2: 00012a97 auipc s5,0x12 + 3bc01bc6: b76a8a93 addi s5,s5,-1162 # 3bc13738 + 3bc01bca: eca6 sd s1,88(sp) + 3bc01bcc: 000ab603 ld a2,0(s5) + 3bc01bd0: 84aa mv s1,a0 + 3bc01bd2: 0009b503 ld a0,0(s3) + 3bc01bd6: e0d2 sd s4,64(sp) + 3bc01bd8: f486 sd ra,104(sp) + 3bc01bda: f0a2 sd s0,96(sp) + 3bc01bdc: e8ca sd s2,80(sp) + 3bc01bde: f85a sd s6,48(sp) + 3bc01be0: f45e sd s7,40(sp) + 3bc01be2: f062 sd s8,32(sp) + 3bc01be4: ec66 sd s9,24(sp) + 3bc01be6: 0204a803 lw a6,32(s1) + 3bc01bea: 0015c703 lbu a4,1(a1) + 3bc01bee: 0005c683 lbu a3,0(a1) + 3bc01bf2: 0065da03 lhu s4,6(a1) + 3bc01bf6: 0025d783 lhu a5,2(a1) + 3bc01bfa: 00000597 auipc a1,0x0 + 3bc01bfe: f4058593 addi a1,a1,-192 # 3bc01b3a + 3bc01c02: f60c sd a1,40(a2) + 3bc01c04: ea08 sd a0,16(a2) + 3bc01c06: ce48 sw a0,28(a2) + 3bc01c08: 4589 li a1,2 + 3bc01c0a: 02b80763 beq a6,a1,3bc01c38 + 3bc01c0e: 458d li a1,3 + 3bc01c10: 4905 li s2,1 + 3bc01c12: 06b81063 bne a6,a1,3bc01c72 + 3bc01c16: 0000ab17 auipc s6,0xa + 3bc01c1a: bbab0b13 addi s6,s6,-1094 # 3bc0b7d0 + 3bc01c1e: 0000ab97 auipc s7,0xa + 3bc01c22: ba2b8b93 addi s7,s7,-1118 # 3bc0b7c0 + 3bc01c26: 0606f593 andi a1,a3,96 + 3bc01c2a: c185 beqz a1,3bc01c4a + 3bc01c2c: 02000693 li a3,32 + 3bc01c30: 36d58463 beq a1,a3,3bc01f98 + 3bc01c34: 4901 li s2,0 + 3bc01c36: a835 j 3bc01c72 + 3bc01c38: 0000ab17 auipc s6,0xa + 3bc01c3c: b78b0b13 addi s6,s6,-1160 # 3bc0b7b0 + 3bc01c40: 0000ab97 auipc s7,0xa + 3bc01c44: b60b8b93 addi s7,s7,-1184 # 3bc0b7a0 + 3bc01c48: bff9 j 3bc01c26 + 3bc01c4a: 4621 li a2,8 + 3bc01c4c: 32c70d63 beq a4,a2,3bc01f86 + 3bc01c50: 4625 li a2,9 + 3bc01c52: 24c70a63 beq a4,a2,3bc01ea6 + 3bc01c56: 4619 li a2,6 + 3bc01c58: 597d li s2,-1 + 3bc01c5a: 00c71c63 bne a4,a2,3bc01c72 + 3bc01c5e: 8abd andi a3,a3,15 + 3bc01c60: 4705 li a4,1 + 3bc01c62: 02e69663 bne a3,a4,3bc01c8e + 3bc01c66: 00009517 auipc a0,0x9 + 3bc01c6a: f0250513 addi a0,a0,-254 # 3bc0ab68 <__func__.1+0xc0> + 3bc01c6e: eeafe0ef jal ra,3bc00358 + 3bc01c72: 70a6 ld ra,104(sp) + 3bc01c74: 7406 ld s0,96(sp) + 3bc01c76: 64e6 ld s1,88(sp) + 3bc01c78: 69a6 ld s3,72(sp) + 3bc01c7a: 6a06 ld s4,64(sp) + 3bc01c7c: 7ae2 ld s5,56(sp) + 3bc01c7e: 7b42 ld s6,48(sp) + 3bc01c80: 7ba2 ld s7,40(sp) + 3bc01c82: 7c02 ld s8,32(sp) + 3bc01c84: 6ce2 ld s9,24(sp) + 3bc01c86: 854a mv a0,s2 + 3bc01c88: 6946 ld s2,80(sp) + 3bc01c8a: 6165 addi sp,sp,112 + 3bc01c8c: 8082 ret + 3bc01c8e: f2dd bnez a3,3bc01c34 + 3bc01c90: 0087d71b srliw a4,a5,0x8 + 3bc01c94: 377d addiw a4,a4,-1 + 3bc01c96: 3c07360b extu a2,a4,15,0 + 3bc01c9a: 46b9 li a3,14 + 3bc01c9c: 0ac6e663 bltu a3,a2,3bc01d48 + 3bc01ca0: 00009697 auipc a3,0x9 + 3bc01ca4: f9c68693 addi a3,a3,-100 # 3bc0ac3c <__func__.1+0x194> + 3bc01ca8: 44c6c70b lrw a4,a3,a2,2 + 3bc01cac: 9736 add a4,a4,a3 + 3bc01cae: 8702 jr a4 + 3bc01cb0: 0000a417 auipc s0,0xa + 3bc01cb4: d5840413 addi s0,s0,-680 # 3bc0ba08 + 3bc01cb8: 00045583 lhu a1,0(s0) + 3bc01cbc: cd89 beqz a1,3bc01cd6 + 3bc01cbe: 00009517 auipc a0,0x9 + 3bc01cc2: eda50513 addi a0,a0,-294 # 3bc0ab98 <__func__.1+0xf0> + 3bc01cc6: e92fe0ef jal ra,3bc00358 + 3bc01cca: 00045783 lhu a5,0(s0) + 3bc01cce: 0000a717 auipc a4,0xa + 3bc01cd2: bef71923 sh a5,-1038(a4) # 3bc0b8c0 + 3bc01cd6: 0009b503 ld a0,0(s3) + 3bc01cda: 4649 li a2,18 + 3bc01cdc: 0000a597 auipc a1,0xa + 3bc01ce0: bdc58593 addi a1,a1,-1060 # 3bc0b8b8 + 3bc01ce4: df7fe0ef jal ra,3bc00ada + 3bc01ce8: 4449 li s0,18 + 3bc01cea: 4905 li s2,1 + 3bc01cec: 6c88 ld a0,24(s1) + 3bc01cee: 014427b3 slt a5,s0,s4 + 3bc01cf2: 40fa140b mveqz s0,s4,a5 + 3bc01cf6: 711c ld a5,32(a0) + 3bc01cf8: 000ab583 ld a1,0(s5) + 3bc01cfc: 739c ld a5,32(a5) + 3bc01cfe: cd80 sw s0,24(a1) + 3bc01d00: 9782 jalr a5 + 3bc01d02: f20909e3 beqz s2,3bc01c34 + 3bc01d06: c00017b7 lui a5,0xc0001 + 3bc01d0a: 03000737 lui a4,0x3000 + 3bc01d0e: 0795 addi a5,a5,5 + 3bc01d10: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc01d14: b705 j 3bc01c34 + 3bc01d16: 0ff7f793 andi a5,a5,255 + 3bc01d1a: 4709 li a4,2 + 3bc01d1c: 02e78863 beq a5,a4,3bc01d4c + 3bc01d20: 02f76163 bltu a4,a5,3bc01d42 + 3bc01d24: 00012597 auipc a1,0x12 + 3bc01d28: a8458593 addi a1,a1,-1404 # 3bc137a8 + 3bc01d2c: e789 bnez a5,3bc01d36 + 3bc01d2e: 0000a597 auipc a1,0xa + 3bc01d32: c5a58593 addi a1,a1,-934 # 3bc0b988 + 3bc01d36: 0005c403 lbu s0,0(a1) + 3bc01d3a: 8622 mv a2,s0 + 3bc01d3c: 0009b503 ld a0,0(s3) + 3bc01d40: a215 j 3bc01e64 + 3bc01d42: 470d li a4,3 + 3bc01d44: 00e78963 beq a5,a4,3bc01d56 + 3bc01d48: 597d li s2,-1 + 3bc01d4a: b725 j 3bc01c72 + 3bc01d4c: 00012597 auipc a1,0x12 + 3bc01d50: a0c58593 addi a1,a1,-1524 # 3bc13758 + 3bc01d54: b7cd j 3bc01d36 + 3bc01d56: ea1fe0ef jal ra,3bc00bf6 + 3bc01d5a: 00009597 auipc a1,0x9 + 3bc01d5e: ea658593 addi a1,a1,-346 # 3bc0ac00 <__func__.1+0x158> + 3bc01d62: e55d bnez a0,3bc01e10 + 3bc01d64: 00012b17 auipc s6,0x12 + 3bc01d68: aa6b0b13 addi s6,s6,-1370 # 3bc1380a + 3bc01d6c: 000b4903 lbu s2,0(s6) + 3bc01d70: 08091263 bnez s2,3bc01df4 + 3bc01d74: 4641 li a2,16 + 3bc01d76: 4581 li a1,0 + 3bc01d78: 00012517 auipc a0,0x12 + 3bc01d7c: a0050513 addi a0,a0,-1536 # 3bc13778 + 3bc01d80: 03050bb7 lui s7,0x3050 + 3bc01d84: c9dfe0ef jal ra,3bc00a20 + 3bc01d88: 4401 li s0,0 + 3bc01d8a: 104b8b93 addi s7,s7,260 # 3050104 <__BSS_SIZE__+0x304a4f4> + 3bc01d8e: 00009c97 auipc s9,0x9 + 3bc01d92: e1ac8c93 addi s9,s9,-486 # 3bc0aba8 <__func__.1+0x100> + 3bc01d96: 4c11 li s8,4 + 3bc01d98: 448bc60b lrw a2,s7,s0,2 + 3bc01d9c: 0004059b sext.w a1,s0 + 3bc01da0: 8566 mv a0,s9 + 3bc01da2: 2601 sext.w a2,a2 + 3bc01da4: 4481560b srw a2,sp,s0,2 + 3bc01da8: db0fe0ef jal ra,3bc00358 + 3bc01dac: 4481478b lrw a5,sp,s0,2 + 3bc01db0: c391 beqz a5,3bc01db4 + 3bc01db2: 4905 li s2,1 + 3bc01db4: 0405 addi s0,s0,1 + 3bc01db6: ff8411e3 bne s0,s8,3bc01d98 + 3bc01dba: 06090663 beqz s2,3bc01e26 + 3bc01dbe: 858a mv a1,sp + 3bc01dc0: 4641 li a2,16 + 3bc01dc2: 4501 li a0,0 + 3bc01dc4: 151020ef jal ra,3bc04714 + 3bc01dc8: 0005041b sext.w s0,a0 + 3bc01dcc: 85a2 mv a1,s0 + 3bc01dce: 00009517 auipc a0,0x9 + 3bc01dd2: df250513 addi a0,a0,-526 # 3bc0abc0 <__func__.1+0x118> + 3bc01dd6: d82fe0ef jal ra,3bc00358 + 3bc01dda: 4681 li a3,0 + 3bc01ddc: 4641 li a2,16 + 3bc01dde: 7c04358b extu a1,s0,31,0 + 3bc01de2: 00012517 auipc a0,0x12 + 3bc01de6: 99650513 addi a0,a0,-1642 # 3bc13778 + 3bc01dea: bbdfe0ef jal ra,3bc009a6 + 3bc01dee: 4785 li a5,1 + 3bc01df0: 00fb0023 sb a5,0(s6) + 3bc01df4: 00012597 auipc a1,0x12 + 3bc01df8: 98458593 addi a1,a1,-1660 # 3bc13778 + 3bc01dfc: 00009517 auipc a0,0x9 + 3bc01e00: df450513 addi a0,a0,-524 # 3bc0abf0 <__func__.1+0x148> + 3bc01e04: d54fe0ef jal ra,3bc00358 + 3bc01e08: 00012597 auipc a1,0x12 + 3bc01e0c: 97058593 addi a1,a1,-1680 # 3bc13778 + 3bc01e10: 00012517 auipc a0,0x12 + 3bc01e14: 97850513 addi a0,a0,-1672 # 3bc13788 + 3bc01e18: a41ff0ef jal ra,3bc01858 + 3bc01e1c: 00012597 auipc a1,0x12 + 3bc01e20: 96c58593 addi a1,a1,-1684 # 3bc13788 + 3bc01e24: bf09 j 3bc01d36 + 3bc01e26: 00012517 auipc a0,0x12 + 3bc01e2a: 9c652503 lw a0,-1594(a0) # 3bc137ec + 3bc01e2e: bb4fe0ef jal ra,3bc001e2 + 3bc01e32: 0005041b sext.w s0,a0 + 3bc01e36: 85a2 mv a1,s0 + 3bc01e38: 00009517 auipc a0,0x9 + 3bc01e3c: da050513 addi a0,a0,-608 # 3bc0abd8 <__func__.1+0x130> + 3bc01e40: bf59 j 3bc01dd6 + 3bc01e42: 0000a597 auipc a1,0xa + 3bc01e46: 99e58593 addi a1,a1,-1634 # 3bc0b7e0 + 3bc01e4a: 4615 li a2,5 + 3bc01e4c: 0025d403 lhu s0,2(a1) + 3bc01e50: c8bfe0ef jal ra,3bc00ada + 3bc01e54: 0009b503 ld a0,0(s3) + 3bc01e58: 461d li a2,7 + 3bc01e5a: 0000a597 auipc a1,0xa + 3bc01e5e: 99658593 addi a1,a1,-1642 # 3bc0b7f0 + 3bc01e62: 0515 addi a0,a0,5 + 3bc01e64: c77fe0ef jal ra,3bc00ada + 3bc01e68: dc0406e3 beqz s0,3bc01c34 + 3bc01e6c: a809 j 3bc01e7e + 3bc01e6e: 4629 li a2,10 + 3bc01e70: 0000a597 auipc a1,0xa + 3bc01e74: b2058593 addi a1,a1,-1248 # 3bc0b990 + 3bc01e78: c63fe0ef jal ra,3bc00ada + 3bc01e7c: 4429 li s0,10 + 3bc01e7e: 4901 li s2,0 + 3bc01e80: b5b5 j 3bc01cec + 3bc01e82: 00950593 addi a1,a0,9 + 3bc01e86: 8542 mv a0,a6 + 3bc01e88: c57ff0ef jal ra,3bc01ade + 3bc01e8c: 2525 addiw a0,a0,9 + 3bc01e8e: 3c05350b extu a0,a0,15,0 + 3bc01e92: 0000a597 auipc a1,0xa + 3bc01e96: 8c658593 addi a1,a1,-1850 # 3bc0b758 + 3bc01e9a: 0005041b sext.w s0,a0 + 3bc01e9e: 00a59123 sh a0,2(a1) + 3bc01ea2: 4625 li a2,9 + 3bc01ea4: bd61 j 3bc01d3c + 3bc01ea6: 4705 li a4,1 + 3bc01ea8: 597d li s2,-1 + 3bc01eaa: dcf764e3 bltu a4,a5,3bc01c72 + 3bc01eae: e385 bnez a5,3bc01ece + 3bc01eb0: 00012797 auipc a5,0x12 + 3bc01eb4: 94078ba3 sb zero,-1705(a5) # 3bc13807 + 3bc01eb8: 6080 ld s0,0(s1) + 3bc01eba: d6848de3 beq s1,s0,3bc01c34 + 3bc01ebe: 6c1c ld a5,24(s0) + 3bc01ec0: c789 beqz a5,3bc01eca + 3bc01ec2: 701c ld a5,32(s0) + 3bc01ec4: 8522 mv a0,s0 + 3bc01ec6: 679c ld a5,8(a5) + 3bc01ec8: 9782 jalr a5 + 3bc01eca: 6000 ld s0,0(s0) + 3bc01ecc: b7fd j 3bc01eba + 3bc01ece: 00012797 auipc a5,0x12 + 3bc01ed2: 93978793 addi a5,a5,-1735 # 3bc13807 + 3bc01ed6: 0007c683 lbu a3,0(a5) + 3bc01eda: d4e68de3 beq a3,a4,3bc01c34 + 3bc01ede: 00e78023 sb a4,0(a5) + 3bc01ee2: 6080 ld s0,0(s1) + 3bc01ee4: 00009917 auipc s2,0x9 + 3bc01ee8: d2c90913 addi s2,s2,-724 # 3bc0ac10 <__func__.1+0x168> + 3bc01eec: 00848d63 beq s1,s0,3bc01f06 + 3bc01ef0: 6c08 ld a0,24(s0) + 3bc01ef2: c141 beqz a0,3bc01f72 + 3bc01ef4: 85ca mv a1,s2 + 3bc01ef6: c57fe0ef jal ra,3bc00b4c + 3bc01efa: ed25 bnez a0,3bc01f72 + 3bc01efc: 701c ld a5,32(s0) + 3bc01efe: 85de mv a1,s7 + 3bc01f00: 8522 mv a0,s0 + 3bc01f02: 639c ld a5,0(a5) + 3bc01f04: 9782 jalr a5 + 3bc01f06: 6080 ld s0,0(s1) + 3bc01f08: 00009917 auipc s2,0x9 + 3bc01f0c: d1890913 addi s2,s2,-744 # 3bc0ac20 <__func__.1+0x178> + 3bc01f10: 00848d63 beq s1,s0,3bc01f2a + 3bc01f14: 6c08 ld a0,24(s0) + 3bc01f16: c125 beqz a0,3bc01f76 + 3bc01f18: 85ca mv a1,s2 + 3bc01f1a: c33fe0ef jal ra,3bc00b4c + 3bc01f1e: ed21 bnez a0,3bc01f76 + 3bc01f20: 701c ld a5,32(s0) + 3bc01f22: 85da mv a1,s6 + 3bc01f24: 8522 mv a0,s0 + 3bc01f26: 639c ld a5,0(a5) + 3bc01f28: 9782 jalr a5 + 3bc01f2a: 6080 ld s0,0(s1) + 3bc01f2c: 00009917 auipc s2,0x9 + 3bc01f30: d0490913 addi s2,s2,-764 # 3bc0ac30 <__func__.1+0x188> + 3bc01f34: 02848063 beq s1,s0,3bc01f54 + 3bc01f38: 6c08 ld a0,24(s0) + 3bc01f3a: c121 beqz a0,3bc01f7a + 3bc01f3c: 85ca mv a1,s2 + 3bc01f3e: c0ffe0ef jal ra,3bc00b4c + 3bc01f42: ed05 bnez a0,3bc01f7a + 3bc01f44: 701c ld a5,32(s0) + 3bc01f46: 0000a597 auipc a1,0xa + 3bc01f4a: 86258593 addi a1,a1,-1950 # 3bc0b7a8 + 3bc01f4e: 8522 mv a0,s0 + 3bc01f50: 639c ld a5,0(a5) + 3bc01f52: 9782 jalr a5 + 3bc01f54: 689c ld a5,16(s1) + 3bc01f56: 0000a717 auipc a4,0xa + 3bc01f5a: 80974703 lbu a4,-2039(a4) # 3bc0b75f + 3bc01f5e: 04077713 andi a4,a4,64 + 3bc01f62: 6b9c ld a5,16(a5) + 3bc01f64: cf09 beqz a4,3bc01f7e + 3bc01f66: 4585 li a1,1 + 3bc01f68: cc0786e3 beqz a5,3bc01c34 + 3bc01f6c: 8526 mv a0,s1 + 3bc01f6e: 9782 jalr a5 + 3bc01f70: b1d1 j 3bc01c34 + 3bc01f72: 6000 ld s0,0(s0) + 3bc01f74: bfa5 j 3bc01eec + 3bc01f76: 6000 ld s0,0(s0) + 3bc01f78: bf61 j 3bc01f10 + 3bc01f7a: 6000 ld s0,0(s0) + 3bc01f7c: bf65 j 3bc01f34 + 3bc01f7e: ca078be3 beqz a5,3bc01c34 + 3bc01f82: 4581 li a1,0 + 3bc01f84: b7e5 j 3bc01f6c + 3bc01f86: 4605 li a2,1 + 3bc01f88: 00012597 auipc a1,0x12 + 3bc01f8c: 87f58593 addi a1,a1,-1921 # 3bc13807 + 3bc01f90: b4bfe0ef jal ra,3bc00ada + 3bc01f94: 4405 li s0,1 + 3bc01f96: b5e5 j 3bc01e7e + 3bc01f98: 02100693 li a3,33 + 3bc01f9c: 04d70263 beq a4,a3,3bc01fe0 + 3bc01fa0: 02200693 li a3,34 + 3bc01fa4: 02d70263 beq a4,a3,3bc01fc8 + 3bc01fa8: 4901 li s2,0 + 3bc01faa: ccb714e3 bne a4,a1,3bc01c72 + 3bc01fae: fffff797 auipc a5,0xfffff + 3bc01fb2: 7e478793 addi a5,a5,2020 # 3bc01792 + 3bc01fb6: 000a041b sext.w s0,s4 + 3bc01fba: f61c sd a5,40(a2) + 3bc01fbc: 4785 li a5,1 + 3bc01fbe: 00012717 auipc a4,0x12 + 3bc01fc2: 84f703a3 sb a5,-1977(a4) # 3bc13805 + 3bc01fc6: b54d j 3bc01e68 + 3bc01fc8: 00011717 auipc a4,0x11 + 3bc01fcc: 74073703 ld a4,1856(a4) # 3bc13708 + 3bc01fd0: 00f71623 sh a5,12(a4) + 3bc01fd4: 4785 li a5,1 + 3bc01fd6: 00012717 auipc a4,0x12 + 3bc01fda: 82f707a3 sb a5,-2001(a4) # 3bc13805 + 3bc01fde: b999 j 3bc01c34 + 3bc01fe0: 00011597 auipc a1,0x11 + 3bc01fe4: 7285b583 ld a1,1832(a1) # 3bc13708 + 3bc01fe8: 8652 mv a2,s4 + 3bc01fea: 0591 addi a1,a1,4 + 3bc01fec: 000a041b sext.w s0,s4 + 3bc01ff0: aebfe0ef jal ra,3bc00ada + 3bc01ff4: b7e1 j 3bc01fbc + +000000003bc01ff6 : + 3bc01ff6: 8082 ret + +000000003bc01ff8 : + 3bc01ff8: 00011797 auipc a5,0x11 + 3bc01ffc: c8878793 addi a5,a5,-888 # 3bc12c80 + 3bc02000: 00009717 auipc a4,0x9 + 3bc02004: 7ef73423 sd a5,2024(a4) # 3bc0b7e8 + 3bc02008: 00011797 auipc a5,0x11 + 3bc0200c: ff878793 addi a5,a5,-8 # 3bc13000 + 3bc02010: 0000a717 auipc a4,0xa + 3bc02014: 80f73023 sd a5,-2048(a4) # 3bc0b810 + 3bc02018: 00011797 auipc a5,0x11 + 3bc0201c: e6878793 addi a5,a5,-408 # 3bc12e80 + 3bc02020: 00009717 auipc a4,0x9 + 3bc02024: 7cf73c23 sd a5,2008(a4) # 3bc0b7f8 + 3bc02028: 00011797 auipc a5,0x11 + 3bc0202c: ed878793 addi a5,a5,-296 # 3bc12f00 + 3bc02030: 00009717 auipc a4,0x9 + 3bc02034: 7cf73823 sd a5,2000(a4) # 3bc0b800 + 3bc02038: 00011797 auipc a5,0x11 + 3bc0203c: f4878793 addi a5,a5,-184 # 3bc12f80 + 3bc02040: 00009717 auipc a4,0x9 + 3bc02044: 7cf73423 sd a5,1992(a4) # 3bc0b808 + 3bc02048: 00011797 auipc a5,0x11 + 3bc0204c: 1b878793 addi a5,a5,440 # 3bc13200 + 3bc02050: 0000a717 auipc a4,0xa + 3bc02054: 8cf73823 sd a5,-1840(a4) # 3bc0b920 + 3bc02058: 00011797 auipc a5,0x11 + 3bc0205c: 62878793 addi a5,a5,1576 # 3bc13680 + 3bc02060: 0000a717 auipc a4,0xa + 3bc02064: 94f73023 sd a5,-1728(a4) # 3bc0b9a0 + 3bc02068: 00011797 auipc a5,0x11 + 3bc0206c: b9878793 addi a5,a5,-1128 # 3bc12c00 + 3bc02070: 00009717 auipc a4,0x9 + 3bc02074: 6ef73c23 sd a5,1784(a4) # 3bc0b768 + 3bc02078: 00011797 auipc a5,0x11 + 3bc0207c: 64878793 addi a5,a5,1608 # 3bc136c0 + 3bc02080: 0000a717 auipc a4,0xa + 3bc02084: 92f73423 sd a5,-1752(a4) # 3bc0b9a8 + 3bc02088: 00011797 auipc a5,0x11 + 3bc0208c: 1f878793 addi a5,a5,504 # 3bc13280 + 3bc02090: 0000a717 auipc a4,0xa + 3bc02094: 8ef73823 sd a5,-1808(a4) # 3bc0b980 + 3bc02098: 8082 ret + +000000003bc0209a : + 3bc0209a: 1141 addi sp,sp,-16 + 3bc0209c: 00009597 auipc a1,0x9 + 3bc020a0: 74c5b583 ld a1,1868(a1) # 3bc0b7e8 + 3bc020a4: 00009517 auipc a0,0x9 + 3bc020a8: bd450513 addi a0,a0,-1068 # 3bc0ac78 <__func__.1+0x1d0> + 3bc020ac: e406 sd ra,8(sp) + 3bc020ae: aaafe0ef jal ra,3bc00358 + 3bc020b2: 00009597 auipc a1,0x9 + 3bc020b6: 75e5b583 ld a1,1886(a1) # 3bc0b810 + 3bc020ba: 00009517 auipc a0,0x9 + 3bc020be: bd650513 addi a0,a0,-1066 # 3bc0ac90 <__func__.1+0x1e8> + 3bc020c2: a96fe0ef jal ra,3bc00358 + 3bc020c6: 00009597 auipc a1,0x9 + 3bc020ca: 7325b583 ld a1,1842(a1) # 3bc0b7f8 + 3bc020ce: 00009517 auipc a0,0x9 + 3bc020d2: bda50513 addi a0,a0,-1062 # 3bc0aca8 <__func__.1+0x200> + 3bc020d6: a82fe0ef jal ra,3bc00358 + 3bc020da: 00009597 auipc a1,0x9 + 3bc020de: 7265b583 ld a1,1830(a1) # 3bc0b800 + 3bc020e2: 00009517 auipc a0,0x9 + 3bc020e6: bde50513 addi a0,a0,-1058 # 3bc0acc0 <__func__.1+0x218> + 3bc020ea: a6efe0ef jal ra,3bc00358 + 3bc020ee: 00009597 auipc a1,0x9 + 3bc020f2: 71a5b583 ld a1,1818(a1) # 3bc0b808 + 3bc020f6: 00009517 auipc a0,0x9 + 3bc020fa: be250513 addi a0,a0,-1054 # 3bc0acd8 <__func__.1+0x230> + 3bc020fe: a5afe0ef jal ra,3bc00358 + 3bc02102: 0000a597 auipc a1,0xa + 3bc02106: 81e5b583 ld a1,-2018(a1) # 3bc0b920 + 3bc0210a: 00009517 auipc a0,0x9 + 3bc0210e: be650513 addi a0,a0,-1050 # 3bc0acf0 <__func__.1+0x248> + 3bc02112: a46fe0ef jal ra,3bc00358 + 3bc02116: 0000a597 auipc a1,0xa + 3bc0211a: 88a5b583 ld a1,-1910(a1) # 3bc0b9a0 + 3bc0211e: 00009517 auipc a0,0x9 + 3bc02122: bea50513 addi a0,a0,-1046 # 3bc0ad08 <__func__.1+0x260> + 3bc02126: a32fe0ef jal ra,3bc00358 + 3bc0212a: 00009597 auipc a1,0x9 + 3bc0212e: 63e5b583 ld a1,1598(a1) # 3bc0b768 + 3bc02132: 00009517 auipc a0,0x9 + 3bc02136: bee50513 addi a0,a0,-1042 # 3bc0ad20 <__func__.1+0x278> + 3bc0213a: a1efe0ef jal ra,3bc00358 + 3bc0213e: 0000a597 auipc a1,0xa + 3bc02142: 86a5b583 ld a1,-1942(a1) # 3bc0b9a8 + 3bc02146: 00009517 auipc a0,0x9 + 3bc0214a: bf250513 addi a0,a0,-1038 # 3bc0ad38 <__func__.1+0x290> + 3bc0214e: a0afe0ef jal ra,3bc00358 + 3bc02152: 60a2 ld ra,8(sp) + 3bc02154: 0000a597 auipc a1,0xa + 3bc02158: 82c5b583 ld a1,-2004(a1) # 3bc0b980 + 3bc0215c: 00009517 auipc a0,0x9 + 3bc02160: bf450513 addi a0,a0,-1036 # 3bc0ad50 <__func__.1+0x2a8> + 3bc02164: 0141 addi sp,sp,16 + 3bc02166: 9f2fe06f j 3bc00358 + +000000003bc0216a : + 3bc0216a: 4501 li a0,0 + 3bc0216c: 3020106f j 3bc0346e + +000000003bc02170 : + 3bc02170: 7179 addi sp,sp,-48 + 3bc02172: f022 sd s0,32(sp) + 3bc02174: 00009417 auipc s0,0x9 + 3bc02178: 75c40413 addi s0,s0,1884 # 3bc0b8d0 + 3bc0217c: 601c ld a5,0(s0) + 3bc0217e: 00009597 auipc a1,0x9 + 3bc02182: bea58593 addi a1,a1,-1046 # 3bc0ad68 <__func__.1+0x2c0> + 3bc02186: 00011517 auipc a0,0x11 + 3bc0218a: 62250513 addi a0,a0,1570 # 3bc137a8 + 3bc0218e: f406 sd ra,40(sp) + 3bc02190: ec26 sd s1,24(sp) + 3bc02192: e84a sd s2,16(sp) + 3bc02194: 6f84 ld s1,24(a5) + 3bc02196: e44e sd s3,8(sp) + 3bc02198: ec0ff0ef jal ra,3bc01858 + 3bc0219c: 00011517 auipc a0,0x11 + 3bc021a0: 5bc50513 addi a0,a0,1468 # 3bc13758 + 3bc021a4: 00009597 auipc a1,0x9 + 3bc021a8: bcc58593 addi a1,a1,-1076 # 3bc0ad70 <__func__.1+0x2c8> + 3bc021ac: eacff0ef jal ra,3bc01858 + 3bc021b0: 00009517 auipc a0,0x9 + 3bc021b4: 77053503 ld a0,1904(a0) # 3bc0b920 + 3bc021b8: 03f57713 andi a4,a0,63 + 3bc021bc: 87aa mv a5,a0 + 3bc021be: c709 beqz a4,3bc021c8 + 3bc021c0: 04000793 li a5,64 + 3bc021c4: 9f99 subw a5,a5,a4 + 3bc021c6: 97aa add a5,a5,a0 + 3bc021c8: 00009997 auipc s3,0x9 + 3bc021cc: 62098993 addi s3,s3,1568 # 3bc0b7e8 + 3bc021d0: 00011717 auipc a4,0x11 + 3bc021d4: 56f73023 sd a5,1376(a4) # 3bc13730 + 3bc021d8: 0009b783 ld a5,0(s3) + 3bc021dc: 03f7f693 andi a3,a5,63 + 3bc021e0: c689 beqz a3,3bc021ea + 3bc021e2: 04000713 li a4,64 + 3bc021e6: 9f15 subw a4,a4,a3 + 3bc021e8: 97ba add a5,a5,a4 + 3bc021ea: 00009917 auipc s2,0x9 + 3bc021ee: 62690913 addi s2,s2,1574 # 3bc0b810 + 3bc021f2: 00011717 auipc a4,0x11 + 3bc021f6: 50f73f23 sd a5,1310(a4) # 3bc13710 + 3bc021fa: 00093783 ld a5,0(s2) + 3bc021fe: 03f7f693 andi a3,a5,63 + 3bc02202: c689 beqz a3,3bc0220c + 3bc02204: 04000713 li a4,64 + 3bc02208: 9f15 subw a4,a4,a3 + 3bc0220a: 97ba add a5,a5,a4 + 3bc0220c: 08000613 li a2,128 + 3bc02210: 4581 li a1,0 + 3bc02212: 00011717 auipc a4,0x11 + 3bc02216: 50f73b23 sd a5,1302(a4) # 3bc13728 + 3bc0221a: 807fe0ef jal ra,3bc00a20 + 3bc0221e: 0009b503 ld a0,0(s3) + 3bc02222: 20000613 li a2,512 + 3bc02226: 4581 li a1,0 + 3bc02228: ff8fe0ef jal ra,3bc00a20 + 3bc0222c: 00093503 ld a0,0(s2) + 3bc02230: 20000613 li a2,512 + 3bc02234: 4581 li a1,0 + 3bc02236: feafe0ef jal ra,3bc00a20 + 3bc0223a: 709c ld a5,32(s1) + 3bc0223c: 8526 mv a0,s1 + 3bc0223e: 6b9c ld a5,16(a5) + 3bc02240: 9782 jalr a5 + 3bc02242: 00011797 auipc a5,0x11 + 3bc02246: 4ea7bb23 sd a0,1270(a5) # 3bc13738 + 3bc0224a: 601c ld a5,0(s0) + 3bc0224c: 53d8 lw a4,36(a5) + 3bc0224e: 4791 li a5,4 + 3bc02250: 02e7e263 bltu a5,a4,3bc02274 + 3bc02254: 00009797 auipc a5,0x9 + 3bc02258: 58c78793 addi a5,a5,1420 # 3bc0b7e0 + 3bc0225c: 4731 li a4,12 + 3bc0225e: 00e79123 sh a4,2(a5) + 3bc02262: 4705 li a4,1 + 3bc02264: 00e78223 sb a4,4(a5) + 3bc02268: 20100793 li a5,513 + 3bc0226c: 00009717 auipc a4,0x9 + 3bc02270: 64f71723 sh a5,1614(a4) # 3bc0b8ba + 3bc02274: 00009797 auipc a5,0x9 + 3bc02278: 4f47b783 ld a5,1268(a5) # 3bc0b768 + 3bc0227c: 00011717 auipc a4,0x11 + 3bc02280: 48f73623 sd a5,1164(a4) # 3bc13708 + 3bc02284: 000e1737 lui a4,0xe1 + 3bc02288: c3d8 sw a4,4(a5) + 3bc0228a: 4721 li a4,8 + 3bc0228c: 00079423 sh zero,8(a5) + 3bc02290: 00e78523 sb a4,10(a5) + 3bc02294: 70a2 ld ra,40(sp) + 3bc02296: 7402 ld s0,32(sp) + 3bc02298: 00079623 sh zero,12(a5) + 3bc0229c: 64e2 ld s1,24(sp) + 3bc0229e: 6942 ld s2,16(sp) + 3bc022a0: 69a2 ld s3,8(sp) + 3bc022a2: 4501 li a0,0 + 3bc022a4: 6145 addi sp,sp,48 + 3bc022a6: 8082 ret + +000000003bc022a8 : + 3bc022a8: 030007b7 lui a5,0x3000 + 3bc022ac: 43c8 lw a0,4(a5) + 3bc022ae: 2495350b extu a0,a0,9,9 + 3bc022b2: 8082 ret + +000000003bc022b4 : + 3bc022b4: 1141 addi sp,sp,-16 + 3bc022b6: e406 sd ra,8(sp) + 3bc022b8: 93ffe0ef jal ra,3bc00bf6 + 3bc022bc: 3e800793 li a5,1000 + 3bc022c0: e911 bnez a0,3bc022d4 + 3bc022c2: 0e0007b7 lui a5,0xe000 + 3bc022c6: 639c ld a5,0(a5) + 3bc022c8: 0417b78b extu a5,a5,1,1 + 3bc022cc: eb81 bnez a5,3bc022dc + 3bc022ce: 6789 lui a5,0x2 + 3bc022d0: 71078793 addi a5,a5,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc022d4: 60a2 ld ra,8(sp) + 3bc022d6: 853e mv a0,a5 + 3bc022d8: 0141 addi sp,sp,16 + 3bc022da: 8082 ret + 3bc022dc: 67e1 lui a5,0x18 + 3bc022de: 69f78793 addi a5,a5,1695 # 1869f <__BSS_SIZE__+0x12a8f> + 3bc022e2: bfcd j 3bc022d4 + +000000003bc022e4 : + 3bc022e4: 7175 addi sp,sp,-144 + 3bc022e6: f0d2 sd s4,96(sp) + 3bc022e8: 00011797 auipc a5,0x11 + 3bc022ec: 46a7b423 sd a0,1128(a5) # 3bc13750 + 3bc022f0: 00011797 auipc a5,0x11 + 3bc022f4: 4eb7a823 sw a1,1264(a5) # 3bc137e0 + 3bc022f8: 00011a17 auipc s4,0x11 + 3bc022fc: 4eca0a13 addi s4,s4,1260 # 3bc137e4 + 3bc02300: e506 sd ra,136(sp) + 3bc02302: e122 sd s0,128(sp) + 3bc02304: fca6 sd s1,120(sp) + 3bc02306: f8ca sd s2,112(sp) + 3bc02308: f4ce sd s3,104(sp) + 3bc0230a: ecd6 sd s5,88(sp) + 3bc0230c: e8da sd s6,80(sp) + 3bc0230e: e4de sd s7,72(sp) + 3bc02310: e0e2 sd s8,64(sp) + 3bc02312: fc66 sd s9,56(sp) + 3bc02314: f86a sd s10,48(sp) + 3bc02316: f46e sd s11,40(sp) + 3bc02318: 00ca2023 sw a2,0(s4) + 3bc0231c: 0e0007b7 lui a5,0xe000 + 3bc02320: 0007a223 sw zero,4(a5) # e000004 + 3bc02324: f85ff0ef jal ra,3bc022a8 + 3bc02328: e909 bnez a0,3bc0233a + 3bc0232a: 00009517 auipc a0,0x9 + 3bc0232e: a5650513 addi a0,a0,-1450 # 3bc0ad80 <__func__.1+0x2d8> + 3bc02332: 826fe0ef jal ra,3bc00358 + 3bc02336: 596d li s2,-5 + 3bc02338: a111 j 3bc0273c + 3bc0233a: f7bff0ef jal ra,3bc022b4 + 3bc0233e: 0005049b sext.w s1,a0 + 3bc02342: 85a6 mv a1,s1 + 3bc02344: 00009517 auipc a0,0x9 + 3bc02348: a5450513 addi a0,a0,-1452 # 3bc0ad98 <__func__.1+0x2f0> + 3bc0234c: 80cfe0ef jal ra,3bc00358 + 3bc02350: 67e1 lui a5,0x18 + 3bc02352: 69e78793 addi a5,a5,1694 # 1869e <__BSS_SIZE__+0x12a8e> + 3bc02356: 0297f463 bgeu a5,s1,3bc0237e + 3bc0235a: 4785 li a5,1 + 3bc0235c: 00009517 auipc a0,0x9 + 3bc02360: a5450513 addi a0,a0,-1452 # 3bc0adb0 <__func__.1+0x308> + 3bc02364: 00011717 auipc a4,0x11 + 3bc02368: 4af70223 sb a5,1188(a4) # 3bc13808 + 3bc0236c: fedfd0ef jal ra,3bc00358 + 3bc02370: c00037b7 lui a5,0xc0003 + 3bc02374: 03000737 lui a4,0x3000 + 3bc02378: 078d addi a5,a5,3 + 3bc0237a: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc0237e: 85a6 mv a1,s1 + 3bc02380: 00009517 auipc a0,0x9 + 3bc02384: a3850513 addi a0,a0,-1480 # 3bc0adb8 <__func__.1+0x310> + 3bc02388: fd1fd0ef jal ra,3bc00358 + 3bc0238c: 3e800793 li a5,1000 + 3bc02390: 029787bb mulw a5,a5,s1 + 3bc02394: e43e sd a5,8(sp) + 3bc02396: c00037b7 lui a5,0xc0003 + 3bc0239a: 10178793 addi a5,a5,257 # ffffffffc0003101 <__BL2_END__+0xffffffff843ef8f1> + 3bc0239e: e83e sd a5,16(sp) + 3bc023a0: c00017b7 lui a5,0xc0001 + 3bc023a4: 0791 addi a5,a5,4 + 3bc023a6: ec3e sd a5,24(sp) + 3bc023a8: 00011797 auipc a5,0x11 + 3bc023ac: 3607b423 sd zero,872(a5) # 3bc13710 + 3bc023b0: 00011797 auipc a5,0x11 + 3bc023b4: 3607bc23 sd zero,888(a5) # 3bc13728 + 3bc023b8: 00011797 auipc a5,0x11 + 3bc023bc: 3607bc23 sd zero,888(a5) # 3bc13730 + 3bc023c0: 00011797 auipc a5,0x11 + 3bc023c4: 3807b023 sd zero,896(a5) # 3bc13740 + 3bc023c8: 00011797 auipc a5,0x11 + 3bc023cc: 3807b023 sd zero,896(a5) # 3bc13748 + 3bc023d0: 00011797 auipc a5,0x11 + 3bc023d4: 3407b423 sd zero,840(a5) # 3bc13718 + 3bc023d8: 00011797 auipc a5,0x11 + 3bc023dc: 3407b423 sd zero,840(a5) # 3bc13720 + 3bc023e0: 00011797 auipc a5,0x11 + 3bc023e4: 3407bc23 sd zero,856(a5) # 3bc13738 + 3bc023e8: 00011797 auipc a5,0x11 + 3bc023ec: 40078fa3 sb zero,1055(a5) # 3bc13807 + 3bc023f0: 00011797 auipc a5,0x11 + 3bc023f4: 40078b23 sb zero,1046(a5) # 3bc13806 + 3bc023f8: 00011797 auipc a5,0x11 + 3bc023fc: 400786a3 sb zero,1037(a5) # 3bc13805 + 3bc02400: 00011797 auipc a5,0x11 + 3bc02404: 400785a3 sb zero,1035(a5) # 3bc1380b + 3bc02408: 00011797 auipc a5,0x11 + 3bc0240c: 3e07a023 sw zero,992(a5) # 3bc137e8 + 3bc02410: 00011797 auipc a5,0x11 + 3bc02414: 2e07bc23 sd zero,760(a5) # 3bc13708 + 3bc02418: 00011797 auipc a5,0x11 + 3bc0241c: 3e0788a3 sb zero,1009(a5) # 3bc13809 + 3bc02420: bd9ff0ef jal ra,3bc01ff8 + 3bc02424: c77ff0ef jal ra,3bc0209a + 3bc02428: 00009417 auipc s0,0x9 + 3bc0242c: 4a840413 addi s0,s0,1192 # 3bc0b8d0 + 3bc02430: 00009797 auipc a5,0x9 + 3bc02434: 5507b783 ld a5,1360(a5) # 3bc0b980 + 3bc02438: e41c sd a5,8(s0) + 3bc0243a: 40000793 li a5,1024 + 3bc0243e: c81c sw a5,16(s0) + 3bc02440: 00009517 auipc a0,0x9 + 3bc02444: 49850513 addi a0,a0,1176 # 3bc0b8d8 + 3bc02448: 00009797 auipc a5,0x9 + 3bc0244c: 5607b783 ld a5,1376(a5) # 3bc0b9a8 + 3bc02450: e43c sd a5,72(s0) + 3bc02452: 6cd000ef jal ra,3bc0331e + 3bc02456: 0005099b sext.w s3,a0 + 3bc0245a: 892a mv s2,a0 + 3bc0245c: 02099063 bnez s3,3bc0247c + 3bc02460: 00009517 auipc a0,0x9 + 3bc02464: 4c850513 addi a0,a0,1224 # 3bc0b928 + 3bc02468: 54f000ef jal ra,3bc031b6 + 3bc0246c: 02055763 bgez a0,3bc0249a + 3bc02470: 00009517 auipc a0,0x9 + 3bc02474: 97050513 addi a0,a0,-1680 # 3bc0ade0 <__func__.1+0x338> + 3bc02478: ee1fd0ef jal ra,3bc00358 + 3bc0247c: 85ce mv a1,s3 + 3bc0247e: 00009517 auipc a0,0x9 + 3bc02482: 9fa50513 addi a0,a0,-1542 # 3bc0ae78 <__func__.1+0x3d0> + 3bc02486: ed3fd0ef jal ra,3bc00358 + 3bc0248a: c00037b7 lui a5,0xc0003 + 3bc0248e: 03000737 lui a4,0x3000 + 3bc02492: 079d addi a5,a5,7 + 3bc02494: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02498: a455 j 3bc0273c + 3bc0249a: 6000 ld s0,0(s0) + 3bc0249c: e411 bnez s0,3bc024a8 + 3bc0249e: 00009517 auipc a0,0x9 + 3bc024a2: 96250513 addi a0,a0,-1694 # 3bc0ae00 <__func__.1+0x358> + 3bc024a6: bfc9 j 3bc02478 + 3bc024a8: cc9ff0ef jal ra,3bc02170 + 3bc024ac: 4501 li a0,0 + 3bc024ae: d11fd0ef jal ra,3bc001be + 3bc024b2: 6742 ld a4,16(sp) + 3bc024b4: 00011917 auipc s2,0x11 + 3bc024b8: 33890913 addi s2,s2,824 # 3bc137ec + 3bc024bc: 00a92023 sw a0,0(s2) + 3bc024c0: 6522 ld a0,8(sp) + 3bc024c2: 030007b7 lui a5,0x3000 + 3bc024c6: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc024ca: cb1fd0ef jal ra,3bc0017a + 3bc024ce: 681c ld a5,16(s0) + 3bc024d0: 4585 li a1,1 + 3bc024d2: 8522 mv a0,s0 + 3bc024d4: 779c ld a5,40(a5) + 3bc024d6: 00011997 auipc s3,0x11 + 3bc024da: 24a98993 addi s3,s3,586 # 3bc13720 + 3bc024de: 00011b17 auipc s6,0x11 + 3bc024e2: 32ab0b13 addi s6,s6,810 # 3bc13808 + 3bc024e6: 9782 jalr a5 + 3bc024e8: 00011a97 auipc s5,0x11 + 3bc024ec: 31da8a93 addi s5,s5,797 # 3bc13805 + 3bc024f0: 000ac783 lbu a5,0(s5) + 3bc024f4: 18078663 beqz a5,3bc02680 + 3bc024f8: 6762 ld a4,24(sp) + 3bc024fa: 030007b7 lui a5,0x3000 + 3bc024fe: 00043b83 ld s7,0(s0) + 3bc02502: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02506: 4785 li a5,1 + 3bc02508: 00011717 auipc a4,0x11 + 3bc0250c: 30f701a3 sb a5,771(a4) # 3bc1380b + 3bc02510: 08200c13 li s8,130 + 3bc02514: 00011c97 auipc s9,0x11 + 3bc02518: 234c8c93 addi s9,s9,564 # 3bc13748 + 3bc0251c: 00011d17 auipc s10,0x11 + 3bc02520: 1fcd0d13 addi s10,s10,508 # 3bc13718 + 3bc02524: 00011d97 auipc s11,0x11 + 3bc02528: 21cd8d93 addi s11,s11,540 # 3bc13740 + 3bc0252c: 19741b63 bne s0,s7,3bc026c2 + 3bc02530: 02044783 lbu a5,32(s0) + 3bc02534: 470d li a4,3 + 3bc02536: 1ee78063 beq a5,a4,3bc02716 + 3bc0253a: 4715 li a4,5 + 3bc0253c: 1ee78063 beq a5,a4,3bc0271c + 3bc02540: 4709 li a4,2 + 3bc02542: dee79ae3 bne a5,a4,3bc02336 + 3bc02546: 04000793 li a5,64 + 3bc0254a: 0009b503 ld a0,0(s3) + 3bc0254e: 04000613 li a2,64 + 3bc02552: 4581 li a1,0 + 3bc02554: 00011717 auipc a4,0x11 + 3bc02558: 28f72a23 sw a5,660(a4) # 3bc137e8 + 3bc0255c: cc4fe0ef jal ra,3bc00a20 + 3bc02560: 0009b783 ld a5,0(s3) + 3bc02564: 00011717 auipc a4,0x11 + 3bc02568: 1c473703 ld a4,452(a4) # 3bc13728 + 3bc0256c: 00011b97 auipc s7,0x11 + 3bc02570: 27cb8b93 addi s7,s7,636 # 3bc137e8 + 3bc02574: eb98 sd a4,16(a5) + 3bc02576: cfd8 sw a4,28(a5) + 3bc02578: fffff717 auipc a4,0xfffff + 3bc0257c: 33270713 addi a4,a4,818 # 3bc018aa + 3bc02580: f798 sd a4,40(a5) + 3bc02582: 00011c17 auipc s8,0x11 + 3bc02586: 196c0c13 addi s8,s8,406 # 3bc13718 + 3bc0258a: 000ba703 lw a4,0(s7) + 3bc0258e: 000c3503 ld a0,0(s8) + 3bc02592: 04000613 li a2,64 + 3bc02596: cf98 sw a4,24(a5) + 3bc02598: 4581 li a1,0 + 3bc0259a: c86fe0ef jal ra,3bc00a20 + 3bc0259e: 000c3783 ld a5,0(s8) + 3bc025a2: 00011717 auipc a4,0x11 + 3bc025a6: 16e73703 ld a4,366(a4) # 3bc13710 + 3bc025aa: 00011517 auipc a0,0x11 + 3bc025ae: 19e53503 ld a0,414(a0) # 3bc13748 + 3bc025b2: eb98 sd a4,16(a5) + 3bc025b4: cfd8 sw a4,28(a5) + 3bc025b6: fffff717 auipc a4,0xfffff + 3bc025ba: 5ae70713 addi a4,a4,1454 # 3bc01b64 + 3bc025be: f798 sd a4,40(a5) + 3bc025c0: 000ba703 lw a4,0(s7) + 3bc025c4: 0009b583 ld a1,0(s3) + 3bc025c8: 4b85 li s7,1 + 3bc025ca: cf98 sw a4,24(a5) + 3bc025cc: 711c ld a5,32(a0) + 3bc025ce: 739c ld a5,32(a5) + 3bc025d0: 9782 jalr a5 + 3bc025d2: 500c lw a1,32(s0) + 3bc025d4: 00009517 auipc a0,0x9 + 3bc025d8: 86450513 addi a0,a0,-1948 # 3bc0ae38 <__func__.1+0x390> + 3bc025dc: d7dfd0ef jal ra,3bc00358 + 3bc025e0: 4501 li a0,0 + 3bc025e2: bddfd0ef jal ra,3bc001be + 3bc025e6: 00a92023 sw a0,0(s2) + 3bc025ea: b81ff0ef jal ra,3bc0216a + 3bc025ee: 000ac783 lbu a5,0(s5) + 3bc025f2: ee078be3 beqz a5,3bc024e8 + 3bc025f6: 00011797 auipc a5,0x11 + 3bc025fa: 21078793 addi a5,a5,528 # 3bc13806 + 3bc025fe: 0007c783 lbu a5,0(a5) + 3bc02602: eb95 bnez a5,3bc02636 + 3bc02604: 000b4783 lbu a5,0(s6) + 3bc02608: 10079d63 bnez a5,3bc02722 + 3bc0260c: 00092503 lw a0,0(s2) + 3bc02610: baffd0ef jal ra,3bc001be + 3bc02614: 2501 sext.w a0,a0 + 3bc02616: fca4fae3 bgeu s1,a0,3bc025ea + 3bc0261a: 85a6 mv a1,s1 + 3bc0261c: 00009517 auipc a0,0x9 + 3bc02620: 83c50513 addi a0,a0,-1988 # 3bc0ae58 <__func__.1+0x3b0> + 3bc02624: d35fd0ef jal ra,3bc00358 + 3bc02628: c00037b7 lui a5,0xc0003 + 3bc0262c: 03000737 lui a4,0x3000 + 3bc02630: 0795 addi a5,a5,5 + 3bc02632: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02636: 00009517 auipc a0,0x9 + 3bc0263a: 83a50513 addi a0,a0,-1990 # 3bc0ae70 <__func__.1+0x3c8> + 3bc0263e: d1bfd0ef jal ra,3bc00358 + 3bc02642: c00037b7 lui a5,0xc0003 + 3bc02646: 03000737 lui a4,0x3000 + 3bc0264a: 0799 addi a5,a5,6 + 3bc0264c: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02650: 681c ld a5,16(s0) + 3bc02652: 4581 li a1,0 + 3bc02654: 8522 mv a0,s0 + 3bc02656: 779c ld a5,40(a5) + 3bc02658: 9782 jalr a5 + 3bc0265a: 00009517 auipc a0,0x9 + 3bc0265e: 2ce50513 addi a0,a0,718 # 3bc0b928 + 3bc02662: 380000ef jal ra,3bc029e2 + 3bc02666: 0e0007b7 lui a5,0xe000 + 3bc0266a: 0047a903 lw s2,4(a5) # e000004 + 3bc0266e: 4d4757b7 lui a5,0x4d475 + 3bc02672: e3178793 addi a5,a5,-463 # 4d474e31 <__BL2_END__+0x11861621> + 3bc02676: 40f90933 sub s2,s2,a5 + 3bc0267a: 00193913 seqz s2,s2 + 3bc0267e: a87d j 3bc0273c + 3bc02680: aebff0ef jal ra,3bc0216a + 3bc02684: 00092503 lw a0,0(s2) + 3bc02688: b37fd0ef jal ra,3bc001be + 3bc0268c: 2501 sext.w a0,a0 + 3bc0268e: 02a4f363 bgeu s1,a0,3bc026b4 + 3bc02692: 000b4783 lbu a5,0(s6) + 3bc02696: ef99 bnez a5,3bc026b4 + 3bc02698: 00008517 auipc a0,0x8 + 3bc0269c: 79050513 addi a0,a0,1936 # 3bc0ae28 <__func__.1+0x380> + 3bc026a0: cb9fd0ef jal ra,3bc00358 + 3bc026a4: c00037b7 lui a5,0xc0003 + 3bc026a8: 03000737 lui a4,0x3000 + 3bc026ac: 0791 addi a5,a5,4 + 3bc026ae: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc026b2: b151 j 3bc02336 + 3bc026b4: 00011797 auipc a5,0x11 + 3bc026b8: 1557c783 lbu a5,341(a5) # 3bc13809 + 3bc026bc: e20786e3 beqz a5,3bc024e8 + 3bc026c0: b1e5 j 3bc023a8 + 3bc026c2: 030bb703 ld a4,48(s7) + 3bc026c6: c305 beqz a4,3bc026e6 + 3bc026c8: 00274703 lbu a4,2(a4) + 3bc026cc: 08100793 li a5,129 + 3bc026d0: 00f71e63 bne a4,a5,3bc026ec + 3bc026d4: 020bb703 ld a4,32(s7) + 3bc026d8: 855e mv a0,s7 + 3bc026da: 6b18 ld a4,16(a4) + 3bc026dc: 9702 jalr a4 + 3bc026de: 00ad3023 sd a0,0(s10) + 3bc026e2: 017db023 sd s7,0(s11) + 3bc026e6: 000bbb83 ld s7,0(s7) + 3bc026ea: b589 j 3bc0252c + 3bc026ec: 4785 li a5,1 + 3bc026ee: 00f71c63 bne a4,a5,3bc02706 + 3bc026f2: 020bb703 ld a4,32(s7) + 3bc026f6: 855e mv a0,s7 + 3bc026f8: 6b18 ld a4,16(a4) + 3bc026fa: 9702 jalr a4 + 3bc026fc: 00a9b023 sd a0,0(s3) + 3bc02700: 017cb023 sd s7,0(s9) + 3bc02704: b7cd j 3bc026e6 + 3bc02706: ff8710e3 bne a4,s8,3bc026e6 + 3bc0270a: 020bb703 ld a4,32(s7) + 3bc0270e: 855e mv a0,s7 + 3bc02710: 6b18 ld a4,16(a4) + 3bc02712: 9702 jalr a4 + 3bc02714: bfc9 j 3bc026e6 + 3bc02716: 20000793 li a5,512 + 3bc0271a: bd05 j 3bc0254a + 3bc0271c: 40000793 li a5,1024 + 3bc02720: b52d j 3bc0254a + 3bc02722: ed7794e3 bne a5,s7,3bc025ea + 3bc02726: 000a2783 lw a5,0(s4) + 3bc0272a: ec0790e3 bnez a5,3bc025ea + 3bc0272e: 00008517 auipc a0,0x8 + 3bc02732: 73a50513 addi a0,a0,1850 # 3bc0ae68 <__func__.1+0x3c0> + 3bc02736: c23fd0ef jal ra,3bc00358 + 3bc0273a: 4905 li s2,1 + 3bc0273c: 60aa ld ra,136(sp) + 3bc0273e: 640a ld s0,128(sp) + 3bc02740: 74e6 ld s1,120(sp) + 3bc02742: 79a6 ld s3,104(sp) + 3bc02744: 7a06 ld s4,96(sp) + 3bc02746: 6ae6 ld s5,88(sp) + 3bc02748: 6b46 ld s6,80(sp) + 3bc0274a: 6ba6 ld s7,72(sp) + 3bc0274c: 6c06 ld s8,64(sp) + 3bc0274e: 7ce2 ld s9,56(sp) + 3bc02750: 7d42 ld s10,48(sp) + 3bc02752: 7da2 ld s11,40(sp) + 3bc02754: 854a mv a0,s2 + 3bc02756: 7946 ld s2,112(sp) + 3bc02758: 6149 addi sp,sp,144 + 3bc0275a: 8082 ret + +000000003bc0275c : + 3bc0275c: c909 beqz a0,3bc0276e + 3bc0275e: 07150783 lb a5,113(a0) + 3bc02762: 4501 li a0,0 + 3bc02764: 0007d663 bgez a5,3bc02770 + 3bc02768: fd300513 li a0,-45 + 3bc0276c: 8082 ret + 3bc0276e: 5535 li a0,-19 + 3bc02770: 8082 ret + +000000003bc02772 : + 3bc02772: 61b8 ld a4,64(a1) + 3bc02774: 7179 addi sp,sp,-48 + 3bc02776: f022 sd s0,32(sp) + 3bc02778: ec26 sd s1,24(sp) + 3bc0277a: 00011417 auipc s0,0x11 + 3bc0277e: 04643403 ld s0,70(s0) # 3bc137c0 + 3bc02782: f406 sd ra,40(sp) + 3bc02784: 04058793 addi a5,a1,64 + 3bc02788: 7c04 ld s1,56(s0) + 3bc0278a: 00f70a63 beq a4,a5,3bc0279e + 3bc0278e: 00008517 auipc a0,0x8 + 3bc02792: 73250513 addi a0,a0,1842 # 3bc0aec0 <__func__.5+0x8> + 3bc02796: e42e sd a1,8(sp) + 3bc02798: bc1fd0ef jal ra,3bc00358 + 3bc0279c: 65a2 ld a1,8(sp) + 3bc0279e: 8522 mv a0,s0 + 3bc027a0: 7402 ld s0,32(sp) + 3bc027a2: 68bc ld a5,80(s1) + 3bc027a4: 70a2 ld ra,40(sp) + 3bc027a6: 64e2 ld s1,24(sp) + 3bc027a8: 6145 addi sp,sp,48 + 3bc027aa: 8782 jr a5 + +000000003bc027ac : + 3bc027ac: 7179 addi sp,sp,-48 + 3bc027ae: ec26 sd s1,24(sp) + 3bc027b0: 00011497 auipc s1,0x11 + 3bc027b4: 00848493 addi s1,s1,8 # 3bc137b8 + 3bc027b8: 6088 ld a0,0(s1) + 3bc027ba: f022 sd s0,32(sp) + 3bc027bc: 6405 lui s0,0x1 + 3bc027be: 80440413 addi s0,s0,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc027c2: 9522 add a0,a0,s0 + 3bc027c4: e42e sd a1,8(sp) + 3bc027c6: f406 sd ra,40(sp) + 3bc027c8: f85fe0ef jal ra,3bc0174c + 3bc027cc: 65a2 ld a1,8(sp) + 3bc027ce: 609c ld a5,0(s1) + 3bc027d0: 2501 sext.w a0,a0 + 3bc027d2: ed89 bnez a1,3bc027ec + 3bc027d4: 008785b3 add a1,a5,s0 + 3bc027d8: 00256513 ori a0,a0,2 + 3bc027dc: f77fe0ef jal ra,3bc01752 + 3bc027e0: 70a2 ld ra,40(sp) + 3bc027e2: 7402 ld s0,32(sp) + 3bc027e4: 64e2 ld s1,24(sp) + 3bc027e6: 4501 li a0,0 + 3bc027e8: 6145 addi sp,sp,48 + 3bc027ea: 8082 ret + 3bc027ec: 008785b3 add a1,a5,s0 + 3bc027f0: 9975 andi a0,a0,-3 + 3bc027f2: b7ed j 3bc027dc + +000000003bc027f4 : + 3bc027f4: 00011517 auipc a0,0x11 + 3bc027f8: fcc53503 ld a0,-52(a0) # 3bc137c0 + 3bc027fc: 7d1c ld a5,56(a0) + 3bc027fe: 1141 addi sp,sp,-16 + 3bc02800: e022 sd s0,0(sp) + 3bc02802: 67bc ld a5,72(a5) + 3bc02804: e406 sd ra,8(sp) + 3bc02806: 05000593 li a1,80 + 3bc0280a: 9782 jalr a5 + 3bc0280c: 842a mv s0,a0 + 3bc0280e: c911 beqz a0,3bc02822 + 3bc02810: 05000613 li a2,80 + 3bc02814: 4581 li a1,0 + 3bc02816: a0afe0ef jal ra,3bc00a20 + 3bc0281a: 04040793 addi a5,s0,64 + 3bc0281e: e03c sd a5,64(s0) + 3bc02820: e43c sd a5,72(s0) + 3bc02822: 60a2 ld ra,8(sp) + 3bc02824: 8522 mv a0,s0 + 3bc02826: 6402 ld s0,0(sp) + 3bc02828: 0141 addi sp,sp,16 + 3bc0282a: 8082 ret + +000000003bc0282c : + 3bc0282c: cd51 beqz a0,3bc028c8 + 3bc0282e: 1141 addi sp,sp,-16 + 3bc02830: e022 sd s0,0(sp) + 3bc02832: e406 sd ra,8(sp) + 3bc02834: 842a mv s0,a0 + 3bc02836: 5529 li a0,-22 + 3bc02838: c5c1 beqz a1,3bc028c0 + 3bc0283a: 603c ld a5,64(s0) + 3bc0283c: e3d1 bnez a5,3bc028c0 + 3bc0283e: 6c18 ld a4,24(s0) + 3bc02840: 00009797 auipc a5,0x9 + 3bc02844: 93878793 addi a5,a5,-1736 # 3bc0b178 + 3bc02848: 06f70c63 beq a4,a5,3bc028c0 + 3bc0284c: 0015c703 lbu a4,1(a1) + 3bc02850: 4795 li a5,5 + 3bc02852: 06f71763 bne a4,a5,3bc028c0 + 3bc02856: 07144703 lbu a4,113(s0) + 3bc0285a: 0025c783 lbu a5,2(a1) + 3bc0285e: 06f71163 bne a4,a5,3bc028c0 + 3bc02862: 0045d783 lhu a5,4(a1) + 3bc02866: 02845703 lhu a4,40(s0) + 3bc0286a: 04f76b63 bltu a4,a5,3bc028c0 + 3bc0286e: 07244683 lbu a3,114(s0) + 3bc02872: 0035c703 lbu a4,3(a1) + 3bc02876: 00e68863 beq a3,a4,3bc02886 + 3bc0287a: 4609 li a2,2 + 3bc0287c: 00c68563 beq a3,a2,3bc02886 + 3bc02880: 468d li a3,3 + 3bc02882: 02d71f63 bne a4,a3,3bc028c0 + 3bc02886: fde00513 li a0,-34 + 3bc0288a: cb9d beqz a5,3bc028c0 + 3bc0288c: 7c18 ld a4,56(s0) + 3bc0288e: fc600513 li a0,-58 + 3bc02892: 7f14 ld a3,56(a4) + 3bc02894: c695 beqz a3,3bc028c0 + 3bc02896: 5318 lw a4,32(a4) + 3bc02898: c705 beqz a4,3bc028c0 + 3bc0289a: 02f41423 sh a5,40(s0) + 3bc0289e: f80c sd a1,48(s0) + 3bc028a0: e02c sd a1,64(s0) + 3bc028a2: 8522 mv a0,s0 + 3bc028a4: 06040823 sb zero,112(s0) + 3bc028a8: 04043c23 sd zero,88(s0) + 3bc028ac: 35e010ef jal ra,3bc03c0a + 3bc028b0: 4581 li a1,0 + 3bc028b2: 8522 mv a0,s0 + 3bc028b4: 396010ef jal ra,3bc03c4a + 3bc028b8: 8522 mv a0,s0 + 3bc028ba: 3f2010ef jal ra,3bc03cac + 3bc028be: 4501 li a0,0 + 3bc028c0: 60a2 ld ra,8(sp) + 3bc028c2: 6402 ld s0,0(sp) + 3bc028c4: 0141 addi sp,sp,16 + 3bc028c6: 8082 ret + 3bc028c8: 5529 li a0,-22 + 3bc028ca: 8082 ret + +000000003bc028cc : + 3bc028cc: 8082 ret + +000000003bc028ce : + 3bc028ce: 8082 ret + +000000003bc028d0 : + 3bc028d0: 00009517 auipc a0,0x9 + 3bc028d4: 8a850513 addi a0,a0,-1880 # 3bc0b178 + 3bc028d8: 8082 ret + +000000003bc028da : + 3bc028da: 6d1c ld a5,24(a0) + 3bc028dc: f8a5550b sdd a0,a0,(a0),0,4 + 3bc028e0: 29850613 addi a2,a0,664 + 3bc028e4: f8f7d78b sdd a5,a5,(a5),0,4 + 3bc028e8: 04052423 sw zero,72(a0) + 3bc028ec: 09850793 addi a5,a0,152 + 3bc028f0: fe07bc23 sd zero,-8(a5) + 3bc028f4: 02078423 sb zero,40(a5) + 3bc028f8: f8f7d78b sdd a5,a5,(a5),0,4 + 3bc028fc: 0007b823 sd zero,16(a5) + 3bc02900: 08078713 addi a4,a5,128 + 3bc02904: 00c71363 bne a4,a2,3bc0290a + 3bc02908: 8082 ret + 3bc0290a: 6514 ld a3,8(a0) + 3bc0290c: 03878793 addi a5,a5,56 + 3bc02910: e51c sd a5,8(a0) + 3bc02912: faa73c23 sd a0,-72(a4) + 3bc02916: fcd73023 sd a3,-64(a4) + 3bc0291a: e29c sd a5,0(a3) + 3bc0291c: 87ba mv a5,a4 + 3bc0291e: bfc9 j 3bc028f0 + +000000003bc02920 : + 3bc02920: 65b8 ld a4,72(a1) + 3bc02922: 61b4 ld a3,64(a1) + 3bc02924: 1101 addi sp,sp,-32 + 3bc02926: ec06 sd ra,24(sp) + 3bc02928: e822 sd s0,16(sp) + 3bc0292a: 07054403 lbu s0,112(a0) + 3bc0292e: e698 sd a4,8(a3) + 3bc02930: e314 sd a3,0(a4) + 3bc02932: 5d98 lw a4,56(a1) + 3bc02934: 04058793 addi a5,a1,64 + 3bc02938: e1bc sd a5,64(a1) + 3bc0293a: e5bc sd a5,72(a1) + 3bc0293c: fdc00793 li a5,-36 + 3bc02940: 00f71363 bne a4,a5,3bc02946 + 3bc02944: dd90 sw a2,56(a1) + 3bc02946: 4785 li a5,1 + 3bc02948: 06f50823 sb a5,112(a0) + 3bc0294c: 759c ld a5,40(a1) + 3bc0294e: e42a sd a0,8(sp) + 3bc02950: 9782 jalr a5 + 3bc02952: 6522 ld a0,8(sp) + 3bc02954: 06850823 sb s0,112(a0) + 3bc02958: 60e2 ld ra,24(sp) + 3bc0295a: 6442 ld s0,16(sp) + 3bc0295c: 6105 addi sp,sp,32 + 3bc0295e: 8082 ret + +000000003bc02960 : + 3bc02960: c539 beqz a0,3bc029ae + 3bc02962: 6d14 ld a3,24(a0) + 3bc02964: 00009797 auipc a5,0x9 + 3bc02968: 81478793 addi a5,a5,-2028 # 3bc0b178 + 3bc0296c: 5729 li a4,-22 + 3bc0296e: 04f68163 beq a3,a5,3bc029b0 + 3bc02972: 872a mv a4,a0 + 3bc02974: 6e97478b ldib a5,(a4),9,3 + 3bc02978: fc078793 addi a5,a5,-64 + 3bc0297c: 86be mv a3,a5 + 3bc0297e: 6e86c60b ldib a2,(a3),8,3 + 3bc02982: 02e69163 bne a3,a4,3bc029a4 + 3bc02986: 5729 li a4,-22 + 3bc02988: 02f59463 bne a1,a5,3bc029b0 + 3bc0298c: 1141 addi sp,sp,-16 + 3bc0298e: fca00613 li a2,-54 + 3bc02992: 85be mv a1,a5 + 3bc02994: e406 sd ra,8(sp) + 3bc02996: f8bff0ef jal ra,3bc02920 + 3bc0299a: 60a2 ld ra,8(sp) + 3bc0299c: 4701 li a4,0 + 3bc0299e: 853a mv a0,a4 + 3bc029a0: 0141 addi sp,sp,16 + 3bc029a2: 8082 ret + 3bc029a4: fef584e3 beq a1,a5,3bc0298c + 3bc029a8: fc060793 addi a5,a2,-64 + 3bc029ac: bfc1 j 3bc0297c + 3bc029ae: 5729 li a4,-22 + 3bc029b0: 853a mv a0,a4 + 3bc029b2: 8082 ret + +000000003bc029b4 : + 3bc029b4: 7179 addi sp,sp,-48 + 3bc029b6: f022 sd s0,32(sp) + 3bc029b8: ec26 sd s1,24(sp) + 3bc029ba: f406 sd ra,40(sp) + 3bc029bc: 84ae mv s1,a1 + 3bc029be: 04850413 addi s0,a0,72 + 3bc029c2: 652c ld a1,72(a0) + 3bc029c4: 00859763 bne a1,s0,3bc029d2 + 3bc029c8: 70a2 ld ra,40(sp) + 3bc029ca: 7402 ld s0,32(sp) + 3bc029cc: 64e2 ld s1,24(sp) + 3bc029ce: 6145 addi sp,sp,48 + 3bc029d0: 8082 ret + 3bc029d2: 8626 mv a2,s1 + 3bc029d4: fc058593 addi a1,a1,-64 + 3bc029d8: e42a sd a0,8(sp) + 3bc029da: f47ff0ef jal ra,3bc02920 + 3bc029de: 6522 ld a0,8(sp) + 3bc029e0: b7cd j 3bc029c2 + +000000003bc029e2 : + 3bc029e2: 7139 addi sp,sp,-64 + 3bc029e4: f822 sd s0,48(sp) + 3bc029e6: fc06 sd ra,56(sp) + 3bc029e8: f426 sd s1,40(sp) + 3bc029ea: f04a sd s2,32(sp) + 3bc029ec: ec4e sd s3,24(sp) + 3bc029ee: e852 sd s4,16(sp) + 3bc029f0: e456 sd s5,8(sp) + 3bc029f2: 00011417 auipc s0,0x11 + 3bc029f6: dce43403 ld s0,-562(s0) # 3bc137c0 + 3bc029fa: cc3d beqz s0,3bc02a78 + 3bc029fc: 84aa mv s1,a0 + 3bc029fe: 5529 li a0,-22 + 3bc02a00: c0bd beqz s1,3bc02a66 + 3bc02a02: 7c18 ld a4,56(s0) + 3bc02a04: 06971163 bne a4,s1,3bc02a66 + 3bc02a08: 5018 lw a4,32(s0) + 3bc02a0a: 02043c23 sd zero,56(s0) + 3bc02a0e: 89a6 mv s3,s1 + 3bc02a10: e311 bnez a4,3bc02a14 + 3bc02a12: 4981 li s3,0 + 3bc02a14: 02042023 sw zero,32(s0) + 3bc02a18: 05040913 addi s2,s0,80 + 3bc02a1c: 25040a13 addi s4,s0,592 + 3bc02a20: 4a85 li s5,1 + 3bc02a22: 07590823 sb s5,112(s2) + 3bc02a26: 854a mv a0,s2 + 3bc02a28: fc600593 li a1,-58 + 3bc02a2c: 08090913 addi s2,s2,128 + 3bc02a30: f85ff0ef jal ra,3bc029b4 + 3bc02a34: ff4917e3 bne s2,s4,3bc02a22 + 3bc02a38: 00098663 beqz s3,3bc02a44 + 3bc02a3c: 0289b783 ld a5,40(s3) + 3bc02a40: 8522 mv a0,s0 + 3bc02a42: 9782 jalr a5 + 3bc02a44: 8522 mv a0,s0 + 3bc02a46: e95ff0ef jal ra,3bc028da + 3bc02a4a: 6c9c ld a5,24(s1) + 3bc02a4c: 8522 mv a0,s0 + 3bc02a4e: 9782 jalr a5 + 3bc02a50: 8522 mv a0,s0 + 3bc02a52: 4581 li a1,0 + 3bc02a54: 106010ef jal ra,3bc03b5a + 3bc02a58: 4501 li a0,0 + 3bc02a5a: 04042423 sw zero,72(s0) + 3bc02a5e: 02042023 sw zero,32(s0) + 3bc02a62: 24040823 sb zero,592(s0) + 3bc02a66: 70e2 ld ra,56(sp) + 3bc02a68: 7442 ld s0,48(sp) + 3bc02a6a: 74a2 ld s1,40(sp) + 3bc02a6c: 7902 ld s2,32(sp) + 3bc02a6e: 69e2 ld s3,24(sp) + 3bc02a70: 6a42 ld s4,16(sp) + 3bc02a72: 6aa2 ld s5,8(sp) + 3bc02a74: 6121 addi sp,sp,64 + 3bc02a76: 8082 ret + 3bc02a78: 5535 li a0,-19 + 3bc02a7a: b7f5 j 3bc02a66 + +000000003bc02a7c : + 3bc02a7c: 1101 addi sp,sp,-32 + 3bc02a7e: e822 sd s0,16(sp) + 3bc02a80: e426 sd s1,8(sp) + 3bc02a82: ec06 sd ra,24(sp) + 3bc02a84: 842e mv s0,a1 + 3bc02a86: 84aa mv s1,a0 + 3bc02a88: cc5fe0ef jal ra,3bc0174c + 3bc02a8c: 2501 sext.w a0,a0 + 3bc02a8e: 8d41 or a0,a0,s0 + 3bc02a90: 6442 ld s0,16(sp) + 3bc02a92: 60e2 ld ra,24(sp) + 3bc02a94: 85a6 mv a1,s1 + 3bc02a96: 64a2 ld s1,8(sp) + 3bc02a98: 6105 addi sp,sp,32 + 3bc02a9a: cb9fe06f j 3bc01752 + +000000003bc02a9e : + 3bc02a9e: 1101 addi sp,sp,-32 + 3bc02aa0: e822 sd s0,16(sp) + 3bc02aa2: ec06 sd ra,24(sp) + 3bc02aa4: 842a mv s0,a0 + 3bc02aa6: e42e sd a1,8(sp) + 3bc02aa8: ca5fe0ef jal ra,3bc0174c + 3bc02aac: 65a2 ld a1,8(sp) + 3bc02aae: 60e2 ld ra,24(sp) + 3bc02ab0: 2501 sext.w a0,a0 + 3bc02ab2: fff5c793 not a5,a1 + 3bc02ab6: 85a2 mv a1,s0 + 3bc02ab8: 6442 ld s0,16(sp) + 3bc02aba: 8d7d and a0,a0,a5 + 3bc02abc: 6105 addi sp,sp,32 + 3bc02abe: c95fe06f j 3bc01752 + +000000003bc02ac2 : + 3bc02ac2: 1101 addi sp,sp,-32 + 3bc02ac4: e426 sd s1,8(sp) + 3bc02ac6: 00011497 auipc s1,0x11 + 3bc02aca: cf248493 addi s1,s1,-782 # 3bc137b8 + 3bc02ace: 6088 ld a0,0(s1) + 3bc02ad0: e822 sd s0,16(sp) + 3bc02ad2: 6405 lui s0,0x1 + 3bc02ad4: 80440413 addi s0,s0,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02ad8: 4585 li a1,1 + 3bc02ada: 9522 add a0,a0,s0 + 3bc02adc: ec06 sd ra,24(sp) + 3bc02ade: f9fff0ef jal ra,3bc02a7c + 3bc02ae2: 4529 li a0,10 + 3bc02ae4: ed0fd0ef jal ra,3bc001b4 + 3bc02ae8: 6088 ld a0,0(s1) + 3bc02aea: 4585 li a1,1 + 3bc02aec: 9522 add a0,a0,s0 + 3bc02aee: fb1ff0ef jal ra,3bc02a9e + 3bc02af2: 60e2 ld ra,24(sp) + 3bc02af4: 6442 ld s0,16(sp) + 3bc02af6: 64a2 ld s1,8(sp) + 3bc02af8: 4501 li a0,0 + 3bc02afa: 6105 addi sp,sp,32 + 3bc02afc: 8082 ret + +000000003bc02afe : + 3bc02afe: 7179 addi sp,sp,-48 + 3bc02b00: f022 sd s0,32(sp) + 3bc02b02: ec26 sd s1,24(sp) + 3bc02b04: e84a sd s2,16(sp) + 3bc02b06: e44e sd s3,8(sp) + 3bc02b08: f406 sd ra,40(sp) + 3bc02b0a: 892a mv s2,a0 + 3bc02b0c: 89ae mv s3,a1 + 3bc02b0e: 84b2 mv s1,a2 + 3bc02b10: 4401 li s0,0 + 3bc02b12: 00941b63 bne s0,s1,3bc02b28 + 3bc02b16: fc400513 li a0,-60 + 3bc02b1a: 70a2 ld ra,40(sp) + 3bc02b1c: 7402 ld s0,32(sp) + 3bc02b1e: 64e2 ld s1,24(sp) + 3bc02b20: 6942 ld s2,16(sp) + 3bc02b22: 69a2 ld s3,8(sp) + 3bc02b24: 6145 addi sp,sp,48 + 3bc02b26: 8082 ret + 3bc02b28: 854a mv a0,s2 + 3bc02b2a: c23fe0ef jal ra,3bc0174c + 3bc02b2e: 2501 sext.w a0,a0 + 3bc02b30: 01357533 and a0,a0,s3 + 3bc02b34: e511 bnez a0,3bc02b40 + 3bc02b36: 4505 li a0,1 + 3bc02b38: e52fd0ef jal ra,3bc0018a + 3bc02b3c: 2405 addiw s0,s0,1 + 3bc02b3e: bfd1 j 3bc02b12 + 3bc02b40: 4501 li a0,0 + 3bc02b42: bfe1 j 3bc02b1a + +000000003bc02b44 : + 3bc02b44: 1101 addi sp,sp,-32 + 3bc02b46: e426 sd s1,8(sp) + 3bc02b48: 00011497 auipc s1,0x11 + 3bc02b4c: c7048493 addi s1,s1,-912 # 3bc137b8 + 3bc02b50: e822 sd s0,16(sp) + 3bc02b52: 842a mv s0,a0 + 3bc02b54: 6088 ld a0,0(s1) + 3bc02b56: 6609 lui a2,0x2 + 3bc02b58: 71060613 addi a2,a2,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc02b5c: 800005b7 lui a1,0x80000 + 3bc02b60: 0541 addi a0,a0,16 + 3bc02b62: ec06 sd ra,24(sp) + 3bc02b64: f9bff0ef jal ra,3bc02afe + 3bc02b68: c919 beqz a0,3bc02b7e + 3bc02b6a: 00008597 auipc a1,0x8 + 3bc02b6e: 58658593 addi a1,a1,1414 # 3bc0b0f0 <__func__.3> + 3bc02b72: 00008517 auipc a0,0x8 + 3bc02b76: 37650513 addi a0,a0,886 # 3bc0aee8 <__func__.5+0x30> + 3bc02b7a: fdefd0ef jal ra,3bc00358 + 3bc02b7e: 608c ld a1,0(s1) + 3bc02b80: 0064151b slliw a0,s0,0x6 + 3bc02b84: 02056513 ori a0,a0,32 + 3bc02b88: 05c1 addi a1,a1,16 + 3bc02b8a: 2501 sext.w a0,a0 + 3bc02b8c: bc7fe0ef jal ra,3bc01752 + 3bc02b90: 06400413 li s0,100 + 3bc02b94: 6088 ld a0,0(s1) + 3bc02b96: 0541 addi a0,a0,16 + 3bc02b98: bb5fe0ef jal ra,3bc0174c + 3bc02b9c: 0005061b sext.w a2,a0 + 3bc02ba0: 02057513 andi a0,a0,32 + 3bc02ba4: cd09 beqz a0,3bc02bbe + 3bc02ba6: 347d addiw s0,s0,-1 + 3bc02ba8: e015 bnez s0,3bc02bcc + 3bc02baa: 00008597 auipc a1,0x8 + 3bc02bae: 54658593 addi a1,a1,1350 # 3bc0b0f0 <__func__.3> + 3bc02bb2: 00008517 auipc a0,0x8 + 3bc02bb6: 35650513 addi a0,a0,854 # 3bc0af08 <__func__.5+0x50> + 3bc02bba: f9efd0ef jal ra,3bc00358 + 3bc02bbe: 6442 ld s0,16(sp) + 3bc02bc0: 60e2 ld ra,24(sp) + 3bc02bc2: 64a2 ld s1,8(sp) + 3bc02bc4: 4505 li a0,1 + 3bc02bc6: 6105 addi sp,sp,32 + 3bc02bc8: dc2fd06f j 3bc0018a + 3bc02bcc: 4505 li a0,1 + 3bc02bce: dbcfd0ef jal ra,3bc0018a + 3bc02bd2: b7c9 j 3bc02b94 + +000000003bc02bd4 : + 3bc02bd4: 1101 addi sp,sp,-32 + 3bc02bd6: e426 sd s1,8(sp) + 3bc02bd8: e04a sd s2,0(sp) + 3bc02bda: ec06 sd ra,24(sp) + 3bc02bdc: e822 sd s0,16(sp) + 3bc02bde: 07154403 lbu s0,113(a0) + 3bc02be2: 84aa mv s1,a0 + 3bc02be4: 60000913 li s2,1536 + 3bc02be8: 883d andi s0,s0,15 + 3bc02bea: e019 bnez s0,3bc02bf0 + 3bc02bec: 10000913 li s2,256 + 3bc02bf0: 8526 mv a0,s1 + 3bc02bf2: dc3ff0ef jal ra,3bc029b4 + 3bc02bf6: 6505 lui a0,0x1 + 3bc02bf8: 91850513 addi a0,a0,-1768 # 918 <__BSS_SIZE__-0x52f8> + 3bc02bfc: 0416 slli s0,s0,0x5 + 3bc02bfe: 942a add s0,s0,a0 + 3bc02c00: 00011517 auipc a0,0x11 + 3bc02c04: bb853503 ld a0,-1096(a0) # 3bc137b8 + 3bc02c08: 9522 add a0,a0,s0 + 3bc02c0a: b43fe0ef jal ra,3bc0174c + 3bc02c0e: 3c05350b extu a0,a0,15,0 + 3bc02c12: 050a slli a0,a0,0x2 + 3bc02c14: 01257963 bgeu a0,s2,3bc02c26 + 3bc02c18: 6442 ld s0,16(sp) + 3bc02c1a: 5ca8 lw a0,120(s1) + 3bc02c1c: 60e2 ld ra,24(sp) + 3bc02c1e: 64a2 ld s1,8(sp) + 3bc02c20: 6902 ld s2,0(sp) + 3bc02c22: 6105 addi sp,sp,32 + 3bc02c24: b705 j 3bc02b44 + 3bc02c26: 60e2 ld ra,24(sp) + 3bc02c28: 6442 ld s0,16(sp) + 3bc02c2a: 64a2 ld s1,8(sp) + 3bc02c2c: 6902 ld s2,0(sp) + 3bc02c2e: 6105 addi sp,sp,32 + 3bc02c30: 8082 ret + +000000003bc02c32 : + 3bc02c32: 27052783 lw a5,624(a0) + 3bc02c36: cba1 beqz a5,3bc02c86 + 3bc02c38: 1101 addi sp,sp,-32 + 3bc02c3a: e822 sd s0,16(sp) + 3bc02c3c: e426 sd s1,8(sp) + 3bc02c3e: e04a sd s2,0(sp) + 3bc02c40: ec06 sd ra,24(sp) + 3bc02c42: 842a mv s0,a0 + 3bc02c44: 26052823 sw zero,624(a0) + 3bc02c48: 0d050493 addi s1,a0,208 + 3bc02c4c: 25050913 addi s2,a0,592 + 3bc02c50: 6c9c ld a5,24(s1) + 3bc02c52: c791 beqz a5,3bc02c5e + 3bc02c54: fc600593 li a1,-58 + 3bc02c58: 8526 mv a0,s1 + 3bc02c5a: f7bff0ef jal ra,3bc02bd4 + 3bc02c5e: 08048493 addi s1,s1,128 + 3bc02c62: ff2497e3 bne s1,s2,3bc02c50 + 3bc02c66: 7c1c ld a5,56(s0) + 3bc02c68: 779c ld a5,40(a5) + 3bc02c6a: cb81 beqz a5,3bc02c7a + 3bc02c6c: 8522 mv a0,s0 + 3bc02c6e: 6442 ld s0,16(sp) + 3bc02c70: 60e2 ld ra,24(sp) + 3bc02c72: 64a2 ld s1,8(sp) + 3bc02c74: 6902 ld s2,0(sp) + 3bc02c76: 6105 addi sp,sp,32 + 3bc02c78: 8782 jr a5 + 3bc02c7a: 60e2 ld ra,24(sp) + 3bc02c7c: 6442 ld s0,16(sp) + 3bc02c7e: 64a2 ld s1,8(sp) + 3bc02c80: 6902 ld s2,0(sp) + 3bc02c82: 6105 addi sp,sp,32 + 3bc02c84: 8082 ret + 3bc02c86: 8082 ret + +000000003bc02c88 : + 3bc02c88: 1101 addi sp,sp,-32 + 3bc02c8a: e822 sd s0,16(sp) + 3bc02c8c: 00011417 auipc s0,0x11 + 3bc02c90: b2c40413 addi s0,s0,-1236 # 3bc137b8 + 3bc02c94: 6008 ld a0,0(s0) + 3bc02c96: 6609 lui a2,0x2 + 3bc02c98: 71060613 addi a2,a2,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc02c9c: 800005b7 lui a1,0x80000 + 3bc02ca0: 0541 addi a0,a0,16 + 3bc02ca2: ec06 sd ra,24(sp) + 3bc02ca4: e426 sd s1,8(sp) + 3bc02ca6: e59ff0ef jal ra,3bc02afe + 3bc02caa: c919 beqz a0,3bc02cc0 + 3bc02cac: 00008597 auipc a1,0x8 + 3bc02cb0: 45c58593 addi a1,a1,1116 # 3bc0b108 <__func__.4> + 3bc02cb4: 00008517 auipc a0,0x8 + 3bc02cb8: 23450513 addi a0,a0,564 # 3bc0aee8 <__func__.5+0x30> + 3bc02cbc: e9cfd0ef jal ra,3bc00358 + 3bc02cc0: 600c ld a1,0(s0) + 3bc02cc2: 40000513 li a0,1024 + 3bc02cc6: 018004b7 lui s1,0x1800 + 3bc02cca: 02458593 addi a1,a1,36 + 3bc02cce: a85fe0ef jal ra,3bc01752 + 3bc02cd2: 600c ld a1,0(s0) + 3bc02cd4: 00400537 lui a0,0x400 + 3bc02cd8: 40050513 addi a0,a0,1024 # 400400 <__BSS_SIZE__+0x3fa7f0> + 3bc02cdc: 02858593 addi a1,a1,40 + 3bc02ce0: a73fe0ef jal ra,3bc01752 + 3bc02ce4: 600c ld a1,0(s0) + 3bc02ce6: 44048513 addi a0,s1,1088 # 1800440 <__BSS_SIZE__+0x17fa830> + 3bc02cea: 10458593 addi a1,a1,260 + 3bc02cee: a65fe0ef jal ra,3bc01752 + 3bc02cf2: 600c ld a1,0(s0) + 3bc02cf4: 5c048513 addi a0,s1,1472 + 3bc02cf8: 10858593 addi a1,a1,264 + 3bc02cfc: a57fe0ef jal ra,3bc01752 + 3bc02d00: 600c ld a1,0(s0) + 3bc02d02: 74048513 addi a0,s1,1856 + 3bc02d06: 06400493 li s1,100 + 3bc02d0a: 10c58593 addi a1,a1,268 + 3bc02d0e: a45fe0ef jal ra,3bc01752 + 3bc02d12: 600c ld a1,0(s0) + 3bc02d14: 43000513 li a0,1072 + 3bc02d18: 05c1 addi a1,a1,16 + 3bc02d1a: a39fe0ef jal ra,3bc01752 + 3bc02d1e: 6008 ld a0,0(s0) + 3bc02d20: 0541 addi a0,a0,16 + 3bc02d22: a2bfe0ef jal ra,3bc0174c + 3bc02d26: 0005061b sext.w a2,a0 + 3bc02d2a: 03057513 andi a0,a0,48 + 3bc02d2e: c50d beqz a0,3bc02d58 + 3bc02d30: 34fd addiw s1,s1,-1 + 3bc02d32: ec99 bnez s1,3bc02d50 + 3bc02d34: 6442 ld s0,16(sp) + 3bc02d36: 60e2 ld ra,24(sp) + 3bc02d38: 64a2 ld s1,8(sp) + 3bc02d3a: 00008597 auipc a1,0x8 + 3bc02d3e: 3ce58593 addi a1,a1,974 # 3bc0b108 <__func__.4> + 3bc02d42: 00008517 auipc a0,0x8 + 3bc02d46: 1f650513 addi a0,a0,502 # 3bc0af38 <__func__.5+0x80> + 3bc02d4a: 6105 addi sp,sp,32 + 3bc02d4c: e0cfd06f j 3bc00358 + 3bc02d50: 4505 li a0,1 + 3bc02d52: c38fd0ef jal ra,3bc0018a + 3bc02d56: b7e1 j 3bc02d1e + 3bc02d58: 60e2 ld ra,24(sp) + 3bc02d5a: 6442 ld s0,16(sp) + 3bc02d5c: 64a2 ld s1,8(sp) + 3bc02d5e: 6105 addi sp,sp,32 + 3bc02d60: 8082 ret + +000000003bc02d62 <_dwc2_ep_disable.isra.0>: + 3bc02d62: 00011717 auipc a4,0x11 + 3bc02d66: a5e73703 ld a4,-1442(a4) # 3bc137c0 + 3bc02d6a: 05070713 addi a4,a4,80 + 3bc02d6e: 07154683 lbu a3,113(a0) + 3bc02d72: 00e51c63 bne a0,a4,3bc02d8a <_dwc2_ep_disable.isra.0+0x28> + 3bc02d76: 00008597 auipc a1,0x8 + 3bc02d7a: 34a58593 addi a1,a1,842 # 3bc0b0c0 <__func__.1> + 3bc02d7e: 00008517 auipc a0,0x8 + 3bc02d82: 1ea50513 addi a0,a0,490 # 3bc0af68 <__func__.5+0xb0> + 3bc02d86: dd2fd06f j 3bc00358 + 3bc02d8a: 7139 addi sp,sp,-64 + 3bc02d8c: f04a sd s2,32(sp) + 3bc02d8e: ec4e sd s3,24(sp) + 3bc02d90: 00011917 auipc s2,0x11 + 3bc02d94: a2890913 addi s2,s2,-1496 # 3bc137b8 + 3bc02d98: fc06 sd ra,56(sp) + 3bc02d9a: f822 sd s0,48(sp) + 3bc02d9c: f426 sd s1,40(sp) + 3bc02d9e: e852 sd s4,16(sp) + 3bc02da0: e456 sd s5,8(sp) + 3bc02da2: fc76b70b extu a4,a3,63,7 + 3bc02da6: 00093983 ld s3,0(s2) + 3bc02daa: 00f6f793 andi a5,a3,15 + 3bc02dae: 0e070563 beqz a4,3bc02e98 <_dwc2_ep_disable.isra.0+0x136> + 3bc02db2: 04878793 addi a5,a5,72 + 3bc02db6: 0796 slli a5,a5,0x5 + 3bc02db8: 99be add s3,s3,a5 + 3bc02dba: 84aa mv s1,a0 + 3bc02dbc: 854e mv a0,s3 + 3bc02dbe: 98ffe0ef jal ra,3bc0174c + 3bc02dc2: 00050a1b sext.w s4,a0 + 3bc02dc6: 080a5a63 bgez s4,3bc02e5a <_dwc2_ep_disable.isra.0+0xf8> + 3bc02dca: 0714c783 lbu a5,113(s1) + 3bc02dce: 00093503 ld a0,0(s2) + 3bc02dd2: fc77b70b extu a4,a5,63,7 + 3bc02dd6: 00f7f413 andi s0,a5,15 + 3bc02dda: c371 beqz a4,3bc02e9e <_dwc2_ep_disable.isra.0+0x13c> + 3bc02ddc: 04840413 addi s0,s0,72 + 3bc02de0: 0416 slli s0,s0,0x5 + 3bc02de2: 00850ab3 add s5,a0,s0 + 3bc02de6: 0421 addi s0,s0,8 + 3bc02de8: 942a add s0,s0,a0 + 3bc02dea: 080005b7 lui a1,0x8000 + 3bc02dee: 8556 mv a0,s5 + 3bc02df0: c8dff0ef jal ra,3bc02a7c + 3bc02df4: 06400613 li a2,100 + 3bc02df8: 04000593 li a1,64 + 3bc02dfc: 8522 mv a0,s0 + 3bc02dfe: d01ff0ef jal ra,3bc02afe + 3bc02e02: c919 beqz a0,3bc02e18 <_dwc2_ep_disable.isra.0+0xb6> + 3bc02e04: 00008597 auipc a1,0x8 + 3bc02e08: 2a458593 addi a1,a1,676 # 3bc0b0a8 <__func__.0> + 3bc02e0c: 00008517 auipc a0,0x8 + 3bc02e10: 17450513 addi a0,a0,372 # 3bc0af80 <__func__.5+0xc8> + 3bc02e14: d44fd0ef jal ra,3bc00358 + 3bc02e18: 480005b7 lui a1,0x48000 + 3bc02e1c: 8556 mv a0,s5 + 3bc02e1e: c5fff0ef jal ra,3bc02a7c + 3bc02e22: 06400613 li a2,100 + 3bc02e26: 4589 li a1,2 + 3bc02e28: 8522 mv a0,s0 + 3bc02e2a: cd5ff0ef jal ra,3bc02afe + 3bc02e2e: c919 beqz a0,3bc02e44 <_dwc2_ep_disable.isra.0+0xe2> + 3bc02e30: 00008597 auipc a1,0x8 + 3bc02e34: 27858593 addi a1,a1,632 # 3bc0b0a8 <__func__.0> + 3bc02e38: 00008517 auipc a0,0x8 + 3bc02e3c: 18850513 addi a0,a0,392 # 3bc0afc0 <__func__.5+0x108> + 3bc02e40: d18fd0ef jal ra,3bc00358 + 3bc02e44: 4589 li a1,2 + 3bc02e46: 8522 mv a0,s0 + 3bc02e48: c35ff0ef jal ra,3bc02a7c + 3bc02e4c: 07148783 lb a5,113(s1) + 3bc02e50: 0a07d163 bgez a5,3bc02ef2 <_dwc2_ep_disable.isra.0+0x190> + 3bc02e54: 5ca8 lw a0,120(s1) + 3bc02e56: cefff0ef jal ra,3bc02b44 + 3bc02e5a: 7fff8537 lui a0,0x7fff8 + 3bc02e5e: 157d addi a0,a0,-1 + 3bc02e60: 00aa7a33 and s4,s4,a0 + 3bc02e64: 08000537 lui a0,0x8000 + 3bc02e68: 85ce mv a1,s3 + 3bc02e6a: 00aa6533 or a0,s4,a0 + 3bc02e6e: 8e5fe0ef jal ra,3bc01752 + 3bc02e72: 8526 mv a0,s1 + 3bc02e74: fc600593 li a1,-58 + 3bc02e78: d5dff0ef jal ra,3bc02bd4 + 3bc02e7c: 4785 li a5,1 + 3bc02e7e: 06f48823 sb a5,112(s1) + 3bc02e82: 70e2 ld ra,56(sp) + 3bc02e84: 7442 ld s0,48(sp) + 3bc02e86: 0404b023 sd zero,64(s1) + 3bc02e8a: 7902 ld s2,32(sp) + 3bc02e8c: 74a2 ld s1,40(sp) + 3bc02e8e: 69e2 ld s3,24(sp) + 3bc02e90: 6a42 ld s4,16(sp) + 3bc02e92: 6aa2 ld s5,8(sp) + 3bc02e94: 6121 addi sp,sp,64 + 3bc02e96: 8082 ret + 3bc02e98: 05878793 addi a5,a5,88 + 3bc02e9c: bf29 j 3bc02db6 <_dwc2_ep_disable.isra.0+0x54> + 3bc02e9e: 05840413 addi s0,s0,88 + 3bc02ea2: 0416 slli s0,s0,0x5 + 3bc02ea4: 00850ab3 add s5,a0,s0 + 3bc02ea8: 0421 addi s0,s0,8 + 3bc02eaa: 942a add s0,s0,a0 + 3bc02eac: 0551 addi a0,a0,20 + 3bc02eae: 89ffe0ef jal ra,3bc0174c + 3bc02eb2: 08057513 andi a0,a0,128 + 3bc02eb6: e919 bnez a0,3bc02ecc <_dwc2_ep_disable.isra.0+0x16a> + 3bc02eb8: 00093503 ld a0,0(s2) + 3bc02ebc: 6785 lui a5,0x1 + 3bc02ebe: 80478793 addi a5,a5,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02ec2: 20000593 li a1,512 + 3bc02ec6: 953e add a0,a0,a5 + 3bc02ec8: bb5ff0ef jal ra,3bc02a7c + 3bc02ecc: 00093503 ld a0,0(s2) + 3bc02ed0: 06400613 li a2,100 + 3bc02ed4: 08000593 li a1,128 + 3bc02ed8: 0551 addi a0,a0,20 + 3bc02eda: c25ff0ef jal ra,3bc02afe + 3bc02ede: dd0d beqz a0,3bc02e18 <_dwc2_ep_disable.isra.0+0xb6> + 3bc02ee0: 00008597 auipc a1,0x8 + 3bc02ee4: 1c858593 addi a1,a1,456 # 3bc0b0a8 <__func__.0> + 3bc02ee8: 00008517 auipc a0,0x8 + 3bc02eec: 0b850513 addi a0,a0,184 # 3bc0afa0 <__func__.5+0xe8> + 3bc02ef0: b715 j 3bc02e14 <_dwc2_ep_disable.isra.0+0xb2> + 3bc02ef2: 00093503 ld a0,0(s2) + 3bc02ef6: 6785 lui a5,0x1 + 3bc02ef8: 80478793 addi a5,a5,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02efc: 40000593 li a1,1024 + 3bc02f00: 953e add a0,a0,a5 + 3bc02f02: b7bff0ef jal ra,3bc02a7c + 3bc02f06: bf91 j 3bc02e5a <_dwc2_ep_disable.isra.0+0xf8> + +000000003bc02f08 : + 3bc02f08: cd09 beqz a0,3bc02f22 + 3bc02f0a: 6138 ld a4,64(a0) + 3bc02f0c: 57a9 li a5,-22 + 3bc02f0e: cb19 beqz a4,3bc02f24 + 3bc02f10: 1141 addi sp,sp,-16 + 3bc02f12: e406 sd ra,8(sp) + 3bc02f14: e4fff0ef jal ra,3bc02d62 <_dwc2_ep_disable.isra.0> + 3bc02f18: 60a2 ld ra,8(sp) + 3bc02f1a: 4781 li a5,0 + 3bc02f1c: 853e mv a0,a5 + 3bc02f1e: 0141 addi sp,sp,16 + 3bc02f20: 8082 ret + 3bc02f22: 57a9 li a5,-22 + 3bc02f24: 853e mv a0,a5 + 3bc02f26: 8082 ret + +000000003bc02f28 : + 3bc02f28: 7139 addi sp,sp,-64 + 3bc02f2a: f426 sd s1,40(sp) + 3bc02f2c: f04a sd s2,32(sp) + 3bc02f2e: ec4e sd s3,24(sp) + 3bc02f30: 84aa mv s1,a0 + 3bc02f32: 04053983 ld s3,64(a0) + 3bc02f36: 892e mv s2,a1 + 3bc02f38: 05050513 addi a0,a0,80 + 3bc02f3c: fca00593 li a1,-54 + 3bc02f40: fc06 sd ra,56(sp) + 3bc02f42: f822 sd s0,48(sp) + 3bc02f44: e852 sd s4,16(sp) + 3bc02f46: e456 sd s5,8(sp) + 3bc02f48: c8dff0ef jal ra,3bc02bd4 + 3bc02f4c: 8526 mv a0,s1 + 3bc02f4e: 98dff0ef jal ra,3bc028da + 3bc02f52: 00011417 auipc s0,0x11 + 3bc02f56: 86640413 addi s0,s0,-1946 # 3bc137b8 + 3bc02f5a: 22091863 bnez s2,3bc0318a + 3bc02f5e: 6008 ld a0,0(s0) + 3bc02f60: 04050513 addi a0,a0,64 + 3bc02f64: fe8fe0ef jal ra,3bc0174c + 3bc02f68: 600c ld a1,0(s0) + 3bc02f6a: 6791 lui a5,0x4 + 3bc02f6c: 3c05350b extu a0,a0,15,0 + 3bc02f70: 20978793 addi a5,a5,521 # 4209 <__BSS_SIZE__-0x1a07> + 3bc02f74: 05c1 addi a1,a1,16 + 3bc02f76: 06a7ee63 bltu a5,a0,3bc02ff2 + 3bc02f7a: 4505 li a0,1 + 3bc02f7c: fd6fe0ef jal ra,3bc01752 + 3bc02f80: 03300a13 li s4,51 + 3bc02f84: 4505 li a0,1 + 3bc02f86: a04fd0ef jal ra,3bc0018a + 3bc02f8a: 6008 ld a0,0(s0) + 3bc02f8c: 3a7d addiw s4,s4,-1 + 3bc02f8e: 0541 addi a0,a0,16 + 3bc02f90: fbcfe0ef jal ra,3bc0174c + 3bc02f94: 0005061b sext.w a2,a0 + 3bc02f98: 020a1463 bnez s4,3bc02fc0 + 3bc02f9c: 00008597 auipc a1,0x8 + 3bc02fa0: 13c58593 addi a1,a1,316 # 3bc0b0d8 <__func__.2> + 3bc02fa4: 00008517 auipc a0,0x8 + 3bc02fa8: 03c50513 addi a0,a0,60 # 3bc0afe0 <__func__.5+0x128> + 3bc02fac: 7442 ld s0,48(sp) + 3bc02fae: 70e2 ld ra,56(sp) + 3bc02fb0: 74a2 ld s1,40(sp) + 3bc02fb2: 7902 ld s2,32(sp) + 3bc02fb4: 69e2 ld s3,24(sp) + 3bc02fb6: 6a42 ld s4,16(sp) + 3bc02fb8: 6aa2 ld s5,8(sp) + 3bc02fba: 6121 addi sp,sp,64 + 3bc02fbc: b9cfd06f j 3bc00358 + 3bc02fc0: 8a05 andi a2,a2,1 + 3bc02fc2: f269 bnez a2,3bc02f84 + 3bc02fc4: 03300a13 li s4,51 + 3bc02fc8: 4505 li a0,1 + 3bc02fca: 9c0fd0ef jal ra,3bc0018a + 3bc02fce: 6008 ld a0,0(s0) + 3bc02fd0: 3a7d addiw s4,s4,-1 + 3bc02fd2: 0541 addi a0,a0,16 + 3bc02fd4: f78fe0ef jal ra,3bc0174c + 3bc02fd8: 0005061b sext.w a2,a0 + 3bc02fdc: 060a1963 bnez s4,3bc0304e + 3bc02fe0: 00008597 auipc a1,0x8 + 3bc02fe4: 0f858593 addi a1,a1,248 # 3bc0b0d8 <__func__.2> + 3bc02fe8: 00008517 auipc a0,0x8 + 3bc02fec: 04850513 addi a0,a0,72 # 3bc0b030 <__func__.5+0x178> + 3bc02ff0: bf75 j 3bc02fac + 3bc02ff2: 4505 li a0,1 + 3bc02ff4: f5efe0ef jal ra,3bc01752 + 3bc02ff8: 03300a93 li s5,51 + 3bc02ffc: 20000a37 lui s4,0x20000 + 3bc03000: 4505 li a0,1 + 3bc03002: 988fd0ef jal ra,3bc0018a + 3bc03006: 6008 ld a0,0(s0) + 3bc03008: 3afd addiw s5,s5,-1 + 3bc0300a: 0541 addi a0,a0,16 + 3bc0300c: f40fe0ef jal ra,3bc0174c + 3bc03010: 0005061b sext.w a2,a0 + 3bc03014: 000a9b63 bnez s5,3bc0302a + 3bc03018: 00008597 auipc a1,0x8 + 3bc0301c: 0c058593 addi a1,a1,192 # 3bc0b0d8 <__func__.2> + 3bc03020: 00008517 auipc a0,0x8 + 3bc03024: fe850513 addi a0,a0,-24 # 3bc0b008 <__func__.5+0x150> + 3bc03028: b751 j 3bc02fac + 3bc0302a: 01467633 and a2,a2,s4 + 3bc0302e: 2601 sext.w a2,a2 + 3bc03030: da61 beqz a2,3bc03000 + 3bc03032: 6008 ld a0,0(s0) + 3bc03034: 0541 addi a0,a0,16 + 3bc03036: f16fe0ef jal ra,3bc0174c + 3bc0303a: 600c ld a1,0(s0) + 3bc0303c: 2501 sext.w a0,a0 + 3bc0303e: 9979 andi a0,a0,-2 + 3bc03040: 01456533 or a0,a0,s4 + 3bc03044: 05c1 addi a1,a1,16 + 3bc03046: 2501 sext.w a0,a0 + 3bc03048: f0afe0ef jal ra,3bc01752 + 3bc0304c: bfa5 j 3bc02fc4 + 3bc0304e: f6065de3 bgez a2,3bc02fc8 + 3bc03052: 0309a503 lw a0,48(s3) + 3bc03056: e509 bnez a0,3bc03060 + 3bc03058: 40081537 lui a0,0x40081 + 3bc0305c: 40f50513 addi a0,a0,1039 # 4008140f <__BL2_END__+0x446dbff> + 3bc03060: 600c ld a1,0(s0) + 3bc03062: 05b1 addi a1,a1,12 + 3bc03064: eeefe0ef jal ra,3bc01752 + 3bc03068: c21ff0ef jal ra,3bc02c88 + 3bc0306c: 02091063 bnez s2,3bc0308c + 3bc03070: 6008 ld a0,0(s0) + 3bc03072: 6985 lui s3,0x1 + 3bc03074: 80498993 addi s3,s3,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc03078: 954e add a0,a0,s3 + 3bc0307a: ed2fe0ef jal ra,3bc0174c + 3bc0307e: 600c ld a1,0(s0) + 3bc03080: 2501 sext.w a0,a0 + 3bc03082: 00256513 ori a0,a0,2 + 3bc03086: 95ce add a1,a1,s3 + 3bc03088: ecafe0ef jal ra,3bc01752 + 3bc0308c: 600c ld a1,0(s0) + 3bc0308e: 6985 lui s3,0x1 + 3bc03090: 80098a13 addi s4,s3,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc03094: 95d2 add a1,a1,s4 + 3bc03096: 00040537 lui a0,0x40 + 3bc0309a: eb8fe0ef jal ra,3bc01752 + 3bc0309e: 600c ld a1,0(s0) + 3bc030a0: 557d li a0,-1 + 3bc030a2: 0591 addi a1,a1,4 + 3bc030a4: eaefe0ef jal ra,3bc01752 + 3bc030a8: 600c ld a1,0(s0) + 3bc030aa: 557d li a0,-1 + 3bc030ac: 05d1 addi a1,a1,20 + 3bc030ae: ea4fe0ef jal ra,3bc01752 + 3bc030b2: 600c ld a1,0(s0) + 3bc030b4: 800c4537 lui a0,0x800c4 + 3bc030b8: 81050513 addi a0,a0,-2032 # ffffffff800c3810 <__BL2_END__+0xffffffff444b0000> + 3bc030bc: 05e1 addi a1,a1,24 + 3bc030be: e94fe0ef jal ra,3bc01752 + 3bc030c2: 600c ld a1,0(s0) + 3bc030c4: 4505 li a0,1 + 3bc030c6: 05a1 addi a1,a1,8 + 3bc030c8: e8afe0ef jal ra,3bc01752 + 3bc030cc: 600c ld a1,0(s0) + 3bc030ce: 81098793 addi a5,s3,-2032 + 3bc030d2: 4535 li a0,13 + 3bc030d4: 95be add a1,a1,a5 + 3bc030d6: e7cfe0ef jal ra,3bc01752 + 3bc030da: 600c ld a1,0(s0) + 3bc030dc: 81498793 addi a5,s3,-2028 + 3bc030e0: 4535 li a0,13 + 3bc030e2: 95be add a1,a1,a5 + 3bc030e4: e6efe0ef jal ra,3bc01752 + 3bc030e8: 600c ld a1,0(s0) + 3bc030ea: 81c98793 addi a5,s3,-2020 + 3bc030ee: 6541 lui a0,0x10 + 3bc030f0: 95be add a1,a1,a5 + 3bc030f2: 0505 addi a0,a0,1 + 3bc030f4: e5efe0ef jal ra,3bc01752 + 3bc030f8: 02091f63 bnez s2,3bc03136 + 3bc030fc: 6008 ld a0,0(s0) + 3bc030fe: 80498993 addi s3,s3,-2044 + 3bc03102: 954e add a0,a0,s3 + 3bc03104: e48fe0ef jal ra,3bc0174c + 3bc03108: 600c ld a1,0(s0) + 3bc0310a: 2501 sext.w a0,a0 + 3bc0310c: 01456533 or a0,a0,s4 + 3bc03110: 95ce add a1,a1,s3 + 3bc03112: e40fe0ef jal ra,3bc01752 + 3bc03116: 4529 li a0,10 + 3bc03118: 872fd0ef jal ra,3bc0018a + 3bc0311c: 6008 ld a0,0(s0) + 3bc0311e: 954e add a0,a0,s3 + 3bc03120: e2cfe0ef jal ra,3bc0174c + 3bc03124: 600c ld a1,0(s0) + 3bc03126: 77fd lui a5,0xfffff + 3bc03128: 2501 sext.w a0,a0 + 3bc0312a: 7ff78793 addi a5,a5,2047 # fffffffffffff7ff <__BL2_END__+0xffffffffc43ebfef> + 3bc0312e: 95ce add a1,a1,s3 + 3bc03130: 8d7d and a0,a0,a5 + 3bc03132: e20fe0ef jal ra,3bc01752 + 3bc03136: 8526 mv a0,s1 + 3bc03138: 7dc000ef jal ra,3bc03914 + 3bc0313c: 600c ld a1,0(s0) + 3bc0313e: 6785 lui a5,0x1 + 3bc03140: 90078793 addi a5,a5,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc03144: 95be add a1,a1,a5 + 3bc03146: 6521 lui a0,0x8 + 3bc03148: e0afe0ef jal ra,3bc01752 + 3bc0314c: 50000993 li s3,1280 + 3bc03150: 00091463 bnez s2,3bc03158 + 3bc03154: 50200993 li s3,1282 + 3bc03158: 6008 ld a0,0(s0) + 3bc0315a: 6485 lui s1,0x1 + 3bc0315c: 80448493 addi s1,s1,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc03160: 9526 add a0,a0,s1 + 3bc03162: deafe0ef jal ra,3bc0174c + 3bc03166: 600c ld a1,0(s0) + 3bc03168: 2501 sext.w a0,a0 + 3bc0316a: 00a9e533 or a0,s3,a0 + 3bc0316e: 95a6 add a1,a1,s1 + 3bc03170: de2fe0ef jal ra,3bc01752 + 3bc03174: 7442 ld s0,48(sp) + 3bc03176: 70e2 ld ra,56(sp) + 3bc03178: 74a2 ld s1,40(sp) + 3bc0317a: 7902 ld s2,32(sp) + 3bc0317c: 69e2 ld s3,24(sp) + 3bc0317e: 6a42 ld s4,16(sp) + 3bc03180: 6aa2 ld s5,8(sp) + 3bc03182: 450d li a0,3 + 3bc03184: 6121 addi sp,sp,64 + 3bc03186: 82efd06f j 3bc001b4 + 3bc0318a: 74fc ld a5,232(s1) + 3bc0318c: c789 beqz a5,3bc03196 + 3bc0318e: 0d048513 addi a0,s1,208 + 3bc03192: bd1ff0ef jal ra,3bc02d62 <_dwc2_ep_disable.isra.0> + 3bc03196: 1684b783 ld a5,360(s1) + 3bc0319a: c789 beqz a5,3bc031a4 + 3bc0319c: 15048513 addi a0,s1,336 + 3bc031a0: bc3ff0ef jal ra,3bc02d62 <_dwc2_ep_disable.isra.0> + 3bc031a4: 1e84b783 ld a5,488(s1) + 3bc031a8: ea0785e3 beqz a5,3bc03052 + 3bc031ac: 1d048513 addi a0,s1,464 + 3bc031b0: bb3ff0ef jal ra,3bc02d62 <_dwc2_ep_disable.isra.0> + 3bc031b4: bd79 j 3bc03052 + +000000003bc031b6 : + 3bc031b6: 7139 addi sp,sp,-64 + 3bc031b8: f822 sd s0,48(sp) + 3bc031ba: f426 sd s1,40(sp) + 3bc031bc: fc06 sd ra,56(sp) + 3bc031be: f04a sd s2,32(sp) + 3bc031c0: ec4e sd s3,24(sp) + 3bc031c2: e852 sd s4,16(sp) + 3bc031c4: e456 sd s5,8(sp) + 3bc031c6: 00010497 auipc s1,0x10 + 3bc031ca: 5fa4b483 ld s1,1530(s1) # 3bc137c0 + 3bc031ce: 5429 li s0,-22 + 3bc031d0: cd0d beqz a0,3bc0320a + 3bc031d2: 451c lw a5,8(a0) + 3bc031d4: 4705 li a4,1 + 3bc031d6: 5429 li s0,-22 + 3bc031d8: 37f9 addiw a5,a5,-2 + 3bc031da: 02f76863 bltu a4,a5,3bc0320a + 3bc031de: 691c ld a5,16(a0) + 3bc031e0: c78d beqz a5,3bc0320a + 3bc031e2: 7518 ld a4,40(a0) + 3bc031e4: c31d beqz a4,3bc0320a + 3bc031e6: 7118 ld a4,32(a0) + 3bc031e8: c30d beqz a4,3bc0320a + 3bc031ea: 6538 ld a4,72(a0) + 3bc031ec: cf19 beqz a4,3bc0320a + 3bc031ee: 6938 ld a4,80(a0) + 3bc031f0: cf09 beqz a4,3bc0320a + 3bc031f2: 5435 li s0,-19 + 3bc031f4: c899 beqz s1,3bc0320a + 3bc031f6: 7c98 ld a4,56(s1) + 3bc031f8: 5441 li s0,-16 + 3bc031fa: eb01 bnez a4,3bc0320a + 3bc031fc: fc88 sd a0,56(s1) + 3bc031fe: 8526 mv a0,s1 + 3bc03200: 9782 jalr a5 + 3bc03202: 842a mv s0,a0 + 3bc03204: cd09 beqz a0,3bc0321e + 3bc03206: 0204bc23 sd zero,56(s1) + 3bc0320a: 70e2 ld ra,56(sp) + 3bc0320c: 8522 mv a0,s0 + 3bc0320e: 7442 ld s0,48(sp) + 3bc03210: 74a2 ld s1,40(sp) + 3bc03212: 7902 ld s2,32(sp) + 3bc03214: 69e2 ld s3,24(sp) + 3bc03216: 6a42 ld s4,16(sp) + 3bc03218: 6aa2 ld s5,8(sp) + 3bc0321a: 6121 addi sp,sp,64 + 3bc0321c: 8082 ret + 3bc0321e: 00010917 auipc s2,0x10 + 3bc03222: 59a90913 addi s2,s2,1434 # 3bc137b8 + 3bc03226: 00093583 ld a1,0(s2) + 3bc0322a: 6985 lui s3,0x1 + 3bc0322c: 81498793 addi a5,s3,-2028 # 814 <__BSS_SIZE__-0x53fc> + 3bc03230: 95be add a1,a1,a5 + 3bc03232: 4535 li a0,13 + 3bc03234: 0404ba03 ld s4,64(s1) + 3bc03238: d1afe0ef jal ra,3bc01752 + 3bc0323c: 00093583 ld a1,0(s2) + 3bc03240: 81098793 addi a5,s3,-2032 + 3bc03244: 4535 li a0,13 + 3bc03246: 95be add a1,a1,a5 + 3bc03248: d0afe0ef jal ra,3bc01752 + 3bc0324c: 00093583 ld a1,0(s2) + 3bc03250: 81c98793 addi a5,s3,-2020 + 3bc03254: 4501 li a0,0 + 3bc03256: 95be add a1,a1,a5 + 3bc03258: cfafe0ef jal ra,3bc01752 + 3bc0325c: 00093503 ld a0,0(s2) + 3bc03260: 80498993 addi s3,s3,-2044 + 3bc03264: 954e add a0,a0,s3 + 3bc03266: ce6fe0ef jal ra,3bc0174c + 3bc0326a: 00093583 ld a1,0(s2) + 3bc0326e: 2501 sext.w a0,a0 + 3bc03270: 00256513 ori a0,a0,2 + 3bc03274: 95ce add a1,a1,s3 + 3bc03276: cdcfe0ef jal ra,3bc01752 + 3bc0327a: a0fff0ef jal ra,3bc02c88 + 3bc0327e: 030a2983 lw s3,48(s4) # 20000030 + 3bc03282: 00099663 bnez s3,3bc0328e + 3bc03286: 400819b7 lui s3,0x40081 + 3bc0328a: 40798993 addi s3,s3,1031 # 40081407 <__BL2_END__+0x446dbf7> + 3bc0328e: 0e0007b7 lui a5,0xe000 + 3bc03292: 0007c783 lbu a5,0(a5) # e000000 + 3bc03296: 4a01 li s4,0 + 3bc03298: 8ba1 andi a5,a5,8 + 3bc0329a: c795 beqz a5,3bc032c6 + 3bc0329c: 03006ab7 lui s5,0x3006 + 3bc032a0: 014a8513 addi a0,s5,20 # 3006014 <__BSS_SIZE__+0x3000404> + 3bc032a4: ca8fe0ef jal ra,3bc0174c + 3bc032a8: 00050a1b sext.w s4,a0 + 3bc032ac: 014a8593 addi a1,s5,20 + 3bc032b0: 18b00513 li a0,395 + 3bc032b4: c9efe0ef jal ra,3bc01752 + 3bc032b8: c00037b7 lui a5,0xc0003 + 3bc032bc: 03000737 lui a4,0x3000 + 3bc032c0: 07ad addi a5,a5,11 + 3bc032c2: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc032c6: 00093583 ld a1,0(s2) + 3bc032ca: 854e mv a0,s3 + 3bc032cc: 05b1 addi a1,a1,12 + 3bc032ce: c84fe0ef jal ra,3bc01752 + 3bc032d2: 0e0007b7 lui a5,0xe000 + 3bc032d6: 0007c783 lbu a5,0(a5) # e000000 + 3bc032da: 8ba1 andi a5,a5,8 + 3bc032dc: cb99 beqz a5,3bc032f2 + 3bc032de: 030065b7 lui a1,0x3006 + 3bc032e2: 8552 mv a0,s4 + 3bc032e4: 05d1 addi a1,a1,20 + 3bc032e6: c6cfe0ef jal ra,3bc01752 + 3bc032ea: 06400513 li a0,100 + 3bc032ee: e9dfc0ef jal ra,3bc0018a + 3bc032f2: 00093583 ld a1,0(s2) + 3bc032f6: 4505 li a0,1 + 3bc032f8: 05a1 addi a1,a1,8 + 3bc032fa: c58fe0ef jal ra,3bc01752 + 3bc032fe: 4581 li a1,0 + 3bc03300: 8526 mv a0,s1 + 3bc03302: c27ff0ef jal ra,3bc02f28 + 3bc03306: 0204a023 sw zero,32(s1) + 3bc0330a: b701 j 3bc0320a + +000000003bc0330c : + 3bc0330c: c901 beqz a0,3bc0331c + 3bc0330e: 0015151b slliw a0,a0,0x1 + 3bc03312: 00b035b3 snez a1,a1 + 3bc03316: 9d0d subw a0,a0,a1 + 3bc03318: 0ff57513 andi a0,a0,255 + 3bc0331c: 8082 ret + +000000003bc0331e : + 3bc0331e: 4510 lw a2,8(a0) + 3bc03320: 1101 addi sp,sp,-32 + 3bc03322: ec06 sd ra,24(sp) + 3bc03324: e822 sd s0,16(sp) + 3bc03326: e426 sd s1,8(sp) + 3bc03328: 27700793 li a5,631 + 3bc0332c: 02c7e063 bltu a5,a2,3bc0334c + 3bc03330: 00008517 auipc a0,0x8 + 3bc03334: d2850513 addi a0,a0,-728 # 3bc0b058 <__func__.5+0x1a0> + 3bc03338: 27800593 li a1,632 + 3bc0333c: 81cfd0ef jal ra,3bc00358 + 3bc03340: 557d li a0,-1 + 3bc03342: 60e2 ld ra,24(sp) + 3bc03344: 6442 ld s0,16(sp) + 3bc03346: 64a2 ld s1,8(sp) + 3bc03348: 6105 addi sp,sp,32 + 3bc0334a: 8082 ret + 3bc0334c: 6100 ld s0,0(a0) + 3bc0334e: 84aa mv s1,a0 + 3bc03350: 27800613 li a2,632 + 3bc03354: 4581 li a1,0 + 3bc03356: 8522 mv a0,s0 + 3bc03358: ec8fd0ef jal ra,3bc00a20 + 3bc0335c: 708c ld a1,32(s1) + 3bc0335e: 00008717 auipc a4,0x8 + 3bc03362: 65270713 addi a4,a4,1618 # 3bc0b9b0 + 3bc03366: 20000613 li a2,512 + 3bc0336a: 00010797 auipc a5,0x10 + 3bc0336e: 44b7b723 sd a1,1102(a5) # 3bc137b8 + 3bc03372: 00008797 auipc a5,0x8 + 3bc03376: dbe78793 addi a5,a5,-578 # 3bc0b130 + 3bc0337a: e81c sd a5,16(s0) + 3bc0337c: 05040793 addi a5,s0,80 + 3bc03380: ec1c sd a5,24(s0) + 3bc03382: 00008797 auipc a5,0x8 + 3bc03386: d9e78793 addi a5,a5,-610 # 3bc0b120 + 3bc0338a: f81c sd a5,48(s0) + 3bc0338c: 02c44783 lbu a5,44(s0) + 3bc03390: f838 sd a4,112(s0) + 3bc03392: f878 sd a4,240(s0) + 3bc03394: fc07f793 andi a5,a5,-64 + 3bc03398: 0017e793 ori a5,a5,1 + 3bc0339c: 02f40623 sb a5,44(s0) + 3bc033a0: 478d li a5,3 + 3bc033a2: d05c sw a5,36(s0) + 3bc033a4: 00008797 auipc a5,0x8 + 3bc033a8: dd478793 addi a5,a5,-556 # 3bc0b178 + 3bc033ac: f43c sd a5,104(s0) + 3bc033ae: 04000793 li a5,64 + 3bc033b2: 06f41c23 sh a5,120(s0) + 3bc033b6: 00008797 auipc a5,0x8 + 3bc033ba: dd278793 addi a5,a5,-558 # 3bc0b188 + 3bc033be: f47c sd a5,232(s0) + 3bc033c0: 28100793 li a5,641 + 3bc033c4: 14f410a3 sh a5,321(s0) + 3bc033c8: 4785 li a5,1 + 3bc033ca: 02079693 slli a3,a5,0x20 + 3bc033ce: 00268513 addi a0,a3,2 + 3bc033d2: 14a43223 sd a0,324(s0) + 3bc033d6: 0685 addi a3,a3,1 + 3bc033d8: 00008517 auipc a0,0x8 + 3bc033dc: dc050513 addi a0,a0,-576 # 3bc0b198 + 3bc033e0: 16a43423 sd a0,360(s0) + 3bc033e4: 1cd43223 sd a3,452(s0) + 3bc033e8: 20100513 li a0,513 + 3bc033ec: 00008697 auipc a3,0x8 + 3bc033f0: dbc68693 addi a3,a3,-580 # 3bc0b1a8 + 3bc033f4: 1786 slli a5,a5,0x21 + 3bc033f6: 078d addi a5,a5,3 + 3bc033f8: 16e43823 sd a4,368(s0) + 3bc033fc: 1ee43823 sd a4,496(s0) + 3bc03400: e024 sd s1,64(s0) + 3bc03402: 24040823 sb zero,592(s0) + 3bc03406: e440 sd s0,136(s0) + 3bc03408: 0c0410a3 sh zero,193(s0) + 3bc0340c: 0c042223 sw zero,196(s0) + 3bc03410: 0ec41c23 sh a2,248(s0) + 3bc03414: 10843423 sd s0,264(s0) + 3bc03418: 16c41c23 sh a2,376(s0) + 3bc0341c: 18843423 sd s0,392(s0) + 3bc03420: 1ca410a3 sh a0,449(s0) + 3bc03424: 1ed43423 sd a3,488(s0) + 3bc03428: 1ec41c23 sh a2,504(s0) + 3bc0342c: 20843423 sd s0,520(s0) + 3bc03430: 38200713 li a4,898 + 3bc03434: 24e410a3 sh a4,577(s0) + 3bc03438: 24f43223 sd a5,580(s0) + 3bc0343c: 00010797 auipc a5,0x10 + 3bc03440: 3887b223 sd s0,900(a5) # 3bc137c0 + 3bc03444: 60bc ld a5,64(s1) + 3bc03446: 24f43c23 sd a5,600(s0) + 3bc0344a: eb89 bnez a5,3bc0345c + 3bc0344c: 00008517 auipc a0,0x8 + 3bc03450: c3c50513 addi a0,a0,-964 # 3bc0b088 <__func__.5+0x1d0> + 3bc03454: f05fc0ef jal ra,3bc00358 + 3bc03458: 5551 li a0,-12 + 3bc0345a: b5e5 j 3bc03342 + 3bc0345c: 8522 mv a0,s0 + 3bc0345e: 26f42023 sw a5,608(s0) + 3bc03462: 26b43423 sd a1,616(s0) + 3bc03466: c74ff0ef jal ra,3bc028da + 3bc0346a: 4501 li a0,0 + 3bc0346c: bdd9 j 3bc03342 + +000000003bc0346e : + 3bc0346e: 1101 addi sp,sp,-32 + 3bc03470: e426 sd s1,8(sp) + 3bc03472: 00010497 auipc s1,0x10 + 3bc03476: 34648493 addi s1,s1,838 # 3bc137b8 + 3bc0347a: 6088 ld a0,0(s1) + 3bc0347c: ec06 sd ra,24(sp) + 3bc0347e: e822 sd s0,16(sp) + 3bc03480: 0551 addi a0,a0,20 + 3bc03482: acafe0ef jal ra,3bc0174c + 3bc03486: 0005041b sext.w s0,a0 + 3bc0348a: 6088 ld a0,0(s1) + 3bc0348c: 0561 addi a0,a0,24 + 3bc0348e: abefe0ef jal ra,3bc0174c + 3bc03492: 2501 sext.w a0,a0 + 3bc03494: 8c69 and s0,s0,a0 + 3bc03496: cc01 beqz s0,3bc034ae + 3bc03498: 6442 ld s0,16(sp) + 3bc0349a: 60e2 ld ra,24(sp) + 3bc0349c: 64a2 ld s1,8(sp) + 3bc0349e: 00010597 auipc a1,0x10 + 3bc034a2: 3225b583 ld a1,802(a1) # 3bc137c0 + 3bc034a6: 4505 li a0,1 + 3bc034a8: 6105 addi sp,sp,32 + 3bc034aa: 3fb0006f j 3bc040a4 + 3bc034ae: 60e2 ld ra,24(sp) + 3bc034b0: 6442 ld s0,16(sp) + 3bc034b2: 64a2 ld s1,8(sp) + 3bc034b4: 4501 li a0,0 + 3bc034b6: 6105 addi sp,sp,32 + 3bc034b8: 8082 ret + +000000003bc034ba : + 3bc034ba: 7179 addi sp,sp,-48 + 3bc034bc: f022 sd s0,32(sp) + 3bc034be: f406 sd ra,40(sp) + 3bc034c0: ec26 sd s1,24(sp) + 3bc034c2: 470d li a4,3 + 3bc034c4: 26853403 ld s0,616(a0) + 3bc034c8: 00008697 auipc a3,0x8 + 3bc034cc: 53868693 addi a3,a3,1336 # 3bc0ba00 + 3bc034d0: 00008797 auipc a5,0x8 + 3bc034d4: 53478793 addi a5,a5,1332 # 3bc0ba04 + 3bc034d8: 06e59163 bne a1,a4,3bc0353a + 3bc034dc: 04000713 li a4,64 + 3bc034e0: c298 sw a4,0(a3) + 3bc034e2: 20000713 li a4,512 + 3bc034e6: c398 sw a4,0(a5) + 3bc034e8: d10c sw a1,32(a0) + 3bc034ea: 0007d783 lhu a5,0(a5) + 3bc034ee: 6485 lui s1,0x1 + 3bc034f0: 90048593 addi a1,s1,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc034f4: 95a2 add a1,a1,s0 + 3bc034f6: 04000713 li a4,64 + 3bc034fa: 06e51c23 sh a4,120(a0) + 3bc034fe: 0ef51c23 sh a5,248(a0) + 3bc03502: 16f51c23 sh a5,376(a0) + 3bc03506: 1ef51c23 sh a5,504(a0) + 3bc0350a: 852e mv a0,a1 + 3bc0350c: e42e sd a1,8(sp) + 3bc0350e: a3efe0ef jal ra,3bc0174c + 3bc03512: 65a2 ld a1,8(sp) + 3bc03514: 2501 sext.w a0,a0 + 3bc03516: 9971 andi a0,a0,-4 + 3bc03518: b0048493 addi s1,s1,-1280 + 3bc0351c: a36fe0ef jal ra,3bc01752 + 3bc03520: 9426 add s0,s0,s1 + 3bc03522: 8522 mv a0,s0 + 3bc03524: a28fe0ef jal ra,3bc0174c + 3bc03528: 85a2 mv a1,s0 + 3bc0352a: 7402 ld s0,32(sp) + 3bc0352c: 70a2 ld ra,40(sp) + 3bc0352e: 64e2 ld s1,24(sp) + 3bc03530: 2501 sext.w a0,a0 + 3bc03532: 9971 andi a0,a0,-4 + 3bc03534: 6145 addi sp,sp,48 + 3bc03536: a1cfe06f j 3bc01752 + 3bc0353a: 04000713 li a4,64 + 3bc0353e: c298 sw a4,0(a3) + 3bc03540: c398 sw a4,0(a5) + 3bc03542: 4709 li a4,2 + 3bc03544: d118 sw a4,32(a0) + 3bc03546: b755 j 3bc034ea + +000000003bc03548 : + 3bc03548: 1101 addi sp,sp,-32 + 3bc0354a: e822 sd s0,16(sp) + 3bc0354c: ec06 sd ra,24(sp) + 3bc0354e: 07154703 lbu a4,113(a0) + 3bc03552: 7d1c ld a5,56(a0) + 3bc03554: 842a mv s0,a0 + 3bc03556: fc77368b extu a3,a4,63,7 + 3bc0355a: 2687b583 ld a1,616(a5) + 3bc0355e: 00f77793 andi a5,a4,15 + 3bc03562: ce9d beqz a3,3bc035a0 + 3bc03564: 04878793 addi a5,a5,72 + 3bc03568: 0796 slli a5,a5,0x5 + 3bc0356a: 95be add a1,a1,a5 + 3bc0356c: 852e mv a0,a1 + 3bc0356e: e42e sd a1,8(sp) + 3bc03570: 9dcfe0ef jal ra,3bc0174c + 3bc03574: ffe007b7 lui a5,0xffe00 + 3bc03578: 17fd addi a5,a5,-1 + 3bc0357a: 2501 sext.w a0,a0 + 3bc0357c: 8d7d and a0,a0,a5 + 3bc0357e: 07244783 lbu a5,114(s0) + 3bc03582: 4705 li a4,1 + 3bc03584: 65a2 ld a1,8(sp) + 3bc03586: 37f9 addiw a5,a5,-2 + 3bc03588: 0ff7f793 andi a5,a5,255 + 3bc0358c: 00f76563 bltu a4,a5,3bc03596 + 3bc03590: 100007b7 lui a5,0x10000 + 3bc03594: 8d5d or a0,a0,a5 + 3bc03596: 6442 ld s0,16(sp) + 3bc03598: 60e2 ld ra,24(sp) + 3bc0359a: 6105 addi sp,sp,32 + 3bc0359c: 9b6fe06f j 3bc01752 + 3bc035a0: 05878793 addi a5,a5,88 # 10000058 + 3bc035a4: b7d1 j 3bc03568 + +000000003bc035a6 : + 3bc035a6: 1101 addi sp,sp,-32 + 3bc035a8: ec06 sd ra,24(sp) + 3bc035aa: 07154703 lbu a4,113(a0) + 3bc035ae: 7d1c ld a5,56(a0) + 3bc035b0: fc77368b extu a3,a4,63,7 + 3bc035b4: 2687b583 ld a1,616(a5) + 3bc035b8: 00f77793 andi a5,a4,15 + 3bc035bc: ca85 beqz a3,3bc035ec + 3bc035be: 04878793 addi a5,a5,72 + 3bc035c2: 0796 slli a5,a5,0x5 + 3bc035c4: 95be add a1,a1,a5 + 3bc035c6: 852e mv a0,a1 + 3bc035c8: e42e sd a1,8(sp) + 3bc035ca: 982fe0ef jal ra,3bc0174c + 3bc035ce: 0005079b sext.w a5,a0 + 3bc035d2: 65a2 ld a1,8(sp) + 3bc035d4: 0007d563 bgez a5,3bc035de + 3bc035d8: 40000737 lui a4,0x40000 + 3bc035dc: 8fd9 or a5,a5,a4 + 3bc035de: 00200537 lui a0,0x200 + 3bc035e2: 8d5d or a0,a0,a5 + 3bc035e4: 60e2 ld ra,24(sp) + 3bc035e6: 6105 addi sp,sp,32 + 3bc035e8: 96afe06f j 3bc01752 + 3bc035ec: 05878793 addi a5,a5,88 + 3bc035f0: 0796 slli a5,a5,0x5 + 3bc035f2: 95be add a1,a1,a5 + 3bc035f4: 852e mv a0,a1 + 3bc035f6: e42e sd a1,8(sp) + 3bc035f8: 954fe0ef jal ra,3bc0174c + 3bc035fc: 002007b7 lui a5,0x200 + 3bc03600: 8d5d or a0,a0,a5 + 3bc03602: 65a2 ld a1,8(sp) + 3bc03604: 2501 sext.w a0,a0 + 3bc03606: bff9 j 3bc035e4 + +000000003bc03608 : + 3bc03608: 7139 addi sp,sp,-64 + 3bc0360a: f822 sd s0,48(sp) + 3bc0360c: 26853403 ld s0,616(a0) # 200268 <__BSS_SIZE__+0x1fa658> + 3bc03610: f426 sd s1,40(sp) + 3bc03612: 6485 lui s1,0x1 + 3bc03614: ec4e sd s3,24(sp) + 3bc03616: b1048593 addi a1,s1,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc0361a: 000809b7 lui s3,0x80 + 3bc0361e: f04a sd s2,32(sp) + 3bc03620: 95a2 add a1,a1,s0 + 3bc03622: 892a mv s2,a0 + 3bc03624: 00898513 addi a0,s3,8 # 80008 <__BSS_SIZE__+0x7a3f8> + 3bc03628: fc06 sd ra,56(sp) + 3bc0362a: 928fe0ef jal ra,3bc01752 + 3bc0362e: 26092503 lw a0,608(s2) + 3bc03632: b1448593 addi a1,s1,-1260 + 3bc03636: 95a2 add a1,a1,s0 + 3bc03638: 91afe0ef jal ra,3bc01752 + 3bc0363c: b0048593 addi a1,s1,-1280 + 3bc03640: 95a2 add a1,a1,s0 + 3bc03642: 852e mv a0,a1 + 3bc03644: e42e sd a1,8(sp) + 3bc03646: 906fe0ef jal ra,3bc0174c + 3bc0364a: 0005041b sext.w s0,a0 + 3bc0364e: c0000537 lui a0,0xc0000 + 3bc03652: 157d addi a0,a0,-1 + 3bc03654: 65a2 ld a1,8(sp) + 3bc03656: 8c69 and s0,s0,a0 + 3bc03658: 84000537 lui a0,0x84000 + 3bc0365c: 8c49 or s0,s0,a0 + 3bc0365e: 8522 mv a0,s0 + 3bc03660: 8f2fe0ef jal ra,3bc01752 + 3bc03664: 85a2 mv a1,s0 + 3bc03666: 7442 ld s0,48(sp) + 3bc03668: 26092603 lw a2,608(s2) + 3bc0366c: 70e2 ld ra,56(sp) + 3bc0366e: 74a2 ld s1,40(sp) + 3bc03670: 7902 ld s2,32(sp) + 3bc03672: 00898693 addi a3,s3,8 + 3bc03676: 69e2 ld s3,24(sp) + 3bc03678: 00089537 lui a0,0x89 + 3bc0367c: 4701 li a4,0 + 3bc0367e: 88850513 addi a0,a0,-1912 # 88888 <__BSS_SIZE__+0x82c78> + 3bc03682: 6121 addi sp,sp,64 + 3bc03684: a4aff06f j 3bc028ce + +000000003bc03688 : + 3bc03688: 7179 addi sp,sp,-48 + 3bc0368a: f022 sd s0,32(sp) + 3bc0368c: 26853403 ld s0,616(a0) + 3bc03690: ec26 sd s1,24(sp) + 3bc03692: e84a sd s2,16(sp) + 3bc03694: 6485 lui s1,0x1 + 3bc03696: 892a mv s2,a0 + 3bc03698: 26052503 lw a0,608(a0) + 3bc0369c: 91448593 addi a1,s1,-1772 # 914 <__BSS_SIZE__-0x52fc> + 3bc036a0: 95a2 add a1,a1,s0 + 3bc036a2: f406 sd ra,40(sp) + 3bc036a4: 8aefe0ef jal ra,3bc01752 + 3bc036a8: 91048593 addi a1,s1,-1776 + 3bc036ac: 95a2 add a1,a1,s0 + 3bc036ae: 00080537 lui a0,0x80 + 3bc036b2: 8a0fe0ef jal ra,3bc01752 + 3bc036b6: 90048593 addi a1,s1,-1792 + 3bc036ba: 95a2 add a1,a1,s0 + 3bc036bc: 852e mv a0,a1 + 3bc036be: e42e sd a1,8(sp) + 3bc036c0: 88cfe0ef jal ra,3bc0174c + 3bc036c4: 0005041b sext.w s0,a0 + 3bc036c8: c0000537 lui a0,0xc0000 + 3bc036cc: 157d addi a0,a0,-1 + 3bc036ce: 65a2 ld a1,8(sp) + 3bc036d0: 8c69 and s0,s0,a0 + 3bc036d2: 84000537 lui a0,0x84000 + 3bc036d6: 8c49 or s0,s0,a0 + 3bc036d8: 8522 mv a0,s0 + 3bc036da: 878fe0ef jal ra,3bc01752 + 3bc036de: 479d li a5,7 + 3bc036e0: 85a2 mv a1,s0 + 3bc036e2: 7402 ld s0,32(sp) + 3bc036e4: 26092603 lw a2,608(s2) + 3bc036e8: 70a2 ld ra,40(sp) + 3bc036ea: 64e2 ld s1,24(sp) + 3bc036ec: 04f92423 sw a5,72(s2) + 3bc036f0: 6942 ld s2,16(sp) + 3bc036f2: 000ab537 lui a0,0xab + 3bc036f6: 4701 li a4,0 + 3bc036f8: 000806b7 lui a3,0x80 + 3bc036fc: aaa50513 addi a0,a0,-1366 # aaaaa <__BSS_SIZE__+0xa4e9a> + 3bc03700: 6145 addi sp,sp,48 + 3bc03702: 9ccff06f j 3bc028ce + +000000003bc03706 : + 3bc03706: 1101 addi sp,sp,-32 + 3bc03708: e822 sd s0,16(sp) + 3bc0370a: e426 sd s1,8(sp) + 3bc0370c: 26853403 ld s0,616(a0) + 3bc03710: 84aa mv s1,a0 + 3bc03712: 00087537 lui a0,0x87 + 3bc03716: 08750513 addi a0,a0,135 # 87087 <__BSS_SIZE__+0x81477> + 3bc0371a: 4701 li a4,0 + 3bc0371c: 4681 li a3,0 + 3bc0371e: 4601 li a2,0 + 3bc03720: e04a sd s2,0(sp) + 3bc03722: ec06 sd ra,24(sp) + 3bc03724: 892e mv s2,a1 + 3bc03726: 9a8ff0ef jal ra,3bc028ce + 3bc0372a: 6505 lui a0,0x1 + 3bc0372c: 02090b63 beqz s2,3bc03762 + 3bc03730: 90050513 addi a0,a0,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc03734: 9522 add a0,a0,s0 + 3bc03736: 816fe0ef jal ra,3bc0174c + 3bc0373a: 2501 sext.w a0,a0 + 3bc0373c: 002007b7 lui a5,0x200 + 3bc03740: 8d5d or a0,a0,a5 + 3bc03742: 6585 lui a1,0x1 + 3bc03744: 02090263 beqz s2,3bc03768 + 3bc03748: 90058593 addi a1,a1,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc0374c: 95a2 add a1,a1,s0 + 3bc0374e: 804fe0ef jal ra,3bc01752 + 3bc03752: 60e2 ld ra,24(sp) + 3bc03754: 6442 ld s0,16(sp) + 3bc03756: 0404a423 sw zero,72(s1) + 3bc0375a: 6902 ld s2,0(sp) + 3bc0375c: 64a2 ld s1,8(sp) + 3bc0375e: 6105 addi sp,sp,32 + 3bc03760: 8082 ret + 3bc03762: b0050513 addi a0,a0,-1280 + 3bc03766: b7f9 j 3bc03734 + 3bc03768: b0058593 addi a1,a1,-1280 + 3bc0376c: b7c5 j 3bc0374c + +000000003bc0376e : + 3bc0376e: 7179 addi sp,sp,-48 + 3bc03770: 7d18 ld a4,56(a0) + 3bc03772: 5dd4 lw a3,60(a1) + 3bc03774: ec26 sd s1,24(sp) + 3bc03776: f406 sd ra,40(sp) + 3bc03778: f022 sd s0,32(sp) + 3bc0377a: e84a sd s2,16(sp) + 3bc0377c: 07154783 lbu a5,113(a0) + 3bc03780: 84aa mv s1,a0 + 3bc03782: 6988 ld a0,16(a1) + 3bc03784: 26873603 ld a2,616(a4) # 40000268 <__BL2_END__+0x43eca58> + 3bc03788: 7c06b70b extu a4,a3,31,0 + 3bc0378c: 953a add a0,a0,a4 + 3bc0378e: 4d98 lw a4,24(a1) + 3bc03790: 8bbd andi a5,a5,15 + 3bc03792: 6591 lui a1,0x4 + 3bc03794: 9f15 subw a4,a4,a3 + 3bc03796: e399 bnez a5,3bc0379c + 3bc03798: 0284d583 lhu a1,40(s1) + 3bc0379c: 0007069b sext.w a3,a4 + 3bc037a0: 00d5b6b3 sltu a3,a1,a3 + 3bc037a4: 0016c693 xori a3,a3,1 + 3bc037a8: 40d5970b mveqz a4,a1,a3 + 3bc037ac: d0b8 sw a4,96(s1) + 3bc037ae: f4a8 sd a0,104(s1) + 3bc037b0: 0007091b sext.w s2,a4 + 3bc037b4: 4405 li s0,1 + 3bc037b6: cb91 beqz a5,3bc037ca + 3bc037b8: 00090963 beqz s2,3bc037ca + 3bc037bc: 0284d683 lhu a3,40(s1) + 3bc037c0: fff9041b addiw s0,s2,-1 + 3bc037c4: 02d4543b divuw s0,s0,a3 + 3bc037c8: 2405 addiw s0,s0,1 + 3bc037ca: 05878793 addi a5,a5,88 # 200058 <__BSS_SIZE__+0x1fa448> + 3bc037ce: 0796 slli a5,a5,0x5 + 3bc037d0: 00f605b3 add a1,a2,a5 + 3bc037d4: 852e mv a0,a1 + 3bc037d6: e42e sd a1,8(sp) + 3bc037d8: f75fd0ef jal ra,3bc0174c + 3bc037dc: 54b0 lw a2,104(s1) + 3bc037de: 840004b7 lui s1,0x84000 + 3bc037e2: 65a2 ld a1,8(sp) + 3bc037e4: 8cc9 or s1,s1,a0 + 3bc037e6: 2481 sext.w s1,s1 + 3bc037e8: 8526 mv a0,s1 + 3bc037ea: 0134141b slliw s0,s0,0x13 + 3bc037ee: e032 sd a2,0(sp) + 3bc037f0: 00896433 or s0,s2,s0 + 3bc037f4: f5ffd0ef jal ra,3bc01752 + 3bc037f8: 0004069b sext.w a3,s0 + 3bc037fc: 7402 ld s0,32(sp) + 3bc037fe: 6602 ld a2,0(sp) + 3bc03800: 70a2 ld ra,40(sp) + 3bc03802: 6942 ld s2,16(sp) + 3bc03804: 85a6 mv a1,s1 + 3bc03806: 64e2 ld s1,24(sp) + 3bc03808: 00077537 lui a0,0x77 + 3bc0380c: 4701 li a4,0 + 3bc0380e: 77750513 addi a0,a0,1911 # 77777 <__BSS_SIZE__+0x71b67> + 3bc03812: 6145 addi sp,sp,48 + 3bc03814: 8baff06f j 3bc028ce + +000000003bc03818 : + 3bc03818: 715d addi sp,sp,-80 + 3bc0381a: ec56 sd s5,24(sp) + 3bc0381c: 8aae mv s5,a1 + 3bc0381e: fc26 sd s1,56(sp) + 3bc03820: 4581 li a1,0 + 3bc03822: 84aa mv s1,a0 + 3bc03824: 8556 mv a0,s5 + 3bc03826: e0a2 sd s0,64(sp) + 3bc03828: f84a sd s2,48(sp) + 3bc0382a: f44e sd s3,40(sp) + 3bc0382c: f052 sd s4,32(sp) + 3bc0382e: e486 sd ra,72(sp) + 3bc03830: addff0ef jal ra,3bc0330c + 3bc03834: 0005079b sext.w a5,a0 + 3bc03838: 00779a13 slli s4,a5,0x7 + 3bc0383c: 014487b3 add a5,s1,s4 + 3bc03840: 00751413 slli s0,a0,0x7 + 3bc03844: 0987b903 ld s2,152(a5) + 3bc03848: 09840993 addi s3,s0,152 + 3bc0384c: 99a6 add s3,s3,s1 + 3bc0384e: 09298563 beq s3,s2,3bc038d8 + 3bc03852: 6505 lui a0,0x1 + 3bc03854: b1050513 addi a0,a0,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc03858: 005a9793 slli a5,s5,0x5 + 3bc0385c: 97aa add a5,a5,a0 + 3bc0385e: 2684b503 ld a0,616(s1) # ffffffff84000268 <__BL2_END__+0xffffffff483eca58> + 3bc03862: fc090593 addi a1,s2,-64 + 3bc03866: e42e sd a1,8(sp) + 3bc03868: 953e add a0,a0,a5 + 3bc0386a: ee3fd0ef jal ra,3bc0174c + 3bc0386e: 0005071b sext.w a4,a0 + 3bc03872: 65a2 ld a1,8(sp) + 3bc03874: 07f77693 andi a3,a4,127 + 3bc03878: 000a8463 beqz s5,3bc03880 + 3bc0387c: fe092683 lw a3,-32(s2) + 3bc03880: 01448833 add a6,s1,s4 + 3bc03884: 0b082703 lw a4,176(a6) + 3bc03888: ffc92883 lw a7,-4(s2) + 3bc0388c: fd892603 lw a2,-40(s2) + 3bc03890: 40d7033b subw t1,a4,a3 + 3bc03894: 05040513 addi a0,s0,80 + 3bc03898: 411607bb subw a5,a2,a7 + 3bc0389c: 86be mv a3,a5 + 3bc0389e: 00f337b3 sltu a5,t1,a5 + 3bc038a2: 0017c793 xori a5,a5,1 + 3bc038a6: 40f3168b mveqz a3,t1,a5 + 3bc038aa: 011687bb addw a5,a3,a7 + 3bc038ae: 07885683 lhu a3,120(a6) + 3bc038b2: fef92e23 sw a5,-4(s2) + 3bc038b6: 9526 add a0,a0,s1 + 3bc038b8: 02d3773b remuw a4,t1,a3 + 3bc038bc: e319 bnez a4,3bc038c2 + 3bc038be: 04f61263 bne a2,a5,3bc03902 + 3bc038c2: 020a9463 bnez s5,3bc038ea + 3bc038c6: 44b8 lw a4,72(s1) + 3bc038c8: 4791 li a5,4 + 3bc038ca: 02f71063 bne a4,a5,3bc038ea + 3bc038ce: 8526 mv a0,s1 + 3bc038d0: db9ff0ef jal ra,3bc03688 + 3bc038d4: 479d li a5,7 + 3bc038d6: c4bc sw a5,72(s1) + 3bc038d8: 60a6 ld ra,72(sp) + 3bc038da: 6406 ld s0,64(sp) + 3bc038dc: 74e2 ld s1,56(sp) + 3bc038de: 7942 ld s2,48(sp) + 3bc038e0: 79a2 ld s3,40(sp) + 3bc038e2: 7a02 ld s4,32(sp) + 3bc038e4: 6ae2 ld s5,24(sp) + 3bc038e6: 6161 addi sp,sp,80 + 3bc038e8: 8082 ret + 3bc038ea: 4601 li a2,0 + 3bc038ec: e42a sd a0,8(sp) + 3bc038ee: 832ff0ef jal ra,3bc02920 + 3bc038f2: 014487b3 add a5,s1,s4 + 3bc038f6: 6fcc ld a1,152(a5) + 3bc038f8: feb980e3 beq s3,a1,3bc038d8 + 3bc038fc: 6522 ld a0,8(sp) + 3bc038fe: fc058593 addi a1,a1,-64 # 3fc0 <__BSS_SIZE__-0x1c50> + 3bc03902: 6406 ld s0,64(sp) + 3bc03904: 60a6 ld ra,72(sp) + 3bc03906: 74e2 ld s1,56(sp) + 3bc03908: 7942 ld s2,48(sp) + 3bc0390a: 79a2 ld s3,40(sp) + 3bc0390c: 7a02 ld s4,32(sp) + 3bc0390e: 6ae2 ld s5,24(sp) + 3bc03910: 6161 addi sp,sp,80 + 3bc03912: bdb1 j 3bc0376e + +000000003bc03914 : + 3bc03914: 26853583 ld a1,616(a0) + 3bc03918: 6785 lui a5,0x1 + 3bc0391a: b1078793 addi a5,a5,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc0391e: 20080537 lui a0,0x20080 + 3bc03922: 95be add a1,a1,a5 + 3bc03924: 0521 addi a0,a0,8 + 3bc03926: e2dfd06f j 3bc01752 + +000000003bc0392a : + 3bc0392a: 7179 addi sp,sp,-48 + 3bc0392c: e84a sd s2,16(sp) + 3bc0392e: 26853903 ld s2,616(a0) # 20080268 + 3bc03932: 0585 addi a1,a1,1 + 3bc03934: f022 sd s0,32(sp) + 3bc03936: 05b2 slli a1,a1,0xc + 3bc03938: 0036841b addiw s0,a3,3 + 3bc0393c: ec26 sd s1,24(sp) + 3bc0393e: f406 sd ra,40(sp) + 3bc03940: 4024340b extu s0,s0,16,2 + 3bc03944: 992e add s2,s2,a1 + 3bc03946: 4481 li s1,0 + 3bc03948: 0004879b sext.w a5,s1 + 3bc0394c: 0087e863 bltu a5,s0,3bc0395c + 3bc03950: 70a2 ld ra,40(sp) + 3bc03952: 7402 ld s0,32(sp) + 3bc03954: 64e2 ld s1,24(sp) + 3bc03956: 6942 ld s2,16(sp) + 3bc03958: 6145 addi sp,sp,48 + 3bc0395a: 8082 ret + 3bc0395c: 4496450b lrw a0,a2,s1,2 + 3bc03960: 85ca mv a1,s2 + 3bc03962: e432 sd a2,8(sp) + 3bc03964: deffd0ef jal ra,3bc01752 + 3bc03968: 6622 ld a2,8(sp) + 3bc0396a: 0485 addi s1,s1,1 + 3bc0396c: bff1 j 3bc03948 + +000000003bc0396e : + 3bc0396e: 7d1c ld a5,56(a0) + 3bc03970: 7119 addi sp,sp,-128 + 3bc03972: f8a2 sd s0,112(sp) + 3bc03974: f862 sd s8,48(sp) + 3bc03976: f466 sd s9,40(sp) + 3bc03978: f06a sd s10,32(sp) + 3bc0397a: 2687bc83 ld s9,616(a5) + 3bc0397e: fc86 sd ra,120(sp) + 3bc03980: 5ddc lw a5,60(a1) + 3bc03982: f4a6 sd s1,104(sp) + 3bc03984: f0ca sd s2,96(sp) + 3bc03986: ecce sd s3,88(sp) + 3bc03988: e8d2 sd s4,80(sp) + 3bc0398a: e4d6 sd s5,72(sp) + 3bc0398c: e0da sd s6,64(sp) + 3bc0398e: fc5e sd s7,56(sp) + 3bc03990: ec6e sd s11,24(sp) + 3bc03992: 07154903 lbu s2,113(a0) + 3bc03996: 6998 ld a4,16(a1) + 3bc03998: 4d80 lw s0,24(a1) + 3bc0399a: 7c07b60b extu a2,a5,31,0 + 3bc0399e: 00f97d13 andi s10,s2,15 + 3bc039a2: 963a add a2,a2,a4 + 3bc039a4: 40f4073b subw a4,s0,a5 + 3bc039a8: 6791 lui a5,0x4 + 3bc039aa: 8c2a mv s8,a0 + 3bc039ac: 896a mv s2,s10 + 3bc039ae: 6411 lui s0,0x4 + 3bc039b0: 00e7e363 bltu a5,a4,3bc039b6 + 3bc039b4: 843a mv s0,a4 + 3bc039b6: 000d1d63 bnez s10,3bc039d0 + 3bc039ba: 028c5783 lhu a5,40(s8) + 3bc039be: 873e mv a4,a5 + 3bc039c0: 00f437b3 sltu a5,s0,a5 + 3bc039c4: 0017c793 xori a5,a5,1 + 3bc039c8: 40f4170b mveqz a4,s0,a5 + 3bc039cc: 0007041b sext.w s0,a4 + 3bc039d0: 0004099b sext.w s3,s0 + 3bc039d4: 073c2023 sw s3,96(s8) + 3bc039d8: 06cc3423 sd a2,104(s8) + 3bc039dc: 00060a1b sext.w s4,a2 + 3bc039e0: 4785 li a5,1 + 3bc039e2: c801 beqz s0,3bc039f2 + 3bc039e4: 028c5503 lhu a0,40(s8) + 3bc039e8: fff4079b addiw a5,s0,-1 + 3bc039ec: 02a7d7bb divuw a5,a5,a0 + 3bc039f0: 2785 addiw a5,a5,1 + 3bc039f2: 6d85 lui s11,0x1 + 3bc039f4: 005d1b13 slli s6,s10,0x5 + 3bc039f8: 910d8a93 addi s5,s11,-1776 # 910 <__BSS_SIZE__-0x5300> + 3bc039fc: 0137979b slliw a5,a5,0x13 + 3bc03a00: 9ada add s5,s5,s6 + 3bc03a02: 00f46533 or a0,s0,a5 + 3bc03a06: 9ae6 add s5,s5,s9 + 3bc03a08: 85d6 mv a1,s5 + 3bc03a0a: 2501 sext.w a0,a0 + 3bc03a0c: e432 sd a2,8(sp) + 3bc03a0e: d45fd0ef jal ra,3bc01752 + 3bc03a12: 900d8793 addi a5,s11,-1792 + 3bc03a16: 9b3e add s6,s6,a5 + 3bc03a18: 9b66 add s6,s6,s9 + 3bc03a1a: 855a mv a0,s6 + 3bc03a1c: d31fd0ef jal ra,3bc0174c + 3bc03a20: 078c2783 lw a5,120(s8) + 3bc03a24: bc4004b7 lui s1,0xbc400 + 3bc03a28: 00050b9b sext.w s7,a0 + 3bc03a2c: 14fd addi s1,s1,-1 + 3bc03a2e: 0167979b slliw a5,a5,0x16 + 3bc03a32: 009bf4b3 and s1,s7,s1 + 3bc03a36: 8cdd or s1,s1,a5 + 3bc03a38: 77e1 lui a5,0xffff8 + 3bc03a3a: 7ff78793 addi a5,a5,2047 # ffffffffffff87ff <__BL2_END__+0xffffffffc43e4fef> + 3bc03a3e: 2481 sext.w s1,s1 + 3bc03a40: 8cfd and s1,s1,a5 + 3bc03a42: 840007b7 lui a5,0x84000 + 3bc03a46: 8cdd or s1,s1,a5 + 3bc03a48: 85da mv a1,s6 + 3bc03a4a: 8526 mv a0,s1 + 3bc03a4c: d07fd0ef jal ra,3bc01752 + 3bc03a50: 6622 ld a2,8(sp) + 3bc03a52: 038c3503 ld a0,56(s8) + 3bc03a56: 3c04368b extu a3,s0,15,0 + 3bc03a5a: 85ea mv a1,s10 + 3bc03a5c: ecfff0ef jal ra,3bc0392a + 3bc03a60: c809 beqz s0,3bc03a72 + 3bc03a62: 834d8593 addi a1,s11,-1996 + 3bc03a66: 4505 li a0,1 + 3bc03a68: 95e6 add a1,a1,s9 + 3bc03a6a: 0125153b sllw a0,a0,s2 + 3bc03a6e: ce5fd0ef jal ra,3bc01752 + 3bc03a72: 855a mv a0,s6 + 3bc03a74: cd9fd0ef jal ra,3bc0174c + 3bc03a78: 0005071b sext.w a4,a0 + 3bc03a7c: 00044537 lui a0,0x44 + 3bc03a80: 86de mv a3,s7 + 3bc03a82: 8652 mv a2,s4 + 3bc03a84: 85a6 mv a1,s1 + 3bc03a86: 44450513 addi a0,a0,1092 # 44444 <__BSS_SIZE__+0x3e834> + 3bc03a8a: e45fe0ef jal ra,3bc028ce + 3bc03a8e: 8556 mv a0,s5 + 3bc03a90: cbdfd0ef jal ra,3bc0174c + 3bc03a94: 0005059b sext.w a1,a0 + 3bc03a98: 00046537 lui a0,0x46 + 3bc03a9c: 86ca mv a3,s2 + 3bc03a9e: 8622 mv a2,s0 + 3bc03aa0: 46450513 addi a0,a0,1124 # 46464 <__BSS_SIZE__+0x40854> + 3bc03aa4: 4701 li a4,0 + 3bc03aa6: e29fe0ef jal ra,3bc028ce + 3bc03aaa: 70e6 ld ra,120(sp) + 3bc03aac: 7446 ld s0,112(sp) + 3bc03aae: 74a6 ld s1,104(sp) + 3bc03ab0: 7906 ld s2,96(sp) + 3bc03ab2: 6a46 ld s4,80(sp) + 3bc03ab4: 6aa6 ld s5,72(sp) + 3bc03ab6: 6b06 ld s6,64(sp) + 3bc03ab8: 7be2 ld s7,56(sp) + 3bc03aba: 7c42 ld s8,48(sp) + 3bc03abc: 7ca2 ld s9,40(sp) + 3bc03abe: 7d02 ld s10,32(sp) + 3bc03ac0: 6de2 ld s11,24(sp) + 3bc03ac2: 854e mv a0,s3 + 3bc03ac4: 69e6 ld s3,88(sp) + 3bc03ac6: 6109 addi sp,sp,128 + 3bc03ac8: 8082 ret + +000000003bc03aca : + 3bc03aca: 7179 addi sp,sp,-48 + 3bc03acc: e84a sd s2,16(sp) + 3bc03ace: 26853903 ld s2,616(a0) + 3bc03ad2: 0585 addi a1,a1,1 + 3bc03ad4: f022 sd s0,32(sp) + 3bc03ad6: 05b2 slli a1,a1,0xc + 3bc03ad8: 0036841b addiw s0,a3,3 + 3bc03adc: ec26 sd s1,24(sp) + 3bc03ade: f406 sd ra,40(sp) + 3bc03ae0: 4024340b extu s0,s0,16,2 + 3bc03ae4: 992e add s2,s2,a1 + 3bc03ae6: 4481 li s1,0 + 3bc03ae8: 0004879b sext.w a5,s1 + 3bc03aec: 0087e863 bltu a5,s0,3bc03afc + 3bc03af0: 70a2 ld ra,40(sp) + 3bc03af2: 7402 ld s0,32(sp) + 3bc03af4: 64e2 ld s1,24(sp) + 3bc03af6: 6942 ld s2,16(sp) + 3bc03af8: 6145 addi sp,sp,48 + 3bc03afa: 8082 ret + 3bc03afc: 854a mv a0,s2 + 3bc03afe: e432 sd a2,8(sp) + 3bc03b00: c4dfd0ef jal ra,3bc0174c + 3bc03b04: 6622 ld a2,8(sp) + 3bc03b06: 4496550b srw a0,a2,s1,2 + 3bc03b0a: 0485 addi s1,s1,1 + 3bc03b0c: bff1 j 3bc03ae8 + +000000003bc03b0e : + 3bc03b0e: 7179 addi sp,sp,-48 + 3bc03b10: e44e sd s3,8(sp) + 3bc03b12: 02855983 lhu s3,40(a0) + 3bc03b16: f022 sd s0,32(sp) + 3bc03b18: ec26 sd s1,24(sp) + 3bc03b1a: f406 sd ra,40(sp) + 3bc03b1c: e84a sd s2,16(sp) + 3bc03b1e: 84aa mv s1,a0 + 3bc03b20: 842e mv s0,a1 + 3bc03b22: e4dff0ef jal ra,3bc0396e + 3bc03b26: 2501 sext.w a0,a0 + 3bc03b28: 00a99e63 bne s3,a0,3bc03b44 + 3bc03b2c: 5c5c lw a5,60(s0) + 3bc03b2e: 4c18 lw a4,24(s0) + 3bc03b30: 4501 li a0,0 + 3bc03b32: 013787bb addw a5,a5,s3 + 3bc03b36: 00f71b63 bne a4,a5,3bc03b4c + 3bc03b3a: 505c lw a5,36(s0) + 3bc03b3c: 02e79713 slli a4,a5,0x2e + 3bc03b40: 00074663 bltz a4,3bc03b4c + 3bc03b44: 7c9c ld a5,56(s1) + 3bc03b46: 4505 li a0,1 + 3bc03b48: 0407a423 sw zero,72(a5) # ffffffff84000048 <__BL2_END__+0xffffffff483ec838> + 3bc03b4c: 70a2 ld ra,40(sp) + 3bc03b4e: 7402 ld s0,32(sp) + 3bc03b50: 64e2 ld s1,24(sp) + 3bc03b52: 6942 ld s2,16(sp) + 3bc03b54: 69a2 ld s3,8(sp) + 3bc03b56: 6145 addi sp,sp,48 + 3bc03b58: 8082 ret + +000000003bc03b5a : + 3bc03b5a: 7179 addi sp,sp,-48 + 3bc03b5c: ec26 sd s1,24(sp) + 3bc03b5e: 84ae mv s1,a1 + 3bc03b60: 26853583 ld a1,616(a0) + 3bc03b64: 6785 lui a5,0x1 + 3bc03b66: 80078793 addi a5,a5,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc03b6a: 95be add a1,a1,a5 + 3bc03b6c: f022 sd s0,32(sp) + 3bc03b6e: 842a mv s0,a0 + 3bc03b70: 852e mv a0,a1 + 3bc03b72: f406 sd ra,40(sp) + 3bc03b74: e42e sd a1,8(sp) + 3bc03b76: bd7fd0ef jal ra,3bc0174c + 3bc03b7a: 0044979b slliw a5,s1,0x4 + 3bc03b7e: 65a2 ld a1,8(sp) + 3bc03b80: 8d5d or a0,a0,a5 + 3bc03b82: 2501 sext.w a0,a0 + 3bc03b84: bcffd0ef jal ra,3bc01752 + 3bc03b88: 8522 mv a0,s0 + 3bc03b8a: affff0ef jal ra,3bc03688 + 3bc03b8e: 4785 li a5,1 + 3bc03b90: 24940823 sb s1,592(s0) # 4250 <__BSS_SIZE__-0x19c0> + 3bc03b94: 70a2 ld ra,40(sp) + 3bc03b96: 26f42823 sw a5,624(s0) + 3bc03b9a: 7402 ld s0,32(sp) + 3bc03b9c: 64e2 ld s1,24(sp) + 3bc03b9e: 6145 addi sp,sp,48 + 3bc03ba0: 8082 ret + +000000003bc03ba2 : + 3bc03ba2: 6d4c ld a1,152(a0) + 3bc03ba4: 09850693 addi a3,a0,152 + 3bc03ba8: 05050713 addi a4,a0,80 + 3bc03bac: 00d58e63 beq a1,a3,3bc03bc8 + 3bc03bb0: fd85a683 lw a3,-40(a1) + 3bc03bb4: e689 bnez a3,3bc03bbe + 3bc03bb6: 0a052823 sw zero,176(a0) + 3bc03bba: acfff06f j 3bc03688 + 3bc03bbe: fc058593 addi a1,a1,-64 + 3bc03bc2: 853a mv a0,a4 + 3bc03bc4: babff06f j 3bc0376e + 3bc03bc8: 8082 ret + +000000003bc03bca : + 3bc03bca: 6d4c ld a1,152(a0) + 3bc03bcc: 09850693 addi a3,a0,152 + 3bc03bd0: 02d58b63 beq a1,a3,3bc03c06 + 3bc03bd4: 1141 addi sp,sp,-16 + 3bc03bd6: e022 sd s0,0(sp) + 3bc03bd8: e406 sd ra,8(sp) + 3bc03bda: fc058593 addi a1,a1,-64 + 3bc03bde: 842a mv s0,a0 + 3bc03be0: 05050713 addi a4,a0,80 + 3bc03be4: 4501 li a0,0 + 3bc03be6: c989 beqz a1,3bc03bf8 + 3bc03be8: 853a mv a0,a4 + 3bc03bea: f25ff0ef jal ra,3bc03b0e + 3bc03bee: 4785 li a5,1 + 3bc03bf0: 00f51863 bne a0,a5,3bc03c00 + 3bc03bf4: 4795 li a5,5 + 3bc03bf6: c43c sw a5,72(s0) + 3bc03bf8: 60a2 ld ra,8(sp) + 3bc03bfa: 6402 ld s0,0(sp) + 3bc03bfc: 0141 addi sp,sp,16 + 3bc03bfe: 8082 ret + 3bc03c00: c43c sw a5,72(s0) + 3bc03c02: 4505 li a0,1 + 3bc03c04: bfd5 j 3bc03bf8 + 3bc03c06: 4501 li a0,0 + 3bc03c08: 8082 ret + +000000003bc03c0a : + 3bc03c0a: 1101 addi sp,sp,-32 + 3bc03c0c: ec06 sd ra,24(sp) + 3bc03c0e: 07154703 lbu a4,113(a0) + 3bc03c12: 7d1c ld a5,56(a0) + 3bc03c14: fc77368b extu a3,a4,63,7 + 3bc03c18: 2687b583 ld a1,616(a5) + 3bc03c1c: 00f77793 andi a5,a4,15 + 3bc03c20: c295 beqz a3,3bc03c44 + 3bc03c22: 04878793 addi a5,a5,72 + 3bc03c26: 0796 slli a5,a5,0x5 + 3bc03c28: 95be add a1,a1,a5 + 3bc03c2a: 852e mv a0,a1 + 3bc03c2c: e42e sd a1,8(sp) + 3bc03c2e: b1ffd0ef jal ra,3bc0174c + 3bc03c32: 65a2 ld a1,8(sp) + 3bc03c34: 60e2 ld ra,24(sp) + 3bc03c36: 080007b7 lui a5,0x8000 + 3bc03c3a: 8d5d or a0,a0,a5 + 3bc03c3c: 2501 sext.w a0,a0 + 3bc03c3e: 6105 addi sp,sp,32 + 3bc03c40: b13fd06f j 3bc01752 + 3bc03c44: 05878793 addi a5,a5,88 # 8000058 + 3bc03c48: bff9 j 3bc03c26 + +000000003bc03c4a : + 3bc03c4a: 07154703 lbu a4,113(a0) + 3bc03c4e: cd21 beqz a0,3bc03ca6 + 3bc03c50: 6134 ld a3,64(a0) + 3bc03c52: 87aa mv a5,a0 + 3bc03c54: caa9 beqz a3,3bc03ca6 + 3bc03c56: 00f77613 andi a2,a4,15 + 3bc03c5a: c631 beqz a2,3bc03ca6 + 3bc03c5c: 0036c603 lbu a2,3(a3) # 80003 <__BSS_SIZE__+0x7a3f3> + 3bc03c60: 4685 li a3,1 + 3bc03c62: 04d60263 beq a2,a3,3bc03ca6 + 3bc03c66: 1101 addi sp,sp,-32 + 3bc03c68: ec06 sd ra,24(sp) + 3bc03c6a: cd99 beqz a1,3bc03c88 + 3bc03c6c: fc77368b extu a3,a4,63,7 + 3bc03c70: c29d beqz a3,3bc03c96 + 3bc03c72: 6534 ld a3,72(a0) + 3bc03c74: 04850713 addi a4,a0,72 + 3bc03c78: fdd00593 li a1,-35 + 3bc03c7c: 00e68d63 beq a3,a4,3bc03c96 + 3bc03c80: 60e2 ld ra,24(sp) + 3bc03c82: 852e mv a0,a1 + 3bc03c84: 6105 addi sp,sp,32 + 3bc03c86: 8082 ret + 3bc03c88: 06050823 sb zero,112(a0) + 3bc03c8c: e42e sd a1,8(sp) + 3bc03c8e: 8bbff0ef jal ra,3bc03548 + 3bc03c92: 65a2 ld a1,8(sp) + 3bc03c94: b7f5 j 3bc03c80 + 3bc03c96: 4705 li a4,1 + 3bc03c98: 06e78823 sb a4,112(a5) + 3bc03c9c: 853e mv a0,a5 + 3bc03c9e: 909ff0ef jal ra,3bc035a6 + 3bc03ca2: 4581 li a1,0 + 3bc03ca4: bff1 j 3bc03c80 + 3bc03ca6: 55a9 li a1,-22 + 3bc03ca8: 852e mv a0,a1 + 3bc03caa: 8082 ret + +000000003bc03cac : + 3bc03cac: 7d1c ld a5,56(a0) + 3bc03cae: 7179 addi sp,sp,-48 + 3bc03cb0: f022 sd s0,32(sp) + 3bc03cb2: ec26 sd s1,24(sp) + 3bc03cb4: e84a sd s2,16(sp) + 3bc03cb6: e44e sd s3,8(sp) + 3bc03cb8: f406 sd ra,40(sp) + 3bc03cba: 2687b483 ld s1,616(a5) + 3bc03cbe: 07154783 lbu a5,113(a0) + 3bc03cc2: 4905 li s2,1 + 3bc03cc4: 89aa mv s3,a0 + 3bc03cc6: 00f7f413 andi s0,a5,15 + 3bc03cca: fc77b70b extu a4,a5,63,7 + 3bc03cce: 0089193b sllw s2,s2,s0 + 3bc03cd2: cf25 beqz a4,3bc03d4a + 3bc03cd4: 04840513 addi a0,s0,72 + 3bc03cd8: 0516 slli a0,a0,0x5 + 3bc03cda: 9526 add a0,a0,s1 + 3bc03cdc: a71fd0ef jal ra,3bc0174c + 3bc03ce0: 2501 sext.w a0,a0 + 3bc03ce2: 3cf5378b extu a5,a0,15,15 + 3bc03ce6: ef9d bnez a5,3bc03d24 + 3bc03ce8: fff407b7 lui a5,0xfff40 + 3bc03cec: 17fd addi a5,a5,-1 + 3bc03cee: 8d7d and a0,a0,a5 + 3bc03cf0: 0729c783 lbu a5,114(s3) + 3bc03cf4: 04840593 addi a1,s0,72 + 3bc03cf8: 0127979b slliw a5,a5,0x12 + 3bc03cfc: 8d5d or a0,a0,a5 + 3bc03cfe: 0289d783 lhu a5,40(s3) + 3bc03d02: 80057513 andi a0,a0,-2048 + 3bc03d06: 8d5d or a0,a0,a5 + 3bc03d08: 180087b7 lui a5,0x18008 + 3bc03d0c: 8d5d or a0,a0,a5 + 3bc03d0e: 07198783 lb a5,113(s3) + 3bc03d12: 2501 sext.w a0,a0 + 3bc03d14: 0007c463 bltz a5,3bc03d1c + 3bc03d18: 05840593 addi a1,s0,88 + 3bc03d1c: 0596 slli a1,a1,0x5 + 3bc03d1e: 95a6 add a1,a1,s1 + 3bc03d20: a33fd0ef jal ra,3bc01752 + 3bc03d24: 6585 lui a1,0x1 + 3bc03d26: 81c58593 addi a1,a1,-2020 # 81c <__BSS_SIZE__-0x53f4> + 3bc03d2a: 94ae add s1,s1,a1 + 3bc03d2c: 8526 mv a0,s1 + 3bc03d2e: a1ffd0ef jal ra,3bc0174c + 3bc03d32: 2501 sext.w a0,a0 + 3bc03d34: 7402 ld s0,32(sp) + 3bc03d36: 70a2 ld ra,40(sp) + 3bc03d38: 69a2 ld s3,8(sp) + 3bc03d3a: 85a6 mv a1,s1 + 3bc03d3c: 01256533 or a0,a0,s2 + 3bc03d40: 64e2 ld s1,24(sp) + 3bc03d42: 6942 ld s2,16(sp) + 3bc03d44: 6145 addi sp,sp,48 + 3bc03d46: a0dfd06f j 3bc01752 + 3bc03d4a: 05840513 addi a0,s0,88 + 3bc03d4e: 0516 slli a0,a0,0x5 + 3bc03d50: 9526 add a0,a0,s1 + 3bc03d52: 9fbfd0ef jal ra,3bc0174c + 3bc03d56: 2501 sext.w a0,a0 + 3bc03d58: 0109191b slliw s2,s2,0x10 + 3bc03d5c: b759 j 3bc03ce2 + +000000003bc03d5e : + 3bc03d5e: 453c lw a5,72(a0) + 3bc03d60: 34079163 bnez a5,3bc040a2 + 3bc03d64: 7139 addi sp,sp,-64 + 3bc03d66: f426 sd s1,40(sp) + 3bc03d68: 25853483 ld s1,600(a0) + 3bc03d6c: f822 sd s0,48(sp) + 3bc03d6e: fa400593 li a1,-92 + 3bc03d72: 842a mv s0,a0 + 3bc03d74: 05050513 addi a0,a0,80 + 3bc03d78: ec4e sd s3,24(sp) + 3bc03d7a: fc06 sd ra,56(sp) + 3bc03d7c: f04a sd s2,32(sp) + 3bc03d7e: e852 sd s4,16(sp) + 3bc03d80: c35fe0ef jal ra,3bc029b4 + 3bc03d84: 0004c783 lbu a5,0(s1) # ffffffffbc400000 <__BL2_END__+0xffffffff807ec7f0> + 3bc03d88: 0c144703 lbu a4,193(s0) + 3bc03d8c: 0064d983 lhu s3,6(s1) + 3bc03d90: fc77b60b extu a2,a5,63,7 + 3bc03d94: 07f77693 andi a3,a4,127 + 3bc03d98: c609 beqz a2,3bc03da2 + 3bc03d9a: f8076713 ori a4,a4,-128 + 3bc03d9e: 0ff77693 andi a3,a4,255 + 3bc03da2: 0607f793 andi a5,a5,96 + 3bc03da6: 25144703 lbu a4,593(s0) + 3bc03daa: 0017b793 seqz a5,a5 + 3bc03dae: 0017979b slliw a5,a5,0x1 + 3bc03db2: 0017e793 ori a5,a5,1 + 3bc03db6: 8b8d andi a5,a5,3 + 3bc03db8: 9b71 andi a4,a4,-4 + 3bc03dba: 8fd9 or a5,a5,a4 + 3bc03dbc: 24f408a3 sb a5,593(s0) + 3bc03dc0: 0cd400a3 sb a3,193(s0) + 3bc03dc4: 8b89 andi a5,a5,2 + 3bc03dc6: 24078a63 beqz a5,3bc0401a + 3bc03dca: 0014c703 lbu a4,1(s1) + 3bc03dce: 47ad li a5,11 + 3bc03dd0: 2ae7e863 bltu a5,a4,3bc04080 + 3bc03dd4: 87ba mv a5,a4 + 3bc03dd6: 00007717 auipc a4,0x7 + 3bc03dda: 3f670713 addi a4,a4,1014 # 3bc0b1cc + 3bc03dde: 44f7478b lrw a5,a4,a5,2 + 3bc03de2: 97ba add a5,a5,a4 + 3bc03de4: 8782 jr a5 + 3bc03de6: 0024d603 lhu a2,2(s1) + 3bc03dea: 000bc537 lui a0,0xbc + 3bc03dee: 4701 li a4,0 + 3bc03df0: 4681 li a3,0 + 3bc03df2: 4585 li a1,1 + 3bc03df4: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03df8: ad7fe0ef jal ra,3bc028ce + 3bc03dfc: 0004c783 lbu a5,0(s1) + 3bc03e00: 20079d63 bnez a5,3bc0401a + 3bc03e04: 8522 mv a0,s0 + 3bc03e06: 7442 ld s0,48(sp) + 3bc03e08: 0024c583 lbu a1,2(s1) + 3bc03e0c: 70e2 ld ra,56(sp) + 3bc03e0e: 74a2 ld s1,40(sp) + 3bc03e10: 7902 ld s2,32(sp) + 3bc03e12: 69e2 ld s3,24(sp) + 3bc03e14: 6a42 ld s4,16(sp) + 3bc03e16: 6121 addi sp,sp,64 + 3bc03e18: d43ff06f j 3bc03b5a + 3bc03e1c: 0024d603 lhu a2,2(s1) + 3bc03e20: 4701 li a4,0 + 3bc03e22: 4681 li a3,0 + 3bc03e24: 4589 li a1,2 + 3bc03e26: 000bc537 lui a0,0xbc + 3bc03e2a: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03e2e: aa1fe0ef jal ra,3bc028ce + 3bc03e32: a2e5 j 3bc0401a + 3bc03e34: 4701 li a4,0 + 3bc03e36: 4681 li a3,0 + 3bc03e38: 4601 li a2,0 + 3bc03e3a: 458d li a1,3 + 3bc03e3c: b7ed j 3bc03e26 + 3bc03e3e: 4701 li a4,0 + 3bc03e40: 4681 li a3,0 + 3bc03e42: 4601 li a2,0 + 3bc03e44: 4591 li a1,4 + 3bc03e46: b7c5 j 3bc03e26 + 3bc03e48: 4701 li a4,0 + 3bc03e4a: 4681 li a3,0 + 3bc03e4c: 4601 li a2,0 + 3bc03e4e: 4595 li a1,5 + 3bc03e50: bfd9 j 3bc03e26 + 3bc03e52: 000bc537 lui a0,0xbc + 3bc03e56: 4701 li a4,0 + 3bc03e58: 4681 li a3,0 + 3bc03e5a: 4601 li a2,0 + 3bc03e5c: 4599 li a1,6 + 3bc03e5e: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03e62: a6dfe0ef jal ra,3bc028ce + 3bc03e66: 0044d503 lhu a0,4(s1) + 3bc03e6a: 1c75358b extu a1,a0,7,7 + 3bc03e6e: 07f57513 andi a0,a0,127 + 3bc03e72: c9aff0ef jal ra,3bc0330c + 3bc03e76: 00011723 sh zero,14(sp) + 3bc03e7a: 0004c583 lbu a1,0(s1) + 3bc03e7e: 892a mv s2,a0 + 3bc03e80: 00007517 auipc a0,0x7 + 3bc03e84: 33850513 addi a0,a0,824 # 3bc0b1b8 + 3bc03e88: 89bd andi a1,a1,15 + 3bc03e8a: 26843a03 ld s4,616(s0) + 3bc03e8e: ccafc0ef jal ra,3bc00358 + 3bc03e92: 0004c783 lbu a5,0(s1) + 3bc03e96: 4705 li a4,1 + 3bc03e98: 8bbd andi a5,a5,15 + 3bc03e9a: 00e78a63 beq a5,a4,3bc03eae + 3bc03e9e: 4689 li a3,2 + 3bc03ea0: 06d78b63 beq a5,a3,3bc03f16 + 3bc03ea4: 16079b63 bnez a5,3bc0401a + 3bc03ea8: 00e11723 sh a4,14(sp) + 3bc03eac: a019 j 3bc03eb2 + 3bc03eae: 00011723 sh zero,14(sp) + 3bc03eb2: 25843503 ld a0,600(s0) + 3bc03eb6: 4609 li a2,2 + 3bc03eb8: 00e10593 addi a1,sp,14 + 3bc03ebc: bbffc0ef jal ra,3bc00a7a + 3bc03ec0: 6485 lui s1,0x1 + 3bc03ec2: 26042503 lw a0,608(s0) + 3bc03ec6: 91448593 addi a1,s1,-1772 # 914 <__BSS_SIZE__-0x52fc> + 3bc03eca: 95d2 add a1,a1,s4 + 3bc03ecc: 887fd0ef jal ra,3bc01752 + 3bc03ed0: 91048593 addi a1,s1,-1776 + 3bc03ed4: 00080537 lui a0,0x80 + 3bc03ed8: 95d2 add a1,a1,s4 + 3bc03eda: 0509 addi a0,a0,2 + 3bc03edc: 90048493 addi s1,s1,-1792 + 3bc03ee0: 873fd0ef jal ra,3bc01752 + 3bc03ee4: 9a26 add s4,s4,s1 + 3bc03ee6: 8552 mv a0,s4 + 3bc03ee8: 865fd0ef jal ra,3bc0174c + 3bc03eec: c00007b7 lui a5,0xc0000 + 3bc03ef0: 17fd addi a5,a5,-1 + 3bc03ef2: 2501 sext.w a0,a0 + 3bc03ef4: 8d7d and a0,a0,a5 + 3bc03ef6: 840007b7 lui a5,0x84000 + 3bc03efa: 8d5d or a0,a0,a5 + 3bc03efc: 85d2 mv a1,s4 + 3bc03efe: 855fd0ef jal ra,3bc01752 + 3bc03f02: 47a1 li a5,8 + 3bc03f04: c43c sw a5,72(s0) + 3bc03f06: 70e2 ld ra,56(sp) + 3bc03f08: 7442 ld s0,48(sp) + 3bc03f0a: 74a2 ld s1,40(sp) + 3bc03f0c: 7902 ld s2,32(sp) + 3bc03f0e: 69e2 ld s3,24(sp) + 3bc03f10: 6a42 ld s4,16(sp) + 3bc03f12: 6121 addi sp,sp,64 + 3bc03f14: 8082 ret + 3bc03f16: 0064d703 lhu a4,6(s1) + 3bc03f1a: 10e7e063 bltu a5,a4,3bc0401a + 3bc03f1e: 2901 sext.w s2,s2 + 3bc03f20: 091e slli s2,s2,0x7 + 3bc03f22: 9922 add s2,s2,s0 + 3bc03f24: 0c094783 lbu a5,192(s2) + 3bc03f28: 00f11723 sh a5,14(sp) + 3bc03f2c: b759 j 3bc03eb2 + 3bc03f2e: 000bc537 lui a0,0xbc + 3bc03f32: 4701 li a4,0 + 3bc03f34: 4681 li a3,0 + 3bc03f36: 4601 li a2,0 + 3bc03f38: 459d li a1,7 + 3bc03f3a: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03f3e: 991fe0ef jal ra,3bc028ce + 3bc03f42: 0044d503 lhu a0,4(s1) + 3bc03f46: 1c75358b extu a1,a0,7,7 + 3bc03f4a: 07f57513 andi a0,a0,127 + 3bc03f4e: bbeff0ef jal ra,3bc0330c + 3bc03f52: 00751913 slli s2,a0,0x7 + 3bc03f56: 05090913 addi s2,s2,80 + 3bc03f5a: 9922 add s2,s2,s0 + 3bc03f5c: 03893a03 ld s4,56(s2) + 3bc03f60: 258a3703 ld a4,600(s4) + 3bc03f64: 00675783 lhu a5,6(a4) + 3bc03f68: ebcd bnez a5,3bc0401a + 3bc03f6a: 00074783 lbu a5,0(a4) + 3bc03f6e: 8bbd andi a5,a5,15 + 3bc03f70: c795 beqz a5,3bc03f9c + 3bc03f72: 4689 li a3,2 + 3bc03f74: f8d799e3 bne a5,a3,3bc03f06 + 3bc03f78: 00275783 lhu a5,2(a4) + 3bc03f7c: f7c9 bnez a5,3bc03f06 + 3bc03f7e: 07194403 lbu s0,113(s2) + 3bc03f82: 883d andi s0,s0,15 + 3bc03f84: e415 bnez s0,3bc03fb0 + 3bc03f86: 4585 li a1,1 + 3bc03f88: 8552 mv a0,s4 + 3bc03f8a: 7442 ld s0,48(sp) + 3bc03f8c: 70e2 ld ra,56(sp) + 3bc03f8e: 74a2 ld s1,40(sp) + 3bc03f90: 7902 ld s2,32(sp) + 3bc03f92: 69e2 ld s3,24(sp) + 3bc03f94: 6a42 ld s4,16(sp) + 3bc03f96: 6121 addi sp,sp,64 + 3bc03f98: f6eff06f j 3bc03706 + 3bc03f9c: 8552 mv a0,s4 + 3bc03f9e: 7442 ld s0,48(sp) + 3bc03fa0: 70e2 ld ra,56(sp) + 3bc03fa2: 74a2 ld s1,40(sp) + 3bc03fa4: 7902 ld s2,32(sp) + 3bc03fa6: 69e2 ld s3,24(sp) + 3bc03fa8: 6a42 ld s4,16(sp) + 3bc03faa: 6121 addi sp,sp,64 + 3bc03fac: edcff06f j 3bc03688 + 3bc03fb0: 8552 mv a0,s4 + 3bc03fb2: ed6ff0ef jal ra,3bc03688 + 3bc03fb6: 854a mv a0,s2 + 3bc03fb8: d90ff0ef jal ra,3bc03548 + 3bc03fbc: 854a mv a0,s2 + 3bc03fbe: cefff0ef jal ra,3bc03cac + 3bc03fc2: 4785 li a5,1 + 3bc03fc4: 06090823 sb zero,112(s2) + 3bc03fc8: 268a0a23 sb s0,628(s4) + 3bc03fcc: 26fa0aa3 sb a5,629(s4) + 3bc03fd0: bf1d j 3bc03f06 + 3bc03fd2: 000bc537 lui a0,0xbc + 3bc03fd6: 4701 li a4,0 + 3bc03fd8: 4681 li a3,0 + 3bc03fda: 4601 li a2,0 + 3bc03fdc: 45a1 li a1,8 + 3bc03fde: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03fe2: 8edfe0ef jal ra,3bc028ce + 3bc03fe6: 0044d503 lhu a0,4(s1) + 3bc03fea: 1c75358b extu a1,a0,7,7 + 3bc03fee: 07f57513 andi a0,a0,127 + 3bc03ff2: b1aff0ef jal ra,3bc0330c + 3bc03ff6: 051e slli a0,a0,0x7 + 3bc03ff8: 05050513 addi a0,a0,80 + 3bc03ffc: 9522 add a0,a0,s0 + 3bc03ffe: 03853903 ld s2,56(a0) + 3bc04002: 25893783 ld a5,600(s2) + 3bc04006: 0067d703 lhu a4,6(a5) # ffffffff84000006 <__BL2_END__+0xffffffff483ec7f6> + 3bc0400a: eb01 bnez a4,3bc0401a + 3bc0400c: 0007c703 lbu a4,0(a5) + 3bc04010: 8b3d andi a4,a4,15 + 3bc04012: cb15 beqz a4,3bc04046 + 3bc04014: 4689 li a3,2 + 3bc04016: 04d70563 beq a4,a3,3bc04060 + 3bc0401a: 7c1c ld a5,56(s0) + 3bc0401c: cfbd beqz a5,3bc0409a + 3bc0401e: 739c ld a5,32(a5) + 3bc04020: 85a6 mv a1,s1 + 3bc04022: 8522 mv a0,s0 + 3bc04024: 9782 jalr a5 + 3bc04026: 06055263 bgez a0,3bc0408a + 3bc0402a: 0064d783 lhu a5,6(s1) + 3bc0402e: 4585 li a1,1 + 3bc04030: c789 beqz a5,3bc0403a + 3bc04032: 0c140583 lb a1,193(s0) + 3bc04036: 01f5d59b srliw a1,a1,0x1f + 3bc0403a: 6448 ld a0,136(s0) + 3bc0403c: ecaff0ef jal ra,3bc03706 + 3bc04040: 04042423 sw zero,72(s0) + 3bc04044: b5c9 j 3bc03f06 + 3bc04046: 0027d683 lhu a3,2(a5) + 3bc0404a: 4709 li a4,2 + 3bc0404c: 00e69863 bne a3,a4,3bc0405c + 3bc04050: 0047d783 lhu a5,4(a5) + 3bc04054: 0087d79b srliw a5,a5,0x8 + 3bc04058: 26f90b23 sb a5,630(s2) + 3bc0405c: 854a mv a0,s2 + 3bc0405e: b781 j 3bc03f9e + 3bc04060: 0027d783 lhu a5,2(a5) + 3bc04064: ffe5 bnez a5,3bc0405c + 3bc04066: 07154783 lbu a5,113(a0) + 3bc0406a: 8bbd andi a5,a5,15 + 3bc0406c: e781 bnez a5,3bc04074 + 3bc0406e: 4585 li a1,1 + 3bc04070: 854a mv a0,s2 + 3bc04072: bf21 j 3bc03f8a + 3bc04074: 4785 li a5,1 + 3bc04076: 06f50823 sb a5,112(a0) + 3bc0407a: d2cff0ef jal ra,3bc035a6 + 3bc0407e: bff9 j 3bc0405c + 3bc04080: 4701 li a4,0 + 3bc04082: 4681 li a3,0 + 3bc04084: 4601 li a2,0 + 3bc04086: 45a5 li a1,9 + 3bc04088: bb79 j 3bc03e26 + 3bc0408a: 25144783 lbu a5,593(s0) + 3bc0408e: 0017f713 andi a4,a5,1 + 3bc04092: c701 beqz a4,3bc0409a + 3bc04094: 9bf9 andi a5,a5,-2 + 3bc04096: 24f408a3 sb a5,593(s0) + 3bc0409a: e60996e3 bnez s3,3bc03f06 + 3bc0409e: 8522 mv a0,s0 + 3bc040a0: bdfd j 3bc03f9e + 3bc040a2: 8082 ret + +000000003bc040a4 : + 3bc040a4: 7119 addi sp,sp,-128 + 3bc040a6: ecce sd s3,88(sp) + 3bc040a8: 2685b983 ld s3,616(a1) + 3bc040ac: f0ca sd s2,96(sp) + 3bc040ae: f8a2 sd s0,112(sp) + 3bc040b0: 01498913 addi s2,s3,20 + 3bc040b4: 854a mv a0,s2 + 3bc040b6: f4a6 sd s1,104(sp) + 3bc040b8: e0da sd s6,64(sp) + 3bc040ba: fc86 sd ra,120(sp) + 3bc040bc: e8d2 sd s4,80(sp) + 3bc040be: e4d6 sd s5,72(sp) + 3bc040c0: fc5e sd s7,56(sp) + 3bc040c2: f862 sd s8,48(sp) + 3bc040c4: f466 sd s9,40(sp) + 3bc040c6: f06a sd s10,32(sp) + 3bc040c8: ec6e sd s11,24(sp) + 3bc040ca: 842e mv s0,a1 + 3bc040cc: 01898b13 addi s6,s3,24 + 3bc040d0: e7cfd0ef jal ra,3bc0174c + 3bc040d4: 0005049b sext.w s1,a0 + 3bc040d8: 855a mv a0,s6 + 3bc040da: e72fd0ef jal ra,3bc0174c + 3bc040de: 1c048563 beqz s1,3bc042a8 + 3bc040e2: 4430 lw a2,72(s0) + 3bc040e4: 00050a9b sext.w s5,a0 + 3bc040e8: 6505 lui a0,0x1 + 3bc040ea: 81850513 addi a0,a0,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc040ee: 954e add a0,a0,s3 + 3bc040f0: e432 sd a2,8(sp) + 3bc040f2: e5afd0ef jal ra,3bc0174c + 3bc040f6: 6622 ld a2,8(sp) + 3bc040f8: 0005069b sext.w a3,a0 + 3bc040fc: 653d lui a0,0xf + 3bc040fe: 4701 li a4,0 + 3bc04100: 85a6 mv a1,s1 + 3bc04102: 153d addi a0,a0,-17 + 3bc04104: fcafe0ef jal ra,3bc028ce + 3bc04108: 0104f793 andi a5,s1,16 + 3bc0410c: c3b5 beqz a5,3bc04170 + 3bc0410e: 85da mv a1,s6 + 3bc04110: fefaf513 andi a0,s5,-17 + 3bc04114: e3efd0ef jal ra,3bc01752 + 3bc04118: 02098513 addi a0,s3,32 + 3bc0411c: e30fd0ef jal ra,3bc0174c + 3bc04120: 00f57b93 andi s7,a0,15 + 3bc04124: 00050a1b sext.w s4,a0 + 3bc04128: 4581 li a1,0 + 3bc0412a: 855e mv a0,s7 + 3bc0412c: 9e0ff0ef jal ra,3bc0330c + 3bc04130: 001e07b7 lui a5,0x1e0 + 3bc04134: 00fa77b3 and a5,s4,a5 + 3bc04138: 00040737 lui a4,0x40 + 3bc0413c: 18e79663 bne a5,a4,3bc042c8 + 3bc04140: 384a3a0b extu s4,s4,14,4 + 3bc04144: 020a0163 beqz s4,3bc04166 + 3bc04148: 0005079b sext.w a5,a0 + 3bc0414c: 079e slli a5,a5,0x7 + 3bc0414e: 97a2 add a5,a5,s0 + 3bc04150: 0987bc03 ld s8,152(a5) # 1e0098 <__BSS_SIZE__+0x1da488> + 3bc04154: 86d2 mv a3,s4 + 3bc04156: 85de mv a1,s7 + 3bc04158: fd0c3603 ld a2,-48(s8) + 3bc0415c: 8522 mv a0,s0 + 3bc0415e: 96dff0ef jal ra,3bc03aca + 3bc04162: ff4c2023 sw s4,-32(s8) + 3bc04166: 85da mv a1,s6 + 3bc04168: 010ae513 ori a0,s5,16 + 3bc0416c: de6fd0ef jal ra,3bc01752 + 3bc04170: 34d4b78b extu a5,s1,13,13 + 3bc04174: cb9d beqz a5,3bc041aa + 3bc04176: 85ca mv a1,s2 + 3bc04178: 6509 lui a0,0x2 + 3bc0417a: dd8fd0ef jal ra,3bc01752 + 3bc0417e: 6505 lui a0,0x1 + 3bc04180: 80850513 addi a0,a0,-2040 # 808 <__BSS_SIZE__-0x5408> + 3bc04184: 954e add a0,a0,s3 + 3bc04186: dc6fd0ef jal ra,3bc0174c + 3bc0418a: 8919 andi a0,a0,6 + 3bc0418c: 14050b63 beqz a0,3bc042e2 + 3bc04190: 4589 li a1,2 + 3bc04192: 8522 mv a0,s0 + 3bc04194: b26ff0ef jal ra,3bc034ba + 3bc04198: 6509 lui a0,0x2 + 3bc0419a: 4701 li a4,0 + 3bc0419c: 4681 li a3,0 + 3bc0419e: 4601 li a2,0 + 3bc041a0: 4589 li a1,2 + 3bc041a2: 22250513 addi a0,a0,546 # 2222 <__BSS_SIZE__-0x39ee> + 3bc041a6: f28fe0ef jal ra,3bc028ce + 3bc041aa: 4004f793 andi a5,s1,1024 + 3bc041ae: c791 beqz a5,3bc041ba + 3bc041b0: 85ca mv a1,s2 + 3bc041b2: 40000513 li a0,1024 + 3bc041b6: d9cfd0ef jal ra,3bc01752 + 3bc041ba: 6505 lui a0,0x1 + 3bc041bc: 80050a13 addi s4,a0,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc041c0: 0144f7b3 and a5,s1,s4 + 3bc041c4: c395 beqz a5,3bc041e8 + 3bc041c6: 80850513 addi a0,a0,-2040 + 3bc041ca: 954e add a0,a0,s3 + 3bc041cc: d80fd0ef jal ra,3bc0174c + 3bc041d0: 85ca mv a1,s2 + 3bc041d2: 8552 mv a0,s4 + 3bc041d4: d7efd0ef jal ra,3bc01752 + 3bc041d8: 501c lw a5,32(s0) + 3bc041da: c799 beqz a5,3bc041e8 + 3bc041dc: 7c1c ld a5,56(s0) + 3bc041de: c789 beqz a5,3bc041e8 + 3bc041e0: 7b9c ld a5,48(a5) + 3bc041e2: c399 beqz a5,3bc041e8 + 3bc041e4: 8522 mv a0,s0 + 3bc041e6: 9782 jalr a5 + 3bc041e8: 0004df63 bgez s1,3bc04206 + 3bc041ec: 85ca mv a1,s2 + 3bc041ee: 80000537 lui a0,0x80000 + 3bc041f2: d60fd0ef jal ra,3bc01752 + 3bc041f6: 501c lw a5,32(s0) + 3bc041f8: c799 beqz a5,3bc04206 + 3bc041fa: 7c1c ld a5,56(s0) + 3bc041fc: c789 beqz a5,3bc04206 + 3bc041fe: 7f9c ld a5,56(a5) + 3bc04200: c399 beqz a5,3bc04206 + 3bc04202: 8522 mv a0,s0 + 3bc04204: 9782 jalr a5 + 3bc04206: 008017b7 lui a5,0x801 + 3bc0420a: 8fe5 and a5,a5,s1 + 3bc0420c: c3bd beqz a5,3bc04272 + 3bc0420e: 854e mv a0,s3 + 3bc04210: d3cfd0ef jal ra,3bc0174c + 3bc04214: 0005099b sext.w s3,a0 + 3bc04218: 6505 lui a0,0x1 + 3bc0421a: 4701 li a4,0 + 3bc0421c: 4681 li a3,0 + 3bc0421e: 4601 li a2,0 + 3bc04220: 85ce mv a1,s3 + 3bc04222: 11150513 addi a0,a0,273 # 1111 <__BSS_SIZE__-0x4aff> + 3bc04226: ea8fe0ef jal ra,3bc028ce + 3bc0422a: 30c4b78b extu a5,s1,12,12 + 3bc0422e: c789 beqz a5,3bc04238 + 3bc04230: 85ca mv a1,s2 + 3bc04232: 6505 lui a0,0x1 + 3bc04234: d1efd0ef jal ra,3bc01752 + 3bc04238: 5d74b78b extu a5,s1,23,23 + 3bc0423c: c791 beqz a5,3bc04248 + 3bc0423e: 85ca mv a1,s2 + 3bc04240: 00800537 lui a0,0x800 + 3bc04244: d0efd0ef jal ra,3bc01752 + 3bc04248: 000c0537 lui a0,0xc0 + 3bc0424c: 00a9f9b3 and s3,s3,a0 + 3bc04250: 000c07b7 lui a5,0xc0 + 3bc04254: 00f99f63 bne s3,a5,3bc04272 + 3bc04258: 27042903 lw s2,624(s0) + 3bc0425c: 8522 mv a0,s0 + 3bc0425e: 9d5fe0ef jal ra,3bc02c32 + 3bc04262: 00090663 beqz s2,3bc0426e + 3bc04266: 4585 li a1,1 + 3bc04268: 8522 mv a0,s0 + 3bc0426a: cbffe0ef jal ra,3bc02f28 + 3bc0426e: 04042423 sw zero,72(s0) + 3bc04272: 4924b78b extu a5,s1,18,18 + 3bc04276: e7c1 bnez a5,3bc042fe + 3bc04278: 4d34b48b extu s1,s1,19,19 + 3bc0427c: c495 beqz s1,3bc042a8 + 3bc0427e: 26843b03 ld s6,616(s0) + 3bc04282: 6505 lui a0,0x1 + 3bc04284: 81850513 addi a0,a0,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc04288: 955a add a0,a0,s6 + 3bc0428a: cc2fd0ef jal ra,3bc0174c + 3bc0428e: 00066a37 lui s4,0x66 + 3bc04292: 6a8d lui s5,0x3 + 3bc04294: 7d05398b extu s3,a0,31,16 + 3bc04298: 4901 li s2,0 + 3bc0429a: 4b99 li s7,6 + 3bc0429c: 666a0a13 addi s4,s4,1638 # 66666 <__BSS_SIZE__+0x60a56> + 3bc042a0: 333a8a93 addi s5,s5,819 # 3333 <__BSS_SIZE__-0x28dd> + 3bc042a4: 2a099963 bnez s3,3bc04556 + 3bc042a8: 70e6 ld ra,120(sp) + 3bc042aa: 7446 ld s0,112(sp) + 3bc042ac: 74a6 ld s1,104(sp) + 3bc042ae: 7906 ld s2,96(sp) + 3bc042b0: 69e6 ld s3,88(sp) + 3bc042b2: 6a46 ld s4,80(sp) + 3bc042b4: 6aa6 ld s5,72(sp) + 3bc042b6: 6b06 ld s6,64(sp) + 3bc042b8: 7be2 ld s7,56(sp) + 3bc042ba: 7c42 ld s8,48(sp) + 3bc042bc: 7ca2 ld s9,40(sp) + 3bc042be: 7d02 ld s10,32(sp) + 3bc042c0: 6de2 ld s11,24(sp) + 3bc042c2: 4501 li a0,0 + 3bc042c4: 6109 addi sp,sp,128 + 3bc042c6: 8082 ret + 3bc042c8: 000c0737 lui a4,0xc0 + 3bc042cc: e8e79de3 bne a5,a4,3bc04166 + 3bc042d0: 25843603 ld a2,600(s0) + 3bc042d4: 384a368b extu a3,s4,14,4 + 3bc042d8: 85de mv a1,s7 + 3bc042da: 8522 mv a0,s0 + 3bc042dc: feeff0ef jal ra,3bc03aca + 3bc042e0: b559 j 3bc04166 + 3bc042e2: 6509 lui a0,0x2 + 3bc042e4: 4701 li a4,0 + 3bc042e6: 4681 li a3,0 + 3bc042e8: 4601 li a2,0 + 3bc042ea: 4585 li a1,1 + 3bc042ec: 22250513 addi a0,a0,546 # 2222 <__BSS_SIZE__-0x39ee> + 3bc042f0: ddefe0ef jal ra,3bc028ce + 3bc042f4: 458d li a1,3 + 3bc042f6: 8522 mv a0,s0 + 3bc042f8: 9c2ff0ef jal ra,3bc034ba + 3bc042fc: b57d j 3bc041aa + 3bc042fe: 26843a03 ld s4,616(s0) + 3bc04302: 6a85 lui s5,0x1 + 3bc04304: 818a8513 addi a0,s5,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc04308: 9552 add a0,a0,s4 + 3bc0430a: c42fd0ef jal ra,3bc0174c + 3bc0430e: 00737b37 lui s6,0x737 + 3bc04312: 00747bb7 lui s7,0x747 + 3bc04316: 00055c37 lui s8,0x55 + 3bc0431a: 3c05398b extu s3,a0,15,0 + 3bc0431e: 4901 li s2,0 + 3bc04320: 373b0b13 addi s6,s6,883 # 737373 <__BSS_SIZE__+0x731763> + 3bc04324: 474b8b93 addi s7,s7,1140 # 747474 <__BSS_SIZE__+0x741864> + 3bc04328: 555c0c13 addi s8,s8,1365 # 55555 <__BSS_SIZE__+0x4f945> + 3bc0432c: 804a8a93 addi s5,s5,-2044 + 3bc04330: f40984e3 beqz s3,3bc04278 + 3bc04334: 0019f793 andi a5,s3,1 + 3bc04338: 1c078163 beqz a5,3bc044fa + 3bc0433c: 04890c93 addi s9,s2,72 + 3bc04340: 0c96 slli s9,s9,0x5 + 3bc04342: 008c8d93 addi s11,s9,8 + 3bc04346: 9dd2 add s11,s11,s4 + 3bc04348: 856e mv a0,s11 + 3bc0434a: c02fd0ef jal ra,3bc0174c + 3bc0434e: 00050d1b sext.w s10,a0 + 3bc04352: 010c8513 addi a0,s9,16 + 3bc04356: 9552 add a0,a0,s4 + 3bc04358: bf4fd0ef jal ra,3bc0174c + 3bc0435c: 0005069b sext.w a3,a0 + 3bc04360: 019a0533 add a0,s4,s9 + 3bc04364: e436 sd a3,8(sp) + 3bc04366: be6fd0ef jal ra,3bc0174c + 3bc0436a: 66a2 ld a3,8(sp) + 3bc0436c: 0005071b sext.w a4,a0 + 3bc04370: 866a mv a2,s10 + 3bc04372: 85ca mv a1,s2 + 3bc04374: 855a mv a0,s6 + 3bc04376: d58fe0ef jal ra,3bc028ce + 3bc0437a: 014c8513 addi a0,s9,20 + 3bc0437e: 9552 add a0,a0,s4 + 3bc04380: bccfd0ef jal ra,3bc0174c + 3bc04384: 0ce1 addi s9,s9,24 + 3bc04386: 0005059b sext.w a1,a0 + 3bc0438a: 019a0533 add a0,s4,s9 + 3bc0438e: e42e sd a1,8(sp) + 3bc04390: bbcfd0ef jal ra,3bc0174c + 3bc04394: 65a2 ld a1,8(sp) + 3bc04396: 0005061b sext.w a2,a0 + 3bc0439a: 4701 li a4,0 + 3bc0439c: 4681 li a3,0 + 3bc0439e: 855e mv a0,s7 + 3bc043a0: d2efe0ef jal ra,3bc028ce + 3bc043a4: 856a mv a0,s10 + 3bc043a6: 85ee mv a1,s11 + 3bc043a8: 001d7d13 andi s10,s10,1 + 3bc043ac: ba6fd0ef jal ra,3bc01752 + 3bc043b0: 140d0563 beqz s10,3bc044fa + 3bc043b4: 4585 li a1,1 + 3bc043b6: 854a mv a0,s2 + 3bc043b8: f55fe0ef jal ra,3bc0330c + 3bc043bc: 00050c9b sext.w s9,a0 + 3bc043c0: 0c9e slli s9,s9,0x7 + 3bc043c2: 01940833 add a6,s0,s9 + 3bc043c6: 09883603 ld a2,152(a6) + 3bc043ca: 00751d13 slli s10,a0,0x7 + 3bc043ce: 098d0d93 addi s11,s10,152 + 3bc043d2: 442c lw a1,72(s0) + 3bc043d4: 9da2 add s11,s11,s0 + 3bc043d6: 41b60633 sub a2,a2,s11 + 3bc043da: 00163613 seqz a2,a2 + 3bc043de: 4701 li a4,0 + 3bc043e0: 4681 li a3,0 + 3bc043e2: 8562 mv a0,s8 + 3bc043e4: e442 sd a6,8(sp) + 3bc043e6: ce8fe0ef jal ra,3bc028ce + 3bc043ea: 4430 lw a2,72(s0) + 3bc043ec: 47a1 li a5,8 + 3bc043ee: 6822 ld a6,8(sp) + 3bc043f0: 00f61a63 bne a2,a5,3bc04404 + 3bc043f4: 4799 li a5,6 + 3bc043f6: c43c sw a5,72(s0) + 3bc043f8: 8522 mv a0,s0 + 3bc043fa: a0eff0ef jal ra,3bc03608 + 3bc043fe: 04090c63 beqz s2,3bc04456 + 3bc04402: a8e5 j 3bc044fa + 3bc04404: 09883703 ld a4,152(a6) + 3bc04408: feed8be3 beq s11,a4,3bc043fe + 3bc0440c: ffc72303 lw t1,-4(a4) # bfffc <__BSS_SIZE__+0xba3ec> + 3bc04410: fd872883 lw a7,-40(a4) + 3bc04414: 0b082783 lw a5,176(a6) + 3bc04418: 050d0513 addi a0,s10,80 + 3bc0441c: 40688e3b subw t3,a7,t1 + 3bc04420: 0007869b sext.w a3,a5 + 3bc04424: 000e081b sext.w a6,t3 + 3bc04428: 00d836b3 sltu a3,a6,a3 + 3bc0442c: 0016c693 xori a3,a3,1 + 3bc04430: 40de178b mveqz a5,t3,a3 + 3bc04434: 006786bb addw a3,a5,t1 + 3bc04438: fed72e23 sw a3,-4(a4) + 3bc0443c: 9522 add a0,a0,s0 + 3bc0443e: fc070593 addi a1,a4,-64 + 3bc04442: 08091c63 bnez s2,3bc044da + 3bc04446: 4785 li a5,1 + 3bc04448: 06f61463 bne a2,a5,3bc044b0 + 3bc0444c: ec2ff0ef jal ra,3bc03b0e + 3bc04450: c119 beqz a0,3bc04456 + 3bc04452: 4795 li a5,5 + 3bc04454: c43c sw a5,72(s0) + 3bc04456: 27644783 lbu a5,630(s0) + 3bc0445a: c3a9 beqz a5,3bc0449c + 3bc0445c: 26843d03 ld s10,616(s0) + 3bc04460: 00078d9b sext.w s11,a5 + 3bc04464: e43e sd a5,8(sp) + 3bc04466: 9d56 add s10,s10,s5 + 3bc04468: 856a mv a0,s10 + 3bc0446a: ae2fd0ef jal ra,3bc0174c + 3bc0446e: 67a2 ld a5,8(sp) + 3bc04470: 00050c9b sext.w s9,a0 + 3bc04474: 4711 li a4,4 + 3bc04476: 37fd addiw a5,a5,-1 + 3bc04478: f8fcfc93 andi s9,s9,-113 + 3bc0447c: 02f76063 bltu a4,a5,3bc0449c + 3bc04480: 85ee mv a1,s11 + 3bc04482: 00007517 auipc a0,0x7 + 3bc04486: d7e50513 addi a0,a0,-642 # 3bc0b200 + 3bc0448a: ecffb0ef jal ra,3bc00358 + 3bc0448e: 004d9513 slli a0,s11,0x4 + 3bc04492: 85ea mv a1,s10 + 3bc04494: 01956533 or a0,a0,s9 + 3bc04498: abafd0ef jal ra,3bc01752 + 3bc0449c: 443c lw a5,72(s0) + 3bc0449e: 471d li a4,7 + 3bc044a0: 06e79363 bne a5,a4,3bc04506 + 3bc044a4: 04042423 sw zero,72(s0) + 3bc044a8: 8522 mv a0,s0 + 3bc044aa: c6aff0ef jal ra,3bc03914 + 3bc044ae: a8a9 j 3bc04508 + 3bc044b0: 479d li a5,7 + 3bc044b2: 00f61863 bne a2,a5,3bc044c2 + 3bc044b6: 4601 li a2,0 + 3bc044b8: c68fe0ef jal ra,3bc02920 + 3bc044bc: 04042423 sw zero,72(s0) + 3bc044c0: bf59 j 3bc04456 + 3bc044c2: 4795 li a5,5 + 3bc044c4: f8f619e3 bne a2,a5,3bc04456 + 3bc044c8: 4601 li a2,0 + 3bc044ca: c56fe0ef jal ra,3bc02920 + 3bc044ce: 4799 li a5,6 + 3bc044d0: c43c sw a5,72(s0) + 3bc044d2: 8522 mv a0,s0 + 3bc044d4: 934ff0ef jal ra,3bc03608 + 3bc044d8: bfbd j 3bc04456 + 3bc044da: 00d89763 bne a7,a3,3bc044e8 + 3bc044de: 4601 li a2,0 + 3bc044e0: e42a sd a0,8(sp) + 3bc044e2: c3efe0ef jal ra,3bc02920 + 3bc044e6: 6522 ld a0,8(sp) + 3bc044e8: 9ca2 add s9,s9,s0 + 3bc044ea: 098cb583 ld a1,152(s9) + 3bc044ee: 00bd8663 beq s11,a1,3bc044fa + 3bc044f2: fc058593 addi a1,a1,-64 + 3bc044f6: c78ff0ef jal ra,3bc0396e + 3bc044fa: 2905 addiw s2,s2,1 + 3bc044fc: 0ff97913 andi s2,s2,255 + 3bc04500: 0019d993 srli s3,s3,0x1 + 3bc04504: b535 j 3bc04330 + 3bc04506: d3cd beqz a5,3bc044a8 + 3bc04508: 27544703 lbu a4,629(s0) + 3bc0450c: 4785 li a5,1 + 3bc0450e: fef716e3 bne a4,a5,3bc044fa + 3bc04512: 27444503 lbu a0,628(s0) + 3bc04516: 4585 li a1,1 + 3bc04518: df5fe0ef jal ra,3bc0330c + 3bc0451c: 0005071b sext.w a4,a0 + 3bc04520: 071e slli a4,a4,0x7 + 3bc04522: 9722 add a4,a4,s0 + 3bc04524: 00751793 slli a5,a0,0x7 + 3bc04528: 6f4c ld a1,152(a4) + 3bc0452a: 05078513 addi a0,a5,80 # c0050 <__BSS_SIZE__+0xba440> + 3bc0452e: 09878793 addi a5,a5,152 + 3bc04532: 97a2 add a5,a5,s0 + 3bc04534: 9522 add a0,a0,s0 + 3bc04536: 00f58a63 beq a1,a5,3bc0454a + 3bc0453a: 0c170783 lb a5,193(a4) + 3bc0453e: fc058593 addi a1,a1,-64 + 3bc04542: 0007d763 bgez a5,3bc04550 + 3bc04546: c28ff0ef jal ra,3bc0396e + 3bc0454a: 26040aa3 sb zero,629(s0) + 3bc0454e: b775 j 3bc044fa + 3bc04550: a1eff0ef jal ra,3bc0376e + 3bc04554: bfdd j 3bc0454a + 3bc04556: 0019f793 andi a5,s3,1 + 3bc0455a: c3a1 beqz a5,3bc0459a + 3bc0455c: 05890493 addi s1,s2,88 + 3bc04560: 0496 slli s1,s1,0x5 + 3bc04562: 04a1 addi s1,s1,8 + 3bc04564: 94da add s1,s1,s6 + 3bc04566: 8526 mv a0,s1 + 3bc04568: 9e4fd0ef jal ra,3bc0174c + 3bc0456c: 0005061b sext.w a2,a0 + 3bc04570: 8532 mv a0,a2 + 3bc04572: 85a6 mv a1,s1 + 3bc04574: e432 sd a2,8(sp) + 3bc04576: 9dcfd0ef jal ra,3bc01752 + 3bc0457a: 6622 ld a2,8(sp) + 3bc0457c: 06091063 bnez s2,3bc045dc + 3bc04580: 00867793 andi a5,a2,8 + 3bc04584: c38d beqz a5,3bc045a6 + 3bc04586: 8556 mv a0,s5 + 3bc04588: 4701 li a4,0 + 3bc0458a: 4681 li a3,0 + 3bc0458c: 4601 li a2,0 + 3bc0458e: 4581 li a1,0 + 3bc04590: b3efe0ef jal ra,3bc028ce + 3bc04594: 8522 mv a0,s0 + 3bc04596: fc8ff0ef jal ra,3bc03d5e + 3bc0459a: 2905 addiw s2,s2,1 + 3bc0459c: 0ff97913 andi s2,s2,255 + 3bc045a0: 0019d993 srli s3,s3,0x1 + 3bc045a4: b301 j 3bc042a4 + 3bc045a6: 00167793 andi a5,a2,1 + 3bc045aa: dbe5 beqz a5,3bc0459a + 3bc045ac: 443c lw a5,72(s0) + 3bc045ae: 4701 li a4,0 + 3bc045b0: 4681 li a3,0 + 3bc045b2: 01778b63 beq a5,s7,3bc045c8 + 3bc045b6: 4585 li a1,1 + 3bc045b8: 8552 mv a0,s4 + 3bc045ba: b14fe0ef jal ra,3bc028ce + 3bc045be: 4581 li a1,0 + 3bc045c0: 8522 mv a0,s0 + 3bc045c2: a56ff0ef jal ra,3bc03818 + 3bc045c6: bfd1 j 3bc0459a + 3bc045c8: 8552 mv a0,s4 + 3bc045ca: 4589 li a1,2 + 3bc045cc: b02fe0ef jal ra,3bc028ce + 3bc045d0: 8522 mv a0,s0 + 3bc045d2: 04042423 sw zero,72(s0) + 3bc045d6: b3eff0ef jal ra,3bc03914 + 3bc045da: b7c1 j 3bc0459a + 3bc045dc: 8a05 andi a2,a2,1 + 3bc045de: de55 beqz a2,3bc0459a + 3bc045e0: 85ca mv a1,s2 + 3bc045e2: bff9 j 3bc045c0 + +000000003bc045e4 : + 3bc045e4: 07158703 lb a4,113(a1) + 3bc045e8: 00075663 bgez a4,3bc045f4 + 3bc045ec: 4705 li a4,1 + 3bc045ee: c538 sw a4,72(a0) + 3bc045f0: ddaff06f j 3bc03bca + 3bc045f4: 4711 li a4,4 + 3bc045f6: c538 sw a4,72(a0) + 3bc045f8: daaff06f j 3bc03ba2 + +000000003bc045fc : + 3bc045fc: e581 bnez a1,3bc04604 + 3bc045fe: 57a9 li a5,-22 + 3bc04600: 853e mv a0,a5 + 3bc04602: 8082 ret + 3bc04604: 759c ld a5,40(a1) + 3bc04606: dfe5 beqz a5,3bc045fe + 3bc04608: 699c ld a5,16(a1) + 3bc0460a: dbf5 beqz a5,3bc045fe + 3bc0460c: 61bc ld a5,64(a1) + 3bc0460e: 7179 addi sp,sp,-48 + 3bc04610: e84a sd s2,16(sp) + 3bc04612: f406 sd ra,40(sp) + 3bc04614: f022 sd s0,32(sp) + 3bc04616: ec26 sd s1,24(sp) + 3bc04618: e44e sd s3,8(sp) + 3bc0461a: 04058913 addi s2,a1,64 + 3bc0461e: 06f91763 bne s2,a5,3bc0468c + 3bc04622: c52d beqz a0,3bc0468c + 3bc04624: 613c ld a5,64(a0) + 3bc04626: 84ae mv s1,a1 + 3bc04628: 842a mv s0,a0 + 3bc0462a: cbb9 beqz a5,3bc04680 + 3bc0462c: 7c08 ld a0,56(s0) + 3bc0462e: 07144683 lbu a3,113(s0) + 3bc04632: fc600793 li a5,-58 + 3bc04636: 7d18 ld a4,56(a0) + 3bc04638: cb39 beqz a4,3bc0468e + 3bc0463a: 5118 lw a4,32(a0) + 3bc0463c: fc600793 li a5,-58 + 3bc04640: c739 beqz a4,3bc0468e + 3bc04642: 4785 li a5,1 + 3bc04644: 1782 slli a5,a5,0x20 + 3bc04646: fdc78793 addi a5,a5,-36 + 3bc0464a: 26853703 ld a4,616(a0) + 3bc0464e: fc9c sd a5,56(s1) + 3bc04650: 643c ld a5,72(s0) + 3bc04652: 04840993 addi s3,s0,72 + 3bc04656: 04f99f63 bne s3,a5,3bc046b4 + 3bc0465a: 07044783 lbu a5,112(s0) + 3bc0465e: ebb9 bnez a5,3bc046b4 + 3bc04660: 00f6f793 andi a5,a3,15 + 3bc04664: ef8d bnez a5,3bc0469e + 3bc04666: 683c ld a5,80(s0) + 3bc04668: 05243823 sd s2,80(s0) + 3bc0466c: 0534b023 sd s3,64(s1) + 3bc04670: e4bc sd a5,72(s1) + 3bc04672: 0127b023 sd s2,0(a5) + 3bc04676: 85a2 mv a1,s0 + 3bc04678: f6dff0ef jal ra,3bc045e4 + 3bc0467c: 4781 li a5,0 + 3bc0467e: a801 j 3bc0468e + 3bc04680: 01853983 ld s3,24(a0) + 3bc04684: a4cfe0ef jal ra,3bc028d0 + 3bc04688: faa982e3 beq s3,a0,3bc0462c + 3bc0468c: 57a9 li a5,-22 + 3bc0468e: 70a2 ld ra,40(sp) + 3bc04690: 7402 ld s0,32(sp) + 3bc04692: 64e2 ld s1,24(sp) + 3bc04694: 6942 ld s2,16(sp) + 3bc04696: 69a2 ld s3,8(sp) + 3bc04698: 853e mv a0,a5 + 3bc0469a: 6145 addi sp,sp,48 + 3bc0469c: 8082 ret + 3bc0469e: fc76b78b extu a5,a3,63,7 + 3bc046a2: 01470513 addi a0,a4,20 + 3bc046a6: c385 beqz a5,3bc046c6 + 3bc046a8: 8a4fd0ef jal ra,3bc0174c + 3bc046ac: 85a6 mv a1,s1 + 3bc046ae: 8522 mv a0,s0 + 3bc046b0: abeff0ef jal ra,3bc0396e + 3bc046b4: 683c ld a5,80(s0) + 3bc046b6: 05243823 sd s2,80(s0) + 3bc046ba: 0534b023 sd s3,64(s1) + 3bc046be: e4bc sd a5,72(s1) + 3bc046c0: 0127b023 sd s2,0(a5) + 3bc046c4: bf65 j 3bc0467c + 3bc046c6: 886fd0ef jal ra,3bc0174c + 3bc046ca: 85a6 mv a1,s1 + 3bc046cc: 8522 mv a0,s0 + 3bc046ce: 8a0ff0ef jal ra,3bc0376e + 3bc046d2: b7cd j 3bc046b4 + +000000003bc046d4 : + 3bc046d4: 7179 addi sp,sp,-48 + 3bc046d6: f022 sd s0,32(sp) + 3bc046d8: ec26 sd s1,24(sp) + 3bc046da: f406 sd ra,40(sp) + 3bc046dc: e432 sd a2,8(sp) + 3bc046de: 0e0007b7 lui a5,0xe000 + 3bc046e2: 84ae mv s1,a1 + 3bc046e4: 638c ld a1,0(a5) + 3bc046e6: 842a mv s0,a0 + 3bc046e8: 00007517 auipc a0,0x7 + 3bc046ec: b3050513 addi a0,a0,-1232 # 3bc0b218 + 3bc046f0: 5055b78b extu a5,a1,20,5 + 3bc046f4: 85be mv a1,a5 + 3bc046f6: 00007717 auipc a4,0x7 + 3bc046fa: 30f71923 sh a5,786(a4) # 3bc0ba08 + 3bc046fe: c5bfb0ef jal ra,3bc00358 + 3bc04702: 8522 mv a0,s0 + 3bc04704: 7402 ld s0,32(sp) + 3bc04706: 6622 ld a2,8(sp) + 3bc04708: 70a2 ld ra,40(sp) + 3bc0470a: 85a6 mv a1,s1 + 3bc0470c: 64e2 ld s1,24(sp) + 3bc0470e: 6145 addi sp,sp,48 + 3bc04710: bd5fd06f j 3bc022e4 + +000000003bc04714 : + 3bc04714: 4781 li a5,0 + 3bc04716: 00007697 auipc a3,0x7 + 3bc0471a: b1a68693 addi a3,a3,-1254 # 3bc0b230 + 3bc0471e: 0007871b sext.w a4,a5 + 3bc04722: 00c74363 blt a4,a2,3bc04728 + 3bc04726: 8082 ret + 3bc04728: 80f5c80b lrbu a6,a1,a5,0 + 3bc0472c: 9c85370b extu a4,a0,39,8 + 3bc04730: 0085151b slliw a0,a0,0x8 + 3bc04734: 01074733 xor a4,a4,a6 + 3bc04738: a2e6c70b lrhu a4,a3,a4,1 + 3bc0473c: 0785 addi a5,a5,1 + 3bc0473e: 8d39 xor a0,a0,a4 + 3bc04740: 3c05350b extu a0,a0,15,0 + 3bc04744: bfe9 j 3bc0471e + +000000003bc04746 : + 3bc04746: 4d78 lw a4,92(a0) + 3bc04748: 11000793 li a5,272 + 3bc0474c: fff7069b addiw a3,a4,-1 + 3bc04750: 04d7e563 bltu a5,a3,3bc0479a + 3bc04754: 7510 ld a2,40(a0) + 3bc04756: 7c07368b extu a3,a4,31,0 + 3bc0475a: 01853803 ld a6,24(a0) + 3bc0475e: 8d91 sub a1,a1,a2 + 3bc04760: 02053e03 ld t3,32(a0) + 3bc04764: 04856883 lwu a7,72(a0) + 3bc04768: 87ba mv a5,a4 + 3bc0476a: 00d5f463 bgeu a1,a3,3bc04772 + 3bc0476e: 0005879b sext.w a5,a1 + 3bc04772: 416c lw a1,68(a0) + 3bc04774: 4134 lw a3,64(a0) + 3bc04776: e599 bnez a1,3bc04784 + 3bc04778: 414c lw a1,4(a0) + 3bc0477a: 40d5833b subw t1,a1,a3 + 3bc0477e: 0067e363 bltu a5,t1,3bc04784 + 3bc04782: c16c sw a1,68(a0) + 3bc04784: 9ebd addw a3,a3,a5 + 3bc04786: 9f1d subw a4,a4,a5 + 3bc04788: c134 sw a3,64(a0) + 3bc0478a: cd78 sw a4,92(a0) + 3bc0478c: 86be mv a3,a5 + 3bc0478e: 8732 mv a4,a2 + 3bc04790: e691 bnez a3,3bc0479c + 3bc04792: 7c07b78b extu a5,a5,31,0 + 3bc04796: 97b2 add a5,a5,a2 + 3bc04798: f51c sd a5,40(a0) + 3bc0479a: 8082 ret + 3bc0479c: 36fd addiw a3,a3,-1 + 3bc0479e: 411705b3 sub a1,a4,a7 + 3bc047a2: 8372 mv t1,t3 + 3bc047a4: 01176363 bltu a4,a7,3bc047aa + 3bc047a8: 4301 li t1,0 + 3bc047aa: 95c2 add a1,a1,a6 + 3bc047ac: 8065c58b lrbu a1,a1,t1,0 + 3bc047b0: 00e8558b srb a1,a6,a4,0 + 3bc047b4: 0705 addi a4,a4,1 + 3bc047b6: bfe9 j 3bc04790 + +000000003bc047b8 : + 3bc047b8: 7155 addi sp,sp,-208 + 3bc047ba: e1a2 sd s0,192(sp) + 3bc047bc: 6405 lui s0,0x1 + 3bc047be: e586 sd ra,200(sp) + 3bc047c0: fd26 sd s1,184(sp) + 3bc047c2: f94a sd s2,176(sp) + 3bc047c4: f54e sd s3,168(sp) + 3bc047c6: f152 sd s4,160(sp) + 3bc047c8: ed56 sd s5,152(sp) + 3bc047ca: e95a sd s6,144(sp) + 3bc047cc: e55e sd s7,136(sp) + 3bc047ce: e162 sd s8,128(sp) + 3bc047d0: fce6 sd s9,120(sp) + 3bc047d2: f8ea sd s10,112(sp) + 3bc047d4: f4ee sd s11,104(sp) + 3bc047d6: e82e sd a1,16(sp) + 3bc047d8: f832 sd a2,48(sp) + 3bc047da: 8004041b addiw s0,s0,-2048 + 3bc047de: 417c lw a5,68(a0) + 3bc047e0: 04052e03 lw t3,64(a0) + 3bc047e4: 02853803 ld a6,40(a0) + 3bc047e8: ec3e sd a5,24(sp) + 3bc047ea: eba1 bnez a5,3bc0483a + 3bc047ec: 415c lw a5,4(a0) + 3bc047ee: 6742 ld a4,16(sp) + 3bc047f0: 66c2 ld a3,16(sp) + 3bc047f2: 41c787bb subw a5,a5,t3 + 3bc047f6: 7c07b78b extu a5,a5,31,0 + 3bc047fa: 41070733 sub a4,a4,a6 + 3bc047fe: e436 sd a3,8(sp) + 3bc04800: 00e7f463 bgeu a5,a4,3bc04808 + 3bc04804: 97c2 add a5,a5,a6 + 3bc04806: e43e sd a5,8(sp) + 3bc04808: 020e1b63 bnez t3,3bc0483e + 3bc0480c: 5d58 lw a4,60(a0) + 3bc0480e: c00007b7 lui a5,0xc0000 + 3bc04812: bff78793 addi a5,a5,-1025 # ffffffffbffffbff <__BL2_END__+0xffffffff843ec3ef> + 3bc04816: 02e7f463 bgeu a5,a4,3bc0483e + 3bc0481a: 4505 li a0,1 + 3bc0481c: 60ae ld ra,200(sp) + 3bc0481e: 640e ld s0,192(sp) + 3bc04820: 74ea ld s1,184(sp) + 3bc04822: 794a ld s2,176(sp) + 3bc04824: 79aa ld s3,168(sp) + 3bc04826: 7a0a ld s4,160(sp) + 3bc04828: 6aea ld s5,152(sp) + 3bc0482a: 6b4a ld s6,144(sp) + 3bc0482c: 6baa ld s7,136(sp) + 3bc0482e: 6c0a ld s8,128(sp) + 3bc04830: 7ce6 ld s9,120(sp) + 3bc04832: 7d46 ld s10,112(sp) + 3bc04834: 7da6 ld s11,104(sp) + 3bc04836: 6169 addi sp,sp,208 + 3bc04838: 8082 ret + 3bc0483a: 67c2 ld a5,16(sp) + 3bc0483c: e43e sd a5,8(sp) + 3bc0483e: 497c lw a5,84(a0) + 3bc04840: 00154703 lbu a4,1(a0) + 3bc04844: 690c ld a1,16(a0) + 3bc04846: f03e sd a5,32(sp) + 3bc04848: 00054783 lbu a5,0(a0) + 3bc0484c: 00254303 lbu t1,2(a0) + 3bc04850: 74fd lui s1,0xfffff + 3bc04852: f43e sd a5,40(sp) + 3bc04854: 76a2 ld a3,40(sp) + 3bc04856: 10000793 li a5,256 + 3bc0485a: 00e7973b sllw a4,a5,a4 + 3bc0485e: 02053a83 ld s5,32(a0) + 3bc04862: 00d7d7bb srlw a5,a5,a3 + 3bc04866: 60048493 addi s1,s1,1536 # fffffffffffff600 <__BL2_END__+0xffffffffc43ebdf0> + 3bc0486a: 56fd li a3,-1 + 3bc0486c: 40f707bb subw a5,a4,a5 + 3bc04870: 006696bb sllw a3,a3,t1 + 3bc04874: 94ae add s1,s1,a1 + 3bc04876: fc3e sd a5,56(sp) + 3bc04878: fff6c693 not a3,a3 + 3bc0487c: e4a6 sd s1,72(sp) + 3bc0487e: 05852883 lw a7,88(a0) + 3bc04882: a0058493 addi s1,a1,-1536 + 3bc04886: 04852f83 lw t6,72(a0) + 3bc0488a: 04c52f03 lw t5,76(a0) + 3bc0488e: 05052983 lw s3,80(a0) + 3bc04892: 01853a03 ld s4,24(a0) + 3bc04896: 7918 ld a4,48(a0) + 3bc04898: 5d10 lw a2,56(a0) + 3bc0489a: 5d5c lw a5,60(a0) + 3bc0489c: 2681 sext.w a3,a3 + 3bc0489e: e8a6 sd s1,80(sp) + 3bc048a0: fffa8493 addi s1,s5,-1 + 3bc048a4: e0b6 sd a3,64(sp) + 3bc048a6: 4301 li t1,0 + 3bc048a8: 010006b7 lui a3,0x1000 + 3bc048ac: eca6 sd s1,88(sp) + 3bc048ae: 6486 ld s1,64(sp) + 3bc048b0: 01c4feb3 and t4,s1,t3 + 3bc048b4: 004e9e9b slliw t4,t4,0x4 + 3bc048b8: 011e893b addw s2,t4,a7 + 3bc048bc: 02091493 slli s1,s2,0x20 + 3bc048c0: 01f4d913 srli s2,s1,0x1f + 3bc048c4: e0090b93 addi s7,s2,-512 + 3bc048c8: a175cb0b lrhu s6,a1,s7,0 + 3bc048cc: 000b039b sext.w t2,s6 + 3bc048d0: 00d67a63 bgeu a2,a3,3bc048e4 + 3bc048d4: 9817428b lbuia t0,(a4),1,0 + 3bc048d8: 0087979b slliw a5,a5,0x8 + 3bc048dc: 0086161b slliw a2,a2,0x8 + 3bc048e0: 00f2e7b3 or a5,t0,a5 + 3bc048e4: 00b6529b srliw t0,a2,0xb + 3bc048e8: 027284bb mulw s1,t0,t2 + 3bc048ec: 82a6 mv t0,s1 + 3bc048ee: 7497f663 bgeu a5,s1,3bc0503a + 3bc048f2: 6ee2 ld t4,24(sp) + 3bc048f4: 407403bb subw t2,s0,t2 + 3bc048f8: 0053d39b srliw t2,t2,0x5 + 3bc048fc: 016383bb addw t2,t2,s6 + 3bc04900: 2175d38b srh t2,a1,s7,0 + 3bc04904: 01ceeeb3 or t4,t4,t3 + 3bc04908: 28058613 addi a2,a1,640 + 3bc0490c: 020e8b63 beqz t4,3bc04942 + 3bc04910: 6966 ld s2,88(sp) + 3bc04912: fff80393 addi t2,a6,-1 + 3bc04916: 008e1e9b slliw t4,t3,0x8 + 3bc0491a: 4109138b mveqz t2,s2,a6 + 3bc0491e: 807a438b lrbu t2,s4,t2,0 + 3bc04922: 01d38ebb addw t4,t2,t4 + 3bc04926: 73e2 ld t2,56(sp) + 3bc04928: 01d3feb3 and t4,t2,t4 + 3bc0492c: 73a2 ld t2,40(sp) + 3bc0492e: 007e9ebb sllw t4,t4,t2 + 3bc04932: 438d li t2,3 + 3bc04934: 027e8ebb mulw t4,t4,t2 + 3bc04938: 020e9393 slli t2,t4,0x20 + 3bc0493c: 01f3de93 srli t4,t2,0x1f + 3bc04940: 9676 add a2,a2,t4 + 3bc04942: 4e99 li t4,6 + 3bc04944: 2e05 addiw t3,t3,1 + 3bc04946: 311eef63 bltu t4,a7,3bc04c64 + 3bc0494a: 438d li t2,3 + 3bc0494c: 8ec6 mv t4,a7 + 3bc0494e: 0113f363 bgeu t2,a7,3bc04954 + 3bc04952: 4e8d li t4,3 + 3bc04954: 00265383 lhu t2,2(a2) + 3bc04958: 41d888bb subw a7,a7,t4 + 3bc0495c: 00038e9b sext.w t4,t2 + 3bc04960: 00d4fa63 bgeu s1,a3,3bc04974 + 3bc04964: 0082949b slliw s1,t0,0x8 + 3bc04968: 9817428b lbuia t0,(a4),1,0 + 3bc0496c: 0087979b slliw a5,a5,0x8 + 3bc04970: 00f2e7b3 or a5,t0,a5 + 3bc04974: 00b4d29b srliw t0,s1,0xb + 3bc04978: 03d2893b mulw s2,t0,t4 + 3bc0497c: 2327f563 bgeu a5,s2,3bc04ba6 + 3bc04980: 41d40ebb subw t4,s0,t4 + 3bc04984: 005ede9b srliw t4,t4,0x5 + 3bc04988: 007e83bb addw t2,t4,t2 + 3bc0498c: 3c03b38b extu t2,t2,15,0 + 3bc04990: 4e89 li t4,2 + 3bc04992: 00761123 sh t2,2(a2) + 3bc04996: b3d6448b lurhu s1,a2,t4,1 + 3bc0499a: 03d61b8b addsl s7,a2,t4,1 + 3bc0499e: 0004829b sext.w t0,s1 + 3bc049a2: 00d97a63 bgeu s2,a3,3bc049b6 + 3bc049a6: 9817438b lbuia t2,(a4),1,0 + 3bc049aa: 0087979b slliw a5,a5,0x8 + 3bc049ae: 0089191b slliw s2,s2,0x8 + 3bc049b2: 00f3e7b3 or a5,t2,a5 + 3bc049b6: 00b95b1b srliw s6,s2,0xb + 3bc049ba: 025b03bb mulw t2,s6,t0 + 3bc049be: 001e9c1b slliw s8,t4,0x1 + 3bc049c2: 0e86 slli t4,t4,0x1 + 3bc049c4: 1e77fd63 bgeu a5,t2,3bc04bbe + 3bc049c8: 405402bb subw t0,s0,t0 + 3bc049cc: 0052d29b srliw t0,t0,0x5 + 3bc049d0: 009284bb addw s1,t0,s1 + 3bc049d4: 3c04b48b extu s1,s1,15,0 + 3bc049d8: 009b9023 sh s1,0(s7) + 3bc049dc: b3d6490b lurhu s2,a2,t4,1 + 3bc049e0: 020e9493 slli s1,t4,0x20 + 3bc049e4: 01f4dc13 srli s8,s1,0x1f + 3bc049e8: 9c32 add s8,s8,a2 + 3bc049ea: 0009029b sext.w t0,s2 + 3bc049ee: 00d3f963 bgeu t2,a3,3bc04a00 + 3bc049f2: 9817448b lbuia s1,(a4),1,0 + 3bc049f6: 0087979b slliw a5,a5,0x8 + 3bc049fa: 0083939b slliw t2,t2,0x8 + 3bc049fe: 8fc5 or a5,a5,s1 + 3bc04a00: 00b3db9b srliw s7,t2,0xb + 3bc04a04: 025b84bb mulw s1,s7,t0 + 3bc04a08: 001e9b1b slliw s6,t4,0x1 + 3bc04a0c: 1c97f663 bgeu a5,s1,3bc04bd8 + 3bc04a10: 405402bb subw t0,s0,t0 + 3bc04a14: 0052d29b srliw t0,t0,0x5 + 3bc04a18: 0122893b addw s2,t0,s2 + 3bc04a1c: 3c09390b extu s2,s2,15,0 + 3bc04a20: 012c1023 sh s2,0(s8) + 3bc04a24: b366428b lurhu t0,a2,s6,1 + 3bc04a28: 020b1e93 slli t4,s6,0x20 + 3bc04a2c: 01fedc13 srli s8,t4,0x1f + 3bc04a30: 9c32 add s8,s8,a2 + 3bc04a32: 00028e9b sext.w t4,t0 + 3bc04a36: 00d4fa63 bgeu s1,a3,3bc04a4a + 3bc04a3a: 9817438b lbuia t2,(a4),1,0 + 3bc04a3e: 0087979b slliw a5,a5,0x8 + 3bc04a42: 0084949b slliw s1,s1,0x8 + 3bc04a46: 00f3e7b3 or a5,t2,a5 + 3bc04a4a: 00b4db9b srliw s7,s1,0xb + 3bc04a4e: 03db83bb mulw t2,s7,t4 + 3bc04a52: 001b191b slliw s2,s6,0x1 + 3bc04a56: 1877fc63 bgeu a5,t2,3bc04bee + 3bc04a5a: 41d40ebb subw t4,s0,t4 + 3bc04a5e: 005ede9b srliw t4,t4,0x5 + 3bc04a62: 005e82bb addw t0,t4,t0 + 3bc04a66: 3c02b28b extu t0,t0,15,0 + 3bc04a6a: 02091493 slli s1,s2,0x20 + 3bc04a6e: 005c1023 sh t0,0(s8) + 3bc04a72: 01f4db93 srli s7,s1,0x1f + 3bc04a76: b326448b lurhu s1,a2,s2,1 + 3bc04a7a: 9bb2 add s7,s7,a2 + 3bc04a7c: 00048e9b sext.w t4,s1 + 3bc04a80: 00d3fa63 bgeu t2,a3,3bc04a94 + 3bc04a84: 9817428b lbuia t0,(a4),1,0 + 3bc04a88: 0087979b slliw a5,a5,0x8 + 3bc04a8c: 0083939b slliw t2,t2,0x8 + 3bc04a90: 00f2e7b3 or a5,t0,a5 + 3bc04a94: 00b3db1b srliw s6,t2,0xb + 3bc04a98: 03db02bb mulw t0,s6,t4 + 3bc04a9c: 0019191b slliw s2,s2,0x1 + 3bc04aa0: 1657f363 bgeu a5,t0,3bc04c06 + 3bc04aa4: 41d40ebb subw t4,s0,t4 + 3bc04aa8: 005ede9b srliw t4,t4,0x5 + 3bc04aac: 009e84bb addw s1,t4,s1 + 3bc04ab0: 3c04b48b extu s1,s1,15,0 + 3bc04ab4: 009b9023 sh s1,0(s7) + 3bc04ab8: 02091493 slli s1,s2,0x20 + 3bc04abc: 01f4db93 srli s7,s1,0x1f + 3bc04ac0: b326448b lurhu s1,a2,s2,1 + 3bc04ac4: 9bb2 add s7,s7,a2 + 3bc04ac6: 00048e9b sext.w t4,s1 + 3bc04aca: 00d2fa63 bgeu t0,a3,3bc04ade + 3bc04ace: 9817438b lbuia t2,(a4),1,0 + 3bc04ad2: 0087979b slliw a5,a5,0x8 + 3bc04ad6: 0082929b slliw t0,t0,0x8 + 3bc04ada: 00f3e7b3 or a5,t2,a5 + 3bc04ade: 00b2db1b srliw s6,t0,0xb + 3bc04ae2: 03db03bb mulw t2,s6,t4 + 3bc04ae6: 0019191b slliw s2,s2,0x1 + 3bc04aea: 1277fa63 bgeu a5,t2,3bc04c1e + 3bc04aee: 41d40ebb subw t4,s0,t4 + 3bc04af2: 005ede9b srliw t4,t4,0x5 + 3bc04af6: 009e84bb addw s1,t4,s1 + 3bc04afa: 3c04b48b extu s1,s1,15,0 + 3bc04afe: 009b9023 sh s1,0(s7) + 3bc04b02: 02091493 slli s1,s2,0x20 + 3bc04b06: 01f4db93 srli s7,s1,0x1f + 3bc04b0a: b326448b lurhu s1,a2,s2,1 + 3bc04b0e: 9bb2 add s7,s7,a2 + 3bc04b10: 00048e9b sext.w t4,s1 + 3bc04b14: 00d3fa63 bgeu t2,a3,3bc04b28 + 3bc04b18: 9817428b lbuia t0,(a4),1,0 + 3bc04b1c: 0087979b slliw a5,a5,0x8 + 3bc04b20: 0083939b slliw t2,t2,0x8 + 3bc04b24: 00f2e7b3 or a5,t0,a5 + 3bc04b28: 00b3db1b srliw s6,t2,0xb + 3bc04b2c: 03db02bb mulw t0,s6,t4 + 3bc04b30: 0019191b slliw s2,s2,0x1 + 3bc04b34: 1057f163 bgeu a5,t0,3bc04c36 + 3bc04b38: 41d40ebb subw t4,s0,t4 + 3bc04b3c: 005ede9b srliw t4,t4,0x5 + 3bc04b40: 009e84bb addw s1,t4,s1 + 3bc04b44: 3c04b48b extu s1,s1,15,0 + 3bc04b48: 009b9023 sh s1,0(s7) + 3bc04b4c: b3264b8b lurhu s7,a2,s2,1 + 3bc04b50: 02091493 slli s1,s2,0x20 + 3bc04b54: 01f4db13 srli s6,s1,0x1f + 3bc04b58: 9b32 add s6,s6,a2 + 3bc04b5a: 000b8e9b sext.w t4,s7 + 3bc04b5e: 00d2f963 bgeu t0,a3,3bc04b70 + 3bc04b62: 9817460b lbuia a2,(a4),1,0 + 3bc04b66: 0087979b slliw a5,a5,0x8 + 3bc04b6a: 0082929b slliw t0,t0,0x8 + 3bc04b6e: 8fd1 or a5,a5,a2 + 3bc04b70: 00b2d39b srliw t2,t0,0xb + 3bc04b74: 03d3863b mulw a2,t2,t4 + 3bc04b78: 0019149b slliw s1,s2,0x1 + 3bc04b7c: 0cc7f963 bgeu a5,a2,3bc04c4e + 3bc04b80: 41d40ebb subw t4,s0,t4 + 3bc04b84: 005ede9b srliw t4,t4,0x5 + 3bc04b88: 017e8ebb addw t4,t4,s7 + 3bc04b8c: 01db1023 sh t4,0(s6) + 3bc04b90: 010a548b srb s1,s4,a6,0 + 3bc04b94: 0805 addi a6,a6,1 + 3bc04b96: 64a2 ld s1,8(sp) + 3bc04b98: 649870e3 bgeu a6,s1,3bc059d8 + 3bc04b9c: 74c2 ld s1,48(sp) + 3bc04b9e: d09768e3 bltu a4,s1,3bc048ae + 3bc04ba2: 6370006f j 3bc059d8 + 3bc04ba6: 005ede9b srliw t4,t4,0x5 + 3bc04baa: 41d383bb subw t2,t2,t4 + 3bc04bae: 412787bb subw a5,a5,s2 + 3bc04bb2: 3c03b38b extu t2,t2,15,0 + 3bc04bb6: 4124893b subw s2,s1,s2 + 3bc04bba: 4e8d li t4,3 + 3bc04bbc: bbd9 j 3bc04992 + 3bc04bbe: 0052d29b srliw t0,t0,0x5 + 3bc04bc2: 405484bb subw s1,s1,t0 + 3bc04bc6: 407787bb subw a5,a5,t2 + 3bc04bca: 3c04b48b extu s1,s1,15,0 + 3bc04bce: 001c0e9b addiw t4,s8,1 + 3bc04bd2: 407903bb subw t2,s2,t2 + 3bc04bd6: b509 j 3bc049d8 + 3bc04bd8: 0052d29b srliw t0,t0,0x5 + 3bc04bdc: 4059093b subw s2,s2,t0 + 3bc04be0: 9f85 subw a5,a5,s1 + 3bc04be2: 3c09390b extu s2,s2,15,0 + 3bc04be6: 2b05 addiw s6,s6,1 + 3bc04be8: 409384bb subw s1,t2,s1 + 3bc04bec: bd15 j 3bc04a20 + 3bc04bee: 005ede9b srliw t4,t4,0x5 + 3bc04bf2: 41d282bb subw t0,t0,t4 + 3bc04bf6: 407787bb subw a5,a5,t2 + 3bc04bfa: 3c02b28b extu t0,t0,15,0 + 3bc04bfe: 2905 addiw s2,s2,1 + 3bc04c00: 407483bb subw t2,s1,t2 + 3bc04c04: b59d j 3bc04a6a + 3bc04c06: 005ede9b srliw t4,t4,0x5 + 3bc04c0a: 41d484bb subw s1,s1,t4 + 3bc04c0e: 405787bb subw a5,a5,t0 + 3bc04c12: 3c04b48b extu s1,s1,15,0 + 3bc04c16: 2905 addiw s2,s2,1 + 3bc04c18: 405382bb subw t0,t2,t0 + 3bc04c1c: bd61 j 3bc04ab4 + 3bc04c1e: 005ede9b srliw t4,t4,0x5 + 3bc04c22: 41d484bb subw s1,s1,t4 + 3bc04c26: 407787bb subw a5,a5,t2 + 3bc04c2a: 3c04b48b extu s1,s1,15,0 + 3bc04c2e: 2905 addiw s2,s2,1 + 3bc04c30: 407283bb subw t2,t0,t2 + 3bc04c34: b5e9 j 3bc04afe + 3bc04c36: 005ede9b srliw t4,t4,0x5 + 3bc04c3a: 41d484bb subw s1,s1,t4 + 3bc04c3e: 405787bb subw a5,a5,t0 + 3bc04c42: 3c04b48b extu s1,s1,15,0 + 3bc04c46: 2905 addiw s2,s2,1 + 3bc04c48: 405382bb subw t0,t2,t0 + 3bc04c4c: bdf5 j 3bc04b48 + 3bc04c4e: 005ede9b srliw t4,t4,0x5 + 3bc04c52: 41db8ebb subw t4,s7,t4 + 3bc04c56: 9f91 subw a5,a5,a2 + 3bc04c58: 01db1023 sh t4,0(s6) + 3bc04c5c: 2485 addiw s1,s1,1 + 3bc04c5e: 40c2863b subw a2,t0,a2 + 3bc04c62: b73d j 3bc04b90 + 3bc04c64: 7c0fb90b extu s2,t6,31,0 + 3bc04c68: 41280eb3 sub t4,a6,s2 + 3bc04c6c: 83d6 mv t2,s5 + 3bc04c6e: 01286363 bltu a6,s2,3bc04c74 + 3bc04c72: 4381 li t2,0 + 3bc04c74: 9ed2 add t4,t4,s4 + 3bc04c76: 4925 li s2,9 + 3bc04c78: 807ece8b lrbu t4,t4,t2,0 + 3bc04c7c: 438d li t2,3 + 3bc04c7e: 01197363 bgeu s2,a7,3bc04c84 + 3bc04c82: 4399 li t2,6 + 3bc04c84: 001e9b1b slliw s6,t4,0x1 + 3bc04c88: 100b7b13 andi s6,s6,256 + 3bc04c8c: 407888bb subw a7,a7,t2 + 3bc04c90: 101b039b addiw t2,s6,257 + 3bc04c94: b2764c0b lurhu s8,a2,t2,1 + 3bc04c98: 101b0b93 addi s7,s6,257 + 3bc04c9c: 03761b8b addsl s7,a2,s7,1 + 3bc04ca0: 000c039b sext.w t2,s8 + 3bc04ca4: 00d4fa63 bgeu s1,a3,3bc04cb8 + 3bc04ca8: 0082949b slliw s1,t0,0x8 + 3bc04cac: 9817428b lbuia t0,(a4),1,0 + 3bc04cb0: 0087979b slliw a5,a5,0x8 + 3bc04cb4: 00f2e7b3 or a5,t0,a5 + 3bc04cb8: 00b4d29b srliw t0,s1,0xb + 3bc04cbc: 0272893b mulw s2,t0,t2 + 3bc04cc0: 2b27ff63 bgeu a5,s2,3bc04f7e + 3bc04cc4: 407403bb subw t2,s0,t2 + 3bc04cc8: 0053d39b srliw t2,t2,0x5 + 3bc04ccc: 01838c3b addw s8,t2,s8 + 3bc04cd0: 3c0c3c0b extu s8,s8,15,0 + 3bc04cd4: 100b4b13 xori s6,s6,256 + 3bc04cd8: 4289 li t0,2 + 3bc04cda: 002e939b slliw t2,t4,0x2 + 3bc04cde: 007b73b3 and t2,s6,t2 + 3bc04ce2: 005b04bb addw s1,s6,t0 + 3bc04ce6: 018b9023 sh s8,0(s7) + 3bc04cea: 00038c1b sext.w s8,t2 + 3bc04cee: 007483bb addw t2,s1,t2 + 3bc04cf2: b2764b8b lurhu s7,a2,t2,1 + 3bc04cf6: 02039493 slli s1,t2,0x20 + 3bc04cfa: 01f4dd13 srli s10,s1,0x1f + 3bc04cfe: 9d32 add s10,s10,a2 + 3bc04d00: 000b839b sext.w t2,s7 + 3bc04d04: 00d97963 bgeu s2,a3,3bc04d16 + 3bc04d08: 9817448b lbuia s1,(a4),1,0 + 3bc04d0c: 0087979b slliw a5,a5,0x8 + 3bc04d10: 0089191b slliw s2,s2,0x8 + 3bc04d14: 8fc5 or a5,a5,s1 + 3bc04d16: 00b95c9b srliw s9,s2,0xb + 3bc04d1a: 027c84bb mulw s1,s9,t2 + 3bc04d1e: 00129d9b slliw s11,t0,0x1 + 3bc04d22: 0286 slli t0,t0,0x1 + 3bc04d24: 2697f963 bgeu a5,s1,3bc04f96 + 3bc04d28: 407403bb subw t2,s0,t2 + 3bc04d2c: 0053d39b srliw t2,t2,0x5 + 3bc04d30: 01738bbb addw s7,t2,s7 + 3bc04d34: 3c0bbb8b extu s7,s7,15,0 + 3bc04d38: 018b4c33 xor s8,s6,s8 + 3bc04d3c: 003e939b slliw t2,t4,0x3 + 3bc04d40: 007c73b3 and t2,s8,t2 + 3bc04d44: 005c093b addw s2,s8,t0 + 3bc04d48: 017d1023 sh s7,0(s10) + 3bc04d4c: 00038b1b sext.w s6,t2 + 3bc04d50: 007903bb addw t2,s2,t2 + 3bc04d54: b2764c8b lurhu s9,a2,t2,1 + 3bc04d58: 02039913 slli s2,t2,0x20 + 3bc04d5c: 01f95d93 srli s11,s2,0x1f + 3bc04d60: 9db2 add s11,s11,a2 + 3bc04d62: 000c839b sext.w t2,s9 + 3bc04d66: 00d4fa63 bgeu s1,a3,3bc04d7a + 3bc04d6a: 9817490b lbuia s2,(a4),1,0 + 3bc04d6e: 0087979b slliw a5,a5,0x8 + 3bc04d72: 0084949b slliw s1,s1,0x8 + 3bc04d76: 00f967b3 or a5,s2,a5 + 3bc04d7a: 00b4dd1b srliw s10,s1,0xb + 3bc04d7e: 027d093b mulw s2,s10,t2 + 3bc04d82: 00129b9b slliw s7,t0,0x1 + 3bc04d86: 2327f463 bgeu a5,s2,3bc04fae + 3bc04d8a: 407403bb subw t2,s0,t2 + 3bc04d8e: 0053d39b srliw t2,t2,0x5 + 3bc04d92: 01938cbb addw s9,t2,s9 + 3bc04d96: 3c0cbc8b extu s9,s9,15,0 + 3bc04d9a: 016c4b33 xor s6,s8,s6 + 3bc04d9e: 004e929b slliw t0,t4,0x4 + 3bc04da2: 005b72b3 and t0,s6,t0 + 3bc04da6: 017b03bb addw t2,s6,s7 + 3bc04daa: 019d9023 sh s9,0(s11) + 3bc04dae: 00028c1b sext.w s8,t0 + 3bc04db2: 005382bb addw t0,t2,t0 + 3bc04db6: b256438b lurhu t2,a2,t0,1 + 3bc04dba: 02029493 slli s1,t0,0x20 + 3bc04dbe: 01f4dd13 srli s10,s1,0x1f + 3bc04dc2: 9d32 add s10,s10,a2 + 3bc04dc4: 0003829b sext.w t0,t2 + 3bc04dc8: 00d97963 bgeu s2,a3,3bc04dda + 3bc04dcc: 9817448b lbuia s1,(a4),1,0 + 3bc04dd0: 0087979b slliw a5,a5,0x8 + 3bc04dd4: 0089191b slliw s2,s2,0x8 + 3bc04dd8: 8fc5 or a5,a5,s1 + 3bc04dda: 00b95c9b srliw s9,s2,0xb + 3bc04dde: 025c84bb mulw s1,s9,t0 + 3bc04de2: 001b9b9b slliw s7,s7,0x1 + 3bc04de6: 1e97f063 bgeu a5,s1,3bc04fc6 + 3bc04dea: 405402bb subw t0,s0,t0 + 3bc04dee: 0052d29b srliw t0,t0,0x5 + 3bc04df2: 007283bb addw t2,t0,t2 + 3bc04df6: 3c03b38b extu t2,t2,15,0 + 3bc04dfa: 018b4c33 xor s8,s6,s8 + 3bc04dfe: 005e929b slliw t0,t4,0x5 + 3bc04e02: 007d1023 sh t2,0(s10) + 3bc04e06: 005c72b3 and t0,s8,t0 + 3bc04e0a: 017c03bb addw t2,s8,s7 + 3bc04e0e: 00028b1b sext.w s6,t0 + 3bc04e12: 005382bb addw t0,t2,t0 + 3bc04e16: b256490b lurhu s2,a2,t0,1 + 3bc04e1a: 02029393 slli t2,t0,0x20 + 3bc04e1e: 01f3dd13 srli s10,t2,0x1f + 3bc04e22: 9d32 add s10,s10,a2 + 3bc04e24: 0009029b sext.w t0,s2 + 3bc04e28: 00d4fa63 bgeu s1,a3,3bc04e3c + 3bc04e2c: 9817438b lbuia t2,(a4),1,0 + 3bc04e30: 0087979b slliw a5,a5,0x8 + 3bc04e34: 0084949b slliw s1,s1,0x8 + 3bc04e38: 00f3e7b3 or a5,t2,a5 + 3bc04e3c: 00b4dc9b srliw s9,s1,0xb + 3bc04e40: 025c83bb mulw t2,s9,t0 + 3bc04e44: 001b9b9b slliw s7,s7,0x1 + 3bc04e48: 1877fa63 bgeu a5,t2,3bc04fdc + 3bc04e4c: 405402bb subw t0,s0,t0 + 3bc04e50: 0052d29b srliw t0,t0,0x5 + 3bc04e54: 0122893b addw s2,t0,s2 + 3bc04e58: 3c09390b extu s2,s2,15,0 + 3bc04e5c: 016c4b33 xor s6,s8,s6 + 3bc04e60: 006e929b slliw t0,t4,0x6 + 3bc04e64: 005b72b3 and t0,s6,t0 + 3bc04e68: 017b04bb addw s1,s6,s7 + 3bc04e6c: 00028c1b sext.w s8,t0 + 3bc04e70: 005482bb addw t0,s1,t0 + 3bc04e74: 02029493 slli s1,t0,0x20 + 3bc04e78: 012d1023 sh s2,0(s10) + 3bc04e7c: 01f4dd13 srli s10,s1,0x1f + 3bc04e80: b256448b lurhu s1,a2,t0,1 + 3bc04e84: 9d32 add s10,s10,a2 + 3bc04e86: 0004829b sext.w t0,s1 + 3bc04e8a: 00d3fa63 bgeu t2,a3,3bc04e9e + 3bc04e8e: 9817490b lbuia s2,(a4),1,0 + 3bc04e92: 0087979b slliw a5,a5,0x8 + 3bc04e96: 0083939b slliw t2,t2,0x8 + 3bc04e9a: 00f967b3 or a5,s2,a5 + 3bc04e9e: 00b3dc9b srliw s9,t2,0xb + 3bc04ea2: 025c893b mulw s2,s9,t0 + 3bc04ea6: 001b9b9b slliw s7,s7,0x1 + 3bc04eaa: 1527f563 bgeu a5,s2,3bc04ff4 + 3bc04eae: 405402bb subw t0,s0,t0 + 3bc04eb2: 0052d29b srliw t0,t0,0x5 + 3bc04eb6: 009284bb addw s1,t0,s1 + 3bc04eba: 3c04b48b extu s1,s1,15,0 + 3bc04ebe: 018b4c33 xor s8,s6,s8 + 3bc04ec2: 007e929b slliw t0,t4,0x7 + 3bc04ec6: 005c72b3 and t0,s8,t0 + 3bc04eca: 017c03bb addw t2,s8,s7 + 3bc04ece: 009d1023 sh s1,0(s10) + 3bc04ed2: 0002849b sext.w s1,t0 + 3bc04ed6: 005382bb addw t0,t2,t0 + 3bc04eda: b2564b0b lurhu s6,a2,t0,1 + 3bc04ede: 02029393 slli t2,t0,0x20 + 3bc04ee2: 01f3dd93 srli s11,t2,0x1f + 3bc04ee6: 9db2 add s11,s11,a2 + 3bc04ee8: 000b029b sext.w t0,s6 + 3bc04eec: 00d97a63 bgeu s2,a3,3bc04f00 + 3bc04ef0: 9817438b lbuia t2,(a4),1,0 + 3bc04ef4: 0087979b slliw a5,a5,0x8 + 3bc04ef8: 0089191b slliw s2,s2,0x8 + 3bc04efc: 00f3e7b3 or a5,t2,a5 + 3bc04f00: 00b95d1b srliw s10,s2,0xb + 3bc04f04: 025d03bb mulw t2,s10,t0 + 3bc04f08: 001b9c9b slliw s9,s7,0x1 + 3bc04f0c: 1077f063 bgeu a5,t2,3bc0500c + 3bc04f10: 405402bb subw t0,s0,t0 + 3bc04f14: 0052d29b srliw t0,t0,0x5 + 3bc04f18: 01628b3b addw s6,t0,s6 + 3bc04f1c: 3c0b3b0b extu s6,s6,15,0 + 3bc04f20: 009c44b3 xor s1,s8,s1 + 3bc04f24: 008e9e9b slliw t4,t4,0x8 + 3bc04f28: 01d4feb3 and t4,s1,t4 + 3bc04f2c: 019484bb addw s1,s1,s9 + 3bc04f30: 01d48ebb addw t4,s1,t4 + 3bc04f34: 016d9023 sh s6,0(s11) + 3bc04f38: b3d64b0b lurhu s6,a2,t4,1 + 3bc04f3c: 020e9493 slli s1,t4,0x20 + 3bc04f40: 01f4d913 srli s2,s1,0x1f + 3bc04f44: 9932 add s2,s2,a2 + 3bc04f46: 000b0e9b sext.w t4,s6 + 3bc04f4a: 00d3f963 bgeu t2,a3,3bc04f5c + 3bc04f4e: 9817460b lbuia a2,(a4),1,0 + 3bc04f52: 0087979b slliw a5,a5,0x8 + 3bc04f56: 0083939b slliw t2,t2,0x8 + 3bc04f5a: 8fd1 or a5,a5,a2 + 3bc04f5c: 00b3d29b srliw t0,t2,0xb + 3bc04f60: 03d2863b mulw a2,t0,t4 + 3bc04f64: 001c949b slliw s1,s9,0x1 + 3bc04f68: 0ac7fe63 bgeu a5,a2,3bc05024 + 3bc04f6c: 41d40ebb subw t4,s0,t4 + 3bc04f70: 005ede9b srliw t4,t4,0x5 + 3bc04f74: 016e8ebb addw t4,t4,s6 + 3bc04f78: 01d91023 sh t4,0(s2) + 3bc04f7c: b911 j 3bc04b90 + 3bc04f7e: 0053d39b srliw t2,t2,0x5 + 3bc04f82: 407c0c3b subw s8,s8,t2 + 3bc04f86: 412787bb subw a5,a5,s2 + 3bc04f8a: 3c0c3c0b extu s8,s8,15,0 + 3bc04f8e: 4124893b subw s2,s1,s2 + 3bc04f92: 428d li t0,3 + 3bc04f94: b399 j 3bc04cda + 3bc04f96: 0053d39b srliw t2,t2,0x5 + 3bc04f9a: 407b8bbb subw s7,s7,t2 + 3bc04f9e: 9f85 subw a5,a5,s1 + 3bc04fa0: 3c0bbb8b extu s7,s7,15,0 + 3bc04fa4: 001d829b addiw t0,s11,1 + 3bc04fa8: 409904bb subw s1,s2,s1 + 3bc04fac: bb41 j 3bc04d3c + 3bc04fae: 0053d39b srliw t2,t2,0x5 + 3bc04fb2: 407c8cbb subw s9,s9,t2 + 3bc04fb6: 412787bb subw a5,a5,s2 + 3bc04fba: 3c0cbc8b extu s9,s9,15,0 + 3bc04fbe: 2b85 addiw s7,s7,1 + 3bc04fc0: 4124893b subw s2,s1,s2 + 3bc04fc4: bbe9 j 3bc04d9e + 3bc04fc6: 0052d29b srliw t0,t0,0x5 + 3bc04fca: 405383bb subw t2,t2,t0 + 3bc04fce: 9f85 subw a5,a5,s1 + 3bc04fd0: 3c03b38b extu t2,t2,15,0 + 3bc04fd4: 2b85 addiw s7,s7,1 + 3bc04fd6: 409904bb subw s1,s2,s1 + 3bc04fda: b515 j 3bc04dfe + 3bc04fdc: 0052d29b srliw t0,t0,0x5 + 3bc04fe0: 4059093b subw s2,s2,t0 + 3bc04fe4: 407787bb subw a5,a5,t2 + 3bc04fe8: 3c09390b extu s2,s2,15,0 + 3bc04fec: 2b85 addiw s7,s7,1 + 3bc04fee: 407483bb subw t2,s1,t2 + 3bc04ff2: b5bd j 3bc04e60 + 3bc04ff4: 0052d29b srliw t0,t0,0x5 + 3bc04ff8: 405484bb subw s1,s1,t0 + 3bc04ffc: 412787bb subw a5,a5,s2 + 3bc05000: 3c04b48b extu s1,s1,15,0 + 3bc05004: 2b85 addiw s7,s7,1 + 3bc05006: 4123893b subw s2,t2,s2 + 3bc0500a: bd65 j 3bc04ec2 + 3bc0500c: 0052d29b srliw t0,t0,0x5 + 3bc05010: 405b0b3b subw s6,s6,t0 + 3bc05014: 407787bb subw a5,a5,t2 + 3bc05018: 3c0b3b0b extu s6,s6,15,0 + 3bc0501c: 2c85 addiw s9,s9,1 + 3bc0501e: 407903bb subw t2,s2,t2 + 3bc05022: b709 j 3bc04f24 + 3bc05024: 005ede9b srliw t4,t4,0x5 + 3bc05028: 41db0ebb subw t4,s6,t4 + 3bc0502c: 9f91 subw a5,a5,a2 + 3bc0502e: 01d91023 sh t4,0(s2) + 3bc05032: 2485 addiw s1,s1,1 + 3bc05034: 40c3863b subw a2,t2,a2 + 3bc05038: bea1 j 3bc04b90 + 3bc0503a: 0053d39b srliw t2,t2,0x5 + 3bc0503e: 407b03bb subw t2,s6,t2 + 3bc05042: 2175d38b srh t2,a1,s7,0 + 3bc05046: 7c08bb8b extu s7,a7,31,0 + 3bc0504a: 0bc1 addi s7,s7,16 + 3bc0504c: a375cc0b lrhu s8,a1,s7,1 + 3bc05050: 409604bb subw s1,a2,s1 + 3bc05054: 405787bb subw a5,a5,t0 + 3bc05058: 001b9b13 slli s6,s7,0x1 + 3bc0505c: 000c039b sext.w t2,s8 + 3bc05060: 00d4fa63 bgeu s1,a3,3bc05074 + 3bc05064: 0087929b slliw t0,a5,0x8 + 3bc05068: 9817478b lbuia a5,(a4),1,0 + 3bc0506c: 0084949b slliw s1,s1,0x8 + 3bc05070: 0057e7b3 or a5,a5,t0 + 3bc05074: 00b4d29b srliw t0,s1,0xb + 3bc05078: 0272863b mulw a2,t0,t2 + 3bc0507c: 36c7ff63 bgeu a5,a2,3bc053fa + 3bc05080: 407403bb subw t2,s0,t2 + 3bc05084: 0053d39b srliw t2,t2,0x5 + 3bc05088: 62c6 ld t0,80(sp) + 3bc0508a: 018383bb addw t2,t2,s8 + 3bc0508e: 2375d38b srh t2,a1,s7,1 + 3bc05092: 28b1 addiw a7,a7,12 + 3bc05094: 8b7e mv s6,t6 + 3bc05096: 0002d383 lhu t2,0(t0) + 3bc0509a: 00038f9b sext.w t6,t2 + 3bc0509e: 00d67a63 bgeu a2,a3,3bc050b2 + 3bc050a2: 9817430b lbuia t1,(a4),1,0 + 3bc050a6: 0087979b slliw a5,a5,0x8 + 3bc050aa: 0086161b slliw a2,a2,0x8 + 3bc050ae: 00f367b3 or a5,t1,a5 + 3bc050b2: 00b6531b srliw t1,a2,0xb + 3bc050b6: 03f304bb mulw s1,t1,t6 + 3bc050ba: 8326 mv t1,s1 + 3bc050bc: 5297f663 bgeu a5,s1,3bc055e8 + 3bc050c0: 41f40fbb subw t6,s0,t6 + 3bc050c4: 005fdf9b srliw t6,t6,0x5 + 3bc050c8: 7c0ebe8b extu t4,t4,31,0 + 3bc050cc: 007f8fbb addw t6,t6,t2 + 3bc050d0: 01f29023 sh t6,0(t0) + 3bc050d4: 03d2928b addsl t0,t0,t4,1 + 3bc050d8: 0022de83 lhu t4,2(t0) + 3bc050dc: 000e861b sext.w a2,t4 + 3bc050e0: 00d4fa63 bgeu s1,a3,3bc050f4 + 3bc050e4: 9817430b lbuia t1,(a4),1,0 + 3bc050e8: 0087979b slliw a5,a5,0x8 + 3bc050ec: 0084949b slliw s1,s1,0x8 + 3bc050f0: 00f367b3 or a5,t1,a5 + 3bc050f4: 00b4d31b srliw t1,s1,0xb + 3bc050f8: 02c30fbb mulw t6,t1,a2 + 3bc050fc: 4bf7f263 bgeu a5,t6,3bc055a0 + 3bc05100: 40c4063b subw a2,s0,a2 + 3bc05104: 0056561b srliw a2,a2,0x5 + 3bc05108: 01d60ebb addw t4,a2,t4 + 3bc0510c: 3c0ebe8b extu t4,t4,15,0 + 3bc05110: 4309 li t1,2 + 3bc05112: 01d29123 sh t4,2(t0) + 3bc05116: b262c38b lurhu t2,t0,t1,1 + 3bc0511a: 7c03390b extu s2,t1,31,0 + 3bc0511e: 0003861b sext.w a2,t2 + 3bc05122: 00dffa63 bgeu t6,a3,3bc05136 + 3bc05126: 98174e8b lbuia t4,(a4),1,0 + 3bc0512a: 0087979b slliw a5,a5,0x8 + 3bc0512e: 008f9f9b slliw t6,t6,0x8 + 3bc05132: 00fee7b3 or a5,t4,a5 + 3bc05136: 00bfd49b srliw s1,t6,0xb + 3bc0513a: 02c48ebb mulw t4,s1,a2 + 3bc0513e: 00131b9b slliw s7,t1,0x1 + 3bc05142: 0306 slli t1,t1,0x1 + 3bc05144: 47d7fa63 bgeu a5,t4,3bc055b8 + 3bc05148: 40c4063b subw a2,s0,a2 + 3bc0514c: 0056561b srliw a2,a2,0x5 + 3bc05150: 007603bb addw t2,a2,t2 + 3bc05154: 3c03b38b extu t2,t2,15,0 + 3bc05158: 2322d38b srh t2,t0,s2,1 + 3bc0515c: b262c38b lurhu t2,t0,t1,1 + 3bc05160: 7c033b8b extu s7,t1,31,0 + 3bc05164: 00038f9b sext.w t6,t2 + 3bc05168: 00def963 bgeu t4,a3,3bc0517a + 3bc0516c: 9817460b lbuia a2,(a4),1,0 + 3bc05170: 0087979b slliw a5,a5,0x8 + 3bc05174: 008e9e9b slliw t4,t4,0x8 + 3bc05178: 8fd1 or a5,a5,a2 + 3bc0517a: 00bed91b srliw s2,t4,0xb + 3bc0517e: 03f9063b mulw a2,s2,t6 + 3bc05182: 0013131b slliw t1,t1,0x1 + 3bc05186: 44c7f663 bgeu a5,a2,3bc055d2 + 3bc0518a: 41f40fbb subw t6,s0,t6 + 3bc0518e: 005fdf9b srliw t6,t6,0x5 + 3bc05192: 007f83bb addw t2,t6,t2 + 3bc05196: 3c03b38b extu t2,t2,15,0 + 3bc0519a: 2372d38b srh t2,t0,s7,1 + 3bc0519e: 3361 addiw t1,t1,-8 + 3bc051a0: 44ad li s1,11 + 3bc051a2: 1114f5e3 bgeu s1,a7,3bc05aac + 3bc051a6: 448d li s1,3 + 3bc051a8: 8f9a mv t6,t1 + 3bc051aa: 0064f363 bgeu s1,t1,3bc051b0 + 3bc051ae: 4f8d li t6,3 + 3bc051b0: 006f9f9b slliw t6,t6,0x6 + 3bc051b4: 040f8f9b addiw t6,t6,64 + 3bc051b8: 7c0fbf8b extu t6,t6,31,0 + 3bc051bc: 03f59f8b addsl t6,a1,t6,1 + 3bc051c0: 002fd383 lhu t2,2(t6) + 3bc051c4: 00038e9b sext.w t4,t2 + 3bc051c8: 00d67a63 bgeu a2,a3,3bc051dc + 3bc051cc: 9817428b lbuia t0,(a4),1,0 + 3bc051d0: 0087979b slliw a5,a5,0x8 + 3bc051d4: 0086161b slliw a2,a2,0x8 + 3bc051d8: 00f2e7b3 or a5,t0,a5 + 3bc051dc: 00b6549b srliw s1,a2,0xb + 3bc051e0: 03d482bb mulw t0,s1,t4 + 3bc051e4: 5e57f763 bgeu a5,t0,3bc057d2 + 3bc051e8: 41d40ebb subw t4,s0,t4 + 3bc051ec: 005ede9b srliw t4,t4,0x5 + 3bc051f0: 007e83bb addw t2,t4,t2 + 3bc051f4: 3c03b38b extu t2,t2,15,0 + 3bc051f8: 4609 li a2,2 + 3bc051fa: 007f9123 sh t2,2(t6) + 3bc051fe: b2cfc48b lurhu s1,t6,a2,1 + 3bc05202: 7c063b8b extu s7,a2,31,0 + 3bc05206: 00048e9b sext.w t4,s1 + 3bc0520a: 00d2fa63 bgeu t0,a3,3bc0521e + 3bc0520e: 9817438b lbuia t2,(a4),1,0 + 3bc05212: 0087979b slliw a5,a5,0x8 + 3bc05216: 0082929b slliw t0,t0,0x8 + 3bc0521a: 00f3e7b3 or a5,t2,a5 + 3bc0521e: 00b2d91b srliw s2,t0,0xb + 3bc05222: 03d903bb mulw t2,s2,t4 + 3bc05226: 00161c1b slliw s8,a2,0x1 + 3bc0522a: 0606 slli a2,a2,0x1 + 3bc0522c: 5a77ff63 bgeu a5,t2,3bc057ea + 3bc05230: 41d40ebb subw t4,s0,t4 + 3bc05234: 005ede9b srliw t4,t4,0x5 + 3bc05238: 009e84bb addw s1,t4,s1 + 3bc0523c: 3c04b48b extu s1,s1,15,0 + 3bc05240: 237fd48b srh s1,t6,s7,1 + 3bc05244: b2cfc48b lurhu s1,t6,a2,1 + 3bc05248: 7c063c0b extu s8,a2,31,0 + 3bc0524c: 00048e9b sext.w t4,s1 + 3bc05250: 00d3fa63 bgeu t2,a3,3bc05264 + 3bc05254: 9817428b lbuia t0,(a4),1,0 + 3bc05258: 0087979b slliw a5,a5,0x8 + 3bc0525c: 0083939b slliw t2,t2,0x8 + 3bc05260: 00f2e7b3 or a5,t0,a5 + 3bc05264: 00b3db9b srliw s7,t2,0xb + 3bc05268: 03db82bb mulw t0,s7,t4 + 3bc0526c: 0016191b slliw s2,a2,0x1 + 3bc05270: 5857fa63 bgeu a5,t0,3bc05804 + 3bc05274: 41d40ebb subw t4,s0,t4 + 3bc05278: 005ede9b srliw t4,t4,0x5 + 3bc0527c: 009e84bb addw s1,t4,s1 + 3bc05280: 3c04b48b extu s1,s1,15,0 + 3bc05284: 238fd48b srh s1,t6,s8,1 + 3bc05288: b32fc38b lurhu t2,t6,s2,1 + 3bc0528c: 7c093c0b extu s8,s2,31,0 + 3bc05290: 0003861b sext.w a2,t2 + 3bc05294: 00d2fa63 bgeu t0,a3,3bc052a8 + 3bc05298: 98174e8b lbuia t4,(a4),1,0 + 3bc0529c: 0087979b slliw a5,a5,0x8 + 3bc052a0: 0082929b slliw t0,t0,0x8 + 3bc052a4: 00fee7b3 or a5,t4,a5 + 3bc052a8: 00b2db9b srliw s7,t0,0xb + 3bc052ac: 02cb8ebb mulw t4,s7,a2 + 3bc052b0: 0019149b slliw s1,s2,0x1 + 3bc052b4: 57d7f463 bgeu a5,t4,3bc0581c + 3bc052b8: 40c4063b subw a2,s0,a2 + 3bc052bc: 0056561b srliw a2,a2,0x5 + 3bc052c0: 007603bb addw t2,a2,t2 + 3bc052c4: 3c03b38b extu t2,t2,15,0 + 3bc052c8: 238fd38b srh t2,t6,s8,1 + 3bc052cc: b29fc28b lurhu t0,t6,s1,1 + 3bc052d0: 7c04bc0b extu s8,s1,31,0 + 3bc052d4: 0002861b sext.w a2,t0 + 3bc052d8: 00defa63 bgeu t4,a3,3bc052ec + 3bc052dc: 9817438b lbuia t2,(a4),1,0 + 3bc052e0: 0087979b slliw a5,a5,0x8 + 3bc052e4: 008e9e9b slliw t4,t4,0x8 + 3bc052e8: 00f3e7b3 or a5,t2,a5 + 3bc052ec: 00bedb9b srliw s7,t4,0xb + 3bc052f0: 02cb83bb mulw t2,s7,a2 + 3bc052f4: 0014991b slliw s2,s1,0x1 + 3bc052f8: 5277fe63 bgeu a5,t2,3bc05834 + 3bc052fc: 40c4063b subw a2,s0,a2 + 3bc05300: 0056561b srliw a2,a2,0x5 + 3bc05304: 005602bb addw t0,a2,t0 + 3bc05308: 3c02b28b extu t0,t0,15,0 + 3bc0530c: 238fd28b srh t0,t6,s8,1 + 3bc05310: b32fc48b lurhu s1,t6,s2,1 + 3bc05314: 7c093c0b extu s8,s2,31,0 + 3bc05318: 0004829b sext.w t0,s1 + 3bc0531c: 00d3f963 bgeu t2,a3,3bc0532e + 3bc05320: 9817460b lbuia a2,(a4),1,0 + 3bc05324: 0087979b slliw a5,a5,0x8 + 3bc05328: 0083939b slliw t2,t2,0x8 + 3bc0532c: 8fd1 or a5,a5,a2 + 3bc0532e: 00b3db9b srliw s7,t2,0xb + 3bc05332: 025b863b mulw a2,s7,t0 + 3bc05336: 00191e9b slliw t4,s2,0x1 + 3bc0533a: 50c7f963 bgeu a5,a2,3bc0584c + 3bc0533e: 405402bb subw t0,s0,t0 + 3bc05342: 0052d29b srliw t0,t0,0x5 + 3bc05346: 009284bb addw s1,t0,s1 + 3bc0534a: 3c04b48b extu s1,s1,15,0 + 3bc0534e: fc0e8e9b addiw t4,t4,-64 + 3bc05352: 238fd48b srh s1,t6,s8,1 + 3bc05356: 000e839b sext.w t2,t4 + 3bc0535a: 448d li s1,3 + 3bc0535c: 0874f063 bgeu s1,t2,3bc053dc + 3bc05360: 001eff93 andi t6,t4,1 + 3bc05364: 44b5 li s1,13 + 3bc05366: 001ed29b srliw t0,t4,0x1 + 3bc0536a: 002fef93 ori t6,t6,2 + 3bc0536e: 5074e963 bltu s1,t2,3bc05880 + 3bc05372: 32fd addiw t0,t0,-1 + 3bc05374: 005f9fbb sllw t6,t6,t0 + 3bc05378: 2f85 addiw t6,t6,1 + 3bc0537a: 4c05 li s8,1 + 3bc0537c: 020f9493 slli s1,t6,0x20 + 3bc05380: 01f4db93 srli s7,s1,0x1f + 3bc05384: 74fd lui s1,0xfffff + 3bc05386: 30048493 addi s1,s1,768 # fffffffffffff300 <__BL2_END__+0xffffffffc43ebaf0> + 3bc0538a: 9ba6 add s7,s7,s1 + 3bc0538c: a175c48b lrhu s1,a1,s7,0 + 3bc05390: 0004839b sext.w t2,s1 + 3bc05394: 00d67a63 bgeu a2,a3,3bc053a8 + 3bc05398: 98174e8b lbuia t4,(a4),1,0 + 3bc0539c: 0087979b slliw a5,a5,0x8 + 3bc053a0: 0086161b slliw a2,a2,0x8 + 3bc053a4: 00fee7b3 or a5,t4,a5 + 3bc053a8: 00b6591b srliw s2,a2,0xb + 3bc053ac: 02790d3b mulw s10,s2,t2 + 3bc053b0: 001c1e9b slliw t4,s8,0x1 + 3bc053b4: 4ba7f963 bgeu a5,s10,3bc05866 + 3bc053b8: 407403bb subw t2,s0,t2 + 3bc053bc: 0053d39b srliw t2,t2,0x5 + 3bc053c0: 009384bb addw s1,t2,s1 + 3bc053c4: 3c04b48b extu s1,s1,15,0 + 3bc053c8: 018f8fbb addw t6,t6,s8 + 3bc053cc: 866a mv a2,s10 + 3bc053ce: 2175d48b srh s1,a1,s7,0 + 3bc053d2: 32fd addiw t0,t0,-1 + 3bc053d4: 48029763 bnez t0,3bc05862 + 3bc053d8: 41df83bb subw t2,t6,t4 + 3bc053dc: 44c9 li s1,18 + 3bc053de: 00138f9b addiw t6,t2,1 + 3bc053e2: 6d14f363 bgeu s1,a7,3bc05aa8 + 3bc053e6: 48a9 li a7,10 + 3bc053e8: 6ee2 ld t4,24(sp) + 3bc053ea: 41de1e8b mveqz t4,t3,t4 + 3bc053ee: 73d3e063 bltu t2,t4,3bc05b0e + 3bc053f2: 03053423 sd a6,40(a0) + 3bc053f6: c24ff06f j 3bc0481a + 3bc053fa: 0053d39b srliw t2,t2,0x5 + 3bc053fe: 407c03bb subw t2,s8,t2 + 3bc05402: 2375d38b srh t2,a1,s7,1 + 3bc05406: 018b0c13 addi s8,s6,24 + 3bc0540a: a185cb8b lrhu s7,a1,s8,0 + 3bc0540e: 40c48cbb subw s9,s1,a2 + 3bc05412: 9f91 subw a5,a5,a2 + 3bc05414: 000b839b sext.w t2,s7 + 3bc05418: 00dcfa63 bgeu s9,a3,3bc0542c + 3bc0541c: 0087929b slliw t0,a5,0x8 + 3bc05420: 9817478b lbuia a5,(a4),1,0 + 3bc05424: 008c9c9b slliw s9,s9,0x8 + 3bc05428: 0057e7b3 or a5,a5,t0 + 3bc0542c: 00bcd61b srliw a2,s9,0xb + 3bc05430: 027602bb mulw t0,a2,t2 + 3bc05434: 8616 mv a2,t0 + 3bc05436: 0a57f463 bgeu a5,t0,3bc054de + 3bc0543a: 407403bb subw t2,s0,t2 + 3bc0543e: 0053d39b srliw t2,t2,0x5 + 3bc05442: 74fd lui s1,0xfffff + 3bc05444: 017383bb addw t2,t2,s7 + 3bc05448: 40048493 addi s1,s1,1024 # fffffffffffff400 <__BL2_END__+0xffffffffc43ebbf0> + 3bc0544c: 2185d38b srh t2,a1,s8,0 + 3bc05450: 9926 add s2,s2,s1 + 3bc05452: a125c48b lrhu s1,a1,s2,0 + 3bc05456: 0004839b sext.w t2,s1 + 3bc0545a: 00d2f963 bgeu t0,a3,3bc0546c + 3bc0545e: 9817460b lbuia a2,(a4),1,0 + 3bc05462: 0087979b slliw a5,a5,0x8 + 3bc05466: 0082929b slliw t0,t0,0x8 + 3bc0546a: 8fd1 or a5,a5,a2 + 3bc0546c: 00b2db1b srliw s6,t0,0xb + 3bc05470: 027b063b mulw a2,s6,t2 + 3bc05474: 8b32 mv s6,a2 + 3bc05476: 02c7ff63 bgeu a5,a2,3bc054b4 + 3bc0547a: 407403bb subw t2,s0,t2 + 3bc0547e: 0053d39b srliw t2,t2,0x5 + 3bc05482: 009383bb addw t2,t2,s1 + 3bc05486: 2125d38b srh t2,a1,s2,0 + 3bc0548a: 7c0fb38b extu t2,t6,31,0 + 3bc0548e: 40780eb3 sub t4,a6,t2 + 3bc05492: 82d6 mv t0,s5 + 3bc05494: 00786363 bltu a6,t2,3bc0549a + 3bc05498: 4281 li t0,0 + 3bc0549a: 9ed2 add t4,t4,s4 + 3bc0549c: 805ece8b lrbu t4,t4,t0,0 + 3bc054a0: 2e05 addiw t3,t3,1 + 3bc054a2: 010a5e8b srb t4,s4,a6,0 + 3bc054a6: 4e99 li t4,6 + 3bc054a8: 0805 addi a6,a6,1 + 3bc054aa: 691ef963 bgeu t4,a7,3bc05b3c + 3bc054ae: 48ad li a7,11 + 3bc054b0: ee6ff06f j 3bc04b96 + 3bc054b4: 0053d39b srliw t2,t2,0x5 + 3bc054b8: 837a mv t1,t5 + 3bc054ba: 407483bb subw t2,s1,t2 + 3bc054be: 8f7e mv t5,t6 + 3bc054c0: 40c2863b subw a2,t0,a2 + 3bc054c4: 416787bb subw a5,a5,s6 + 3bc054c8: 2125d38b srh t2,a1,s2,0 + 3bc054cc: 8f9a mv t6,t1 + 3bc054ce: 4319 li t1,6 + 3bc054d0: 0d137663 bgeu t1,a7,3bc0559c + 3bc054d4: 48ad li a7,11 + 3bc054d6: 8b7a mv s6,t5 + 3bc054d8: 62a6 ld t0,72(sp) + 3bc054da: 8f7e mv t5,t6 + 3bc054dc: be6d j 3bc05096 + 3bc054de: 0053d39b srliw t2,t2,0x5 + 3bc054e2: 407b83bb subw t2,s7,t2 + 3bc054e6: 2185d38b srh t2,a1,s8,0 + 3bc054ea: 030b0493 addi s1,s6,48 + 3bc054ee: a095c38b lrhu t2,a1,s1,0 + 3bc054f2: 405c82bb subw t0,s9,t0 + 3bc054f6: 9f91 subw a5,a5,a2 + 3bc054f8: 0003831b sext.w t1,t2 + 3bc054fc: 00d2f963 bgeu t0,a3,3bc0550e + 3bc05500: 0087961b slliw a2,a5,0x8 + 3bc05504: 9817478b lbuia a5,(a4),1,0 + 3bc05508: 0082929b slliw t0,t0,0x8 + 3bc0550c: 8fd1 or a5,a5,a2 + 3bc0550e: 00b2d91b srliw s2,t0,0xb + 3bc05512: 0269063b mulw a2,s2,t1 + 3bc05516: 00c7fb63 bgeu a5,a2,3bc0552c + 3bc0551a: 4064033b subw t1,s0,t1 + 3bc0551e: 0053531b srliw t1,t1,0x5 + 3bc05522: 0073033b addw t1,t1,t2 + 3bc05526: 2095d30b srh t1,a1,s1,0 + 3bc0552a: b755 j 3bc054ce + 3bc0552c: 0053531b srliw t1,t1,0x5 + 3bc05530: 4063833b subw t1,t2,t1 + 3bc05534: 2095d30b srh t1,a1,s1,0 + 3bc05538: 048b0b13 addi s6,s6,72 + 3bc0553c: a165c38b lrhu t2,a1,s6,0 + 3bc05540: 40c28bbb subw s7,t0,a2 + 3bc05544: 9f91 subw a5,a5,a2 + 3bc05546: 0003831b sext.w t1,t2 + 3bc0554a: 00dbfa63 bgeu s7,a3,3bc0555e + 3bc0554e: 0087991b slliw s2,a5,0x8 + 3bc05552: 9817478b lbuia a5,(a4),1,0 + 3bc05556: 008b9b9b slliw s7,s7,0x8 + 3bc0555a: 0127e7b3 or a5,a5,s2 + 3bc0555e: 00bbd29b srliw t0,s7,0xb + 3bc05562: 0262863b mulw a2,t0,t1 + 3bc05566: 00c7fe63 bgeu a5,a2,3bc05582 + 3bc0556a: 4064033b subw t1,s0,t1 + 3bc0556e: 0053531b srliw t1,t1,0x5 + 3bc05572: 0073033b addw t1,t1,t2 + 3bc05576: 2165d30b srh t1,a1,s6,0 + 3bc0557a: 837a mv t1,t5 + 3bc0557c: 8f4e mv t5,s3 + 3bc0557e: 899a mv s3,t1 + 3bc05580: b7b9 j 3bc054ce + 3bc05582: 0053531b srliw t1,t1,0x5 + 3bc05586: 4063833b subw t1,t2,t1 + 3bc0558a: 9f91 subw a5,a5,a2 + 3bc0558c: 2165d30b srh t1,a1,s6,0 + 3bc05590: 40cb863b subw a2,s7,a2 + 3bc05594: 837a mv t1,t5 + 3bc05596: 7f02 ld t5,32(sp) + 3bc05598: f04e sd s3,32(sp) + 3bc0559a: b7d5 j 3bc0557e + 3bc0559c: 48a1 li a7,8 + 3bc0559e: bf25 j 3bc054d6 + 3bc055a0: 0056561b srliw a2,a2,0x5 + 3bc055a4: 40ce8ebb subw t4,t4,a2 + 3bc055a8: 41f787bb subw a5,a5,t6 + 3bc055ac: 3c0ebe8b extu t4,t4,15,0 + 3bc055b0: 41f48fbb subw t6,s1,t6 + 3bc055b4: 430d li t1,3 + 3bc055b6: beb1 j 3bc05112 + 3bc055b8: 0056561b srliw a2,a2,0x5 + 3bc055bc: 40c383bb subw t2,t2,a2 + 3bc055c0: 41d787bb subw a5,a5,t4 + 3bc055c4: 3c03b38b extu t2,t2,15,0 + 3bc055c8: 001b831b addiw t1,s7,1 + 3bc055cc: 41df8ebb subw t4,t6,t4 + 3bc055d0: b661 j 3bc05158 + 3bc055d2: 005fdf9b srliw t6,t6,0x5 + 3bc055d6: 41f383bb subw t2,t2,t6 + 3bc055da: 9f91 subw a5,a5,a2 + 3bc055dc: 3c03b38b extu t2,t2,15,0 + 3bc055e0: 2305 addiw t1,t1,1 + 3bc055e2: 40ce863b subw a2,t4,a2 + 3bc055e6: be55 j 3bc0519a + 3bc055e8: 005fdf9b srliw t6,t6,0x5 + 3bc055ec: 41f38fbb subw t6,t2,t6 + 3bc055f0: 0102d383 lhu t2,16(t0) + 3bc055f4: 01f29023 sh t6,0(t0) + 3bc055f8: 9e05 subw a2,a2,s1 + 3bc055fa: 406787bb subw a5,a5,t1 + 3bc055fe: 00038f9b sext.w t6,t2 + 3bc05602: 00d67a63 bgeu a2,a3,3bc05616 + 3bc05606: 0087931b slliw t1,a5,0x8 + 3bc0560a: 9817478b lbuia a5,(a4),1,0 + 3bc0560e: 0086161b slliw a2,a2,0x8 + 3bc05612: 0067e7b3 or a5,a5,t1 + 3bc05616: 00b6531b srliw t1,a2,0xb + 3bc0561a: 03f304bb mulw s1,t1,t6 + 3bc0561e: 1297f563 bgeu a5,s1,3bc05748 + 3bc05622: 41f40fbb subw t6,s0,t6 + 3bc05626: 005fdf9b srliw t6,t6,0x5 + 3bc0562a: 7c0ebe8b extu t4,t4,31,0 + 3bc0562e: 007f8fbb addw t6,t6,t2 + 3bc05632: 0ea1 addi t4,t4,8 + 3bc05634: 01f29823 sh t6,16(t0) + 3bc05638: 03d2928b addsl t0,t0,t4,1 + 3bc0563c: 0022df83 lhu t6,2(t0) + 3bc05640: 000f861b sext.w a2,t6 + 3bc05644: 00d4fa63 bgeu s1,a3,3bc05658 + 3bc05648: 9817430b lbuia t1,(a4),1,0 + 3bc0564c: 0087979b slliw a5,a5,0x8 + 3bc05650: 0084949b slliw s1,s1,0x8 + 3bc05654: 00f367b3 or a5,t1,a5 + 3bc05658: 00b4d31b srliw t1,s1,0xb + 3bc0565c: 02c30ebb mulw t4,t1,a2 + 3bc05660: 0bd7f063 bgeu a5,t4,3bc05700 + 3bc05664: 40c4063b subw a2,s0,a2 + 3bc05668: 0056561b srliw a2,a2,0x5 + 3bc0566c: 01f60fbb addw t6,a2,t6 + 3bc05670: 3c0fbf8b extu t6,t6,15,0 + 3bc05674: 4309 li t1,2 + 3bc05676: 01f29123 sh t6,2(t0) + 3bc0567a: b262c38b lurhu t2,t0,t1,1 + 3bc0567e: 7c03390b extu s2,t1,31,0 + 3bc05682: 0003861b sext.w a2,t2 + 3bc05686: 00defa63 bgeu t4,a3,3bc0569a + 3bc0568a: 98174f8b lbuia t6,(a4),1,0 + 3bc0568e: 0087979b slliw a5,a5,0x8 + 3bc05692: 008e9e9b slliw t4,t4,0x8 + 3bc05696: 00ffe7b3 or a5,t6,a5 + 3bc0569a: 00bed49b srliw s1,t4,0xb + 3bc0569e: 02c48fbb mulw t6,s1,a2 + 3bc056a2: 00131b9b slliw s7,t1,0x1 + 3bc056a6: 0306 slli t1,t1,0x1 + 3bc056a8: 07f7f863 bgeu a5,t6,3bc05718 + 3bc056ac: 40c4063b subw a2,s0,a2 + 3bc056b0: 0056561b srliw a2,a2,0x5 + 3bc056b4: 007603bb addw t2,a2,t2 + 3bc056b8: 3c03b38b extu t2,t2,15,0 + 3bc056bc: 2322d38b srh t2,t0,s2,1 + 3bc056c0: b262c48b lurhu s1,t0,t1,1 + 3bc056c4: 7c03390b extu s2,t1,31,0 + 3bc056c8: 00048e9b sext.w t4,s1 + 3bc056cc: 00dff963 bgeu t6,a3,3bc056de + 3bc056d0: 9817460b lbuia a2,(a4),1,0 + 3bc056d4: 0087979b slliw a5,a5,0x8 + 3bc056d8: 008f9f9b slliw t6,t6,0x8 + 3bc056dc: 8fd1 or a5,a5,a2 + 3bc056de: 00bfd39b srliw t2,t6,0xb + 3bc056e2: 03d3863b mulw a2,t2,t4 + 3bc056e6: 0013131b slliw t1,t1,0x1 + 3bc056ea: 04c7f463 bgeu a5,a2,3bc05732 + 3bc056ee: 41d40ebb subw t4,s0,t4 + 3bc056f2: 005ede9b srliw t4,t4,0x5 + 3bc056f6: 009e8ebb addw t4,t4,s1 + 3bc056fa: 2322de8b srh t4,t0,s2,1 + 3bc056fe: b44d j 3bc051a0 + 3bc05700: 0056561b srliw a2,a2,0x5 + 3bc05704: 40cf8fbb subw t6,t6,a2 + 3bc05708: 41d787bb subw a5,a5,t4 + 3bc0570c: 3c0fbf8b extu t6,t6,15,0 + 3bc05710: 41d48ebb subw t4,s1,t4 + 3bc05714: 430d li t1,3 + 3bc05716: b785 j 3bc05676 + 3bc05718: 0056561b srliw a2,a2,0x5 + 3bc0571c: 40c383bb subw t2,t2,a2 + 3bc05720: 41f787bb subw a5,a5,t6 + 3bc05724: 3c03b38b extu t2,t2,15,0 + 3bc05728: 001b831b addiw t1,s7,1 + 3bc0572c: 41fe8fbb subw t6,t4,t6 + 3bc05730: b771 j 3bc056bc + 3bc05732: 005ede9b srliw t4,t4,0x5 + 3bc05736: 41d48ebb subw t4,s1,t4 + 3bc0573a: 9f91 subw a5,a5,a2 + 3bc0573c: 2322de8b srh t4,t0,s2,1 + 3bc05740: 2305 addiw t1,t1,1 + 3bc05742: 40cf863b subw a2,t6,a2 + 3bc05746: bca9 j 3bc051a0 + 3bc05748: 005fdf9b srliw t6,t6,0x5 + 3bc0574c: 41f38fbb subw t6,t2,t6 + 3bc05750: 9e05 subw a2,a2,s1 + 3bc05752: 9f85 subw a5,a5,s1 + 3bc05754: 01f29823 sh t6,16(t0) + 3bc05758: 4305 li t1,1 + 3bc0575a: 0ff00b93 li s7,255 + 3bc0575e: 02031493 slli s1,t1,0x20 + 3bc05762: 01f4de93 srli t4,s1,0x1f + 3bc05766: 200e8e93 addi t4,t4,512 + 3bc0576a: a1d2cf8b lrhu t6,t0,t4,0 + 3bc0576e: 01d28c33 add s8,t0,t4 + 3bc05772: 000f8e9b sext.w t4,t6 + 3bc05776: 00d67a63 bgeu a2,a3,3bc0578a + 3bc0577a: 9817438b lbuia t2,(a4),1,0 + 3bc0577e: 0087979b slliw a5,a5,0x8 + 3bc05782: 0086161b slliw a2,a2,0x8 + 3bc05786: 00f3e7b3 or a5,t2,a5 + 3bc0578a: 00b6539b srliw t2,a2,0xb + 3bc0578e: 03d3893b mulw s2,t2,t4 + 3bc05792: 0013131b slliw t1,t1,0x1 + 3bc05796: 0327f263 bgeu a5,s2,3bc057ba + 3bc0579a: 41d40ebb subw t4,s0,t4 + 3bc0579e: 005ede9b srliw t4,t4,0x5 + 3bc057a2: 01fe8fbb addw t6,t4,t6 + 3bc057a6: 3c0fbf8b extu t6,t6,15,0 + 3bc057aa: 864a mv a2,s2 + 3bc057ac: 01fc1023 sh t6,0(s8) + 3bc057b0: fa6bf7e3 bgeu s7,t1,3bc0575e + 3bc057b4: f103031b addiw t1,t1,-240 + 3bc057b8: b2e5 j 3bc051a0 + 3bc057ba: 005ede9b srliw t4,t4,0x5 + 3bc057be: 41df8fbb subw t6,t6,t4 + 3bc057c2: 4126063b subw a2,a2,s2 + 3bc057c6: 412787bb subw a5,a5,s2 + 3bc057ca: 3c0fbf8b extu t6,t6,15,0 + 3bc057ce: 2305 addiw t1,t1,1 + 3bc057d0: bff1 j 3bc057ac + 3bc057d2: 005ede9b srliw t4,t4,0x5 + 3bc057d6: 41d383bb subw t2,t2,t4 + 3bc057da: 405787bb subw a5,a5,t0 + 3bc057de: 3c03b38b extu t2,t2,15,0 + 3bc057e2: 405602bb subw t0,a2,t0 + 3bc057e6: 460d li a2,3 + 3bc057e8: bc09 j 3bc051fa + 3bc057ea: 005ede9b srliw t4,t4,0x5 + 3bc057ee: 41d484bb subw s1,s1,t4 + 3bc057f2: 407787bb subw a5,a5,t2 + 3bc057f6: 3c04b48b extu s1,s1,15,0 + 3bc057fa: 001c061b addiw a2,s8,1 + 3bc057fe: 407283bb subw t2,t0,t2 + 3bc05802: bc3d j 3bc05240 + 3bc05804: 005ede9b srliw t4,t4,0x5 + 3bc05808: 41d484bb subw s1,s1,t4 + 3bc0580c: 405787bb subw a5,a5,t0 + 3bc05810: 3c04b48b extu s1,s1,15,0 + 3bc05814: 2905 addiw s2,s2,1 + 3bc05816: 405382bb subw t0,t2,t0 + 3bc0581a: b4ad j 3bc05284 + 3bc0581c: 0056561b srliw a2,a2,0x5 + 3bc05820: 40c383bb subw t2,t2,a2 + 3bc05824: 41d787bb subw a5,a5,t4 + 3bc05828: 3c03b38b extu t2,t2,15,0 + 3bc0582c: 2485 addiw s1,s1,1 + 3bc0582e: 41d28ebb subw t4,t0,t4 + 3bc05832: bc59 j 3bc052c8 + 3bc05834: 0056561b srliw a2,a2,0x5 + 3bc05838: 40c282bb subw t0,t0,a2 + 3bc0583c: 407787bb subw a5,a5,t2 + 3bc05840: 3c02b28b extu t0,t0,15,0 + 3bc05844: 2905 addiw s2,s2,1 + 3bc05846: 407e83bb subw t2,t4,t2 + 3bc0584a: b4c9 j 3bc0530c + 3bc0584c: 0052d29b srliw t0,t0,0x5 + 3bc05850: 405484bb subw s1,s1,t0 + 3bc05854: 9f91 subw a5,a5,a2 + 3bc05856: 3c04b48b extu s1,s1,15,0 + 3bc0585a: 2e85 addiw t4,t4,1 + 3bc0585c: 40c3863b subw a2,t2,a2 + 3bc05860: b4fd j 3bc0534e + 3bc05862: 8c76 mv s8,t4 + 3bc05864: be21 j 3bc0537c + 3bc05866: 0053d39b srliw t2,t2,0x5 + 3bc0586a: 407484bb subw s1,s1,t2 + 3bc0586e: 41a6063b subw a2,a2,s10 + 3bc05872: 41a787bb subw a5,a5,s10 + 3bc05876: 3c04b48b extu s1,s1,15,0 + 3bc0587a: 01fe8fbb addw t6,t4,t6 + 3bc0587e: be81 j 3bc053ce + 3bc05880: 32ed addiw t0,t0,-5 + 3bc05882: 00d67a63 bgeu a2,a3,3bc05896 + 3bc05886: 98174e8b lbuia t4,(a4),1,0 + 3bc0588a: 0087979b slliw a5,a5,0x8 + 3bc0588e: 0086161b slliw a2,a2,0x8 + 3bc05892: 00fee7b3 or a5,t4,a5 + 3bc05896: 0016539b srliw t2,a2,0x1 + 3bc0589a: 407787bb subw a5,a5,t2 + 3bc0589e: 41f7d49b sraiw s1,a5,0x1f + 3bc058a2: 001f9f9b slliw t6,t6,0x1 + 3bc058a6: 0003861b sext.w a2,t2 + 3bc058aa: 2f85 addiw t6,t6,1 + 3bc058ac: 0093f3b3 and t2,t2,s1 + 3bc058b0: 32fd addiw t0,t0,-1 + 3bc058b2: 01f48fbb addw t6,s1,t6 + 3bc058b6: 007787bb addw a5,a5,t2 + 3bc058ba: fc0294e3 bnez t0,3bc05882 + 3bc058be: 0025d283 lhu t0,2(a1) + 3bc058c2: 004f9f9b slliw t6,t6,0x4 + 3bc058c6: 00028e9b sext.w t4,t0 + 3bc058ca: 00d67a63 bgeu a2,a3,3bc058de + 3bc058ce: 9817438b lbuia t2,(a4),1,0 + 3bc058d2: 0087979b slliw a5,a5,0x8 + 3bc058d6: 0086161b slliw a2,a2,0x8 + 3bc058da: 00f3e7b3 or a5,t2,a5 + 3bc058de: 00b6549b srliw s1,a2,0xb + 3bc058e2: 03d483bb mulw t2,s1,t4 + 3bc058e6: 1677f463 bgeu a5,t2,3bc05a4e + 3bc058ea: 41d40ebb subw t4,s0,t4 + 3bc058ee: 005ede9b srliw t4,t4,0x5 + 3bc058f2: 005e82bb addw t0,t4,t0 + 3bc058f6: 3c02b28b extu t0,t0,15,0 + 3bc058fa: 4e89 li t4,2 + 3bc058fc: 00559123 sh t0,2(a1) + 3bc05900: b3d5c48b lurhu s1,a1,t4,1 + 3bc05904: 7c0ebb8b extu s7,t4,31,0 + 3bc05908: 0004861b sext.w a2,s1 + 3bc0590c: 00d3fa63 bgeu t2,a3,3bc05920 + 3bc05910: 9817428b lbuia t0,(a4),1,0 + 3bc05914: 0087979b slliw a5,a5,0x8 + 3bc05918: 0083939b slliw t2,t2,0x8 + 3bc0591c: 00f2e7b3 or a5,t0,a5 + 3bc05920: 00b3d91b srliw s2,t2,0xb + 3bc05924: 02c902bb mulw t0,s2,a2 + 3bc05928: 1257ff63 bgeu a5,t0,3bc05a66 + 3bc0592c: 40c4063b subw a2,s0,a2 + 3bc05930: 0056561b srliw a2,a2,0x5 + 3bc05934: 9cb1 addw s1,s1,a2 + 3bc05936: 3c04b48b extu s1,s1,15,0 + 3bc0593a: 0e89 addi t4,t4,2 + 3bc0593c: 2375d48b srh s1,a1,s7,1 + 3bc05940: b3d5cb8b lurhu s7,a1,t4,1 + 3bc05944: 7c0eb90b extu s2,t4,31,0 + 3bc05948: 000b861b sext.w a2,s7 + 3bc0594c: 00d2fa63 bgeu t0,a3,3bc05960 + 3bc05950: 9817438b lbuia t2,(a4),1,0 + 3bc05954: 0087979b slliw a5,a5,0x8 + 3bc05958: 0082929b slliw t0,t0,0x8 + 3bc0595c: 00f3e7b3 or a5,t2,a5 + 3bc05960: 00b2d49b srliw s1,t0,0xb + 3bc05964: 02c483bb mulw t2,s1,a2 + 3bc05968: 1077fa63 bgeu a5,t2,3bc05a7c + 3bc0596c: 40c4063b subw a2,s0,a2 + 3bc05970: 0056561b srliw a2,a2,0x5 + 3bc05974: 01760bbb addw s7,a2,s7 + 3bc05978: 3c0bbb8b extu s7,s7,15,0 + 3bc0597c: 2e91 addiw t4,t4,4 + 3bc0597e: 2325db8b srh s7,a1,s2,1 + 3bc05982: b3d5c48b lurhu s1,a1,t4,1 + 3bc05986: 7c0ebb8b extu s7,t4,31,0 + 3bc0598a: 0004829b sext.w t0,s1 + 3bc0598e: 00d3f963 bgeu t2,a3,3bc059a0 + 3bc05992: 9817460b lbuia a2,(a4),1,0 + 3bc05996: 0087979b slliw a5,a5,0x8 + 3bc0599a: 0083939b slliw t2,t2,0x8 + 3bc0599e: 8fd1 or a5,a5,a2 + 3bc059a0: 00b3d91b srliw s2,t2,0xb + 3bc059a4: 0259063b mulw a2,s2,t0 + 3bc059a8: 0ec7f663 bgeu a5,a2,3bc05a94 + 3bc059ac: 405402bb subw t0,s0,t0 + 3bc059b0: 0052d29b srliw t0,t0,0x5 + 3bc059b4: 009284bb addw s1,t0,s1 + 3bc059b8: 3c04b48b extu s1,s1,15,0 + 3bc059bc: 3ee1 addiw t4,t4,-8 + 3bc059be: 01feefb3 or t6,t4,t6 + 3bc059c2: 2375d48b srh s1,a1,s7,1 + 3bc059c6: 000f839b sext.w t2,t6 + 3bc059ca: 54fd li s1,-1 + 3bc059cc: a09398e3 bne t2,s1,3bc053dc + 3bc059d0: 38d1 addiw a7,a7,-12 + 3bc059d2: 8fda mv t6,s6 + 3bc059d4: 11200313 li t1,274 + 3bc059d8: 010006b7 lui a3,0x1000 + 3bc059dc: 00d67963 bgeu a2,a3,3bc059ee + 3bc059e0: 9817468b lbuia a3,(a4),1,0 + 3bc059e4: 0087979b slliw a5,a5,0x8 + 3bc059e8: 0086161b slliw a2,a2,0x8 + 3bc059ec: 8fd5 or a5,a5,a3 + 3bc059ee: dd5c sw a5,60(a0) + 3bc059f0: 7782 ld a5,32(sp) + 3bc059f2: f918 sd a4,48(a0) + 3bc059f4: dd10 sw a2,56(a0) + 3bc059f6: c97c sw a5,84(a0) + 3bc059f8: 417c lw a5,68(a0) + 3bc059fa: 04652e23 sw t1,92(a0) + 3bc059fe: 03053423 sd a6,40(a0) + 3bc05a02: 05c52023 sw t3,64(a0) + 3bc05a06: 05f52423 sw t6,72(a0) + 3bc05a0a: 05e52623 sw t5,76(a0) + 3bc05a0e: 05352823 sw s3,80(a0) + 3bc05a12: 05152c23 sw a7,88(a0) + 3bc05a16: e789 bnez a5,3bc05a20 + 3bc05a18: 415c lw a5,4(a0) + 3bc05a1a: 00fe6363 bltu t3,a5,3bc05a20 + 3bc05a1e: c17c sw a5,68(a0) + 3bc05a20: 65c2 ld a1,16(sp) + 3bc05a22: e42a sd a0,8(sp) + 3bc05a24: d23fe0ef jal ra,3bc04746 + 3bc05a28: 6522 ld a0,8(sp) + 3bc05a2a: 6742 ld a4,16(sp) + 3bc05a2c: 751c ld a5,40(a0) + 3bc05a2e: 00e7fd63 bgeu a5,a4,3bc05a48 + 3bc05a32: 791c ld a5,48(a0) + 3bc05a34: 7742 ld a4,48(sp) + 3bc05a36: 00e7f963 bgeu a5,a4,3bc05a48 + 3bc05a3a: 4d78 lw a4,92(a0) + 3bc05a3c: 11100793 li a5,273 + 3bc05a40: 00e7e463 bltu a5,a4,3bc05a48 + 3bc05a44: d9bfe06f j 3bc047de + 3bc05a48: 4501 li a0,0 + 3bc05a4a: dd3fe06f j 3bc0481c + 3bc05a4e: 005ede9b srliw t4,t4,0x5 + 3bc05a52: 41d282bb subw t0,t0,t4 + 3bc05a56: 407787bb subw a5,a5,t2 + 3bc05a5a: 3c02b28b extu t0,t0,15,0 + 3bc05a5e: 407603bb subw t2,a2,t2 + 3bc05a62: 4e8d li t4,3 + 3bc05a64: bd61 j 3bc058fc + 3bc05a66: 0056561b srliw a2,a2,0x5 + 3bc05a6a: 9c91 subw s1,s1,a2 + 3bc05a6c: 405787bb subw a5,a5,t0 + 3bc05a70: 3c04b48b extu s1,s1,15,0 + 3bc05a74: 0e91 addi t4,t4,4 + 3bc05a76: 405382bb subw t0,t2,t0 + 3bc05a7a: b5c9 j 3bc0593c + 3bc05a7c: 0056561b srliw a2,a2,0x5 + 3bc05a80: 40cb8bbb subw s7,s7,a2 + 3bc05a84: 407787bb subw a5,a5,t2 + 3bc05a88: 3c0bbb8b extu s7,s7,15,0 + 3bc05a8c: 2ea1 addiw t4,t4,8 + 3bc05a8e: 407283bb subw t2,t0,t2 + 3bc05a92: b5f5 j 3bc0597e + 3bc05a94: 0052d29b srliw t0,t0,0x5 + 3bc05a98: 405484bb subw s1,s1,t0 + 3bc05a9c: 9f91 subw a5,a5,a2 + 3bc05a9e: 3c04b48b extu s1,s1,15,0 + 3bc05aa2: 40c3863b subw a2,t2,a2 + 3bc05aa6: bf21 j 3bc059be + 3bc05aa8: 489d li a7,7 + 3bc05aaa: ba3d j 3bc053e8 + 3bc05aac: 8fda mv t6,s6 + 3bc05aae: 64a2 ld s1,8(sp) + 3bc05ab0: 00230e9b addiw t4,t1,2 + 3bc05ab4: 8376 mv t1,t4 + 3bc05ab6: 410483b3 sub t2,s1,a6 + 3bc05aba: 93048ce3 beq s1,a6,3bc053f2 + 3bc05abe: 7c0eb28b extu t0,t4,31,0 + 3bc05ac2: 0053f463 bgeu t2,t0,3bc05aca + 3bc05ac6: 00038e9b sext.w t4,t2 + 3bc05aca: 7c0fb48b extu s1,t6,31,0 + 3bc05ace: 409803b3 sub t2,a6,s1 + 3bc05ad2: 82d6 mv t0,s5 + 3bc05ad4: 00986363 bltu a6,s1,3bc05ada + 3bc05ad8: 4281 li t0,0 + 3bc05ada: 9396 add t2,t2,t0 + 3bc05adc: 7c0eb48b extu s1,t4,31,0 + 3bc05ae0: 407a8933 sub s2,s5,t2 + 3bc05ae4: 01de0e3b addw t3,t3,t4 + 3bc05ae8: 41d3033b subw t1,t1,t4 + 3bc05aec: 010a02b3 add t0,s4,a6 + 3bc05af0: 02996363 bltu s2,s1,3bc05b16 + 3bc05af4: 410383b3 sub t2,t2,a6 + 3bc05af8: 00928eb3 add t4,t0,s1 + 3bc05afc: 9826 add a6,a6,s1 + 3bc05afe: 8072c48b lrbu s1,t0,t2,0 + 3bc05b02: 1812d48b sbia s1,(t0),1,0 + 3bc05b06: fe5e9ce3 bne t4,t0,3bc05afe + 3bc05b0a: 88cff06f j 3bc04b96 + 3bc05b0e: f04e sd s3,32(sp) + 3bc05b10: 89fa mv s3,t5 + 3bc05b12: 8f5a mv t5,s6 + 3bc05b14: bf69 j 3bc05aae + 3bc05b16: 84f6 mv s1,t4 + 3bc05b18: 807a490b lrbu s2,s4,t2,0 + 3bc05b1c: 0385 addi t2,t2,1 + 3bc05b1e: 01228023 sb s2,0(t0) + 3bc05b22: 007a9363 bne s5,t2,3bc05b28 + 3bc05b26: 4381 li t2,0 + 3bc05b28: 34fd addiw s1,s1,-1 + 3bc05b2a: 0285 addi t0,t0,1 + 3bc05b2c: f4f5 bnez s1,3bc05b18 + 3bc05b2e: 3efd addiw t4,t4,-1 + 3bc05b30: 0805 addi a6,a6,1 + 3bc05b32: 7c0ebe8b extu t4,t4,31,0 + 3bc05b36: 9876 add a6,a6,t4 + 3bc05b38: 85eff06f j 3bc04b96 + 3bc05b3c: 48a5 li a7,9 + 3bc05b3e: 858ff06f j 3bc04b96 + +000000003bc05b42 : + 3bc05b42: 00254703 lbu a4,2(a0) + 3bc05b46: 04052303 lw t1,64(a0) + 3bc05b4a: 4805 li a6,1 + 3bc05b4c: 00e8183b sllw a6,a6,a4 + 3bc05b50: 05852e83 lw t4,88(a0) + 3bc05b54: 387d addiw a6,a6,-1 + 3bc05b56: 01037833 and a6,t1,a6 + 3bc05b5a: 0048181b slliw a6,a6,0x4 + 3bc05b5e: 010e8e3b addw t3,t4,a6 + 3bc05b62: 01053883 ld a7,16(a0) + 3bc05b66: 020e1713 slli a4,t3,0x20 + 3bc05b6a: 5d14 lw a3,56(a0) + 3bc05b6c: 01f75e13 srli t3,a4,0x1f + 3bc05b70: 9e46 add t3,t3,a7 + 3bc05b72: 01000737 lui a4,0x1000 + 3bc05b76: 5d5c lw a5,60(a0) + 3bc05b78: e00e5f83 lhu t6,-512(t3) + 3bc05b7c: 8f2a mv t5,a0 + 3bc05b7e: 962e add a2,a2,a1 + 3bc05b80: 00e6fc63 bgeu a3,a4,3bc05b98 + 3bc05b84: 4501 li a0,0 + 3bc05b86: 0cc5f463 bgeu a1,a2,3bc05c4e + 3bc05b8a: 9815c70b lbuia a4,(a1),1,0 + 3bc05b8e: 0087979b slliw a5,a5,0x8 + 3bc05b92: 0086969b slliw a3,a3,0x8 + 3bc05b96: 8fd9 or a5,a5,a4 + 3bc05b98: 00b6d71b srliw a4,a3,0xb + 3bc05b9c: 03f7073b mulw a4,a4,t6 + 3bc05ba0: 14e7f063 bgeu a5,a4,3bc05ce0 + 3bc05ba4: 040f3683 ld a3,64(t5) + 3bc05ba8: 28088893 addi a7,a7,640 # f0280 <__BSS_SIZE__+0xea670> + 3bc05bac: caa1 beqz a3,3bc05bfc + 3bc05bae: 001f4503 lbu a0,1(t5) + 3bc05bb2: 4685 li a3,1 + 3bc05bb4: 000f4803 lbu a6,0(t5) + 3bc05bb8: 00a696bb sllw a3,a3,a0 + 3bc05bbc: 36fd addiw a3,a3,-1 + 3bc05bbe: 00d37333 and t1,t1,a3 + 3bc05bc2: 028f3683 ld a3,40(t5) + 3bc05bc6: 018f3e03 ld t3,24(t5) + 3bc05bca: 0103133b sllw t1,t1,a6 + 3bc05bce: fff68513 addi a0,a3,-1 # ffffff <__BSS_SIZE__+0xffa3ef> + 3bc05bd2: e681 bnez a3,3bc05bda + 3bc05bd4: 020f3503 ld a0,32(t5) + 3bc05bd8: 157d addi a0,a0,-1 + 3bc05bda: 80ae468b lrbu a3,t3,a0,0 + 3bc05bde: 4521 li a0,8 + 3bc05be0: 4105053b subw a0,a0,a6 + 3bc05be4: 40a6d6bb sraw a3,a3,a0 + 3bc05be8: 006686bb addw a3,a3,t1 + 3bc05bec: 30000513 li a0,768 + 3bc05bf0: 02a686bb mulw a3,a3,a0 + 3bc05bf4: 7c06b68b extu a3,a3,31,0 + 3bc05bf8: 02d8988b addsl a7,a7,a3,1 + 3bc05bfc: 4699 li a3,6 + 3bc05bfe: 05d6eb63 bltu a3,t4,3bc05c54 + 3bc05c02: 4685 li a3,1 + 3bc05c04: 01000eb7 lui t4,0x1000 + 3bc05c08: 0ff00e13 li t3,255 + 3bc05c0c: b2d8c80b lurhu a6,a7,a3,1 + 3bc05c10: 01d77b63 bgeu a4,t4,3bc05c26 + 3bc05c14: 2ec5f363 bgeu a1,a2,3bc05efa + 3bc05c18: 9815c50b lbuia a0,(a1),1,0 + 3bc05c1c: 0087979b slliw a5,a5,0x8 + 3bc05c20: 0087171b slliw a4,a4,0x8 + 3bc05c24: 8fc9 or a5,a5,a0 + 3bc05c26: 00b7551b srliw a0,a4,0xb + 3bc05c2a: 0305083b mulw a6,a0,a6 + 3bc05c2e: 0016969b slliw a3,a3,0x1 + 3bc05c32: 0107ef63 bltu a5,a6,3bc05c50 + 3bc05c36: 4107073b subw a4,a4,a6 + 3bc05c3a: 410787bb subw a5,a5,a6 + 3bc05c3e: 2685 addiw a3,a3,1 + 3bc05c40: fcde76e3 bgeu t3,a3,3bc05c0c + 3bc05c44: 4505 li a0,1 + 3bc05c46: 010007b7 lui a5,0x1000 + 3bc05c4a: 2af76663 bltu a4,a5,3bc05ef6 + 3bc05c4e: 8082 ret + 3bc05c50: 8742 mv a4,a6 + 3bc05c52: b7fd j 3bc05c40 + 3bc05c54: 028f3303 ld t1,40(t5) + 3bc05c58: 048f6803 lwu a6,72(t5) + 3bc05c5c: 018f3683 ld a3,24(t5) + 3bc05c60: 4501 li a0,0 + 3bc05c62: 41030e33 sub t3,t1,a6 + 3bc05c66: 01037463 bgeu t1,a6,3bc05c6e + 3bc05c6a: 020f3503 ld a0,32(t5) + 3bc05c6e: 96f2 add a3,a3,t3 + 3bc05c70: 80a6ce0b lrbu t3,a3,a0,0 + 3bc05c74: 010002b7 lui t0,0x1000 + 3bc05c78: 4685 li a3,1 + 3bc05c7a: 10000513 li a0,256 + 3bc05c7e: 0ff00f93 li t6,255 + 3bc05c82: 001e181b slliw a6,t3,0x1 + 3bc05c86: 00d5033b addw t1,a0,a3 + 3bc05c8a: 00080e1b sext.w t3,a6 + 3bc05c8e: 01057833 and a6,a0,a6 + 3bc05c92: 00080e9b sext.w t4,a6 + 3bc05c96: 0103083b addw a6,t1,a6 + 3bc05c9a: b308c30b lurhu t1,a7,a6,1 + 3bc05c9e: 00577c63 bgeu a4,t0,3bc05cb6 + 3bc05ca2: 24c5fc63 bgeu a1,a2,3bc05efa + 3bc05ca6: 9815c80b lbuia a6,(a1),1,0 + 3bc05caa: 0087979b slliw a5,a5,0x8 + 3bc05cae: 0087171b slliw a4,a4,0x8 + 3bc05cb2: 00f867b3 or a5,a6,a5 + 3bc05cb6: 00b7581b srliw a6,a4,0xb + 3bc05cba: 02680f3b mulw t5,a6,t1 + 3bc05cbe: 0016969b slliw a3,a3,0x1 + 3bc05cc2: 01e7f863 bgeu a5,t5,3bc05cd2 + 3bc05cc6: 01d54533 xor a0,a0,t4 + 3bc05cca: 877a mv a4,t5 + 3bc05ccc: fadffbe3 bgeu t6,a3,3bc05c82 + 3bc05cd0: bf95 j 3bc05c44 + 3bc05cd2: 41e7073b subw a4,a4,t5 + 3bc05cd6: 41e787bb subw a5,a5,t5 + 3bc05cda: 2685 addiw a3,a3,1 + 3bc05cdc: 8576 mv a0,t4 + 3bc05cde: b7fd j 3bc05ccc + 3bc05ce0: 7c0eb50b extu a0,t4,31,0 + 3bc05ce4: 0541 addi a0,a0,16 + 3bc05ce6: a2a8cf0b lrhu t5,a7,a0,1 + 3bc05cea: 00151e93 slli t4,a0,0x1 + 3bc05cee: 40e6833b subw t1,a3,a4 + 3bc05cf2: 01000537 lui a0,0x1000 + 3bc05cf6: 9f99 subw a5,a5,a4 + 3bc05cf8: 00a37c63 bgeu t1,a0,3bc05d10 + 3bc05cfc: 4501 li a0,0 + 3bc05cfe: f4c5f8e3 bgeu a1,a2,3bc05c4e + 3bc05d02: 9815c70b lbuia a4,(a1),1,0 + 3bc05d06: 0087979b slliw a5,a5,0x8 + 3bc05d0a: 0083131b slliw t1,t1,0x8 + 3bc05d0e: 8fd9 or a5,a5,a4 + 3bc05d10: 00b3571b srliw a4,t1,0xb + 3bc05d14: 03e706bb mulw a3,a4,t5 + 3bc05d18: 16d7f563 bgeu a5,a3,3bc05e82 + 3bc05d1c: a0088313 addi t1,a7,-1536 + 3bc05d20: 4509 li a0,2 + 3bc05d22: 4f01 li t5,0 + 3bc05d24: 01000e37 lui t3,0x1000 + 3bc05d28: 00035703 lhu a4,0(t1) + 3bc05d2c: 01c6fc63 bgeu a3,t3,3bc05d44 + 3bc05d30: 1cc5f563 bgeu a1,a2,3bc05efa + 3bc05d34: 9815ce0b lbuia t3,(a1),1,0 + 3bc05d38: 0087979b slliw a5,a5,0x8 + 3bc05d3c: 0086969b slliw a3,a3,0x8 + 3bc05d40: 00fe67b3 or a5,t3,a5 + 3bc05d44: 00b6de1b srliw t3,a3,0xb + 3bc05d48: 02ee073b mulw a4,t3,a4 + 3bc05d4c: 22e7fc63 bgeu a5,a4,3bc05f84 + 3bc05d50: 7c08380b extu a6,a6,31,0 + 3bc05d54: 0303130b addsl t1,t1,a6,1 + 3bc05d58: 4801 li a6,0 + 3bc05d5a: 46a1 li a3,8 + 3bc05d5c: 4e05 li t3,1 + 3bc05d5e: 010003b7 lui t2,0x1000 + 3bc05d62: b3c34f8b lurhu t6,t1,t3,1 + 3bc05d66: 00777c63 bgeu a4,t2,3bc05d7e + 3bc05d6a: 18c5f863 bgeu a1,a2,3bc05efa + 3bc05d6e: 9815ce8b lbuia t4,(a1),1,0 + 3bc05d72: 0087979b slliw a5,a5,0x8 + 3bc05d76: 0087171b slliw a4,a4,0x8 + 3bc05d7a: 00fee7b3 or a5,t4,a5 + 3bc05d7e: 00b75e9b srliw t4,a4,0xb + 3bc05d82: 03fe8fbb mulw t6,t4,t6 + 3bc05d86: 001e1e1b slliw t3,t3,0x1 + 3bc05d8a: 25f7e663 bltu a5,t6,3bc05fd6 + 3bc05d8e: 41f7073b subw a4,a4,t6 + 3bc05d92: 41f787bb subw a5,a5,t6 + 3bc05d96: 2e05 addiw t3,t3,1 + 3bc05d98: fcde65e3 bltu t3,a3,3bc05d62 + 3bc05d9c: 430d li t1,3 + 3bc05d9e: ebe364e3 bltu t1,t5,3bc05c46 + 3bc05da2: 40d806bb subw a3,a6,a3 + 3bc05da6: 01c6883b addw a6,a3,t3 + 3bc05daa: 86c2 mv a3,a6 + 3bc05dac: 01037363 bgeu t1,a6,3bc05db2 + 3bc05db0: 468d li a3,3 + 3bc05db2: 0066981b slliw a6,a3,0x6 + 3bc05db6: 0408081b addiw a6,a6,64 + 3bc05dba: 7c08380b extu a6,a6,31,0 + 3bc05dbe: 4685 li a3,1 + 3bc05dc0: 01000fb7 lui t6,0x1000 + 3bc05dc4: 03f00f13 li t5,63 + 3bc05dc8: 7c06b30b extu t1,a3,31,0 + 3bc05dcc: 9342 add t1,t1,a6 + 3bc05dce: a268ce0b lrhu t3,a7,t1,1 + 3bc05dd2: 01f77c63 bgeu a4,t6,3bc05dea + 3bc05dd6: 12c5f263 bgeu a1,a2,3bc05efa + 3bc05dda: 9815c30b lbuia t1,(a1),1,0 + 3bc05dde: 0087979b slliw a5,a5,0x8 + 3bc05de2: 0087171b slliw a4,a4,0x8 + 3bc05de6: 00f367b3 or a5,t1,a5 + 3bc05dea: 00b7531b srliw t1,a4,0xb + 3bc05dee: 03c30e3b mulw t3,t1,t3 + 3bc05df2: 0016969b slliw a3,a3,0x1 + 3bc05df6: 1fc7e263 bltu a5,t3,3bc05fda + 3bc05dfa: 41c7073b subw a4,a4,t3 + 3bc05dfe: 41c787bb subw a5,a5,t3 + 3bc05e02: 2685 addiw a3,a3,1 + 3bc05e04: fcdf72e3 bgeu t5,a3,3bc05dc8 + 3bc05e08: fc06869b addiw a3,a3,-64 + 3bc05e0c: 0006831b sext.w t1,a3 + 3bc05e10: 480d li a6,3 + 3bc05e12: e2687ae3 bgeu a6,t1,3bc05c46 + 3bc05e16: 4e35 li t3,13 + 3bc05e18: 0016d81b srliw a6,a3,0x1 + 3bc05e1c: 1c6e6163 bltu t3,t1,3bc05fde + 3bc05e20: 8a85 andi a3,a3,1 + 3bc05e22: 387d addiw a6,a6,-1 + 3bc05e24: 0026e693 ori a3,a3,2 + 3bc05e28: 010696bb sllw a3,a3,a6 + 3bc05e2c: 02069313 slli t1,a3,0x20 + 3bc05e30: 01f35693 srli a3,t1,0x1f + 3bc05e34: 737d lui t1,0xfffff + 3bc05e36: 30030313 addi t1,t1,768 # fffffffffffff300 <__BL2_END__+0xffffffffc43ebaf0> + 3bc05e3a: 969a add a3,a3,t1 + 3bc05e3c: 98b6 add a7,a7,a3 + 3bc05e3e: 4e05 li t3,1 + 3bc05e40: 4685 li a3,1 + 3bc05e42: 010002b7 lui t0,0x1000 + 3bc05e46: b2d8ce8b lurhu t4,a7,a3,1 + 3bc05e4a: 00577c63 bgeu a4,t0,3bc05e62 + 3bc05e4e: 0ac5f663 bgeu a1,a2,3bc05efa + 3bc05e52: 9815c30b lbuia t1,(a1),1,0 + 3bc05e56: 0087979b slliw a5,a5,0x8 + 3bc05e5a: 0087171b slliw a4,a4,0x8 + 3bc05e5e: 00f367b3 or a5,t1,a5 + 3bc05e62: 00b7531b srliw t1,a4,0xb + 3bc05e66: 03d30f3b mulw t5,t1,t4 + 3bc05e6a: 001e1f9b slliw t6,t3,0x1 + 3bc05e6e: 1be7f763 bgeu a5,t5,3bc0601c + 3bc05e72: 01c686bb addw a3,a3,t3 + 3bc05e76: 877a mv a4,t5 + 3bc05e78: 387d addiw a6,a6,-1 + 3bc05e7a: dc0806e3 beqz a6,3bc05c46 + 3bc05e7e: 8e7e mv t3,t6 + 3bc05e80: b7d9 j 3bc05e46 + 3bc05e82: 40d3053b subw a0,t1,a3 + 3bc05e86: 9ec6 add t4,t4,a7 + 3bc05e88: 01000f37 lui t5,0x1000 + 3bc05e8c: 40d7873b subw a4,a5,a3 + 3bc05e90: 832a mv t1,a0 + 3bc05e92: 018ed683 lhu a3,24(t4) # 1000018 <__BSS_SIZE__+0xffa408> + 3bc05e96: 01e57c63 bgeu a0,t5,3bc05eae + 3bc05e9a: 4501 li a0,0 + 3bc05e9c: dac5f9e3 bgeu a1,a2,3bc05c4e + 3bc05ea0: 0087179b slliw a5,a4,0x8 + 3bc05ea4: 9815c70b lbuia a4,(a1),1,0 + 3bc05ea8: 0083151b slliw a0,t1,0x8 + 3bc05eac: 8f5d or a4,a4,a5 + 3bc05eae: 00b5531b srliw t1,a0,0xb + 3bc05eb2: 02d306bb mulw a3,t1,a3 + 3bc05eb6: 8336 mv t1,a3 + 3bc05eb8: 04d77e63 bgeu a4,a3,3bc05f14 + 3bc05ebc: 77fd lui a5,0xfffff + 3bc05ebe: 9e3e add t3,t3,a5 + 3bc05ec0: 010007b7 lui a5,0x1000 + 3bc05ec4: 400e5e03 lhu t3,1024(t3) # 1000400 <__BSS_SIZE__+0xffa7f0> + 3bc05ec8: 00f6fc63 bgeu a3,a5,3bc05ee0 + 3bc05ecc: 4501 li a0,0 + 3bc05ece: d8c5f0e3 bgeu a1,a2,3bc05c4e + 3bc05ed2: 0087179b slliw a5,a4,0x8 + 3bc05ed6: 9815c70b lbuia a4,(a1),1,0 + 3bc05eda: 0086969b slliw a3,a3,0x8 + 3bc05ede: 8f5d or a4,a4,a5 + 3bc05ee0: 00b6d79b srliw a5,a3,0xb + 3bc05ee4: 03c7833b mulw t1,a5,t3 + 3bc05ee8: 00677b63 bgeu a4,t1,3bc05efe + 3bc05eec: 010007b7 lui a5,0x1000 + 3bc05ef0: 450d li a0,3 + 3bc05ef2: d4f37ee3 bgeu t1,a5,3bc05c4e + 3bc05ef6: d4c5ece3 bltu a1,a2,3bc05c4e + 3bc05efa: 4501 li a0,0 + 3bc05efc: bb89 j 3bc05c4e + 3bc05efe: 406686bb subw a3,a3,t1 + 3bc05f02: 406707bb subw a5,a4,t1 + 3bc05f06: 737d lui t1,0xfffff + 3bc05f08: 60030313 addi t1,t1,1536 # fffffffffffff600 <__BL2_END__+0xffffffffc43ebdf0> + 3bc05f0c: 9346 add t1,t1,a7 + 3bc05f0e: 450d li a0,3 + 3bc05f10: 4f31 li t5,12 + 3bc05f12: bd09 j 3bc05d24 + 3bc05f14: 9d15 subw a0,a0,a3 + 3bc05f16: 01000e37 lui t3,0x1000 + 3bc05f1a: 406707bb subw a5,a4,t1 + 3bc05f1e: 86aa mv a3,a0 + 3bc05f20: 030ed303 lhu t1,48(t4) + 3bc05f24: 01c57c63 bgeu a0,t3,3bc05f3c + 3bc05f28: 4501 li a0,0 + 3bc05f2a: d2c5f2e3 bgeu a1,a2,3bc05c4e + 3bc05f2e: 0087971b slliw a4,a5,0x8 + 3bc05f32: 9815c78b lbuia a5,(a1),1,0 + 3bc05f36: 0086951b slliw a0,a3,0x8 + 3bc05f3a: 8fd9 or a5,a5,a4 + 3bc05f3c: 00b5571b srliw a4,a0,0xb + 3bc05f40: 026706bb mulw a3,a4,t1 + 3bc05f44: 8736 mv a4,a3 + 3bc05f46: fcd7e0e3 bltu a5,a3,3bc05f06 + 3bc05f4a: 9d15 subw a0,a0,a3 + 3bc05f4c: 01000e37 lui t3,0x1000 + 3bc05f50: 048ed303 lhu t1,72(t4) + 3bc05f54: 86aa mv a3,a0 + 3bc05f56: 9f99 subw a5,a5,a4 + 3bc05f58: 01c57c63 bgeu a0,t3,3bc05f70 + 3bc05f5c: 4501 li a0,0 + 3bc05f5e: cec5f8e3 bgeu a1,a2,3bc05c4e + 3bc05f62: 0087971b slliw a4,a5,0x8 + 3bc05f66: 9815c78b lbuia a5,(a1),1,0 + 3bc05f6a: 0086951b slliw a0,a3,0x8 + 3bc05f6e: 8fd9 or a5,a5,a4 + 3bc05f70: 00b5571b srliw a4,a0,0xb + 3bc05f74: 026706bb mulw a3,a4,t1 + 3bc05f78: f8d7e7e3 bltu a5,a3,3bc05f06 + 3bc05f7c: 9f95 subw a5,a5,a3 + 3bc05f7e: 40d506bb subw a3,a0,a3 + 3bc05f82: b751 j 3bc05f06 + 3bc05f84: 40e68ebb subw t4,a3,a4 + 3bc05f88: 01000fb7 lui t6,0x1000 + 3bc05f8c: 9f99 subw a5,a5,a4 + 3bc05f8e: 01035703 lhu a4,16(t1) + 3bc05f92: 01fefc63 bgeu t4,t6,3bc05faa + 3bc05f96: f6c5f2e3 bgeu a1,a2,3bc05efa + 3bc05f9a: 00879e1b slliw t3,a5,0x8 + 3bc05f9e: 9815c78b lbuia a5,(a1),1,0 + 3bc05fa2: 008e9e9b slliw t4,t4,0x8 + 3bc05fa6: 01c7e7b3 or a5,a5,t3 + 3bc05faa: 00bed69b srliw a3,t4,0xb + 3bc05fae: 02e6873b mulw a4,a3,a4 + 3bc05fb2: 00e7f963 bgeu a5,a4,3bc05fc4 + 3bc05fb6: 7c08368b extu a3,a6,31,0 + 3bc05fba: 06a1 addi a3,a3,8 + 3bc05fbc: 02d3130b addsl t1,t1,a3,1 + 3bc05fc0: 4821 li a6,8 + 3bc05fc2: bb61 j 3bc05d5a + 3bc05fc4: 9f99 subw a5,a5,a4 + 3bc05fc6: 20030313 addi t1,t1,512 + 3bc05fca: 40ee873b subw a4,t4,a4 + 3bc05fce: 4841 li a6,16 + 3bc05fd0: 10000693 li a3,256 + 3bc05fd4: b361 j 3bc05d5c + 3bc05fd6: 877e mv a4,t6 + 3bc05fd8: b3c1 j 3bc05d98 + 3bc05fda: 8772 mv a4,t3 + 3bc05fdc: b525 j 3bc05e04 + 3bc05fde: 386d addiw a6,a6,-5 + 3bc05fe0: 01000e37 lui t3,0x1000 + 3bc05fe4: 01c77b63 bgeu a4,t3,3bc05ffa + 3bc05fe8: f0c5f9e3 bgeu a1,a2,3bc05efa + 3bc05fec: 9815c68b lbuia a3,(a1),1,0 + 3bc05ff0: 0087979b slliw a5,a5,0x8 + 3bc05ff4: 0087171b slliw a4,a4,0x8 + 3bc05ff8: 8fd5 or a5,a5,a3 + 3bc05ffa: 0017531b srliw t1,a4,0x1 + 3bc05ffe: 406786bb subw a3,a5,t1 + 3bc06002: 01f6d69b srliw a3,a3,0x1f + 3bc06006: 36fd addiw a3,a3,-1 + 3bc06008: 0066f6b3 and a3,a3,t1 + 3bc0600c: 387d addiw a6,a6,-1 + 3bc0600e: 0003071b sext.w a4,t1 + 3bc06012: 9f95 subw a5,a5,a3 + 3bc06014: fc0818e3 bnez a6,3bc05fe4 + 3bc06018: 4811 li a6,4 + 3bc0601a: b515 j 3bc05e3e + 3bc0601c: 41e7073b subw a4,a4,t5 + 3bc06020: 41e787bb subw a5,a5,t5 + 3bc06024: 00df86bb addw a3,t6,a3 + 3bc06028: bd81 j 3bc05e78 + +000000003bc0602a : + 3bc0602a: 11400793 li a5,276 + 3bc0602e: 02053423 sd zero,40(a0) # 1000028 <__BSS_SIZE__+0xffa418> + 3bc06032: 06052223 sw zero,100(a0) + 3bc06036: 04053023 sd zero,64(a0) + 3bc0603a: cd7c sw a5,92(a0) + 3bc0603c: 8082 ret + +000000003bc0603e : + 3bc0603e: 7175 addi sp,sp,-144 + 3bc06040: e122 sd s0,128(sp) + 3bc06042: f8ca sd s2,112(sp) + 3bc06044: f4ce sd s3,104(sp) + 3bc06046: f0d2 sd s4,96(sp) + 3bc06048: f86a sd s10,48(sp) + 3bc0604a: f46e sd s11,40(sp) + 3bc0604c: e506 sd ra,136(sp) + 3bc0604e: fca6 sd s1,120(sp) + 3bc06050: ecd6 sd s5,88(sp) + 3bc06052: e8da sd s6,80(sp) + 3bc06054: e4de sd s7,72(sp) + 3bc06056: e0e2 sd s8,64(sp) + 3bc06058: fc66 sd s9,56(sp) + 3bc0605a: 0006bd83 ld s11,0(a3) + 3bc0605e: 0006b023 sd zero,0(a3) + 3bc06062: 0007a023 sw zero,0(a5) # 1000000 <__BSS_SIZE__+0xffa3f0> + 3bc06066: e43a sd a4,8(sp) + 3bc06068: 4d78 lw a4,92(a0) + 3bc0606a: 89be mv s3,a5 + 3bc0606c: 11200793 li a5,274 + 3bc06070: 8932 mv s2,a2 + 3bc06072: 842a mv s0,a0 + 3bc06074: 8a2e mv s4,a1 + 3bc06076: 8d36 mv s10,a3 + 3bc06078: 4611 li a2,4 + 3bc0607a: 04e7e263 bltu a5,a4,3bc060be + 3bc0607e: 85d2 mv a1,s4 + 3bc06080: 8522 mv a0,s0 + 3bc06082: ec4fe0ef jal ra,3bc04746 + 3bc06086: 4b4d li s6,19 + 3bc06088: 06840a93 addi s5,s0,104 # 1068 <__BSS_SIZE__-0x4ba8> + 3bc0608c: 4c7c lw a5,92(s0) + 3bc0608e: 11200713 li a4,274 + 3bc06092: 0ce79663 bne a5,a4,3bc0615e + 3bc06096: 5c5c lw a5,60(s0) + 3bc06098: eb9d bnez a5,3bc060ce + 3bc0609a: 4785 li a5,1 + 3bc0609c: a8a1 j 3bc060f4 + 3bc0609e: 0017859b addiw a1,a5,1 + 3bc060a2: d06c sw a1,100(s0) + 3bc060a4: 9819458b lbuia a1,(s2),1,0 + 3bc060a8: 7c07b78b extu a5,a5,31,0 + 3bc060ac: 97a2 add a5,a5,s0 + 3bc060ae: 06b78423 sb a1,104(a5) + 3bc060b2: 000d3783 ld a5,0(s10) + 3bc060b6: 1dfd addi s11,s11,-1 + 3bc060b8: 0785 addi a5,a5,1 + 3bc060ba: 00fd3023 sd a5,0(s10) + 3bc060be: 507c lw a5,100(s0) + 3bc060c0: 020d8863 beqz s11,3bc060f0 + 3bc060c4: fcf67de3 bgeu a2,a5,3bc0609e + 3bc060c8: 06844603 lbu a2,104(s0) + 3bc060cc: ca05 beqz a2,3bc060fc + 3bc060ce: 4485 li s1,1 + 3bc060d0: 60aa ld ra,136(sp) + 3bc060d2: 640a ld s0,128(sp) + 3bc060d4: 7946 ld s2,112(sp) + 3bc060d6: 79a6 ld s3,104(sp) + 3bc060d8: 7a06 ld s4,96(sp) + 3bc060da: 6ae6 ld s5,88(sp) + 3bc060dc: 6b46 ld s6,80(sp) + 3bc060de: 6ba6 ld s7,72(sp) + 3bc060e0: 6c06 ld s8,64(sp) + 3bc060e2: 7ce2 ld s9,56(sp) + 3bc060e4: 7d42 ld s10,48(sp) + 3bc060e6: 7da2 ld s11,40(sp) + 3bc060e8: 8526 mv a0,s1 + 3bc060ea: 74e6 ld s1,120(sp) + 3bc060ec: 6149 addi sp,sp,144 + 3bc060ee: 8082 ret + 3bc060f0: ffe1 bnez a5,3bc060c8 + 3bc060f2: 478d li a5,3 + 3bc060f4: 00f9a023 sw a5,0(s3) + 3bc060f8: 4481 li s1,0 + 3bc060fa: bfd9 j 3bc060d0 + 3bc060fc: 4611 li a2,4 + 3bc060fe: fef67ae3 bgeu a2,a5,3bc060f2 + 3bc06102: 06942783 lw a5,105(s0) + 3bc06106: 06042223 sw zero,100(s0) + 3bc0610a: 9007978b revw a5,a5 + 3bc0610e: dc5c sw a5,60(s0) + 3bc06110: 57fd li a5,-1 + 3bc06112: dc1c sw a5,56(s0) + 3bc06114: 11300793 li a5,275 + 3bc06118: 02f70c63 beq a4,a5,3bc06150 + 3bc0611c: 00044783 lbu a5,0(s0) + 3bc06120: 00144703 lbu a4,1(s0) + 3bc06124: 6410 ld a2,8(s0) + 3bc06126: 40000593 li a1,1024 + 3bc0612a: 9f3d addw a4,a4,a5 + 3bc0612c: 30000793 li a5,768 + 3bc06130: 00e797bb sllw a5,a5,a4 + 3bc06134: 7c07879b addiw a5,a5,1984 + 3bc06138: 7c07b78b extu a5,a5,31,0 + 3bc0613c: 4701 li a4,0 + 3bc0613e: 00f76c63 bltu a4,a5,3bc06156 + 3bc06142: 4785 li a5,1 + 3bc06144: 1782 slli a5,a5,0x20 + 3bc06146: 0785 addi a5,a5,1 + 3bc06148: e43c sd a5,72(s0) + 3bc0614a: e83c sd a5,80(s0) + 3bc0614c: 04042c23 sw zero,88(s0) + 3bc06150: 04042e23 sw zero,92(s0) + 3bc06154: b72d j 3bc0607e + 3bc06156: 22e6558b srh a1,a2,a4,1 + 3bc0615a: 0705 addi a4,a4,1 + 3bc0615c: b7cd j 3bc0613e + 3bc0615e: 7418 ld a4,40(s0) + 3bc06160: 01476b63 bltu a4,s4,3bc06176 + 3bc06164: 12079f63 bnez a5,3bc062a2 + 3bc06168: 5c5c lw a5,60(s0) + 3bc0616a: 14079363 bnez a5,3bc062b0 + 3bc0616e: 4791 li a5,4 + 3bc06170: b751 j 3bc060f4 + 3bc06172: 4789 li a5,2 + 3bc06174: b741 j 3bc060f4 + 3bc06176: 4c81 li s9,0 + 3bc06178: 06442b83 lw s7,100(s0) + 3bc0617c: 0c0b9263 bnez s7,3bc06240 + 3bc06180: 01bb7463 bgeu s6,s11,3bc06188 + 3bc06184: 040c8263 beqz s9,3bc061c8 + 3bc06188: 866e mv a2,s11 + 3bc0618a: 85ca mv a1,s2 + 3bc0618c: 8522 mv a0,s0 + 3bc0618e: 9b5ff0ef jal ra,3bc05b42 + 3bc06192: 0005049b sext.w s1,a0 + 3bc06196: e095 bnez s1,3bc061ba + 3bc06198: 866e mv a2,s11 + 3bc0619a: 85ca mv a1,s2 + 3bc0619c: 06840513 addi a0,s0,104 + 3bc061a0: 8dbfa0ef jal ra,3bc00a7a + 3bc061a4: 000d3783 ld a5,0(s10) + 3bc061a8: 07b42223 sw s11,100(s0) + 3bc061ac: 9dbe add s11,s11,a5 + 3bc061ae: 01bd3023 sd s11,0(s10) + 3bc061b2: 478d li a5,3 + 3bc061b4: 00f9a023 sw a5,0(s3) + 3bc061b8: bf21 j 3bc060d0 + 3bc061ba: 000c8563 beqz s9,3bc061c4 + 3bc061be: 4789 li a5,2 + 3bc061c0: 0ef49463 bne s1,a5,3bc062a8 + 3bc061c4: 864a mv a2,s2 + 3bc061c6: a021 j 3bc061ce + 3bc061c8: fecd8613 addi a2,s11,-20 + 3bc061cc: 964a add a2,a2,s2 + 3bc061ce: 03243823 sd s2,48(s0) + 3bc061d2: 85d2 mv a1,s4 + 3bc061d4: 8522 mv a0,s0 + 3bc061d6: de2fe0ef jal ra,3bc047b8 + 3bc061da: ee051ae3 bnez a0,3bc060ce + 3bc061de: 7818 ld a4,48(s0) + 3bc061e0: 000d3783 ld a5,0(s10) + 3bc061e4: 41270933 sub s2,a4,s2 + 3bc061e8: 97ca add a5,a5,s2 + 3bc061ea: 00fd3023 sd a5,0(s10) + 3bc061ee: 412d8db3 sub s11,s11,s2 + 3bc061f2: 893a mv s2,a4 + 3bc061f4: bd61 j 3bc0608c + 3bc061f6: 8109478b lrbu a5,s2,a6,0 + 3bc061fa: 0106578b srb a5,a2,a6,0 + 3bc061fe: 0805 addi a6,a6,1 + 3bc06200: 0008079b sext.w a5,a6 + 3bc06204: e83e sd a5,16(sp) + 3bc06206: 01780c3b addw s8,a6,s7 + 3bc0620a: 018b6463 bltu s6,s8,3bc06212 + 3bc0620e: ffb814e3 bne a6,s11,3bc061f6 + 3bc06212: 07842223 sw s8,100(s0) + 3bc06216: 018b7463 bgeu s6,s8,3bc0621e + 3bc0621a: 020c8f63 beqz s9,3bc06258 + 3bc0621e: 7c0c360b extu a2,s8,31,0 + 3bc06222: 85d6 mv a1,s5 + 3bc06224: 8522 mv a0,s0 + 3bc06226: ec42 sd a6,24(sp) + 3bc06228: 91bff0ef jal ra,3bc05b42 + 3bc0622c: 0005049b sext.w s1,a0 + 3bc06230: 6862 ld a6,24(sp) + 3bc06232: ec91 bnez s1,3bc0624e + 3bc06234: 000d3783 ld a5,0(s10) + 3bc06238: 983e add a6,a6,a5 + 3bc0623a: 010d3023 sd a6,0(s10) + 3bc0623e: bf95 j 3bc061b2 + 3bc06240: 7c0bb60b extu a2,s7,31,0 + 3bc06244: 06860613 addi a2,a2,104 + 3bc06248: 4801 li a6,0 + 3bc0624a: 9622 add a2,a2,s0 + 3bc0624c: bf55 j 3bc06200 + 3bc0624e: 000c8563 beqz s9,3bc06258 + 3bc06252: 4789 li a5,2 + 3bc06254: 04f49a63 bne s1,a5,3bc062a8 + 3bc06258: 03543823 sd s5,48(s0) + 3bc0625c: 8656 mv a2,s5 + 3bc0625e: 85d2 mv a1,s4 + 3bc06260: 8522 mv a0,s0 + 3bc06262: d56fe0ef jal ra,3bc047b8 + 3bc06266: e60514e3 bnez a0,3bc060ce + 3bc0626a: 781c ld a5,48(s0) + 3bc0626c: 415787bb subw a5,a5,s5 + 3bc06270: 02fc6763 bltu s8,a5,3bc0629e + 3bc06274: 66c2 ld a3,16(sp) + 3bc06276: 40fc073b subw a4,s8,a5 + 3bc0627a: 02e6e263 bltu a3,a4,3bc0629e + 3bc0627e: 000d3703 ld a4,0(s10) + 3bc06282: 417787bb subw a5,a5,s7 + 3bc06286: 7c07b78b extu a5,a5,31,0 + 3bc0628a: 973e add a4,a4,a5 + 3bc0628c: 00ed3023 sd a4,0(s10) + 3bc06290: 40fd8db3 sub s11,s11,a5 + 3bc06294: 00f90733 add a4,s2,a5 + 3bc06298: 06042223 sw zero,100(s0) + 3bc0629c: bf99 j 3bc061f2 + 3bc0629e: 44ad li s1,11 + 3bc062a0: bd05 j 3bc060d0 + 3bc062a2: 67a2 ld a5,8(sp) + 3bc062a4: ec0787e3 beqz a5,3bc06172 + 3bc062a8: 4789 li a5,2 + 3bc062aa: 00f9a023 sw a5,0(s3) + 3bc062ae: b505 j 3bc060ce + 3bc062b0: 67a2 ld a5,8(sp) + 3bc062b2: ec0780e3 beqz a5,3bc06172 + 3bc062b6: 4c85 li s9,1 + 3bc062b8: b5c1 j 3bc06178 + +000000003bc062ba : + 3bc062ba: 1141 addi sp,sp,-16 + 3bc062bc: e022 sd s0,0(sp) + 3bc062be: 842a mv s0,a0 + 3bc062c0: 659c ld a5,8(a1) + 3bc062c2: 852e mv a0,a1 + 3bc062c4: 640c ld a1,8(s0) + 3bc062c6: e406 sd ra,8(sp) + 3bc062c8: 9782 jalr a5 + 3bc062ca: 60a2 ld ra,8(sp) + 3bc062cc: 00043423 sd zero,8(s0) + 3bc062d0: 6402 ld s0,0(sp) + 3bc062d2: 0141 addi sp,sp,16 + 3bc062d4: 8082 ret + +000000003bc062d6 : + 3bc062d6: 1101 addi sp,sp,-32 + 3bc062d8: 6518 ld a4,8(a0) + 3bc062da: e426 sd s1,8(sp) + 3bc062dc: 9db1 addw a1,a1,a2 + 3bc062de: 30000493 li s1,768 + 3bc062e2: e822 sd s0,16(sp) + 3bc062e4: 00b494bb sllw s1,s1,a1 + 3bc062e8: ec06 sd ra,24(sp) + 3bc062ea: e04a sd s2,0(sp) + 3bc062ec: 842a mv s0,a0 + 3bc062ee: 7c04849b addiw s1,s1,1984 + 3bc062f2: c719 beqz a4,3bc06300 + 3bc062f4: 5138 lw a4,96(a0) + 3bc062f6: 0004879b sext.w a5,s1 + 3bc062fa: 4501 li a0,0 + 3bc062fc: 02f70a63 beq a4,a5,3bc06330 + 3bc06300: 85b6 mv a1,a3 + 3bc06302: 8522 mv a0,s0 + 3bc06304: 8936 mv s2,a3 + 3bc06306: fb5ff0ef jal ra,3bc062ba + 3bc0630a: 00093783 ld a5,0(s2) + 3bc0630e: 02049713 slli a4,s1,0x20 + 3bc06312: 01f75593 srli a1,a4,0x1f + 3bc06316: 854a mv a0,s2 + 3bc06318: 9782 jalr a5 + 3bc0631a: 87aa mv a5,a0 + 3bc0631c: e408 sd a0,8(s0) + 3bc0631e: 4509 li a0,2 + 3bc06320: cb81 beqz a5,3bc06330 + 3bc06322: 6505 lui a0,0x1 + 3bc06324: d0050513 addi a0,a0,-768 # d00 <__BSS_SIZE__-0x4f10> + 3bc06328: 97aa add a5,a5,a0 + 3bc0632a: e81c sd a5,16(s0) + 3bc0632c: d024 sw s1,96(s0) + 3bc0632e: 4501 li a0,0 + 3bc06330: 60e2 ld ra,24(sp) + 3bc06332: 6442 ld s0,16(sp) + 3bc06334: 64a2 ld s1,8(sp) + 3bc06336: 6902 ld s2,0(sp) + 3bc06338: 6105 addi sp,sp,32 + 3bc0633a: 8082 ret + +000000003bc0633c : + 3bc0633c: 4791 li a5,4 + 3bc0633e: 00c7e463 bltu a5,a2,3bc06346 + 3bc06342: 4511 li a0,4 + 3bc06344: 8082 ret + 3bc06346: 0015a703 lw a4,1(a1) + 3bc0634a: 6685 lui a3,0x1 + 3bc0634c: 87ba mv a5,a4 + 3bc0634e: 00d77363 bgeu a4,a3,3bc06354 + 3bc06352: 6785 lui a5,0x1 + 3bc06354: c15c sw a5,4(a0) + 3bc06356: 0005c783 lbu a5,0(a1) + 3bc0635a: 0e000713 li a4,224 + 3bc0635e: fef762e3 bltu a4,a5,3bc06342 + 3bc06362: 4725 li a4,9 + 3bc06364: 02e7f6bb remuw a3,a5,a4 + 3bc06368: 02e7d7bb divuw a5,a5,a4 + 3bc0636c: 4715 li a4,5 + 3bc0636e: 00d50023 sb a3,0(a0) + 3bc06372: 02e7d6bb divuw a3,a5,a4 + 3bc06376: 02e7f7bb remuw a5,a5,a4 + 3bc0637a: 00d50123 sb a3,2(a0) + 3bc0637e: 00f500a3 sb a5,1(a0) + 3bc06382: 4501 li a0,0 + 3bc06384: 8082 ret + +000000003bc06386 : + 3bc06386: 7179 addi sp,sp,-48 + 3bc06388: f022 sd s0,32(sp) + 3bc0638a: 842a mv s0,a0 + 3bc0638c: 0828 addi a0,sp,24 + 3bc0638e: f406 sd ra,40(sp) + 3bc06390: e436 sd a3,8(sp) + 3bc06392: fabff0ef jal ra,3bc0633c + 3bc06396: ed01 bnez a0,3bc063ae + 3bc06398: 66a2 ld a3,8(sp) + 3bc0639a: 01914603 lbu a2,25(sp) + 3bc0639e: 01814583 lbu a1,24(sp) + 3bc063a2: 8522 mv a0,s0 + 3bc063a4: f33ff0ef jal ra,3bc062d6 + 3bc063a8: e119 bnez a0,3bc063ae + 3bc063aa: 67e2 ld a5,24(sp) + 3bc063ac: e01c sd a5,0(s0) + 3bc063ae: 70a2 ld ra,40(sp) + 3bc063b0: 7402 ld s0,32(sp) + 3bc063b2: 6145 addi sp,sp,48 + 3bc063b4: 8082 ret + +000000003bc063b6 : + 3bc063b6: 7155 addi sp,sp,-208 + 3bc063b8: e1a2 sd s0,192(sp) + 3bc063ba: f152 sd s4,160(sp) + 3bc063bc: ed56 sd s5,152(sp) + 3bc063be: e586 sd ra,200(sp) + 3bc063c0: fd26 sd s1,184(sp) + 3bc063c2: f94a sd s2,176(sp) + 3bc063c4: f54e sd s3,168(sp) + 3bc063c6: e95a sd s6,144(sp) + 3bc063c8: e55e sd s7,136(sp) + 3bc063ca: e162 sd s8,128(sp) + 3bc063cc: 0005ba03 ld s4,0(a1) + 3bc063d0: 0006ba83 ld s5,0(a3) # 1000 <__BSS_SIZE__-0x4c10> + 3bc063d4: 0006b023 sd zero,0(a3) + 3bc063d8: 0005b023 sd zero,0(a1) + 3bc063dc: 833a mv t1,a4 + 3bc063de: 0008a023 sw zero,0(a7) + 3bc063e2: 4711 li a4,4 + 3bc063e4: 4419 li s0,6 + 3bc063e6: 07577063 bgeu a4,s5,3bc06446 + 3bc063ea: 84b6 mv s1,a3 + 3bc063ec: 66ce ld a3,208(sp) + 3bc063ee: 8bb2 mv s7,a2 + 3bc063f0: 8c2e mv s8,a1 + 3bc063f2: 89aa mv s3,a0 + 3bc063f4: 863e mv a2,a5 + 3bc063f6: 859a mv a1,t1 + 3bc063f8: 850a mv a0,sp + 3bc063fa: 8946 mv s2,a7 + 3bc063fc: 8b42 mv s6,a6 + 3bc063fe: ec02 sd zero,24(sp) + 3bc06400: e402 sd zero,8(sp) + 3bc06402: f85ff0ef jal ra,3bc06386 + 3bc06406: 842a mv s0,a0 + 3bc06408: ed1d bnez a0,3bc06446 + 3bc0640a: 850a mv a0,sp + 3bc0640c: ec4e sd s3,24(sp) + 3bc0640e: f052 sd s4,32(sp) + 3bc06410: c1bff0ef jal ra,3bc0602a + 3bc06414: 87ca mv a5,s2 + 3bc06416: 0154b023 sd s5,0(s1) + 3bc0641a: 875a mv a4,s6 + 3bc0641c: 86a6 mv a3,s1 + 3bc0641e: 865e mv a2,s7 + 3bc06420: 85d2 mv a1,s4 + 3bc06422: 850a mv a0,sp + 3bc06424: c1bff0ef jal ra,3bc0603e + 3bc06428: 77a2 ld a5,40(sp) + 3bc0642a: 842a mv s0,a0 + 3bc0642c: 00fc3023 sd a5,0(s8) + 3bc06430: e519 bnez a0,3bc0643e + 3bc06432: 00092703 lw a4,0(s2) + 3bc06436: 478d li a5,3 + 3bc06438: 00f71363 bne a4,a5,3bc0643e + 3bc0643c: 4419 li s0,6 + 3bc0643e: 65ce ld a1,208(sp) + 3bc06440: 850a mv a0,sp + 3bc06442: e79ff0ef jal ra,3bc062ba + 3bc06446: 60ae ld ra,200(sp) + 3bc06448: 8522 mv a0,s0 + 3bc0644a: 640e ld s0,192(sp) + 3bc0644c: 74ea ld s1,184(sp) + 3bc0644e: 794a ld s2,176(sp) + 3bc06450: 79aa ld s3,168(sp) + 3bc06452: 7a0a ld s4,160(sp) + 3bc06454: 6aea ld s5,152(sp) + 3bc06456: 6b4a ld s6,144(sp) + 3bc06458: 6baa ld s7,136(sp) + 3bc0645a: 6c0a ld s8,128(sp) + 3bc0645c: 6169 addi sp,sp,208 + 3bc0645e: 8082 ret + +000000003bc06460 : + 3bc06460: 00154783 lbu a5,1(a0) + 3bc06464: 00254703 lbu a4,2(a0) + 3bc06468: 00054683 lbu a3,0(a0) + 3bc0646c: 00354503 lbu a0,3(a0) + 3bc06470: 0107171b slliw a4,a4,0x10 + 3bc06474: 0087979b slliw a5,a5,0x8 + 3bc06478: 9fb9 addw a5,a5,a4 + 3bc0647a: 9fb5 addw a5,a5,a3 + 3bc0647c: 0185151b slliw a0,a0,0x18 + 3bc06480: 9d3d addw a0,a0,a5 + 3bc06482: 8082 ret + +000000003bc06484 : + 3bc06484: 40e58733 sub a4,a1,a4 + 3bc06488: 26050763 beqz a0,3bc066f6 + 3bc0648c: 00c50e33 add t3,a0,a2 + 3bc06490: 7119 addi sp,sp,-128 + 3bc06492: ff0e0793 addi a5,t3,-16 # fffff0 <__BSS_SIZE__+0xffa3e0> + 3bc06496: ecce sd s3,88(sp) + 3bc06498: 00d58eb3 add t4,a1,a3 + 3bc0649c: fc86 sd ra,120(sp) + 3bc0649e: f8a2 sd s0,112(sp) + 3bc064a0: f4a6 sd s1,104(sp) + 3bc064a2: f0ca sd s2,96(sp) + 3bc064a4: e8d2 sd s4,80(sp) + 3bc064a6: e4d6 sd s5,72(sp) + 3bc064a8: e0da sd s6,64(sp) + 3bc064aa: fc5e sd s7,56(sp) + 3bc064ac: f862 sd s8,48(sp) + 3bc064ae: f466 sd s9,40(sp) + 3bc064b0: f06a sd s10,32(sp) + 3bc064b2: ec6e sd s11,24(sp) + 3bc064b4: e43e sd a5,8(sp) + 3bc064b6: 832a mv t1,a0 + 3bc064b8: fe0e8993 addi s3,t4,-32 + 3bc064bc: ea95 bnez a3,3bc064f0 + 3bc064be: 4785 li a5,1 + 3bc064c0: 557d li a0,-1 + 3bc064c2: 00f61863 bne a2,a5,3bc064d2 + 3bc064c6: 00034503 lbu a0,0(t1) + 3bc064ca: 00a03533 snez a0,a0 + 3bc064ce: 0005250b ext a0,a0,0,0 + 3bc064d2: 70e6 ld ra,120(sp) + 3bc064d4: 7446 ld s0,112(sp) + 3bc064d6: 74a6 ld s1,104(sp) + 3bc064d8: 7906 ld s2,96(sp) + 3bc064da: 69e6 ld s3,88(sp) + 3bc064dc: 6a46 ld s4,80(sp) + 3bc064de: 6aa6 ld s5,72(sp) + 3bc064e0: 6b06 ld s6,64(sp) + 3bc064e2: 7be2 ld s7,56(sp) + 3bc064e4: 7c42 ld s8,48(sp) + 3bc064e6: 7ca2 ld s9,40(sp) + 3bc064e8: 7d02 ld s10,32(sp) + 3bc064ea: 6de2 ld s11,24(sp) + 3bc064ec: 6109 addi sp,sp,128 + 3bc064ee: 8082 ret + 3bc064f0: 557d li a0,-1 + 3bc064f2: d265 beqz a2,3bc064d2 + 3bc064f4: 879a mv a5,t1 + 3bc064f6: 882e mv a6,a1 + 3bc064f8: 4fbd li t6,15 + 3bc064fa: 429d li t0,7 + 3bc064fc: ff4e8393 addi t2,t4,-12 + 3bc06500: 4a41 li s4,16 + 3bc06502: ff9e8f13 addi t5,t4,-7 + 3bc06506: ffbe8a93 addi s5,t4,-5 + 3bc0650a: 00005b17 auipc s6,0x5 + 3bc0650e: fa6b0b13 addi s6,s6,-90 # 3bc0b4b0 + 3bc06512: 00005b97 auipc s7,0x5 + 3bc06516: f7eb8b93 addi s7,s7,-130 # 3bc0b490 + 3bc0651a: ffce0c13 addi s8,t3,-4 + 3bc0651e: 0ff00493 li s1,255 + 3bc06522: ff8e0c93 addi s9,t3,-8 + 3bc06526: ff1e0913 addi s2,t3,-15 + 3bc0652a: 5d7d li s10,-1 + 3bc0652c: 9817c50b lbuia a0,(a5),1,0 + 3bc06530: 00455693 srli a3,a0,0x4 + 3bc06534: 0045561b srliw a2,a0,0x4 + 3bc06538: 07f68063 beq a3,t6,3bc06598 + 3bc0653c: 0109b8b3 sltu a7,s3,a6 + 3bc06540: 0018c893 xori a7,a7,1 + 3bc06544: 0ff8f893 andi a7,a7,255 + 3bc06548: 00c80433 add s0,a6,a2 + 3bc0654c: 00c786b3 add a3,a5,a2 + 3bc06550: 06088d63 beqz a7,3bc065ca + 3bc06554: 68a2 ld a7,8(sp) + 3bc06556: 0717fa63 bgeu a5,a7,3bc065ca + 3bc0655a: 6390 ld a2,0(a5) + 3bc0655c: 893d andi a0,a0,15 + 3bc0655e: 00c83023 sd a2,0(a6) + 3bc06562: 679c ld a5,8(a5) + 3bc06564: 862a mv a2,a0 + 3bc06566: 00f83423 sd a5,8(a6) + 3bc0656a: 87b6 mv a5,a3 + 3bc0656c: b827c88b lhuia a7,(a5),2,0 + 3bc06570: 411406b3 sub a3,s0,a7 + 3bc06574: 0bf50763 beq a0,t6,3bc06622 + 3bc06578: 0d12f563 bgeu t0,a7,3bc06642 + 3bc0657c: 0ce6e363 bltu a3,a4,3bc06642 + 3bc06580: 6290 ld a2,0(a3) + 3bc06582: 0511 addi a0,a0,4 + 3bc06584: 00a40833 add a6,s0,a0 + 3bc06588: e010 sd a2,0(s0) + 3bc0658a: 6690 ld a2,8(a3) + 3bc0658c: e410 sd a2,8(s0) + 3bc0658e: 0106d683 lhu a3,16(a3) + 3bc06592: 00d41823 sh a3,16(s0) + 3bc06596: bf59 j 3bc0652c + 3bc06598: 0527fd63 bgeu a5,s2,3bc065f2 + 3bc0659c: 4601 li a2,0 + 3bc0659e: 9817c88b lbuia a7,(a5),1,0 + 3bc065a2: 00c8863b addw a2,a7,a2 + 3bc065a6: 0527f963 bgeu a5,s2,3bc065f8 + 3bc065aa: fe988ae3 beq a7,s1,3bc0659e + 3bc065ae: 4681 li a3,0 + 3bc065b0: 7c06360b extu a2,a2,31,0 + 3bc065b4: 063d addi a2,a2,15 + 3bc065b6: 13a68a63 beq a3,s10,3bc066ea + 3bc065ba: 010606b3 add a3,a2,a6 + 3bc065be: 1306e663 bltu a3,a6,3bc066ea + 3bc065c2: 00f606b3 add a3,a2,a5 + 3bc065c6: 12f6e263 bltu a3,a5,3bc066ea + 3bc065ca: 00c80433 add s0,a6,a2 + 3bc065ce: 00c788b3 add a7,a5,a2 + 3bc065d2: 0083e463 bltu t2,s0,3bc065da + 3bc065d6: 031cf363 bgeu s9,a7,3bc065fc + 3bc065da: 111e1863 bne t3,a7,3bc066ea + 3bc065de: 108ee663 bltu t4,s0,3bc066ea + 3bc065e2: 84ae mv s1,a1 + 3bc065e4: 8542 mv a0,a6 + 3bc065e6: 85be mv a1,a5 + 3bc065e8: cf2fa0ef jal ra,3bc00ada + 3bc065ec: 4094053b subw a0,s0,s1 + 3bc065f0: b5cd j 3bc064d2 + 3bc065f2: 56fd li a3,-1 + 3bc065f4: 4601 li a2,0 + 3bc065f6: bf6d j 3bc065b0 + 3bc065f8: 56f9 li a3,-2 + 3bc065fa: bf5d j 3bc065b0 + 3bc065fc: 4681 li a3,0 + 3bc065fe: 60d7c60b lrd a2,a5,a3,0 + 3bc06602: 60d8560b srd a2,a6,a3,0 + 3bc06606: 06a1 addi a3,a3,8 + 3bc06608: 00d80633 add a2,a6,a3 + 3bc0660c: fe8669e3 bltu a2,s0,3bc065fe + 3bc06610: 87c6 mv a5,a7 + 3bc06612: b827c88b lhuia a7,(a5),2,0 + 3bc06616: 00f57613 andi a2,a0,15 + 3bc0661a: 411406b3 sub a3,s0,a7 + 3bc0661e: 03f61263 bne a2,t6,3bc06642 + 3bc06622: 4601 li a2,0 + 3bc06624: 9817c80b lbuia a6,(a5),1,0 + 3bc06628: 00c8063b addw a2,a6,a2 + 3bc0662c: 0b87ff63 bgeu a5,s8,3bc066ea + 3bc06630: fe980ae3 beq a6,s1,3bc06624 + 3bc06634: 7c06360b extu a2,a2,31,0 + 3bc06638: 063d addi a2,a2,15 + 3bc0663a: 00860533 add a0,a2,s0 + 3bc0663e: 0a856663 bltu a0,s0,3bc066ea + 3bc06642: 0611 addi a2,a2,4 + 3bc06644: 0ae6e363 bltu a3,a4,3bc066ea + 3bc06648: 00c40833 add a6,s0,a2 + 3bc0664c: 0712e463 bltu t0,a7,3bc066b4 + 3bc06650: 00042023 sw zero,0(s0) + 3bc06654: 0006c503 lbu a0,0(a3) + 3bc06658: 00a40023 sb a0,0(s0) + 3bc0665c: 0016c503 lbu a0,1(a3) + 3bc06660: 00a400a3 sb a0,1(s0) + 3bc06664: 0026c503 lbu a0,2(a3) + 3bc06668: 00a40123 sb a0,2(s0) + 3bc0666c: 0036c503 lbu a0,3(a3) + 3bc06670: 00a401a3 sb a0,3(s0) + 3bc06674: c51b450b lrwu a0,s6,a7,2 + 3bc06678: 00a68db3 add s11,a3,a0 + 3bc0667c: 40a6c68b lrw a3,a3,a0,0 + 3bc06680: c054 sw a3,4(s0) + 3bc06682: 451bc68b lrw a3,s7,a7,2 + 3bc06686: 40dd86b3 sub a3,s11,a3 + 3bc0668a: 0503f363 bgeu t2,a6,3bc066d0 + 3bc0668e: 050aee63 bltu s5,a6,3bc066ea + 3bc06692: 0421 addi s0,s0,8 + 3bc06694: 01e47e63 bgeu s0,t5,3bc066b0 + 3bc06698: 8536 mv a0,a3 + 3bc0669a: 8622 mv a2,s0 + 3bc0669c: 7885488b ldia a7,(a0),8,0 + 3bc066a0: 7886588b sdia a7,(a2),8,0 + 3bc066a4: ffe66ce3 bltu a2,t5,3bc0669c + 3bc066a8: 408f0433 sub s0,t5,s0 + 3bc066ac: 96a2 add a3,a3,s0 + 3bc066ae: 847a mv s0,t5 + 3bc066b0: 4601 li a2,0 + 3bc066b2: a811 j 3bc066c6 + 3bc066b4: 7886c50b ldia a0,(a3),8,0 + 3bc066b8: e008 sd a0,0(s0) + 3bc066ba: bfc1 j 3bc0668a + 3bc066bc: 80c6c50b lrbu a0,a3,a2,0 + 3bc066c0: 00c4550b srb a0,s0,a2,0 + 3bc066c4: 0605 addi a2,a2,1 + 3bc066c6: 00c40533 add a0,s0,a2 + 3bc066ca: ff0569e3 bltu a0,a6,3bc066bc + 3bc066ce: bdb9 j 3bc0652c + 3bc066d0: 6288 ld a0,0(a3) + 3bc066d2: e408 sd a0,8(s0) + 3bc066d4: e4ca7ce3 bgeu s4,a2,3bc0652c + 3bc066d8: 0441 addi s0,s0,16 + 3bc066da: 06a1 addi a3,a3,8 + 3bc066dc: 7886c60b ldia a2,(a3),8,0 + 3bc066e0: 7884560b sdia a2,(s0),8,0 + 3bc066e4: ff046ce3 bltu s0,a6,3bc066dc + 3bc066e8: b591 j 3bc0652c + 3bc066ea: 40678533 sub a0,a5,t1 + 3bc066ee: fff54513 not a0,a0 + 3bc066f2: 2501 sext.w a0,a0 + 3bc066f4: bbf9 j 3bc064d2 + 3bc066f6: 557d li a0,-1 + 3bc066f8: 8082 ret + +000000003bc066fa : + 3bc066fa: 06853803 ld a6,104(a0) + 3bc066fe: 7179 addi sp,sp,-48 + 3bc06700: f022 sd s0,32(sp) + 3bc06702: f406 sd ra,40(sp) + 3bc06704: ec26 sd s1,24(sp) + 3bc06706: e84a sd s2,16(sp) + 3bc06708: e44e sd s3,8(sp) + 3bc0670a: 842a mv s0,a0 + 3bc0670c: 00081363 bnez a6,3bc06712 + 3bc06710: f12c sd a1,96(a0) + 3bc06712: 7028 ld a0,96(s0) + 3bc06714: 010507b3 add a5,a0,a6 + 3bc06718: 00f59663 bne a1,a5,3bc06724 + 3bc0671c: 00c807b3 add a5,a6,a2 + 3bc06720: f43c sd a5,104(s0) + 3bc06722: a811 j 3bc06736 + 3bc06724: 40d588b3 sub a7,a1,a3 + 3bc06728: 98b2 add a7,a7,a2 + 3bc0672a: 67c1 lui a5,0x10 + 3bc0672c: 00f8ec63 bltu a7,a5,3bc06744 + 3bc06730: f034 sd a3,96(s0) + 3bc06732: 07143423 sd a7,104(s0) + 3bc06736: 70a2 ld ra,40(sp) + 3bc06738: 7402 ld s0,32(sp) + 3bc0673a: 64e2 ld s1,24(sp) + 3bc0673c: 6942 ld s2,16(sp) + 3bc0673e: 69a2 ld s3,8(sp) + 3bc06740: 6145 addi sp,sp,48 + 3bc06742: 8082 ret + 3bc06744: 6c34 ld a3,88(s0) + 3bc06746: 84b2 mv s1,a2 + 3bc06748: 89ae mv s3,a1 + 3bc0674a: cb29 beqz a4,3bc0679c + 3bc0674c: 00d51563 bne a0,a3,3bc06756 + 3bc06750: 00c807b3 add a5,a6,a2 + 3bc06754: b7f1 j 3bc06720 + 3bc06756: 07043903 ld s2,112(s0) + 3bc0675a: 604c ld a1,128(s0) + 3bc0675c: 7c38 ld a4,120(s0) + 3bc0675e: 40d90933 sub s2,s2,a3 + 3bc06762: 40b805b3 sub a1,a6,a1 + 3bc06766: 4601 li a2,0 + 3bc06768: 00e7ea63 bltu a5,a4,3bc0677c + 3bc0676c: 40e78633 sub a2,a5,a4 + 3bc06770: 00c937b3 sltu a5,s2,a2 + 3bc06774: 0017c793 xori a5,a5,1 + 3bc06778: 40f9160b mveqz a2,s2,a5 + 3bc0677c: 40c907b3 sub a5,s2,a2 + 3bc06780: 8d91 sub a1,a1,a2 + 3bc06782: 95aa add a1,a1,a0 + 3bc06784: 00f68533 add a0,a3,a5 + 3bc06788: af2fa0ef jal ra,3bc00a7a + 3bc0678c: 6050 ld a2,128(s0) + 3bc0678e: 6c3c ld a5,88(s0) + 3bc06790: 94b2 add s1,s1,a2 + 3bc06792: 9926 add s2,s2,s1 + 3bc06794: f03c sd a5,96(s0) + 3bc06796: 07243423 sd s2,104(s0) + 3bc0679a: bf71 j 3bc06736 + 3bc0679c: 02d51e63 bne a0,a3,3bc067d8 + 3bc067a0: 7c14 ld a3,56(s0) + 3bc067a2: 00c80733 add a4,a6,a2 + 3bc067a6: 00e6fe63 bgeu a3,a4,3bc067c2 + 3bc067aa: 40c78933 sub s2,a5,a2 + 3bc067ae: 40f607b3 sub a5,a2,a5 + 3bc067b2: 97c2 add a5,a5,a6 + 3bc067b4: 864a mv a2,s2 + 3bc067b6: 00f505b3 add a1,a0,a5 + 3bc067ba: ac0fa0ef jal ra,3bc00a7a + 3bc067be: 07243423 sd s2,104(s0) + 3bc067c2: 6c28 ld a0,88(s0) + 3bc067c4: 743c ld a5,104(s0) + 3bc067c6: 8626 mv a2,s1 + 3bc067c8: 85ce mv a1,s3 + 3bc067ca: 953e add a0,a0,a5 + 3bc067cc: aaefa0ef jal ra,3bc00a7a + 3bc067d0: 7430 ld a2,104(s0) + 3bc067d2: 94b2 add s1,s1,a2 + 3bc067d4: f424 sd s1,104(s0) + 3bc067d6: b785 j 3bc06736 + 3bc067d8: 8f91 sub a5,a5,a2 + 3bc067da: 0107b733 sltu a4,a5,a6 + 3bc067de: 00174713 xori a4,a4,1 + 3bc067e2: 42e8178b mvnez a5,a6,a4 + 3bc067e6: 40f805b3 sub a1,a6,a5 + 3bc067ea: 863e mv a2,a5 + 3bc067ec: 95aa add a1,a1,a0 + 3bc067ee: 8536 mv a0,a3 + 3bc067f0: 893e mv s2,a5 + 3bc067f2: a88fa0ef jal ra,3bc00a7a + 3bc067f6: 6c28 ld a0,88(s0) + 3bc067f8: 8626 mv a2,s1 + 3bc067fa: 85ce mv a1,s3 + 3bc067fc: 954a add a0,a0,s2 + 3bc067fe: a7cfa0ef jal ra,3bc00a7a + 3bc06802: 6c3c ld a5,88(s0) + 3bc06804: 94ca add s1,s1,s2 + 3bc06806: f03c sd a5,96(s0) + 3bc06808: b7f1 j 3bc067d4 + +000000003bc0680a : + 3bc0680a: 26050463 beqz a0,3bc06a72 + 3bc0680e: 7159 addi sp,sp,-112 + 3bc06810: eca6 sd s1,88(sp) + 3bc06812: 00c50833 add a6,a0,a2 + 3bc06816: 00d588b3 add a7,a1,a3 + 3bc0681a: f486 sd ra,104(sp) + 3bc0681c: f0a2 sd s0,96(sp) + 3bc0681e: e8ca sd s2,80(sp) + 3bc06820: e4ce sd s3,72(sp) + 3bc06822: e0d2 sd s4,64(sp) + 3bc06824: fc56 sd s5,56(sp) + 3bc06826: f85a sd s6,48(sp) + 3bc06828: f45e sd s7,40(sp) + 3bc0682a: f062 sd s8,32(sp) + 3bc0682c: ec66 sd s9,24(sp) + 3bc0682e: e86a sd s10,16(sp) + 3bc06830: e46e sd s11,8(sp) + 3bc06832: ff080393 addi t2,a6,-16 + 3bc06836: fe088493 addi s1,a7,-32 + 3bc0683a: ea9d bnez a3,3bc06870 + 3bc0683c: 4705 li a4,1 + 3bc0683e: 57fd li a5,-1 + 3bc06840: 00e61863 bne a2,a4,3bc06850 + 3bc06844: 00054783 lbu a5,0(a0) + 3bc06848: 00f037b3 snez a5,a5 + 3bc0684c: 0007a78b ext a5,a5,0,0 + 3bc06850: 70a6 ld ra,104(sp) + 3bc06852: 7406 ld s0,96(sp) + 3bc06854: 64e6 ld s1,88(sp) + 3bc06856: 6946 ld s2,80(sp) + 3bc06858: 69a6 ld s3,72(sp) + 3bc0685a: 6a06 ld s4,64(sp) + 3bc0685c: 7ae2 ld s5,56(sp) + 3bc0685e: 7b42 ld s6,48(sp) + 3bc06860: 7ba2 ld s7,40(sp) + 3bc06862: 7c02 ld s8,32(sp) + 3bc06864: 6ce2 ld s9,24(sp) + 3bc06866: 6d42 ld s10,16(sp) + 3bc06868: 6da2 ld s11,8(sp) + 3bc0686a: 853e mv a0,a5 + 3bc0686c: 6165 addi sp,sp,112 + 3bc0686e: 8082 ret + 3bc06870: 57fd li a5,-1 + 3bc06872: de79 beqz a2,3bc06850 + 3bc06874: 87aa mv a5,a0 + 3bc06876: 872e mv a4,a1 + 3bc06878: 4e3d li t3,15 + 3bc0687a: 4e9d li t4,7 + 3bc0687c: ff488f13 addi t5,a7,-12 + 3bc06880: 4941 li s2,16 + 3bc06882: ff988313 addi t1,a7,-7 + 3bc06886: ffb88993 addi s3,a7,-5 + 3bc0688a: 00005a17 auipc s4,0x5 + 3bc0688e: c26a0a13 addi s4,s4,-986 # 3bc0b4b0 + 3bc06892: 00005a97 auipc s5,0x5 + 3bc06896: bfea8a93 addi s5,s5,-1026 # 3bc0b490 + 3bc0689a: ffc80b13 addi s6,a6,-4 + 3bc0689e: 0ff00f93 li t6,255 + 3bc068a2: ff880b93 addi s7,a6,-8 + 3bc068a6: ff180293 addi t0,a6,-15 + 3bc068aa: 5c7d li s8,-1 + 3bc068ac: 9817c68b lbuia a3,(a5),1,0 + 3bc068b0: 0046d413 srli s0,a3,0x4 + 3bc068b4: 0046d61b srliw a2,a3,0x4 + 3bc068b8: 05c40d63 beq s0,t3,3bc06912 + 3bc068bc: 00e4bd33 sltu s10,s1,a4 + 3bc068c0: 001d4d13 xori s10,s10,1 + 3bc068c4: 0ffd7d13 andi s10,s10,255 + 3bc068c8: 00c70433 add s0,a4,a2 + 3bc068cc: 00c78cb3 add s9,a5,a2 + 3bc068d0: 060d0a63 beqz s10,3bc06944 + 3bc068d4: 0677f863 bgeu a5,t2,3bc06944 + 3bc068d8: 6390 ld a2,0(a5) + 3bc068da: e310 sd a2,0(a4) + 3bc068dc: 679c ld a5,8(a5) + 3bc068de: e71c sd a5,8(a4) + 3bc068e0: 87e6 mv a5,s9 + 3bc068e2: b827cc8b lhuia s9,(a5),2,0 + 3bc068e6: 00f6f713 andi a4,a3,15 + 3bc068ea: 86ba mv a3,a4 + 3bc068ec: 41940633 sub a2,s0,s9 + 3bc068f0: 0bc70563 beq a4,t3,3bc0699a + 3bc068f4: 0d9ef363 bgeu t4,s9,3bc069ba + 3bc068f8: 0cb66163 bltu a2,a1,3bc069ba + 3bc068fc: 6214 ld a3,0(a2) + 3bc068fe: 0711 addi a4,a4,4 + 3bc06900: 9722 add a4,a4,s0 + 3bc06902: e014 sd a3,0(s0) + 3bc06904: 6614 ld a3,8(a2) + 3bc06906: e414 sd a3,8(s0) + 3bc06908: 01065683 lhu a3,16(a2) + 3bc0690c: 00d41823 sh a3,16(s0) + 3bc06910: bf71 j 3bc068ac + 3bc06912: 0457fd63 bgeu a5,t0,3bc0696c + 3bc06916: 4601 li a2,0 + 3bc06918: 9817cc8b lbuia s9,(a5),1,0 + 3bc0691c: 00cc863b addw a2,s9,a2 + 3bc06920: 0457f963 bgeu a5,t0,3bc06972 + 3bc06924: fffc8ae3 beq s9,t6,3bc06918 + 3bc06928: 4401 li s0,0 + 3bc0692a: 7c06360b extu a2,a2,31,0 + 3bc0692e: 063d addi a2,a2,15 + 3bc06930: 13840c63 beq s0,s8,3bc06a68 + 3bc06934: 00e60433 add s0,a2,a4 + 3bc06938: 12e46863 bltu s0,a4,3bc06a68 + 3bc0693c: 00f60433 add s0,a2,a5 + 3bc06940: 12f46463 bltu s0,a5,3bc06a68 + 3bc06944: 00c70433 add s0,a4,a2 + 3bc06948: 00c78cb3 add s9,a5,a2 + 3bc0694c: 008f6463 bltu t5,s0,3bc06954 + 3bc06950: 039bf363 bgeu s7,s9,3bc06976 + 3bc06954: 11981a63 bne a6,s9,3bc06a68 + 3bc06958: 1088e863 bltu a7,s0,3bc06a68 + 3bc0695c: 84ae mv s1,a1 + 3bc0695e: 853a mv a0,a4 + 3bc06960: 85be mv a1,a5 + 3bc06962: 978fa0ef jal ra,3bc00ada + 3bc06966: 409407bb subw a5,s0,s1 + 3bc0696a: b5dd j 3bc06850 + 3bc0696c: 547d li s0,-1 + 3bc0696e: 4601 li a2,0 + 3bc06970: bf6d j 3bc0692a + 3bc06972: 5479 li s0,-2 + 3bc06974: bf5d j 3bc0692a + 3bc06976: 4601 li a2,0 + 3bc06978: 60c7cd0b lrd s10,a5,a2,0 + 3bc0697c: 60c75d0b srd s10,a4,a2,0 + 3bc06980: 0621 addi a2,a2,8 + 3bc06982: 00c70d33 add s10,a4,a2 + 3bc06986: fe8d69e3 bltu s10,s0,3bc06978 + 3bc0698a: 87e6 mv a5,s9 + 3bc0698c: b827cc8b lhuia s9,(a5),2,0 + 3bc06990: 8abd andi a3,a3,15 + 3bc06992: 41940633 sub a2,s0,s9 + 3bc06996: 03c69263 bne a3,t3,3bc069ba + 3bc0699a: 4681 li a3,0 + 3bc0699c: 9817cd0b lbuia s10,(a5),1,0 + 3bc069a0: 00dd06bb addw a3,s10,a3 + 3bc069a4: 0d67f263 bgeu a5,s6,3bc06a68 + 3bc069a8: fffd0ae3 beq s10,t6,3bc0699c + 3bc069ac: 7c06b68b extu a3,a3,31,0 + 3bc069b0: 06bd addi a3,a3,15 + 3bc069b2: 00868733 add a4,a3,s0 + 3bc069b6: 0a876963 bltu a4,s0,3bc06a68 + 3bc069ba: 0691 addi a3,a3,4 + 3bc069bc: 0ab66663 bltu a2,a1,3bc06a68 + 3bc069c0: 00d40733 add a4,s0,a3 + 3bc069c4: 079ee463 bltu t4,s9,3bc06a2c + 3bc069c8: 00042023 sw zero,0(s0) + 3bc069cc: 00064d03 lbu s10,0(a2) + 3bc069d0: 01a40023 sb s10,0(s0) + 3bc069d4: 00164d03 lbu s10,1(a2) + 3bc069d8: 01a400a3 sb s10,1(s0) + 3bc069dc: 00264d03 lbu s10,2(a2) + 3bc069e0: 01a40123 sb s10,2(s0) + 3bc069e4: 00364d03 lbu s10,3(a2) + 3bc069e8: 01a401a3 sb s10,3(s0) + 3bc069ec: c59a4d0b lrwu s10,s4,s9,2 + 3bc069f0: 01a60db3 add s11,a2,s10 + 3bc069f4: 41a6460b lrw a2,a2,s10,0 + 3bc069f8: c050 sw a2,4(s0) + 3bc069fa: 459ac60b lrw a2,s5,s9,2 + 3bc069fe: 40cd8633 sub a2,s11,a2 + 3bc06a02: 04ef7463 bgeu t5,a4,3bc06a4a + 3bc06a06: 06e9e163 bltu s3,a4,3bc06a68 + 3bc06a0a: 0421 addi s0,s0,8 + 3bc06a0c: 00647e63 bgeu s0,t1,3bc06a28 + 3bc06a10: 8cb2 mv s9,a2 + 3bc06a12: 86a2 mv a3,s0 + 3bc06a14: 788ccd0b ldia s10,(s9),8,0 + 3bc06a18: 7886dd0b sdia s10,(a3),8,0 + 3bc06a1c: fe66ece3 bltu a3,t1,3bc06a14 + 3bc06a20: 40830433 sub s0,t1,s0 + 3bc06a24: 9622 add a2,a2,s0 + 3bc06a26: 841a mv s0,t1 + 3bc06a28: 4681 li a3,0 + 3bc06a2a: a819 j 3bc06a40 + 3bc06a2c: 78864c8b ldia s9,(a2),8,0 + 3bc06a30: 01943023 sd s9,0(s0) + 3bc06a34: b7f9 j 3bc06a02 + 3bc06a36: 80d64c8b lrbu s9,a2,a3,0 + 3bc06a3a: 00d45c8b srb s9,s0,a3,0 + 3bc06a3e: 0685 addi a3,a3,1 + 3bc06a40: 00d40cb3 add s9,s0,a3 + 3bc06a44: feece9e3 bltu s9,a4,3bc06a36 + 3bc06a48: b595 j 3bc068ac + 3bc06a4a: 00063c83 ld s9,0(a2) + 3bc06a4e: 01943423 sd s9,8(s0) + 3bc06a52: e4d97de3 bgeu s2,a3,3bc068ac + 3bc06a56: 0441 addi s0,s0,16 + 3bc06a58: 0621 addi a2,a2,8 + 3bc06a5a: 7886468b ldia a3,(a2),8,0 + 3bc06a5e: 7884568b sdia a3,(s0),8,0 + 3bc06a62: fee46ce3 bltu s0,a4,3bc06a5a + 3bc06a66: b599 j 3bc068ac + 3bc06a68: 8f89 sub a5,a5,a0 + 3bc06a6a: fff7c793 not a5,a5 + 3bc06a6e: 2781 sext.w a5,a5 + 3bc06a70: b3c5 j 3bc06850 + 3bc06a72: 57fd li a5,-1 + 3bc06a74: 853e mv a0,a5 + 3bc06a76: 8082 ret + +000000003bc06a78 : + 3bc06a78: 77c1 lui a5,0xffff0 + 3bc06a7a: 7119 addi sp,sp,-128 + 3bc06a7c: 97ae add a5,a5,a1 + 3bc06a7e: fc86 sd ra,120(sp) + 3bc06a80: f8a2 sd s0,112(sp) + 3bc06a82: f4a6 sd s1,104(sp) + 3bc06a84: f0ca sd s2,96(sp) + 3bc06a86: ecce sd s3,88(sp) + 3bc06a88: e8d2 sd s4,80(sp) + 3bc06a8a: e4d6 sd s5,72(sp) + 3bc06a8c: e0da sd s6,64(sp) + 3bc06a8e: fc5e sd s7,56(sp) + 3bc06a90: f862 sd s8,48(sp) + 3bc06a92: f466 sd s9,40(sp) + 3bc06a94: f06a sd s10,32(sp) + 3bc06a96: ec6e sd s11,24(sp) + 3bc06a98: e43e sd a5,8(sp) + 3bc06a9a: 24050263 beqz a0,3bc06cde + 3bc06a9e: 00c50333 add t1,a0,a2 + 3bc06aa2: 00d58e33 add t3,a1,a3 + 3bc06aa6: 88aa mv a7,a0 + 3bc06aa8: ff030913 addi s2,t1,-16 + 3bc06aac: fe0e0993 addi s3,t3,-32 + 3bc06ab0: ea95 bnez a3,3bc06ae4 + 3bc06ab2: 4785 li a5,1 + 3bc06ab4: 557d li a0,-1 + 3bc06ab6: 00f61863 bne a2,a5,3bc06ac6 + 3bc06aba: 0008c503 lbu a0,0(a7) + 3bc06abe: 00a03533 snez a0,a0 + 3bc06ac2: 0005250b ext a0,a0,0,0 + 3bc06ac6: 70e6 ld ra,120(sp) + 3bc06ac8: 7446 ld s0,112(sp) + 3bc06aca: 74a6 ld s1,104(sp) + 3bc06acc: 7906 ld s2,96(sp) + 3bc06ace: 69e6 ld s3,88(sp) + 3bc06ad0: 6a46 ld s4,80(sp) + 3bc06ad2: 6aa6 ld s5,72(sp) + 3bc06ad4: 6b06 ld s6,64(sp) + 3bc06ad6: 7be2 ld s7,56(sp) + 3bc06ad8: 7c42 ld s8,48(sp) + 3bc06ada: 7ca2 ld s9,40(sp) + 3bc06adc: 7d02 ld s10,32(sp) + 3bc06ade: 6de2 ld s11,24(sp) + 3bc06ae0: 6109 addi sp,sp,128 + 3bc06ae2: 8082 ret + 3bc06ae4: 557d li a0,-1 + 3bc06ae6: d265 beqz a2,3bc06ac6 + 3bc06ae8: 87c6 mv a5,a7 + 3bc06aea: 882e mv a6,a1 + 3bc06aec: 4f3d li t5,15 + 3bc06aee: 4f9d li t6,7 + 3bc06af0: ff4e0293 addi t0,t3,-12 + 3bc06af4: 4a41 li s4,16 + 3bc06af6: ff9e0e93 addi t4,t3,-7 + 3bc06afa: ffbe0a93 addi s5,t3,-5 + 3bc06afe: 00005b17 auipc s6,0x5 + 3bc06b02: 9b2b0b13 addi s6,s6,-1614 # 3bc0b4b0 + 3bc06b06: 00005b97 auipc s7,0x5 + 3bc06b0a: 98ab8b93 addi s7,s7,-1654 # 3bc0b490 + 3bc06b0e: ffc30c13 addi s8,t1,-4 + 3bc06b12: 0ff00393 li t2,255 + 3bc06b16: ff830c93 addi s9,t1,-8 + 3bc06b1a: ff130493 addi s1,t1,-15 + 3bc06b1e: 5d7d li s10,-1 + 3bc06b20: 9817c68b lbuia a3,(a5),1,0 + 3bc06b24: 0046d713 srli a4,a3,0x4 + 3bc06b28: 0046d61b srliw a2,a3,0x4 + 3bc06b2c: 05e70b63 beq a4,t5,3bc06b82 + 3bc06b30: 0109b533 sltu a0,s3,a6 + 3bc06b34: 00154513 xori a0,a0,1 + 3bc06b38: 0ff57513 andi a0,a0,255 + 3bc06b3c: 00c80433 add s0,a6,a2 + 3bc06b40: 00c78733 add a4,a5,a2 + 3bc06b44: c53d beqz a0,3bc06bb2 + 3bc06b46: 0727f663 bgeu a5,s2,3bc06bb2 + 3bc06b4a: 6390 ld a2,0(a5) + 3bc06b4c: 8abd andi a3,a3,15 + 3bc06b4e: 00c83023 sd a2,0(a6) + 3bc06b52: 679c ld a5,8(a5) + 3bc06b54: 00f83423 sd a5,8(a6) + 3bc06b58: 87ba mv a5,a4 + 3bc06b5a: b827c60b lhuia a2,(a5),2,0 + 3bc06b5e: 40c40733 sub a4,s0,a2 + 3bc06b62: 0be68363 beq a3,t5,3bc06c08 + 3bc06b66: 0ccff163 bgeu t6,a2,3bc06c28 + 3bc06b6a: 6310 ld a2,0(a4) + 3bc06b6c: 0691 addi a3,a3,4 + 3bc06b6e: 00d40833 add a6,s0,a3 + 3bc06b72: e010 sd a2,0(s0) + 3bc06b74: 6710 ld a2,8(a4) + 3bc06b76: e410 sd a2,8(s0) + 3bc06b78: 01075703 lhu a4,16(a4) # 1000010 <__BSS_SIZE__+0xffa400> + 3bc06b7c: 00e41823 sh a4,16(s0) + 3bc06b80: b745 j 3bc06b20 + 3bc06b82: 0497fc63 bgeu a5,s1,3bc06bda + 3bc06b86: 4601 li a2,0 + 3bc06b88: 9817c50b lbuia a0,(a5),1,0 + 3bc06b8c: 9e29 addw a2,a2,a0 + 3bc06b8e: 0497f963 bgeu a5,s1,3bc06be0 + 3bc06b92: fe750be3 beq a0,t2,3bc06b88 + 3bc06b96: 4701 li a4,0 + 3bc06b98: 7c06360b extu a2,a2,31,0 + 3bc06b9c: 063d addi a2,a2,15 + 3bc06b9e: 13a70a63 beq a4,s10,3bc06cd2 + 3bc06ba2: 01060733 add a4,a2,a6 + 3bc06ba6: 13076663 bltu a4,a6,3bc06cd2 + 3bc06baa: 00f60733 add a4,a2,a5 + 3bc06bae: 12f76263 bltu a4,a5,3bc06cd2 + 3bc06bb2: 00c80433 add s0,a6,a2 + 3bc06bb6: 00c78533 add a0,a5,a2 + 3bc06bba: 0082e463 bltu t0,s0,3bc06bc2 + 3bc06bbe: 02acf363 bgeu s9,a0,3bc06be4 + 3bc06bc2: 10a31863 bne t1,a0,3bc06cd2 + 3bc06bc6: 108e6663 bltu t3,s0,3bc06cd2 + 3bc06bca: 84ae mv s1,a1 + 3bc06bcc: 8542 mv a0,a6 + 3bc06bce: 85be mv a1,a5 + 3bc06bd0: f0bf90ef jal ra,3bc00ada + 3bc06bd4: 4094053b subw a0,s0,s1 + 3bc06bd8: b5fd j 3bc06ac6 + 3bc06bda: 577d li a4,-1 + 3bc06bdc: 4601 li a2,0 + 3bc06bde: bf6d j 3bc06b98 + 3bc06be0: 5779 li a4,-2 + 3bc06be2: bf5d j 3bc06b98 + 3bc06be4: 4701 li a4,0 + 3bc06be6: 60e7c60b lrd a2,a5,a4,0 + 3bc06bea: 60e8560b srd a2,a6,a4,0 + 3bc06bee: 0721 addi a4,a4,8 + 3bc06bf0: 00e80633 add a2,a6,a4 + 3bc06bf4: fe8669e3 bltu a2,s0,3bc06be6 + 3bc06bf8: 87aa mv a5,a0 + 3bc06bfa: b827c60b lhuia a2,(a5),2,0 + 3bc06bfe: 8abd andi a3,a3,15 + 3bc06c00: 40c40733 sub a4,s0,a2 + 3bc06c04: 03e69263 bne a3,t5,3bc06c28 + 3bc06c08: 4681 li a3,0 + 3bc06c0a: 9817c80b lbuia a6,(a5),1,0 + 3bc06c0e: 00d806bb addw a3,a6,a3 + 3bc06c12: 0d87f063 bgeu a5,s8,3bc06cd2 + 3bc06c16: fe780ae3 beq a6,t2,3bc06c0a + 3bc06c1a: 7c06b68b extu a3,a3,31,0 + 3bc06c1e: 06bd addi a3,a3,15 + 3bc06c20: 00868533 add a0,a3,s0 + 3bc06c24: 0a856763 bltu a0,s0,3bc06cd2 + 3bc06c28: 6522 ld a0,8(sp) + 3bc06c2a: 0691 addi a3,a3,4 + 3bc06c2c: 0aa76363 bltu a4,a0,3bc06cd2 + 3bc06c30: 00d40833 add a6,s0,a3 + 3bc06c34: 06cfe463 bltu t6,a2,3bc06c9c + 3bc06c38: 00042023 sw zero,0(s0) + 3bc06c3c: 00074503 lbu a0,0(a4) + 3bc06c40: 00a40023 sb a0,0(s0) + 3bc06c44: 00174503 lbu a0,1(a4) + 3bc06c48: 00a400a3 sb a0,1(s0) + 3bc06c4c: 00274503 lbu a0,2(a4) + 3bc06c50: 00a40123 sb a0,2(s0) + 3bc06c54: 00374503 lbu a0,3(a4) + 3bc06c58: 00a401a3 sb a0,3(s0) + 3bc06c5c: c4cb450b lrwu a0,s6,a2,2 + 3bc06c60: 00a70db3 add s11,a4,a0 + 3bc06c64: 40a7470b lrw a4,a4,a0,0 + 3bc06c68: c058 sw a4,4(s0) + 3bc06c6a: 44cbc70b lrw a4,s7,a2,2 + 3bc06c6e: 40ed8733 sub a4,s11,a4 + 3bc06c72: 0502f363 bgeu t0,a6,3bc06cb8 + 3bc06c76: 050aee63 bltu s5,a6,3bc06cd2 + 3bc06c7a: 0421 addi s0,s0,8 + 3bc06c7c: 01d47e63 bgeu s0,t4,3bc06c98 + 3bc06c80: 863a mv a2,a4 + 3bc06c82: 86a2 mv a3,s0 + 3bc06c84: 7886450b ldia a0,(a2),8,0 + 3bc06c88: 7886d50b sdia a0,(a3),8,0 + 3bc06c8c: ffd6ece3 bltu a3,t4,3bc06c84 + 3bc06c90: 408e8433 sub s0,t4,s0 + 3bc06c94: 9722 add a4,a4,s0 + 3bc06c96: 8476 mv s0,t4 + 3bc06c98: 4681 li a3,0 + 3bc06c9a: a811 j 3bc06cae + 3bc06c9c: 7887460b ldia a2,(a4),8,0 + 3bc06ca0: e010 sd a2,0(s0) + 3bc06ca2: bfc1 j 3bc06c72 + 3bc06ca4: 80d7460b lrbu a2,a4,a3,0 + 3bc06ca8: 00d4560b srb a2,s0,a3,0 + 3bc06cac: 0685 addi a3,a3,1 + 3bc06cae: 00d40633 add a2,s0,a3 + 3bc06cb2: ff0669e3 bltu a2,a6,3bc06ca4 + 3bc06cb6: b5ad j 3bc06b20 + 3bc06cb8: 6310 ld a2,0(a4) + 3bc06cba: e410 sd a2,8(s0) + 3bc06cbc: e6da72e3 bgeu s4,a3,3bc06b20 + 3bc06cc0: 0441 addi s0,s0,16 + 3bc06cc2: 0721 addi a4,a4,8 + 3bc06cc4: 7887468b ldia a3,(a4),8,0 + 3bc06cc8: 7884568b sdia a3,(s0),8,0 + 3bc06ccc: ff046ce3 bltu s0,a6,3bc06cc4 + 3bc06cd0: bd81 j 3bc06b20 + 3bc06cd2: 41178533 sub a0,a5,a7 + 3bc06cd6: fff54513 not a0,a0 + 3bc06cda: 2501 sext.w a0,a0 + 3bc06cdc: b3ed j 3bc06ac6 + 3bc06cde: 557d li a0,-1 + 3bc06ce0: b3dd j 3bc06ac6 + +000000003bc06ce2 : + 3bc06ce2: 30050963 beqz a0,3bc06ff4 + 3bc06ce6: 7135 addi sp,sp,-160 + 3bc06ce8: e526 sd s1,136(sp) + 3bc06cea: fcce sd s3,120(sp) + 3bc06cec: f0da sd s6,96(sp) + 3bc06cee: ecde sd s7,88(sp) + 3bc06cf0: e8e2 sd s8,80(sp) + 3bc06cf2: e0ea sd s10,64(sp) + 3bc06cf4: ed06 sd ra,152(sp) + 3bc06cf6: e922 sd s0,144(sp) + 3bc06cf8: e14a sd s2,128(sp) + 3bc06cfa: f8d2 sd s4,112(sp) + 3bc06cfc: f4d6 sd s5,104(sp) + 3bc06cfe: e4e6 sd s9,72(sp) + 3bc06d00: fc6e sd s11,56(sp) + 3bc06d02: 8b2a mv s6,a0 + 3bc06d04: 8d2e mv s10,a1 + 3bc06d06: 84ba mv s1,a4 + 3bc06d08: 89be mv s3,a5 + 3bc06d0a: 00c50bb3 add s7,a0,a2 + 3bc06d0e: 00d58c33 add s8,a1,a3 + 3bc06d12: c319 beqz a4,3bc06d18 + 3bc06d14: 00f704b3 add s1,a4,a5 + 3bc06d18: ff0b8793 addi a5,s7,-16 + 3bc06d1c: e03e sd a5,0(sp) + 3bc06d1e: fe0c0793 addi a5,s8,-32 + 3bc06d22: e43e sd a5,8(sp) + 3bc06d24: ea95 bnez a3,3bc06d58 + 3bc06d26: 4785 li a5,1 + 3bc06d28: 557d li a0,-1 + 3bc06d2a: 00f61863 bne a2,a5,3bc06d3a + 3bc06d2e: 000b4503 lbu a0,0(s6) + 3bc06d32: 00a03533 snez a0,a0 + 3bc06d36: 0005250b ext a0,a0,0,0 + 3bc06d3a: 60ea ld ra,152(sp) + 3bc06d3c: 644a ld s0,144(sp) + 3bc06d3e: 64aa ld s1,136(sp) + 3bc06d40: 690a ld s2,128(sp) + 3bc06d42: 79e6 ld s3,120(sp) + 3bc06d44: 7a46 ld s4,112(sp) + 3bc06d46: 7aa6 ld s5,104(sp) + 3bc06d48: 7b06 ld s6,96(sp) + 3bc06d4a: 6be6 ld s7,88(sp) + 3bc06d4c: 6c46 ld s8,80(sp) + 3bc06d4e: 6ca6 ld s9,72(sp) + 3bc06d50: 6d06 ld s10,64(sp) + 3bc06d52: 7de2 ld s11,56(sp) + 3bc06d54: 610d addi sp,sp,160 + 3bc06d56: 8082 ret + 3bc06d58: 557d li a0,-1 + 3bc06d5a: d265 beqz a2,3bc06d3a + 3bc06d5c: ffcb8793 addi a5,s7,-4 + 3bc06d60: e83e sd a5,16(sp) + 3bc06d62: ff8b8793 addi a5,s7,-8 + 3bc06d66: 845a mv s0,s6 + 3bc06d68: 8cea mv s9,s10 + 3bc06d6a: ff4c0a13 addi s4,s8,-12 + 3bc06d6e: ff9c0913 addi s2,s8,-7 + 3bc06d72: ffbc0a93 addi s5,s8,-5 + 3bc06d76: ec3e sd a5,24(sp) + 3bc06d78: 9814468b lbuia a3,(s0),1,0 + 3bc06d7c: 4ebd li t4,15 + 3bc06d7e: 0046d793 srli a5,a3,0x4 + 3bc06d82: 0046d61b srliw a2,a3,0x4 + 3bc06d86: 07d78363 beq a5,t4,3bc06dec + 3bc06d8a: 67a2 ld a5,8(sp) + 3bc06d8c: 00cc8db3 add s11,s9,a2 + 3bc06d90: 00c40533 add a0,s0,a2 + 3bc06d94: 0197b5b3 sltu a1,a5,s9 + 3bc06d98: 0015c593 xori a1,a1,1 + 3bc06d9c: 0ff5f593 andi a1,a1,255 + 3bc06da0: c5c1 beqz a1,3bc06e28 + 3bc06da2: 6782 ld a5,0(sp) + 3bc06da4: 08f47263 bgeu s0,a5,3bc06e28 + 3bc06da8: 6010 ld a2,0(s0) + 3bc06daa: 8abd andi a3,a3,15 + 3bc06dac: 00ccb023 sd a2,0(s9) + 3bc06db0: 6410 ld a2,8(s0) + 3bc06db2: 842a mv s0,a0 + 3bc06db4: 00ccb423 sd a2,8(s9) + 3bc06db8: b824458b lhuia a1,(s0),2,0 + 3bc06dbc: 8636 mv a2,a3 + 3bc06dbe: 40bd8533 sub a0,s11,a1 + 3bc06dc2: 0dd68063 beq a3,t4,3bc06e82 + 3bc06dc6: 471d li a4,7 + 3bc06dc8: 0eb77063 bgeu a4,a1,3bc06ea8 + 3bc06dcc: 0da56e63 bltu a0,s10,3bc06ea8 + 3bc06dd0: 6118 ld a4,0(a0) + 3bc06dd2: 0691 addi a3,a3,4 + 3bc06dd4: 00dd8cb3 add s9,s11,a3 + 3bc06dd8: 00edb023 sd a4,0(s11) + 3bc06ddc: 6518 ld a4,8(a0) + 3bc06dde: 00edb423 sd a4,8(s11) + 3bc06de2: 01055703 lhu a4,16(a0) + 3bc06de6: 00ed9823 sh a4,16(s11) + 3bc06dea: b779 j 3bc06d78 + 3bc06dec: ff1b8793 addi a5,s7,-15 + 3bc06df0: 06f47063 bgeu s0,a5,3bc06e50 + 3bc06df4: 4601 li a2,0 + 3bc06df6: 0ff00513 li a0,255 + 3bc06dfa: 98144e8b lbuia t4,(s0),1,0 + 3bc06dfe: 00ce863b addw a2,t4,a2 + 3bc06e02: 04f47a63 bgeu s0,a5,3bc06e56 + 3bc06e06: feae8ae3 beq t4,a0,3bc06dfa + 3bc06e0a: 4781 li a5,0 + 3bc06e0c: 7c06360b extu a2,a2,31,0 + 3bc06e10: 55fd li a1,-1 + 3bc06e12: 063d addi a2,a2,15 + 3bc06e14: 1cb78a63 beq a5,a1,3bc06fe8 + 3bc06e18: 019607b3 add a5,a2,s9 + 3bc06e1c: 1d97e663 bltu a5,s9,3bc06fe8 + 3bc06e20: 008607b3 add a5,a2,s0 + 3bc06e24: 1c87e263 bltu a5,s0,3bc06fe8 + 3bc06e28: 00cc8db3 add s11,s9,a2 + 3bc06e2c: 00c405b3 add a1,s0,a2 + 3bc06e30: 01ba6563 bltu s4,s11,3bc06e3a + 3bc06e34: 67e2 ld a5,24(sp) + 3bc06e36: 02b7f263 bgeu a5,a1,3bc06e5a + 3bc06e3a: 1abb9763 bne s7,a1,3bc06fe8 + 3bc06e3e: 1bbc6563 bltu s8,s11,3bc06fe8 + 3bc06e42: 85a2 mv a1,s0 + 3bc06e44: 8566 mv a0,s9 + 3bc06e46: c95f90ef jal ra,3bc00ada + 3bc06e4a: 41ad853b subw a0,s11,s10 + 3bc06e4e: b5f5 j 3bc06d3a + 3bc06e50: 57fd li a5,-1 + 3bc06e52: 4601 li a2,0 + 3bc06e54: bf65 j 3bc06e0c + 3bc06e56: 57f9 li a5,-2 + 3bc06e58: bf55 j 3bc06e0c + 3bc06e5a: 4601 li a2,0 + 3bc06e5c: 60c4450b lrd a0,s0,a2,0 + 3bc06e60: 60ccd50b srd a0,s9,a2,0 + 3bc06e64: 0621 addi a2,a2,8 + 3bc06e66: 00cc8533 add a0,s9,a2 + 3bc06e6a: ffb569e3 bltu a0,s11,3bc06e5c + 3bc06e6e: 842e mv s0,a1 + 3bc06e70: b824458b lhuia a1,(s0),2,0 + 3bc06e74: 00f6f613 andi a2,a3,15 + 3bc06e78: 473d li a4,15 + 3bc06e7a: 40bd8533 sub a0,s11,a1 + 3bc06e7e: 02e61563 bne a2,a4,3bc06ea8 + 3bc06e82: 4601 li a2,0 + 3bc06e84: 0ff00693 li a3,255 + 3bc06e88: 98144e8b lbuia t4,(s0),1,0 + 3bc06e8c: 67c2 ld a5,16(sp) + 3bc06e8e: 00ce863b addw a2,t4,a2 + 3bc06e92: 14f47b63 bgeu s0,a5,3bc06fe8 + 3bc06e96: fede89e3 beq t4,a3,3bc06e88 + 3bc06e9a: 7c06360b extu a2,a2,31,0 + 3bc06e9e: 063d addi a2,a2,15 + 3bc06ea0: 01b60733 add a4,a2,s11 + 3bc06ea4: 15b76263 bltu a4,s11,3bc06fe8 + 3bc06ea8: 6741 lui a4,0x10 + 3bc06eaa: 0611 addi a2,a2,4 + 3bc06eac: 00e9f663 bgeu s3,a4,3bc06eb8 + 3bc06eb0: 01350733 add a4,a0,s3 + 3bc06eb4: 13a76a63 bltu a4,s10,3bc06fe8 + 3bc06eb8: 00cd8cb3 add s9,s11,a2 + 3bc06ebc: 07a57663 bgeu a0,s10,3bc06f28 + 3bc06ec0: 139ae463 bltu s5,s9,3bc06fe8 + 3bc06ec4: 40ad06b3 sub a3,s10,a0 + 3bc06ec8: 40d485b3 sub a1,s1,a3 + 3bc06ecc: 00c6e663 bltu a3,a2,3bc06ed8 + 3bc06ed0: 856e mv a0,s11 + 3bc06ed2: c09f90ef jal ra,3bc00ada + 3bc06ed6: b54d j 3bc06d78 + 3bc06ed8: 40d60eb3 sub t4,a2,a3 + 3bc06edc: 856e mv a0,s11 + 3bc06ede: 8636 mv a2,a3 + 3bc06ee0: f476 sd t4,40(sp) + 3bc06ee2: f036 sd a3,32(sp) + 3bc06ee4: b97f90ef jal ra,3bc00a7a + 3bc06ee8: 7682 ld a3,32(sp) + 3bc06eea: 7ea2 ld t4,40(sp) + 3bc06eec: 00dd8533 add a0,s11,a3 + 3bc06ef0: 41a507b3 sub a5,a0,s10 + 3bc06ef4: 03d7f563 bgeu a5,t4,3bc06f1e + 3bc06ef8: 4781 li a5,0 + 3bc06efa: a031 j 3bc06f06 + 3bc06efc: 80fd468b lrbu a3,s10,a5,0 + 3bc06f00: 00f5568b srb a3,a0,a5,0 + 3bc06f04: 0785 addi a5,a5,1 + 3bc06f06: 00f506b3 add a3,a0,a5 + 3bc06f0a: ff96e9e3 bltu a3,s9,3bc06efc + 3bc06f0e: 00acb733 sltu a4,s9,a0 + 3bc06f12: 8676 mv a2,t4 + 3bc06f14: 42e0160b mvnez a2,zero,a4 + 3bc06f18: 00c50cb3 add s9,a0,a2 + 3bc06f1c: bdb1 j 3bc06d78 + 3bc06f1e: 8676 mv a2,t4 + 3bc06f20: 85ea mv a1,s10 + 3bc06f22: b59f90ef jal ra,3bc00a7a + 3bc06f26: bd89 j 3bc06d78 + 3bc06f28: 469d li a3,7 + 3bc06f2a: 06b6ee63 bltu a3,a1,3bc06fa6 + 3bc06f2e: 000da023 sw zero,0(s11) + 3bc06f32: 00054683 lbu a3,0(a0) + 3bc06f36: 00004797 auipc a5,0x4 + 3bc06f3a: 57a78793 addi a5,a5,1402 # 3bc0b4b0 + 3bc06f3e: c4b7ce8b lrwu t4,a5,a1,2 + 3bc06f42: 00dd8023 sb a3,0(s11) + 3bc06f46: 00154683 lbu a3,1(a0) + 3bc06f4a: 00004797 auipc a5,0x4 + 3bc06f4e: 54678793 addi a5,a5,1350 # 3bc0b490 + 3bc06f52: 01d50f33 add t5,a0,t4 + 3bc06f56: 00dd80a3 sb a3,1(s11) + 3bc06f5a: 00254683 lbu a3,2(a0) + 3bc06f5e: 00dd8123 sb a3,2(s11) + 3bc06f62: 00354683 lbu a3,3(a0) + 3bc06f66: 00dd81a3 sb a3,3(s11) + 3bc06f6a: 41d5468b lrw a3,a0,t4,0 + 3bc06f6e: 00dda223 sw a3,4(s11) + 3bc06f72: 44b7c68b lrw a3,a5,a1,2 + 3bc06f76: 40df06b3 sub a3,t5,a3 + 3bc06f7a: 059a7663 bgeu s4,s9,3bc06fc6 + 3bc06f7e: 079ae563 bltu s5,s9,3bc06fe8 + 3bc06f82: 008d8513 addi a0,s11,8 + 3bc06f86: 01257e63 bgeu a0,s2,3bc06fa2 + 3bc06f8a: 8636 mv a2,a3 + 3bc06f8c: 87aa mv a5,a0 + 3bc06f8e: 7886458b ldia a1,(a2),8,0 + 3bc06f92: 7887d58b sdia a1,(a5),8,0 + 3bc06f96: ff27ece3 bltu a5,s2,3bc06f8e + 3bc06f9a: 40a907b3 sub a5,s2,a0 + 3bc06f9e: 96be add a3,a3,a5 + 3bc06fa0: 854a mv a0,s2 + 3bc06fa2: 4781 li a5,0 + 3bc06fa4: a821 j 3bc06fbc + 3bc06fa6: 86aa mv a3,a0 + 3bc06fa8: 7886c58b ldia a1,(a3),8,0 + 3bc06fac: 00bdb023 sd a1,0(s11) + 3bc06fb0: b7e9 j 3bc06f7a + 3bc06fb2: 80f6c60b lrbu a2,a3,a5,0 + 3bc06fb6: 00f5560b srb a2,a0,a5,0 + 3bc06fba: 0785 addi a5,a5,1 + 3bc06fbc: 00f50633 add a2,a0,a5 + 3bc06fc0: ff9669e3 bltu a2,s9,3bc06fb2 + 3bc06fc4: bb55 j 3bc06d78 + 3bc06fc6: 628c ld a1,0(a3) + 3bc06fc8: 00bdb423 sd a1,8(s11) + 3bc06fcc: 45c1 li a1,16 + 3bc06fce: dac5f5e3 bgeu a1,a2,3bc06d78 + 3bc06fd2: 010d8513 addi a0,s11,16 + 3bc06fd6: 00868613 addi a2,a3,8 + 3bc06fda: 7886478b ldia a5,(a2),8,0 + 3bc06fde: 7885578b sdia a5,(a0),8,0 + 3bc06fe2: ff956ce3 bltu a0,s9,3bc06fda + 3bc06fe6: bb49 j 3bc06d78 + 3bc06fe8: 41640533 sub a0,s0,s6 + 3bc06fec: fff54513 not a0,a0 + 3bc06ff0: 2501 sext.w a0,a0 + 3bc06ff2: b3a1 j 3bc06d3a + 3bc06ff4: 557d li a0,-1 + 3bc06ff6: 8082 ret + +000000003bc06ff8 : + 3bc06ff8: 883e mv a6,a5 + 3bc06ffa: e399 bnez a5,3bc07000 + 3bc06ffc: 80fff06f j 3bc0680a + 3bc07000: 00f708b3 add a7,a4,a5 + 3bc07004: 01159b63 bne a1,a7,3bc0701a + 3bc07008: 67c1 lui a5,0x10 + 3bc0700a: 17f9 addi a5,a5,-2 + 3bc0700c: 0107d463 bge a5,a6,3bc07014 + 3bc07010: a69ff06f j 3bc06a78 + 3bc07014: 8742 mv a4,a6 + 3bc07016: c6eff06f j 3bc06484 + 3bc0701a: cc9ff06f j 3bc06ce2 + +000000003bc0701e : + 3bc0701e: fed53513 sltiu a0,a0,-19 + 3bc07022: 00154513 xori a0,a0,1 + 3bc07026: 2501 sext.w a0,a0 + 3bc07028: 8082 ret + +000000003bc0702a : + 3bc0702a: e111 bnez a0,3bc0702e + 3bc0702c: 4511 li a0,4 + 3bc0702e: ffc5069b addiw a3,a0,-4 + 3bc07032: 470d li a4,3 + 3bc07034: 5579 li a0,-2 + 3bc07036: 00d76863 bltu a4,a3,3bc07046 + 3bc0703a: 00004717 auipc a4,0x4 + 3bc0703e: 43670713 addi a4,a4,1078 # 3bc0b470 + 3bc07042: 76d7450b lurd a0,a4,a3,3 + 3bc07046: 8082 ret + +000000003bc07048 : + 3bc07048: 715d addi sp,sp,-80 + 3bc0704a: f84a sd s2,48(sp) + 3bc0704c: e486 sd ra,72(sp) + 3bc0704e: e0a2 sd s0,64(sp) + 3bc07050: fc26 sd s1,56(sp) + 3bc07052: f44e sd s3,40(sp) + 3bc07054: f052 sd s4,32(sp) + 3bc07056: ec56 sd s5,24(sp) + 3bc07058: e85a sd s6,16(sp) + 3bc0705a: e45e sd s7,8(sp) + 3bc0705c: e062 sd s8,0(sp) + 3bc0705e: 4799 li a5,6 + 3bc07060: 5951 li s2,-12 + 3bc07062: 04c7f663 bgeu a5,a2,3bc070ae + 3bc07066: 84ae mv s1,a1 + 3bc07068: 8932 mv s2,a2 + 3bc0706a: 4581 li a1,0 + 3bc0706c: 02000613 li a2,32 + 3bc07070: 842a mv s0,a0 + 3bc07072: 9aff90ef jal ra,3bc00a20 + 3bc07076: 8526 mv a0,s1 + 3bc07078: be8ff0ef jal ra,3bc06460 + 3bc0707c: 2501 sext.w a0,a0 + 3bc0707e: 184d37b7 lui a5,0x184d3 + 3bc07082: ff057713 andi a4,a0,-16 + 3bc07086: a5078793 addi a5,a5,-1456 # 184d2a50 + 3bc0708a: 02f71f63 bne a4,a5,3bc070c8 + 3bc0708e: 4785 li a5,1 + 3bc07090: c45c sw a5,12(s0) + 3bc07092: 0e840793 addi a5,s0,232 + 3bc07096: 00f49963 bne s1,a5,3bc070a8 + 3bc0709a: 47a1 li a5,8 + 3bc0709c: e83c sd a5,80(s0) + 3bc0709e: 05243423 sd s2,72(s0) + 3bc070a2: 47b5 li a5,13 + 3bc070a4: d05c sw a5,36(s0) + 3bc070a6: a021 j 3bc070ae + 3bc070a8: 47b1 li a5,12 + 3bc070aa: d05c sw a5,36(s0) + 3bc070ac: 4911 li s2,4 + 3bc070ae: 60a6 ld ra,72(sp) + 3bc070b0: 6406 ld s0,64(sp) + 3bc070b2: 74e2 ld s1,56(sp) + 3bc070b4: 79a2 ld s3,40(sp) + 3bc070b6: 7a02 ld s4,32(sp) + 3bc070b8: 6ae2 ld s5,24(sp) + 3bc070ba: 6b42 ld s6,16(sp) + 3bc070bc: 6ba2 ld s7,8(sp) + 3bc070be: 6c02 ld s8,0(sp) + 3bc070c0: 854a mv a0,s2 + 3bc070c2: 7942 ld s2,48(sp) + 3bc070c4: 6161 addi sp,sp,80 + 3bc070c6: 8082 ret + 3bc070c8: 184d27b7 lui a5,0x184d2 + 3bc070cc: 20478793 addi a5,a5,516 # 184d2204 + 3bc070d0: 10f51863 bne a0,a5,3bc071e0 + 3bc070d4: 00042623 sw zero,12(s0) + 3bc070d8: 0044c783 lbu a5,4(s1) + 3bc070dc: 0417b70b extu a4,a5,1,1 + 3bc070e0: 00078b1b sext.w s6,a5 + 3bc070e4: 0067d693 srli a3,a5,0x6 + 3bc070e8: 0e071e63 bnez a4,3bc071e4 + 3bc070ec: 4705 li a4,1 + 3bc070ee: 0ee69d63 bne a3,a4,3bc071e8 + 3bc070f2: 0c3b3c0b extu s8,s6,3,3 + 3bc070f6: 49bd li s3,15 + 3bc070f8: 000c1363 bnez s8,3bc070fe + 3bc070fc: 499d li s3,7 + 3bc070fe: 0017fa13 andi s4,a5,1 + 3bc07102: 0549998b addsl s3,s3,s4,2 + 3bc07106: 03397063 bgeu s2,s3,3bc07126 + 3bc0710a: 0e840513 addi a0,s0,232 + 3bc0710e: 00a48663 beq s1,a0,3bc0711a + 3bc07112: 864a mv a2,s2 + 3bc07114: 85a6 mv a1,s1 + 3bc07116: 965f90ef jal ra,3bc00a7a + 3bc0711a: 05243423 sd s2,72(s0) + 3bc0711e: 05343823 sd s3,80(s0) + 3bc07122: 4785 li a5,1 + 3bc07124: b741 j 3bc070a4 + 3bc07126: 0054c783 lbu a5,5(s1) + 3bc0712a: 5961 li s2,-8 + 3bc0712c: fc77b70b extu a4,a5,63,7 + 3bc07130: 8c47bb8b extu s7,a5,35,4 + 3bc07134: ff2d bnez a4,3bc070ae + 3bc07136: 004bf713 andi a4,s7,4 + 3bc0713a: 5979 li s2,-2 + 3bc0713c: db2d beqz a4,3bc070ae + 3bc0713e: 8bbd andi a5,a5,15 + 3bc07140: 5961 li s2,-8 + 3bc07142: f7b5 bnez a5,3bc070ae + 3bc07144: ffb98a93 addi s5,s3,-5 + 3bc07148: 4601 li a2,0 + 3bc0714a: 85d6 mv a1,s5 + 3bc0714c: 00448513 addi a0,s1,4 + 3bc07150: 425000ef jal ra,3bc07d74 + 3bc07154: 013487b3 add a5,s1,s3 + 3bc07158: fff7c783 lbu a5,-1(a5) + 3bc0715c: 3c85350b extu a0,a0,15,8 + 3bc07160: 593d li s2,-17 + 3bc07162: f4a796e3 bne a5,a0,3bc070ae + 3bc07166: 145b378b extu a5,s6,5,5 + 3bc0716a: 007bf513 andi a0,s7,7 + 3bc0716e: c05c sw a5,4(s0) + 3bc07170: 104b378b extu a5,s6,4,4 + 3bc07174: 082b3b0b extu s6,s6,2,2 + 3bc07178: cc5c sw a5,28(s0) + 3bc0717a: 01642423 sw s6,8(s0) + 3bc0717e: c008 sw a0,0(s0) + 3bc07180: eabff0ef jal ra,3bc0702a + 3bc07184: f808 sd a0,48(s0) + 3bc07186: 040c0263 beqz s8,3bc071ca + 3bc0718a: 0074c783 lbu a5,7(s1) + 3bc0718e: 0084c703 lbu a4,8(s1) + 3bc07192: 0064c683 lbu a3,6(s1) + 3bc07196: 07a2 slli a5,a5,0x8 + 3bc07198: 0742 slli a4,a4,0x10 + 3bc0719a: 97ba add a5,a5,a4 + 3bc0719c: 0094c703 lbu a4,9(s1) + 3bc071a0: 97b6 add a5,a5,a3 + 3bc071a2: 0762 slli a4,a4,0x18 + 3bc071a4: 97ba add a5,a5,a4 + 3bc071a6: 00a4c703 lbu a4,10(s1) + 3bc071aa: 1702 slli a4,a4,0x20 + 3bc071ac: 97ba add a5,a5,a4 + 3bc071ae: 00b4c703 lbu a4,11(s1) + 3bc071b2: 1722 slli a4,a4,0x28 + 3bc071b4: 973e add a4,a4,a5 + 3bc071b6: 00c4c783 lbu a5,12(s1) + 3bc071ba: 17c2 slli a5,a5,0x30 + 3bc071bc: 973e add a4,a4,a5 + 3bc071be: 00d4c783 lbu a5,13(s1) + 3bc071c2: 17e2 slli a5,a5,0x38 + 3bc071c4: 97ba add a5,a5,a4 + 3bc071c6: e81c sd a5,16(s0) + 3bc071c8: f41c sd a5,40(s0) + 3bc071ca: 000a0763 beqz s4,3bc071d8 + 3bc071ce: 01548533 add a0,s1,s5 + 3bc071d2: a8eff0ef jal ra,3bc06460 + 3bc071d6: cc08 sw a0,24(s0) + 3bc071d8: 4789 li a5,2 + 3bc071da: d05c sw a5,36(s0) + 3bc071dc: 894e mv s2,s3 + 3bc071de: bdc1 j 3bc070ae + 3bc071e0: 594d li s2,-13 + 3bc071e2: b5f1 j 3bc070ae + 3bc071e4: 5961 li s2,-8 + 3bc071e6: b5e1 j 3bc070ae + 3bc071e8: 5969 li s2,-6 + 3bc071ea: b5d1 j 3bc070ae + +000000003bc071ec : + 3bc071ec: 1101 addi sp,sp,-32 + 3bc071ee: e822 sd s0,16(sp) + 3bc071f0: e426 sd s1,8(sp) + 3bc071f2: 842a mv s0,a0 + 3bc071f4: 84ae mv s1,a1 + 3bc071f6: 4505 li a0,1 + 3bc071f8: 10000593 li a1,256 + 3bc071fc: ec06 sd ra,24(sp) + 3bc071fe: bf8fa0ef jal ra,3bc015f6 + 3bc07202: e909 bnez a0,3bc07214 + 3bc07204: 00043023 sd zero,0(s0) + 3bc07208: 555d li a0,-9 + 3bc0720a: 60e2 ld ra,24(sp) + 3bc0720c: 6442 ld s0,16(sp) + 3bc0720e: 64a2 ld s1,8(sp) + 3bc07210: 6105 addi sp,sp,32 + 3bc07212: 8082 ret + 3bc07214: d104 sw s1,32(a0) + 3bc07216: e008 sd a0,0(s0) + 3bc07218: 4501 li a0,0 + 3bc0721a: bfc5 j 3bc0720a + +000000003bc0721c : + 3bc0721c: 7131 addi sp,sp,-192 + 3bc0721e: ed4e sd s3,152(sp) + 3bc07220: 00073983 ld s3,0(a4) + 3bc07224: e556 sd s5,136(sp) + 3bc07226: e15a sd s6,128(sp) + 3bc07228: f0ea sd s10,96(sp) + 3bc0722a: ecee sd s11,88(sp) + 3bc0722c: fd06 sd ra,184(sp) + 3bc0722e: f922 sd s0,176(sp) + 3bc07230: f526 sd s1,168(sp) + 3bc07232: f14a sd s2,160(sp) + 3bc07234: e952 sd s4,144(sp) + 3bc07236: fcde sd s7,120(sp) + 3bc07238: f8e2 sd s8,112(sp) + 3bc0723a: f4e6 sd s9,104(sp) + 3bc0723c: fad1560b sdd a2,a3,(sp),1,4 + 3bc07240: e43e sd a5,8(sp) + 3bc07242: 8d2a mv s10,a0 + 3bc07244: 8aae mv s5,a1 + 3bc07246: 8dba mv s11,a4 + 3bc07248: 99b6 add s3,s3,a3 + 3bc0724a: 4b01 li s6,0 + 3bc0724c: c581 beqz a1,3bc07254 + 3bc0724e: 00063b03 ld s6,0(a2) + 3bc07252: 9b2e add s6,s6,a1 + 3bc07254: 0080 addi s0,sp,64 + 3bc07256: 4641 li a2,16 + 3bc07258: 4581 li a1,0 + 3bc0725a: 8522 mv a0,s0 + 3bc0725c: fc4f90ef jal ra,3bc00a20 + 3bc07260: 67a2 ld a5,8(sp) + 3bc07262: 000db023 sd zero,0(s11) + 3bc07266: 6ce2 ld s9,24(sp) + 3bc07268: 40f4178b mveqz a5,s0,a5 + 3bc0726c: e43e sd a5,8(sp) + 3bc0726e: 67c2 ld a5,16(sp) + 3bc07270: 8956 mv s2,s5 + 3bc07272: 4485 li s1,1 + 3bc07274: 0007b023 sd zero,0(a5) + 3bc07278: 0ecd0793 addi a5,s10,236 + 3bc0727c: f43e sd a5,40(sp) + 3bc0727e: 0b8d0793 addi a5,s10,184 + 3bc07282: 4a05 li s4,1 + 3bc07284: 0e8d0b93 addi s7,s10,232 + 3bc07288: 088d0c13 addi s8,s10,136 + 3bc0728c: f03e sd a5,32(sp) + 3bc0728e: 080a1b63 bnez s4,3bc07324 + 3bc07292: 004d2783 lw a5,4(s10) + 3bc07296: ebbd bnez a5,3bc0730c + 3bc07298: 060d3583 ld a1,96(s10) + 3bc0729c: 058d3503 ld a0,88(s10) + 3bc072a0: 06a58663 beq a1,a0,3bc0730c + 3bc072a4: c5a5 beqz a1,3bc0730c + 3bc072a6: 67a2 ld a5,8(sp) + 3bc072a8: 439c lw a5,0(a5) + 3bc072aa: e3ad bnez a5,3bc0730c + 3bc072ac: 024d2703 lw a4,36(s10) + 3bc072b0: 479d li a5,7 + 3bc072b2: ffe7069b addiw a3,a4,-2 + 3bc072b6: 04d7eb63 bltu a5,a3,3bc0730c + 3bc072ba: 46a5 li a3,9 + 3bc072bc: 068d3783 ld a5,104(s10) + 3bc072c0: 6ed71c63 bne a4,a3,3bc079b8 + 3bc072c4: 080d3683 ld a3,128(s10) + 3bc072c8: 070d3403 ld s0,112(s10) + 3bc072cc: 078d3703 ld a4,120(s10) + 3bc072d0: 8f95 sub a5,a5,a3 + 3bc072d2: 66c1 lui a3,0x10 + 3bc072d4: 8c09 sub s0,s0,a0 + 3bc072d6: 4601 li a2,0 + 3bc072d8: 00e6ea63 bltu a3,a4,3bc072ec + 3bc072dc: 40e68633 sub a2,a3,a4 + 3bc072e0: 00c43733 sltu a4,s0,a2 + 3bc072e4: 00174713 xori a4,a4,1 + 3bc072e8: 40e4160b mveqz a2,s0,a4 + 3bc072ec: 8f91 sub a5,a5,a2 + 3bc072ee: 40c40733 sub a4,s0,a2 + 3bc072f2: 95be add a1,a1,a5 + 3bc072f4: 953a add a0,a0,a4 + 3bc072f6: f84f90ef jal ra,3bc00a7a + 3bc072fa: 058d3783 ld a5,88(s10) + 3bc072fe: 06fd3023 sd a5,96(s10) + 3bc07302: 080d3783 ld a5,128(s10) + 3bc07306: 943e add s0,s0,a5 + 3bc07308: 068d3423 sd s0,104(s10) + 3bc0730c: 67e2 ld a5,24(sp) + 3bc0730e: 41590933 sub s2,s2,s5 + 3bc07312: 8526 mv a0,s1 + 3bc07314: 40fc88b3 sub a7,s9,a5 + 3bc07318: 67c2 ld a5,16(sp) + 3bc0731a: 011db023 sd a7,0(s11) + 3bc0731e: 0127b023 sd s2,0(a5) + 3bc07322: a055 j 3bc073c6 + 3bc07324: 024d2783 lw a5,36(s10) + 3bc07328: 4739 li a4,14 + 3bc0732a: f6f762e3 bltu a4,a5,3bc0728e + 3bc0732e: 024d6783 lwu a5,36(s10) + 3bc07332: 00004717 auipc a4,0x4 + 3bc07336: 0fe70713 addi a4,a4,254 # 3bc0b430 + 3bc0733a: 44f7478b lrw a5,a4,a5,2 + 3bc0733e: 97ba add a5,a5,a4 + 3bc07340: 8782 jr a5 + 3bc07342: 41998633 sub a2,s3,s9 + 3bc07346: 47c9 li a5,18 + 3bc07348: 00c7fd63 bgeu a5,a2,3bc07362 + 3bc0734c: 85e6 mv a1,s9 + 3bc0734e: 856a mv a0,s10 + 3bc07350: cf9ff0ef jal ra,3bc07048 + 3bc07354: 57b1 li a5,-20 + 3bc07356: 06a7e863 bltu a5,a0,3bc073c6 + 3bc0735a: 00ac8433 add s0,s9,a0 + 3bc0735e: 8ca2 mv s9,s0 + 3bc07360: b73d j 3bc0728e + 3bc07362: 040d3423 sd zero,72(s10) + 3bc07366: 673c8d63 beq s9,s3,3bc079e0 + 3bc0736a: 479d li a5,7 + 3bc0736c: 04fd3823 sd a5,80(s10) + 3bc07370: 4785 li a5,1 + 3bc07372: 02fd2223 sw a5,36(s10) + 3bc07376: 048d3503 ld a0,72(s10) + 3bc0737a: 050d3403 ld s0,80(s10) + 3bc0737e: 41998633 sub a2,s3,s9 + 3bc07382: 85e6 mv a1,s9 + 3bc07384: 8c09 sub s0,s0,a0 + 3bc07386: 008637b3 sltu a5,a2,s0 + 3bc0738a: 0017c793 xori a5,a5,1 + 3bc0738e: 40f6140b mveqz s0,a2,a5 + 3bc07392: 8622 mv a2,s0 + 3bc07394: 955e add a0,a0,s7 + 3bc07396: ee4f90ef jal ra,3bc00a7a + 3bc0739a: 048d3783 ld a5,72(s10) + 3bc0739e: 050d3603 ld a2,80(s10) + 3bc073a2: 97a2 add a5,a5,s0 + 3bc073a4: 04fd3423 sd a5,72(s10) + 3bc073a8: 9466 add s0,s0,s9 + 3bc073aa: 00c7f763 bgeu a5,a2,3bc073b8 + 3bc073ae: 0611 addi a2,a2,4 + 3bc073b0: 40f604b3 sub s1,a2,a5 + 3bc073b4: 4a01 li s4,0 + 3bc073b6: b765 j 3bc0735e + 3bc073b8: 85de mv a1,s7 + 3bc073ba: 856a mv a0,s10 + 3bc073bc: c8dff0ef jal ra,3bc07048 + 3bc073c0: 57b1 li a5,-20 + 3bc073c2: f8a7fee3 bgeu a5,a0,3bc0735e + 3bc073c6: 70ea ld ra,184(sp) + 3bc073c8: 744a ld s0,176(sp) + 3bc073ca: 74aa ld s1,168(sp) + 3bc073cc: 790a ld s2,160(sp) + 3bc073ce: 69ea ld s3,152(sp) + 3bc073d0: 6a4a ld s4,144(sp) + 3bc073d2: 6aaa ld s5,136(sp) + 3bc073d4: 6b0a ld s6,128(sp) + 3bc073d6: 7be6 ld s7,120(sp) + 3bc073d8: 7c46 ld s8,112(sp) + 3bc073da: 7ca6 ld s9,104(sp) + 3bc073dc: 7d06 ld s10,96(sp) + 3bc073de: 6de6 ld s11,88(sp) + 3bc073e0: 6129 addi sp,sp,192 + 3bc073e2: 8082 ret + 3bc073e4: 008d2783 lw a5,8(s10) + 3bc073e8: c789 beqz a5,3bc073f2 + 3bc073ea: 4581 li a1,0 + 3bc073ec: 8562 mv a0,s8 + 3bc073ee: 34d000ef jal ra,3bc07f3a + 3bc073f2: 004d2403 lw s0,4(s10) + 3bc073f6: 030d3783 ld a5,48(s10) + 3bc073fa: 00143413 seqz s0,s0 + 3bc073fe: 0446 slli s0,s0,0x11 + 3bc07400: 943e add s0,s0,a5 + 3bc07402: 038d3783 ld a5,56(s10) + 3bc07406: 0287fe63 bgeu a5,s0,3bc07442 + 3bc0740a: 040d3503 ld a0,64(s10) + 3bc0740e: 020d3c23 sd zero,56(s10) + 3bc07412: a0cfa0ef jal ra,3bc0161e + 3bc07416: 030d3503 ld a0,48(s10) + 3bc0741a: 0511 addi a0,a0,4 + 3bc0741c: 9d4fa0ef jal ra,3bc015f0 + 3bc07420: 04ad3023 sd a0,64(s10) + 3bc07424: e119 bnez a0,3bc0742a + 3bc07426: 555d li a0,-9 + 3bc07428: bf79 j 3bc073c6 + 3bc0742a: 058d3503 ld a0,88(s10) + 3bc0742e: 9f0fa0ef jal ra,3bc0161e + 3bc07432: 8522 mv a0,s0 + 3bc07434: 9bcfa0ef jal ra,3bc015f0 + 3bc07438: 04ad3c23 sd a0,88(s10) + 3bc0743c: d56d beqz a0,3bc07426 + 3bc0743e: 028d3c23 sd s0,56(s10) + 3bc07442: 058d3783 ld a5,88(s10) + 3bc07446: 040d3423 sd zero,72(s10) + 3bc0744a: 040d3823 sd zero,80(s10) + 3bc0744e: 06fd3823 sd a5,112(s10) + 3bc07452: 478d li a5,3 + 3bc07454: 080d3023 sd zero,128(s10) + 3bc07458: 060d3c23 sd zero,120(s10) + 3bc0745c: 02fd2223 sw a5,36(s10) + 3bc07460: 419987b3 sub a5,s3,s9 + 3bc07464: 470d li a4,3 + 3bc07466: 00f77b63 bgeu a4,a5,3bc0747c + 3bc0746a: 024d2703 lw a4,36(s10) + 3bc0746e: 4791 li a5,4 + 3bc07470: 004c8413 addi s0,s9,4 + 3bc07474: 04f71e63 bne a4,a5,3bc074d0 + 3bc07478: 8ca2 mv s9,s0 + 3bc0747a: a031 j 3bc07486 + 3bc0747c: 4791 li a5,4 + 3bc0747e: 040d3423 sd zero,72(s10) + 3bc07482: 02fd2223 sw a5,36(s10) + 3bc07486: 048d3683 ld a3,72(s10) + 3bc0748a: 4711 li a4,4 + 3bc0748c: 040d3503 ld a0,64(s10) + 3bc07490: 40d705b3 sub a1,a4,a3 + 3bc07494: 41998633 sub a2,s3,s9 + 3bc07498: 00c5b7b3 sltu a5,a1,a2 + 3bc0749c: 0017c793 xori a5,a5,1 + 3bc074a0: 40f5960b mveqz a2,a1,a5 + 3bc074a4: 9536 add a0,a0,a3 + 3bc074a6: 85e6 mv a1,s9 + 3bc074a8: f832 sd a2,48(sp) + 3bc074aa: dd0f90ef jal ra,3bc00a7a + 3bc074ae: 048d3783 ld a5,72(s10) + 3bc074b2: 7642 ld a2,48(sp) + 3bc074b4: 00cc8433 add s0,s9,a2 + 3bc074b8: 963e add a2,a2,a5 + 3bc074ba: 04cd3423 sd a2,72(s10) + 3bc074be: 478d li a5,3 + 3bc074c0: 00c7e663 bltu a5,a2,3bc074cc + 3bc074c4: 4711 li a4,4 + 3bc074c6: 40c704b3 sub s1,a4,a2 + 3bc074ca: b5ed j 3bc073b4 + 3bc074cc: 040d3c83 ld s9,64(s10) + 3bc074d0: 8566 mv a0,s9 + 3bc074d2: f8ffe0ef jal ra,3bc06460 + 3bc074d6: 2501 sext.w a0,a0 + 3bc074d8: 47a9 li a5,10 + 3bc074da: c50d beqz a0,3bc07504 + 3bc074dc: 030d3683 ld a3,48(s10) + 3bc074e0: 7805378b extu a5,a0,30,0 + 3bc074e4: 7c07b70b extu a4,a5,31,0 + 3bc074e8: 4ef6ee63 bltu a3,a5,3bc079e4 + 3bc074ec: 01cd2783 lw a5,28(s10) + 3bc074f0: 00055d63 bgez a0,3bc0750a + 3bc074f4: 04ed3823 sd a4,80(s10) + 3bc074f8: c789 beqz a5,3bc07502 + 3bc074fa: 7502 ld a0,32(sp) + 3bc074fc: 4581 li a1,0 + 3bc074fe: 23d000ef jal ra,3bc07f3a + 3bc07502: 4795 li a5,5 + 3bc07504: 02fd2223 sw a5,36(s10) + 3bc07508: bd99 j 3bc0735e + 3bc0750a: 02079693 slli a3,a5,0x20 + 3bc0750e: 01e6d793 srli a5,a3,0x1e + 3bc07512: 97ba add a5,a5,a4 + 3bc07514: 471d li a4,7 + 3bc07516: 04fd3823 sd a5,80(s10) + 3bc0751a: 02ed2223 sw a4,36(s10) + 3bc0751e: 01690463 beq s2,s6,3bc07526 + 3bc07522: e3341ee3 bne s0,s3,3bc0735e + 3bc07526: 00478493 addi s1,a5,4 + 3bc0752a: b569 j 3bc073b4 + 3bc0752c: 4601 li a2,0 + 3bc0752e: 06090e63 beqz s2,3bc075aa + 3bc07532: 41998733 sub a4,s3,s9 + 3bc07536: 412b0633 sub a2,s6,s2 + 3bc0753a: 00c737b3 sltu a5,a4,a2 + 3bc0753e: 0017c793 xori a5,a5,1 + 3bc07542: 40f7160b mveqz a2,a4,a5 + 3bc07546: 050d3703 ld a4,80(s10) + 3bc0754a: 85e6 mv a1,s9 + 3bc0754c: 854a mv a0,s2 + 3bc0754e: 00c737b3 sltu a5,a4,a2 + 3bc07552: 0017c793 xori a5,a5,1 + 3bc07556: 40f7160b mveqz a2,a4,a5 + 3bc0755a: f832 sd a2,48(sp) + 3bc0755c: d1ef90ef jal ra,3bc00a7a + 3bc07560: 01cd2783 lw a5,28(s10) + 3bc07564: 7642 ld a2,48(sp) + 3bc07566: c791 beqz a5,3bc07572 + 3bc07568: 7502 ld a0,32(sp) + 3bc0756a: 85e6 mv a1,s9 + 3bc0756c: 225000ef jal ra,3bc07f90 + 3bc07570: 7642 ld a2,48(sp) + 3bc07572: 008d2783 lw a5,8(s10) + 3bc07576: c799 beqz a5,3bc07584 + 3bc07578: 85e6 mv a1,s9 + 3bc0757a: 8562 mv a0,s8 + 3bc0757c: f832 sd a2,48(sp) + 3bc0757e: 213000ef jal ra,3bc07f90 + 3bc07582: 7642 ld a2,48(sp) + 3bc07584: 010d3783 ld a5,16(s10) + 3bc07588: c791 beqz a5,3bc07594 + 3bc0758a: 028d3783 ld a5,40(s10) + 3bc0758e: 8f91 sub a5,a5,a2 + 3bc07590: 02fd3423 sd a5,40(s10) + 3bc07594: 004d2783 lw a5,4(s10) + 3bc07598: eb89 bnez a5,3bc075aa + 3bc0759a: 4701 li a4,0 + 3bc0759c: 86d6 mv a3,s5 + 3bc0759e: 85ca mv a1,s2 + 3bc075a0: 856a mv a0,s10 + 3bc075a2: f832 sd a2,48(sp) + 3bc075a4: 956ff0ef jal ra,3bc066fa + 3bc075a8: 7642 ld a2,48(sp) + 3bc075aa: 050d3783 ld a5,80(s10) + 3bc075ae: 01cd2703 lw a4,28(s10) + 3bc075b2: 00cc8433 add s0,s9,a2 + 3bc075b6: 9932 add s2,s2,a2 + 3bc075b8: 00c79863 bne a5,a2,3bc075c8 + 3bc075bc: 28070d63 beqz a4,3bc07856 + 3bc075c0: 040d3423 sd zero,72(s10) + 3bc075c4: 4799 li a5,6 + 3bc075c6: bf3d j 3bc07504 + 3bc075c8: 40c78633 sub a2,a5,a2 + 3bc075cc: 04cd3823 sd a2,80(s10) + 3bc075d0: 00e03733 snez a4,a4 + 3bc075d4: 0611 addi a2,a2,4 + 3bc075d6: 04e6148b addsl s1,a2,a4,2 + 3bc075da: bbe9 j 3bc073b4 + 3bc075dc: 419987b3 sub a5,s3,s9 + 3bc075e0: 470d li a4,3 + 3bc075e2: 048d3503 ld a0,72(s10) + 3bc075e6: 02f75363 bge a4,a5,3bc0760c + 3bc075ea: e10d bnez a0,3bc0760c + 3bc075ec: 004c8413 addi s0,s9,4 + 3bc075f0: 8766 mv a4,s9 + 3bc075f2: 853a mv a0,a4 + 3bc075f4: e6dfe0ef jal ra,3bc06460 + 3bc075f8: 00050c9b sext.w s9,a0 + 3bc075fc: 7502 ld a0,32(sp) + 3bc075fe: 365000ef jal ra,3bc08162 + 3bc07602: 2501 sext.w a0,a0 + 3bc07604: 24ac8963 beq s9,a0,3bc07856 + 3bc07608: 5565 li a0,-7 + 3bc0760a: bb75 j 3bc073c6 + 3bc0760c: 4411 li s0,4 + 3bc0760e: 8c09 sub s0,s0,a0 + 3bc07610: 0087b733 sltu a4,a5,s0 + 3bc07614: 00174713 xori a4,a4,1 + 3bc07618: 40e7940b mveqz s0,a5,a4 + 3bc0761c: 8622 mv a2,s0 + 3bc0761e: 85e6 mv a1,s9 + 3bc07620: 955e add a0,a0,s7 + 3bc07622: f85e sd s7,48(sp) + 3bc07624: c56f90ef jal ra,3bc00a7a + 3bc07628: 048d3783 ld a5,72(s10) + 3bc0762c: 468d li a3,3 + 3bc0762e: 7742 ld a4,48(sp) + 3bc07630: 97a2 add a5,a5,s0 + 3bc07632: 04fd3423 sd a5,72(s10) + 3bc07636: 9466 add s0,s0,s9 + 3bc07638: d6f6fee3 bgeu a3,a5,3bc073b4 + 3bc0763c: bf5d j 3bc075f2 + 3bc0763e: 050d3403 ld s0,80(s10) + 3bc07642: 419987b3 sub a5,s3,s9 + 3bc07646: 0087f963 bgeu a5,s0,3bc07658 + 3bc0764a: 47a1 li a5,8 + 3bc0764c: 040d3423 sd zero,72(s10) + 3bc07650: 02fd2223 sw a5,36(s10) + 3bc07654: 8466 mv s0,s9 + 3bc07656: b321 j 3bc0735e + 3bc07658: 9466 add s0,s0,s9 + 3bc0765a: 01cd2783 lw a5,28(s10) + 3bc0765e: 16079563 bnez a5,3bc077c8 + 3bc07662: 030d3683 ld a3,48(s10) + 3bc07666: 412b0633 sub a2,s6,s2 + 3bc0766a: 060d3703 ld a4,96(s10) + 3bc0766e: 068d3783 ld a5,104(s10) + 3bc07672: 18d67263 bgeu a2,a3,3bc077f6 + 3bc07676: 004d2683 lw a3,4(s10) + 3bc0767a: ea95 bnez a3,3bc076ae + 3bc0767c: 058d3683 ld a3,88(s10) + 3bc07680: 1cd71d63 bne a4,a3,3bc0785a + 3bc07684: 000206b7 lui a3,0x20 + 3bc07688: 00f6fc63 bgeu a3,a5,3bc076a0 + 3bc0768c: 75c1 lui a1,0xffff0 + 3bc0768e: 95be add a1,a1,a5 + 3bc07690: 6641 lui a2,0x10 + 3bc07692: 95ba add a1,a1,a4 + 3bc07694: 853a mv a0,a4 + 3bc07696: be4f90ef jal ra,3bc00a7a + 3bc0769a: 67c1 lui a5,0x10 + 3bc0769c: 06fd3423 sd a5,104(s10) + 3bc076a0: 058d3783 ld a5,88(s10) + 3bc076a4: 068d3703 ld a4,104(s10) + 3bc076a8: 97ba add a5,a5,a4 + 3bc076aa: 06fd3823 sd a5,112(s10) + 3bc076ae: 060d3703 ld a4,96(s10) + 3bc076b2: 068d3783 ld a5,104(s10) + 3bc076b6: cb09 beqz a4,3bc076c8 + 3bc076b8: 400006b7 lui a3,0x40000 + 3bc076bc: 00f6f663 bgeu a3,a5,3bc076c8 + 3bc076c0: 76c1 lui a3,0xffff0 + 3bc076c2: 97b6 add a5,a5,a3 + 3bc076c4: 973e add a4,a4,a5 + 3bc076c6: 67c1 lui a5,0x10 + 3bc076c8: 030d2683 lw a3,48(s10) + 3bc076cc: 050d2603 lw a2,80(s10) + 3bc076d0: 070d3583 ld a1,112(s10) + 3bc076d4: 8566 mv a0,s9 + 3bc076d6: 2781 sext.w a5,a5 + 3bc076d8: 921ff0ef jal ra,3bc06ff8 + 3bc076dc: 8caa mv s9,a0 + 3bc076de: 30054763 bltz a0,3bc079ec + 3bc076e2: 008d2783 lw a5,8(s10) + 3bc076e6: c799 beqz a5,3bc076f4 + 3bc076e8: 070d3583 ld a1,112(s10) + 3bc076ec: 862a mv a2,a0 + 3bc076ee: 8562 mv a0,s8 + 3bc076f0: 0a1000ef jal ra,3bc07f90 + 3bc076f4: 010d3783 ld a5,16(s10) + 3bc076f8: c799 beqz a5,3bc07706 + 3bc076fa: 028d3783 ld a5,40(s10) + 3bc076fe: 419787b3 sub a5,a5,s9 + 3bc07702: 02fd3423 sd a5,40(s10) + 3bc07706: 47a5 li a5,9 + 3bc07708: 079d3c23 sd s9,120(s10) + 3bc0770c: 080d3023 sd zero,128(s10) + 3bc07710: 02fd2223 sw a5,36(s10) + 3bc07714: 04090763 beqz s2,3bc07762 + 3bc07718: 080d3703 ld a4,128(s10) + 3bc0771c: 078d3603 ld a2,120(s10) + 3bc07720: 412b06b3 sub a3,s6,s2 + 3bc07724: 070d3583 ld a1,112(s10) + 3bc07728: 8e19 sub a2,a2,a4 + 3bc0772a: 00c6b7b3 sltu a5,a3,a2 + 3bc0772e: 0017c793 xori a5,a5,1 + 3bc07732: 42f6168b mvnez a3,a2,a5 + 3bc07736: 8636 mv a2,a3 + 3bc07738: 95ba add a1,a1,a4 + 3bc0773a: 854a mv a0,s2 + 3bc0773c: 8cb6 mv s9,a3 + 3bc0773e: b3cf90ef jal ra,3bc00a7a + 3bc07742: 004d2783 lw a5,4(s10) + 3bc07746: eb81 bnez a5,3bc07756 + 3bc07748: 4705 li a4,1 + 3bc0774a: 86d6 mv a3,s5 + 3bc0774c: 8666 mv a2,s9 + 3bc0774e: 85ca mv a1,s2 + 3bc07750: 856a mv a0,s10 + 3bc07752: fa9fe0ef jal ra,3bc066fa + 3bc07756: 080d3783 ld a5,128(s10) + 3bc0775a: 9966 add s2,s2,s9 + 3bc0775c: 97e6 add a5,a5,s9 + 3bc0775e: 08fd3023 sd a5,128(s10) + 3bc07762: 080d3703 ld a4,128(s10) + 3bc07766: 078d3783 ld a5,120(s10) + 3bc0776a: 0ef70663 beq a4,a5,3bc07856 + 3bc0776e: 4491 li s1,4 + 3bc07770: b191 j 3bc073b4 + 3bc07772: 048d3703 ld a4,72(s10) + 3bc07776: 050d3403 ld s0,80(s10) + 3bc0777a: 41998633 sub a2,s3,s9 + 3bc0777e: 040d3503 ld a0,64(s10) + 3bc07782: 8c19 sub s0,s0,a4 + 3bc07784: 008637b3 sltu a5,a2,s0 + 3bc07788: 0017c793 xori a5,a5,1 + 3bc0778c: 40f6140b mveqz s0,a2,a5 + 3bc07790: 8622 mv a2,s0 + 3bc07792: 953a add a0,a0,a4 + 3bc07794: 85e6 mv a1,s9 + 3bc07796: ae4f90ef jal ra,3bc00a7a + 3bc0779a: 048d3783 ld a5,72(s10) + 3bc0779e: 00f40733 add a4,s0,a5 + 3bc077a2: 050d3783 ld a5,80(s10) + 3bc077a6: 04ed3423 sd a4,72(s10) + 3bc077aa: 9466 add s0,s0,s9 + 3bc077ac: 00f77b63 bgeu a4,a5,3bc077c2 + 3bc077b0: 01cd2483 lw s1,28(s10) + 3bc077b4: 0791 addi a5,a5,4 + 3bc077b6: 8f99 sub a5,a5,a4 + 3bc077b8: 009034b3 snez s1,s1 + 3bc077bc: 0497948b addsl s1,a5,s1,2 + 3bc077c0: bed5 j 3bc073b4 + 3bc077c2: 040d3c83 ld s9,64(s10) + 3bc077c6: bd51 j 3bc0765a + 3bc077c8: 050d3583 ld a1,80(s10) + 3bc077cc: 15f1 addi a1,a1,-4 + 3bc077ce: 04bd3823 sd a1,80(s10) + 3bc077d2: 00bc8533 add a0,s9,a1 + 3bc077d6: fc2e sd a1,56(sp) + 3bc077d8: c89fe0ef jal ra,3bc06460 + 3bc077dc: 75e2 ld a1,56(sp) + 3bc077de: 0005079b sext.w a5,a0 + 3bc077e2: 4601 li a2,0 + 3bc077e4: 8566 mv a0,s9 + 3bc077e6: f83e sd a5,48(sp) + 3bc077e8: 58c000ef jal ra,3bc07d74 + 3bc077ec: 77c2 ld a5,48(sp) + 3bc077ee: 2501 sext.w a0,a0 + 3bc077f0: e6a789e3 beq a5,a0,3bc07662 + 3bc077f4: bd11 j 3bc07608 + 3bc077f6: cb09 beqz a4,3bc07808 + 3bc077f8: 40000637 lui a2,0x40000 + 3bc077fc: 00f67663 bgeu a2,a5,3bc07808 + 3bc07800: 75c1 lui a1,0xffff0 + 3bc07802: 97ae add a5,a5,a1 + 3bc07804: 973e add a4,a4,a5 + 3bc07806: 67c1 lui a5,0x10 + 3bc07808: 050d2603 lw a2,80(s10) + 3bc0780c: 8566 mv a0,s9 + 3bc0780e: 2781 sext.w a5,a5 + 3bc07810: 2681 sext.w a3,a3 + 3bc07812: 85ca mv a1,s2 + 3bc07814: fe4ff0ef jal ra,3bc06ff8 + 3bc07818: 8caa mv s9,a0 + 3bc0781a: 1c054763 bltz a0,3bc079e8 + 3bc0781e: 008d2783 lw a5,8(s10) + 3bc07822: c791 beqz a5,3bc0782e + 3bc07824: 862a mv a2,a0 + 3bc07826: 85ca mv a1,s2 + 3bc07828: 8562 mv a0,s8 + 3bc0782a: 766000ef jal ra,3bc07f90 + 3bc0782e: 010d3783 ld a5,16(s10) + 3bc07832: c799 beqz a5,3bc07840 + 3bc07834: 028d3783 ld a5,40(s10) + 3bc07838: 419787b3 sub a5,a5,s9 + 3bc0783c: 02fd3423 sd a5,40(s10) + 3bc07840: 004d2783 lw a5,4(s10) + 3bc07844: eb81 bnez a5,3bc07854 + 3bc07846: 4701 li a4,0 + 3bc07848: 86d6 mv a3,s5 + 3bc0784a: 8666 mv a2,s9 + 3bc0784c: 85ca mv a1,s2 + 3bc0784e: 856a mv a0,s10 + 3bc07850: eabfe0ef jal ra,3bc066fa + 3bc07854: 9966 add s2,s2,s9 + 3bc07856: 478d li a5,3 + 3bc07858: b175 j 3bc07504 + 3bc0785a: 6741 lui a4,0x10 + 3bc0785c: 00f77363 bgeu a4,a5,3bc07862 + 3bc07860: 67c1 lui a5,0x10 + 3bc07862: 97b6 add a5,a5,a3 + 3bc07864: b599 j 3bc076aa + 3bc07866: 8466 mv s0,s9 + 3bc07868: b575 j 3bc07714 + 3bc0786a: 028d3483 ld s1,40(s10) + 3bc0786e: 18049163 bnez s1,3bc079f0 + 3bc07872: 008d2a03 lw s4,8(s10) + 3bc07876: 000a1963 bnez s4,3bc07888 + 3bc0787a: 020d2223 sw zero,36(s10) + 3bc0787e: 060d3023 sd zero,96(s10) + 3bc07882: 060d3423 sd zero,104(s10) + 3bc07886: b3f9 j 3bc07654 + 3bc07888: 419987b3 sub a5,s3,s9 + 3bc0788c: 470d li a4,3 + 3bc0788e: 04f74a63 blt a4,a5,3bc078e2 + 3bc07892: 47ad li a5,11 + 3bc07894: 040d3423 sd zero,72(s10) + 3bc07898: 02fd2223 sw a5,36(s10) + 3bc0789c: 048d3703 ld a4,72(s10) + 3bc078a0: 4491 li s1,4 + 3bc078a2: 41998a33 sub s4,s3,s9 + 3bc078a6: 40e48633 sub a2,s1,a4 + 3bc078aa: 014637b3 sltu a5,a2,s4 + 3bc078ae: 040d3503 ld a0,64(s10) + 3bc078b2: 0017c793 xori a5,a5,1 + 3bc078b6: 40f61a0b mveqz s4,a2,a5 + 3bc078ba: 8652 mv a2,s4 + 3bc078bc: 85e6 mv a1,s9 + 3bc078be: 953a add a0,a0,a4 + 3bc078c0: 9baf90ef jal ra,3bc00a7a + 3bc078c4: 048d3603 ld a2,72(s10) + 3bc078c8: 014c8433 add s0,s9,s4 + 3bc078cc: 478d li a5,3 + 3bc078ce: 9a32 add s4,s4,a2 + 3bc078d0: 054d3423 sd s4,72(s10) + 3bc078d4: 414484b3 sub s1,s1,s4 + 3bc078d8: ad47fee3 bgeu a5,s4,3bc073b4 + 3bc078dc: 040d3c83 ld s9,64(s10) + 3bc078e0: a019 j 3bc078e6 + 3bc078e2: 004c8413 addi s0,s9,4 + 3bc078e6: 8566 mv a0,s9 + 3bc078e8: b79fe0ef jal ra,3bc06460 + 3bc078ec: 0005049b sext.w s1,a0 + 3bc078f0: 8562 mv a0,s8 + 3bc078f2: 071000ef jal ra,3bc08162 + 3bc078f6: 2501 sext.w a0,a0 + 3bc078f8: 0ea49e63 bne s1,a0,3bc079f4 + 3bc078fc: 020d2223 sw zero,36(s10) + 3bc07900: 060d3023 sd zero,96(s10) + 3bc07904: 060d3423 sd zero,104(s10) + 3bc07908: 4481 li s1,0 + 3bc0790a: b46d j 3bc073b4 + 3bc0790c: 419987b3 sub a5,s3,s9 + 3bc07910: 470d li a4,3 + 3bc07912: 004c8413 addi s0,s9,4 + 3bc07916: 04f74d63 blt a4,a5,3bc07970 + 3bc0791a: 4791 li a5,4 + 3bc0791c: 04fd3423 sd a5,72(s10) + 3bc07920: 47a1 li a5,8 + 3bc07922: 04fd3823 sd a5,80(s10) + 3bc07926: 47b5 li a5,13 + 3bc07928: 02fd2223 sw a5,36(s10) + 3bc0792c: 048d3503 ld a0,72(s10) + 3bc07930: 050d3603 ld a2,80(s10) + 3bc07934: 41998733 sub a4,s3,s9 + 3bc07938: 85e6 mv a1,s9 + 3bc0793a: 8e09 sub a2,a2,a0 + 3bc0793c: 00c737b3 sltu a5,a4,a2 + 3bc07940: 0017c793 xori a5,a5,1 + 3bc07944: 40f7160b mveqz a2,a4,a5 + 3bc07948: 955e add a0,a0,s7 + 3bc0794a: f832 sd a2,48(sp) + 3bc0794c: 92ef90ef jal ra,3bc00a7a + 3bc07950: 048d3783 ld a5,72(s10) + 3bc07954: 7642 ld a2,48(sp) + 3bc07956: 00cc8433 add s0,s9,a2 + 3bc0795a: 963e add a2,a2,a5 + 3bc0795c: 050d3783 ld a5,80(s10) + 3bc07960: 04cd3423 sd a2,72(s10) + 3bc07964: 00f67563 bgeu a2,a5,3bc0796e + 3bc07968: 40c784b3 sub s1,a5,a2 + 3bc0796c: b4a1 j 3bc073b4 + 3bc0796e: 7ca2 ld s9,40(sp) + 3bc07970: 8566 mv a0,s9 + 3bc07972: aeffe0ef jal ra,3bc06460 + 3bc07976: 7c05350b extu a0,a0,31,0 + 3bc0797a: 00ad3823 sd a0,16(s10) + 3bc0797e: 04ad3823 sd a0,80(s10) + 3bc07982: 47b9 li a5,14 + 3bc07984: b641 j 3bc07504 + 3bc07986: 050d3483 ld s1,80(s10) + 3bc0798a: 41998633 sub a2,s3,s9 + 3bc0798e: 4a01 li s4,0 + 3bc07990: 00c4b7b3 sltu a5,s1,a2 + 3bc07994: 0017c793 xori a5,a5,1 + 3bc07998: 40f4960b mveqz a2,s1,a5 + 3bc0799c: 8c91 sub s1,s1,a2 + 3bc0799e: 049d3823 sd s1,80(s10) + 3bc079a2: 00cc8433 add s0,s9,a2 + 3bc079a6: 9a049ce3 bnez s1,3bc0735e + 3bc079aa: 020d2223 sw zero,36(s10) + 3bc079ae: 060d3023 sd zero,96(s10) + 3bc079b2: 060d3423 sd zero,104(s10) + 3bc079b6: b265 j 3bc0735e + 3bc079b8: 6741 lui a4,0x10 + 3bc079ba: 843e mv s0,a5 + 3bc079bc: 00f77363 bgeu a4,a5,3bc079c2 + 3bc079c0: 6441 lui s0,0x10 + 3bc079c2: 8f81 sub a5,a5,s0 + 3bc079c4: 95be add a1,a1,a5 + 3bc079c6: 8622 mv a2,s0 + 3bc079c8: 8b2f90ef jal ra,3bc00a7a + 3bc079cc: 058d3783 ld a5,88(s10) + 3bc079d0: 068d3423 sd s0,104(s10) + 3bc079d4: 06fd3023 sd a5,96(s10) + 3bc079d8: 97a2 add a5,a5,s0 + 3bc079da: 06fd3823 sd a5,112(s10) + 3bc079de: b23d j 3bc0730c + 3bc079e0: 451d li a0,7 + 3bc079e2: b2d5 j 3bc073c6 + 3bc079e4: 5579 li a0,-2 + 3bc079e6: b2c5 j 3bc073c6 + 3bc079e8: 557d li a0,-1 + 3bc079ea: baf1 j 3bc073c6 + 3bc079ec: 5541 li a0,-16 + 3bc079ee: bae1 j 3bc073c6 + 3bc079f0: 5549 li a0,-14 + 3bc079f2: bad1 j 3bc073c6 + 3bc079f4: 5539 li a0,-18 + 3bc079f6: bac1 j 3bc073c6 + +000000003bc079f8 : + 3bc079f8: 00f5579b srliw a5,a0,0xf + 3bc079fc: 8d3d xor a0,a0,a5 + 3bc079fe: 85ebd7b7 lui a5,0x85ebd + 3bc07a02: a777879b addiw a5,a5,-1417 + 3bc07a06: 02a7853b mulw a0,a5,a0 + 3bc07a0a: 00d5579b srliw a5,a0,0xd + 3bc07a0e: 8fa9 xor a5,a5,a0 + 3bc07a10: c2b2b537 lui a0,0xc2b2b + 3bc07a14: e3d5051b addiw a0,a0,-451 + 3bc07a18: 02a787bb mulw a5,a5,a0 + 3bc07a1c: 0107d51b srliw a0,a5,0x10 + 3bc07a20: 8d3d xor a0,a0,a5 + 3bc07a22: 8082 ret + +000000003bc07a24 : + 3bc07a24: 1101 addi sp,sp,-32 + 3bc07a26: 85aa mv a1,a0 + 3bc07a28: 4611 li a2,4 + 3bc07a2a: 0068 addi a0,sp,12 + 3bc07a2c: ec06 sd ra,24(sp) + 3bc07a2e: 84cf90ef jal ra,3bc00a7a + 3bc07a32: 60e2 ld ra,24(sp) + 3bc07a34: 4532 lw a0,12(sp) + 3bc07a36: 6105 addi sp,sp,32 + 3bc07a38: 8082 ret + +000000003bc07a3a : + 3bc07a3a: 1101 addi sp,sp,-32 + 3bc07a3c: 8a3d andi a2,a2,15 + 3bc07a3e: e822 sd s0,16(sp) + 3bc07a40: ec06 sd ra,24(sp) + 3bc07a42: e426 sd s1,8(sp) + 3bc07a44: e04a sd s2,0(sp) + 3bc07a46: 167d addi a2,a2,-1 + 3bc07a48: 47b9 li a5,14 + 3bc07a4a: 842a mv s0,a0 + 3bc07a4c: 30c7ec63 bltu a5,a2,3bc07d64 + 3bc07a50: 00004717 auipc a4,0x4 + 3bc07a54: a8070713 addi a4,a4,-1408 # 3bc0b4d0 + 3bc07a58: 44c7478b lrw a5,a4,a2,2 + 3bc07a5c: 84ae mv s1,a1 + 3bc07a5e: 8936 mv s2,a3 + 3bc07a60: 97ba add a5,a5,a4 + 3bc07a62: 8782 jr a5 + 3bc07a64: 4785 li a5,1 + 3bc07a66: 08f69a63 bne a3,a5,3bc07afa + 3bc07a6a: 852e mv a0,a1 + 3bc07a6c: fb9ff0ef jal ra,3bc07a24 + 3bc07a70: 0005079b sext.w a5,a0 + 3bc07a74: c2b2b737 lui a4,0xc2b2b + 3bc07a78: e3d7071b addiw a4,a4,-451 + 3bc07a7c: 24f7140b mulaw s0,a4,a5 + 3bc07a80: 27d4f7b7 lui a5,0x27d4f + 3bc07a84: b2f7879b addiw a5,a5,-1233 + 3bc07a88: 0491 addi s1,s1,4 + 3bc07a8a: 14f4140b srriw s0,s0,15 + 3bc07a8e: 02f4043b mulw s0,s0,a5 + 3bc07a92: 4785 li a5,1 + 3bc07a94: 06f91563 bne s2,a5,3bc07afe + 3bc07a98: 8526 mv a0,s1 + 3bc07a9a: f8bff0ef jal ra,3bc07a24 + 3bc07a9e: 0005079b sext.w a5,a0 + 3bc07aa2: c2b2b737 lui a4,0xc2b2b + 3bc07aa6: e3d7071b addiw a4,a4,-451 + 3bc07aaa: 0491 addi s1,s1,4 + 3bc07aac: 24f7140b mulaw s0,a4,a5 + 3bc07ab0: 27d4f7b7 lui a5,0x27d4f + 3bc07ab4: b2f7879b addiw a5,a5,-1233 + 3bc07ab8: 14f4140b srriw s0,s0,15 + 3bc07abc: 02f4043b mulw s0,s0,a5 + 3bc07ac0: 4785 li a5,1 + 3bc07ac2: 04f91063 bne s2,a5,3bc07b02 + 3bc07ac6: 8526 mv a0,s1 + 3bc07ac8: f5dff0ef jal ra,3bc07a24 + 3bc07acc: 0005079b sext.w a5,a0 + 3bc07ad0: c2b2b737 lui a4,0xc2b2b + 3bc07ad4: e3d7071b addiw a4,a4,-451 + 3bc07ad8: 24f7140b mulaw s0,a4,a5 + 3bc07adc: 27d4f7b7 lui a5,0x27d4f + 3bc07ae0: b2f7879b addiw a5,a5,-1233 + 3bc07ae4: 14f4150b srriw a0,s0,15 + 3bc07ae8: 02a7853b mulw a0,a5,a0 + 3bc07aec: 6442 ld s0,16(sp) + 3bc07aee: 60e2 ld ra,24(sp) + 3bc07af0: 64a2 ld s1,8(sp) + 3bc07af2: 6902 ld s2,0(sp) + 3bc07af4: 6105 addi sp,sp,32 + 3bc07af6: f03ff06f j 3bc079f8 + 3bc07afa: 419c lw a5,0(a1) + 3bc07afc: bfa5 j 3bc07a74 + 3bc07afe: 409c lw a5,0(s1) + 3bc07b00: b74d j 3bc07aa2 + 3bc07b02: 409c lw a5,0(s1) + 3bc07b04: b7f1 j 3bc07ad0 + 3bc07b06: 4785 li a5,1 + 3bc07b08: 0af69263 bne a3,a5,3bc07bac + 3bc07b0c: 852e mv a0,a1 + 3bc07b0e: f17ff0ef jal ra,3bc07a24 + 3bc07b12: 0005079b sext.w a5,a0 + 3bc07b16: c2b2b737 lui a4,0xc2b2b + 3bc07b1a: e3d7071b addiw a4,a4,-451 + 3bc07b1e: 24f7140b mulaw s0,a4,a5 + 3bc07b22: 27d4f7b7 lui a5,0x27d4f + 3bc07b26: b2f7879b addiw a5,a5,-1233 + 3bc07b2a: 0491 addi s1,s1,4 + 3bc07b2c: 14f4140b srriw s0,s0,15 + 3bc07b30: 02f4043b mulw s0,s0,a5 + 3bc07b34: 4785 li a5,1 + 3bc07b36: 06f91d63 bne s2,a5,3bc07bb0 + 3bc07b3a: 8526 mv a0,s1 + 3bc07b3c: ee9ff0ef jal ra,3bc07a24 + 3bc07b40: 0005079b sext.w a5,a0 + 3bc07b44: c2b2b737 lui a4,0xc2b2b + 3bc07b48: e3d7071b addiw a4,a4,-451 + 3bc07b4c: 0491 addi s1,s1,4 + 3bc07b4e: 24f7140b mulaw s0,a4,a5 + 3bc07b52: 27d4f7b7 lui a5,0x27d4f + 3bc07b56: b2f7879b addiw a5,a5,-1233 + 3bc07b5a: 14f4140b srriw s0,s0,15 + 3bc07b5e: 02f4043b mulw s0,s0,a5 + 3bc07b62: 4785 li a5,1 + 3bc07b64: 04f91863 bne s2,a5,3bc07bb4 + 3bc07b68: 8526 mv a0,s1 + 3bc07b6a: ebbff0ef jal ra,3bc07a24 + 3bc07b6e: 0005079b sext.w a5,a0 + 3bc07b72: c2b2b737 lui a4,0xc2b2b + 3bc07b76: e3d7071b addiw a4,a4,-451 + 3bc07b7a: 16566537 lui a0,0x16566 + 3bc07b7e: 7b15051b addiw a0,a0,1969 + 3bc07b82: 24f7140b mulaw s0,a4,a5 + 3bc07b86: 0044c783 lbu a5,4(s1) + 3bc07b8a: 27d4f737 lui a4,0x27d4f + 3bc07b8e: b2f7071b addiw a4,a4,-1233 + 3bc07b92: 02a787bb mulw a5,a5,a0 + 3bc07b96: 14f4140b srriw s0,s0,15 + 3bc07b9a: 9e378537 lui a0,0x9e378 + 3bc07b9e: 9b15051b addiw a0,a0,-1615 + 3bc07ba2: 24e4178b mulaw a5,s0,a4 + 3bc07ba6: 1557978b srriw a5,a5,21 + 3bc07baa: bf3d j 3bc07ae8 + 3bc07bac: 419c lw a5,0(a1) + 3bc07bae: b7a5 j 3bc07b16 + 3bc07bb0: 409c lw a5,0(s1) + 3bc07bb2: bf49 j 3bc07b44 + 3bc07bb4: 409c lw a5,0(s1) + 3bc07bb6: bf75 j 3bc07b72 + 3bc07bb8: 4785 li a5,1 + 3bc07bba: 0af69a63 bne a3,a5,3bc07c6e + 3bc07bbe: 852e mv a0,a1 + 3bc07bc0: e65ff0ef jal ra,3bc07a24 + 3bc07bc4: 0005079b sext.w a5,a0 + 3bc07bc8: c2b2b737 lui a4,0xc2b2b + 3bc07bcc: e3d7071b addiw a4,a4,-451 + 3bc07bd0: 24f7140b mulaw s0,a4,a5 + 3bc07bd4: 27d4f7b7 lui a5,0x27d4f + 3bc07bd8: b2f7879b addiw a5,a5,-1233 + 3bc07bdc: 0491 addi s1,s1,4 + 3bc07bde: 14f4140b srriw s0,s0,15 + 3bc07be2: 02f4043b mulw s0,s0,a5 + 3bc07be6: 4785 li a5,1 + 3bc07be8: 08f91563 bne s2,a5,3bc07c72 + 3bc07bec: 8526 mv a0,s1 + 3bc07bee: e37ff0ef jal ra,3bc07a24 + 3bc07bf2: 0005079b sext.w a5,a0 + 3bc07bf6: c2b2b737 lui a4,0xc2b2b + 3bc07bfa: e3d7071b addiw a4,a4,-451 + 3bc07bfe: 0491 addi s1,s1,4 + 3bc07c00: 24f7140b mulaw s0,a4,a5 + 3bc07c04: 27d4f7b7 lui a5,0x27d4f + 3bc07c08: b2f7879b addiw a5,a5,-1233 + 3bc07c0c: 14f4140b srriw s0,s0,15 + 3bc07c10: 02f4043b mulw s0,s0,a5 + 3bc07c14: 4785 li a5,1 + 3bc07c16: 06f91063 bne s2,a5,3bc07c76 + 3bc07c1a: 8526 mv a0,s1 + 3bc07c1c: e09ff0ef jal ra,3bc07a24 + 3bc07c20: 0005079b sext.w a5,a0 + 3bc07c24: c2b2b737 lui a4,0xc2b2b + 3bc07c28: e3d7071b addiw a4,a4,-451 + 3bc07c2c: 9e378537 lui a0,0x9e378 + 3bc07c30: 9b15051b addiw a0,a0,-1615 + 3bc07c34: 24f7140b mulaw s0,a4,a5 + 3bc07c38: 0044c703 lbu a4,4(s1) + 3bc07c3c: 165667b7 lui a5,0x16566 + 3bc07c40: 7b17869b addiw a3,a5,1969 + 3bc07c44: 27d4f7b7 lui a5,0x27d4f + 3bc07c48: b2f7879b addiw a5,a5,-1233 + 3bc07c4c: 02d7073b mulw a4,a4,a3 + 3bc07c50: 14f4140b srriw s0,s0,15 + 3bc07c54: 24f4170b mulaw a4,s0,a5 + 3bc07c58: 0054c783 lbu a5,5(s1) + 3bc07c5c: 02d787bb mulw a5,a5,a3 + 3bc07c60: 1557170b srriw a4,a4,21 + 3bc07c64: 24a7178b mulaw a5,a4,a0 + 3bc07c68: 1557978b srriw a5,a5,21 + 3bc07c6c: bdb5 j 3bc07ae8 + 3bc07c6e: 419c lw a5,0(a1) + 3bc07c70: bfa1 j 3bc07bc8 + 3bc07c72: 409c lw a5,0(s1) + 3bc07c74: b749 j 3bc07bf6 + 3bc07c76: 409c lw a5,0(s1) + 3bc07c78: b775 j 3bc07c24 + 3bc07c7a: 4785 li a5,1 + 3bc07c7c: 0ef69663 bne a3,a5,3bc07d68 + 3bc07c80: 852e mv a0,a1 + 3bc07c82: da3ff0ef jal ra,3bc07a24 + 3bc07c86: 0005079b sext.w a5,a0 + 3bc07c8a: c2b2b737 lui a4,0xc2b2b + 3bc07c8e: e3d7071b addiw a4,a4,-451 + 3bc07c92: 24f7140b mulaw s0,a4,a5 + 3bc07c96: 27d4f7b7 lui a5,0x27d4f + 3bc07c9a: b2f7879b addiw a5,a5,-1233 + 3bc07c9e: 0491 addi s1,s1,4 + 3bc07ca0: 14f4140b srriw s0,s0,15 + 3bc07ca4: 02f4043b mulw s0,s0,a5 + 3bc07ca8: 4785 li a5,1 + 3bc07caa: 0cf91163 bne s2,a5,3bc07d6c + 3bc07cae: 8526 mv a0,s1 + 3bc07cb0: d75ff0ef jal ra,3bc07a24 + 3bc07cb4: 0005079b sext.w a5,a0 + 3bc07cb8: c2b2b737 lui a4,0xc2b2b + 3bc07cbc: e3d7071b addiw a4,a4,-451 + 3bc07cc0: 0491 addi s1,s1,4 + 3bc07cc2: 24f7140b mulaw s0,a4,a5 + 3bc07cc6: 27d4f7b7 lui a5,0x27d4f + 3bc07cca: b2f7879b addiw a5,a5,-1233 + 3bc07cce: 14f4140b srriw s0,s0,15 + 3bc07cd2: 02f4043b mulw s0,s0,a5 + 3bc07cd6: 4785 li a5,1 + 3bc07cd8: 08f91c63 bne s2,a5,3bc07d70 + 3bc07cdc: 8526 mv a0,s1 + 3bc07cde: d47ff0ef jal ra,3bc07a24 + 3bc07ce2: 0005079b sext.w a5,a0 + 3bc07ce6: c2b2b737 lui a4,0xc2b2b + 3bc07cea: e3d7071b addiw a4,a4,-451 + 3bc07cee: 0491 addi s1,s1,4 + 3bc07cf0: 24f7140b mulaw s0,a4,a5 + 3bc07cf4: 27d4f7b7 lui a5,0x27d4f + 3bc07cf8: b2f7879b addiw a5,a5,-1233 + 3bc07cfc: 14f4140b srriw s0,s0,15 + 3bc07d00: 02f4043b mulw s0,s0,a5 + 3bc07d04: 9814c70b lbuia a4,(s1),1,0 + 3bc07d08: 165667b7 lui a5,0x16566 + 3bc07d0c: 7b17879b addiw a5,a5,1969 + 3bc07d10: 24f7140b mulaw s0,a4,a5 + 3bc07d14: 9e3787b7 lui a5,0x9e378 + 3bc07d18: 9b17879b addiw a5,a5,-1615 + 3bc07d1c: 1554140b srriw s0,s0,21 + 3bc07d20: 02f4043b mulw s0,s0,a5 + 3bc07d24: 9814c70b lbuia a4,(s1),1,0 + 3bc07d28: 165667b7 lui a5,0x16566 + 3bc07d2c: 7b17879b addiw a5,a5,1969 + 3bc07d30: 24f7140b mulaw s0,a4,a5 + 3bc07d34: 9e3787b7 lui a5,0x9e378 + 3bc07d38: 9b17879b addiw a5,a5,-1615 + 3bc07d3c: 1554140b srriw s0,s0,21 + 3bc07d40: 02f4043b mulw s0,s0,a5 + 3bc07d44: 0004c703 lbu a4,0(s1) + 3bc07d48: 165667b7 lui a5,0x16566 + 3bc07d4c: 7b17879b addiw a5,a5,1969 + 3bc07d50: 24f7140b mulaw s0,a4,a5 + 3bc07d54: 9e3787b7 lui a5,0x9e378 + 3bc07d58: 9b17879b addiw a5,a5,-1615 + 3bc07d5c: 1554140b srriw s0,s0,21 + 3bc07d60: 02f4043b mulw s0,s0,a5 + 3bc07d64: 8522 mv a0,s0 + 3bc07d66: b359 j 3bc07aec + 3bc07d68: 419c lw a5,0(a1) + 3bc07d6a: b705 j 3bc07c8a + 3bc07d6c: 409c lw a5,0(s1) + 3bc07d6e: b7a9 j 3bc07cb8 + 3bc07d70: 409c lw a5,0(s1) + 3bc07d72: bf95 j 3bc07ce6 + +000000003bc07d74 : + 3bc07d74: 711d addi sp,sp,-96 + 3bc07d76: e8a2 sd s0,80(sp) + 3bc07d78: e0ca sd s2,64(sp) + 3bc07d7a: fc4e sd s3,56(sp) + 3bc07d7c: ec86 sd ra,88(sp) + 3bc07d7e: e4a6 sd s1,72(sp) + 3bc07d80: f852 sd s4,48(sp) + 3bc07d82: f456 sd s5,40(sp) + 3bc07d84: f05a sd s6,32(sp) + 3bc07d86: ec5e sd s7,24(sp) + 3bc07d88: e862 sd s8,16(sp) + 3bc07d8a: e466 sd s9,8(sp) + 3bc07d8c: 00357793 andi a5,a0,3 + 3bc07d90: 892a mv s2,a0 + 3bc07d92: 89ae mv s3,a1 + 3bc07d94: 8432 mv s0,a2 + 3bc07d96: eff1 bnez a5,3bc07e72 + 3bc07d98: 47bd li a5,15 + 3bc07d9a: 0cb7f663 bgeu a5,a1,3bc07e66 + 3bc07d9e: 242347b7 lui a5,0x24234 + 3bc07da2: ff158813 addi a6,a1,-15 # fffffffffffefff1 <__BL2_END__+0xffffffffc43dc7e1> + 3bc07da6: 4287879b addiw a5,a5,1064 + 3bc07daa: 982a add a6,a6,a0 + 3bc07dac: 9fb1 addw a5,a5,a2 + 3bc07dae: 61c88537 lui a0,0x61c88 + 3bc07db2: 85ebd637 lui a2,0x85ebd + 3bc07db6: a776061b addiw a2,a2,-1417 + 3bc07dba: 64f5051b addiw a0,a0,1615 + 3bc07dbe: 9e3785b7 lui a1,0x9e378 + 3bc07dc2: 0086073b addw a4,a2,s0 + 3bc07dc6: 9d21 addw a0,a0,s0 + 3bc07dc8: 86ca mv a3,s2 + 3bc07dca: 9b15859b addiw a1,a1,-1615 + 3bc07dce: 0006a883 lw a7,0(a3) # ffffffffffff0000 <__BL2_END__+0xffffffffc43dc7f0> + 3bc07dd2: 24c8978b mulaw a5,a7,a2 + 3bc07dd6: 0046a883 lw a7,4(a3) + 3bc07dda: 24c8970b mulaw a4,a7,a2 + 3bc07dde: 0086a883 lw a7,8(a3) + 3bc07de2: 1537978b srriw a5,a5,19 + 3bc07de6: 24c8940b mulaw s0,a7,a2 + 3bc07dea: 00c6a883 lw a7,12(a3) + 3bc07dee: 1537170b srriw a4,a4,19 + 3bc07df2: 06c1 addi a3,a3,16 + 3bc07df4: 24c8950b mulaw a0,a7,a2 + 3bc07df8: 1534140b srriw s0,s0,19 + 3bc07dfc: 1535150b srriw a0,a0,19 + 3bc07e00: 02b787bb mulw a5,a5,a1 + 3bc07e04: 02b7073b mulw a4,a4,a1 + 3bc07e08: 02b4043b mulw s0,s0,a1 + 3bc07e0c: 02b5053b mulw a0,a0,a1 + 3bc07e10: fb06efe3 bltu a3,a6,3bc07dce + 3bc07e14: 00190593 addi a1,s2,1 + 3bc07e18: 46c1 li a3,16 + 3bc07e1a: 00b86663 bltu a6,a1,3bc07e26 + 3bc07e1e: ff098693 addi a3,s3,-16 + 3bc07e22: 9ac1 andi a3,a3,-16 + 3bc07e24: 06c1 addi a3,a3,16 + 3bc07e26: 15f7978b srriw a5,a5,31 + 3bc07e2a: 1597170b srriw a4,a4,25 + 3bc07e2e: 9fb9 addw a5,a5,a4 + 3bc07e30: 1544140b srriw s0,s0,20 + 3bc07e34: 9fa1 addw a5,a5,s0 + 3bc07e36: 14e5150b srriw a0,a0,14 + 3bc07e3a: 9936 add s2,s2,a3 + 3bc07e3c: 9d3d addw a0,a0,a5 + 3bc07e3e: 4681 li a3,0 + 3bc07e40: 6446 ld s0,80(sp) + 3bc07e42: 60e6 ld ra,88(sp) + 3bc07e44: 64a6 ld s1,72(sp) + 3bc07e46: 7a42 ld s4,48(sp) + 3bc07e48: 7aa2 ld s5,40(sp) + 3bc07e4a: 7b02 ld s6,32(sp) + 3bc07e4c: 6be2 ld s7,24(sp) + 3bc07e4e: 6c42 ld s8,16(sp) + 3bc07e50: 6ca2 ld s9,8(sp) + 3bc07e52: 00f9f613 andi a2,s3,15 + 3bc07e56: 85ca mv a1,s2 + 3bc07e58: 00a9853b addw a0,s3,a0 + 3bc07e5c: 6906 ld s2,64(sp) + 3bc07e5e: 79e2 ld s3,56(sp) + 3bc07e60: 6125 addi sp,sp,96 + 3bc07e62: bd9ff06f j 3bc07a3a + 3bc07e66: 16566537 lui a0,0x16566 + 3bc07e6a: 7b15051b addiw a0,a0,1969 + 3bc07e6e: 9d31 addw a0,a0,a2 + 3bc07e70: b7f9 j 3bc07e3e + 3bc07e72: 47bd li a5,15 + 3bc07e74: 0ab7fe63 bgeu a5,a1,3bc07f30 + 3bc07e78: 242344b7 lui s1,0x24234 + 3bc07e7c: 85ebdab7 lui s5,0x85ebd + 3bc07e80: 61c887b7 lui a5,0x61c88 + 3bc07e84: ff158c93 addi s9,a1,-15 # ffffffff9e377ff1 <__BL2_END__+0xffffffff627647e1> + 3bc07e88: 4284849b addiw s1,s1,1064 + 3bc07e8c: a77a8a9b addiw s5,s5,-1417 + 3bc07e90: 64f7879b addiw a5,a5,1615 + 3bc07e94: 9e378b37 lui s6,0x9e378 + 3bc07e98: 9caa add s9,s9,a0 + 3bc07e9a: 9cb1 addw s1,s1,a2 + 3bc07e9c: 00ca8c3b addw s8,s5,a2 + 3bc07ea0: 00c78bbb addw s7,a5,a2 + 3bc07ea4: 8a2a mv s4,a0 + 3bc07ea6: 9b1b0b1b addiw s6,s6,-1615 + 3bc07eaa: 8552 mv a0,s4 + 3bc07eac: b79ff0ef jal ra,3bc07a24 + 3bc07eb0: 24aa948b mulaw s1,s5,a0 + 3bc07eb4: 004a0513 addi a0,s4,4 + 3bc07eb8: b6dff0ef jal ra,3bc07a24 + 3bc07ebc: 8762 mv a4,s8 + 3bc07ebe: 24aa970b mulaw a4,s5,a0 + 3bc07ec2: 008a0513 addi a0,s4,8 + 3bc07ec6: 1534948b srriw s1,s1,19 + 3bc07eca: 1537170b srriw a4,a4,19 + 3bc07ece: 03670c3b mulw s8,a4,s6 + 3bc07ed2: b53ff0ef jal ra,3bc07a24 + 3bc07ed6: 24aa940b mulaw s0,s5,a0 + 3bc07eda: 00ca0513 addi a0,s4,12 + 3bc07ede: 0a41 addi s4,s4,16 + 3bc07ee0: 1534160b srriw a2,s0,19 + 3bc07ee4: 0366043b mulw s0,a2,s6 + 3bc07ee8: b3dff0ef jal ra,3bc07a24 + 3bc07eec: 87de mv a5,s7 + 3bc07eee: 24aa978b mulaw a5,s5,a0 + 3bc07ef2: 1537978b srriw a5,a5,19 + 3bc07ef6: 036484bb mulw s1,s1,s6 + 3bc07efa: 03678bbb mulw s7,a5,s6 + 3bc07efe: fb9a66e3 bltu s4,s9,3bc07eaa + 3bc07f02: 00190713 addi a4,s2,1 + 3bc07f06: 47c1 li a5,16 + 3bc07f08: 00ece663 bltu s9,a4,3bc07f14 + 3bc07f0c: ff098793 addi a5,s3,-16 + 3bc07f10: 9bc1 andi a5,a5,-16 + 3bc07f12: 07c1 addi a5,a5,16 + 3bc07f14: 159c150b srriw a0,s8,25 + 3bc07f18: 15f4948b srriw s1,s1,31 + 3bc07f1c: 9ca9 addw s1,s1,a0 + 3bc07f1e: 1544150b srriw a0,s0,20 + 3bc07f22: 993e add s2,s2,a5 + 3bc07f24: 9d25 addw a0,a0,s1 + 3bc07f26: 14eb940b srriw s0,s7,14 + 3bc07f2a: 9d21 addw a0,a0,s0 + 3bc07f2c: 4685 li a3,1 + 3bc07f2e: bf09 j 3bc07e40 + 3bc07f30: 16566537 lui a0,0x16566 + 3bc07f34: 7b15051b addiw a0,a0,1969 + 3bc07f38: bfcd j 3bc07f2a + +000000003bc07f3a : + 3bc07f3a: 715d addi sp,sp,-80 + 3bc07f3c: e0a2 sd s0,64(sp) + 3bc07f3e: fc26 sd s1,56(sp) + 3bc07f40: 842e mv s0,a1 + 3bc07f42: 84aa mv s1,a0 + 3bc07f44: 03000613 li a2,48 + 3bc07f48: 4581 li a1,0 + 3bc07f4a: 850a mv a0,sp + 3bc07f4c: e486 sd ra,72(sp) + 3bc07f4e: ad3f80ef jal ra,3bc00a20 + 3bc07f52: 242347b7 lui a5,0x24234 + 3bc07f56: 4287879b addiw a5,a5,1064 + 3bc07f5a: 9fa1 addw a5,a5,s0 + 3bc07f5c: c43e sw a5,8(sp) + 3bc07f5e: 85ebd7b7 lui a5,0x85ebd + 3bc07f62: a777879b addiw a5,a5,-1417 + 3bc07f66: 9fa1 addw a5,a5,s0 + 3bc07f68: c63e sw a5,12(sp) + 3bc07f6a: 61c887b7 lui a5,0x61c88 + 3bc07f6e: 64f7879b addiw a5,a5,1615 + 3bc07f72: c822 sw s0,16(sp) + 3bc07f74: 858a mv a1,sp + 3bc07f76: 9c3d addw s0,s0,a5 + 3bc07f78: 8526 mv a0,s1 + 3bc07f7a: 02c00613 li a2,44 + 3bc07f7e: ca22 sw s0,20(sp) + 3bc07f80: afbf80ef jal ra,3bc00a7a + 3bc07f84: 60a6 ld ra,72(sp) + 3bc07f86: 6406 ld s0,64(sp) + 3bc07f88: 74e2 ld s1,56(sp) + 3bc07f8a: 4501 li a0,0 + 3bc07f8c: 6161 addi sp,sp,80 + 3bc07f8e: 8082 ret + +000000003bc07f90 : + 3bc07f90: 711d addi sp,sp,-96 + 3bc07f92: e0ca sd s2,64(sp) + 3bc07f94: ec86 sd ra,88(sp) + 3bc07f96: e8a2 sd s0,80(sp) + 3bc07f98: e4a6 sd s1,72(sp) + 3bc07f9a: fc4e sd s3,56(sp) + 3bc07f9c: f852 sd s4,48(sp) + 3bc07f9e: f456 sd s5,40(sp) + 3bc07fa0: f05a sd s6,32(sp) + 3bc07fa2: ec5e sd s7,24(sp) + 3bc07fa4: e862 sd s8,16(sp) + 3bc07fa6: e466 sd s9,8(sp) + 3bc07fa8: e06a sd s10,0(sp) + 3bc07faa: 4905 li s2,1 + 3bc07fac: c5b9 beqz a1,3bc07ffa + 3bc07fae: 4114 lw a3,0(a0) + 3bc07fb0: 842a mv s0,a0 + 3bc07fb2: 01063713 sltiu a4,a2,16 + 3bc07fb6: 00c6853b addw a0,a3,a2 + 3bc07fba: 483d li a6,15 + 3bc07fbc: 00a836b3 sltu a3,a6,a0 + 3bc07fc0: 00174713 xori a4,a4,1 + 3bc07fc4: 8f55 or a4,a4,a3 + 3bc07fc6: 4054 lw a3,4(s0) + 3bc07fc8: c008 sw a0,0(s0) + 3bc07fca: 84ae mv s1,a1 + 3bc07fcc: 8f55 or a4,a4,a3 + 3bc07fce: c058 sw a4,4(s0) + 3bc07fd0: 5418 lw a4,40(s0) + 3bc07fd2: 00c58d33 add s10,a1,a2 + 3bc07fd6: 0006091b sext.w s2,a2 + 3bc07fda: 7c07350b extu a0,a4,31,0 + 3bc07fde: 00a607b3 add a5,a2,a0 + 3bc07fe2: 02f86b63 bltu a6,a5,3bc08018 + 3bc07fe6: 01840793 addi a5,s0,24 # 10018 <__BSS_SIZE__+0xa408> + 3bc07fea: 953e add a0,a0,a5 + 3bc07fec: a8ff80ef jal ra,3bc00a7a + 3bc07ff0: 541c lw a5,40(s0) + 3bc07ff2: 012787bb addw a5,a5,s2 + 3bc07ff6: d41c sw a5,40(s0) + 3bc07ff8: 4901 li s2,0 + 3bc07ffa: 60e6 ld ra,88(sp) + 3bc07ffc: 6446 ld s0,80(sp) + 3bc07ffe: 64a6 ld s1,72(sp) + 3bc08000: 79e2 ld s3,56(sp) + 3bc08002: 7a42 ld s4,48(sp) + 3bc08004: 7aa2 ld s5,40(sp) + 3bc08006: 7b02 ld s6,32(sp) + 3bc08008: 6be2 ld s7,24(sp) + 3bc0800a: 6c42 ld s8,16(sp) + 3bc0800c: 6ca2 ld s9,8(sp) + 3bc0800e: 6d02 ld s10,0(sp) + 3bc08010: 854a mv a0,s2 + 3bc08012: 6906 ld s2,64(sp) + 3bc08014: 6125 addi sp,sp,96 + 3bc08016: 8082 ret + 3bc08018: c355 beqz a4,3bc080bc + 3bc0801a: 4b41 li s6,16 + 3bc0801c: 40eb063b subw a2,s6,a4 + 3bc08020: 01840993 addi s3,s0,24 + 3bc08024: 7c06360b extu a2,a2,31,0 + 3bc08028: 954e add a0,a0,s3 + 3bc0802a: a51f80ef jal ra,3bc00a7a + 3bc0802e: 00842903 lw s2,8(s0) + 3bc08032: 854e mv a0,s3 + 3bc08034: 85ebdab7 lui s5,0x85ebd + 3bc08038: 9edff0ef jal ra,3bc07a24 + 3bc0803c: a77a8a9b addiw s5,s5,-1417 + 3bc08040: 24aa990b mulaw s2,s5,a0 + 3bc08044: 9e378a37 lui s4,0x9e378 + 3bc08048: 9b1a0a1b addiw s4,s4,-1615 + 3bc0804c: 00c42983 lw s3,12(s0) + 3bc08050: 01c40513 addi a0,s0,28 + 3bc08054: 1539190b srriw s2,s2,19 + 3bc08058: 0349093b mulw s2,s2,s4 + 3bc0805c: 01242423 sw s2,8(s0) + 3bc08060: 9c5ff0ef jal ra,3bc07a24 + 3bc08064: 24aa998b mulaw s3,s5,a0 + 3bc08068: 02040513 addi a0,s0,32 + 3bc0806c: 1539998b srriw s3,s3,19 + 3bc08070: 034989bb mulw s3,s3,s4 + 3bc08074: 01342623 sw s3,12(s0) + 3bc08078: 01042983 lw s3,16(s0) + 3bc0807c: 9a9ff0ef jal ra,3bc07a24 + 3bc08080: 01442903 lw s2,20(s0) + 3bc08084: 24aa998b mulaw s3,s5,a0 + 3bc08088: 02440513 addi a0,s0,36 + 3bc0808c: 1539998b srriw s3,s3,19 + 3bc08090: 034989bb mulw s3,s3,s4 + 3bc08094: 01342823 sw s3,16(s0) + 3bc08098: 98dff0ef jal ra,3bc07a24 + 3bc0809c: 24aa990b mulaw s2,s5,a0 + 3bc080a0: 541c lw a5,40(s0) + 3bc080a2: 02042423 sw zero,40(s0) + 3bc080a6: 40fb0b3b subw s6,s6,a5 + 3bc080aa: 7c0b3b0b extu s6,s6,31,0 + 3bc080ae: 94da add s1,s1,s6 + 3bc080b0: 1539190b srriw s2,s2,19 + 3bc080b4: 0349093b mulw s2,s2,s4 + 3bc080b8: 01242a23 sw s2,20(s0) + 3bc080bc: ff0d0913 addi s2,s10,-16 + 3bc080c0: 08996363 bltu s2,s1,3bc08146 + 3bc080c4: e3844c8b lwd s9,s8,(s0),1,3 + 3bc080c8: e5444a8b lwd s5,s4,(s0),2,3 + 3bc080cc: 85ebdbb7 lui s7,0x85ebd + 3bc080d0: 9e378b37 lui s6,0x9e378 + 3bc080d4: 89a6 mv s3,s1 + 3bc080d6: a77b8b9b addiw s7,s7,-1417 + 3bc080da: 9b1b0b1b addiw s6,s6,-1615 + 3bc080de: 854e mv a0,s3 + 3bc080e0: 945ff0ef jal ra,3bc07a24 + 3bc080e4: 24ab9c8b mulaw s9,s7,a0 + 3bc080e8: 00498513 addi a0,s3,4 + 3bc080ec: 939ff0ef jal ra,3bc07a24 + 3bc080f0: 24ab9c0b mulaw s8,s7,a0 + 3bc080f4: 00898513 addi a0,s3,8 + 3bc080f8: 92dff0ef jal ra,3bc07a24 + 3bc080fc: 153c9c8b srriw s9,s9,19 + 3bc08100: 24ab9a8b mulaw s5,s7,a0 + 3bc08104: 00c98513 addi a0,s3,12 + 3bc08108: 91dff0ef jal ra,3bc07a24 + 3bc0810c: 153c1c0b srriw s8,s8,19 + 3bc08110: 09c1 addi s3,s3,16 + 3bc08112: 24ab9a0b mulaw s4,s7,a0 + 3bc08116: 153a9a8b srriw s5,s5,19 + 3bc0811a: 153a1a0b srriw s4,s4,19 + 3bc0811e: 036c8cbb mulw s9,s9,s6 + 3bc08122: 036c0c3b mulw s8,s8,s6 + 3bc08126: 036a8abb mulw s5,s5,s6 + 3bc0812a: 036a0a3b mulw s4,s4,s6 + 3bc0812e: fb3978e3 bgeu s2,s3,3bc080de + 3bc08132: 40990933 sub s2,s2,s1 + 3bc08136: ff097913 andi s2,s2,-16 + 3bc0813a: 0941 addi s2,s2,16 + 3bc0813c: 94ca add s1,s1,s2 + 3bc0813e: e3845c8b swd s9,s8,(s0),1,3 + 3bc08142: e5445a8b swd s5,s4,(s0),2,3 + 3bc08146: 4901 li s2,0 + 3bc08148: eba4f9e3 bgeu s1,s10,3bc07ffa + 3bc0814c: 409d0d33 sub s10,s10,s1 + 3bc08150: 866a mv a2,s10 + 3bc08152: 85a6 mv a1,s1 + 3bc08154: 01840513 addi a0,s0,24 + 3bc08158: 923f80ef jal ra,3bc00a7a + 3bc0815c: 03a42423 sw s10,40(s0) + 3bc08160: bd69 j 3bc07ffa + +000000003bc08162 : + 3bc08162: 415c lw a5,4(a0) + 3bc08164: 4918 lw a4,16(a0) + 3bc08166: cb8d beqz a5,3bc08198 + 3bc08168: 451c lw a5,8(a0) + 3bc0816a: 4554 lw a3,12(a0) + 3bc0816c: 1547170b srriw a4,a4,20 + 3bc08170: 15f7978b srriw a5,a5,31 + 3bc08174: 1596968b srriw a3,a3,25 + 3bc08178: 9fb5 addw a5,a5,a3 + 3bc0817a: 9fb9 addw a5,a5,a4 + 3bc0817c: 4958 lw a4,20(a0) + 3bc0817e: 14e7170b srriw a4,a4,14 + 3bc08182: 85aa mv a1,a0 + 3bc08184: 9fb9 addw a5,a5,a4 + 3bc08186: 5ac5c70b lwia a4,(a1),12,1 + 3bc0818a: 02856603 lwu a2,40(a0) # 16566028 + 3bc0818e: 4681 li a3,0 + 3bc08190: 00f7053b addw a0,a4,a5 + 3bc08194: 8a7ff06f j 3bc07a3a + 3bc08198: 165667b7 lui a5,0x16566 + 3bc0819c: 7b17879b addiw a5,a5,1969 + 3bc081a0: b7cd j 3bc08182 + +000000003bc081a2 : + 3bc081a2: 1141 addi sp,sp,-16 + 3bc081a4: e022 sd s0,0(sp) + 3bc081a6: 842a mv s0,a0 + 3bc081a8: 00003517 auipc a0,0x3 + 3bc081ac: 36850513 addi a0,a0,872 # 3bc0b510 + 3bc081b0: e406 sd ra,8(sp) + 3bc081b2: 9a6f80ef jal ra,3bc00358 + 3bc081b6: 400c lw a1,0(s0) + 3bc081b8: 00003517 auipc a0,0x3 + 3bc081bc: 36850513 addi a0,a0,872 # 3bc0b520 + 3bc081c0: 998f80ef jal ra,3bc00358 + 3bc081c4: 012000ef jal ra,3bc081d6 + 3bc081c8: 296000ef jal ra,3bc0845e + 3bc081cc: 60a2 ld ra,8(sp) + 3bc081ce: 6402 ld s0,0(sp) + 3bc081d0: 4501 li a0,0 + 3bc081d2: 0141 addi sp,sp,16 + 3bc081d4: 8082 ret + +000000003bc081d6 : + 3bc081d6: 030007b7 lui a5,0x3000 + 3bc081da: 43cc lw a1,4(a5) + 3bc081dc: 7139 addi sp,sp,-64 + 3bc081de: 030507b7 lui a5,0x3050 + 3bc081e2: 79c5b58b extu a1,a1,30,28 + 3bc081e6: 00003517 auipc a0,0x3 + 3bc081ea: 35250513 addi a0,a0,850 # 3bc0b538 + 3bc081ee: f822 sd s0,48(sp) + 3bc081f0: f426 sd s1,40(sp) + 3bc081f2: f04a sd s2,32(sp) + 3bc081f4: ec4e sd s3,24(sp) + 3bc081f6: fc06 sd ra,56(sp) + 3bc081f8: 1087a983 lw s3,264(a5) # 3050108 <__BSS_SIZE__+0x304a4f8> + 3bc081fc: e42e sd a1,8(sp) + 3bc081fe: 95af80ef jal ra,3bc00358 + 3bc08202: 65a2 ld a1,8(sp) + 3bc08204: 00003717 auipc a4,0x3 + 3bc08208: 41870713 addi a4,a4,1048 # 3bc0b61c + 3bc0820c: 0000b917 auipc s2,0xb + 3bc08210: 60290913 addi s2,s2,1538 # 3bc1380e + 3bc08214: 44b7478b lrw a5,a4,a1,2 + 3bc08218: 0000b497 auipc s1,0xb + 3bc0821c: 5f448493 addi s1,s1,1524 # 3bc1380c + 3bc08220: 0000b417 auipc s0,0xb + 3bc08224: 5ef40413 addi s0,s0,1519 # 3bc1380f + 3bc08228: 97ba add a5,a5,a4 + 3bc0822a: 8782 jr a5 + 3bc0822c: 478d li a5,3 + 3bc0822e: 4709 li a4,2 + 3bc08230: 00f90023 sb a5,0(s2) + 3bc08234: 00e48023 sb a4,0(s1) + 3bc08238: 00f40023 sb a5,0(s0) + 3bc0823c: a825 j 3bc08274 + 3bc0823e: 4791 li a5,4 + 3bc08240: 00f90023 sb a5,0(s2) + 3bc08244: 4785 li a5,1 + 3bc08246: 00f48023 sb a5,0(s1) + 3bc0824a: 478d li a5,3 + 3bc0824c: b7f5 j 3bc08238 + 3bc0824e: 00003517 auipc a0,0x3 + 3bc08252: 2fa50513 addi a0,a0,762 # 3bc0b548 + 3bc08256: 902f80ef jal ra,3bc00358 + 3bc0825a: 2981 sext.w s3,s3 + 3bc0825c: 6559b78b extu a5,s3,25,21 + 3bc08260: 00f90023 sb a5,0(s2) + 3bc08264: 71a9b78b extu a5,s3,28,26 + 3bc08268: 01d9d99b srliw s3,s3,0x1d + 3bc0826c: 00f48023 sb a5,0(s1) + 3bc08270: 01340023 sb s3,0(s0) + 3bc08274: 00044583 lbu a1,0(s0) + 3bc08278: 00094683 lbu a3,0(s2) + 3bc0827c: 0004c603 lbu a2,0(s1) + 3bc08280: 00003517 auipc a0,0x3 + 3bc08284: 2f050513 addi a0,a0,752 # 3bc0b570 + 3bc08288: 8d0f80ef jal ra,3bc00358 + 3bc0828c: 00094583 lbu a1,0(s2) + 3bc08290: 4725 li a4,9 + 3bc08292: fff5879b addiw a5,a1,-1 + 3bc08296: 0ff7f793 andi a5,a5,255 + 3bc0829a: 08f76963 bltu a4,a5,3bc0832c + 3bc0829e: 00003717 auipc a4,0x3 + 3bc082a2: 39e70713 addi a4,a4,926 # 3bc0b63c + 3bc082a6: 44f7478b lrw a5,a4,a5,2 + 3bc082aa: 0000b917 auipc s2,0xb + 3bc082ae: 56390913 addi s2,s2,1379 # 3bc1380d + 3bc082b2: 97ba add a5,a5,a4 + 3bc082b4: 8782 jr a5 + 3bc082b6: 478d li a5,3 + 3bc082b8: 00f90023 sb a5,0(s2) + 3bc082bc: 4789 li a5,2 + 3bc082be: 00f48023 sb a5,0(s1) + 3bc082c2: 4785 li a5,1 + 3bc082c4: bf95 j 3bc08238 + 3bc082c6: 4791 li a5,4 + 3bc082c8: 00f90023 sb a5,0(s2) + 3bc082cc: 4785 li a5,1 + 3bc082ce: 00f48023 sb a5,0(s1) + 3bc082d2: b79d j 3bc08238 + 3bc082d4: 00003517 auipc a0,0x3 + 3bc082d8: 27c50513 addi a0,a0,636 # 3bc0b550 + 3bc082dc: 87cf80ef jal ra,3bc00358 + 3bc082e0: bf51 j 3bc08274 + 3bc082e2: 00003517 auipc a0,0x3 + 3bc082e6: 29e50513 addi a0,a0,670 # 3bc0b580 + 3bc082ea: 86ef80ef jal ra,3bc00358 + 3bc082ee: 4785 li a5,1 + 3bc082f0: 00f90023 sb a5,0(s2) + 3bc082f4: 0004c583 lbu a1,0(s1) + 3bc082f8: 478d li a5,3 + 3bc082fa: 0cf58963 beq a1,a5,3bc083cc + 3bc082fe: 04b7e263 bltu a5,a1,3bc08342 + 3bc08302: 4485 li s1,1 + 3bc08304: 04958a63 beq a1,s1,3bc08358 + 3bc08308: 4789 li a5,2 + 3bc0830a: 0af58463 beq a1,a5,3bc083b2 + 3bc0830e: 00003517 auipc a0,0x3 + 3bc08312: 2ba50513 addi a0,a0,698 # 3bc0b5c8 + 3bc08316: 842f80ef jal ra,3bc00358 + 3bc0831a: a82d j 3bc08354 + 3bc0831c: 00003517 auipc a0,0x3 + 3bc08320: 26c50513 addi a0,a0,620 # 3bc0b588 + 3bc08324: 834f80ef jal ra,3bc00358 + 3bc08328: 4789 li a5,2 + 3bc0832a: b7d9 j 3bc082f0 + 3bc0832c: 00003517 auipc a0,0x3 + 3bc08330: 26450513 addi a0,a0,612 # 3bc0b590 + 3bc08334: 824f80ef jal ra,3bc00358 + 3bc08338: 0000b797 auipc a5,0xb + 3bc0833c: 4c078aa3 sb zero,1237(a5) # 3bc1380d + 3bc08340: bf55 j 3bc082f4 + 3bc08342: 4791 li a5,4 + 3bc08344: 00003517 auipc a0,0x3 + 3bc08348: 27c50513 addi a0,a0,636 # 3bc0b5c0 + 3bc0834c: fcf591e3 bne a1,a5,3bc0830e + 3bc08350: 808f80ef jal ra,3bc00358 + 3bc08354: 4781 li a5,0 + 3bc08356: a839 j 3bc08374 + 3bc08358: 00003517 auipc a0,0x3 + 3bc0835c: 25050513 addi a0,a0,592 # 3bc0b5a8 + 3bc08360: e42e sd a1,8(sp) + 3bc08362: ff7f70ef jal ra,3bc00358 + 3bc08366: 00044783 lbu a5,0(s0) + 3bc0836a: 65a2 ld a1,8(sp) + 3bc0836c: 06b78563 beq a5,a1,3bc083d6 + 3bc08370: 67e1 lui a5,0x18 + 3bc08372: 07ad addi a5,a5,11 + 3bc08374: 03000737 lui a4,0x3000 + 3bc08378: 08f72623 sw a5,140(a4) # 300008c <__BSS_SIZE__+0x2ffa47c> + 3bc0837c: 00044583 lbu a1,0(s0) + 3bc08380: 4789 li a5,2 + 3bc08382: 06f58c63 beq a1,a5,3bc083fa + 3bc08386: 478d li a5,3 + 3bc08388: 04f58d63 beq a1,a5,3bc083e2 + 3bc0838c: 4785 li a5,1 + 3bc0838e: 00003517 auipc a0,0x3 + 3bc08392: 25250513 addi a0,a0,594 # 3bc0b5e0 + 3bc08396: 04f58a63 beq a1,a5,3bc083ea + 3bc0839a: 7442 ld s0,48(sp) + 3bc0839c: 70e2 ld ra,56(sp) + 3bc0839e: 74a2 ld s1,40(sp) + 3bc083a0: 7902 ld s2,32(sp) + 3bc083a2: 69e2 ld s3,24(sp) + 3bc083a4: 00003517 auipc a0,0x3 + 3bc083a8: 26450513 addi a0,a0,612 # 3bc0b608 + 3bc083ac: 6121 addi sp,sp,64 + 3bc083ae: fabf706f j 3bc00358 + 3bc083b2: 00003517 auipc a0,0x3 + 3bc083b6: 1fe50513 addi a0,a0,510 # 3bc0b5b0 + 3bc083ba: f9ff70ef jal ra,3bc00358 + 3bc083be: 00044783 lbu a5,0(s0) + 3bc083c2: 00978d63 beq a5,s1,3bc083dc + 3bc083c6: 67e1 lui a5,0x18 + 3bc083c8: 07ed addi a5,a5,27 + 3bc083ca: b76d j 3bc08374 + 3bc083cc: 00003517 auipc a0,0x3 + 3bc083d0: 1ec50513 addi a0,a0,492 # 3bc0b5b8 + 3bc083d4: bfb5 j 3bc08350 + 3bc083d6: 67e1 lui a5,0x18 + 3bc083d8: 07b1 addi a5,a5,12 + 3bc083da: bf69 j 3bc08374 + 3bc083dc: 67e1 lui a5,0x18 + 3bc083de: 07f1 addi a5,a5,28 + 3bc083e0: bf51 j 3bc08374 + 3bc083e2: 00003517 auipc a0,0x3 + 3bc083e6: 20e50513 addi a0,a0,526 # 3bc0b5f0 + 3bc083ea: 7442 ld s0,48(sp) + 3bc083ec: 70e2 ld ra,56(sp) + 3bc083ee: 74a2 ld s1,40(sp) + 3bc083f0: 7902 ld s2,32(sp) + 3bc083f2: 69e2 ld s3,24(sp) + 3bc083f4: 6121 addi sp,sp,64 + 3bc083f6: f63f706f j 3bc00358 + 3bc083fa: 00003517 auipc a0,0x3 + 3bc083fe: 20650513 addi a0,a0,518 # 3bc0b600 + 3bc08402: b7e5 j 3bc083ea + +000000003bc08404 : + 3bc08404: 0000b517 auipc a0,0xb + 3bc08408: 40a54503 lbu a0,1034(a0) # 3bc1380e + 3bc0840c: 8082 ret + +000000003bc0840e : + 3bc0840e: 00030737 lui a4,0x30 + 3bc08412: 080087b7 lui a5,0x8008 + 3bc08416: 0705 addi a4,a4,1 + 3bc08418: c398 sw a4,0(a5) + 3bc0841a: 08078693 addi a3,a5,128 # 8008080 + 3bc0841e: c298 sw a4,0(a3) + 3bc08420: 10078693 addi a3,a5,256 + 3bc08424: c298 sw a4,0(a3) + 3bc08426: 18078693 addi a3,a5,384 + 3bc0842a: c298 sw a4,0(a3) + 3bc0842c: 20078693 addi a3,a5,512 + 3bc08430: c298 sw a4,0(a3) + 3bc08432: 28078693 addi a3,a5,640 + 3bc08436: c298 sw a4,0(a3) + 3bc08438: 30078693 addi a3,a5,768 + 3bc0843c: c298 sw a4,0(a3) + 3bc0843e: 38078693 addi a3,a5,896 + 3bc08442: c298 sw a4,0(a3) + 3bc08444: 40078693 addi a3,a5,1024 + 3bc08448: c298 sw a4,0(a3) + 3bc0844a: 48078693 addi a3,a5,1152 + 3bc0844e: c298 sw a4,0(a3) + 3bc08450: 50078693 addi a3,a5,1280 + 3bc08454: c298 sw a4,0(a3) + 3bc08456: 58078793 addi a5,a5,1408 + 3bc0845a: c398 sw a4,0(a5) + 3bc0845c: 8082 ret + +000000003bc0845e : + 3bc0845e: 7179 addi sp,sp,-48 + 3bc08460: f406 sd ra,40(sp) + 3bc08462: 3f2010ef jal ra,3bc09854 + 3bc08466: 7ae010ef jal ra,3bc09c14 + 3bc0846a: 0800a7b7 lui a5,0x800a + 3bc0846e: 0207a023 sw zero,32(a5) # 800a020 + 3bc08472: 007797b7 lui a5,0x779 + 3bc08476: 03000737 lui a4,0x3000 + 3bc0847a: 8aa78793 addi a5,a5,-1878 # 7788aa <__BSS_SIZE__+0x772c9a> + 3bc0847e: 1cf72c23 sw a5,472(a4) # 30001d8 <__BSS_SIZE__+0x2ffa5c8> + 3bc08482: 6789 lui a5,0x2 + 3bc08484: 29978793 addi a5,a5,665 # 2299 <__BSS_SIZE__-0x3977> + 3bc08488: 1cf72e23 sw a5,476(a4) + 3bc0848c: 2bb010ef jal ra,3bc09f46 + 3bc08490: 283000ef jal ra,3bc08f12 + 3bc08494: 444010ef jal ra,3bc098d8 + 3bc08498: 2a0010ef jal ra,3bc09738 + 3bc0849c: 297000ef jal ra,3bc08f32 + 3bc084a0: 083000ef jal ra,3bc08d22 + 3bc084a4: 17d000ef jal ra,3bc08e20 + 3bc084a8: 1bb000ef jal ra,3bc08e62 + 3bc084ac: 103000ef jal ra,3bc08dae + 3bc084b0: 139000ef jal ra,3bc08de8 + 3bc084b4: 1db000ef jal ra,3bc08e8e + 3bc084b8: 1ca000ef jal ra,3bc08682 + 3bc084bc: 0810 addi a2,sp,16 + 3bc084be: 082c addi a1,sp,24 + 3bc084c0: 0068 addi a0,sp,12 + 3bc084c2: 4f4000ef jal ra,3bc089b6 + 3bc084c6: 47b2 lw a5,12(sp) + 3bc084c8: e385 bnez a5,3bc084e8 + 3bc084ca: 00003517 auipc a0,0x3 + 3bc084ce: 19e50513 addi a0,a0,414 # 3bc0b668 + 3bc084d2: e87f70ef jal ra,3bc00358 + 3bc084d6: fac1468b ldd a3,a2,(sp),1,4 + 3bc084da: 45b2 lw a1,12(sp) + 3bc084dc: 00003517 auipc a0,0x3 + 3bc084e0: 1a450513 addi a0,a0,420 # 3bc0b680 + 3bc084e4: e75f70ef jal ra,3bc00358 + 3bc084e8: 17f010ef jal ra,3bc09e66 + 3bc084ec: 3cd000ef jal ra,3bc090b8 + 3bc084f0: 192000ef jal ra,3bc08682 + 3bc084f4: 0810 addi a2,sp,16 + 3bc084f6: 082c addi a1,sp,24 + 3bc084f8: 0068 addi a0,sp,12 + 3bc084fa: 4bc000ef jal ra,3bc089b6 + 3bc084fe: 47b2 lw a5,12(sp) + 3bc08500: e385 bnez a5,3bc08520 + 3bc08502: 00003517 auipc a0,0x3 + 3bc08506: 16650513 addi a0,a0,358 # 3bc0b668 + 3bc0850a: e4ff70ef jal ra,3bc00358 + 3bc0850e: fac1468b ldd a3,a2,(sp),1,4 + 3bc08512: 45b2 lw a1,12(sp) + 3bc08514: 00003517 auipc a0,0x3 + 3bc08518: 16c50513 addi a0,a0,364 # 3bc0b680 + 3bc0851c: e3df70ef jal ra,3bc00358 + 3bc08520: 56f000ef jal ra,3bc0928e + 3bc08524: 15e000ef jal ra,3bc08682 + 3bc08528: 0810 addi a2,sp,16 + 3bc0852a: 082c addi a1,sp,24 + 3bc0852c: 0068 addi a0,sp,12 + 3bc0852e: 488000ef jal ra,3bc089b6 + 3bc08532: 47b2 lw a5,12(sp) + 3bc08534: e385 bnez a5,3bc08554 + 3bc08536: 00003517 auipc a0,0x3 + 3bc0853a: 13250513 addi a0,a0,306 # 3bc0b668 + 3bc0853e: e1bf70ef jal ra,3bc00358 + 3bc08542: fac1468b ldd a3,a2,(sp),1,4 + 3bc08546: 45b2 lw a1,12(sp) + 3bc08548: 00003517 auipc a0,0x3 + 3bc0854c: 13850513 addi a0,a0,312 # 3bc0b680 + 3bc08550: e09f70ef jal ra,3bc00358 + 3bc08554: 4589 li a1,2 + 3bc08556: 4505 li a0,1 + 3bc08558: 05e010ef jal ra,3bc095b6 + 3bc0855c: 4585 li a1,1 + 3bc0855e: 4505 li a0,1 + 3bc08560: 056010ef jal ra,3bc095b6 + 3bc08564: 4581 li a1,0 + 3bc08566: 4505 li a0,1 + 3bc08568: 04e010ef jal ra,3bc095b6 + 3bc0856c: 116000ef jal ra,3bc08682 + 3bc08570: 0810 addi a2,sp,16 + 3bc08572: 082c addi a1,sp,24 + 3bc08574: 0068 addi a0,sp,12 + 3bc08576: 440000ef jal ra,3bc089b6 + 3bc0857a: 08000737 lui a4,0x8000 + 3bc0857e: 08c72783 lw a5,140(a4) # 800008c + 3bc08582: 4505 li a0,1 + 3bc08584: 2781 sext.w a5,a5 + 3bc08586: f0f7f793 andi a5,a5,-241 + 3bc0858a: 0107e793 ori a5,a5,16 + 3bc0858e: 0000b697 auipc a3,0xb + 3bc08592: 26f6a123 sw a5,610(a3) # 3bc137f0 + 3bc08596: 08f72623 sw a5,140(a4) + 3bc0859a: 633000ef jal ra,3bc093cc + 3bc0859e: 0e4000ef jal ra,3bc08682 + 3bc085a2: 0810 addi a2,sp,16 + 3bc085a4: 082c addi a1,sp,24 + 3bc085a6: 0068 addi a0,sp,12 + 3bc085a8: 40e000ef jal ra,3bc089b6 + 3bc085ac: 08d010ef jal ra,3bc09e38 + 3bc085b0: 00b10513 addi a0,sp,11 + 3bc085b4: 186010ef jal ra,3bc0973a + 3bc085b8: 00b14503 lbu a0,11(sp) + 3bc085bc: 0d9010ef jal ra,3bc09e94 + 3bc085c0: 00b14503 lbu a0,11(sp) + 3bc085c4: 64e010ef jal ra,3bc09c12 + 3bc085c8: 281000ef jal ra,3bc09048 + 3bc085cc: 0b6000ef jal ra,3bc08682 + 3bc085d0: 0810 addi a2,sp,16 + 3bc085d2: 082c addi a1,sp,24 + 3bc085d4: 0068 addi a0,sp,12 + 3bc085d6: 3e0000ef jal ra,3bc089b6 + 3bc085da: 47b2 lw a5,12(sp) + 3bc085dc: eb81 bnez a5,3bc085ec + 3bc085de: 00003517 auipc a0,0x3 + 3bc085e2: 0e250513 addi a0,a0,226 # 3bc0b6c0 + 3bc085e6: d73f70ef jal ra,3bc00358 + 3bc085ea: a001 j 3bc085ea + 3bc085ec: 0e4000ef jal ra,3bc086d0 + 3bc085f0: 0810 addi a2,sp,16 + 3bc085f2: 082c addi a1,sp,24 + 3bc085f4: 0068 addi a0,sp,12 + 3bc085f6: 3c0000ef jal ra,3bc089b6 + 3bc085fa: 47b2 lw a5,12(sp) + 3bc085fc: eb81 bnez a5,3bc0860c + 3bc085fe: 00003517 auipc a0,0x3 + 3bc08602: 0c250513 addi a0,a0,194 # 3bc0b6c0 + 3bc08606: d53f70ef jal ra,3bc00358 + 3bc0860a: a001 j 3bc0860a + 3bc0860c: 00003517 auipc a0,0x3 + 3bc08610: 0cc50513 addi a0,a0,204 # 3bc0b6d8 + 3bc08614: d45f70ef jal ra,3bc00358 + 3bc08618: 080087b7 lui a5,0x8008 + 3bc0861c: 4595 li a1,5 + 3bc0861e: cbac sw a1,80(a5) + 3bc08620: 08078613 addi a2,a5,128 # 8008080 + 3bc08624: 01000737 lui a4,0x1000 + 3bc08628: ca2c sw a1,80(a2) + 3bc0862a: 10070713 addi a4,a4,256 # 1000100 <__BSS_SIZE__+0xffa4f0> + 3bc0862e: c398 sw a4,0(a5) + 3bc08630: 43d4 lw a3,4(a5) + 3bc08632: 2681 sext.w a3,a3 + 3bc08634: c006f693 andi a3,a3,-1024 + 3bc08638: c3d4 sw a3,4(a5) + 3bc0863a: c218 sw a4,0(a2) + 3bc0863c: 4254 lw a3,4(a2) + 3bc0863e: 2681 sext.w a3,a3 + 3bc08640: c006f693 andi a3,a3,-1024 + 3bc08644: c254 sw a3,4(a2) + 3bc08646: 40078613 addi a2,a5,1024 + 3bc0864a: ca2c sw a1,80(a2) + 3bc0864c: 48078793 addi a5,a5,1152 + 3bc08650: cbac sw a1,80(a5) + 3bc08652: c218 sw a4,0(a2) + 3bc08654: 4254 lw a3,4(a2) + 3bc08656: 2681 sext.w a3,a3 + 3bc08658: c006f693 andi a3,a3,-1024 + 3bc0865c: c254 sw a3,4(a2) + 3bc0865e: c398 sw a4,0(a5) + 3bc08660: 43d8 lw a4,4(a5) + 3bc08662: 2701 sext.w a4,a4 + 3bc08664: c0077713 andi a4,a4,-1024 + 3bc08668: c3d8 sw a4,4(a5) + 3bc0866a: 0800a737 lui a4,0x800a + 3bc0866e: 4b5c lw a5,20(a4) + 3bc08670: 2781 sext.w a5,a5 + 3bc08672: 1007e793 ori a5,a5,256 + 3bc08676: cb5c sw a5,20(a4) + 3bc08678: d97ff0ef jal ra,3bc0840e + 3bc0867c: 70a2 ld ra,40(sp) + 3bc0867e: 6145 addi sp,sp,48 + 3bc08680: 8082 ret + +000000003bc08682 : + 3bc08682: 00060737 lui a4,0x60 + 3bc08686: 080107b7 lui a5,0x8010 + 3bc0868a: 0719 addi a4,a4,6 + 3bc0868c: c398 sw a4,0(a5) + 3bc0868e: 80200737 lui a4,0x80200 + 3bc08692: 1101 addi sp,sp,-32 + 3bc08694: a0070713 addi a4,a4,-1536 # ffffffff801ffa00 <__BL2_END__+0xffffffff445ec1f0> + 3bc08698: c63a sw a4,12(sp) + 3bc0869a: 40200737 lui a4,0x40200 + 3bc0869e: e802 sd zero,16(sp) + 3bc086a0: ec02 sd zero,24(sp) + 3bc086a2: a0070713 addi a4,a4,-1536 # 401ffa00 <__BL2_END__+0x45ec1f0> + 3bc086a6: c3b8 sw a4,64(a5) + 3bc086a8: 4732 lw a4,12(sp) + 3bc086aa: c3f8 sw a4,68(a5) + 3bc086ac: 4742 lw a4,16(sp) + 3bc086ae: c7b8 sw a4,72(a5) + 3bc086b0: 4752 lw a4,20(sp) + 3bc086b2: c7f8 sw a4,76(a5) + 3bc086b4: 4762 lw a4,24(sp) + 3bc086b6: cbb8 sw a4,80(a5) + 3bc086b8: 4772 lw a4,28(sp) + 3bc086ba: cbf8 sw a4,84(a5) + 3bc086bc: 00100737 lui a4,0x100 + 3bc086c0: 0007a823 sw zero,16(a5) # 8010010 + 3bc086c4: 177d addi a4,a4,-1 + 3bc086c6: cbd8 sw a4,20(a5) + 3bc086c8: 4711 li a4,4 + 3bc086ca: cf98 sw a4,24(a5) + 3bc086cc: 6105 addi sp,sp,32 + 3bc086ce: 8082 ret + +000000003bc086d0 : + 3bc086d0: 000c0737 lui a4,0xc0 + 3bc086d4: 080107b7 lui a5,0x8010 + 3bc086d8: 0731 addi a4,a4,12 + 3bc086da: c398 sw a4,0(a5) + 3bc086dc: 6705 lui a4,0x1 + 3bc086de: f0570713 addi a4,a4,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc086e2: d3d8 sw a4,36(a5) + 3bc086e4: 80103737 lui a4,0x80103 + 3bc086e8: 1101 addi sp,sp,-32 + 3bc086ea: c0f70713 addi a4,a4,-1009 # ffffffff80102c0f <__BL2_END__+0xffffffff444ef3ff> + 3bc086ee: c63a sw a4,12(sp) + 3bc086f0: c0000737 lui a4,0xc0000 + 3bc086f4: 0705 addi a4,a4,1 + 3bc086f6: 1702 slli a4,a4,0x20 + 3bc086f8: e83a sd a4,16(sp) + 3bc086fa: 40103737 lui a4,0x40103 + 3bc086fe: ec02 sd zero,24(sp) + 3bc08700: c0f70713 addi a4,a4,-1009 # 40102c0f <__BL2_END__+0x44ef3ff> + 3bc08704: c3b8 sw a4,64(a5) + 3bc08706: 4732 lw a4,12(sp) + 3bc08708: c3f8 sw a4,68(a5) + 3bc0870a: 4742 lw a4,16(sp) + 3bc0870c: c7b8 sw a4,72(a5) + 3bc0870e: 4752 lw a4,20(sp) + 3bc08710: c7f8 sw a4,76(a5) + 3bc08712: 4762 lw a4,24(sp) + 3bc08714: cbb8 sw a4,80(a5) + 3bc08716: 4772 lw a4,28(sp) + 3bc08718: cbf8 sw a4,84(a5) + 3bc0871a: 00100737 lui a4,0x100 + 3bc0871e: 0007a823 sw zero,16(a5) # 8010010 + 3bc08722: 177d addi a4,a4,-1 + 3bc08724: cbd8 sw a4,20(a5) + 3bc08726: 02000713 li a4,32 + 3bc0872a: cf98 sw a4,24(a5) + 3bc0872c: 6105 addi sp,sp,32 + 3bc0872e: 8082 ret + +000000003bc08730 : + 3bc08730: 00060737 lui a4,0x60 + 3bc08734: 080107b7 lui a5,0x8010 + 3bc08738: 0719 addi a4,a4,6 + 3bc0873a: c398 sw a4,0(a5) + 3bc0873c: 1101 addi sp,sp,-32 + 3bc0873e: 40001737 lui a4,0x40001 + 3bc08742: e802 sd zero,16(sp) + 3bc08744: ec02 sd zero,24(sp) + 3bc08746: c602 sw zero,12(sp) + 3bc08748: a0070713 addi a4,a4,-1536 # 40000a00 <__BL2_END__+0x43ed1f0> + 3bc0874c: c3b8 sw a4,64(a5) + 3bc0874e: 4732 lw a4,12(sp) + 3bc08750: c3f8 sw a4,68(a5) + 3bc08752: 4742 lw a4,16(sp) + 3bc08754: c7b8 sw a4,72(a5) + 3bc08756: 4752 lw a4,20(sp) + 3bc08758: c7f8 sw a4,76(a5) + 3bc0875a: 4762 lw a4,24(sp) + 3bc0875c: cbb8 sw a4,80(a5) + 3bc0875e: 4772 lw a4,28(sp) + 3bc08760: cbf8 sw a4,84(a5) + 3bc08762: 00100737 lui a4,0x100 + 3bc08766: 0007a823 sw zero,16(a5) # 8010010 + 3bc0876a: 177d addi a4,a4,-1 + 3bc0876c: cbd8 sw a4,20(a5) + 3bc0876e: 4711 li a4,4 + 3bc08770: cf98 sw a4,24(a5) + 3bc08772: 6105 addi sp,sp,32 + 3bc08774: 8082 ret + +000000003bc08776 : + 3bc08776: 00060737 lui a4,0x60 + 3bc0877a: 080107b7 lui a5,0x8010 + 3bc0877e: 0719 addi a4,a4,6 + 3bc08780: c398 sw a4,0(a5) + 3bc08782: 1101 addi sp,sp,-32 + 3bc08784: 80004737 lui a4,0x80004 + 3bc08788: e802 sd zero,16(sp) + 3bc0878a: ec02 sd zero,24(sp) + 3bc0878c: c602 sw zero,12(sp) + 3bc0878e: a0070713 addi a4,a4,-1536 # ffffffff80003a00 <__BL2_END__+0xffffffff443f01f0> + 3bc08792: c3b8 sw a4,64(a5) + 3bc08794: 4732 lw a4,12(sp) + 3bc08796: c3f8 sw a4,68(a5) + 3bc08798: 4742 lw a4,16(sp) + 3bc0879a: c7b8 sw a4,72(a5) + 3bc0879c: 4752 lw a4,20(sp) + 3bc0879e: c7f8 sw a4,76(a5) + 3bc087a0: 4762 lw a4,24(sp) + 3bc087a2: cbb8 sw a4,80(a5) + 3bc087a4: 4772 lw a4,28(sp) + 3bc087a6: cbf8 sw a4,84(a5) + 3bc087a8: 00100737 lui a4,0x100 + 3bc087ac: 0007a823 sw zero,16(a5) # 8010010 + 3bc087b0: 177d addi a4,a4,-1 + 3bc087b2: cbd8 sw a4,20(a5) + 3bc087b4: 4711 li a4,4 + 3bc087b6: cf98 sw a4,24(a5) + 3bc087b8: 6105 addi sp,sp,32 + 3bc087ba: 8082 ret + +000000003bc087bc : + 3bc087bc: 000607b7 lui a5,0x60 + 3bc087c0: 08010737 lui a4,0x8010 + 3bc087c4: 0799 addi a5,a5,6 + 3bc087c6: c31c sw a5,0(a4) + 3bc087c8: 1101 addi sp,sp,-32 + 3bc087ca: e519 bnez a0,3bc087d8 + 3bc087cc: 200017b7 lui a5,0x20001 + 3bc087d0: 078a slli a5,a5,0x2 + 3bc087d2: a0078793 addi a5,a5,-1536 # 20000a00 + 3bc087d6: a0ad j 3bc08840 + 3bc087d8: 4785 li a5,1 + 3bc087da: 04f51c63 bne a0,a5,3bc08832 + 3bc087de: 6785 lui a5,0x1 + 3bc087e0: f0578793 addi a5,a5,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc087e4: d35c sw a5,36(a4) + 3bc087e6: 00003797 auipc a5,0x3 + 3bc087ea: f0a7b783 ld a5,-246(a5) # 3bc0b6f0 + 3bc087ee: e43e sd a5,8(sp) + 3bc087f0: 00003797 auipc a5,0x3 + 3bc087f4: f087b783 ld a5,-248(a5) # 3bc0b6f8 + 3bc087f8: e83e sd a5,16(sp) + 3bc087fa: 478d li a5,3 + 3bc087fc: 07fa slli a5,a5,0x1e + 3bc087fe: 0785 addi a5,a5,1 + 3bc08800: ec3e sd a5,24(sp) + 3bc08802: 4722 lw a4,8(sp) + 3bc08804: 080107b7 lui a5,0x8010 + 3bc08808: c3b8 sw a4,64(a5) + 3bc0880a: 4732 lw a4,12(sp) + 3bc0880c: c3f8 sw a4,68(a5) + 3bc0880e: 4742 lw a4,16(sp) + 3bc08810: c7b8 sw a4,72(a5) + 3bc08812: 4752 lw a4,20(sp) + 3bc08814: c7f8 sw a4,76(a5) + 3bc08816: 4762 lw a4,24(sp) + 3bc08818: cbb8 sw a4,80(a5) + 3bc0881a: 4772 lw a4,28(sp) + 3bc0881c: cbf8 sw a4,84(a5) + 3bc0881e: 00100737 lui a4,0x100 + 3bc08822: 0007a823 sw zero,16(a5) # 8010010 + 3bc08826: 177d addi a4,a4,-1 + 3bc08828: cbd8 sw a4,20(a5) + 3bc0882a: 4711 li a4,4 + 3bc0882c: cf98 sw a4,24(a5) + 3bc0882e: 6105 addi sp,sp,32 + 3bc08830: 8082 ret + 3bc08832: 4789 li a5,2 + 3bc08834: 00f51a63 bne a0,a5,3bc08848 + 3bc08838: 00003797 auipc a5,0x3 + 3bc0883c: ec87b783 ld a5,-312(a5) # 3bc0b700 + 3bc08840: e43e sd a5,8(sp) + 3bc08842: e802 sd zero,16(sp) + 3bc08844: ec02 sd zero,24(sp) + 3bc08846: bf75 j 3bc08802 + 3bc08848: 47c9 li a5,18 + 3bc0884a: 02f51563 bne a0,a5,3bc08874 + 3bc0884e: 080006b7 lui a3,0x8000 + 3bc08852: 0846a783 lw a5,132(a3) # 8000084 + 3bc08856: 6709 lui a4,0x2 + 3bc08858: f0070713 addi a4,a4,-256 # 1f00 <__BSS_SIZE__-0x3d10> + 3bc0885c: 2781 sext.w a5,a5 + 3bc0885e: 9b81 andi a5,a5,-32 + 3bc08860: 01d7e793 ori a5,a5,29 + 3bc08864: 8fd9 or a5,a5,a4 + 3bc08866: 0000b717 auipc a4,0xb + 3bc0886a: f8f72523 sw a5,-118(a4) # 3bc137f0 + 3bc0886e: 08f6a223 sw a5,132(a3) + 3bc08872: b7d9 j 3bc08838 + 3bc08874: 47c1 li a5,16 + 3bc08876: f8f516e3 bne a0,a5,3bc08802 + 3bc0887a: 08000637 lui a2,0x8000 + 3bc0887e: 08462783 lw a5,132(a2) # 8000084 + 3bc08882: 6689 lui a3,0x2 + 3bc08884: f0068693 addi a3,a3,-256 # 1f00 <__BSS_SIZE__-0x3d10> + 3bc08888: 2781 sext.w a5,a5 + 3bc0888a: 9b81 andi a5,a5,-32 + 3bc0888c: 0017e793 ori a5,a5,1 + 3bc08890: 3007c713 xori a4,a5,768 + 3bc08894: 8f75 and a4,a4,a3 + 3bc08896: 8fb9 xor a5,a5,a4 + 3bc08898: 0000b717 auipc a4,0xb + 3bc0889c: f4f72c23 sw a5,-168(a4) # 3bc137f0 + 3bc088a0: 08f62223 sw a5,132(a2) + 3bc088a4: b725 j 3bc087cc + +000000003bc088a6 : + 3bc088a6: 000607b7 lui a5,0x60 + 3bc088aa: 08010737 lui a4,0x8010 + 3bc088ae: 0799 addi a5,a5,6 + 3bc088b0: c31c sw a5,0(a4) + 3bc088b2: 1101 addi sp,sp,-32 + 3bc088b4: e909 bnez a0,3bc088c6 + 3bc088b6: 00003797 auipc a5,0x3 + 3bc088ba: e527b783 ld a5,-430(a5) # 3bc0b708 + 3bc088be: e43e sd a5,8(sp) + 3bc088c0: e802 sd zero,16(sp) + 3bc088c2: ec02 sd zero,24(sp) + 3bc088c4: a035 j 3bc088f0 + 3bc088c6: 4785 li a5,1 + 3bc088c8: 04f51c63 bne a0,a5,3bc08920 + 3bc088cc: 6785 lui a5,0x1 + 3bc088ce: f0578793 addi a5,a5,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc088d2: d35c sw a5,36(a4) + 3bc088d4: 00003797 auipc a5,0x3 + 3bc088d8: e1c7b783 ld a5,-484(a5) # 3bc0b6f0 + 3bc088dc: e43e sd a5,8(sp) + 3bc088de: 00003797 auipc a5,0x3 + 3bc088e2: e1a7b783 ld a5,-486(a5) # 3bc0b6f8 + 3bc088e6: e83e sd a5,16(sp) + 3bc088e8: 478d li a5,3 + 3bc088ea: 07fa slli a5,a5,0x1e + 3bc088ec: 0785 addi a5,a5,1 + 3bc088ee: ec3e sd a5,24(sp) + 3bc088f0: 4722 lw a4,8(sp) + 3bc088f2: 080107b7 lui a5,0x8010 + 3bc088f6: c3b8 sw a4,64(a5) + 3bc088f8: 4732 lw a4,12(sp) + 3bc088fa: c3f8 sw a4,68(a5) + 3bc088fc: 4742 lw a4,16(sp) + 3bc088fe: c7b8 sw a4,72(a5) + 3bc08900: 4752 lw a4,20(sp) + 3bc08902: c7f8 sw a4,76(a5) + 3bc08904: 4762 lw a4,24(sp) + 3bc08906: cbb8 sw a4,80(a5) + 3bc08908: 4772 lw a4,28(sp) + 3bc0890a: cbf8 sw a4,84(a5) + 3bc0890c: 00100737 lui a4,0x100 + 3bc08910: 0007a823 sw zero,16(a5) # 8010010 + 3bc08914: 177d addi a4,a4,-1 + 3bc08916: cbd8 sw a4,20(a5) + 3bc08918: 4711 li a4,4 + 3bc0891a: cf98 sw a4,24(a5) + 3bc0891c: 6105 addi sp,sp,32 + 3bc0891e: 8082 ret + 3bc08920: 47c5 li a5,17 + 3bc08922: 00003717 auipc a4,0x3 + 3bc08926: de670713 addi a4,a4,-538 # 3bc0b708 + 3bc0892a: 00f51f63 bne a0,a5,3bc08948 + 3bc0892e: 67c1 lui a5,0x10 + 3bc08930: 30178793 addi a5,a5,769 # 10301 <__BSS_SIZE__+0xa6f1> + 3bc08934: 0000b697 auipc a3,0xb + 3bc08938: eaf6ae23 sw a5,-324(a3) # 3bc137f0 + 3bc0893c: 080006b7 lui a3,0x8000 + 3bc08940: 18f6a823 sw a5,400(a3) # 8000190 + 3bc08944: 631c ld a5,0(a4) + 3bc08946: bfa5 j 3bc088be + 3bc08948: 47c9 li a5,18 + 3bc0894a: f6f516e3 bne a0,a5,3bc088b6 + 3bc0894e: 67c9 lui a5,0x12 + 3bc08950: f1d78793 addi a5,a5,-227 # 11f1d <__BSS_SIZE__+0xc30d> + 3bc08954: b7c5 j 3bc08934 + +000000003bc08956 : + 3bc08956: 00060737 lui a4,0x60 + 3bc0895a: 080107b7 lui a5,0x8010 + 3bc0895e: 0719 addi a4,a4,6 + 3bc08960: c398 sw a4,0(a5) + 3bc08962: 6705 lui a4,0x1 + 3bc08964: f0570713 addi a4,a4,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc08968: d3d8 sw a4,36(a5) + 3bc0896a: 40103737 lui a4,0x40103 + 3bc0896e: 1101 addi sp,sp,-32 + 3bc08970: e0070713 addi a4,a4,-512 # 40102e00 <__BL2_END__+0x44ef5f0> + 3bc08974: c63a sw a4,12(sp) + 3bc08976: 00401737 lui a4,0x401 + 3bc0897a: 81770713 addi a4,a4,-2025 # 400817 <__BSS_SIZE__+0x3fac07> + 3bc0897e: 0726 slli a4,a4,0x9 + 3bc08980: e83a sd a4,16(sp) + 3bc08982: 40102737 lui a4,0x40102 + 3bc08986: ec02 sd zero,24(sp) + 3bc08988: 60070713 addi a4,a4,1536 # 40102600 <__BL2_END__+0x44eedf0> + 3bc0898c: c3b8 sw a4,64(a5) + 3bc0898e: 4732 lw a4,12(sp) + 3bc08990: c3f8 sw a4,68(a5) + 3bc08992: 4742 lw a4,16(sp) + 3bc08994: c7b8 sw a4,72(a5) + 3bc08996: 4752 lw a4,20(sp) + 3bc08998: c7f8 sw a4,76(a5) + 3bc0899a: 4762 lw a4,24(sp) + 3bc0899c: cbb8 sw a4,80(a5) + 3bc0899e: 4772 lw a4,28(sp) + 3bc089a0: cbf8 sw a4,84(a5) + 3bc089a2: 00100737 lui a4,0x100 + 3bc089a6: 0007a823 sw zero,16(a5) # 8010010 + 3bc089aa: 177d addi a4,a4,-1 + 3bc089ac: cbd8 sw a4,20(a5) + 3bc089ae: 4711 li a4,4 + 3bc089b0: cf98 sw a4,24(a5) + 3bc089b2: 6105 addi sp,sp,32 + 3bc089b4: 8082 ret + +000000003bc089b6 : + 3bc089b6: 000307b7 lui a5,0x30 + 3bc089ba: 08010737 lui a4,0x8010 + 3bc089be: 078d addi a5,a5,3 + 3bc089c0: c31c sw a5,0(a4) + 3bc089c2: 0000b897 auipc a7,0xb + 3bc089c6: e2e88893 addi a7,a7,-466 # 3bc137f0 + 3bc089ca: 08072783 lw a5,128(a4) # 8010080 + 3bc089ce: 08070693 addi a3,a4,128 + 3bc089d2: 2781 sext.w a5,a5 + 3bc089d4: 00f8a023 sw a5,0(a7) + 3bc089d8: 0047f813 andi a6,a5,4 + 3bc089dc: fe0807e3 beqz a6,3bc089ca + 3bc089e0: 0c37b78b extu a5,a5,3,3 + 3bc089e4: c79d beqz a5,3bc08a12 + 3bc089e6: 00052023 sw zero,0(a0) + 3bc089ea: e2e6c80b lwd a6,a4,(a3),1,3 + 3bc089ee: e4f6c50b lwd a0,a5,(a3),2,3 + 3bc089f2: 1702 slli a4,a4,0x20 + 3bc089f4: 7c08368b extu a3,a6,31,0 + 3bc089f8: 8f55 or a4,a4,a3 + 3bc089fa: 1782 slli a5,a5,0x20 + 3bc089fc: 7c05350b extu a0,a0,31,0 + 3bc08a00: e198 sd a4,0(a1) + 3bc08a02: 8fc9 or a5,a5,a0 + 3bc08a04: e21c sd a5,0(a2) + 3bc08a06: 080107b7 lui a5,0x8010 + 3bc08a0a: 00050737 lui a4,0x50 + 3bc08a0e: c398 sw a4,0(a5) + 3bc08a10: 8082 ret + 3bc08a12: 4785 li a5,1 + 3bc08a14: c11c sw a5,0(a0) + 3bc08a16: 0005b023 sd zero,0(a1) + 3bc08a1a: 00063023 sd zero,0(a2) + 3bc08a1e: b7e5 j 3bc08a06 + +000000003bc08a20 : + 3bc08a20: 7159 addi sp,sp,-112 + 3bc08a22: f0a2 sd s0,96(sp) + 3bc08a24: eca6 sd s1,88(sp) + 3bc08a26: e8ca sd s2,80(sp) + 3bc08a28: e4ce sd s3,72(sp) + 3bc08a2a: e0d2 sd s4,64(sp) + 3bc08a2c: fc56 sd s5,56(sp) + 3bc08a2e: f486 sd ra,104(sp) + 3bc08a30: f85a sd s6,48(sp) + 3bc08a32: f45e sd s7,40(sp) + 3bc08a34: f062 sd s8,32(sp) + 3bc08a36: c4dff0ef jal ra,3bc08682 + 3bc08a3a: 080017b7 lui a5,0x8001 + 3bc08a3e: b147a403 lw s0,-1260(a5) # 8000b14 + 3bc08a42: b447a783 lw a5,-1212(a5) + 3bc08a46: 4925 li s2,9 + 3bc08a48: 080007b7 lui a5,0x8000 + 3bc08a4c: 0947a483 lw s1,148(a5) # 8000094 + 3bc08a50: 2401 sext.w s0,s0 + 3bc08a52: 001f0a37 lui s4,0x1f0 + 3bc08a56: 2481 sext.w s1,s1 + 3bc08a58: 080019b7 lui s3,0x8001 + 3bc08a5c: 4a85 li s5,1 + 3bc08a5e: 0109171b slliw a4,s2,0x10 + 3bc08a62: 8f21 xor a4,a4,s0 + 3bc08a64: 01477733 and a4,a4,s4 + 3bc08a68: 8c39 xor s0,s0,a4 + 3bc08a6a: 2401 sext.w s0,s0 + 3bc08a6c: b089aa23 sw s0,-1260(s3) # 8000b14 + 3bc08a70: b489a223 sw s0,-1212(s3) + 3bc08a74: 0830 addi a2,sp,24 + 3bc08a76: 080c addi a1,sp,16 + 3bc08a78: 0068 addi a0,sp,12 + 3bc08a7a: f3dff0ef jal ra,3bc089b6 + 3bc08a7e: 47b2 lw a5,12(sp) + 3bc08a80: 00090c1b sext.w s8,s2 + 3bc08a84: ef8d bnez a5,3bc08abe + 3bc08a86: 00f4f793 andi a5,s1,15 + 3bc08a8a: 2785 addiw a5,a5,1 + 3bc08a8c: 018787bb addw a5,a5,s8 + 3bc08a90: 0107979b slliw a5,a5,0x10 + 3bc08a94: 8fa1 xor a5,a5,s0 + 3bc08a96: 0147f7b3 and a5,a5,s4 + 3bc08a9a: 8c3d xor s0,s0,a5 + 3bc08a9c: 2401 sext.w s0,s0 + 3bc08a9e: b089aa23 sw s0,-1260(s3) + 3bc08aa2: b489a223 sw s0,-1212(s3) + 3bc08aa6: 70a6 ld ra,104(sp) + 3bc08aa8: 7406 ld s0,96(sp) + 3bc08aaa: 64e6 ld s1,88(sp) + 3bc08aac: 6946 ld s2,80(sp) + 3bc08aae: 69a6 ld s3,72(sp) + 3bc08ab0: 6a06 ld s4,64(sp) + 3bc08ab2: 7ae2 ld s5,56(sp) + 3bc08ab4: 7b42 ld s6,48(sp) + 3bc08ab6: 7ba2 ld s7,40(sp) + 3bc08ab8: 7c02 ld s8,32(sp) + 3bc08aba: 6165 addi sp,sp,112 + 3bc08abc: 8082 ret + 3bc08abe: 397d addiw s2,s2,-1 + 3bc08ac0: f9591fe3 bne s2,s5,3bc08a5e + 3bc08ac4: b7cd j 3bc08aa6 + +000000003bc08ac6 : + 3bc08ac6: 08004737 lui a4,0x8004 + 3bc08aca: 18072683 lw a3,384(a4) # 8004180 + 3bc08ace: 0006879b sext.w a5,a3 + 3bc08ad2: 01f6d69b srliw a3,a3,0x1f + 3bc08ad6: e691 bnez a3,3bc08ae2 + 3bc08ad8: 80000637 lui a2,0x80000 + 3bc08adc: 8fd1 or a5,a5,a2 + 3bc08ade: 18f72023 sw a5,384(a4) + 3bc08ae2: 0000b797 auipc a5,0xb + 3bc08ae6: d007a723 sw zero,-754(a5) # 3bc137f0 + 3bc08aea: 08004737 lui a4,0x8004 + 3bc08aee: 0000b617 auipc a2,0xb + 3bc08af2: d0260613 addi a2,a2,-766 # 3bc137f0 + 3bc08af6: 4f1c lw a5,24(a4) + 3bc08af8: 2781 sext.w a5,a5 + 3bc08afa: c21c sw a5,0(a2) + 3bc08afc: 8b85 andi a5,a5,1 + 3bc08afe: ffe5 bnez a5,3bc08af6 + 3bc08b00: 00c5179b slliw a5,a0,0xc + 3bc08b04: 0107c793 xori a5,a5,16 + 3bc08b08: 653d lui a0,0xf + 3bc08b0a: 8fe9 and a5,a5,a0 + 3bc08b0c: 0107c793 xori a5,a5,16 + 3bc08b10: 2781 sext.w a5,a5 + 3bc08b12: cb1c sw a5,16(a4) + 3bc08b14: c20c sw a1,0(a2) + 3bc08b16: cb4c sw a1,20(a4) + 3bc08b18: 4b1c lw a5,16(a4) + 3bc08b1a: 800005b7 lui a1,0x80000 + 3bc08b1e: 8fcd or a5,a5,a1 + 3bc08b20: c21c sw a5,0(a2) + 3bc08b22: cb1c sw a5,16(a4) + 3bc08b24: ea91 bnez a3,3bc08b38 + 3bc08b26: 18072783 lw a5,384(a4) # 8004180 + 3bc08b2a: 2781 sext.w a5,a5 + 3bc08b2c: 7807b78b extu a5,a5,30,0 + 3bc08b30: 2781 sext.w a5,a5 + 3bc08b32: c21c sw a5,0(a2) + 3bc08b34: 18f72023 sw a5,384(a4) + 3bc08b38: 8082 ret + +000000003bc08b3a : + 3bc08b3a: 080067b7 lui a5,0x8006 + 3bc08b3e: 47fc lw a5,76(a5) + 3bc08b40: 0000b717 auipc a4,0xb + 3bc08b44: cb070713 addi a4,a4,-848 # 3bc137f0 + 3bc08b48: 2781 sext.w a5,a5 + 3bc08b4a: c31c sw a5,0(a4) + 3bc08b4c: 1447b78b extu a5,a5,5,4 + 3bc08b50: cf9d beqz a5,3bc08b8e + 3bc08b52: 080006b7 lui a3,0x8000 + 3bc08b56: 42bc lw a5,64(a3) + 3bc08b58: 7601 lui a2,0xfffe0 + 3bc08b5a: 1675 addi a2,a2,-3 + 3bc08b5c: 2781 sext.w a5,a5 + 3bc08b5e: 8ff1 and a5,a5,a2 + 3bc08b60: c31c sw a5,0(a4) + 3bc08b62: c2bc sw a5,64(a3) + 3bc08b64: 42bc lw a5,64(a3) + 3bc08b66: 00020637 lui a2,0x20 + 3bc08b6a: 0609 addi a2,a2,2 + 3bc08b6c: 2781 sext.w a5,a5 + 3bc08b6e: 8fd1 or a5,a5,a2 + 3bc08b70: c2bc sw a5,64(a3) + 3bc08b72: 0000b797 auipc a5,0xb + 3bc08b76: c607af23 sw zero,-898(a5) # 3bc137f0 + 3bc08b7a: 08003637 lui a2,0x8003 + 3bc08b7e: 66c1 lui a3,0x10 + 3bc08b80: 4a5c lw a5,20(a2) + 3bc08b82: 2781 sext.w a5,a5 + 3bc08b84: c31c sw a5,0(a4) + 3bc08b86: 8ff5 and a5,a5,a3 + 3bc08b88: 2781 sext.w a5,a5 + 3bc08b8a: dbfd beqz a5,3bc08b80 + 3bc08b8c: 8082 ret + 3bc08b8e: 08000637 lui a2,0x8000 + 3bc08b92: 423c lw a5,64(a2) + 3bc08b94: 7681 lui a3,0xfffe0 + 3bc08b96: 16f5 addi a3,a3,-3 + 3bc08b98: 2781 sext.w a5,a5 + 3bc08b9a: 8ff5 and a5,a5,a3 + 3bc08b9c: c31c sw a5,0(a4) + 3bc08b9e: c23c sw a5,64(a2) + 3bc08ba0: 8082 ret + +000000003bc08ba2 : + 3bc08ba2: 080066b7 lui a3,0x8006 + 3bc08ba6: 46dc lw a5,12(a3) + 3bc08ba8: 7769 lui a4,0xffffa + 3bc08baa: 177d addi a4,a4,-1 + 3bc08bac: 2781 sext.w a5,a5 + 3bc08bae: 8ff9 and a5,a5,a4 + 3bc08bb0: 03003737 lui a4,0x3003 + 3bc08bb4: c6dc sw a5,12(a3) + 3bc08bb6: 90070713 addi a4,a4,-1792 # 3002900 <__BSS_SIZE__+0x2ffccf0> + 3bc08bba: 0000b797 auipc a5,0xb + 3bc08bbe: c0e7a783 lw a5,-1010(a5) # 3bc137c8 + 3bc08bc2: cb7c sw a5,84(a4) + 3bc08bc4: 0000b797 auipc a5,0xb + 3bc08bc8: c0c7d783 lhu a5,-1012(a5) # 3bc137d0 + 3bc08bcc: cf3c sw a5,88(a4) + 3bc08bce: 0000b797 auipc a5,0xb + 3bc08bd2: c0a7b783 ld a5,-1014(a5) # 3bc137d8 + 3bc08bd6: 5c07b78b extu a5,a5,23,0 + 3bc08bda: 2781 sext.w a5,a5 + 3bc08bdc: 0000b697 auipc a3,0xb + 3bc08be0: c1468693 addi a3,a3,-1004 # 3bc137f0 + 3bc08be4: c29c sw a5,0(a3) + 3bc08be6: cf7c sw a5,92(a4) + 3bc08be8: 4b3c lw a5,80(a4) + 3bc08bea: 2781 sext.w a5,a5 + 3bc08bec: 0017c793 xori a5,a5,1 + 3bc08bf0: fa17f793 andi a5,a5,-95 + 3bc08bf4: 0207e793 ori a5,a5,32 + 3bc08bf8: c29c sw a5,0(a3) + 3bc08bfa: cb3c sw a5,80(a4) + 3bc08bfc: 8082 ret + +000000003bc08bfe : + 3bc08bfe: 08006737 lui a4,0x8006 + 3bc08c02: 475c lw a5,12(a4) + 3bc08c04: 6691 lui a3,0x4 + 3bc08c06: 8fd5 or a5,a5,a3 + 3bc08c08: 0000b697 auipc a3,0xb + 3bc08c0c: bef6a423 sw a5,-1048(a3) # 3bc137f0 + 3bc08c10: c75c sw a5,12(a4) + 3bc08c12: 8082 ret + +000000003bc08c14 : + 3bc08c14: 08006737 lui a4,0x8006 + 3bc08c18: 475c lw a5,12(a4) + 3bc08c1a: 6689 lui a3,0x2 + 3bc08c1c: 8fd5 or a5,a5,a3 + 3bc08c1e: 0000b697 auipc a3,0xb + 3bc08c22: bcf6a923 sw a5,-1070(a3) # 3bc137f0 + 3bc08c26: c75c sw a5,12(a4) + 3bc08c28: 8082 ret + +000000003bc08c2a : + 3bc08c2a: 1101 addi sp,sp,-32 + 3bc08c2c: 0000b797 auipc a5,0xb + 3bc08c30: bc07a223 sw zero,-1084(a5) # 3bc137f0 + 3bc08c34: 080066b7 lui a3,0x8006 + 3bc08c38: e822 sd s0,16(sp) + 3bc08c3a: ec06 sd ra,24(sp) + 3bc08c3c: e426 sd s1,8(sp) + 3bc08c3e: e04a sd s2,0(sp) + 3bc08c40: 0006a223 sw zero,4(a3) # 8006004 + 3bc08c44: 0006a423 sw zero,8(a3) + 3bc08c48: 46dc lw a5,12(a3) + 3bc08c4a: 0000b417 auipc s0,0xb + 3bc08c4e: ba640413 addi s0,s0,-1114 # 3bc137f0 + 3bc08c52: 2781 sext.w a5,a5 + 3bc08c54: f7f7f793 andi a5,a5,-129 + 3bc08c58: c01c sw a5,0(s0) + 3bc08c5a: c6dc sw a5,12(a3) + 3bc08c5c: 46fc lw a5,76(a3) + 3bc08c5e: c01c sw a5,0(s0) + 3bc08c60: 46fc lw a5,76(a3) + 3bc08c62: c01c sw a5,0(s0) + 3bc08c64: 46fc lw a5,76(a3) + 3bc08c66: c01c sw a5,0(s0) + 3bc08c68: 46fc lw a5,76(a3) + 3bc08c6a: c01c sw a5,0(s0) + 3bc08c6c: 46fc lw a5,76(a3) + 3bc08c6e: c01c sw a5,0(s0) + 3bc08c70: 46f8 lw a4,76(a3) + 3bc08c72: 0007079b sext.w a5,a4 + 3bc08c76: 8b05 andi a4,a4,1 + 3bc08c78: c315 beqz a4,3bc08c9c + 3bc08c7a: 2487b60b extu a2,a5,9,8 + 3bc08c7e: 1447b70b extu a4,a5,5,4 + 3bc08c82: e629 bnez a2,3bc08ccc + 3bc08c84: fcf7f793 andi a5,a5,-49 + 3bc08c88: 0087171b slliw a4,a4,0x8 + 3bc08c8c: 8f3d xor a4,a4,a5 + 3bc08c8e: 30077713 andi a4,a4,768 + 3bc08c92: 8fb9 xor a5,a5,a4 + 3bc08c94: c01c sw a5,0(s0) + 3bc08c96: c6fc sw a5,76(a3) + 3bc08c98: f7dff0ef jal ra,3bc08c14 + 3bc08c9c: 4685 li a3,1 + 3bc08c9e: c014 sw a3,0(s0) + 3bc08ca0: 08006737 lui a4,0x8006 + 3bc08ca4: c354 sw a3,4(a4) + 3bc08ca6: 475c lw a5,12(a4) + 3bc08ca8: 64a1 lui s1,0x8 + 3bc08caa: 08006937 lui s2,0x8006 + 3bc08cae: 2781 sext.w a5,a5 + 3bc08cb0: 0807e793 ori a5,a5,128 + 3bc08cb4: c75c sw a5,12(a4) + 3bc08cb6: c014 sw a3,0(s0) + 3bc08cb8: c714 sw a3,8(a4) + 3bc08cba: 401c lw a5,0(s0) + 3bc08cbc: 8fe5 and a5,a5,s1 + 3bc08cbe: cbb9 beqz a5,3bc08d14 + 3bc08cc0: 60e2 ld ra,24(sp) + 3bc08cc2: 6442 ld s0,16(sp) + 3bc08cc4: 64a2 ld s1,8(sp) + 3bc08cc6: 6902 ld s2,0(sp) + 3bc08cc8: 6105 addi sp,sp,32 + 3bc08cca: 8082 ret + 3bc08ccc: 4589 li a1,2 + 3bc08cce: 02b61163 bne a2,a1,3bc08cf0 + 3bc08cd2: fcf7f793 andi a5,a5,-49 + 3bc08cd6: 0207e793 ori a5,a5,32 + 3bc08cda: 0087171b slliw a4,a4,0x8 + 3bc08cde: 8f3d xor a4,a4,a5 + 3bc08ce0: 30077713 andi a4,a4,768 + 3bc08ce4: 8fb9 xor a5,a5,a4 + 3bc08ce6: c01c sw a5,0(s0) + 3bc08ce8: c6fc sw a5,76(a3) + 3bc08cea: eb9ff0ef jal ra,3bc08ba2 + 3bc08cee: b77d j 3bc08c9c + 3bc08cf0: 4585 li a1,1 + 3bc08cf2: fab615e3 bne a2,a1,3bc08c9c + 3bc08cf6: fcf7f793 andi a5,a5,-49 + 3bc08cfa: 0107e793 ori a5,a5,16 + 3bc08cfe: 0087171b slliw a4,a4,0x8 + 3bc08d02: 8f3d xor a4,a4,a5 + 3bc08d04: 30077713 andi a4,a4,768 + 3bc08d08: 8fb9 xor a5,a5,a4 + 3bc08d0a: c01c sw a5,0(s0) + 3bc08d0c: c6fc sw a5,76(a3) + 3bc08d0e: ef1ff0ef jal ra,3bc08bfe + 3bc08d12: b769 j 3bc08c9c + 3bc08d14: 01092783 lw a5,16(s2) # 8006010 + 3bc08d18: 4501 li a0,0 + 3bc08d1a: c01c sw a5,0(s0) + 3bc08d1c: c6ef70ef jal ra,3bc0018a + 3bc08d20: bf69 j 3bc08cba + +000000003bc08d22 : + 3bc08d22: 080067b7 lui a5,0x8006 + 3bc08d26: 43b4 lw a3,64(a5) + 3bc08d28: bf000737 lui a4,0xbf000 + 3bc08d2c: 377d addiw a4,a4,-1 + 3bc08d2e: 8f75 and a4,a4,a3 + 3bc08d30: 0000b697 auipc a3,0xb + 3bc08d34: ac068693 addi a3,a3,-1344 # 3bc137f0 + 3bc08d38: c298 sw a4,0(a3) + 3bc08d3a: c3b8 sw a4,64(a5) + 3bc08d3c: 43b8 lw a4,64(a5) + 3bc08d3e: 0006a023 sw zero,0(a3) + 3bc08d42: 0407a023 sw zero,64(a5) # 8006040 + 3bc08d46: 4fd8 lw a4,28(a5) + 3bc08d48: 2701 sext.w a4,a4 + 3bc08d4a: 08076713 ori a4,a4,128 + 3bc08d4e: cfd8 sw a4,28(a5) + 3bc08d50: 0006a023 sw zero,0(a3) + 3bc08d54: 0007a023 sw zero,0(a5) + 3bc08d58: 4fd8 lw a4,28(a5) + 3bc08d5a: 2701 sext.w a4,a4 + 3bc08d5c: f7f77713 andi a4,a4,-129 + 3bc08d60: c298 sw a4,0(a3) + 3bc08d62: cfd8 sw a4,28(a5) + 3bc08d64: 8082 ret + +000000003bc08d66 : + 3bc08d66: 1141 addi sp,sp,-16 + 3bc08d68: e406 sd ra,8(sp) + 3bc08d6a: e022 sd s0,0(sp) + 3bc08d6c: ebfff0ef jal ra,3bc08c2a + 3bc08d70: 08000737 lui a4,0x8000 + 3bc08d74: 15472783 lw a5,340(a4) # 8000154 + 3bc08d78: 0000b417 auipc s0,0xb + 3bc08d7c: a7840413 addi s0,s0,-1416 # 3bc137f0 + 3bc08d80: 2781 sext.w a5,a5 + 3bc08d82: 9bf9 andi a5,a5,-2 + 3bc08d84: 14f72a23 sw a5,340(a4) + 3bc08d88: 00042023 sw zero,0(s0) + 3bc08d8c: 12072823 sw zero,304(a4) + 3bc08d90: dabff0ef jal ra,3bc08b3a + 3bc08d94: 080067b7 lui a5,0x8006 + 3bc08d98: 80000737 lui a4,0x80000 + 3bc08d9c: c3b8 sw a4,64(a5) + 3bc08d9e: 00042023 sw zero,0(s0) + 3bc08da2: 60a2 ld ra,8(sp) + 3bc08da4: 6402 ld s0,0(sp) + 3bc08da6: 0007a023 sw zero,0(a5) # 8006000 + 3bc08daa: 0141 addi sp,sp,16 + 3bc08dac: 8082 ret + +000000003bc08dae : + 3bc08dae: 080007b7 lui a5,0x8000 + 3bc08db2: 10078693 addi a3,a5,256 # 8000100 + 3bc08db6: 4af8 lw a4,84(a3) + 3bc08db8: 0000b617 auipc a2,0xb + 3bc08dbc: a3860613 addi a2,a2,-1480 # 3bc137f0 + 3bc08dc0: 20078793 addi a5,a5,512 + 3bc08dc4: 2701 sext.w a4,a4 + 3bc08dc6: 9b79 andi a4,a4,-2 + 3bc08dc8: caf8 sw a4,84(a3) + 3bc08dca: 00062023 sw zero,0(a2) + 3bc08dce: f207a823 sw zero,-208(a5) + 3bc08dd2: 43d4 lw a3,4(a5) + 3bc08dd4: 000405b7 lui a1,0x40 + 3bc08dd8: 8ecd or a3,a3,a1 + 3bc08dda: c214 sw a3,0(a2) + 3bc08ddc: c3d4 sw a3,4(a5) + 3bc08dde: 53d8 lw a4,36(a5) + 3bc08de0: 8f4d or a4,a4,a1 + 3bc08de2: c218 sw a4,0(a2) + 3bc08de4: d3d8 sw a4,36(a5) + 3bc08de6: 8082 ret + +000000003bc08de8 : + 3bc08de8: 08004737 lui a4,0x8004 + 3bc08dec: 0000b697 auipc a3,0xb + 3bc08df0: a0468693 addi a3,a3,-1532 # 3bc137f0 + 3bc08df4: 1bc72783 lw a5,444(a4) # 80041bc + 3bc08df8: 2781 sext.w a5,a5 + 3bc08dfa: c29c sw a5,0(a3) + 3bc08dfc: 8b85 andi a5,a5,1 + 3bc08dfe: dbfd beqz a5,3bc08df4 + 3bc08e00: 32072023 sw zero,800(a4) + 3bc08e04: 1b072783 lw a5,432(a4) + 3bc08e08: 2781 sext.w a5,a5 + 3bc08e0a: fc07f793 andi a5,a5,-64 + 3bc08e0e: 0057e793 ori a5,a5,5 + 3bc08e12: c29c sw a5,0(a3) + 3bc08e14: 1af72823 sw a5,432(a4) + 3bc08e18: 4785 li a5,1 + 3bc08e1a: 32f72023 sw a5,800(a4) + 3bc08e1e: 8082 ret + +000000003bc08e20 : + 3bc08e20: 080036b7 lui a3,0x8003 + 3bc08e24: 0000b717 auipc a4,0xb + 3bc08e28: 9cc70713 addi a4,a4,-1588 # 3bc137f0 + 3bc08e2c: 569c lw a5,40(a3) + 3bc08e2e: 2781 sext.w a5,a5 + 3bc08e30: c31c sw a5,0(a4) + 3bc08e32: 1007f793 andi a5,a5,256 + 3bc08e36: dbfd beqz a5,3bc08e2c + 3bc08e38: 8082 ret + +000000003bc08e3a : + 3bc08e3a: 1141 addi sp,sp,-16 + 3bc08e3c: 4551 li a0,20 + 3bc08e3e: e406 sd ra,8(sp) + 3bc08e40: b4af70ef jal ra,3bc0018a + 3bc08e44: 080007b7 lui a5,0x8000 + 3bc08e48: 4741 li a4,16 + 3bc08e4a: 12e7a023 sw a4,288(a5) # 8000120 + 3bc08e4e: 60a2 ld ra,8(sp) + 3bc08e50: 4705 li a4,1 + 3bc08e52: 0000b697 auipc a3,0xb + 3bc08e56: 98e6af23 sw a4,-1634(a3) # 3bc137f0 + 3bc08e5a: 10e7ac23 sw a4,280(a5) + 3bc08e5e: 0141 addi sp,sp,16 + 3bc08e60: 8082 ret + +000000003bc08e62 : + 3bc08e62: 1141 addi sp,sp,-16 + 3bc08e64: e406 sd ra,8(sp) + 3bc08e66: 0000b797 auipc a5,0xb + 3bc08e6a: 98a78793 addi a5,a5,-1654 # 3bc137f0 + 3bc08e6e: 0007a023 sw zero,0(a5) + 3bc08e72: 08000737 lui a4,0x8000 + 3bc08e76: 10072c23 sw zero,280(a4) # 8000118 + 3bc08e7a: 08006737 lui a4,0x8006 + 3bc08e7e: 4778 lw a4,76(a4) + 3bc08e80: c398 sw a4,0(a5) + 3bc08e82: ee5ff0ef jal ra,3bc08d66 + 3bc08e86: 60a2 ld ra,8(sp) + 3bc08e88: 0141 addi sp,sp,16 + 3bc08e8a: fb1ff06f j 3bc08e3a + +000000003bc08e8e : + 3bc08e8e: 08004637 lui a2,0x8004 + 3bc08e92: 0000b697 auipc a3,0xb + 3bc08e96: 95e68693 addi a3,a3,-1698 # 3bc137f0 + 3bc08e9a: 4705 li a4,1 + 3bc08e9c: 425c lw a5,4(a2) + 3bc08e9e: 2781 sext.w a5,a5 + 3bc08ea0: c29c sw a5,0(a3) + 3bc08ea2: 8b9d andi a5,a5,7 + 3bc08ea4: fee79ce3 bne a5,a4,3bc08e9c + 3bc08ea8: 8082 ret + +000000003bc08eaa : + 3bc08eaa: 4785 li a5,1 + 3bc08eac: 0000b717 auipc a4,0xb + 3bc08eb0: 94470713 addi a4,a4,-1724 # 3bc137f0 + 3bc08eb4: 080006b7 lui a3,0x8000 + 3bc08eb8: c31c sw a5,0(a4) + 3bc08eba: 16f6aa23 sw a5,372(a3) # 8000174 + 3bc08ebe: 08003637 lui a2,0x8003 + 3bc08ec2: 468d li a3,3 + 3bc08ec4: 5a1c lw a5,48(a2) + 3bc08ec6: 2781 sext.w a5,a5 + 3bc08ec8: c31c sw a5,0(a4) + 3bc08eca: 2487b78b extu a5,a5,9,8 + 3bc08ece: fed79be3 bne a5,a3,3bc08ec4 + 3bc08ed2: 4785 li a5,1 + 3bc08ed4: 02f51a63 bne a0,a5,3bc08f08 + 3bc08ed8: 0800a7b7 lui a5,0x800a + 3bc08edc: 46ed li a3,27 + 3bc08ede: c394 sw a3,0(a5) + 3bc08ee0: 0800a7b7 lui a5,0x800a + 3bc08ee4: 4685 li a3,1 + 3bc08ee6: c3d4 sw a3,4(a5) + 3bc08ee8: 020006b7 lui a3,0x2000 + 3bc08eec: fcb68693 addi a3,a3,-53 # 1ffffcb <__BSS_SIZE__+0x1ffa3bb> + 3bc08ef0: c794 sw a3,8(a5) + 3bc08ef2: 400006b7 lui a3,0x40000 + 3bc08ef6: 16fd addi a3,a3,-1 + 3bc08ef8: c7d4 sw a3,12(a5) + 3bc08efa: 47c1 li a5,16 + 3bc08efc: c31c sw a5,0(a4) + 3bc08efe: 08000737 lui a4,0x8000 + 3bc08f02: 16f72a23 sw a5,372(a4) # 8000174 + 3bc08f06: 8082 ret + 3bc08f08: 0800a7b7 lui a5,0x800a + 3bc08f0c: 0007a023 sw zero,0(a5) # 800a000 + 3bc08f10: bfc1 j 3bc08ee0 + +000000003bc08f12 : + 3bc08f12: 08004737 lui a4,0x8004 + 3bc08f16: 080037b7 lui a5,0x8003 + 3bc08f1a: 439c lw a5,0(a5) + 3bc08f1c: 19072683 lw a3,400(a4) # 8004190 + 3bc08f20: 0000b797 auipc a5,0xb + 3bc08f24: 8d078793 addi a5,a5,-1840 # 3bc137f0 + 3bc08f28: c394 sw a3,0(a5) + 3bc08f2a: 19472703 lw a4,404(a4) + 3bc08f2e: c398 sw a4,0(a5) + 3bc08f30: 8082 ret + +000000003bc08f32 : + 3bc08f32: 08004737 lui a4,0x8004 + 3bc08f36: 32072023 sw zero,800(a4) # 8004320 + 3bc08f3a: 1b072783 lw a5,432(a4) + 3bc08f3e: 2781 sext.w a5,a5 + 3bc08f40: 0207e793 ori a5,a5,32 + 3bc08f44: 0000b697 auipc a3,0xb + 3bc08f48: 8af6a623 sw a5,-1876(a3) # 3bc137f0 + 3bc08f4c: 1af72823 sw a5,432(a4) + 3bc08f50: 4785 li a5,1 + 3bc08f52: 32f72023 sw a5,800(a4) + 3bc08f56: 8082 ret + +000000003bc08f58 : + 3bc08f58: 080067b7 lui a5,0x8006 + 3bc08f5c: 00080737 lui a4,0x80 + 3bc08f60: 0207a423 sw zero,40(a5) # 8006028 + 3bc08f64: 0705 addi a4,a4,1 + 3bc08f66: cbf8 sw a4,84(a5) + 3bc08f68: 01011737 lui a4,0x1011 + 3bc08f6c: 80870713 addi a4,a4,-2040 # 1010808 <__BSS_SIZE__+0x100abf8> + 3bc08f70: 030036b7 lui a3,0x3003 + 3bc08f74: cfb8 sw a4,88(a5) + 3bc08f76: 90068693 addi a3,a3,-1792 # 3002900 <__BSS_SIZE__+0x2ffccf0> + 3bc08f7a: 0000b717 auipc a4,0xb + 3bc08f7e: 84e72703 lw a4,-1970(a4) # 3bc137c8 + 3bc08f82: caf8 sw a4,84(a3) + 3bc08f84: 0000b717 auipc a4,0xb + 3bc08f88: 84c75703 lhu a4,-1972(a4) # 3bc137d0 + 3bc08f8c: ceb8 sw a4,88(a3) + 3bc08f8e: 0000b717 auipc a4,0xb + 3bc08f92: 84a73703 ld a4,-1974(a4) # 3bc137d8 + 3bc08f96: 5c07370b extu a4,a4,23,0 + 3bc08f9a: 0000b617 auipc a2,0xb + 3bc08f9e: 85660613 addi a2,a2,-1962 # 3bc137f0 + 3bc08fa2: 2701 sext.w a4,a4 + 3bc08fa4: c218 sw a4,0(a2) + 3bc08fa6: cef8 sw a4,92(a3) + 3bc08fa8: 4ab8 lw a4,80(a3) + 3bc08faa: 2701 sext.w a4,a4 + 3bc08fac: 00174713 xori a4,a4,1 + 3bc08fb0: fa177713 andi a4,a4,-95 + 3bc08fb4: 02076713 ori a4,a4,32 + 3bc08fb8: c218 sw a4,0(a2) + 3bc08fba: cab8 sw a4,80(a3) + 3bc08fbc: 47d8 lw a4,12(a5) + 3bc08fbe: 2701 sext.w a4,a4 + 3bc08fc0: 30b74693 xori a3,a4,779 + 3bc08fc4: 3c06b68b extu a3,a3,15,0 + 3bc08fc8: 8f35 xor a4,a4,a3 + 3bc08fca: c218 sw a4,0(a2) + 3bc08fcc: c7d8 sw a4,12(a5) + 3bc08fce: 4b98 lw a4,16(a5) + 3bc08fd0: 080066b7 lui a3,0x8006 + 3bc08fd4: 2701 sext.w a4,a4 + 3bc08fd6: f0077713 andi a4,a4,-256 + 3bc08fda: cb98 sw a4,16(a5) + 3bc08fdc: 4705 li a4,1 + 3bc08fde: c218 sw a4,0(a2) + 3bc08fe0: c3d8 sw a4,4(a5) + 3bc08fe2: 47d8 lw a4,12(a5) + 3bc08fe4: 2701 sext.w a4,a4 + 3bc08fe6: 08076713 ori a4,a4,128 + 3bc08fea: c218 sw a4,0(a2) + 3bc08fec: c7d8 sw a4,12(a5) + 3bc08fee: 6721 lui a4,0x8 + 3bc08ff0: 4a9c lw a5,16(a3) + 3bc08ff2: 2781 sext.w a5,a5 + 3bc08ff4: c21c sw a5,0(a2) + 3bc08ff6: 8ff9 and a5,a5,a4 + 3bc08ff8: 2781 sext.w a5,a5 + 3bc08ffa: dbfd beqz a5,3bc08ff0 + 3bc08ffc: 8082 ret + +000000003bc08ffe : + 3bc08ffe: 6785 lui a5,0x1 + 3bc09000: 08006737 lui a4,0x8006 + 3bc09004: 2f578793 addi a5,a5,757 # 12f5 <__BSS_SIZE__-0x491b> + 3bc09008: c37c sw a5,68(a4) + 3bc0900a: 0000a697 auipc a3,0xa + 3bc0900e: 7e668693 addi a3,a3,2022 # 3bc137f0 + 3bc09012: 0006a023 sw zero,0(a3) + 3bc09016: 080007b7 lui a5,0x8000 + 3bc0901a: 0e07aa23 sw zero,244(a5) # 80000f4 + 3bc0901e: 080047b7 lui a5,0x8004 + 3bc09022: 5b98 lw a4,48(a5) + 3bc09024: 767d lui a2,0xfffff + 3bc09026: 5ff60613 addi a2,a2,1535 # fffffffffffff5ff <__BL2_END__+0xffffffffc43ebdef> + 3bc0902a: 2701 sext.w a4,a4 + 3bc0902c: 8f71 and a4,a4,a2 + 3bc0902e: c298 sw a4,0(a3) + 3bc09030: db98 sw a4,48(a5) + 3bc09032: 10078793 addi a5,a5,256 # 8004100 + 3bc09036: 47b8 lw a4,72(a5) + 3bc09038: 7f800637 lui a2,0x7f800 + 3bc0903c: 167d addi a2,a2,-1 + 3bc0903e: 2701 sext.w a4,a4 + 3bc09040: 8f71 and a4,a4,a2 + 3bc09042: c298 sw a4,0(a3) + 3bc09044: c7b8 sw a4,72(a5) + 3bc09046: 8082 ret + +000000003bc09048 : + 3bc09048: 679d lui a5,0x7 + 3bc0904a: 0000a617 auipc a2,0xa + 3bc0904e: 7a660613 addi a2,a2,1958 # 3bc137f0 + 3bc09052: c8178793 addi a5,a5,-895 # 6c81 <__BSS_SIZE__+0x1071> + 3bc09056: c21c sw a5,0(a2) + 3bc09058: 08006737 lui a4,0x8006 + 3bc0905c: c37c sw a5,68(a4) + 3bc0905e: 08004737 lui a4,0x8004 + 3bc09062: 18070593 addi a1,a4,384 # 8004180 + 3bc09066: 499c lw a5,16(a1) + 3bc09068: 060006b7 lui a3,0x6000 + 3bc0906c: 1f000537 lui a0,0x1f000 + 3bc09070: 2781 sext.w a5,a5 + 3bc09072: 8ebd xor a3,a3,a5 + 3bc09074: 8ee9 and a3,a3,a0 + 3bc09076: 8fb5 xor a5,a5,a3 + 3bc09078: 2781 sext.w a5,a5 + 3bc0907a: c99c sw a5,16(a1) + 3bc0907c: 000307b7 lui a5,0x30 + 3bc09080: 03378793 addi a5,a5,51 # 30033 <__BSS_SIZE__+0x2a423> + 3bc09084: c21c sw a5,0(a2) + 3bc09086: 080006b7 lui a3,0x8000 + 3bc0908a: 0ef6aa23 sw a5,244(a3) # 80000f4 + 3bc0908e: 5b1c lw a5,48(a4) + 3bc09090: 76fd lui a3,0xfffff + 3bc09092: bff68693 addi a3,a3,-1025 # ffffffffffffebff <__BL2_END__+0xffffffffc43eb3ef> + 3bc09096: 2781 sext.w a5,a5 + 3bc09098: 8ff5 and a5,a5,a3 + 3bc0909a: 6685 lui a3,0x1 + 3bc0909c: a0068693 addi a3,a3,-1536 # a00 <__BSS_SIZE__-0x5210> + 3bc090a0: 8fd5 or a5,a5,a3 + 3bc090a2: c21c sw a5,0(a2) + 3bc090a4: db1c sw a5,48(a4) + 3bc090a6: 10070713 addi a4,a4,256 + 3bc090aa: 473c lw a5,72(a4) + 3bc090ac: 808006b7 lui a3,0x80800 + 3bc090b0: 8fd5 or a5,a5,a3 + 3bc090b2: c21c sw a5,0(a2) + 3bc090b4: c73c sw a5,72(a4) + 3bc090b6: 8082 ret + +000000003bc090b8 : + 3bc090b8: 715d addi sp,sp,-80 + 3bc090ba: f44e sd s3,40(sp) + 3bc090bc: e85a sd s6,16(sp) + 3bc090be: e486 sd ra,72(sp) + 3bc090c0: e0a2 sd s0,64(sp) + 3bc090c2: fc26 sd s1,56(sp) + 3bc090c4: f84a sd s2,48(sp) + 3bc090c6: f052 sd s4,32(sp) + 3bc090c8: ec56 sd s5,24(sp) + 3bc090ca: e45e sd s7,8(sp) + 3bc090cc: 080007b7 lui a5,0x8000 + 3bc090d0: 00fe0737 lui a4,0xfe0 + 3bc090d4: cff8 sw a4,92(a5) + 3bc090d6: 080047b7 lui a5,0x8004 + 3bc090da: 5407a023 sw zero,1344(a5) # 8004540 + 3bc090de: 5e07a823 sw zero,1520(a5) + 3bc090e2: 6a07a023 sw zero,1696(a5) + 3bc090e6: 08004b37 lui s6,0x8004 + 3bc090ea: 0000a997 auipc s3,0xa + 3bc090ee: 70698993 addi s3,s3,1798 # 3bc137f0 + 3bc090f2: 3fcb2783 lw a5,1020(s6) # 80043fc + 3bc090f6: 2781 sext.w a5,a5 + 3bc090f8: 00f9a023 sw a5,0(s3) + 3bc090fc: fbfd bnez a5,3bc090f2 + 3bc090fe: 030b2783 lw a5,48(s6) + 3bc09102: 0007849b sext.w s1,a5 + 3bc09106: 0017f913 andi s2,a5,1 + 3bc0910a: fd44f793 andi a5,s1,-44 + 3bc0910e: 00f9a023 sw a5,0(s3) + 3bc09112: 02fb2823 sw a5,48(s6) + 3bc09116: ee9ff0ef jal ra,3bc08ffe + 3bc0911a: 244b2a03 lw s4,580(s6) + 3bc0911e: 2a01 sext.w s4,s4 + 3bc09120: 0149a023 sw s4,0(s3) + 3bc09124: 001a7a13 andi s4,s4,1 + 3bc09128: e08ff0ef jal ra,3bc08730 + 3bc0912c: 120a0e63 beqz s4,3bc09268 + 3bc09130: 0e0b2403 lw s0,224(s6) + 3bc09134: 00040a9b sext.w s5,s0 + 3bc09138: 01945b9b srliw s7,s0,0x19 + 3bc0913c: 6994340b extu s0,s0,26,25 + 3bc09140: e07d bnez s0,3bc09226 + 3bc09142: 0159a023 sw s5,0(s3) + 3bc09146: 3c04358b extu a1,s0,15,0 + 3bc0914a: 0805e593 ori a1,a1,128 + 3bc0914e: 4505 li a0,1 + 3bc09150: 977ff0ef jal ra,3bc08ac6 + 3bc09154: 08000737 lui a4,0x8000 + 3bc09158: 18072783 lw a5,384(a4) # 8000180 + 3bc0915c: 004a1a1b slliw s4,s4,0x4 + 3bc09160: 2781 sext.w a5,a5 + 3bc09162: 0017e793 ori a5,a5,1 + 3bc09166: 0147ca33 xor s4,a5,s4 + 3bc0916a: 010a7a13 andi s4,s4,16 + 3bc0916e: 0147ca33 xor s4,a5,s4 + 3bc09172: 0149a023 sw s4,0(s3) + 3bc09176: 19472023 sw s4,384(a4) + 3bc0917a: 08003737 lui a4,0x8003 + 3bc0917e: 44472783 lw a5,1092(a4) # 8003444 + 3bc09182: 2781 sext.w a5,a5 + 3bc09184: 00f9a023 sw a5,0(s3) + 3bc09188: 8b85 andi a5,a5,1 + 3bc0918a: dbf5 beqz a5,3bc0917e + 3bc0918c: 00040737 lui a4,0x40 + 3bc09190: 080107b7 lui a5,0x8010 + 3bc09194: 08004437 lui s0,0x8004 + 3bc09198: c398 sw a4,0(a5) + 3bc0919a: 503c lw a5,96(s0) + 3bc0919c: 08040a13 addi s4,s0,128 # 8004080 + 3bc091a0: 4505 li a0,1 + 3bc091a2: 2781 sext.w a5,a5 + 3bc091a4: 9bf9 andi a5,a5,-2 + 3bc091a6: 00f9a023 sw a5,0(s3) + 3bc091aa: d03c sw a5,96(s0) + 3bc091ac: 05ca2583 lw a1,92(s4) # 1f005c <__BSS_SIZE__+0x1ea44c> + 3bc091b0: 2581 sext.w a1,a1 + 3bc091b2: 00b9a023 sw a1,0(s3) + 3bc091b6: 3c05b58b extu a1,a1,15,0 + 3bc091ba: 90dff0ef jal ra,3bc08ac6 + 3bc091be: 060a2583 lw a1,96(s4) + 3bc091c2: 4509 li a0,2 + 3bc091c4: 2581 sext.w a1,a1 + 3bc091c6: 00b9a023 sw a1,0(s3) + 3bc091ca: 7d05b58b extu a1,a1,31,16 + 3bc091ce: 8f9ff0ef jal ra,3bc08ac6 + 3bc091d2: 581c lw a5,48(s0) + 3bc091d4: 60a6 ld ra,72(sp) + 3bc091d6: 7a02 ld s4,32(sp) + 3bc091d8: 2781 sext.w a5,a5 + 3bc091da: 0097c733 xor a4,a5,s1 + 3bc091de: 02077713 andi a4,a4,32 + 3bc091e2: 8fb9 xor a5,a5,a4 + 3bc091e4: 0097c733 xor a4,a5,s1 + 3bc091e8: 8b21 andi a4,a4,8 + 3bc091ea: 8fb9 xor a5,a5,a4 + 3bc091ec: 8cbd xor s1,s1,a5 + 3bc091ee: 8889 andi s1,s1,2 + 3bc091f0: 8fa5 xor a5,a5,s1 + 3bc091f2: 9bf9 andi a5,a5,-2 + 3bc091f4: 0127e7b3 or a5,a5,s2 + 3bc091f8: 00f9a023 sw a5,0(s3) + 3bc091fc: d81c sw a5,48(s0) + 3bc091fe: 50040713 addi a4,s0,1280 + 3bc09202: 4785 li a5,1 + 3bc09204: c33c sw a5,64(a4) + 3bc09206: 58040713 addi a4,s0,1408 + 3bc0920a: db3c sw a5,112(a4) + 3bc0920c: 68040413 addi s0,s0,1664 + 3bc09210: d01c sw a5,32(s0) + 3bc09212: 6406 ld s0,64(sp) + 3bc09214: 74e2 ld s1,56(sp) + 3bc09216: 7942 ld s2,48(sp) + 3bc09218: 79a2 ld s3,40(sp) + 3bc0921a: 6ae2 ld s5,24(sp) + 3bc0921c: 6b42 ld s6,16(sp) + 3bc0921e: 6ba2 ld s7,8(sp) + 3bc09220: 6161 addi sp,sp,80 + 3bc09222: e27ff06f j 3bc09048 + 3bc09226: fa0005b7 lui a1,0xfa000 + 3bc0922a: 15fd addi a1,a1,-1 + 3bc0922c: 00baf5b3 and a1,s5,a1 + 3bc09230: 00b9a023 sw a1,0(s3) + 3bc09234: 4509 li a0,2 + 3bc09236: 7d05b58b extu a1,a1,31,16 + 3bc0923a: 88dff0ef jal ra,3bc08ac6 + 3bc0923e: 0dcb2403 lw s0,220(s6) + 3bc09242: 01aad59b srliw a1,s5,0x1a + 3bc09246: 0065959b slliw a1,a1,0x6 + 3bc0924a: 2401 sext.w s0,s0 + 3bc0924c: 0089a023 sw s0,0(s3) + 3bc09250: dff47413 andi s0,s0,-513 + 3bc09254: 8da1 xor a1,a1,s0 + 3bc09256: 0405f593 andi a1,a1,64 + 3bc0925a: 8c2d xor s0,s0,a1 + 3bc0925c: 002b959b slliw a1,s7,0x2 + 3bc09260: 8da1 xor a1,a1,s0 + 3bc09262: 8991 andi a1,a1,4 + 3bc09264: 8c2d xor s0,s0,a1 + 3bc09266: b5c5 j 3bc09146 + 3bc09268: 0dcb2583 lw a1,220(s6) + 3bc0926c: 67c1 lui a5,0x10 + 3bc0926e: dfb78793 addi a5,a5,-517 # fdfb <__BSS_SIZE__+0xa1eb> + 3bc09272: 2581 sext.w a1,a1 + 3bc09274: 00b9a023 sw a1,0(s3) + 3bc09278: dfb5f413 andi s0,a1,-517 + 3bc0927c: 8dfd and a1,a1,a5 + 3bc0927e: 0405e593 ori a1,a1,64 + 3bc09282: 4505 li a0,1 + 3bc09284: 04046413 ori s0,s0,64 + 3bc09288: 83fff0ef jal ra,3bc08ac6 + 3bc0928c: bd6d j 3bc09146 + +000000003bc0928e : + 3bc0928e: 7179 addi sp,sp,-48 + 3bc09290: f022 sd s0,32(sp) + 3bc09292: e052 sd s4,0(sp) + 3bc09294: f406 sd ra,40(sp) + 3bc09296: ec26 sd s1,24(sp) + 3bc09298: e84a sd s2,16(sp) + 3bc0929a: e44e sd s3,8(sp) + 3bc0929c: 080047b7 lui a5,0x8004 + 3bc092a0: 5407a023 sw zero,1344(a5) # 8004540 + 3bc092a4: 5e07a823 sw zero,1520(a5) + 3bc092a8: 6a07a023 sw zero,1696(a5) + 3bc092ac: 08004a37 lui s4,0x8004 + 3bc092b0: 0000a417 auipc s0,0xa + 3bc092b4: 54040413 addi s0,s0,1344 # 3bc137f0 + 3bc092b8: 3fca2783 lw a5,1020(s4) # 80043fc + 3bc092bc: 2781 sext.w a5,a5 + 3bc092be: c01c sw a5,0(s0) + 3bc092c0: ffe5 bnez a5,3bc092b8 + 3bc092c2: 030a2783 lw a5,48(s4) + 3bc092c6: 0007849b sext.w s1,a5 + 3bc092ca: 0017f913 andi s2,a5,1 + 3bc092ce: fd44f793 andi a5,s1,-44 + 3bc092d2: c01c sw a5,0(s0) + 3bc092d4: 02fa2823 sw a5,48(s4) + 3bc092d8: d27ff0ef jal ra,3bc08ffe + 3bc092dc: 080007b7 lui a5,0x8000 + 3bc092e0: 1847a983 lw s3,388(a5) # 8000184 + 3bc092e4: 2981 sext.w s3,s3 + 3bc092e6: 01342023 sw s3,0(s0) + 3bc092ea: 1049b98b extu s3,s3,4,4 + 3bc092ee: 02098763 beqz s3,3bc0931c + 3bc092f2: 060a2783 lw a5,96(s4) + 3bc092f6: 450d li a0,3 + 3bc092f8: 2781 sext.w a5,a5 + 3bc092fa: 0017e793 ori a5,a5,1 + 3bc092fe: c01c sw a5,0(s0) + 3bc09300: 06fa2023 sw a5,96(s4) + 3bc09304: 0e0a2583 lw a1,224(s4) + 3bc09308: 2581 sext.w a1,a1 + 3bc0930a: 0045e793 ori a5,a1,4 + 3bc0930e: 3c05b58b extu a1,a1,15,0 + 3bc09312: 0045e593 ori a1,a1,4 + 3bc09316: c01c sw a5,0(s0) + 3bc09318: faeff0ef jal ra,3bc08ac6 + 3bc0931c: c5aff0ef jal ra,3bc08776 + 3bc09320: 08000737 lui a4,0x8000 + 3bc09324: 18472783 lw a5,388(a4) # 8000184 + 3bc09328: 2781 sext.w a5,a5 + 3bc0932a: 0017e793 ori a5,a5,1 + 3bc0932e: c01c sw a5,0(s0) + 3bc09330: 18f72223 sw a5,388(a4) + 3bc09334: 08003737 lui a4,0x8003 + 3bc09338: 44472783 lw a5,1092(a4) # 8003444 + 3bc0933c: 2781 sext.w a5,a5 + 3bc0933e: c01c sw a5,0(s0) + 3bc09340: 8b89 andi a5,a5,2 + 3bc09342: dbfd beqz a5,3bc09338 + 3bc09344: 080107b7 lui a5,0x8010 + 3bc09348: 00040737 lui a4,0x40 + 3bc0934c: c398 sw a4,0(a5) + 3bc0934e: 02098763 beqz s3,3bc0937c + 3bc09352: 080049b7 lui s3,0x8004 + 3bc09356: 0e09a783 lw a5,224(s3) # 80040e0 + 3bc0935a: 65c1 lui a1,0x10 + 3bc0935c: 15ed addi a1,a1,-5 + 3bc0935e: 2781 sext.w a5,a5 + 3bc09360: ffb7f713 andi a4,a5,-5 + 3bc09364: 8dfd and a1,a1,a5 + 3bc09366: 450d li a0,3 + 3bc09368: c018 sw a4,0(s0) + 3bc0936a: f5cff0ef jal ra,3bc08ac6 + 3bc0936e: 0609a783 lw a5,96(s3) + 3bc09372: 2781 sext.w a5,a5 + 3bc09374: 9bf9 andi a5,a5,-2 + 3bc09376: c01c sw a5,0(s0) + 3bc09378: 06f9a023 sw a5,96(s3) + 3bc0937c: 08004737 lui a4,0x8004 + 3bc09380: 5b1c lw a5,48(a4) + 3bc09382: 70a2 ld ra,40(sp) + 3bc09384: 69a2 ld s3,8(sp) + 3bc09386: 2781 sext.w a5,a5 + 3bc09388: 0097c6b3 xor a3,a5,s1 + 3bc0938c: 0206f693 andi a3,a3,32 + 3bc09390: 8fb5 xor a5,a5,a3 + 3bc09392: 0097c6b3 xor a3,a5,s1 + 3bc09396: 8aa1 andi a3,a3,8 + 3bc09398: 8fb5 xor a5,a5,a3 + 3bc0939a: 8cbd xor s1,s1,a5 + 3bc0939c: 8889 andi s1,s1,2 + 3bc0939e: 8fa5 xor a5,a5,s1 + 3bc093a0: 9bf9 andi a5,a5,-2 + 3bc093a2: 0127e7b3 or a5,a5,s2 + 3bc093a6: c01c sw a5,0(s0) + 3bc093a8: db1c sw a5,48(a4) + 3bc093aa: 50070693 addi a3,a4,1280 # 8004500 + 3bc093ae: 4785 li a5,1 + 3bc093b0: c2bc sw a5,64(a3) + 3bc093b2: 7402 ld s0,32(sp) + 3bc093b4: 58070693 addi a3,a4,1408 + 3bc093b8: 64e2 ld s1,24(sp) + 3bc093ba: 6942 ld s2,16(sp) + 3bc093bc: 6a02 ld s4,0(sp) + 3bc093be: dabc sw a5,112(a3) + 3bc093c0: 68070713 addi a4,a4,1664 + 3bc093c4: d31c sw a5,32(a4) + 3bc093c6: 6145 addi sp,sp,48 + 3bc093c8: c81ff06f j 3bc09048 + +000000003bc093cc : + 3bc093cc: 7139 addi sp,sp,-64 + 3bc093ce: f822 sd s0,48(sp) + 3bc093d0: e456 sd s5,8(sp) + 3bc093d2: e05a sd s6,0(sp) + 3bc093d4: fc06 sd ra,56(sp) + 3bc093d6: f426 sd s1,40(sp) + 3bc093d8: f04a sd s2,32(sp) + 3bc093da: ec4e sd s3,24(sp) + 3bc093dc: e852 sd s4,16(sp) + 3bc093de: 080047b7 lui a5,0x8004 + 3bc093e2: 5407a023 sw zero,1344(a5) # 8004540 + 3bc093e6: 5e07a823 sw zero,1520(a5) + 3bc093ea: 8aaa mv s5,a0 + 3bc093ec: 6a07a023 sw zero,1696(a5) + 3bc093f0: 08004b37 lui s6,0x8004 + 3bc093f4: 0000a417 auipc s0,0xa + 3bc093f8: 3fc40413 addi s0,s0,1020 # 3bc137f0 + 3bc093fc: 3fcb2783 lw a5,1020(s6) # 80043fc + 3bc09400: 2781 sext.w a5,a5 + 3bc09402: c01c sw a5,0(s0) + 3bc09404: ffe5 bnez a5,3bc093fc + 3bc09406: 030b2783 lw a5,48(s6) + 3bc0940a: 0007891b sext.w s2,a5 + 3bc0940e: 0017f493 andi s1,a5,1 + 3bc09412: fd497793 andi a5,s2,-44 + 3bc09416: c01c sw a5,0(s0) + 3bc09418: 02fb2823 sw a5,48(s6) + 3bc0941c: be3ff0ef jal ra,3bc08ffe + 3bc09420: 4505 li a0,1 + 3bc09422: a89ff0ef jal ra,3bc08eaa + 3bc09426: 080006b7 lui a3,0x8000 + 3bc0942a: 08068613 addi a2,a3,128 # 8000080 + 3bc0942e: 4218 lw a4,0(a2) + 3bc09430: 002007b7 lui a5,0x200 + 3bc09434: 007f05b7 lui a1,0x7f0 + 3bc09438: 2701 sext.w a4,a4 + 3bc0943a: 8fb9 xor a5,a5,a4 + 3bc0943c: 8fed and a5,a5,a1 + 3bc0943e: 8f3d xor a4,a4,a5 + 3bc09440: 2701 sext.w a4,a4 + 3bc09442: 1f0007b7 lui a5,0x1f000 + 3bc09446: 8fb9 xor a5,a5,a4 + 3bc09448: 7f0005b7 lui a1,0x7f000 + 3bc0944c: 8fed and a5,a5,a1 + 3bc0944e: 8f3d xor a4,a4,a5 + 3bc09450: 2701 sext.w a4,a4 + 3bc09452: c018 sw a4,0(s0) + 3bc09454: c218 sw a4,0(a2) + 3bc09456: 00c62a03 lw s4,12(a2) + 3bc0945a: 18068693 addi a3,a3,384 + 3bc0945e: 000a079b sext.w a5,s4 + 3bc09462: 9bc5 andi a5,a5,-15 + 3bc09464: c01c sw a5,0(s0) + 3bc09466: c65c sw a5,12(a2) + 3bc09468: 0086a983 lw s3,8(a3) + 3bc0946c: 082a3a0b extu s4,s4,2,2 + 3bc09470: 2981 sext.w s3,s3 + 3bc09472: 01342023 sw s3,0(s0) + 3bc09476: 1049b98b extu s3,s3,4,4 + 3bc0947a: 02098763 beqz s3,3bc094a8 + 3bc0947e: 060b2783 lw a5,96(s6) + 3bc09482: 450d li a0,3 + 3bc09484: 2781 sext.w a5,a5 + 3bc09486: 0017e793 ori a5,a5,1 + 3bc0948a: c01c sw a5,0(s0) + 3bc0948c: 06fb2023 sw a5,96(s6) + 3bc09490: 0e0b2583 lw a1,224(s6) + 3bc09494: 2581 sext.w a1,a1 + 3bc09496: 0045e793 ori a5,a1,4 + 3bc0949a: 3c05b58b extu a1,a1,15,0 + 3bc0949e: 0045e593 ori a1,a1,4 + 3bc094a2: c01c sw a5,0(s0) + 3bc094a4: e22ff0ef jal ra,3bc08ac6 + 3bc094a8: 8556 mv a0,s5 + 3bc094aa: b12ff0ef jal ra,3bc087bc + 3bc094ae: 08000737 lui a4,0x8000 + 3bc094b2: 18872783 lw a5,392(a4) # 8000188 + 3bc094b6: 2781 sext.w a5,a5 + 3bc094b8: 0017e793 ori a5,a5,1 + 3bc094bc: c01c sw a5,0(s0) + 3bc094be: 18f72423 sw a5,392(a4) + 3bc094c2: 08003737 lui a4,0x8003 + 3bc094c6: 44472783 lw a5,1092(a4) # 8003444 + 3bc094ca: 2781 sext.w a5,a5 + 3bc094cc: c01c sw a5,0(s0) + 3bc094ce: 8b91 andi a5,a5,4 + 3bc094d0: dbfd beqz a5,3bc094c6 + 3bc094d2: 040a0563 beqz s4,3bc0951c + 3bc094d6: 08000737 lui a4,0x8000 + 3bc094da: 08070693 addi a3,a4,128 # 8000080 + 3bc094de: 46dc lw a5,12(a3) + 3bc094e0: 18070713 addi a4,a4,384 + 3bc094e4: 2781 sext.w a5,a5 + 3bc094e6: 9bed andi a5,a5,-5 + 3bc094e8: c01c sw a5,0(s0) + 3bc094ea: c6dc sw a5,12(a3) + 3bc094ec: 471c lw a5,8(a4) + 3bc094ee: 2781 sext.w a5,a5 + 3bc094f0: 0017e793 ori a5,a5,1 + 3bc094f4: c01c sw a5,0(s0) + 3bc094f6: c71c sw a5,8(a4) + 3bc094f8: 08003737 lui a4,0x8003 + 3bc094fc: 44472783 lw a5,1092(a4) # 8003444 + 3bc09500: 2781 sext.w a5,a5 + 3bc09502: c01c sw a5,0(s0) + 3bc09504: 8b91 andi a5,a5,4 + 3bc09506: dbfd beqz a5,3bc094fc + 3bc09508: 08000737 lui a4,0x8000 + 3bc0950c: 08c72783 lw a5,140(a4) # 800008c + 3bc09510: 2781 sext.w a5,a5 + 3bc09512: 0047e793 ori a5,a5,4 + 3bc09516: c01c sw a5,0(s0) + 3bc09518: 08f72623 sw a5,140(a4) + 3bc0951c: 02098763 beqz s3,3bc0954a + 3bc09520: 080049b7 lui s3,0x8004 + 3bc09524: 0e09a783 lw a5,224(s3) # 80040e0 + 3bc09528: 65c1 lui a1,0x10 + 3bc0952a: 15ed addi a1,a1,-5 + 3bc0952c: 2781 sext.w a5,a5 + 3bc0952e: ffb7f713 andi a4,a5,-5 + 3bc09532: 8dfd and a1,a1,a5 + 3bc09534: 450d li a0,3 + 3bc09536: c018 sw a4,0(s0) + 3bc09538: d8eff0ef jal ra,3bc08ac6 + 3bc0953c: 0609a783 lw a5,96(s3) + 3bc09540: 2781 sext.w a5,a5 + 3bc09542: 9bf9 andi a5,a5,-2 + 3bc09544: c01c sw a5,0(s0) + 3bc09546: 06f9a023 sw a5,96(s3) + 3bc0954a: cd6ff0ef jal ra,3bc08a20 + 3bc0954e: 080107b7 lui a5,0x8010 + 3bc09552: 00040737 lui a4,0x40 + 3bc09556: c398 sw a4,0(a5) + 3bc09558: 4501 li a0,0 + 3bc0955a: 951ff0ef jal ra,3bc08eaa + 3bc0955e: 08004737 lui a4,0x8004 + 3bc09562: 5b1c lw a5,48(a4) + 3bc09564: 70e2 ld ra,56(sp) + 3bc09566: 69e2 ld s3,24(sp) + 3bc09568: 2781 sext.w a5,a5 + 3bc0956a: 0127c6b3 xor a3,a5,s2 + 3bc0956e: 0206f693 andi a3,a3,32 + 3bc09572: 8fb5 xor a5,a5,a3 + 3bc09574: 0127c6b3 xor a3,a5,s2 + 3bc09578: 8aa1 andi a3,a3,8 + 3bc0957a: 8fb5 xor a5,a5,a3 + 3bc0957c: 0127c933 xor s2,a5,s2 + 3bc09580: 00297913 andi s2,s2,2 + 3bc09584: 0127c7b3 xor a5,a5,s2 + 3bc09588: 9bf9 andi a5,a5,-2 + 3bc0958a: 8fc5 or a5,a5,s1 + 3bc0958c: c01c sw a5,0(s0) + 3bc0958e: db1c sw a5,48(a4) + 3bc09590: 50070693 addi a3,a4,1280 # 8004500 + 3bc09594: 4785 li a5,1 + 3bc09596: c2bc sw a5,64(a3) + 3bc09598: 7442 ld s0,48(sp) + 3bc0959a: 58070693 addi a3,a4,1408 + 3bc0959e: 74a2 ld s1,40(sp) + 3bc095a0: 7902 ld s2,32(sp) + 3bc095a2: 6a42 ld s4,16(sp) + 3bc095a4: 6aa2 ld s5,8(sp) + 3bc095a6: 6b02 ld s6,0(sp) + 3bc095a8: dabc sw a5,112(a3) + 3bc095aa: 68070713 addi a4,a4,1664 + 3bc095ae: d31c sw a5,32(a4) + 3bc095b0: 6121 addi sp,sp,64 + 3bc095b2: a97ff06f j 3bc09048 + +000000003bc095b6 : + 3bc095b6: 7179 addi sp,sp,-48 + 3bc095b8: e84a sd s2,16(sp) + 3bc095ba: e44e sd s3,8(sp) + 3bc095bc: e052 sd s4,0(sp) + 3bc095be: f406 sd ra,40(sp) + 3bc095c0: f022 sd s0,32(sp) + 3bc095c2: ec26 sd s1,24(sp) + 3bc095c4: 080047b7 lui a5,0x8004 + 3bc095c8: 5407a023 sw zero,1344(a5) # 8004540 + 3bc095cc: 5e07a823 sw zero,1520(a5) + 3bc095d0: 89aa mv s3,a0 + 3bc095d2: 8a2e mv s4,a1 + 3bc095d4: 6a07a023 sw zero,1696(a5) + 3bc095d8: 08004737 lui a4,0x8004 + 3bc095dc: 0000a917 auipc s2,0xa + 3bc095e0: 21490913 addi s2,s2,532 # 3bc137f0 + 3bc095e4: 3fc72783 lw a5,1020(a4) # 80043fc + 3bc095e8: 2781 sext.w a5,a5 + 3bc095ea: 00f92023 sw a5,0(s2) + 3bc095ee: fbfd bnez a5,3bc095e4 + 3bc095f0: 5b1c lw a5,48(a4) + 3bc095f2: 0007849b sext.w s1,a5 + 3bc095f6: 0017f413 andi s0,a5,1 + 3bc095fa: fd44f793 andi a5,s1,-44 + 3bc095fe: 00f92023 sw a5,0(s2) + 3bc09602: db1c sw a5,48(a4) + 3bc09604: 9fbff0ef jal ra,3bc08ffe + 3bc09608: 4505 li a0,1 + 3bc0960a: 8a1ff0ef jal ra,3bc08eaa + 3bc0960e: 080007b7 lui a5,0x8000 + 3bc09612: 0bc7a703 lw a4,188(a5) # 80000bc + 3bc09616: 2701 sext.w a4,a4 + 3bc09618: 000a1863 bnez s4,3bc09628 + 3bc0961c: 77fd lui a5,0xfffff + 3bc0961e: 17fd addi a5,a5,-1 + 3bc09620: 8f7d and a4,a4,a5 + 3bc09622: 6789 lui a5,0x2 + 3bc09624: 8f5d or a4,a4,a5 + 3bc09626: a821 j 3bc0963e + 3bc09628: 4785 li a5,1 + 3bc0962a: 00fa1763 bne s4,a5,3bc09638 + 3bc0962e: 77f9 lui a5,0xffffe + 3bc09630: 17fd addi a5,a5,-1 + 3bc09632: 8f7d and a4,a4,a5 + 3bc09634: 6785 lui a5,0x1 + 3bc09636: b7fd j 3bc09624 + 3bc09638: 4789 li a5,2 + 3bc0963a: 0efa0963 beq s4,a5,3bc0972c + 3bc0963e: 00e92023 sw a4,0(s2) + 3bc09642: 00092703 lw a4,0(s2) + 3bc09646: 080007b7 lui a5,0x8000 + 3bc0964a: 0ae7ae23 sw a4,188(a5) # 80000bc + 3bc0964e: 0e0a1163 bnez s4,3bc09730 + 3bc09652: 08004737 lui a4,0x8004 + 3bc09656: 475c lw a5,12(a4) + 3bc09658: 2781 sext.w a5,a5 + 3bc0965a: 0807e793 ori a5,a5,128 + 3bc0965e: 00f92023 sw a5,0(s2) + 3bc09662: c75c sw a5,12(a4) + 3bc09664: af2ff0ef jal ra,3bc08956 + 3bc09668: 080007b7 lui a5,0x8000 + 3bc0966c: 18c7a783 lw a5,396(a5) # 800018c + 3bc09670: 2781 sext.w a5,a5 + 3bc09672: 4017e693 ori a3,a5,1025 + 3bc09676: 000a1663 bnez s4,3bc09682 + 3bc0967a: bff7f793 andi a5,a5,-1025 + 3bc0967e: 0017e693 ori a3,a5,1 + 3bc09682: 4785 li a5,1 + 3bc09684: 00f98763 beq s3,a5,3bc09692 + 3bc09688: 39bd addiw s3,s3,-17 + 3bc0968a: fef6f713 andi a4,a3,-17 + 3bc0968e: 0137e463 bltu a5,s3,3bc09696 + 3bc09692: 0106e713 ori a4,a3,16 + 3bc09696: 00e92023 sw a4,0(s2) + 3bc0969a: 080007b7 lui a5,0x8000 + 3bc0969e: 18e7a623 sw a4,396(a5) # 800018c + 3bc096a2: 08003737 lui a4,0x8003 + 3bc096a6: 44472783 lw a5,1092(a4) # 8003444 + 3bc096aa: 2781 sext.w a5,a5 + 3bc096ac: 00f92023 sw a5,0(s2) + 3bc096b0: 8ba1 andi a5,a5,8 + 3bc096b2: dbf5 beqz a5,3bc096a6 + 3bc096b4: 080049b7 lui s3,0x8004 + 3bc096b8: 00c9a783 lw a5,12(s3) # 800400c + 3bc096bc: 00040737 lui a4,0x40 + 3bc096c0: 4501 li a0,0 + 3bc096c2: 2781 sext.w a5,a5 + 3bc096c4: f7f7f793 andi a5,a5,-129 + 3bc096c8: 00f92023 sw a5,0(s2) + 3bc096cc: 00f9a623 sw a5,12(s3) + 3bc096d0: 080107b7 lui a5,0x8010 + 3bc096d4: c398 sw a4,0(a5) + 3bc096d6: fd4ff0ef jal ra,3bc08eaa + 3bc096da: 0309a783 lw a5,48(s3) + 3bc096de: 70a2 ld ra,40(sp) + 3bc096e0: 6a02 ld s4,0(sp) + 3bc096e2: 2781 sext.w a5,a5 + 3bc096e4: 0097c733 xor a4,a5,s1 + 3bc096e8: 02077713 andi a4,a4,32 + 3bc096ec: 8fb9 xor a5,a5,a4 + 3bc096ee: 0097c733 xor a4,a5,s1 + 3bc096f2: 8b21 andi a4,a4,8 + 3bc096f4: 8fb9 xor a5,a5,a4 + 3bc096f6: 8cbd xor s1,s1,a5 + 3bc096f8: 8889 andi s1,s1,2 + 3bc096fa: 8fa5 xor a5,a5,s1 + 3bc096fc: 9bf9 andi a5,a5,-2 + 3bc096fe: 8fc1 or a5,a5,s0 + 3bc09700: 00f92023 sw a5,0(s2) + 3bc09704: 02f9a823 sw a5,48(s3) + 3bc09708: 50098713 addi a4,s3,1280 + 3bc0970c: 4785 li a5,1 + 3bc0970e: c33c sw a5,64(a4) + 3bc09710: 58098713 addi a4,s3,1408 + 3bc09714: 7402 ld s0,32(sp) + 3bc09716: db3c sw a5,112(a4) + 3bc09718: 68098993 addi s3,s3,1664 + 3bc0971c: 64e2 ld s1,24(sp) + 3bc0971e: 6942 ld s2,16(sp) + 3bc09720: 02f9a023 sw a5,32(s3) + 3bc09724: 69a2 ld s3,8(sp) + 3bc09726: 6145 addi sp,sp,48 + 3bc09728: 921ff06f j 3bc09048 + 3bc0972c: 678d lui a5,0x3 + 3bc0972e: bddd j 3bc09624 + 3bc09730: 854e mv a0,s3 + 3bc09732: 974ff0ef jal ra,3bc088a6 + 3bc09736: bf0d j 3bc09668 + +000000003bc09738 : + 3bc09738: 8082 ret + +000000003bc0973a : + 3bc0973a: 1101 addi sp,sp,-32 + 3bc0973c: 000e0737 lui a4,0xe0 + 3bc09740: e802 sd zero,16(sp) + 3bc09742: ec02 sd zero,24(sp) + 3bc09744: c602 sw zero,12(sp) + 3bc09746: 080107b7 lui a5,0x8010 + 3bc0974a: 0719 addi a4,a4,6 + 3bc0974c: c398 sw a4,0(a5) + 3bc0974e: 0007a823 sw zero,16(a5) # 8010010 + 3bc09752: 577d li a4,-1 + 3bc09754: cbd8 sw a4,20(a5) + 3bc09756: 4711 li a4,4 + 3bc09758: cf98 sw a4,24(a5) + 3bc0975a: 40004737 lui a4,0x40004 + 3bc0975e: a0070713 addi a4,a4,-1536 # 40003a00 <__BL2_END__+0x43f01f0> + 3bc09762: c3b8 sw a4,64(a5) + 3bc09764: 4732 lw a4,12(sp) + 3bc09766: 0000a617 auipc a2,0xa + 3bc0976a: 08a60613 addi a2,a2,138 # 3bc137f0 + 3bc0976e: c3f8 sw a4,68(a5) + 3bc09770: 4742 lw a4,16(sp) + 3bc09772: c7b8 sw a4,72(a5) + 3bc09774: 4752 lw a4,20(sp) + 3bc09776: c7f8 sw a4,76(a5) + 3bc09778: 4762 lw a4,24(sp) + 3bc0977a: cbb8 sw a4,80(a5) + 3bc0977c: 4772 lw a4,28(sp) + 3bc0977e: cbf8 sw a4,84(a5) + 3bc09780: 6741 lui a4,0x10 + 3bc09782: 0705 addi a4,a4,1 + 3bc09784: c398 sw a4,0(a5) + 3bc09786: 08010737 lui a4,0x8010 + 3bc0978a: 08072783 lw a5,128(a4) # 8010080 + 3bc0978e: 2781 sext.w a5,a5 + 3bc09790: c21c sw a5,0(a2) + 3bc09792: 8b91 andi a5,a5,4 + 3bc09794: dbfd beqz a5,3bc0978a + 3bc09796: 68c1 lui a7,0x10 + 3bc09798: 67c1 lui a5,0x10 + 3bc0979a: 40004837 lui a6,0x40004 + 3bc0979e: 00188e13 addi t3,a7,1 # 10001 <__BSS_SIZE__+0xa3f1> + 3bc097a2: 80004337 lui t1,0x80004 + 3bc097a6: c31c sw a5,0(a4) + 3bc097a8: 45d5 li a1,21 + 3bc097aa: 4f05 li t5,1 + 3bc097ac: 080107b7 lui a5,0x8010 + 3bc097b0: b0080813 addi a6,a6,-1280 # 40003b00 <__BL2_END__+0x43f02f0> + 3bc097b4: 8ff2 mv t6,t3 + 3bc097b6: a0030313 addi t1,t1,-1536 # ffffffff80003a00 <__BL2_END__+0xffffffff443f01f0> + 3bc097ba: 02000e93 li t4,32 + 3bc097be: 00bf16bb sllw a3,t5,a1 + 3bc097c2: cb94 sw a3,16(a5) + 3bc097c4: 0507a023 sw a6,64(a5) # 8010040 + 3bc097c8: 46b2 lw a3,12(sp) + 3bc097ca: ff05871b addiw a4,a1,-16 + 3bc097ce: 0ff77713 andi a4,a4,255 + 3bc097d2: c3f4 sw a3,68(a5) + 3bc097d4: 46c2 lw a3,16(sp) + 3bc097d6: c7b4 sw a3,72(a5) + 3bc097d8: 46d2 lw a3,20(sp) + 3bc097da: c7f4 sw a3,76(a5) + 3bc097dc: 46e2 lw a3,24(sp) + 3bc097de: cbb4 sw a3,80(a5) + 3bc097e0: 46f2 lw a3,28(sp) + 3bc097e2: cbf4 sw a3,84(a5) + 3bc097e4: 01f7a023 sw t6,0(a5) + 3bc097e8: 0807a683 lw a3,128(a5) + 3bc097ec: 2681 sext.w a3,a3 + 3bc097ee: c214 sw a3,0(a2) + 3bc097f0: 8a91 andi a3,a3,4 + 3bc097f2: dafd beqz a3,3bc097e8 + 3bc097f4: 0117a023 sw a7,0(a5) + 3bc097f8: 0007a823 sw zero,16(a5) + 3bc097fc: 0467a023 sw t1,64(a5) + 3bc09800: 46b2 lw a3,12(sp) + 3bc09802: c3f4 sw a3,68(a5) + 3bc09804: 46c2 lw a3,16(sp) + 3bc09806: c7b4 sw a3,72(a5) + 3bc09808: 46d2 lw a3,20(sp) + 3bc0980a: c7f4 sw a3,76(a5) + 3bc0980c: 46e2 lw a3,24(sp) + 3bc0980e: cbb4 sw a3,80(a5) + 3bc09810: 46f2 lw a3,28(sp) + 3bc09812: cbf4 sw a3,84(a5) + 3bc09814: 01c7a023 sw t3,0(a5) + 3bc09818: 0807a683 lw a3,128(a5) + 3bc0981c: 2681 sext.w a3,a3 + 3bc0981e: c214 sw a3,0(a2) + 3bc09820: 8a91 andi a3,a3,4 + 3bc09822: dafd beqz a3,3bc09818 + 3bc09824: 0117a023 sw a7,0(a5) + 3bc09828: 4214 lw a3,0(a2) + 3bc0982a: 8aa1 andi a3,a3,8 + 3bc0982c: e689 bnez a3,3bc09836 + 3bc0982e: 2585 addiw a1,a1,1 + 3bc09830: f9d597e3 bne a1,t4,3bc097be + 3bc09834: 473d li a4,15 + 3bc09836: 00e50023 sb a4,0(a0) # 1f000000 + 3bc0983a: 2701 sext.w a4,a4 + 3bc0983c: c218 sw a4,0(a2) + 3bc0983e: 080007b7 lui a5,0x8000 + 3bc09842: 20e7a423 sw a4,520(a5) # 8000208 + 3bc09846: 080107b7 lui a5,0x8010 + 3bc0984a: 00040737 lui a4,0x40 + 3bc0984e: c398 sw a4,0(a5) + 3bc09850: 6105 addi sp,sp,32 + 3bc09852: 8082 ret + +000000003bc09854 : + 3bc09854: 2f000793 li a5,752 + 3bc09858: 0000a717 auipc a4,0xa + 3bc0985c: faf72023 sw a5,-96(a4) # 3bc137f8 + 3bc09860: 06400793 li a5,100 + 3bc09864: 0000a717 auipc a4,0xa + 3bc09868: f8f72c23 sw a5,-104(a4) # 3bc137fc + 3bc0986c: 00002717 auipc a4,0x2 + 3bc09870: 1a072703 lw a4,416(a4) # 3bc0ba0c + 3bc09874: 0047569b srliw a3,a4,0x4 + 3bc09878: 463d li a2,15 + 3bc0987a: 0000a797 auipc a5,0xa + 3bc0987e: f8d7a323 sw a3,-122(a5) # 3bc13800 + 3bc09882: 0000a797 auipc a5,0xa + 3bc09886: f6c7a923 sw a2,-142(a5) # 3bc137f4 + 3bc0988a: 02f00713 li a4,47 + 3bc0988e: 077a slli a4,a4,0x1e + 3bc09890: 7c06b78b extu a5,a3,31,0 + 3bc09894: 02f757b3 divu a5,a4,a5 + 3bc09898: 0000a717 auipc a4,0xa + 3bc0989c: f2f73823 sd a5,-208(a4) # 3bc137c8 + 3bc098a0: 0fa00713 li a4,250 + 3bc098a4: 02d7073b mulw a4,a4,a3 + 3bc098a8: 06400693 li a3,100 + 3bc098ac: 02d7573b divuw a4,a4,a3 + 3bc098b0: 7c07370b extu a4,a4,31,0 + 3bc098b4: 0000a697 auipc a3,0xa + 3bc098b8: f0e6be23 sd a4,-228(a3) # 3bc137d0 + 3bc098bc: 3e800693 li a3,1000 + 3bc098c0: 02d70733 mul a4,a4,a3 + 3bc098c4: 02c787b3 mul a5,a5,a2 + 3bc098c8: 02e7d7b3 divu a5,a5,a4 + 3bc098cc: 0000a717 auipc a4,0xa + 3bc098d0: f0f73623 sd a5,-244(a4) # 3bc137d8 + 3bc098d4: e84ff06f j 3bc08f58 + +000000003bc098d8 : + 3bc098d8: 1141 addi sp,sp,-16 + 3bc098da: e406 sd ra,8(sp) + 3bc098dc: b29fe0ef jal ra,3bc08404 + 3bc098e0: 357d addiw a0,a0,-1 + 3bc098e2: 0ff57513 andi a0,a0,255 + 3bc098e6: 47a5 li a5,9 + 3bc098e8: 12a7ef63 bltu a5,a0,3bc09a26 + 3bc098ec: 00002717 auipc a4,0x2 + 3bc098f0: e2470713 addi a4,a4,-476 # 3bc0b710 + 3bc098f4: 44a7478b lrw a5,a4,a0,2 + 3bc098f8: 97ba add a5,a5,a4 + 3bc098fa: 8782 jr a5 + 3bc098fc: 12141737 lui a4,0x12141 + 3bc09900: 080007b7 lui a5,0x8000 + 3bc09904: 074d addi a4,a4,19 + 3bc09906: c398 sw a4,0(a5) + 3bc09908: 0c041737 lui a4,0xc041 + 3bc0990c: 50370713 addi a4,a4,1283 # c041503 + 3bc09910: c3d8 sw a4,4(a5) + 3bc09912: 06050737 lui a4,0x6050 + 3bc09916: 0705 addi a4,a4,1 + 3bc09918: c798 sw a4,8(a5) + 3bc0991a: 08071737 lui a4,0x8071 + 3bc0991e: b0270713 addi a4,a4,-1278 # 8070b02 + 3bc09922: c7d8 sw a4,12(a5) + 3bc09924: 0a0f1737 lui a4,0xa0f1 + 3bc09928: e0970713 addi a4,a4,-503 # a0f0e09 + 3bc0992c: cb98 sw a4,16(a5) + 3bc0992e: 00161737 lui a4,0x161 + 3bc09932: 10d70713 addi a4,a4,269 # 16110d <__BSS_SIZE__+0x15b4fd> + 3bc09936: cbd8 sw a4,20(a5) + 3bc09938: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0993c: 10000713 li a4,256 + 3bc09940: cfd8 sw a4,28(a5) + 3bc09942: 02136737 lui a4,0x2136 + 3bc09946: 57470713 addi a4,a4,1396 # 2136574 <__BSS_SIZE__+0x2130964> + 3bc0994a: d398 sw a4,32(a5) + 3bc0994c: 4721 li a4,8 + 3bc0994e: d3d8 sw a4,36(a5) + 3bc09950: 76512737 lui a4,0x76512 + 3bc09954: 30870713 addi a4,a4,776 # 76512308 <__BL2_END__+0x3a8feaf8> + 3bc09958: d798 sw a4,40(a5) + 3bc0995a: 4711 li a4,4 + 3bc0995c: d7d8 sw a4,44(a5) + 3bc0995e: a0e1 j 3bc09a26 + 3bc09960: 08071737 lui a4,0x8071 + 3bc09964: 080007b7 lui a5,0x8000 + 3bc09968: d0970713 addi a4,a4,-759 # 8070d09 + 3bc0996c: c398 sw a4,0(a5) + 3bc0996e: 06050737 lui a4,0x6050 + 3bc09972: 20b70713 addi a4,a4,523 # 605020b + 3bc09976: c3d8 sw a4,4(a5) + 3bc09978: 14040737 lui a4,0x14040 + 3bc0997c: 10070713 addi a4,a4,256 # 14040100 + 3bc09980: c798 sw a4,8(a5) + 3bc09982: 15031737 lui a4,0x15031 + 3bc09986: e0c70713 addi a4,a4,-500 # 15030e0c + 3bc0998a: c7d8 sw a4,12(a5) + 3bc0998c: 0a0f1737 lui a4,0xa0f1 + 3bc09990: 21370713 addi a4,a4,531 # a0f1213 + 3bc09994: cb98 sw a4,16(a5) + 3bc09996: 00111737 lui a4,0x111 + 3bc0999a: 0759 addi a4,a4,22 + 3bc0999c: cbd8 sw a4,20(a5) + 3bc0999e: 0007ac23 sw zero,24(a5) # 8000018 + 3bc099a2: 10000713 li a4,256 + 3bc099a6: cfd8 sw a4,28(a5) + 3bc099a8: 82135737 lui a4,0x82135 + 3bc099ac: 76470713 addi a4,a4,1892 # ffffffff82135764 <__BL2_END__+0xffffffff46521f54> + 3bc099b0: d398 sw a4,32(a5) + 3bc099b2: 67513737 lui a4,0x67513 + 3bc099b6: 0207a223 sw zero,36(a5) + 3bc099ba: 02870713 addi a4,a4,40 # 67513028 <__BL2_END__+0x2b8ff818> + 3bc099be: bf69 j 3bc09958 + 3bc099c0: 08071737 lui a4,0x8071 + 3bc099c4: 080007b7 lui a5,0x8000 + 3bc099c8: b0970713 addi a4,a4,-1271 # 8070b09 + 3bc099cc: c398 sw a4,0(a5) + 3bc099ce: 05000737 lui a4,0x5000 + 3bc099d2: 20670713 addi a4,a4,518 # 5000206 + 3bc099d6: c3d8 sw a4,4(a5) + 3bc099d8: 0c040737 lui a4,0xc040 + 3bc099dc: 10d70713 addi a4,a4,269 # c04010d + 3bc099e0: c798 sw a4,8(a5) + 3bc099e2: 15031737 lui a4,0x15031 + 3bc099e6: a1470713 addi a4,a4,-1516 # 15030a14 + 3bc099ea: c7d8 sw a4,12(a5) + 3bc099ec: 10111737 lui a4,0x10111 + 3bc099f0: 21370713 addi a4,a4,531 # 10111213 + 3bc099f4: cb98 sw a4,16(a5) + 3bc099f6: 000f1737 lui a4,0xf1 + 3bc099fa: 60e70713 addi a4,a4,1550 # f160e <__BSS_SIZE__+0xeb9fe> + 3bc099fe: cbd8 sw a4,20(a5) + 3bc09a00: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09a04: 10000713 li a4,256 + 3bc09a08: cfd8 sw a4,28(a5) + 3bc09a0a: 31756737 lui a4,0x31756 + 3bc09a0e: 02470713 addi a4,a4,36 # 31756024 + 3bc09a12: d398 sw a4,32(a5) + 3bc09a14: 4721 li a4,8 + 3bc09a16: d3d8 sw a4,36(a5) + 3bc09a18: 26473737 lui a4,0x26473 + 3bc09a1c: 51870713 addi a4,a4,1304 # 26473518 + 3bc09a20: d798 sw a4,40(a5) + 3bc09a22: 0207a623 sw zero,44(a5) + 3bc09a26: 60a2 ld ra,8(sp) + 3bc09a28: 0141 addi sp,sp,16 + 3bc09a2a: 8082 ret + 3bc09a2c: 0c061737 lui a4,0xc061 + 3bc09a30: 080007b7 lui a5,0x8000 + 3bc09a34: 80b70713 addi a4,a4,-2037 # c06080b + 3bc09a38: c398 sw a4,0(a5) + 3bc09a3a: 070d1737 lui a4,0x70d1 + 3bc09a3e: 90470713 addi a4,a4,-1788 # 70d0904 + 3bc09a42: c3d8 sw a4,4(a5) + 3bc09a44: 6741 lui a4,0x10 + 3bc09a46: 50270713 addi a4,a4,1282 # 10502 <__BSS_SIZE__+0xa8f2> + 3bc09a4a: c798 sw a4,8(a5) + 3bc09a4c: 110a1737 lui a4,0x110a1 + 3bc09a50: e0370713 addi a4,a4,-509 # 110a0e03 + 3bc09a54: c7d8 sw a4,12(a5) + 3bc09a56: 0f141737 lui a4,0xf141 + 3bc09a5a: 61070713 addi a4,a4,1552 # f141610 + 3bc09a5e: cb98 sw a4,16(a5) + 3bc09a60: 00151737 lui a4,0x151 + 3bc09a64: 31270713 addi a4,a4,786 # 151312 <__BSS_SIZE__+0x14b702> + 3bc09a68: cbd8 sw a4,20(a5) + 3bc09a6a: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09a6e: 10000713 li a4,256 + 3bc09a72: cfd8 sw a4,28(a5) + 3bc09a74: 71840737 lui a4,0x71840 + 3bc09a78: 53270713 addi a4,a4,1330 # 71840532 <__BL2_END__+0x35c2cd22> + 3bc09a7c: d398 sw a4,32(a5) + 3bc09a7e: 4719 li a4,6 + 3bc09a80: d3d8 sw a4,36(a5) + 3bc09a82: 76103737 lui a4,0x76103 + 3bc09a86: 42570713 addi a4,a4,1061 # 76103425 <__BL2_END__+0x3a4efc15> + 3bc09a8a: d798 sw a4,40(a5) + 3bc09a8c: 4721 li a4,8 + 3bc09a8e: b5f9 j 3bc0995c + 3bc09a90: 080b1737 lui a4,0x80b1 + 3bc09a94: 080007b7 lui a5,0x8000 + 3bc09a98: d0670713 addi a4,a4,-762 # 80b0d06 + 3bc09a9c: c398 sw a4,0(a5) + 3bc09a9e: 09010737 lui a4,0x9010 + 3bc09aa2: 40770713 addi a4,a4,1031 # 9010407 + 3bc09aa6: c3d8 sw a4,4(a5) + 3bc09aa8: 14050737 lui a4,0x14050 + 3bc09aac: 20c70713 addi a4,a4,524 # 1405020c + 3bc09ab0: c798 sw a4,8(a5) + 3bc09ab2: 15001737 lui a4,0x15001 + 3bc09ab6: e0370713 addi a4,a4,-509 # 15000e03 + 3bc09aba: c7d8 sw a4,12(a5) + 3bc09abc: 0a0f1737 lui a4,0xa0f1 + 3bc09ac0: 21370713 addi a4,a4,531 # a0f1213 + 3bc09ac4: cb98 sw a4,16(a5) + 3bc09ac6: 00111737 lui a4,0x111 + 3bc09aca: 0759 addi a4,a4,22 + 3bc09acc: cbd8 sw a4,20(a5) + 3bc09ace: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09ad2: 10000713 li a4,256 + 3bc09ad6: cfd8 sw a4,28(a5) + 3bc09ad8: 82135737 lui a4,0x82135 + 3bc09adc: 76470713 addi a4,a4,1892 # ffffffff82135764 <__BL2_END__+0xffffffff46521f54> + 3bc09ae0: d398 sw a4,32(a5) + 3bc09ae2: 67513737 lui a4,0x67513 + 3bc09ae6: 0207a223 sw zero,36(a5) + 3bc09aea: 20870713 addi a4,a4,520 # 67513208 <__BL2_END__+0x2b8ff9f8> + 3bc09aee: b5ad j 3bc09958 + 3bc09af0: 0b061737 lui a4,0xb061 + 3bc09af4: 080007b7 lui a5,0x8000 + 3bc09af8: 90870713 addi a4,a4,-1784 # b060908 + 3bc09afc: c398 sw a4,0(a5) + 3bc09afe: 02000737 lui a4,0x2000 + 3bc09b02: 10770713 addi a4,a4,263 # 2000107 <__BSS_SIZE__+0x1ffa4f7> + 3bc09b06: c3d8 sw a4,4(a5) + 3bc09b08: 0c050737 lui a4,0xc050 + 3bc09b0c: 40d70713 addi a4,a4,1037 # c05040d + 3bc09b10: c798 sw a4,8(a5) + 3bc09b12: 13141737 lui a4,0x13141 + 3bc09b16: 50370713 addi a4,a4,1283 # 13141503 + 3bc09b1a: c7d8 sw a4,12(a5) + 3bc09b1c: 160a1737 lui a4,0x160a1 + 3bc09b20: 11270713 addi a4,a4,274 # 160a1112 + 3bc09b24: cb98 sw a4,16(a5) + 3bc09b26: 000f1737 lui a4,0xf1 + 3bc09b2a: 0739 addi a4,a4,14 + 3bc09b2c: cbd8 sw a4,20(a5) + 3bc09b2e: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09b32: 10000713 li a4,256 + 3bc09b36: cfd8 sw a4,28(a5) + 3bc09b38: 28137737 lui a4,0x28137 + 3bc09b3c: 56470713 addi a4,a4,1380 # 28137564 + 3bc09b40: d398 sw a4,32(a5) + 3bc09b42: 76158737 lui a4,0x76158 + 3bc09b46: 0207a223 sw zero,36(a5) + 3bc09b4a: 32070713 addi a4,a4,800 # 76158320 <__BL2_END__+0x3a544b10> + 3bc09b4e: b529 j 3bc09958 + 3bc09b50: 08061737 lui a4,0x8061 + 3bc09b54: 080007b7 lui a5,0x8000 + 3bc09b58: b0970713 addi a4,a4,-1271 # 8060b09 + 3bc09b5c: c398 sw a4,0(a5) + 3bc09b5e: 02040737 lui a4,0x2040 + 3bc09b62: 70170713 addi a4,a4,1793 # 2040701 <__BSS_SIZE__+0x203aaf1> + 3bc09b66: c3d8 sw a4,4(a5) + 3bc09b68: 0c000737 lui a4,0xc000 + 3bc09b6c: 50d70713 addi a4,a4,1293 # c00050d + 3bc09b70: c798 sw a4,8(a5) + 3bc09b72: 13150737 lui a4,0x13150 + 3bc09b76: 31470713 addi a4,a4,788 # 13150314 + 3bc09b7a: c7d8 sw a4,12(a5) + 3bc09b7c: 10111737 lui a4,0x10111 + 3bc09b80: 21670713 addi a4,a4,534 # 10111216 + 3bc09b84: cb98 sw a4,16(a5) + 3bc09b86: 000f1737 lui a4,0xf1 + 3bc09b8a: a0e70713 addi a4,a4,-1522 # f0a0e <__BSS_SIZE__+0xeadfe> + 3bc09b8e: cbd8 sw a4,20(a5) + 3bc09b90: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09b94: 10000713 li a4,256 + 3bc09b98: cfd8 sw a4,28(a5) + 3bc09b9a: 82135737 lui a4,0x82135 + 3bc09b9e: 67470713 addi a4,a4,1652 # ffffffff82135674 <__BL2_END__+0xffffffff46521e64> + 3bc09ba2: d398 sw a4,32(a5) + 3bc09ba4: 76153737 lui a4,0x76153 + 3bc09ba8: 0207a223 sw zero,36(a5) + 3bc09bac: 28070713 addi a4,a4,640 # 76153280 <__BL2_END__+0x3a53fa70> + 3bc09bb0: b365 j 3bc09958 + 3bc09bb2: 070b1737 lui a4,0x70b1 + 3bc09bb6: 080007b7 lui a5,0x8000 + 3bc09bba: 90c70713 addi a4,a4,-1780 # 70b090c + 3bc09bbe: c398 sw a4,0(a5) + 3bc09bc0: 04050737 lui a4,0x4050 + 3bc09bc4: 60870713 addi a4,a4,1544 # 4050608 <__BSS_SIZE__+0x404a9f8> + 3bc09bc8: c3d8 sw a4,4(a5) + 3bc09bca: 0e020737 lui a4,0xe020 + 3bc09bce: 30d70713 addi a4,a4,781 # e02030d + 3bc09bd2: c798 sw a4,8(a5) + 3bc09bd4: 110a0737 lui a4,0x110a0 + 3bc09bd8: 10070713 addi a4,a4,256 # 110a0100 + 3bc09bdc: c7d8 sw a4,12(a5) + 3bc09bde: 0f131737 lui a4,0xf131 + 3bc09be2: 61470713 addi a4,a4,1556 # f131614 + 3bc09be6: cb98 sw a4,16(a5) + 3bc09be8: 00151737 lui a4,0x151 + 3bc09bec: 0749 addi a4,a4,18 + 3bc09bee: cbd8 sw a4,20(a5) + 3bc09bf0: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09bf4: 10000713 li a4,256 + 3bc09bf8: cfd8 sw a4,28(a5) + 3bc09bfa: 86014737 lui a4,0x86014 + 3bc09bfe: 53270713 addi a4,a4,1330 # ffffffff86014532 <__BL2_END__+0xffffffff4a400d22> + 3bc09c02: d398 sw a4,32(a5) + 3bc09c04: 471d li a4,7 + 3bc09c06: d3d8 sw a4,36(a5) + 3bc09c08: 76012737 lui a4,0x76012 + 3bc09c0c: 34570713 addi a4,a4,837 # 76012345 <__BL2_END__+0x3a3feb35> + 3bc09c10: bdad j 3bc09a8a + +000000003bc09c12 : + 3bc09c12: 8082 ret + +000000003bc09c14 : + 3bc09c14: 63746737 lui a4,0x63746 + 3bc09c18: 080047b7 lui a5,0x8004 + 3bc09c1c: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32b61> + 3bc09c20: c7d8 sw a4,12(a5) + 3bc09c22: 14000737 lui a4,0x14000 + 3bc09c26: c3f8 sw a4,68(a5) + 3bc09c28: 470d li a4,3 + 3bc09c2a: d7f8 sw a4,108(a5) + 3bc09c2c: 999f06b7 lui a3,0x999f0 + 3bc09c30: 10078713 addi a4,a5,256 # 8004100 + 3bc09c34: c734 sw a3,72(a4) + 3bc09c36: 810416b7 lui a3,0x81041 + 3bc09c3a: 40168693 addi a3,a3,1025 # ffffffff81041401 <__BL2_END__+0xffffffff4542dbf1> + 3bc09c3e: c394 sw a3,0(a5) + 3bc09c40: 009306b7 lui a3,0x930 + 3bc09c44: 0207a823 sw zero,48(a5) + 3bc09c48: 0685 addi a3,a3,1 + 3bc09c4a: dbd4 sw a3,52(a5) + 3bc09c4c: 000206b7 lui a3,0x20 + 3bc09c50: df94 sw a3,56(a5) + 3bc09c52: 002016b7 lui a3,0x201 + 3bc09c56: 07068693 addi a3,a3,112 # 201070 <__BSS_SIZE__+0x1fb460> + 3bc09c5a: cbb4 sw a3,80(a5) + 3bc09c5c: 007106b7 lui a3,0x710 + 3bc09c60: 0607a023 sw zero,96(a5) + 3bc09c64: 0a468693 addi a3,a3,164 # 7100a4 <__BSS_SIZE__+0x70a494> + 3bc09c68: d3f4 sw a3,100(a5) + 3bc09c6a: 0c07a023 sw zero,192(a5) + 3bc09c6e: 6641 lui a2,0x10 + 3bc09c70: 0c07a223 sw zero,196(a5) + 3bc09c74: 08078693 addi a3,a5,128 + 3bc09c78: 0e560613 addi a2,a2,229 # 100e5 <__BSS_SIZE__+0xa4d5> + 3bc09c7c: cab0 sw a2,80(a3) + 3bc09c7e: 006a0637 lui a2,0x6a0 + 3bc09c82: caf0 sw a2,84(a3) + 3bc09c84: 1f140637 lui a2,0x1f140 + 3bc09c88: 04060613 addi a2,a2,64 # 1f140040 + 3bc09c8c: cef0 sw a2,92(a3) + 3bc09c8e: 00600637 lui a2,0x600 + 3bc09c92: d2b0 sw a2,96(a3) + 3bc09c94: 000b0637 lui a2,0xb0 + 3bc09c98: 3bf60613 addi a2,a2,959 # b03bf <__BSS_SIZE__+0xaa7af> + 3bc09c9c: d2f0 sw a2,100(a3) + 3bc09c9e: 0e1126b7 lui a3,0xe112 + 3bc09ca2: f1068693 addi a3,a3,-240 # e111f10 + 3bc09ca6: c314 sw a3,0(a4) + 3bc09ca8: 000306b7 lui a3,0x30 + 3bc09cac: 41768693 addi a3,a3,1047 # 30417 <__BSS_SIZE__+0x2a807> + 3bc09cb0: c354 sw a3,4(a4) + 3bc09cb2: 050706b7 lui a3,0x5070 + 3bc09cb6: 60a68693 addi a3,a3,1546 # 507060a + 3bc09cba: 6589 lui a1,0x2 + 3bc09cbc: c714 sw a3,8(a4) + 3bc09cbe: 00758693 addi a3,a1,7 # 2007 <__BSS_SIZE__-0x3c09> + 3bc09cc2: c754 sw a3,12(a4) + 3bc09cc4: 070206b7 lui a3,0x7020 + 3bc09cc8: 30768693 addi a3,a3,775 # 7020307 + 3bc09ccc: cb14 sw a3,16(a4) + 3bc09cce: 050506b7 lui a3,0x5050 + 3bc09cd2: 30368693 addi a3,a3,771 # 5050303 + 3bc09cd6: 6605 lui a2,0x1 + 3bc09cd8: cb54 sw a3,20(a4) + 3bc09cda: 90760693 addi a3,a2,-1785 # 907 <__BSS_SIZE__-0x5309> + 3bc09cde: d314 sw a3,32(a4) + 3bc09ce0: c09606b7 lui a3,0xc0960 + 3bc09ce4: 18078713 addi a4,a5,384 + 3bc09ce8: 1207ae23 sw zero,316(a5) + 3bc09cec: 02668693 addi a3,a3,38 # ffffffffc0960026 <__BL2_END__+0xffffffff84d4c816> + 3bc09cf0: c314 sw a3,0(a4) + 3bc09cf2: 048a8537 lui a0,0x48a8 + 3bc09cf6: 4685 li a3,1 + 3bc09cf8: c354 sw a3,4(a4) + 3bc09cfa: 30550513 addi a0,a0,773 # 48a8305 + 3bc09cfe: cb08 sw a0,16(a4) + 3bc09d00: 00070537 lui a0,0x70 + 3bc09d04: 20250813 addi a6,a0,514 # 70202 <__BSS_SIZE__+0x6a5f2> + 3bc09d08: 01072a23 sw a6,20(a4) # 14000014 + 3bc09d0c: 07c13837 lui a6,0x7c13 + 3bc09d10: 12180813 addi a6,a6,289 # 7c13121 + 3bc09d14: 01072c23 sw a6,24(a4) + 3bc09d18: 02100813 li a6,33 + 3bc09d1c: 01072e23 sw a6,28(a4) + 3bc09d20: c0400837 lui a6,0xc0400 + 3bc09d24: 0861 addi a6,a6,24 + 3bc09d26: 03072023 sw a6,32(a4) + 3bc09d2a: 00fe0837 lui a6,0xfe0 + 3bc09d2e: 0ff80813 addi a6,a6,255 # fe00ff <__BSS_SIZE__+0xfda4ef> + 3bc09d32: 03072223 sw a6,36(a4) + 3bc09d36: 80000837 lui a6,0x80000 + 3bc09d3a: 03072423 sw a6,40(a4) + 3bc09d3e: 2c100813 li a6,705 + 3bc09d42: 03072823 sw a6,48(a4) + 3bc09d46: c334 sw a3,64(a4) + 3bc09d48: c374 sw a3,68(a4) + 3bc09d4a: f1f58593 addi a1,a1,-225 + 3bc09d4e: 20078713 addi a4,a5,512 + 3bc09d52: c30c sw a1,0(a4) + 3bc09d54: 70750513 addi a0,a0,1799 + 3bc09d58: c348 sw a0,4(a4) + 3bc09d5a: 2007a423 sw zero,520(a5) + 3bc09d5e: 1f000537 lui a0,0x1f000 + 3bc09d62: c748 sw a0,12(a4) + 3bc09d64: cb0c sw a1,16(a4) + 3bc09d66: 060f05b7 lui a1,0x60f0 + 3bc09d6a: 60658593 addi a1,a1,1542 # 60f0606 + 3bc09d6e: cb4c sw a1,20(a4) + 3bc09d70: 060605b7 lui a1,0x6060 + 3bc09d74: 60658593 addi a1,a1,1542 # 6060606 + 3bc09d78: cf0c sw a1,24(a4) + 3bc09d7a: 60600513 li a0,1542 + 3bc09d7e: cf48 sw a0,28(a4) + 3bc09d80: 6511 lui a0,0x4 + 3bc09d82: f3f50813 addi a6,a0,-193 # 3f3f <__BSS_SIZE__-0x1cd1> + 3bc09d86: 03072023 sw a6,32(a4) + 3bc09d8a: d34c sw a1,36(a4) + 3bc09d8c: d70c sw a1,40(a4) + 3bc09d8e: 001f25b7 lui a1,0x1f2 + 3bc09d92: f0658593 addi a1,a1,-250 # 1f1f06 <__BSS_SIZE__+0x1ec2f6> + 3bc09d96: d74c sw a1,44(a4) + 3bc09d98: 080005b7 lui a1,0x8000 + 3bc09d9c: 61058593 addi a1,a1,1552 # 8000610 + 3bc09da0: c32c sw a1,64(a4) + 3bc09da2: 2407a223 sw zero,580(a5) + 3bc09da6: f8550513 addi a0,a0,-123 + 3bc09daa: cb28 sw a0,80(a4) + 3bc09dac: 100005b7 lui a1,0x10000 + 3bc09db0: 2407aa23 sw zero,596(a5) + 3bc09db4: 0f058593 addi a1,a1,240 # 100000f0 + 3bc09db8: cf6c sw a1,92(a4) + 3bc09dba: d36c sw a1,100(a4) + 3bc09dbc: d76c sw a1,108(a4) + 3bc09dbe: 3007a023 sw zero,768(a5) + 3bc09dc2: 3007a223 sw zero,772(a5) + 3bc09dc6: 3007a623 sw zero,780(a5) + 3bc09dca: 30078713 addi a4,a5,768 + 3bc09dce: d314 sw a3,32(a4) + 3bc09dd0: 3607a623 sw zero,876(a5) + 3bc09dd4: 40078713 addi a4,a5,1024 + 3bc09dd8: 45c5 li a1,17 + 3bc09dda: c30c sw a1,0(a4) + 3bc09ddc: 6599 lui a1,0x6 + 3bc09dde: c34c sw a1,4(a4) + 3bc09de0: 489d li a7,7 + 3bc09de2: c70c sw a1,8(a4) + 3bc09de4: 48078713 addi a4,a5,1152 + 3bc09de8: cb14 sw a3,16(a4) + 3bc09dea: 06a00813 li a6,106 + 3bc09dee: 01172a23 sw a7,20(a4) + 3bc09df2: 01072c23 sw a6,24(a4) + 3bc09df6: e0760613 addi a2,a2,-505 + 3bc09dfa: 01a80537 lui a0,0x1a80 + 3bc09dfe: cf50 sw a2,28(a4) + 3bc09e00: 1a850513 addi a0,a0,424 # 1a801a8 <__BSS_SIZE__+0x1a7a598> + 3bc09e04: d308 sw a0,32(a4) + 3bc09e06: db4c sw a1,52(a4) + 3bc09e08: df0c sw a1,56(a4) + 3bc09e0a: 50078713 addi a4,a5,1280 + 3bc09e0e: c334 sw a3,64(a4) + 3bc09e10: 05172223 sw a7,68(a4) + 3bc09e14: 05072423 sw a6,72(a4) + 3bc09e18: c770 sw a2,76(a4) + 3bc09e1a: cb28 sw a0,80(a4) + 3bc09e1c: d36c sw a1,100(a4) + 3bc09e1e: d72c sw a1,104(a4) + 3bc09e20: 58078713 addi a4,a5,1408 + 3bc09e24: db34 sw a3,112(a4) + 3bc09e26: 07172a23 sw a7,116(a4) + 3bc09e2a: 07072c23 sw a6,120(a4) + 3bc09e2e: df70 sw a2,124(a4) + 3bc09e30: 60078793 addi a5,a5,1536 + 3bc09e34: c388 sw a0,0(a5) + 3bc09e36: 8082 ret + +000000003bc09e38 : + 3bc09e38: 080047b7 lui a5,0x8004 + 3bc09e3c: 4709 li a4,2 + 3bc09e3e: db98 sw a4,48(a5) + 3bc09e40: 00400737 lui a4,0x400 + 3bc09e44: 0761 addi a4,a4,24 + 3bc09e46: 18078693 addi a3,a5,384 # 8004180 + 3bc09e4a: d298 sw a4,32(a3) + 3bc09e4c: 0800a737 lui a4,0x800a + 3bc09e50: 00072a23 sw zero,20(a4) # 800a014 + 3bc09e54: 63746737 lui a4,0x63746 + 3bc09e58: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32b61> + 3bc09e5c: c7d8 sw a4,12(a5) + 3bc09e5e: 08000737 lui a4,0x8000 + 3bc09e62: c3f8 sw a4,68(a5) + 3bc09e64: 8082 ret + +000000003bc09e66 : + 3bc09e66: 080047b7 lui a5,0x8004 + 3bc09e6a: c0400737 lui a4,0xc0400 + 3bc09e6e: 0207a823 sw zero,48(a5) # 8004030 + 3bc09e72: 0761 addi a4,a4,24 + 3bc09e74: 1ae7a023 sw a4,416(a5) + 3bc09e78: 6705 lui a4,0x1 + 3bc09e7a: 177d addi a4,a4,-1 + 3bc09e7c: 0800a6b7 lui a3,0x800a + 3bc09e80: cad8 sw a4,20(a3) + 3bc09e82: 63746737 lui a4,0x63746 + 3bc09e86: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32b61> + 3bc09e8a: c7d8 sw a4,12(a5) + 3bc09e8c: 14000737 lui a4,0x14000 + 3bc09e90: c3f8 sw a4,68(a5) + 3bc09e92: 8082 ret + +000000003bc09e94 : + 3bc09e94: 080047b7 lui a5,0x8004 + 3bc09e98: 4398 lw a4,0(a5) + 3bc09e9a: 0000a797 auipc a5,0xa + 3bc09e9e: 94e7ab23 sw a4,-1706(a5) # 3bc137f0 + 3bc09ea2: 34c7368b extu a3,a4,13,12 + 3bc09ea6: 4785 li a5,1 + 3bc09ea8: 9f95 subw a5,a5,a3 + 3bc09eaa: 40f557bb sraw a5,a0,a5 + 3bc09eae: 4689 li a3,2 + 3bc09eb0: 01e7571b srliw a4,a4,0x1e + 3bc09eb4: 40e6873b subw a4,a3,a4 + 3bc09eb8: 0ff7f793 andi a5,a5,255 + 3bc09ebc: 40e7d7bb sraw a5,a5,a4 + 3bc09ec0: 0ff7f793 andi a5,a5,255 + 3bc09ec4: ffa7869b addiw a3,a5,-6 + 3bc09ec8: 4711 li a4,4 + 3bc09eca: 02d76763 bltu a4,a3,3bc09ef8 + 3bc09ece: 00002717 auipc a4,0x2 + 3bc09ed2: 86a70713 addi a4,a4,-1942 # 3bc0b738 + 3bc09ed6: 54d7478b lurw a5,a4,a3,2 + 3bc09eda: 2781 sext.w a5,a5 + 3bc09edc: 97ba add a5,a5,a4 + 3bc09ede: 08004737 lui a4,0x8004 + 3bc09ee2: 8782 jr a5 + 3bc09ee4: 007107b7 lui a5,0x710 + 3bc09ee8: 02a78793 addi a5,a5,42 # 71002a <__BSS_SIZE__+0x70a41a> + 3bc09eec: d37c sw a5,100(a4) + 3bc09eee: 6785 lui a5,0x1 + 3bc09ef0: 90378793 addi a5,a5,-1789 # 903 <__BSS_SIZE__-0x530d> + 3bc09ef4: 12f72023 sw a5,288(a4) # 8004120 + 3bc09ef8: 080047b7 lui a5,0x8004 + 3bc09efc: 4709 li a4,2 + 3bc09efe: d3b8 sw a4,96(a5) + 3bc09f00: 0607a023 sw zero,96(a5) # 8004060 + 3bc09f04: 8082 ret + 3bc09f06: 007107b7 lui a5,0x710 + 3bc09f0a: 03478793 addi a5,a5,52 # 710034 <__BSS_SIZE__+0x70a424> + 3bc09f0e: bff9 j 3bc09eec + 3bc09f10: 007107b7 lui a5,0x710 + 3bc09f14: 04b78793 addi a5,a5,75 # 71004b <__BSS_SIZE__+0x70a43b> + 3bc09f18: d37c sw a5,100(a4) + 3bc09f1a: 6785 lui a5,0x1 + 3bc09f1c: 90478793 addi a5,a5,-1788 # 904 <__BSS_SIZE__-0x530c> + 3bc09f20: bfd1 j 3bc09ef4 + 3bc09f22: 007107b7 lui a5,0x710 + 3bc09f26: 07a78793 addi a5,a5,122 # 71007a <__BSS_SIZE__+0x70a46a> + 3bc09f2a: d37c sw a5,100(a4) + 3bc09f2c: 6785 lui a5,0x1 + 3bc09f2e: 90578793 addi a5,a5,-1787 # 905 <__BSS_SIZE__-0x530b> + 3bc09f32: b7c9 j 3bc09ef4 + 3bc09f34: 007107b7 lui a5,0x710 + 3bc09f38: 0a478793 addi a5,a5,164 # 7100a4 <__BSS_SIZE__+0x70a494> + 3bc09f3c: d37c sw a5,100(a4) + 3bc09f3e: 6785 lui a5,0x1 + 3bc09f40: 90778793 addi a5,a5,-1785 # 907 <__BSS_SIZE__-0x5309> + 3bc09f44: bf45 j 3bc09ef4 + +000000003bc09f46 : + 3bc09f46: 03020737 lui a4,0x3020 + 3bc09f4a: 080007b7 lui a5,0x8000 + 3bc09f4e: 10070713 addi a4,a4,256 # 3020100 <__BSS_SIZE__+0x301a4f0> + 3bc09f52: c398 sw a4,0(a5) + 3bc09f54: 07060737 lui a4,0x7060 + 3bc09f58: 50470713 addi a4,a4,1284 # 7060504 + 3bc09f5c: c3d8 sw a4,4(a5) + 3bc09f5e: 0b0a1737 lui a4,0xb0a1 + 3bc09f62: 90870713 addi a4,a4,-1784 # b0a0908 + 3bc09f66: c798 sw a4,8(a5) + 3bc09f68: 0f0e1737 lui a4,0xf0e1 + 3bc09f6c: d0c70713 addi a4,a4,-756 # f0e0d0c + 3bc09f70: c7d8 sw a4,12(a5) + 3bc09f72: 13121737 lui a4,0x13121 + 3bc09f76: 11070713 addi a4,a4,272 # 13121110 + 3bc09f7a: cb98 sw a4,16(a5) + 3bc09f7c: 00161737 lui a4,0x161 + 3bc09f80: 51470713 addi a4,a4,1300 # 161514 <__BSS_SIZE__+0x15b904> + 3bc09f84: cbd8 sw a4,20(a5) + 3bc09f86: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09f8a: 10000613 li a2,256 + 3bc09f8e: 76543737 lui a4,0x76543 + 3bc09f92: cfd0 sw a2,28(a5) + 3bc09f94: 21070713 addi a4,a4,528 # 76543210 <__BL2_END__+0x3a92fa00> + 3bc09f98: d398 sw a4,32(a5) + 3bc09f9a: 46a1 li a3,8 + 3bc09f9c: d3d4 sw a3,36(a5) + 3bc09f9e: d798 sw a4,40(a5) + 3bc09fa0: d7d4 sw a3,44(a5) + 3bc09fa2: 007f0737 lui a4,0x7f0 + 3bc09fa6: 0407a023 sw zero,64(a5) + 3bc09faa: 0735 addi a4,a4,13 + 3bc09fac: c3f8 sw a4,68(a5) + 3bc09fae: 0407a423 sw zero,72(a5) + 3bc09fb2: c7f4 sw a3,76(a5) + 3bc09fb4: 4719 li a4,6 + 3bc09fb6: cbb8 sw a4,80(a5) + 3bc09fb8: 0c001737 lui a4,0xc001 + 3bc09fbc: b0070713 addi a4,a4,-1280 # c000b00 + 3bc09fc0: cbf8 sw a4,84(a5) + 3bc09fc2: 09160737 lui a4,0x9160 + 3bc09fc6: 04f70713 addi a4,a4,79 # 916004f + 3bc09fca: cfb8 sw a4,88(a5) + 3bc09fcc: 04000837 lui a6,0x4000 + 3bc09fd0: 0407ae23 sw zero,92(a5) + 3bc09fd4: 37080713 addi a4,a6,880 # 4000370 <__BSS_SIZE__+0x3ffa760> + 3bc09fd8: d3b8 sw a4,96(a5) + 3bc09fda: 10001737 lui a4,0x10001 + 3bc09fde: c0070713 addi a4,a4,-1024 # 10000c00 + 3bc09fe2: d3f8 sw a4,100(a5) + 3bc09fe4: 00800737 lui a4,0x800 + 3bc09fe8: d7b8 sw a4,104(a5) + 3bc09fea: 10800713 li a4,264 + 3bc09fee: dbb8 sw a4,112(a5) + 3bc09ff0: 00072737 lui a4,0x72 + 3bc09ff4: dbf8 sw a4,116(a5) + 3bc09ff6: 1f00e6b7 lui a3,0x1f00e + 3bc09ffa: 08078713 addi a4,a5,128 + 3bc09ffe: c314 sw a3,0(a4) + 3bc0a000: 010b16b7 lui a3,0x10b1 + 3bc0a004: c0a68693 addi a3,a3,-1014 # 10b0c0a <__BSS_SIZE__+0x10aaffa> + 3bc0a008: c354 sw a3,4(a4) + 3bc0a00a: 0a0106b7 lui a3,0xa010 + 3bc0a00e: 11468693 addi a3,a3,276 # a010114 + 3bc0a012: c714 sw a3,8(a4) + 3bc0a014: aaaa06b7 lui a3,0xaaaa0 + 3bc0a018: 08f68693 addi a3,a3,143 # ffffffffaaaa008f <__BL2_END__+0xffffffff6ee8c87f> + 3bc0a01c: c754 sw a3,12(a4) + 3bc0a01e: 6691 lui a3,0x4 + 3bc0a020: 80068593 addi a1,a3,-2048 # 3800 <__BSS_SIZE__-0x2410> + 3bc0a024: 6505 lui a0,0x1 + 3bc0a026: cb0c sw a1,16(a4) + 3bc0a028: 80150593 addi a1,a0,-2047 # 801 <__BSS_SIZE__-0x540f> + 3bc0a02c: cb4c sw a1,20(a4) + 3bc0a02e: 074005b7 lui a1,0x7400 + 3bc0a032: 54058593 addi a1,a1,1344 # 7400540 + 3bc0a036: d30c sw a1,32(a4) + 3bc0a038: 014205b7 lui a1,0x1420 + 3bc0a03c: 50458593 addi a1,a1,1284 # 1420504 <__BSS_SIZE__+0x141a8f4> + 3bc0a040: d34c sw a1,36(a4) + 3bc0a042: 005505b7 lui a1,0x550 + 3bc0a046: 05a9 addi a1,a1,10 + 3bc0a048: d70c sw a1,40(a4) + 3bc0a04a: 005545b7 lui a1,0x554 + 3bc0a04e: c5a58593 addi a1,a1,-934 # 553c5a <__BSS_SIZE__+0x54e04a> + 3bc0a052: d74c sw a1,44(a4) + 3bc0a054: 00aaa5b7 lui a1,0xaaa + 3bc0a058: 5c358593 addi a1,a1,1475 # aaa5c3 <__BSS_SIZE__+0xaa49b3> + 3bc0a05c: db0c sw a1,48(a4) + 3bc0a05e: 00aaf5b7 lui a1,0xaaf + 3bc0a062: 0f058593 addi a1,a1,240 # aaf0f0 <__BSS_SIZE__+0xaa94e0> + 3bc0a066: db4c sw a1,52(a4) + 3bc0a068: 1e0015b7 lui a1,0x1e001 + 3bc0a06c: f0f58593 addi a1,a1,-241 # 1e000f0f + 3bc0a070: df0c sw a1,56(a4) + 3bc0a072: 000845b7 lui a1,0x84 + 3bc0a076: e1358593 addi a1,a1,-493 # 83e13 <__BSS_SIZE__+0x7e203> + 3bc0a07a: df4c sw a1,60(a4) + 3bc0a07c: 000305b7 lui a1,0x30 + 3bc0a080: 0e07a823 sw zero,240(a5) + 3bc0a084: 03358593 addi a1,a1,51 # 30033 <__BSS_SIZE__+0x2a423> + 3bc0a088: db6c sw a1,116(a4) + 3bc0a08a: 002105b7 lui a1,0x210 + 3bc0a08e: 02c58593 addi a1,a1,44 # 21002c <__BSS_SIZE__+0x20a41c> + 3bc0a092: df2c sw a1,120(a4) + 3bc0a094: 003705b7 lui a1,0x370 + 3bc0a098: 05d9 addi a1,a1,22 + 3bc0a09a: df6c sw a1,124(a4) + 3bc0a09c: 10078713 addi a4,a5,256 + 3bc0a0a0: 01072023 sw a6,0(a4) # 72000 <__BSS_SIZE__+0x6c3f0> + 3bc0a0a4: 1007a223 sw zero,260(a5) + 3bc0a0a8: 1007a623 sw zero,268(a5) + 3bc0a0ac: 1007a823 sw zero,272(a5) + 3bc0a0b0: 1007aa23 sw zero,276(a5) + 3bc0a0b4: 659d lui a1,0x7 + 3bc0a0b6: 1007ac23 sw zero,280(a5) + 3bc0a0ba: a1058593 addi a1,a1,-1520 # 6a10 <__BSS_SIZE__+0xe00> + 3bc0a0be: cf4c sw a1,28(a4) + 3bc0a0c0: 1207a023 sw zero,288(a5) + 3bc0a0c4: ef700593 li a1,-265 + 3bc0a0c8: d34c sw a1,36(a4) + 3bc0a0ca: 45fd li a1,31 + 3bc0a0cc: d70c sw a1,40(a4) + 3bc0a0ce: 4585 li a1,1 + 3bc0a0d0: d74c sw a1,44(a4) + 3bc0a0d2: 10100593 li a1,257 + 3bc0a0d6: db0c sw a1,48(a4) + 3bc0a0d8: db50 sw a2,52(a4) + 3bc0a0da: 4851 li a6,20 + 3bc0a0dc: 03072c23 sw a6,56(a4) + 3bc0a0e0: 1407a023 sw zero,320(a5) + 3bc0a0e4: 1407a223 sw zero,324(a5) + 3bc0a0e8: 80850e13 addi t3,a0,-2040 + 3bc0a0ec: 05c72423 sw t3,72(a4) + 3bc0a0f0: 1407a623 sw zero,332(a5) + 3bc0a0f4: 4815 li a6,5 + 3bc0a0f6: 05072823 sw a6,80(a4) + 3bc0a0fa: cb6c sw a1,84(a4) + 3bc0a0fc: 1407ac23 sw zero,344(a5) + 3bc0a100: 003335b7 lui a1,0x333 + 3bc0a104: 1407ae23 sw zero,348(a5) + 3bc0a108: 33158593 addi a1,a1,817 # 333331 <__BSS_SIZE__+0x32d721> + 3bc0a10c: 1607a223 sw zero,356(a5) + 3bc0a110: d72c sw a1,104(a4) + 3bc0a112: 1607a623 sw zero,364(a5) + 3bc0a116: 1607a823 sw zero,368(a5) + 3bc0a11a: db70 sw a2,116(a4) + 3bc0a11c: 00020637 lui a2,0x20 + 3bc0a120: 18078713 addi a4,a5,384 + 3bc0a124: 0641 addi a2,a2,16 + 3bc0a126: c310 sw a2,0(a4) + 3bc0a128: 1807a223 sw zero,388(a5) + 3bc0a12c: 00090637 lui a2,0x90 + 3bc0a130: 1807a423 sw zero,392(a5) + 3bc0a134: 40060613 addi a2,a2,1024 # 90400 <__BSS_SIZE__+0x8a7f0> + 3bc0a138: c750 sw a2,12(a4) + 3bc0a13a: 00021637 lui a2,0x21 + 3bc0a13e: 20e60613 addi a2,a2,526 # 2120e <__BSS_SIZE__+0x1b5fe> + 3bc0a142: cb10 sw a2,16(a4) + 3bc0a144: 2007a023 sw zero,512(a5) + 3bc0a148: 20078713 addi a4,a5,512 + 3bc0a14c: 44000613 li a2,1088 + 3bc0a150: c350 sw a2,4(a4) + 3bc0a152: 2007a423 sw zero,520(a5) + 3bc0a156: 2207a023 sw zero,544(a5) + 3bc0a15a: d350 sw a2,36(a4) + 3bc0a15c: 2207a423 sw zero,552(a5) + 3bc0a160: 4007a023 sw zero,1024(a5) + 3bc0a164: 4007a223 sw zero,1028(a5) + 3bc0a168: 4007a423 sw zero,1032(a5) + 3bc0a16c: 4007a623 sw zero,1036(a5) + 3bc0a170: 40078713 addi a4,a5,1024 + 3bc0a174: 001005b7 lui a1,0x100 + 3bc0a178: e4b7558b swd a1,a1,(a4),2,3 + 3bc0a17c: 4609 li a2,2 + 3bc0a17e: cf10 sw a2,24(a4) + 3bc0a180: 04068693 addi a3,a3,64 + 3bc0a184: cf54 sw a3,28(a4) + 3bc0a186: 000416b7 lui a3,0x41 + 3bc0a18a: 50078713 addi a4,a5,1280 + 3bc0a18e: 0685 addi a3,a3,1 + 3bc0a190: e0b7568b swd a3,a1,(a4),0,3 + 3bc0a194: 5007a423 sw zero,1288(a5) + 3bc0a198: 5007a623 sw zero,1292(a5) + 3bc0a19c: 4811 li a6,4 + 3bc0a19e: 01072823 sw a6,16(a4) + 3bc0a1a2: 5007aa23 sw zero,1300(a5) + 3bc0a1a6: 5007ac23 sw zero,1304(a5) + 3bc0a1aa: 5007ae23 sw zero,1308(a5) + 3bc0a1ae: 460d li a2,3 + 3bc0a1b0: d310 sw a2,32(a4) + 3bc0a1b2: c334 sw a3,64(a4) + 3bc0a1b4: c36c sw a1,68(a4) + 3bc0a1b6: 5407a423 sw zero,1352(a5) + 3bc0a1ba: 5407a623 sw zero,1356(a5) + 3bc0a1be: 05072823 sw a6,80(a4) + 3bc0a1c2: 5407aa23 sw zero,1364(a5) + 3bc0a1c6: 5407ac23 sw zero,1368(a5) + 3bc0a1ca: 5407ae23 sw zero,1372(a5) + 3bc0a1ce: d330 sw a2,96(a4) + 3bc0a1d0: 08001737 lui a4,0x8001 + 3bc0a1d4: 90070793 addi a5,a4,-1792 # 8000900 + 3bc0a1d8: 40000693 li a3,1024 + 3bc0a1dc: c394 sw a3,0(a5) + 3bc0a1de: d7d4 sw a3,44(a5) + 3bc0a1e0: db94 sw a3,48(a5) + 3bc0a1e2: dbd4 sw a3,52(a5) + 3bc0a1e4: df94 sw a3,56(a5) + 3bc0a1e6: 94072023 sw zero,-1728(a4) + 3bc0a1ea: 96072823 sw zero,-1680(a4) + 3bc0a1ee: 96072a23 sw zero,-1676(a4) + 3bc0a1f2: 080806b7 lui a3,0x8080 + 3bc0a1f6: 96072c23 sw zero,-1672(a4) + 3bc0a1fa: 40468693 addi a3,a3,1028 # 8080404 + 3bc0a1fe: 08081837 lui a6,0x8081 + 3bc0a202: dff4 sw a3,124(a5) + 3bc0a204: 80880813 addi a6,a6,-2040 # 8080808 + 3bc0a208: 98070793 addi a5,a4,-1664 + 3bc0a20c: 06400637 lui a2,0x6400 + 3bc0a210: 0107a023 sw a6,0(a5) + 3bc0a214: 64060613 addi a2,a2,1600 # 6400640 + 3bc0a218: a0070793 addi a5,a4,-1536 + 3bc0a21c: e0c7d60b swd a2,a2,(a5),0,3 + 3bc0a220: e2c7d60b swd a2,a2,(a5),1,3 + 3bc0a224: 64000f93 li t6,1600 + 3bc0a228: 01f7a823 sw t6,16(a5) + 3bc0a22c: 0b000f37 lui t5,0xb000 + 3bc0a230: 0a001337 lui t1,0xa001 + 3bc0a234: 01e7aa23 sw t5,20(a5) + 3bc0a238: 90030313 addi t1,t1,-1792 # a000900 + 3bc0a23c: 000408b7 lui a7,0x40 + 3bc0a240: 0067ac23 sw t1,24(a5) + 3bc0a244: 60088893 addi a7,a7,1536 # 40600 <__BSS_SIZE__+0x3a9f0> + 3bc0a248: 004006b7 lui a3,0x400 + 3bc0a24c: 04068693 addi a3,a3,64 # 400040 <__BSS_SIZE__+0x3fa430> + 3bc0a250: 0117ae23 sw a7,28(a5) + 3bc0a254: d394 sw a3,32(a5) + 3bc0a256: d3d4 sw a3,36(a5) + 3bc0a258: d794 sw a3,40(a5) + 3bc0a25a: d7d4 sw a3,44(a5) + 3bc0a25c: 04000e93 li t4,64 + 3bc0a260: 03d7a823 sw t4,48(a5) + 3bc0a264: a2072a23 sw zero,-1484(a4) + 3bc0a268: 03c7ac23 sw t3,56(a5) + 3bc0a26c: 0307ae23 sw a6,60(a5) + 3bc0a270: c3b0 sw a2,64(a5) + 3bc0a272: c3f0 sw a2,68(a5) + 3bc0a274: c7b0 sw a2,72(a5) + 3bc0a276: c7f0 sw a2,76(a5) + 3bc0a278: 05f7a823 sw t6,80(a5) + 3bc0a27c: 05e7aa23 sw t5,84(a5) + 3bc0a280: 0467ac23 sw t1,88(a5) + 3bc0a284: 0517ae23 sw a7,92(a5) + 3bc0a288: d3b4 sw a3,96(a5) + 3bc0a28a: d3f4 sw a3,100(a5) + 3bc0a28c: d7b4 sw a3,104(a5) + 3bc0a28e: d7f4 sw a3,108(a5) + 3bc0a290: 07d7a823 sw t4,112(a5) + 3bc0a294: a6072a23 sw zero,-1420(a4) + 3bc0a298: 07c7ac23 sw t3,120(a5) + 3bc0a29c: 0707ae23 sw a6,124(a5) + 3bc0a2a0: b0072023 sw zero,-1280(a4) + 3bc0a2a4: b0072223 sw zero,-1276(a4) + 3bc0a2a8: b0070793 addi a5,a4,-1280 + 3bc0a2ac: 00404837 lui a6,0x404 + 3bc0a2b0: 0107a423 sw a6,8(a5) + 3bc0a2b4: b4050513 addi a0,a0,-1216 + 3bc0a2b8: c7c8 sw a0,12(a5) + 3bc0a2ba: 000816b7 lui a3,0x81 + 3bc0a2be: b0072823 sw zero,-1264(a4) + 3bc0a2c2: e0e68693 addi a3,a3,-498 # 80e0e <__BSS_SIZE__+0x7b1fe> + 3bc0a2c6: cbd4 sw a3,20(a5) + 3bc0a2c8: b0072c23 sw zero,-1256(a4) + 3bc0a2cc: b0072e23 sw zero,-1252(a4) + 3bc0a2d0: 40400637 lui a2,0x40400 + 3bc0a2d4: d390 sw a2,32(a5) + 3bc0a2d6: 05c1 addi a1,a1,16 + 3bc0a2d8: d3cc sw a1,36(a5) + 3bc0a2da: b2072823 sw zero,-1232(a4) + 3bc0a2de: b2072a23 sw zero,-1228(a4) + 3bc0a2e2: 0307ac23 sw a6,56(a5) + 3bc0a2e6: dfc8 sw a0,60(a5) + 3bc0a2e8: b4072023 sw zero,-1216(a4) + 3bc0a2ec: c3f4 sw a3,68(a5) + 3bc0a2ee: b4072423 sw zero,-1208(a4) + 3bc0a2f2: b4072623 sw zero,-1204(a4) + 3bc0a2f6: cbb0 sw a2,80(a5) + 3bc0a2f8: cbec sw a1,84(a5) + 3bc0a2fa: 8082 ret + 3bc0a2fc: 0000 unimp + ... + +000000003bc0a300 : + 3bc0a300: 3032 3232 312d 2d32 3032 3254 3a31 3635 2022-12-20T21:56 + 3bc0a310: 343a 2b39 3830 303a 0030 0000 0000 0000 :49+08:00....... + +000000003bc0a320 : + 3bc0a320: 624a 3832 3967 673a 6536 3835 6565 0031 Jb28g9:g6e58ee1. + 3bc0a330: 3201 504f 4e45 4253 3a49 6e20 7865 5f74 .2OPENSBI: next_ + 3bc0a340: 6461 7264 303d 2578 786c 6120 6772 3d31 addr=0x%lx arg1= + 3bc0a350: 7830 6c25 0078 0000 7830 0000 60b6 ffff 0x%lx...0x...`.. + 3bc0a360: 605c ffff 605c ffff 605c ffff 605c ffff \`..\`..\`..\`.. + 3bc0a370: 60b6 ffff 605c ffff 605c ffff 616a ffff .`..\`..\`..ja.. + 3bc0a380: 605c ffff 605c ffff 605c ffff 6112 ffff \`..\`..\`...a.. + 3bc0a390: 605c ffff 605c ffff 60f2 ffff 605c ffff \`..\`...`..\`.. + 3bc0a3a0: 6170 ffff 605c ffff 605c ffff 6146 ffff pa..\`..\`..Fa.. + 3bc0a3b0: 605c ffff 6164 ffff 3001 4520 523a 5345 \`..da...0 E:RES + 3bc0a3c0: 5445 253a 3a73 6425 000a 0000 0000 0000 ET:%s:%d........ + 3bc0a3d0: 3001 4520 723a 3d61 7830 6c25 0a78 0000 .0 E:ra=0x%lx... + 3bc0a3e0: 6170 696e 0063 0000 3201 5352 2e43 000a panic....2RSC... + 3bc0a3f0: 3201 4c50 534c 0a2e 0000 0000 0000 0000 .2PLLS.......... + 3bc0a400: 3201 4c50 454c 0a2e 0000 0000 0000 0000 .2PLLE.......... + 3bc0a410: 3201 7355 2065 6e69 6574 6e72 6c61 3320 .2Use internal 3 + 3bc0a420: 6b32 000a 0000 0000 3201 7473 6f5f 5f6e 2k.......2st_on_ + 3bc0a430: 6572 7361 6e6f 253d 0a78 0000 0000 0000 reason=%x....... + 3bc0a440: 3201 7473 6f5f 6666 725f 6165 6f73 3d6e .2st_off_reason= + 3bc0a450: 7825 000a 0000 0000 0000 249f 1746 245d %x.........$F.]$ + 3bc0a460: 1746 245d aaab 24aa 8201 0012 8101 0018 F.]$...$........ + 3bc0a470: 8201 0030 8101 0016 c906 a55a 0024 0000 ..0.......Z.$... + 3bc0a480: 0000 83a0 0000 0140 ......@. + +000000003bc0a488 : + 3bc0a488: 3130 3332 3534 3736 3938 6261 6463 6665 0123456789abcdef + 3bc0a498: 6867 6a69 6c6b 6e6d 706f 7271 7473 7675 ghijklmnopqrstuv + 3bc0a4a8: 7877 7a79 0000 0000 0101 0101 0101 0101 wxyz............ + 3bc0a4b8: 3301 4920 4c3a 4549 252f 2f64 7025 302f .3 I:LIE/%d/%p/0 + 3bc0a4c8: 2578 2f78 6c25 2e75 000a 0000 0000 0000 x%x/%lu......... + 3bc0a4d8: 3201 3250 2f53 7830 6c25 2f78 7025 0a2e .2P2S/0x%lx/%p.. + ... + 3bc0a4f0: 3101 5720 4c3a 3250 4e5f 4d4f 4741 4349 .1 W:LP2_NOMAGIC + 3bc0a500: 000a 0000 0000 0000 3001 4520 703a 7261 .........0 E:par + 3bc0a510: 6d61 5f32 6b63 7573 206d 3028 2578 2f78 am2_cksum (0x%x/ + 3bc0a520: 7830 7825 0a29 0000 3201 3250 2e45 000a 0x%x)....2P2E... + 3bc0a530: 3201 5044 2f53 7830 7825 302f 2578 2e78 .2DPS/0x%x/0x%x. + 3bc0a540: 000a 0000 0000 0000 3001 4520 643a 7264 .........0 E:ddr + 3bc0a550: 705f 7261 6d61 635f 736b 6d75 2820 7830 _param_cksum (0x + 3bc0a560: 7825 302f 2578 2978 000a 0000 0000 0000 %x/0x%x)........ + 3bc0a570: 3201 5044 2e45 000a 3101 5720 443a 204c .2DPE....1 W:DL + 3bc0a580: 6163 636e 6c65 656c 2e64 4c20 616f 2064 cancelled. Load + 3bc0a590: 6c66 7361 2e68 2820 6425 2e29 000a 0000 flash. (%d)..... + 3bc0a5a0: 3001 4520 463a 6961 656c 2064 6f74 6c20 .0 E:Failed to l + 3bc0a5b0: 616f 2064 4444 2052 6170 6172 206d 2528 oad DDR param (% + 3bc0a5c0: 2964 0a2e 0000 0000 3201 3243 2f53 7830 d).......2C2S/0x + 3bc0a5d0: 7825 302f 2578 2f78 7830 7825 0a2e 0000 %x/0x%x/0x%x.... + 3bc0a5e0: 3201 6f4e 4320 3039 4c36 6920 616d 6567 .2No C906L image + 3bc0a5f0: 0a2e 0000 0000 0000 3001 4520 623a 636c .........0 E:blc + 3bc0a600: 5f70 6e32 5f64 7572 616e 6464 2072 3028 p_2nd_runaddr (0 + 3bc0a610: 2578 2978 6920 2073 6f6e 2074 6e69 4420 x%x) is not in D + 3bc0a620: 4152 2e4d 000a 0000 3001 4520 623a 636c RAM......0 E:blc + 3bc0a630: 5f70 6e32 5f64 6973 657a 2820 7830 7825 p_2nd_size (0x%x + 3bc0a640: 2029 7369 6e20 746f 6920 206e 5244 4d41 ) is not in DRAM + 3bc0a650: 0a2e 0000 0000 0000 3001 4520 623a 636c .........0 E:blc + 3bc0a660: 5f70 6e32 5f64 6b63 7573 206d 3028 2578 p_2nd_cksum (0x% + 3bc0a670: 2f78 7830 7825 0a29 0000 0000 0000 0000 x/0x%x)......... + 3bc0a680: 3001 4520 763a 7265 6669 2079 6c62 7063 .0 E:verify blcp + 3bc0a690: 3220 646e 2820 6425 0a29 0000 0000 0000 2nd (%d)....... + 3bc0a6a0: 3201 3243 2e45 000a 3201 534d 302f 2578 .2C2E....2MS/0x% + 3bc0a6b0: 2f78 7830 7825 302f 2578 2e78 000a 0000 x/0x%x/0x%x..... + 3bc0a6c0: 3201 6f4e 6d20 6e6f 7469 726f 0a2e 0000 .2No monitor.... + 3bc0a6d0: 3001 4520 6d3a 6e6f 7469 726f 725f 6e75 .0 E:monitor_run + 3bc0a6e0: 6461 7264 2820 7830 7825 2029 7369 6e20 addr (0x%x) is n + 3bc0a6f0: 746f 6920 206e 5244 4d41 0a2e 0000 0000 ot in DRAM...... + 3bc0a700: 3001 4520 6d3a 6e6f 7469 726f 735f 7a69 .0 E:monitor_siz + 3bc0a710: 2065 3028 2578 2978 6920 2073 6f6e 2074 e (0x%x) is not + 3bc0a720: 6e69 4420 4152 2e4d 000a 0000 0000 0000 in DRAM......... + 3bc0a730: 3001 4520 6d3a 6e6f 7469 726f 635f 736b .0 E:monitor_cks + 3bc0a740: 6d75 2820 7830 7825 302f 2578 2978 000a um (0x%x/0x%x).. + 3bc0a750: 3001 4520 763a 7265 6669 2079 6f6d 696e .0 E:verify moni + 3bc0a760: 6f74 2072 2528 2964 000a 0000 0000 0000 tor (%d)........ + 3bc0a770: 3201 454d 0a2e 0000 3201 324c 302f 2578 .2ME.....2L2/0x% + 3bc0a780: 2e78 000a 0000 0000 3201 324c 302f 2578 x........2L2/0x% + 3bc0a790: 2f78 7830 7825 302f 2578 786c 302f 2578 x/0x%x/0x%lx/0x% + 3bc0a7a0: 2f78 7830 7825 000a 3201 4f43 504d 252f x/0x%x...2COMP/% + 3bc0a7b0: 2e64 000a 0000 0000 3001 4520 6c3a 616f d........0 E:loa + 3bc0a7c0: 6564 5f72 6e32 5f64 6b63 7573 206d 3028 der_2nd_cksum (0 + 3bc0a7d0: 2578 2f78 7830 7825 0a29 0000 0000 0000 x%x/0x%x)....... + 3bc0a7e0: 3001 4520 763a 7265 6669 2079 6f6c 6461 .0 E:verify load + 3bc0a7f0: 7265 3220 646e 2820 6425 0a29 0000 0000 er 2nd (%d)..... + 3bc0a800: 3001 4520 463a 6961 656c 2064 6f74 6420 .0 E:Failed to d + 3bc0a810: 6365 6d6f 7270 7365 2073 6f6c 6461 7265 ecompress loader + 3bc0a820: 325f 646e 2820 6425 252f 756c 0a29 0000 _2nd (%d/%lu)... + 3bc0a830: 3201 6f4c 6461 7265 325f 646e 6c20 616f .2Loader_2nd loa + 3bc0a840: 6564 2e64 000a 0000 3001 4520 463a 6961 ded......0 E:Fai + 3bc0a850: 656c 2064 6f74 6c20 616f 2064 6572 7473 led to load rest + 3bc0a860: 2820 6425 2e29 000a 3201 754a 706d 7420 (%d)....2Jump t + 3bc0a870: 206f 6f6d 696e 6f74 2072 7461 3020 2578 o monitor at 0x% + 3bc0a880: 786c 0a2e 0000 0000 3201 754a 706d 7420 lx.......2Jump t + 3bc0a890: 206f 6f6c 6461 7265 325f 646e 6120 2074 o loader_2nd at + 3bc0a8a0: 7830 6c25 2e78 000a 3201 460a 4253 204c 0x%lx....2.FSBL + 3bc0a8b0: 7325 253a 0a73 0000 3301 4920 733a 5f77 %s:%s....3 I:sw_ + 3bc0a8c0: 6e69 6f66 303d 2578 0a78 0000 0000 0000 info=0x%x....... + 3bc0a8d0: 3301 4920 663a 7069 705f 7261 6d61 3a31 .3 I:fip_param1: + 3bc0a8e0: 7020 7261 6d61 635f 736b 6d75 303d 2578 param_cksum=0x% + 3bc0a8f0: 2078 6170 6172 326d 6c5f 616f 6164 6464 x param2_loadadd + 3bc0a900: 3d72 7830 7825 000a 3301 4920 433a 5f50 r=0x%x...3 I:CP_ + 3bc0a910: 5453 5441 5f45 4552 3d47 7830 7825 000a STATE_REG=0x%x.. + 3bc0a920: 3201 4c42 2032 6e65 2e64 000a 0000 0000 .2BL2 end....... + 3bc0a930: 5643 444c 3230 000a 3001 4520 253a 2073 CVLD02...0 E:%s + 3bc0a940: 6163 276e 2074 6c61 6f6c 2063 6c25 2075 can't alloc %lu + 3bc0a950: 7962 6574 0a73 0000 3001 4520 253a 3a73 bytes....0 E:%s: + 3bc0a960: 6420 7473 735f 7a69 2065 7369 4e20 4c55 dst_size is NUL + 3bc0a970: 2e4c 000a 0000 0000 3301 4920 4c3a 4d5a L........3 I:LZM + 3bc0a980: 3141 252f 2f70 7025 0a2e 0000 0000 0000 A1/%p/%p........ + 3bc0a990: 3301 4920 4c3a 4d5a 3241 752f 636e 6d6f .3 I:LZMA2/uncom + 3bc0a9a0: 5f70 6973 657a 303d 2578 786c 000a 0000 p_size=0x%lx.... + 3bc0a9b0: 3001 4520 4c3a 6d7a 4461 6365 646f 2065 .0 E:LzmaDecode + 3bc0a9c0: 5245 4f52 3a52 2520 2064 7328 6174 7574 ERROR: %d (statu + 3bc0a9d0: 3d73 6425 0a29 0000 3301 4920 4c3a 4d5a s=%d)....3 I:LZM + 3bc0a9e0: 3941 302f 2578 786c 000a 0000 0000 0000 A9/0x%lx........ + 3bc0a9f0: 3301 4920 4c3a 345a 252f 2f70 7025 0a2e .3 I:LZ4/%p/%p.. + ... + 3bc0aa08: 3001 4520 643a 7463 5378 6174 7574 3d73 .0 E:dctxStatus= + 3bc0aa18: 6c25 0a75 0000 0000 3301 4920 643a 7473 %lu......3 I:dst + 3bc0aa28: 735f 7a69 3d65 6c25 2075 7273 5f63 6973 _size=%lu src_si + 3bc0aa38: 657a 253d 756c 7220 7465 253d 647a 000a ze=%lu ret=%zd.. + 3bc0aa48: 3001 4520 4c3a 345a 5f46 6564 6f63 706d .0 E:LZ4F_decomp + 3bc0aa58: 6572 7373 253d 756c 000a 0000 0000 0000 ress=%lu........ + 3bc0aa68: 3201 4344 2f50 7025 302f 2578 786c 252f .2DCP/%p/0x%lx/% + 3bc0aa78: 2f70 7830 6c25 2f78 6425 0a2e 0000 0000 p/0x%lx/%d...... + 3bc0aa88: 3201 4344 2f50 7830 6c25 2f78 6425 0a2e .2DCP/0x%lx/%d.. + ... + +000000003bc0aaa0 <__func__.0>: + 3bc0aaa0: 7a53 6c41 6f6c 0063 SzAlloc. + +000000003bc0aaa8 <__func__.1>: + 3bc0aaa8: 6564 6f63 706d 6572 7373 6c5f 6d7a 0061 decompress_lzma. + 3bc0aab8: 3301 4920 413a 7070 696c 6163 6974 6e6f .3 I:Application + 3bc0aac8: 203a 7325 000a 0000 3301 4920 753a 6273 : %s.....3 I:usb + 3bc0aad8: 2520 0a73 0000 0000 3201 5355 4242 002e %s......2USBB.. + 3bc0aae8: 3301 4920 433a 4956 555f 4253 425f 4552 .3 I:CVI_USB_BRE + 3bc0aaf8: 4b41 000a 0000 0000 3201 5355 4b42 002e AK.......2USBK.. + 3bc0ab08: 3301 4920 663a 616c 4567 746e 7265 4c44 .3 I:flagEnterDL + 3bc0ab18: 2520 0a64 0000 0000 3301 4920 4d3a 4741 %d......3 I:MAG + 3bc0ab28: 4349 4e20 4d55 4e20 544f 4d20 5441 4843 IC NUM NOT MATCH + 3bc0ab38: 000a 0000 0000 0000 3201 5355 4b42 2e46 .........2USBKF. + ... + 3bc0ab50: 3301 4920 493a 204f 6241 726f 2074 2121 .3 I:IO Abort !! + 3bc0ab60: 2121 0a21 0000 0000 3301 4920 723a 6365 !!!......3 I:rec + 3bc0ab70: 7069 6569 746e 7420 7261 6567 2074 6163 ipient target ca + 3bc0ab80: 6e6e 746f 6220 2065 6e69 6574 6672 6361 nnot be interfac + 3bc0ab90: 2165 000a 0000 0000 3201 5355 5042 302f e!.......2USBP/0 + 3bc0aba0: 2578 2e78 0000 0000 3301 4920 663a 7374 x%x......3 I:fts + 3bc0abb0: 5b6e 6425 205d 203d 7825 000a 0000 0000 n[%d] = %x...... + 3bc0abc0: 3301 4920 633a 6372 7620 6c61 3d20 2520 .3 I:crc val = % + 3bc0abd0: 0a78 0000 0000 0000 3301 4920 743a 2073 x........3 I:ts + 3bc0abe0: 6176 206c 203d 7825 000a 0000 0000 0000 val = %x........ + 3bc0abf0: 3201 5355 5342 252f 2e73 0000 0000 0000 .2USBS/%s....... + 3bc0ac00: 3231 3433 3635 3837 4139 4342 0000 0000 123456789ABC.... + 3bc0ac10: 7065 6931 2d6e 7562 6b6c 0000 0000 0000 ep1in-bulk...... + 3bc0ac20: 7065 6f32 7475 622d 6c75 006b 0000 0000 ep2out-bulk..... + 3bc0ac30: 7065 6933 2d6e 6e69 0074 0000 7074 ffff ep3in-int...tp.. + 3bc0ac40: 7246 ffff 70da ffff 710c ffff 710c ffff Fr...p...q...q.. + 3bc0ac50: 7232 ffff 7246 ffff 710c ffff 710c ffff 2r..Fr...q...q.. + 3bc0ac60: 710c ffff 710c ffff 710c ffff 710c ffff .q...q...q...q.. + 3bc0ac70: 710c ffff 7206 ffff 3301 4920 623a 6c75 .q...r...3 I:bul + 3bc0ac80: 426b 6675 6c41 6f6c 3a63 2520 0a70 0000 kBufAlloc: %p... + 3bc0ac90: 3301 4920 633a 646d 7542 4166 6c6c 636f .3 I:cmdBufAlloc + 3bc0aca0: 203a 7025 000a 0000 3301 4920 633a 3062 : %p.....3 I:cb0 + 3bc0acb0: 625f 6675 203a 7025 000a 0000 0000 0000 _buf: %p........ + 3bc0acc0: 3301 4920 633a 3162 625f 6675 203a 7025 .3 I:cb1_buf: %p + 3bc0acd0: 000a 0000 0000 0000 3301 4920 633a 3262 .........3 I:cb2 + 3bc0ace0: 625f 6675 203a 7025 000a 0000 0000 0000 _buf: %p........ + 3bc0acf0: 3301 4920 653a 3070 7542 6666 6c41 6f6c .3 I:ep0BuffAllo + 3bc0ad00: 3a63 2520 0a70 0000 3301 4920 723a 7073 c: %p....3 I:rsp + 3bc0ad10: 625f 6675 203a 7025 000a 0000 0000 0000 _buf: %p........ + 3bc0ad20: 3301 4920 613a 6d63 625f 6675 203a 7025 .3 I:acm_buf: %p + 3bc0ad30: 000a 0000 0000 0000 3301 4920 733a 7465 .........3 I:set + 3bc0ad40: 7075 625f 6675 203a 7025 000a 0000 0000 up_buf: %p...... + 3bc0ad50: 3301 4920 683a 6e61 6c64 7265 203a 7025 .3 I:handler: %p + 3bc0ad60: 000a 0000 0000 0000 5643 5449 4b45 0000 ........CVITEK.. + 3bc0ad70: 5355 2042 6f43 206d 6f50 7472 0000 0000 USB Com Port.... + 3bc0ad80: 3301 4920 553a 4253 7620 7562 2073 7369 .3 I:USB vbus is + 3bc0ad90: 6f20 6666 000a 0000 3301 4920 743a 6d69 off.....3 I:tim + 3bc0ada0: 6f65 7475 695f 5f6e 736d 2520 0a64 0000 eout_in_ms %d... + 3bc0adb0: 3201 5355 4342 002e 3301 4920 553a 4253 .2USBC...3 I:USB + 3bc0adc0: 7020 6c6f 696c 676e 7420 6d69 6f65 7475 polling timeout + 3bc0add0: 695f 5f6e 736d 203a 6425 000a 0000 0000 _in_ms: %d...... + 3bc0ade0: 3301 4920 473a 6461 6567 2074 6552 6967 .3 I:Gadget Regi + 3bc0adf0: 7473 7265 4620 6961 0a6c 0000 0000 0000 ster Fail....... + 3bc0ae00: 3301 4920 473a 6461 6567 2074 626f 656a .3 I:Gadget obje + 3bc0ae10: 7463 6e20 746f 6520 6978 7473 6465 0a21 ct not existed!. + ... + 3bc0ae28: 3201 5355 4542 2e46 0000 0000 0000 0000 .2USBEF......... + 3bc0ae38: 3301 4920 633a 6e6f 656e 7463 6f69 206e .3 I:connection + 3bc0ae48: 7073 6565 3a64 2520 0a64 0000 0000 0000 speed: %d....... + 3bc0ae58: 3201 5355 5742 252f 2e64 0000 0000 0000 .2USBW/%d....... + 3bc0ae68: 3201 5355 4442 002e 3201 5355 4c42 002e .2USBD...2USBL.. + 3bc0ae78: 3001 4520 553a 4253 4520 7272 726f 2520 .0 E:USB Error % + 3bc0ae88: 0a75 0000 0000 0000 5454 0059 0000 0000 u.......TTY..... + +000000003bc0ae98 <__func__.0>: + 3bc0ae98: 6962 646e 0000 0000 bind.... + +000000003bc0aea0 <__func__.1>: + 3bc0aea0: 6e75 6962 646e 0000 unbind.. + +000000003bc0aea8 <__func__.4>: + 3bc0aea8: 6964 6373 6e6f 656e 7463 0000 0000 0000 disconnect...... + +000000003bc0aeb8 <__func__.5>: + 3bc0aeb8: 6572 6573 0074 0000 6177 6e72 6e69 2167 reset...warning! + 3bc0aec8: 6620 6572 2065 6e75 6966 696e 6873 6465 free unfinished + 3bc0aed8: 7220 7165 6575 7473 0a21 0000 0000 0000 request!....... + 3bc0aee8: 7325 203a 4820 4e41 2147 4120 4248 4920 %s: HANG! AHB I + 3bc0aef8: 6c64 2065 5247 4353 4c54 000a 0000 0000 dle GRSCTL...... + 3bc0af08: 7325 203a 6974 656d 756f 2074 6c66 7375 %s: timeout flus + 3bc0af18: 6968 676e 6620 6669 206f 4728 5352 4354 hing fifo (GRSTC + 3bc0af28: 4c54 253d 3830 2978 000a 0000 0000 0000 TL=%08x)........ + 3bc0af38: 7325 203a 6974 656d 756f 2074 6c66 7375 %s: timeout flus + 3bc0af48: 6968 676e 6620 6669 736f 2820 7267 7473 hing fifos (grst + 3bc0af58: 7463 206c 203d 7830 7825 0a29 0000 0000 ctl = 0x%x)..... + 3bc0af68: 7325 203a 6163 6c6c 6620 726f 6520 3070 %s: call for ep0 + 3bc0af78: 6f2d 7475 000a 0000 7325 203a 6974 656d -out....%s: time + 3bc0af88: 756f 2074 4944 5045 4e49 2e54 414e 454b out DIEPINT.NAKE + 3bc0af98: 4646 000a 0000 0000 7325 203a 6974 656d FF......%s: time + 3bc0afa8: 756f 2074 4947 544e 5453 2e53 4f47 5455 out GINTSTS.GOUT + 3bc0afb8: 414e 454b 4646 000a 7325 203a 6974 656d NAKEFF..%s: time + 3bc0afc8: 756f 2074 4f44 5045 5443 2e4c 5045 6944 out DOEPCTL.EPDi + 3bc0afd8: 6173 6c62 0a65 0000 7325 2928 4820 4e41 sable...%s() HAN + 3bc0afe8: 2147 5320 666f 2074 6552 6573 2074 5247 G! Soft Reset GR + 3bc0aff8: 5453 5443 3d4c 3025 0a78 0000 0000 0000 STCTL=%0x....... + 3bc0b008: 7325 2928 4820 4e41 2147 5320 666f 2074 %s() HANG! Soft + 3bc0b018: 2e34 2032 6552 6573 2074 5247 5453 5443 4.2 Reset GRSTCT + 3bc0b028: 3d4c 3025 0a78 0000 7325 2928 4820 4e41 L=%0x...%s() HAN + 3bc0b038: 2147 4120 4248 4920 6c64 2065 5247 5453 G! AHB Idle GRST + 3bc0b048: 5443 3d4c 3025 0a78 0000 0000 0000 0000 CTL=%0x......... + 3bc0b058: 6973 657a 6620 726f 6820 6e61 6c64 7265 size for handler + 3bc0b068: 6920 2073 6f74 206f 6173 6c6d 206c 2528 is too samll (% + 3bc0b078: 646c 202c 6425 0a29 0000 0000 0000 0000 ld, %d)......... + 3bc0b088: 6f4e 6d20 6d65 726f 2079 7661 6961 616c No memory availa + 3bc0b098: 6c62 2065 6f66 2072 4455 2143 000a 0000 ble for UDC!.... + +000000003bc0b0a8 <__func__.0>: + 3bc0b0a8: 7764 3263 655f 5f70 7473 706f 785f 6566 dwc2_ep_stop_xfe + 3bc0b0b8: 0072 0000 0000 0000 r....... + +000000003bc0b0c0 <__func__.1>: + 3bc0b0c0: 645f 6377 5f32 7065 645f 7369 6261 656c _dwc2_ep_disable + ... + +000000003bc0b0d8 <__func__.2>: + 3bc0b0d8: 7764 3263 725f 6365 6e6f 6966 5f67 7375 dwc2_reconfig_us + 3bc0b0e8: 6462 0000 0000 0000 bd...... + +000000003bc0b0f0 <__func__.3>: + 3bc0b0f0: 7764 3263 685f 6f73 6774 745f 6678 6669 dwc2_hsotg_txfif + 3bc0b100: 5f6f 6c66 7375 0068 o_flush. + +000000003bc0b108 <__func__.4>: + 3bc0b108: 7764 3263 685f 6f73 6774 695f 696e 5f74 dwc2_hsotg_init_ + 3bc0b118: 6966 6f66 0000 0000 fifo.... + +000000003bc0b120 : + 3bc0b120: 7764 3263 752d 6364 0000 0000 0000 0000 dwc2-udc........ + +000000003bc0b130 : + ... + 3bc0b138: 2ac2 3bc0 0000 0000 0000 0000 0000 0000 .*.;............ + ... + 3bc0b158: 27ac 3bc0 0000 0000 0000 0000 0000 0000 .'.;............ + ... + +000000003bc0b178 : + 3bc0b178: 7065 2d30 6f63 746e 6f72 006c 0000 0000 ep0-control..... + +000000003bc0b188 : + 3bc0b188: 7065 6931 2d6e 7562 6b6c 0000 0000 0000 ep1in-bulk...... + +000000003bc0b198 : + 3bc0b198: 7065 6f32 7475 622d 6c75 006b 0000 0000 ep2out-bulk..... + +000000003bc0b1a8 : + 3bc0b1a8: 7065 6933 2d6e 6e69 0074 0000 0000 0000 ep3in-int....... + 3bc0b1b8: 7263 2d71 623e 6572 7571 7365 3a74 7830 crq->brequest:0x + 3bc0b1c8: 7825 000a 8c86 ffff 8d62 ffff 8eb4 ffff %x......b....... + 3bc0b1d8: 8e06 ffff 8eb4 ffff 8c1a ffff 8c68 ffff ............h... + 3bc0b1e8: 8eb4 ffff 8c7c ffff 8c50 ffff 8eb4 ffff ....|...P....... + 3bc0b1f8: 8c72 ffff 0000 0000 7572 206e 6574 7473 r.......run test + 3bc0b208: 6d20 646f 2065 6425 000a 0000 0000 0000 mode %d........ + 3bc0b218: 3301 4920 553a 4253 4956 2f44 7825 0a2e .3 I:USBVID/%x.. + ... + +000000003bc0b230 : + 3bc0b230: 0000 1021 2042 3063 4084 50a5 60c6 70e7 ..!.B c0.@.P.`.p + 3bc0b240: 8108 9129 a14a b16b c18c d1ad e1ce f1ef ..).J.k......... + 3bc0b250: 1231 0210 3273 2252 52b5 4294 72f7 62d6 1...s2R".R.B.r.b + 3bc0b260: 9339 8318 b37b a35a d3bd c39c f3ff e3de 9...{.Z......... + 3bc0b270: 2462 3443 0420 1401 64e6 74c7 44a4 5485 b$C4 ....d.t.D.T + 3bc0b280: a56a b54b 8528 9509 e5ee f5cf c5ac d58d j.K.(........... + 3bc0b290: 3653 2672 1611 0630 76d7 66f6 5695 46b4 S6r&..0..v.f.V.F + 3bc0b2a0: b75b a77a 9719 8738 f7df e7fe d79d c7bc [.z...8......... + 3bc0b2b0: 48c4 58e5 6886 78a7 0840 1861 2802 3823 .H.X.h.x@.a..(#8 + 3bc0b2c0: c9cc d9ed e98e f9af 8948 9969 a90a b92b ........H.i...+. + 3bc0b2d0: 5af5 4ad4 7ab7 6a96 1a71 0a50 3a33 2a12 .Z.J.z.jq.P.3:.* + 3bc0b2e0: dbfd cbdc fbbf eb9e 9b79 8b58 bb3b ab1a ........y.X.;... + 3bc0b2f0: 6ca6 7c87 4ce4 5cc5 2c22 3c03 0c60 1c41 .l.|.L.\",.<`.A. + 3bc0b300: edae fd8f cdec ddcd ad2a bd0b 8d68 9d49 ........*...h.I. + 3bc0b310: 7e97 6eb6 5ed5 4ef4 3e13 2e32 1e51 0e70 .~.n.^.N.>2.Q.p. + 3bc0b320: ff9f efbe dfdd cffc bf1b af3a 9f59 8f78 ..........:.Y.x. + 3bc0b330: 9188 81a9 b1ca a1eb d10c c12d f14e e16f ..........-.N.o. + 3bc0b340: 1080 00a1 30c2 20e3 5004 4025 7046 6067 .....0. .P%@Fpg` + 3bc0b350: 83b9 9398 a3fb b3da c33d d31c e37f f35e ........=.....^. + 3bc0b360: 02b1 1290 22f3 32d2 4235 5214 6277 7256 .....".25B.RwbVr + 3bc0b370: b5ea a5cb 95a8 8589 f56e e54f d52c c50d ........n.O.,... + 3bc0b380: 34e2 24c3 14a0 0481 7466 6447 5424 4405 .4.$....ftGd$T.D + 3bc0b390: a7db b7fa 8799 97b8 e75f f77e c71d d73c ........_.~...<. + 3bc0b3a0: 26d3 36f2 0691 16b0 6657 7676 4615 5634 .&.6....Wfvv.F4V + 3bc0b3b0: d94c c96d f90e e92f 99c8 89e9 b98a a9ab L.m.../......... + 3bc0b3c0: 5844 4865 7806 6827 18c0 08e1 3882 28a3 DXeH.x'h.....8.( + 3bc0b3d0: cb7d db5c eb3f fb1e 8bf9 9bd8 abbb bb9a }.\.?........... + 3bc0b3e0: 4a75 5a54 6a37 7a16 0af1 1ad0 2ab3 3a92 uJTZ7j.z.....*.: + 3bc0b3f0: fd2e ed0f dd6c cd4d bdaa ad8b 9de8 8dc9 ....l.M......... + 3bc0b400: 7c26 6c07 5c64 4c45 3ca2 2c83 1ce0 0cc1 &|.ld\EL.<.,.... + 3bc0b410: ef1f ff3e cf5d df7c af9b bfba 8fd9 9ff8 ..>.].|......... + 3bc0b420: 6e17 7e36 4e55 5e74 2e93 3eb2 0ed1 1ef0 .n6~UNt^...>.... + 3bc0b430: bf12 ffff bf46 ffff bfb4 ffff c030 ffff ....F.......0... + 3bc0b440: c056 ffff c0fc ffff c1ac ffff c20e ffff V............... + 3bc0b450: c342 ffff c436 ffff c43a ffff c46c ffff B...6...:...l... + 3bc0b460: c4dc ffff c4fc ffff c556 ffff 0000 0000 ........V....... + +000000003bc0b470 : + 3bc0b470: 0000 0001 0000 0000 0000 0004 0000 0000 ................ + 3bc0b480: 0000 0010 0000 0000 0000 0040 0000 0000 ..........@..... + +000000003bc0b490 : + ... + 3bc0b49c: ffff ffff fffc ffff 0001 0000 0002 0000 ................ + 3bc0b4ac: 0003 0000 .... + +000000003bc0b4b0 : + 3bc0b4b0: 0000 0000 0001 0000 0002 0000 0001 0000 ................ + 3bc0b4c0: 0000 0000 0004 0000 0004 0000 0004 0000 ................ + 3bc0b4d0: c874 ffff c854 ffff c834 ffff c5f0 ffff t...T...4....... + 3bc0b4e0: c692 ffff c744 ffff c806 ffff c5c2 ffff ....D........... + 3bc0b4f0: c664 ffff c716 ffff c7d8 ffff c594 ffff d............... + 3bc0b500: c636 ffff c6e8 ffff c7aa ffff 0000 0000 6............... + 3bc0b510: 3201 4444 2052 6e69 7469 0a2e 0000 0000 .2DDR init...... + 3bc0b520: 3201 6464 5f72 6170 6172 5b6d 5d30 303d .2ddr_param[0]=0 + 3bc0b530: 2578 2e78 000a 0000 3201 6b70 5f67 7974 x%x......2pkg_ty + 3bc0b540: 6570 253d 0a78 0000 3201 6e32 0a64 0000 pe=%x....22nd... + 3bc0b550: 3201 6e75 6e6b 776f 206e 6b70 5f67 7974 .2unknown pkg_ty + 3bc0b560: 6570 303d 2578 0a78 0000 0000 0000 0000 pe=0x%x......... + 3bc0b570: 3201 2544 5f78 7825 255f 0a78 0000 0000 .2D%x_%x_%x..... + 3bc0b580: 3201 4444 3252 0000 3201 4444 3352 0000 .2DDR2...2DDR3.. + 3bc0b590: 3201 6e75 6e6b 776f 206e 6576 646e 726f .2unknown vendor + 3bc0b5a0: 253d 0064 0000 0000 3201 352d 3231 004d =%d......2-512M. + 3bc0b5b0: 3201 312d 0047 0000 3201 322d 0047 0000 .2-1G....2-2G... + 3bc0b5c0: 3201 342d 0047 0000 3201 752d 6b6e 6f6e .2-4G....2-unkno + 3bc0b5d0: 6e77 6320 7061 6361 7469 3d79 6425 0000 wn capacity=%d.. + 3bc0b5e0: 3201 512d 4e46 3838 000a 0000 0000 0000 .2-QFN88........ + 3bc0b5f0: 3201 512d 4e46 3836 000a 0000 0000 0000 .2-QFN68........ + 3bc0b600: 3201 422d 4147 000a 3201 752d 6b6e 6f6e .2-BGA...2-unkno + 3bc0b610: 6e77 7020 676b 253d 0064 0000 cc32 ffff wn pkg=%d...2... + 3bc0b620: ccb8 ffff cc10 ffff cc22 ffff cc32 ffff ........"...2... + 3bc0b630: ccb8 ffff cc9a ffff ccaa ffff cce0 ffff ................ + 3bc0b640: cce0 ffff cce0 ffff cca6 ffff cce0 ffff ................ + 3bc0b650: cce0 ffff cce0 ffff cce0 ffff cca6 ffff ................ + 3bc0b660: cce0 ffff 0000 0000 3001 4520 453a 5252 .........0 E:ERR + 3bc0b670: 524f 6220 7369 5f74 6166 6c69 000a 0000 OR bist_fail.... + 3bc0b680: 3001 4520 623a 7369 5f74 6572 7573 746c .0 E:bist_result + 3bc0b690: 3d20 2520 2c78 6520 7272 645f 7461 5f61 = %x, err_data_ + 3bc0b6a0: 646f 2064 203d 6c25 2c78 6520 7272 645f odd = %lx, err_d + 3bc0b6b0: 7461 5f61 7665 6e65 3d20 2520 786c 000a ata_even = %lx.. + 3bc0b6c0: 3201 4444 2052 4942 5453 4620 4941 0a4c .2DDR BIST FAIL. + ... + 3bc0b6d8: 3201 4444 2052 4942 5453 5020 5341 0a53 .2DDR BIST PASS. + ... + 3bc0b6f0: fa02 401f fa02 801f 2c02 4010 2c02 8010 ...@.....,.@.,.. + 3bc0b700: 7a00 4000 7a00 8000 3a00 4000 3a00 8000 .z.@.z...:.@.:.. + 3bc0b710: e1ec ffff e250 ffff e2b0 ffff e31c ffff ....P........... + 3bc0b720: e3e0 ffff e380 ffff e316 ffff e316 ffff ................ + 3bc0b730: e4a2 ffff e440 ffff e7ac ffff e7ce ffff ....@........... + 3bc0b740: e7d8 ffff e7ea ffff e7fc ffff ............ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2.elf b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2.elf new file mode 100755 index 000000000..353ded334 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2.elf differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2.ld b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2.ld new file mode 100644 index 000000000..b7fbc239f --- /dev/null +++ b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2.ld @@ -0,0 +1,53 @@ +OUTPUT_FORMAT("elf64-littleriscv") +OUTPUT_ARCH(riscv) +ENTRY(bl2_entrypoint) +MEMORY { + RAM (rwx): ORIGIN = (0x3BC00000), LENGTH = (0x00019000) +} +SECTIONS +{ + . = (0x3BC00000); + ASSERT(. == ALIGN(4096), + "BL2_BASE address is not aligned on a page boundary.") + ro . : { + __RO_START__ = .; + *bl2_entrypoint.o(.text*) + *(.vectors) + *(.text*) + *(.rodata*) + __RO_END__ = .; + } >RAM + .data . : { + . = ALIGN(16); + __DATA_START__ = .; + *(.data*) + . = ALIGN(16); + __DATA_END__ = .; + } >RAM + stacks (NOLOAD) : { + . = ALIGN(64); + __STACKS_START__ = .; + . += 0x2000; + . = ALIGN(64); + __STACKS_END__ = .; + } >RAM + .bss : ALIGN(16) { + . = ALIGN(16); + __BSS_START__ = .; + *(SORT_BY_ALIGNMENT(.bss*)) + *(COMMON) + . = ALIGN(16); + __BSS_END__ = .; + } >RAM + __BL2_END__ = .; + __BSS_SIZE__ = SIZEOF(.bss); + ASSERT(. <= ((0x3BC00000) + (0x00019000)), "BL2 image has exceeded its limit.") +p_rom_api_cryptodma_aes_decrypt = 0x0000000004400100; +p_rom_api_flash_init = 0x0000000004400080; +p_rom_api_get_boot_src = 0x0000000004400020; +p_rom_api_get_number_of_retries = 0x00000000044000c0; +p_rom_api_image_crc = 0x00000000044000a0; +p_rom_api_load_image = 0x0000000004400060; +p_rom_api_set_boot_src = 0x0000000004400040; +p_rom_api_verify_rsa = 0x00000000044000e0; +} diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2.map b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2.map new file mode 100644 index 000000000..ef28b6528 --- /dev/null +++ b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2.map @@ -0,0 +1,3415 @@ + +Discarded input sections + + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .text.cpu_report_exception + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .text.enable_cache + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o + .text.memcpy16 + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o + .text.zeromem 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o + .debug_info 0x0000000000000000 0x1ac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o + .debug_abbrev 0x0000000000000000 0xdd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o + .debug_loc 0x0000000000000000 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o + .debug_aranges + 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o + .debug_ranges 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o + .debug_line 0x0000000000000000 0x102 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o + .debug_str 0x0000000000000000 0x3a69 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o + .debug_frame 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .text.inv_dcache_range + 0x0000000000000000 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .text.clean_dcache_range + 0x0000000000000000 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .text.enable_dcache + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .text.disable_dcache + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .text.timer_init + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x186b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .text.console_init + 0x0000000000000000 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .text.console_puts + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .text.console_getc + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .text.uart_tstc + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .text.console_tstc + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .rodata.tf_print_buffer.str1.8 + 0x0000000000000000 0x2d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .text.tf_print_buffer + 0x0000000000000000 0x96 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .text.config_core_power + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .text.apply_analog_trimming_data + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .text.bytes_reverse + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .rodata.__assert.str1.8 + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .text.__assert + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .debug_info 0x0000000000000000 0x153 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .debug_abbrev 0x0000000000000000 0xa4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .debug_loc 0x0000000000000000 0x109 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x112 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .debug_line 0x0000000000000000 0x21b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .debug_str 0x0000000000000000 0x6fb3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .debug_frame 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .text.memcmp 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .text.memchr 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .text._memcpy 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o + .text.strchr 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o + .debug_info 0x0000000000000000 0xe4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o + .debug_abbrev 0x0000000000000000 0x7f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o + .debug_loc 0x0000000000000000 0x6f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o + .debug_line 0x0000000000000000 0x14e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o + .debug_str 0x0000000000000000 0x3a7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o + .text.strcasecmp + 0x0000000000000000 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o + .text.strncmp 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o + .debug_info 0x0000000000000000 0x105 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o + .debug_abbrev 0x0000000000000000 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o + .debug_loc 0x0000000000000000 0x15f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o + .debug_line 0x0000000000000000 0x13f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o + .debug_str 0x0000000000000000 0x3a39 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o + .text.strnlen 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o + .debug_info 0x0000000000000000 0x105 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o + .debug_abbrev 0x0000000000000000 0x9f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o + .debug_loc 0x0000000000000000 0xa3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o + .debug_line 0x0000000000000000 0x123 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o + .debug_str 0x0000000000000000 0x3a40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .text.is_usb_dl_enabled + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .rodata.print_sram_log.str1.8 + 0x0000000000000000 0x6d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .text.print_sram_log + 0x0000000000000000 0x86 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_ReadReg32 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_WriteReg32 + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedRead8 + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedRead16 + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedWrite8 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedWrite16 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_WritePhysAddress32 + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_BufferCopy + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_DelayNs + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.set_trigger_cnt + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dfu_usb_get_reset + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.otg_phy_init + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.otg_phy_off + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x517 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .text.crc16_pacing + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .text.crc16_ccitt_with_tag + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .text.LzmaDec_InitDicAndState + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .text.LzmaDec_DecodeToBuf + 0x0000000000000000 0xd6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .text.LzmaDec_Free + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .text.LzmaDec_Allocate + 0x0000000000000000 0xbc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_renormDictT + 0x0000000000000000 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4HC_rotatePattern + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4HC_setExternalDict + 0x0000000000000000 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4HC_reverseCountPattern + 0x0000000000000000 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4HC_countPattern + 0x0000000000000000 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4HC_init_internal + 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_extDict + 0x0000000000000000 0x2aa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4HC_compress_optimal + 0x0000000000000000 0x1d36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4HC_compress_generic_noDictCtx + 0x0000000000000000 0x1b68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4HC_compress_generic + 0x0000000000000000 0x211a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_makeBlock + 0x0000000000000000 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_versionNumber + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .rodata.LZ4_versionString.str1.8 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_versionString + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressBound + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofState + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast_extState_fastReset + 0x0000000000000000 0x1428 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_initStream + 0x0000000000000000 0x36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast_extState + 0x0000000000000000 0xd02 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_default + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_destSize + 0x0000000000000000 0x83c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_createStream + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_resetStream + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_resetStream_fast + 0x0000000000000000 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_freeStream + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_loadDict + 0x0000000000000000 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_attach_dictionary + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast_continue + 0x0000000000000000 0x1ca4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlock_continue + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_forceExtDict + 0x0000000000000000 0xa24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_saveDict + 0x0000000000000000 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe_partial + 0x0000000000000000 0x2a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast + 0x0000000000000000 0x1e6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_withPrefix64k + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_createStreamDecode + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_freeStreamDecode + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_setStreamDecode + 0x0000000000000000 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decoderRingBufferSize + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe_continue + 0x0000000000000000 0x3c6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_continue + 0x0000000000000000 0x316 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_usingDict + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput_withState + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_withState + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput_continue + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_continue + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_uncompress + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_uncompress_unknownOutputSize + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofStreamState + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_create + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_slideInputBuffer + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_createStreamHC + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_freeStreamHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_initStreamHC + 0x0000000000000000 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_setCompressionLevel + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_destSize + 0x0000000000000000 0x6a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamHC + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamHC_fast + 0x0000000000000000 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_extStateHC_fastReset + 0x0000000000000000 0x64 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_extStateHC + 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC + 0x0000000000000000 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_initStream + 0x0000000000000000 0x5a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlock + 0x0000000000000000 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_favorDecompressionSpeed + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_loadDictHC + 0x0000000000000000 0xd6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_continue_generic + 0x0000000000000000 0xf0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_attach_HC_dictionary + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_continue + 0x0000000000000000 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlockHC_continue + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlockHC + 0x0000000000000000 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_continue_destSize + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_saveDictHC + 0x0000000000000000 0x96 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_localSaveDict + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC + 0x0000000000000000 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2 + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_withStateHC + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput_withStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_withStateHC + 0x0000000000000000 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput_withStateHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_continue + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput_continue + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofStreamStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamStateHC + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_createHC + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_freeHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_continue + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput_continue + 0x0000000000000000 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_slideInputBufferHC + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .rodata.LZ4F_getErrorName.str1.8 + 0x0000000000000000 0x17 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_getErrorName + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_getErrorCode + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_getVersion + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressionLevel_max + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBound_internal + 0x0000000000000000 0x9c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressFrameBound + 0x0000000000000000 0x3e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_freeCDict + 0x0000000000000000 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_createCDict + 0x0000000000000000 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_createCompressionContext + 0x0000000000000000 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_freeCompressionContext + 0x0000000000000000 0x36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBegin_usingCDict + 0x0000000000000000 0x20c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBegin + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBound + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressUpdate + 0x0000000000000000 0x204 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_flush + 0x0000000000000000 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressEnd + 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressFrame_usingCDict + 0x0000000000000000 0x104 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressFrame + 0x0000000000000000 0x112 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_freeDecompressionContext + 0x0000000000000000 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_resetDecompressionContext + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_headerSize + 0x0000000000000000 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_getFrameInfo + 0x0000000000000000 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_decompress_usingDict + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .rodata.str1.8 + 0x0000000000000000 0x246 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .rodata.cst8 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .rodata.LZ4F_errorStrings + 0x0000000000000000 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .rodata.clTable.2 + 0x0000000000000000 0x9c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .text.XXH64_mergeRound + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .text.XXH64_avalanche + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .text.XXH_read64 + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .text.XXH64_finalize.constprop.0 + 0x0000000000000000 0x7be /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .rodata.XXH64_finalize.constprop.0 + 0x0000000000000000 0x7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .text.XXH_versionNumber + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .text.XXH32_createState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .text.XXH32_freeState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .text.XXH32_copyState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .text.XXH32_canonicalFromHash + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .text.XXH32_hashFromCanonical + 0x0000000000000000 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .text.XXH64 0x0000000000000000 0x234 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .text.XXH64_createState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .text.XXH64_freeState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .text.XXH64_copyState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .text.XXH64_reset + 0x0000000000000000 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .text.XXH64_update + 0x0000000000000000 0x1fa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .text.XXH64_digest + 0x0000000000000000 0x8a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .text.XXH64_canonicalFromHash + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .text.XXH64_hashFromCanonical + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .rodata.cst8 0x0000000000000000 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .text.get_ddr_capacity + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .text.get_pkg 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .text.get_ddr_type + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .rodata.dump_axi_mon_reg.str1.8 + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .text.dump_axi_mon_reg + 0x0000000000000000 0x6c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.ddr_debug_num_write + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_sub_resume2 + 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddrc_suspend + 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_cal_phyd_hw + 0x0000000000000000 0x10a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_cal_phya_enautok + 0x0000000000000000 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ctrlupd_short + 0x0000000000000000 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_wrlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_rdglvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_rdlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_wdqlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_cal_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_zqcal_status + 0x0000000000000000 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zqcal_isr8 + 0x0000000000000000 0x2d4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zqcal_hw_isr8 + 0x0000000000000000 0x15e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_training_status + 0x0000000000000000 0x134 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_set_dq_vref + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_phya_pd + 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_phyd_save + 0x0000000000000000 0xae6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.ddr_sys_suspend + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_phyd_restore + 0x0000000000000000 0xaf4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_sub_resume3 + 0x0000000000000000 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_sw_upd + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_set_dq_trig_lvl + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_freq_change_ltoh + 0x0000000000000000 0x276 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_0_phase40 + 0x0000000000000000 0x16e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_0_external + 0x0000000000000000 0x1ce /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_1_dq_set_highlow + 0x0000000000000000 0x1b4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_2_mux_demux + 0x0000000000000000 0x19c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_3_ca_set_highlow + 0x0000000000000000 0x1e4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_4_ca_clk_pat + 0x0000000000000000 0x132 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.ddr_sys_resume + 0x0000000000000000 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_rdlvl_sw_req + 0x0000000000000000 0x44c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_wdqlvl_sw_req + 0x0000000000000000 0x1ee /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_freq_change_htol + 0x0000000000000000 0x30a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_dfi_phyupd_req + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_sw_clr + 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_tx_shift_delay + 0x0000000000000000 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_rx_delay + 0x0000000000000000 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_rx_deskew_delay + 0x0000000000000000 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ca_shift_delay + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_cs_shift_delay + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_mask_shift_delay + 0x0000000000000000 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_reg_toggle + 0x0000000000000000 0x1514 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ana_test + 0x0000000000000000 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zq240 + 0x0000000000000000 0x1c4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zq240_ate + 0x0000000000000000 0x148 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zq240_cal + 0x0000000000000000 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .data.ddr_patch_regs + 0x0000000000000000 0x1c8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .data.ddr_patch_regs_count + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_info 0x0000000000000000 0x121 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_abbrev 0x0000000000000000 0xb5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_line 0x0000000000000000 0x160 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_str 0x0000000000000000 0x53f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_entrypoint.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_entrypoint.o + .bss 0x0000000000000000 0x1000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_entrypoint.o + .rodata 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_entrypoint.o + +Memory Configuration + +Name Origin Length Attributes +RAM 0x000000003bc00000 0x0000000000019000 xrw +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + 0x000000003bc00000 . = 0x3bc00000 + 0x0000000000000001 ASSERT ((. == ALIGN (0x1000)), BL2_BASE address is not aligned on a page boundary.) + +ro 0x000000003bc00000 0xb74c + 0x000000003bc00000 __RO_START__ = . + *bl2_entrypoint.o(.text*) + .text.init 0x000000003bc00000 0x14c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_entrypoint.o + 0x000000003bc00000 bl2_entrypoint + *(.vectors) + *(.text*) + .text.sync_cache + 0x000000003bc0014c 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + 0x000000003bc0014c sync_cache + .text.flush_dcache_range + 0x000000003bc00156 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + 0x000000003bc00156 flush_dcache_range + .text.trig_simulation_timer + 0x000000003bc0017a 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + 0x000000003bc0017a trig_simulation_timer + .text.udelay 0x000000003bc0018a 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + 0x000000003bc0018a udelay + .text.mdelay 0x000000003bc001b4 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + 0x000000003bc001b4 mdelay + .text.get_timer + 0x000000003bc001be 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + 0x000000003bc001be get_timer + .text.get_random_from_timer + 0x000000003bc001e2 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + 0x000000003bc001e2 get_random_from_timer + .text.read_count_tick + 0x000000003bc0020c 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + 0x000000003bc0020c read_count_tick + .text.jump_to_monitor + 0x000000003bc0021a 0x78 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + 0x000000003bc0021a jump_to_monitor + .text.jump_to_loader_2nd + 0x000000003bc00292 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + 0x000000003bc00292 jump_to_loader_2nd + .text._uart_putc + 0x000000003bc00294 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + 0x000000003bc00294 _uart_putc + .text.console_putc + 0x000000003bc002a4 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + 0x000000003bc002a4 console_putc + .text.console_flush + 0x000000003bc002c2 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + 0x000000003bc002c2 console_flush + .text.unsigned_num_print + 0x000000003bc002d6 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .text.tf_printf + 0x000000003bc00358 0x19a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + 0x000000003bc00358 tf_printf + .text.__system_reset + 0x000000003bc004f2 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + 0x000000003bc004f2 __system_reset + .text.panic_handler + 0x000000003bc005ba 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + 0x000000003bc005ba panic_handler + .text.reset_c906l + 0x000000003bc005ec 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + 0x000000003bc005ec reset_c906l + .text.setup_dl_flag + 0x000000003bc00636 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + 0x000000003bc00636 setup_dl_flag + .text.sys_switch_all_to_pll + 0x000000003bc00680 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + 0x000000003bc00680 sys_switch_all_to_pll + .text.sys_pll_nd + 0x000000003bc0068e 0x18e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + 0x000000003bc0068e sys_pll_nd + .text.sys_pll_init + 0x000000003bc0081c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + 0x000000003bc0081c sys_pll_init + .text.switch_rtc_mode_1st_stage + 0x000000003bc00832 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + 0x000000003bc00832 switch_rtc_mode_1st_stage + .text.switch_rtc_mode_2nd_stage + 0x000000003bc00834 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + 0x000000003bc00834 switch_rtc_mode_2nd_stage + .text.set_rtc_en_registers + 0x000000003bc00878 0xbc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + 0x000000003bc00878 set_rtc_en_registers + .text.init_comm_info + 0x000000003bc00934 0x6e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + 0x000000003bc00934 init_comm_info + .text.dec_verify_image + 0x000000003bc009a2 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + 0x000000003bc009a2 dec_verify_image + .text.ntostr 0x000000003bc009a6 0x7a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + 0x000000003bc009a6 ntostr + .text.memset 0x000000003bc00a20 0x5a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + 0x000000003bc00a20 memset + .text.memcpy 0x000000003bc00a7a 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + 0x000000003bc00a7a memcpy + .text.memmove 0x000000003bc00ada 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + 0x000000003bc00ada memmove + .text.putchar_l + 0x000000003bc00afa 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + 0x000000003bc00afa putchar_l + .text.strcmp 0x000000003bc00b4c 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o + 0x000000003bc00b4c strcmp + .text.strlen 0x000000003bc00b68 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o + 0x000000003bc00b68 strlen + .text.gpio_in_value + 0x000000003bc00b7a 0x7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + 0x000000003bc00b7a gpio_in_value + .text.usb_id_det + 0x000000003bc00bf6 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + 0x000000003bc00bf6 usb_id_det + .text.read_time_ms + 0x000000003bc00c14 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .text.load_image_by_usb + 0x000000003bc00c2e 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc00c2e load_image_by_usb + .text.load_param2 + 0x000000003bc00c6e 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc00c6e load_param2 + .text.load_ddr_param + 0x000000003bc00d3e 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc00d3e load_ddr_param + .text.load_ddr + 0x000000003bc00dec 0xc6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc00dec load_ddr + .text.load_blcp_2nd + 0x000000003bc00eb2 0x166 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc00eb2 load_blcp_2nd + .text.load_monitor + 0x000000003bc01018 0x126 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc01018 load_monitor + .text.load_loader_2nd + 0x000000003bc0113e 0x208 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc0113e load_loader_2nd + .text.load_rest + 0x000000003bc01346 0xe6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc01346 load_rest + .text.bl2_main + 0x000000003bc0142c 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc0142c bl2_main + .text.SzFree 0x000000003bc014c4 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .text.SzAlloc 0x000000003bc014c6 0x42 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .text.decompress_lzma + 0x000000003bc01508 0xe8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + 0x000000003bc01508 decompress_lzma + .text.LZ4_malloc + 0x000000003bc015f0 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + 0x000000003bc015f0 LZ4_malloc + .text.LZ4_calloc + 0x000000003bc015f6 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + 0x000000003bc015f6 LZ4_calloc + .text.LZ4_free + 0x000000003bc0161e 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + 0x000000003bc0161e LZ4_free + .text.decompress_lz4 + 0x000000003bc01620 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + 0x000000003bc01620 decompress_lz4 + .text.decompress + 0x000000003bc016ce 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + 0x000000003bc016ce decompress + .text.DWC2_UncachedRead32 + 0x000000003bc0174c 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + 0x000000003bc0174c DWC2_UncachedRead32 + .text.DWC2_UncachedWrite32 + 0x000000003bc01752 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + 0x000000003bc01752 DWC2_UncachedWrite32 + .text.resume 0x000000003bc01756 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .text.requestMemAlloc + 0x000000003bc01758 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .text.requestMemFree + 0x000000003bc01790 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .text.acm_complete_set_line_coding + 0x000000003bc01792 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .text.reset 0x000000003bc017ae 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .text.disconnect + 0x000000003bc017c2 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .text.unbind 0x000000003bc017f0 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .text.bind 0x000000003bc01816 0x42 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .text.get_unicode_string + 0x000000003bc01858 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .text.bulkOutCmpl + 0x000000003bc018aa 0x234 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .text.getDescAcm + 0x000000003bc01ade 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .text.reqComplete + 0x000000003bc01b3a 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .text.bulkInCmpl + 0x000000003bc01b64 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .text.setup 0x000000003bc01bb4 0x442 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .text.suspend 0x000000003bc01ff6 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .text.convert_buf_addr + 0x000000003bc01ff8 0xa2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc01ff8 convert_buf_addr + .text.print_buf_addr + 0x000000003bc0209a 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc0209a print_buf_addr + .text.AcmIsr 0x000000003bc0216a 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc0216a AcmIsr + .text.acm_app_init + 0x000000003bc02170 0x138 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc02170 acm_app_init + .text.usb_vbus_det + 0x000000003bc022a8 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc022a8 usb_vbus_det + .text.get_usb_polling_timeout_value + 0x000000003bc022b4 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc022b4 get_usb_polling_timeout_value + .text.AcmApp 0x000000003bc022e4 0x478 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc022e4 AcmApp + .text.dwc2_fifo_status + 0x000000003bc0275c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_free_request + 0x000000003bc02772 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.pullup 0x000000003bc027ac 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_alloc_request + 0x000000003bc027f4 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_ep_enable + 0x000000003bc0282c 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_fifo_flush + 0x000000003bc028cc 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_log_write + 0x000000003bc028ce 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc028ce dwc2_log_write + .text.dwc2_get_ep0_name + 0x000000003bc028d0 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc028d0 dwc2_get_ep0_name + .text.udc_reinit + 0x000000003bc028da 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc028da udc_reinit + .text.dwc2_done + 0x000000003bc02920 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02920 dwc2_done + .text.dwc2_dequeue + 0x000000003bc02960 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_nuke + 0x000000003bc029b4 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc029b4 dwc2_nuke + .text.usb_gadget_unregister_driver + 0x000000003bc029e2 0x9a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc029e2 usb_gadget_unregister_driver + .text.dwc2_hsotg_set_bit + 0x000000003bc02a7c 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02a7c dwc2_hsotg_set_bit + .text.dwc2_hsotg_clear_bit + 0x000000003bc02a9e 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02a9e dwc2_hsotg_clear_bit + .text.wakeup 0x000000003bc02ac2 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_hsotg_wait_bit_set + 0x000000003bc02afe 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02afe dwc2_hsotg_wait_bit_set + .text.dwc2_hsotg_txfifo_flush.constprop.0 + 0x000000003bc02b44 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.kill_all_requests.isra.0 + 0x000000003bc02bd4 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_disconnect + 0x000000003bc02c32 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02c32 dwc2_disconnect + .text.dwc2_hsotg_init_fifo.constprop.0 + 0x000000003bc02c88 0xda /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .text._dwc2_ep_disable.isra.0 + 0x000000003bc02d62 0x1a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_ep_disable + 0x000000003bc02f08 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_reconfig_usbd + 0x000000003bc02f28 0x28e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02f28 dwc2_reconfig_usbd + .text.usb_gadget_register_driver + 0x000000003bc031b6 0x156 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc031b6 usb_gadget_register_driver + .text.dwc2_phy_to_log_ep + 0x000000003bc0330c 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc0330c dwc2_phy_to_log_ep + .text.dwc2_udc_probe + 0x000000003bc0331e 0x150 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc0331e dwc2_udc_probe + .text.usb_gadget_handle_interrupts + 0x000000003bc0346e 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc0346e usb_gadget_handle_interrupts + .text.set_max_pktsize + 0x000000003bc034ba 0x8e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep_clear_stall + 0x000000003bc03548 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep_set_stall + 0x000000003bc035a6 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_ep0_complete_out + 0x000000003bc03608 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep0_zlp + 0x000000003bc03688 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep0_set_stall.isra.0 + 0x000000003bc03706 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.setdma_rx.isra.0 + 0x000000003bc0376e 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.complete_rx + 0x000000003bc03818 0xfc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_pre_setup + 0x000000003bc03914 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03914 dwc2_udc_pre_setup + .text.dwc2_ep_fifo_write + 0x000000003bc0392a 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc0392a dwc2_ep_fifo_write + .text.setdma_tx + 0x000000003bc0396e 0x15c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_ep_fifo_read + 0x000000003bc03aca 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03aca dwc2_ep_fifo_read + .text.dwc2_write_fifo_ep0 + 0x000000003bc03b0e 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03b0e dwc2_write_fifo_ep0 + .text.dwc2_set_address + 0x000000003bc03b5a 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03b5a dwc2_set_address + .text.dwc2_ep0_read + 0x000000003bc03ba2 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03ba2 dwc2_ep0_read + .text.dwc2_ep0_write + 0x000000003bc03bca 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03bca dwc2_ep0_write + .text.dwc2_udc_set_nak + 0x000000003bc03c0a 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03c0a dwc2_udc_set_nak + .text.dwc2_udc_set_halt + 0x000000003bc03c4a 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03c4a dwc2_udc_set_halt + .text.dwc2_udc_ep_activate + 0x000000003bc03cac 0xb2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03cac dwc2_udc_ep_activate + .text.dwc2_handle_ep0 + 0x000000003bc03d5e 0x346 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03d5e dwc2_handle_ep0 + .text.dwc2_udc_irq + 0x000000003bc040a4 0x540 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc040a4 dwc2_udc_irq + .text.dwc2_ep0_kick + 0x000000003bc045e4 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc045e4 dwc2_ep0_kick + .text.dwc2_queue + 0x000000003bc045fc 0xd8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc045fc dwc2_queue + .text.usb_polling + 0x000000003bc046d4 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + 0x000000003bc046d4 usb_polling + .text.crc16_ccitt + 0x000000003bc04714 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + 0x000000003bc04714 crc16_ccitt + .text.LzmaDec_WriteRem + 0x000000003bc04746 0x72 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .text.LzmaDec_DecodeReal2 + 0x000000003bc047b8 0x138a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .text.LzmaDec_TryDummy + 0x000000003bc05b42 0x4e8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .text.LzmaDec_Init + 0x000000003bc0602a 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + 0x000000003bc0602a LzmaDec_Init + .text.LzmaDec_DecodeToDic + 0x000000003bc0603e 0x27c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + 0x000000003bc0603e LzmaDec_DecodeToDic + .text.LzmaDec_FreeProbs + 0x000000003bc062ba 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + 0x000000003bc062ba LzmaDec_FreeProbs + .text.LzmaDec_AllocateProbs2.isra.0 + 0x000000003bc062d6 0x66 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .text.LzmaProps_Decode + 0x000000003bc0633c 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + 0x000000003bc0633c LzmaProps_Decode + .text.LzmaDec_AllocateProbs + 0x000000003bc06386 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + 0x000000003bc06386 LzmaDec_AllocateProbs + .text.LzmaDecode + 0x000000003bc063b6 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + 0x000000003bc063b6 LzmaDecode + .text.LZ4F_readLE32 + 0x000000003bc06460 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe_withSmallPrefix + 0x000000003bc06484 0x276 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_updateDict + 0x000000003bc066fa 0x110 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe + 0x000000003bc0680a 0x26e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + 0x000000003bc0680a LZ4_decompress_safe + .text.LZ4_decompress_safe_withPrefix64k + 0x000000003bc06a78 0x26a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + 0x000000003bc06a78 LZ4_decompress_safe_withPrefix64k + .text.LZ4_decompress_safe_forceExtDict + 0x000000003bc06ce2 0x316 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + 0x000000003bc06ce2 LZ4_decompress_safe_forceExtDict + .text.LZ4_decompress_safe_usingDict + 0x000000003bc06ff8 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + 0x000000003bc06ff8 LZ4_decompress_safe_usingDict + .text.LZ4F_isError + 0x000000003bc0701e 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + 0x000000003bc0701e LZ4F_isError + .text.LZ4F_getBlockSize + 0x000000003bc0702a 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + 0x000000003bc0702a LZ4F_getBlockSize + .text.LZ4F_decodeHeader + 0x000000003bc07048 0x1a4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_createDecompressionContext + 0x000000003bc071ec 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + 0x000000003bc071ec LZ4F_createDecompressionContext + .text.LZ4F_decompress + 0x000000003bc0721c 0x7dc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + 0x000000003bc0721c LZ4F_decompress + .text.XXH32_avalanche + 0x000000003bc079f8 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .text.XXH_read32 + 0x000000003bc07a24 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .text.XXH32_finalize.constprop.0 + 0x000000003bc07a3a 0x33a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .text.XXH32 0x000000003bc07d74 0x1c6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + 0x000000003bc07d74 XXH32 + .text.XXH32_reset + 0x000000003bc07f3a 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + 0x000000003bc07f3a XXH32_reset + .text.XXH32_update + 0x000000003bc07f90 0x1d2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + 0x000000003bc07f90 XXH32_update + .text.XXH32_digest + 0x000000003bc08162 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + 0x000000003bc08162 XXH32_digest + .text.ddr_init + 0x000000003bc081a2 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + 0x000000003bc081a2 ddr_init + .text.read_ddr_pkg_info + 0x000000003bc081d6 0x22e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc081d6 read_ddr_pkg_info + .text.get_ddr_vendor + 0x000000003bc08404 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc08404 get_ddr_vendor + .text.axi_mon_start_all + 0x000000003bc0840e 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + 0x000000003bc0840e axi_mon_start_all + .text.ddr_sys_bring_up + 0x000000003bc0845e 0x224 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + 0x000000003bc0845e ddr_sys_bring_up + .text.cvx16_bist_wr_prbs_init + 0x000000003bc08682 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08682 cvx16_bist_wr_prbs_init + .text.cvx16_bist_wr_sram_init + 0x000000003bc086d0 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc086d0 cvx16_bist_wr_sram_init + .text.cvx16_bist_wrlvl_init + 0x000000003bc08730 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08730 cvx16_bist_wrlvl_init + .text.cvx16_bist_rdglvl_init + 0x000000003bc08776 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08776 cvx16_bist_rdglvl_init + .text.cvx16_bist_rdlvl_init + 0x000000003bc087bc 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc087bc cvx16_bist_rdlvl_init + .text.cvx16_bist_wdqlvl_init + 0x000000003bc088a6 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc088a6 cvx16_bist_wdqlvl_init + .text.cvx16_bist_wdmlvl_init + 0x000000003bc08956 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08956 cvx16_bist_wdmlvl_init + .text.cvx16_bist_start_check + 0x000000003bc089b6 0x6a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc089b6 cvx16_bist_start_check + .text.cvx16_rdvld_train + 0x000000003bc08a20 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08a20 cvx16_rdvld_train + .text.cvx16_synp_mrw + 0x000000003bc08ac6 0x74 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08ac6 cvx16_synp_mrw + .text.cvx16_dll_cal + 0x000000003bc08b3a 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08b3a cvx16_dll_cal + .text.cvx16_clk_normal + 0x000000003bc08ba2 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08ba2 cvx16_clk_normal + .text.cvx16_clk_div2 + 0x000000003bc08bfe 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08bfe cvx16_clk_div2 + .text.cvx16_clk_div40 + 0x000000003bc08c14 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08c14 cvx16_clk_div40 + .text.cvx16_chg_pll_freq + 0x000000003bc08c2a 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08c2a cvx16_chg_pll_freq + .text.cvx16_ddr_phy_power_on_seq1 + 0x000000003bc08d22 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08d22 cvx16_ddr_phy_power_on_seq1 + .text.cvx16_ddr_phy_power_on_seq2 + 0x000000003bc08d66 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08d66 cvx16_ddr_phy_power_on_seq2 + .text.cvx16_ddr_phy_power_on_seq3 + 0x000000003bc08dae 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08dae cvx16_ddr_phy_power_on_seq3 + .text.cvx16_wait_for_dfi_init_complete + 0x000000003bc08de8 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08de8 cvx16_wait_for_dfi_init_complete + .text.cvx16_polling_dfi_init_start + 0x000000003bc08e20 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08e20 cvx16_polling_dfi_init_start + .text.cvx16_set_dfi_init_complete + 0x000000003bc08e3a 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08e3a cvx16_set_dfi_init_complete + .text.cvx16_INT_ISR_08 + 0x000000003bc08e62 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08e62 cvx16_INT_ISR_08 + .text.cvx16_polling_synp_normal_mode + 0x000000003bc08e8e 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08e8e cvx16_polling_synp_normal_mode + .text.cvx16_dfi_ca_park_prbs + 0x000000003bc08eaa 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08eaa cvx16_dfi_ca_park_prbs + .text.cvx16_setting_check + 0x000000003bc08f12 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08f12 cvx16_setting_check + .text.cvx16_set_dfi_init_start + 0x000000003bc08f32 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08f32 cvx16_set_dfi_init_start + .text.cvx16_pll_init + 0x000000003bc08f58 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08f58 cvx16_pll_init + .text.cvx16_clk_gating_disable + 0x000000003bc08ffe 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08ffe cvx16_clk_gating_disable + .text.cvx16_clk_gating_enable + 0x000000003bc09048 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc09048 cvx16_clk_gating_enable + .text.cvx16_wrlvl_req + 0x000000003bc090b8 0x1d6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc090b8 cvx16_wrlvl_req + .text.cvx16_rdglvl_req + 0x000000003bc0928e 0x13e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc0928e cvx16_rdglvl_req + .text.cvx16_rdlvl_req + 0x000000003bc093cc 0x1ea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc093cc cvx16_rdlvl_req + .text.cvx16_wdqlvl_req + 0x000000003bc095b6 0x182 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc095b6 cvx16_wdqlvl_req + .text.cvx16_en_rec_vol_mode + 0x000000003bc09738 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc09738 cvx16_en_rec_vol_mode + .text.ctrl_init_detect_dram_size + 0x000000003bc0973a 0x11a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc0973a ctrl_init_detect_dram_size + .text.pll_init + 0x000000003bc09854 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + 0x000000003bc09854 pll_init + .text.cvx16_pinmux + 0x000000003bc098d8 0x33a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + 0x000000003bc098d8 cvx16_pinmux + .text.cvx16_dram_cap_check + 0x000000003bc09c12 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + 0x000000003bc09c12 cvx16_dram_cap_check + .text.ddrc_init + 0x000000003bc09c14 0x224 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + 0x000000003bc09c14 ddrc_init + .text.ctrl_init_high_patch + 0x000000003bc09e38 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + 0x000000003bc09e38 ctrl_init_high_patch + .text.ctrl_init_low_patch + 0x000000003bc09e66 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + 0x000000003bc09e66 ctrl_init_low_patch + .text.ctrl_init_update_by_dram_size + 0x000000003bc09e94 0xb2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + 0x000000003bc09e94 ctrl_init_update_by_dram_size + .text.phy_init + 0x000000003bc09f46 0x3b6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + 0x000000003bc09f46 phy_init + *(.rodata*) + *fill* 0x000000003bc0a2fc 0x4 + .rodata.build_message + 0x000000003bc0a300 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o + 0x000000003bc0a300 build_message + *fill* 0x000000003bc0a31a 0x6 + .rodata.version_string + 0x000000003bc0a320 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o + 0x000000003bc0a320 version_string + .rodata.jump_to_monitor.str1.8 + 0x000000003bc0a330 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + *fill* 0x000000003bc0a356 0x2 + .rodata.tf_printf.str1.8 + 0x000000003bc0a358 0x3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + *fill* 0x000000003bc0a35b 0x1 + .rodata.tf_printf + 0x000000003bc0a35c 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .rodata.__system_reset.str1.8 + 0x000000003bc0a3b8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + *fill* 0x000000003bc0a3ca 0x6 + .rodata.panic_handler.str1.8 + 0x000000003bc0a3d0 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + *fill* 0x000000003bc0a3e6 0x2 + .rodata.reset_c906l.str1.8 + 0x000000003bc0a3e8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .rodata.sys_pll_nd.str1.8 + 0x000000003bc0a3f0 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + *fill* 0x000000003bc0a3f9 0x7 + .rodata.sys_pll_init.str1.8 + 0x000000003bc0a400 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + *fill* 0x000000003bc0a409 0x7 + .rodata.switch_rtc_mode_2nd_stage.str1.8 + 0x000000003bc0a410 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + *fill* 0x000000003bc0a424 0x4 + .rodata.set_rtc_en_registers.str1.8 + 0x000000003bc0a428 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + *fill* 0x000000003bc0a454 0x4 + .rodata.cst8 0x000000003bc0a458 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .rodata.hex2ascii_data + 0x000000003bc0a488 0x25 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + 0x000000003bc0a488 hex2ascii_data + *fill* 0x000000003bc0a4ad 0x3 + .rodata.cst8 0x000000003bc0a4b0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .rodata.load_image_by_usb.str1.8 + 0x000000003bc0a4b8 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a4d2 0x6 + .rodata.load_param2.str1.8 + 0x000000003bc0a4d8 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .rodata.load_ddr_param.str1.8 + 0x000000003bc0a530 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .rodata.load_ddr.str1.8 + 0x000000003bc0a578 0x4d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a5c5 0x3 + .rodata.load_blcp_2nd.str1.8 + 0x000000003bc0a5c8 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .rodata.load_monitor.str1.8 + 0x000000003bc0a6a8 0xcf /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a777 0x1 + .rodata.load_loader_2nd.str1.8 + 0x000000003bc0a778 0xce /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a846 0x2 + .rodata.load_rest.str1.8 + 0x000000003bc0a848 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .rodata.bl2_main.str1.8 + 0x000000003bc0a8a8 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a92c 0x4 + .rodata.cst8 0x000000003bc0a930 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .rodata.SzAlloc.str1.8 + 0x000000003bc0a938 0x1f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a957 0x1 + .rodata.decompress_lzma.str1.8 + 0x000000003bc0a958 0x92 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a9ea 0x6 + .rodata.decompress_lz4.str1.8 + 0x000000003bc0a9f0 0x72 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + *fill* 0x000000003bc0aa62 0x6 + .rodata.decompress.str1.8 + 0x000000003bc0aa68 0x31 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + *fill* 0x000000003bc0aa99 0x7 + .rodata.__func__.0 + 0x000000003bc0aaa0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .rodata.__func__.1 + 0x000000003bc0aaa8 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .rodata.reset.str1.8 + 0x000000003bc0aab8 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aace 0x2 + .rodata.unbind.str1.8 + 0x000000003bc0aad0 0xd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aadd 0x3 + .rodata.bind.str1.8 + 0x000000003bc0aae0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .rodata.bulkOutCmpl.str1.8 + 0x000000003bc0aae8 0x61 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab49 0x7 + .rodata.reqComplete.str1.8 + 0x000000003bc0ab50 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab65 0x3 + .rodata.setup.str1.8 + 0x000000003bc0ab68 0xd2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ac3a 0x2 + .rodata.setup 0x000000003bc0ac3c 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .rodata.print_buf_addr.str1.8 + 0x000000003bc0ac78 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ad62 0x6 + .rodata.acm_app_init.str1.8 + 0x000000003bc0ad68 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ad7d 0x3 + .rodata.AcmApp.str1.8 + 0x000000003bc0ad80 0x10b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ae8b 0x5 + .rodata.str1.8 + 0x000000003bc0ae90 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ae94 0x4 + .rodata.__func__.0 + 0x000000003bc0ae98 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ae9d 0x3 + .rodata.__func__.1 + 0x000000003bc0aea0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aea7 0x1 + .rodata.__func__.4 + 0x000000003bc0aea8 0xb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aeb3 0x5 + .rodata.__func__.5 + 0x000000003bc0aeb8 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aebe 0x2 + .rodata.dwc2_free_request.str1.8 + 0x000000003bc0aec0 0x23 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0aee3 0x5 + .rodata.dwc2_hsotg_txfifo_flush.constprop.0.str1.8 + 0x000000003bc0aee8 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0af32 0x6 + .rodata.dwc2_hsotg_init_fifo.constprop.0.str1.8 + 0x000000003bc0af38 0x2d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0af65 0x3 + .rodata._dwc2_ep_disable.isra.0.str1.8 + 0x000000003bc0af68 0x77 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0afdf 0x1 + .rodata.dwc2_reconfig_usbd.str1.8 + 0x000000003bc0afe0 0x71 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b051 0x7 + .rodata.dwc2_udc_probe.str1.8 + 0x000000003bc0b058 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b0a6 0x2 + .rodata.__func__.0 + 0x000000003bc0b0a8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b0ba 0x6 + .rodata.__func__.1 + 0x000000003bc0b0c0 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b0d1 0x7 + .rodata.__func__.2 + 0x000000003bc0b0d8 0x13 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b0eb 0x5 + .rodata.__func__.3 + 0x000000003bc0b0f0 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .rodata.__func__.4 + 0x000000003bc0b108 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b11d 0x3 + .rodata.driver_name + 0x000000003bc0b120 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b129 0x7 + .rodata.dwc2_udc_ops + 0x000000003bc0b130 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .rodata.ep0name + 0x000000003bc0b178 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b184 0x4 + .rodata.ep1name + 0x000000003bc0b188 0xb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b193 0x5 + .rodata.ep2name + 0x000000003bc0b198 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b1a4 0x4 + .rodata.ep3name + 0x000000003bc0b1a8 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b1b2 0x6 + .rodata.dwc2_handle_ep0.str1.8 + 0x000000003bc0b1b8 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .rodata.dwc2_handle_ep0 + 0x000000003bc0b1cc 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + *fill* 0x000000003bc0b1fc 0x4 + .rodata.dwc2_udc_irq.str1.8 + 0x000000003bc0b200 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + *fill* 0x000000003bc0b212 0x6 + .rodata.usb_polling.str1.8 + 0x000000003bc0b218 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + *fill* 0x000000003bc0b229 0x7 + .rodata.crc16_tab + 0x000000003bc0b230 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .rodata.LZ4F_decompress + 0x000000003bc0b430 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + *fill* 0x000000003bc0b46c 0x4 + .rodata.blockSizes.0 + 0x000000003bc0b470 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .rodata.dec64table + 0x000000003bc0b490 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .rodata.inc32table + 0x000000003bc0b4b0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .rodata.XXH32_finalize.constprop.0 + 0x000000003bc0b4d0 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + *fill* 0x000000003bc0b50c 0x4 + .rodata.ddr_init.str1.8 + 0x000000003bc0b510 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + *fill* 0x000000003bc0b536 0x2 + .rodata.read_ddr_pkg_info.str1.8 + 0x000000003bc0b538 0xe2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + *fill* 0x000000003bc0b61a 0x2 + .rodata.read_ddr_pkg_info + 0x000000003bc0b61c 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + *fill* 0x000000003bc0b664 0x4 + .rodata.ddr_sys_bring_up.str1.8 + 0x000000003bc0b668 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + 0x81 (size before relaxing) + .rodata.cst8 0x000000003bc0b6f0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .rodata.cvx16_pinmux + 0x000000003bc0b710 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .rodata.ctrl_init_update_by_dram_size + 0x000000003bc0b738 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + 0x000000003bc0b74c __RO_END__ = . + +.rela.dyn 0x000000003bc0b750 0x0 + .rela.text.setup_dl_flag + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o + .rela.text.load_param2 + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o + .rela.text.load_ddr_param + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o + .rela.text.load_ddr + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o + .rela.text.load_blcp_2nd + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o + .rela.text.load_monitor + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o + .rela.text.load_loader_2nd + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o + .rela.text.load_rest + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o + .rela.text.init + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o + +.data 0x000000003bc0b74c 0x2c4 + 0x000000003bc0b750 . = ALIGN (0x10) + *fill* 0x000000003bc0b74c 0x4 + 0x000000003bc0b750 __DATA_START__ = . + *(.data*) + .data.time_records + 0x000000003bc0b750 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc0b750 time_records + .data.ConfDesc + 0x000000003bc0b758 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b761 0x7 + .data.acm_buf 0x000000003bc0b768 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .data.acm_call_mgmt_descriptor + 0x000000003bc0b770 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b775 0x3 + .data.acm_control_interface_desc + 0x000000003bc0b778 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b781 0x7 + .data.acm_data_interface_desc + 0x000000003bc0b788 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b791 0x7 + .data.acm_descriptor + 0x000000003bc0b798 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b79c 0x4 + .data.acm_fs_in_desc + 0x000000003bc0b7a0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7a7 0x1 + .data.acm_fs_notify_desc + 0x000000003bc0b7a8 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7af 0x1 + .data.acm_fs_out_desc + 0x000000003bc0b7b0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7b7 0x1 + .data.acm_header_desc + 0x000000003bc0b7b8 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7bd 0x3 + .data.acm_hs_in_desc + 0x000000003bc0b7c0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7c7 0x1 + .data.acm_hs_notify_desc + 0x000000003bc0b7c8 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7cf 0x1 + .data.acm_hs_out_desc + 0x000000003bc0b7d0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7d7 0x1 + .data.acm_union_desc + 0x000000003bc0b7d8 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7dd 0x3 + .data.bosDesc 0x000000003bc0b7e0 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7e5 0x3 + .data.bulkBufAlloc + 0x000000003bc0b7e8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .data.capabilityExtDesc + 0x000000003bc0b7f0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7f7 0x1 + .data.cb0_buf 0x000000003bc0b7f8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .data.cb1_buf 0x000000003bc0b800 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .data.cb2_buf 0x000000003bc0b808 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .data.cmdBufAlloc + 0x000000003bc0b810 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .data.descriptorsFs + 0x000000003bc0b818 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .data.descriptorsHs + 0x000000003bc0b868 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .data.devHsDesc + 0x000000003bc0b8b8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b8ca 0x6 + .data.drv_obj 0x000000003bc0b8d0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .data.ep0BuffAlloc + 0x000000003bc0b920 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .data.g_driver + 0x000000003bc0b928 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .data.handler 0x000000003bc0b980 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .data.languageDesc + 0x000000003bc0b988 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b98c 0x4 + .data.qualifierDesc + 0x000000003bc0b990 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b99a 0x6 + .data.rsp_buf 0x000000003bc0b9a0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .data.setup_buf + 0x000000003bc0b9a8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .data.dwc2_ep_ops + 0x000000003bc0b9b0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .data.ep0_fifo_size + 0x000000003bc0ba00 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .data.ep_fifo_size + 0x000000003bc0ba04 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .data.cv_usb_vid + 0x000000003bc0ba08 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + 0x000000003bc0ba08 cv_usb_vid + *fill* 0x000000003bc0ba0a 0x2 + .data.ddr_data_rate + 0x000000003bc0ba0c 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + 0x000000003bc0ba0c ddr_data_rate + 0x000000003bc0ba10 . = ALIGN (0x10) + 0x000000003bc0ba10 __DATA_END__ = . + +stacks 0x000000003bc0ba10 0x2030 + 0x000000003bc0ba40 . = ALIGN (0x40) + *fill* 0x000000003bc0ba10 0x30 + 0x000000003bc0ba40 __STACKS_START__ = . + 0x000000003bc0da40 . = (. + 0x2000) + *fill* 0x000000003bc0ba40 0x2000 + 0x000000003bc0da40 . = ALIGN (0x40) + 0x000000003bc0da40 __STACKS_END__ = . + +.bss 0x000000003bc0dc00 0x5c10 + 0x000000003bc0dc00 . = ALIGN (0x10) + 0x000000003bc0dc00 __BSS_START__ = . + *(SORT_BY_ALIGNMENT(.bss*)) + .bss.fip_param2 + 0x000000003bc0dc00 0x1000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .bss.sram_union_buf + 0x000000003bc0ec00 0x4000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .bss.acm_bufArr + 0x000000003bc12c00 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc12c00 acm_bufArr + .bss.bulkBufAllocArr + 0x000000003bc12c80 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc12c80 bulkBufAllocArr + .bss.cb0_bufArr + 0x000000003bc12e80 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc12e80 cb0_bufArr + .bss.cb1_bufArr + 0x000000003bc12f00 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc12f00 cb1_bufArr + .bss.cb2_bufArr + 0x000000003bc12f80 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc12f80 cb2_bufArr + .bss.cmdBufAllocArr + 0x000000003bc13000 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc13000 cmdBufAllocArr + .bss.ep0BuffAllocArr + 0x000000003bc13200 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc13200 ep0BuffAllocArr + .bss.handlerArr + 0x000000003bc13280 0x400 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc13280 handlerArr + .bss.rsp_bufArr + 0x000000003bc13680 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc13680 rsp_bufArr + *fill* 0x000000003bc13690 0x30 + .bss.setup_bufArr + 0x000000003bc136c0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc136c0 setup_bufArr + .bss.fw_dynamic_info + 0x000000003bc136c8 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .bss.comp_alloc_buf + 0x000000003bc136f8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .bss.comp_alloc_size + 0x000000003bc13700 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .bss.acm 0x000000003bc13708 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc13708 acm + .bss.bulkBuf 0x000000003bc13710 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .bss.bulkInReq + 0x000000003bc13718 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .bss.bulkOutReq + 0x000000003bc13720 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .bss.cmdBuf 0x000000003bc13728 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .bss.ep0Buff 0x000000003bc13730 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .bss.ep0Req 0x000000003bc13738 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .bss.epIn 0x000000003bc13740 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .bss.epOut 0x000000003bc13748 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .bss.fip_buf 0x000000003bc13750 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .bss.productDesc + 0x000000003bc13758 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc13774 0x4 + .bss.serial.2 0x000000003bc13778 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .bss.serialDesc + 0x000000003bc13788 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc137a4 0x4 + .bss.vendorDesc + 0x000000003bc137a8 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .bss.reg 0x000000003bc137b8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc137b8 reg + .bss.the_controller + 0x000000003bc137c0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc137c0 the_controller + .bss.reg_set 0x000000003bc137c8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + 0x000000003bc137c8 reg_set + .bss.reg_span 0x000000003bc137d0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + 0x000000003bc137d0 reg_span + .bss.reg_step 0x000000003bc137d8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + 0x000000003bc137d8 reg_step + .bss.fip_tx_offset + 0x000000003bc137e0 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .bss.fip_tx_size + 0x000000003bc137e4 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .bss.transfer_size + 0x000000003bc137e8 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .bss.ts 0x000000003bc137ec 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .bss.rddata 0x000000003bc137f0 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc137f0 rddata + .bss.dev_freq 0x000000003bc137f4 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + 0x000000003bc137f4 dev_freq + .bss.freq_in 0x000000003bc137f8 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + 0x000000003bc137f8 freq_in + .bss.mod_freq 0x000000003bc137fc 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + 0x000000003bc137fc mod_freq + .bss.tar_freq 0x000000003bc13800 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + 0x000000003bc13800 tar_freq + .bss.ack_idx.6 + 0x000000003bc13804 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .bss.acm_configValue + 0x000000003bc13805 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc13805 acm_configValue + .bss.configBreak + 0x000000003bc13806 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .bss.configValue + 0x000000003bc13807 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .bss.flagEnterDL + 0x000000003bc13808 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .bss.flagReboot + 0x000000003bc13809 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .bss.is_serial_patched.3 + 0x000000003bc1380a 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .bss.mem_alloc_cnt + 0x000000003bc1380b 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .bss.ddr_capacity + 0x000000003bc1380c 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1380c ddr_capacity + .bss.ddr_type 0x000000003bc1380d 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1380d ddr_type + .bss.ddr_vendor + 0x000000003bc1380e 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1380e ddr_vendor + .bss.pkg 0x000000003bc1380f 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1380f pkg + *(COMMON) + 0x000000003bc13810 . = ALIGN (0x10) + 0x000000003bc13810 __BSS_END__ = . + 0x000000003bc13810 __BL2_END__ = . + 0x0000000000005c10 __BSS_SIZE__ = SIZEOF (.bss) + 0x0000000000000001 ASSERT ((. <= 0x3bc19000), BL2 image has exceeded its limit.) + 0x0000000004400100 p_rom_api_cryptodma_aes_decrypt = 0x4400100 + 0x0000000004400080 p_rom_api_flash_init = 0x4400080 + 0x0000000004400020 p_rom_api_get_boot_src = 0x4400020 + 0x00000000044000c0 p_rom_api_get_number_of_retries = 0x44000c0 + 0x00000000044000a0 p_rom_api_image_crc = 0x44000a0 + 0x0000000004400060 p_rom_api_load_image = 0x4400060 + 0x0000000004400040 p_rom_api_set_boot_src = 0x4400040 + 0x00000000044000e0 p_rom_api_verify_rsa = 0x44000e0 +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/assert.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_entrypoint.o +OUTPUT(/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2.elf elf64-littleriscv) + +.debug_info 0x0000000000000000 0x6993c + .debug_info 0x0000000000000000 0x89 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o + .debug_info 0x0000000000000089 0x1a1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .debug_info 0x000000000000022a 0x1e4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .debug_info 0x000000000000040e 0x45f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .debug_info 0x000000000000086d 0x3d6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .debug_info 0x0000000000000c43 0x33f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .debug_info 0x0000000000000f82 0x474 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_info 0x00000000000013f6 0x1a24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_info 0x0000000000002e1a 0x622 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .debug_info 0x000000000000343c 0x22a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .debug_info 0x0000000000003666 0x41f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .debug_info 0x0000000000003a85 0x2d6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .debug_info 0x0000000000003d5b 0x13d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o + .debug_info 0x0000000000003e98 0xf6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o + .debug_info 0x0000000000003f8e 0x483 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_info 0x0000000000004411 0x1c6e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_info 0x000000000000607f 0x9df /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_info 0x0000000000006a5e 0x3a2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .debug_info 0x0000000000006e00 0x2fa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_info 0x0000000000009da8 0x3221 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_info 0x000000000000cfc9 0x39b8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_info 0x0000000000010981 0x2b7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_info 0x0000000000010c38 0x279 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .debug_info 0x0000000000010eb1 0x17cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_info 0x000000000001267e 0x285e2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .debug_info 0x000000000003ac60 0x4039 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_info 0x000000000003ec99 0x1a7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .debug_info 0x000000000003ee40 0x516 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_info 0x000000000003f356 0x1135 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_info 0x000000000004048b 0x24b1d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .debug_info 0x0000000000064fa8 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .debug_info 0x0000000000065188 0x11b2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_info 0x000000000006633a 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_info 0x0000000000066402 0x1561 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .debug_info 0x0000000000067963 0x1fab /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .debug_info 0x000000000006990e 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_entrypoint.o + +.debug_abbrev 0x0000000000000000 0x4df7 + .debug_abbrev 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o + .debug_abbrev 0x0000000000000048 0xc1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .debug_abbrev 0x0000000000000109 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .debug_abbrev 0x00000000000001b9 0x1ae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .debug_abbrev 0x0000000000000367 0x197 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .debug_abbrev 0x00000000000004fe 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .debug_abbrev 0x0000000000000685 0x1e5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_abbrev 0x000000000000086a 0x371 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_abbrev 0x0000000000000bdb 0x134 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .debug_abbrev 0x0000000000000d0f 0x11a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .debug_abbrev 0x0000000000000e29 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .debug_abbrev 0x0000000000000f49 0x15d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .debug_abbrev 0x00000000000010a6 0xac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o + .debug_abbrev 0x0000000000001152 0x8c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o + .debug_abbrev 0x00000000000011de 0x202 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_abbrev 0x00000000000013e0 0x42f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_abbrev 0x000000000000180f 0x305 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_abbrev 0x0000000000001b14 0x181 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .debug_abbrev 0x0000000000001c95 0x6f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_abbrev 0x000000000000238b 0x657 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_abbrev 0x00000000000029e2 0x55c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_abbrev 0x0000000000002f3e 0x15a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_abbrev 0x0000000000003098 0x12f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .debug_abbrev 0x00000000000031c7 0x454 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_abbrev 0x000000000000361b 0x69b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .debug_abbrev 0x0000000000003cb6 0x4b9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_abbrev 0x000000000000416f 0xe9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .debug_abbrev 0x0000000000004258 0x17f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_abbrev 0x00000000000043d7 0x203 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_abbrev 0x00000000000045da 0x3e8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .debug_abbrev 0x00000000000049c2 0x9e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .debug_abbrev 0x0000000000004a60 0xd3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_abbrev 0x0000000000004b33 0x69 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_abbrev 0x0000000000004b9c 0x17d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .debug_abbrev 0x0000000000004d19 0xca /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .debug_abbrev 0x0000000000004de3 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_entrypoint.o + +.debug_aranges 0x0000000000000000 0x1e80 + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o + .debug_aranges + 0x0000000000000020 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .debug_aranges + 0x0000000000000070 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .debug_aranges + 0x00000000000000e0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .debug_aranges + 0x0000000000000170 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .debug_aranges + 0x00000000000001b0 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .debug_aranges + 0x0000000000000250 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_aranges + 0x00000000000002a0 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_aranges + 0x0000000000000380 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .debug_aranges + 0x00000000000003b0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .debug_aranges + 0x00000000000003f0 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .debug_aranges + 0x0000000000000470 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .debug_aranges + 0x00000000000004a0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o + .debug_aranges + 0x00000000000004e0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o + .debug_aranges + 0x0000000000000510 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_aranges + 0x0000000000000560 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_aranges + 0x0000000000000630 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_aranges + 0x00000000000006d0 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .debug_aranges + 0x0000000000000770 0x170 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_aranges + 0x00000000000008e0 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_aranges + 0x0000000000000ae0 0x190 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_aranges + 0x0000000000000c70 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_aranges + 0x0000000000000ca0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .debug_aranges + 0x0000000000000cf0 0x100 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_aranges + 0x0000000000000df0 0x7c0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .debug_aranges + 0x00000000000015b0 0x1b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_aranges + 0x0000000000001760 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .debug_aranges + 0x0000000000001790 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_aranges + 0x0000000000001800 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_aranges + 0x0000000000001850 0x4e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .debug_aranges + 0x0000000000001d30 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .debug_aranges + 0x0000000000001d60 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_aranges + 0x0000000000001d90 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_aranges + 0x0000000000001dc0 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .debug_aranges + 0x0000000000001e20 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .debug_aranges + 0x0000000000001e50 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_entrypoint.o + +.debug_macro 0x0000000000000000 0x9b13 + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o + .debug_macro 0x0000000000000011 0x86e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o + .debug_macro 0x000000000000087f 0x115 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000000994 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001208 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001477 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001488 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x000000000000160f 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001655 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x000000000000166b 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001693 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x00000000000016af 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x000000000000185e 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001923 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x00000000000019a5 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001bce 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001c8c 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001d86 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001f66 0x186b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x00000000000037d1 0x12c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .debug_macro 0x00000000000038fd 0x121 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000003a1e 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000003b4e 0x178 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000003cc6 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000003d92 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000003da8 0x146 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000003eee 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000003f94 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x000000000000404c 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x000000000000407a 0x14b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_macro 0x00000000000041c5 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_macro 0x000000000000443c 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_macro 0x00000000000044d0 0xe2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_macro 0x00000000000045b2 0x125 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .debug_macro 0x00000000000046d7 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .debug_macro 0x0000000000004754 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .debug_macro 0x000000000000479a 0x9b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000004835 0x11b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004950 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004966 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004982 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004a40 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000004a90 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o + .debug_macro 0x0000000000004ad6 0x1f9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000004ccf 0xa60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x000000000000572f 0x872 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000005fa1 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000005fe1 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000005ffd 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x000000000000601f 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000006125 0x192 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x00000000000062b7 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x00000000000062cd 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x00000000000062f5 0x13c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000006431 0x16b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_macro 0x000000000000659c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_macro 0x00000000000065b2 0x61 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000006613 0x9d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x00000000000066b0 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000006702 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006902 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006918 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006928 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000693e 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000697e 0x51d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006e9b 0x17a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000007015 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000703d 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000753a 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x00000000000075ce 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000007644 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000765a 0x207 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007861 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007877 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x00000000000078c3 0x517 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007dda 0x1cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000007fa7 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x00000000000080d7 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .debug_macro 0x0000000000008125 0x308 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x000000000000842d 0x2ef /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x000000000000871c 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000087c4 0x27 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000087eb 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x000000000000884d 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000088ca 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000088f6 0x1ac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000008aa2 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000008af4 0x11b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000008c0f 0xfb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008d0a 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008d26 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008ef9 0x1c4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x00000000000090bd 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000009163 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x00000000000095fc 0xd7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x00000000000096d3 0x110 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x00000000000097e3 0xac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x000000000000988f 0xa1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000009930 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x00000000000099c8 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000009a72 0xa1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + +.debug_line 0x0000000000000000 0x777fd + .debug_line 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o + .debug_line 0x0000000000000028 0x231 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .debug_line 0x0000000000000259 0x351 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .debug_line 0x00000000000005aa 0x4f5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .debug_line 0x0000000000000a9f 0x341 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .debug_line 0x0000000000000de0 0x559 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .debug_line 0x0000000000001339 0x812 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_line 0x0000000000001b4b 0x1538 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_line 0x0000000000003083 0x21d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .debug_line 0x00000000000032a0 0x2db /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .debug_line 0x000000000000357b 0x5f0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .debug_line 0x0000000000003b6b 0x2f7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .debug_line 0x0000000000003e62 0x1f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o + .debug_line 0x0000000000004058 0x117 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o + .debug_line 0x000000000000416f 0x589 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_line 0x00000000000046f8 0x14d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_line 0x0000000000005bd0 0x792 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_line 0x0000000000006362 0x282 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .debug_line 0x00000000000065e4 0x265c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_line 0x0000000000008c40 0x27a7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_line 0x000000000000b3e7 0x3667 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_line 0x000000000000ea4e 0x2d9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_line 0x000000000000ed27 0x2a4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .debug_line 0x000000000000efcb 0x4528 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_line 0x00000000000134f3 0x34953 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .debug_line 0x0000000000047e46 0x3d78 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_line 0x000000000004bbbe 0x260 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .debug_line 0x000000000004be1e 0x622 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_line 0x000000000004c440 0xcb5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_line 0x000000000004d0f5 0x27146 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .debug_line 0x000000000007423b 0x301 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .debug_line 0x000000000007453c 0xc73 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_line 0x00000000000751af 0x165 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_line 0x0000000000075314 0xebc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .debug_line 0x00000000000761d0 0x145c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + .debug_line 0x000000000007762c 0x1d1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_entrypoint.o + +.debug_str 0x0000000000000000 0x2399c + .debug_str 0x0000000000000000 0x2980 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o + 0x29a6 (size before relaxing) + .debug_str 0x0000000000002980 0x94c5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + 0xbeca (size before relaxing) + .debug_str 0x000000000000be45 0x217 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + 0x717f (size before relaxing) + .debug_str 0x000000000000c05c 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + 0xbf65 (size before relaxing) + .debug_str 0x000000000000c154 0x243 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + 0x7226 (size before relaxing) + .debug_str 0x000000000000c397 0x2ec /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + 0x67ea (size before relaxing) + .debug_str 0x000000000000c683 0x7f0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + 0x77a2 (size before relaxing) + .debug_str 0x000000000000ce73 0xf0b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + 0x7f63 (size before relaxing) + .debug_str 0x000000000000dd7e 0x30c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + 0x77ac (size before relaxing) + .debug_str 0x000000000000e08a 0x281 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + 0x4370 (size before relaxing) + .debug_str 0x000000000000e30b 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + 0x46c2 (size before relaxing) + .debug_str 0x000000000000e38b 0x4b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + 0x70b7 (size before relaxing) + .debug_str 0x000000000000e3d6 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o + 0x3c13 (size before relaxing) + .debug_str 0x000000000000e3fc 0x1b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o + 0x3a8b (size before relaxing) + .debug_str 0x000000000000e417 0x5ca5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + 0xd1d8 (size before relaxing) + .debug_str 0x00000000000140bc 0x443 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + 0x81fe (size before relaxing) + .debug_str 0x00000000000144ff 0xc1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + 0x8121 (size before relaxing) + .debug_str 0x0000000000015119 0x1cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + 0x437f (size before relaxing) + .debug_str 0x00000000000152e6 0x4ba0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + 0xca29 (size before relaxing) + .debug_str 0x0000000000019e86 0x6fa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + 0xba63 (size before relaxing) + .debug_str 0x000000000001a580 0x314 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0xb80f (size before relaxing) + .debug_str 0x000000000001a894 0x19 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + 0x75c8 (size before relaxing) + .debug_str 0x000000000001a8ad 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + 0x4115 (size before relaxing) + .debug_str 0x000000000001a8f3 0x12b6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + 0x9057 (size before relaxing) + .debug_str 0x000000000001bba9 0x3a87 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + 0x85bd (size before relaxing) + .debug_str 0x000000000001f630 0x7f5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + 0x7a74 (size before relaxing) + .debug_str 0x000000000001fe25 0x51 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + 0x7216 (size before relaxing) + .debug_str 0x000000000001fe76 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + 0x72c3 (size before relaxing) + .debug_str 0x000000000001fef3 0x2ed3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + 0x9efe (size before relaxing) + .debug_str 0x0000000000022dc6 0xa92 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + 0x87c3 (size before relaxing) + .debug_str 0x0000000000023858 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + 0x9876 (size before relaxing) + .debug_str 0x00000000000238a8 0x1f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + 0x5093 (size before relaxing) + .debug_str 0x00000000000238c7 0x27 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + 0x4e2c (size before relaxing) + .debug_str 0x00000000000238ee 0x4f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + 0x7579 (size before relaxing) + .debug_str 0x000000000002393d 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + 0x743b (size before relaxing) + .debug_str 0x0000000000023971 0x2b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_entrypoint.o + 0x65 (size before relaxing) + +.comment 0x0000000000000000 0x1d + .comment 0x0000000000000000 0x1d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o + 0x1e (size before relaxing) + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + +.note.GNU-stack + 0x0000000000000000 0x0 + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + +.debug_ranges 0x0000000000000000 0x301e0 + .debug_ranges 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .debug_ranges 0x0000000000000040 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .debug_ranges 0x00000000000000a0 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .debug_ranges 0x00000000000001c0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .debug_ranges 0x00000000000001f0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .debug_ranges 0x0000000000000280 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_ranges 0x0000000000000300 0x8d0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_ranges 0x0000000000000bd0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .debug_ranges 0x0000000000000bf0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .debug_ranges 0x0000000000000c20 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .debug_ranges 0x0000000000000d40 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .debug_ranges 0x0000000000000d60 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o + .debug_ranges 0x0000000000000d90 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o + .debug_ranges 0x0000000000000db0 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_ranges 0x0000000000000e90 0x100 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_ranges 0x0000000000000f90 0x160 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_ranges 0x00000000000010f0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .debug_ranges 0x0000000000001180 0x3d0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_ranges 0x0000000000001550 0x480 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_ranges 0x00000000000019d0 0x6b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_ranges 0x0000000000002080 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_ranges 0x00000000000020a0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .debug_ranges 0x00000000000020e0 0xbe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_ranges 0x0000000000002cc0 0x1cf40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .debug_ranges 0x000000000001fc00 0x27b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_ranges 0x00000000000223b0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .debug_ranges 0x00000000000223d0 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_ranges 0x00000000000224a0 0x190 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_ranges 0x0000000000022630 0xce70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .debug_ranges 0x000000000002f4a0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .debug_ranges 0x000000000002f4c0 0x210 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_ranges 0x000000000002f6d0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_ranges 0x000000000002f6f0 0x570 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .debug_ranges 0x000000000002fc60 0x580 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + +.debug_frame 0x0000000000000000 0x4810 + .debug_frame 0x0000000000000000 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o + .debug_frame 0x0000000000000058 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .debug_frame 0x00000000000000e0 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .debug_frame 0x0000000000000198 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .debug_frame 0x00000000000001f8 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .debug_frame 0x00000000000002f0 0xd8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_frame 0x00000000000003c8 0x1d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_frame 0x00000000000005a0 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .debug_frame 0x00000000000005c8 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .debug_frame 0x0000000000000608 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .debug_frame 0x00000000000006a8 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .debug_frame 0x00000000000006e0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o + .debug_frame 0x0000000000000720 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o + .debug_frame 0x0000000000000748 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_frame 0x00000000000007d0 0x258 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_frame 0x0000000000000a28 0x158 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_frame 0x0000000000000b80 0x118 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .debug_frame 0x0000000000000c98 0x3b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_frame 0x0000000000001048 0x5a8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_frame 0x00000000000015f0 0x520 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_frame 0x0000000000001b10 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_frame 0x0000000000001b50 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .debug_frame 0x0000000000001bb8 0x2d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_frame 0x0000000000001e90 0x1758 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .debug_frame 0x00000000000035e8 0x488 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_frame 0x0000000000003a70 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .debug_frame 0x0000000000003aa8 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_frame 0x0000000000003b60 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_frame 0x0000000000003be8 0xb08 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .debug_frame 0x00000000000046f0 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o + .debug_frame 0x0000000000004718 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_frame 0x0000000000004750 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_frame 0x0000000000004778 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .debug_frame 0x00000000000047e8 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o + +.debug_loc 0x0000000000000000 0xc2b4e + .debug_loc 0x0000000000000000 0x18c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o + .debug_loc 0x000000000000018c 0x28a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o + .debug_loc 0x0000000000000416 0x143 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o + .debug_loc 0x0000000000000559 0x24e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o + .debug_loc 0x00000000000007a7 0x8b7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o + .debug_loc 0x000000000000105e 0x1f54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o + .debug_loc 0x0000000000002fb2 0x39 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o + .debug_loc 0x0000000000002feb 0x450 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o + .debug_loc 0x000000000000343b 0xc56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o + .debug_loc 0x0000000000004091 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o + .debug_loc 0x000000000000414f 0x262 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o + .debug_loc 0x00000000000043b1 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o + .debug_loc 0x0000000000004433 0x38f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o + .debug_loc 0x00000000000047c2 0xe17 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o + .debug_loc 0x00000000000055d9 0x9d2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o + .debug_loc 0x0000000000005fab 0x156 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o + .debug_loc 0x0000000000006101 0x1f8b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o + .debug_loc 0x000000000000808c 0x28fb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_loc 0x000000000000a987 0x4255 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_loc 0x000000000000ebdc 0x11d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o + .debug_loc 0x000000000000ecf9 0x33f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o + .debug_loc 0x000000000000f038 0xa0cf /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/LzmaDec.o + .debug_loc 0x0000000000019107 0x5f2ef /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o + .debug_loc 0x00000000000783f6 0x8560 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o + .debug_loc 0x0000000000080956 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o + .debug_loc 0x00000000000809ee 0x22c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_loc 0x0000000000080c1a 0xdfe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_loc 0x0000000000081a18 0x3a3d4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o + .debug_loc 0x00000000000bbdec 0x1c14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_loc 0x00000000000bda00 0x2003 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o + .debug_loc 0x00000000000bfa03 0x314b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2.sym b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2.sym new file mode 100644 index 000000000..aa68b6c67 --- /dev/null +++ b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2.sym @@ -0,0 +1,402 @@ + 39: 000000003bc0ec00 16384 OBJECT LOCAL DEFAULT 4 sram_union_buf + 167: 000000003bc047b8 5002 FUNC LOCAL DEFAULT 1 LzmaDec_DecodeReal2 + 38: 000000003bc0dc00 4096 OBJECT LOCAL DEFAULT 4 fip_param2 + 280: 000000003bc0721c 2012 FUNC GLOBAL DEFAULT 1 LZ4F_decompress + 376: 000000003bc040a4 1344 FUNC GLOBAL DEFAULT 1 dwc2_udc_irq + 168: 000000003bc05b42 1256 FUNC LOCAL DEFAULT 1 LzmaDec_TryDummy + 284: 000000003bc022e4 1144 FUNC GLOBAL DEFAULT 1 AcmApp + 62: 000000003bc01bb4 1090 FUNC LOCAL DEFAULT 1 setup + 374: 000000003bc13280 1024 OBJECT GLOBAL DEFAULT 4 handlerArr + 396: 000000003bc09f46 950 FUNC GLOBAL DEFAULT 1 phy_init + 335: 000000003bc03d5e 838 FUNC GLOBAL DEFAULT 1 dwc2_handle_ep0 + 281: 000000003bc098d8 826 FUNC GLOBAL DEFAULT 1 cvx16_pinmux + 181: 000000003bc07a3a 826 FUNC LOCAL DEFAULT 1 XXH32_finalize.constprop. + 295: 000000003bc06ce2 790 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_force + 398: 000000003bc02f28 654 FUNC GLOBAL DEFAULT 1 dwc2_reconfig_usbd + 222: 000000003bc0603e 636 FUNC GLOBAL DEFAULT 1 LzmaDec_DecodeToDic + 172: 000000003bc06484 630 FUNC LOCAL DEFAULT 1 LZ4_decompress_safe_withS + 219: 000000003bc0680a 622 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe + 341: 000000003bc06a78 618 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_withP + 58: 000000003bc018aa 564 FUNC LOCAL DEFAULT 1 bulkOutCmpl + 321: 000000003bc081d6 558 FUNC GLOBAL DEFAULT 1 read_ddr_pkg_info + 380: 000000003bc0845e 548 FUNC GLOBAL DEFAULT 1 ddr_sys_bring_up + 340: 000000003bc09c14 548 FUNC GLOBAL DEFAULT 1 ddrc_init + 313: 000000003bc0113e 520 FUNC GLOBAL DEFAULT 1 load_loader_2nd + 377: 000000003bc13000 512 OBJECT GLOBAL DEFAULT 4 cmdBufAllocArr + 218: 000000003bc12c80 512 OBJECT GLOBAL DEFAULT 4 bulkBufAllocArr + 164: 000000003bc0b230 512 OBJECT LOCAL DEFAULT 1 crc16_tab + 238: 000000003bc093cc 490 FUNC GLOBAL DEFAULT 1 cvx16_rdlvl_req + 236: 000000003bc090b8 470 FUNC GLOBAL DEFAULT 1 cvx16_wrlvl_req + 332: 000000003bc07f90 466 FUNC GLOBAL DEFAULT 1 XXH32_update + 338: 000000003bc07d74 454 FUNC GLOBAL DEFAULT 1 XXH32 + 136: 000000003bc02d62 422 FUNC LOCAL DEFAULT 1 _dwc2_ep_disable.isra.0 + 174: 000000003bc07048 420 FUNC LOCAL DEFAULT 1 LZ4F_decodeHeader + 342: 000000003bc00358 410 FUNC GLOBAL DEFAULT 1 tf_printf + 276: 000000003bc0068e 398 FUNC GLOBAL DEFAULT 1 sys_pll_nd + 226: 000000003bc095b6 386 FUNC GLOBAL DEFAULT 1 cvx16_wdqlvl_req + 326: 000000003bc00eb2 358 FUNC GLOBAL DEFAULT 1 load_blcp_2nd + 159: 000000003bc0396e 348 FUNC LOCAL DEFAULT 1 setdma_tx + 269: 000000003bc031b6 342 FUNC GLOBAL DEFAULT 1 usb_gadget_register_drive + 315: 000000003bc0331e 336 FUNC GLOBAL DEFAULT 1 dwc2_udc_probe + 354: 000000003bc0928e 318 FUNC GLOBAL DEFAULT 1 cvx16_rdglvl_req + 283: 000000003bc02170 312 FUNC GLOBAL DEFAULT 1 acm_app_init + 249: 000000003bc01018 294 FUNC GLOBAL DEFAULT 1 load_monitor + 361: 000000003bc0973a 282 FUNC GLOBAL DEFAULT 1 ctrl_init_detect_dram_siz + 173: 000000003bc066fa 272 FUNC LOCAL DEFAULT 1 LZ4F_updateDict + 158: 000000003bc03818 252 FUNC LOCAL DEFAULT 1 complete_rx + 272: 000000003bc08c2a 248 FUNC GLOBAL DEFAULT 1 cvx16_chg_pll_freq + 308: 000000003bc087bc 234 FUNC GLOBAL DEFAULT 1 cvx16_bist_rdlvl_init + 302: 000000003bc01508 232 FUNC GLOBAL DEFAULT 1 decompress_lzma + 230: 000000003bc01346 230 FUNC GLOBAL DEFAULT 1 load_rest + 135: 000000003bc02c88 218 FUNC LOCAL DEFAULT 1 dwc2_hsotg_init_fifo.cons + 318: 000000003bc045fc 216 FUNC GLOBAL DEFAULT 1 dwc2_queue + 346: 000000003bc0209a 208 FUNC GLOBAL DEFAULT 1 print_buf_addr + 279: 000000003bc00c6e 208 FUNC GLOBAL DEFAULT 1 load_param2 + 228: 000000003bc004f2 200 FUNC GLOBAL DEFAULT 1 __system_reset + 392: 000000003bc00dec 198 FUNC GLOBAL DEFAULT 1 load_ddr + 278: 000000003bc00878 188 FUNC GLOBAL DEFAULT 1 set_rtc_en_registers + 334: 000000003bc09e94 178 FUNC GLOBAL DEFAULT 1 ctrl_init_update_by_dram_ + 204: 000000003bc03cac 178 FUNC GLOBAL DEFAULT 1 dwc2_udc_ep_activate + 240: 000000003bc088a6 176 FUNC GLOBAL DEFAULT 1 cvx16_bist_wdqlvl_init + 384: 000000003bc01620 174 FUNC GLOBAL DEFAULT 1 decompress_lz4 + 200: 000000003bc00d3e 174 FUNC GLOBAL DEFAULT 1 load_ddr_param + 367: 000000003bc063b6 170 FUNC GLOBAL DEFAULT 1 LzmaDecode + 157: 000000003bc0376e 170 FUNC LOCAL DEFAULT 1 setdma_rx.isra.0 + 339: 000000003bc08a20 166 FUNC GLOBAL DEFAULT 1 cvx16_rdvld_train + 298: 000000003bc08f58 166 FUNC GLOBAL DEFAULT 1 cvx16_pll_init + 296: 000000003bc01ff8 162 FUNC GLOBAL DEFAULT 1 convert_buf_addr + 129: 000000003bc0282c 160 FUNC LOCAL DEFAULT 1 dwc2_ep_enable + 343: 000000003bc029e2 154 FUNC GLOBAL DEFAULT 1 usb_gadget_unregister_dri + 299: 000000003bc0142c 152 FUNC GLOBAL DEFAULT 1 bl2_main + 133: 000000003bc02b44 144 FUNC LOCAL DEFAULT 1 dwc2_hsotg_txfifo_flush.c + 151: 000000003bc034ba 142 FUNC LOCAL DEFAULT 1 set_max_pktsize + 397: 000000003bc09854 132 FUNC GLOBAL DEFAULT 1 pll_init + 27: 000000003bc002d6 130 FUNC LOCAL DEFAULT 1 unsigned_num_print + 348: 000000003bc12f80 128 OBJECT GLOBAL DEFAULT 4 cb2_bufArr + 322: 000000003bc12c00 128 OBJECT GLOBAL DEFAULT 4 acm_bufArr + 290: 000000003bc13200 128 OBJECT GLOBAL DEFAULT 4 ep0BuffAllocArr + 275: 000000003bc12e80 128 OBJECT GLOBAL DEFAULT 4 cb0_bufArr + 235: 000000003bc12f00 128 OBJECT GLOBAL DEFAULT 4 cb1_bufArr + 154: 000000003bc03608 128 FUNC LOCAL DEFAULT 1 dwc2_ep0_complete_out + 264: 000000003bc016ce 126 FUNC GLOBAL DEFAULT 1 decompress + 155: 000000003bc03688 126 FUNC LOCAL DEFAULT 1 dwc2_udc_ep0_zlp + 259: 000000003bc00b7a 124 FUNC GLOBAL DEFAULT 1 gpio_in_value + 356: 000000003bc009a6 122 FUNC GLOBAL DEFAULT 1 ntostr + 211: 000000003bc0021a 120 FUNC GLOBAL DEFAULT 1 jump_to_monitor + 393: 000000003bc08ac6 116 FUNC GLOBAL DEFAULT 1 cvx16_synp_mrw + 166: 000000003bc04746 114 FUNC LOCAL DEFAULT 1 LzmaDec_WriteRem + 263: 000000003bc09048 112 FUNC GLOBAL DEFAULT 1 cvx16_clk_gating_enable + 316: 000000003bc00934 110 FUNC GLOBAL DEFAULT 1 init_comm_info + 257: 000000003bc089b6 106 FUNC GLOBAL DEFAULT 1 cvx16_bist_start_check + 375: 000000003bc08eaa 104 FUNC GLOBAL DEFAULT 1 cvx16_dfi_ca_park_prbs + 282: 000000003bc08b3a 104 FUNC GLOBAL DEFAULT 1 cvx16_dll_cal + 156: 000000003bc03706 104 FUNC LOCAL DEFAULT 1 dwc2_udc_ep0_set_stall.is + 169: 000000003bc062d6 102 FUNC LOCAL DEFAULT 1 LzmaDec_AllocateProbs2.is + 331: 000000003bc03c4a 98 FUNC GLOBAL DEFAULT 1 dwc2_udc_set_halt + 153: 000000003bc035a6 98 FUNC LOCAL DEFAULT 1 dwc2_udc_ep_set_stall + 304: 000000003bc08956 96 FUNC GLOBAL DEFAULT 1 cvx16_bist_wdmlvl_init + 265: 000000003bc086d0 96 FUNC GLOBAL DEFAULT 1 cvx16_bist_wr_sram_init + 239: 000000003bc00a7a 96 FUNC GLOBAL DEFAULT 1 memcpy + 152: 000000003bc03548 94 FUNC LOCAL DEFAULT 1 dwc2_udc_ep_clear_stall + 134: 000000003bc02bd4 94 FUNC LOCAL DEFAULT 1 kill_all_requests.isra.0 + 328: 000000003bc08ba2 92 FUNC GLOBAL DEFAULT 1 cvx16_clk_normal + 60: 000000003bc01ade 92 FUNC LOCAL DEFAULT 1 getDescAcm + 330: 000000003bc00a20 90 FUNC GLOBAL DEFAULT 1 memset + 114: 000000003bc0b928 88 OBJECT LOCAL DEFAULT 2 g_driver + 337: 000000003bc07f3a 86 FUNC GLOBAL DEFAULT 1 XXH32_reset + 314: 000000003bc02c32 86 FUNC GLOBAL DEFAULT 1 dwc2_disconnect + 131: 000000003bc02960 84 FUNC LOCAL DEFAULT 1 dwc2_dequeue + 205: 000000003bc00afa 82 FUNC GLOBAL DEFAULT 1 putchar_l + 57: 000000003bc01858 82 FUNC LOCAL DEFAULT 1 get_unicode_string + 194: 000000003bc0840e 80 FUNC GLOBAL DEFAULT 1 axi_mon_start_all + 138: 000000003bc0b9b0 80 OBJECT LOCAL DEFAULT 2 dwc2_ep_ops + 112: 000000003bc0b8d0 80 OBJECT LOCAL DEFAULT 2 drv_obj + 110: 000000003bc0b868 80 OBJECT LOCAL DEFAULT 2 descriptorsHs + 109: 000000003bc0b818 80 OBJECT LOCAL DEFAULT 2 descriptorsFs + 59: 000000003bc01b64 80 FUNC LOCAL DEFAULT 1 bulkInCmpl + 217: 000000003bc08682 78 FUNC GLOBAL DEFAULT 1 cvx16_bist_wr_prbs_init + 291: 000000003bc0346e 76 FUNC GLOBAL DEFAULT 1 usb_gadget_handle_interru + 234: 000000003bc03b0e 76 FUNC GLOBAL DEFAULT 1 dwc2_write_fifo_ep0 + 365: 000000003bc005ec 74 FUNC GLOBAL DEFAULT 1 reset_c906l + 364: 000000003bc00636 74 FUNC GLOBAL DEFAULT 1 setup_dl_flag + 324: 000000003bc0633c 74 FUNC GLOBAL DEFAULT 1 LzmaProps_Decode + 285: 000000003bc08ffe 74 FUNC GLOBAL DEFAULT 1 cvx16_clk_gating_disable + 293: 000000003bc08d66 72 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 215: 000000003bc03b5a 72 FUNC GLOBAL DEFAULT 1 dwc2_set_address + 145: 000000003bc0b130 72 OBJECT LOCAL DEFAULT 1 dwc2_udc_ops + 127: 000000003bc027ac 72 FUNC LOCAL DEFAULT 1 pullup + 394: 000000003bc028da 70 FUNC GLOBAL DEFAULT 1 udc_reinit + 237: 000000003bc02afe 70 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_wait_bit_set + 224: 000000003bc08730 70 FUNC GLOBAL DEFAULT 1 cvx16_bist_wrlvl_init + 223: 000000003bc08776 70 FUNC GLOBAL DEFAULT 1 cvx16_bist_rdglvl_init + 383: 000000003bc0392a 68 FUNC GLOBAL DEFAULT 1 dwc2_ep_fifo_write + 372: 000000003bc03aca 68 FUNC GLOBAL DEFAULT 1 dwc2_ep_fifo_read + 229: 000000003bc00834 68 FUNC GLOBAL DEFAULT 1 switch_rtc_mode_2nd_stage + 221: 000000003bc08d22 68 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 56: 000000003bc01816 66 FUNC LOCAL DEFAULT 1 bind + 42: 000000003bc014c6 66 FUNC LOCAL DEFAULT 1 SzAlloc + 381: 000000003bc08162 64 FUNC GLOBAL DEFAULT 1 XXH32_digest + 357: 000000003bc046d4 64 FUNC GLOBAL DEFAULT 1 usb_polling + 352: 000000003bc03c0a 64 FUNC GLOBAL DEFAULT 1 dwc2_udc_set_nak + 311: 000000003bc00c2e 64 FUNC GLOBAL DEFAULT 1 load_image_by_usb + 307: 000000003bc02920 64 FUNC GLOBAL DEFAULT 1 dwc2_done + 243: 000000003bc03bca 64 FUNC GLOBAL DEFAULT 1 dwc2_ep0_write + 132: 000000003bc02ac2 60 FUNC LOCAL DEFAULT 1 wakeup + 268: 000000003bc08dae 58 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 126: 000000003bc02772 58 FUNC LOCAL DEFAULT 1 dwc2_free_request + 233: 000000003bc08de8 56 FUNC GLOBAL DEFAULT 1 cvx16_wait_for_dfi_init_c + 128: 000000003bc027f4 56 FUNC LOCAL DEFAULT 1 dwc2_alloc_request + 50: 000000003bc01758 56 FUNC LOCAL DEFAULT 1 requestMemAlloc + 382: 000000003bc081a2 52 FUNC GLOBAL DEFAULT 1 ddr_init + 253: 000000003bc005ba 50 FUNC GLOBAL DEFAULT 1 panic_handler + 231: 000000003bc04714 50 FUNC GLOBAL DEFAULT 1 crc16_ccitt + 297: 000000003bc06386 48 FUNC GLOBAL DEFAULT 1 LzmaDec_AllocateProbs + 288: 000000003bc022b4 48 FUNC GLOBAL DEFAULT 1 get_usb_polling_timeout_v + 286: 000000003bc071ec 48 FUNC GLOBAL DEFAULT 1 LZ4F_createDecompressionC + 24: 000000003bc136c8 48 OBJECT LOCAL DEFAULT 4 fw_dynamic_info + 391: 000000003bc09e38 46 FUNC GLOBAL DEFAULT 1 ctrl_init_high_patch + 254: 000000003bc029b4 46 FUNC GLOBAL DEFAULT 1 dwc2_nuke + 247: 000000003bc09e66 46 FUNC GLOBAL DEFAULT 1 ctrl_init_low_patch + 54: 000000003bc017c2 46 FUNC LOCAL DEFAULT 1 disconnect + 294: 000000003bc08e62 44 FUNC GLOBAL DEFAULT 1 cvx16_INT_ISR_08 + 179: 000000003bc079f8 44 FUNC LOCAL DEFAULT 1 XXH32_avalanche + 305: 000000003bc0018a 42 FUNC GLOBAL DEFAULT 1 udelay + 255: 000000003bc001e2 42 FUNC GLOBAL DEFAULT 1 get_random_from_timer + 61: 000000003bc01b3a 42 FUNC LOCAL DEFAULT 1 reqComplete + 344: 000000003bc015f6 40 FUNC GLOBAL DEFAULT 1 LZ4_calloc + 289: 000000003bc03ba2 40 FUNC GLOBAL DEFAULT 1 dwc2_ep0_read + 232: 000000003bc08e3a 40 FUNC GLOBAL DEFAULT 1 cvx16_set_dfi_init_comple + 390: 000000003bc08f32 38 FUNC GLOBAL DEFAULT 1 cvx16_set_dfi_init_start + 359: 000000003bc06ff8 38 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_using + 55: 000000003bc017f0 38 FUNC LOCAL DEFAULT 1 unbind + 333: 000000003bc0a488 37 OBJECT GLOBAL DEFAULT 1 hex2ascii_data + 274: 000000003bc00156 36 FUNC GLOBAL DEFAULT 1 flush_dcache_range + 267: 000000003bc001be 36 FUNC GLOBAL DEFAULT 1 get_timer + 242: 000000003bc02a9e 36 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_clear_bit + 171: 000000003bc06460 36 FUNC LOCAL DEFAULT 1 LZ4F_readLE32 + 245: 000000003bc02a7c 34 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_set_bit + 325: 000000003bc08f12 32 FUNC GLOBAL DEFAULT 1 cvx16_setting_check + 216: 000000003bc00ada 32 FUNC GLOBAL DEFAULT 1 memmove + 177: 000000003bc0b4b0 32 OBJECT LOCAL DEFAULT 1 inc32table + 176: 000000003bc0b490 32 OBJECT LOCAL DEFAULT 1 dec64table + 175: 000000003bc0b470 32 OBJECT LOCAL DEFAULT 1 blockSizes.0 + 137: 000000003bc02f08 32 FUNC LOCAL DEFAULT 1 dwc2_ep_disable + 385: 000000003bc0702a 30 FUNC GLOBAL DEFAULT 1 LZ4F_getBlockSize + 368: 000000003bc00bf6 30 FUNC GLOBAL DEFAULT 1 usb_id_det + 270: 000000003bc002a4 30 FUNC GLOBAL DEFAULT 1 console_putc + 358: 000000003bc08e8e 28 FUNC GLOBAL DEFAULT 1 cvx16_polling_synp_normal + 336: 000000003bc00b4c 28 FUNC GLOBAL DEFAULT 1 strcmp + 301: 000000003bc062ba 28 FUNC GLOBAL DEFAULT 1 LzmaDec_FreeProbs + 84: 000000003bc13788 28 OBJECT LOCAL DEFAULT 4 serialDesc + 82: 000000003bc13758 28 OBJECT LOCAL DEFAULT 4 productDesc + 52: 000000003bc01792 28 FUNC LOCAL DEFAULT 1 acm_complete_set_line_cod + 306: 000000003bc08e20 26 FUNC GLOBAL DEFAULT 1 cvx16_polling_dfi_init_st + 225: 000000003bc0a300 26 OBJECT GLOBAL DEFAULT 1 build_message + 37: 000000003bc00c14 26 FUNC LOCAL DEFAULT 1 read_time_ms + 207: 000000003bc045e4 24 FUNC GLOBAL DEFAULT 1 dwc2_ep0_kick + 142: 000000003bc0b0f0 24 OBJECT LOCAL DEFAULT 1 __func__.3 + 395: 000000003bc08bfe 22 FUNC GLOBAL DEFAULT 1 cvx16_clk_div2 + 371: 000000003bc0081c 22 FUNC GLOBAL DEFAULT 1 sys_pll_init + 252: 000000003bc08c14 22 FUNC GLOBAL DEFAULT 1 cvx16_clk_div40 + 209: 000000003bc03914 22 FUNC GLOBAL DEFAULT 1 dwc2_udc_pre_setup + 180: 000000003bc07a24 22 FUNC LOCAL DEFAULT 1 XXH_read32 + 125: 000000003bc0275c 22 FUNC LOCAL DEFAULT 1 dwc2_fifo_status + 143: 000000003bc0b108 21 OBJECT LOCAL DEFAULT 1 __func__.4 + 345: 000000003bc002c2 20 FUNC GLOBAL DEFAULT 1 console_flush + 248: 000000003bc0602a 20 FUNC GLOBAL DEFAULT 1 LzmaDec_Init + 53: 000000003bc017ae 20 FUNC LOCAL DEFAULT 1 reset + 141: 000000003bc0b0d8 19 OBJECT LOCAL DEFAULT 1 __func__.2 + 378: 000000003bc00b68 18 FUNC GLOBAL DEFAULT 1 strlen + 355: 000000003bc0330c 18 FUNC GLOBAL DEFAULT 1 dwc2_phy_to_log_ep + 139: 000000003bc0b0a8 18 OBJECT LOCAL DEFAULT 1 __func__.0 + 111: 000000003bc0b8b8 18 OBJECT LOCAL DEFAULT 2 devHsDesc + 140: 000000003bc0b0c0 17 OBJECT LOCAL DEFAULT 1 __func__.1 + 303: 000000003bc0017a 16 FUNC GLOBAL DEFAULT 1 trig_simulation_timer + 273: 000000003bc00294 16 FUNC GLOBAL DEFAULT 1 _uart_putc + 212: 000000003bc13680 16 OBJECT GLOBAL DEFAULT 4 rsp_bufArr + 201: 000000003bc0a320 16 OBJECT GLOBAL DEFAULT 1 version_string + 87: 000000003bc137a8 16 OBJECT LOCAL DEFAULT 4 vendorDesc + 83: 000000003bc13778 16 OBJECT LOCAL DEFAULT 4 serial.2 + 46: 000000003bc0aaa8 16 OBJECT LOCAL DEFAULT 1 __func__.1 + 319: 000000003bc00680 14 FUNC GLOBAL DEFAULT 1 sys_switch_all_to_pll + 262: 000000003bc0020c 14 FUNC GLOBAL DEFAULT 1 read_count_tick + 350: 000000003bc0701e 12 FUNC GLOBAL DEFAULT 1 LZ4F_isError + 329: 000000003bc022a8 12 FUNC GLOBAL DEFAULT 1 usb_vbus_det + 148: 000000003bc0b198 12 OBJECT LOCAL DEFAULT 1 ep2name + 146: 000000003bc0b178 12 OBJECT LOCAL DEFAULT 1 ep0name + 147: 000000003bc0b188 11 OBJECT LOCAL DEFAULT 1 ep1name + 122: 000000003bc0aea8 11 OBJECT LOCAL DEFAULT 1 __func__.4 + 363: 000000003bc0014c 10 FUNC GLOBAL DEFAULT 1 sync_cache + 241: 000000003bc028d0 10 FUNC GLOBAL DEFAULT 1 dwc2_get_ep0_name + 193: 000000003bc001b4 10 FUNC GLOBAL DEFAULT 1 mdelay + 192: 000000003bc08404 10 FUNC GLOBAL DEFAULT 1 get_ddr_vendor + 149: 000000003bc0b1a8 10 OBJECT LOCAL DEFAULT 1 ep3name + 117: 000000003bc0b990 10 OBJECT LOCAL DEFAULT 2 qualifierDesc + 144: 000000003bc0b120 9 OBJECT LOCAL DEFAULT 1 driver_name + 92: 000000003bc0b788 9 OBJECT LOCAL DEFAULT 2 acm_data_interface_desc + 91: 000000003bc0b778 9 OBJECT LOCAL DEFAULT 2 acm_control_interface_des + 88: 000000003bc0b758 9 OBJECT LOCAL DEFAULT 2 ConfDesc + 389: 000000003bc137c0 8 OBJECT GLOBAL DEFAULT 4 the_controller + 387: 000000003bc13708 8 OBJECT GLOBAL DEFAULT 4 acm + 366: 000000003bc137c8 8 OBJECT GLOBAL DEFAULT 4 reg_set + 327: 000000003bc137d0 8 OBJECT GLOBAL DEFAULT 4 reg_span + 246: 000000003bc136c0 8 OBJECT GLOBAL DEFAULT 4 setup_bufArr + 214: 000000003bc137b8 8 OBJECT GLOBAL DEFAULT 4 reg + 213: 000000003bc137d8 8 OBJECT GLOBAL DEFAULT 4 reg_step + 197: 000000003bc0b750 8 OBJECT GLOBAL DEFAULT 2 time_records + 119: 000000003bc0b9a8 8 OBJECT LOCAL DEFAULT 2 setup_buf + 118: 000000003bc0b9a0 8 OBJECT LOCAL DEFAULT 2 rsp_buf + 115: 000000003bc0b980 8 OBJECT LOCAL DEFAULT 2 handler + 113: 000000003bc0b920 8 OBJECT LOCAL DEFAULT 2 ep0BuffAlloc + 108: 000000003bc0b810 8 OBJECT LOCAL DEFAULT 2 cmdBufAlloc + 107: 000000003bc0b808 8 OBJECT LOCAL DEFAULT 2 cb2_buf + 106: 000000003bc0b800 8 OBJECT LOCAL DEFAULT 2 cb1_buf + 105: 000000003bc0b7f8 8 OBJECT LOCAL DEFAULT 2 cb0_buf + 103: 000000003bc0b7e8 8 OBJECT LOCAL DEFAULT 2 bulkBufAlloc + 89: 000000003bc0b768 8 OBJECT LOCAL DEFAULT 2 acm_buf + 75: 000000003bc13750 8 OBJECT LOCAL DEFAULT 4 fip_buf + 74: 000000003bc13748 8 OBJECT LOCAL DEFAULT 4 epOut + 73: 000000003bc13740 8 OBJECT LOCAL DEFAULT 4 epIn + 72: 000000003bc13738 8 OBJECT LOCAL DEFAULT 4 ep0Req + 71: 000000003bc13730 8 OBJECT LOCAL DEFAULT 4 ep0Buff + 68: 000000003bc13728 8 OBJECT LOCAL DEFAULT 4 cmdBuf + 67: 000000003bc13720 8 OBJECT LOCAL DEFAULT 4 bulkOutReq + 66: 000000003bc13718 8 OBJECT LOCAL DEFAULT 4 bulkInReq + 65: 000000003bc13710 8 OBJECT LOCAL DEFAULT 4 bulkBuf + 45: 000000003bc0aaa0 8 OBJECT LOCAL DEFAULT 1 __func__.0 + 44: 000000003bc13700 8 OBJECT LOCAL DEFAULT 4 comp_alloc_size + 43: 000000003bc136f8 8 OBJECT LOCAL DEFAULT 4 comp_alloc_buf + 121: 000000003bc0aea0 7 OBJECT LOCAL DEFAULT 1 __func__.1 + 104: 000000003bc0b7f0 7 OBJECT LOCAL DEFAULT 2 capabilityExtDesc + 100: 000000003bc0b7d0 7 OBJECT LOCAL DEFAULT 2 acm_hs_out_desc + 99: 000000003bc0b7c8 7 OBJECT LOCAL DEFAULT 2 acm_hs_notify_desc + 98: 000000003bc0b7c0 7 OBJECT LOCAL DEFAULT 2 acm_hs_in_desc + 96: 000000003bc0b7b0 7 OBJECT LOCAL DEFAULT 2 acm_fs_out_desc + 95: 000000003bc0b7a8 7 OBJECT LOCAL DEFAULT 2 acm_fs_notify_desc + 94: 000000003bc0b7a0 7 OBJECT LOCAL DEFAULT 2 acm_fs_in_desc + 360: 000000003bc015f0 6 FUNC GLOBAL DEFAULT 1 LZ4_malloc + 287: 000000003bc0174c 6 FUNC GLOBAL DEFAULT 1 DWC2_UncachedRead32 + 195: 000000003bc0216a 6 FUNC GLOBAL DEFAULT 1 AcmIsr + 123: 000000003bc0aeb8 6 OBJECT LOCAL DEFAULT 1 __func__.5 + 120: 000000003bc0ae98 5 OBJECT LOCAL DEFAULT 1 __func__.0 + 102: 000000003bc0b7e0 5 OBJECT LOCAL DEFAULT 2 bosDesc + 101: 000000003bc0b7d8 5 OBJECT LOCAL DEFAULT 2 acm_union_desc + 97: 000000003bc0b7b8 5 OBJECT LOCAL DEFAULT 2 acm_header_desc + 90: 000000003bc0b770 5 OBJECT LOCAL DEFAULT 2 acm_call_mgmt_descriptor + 388: 000000003bc01752 4 FUNC GLOBAL DEFAULT 1 DWC2_UncachedWrite32 + 373: 000000003bc0ba0c 4 OBJECT GLOBAL DEFAULT 2 ddr_data_rate + 317: 000000003bc137f4 4 OBJECT GLOBAL DEFAULT 4 dev_freq + 271: 000000003bc137f0 4 OBJECT GLOBAL DEFAULT 4 rddata + 258: 000000003bc137fc 4 OBJECT GLOBAL DEFAULT 4 mod_freq + 203: 000000003bc009a2 4 FUNC GLOBAL DEFAULT 1 dec_verify_image + 199: 000000003bc137f8 4 OBJECT GLOBAL DEFAULT 4 freq_in + 196: 000000003bc13800 4 OBJECT GLOBAL DEFAULT 4 tar_freq + 161: 000000003bc0ba04 4 OBJECT LOCAL DEFAULT 2 ep_fifo_size + 160: 000000003bc0ba00 4 OBJECT LOCAL DEFAULT 2 ep0_fifo_size + 116: 000000003bc0b988 4 OBJECT LOCAL DEFAULT 2 languageDesc + 93: 000000003bc0b798 4 OBJECT LOCAL DEFAULT 2 acm_descriptor + 86: 000000003bc137ec 4 OBJECT LOCAL DEFAULT 4 ts + 85: 000000003bc137e8 4 OBJECT LOCAL DEFAULT 4 transfer_size + 77: 000000003bc137e4 4 OBJECT LOCAL DEFAULT 4 fip_tx_size + 76: 000000003bc137e0 4 OBJECT LOCAL DEFAULT 4 fip_tx_offset + 370: 000000003bc0ba08 2 OBJECT GLOBAL DEFAULT 2 cv_usb_vid + 277: 000000003bc00832 2 FUNC GLOBAL DEFAULT 1 switch_rtc_mode_1st_stage + 261: 000000003bc09738 2 FUNC GLOBAL DEFAULT 1 cvx16_en_rec_vol_mode + 256: 000000003bc09c12 2 FUNC GLOBAL DEFAULT 1 cvx16_dram_cap_check + 244: 000000003bc028ce 2 FUNC GLOBAL DEFAULT 1 dwc2_log_write + 210: 000000003bc00292 2 FUNC GLOBAL DEFAULT 1 jump_to_loader_2nd + 206: 000000003bc0161e 2 FUNC GLOBAL DEFAULT 1 LZ4_free + 130: 000000003bc028cc 2 FUNC LOCAL DEFAULT 1 dwc2_fifo_flush + 63: 000000003bc01ff6 2 FUNC LOCAL DEFAULT 1 suspend + 51: 000000003bc01790 2 FUNC LOCAL DEFAULT 1 requestMemFree + 49: 000000003bc01756 2 FUNC LOCAL DEFAULT 1 resume + 41: 000000003bc014c4 2 FUNC LOCAL DEFAULT 1 SzFree + 386: 000000003bc1380c 1 OBJECT GLOBAL DEFAULT 4 ddr_capacity + 379: 000000003bc1380d 1 OBJECT GLOBAL DEFAULT 4 ddr_type + 309: 000000003bc1380e 1 OBJECT GLOBAL DEFAULT 4 ddr_vendor + 250: 000000003bc1380f 1 OBJECT GLOBAL DEFAULT 4 pkg + 220: 000000003bc13805 1 OBJECT GLOBAL DEFAULT 4 acm_configValue + 81: 000000003bc1380b 1 OBJECT LOCAL DEFAULT 4 mem_alloc_cnt + 80: 000000003bc1380a 1 OBJECT LOCAL DEFAULT 4 is_serial_patched.3 + 79: 000000003bc13809 1 OBJECT LOCAL DEFAULT 4 flagReboot + 78: 000000003bc13808 1 OBJECT LOCAL DEFAULT 4 flagEnterDL + 70: 000000003bc13807 1 OBJECT LOCAL DEFAULT 4 configValue + 69: 000000003bc13806 1 OBJECT LOCAL DEFAULT 4 configBreak + 64: 000000003bc13804 1 OBJECT LOCAL DEFAULT 4 ack_idx.6 + 369: 000000003bc0ba40 0 NOTYPE GLOBAL DEFAULT 3 __STACKS_START__ + 362: 00000000044000c0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_get_number_of_r + 353: 000000003bc00000 0 NOTYPE GLOBAL DEFAULT 1 __RO_START__ + 351: 000000003bc0dc00 0 NOTYPE GLOBAL DEFAULT 4 __BSS_START__ + 349: 0000000004400060 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_load_image + 347: 000000003bc0b74c 0 NOTYPE GLOBAL DEFAULT 1 __RO_END__ + 323: 0000000004400040 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_set_boot_src + 320: 000000003bc13810 0 NOTYPE GLOBAL DEFAULT 4 __BSS_END__ + 312: 000000003bc00000 0 NOTYPE GLOBAL DEFAULT 1 bl2_entrypoint + 310: 00000000044000a0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_image_crc + 300: 000000003bc0ba10 0 NOTYPE GLOBAL DEFAULT 2 __DATA_END__ + 292: 000000003bc13810 0 NOTYPE GLOBAL DEFAULT 4 __BL2_END__ + 266: 0000000000005c10 0 NOTYPE GLOBAL DEFAULT ABS __BSS_SIZE__ + 260: 00000000044000e0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_verify_rsa + 251: 000000003bc0da40 0 NOTYPE GLOBAL DEFAULT 3 __STACKS_END__ + 227: 000000003bc0b750 0 NOTYPE GLOBAL DEFAULT 2 __DATA_START__ + 208: 0000000004400020 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_get_boot_src + 202: 0000000004400080 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_flash_init + 198: 0000000004400100 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_cryptodma_aes_d + 191: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 190: 0000000000000000 0 FILE LOCAL DEFAULT ABS phy_init.c + 189: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddrc_init.c + 188: 0000000000000000 0 FILE LOCAL DEFAULT ABS cvx16_dram_cap_check.c + 187: 0000000000000000 0 FILE LOCAL DEFAULT ABS cvx16_pinmux.c + 186: 0000000000000000 0 FILE LOCAL DEFAULT ABS phy_pll_init.c + 185: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_sys.c + 184: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_sys_bring_up.c + 183: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_pkg_info.c + 182: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr.c + 178: 0000000000000000 0 FILE LOCAL DEFAULT ABS xxhash.c + 170: 0000000000000000 0 FILE LOCAL DEFAULT ABS lz4_all.c + 165: 0000000000000000 0 FILE LOCAL DEFAULT ABS LzmaDec.c + 163: 0000000000000000 0 FILE LOCAL DEFAULT ABS crc16.c + 162: 0000000000000000 0 FILE LOCAL DEFAULT ABS cv_usb.c + 150: 0000000000000000 0 FILE LOCAL DEFAULT ABS dwc2_udc_otg_xfer_dma.c + 124: 0000000000000000 0 FILE LOCAL DEFAULT ABS dwc2_udc_otg.c + 48: 0000000000000000 0 FILE LOCAL DEFAULT ABS usb_tty.c + 47: 0000000000000000 0 FILE LOCAL DEFAULT ABS cps_cvi.c + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS decompress.c + 36: 0000000000000000 0 FILE LOCAL DEFAULT ABS bl2_main.c + 35: 0000000000000000 0 FILE LOCAL DEFAULT ABS platform_device.c + 34: 0000000000000000 0 FILE LOCAL DEFAULT ABS strlen.c + 33: 0000000000000000 0 FILE LOCAL DEFAULT ABS strcmp.c + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS putchar.c + 31: 0000000000000000 0 FILE LOCAL DEFAULT ABS mem.c + 30: 0000000000000000 0 FILE LOCAL DEFAULT ABS misc.c + 29: 0000000000000000 0 FILE LOCAL DEFAULT ABS security.c + 28: 0000000000000000 0 FILE LOCAL DEFAULT ABS platform.c + 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS tf_printf.c + 25: 0000000000000000 0 FILE LOCAL DEFAULT ABS uart_dw.c + 23: 0000000000000000 0 FILE LOCAL DEFAULT ABS bl2_helper.c + 22: 0000000000000000 0 FILE LOCAL DEFAULT ABS delay_timer.c + 21: 0000000000000000 0 FILE LOCAL DEFAULT ABS cache.c + 20: 0000000000000000 0 FILE LOCAL DEFAULT ABS cpu_helper.c + 19: 000000003bc00144 0 NOTYPE LOCAL DEFAULT 1 die + 18: 000000003bc0012c 0 NOTYPE LOCAL DEFAULT 1 bss_clear + 17: 000000003bc00144 0 NOTYPE LOCAL DEFAULT 1 trap_vector + 16: 000000003bc00020 0 NOTYPE LOCAL DEFAULT 1 bl2_entrypoint_real + 15: 0000000000000000 0 FILE LOCAL DEFAULT ABS /root/.jenkins/workspace/ + 14: 0000000000000000 0 SECTION LOCAL DEFAULT 14 + 13: 0000000000000000 0 SECTION LOCAL DEFAULT 13 + 12: 0000000000000000 0 SECTION LOCAL DEFAULT 12 + 11: 0000000000000000 0 SECTION LOCAL DEFAULT 11 + 10: 0000000000000000 0 SECTION LOCAL DEFAULT 10 + 9: 0000000000000000 0 SECTION LOCAL DEFAULT 9 + 8: 0000000000000000 0 SECTION LOCAL DEFAULT 8 + 7: 0000000000000000 0 SECTION LOCAL DEFAULT 7 + 6: 0000000000000000 0 SECTION LOCAL DEFAULT 6 + 5: 0000000000000000 0 SECTION LOCAL DEFAULT 5 + 4: 000000003bc0dc00 0 SECTION LOCAL DEFAULT 4 + 3: 000000003bc0ba10 0 SECTION LOCAL DEFAULT 3 + 2: 000000003bc0b74c 0 SECTION LOCAL DEFAULT 2 + 1: 000000003bc00000 0 SECTION LOCAL DEFAULT 1 + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND +Symbol table '.symtab' contains 399 entries: + Num: Value Size Type Bind Vis Ndx Name + diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_entrypoint.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_entrypoint.o new file mode 100644 index 000000000..5b15c11ca Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_entrypoint.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o new file mode 100644 index 000000000..59c3729cf Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_helper.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o new file mode 100644 index 000000000..6309d26fd Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/bl2_main.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o new file mode 100644 index 000000000..027fe099d Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/build_message.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o new file mode 100644 index 000000000..326fbb7d8 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cache.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o new file mode 100644 index 000000000..5b519211c Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cps_cvi.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o new file mode 100644 index 000000000..051f0fefa Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cpu_helper.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o new file mode 100644 index 000000000..797b5fecb Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/crc16.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o new file mode 100644 index 000000000..9702ae87f Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cv_usb.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o new file mode 100644 index 000000000..42a331caf Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_dram_cap_check.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o new file mode 100644 index 000000000..fdc6a703f Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/cvx16_pinmux.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o new file mode 100644 index 000000000..9a01c6a40 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o new file mode 100644 index 000000000..33b3cac76 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_patch_regs.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o new file mode 100644 index 000000000..c8c37a782 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_pkg_info.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o new file mode 100644 index 000000000..5616b5c09 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o new file mode 100644 index 000000000..184faec16 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddr_sys_bring_up.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o new file mode 100644 index 000000000..69f66962e Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/ddrc_init.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o new file mode 100644 index 000000000..d96bf7fc5 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/decompress.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o new file mode 100644 index 000000000..c8eaa319d Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/delay_timer.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o new file mode 100644 index 000000000..e106f3355 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o new file mode 100644 index 000000000..e367ec136 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o new file mode 100644 index 000000000..ed39f4816 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/lz4_all.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o new file mode 100644 index 000000000..7cd1a72df Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/mem.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o new file mode 100644 index 000000000..a0c465275 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o new file mode 100644 index 000000000..9db7c9ec8 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/misc_helpers.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o new file mode 100644 index 000000000..5a319c15c Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_init.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o new file mode 100644 index 000000000..5aadfe455 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/phy_pll_init.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o new file mode 100644 index 000000000..f867ab4b8 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o new file mode 100644 index 000000000..e19e620c9 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/platform_device.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o new file mode 100644 index 000000000..9090a7f17 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/putchar.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o new file mode 100644 index 000000000..a7537419f Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/security.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o new file mode 100644 index 000000000..af3025b4f Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strchr.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o new file mode 100644 index 000000000..b4194d6e8 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strcmp.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o new file mode 100644 index 000000000..8a1a585be Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strlen.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o new file mode 100644 index 000000000..9730729f0 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strncmp.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o new file mode 100644 index 000000000..902d8c7d8 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/strnlen.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o new file mode 100644 index 000000000..feec4842f Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/tf_printf.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o new file mode 100644 index 000000000..f2d49979f Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/uart_dw.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o new file mode 100644 index 000000000..1e20cad66 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/usb_tty.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o new file mode 100644 index 000000000..2359b584c Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/bl2/xxhash.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros.bin b/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros.bin new file mode 100755 index 000000000..c9902e4a9 --- /dev/null +++ b/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros.bin @@ -0,0 +1 @@ +ï¾­Þ \ No newline at end of file diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros.env b/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros.env new file mode 100644 index 000000000..a57837ce1 --- /dev/null +++ b/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros.env @@ -0,0 +1,2 @@ +MONITOR_RUNADDR=0x0000000080000000 +BLCP_2ND_RUNADDR=0x0000000087e00000 diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/blmacros.dis b/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/blmacros.dis new file mode 100644 index 000000000..5d5c0ed4a --- /dev/null +++ b/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/blmacros.dis @@ -0,0 +1,24 @@ + +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/blmacros.elf: file format elf64-littleriscv +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/blmacros.elf +architecture: riscv:rv64, flags 0x00000112: +EXEC_P, HAS_SYMS, D_PAGED +start address 0x0000000000000000 + +Program Header: + LOAD off 0x0000000000001000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**12 + filesz 0x0000000000000004 memsz 0x0000000000000004 flags r-- + STACK off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**4 + filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw- + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000004 0000000000000000 0000000000000000 00001000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA +SYMBOL TABLE: +0000000000000000 l d .text 0000000000000000 .text +0000000087e00000 g *ABS* 0000000000000000 DEF_BLCP_2ND_RUNADDR +0000000080000000 g *ABS* 0000000000000000 DEF_MONITOR_RUNADDR +0000000080000000 g *ABS* 0000000000000000 DEF_DRAM_BASE + + diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/blmacros.elf b/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/blmacros.elf new file mode 100755 index 000000000..158106cd9 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/blmacros.elf differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/blmacros.ld b/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/blmacros.ld new file mode 100644 index 000000000..c5eb9698a --- /dev/null +++ b/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/blmacros.ld @@ -0,0 +1,10 @@ +SECTIONS +{ + .text : { + LONG(0xDEADBEEF); + *(*) + } + DEF_DRAM_BASE = 0x80000000; + DEF_MONITOR_RUNADDR = 0x80000000; + DEF_BLCP_2ND_RUNADDR = 0x87e00000; +} diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/blmacros.map b/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/blmacros.map new file mode 100644 index 000000000..fb0fcb11e --- /dev/null +++ b/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/blmacros.map @@ -0,0 +1,39 @@ + +Discarded input sections + + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/build_message.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/build_message.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/build_message.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/build_message.o + .rodata.build_message + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/build_message.o + .rodata.version_string + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/build_message.o + .debug_info 0x0000000000000000 0x89 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/build_message.o + .debug_abbrev 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/build_message.o + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/build_message.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/build_message.o + .debug_macro 0x0000000000000000 0x86e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/build_message.o + .debug_line 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/build_message.o + .debug_str 0x0000000000000000 0x29a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/build_message.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/build_message.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/build_message.o + +Memory Configuration + +Name Origin Length Attributes +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + +.text 0x0000000000000000 0x4 + 0x0000000000000000 0x4 LONG 0xdeadbeef + *(*) + 0x0000000080000000 DEF_DRAM_BASE = 0x80000000 + 0x0000000080000000 DEF_MONITOR_RUNADDR = 0x80000000 + 0x0000000087e00000 DEF_BLCP_2ND_RUNADDR = 0x87e00000 +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/build_message.o +OUTPUT(/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/blmacros.elf elf64-littleriscv) diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/blmacros.sym b/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/blmacros.sym new file mode 100644 index 000000000..f7a57862c --- /dev/null +++ b/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/blmacros.sym @@ -0,0 +1,8 @@ + 4: 0000000080000000 0 NOTYPE GLOBAL DEFAULT ABS DEF_DRAM_BASE + 3: 0000000080000000 0 NOTYPE GLOBAL DEFAULT ABS DEF_MONITOR_RUNADDR + 2: 0000000087e00000 0 NOTYPE GLOBAL DEFAULT ABS DEF_BLCP_2ND_RUNADDR + 1: 0000000000000000 0 SECTION LOCAL DEFAULT 1 + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND +Symbol table '.symtab' contains 5 entries: + Num: Value Size Type Bind Vis Ndx Name + diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/build_message.o b/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/build_message.o new file mode 100644 index 000000000..027fe099d Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/blmacros/build_message.o differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/chip_conf.bin b/fsbl/build/cv1801c_wdmb_0009a_spinor/chip_conf.bin new file mode 100644 index 000000000..d2dabd686 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/chip_conf.bin differ diff --git a/fsbl/build/cv1801c_wdmb_0009a_spinor/fip.bin b/fsbl/build/cv1801c_wdmb_0009a_spinor/fip.bin new file mode 100644 index 000000000..422c8ef59 Binary files /dev/null and b/fsbl/build/cv1801c_wdmb_0009a_spinor/fip.bin differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2.bin b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2.bin new file mode 100755 index 000000000..e8d6b6e3b Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2.bin differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o new file mode 100644 index 000000000..12eb8ab24 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o new file mode 100644 index 000000000..9c29033f7 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2.dis b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2.dis new file mode 100644 index 000000000..91c920025 --- /dev/null +++ b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2.dis @@ -0,0 +1,14885 @@ + +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2.elf: file format elf64-littleriscv +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2.elf +architecture: riscv:rv64, flags 0x00000112: +EXEC_P, HAS_SYMS, D_PAGED +start address 0x000000003bc00000 + +Program Header: + LOAD off 0x0000000000001000 vaddr 0x000000003bc00000 paddr 0x000000003bc00000 align 2**12 + filesz 0x000000000000ba10 memsz 0x0000000000013810 flags rwx + STACK off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**4 + filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw- + +Sections: +Idx Name Size VMA LMA File off Algn + 0 ro 0000b74c 000000003bc00000 000000003bc00000 00001000 2**3 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 000002c4 000000003bc0b74c 000000003bc0b74c 0000c74c 2**3 + CONTENTS, ALLOC, LOAD, DATA + 2 stacks 00002030 000000003bc0ba10 000000003bc0ba10 0000ca10 2**0 + ALLOC + 3 .bss 00005c10 000000003bc0dc00 000000003bc0dc00 0000ca10 2**9 + ALLOC + 4 .debug_info 0006993c 0000000000000000 0000000000000000 0000ca10 2**0 + CONTENTS, READONLY, DEBUGGING + 5 .debug_abbrev 00004df7 0000000000000000 0000000000000000 0007634c 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_aranges 00001e80 0000000000000000 0000000000000000 0007b150 2**4 + CONTENTS, READONLY, DEBUGGING + 7 .debug_macro 00009b13 0000000000000000 0000000000000000 0007cfd0 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_line 000777fd 0000000000000000 0000000000000000 00086ae3 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_str 0002399c 0000000000000000 0000000000000000 000fe2e0 2**0 + CONTENTS, READONLY, DEBUGGING + 10 .comment 0000001d 0000000000000000 0000000000000000 00121c7c 2**0 + CONTENTS, READONLY + 11 .debug_ranges 000301e0 0000000000000000 0000000000000000 00121c99 2**0 + CONTENTS, READONLY, DEBUGGING + 12 .debug_frame 00004810 0000000000000000 0000000000000000 00151e80 2**3 + CONTENTS, READONLY, DEBUGGING + 13 .debug_loc 000c2b4e 0000000000000000 0000000000000000 00156690 2**0 + CONTENTS, READONLY, DEBUGGING +SYMBOL TABLE: +000000003bc00000 l d ro 0000000000000000 ro +000000003bc0b74c l d .data 0000000000000000 .data +000000003bc0ba10 l d stacks 0000000000000000 stacks +000000003bc0dc00 l d .bss 0000000000000000 .bss +0000000000000000 l d .debug_info 0000000000000000 .debug_info +0000000000000000 l d .debug_abbrev 0000000000000000 .debug_abbrev +0000000000000000 l d .debug_aranges 0000000000000000 .debug_aranges +0000000000000000 l d .debug_macro 0000000000000000 .debug_macro +0000000000000000 l d .debug_line 0000000000000000 .debug_line +0000000000000000 l d .debug_str 0000000000000000 .debug_str +0000000000000000 l d .comment 0000000000000000 .comment +0000000000000000 l d .debug_ranges 0000000000000000 .debug_ranges +0000000000000000 l d .debug_frame 0000000000000000 .debug_frame +0000000000000000 l d .debug_loc 0000000000000000 .debug_loc +0000000000000000 l df *ABS* 0000000000000000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_entrypoint.o +000000003bc00020 l ro 0000000000000000 bl2_entrypoint_real +000000003bc00144 l ro 0000000000000000 trap_vector +000000003bc0012c l ro 0000000000000000 bss_clear +000000003bc00144 l ro 0000000000000000 die +0000000000000000 l df *ABS* 0000000000000000 cpu_helper.c +0000000000000000 l df *ABS* 0000000000000000 cache.c +0000000000000000 l df *ABS* 0000000000000000 delay_timer.c +0000000000000000 l df *ABS* 0000000000000000 bl2_helper.c +000000003bc136c8 l O .bss 0000000000000030 fw_dynamic_info +0000000000000000 l df *ABS* 0000000000000000 uart_dw.c +0000000000000000 l df *ABS* 0000000000000000 tf_printf.c +000000003bc002d6 l F ro 0000000000000082 unsigned_num_print +0000000000000000 l df *ABS* 0000000000000000 platform.c +0000000000000000 l df *ABS* 0000000000000000 security.c +0000000000000000 l df *ABS* 0000000000000000 misc.c +0000000000000000 l df *ABS* 0000000000000000 mem.c +0000000000000000 l df *ABS* 0000000000000000 putchar.c +0000000000000000 l df *ABS* 0000000000000000 strcmp.c +0000000000000000 l df *ABS* 0000000000000000 strlen.c +0000000000000000 l df *ABS* 0000000000000000 platform_device.c +0000000000000000 l df *ABS* 0000000000000000 bl2_main.c +000000003bc00c14 l F ro 000000000000001a read_time_ms +000000003bc0dc00 l O .bss 0000000000001000 fip_param2 +000000003bc0ec00 l O .bss 0000000000004000 sram_union_buf +0000000000000000 l df *ABS* 0000000000000000 decompress.c +000000003bc014c4 l F ro 0000000000000002 SzFree +000000003bc014c6 l F ro 0000000000000042 SzAlloc +000000003bc136f8 l O .bss 0000000000000008 comp_alloc_buf +000000003bc13700 l O .bss 0000000000000008 comp_alloc_size +000000003bc0aaa0 l O ro 0000000000000008 __func__.0 +000000003bc0aaa8 l O ro 0000000000000010 __func__.1 +0000000000000000 l df *ABS* 0000000000000000 cps_cvi.c +0000000000000000 l df *ABS* 0000000000000000 usb_tty.c +000000003bc01756 l F ro 0000000000000002 resume +000000003bc01758 l F ro 0000000000000038 requestMemAlloc +000000003bc01790 l F ro 0000000000000002 requestMemFree +000000003bc01792 l F ro 000000000000001c acm_complete_set_line_coding +000000003bc017ae l F ro 0000000000000014 reset +000000003bc017c2 l F ro 000000000000002e disconnect +000000003bc017f0 l F ro 0000000000000026 unbind +000000003bc01816 l F ro 0000000000000042 bind +000000003bc01858 l F ro 0000000000000052 get_unicode_string +000000003bc018aa l F ro 0000000000000234 bulkOutCmpl +000000003bc01b64 l F ro 0000000000000050 bulkInCmpl +000000003bc01ade l F ro 000000000000005c getDescAcm +000000003bc01b3a l F ro 000000000000002a reqComplete +000000003bc01bb4 l F ro 0000000000000442 setup +000000003bc01ff6 l F ro 0000000000000002 suspend +000000003bc13804 l O .bss 0000000000000001 ack_idx.6 +000000003bc13710 l O .bss 0000000000000008 bulkBuf +000000003bc13718 l O .bss 0000000000000008 bulkInReq +000000003bc13720 l O .bss 0000000000000008 bulkOutReq +000000003bc13728 l O .bss 0000000000000008 cmdBuf +000000003bc13806 l O .bss 0000000000000001 configBreak +000000003bc13807 l O .bss 0000000000000001 configValue +000000003bc13730 l O .bss 0000000000000008 ep0Buff +000000003bc13738 l O .bss 0000000000000008 ep0Req +000000003bc13740 l O .bss 0000000000000008 epIn +000000003bc13748 l O .bss 0000000000000008 epOut +000000003bc13750 l O .bss 0000000000000008 fip_buf +000000003bc137e0 l O .bss 0000000000000004 fip_tx_offset +000000003bc137e4 l O .bss 0000000000000004 fip_tx_size +000000003bc13808 l O .bss 0000000000000001 flagEnterDL +000000003bc13809 l O .bss 0000000000000001 flagReboot +000000003bc1380a l O .bss 0000000000000001 is_serial_patched.3 +000000003bc1380b l O .bss 0000000000000001 mem_alloc_cnt +000000003bc13758 l O .bss 000000000000001c productDesc +000000003bc13778 l O .bss 0000000000000010 serial.2 +000000003bc13788 l O .bss 000000000000001c serialDesc +000000003bc137e8 l O .bss 0000000000000004 transfer_size +000000003bc137ec l O .bss 0000000000000004 ts +000000003bc137a8 l O .bss 0000000000000010 vendorDesc +000000003bc0b758 l O .data 0000000000000009 ConfDesc +000000003bc0b768 l O .data 0000000000000008 acm_buf +000000003bc0b770 l O .data 0000000000000005 acm_call_mgmt_descriptor +000000003bc0b778 l O .data 0000000000000009 acm_control_interface_desc +000000003bc0b788 l O .data 0000000000000009 acm_data_interface_desc +000000003bc0b798 l O .data 0000000000000004 acm_descriptor +000000003bc0b7a0 l O .data 0000000000000007 acm_fs_in_desc +000000003bc0b7a8 l O .data 0000000000000007 acm_fs_notify_desc +000000003bc0b7b0 l O .data 0000000000000007 acm_fs_out_desc +000000003bc0b7b8 l O .data 0000000000000005 acm_header_desc +000000003bc0b7c0 l O .data 0000000000000007 acm_hs_in_desc +000000003bc0b7c8 l O .data 0000000000000007 acm_hs_notify_desc +000000003bc0b7d0 l O .data 0000000000000007 acm_hs_out_desc +000000003bc0b7d8 l O .data 0000000000000005 acm_union_desc +000000003bc0b7e0 l O .data 0000000000000005 bosDesc +000000003bc0b7e8 l O .data 0000000000000008 bulkBufAlloc +000000003bc0b7f0 l O .data 0000000000000007 capabilityExtDesc +000000003bc0b7f8 l O .data 0000000000000008 cb0_buf +000000003bc0b800 l O .data 0000000000000008 cb1_buf +000000003bc0b808 l O .data 0000000000000008 cb2_buf +000000003bc0b810 l O .data 0000000000000008 cmdBufAlloc +000000003bc0b818 l O .data 0000000000000050 descriptorsFs +000000003bc0b868 l O .data 0000000000000050 descriptorsHs +000000003bc0b8b8 l O .data 0000000000000012 devHsDesc +000000003bc0b8d0 l O .data 0000000000000050 drv_obj +000000003bc0b920 l O .data 0000000000000008 ep0BuffAlloc +000000003bc0b928 l O .data 0000000000000058 g_driver +000000003bc0b980 l O .data 0000000000000008 handler +000000003bc0b988 l O .data 0000000000000004 languageDesc +000000003bc0b990 l O .data 000000000000000a qualifierDesc +000000003bc0b9a0 l O .data 0000000000000008 rsp_buf +000000003bc0b9a8 l O .data 0000000000000008 setup_buf +000000003bc0ae98 l O ro 0000000000000005 __func__.0 +000000003bc0aea0 l O ro 0000000000000007 __func__.1 +000000003bc0aea8 l O ro 000000000000000b __func__.4 +000000003bc0aeb8 l O ro 0000000000000006 __func__.5 +0000000000000000 l df *ABS* 0000000000000000 dwc2_udc_otg.c +000000003bc0275c l F ro 0000000000000016 dwc2_fifo_status +000000003bc02772 l F ro 000000000000003a dwc2_free_request +000000003bc027ac l F ro 0000000000000048 pullup +000000003bc027f4 l F ro 0000000000000038 dwc2_alloc_request +000000003bc0282c l F ro 00000000000000a0 dwc2_ep_enable +000000003bc028cc l F ro 0000000000000002 dwc2_fifo_flush +000000003bc02960 l F ro 0000000000000054 dwc2_dequeue +000000003bc02ac2 l F ro 000000000000003c wakeup +000000003bc02b44 l F ro 0000000000000090 dwc2_hsotg_txfifo_flush.constprop.0 +000000003bc02bd4 l F ro 000000000000005e kill_all_requests.isra.0 +000000003bc02c88 l F ro 00000000000000da dwc2_hsotg_init_fifo.constprop.0 +000000003bc02d62 l F ro 00000000000001a6 _dwc2_ep_disable.isra.0 +000000003bc02f08 l F ro 0000000000000020 dwc2_ep_disable +000000003bc0b9b0 l O .data 0000000000000050 dwc2_ep_ops +000000003bc0b0a8 l O ro 0000000000000012 __func__.0 +000000003bc0b0c0 l O ro 0000000000000011 __func__.1 +000000003bc0b0d8 l O ro 0000000000000013 __func__.2 +000000003bc0b0f0 l O ro 0000000000000018 __func__.3 +000000003bc0b108 l O ro 0000000000000015 __func__.4 +000000003bc0b120 l O ro 0000000000000009 driver_name +000000003bc0b130 l O ro 0000000000000048 dwc2_udc_ops +000000003bc0b178 l O ro 000000000000000c ep0name +000000003bc0b188 l O ro 000000000000000b ep1name +000000003bc0b198 l O ro 000000000000000c ep2name +000000003bc0b1a8 l O ro 000000000000000a ep3name +0000000000000000 l df *ABS* 0000000000000000 dwc2_udc_otg_xfer_dma.c +000000003bc034ba l F ro 000000000000008e set_max_pktsize +000000003bc03548 l F ro 000000000000005e dwc2_udc_ep_clear_stall +000000003bc035a6 l F ro 0000000000000062 dwc2_udc_ep_set_stall +000000003bc03608 l F ro 0000000000000080 dwc2_ep0_complete_out +000000003bc03688 l F ro 000000000000007e dwc2_udc_ep0_zlp +000000003bc03706 l F ro 0000000000000068 dwc2_udc_ep0_set_stall.isra.0 +000000003bc0376e l F ro 00000000000000aa setdma_rx.isra.0 +000000003bc03818 l F ro 00000000000000fc complete_rx +000000003bc0396e l F ro 000000000000015c setdma_tx +000000003bc0ba00 l O .data 0000000000000004 ep0_fifo_size +000000003bc0ba04 l O .data 0000000000000004 ep_fifo_size +0000000000000000 l df *ABS* 0000000000000000 cv_usb.c +0000000000000000 l df *ABS* 0000000000000000 crc16.c +000000003bc0b230 l O ro 0000000000000200 crc16_tab +0000000000000000 l df *ABS* 0000000000000000 LzmaDec.c +000000003bc04746 l F ro 0000000000000072 LzmaDec_WriteRem +000000003bc047b8 l F ro 000000000000138a LzmaDec_DecodeReal2 +000000003bc05b42 l F ro 00000000000004e8 LzmaDec_TryDummy +000000003bc062d6 l F ro 0000000000000066 LzmaDec_AllocateProbs2.isra.0 +0000000000000000 l df *ABS* 0000000000000000 lz4_all.c +000000003bc06460 l F ro 0000000000000024 LZ4F_readLE32 +000000003bc06484 l F ro 0000000000000276 LZ4_decompress_safe_withSmallPrefix +000000003bc066fa l F ro 0000000000000110 LZ4F_updateDict +000000003bc07048 l F ro 00000000000001a4 LZ4F_decodeHeader +000000003bc0b470 l O ro 0000000000000020 blockSizes.0 +000000003bc0b490 l O ro 0000000000000020 dec64table +000000003bc0b4b0 l O ro 0000000000000020 inc32table +0000000000000000 l df *ABS* 0000000000000000 xxhash.c +000000003bc079f8 l F ro 000000000000002c XXH32_avalanche +000000003bc07a24 l F ro 0000000000000016 XXH_read32 +000000003bc07a3a l F ro 000000000000033a XXH32_finalize.constprop.0 +0000000000000000 l df *ABS* 0000000000000000 ddr.c +0000000000000000 l df *ABS* 0000000000000000 ddr_pkg_info.c +0000000000000000 l df *ABS* 0000000000000000 ddr_sys_bring_up.c +0000000000000000 l df *ABS* 0000000000000000 ddr_sys.c +0000000000000000 l df *ABS* 0000000000000000 phy_pll_init.c +0000000000000000 l df *ABS* 0000000000000000 cvx16_pinmux.c +0000000000000000 l df *ABS* 0000000000000000 cvx16_dram_cap_check.c +0000000000000000 l df *ABS* 0000000000000000 ddrc_init.c +0000000000000000 l df *ABS* 0000000000000000 phy_init.c +0000000000000000 l df *ABS* 0000000000000000 +000000003bc08404 g F ro 000000000000000a get_ddr_vendor +000000003bc001b4 g F ro 000000000000000a mdelay +000000003bc0840e g F ro 0000000000000050 axi_mon_start_all +000000003bc0216a g F ro 0000000000000006 AcmIsr +000000003bc13800 g O .bss 0000000000000004 tar_freq +000000003bc0b750 g O .data 0000000000000008 time_records +0000000004400100 g *ABS* 0000000000000000 p_rom_api_cryptodma_aes_decrypt +000000003bc137f8 g O .bss 0000000000000004 freq_in +000000003bc00d3e g F ro 00000000000000ae load_ddr_param +000000003bc0a320 g O ro 0000000000000010 version_string +0000000004400080 g *ABS* 0000000000000000 p_rom_api_flash_init +000000003bc009a2 g F ro 0000000000000004 dec_verify_image +000000003bc03cac g F ro 00000000000000b2 dwc2_udc_ep_activate +000000003bc00afa g F ro 0000000000000052 putchar_l +000000003bc0161e g F ro 0000000000000002 LZ4_free +000000003bc045e4 g F ro 0000000000000018 dwc2_ep0_kick +0000000004400020 g *ABS* 0000000000000000 p_rom_api_get_boot_src +000000003bc03914 g F ro 0000000000000016 dwc2_udc_pre_setup +000000003bc00292 g F ro 0000000000000002 jump_to_loader_2nd +000000003bc0021a g F ro 0000000000000078 jump_to_monitor +000000003bc13680 g O .bss 0000000000000010 rsp_bufArr +000000003bc137d8 g O .bss 0000000000000008 reg_step +000000003bc137b8 g O .bss 0000000000000008 reg +000000003bc03b5a g F ro 0000000000000048 dwc2_set_address +000000003bc00ada g F ro 0000000000000020 memmove +000000003bc08682 g F ro 000000000000004e cvx16_bist_wr_prbs_init +000000003bc12c80 g O .bss 0000000000000200 bulkBufAllocArr +000000003bc0680a g F ro 000000000000026e LZ4_decompress_safe +000000003bc13805 g O .bss 0000000000000001 acm_configValue +000000003bc08d22 g F ro 0000000000000044 cvx16_ddr_phy_power_on_seq1 +000000003bc0603e g F ro 000000000000027c LzmaDec_DecodeToDic +000000003bc08776 g F ro 0000000000000046 cvx16_bist_rdglvl_init +000000003bc08730 g F ro 0000000000000046 cvx16_bist_wrlvl_init +000000003bc0a300 g O ro 000000000000001a build_message +000000003bc095b6 g F ro 0000000000000182 cvx16_wdqlvl_req +000000003bc0b750 g .data 0000000000000000 __DATA_START__ +000000003bc004f2 g F ro 00000000000000c8 __system_reset +000000003bc00834 g F ro 0000000000000044 switch_rtc_mode_2nd_stage +000000003bc01346 g F ro 00000000000000e6 load_rest +000000003bc04714 g F ro 0000000000000032 crc16_ccitt +000000003bc08e3a g F ro 0000000000000028 cvx16_set_dfi_init_complete +000000003bc08de8 g F ro 0000000000000038 cvx16_wait_for_dfi_init_complete +000000003bc03b0e g F ro 000000000000004c dwc2_write_fifo_ep0 +000000003bc12f00 g O .bss 0000000000000080 cb1_bufArr +000000003bc090b8 g F ro 00000000000001d6 cvx16_wrlvl_req +000000003bc02afe g F ro 0000000000000046 dwc2_hsotg_wait_bit_set +000000003bc093cc g F ro 00000000000001ea cvx16_rdlvl_req +000000003bc00a7a g F ro 0000000000000060 memcpy +000000003bc088a6 g F ro 00000000000000b0 cvx16_bist_wdqlvl_init +000000003bc028d0 g F ro 000000000000000a dwc2_get_ep0_name +000000003bc02a9e g F ro 0000000000000024 dwc2_hsotg_clear_bit +000000003bc03bca g F ro 0000000000000040 dwc2_ep0_write +000000003bc028ce g F ro 0000000000000002 dwc2_log_write +000000003bc02a7c g F ro 0000000000000022 dwc2_hsotg_set_bit +000000003bc136c0 g O .bss 0000000000000008 setup_bufArr +000000003bc09e66 g F ro 000000000000002e ctrl_init_low_patch +000000003bc0602a g F ro 0000000000000014 LzmaDec_Init +000000003bc01018 g F ro 0000000000000126 load_monitor +000000003bc1380f g O .bss 0000000000000001 pkg +000000003bc0da40 g stacks 0000000000000000 __STACKS_END__ +000000003bc08c14 g F ro 0000000000000016 cvx16_clk_div40 +000000003bc005ba g F ro 0000000000000032 panic_handler +000000003bc029b4 g F ro 000000000000002e dwc2_nuke +000000003bc001e2 g F ro 000000000000002a get_random_from_timer +000000003bc09c12 g F ro 0000000000000002 cvx16_dram_cap_check +000000003bc089b6 g F ro 000000000000006a cvx16_bist_start_check +000000003bc137fc g O .bss 0000000000000004 mod_freq +000000003bc00b7a g F ro 000000000000007c gpio_in_value +00000000044000e0 g *ABS* 0000000000000000 p_rom_api_verify_rsa +000000003bc09738 g F ro 0000000000000002 cvx16_en_rec_vol_mode +000000003bc0020c g F ro 000000000000000e read_count_tick +000000003bc09048 g F ro 0000000000000070 cvx16_clk_gating_enable +000000003bc016ce g F ro 000000000000007e decompress +000000003bc086d0 g F ro 0000000000000060 cvx16_bist_wr_sram_init +0000000000005c10 g *ABS* 0000000000000000 __BSS_SIZE__ +000000003bc001be g F ro 0000000000000024 get_timer +000000003bc08dae g F ro 000000000000003a cvx16_ddr_phy_power_on_seq3 +000000003bc031b6 g F ro 0000000000000156 usb_gadget_register_driver +000000003bc002a4 g F ro 000000000000001e console_putc +000000003bc137f0 g O .bss 0000000000000004 rddata +000000003bc08c2a g F ro 00000000000000f8 cvx16_chg_pll_freq +000000003bc00294 g F ro 0000000000000010 _uart_putc +000000003bc00156 g F ro 0000000000000024 flush_dcache_range +000000003bc12e80 g O .bss 0000000000000080 cb0_bufArr +000000003bc0068e g F ro 000000000000018e sys_pll_nd +000000003bc00832 g F ro 0000000000000002 switch_rtc_mode_1st_stage +000000003bc00878 g F ro 00000000000000bc set_rtc_en_registers +000000003bc00c6e g F ro 00000000000000d0 load_param2 +000000003bc0721c g F ro 00000000000007dc LZ4F_decompress +000000003bc098d8 g F ro 000000000000033a cvx16_pinmux +000000003bc08b3a g F ro 0000000000000068 cvx16_dll_cal +000000003bc02170 g F ro 0000000000000138 acm_app_init +000000003bc022e4 g F ro 0000000000000478 AcmApp +000000003bc08ffe g F ro 000000000000004a cvx16_clk_gating_disable +000000003bc071ec g F ro 0000000000000030 LZ4F_createDecompressionContext +000000003bc0174c g F ro 0000000000000006 DWC2_UncachedRead32 +000000003bc022b4 g F ro 0000000000000030 get_usb_polling_timeout_value +000000003bc03ba2 g F ro 0000000000000028 dwc2_ep0_read +000000003bc13200 g O .bss 0000000000000080 ep0BuffAllocArr +000000003bc0346e g F ro 000000000000004c usb_gadget_handle_interrupts +000000003bc13810 g .bss 0000000000000000 __BL2_END__ +000000003bc08d66 g F ro 0000000000000048 cvx16_ddr_phy_power_on_seq2 +000000003bc08e62 g F ro 000000000000002c cvx16_INT_ISR_08 +000000003bc06ce2 g F ro 0000000000000316 LZ4_decompress_safe_forceExtDict +000000003bc01ff8 g F ro 00000000000000a2 convert_buf_addr +000000003bc06386 g F ro 0000000000000030 LzmaDec_AllocateProbs +000000003bc08f58 g F ro 00000000000000a6 cvx16_pll_init +000000003bc0142c g F ro 0000000000000098 bl2_main +000000003bc0ba10 g .data 0000000000000000 __DATA_END__ +000000003bc062ba g F ro 000000000000001c LzmaDec_FreeProbs +000000003bc01508 g F ro 00000000000000e8 decompress_lzma +000000003bc0017a g F ro 0000000000000010 trig_simulation_timer +000000003bc08956 g F ro 0000000000000060 cvx16_bist_wdmlvl_init +000000003bc0018a g F ro 000000000000002a udelay +000000003bc08e20 g F ro 000000000000001a cvx16_polling_dfi_init_start +000000003bc02920 g F ro 0000000000000040 dwc2_done +000000003bc087bc g F ro 00000000000000ea cvx16_bist_rdlvl_init +000000003bc1380e g O .bss 0000000000000001 ddr_vendor +00000000044000a0 g *ABS* 0000000000000000 p_rom_api_image_crc +000000003bc00c2e g F ro 0000000000000040 load_image_by_usb +000000003bc00000 g ro 0000000000000000 bl2_entrypoint +000000003bc0113e g F ro 0000000000000208 load_loader_2nd +000000003bc02c32 g F ro 0000000000000056 dwc2_disconnect +000000003bc0331e g F ro 0000000000000150 dwc2_udc_probe +000000003bc00934 g F ro 000000000000006e init_comm_info +000000003bc137f4 g O .bss 0000000000000004 dev_freq +000000003bc045fc g F ro 00000000000000d8 dwc2_queue +000000003bc00680 g F ro 000000000000000e sys_switch_all_to_pll +000000003bc13810 g .bss 0000000000000000 __BSS_END__ +000000003bc081d6 g F ro 000000000000022e read_ddr_pkg_info +000000003bc12c00 g O .bss 0000000000000080 acm_bufArr +0000000004400040 g *ABS* 0000000000000000 p_rom_api_set_boot_src +000000003bc0633c g F ro 000000000000004a LzmaProps_Decode +000000003bc08f12 g F ro 0000000000000020 cvx16_setting_check +000000003bc00eb2 g F ro 0000000000000166 load_blcp_2nd +000000003bc137d0 g O .bss 0000000000000008 reg_span +000000003bc08ba2 g F ro 000000000000005c cvx16_clk_normal +000000003bc022a8 g F ro 000000000000000c usb_vbus_det +000000003bc00a20 g F ro 000000000000005a memset +000000003bc03c4a g F ro 0000000000000062 dwc2_udc_set_halt +000000003bc07f90 g F ro 00000000000001d2 XXH32_update +000000003bc0a488 g O ro 0000000000000025 hex2ascii_data +000000003bc09e94 g F ro 00000000000000b2 ctrl_init_update_by_dram_size +000000003bc03d5e g F ro 0000000000000346 dwc2_handle_ep0 +000000003bc00b4c g F ro 000000000000001c strcmp +000000003bc07f3a g F ro 0000000000000056 XXH32_reset +000000003bc07d74 g F ro 00000000000001c6 XXH32 +000000003bc08a20 g F ro 00000000000000a6 cvx16_rdvld_train +000000003bc09c14 g F ro 0000000000000224 ddrc_init +000000003bc06a78 g F ro 000000000000026a LZ4_decompress_safe_withPrefix64k +000000003bc00358 g F ro 000000000000019a tf_printf +000000003bc029e2 g F ro 000000000000009a usb_gadget_unregister_driver +000000003bc015f6 g F ro 0000000000000028 LZ4_calloc +000000003bc002c2 g F ro 0000000000000014 console_flush +000000003bc0209a g F ro 00000000000000d0 print_buf_addr +000000003bc0b74c g ro 0000000000000000 __RO_END__ +000000003bc12f80 g O .bss 0000000000000080 cb2_bufArr +0000000004400060 g *ABS* 0000000000000000 p_rom_api_load_image +000000003bc0701e g F ro 000000000000000c LZ4F_isError +000000003bc0dc00 g .bss 0000000000000000 __BSS_START__ +000000003bc03c0a g F ro 0000000000000040 dwc2_udc_set_nak +000000003bc00000 g ro 0000000000000000 __RO_START__ +000000003bc0928e g F ro 000000000000013e cvx16_rdglvl_req +000000003bc0330c g F ro 0000000000000012 dwc2_phy_to_log_ep +000000003bc009a6 g F ro 000000000000007a ntostr +000000003bc046d4 g F ro 0000000000000040 usb_polling +000000003bc08e8e g F ro 000000000000001c cvx16_polling_synp_normal_mode +000000003bc06ff8 g F ro 0000000000000026 LZ4_decompress_safe_usingDict +000000003bc015f0 g F ro 0000000000000006 LZ4_malloc +000000003bc0973a g F ro 000000000000011a ctrl_init_detect_dram_size +00000000044000c0 g *ABS* 0000000000000000 p_rom_api_get_number_of_retries +000000003bc0014c g F ro 000000000000000a sync_cache +000000003bc00636 g F ro 000000000000004a setup_dl_flag +000000003bc005ec g F ro 000000000000004a reset_c906l +000000003bc137c8 g O .bss 0000000000000008 reg_set +000000003bc063b6 g F ro 00000000000000aa LzmaDecode +000000003bc00bf6 g F ro 000000000000001e usb_id_det +000000003bc0ba40 g stacks 0000000000000000 __STACKS_START__ +000000003bc0ba08 g O .data 0000000000000002 cv_usb_vid +000000003bc0081c g F ro 0000000000000016 sys_pll_init +000000003bc03aca g F ro 0000000000000044 dwc2_ep_fifo_read +000000003bc0ba0c g O .data 0000000000000004 ddr_data_rate +000000003bc13280 g O .bss 0000000000000400 handlerArr +000000003bc08eaa g F ro 0000000000000068 cvx16_dfi_ca_park_prbs +000000003bc040a4 g F ro 0000000000000540 dwc2_udc_irq +000000003bc13000 g O .bss 0000000000000200 cmdBufAllocArr +000000003bc00b68 g F ro 0000000000000012 strlen +000000003bc1380d g O .bss 0000000000000001 ddr_type +000000003bc0845e g F ro 0000000000000224 ddr_sys_bring_up +000000003bc08162 g F ro 0000000000000040 XXH32_digest +000000003bc081a2 g F ro 0000000000000034 ddr_init +000000003bc0392a g F ro 0000000000000044 dwc2_ep_fifo_write +000000003bc01620 g F ro 00000000000000ae decompress_lz4 +000000003bc0702a g F ro 000000000000001e LZ4F_getBlockSize +000000003bc1380c g O .bss 0000000000000001 ddr_capacity +000000003bc13708 g O .bss 0000000000000008 acm +000000003bc01752 g F ro 0000000000000004 DWC2_UncachedWrite32 +000000003bc137c0 g O .bss 0000000000000008 the_controller +000000003bc08f32 g F ro 0000000000000026 cvx16_set_dfi_init_start +000000003bc09e38 g F ro 000000000000002e ctrl_init_high_patch +000000003bc00dec g F ro 00000000000000c6 load_ddr +000000003bc08ac6 g F ro 0000000000000074 cvx16_synp_mrw +000000003bc028da g F ro 0000000000000046 udc_reinit +000000003bc08bfe g F ro 0000000000000016 cvx16_clk_div2 +000000003bc09f46 g F ro 00000000000003b6 phy_init +000000003bc09854 g F ro 0000000000000084 pll_init +000000003bc02f28 g F ro 000000000000028e dwc2_reconfig_usbd + + + +Disassembly of section ro: + +000000003bc00000 <__RO_START__>: + 3bc00000: 0200006f j 3bc00020 + ... + +000000003bc00020 : + 3bc00020: 05900e1b addiw t3,zero,89 + 3bc00024: 019e1e13 slli t3,t3,0x19 + 3bc00028: 03000eb7 lui t4,0x3000 + 3bc0002c: 084e8e9b addiw t4,t4,132 + 3bc00030: 01cea023 sw t3,0(t4) # 3000000 <__BSS_SIZE__+0x2ffa3f0> + 3bc00034: 00000093 li ra,0 + 3bc00038: 00000113 li sp,0 + 3bc0003c: 00000193 li gp,0 + 3bc00040: 00000213 li tp,0 + 3bc00044: 00000293 li t0,0 + 3bc00048: 00000313 li t1,0 + 3bc0004c: 00000393 li t2,0 + 3bc00050: 00000413 li s0,0 + 3bc00054: 00000493 li s1,0 + 3bc00058: 00000513 li a0,0 + 3bc0005c: 00000593 li a1,0 + 3bc00060: 00000613 li a2,0 + 3bc00064: 00000693 li a3,0 + 3bc00068: 00000713 li a4,0 + 3bc0006c: 00000793 li a5,0 + 3bc00070: 00000813 li a6,0 + 3bc00074: 00000893 li a7,0 + 3bc00078: 00000913 li s2,0 + 3bc0007c: 00000993 li s3,0 + 3bc00080: 00000a13 li s4,0 + 3bc00084: 00000a93 li s5,0 + 3bc00088: 00000b13 li s6,0 + 3bc0008c: 00000b93 li s7,0 + 3bc00090: 00000c13 li s8,0 + 3bc00094: 00000c93 li s9,0 + 3bc00098: 00000d13 li s10,0 + 3bc0009c: 00000d93 li s11,0 + 3bc000a0: 00000e13 li t3,0 + 3bc000a4: 00000e93 li t4,0 + 3bc000a8: 00000f13 li t5,0 + 3bc000ac: 00000f93 li t6,0 + 3bc000b0: 34001073 csrw mscratch,zero + 3bc000b4: 00000297 auipc t0,0x0 + 3bc000b8: 09028293 addi t0,t0,144 # 3bc00144 + 3bc000bc: 30529073 csrw mtvec,t0 + 3bc000c0: 000181b7 lui gp,0x18 + 3bc000c4: 0c71819b addiw gp,gp,199 + 3bc000c8: 00f19193 slli gp,gp,0xf + 3bc000cc: 7c019073 csrw mxstatus,gp + 3bc000d0: 702001b7 lui gp,0x70200 + 3bc000d4: ffc1819b addiw gp,gp,-4 + 3bc000d8: 00100213 li tp,1 + 3bc000dc: 0041a023 sw tp,0(gp) # 70200000 <__BL2_END__+0x345ec7f0> + 3bc000e0: 03300193 li gp,51 + 3bc000e4: 7c21b073 csrc mcor,gp + 3bc000e8: 01100193 li gp,17 + 3bc000ec: 7c21a073 csrs mcor,gp + 3bc000f0: 00100193 li gp,1 + 3bc000f4: 7c11a073 csrs mhcr,gp + 3bc000f8: 03300193 li gp,51 + 3bc000fc: 7c21b073 csrc mcor,gp + 3bc00100: 01200193 li gp,18 + 3bc00104: 7c21a073 csrs mcor,gp + 3bc00108: 00200193 li gp,2 + 3bc0010c: 7c11a073 csrs mhcr,gp + 3bc00110: 0000e117 auipc sp,0xe + 3bc00114: 93010113 addi sp,sp,-1744 # 3bc0da40 <__STACKS_END__> + 3bc00118: 0000e697 auipc a3,0xe + 3bc0011c: ae868693 addi a3,a3,-1304 # 3bc0dc00 <__BSS_START__> + 3bc00120: 00013717 auipc a4,0x13 + 3bc00124: 6f070713 addi a4,a4,1776 # 3bc13810 <__BL2_END__> + 3bc00128: 40d70733 sub a4,a4,a3 + +000000003bc0012c : + 3bc0012c: 0006b023 sd zero,0(a3) + 3bc00130: 00868693 addi a3,a3,8 + 3bc00134: ff870713 addi a4,a4,-8 + 3bc00138: fe071ae3 bnez a4,3bc0012c + 3bc0013c: 2f0010ef jal ra,3bc0142c + 3bc00140: 0040006f j 3bc00144 + +000000003bc00144 : + 3bc00144: 4760006f j 3bc005ba + 3bc00148: ffdff06f j 3bc00144 + +000000003bc0014c : + 3bc0014c: 0100000b icache.iall + 3bc00150: 01a0000b sync.i + 3bc00154: 8082 ret + +000000003bc00156 : + 3bc00156: 87aa mv a5,a0 + 3bc00158: 03f58593 addi a1,a1,63 + 3bc0015c: 95be add a1,a1,a5 + 3bc0015e: fc057513 andi a0,a0,-64 + 3bc00162: fc05f593 andi a1,a1,-64 + 3bc00166: 00b56563 bltu a0,a1,3bc00170 + 3bc0016a: 0190000b sync.s + 3bc0016e: 8082 ret + 3bc00170: 02b5000b dcache.cipa a0 + 3bc00174: 04050513 addi a0,a0,64 + 3bc00178: b7fd j 3bc00166 + +000000003bc0017a : + 3bc0017a: 47e5 li a5,25 + 3bc0017c: 02a787bb mulw a5,a5,a0 + 3bc00180: 03000737 lui a4,0x3000 + 3bc00184: 08f72423 sw a5,136(a4) # 3000088 <__BSS_SIZE__+0x2ffa478> + 3bc00188: 8082 ret + +000000003bc0018a : + 3bc0018a: c0102773 rdtime a4 + 3bc0018e: 47e5 li a5,25 + 3bc00190: 02a786bb mulw a3,a5,a0 + 3bc00194: fff74713 not a4,a4 + 3bc00198: 030007b7 lui a5,0x3000 + 3bc0019c: 2701 sext.w a4,a4 + 3bc0019e: 08d7a423 sw a3,136(a5) # 3000088 <__BSS_SIZE__+0x2ffa478> + 3bc001a2: c01027f3 rdtime a5 + 3bc001a6: fff7c793 not a5,a5 + 3bc001aa: 40f707bb subw a5,a4,a5 + 3bc001ae: fed7eae3 bltu a5,a3,3bc001a2 + 3bc001b2: 8082 ret + +000000003bc001b4 : + 3bc001b4: 3e800793 li a5,1000 + 3bc001b8: 02a7853b mulw a0,a5,a0 + 3bc001bc: b7f9 j 3bc0018a + +000000003bc001be : + 3bc001be: e519 bnez a0,3bc001cc + 3bc001c0: c0102573 rdtime a0 + 3bc001c4: fff54513 not a0,a0 + 3bc001c8: 2501 sext.w a0,a0 + 3bc001ca: 8082 ret + 3bc001cc: c01027f3 rdtime a5 + 3bc001d0: fff7c793 not a5,a5 + 3bc001d4: 9d1d subw a0,a0,a5 + 3bc001d6: 6799 lui a5,0x6 + 3bc001d8: 1a87879b addiw a5,a5,424 + 3bc001dc: 02f5553b divuw a0,a0,a5 + 3bc001e0: 8082 ret + +000000003bc001e2 : + 3bc001e2: e519 bnez a0,3bc001f0 + 3bc001e4: c0102573 rdtime a0 + 3bc001e8: fff54513 not a0,a0 + 3bc001ec: 2501 sext.w a0,a0 + 3bc001ee: 8082 ret + 3bc001f0: c01027f3 rdtime a5 + 3bc001f4: fff7c793 not a5,a5 + 3bc001f8: 9d1d subw a0,a0,a5 + 3bc001fa: 47e5 li a5,25 + 3bc001fc: 02f5553b divuw a0,a0,a5 + 3bc00200: 67e1 lui a5,0x18 + 3bc00202: 6a07879b addiw a5,a5,1696 + 3bc00206: 02f5753b remuw a0,a0,a5 + 3bc0020a: 8082 ret + +000000003bc0020c : + 3bc0020c: c0102573 rdtime a0 + 3bc00210: 47e5 li a5,25 + 3bc00212: 02f55533 divu a0,a0,a5 + 3bc00216: 2501 sext.w a0,a0 + 3bc00218: 8082 ret + +000000003bc0021a : + 3bc0021a: 1101 addi sp,sp,-32 + 3bc0021c: 494257b7 lui a5,0x49425 + 3bc00220: e822 sd s0,16(sp) + 3bc00222: 34f78793 addi a5,a5,847 # 4942534f <__BL2_END__+0xd811b3f> + 3bc00226: 00013417 auipc s0,0x13 + 3bc0022a: 4a240413 addi s0,s0,1186 # 3bc136c8 + 3bc0022e: e426 sd s1,8(sp) + 3bc00230: e01c sd a5,0(s0) + 3bc00232: 010014b7 lui s1,0x1001 + 3bc00236: 4785 li a5,1 + 3bc00238: e04a sd s2,0(sp) + 3bc0023a: 00749613 slli a2,s1,0x7 + 3bc0023e: 892a mv s2,a0 + 3bc00240: ec1c sd a5,24(s0) + 3bc00242: 0000a517 auipc a0,0xa + 3bc00246: 0ee50513 addi a0,a0,238 # 3bc0a330 + 3bc0024a: 57fd li a5,-1 + 3bc0024c: ec06 sd ra,24(sp) + 3bc0024e: f41c sd a5,40(s0) + 3bc00250: e80c sd a1,16(s0) + 3bc00252: 106000ef jal ra,3bc00358 + 3bc00256: 03000593 li a1,48 + 3bc0025a: 8522 mv a0,s0 + 3bc0025c: efbff0ef jal ra,3bc00156 + 3bc00260: fadff0ef jal ra,3bc0020c + 3bc00264: 3e800793 li a5,1000 + 3bc00268: 3e75051b addiw a0,a0,999 + 3bc0026c: 02f5553b divuw a0,a0,a5 + 3bc00270: 8622 mv a2,s0 + 3bc00272: 0000b797 auipc a5,0xb + 3bc00276: 4de7b783 ld a5,1246(a5) # 3bc0b750 + 3bc0027a: 6442 ld s0,16(sp) + 3bc0027c: 60e2 ld ra,24(sp) + 3bc0027e: 00749593 slli a1,s1,0x7 + 3bc00282: 64a2 ld s1,8(sp) + 3bc00284: 00a79723 sh a0,14(a5) + 3bc00288: 87ca mv a5,s2 + 3bc0028a: 6902 ld s2,0(sp) + 3bc0028c: 4501 li a0,0 + 3bc0028e: 6105 addi sp,sp,32 + 3bc00290: 8782 jr a5 + +000000003bc00292 : + 3bc00292: 8082 ret + +000000003bc00294 <_uart_putc>: + 3bc00294: 04140737 lui a4,0x4140 + 3bc00298: 4b5c lw a5,20(a4) + 3bc0029a: 0207f793 andi a5,a5,32 + 3bc0029e: dfed beqz a5,3bc00298 <_uart_putc+0x4> + 3bc002a0: c308 sw a0,0(a4) + 3bc002a2: 8082 ret + +000000003bc002a4 : + 3bc002a4: 1141 addi sp,sp,-16 + 3bc002a6: e022 sd s0,0(sp) + 3bc002a8: e406 sd ra,8(sp) + 3bc002aa: 47a9 li a5,10 + 3bc002ac: 842a mv s0,a0 + 3bc002ae: 00f51563 bne a0,a5,3bc002b8 + 3bc002b2: 4535 li a0,13 + 3bc002b4: fe1ff0ef jal ra,3bc00294 <_uart_putc> + 3bc002b8: 8522 mv a0,s0 + 3bc002ba: 6402 ld s0,0(sp) + 3bc002bc: 60a2 ld ra,8(sp) + 3bc002be: 0141 addi sp,sp,16 + 3bc002c0: bfd1 j 3bc00294 <_uart_putc> + +000000003bc002c2 : + 3bc002c2: 041406b7 lui a3,0x4140 + 3bc002c6: 06000713 li a4,96 + 3bc002ca: 4adc lw a5,20(a3) + 3bc002cc: 0607f793 andi a5,a5,96 + 3bc002d0: fee79de3 bne a5,a4,3bc002ca + 3bc002d4: 8082 ret + +000000003bc002d6 : + 3bc002d6: 7139 addi sp,sp,-64 + 3bc002d8: f04a sd s2,32(sp) + 3bc002da: 7c05b70b extu a4,a1,31,0 + 3bc002de: fc06 sd ra,56(sp) + 3bc002e0: f822 sd s0,48(sp) + 3bc002e2: f426 sd s1,40(sp) + 3bc002e4: 8932 mv s2,a2 + 3bc002e6: 4801 li a6,0 + 3bc002e8: 45a5 li a1,9 + 3bc002ea: 02e57633 remu a2,a0,a4 + 3bc002ee: 0018041b addiw s0,a6,1 + 3bc002f2: 0ff67793 andi a5,a2,255 + 3bc002f6: 04c5e063 bltu a1,a2,3bc00336 + 3bc002fa: 0307879b addiw a5,a5,48 + 3bc002fe: 0ff7f793 andi a5,a5,255 + 3bc00302: 0030 addi a2,sp,8 + 3bc00304: 0106578b srb a5,a2,a6,0 + 3bc00308: 02e557b3 divu a5,a0,a4 + 3bc0030c: 0805 addi a6,a6,1 + 3bc0030e: 02e57263 bgeu a0,a4,3bc00332 + 3bc00312: 408684bb subw s1,a3,s0 + 3bc00316: 02904363 bgtz s1,3bc0033c + 3bc0031a: 54fd li s1,-1 + 3bc0031c: 147d addi s0,s0,-1 + 3bc0031e: 0004079b sext.w a5,s0 + 3bc00322: 02979463 bne a5,s1,3bc0034a + 3bc00326: 70e2 ld ra,56(sp) + 3bc00328: 7442 ld s0,48(sp) + 3bc0032a: 74a2 ld s1,40(sp) + 3bc0032c: 7902 ld s2,32(sp) + 3bc0032e: 6121 addi sp,sp,64 + 3bc00330: 8082 ret + 3bc00332: 853e mv a0,a5 + 3bc00334: bf5d j 3bc002ea + 3bc00336: 0577879b addiw a5,a5,87 + 3bc0033a: b7d1 j 3bc002fe + 3bc0033c: 85ca mv a1,s2 + 3bc0033e: 03000513 li a0,48 + 3bc00342: 7b8000ef jal ra,3bc00afa + 3bc00346: 34fd addiw s1,s1,-1 + 3bc00348: b7f9 j 3bc00316 + 3bc0034a: 003c addi a5,sp,8 + 3bc0034c: 8087c50b lrbu a0,a5,s0,0 + 3bc00350: 85ca mv a1,s2 + 3bc00352: 7a8000ef jal ra,3bc00afa + 3bc00356: b7d9 j 3bc0031c + +000000003bc00358 : + 3bc00358: 7135 addi sp,sp,-160 + 3bc0035a: e8a2 sd s0,80(sp) + 3bc0035c: e4a6 sd s1,72(sp) + 3bc0035e: ec86 sd ra,88(sp) + 3bc00360: e0ca sd s2,64(sp) + 3bc00362: fc4e sd s3,56(sp) + 3bc00364: f852 sd s4,48(sp) + 3bc00366: f456 sd s5,40(sp) + 3bc00368: f05a sd s6,32(sp) + 3bc0036a: f4ae sd a1,104(sp) + 3bc0036c: f8b2 sd a2,112(sp) + 3bc0036e: fcb6 sd a3,120(sp) + 3bc00370: e13a sd a4,128(sp) + 3bc00372: e53e sd a5,136(sp) + 3bc00374: e942 sd a6,144(sp) + 3bc00376: ed46 sd a7,152(sp) + 3bc00378: 842a mv s0,a0 + 3bc0037a: 4489 li s1,2 + 3bc0037c: c11d beqz a0,3bc003a2 + 3bc0037e: 00054703 lbu a4,0(a0) + 3bc00382: 4785 li a5,1 + 3bc00384: 00f71f63 bne a4,a5,3bc003a2 + 3bc00388: 00154783 lbu a5,1(a0) + 3bc0038c: 4711 li a4,4 + 3bc0038e: fd07879b addiw a5,a5,-48 + 3bc00392: 0ff7f693 andi a3,a5,255 + 3bc00396: 00d76663 bltu a4,a3,3bc003a2 + 3bc0039a: 0007849b sext.w s1,a5 + 3bc0039e: 00250413 addi s0,a0,2 + 3bc003a2: 10bc addi a5,sp,104 + 3bc003a4: ec3e sd a5,24(sp) + 3bc003a6: 4a25 li s4,9 + 3bc003a8: 4ad9 li s5,22 + 3bc003aa: 0000a997 auipc s3,0xa + 3bc003ae: fb298993 addi s3,s3,-78 # 3bc0a35c + 3bc003b2: 00044503 lbu a0,0(s0) + 3bc003b6: e919 bnez a0,3bc003cc + 3bc003b8: 60e6 ld ra,88(sp) + 3bc003ba: 6446 ld s0,80(sp) + 3bc003bc: 64a6 ld s1,72(sp) + 3bc003be: 6906 ld s2,64(sp) + 3bc003c0: 79e2 ld s3,56(sp) + 3bc003c2: 7a42 ld s4,48(sp) + 3bc003c4: 7aa2 ld s5,40(sp) + 3bc003c6: 7b02 ld s6,32(sp) + 3bc003c8: 610d addi sp,sp,160 + 3bc003ca: 8082 ret + 3bc003cc: 02500793 li a5,37 + 3bc003d0: 0405 addi s0,s0,1 + 3bc003d2: 10f51c63 bne a0,a5,3bc004ea + 3bc003d6: 4781 li a5,0 + 3bc003d8: 4681 li a3,0 + 3bc003da: 03000613 li a2,48 + 3bc003de: 00044703 lbu a4,0(s0) + 3bc003e2: 00c70c63 beq a4,a2,3bc003fa + 3bc003e6: f9c7071b addiw a4,a4,-100 + 3bc003ea: 0ff77713 andi a4,a4,255 + 3bc003ee: fceae5e3 bltu s5,a4,3bc003b8 + 3bc003f2: 44e9c70b lrw a4,s3,a4,2 + 3bc003f6: 974e add a4,a4,s3 + 3bc003f8: 8702 jr a4 + 3bc003fa: 00144703 lbu a4,1(s0) + 3bc003fe: fd07071b addiw a4,a4,-48 + 3bc00402: 0ff77593 andi a1,a4,255 + 3bc00406: 00ba6463 bltu s4,a1,3bc0040e + 3bc0040a: 0007069b sext.w a3,a4 + 3bc0040e: 0409 addi s0,s0,2 + 3bc00410: b7f9 j 3bc003de + 3bc00412: 6762 ld a4,24(sp) + 3bc00414: 4585 li a1,1 + 3bc00416: 00870613 addi a2,a4,8 # 4140008 <__BSS_SIZE__+0x413a3f8> + 3bc0041a: ec32 sd a2,24(sp) + 3bc0041c: 02f5d563 bge a1,a5,3bc00446 + 3bc00420: 00073903 ld s2,0(a4) + 3bc00424: 00095b63 bgez s2,3bc0043a + 3bc00428: 85a6 mv a1,s1 + 3bc0042a: 02d00513 li a0,45 + 3bc0042e: e436 sd a3,8(sp) + 3bc00430: 6ca000ef jal ra,3bc00afa + 3bc00434: 66a2 ld a3,8(sp) + 3bc00436: 41200933 neg s2,s2 + 3bc0043a: 8626 mv a2,s1 + 3bc0043c: 45a9 li a1,10 + 3bc0043e: 854a mv a0,s2 + 3bc00440: e97ff0ef jal ra,3bc002d6 + 3bc00444: a831 j 3bc00460 + 3bc00446: ffe9 bnez a5,3bc00420 + 3bc00448: 00072903 lw s2,0(a4) + 3bc0044c: bfe1 j 3bc00424 + 3bc0044e: 67e2 ld a5,24(sp) + 3bc00450: 0007b903 ld s2,0(a5) + 3bc00454: 00878713 addi a4,a5,8 + 3bc00458: ec3a sd a4,24(sp) + 3bc0045a: 00094503 lbu a0,0(s2) + 3bc0045e: e119 bnez a0,3bc00464 + 3bc00460: 0405 addi s0,s0,1 + 3bc00462: bf81 j 3bc003b2 + 3bc00464: 85a6 mv a1,s1 + 3bc00466: 0905 addi s2,s2,1 + 3bc00468: 692000ef jal ra,3bc00afa + 3bc0046c: b7fd j 3bc0045a + 3bc0046e: 67e2 ld a5,24(sp) + 3bc00470: 0000a917 auipc s2,0xa + 3bc00474: ee890913 addi s2,s2,-280 # 3bc0a358 + 3bc00478: 0007bb03 ld s6,0(a5) + 3bc0047c: 00878713 addi a4,a5,8 + 3bc00480: ec3a sd a4,24(sp) + 3bc00482: 000b1c63 bnez s6,3bc0049a + 3bc00486: 8626 mv a2,s1 + 3bc00488: 45c1 li a1,16 + 3bc0048a: 855a mv a0,s6 + 3bc0048c: bf55 j 3bc00440 + 3bc0048e: 85a6 mv a1,s1 + 3bc00490: e436 sd a3,8(sp) + 3bc00492: 668000ef jal ra,3bc00afa + 3bc00496: 66a2 ld a3,8(sp) + 3bc00498: 0905 addi s2,s2,1 + 3bc0049a: 00094503 lbu a0,0(s2) + 3bc0049e: f965 bnez a0,3bc0048e + 3bc004a0: b7dd j 3bc00486 + 3bc004a2: 6762 ld a4,24(sp) + 3bc004a4: 4585 li a1,1 + 3bc004a6: 00870613 addi a2,a4,8 + 3bc004aa: ec32 sd a2,24(sp) + 3bc004ac: 00f5d663 bge a1,a5,3bc004b8 + 3bc004b0: 6308 ld a0,0(a4) + 3bc004b2: 8626 mv a2,s1 + 3bc004b4: 45c1 li a1,16 + 3bc004b6: b769 j 3bc00440 + 3bc004b8: ffe5 bnez a5,3bc004b0 + 3bc004ba: 00076503 lwu a0,0(a4) + 3bc004be: bfd5 j 3bc004b2 + 3bc004c0: 0405 addi s0,s0,1 + 3bc004c2: 4789 li a5,2 + 3bc004c4: bf29 j 3bc003de + 3bc004c6: 2785 addiw a5,a5,1 + 3bc004c8: 0405 addi s0,s0,1 + 3bc004ca: bf11 j 3bc003de + 3bc004cc: 6762 ld a4,24(sp) + 3bc004ce: 4585 li a1,1 + 3bc004d0: 00870613 addi a2,a4,8 + 3bc004d4: ec32 sd a2,24(sp) + 3bc004d6: 00f5d663 bge a1,a5,3bc004e2 + 3bc004da: 6308 ld a0,0(a4) + 3bc004dc: 8626 mv a2,s1 + 3bc004de: 45a9 li a1,10 + 3bc004e0: b785 j 3bc00440 + 3bc004e2: ffe5 bnez a5,3bc004da + 3bc004e4: 00076503 lwu a0,0(a4) + 3bc004e8: bfd5 j 3bc004dc + 3bc004ea: 85a6 mv a1,s1 + 3bc004ec: 60e000ef jal ra,3bc00afa + 3bc004f0: b5c9 j 3bc003b2 + +000000003bc004f2 <__system_reset>: + 3bc004f2: 7179 addi sp,sp,-48 + 3bc004f4: f022 sd s0,32(sp) + 3bc004f6: be00e437 lui s0,0xbe00e + 3bc004fa: f406 sd ra,40(sp) + 3bc004fc: 00340793 addi a5,s0,3 # ffffffffbe00e003 <__BL2_END__+0xffffffff823fa7f3> + 3bc00500: ec26 sd s1,24(sp) + 3bc00502: e84a sd s2,16(sp) + 3bc00504: e44e sd s3,8(sp) + 3bc00506: 0e000937 lui s2,0xe000 + 3bc0050a: 862e mv a2,a1 + 3bc0050c: 00f92823 sw a5,16(s2) # e000010 + 3bc00510: 85aa mv a1,a0 + 3bc00512: 0000a517 auipc a0,0xa + 3bc00516: ea650513 addi a0,a0,-346 # 3bc0a3b8 + 3bc0051a: e3fff0ef jal ra,3bc00358 + 3bc0051e: da5ff0ef jal ra,3bc002c2 + 3bc00522: be0034b7 lui s1,0xbe003 + 3bc00526: 00148793 addi a5,s1,1 # ffffffffbe003001 <__BL2_END__+0xffffffff823ef7f1> + 3bc0052a: 030009b7 lui s3,0x3000 + 3bc0052e: 6505 lui a0,0x1 + 3bc00530: 08f9a223 sw a5,132(s3) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc00534: 38850513 addi a0,a0,904 # 1388 <__BSS_SIZE__-0x4888> + 3bc00538: c7dff0ef jal ra,3bc001b4 + 3bc0053c: 050267b7 lui a5,0x5026 + 3bc00540: 4705 li a4,1 + 3bc00542: 0ee7a023 sw a4,224(a5) # 50260e0 + 3bc00546: 0ce7a423 sw a4,200(a5) + 3bc0054a: 0489 addi s1,s1,2 + 3bc0054c: 0899a223 sw s1,132(s3) + 3bc00550: 06400513 li a0,100 + 3bc00554: c37ff0ef jal ra,3bc0018a + 3bc00558: 050257b7 lui a5,0x5025 + 3bc0055c: 672d lui a4,0xb + 3bc0055e: 0a07a623 sw zero,172(a5) # 50250ac + 3bc00562: b1870713 addi a4,a4,-1256 # ab18 <__BSS_SIZE__+0x4f08> + 3bc00566: c3d8 sw a4,4(a5) + 3bc00568: 00400737 lui a4,0x400 + 3bc0056c: 04070713 addi a4,a4,64 # 400040 <__BSS_SIZE__+0x3fa430> + 3bc00570: c798 sw a4,8(a5) + 3bc00572: 030107b7 lui a5,0x3010 + 3bc00576: 06600713 li a4,102 + 3bc0057a: c3d8 sw a4,4(a5) + 3bc0057c: 02000713 li a4,32 + 3bc00580: cfd8 sw a4,28(a5) + 3bc00582: 07600713 li a4,118 + 3bc00586: c7d8 sw a4,12(a5) + 3bc00588: 4745 li a4,17 + 3bc0058a: c398 sw a4,0(a5) + 3bc0058c: 00394783 lbu a5,3(s2) + 3bc00590: 0407f793 andi a5,a5,64 + 3bc00594: c395 beqz a5,3bc005b8 <__system_reset+0xc6> + 3bc00596: 0411 addi s0,s0,4 + 3bc00598: 00892823 sw s0,16(s2) + 3bc0059c: 050266b7 lui a3,0x5026 + 3bc005a0: 470d li a4,3 + 3bc005a2: 0d46a783 lw a5,212(a3) # 50260d4 + 3bc005a6: 2781 sext.w a5,a5 + 3bc005a8: fee79de3 bne a5,a4,3bc005a2 <__system_reset+0xb0> + 3bc005ac: 000807b7 lui a5,0x80 + 3bc005b0: 05025737 lui a4,0x5025 + 3bc005b4: 07a1 addi a5,a5,8 + 3bc005b6: c71c sw a5,8(a4) + 3bc005b8: a001 j 3bc005b8 <__system_reset+0xc6> + +000000003bc005ba : + 3bc005ba: 1141 addi sp,sp,-16 + 3bc005bc: be00e7b7 lui a5,0xbe00e + 3bc005c0: e406 sd ra,8(sp) + 3bc005c2: 0e000737 lui a4,0xe000 + 3bc005c6: 0789 addi a5,a5,2 + 3bc005c8: cb1c sw a5,16(a4) + 3bc005ca: 0000879b sext.w a5,ra + 3bc005ce: 8586 mv a1,ra + 3bc005d0: 0000a517 auipc a0,0xa + 3bc005d4: e0050513 addi a0,a0,-512 # 3bc0a3d0 + 3bc005d8: cb5c sw a5,20(a4) + 3bc005da: d7fff0ef jal ra,3bc00358 + 3bc005de: 55fd li a1,-1 + 3bc005e0: 0000a517 auipc a0,0xa + 3bc005e4: e0050513 addi a0,a0,-512 # 3bc0a3e0 + 3bc005e8: f0bff0ef jal ra,3bc004f2 <__system_reset> + +000000003bc005ec : + 3bc005ec: 1141 addi sp,sp,-16 + 3bc005ee: e022 sd s0,0(sp) + 3bc005f0: 842a mv s0,a0 + 3bc005f2: 0000a517 auipc a0,0xa + 3bc005f6: df650513 addi a0,a0,-522 # 3bc0a3e8 + 3bc005fa: e406 sd ra,8(sp) + 3bc005fc: d5dff0ef jal ra,3bc00358 + 3bc00600: 03003737 lui a4,0x3003 + 3bc00604: 535c lw a5,36(a4) + 3bc00606: 6609 lui a2,0x2 + 3bc00608: 60a2 ld ra,8(sp) + 3bc0060a: 2781 sext.w a5,a5 + 3bc0060c: fbf7f793 andi a5,a5,-65 + 3bc00610: d35c sw a5,36(a4) + 3bc00612: 020b07b7 lui a5,0x20b0 + 3bc00616: 43d4 lw a3,4(a5) + 3bc00618: 8ed1 or a3,a3,a2 + 3bc0061a: c3d4 sw a3,4(a5) + 3bc0061c: 0004069b sext.w a3,s0 + 3bc00620: d394 sw a3,32(a5) + 3bc00622: 9401 srai s0,s0,0x20 + 3bc00624: d3c0 sw s0,36(a5) + 3bc00626: 535c lw a5,36(a4) + 3bc00628: 6402 ld s0,0(sp) + 3bc0062a: 2781 sext.w a5,a5 + 3bc0062c: 0407e793 ori a5,a5,64 + 3bc00630: d35c sw a5,36(a4) + 3bc00632: 0141 addi sp,sp,16 + 3bc00634: 8082 ret + +000000003bc00636 : + 3bc00636: 1141 addi sp,sp,-16 + 3bc00638: e406 sd ra,8(sp) + 3bc0063a: c8800097 auipc ra,0xc8800 + 3bc0063e: 9e6080e7 jalr -1562(ra) # 4400020 + 3bc00642: 67b5 lui a5,0xd + 3bc00644: 2501 sext.w a0,a0 + 3bc00646: ea078713 addi a4,a5,-352 # cea0 <__BSS_SIZE__+0x7290> + 3bc0064a: 00e50a63 beq a0,a4,3bc0065e + 3bc0064e: ea378793 addi a5,a5,-349 + 3bc00652: 02f50063 beq a0,a5,3bc00672 + 3bc00656: 0e0007b7 lui a5,0xe000 + 3bc0065a: c3c8 sw a0,4(a5) + 3bc0065c: a801 j 3bc0066c + 3bc0065e: 4d4757b7 lui a5,0x4d475 + 3bc00662: 0e000737 lui a4,0xe000 + 3bc00666: e3278793 addi a5,a5,-462 # 4d474e32 <__BL2_END__+0x11861622> + 3bc0066a: c35c sw a5,4(a4) + 3bc0066c: 60a2 ld ra,8(sp) + 3bc0066e: 0141 addi sp,sp,16 + 3bc00670: 8082 ret + 3bc00672: 4d4757b7 lui a5,0x4d475 + 3bc00676: 0e000737 lui a4,0xe000 + 3bc0067a: e3178793 addi a5,a5,-463 # 4d474e31 <__BL2_END__+0x11861621> + 3bc0067e: b7f5 j 3bc0066a + +000000003bc00680 : + 3bc00680: 030027b7 lui a5,0x3002 + 3bc00684: 0207a823 sw zero,48(a5) # 3002030 <__BSS_SIZE__+0x2ffc420> + 3bc00688: 0207aa23 sw zero,52(a5) + 3bc0068c: 8082 ret + +000000003bc0068e : + 3bc0068e: 7139 addi sp,sp,-64 + 3bc00690: 0000a797 auipc a5,0xa + 3bc00694: dc87b783 ld a5,-568(a5) # 3bc0a458 + 3bc00698: e03e sd a5,0(sp) + 3bc0069a: 0000a797 auipc a5,0xa + 3bc0069e: dc67b783 ld a5,-570(a5) # 3bc0a460 + 3bc006a2: e43e sd a5,8(sp) + 3bc006a4: 0000a797 auipc a5,0xa + 3bc006a8: dc47b783 ld a5,-572(a5) # 3bc0a468 + 3bc006ac: e83e sd a5,16(sp) + 3bc006ae: 0000a517 auipc a0,0xa + 3bc006b2: d4250513 addi a0,a0,-702 # 3bc0a3f0 + 3bc006b6: 0000a797 auipc a5,0xa + 3bc006ba: dba7b783 ld a5,-582(a5) # 3bc0a470 + 3bc006be: f426 sd s1,40(sp) + 3bc006c0: ec3e sd a5,24(sp) + 3bc006c2: fc06 sd ra,56(sp) + 3bc006c4: f822 sd s0,48(sp) + 3bc006c6: f04a sd s2,32(sp) + 3bc006c8: c91ff0ef jal ra,3bc00358 + 3bc006cc: 030027b7 lui a5,0x3002 + 3bc006d0: 577d li a4,-1 + 3bc006d2: 5b84 lw s1,48(a5) + 3bc006d4: 03f00693 li a3,63 + 3bc006d8: db98 sw a4,48(a5) + 3bc006da: dbd4 sw a3,52(a5) + 3bc006dc: 054887b7 lui a5,0x5488 + 3bc006e0: 03003737 lui a4,0x3003 + 3bc006e4: 10178793 addi a5,a5,257 # 5488101 + 3bc006e8: 80f72423 sw a5,-2040(a4) # 3002808 <__BSS_SIZE__+0x2ffcbf8> + 3bc006ec: 030037b7 lui a5,0x3003 + 3bc006f0: 84d72023 sw a3,-1984(a4) + 3bc006f4: 2481 sext.w s1,s1 + 3bc006f6: 4601 li a2,0 + 3bc006f8: 85470713 addi a4,a4,-1964 + 3bc006fc: 01010813 addi a6,sp,16 + 3bc00700: 80c78513 addi a0,a5,-2036 # 300280c <__BSS_SIZE__+0x2ffcbfc> + 3bc00704: 45c1 li a1,16 + 3bc00706: 4026468b lrw a3,a2,sp,0 + 3bc0070a: c314 sw a3,0(a4) + 3bc0070c: ffc72683 lw a3,-4(a4) + 3bc00710: 0741 addi a4,a4,16 + 3bc00712: 2681 sext.w a3,a3 + 3bc00714: 9abd andi a3,a3,-17 + 3bc00716: 0016e693 ori a3,a3,1 + 3bc0071a: fed72623 sw a3,-20(a4) + 3bc0071e: 4106468b lrw a3,a2,a6,0 + 3bc00722: 40a6568b srw a3,a2,a0,0 + 3bc00726: 0611 addi a2,a2,4 + 3bc00728: fcb61fe3 bne a2,a1,3bc00706 + 3bc0072c: 80078613 addi a2,a5,-2048 + 3bc00730: 4218 lw a4,0(a2) + 3bc00732: 76bd lui a3,0xfffef + 3bc00734: eee68693 addi a3,a3,-274 # fffffffffffeeeee <__BL2_END__+0xffffffffc43db6de> + 3bc00738: 2701 sext.w a4,a4 + 3bc0073a: 8f75 and a4,a4,a3 + 3bc0073c: c218 sw a4,0(a2) + 3bc0073e: 00448737 lui a4,0x448 + 3bc00742: 90078613 addi a2,a5,-1792 + 3bc00746: 10170713 addi a4,a4,257 # 448101 <__BSS_SIZE__+0x4424f1> + 3bc0074a: c618 sw a4,8(a2) + 3bc0074c: 03002437 lui s0,0x3002 + 3bc00750: 018006b7 lui a3,0x1800 + 3bc00754: 6841 lui a6,0x10 + 3bc00756: d014 sw a3,32(s0) + 3bc00758: 30980593 addi a1,a6,777 # 10309 <__BSS_SIZE__+0xa6f9> + 3bc0075c: 10040693 addi a3,s0,256 # 3002100 <__BSS_SIZE__+0x2ffc4f0> + 3bc00760: da8c sw a1,48(a3) + 3bc00762: 000205b7 lui a1,0x20 + 3bc00766: 20958593 addi a1,a1,521 # 20209 <__BSS_SIZE__+0x1a5f9> + 3bc0076a: de8c sw a1,56(a3) + 3bc0076c: c658 sw a4,12(a2) + 3bc0076e: 00030637 lui a2,0x30 + 3bc00772: 00960313 addi t1,a2,9 # 30009 <__BSS_SIZE__+0x2a3f9> + 3bc00776: 04642423 sw t1,72(s0) + 3bc0077a: 30960713 addi a4,a2,777 + 3bc0077e: 00040537 lui a0,0x40 + 3bc00782: c878 sw a4,84(s0) + 3bc00784: 00080937 lui s2,0x80 + 3bc00788: 00950713 addi a4,a0,9 # 40009 <__BSS_SIZE__+0x3a3f9> + 3bc0078c: d078 sw a4,100(s0) + 3bc0078e: 00990893 addi a7,s2,9 # 80009 <__BSS_SIZE__+0x7a3f9> + 3bc00792: 08040713 addi a4,s0,128 + 3bc00796: 01172423 sw a7,8(a4) + 3bc0079a: 001208b7 lui a7,0x120 + 3bc0079e: 08a5 addi a7,a7,9 + 3bc007a0: 01172c23 sw a7,24(a4) + 3bc007a4: 000f08b7 lui a7,0xf0 + 3bc007a8: 08a5 addi a7,a7,9 + 3bc007aa: 0316a023 sw a7,32(a3) # 1800020 <__BSS_SIZE__+0x17fa410> + 3bc007ae: 0825 addi a6,a6,9 + 3bc007b0: 03072423 sw a6,40(a4) + 3bc007b4: 10960813 addi a6,a2,265 + 3bc007b8: 07072223 sw a6,100(a4) + 3bc007bc: 30950513 addi a0,a0,777 + 3bc007c0: d768 sw a0,108(a4) + 3bc007c2: 00060537 lui a0,0x60 + 3bc007c6: 04672423 sw t1,72(a4) + 3bc007ca: 20950513 addi a0,a0,521 # 60209 <__BSS_SIZE__+0x5a5f9> + 3bc007ce: cb28 sw a0,80(a4) + 3bc007d0: cf28 sw a0,88(a4) + 3bc007d2: ca8c sw a1,16(a3) + 3bc007d4: 20960613 addi a2,a2,521 + 3bc007d8: c2f0 sw a2,68(a3) + 3bc007da: 00050637 lui a2,0x50 + 3bc007de: 0625 addi a2,a2,9 + 3bc007e0: df10 sw a2,56(a4) + 3bc007e2: d6d0 sw a2,44(a3) + 3bc007e4: 88078793 addi a5,a5,-1920 + 3bc007e8: 5398 lw a4,32(a5) + 3bc007ea: 10090913 addi s2,s2,256 + 3bc007ee: 0124f933 and s2,s1,s2 + 3bc007f2: 2701 sext.w a4,a4 + 3bc007f4: 9b6d andi a4,a4,-5 + 3bc007f6: d398 sw a4,32(a5) + 3bc007f8: 57d8 lw a4,44(a5) + 3bc007fa: 0c800513 li a0,200 + 3bc007fe: 2701 sext.w a4,a4 + 3bc00800: 9b65 andi a4,a4,-7 + 3bc00802: d7d8 sw a4,44(a5) + 3bc00804: 987ff0ef jal ra,3bc0018a + 3bc00808: 03242823 sw s2,48(s0) + 3bc0080c: 70e2 ld ra,56(sp) + 3bc0080e: 02042a23 sw zero,52(s0) + 3bc00812: 7442 ld s0,48(sp) + 3bc00814: 74a2 ld s1,40(sp) + 3bc00816: 7902 ld s2,32(sp) + 3bc00818: 6121 addi sp,sp,64 + 3bc0081a: 8082 ret + +000000003bc0081c : + 3bc0081c: 1141 addi sp,sp,-16 + 3bc0081e: e406 sd ra,8(sp) + 3bc00820: e6fff0ef jal ra,3bc0068e + 3bc00824: 60a2 ld ra,8(sp) + 3bc00826: 0000a517 auipc a0,0xa + 3bc0082a: bda50513 addi a0,a0,-1062 # 3bc0a400 + 3bc0082e: 0141 addi sp,sp,16 + 3bc00830: b625 j 3bc00358 + +000000003bc00832 : + 3bc00832: 8082 ret + +000000003bc00834 : + 3bc00834: 05025737 lui a4,0x5025 + 3bc00838: 475c lw a5,12(a4) + 3bc0083a: 471c lw a5,8(a4) + 3bc0083c: f40006b7 lui a3,0xf4000 + 3bc00840: bff68693 addi a3,a3,-1025 # fffffffff3fffbff <__BL2_END__+0xffffffffb83ec3ef> + 3bc00844: 2781 sext.w a5,a5 + 3bc00846: 8ff5 and a5,a5,a3 + 3bc00848: 0c0006b7 lui a3,0xc000 + 3bc0084c: 8fd5 or a5,a5,a3 + 3bc0084e: c71c sw a5,8(a4) + 3bc00850: 4685 li a3,1 + 3bc00852: 050267b7 lui a5,0x5026 + 3bc00856: 48d7a623 sw a3,1164(a5) # 502648c + 3bc0085a: 4807a623 sw zero,1164(a5) + 3bc0085e: 471c lw a5,8(a4) + 3bc00860: 0c0016b7 lui a3,0xc001 + 3bc00864: 80068693 addi a3,a3,-2048 # c000800 + 3bc00868: 2781 sext.w a5,a5 + 3bc0086a: 8fd5 or a5,a5,a3 + 3bc0086c: c71c sw a5,8(a4) + 3bc0086e: 0000a517 auipc a0,0xa + 3bc00872: ba250513 addi a0,a0,-1118 # 3bc0a410 + 3bc00876: b4cd j 3bc00358 + +000000003bc00878 : + 3bc00878: 1141 addi sp,sp,-16 + 3bc0087a: e022 sd s0,0(sp) + 3bc0087c: 05026437 lui s0,0x5026 + 3bc00880: 0f842583 lw a1,248(s0) # 50260f8 + 3bc00884: 0000a517 auipc a0,0xa + 3bc00888: ba450513 addi a0,a0,-1116 # 3bc0a428 + 3bc0088c: e406 sd ra,8(sp) + 3bc0088e: 2581 sext.w a1,a1 + 3bc00890: ac9ff0ef jal ra,3bc00358 + 3bc00894: 0fc42583 lw a1,252(s0) + 3bc00898: 0000a517 auipc a0,0xa + 3bc0089c: ba850513 addi a0,a0,-1112 # 3bc0a440 + 3bc008a0: 2581 sext.w a1,a1 + 3bc008a2: ab7ff0ef jal ra,3bc00358 + 3bc008a6: 4785 li a5,1 + 3bc008a8: 0cf42023 sw a5,192(s0) + 3bc008ac: 05026737 lui a4,0x5026 + 3bc008b0: 4685 li a3,1 + 3bc008b2: 0c072783 lw a5,192(a4) # 50260c0 + 3bc008b6: 2781 sext.w a5,a5 + 3bc008b8: fed79de3 bne a5,a3,3bc008b2 + 3bc008bc: 0cd72623 sw a3,204(a4) + 3bc008c0: 05026737 lui a4,0x5026 + 3bc008c4: 4685 li a3,1 + 3bc008c6: 0cc72783 lw a5,204(a4) # 50260cc + 3bc008ca: 2781 sext.w a5,a5 + 3bc008cc: fed79de3 bne a5,a3,3bc008c6 + 3bc008d0: 0cd72423 sw a3,200(a4) + 3bc008d4: 05026737 lui a4,0x5026 + 3bc008d8: 4685 li a3,1 + 3bc008da: 0c872783 lw a5,200(a4) # 50260c8 + 3bc008de: 2781 sext.w a5,a5 + 3bc008e0: fed79de3 bne a5,a3,3bc008da + 3bc008e4: 0ed72023 sw a3,224(a4) + 3bc008e8: 050266b7 lui a3,0x5026 + 3bc008ec: 4705 li a4,1 + 3bc008ee: 0e06a783 lw a5,224(a3) # 50260e0 + 3bc008f2: 2781 sext.w a5,a5 + 3bc008f4: fee79de3 bne a5,a4,3bc008ee + 3bc008f8: 05025737 lui a4,0x5025 + 3bc008fc: 08070613 addi a2,a4,128 # 5025080 + 3bc00900: 565c lw a5,44(a2) + 3bc00902: 60a2 ld ra,8(sp) + 3bc00904: 6402 ld s0,0(sp) + 3bc00906: 2781 sext.w a5,a5 + 3bc00908: 0017e793 ori a5,a5,1 + 3bc0090c: d65c sw a5,44(a2) + 3bc0090e: 67ad lui a5,0xb + 3bc00910: b1878793 addi a5,a5,-1256 # ab18 <__BSS_SIZE__+0x4f08> + 3bc00914: c35c sw a5,4(a4) + 3bc00916: 471c lw a5,8(a4) + 3bc00918: 7645 lui a2,0xffff1 + 3bc0091a: 84060613 addi a2,a2,-1984 # ffffffffffff0840 <__BL2_END__+0xffffffffc43dd030> + 3bc0091e: 2781 sext.w a5,a5 + 3bc00920: 8fd1 or a5,a5,a2 + 3bc00922: c71c sw a5,8(a4) + 3bc00924: 0d06a783 lw a5,208(a3) + 3bc00928: 2781 sext.w a5,a5 + 3bc0092a: 9bed andi a5,a5,-5 + 3bc0092c: 0cf6a823 sw a5,208(a3) + 3bc00930: 0141 addi sp,sp,16 + 3bc00932: 8082 ret + +000000003bc00934 : + 3bc00934: 7139 addi sp,sp,-64 + 3bc00936: 0000a797 auipc a5,0xa + 3bc0093a: b427b783 ld a5,-1214(a5) # 3bc0a478 + 3bc0093e: e43e sd a5,8(sp) + 3bc00940: 0000a797 auipc a5,0xa + 3bc00944: b407b783 ld a5,-1216(a5) # 3bc0a480 + 3bc00948: e83e sd a5,16(sp) + 3bc0094a: 400007b7 lui a5,0x40000 + 3bc0094e: 10778793 addi a5,a5,263 # 40000107 <__BL2_END__+0x43ec8f7> + 3bc00952: 07de slli a5,a5,0x17 + 3bc00954: ec3e sd a5,24(sp) + 3bc00956: 41d00793 li a5,1053 + 3bc0095a: 07d6 slli a5,a5,0x15 + 3bc0095c: f03e sd a5,32(sp) + 3bc0095e: 6785 lui a5,0x1 + 3bc00960: 10178793 addi a5,a5,257 # 1101 <__BSS_SIZE__-0x4b0f> + 3bc00964: d43e sw a5,40(sp) + 3bc00966: 478d li a5,3 + 3bc00968: 02f10723 sb a5,46(sp) + 3bc0096c: fc06 sd ra,56(sp) + 3bc0096e: 4701 li a4,0 + 3bc00970: 4781 li a5,0 + 3bc00972: 002c addi a1,sp,8 + 3bc00974: 02400693 li a3,36 + 3bc00978: 80b7460b lrbu a2,a4,a1,0 + 3bc0097c: 0705 addi a4,a4,1 + 3bc0097e: 9fb1 addw a5,a5,a2 + 3bc00980: 3c07b78b extu a5,a5,15,0 + 3bc00984: fed71ae3 bne a4,a3,3bc00978 + 3bc00988: 01900537 lui a0,0x1900 + 3bc0098c: 02800613 li a2,40 + 3bc00990: 40050513 addi a0,a0,1024 # 1900400 <__BSS_SIZE__+0x18fa7f0> + 3bc00994: 02f11623 sh a5,44(sp) + 3bc00998: 0e2000ef jal ra,3bc00a7a + 3bc0099c: 70e2 ld ra,56(sp) + 3bc0099e: 6121 addi sp,sp,64 + 3bc009a0: 8082 ret + +000000003bc009a2 : + 3bc009a2: 4501 li a0,0 + 3bc009a4: 8082 ret + +000000003bc009a6 : + 3bc009a6: 00050023 sb zero,0(a0) + 3bc009aa: 872a mv a4,a0 + 3bc009ac: 0000a317 auipc t1,0xa + 3bc009b0: adc30313 addi t1,t1,-1316 # 3bc0a488 + 3bc009b4: 4e65 li t3,25 + 3bc009b6: 02c5f7b3 remu a5,a1,a2 + 3bc009ba: 80f3478b lrbu a5,t1,a5,0 + 3bc009be: ce91 beqz a3,3bc009da + 3bc009c0: f9f7881b addiw a6,a5,-97 + 3bc009c4: 0ff87813 andi a6,a6,255 + 3bc009c8: 02000893 li a7,32 + 3bc009cc: 010e7363 bgeu t3,a6,3bc009d2 + 3bc009d0: 4881 li a7,0 + 3bc009d2: 411787bb subw a5,a5,a7 + 3bc009d6: 0ff7f793 andi a5,a5,255 + 3bc009da: 0817578b sbib a5,(a4),1,0 + 3bc009de: 02c5d7b3 divu a5,a1,a2 + 3bc009e2: 02c5f463 bgeu a1,a2,3bc00a0a + 3bc009e6: 87aa mv a5,a0 + 3bc009e8: 86ba mv a3,a4 + 3bc009ea: 02d7e263 bltu a5,a3,3bc00a0e + 3bc009ee: fff50693 addi a3,a0,-1 + 3bc009f2: 4781 li a5,0 + 3bc009f4: 00d76863 bltu a4,a3,3bc00a04 + 3bc009f8: 40a707b3 sub a5,a4,a0 + 3bc009fc: 0785 addi a5,a5,1 + 3bc009fe: 8385 srli a5,a5,0x1 + 3bc00a00: 40f007b3 neg a5,a5 + 3bc00a04: 00f70533 add a0,a4,a5 + 3bc00a08: 8082 ret + 3bc00a0a: 85be mv a1,a5 + 3bc00a0c: b76d j 3bc009b6 + 3bc00a0e: 0006c583 lbu a1,0(a3) + 3bc00a12: 0007c603 lbu a2,0(a5) + 3bc00a16: 1817d58b sbia a1,(a5),1,0 + 3bc00a1a: 19f6d60b sbia a2,(a3),-1,0 + 3bc00a1e: b7f1 j 3bc009ea + +000000003bc00a20 : + 3bc00a20: 0ff5f813 andi a6,a1,255 + 3bc00a24: 87aa mv a5,a0 + 3bc00a26: 0077f713 andi a4,a5,7 + 3bc00a2a: c719 beqz a4,3bc00a38 + 3bc00a2c: e211 bnez a2,3bc00a30 + 3bc00a2e: 8082 ret + 3bc00a30: 1817d80b sbia a6,(a5),1,0 + 3bc00a34: 167d addi a2,a2,-1 + 3bc00a36: bfc5 j 3bc00a26 + 3bc00a38: ca05 beqz a2,3bc00a68 + 3bc00a3a: 0000a697 auipc a3,0xa + 3bc00a3e: a766b683 ld a3,-1418(a3) # 3bc0a4b0 + 3bc00a42: 0ff5f593 andi a1,a1,255 + 3bc00a46: 02d585b3 mul a1,a1,a3 + 3bc00a4a: 489d li a7,7 + 3bc00a4c: 4681 li a3,0 + 3bc00a4e: 40d60333 sub t1,a2,a3 + 3bc00a52: 0068ec63 bltu a7,t1,3bc00a6a + 3bc00a56: 00365693 srli a3,a2,0x3 + 3bc00a5a: 55e1 li a1,-8 + 3bc00a5c: 06d7978b addsl a5,a5,a3,3 + 3bc00a60: 20b6960b mula a2,a3,a1 + 3bc00a64: 00e61763 bne a2,a4,3bc00a72 + 3bc00a68: 8082 ret + 3bc00a6a: 60d7d58b srd a1,a5,a3,0 + 3bc00a6e: 06a1 addi a3,a3,8 + 3bc00a70: bff9 j 3bc00a4e + 3bc00a72: 00e7d80b srb a6,a5,a4,0 + 3bc00a76: 0705 addi a4,a4,1 + 3bc00a78: b7f5 j 3bc00a64 + +000000003bc00a7a : + 3bc00a7a: 00b547b3 xor a5,a0,a1 + 3bc00a7e: 8b9d andi a5,a5,7 + 3bc00a80: e7a9 bnez a5,3bc00aca + 3bc00a82: 87aa mv a5,a0 + 3bc00a84: 0077f713 andi a4,a5,7 + 3bc00a88: cb09 beqz a4,3bc00a9a + 3bc00a8a: e211 bnez a2,3bc00a8e + 3bc00a8c: 8082 ret + 3bc00a8e: 9815c70b lbuia a4,(a1),1,0 + 3bc00a92: 167d addi a2,a2,-1 + 3bc00a94: 1817d70b sbia a4,(a5),1,0 + 3bc00a98: b7f5 j 3bc00a84 + 3bc00a9a: 469d li a3,7 + 3bc00a9c: e619 bnez a2,3bc00aaa + 3bc00a9e: 8082 ret + 3bc00aa0: 60e5c80b lrd a6,a1,a4,0 + 3bc00aa4: 60e7d80b srd a6,a5,a4,0 + 3bc00aa8: 0721 addi a4,a4,8 + 3bc00aaa: 40e60833 sub a6,a2,a4 + 3bc00aae: ff06e9e3 bltu a3,a6,3bc00aa0 + 3bc00ab2: 00365713 srli a4,a2,0x3 + 3bc00ab6: 56e1 li a3,-8 + 3bc00ab8: 20d7160b mula a2,a4,a3 + 3bc00abc: 070e slli a4,a4,0x3 + 3bc00abe: 97ba add a5,a5,a4 + 3bc00ac0: 95ba add a1,a1,a4 + 3bc00ac2: 4701 li a4,0 + 3bc00ac4: 00e61563 bne a2,a4,3bc00ace + 3bc00ac8: 8082 ret + 3bc00aca: 87aa mv a5,a0 + 3bc00acc: bfdd j 3bc00ac2 + 3bc00ace: 80e5c68b lrbu a3,a1,a4,0 + 3bc00ad2: 00e7d68b srb a3,a5,a4,0 + 3bc00ad6: 0705 addi a4,a4,1 + 3bc00ad8: b7f5 j 3bc00ac4 + +000000003bc00ada : + 3bc00ada: 40b50733 sub a4,a0,a1 + 3bc00ade: 87aa mv a5,a0 + 3bc00ae0: 00c76363 bltu a4,a2,3bc00ae6 + 3bc00ae4: bf59 j 3bc00a7a + 3bc00ae6: 95b2 add a1,a1,a2 + 3bc00ae8: 9532 add a0,a0,a2 + 3bc00aea: 00f51363 bne a0,a5,3bc00af0 + 3bc00aee: 8082 ret + 3bc00af0: 89f5c70b lbuib a4,(a1),-1,0 + 3bc00af4: 09f5570b sbib a4,(a0),-1,0 + 3bc00af8: bfcd j 3bc00aea + +000000003bc00afa : + 3bc00afa: 0e0007b7 lui a5,0xe000 + 3bc00afe: 4794 lw a3,8(a5) + 3bc00b00: 1141 addi sp,sp,-16 + 3bc00b02: e022 sd s0,0(sp) + 3bc00b04: e406 sd ra,8(sp) + 3bc00b06: 6709 lui a4,0x2 + 3bc00b08: 842a mv s0,a0 + 3bc00b0a: 00e6e463 bltu a3,a4,3bc00b12 + 3bc00b0e: 0007a423 sw zero,8(a5) # e000008 + 3bc00b12: 0e0007b7 lui a5,0xe000 + 3bc00b16: 4798 lw a4,8(a5) + 3bc00b18: 0017069b addiw a3,a4,1 + 3bc00b1c: c794 sw a3,8(a5) + 3bc00b1e: 0c0006b7 lui a3,0xc000 + 3bc00b22: 10e6d40b surb s0,a3,a4,0 + 3bc00b26: 4709 li a4,2 + 3bc00b28: 00b74d63 blt a4,a1,3bc00b42 + 3bc00b2c: 0007c783 lbu a5,0(a5) # e000000 + 3bc00b30: 8b91 andi a5,a5,4 + 3bc00b32: eb81 bnez a5,3bc00b42 + 3bc00b34: 0ff47513 andi a0,s0,255 + 3bc00b38: f6cff0ef jal ra,3bc002a4 + 3bc00b3c: 00055363 bgez a0,3bc00b42 + 3bc00b40: 547d li s0,-1 + 3bc00b42: 60a2 ld ra,8(sp) + 3bc00b44: 8522 mv a0,s0 + 3bc00b46: 6402 ld s0,0(sp) + 3bc00b48: 0141 addi sp,sp,16 + 3bc00b4a: 8082 ret + +000000003bc00b4c : + 3bc00b4c: 4701 li a4,0 + 3bc00b4e: 80e5478b lrbu a5,a0,a4,0 + 3bc00b52: 80e5c68b lrbu a3,a1,a4,0 + 3bc00b56: 00d78563 beq a5,a3,3bc00b60 + 3bc00b5a: 40d7853b subw a0,a5,a3 + 3bc00b5e: 8082 ret + 3bc00b60: 0705 addi a4,a4,1 + 3bc00b62: f7f5 bnez a5,3bc00b4e + 3bc00b64: 4501 li a0,0 + 3bc00b66: 8082 ret + +000000003bc00b68 : + 3bc00b68: 87aa mv a5,a0 + 3bc00b6a: 0007c703 lbu a4,0(a5) + 3bc00b6e: e701 bnez a4,3bc00b76 + 3bc00b70: 40a78533 sub a0,a5,a0 + 3bc00b74: 8082 ret + 3bc00b76: 0785 addi a5,a5,1 + 3bc00b78: bfcd j 3bc00b6a + +000000003bc00b7a : + 3bc00b7a: 1101 addi sp,sp,-32 + 3bc00b7c: 00c007b7 lui a5,0xc00 + 3bc00b80: e822 sd s0,16(sp) + 3bc00b82: e426 sd s1,8(sp) + 3bc00b84: e04a sd s2,0(sp) + 3bc00b86: 1c55370b extu a4,a0,7,5 + 3bc00b8a: 4007879b addiw a5,a5,1024 + 3bc00b8e: 0155541b srliw s0,a0,0x15 + 3bc00b92: 5105390b extu s2,a0,20,16 + 3bc00b96: 1045348b extu s1,a0,4,4 + 3bc00b9a: 3c85350b extu a0,a0,15,8 + 3bc00b9e: 9d3d addw a0,a0,a5 + 3bc00ba0: 0025151b slliw a0,a0,0x2 + 3bc00ba4: ec06 sd ra,24(sp) + 3bc00ba6: 7c05350b extu a0,a0,31,0 + 3bc00baa: c118 sw a4,0(a0) + 3bc00bac: 4529 li a0,10 + 3bc00bae: ddcff0ef jal ra,3bc0018a + 3bc00bb2: 00447793 andi a5,s0,4 + 3bc00bb6: eb9d bnez a5,3bc00bec + 3bc00bb8: 678d lui a5,0x3 + 3bc00bba: 881d andi s0,s0,7 + 3bc00bbc: 0207879b addiw a5,a5,32 + 3bc00bc0: 9c3d addw s0,s0,a5 + 3bc00bc2: 00c4141b slliw s0,s0,0xc + 3bc00bc6: 0504041b addiw s0,s0,80 + 3bc00bca: 7c04340b extu s0,s0,31,0 + 3bc00bce: 4008 lw a0,0(s0) + 3bc00bd0: 0125553b srlw a0,a0,s2 + 3bc00bd4: 00157793 andi a5,a0,1 + 3bc00bd8: 853e mv a0,a5 + 3bc00bda: c099 beqz s1,3bc00be0 + 3bc00bdc: 0017c513 xori a0,a5,1 + 3bc00be0: 60e2 ld ra,24(sp) + 3bc00be2: 6442 ld s0,16(sp) + 3bc00be4: 64a2 ld s1,8(sp) + 3bc00be6: 6902 ld s2,0(sp) + 3bc00be8: 6105 addi sp,sp,32 + 3bc00bea: 8082 ret + 3bc00bec: 05021437 lui s0,0x5021 + 3bc00bf0: 05040413 addi s0,s0,80 # 5021050 + 3bc00bf4: bfd9 j 3bc00bca + +000000003bc00bf6 : + 3bc00bf6: 030507b7 lui a5,0x3050 + 3bc00bfa: 1047a783 lw a5,260(a5) # 3050104 <__BSS_SIZE__+0x304a4f4> + 3bc00bfe: 0007851b sext.w a0,a5 + 3bc00c02: 8b91 andi a5,a5,4 + 3bc00c04: c391 beqz a5,3bc00c08 + 3bc00c06: bf95 j 3bc00b7a + 3bc00c08: 030007b7 lui a5,0x3000 + 3bc00c0c: 43c8 lw a0,4(a5) + 3bc00c0e: 2085350b extu a0,a0,8,8 + 3bc00c12: 8082 ret + +000000003bc00c14 : + 3bc00c14: 1141 addi sp,sp,-16 + 3bc00c16: e406 sd ra,8(sp) + 3bc00c18: df4ff0ef jal ra,3bc0020c + 3bc00c1c: 60a2 ld ra,8(sp) + 3bc00c1e: 3e75051b addiw a0,a0,999 + 3bc00c22: 3e800793 li a5,1000 + 3bc00c26: 02f5553b divuw a0,a0,a5 + 3bc00c2a: 0141 addi sp,sp,16 + 3bc00c2c: 8082 ret + +000000003bc00c2e : + 3bc00c2e: 7179 addi sp,sp,-48 + 3bc00c30: 8732 mv a4,a2 + 3bc00c32: 2601 sext.w a2,a2 + 3bc00c34: f022 sd s0,32(sp) + 3bc00c36: ec26 sd s1,24(sp) + 3bc00c38: e03a sd a4,0(sp) + 3bc00c3a: f406 sd ra,40(sp) + 3bc00c3c: 84aa mv s1,a0 + 3bc00c3e: e42e sd a1,8(sp) + 3bc00c40: 295030ef jal ra,3bc046d4 + 3bc00c44: 4785 li a5,1 + 3bc00c46: f8d1470b ldd a4,a3,(sp),0,4 + 3bc00c4a: 5479 li s0,-2 + 3bc00c4c: 00f51363 bne a0,a5,3bc00c52 + 3bc00c50: 4401 li s0,0 + 3bc00c52: 8626 mv a2,s1 + 3bc00c54: 85a2 mv a1,s0 + 3bc00c56: 0000a517 auipc a0,0xa + 3bc00c5a: 86250513 addi a0,a0,-1950 # 3bc0a4b8 + 3bc00c5e: efaff0ef jal ra,3bc00358 + 3bc00c62: 70a2 ld ra,40(sp) + 3bc00c64: 8522 mv a0,s0 + 3bc00c66: 7402 ld s0,32(sp) + 3bc00c68: 64e2 ld s1,24(sp) + 3bc00c6a: 6145 addi sp,sp,48 + 3bc00c6c: 8082 ret + +000000003bc00c6e : + 3bc00c6e: 1101 addi sp,sp,-32 + 3bc00c70: 0000d617 auipc a2,0xd + 3bc00c74: f9060613 addi a2,a2,-112 # 3bc0dc00 <__BSS_START__> + 3bc00c78: e42a sd a0,8(sp) + 3bc00c7a: 6585 lui a1,0x1 + 3bc00c7c: 0000a517 auipc a0,0xa + 3bc00c80: 85c50513 addi a0,a0,-1956 # 3bc0a4d8 + 3bc00c84: ec06 sd ra,24(sp) + 3bc00c86: e822 sd s0,16(sp) + 3bc00c88: ed0ff0ef jal ra,3bc00358 + 3bc00c8c: c87ff097 auipc ra,0xc87ff + 3bc00c90: 394080e7 jalr 916(ra) # 4400020 + 3bc00c94: 67b5 lui a5,0xd + 3bc00c96: 2501 sext.w a0,a0 + 3bc00c98: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00c9c: 66a2 ld a3,8(sp) + 3bc00c9e: 6605 lui a2,0x1 + 3bc00ca0: 04f51463 bne a0,a5,3bc00ce8 + 3bc00ca4: 3c0027b7 lui a5,0x3c002 + 3bc00ca8: 0e07a583 lw a1,224(a5) # 3c0020e0 <__BL2_END__+0x3ee8d0> + 3bc00cac: 0000d517 auipc a0,0xd + 3bc00cb0: f5450513 addi a0,a0,-172 # 3bc0dc00 <__BSS_START__> + 3bc00cb4: f7bff0ef jal ra,3bc00c2e + 3bc00cb8: 02054463 bltz a0,3bc00ce0 + 3bc00cbc: 0000d417 auipc s0,0xd + 3bc00cc0: f4440413 addi s0,s0,-188 # 3bc0dc00 <__BSS_START__> + 3bc00cc4: 6018 ld a4,0(s0) + 3bc00cc6: 0000a797 auipc a5,0xa + 3bc00cca: c6a7b783 ld a5,-918(a5) # 3bc0a930 + 3bc00cce: 02f70a63 beq a4,a5,3bc00d02 + 3bc00cd2: 0000a517 auipc a0,0xa + 3bc00cd6: 81e50513 addi a0,a0,-2018 # 3bc0a4f0 + 3bc00cda: e7eff0ef jal ra,3bc00358 + 3bc00cde: 557d li a0,-1 + 3bc00ce0: 60e2 ld ra,24(sp) + 3bc00ce2: 6442 ld s0,16(sp) + 3bc00ce4: 6105 addi sp,sp,32 + 3bc00ce6: 8082 ret + 3bc00ce8: 3c0027b7 lui a5,0x3c002 + 3bc00cec: 0e07a583 lw a1,224(a5) # 3c0020e0 <__BL2_END__+0x3ee8d0> + 3bc00cf0: 0000d517 auipc a0,0xd + 3bc00cf4: f1050513 addi a0,a0,-240 # 3bc0dc00 <__BSS_START__> + 3bc00cf8: c87ff097 auipc ra,0xc87ff + 3bc00cfc: 368080e7 jalr 872(ra) # 4400060 + 3bc00d00: bf65 j 3bc00cb8 + 3bc00d02: 6585 lui a1,0x1 + 3bc00d04: 15d1 addi a1,a1,-12 + 3bc00d06: 0000d517 auipc a0,0xd + 3bc00d0a: f0650513 addi a0,a0,-250 # 3bc0dc0c <__BSS_START__+0xc> + 3bc00d0e: c87ff097 auipc ra,0xc87ff + 3bc00d12: 392080e7 jalr 914(ra) # 44000a0 + 3bc00d16: 4410 lw a2,8(s0) + 3bc00d18: 0005059b sext.w a1,a0 + 3bc00d1c: 00b60963 beq a2,a1,3bc00d2e + 3bc00d20: 00009517 auipc a0,0x9 + 3bc00d24: 7e850513 addi a0,a0,2024 # 3bc0a508 + 3bc00d28: e30ff0ef jal ra,3bc00358 + 3bc00d2c: bf4d j 3bc00cde + 3bc00d2e: 00009517 auipc a0,0x9 + 3bc00d32: 7fa50513 addi a0,a0,2042 # 3bc0a528 + 3bc00d36: e22ff0ef jal ra,3bc00358 + 3bc00d3a: 4501 li a0,0 + 3bc00d3c: b755 j 3bc00ce0 + +000000003bc00d3e : + 3bc00d3e: 1101 addi sp,sp,-32 + 3bc00d40: e822 sd s0,16(sp) + 3bc00d42: 0000d417 auipc s0,0xd + 3bc00d46: ebe40413 addi s0,s0,-322 # 3bc0dc00 <__BSS_START__> + 3bc00d4a: 4c10 lw a2,24(s0) + 3bc00d4c: 484c lw a1,20(s0) + 3bc00d4e: e42a sd a0,8(sp) + 3bc00d50: 00009517 auipc a0,0x9 + 3bc00d54: 7e050513 addi a0,a0,2016 # 3bc0a530 + 3bc00d58: ec06 sd ra,24(sp) + 3bc00d5a: dfeff0ef jal ra,3bc00358 + 3bc00d5e: 4c18 lw a4,24(s0) + 3bc00d60: 6791 lui a5,0x4 + 3bc00d62: 66a2 ld a3,8(sp) + 3bc00d64: 00f76363 bltu a4,a5,3bc00d6a + 3bc00d68: cc1c sw a5,24(s0) + 3bc00d6a: e436 sd a3,8(sp) + 3bc00d6c: c87ff097 auipc ra,0xc87ff + 3bc00d70: 2b4080e7 jalr 692(ra) # 4400020 + 3bc00d74: 67b5 lui a5,0xd + 3bc00d76: 2501 sext.w a0,a0 + 3bc00d78: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00d7c: 66a2 ld a3,8(sp) + 3bc00d7e: 01846603 lwu a2,24(s0) + 3bc00d82: 484c lw a1,20(s0) + 3bc00d84: 04f51363 bne a0,a5,3bc00dca + 3bc00d88: 0000e517 auipc a0,0xe + 3bc00d8c: e7850513 addi a0,a0,-392 # 3bc0ec00 + 3bc00d90: e9fff0ef jal ra,3bc00c2e + 3bc00d94: 02054763 bltz a0,3bc00dc2 + 3bc00d98: 4c0c lw a1,24(s0) + 3bc00d9a: 0000e517 auipc a0,0xe + 3bc00d9e: e6650513 addi a0,a0,-410 # 3bc0ec00 + 3bc00da2: c87ff097 auipc ra,0xc87ff + 3bc00da6: 2fe080e7 jalr 766(ra) # 44000a0 + 3bc00daa: 4810 lw a2,16(s0) + 3bc00dac: 0005059b sext.w a1,a0 + 3bc00db0: 02b60663 beq a2,a1,3bc00ddc + 3bc00db4: 00009517 auipc a0,0x9 + 3bc00db8: 79450513 addi a0,a0,1940 # 3bc0a548 + 3bc00dbc: d9cff0ef jal ra,3bc00358 + 3bc00dc0: 557d li a0,-1 + 3bc00dc2: 60e2 ld ra,24(sp) + 3bc00dc4: 6442 ld s0,16(sp) + 3bc00dc6: 6105 addi sp,sp,32 + 3bc00dc8: 8082 ret + 3bc00dca: 0000e517 auipc a0,0xe + 3bc00dce: e3650513 addi a0,a0,-458 # 3bc0ec00 + 3bc00dd2: c87ff097 auipc ra,0xc87ff + 3bc00dd6: 28e080e7 jalr 654(ra) # 4400060 + 3bc00dda: bf6d j 3bc00d94 + 3bc00ddc: 00009517 auipc a0,0x9 + 3bc00de0: 79450513 addi a0,a0,1940 # 3bc0a570 + 3bc00de4: d74ff0ef jal ra,3bc00358 + 3bc00de8: 4501 li a0,0 + 3bc00dea: bfe1 j 3bc00dc2 + +000000003bc00dec : + 3bc00dec: 7179 addi sp,sp,-48 + 3bc00dee: ec26 sd s1,24(sp) + 3bc00df0: 74cd lui s1,0xffff3 + 3bc00df2: e84a sd s2,16(sp) + 3bc00df4: e44e sd s3,8(sp) + 3bc00df6: e052 sd s4,0(sp) + 3bc00df8: f406 sd ra,40(sp) + 3bc00dfa: f022 sd s0,32(sp) + 3bc00dfc: 1604849b addiw s1,s1,352 + 3bc00e00: 4995 li s3,5 + 3bc00e02: 4a05 li s4,1 + 3bc00e04: 00009917 auipc s2,0x9 + 3bc00e08: 77490913 addi s2,s2,1908 # 3bc0a578 + 3bc00e0c: 4401 li s0,0 + 3bc00e0e: c87ff097 auipc ra,0xc87ff + 3bc00e12: 2b2080e7 jalr 690(ra) # 44000c0 + 3bc00e16: 00a45e63 bge s0,a0,3bc00e32 + 3bc00e1a: 8522 mv a0,s0 + 3bc00e1c: e53ff0ef jal ra,3bc00c6e + 3bc00e20: 00055463 bgez a0,3bc00e28 + 3bc00e24: 2405 addiw s0,s0,1 + 3bc00e26: b7e5 j 3bc00e0e + 3bc00e28: 8522 mv a0,s0 + 3bc00e2a: f15ff0ef jal ra,3bc00d3e + 3bc00e2e: fe054be3 bltz a0,3bc00e24 + 3bc00e32: c87ff097 auipc ra,0xc87ff + 3bc00e36: 28e080e7 jalr 654(ra) # 44000c0 + 3bc00e3a: 02a45f63 bge s0,a0,3bc00e78 + 3bc00e3e: dd7ff0ef jal ra,3bc00c14 + 3bc00e42: 0000b417 auipc s0,0xb + 3bc00e46: 90e40413 addi s0,s0,-1778 # 3bc0b750 + 3bc00e4a: 601c ld a5,0(s0) + 3bc00e4c: 00a79123 sh a0,2(a5) + 3bc00e50: 0000e517 auipc a0,0xe + 3bc00e54: db050513 addi a0,a0,-592 # 3bc0ec00 + 3bc00e58: 34a070ef jal ra,3bc081a2 + 3bc00e5c: db9ff0ef jal ra,3bc00c14 + 3bc00e60: 601c ld a5,0(s0) + 3bc00e62: 70a2 ld ra,40(sp) + 3bc00e64: 7402 ld s0,32(sp) + 3bc00e66: 00a79223 sh a0,4(a5) + 3bc00e6a: 64e2 ld s1,24(sp) + 3bc00e6c: 6942 ld s2,16(sp) + 3bc00e6e: 69a2 ld s3,8(sp) + 3bc00e70: 6a02 ld s4,0(sp) + 3bc00e72: 4501 li a0,0 + 3bc00e74: 6145 addi sp,sp,48 + 3bc00e76: 8082 ret + 3bc00e78: c87ff097 auipc ra,0xc87ff + 3bc00e7c: 1a8080e7 jalr 424(ra) # 4400020 + 3bc00e80: 9d25 addw a0,a0,s1 + 3bc00e82: 85a2 mv a1,s0 + 3bc00e84: 00a9ef63 bltu s3,a0,3bc00ea2 + 3bc00e88: 00aa1533 sll a0,s4,a0 + 3bc00e8c: 02957513 andi a0,a0,41 + 3bc00e90: c909 beqz a0,3bc00ea2 + 3bc00e92: 854a mv a0,s2 + 3bc00e94: cc4ff0ef jal ra,3bc00358 + 3bc00e98: c87ff097 auipc ra,0xc87ff + 3bc00e9c: 1e8080e7 jalr 488(ra) # 4400080 + 3bc00ea0: b7b5 j 3bc00e0c + 3bc00ea2: 00009517 auipc a0,0x9 + 3bc00ea6: 6fe50513 addi a0,a0,1790 # 3bc0a5a0 + 3bc00eaa: caeff0ef jal ra,3bc00358 + 3bc00eae: f0cff0ef jal ra,3bc005ba + +000000003bc00eb2 : + 3bc00eb2: 7179 addi sp,sp,-48 + 3bc00eb4: e84a sd s2,16(sp) + 3bc00eb6: 0000b917 auipc s2,0xb + 3bc00eba: 89a90913 addi s2,s2,-1894 # 3bc0b750 + 3bc00ebe: 00093783 ld a5,0(s2) + 3bc00ec2: f022 sd s0,32(sp) + 3bc00ec4: 0000d417 auipc s0,0xd + 3bc00ec8: d3c40413 addi s0,s0,-708 # 3bc0dc00 <__BSS_START__> + 3bc00ecc: 0047d703 lhu a4,4(a5) + 3bc00ed0: 5414 lw a3,40(s0) + 3bc00ed2: 5450 lw a2,44(s0) + 3bc00ed4: 504c lw a1,36(s0) + 3bc00ed6: ec26 sd s1,24(sp) + 3bc00ed8: f406 sd ra,40(sp) + 3bc00eda: e44e sd s3,8(sp) + 3bc00edc: 00e79323 sh a4,6(a5) + 3bc00ee0: 84aa mv s1,a0 + 3bc00ee2: 00009517 auipc a0,0x9 + 3bc00ee6: 6e650513 addi a0,a0,1766 # 3bc0a5c8 + 3bc00eea: c6eff0ef jal ra,3bc00358 + 3bc00eee: 545c lw a5,44(s0) + 3bc00ef0: 00009517 auipc a0,0x9 + 3bc00ef4: 6f050513 addi a0,a0,1776 # 3bc0a5e0 + 3bc00ef8: 10078763 beqz a5,3bc01006 + 3bc00efc: 800006b7 lui a3,0x80000 + 3bc00f00: 00f6863b addw a2,a3,a5 + 3bc00f04: 08000737 lui a4,0x8000 + 3bc00f08: 00e66b63 bltu a2,a4,3bc00f1e + 3bc00f0c: 85be mv a1,a5 + 3bc00f0e: 00009517 auipc a0,0x9 + 3bc00f12: 6ea50513 addi a0,a0,1770 # 3bc0a5f8 + 3bc00f16: c42ff0ef jal ra,3bc00358 + 3bc00f1a: ea0ff0ef jal ra,3bc005ba + 3bc00f1e: 540c lw a1,40(s0) + 3bc00f20: 9fad addw a5,a5,a1 + 3bc00f22: 9fb5 addw a5,a5,a3 + 3bc00f24: 00e7e763 bltu a5,a4,3bc00f32 + 3bc00f28: 00009517 auipc a0,0x9 + 3bc00f2c: 70050513 addi a0,a0,1792 # 3bc0a628 + 3bc00f30: b7dd j 3bc00f16 + 3bc00f32: c87ff097 auipc ra,0xc87ff + 3bc00f36: 0ee080e7 jalr 238(ra) # 4400020 + 3bc00f3a: 67b5 lui a5,0xd + 3bc00f3c: 0005071b sext.w a4,a0 + 3bc00f40: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00f44: 504c lw a1,36(s0) + 3bc00f46: 02846603 lwu a2,40(s0) + 3bc00f4a: 02c46503 lwu a0,44(s0) + 3bc00f4e: 86a6 mv a3,s1 + 3bc00f50: 04f71263 bne a4,a5,3bc00f94 + 3bc00f54: cdbff0ef jal ra,3bc00c2e + 3bc00f58: 84aa mv s1,a0 + 3bc00f5a: 02054563 bltz a0,3bc00f84 + 3bc00f5e: 540c lw a1,40(s0) + 3bc00f60: 02c46503 lwu a0,44(s0) + 3bc00f64: c87ff097 auipc ra,0xc87ff + 3bc00f68: 13c080e7 jalr 316(ra) # 44000a0 + 3bc00f6c: 5010 lw a2,32(s0) + 3bc00f6e: 0005059b sext.w a1,a0 + 3bc00f72: 02b60663 beq a2,a1,3bc00f9e + 3bc00f76: 00009517 auipc a0,0x9 + 3bc00f7a: 6e250513 addi a0,a0,1762 # 3bc0a658 + 3bc00f7e: bdaff0ef jal ra,3bc00358 + 3bc00f82: 54fd li s1,-1 + 3bc00f84: 70a2 ld ra,40(sp) + 3bc00f86: 7402 ld s0,32(sp) + 3bc00f88: 6942 ld s2,16(sp) + 3bc00f8a: 69a2 ld s3,8(sp) + 3bc00f8c: 8526 mv a0,s1 + 3bc00f8e: 64e2 ld s1,24(sp) + 3bc00f90: 6145 addi sp,sp,48 + 3bc00f92: 8082 ret + 3bc00f94: c87ff097 auipc ra,0xc87ff + 3bc00f98: 0cc080e7 jalr 204(ra) # 4400060 + 3bc00f9c: bf75 j 3bc00f58 + 3bc00f9e: 02846583 lwu a1,40(s0) + 3bc00fa2: 02c46503 lwu a0,44(s0) + 3bc00fa6: 3c0026b7 lui a3,0x3c002 + 3bc00faa: 4601 li a2,0 + 3bc00fac: 9f7ff0ef jal ra,3bc009a2 + 3bc00fb0: 84aa mv s1,a0 + 3bc00fb2: 00055a63 bgez a0,3bc00fc6 + 3bc00fb6: 85aa mv a1,a0 + 3bc00fb8: 00009517 auipc a0,0x9 + 3bc00fbc: 6c850513 addi a0,a0,1736 # 3bc0a680 + 3bc00fc0: b98ff0ef jal ra,3bc00358 + 3bc00fc4: b7c1 j 3bc00f84 + 3bc00fc6: 02846583 lwu a1,40(s0) + 3bc00fca: 02c46503 lwu a0,44(s0) + 3bc00fce: 0e0009b7 lui s3,0xe000 + 3bc00fd2: 984ff0ef jal ra,3bc00156 + 3bc00fd6: 07c9a483 lw s1,124(s3) # e00007c + 3bc00fda: 95bff0ef jal ra,3bc00934 + 3bc00fde: c37ff0ef jal ra,3bc00c14 + 3bc00fe2: 00093783 ld a5,0(s2) + 3bc00fe6: 2481 sext.w s1,s1 + 3bc00fe8: 00a79323 sh a0,6(a5) + 3bc00fec: 0abc17b7 lui a5,0xabc1 + 3bc00ff0: def78793 addi a5,a5,-529 # abc0def + 3bc00ff4: 00f49d63 bne s1,a5,3bc0100e + 3bc00ff8: 545c lw a5,44(s0) + 3bc00ffa: 06f9ae23 sw a5,124(s3) + 3bc00ffe: 00009517 auipc a0,0x9 + 3bc01002: 6a250513 addi a0,a0,1698 # 3bc0a6a0 + 3bc01006: b52ff0ef jal ra,3bc00358 + 3bc0100a: 4481 li s1,0 + 3bc0100c: bfa5 j 3bc00f84 + 3bc0100e: 02c46503 lwu a0,44(s0) + 3bc01012: ddaff0ef jal ra,3bc005ec + 3bc01016: b7e5 j 3bc00ffe + +000000003bc01018 : + 3bc01018: 1101 addi sp,sp,-32 + 3bc0101a: e822 sd s0,16(sp) + 3bc0101c: 0000d417 auipc s0,0xd + 3bc01020: be440413 addi s0,s0,-1052 # 3bc0dc00 <__BSS_START__> + 3bc01024: e04a sd s2,0(sp) + 3bc01026: 5c14 lw a3,56(s0) + 3bc01028: 5c50 lw a2,60(s0) + 3bc0102a: 892e mv s2,a1 + 3bc0102c: 584c lw a1,52(s0) + 3bc0102e: e426 sd s1,8(sp) + 3bc01030: 84aa mv s1,a0 + 3bc01032: 00009517 auipc a0,0x9 + 3bc01036: 67650513 addi a0,a0,1654 # 3bc0a6a8 + 3bc0103a: ec06 sd ra,24(sp) + 3bc0103c: b1cff0ef jal ra,3bc00358 + 3bc01040: 5c5c lw a5,60(s0) + 3bc01042: eb89 bnez a5,3bc01054 + 3bc01044: 00009517 auipc a0,0x9 + 3bc01048: 67c50513 addi a0,a0,1660 # 3bc0a6c0 + 3bc0104c: b0cff0ef jal ra,3bc00358 + 3bc01050: 4481 li s1,0 + 3bc01052: a069 j 3bc010dc + 3bc01054: 800006b7 lui a3,0x80000 + 3bc01058: 00f6863b addw a2,a3,a5 + 3bc0105c: 08000737 lui a4,0x8000 + 3bc01060: 00e66b63 bltu a2,a4,3bc01076 + 3bc01064: 85be mv a1,a5 + 3bc01066: 00009517 auipc a0,0x9 + 3bc0106a: 66a50513 addi a0,a0,1642 # 3bc0a6d0 + 3bc0106e: aeaff0ef jal ra,3bc00358 + 3bc01072: d48ff0ef jal ra,3bc005ba + 3bc01076: 5c0c lw a1,56(s0) + 3bc01078: 9fad addw a5,a5,a1 + 3bc0107a: 9fb5 addw a5,a5,a3 + 3bc0107c: 00e7e763 bltu a5,a4,3bc0108a + 3bc01080: 00009517 auipc a0,0x9 + 3bc01084: 68050513 addi a0,a0,1664 # 3bc0a700 + 3bc01088: b7dd j 3bc0106e + 3bc0108a: c87ff097 auipc ra,0xc87ff + 3bc0108e: f96080e7 jalr -106(ra) # 4400020 + 3bc01092: 67b5 lui a5,0xd + 3bc01094: 0005071b sext.w a4,a0 + 3bc01098: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0109c: 584c lw a1,52(s0) + 3bc0109e: 03846603 lwu a2,56(s0) + 3bc010a2: 03c46503 lwu a0,60(s0) + 3bc010a6: 86a6 mv a3,s1 + 3bc010a8: 04f71163 bne a4,a5,3bc010ea + 3bc010ac: b83ff0ef jal ra,3bc00c2e + 3bc010b0: 84aa mv s1,a0 + 3bc010b2: 02054563 bltz a0,3bc010dc + 3bc010b6: 5c0c lw a1,56(s0) + 3bc010b8: 03c46503 lwu a0,60(s0) + 3bc010bc: c87ff097 auipc ra,0xc87ff + 3bc010c0: fe4080e7 jalr -28(ra) # 44000a0 + 3bc010c4: 5810 lw a2,48(s0) + 3bc010c6: 0005059b sext.w a1,a0 + 3bc010ca: 02b60563 beq a2,a1,3bc010f4 + 3bc010ce: 00009517 auipc a0,0x9 + 3bc010d2: 66250513 addi a0,a0,1634 # 3bc0a730 + 3bc010d6: a82ff0ef jal ra,3bc00358 + 3bc010da: 54fd li s1,-1 + 3bc010dc: 60e2 ld ra,24(sp) + 3bc010de: 6442 ld s0,16(sp) + 3bc010e0: 6902 ld s2,0(sp) + 3bc010e2: 8526 mv a0,s1 + 3bc010e4: 64a2 ld s1,8(sp) + 3bc010e6: 6105 addi sp,sp,32 + 3bc010e8: 8082 ret + 3bc010ea: c87ff097 auipc ra,0xc87ff + 3bc010ee: f76080e7 jalr -138(ra) # 4400060 + 3bc010f2: bf7d j 3bc010b0 + 3bc010f4: 03846583 lwu a1,56(s0) + 3bc010f8: 03c46503 lwu a0,60(s0) + 3bc010fc: 3c0026b7 lui a3,0x3c002 + 3bc01100: 4601 li a2,0 + 3bc01102: 8a1ff0ef jal ra,3bc009a2 + 3bc01106: 84aa mv s1,a0 + 3bc01108: 00055a63 bgez a0,3bc0111c + 3bc0110c: 85aa mv a1,a0 + 3bc0110e: 00009517 auipc a0,0x9 + 3bc01112: 64250513 addi a0,a0,1602 # 3bc0a750 + 3bc01116: a42ff0ef jal ra,3bc00358 + 3bc0111a: b7c9 j 3bc010dc + 3bc0111c: 03846583 lwu a1,56(s0) + 3bc01120: 03c46503 lwu a0,60(s0) + 3bc01124: 832ff0ef jal ra,3bc00156 + 3bc01128: 00009517 auipc a0,0x9 + 3bc0112c: 64850513 addi a0,a0,1608 # 3bc0a770 + 3bc01130: a28ff0ef jal ra,3bc00358 + 3bc01134: 03c46783 lwu a5,60(s0) + 3bc01138: 00f93023 sd a5,0(s2) + 3bc0113c: bf11 j 3bc01050 + +000000003bc0113e : + 3bc0113e: 715d addi sp,sp,-80 + 3bc01140: f44e sd s3,40(sp) + 3bc01142: 0000d997 auipc s3,0xd + 3bc01146: abe98993 addi s3,s3,-1346 # 3bc0dc00 <__BSS_START__> + 3bc0114a: e85a sd s6,16(sp) + 3bc0114c: 8b2e mv s6,a1 + 3bc0114e: 0449a583 lw a1,68(s3) + 3bc01152: ec56 sd s5,24(sp) + 3bc01154: 8aaa mv s5,a0 + 3bc01156: 00009517 auipc a0,0x9 + 3bc0115a: 62250513 addi a0,a0,1570 # 3bc0a778 + 3bc0115e: e486 sd ra,72(sp) + 3bc01160: e0a2 sd s0,64(sp) + 3bc01162: fc26 sd s1,56(sp) + 3bc01164: f84a sd s2,48(sp) + 3bc01166: f052 sd s4,32(sp) + 3bc01168: 9f0ff0ef jal ra,3bc00358 + 3bc0116c: c87ff097 auipc ra,0xc87ff + 3bc01170: eb4080e7 jalr -332(ra) # 4400020 + 3bc01174: 67b5 lui a5,0xd + 3bc01176: 2501 sext.w a0,a0 + 3bc01178: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0117c: 0449a583 lw a1,68(s3) + 3bc01180: 86d6 mv a3,s5 + 3bc01182: 20000613 li a2,512 + 3bc01186: 02f51663 bne a0,a5,3bc011b2 + 3bc0118a: 0000e517 auipc a0,0xe + 3bc0118e: a7650513 addi a0,a0,-1418 # 3bc0ec00 + 3bc01192: a9dff0ef jal ra,3bc00c2e + 3bc01196: 02055763 bgez a0,3bc011c4 + 3bc0119a: 59fd li s3,-1 + 3bc0119c: 60a6 ld ra,72(sp) + 3bc0119e: 6406 ld s0,64(sp) + 3bc011a0: 74e2 ld s1,56(sp) + 3bc011a2: 7942 ld s2,48(sp) + 3bc011a4: 7a02 ld s4,32(sp) + 3bc011a6: 6ae2 ld s5,24(sp) + 3bc011a8: 6b42 ld s6,16(sp) + 3bc011aa: 854e mv a0,s3 + 3bc011ac: 79a2 ld s3,40(sp) + 3bc011ae: 6161 addi sp,sp,80 + 3bc011b0: 8082 ret + 3bc011b2: 0000e517 auipc a0,0xe + 3bc011b6: a4e50513 addi a0,a0,-1458 # 3bc0ec00 + 3bc011ba: c87ff097 auipc ra,0xc87ff + 3bc011be: ea6080e7 jalr -346(ra) # 4400060 + 3bc011c2: bfd1 j 3bc01196 + 3bc011c4: 0000e417 auipc s0,0xe + 3bc011c8: a3c40413 addi s0,s0,-1476 # 3bc0ec00 + 3bc011cc: 4458 lw a4,12(s0) + 3bc011ce: 6814 ld a3,16(s0) + 3bc011d0: 4410 lw a2,8(s0) + 3bc011d2: 1ff7049b addiw s1,a4,511 + 3bc011d6: 404c lw a1,4(s0) + 3bc011d8: e004f493 andi s1,s1,-512 + 3bc011dc: 2481 sext.w s1,s1 + 3bc011de: 87a6 mv a5,s1 + 3bc011e0: 00009517 auipc a0,0x9 + 3bc011e4: 5a850513 addi a0,a0,1448 # 3bc0a788 + 3bc011e8: 970ff0ef jal ra,3bc00358 + 3bc011ec: 4058 lw a4,4(s0) + 3bc011ee: 345a37b7 lui a5,0x345a3 + 3bc011f2: 34278793 addi a5,a5,834 # 345a3342 + 3bc011f6: 06f70363 beq a4,a5,3bc0125c + 3bc011fa: 414d37b7 lui a5,0x414d3 + 3bc011fe: 34278793 addi a5,a5,834 # 414d3342 <__BL2_END__+0x58bfb32> + 3bc01202: 06f70963 beq a4,a5,3bc01274 + 3bc01206: 01043903 ld s2,16(s0) + 3bc0120a: 4a01 li s4,0 + 3bc0120c: c87ff097 auipc ra,0xc87ff + 3bc01210: e14080e7 jalr -492(ra) # 4400020 + 3bc01214: 67b5 lui a5,0xd + 3bc01216: 2501 sext.w a0,a0 + 3bc01218: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0121c: 0449a583 lw a1,68(s3) + 3bc01220: 86d6 mv a3,s5 + 3bc01222: 8626 mv a2,s1 + 3bc01224: 04f51a63 bne a0,a5,3bc01278 + 3bc01228: 854a mv a0,s2 + 3bc0122a: a05ff0ef jal ra,3bc00c2e + 3bc0122e: f60546e3 bltz a0,3bc0119a + 3bc01232: 444c lw a1,12(s0) + 3bc01234: 00c90993 addi s3,s2,12 + 3bc01238: 854e mv a0,s3 + 3bc0123a: 35d1 addiw a1,a1,-12 + 3bc0123c: c87ff097 auipc ra,0xc87ff + 3bc01240: e64080e7 jalr -412(ra) # 44000a0 + 3bc01244: 4410 lw a2,8(s0) + 3bc01246: 0005059b sext.w a1,a0 + 3bc0124a: 02b60d63 beq a2,a1,3bc01284 + 3bc0124e: 00009517 auipc a0,0x9 + 3bc01252: 56a50513 addi a0,a0,1386 # 3bc0a7b8 + 3bc01256: 902ff0ef jal ra,3bc00358 + 3bc0125a: b781 j 3bc0119a + 3bc0125c: 4a09 li s4,2 + 3bc0125e: 85d2 mv a1,s4 + 3bc01260: 00009517 auipc a0,0x9 + 3bc01264: 54850513 addi a0,a0,1352 # 3bc0a7a8 + 3bc01268: 00819937 lui s2,0x819 + 3bc0126c: 8ecff0ef jal ra,3bc00358 + 3bc01270: 0922 slli s2,s2,0x8 + 3bc01272: bf69 j 3bc0120c + 3bc01274: 4a05 li s4,1 + 3bc01276: b7e5 j 3bc0125e + 3bc01278: 854a mv a0,s2 + 3bc0127a: c87ff097 auipc ra,0xc87ff + 3bc0127e: de6080e7 jalr -538(ra) # 4400060 + 3bc01282: b775 j 3bc0122e + 3bc01284: 444c lw a1,12(s0) + 3bc01286: 854e mv a0,s3 + 3bc01288: 3c0026b7 lui a3,0x3c002 + 3bc0128c: 35d1 addiw a1,a1,-12 + 3bc0128e: 4651 li a2,20 + 3bc01290: 7c05b58b extu a1,a1,31,0 + 3bc01294: f0eff0ef jal ra,3bc009a2 + 3bc01298: 89aa mv s3,a0 + 3bc0129a: 00055a63 bgez a0,3bc012ae + 3bc0129e: 85aa mv a1,a0 + 3bc012a0: 00009517 auipc a0,0x9 + 3bc012a4: 54050513 addi a0,a0,1344 # 3bc0a7e0 + 3bc012a8: 8b0ff0ef jal ra,3bc00358 + 3bc012ac: bdc5 j 3bc0119c + 3bc012ae: 967ff0ef jal ra,3bc00c14 + 3bc012b2: 0000a997 auipc s3,0xa + 3bc012b6: 49e98993 addi s3,s3,1182 # 3bc0b750 + 3bc012ba: 0009b783 ld a5,0(s3) + 3bc012be: 00a79423 sh a0,8(a5) + 3bc012c2: bbeff0ef jal ra,3bc00680 + 3bc012c6: 94fff0ef jal ra,3bc00c14 + 3bc012ca: 0009b783 ld a5,0(s3) + 3bc012ce: 00a79523 sh a0,10(a5) + 3bc012d2: 040a0363 beqz s4,3bc01318 + 3bc012d6: 6804 ld s1,16(s0) + 3bc012d8: 010007b7 lui a5,0x1000 + 3bc012dc: 02000613 li a2,32 + 3bc012e0: 85ca mv a1,s2 + 3bc012e2: 8526 mv a0,s1 + 3bc012e4: e43e sd a5,8(sp) + 3bc012e6: f94ff0ef jal ra,3bc00a7a + 3bc012ea: 00c46683 lwu a3,12(s0) + 3bc012ee: 02090613 addi a2,s2,32 # 819020 <__BSS_SIZE__+0x813410> + 3bc012f2: 002c addi a1,sp,8 + 3bc012f4: 02048513 addi a0,s1,32 # ffffffffffff3020 <__BL2_END__+0xffffffffc43df810> + 3bc012f8: 8752 mv a4,s4 + 3bc012fa: 3d4000ef jal ra,3bc016ce + 3bc012fe: 6622 ld a2,8(sp) + 3bc01300: 85aa mv a1,a0 + 3bc01302: 0006049b sext.w s1,a2 + 3bc01306: 00055963 bgez a0,3bc01318 + 3bc0130a: 00009517 auipc a0,0x9 + 3bc0130e: 4f650513 addi a0,a0,1270 # 3bc0a800 + 3bc01312: 846ff0ef jal ra,3bc00358 + 3bc01316: b551 j 3bc0119a + 3bc01318: 6808 ld a0,16(s0) + 3bc0131a: 85a6 mv a1,s1 + 3bc0131c: e3bfe0ef jal ra,3bc00156 + 3bc01320: 8f5ff0ef jal ra,3bc00c14 + 3bc01324: 0009b783 ld a5,0(s3) + 3bc01328: 4981 li s3,0 + 3bc0132a: 00a79623 sh a0,12(a5) # 100000c <__BSS_SIZE__+0xffa3fc> + 3bc0132e: 00009517 auipc a0,0x9 + 3bc01332: 50250513 addi a0,a0,1282 # 3bc0a830 + 3bc01336: 822ff0ef jal ra,3bc00358 + 3bc0133a: 681c ld a5,16(s0) + 3bc0133c: 02078793 addi a5,a5,32 + 3bc01340: 00fb3023 sd a5,0(s6) + 3bc01344: bda1 j 3bc0119c + +000000003bc01346 : + 3bc01346: 7179 addi sp,sp,-48 + 3bc01348: ec26 sd s1,24(sp) + 3bc0134a: 74cd lui s1,0xffff3 + 3bc0134c: e84a sd s2,16(sp) + 3bc0134e: f406 sd ra,40(sp) + 3bc01350: f022 sd s0,32(sp) + 3bc01352: e002 sd zero,0(sp) + 3bc01354: e402 sd zero,8(sp) + 3bc01356: 1604849b addiw s1,s1,352 + 3bc0135a: cc2ff0ef jal ra,3bc0081c + 3bc0135e: 4915 li s2,5 + 3bc01360: 4401 li s0,0 + 3bc01362: c87ff097 auipc ra,0xc87ff + 3bc01366: d5e080e7 jalr -674(ra) # 44000c0 + 3bc0136a: 02a45563 bge s0,a0,3bc01394 + 3bc0136e: 8522 mv a0,s0 + 3bc01370: b43ff0ef jal ra,3bc00eb2 + 3bc01374: 00055463 bgez a0,3bc0137c + 3bc01378: 2405 addiw s0,s0,1 + 3bc0137a: b7e5 j 3bc01362 + 3bc0137c: 858a mv a1,sp + 3bc0137e: 8522 mv a0,s0 + 3bc01380: c99ff0ef jal ra,3bc01018 + 3bc01384: fe054ae3 bltz a0,3bc01378 + 3bc01388: 002c addi a1,sp,8 + 3bc0138a: 8522 mv a0,s0 + 3bc0138c: db3ff0ef jal ra,3bc0113e + 3bc01390: fe0544e3 bltz a0,3bc01378 + 3bc01394: c87ff097 auipc ra,0xc87ff + 3bc01398: d2c080e7 jalr -724(ra) # 44000c0 + 3bc0139c: 02a45b63 bge s0,a0,3bc013d2 + 3bc013a0: dadfe0ef jal ra,3bc0014c + 3bc013a4: f1ffe0ef jal ra,3bc002c2 + 3bc013a8: c8cff0ef jal ra,3bc00834 + 3bc013ac: 6582 ld a1,0(sp) + 3bc013ae: c5a5 beqz a1,3bc01416 + 3bc013b0: 00009517 auipc a0,0x9 + 3bc013b4: 4b850513 addi a0,a0,1208 # 3bc0a868 + 3bc013b8: fa1fe0ef jal ra,3bc00358 + 3bc013bc: 65a2 ld a1,8(sp) + 3bc013be: 6502 ld a0,0(sp) + 3bc013c0: e5bfe0ef jal ra,3bc0021a + 3bc013c4: 70a2 ld ra,40(sp) + 3bc013c6: 7402 ld s0,32(sp) + 3bc013c8: 64e2 ld s1,24(sp) + 3bc013ca: 6942 ld s2,16(sp) + 3bc013cc: 4501 li a0,0 + 3bc013ce: 6145 addi sp,sp,48 + 3bc013d0: 8082 ret + 3bc013d2: c87ff097 auipc ra,0xc87ff + 3bc013d6: c4e080e7 jalr -946(ra) # 4400020 + 3bc013da: 00a487bb addw a5,s1,a0 + 3bc013de: 85a2 mv a1,s0 + 3bc013e0: 02f96363 bltu s2,a5,3bc01406 + 3bc013e4: 4505 li a0,1 + 3bc013e6: 00f51533 sll a0,a0,a5 + 3bc013ea: 02957513 andi a0,a0,41 + 3bc013ee: cd01 beqz a0,3bc01406 + 3bc013f0: 00009517 auipc a0,0x9 + 3bc013f4: 18850513 addi a0,a0,392 # 3bc0a578 + 3bc013f8: f61fe0ef jal ra,3bc00358 + 3bc013fc: c87ff097 auipc ra,0xc87ff + 3bc01400: c84080e7 jalr -892(ra) # 4400080 + 3bc01404: bfb1 j 3bc01360 + 3bc01406: 00009517 auipc a0,0x9 + 3bc0140a: 44250513 addi a0,a0,1090 # 3bc0a848 + 3bc0140e: f4bfe0ef jal ra,3bc00358 + 3bc01412: 9a8ff0ef jal ra,3bc005ba + 3bc01416: 65a2 ld a1,8(sp) + 3bc01418: 00009517 auipc a0,0x9 + 3bc0141c: 47050513 addi a0,a0,1136 # 3bc0a888 + 3bc01420: f39fe0ef jal ra,3bc00358 + 3bc01424: 6522 ld a0,8(sp) + 3bc01426: e6dfe0ef jal ra,3bc00292 + 3bc0142a: bf69 j 3bc013c4 + +000000003bc0142c : + 3bc0142c: 1141 addi sp,sp,-16 + 3bc0142e: e406 sd ra,8(sp) + 3bc01430: b200f737 lui a4,0xb200f + 3bc01434: e022 sd s0,0(sp) + 3bc01436: 030007b7 lui a5,0x3000 + 3bc0143a: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc0143e: fd6ff0ef jal ra,3bc00c14 + 3bc01442: 0000a797 auipc a5,0xa + 3bc01446: 30e7b783 ld a5,782(a5) # 3bc0b750 + 3bc0144a: 00a79023 sh a0,0(a5) + 3bc0144e: 00009617 auipc a2,0x9 + 3bc01452: eb260613 addi a2,a2,-334 # 3bc0a300 + 3bc01456: 00009597 auipc a1,0x9 + 3bc0145a: eca58593 addi a1,a1,-310 # 3bc0a320 + 3bc0145e: 00009517 auipc a0,0x9 + 3bc01462: 44a50513 addi a0,a0,1098 # 3bc0a8a8 + 3bc01466: ef3fe0ef jal ra,3bc00358 + 3bc0146a: 0e000437 lui s0,0xe000 + 3bc0146e: 400c lw a1,0(s0) + 3bc01470: 00009517 auipc a0,0x9 + 3bc01474: 44850513 addi a0,a0,1096 # 3bc0a8b8 + 3bc01478: ee1fe0ef jal ra,3bc00358 + 3bc0147c: 3c0027b7 lui a5,0x3c002 + 3bc01480: 47cc lw a1,12(a5) + 3bc01482: 0e07a603 lw a2,224(a5) # 3c0020e0 <__BL2_END__+0x3ee8d0> + 3bc01486: 00009517 auipc a0,0x9 + 3bc0148a: 44a50513 addi a0,a0,1098 # 3bc0a8d0 + 3bc0148e: ecbfe0ef jal ra,3bc00358 + 3bc01492: 4c0c lw a1,24(s0) + 3bc01494: 00009517 auipc a0,0x9 + 3bc01498: 47450513 addi a0,a0,1140 # 3bc0a908 + 3bc0149c: 2581 sext.w a1,a1 + 3bc0149e: ebbfe0ef jal ra,3bc00358 + 3bc014a2: 994ff0ef jal ra,3bc00636 + 3bc014a6: b8cff0ef jal ra,3bc00832 + 3bc014aa: bceff0ef jal ra,3bc00878 + 3bc014ae: 93fff0ef jal ra,3bc00dec + 3bc014b2: e95ff0ef jal ra,3bc01346 + 3bc014b6: 00009517 auipc a0,0x9 + 3bc014ba: 46a50513 addi a0,a0,1130 # 3bc0a920 + 3bc014be: e9bfe0ef jal ra,3bc00358 + 3bc014c2: a001 j 3bc014c2 + +000000003bc014c4 : + 3bc014c4: 8082 ret + +000000003bc014c6 : + 3bc014c6: 00012797 auipc a5,0x12 + 3bc014ca: 23278793 addi a5,a5,562 # 3bc136f8 + 3bc014ce: 6388 ld a0,0(a5) + 3bc014d0: 00b50733 add a4,a0,a1 + 3bc014d4: e398 sd a4,0(a5) + 3bc014d6: 00012797 auipc a5,0x12 + 3bc014da: 22a7b783 ld a5,554(a5) # 3bc13700 + 3bc014de: 97ba add a5,a5,a4 + 3bc014e0: 02f76363 bltu a4,a5,3bc01506 + 3bc014e4: 1141 addi sp,sp,-16 + 3bc014e6: 862e mv a2,a1 + 3bc014e8: 00009517 auipc a0,0x9 + 3bc014ec: 45050513 addi a0,a0,1104 # 3bc0a938 + 3bc014f0: 00009597 auipc a1,0x9 + 3bc014f4: 5b058593 addi a1,a1,1456 # 3bc0aaa0 <__func__.0> + 3bc014f8: e406 sd ra,8(sp) + 3bc014fa: e5ffe0ef jal ra,3bc00358 + 3bc014fe: 60a2 ld ra,8(sp) + 3bc01500: 4501 li a0,0 + 3bc01502: 0141 addi sp,sp,16 + 3bc01504: 8082 ret + 3bc01506: 8082 ret + +000000003bc01508 : + 3bc01508: 711d addi sp,sp,-96 + 3bc0150a: 00000797 auipc a5,0x0 + 3bc0150e: fbc78793 addi a5,a5,-68 # 3bc014c6 + 3bc01512: f83e sd a5,48(sp) + 3bc01514: 00000797 auipc a5,0x0 + 3bc01518: fb078793 addi a5,a5,-80 # 3bc014c4 + 3bc0151c: ec86 sd ra,88(sp) + 3bc0151e: e8a2 sd s0,80(sp) + 3bc01520: e4a6 sd s1,72(sp) + 3bc01522: e0ca sd s2,64(sp) + 3bc01524: ec36 sd a3,24(sp) + 3bc01526: f402 sd zero,40(sp) + 3bc01528: fc3e sd a5,56(sp) + 3bc0152a: d202 sw zero,36(sp) + 3bc0152c: e19d bnez a1,3bc01552 + 3bc0152e: 00009597 auipc a1,0x9 + 3bc01532: 57a58593 addi a1,a1,1402 # 3bc0aaa8 <__func__.1> + 3bc01536: 00009517 auipc a0,0x9 + 3bc0153a: 42250513 addi a0,a0,1058 # 3bc0a958 + 3bc0153e: e1bfe0ef jal ra,3bc00358 + 3bc01542: 5429 li s0,-22 + 3bc01544: 60e6 ld ra,88(sp) + 3bc01546: 8522 mv a0,s0 + 3bc01548: 6446 ld s0,80(sp) + 3bc0154a: 64a6 ld s1,72(sp) + 3bc0154c: 6906 ld s2,64(sp) + 3bc0154e: 6125 addi sp,sp,96 + 3bc01550: 8082 ret + 3bc01552: 10300793 li a5,259 + 3bc01556: 07de slli a5,a5,0x17 + 3bc01558: 842a mv s0,a0 + 3bc0155a: 00012717 auipc a4,0x12 + 3bc0155e: 18f73f23 sd a5,414(a4) # 3bc136f8 + 3bc01562: 84ae mv s1,a1 + 3bc01564: 001007b7 lui a5,0x100 + 3bc01568: 85aa mv a1,a0 + 3bc0156a: 00009517 auipc a0,0x9 + 3bc0156e: 40e50513 addi a0,a0,1038 # 3bc0a978 + 3bc01572: 8932 mv s2,a2 + 3bc01574: 00012717 auipc a4,0x12 + 3bc01578: 18f73623 sd a5,396(a4) # 3bc13700 + 3bc0157c: dddfe0ef jal ra,3bc00358 + 3bc01580: 67e2 ld a5,24(sp) + 3bc01582: 4611 li a2,4 + 3bc01584: 00590593 addi a1,s2,5 + 3bc01588: 17ed addi a5,a5,-5 + 3bc0158a: 1008 addi a0,sp,32 + 3bc0158c: ec3e sd a5,24(sp) + 3bc0158e: cecff0ef jal ra,3bc00a7a + 3bc01592: 67e2 ld a5,24(sp) + 3bc01594: 02016583 lwu a1,32(sp) + 3bc01598: 00009517 auipc a0,0x9 + 3bc0159c: 3f850513 addi a0,a0,1016 # 3bc0a990 + 3bc015a0: 17e1 addi a5,a5,-8 + 3bc015a2: f42e sd a1,40(sp) + 3bc015a4: ec3e sd a5,24(sp) + 3bc015a6: db3fe0ef jal ra,3bc00358 + 3bc015aa: 181c addi a5,sp,48 + 3bc015ac: e03e sd a5,0(sp) + 3bc015ae: 8522 mv a0,s0 + 3bc015b0: 02410893 addi a7,sp,36 + 3bc015b4: 4805 li a6,1 + 3bc015b6: 4795 li a5,5 + 3bc015b8: 874a mv a4,s2 + 3bc015ba: 0834 addi a3,sp,24 + 3bc015bc: 00d90613 addi a2,s2,13 + 3bc015c0: 102c addi a1,sp,40 + 3bc015c2: 5f5040ef jal ra,3bc063b6 + 3bc015c6: 842a mv s0,a0 + 3bc015c8: c919 beqz a0,3bc015de + 3bc015ca: 5612 lw a2,36(sp) + 3bc015cc: 85aa mv a1,a0 + 3bc015ce: 00009517 auipc a0,0x9 + 3bc015d2: 3e250513 addi a0,a0,994 # 3bc0a9b0 + 3bc015d6: d83fe0ef jal ra,3bc00358 + 3bc015da: 5449 li s0,-14 + 3bc015dc: b7a5 j 3bc01544 + 3bc015de: 75a2 ld a1,40(sp) + 3bc015e0: 00009517 auipc a0,0x9 + 3bc015e4: 3f850513 addi a0,a0,1016 # 3bc0a9d8 + 3bc015e8: e08c sd a1,0(s1) + 3bc015ea: d6ffe0ef jal ra,3bc00358 + 3bc015ee: bf99 j 3bc01544 + +000000003bc015f0 : + 3bc015f0: 85aa mv a1,a0 + 3bc015f2: 4501 li a0,0 + 3bc015f4: bdc9 j 3bc014c6 + +000000003bc015f6 : + 3bc015f6: 02b50633 mul a2,a0,a1 + 3bc015fa: 1101 addi sp,sp,-32 + 3bc015fc: e822 sd s0,16(sp) + 3bc015fe: ec06 sd ra,24(sp) + 3bc01600: 8532 mv a0,a2 + 3bc01602: e432 sd a2,8(sp) + 3bc01604: fedff0ef jal ra,3bc015f0 + 3bc01608: 842a mv s0,a0 + 3bc0160a: c509 beqz a0,3bc01614 + 3bc0160c: 6622 ld a2,8(sp) + 3bc0160e: 4581 li a1,0 + 3bc01610: c10ff0ef jal ra,3bc00a20 + 3bc01614: 60e2 ld ra,24(sp) + 3bc01616: 8522 mv a0,s0 + 3bc01618: 6442 ld s0,16(sp) + 3bc0161a: 6105 addi sp,sp,32 + 3bc0161c: 8082 ret + +000000003bc0161e : + 3bc0161e: 8082 ret + +000000003bc01620 : + 3bc01620: 10300793 li a5,259 + 3bc01624: 715d addi sp,sp,-80 + 3bc01626: 07de slli a5,a5,0x17 + 3bc01628: e0a2 sd s0,64(sp) + 3bc0162a: f84a sd s2,48(sp) + 3bc0162c: 00012717 auipc a4,0x12 + 3bc01630: 0cf73623 sd a5,204(a4) # 3bc136f8 + 3bc01634: 842a mv s0,a0 + 3bc01636: 001007b7 lui a5,0x100 + 3bc0163a: 892e mv s2,a1 + 3bc0163c: 85aa mv a1,a0 + 3bc0163e: 00009517 auipc a0,0x9 + 3bc01642: 3b250513 addi a0,a0,946 # 3bc0a9f0 + 3bc01646: e486 sd ra,72(sp) + 3bc01648: e436 sd a3,8(sp) + 3bc0164a: 00012717 auipc a4,0x12 + 3bc0164e: 0af73b23 sd a5,182(a4) # 3bc13700 + 3bc01652: fc26 sd s1,56(sp) + 3bc01654: f44e sd s3,40(sp) + 3bc01656: 89b2 mv s3,a2 + 3bc01658: d01fe0ef jal ra,3bc00358 + 3bc0165c: 06400593 li a1,100 + 3bc01660: 0828 addi a0,sp,24 + 3bc01662: 38b050ef jal ra,3bc071ec + 3bc01666: 84aa mv s1,a0 + 3bc01668: 1b7050ef jal ra,3bc0701e + 3bc0166c: 2501 sext.w a0,a0 + 3bc0166e: c105 beqz a0,3bc0168e + 3bc01670: 85a6 mv a1,s1 + 3bc01672: 00009517 auipc a0,0x9 + 3bc01676: 39650513 addi a0,a0,918 # 3bc0aa08 + 3bc0167a: cdffe0ef jal ra,3bc00358 + 3bc0167e: 557d li a0,-1 + 3bc01680: 60a6 ld ra,72(sp) + 3bc01682: 6406 ld s0,64(sp) + 3bc01684: 74e2 ld s1,56(sp) + 3bc01686: 7942 ld s2,48(sp) + 3bc01688: 79a2 ld s3,40(sp) + 3bc0168a: 6161 addi sp,sp,80 + 3bc0168c: 8082 ret + 3bc0168e: 6562 ld a0,24(sp) + 3bc01690: 4781 li a5,0 + 3bc01692: 0038 addi a4,sp,8 + 3bc01694: 85a2 mv a1,s0 + 3bc01696: 86ce mv a3,s3 + 3bc01698: 864a mv a2,s2 + 3bc0169a: 383050ef jal ra,3bc0721c + 3bc0169e: 6622 ld a2,8(sp) + 3bc016a0: 00093583 ld a1,0(s2) + 3bc016a4: 86aa mv a3,a0 + 3bc016a6: 842a mv s0,a0 + 3bc016a8: 00009517 auipc a0,0x9 + 3bc016ac: 37850513 addi a0,a0,888 # 3bc0aa20 + 3bc016b0: ca9fe0ef jal ra,3bc00358 + 3bc016b4: 8526 mv a0,s1 + 3bc016b6: 169050ef jal ra,3bc0701e + 3bc016ba: 0005079b sext.w a5,a0 + 3bc016be: 4501 li a0,0 + 3bc016c0: d3e1 beqz a5,3bc01680 + 3bc016c2: 85a2 mv a1,s0 + 3bc016c4: 00009517 auipc a0,0x9 + 3bc016c8: 38450513 addi a0,a0,900 # 3bc0aa48 + 3bc016cc: b77d j 3bc0167a + +000000003bc016ce : + 3bc016ce: 7139 addi sp,sp,-64 + 3bc016d0: 87ba mv a5,a4 + 3bc016d2: ec4e sd s3,24(sp) + 3bc016d4: e852 sd s4,16(sp) + 3bc016d6: e456 sd s5,8(sp) + 3bc016d8: 89b2 mv s3,a2 + 3bc016da: 8a36 mv s4,a3 + 3bc016dc: 8aba mv s5,a4 + 3bc016de: 8736 mv a4,a3 + 3bc016e0: 86b2 mv a3,a2 + 3bc016e2: 6190 ld a2,0(a1) + 3bc016e4: f426 sd s1,40(sp) + 3bc016e6: f04a sd s2,32(sp) + 3bc016e8: 84ae mv s1,a1 + 3bc016ea: 892a mv s2,a0 + 3bc016ec: 85aa mv a1,a0 + 3bc016ee: 00009517 auipc a0,0x9 + 3bc016f2: 37a50513 addi a0,a0,890 # 3bc0aa68 + 3bc016f6: fc06 sd ra,56(sp) + 3bc016f8: f822 sd s0,48(sp) + 3bc016fa: c5ffe0ef jal ra,3bc00358 + 3bc016fe: 4785 li a5,1 + 3bc01700: 02fa8f63 beq s5,a5,3bc0173e + 3bc01704: 4789 li a5,2 + 3bc01706: 5429 li s0,-22 + 3bc01708: 00fa9963 bne s5,a5,3bc0171a + 3bc0170c: 86d2 mv a3,s4 + 3bc0170e: 864e mv a2,s3 + 3bc01710: 85a6 mv a1,s1 + 3bc01712: 854a mv a0,s2 + 3bc01714: f0dff0ef jal ra,3bc01620 + 3bc01718: 842a mv s0,a0 + 3bc0171a: 608c ld a1,0(s1) + 3bc0171c: 8622 mv a2,s0 + 3bc0171e: 00009517 auipc a0,0x9 + 3bc01722: 36a50513 addi a0,a0,874 # 3bc0aa88 + 3bc01726: c33fe0ef jal ra,3bc00358 + 3bc0172a: 70e2 ld ra,56(sp) + 3bc0172c: 8522 mv a0,s0 + 3bc0172e: 7442 ld s0,48(sp) + 3bc01730: 74a2 ld s1,40(sp) + 3bc01732: 7902 ld s2,32(sp) + 3bc01734: 69e2 ld s3,24(sp) + 3bc01736: 6a42 ld s4,16(sp) + 3bc01738: 6aa2 ld s5,8(sp) + 3bc0173a: 6121 addi sp,sp,64 + 3bc0173c: 8082 ret + 3bc0173e: 86d2 mv a3,s4 + 3bc01740: 864e mv a2,s3 + 3bc01742: 85a6 mv a1,s1 + 3bc01744: 854a mv a0,s2 + 3bc01746: dc3ff0ef jal ra,3bc01508 + 3bc0174a: b7f9 j 3bc01718 + +000000003bc0174c : + 3bc0174c: 4108 lw a0,0(a0) + 3bc0174e: 2501 sext.w a0,a0 + 3bc01750: 8082 ret + +000000003bc01752 : + 3bc01752: c188 sw a0,0(a1) + 3bc01754: 8082 ret + +000000003bc01756 : + 3bc01756: 8082 ret + +000000003bc01758 : + 3bc01758: 00012717 auipc a4,0x12 + 3bc0175c: 0b370713 addi a4,a4,179 # 3bc1380b + 3bc01760: 00074783 lbu a5,0(a4) + 3bc01764: eb89 bnez a5,3bc01776 + 3bc01766: 0000a517 auipc a0,0xa + 3bc0176a: 09253503 ld a0,146(a0) # 3bc0b7f8 + 3bc0176e: 2785 addiw a5,a5,1 + 3bc01770: 00f70023 sb a5,0(a4) + 3bc01774: 8082 ret + 3bc01776: 4685 li a3,1 + 3bc01778: 00d79763 bne a5,a3,3bc01786 + 3bc0177c: 0000a517 auipc a0,0xa + 3bc01780: 08453503 ld a0,132(a0) # 3bc0b800 + 3bc01784: b7ed j 3bc0176e + 3bc01786: 0000a517 auipc a0,0xa + 3bc0178a: 08253503 ld a0,130(a0) # 3bc0b808 + 3bc0178e: b7c5 j 3bc0176e + +000000003bc01790 : + 3bc01790: 8082 ret + +000000003bc01792 : + 3bc01792: 698c ld a1,16(a1) + 3bc01794: 00012517 auipc a0,0x12 + 3bc01798: f7453503 ld a0,-140(a0) # 3bc13708 + 3bc0179c: 1141 addi sp,sp,-16 + 3bc0179e: 461d li a2,7 + 3bc017a0: 0511 addi a0,a0,4 + 3bc017a2: e406 sd ra,8(sp) + 3bc017a4: ad6ff0ef jal ra,3bc00a7a + 3bc017a8: 60a2 ld ra,8(sp) + 3bc017aa: 0141 addi sp,sp,16 + 3bc017ac: 8082 ret + +000000003bc017ae : + 3bc017ae: 00009597 auipc a1,0x9 + 3bc017b2: 70a58593 addi a1,a1,1802 # 3bc0aeb8 <__func__.5> + 3bc017b6: 00009517 auipc a0,0x9 + 3bc017ba: 30250513 addi a0,a0,770 # 3bc0aab8 <__func__.1+0x10> + 3bc017be: b9bfe06f j 3bc00358 + +000000003bc017c2 : + 3bc017c2: 00012797 auipc a5,0x12 + 3bc017c6: 040781a3 sb zero,67(a5) # 3bc13805 + 3bc017ca: 4785 li a5,1 + 3bc017cc: 00012717 auipc a4,0x12 + 3bc017d0: 02f70fa3 sb a5,63(a4) # 3bc1380b + 3bc017d4: 00009597 auipc a1,0x9 + 3bc017d8: 6d458593 addi a1,a1,1748 # 3bc0aea8 <__func__.4> + 3bc017dc: 00012797 auipc a5,0x12 + 3bc017e0: 020785a3 sb zero,43(a5) # 3bc13807 + 3bc017e4: 00009517 auipc a0,0x9 + 3bc017e8: 2d450513 addi a0,a0,724 # 3bc0aab8 <__func__.1+0x10> + 3bc017ec: b6dfe06f j 3bc00358 + +000000003bc017f0 : + 3bc017f0: 1141 addi sp,sp,-16 + 3bc017f2: 00009597 auipc a1,0x9 + 3bc017f6: 6ae58593 addi a1,a1,1710 # 3bc0aea0 <__func__.1> + 3bc017fa: 00009517 auipc a0,0x9 + 3bc017fe: 2d650513 addi a0,a0,726 # 3bc0aad0 <__func__.1+0x28> + 3bc01802: e406 sd ra,8(sp) + 3bc01804: b55fe0ef jal ra,3bc00358 + 3bc01808: 60a2 ld ra,8(sp) + 3bc0180a: 0000a797 auipc a5,0xa + 3bc0180e: 0c07b323 sd zero,198(a5) # 3bc0b8d0 + 3bc01812: 0141 addi sp,sp,16 + 3bc01814: 8082 ret + +000000003bc01816 : + 3bc01816: 1141 addi sp,sp,-16 + 3bc01818: e022 sd s0,0(sp) + 3bc0181a: 00009597 auipc a1,0x9 + 3bc0181e: 67e58593 addi a1,a1,1662 # 3bc0ae98 <__func__.0> + 3bc01822: 842a mv s0,a0 + 3bc01824: 00009517 auipc a0,0x9 + 3bc01828: 2ac50513 addi a0,a0,684 # 3bc0aad0 <__func__.1+0x28> + 3bc0182c: e406 sd ra,8(sp) + 3bc0182e: b2bfe0ef jal ra,3bc00358 + 3bc01832: 0000a797 auipc a5,0xa + 3bc01836: 09e78793 addi a5,a5,158 # 3bc0b8d0 + 3bc0183a: 6398 ld a4,0(a5) + 3bc0183c: cf01 beqz a4,3bc01854 + 3bc0183e: 00009517 auipc a0,0x9 + 3bc01842: 2a250513 addi a0,a0,674 # 3bc0aae0 <__func__.1+0x38> + 3bc01846: b13fe0ef jal ra,3bc00358 + 3bc0184a: 60a2 ld ra,8(sp) + 3bc0184c: 6402 ld s0,0(sp) + 3bc0184e: 4501 li a0,0 + 3bc01850: 0141 addi sp,sp,16 + 3bc01852: 8082 ret + 3bc01854: e380 sd s0,0(a5) + 3bc01856: bfd5 j 3bc0184a + +000000003bc01858 : + 3bc01858: 1101 addi sp,sp,-32 + 3bc0185a: e822 sd s0,16(sp) + 3bc0185c: 842a mv s0,a0 + 3bc0185e: 852e mv a0,a1 + 3bc01860: e42e sd a1,8(sp) + 3bc01862: ec06 sd ra,24(sp) + 3bc01864: b04ff0ef jal ra,3bc00b68 + 3bc01868: 0506 slli a0,a0,0x1 + 3bc0186a: 0025071b addiw a4,a0,2 + 3bc0186e: 87a2 mv a5,s0 + 3bc01870: 1827d70b sbia a4,(a5),2,0 + 3bc01874: 470d li a4,3 + 3bc01876: 00e400a3 sb a4,1(s0) # e000001 + 3bc0187a: 06400713 li a4,100 + 3bc0187e: 65a2 ld a1,8(sp) + 3bc01880: 00a77463 bgeu a4,a0,3bc01888 + 3bc01884: 06400513 li a0,100 + 3bc01888: 4701 li a4,0 + 3bc0188a: 00171693 slli a3,a4,0x1 + 3bc0188e: 00a6e663 bltu a3,a0,3bc0189a + 3bc01892: 60e2 ld ra,24(sp) + 3bc01894: 6442 ld s0,16(sp) + 3bc01896: 6105 addi sp,sp,32 + 3bc01898: 8082 ret + 3bc0189a: 80e5c68b lrbu a3,a1,a4,0 + 3bc0189e: 0705 addi a4,a4,1 + 3bc018a0: 1827d68b sbia a3,(a5),2,0 + 3bc018a4: fe078fa3 sb zero,-1(a5) + 3bc018a8: b7cd j 3bc0188a + +000000003bc018aa : + 3bc018aa: 5d98 lw a4,56(a1) + 3bc018ac: fc600793 li a5,-58 + 3bc018b0: 22f70663 beq a4,a5,3bc01adc + 3bc018b4: 699c ld a5,16(a1) + 3bc018b6: 7179 addi sp,sp,-48 + 3bc018b8: e052 sd s4,0(sp) + 3bc018ba: f406 sd ra,40(sp) + 3bc018bc: f022 sd s0,32(sp) + 3bc018be: ec26 sd s1,24(sp) + 3bc018c0: e84a sd s2,16(sp) + 3bc018c2: e44e sd s3,8(sp) + 3bc018c4: 0037c403 lbu s0,3(a5) + 3bc018c8: 0047c703 lbu a4,4(a5) + 3bc018cc: 0017c483 lbu s1,1(a5) + 3bc018d0: 1402 slli s0,s0,0x20 + 3bc018d2: 0762 slli a4,a4,0x18 + 3bc018d4: 943a add s0,s0,a4 + 3bc018d6: 0077c703 lbu a4,7(a5) + 3bc018da: 0027c603 lbu a2,2(a5) + 3bc018de: 0084949b slliw s1,s1,0x8 + 3bc018e2: 943a add s0,s0,a4 + 3bc018e4: 0057c703 lbu a4,5(a5) + 3bc018e8: 9e25 addw a2,a2,s1 + 3bc018ea: 00012a17 auipc s4,0x12 + 3bc018ee: e3ea0a13 addi s4,s4,-450 # 3bc13728 + 3bc018f2: 0742 slli a4,a4,0x10 + 3bc018f4: 943a add s0,s0,a4 + 3bc018f6: 0067c703 lbu a4,6(a5) + 3bc018fa: 000a3583 ld a1,0(s4) + 3bc018fe: 84b2 mv s1,a2 + 3bc01900: 0722 slli a4,a4,0x8 + 3bc01902: 943a add s0,s0,a4 + 3bc01904: ee05 bnez a2,3bc0193c + 3bc01906: e81d bnez s0,3bc0193c + 3bc01908: 00012797 auipc a5,0x12 + 3bc0190c: e187b783 ld a5,-488(a5) # 3bc13720 + 3bc01910: 00012717 auipc a4,0x12 + 3bc01914: ed872703 lw a4,-296(a4) # 3bc137e8 + 3bc01918: 00012517 auipc a0,0x12 + 3bc0191c: e3053503 ld a0,-464(a0) # 3bc13748 + 3bc01920: cf98 sw a4,24(a5) + 3bc01922: 7118 ld a4,32(a0) + 3bc01924: 7402 ld s0,32(sp) + 3bc01926: 70a2 ld ra,40(sp) + 3bc01928: 64e2 ld s1,24(sp) + 3bc0192a: 6942 ld s2,16(sp) + 3bc0192c: 69a2 ld s3,8(sp) + 3bc0192e: 6a02 ld s4,0(sp) + 3bc01930: 7318 ld a4,32(a4) + 3bc01932: eb8c sd a1,16(a5) + 3bc01934: cfcc sw a1,28(a5) + 3bc01936: 85be mv a1,a5 + 3bc01938: 6145 addi sp,sp,48 + 3bc0193a: 8702 jr a4 + 3bc0193c: 0007c903 lbu s2,0(a5) + 3bc01940: 4501 li a0,0 + 3bc01942: 5d3020ef jal ra,3bc04714 + 3bc01946: 4789 li a5,2 + 3bc01948: 89aa mv s3,a0 + 3bc0194a: 0ef90763 beq s2,a5,3bc01a38 + 3bc0194e: 0327e363 bltu a5,s2,3bc01974 + 3bc01952: 0c091863 bnez s2,3bc01a22 + 3bc01956: 000a3583 ld a1,0(s4) + 3bc0195a: ff84861b addiw a2,s1,-8 + 3bc0195e: 00012517 auipc a0,0x12 + 3bc01962: df253503 ld a0,-526(a0) # 3bc13750 + 3bc01966: 7c06360b extu a2,a2,31,0 + 3bc0196a: 05a1 addi a1,a1,8 + 3bc0196c: 9522 add a0,a0,s0 + 3bc0196e: 90cff0ef jal ra,3bc00a7a + 3bc01972: a021 j 3bc0197a + 3bc01974: 478d li a5,3 + 3bc01976: 0ef90163 beq s2,a5,3bc01a58 + 3bc0197a: 0000a417 auipc s0,0xa + 3bc0197e: 02640413 addi s0,s0,38 # 3bc0b9a0 + 3bc01982: 6008 ld a0,0(s0) + 3bc01984: 4641 li a2,16 + 3bc01986: 4581 li a1,0 + 3bc01988: 898ff0ef jal ra,3bc00a20 + 3bc0198c: 601c ld a5,0(s0) + 3bc0198e: 00012617 auipc a2,0x12 + 3bc01992: e7660613 addi a2,a2,-394 # 3bc13804 + 3bc01996: 00064703 lbu a4,0(a2) + 3bc0199a: 0089951b slliw a0,s3,0x8 + 3bc0199e: 00012697 auipc a3,0x12 + 3bc019a2: e426a683 lw a3,-446(a3) # 3bc137e0 + 3bc019a6: 0089d99b srliw s3,s3,0x8 + 3bc019aa: 01356533 or a0,a0,s3 + 3bc019ae: 00012497 auipc s1,0x12 + 3bc019b2: d6a48493 addi s1,s1,-662 # 3bc13718 + 3bc019b6: 9006968b revw a3,a3 + 3bc019ba: 00a79023 sh a0,0(a5) + 3bc019be: 00a79123 sh a0,2(a5) + 3bc019c2: c794 sw a3,8(a5) + 3bc019c4: 6088 ld a0,0(s1) + 3bc019c6: 00012697 auipc a3,0x12 + 3bc019ca: e1e6a683 lw a3,-482(a3) # 3bc137e4 + 3bc019ce: 00e783a3 sb a4,7(a5) + 3bc019d2: 9006968b revw a3,a3 + 3bc019d6: 2705 addiw a4,a4,1 + 3bc019d8: 01278323 sb s2,6(a5) + 3bc019dc: 00079223 sh zero,4(a5) + 3bc019e0: c7d4 sw a3,12(a5) + 3bc019e2: 00e60023 sb a4,0(a2) + 3bc019e6: 4581 li a1,0 + 3bc019e8: 04000613 li a2,64 + 3bc019ec: 834ff0ef jal ra,3bc00a20 + 3bc019f0: 608c ld a1,0(s1) + 3bc019f2: 47c1 li a5,16 + 3bc019f4: 00012517 auipc a0,0x12 + 3bc019f8: d4c53503 ld a0,-692(a0) # 3bc13740 + 3bc019fc: cd9c sw a5,24(a1) + 3bc019fe: 601c ld a5,0(s0) + 3bc01a00: 7402 ld s0,32(sp) + 3bc01a02: 70a2 ld ra,40(sp) + 3bc01a04: e99c sd a5,16(a1) + 3bc01a06: cddc sw a5,28(a1) + 3bc01a08: 00000797 auipc a5,0x0 + 3bc01a0c: 15c78793 addi a5,a5,348 # 3bc01b64 + 3bc01a10: f59c sd a5,40(a1) + 3bc01a12: 711c ld a5,32(a0) + 3bc01a14: 64e2 ld s1,24(sp) + 3bc01a16: 6942 ld s2,16(sp) + 3bc01a18: 69a2 ld s3,8(sp) + 3bc01a1a: 6a02 ld s4,0(sp) + 3bc01a1c: 739c ld a5,32(a5) + 3bc01a1e: 6145 addi sp,sp,48 + 3bc01a20: 8782 jr a5 + 3bc01a22: 0e0007b7 lui a5,0xe000 + 3bc01a26: 0791 addi a5,a5,4 + 3bc01a28: f4f419e3 bne s0,a5,3bc0197a + 3bc01a2c: 000a3583 ld a1,0(s4) + 3bc01a30: 4611 li a2,4 + 3bc01a32: 8522 mv a0,s0 + 3bc01a34: 05a1 addi a1,a1,8 + 3bc01a36: bf25 j 3bc0196e + 3bc01a38: 00009517 auipc a0,0x9 + 3bc01a3c: 0b050513 addi a0,a0,176 # 3bc0aae8 <__func__.1+0x40> + 3bc01a40: 919fe0ef jal ra,3bc00358 + 3bc01a44: 00012797 auipc a5,0x12 + 3bc01a48: dc078023 sb zero,-576(a5) # 3bc13804 + 3bc01a4c: 4785 li a5,1 + 3bc01a4e: 00012717 auipc a4,0x12 + 3bc01a52: daf70c23 sb a5,-584(a4) # 3bc13806 + 3bc01a56: b715 j 3bc0197a + 3bc01a58: 000a3583 ld a1,0(s4) + 3bc01a5c: ff84861b addiw a2,s1,-8 + 3bc01a60: 4501 li a0,0 + 3bc01a62: 05a1 addi a1,a1,8 + 3bc01a64: 4b1020ef jal ra,3bc04714 + 3bc01a68: 842a mv s0,a0 + 3bc01a6a: 00009517 auipc a0,0x9 + 3bc01a6e: 09650513 addi a0,a0,150 # 3bc0ab00 <__func__.1+0x58> + 3bc01a72: 8e7fe0ef jal ra,3bc00358 + 3bc01a76: 67b1 lui a5,0xc + 3bc01a78: 2401 sext.w s0,s0 + 3bc01a7a: 28378793 addi a5,a5,643 # c283 <__BSS_SIZE__+0x6673> + 3bc01a7e: 02f41a63 bne s0,a5,3bc01ab2 + 3bc01a82: 00012797 auipc a5,0x12 + 3bc01a86: d8078123 sb zero,-638(a5) # 3bc13804 + 3bc01a8a: 00012797 auipc a5,0x12 + 3bc01a8e: d7e78793 addi a5,a5,-642 # 3bc13808 + 3bc01a92: 4705 li a4,1 + 3bc01a94: 00e78023 sb a4,0(a5) + 3bc01a98: 0e000737 lui a4,0xe000 + 3bc01a9c: 00072223 sw zero,4(a4) # e000004 + 3bc01aa0: 0007c583 lbu a1,0(a5) + 3bc01aa4: 00009517 auipc a0,0x9 + 3bc01aa8: 06450513 addi a0,a0,100 # 3bc0ab08 <__func__.1+0x60> + 3bc01aac: 8adfe0ef jal ra,3bc00358 + 3bc01ab0: b5e9 j 3bc0197a + 3bc01ab2: 00012797 auipc a5,0x12 + 3bc01ab6: d4078b23 sb zero,-682(a5) # 3bc13808 + 3bc01aba: 0e0007b7 lui a5,0xe000 + 3bc01abe: 0007a223 sw zero,4(a5) # e000004 + 3bc01ac2: 00009517 auipc a0,0x9 + 3bc01ac6: 05e50513 addi a0,a0,94 # 3bc0ab20 <__func__.1+0x78> + 3bc01aca: 88ffe0ef jal ra,3bc00358 + 3bc01ace: 00009517 auipc a0,0x9 + 3bc01ad2: 07250513 addi a0,a0,114 # 3bc0ab40 <__func__.1+0x98> + 3bc01ad6: 883fe0ef jal ra,3bc00358 + 3bc01ada: b545 j 3bc0197a + 3bc01adc: 8082 ret + +000000003bc01ade : + 3bc01ade: 7179 addi sp,sp,-48 + 3bc01ae0: f406 sd ra,40(sp) + 3bc01ae2: f022 sd s0,32(sp) + 3bc01ae4: ec26 sd s1,24(sp) + 3bc01ae6: e84a sd s2,16(sp) + 3bc01ae8: e44e sd s3,8(sp) + 3bc01aea: 4789 li a5,2 + 3bc01aec: 02f50263 beq a0,a5,3bc01b10 + 3bc01af0: 478d li a5,3 + 3bc01af2: 54fd li s1,-1 + 3bc01af4: 0000a417 auipc s0,0xa + 3bc01af8: d7440413 addi s0,s0,-652 # 3bc0b868 + 3bc01afc: 00f50e63 beq a0,a5,3bc01b18 + 3bc01b00: 70a2 ld ra,40(sp) + 3bc01b02: 7402 ld s0,32(sp) + 3bc01b04: 6942 ld s2,16(sp) + 3bc01b06: 69a2 ld s3,8(sp) + 3bc01b08: 8526 mv a0,s1 + 3bc01b0a: 64e2 ld s1,24(sp) + 3bc01b0c: 6145 addi sp,sp,48 + 3bc01b0e: 8082 ret + 3bc01b10: 0000a417 auipc s0,0xa + 3bc01b14: d0840413 addi s0,s0,-760 # 3bc0b818 + 3bc01b18: 892e mv s2,a1 + 3bc01b1a: 7884458b ldia a1,(s0),8,0 + 3bc01b1e: 4481 li s1,0 + 3bc01b20: d1e5 beqz a1,3bc01b00 + 3bc01b22: 0005c983 lbu s3,0(a1) + 3bc01b26: 00990533 add a0,s2,s1 + 3bc01b2a: 864e mv a2,s3 + 3bc01b2c: f4ffe0ef jal ra,3bc00a7a + 3bc01b30: 7884458b ldia a1,(s0),8,0 + 3bc01b34: 009984bb addw s1,s3,s1 + 3bc01b38: b7e5 j 3bc01b20 + +000000003bc01b3a : + 3bc01b3a: 5d98 lw a4,56(a1) + 3bc01b3c: 57ed li a5,-5 + 3bc01b3e: 02f71263 bne a4,a5,3bc01b62 + 3bc01b42: 1141 addi sp,sp,-16 + 3bc01b44: 00009517 auipc a0,0x9 + 3bc01b48: 00c50513 addi a0,a0,12 # 3bc0ab50 <__func__.1+0xa8> + 3bc01b4c: e406 sd ra,8(sp) + 3bc01b4e: 80bfe0ef jal ra,3bc00358 + 3bc01b52: 60a2 ld ra,8(sp) + 3bc01b54: 4785 li a5,1 + 3bc01b56: 00012717 auipc a4,0x12 + 3bc01b5a: caf709a3 sb a5,-845(a4) # 3bc13809 + 3bc01b5e: 0141 addi sp,sp,16 + 3bc01b60: 8082 ret + 3bc01b62: 8082 ret + +000000003bc01b64 : + 3bc01b64: 5d98 lw a4,56(a1) + 3bc01b66: fc600793 li a5,-58 + 3bc01b6a: 04f70463 beq a4,a5,3bc01bb2 + 3bc01b6e: 1141 addi sp,sp,-16 + 3bc01b70: e022 sd s0,0(sp) + 3bc01b72: 00012417 auipc s0,0x12 + 3bc01b76: bb640413 addi s0,s0,-1098 # 3bc13728 + 3bc01b7a: 6008 ld a0,0(s0) + 3bc01b7c: 4581 li a1,0 + 3bc01b7e: 4621 li a2,8 + 3bc01b80: e406 sd ra,8(sp) + 3bc01b82: e9ffe0ef jal ra,3bc00a20 + 3bc01b86: 00012597 auipc a1,0x12 + 3bc01b8a: b9a5b583 ld a1,-1126(a1) # 3bc13720 + 3bc01b8e: 00012797 auipc a5,0x12 + 3bc01b92: c5a7a783 lw a5,-934(a5) # 3bc137e8 + 3bc01b96: cd9c sw a5,24(a1) + 3bc01b98: 601c ld a5,0(s0) + 3bc01b9a: 00012517 auipc a0,0x12 + 3bc01b9e: bae53503 ld a0,-1106(a0) # 3bc13748 + 3bc01ba2: 6402 ld s0,0(sp) + 3bc01ba4: e99c sd a5,16(a1) + 3bc01ba6: cddc sw a5,28(a1) + 3bc01ba8: 711c ld a5,32(a0) + 3bc01baa: 60a2 ld ra,8(sp) + 3bc01bac: 739c ld a5,32(a5) + 3bc01bae: 0141 addi sp,sp,16 + 3bc01bb0: 8782 jr a5 + 3bc01bb2: 8082 ret + +000000003bc01bb4 : + 3bc01bb4: 7159 addi sp,sp,-112 + 3bc01bb6: e4ce sd s3,72(sp) + 3bc01bb8: fc56 sd s5,56(sp) + 3bc01bba: 00012997 auipc s3,0x12 + 3bc01bbe: b7698993 addi s3,s3,-1162 # 3bc13730 + 3bc01bc2: 00012a97 auipc s5,0x12 + 3bc01bc6: b76a8a93 addi s5,s5,-1162 # 3bc13738 + 3bc01bca: eca6 sd s1,88(sp) + 3bc01bcc: 000ab603 ld a2,0(s5) + 3bc01bd0: 84aa mv s1,a0 + 3bc01bd2: 0009b503 ld a0,0(s3) + 3bc01bd6: e0d2 sd s4,64(sp) + 3bc01bd8: f486 sd ra,104(sp) + 3bc01bda: f0a2 sd s0,96(sp) + 3bc01bdc: e8ca sd s2,80(sp) + 3bc01bde: f85a sd s6,48(sp) + 3bc01be0: f45e sd s7,40(sp) + 3bc01be2: f062 sd s8,32(sp) + 3bc01be4: ec66 sd s9,24(sp) + 3bc01be6: 0204a803 lw a6,32(s1) + 3bc01bea: 0015c703 lbu a4,1(a1) + 3bc01bee: 0005c683 lbu a3,0(a1) + 3bc01bf2: 0065da03 lhu s4,6(a1) + 3bc01bf6: 0025d783 lhu a5,2(a1) + 3bc01bfa: 00000597 auipc a1,0x0 + 3bc01bfe: f4058593 addi a1,a1,-192 # 3bc01b3a + 3bc01c02: f60c sd a1,40(a2) + 3bc01c04: ea08 sd a0,16(a2) + 3bc01c06: ce48 sw a0,28(a2) + 3bc01c08: 4589 li a1,2 + 3bc01c0a: 02b80763 beq a6,a1,3bc01c38 + 3bc01c0e: 458d li a1,3 + 3bc01c10: 4905 li s2,1 + 3bc01c12: 06b81063 bne a6,a1,3bc01c72 + 3bc01c16: 0000ab17 auipc s6,0xa + 3bc01c1a: bbab0b13 addi s6,s6,-1094 # 3bc0b7d0 + 3bc01c1e: 0000ab97 auipc s7,0xa + 3bc01c22: ba2b8b93 addi s7,s7,-1118 # 3bc0b7c0 + 3bc01c26: 0606f593 andi a1,a3,96 + 3bc01c2a: c185 beqz a1,3bc01c4a + 3bc01c2c: 02000693 li a3,32 + 3bc01c30: 36d58463 beq a1,a3,3bc01f98 + 3bc01c34: 4901 li s2,0 + 3bc01c36: a835 j 3bc01c72 + 3bc01c38: 0000ab17 auipc s6,0xa + 3bc01c3c: b78b0b13 addi s6,s6,-1160 # 3bc0b7b0 + 3bc01c40: 0000ab97 auipc s7,0xa + 3bc01c44: b60b8b93 addi s7,s7,-1184 # 3bc0b7a0 + 3bc01c48: bff9 j 3bc01c26 + 3bc01c4a: 4621 li a2,8 + 3bc01c4c: 32c70d63 beq a4,a2,3bc01f86 + 3bc01c50: 4625 li a2,9 + 3bc01c52: 24c70a63 beq a4,a2,3bc01ea6 + 3bc01c56: 4619 li a2,6 + 3bc01c58: 597d li s2,-1 + 3bc01c5a: 00c71c63 bne a4,a2,3bc01c72 + 3bc01c5e: 8abd andi a3,a3,15 + 3bc01c60: 4705 li a4,1 + 3bc01c62: 02e69663 bne a3,a4,3bc01c8e + 3bc01c66: 00009517 auipc a0,0x9 + 3bc01c6a: f0250513 addi a0,a0,-254 # 3bc0ab68 <__func__.1+0xc0> + 3bc01c6e: eeafe0ef jal ra,3bc00358 + 3bc01c72: 70a6 ld ra,104(sp) + 3bc01c74: 7406 ld s0,96(sp) + 3bc01c76: 64e6 ld s1,88(sp) + 3bc01c78: 69a6 ld s3,72(sp) + 3bc01c7a: 6a06 ld s4,64(sp) + 3bc01c7c: 7ae2 ld s5,56(sp) + 3bc01c7e: 7b42 ld s6,48(sp) + 3bc01c80: 7ba2 ld s7,40(sp) + 3bc01c82: 7c02 ld s8,32(sp) + 3bc01c84: 6ce2 ld s9,24(sp) + 3bc01c86: 854a mv a0,s2 + 3bc01c88: 6946 ld s2,80(sp) + 3bc01c8a: 6165 addi sp,sp,112 + 3bc01c8c: 8082 ret + 3bc01c8e: f2dd bnez a3,3bc01c34 + 3bc01c90: 0087d71b srliw a4,a5,0x8 + 3bc01c94: 377d addiw a4,a4,-1 + 3bc01c96: 3c07360b extu a2,a4,15,0 + 3bc01c9a: 46b9 li a3,14 + 3bc01c9c: 0ac6e663 bltu a3,a2,3bc01d48 + 3bc01ca0: 00009697 auipc a3,0x9 + 3bc01ca4: f9c68693 addi a3,a3,-100 # 3bc0ac3c <__func__.1+0x194> + 3bc01ca8: 44c6c70b lrw a4,a3,a2,2 + 3bc01cac: 9736 add a4,a4,a3 + 3bc01cae: 8702 jr a4 + 3bc01cb0: 0000a417 auipc s0,0xa + 3bc01cb4: d5840413 addi s0,s0,-680 # 3bc0ba08 + 3bc01cb8: 00045583 lhu a1,0(s0) + 3bc01cbc: cd89 beqz a1,3bc01cd6 + 3bc01cbe: 00009517 auipc a0,0x9 + 3bc01cc2: eda50513 addi a0,a0,-294 # 3bc0ab98 <__func__.1+0xf0> + 3bc01cc6: e92fe0ef jal ra,3bc00358 + 3bc01cca: 00045783 lhu a5,0(s0) + 3bc01cce: 0000a717 auipc a4,0xa + 3bc01cd2: bef71923 sh a5,-1038(a4) # 3bc0b8c0 + 3bc01cd6: 0009b503 ld a0,0(s3) + 3bc01cda: 4649 li a2,18 + 3bc01cdc: 0000a597 auipc a1,0xa + 3bc01ce0: bdc58593 addi a1,a1,-1060 # 3bc0b8b8 + 3bc01ce4: df7fe0ef jal ra,3bc00ada + 3bc01ce8: 4449 li s0,18 + 3bc01cea: 4905 li s2,1 + 3bc01cec: 6c88 ld a0,24(s1) + 3bc01cee: 014427b3 slt a5,s0,s4 + 3bc01cf2: 40fa140b mveqz s0,s4,a5 + 3bc01cf6: 711c ld a5,32(a0) + 3bc01cf8: 000ab583 ld a1,0(s5) + 3bc01cfc: 739c ld a5,32(a5) + 3bc01cfe: cd80 sw s0,24(a1) + 3bc01d00: 9782 jalr a5 + 3bc01d02: f20909e3 beqz s2,3bc01c34 + 3bc01d06: c00017b7 lui a5,0xc0001 + 3bc01d0a: 03000737 lui a4,0x3000 + 3bc01d0e: 0795 addi a5,a5,5 + 3bc01d10: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc01d14: b705 j 3bc01c34 + 3bc01d16: 0ff7f793 andi a5,a5,255 + 3bc01d1a: 4709 li a4,2 + 3bc01d1c: 02e78863 beq a5,a4,3bc01d4c + 3bc01d20: 02f76163 bltu a4,a5,3bc01d42 + 3bc01d24: 00012597 auipc a1,0x12 + 3bc01d28: a8458593 addi a1,a1,-1404 # 3bc137a8 + 3bc01d2c: e789 bnez a5,3bc01d36 + 3bc01d2e: 0000a597 auipc a1,0xa + 3bc01d32: c5a58593 addi a1,a1,-934 # 3bc0b988 + 3bc01d36: 0005c403 lbu s0,0(a1) + 3bc01d3a: 8622 mv a2,s0 + 3bc01d3c: 0009b503 ld a0,0(s3) + 3bc01d40: a215 j 3bc01e64 + 3bc01d42: 470d li a4,3 + 3bc01d44: 00e78963 beq a5,a4,3bc01d56 + 3bc01d48: 597d li s2,-1 + 3bc01d4a: b725 j 3bc01c72 + 3bc01d4c: 00012597 auipc a1,0x12 + 3bc01d50: a0c58593 addi a1,a1,-1524 # 3bc13758 + 3bc01d54: b7cd j 3bc01d36 + 3bc01d56: ea1fe0ef jal ra,3bc00bf6 + 3bc01d5a: 00009597 auipc a1,0x9 + 3bc01d5e: ea658593 addi a1,a1,-346 # 3bc0ac00 <__func__.1+0x158> + 3bc01d62: e55d bnez a0,3bc01e10 + 3bc01d64: 00012b17 auipc s6,0x12 + 3bc01d68: aa6b0b13 addi s6,s6,-1370 # 3bc1380a + 3bc01d6c: 000b4903 lbu s2,0(s6) + 3bc01d70: 08091263 bnez s2,3bc01df4 + 3bc01d74: 4641 li a2,16 + 3bc01d76: 4581 li a1,0 + 3bc01d78: 00012517 auipc a0,0x12 + 3bc01d7c: a0050513 addi a0,a0,-1536 # 3bc13778 + 3bc01d80: 03050bb7 lui s7,0x3050 + 3bc01d84: c9dfe0ef jal ra,3bc00a20 + 3bc01d88: 4401 li s0,0 + 3bc01d8a: 104b8b93 addi s7,s7,260 # 3050104 <__BSS_SIZE__+0x304a4f4> + 3bc01d8e: 00009c97 auipc s9,0x9 + 3bc01d92: e1ac8c93 addi s9,s9,-486 # 3bc0aba8 <__func__.1+0x100> + 3bc01d96: 4c11 li s8,4 + 3bc01d98: 448bc60b lrw a2,s7,s0,2 + 3bc01d9c: 0004059b sext.w a1,s0 + 3bc01da0: 8566 mv a0,s9 + 3bc01da2: 2601 sext.w a2,a2 + 3bc01da4: 4481560b srw a2,sp,s0,2 + 3bc01da8: db0fe0ef jal ra,3bc00358 + 3bc01dac: 4481478b lrw a5,sp,s0,2 + 3bc01db0: c391 beqz a5,3bc01db4 + 3bc01db2: 4905 li s2,1 + 3bc01db4: 0405 addi s0,s0,1 + 3bc01db6: ff8411e3 bne s0,s8,3bc01d98 + 3bc01dba: 06090663 beqz s2,3bc01e26 + 3bc01dbe: 858a mv a1,sp + 3bc01dc0: 4641 li a2,16 + 3bc01dc2: 4501 li a0,0 + 3bc01dc4: 151020ef jal ra,3bc04714 + 3bc01dc8: 0005041b sext.w s0,a0 + 3bc01dcc: 85a2 mv a1,s0 + 3bc01dce: 00009517 auipc a0,0x9 + 3bc01dd2: df250513 addi a0,a0,-526 # 3bc0abc0 <__func__.1+0x118> + 3bc01dd6: d82fe0ef jal ra,3bc00358 + 3bc01dda: 4681 li a3,0 + 3bc01ddc: 4641 li a2,16 + 3bc01dde: 7c04358b extu a1,s0,31,0 + 3bc01de2: 00012517 auipc a0,0x12 + 3bc01de6: 99650513 addi a0,a0,-1642 # 3bc13778 + 3bc01dea: bbdfe0ef jal ra,3bc009a6 + 3bc01dee: 4785 li a5,1 + 3bc01df0: 00fb0023 sb a5,0(s6) + 3bc01df4: 00012597 auipc a1,0x12 + 3bc01df8: 98458593 addi a1,a1,-1660 # 3bc13778 + 3bc01dfc: 00009517 auipc a0,0x9 + 3bc01e00: df450513 addi a0,a0,-524 # 3bc0abf0 <__func__.1+0x148> + 3bc01e04: d54fe0ef jal ra,3bc00358 + 3bc01e08: 00012597 auipc a1,0x12 + 3bc01e0c: 97058593 addi a1,a1,-1680 # 3bc13778 + 3bc01e10: 00012517 auipc a0,0x12 + 3bc01e14: 97850513 addi a0,a0,-1672 # 3bc13788 + 3bc01e18: a41ff0ef jal ra,3bc01858 + 3bc01e1c: 00012597 auipc a1,0x12 + 3bc01e20: 96c58593 addi a1,a1,-1684 # 3bc13788 + 3bc01e24: bf09 j 3bc01d36 + 3bc01e26: 00012517 auipc a0,0x12 + 3bc01e2a: 9c652503 lw a0,-1594(a0) # 3bc137ec + 3bc01e2e: bb4fe0ef jal ra,3bc001e2 + 3bc01e32: 0005041b sext.w s0,a0 + 3bc01e36: 85a2 mv a1,s0 + 3bc01e38: 00009517 auipc a0,0x9 + 3bc01e3c: da050513 addi a0,a0,-608 # 3bc0abd8 <__func__.1+0x130> + 3bc01e40: bf59 j 3bc01dd6 + 3bc01e42: 0000a597 auipc a1,0xa + 3bc01e46: 99e58593 addi a1,a1,-1634 # 3bc0b7e0 + 3bc01e4a: 4615 li a2,5 + 3bc01e4c: 0025d403 lhu s0,2(a1) + 3bc01e50: c8bfe0ef jal ra,3bc00ada + 3bc01e54: 0009b503 ld a0,0(s3) + 3bc01e58: 461d li a2,7 + 3bc01e5a: 0000a597 auipc a1,0xa + 3bc01e5e: 99658593 addi a1,a1,-1642 # 3bc0b7f0 + 3bc01e62: 0515 addi a0,a0,5 + 3bc01e64: c77fe0ef jal ra,3bc00ada + 3bc01e68: dc0406e3 beqz s0,3bc01c34 + 3bc01e6c: a809 j 3bc01e7e + 3bc01e6e: 4629 li a2,10 + 3bc01e70: 0000a597 auipc a1,0xa + 3bc01e74: b2058593 addi a1,a1,-1248 # 3bc0b990 + 3bc01e78: c63fe0ef jal ra,3bc00ada + 3bc01e7c: 4429 li s0,10 + 3bc01e7e: 4901 li s2,0 + 3bc01e80: b5b5 j 3bc01cec + 3bc01e82: 00950593 addi a1,a0,9 + 3bc01e86: 8542 mv a0,a6 + 3bc01e88: c57ff0ef jal ra,3bc01ade + 3bc01e8c: 2525 addiw a0,a0,9 + 3bc01e8e: 3c05350b extu a0,a0,15,0 + 3bc01e92: 0000a597 auipc a1,0xa + 3bc01e96: 8c658593 addi a1,a1,-1850 # 3bc0b758 + 3bc01e9a: 0005041b sext.w s0,a0 + 3bc01e9e: 00a59123 sh a0,2(a1) + 3bc01ea2: 4625 li a2,9 + 3bc01ea4: bd61 j 3bc01d3c + 3bc01ea6: 4705 li a4,1 + 3bc01ea8: 597d li s2,-1 + 3bc01eaa: dcf764e3 bltu a4,a5,3bc01c72 + 3bc01eae: e385 bnez a5,3bc01ece + 3bc01eb0: 00012797 auipc a5,0x12 + 3bc01eb4: 94078ba3 sb zero,-1705(a5) # 3bc13807 + 3bc01eb8: 6080 ld s0,0(s1) + 3bc01eba: d6848de3 beq s1,s0,3bc01c34 + 3bc01ebe: 6c1c ld a5,24(s0) + 3bc01ec0: c789 beqz a5,3bc01eca + 3bc01ec2: 701c ld a5,32(s0) + 3bc01ec4: 8522 mv a0,s0 + 3bc01ec6: 679c ld a5,8(a5) + 3bc01ec8: 9782 jalr a5 + 3bc01eca: 6000 ld s0,0(s0) + 3bc01ecc: b7fd j 3bc01eba + 3bc01ece: 00012797 auipc a5,0x12 + 3bc01ed2: 93978793 addi a5,a5,-1735 # 3bc13807 + 3bc01ed6: 0007c683 lbu a3,0(a5) + 3bc01eda: d4e68de3 beq a3,a4,3bc01c34 + 3bc01ede: 00e78023 sb a4,0(a5) + 3bc01ee2: 6080 ld s0,0(s1) + 3bc01ee4: 00009917 auipc s2,0x9 + 3bc01ee8: d2c90913 addi s2,s2,-724 # 3bc0ac10 <__func__.1+0x168> + 3bc01eec: 00848d63 beq s1,s0,3bc01f06 + 3bc01ef0: 6c08 ld a0,24(s0) + 3bc01ef2: c141 beqz a0,3bc01f72 + 3bc01ef4: 85ca mv a1,s2 + 3bc01ef6: c57fe0ef jal ra,3bc00b4c + 3bc01efa: ed25 bnez a0,3bc01f72 + 3bc01efc: 701c ld a5,32(s0) + 3bc01efe: 85de mv a1,s7 + 3bc01f00: 8522 mv a0,s0 + 3bc01f02: 639c ld a5,0(a5) + 3bc01f04: 9782 jalr a5 + 3bc01f06: 6080 ld s0,0(s1) + 3bc01f08: 00009917 auipc s2,0x9 + 3bc01f0c: d1890913 addi s2,s2,-744 # 3bc0ac20 <__func__.1+0x178> + 3bc01f10: 00848d63 beq s1,s0,3bc01f2a + 3bc01f14: 6c08 ld a0,24(s0) + 3bc01f16: c125 beqz a0,3bc01f76 + 3bc01f18: 85ca mv a1,s2 + 3bc01f1a: c33fe0ef jal ra,3bc00b4c + 3bc01f1e: ed21 bnez a0,3bc01f76 + 3bc01f20: 701c ld a5,32(s0) + 3bc01f22: 85da mv a1,s6 + 3bc01f24: 8522 mv a0,s0 + 3bc01f26: 639c ld a5,0(a5) + 3bc01f28: 9782 jalr a5 + 3bc01f2a: 6080 ld s0,0(s1) + 3bc01f2c: 00009917 auipc s2,0x9 + 3bc01f30: d0490913 addi s2,s2,-764 # 3bc0ac30 <__func__.1+0x188> + 3bc01f34: 02848063 beq s1,s0,3bc01f54 + 3bc01f38: 6c08 ld a0,24(s0) + 3bc01f3a: c121 beqz a0,3bc01f7a + 3bc01f3c: 85ca mv a1,s2 + 3bc01f3e: c0ffe0ef jal ra,3bc00b4c + 3bc01f42: ed05 bnez a0,3bc01f7a + 3bc01f44: 701c ld a5,32(s0) + 3bc01f46: 0000a597 auipc a1,0xa + 3bc01f4a: 86258593 addi a1,a1,-1950 # 3bc0b7a8 + 3bc01f4e: 8522 mv a0,s0 + 3bc01f50: 639c ld a5,0(a5) + 3bc01f52: 9782 jalr a5 + 3bc01f54: 689c ld a5,16(s1) + 3bc01f56: 0000a717 auipc a4,0xa + 3bc01f5a: 80974703 lbu a4,-2039(a4) # 3bc0b75f + 3bc01f5e: 04077713 andi a4,a4,64 + 3bc01f62: 6b9c ld a5,16(a5) + 3bc01f64: cf09 beqz a4,3bc01f7e + 3bc01f66: 4585 li a1,1 + 3bc01f68: cc0786e3 beqz a5,3bc01c34 + 3bc01f6c: 8526 mv a0,s1 + 3bc01f6e: 9782 jalr a5 + 3bc01f70: b1d1 j 3bc01c34 + 3bc01f72: 6000 ld s0,0(s0) + 3bc01f74: bfa5 j 3bc01eec + 3bc01f76: 6000 ld s0,0(s0) + 3bc01f78: bf61 j 3bc01f10 + 3bc01f7a: 6000 ld s0,0(s0) + 3bc01f7c: bf65 j 3bc01f34 + 3bc01f7e: ca078be3 beqz a5,3bc01c34 + 3bc01f82: 4581 li a1,0 + 3bc01f84: b7e5 j 3bc01f6c + 3bc01f86: 4605 li a2,1 + 3bc01f88: 00012597 auipc a1,0x12 + 3bc01f8c: 87f58593 addi a1,a1,-1921 # 3bc13807 + 3bc01f90: b4bfe0ef jal ra,3bc00ada + 3bc01f94: 4405 li s0,1 + 3bc01f96: b5e5 j 3bc01e7e + 3bc01f98: 02100693 li a3,33 + 3bc01f9c: 04d70263 beq a4,a3,3bc01fe0 + 3bc01fa0: 02200693 li a3,34 + 3bc01fa4: 02d70263 beq a4,a3,3bc01fc8 + 3bc01fa8: 4901 li s2,0 + 3bc01faa: ccb714e3 bne a4,a1,3bc01c72 + 3bc01fae: fffff797 auipc a5,0xfffff + 3bc01fb2: 7e478793 addi a5,a5,2020 # 3bc01792 + 3bc01fb6: 000a041b sext.w s0,s4 + 3bc01fba: f61c sd a5,40(a2) + 3bc01fbc: 4785 li a5,1 + 3bc01fbe: 00012717 auipc a4,0x12 + 3bc01fc2: 84f703a3 sb a5,-1977(a4) # 3bc13805 + 3bc01fc6: b54d j 3bc01e68 + 3bc01fc8: 00011717 auipc a4,0x11 + 3bc01fcc: 74073703 ld a4,1856(a4) # 3bc13708 + 3bc01fd0: 00f71623 sh a5,12(a4) + 3bc01fd4: 4785 li a5,1 + 3bc01fd6: 00012717 auipc a4,0x12 + 3bc01fda: 82f707a3 sb a5,-2001(a4) # 3bc13805 + 3bc01fde: b999 j 3bc01c34 + 3bc01fe0: 00011597 auipc a1,0x11 + 3bc01fe4: 7285b583 ld a1,1832(a1) # 3bc13708 + 3bc01fe8: 8652 mv a2,s4 + 3bc01fea: 0591 addi a1,a1,4 + 3bc01fec: 000a041b sext.w s0,s4 + 3bc01ff0: aebfe0ef jal ra,3bc00ada + 3bc01ff4: b7e1 j 3bc01fbc + +000000003bc01ff6 : + 3bc01ff6: 8082 ret + +000000003bc01ff8 : + 3bc01ff8: 00011797 auipc a5,0x11 + 3bc01ffc: c8878793 addi a5,a5,-888 # 3bc12c80 + 3bc02000: 00009717 auipc a4,0x9 + 3bc02004: 7ef73423 sd a5,2024(a4) # 3bc0b7e8 + 3bc02008: 00011797 auipc a5,0x11 + 3bc0200c: ff878793 addi a5,a5,-8 # 3bc13000 + 3bc02010: 0000a717 auipc a4,0xa + 3bc02014: 80f73023 sd a5,-2048(a4) # 3bc0b810 + 3bc02018: 00011797 auipc a5,0x11 + 3bc0201c: e6878793 addi a5,a5,-408 # 3bc12e80 + 3bc02020: 00009717 auipc a4,0x9 + 3bc02024: 7cf73c23 sd a5,2008(a4) # 3bc0b7f8 + 3bc02028: 00011797 auipc a5,0x11 + 3bc0202c: ed878793 addi a5,a5,-296 # 3bc12f00 + 3bc02030: 00009717 auipc a4,0x9 + 3bc02034: 7cf73823 sd a5,2000(a4) # 3bc0b800 + 3bc02038: 00011797 auipc a5,0x11 + 3bc0203c: f4878793 addi a5,a5,-184 # 3bc12f80 + 3bc02040: 00009717 auipc a4,0x9 + 3bc02044: 7cf73423 sd a5,1992(a4) # 3bc0b808 + 3bc02048: 00011797 auipc a5,0x11 + 3bc0204c: 1b878793 addi a5,a5,440 # 3bc13200 + 3bc02050: 0000a717 auipc a4,0xa + 3bc02054: 8cf73823 sd a5,-1840(a4) # 3bc0b920 + 3bc02058: 00011797 auipc a5,0x11 + 3bc0205c: 62878793 addi a5,a5,1576 # 3bc13680 + 3bc02060: 0000a717 auipc a4,0xa + 3bc02064: 94f73023 sd a5,-1728(a4) # 3bc0b9a0 + 3bc02068: 00011797 auipc a5,0x11 + 3bc0206c: b9878793 addi a5,a5,-1128 # 3bc12c00 + 3bc02070: 00009717 auipc a4,0x9 + 3bc02074: 6ef73c23 sd a5,1784(a4) # 3bc0b768 + 3bc02078: 00011797 auipc a5,0x11 + 3bc0207c: 64878793 addi a5,a5,1608 # 3bc136c0 + 3bc02080: 0000a717 auipc a4,0xa + 3bc02084: 92f73423 sd a5,-1752(a4) # 3bc0b9a8 + 3bc02088: 00011797 auipc a5,0x11 + 3bc0208c: 1f878793 addi a5,a5,504 # 3bc13280 + 3bc02090: 0000a717 auipc a4,0xa + 3bc02094: 8ef73823 sd a5,-1808(a4) # 3bc0b980 + 3bc02098: 8082 ret + +000000003bc0209a : + 3bc0209a: 1141 addi sp,sp,-16 + 3bc0209c: 00009597 auipc a1,0x9 + 3bc020a0: 74c5b583 ld a1,1868(a1) # 3bc0b7e8 + 3bc020a4: 00009517 auipc a0,0x9 + 3bc020a8: bd450513 addi a0,a0,-1068 # 3bc0ac78 <__func__.1+0x1d0> + 3bc020ac: e406 sd ra,8(sp) + 3bc020ae: aaafe0ef jal ra,3bc00358 + 3bc020b2: 00009597 auipc a1,0x9 + 3bc020b6: 75e5b583 ld a1,1886(a1) # 3bc0b810 + 3bc020ba: 00009517 auipc a0,0x9 + 3bc020be: bd650513 addi a0,a0,-1066 # 3bc0ac90 <__func__.1+0x1e8> + 3bc020c2: a96fe0ef jal ra,3bc00358 + 3bc020c6: 00009597 auipc a1,0x9 + 3bc020ca: 7325b583 ld a1,1842(a1) # 3bc0b7f8 + 3bc020ce: 00009517 auipc a0,0x9 + 3bc020d2: bda50513 addi a0,a0,-1062 # 3bc0aca8 <__func__.1+0x200> + 3bc020d6: a82fe0ef jal ra,3bc00358 + 3bc020da: 00009597 auipc a1,0x9 + 3bc020de: 7265b583 ld a1,1830(a1) # 3bc0b800 + 3bc020e2: 00009517 auipc a0,0x9 + 3bc020e6: bde50513 addi a0,a0,-1058 # 3bc0acc0 <__func__.1+0x218> + 3bc020ea: a6efe0ef jal ra,3bc00358 + 3bc020ee: 00009597 auipc a1,0x9 + 3bc020f2: 71a5b583 ld a1,1818(a1) # 3bc0b808 + 3bc020f6: 00009517 auipc a0,0x9 + 3bc020fa: be250513 addi a0,a0,-1054 # 3bc0acd8 <__func__.1+0x230> + 3bc020fe: a5afe0ef jal ra,3bc00358 + 3bc02102: 0000a597 auipc a1,0xa + 3bc02106: 81e5b583 ld a1,-2018(a1) # 3bc0b920 + 3bc0210a: 00009517 auipc a0,0x9 + 3bc0210e: be650513 addi a0,a0,-1050 # 3bc0acf0 <__func__.1+0x248> + 3bc02112: a46fe0ef jal ra,3bc00358 + 3bc02116: 0000a597 auipc a1,0xa + 3bc0211a: 88a5b583 ld a1,-1910(a1) # 3bc0b9a0 + 3bc0211e: 00009517 auipc a0,0x9 + 3bc02122: bea50513 addi a0,a0,-1046 # 3bc0ad08 <__func__.1+0x260> + 3bc02126: a32fe0ef jal ra,3bc00358 + 3bc0212a: 00009597 auipc a1,0x9 + 3bc0212e: 63e5b583 ld a1,1598(a1) # 3bc0b768 + 3bc02132: 00009517 auipc a0,0x9 + 3bc02136: bee50513 addi a0,a0,-1042 # 3bc0ad20 <__func__.1+0x278> + 3bc0213a: a1efe0ef jal ra,3bc00358 + 3bc0213e: 0000a597 auipc a1,0xa + 3bc02142: 86a5b583 ld a1,-1942(a1) # 3bc0b9a8 + 3bc02146: 00009517 auipc a0,0x9 + 3bc0214a: bf250513 addi a0,a0,-1038 # 3bc0ad38 <__func__.1+0x290> + 3bc0214e: a0afe0ef jal ra,3bc00358 + 3bc02152: 60a2 ld ra,8(sp) + 3bc02154: 0000a597 auipc a1,0xa + 3bc02158: 82c5b583 ld a1,-2004(a1) # 3bc0b980 + 3bc0215c: 00009517 auipc a0,0x9 + 3bc02160: bf450513 addi a0,a0,-1036 # 3bc0ad50 <__func__.1+0x2a8> + 3bc02164: 0141 addi sp,sp,16 + 3bc02166: 9f2fe06f j 3bc00358 + +000000003bc0216a : + 3bc0216a: 4501 li a0,0 + 3bc0216c: 3020106f j 3bc0346e + +000000003bc02170 : + 3bc02170: 7179 addi sp,sp,-48 + 3bc02172: f022 sd s0,32(sp) + 3bc02174: 00009417 auipc s0,0x9 + 3bc02178: 75c40413 addi s0,s0,1884 # 3bc0b8d0 + 3bc0217c: 601c ld a5,0(s0) + 3bc0217e: 00009597 auipc a1,0x9 + 3bc02182: bea58593 addi a1,a1,-1046 # 3bc0ad68 <__func__.1+0x2c0> + 3bc02186: 00011517 auipc a0,0x11 + 3bc0218a: 62250513 addi a0,a0,1570 # 3bc137a8 + 3bc0218e: f406 sd ra,40(sp) + 3bc02190: ec26 sd s1,24(sp) + 3bc02192: e84a sd s2,16(sp) + 3bc02194: 6f84 ld s1,24(a5) + 3bc02196: e44e sd s3,8(sp) + 3bc02198: ec0ff0ef jal ra,3bc01858 + 3bc0219c: 00011517 auipc a0,0x11 + 3bc021a0: 5bc50513 addi a0,a0,1468 # 3bc13758 + 3bc021a4: 00009597 auipc a1,0x9 + 3bc021a8: bcc58593 addi a1,a1,-1076 # 3bc0ad70 <__func__.1+0x2c8> + 3bc021ac: eacff0ef jal ra,3bc01858 + 3bc021b0: 00009517 auipc a0,0x9 + 3bc021b4: 77053503 ld a0,1904(a0) # 3bc0b920 + 3bc021b8: 03f57713 andi a4,a0,63 + 3bc021bc: 87aa mv a5,a0 + 3bc021be: c709 beqz a4,3bc021c8 + 3bc021c0: 04000793 li a5,64 + 3bc021c4: 9f99 subw a5,a5,a4 + 3bc021c6: 97aa add a5,a5,a0 + 3bc021c8: 00009997 auipc s3,0x9 + 3bc021cc: 62098993 addi s3,s3,1568 # 3bc0b7e8 + 3bc021d0: 00011717 auipc a4,0x11 + 3bc021d4: 56f73023 sd a5,1376(a4) # 3bc13730 + 3bc021d8: 0009b783 ld a5,0(s3) + 3bc021dc: 03f7f693 andi a3,a5,63 + 3bc021e0: c689 beqz a3,3bc021ea + 3bc021e2: 04000713 li a4,64 + 3bc021e6: 9f15 subw a4,a4,a3 + 3bc021e8: 97ba add a5,a5,a4 + 3bc021ea: 00009917 auipc s2,0x9 + 3bc021ee: 62690913 addi s2,s2,1574 # 3bc0b810 + 3bc021f2: 00011717 auipc a4,0x11 + 3bc021f6: 50f73f23 sd a5,1310(a4) # 3bc13710 + 3bc021fa: 00093783 ld a5,0(s2) + 3bc021fe: 03f7f693 andi a3,a5,63 + 3bc02202: c689 beqz a3,3bc0220c + 3bc02204: 04000713 li a4,64 + 3bc02208: 9f15 subw a4,a4,a3 + 3bc0220a: 97ba add a5,a5,a4 + 3bc0220c: 08000613 li a2,128 + 3bc02210: 4581 li a1,0 + 3bc02212: 00011717 auipc a4,0x11 + 3bc02216: 50f73b23 sd a5,1302(a4) # 3bc13728 + 3bc0221a: 807fe0ef jal ra,3bc00a20 + 3bc0221e: 0009b503 ld a0,0(s3) + 3bc02222: 20000613 li a2,512 + 3bc02226: 4581 li a1,0 + 3bc02228: ff8fe0ef jal ra,3bc00a20 + 3bc0222c: 00093503 ld a0,0(s2) + 3bc02230: 20000613 li a2,512 + 3bc02234: 4581 li a1,0 + 3bc02236: feafe0ef jal ra,3bc00a20 + 3bc0223a: 709c ld a5,32(s1) + 3bc0223c: 8526 mv a0,s1 + 3bc0223e: 6b9c ld a5,16(a5) + 3bc02240: 9782 jalr a5 + 3bc02242: 00011797 auipc a5,0x11 + 3bc02246: 4ea7bb23 sd a0,1270(a5) # 3bc13738 + 3bc0224a: 601c ld a5,0(s0) + 3bc0224c: 53d8 lw a4,36(a5) + 3bc0224e: 4791 li a5,4 + 3bc02250: 02e7e263 bltu a5,a4,3bc02274 + 3bc02254: 00009797 auipc a5,0x9 + 3bc02258: 58c78793 addi a5,a5,1420 # 3bc0b7e0 + 3bc0225c: 4731 li a4,12 + 3bc0225e: 00e79123 sh a4,2(a5) + 3bc02262: 4705 li a4,1 + 3bc02264: 00e78223 sb a4,4(a5) + 3bc02268: 20100793 li a5,513 + 3bc0226c: 00009717 auipc a4,0x9 + 3bc02270: 64f71723 sh a5,1614(a4) # 3bc0b8ba + 3bc02274: 00009797 auipc a5,0x9 + 3bc02278: 4f47b783 ld a5,1268(a5) # 3bc0b768 + 3bc0227c: 00011717 auipc a4,0x11 + 3bc02280: 48f73623 sd a5,1164(a4) # 3bc13708 + 3bc02284: 000e1737 lui a4,0xe1 + 3bc02288: c3d8 sw a4,4(a5) + 3bc0228a: 4721 li a4,8 + 3bc0228c: 00079423 sh zero,8(a5) + 3bc02290: 00e78523 sb a4,10(a5) + 3bc02294: 70a2 ld ra,40(sp) + 3bc02296: 7402 ld s0,32(sp) + 3bc02298: 00079623 sh zero,12(a5) + 3bc0229c: 64e2 ld s1,24(sp) + 3bc0229e: 6942 ld s2,16(sp) + 3bc022a0: 69a2 ld s3,8(sp) + 3bc022a2: 4501 li a0,0 + 3bc022a4: 6145 addi sp,sp,48 + 3bc022a6: 8082 ret + +000000003bc022a8 : + 3bc022a8: 030007b7 lui a5,0x3000 + 3bc022ac: 43c8 lw a0,4(a5) + 3bc022ae: 2495350b extu a0,a0,9,9 + 3bc022b2: 8082 ret + +000000003bc022b4 : + 3bc022b4: 1141 addi sp,sp,-16 + 3bc022b6: e406 sd ra,8(sp) + 3bc022b8: 93ffe0ef jal ra,3bc00bf6 + 3bc022bc: 3e800793 li a5,1000 + 3bc022c0: e911 bnez a0,3bc022d4 + 3bc022c2: 0e0007b7 lui a5,0xe000 + 3bc022c6: 639c ld a5,0(a5) + 3bc022c8: 0417b78b extu a5,a5,1,1 + 3bc022cc: eb81 bnez a5,3bc022dc + 3bc022ce: 6789 lui a5,0x2 + 3bc022d0: 71078793 addi a5,a5,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc022d4: 60a2 ld ra,8(sp) + 3bc022d6: 853e mv a0,a5 + 3bc022d8: 0141 addi sp,sp,16 + 3bc022da: 8082 ret + 3bc022dc: 67e1 lui a5,0x18 + 3bc022de: 69f78793 addi a5,a5,1695 # 1869f <__BSS_SIZE__+0x12a8f> + 3bc022e2: bfcd j 3bc022d4 + +000000003bc022e4 : + 3bc022e4: 7175 addi sp,sp,-144 + 3bc022e6: f0d2 sd s4,96(sp) + 3bc022e8: 00011797 auipc a5,0x11 + 3bc022ec: 46a7b423 sd a0,1128(a5) # 3bc13750 + 3bc022f0: 00011797 auipc a5,0x11 + 3bc022f4: 4eb7a823 sw a1,1264(a5) # 3bc137e0 + 3bc022f8: 00011a17 auipc s4,0x11 + 3bc022fc: 4eca0a13 addi s4,s4,1260 # 3bc137e4 + 3bc02300: e506 sd ra,136(sp) + 3bc02302: e122 sd s0,128(sp) + 3bc02304: fca6 sd s1,120(sp) + 3bc02306: f8ca sd s2,112(sp) + 3bc02308: f4ce sd s3,104(sp) + 3bc0230a: ecd6 sd s5,88(sp) + 3bc0230c: e8da sd s6,80(sp) + 3bc0230e: e4de sd s7,72(sp) + 3bc02310: e0e2 sd s8,64(sp) + 3bc02312: fc66 sd s9,56(sp) + 3bc02314: f86a sd s10,48(sp) + 3bc02316: f46e sd s11,40(sp) + 3bc02318: 00ca2023 sw a2,0(s4) + 3bc0231c: 0e0007b7 lui a5,0xe000 + 3bc02320: 0007a223 sw zero,4(a5) # e000004 + 3bc02324: f85ff0ef jal ra,3bc022a8 + 3bc02328: e909 bnez a0,3bc0233a + 3bc0232a: 00009517 auipc a0,0x9 + 3bc0232e: a5650513 addi a0,a0,-1450 # 3bc0ad80 <__func__.1+0x2d8> + 3bc02332: 826fe0ef jal ra,3bc00358 + 3bc02336: 596d li s2,-5 + 3bc02338: a111 j 3bc0273c + 3bc0233a: f7bff0ef jal ra,3bc022b4 + 3bc0233e: 0005049b sext.w s1,a0 + 3bc02342: 85a6 mv a1,s1 + 3bc02344: 00009517 auipc a0,0x9 + 3bc02348: a5450513 addi a0,a0,-1452 # 3bc0ad98 <__func__.1+0x2f0> + 3bc0234c: 80cfe0ef jal ra,3bc00358 + 3bc02350: 67e1 lui a5,0x18 + 3bc02352: 69e78793 addi a5,a5,1694 # 1869e <__BSS_SIZE__+0x12a8e> + 3bc02356: 0297f463 bgeu a5,s1,3bc0237e + 3bc0235a: 4785 li a5,1 + 3bc0235c: 00009517 auipc a0,0x9 + 3bc02360: a5450513 addi a0,a0,-1452 # 3bc0adb0 <__func__.1+0x308> + 3bc02364: 00011717 auipc a4,0x11 + 3bc02368: 4af70223 sb a5,1188(a4) # 3bc13808 + 3bc0236c: fedfd0ef jal ra,3bc00358 + 3bc02370: c00037b7 lui a5,0xc0003 + 3bc02374: 03000737 lui a4,0x3000 + 3bc02378: 078d addi a5,a5,3 + 3bc0237a: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc0237e: 85a6 mv a1,s1 + 3bc02380: 00009517 auipc a0,0x9 + 3bc02384: a3850513 addi a0,a0,-1480 # 3bc0adb8 <__func__.1+0x310> + 3bc02388: fd1fd0ef jal ra,3bc00358 + 3bc0238c: 3e800793 li a5,1000 + 3bc02390: 029787bb mulw a5,a5,s1 + 3bc02394: e43e sd a5,8(sp) + 3bc02396: c00037b7 lui a5,0xc0003 + 3bc0239a: 10178793 addi a5,a5,257 # ffffffffc0003101 <__BL2_END__+0xffffffff843ef8f1> + 3bc0239e: e83e sd a5,16(sp) + 3bc023a0: c00017b7 lui a5,0xc0001 + 3bc023a4: 0791 addi a5,a5,4 + 3bc023a6: ec3e sd a5,24(sp) + 3bc023a8: 00011797 auipc a5,0x11 + 3bc023ac: 3607b423 sd zero,872(a5) # 3bc13710 + 3bc023b0: 00011797 auipc a5,0x11 + 3bc023b4: 3607bc23 sd zero,888(a5) # 3bc13728 + 3bc023b8: 00011797 auipc a5,0x11 + 3bc023bc: 3607bc23 sd zero,888(a5) # 3bc13730 + 3bc023c0: 00011797 auipc a5,0x11 + 3bc023c4: 3807b023 sd zero,896(a5) # 3bc13740 + 3bc023c8: 00011797 auipc a5,0x11 + 3bc023cc: 3807b023 sd zero,896(a5) # 3bc13748 + 3bc023d0: 00011797 auipc a5,0x11 + 3bc023d4: 3407b423 sd zero,840(a5) # 3bc13718 + 3bc023d8: 00011797 auipc a5,0x11 + 3bc023dc: 3407b423 sd zero,840(a5) # 3bc13720 + 3bc023e0: 00011797 auipc a5,0x11 + 3bc023e4: 3407bc23 sd zero,856(a5) # 3bc13738 + 3bc023e8: 00011797 auipc a5,0x11 + 3bc023ec: 40078fa3 sb zero,1055(a5) # 3bc13807 + 3bc023f0: 00011797 auipc a5,0x11 + 3bc023f4: 40078b23 sb zero,1046(a5) # 3bc13806 + 3bc023f8: 00011797 auipc a5,0x11 + 3bc023fc: 400786a3 sb zero,1037(a5) # 3bc13805 + 3bc02400: 00011797 auipc a5,0x11 + 3bc02404: 400785a3 sb zero,1035(a5) # 3bc1380b + 3bc02408: 00011797 auipc a5,0x11 + 3bc0240c: 3e07a023 sw zero,992(a5) # 3bc137e8 + 3bc02410: 00011797 auipc a5,0x11 + 3bc02414: 2e07bc23 sd zero,760(a5) # 3bc13708 + 3bc02418: 00011797 auipc a5,0x11 + 3bc0241c: 3e0788a3 sb zero,1009(a5) # 3bc13809 + 3bc02420: bd9ff0ef jal ra,3bc01ff8 + 3bc02424: c77ff0ef jal ra,3bc0209a + 3bc02428: 00009417 auipc s0,0x9 + 3bc0242c: 4a840413 addi s0,s0,1192 # 3bc0b8d0 + 3bc02430: 00009797 auipc a5,0x9 + 3bc02434: 5507b783 ld a5,1360(a5) # 3bc0b980 + 3bc02438: e41c sd a5,8(s0) + 3bc0243a: 40000793 li a5,1024 + 3bc0243e: c81c sw a5,16(s0) + 3bc02440: 00009517 auipc a0,0x9 + 3bc02444: 49850513 addi a0,a0,1176 # 3bc0b8d8 + 3bc02448: 00009797 auipc a5,0x9 + 3bc0244c: 5607b783 ld a5,1376(a5) # 3bc0b9a8 + 3bc02450: e43c sd a5,72(s0) + 3bc02452: 6cd000ef jal ra,3bc0331e + 3bc02456: 0005099b sext.w s3,a0 + 3bc0245a: 892a mv s2,a0 + 3bc0245c: 02099063 bnez s3,3bc0247c + 3bc02460: 00009517 auipc a0,0x9 + 3bc02464: 4c850513 addi a0,a0,1224 # 3bc0b928 + 3bc02468: 54f000ef jal ra,3bc031b6 + 3bc0246c: 02055763 bgez a0,3bc0249a + 3bc02470: 00009517 auipc a0,0x9 + 3bc02474: 97050513 addi a0,a0,-1680 # 3bc0ade0 <__func__.1+0x338> + 3bc02478: ee1fd0ef jal ra,3bc00358 + 3bc0247c: 85ce mv a1,s3 + 3bc0247e: 00009517 auipc a0,0x9 + 3bc02482: 9fa50513 addi a0,a0,-1542 # 3bc0ae78 <__func__.1+0x3d0> + 3bc02486: ed3fd0ef jal ra,3bc00358 + 3bc0248a: c00037b7 lui a5,0xc0003 + 3bc0248e: 03000737 lui a4,0x3000 + 3bc02492: 079d addi a5,a5,7 + 3bc02494: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02498: a455 j 3bc0273c + 3bc0249a: 6000 ld s0,0(s0) + 3bc0249c: e411 bnez s0,3bc024a8 + 3bc0249e: 00009517 auipc a0,0x9 + 3bc024a2: 96250513 addi a0,a0,-1694 # 3bc0ae00 <__func__.1+0x358> + 3bc024a6: bfc9 j 3bc02478 + 3bc024a8: cc9ff0ef jal ra,3bc02170 + 3bc024ac: 4501 li a0,0 + 3bc024ae: d11fd0ef jal ra,3bc001be + 3bc024b2: 6742 ld a4,16(sp) + 3bc024b4: 00011917 auipc s2,0x11 + 3bc024b8: 33890913 addi s2,s2,824 # 3bc137ec + 3bc024bc: 00a92023 sw a0,0(s2) + 3bc024c0: 6522 ld a0,8(sp) + 3bc024c2: 030007b7 lui a5,0x3000 + 3bc024c6: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc024ca: cb1fd0ef jal ra,3bc0017a + 3bc024ce: 681c ld a5,16(s0) + 3bc024d0: 4585 li a1,1 + 3bc024d2: 8522 mv a0,s0 + 3bc024d4: 779c ld a5,40(a5) + 3bc024d6: 00011997 auipc s3,0x11 + 3bc024da: 24a98993 addi s3,s3,586 # 3bc13720 + 3bc024de: 00011b17 auipc s6,0x11 + 3bc024e2: 32ab0b13 addi s6,s6,810 # 3bc13808 + 3bc024e6: 9782 jalr a5 + 3bc024e8: 00011a97 auipc s5,0x11 + 3bc024ec: 31da8a93 addi s5,s5,797 # 3bc13805 + 3bc024f0: 000ac783 lbu a5,0(s5) + 3bc024f4: 18078663 beqz a5,3bc02680 + 3bc024f8: 6762 ld a4,24(sp) + 3bc024fa: 030007b7 lui a5,0x3000 + 3bc024fe: 00043b83 ld s7,0(s0) + 3bc02502: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02506: 4785 li a5,1 + 3bc02508: 00011717 auipc a4,0x11 + 3bc0250c: 30f701a3 sb a5,771(a4) # 3bc1380b + 3bc02510: 08200c13 li s8,130 + 3bc02514: 00011c97 auipc s9,0x11 + 3bc02518: 234c8c93 addi s9,s9,564 # 3bc13748 + 3bc0251c: 00011d17 auipc s10,0x11 + 3bc02520: 1fcd0d13 addi s10,s10,508 # 3bc13718 + 3bc02524: 00011d97 auipc s11,0x11 + 3bc02528: 21cd8d93 addi s11,s11,540 # 3bc13740 + 3bc0252c: 19741b63 bne s0,s7,3bc026c2 + 3bc02530: 02044783 lbu a5,32(s0) + 3bc02534: 470d li a4,3 + 3bc02536: 1ee78063 beq a5,a4,3bc02716 + 3bc0253a: 4715 li a4,5 + 3bc0253c: 1ee78063 beq a5,a4,3bc0271c + 3bc02540: 4709 li a4,2 + 3bc02542: dee79ae3 bne a5,a4,3bc02336 + 3bc02546: 04000793 li a5,64 + 3bc0254a: 0009b503 ld a0,0(s3) + 3bc0254e: 04000613 li a2,64 + 3bc02552: 4581 li a1,0 + 3bc02554: 00011717 auipc a4,0x11 + 3bc02558: 28f72a23 sw a5,660(a4) # 3bc137e8 + 3bc0255c: cc4fe0ef jal ra,3bc00a20 + 3bc02560: 0009b783 ld a5,0(s3) + 3bc02564: 00011717 auipc a4,0x11 + 3bc02568: 1c473703 ld a4,452(a4) # 3bc13728 + 3bc0256c: 00011b97 auipc s7,0x11 + 3bc02570: 27cb8b93 addi s7,s7,636 # 3bc137e8 + 3bc02574: eb98 sd a4,16(a5) + 3bc02576: cfd8 sw a4,28(a5) + 3bc02578: fffff717 auipc a4,0xfffff + 3bc0257c: 33270713 addi a4,a4,818 # 3bc018aa + 3bc02580: f798 sd a4,40(a5) + 3bc02582: 00011c17 auipc s8,0x11 + 3bc02586: 196c0c13 addi s8,s8,406 # 3bc13718 + 3bc0258a: 000ba703 lw a4,0(s7) + 3bc0258e: 000c3503 ld a0,0(s8) + 3bc02592: 04000613 li a2,64 + 3bc02596: cf98 sw a4,24(a5) + 3bc02598: 4581 li a1,0 + 3bc0259a: c86fe0ef jal ra,3bc00a20 + 3bc0259e: 000c3783 ld a5,0(s8) + 3bc025a2: 00011717 auipc a4,0x11 + 3bc025a6: 16e73703 ld a4,366(a4) # 3bc13710 + 3bc025aa: 00011517 auipc a0,0x11 + 3bc025ae: 19e53503 ld a0,414(a0) # 3bc13748 + 3bc025b2: eb98 sd a4,16(a5) + 3bc025b4: cfd8 sw a4,28(a5) + 3bc025b6: fffff717 auipc a4,0xfffff + 3bc025ba: 5ae70713 addi a4,a4,1454 # 3bc01b64 + 3bc025be: f798 sd a4,40(a5) + 3bc025c0: 000ba703 lw a4,0(s7) + 3bc025c4: 0009b583 ld a1,0(s3) + 3bc025c8: 4b85 li s7,1 + 3bc025ca: cf98 sw a4,24(a5) + 3bc025cc: 711c ld a5,32(a0) + 3bc025ce: 739c ld a5,32(a5) + 3bc025d0: 9782 jalr a5 + 3bc025d2: 500c lw a1,32(s0) + 3bc025d4: 00009517 auipc a0,0x9 + 3bc025d8: 86450513 addi a0,a0,-1948 # 3bc0ae38 <__func__.1+0x390> + 3bc025dc: d7dfd0ef jal ra,3bc00358 + 3bc025e0: 4501 li a0,0 + 3bc025e2: bddfd0ef jal ra,3bc001be + 3bc025e6: 00a92023 sw a0,0(s2) + 3bc025ea: b81ff0ef jal ra,3bc0216a + 3bc025ee: 000ac783 lbu a5,0(s5) + 3bc025f2: ee078be3 beqz a5,3bc024e8 + 3bc025f6: 00011797 auipc a5,0x11 + 3bc025fa: 21078793 addi a5,a5,528 # 3bc13806 + 3bc025fe: 0007c783 lbu a5,0(a5) + 3bc02602: eb95 bnez a5,3bc02636 + 3bc02604: 000b4783 lbu a5,0(s6) + 3bc02608: 10079d63 bnez a5,3bc02722 + 3bc0260c: 00092503 lw a0,0(s2) + 3bc02610: baffd0ef jal ra,3bc001be + 3bc02614: 2501 sext.w a0,a0 + 3bc02616: fca4fae3 bgeu s1,a0,3bc025ea + 3bc0261a: 85a6 mv a1,s1 + 3bc0261c: 00009517 auipc a0,0x9 + 3bc02620: 83c50513 addi a0,a0,-1988 # 3bc0ae58 <__func__.1+0x3b0> + 3bc02624: d35fd0ef jal ra,3bc00358 + 3bc02628: c00037b7 lui a5,0xc0003 + 3bc0262c: 03000737 lui a4,0x3000 + 3bc02630: 0795 addi a5,a5,5 + 3bc02632: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02636: 00009517 auipc a0,0x9 + 3bc0263a: 83a50513 addi a0,a0,-1990 # 3bc0ae70 <__func__.1+0x3c8> + 3bc0263e: d1bfd0ef jal ra,3bc00358 + 3bc02642: c00037b7 lui a5,0xc0003 + 3bc02646: 03000737 lui a4,0x3000 + 3bc0264a: 0799 addi a5,a5,6 + 3bc0264c: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02650: 681c ld a5,16(s0) + 3bc02652: 4581 li a1,0 + 3bc02654: 8522 mv a0,s0 + 3bc02656: 779c ld a5,40(a5) + 3bc02658: 9782 jalr a5 + 3bc0265a: 00009517 auipc a0,0x9 + 3bc0265e: 2ce50513 addi a0,a0,718 # 3bc0b928 + 3bc02662: 380000ef jal ra,3bc029e2 + 3bc02666: 0e0007b7 lui a5,0xe000 + 3bc0266a: 0047a903 lw s2,4(a5) # e000004 + 3bc0266e: 4d4757b7 lui a5,0x4d475 + 3bc02672: e3178793 addi a5,a5,-463 # 4d474e31 <__BL2_END__+0x11861621> + 3bc02676: 40f90933 sub s2,s2,a5 + 3bc0267a: 00193913 seqz s2,s2 + 3bc0267e: a87d j 3bc0273c + 3bc02680: aebff0ef jal ra,3bc0216a + 3bc02684: 00092503 lw a0,0(s2) + 3bc02688: b37fd0ef jal ra,3bc001be + 3bc0268c: 2501 sext.w a0,a0 + 3bc0268e: 02a4f363 bgeu s1,a0,3bc026b4 + 3bc02692: 000b4783 lbu a5,0(s6) + 3bc02696: ef99 bnez a5,3bc026b4 + 3bc02698: 00008517 auipc a0,0x8 + 3bc0269c: 79050513 addi a0,a0,1936 # 3bc0ae28 <__func__.1+0x380> + 3bc026a0: cb9fd0ef jal ra,3bc00358 + 3bc026a4: c00037b7 lui a5,0xc0003 + 3bc026a8: 03000737 lui a4,0x3000 + 3bc026ac: 0791 addi a5,a5,4 + 3bc026ae: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc026b2: b151 j 3bc02336 + 3bc026b4: 00011797 auipc a5,0x11 + 3bc026b8: 1557c783 lbu a5,341(a5) # 3bc13809 + 3bc026bc: e20786e3 beqz a5,3bc024e8 + 3bc026c0: b1e5 j 3bc023a8 + 3bc026c2: 030bb703 ld a4,48(s7) + 3bc026c6: c305 beqz a4,3bc026e6 + 3bc026c8: 00274703 lbu a4,2(a4) + 3bc026cc: 08100793 li a5,129 + 3bc026d0: 00f71e63 bne a4,a5,3bc026ec + 3bc026d4: 020bb703 ld a4,32(s7) + 3bc026d8: 855e mv a0,s7 + 3bc026da: 6b18 ld a4,16(a4) + 3bc026dc: 9702 jalr a4 + 3bc026de: 00ad3023 sd a0,0(s10) + 3bc026e2: 017db023 sd s7,0(s11) + 3bc026e6: 000bbb83 ld s7,0(s7) + 3bc026ea: b589 j 3bc0252c + 3bc026ec: 4785 li a5,1 + 3bc026ee: 00f71c63 bne a4,a5,3bc02706 + 3bc026f2: 020bb703 ld a4,32(s7) + 3bc026f6: 855e mv a0,s7 + 3bc026f8: 6b18 ld a4,16(a4) + 3bc026fa: 9702 jalr a4 + 3bc026fc: 00a9b023 sd a0,0(s3) + 3bc02700: 017cb023 sd s7,0(s9) + 3bc02704: b7cd j 3bc026e6 + 3bc02706: ff8710e3 bne a4,s8,3bc026e6 + 3bc0270a: 020bb703 ld a4,32(s7) + 3bc0270e: 855e mv a0,s7 + 3bc02710: 6b18 ld a4,16(a4) + 3bc02712: 9702 jalr a4 + 3bc02714: bfc9 j 3bc026e6 + 3bc02716: 20000793 li a5,512 + 3bc0271a: bd05 j 3bc0254a + 3bc0271c: 40000793 li a5,1024 + 3bc02720: b52d j 3bc0254a + 3bc02722: ed7794e3 bne a5,s7,3bc025ea + 3bc02726: 000a2783 lw a5,0(s4) + 3bc0272a: ec0790e3 bnez a5,3bc025ea + 3bc0272e: 00008517 auipc a0,0x8 + 3bc02732: 73a50513 addi a0,a0,1850 # 3bc0ae68 <__func__.1+0x3c0> + 3bc02736: c23fd0ef jal ra,3bc00358 + 3bc0273a: 4905 li s2,1 + 3bc0273c: 60aa ld ra,136(sp) + 3bc0273e: 640a ld s0,128(sp) + 3bc02740: 74e6 ld s1,120(sp) + 3bc02742: 79a6 ld s3,104(sp) + 3bc02744: 7a06 ld s4,96(sp) + 3bc02746: 6ae6 ld s5,88(sp) + 3bc02748: 6b46 ld s6,80(sp) + 3bc0274a: 6ba6 ld s7,72(sp) + 3bc0274c: 6c06 ld s8,64(sp) + 3bc0274e: 7ce2 ld s9,56(sp) + 3bc02750: 7d42 ld s10,48(sp) + 3bc02752: 7da2 ld s11,40(sp) + 3bc02754: 854a mv a0,s2 + 3bc02756: 7946 ld s2,112(sp) + 3bc02758: 6149 addi sp,sp,144 + 3bc0275a: 8082 ret + +000000003bc0275c : + 3bc0275c: c909 beqz a0,3bc0276e + 3bc0275e: 07150783 lb a5,113(a0) + 3bc02762: 4501 li a0,0 + 3bc02764: 0007d663 bgez a5,3bc02770 + 3bc02768: fd300513 li a0,-45 + 3bc0276c: 8082 ret + 3bc0276e: 5535 li a0,-19 + 3bc02770: 8082 ret + +000000003bc02772 : + 3bc02772: 61b8 ld a4,64(a1) + 3bc02774: 7179 addi sp,sp,-48 + 3bc02776: f022 sd s0,32(sp) + 3bc02778: ec26 sd s1,24(sp) + 3bc0277a: 00011417 auipc s0,0x11 + 3bc0277e: 04643403 ld s0,70(s0) # 3bc137c0 + 3bc02782: f406 sd ra,40(sp) + 3bc02784: 04058793 addi a5,a1,64 + 3bc02788: 7c04 ld s1,56(s0) + 3bc0278a: 00f70a63 beq a4,a5,3bc0279e + 3bc0278e: 00008517 auipc a0,0x8 + 3bc02792: 73250513 addi a0,a0,1842 # 3bc0aec0 <__func__.5+0x8> + 3bc02796: e42e sd a1,8(sp) + 3bc02798: bc1fd0ef jal ra,3bc00358 + 3bc0279c: 65a2 ld a1,8(sp) + 3bc0279e: 8522 mv a0,s0 + 3bc027a0: 7402 ld s0,32(sp) + 3bc027a2: 68bc ld a5,80(s1) + 3bc027a4: 70a2 ld ra,40(sp) + 3bc027a6: 64e2 ld s1,24(sp) + 3bc027a8: 6145 addi sp,sp,48 + 3bc027aa: 8782 jr a5 + +000000003bc027ac : + 3bc027ac: 7179 addi sp,sp,-48 + 3bc027ae: ec26 sd s1,24(sp) + 3bc027b0: 00011497 auipc s1,0x11 + 3bc027b4: 00848493 addi s1,s1,8 # 3bc137b8 + 3bc027b8: 6088 ld a0,0(s1) + 3bc027ba: f022 sd s0,32(sp) + 3bc027bc: 6405 lui s0,0x1 + 3bc027be: 80440413 addi s0,s0,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc027c2: 9522 add a0,a0,s0 + 3bc027c4: e42e sd a1,8(sp) + 3bc027c6: f406 sd ra,40(sp) + 3bc027c8: f85fe0ef jal ra,3bc0174c + 3bc027cc: 65a2 ld a1,8(sp) + 3bc027ce: 609c ld a5,0(s1) + 3bc027d0: 2501 sext.w a0,a0 + 3bc027d2: ed89 bnez a1,3bc027ec + 3bc027d4: 008785b3 add a1,a5,s0 + 3bc027d8: 00256513 ori a0,a0,2 + 3bc027dc: f77fe0ef jal ra,3bc01752 + 3bc027e0: 70a2 ld ra,40(sp) + 3bc027e2: 7402 ld s0,32(sp) + 3bc027e4: 64e2 ld s1,24(sp) + 3bc027e6: 4501 li a0,0 + 3bc027e8: 6145 addi sp,sp,48 + 3bc027ea: 8082 ret + 3bc027ec: 008785b3 add a1,a5,s0 + 3bc027f0: 9975 andi a0,a0,-3 + 3bc027f2: b7ed j 3bc027dc + +000000003bc027f4 : + 3bc027f4: 00011517 auipc a0,0x11 + 3bc027f8: fcc53503 ld a0,-52(a0) # 3bc137c0 + 3bc027fc: 7d1c ld a5,56(a0) + 3bc027fe: 1141 addi sp,sp,-16 + 3bc02800: e022 sd s0,0(sp) + 3bc02802: 67bc ld a5,72(a5) + 3bc02804: e406 sd ra,8(sp) + 3bc02806: 05000593 li a1,80 + 3bc0280a: 9782 jalr a5 + 3bc0280c: 842a mv s0,a0 + 3bc0280e: c911 beqz a0,3bc02822 + 3bc02810: 05000613 li a2,80 + 3bc02814: 4581 li a1,0 + 3bc02816: a0afe0ef jal ra,3bc00a20 + 3bc0281a: 04040793 addi a5,s0,64 + 3bc0281e: e03c sd a5,64(s0) + 3bc02820: e43c sd a5,72(s0) + 3bc02822: 60a2 ld ra,8(sp) + 3bc02824: 8522 mv a0,s0 + 3bc02826: 6402 ld s0,0(sp) + 3bc02828: 0141 addi sp,sp,16 + 3bc0282a: 8082 ret + +000000003bc0282c : + 3bc0282c: cd51 beqz a0,3bc028c8 + 3bc0282e: 1141 addi sp,sp,-16 + 3bc02830: e022 sd s0,0(sp) + 3bc02832: e406 sd ra,8(sp) + 3bc02834: 842a mv s0,a0 + 3bc02836: 5529 li a0,-22 + 3bc02838: c5c1 beqz a1,3bc028c0 + 3bc0283a: 603c ld a5,64(s0) + 3bc0283c: e3d1 bnez a5,3bc028c0 + 3bc0283e: 6c18 ld a4,24(s0) + 3bc02840: 00009797 auipc a5,0x9 + 3bc02844: 93878793 addi a5,a5,-1736 # 3bc0b178 + 3bc02848: 06f70c63 beq a4,a5,3bc028c0 + 3bc0284c: 0015c703 lbu a4,1(a1) + 3bc02850: 4795 li a5,5 + 3bc02852: 06f71763 bne a4,a5,3bc028c0 + 3bc02856: 07144703 lbu a4,113(s0) + 3bc0285a: 0025c783 lbu a5,2(a1) + 3bc0285e: 06f71163 bne a4,a5,3bc028c0 + 3bc02862: 0045d783 lhu a5,4(a1) + 3bc02866: 02845703 lhu a4,40(s0) + 3bc0286a: 04f76b63 bltu a4,a5,3bc028c0 + 3bc0286e: 07244683 lbu a3,114(s0) + 3bc02872: 0035c703 lbu a4,3(a1) + 3bc02876: 00e68863 beq a3,a4,3bc02886 + 3bc0287a: 4609 li a2,2 + 3bc0287c: 00c68563 beq a3,a2,3bc02886 + 3bc02880: 468d li a3,3 + 3bc02882: 02d71f63 bne a4,a3,3bc028c0 + 3bc02886: fde00513 li a0,-34 + 3bc0288a: cb9d beqz a5,3bc028c0 + 3bc0288c: 7c18 ld a4,56(s0) + 3bc0288e: fc600513 li a0,-58 + 3bc02892: 7f14 ld a3,56(a4) + 3bc02894: c695 beqz a3,3bc028c0 + 3bc02896: 5318 lw a4,32(a4) + 3bc02898: c705 beqz a4,3bc028c0 + 3bc0289a: 02f41423 sh a5,40(s0) + 3bc0289e: f80c sd a1,48(s0) + 3bc028a0: e02c sd a1,64(s0) + 3bc028a2: 8522 mv a0,s0 + 3bc028a4: 06040823 sb zero,112(s0) + 3bc028a8: 04043c23 sd zero,88(s0) + 3bc028ac: 35e010ef jal ra,3bc03c0a + 3bc028b0: 4581 li a1,0 + 3bc028b2: 8522 mv a0,s0 + 3bc028b4: 396010ef jal ra,3bc03c4a + 3bc028b8: 8522 mv a0,s0 + 3bc028ba: 3f2010ef jal ra,3bc03cac + 3bc028be: 4501 li a0,0 + 3bc028c0: 60a2 ld ra,8(sp) + 3bc028c2: 6402 ld s0,0(sp) + 3bc028c4: 0141 addi sp,sp,16 + 3bc028c6: 8082 ret + 3bc028c8: 5529 li a0,-22 + 3bc028ca: 8082 ret + +000000003bc028cc : + 3bc028cc: 8082 ret + +000000003bc028ce : + 3bc028ce: 8082 ret + +000000003bc028d0 : + 3bc028d0: 00009517 auipc a0,0x9 + 3bc028d4: 8a850513 addi a0,a0,-1880 # 3bc0b178 + 3bc028d8: 8082 ret + +000000003bc028da : + 3bc028da: 6d1c ld a5,24(a0) + 3bc028dc: f8a5550b sdd a0,a0,(a0),0,4 + 3bc028e0: 29850613 addi a2,a0,664 + 3bc028e4: f8f7d78b sdd a5,a5,(a5),0,4 + 3bc028e8: 04052423 sw zero,72(a0) + 3bc028ec: 09850793 addi a5,a0,152 + 3bc028f0: fe07bc23 sd zero,-8(a5) + 3bc028f4: 02078423 sb zero,40(a5) + 3bc028f8: f8f7d78b sdd a5,a5,(a5),0,4 + 3bc028fc: 0007b823 sd zero,16(a5) + 3bc02900: 08078713 addi a4,a5,128 + 3bc02904: 00c71363 bne a4,a2,3bc0290a + 3bc02908: 8082 ret + 3bc0290a: 6514 ld a3,8(a0) + 3bc0290c: 03878793 addi a5,a5,56 + 3bc02910: e51c sd a5,8(a0) + 3bc02912: faa73c23 sd a0,-72(a4) + 3bc02916: fcd73023 sd a3,-64(a4) + 3bc0291a: e29c sd a5,0(a3) + 3bc0291c: 87ba mv a5,a4 + 3bc0291e: bfc9 j 3bc028f0 + +000000003bc02920 : + 3bc02920: 65b8 ld a4,72(a1) + 3bc02922: 61b4 ld a3,64(a1) + 3bc02924: 1101 addi sp,sp,-32 + 3bc02926: ec06 sd ra,24(sp) + 3bc02928: e822 sd s0,16(sp) + 3bc0292a: 07054403 lbu s0,112(a0) + 3bc0292e: e698 sd a4,8(a3) + 3bc02930: e314 sd a3,0(a4) + 3bc02932: 5d98 lw a4,56(a1) + 3bc02934: 04058793 addi a5,a1,64 + 3bc02938: e1bc sd a5,64(a1) + 3bc0293a: e5bc sd a5,72(a1) + 3bc0293c: fdc00793 li a5,-36 + 3bc02940: 00f71363 bne a4,a5,3bc02946 + 3bc02944: dd90 sw a2,56(a1) + 3bc02946: 4785 li a5,1 + 3bc02948: 06f50823 sb a5,112(a0) + 3bc0294c: 759c ld a5,40(a1) + 3bc0294e: e42a sd a0,8(sp) + 3bc02950: 9782 jalr a5 + 3bc02952: 6522 ld a0,8(sp) + 3bc02954: 06850823 sb s0,112(a0) + 3bc02958: 60e2 ld ra,24(sp) + 3bc0295a: 6442 ld s0,16(sp) + 3bc0295c: 6105 addi sp,sp,32 + 3bc0295e: 8082 ret + +000000003bc02960 : + 3bc02960: c539 beqz a0,3bc029ae + 3bc02962: 6d14 ld a3,24(a0) + 3bc02964: 00009797 auipc a5,0x9 + 3bc02968: 81478793 addi a5,a5,-2028 # 3bc0b178 + 3bc0296c: 5729 li a4,-22 + 3bc0296e: 04f68163 beq a3,a5,3bc029b0 + 3bc02972: 872a mv a4,a0 + 3bc02974: 6e97478b ldib a5,(a4),9,3 + 3bc02978: fc078793 addi a5,a5,-64 + 3bc0297c: 86be mv a3,a5 + 3bc0297e: 6e86c60b ldib a2,(a3),8,3 + 3bc02982: 02e69163 bne a3,a4,3bc029a4 + 3bc02986: 5729 li a4,-22 + 3bc02988: 02f59463 bne a1,a5,3bc029b0 + 3bc0298c: 1141 addi sp,sp,-16 + 3bc0298e: fca00613 li a2,-54 + 3bc02992: 85be mv a1,a5 + 3bc02994: e406 sd ra,8(sp) + 3bc02996: f8bff0ef jal ra,3bc02920 + 3bc0299a: 60a2 ld ra,8(sp) + 3bc0299c: 4701 li a4,0 + 3bc0299e: 853a mv a0,a4 + 3bc029a0: 0141 addi sp,sp,16 + 3bc029a2: 8082 ret + 3bc029a4: fef584e3 beq a1,a5,3bc0298c + 3bc029a8: fc060793 addi a5,a2,-64 + 3bc029ac: bfc1 j 3bc0297c + 3bc029ae: 5729 li a4,-22 + 3bc029b0: 853a mv a0,a4 + 3bc029b2: 8082 ret + +000000003bc029b4 : + 3bc029b4: 7179 addi sp,sp,-48 + 3bc029b6: f022 sd s0,32(sp) + 3bc029b8: ec26 sd s1,24(sp) + 3bc029ba: f406 sd ra,40(sp) + 3bc029bc: 84ae mv s1,a1 + 3bc029be: 04850413 addi s0,a0,72 + 3bc029c2: 652c ld a1,72(a0) + 3bc029c4: 00859763 bne a1,s0,3bc029d2 + 3bc029c8: 70a2 ld ra,40(sp) + 3bc029ca: 7402 ld s0,32(sp) + 3bc029cc: 64e2 ld s1,24(sp) + 3bc029ce: 6145 addi sp,sp,48 + 3bc029d0: 8082 ret + 3bc029d2: 8626 mv a2,s1 + 3bc029d4: fc058593 addi a1,a1,-64 + 3bc029d8: e42a sd a0,8(sp) + 3bc029da: f47ff0ef jal ra,3bc02920 + 3bc029de: 6522 ld a0,8(sp) + 3bc029e0: b7cd j 3bc029c2 + +000000003bc029e2 : + 3bc029e2: 7139 addi sp,sp,-64 + 3bc029e4: f822 sd s0,48(sp) + 3bc029e6: fc06 sd ra,56(sp) + 3bc029e8: f426 sd s1,40(sp) + 3bc029ea: f04a sd s2,32(sp) + 3bc029ec: ec4e sd s3,24(sp) + 3bc029ee: e852 sd s4,16(sp) + 3bc029f0: e456 sd s5,8(sp) + 3bc029f2: 00011417 auipc s0,0x11 + 3bc029f6: dce43403 ld s0,-562(s0) # 3bc137c0 + 3bc029fa: cc3d beqz s0,3bc02a78 + 3bc029fc: 84aa mv s1,a0 + 3bc029fe: 5529 li a0,-22 + 3bc02a00: c0bd beqz s1,3bc02a66 + 3bc02a02: 7c18 ld a4,56(s0) + 3bc02a04: 06971163 bne a4,s1,3bc02a66 + 3bc02a08: 5018 lw a4,32(s0) + 3bc02a0a: 02043c23 sd zero,56(s0) + 3bc02a0e: 89a6 mv s3,s1 + 3bc02a10: e311 bnez a4,3bc02a14 + 3bc02a12: 4981 li s3,0 + 3bc02a14: 02042023 sw zero,32(s0) + 3bc02a18: 05040913 addi s2,s0,80 + 3bc02a1c: 25040a13 addi s4,s0,592 + 3bc02a20: 4a85 li s5,1 + 3bc02a22: 07590823 sb s5,112(s2) + 3bc02a26: 854a mv a0,s2 + 3bc02a28: fc600593 li a1,-58 + 3bc02a2c: 08090913 addi s2,s2,128 + 3bc02a30: f85ff0ef jal ra,3bc029b4 + 3bc02a34: ff4917e3 bne s2,s4,3bc02a22 + 3bc02a38: 00098663 beqz s3,3bc02a44 + 3bc02a3c: 0289b783 ld a5,40(s3) + 3bc02a40: 8522 mv a0,s0 + 3bc02a42: 9782 jalr a5 + 3bc02a44: 8522 mv a0,s0 + 3bc02a46: e95ff0ef jal ra,3bc028da + 3bc02a4a: 6c9c ld a5,24(s1) + 3bc02a4c: 8522 mv a0,s0 + 3bc02a4e: 9782 jalr a5 + 3bc02a50: 8522 mv a0,s0 + 3bc02a52: 4581 li a1,0 + 3bc02a54: 106010ef jal ra,3bc03b5a + 3bc02a58: 4501 li a0,0 + 3bc02a5a: 04042423 sw zero,72(s0) + 3bc02a5e: 02042023 sw zero,32(s0) + 3bc02a62: 24040823 sb zero,592(s0) + 3bc02a66: 70e2 ld ra,56(sp) + 3bc02a68: 7442 ld s0,48(sp) + 3bc02a6a: 74a2 ld s1,40(sp) + 3bc02a6c: 7902 ld s2,32(sp) + 3bc02a6e: 69e2 ld s3,24(sp) + 3bc02a70: 6a42 ld s4,16(sp) + 3bc02a72: 6aa2 ld s5,8(sp) + 3bc02a74: 6121 addi sp,sp,64 + 3bc02a76: 8082 ret + 3bc02a78: 5535 li a0,-19 + 3bc02a7a: b7f5 j 3bc02a66 + +000000003bc02a7c : + 3bc02a7c: 1101 addi sp,sp,-32 + 3bc02a7e: e822 sd s0,16(sp) + 3bc02a80: e426 sd s1,8(sp) + 3bc02a82: ec06 sd ra,24(sp) + 3bc02a84: 842e mv s0,a1 + 3bc02a86: 84aa mv s1,a0 + 3bc02a88: cc5fe0ef jal ra,3bc0174c + 3bc02a8c: 2501 sext.w a0,a0 + 3bc02a8e: 8d41 or a0,a0,s0 + 3bc02a90: 6442 ld s0,16(sp) + 3bc02a92: 60e2 ld ra,24(sp) + 3bc02a94: 85a6 mv a1,s1 + 3bc02a96: 64a2 ld s1,8(sp) + 3bc02a98: 6105 addi sp,sp,32 + 3bc02a9a: cb9fe06f j 3bc01752 + +000000003bc02a9e : + 3bc02a9e: 1101 addi sp,sp,-32 + 3bc02aa0: e822 sd s0,16(sp) + 3bc02aa2: ec06 sd ra,24(sp) + 3bc02aa4: 842a mv s0,a0 + 3bc02aa6: e42e sd a1,8(sp) + 3bc02aa8: ca5fe0ef jal ra,3bc0174c + 3bc02aac: 65a2 ld a1,8(sp) + 3bc02aae: 60e2 ld ra,24(sp) + 3bc02ab0: 2501 sext.w a0,a0 + 3bc02ab2: fff5c793 not a5,a1 + 3bc02ab6: 85a2 mv a1,s0 + 3bc02ab8: 6442 ld s0,16(sp) + 3bc02aba: 8d7d and a0,a0,a5 + 3bc02abc: 6105 addi sp,sp,32 + 3bc02abe: c95fe06f j 3bc01752 + +000000003bc02ac2 : + 3bc02ac2: 1101 addi sp,sp,-32 + 3bc02ac4: e426 sd s1,8(sp) + 3bc02ac6: 00011497 auipc s1,0x11 + 3bc02aca: cf248493 addi s1,s1,-782 # 3bc137b8 + 3bc02ace: 6088 ld a0,0(s1) + 3bc02ad0: e822 sd s0,16(sp) + 3bc02ad2: 6405 lui s0,0x1 + 3bc02ad4: 80440413 addi s0,s0,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02ad8: 4585 li a1,1 + 3bc02ada: 9522 add a0,a0,s0 + 3bc02adc: ec06 sd ra,24(sp) + 3bc02ade: f9fff0ef jal ra,3bc02a7c + 3bc02ae2: 4529 li a0,10 + 3bc02ae4: ed0fd0ef jal ra,3bc001b4 + 3bc02ae8: 6088 ld a0,0(s1) + 3bc02aea: 4585 li a1,1 + 3bc02aec: 9522 add a0,a0,s0 + 3bc02aee: fb1ff0ef jal ra,3bc02a9e + 3bc02af2: 60e2 ld ra,24(sp) + 3bc02af4: 6442 ld s0,16(sp) + 3bc02af6: 64a2 ld s1,8(sp) + 3bc02af8: 4501 li a0,0 + 3bc02afa: 6105 addi sp,sp,32 + 3bc02afc: 8082 ret + +000000003bc02afe : + 3bc02afe: 7179 addi sp,sp,-48 + 3bc02b00: f022 sd s0,32(sp) + 3bc02b02: ec26 sd s1,24(sp) + 3bc02b04: e84a sd s2,16(sp) + 3bc02b06: e44e sd s3,8(sp) + 3bc02b08: f406 sd ra,40(sp) + 3bc02b0a: 892a mv s2,a0 + 3bc02b0c: 89ae mv s3,a1 + 3bc02b0e: 84b2 mv s1,a2 + 3bc02b10: 4401 li s0,0 + 3bc02b12: 00941b63 bne s0,s1,3bc02b28 + 3bc02b16: fc400513 li a0,-60 + 3bc02b1a: 70a2 ld ra,40(sp) + 3bc02b1c: 7402 ld s0,32(sp) + 3bc02b1e: 64e2 ld s1,24(sp) + 3bc02b20: 6942 ld s2,16(sp) + 3bc02b22: 69a2 ld s3,8(sp) + 3bc02b24: 6145 addi sp,sp,48 + 3bc02b26: 8082 ret + 3bc02b28: 854a mv a0,s2 + 3bc02b2a: c23fe0ef jal ra,3bc0174c + 3bc02b2e: 2501 sext.w a0,a0 + 3bc02b30: 01357533 and a0,a0,s3 + 3bc02b34: e511 bnez a0,3bc02b40 + 3bc02b36: 4505 li a0,1 + 3bc02b38: e52fd0ef jal ra,3bc0018a + 3bc02b3c: 2405 addiw s0,s0,1 + 3bc02b3e: bfd1 j 3bc02b12 + 3bc02b40: 4501 li a0,0 + 3bc02b42: bfe1 j 3bc02b1a + +000000003bc02b44 : + 3bc02b44: 1101 addi sp,sp,-32 + 3bc02b46: e426 sd s1,8(sp) + 3bc02b48: 00011497 auipc s1,0x11 + 3bc02b4c: c7048493 addi s1,s1,-912 # 3bc137b8 + 3bc02b50: e822 sd s0,16(sp) + 3bc02b52: 842a mv s0,a0 + 3bc02b54: 6088 ld a0,0(s1) + 3bc02b56: 6609 lui a2,0x2 + 3bc02b58: 71060613 addi a2,a2,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc02b5c: 800005b7 lui a1,0x80000 + 3bc02b60: 0541 addi a0,a0,16 + 3bc02b62: ec06 sd ra,24(sp) + 3bc02b64: f9bff0ef jal ra,3bc02afe + 3bc02b68: c919 beqz a0,3bc02b7e + 3bc02b6a: 00008597 auipc a1,0x8 + 3bc02b6e: 58658593 addi a1,a1,1414 # 3bc0b0f0 <__func__.3> + 3bc02b72: 00008517 auipc a0,0x8 + 3bc02b76: 37650513 addi a0,a0,886 # 3bc0aee8 <__func__.5+0x30> + 3bc02b7a: fdefd0ef jal ra,3bc00358 + 3bc02b7e: 608c ld a1,0(s1) + 3bc02b80: 0064151b slliw a0,s0,0x6 + 3bc02b84: 02056513 ori a0,a0,32 + 3bc02b88: 05c1 addi a1,a1,16 + 3bc02b8a: 2501 sext.w a0,a0 + 3bc02b8c: bc7fe0ef jal ra,3bc01752 + 3bc02b90: 06400413 li s0,100 + 3bc02b94: 6088 ld a0,0(s1) + 3bc02b96: 0541 addi a0,a0,16 + 3bc02b98: bb5fe0ef jal ra,3bc0174c + 3bc02b9c: 0005061b sext.w a2,a0 + 3bc02ba0: 02057513 andi a0,a0,32 + 3bc02ba4: cd09 beqz a0,3bc02bbe + 3bc02ba6: 347d addiw s0,s0,-1 + 3bc02ba8: e015 bnez s0,3bc02bcc + 3bc02baa: 00008597 auipc a1,0x8 + 3bc02bae: 54658593 addi a1,a1,1350 # 3bc0b0f0 <__func__.3> + 3bc02bb2: 00008517 auipc a0,0x8 + 3bc02bb6: 35650513 addi a0,a0,854 # 3bc0af08 <__func__.5+0x50> + 3bc02bba: f9efd0ef jal ra,3bc00358 + 3bc02bbe: 6442 ld s0,16(sp) + 3bc02bc0: 60e2 ld ra,24(sp) + 3bc02bc2: 64a2 ld s1,8(sp) + 3bc02bc4: 4505 li a0,1 + 3bc02bc6: 6105 addi sp,sp,32 + 3bc02bc8: dc2fd06f j 3bc0018a + 3bc02bcc: 4505 li a0,1 + 3bc02bce: dbcfd0ef jal ra,3bc0018a + 3bc02bd2: b7c9 j 3bc02b94 + +000000003bc02bd4 : + 3bc02bd4: 1101 addi sp,sp,-32 + 3bc02bd6: e426 sd s1,8(sp) + 3bc02bd8: e04a sd s2,0(sp) + 3bc02bda: ec06 sd ra,24(sp) + 3bc02bdc: e822 sd s0,16(sp) + 3bc02bde: 07154403 lbu s0,113(a0) + 3bc02be2: 84aa mv s1,a0 + 3bc02be4: 60000913 li s2,1536 + 3bc02be8: 883d andi s0,s0,15 + 3bc02bea: e019 bnez s0,3bc02bf0 + 3bc02bec: 10000913 li s2,256 + 3bc02bf0: 8526 mv a0,s1 + 3bc02bf2: dc3ff0ef jal ra,3bc029b4 + 3bc02bf6: 6505 lui a0,0x1 + 3bc02bf8: 91850513 addi a0,a0,-1768 # 918 <__BSS_SIZE__-0x52f8> + 3bc02bfc: 0416 slli s0,s0,0x5 + 3bc02bfe: 942a add s0,s0,a0 + 3bc02c00: 00011517 auipc a0,0x11 + 3bc02c04: bb853503 ld a0,-1096(a0) # 3bc137b8 + 3bc02c08: 9522 add a0,a0,s0 + 3bc02c0a: b43fe0ef jal ra,3bc0174c + 3bc02c0e: 3c05350b extu a0,a0,15,0 + 3bc02c12: 050a slli a0,a0,0x2 + 3bc02c14: 01257963 bgeu a0,s2,3bc02c26 + 3bc02c18: 6442 ld s0,16(sp) + 3bc02c1a: 5ca8 lw a0,120(s1) + 3bc02c1c: 60e2 ld ra,24(sp) + 3bc02c1e: 64a2 ld s1,8(sp) + 3bc02c20: 6902 ld s2,0(sp) + 3bc02c22: 6105 addi sp,sp,32 + 3bc02c24: b705 j 3bc02b44 + 3bc02c26: 60e2 ld ra,24(sp) + 3bc02c28: 6442 ld s0,16(sp) + 3bc02c2a: 64a2 ld s1,8(sp) + 3bc02c2c: 6902 ld s2,0(sp) + 3bc02c2e: 6105 addi sp,sp,32 + 3bc02c30: 8082 ret + +000000003bc02c32 : + 3bc02c32: 27052783 lw a5,624(a0) + 3bc02c36: cba1 beqz a5,3bc02c86 + 3bc02c38: 1101 addi sp,sp,-32 + 3bc02c3a: e822 sd s0,16(sp) + 3bc02c3c: e426 sd s1,8(sp) + 3bc02c3e: e04a sd s2,0(sp) + 3bc02c40: ec06 sd ra,24(sp) + 3bc02c42: 842a mv s0,a0 + 3bc02c44: 26052823 sw zero,624(a0) + 3bc02c48: 0d050493 addi s1,a0,208 + 3bc02c4c: 25050913 addi s2,a0,592 + 3bc02c50: 6c9c ld a5,24(s1) + 3bc02c52: c791 beqz a5,3bc02c5e + 3bc02c54: fc600593 li a1,-58 + 3bc02c58: 8526 mv a0,s1 + 3bc02c5a: f7bff0ef jal ra,3bc02bd4 + 3bc02c5e: 08048493 addi s1,s1,128 + 3bc02c62: ff2497e3 bne s1,s2,3bc02c50 + 3bc02c66: 7c1c ld a5,56(s0) + 3bc02c68: 779c ld a5,40(a5) + 3bc02c6a: cb81 beqz a5,3bc02c7a + 3bc02c6c: 8522 mv a0,s0 + 3bc02c6e: 6442 ld s0,16(sp) + 3bc02c70: 60e2 ld ra,24(sp) + 3bc02c72: 64a2 ld s1,8(sp) + 3bc02c74: 6902 ld s2,0(sp) + 3bc02c76: 6105 addi sp,sp,32 + 3bc02c78: 8782 jr a5 + 3bc02c7a: 60e2 ld ra,24(sp) + 3bc02c7c: 6442 ld s0,16(sp) + 3bc02c7e: 64a2 ld s1,8(sp) + 3bc02c80: 6902 ld s2,0(sp) + 3bc02c82: 6105 addi sp,sp,32 + 3bc02c84: 8082 ret + 3bc02c86: 8082 ret + +000000003bc02c88 : + 3bc02c88: 1101 addi sp,sp,-32 + 3bc02c8a: e822 sd s0,16(sp) + 3bc02c8c: 00011417 auipc s0,0x11 + 3bc02c90: b2c40413 addi s0,s0,-1236 # 3bc137b8 + 3bc02c94: 6008 ld a0,0(s0) + 3bc02c96: 6609 lui a2,0x2 + 3bc02c98: 71060613 addi a2,a2,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc02c9c: 800005b7 lui a1,0x80000 + 3bc02ca0: 0541 addi a0,a0,16 + 3bc02ca2: ec06 sd ra,24(sp) + 3bc02ca4: e426 sd s1,8(sp) + 3bc02ca6: e59ff0ef jal ra,3bc02afe + 3bc02caa: c919 beqz a0,3bc02cc0 + 3bc02cac: 00008597 auipc a1,0x8 + 3bc02cb0: 45c58593 addi a1,a1,1116 # 3bc0b108 <__func__.4> + 3bc02cb4: 00008517 auipc a0,0x8 + 3bc02cb8: 23450513 addi a0,a0,564 # 3bc0aee8 <__func__.5+0x30> + 3bc02cbc: e9cfd0ef jal ra,3bc00358 + 3bc02cc0: 600c ld a1,0(s0) + 3bc02cc2: 40000513 li a0,1024 + 3bc02cc6: 018004b7 lui s1,0x1800 + 3bc02cca: 02458593 addi a1,a1,36 + 3bc02cce: a85fe0ef jal ra,3bc01752 + 3bc02cd2: 600c ld a1,0(s0) + 3bc02cd4: 00400537 lui a0,0x400 + 3bc02cd8: 40050513 addi a0,a0,1024 # 400400 <__BSS_SIZE__+0x3fa7f0> + 3bc02cdc: 02858593 addi a1,a1,40 + 3bc02ce0: a73fe0ef jal ra,3bc01752 + 3bc02ce4: 600c ld a1,0(s0) + 3bc02ce6: 44048513 addi a0,s1,1088 # 1800440 <__BSS_SIZE__+0x17fa830> + 3bc02cea: 10458593 addi a1,a1,260 + 3bc02cee: a65fe0ef jal ra,3bc01752 + 3bc02cf2: 600c ld a1,0(s0) + 3bc02cf4: 5c048513 addi a0,s1,1472 + 3bc02cf8: 10858593 addi a1,a1,264 + 3bc02cfc: a57fe0ef jal ra,3bc01752 + 3bc02d00: 600c ld a1,0(s0) + 3bc02d02: 74048513 addi a0,s1,1856 + 3bc02d06: 06400493 li s1,100 + 3bc02d0a: 10c58593 addi a1,a1,268 + 3bc02d0e: a45fe0ef jal ra,3bc01752 + 3bc02d12: 600c ld a1,0(s0) + 3bc02d14: 43000513 li a0,1072 + 3bc02d18: 05c1 addi a1,a1,16 + 3bc02d1a: a39fe0ef jal ra,3bc01752 + 3bc02d1e: 6008 ld a0,0(s0) + 3bc02d20: 0541 addi a0,a0,16 + 3bc02d22: a2bfe0ef jal ra,3bc0174c + 3bc02d26: 0005061b sext.w a2,a0 + 3bc02d2a: 03057513 andi a0,a0,48 + 3bc02d2e: c50d beqz a0,3bc02d58 + 3bc02d30: 34fd addiw s1,s1,-1 + 3bc02d32: ec99 bnez s1,3bc02d50 + 3bc02d34: 6442 ld s0,16(sp) + 3bc02d36: 60e2 ld ra,24(sp) + 3bc02d38: 64a2 ld s1,8(sp) + 3bc02d3a: 00008597 auipc a1,0x8 + 3bc02d3e: 3ce58593 addi a1,a1,974 # 3bc0b108 <__func__.4> + 3bc02d42: 00008517 auipc a0,0x8 + 3bc02d46: 1f650513 addi a0,a0,502 # 3bc0af38 <__func__.5+0x80> + 3bc02d4a: 6105 addi sp,sp,32 + 3bc02d4c: e0cfd06f j 3bc00358 + 3bc02d50: 4505 li a0,1 + 3bc02d52: c38fd0ef jal ra,3bc0018a + 3bc02d56: b7e1 j 3bc02d1e + 3bc02d58: 60e2 ld ra,24(sp) + 3bc02d5a: 6442 ld s0,16(sp) + 3bc02d5c: 64a2 ld s1,8(sp) + 3bc02d5e: 6105 addi sp,sp,32 + 3bc02d60: 8082 ret + +000000003bc02d62 <_dwc2_ep_disable.isra.0>: + 3bc02d62: 00011717 auipc a4,0x11 + 3bc02d66: a5e73703 ld a4,-1442(a4) # 3bc137c0 + 3bc02d6a: 05070713 addi a4,a4,80 + 3bc02d6e: 07154683 lbu a3,113(a0) + 3bc02d72: 00e51c63 bne a0,a4,3bc02d8a <_dwc2_ep_disable.isra.0+0x28> + 3bc02d76: 00008597 auipc a1,0x8 + 3bc02d7a: 34a58593 addi a1,a1,842 # 3bc0b0c0 <__func__.1> + 3bc02d7e: 00008517 auipc a0,0x8 + 3bc02d82: 1ea50513 addi a0,a0,490 # 3bc0af68 <__func__.5+0xb0> + 3bc02d86: dd2fd06f j 3bc00358 + 3bc02d8a: 7139 addi sp,sp,-64 + 3bc02d8c: f04a sd s2,32(sp) + 3bc02d8e: ec4e sd s3,24(sp) + 3bc02d90: 00011917 auipc s2,0x11 + 3bc02d94: a2890913 addi s2,s2,-1496 # 3bc137b8 + 3bc02d98: fc06 sd ra,56(sp) + 3bc02d9a: f822 sd s0,48(sp) + 3bc02d9c: f426 sd s1,40(sp) + 3bc02d9e: e852 sd s4,16(sp) + 3bc02da0: e456 sd s5,8(sp) + 3bc02da2: fc76b70b extu a4,a3,63,7 + 3bc02da6: 00093983 ld s3,0(s2) + 3bc02daa: 00f6f793 andi a5,a3,15 + 3bc02dae: 0e070563 beqz a4,3bc02e98 <_dwc2_ep_disable.isra.0+0x136> + 3bc02db2: 04878793 addi a5,a5,72 + 3bc02db6: 0796 slli a5,a5,0x5 + 3bc02db8: 99be add s3,s3,a5 + 3bc02dba: 84aa mv s1,a0 + 3bc02dbc: 854e mv a0,s3 + 3bc02dbe: 98ffe0ef jal ra,3bc0174c + 3bc02dc2: 00050a1b sext.w s4,a0 + 3bc02dc6: 080a5a63 bgez s4,3bc02e5a <_dwc2_ep_disable.isra.0+0xf8> + 3bc02dca: 0714c783 lbu a5,113(s1) + 3bc02dce: 00093503 ld a0,0(s2) + 3bc02dd2: fc77b70b extu a4,a5,63,7 + 3bc02dd6: 00f7f413 andi s0,a5,15 + 3bc02dda: c371 beqz a4,3bc02e9e <_dwc2_ep_disable.isra.0+0x13c> + 3bc02ddc: 04840413 addi s0,s0,72 + 3bc02de0: 0416 slli s0,s0,0x5 + 3bc02de2: 00850ab3 add s5,a0,s0 + 3bc02de6: 0421 addi s0,s0,8 + 3bc02de8: 942a add s0,s0,a0 + 3bc02dea: 080005b7 lui a1,0x8000 + 3bc02dee: 8556 mv a0,s5 + 3bc02df0: c8dff0ef jal ra,3bc02a7c + 3bc02df4: 06400613 li a2,100 + 3bc02df8: 04000593 li a1,64 + 3bc02dfc: 8522 mv a0,s0 + 3bc02dfe: d01ff0ef jal ra,3bc02afe + 3bc02e02: c919 beqz a0,3bc02e18 <_dwc2_ep_disable.isra.0+0xb6> + 3bc02e04: 00008597 auipc a1,0x8 + 3bc02e08: 2a458593 addi a1,a1,676 # 3bc0b0a8 <__func__.0> + 3bc02e0c: 00008517 auipc a0,0x8 + 3bc02e10: 17450513 addi a0,a0,372 # 3bc0af80 <__func__.5+0xc8> + 3bc02e14: d44fd0ef jal ra,3bc00358 + 3bc02e18: 480005b7 lui a1,0x48000 + 3bc02e1c: 8556 mv a0,s5 + 3bc02e1e: c5fff0ef jal ra,3bc02a7c + 3bc02e22: 06400613 li a2,100 + 3bc02e26: 4589 li a1,2 + 3bc02e28: 8522 mv a0,s0 + 3bc02e2a: cd5ff0ef jal ra,3bc02afe + 3bc02e2e: c919 beqz a0,3bc02e44 <_dwc2_ep_disable.isra.0+0xe2> + 3bc02e30: 00008597 auipc a1,0x8 + 3bc02e34: 27858593 addi a1,a1,632 # 3bc0b0a8 <__func__.0> + 3bc02e38: 00008517 auipc a0,0x8 + 3bc02e3c: 18850513 addi a0,a0,392 # 3bc0afc0 <__func__.5+0x108> + 3bc02e40: d18fd0ef jal ra,3bc00358 + 3bc02e44: 4589 li a1,2 + 3bc02e46: 8522 mv a0,s0 + 3bc02e48: c35ff0ef jal ra,3bc02a7c + 3bc02e4c: 07148783 lb a5,113(s1) + 3bc02e50: 0a07d163 bgez a5,3bc02ef2 <_dwc2_ep_disable.isra.0+0x190> + 3bc02e54: 5ca8 lw a0,120(s1) + 3bc02e56: cefff0ef jal ra,3bc02b44 + 3bc02e5a: 7fff8537 lui a0,0x7fff8 + 3bc02e5e: 157d addi a0,a0,-1 + 3bc02e60: 00aa7a33 and s4,s4,a0 + 3bc02e64: 08000537 lui a0,0x8000 + 3bc02e68: 85ce mv a1,s3 + 3bc02e6a: 00aa6533 or a0,s4,a0 + 3bc02e6e: 8e5fe0ef jal ra,3bc01752 + 3bc02e72: 8526 mv a0,s1 + 3bc02e74: fc600593 li a1,-58 + 3bc02e78: d5dff0ef jal ra,3bc02bd4 + 3bc02e7c: 4785 li a5,1 + 3bc02e7e: 06f48823 sb a5,112(s1) + 3bc02e82: 70e2 ld ra,56(sp) + 3bc02e84: 7442 ld s0,48(sp) + 3bc02e86: 0404b023 sd zero,64(s1) + 3bc02e8a: 7902 ld s2,32(sp) + 3bc02e8c: 74a2 ld s1,40(sp) + 3bc02e8e: 69e2 ld s3,24(sp) + 3bc02e90: 6a42 ld s4,16(sp) + 3bc02e92: 6aa2 ld s5,8(sp) + 3bc02e94: 6121 addi sp,sp,64 + 3bc02e96: 8082 ret + 3bc02e98: 05878793 addi a5,a5,88 + 3bc02e9c: bf29 j 3bc02db6 <_dwc2_ep_disable.isra.0+0x54> + 3bc02e9e: 05840413 addi s0,s0,88 + 3bc02ea2: 0416 slli s0,s0,0x5 + 3bc02ea4: 00850ab3 add s5,a0,s0 + 3bc02ea8: 0421 addi s0,s0,8 + 3bc02eaa: 942a add s0,s0,a0 + 3bc02eac: 0551 addi a0,a0,20 + 3bc02eae: 89ffe0ef jal ra,3bc0174c + 3bc02eb2: 08057513 andi a0,a0,128 + 3bc02eb6: e919 bnez a0,3bc02ecc <_dwc2_ep_disable.isra.0+0x16a> + 3bc02eb8: 00093503 ld a0,0(s2) + 3bc02ebc: 6785 lui a5,0x1 + 3bc02ebe: 80478793 addi a5,a5,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02ec2: 20000593 li a1,512 + 3bc02ec6: 953e add a0,a0,a5 + 3bc02ec8: bb5ff0ef jal ra,3bc02a7c + 3bc02ecc: 00093503 ld a0,0(s2) + 3bc02ed0: 06400613 li a2,100 + 3bc02ed4: 08000593 li a1,128 + 3bc02ed8: 0551 addi a0,a0,20 + 3bc02eda: c25ff0ef jal ra,3bc02afe + 3bc02ede: dd0d beqz a0,3bc02e18 <_dwc2_ep_disable.isra.0+0xb6> + 3bc02ee0: 00008597 auipc a1,0x8 + 3bc02ee4: 1c858593 addi a1,a1,456 # 3bc0b0a8 <__func__.0> + 3bc02ee8: 00008517 auipc a0,0x8 + 3bc02eec: 0b850513 addi a0,a0,184 # 3bc0afa0 <__func__.5+0xe8> + 3bc02ef0: b715 j 3bc02e14 <_dwc2_ep_disable.isra.0+0xb2> + 3bc02ef2: 00093503 ld a0,0(s2) + 3bc02ef6: 6785 lui a5,0x1 + 3bc02ef8: 80478793 addi a5,a5,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02efc: 40000593 li a1,1024 + 3bc02f00: 953e add a0,a0,a5 + 3bc02f02: b7bff0ef jal ra,3bc02a7c + 3bc02f06: bf91 j 3bc02e5a <_dwc2_ep_disable.isra.0+0xf8> + +000000003bc02f08 : + 3bc02f08: cd09 beqz a0,3bc02f22 + 3bc02f0a: 6138 ld a4,64(a0) + 3bc02f0c: 57a9 li a5,-22 + 3bc02f0e: cb19 beqz a4,3bc02f24 + 3bc02f10: 1141 addi sp,sp,-16 + 3bc02f12: e406 sd ra,8(sp) + 3bc02f14: e4fff0ef jal ra,3bc02d62 <_dwc2_ep_disable.isra.0> + 3bc02f18: 60a2 ld ra,8(sp) + 3bc02f1a: 4781 li a5,0 + 3bc02f1c: 853e mv a0,a5 + 3bc02f1e: 0141 addi sp,sp,16 + 3bc02f20: 8082 ret + 3bc02f22: 57a9 li a5,-22 + 3bc02f24: 853e mv a0,a5 + 3bc02f26: 8082 ret + +000000003bc02f28 : + 3bc02f28: 7139 addi sp,sp,-64 + 3bc02f2a: f426 sd s1,40(sp) + 3bc02f2c: f04a sd s2,32(sp) + 3bc02f2e: ec4e sd s3,24(sp) + 3bc02f30: 84aa mv s1,a0 + 3bc02f32: 04053983 ld s3,64(a0) + 3bc02f36: 892e mv s2,a1 + 3bc02f38: 05050513 addi a0,a0,80 + 3bc02f3c: fca00593 li a1,-54 + 3bc02f40: fc06 sd ra,56(sp) + 3bc02f42: f822 sd s0,48(sp) + 3bc02f44: e852 sd s4,16(sp) + 3bc02f46: e456 sd s5,8(sp) + 3bc02f48: c8dff0ef jal ra,3bc02bd4 + 3bc02f4c: 8526 mv a0,s1 + 3bc02f4e: 98dff0ef jal ra,3bc028da + 3bc02f52: 00011417 auipc s0,0x11 + 3bc02f56: 86640413 addi s0,s0,-1946 # 3bc137b8 + 3bc02f5a: 22091863 bnez s2,3bc0318a + 3bc02f5e: 6008 ld a0,0(s0) + 3bc02f60: 04050513 addi a0,a0,64 + 3bc02f64: fe8fe0ef jal ra,3bc0174c + 3bc02f68: 600c ld a1,0(s0) + 3bc02f6a: 6791 lui a5,0x4 + 3bc02f6c: 3c05350b extu a0,a0,15,0 + 3bc02f70: 20978793 addi a5,a5,521 # 4209 <__BSS_SIZE__-0x1a07> + 3bc02f74: 05c1 addi a1,a1,16 + 3bc02f76: 06a7ee63 bltu a5,a0,3bc02ff2 + 3bc02f7a: 4505 li a0,1 + 3bc02f7c: fd6fe0ef jal ra,3bc01752 + 3bc02f80: 03300a13 li s4,51 + 3bc02f84: 4505 li a0,1 + 3bc02f86: a04fd0ef jal ra,3bc0018a + 3bc02f8a: 6008 ld a0,0(s0) + 3bc02f8c: 3a7d addiw s4,s4,-1 + 3bc02f8e: 0541 addi a0,a0,16 + 3bc02f90: fbcfe0ef jal ra,3bc0174c + 3bc02f94: 0005061b sext.w a2,a0 + 3bc02f98: 020a1463 bnez s4,3bc02fc0 + 3bc02f9c: 00008597 auipc a1,0x8 + 3bc02fa0: 13c58593 addi a1,a1,316 # 3bc0b0d8 <__func__.2> + 3bc02fa4: 00008517 auipc a0,0x8 + 3bc02fa8: 03c50513 addi a0,a0,60 # 3bc0afe0 <__func__.5+0x128> + 3bc02fac: 7442 ld s0,48(sp) + 3bc02fae: 70e2 ld ra,56(sp) + 3bc02fb0: 74a2 ld s1,40(sp) + 3bc02fb2: 7902 ld s2,32(sp) + 3bc02fb4: 69e2 ld s3,24(sp) + 3bc02fb6: 6a42 ld s4,16(sp) + 3bc02fb8: 6aa2 ld s5,8(sp) + 3bc02fba: 6121 addi sp,sp,64 + 3bc02fbc: b9cfd06f j 3bc00358 + 3bc02fc0: 8a05 andi a2,a2,1 + 3bc02fc2: f269 bnez a2,3bc02f84 + 3bc02fc4: 03300a13 li s4,51 + 3bc02fc8: 4505 li a0,1 + 3bc02fca: 9c0fd0ef jal ra,3bc0018a + 3bc02fce: 6008 ld a0,0(s0) + 3bc02fd0: 3a7d addiw s4,s4,-1 + 3bc02fd2: 0541 addi a0,a0,16 + 3bc02fd4: f78fe0ef jal ra,3bc0174c + 3bc02fd8: 0005061b sext.w a2,a0 + 3bc02fdc: 060a1963 bnez s4,3bc0304e + 3bc02fe0: 00008597 auipc a1,0x8 + 3bc02fe4: 0f858593 addi a1,a1,248 # 3bc0b0d8 <__func__.2> + 3bc02fe8: 00008517 auipc a0,0x8 + 3bc02fec: 04850513 addi a0,a0,72 # 3bc0b030 <__func__.5+0x178> + 3bc02ff0: bf75 j 3bc02fac + 3bc02ff2: 4505 li a0,1 + 3bc02ff4: f5efe0ef jal ra,3bc01752 + 3bc02ff8: 03300a93 li s5,51 + 3bc02ffc: 20000a37 lui s4,0x20000 + 3bc03000: 4505 li a0,1 + 3bc03002: 988fd0ef jal ra,3bc0018a + 3bc03006: 6008 ld a0,0(s0) + 3bc03008: 3afd addiw s5,s5,-1 + 3bc0300a: 0541 addi a0,a0,16 + 3bc0300c: f40fe0ef jal ra,3bc0174c + 3bc03010: 0005061b sext.w a2,a0 + 3bc03014: 000a9b63 bnez s5,3bc0302a + 3bc03018: 00008597 auipc a1,0x8 + 3bc0301c: 0c058593 addi a1,a1,192 # 3bc0b0d8 <__func__.2> + 3bc03020: 00008517 auipc a0,0x8 + 3bc03024: fe850513 addi a0,a0,-24 # 3bc0b008 <__func__.5+0x150> + 3bc03028: b751 j 3bc02fac + 3bc0302a: 01467633 and a2,a2,s4 + 3bc0302e: 2601 sext.w a2,a2 + 3bc03030: da61 beqz a2,3bc03000 + 3bc03032: 6008 ld a0,0(s0) + 3bc03034: 0541 addi a0,a0,16 + 3bc03036: f16fe0ef jal ra,3bc0174c + 3bc0303a: 600c ld a1,0(s0) + 3bc0303c: 2501 sext.w a0,a0 + 3bc0303e: 9979 andi a0,a0,-2 + 3bc03040: 01456533 or a0,a0,s4 + 3bc03044: 05c1 addi a1,a1,16 + 3bc03046: 2501 sext.w a0,a0 + 3bc03048: f0afe0ef jal ra,3bc01752 + 3bc0304c: bfa5 j 3bc02fc4 + 3bc0304e: f6065de3 bgez a2,3bc02fc8 + 3bc03052: 0309a503 lw a0,48(s3) + 3bc03056: e509 bnez a0,3bc03060 + 3bc03058: 40081537 lui a0,0x40081 + 3bc0305c: 40f50513 addi a0,a0,1039 # 4008140f <__BL2_END__+0x446dbff> + 3bc03060: 600c ld a1,0(s0) + 3bc03062: 05b1 addi a1,a1,12 + 3bc03064: eeefe0ef jal ra,3bc01752 + 3bc03068: c21ff0ef jal ra,3bc02c88 + 3bc0306c: 02091063 bnez s2,3bc0308c + 3bc03070: 6008 ld a0,0(s0) + 3bc03072: 6985 lui s3,0x1 + 3bc03074: 80498993 addi s3,s3,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc03078: 954e add a0,a0,s3 + 3bc0307a: ed2fe0ef jal ra,3bc0174c + 3bc0307e: 600c ld a1,0(s0) + 3bc03080: 2501 sext.w a0,a0 + 3bc03082: 00256513 ori a0,a0,2 + 3bc03086: 95ce add a1,a1,s3 + 3bc03088: ecafe0ef jal ra,3bc01752 + 3bc0308c: 600c ld a1,0(s0) + 3bc0308e: 6985 lui s3,0x1 + 3bc03090: 80098a13 addi s4,s3,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc03094: 95d2 add a1,a1,s4 + 3bc03096: 00040537 lui a0,0x40 + 3bc0309a: eb8fe0ef jal ra,3bc01752 + 3bc0309e: 600c ld a1,0(s0) + 3bc030a0: 557d li a0,-1 + 3bc030a2: 0591 addi a1,a1,4 + 3bc030a4: eaefe0ef jal ra,3bc01752 + 3bc030a8: 600c ld a1,0(s0) + 3bc030aa: 557d li a0,-1 + 3bc030ac: 05d1 addi a1,a1,20 + 3bc030ae: ea4fe0ef jal ra,3bc01752 + 3bc030b2: 600c ld a1,0(s0) + 3bc030b4: 800c4537 lui a0,0x800c4 + 3bc030b8: 81050513 addi a0,a0,-2032 # ffffffff800c3810 <__BL2_END__+0xffffffff444b0000> + 3bc030bc: 05e1 addi a1,a1,24 + 3bc030be: e94fe0ef jal ra,3bc01752 + 3bc030c2: 600c ld a1,0(s0) + 3bc030c4: 4505 li a0,1 + 3bc030c6: 05a1 addi a1,a1,8 + 3bc030c8: e8afe0ef jal ra,3bc01752 + 3bc030cc: 600c ld a1,0(s0) + 3bc030ce: 81098793 addi a5,s3,-2032 + 3bc030d2: 4535 li a0,13 + 3bc030d4: 95be add a1,a1,a5 + 3bc030d6: e7cfe0ef jal ra,3bc01752 + 3bc030da: 600c ld a1,0(s0) + 3bc030dc: 81498793 addi a5,s3,-2028 + 3bc030e0: 4535 li a0,13 + 3bc030e2: 95be add a1,a1,a5 + 3bc030e4: e6efe0ef jal ra,3bc01752 + 3bc030e8: 600c ld a1,0(s0) + 3bc030ea: 81c98793 addi a5,s3,-2020 + 3bc030ee: 6541 lui a0,0x10 + 3bc030f0: 95be add a1,a1,a5 + 3bc030f2: 0505 addi a0,a0,1 + 3bc030f4: e5efe0ef jal ra,3bc01752 + 3bc030f8: 02091f63 bnez s2,3bc03136 + 3bc030fc: 6008 ld a0,0(s0) + 3bc030fe: 80498993 addi s3,s3,-2044 + 3bc03102: 954e add a0,a0,s3 + 3bc03104: e48fe0ef jal ra,3bc0174c + 3bc03108: 600c ld a1,0(s0) + 3bc0310a: 2501 sext.w a0,a0 + 3bc0310c: 01456533 or a0,a0,s4 + 3bc03110: 95ce add a1,a1,s3 + 3bc03112: e40fe0ef jal ra,3bc01752 + 3bc03116: 4529 li a0,10 + 3bc03118: 872fd0ef jal ra,3bc0018a + 3bc0311c: 6008 ld a0,0(s0) + 3bc0311e: 954e add a0,a0,s3 + 3bc03120: e2cfe0ef jal ra,3bc0174c + 3bc03124: 600c ld a1,0(s0) + 3bc03126: 77fd lui a5,0xfffff + 3bc03128: 2501 sext.w a0,a0 + 3bc0312a: 7ff78793 addi a5,a5,2047 # fffffffffffff7ff <__BL2_END__+0xffffffffc43ebfef> + 3bc0312e: 95ce add a1,a1,s3 + 3bc03130: 8d7d and a0,a0,a5 + 3bc03132: e20fe0ef jal ra,3bc01752 + 3bc03136: 8526 mv a0,s1 + 3bc03138: 7dc000ef jal ra,3bc03914 + 3bc0313c: 600c ld a1,0(s0) + 3bc0313e: 6785 lui a5,0x1 + 3bc03140: 90078793 addi a5,a5,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc03144: 95be add a1,a1,a5 + 3bc03146: 6521 lui a0,0x8 + 3bc03148: e0afe0ef jal ra,3bc01752 + 3bc0314c: 50000993 li s3,1280 + 3bc03150: 00091463 bnez s2,3bc03158 + 3bc03154: 50200993 li s3,1282 + 3bc03158: 6008 ld a0,0(s0) + 3bc0315a: 6485 lui s1,0x1 + 3bc0315c: 80448493 addi s1,s1,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc03160: 9526 add a0,a0,s1 + 3bc03162: deafe0ef jal ra,3bc0174c + 3bc03166: 600c ld a1,0(s0) + 3bc03168: 2501 sext.w a0,a0 + 3bc0316a: 00a9e533 or a0,s3,a0 + 3bc0316e: 95a6 add a1,a1,s1 + 3bc03170: de2fe0ef jal ra,3bc01752 + 3bc03174: 7442 ld s0,48(sp) + 3bc03176: 70e2 ld ra,56(sp) + 3bc03178: 74a2 ld s1,40(sp) + 3bc0317a: 7902 ld s2,32(sp) + 3bc0317c: 69e2 ld s3,24(sp) + 3bc0317e: 6a42 ld s4,16(sp) + 3bc03180: 6aa2 ld s5,8(sp) + 3bc03182: 450d li a0,3 + 3bc03184: 6121 addi sp,sp,64 + 3bc03186: 82efd06f j 3bc001b4 + 3bc0318a: 74fc ld a5,232(s1) + 3bc0318c: c789 beqz a5,3bc03196 + 3bc0318e: 0d048513 addi a0,s1,208 + 3bc03192: bd1ff0ef jal ra,3bc02d62 <_dwc2_ep_disable.isra.0> + 3bc03196: 1684b783 ld a5,360(s1) + 3bc0319a: c789 beqz a5,3bc031a4 + 3bc0319c: 15048513 addi a0,s1,336 + 3bc031a0: bc3ff0ef jal ra,3bc02d62 <_dwc2_ep_disable.isra.0> + 3bc031a4: 1e84b783 ld a5,488(s1) + 3bc031a8: ea0785e3 beqz a5,3bc03052 + 3bc031ac: 1d048513 addi a0,s1,464 + 3bc031b0: bb3ff0ef jal ra,3bc02d62 <_dwc2_ep_disable.isra.0> + 3bc031b4: bd79 j 3bc03052 + +000000003bc031b6 : + 3bc031b6: 7139 addi sp,sp,-64 + 3bc031b8: f822 sd s0,48(sp) + 3bc031ba: f426 sd s1,40(sp) + 3bc031bc: fc06 sd ra,56(sp) + 3bc031be: f04a sd s2,32(sp) + 3bc031c0: ec4e sd s3,24(sp) + 3bc031c2: e852 sd s4,16(sp) + 3bc031c4: e456 sd s5,8(sp) + 3bc031c6: 00010497 auipc s1,0x10 + 3bc031ca: 5fa4b483 ld s1,1530(s1) # 3bc137c0 + 3bc031ce: 5429 li s0,-22 + 3bc031d0: cd0d beqz a0,3bc0320a + 3bc031d2: 451c lw a5,8(a0) + 3bc031d4: 4705 li a4,1 + 3bc031d6: 5429 li s0,-22 + 3bc031d8: 37f9 addiw a5,a5,-2 + 3bc031da: 02f76863 bltu a4,a5,3bc0320a + 3bc031de: 691c ld a5,16(a0) + 3bc031e0: c78d beqz a5,3bc0320a + 3bc031e2: 7518 ld a4,40(a0) + 3bc031e4: c31d beqz a4,3bc0320a + 3bc031e6: 7118 ld a4,32(a0) + 3bc031e8: c30d beqz a4,3bc0320a + 3bc031ea: 6538 ld a4,72(a0) + 3bc031ec: cf19 beqz a4,3bc0320a + 3bc031ee: 6938 ld a4,80(a0) + 3bc031f0: cf09 beqz a4,3bc0320a + 3bc031f2: 5435 li s0,-19 + 3bc031f4: c899 beqz s1,3bc0320a + 3bc031f6: 7c98 ld a4,56(s1) + 3bc031f8: 5441 li s0,-16 + 3bc031fa: eb01 bnez a4,3bc0320a + 3bc031fc: fc88 sd a0,56(s1) + 3bc031fe: 8526 mv a0,s1 + 3bc03200: 9782 jalr a5 + 3bc03202: 842a mv s0,a0 + 3bc03204: cd09 beqz a0,3bc0321e + 3bc03206: 0204bc23 sd zero,56(s1) + 3bc0320a: 70e2 ld ra,56(sp) + 3bc0320c: 8522 mv a0,s0 + 3bc0320e: 7442 ld s0,48(sp) + 3bc03210: 74a2 ld s1,40(sp) + 3bc03212: 7902 ld s2,32(sp) + 3bc03214: 69e2 ld s3,24(sp) + 3bc03216: 6a42 ld s4,16(sp) + 3bc03218: 6aa2 ld s5,8(sp) + 3bc0321a: 6121 addi sp,sp,64 + 3bc0321c: 8082 ret + 3bc0321e: 00010917 auipc s2,0x10 + 3bc03222: 59a90913 addi s2,s2,1434 # 3bc137b8 + 3bc03226: 00093583 ld a1,0(s2) + 3bc0322a: 6985 lui s3,0x1 + 3bc0322c: 81498793 addi a5,s3,-2028 # 814 <__BSS_SIZE__-0x53fc> + 3bc03230: 95be add a1,a1,a5 + 3bc03232: 4535 li a0,13 + 3bc03234: 0404ba03 ld s4,64(s1) + 3bc03238: d1afe0ef jal ra,3bc01752 + 3bc0323c: 00093583 ld a1,0(s2) + 3bc03240: 81098793 addi a5,s3,-2032 + 3bc03244: 4535 li a0,13 + 3bc03246: 95be add a1,a1,a5 + 3bc03248: d0afe0ef jal ra,3bc01752 + 3bc0324c: 00093583 ld a1,0(s2) + 3bc03250: 81c98793 addi a5,s3,-2020 + 3bc03254: 4501 li a0,0 + 3bc03256: 95be add a1,a1,a5 + 3bc03258: cfafe0ef jal ra,3bc01752 + 3bc0325c: 00093503 ld a0,0(s2) + 3bc03260: 80498993 addi s3,s3,-2044 + 3bc03264: 954e add a0,a0,s3 + 3bc03266: ce6fe0ef jal ra,3bc0174c + 3bc0326a: 00093583 ld a1,0(s2) + 3bc0326e: 2501 sext.w a0,a0 + 3bc03270: 00256513 ori a0,a0,2 + 3bc03274: 95ce add a1,a1,s3 + 3bc03276: cdcfe0ef jal ra,3bc01752 + 3bc0327a: a0fff0ef jal ra,3bc02c88 + 3bc0327e: 030a2983 lw s3,48(s4) # 20000030 + 3bc03282: 00099663 bnez s3,3bc0328e + 3bc03286: 400819b7 lui s3,0x40081 + 3bc0328a: 40798993 addi s3,s3,1031 # 40081407 <__BL2_END__+0x446dbf7> + 3bc0328e: 0e0007b7 lui a5,0xe000 + 3bc03292: 0007c783 lbu a5,0(a5) # e000000 + 3bc03296: 4a01 li s4,0 + 3bc03298: 8ba1 andi a5,a5,8 + 3bc0329a: c795 beqz a5,3bc032c6 + 3bc0329c: 03006ab7 lui s5,0x3006 + 3bc032a0: 014a8513 addi a0,s5,20 # 3006014 <__BSS_SIZE__+0x3000404> + 3bc032a4: ca8fe0ef jal ra,3bc0174c + 3bc032a8: 00050a1b sext.w s4,a0 + 3bc032ac: 014a8593 addi a1,s5,20 + 3bc032b0: 18b00513 li a0,395 + 3bc032b4: c9efe0ef jal ra,3bc01752 + 3bc032b8: c00037b7 lui a5,0xc0003 + 3bc032bc: 03000737 lui a4,0x3000 + 3bc032c0: 07ad addi a5,a5,11 + 3bc032c2: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc032c6: 00093583 ld a1,0(s2) + 3bc032ca: 854e mv a0,s3 + 3bc032cc: 05b1 addi a1,a1,12 + 3bc032ce: c84fe0ef jal ra,3bc01752 + 3bc032d2: 0e0007b7 lui a5,0xe000 + 3bc032d6: 0007c783 lbu a5,0(a5) # e000000 + 3bc032da: 8ba1 andi a5,a5,8 + 3bc032dc: cb99 beqz a5,3bc032f2 + 3bc032de: 030065b7 lui a1,0x3006 + 3bc032e2: 8552 mv a0,s4 + 3bc032e4: 05d1 addi a1,a1,20 + 3bc032e6: c6cfe0ef jal ra,3bc01752 + 3bc032ea: 06400513 li a0,100 + 3bc032ee: e9dfc0ef jal ra,3bc0018a + 3bc032f2: 00093583 ld a1,0(s2) + 3bc032f6: 4505 li a0,1 + 3bc032f8: 05a1 addi a1,a1,8 + 3bc032fa: c58fe0ef jal ra,3bc01752 + 3bc032fe: 4581 li a1,0 + 3bc03300: 8526 mv a0,s1 + 3bc03302: c27ff0ef jal ra,3bc02f28 + 3bc03306: 0204a023 sw zero,32(s1) + 3bc0330a: b701 j 3bc0320a + +000000003bc0330c : + 3bc0330c: c901 beqz a0,3bc0331c + 3bc0330e: 0015151b slliw a0,a0,0x1 + 3bc03312: 00b035b3 snez a1,a1 + 3bc03316: 9d0d subw a0,a0,a1 + 3bc03318: 0ff57513 andi a0,a0,255 + 3bc0331c: 8082 ret + +000000003bc0331e : + 3bc0331e: 4510 lw a2,8(a0) + 3bc03320: 1101 addi sp,sp,-32 + 3bc03322: ec06 sd ra,24(sp) + 3bc03324: e822 sd s0,16(sp) + 3bc03326: e426 sd s1,8(sp) + 3bc03328: 27700793 li a5,631 + 3bc0332c: 02c7e063 bltu a5,a2,3bc0334c + 3bc03330: 00008517 auipc a0,0x8 + 3bc03334: d2850513 addi a0,a0,-728 # 3bc0b058 <__func__.5+0x1a0> + 3bc03338: 27800593 li a1,632 + 3bc0333c: 81cfd0ef jal ra,3bc00358 + 3bc03340: 557d li a0,-1 + 3bc03342: 60e2 ld ra,24(sp) + 3bc03344: 6442 ld s0,16(sp) + 3bc03346: 64a2 ld s1,8(sp) + 3bc03348: 6105 addi sp,sp,32 + 3bc0334a: 8082 ret + 3bc0334c: 6100 ld s0,0(a0) + 3bc0334e: 84aa mv s1,a0 + 3bc03350: 27800613 li a2,632 + 3bc03354: 4581 li a1,0 + 3bc03356: 8522 mv a0,s0 + 3bc03358: ec8fd0ef jal ra,3bc00a20 + 3bc0335c: 708c ld a1,32(s1) + 3bc0335e: 00008717 auipc a4,0x8 + 3bc03362: 65270713 addi a4,a4,1618 # 3bc0b9b0 + 3bc03366: 20000613 li a2,512 + 3bc0336a: 00010797 auipc a5,0x10 + 3bc0336e: 44b7b723 sd a1,1102(a5) # 3bc137b8 + 3bc03372: 00008797 auipc a5,0x8 + 3bc03376: dbe78793 addi a5,a5,-578 # 3bc0b130 + 3bc0337a: e81c sd a5,16(s0) + 3bc0337c: 05040793 addi a5,s0,80 + 3bc03380: ec1c sd a5,24(s0) + 3bc03382: 00008797 auipc a5,0x8 + 3bc03386: d9e78793 addi a5,a5,-610 # 3bc0b120 + 3bc0338a: f81c sd a5,48(s0) + 3bc0338c: 02c44783 lbu a5,44(s0) + 3bc03390: f838 sd a4,112(s0) + 3bc03392: f878 sd a4,240(s0) + 3bc03394: fc07f793 andi a5,a5,-64 + 3bc03398: 0017e793 ori a5,a5,1 + 3bc0339c: 02f40623 sb a5,44(s0) + 3bc033a0: 478d li a5,3 + 3bc033a2: d05c sw a5,36(s0) + 3bc033a4: 00008797 auipc a5,0x8 + 3bc033a8: dd478793 addi a5,a5,-556 # 3bc0b178 + 3bc033ac: f43c sd a5,104(s0) + 3bc033ae: 04000793 li a5,64 + 3bc033b2: 06f41c23 sh a5,120(s0) + 3bc033b6: 00008797 auipc a5,0x8 + 3bc033ba: dd278793 addi a5,a5,-558 # 3bc0b188 + 3bc033be: f47c sd a5,232(s0) + 3bc033c0: 28100793 li a5,641 + 3bc033c4: 14f410a3 sh a5,321(s0) + 3bc033c8: 4785 li a5,1 + 3bc033ca: 02079693 slli a3,a5,0x20 + 3bc033ce: 00268513 addi a0,a3,2 + 3bc033d2: 14a43223 sd a0,324(s0) + 3bc033d6: 0685 addi a3,a3,1 + 3bc033d8: 00008517 auipc a0,0x8 + 3bc033dc: dc050513 addi a0,a0,-576 # 3bc0b198 + 3bc033e0: 16a43423 sd a0,360(s0) + 3bc033e4: 1cd43223 sd a3,452(s0) + 3bc033e8: 20100513 li a0,513 + 3bc033ec: 00008697 auipc a3,0x8 + 3bc033f0: dbc68693 addi a3,a3,-580 # 3bc0b1a8 + 3bc033f4: 1786 slli a5,a5,0x21 + 3bc033f6: 078d addi a5,a5,3 + 3bc033f8: 16e43823 sd a4,368(s0) + 3bc033fc: 1ee43823 sd a4,496(s0) + 3bc03400: e024 sd s1,64(s0) + 3bc03402: 24040823 sb zero,592(s0) + 3bc03406: e440 sd s0,136(s0) + 3bc03408: 0c0410a3 sh zero,193(s0) + 3bc0340c: 0c042223 sw zero,196(s0) + 3bc03410: 0ec41c23 sh a2,248(s0) + 3bc03414: 10843423 sd s0,264(s0) + 3bc03418: 16c41c23 sh a2,376(s0) + 3bc0341c: 18843423 sd s0,392(s0) + 3bc03420: 1ca410a3 sh a0,449(s0) + 3bc03424: 1ed43423 sd a3,488(s0) + 3bc03428: 1ec41c23 sh a2,504(s0) + 3bc0342c: 20843423 sd s0,520(s0) + 3bc03430: 38200713 li a4,898 + 3bc03434: 24e410a3 sh a4,577(s0) + 3bc03438: 24f43223 sd a5,580(s0) + 3bc0343c: 00010797 auipc a5,0x10 + 3bc03440: 3887b223 sd s0,900(a5) # 3bc137c0 + 3bc03444: 60bc ld a5,64(s1) + 3bc03446: 24f43c23 sd a5,600(s0) + 3bc0344a: eb89 bnez a5,3bc0345c + 3bc0344c: 00008517 auipc a0,0x8 + 3bc03450: c3c50513 addi a0,a0,-964 # 3bc0b088 <__func__.5+0x1d0> + 3bc03454: f05fc0ef jal ra,3bc00358 + 3bc03458: 5551 li a0,-12 + 3bc0345a: b5e5 j 3bc03342 + 3bc0345c: 8522 mv a0,s0 + 3bc0345e: 26f42023 sw a5,608(s0) + 3bc03462: 26b43423 sd a1,616(s0) + 3bc03466: c74ff0ef jal ra,3bc028da + 3bc0346a: 4501 li a0,0 + 3bc0346c: bdd9 j 3bc03342 + +000000003bc0346e : + 3bc0346e: 1101 addi sp,sp,-32 + 3bc03470: e426 sd s1,8(sp) + 3bc03472: 00010497 auipc s1,0x10 + 3bc03476: 34648493 addi s1,s1,838 # 3bc137b8 + 3bc0347a: 6088 ld a0,0(s1) + 3bc0347c: ec06 sd ra,24(sp) + 3bc0347e: e822 sd s0,16(sp) + 3bc03480: 0551 addi a0,a0,20 + 3bc03482: acafe0ef jal ra,3bc0174c + 3bc03486: 0005041b sext.w s0,a0 + 3bc0348a: 6088 ld a0,0(s1) + 3bc0348c: 0561 addi a0,a0,24 + 3bc0348e: abefe0ef jal ra,3bc0174c + 3bc03492: 2501 sext.w a0,a0 + 3bc03494: 8c69 and s0,s0,a0 + 3bc03496: cc01 beqz s0,3bc034ae + 3bc03498: 6442 ld s0,16(sp) + 3bc0349a: 60e2 ld ra,24(sp) + 3bc0349c: 64a2 ld s1,8(sp) + 3bc0349e: 00010597 auipc a1,0x10 + 3bc034a2: 3225b583 ld a1,802(a1) # 3bc137c0 + 3bc034a6: 4505 li a0,1 + 3bc034a8: 6105 addi sp,sp,32 + 3bc034aa: 3fb0006f j 3bc040a4 + 3bc034ae: 60e2 ld ra,24(sp) + 3bc034b0: 6442 ld s0,16(sp) + 3bc034b2: 64a2 ld s1,8(sp) + 3bc034b4: 4501 li a0,0 + 3bc034b6: 6105 addi sp,sp,32 + 3bc034b8: 8082 ret + +000000003bc034ba : + 3bc034ba: 7179 addi sp,sp,-48 + 3bc034bc: f022 sd s0,32(sp) + 3bc034be: f406 sd ra,40(sp) + 3bc034c0: ec26 sd s1,24(sp) + 3bc034c2: 470d li a4,3 + 3bc034c4: 26853403 ld s0,616(a0) + 3bc034c8: 00008697 auipc a3,0x8 + 3bc034cc: 53868693 addi a3,a3,1336 # 3bc0ba00 + 3bc034d0: 00008797 auipc a5,0x8 + 3bc034d4: 53478793 addi a5,a5,1332 # 3bc0ba04 + 3bc034d8: 06e59163 bne a1,a4,3bc0353a + 3bc034dc: 04000713 li a4,64 + 3bc034e0: c298 sw a4,0(a3) + 3bc034e2: 20000713 li a4,512 + 3bc034e6: c398 sw a4,0(a5) + 3bc034e8: d10c sw a1,32(a0) + 3bc034ea: 0007d783 lhu a5,0(a5) + 3bc034ee: 6485 lui s1,0x1 + 3bc034f0: 90048593 addi a1,s1,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc034f4: 95a2 add a1,a1,s0 + 3bc034f6: 04000713 li a4,64 + 3bc034fa: 06e51c23 sh a4,120(a0) + 3bc034fe: 0ef51c23 sh a5,248(a0) + 3bc03502: 16f51c23 sh a5,376(a0) + 3bc03506: 1ef51c23 sh a5,504(a0) + 3bc0350a: 852e mv a0,a1 + 3bc0350c: e42e sd a1,8(sp) + 3bc0350e: a3efe0ef jal ra,3bc0174c + 3bc03512: 65a2 ld a1,8(sp) + 3bc03514: 2501 sext.w a0,a0 + 3bc03516: 9971 andi a0,a0,-4 + 3bc03518: b0048493 addi s1,s1,-1280 + 3bc0351c: a36fe0ef jal ra,3bc01752 + 3bc03520: 9426 add s0,s0,s1 + 3bc03522: 8522 mv a0,s0 + 3bc03524: a28fe0ef jal ra,3bc0174c + 3bc03528: 85a2 mv a1,s0 + 3bc0352a: 7402 ld s0,32(sp) + 3bc0352c: 70a2 ld ra,40(sp) + 3bc0352e: 64e2 ld s1,24(sp) + 3bc03530: 2501 sext.w a0,a0 + 3bc03532: 9971 andi a0,a0,-4 + 3bc03534: 6145 addi sp,sp,48 + 3bc03536: a1cfe06f j 3bc01752 + 3bc0353a: 04000713 li a4,64 + 3bc0353e: c298 sw a4,0(a3) + 3bc03540: c398 sw a4,0(a5) + 3bc03542: 4709 li a4,2 + 3bc03544: d118 sw a4,32(a0) + 3bc03546: b755 j 3bc034ea + +000000003bc03548 : + 3bc03548: 1101 addi sp,sp,-32 + 3bc0354a: e822 sd s0,16(sp) + 3bc0354c: ec06 sd ra,24(sp) + 3bc0354e: 07154703 lbu a4,113(a0) + 3bc03552: 7d1c ld a5,56(a0) + 3bc03554: 842a mv s0,a0 + 3bc03556: fc77368b extu a3,a4,63,7 + 3bc0355a: 2687b583 ld a1,616(a5) + 3bc0355e: 00f77793 andi a5,a4,15 + 3bc03562: ce9d beqz a3,3bc035a0 + 3bc03564: 04878793 addi a5,a5,72 + 3bc03568: 0796 slli a5,a5,0x5 + 3bc0356a: 95be add a1,a1,a5 + 3bc0356c: 852e mv a0,a1 + 3bc0356e: e42e sd a1,8(sp) + 3bc03570: 9dcfe0ef jal ra,3bc0174c + 3bc03574: ffe007b7 lui a5,0xffe00 + 3bc03578: 17fd addi a5,a5,-1 + 3bc0357a: 2501 sext.w a0,a0 + 3bc0357c: 8d7d and a0,a0,a5 + 3bc0357e: 07244783 lbu a5,114(s0) + 3bc03582: 4705 li a4,1 + 3bc03584: 65a2 ld a1,8(sp) + 3bc03586: 37f9 addiw a5,a5,-2 + 3bc03588: 0ff7f793 andi a5,a5,255 + 3bc0358c: 00f76563 bltu a4,a5,3bc03596 + 3bc03590: 100007b7 lui a5,0x10000 + 3bc03594: 8d5d or a0,a0,a5 + 3bc03596: 6442 ld s0,16(sp) + 3bc03598: 60e2 ld ra,24(sp) + 3bc0359a: 6105 addi sp,sp,32 + 3bc0359c: 9b6fe06f j 3bc01752 + 3bc035a0: 05878793 addi a5,a5,88 # 10000058 + 3bc035a4: b7d1 j 3bc03568 + +000000003bc035a6 : + 3bc035a6: 1101 addi sp,sp,-32 + 3bc035a8: ec06 sd ra,24(sp) + 3bc035aa: 07154703 lbu a4,113(a0) + 3bc035ae: 7d1c ld a5,56(a0) + 3bc035b0: fc77368b extu a3,a4,63,7 + 3bc035b4: 2687b583 ld a1,616(a5) + 3bc035b8: 00f77793 andi a5,a4,15 + 3bc035bc: ca85 beqz a3,3bc035ec + 3bc035be: 04878793 addi a5,a5,72 + 3bc035c2: 0796 slli a5,a5,0x5 + 3bc035c4: 95be add a1,a1,a5 + 3bc035c6: 852e mv a0,a1 + 3bc035c8: e42e sd a1,8(sp) + 3bc035ca: 982fe0ef jal ra,3bc0174c + 3bc035ce: 0005079b sext.w a5,a0 + 3bc035d2: 65a2 ld a1,8(sp) + 3bc035d4: 0007d563 bgez a5,3bc035de + 3bc035d8: 40000737 lui a4,0x40000 + 3bc035dc: 8fd9 or a5,a5,a4 + 3bc035de: 00200537 lui a0,0x200 + 3bc035e2: 8d5d or a0,a0,a5 + 3bc035e4: 60e2 ld ra,24(sp) + 3bc035e6: 6105 addi sp,sp,32 + 3bc035e8: 96afe06f j 3bc01752 + 3bc035ec: 05878793 addi a5,a5,88 + 3bc035f0: 0796 slli a5,a5,0x5 + 3bc035f2: 95be add a1,a1,a5 + 3bc035f4: 852e mv a0,a1 + 3bc035f6: e42e sd a1,8(sp) + 3bc035f8: 954fe0ef jal ra,3bc0174c + 3bc035fc: 002007b7 lui a5,0x200 + 3bc03600: 8d5d or a0,a0,a5 + 3bc03602: 65a2 ld a1,8(sp) + 3bc03604: 2501 sext.w a0,a0 + 3bc03606: bff9 j 3bc035e4 + +000000003bc03608 : + 3bc03608: 7139 addi sp,sp,-64 + 3bc0360a: f822 sd s0,48(sp) + 3bc0360c: 26853403 ld s0,616(a0) # 200268 <__BSS_SIZE__+0x1fa658> + 3bc03610: f426 sd s1,40(sp) + 3bc03612: 6485 lui s1,0x1 + 3bc03614: ec4e sd s3,24(sp) + 3bc03616: b1048593 addi a1,s1,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc0361a: 000809b7 lui s3,0x80 + 3bc0361e: f04a sd s2,32(sp) + 3bc03620: 95a2 add a1,a1,s0 + 3bc03622: 892a mv s2,a0 + 3bc03624: 00898513 addi a0,s3,8 # 80008 <__BSS_SIZE__+0x7a3f8> + 3bc03628: fc06 sd ra,56(sp) + 3bc0362a: 928fe0ef jal ra,3bc01752 + 3bc0362e: 26092503 lw a0,608(s2) + 3bc03632: b1448593 addi a1,s1,-1260 + 3bc03636: 95a2 add a1,a1,s0 + 3bc03638: 91afe0ef jal ra,3bc01752 + 3bc0363c: b0048593 addi a1,s1,-1280 + 3bc03640: 95a2 add a1,a1,s0 + 3bc03642: 852e mv a0,a1 + 3bc03644: e42e sd a1,8(sp) + 3bc03646: 906fe0ef jal ra,3bc0174c + 3bc0364a: 0005041b sext.w s0,a0 + 3bc0364e: c0000537 lui a0,0xc0000 + 3bc03652: 157d addi a0,a0,-1 + 3bc03654: 65a2 ld a1,8(sp) + 3bc03656: 8c69 and s0,s0,a0 + 3bc03658: 84000537 lui a0,0x84000 + 3bc0365c: 8c49 or s0,s0,a0 + 3bc0365e: 8522 mv a0,s0 + 3bc03660: 8f2fe0ef jal ra,3bc01752 + 3bc03664: 85a2 mv a1,s0 + 3bc03666: 7442 ld s0,48(sp) + 3bc03668: 26092603 lw a2,608(s2) + 3bc0366c: 70e2 ld ra,56(sp) + 3bc0366e: 74a2 ld s1,40(sp) + 3bc03670: 7902 ld s2,32(sp) + 3bc03672: 00898693 addi a3,s3,8 + 3bc03676: 69e2 ld s3,24(sp) + 3bc03678: 00089537 lui a0,0x89 + 3bc0367c: 4701 li a4,0 + 3bc0367e: 88850513 addi a0,a0,-1912 # 88888 <__BSS_SIZE__+0x82c78> + 3bc03682: 6121 addi sp,sp,64 + 3bc03684: a4aff06f j 3bc028ce + +000000003bc03688 : + 3bc03688: 7179 addi sp,sp,-48 + 3bc0368a: f022 sd s0,32(sp) + 3bc0368c: 26853403 ld s0,616(a0) + 3bc03690: ec26 sd s1,24(sp) + 3bc03692: e84a sd s2,16(sp) + 3bc03694: 6485 lui s1,0x1 + 3bc03696: 892a mv s2,a0 + 3bc03698: 26052503 lw a0,608(a0) + 3bc0369c: 91448593 addi a1,s1,-1772 # 914 <__BSS_SIZE__-0x52fc> + 3bc036a0: 95a2 add a1,a1,s0 + 3bc036a2: f406 sd ra,40(sp) + 3bc036a4: 8aefe0ef jal ra,3bc01752 + 3bc036a8: 91048593 addi a1,s1,-1776 + 3bc036ac: 95a2 add a1,a1,s0 + 3bc036ae: 00080537 lui a0,0x80 + 3bc036b2: 8a0fe0ef jal ra,3bc01752 + 3bc036b6: 90048593 addi a1,s1,-1792 + 3bc036ba: 95a2 add a1,a1,s0 + 3bc036bc: 852e mv a0,a1 + 3bc036be: e42e sd a1,8(sp) + 3bc036c0: 88cfe0ef jal ra,3bc0174c + 3bc036c4: 0005041b sext.w s0,a0 + 3bc036c8: c0000537 lui a0,0xc0000 + 3bc036cc: 157d addi a0,a0,-1 + 3bc036ce: 65a2 ld a1,8(sp) + 3bc036d0: 8c69 and s0,s0,a0 + 3bc036d2: 84000537 lui a0,0x84000 + 3bc036d6: 8c49 or s0,s0,a0 + 3bc036d8: 8522 mv a0,s0 + 3bc036da: 878fe0ef jal ra,3bc01752 + 3bc036de: 479d li a5,7 + 3bc036e0: 85a2 mv a1,s0 + 3bc036e2: 7402 ld s0,32(sp) + 3bc036e4: 26092603 lw a2,608(s2) + 3bc036e8: 70a2 ld ra,40(sp) + 3bc036ea: 64e2 ld s1,24(sp) + 3bc036ec: 04f92423 sw a5,72(s2) + 3bc036f0: 6942 ld s2,16(sp) + 3bc036f2: 000ab537 lui a0,0xab + 3bc036f6: 4701 li a4,0 + 3bc036f8: 000806b7 lui a3,0x80 + 3bc036fc: aaa50513 addi a0,a0,-1366 # aaaaa <__BSS_SIZE__+0xa4e9a> + 3bc03700: 6145 addi sp,sp,48 + 3bc03702: 9ccff06f j 3bc028ce + +000000003bc03706 : + 3bc03706: 1101 addi sp,sp,-32 + 3bc03708: e822 sd s0,16(sp) + 3bc0370a: e426 sd s1,8(sp) + 3bc0370c: 26853403 ld s0,616(a0) + 3bc03710: 84aa mv s1,a0 + 3bc03712: 00087537 lui a0,0x87 + 3bc03716: 08750513 addi a0,a0,135 # 87087 <__BSS_SIZE__+0x81477> + 3bc0371a: 4701 li a4,0 + 3bc0371c: 4681 li a3,0 + 3bc0371e: 4601 li a2,0 + 3bc03720: e04a sd s2,0(sp) + 3bc03722: ec06 sd ra,24(sp) + 3bc03724: 892e mv s2,a1 + 3bc03726: 9a8ff0ef jal ra,3bc028ce + 3bc0372a: 6505 lui a0,0x1 + 3bc0372c: 02090b63 beqz s2,3bc03762 + 3bc03730: 90050513 addi a0,a0,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc03734: 9522 add a0,a0,s0 + 3bc03736: 816fe0ef jal ra,3bc0174c + 3bc0373a: 2501 sext.w a0,a0 + 3bc0373c: 002007b7 lui a5,0x200 + 3bc03740: 8d5d or a0,a0,a5 + 3bc03742: 6585 lui a1,0x1 + 3bc03744: 02090263 beqz s2,3bc03768 + 3bc03748: 90058593 addi a1,a1,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc0374c: 95a2 add a1,a1,s0 + 3bc0374e: 804fe0ef jal ra,3bc01752 + 3bc03752: 60e2 ld ra,24(sp) + 3bc03754: 6442 ld s0,16(sp) + 3bc03756: 0404a423 sw zero,72(s1) + 3bc0375a: 6902 ld s2,0(sp) + 3bc0375c: 64a2 ld s1,8(sp) + 3bc0375e: 6105 addi sp,sp,32 + 3bc03760: 8082 ret + 3bc03762: b0050513 addi a0,a0,-1280 + 3bc03766: b7f9 j 3bc03734 + 3bc03768: b0058593 addi a1,a1,-1280 + 3bc0376c: b7c5 j 3bc0374c + +000000003bc0376e : + 3bc0376e: 7179 addi sp,sp,-48 + 3bc03770: 7d18 ld a4,56(a0) + 3bc03772: 5dd4 lw a3,60(a1) + 3bc03774: ec26 sd s1,24(sp) + 3bc03776: f406 sd ra,40(sp) + 3bc03778: f022 sd s0,32(sp) + 3bc0377a: e84a sd s2,16(sp) + 3bc0377c: 07154783 lbu a5,113(a0) + 3bc03780: 84aa mv s1,a0 + 3bc03782: 6988 ld a0,16(a1) + 3bc03784: 26873603 ld a2,616(a4) # 40000268 <__BL2_END__+0x43eca58> + 3bc03788: 7c06b70b extu a4,a3,31,0 + 3bc0378c: 953a add a0,a0,a4 + 3bc0378e: 4d98 lw a4,24(a1) + 3bc03790: 8bbd andi a5,a5,15 + 3bc03792: 6591 lui a1,0x4 + 3bc03794: 9f15 subw a4,a4,a3 + 3bc03796: e399 bnez a5,3bc0379c + 3bc03798: 0284d583 lhu a1,40(s1) + 3bc0379c: 0007069b sext.w a3,a4 + 3bc037a0: 00d5b6b3 sltu a3,a1,a3 + 3bc037a4: 0016c693 xori a3,a3,1 + 3bc037a8: 40d5970b mveqz a4,a1,a3 + 3bc037ac: d0b8 sw a4,96(s1) + 3bc037ae: f4a8 sd a0,104(s1) + 3bc037b0: 0007091b sext.w s2,a4 + 3bc037b4: 4405 li s0,1 + 3bc037b6: cb91 beqz a5,3bc037ca + 3bc037b8: 00090963 beqz s2,3bc037ca + 3bc037bc: 0284d683 lhu a3,40(s1) + 3bc037c0: fff9041b addiw s0,s2,-1 + 3bc037c4: 02d4543b divuw s0,s0,a3 + 3bc037c8: 2405 addiw s0,s0,1 + 3bc037ca: 05878793 addi a5,a5,88 # 200058 <__BSS_SIZE__+0x1fa448> + 3bc037ce: 0796 slli a5,a5,0x5 + 3bc037d0: 00f605b3 add a1,a2,a5 + 3bc037d4: 852e mv a0,a1 + 3bc037d6: e42e sd a1,8(sp) + 3bc037d8: f75fd0ef jal ra,3bc0174c + 3bc037dc: 54b0 lw a2,104(s1) + 3bc037de: 840004b7 lui s1,0x84000 + 3bc037e2: 65a2 ld a1,8(sp) + 3bc037e4: 8cc9 or s1,s1,a0 + 3bc037e6: 2481 sext.w s1,s1 + 3bc037e8: 8526 mv a0,s1 + 3bc037ea: 0134141b slliw s0,s0,0x13 + 3bc037ee: e032 sd a2,0(sp) + 3bc037f0: 00896433 or s0,s2,s0 + 3bc037f4: f5ffd0ef jal ra,3bc01752 + 3bc037f8: 0004069b sext.w a3,s0 + 3bc037fc: 7402 ld s0,32(sp) + 3bc037fe: 6602 ld a2,0(sp) + 3bc03800: 70a2 ld ra,40(sp) + 3bc03802: 6942 ld s2,16(sp) + 3bc03804: 85a6 mv a1,s1 + 3bc03806: 64e2 ld s1,24(sp) + 3bc03808: 00077537 lui a0,0x77 + 3bc0380c: 4701 li a4,0 + 3bc0380e: 77750513 addi a0,a0,1911 # 77777 <__BSS_SIZE__+0x71b67> + 3bc03812: 6145 addi sp,sp,48 + 3bc03814: 8baff06f j 3bc028ce + +000000003bc03818 : + 3bc03818: 715d addi sp,sp,-80 + 3bc0381a: ec56 sd s5,24(sp) + 3bc0381c: 8aae mv s5,a1 + 3bc0381e: fc26 sd s1,56(sp) + 3bc03820: 4581 li a1,0 + 3bc03822: 84aa mv s1,a0 + 3bc03824: 8556 mv a0,s5 + 3bc03826: e0a2 sd s0,64(sp) + 3bc03828: f84a sd s2,48(sp) + 3bc0382a: f44e sd s3,40(sp) + 3bc0382c: f052 sd s4,32(sp) + 3bc0382e: e486 sd ra,72(sp) + 3bc03830: addff0ef jal ra,3bc0330c + 3bc03834: 0005079b sext.w a5,a0 + 3bc03838: 00779a13 slli s4,a5,0x7 + 3bc0383c: 014487b3 add a5,s1,s4 + 3bc03840: 00751413 slli s0,a0,0x7 + 3bc03844: 0987b903 ld s2,152(a5) + 3bc03848: 09840993 addi s3,s0,152 + 3bc0384c: 99a6 add s3,s3,s1 + 3bc0384e: 09298563 beq s3,s2,3bc038d8 + 3bc03852: 6505 lui a0,0x1 + 3bc03854: b1050513 addi a0,a0,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc03858: 005a9793 slli a5,s5,0x5 + 3bc0385c: 97aa add a5,a5,a0 + 3bc0385e: 2684b503 ld a0,616(s1) # ffffffff84000268 <__BL2_END__+0xffffffff483eca58> + 3bc03862: fc090593 addi a1,s2,-64 + 3bc03866: e42e sd a1,8(sp) + 3bc03868: 953e add a0,a0,a5 + 3bc0386a: ee3fd0ef jal ra,3bc0174c + 3bc0386e: 0005071b sext.w a4,a0 + 3bc03872: 65a2 ld a1,8(sp) + 3bc03874: 07f77693 andi a3,a4,127 + 3bc03878: 000a8463 beqz s5,3bc03880 + 3bc0387c: fe092683 lw a3,-32(s2) + 3bc03880: 01448833 add a6,s1,s4 + 3bc03884: 0b082703 lw a4,176(a6) + 3bc03888: ffc92883 lw a7,-4(s2) + 3bc0388c: fd892603 lw a2,-40(s2) + 3bc03890: 40d7033b subw t1,a4,a3 + 3bc03894: 05040513 addi a0,s0,80 + 3bc03898: 411607bb subw a5,a2,a7 + 3bc0389c: 86be mv a3,a5 + 3bc0389e: 00f337b3 sltu a5,t1,a5 + 3bc038a2: 0017c793 xori a5,a5,1 + 3bc038a6: 40f3168b mveqz a3,t1,a5 + 3bc038aa: 011687bb addw a5,a3,a7 + 3bc038ae: 07885683 lhu a3,120(a6) + 3bc038b2: fef92e23 sw a5,-4(s2) + 3bc038b6: 9526 add a0,a0,s1 + 3bc038b8: 02d3773b remuw a4,t1,a3 + 3bc038bc: e319 bnez a4,3bc038c2 + 3bc038be: 04f61263 bne a2,a5,3bc03902 + 3bc038c2: 020a9463 bnez s5,3bc038ea + 3bc038c6: 44b8 lw a4,72(s1) + 3bc038c8: 4791 li a5,4 + 3bc038ca: 02f71063 bne a4,a5,3bc038ea + 3bc038ce: 8526 mv a0,s1 + 3bc038d0: db9ff0ef jal ra,3bc03688 + 3bc038d4: 479d li a5,7 + 3bc038d6: c4bc sw a5,72(s1) + 3bc038d8: 60a6 ld ra,72(sp) + 3bc038da: 6406 ld s0,64(sp) + 3bc038dc: 74e2 ld s1,56(sp) + 3bc038de: 7942 ld s2,48(sp) + 3bc038e0: 79a2 ld s3,40(sp) + 3bc038e2: 7a02 ld s4,32(sp) + 3bc038e4: 6ae2 ld s5,24(sp) + 3bc038e6: 6161 addi sp,sp,80 + 3bc038e8: 8082 ret + 3bc038ea: 4601 li a2,0 + 3bc038ec: e42a sd a0,8(sp) + 3bc038ee: 832ff0ef jal ra,3bc02920 + 3bc038f2: 014487b3 add a5,s1,s4 + 3bc038f6: 6fcc ld a1,152(a5) + 3bc038f8: feb980e3 beq s3,a1,3bc038d8 + 3bc038fc: 6522 ld a0,8(sp) + 3bc038fe: fc058593 addi a1,a1,-64 # 3fc0 <__BSS_SIZE__-0x1c50> + 3bc03902: 6406 ld s0,64(sp) + 3bc03904: 60a6 ld ra,72(sp) + 3bc03906: 74e2 ld s1,56(sp) + 3bc03908: 7942 ld s2,48(sp) + 3bc0390a: 79a2 ld s3,40(sp) + 3bc0390c: 7a02 ld s4,32(sp) + 3bc0390e: 6ae2 ld s5,24(sp) + 3bc03910: 6161 addi sp,sp,80 + 3bc03912: bdb1 j 3bc0376e + +000000003bc03914 : + 3bc03914: 26853583 ld a1,616(a0) + 3bc03918: 6785 lui a5,0x1 + 3bc0391a: b1078793 addi a5,a5,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc0391e: 20080537 lui a0,0x20080 + 3bc03922: 95be add a1,a1,a5 + 3bc03924: 0521 addi a0,a0,8 + 3bc03926: e2dfd06f j 3bc01752 + +000000003bc0392a : + 3bc0392a: 7179 addi sp,sp,-48 + 3bc0392c: e84a sd s2,16(sp) + 3bc0392e: 26853903 ld s2,616(a0) # 20080268 + 3bc03932: 0585 addi a1,a1,1 + 3bc03934: f022 sd s0,32(sp) + 3bc03936: 05b2 slli a1,a1,0xc + 3bc03938: 0036841b addiw s0,a3,3 + 3bc0393c: ec26 sd s1,24(sp) + 3bc0393e: f406 sd ra,40(sp) + 3bc03940: 4024340b extu s0,s0,16,2 + 3bc03944: 992e add s2,s2,a1 + 3bc03946: 4481 li s1,0 + 3bc03948: 0004879b sext.w a5,s1 + 3bc0394c: 0087e863 bltu a5,s0,3bc0395c + 3bc03950: 70a2 ld ra,40(sp) + 3bc03952: 7402 ld s0,32(sp) + 3bc03954: 64e2 ld s1,24(sp) + 3bc03956: 6942 ld s2,16(sp) + 3bc03958: 6145 addi sp,sp,48 + 3bc0395a: 8082 ret + 3bc0395c: 4496450b lrw a0,a2,s1,2 + 3bc03960: 85ca mv a1,s2 + 3bc03962: e432 sd a2,8(sp) + 3bc03964: deffd0ef jal ra,3bc01752 + 3bc03968: 6622 ld a2,8(sp) + 3bc0396a: 0485 addi s1,s1,1 + 3bc0396c: bff1 j 3bc03948 + +000000003bc0396e : + 3bc0396e: 7d1c ld a5,56(a0) + 3bc03970: 7119 addi sp,sp,-128 + 3bc03972: f8a2 sd s0,112(sp) + 3bc03974: f862 sd s8,48(sp) + 3bc03976: f466 sd s9,40(sp) + 3bc03978: f06a sd s10,32(sp) + 3bc0397a: 2687bc83 ld s9,616(a5) + 3bc0397e: fc86 sd ra,120(sp) + 3bc03980: 5ddc lw a5,60(a1) + 3bc03982: f4a6 sd s1,104(sp) + 3bc03984: f0ca sd s2,96(sp) + 3bc03986: ecce sd s3,88(sp) + 3bc03988: e8d2 sd s4,80(sp) + 3bc0398a: e4d6 sd s5,72(sp) + 3bc0398c: e0da sd s6,64(sp) + 3bc0398e: fc5e sd s7,56(sp) + 3bc03990: ec6e sd s11,24(sp) + 3bc03992: 07154903 lbu s2,113(a0) + 3bc03996: 6998 ld a4,16(a1) + 3bc03998: 4d80 lw s0,24(a1) + 3bc0399a: 7c07b60b extu a2,a5,31,0 + 3bc0399e: 00f97d13 andi s10,s2,15 + 3bc039a2: 963a add a2,a2,a4 + 3bc039a4: 40f4073b subw a4,s0,a5 + 3bc039a8: 6791 lui a5,0x4 + 3bc039aa: 8c2a mv s8,a0 + 3bc039ac: 896a mv s2,s10 + 3bc039ae: 6411 lui s0,0x4 + 3bc039b0: 00e7e363 bltu a5,a4,3bc039b6 + 3bc039b4: 843a mv s0,a4 + 3bc039b6: 000d1d63 bnez s10,3bc039d0 + 3bc039ba: 028c5783 lhu a5,40(s8) + 3bc039be: 873e mv a4,a5 + 3bc039c0: 00f437b3 sltu a5,s0,a5 + 3bc039c4: 0017c793 xori a5,a5,1 + 3bc039c8: 40f4170b mveqz a4,s0,a5 + 3bc039cc: 0007041b sext.w s0,a4 + 3bc039d0: 0004099b sext.w s3,s0 + 3bc039d4: 073c2023 sw s3,96(s8) + 3bc039d8: 06cc3423 sd a2,104(s8) + 3bc039dc: 00060a1b sext.w s4,a2 + 3bc039e0: 4785 li a5,1 + 3bc039e2: c801 beqz s0,3bc039f2 + 3bc039e4: 028c5503 lhu a0,40(s8) + 3bc039e8: fff4079b addiw a5,s0,-1 + 3bc039ec: 02a7d7bb divuw a5,a5,a0 + 3bc039f0: 2785 addiw a5,a5,1 + 3bc039f2: 6d85 lui s11,0x1 + 3bc039f4: 005d1b13 slli s6,s10,0x5 + 3bc039f8: 910d8a93 addi s5,s11,-1776 # 910 <__BSS_SIZE__-0x5300> + 3bc039fc: 0137979b slliw a5,a5,0x13 + 3bc03a00: 9ada add s5,s5,s6 + 3bc03a02: 00f46533 or a0,s0,a5 + 3bc03a06: 9ae6 add s5,s5,s9 + 3bc03a08: 85d6 mv a1,s5 + 3bc03a0a: 2501 sext.w a0,a0 + 3bc03a0c: e432 sd a2,8(sp) + 3bc03a0e: d45fd0ef jal ra,3bc01752 + 3bc03a12: 900d8793 addi a5,s11,-1792 + 3bc03a16: 9b3e add s6,s6,a5 + 3bc03a18: 9b66 add s6,s6,s9 + 3bc03a1a: 855a mv a0,s6 + 3bc03a1c: d31fd0ef jal ra,3bc0174c + 3bc03a20: 078c2783 lw a5,120(s8) + 3bc03a24: bc4004b7 lui s1,0xbc400 + 3bc03a28: 00050b9b sext.w s7,a0 + 3bc03a2c: 14fd addi s1,s1,-1 + 3bc03a2e: 0167979b slliw a5,a5,0x16 + 3bc03a32: 009bf4b3 and s1,s7,s1 + 3bc03a36: 8cdd or s1,s1,a5 + 3bc03a38: 77e1 lui a5,0xffff8 + 3bc03a3a: 7ff78793 addi a5,a5,2047 # ffffffffffff87ff <__BL2_END__+0xffffffffc43e4fef> + 3bc03a3e: 2481 sext.w s1,s1 + 3bc03a40: 8cfd and s1,s1,a5 + 3bc03a42: 840007b7 lui a5,0x84000 + 3bc03a46: 8cdd or s1,s1,a5 + 3bc03a48: 85da mv a1,s6 + 3bc03a4a: 8526 mv a0,s1 + 3bc03a4c: d07fd0ef jal ra,3bc01752 + 3bc03a50: 6622 ld a2,8(sp) + 3bc03a52: 038c3503 ld a0,56(s8) + 3bc03a56: 3c04368b extu a3,s0,15,0 + 3bc03a5a: 85ea mv a1,s10 + 3bc03a5c: ecfff0ef jal ra,3bc0392a + 3bc03a60: c809 beqz s0,3bc03a72 + 3bc03a62: 834d8593 addi a1,s11,-1996 + 3bc03a66: 4505 li a0,1 + 3bc03a68: 95e6 add a1,a1,s9 + 3bc03a6a: 0125153b sllw a0,a0,s2 + 3bc03a6e: ce5fd0ef jal ra,3bc01752 + 3bc03a72: 855a mv a0,s6 + 3bc03a74: cd9fd0ef jal ra,3bc0174c + 3bc03a78: 0005071b sext.w a4,a0 + 3bc03a7c: 00044537 lui a0,0x44 + 3bc03a80: 86de mv a3,s7 + 3bc03a82: 8652 mv a2,s4 + 3bc03a84: 85a6 mv a1,s1 + 3bc03a86: 44450513 addi a0,a0,1092 # 44444 <__BSS_SIZE__+0x3e834> + 3bc03a8a: e45fe0ef jal ra,3bc028ce + 3bc03a8e: 8556 mv a0,s5 + 3bc03a90: cbdfd0ef jal ra,3bc0174c + 3bc03a94: 0005059b sext.w a1,a0 + 3bc03a98: 00046537 lui a0,0x46 + 3bc03a9c: 86ca mv a3,s2 + 3bc03a9e: 8622 mv a2,s0 + 3bc03aa0: 46450513 addi a0,a0,1124 # 46464 <__BSS_SIZE__+0x40854> + 3bc03aa4: 4701 li a4,0 + 3bc03aa6: e29fe0ef jal ra,3bc028ce + 3bc03aaa: 70e6 ld ra,120(sp) + 3bc03aac: 7446 ld s0,112(sp) + 3bc03aae: 74a6 ld s1,104(sp) + 3bc03ab0: 7906 ld s2,96(sp) + 3bc03ab2: 6a46 ld s4,80(sp) + 3bc03ab4: 6aa6 ld s5,72(sp) + 3bc03ab6: 6b06 ld s6,64(sp) + 3bc03ab8: 7be2 ld s7,56(sp) + 3bc03aba: 7c42 ld s8,48(sp) + 3bc03abc: 7ca2 ld s9,40(sp) + 3bc03abe: 7d02 ld s10,32(sp) + 3bc03ac0: 6de2 ld s11,24(sp) + 3bc03ac2: 854e mv a0,s3 + 3bc03ac4: 69e6 ld s3,88(sp) + 3bc03ac6: 6109 addi sp,sp,128 + 3bc03ac8: 8082 ret + +000000003bc03aca : + 3bc03aca: 7179 addi sp,sp,-48 + 3bc03acc: e84a sd s2,16(sp) + 3bc03ace: 26853903 ld s2,616(a0) + 3bc03ad2: 0585 addi a1,a1,1 + 3bc03ad4: f022 sd s0,32(sp) + 3bc03ad6: 05b2 slli a1,a1,0xc + 3bc03ad8: 0036841b addiw s0,a3,3 + 3bc03adc: ec26 sd s1,24(sp) + 3bc03ade: f406 sd ra,40(sp) + 3bc03ae0: 4024340b extu s0,s0,16,2 + 3bc03ae4: 992e add s2,s2,a1 + 3bc03ae6: 4481 li s1,0 + 3bc03ae8: 0004879b sext.w a5,s1 + 3bc03aec: 0087e863 bltu a5,s0,3bc03afc + 3bc03af0: 70a2 ld ra,40(sp) + 3bc03af2: 7402 ld s0,32(sp) + 3bc03af4: 64e2 ld s1,24(sp) + 3bc03af6: 6942 ld s2,16(sp) + 3bc03af8: 6145 addi sp,sp,48 + 3bc03afa: 8082 ret + 3bc03afc: 854a mv a0,s2 + 3bc03afe: e432 sd a2,8(sp) + 3bc03b00: c4dfd0ef jal ra,3bc0174c + 3bc03b04: 6622 ld a2,8(sp) + 3bc03b06: 4496550b srw a0,a2,s1,2 + 3bc03b0a: 0485 addi s1,s1,1 + 3bc03b0c: bff1 j 3bc03ae8 + +000000003bc03b0e : + 3bc03b0e: 7179 addi sp,sp,-48 + 3bc03b10: e44e sd s3,8(sp) + 3bc03b12: 02855983 lhu s3,40(a0) + 3bc03b16: f022 sd s0,32(sp) + 3bc03b18: ec26 sd s1,24(sp) + 3bc03b1a: f406 sd ra,40(sp) + 3bc03b1c: e84a sd s2,16(sp) + 3bc03b1e: 84aa mv s1,a0 + 3bc03b20: 842e mv s0,a1 + 3bc03b22: e4dff0ef jal ra,3bc0396e + 3bc03b26: 2501 sext.w a0,a0 + 3bc03b28: 00a99e63 bne s3,a0,3bc03b44 + 3bc03b2c: 5c5c lw a5,60(s0) + 3bc03b2e: 4c18 lw a4,24(s0) + 3bc03b30: 4501 li a0,0 + 3bc03b32: 013787bb addw a5,a5,s3 + 3bc03b36: 00f71b63 bne a4,a5,3bc03b4c + 3bc03b3a: 505c lw a5,36(s0) + 3bc03b3c: 02e79713 slli a4,a5,0x2e + 3bc03b40: 00074663 bltz a4,3bc03b4c + 3bc03b44: 7c9c ld a5,56(s1) + 3bc03b46: 4505 li a0,1 + 3bc03b48: 0407a423 sw zero,72(a5) # ffffffff84000048 <__BL2_END__+0xffffffff483ec838> + 3bc03b4c: 70a2 ld ra,40(sp) + 3bc03b4e: 7402 ld s0,32(sp) + 3bc03b50: 64e2 ld s1,24(sp) + 3bc03b52: 6942 ld s2,16(sp) + 3bc03b54: 69a2 ld s3,8(sp) + 3bc03b56: 6145 addi sp,sp,48 + 3bc03b58: 8082 ret + +000000003bc03b5a : + 3bc03b5a: 7179 addi sp,sp,-48 + 3bc03b5c: ec26 sd s1,24(sp) + 3bc03b5e: 84ae mv s1,a1 + 3bc03b60: 26853583 ld a1,616(a0) + 3bc03b64: 6785 lui a5,0x1 + 3bc03b66: 80078793 addi a5,a5,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc03b6a: 95be add a1,a1,a5 + 3bc03b6c: f022 sd s0,32(sp) + 3bc03b6e: 842a mv s0,a0 + 3bc03b70: 852e mv a0,a1 + 3bc03b72: f406 sd ra,40(sp) + 3bc03b74: e42e sd a1,8(sp) + 3bc03b76: bd7fd0ef jal ra,3bc0174c + 3bc03b7a: 0044979b slliw a5,s1,0x4 + 3bc03b7e: 65a2 ld a1,8(sp) + 3bc03b80: 8d5d or a0,a0,a5 + 3bc03b82: 2501 sext.w a0,a0 + 3bc03b84: bcffd0ef jal ra,3bc01752 + 3bc03b88: 8522 mv a0,s0 + 3bc03b8a: affff0ef jal ra,3bc03688 + 3bc03b8e: 4785 li a5,1 + 3bc03b90: 24940823 sb s1,592(s0) # 4250 <__BSS_SIZE__-0x19c0> + 3bc03b94: 70a2 ld ra,40(sp) + 3bc03b96: 26f42823 sw a5,624(s0) + 3bc03b9a: 7402 ld s0,32(sp) + 3bc03b9c: 64e2 ld s1,24(sp) + 3bc03b9e: 6145 addi sp,sp,48 + 3bc03ba0: 8082 ret + +000000003bc03ba2 : + 3bc03ba2: 6d4c ld a1,152(a0) + 3bc03ba4: 09850693 addi a3,a0,152 + 3bc03ba8: 05050713 addi a4,a0,80 + 3bc03bac: 00d58e63 beq a1,a3,3bc03bc8 + 3bc03bb0: fd85a683 lw a3,-40(a1) + 3bc03bb4: e689 bnez a3,3bc03bbe + 3bc03bb6: 0a052823 sw zero,176(a0) + 3bc03bba: acfff06f j 3bc03688 + 3bc03bbe: fc058593 addi a1,a1,-64 + 3bc03bc2: 853a mv a0,a4 + 3bc03bc4: babff06f j 3bc0376e + 3bc03bc8: 8082 ret + +000000003bc03bca : + 3bc03bca: 6d4c ld a1,152(a0) + 3bc03bcc: 09850693 addi a3,a0,152 + 3bc03bd0: 02d58b63 beq a1,a3,3bc03c06 + 3bc03bd4: 1141 addi sp,sp,-16 + 3bc03bd6: e022 sd s0,0(sp) + 3bc03bd8: e406 sd ra,8(sp) + 3bc03bda: fc058593 addi a1,a1,-64 + 3bc03bde: 842a mv s0,a0 + 3bc03be0: 05050713 addi a4,a0,80 + 3bc03be4: 4501 li a0,0 + 3bc03be6: c989 beqz a1,3bc03bf8 + 3bc03be8: 853a mv a0,a4 + 3bc03bea: f25ff0ef jal ra,3bc03b0e + 3bc03bee: 4785 li a5,1 + 3bc03bf0: 00f51863 bne a0,a5,3bc03c00 + 3bc03bf4: 4795 li a5,5 + 3bc03bf6: c43c sw a5,72(s0) + 3bc03bf8: 60a2 ld ra,8(sp) + 3bc03bfa: 6402 ld s0,0(sp) + 3bc03bfc: 0141 addi sp,sp,16 + 3bc03bfe: 8082 ret + 3bc03c00: c43c sw a5,72(s0) + 3bc03c02: 4505 li a0,1 + 3bc03c04: bfd5 j 3bc03bf8 + 3bc03c06: 4501 li a0,0 + 3bc03c08: 8082 ret + +000000003bc03c0a : + 3bc03c0a: 1101 addi sp,sp,-32 + 3bc03c0c: ec06 sd ra,24(sp) + 3bc03c0e: 07154703 lbu a4,113(a0) + 3bc03c12: 7d1c ld a5,56(a0) + 3bc03c14: fc77368b extu a3,a4,63,7 + 3bc03c18: 2687b583 ld a1,616(a5) + 3bc03c1c: 00f77793 andi a5,a4,15 + 3bc03c20: c295 beqz a3,3bc03c44 + 3bc03c22: 04878793 addi a5,a5,72 + 3bc03c26: 0796 slli a5,a5,0x5 + 3bc03c28: 95be add a1,a1,a5 + 3bc03c2a: 852e mv a0,a1 + 3bc03c2c: e42e sd a1,8(sp) + 3bc03c2e: b1ffd0ef jal ra,3bc0174c + 3bc03c32: 65a2 ld a1,8(sp) + 3bc03c34: 60e2 ld ra,24(sp) + 3bc03c36: 080007b7 lui a5,0x8000 + 3bc03c3a: 8d5d or a0,a0,a5 + 3bc03c3c: 2501 sext.w a0,a0 + 3bc03c3e: 6105 addi sp,sp,32 + 3bc03c40: b13fd06f j 3bc01752 + 3bc03c44: 05878793 addi a5,a5,88 # 8000058 + 3bc03c48: bff9 j 3bc03c26 + +000000003bc03c4a : + 3bc03c4a: 07154703 lbu a4,113(a0) + 3bc03c4e: cd21 beqz a0,3bc03ca6 + 3bc03c50: 6134 ld a3,64(a0) + 3bc03c52: 87aa mv a5,a0 + 3bc03c54: caa9 beqz a3,3bc03ca6 + 3bc03c56: 00f77613 andi a2,a4,15 + 3bc03c5a: c631 beqz a2,3bc03ca6 + 3bc03c5c: 0036c603 lbu a2,3(a3) # 80003 <__BSS_SIZE__+0x7a3f3> + 3bc03c60: 4685 li a3,1 + 3bc03c62: 04d60263 beq a2,a3,3bc03ca6 + 3bc03c66: 1101 addi sp,sp,-32 + 3bc03c68: ec06 sd ra,24(sp) + 3bc03c6a: cd99 beqz a1,3bc03c88 + 3bc03c6c: fc77368b extu a3,a4,63,7 + 3bc03c70: c29d beqz a3,3bc03c96 + 3bc03c72: 6534 ld a3,72(a0) + 3bc03c74: 04850713 addi a4,a0,72 + 3bc03c78: fdd00593 li a1,-35 + 3bc03c7c: 00e68d63 beq a3,a4,3bc03c96 + 3bc03c80: 60e2 ld ra,24(sp) + 3bc03c82: 852e mv a0,a1 + 3bc03c84: 6105 addi sp,sp,32 + 3bc03c86: 8082 ret + 3bc03c88: 06050823 sb zero,112(a0) + 3bc03c8c: e42e sd a1,8(sp) + 3bc03c8e: 8bbff0ef jal ra,3bc03548 + 3bc03c92: 65a2 ld a1,8(sp) + 3bc03c94: b7f5 j 3bc03c80 + 3bc03c96: 4705 li a4,1 + 3bc03c98: 06e78823 sb a4,112(a5) + 3bc03c9c: 853e mv a0,a5 + 3bc03c9e: 909ff0ef jal ra,3bc035a6 + 3bc03ca2: 4581 li a1,0 + 3bc03ca4: bff1 j 3bc03c80 + 3bc03ca6: 55a9 li a1,-22 + 3bc03ca8: 852e mv a0,a1 + 3bc03caa: 8082 ret + +000000003bc03cac : + 3bc03cac: 7d1c ld a5,56(a0) + 3bc03cae: 7179 addi sp,sp,-48 + 3bc03cb0: f022 sd s0,32(sp) + 3bc03cb2: ec26 sd s1,24(sp) + 3bc03cb4: e84a sd s2,16(sp) + 3bc03cb6: e44e sd s3,8(sp) + 3bc03cb8: f406 sd ra,40(sp) + 3bc03cba: 2687b483 ld s1,616(a5) + 3bc03cbe: 07154783 lbu a5,113(a0) + 3bc03cc2: 4905 li s2,1 + 3bc03cc4: 89aa mv s3,a0 + 3bc03cc6: 00f7f413 andi s0,a5,15 + 3bc03cca: fc77b70b extu a4,a5,63,7 + 3bc03cce: 0089193b sllw s2,s2,s0 + 3bc03cd2: cf25 beqz a4,3bc03d4a + 3bc03cd4: 04840513 addi a0,s0,72 + 3bc03cd8: 0516 slli a0,a0,0x5 + 3bc03cda: 9526 add a0,a0,s1 + 3bc03cdc: a71fd0ef jal ra,3bc0174c + 3bc03ce0: 2501 sext.w a0,a0 + 3bc03ce2: 3cf5378b extu a5,a0,15,15 + 3bc03ce6: ef9d bnez a5,3bc03d24 + 3bc03ce8: fff407b7 lui a5,0xfff40 + 3bc03cec: 17fd addi a5,a5,-1 + 3bc03cee: 8d7d and a0,a0,a5 + 3bc03cf0: 0729c783 lbu a5,114(s3) + 3bc03cf4: 04840593 addi a1,s0,72 + 3bc03cf8: 0127979b slliw a5,a5,0x12 + 3bc03cfc: 8d5d or a0,a0,a5 + 3bc03cfe: 0289d783 lhu a5,40(s3) + 3bc03d02: 80057513 andi a0,a0,-2048 + 3bc03d06: 8d5d or a0,a0,a5 + 3bc03d08: 180087b7 lui a5,0x18008 + 3bc03d0c: 8d5d or a0,a0,a5 + 3bc03d0e: 07198783 lb a5,113(s3) + 3bc03d12: 2501 sext.w a0,a0 + 3bc03d14: 0007c463 bltz a5,3bc03d1c + 3bc03d18: 05840593 addi a1,s0,88 + 3bc03d1c: 0596 slli a1,a1,0x5 + 3bc03d1e: 95a6 add a1,a1,s1 + 3bc03d20: a33fd0ef jal ra,3bc01752 + 3bc03d24: 6585 lui a1,0x1 + 3bc03d26: 81c58593 addi a1,a1,-2020 # 81c <__BSS_SIZE__-0x53f4> + 3bc03d2a: 94ae add s1,s1,a1 + 3bc03d2c: 8526 mv a0,s1 + 3bc03d2e: a1ffd0ef jal ra,3bc0174c + 3bc03d32: 2501 sext.w a0,a0 + 3bc03d34: 7402 ld s0,32(sp) + 3bc03d36: 70a2 ld ra,40(sp) + 3bc03d38: 69a2 ld s3,8(sp) + 3bc03d3a: 85a6 mv a1,s1 + 3bc03d3c: 01256533 or a0,a0,s2 + 3bc03d40: 64e2 ld s1,24(sp) + 3bc03d42: 6942 ld s2,16(sp) + 3bc03d44: 6145 addi sp,sp,48 + 3bc03d46: a0dfd06f j 3bc01752 + 3bc03d4a: 05840513 addi a0,s0,88 + 3bc03d4e: 0516 slli a0,a0,0x5 + 3bc03d50: 9526 add a0,a0,s1 + 3bc03d52: 9fbfd0ef jal ra,3bc0174c + 3bc03d56: 2501 sext.w a0,a0 + 3bc03d58: 0109191b slliw s2,s2,0x10 + 3bc03d5c: b759 j 3bc03ce2 + +000000003bc03d5e : + 3bc03d5e: 453c lw a5,72(a0) + 3bc03d60: 34079163 bnez a5,3bc040a2 + 3bc03d64: 7139 addi sp,sp,-64 + 3bc03d66: f426 sd s1,40(sp) + 3bc03d68: 25853483 ld s1,600(a0) + 3bc03d6c: f822 sd s0,48(sp) + 3bc03d6e: fa400593 li a1,-92 + 3bc03d72: 842a mv s0,a0 + 3bc03d74: 05050513 addi a0,a0,80 + 3bc03d78: ec4e sd s3,24(sp) + 3bc03d7a: fc06 sd ra,56(sp) + 3bc03d7c: f04a sd s2,32(sp) + 3bc03d7e: e852 sd s4,16(sp) + 3bc03d80: c35fe0ef jal ra,3bc029b4 + 3bc03d84: 0004c783 lbu a5,0(s1) # ffffffffbc400000 <__BL2_END__+0xffffffff807ec7f0> + 3bc03d88: 0c144703 lbu a4,193(s0) + 3bc03d8c: 0064d983 lhu s3,6(s1) + 3bc03d90: fc77b60b extu a2,a5,63,7 + 3bc03d94: 07f77693 andi a3,a4,127 + 3bc03d98: c609 beqz a2,3bc03da2 + 3bc03d9a: f8076713 ori a4,a4,-128 + 3bc03d9e: 0ff77693 andi a3,a4,255 + 3bc03da2: 0607f793 andi a5,a5,96 + 3bc03da6: 25144703 lbu a4,593(s0) + 3bc03daa: 0017b793 seqz a5,a5 + 3bc03dae: 0017979b slliw a5,a5,0x1 + 3bc03db2: 0017e793 ori a5,a5,1 + 3bc03db6: 8b8d andi a5,a5,3 + 3bc03db8: 9b71 andi a4,a4,-4 + 3bc03dba: 8fd9 or a5,a5,a4 + 3bc03dbc: 24f408a3 sb a5,593(s0) + 3bc03dc0: 0cd400a3 sb a3,193(s0) + 3bc03dc4: 8b89 andi a5,a5,2 + 3bc03dc6: 24078a63 beqz a5,3bc0401a + 3bc03dca: 0014c703 lbu a4,1(s1) + 3bc03dce: 47ad li a5,11 + 3bc03dd0: 2ae7e863 bltu a5,a4,3bc04080 + 3bc03dd4: 87ba mv a5,a4 + 3bc03dd6: 00007717 auipc a4,0x7 + 3bc03dda: 3f670713 addi a4,a4,1014 # 3bc0b1cc + 3bc03dde: 44f7478b lrw a5,a4,a5,2 + 3bc03de2: 97ba add a5,a5,a4 + 3bc03de4: 8782 jr a5 + 3bc03de6: 0024d603 lhu a2,2(s1) + 3bc03dea: 000bc537 lui a0,0xbc + 3bc03dee: 4701 li a4,0 + 3bc03df0: 4681 li a3,0 + 3bc03df2: 4585 li a1,1 + 3bc03df4: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03df8: ad7fe0ef jal ra,3bc028ce + 3bc03dfc: 0004c783 lbu a5,0(s1) + 3bc03e00: 20079d63 bnez a5,3bc0401a + 3bc03e04: 8522 mv a0,s0 + 3bc03e06: 7442 ld s0,48(sp) + 3bc03e08: 0024c583 lbu a1,2(s1) + 3bc03e0c: 70e2 ld ra,56(sp) + 3bc03e0e: 74a2 ld s1,40(sp) + 3bc03e10: 7902 ld s2,32(sp) + 3bc03e12: 69e2 ld s3,24(sp) + 3bc03e14: 6a42 ld s4,16(sp) + 3bc03e16: 6121 addi sp,sp,64 + 3bc03e18: d43ff06f j 3bc03b5a + 3bc03e1c: 0024d603 lhu a2,2(s1) + 3bc03e20: 4701 li a4,0 + 3bc03e22: 4681 li a3,0 + 3bc03e24: 4589 li a1,2 + 3bc03e26: 000bc537 lui a0,0xbc + 3bc03e2a: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03e2e: aa1fe0ef jal ra,3bc028ce + 3bc03e32: a2e5 j 3bc0401a + 3bc03e34: 4701 li a4,0 + 3bc03e36: 4681 li a3,0 + 3bc03e38: 4601 li a2,0 + 3bc03e3a: 458d li a1,3 + 3bc03e3c: b7ed j 3bc03e26 + 3bc03e3e: 4701 li a4,0 + 3bc03e40: 4681 li a3,0 + 3bc03e42: 4601 li a2,0 + 3bc03e44: 4591 li a1,4 + 3bc03e46: b7c5 j 3bc03e26 + 3bc03e48: 4701 li a4,0 + 3bc03e4a: 4681 li a3,0 + 3bc03e4c: 4601 li a2,0 + 3bc03e4e: 4595 li a1,5 + 3bc03e50: bfd9 j 3bc03e26 + 3bc03e52: 000bc537 lui a0,0xbc + 3bc03e56: 4701 li a4,0 + 3bc03e58: 4681 li a3,0 + 3bc03e5a: 4601 li a2,0 + 3bc03e5c: 4599 li a1,6 + 3bc03e5e: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03e62: a6dfe0ef jal ra,3bc028ce + 3bc03e66: 0044d503 lhu a0,4(s1) + 3bc03e6a: 1c75358b extu a1,a0,7,7 + 3bc03e6e: 07f57513 andi a0,a0,127 + 3bc03e72: c9aff0ef jal ra,3bc0330c + 3bc03e76: 00011723 sh zero,14(sp) + 3bc03e7a: 0004c583 lbu a1,0(s1) + 3bc03e7e: 892a mv s2,a0 + 3bc03e80: 00007517 auipc a0,0x7 + 3bc03e84: 33850513 addi a0,a0,824 # 3bc0b1b8 + 3bc03e88: 89bd andi a1,a1,15 + 3bc03e8a: 26843a03 ld s4,616(s0) + 3bc03e8e: ccafc0ef jal ra,3bc00358 + 3bc03e92: 0004c783 lbu a5,0(s1) + 3bc03e96: 4705 li a4,1 + 3bc03e98: 8bbd andi a5,a5,15 + 3bc03e9a: 00e78a63 beq a5,a4,3bc03eae + 3bc03e9e: 4689 li a3,2 + 3bc03ea0: 06d78b63 beq a5,a3,3bc03f16 + 3bc03ea4: 16079b63 bnez a5,3bc0401a + 3bc03ea8: 00e11723 sh a4,14(sp) + 3bc03eac: a019 j 3bc03eb2 + 3bc03eae: 00011723 sh zero,14(sp) + 3bc03eb2: 25843503 ld a0,600(s0) + 3bc03eb6: 4609 li a2,2 + 3bc03eb8: 00e10593 addi a1,sp,14 + 3bc03ebc: bbffc0ef jal ra,3bc00a7a + 3bc03ec0: 6485 lui s1,0x1 + 3bc03ec2: 26042503 lw a0,608(s0) + 3bc03ec6: 91448593 addi a1,s1,-1772 # 914 <__BSS_SIZE__-0x52fc> + 3bc03eca: 95d2 add a1,a1,s4 + 3bc03ecc: 887fd0ef jal ra,3bc01752 + 3bc03ed0: 91048593 addi a1,s1,-1776 + 3bc03ed4: 00080537 lui a0,0x80 + 3bc03ed8: 95d2 add a1,a1,s4 + 3bc03eda: 0509 addi a0,a0,2 + 3bc03edc: 90048493 addi s1,s1,-1792 + 3bc03ee0: 873fd0ef jal ra,3bc01752 + 3bc03ee4: 9a26 add s4,s4,s1 + 3bc03ee6: 8552 mv a0,s4 + 3bc03ee8: 865fd0ef jal ra,3bc0174c + 3bc03eec: c00007b7 lui a5,0xc0000 + 3bc03ef0: 17fd addi a5,a5,-1 + 3bc03ef2: 2501 sext.w a0,a0 + 3bc03ef4: 8d7d and a0,a0,a5 + 3bc03ef6: 840007b7 lui a5,0x84000 + 3bc03efa: 8d5d or a0,a0,a5 + 3bc03efc: 85d2 mv a1,s4 + 3bc03efe: 855fd0ef jal ra,3bc01752 + 3bc03f02: 47a1 li a5,8 + 3bc03f04: c43c sw a5,72(s0) + 3bc03f06: 70e2 ld ra,56(sp) + 3bc03f08: 7442 ld s0,48(sp) + 3bc03f0a: 74a2 ld s1,40(sp) + 3bc03f0c: 7902 ld s2,32(sp) + 3bc03f0e: 69e2 ld s3,24(sp) + 3bc03f10: 6a42 ld s4,16(sp) + 3bc03f12: 6121 addi sp,sp,64 + 3bc03f14: 8082 ret + 3bc03f16: 0064d703 lhu a4,6(s1) + 3bc03f1a: 10e7e063 bltu a5,a4,3bc0401a + 3bc03f1e: 2901 sext.w s2,s2 + 3bc03f20: 091e slli s2,s2,0x7 + 3bc03f22: 9922 add s2,s2,s0 + 3bc03f24: 0c094783 lbu a5,192(s2) + 3bc03f28: 00f11723 sh a5,14(sp) + 3bc03f2c: b759 j 3bc03eb2 + 3bc03f2e: 000bc537 lui a0,0xbc + 3bc03f32: 4701 li a4,0 + 3bc03f34: 4681 li a3,0 + 3bc03f36: 4601 li a2,0 + 3bc03f38: 459d li a1,7 + 3bc03f3a: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03f3e: 991fe0ef jal ra,3bc028ce + 3bc03f42: 0044d503 lhu a0,4(s1) + 3bc03f46: 1c75358b extu a1,a0,7,7 + 3bc03f4a: 07f57513 andi a0,a0,127 + 3bc03f4e: bbeff0ef jal ra,3bc0330c + 3bc03f52: 00751913 slli s2,a0,0x7 + 3bc03f56: 05090913 addi s2,s2,80 + 3bc03f5a: 9922 add s2,s2,s0 + 3bc03f5c: 03893a03 ld s4,56(s2) + 3bc03f60: 258a3703 ld a4,600(s4) + 3bc03f64: 00675783 lhu a5,6(a4) + 3bc03f68: ebcd bnez a5,3bc0401a + 3bc03f6a: 00074783 lbu a5,0(a4) + 3bc03f6e: 8bbd andi a5,a5,15 + 3bc03f70: c795 beqz a5,3bc03f9c + 3bc03f72: 4689 li a3,2 + 3bc03f74: f8d799e3 bne a5,a3,3bc03f06 + 3bc03f78: 00275783 lhu a5,2(a4) + 3bc03f7c: f7c9 bnez a5,3bc03f06 + 3bc03f7e: 07194403 lbu s0,113(s2) + 3bc03f82: 883d andi s0,s0,15 + 3bc03f84: e415 bnez s0,3bc03fb0 + 3bc03f86: 4585 li a1,1 + 3bc03f88: 8552 mv a0,s4 + 3bc03f8a: 7442 ld s0,48(sp) + 3bc03f8c: 70e2 ld ra,56(sp) + 3bc03f8e: 74a2 ld s1,40(sp) + 3bc03f90: 7902 ld s2,32(sp) + 3bc03f92: 69e2 ld s3,24(sp) + 3bc03f94: 6a42 ld s4,16(sp) + 3bc03f96: 6121 addi sp,sp,64 + 3bc03f98: f6eff06f j 3bc03706 + 3bc03f9c: 8552 mv a0,s4 + 3bc03f9e: 7442 ld s0,48(sp) + 3bc03fa0: 70e2 ld ra,56(sp) + 3bc03fa2: 74a2 ld s1,40(sp) + 3bc03fa4: 7902 ld s2,32(sp) + 3bc03fa6: 69e2 ld s3,24(sp) + 3bc03fa8: 6a42 ld s4,16(sp) + 3bc03faa: 6121 addi sp,sp,64 + 3bc03fac: edcff06f j 3bc03688 + 3bc03fb0: 8552 mv a0,s4 + 3bc03fb2: ed6ff0ef jal ra,3bc03688 + 3bc03fb6: 854a mv a0,s2 + 3bc03fb8: d90ff0ef jal ra,3bc03548 + 3bc03fbc: 854a mv a0,s2 + 3bc03fbe: cefff0ef jal ra,3bc03cac + 3bc03fc2: 4785 li a5,1 + 3bc03fc4: 06090823 sb zero,112(s2) + 3bc03fc8: 268a0a23 sb s0,628(s4) + 3bc03fcc: 26fa0aa3 sb a5,629(s4) + 3bc03fd0: bf1d j 3bc03f06 + 3bc03fd2: 000bc537 lui a0,0xbc + 3bc03fd6: 4701 li a4,0 + 3bc03fd8: 4681 li a3,0 + 3bc03fda: 4601 li a2,0 + 3bc03fdc: 45a1 li a1,8 + 3bc03fde: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03fe2: 8edfe0ef jal ra,3bc028ce + 3bc03fe6: 0044d503 lhu a0,4(s1) + 3bc03fea: 1c75358b extu a1,a0,7,7 + 3bc03fee: 07f57513 andi a0,a0,127 + 3bc03ff2: b1aff0ef jal ra,3bc0330c + 3bc03ff6: 051e slli a0,a0,0x7 + 3bc03ff8: 05050513 addi a0,a0,80 + 3bc03ffc: 9522 add a0,a0,s0 + 3bc03ffe: 03853903 ld s2,56(a0) + 3bc04002: 25893783 ld a5,600(s2) + 3bc04006: 0067d703 lhu a4,6(a5) # ffffffff84000006 <__BL2_END__+0xffffffff483ec7f6> + 3bc0400a: eb01 bnez a4,3bc0401a + 3bc0400c: 0007c703 lbu a4,0(a5) + 3bc04010: 8b3d andi a4,a4,15 + 3bc04012: cb15 beqz a4,3bc04046 + 3bc04014: 4689 li a3,2 + 3bc04016: 04d70563 beq a4,a3,3bc04060 + 3bc0401a: 7c1c ld a5,56(s0) + 3bc0401c: cfbd beqz a5,3bc0409a + 3bc0401e: 739c ld a5,32(a5) + 3bc04020: 85a6 mv a1,s1 + 3bc04022: 8522 mv a0,s0 + 3bc04024: 9782 jalr a5 + 3bc04026: 06055263 bgez a0,3bc0408a + 3bc0402a: 0064d783 lhu a5,6(s1) + 3bc0402e: 4585 li a1,1 + 3bc04030: c789 beqz a5,3bc0403a + 3bc04032: 0c140583 lb a1,193(s0) + 3bc04036: 01f5d59b srliw a1,a1,0x1f + 3bc0403a: 6448 ld a0,136(s0) + 3bc0403c: ecaff0ef jal ra,3bc03706 + 3bc04040: 04042423 sw zero,72(s0) + 3bc04044: b5c9 j 3bc03f06 + 3bc04046: 0027d683 lhu a3,2(a5) + 3bc0404a: 4709 li a4,2 + 3bc0404c: 00e69863 bne a3,a4,3bc0405c + 3bc04050: 0047d783 lhu a5,4(a5) + 3bc04054: 0087d79b srliw a5,a5,0x8 + 3bc04058: 26f90b23 sb a5,630(s2) + 3bc0405c: 854a mv a0,s2 + 3bc0405e: b781 j 3bc03f9e + 3bc04060: 0027d783 lhu a5,2(a5) + 3bc04064: ffe5 bnez a5,3bc0405c + 3bc04066: 07154783 lbu a5,113(a0) + 3bc0406a: 8bbd andi a5,a5,15 + 3bc0406c: e781 bnez a5,3bc04074 + 3bc0406e: 4585 li a1,1 + 3bc04070: 854a mv a0,s2 + 3bc04072: bf21 j 3bc03f8a + 3bc04074: 4785 li a5,1 + 3bc04076: 06f50823 sb a5,112(a0) + 3bc0407a: d2cff0ef jal ra,3bc035a6 + 3bc0407e: bff9 j 3bc0405c + 3bc04080: 4701 li a4,0 + 3bc04082: 4681 li a3,0 + 3bc04084: 4601 li a2,0 + 3bc04086: 45a5 li a1,9 + 3bc04088: bb79 j 3bc03e26 + 3bc0408a: 25144783 lbu a5,593(s0) + 3bc0408e: 0017f713 andi a4,a5,1 + 3bc04092: c701 beqz a4,3bc0409a + 3bc04094: 9bf9 andi a5,a5,-2 + 3bc04096: 24f408a3 sb a5,593(s0) + 3bc0409a: e60996e3 bnez s3,3bc03f06 + 3bc0409e: 8522 mv a0,s0 + 3bc040a0: bdfd j 3bc03f9e + 3bc040a2: 8082 ret + +000000003bc040a4 : + 3bc040a4: 7119 addi sp,sp,-128 + 3bc040a6: ecce sd s3,88(sp) + 3bc040a8: 2685b983 ld s3,616(a1) + 3bc040ac: f0ca sd s2,96(sp) + 3bc040ae: f8a2 sd s0,112(sp) + 3bc040b0: 01498913 addi s2,s3,20 + 3bc040b4: 854a mv a0,s2 + 3bc040b6: f4a6 sd s1,104(sp) + 3bc040b8: e0da sd s6,64(sp) + 3bc040ba: fc86 sd ra,120(sp) + 3bc040bc: e8d2 sd s4,80(sp) + 3bc040be: e4d6 sd s5,72(sp) + 3bc040c0: fc5e sd s7,56(sp) + 3bc040c2: f862 sd s8,48(sp) + 3bc040c4: f466 sd s9,40(sp) + 3bc040c6: f06a sd s10,32(sp) + 3bc040c8: ec6e sd s11,24(sp) + 3bc040ca: 842e mv s0,a1 + 3bc040cc: 01898b13 addi s6,s3,24 + 3bc040d0: e7cfd0ef jal ra,3bc0174c + 3bc040d4: 0005049b sext.w s1,a0 + 3bc040d8: 855a mv a0,s6 + 3bc040da: e72fd0ef jal ra,3bc0174c + 3bc040de: 1c048563 beqz s1,3bc042a8 + 3bc040e2: 4430 lw a2,72(s0) + 3bc040e4: 00050a9b sext.w s5,a0 + 3bc040e8: 6505 lui a0,0x1 + 3bc040ea: 81850513 addi a0,a0,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc040ee: 954e add a0,a0,s3 + 3bc040f0: e432 sd a2,8(sp) + 3bc040f2: e5afd0ef jal ra,3bc0174c + 3bc040f6: 6622 ld a2,8(sp) + 3bc040f8: 0005069b sext.w a3,a0 + 3bc040fc: 653d lui a0,0xf + 3bc040fe: 4701 li a4,0 + 3bc04100: 85a6 mv a1,s1 + 3bc04102: 153d addi a0,a0,-17 + 3bc04104: fcafe0ef jal ra,3bc028ce + 3bc04108: 0104f793 andi a5,s1,16 + 3bc0410c: c3b5 beqz a5,3bc04170 + 3bc0410e: 85da mv a1,s6 + 3bc04110: fefaf513 andi a0,s5,-17 + 3bc04114: e3efd0ef jal ra,3bc01752 + 3bc04118: 02098513 addi a0,s3,32 + 3bc0411c: e30fd0ef jal ra,3bc0174c + 3bc04120: 00f57b93 andi s7,a0,15 + 3bc04124: 00050a1b sext.w s4,a0 + 3bc04128: 4581 li a1,0 + 3bc0412a: 855e mv a0,s7 + 3bc0412c: 9e0ff0ef jal ra,3bc0330c + 3bc04130: 001e07b7 lui a5,0x1e0 + 3bc04134: 00fa77b3 and a5,s4,a5 + 3bc04138: 00040737 lui a4,0x40 + 3bc0413c: 18e79663 bne a5,a4,3bc042c8 + 3bc04140: 384a3a0b extu s4,s4,14,4 + 3bc04144: 020a0163 beqz s4,3bc04166 + 3bc04148: 0005079b sext.w a5,a0 + 3bc0414c: 079e slli a5,a5,0x7 + 3bc0414e: 97a2 add a5,a5,s0 + 3bc04150: 0987bc03 ld s8,152(a5) # 1e0098 <__BSS_SIZE__+0x1da488> + 3bc04154: 86d2 mv a3,s4 + 3bc04156: 85de mv a1,s7 + 3bc04158: fd0c3603 ld a2,-48(s8) + 3bc0415c: 8522 mv a0,s0 + 3bc0415e: 96dff0ef jal ra,3bc03aca + 3bc04162: ff4c2023 sw s4,-32(s8) + 3bc04166: 85da mv a1,s6 + 3bc04168: 010ae513 ori a0,s5,16 + 3bc0416c: de6fd0ef jal ra,3bc01752 + 3bc04170: 34d4b78b extu a5,s1,13,13 + 3bc04174: cb9d beqz a5,3bc041aa + 3bc04176: 85ca mv a1,s2 + 3bc04178: 6509 lui a0,0x2 + 3bc0417a: dd8fd0ef jal ra,3bc01752 + 3bc0417e: 6505 lui a0,0x1 + 3bc04180: 80850513 addi a0,a0,-2040 # 808 <__BSS_SIZE__-0x5408> + 3bc04184: 954e add a0,a0,s3 + 3bc04186: dc6fd0ef jal ra,3bc0174c + 3bc0418a: 8919 andi a0,a0,6 + 3bc0418c: 14050b63 beqz a0,3bc042e2 + 3bc04190: 4589 li a1,2 + 3bc04192: 8522 mv a0,s0 + 3bc04194: b26ff0ef jal ra,3bc034ba + 3bc04198: 6509 lui a0,0x2 + 3bc0419a: 4701 li a4,0 + 3bc0419c: 4681 li a3,0 + 3bc0419e: 4601 li a2,0 + 3bc041a0: 4589 li a1,2 + 3bc041a2: 22250513 addi a0,a0,546 # 2222 <__BSS_SIZE__-0x39ee> + 3bc041a6: f28fe0ef jal ra,3bc028ce + 3bc041aa: 4004f793 andi a5,s1,1024 + 3bc041ae: c791 beqz a5,3bc041ba + 3bc041b0: 85ca mv a1,s2 + 3bc041b2: 40000513 li a0,1024 + 3bc041b6: d9cfd0ef jal ra,3bc01752 + 3bc041ba: 6505 lui a0,0x1 + 3bc041bc: 80050a13 addi s4,a0,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc041c0: 0144f7b3 and a5,s1,s4 + 3bc041c4: c395 beqz a5,3bc041e8 + 3bc041c6: 80850513 addi a0,a0,-2040 + 3bc041ca: 954e add a0,a0,s3 + 3bc041cc: d80fd0ef jal ra,3bc0174c + 3bc041d0: 85ca mv a1,s2 + 3bc041d2: 8552 mv a0,s4 + 3bc041d4: d7efd0ef jal ra,3bc01752 + 3bc041d8: 501c lw a5,32(s0) + 3bc041da: c799 beqz a5,3bc041e8 + 3bc041dc: 7c1c ld a5,56(s0) + 3bc041de: c789 beqz a5,3bc041e8 + 3bc041e0: 7b9c ld a5,48(a5) + 3bc041e2: c399 beqz a5,3bc041e8 + 3bc041e4: 8522 mv a0,s0 + 3bc041e6: 9782 jalr a5 + 3bc041e8: 0004df63 bgez s1,3bc04206 + 3bc041ec: 85ca mv a1,s2 + 3bc041ee: 80000537 lui a0,0x80000 + 3bc041f2: d60fd0ef jal ra,3bc01752 + 3bc041f6: 501c lw a5,32(s0) + 3bc041f8: c799 beqz a5,3bc04206 + 3bc041fa: 7c1c ld a5,56(s0) + 3bc041fc: c789 beqz a5,3bc04206 + 3bc041fe: 7f9c ld a5,56(a5) + 3bc04200: c399 beqz a5,3bc04206 + 3bc04202: 8522 mv a0,s0 + 3bc04204: 9782 jalr a5 + 3bc04206: 008017b7 lui a5,0x801 + 3bc0420a: 8fe5 and a5,a5,s1 + 3bc0420c: c3bd beqz a5,3bc04272 + 3bc0420e: 854e mv a0,s3 + 3bc04210: d3cfd0ef jal ra,3bc0174c + 3bc04214: 0005099b sext.w s3,a0 + 3bc04218: 6505 lui a0,0x1 + 3bc0421a: 4701 li a4,0 + 3bc0421c: 4681 li a3,0 + 3bc0421e: 4601 li a2,0 + 3bc04220: 85ce mv a1,s3 + 3bc04222: 11150513 addi a0,a0,273 # 1111 <__BSS_SIZE__-0x4aff> + 3bc04226: ea8fe0ef jal ra,3bc028ce + 3bc0422a: 30c4b78b extu a5,s1,12,12 + 3bc0422e: c789 beqz a5,3bc04238 + 3bc04230: 85ca mv a1,s2 + 3bc04232: 6505 lui a0,0x1 + 3bc04234: d1efd0ef jal ra,3bc01752 + 3bc04238: 5d74b78b extu a5,s1,23,23 + 3bc0423c: c791 beqz a5,3bc04248 + 3bc0423e: 85ca mv a1,s2 + 3bc04240: 00800537 lui a0,0x800 + 3bc04244: d0efd0ef jal ra,3bc01752 + 3bc04248: 000c0537 lui a0,0xc0 + 3bc0424c: 00a9f9b3 and s3,s3,a0 + 3bc04250: 000c07b7 lui a5,0xc0 + 3bc04254: 00f99f63 bne s3,a5,3bc04272 + 3bc04258: 27042903 lw s2,624(s0) + 3bc0425c: 8522 mv a0,s0 + 3bc0425e: 9d5fe0ef jal ra,3bc02c32 + 3bc04262: 00090663 beqz s2,3bc0426e + 3bc04266: 4585 li a1,1 + 3bc04268: 8522 mv a0,s0 + 3bc0426a: cbffe0ef jal ra,3bc02f28 + 3bc0426e: 04042423 sw zero,72(s0) + 3bc04272: 4924b78b extu a5,s1,18,18 + 3bc04276: e7c1 bnez a5,3bc042fe + 3bc04278: 4d34b48b extu s1,s1,19,19 + 3bc0427c: c495 beqz s1,3bc042a8 + 3bc0427e: 26843b03 ld s6,616(s0) + 3bc04282: 6505 lui a0,0x1 + 3bc04284: 81850513 addi a0,a0,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc04288: 955a add a0,a0,s6 + 3bc0428a: cc2fd0ef jal ra,3bc0174c + 3bc0428e: 00066a37 lui s4,0x66 + 3bc04292: 6a8d lui s5,0x3 + 3bc04294: 7d05398b extu s3,a0,31,16 + 3bc04298: 4901 li s2,0 + 3bc0429a: 4b99 li s7,6 + 3bc0429c: 666a0a13 addi s4,s4,1638 # 66666 <__BSS_SIZE__+0x60a56> + 3bc042a0: 333a8a93 addi s5,s5,819 # 3333 <__BSS_SIZE__-0x28dd> + 3bc042a4: 2a099963 bnez s3,3bc04556 + 3bc042a8: 70e6 ld ra,120(sp) + 3bc042aa: 7446 ld s0,112(sp) + 3bc042ac: 74a6 ld s1,104(sp) + 3bc042ae: 7906 ld s2,96(sp) + 3bc042b0: 69e6 ld s3,88(sp) + 3bc042b2: 6a46 ld s4,80(sp) + 3bc042b4: 6aa6 ld s5,72(sp) + 3bc042b6: 6b06 ld s6,64(sp) + 3bc042b8: 7be2 ld s7,56(sp) + 3bc042ba: 7c42 ld s8,48(sp) + 3bc042bc: 7ca2 ld s9,40(sp) + 3bc042be: 7d02 ld s10,32(sp) + 3bc042c0: 6de2 ld s11,24(sp) + 3bc042c2: 4501 li a0,0 + 3bc042c4: 6109 addi sp,sp,128 + 3bc042c6: 8082 ret + 3bc042c8: 000c0737 lui a4,0xc0 + 3bc042cc: e8e79de3 bne a5,a4,3bc04166 + 3bc042d0: 25843603 ld a2,600(s0) + 3bc042d4: 384a368b extu a3,s4,14,4 + 3bc042d8: 85de mv a1,s7 + 3bc042da: 8522 mv a0,s0 + 3bc042dc: feeff0ef jal ra,3bc03aca + 3bc042e0: b559 j 3bc04166 + 3bc042e2: 6509 lui a0,0x2 + 3bc042e4: 4701 li a4,0 + 3bc042e6: 4681 li a3,0 + 3bc042e8: 4601 li a2,0 + 3bc042ea: 4585 li a1,1 + 3bc042ec: 22250513 addi a0,a0,546 # 2222 <__BSS_SIZE__-0x39ee> + 3bc042f0: ddefe0ef jal ra,3bc028ce + 3bc042f4: 458d li a1,3 + 3bc042f6: 8522 mv a0,s0 + 3bc042f8: 9c2ff0ef jal ra,3bc034ba + 3bc042fc: b57d j 3bc041aa + 3bc042fe: 26843a03 ld s4,616(s0) + 3bc04302: 6a85 lui s5,0x1 + 3bc04304: 818a8513 addi a0,s5,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc04308: 9552 add a0,a0,s4 + 3bc0430a: c42fd0ef jal ra,3bc0174c + 3bc0430e: 00737b37 lui s6,0x737 + 3bc04312: 00747bb7 lui s7,0x747 + 3bc04316: 00055c37 lui s8,0x55 + 3bc0431a: 3c05398b extu s3,a0,15,0 + 3bc0431e: 4901 li s2,0 + 3bc04320: 373b0b13 addi s6,s6,883 # 737373 <__BSS_SIZE__+0x731763> + 3bc04324: 474b8b93 addi s7,s7,1140 # 747474 <__BSS_SIZE__+0x741864> + 3bc04328: 555c0c13 addi s8,s8,1365 # 55555 <__BSS_SIZE__+0x4f945> + 3bc0432c: 804a8a93 addi s5,s5,-2044 + 3bc04330: f40984e3 beqz s3,3bc04278 + 3bc04334: 0019f793 andi a5,s3,1 + 3bc04338: 1c078163 beqz a5,3bc044fa + 3bc0433c: 04890c93 addi s9,s2,72 + 3bc04340: 0c96 slli s9,s9,0x5 + 3bc04342: 008c8d93 addi s11,s9,8 + 3bc04346: 9dd2 add s11,s11,s4 + 3bc04348: 856e mv a0,s11 + 3bc0434a: c02fd0ef jal ra,3bc0174c + 3bc0434e: 00050d1b sext.w s10,a0 + 3bc04352: 010c8513 addi a0,s9,16 + 3bc04356: 9552 add a0,a0,s4 + 3bc04358: bf4fd0ef jal ra,3bc0174c + 3bc0435c: 0005069b sext.w a3,a0 + 3bc04360: 019a0533 add a0,s4,s9 + 3bc04364: e436 sd a3,8(sp) + 3bc04366: be6fd0ef jal ra,3bc0174c + 3bc0436a: 66a2 ld a3,8(sp) + 3bc0436c: 0005071b sext.w a4,a0 + 3bc04370: 866a mv a2,s10 + 3bc04372: 85ca mv a1,s2 + 3bc04374: 855a mv a0,s6 + 3bc04376: d58fe0ef jal ra,3bc028ce + 3bc0437a: 014c8513 addi a0,s9,20 + 3bc0437e: 9552 add a0,a0,s4 + 3bc04380: bccfd0ef jal ra,3bc0174c + 3bc04384: 0ce1 addi s9,s9,24 + 3bc04386: 0005059b sext.w a1,a0 + 3bc0438a: 019a0533 add a0,s4,s9 + 3bc0438e: e42e sd a1,8(sp) + 3bc04390: bbcfd0ef jal ra,3bc0174c + 3bc04394: 65a2 ld a1,8(sp) + 3bc04396: 0005061b sext.w a2,a0 + 3bc0439a: 4701 li a4,0 + 3bc0439c: 4681 li a3,0 + 3bc0439e: 855e mv a0,s7 + 3bc043a0: d2efe0ef jal ra,3bc028ce + 3bc043a4: 856a mv a0,s10 + 3bc043a6: 85ee mv a1,s11 + 3bc043a8: 001d7d13 andi s10,s10,1 + 3bc043ac: ba6fd0ef jal ra,3bc01752 + 3bc043b0: 140d0563 beqz s10,3bc044fa + 3bc043b4: 4585 li a1,1 + 3bc043b6: 854a mv a0,s2 + 3bc043b8: f55fe0ef jal ra,3bc0330c + 3bc043bc: 00050c9b sext.w s9,a0 + 3bc043c0: 0c9e slli s9,s9,0x7 + 3bc043c2: 01940833 add a6,s0,s9 + 3bc043c6: 09883603 ld a2,152(a6) + 3bc043ca: 00751d13 slli s10,a0,0x7 + 3bc043ce: 098d0d93 addi s11,s10,152 + 3bc043d2: 442c lw a1,72(s0) + 3bc043d4: 9da2 add s11,s11,s0 + 3bc043d6: 41b60633 sub a2,a2,s11 + 3bc043da: 00163613 seqz a2,a2 + 3bc043de: 4701 li a4,0 + 3bc043e0: 4681 li a3,0 + 3bc043e2: 8562 mv a0,s8 + 3bc043e4: e442 sd a6,8(sp) + 3bc043e6: ce8fe0ef jal ra,3bc028ce + 3bc043ea: 4430 lw a2,72(s0) + 3bc043ec: 47a1 li a5,8 + 3bc043ee: 6822 ld a6,8(sp) + 3bc043f0: 00f61a63 bne a2,a5,3bc04404 + 3bc043f4: 4799 li a5,6 + 3bc043f6: c43c sw a5,72(s0) + 3bc043f8: 8522 mv a0,s0 + 3bc043fa: a0eff0ef jal ra,3bc03608 + 3bc043fe: 04090c63 beqz s2,3bc04456 + 3bc04402: a8e5 j 3bc044fa + 3bc04404: 09883703 ld a4,152(a6) + 3bc04408: feed8be3 beq s11,a4,3bc043fe + 3bc0440c: ffc72303 lw t1,-4(a4) # bfffc <__BSS_SIZE__+0xba3ec> + 3bc04410: fd872883 lw a7,-40(a4) + 3bc04414: 0b082783 lw a5,176(a6) + 3bc04418: 050d0513 addi a0,s10,80 + 3bc0441c: 40688e3b subw t3,a7,t1 + 3bc04420: 0007869b sext.w a3,a5 + 3bc04424: 000e081b sext.w a6,t3 + 3bc04428: 00d836b3 sltu a3,a6,a3 + 3bc0442c: 0016c693 xori a3,a3,1 + 3bc04430: 40de178b mveqz a5,t3,a3 + 3bc04434: 006786bb addw a3,a5,t1 + 3bc04438: fed72e23 sw a3,-4(a4) + 3bc0443c: 9522 add a0,a0,s0 + 3bc0443e: fc070593 addi a1,a4,-64 + 3bc04442: 08091c63 bnez s2,3bc044da + 3bc04446: 4785 li a5,1 + 3bc04448: 06f61463 bne a2,a5,3bc044b0 + 3bc0444c: ec2ff0ef jal ra,3bc03b0e + 3bc04450: c119 beqz a0,3bc04456 + 3bc04452: 4795 li a5,5 + 3bc04454: c43c sw a5,72(s0) + 3bc04456: 27644783 lbu a5,630(s0) + 3bc0445a: c3a9 beqz a5,3bc0449c + 3bc0445c: 26843d03 ld s10,616(s0) + 3bc04460: 00078d9b sext.w s11,a5 + 3bc04464: e43e sd a5,8(sp) + 3bc04466: 9d56 add s10,s10,s5 + 3bc04468: 856a mv a0,s10 + 3bc0446a: ae2fd0ef jal ra,3bc0174c + 3bc0446e: 67a2 ld a5,8(sp) + 3bc04470: 00050c9b sext.w s9,a0 + 3bc04474: 4711 li a4,4 + 3bc04476: 37fd addiw a5,a5,-1 + 3bc04478: f8fcfc93 andi s9,s9,-113 + 3bc0447c: 02f76063 bltu a4,a5,3bc0449c + 3bc04480: 85ee mv a1,s11 + 3bc04482: 00007517 auipc a0,0x7 + 3bc04486: d7e50513 addi a0,a0,-642 # 3bc0b200 + 3bc0448a: ecffb0ef jal ra,3bc00358 + 3bc0448e: 004d9513 slli a0,s11,0x4 + 3bc04492: 85ea mv a1,s10 + 3bc04494: 01956533 or a0,a0,s9 + 3bc04498: abafd0ef jal ra,3bc01752 + 3bc0449c: 443c lw a5,72(s0) + 3bc0449e: 471d li a4,7 + 3bc044a0: 06e79363 bne a5,a4,3bc04506 + 3bc044a4: 04042423 sw zero,72(s0) + 3bc044a8: 8522 mv a0,s0 + 3bc044aa: c6aff0ef jal ra,3bc03914 + 3bc044ae: a8a9 j 3bc04508 + 3bc044b0: 479d li a5,7 + 3bc044b2: 00f61863 bne a2,a5,3bc044c2 + 3bc044b6: 4601 li a2,0 + 3bc044b8: c68fe0ef jal ra,3bc02920 + 3bc044bc: 04042423 sw zero,72(s0) + 3bc044c0: bf59 j 3bc04456 + 3bc044c2: 4795 li a5,5 + 3bc044c4: f8f619e3 bne a2,a5,3bc04456 + 3bc044c8: 4601 li a2,0 + 3bc044ca: c56fe0ef jal ra,3bc02920 + 3bc044ce: 4799 li a5,6 + 3bc044d0: c43c sw a5,72(s0) + 3bc044d2: 8522 mv a0,s0 + 3bc044d4: 934ff0ef jal ra,3bc03608 + 3bc044d8: bfbd j 3bc04456 + 3bc044da: 00d89763 bne a7,a3,3bc044e8 + 3bc044de: 4601 li a2,0 + 3bc044e0: e42a sd a0,8(sp) + 3bc044e2: c3efe0ef jal ra,3bc02920 + 3bc044e6: 6522 ld a0,8(sp) + 3bc044e8: 9ca2 add s9,s9,s0 + 3bc044ea: 098cb583 ld a1,152(s9) + 3bc044ee: 00bd8663 beq s11,a1,3bc044fa + 3bc044f2: fc058593 addi a1,a1,-64 + 3bc044f6: c78ff0ef jal ra,3bc0396e + 3bc044fa: 2905 addiw s2,s2,1 + 3bc044fc: 0ff97913 andi s2,s2,255 + 3bc04500: 0019d993 srli s3,s3,0x1 + 3bc04504: b535 j 3bc04330 + 3bc04506: d3cd beqz a5,3bc044a8 + 3bc04508: 27544703 lbu a4,629(s0) + 3bc0450c: 4785 li a5,1 + 3bc0450e: fef716e3 bne a4,a5,3bc044fa + 3bc04512: 27444503 lbu a0,628(s0) + 3bc04516: 4585 li a1,1 + 3bc04518: df5fe0ef jal ra,3bc0330c + 3bc0451c: 0005071b sext.w a4,a0 + 3bc04520: 071e slli a4,a4,0x7 + 3bc04522: 9722 add a4,a4,s0 + 3bc04524: 00751793 slli a5,a0,0x7 + 3bc04528: 6f4c ld a1,152(a4) + 3bc0452a: 05078513 addi a0,a5,80 # c0050 <__BSS_SIZE__+0xba440> + 3bc0452e: 09878793 addi a5,a5,152 + 3bc04532: 97a2 add a5,a5,s0 + 3bc04534: 9522 add a0,a0,s0 + 3bc04536: 00f58a63 beq a1,a5,3bc0454a + 3bc0453a: 0c170783 lb a5,193(a4) + 3bc0453e: fc058593 addi a1,a1,-64 + 3bc04542: 0007d763 bgez a5,3bc04550 + 3bc04546: c28ff0ef jal ra,3bc0396e + 3bc0454a: 26040aa3 sb zero,629(s0) + 3bc0454e: b775 j 3bc044fa + 3bc04550: a1eff0ef jal ra,3bc0376e + 3bc04554: bfdd j 3bc0454a + 3bc04556: 0019f793 andi a5,s3,1 + 3bc0455a: c3a1 beqz a5,3bc0459a + 3bc0455c: 05890493 addi s1,s2,88 + 3bc04560: 0496 slli s1,s1,0x5 + 3bc04562: 04a1 addi s1,s1,8 + 3bc04564: 94da add s1,s1,s6 + 3bc04566: 8526 mv a0,s1 + 3bc04568: 9e4fd0ef jal ra,3bc0174c + 3bc0456c: 0005061b sext.w a2,a0 + 3bc04570: 8532 mv a0,a2 + 3bc04572: 85a6 mv a1,s1 + 3bc04574: e432 sd a2,8(sp) + 3bc04576: 9dcfd0ef jal ra,3bc01752 + 3bc0457a: 6622 ld a2,8(sp) + 3bc0457c: 06091063 bnez s2,3bc045dc + 3bc04580: 00867793 andi a5,a2,8 + 3bc04584: c38d beqz a5,3bc045a6 + 3bc04586: 8556 mv a0,s5 + 3bc04588: 4701 li a4,0 + 3bc0458a: 4681 li a3,0 + 3bc0458c: 4601 li a2,0 + 3bc0458e: 4581 li a1,0 + 3bc04590: b3efe0ef jal ra,3bc028ce + 3bc04594: 8522 mv a0,s0 + 3bc04596: fc8ff0ef jal ra,3bc03d5e + 3bc0459a: 2905 addiw s2,s2,1 + 3bc0459c: 0ff97913 andi s2,s2,255 + 3bc045a0: 0019d993 srli s3,s3,0x1 + 3bc045a4: b301 j 3bc042a4 + 3bc045a6: 00167793 andi a5,a2,1 + 3bc045aa: dbe5 beqz a5,3bc0459a + 3bc045ac: 443c lw a5,72(s0) + 3bc045ae: 4701 li a4,0 + 3bc045b0: 4681 li a3,0 + 3bc045b2: 01778b63 beq a5,s7,3bc045c8 + 3bc045b6: 4585 li a1,1 + 3bc045b8: 8552 mv a0,s4 + 3bc045ba: b14fe0ef jal ra,3bc028ce + 3bc045be: 4581 li a1,0 + 3bc045c0: 8522 mv a0,s0 + 3bc045c2: a56ff0ef jal ra,3bc03818 + 3bc045c6: bfd1 j 3bc0459a + 3bc045c8: 8552 mv a0,s4 + 3bc045ca: 4589 li a1,2 + 3bc045cc: b02fe0ef jal ra,3bc028ce + 3bc045d0: 8522 mv a0,s0 + 3bc045d2: 04042423 sw zero,72(s0) + 3bc045d6: b3eff0ef jal ra,3bc03914 + 3bc045da: b7c1 j 3bc0459a + 3bc045dc: 8a05 andi a2,a2,1 + 3bc045de: de55 beqz a2,3bc0459a + 3bc045e0: 85ca mv a1,s2 + 3bc045e2: bff9 j 3bc045c0 + +000000003bc045e4 : + 3bc045e4: 07158703 lb a4,113(a1) + 3bc045e8: 00075663 bgez a4,3bc045f4 + 3bc045ec: 4705 li a4,1 + 3bc045ee: c538 sw a4,72(a0) + 3bc045f0: ddaff06f j 3bc03bca + 3bc045f4: 4711 li a4,4 + 3bc045f6: c538 sw a4,72(a0) + 3bc045f8: daaff06f j 3bc03ba2 + +000000003bc045fc : + 3bc045fc: e581 bnez a1,3bc04604 + 3bc045fe: 57a9 li a5,-22 + 3bc04600: 853e mv a0,a5 + 3bc04602: 8082 ret + 3bc04604: 759c ld a5,40(a1) + 3bc04606: dfe5 beqz a5,3bc045fe + 3bc04608: 699c ld a5,16(a1) + 3bc0460a: dbf5 beqz a5,3bc045fe + 3bc0460c: 61bc ld a5,64(a1) + 3bc0460e: 7179 addi sp,sp,-48 + 3bc04610: e84a sd s2,16(sp) + 3bc04612: f406 sd ra,40(sp) + 3bc04614: f022 sd s0,32(sp) + 3bc04616: ec26 sd s1,24(sp) + 3bc04618: e44e sd s3,8(sp) + 3bc0461a: 04058913 addi s2,a1,64 + 3bc0461e: 06f91763 bne s2,a5,3bc0468c + 3bc04622: c52d beqz a0,3bc0468c + 3bc04624: 613c ld a5,64(a0) + 3bc04626: 84ae mv s1,a1 + 3bc04628: 842a mv s0,a0 + 3bc0462a: cbb9 beqz a5,3bc04680 + 3bc0462c: 7c08 ld a0,56(s0) + 3bc0462e: 07144683 lbu a3,113(s0) + 3bc04632: fc600793 li a5,-58 + 3bc04636: 7d18 ld a4,56(a0) + 3bc04638: cb39 beqz a4,3bc0468e + 3bc0463a: 5118 lw a4,32(a0) + 3bc0463c: fc600793 li a5,-58 + 3bc04640: c739 beqz a4,3bc0468e + 3bc04642: 4785 li a5,1 + 3bc04644: 1782 slli a5,a5,0x20 + 3bc04646: fdc78793 addi a5,a5,-36 + 3bc0464a: 26853703 ld a4,616(a0) + 3bc0464e: fc9c sd a5,56(s1) + 3bc04650: 643c ld a5,72(s0) + 3bc04652: 04840993 addi s3,s0,72 + 3bc04656: 04f99f63 bne s3,a5,3bc046b4 + 3bc0465a: 07044783 lbu a5,112(s0) + 3bc0465e: ebb9 bnez a5,3bc046b4 + 3bc04660: 00f6f793 andi a5,a3,15 + 3bc04664: ef8d bnez a5,3bc0469e + 3bc04666: 683c ld a5,80(s0) + 3bc04668: 05243823 sd s2,80(s0) + 3bc0466c: 0534b023 sd s3,64(s1) + 3bc04670: e4bc sd a5,72(s1) + 3bc04672: 0127b023 sd s2,0(a5) + 3bc04676: 85a2 mv a1,s0 + 3bc04678: f6dff0ef jal ra,3bc045e4 + 3bc0467c: 4781 li a5,0 + 3bc0467e: a801 j 3bc0468e + 3bc04680: 01853983 ld s3,24(a0) + 3bc04684: a4cfe0ef jal ra,3bc028d0 + 3bc04688: faa982e3 beq s3,a0,3bc0462c + 3bc0468c: 57a9 li a5,-22 + 3bc0468e: 70a2 ld ra,40(sp) + 3bc04690: 7402 ld s0,32(sp) + 3bc04692: 64e2 ld s1,24(sp) + 3bc04694: 6942 ld s2,16(sp) + 3bc04696: 69a2 ld s3,8(sp) + 3bc04698: 853e mv a0,a5 + 3bc0469a: 6145 addi sp,sp,48 + 3bc0469c: 8082 ret + 3bc0469e: fc76b78b extu a5,a3,63,7 + 3bc046a2: 01470513 addi a0,a4,20 + 3bc046a6: c385 beqz a5,3bc046c6 + 3bc046a8: 8a4fd0ef jal ra,3bc0174c + 3bc046ac: 85a6 mv a1,s1 + 3bc046ae: 8522 mv a0,s0 + 3bc046b0: abeff0ef jal ra,3bc0396e + 3bc046b4: 683c ld a5,80(s0) + 3bc046b6: 05243823 sd s2,80(s0) + 3bc046ba: 0534b023 sd s3,64(s1) + 3bc046be: e4bc sd a5,72(s1) + 3bc046c0: 0127b023 sd s2,0(a5) + 3bc046c4: bf65 j 3bc0467c + 3bc046c6: 886fd0ef jal ra,3bc0174c + 3bc046ca: 85a6 mv a1,s1 + 3bc046cc: 8522 mv a0,s0 + 3bc046ce: 8a0ff0ef jal ra,3bc0376e + 3bc046d2: b7cd j 3bc046b4 + +000000003bc046d4 : + 3bc046d4: 7179 addi sp,sp,-48 + 3bc046d6: f022 sd s0,32(sp) + 3bc046d8: ec26 sd s1,24(sp) + 3bc046da: f406 sd ra,40(sp) + 3bc046dc: e432 sd a2,8(sp) + 3bc046de: 0e0007b7 lui a5,0xe000 + 3bc046e2: 84ae mv s1,a1 + 3bc046e4: 638c ld a1,0(a5) + 3bc046e6: 842a mv s0,a0 + 3bc046e8: 00007517 auipc a0,0x7 + 3bc046ec: b3050513 addi a0,a0,-1232 # 3bc0b218 + 3bc046f0: 5055b78b extu a5,a1,20,5 + 3bc046f4: 85be mv a1,a5 + 3bc046f6: 00007717 auipc a4,0x7 + 3bc046fa: 30f71923 sh a5,786(a4) # 3bc0ba08 + 3bc046fe: c5bfb0ef jal ra,3bc00358 + 3bc04702: 8522 mv a0,s0 + 3bc04704: 7402 ld s0,32(sp) + 3bc04706: 6622 ld a2,8(sp) + 3bc04708: 70a2 ld ra,40(sp) + 3bc0470a: 85a6 mv a1,s1 + 3bc0470c: 64e2 ld s1,24(sp) + 3bc0470e: 6145 addi sp,sp,48 + 3bc04710: bd5fd06f j 3bc022e4 + +000000003bc04714 : + 3bc04714: 4781 li a5,0 + 3bc04716: 00007697 auipc a3,0x7 + 3bc0471a: b1a68693 addi a3,a3,-1254 # 3bc0b230 + 3bc0471e: 0007871b sext.w a4,a5 + 3bc04722: 00c74363 blt a4,a2,3bc04728 + 3bc04726: 8082 ret + 3bc04728: 80f5c80b lrbu a6,a1,a5,0 + 3bc0472c: 9c85370b extu a4,a0,39,8 + 3bc04730: 0085151b slliw a0,a0,0x8 + 3bc04734: 01074733 xor a4,a4,a6 + 3bc04738: a2e6c70b lrhu a4,a3,a4,1 + 3bc0473c: 0785 addi a5,a5,1 + 3bc0473e: 8d39 xor a0,a0,a4 + 3bc04740: 3c05350b extu a0,a0,15,0 + 3bc04744: bfe9 j 3bc0471e + +000000003bc04746 : + 3bc04746: 4d78 lw a4,92(a0) + 3bc04748: 11000793 li a5,272 + 3bc0474c: fff7069b addiw a3,a4,-1 + 3bc04750: 04d7e563 bltu a5,a3,3bc0479a + 3bc04754: 7510 ld a2,40(a0) + 3bc04756: 7c07368b extu a3,a4,31,0 + 3bc0475a: 01853803 ld a6,24(a0) + 3bc0475e: 8d91 sub a1,a1,a2 + 3bc04760: 02053e03 ld t3,32(a0) + 3bc04764: 04856883 lwu a7,72(a0) + 3bc04768: 87ba mv a5,a4 + 3bc0476a: 00d5f463 bgeu a1,a3,3bc04772 + 3bc0476e: 0005879b sext.w a5,a1 + 3bc04772: 416c lw a1,68(a0) + 3bc04774: 4134 lw a3,64(a0) + 3bc04776: e599 bnez a1,3bc04784 + 3bc04778: 414c lw a1,4(a0) + 3bc0477a: 40d5833b subw t1,a1,a3 + 3bc0477e: 0067e363 bltu a5,t1,3bc04784 + 3bc04782: c16c sw a1,68(a0) + 3bc04784: 9ebd addw a3,a3,a5 + 3bc04786: 9f1d subw a4,a4,a5 + 3bc04788: c134 sw a3,64(a0) + 3bc0478a: cd78 sw a4,92(a0) + 3bc0478c: 86be mv a3,a5 + 3bc0478e: 8732 mv a4,a2 + 3bc04790: e691 bnez a3,3bc0479c + 3bc04792: 7c07b78b extu a5,a5,31,0 + 3bc04796: 97b2 add a5,a5,a2 + 3bc04798: f51c sd a5,40(a0) + 3bc0479a: 8082 ret + 3bc0479c: 36fd addiw a3,a3,-1 + 3bc0479e: 411705b3 sub a1,a4,a7 + 3bc047a2: 8372 mv t1,t3 + 3bc047a4: 01176363 bltu a4,a7,3bc047aa + 3bc047a8: 4301 li t1,0 + 3bc047aa: 95c2 add a1,a1,a6 + 3bc047ac: 8065c58b lrbu a1,a1,t1,0 + 3bc047b0: 00e8558b srb a1,a6,a4,0 + 3bc047b4: 0705 addi a4,a4,1 + 3bc047b6: bfe9 j 3bc04790 + +000000003bc047b8 : + 3bc047b8: 7155 addi sp,sp,-208 + 3bc047ba: e1a2 sd s0,192(sp) + 3bc047bc: 6405 lui s0,0x1 + 3bc047be: e586 sd ra,200(sp) + 3bc047c0: fd26 sd s1,184(sp) + 3bc047c2: f94a sd s2,176(sp) + 3bc047c4: f54e sd s3,168(sp) + 3bc047c6: f152 sd s4,160(sp) + 3bc047c8: ed56 sd s5,152(sp) + 3bc047ca: e95a sd s6,144(sp) + 3bc047cc: e55e sd s7,136(sp) + 3bc047ce: e162 sd s8,128(sp) + 3bc047d0: fce6 sd s9,120(sp) + 3bc047d2: f8ea sd s10,112(sp) + 3bc047d4: f4ee sd s11,104(sp) + 3bc047d6: e82e sd a1,16(sp) + 3bc047d8: f832 sd a2,48(sp) + 3bc047da: 8004041b addiw s0,s0,-2048 + 3bc047de: 417c lw a5,68(a0) + 3bc047e0: 04052e03 lw t3,64(a0) + 3bc047e4: 02853803 ld a6,40(a0) + 3bc047e8: ec3e sd a5,24(sp) + 3bc047ea: eba1 bnez a5,3bc0483a + 3bc047ec: 415c lw a5,4(a0) + 3bc047ee: 6742 ld a4,16(sp) + 3bc047f0: 66c2 ld a3,16(sp) + 3bc047f2: 41c787bb subw a5,a5,t3 + 3bc047f6: 7c07b78b extu a5,a5,31,0 + 3bc047fa: 41070733 sub a4,a4,a6 + 3bc047fe: e436 sd a3,8(sp) + 3bc04800: 00e7f463 bgeu a5,a4,3bc04808 + 3bc04804: 97c2 add a5,a5,a6 + 3bc04806: e43e sd a5,8(sp) + 3bc04808: 020e1b63 bnez t3,3bc0483e + 3bc0480c: 5d58 lw a4,60(a0) + 3bc0480e: c00007b7 lui a5,0xc0000 + 3bc04812: bff78793 addi a5,a5,-1025 # ffffffffbffffbff <__BL2_END__+0xffffffff843ec3ef> + 3bc04816: 02e7f463 bgeu a5,a4,3bc0483e + 3bc0481a: 4505 li a0,1 + 3bc0481c: 60ae ld ra,200(sp) + 3bc0481e: 640e ld s0,192(sp) + 3bc04820: 74ea ld s1,184(sp) + 3bc04822: 794a ld s2,176(sp) + 3bc04824: 79aa ld s3,168(sp) + 3bc04826: 7a0a ld s4,160(sp) + 3bc04828: 6aea ld s5,152(sp) + 3bc0482a: 6b4a ld s6,144(sp) + 3bc0482c: 6baa ld s7,136(sp) + 3bc0482e: 6c0a ld s8,128(sp) + 3bc04830: 7ce6 ld s9,120(sp) + 3bc04832: 7d46 ld s10,112(sp) + 3bc04834: 7da6 ld s11,104(sp) + 3bc04836: 6169 addi sp,sp,208 + 3bc04838: 8082 ret + 3bc0483a: 67c2 ld a5,16(sp) + 3bc0483c: e43e sd a5,8(sp) + 3bc0483e: 497c lw a5,84(a0) + 3bc04840: 00154703 lbu a4,1(a0) + 3bc04844: 690c ld a1,16(a0) + 3bc04846: f03e sd a5,32(sp) + 3bc04848: 00054783 lbu a5,0(a0) + 3bc0484c: 00254303 lbu t1,2(a0) + 3bc04850: 74fd lui s1,0xfffff + 3bc04852: f43e sd a5,40(sp) + 3bc04854: 76a2 ld a3,40(sp) + 3bc04856: 10000793 li a5,256 + 3bc0485a: 00e7973b sllw a4,a5,a4 + 3bc0485e: 02053a83 ld s5,32(a0) + 3bc04862: 00d7d7bb srlw a5,a5,a3 + 3bc04866: 60048493 addi s1,s1,1536 # fffffffffffff600 <__BL2_END__+0xffffffffc43ebdf0> + 3bc0486a: 56fd li a3,-1 + 3bc0486c: 40f707bb subw a5,a4,a5 + 3bc04870: 006696bb sllw a3,a3,t1 + 3bc04874: 94ae add s1,s1,a1 + 3bc04876: fc3e sd a5,56(sp) + 3bc04878: fff6c693 not a3,a3 + 3bc0487c: e4a6 sd s1,72(sp) + 3bc0487e: 05852883 lw a7,88(a0) + 3bc04882: a0058493 addi s1,a1,-1536 + 3bc04886: 04852f83 lw t6,72(a0) + 3bc0488a: 04c52f03 lw t5,76(a0) + 3bc0488e: 05052983 lw s3,80(a0) + 3bc04892: 01853a03 ld s4,24(a0) + 3bc04896: 7918 ld a4,48(a0) + 3bc04898: 5d10 lw a2,56(a0) + 3bc0489a: 5d5c lw a5,60(a0) + 3bc0489c: 2681 sext.w a3,a3 + 3bc0489e: e8a6 sd s1,80(sp) + 3bc048a0: fffa8493 addi s1,s5,-1 + 3bc048a4: e0b6 sd a3,64(sp) + 3bc048a6: 4301 li t1,0 + 3bc048a8: 010006b7 lui a3,0x1000 + 3bc048ac: eca6 sd s1,88(sp) + 3bc048ae: 6486 ld s1,64(sp) + 3bc048b0: 01c4feb3 and t4,s1,t3 + 3bc048b4: 004e9e9b slliw t4,t4,0x4 + 3bc048b8: 011e893b addw s2,t4,a7 + 3bc048bc: 02091493 slli s1,s2,0x20 + 3bc048c0: 01f4d913 srli s2,s1,0x1f + 3bc048c4: e0090b93 addi s7,s2,-512 + 3bc048c8: a175cb0b lrhu s6,a1,s7,0 + 3bc048cc: 000b039b sext.w t2,s6 + 3bc048d0: 00d67a63 bgeu a2,a3,3bc048e4 + 3bc048d4: 9817428b lbuia t0,(a4),1,0 + 3bc048d8: 0087979b slliw a5,a5,0x8 + 3bc048dc: 0086161b slliw a2,a2,0x8 + 3bc048e0: 00f2e7b3 or a5,t0,a5 + 3bc048e4: 00b6529b srliw t0,a2,0xb + 3bc048e8: 027284bb mulw s1,t0,t2 + 3bc048ec: 82a6 mv t0,s1 + 3bc048ee: 7497f663 bgeu a5,s1,3bc0503a + 3bc048f2: 6ee2 ld t4,24(sp) + 3bc048f4: 407403bb subw t2,s0,t2 + 3bc048f8: 0053d39b srliw t2,t2,0x5 + 3bc048fc: 016383bb addw t2,t2,s6 + 3bc04900: 2175d38b srh t2,a1,s7,0 + 3bc04904: 01ceeeb3 or t4,t4,t3 + 3bc04908: 28058613 addi a2,a1,640 + 3bc0490c: 020e8b63 beqz t4,3bc04942 + 3bc04910: 6966 ld s2,88(sp) + 3bc04912: fff80393 addi t2,a6,-1 + 3bc04916: 008e1e9b slliw t4,t3,0x8 + 3bc0491a: 4109138b mveqz t2,s2,a6 + 3bc0491e: 807a438b lrbu t2,s4,t2,0 + 3bc04922: 01d38ebb addw t4,t2,t4 + 3bc04926: 73e2 ld t2,56(sp) + 3bc04928: 01d3feb3 and t4,t2,t4 + 3bc0492c: 73a2 ld t2,40(sp) + 3bc0492e: 007e9ebb sllw t4,t4,t2 + 3bc04932: 438d li t2,3 + 3bc04934: 027e8ebb mulw t4,t4,t2 + 3bc04938: 020e9393 slli t2,t4,0x20 + 3bc0493c: 01f3de93 srli t4,t2,0x1f + 3bc04940: 9676 add a2,a2,t4 + 3bc04942: 4e99 li t4,6 + 3bc04944: 2e05 addiw t3,t3,1 + 3bc04946: 311eef63 bltu t4,a7,3bc04c64 + 3bc0494a: 438d li t2,3 + 3bc0494c: 8ec6 mv t4,a7 + 3bc0494e: 0113f363 bgeu t2,a7,3bc04954 + 3bc04952: 4e8d li t4,3 + 3bc04954: 00265383 lhu t2,2(a2) + 3bc04958: 41d888bb subw a7,a7,t4 + 3bc0495c: 00038e9b sext.w t4,t2 + 3bc04960: 00d4fa63 bgeu s1,a3,3bc04974 + 3bc04964: 0082949b slliw s1,t0,0x8 + 3bc04968: 9817428b lbuia t0,(a4),1,0 + 3bc0496c: 0087979b slliw a5,a5,0x8 + 3bc04970: 00f2e7b3 or a5,t0,a5 + 3bc04974: 00b4d29b srliw t0,s1,0xb + 3bc04978: 03d2893b mulw s2,t0,t4 + 3bc0497c: 2327f563 bgeu a5,s2,3bc04ba6 + 3bc04980: 41d40ebb subw t4,s0,t4 + 3bc04984: 005ede9b srliw t4,t4,0x5 + 3bc04988: 007e83bb addw t2,t4,t2 + 3bc0498c: 3c03b38b extu t2,t2,15,0 + 3bc04990: 4e89 li t4,2 + 3bc04992: 00761123 sh t2,2(a2) + 3bc04996: b3d6448b lurhu s1,a2,t4,1 + 3bc0499a: 03d61b8b addsl s7,a2,t4,1 + 3bc0499e: 0004829b sext.w t0,s1 + 3bc049a2: 00d97a63 bgeu s2,a3,3bc049b6 + 3bc049a6: 9817438b lbuia t2,(a4),1,0 + 3bc049aa: 0087979b slliw a5,a5,0x8 + 3bc049ae: 0089191b slliw s2,s2,0x8 + 3bc049b2: 00f3e7b3 or a5,t2,a5 + 3bc049b6: 00b95b1b srliw s6,s2,0xb + 3bc049ba: 025b03bb mulw t2,s6,t0 + 3bc049be: 001e9c1b slliw s8,t4,0x1 + 3bc049c2: 0e86 slli t4,t4,0x1 + 3bc049c4: 1e77fd63 bgeu a5,t2,3bc04bbe + 3bc049c8: 405402bb subw t0,s0,t0 + 3bc049cc: 0052d29b srliw t0,t0,0x5 + 3bc049d0: 009284bb addw s1,t0,s1 + 3bc049d4: 3c04b48b extu s1,s1,15,0 + 3bc049d8: 009b9023 sh s1,0(s7) + 3bc049dc: b3d6490b lurhu s2,a2,t4,1 + 3bc049e0: 020e9493 slli s1,t4,0x20 + 3bc049e4: 01f4dc13 srli s8,s1,0x1f + 3bc049e8: 9c32 add s8,s8,a2 + 3bc049ea: 0009029b sext.w t0,s2 + 3bc049ee: 00d3f963 bgeu t2,a3,3bc04a00 + 3bc049f2: 9817448b lbuia s1,(a4),1,0 + 3bc049f6: 0087979b slliw a5,a5,0x8 + 3bc049fa: 0083939b slliw t2,t2,0x8 + 3bc049fe: 8fc5 or a5,a5,s1 + 3bc04a00: 00b3db9b srliw s7,t2,0xb + 3bc04a04: 025b84bb mulw s1,s7,t0 + 3bc04a08: 001e9b1b slliw s6,t4,0x1 + 3bc04a0c: 1c97f663 bgeu a5,s1,3bc04bd8 + 3bc04a10: 405402bb subw t0,s0,t0 + 3bc04a14: 0052d29b srliw t0,t0,0x5 + 3bc04a18: 0122893b addw s2,t0,s2 + 3bc04a1c: 3c09390b extu s2,s2,15,0 + 3bc04a20: 012c1023 sh s2,0(s8) + 3bc04a24: b366428b lurhu t0,a2,s6,1 + 3bc04a28: 020b1e93 slli t4,s6,0x20 + 3bc04a2c: 01fedc13 srli s8,t4,0x1f + 3bc04a30: 9c32 add s8,s8,a2 + 3bc04a32: 00028e9b sext.w t4,t0 + 3bc04a36: 00d4fa63 bgeu s1,a3,3bc04a4a + 3bc04a3a: 9817438b lbuia t2,(a4),1,0 + 3bc04a3e: 0087979b slliw a5,a5,0x8 + 3bc04a42: 0084949b slliw s1,s1,0x8 + 3bc04a46: 00f3e7b3 or a5,t2,a5 + 3bc04a4a: 00b4db9b srliw s7,s1,0xb + 3bc04a4e: 03db83bb mulw t2,s7,t4 + 3bc04a52: 001b191b slliw s2,s6,0x1 + 3bc04a56: 1877fc63 bgeu a5,t2,3bc04bee + 3bc04a5a: 41d40ebb subw t4,s0,t4 + 3bc04a5e: 005ede9b srliw t4,t4,0x5 + 3bc04a62: 005e82bb addw t0,t4,t0 + 3bc04a66: 3c02b28b extu t0,t0,15,0 + 3bc04a6a: 02091493 slli s1,s2,0x20 + 3bc04a6e: 005c1023 sh t0,0(s8) + 3bc04a72: 01f4db93 srli s7,s1,0x1f + 3bc04a76: b326448b lurhu s1,a2,s2,1 + 3bc04a7a: 9bb2 add s7,s7,a2 + 3bc04a7c: 00048e9b sext.w t4,s1 + 3bc04a80: 00d3fa63 bgeu t2,a3,3bc04a94 + 3bc04a84: 9817428b lbuia t0,(a4),1,0 + 3bc04a88: 0087979b slliw a5,a5,0x8 + 3bc04a8c: 0083939b slliw t2,t2,0x8 + 3bc04a90: 00f2e7b3 or a5,t0,a5 + 3bc04a94: 00b3db1b srliw s6,t2,0xb + 3bc04a98: 03db02bb mulw t0,s6,t4 + 3bc04a9c: 0019191b slliw s2,s2,0x1 + 3bc04aa0: 1657f363 bgeu a5,t0,3bc04c06 + 3bc04aa4: 41d40ebb subw t4,s0,t4 + 3bc04aa8: 005ede9b srliw t4,t4,0x5 + 3bc04aac: 009e84bb addw s1,t4,s1 + 3bc04ab0: 3c04b48b extu s1,s1,15,0 + 3bc04ab4: 009b9023 sh s1,0(s7) + 3bc04ab8: 02091493 slli s1,s2,0x20 + 3bc04abc: 01f4db93 srli s7,s1,0x1f + 3bc04ac0: b326448b lurhu s1,a2,s2,1 + 3bc04ac4: 9bb2 add s7,s7,a2 + 3bc04ac6: 00048e9b sext.w t4,s1 + 3bc04aca: 00d2fa63 bgeu t0,a3,3bc04ade + 3bc04ace: 9817438b lbuia t2,(a4),1,0 + 3bc04ad2: 0087979b slliw a5,a5,0x8 + 3bc04ad6: 0082929b slliw t0,t0,0x8 + 3bc04ada: 00f3e7b3 or a5,t2,a5 + 3bc04ade: 00b2db1b srliw s6,t0,0xb + 3bc04ae2: 03db03bb mulw t2,s6,t4 + 3bc04ae6: 0019191b slliw s2,s2,0x1 + 3bc04aea: 1277fa63 bgeu a5,t2,3bc04c1e + 3bc04aee: 41d40ebb subw t4,s0,t4 + 3bc04af2: 005ede9b srliw t4,t4,0x5 + 3bc04af6: 009e84bb addw s1,t4,s1 + 3bc04afa: 3c04b48b extu s1,s1,15,0 + 3bc04afe: 009b9023 sh s1,0(s7) + 3bc04b02: 02091493 slli s1,s2,0x20 + 3bc04b06: 01f4db93 srli s7,s1,0x1f + 3bc04b0a: b326448b lurhu s1,a2,s2,1 + 3bc04b0e: 9bb2 add s7,s7,a2 + 3bc04b10: 00048e9b sext.w t4,s1 + 3bc04b14: 00d3fa63 bgeu t2,a3,3bc04b28 + 3bc04b18: 9817428b lbuia t0,(a4),1,0 + 3bc04b1c: 0087979b slliw a5,a5,0x8 + 3bc04b20: 0083939b slliw t2,t2,0x8 + 3bc04b24: 00f2e7b3 or a5,t0,a5 + 3bc04b28: 00b3db1b srliw s6,t2,0xb + 3bc04b2c: 03db02bb mulw t0,s6,t4 + 3bc04b30: 0019191b slliw s2,s2,0x1 + 3bc04b34: 1057f163 bgeu a5,t0,3bc04c36 + 3bc04b38: 41d40ebb subw t4,s0,t4 + 3bc04b3c: 005ede9b srliw t4,t4,0x5 + 3bc04b40: 009e84bb addw s1,t4,s1 + 3bc04b44: 3c04b48b extu s1,s1,15,0 + 3bc04b48: 009b9023 sh s1,0(s7) + 3bc04b4c: b3264b8b lurhu s7,a2,s2,1 + 3bc04b50: 02091493 slli s1,s2,0x20 + 3bc04b54: 01f4db13 srli s6,s1,0x1f + 3bc04b58: 9b32 add s6,s6,a2 + 3bc04b5a: 000b8e9b sext.w t4,s7 + 3bc04b5e: 00d2f963 bgeu t0,a3,3bc04b70 + 3bc04b62: 9817460b lbuia a2,(a4),1,0 + 3bc04b66: 0087979b slliw a5,a5,0x8 + 3bc04b6a: 0082929b slliw t0,t0,0x8 + 3bc04b6e: 8fd1 or a5,a5,a2 + 3bc04b70: 00b2d39b srliw t2,t0,0xb + 3bc04b74: 03d3863b mulw a2,t2,t4 + 3bc04b78: 0019149b slliw s1,s2,0x1 + 3bc04b7c: 0cc7f963 bgeu a5,a2,3bc04c4e + 3bc04b80: 41d40ebb subw t4,s0,t4 + 3bc04b84: 005ede9b srliw t4,t4,0x5 + 3bc04b88: 017e8ebb addw t4,t4,s7 + 3bc04b8c: 01db1023 sh t4,0(s6) + 3bc04b90: 010a548b srb s1,s4,a6,0 + 3bc04b94: 0805 addi a6,a6,1 + 3bc04b96: 64a2 ld s1,8(sp) + 3bc04b98: 649870e3 bgeu a6,s1,3bc059d8 + 3bc04b9c: 74c2 ld s1,48(sp) + 3bc04b9e: d09768e3 bltu a4,s1,3bc048ae + 3bc04ba2: 6370006f j 3bc059d8 + 3bc04ba6: 005ede9b srliw t4,t4,0x5 + 3bc04baa: 41d383bb subw t2,t2,t4 + 3bc04bae: 412787bb subw a5,a5,s2 + 3bc04bb2: 3c03b38b extu t2,t2,15,0 + 3bc04bb6: 4124893b subw s2,s1,s2 + 3bc04bba: 4e8d li t4,3 + 3bc04bbc: bbd9 j 3bc04992 + 3bc04bbe: 0052d29b srliw t0,t0,0x5 + 3bc04bc2: 405484bb subw s1,s1,t0 + 3bc04bc6: 407787bb subw a5,a5,t2 + 3bc04bca: 3c04b48b extu s1,s1,15,0 + 3bc04bce: 001c0e9b addiw t4,s8,1 + 3bc04bd2: 407903bb subw t2,s2,t2 + 3bc04bd6: b509 j 3bc049d8 + 3bc04bd8: 0052d29b srliw t0,t0,0x5 + 3bc04bdc: 4059093b subw s2,s2,t0 + 3bc04be0: 9f85 subw a5,a5,s1 + 3bc04be2: 3c09390b extu s2,s2,15,0 + 3bc04be6: 2b05 addiw s6,s6,1 + 3bc04be8: 409384bb subw s1,t2,s1 + 3bc04bec: bd15 j 3bc04a20 + 3bc04bee: 005ede9b srliw t4,t4,0x5 + 3bc04bf2: 41d282bb subw t0,t0,t4 + 3bc04bf6: 407787bb subw a5,a5,t2 + 3bc04bfa: 3c02b28b extu t0,t0,15,0 + 3bc04bfe: 2905 addiw s2,s2,1 + 3bc04c00: 407483bb subw t2,s1,t2 + 3bc04c04: b59d j 3bc04a6a + 3bc04c06: 005ede9b srliw t4,t4,0x5 + 3bc04c0a: 41d484bb subw s1,s1,t4 + 3bc04c0e: 405787bb subw a5,a5,t0 + 3bc04c12: 3c04b48b extu s1,s1,15,0 + 3bc04c16: 2905 addiw s2,s2,1 + 3bc04c18: 405382bb subw t0,t2,t0 + 3bc04c1c: bd61 j 3bc04ab4 + 3bc04c1e: 005ede9b srliw t4,t4,0x5 + 3bc04c22: 41d484bb subw s1,s1,t4 + 3bc04c26: 407787bb subw a5,a5,t2 + 3bc04c2a: 3c04b48b extu s1,s1,15,0 + 3bc04c2e: 2905 addiw s2,s2,1 + 3bc04c30: 407283bb subw t2,t0,t2 + 3bc04c34: b5e9 j 3bc04afe + 3bc04c36: 005ede9b srliw t4,t4,0x5 + 3bc04c3a: 41d484bb subw s1,s1,t4 + 3bc04c3e: 405787bb subw a5,a5,t0 + 3bc04c42: 3c04b48b extu s1,s1,15,0 + 3bc04c46: 2905 addiw s2,s2,1 + 3bc04c48: 405382bb subw t0,t2,t0 + 3bc04c4c: bdf5 j 3bc04b48 + 3bc04c4e: 005ede9b srliw t4,t4,0x5 + 3bc04c52: 41db8ebb subw t4,s7,t4 + 3bc04c56: 9f91 subw a5,a5,a2 + 3bc04c58: 01db1023 sh t4,0(s6) + 3bc04c5c: 2485 addiw s1,s1,1 + 3bc04c5e: 40c2863b subw a2,t0,a2 + 3bc04c62: b73d j 3bc04b90 + 3bc04c64: 7c0fb90b extu s2,t6,31,0 + 3bc04c68: 41280eb3 sub t4,a6,s2 + 3bc04c6c: 83d6 mv t2,s5 + 3bc04c6e: 01286363 bltu a6,s2,3bc04c74 + 3bc04c72: 4381 li t2,0 + 3bc04c74: 9ed2 add t4,t4,s4 + 3bc04c76: 4925 li s2,9 + 3bc04c78: 807ece8b lrbu t4,t4,t2,0 + 3bc04c7c: 438d li t2,3 + 3bc04c7e: 01197363 bgeu s2,a7,3bc04c84 + 3bc04c82: 4399 li t2,6 + 3bc04c84: 001e9b1b slliw s6,t4,0x1 + 3bc04c88: 100b7b13 andi s6,s6,256 + 3bc04c8c: 407888bb subw a7,a7,t2 + 3bc04c90: 101b039b addiw t2,s6,257 + 3bc04c94: b2764c0b lurhu s8,a2,t2,1 + 3bc04c98: 101b0b93 addi s7,s6,257 + 3bc04c9c: 03761b8b addsl s7,a2,s7,1 + 3bc04ca0: 000c039b sext.w t2,s8 + 3bc04ca4: 00d4fa63 bgeu s1,a3,3bc04cb8 + 3bc04ca8: 0082949b slliw s1,t0,0x8 + 3bc04cac: 9817428b lbuia t0,(a4),1,0 + 3bc04cb0: 0087979b slliw a5,a5,0x8 + 3bc04cb4: 00f2e7b3 or a5,t0,a5 + 3bc04cb8: 00b4d29b srliw t0,s1,0xb + 3bc04cbc: 0272893b mulw s2,t0,t2 + 3bc04cc0: 2b27ff63 bgeu a5,s2,3bc04f7e + 3bc04cc4: 407403bb subw t2,s0,t2 + 3bc04cc8: 0053d39b srliw t2,t2,0x5 + 3bc04ccc: 01838c3b addw s8,t2,s8 + 3bc04cd0: 3c0c3c0b extu s8,s8,15,0 + 3bc04cd4: 100b4b13 xori s6,s6,256 + 3bc04cd8: 4289 li t0,2 + 3bc04cda: 002e939b slliw t2,t4,0x2 + 3bc04cde: 007b73b3 and t2,s6,t2 + 3bc04ce2: 005b04bb addw s1,s6,t0 + 3bc04ce6: 018b9023 sh s8,0(s7) + 3bc04cea: 00038c1b sext.w s8,t2 + 3bc04cee: 007483bb addw t2,s1,t2 + 3bc04cf2: b2764b8b lurhu s7,a2,t2,1 + 3bc04cf6: 02039493 slli s1,t2,0x20 + 3bc04cfa: 01f4dd13 srli s10,s1,0x1f + 3bc04cfe: 9d32 add s10,s10,a2 + 3bc04d00: 000b839b sext.w t2,s7 + 3bc04d04: 00d97963 bgeu s2,a3,3bc04d16 + 3bc04d08: 9817448b lbuia s1,(a4),1,0 + 3bc04d0c: 0087979b slliw a5,a5,0x8 + 3bc04d10: 0089191b slliw s2,s2,0x8 + 3bc04d14: 8fc5 or a5,a5,s1 + 3bc04d16: 00b95c9b srliw s9,s2,0xb + 3bc04d1a: 027c84bb mulw s1,s9,t2 + 3bc04d1e: 00129d9b slliw s11,t0,0x1 + 3bc04d22: 0286 slli t0,t0,0x1 + 3bc04d24: 2697f963 bgeu a5,s1,3bc04f96 + 3bc04d28: 407403bb subw t2,s0,t2 + 3bc04d2c: 0053d39b srliw t2,t2,0x5 + 3bc04d30: 01738bbb addw s7,t2,s7 + 3bc04d34: 3c0bbb8b extu s7,s7,15,0 + 3bc04d38: 018b4c33 xor s8,s6,s8 + 3bc04d3c: 003e939b slliw t2,t4,0x3 + 3bc04d40: 007c73b3 and t2,s8,t2 + 3bc04d44: 005c093b addw s2,s8,t0 + 3bc04d48: 017d1023 sh s7,0(s10) + 3bc04d4c: 00038b1b sext.w s6,t2 + 3bc04d50: 007903bb addw t2,s2,t2 + 3bc04d54: b2764c8b lurhu s9,a2,t2,1 + 3bc04d58: 02039913 slli s2,t2,0x20 + 3bc04d5c: 01f95d93 srli s11,s2,0x1f + 3bc04d60: 9db2 add s11,s11,a2 + 3bc04d62: 000c839b sext.w t2,s9 + 3bc04d66: 00d4fa63 bgeu s1,a3,3bc04d7a + 3bc04d6a: 9817490b lbuia s2,(a4),1,0 + 3bc04d6e: 0087979b slliw a5,a5,0x8 + 3bc04d72: 0084949b slliw s1,s1,0x8 + 3bc04d76: 00f967b3 or a5,s2,a5 + 3bc04d7a: 00b4dd1b srliw s10,s1,0xb + 3bc04d7e: 027d093b mulw s2,s10,t2 + 3bc04d82: 00129b9b slliw s7,t0,0x1 + 3bc04d86: 2327f463 bgeu a5,s2,3bc04fae + 3bc04d8a: 407403bb subw t2,s0,t2 + 3bc04d8e: 0053d39b srliw t2,t2,0x5 + 3bc04d92: 01938cbb addw s9,t2,s9 + 3bc04d96: 3c0cbc8b extu s9,s9,15,0 + 3bc04d9a: 016c4b33 xor s6,s8,s6 + 3bc04d9e: 004e929b slliw t0,t4,0x4 + 3bc04da2: 005b72b3 and t0,s6,t0 + 3bc04da6: 017b03bb addw t2,s6,s7 + 3bc04daa: 019d9023 sh s9,0(s11) + 3bc04dae: 00028c1b sext.w s8,t0 + 3bc04db2: 005382bb addw t0,t2,t0 + 3bc04db6: b256438b lurhu t2,a2,t0,1 + 3bc04dba: 02029493 slli s1,t0,0x20 + 3bc04dbe: 01f4dd13 srli s10,s1,0x1f + 3bc04dc2: 9d32 add s10,s10,a2 + 3bc04dc4: 0003829b sext.w t0,t2 + 3bc04dc8: 00d97963 bgeu s2,a3,3bc04dda + 3bc04dcc: 9817448b lbuia s1,(a4),1,0 + 3bc04dd0: 0087979b slliw a5,a5,0x8 + 3bc04dd4: 0089191b slliw s2,s2,0x8 + 3bc04dd8: 8fc5 or a5,a5,s1 + 3bc04dda: 00b95c9b srliw s9,s2,0xb + 3bc04dde: 025c84bb mulw s1,s9,t0 + 3bc04de2: 001b9b9b slliw s7,s7,0x1 + 3bc04de6: 1e97f063 bgeu a5,s1,3bc04fc6 + 3bc04dea: 405402bb subw t0,s0,t0 + 3bc04dee: 0052d29b srliw t0,t0,0x5 + 3bc04df2: 007283bb addw t2,t0,t2 + 3bc04df6: 3c03b38b extu t2,t2,15,0 + 3bc04dfa: 018b4c33 xor s8,s6,s8 + 3bc04dfe: 005e929b slliw t0,t4,0x5 + 3bc04e02: 007d1023 sh t2,0(s10) + 3bc04e06: 005c72b3 and t0,s8,t0 + 3bc04e0a: 017c03bb addw t2,s8,s7 + 3bc04e0e: 00028b1b sext.w s6,t0 + 3bc04e12: 005382bb addw t0,t2,t0 + 3bc04e16: b256490b lurhu s2,a2,t0,1 + 3bc04e1a: 02029393 slli t2,t0,0x20 + 3bc04e1e: 01f3dd13 srli s10,t2,0x1f + 3bc04e22: 9d32 add s10,s10,a2 + 3bc04e24: 0009029b sext.w t0,s2 + 3bc04e28: 00d4fa63 bgeu s1,a3,3bc04e3c + 3bc04e2c: 9817438b lbuia t2,(a4),1,0 + 3bc04e30: 0087979b slliw a5,a5,0x8 + 3bc04e34: 0084949b slliw s1,s1,0x8 + 3bc04e38: 00f3e7b3 or a5,t2,a5 + 3bc04e3c: 00b4dc9b srliw s9,s1,0xb + 3bc04e40: 025c83bb mulw t2,s9,t0 + 3bc04e44: 001b9b9b slliw s7,s7,0x1 + 3bc04e48: 1877fa63 bgeu a5,t2,3bc04fdc + 3bc04e4c: 405402bb subw t0,s0,t0 + 3bc04e50: 0052d29b srliw t0,t0,0x5 + 3bc04e54: 0122893b addw s2,t0,s2 + 3bc04e58: 3c09390b extu s2,s2,15,0 + 3bc04e5c: 016c4b33 xor s6,s8,s6 + 3bc04e60: 006e929b slliw t0,t4,0x6 + 3bc04e64: 005b72b3 and t0,s6,t0 + 3bc04e68: 017b04bb addw s1,s6,s7 + 3bc04e6c: 00028c1b sext.w s8,t0 + 3bc04e70: 005482bb addw t0,s1,t0 + 3bc04e74: 02029493 slli s1,t0,0x20 + 3bc04e78: 012d1023 sh s2,0(s10) + 3bc04e7c: 01f4dd13 srli s10,s1,0x1f + 3bc04e80: b256448b lurhu s1,a2,t0,1 + 3bc04e84: 9d32 add s10,s10,a2 + 3bc04e86: 0004829b sext.w t0,s1 + 3bc04e8a: 00d3fa63 bgeu t2,a3,3bc04e9e + 3bc04e8e: 9817490b lbuia s2,(a4),1,0 + 3bc04e92: 0087979b slliw a5,a5,0x8 + 3bc04e96: 0083939b slliw t2,t2,0x8 + 3bc04e9a: 00f967b3 or a5,s2,a5 + 3bc04e9e: 00b3dc9b srliw s9,t2,0xb + 3bc04ea2: 025c893b mulw s2,s9,t0 + 3bc04ea6: 001b9b9b slliw s7,s7,0x1 + 3bc04eaa: 1527f563 bgeu a5,s2,3bc04ff4 + 3bc04eae: 405402bb subw t0,s0,t0 + 3bc04eb2: 0052d29b srliw t0,t0,0x5 + 3bc04eb6: 009284bb addw s1,t0,s1 + 3bc04eba: 3c04b48b extu s1,s1,15,0 + 3bc04ebe: 018b4c33 xor s8,s6,s8 + 3bc04ec2: 007e929b slliw t0,t4,0x7 + 3bc04ec6: 005c72b3 and t0,s8,t0 + 3bc04eca: 017c03bb addw t2,s8,s7 + 3bc04ece: 009d1023 sh s1,0(s10) + 3bc04ed2: 0002849b sext.w s1,t0 + 3bc04ed6: 005382bb addw t0,t2,t0 + 3bc04eda: b2564b0b lurhu s6,a2,t0,1 + 3bc04ede: 02029393 slli t2,t0,0x20 + 3bc04ee2: 01f3dd93 srli s11,t2,0x1f + 3bc04ee6: 9db2 add s11,s11,a2 + 3bc04ee8: 000b029b sext.w t0,s6 + 3bc04eec: 00d97a63 bgeu s2,a3,3bc04f00 + 3bc04ef0: 9817438b lbuia t2,(a4),1,0 + 3bc04ef4: 0087979b slliw a5,a5,0x8 + 3bc04ef8: 0089191b slliw s2,s2,0x8 + 3bc04efc: 00f3e7b3 or a5,t2,a5 + 3bc04f00: 00b95d1b srliw s10,s2,0xb + 3bc04f04: 025d03bb mulw t2,s10,t0 + 3bc04f08: 001b9c9b slliw s9,s7,0x1 + 3bc04f0c: 1077f063 bgeu a5,t2,3bc0500c + 3bc04f10: 405402bb subw t0,s0,t0 + 3bc04f14: 0052d29b srliw t0,t0,0x5 + 3bc04f18: 01628b3b addw s6,t0,s6 + 3bc04f1c: 3c0b3b0b extu s6,s6,15,0 + 3bc04f20: 009c44b3 xor s1,s8,s1 + 3bc04f24: 008e9e9b slliw t4,t4,0x8 + 3bc04f28: 01d4feb3 and t4,s1,t4 + 3bc04f2c: 019484bb addw s1,s1,s9 + 3bc04f30: 01d48ebb addw t4,s1,t4 + 3bc04f34: 016d9023 sh s6,0(s11) + 3bc04f38: b3d64b0b lurhu s6,a2,t4,1 + 3bc04f3c: 020e9493 slli s1,t4,0x20 + 3bc04f40: 01f4d913 srli s2,s1,0x1f + 3bc04f44: 9932 add s2,s2,a2 + 3bc04f46: 000b0e9b sext.w t4,s6 + 3bc04f4a: 00d3f963 bgeu t2,a3,3bc04f5c + 3bc04f4e: 9817460b lbuia a2,(a4),1,0 + 3bc04f52: 0087979b slliw a5,a5,0x8 + 3bc04f56: 0083939b slliw t2,t2,0x8 + 3bc04f5a: 8fd1 or a5,a5,a2 + 3bc04f5c: 00b3d29b srliw t0,t2,0xb + 3bc04f60: 03d2863b mulw a2,t0,t4 + 3bc04f64: 001c949b slliw s1,s9,0x1 + 3bc04f68: 0ac7fe63 bgeu a5,a2,3bc05024 + 3bc04f6c: 41d40ebb subw t4,s0,t4 + 3bc04f70: 005ede9b srliw t4,t4,0x5 + 3bc04f74: 016e8ebb addw t4,t4,s6 + 3bc04f78: 01d91023 sh t4,0(s2) + 3bc04f7c: b911 j 3bc04b90 + 3bc04f7e: 0053d39b srliw t2,t2,0x5 + 3bc04f82: 407c0c3b subw s8,s8,t2 + 3bc04f86: 412787bb subw a5,a5,s2 + 3bc04f8a: 3c0c3c0b extu s8,s8,15,0 + 3bc04f8e: 4124893b subw s2,s1,s2 + 3bc04f92: 428d li t0,3 + 3bc04f94: b399 j 3bc04cda + 3bc04f96: 0053d39b srliw t2,t2,0x5 + 3bc04f9a: 407b8bbb subw s7,s7,t2 + 3bc04f9e: 9f85 subw a5,a5,s1 + 3bc04fa0: 3c0bbb8b extu s7,s7,15,0 + 3bc04fa4: 001d829b addiw t0,s11,1 + 3bc04fa8: 409904bb subw s1,s2,s1 + 3bc04fac: bb41 j 3bc04d3c + 3bc04fae: 0053d39b srliw t2,t2,0x5 + 3bc04fb2: 407c8cbb subw s9,s9,t2 + 3bc04fb6: 412787bb subw a5,a5,s2 + 3bc04fba: 3c0cbc8b extu s9,s9,15,0 + 3bc04fbe: 2b85 addiw s7,s7,1 + 3bc04fc0: 4124893b subw s2,s1,s2 + 3bc04fc4: bbe9 j 3bc04d9e + 3bc04fc6: 0052d29b srliw t0,t0,0x5 + 3bc04fca: 405383bb subw t2,t2,t0 + 3bc04fce: 9f85 subw a5,a5,s1 + 3bc04fd0: 3c03b38b extu t2,t2,15,0 + 3bc04fd4: 2b85 addiw s7,s7,1 + 3bc04fd6: 409904bb subw s1,s2,s1 + 3bc04fda: b515 j 3bc04dfe + 3bc04fdc: 0052d29b srliw t0,t0,0x5 + 3bc04fe0: 4059093b subw s2,s2,t0 + 3bc04fe4: 407787bb subw a5,a5,t2 + 3bc04fe8: 3c09390b extu s2,s2,15,0 + 3bc04fec: 2b85 addiw s7,s7,1 + 3bc04fee: 407483bb subw t2,s1,t2 + 3bc04ff2: b5bd j 3bc04e60 + 3bc04ff4: 0052d29b srliw t0,t0,0x5 + 3bc04ff8: 405484bb subw s1,s1,t0 + 3bc04ffc: 412787bb subw a5,a5,s2 + 3bc05000: 3c04b48b extu s1,s1,15,0 + 3bc05004: 2b85 addiw s7,s7,1 + 3bc05006: 4123893b subw s2,t2,s2 + 3bc0500a: bd65 j 3bc04ec2 + 3bc0500c: 0052d29b srliw t0,t0,0x5 + 3bc05010: 405b0b3b subw s6,s6,t0 + 3bc05014: 407787bb subw a5,a5,t2 + 3bc05018: 3c0b3b0b extu s6,s6,15,0 + 3bc0501c: 2c85 addiw s9,s9,1 + 3bc0501e: 407903bb subw t2,s2,t2 + 3bc05022: b709 j 3bc04f24 + 3bc05024: 005ede9b srliw t4,t4,0x5 + 3bc05028: 41db0ebb subw t4,s6,t4 + 3bc0502c: 9f91 subw a5,a5,a2 + 3bc0502e: 01d91023 sh t4,0(s2) + 3bc05032: 2485 addiw s1,s1,1 + 3bc05034: 40c3863b subw a2,t2,a2 + 3bc05038: bea1 j 3bc04b90 + 3bc0503a: 0053d39b srliw t2,t2,0x5 + 3bc0503e: 407b03bb subw t2,s6,t2 + 3bc05042: 2175d38b srh t2,a1,s7,0 + 3bc05046: 7c08bb8b extu s7,a7,31,0 + 3bc0504a: 0bc1 addi s7,s7,16 + 3bc0504c: a375cc0b lrhu s8,a1,s7,1 + 3bc05050: 409604bb subw s1,a2,s1 + 3bc05054: 405787bb subw a5,a5,t0 + 3bc05058: 001b9b13 slli s6,s7,0x1 + 3bc0505c: 000c039b sext.w t2,s8 + 3bc05060: 00d4fa63 bgeu s1,a3,3bc05074 + 3bc05064: 0087929b slliw t0,a5,0x8 + 3bc05068: 9817478b lbuia a5,(a4),1,0 + 3bc0506c: 0084949b slliw s1,s1,0x8 + 3bc05070: 0057e7b3 or a5,a5,t0 + 3bc05074: 00b4d29b srliw t0,s1,0xb + 3bc05078: 0272863b mulw a2,t0,t2 + 3bc0507c: 36c7ff63 bgeu a5,a2,3bc053fa + 3bc05080: 407403bb subw t2,s0,t2 + 3bc05084: 0053d39b srliw t2,t2,0x5 + 3bc05088: 62c6 ld t0,80(sp) + 3bc0508a: 018383bb addw t2,t2,s8 + 3bc0508e: 2375d38b srh t2,a1,s7,1 + 3bc05092: 28b1 addiw a7,a7,12 + 3bc05094: 8b7e mv s6,t6 + 3bc05096: 0002d383 lhu t2,0(t0) + 3bc0509a: 00038f9b sext.w t6,t2 + 3bc0509e: 00d67a63 bgeu a2,a3,3bc050b2 + 3bc050a2: 9817430b lbuia t1,(a4),1,0 + 3bc050a6: 0087979b slliw a5,a5,0x8 + 3bc050aa: 0086161b slliw a2,a2,0x8 + 3bc050ae: 00f367b3 or a5,t1,a5 + 3bc050b2: 00b6531b srliw t1,a2,0xb + 3bc050b6: 03f304bb mulw s1,t1,t6 + 3bc050ba: 8326 mv t1,s1 + 3bc050bc: 5297f663 bgeu a5,s1,3bc055e8 + 3bc050c0: 41f40fbb subw t6,s0,t6 + 3bc050c4: 005fdf9b srliw t6,t6,0x5 + 3bc050c8: 7c0ebe8b extu t4,t4,31,0 + 3bc050cc: 007f8fbb addw t6,t6,t2 + 3bc050d0: 01f29023 sh t6,0(t0) + 3bc050d4: 03d2928b addsl t0,t0,t4,1 + 3bc050d8: 0022de83 lhu t4,2(t0) + 3bc050dc: 000e861b sext.w a2,t4 + 3bc050e0: 00d4fa63 bgeu s1,a3,3bc050f4 + 3bc050e4: 9817430b lbuia t1,(a4),1,0 + 3bc050e8: 0087979b slliw a5,a5,0x8 + 3bc050ec: 0084949b slliw s1,s1,0x8 + 3bc050f0: 00f367b3 or a5,t1,a5 + 3bc050f4: 00b4d31b srliw t1,s1,0xb + 3bc050f8: 02c30fbb mulw t6,t1,a2 + 3bc050fc: 4bf7f263 bgeu a5,t6,3bc055a0 + 3bc05100: 40c4063b subw a2,s0,a2 + 3bc05104: 0056561b srliw a2,a2,0x5 + 3bc05108: 01d60ebb addw t4,a2,t4 + 3bc0510c: 3c0ebe8b extu t4,t4,15,0 + 3bc05110: 4309 li t1,2 + 3bc05112: 01d29123 sh t4,2(t0) + 3bc05116: b262c38b lurhu t2,t0,t1,1 + 3bc0511a: 7c03390b extu s2,t1,31,0 + 3bc0511e: 0003861b sext.w a2,t2 + 3bc05122: 00dffa63 bgeu t6,a3,3bc05136 + 3bc05126: 98174e8b lbuia t4,(a4),1,0 + 3bc0512a: 0087979b slliw a5,a5,0x8 + 3bc0512e: 008f9f9b slliw t6,t6,0x8 + 3bc05132: 00fee7b3 or a5,t4,a5 + 3bc05136: 00bfd49b srliw s1,t6,0xb + 3bc0513a: 02c48ebb mulw t4,s1,a2 + 3bc0513e: 00131b9b slliw s7,t1,0x1 + 3bc05142: 0306 slli t1,t1,0x1 + 3bc05144: 47d7fa63 bgeu a5,t4,3bc055b8 + 3bc05148: 40c4063b subw a2,s0,a2 + 3bc0514c: 0056561b srliw a2,a2,0x5 + 3bc05150: 007603bb addw t2,a2,t2 + 3bc05154: 3c03b38b extu t2,t2,15,0 + 3bc05158: 2322d38b srh t2,t0,s2,1 + 3bc0515c: b262c38b lurhu t2,t0,t1,1 + 3bc05160: 7c033b8b extu s7,t1,31,0 + 3bc05164: 00038f9b sext.w t6,t2 + 3bc05168: 00def963 bgeu t4,a3,3bc0517a + 3bc0516c: 9817460b lbuia a2,(a4),1,0 + 3bc05170: 0087979b slliw a5,a5,0x8 + 3bc05174: 008e9e9b slliw t4,t4,0x8 + 3bc05178: 8fd1 or a5,a5,a2 + 3bc0517a: 00bed91b srliw s2,t4,0xb + 3bc0517e: 03f9063b mulw a2,s2,t6 + 3bc05182: 0013131b slliw t1,t1,0x1 + 3bc05186: 44c7f663 bgeu a5,a2,3bc055d2 + 3bc0518a: 41f40fbb subw t6,s0,t6 + 3bc0518e: 005fdf9b srliw t6,t6,0x5 + 3bc05192: 007f83bb addw t2,t6,t2 + 3bc05196: 3c03b38b extu t2,t2,15,0 + 3bc0519a: 2372d38b srh t2,t0,s7,1 + 3bc0519e: 3361 addiw t1,t1,-8 + 3bc051a0: 44ad li s1,11 + 3bc051a2: 1114f5e3 bgeu s1,a7,3bc05aac + 3bc051a6: 448d li s1,3 + 3bc051a8: 8f9a mv t6,t1 + 3bc051aa: 0064f363 bgeu s1,t1,3bc051b0 + 3bc051ae: 4f8d li t6,3 + 3bc051b0: 006f9f9b slliw t6,t6,0x6 + 3bc051b4: 040f8f9b addiw t6,t6,64 + 3bc051b8: 7c0fbf8b extu t6,t6,31,0 + 3bc051bc: 03f59f8b addsl t6,a1,t6,1 + 3bc051c0: 002fd383 lhu t2,2(t6) + 3bc051c4: 00038e9b sext.w t4,t2 + 3bc051c8: 00d67a63 bgeu a2,a3,3bc051dc + 3bc051cc: 9817428b lbuia t0,(a4),1,0 + 3bc051d0: 0087979b slliw a5,a5,0x8 + 3bc051d4: 0086161b slliw a2,a2,0x8 + 3bc051d8: 00f2e7b3 or a5,t0,a5 + 3bc051dc: 00b6549b srliw s1,a2,0xb + 3bc051e0: 03d482bb mulw t0,s1,t4 + 3bc051e4: 5e57f763 bgeu a5,t0,3bc057d2 + 3bc051e8: 41d40ebb subw t4,s0,t4 + 3bc051ec: 005ede9b srliw t4,t4,0x5 + 3bc051f0: 007e83bb addw t2,t4,t2 + 3bc051f4: 3c03b38b extu t2,t2,15,0 + 3bc051f8: 4609 li a2,2 + 3bc051fa: 007f9123 sh t2,2(t6) + 3bc051fe: b2cfc48b lurhu s1,t6,a2,1 + 3bc05202: 7c063b8b extu s7,a2,31,0 + 3bc05206: 00048e9b sext.w t4,s1 + 3bc0520a: 00d2fa63 bgeu t0,a3,3bc0521e + 3bc0520e: 9817438b lbuia t2,(a4),1,0 + 3bc05212: 0087979b slliw a5,a5,0x8 + 3bc05216: 0082929b slliw t0,t0,0x8 + 3bc0521a: 00f3e7b3 or a5,t2,a5 + 3bc0521e: 00b2d91b srliw s2,t0,0xb + 3bc05222: 03d903bb mulw t2,s2,t4 + 3bc05226: 00161c1b slliw s8,a2,0x1 + 3bc0522a: 0606 slli a2,a2,0x1 + 3bc0522c: 5a77ff63 bgeu a5,t2,3bc057ea + 3bc05230: 41d40ebb subw t4,s0,t4 + 3bc05234: 005ede9b srliw t4,t4,0x5 + 3bc05238: 009e84bb addw s1,t4,s1 + 3bc0523c: 3c04b48b extu s1,s1,15,0 + 3bc05240: 237fd48b srh s1,t6,s7,1 + 3bc05244: b2cfc48b lurhu s1,t6,a2,1 + 3bc05248: 7c063c0b extu s8,a2,31,0 + 3bc0524c: 00048e9b sext.w t4,s1 + 3bc05250: 00d3fa63 bgeu t2,a3,3bc05264 + 3bc05254: 9817428b lbuia t0,(a4),1,0 + 3bc05258: 0087979b slliw a5,a5,0x8 + 3bc0525c: 0083939b slliw t2,t2,0x8 + 3bc05260: 00f2e7b3 or a5,t0,a5 + 3bc05264: 00b3db9b srliw s7,t2,0xb + 3bc05268: 03db82bb mulw t0,s7,t4 + 3bc0526c: 0016191b slliw s2,a2,0x1 + 3bc05270: 5857fa63 bgeu a5,t0,3bc05804 + 3bc05274: 41d40ebb subw t4,s0,t4 + 3bc05278: 005ede9b srliw t4,t4,0x5 + 3bc0527c: 009e84bb addw s1,t4,s1 + 3bc05280: 3c04b48b extu s1,s1,15,0 + 3bc05284: 238fd48b srh s1,t6,s8,1 + 3bc05288: b32fc38b lurhu t2,t6,s2,1 + 3bc0528c: 7c093c0b extu s8,s2,31,0 + 3bc05290: 0003861b sext.w a2,t2 + 3bc05294: 00d2fa63 bgeu t0,a3,3bc052a8 + 3bc05298: 98174e8b lbuia t4,(a4),1,0 + 3bc0529c: 0087979b slliw a5,a5,0x8 + 3bc052a0: 0082929b slliw t0,t0,0x8 + 3bc052a4: 00fee7b3 or a5,t4,a5 + 3bc052a8: 00b2db9b srliw s7,t0,0xb + 3bc052ac: 02cb8ebb mulw t4,s7,a2 + 3bc052b0: 0019149b slliw s1,s2,0x1 + 3bc052b4: 57d7f463 bgeu a5,t4,3bc0581c + 3bc052b8: 40c4063b subw a2,s0,a2 + 3bc052bc: 0056561b srliw a2,a2,0x5 + 3bc052c0: 007603bb addw t2,a2,t2 + 3bc052c4: 3c03b38b extu t2,t2,15,0 + 3bc052c8: 238fd38b srh t2,t6,s8,1 + 3bc052cc: b29fc28b lurhu t0,t6,s1,1 + 3bc052d0: 7c04bc0b extu s8,s1,31,0 + 3bc052d4: 0002861b sext.w a2,t0 + 3bc052d8: 00defa63 bgeu t4,a3,3bc052ec + 3bc052dc: 9817438b lbuia t2,(a4),1,0 + 3bc052e0: 0087979b slliw a5,a5,0x8 + 3bc052e4: 008e9e9b slliw t4,t4,0x8 + 3bc052e8: 00f3e7b3 or a5,t2,a5 + 3bc052ec: 00bedb9b srliw s7,t4,0xb + 3bc052f0: 02cb83bb mulw t2,s7,a2 + 3bc052f4: 0014991b slliw s2,s1,0x1 + 3bc052f8: 5277fe63 bgeu a5,t2,3bc05834 + 3bc052fc: 40c4063b subw a2,s0,a2 + 3bc05300: 0056561b srliw a2,a2,0x5 + 3bc05304: 005602bb addw t0,a2,t0 + 3bc05308: 3c02b28b extu t0,t0,15,0 + 3bc0530c: 238fd28b srh t0,t6,s8,1 + 3bc05310: b32fc48b lurhu s1,t6,s2,1 + 3bc05314: 7c093c0b extu s8,s2,31,0 + 3bc05318: 0004829b sext.w t0,s1 + 3bc0531c: 00d3f963 bgeu t2,a3,3bc0532e + 3bc05320: 9817460b lbuia a2,(a4),1,0 + 3bc05324: 0087979b slliw a5,a5,0x8 + 3bc05328: 0083939b slliw t2,t2,0x8 + 3bc0532c: 8fd1 or a5,a5,a2 + 3bc0532e: 00b3db9b srliw s7,t2,0xb + 3bc05332: 025b863b mulw a2,s7,t0 + 3bc05336: 00191e9b slliw t4,s2,0x1 + 3bc0533a: 50c7f963 bgeu a5,a2,3bc0584c + 3bc0533e: 405402bb subw t0,s0,t0 + 3bc05342: 0052d29b srliw t0,t0,0x5 + 3bc05346: 009284bb addw s1,t0,s1 + 3bc0534a: 3c04b48b extu s1,s1,15,0 + 3bc0534e: fc0e8e9b addiw t4,t4,-64 + 3bc05352: 238fd48b srh s1,t6,s8,1 + 3bc05356: 000e839b sext.w t2,t4 + 3bc0535a: 448d li s1,3 + 3bc0535c: 0874f063 bgeu s1,t2,3bc053dc + 3bc05360: 001eff93 andi t6,t4,1 + 3bc05364: 44b5 li s1,13 + 3bc05366: 001ed29b srliw t0,t4,0x1 + 3bc0536a: 002fef93 ori t6,t6,2 + 3bc0536e: 5074e963 bltu s1,t2,3bc05880 + 3bc05372: 32fd addiw t0,t0,-1 + 3bc05374: 005f9fbb sllw t6,t6,t0 + 3bc05378: 2f85 addiw t6,t6,1 + 3bc0537a: 4c05 li s8,1 + 3bc0537c: 020f9493 slli s1,t6,0x20 + 3bc05380: 01f4db93 srli s7,s1,0x1f + 3bc05384: 74fd lui s1,0xfffff + 3bc05386: 30048493 addi s1,s1,768 # fffffffffffff300 <__BL2_END__+0xffffffffc43ebaf0> + 3bc0538a: 9ba6 add s7,s7,s1 + 3bc0538c: a175c48b lrhu s1,a1,s7,0 + 3bc05390: 0004839b sext.w t2,s1 + 3bc05394: 00d67a63 bgeu a2,a3,3bc053a8 + 3bc05398: 98174e8b lbuia t4,(a4),1,0 + 3bc0539c: 0087979b slliw a5,a5,0x8 + 3bc053a0: 0086161b slliw a2,a2,0x8 + 3bc053a4: 00fee7b3 or a5,t4,a5 + 3bc053a8: 00b6591b srliw s2,a2,0xb + 3bc053ac: 02790d3b mulw s10,s2,t2 + 3bc053b0: 001c1e9b slliw t4,s8,0x1 + 3bc053b4: 4ba7f963 bgeu a5,s10,3bc05866 + 3bc053b8: 407403bb subw t2,s0,t2 + 3bc053bc: 0053d39b srliw t2,t2,0x5 + 3bc053c0: 009384bb addw s1,t2,s1 + 3bc053c4: 3c04b48b extu s1,s1,15,0 + 3bc053c8: 018f8fbb addw t6,t6,s8 + 3bc053cc: 866a mv a2,s10 + 3bc053ce: 2175d48b srh s1,a1,s7,0 + 3bc053d2: 32fd addiw t0,t0,-1 + 3bc053d4: 48029763 bnez t0,3bc05862 + 3bc053d8: 41df83bb subw t2,t6,t4 + 3bc053dc: 44c9 li s1,18 + 3bc053de: 00138f9b addiw t6,t2,1 + 3bc053e2: 6d14f363 bgeu s1,a7,3bc05aa8 + 3bc053e6: 48a9 li a7,10 + 3bc053e8: 6ee2 ld t4,24(sp) + 3bc053ea: 41de1e8b mveqz t4,t3,t4 + 3bc053ee: 73d3e063 bltu t2,t4,3bc05b0e + 3bc053f2: 03053423 sd a6,40(a0) + 3bc053f6: c24ff06f j 3bc0481a + 3bc053fa: 0053d39b srliw t2,t2,0x5 + 3bc053fe: 407c03bb subw t2,s8,t2 + 3bc05402: 2375d38b srh t2,a1,s7,1 + 3bc05406: 018b0c13 addi s8,s6,24 + 3bc0540a: a185cb8b lrhu s7,a1,s8,0 + 3bc0540e: 40c48cbb subw s9,s1,a2 + 3bc05412: 9f91 subw a5,a5,a2 + 3bc05414: 000b839b sext.w t2,s7 + 3bc05418: 00dcfa63 bgeu s9,a3,3bc0542c + 3bc0541c: 0087929b slliw t0,a5,0x8 + 3bc05420: 9817478b lbuia a5,(a4),1,0 + 3bc05424: 008c9c9b slliw s9,s9,0x8 + 3bc05428: 0057e7b3 or a5,a5,t0 + 3bc0542c: 00bcd61b srliw a2,s9,0xb + 3bc05430: 027602bb mulw t0,a2,t2 + 3bc05434: 8616 mv a2,t0 + 3bc05436: 0a57f463 bgeu a5,t0,3bc054de + 3bc0543a: 407403bb subw t2,s0,t2 + 3bc0543e: 0053d39b srliw t2,t2,0x5 + 3bc05442: 74fd lui s1,0xfffff + 3bc05444: 017383bb addw t2,t2,s7 + 3bc05448: 40048493 addi s1,s1,1024 # fffffffffffff400 <__BL2_END__+0xffffffffc43ebbf0> + 3bc0544c: 2185d38b srh t2,a1,s8,0 + 3bc05450: 9926 add s2,s2,s1 + 3bc05452: a125c48b lrhu s1,a1,s2,0 + 3bc05456: 0004839b sext.w t2,s1 + 3bc0545a: 00d2f963 bgeu t0,a3,3bc0546c + 3bc0545e: 9817460b lbuia a2,(a4),1,0 + 3bc05462: 0087979b slliw a5,a5,0x8 + 3bc05466: 0082929b slliw t0,t0,0x8 + 3bc0546a: 8fd1 or a5,a5,a2 + 3bc0546c: 00b2db1b srliw s6,t0,0xb + 3bc05470: 027b063b mulw a2,s6,t2 + 3bc05474: 8b32 mv s6,a2 + 3bc05476: 02c7ff63 bgeu a5,a2,3bc054b4 + 3bc0547a: 407403bb subw t2,s0,t2 + 3bc0547e: 0053d39b srliw t2,t2,0x5 + 3bc05482: 009383bb addw t2,t2,s1 + 3bc05486: 2125d38b srh t2,a1,s2,0 + 3bc0548a: 7c0fb38b extu t2,t6,31,0 + 3bc0548e: 40780eb3 sub t4,a6,t2 + 3bc05492: 82d6 mv t0,s5 + 3bc05494: 00786363 bltu a6,t2,3bc0549a + 3bc05498: 4281 li t0,0 + 3bc0549a: 9ed2 add t4,t4,s4 + 3bc0549c: 805ece8b lrbu t4,t4,t0,0 + 3bc054a0: 2e05 addiw t3,t3,1 + 3bc054a2: 010a5e8b srb t4,s4,a6,0 + 3bc054a6: 4e99 li t4,6 + 3bc054a8: 0805 addi a6,a6,1 + 3bc054aa: 691ef963 bgeu t4,a7,3bc05b3c + 3bc054ae: 48ad li a7,11 + 3bc054b0: ee6ff06f j 3bc04b96 + 3bc054b4: 0053d39b srliw t2,t2,0x5 + 3bc054b8: 837a mv t1,t5 + 3bc054ba: 407483bb subw t2,s1,t2 + 3bc054be: 8f7e mv t5,t6 + 3bc054c0: 40c2863b subw a2,t0,a2 + 3bc054c4: 416787bb subw a5,a5,s6 + 3bc054c8: 2125d38b srh t2,a1,s2,0 + 3bc054cc: 8f9a mv t6,t1 + 3bc054ce: 4319 li t1,6 + 3bc054d0: 0d137663 bgeu t1,a7,3bc0559c + 3bc054d4: 48ad li a7,11 + 3bc054d6: 8b7a mv s6,t5 + 3bc054d8: 62a6 ld t0,72(sp) + 3bc054da: 8f7e mv t5,t6 + 3bc054dc: be6d j 3bc05096 + 3bc054de: 0053d39b srliw t2,t2,0x5 + 3bc054e2: 407b83bb subw t2,s7,t2 + 3bc054e6: 2185d38b srh t2,a1,s8,0 + 3bc054ea: 030b0493 addi s1,s6,48 + 3bc054ee: a095c38b lrhu t2,a1,s1,0 + 3bc054f2: 405c82bb subw t0,s9,t0 + 3bc054f6: 9f91 subw a5,a5,a2 + 3bc054f8: 0003831b sext.w t1,t2 + 3bc054fc: 00d2f963 bgeu t0,a3,3bc0550e + 3bc05500: 0087961b slliw a2,a5,0x8 + 3bc05504: 9817478b lbuia a5,(a4),1,0 + 3bc05508: 0082929b slliw t0,t0,0x8 + 3bc0550c: 8fd1 or a5,a5,a2 + 3bc0550e: 00b2d91b srliw s2,t0,0xb + 3bc05512: 0269063b mulw a2,s2,t1 + 3bc05516: 00c7fb63 bgeu a5,a2,3bc0552c + 3bc0551a: 4064033b subw t1,s0,t1 + 3bc0551e: 0053531b srliw t1,t1,0x5 + 3bc05522: 0073033b addw t1,t1,t2 + 3bc05526: 2095d30b srh t1,a1,s1,0 + 3bc0552a: b755 j 3bc054ce + 3bc0552c: 0053531b srliw t1,t1,0x5 + 3bc05530: 4063833b subw t1,t2,t1 + 3bc05534: 2095d30b srh t1,a1,s1,0 + 3bc05538: 048b0b13 addi s6,s6,72 + 3bc0553c: a165c38b lrhu t2,a1,s6,0 + 3bc05540: 40c28bbb subw s7,t0,a2 + 3bc05544: 9f91 subw a5,a5,a2 + 3bc05546: 0003831b sext.w t1,t2 + 3bc0554a: 00dbfa63 bgeu s7,a3,3bc0555e + 3bc0554e: 0087991b slliw s2,a5,0x8 + 3bc05552: 9817478b lbuia a5,(a4),1,0 + 3bc05556: 008b9b9b slliw s7,s7,0x8 + 3bc0555a: 0127e7b3 or a5,a5,s2 + 3bc0555e: 00bbd29b srliw t0,s7,0xb + 3bc05562: 0262863b mulw a2,t0,t1 + 3bc05566: 00c7fe63 bgeu a5,a2,3bc05582 + 3bc0556a: 4064033b subw t1,s0,t1 + 3bc0556e: 0053531b srliw t1,t1,0x5 + 3bc05572: 0073033b addw t1,t1,t2 + 3bc05576: 2165d30b srh t1,a1,s6,0 + 3bc0557a: 837a mv t1,t5 + 3bc0557c: 8f4e mv t5,s3 + 3bc0557e: 899a mv s3,t1 + 3bc05580: b7b9 j 3bc054ce + 3bc05582: 0053531b srliw t1,t1,0x5 + 3bc05586: 4063833b subw t1,t2,t1 + 3bc0558a: 9f91 subw a5,a5,a2 + 3bc0558c: 2165d30b srh t1,a1,s6,0 + 3bc05590: 40cb863b subw a2,s7,a2 + 3bc05594: 837a mv t1,t5 + 3bc05596: 7f02 ld t5,32(sp) + 3bc05598: f04e sd s3,32(sp) + 3bc0559a: b7d5 j 3bc0557e + 3bc0559c: 48a1 li a7,8 + 3bc0559e: bf25 j 3bc054d6 + 3bc055a0: 0056561b srliw a2,a2,0x5 + 3bc055a4: 40ce8ebb subw t4,t4,a2 + 3bc055a8: 41f787bb subw a5,a5,t6 + 3bc055ac: 3c0ebe8b extu t4,t4,15,0 + 3bc055b0: 41f48fbb subw t6,s1,t6 + 3bc055b4: 430d li t1,3 + 3bc055b6: beb1 j 3bc05112 + 3bc055b8: 0056561b srliw a2,a2,0x5 + 3bc055bc: 40c383bb subw t2,t2,a2 + 3bc055c0: 41d787bb subw a5,a5,t4 + 3bc055c4: 3c03b38b extu t2,t2,15,0 + 3bc055c8: 001b831b addiw t1,s7,1 + 3bc055cc: 41df8ebb subw t4,t6,t4 + 3bc055d0: b661 j 3bc05158 + 3bc055d2: 005fdf9b srliw t6,t6,0x5 + 3bc055d6: 41f383bb subw t2,t2,t6 + 3bc055da: 9f91 subw a5,a5,a2 + 3bc055dc: 3c03b38b extu t2,t2,15,0 + 3bc055e0: 2305 addiw t1,t1,1 + 3bc055e2: 40ce863b subw a2,t4,a2 + 3bc055e6: be55 j 3bc0519a + 3bc055e8: 005fdf9b srliw t6,t6,0x5 + 3bc055ec: 41f38fbb subw t6,t2,t6 + 3bc055f0: 0102d383 lhu t2,16(t0) + 3bc055f4: 01f29023 sh t6,0(t0) + 3bc055f8: 9e05 subw a2,a2,s1 + 3bc055fa: 406787bb subw a5,a5,t1 + 3bc055fe: 00038f9b sext.w t6,t2 + 3bc05602: 00d67a63 bgeu a2,a3,3bc05616 + 3bc05606: 0087931b slliw t1,a5,0x8 + 3bc0560a: 9817478b lbuia a5,(a4),1,0 + 3bc0560e: 0086161b slliw a2,a2,0x8 + 3bc05612: 0067e7b3 or a5,a5,t1 + 3bc05616: 00b6531b srliw t1,a2,0xb + 3bc0561a: 03f304bb mulw s1,t1,t6 + 3bc0561e: 1297f563 bgeu a5,s1,3bc05748 + 3bc05622: 41f40fbb subw t6,s0,t6 + 3bc05626: 005fdf9b srliw t6,t6,0x5 + 3bc0562a: 7c0ebe8b extu t4,t4,31,0 + 3bc0562e: 007f8fbb addw t6,t6,t2 + 3bc05632: 0ea1 addi t4,t4,8 + 3bc05634: 01f29823 sh t6,16(t0) + 3bc05638: 03d2928b addsl t0,t0,t4,1 + 3bc0563c: 0022df83 lhu t6,2(t0) + 3bc05640: 000f861b sext.w a2,t6 + 3bc05644: 00d4fa63 bgeu s1,a3,3bc05658 + 3bc05648: 9817430b lbuia t1,(a4),1,0 + 3bc0564c: 0087979b slliw a5,a5,0x8 + 3bc05650: 0084949b slliw s1,s1,0x8 + 3bc05654: 00f367b3 or a5,t1,a5 + 3bc05658: 00b4d31b srliw t1,s1,0xb + 3bc0565c: 02c30ebb mulw t4,t1,a2 + 3bc05660: 0bd7f063 bgeu a5,t4,3bc05700 + 3bc05664: 40c4063b subw a2,s0,a2 + 3bc05668: 0056561b srliw a2,a2,0x5 + 3bc0566c: 01f60fbb addw t6,a2,t6 + 3bc05670: 3c0fbf8b extu t6,t6,15,0 + 3bc05674: 4309 li t1,2 + 3bc05676: 01f29123 sh t6,2(t0) + 3bc0567a: b262c38b lurhu t2,t0,t1,1 + 3bc0567e: 7c03390b extu s2,t1,31,0 + 3bc05682: 0003861b sext.w a2,t2 + 3bc05686: 00defa63 bgeu t4,a3,3bc0569a + 3bc0568a: 98174f8b lbuia t6,(a4),1,0 + 3bc0568e: 0087979b slliw a5,a5,0x8 + 3bc05692: 008e9e9b slliw t4,t4,0x8 + 3bc05696: 00ffe7b3 or a5,t6,a5 + 3bc0569a: 00bed49b srliw s1,t4,0xb + 3bc0569e: 02c48fbb mulw t6,s1,a2 + 3bc056a2: 00131b9b slliw s7,t1,0x1 + 3bc056a6: 0306 slli t1,t1,0x1 + 3bc056a8: 07f7f863 bgeu a5,t6,3bc05718 + 3bc056ac: 40c4063b subw a2,s0,a2 + 3bc056b0: 0056561b srliw a2,a2,0x5 + 3bc056b4: 007603bb addw t2,a2,t2 + 3bc056b8: 3c03b38b extu t2,t2,15,0 + 3bc056bc: 2322d38b srh t2,t0,s2,1 + 3bc056c0: b262c48b lurhu s1,t0,t1,1 + 3bc056c4: 7c03390b extu s2,t1,31,0 + 3bc056c8: 00048e9b sext.w t4,s1 + 3bc056cc: 00dff963 bgeu t6,a3,3bc056de + 3bc056d0: 9817460b lbuia a2,(a4),1,0 + 3bc056d4: 0087979b slliw a5,a5,0x8 + 3bc056d8: 008f9f9b slliw t6,t6,0x8 + 3bc056dc: 8fd1 or a5,a5,a2 + 3bc056de: 00bfd39b srliw t2,t6,0xb + 3bc056e2: 03d3863b mulw a2,t2,t4 + 3bc056e6: 0013131b slliw t1,t1,0x1 + 3bc056ea: 04c7f463 bgeu a5,a2,3bc05732 + 3bc056ee: 41d40ebb subw t4,s0,t4 + 3bc056f2: 005ede9b srliw t4,t4,0x5 + 3bc056f6: 009e8ebb addw t4,t4,s1 + 3bc056fa: 2322de8b srh t4,t0,s2,1 + 3bc056fe: b44d j 3bc051a0 + 3bc05700: 0056561b srliw a2,a2,0x5 + 3bc05704: 40cf8fbb subw t6,t6,a2 + 3bc05708: 41d787bb subw a5,a5,t4 + 3bc0570c: 3c0fbf8b extu t6,t6,15,0 + 3bc05710: 41d48ebb subw t4,s1,t4 + 3bc05714: 430d li t1,3 + 3bc05716: b785 j 3bc05676 + 3bc05718: 0056561b srliw a2,a2,0x5 + 3bc0571c: 40c383bb subw t2,t2,a2 + 3bc05720: 41f787bb subw a5,a5,t6 + 3bc05724: 3c03b38b extu t2,t2,15,0 + 3bc05728: 001b831b addiw t1,s7,1 + 3bc0572c: 41fe8fbb subw t6,t4,t6 + 3bc05730: b771 j 3bc056bc + 3bc05732: 005ede9b srliw t4,t4,0x5 + 3bc05736: 41d48ebb subw t4,s1,t4 + 3bc0573a: 9f91 subw a5,a5,a2 + 3bc0573c: 2322de8b srh t4,t0,s2,1 + 3bc05740: 2305 addiw t1,t1,1 + 3bc05742: 40cf863b subw a2,t6,a2 + 3bc05746: bca9 j 3bc051a0 + 3bc05748: 005fdf9b srliw t6,t6,0x5 + 3bc0574c: 41f38fbb subw t6,t2,t6 + 3bc05750: 9e05 subw a2,a2,s1 + 3bc05752: 9f85 subw a5,a5,s1 + 3bc05754: 01f29823 sh t6,16(t0) + 3bc05758: 4305 li t1,1 + 3bc0575a: 0ff00b93 li s7,255 + 3bc0575e: 02031493 slli s1,t1,0x20 + 3bc05762: 01f4de93 srli t4,s1,0x1f + 3bc05766: 200e8e93 addi t4,t4,512 + 3bc0576a: a1d2cf8b lrhu t6,t0,t4,0 + 3bc0576e: 01d28c33 add s8,t0,t4 + 3bc05772: 000f8e9b sext.w t4,t6 + 3bc05776: 00d67a63 bgeu a2,a3,3bc0578a + 3bc0577a: 9817438b lbuia t2,(a4),1,0 + 3bc0577e: 0087979b slliw a5,a5,0x8 + 3bc05782: 0086161b slliw a2,a2,0x8 + 3bc05786: 00f3e7b3 or a5,t2,a5 + 3bc0578a: 00b6539b srliw t2,a2,0xb + 3bc0578e: 03d3893b mulw s2,t2,t4 + 3bc05792: 0013131b slliw t1,t1,0x1 + 3bc05796: 0327f263 bgeu a5,s2,3bc057ba + 3bc0579a: 41d40ebb subw t4,s0,t4 + 3bc0579e: 005ede9b srliw t4,t4,0x5 + 3bc057a2: 01fe8fbb addw t6,t4,t6 + 3bc057a6: 3c0fbf8b extu t6,t6,15,0 + 3bc057aa: 864a mv a2,s2 + 3bc057ac: 01fc1023 sh t6,0(s8) + 3bc057b0: fa6bf7e3 bgeu s7,t1,3bc0575e + 3bc057b4: f103031b addiw t1,t1,-240 + 3bc057b8: b2e5 j 3bc051a0 + 3bc057ba: 005ede9b srliw t4,t4,0x5 + 3bc057be: 41df8fbb subw t6,t6,t4 + 3bc057c2: 4126063b subw a2,a2,s2 + 3bc057c6: 412787bb subw a5,a5,s2 + 3bc057ca: 3c0fbf8b extu t6,t6,15,0 + 3bc057ce: 2305 addiw t1,t1,1 + 3bc057d0: bff1 j 3bc057ac + 3bc057d2: 005ede9b srliw t4,t4,0x5 + 3bc057d6: 41d383bb subw t2,t2,t4 + 3bc057da: 405787bb subw a5,a5,t0 + 3bc057de: 3c03b38b extu t2,t2,15,0 + 3bc057e2: 405602bb subw t0,a2,t0 + 3bc057e6: 460d li a2,3 + 3bc057e8: bc09 j 3bc051fa + 3bc057ea: 005ede9b srliw t4,t4,0x5 + 3bc057ee: 41d484bb subw s1,s1,t4 + 3bc057f2: 407787bb subw a5,a5,t2 + 3bc057f6: 3c04b48b extu s1,s1,15,0 + 3bc057fa: 001c061b addiw a2,s8,1 + 3bc057fe: 407283bb subw t2,t0,t2 + 3bc05802: bc3d j 3bc05240 + 3bc05804: 005ede9b srliw t4,t4,0x5 + 3bc05808: 41d484bb subw s1,s1,t4 + 3bc0580c: 405787bb subw a5,a5,t0 + 3bc05810: 3c04b48b extu s1,s1,15,0 + 3bc05814: 2905 addiw s2,s2,1 + 3bc05816: 405382bb subw t0,t2,t0 + 3bc0581a: b4ad j 3bc05284 + 3bc0581c: 0056561b srliw a2,a2,0x5 + 3bc05820: 40c383bb subw t2,t2,a2 + 3bc05824: 41d787bb subw a5,a5,t4 + 3bc05828: 3c03b38b extu t2,t2,15,0 + 3bc0582c: 2485 addiw s1,s1,1 + 3bc0582e: 41d28ebb subw t4,t0,t4 + 3bc05832: bc59 j 3bc052c8 + 3bc05834: 0056561b srliw a2,a2,0x5 + 3bc05838: 40c282bb subw t0,t0,a2 + 3bc0583c: 407787bb subw a5,a5,t2 + 3bc05840: 3c02b28b extu t0,t0,15,0 + 3bc05844: 2905 addiw s2,s2,1 + 3bc05846: 407e83bb subw t2,t4,t2 + 3bc0584a: b4c9 j 3bc0530c + 3bc0584c: 0052d29b srliw t0,t0,0x5 + 3bc05850: 405484bb subw s1,s1,t0 + 3bc05854: 9f91 subw a5,a5,a2 + 3bc05856: 3c04b48b extu s1,s1,15,0 + 3bc0585a: 2e85 addiw t4,t4,1 + 3bc0585c: 40c3863b subw a2,t2,a2 + 3bc05860: b4fd j 3bc0534e + 3bc05862: 8c76 mv s8,t4 + 3bc05864: be21 j 3bc0537c + 3bc05866: 0053d39b srliw t2,t2,0x5 + 3bc0586a: 407484bb subw s1,s1,t2 + 3bc0586e: 41a6063b subw a2,a2,s10 + 3bc05872: 41a787bb subw a5,a5,s10 + 3bc05876: 3c04b48b extu s1,s1,15,0 + 3bc0587a: 01fe8fbb addw t6,t4,t6 + 3bc0587e: be81 j 3bc053ce + 3bc05880: 32ed addiw t0,t0,-5 + 3bc05882: 00d67a63 bgeu a2,a3,3bc05896 + 3bc05886: 98174e8b lbuia t4,(a4),1,0 + 3bc0588a: 0087979b slliw a5,a5,0x8 + 3bc0588e: 0086161b slliw a2,a2,0x8 + 3bc05892: 00fee7b3 or a5,t4,a5 + 3bc05896: 0016539b srliw t2,a2,0x1 + 3bc0589a: 407787bb subw a5,a5,t2 + 3bc0589e: 41f7d49b sraiw s1,a5,0x1f + 3bc058a2: 001f9f9b slliw t6,t6,0x1 + 3bc058a6: 0003861b sext.w a2,t2 + 3bc058aa: 2f85 addiw t6,t6,1 + 3bc058ac: 0093f3b3 and t2,t2,s1 + 3bc058b0: 32fd addiw t0,t0,-1 + 3bc058b2: 01f48fbb addw t6,s1,t6 + 3bc058b6: 007787bb addw a5,a5,t2 + 3bc058ba: fc0294e3 bnez t0,3bc05882 + 3bc058be: 0025d283 lhu t0,2(a1) + 3bc058c2: 004f9f9b slliw t6,t6,0x4 + 3bc058c6: 00028e9b sext.w t4,t0 + 3bc058ca: 00d67a63 bgeu a2,a3,3bc058de + 3bc058ce: 9817438b lbuia t2,(a4),1,0 + 3bc058d2: 0087979b slliw a5,a5,0x8 + 3bc058d6: 0086161b slliw a2,a2,0x8 + 3bc058da: 00f3e7b3 or a5,t2,a5 + 3bc058de: 00b6549b srliw s1,a2,0xb + 3bc058e2: 03d483bb mulw t2,s1,t4 + 3bc058e6: 1677f463 bgeu a5,t2,3bc05a4e + 3bc058ea: 41d40ebb subw t4,s0,t4 + 3bc058ee: 005ede9b srliw t4,t4,0x5 + 3bc058f2: 005e82bb addw t0,t4,t0 + 3bc058f6: 3c02b28b extu t0,t0,15,0 + 3bc058fa: 4e89 li t4,2 + 3bc058fc: 00559123 sh t0,2(a1) + 3bc05900: b3d5c48b lurhu s1,a1,t4,1 + 3bc05904: 7c0ebb8b extu s7,t4,31,0 + 3bc05908: 0004861b sext.w a2,s1 + 3bc0590c: 00d3fa63 bgeu t2,a3,3bc05920 + 3bc05910: 9817428b lbuia t0,(a4),1,0 + 3bc05914: 0087979b slliw a5,a5,0x8 + 3bc05918: 0083939b slliw t2,t2,0x8 + 3bc0591c: 00f2e7b3 or a5,t0,a5 + 3bc05920: 00b3d91b srliw s2,t2,0xb + 3bc05924: 02c902bb mulw t0,s2,a2 + 3bc05928: 1257ff63 bgeu a5,t0,3bc05a66 + 3bc0592c: 40c4063b subw a2,s0,a2 + 3bc05930: 0056561b srliw a2,a2,0x5 + 3bc05934: 9cb1 addw s1,s1,a2 + 3bc05936: 3c04b48b extu s1,s1,15,0 + 3bc0593a: 0e89 addi t4,t4,2 + 3bc0593c: 2375d48b srh s1,a1,s7,1 + 3bc05940: b3d5cb8b lurhu s7,a1,t4,1 + 3bc05944: 7c0eb90b extu s2,t4,31,0 + 3bc05948: 000b861b sext.w a2,s7 + 3bc0594c: 00d2fa63 bgeu t0,a3,3bc05960 + 3bc05950: 9817438b lbuia t2,(a4),1,0 + 3bc05954: 0087979b slliw a5,a5,0x8 + 3bc05958: 0082929b slliw t0,t0,0x8 + 3bc0595c: 00f3e7b3 or a5,t2,a5 + 3bc05960: 00b2d49b srliw s1,t0,0xb + 3bc05964: 02c483bb mulw t2,s1,a2 + 3bc05968: 1077fa63 bgeu a5,t2,3bc05a7c + 3bc0596c: 40c4063b subw a2,s0,a2 + 3bc05970: 0056561b srliw a2,a2,0x5 + 3bc05974: 01760bbb addw s7,a2,s7 + 3bc05978: 3c0bbb8b extu s7,s7,15,0 + 3bc0597c: 2e91 addiw t4,t4,4 + 3bc0597e: 2325db8b srh s7,a1,s2,1 + 3bc05982: b3d5c48b lurhu s1,a1,t4,1 + 3bc05986: 7c0ebb8b extu s7,t4,31,0 + 3bc0598a: 0004829b sext.w t0,s1 + 3bc0598e: 00d3f963 bgeu t2,a3,3bc059a0 + 3bc05992: 9817460b lbuia a2,(a4),1,0 + 3bc05996: 0087979b slliw a5,a5,0x8 + 3bc0599a: 0083939b slliw t2,t2,0x8 + 3bc0599e: 8fd1 or a5,a5,a2 + 3bc059a0: 00b3d91b srliw s2,t2,0xb + 3bc059a4: 0259063b mulw a2,s2,t0 + 3bc059a8: 0ec7f663 bgeu a5,a2,3bc05a94 + 3bc059ac: 405402bb subw t0,s0,t0 + 3bc059b0: 0052d29b srliw t0,t0,0x5 + 3bc059b4: 009284bb addw s1,t0,s1 + 3bc059b8: 3c04b48b extu s1,s1,15,0 + 3bc059bc: 3ee1 addiw t4,t4,-8 + 3bc059be: 01feefb3 or t6,t4,t6 + 3bc059c2: 2375d48b srh s1,a1,s7,1 + 3bc059c6: 000f839b sext.w t2,t6 + 3bc059ca: 54fd li s1,-1 + 3bc059cc: a09398e3 bne t2,s1,3bc053dc + 3bc059d0: 38d1 addiw a7,a7,-12 + 3bc059d2: 8fda mv t6,s6 + 3bc059d4: 11200313 li t1,274 + 3bc059d8: 010006b7 lui a3,0x1000 + 3bc059dc: 00d67963 bgeu a2,a3,3bc059ee + 3bc059e0: 9817468b lbuia a3,(a4),1,0 + 3bc059e4: 0087979b slliw a5,a5,0x8 + 3bc059e8: 0086161b slliw a2,a2,0x8 + 3bc059ec: 8fd5 or a5,a5,a3 + 3bc059ee: dd5c sw a5,60(a0) + 3bc059f0: 7782 ld a5,32(sp) + 3bc059f2: f918 sd a4,48(a0) + 3bc059f4: dd10 sw a2,56(a0) + 3bc059f6: c97c sw a5,84(a0) + 3bc059f8: 417c lw a5,68(a0) + 3bc059fa: 04652e23 sw t1,92(a0) + 3bc059fe: 03053423 sd a6,40(a0) + 3bc05a02: 05c52023 sw t3,64(a0) + 3bc05a06: 05f52423 sw t6,72(a0) + 3bc05a0a: 05e52623 sw t5,76(a0) + 3bc05a0e: 05352823 sw s3,80(a0) + 3bc05a12: 05152c23 sw a7,88(a0) + 3bc05a16: e789 bnez a5,3bc05a20 + 3bc05a18: 415c lw a5,4(a0) + 3bc05a1a: 00fe6363 bltu t3,a5,3bc05a20 + 3bc05a1e: c17c sw a5,68(a0) + 3bc05a20: 65c2 ld a1,16(sp) + 3bc05a22: e42a sd a0,8(sp) + 3bc05a24: d23fe0ef jal ra,3bc04746 + 3bc05a28: 6522 ld a0,8(sp) + 3bc05a2a: 6742 ld a4,16(sp) + 3bc05a2c: 751c ld a5,40(a0) + 3bc05a2e: 00e7fd63 bgeu a5,a4,3bc05a48 + 3bc05a32: 791c ld a5,48(a0) + 3bc05a34: 7742 ld a4,48(sp) + 3bc05a36: 00e7f963 bgeu a5,a4,3bc05a48 + 3bc05a3a: 4d78 lw a4,92(a0) + 3bc05a3c: 11100793 li a5,273 + 3bc05a40: 00e7e463 bltu a5,a4,3bc05a48 + 3bc05a44: d9bfe06f j 3bc047de + 3bc05a48: 4501 li a0,0 + 3bc05a4a: dd3fe06f j 3bc0481c + 3bc05a4e: 005ede9b srliw t4,t4,0x5 + 3bc05a52: 41d282bb subw t0,t0,t4 + 3bc05a56: 407787bb subw a5,a5,t2 + 3bc05a5a: 3c02b28b extu t0,t0,15,0 + 3bc05a5e: 407603bb subw t2,a2,t2 + 3bc05a62: 4e8d li t4,3 + 3bc05a64: bd61 j 3bc058fc + 3bc05a66: 0056561b srliw a2,a2,0x5 + 3bc05a6a: 9c91 subw s1,s1,a2 + 3bc05a6c: 405787bb subw a5,a5,t0 + 3bc05a70: 3c04b48b extu s1,s1,15,0 + 3bc05a74: 0e91 addi t4,t4,4 + 3bc05a76: 405382bb subw t0,t2,t0 + 3bc05a7a: b5c9 j 3bc0593c + 3bc05a7c: 0056561b srliw a2,a2,0x5 + 3bc05a80: 40cb8bbb subw s7,s7,a2 + 3bc05a84: 407787bb subw a5,a5,t2 + 3bc05a88: 3c0bbb8b extu s7,s7,15,0 + 3bc05a8c: 2ea1 addiw t4,t4,8 + 3bc05a8e: 407283bb subw t2,t0,t2 + 3bc05a92: b5f5 j 3bc0597e + 3bc05a94: 0052d29b srliw t0,t0,0x5 + 3bc05a98: 405484bb subw s1,s1,t0 + 3bc05a9c: 9f91 subw a5,a5,a2 + 3bc05a9e: 3c04b48b extu s1,s1,15,0 + 3bc05aa2: 40c3863b subw a2,t2,a2 + 3bc05aa6: bf21 j 3bc059be + 3bc05aa8: 489d li a7,7 + 3bc05aaa: ba3d j 3bc053e8 + 3bc05aac: 8fda mv t6,s6 + 3bc05aae: 64a2 ld s1,8(sp) + 3bc05ab0: 00230e9b addiw t4,t1,2 + 3bc05ab4: 8376 mv t1,t4 + 3bc05ab6: 410483b3 sub t2,s1,a6 + 3bc05aba: 93048ce3 beq s1,a6,3bc053f2 + 3bc05abe: 7c0eb28b extu t0,t4,31,0 + 3bc05ac2: 0053f463 bgeu t2,t0,3bc05aca + 3bc05ac6: 00038e9b sext.w t4,t2 + 3bc05aca: 7c0fb48b extu s1,t6,31,0 + 3bc05ace: 409803b3 sub t2,a6,s1 + 3bc05ad2: 82d6 mv t0,s5 + 3bc05ad4: 00986363 bltu a6,s1,3bc05ada + 3bc05ad8: 4281 li t0,0 + 3bc05ada: 9396 add t2,t2,t0 + 3bc05adc: 7c0eb48b extu s1,t4,31,0 + 3bc05ae0: 407a8933 sub s2,s5,t2 + 3bc05ae4: 01de0e3b addw t3,t3,t4 + 3bc05ae8: 41d3033b subw t1,t1,t4 + 3bc05aec: 010a02b3 add t0,s4,a6 + 3bc05af0: 02996363 bltu s2,s1,3bc05b16 + 3bc05af4: 410383b3 sub t2,t2,a6 + 3bc05af8: 00928eb3 add t4,t0,s1 + 3bc05afc: 9826 add a6,a6,s1 + 3bc05afe: 8072c48b lrbu s1,t0,t2,0 + 3bc05b02: 1812d48b sbia s1,(t0),1,0 + 3bc05b06: fe5e9ce3 bne t4,t0,3bc05afe + 3bc05b0a: 88cff06f j 3bc04b96 + 3bc05b0e: f04e sd s3,32(sp) + 3bc05b10: 89fa mv s3,t5 + 3bc05b12: 8f5a mv t5,s6 + 3bc05b14: bf69 j 3bc05aae + 3bc05b16: 84f6 mv s1,t4 + 3bc05b18: 807a490b lrbu s2,s4,t2,0 + 3bc05b1c: 0385 addi t2,t2,1 + 3bc05b1e: 01228023 sb s2,0(t0) + 3bc05b22: 007a9363 bne s5,t2,3bc05b28 + 3bc05b26: 4381 li t2,0 + 3bc05b28: 34fd addiw s1,s1,-1 + 3bc05b2a: 0285 addi t0,t0,1 + 3bc05b2c: f4f5 bnez s1,3bc05b18 + 3bc05b2e: 3efd addiw t4,t4,-1 + 3bc05b30: 0805 addi a6,a6,1 + 3bc05b32: 7c0ebe8b extu t4,t4,31,0 + 3bc05b36: 9876 add a6,a6,t4 + 3bc05b38: 85eff06f j 3bc04b96 + 3bc05b3c: 48a5 li a7,9 + 3bc05b3e: 858ff06f j 3bc04b96 + +000000003bc05b42 : + 3bc05b42: 00254703 lbu a4,2(a0) + 3bc05b46: 04052303 lw t1,64(a0) + 3bc05b4a: 4805 li a6,1 + 3bc05b4c: 00e8183b sllw a6,a6,a4 + 3bc05b50: 05852e83 lw t4,88(a0) + 3bc05b54: 387d addiw a6,a6,-1 + 3bc05b56: 01037833 and a6,t1,a6 + 3bc05b5a: 0048181b slliw a6,a6,0x4 + 3bc05b5e: 010e8e3b addw t3,t4,a6 + 3bc05b62: 01053883 ld a7,16(a0) + 3bc05b66: 020e1713 slli a4,t3,0x20 + 3bc05b6a: 5d14 lw a3,56(a0) + 3bc05b6c: 01f75e13 srli t3,a4,0x1f + 3bc05b70: 9e46 add t3,t3,a7 + 3bc05b72: 01000737 lui a4,0x1000 + 3bc05b76: 5d5c lw a5,60(a0) + 3bc05b78: e00e5f83 lhu t6,-512(t3) + 3bc05b7c: 8f2a mv t5,a0 + 3bc05b7e: 962e add a2,a2,a1 + 3bc05b80: 00e6fc63 bgeu a3,a4,3bc05b98 + 3bc05b84: 4501 li a0,0 + 3bc05b86: 0cc5f463 bgeu a1,a2,3bc05c4e + 3bc05b8a: 9815c70b lbuia a4,(a1),1,0 + 3bc05b8e: 0087979b slliw a5,a5,0x8 + 3bc05b92: 0086969b slliw a3,a3,0x8 + 3bc05b96: 8fd9 or a5,a5,a4 + 3bc05b98: 00b6d71b srliw a4,a3,0xb + 3bc05b9c: 03f7073b mulw a4,a4,t6 + 3bc05ba0: 14e7f063 bgeu a5,a4,3bc05ce0 + 3bc05ba4: 040f3683 ld a3,64(t5) + 3bc05ba8: 28088893 addi a7,a7,640 # f0280 <__BSS_SIZE__+0xea670> + 3bc05bac: caa1 beqz a3,3bc05bfc + 3bc05bae: 001f4503 lbu a0,1(t5) + 3bc05bb2: 4685 li a3,1 + 3bc05bb4: 000f4803 lbu a6,0(t5) + 3bc05bb8: 00a696bb sllw a3,a3,a0 + 3bc05bbc: 36fd addiw a3,a3,-1 + 3bc05bbe: 00d37333 and t1,t1,a3 + 3bc05bc2: 028f3683 ld a3,40(t5) + 3bc05bc6: 018f3e03 ld t3,24(t5) + 3bc05bca: 0103133b sllw t1,t1,a6 + 3bc05bce: fff68513 addi a0,a3,-1 # ffffff <__BSS_SIZE__+0xffa3ef> + 3bc05bd2: e681 bnez a3,3bc05bda + 3bc05bd4: 020f3503 ld a0,32(t5) + 3bc05bd8: 157d addi a0,a0,-1 + 3bc05bda: 80ae468b lrbu a3,t3,a0,0 + 3bc05bde: 4521 li a0,8 + 3bc05be0: 4105053b subw a0,a0,a6 + 3bc05be4: 40a6d6bb sraw a3,a3,a0 + 3bc05be8: 006686bb addw a3,a3,t1 + 3bc05bec: 30000513 li a0,768 + 3bc05bf0: 02a686bb mulw a3,a3,a0 + 3bc05bf4: 7c06b68b extu a3,a3,31,0 + 3bc05bf8: 02d8988b addsl a7,a7,a3,1 + 3bc05bfc: 4699 li a3,6 + 3bc05bfe: 05d6eb63 bltu a3,t4,3bc05c54 + 3bc05c02: 4685 li a3,1 + 3bc05c04: 01000eb7 lui t4,0x1000 + 3bc05c08: 0ff00e13 li t3,255 + 3bc05c0c: b2d8c80b lurhu a6,a7,a3,1 + 3bc05c10: 01d77b63 bgeu a4,t4,3bc05c26 + 3bc05c14: 2ec5f363 bgeu a1,a2,3bc05efa + 3bc05c18: 9815c50b lbuia a0,(a1),1,0 + 3bc05c1c: 0087979b slliw a5,a5,0x8 + 3bc05c20: 0087171b slliw a4,a4,0x8 + 3bc05c24: 8fc9 or a5,a5,a0 + 3bc05c26: 00b7551b srliw a0,a4,0xb + 3bc05c2a: 0305083b mulw a6,a0,a6 + 3bc05c2e: 0016969b slliw a3,a3,0x1 + 3bc05c32: 0107ef63 bltu a5,a6,3bc05c50 + 3bc05c36: 4107073b subw a4,a4,a6 + 3bc05c3a: 410787bb subw a5,a5,a6 + 3bc05c3e: 2685 addiw a3,a3,1 + 3bc05c40: fcde76e3 bgeu t3,a3,3bc05c0c + 3bc05c44: 4505 li a0,1 + 3bc05c46: 010007b7 lui a5,0x1000 + 3bc05c4a: 2af76663 bltu a4,a5,3bc05ef6 + 3bc05c4e: 8082 ret + 3bc05c50: 8742 mv a4,a6 + 3bc05c52: b7fd j 3bc05c40 + 3bc05c54: 028f3303 ld t1,40(t5) + 3bc05c58: 048f6803 lwu a6,72(t5) + 3bc05c5c: 018f3683 ld a3,24(t5) + 3bc05c60: 4501 li a0,0 + 3bc05c62: 41030e33 sub t3,t1,a6 + 3bc05c66: 01037463 bgeu t1,a6,3bc05c6e + 3bc05c6a: 020f3503 ld a0,32(t5) + 3bc05c6e: 96f2 add a3,a3,t3 + 3bc05c70: 80a6ce0b lrbu t3,a3,a0,0 + 3bc05c74: 010002b7 lui t0,0x1000 + 3bc05c78: 4685 li a3,1 + 3bc05c7a: 10000513 li a0,256 + 3bc05c7e: 0ff00f93 li t6,255 + 3bc05c82: 001e181b slliw a6,t3,0x1 + 3bc05c86: 00d5033b addw t1,a0,a3 + 3bc05c8a: 00080e1b sext.w t3,a6 + 3bc05c8e: 01057833 and a6,a0,a6 + 3bc05c92: 00080e9b sext.w t4,a6 + 3bc05c96: 0103083b addw a6,t1,a6 + 3bc05c9a: b308c30b lurhu t1,a7,a6,1 + 3bc05c9e: 00577c63 bgeu a4,t0,3bc05cb6 + 3bc05ca2: 24c5fc63 bgeu a1,a2,3bc05efa + 3bc05ca6: 9815c80b lbuia a6,(a1),1,0 + 3bc05caa: 0087979b slliw a5,a5,0x8 + 3bc05cae: 0087171b slliw a4,a4,0x8 + 3bc05cb2: 00f867b3 or a5,a6,a5 + 3bc05cb6: 00b7581b srliw a6,a4,0xb + 3bc05cba: 02680f3b mulw t5,a6,t1 + 3bc05cbe: 0016969b slliw a3,a3,0x1 + 3bc05cc2: 01e7f863 bgeu a5,t5,3bc05cd2 + 3bc05cc6: 01d54533 xor a0,a0,t4 + 3bc05cca: 877a mv a4,t5 + 3bc05ccc: fadffbe3 bgeu t6,a3,3bc05c82 + 3bc05cd0: bf95 j 3bc05c44 + 3bc05cd2: 41e7073b subw a4,a4,t5 + 3bc05cd6: 41e787bb subw a5,a5,t5 + 3bc05cda: 2685 addiw a3,a3,1 + 3bc05cdc: 8576 mv a0,t4 + 3bc05cde: b7fd j 3bc05ccc + 3bc05ce0: 7c0eb50b extu a0,t4,31,0 + 3bc05ce4: 0541 addi a0,a0,16 + 3bc05ce6: a2a8cf0b lrhu t5,a7,a0,1 + 3bc05cea: 00151e93 slli t4,a0,0x1 + 3bc05cee: 40e6833b subw t1,a3,a4 + 3bc05cf2: 01000537 lui a0,0x1000 + 3bc05cf6: 9f99 subw a5,a5,a4 + 3bc05cf8: 00a37c63 bgeu t1,a0,3bc05d10 + 3bc05cfc: 4501 li a0,0 + 3bc05cfe: f4c5f8e3 bgeu a1,a2,3bc05c4e + 3bc05d02: 9815c70b lbuia a4,(a1),1,0 + 3bc05d06: 0087979b slliw a5,a5,0x8 + 3bc05d0a: 0083131b slliw t1,t1,0x8 + 3bc05d0e: 8fd9 or a5,a5,a4 + 3bc05d10: 00b3571b srliw a4,t1,0xb + 3bc05d14: 03e706bb mulw a3,a4,t5 + 3bc05d18: 16d7f563 bgeu a5,a3,3bc05e82 + 3bc05d1c: a0088313 addi t1,a7,-1536 + 3bc05d20: 4509 li a0,2 + 3bc05d22: 4f01 li t5,0 + 3bc05d24: 01000e37 lui t3,0x1000 + 3bc05d28: 00035703 lhu a4,0(t1) + 3bc05d2c: 01c6fc63 bgeu a3,t3,3bc05d44 + 3bc05d30: 1cc5f563 bgeu a1,a2,3bc05efa + 3bc05d34: 9815ce0b lbuia t3,(a1),1,0 + 3bc05d38: 0087979b slliw a5,a5,0x8 + 3bc05d3c: 0086969b slliw a3,a3,0x8 + 3bc05d40: 00fe67b3 or a5,t3,a5 + 3bc05d44: 00b6de1b srliw t3,a3,0xb + 3bc05d48: 02ee073b mulw a4,t3,a4 + 3bc05d4c: 22e7fc63 bgeu a5,a4,3bc05f84 + 3bc05d50: 7c08380b extu a6,a6,31,0 + 3bc05d54: 0303130b addsl t1,t1,a6,1 + 3bc05d58: 4801 li a6,0 + 3bc05d5a: 46a1 li a3,8 + 3bc05d5c: 4e05 li t3,1 + 3bc05d5e: 010003b7 lui t2,0x1000 + 3bc05d62: b3c34f8b lurhu t6,t1,t3,1 + 3bc05d66: 00777c63 bgeu a4,t2,3bc05d7e + 3bc05d6a: 18c5f863 bgeu a1,a2,3bc05efa + 3bc05d6e: 9815ce8b lbuia t4,(a1),1,0 + 3bc05d72: 0087979b slliw a5,a5,0x8 + 3bc05d76: 0087171b slliw a4,a4,0x8 + 3bc05d7a: 00fee7b3 or a5,t4,a5 + 3bc05d7e: 00b75e9b srliw t4,a4,0xb + 3bc05d82: 03fe8fbb mulw t6,t4,t6 + 3bc05d86: 001e1e1b slliw t3,t3,0x1 + 3bc05d8a: 25f7e663 bltu a5,t6,3bc05fd6 + 3bc05d8e: 41f7073b subw a4,a4,t6 + 3bc05d92: 41f787bb subw a5,a5,t6 + 3bc05d96: 2e05 addiw t3,t3,1 + 3bc05d98: fcde65e3 bltu t3,a3,3bc05d62 + 3bc05d9c: 430d li t1,3 + 3bc05d9e: ebe364e3 bltu t1,t5,3bc05c46 + 3bc05da2: 40d806bb subw a3,a6,a3 + 3bc05da6: 01c6883b addw a6,a3,t3 + 3bc05daa: 86c2 mv a3,a6 + 3bc05dac: 01037363 bgeu t1,a6,3bc05db2 + 3bc05db0: 468d li a3,3 + 3bc05db2: 0066981b slliw a6,a3,0x6 + 3bc05db6: 0408081b addiw a6,a6,64 + 3bc05dba: 7c08380b extu a6,a6,31,0 + 3bc05dbe: 4685 li a3,1 + 3bc05dc0: 01000fb7 lui t6,0x1000 + 3bc05dc4: 03f00f13 li t5,63 + 3bc05dc8: 7c06b30b extu t1,a3,31,0 + 3bc05dcc: 9342 add t1,t1,a6 + 3bc05dce: a268ce0b lrhu t3,a7,t1,1 + 3bc05dd2: 01f77c63 bgeu a4,t6,3bc05dea + 3bc05dd6: 12c5f263 bgeu a1,a2,3bc05efa + 3bc05dda: 9815c30b lbuia t1,(a1),1,0 + 3bc05dde: 0087979b slliw a5,a5,0x8 + 3bc05de2: 0087171b slliw a4,a4,0x8 + 3bc05de6: 00f367b3 or a5,t1,a5 + 3bc05dea: 00b7531b srliw t1,a4,0xb + 3bc05dee: 03c30e3b mulw t3,t1,t3 + 3bc05df2: 0016969b slliw a3,a3,0x1 + 3bc05df6: 1fc7e263 bltu a5,t3,3bc05fda + 3bc05dfa: 41c7073b subw a4,a4,t3 + 3bc05dfe: 41c787bb subw a5,a5,t3 + 3bc05e02: 2685 addiw a3,a3,1 + 3bc05e04: fcdf72e3 bgeu t5,a3,3bc05dc8 + 3bc05e08: fc06869b addiw a3,a3,-64 + 3bc05e0c: 0006831b sext.w t1,a3 + 3bc05e10: 480d li a6,3 + 3bc05e12: e2687ae3 bgeu a6,t1,3bc05c46 + 3bc05e16: 4e35 li t3,13 + 3bc05e18: 0016d81b srliw a6,a3,0x1 + 3bc05e1c: 1c6e6163 bltu t3,t1,3bc05fde + 3bc05e20: 8a85 andi a3,a3,1 + 3bc05e22: 387d addiw a6,a6,-1 + 3bc05e24: 0026e693 ori a3,a3,2 + 3bc05e28: 010696bb sllw a3,a3,a6 + 3bc05e2c: 02069313 slli t1,a3,0x20 + 3bc05e30: 01f35693 srli a3,t1,0x1f + 3bc05e34: 737d lui t1,0xfffff + 3bc05e36: 30030313 addi t1,t1,768 # fffffffffffff300 <__BL2_END__+0xffffffffc43ebaf0> + 3bc05e3a: 969a add a3,a3,t1 + 3bc05e3c: 98b6 add a7,a7,a3 + 3bc05e3e: 4e05 li t3,1 + 3bc05e40: 4685 li a3,1 + 3bc05e42: 010002b7 lui t0,0x1000 + 3bc05e46: b2d8ce8b lurhu t4,a7,a3,1 + 3bc05e4a: 00577c63 bgeu a4,t0,3bc05e62 + 3bc05e4e: 0ac5f663 bgeu a1,a2,3bc05efa + 3bc05e52: 9815c30b lbuia t1,(a1),1,0 + 3bc05e56: 0087979b slliw a5,a5,0x8 + 3bc05e5a: 0087171b slliw a4,a4,0x8 + 3bc05e5e: 00f367b3 or a5,t1,a5 + 3bc05e62: 00b7531b srliw t1,a4,0xb + 3bc05e66: 03d30f3b mulw t5,t1,t4 + 3bc05e6a: 001e1f9b slliw t6,t3,0x1 + 3bc05e6e: 1be7f763 bgeu a5,t5,3bc0601c + 3bc05e72: 01c686bb addw a3,a3,t3 + 3bc05e76: 877a mv a4,t5 + 3bc05e78: 387d addiw a6,a6,-1 + 3bc05e7a: dc0806e3 beqz a6,3bc05c46 + 3bc05e7e: 8e7e mv t3,t6 + 3bc05e80: b7d9 j 3bc05e46 + 3bc05e82: 40d3053b subw a0,t1,a3 + 3bc05e86: 9ec6 add t4,t4,a7 + 3bc05e88: 01000f37 lui t5,0x1000 + 3bc05e8c: 40d7873b subw a4,a5,a3 + 3bc05e90: 832a mv t1,a0 + 3bc05e92: 018ed683 lhu a3,24(t4) # 1000018 <__BSS_SIZE__+0xffa408> + 3bc05e96: 01e57c63 bgeu a0,t5,3bc05eae + 3bc05e9a: 4501 li a0,0 + 3bc05e9c: dac5f9e3 bgeu a1,a2,3bc05c4e + 3bc05ea0: 0087179b slliw a5,a4,0x8 + 3bc05ea4: 9815c70b lbuia a4,(a1),1,0 + 3bc05ea8: 0083151b slliw a0,t1,0x8 + 3bc05eac: 8f5d or a4,a4,a5 + 3bc05eae: 00b5531b srliw t1,a0,0xb + 3bc05eb2: 02d306bb mulw a3,t1,a3 + 3bc05eb6: 8336 mv t1,a3 + 3bc05eb8: 04d77e63 bgeu a4,a3,3bc05f14 + 3bc05ebc: 77fd lui a5,0xfffff + 3bc05ebe: 9e3e add t3,t3,a5 + 3bc05ec0: 010007b7 lui a5,0x1000 + 3bc05ec4: 400e5e03 lhu t3,1024(t3) # 1000400 <__BSS_SIZE__+0xffa7f0> + 3bc05ec8: 00f6fc63 bgeu a3,a5,3bc05ee0 + 3bc05ecc: 4501 li a0,0 + 3bc05ece: d8c5f0e3 bgeu a1,a2,3bc05c4e + 3bc05ed2: 0087179b slliw a5,a4,0x8 + 3bc05ed6: 9815c70b lbuia a4,(a1),1,0 + 3bc05eda: 0086969b slliw a3,a3,0x8 + 3bc05ede: 8f5d or a4,a4,a5 + 3bc05ee0: 00b6d79b srliw a5,a3,0xb + 3bc05ee4: 03c7833b mulw t1,a5,t3 + 3bc05ee8: 00677b63 bgeu a4,t1,3bc05efe + 3bc05eec: 010007b7 lui a5,0x1000 + 3bc05ef0: 450d li a0,3 + 3bc05ef2: d4f37ee3 bgeu t1,a5,3bc05c4e + 3bc05ef6: d4c5ece3 bltu a1,a2,3bc05c4e + 3bc05efa: 4501 li a0,0 + 3bc05efc: bb89 j 3bc05c4e + 3bc05efe: 406686bb subw a3,a3,t1 + 3bc05f02: 406707bb subw a5,a4,t1 + 3bc05f06: 737d lui t1,0xfffff + 3bc05f08: 60030313 addi t1,t1,1536 # fffffffffffff600 <__BL2_END__+0xffffffffc43ebdf0> + 3bc05f0c: 9346 add t1,t1,a7 + 3bc05f0e: 450d li a0,3 + 3bc05f10: 4f31 li t5,12 + 3bc05f12: bd09 j 3bc05d24 + 3bc05f14: 9d15 subw a0,a0,a3 + 3bc05f16: 01000e37 lui t3,0x1000 + 3bc05f1a: 406707bb subw a5,a4,t1 + 3bc05f1e: 86aa mv a3,a0 + 3bc05f20: 030ed303 lhu t1,48(t4) + 3bc05f24: 01c57c63 bgeu a0,t3,3bc05f3c + 3bc05f28: 4501 li a0,0 + 3bc05f2a: d2c5f2e3 bgeu a1,a2,3bc05c4e + 3bc05f2e: 0087971b slliw a4,a5,0x8 + 3bc05f32: 9815c78b lbuia a5,(a1),1,0 + 3bc05f36: 0086951b slliw a0,a3,0x8 + 3bc05f3a: 8fd9 or a5,a5,a4 + 3bc05f3c: 00b5571b srliw a4,a0,0xb + 3bc05f40: 026706bb mulw a3,a4,t1 + 3bc05f44: 8736 mv a4,a3 + 3bc05f46: fcd7e0e3 bltu a5,a3,3bc05f06 + 3bc05f4a: 9d15 subw a0,a0,a3 + 3bc05f4c: 01000e37 lui t3,0x1000 + 3bc05f50: 048ed303 lhu t1,72(t4) + 3bc05f54: 86aa mv a3,a0 + 3bc05f56: 9f99 subw a5,a5,a4 + 3bc05f58: 01c57c63 bgeu a0,t3,3bc05f70 + 3bc05f5c: 4501 li a0,0 + 3bc05f5e: cec5f8e3 bgeu a1,a2,3bc05c4e + 3bc05f62: 0087971b slliw a4,a5,0x8 + 3bc05f66: 9815c78b lbuia a5,(a1),1,0 + 3bc05f6a: 0086951b slliw a0,a3,0x8 + 3bc05f6e: 8fd9 or a5,a5,a4 + 3bc05f70: 00b5571b srliw a4,a0,0xb + 3bc05f74: 026706bb mulw a3,a4,t1 + 3bc05f78: f8d7e7e3 bltu a5,a3,3bc05f06 + 3bc05f7c: 9f95 subw a5,a5,a3 + 3bc05f7e: 40d506bb subw a3,a0,a3 + 3bc05f82: b751 j 3bc05f06 + 3bc05f84: 40e68ebb subw t4,a3,a4 + 3bc05f88: 01000fb7 lui t6,0x1000 + 3bc05f8c: 9f99 subw a5,a5,a4 + 3bc05f8e: 01035703 lhu a4,16(t1) + 3bc05f92: 01fefc63 bgeu t4,t6,3bc05faa + 3bc05f96: f6c5f2e3 bgeu a1,a2,3bc05efa + 3bc05f9a: 00879e1b slliw t3,a5,0x8 + 3bc05f9e: 9815c78b lbuia a5,(a1),1,0 + 3bc05fa2: 008e9e9b slliw t4,t4,0x8 + 3bc05fa6: 01c7e7b3 or a5,a5,t3 + 3bc05faa: 00bed69b srliw a3,t4,0xb + 3bc05fae: 02e6873b mulw a4,a3,a4 + 3bc05fb2: 00e7f963 bgeu a5,a4,3bc05fc4 + 3bc05fb6: 7c08368b extu a3,a6,31,0 + 3bc05fba: 06a1 addi a3,a3,8 + 3bc05fbc: 02d3130b addsl t1,t1,a3,1 + 3bc05fc0: 4821 li a6,8 + 3bc05fc2: bb61 j 3bc05d5a + 3bc05fc4: 9f99 subw a5,a5,a4 + 3bc05fc6: 20030313 addi t1,t1,512 + 3bc05fca: 40ee873b subw a4,t4,a4 + 3bc05fce: 4841 li a6,16 + 3bc05fd0: 10000693 li a3,256 + 3bc05fd4: b361 j 3bc05d5c + 3bc05fd6: 877e mv a4,t6 + 3bc05fd8: b3c1 j 3bc05d98 + 3bc05fda: 8772 mv a4,t3 + 3bc05fdc: b525 j 3bc05e04 + 3bc05fde: 386d addiw a6,a6,-5 + 3bc05fe0: 01000e37 lui t3,0x1000 + 3bc05fe4: 01c77b63 bgeu a4,t3,3bc05ffa + 3bc05fe8: f0c5f9e3 bgeu a1,a2,3bc05efa + 3bc05fec: 9815c68b lbuia a3,(a1),1,0 + 3bc05ff0: 0087979b slliw a5,a5,0x8 + 3bc05ff4: 0087171b slliw a4,a4,0x8 + 3bc05ff8: 8fd5 or a5,a5,a3 + 3bc05ffa: 0017531b srliw t1,a4,0x1 + 3bc05ffe: 406786bb subw a3,a5,t1 + 3bc06002: 01f6d69b srliw a3,a3,0x1f + 3bc06006: 36fd addiw a3,a3,-1 + 3bc06008: 0066f6b3 and a3,a3,t1 + 3bc0600c: 387d addiw a6,a6,-1 + 3bc0600e: 0003071b sext.w a4,t1 + 3bc06012: 9f95 subw a5,a5,a3 + 3bc06014: fc0818e3 bnez a6,3bc05fe4 + 3bc06018: 4811 li a6,4 + 3bc0601a: b515 j 3bc05e3e + 3bc0601c: 41e7073b subw a4,a4,t5 + 3bc06020: 41e787bb subw a5,a5,t5 + 3bc06024: 00df86bb addw a3,t6,a3 + 3bc06028: bd81 j 3bc05e78 + +000000003bc0602a : + 3bc0602a: 11400793 li a5,276 + 3bc0602e: 02053423 sd zero,40(a0) # 1000028 <__BSS_SIZE__+0xffa418> + 3bc06032: 06052223 sw zero,100(a0) + 3bc06036: 04053023 sd zero,64(a0) + 3bc0603a: cd7c sw a5,92(a0) + 3bc0603c: 8082 ret + +000000003bc0603e : + 3bc0603e: 7175 addi sp,sp,-144 + 3bc06040: e122 sd s0,128(sp) + 3bc06042: f8ca sd s2,112(sp) + 3bc06044: f4ce sd s3,104(sp) + 3bc06046: f0d2 sd s4,96(sp) + 3bc06048: f86a sd s10,48(sp) + 3bc0604a: f46e sd s11,40(sp) + 3bc0604c: e506 sd ra,136(sp) + 3bc0604e: fca6 sd s1,120(sp) + 3bc06050: ecd6 sd s5,88(sp) + 3bc06052: e8da sd s6,80(sp) + 3bc06054: e4de sd s7,72(sp) + 3bc06056: e0e2 sd s8,64(sp) + 3bc06058: fc66 sd s9,56(sp) + 3bc0605a: 0006bd83 ld s11,0(a3) + 3bc0605e: 0006b023 sd zero,0(a3) + 3bc06062: 0007a023 sw zero,0(a5) # 1000000 <__BSS_SIZE__+0xffa3f0> + 3bc06066: e43a sd a4,8(sp) + 3bc06068: 4d78 lw a4,92(a0) + 3bc0606a: 89be mv s3,a5 + 3bc0606c: 11200793 li a5,274 + 3bc06070: 8932 mv s2,a2 + 3bc06072: 842a mv s0,a0 + 3bc06074: 8a2e mv s4,a1 + 3bc06076: 8d36 mv s10,a3 + 3bc06078: 4611 li a2,4 + 3bc0607a: 04e7e263 bltu a5,a4,3bc060be + 3bc0607e: 85d2 mv a1,s4 + 3bc06080: 8522 mv a0,s0 + 3bc06082: ec4fe0ef jal ra,3bc04746 + 3bc06086: 4b4d li s6,19 + 3bc06088: 06840a93 addi s5,s0,104 # 1068 <__BSS_SIZE__-0x4ba8> + 3bc0608c: 4c7c lw a5,92(s0) + 3bc0608e: 11200713 li a4,274 + 3bc06092: 0ce79663 bne a5,a4,3bc0615e + 3bc06096: 5c5c lw a5,60(s0) + 3bc06098: eb9d bnez a5,3bc060ce + 3bc0609a: 4785 li a5,1 + 3bc0609c: a8a1 j 3bc060f4 + 3bc0609e: 0017859b addiw a1,a5,1 + 3bc060a2: d06c sw a1,100(s0) + 3bc060a4: 9819458b lbuia a1,(s2),1,0 + 3bc060a8: 7c07b78b extu a5,a5,31,0 + 3bc060ac: 97a2 add a5,a5,s0 + 3bc060ae: 06b78423 sb a1,104(a5) + 3bc060b2: 000d3783 ld a5,0(s10) + 3bc060b6: 1dfd addi s11,s11,-1 + 3bc060b8: 0785 addi a5,a5,1 + 3bc060ba: 00fd3023 sd a5,0(s10) + 3bc060be: 507c lw a5,100(s0) + 3bc060c0: 020d8863 beqz s11,3bc060f0 + 3bc060c4: fcf67de3 bgeu a2,a5,3bc0609e + 3bc060c8: 06844603 lbu a2,104(s0) + 3bc060cc: ca05 beqz a2,3bc060fc + 3bc060ce: 4485 li s1,1 + 3bc060d0: 60aa ld ra,136(sp) + 3bc060d2: 640a ld s0,128(sp) + 3bc060d4: 7946 ld s2,112(sp) + 3bc060d6: 79a6 ld s3,104(sp) + 3bc060d8: 7a06 ld s4,96(sp) + 3bc060da: 6ae6 ld s5,88(sp) + 3bc060dc: 6b46 ld s6,80(sp) + 3bc060de: 6ba6 ld s7,72(sp) + 3bc060e0: 6c06 ld s8,64(sp) + 3bc060e2: 7ce2 ld s9,56(sp) + 3bc060e4: 7d42 ld s10,48(sp) + 3bc060e6: 7da2 ld s11,40(sp) + 3bc060e8: 8526 mv a0,s1 + 3bc060ea: 74e6 ld s1,120(sp) + 3bc060ec: 6149 addi sp,sp,144 + 3bc060ee: 8082 ret + 3bc060f0: ffe1 bnez a5,3bc060c8 + 3bc060f2: 478d li a5,3 + 3bc060f4: 00f9a023 sw a5,0(s3) + 3bc060f8: 4481 li s1,0 + 3bc060fa: bfd9 j 3bc060d0 + 3bc060fc: 4611 li a2,4 + 3bc060fe: fef67ae3 bgeu a2,a5,3bc060f2 + 3bc06102: 06942783 lw a5,105(s0) + 3bc06106: 06042223 sw zero,100(s0) + 3bc0610a: 9007978b revw a5,a5 + 3bc0610e: dc5c sw a5,60(s0) + 3bc06110: 57fd li a5,-1 + 3bc06112: dc1c sw a5,56(s0) + 3bc06114: 11300793 li a5,275 + 3bc06118: 02f70c63 beq a4,a5,3bc06150 + 3bc0611c: 00044783 lbu a5,0(s0) + 3bc06120: 00144703 lbu a4,1(s0) + 3bc06124: 6410 ld a2,8(s0) + 3bc06126: 40000593 li a1,1024 + 3bc0612a: 9f3d addw a4,a4,a5 + 3bc0612c: 30000793 li a5,768 + 3bc06130: 00e797bb sllw a5,a5,a4 + 3bc06134: 7c07879b addiw a5,a5,1984 + 3bc06138: 7c07b78b extu a5,a5,31,0 + 3bc0613c: 4701 li a4,0 + 3bc0613e: 00f76c63 bltu a4,a5,3bc06156 + 3bc06142: 4785 li a5,1 + 3bc06144: 1782 slli a5,a5,0x20 + 3bc06146: 0785 addi a5,a5,1 + 3bc06148: e43c sd a5,72(s0) + 3bc0614a: e83c sd a5,80(s0) + 3bc0614c: 04042c23 sw zero,88(s0) + 3bc06150: 04042e23 sw zero,92(s0) + 3bc06154: b72d j 3bc0607e + 3bc06156: 22e6558b srh a1,a2,a4,1 + 3bc0615a: 0705 addi a4,a4,1 + 3bc0615c: b7cd j 3bc0613e + 3bc0615e: 7418 ld a4,40(s0) + 3bc06160: 01476b63 bltu a4,s4,3bc06176 + 3bc06164: 12079f63 bnez a5,3bc062a2 + 3bc06168: 5c5c lw a5,60(s0) + 3bc0616a: 14079363 bnez a5,3bc062b0 + 3bc0616e: 4791 li a5,4 + 3bc06170: b751 j 3bc060f4 + 3bc06172: 4789 li a5,2 + 3bc06174: b741 j 3bc060f4 + 3bc06176: 4c81 li s9,0 + 3bc06178: 06442b83 lw s7,100(s0) + 3bc0617c: 0c0b9263 bnez s7,3bc06240 + 3bc06180: 01bb7463 bgeu s6,s11,3bc06188 + 3bc06184: 040c8263 beqz s9,3bc061c8 + 3bc06188: 866e mv a2,s11 + 3bc0618a: 85ca mv a1,s2 + 3bc0618c: 8522 mv a0,s0 + 3bc0618e: 9b5ff0ef jal ra,3bc05b42 + 3bc06192: 0005049b sext.w s1,a0 + 3bc06196: e095 bnez s1,3bc061ba + 3bc06198: 866e mv a2,s11 + 3bc0619a: 85ca mv a1,s2 + 3bc0619c: 06840513 addi a0,s0,104 + 3bc061a0: 8dbfa0ef jal ra,3bc00a7a + 3bc061a4: 000d3783 ld a5,0(s10) + 3bc061a8: 07b42223 sw s11,100(s0) + 3bc061ac: 9dbe add s11,s11,a5 + 3bc061ae: 01bd3023 sd s11,0(s10) + 3bc061b2: 478d li a5,3 + 3bc061b4: 00f9a023 sw a5,0(s3) + 3bc061b8: bf21 j 3bc060d0 + 3bc061ba: 000c8563 beqz s9,3bc061c4 + 3bc061be: 4789 li a5,2 + 3bc061c0: 0ef49463 bne s1,a5,3bc062a8 + 3bc061c4: 864a mv a2,s2 + 3bc061c6: a021 j 3bc061ce + 3bc061c8: fecd8613 addi a2,s11,-20 + 3bc061cc: 964a add a2,a2,s2 + 3bc061ce: 03243823 sd s2,48(s0) + 3bc061d2: 85d2 mv a1,s4 + 3bc061d4: 8522 mv a0,s0 + 3bc061d6: de2fe0ef jal ra,3bc047b8 + 3bc061da: ee051ae3 bnez a0,3bc060ce + 3bc061de: 7818 ld a4,48(s0) + 3bc061e0: 000d3783 ld a5,0(s10) + 3bc061e4: 41270933 sub s2,a4,s2 + 3bc061e8: 97ca add a5,a5,s2 + 3bc061ea: 00fd3023 sd a5,0(s10) + 3bc061ee: 412d8db3 sub s11,s11,s2 + 3bc061f2: 893a mv s2,a4 + 3bc061f4: bd61 j 3bc0608c + 3bc061f6: 8109478b lrbu a5,s2,a6,0 + 3bc061fa: 0106578b srb a5,a2,a6,0 + 3bc061fe: 0805 addi a6,a6,1 + 3bc06200: 0008079b sext.w a5,a6 + 3bc06204: e83e sd a5,16(sp) + 3bc06206: 01780c3b addw s8,a6,s7 + 3bc0620a: 018b6463 bltu s6,s8,3bc06212 + 3bc0620e: ffb814e3 bne a6,s11,3bc061f6 + 3bc06212: 07842223 sw s8,100(s0) + 3bc06216: 018b7463 bgeu s6,s8,3bc0621e + 3bc0621a: 020c8f63 beqz s9,3bc06258 + 3bc0621e: 7c0c360b extu a2,s8,31,0 + 3bc06222: 85d6 mv a1,s5 + 3bc06224: 8522 mv a0,s0 + 3bc06226: ec42 sd a6,24(sp) + 3bc06228: 91bff0ef jal ra,3bc05b42 + 3bc0622c: 0005049b sext.w s1,a0 + 3bc06230: 6862 ld a6,24(sp) + 3bc06232: ec91 bnez s1,3bc0624e + 3bc06234: 000d3783 ld a5,0(s10) + 3bc06238: 983e add a6,a6,a5 + 3bc0623a: 010d3023 sd a6,0(s10) + 3bc0623e: bf95 j 3bc061b2 + 3bc06240: 7c0bb60b extu a2,s7,31,0 + 3bc06244: 06860613 addi a2,a2,104 + 3bc06248: 4801 li a6,0 + 3bc0624a: 9622 add a2,a2,s0 + 3bc0624c: bf55 j 3bc06200 + 3bc0624e: 000c8563 beqz s9,3bc06258 + 3bc06252: 4789 li a5,2 + 3bc06254: 04f49a63 bne s1,a5,3bc062a8 + 3bc06258: 03543823 sd s5,48(s0) + 3bc0625c: 8656 mv a2,s5 + 3bc0625e: 85d2 mv a1,s4 + 3bc06260: 8522 mv a0,s0 + 3bc06262: d56fe0ef jal ra,3bc047b8 + 3bc06266: e60514e3 bnez a0,3bc060ce + 3bc0626a: 781c ld a5,48(s0) + 3bc0626c: 415787bb subw a5,a5,s5 + 3bc06270: 02fc6763 bltu s8,a5,3bc0629e + 3bc06274: 66c2 ld a3,16(sp) + 3bc06276: 40fc073b subw a4,s8,a5 + 3bc0627a: 02e6e263 bltu a3,a4,3bc0629e + 3bc0627e: 000d3703 ld a4,0(s10) + 3bc06282: 417787bb subw a5,a5,s7 + 3bc06286: 7c07b78b extu a5,a5,31,0 + 3bc0628a: 973e add a4,a4,a5 + 3bc0628c: 00ed3023 sd a4,0(s10) + 3bc06290: 40fd8db3 sub s11,s11,a5 + 3bc06294: 00f90733 add a4,s2,a5 + 3bc06298: 06042223 sw zero,100(s0) + 3bc0629c: bf99 j 3bc061f2 + 3bc0629e: 44ad li s1,11 + 3bc062a0: bd05 j 3bc060d0 + 3bc062a2: 67a2 ld a5,8(sp) + 3bc062a4: ec0787e3 beqz a5,3bc06172 + 3bc062a8: 4789 li a5,2 + 3bc062aa: 00f9a023 sw a5,0(s3) + 3bc062ae: b505 j 3bc060ce + 3bc062b0: 67a2 ld a5,8(sp) + 3bc062b2: ec0780e3 beqz a5,3bc06172 + 3bc062b6: 4c85 li s9,1 + 3bc062b8: b5c1 j 3bc06178 + +000000003bc062ba : + 3bc062ba: 1141 addi sp,sp,-16 + 3bc062bc: e022 sd s0,0(sp) + 3bc062be: 842a mv s0,a0 + 3bc062c0: 659c ld a5,8(a1) + 3bc062c2: 852e mv a0,a1 + 3bc062c4: 640c ld a1,8(s0) + 3bc062c6: e406 sd ra,8(sp) + 3bc062c8: 9782 jalr a5 + 3bc062ca: 60a2 ld ra,8(sp) + 3bc062cc: 00043423 sd zero,8(s0) + 3bc062d0: 6402 ld s0,0(sp) + 3bc062d2: 0141 addi sp,sp,16 + 3bc062d4: 8082 ret + +000000003bc062d6 : + 3bc062d6: 1101 addi sp,sp,-32 + 3bc062d8: 6518 ld a4,8(a0) + 3bc062da: e426 sd s1,8(sp) + 3bc062dc: 9db1 addw a1,a1,a2 + 3bc062de: 30000493 li s1,768 + 3bc062e2: e822 sd s0,16(sp) + 3bc062e4: 00b494bb sllw s1,s1,a1 + 3bc062e8: ec06 sd ra,24(sp) + 3bc062ea: e04a sd s2,0(sp) + 3bc062ec: 842a mv s0,a0 + 3bc062ee: 7c04849b addiw s1,s1,1984 + 3bc062f2: c719 beqz a4,3bc06300 + 3bc062f4: 5138 lw a4,96(a0) + 3bc062f6: 0004879b sext.w a5,s1 + 3bc062fa: 4501 li a0,0 + 3bc062fc: 02f70a63 beq a4,a5,3bc06330 + 3bc06300: 85b6 mv a1,a3 + 3bc06302: 8522 mv a0,s0 + 3bc06304: 8936 mv s2,a3 + 3bc06306: fb5ff0ef jal ra,3bc062ba + 3bc0630a: 00093783 ld a5,0(s2) + 3bc0630e: 02049713 slli a4,s1,0x20 + 3bc06312: 01f75593 srli a1,a4,0x1f + 3bc06316: 854a mv a0,s2 + 3bc06318: 9782 jalr a5 + 3bc0631a: 87aa mv a5,a0 + 3bc0631c: e408 sd a0,8(s0) + 3bc0631e: 4509 li a0,2 + 3bc06320: cb81 beqz a5,3bc06330 + 3bc06322: 6505 lui a0,0x1 + 3bc06324: d0050513 addi a0,a0,-768 # d00 <__BSS_SIZE__-0x4f10> + 3bc06328: 97aa add a5,a5,a0 + 3bc0632a: e81c sd a5,16(s0) + 3bc0632c: d024 sw s1,96(s0) + 3bc0632e: 4501 li a0,0 + 3bc06330: 60e2 ld ra,24(sp) + 3bc06332: 6442 ld s0,16(sp) + 3bc06334: 64a2 ld s1,8(sp) + 3bc06336: 6902 ld s2,0(sp) + 3bc06338: 6105 addi sp,sp,32 + 3bc0633a: 8082 ret + +000000003bc0633c : + 3bc0633c: 4791 li a5,4 + 3bc0633e: 00c7e463 bltu a5,a2,3bc06346 + 3bc06342: 4511 li a0,4 + 3bc06344: 8082 ret + 3bc06346: 0015a703 lw a4,1(a1) + 3bc0634a: 6685 lui a3,0x1 + 3bc0634c: 87ba mv a5,a4 + 3bc0634e: 00d77363 bgeu a4,a3,3bc06354 + 3bc06352: 6785 lui a5,0x1 + 3bc06354: c15c sw a5,4(a0) + 3bc06356: 0005c783 lbu a5,0(a1) + 3bc0635a: 0e000713 li a4,224 + 3bc0635e: fef762e3 bltu a4,a5,3bc06342 + 3bc06362: 4725 li a4,9 + 3bc06364: 02e7f6bb remuw a3,a5,a4 + 3bc06368: 02e7d7bb divuw a5,a5,a4 + 3bc0636c: 4715 li a4,5 + 3bc0636e: 00d50023 sb a3,0(a0) + 3bc06372: 02e7d6bb divuw a3,a5,a4 + 3bc06376: 02e7f7bb remuw a5,a5,a4 + 3bc0637a: 00d50123 sb a3,2(a0) + 3bc0637e: 00f500a3 sb a5,1(a0) + 3bc06382: 4501 li a0,0 + 3bc06384: 8082 ret + +000000003bc06386 : + 3bc06386: 7179 addi sp,sp,-48 + 3bc06388: f022 sd s0,32(sp) + 3bc0638a: 842a mv s0,a0 + 3bc0638c: 0828 addi a0,sp,24 + 3bc0638e: f406 sd ra,40(sp) + 3bc06390: e436 sd a3,8(sp) + 3bc06392: fabff0ef jal ra,3bc0633c + 3bc06396: ed01 bnez a0,3bc063ae + 3bc06398: 66a2 ld a3,8(sp) + 3bc0639a: 01914603 lbu a2,25(sp) + 3bc0639e: 01814583 lbu a1,24(sp) + 3bc063a2: 8522 mv a0,s0 + 3bc063a4: f33ff0ef jal ra,3bc062d6 + 3bc063a8: e119 bnez a0,3bc063ae + 3bc063aa: 67e2 ld a5,24(sp) + 3bc063ac: e01c sd a5,0(s0) + 3bc063ae: 70a2 ld ra,40(sp) + 3bc063b0: 7402 ld s0,32(sp) + 3bc063b2: 6145 addi sp,sp,48 + 3bc063b4: 8082 ret + +000000003bc063b6 : + 3bc063b6: 7155 addi sp,sp,-208 + 3bc063b8: e1a2 sd s0,192(sp) + 3bc063ba: f152 sd s4,160(sp) + 3bc063bc: ed56 sd s5,152(sp) + 3bc063be: e586 sd ra,200(sp) + 3bc063c0: fd26 sd s1,184(sp) + 3bc063c2: f94a sd s2,176(sp) + 3bc063c4: f54e sd s3,168(sp) + 3bc063c6: e95a sd s6,144(sp) + 3bc063c8: e55e sd s7,136(sp) + 3bc063ca: e162 sd s8,128(sp) + 3bc063cc: 0005ba03 ld s4,0(a1) + 3bc063d0: 0006ba83 ld s5,0(a3) # 1000 <__BSS_SIZE__-0x4c10> + 3bc063d4: 0006b023 sd zero,0(a3) + 3bc063d8: 0005b023 sd zero,0(a1) + 3bc063dc: 833a mv t1,a4 + 3bc063de: 0008a023 sw zero,0(a7) + 3bc063e2: 4711 li a4,4 + 3bc063e4: 4419 li s0,6 + 3bc063e6: 07577063 bgeu a4,s5,3bc06446 + 3bc063ea: 84b6 mv s1,a3 + 3bc063ec: 66ce ld a3,208(sp) + 3bc063ee: 8bb2 mv s7,a2 + 3bc063f0: 8c2e mv s8,a1 + 3bc063f2: 89aa mv s3,a0 + 3bc063f4: 863e mv a2,a5 + 3bc063f6: 859a mv a1,t1 + 3bc063f8: 850a mv a0,sp + 3bc063fa: 8946 mv s2,a7 + 3bc063fc: 8b42 mv s6,a6 + 3bc063fe: ec02 sd zero,24(sp) + 3bc06400: e402 sd zero,8(sp) + 3bc06402: f85ff0ef jal ra,3bc06386 + 3bc06406: 842a mv s0,a0 + 3bc06408: ed1d bnez a0,3bc06446 + 3bc0640a: 850a mv a0,sp + 3bc0640c: ec4e sd s3,24(sp) + 3bc0640e: f052 sd s4,32(sp) + 3bc06410: c1bff0ef jal ra,3bc0602a + 3bc06414: 87ca mv a5,s2 + 3bc06416: 0154b023 sd s5,0(s1) + 3bc0641a: 875a mv a4,s6 + 3bc0641c: 86a6 mv a3,s1 + 3bc0641e: 865e mv a2,s7 + 3bc06420: 85d2 mv a1,s4 + 3bc06422: 850a mv a0,sp + 3bc06424: c1bff0ef jal ra,3bc0603e + 3bc06428: 77a2 ld a5,40(sp) + 3bc0642a: 842a mv s0,a0 + 3bc0642c: 00fc3023 sd a5,0(s8) + 3bc06430: e519 bnez a0,3bc0643e + 3bc06432: 00092703 lw a4,0(s2) + 3bc06436: 478d li a5,3 + 3bc06438: 00f71363 bne a4,a5,3bc0643e + 3bc0643c: 4419 li s0,6 + 3bc0643e: 65ce ld a1,208(sp) + 3bc06440: 850a mv a0,sp + 3bc06442: e79ff0ef jal ra,3bc062ba + 3bc06446: 60ae ld ra,200(sp) + 3bc06448: 8522 mv a0,s0 + 3bc0644a: 640e ld s0,192(sp) + 3bc0644c: 74ea ld s1,184(sp) + 3bc0644e: 794a ld s2,176(sp) + 3bc06450: 79aa ld s3,168(sp) + 3bc06452: 7a0a ld s4,160(sp) + 3bc06454: 6aea ld s5,152(sp) + 3bc06456: 6b4a ld s6,144(sp) + 3bc06458: 6baa ld s7,136(sp) + 3bc0645a: 6c0a ld s8,128(sp) + 3bc0645c: 6169 addi sp,sp,208 + 3bc0645e: 8082 ret + +000000003bc06460 : + 3bc06460: 00154783 lbu a5,1(a0) + 3bc06464: 00254703 lbu a4,2(a0) + 3bc06468: 00054683 lbu a3,0(a0) + 3bc0646c: 00354503 lbu a0,3(a0) + 3bc06470: 0107171b slliw a4,a4,0x10 + 3bc06474: 0087979b slliw a5,a5,0x8 + 3bc06478: 9fb9 addw a5,a5,a4 + 3bc0647a: 9fb5 addw a5,a5,a3 + 3bc0647c: 0185151b slliw a0,a0,0x18 + 3bc06480: 9d3d addw a0,a0,a5 + 3bc06482: 8082 ret + +000000003bc06484 : + 3bc06484: 40e58733 sub a4,a1,a4 + 3bc06488: 26050763 beqz a0,3bc066f6 + 3bc0648c: 00c50e33 add t3,a0,a2 + 3bc06490: 7119 addi sp,sp,-128 + 3bc06492: ff0e0793 addi a5,t3,-16 # fffff0 <__BSS_SIZE__+0xffa3e0> + 3bc06496: ecce sd s3,88(sp) + 3bc06498: 00d58eb3 add t4,a1,a3 + 3bc0649c: fc86 sd ra,120(sp) + 3bc0649e: f8a2 sd s0,112(sp) + 3bc064a0: f4a6 sd s1,104(sp) + 3bc064a2: f0ca sd s2,96(sp) + 3bc064a4: e8d2 sd s4,80(sp) + 3bc064a6: e4d6 sd s5,72(sp) + 3bc064a8: e0da sd s6,64(sp) + 3bc064aa: fc5e sd s7,56(sp) + 3bc064ac: f862 sd s8,48(sp) + 3bc064ae: f466 sd s9,40(sp) + 3bc064b0: f06a sd s10,32(sp) + 3bc064b2: ec6e sd s11,24(sp) + 3bc064b4: e43e sd a5,8(sp) + 3bc064b6: 832a mv t1,a0 + 3bc064b8: fe0e8993 addi s3,t4,-32 + 3bc064bc: ea95 bnez a3,3bc064f0 + 3bc064be: 4785 li a5,1 + 3bc064c0: 557d li a0,-1 + 3bc064c2: 00f61863 bne a2,a5,3bc064d2 + 3bc064c6: 00034503 lbu a0,0(t1) + 3bc064ca: 00a03533 snez a0,a0 + 3bc064ce: 0005250b ext a0,a0,0,0 + 3bc064d2: 70e6 ld ra,120(sp) + 3bc064d4: 7446 ld s0,112(sp) + 3bc064d6: 74a6 ld s1,104(sp) + 3bc064d8: 7906 ld s2,96(sp) + 3bc064da: 69e6 ld s3,88(sp) + 3bc064dc: 6a46 ld s4,80(sp) + 3bc064de: 6aa6 ld s5,72(sp) + 3bc064e0: 6b06 ld s6,64(sp) + 3bc064e2: 7be2 ld s7,56(sp) + 3bc064e4: 7c42 ld s8,48(sp) + 3bc064e6: 7ca2 ld s9,40(sp) + 3bc064e8: 7d02 ld s10,32(sp) + 3bc064ea: 6de2 ld s11,24(sp) + 3bc064ec: 6109 addi sp,sp,128 + 3bc064ee: 8082 ret + 3bc064f0: 557d li a0,-1 + 3bc064f2: d265 beqz a2,3bc064d2 + 3bc064f4: 879a mv a5,t1 + 3bc064f6: 882e mv a6,a1 + 3bc064f8: 4fbd li t6,15 + 3bc064fa: 429d li t0,7 + 3bc064fc: ff4e8393 addi t2,t4,-12 + 3bc06500: 4a41 li s4,16 + 3bc06502: ff9e8f13 addi t5,t4,-7 + 3bc06506: ffbe8a93 addi s5,t4,-5 + 3bc0650a: 00005b17 auipc s6,0x5 + 3bc0650e: fa6b0b13 addi s6,s6,-90 # 3bc0b4b0 + 3bc06512: 00005b97 auipc s7,0x5 + 3bc06516: f7eb8b93 addi s7,s7,-130 # 3bc0b490 + 3bc0651a: ffce0c13 addi s8,t3,-4 + 3bc0651e: 0ff00493 li s1,255 + 3bc06522: ff8e0c93 addi s9,t3,-8 + 3bc06526: ff1e0913 addi s2,t3,-15 + 3bc0652a: 5d7d li s10,-1 + 3bc0652c: 9817c50b lbuia a0,(a5),1,0 + 3bc06530: 00455693 srli a3,a0,0x4 + 3bc06534: 0045561b srliw a2,a0,0x4 + 3bc06538: 07f68063 beq a3,t6,3bc06598 + 3bc0653c: 0109b8b3 sltu a7,s3,a6 + 3bc06540: 0018c893 xori a7,a7,1 + 3bc06544: 0ff8f893 andi a7,a7,255 + 3bc06548: 00c80433 add s0,a6,a2 + 3bc0654c: 00c786b3 add a3,a5,a2 + 3bc06550: 06088d63 beqz a7,3bc065ca + 3bc06554: 68a2 ld a7,8(sp) + 3bc06556: 0717fa63 bgeu a5,a7,3bc065ca + 3bc0655a: 6390 ld a2,0(a5) + 3bc0655c: 893d andi a0,a0,15 + 3bc0655e: 00c83023 sd a2,0(a6) + 3bc06562: 679c ld a5,8(a5) + 3bc06564: 862a mv a2,a0 + 3bc06566: 00f83423 sd a5,8(a6) + 3bc0656a: 87b6 mv a5,a3 + 3bc0656c: b827c88b lhuia a7,(a5),2,0 + 3bc06570: 411406b3 sub a3,s0,a7 + 3bc06574: 0bf50763 beq a0,t6,3bc06622 + 3bc06578: 0d12f563 bgeu t0,a7,3bc06642 + 3bc0657c: 0ce6e363 bltu a3,a4,3bc06642 + 3bc06580: 6290 ld a2,0(a3) + 3bc06582: 0511 addi a0,a0,4 + 3bc06584: 00a40833 add a6,s0,a0 + 3bc06588: e010 sd a2,0(s0) + 3bc0658a: 6690 ld a2,8(a3) + 3bc0658c: e410 sd a2,8(s0) + 3bc0658e: 0106d683 lhu a3,16(a3) + 3bc06592: 00d41823 sh a3,16(s0) + 3bc06596: bf59 j 3bc0652c + 3bc06598: 0527fd63 bgeu a5,s2,3bc065f2 + 3bc0659c: 4601 li a2,0 + 3bc0659e: 9817c88b lbuia a7,(a5),1,0 + 3bc065a2: 00c8863b addw a2,a7,a2 + 3bc065a6: 0527f963 bgeu a5,s2,3bc065f8 + 3bc065aa: fe988ae3 beq a7,s1,3bc0659e + 3bc065ae: 4681 li a3,0 + 3bc065b0: 7c06360b extu a2,a2,31,0 + 3bc065b4: 063d addi a2,a2,15 + 3bc065b6: 13a68a63 beq a3,s10,3bc066ea + 3bc065ba: 010606b3 add a3,a2,a6 + 3bc065be: 1306e663 bltu a3,a6,3bc066ea + 3bc065c2: 00f606b3 add a3,a2,a5 + 3bc065c6: 12f6e263 bltu a3,a5,3bc066ea + 3bc065ca: 00c80433 add s0,a6,a2 + 3bc065ce: 00c788b3 add a7,a5,a2 + 3bc065d2: 0083e463 bltu t2,s0,3bc065da + 3bc065d6: 031cf363 bgeu s9,a7,3bc065fc + 3bc065da: 111e1863 bne t3,a7,3bc066ea + 3bc065de: 108ee663 bltu t4,s0,3bc066ea + 3bc065e2: 84ae mv s1,a1 + 3bc065e4: 8542 mv a0,a6 + 3bc065e6: 85be mv a1,a5 + 3bc065e8: cf2fa0ef jal ra,3bc00ada + 3bc065ec: 4094053b subw a0,s0,s1 + 3bc065f0: b5cd j 3bc064d2 + 3bc065f2: 56fd li a3,-1 + 3bc065f4: 4601 li a2,0 + 3bc065f6: bf6d j 3bc065b0 + 3bc065f8: 56f9 li a3,-2 + 3bc065fa: bf5d j 3bc065b0 + 3bc065fc: 4681 li a3,0 + 3bc065fe: 60d7c60b lrd a2,a5,a3,0 + 3bc06602: 60d8560b srd a2,a6,a3,0 + 3bc06606: 06a1 addi a3,a3,8 + 3bc06608: 00d80633 add a2,a6,a3 + 3bc0660c: fe8669e3 bltu a2,s0,3bc065fe + 3bc06610: 87c6 mv a5,a7 + 3bc06612: b827c88b lhuia a7,(a5),2,0 + 3bc06616: 00f57613 andi a2,a0,15 + 3bc0661a: 411406b3 sub a3,s0,a7 + 3bc0661e: 03f61263 bne a2,t6,3bc06642 + 3bc06622: 4601 li a2,0 + 3bc06624: 9817c80b lbuia a6,(a5),1,0 + 3bc06628: 00c8063b addw a2,a6,a2 + 3bc0662c: 0b87ff63 bgeu a5,s8,3bc066ea + 3bc06630: fe980ae3 beq a6,s1,3bc06624 + 3bc06634: 7c06360b extu a2,a2,31,0 + 3bc06638: 063d addi a2,a2,15 + 3bc0663a: 00860533 add a0,a2,s0 + 3bc0663e: 0a856663 bltu a0,s0,3bc066ea + 3bc06642: 0611 addi a2,a2,4 + 3bc06644: 0ae6e363 bltu a3,a4,3bc066ea + 3bc06648: 00c40833 add a6,s0,a2 + 3bc0664c: 0712e463 bltu t0,a7,3bc066b4 + 3bc06650: 00042023 sw zero,0(s0) + 3bc06654: 0006c503 lbu a0,0(a3) + 3bc06658: 00a40023 sb a0,0(s0) + 3bc0665c: 0016c503 lbu a0,1(a3) + 3bc06660: 00a400a3 sb a0,1(s0) + 3bc06664: 0026c503 lbu a0,2(a3) + 3bc06668: 00a40123 sb a0,2(s0) + 3bc0666c: 0036c503 lbu a0,3(a3) + 3bc06670: 00a401a3 sb a0,3(s0) + 3bc06674: c51b450b lrwu a0,s6,a7,2 + 3bc06678: 00a68db3 add s11,a3,a0 + 3bc0667c: 40a6c68b lrw a3,a3,a0,0 + 3bc06680: c054 sw a3,4(s0) + 3bc06682: 451bc68b lrw a3,s7,a7,2 + 3bc06686: 40dd86b3 sub a3,s11,a3 + 3bc0668a: 0503f363 bgeu t2,a6,3bc066d0 + 3bc0668e: 050aee63 bltu s5,a6,3bc066ea + 3bc06692: 0421 addi s0,s0,8 + 3bc06694: 01e47e63 bgeu s0,t5,3bc066b0 + 3bc06698: 8536 mv a0,a3 + 3bc0669a: 8622 mv a2,s0 + 3bc0669c: 7885488b ldia a7,(a0),8,0 + 3bc066a0: 7886588b sdia a7,(a2),8,0 + 3bc066a4: ffe66ce3 bltu a2,t5,3bc0669c + 3bc066a8: 408f0433 sub s0,t5,s0 + 3bc066ac: 96a2 add a3,a3,s0 + 3bc066ae: 847a mv s0,t5 + 3bc066b0: 4601 li a2,0 + 3bc066b2: a811 j 3bc066c6 + 3bc066b4: 7886c50b ldia a0,(a3),8,0 + 3bc066b8: e008 sd a0,0(s0) + 3bc066ba: bfc1 j 3bc0668a + 3bc066bc: 80c6c50b lrbu a0,a3,a2,0 + 3bc066c0: 00c4550b srb a0,s0,a2,0 + 3bc066c4: 0605 addi a2,a2,1 + 3bc066c6: 00c40533 add a0,s0,a2 + 3bc066ca: ff0569e3 bltu a0,a6,3bc066bc + 3bc066ce: bdb9 j 3bc0652c + 3bc066d0: 6288 ld a0,0(a3) + 3bc066d2: e408 sd a0,8(s0) + 3bc066d4: e4ca7ce3 bgeu s4,a2,3bc0652c + 3bc066d8: 0441 addi s0,s0,16 + 3bc066da: 06a1 addi a3,a3,8 + 3bc066dc: 7886c60b ldia a2,(a3),8,0 + 3bc066e0: 7884560b sdia a2,(s0),8,0 + 3bc066e4: ff046ce3 bltu s0,a6,3bc066dc + 3bc066e8: b591 j 3bc0652c + 3bc066ea: 40678533 sub a0,a5,t1 + 3bc066ee: fff54513 not a0,a0 + 3bc066f2: 2501 sext.w a0,a0 + 3bc066f4: bbf9 j 3bc064d2 + 3bc066f6: 557d li a0,-1 + 3bc066f8: 8082 ret + +000000003bc066fa : + 3bc066fa: 06853803 ld a6,104(a0) + 3bc066fe: 7179 addi sp,sp,-48 + 3bc06700: f022 sd s0,32(sp) + 3bc06702: f406 sd ra,40(sp) + 3bc06704: ec26 sd s1,24(sp) + 3bc06706: e84a sd s2,16(sp) + 3bc06708: e44e sd s3,8(sp) + 3bc0670a: 842a mv s0,a0 + 3bc0670c: 00081363 bnez a6,3bc06712 + 3bc06710: f12c sd a1,96(a0) + 3bc06712: 7028 ld a0,96(s0) + 3bc06714: 010507b3 add a5,a0,a6 + 3bc06718: 00f59663 bne a1,a5,3bc06724 + 3bc0671c: 00c807b3 add a5,a6,a2 + 3bc06720: f43c sd a5,104(s0) + 3bc06722: a811 j 3bc06736 + 3bc06724: 40d588b3 sub a7,a1,a3 + 3bc06728: 98b2 add a7,a7,a2 + 3bc0672a: 67c1 lui a5,0x10 + 3bc0672c: 00f8ec63 bltu a7,a5,3bc06744 + 3bc06730: f034 sd a3,96(s0) + 3bc06732: 07143423 sd a7,104(s0) + 3bc06736: 70a2 ld ra,40(sp) + 3bc06738: 7402 ld s0,32(sp) + 3bc0673a: 64e2 ld s1,24(sp) + 3bc0673c: 6942 ld s2,16(sp) + 3bc0673e: 69a2 ld s3,8(sp) + 3bc06740: 6145 addi sp,sp,48 + 3bc06742: 8082 ret + 3bc06744: 6c34 ld a3,88(s0) + 3bc06746: 84b2 mv s1,a2 + 3bc06748: 89ae mv s3,a1 + 3bc0674a: cb29 beqz a4,3bc0679c + 3bc0674c: 00d51563 bne a0,a3,3bc06756 + 3bc06750: 00c807b3 add a5,a6,a2 + 3bc06754: b7f1 j 3bc06720 + 3bc06756: 07043903 ld s2,112(s0) + 3bc0675a: 604c ld a1,128(s0) + 3bc0675c: 7c38 ld a4,120(s0) + 3bc0675e: 40d90933 sub s2,s2,a3 + 3bc06762: 40b805b3 sub a1,a6,a1 + 3bc06766: 4601 li a2,0 + 3bc06768: 00e7ea63 bltu a5,a4,3bc0677c + 3bc0676c: 40e78633 sub a2,a5,a4 + 3bc06770: 00c937b3 sltu a5,s2,a2 + 3bc06774: 0017c793 xori a5,a5,1 + 3bc06778: 40f9160b mveqz a2,s2,a5 + 3bc0677c: 40c907b3 sub a5,s2,a2 + 3bc06780: 8d91 sub a1,a1,a2 + 3bc06782: 95aa add a1,a1,a0 + 3bc06784: 00f68533 add a0,a3,a5 + 3bc06788: af2fa0ef jal ra,3bc00a7a + 3bc0678c: 6050 ld a2,128(s0) + 3bc0678e: 6c3c ld a5,88(s0) + 3bc06790: 94b2 add s1,s1,a2 + 3bc06792: 9926 add s2,s2,s1 + 3bc06794: f03c sd a5,96(s0) + 3bc06796: 07243423 sd s2,104(s0) + 3bc0679a: bf71 j 3bc06736 + 3bc0679c: 02d51e63 bne a0,a3,3bc067d8 + 3bc067a0: 7c14 ld a3,56(s0) + 3bc067a2: 00c80733 add a4,a6,a2 + 3bc067a6: 00e6fe63 bgeu a3,a4,3bc067c2 + 3bc067aa: 40c78933 sub s2,a5,a2 + 3bc067ae: 40f607b3 sub a5,a2,a5 + 3bc067b2: 97c2 add a5,a5,a6 + 3bc067b4: 864a mv a2,s2 + 3bc067b6: 00f505b3 add a1,a0,a5 + 3bc067ba: ac0fa0ef jal ra,3bc00a7a + 3bc067be: 07243423 sd s2,104(s0) + 3bc067c2: 6c28 ld a0,88(s0) + 3bc067c4: 743c ld a5,104(s0) + 3bc067c6: 8626 mv a2,s1 + 3bc067c8: 85ce mv a1,s3 + 3bc067ca: 953e add a0,a0,a5 + 3bc067cc: aaefa0ef jal ra,3bc00a7a + 3bc067d0: 7430 ld a2,104(s0) + 3bc067d2: 94b2 add s1,s1,a2 + 3bc067d4: f424 sd s1,104(s0) + 3bc067d6: b785 j 3bc06736 + 3bc067d8: 8f91 sub a5,a5,a2 + 3bc067da: 0107b733 sltu a4,a5,a6 + 3bc067de: 00174713 xori a4,a4,1 + 3bc067e2: 42e8178b mvnez a5,a6,a4 + 3bc067e6: 40f805b3 sub a1,a6,a5 + 3bc067ea: 863e mv a2,a5 + 3bc067ec: 95aa add a1,a1,a0 + 3bc067ee: 8536 mv a0,a3 + 3bc067f0: 893e mv s2,a5 + 3bc067f2: a88fa0ef jal ra,3bc00a7a + 3bc067f6: 6c28 ld a0,88(s0) + 3bc067f8: 8626 mv a2,s1 + 3bc067fa: 85ce mv a1,s3 + 3bc067fc: 954a add a0,a0,s2 + 3bc067fe: a7cfa0ef jal ra,3bc00a7a + 3bc06802: 6c3c ld a5,88(s0) + 3bc06804: 94ca add s1,s1,s2 + 3bc06806: f03c sd a5,96(s0) + 3bc06808: b7f1 j 3bc067d4 + +000000003bc0680a : + 3bc0680a: 26050463 beqz a0,3bc06a72 + 3bc0680e: 7159 addi sp,sp,-112 + 3bc06810: eca6 sd s1,88(sp) + 3bc06812: 00c50833 add a6,a0,a2 + 3bc06816: 00d588b3 add a7,a1,a3 + 3bc0681a: f486 sd ra,104(sp) + 3bc0681c: f0a2 sd s0,96(sp) + 3bc0681e: e8ca sd s2,80(sp) + 3bc06820: e4ce sd s3,72(sp) + 3bc06822: e0d2 sd s4,64(sp) + 3bc06824: fc56 sd s5,56(sp) + 3bc06826: f85a sd s6,48(sp) + 3bc06828: f45e sd s7,40(sp) + 3bc0682a: f062 sd s8,32(sp) + 3bc0682c: ec66 sd s9,24(sp) + 3bc0682e: e86a sd s10,16(sp) + 3bc06830: e46e sd s11,8(sp) + 3bc06832: ff080393 addi t2,a6,-16 + 3bc06836: fe088493 addi s1,a7,-32 + 3bc0683a: ea9d bnez a3,3bc06870 + 3bc0683c: 4705 li a4,1 + 3bc0683e: 57fd li a5,-1 + 3bc06840: 00e61863 bne a2,a4,3bc06850 + 3bc06844: 00054783 lbu a5,0(a0) + 3bc06848: 00f037b3 snez a5,a5 + 3bc0684c: 0007a78b ext a5,a5,0,0 + 3bc06850: 70a6 ld ra,104(sp) + 3bc06852: 7406 ld s0,96(sp) + 3bc06854: 64e6 ld s1,88(sp) + 3bc06856: 6946 ld s2,80(sp) + 3bc06858: 69a6 ld s3,72(sp) + 3bc0685a: 6a06 ld s4,64(sp) + 3bc0685c: 7ae2 ld s5,56(sp) + 3bc0685e: 7b42 ld s6,48(sp) + 3bc06860: 7ba2 ld s7,40(sp) + 3bc06862: 7c02 ld s8,32(sp) + 3bc06864: 6ce2 ld s9,24(sp) + 3bc06866: 6d42 ld s10,16(sp) + 3bc06868: 6da2 ld s11,8(sp) + 3bc0686a: 853e mv a0,a5 + 3bc0686c: 6165 addi sp,sp,112 + 3bc0686e: 8082 ret + 3bc06870: 57fd li a5,-1 + 3bc06872: de79 beqz a2,3bc06850 + 3bc06874: 87aa mv a5,a0 + 3bc06876: 872e mv a4,a1 + 3bc06878: 4e3d li t3,15 + 3bc0687a: 4e9d li t4,7 + 3bc0687c: ff488f13 addi t5,a7,-12 + 3bc06880: 4941 li s2,16 + 3bc06882: ff988313 addi t1,a7,-7 + 3bc06886: ffb88993 addi s3,a7,-5 + 3bc0688a: 00005a17 auipc s4,0x5 + 3bc0688e: c26a0a13 addi s4,s4,-986 # 3bc0b4b0 + 3bc06892: 00005a97 auipc s5,0x5 + 3bc06896: bfea8a93 addi s5,s5,-1026 # 3bc0b490 + 3bc0689a: ffc80b13 addi s6,a6,-4 + 3bc0689e: 0ff00f93 li t6,255 + 3bc068a2: ff880b93 addi s7,a6,-8 + 3bc068a6: ff180293 addi t0,a6,-15 + 3bc068aa: 5c7d li s8,-1 + 3bc068ac: 9817c68b lbuia a3,(a5),1,0 + 3bc068b0: 0046d413 srli s0,a3,0x4 + 3bc068b4: 0046d61b srliw a2,a3,0x4 + 3bc068b8: 05c40d63 beq s0,t3,3bc06912 + 3bc068bc: 00e4bd33 sltu s10,s1,a4 + 3bc068c0: 001d4d13 xori s10,s10,1 + 3bc068c4: 0ffd7d13 andi s10,s10,255 + 3bc068c8: 00c70433 add s0,a4,a2 + 3bc068cc: 00c78cb3 add s9,a5,a2 + 3bc068d0: 060d0a63 beqz s10,3bc06944 + 3bc068d4: 0677f863 bgeu a5,t2,3bc06944 + 3bc068d8: 6390 ld a2,0(a5) + 3bc068da: e310 sd a2,0(a4) + 3bc068dc: 679c ld a5,8(a5) + 3bc068de: e71c sd a5,8(a4) + 3bc068e0: 87e6 mv a5,s9 + 3bc068e2: b827cc8b lhuia s9,(a5),2,0 + 3bc068e6: 00f6f713 andi a4,a3,15 + 3bc068ea: 86ba mv a3,a4 + 3bc068ec: 41940633 sub a2,s0,s9 + 3bc068f0: 0bc70563 beq a4,t3,3bc0699a + 3bc068f4: 0d9ef363 bgeu t4,s9,3bc069ba + 3bc068f8: 0cb66163 bltu a2,a1,3bc069ba + 3bc068fc: 6214 ld a3,0(a2) + 3bc068fe: 0711 addi a4,a4,4 + 3bc06900: 9722 add a4,a4,s0 + 3bc06902: e014 sd a3,0(s0) + 3bc06904: 6614 ld a3,8(a2) + 3bc06906: e414 sd a3,8(s0) + 3bc06908: 01065683 lhu a3,16(a2) + 3bc0690c: 00d41823 sh a3,16(s0) + 3bc06910: bf71 j 3bc068ac + 3bc06912: 0457fd63 bgeu a5,t0,3bc0696c + 3bc06916: 4601 li a2,0 + 3bc06918: 9817cc8b lbuia s9,(a5),1,0 + 3bc0691c: 00cc863b addw a2,s9,a2 + 3bc06920: 0457f963 bgeu a5,t0,3bc06972 + 3bc06924: fffc8ae3 beq s9,t6,3bc06918 + 3bc06928: 4401 li s0,0 + 3bc0692a: 7c06360b extu a2,a2,31,0 + 3bc0692e: 063d addi a2,a2,15 + 3bc06930: 13840c63 beq s0,s8,3bc06a68 + 3bc06934: 00e60433 add s0,a2,a4 + 3bc06938: 12e46863 bltu s0,a4,3bc06a68 + 3bc0693c: 00f60433 add s0,a2,a5 + 3bc06940: 12f46463 bltu s0,a5,3bc06a68 + 3bc06944: 00c70433 add s0,a4,a2 + 3bc06948: 00c78cb3 add s9,a5,a2 + 3bc0694c: 008f6463 bltu t5,s0,3bc06954 + 3bc06950: 039bf363 bgeu s7,s9,3bc06976 + 3bc06954: 11981a63 bne a6,s9,3bc06a68 + 3bc06958: 1088e863 bltu a7,s0,3bc06a68 + 3bc0695c: 84ae mv s1,a1 + 3bc0695e: 853a mv a0,a4 + 3bc06960: 85be mv a1,a5 + 3bc06962: 978fa0ef jal ra,3bc00ada + 3bc06966: 409407bb subw a5,s0,s1 + 3bc0696a: b5dd j 3bc06850 + 3bc0696c: 547d li s0,-1 + 3bc0696e: 4601 li a2,0 + 3bc06970: bf6d j 3bc0692a + 3bc06972: 5479 li s0,-2 + 3bc06974: bf5d j 3bc0692a + 3bc06976: 4601 li a2,0 + 3bc06978: 60c7cd0b lrd s10,a5,a2,0 + 3bc0697c: 60c75d0b srd s10,a4,a2,0 + 3bc06980: 0621 addi a2,a2,8 + 3bc06982: 00c70d33 add s10,a4,a2 + 3bc06986: fe8d69e3 bltu s10,s0,3bc06978 + 3bc0698a: 87e6 mv a5,s9 + 3bc0698c: b827cc8b lhuia s9,(a5),2,0 + 3bc06990: 8abd andi a3,a3,15 + 3bc06992: 41940633 sub a2,s0,s9 + 3bc06996: 03c69263 bne a3,t3,3bc069ba + 3bc0699a: 4681 li a3,0 + 3bc0699c: 9817cd0b lbuia s10,(a5),1,0 + 3bc069a0: 00dd06bb addw a3,s10,a3 + 3bc069a4: 0d67f263 bgeu a5,s6,3bc06a68 + 3bc069a8: fffd0ae3 beq s10,t6,3bc0699c + 3bc069ac: 7c06b68b extu a3,a3,31,0 + 3bc069b0: 06bd addi a3,a3,15 + 3bc069b2: 00868733 add a4,a3,s0 + 3bc069b6: 0a876963 bltu a4,s0,3bc06a68 + 3bc069ba: 0691 addi a3,a3,4 + 3bc069bc: 0ab66663 bltu a2,a1,3bc06a68 + 3bc069c0: 00d40733 add a4,s0,a3 + 3bc069c4: 079ee463 bltu t4,s9,3bc06a2c + 3bc069c8: 00042023 sw zero,0(s0) + 3bc069cc: 00064d03 lbu s10,0(a2) + 3bc069d0: 01a40023 sb s10,0(s0) + 3bc069d4: 00164d03 lbu s10,1(a2) + 3bc069d8: 01a400a3 sb s10,1(s0) + 3bc069dc: 00264d03 lbu s10,2(a2) + 3bc069e0: 01a40123 sb s10,2(s0) + 3bc069e4: 00364d03 lbu s10,3(a2) + 3bc069e8: 01a401a3 sb s10,3(s0) + 3bc069ec: c59a4d0b lrwu s10,s4,s9,2 + 3bc069f0: 01a60db3 add s11,a2,s10 + 3bc069f4: 41a6460b lrw a2,a2,s10,0 + 3bc069f8: c050 sw a2,4(s0) + 3bc069fa: 459ac60b lrw a2,s5,s9,2 + 3bc069fe: 40cd8633 sub a2,s11,a2 + 3bc06a02: 04ef7463 bgeu t5,a4,3bc06a4a + 3bc06a06: 06e9e163 bltu s3,a4,3bc06a68 + 3bc06a0a: 0421 addi s0,s0,8 + 3bc06a0c: 00647e63 bgeu s0,t1,3bc06a28 + 3bc06a10: 8cb2 mv s9,a2 + 3bc06a12: 86a2 mv a3,s0 + 3bc06a14: 788ccd0b ldia s10,(s9),8,0 + 3bc06a18: 7886dd0b sdia s10,(a3),8,0 + 3bc06a1c: fe66ece3 bltu a3,t1,3bc06a14 + 3bc06a20: 40830433 sub s0,t1,s0 + 3bc06a24: 9622 add a2,a2,s0 + 3bc06a26: 841a mv s0,t1 + 3bc06a28: 4681 li a3,0 + 3bc06a2a: a819 j 3bc06a40 + 3bc06a2c: 78864c8b ldia s9,(a2),8,0 + 3bc06a30: 01943023 sd s9,0(s0) + 3bc06a34: b7f9 j 3bc06a02 + 3bc06a36: 80d64c8b lrbu s9,a2,a3,0 + 3bc06a3a: 00d45c8b srb s9,s0,a3,0 + 3bc06a3e: 0685 addi a3,a3,1 + 3bc06a40: 00d40cb3 add s9,s0,a3 + 3bc06a44: feece9e3 bltu s9,a4,3bc06a36 + 3bc06a48: b595 j 3bc068ac + 3bc06a4a: 00063c83 ld s9,0(a2) + 3bc06a4e: 01943423 sd s9,8(s0) + 3bc06a52: e4d97de3 bgeu s2,a3,3bc068ac + 3bc06a56: 0441 addi s0,s0,16 + 3bc06a58: 0621 addi a2,a2,8 + 3bc06a5a: 7886468b ldia a3,(a2),8,0 + 3bc06a5e: 7884568b sdia a3,(s0),8,0 + 3bc06a62: fee46ce3 bltu s0,a4,3bc06a5a + 3bc06a66: b599 j 3bc068ac + 3bc06a68: 8f89 sub a5,a5,a0 + 3bc06a6a: fff7c793 not a5,a5 + 3bc06a6e: 2781 sext.w a5,a5 + 3bc06a70: b3c5 j 3bc06850 + 3bc06a72: 57fd li a5,-1 + 3bc06a74: 853e mv a0,a5 + 3bc06a76: 8082 ret + +000000003bc06a78 : + 3bc06a78: 77c1 lui a5,0xffff0 + 3bc06a7a: 7119 addi sp,sp,-128 + 3bc06a7c: 97ae add a5,a5,a1 + 3bc06a7e: fc86 sd ra,120(sp) + 3bc06a80: f8a2 sd s0,112(sp) + 3bc06a82: f4a6 sd s1,104(sp) + 3bc06a84: f0ca sd s2,96(sp) + 3bc06a86: ecce sd s3,88(sp) + 3bc06a88: e8d2 sd s4,80(sp) + 3bc06a8a: e4d6 sd s5,72(sp) + 3bc06a8c: e0da sd s6,64(sp) + 3bc06a8e: fc5e sd s7,56(sp) + 3bc06a90: f862 sd s8,48(sp) + 3bc06a92: f466 sd s9,40(sp) + 3bc06a94: f06a sd s10,32(sp) + 3bc06a96: ec6e sd s11,24(sp) + 3bc06a98: e43e sd a5,8(sp) + 3bc06a9a: 24050263 beqz a0,3bc06cde + 3bc06a9e: 00c50333 add t1,a0,a2 + 3bc06aa2: 00d58e33 add t3,a1,a3 + 3bc06aa6: 88aa mv a7,a0 + 3bc06aa8: ff030913 addi s2,t1,-16 + 3bc06aac: fe0e0993 addi s3,t3,-32 + 3bc06ab0: ea95 bnez a3,3bc06ae4 + 3bc06ab2: 4785 li a5,1 + 3bc06ab4: 557d li a0,-1 + 3bc06ab6: 00f61863 bne a2,a5,3bc06ac6 + 3bc06aba: 0008c503 lbu a0,0(a7) + 3bc06abe: 00a03533 snez a0,a0 + 3bc06ac2: 0005250b ext a0,a0,0,0 + 3bc06ac6: 70e6 ld ra,120(sp) + 3bc06ac8: 7446 ld s0,112(sp) + 3bc06aca: 74a6 ld s1,104(sp) + 3bc06acc: 7906 ld s2,96(sp) + 3bc06ace: 69e6 ld s3,88(sp) + 3bc06ad0: 6a46 ld s4,80(sp) + 3bc06ad2: 6aa6 ld s5,72(sp) + 3bc06ad4: 6b06 ld s6,64(sp) + 3bc06ad6: 7be2 ld s7,56(sp) + 3bc06ad8: 7c42 ld s8,48(sp) + 3bc06ada: 7ca2 ld s9,40(sp) + 3bc06adc: 7d02 ld s10,32(sp) + 3bc06ade: 6de2 ld s11,24(sp) + 3bc06ae0: 6109 addi sp,sp,128 + 3bc06ae2: 8082 ret + 3bc06ae4: 557d li a0,-1 + 3bc06ae6: d265 beqz a2,3bc06ac6 + 3bc06ae8: 87c6 mv a5,a7 + 3bc06aea: 882e mv a6,a1 + 3bc06aec: 4f3d li t5,15 + 3bc06aee: 4f9d li t6,7 + 3bc06af0: ff4e0293 addi t0,t3,-12 + 3bc06af4: 4a41 li s4,16 + 3bc06af6: ff9e0e93 addi t4,t3,-7 + 3bc06afa: ffbe0a93 addi s5,t3,-5 + 3bc06afe: 00005b17 auipc s6,0x5 + 3bc06b02: 9b2b0b13 addi s6,s6,-1614 # 3bc0b4b0 + 3bc06b06: 00005b97 auipc s7,0x5 + 3bc06b0a: 98ab8b93 addi s7,s7,-1654 # 3bc0b490 + 3bc06b0e: ffc30c13 addi s8,t1,-4 + 3bc06b12: 0ff00393 li t2,255 + 3bc06b16: ff830c93 addi s9,t1,-8 + 3bc06b1a: ff130493 addi s1,t1,-15 + 3bc06b1e: 5d7d li s10,-1 + 3bc06b20: 9817c68b lbuia a3,(a5),1,0 + 3bc06b24: 0046d713 srli a4,a3,0x4 + 3bc06b28: 0046d61b srliw a2,a3,0x4 + 3bc06b2c: 05e70b63 beq a4,t5,3bc06b82 + 3bc06b30: 0109b533 sltu a0,s3,a6 + 3bc06b34: 00154513 xori a0,a0,1 + 3bc06b38: 0ff57513 andi a0,a0,255 + 3bc06b3c: 00c80433 add s0,a6,a2 + 3bc06b40: 00c78733 add a4,a5,a2 + 3bc06b44: c53d beqz a0,3bc06bb2 + 3bc06b46: 0727f663 bgeu a5,s2,3bc06bb2 + 3bc06b4a: 6390 ld a2,0(a5) + 3bc06b4c: 8abd andi a3,a3,15 + 3bc06b4e: 00c83023 sd a2,0(a6) + 3bc06b52: 679c ld a5,8(a5) + 3bc06b54: 00f83423 sd a5,8(a6) + 3bc06b58: 87ba mv a5,a4 + 3bc06b5a: b827c60b lhuia a2,(a5),2,0 + 3bc06b5e: 40c40733 sub a4,s0,a2 + 3bc06b62: 0be68363 beq a3,t5,3bc06c08 + 3bc06b66: 0ccff163 bgeu t6,a2,3bc06c28 + 3bc06b6a: 6310 ld a2,0(a4) + 3bc06b6c: 0691 addi a3,a3,4 + 3bc06b6e: 00d40833 add a6,s0,a3 + 3bc06b72: e010 sd a2,0(s0) + 3bc06b74: 6710 ld a2,8(a4) + 3bc06b76: e410 sd a2,8(s0) + 3bc06b78: 01075703 lhu a4,16(a4) # 1000010 <__BSS_SIZE__+0xffa400> + 3bc06b7c: 00e41823 sh a4,16(s0) + 3bc06b80: b745 j 3bc06b20 + 3bc06b82: 0497fc63 bgeu a5,s1,3bc06bda + 3bc06b86: 4601 li a2,0 + 3bc06b88: 9817c50b lbuia a0,(a5),1,0 + 3bc06b8c: 9e29 addw a2,a2,a0 + 3bc06b8e: 0497f963 bgeu a5,s1,3bc06be0 + 3bc06b92: fe750be3 beq a0,t2,3bc06b88 + 3bc06b96: 4701 li a4,0 + 3bc06b98: 7c06360b extu a2,a2,31,0 + 3bc06b9c: 063d addi a2,a2,15 + 3bc06b9e: 13a70a63 beq a4,s10,3bc06cd2 + 3bc06ba2: 01060733 add a4,a2,a6 + 3bc06ba6: 13076663 bltu a4,a6,3bc06cd2 + 3bc06baa: 00f60733 add a4,a2,a5 + 3bc06bae: 12f76263 bltu a4,a5,3bc06cd2 + 3bc06bb2: 00c80433 add s0,a6,a2 + 3bc06bb6: 00c78533 add a0,a5,a2 + 3bc06bba: 0082e463 bltu t0,s0,3bc06bc2 + 3bc06bbe: 02acf363 bgeu s9,a0,3bc06be4 + 3bc06bc2: 10a31863 bne t1,a0,3bc06cd2 + 3bc06bc6: 108e6663 bltu t3,s0,3bc06cd2 + 3bc06bca: 84ae mv s1,a1 + 3bc06bcc: 8542 mv a0,a6 + 3bc06bce: 85be mv a1,a5 + 3bc06bd0: f0bf90ef jal ra,3bc00ada + 3bc06bd4: 4094053b subw a0,s0,s1 + 3bc06bd8: b5fd j 3bc06ac6 + 3bc06bda: 577d li a4,-1 + 3bc06bdc: 4601 li a2,0 + 3bc06bde: bf6d j 3bc06b98 + 3bc06be0: 5779 li a4,-2 + 3bc06be2: bf5d j 3bc06b98 + 3bc06be4: 4701 li a4,0 + 3bc06be6: 60e7c60b lrd a2,a5,a4,0 + 3bc06bea: 60e8560b srd a2,a6,a4,0 + 3bc06bee: 0721 addi a4,a4,8 + 3bc06bf0: 00e80633 add a2,a6,a4 + 3bc06bf4: fe8669e3 bltu a2,s0,3bc06be6 + 3bc06bf8: 87aa mv a5,a0 + 3bc06bfa: b827c60b lhuia a2,(a5),2,0 + 3bc06bfe: 8abd andi a3,a3,15 + 3bc06c00: 40c40733 sub a4,s0,a2 + 3bc06c04: 03e69263 bne a3,t5,3bc06c28 + 3bc06c08: 4681 li a3,0 + 3bc06c0a: 9817c80b lbuia a6,(a5),1,0 + 3bc06c0e: 00d806bb addw a3,a6,a3 + 3bc06c12: 0d87f063 bgeu a5,s8,3bc06cd2 + 3bc06c16: fe780ae3 beq a6,t2,3bc06c0a + 3bc06c1a: 7c06b68b extu a3,a3,31,0 + 3bc06c1e: 06bd addi a3,a3,15 + 3bc06c20: 00868533 add a0,a3,s0 + 3bc06c24: 0a856763 bltu a0,s0,3bc06cd2 + 3bc06c28: 6522 ld a0,8(sp) + 3bc06c2a: 0691 addi a3,a3,4 + 3bc06c2c: 0aa76363 bltu a4,a0,3bc06cd2 + 3bc06c30: 00d40833 add a6,s0,a3 + 3bc06c34: 06cfe463 bltu t6,a2,3bc06c9c + 3bc06c38: 00042023 sw zero,0(s0) + 3bc06c3c: 00074503 lbu a0,0(a4) + 3bc06c40: 00a40023 sb a0,0(s0) + 3bc06c44: 00174503 lbu a0,1(a4) + 3bc06c48: 00a400a3 sb a0,1(s0) + 3bc06c4c: 00274503 lbu a0,2(a4) + 3bc06c50: 00a40123 sb a0,2(s0) + 3bc06c54: 00374503 lbu a0,3(a4) + 3bc06c58: 00a401a3 sb a0,3(s0) + 3bc06c5c: c4cb450b lrwu a0,s6,a2,2 + 3bc06c60: 00a70db3 add s11,a4,a0 + 3bc06c64: 40a7470b lrw a4,a4,a0,0 + 3bc06c68: c058 sw a4,4(s0) + 3bc06c6a: 44cbc70b lrw a4,s7,a2,2 + 3bc06c6e: 40ed8733 sub a4,s11,a4 + 3bc06c72: 0502f363 bgeu t0,a6,3bc06cb8 + 3bc06c76: 050aee63 bltu s5,a6,3bc06cd2 + 3bc06c7a: 0421 addi s0,s0,8 + 3bc06c7c: 01d47e63 bgeu s0,t4,3bc06c98 + 3bc06c80: 863a mv a2,a4 + 3bc06c82: 86a2 mv a3,s0 + 3bc06c84: 7886450b ldia a0,(a2),8,0 + 3bc06c88: 7886d50b sdia a0,(a3),8,0 + 3bc06c8c: ffd6ece3 bltu a3,t4,3bc06c84 + 3bc06c90: 408e8433 sub s0,t4,s0 + 3bc06c94: 9722 add a4,a4,s0 + 3bc06c96: 8476 mv s0,t4 + 3bc06c98: 4681 li a3,0 + 3bc06c9a: a811 j 3bc06cae + 3bc06c9c: 7887460b ldia a2,(a4),8,0 + 3bc06ca0: e010 sd a2,0(s0) + 3bc06ca2: bfc1 j 3bc06c72 + 3bc06ca4: 80d7460b lrbu a2,a4,a3,0 + 3bc06ca8: 00d4560b srb a2,s0,a3,0 + 3bc06cac: 0685 addi a3,a3,1 + 3bc06cae: 00d40633 add a2,s0,a3 + 3bc06cb2: ff0669e3 bltu a2,a6,3bc06ca4 + 3bc06cb6: b5ad j 3bc06b20 + 3bc06cb8: 6310 ld a2,0(a4) + 3bc06cba: e410 sd a2,8(s0) + 3bc06cbc: e6da72e3 bgeu s4,a3,3bc06b20 + 3bc06cc0: 0441 addi s0,s0,16 + 3bc06cc2: 0721 addi a4,a4,8 + 3bc06cc4: 7887468b ldia a3,(a4),8,0 + 3bc06cc8: 7884568b sdia a3,(s0),8,0 + 3bc06ccc: ff046ce3 bltu s0,a6,3bc06cc4 + 3bc06cd0: bd81 j 3bc06b20 + 3bc06cd2: 41178533 sub a0,a5,a7 + 3bc06cd6: fff54513 not a0,a0 + 3bc06cda: 2501 sext.w a0,a0 + 3bc06cdc: b3ed j 3bc06ac6 + 3bc06cde: 557d li a0,-1 + 3bc06ce0: b3dd j 3bc06ac6 + +000000003bc06ce2 : + 3bc06ce2: 30050963 beqz a0,3bc06ff4 + 3bc06ce6: 7135 addi sp,sp,-160 + 3bc06ce8: e526 sd s1,136(sp) + 3bc06cea: fcce sd s3,120(sp) + 3bc06cec: f0da sd s6,96(sp) + 3bc06cee: ecde sd s7,88(sp) + 3bc06cf0: e8e2 sd s8,80(sp) + 3bc06cf2: e0ea sd s10,64(sp) + 3bc06cf4: ed06 sd ra,152(sp) + 3bc06cf6: e922 sd s0,144(sp) + 3bc06cf8: e14a sd s2,128(sp) + 3bc06cfa: f8d2 sd s4,112(sp) + 3bc06cfc: f4d6 sd s5,104(sp) + 3bc06cfe: e4e6 sd s9,72(sp) + 3bc06d00: fc6e sd s11,56(sp) + 3bc06d02: 8b2a mv s6,a0 + 3bc06d04: 8d2e mv s10,a1 + 3bc06d06: 84ba mv s1,a4 + 3bc06d08: 89be mv s3,a5 + 3bc06d0a: 00c50bb3 add s7,a0,a2 + 3bc06d0e: 00d58c33 add s8,a1,a3 + 3bc06d12: c319 beqz a4,3bc06d18 + 3bc06d14: 00f704b3 add s1,a4,a5 + 3bc06d18: ff0b8793 addi a5,s7,-16 + 3bc06d1c: e03e sd a5,0(sp) + 3bc06d1e: fe0c0793 addi a5,s8,-32 + 3bc06d22: e43e sd a5,8(sp) + 3bc06d24: ea95 bnez a3,3bc06d58 + 3bc06d26: 4785 li a5,1 + 3bc06d28: 557d li a0,-1 + 3bc06d2a: 00f61863 bne a2,a5,3bc06d3a + 3bc06d2e: 000b4503 lbu a0,0(s6) + 3bc06d32: 00a03533 snez a0,a0 + 3bc06d36: 0005250b ext a0,a0,0,0 + 3bc06d3a: 60ea ld ra,152(sp) + 3bc06d3c: 644a ld s0,144(sp) + 3bc06d3e: 64aa ld s1,136(sp) + 3bc06d40: 690a ld s2,128(sp) + 3bc06d42: 79e6 ld s3,120(sp) + 3bc06d44: 7a46 ld s4,112(sp) + 3bc06d46: 7aa6 ld s5,104(sp) + 3bc06d48: 7b06 ld s6,96(sp) + 3bc06d4a: 6be6 ld s7,88(sp) + 3bc06d4c: 6c46 ld s8,80(sp) + 3bc06d4e: 6ca6 ld s9,72(sp) + 3bc06d50: 6d06 ld s10,64(sp) + 3bc06d52: 7de2 ld s11,56(sp) + 3bc06d54: 610d addi sp,sp,160 + 3bc06d56: 8082 ret + 3bc06d58: 557d li a0,-1 + 3bc06d5a: d265 beqz a2,3bc06d3a + 3bc06d5c: ffcb8793 addi a5,s7,-4 + 3bc06d60: e83e sd a5,16(sp) + 3bc06d62: ff8b8793 addi a5,s7,-8 + 3bc06d66: 845a mv s0,s6 + 3bc06d68: 8cea mv s9,s10 + 3bc06d6a: ff4c0a13 addi s4,s8,-12 + 3bc06d6e: ff9c0913 addi s2,s8,-7 + 3bc06d72: ffbc0a93 addi s5,s8,-5 + 3bc06d76: ec3e sd a5,24(sp) + 3bc06d78: 9814468b lbuia a3,(s0),1,0 + 3bc06d7c: 4ebd li t4,15 + 3bc06d7e: 0046d793 srli a5,a3,0x4 + 3bc06d82: 0046d61b srliw a2,a3,0x4 + 3bc06d86: 07d78363 beq a5,t4,3bc06dec + 3bc06d8a: 67a2 ld a5,8(sp) + 3bc06d8c: 00cc8db3 add s11,s9,a2 + 3bc06d90: 00c40533 add a0,s0,a2 + 3bc06d94: 0197b5b3 sltu a1,a5,s9 + 3bc06d98: 0015c593 xori a1,a1,1 + 3bc06d9c: 0ff5f593 andi a1,a1,255 + 3bc06da0: c5c1 beqz a1,3bc06e28 + 3bc06da2: 6782 ld a5,0(sp) + 3bc06da4: 08f47263 bgeu s0,a5,3bc06e28 + 3bc06da8: 6010 ld a2,0(s0) + 3bc06daa: 8abd andi a3,a3,15 + 3bc06dac: 00ccb023 sd a2,0(s9) + 3bc06db0: 6410 ld a2,8(s0) + 3bc06db2: 842a mv s0,a0 + 3bc06db4: 00ccb423 sd a2,8(s9) + 3bc06db8: b824458b lhuia a1,(s0),2,0 + 3bc06dbc: 8636 mv a2,a3 + 3bc06dbe: 40bd8533 sub a0,s11,a1 + 3bc06dc2: 0dd68063 beq a3,t4,3bc06e82 + 3bc06dc6: 471d li a4,7 + 3bc06dc8: 0eb77063 bgeu a4,a1,3bc06ea8 + 3bc06dcc: 0da56e63 bltu a0,s10,3bc06ea8 + 3bc06dd0: 6118 ld a4,0(a0) + 3bc06dd2: 0691 addi a3,a3,4 + 3bc06dd4: 00dd8cb3 add s9,s11,a3 + 3bc06dd8: 00edb023 sd a4,0(s11) + 3bc06ddc: 6518 ld a4,8(a0) + 3bc06dde: 00edb423 sd a4,8(s11) + 3bc06de2: 01055703 lhu a4,16(a0) + 3bc06de6: 00ed9823 sh a4,16(s11) + 3bc06dea: b779 j 3bc06d78 + 3bc06dec: ff1b8793 addi a5,s7,-15 + 3bc06df0: 06f47063 bgeu s0,a5,3bc06e50 + 3bc06df4: 4601 li a2,0 + 3bc06df6: 0ff00513 li a0,255 + 3bc06dfa: 98144e8b lbuia t4,(s0),1,0 + 3bc06dfe: 00ce863b addw a2,t4,a2 + 3bc06e02: 04f47a63 bgeu s0,a5,3bc06e56 + 3bc06e06: feae8ae3 beq t4,a0,3bc06dfa + 3bc06e0a: 4781 li a5,0 + 3bc06e0c: 7c06360b extu a2,a2,31,0 + 3bc06e10: 55fd li a1,-1 + 3bc06e12: 063d addi a2,a2,15 + 3bc06e14: 1cb78a63 beq a5,a1,3bc06fe8 + 3bc06e18: 019607b3 add a5,a2,s9 + 3bc06e1c: 1d97e663 bltu a5,s9,3bc06fe8 + 3bc06e20: 008607b3 add a5,a2,s0 + 3bc06e24: 1c87e263 bltu a5,s0,3bc06fe8 + 3bc06e28: 00cc8db3 add s11,s9,a2 + 3bc06e2c: 00c405b3 add a1,s0,a2 + 3bc06e30: 01ba6563 bltu s4,s11,3bc06e3a + 3bc06e34: 67e2 ld a5,24(sp) + 3bc06e36: 02b7f263 bgeu a5,a1,3bc06e5a + 3bc06e3a: 1abb9763 bne s7,a1,3bc06fe8 + 3bc06e3e: 1bbc6563 bltu s8,s11,3bc06fe8 + 3bc06e42: 85a2 mv a1,s0 + 3bc06e44: 8566 mv a0,s9 + 3bc06e46: c95f90ef jal ra,3bc00ada + 3bc06e4a: 41ad853b subw a0,s11,s10 + 3bc06e4e: b5f5 j 3bc06d3a + 3bc06e50: 57fd li a5,-1 + 3bc06e52: 4601 li a2,0 + 3bc06e54: bf65 j 3bc06e0c + 3bc06e56: 57f9 li a5,-2 + 3bc06e58: bf55 j 3bc06e0c + 3bc06e5a: 4601 li a2,0 + 3bc06e5c: 60c4450b lrd a0,s0,a2,0 + 3bc06e60: 60ccd50b srd a0,s9,a2,0 + 3bc06e64: 0621 addi a2,a2,8 + 3bc06e66: 00cc8533 add a0,s9,a2 + 3bc06e6a: ffb569e3 bltu a0,s11,3bc06e5c + 3bc06e6e: 842e mv s0,a1 + 3bc06e70: b824458b lhuia a1,(s0),2,0 + 3bc06e74: 00f6f613 andi a2,a3,15 + 3bc06e78: 473d li a4,15 + 3bc06e7a: 40bd8533 sub a0,s11,a1 + 3bc06e7e: 02e61563 bne a2,a4,3bc06ea8 + 3bc06e82: 4601 li a2,0 + 3bc06e84: 0ff00693 li a3,255 + 3bc06e88: 98144e8b lbuia t4,(s0),1,0 + 3bc06e8c: 67c2 ld a5,16(sp) + 3bc06e8e: 00ce863b addw a2,t4,a2 + 3bc06e92: 14f47b63 bgeu s0,a5,3bc06fe8 + 3bc06e96: fede89e3 beq t4,a3,3bc06e88 + 3bc06e9a: 7c06360b extu a2,a2,31,0 + 3bc06e9e: 063d addi a2,a2,15 + 3bc06ea0: 01b60733 add a4,a2,s11 + 3bc06ea4: 15b76263 bltu a4,s11,3bc06fe8 + 3bc06ea8: 6741 lui a4,0x10 + 3bc06eaa: 0611 addi a2,a2,4 + 3bc06eac: 00e9f663 bgeu s3,a4,3bc06eb8 + 3bc06eb0: 01350733 add a4,a0,s3 + 3bc06eb4: 13a76a63 bltu a4,s10,3bc06fe8 + 3bc06eb8: 00cd8cb3 add s9,s11,a2 + 3bc06ebc: 07a57663 bgeu a0,s10,3bc06f28 + 3bc06ec0: 139ae463 bltu s5,s9,3bc06fe8 + 3bc06ec4: 40ad06b3 sub a3,s10,a0 + 3bc06ec8: 40d485b3 sub a1,s1,a3 + 3bc06ecc: 00c6e663 bltu a3,a2,3bc06ed8 + 3bc06ed0: 856e mv a0,s11 + 3bc06ed2: c09f90ef jal ra,3bc00ada + 3bc06ed6: b54d j 3bc06d78 + 3bc06ed8: 40d60eb3 sub t4,a2,a3 + 3bc06edc: 856e mv a0,s11 + 3bc06ede: 8636 mv a2,a3 + 3bc06ee0: f476 sd t4,40(sp) + 3bc06ee2: f036 sd a3,32(sp) + 3bc06ee4: b97f90ef jal ra,3bc00a7a + 3bc06ee8: 7682 ld a3,32(sp) + 3bc06eea: 7ea2 ld t4,40(sp) + 3bc06eec: 00dd8533 add a0,s11,a3 + 3bc06ef0: 41a507b3 sub a5,a0,s10 + 3bc06ef4: 03d7f563 bgeu a5,t4,3bc06f1e + 3bc06ef8: 4781 li a5,0 + 3bc06efa: a031 j 3bc06f06 + 3bc06efc: 80fd468b lrbu a3,s10,a5,0 + 3bc06f00: 00f5568b srb a3,a0,a5,0 + 3bc06f04: 0785 addi a5,a5,1 + 3bc06f06: 00f506b3 add a3,a0,a5 + 3bc06f0a: ff96e9e3 bltu a3,s9,3bc06efc + 3bc06f0e: 00acb733 sltu a4,s9,a0 + 3bc06f12: 8676 mv a2,t4 + 3bc06f14: 42e0160b mvnez a2,zero,a4 + 3bc06f18: 00c50cb3 add s9,a0,a2 + 3bc06f1c: bdb1 j 3bc06d78 + 3bc06f1e: 8676 mv a2,t4 + 3bc06f20: 85ea mv a1,s10 + 3bc06f22: b59f90ef jal ra,3bc00a7a + 3bc06f26: bd89 j 3bc06d78 + 3bc06f28: 469d li a3,7 + 3bc06f2a: 06b6ee63 bltu a3,a1,3bc06fa6 + 3bc06f2e: 000da023 sw zero,0(s11) + 3bc06f32: 00054683 lbu a3,0(a0) + 3bc06f36: 00004797 auipc a5,0x4 + 3bc06f3a: 57a78793 addi a5,a5,1402 # 3bc0b4b0 + 3bc06f3e: c4b7ce8b lrwu t4,a5,a1,2 + 3bc06f42: 00dd8023 sb a3,0(s11) + 3bc06f46: 00154683 lbu a3,1(a0) + 3bc06f4a: 00004797 auipc a5,0x4 + 3bc06f4e: 54678793 addi a5,a5,1350 # 3bc0b490 + 3bc06f52: 01d50f33 add t5,a0,t4 + 3bc06f56: 00dd80a3 sb a3,1(s11) + 3bc06f5a: 00254683 lbu a3,2(a0) + 3bc06f5e: 00dd8123 sb a3,2(s11) + 3bc06f62: 00354683 lbu a3,3(a0) + 3bc06f66: 00dd81a3 sb a3,3(s11) + 3bc06f6a: 41d5468b lrw a3,a0,t4,0 + 3bc06f6e: 00dda223 sw a3,4(s11) + 3bc06f72: 44b7c68b lrw a3,a5,a1,2 + 3bc06f76: 40df06b3 sub a3,t5,a3 + 3bc06f7a: 059a7663 bgeu s4,s9,3bc06fc6 + 3bc06f7e: 079ae563 bltu s5,s9,3bc06fe8 + 3bc06f82: 008d8513 addi a0,s11,8 + 3bc06f86: 01257e63 bgeu a0,s2,3bc06fa2 + 3bc06f8a: 8636 mv a2,a3 + 3bc06f8c: 87aa mv a5,a0 + 3bc06f8e: 7886458b ldia a1,(a2),8,0 + 3bc06f92: 7887d58b sdia a1,(a5),8,0 + 3bc06f96: ff27ece3 bltu a5,s2,3bc06f8e + 3bc06f9a: 40a907b3 sub a5,s2,a0 + 3bc06f9e: 96be add a3,a3,a5 + 3bc06fa0: 854a mv a0,s2 + 3bc06fa2: 4781 li a5,0 + 3bc06fa4: a821 j 3bc06fbc + 3bc06fa6: 86aa mv a3,a0 + 3bc06fa8: 7886c58b ldia a1,(a3),8,0 + 3bc06fac: 00bdb023 sd a1,0(s11) + 3bc06fb0: b7e9 j 3bc06f7a + 3bc06fb2: 80f6c60b lrbu a2,a3,a5,0 + 3bc06fb6: 00f5560b srb a2,a0,a5,0 + 3bc06fba: 0785 addi a5,a5,1 + 3bc06fbc: 00f50633 add a2,a0,a5 + 3bc06fc0: ff9669e3 bltu a2,s9,3bc06fb2 + 3bc06fc4: bb55 j 3bc06d78 + 3bc06fc6: 628c ld a1,0(a3) + 3bc06fc8: 00bdb423 sd a1,8(s11) + 3bc06fcc: 45c1 li a1,16 + 3bc06fce: dac5f5e3 bgeu a1,a2,3bc06d78 + 3bc06fd2: 010d8513 addi a0,s11,16 + 3bc06fd6: 00868613 addi a2,a3,8 + 3bc06fda: 7886478b ldia a5,(a2),8,0 + 3bc06fde: 7885578b sdia a5,(a0),8,0 + 3bc06fe2: ff956ce3 bltu a0,s9,3bc06fda + 3bc06fe6: bb49 j 3bc06d78 + 3bc06fe8: 41640533 sub a0,s0,s6 + 3bc06fec: fff54513 not a0,a0 + 3bc06ff0: 2501 sext.w a0,a0 + 3bc06ff2: b3a1 j 3bc06d3a + 3bc06ff4: 557d li a0,-1 + 3bc06ff6: 8082 ret + +000000003bc06ff8 : + 3bc06ff8: 883e mv a6,a5 + 3bc06ffa: e399 bnez a5,3bc07000 + 3bc06ffc: 80fff06f j 3bc0680a + 3bc07000: 00f708b3 add a7,a4,a5 + 3bc07004: 01159b63 bne a1,a7,3bc0701a + 3bc07008: 67c1 lui a5,0x10 + 3bc0700a: 17f9 addi a5,a5,-2 + 3bc0700c: 0107d463 bge a5,a6,3bc07014 + 3bc07010: a69ff06f j 3bc06a78 + 3bc07014: 8742 mv a4,a6 + 3bc07016: c6eff06f j 3bc06484 + 3bc0701a: cc9ff06f j 3bc06ce2 + +000000003bc0701e : + 3bc0701e: fed53513 sltiu a0,a0,-19 + 3bc07022: 00154513 xori a0,a0,1 + 3bc07026: 2501 sext.w a0,a0 + 3bc07028: 8082 ret + +000000003bc0702a : + 3bc0702a: e111 bnez a0,3bc0702e + 3bc0702c: 4511 li a0,4 + 3bc0702e: ffc5069b addiw a3,a0,-4 + 3bc07032: 470d li a4,3 + 3bc07034: 5579 li a0,-2 + 3bc07036: 00d76863 bltu a4,a3,3bc07046 + 3bc0703a: 00004717 auipc a4,0x4 + 3bc0703e: 43670713 addi a4,a4,1078 # 3bc0b470 + 3bc07042: 76d7450b lurd a0,a4,a3,3 + 3bc07046: 8082 ret + +000000003bc07048 : + 3bc07048: 715d addi sp,sp,-80 + 3bc0704a: f84a sd s2,48(sp) + 3bc0704c: e486 sd ra,72(sp) + 3bc0704e: e0a2 sd s0,64(sp) + 3bc07050: fc26 sd s1,56(sp) + 3bc07052: f44e sd s3,40(sp) + 3bc07054: f052 sd s4,32(sp) + 3bc07056: ec56 sd s5,24(sp) + 3bc07058: e85a sd s6,16(sp) + 3bc0705a: e45e sd s7,8(sp) + 3bc0705c: e062 sd s8,0(sp) + 3bc0705e: 4799 li a5,6 + 3bc07060: 5951 li s2,-12 + 3bc07062: 04c7f663 bgeu a5,a2,3bc070ae + 3bc07066: 84ae mv s1,a1 + 3bc07068: 8932 mv s2,a2 + 3bc0706a: 4581 li a1,0 + 3bc0706c: 02000613 li a2,32 + 3bc07070: 842a mv s0,a0 + 3bc07072: 9aff90ef jal ra,3bc00a20 + 3bc07076: 8526 mv a0,s1 + 3bc07078: be8ff0ef jal ra,3bc06460 + 3bc0707c: 2501 sext.w a0,a0 + 3bc0707e: 184d37b7 lui a5,0x184d3 + 3bc07082: ff057713 andi a4,a0,-16 + 3bc07086: a5078793 addi a5,a5,-1456 # 184d2a50 + 3bc0708a: 02f71f63 bne a4,a5,3bc070c8 + 3bc0708e: 4785 li a5,1 + 3bc07090: c45c sw a5,12(s0) + 3bc07092: 0e840793 addi a5,s0,232 + 3bc07096: 00f49963 bne s1,a5,3bc070a8 + 3bc0709a: 47a1 li a5,8 + 3bc0709c: e83c sd a5,80(s0) + 3bc0709e: 05243423 sd s2,72(s0) + 3bc070a2: 47b5 li a5,13 + 3bc070a4: d05c sw a5,36(s0) + 3bc070a6: a021 j 3bc070ae + 3bc070a8: 47b1 li a5,12 + 3bc070aa: d05c sw a5,36(s0) + 3bc070ac: 4911 li s2,4 + 3bc070ae: 60a6 ld ra,72(sp) + 3bc070b0: 6406 ld s0,64(sp) + 3bc070b2: 74e2 ld s1,56(sp) + 3bc070b4: 79a2 ld s3,40(sp) + 3bc070b6: 7a02 ld s4,32(sp) + 3bc070b8: 6ae2 ld s5,24(sp) + 3bc070ba: 6b42 ld s6,16(sp) + 3bc070bc: 6ba2 ld s7,8(sp) + 3bc070be: 6c02 ld s8,0(sp) + 3bc070c0: 854a mv a0,s2 + 3bc070c2: 7942 ld s2,48(sp) + 3bc070c4: 6161 addi sp,sp,80 + 3bc070c6: 8082 ret + 3bc070c8: 184d27b7 lui a5,0x184d2 + 3bc070cc: 20478793 addi a5,a5,516 # 184d2204 + 3bc070d0: 10f51863 bne a0,a5,3bc071e0 + 3bc070d4: 00042623 sw zero,12(s0) + 3bc070d8: 0044c783 lbu a5,4(s1) + 3bc070dc: 0417b70b extu a4,a5,1,1 + 3bc070e0: 00078b1b sext.w s6,a5 + 3bc070e4: 0067d693 srli a3,a5,0x6 + 3bc070e8: 0e071e63 bnez a4,3bc071e4 + 3bc070ec: 4705 li a4,1 + 3bc070ee: 0ee69d63 bne a3,a4,3bc071e8 + 3bc070f2: 0c3b3c0b extu s8,s6,3,3 + 3bc070f6: 49bd li s3,15 + 3bc070f8: 000c1363 bnez s8,3bc070fe + 3bc070fc: 499d li s3,7 + 3bc070fe: 0017fa13 andi s4,a5,1 + 3bc07102: 0549998b addsl s3,s3,s4,2 + 3bc07106: 03397063 bgeu s2,s3,3bc07126 + 3bc0710a: 0e840513 addi a0,s0,232 + 3bc0710e: 00a48663 beq s1,a0,3bc0711a + 3bc07112: 864a mv a2,s2 + 3bc07114: 85a6 mv a1,s1 + 3bc07116: 965f90ef jal ra,3bc00a7a + 3bc0711a: 05243423 sd s2,72(s0) + 3bc0711e: 05343823 sd s3,80(s0) + 3bc07122: 4785 li a5,1 + 3bc07124: b741 j 3bc070a4 + 3bc07126: 0054c783 lbu a5,5(s1) + 3bc0712a: 5961 li s2,-8 + 3bc0712c: fc77b70b extu a4,a5,63,7 + 3bc07130: 8c47bb8b extu s7,a5,35,4 + 3bc07134: ff2d bnez a4,3bc070ae + 3bc07136: 004bf713 andi a4,s7,4 + 3bc0713a: 5979 li s2,-2 + 3bc0713c: db2d beqz a4,3bc070ae + 3bc0713e: 8bbd andi a5,a5,15 + 3bc07140: 5961 li s2,-8 + 3bc07142: f7b5 bnez a5,3bc070ae + 3bc07144: ffb98a93 addi s5,s3,-5 + 3bc07148: 4601 li a2,0 + 3bc0714a: 85d6 mv a1,s5 + 3bc0714c: 00448513 addi a0,s1,4 + 3bc07150: 425000ef jal ra,3bc07d74 + 3bc07154: 013487b3 add a5,s1,s3 + 3bc07158: fff7c783 lbu a5,-1(a5) + 3bc0715c: 3c85350b extu a0,a0,15,8 + 3bc07160: 593d li s2,-17 + 3bc07162: f4a796e3 bne a5,a0,3bc070ae + 3bc07166: 145b378b extu a5,s6,5,5 + 3bc0716a: 007bf513 andi a0,s7,7 + 3bc0716e: c05c sw a5,4(s0) + 3bc07170: 104b378b extu a5,s6,4,4 + 3bc07174: 082b3b0b extu s6,s6,2,2 + 3bc07178: cc5c sw a5,28(s0) + 3bc0717a: 01642423 sw s6,8(s0) + 3bc0717e: c008 sw a0,0(s0) + 3bc07180: eabff0ef jal ra,3bc0702a + 3bc07184: f808 sd a0,48(s0) + 3bc07186: 040c0263 beqz s8,3bc071ca + 3bc0718a: 0074c783 lbu a5,7(s1) + 3bc0718e: 0084c703 lbu a4,8(s1) + 3bc07192: 0064c683 lbu a3,6(s1) + 3bc07196: 07a2 slli a5,a5,0x8 + 3bc07198: 0742 slli a4,a4,0x10 + 3bc0719a: 97ba add a5,a5,a4 + 3bc0719c: 0094c703 lbu a4,9(s1) + 3bc071a0: 97b6 add a5,a5,a3 + 3bc071a2: 0762 slli a4,a4,0x18 + 3bc071a4: 97ba add a5,a5,a4 + 3bc071a6: 00a4c703 lbu a4,10(s1) + 3bc071aa: 1702 slli a4,a4,0x20 + 3bc071ac: 97ba add a5,a5,a4 + 3bc071ae: 00b4c703 lbu a4,11(s1) + 3bc071b2: 1722 slli a4,a4,0x28 + 3bc071b4: 973e add a4,a4,a5 + 3bc071b6: 00c4c783 lbu a5,12(s1) + 3bc071ba: 17c2 slli a5,a5,0x30 + 3bc071bc: 973e add a4,a4,a5 + 3bc071be: 00d4c783 lbu a5,13(s1) + 3bc071c2: 17e2 slli a5,a5,0x38 + 3bc071c4: 97ba add a5,a5,a4 + 3bc071c6: e81c sd a5,16(s0) + 3bc071c8: f41c sd a5,40(s0) + 3bc071ca: 000a0763 beqz s4,3bc071d8 + 3bc071ce: 01548533 add a0,s1,s5 + 3bc071d2: a8eff0ef jal ra,3bc06460 + 3bc071d6: cc08 sw a0,24(s0) + 3bc071d8: 4789 li a5,2 + 3bc071da: d05c sw a5,36(s0) + 3bc071dc: 894e mv s2,s3 + 3bc071de: bdc1 j 3bc070ae + 3bc071e0: 594d li s2,-13 + 3bc071e2: b5f1 j 3bc070ae + 3bc071e4: 5961 li s2,-8 + 3bc071e6: b5e1 j 3bc070ae + 3bc071e8: 5969 li s2,-6 + 3bc071ea: b5d1 j 3bc070ae + +000000003bc071ec : + 3bc071ec: 1101 addi sp,sp,-32 + 3bc071ee: e822 sd s0,16(sp) + 3bc071f0: e426 sd s1,8(sp) + 3bc071f2: 842a mv s0,a0 + 3bc071f4: 84ae mv s1,a1 + 3bc071f6: 4505 li a0,1 + 3bc071f8: 10000593 li a1,256 + 3bc071fc: ec06 sd ra,24(sp) + 3bc071fe: bf8fa0ef jal ra,3bc015f6 + 3bc07202: e909 bnez a0,3bc07214 + 3bc07204: 00043023 sd zero,0(s0) + 3bc07208: 555d li a0,-9 + 3bc0720a: 60e2 ld ra,24(sp) + 3bc0720c: 6442 ld s0,16(sp) + 3bc0720e: 64a2 ld s1,8(sp) + 3bc07210: 6105 addi sp,sp,32 + 3bc07212: 8082 ret + 3bc07214: d104 sw s1,32(a0) + 3bc07216: e008 sd a0,0(s0) + 3bc07218: 4501 li a0,0 + 3bc0721a: bfc5 j 3bc0720a + +000000003bc0721c : + 3bc0721c: 7131 addi sp,sp,-192 + 3bc0721e: ed4e sd s3,152(sp) + 3bc07220: 00073983 ld s3,0(a4) + 3bc07224: e556 sd s5,136(sp) + 3bc07226: e15a sd s6,128(sp) + 3bc07228: f0ea sd s10,96(sp) + 3bc0722a: ecee sd s11,88(sp) + 3bc0722c: fd06 sd ra,184(sp) + 3bc0722e: f922 sd s0,176(sp) + 3bc07230: f526 sd s1,168(sp) + 3bc07232: f14a sd s2,160(sp) + 3bc07234: e952 sd s4,144(sp) + 3bc07236: fcde sd s7,120(sp) + 3bc07238: f8e2 sd s8,112(sp) + 3bc0723a: f4e6 sd s9,104(sp) + 3bc0723c: fad1560b sdd a2,a3,(sp),1,4 + 3bc07240: e43e sd a5,8(sp) + 3bc07242: 8d2a mv s10,a0 + 3bc07244: 8aae mv s5,a1 + 3bc07246: 8dba mv s11,a4 + 3bc07248: 99b6 add s3,s3,a3 + 3bc0724a: 4b01 li s6,0 + 3bc0724c: c581 beqz a1,3bc07254 + 3bc0724e: 00063b03 ld s6,0(a2) + 3bc07252: 9b2e add s6,s6,a1 + 3bc07254: 0080 addi s0,sp,64 + 3bc07256: 4641 li a2,16 + 3bc07258: 4581 li a1,0 + 3bc0725a: 8522 mv a0,s0 + 3bc0725c: fc4f90ef jal ra,3bc00a20 + 3bc07260: 67a2 ld a5,8(sp) + 3bc07262: 000db023 sd zero,0(s11) + 3bc07266: 6ce2 ld s9,24(sp) + 3bc07268: 40f4178b mveqz a5,s0,a5 + 3bc0726c: e43e sd a5,8(sp) + 3bc0726e: 67c2 ld a5,16(sp) + 3bc07270: 8956 mv s2,s5 + 3bc07272: 4485 li s1,1 + 3bc07274: 0007b023 sd zero,0(a5) + 3bc07278: 0ecd0793 addi a5,s10,236 + 3bc0727c: f43e sd a5,40(sp) + 3bc0727e: 0b8d0793 addi a5,s10,184 + 3bc07282: 4a05 li s4,1 + 3bc07284: 0e8d0b93 addi s7,s10,232 + 3bc07288: 088d0c13 addi s8,s10,136 + 3bc0728c: f03e sd a5,32(sp) + 3bc0728e: 080a1b63 bnez s4,3bc07324 + 3bc07292: 004d2783 lw a5,4(s10) + 3bc07296: ebbd bnez a5,3bc0730c + 3bc07298: 060d3583 ld a1,96(s10) + 3bc0729c: 058d3503 ld a0,88(s10) + 3bc072a0: 06a58663 beq a1,a0,3bc0730c + 3bc072a4: c5a5 beqz a1,3bc0730c + 3bc072a6: 67a2 ld a5,8(sp) + 3bc072a8: 439c lw a5,0(a5) + 3bc072aa: e3ad bnez a5,3bc0730c + 3bc072ac: 024d2703 lw a4,36(s10) + 3bc072b0: 479d li a5,7 + 3bc072b2: ffe7069b addiw a3,a4,-2 + 3bc072b6: 04d7eb63 bltu a5,a3,3bc0730c + 3bc072ba: 46a5 li a3,9 + 3bc072bc: 068d3783 ld a5,104(s10) + 3bc072c0: 6ed71c63 bne a4,a3,3bc079b8 + 3bc072c4: 080d3683 ld a3,128(s10) + 3bc072c8: 070d3403 ld s0,112(s10) + 3bc072cc: 078d3703 ld a4,120(s10) + 3bc072d0: 8f95 sub a5,a5,a3 + 3bc072d2: 66c1 lui a3,0x10 + 3bc072d4: 8c09 sub s0,s0,a0 + 3bc072d6: 4601 li a2,0 + 3bc072d8: 00e6ea63 bltu a3,a4,3bc072ec + 3bc072dc: 40e68633 sub a2,a3,a4 + 3bc072e0: 00c43733 sltu a4,s0,a2 + 3bc072e4: 00174713 xori a4,a4,1 + 3bc072e8: 40e4160b mveqz a2,s0,a4 + 3bc072ec: 8f91 sub a5,a5,a2 + 3bc072ee: 40c40733 sub a4,s0,a2 + 3bc072f2: 95be add a1,a1,a5 + 3bc072f4: 953a add a0,a0,a4 + 3bc072f6: f84f90ef jal ra,3bc00a7a + 3bc072fa: 058d3783 ld a5,88(s10) + 3bc072fe: 06fd3023 sd a5,96(s10) + 3bc07302: 080d3783 ld a5,128(s10) + 3bc07306: 943e add s0,s0,a5 + 3bc07308: 068d3423 sd s0,104(s10) + 3bc0730c: 67e2 ld a5,24(sp) + 3bc0730e: 41590933 sub s2,s2,s5 + 3bc07312: 8526 mv a0,s1 + 3bc07314: 40fc88b3 sub a7,s9,a5 + 3bc07318: 67c2 ld a5,16(sp) + 3bc0731a: 011db023 sd a7,0(s11) + 3bc0731e: 0127b023 sd s2,0(a5) + 3bc07322: a055 j 3bc073c6 + 3bc07324: 024d2783 lw a5,36(s10) + 3bc07328: 4739 li a4,14 + 3bc0732a: f6f762e3 bltu a4,a5,3bc0728e + 3bc0732e: 024d6783 lwu a5,36(s10) + 3bc07332: 00004717 auipc a4,0x4 + 3bc07336: 0fe70713 addi a4,a4,254 # 3bc0b430 + 3bc0733a: 44f7478b lrw a5,a4,a5,2 + 3bc0733e: 97ba add a5,a5,a4 + 3bc07340: 8782 jr a5 + 3bc07342: 41998633 sub a2,s3,s9 + 3bc07346: 47c9 li a5,18 + 3bc07348: 00c7fd63 bgeu a5,a2,3bc07362 + 3bc0734c: 85e6 mv a1,s9 + 3bc0734e: 856a mv a0,s10 + 3bc07350: cf9ff0ef jal ra,3bc07048 + 3bc07354: 57b1 li a5,-20 + 3bc07356: 06a7e863 bltu a5,a0,3bc073c6 + 3bc0735a: 00ac8433 add s0,s9,a0 + 3bc0735e: 8ca2 mv s9,s0 + 3bc07360: b73d j 3bc0728e + 3bc07362: 040d3423 sd zero,72(s10) + 3bc07366: 673c8d63 beq s9,s3,3bc079e0 + 3bc0736a: 479d li a5,7 + 3bc0736c: 04fd3823 sd a5,80(s10) + 3bc07370: 4785 li a5,1 + 3bc07372: 02fd2223 sw a5,36(s10) + 3bc07376: 048d3503 ld a0,72(s10) + 3bc0737a: 050d3403 ld s0,80(s10) + 3bc0737e: 41998633 sub a2,s3,s9 + 3bc07382: 85e6 mv a1,s9 + 3bc07384: 8c09 sub s0,s0,a0 + 3bc07386: 008637b3 sltu a5,a2,s0 + 3bc0738a: 0017c793 xori a5,a5,1 + 3bc0738e: 40f6140b mveqz s0,a2,a5 + 3bc07392: 8622 mv a2,s0 + 3bc07394: 955e add a0,a0,s7 + 3bc07396: ee4f90ef jal ra,3bc00a7a + 3bc0739a: 048d3783 ld a5,72(s10) + 3bc0739e: 050d3603 ld a2,80(s10) + 3bc073a2: 97a2 add a5,a5,s0 + 3bc073a4: 04fd3423 sd a5,72(s10) + 3bc073a8: 9466 add s0,s0,s9 + 3bc073aa: 00c7f763 bgeu a5,a2,3bc073b8 + 3bc073ae: 0611 addi a2,a2,4 + 3bc073b0: 40f604b3 sub s1,a2,a5 + 3bc073b4: 4a01 li s4,0 + 3bc073b6: b765 j 3bc0735e + 3bc073b8: 85de mv a1,s7 + 3bc073ba: 856a mv a0,s10 + 3bc073bc: c8dff0ef jal ra,3bc07048 + 3bc073c0: 57b1 li a5,-20 + 3bc073c2: f8a7fee3 bgeu a5,a0,3bc0735e + 3bc073c6: 70ea ld ra,184(sp) + 3bc073c8: 744a ld s0,176(sp) + 3bc073ca: 74aa ld s1,168(sp) + 3bc073cc: 790a ld s2,160(sp) + 3bc073ce: 69ea ld s3,152(sp) + 3bc073d0: 6a4a ld s4,144(sp) + 3bc073d2: 6aaa ld s5,136(sp) + 3bc073d4: 6b0a ld s6,128(sp) + 3bc073d6: 7be6 ld s7,120(sp) + 3bc073d8: 7c46 ld s8,112(sp) + 3bc073da: 7ca6 ld s9,104(sp) + 3bc073dc: 7d06 ld s10,96(sp) + 3bc073de: 6de6 ld s11,88(sp) + 3bc073e0: 6129 addi sp,sp,192 + 3bc073e2: 8082 ret + 3bc073e4: 008d2783 lw a5,8(s10) + 3bc073e8: c789 beqz a5,3bc073f2 + 3bc073ea: 4581 li a1,0 + 3bc073ec: 8562 mv a0,s8 + 3bc073ee: 34d000ef jal ra,3bc07f3a + 3bc073f2: 004d2403 lw s0,4(s10) + 3bc073f6: 030d3783 ld a5,48(s10) + 3bc073fa: 00143413 seqz s0,s0 + 3bc073fe: 0446 slli s0,s0,0x11 + 3bc07400: 943e add s0,s0,a5 + 3bc07402: 038d3783 ld a5,56(s10) + 3bc07406: 0287fe63 bgeu a5,s0,3bc07442 + 3bc0740a: 040d3503 ld a0,64(s10) + 3bc0740e: 020d3c23 sd zero,56(s10) + 3bc07412: a0cfa0ef jal ra,3bc0161e + 3bc07416: 030d3503 ld a0,48(s10) + 3bc0741a: 0511 addi a0,a0,4 + 3bc0741c: 9d4fa0ef jal ra,3bc015f0 + 3bc07420: 04ad3023 sd a0,64(s10) + 3bc07424: e119 bnez a0,3bc0742a + 3bc07426: 555d li a0,-9 + 3bc07428: bf79 j 3bc073c6 + 3bc0742a: 058d3503 ld a0,88(s10) + 3bc0742e: 9f0fa0ef jal ra,3bc0161e + 3bc07432: 8522 mv a0,s0 + 3bc07434: 9bcfa0ef jal ra,3bc015f0 + 3bc07438: 04ad3c23 sd a0,88(s10) + 3bc0743c: d56d beqz a0,3bc07426 + 3bc0743e: 028d3c23 sd s0,56(s10) + 3bc07442: 058d3783 ld a5,88(s10) + 3bc07446: 040d3423 sd zero,72(s10) + 3bc0744a: 040d3823 sd zero,80(s10) + 3bc0744e: 06fd3823 sd a5,112(s10) + 3bc07452: 478d li a5,3 + 3bc07454: 080d3023 sd zero,128(s10) + 3bc07458: 060d3c23 sd zero,120(s10) + 3bc0745c: 02fd2223 sw a5,36(s10) + 3bc07460: 419987b3 sub a5,s3,s9 + 3bc07464: 470d li a4,3 + 3bc07466: 00f77b63 bgeu a4,a5,3bc0747c + 3bc0746a: 024d2703 lw a4,36(s10) + 3bc0746e: 4791 li a5,4 + 3bc07470: 004c8413 addi s0,s9,4 + 3bc07474: 04f71e63 bne a4,a5,3bc074d0 + 3bc07478: 8ca2 mv s9,s0 + 3bc0747a: a031 j 3bc07486 + 3bc0747c: 4791 li a5,4 + 3bc0747e: 040d3423 sd zero,72(s10) + 3bc07482: 02fd2223 sw a5,36(s10) + 3bc07486: 048d3683 ld a3,72(s10) + 3bc0748a: 4711 li a4,4 + 3bc0748c: 040d3503 ld a0,64(s10) + 3bc07490: 40d705b3 sub a1,a4,a3 + 3bc07494: 41998633 sub a2,s3,s9 + 3bc07498: 00c5b7b3 sltu a5,a1,a2 + 3bc0749c: 0017c793 xori a5,a5,1 + 3bc074a0: 40f5960b mveqz a2,a1,a5 + 3bc074a4: 9536 add a0,a0,a3 + 3bc074a6: 85e6 mv a1,s9 + 3bc074a8: f832 sd a2,48(sp) + 3bc074aa: dd0f90ef jal ra,3bc00a7a + 3bc074ae: 048d3783 ld a5,72(s10) + 3bc074b2: 7642 ld a2,48(sp) + 3bc074b4: 00cc8433 add s0,s9,a2 + 3bc074b8: 963e add a2,a2,a5 + 3bc074ba: 04cd3423 sd a2,72(s10) + 3bc074be: 478d li a5,3 + 3bc074c0: 00c7e663 bltu a5,a2,3bc074cc + 3bc074c4: 4711 li a4,4 + 3bc074c6: 40c704b3 sub s1,a4,a2 + 3bc074ca: b5ed j 3bc073b4 + 3bc074cc: 040d3c83 ld s9,64(s10) + 3bc074d0: 8566 mv a0,s9 + 3bc074d2: f8ffe0ef jal ra,3bc06460 + 3bc074d6: 2501 sext.w a0,a0 + 3bc074d8: 47a9 li a5,10 + 3bc074da: c50d beqz a0,3bc07504 + 3bc074dc: 030d3683 ld a3,48(s10) + 3bc074e0: 7805378b extu a5,a0,30,0 + 3bc074e4: 7c07b70b extu a4,a5,31,0 + 3bc074e8: 4ef6ee63 bltu a3,a5,3bc079e4 + 3bc074ec: 01cd2783 lw a5,28(s10) + 3bc074f0: 00055d63 bgez a0,3bc0750a + 3bc074f4: 04ed3823 sd a4,80(s10) + 3bc074f8: c789 beqz a5,3bc07502 + 3bc074fa: 7502 ld a0,32(sp) + 3bc074fc: 4581 li a1,0 + 3bc074fe: 23d000ef jal ra,3bc07f3a + 3bc07502: 4795 li a5,5 + 3bc07504: 02fd2223 sw a5,36(s10) + 3bc07508: bd99 j 3bc0735e + 3bc0750a: 02079693 slli a3,a5,0x20 + 3bc0750e: 01e6d793 srli a5,a3,0x1e + 3bc07512: 97ba add a5,a5,a4 + 3bc07514: 471d li a4,7 + 3bc07516: 04fd3823 sd a5,80(s10) + 3bc0751a: 02ed2223 sw a4,36(s10) + 3bc0751e: 01690463 beq s2,s6,3bc07526 + 3bc07522: e3341ee3 bne s0,s3,3bc0735e + 3bc07526: 00478493 addi s1,a5,4 + 3bc0752a: b569 j 3bc073b4 + 3bc0752c: 4601 li a2,0 + 3bc0752e: 06090e63 beqz s2,3bc075aa + 3bc07532: 41998733 sub a4,s3,s9 + 3bc07536: 412b0633 sub a2,s6,s2 + 3bc0753a: 00c737b3 sltu a5,a4,a2 + 3bc0753e: 0017c793 xori a5,a5,1 + 3bc07542: 40f7160b mveqz a2,a4,a5 + 3bc07546: 050d3703 ld a4,80(s10) + 3bc0754a: 85e6 mv a1,s9 + 3bc0754c: 854a mv a0,s2 + 3bc0754e: 00c737b3 sltu a5,a4,a2 + 3bc07552: 0017c793 xori a5,a5,1 + 3bc07556: 40f7160b mveqz a2,a4,a5 + 3bc0755a: f832 sd a2,48(sp) + 3bc0755c: d1ef90ef jal ra,3bc00a7a + 3bc07560: 01cd2783 lw a5,28(s10) + 3bc07564: 7642 ld a2,48(sp) + 3bc07566: c791 beqz a5,3bc07572 + 3bc07568: 7502 ld a0,32(sp) + 3bc0756a: 85e6 mv a1,s9 + 3bc0756c: 225000ef jal ra,3bc07f90 + 3bc07570: 7642 ld a2,48(sp) + 3bc07572: 008d2783 lw a5,8(s10) + 3bc07576: c799 beqz a5,3bc07584 + 3bc07578: 85e6 mv a1,s9 + 3bc0757a: 8562 mv a0,s8 + 3bc0757c: f832 sd a2,48(sp) + 3bc0757e: 213000ef jal ra,3bc07f90 + 3bc07582: 7642 ld a2,48(sp) + 3bc07584: 010d3783 ld a5,16(s10) + 3bc07588: c791 beqz a5,3bc07594 + 3bc0758a: 028d3783 ld a5,40(s10) + 3bc0758e: 8f91 sub a5,a5,a2 + 3bc07590: 02fd3423 sd a5,40(s10) + 3bc07594: 004d2783 lw a5,4(s10) + 3bc07598: eb89 bnez a5,3bc075aa + 3bc0759a: 4701 li a4,0 + 3bc0759c: 86d6 mv a3,s5 + 3bc0759e: 85ca mv a1,s2 + 3bc075a0: 856a mv a0,s10 + 3bc075a2: f832 sd a2,48(sp) + 3bc075a4: 956ff0ef jal ra,3bc066fa + 3bc075a8: 7642 ld a2,48(sp) + 3bc075aa: 050d3783 ld a5,80(s10) + 3bc075ae: 01cd2703 lw a4,28(s10) + 3bc075b2: 00cc8433 add s0,s9,a2 + 3bc075b6: 9932 add s2,s2,a2 + 3bc075b8: 00c79863 bne a5,a2,3bc075c8 + 3bc075bc: 28070d63 beqz a4,3bc07856 + 3bc075c0: 040d3423 sd zero,72(s10) + 3bc075c4: 4799 li a5,6 + 3bc075c6: bf3d j 3bc07504 + 3bc075c8: 40c78633 sub a2,a5,a2 + 3bc075cc: 04cd3823 sd a2,80(s10) + 3bc075d0: 00e03733 snez a4,a4 + 3bc075d4: 0611 addi a2,a2,4 + 3bc075d6: 04e6148b addsl s1,a2,a4,2 + 3bc075da: bbe9 j 3bc073b4 + 3bc075dc: 419987b3 sub a5,s3,s9 + 3bc075e0: 470d li a4,3 + 3bc075e2: 048d3503 ld a0,72(s10) + 3bc075e6: 02f75363 bge a4,a5,3bc0760c + 3bc075ea: e10d bnez a0,3bc0760c + 3bc075ec: 004c8413 addi s0,s9,4 + 3bc075f0: 8766 mv a4,s9 + 3bc075f2: 853a mv a0,a4 + 3bc075f4: e6dfe0ef jal ra,3bc06460 + 3bc075f8: 00050c9b sext.w s9,a0 + 3bc075fc: 7502 ld a0,32(sp) + 3bc075fe: 365000ef jal ra,3bc08162 + 3bc07602: 2501 sext.w a0,a0 + 3bc07604: 24ac8963 beq s9,a0,3bc07856 + 3bc07608: 5565 li a0,-7 + 3bc0760a: bb75 j 3bc073c6 + 3bc0760c: 4411 li s0,4 + 3bc0760e: 8c09 sub s0,s0,a0 + 3bc07610: 0087b733 sltu a4,a5,s0 + 3bc07614: 00174713 xori a4,a4,1 + 3bc07618: 40e7940b mveqz s0,a5,a4 + 3bc0761c: 8622 mv a2,s0 + 3bc0761e: 85e6 mv a1,s9 + 3bc07620: 955e add a0,a0,s7 + 3bc07622: f85e sd s7,48(sp) + 3bc07624: c56f90ef jal ra,3bc00a7a + 3bc07628: 048d3783 ld a5,72(s10) + 3bc0762c: 468d li a3,3 + 3bc0762e: 7742 ld a4,48(sp) + 3bc07630: 97a2 add a5,a5,s0 + 3bc07632: 04fd3423 sd a5,72(s10) + 3bc07636: 9466 add s0,s0,s9 + 3bc07638: d6f6fee3 bgeu a3,a5,3bc073b4 + 3bc0763c: bf5d j 3bc075f2 + 3bc0763e: 050d3403 ld s0,80(s10) + 3bc07642: 419987b3 sub a5,s3,s9 + 3bc07646: 0087f963 bgeu a5,s0,3bc07658 + 3bc0764a: 47a1 li a5,8 + 3bc0764c: 040d3423 sd zero,72(s10) + 3bc07650: 02fd2223 sw a5,36(s10) + 3bc07654: 8466 mv s0,s9 + 3bc07656: b321 j 3bc0735e + 3bc07658: 9466 add s0,s0,s9 + 3bc0765a: 01cd2783 lw a5,28(s10) + 3bc0765e: 16079563 bnez a5,3bc077c8 + 3bc07662: 030d3683 ld a3,48(s10) + 3bc07666: 412b0633 sub a2,s6,s2 + 3bc0766a: 060d3703 ld a4,96(s10) + 3bc0766e: 068d3783 ld a5,104(s10) + 3bc07672: 18d67263 bgeu a2,a3,3bc077f6 + 3bc07676: 004d2683 lw a3,4(s10) + 3bc0767a: ea95 bnez a3,3bc076ae + 3bc0767c: 058d3683 ld a3,88(s10) + 3bc07680: 1cd71d63 bne a4,a3,3bc0785a + 3bc07684: 000206b7 lui a3,0x20 + 3bc07688: 00f6fc63 bgeu a3,a5,3bc076a0 + 3bc0768c: 75c1 lui a1,0xffff0 + 3bc0768e: 95be add a1,a1,a5 + 3bc07690: 6641 lui a2,0x10 + 3bc07692: 95ba add a1,a1,a4 + 3bc07694: 853a mv a0,a4 + 3bc07696: be4f90ef jal ra,3bc00a7a + 3bc0769a: 67c1 lui a5,0x10 + 3bc0769c: 06fd3423 sd a5,104(s10) + 3bc076a0: 058d3783 ld a5,88(s10) + 3bc076a4: 068d3703 ld a4,104(s10) + 3bc076a8: 97ba add a5,a5,a4 + 3bc076aa: 06fd3823 sd a5,112(s10) + 3bc076ae: 060d3703 ld a4,96(s10) + 3bc076b2: 068d3783 ld a5,104(s10) + 3bc076b6: cb09 beqz a4,3bc076c8 + 3bc076b8: 400006b7 lui a3,0x40000 + 3bc076bc: 00f6f663 bgeu a3,a5,3bc076c8 + 3bc076c0: 76c1 lui a3,0xffff0 + 3bc076c2: 97b6 add a5,a5,a3 + 3bc076c4: 973e add a4,a4,a5 + 3bc076c6: 67c1 lui a5,0x10 + 3bc076c8: 030d2683 lw a3,48(s10) + 3bc076cc: 050d2603 lw a2,80(s10) + 3bc076d0: 070d3583 ld a1,112(s10) + 3bc076d4: 8566 mv a0,s9 + 3bc076d6: 2781 sext.w a5,a5 + 3bc076d8: 921ff0ef jal ra,3bc06ff8 + 3bc076dc: 8caa mv s9,a0 + 3bc076de: 30054763 bltz a0,3bc079ec + 3bc076e2: 008d2783 lw a5,8(s10) + 3bc076e6: c799 beqz a5,3bc076f4 + 3bc076e8: 070d3583 ld a1,112(s10) + 3bc076ec: 862a mv a2,a0 + 3bc076ee: 8562 mv a0,s8 + 3bc076f0: 0a1000ef jal ra,3bc07f90 + 3bc076f4: 010d3783 ld a5,16(s10) + 3bc076f8: c799 beqz a5,3bc07706 + 3bc076fa: 028d3783 ld a5,40(s10) + 3bc076fe: 419787b3 sub a5,a5,s9 + 3bc07702: 02fd3423 sd a5,40(s10) + 3bc07706: 47a5 li a5,9 + 3bc07708: 079d3c23 sd s9,120(s10) + 3bc0770c: 080d3023 sd zero,128(s10) + 3bc07710: 02fd2223 sw a5,36(s10) + 3bc07714: 04090763 beqz s2,3bc07762 + 3bc07718: 080d3703 ld a4,128(s10) + 3bc0771c: 078d3603 ld a2,120(s10) + 3bc07720: 412b06b3 sub a3,s6,s2 + 3bc07724: 070d3583 ld a1,112(s10) + 3bc07728: 8e19 sub a2,a2,a4 + 3bc0772a: 00c6b7b3 sltu a5,a3,a2 + 3bc0772e: 0017c793 xori a5,a5,1 + 3bc07732: 42f6168b mvnez a3,a2,a5 + 3bc07736: 8636 mv a2,a3 + 3bc07738: 95ba add a1,a1,a4 + 3bc0773a: 854a mv a0,s2 + 3bc0773c: 8cb6 mv s9,a3 + 3bc0773e: b3cf90ef jal ra,3bc00a7a + 3bc07742: 004d2783 lw a5,4(s10) + 3bc07746: eb81 bnez a5,3bc07756 + 3bc07748: 4705 li a4,1 + 3bc0774a: 86d6 mv a3,s5 + 3bc0774c: 8666 mv a2,s9 + 3bc0774e: 85ca mv a1,s2 + 3bc07750: 856a mv a0,s10 + 3bc07752: fa9fe0ef jal ra,3bc066fa + 3bc07756: 080d3783 ld a5,128(s10) + 3bc0775a: 9966 add s2,s2,s9 + 3bc0775c: 97e6 add a5,a5,s9 + 3bc0775e: 08fd3023 sd a5,128(s10) + 3bc07762: 080d3703 ld a4,128(s10) + 3bc07766: 078d3783 ld a5,120(s10) + 3bc0776a: 0ef70663 beq a4,a5,3bc07856 + 3bc0776e: 4491 li s1,4 + 3bc07770: b191 j 3bc073b4 + 3bc07772: 048d3703 ld a4,72(s10) + 3bc07776: 050d3403 ld s0,80(s10) + 3bc0777a: 41998633 sub a2,s3,s9 + 3bc0777e: 040d3503 ld a0,64(s10) + 3bc07782: 8c19 sub s0,s0,a4 + 3bc07784: 008637b3 sltu a5,a2,s0 + 3bc07788: 0017c793 xori a5,a5,1 + 3bc0778c: 40f6140b mveqz s0,a2,a5 + 3bc07790: 8622 mv a2,s0 + 3bc07792: 953a add a0,a0,a4 + 3bc07794: 85e6 mv a1,s9 + 3bc07796: ae4f90ef jal ra,3bc00a7a + 3bc0779a: 048d3783 ld a5,72(s10) + 3bc0779e: 00f40733 add a4,s0,a5 + 3bc077a2: 050d3783 ld a5,80(s10) + 3bc077a6: 04ed3423 sd a4,72(s10) + 3bc077aa: 9466 add s0,s0,s9 + 3bc077ac: 00f77b63 bgeu a4,a5,3bc077c2 + 3bc077b0: 01cd2483 lw s1,28(s10) + 3bc077b4: 0791 addi a5,a5,4 + 3bc077b6: 8f99 sub a5,a5,a4 + 3bc077b8: 009034b3 snez s1,s1 + 3bc077bc: 0497948b addsl s1,a5,s1,2 + 3bc077c0: bed5 j 3bc073b4 + 3bc077c2: 040d3c83 ld s9,64(s10) + 3bc077c6: bd51 j 3bc0765a + 3bc077c8: 050d3583 ld a1,80(s10) + 3bc077cc: 15f1 addi a1,a1,-4 + 3bc077ce: 04bd3823 sd a1,80(s10) + 3bc077d2: 00bc8533 add a0,s9,a1 + 3bc077d6: fc2e sd a1,56(sp) + 3bc077d8: c89fe0ef jal ra,3bc06460 + 3bc077dc: 75e2 ld a1,56(sp) + 3bc077de: 0005079b sext.w a5,a0 + 3bc077e2: 4601 li a2,0 + 3bc077e4: 8566 mv a0,s9 + 3bc077e6: f83e sd a5,48(sp) + 3bc077e8: 58c000ef jal ra,3bc07d74 + 3bc077ec: 77c2 ld a5,48(sp) + 3bc077ee: 2501 sext.w a0,a0 + 3bc077f0: e6a789e3 beq a5,a0,3bc07662 + 3bc077f4: bd11 j 3bc07608 + 3bc077f6: cb09 beqz a4,3bc07808 + 3bc077f8: 40000637 lui a2,0x40000 + 3bc077fc: 00f67663 bgeu a2,a5,3bc07808 + 3bc07800: 75c1 lui a1,0xffff0 + 3bc07802: 97ae add a5,a5,a1 + 3bc07804: 973e add a4,a4,a5 + 3bc07806: 67c1 lui a5,0x10 + 3bc07808: 050d2603 lw a2,80(s10) + 3bc0780c: 8566 mv a0,s9 + 3bc0780e: 2781 sext.w a5,a5 + 3bc07810: 2681 sext.w a3,a3 + 3bc07812: 85ca mv a1,s2 + 3bc07814: fe4ff0ef jal ra,3bc06ff8 + 3bc07818: 8caa mv s9,a0 + 3bc0781a: 1c054763 bltz a0,3bc079e8 + 3bc0781e: 008d2783 lw a5,8(s10) + 3bc07822: c791 beqz a5,3bc0782e + 3bc07824: 862a mv a2,a0 + 3bc07826: 85ca mv a1,s2 + 3bc07828: 8562 mv a0,s8 + 3bc0782a: 766000ef jal ra,3bc07f90 + 3bc0782e: 010d3783 ld a5,16(s10) + 3bc07832: c799 beqz a5,3bc07840 + 3bc07834: 028d3783 ld a5,40(s10) + 3bc07838: 419787b3 sub a5,a5,s9 + 3bc0783c: 02fd3423 sd a5,40(s10) + 3bc07840: 004d2783 lw a5,4(s10) + 3bc07844: eb81 bnez a5,3bc07854 + 3bc07846: 4701 li a4,0 + 3bc07848: 86d6 mv a3,s5 + 3bc0784a: 8666 mv a2,s9 + 3bc0784c: 85ca mv a1,s2 + 3bc0784e: 856a mv a0,s10 + 3bc07850: eabfe0ef jal ra,3bc066fa + 3bc07854: 9966 add s2,s2,s9 + 3bc07856: 478d li a5,3 + 3bc07858: b175 j 3bc07504 + 3bc0785a: 6741 lui a4,0x10 + 3bc0785c: 00f77363 bgeu a4,a5,3bc07862 + 3bc07860: 67c1 lui a5,0x10 + 3bc07862: 97b6 add a5,a5,a3 + 3bc07864: b599 j 3bc076aa + 3bc07866: 8466 mv s0,s9 + 3bc07868: b575 j 3bc07714 + 3bc0786a: 028d3483 ld s1,40(s10) + 3bc0786e: 18049163 bnez s1,3bc079f0 + 3bc07872: 008d2a03 lw s4,8(s10) + 3bc07876: 000a1963 bnez s4,3bc07888 + 3bc0787a: 020d2223 sw zero,36(s10) + 3bc0787e: 060d3023 sd zero,96(s10) + 3bc07882: 060d3423 sd zero,104(s10) + 3bc07886: b3f9 j 3bc07654 + 3bc07888: 419987b3 sub a5,s3,s9 + 3bc0788c: 470d li a4,3 + 3bc0788e: 04f74a63 blt a4,a5,3bc078e2 + 3bc07892: 47ad li a5,11 + 3bc07894: 040d3423 sd zero,72(s10) + 3bc07898: 02fd2223 sw a5,36(s10) + 3bc0789c: 048d3703 ld a4,72(s10) + 3bc078a0: 4491 li s1,4 + 3bc078a2: 41998a33 sub s4,s3,s9 + 3bc078a6: 40e48633 sub a2,s1,a4 + 3bc078aa: 014637b3 sltu a5,a2,s4 + 3bc078ae: 040d3503 ld a0,64(s10) + 3bc078b2: 0017c793 xori a5,a5,1 + 3bc078b6: 40f61a0b mveqz s4,a2,a5 + 3bc078ba: 8652 mv a2,s4 + 3bc078bc: 85e6 mv a1,s9 + 3bc078be: 953a add a0,a0,a4 + 3bc078c0: 9baf90ef jal ra,3bc00a7a + 3bc078c4: 048d3603 ld a2,72(s10) + 3bc078c8: 014c8433 add s0,s9,s4 + 3bc078cc: 478d li a5,3 + 3bc078ce: 9a32 add s4,s4,a2 + 3bc078d0: 054d3423 sd s4,72(s10) + 3bc078d4: 414484b3 sub s1,s1,s4 + 3bc078d8: ad47fee3 bgeu a5,s4,3bc073b4 + 3bc078dc: 040d3c83 ld s9,64(s10) + 3bc078e0: a019 j 3bc078e6 + 3bc078e2: 004c8413 addi s0,s9,4 + 3bc078e6: 8566 mv a0,s9 + 3bc078e8: b79fe0ef jal ra,3bc06460 + 3bc078ec: 0005049b sext.w s1,a0 + 3bc078f0: 8562 mv a0,s8 + 3bc078f2: 071000ef jal ra,3bc08162 + 3bc078f6: 2501 sext.w a0,a0 + 3bc078f8: 0ea49e63 bne s1,a0,3bc079f4 + 3bc078fc: 020d2223 sw zero,36(s10) + 3bc07900: 060d3023 sd zero,96(s10) + 3bc07904: 060d3423 sd zero,104(s10) + 3bc07908: 4481 li s1,0 + 3bc0790a: b46d j 3bc073b4 + 3bc0790c: 419987b3 sub a5,s3,s9 + 3bc07910: 470d li a4,3 + 3bc07912: 004c8413 addi s0,s9,4 + 3bc07916: 04f74d63 blt a4,a5,3bc07970 + 3bc0791a: 4791 li a5,4 + 3bc0791c: 04fd3423 sd a5,72(s10) + 3bc07920: 47a1 li a5,8 + 3bc07922: 04fd3823 sd a5,80(s10) + 3bc07926: 47b5 li a5,13 + 3bc07928: 02fd2223 sw a5,36(s10) + 3bc0792c: 048d3503 ld a0,72(s10) + 3bc07930: 050d3603 ld a2,80(s10) + 3bc07934: 41998733 sub a4,s3,s9 + 3bc07938: 85e6 mv a1,s9 + 3bc0793a: 8e09 sub a2,a2,a0 + 3bc0793c: 00c737b3 sltu a5,a4,a2 + 3bc07940: 0017c793 xori a5,a5,1 + 3bc07944: 40f7160b mveqz a2,a4,a5 + 3bc07948: 955e add a0,a0,s7 + 3bc0794a: f832 sd a2,48(sp) + 3bc0794c: 92ef90ef jal ra,3bc00a7a + 3bc07950: 048d3783 ld a5,72(s10) + 3bc07954: 7642 ld a2,48(sp) + 3bc07956: 00cc8433 add s0,s9,a2 + 3bc0795a: 963e add a2,a2,a5 + 3bc0795c: 050d3783 ld a5,80(s10) + 3bc07960: 04cd3423 sd a2,72(s10) + 3bc07964: 00f67563 bgeu a2,a5,3bc0796e + 3bc07968: 40c784b3 sub s1,a5,a2 + 3bc0796c: b4a1 j 3bc073b4 + 3bc0796e: 7ca2 ld s9,40(sp) + 3bc07970: 8566 mv a0,s9 + 3bc07972: aeffe0ef jal ra,3bc06460 + 3bc07976: 7c05350b extu a0,a0,31,0 + 3bc0797a: 00ad3823 sd a0,16(s10) + 3bc0797e: 04ad3823 sd a0,80(s10) + 3bc07982: 47b9 li a5,14 + 3bc07984: b641 j 3bc07504 + 3bc07986: 050d3483 ld s1,80(s10) + 3bc0798a: 41998633 sub a2,s3,s9 + 3bc0798e: 4a01 li s4,0 + 3bc07990: 00c4b7b3 sltu a5,s1,a2 + 3bc07994: 0017c793 xori a5,a5,1 + 3bc07998: 40f4960b mveqz a2,s1,a5 + 3bc0799c: 8c91 sub s1,s1,a2 + 3bc0799e: 049d3823 sd s1,80(s10) + 3bc079a2: 00cc8433 add s0,s9,a2 + 3bc079a6: 9a049ce3 bnez s1,3bc0735e + 3bc079aa: 020d2223 sw zero,36(s10) + 3bc079ae: 060d3023 sd zero,96(s10) + 3bc079b2: 060d3423 sd zero,104(s10) + 3bc079b6: b265 j 3bc0735e + 3bc079b8: 6741 lui a4,0x10 + 3bc079ba: 843e mv s0,a5 + 3bc079bc: 00f77363 bgeu a4,a5,3bc079c2 + 3bc079c0: 6441 lui s0,0x10 + 3bc079c2: 8f81 sub a5,a5,s0 + 3bc079c4: 95be add a1,a1,a5 + 3bc079c6: 8622 mv a2,s0 + 3bc079c8: 8b2f90ef jal ra,3bc00a7a + 3bc079cc: 058d3783 ld a5,88(s10) + 3bc079d0: 068d3423 sd s0,104(s10) + 3bc079d4: 06fd3023 sd a5,96(s10) + 3bc079d8: 97a2 add a5,a5,s0 + 3bc079da: 06fd3823 sd a5,112(s10) + 3bc079de: b23d j 3bc0730c + 3bc079e0: 451d li a0,7 + 3bc079e2: b2d5 j 3bc073c6 + 3bc079e4: 5579 li a0,-2 + 3bc079e6: b2c5 j 3bc073c6 + 3bc079e8: 557d li a0,-1 + 3bc079ea: baf1 j 3bc073c6 + 3bc079ec: 5541 li a0,-16 + 3bc079ee: bae1 j 3bc073c6 + 3bc079f0: 5549 li a0,-14 + 3bc079f2: bad1 j 3bc073c6 + 3bc079f4: 5539 li a0,-18 + 3bc079f6: bac1 j 3bc073c6 + +000000003bc079f8 : + 3bc079f8: 00f5579b srliw a5,a0,0xf + 3bc079fc: 8d3d xor a0,a0,a5 + 3bc079fe: 85ebd7b7 lui a5,0x85ebd + 3bc07a02: a777879b addiw a5,a5,-1417 + 3bc07a06: 02a7853b mulw a0,a5,a0 + 3bc07a0a: 00d5579b srliw a5,a0,0xd + 3bc07a0e: 8fa9 xor a5,a5,a0 + 3bc07a10: c2b2b537 lui a0,0xc2b2b + 3bc07a14: e3d5051b addiw a0,a0,-451 + 3bc07a18: 02a787bb mulw a5,a5,a0 + 3bc07a1c: 0107d51b srliw a0,a5,0x10 + 3bc07a20: 8d3d xor a0,a0,a5 + 3bc07a22: 8082 ret + +000000003bc07a24 : + 3bc07a24: 1101 addi sp,sp,-32 + 3bc07a26: 85aa mv a1,a0 + 3bc07a28: 4611 li a2,4 + 3bc07a2a: 0068 addi a0,sp,12 + 3bc07a2c: ec06 sd ra,24(sp) + 3bc07a2e: 84cf90ef jal ra,3bc00a7a + 3bc07a32: 60e2 ld ra,24(sp) + 3bc07a34: 4532 lw a0,12(sp) + 3bc07a36: 6105 addi sp,sp,32 + 3bc07a38: 8082 ret + +000000003bc07a3a : + 3bc07a3a: 1101 addi sp,sp,-32 + 3bc07a3c: 8a3d andi a2,a2,15 + 3bc07a3e: e822 sd s0,16(sp) + 3bc07a40: ec06 sd ra,24(sp) + 3bc07a42: e426 sd s1,8(sp) + 3bc07a44: e04a sd s2,0(sp) + 3bc07a46: 167d addi a2,a2,-1 + 3bc07a48: 47b9 li a5,14 + 3bc07a4a: 842a mv s0,a0 + 3bc07a4c: 30c7ec63 bltu a5,a2,3bc07d64 + 3bc07a50: 00004717 auipc a4,0x4 + 3bc07a54: a8070713 addi a4,a4,-1408 # 3bc0b4d0 + 3bc07a58: 44c7478b lrw a5,a4,a2,2 + 3bc07a5c: 84ae mv s1,a1 + 3bc07a5e: 8936 mv s2,a3 + 3bc07a60: 97ba add a5,a5,a4 + 3bc07a62: 8782 jr a5 + 3bc07a64: 4785 li a5,1 + 3bc07a66: 08f69a63 bne a3,a5,3bc07afa + 3bc07a6a: 852e mv a0,a1 + 3bc07a6c: fb9ff0ef jal ra,3bc07a24 + 3bc07a70: 0005079b sext.w a5,a0 + 3bc07a74: c2b2b737 lui a4,0xc2b2b + 3bc07a78: e3d7071b addiw a4,a4,-451 + 3bc07a7c: 24f7140b mulaw s0,a4,a5 + 3bc07a80: 27d4f7b7 lui a5,0x27d4f + 3bc07a84: b2f7879b addiw a5,a5,-1233 + 3bc07a88: 0491 addi s1,s1,4 + 3bc07a8a: 14f4140b srriw s0,s0,15 + 3bc07a8e: 02f4043b mulw s0,s0,a5 + 3bc07a92: 4785 li a5,1 + 3bc07a94: 06f91563 bne s2,a5,3bc07afe + 3bc07a98: 8526 mv a0,s1 + 3bc07a9a: f8bff0ef jal ra,3bc07a24 + 3bc07a9e: 0005079b sext.w a5,a0 + 3bc07aa2: c2b2b737 lui a4,0xc2b2b + 3bc07aa6: e3d7071b addiw a4,a4,-451 + 3bc07aaa: 0491 addi s1,s1,4 + 3bc07aac: 24f7140b mulaw s0,a4,a5 + 3bc07ab0: 27d4f7b7 lui a5,0x27d4f + 3bc07ab4: b2f7879b addiw a5,a5,-1233 + 3bc07ab8: 14f4140b srriw s0,s0,15 + 3bc07abc: 02f4043b mulw s0,s0,a5 + 3bc07ac0: 4785 li a5,1 + 3bc07ac2: 04f91063 bne s2,a5,3bc07b02 + 3bc07ac6: 8526 mv a0,s1 + 3bc07ac8: f5dff0ef jal ra,3bc07a24 + 3bc07acc: 0005079b sext.w a5,a0 + 3bc07ad0: c2b2b737 lui a4,0xc2b2b + 3bc07ad4: e3d7071b addiw a4,a4,-451 + 3bc07ad8: 24f7140b mulaw s0,a4,a5 + 3bc07adc: 27d4f7b7 lui a5,0x27d4f + 3bc07ae0: b2f7879b addiw a5,a5,-1233 + 3bc07ae4: 14f4150b srriw a0,s0,15 + 3bc07ae8: 02a7853b mulw a0,a5,a0 + 3bc07aec: 6442 ld s0,16(sp) + 3bc07aee: 60e2 ld ra,24(sp) + 3bc07af0: 64a2 ld s1,8(sp) + 3bc07af2: 6902 ld s2,0(sp) + 3bc07af4: 6105 addi sp,sp,32 + 3bc07af6: f03ff06f j 3bc079f8 + 3bc07afa: 419c lw a5,0(a1) + 3bc07afc: bfa5 j 3bc07a74 + 3bc07afe: 409c lw a5,0(s1) + 3bc07b00: b74d j 3bc07aa2 + 3bc07b02: 409c lw a5,0(s1) + 3bc07b04: b7f1 j 3bc07ad0 + 3bc07b06: 4785 li a5,1 + 3bc07b08: 0af69263 bne a3,a5,3bc07bac + 3bc07b0c: 852e mv a0,a1 + 3bc07b0e: f17ff0ef jal ra,3bc07a24 + 3bc07b12: 0005079b sext.w a5,a0 + 3bc07b16: c2b2b737 lui a4,0xc2b2b + 3bc07b1a: e3d7071b addiw a4,a4,-451 + 3bc07b1e: 24f7140b mulaw s0,a4,a5 + 3bc07b22: 27d4f7b7 lui a5,0x27d4f + 3bc07b26: b2f7879b addiw a5,a5,-1233 + 3bc07b2a: 0491 addi s1,s1,4 + 3bc07b2c: 14f4140b srriw s0,s0,15 + 3bc07b30: 02f4043b mulw s0,s0,a5 + 3bc07b34: 4785 li a5,1 + 3bc07b36: 06f91d63 bne s2,a5,3bc07bb0 + 3bc07b3a: 8526 mv a0,s1 + 3bc07b3c: ee9ff0ef jal ra,3bc07a24 + 3bc07b40: 0005079b sext.w a5,a0 + 3bc07b44: c2b2b737 lui a4,0xc2b2b + 3bc07b48: e3d7071b addiw a4,a4,-451 + 3bc07b4c: 0491 addi s1,s1,4 + 3bc07b4e: 24f7140b mulaw s0,a4,a5 + 3bc07b52: 27d4f7b7 lui a5,0x27d4f + 3bc07b56: b2f7879b addiw a5,a5,-1233 + 3bc07b5a: 14f4140b srriw s0,s0,15 + 3bc07b5e: 02f4043b mulw s0,s0,a5 + 3bc07b62: 4785 li a5,1 + 3bc07b64: 04f91863 bne s2,a5,3bc07bb4 + 3bc07b68: 8526 mv a0,s1 + 3bc07b6a: ebbff0ef jal ra,3bc07a24 + 3bc07b6e: 0005079b sext.w a5,a0 + 3bc07b72: c2b2b737 lui a4,0xc2b2b + 3bc07b76: e3d7071b addiw a4,a4,-451 + 3bc07b7a: 16566537 lui a0,0x16566 + 3bc07b7e: 7b15051b addiw a0,a0,1969 + 3bc07b82: 24f7140b mulaw s0,a4,a5 + 3bc07b86: 0044c783 lbu a5,4(s1) + 3bc07b8a: 27d4f737 lui a4,0x27d4f + 3bc07b8e: b2f7071b addiw a4,a4,-1233 + 3bc07b92: 02a787bb mulw a5,a5,a0 + 3bc07b96: 14f4140b srriw s0,s0,15 + 3bc07b9a: 9e378537 lui a0,0x9e378 + 3bc07b9e: 9b15051b addiw a0,a0,-1615 + 3bc07ba2: 24e4178b mulaw a5,s0,a4 + 3bc07ba6: 1557978b srriw a5,a5,21 + 3bc07baa: bf3d j 3bc07ae8 + 3bc07bac: 419c lw a5,0(a1) + 3bc07bae: b7a5 j 3bc07b16 + 3bc07bb0: 409c lw a5,0(s1) + 3bc07bb2: bf49 j 3bc07b44 + 3bc07bb4: 409c lw a5,0(s1) + 3bc07bb6: bf75 j 3bc07b72 + 3bc07bb8: 4785 li a5,1 + 3bc07bba: 0af69a63 bne a3,a5,3bc07c6e + 3bc07bbe: 852e mv a0,a1 + 3bc07bc0: e65ff0ef jal ra,3bc07a24 + 3bc07bc4: 0005079b sext.w a5,a0 + 3bc07bc8: c2b2b737 lui a4,0xc2b2b + 3bc07bcc: e3d7071b addiw a4,a4,-451 + 3bc07bd0: 24f7140b mulaw s0,a4,a5 + 3bc07bd4: 27d4f7b7 lui a5,0x27d4f + 3bc07bd8: b2f7879b addiw a5,a5,-1233 + 3bc07bdc: 0491 addi s1,s1,4 + 3bc07bde: 14f4140b srriw s0,s0,15 + 3bc07be2: 02f4043b mulw s0,s0,a5 + 3bc07be6: 4785 li a5,1 + 3bc07be8: 08f91563 bne s2,a5,3bc07c72 + 3bc07bec: 8526 mv a0,s1 + 3bc07bee: e37ff0ef jal ra,3bc07a24 + 3bc07bf2: 0005079b sext.w a5,a0 + 3bc07bf6: c2b2b737 lui a4,0xc2b2b + 3bc07bfa: e3d7071b addiw a4,a4,-451 + 3bc07bfe: 0491 addi s1,s1,4 + 3bc07c00: 24f7140b mulaw s0,a4,a5 + 3bc07c04: 27d4f7b7 lui a5,0x27d4f + 3bc07c08: b2f7879b addiw a5,a5,-1233 + 3bc07c0c: 14f4140b srriw s0,s0,15 + 3bc07c10: 02f4043b mulw s0,s0,a5 + 3bc07c14: 4785 li a5,1 + 3bc07c16: 06f91063 bne s2,a5,3bc07c76 + 3bc07c1a: 8526 mv a0,s1 + 3bc07c1c: e09ff0ef jal ra,3bc07a24 + 3bc07c20: 0005079b sext.w a5,a0 + 3bc07c24: c2b2b737 lui a4,0xc2b2b + 3bc07c28: e3d7071b addiw a4,a4,-451 + 3bc07c2c: 9e378537 lui a0,0x9e378 + 3bc07c30: 9b15051b addiw a0,a0,-1615 + 3bc07c34: 24f7140b mulaw s0,a4,a5 + 3bc07c38: 0044c703 lbu a4,4(s1) + 3bc07c3c: 165667b7 lui a5,0x16566 + 3bc07c40: 7b17869b addiw a3,a5,1969 + 3bc07c44: 27d4f7b7 lui a5,0x27d4f + 3bc07c48: b2f7879b addiw a5,a5,-1233 + 3bc07c4c: 02d7073b mulw a4,a4,a3 + 3bc07c50: 14f4140b srriw s0,s0,15 + 3bc07c54: 24f4170b mulaw a4,s0,a5 + 3bc07c58: 0054c783 lbu a5,5(s1) + 3bc07c5c: 02d787bb mulw a5,a5,a3 + 3bc07c60: 1557170b srriw a4,a4,21 + 3bc07c64: 24a7178b mulaw a5,a4,a0 + 3bc07c68: 1557978b srriw a5,a5,21 + 3bc07c6c: bdb5 j 3bc07ae8 + 3bc07c6e: 419c lw a5,0(a1) + 3bc07c70: bfa1 j 3bc07bc8 + 3bc07c72: 409c lw a5,0(s1) + 3bc07c74: b749 j 3bc07bf6 + 3bc07c76: 409c lw a5,0(s1) + 3bc07c78: b775 j 3bc07c24 + 3bc07c7a: 4785 li a5,1 + 3bc07c7c: 0ef69663 bne a3,a5,3bc07d68 + 3bc07c80: 852e mv a0,a1 + 3bc07c82: da3ff0ef jal ra,3bc07a24 + 3bc07c86: 0005079b sext.w a5,a0 + 3bc07c8a: c2b2b737 lui a4,0xc2b2b + 3bc07c8e: e3d7071b addiw a4,a4,-451 + 3bc07c92: 24f7140b mulaw s0,a4,a5 + 3bc07c96: 27d4f7b7 lui a5,0x27d4f + 3bc07c9a: b2f7879b addiw a5,a5,-1233 + 3bc07c9e: 0491 addi s1,s1,4 + 3bc07ca0: 14f4140b srriw s0,s0,15 + 3bc07ca4: 02f4043b mulw s0,s0,a5 + 3bc07ca8: 4785 li a5,1 + 3bc07caa: 0cf91163 bne s2,a5,3bc07d6c + 3bc07cae: 8526 mv a0,s1 + 3bc07cb0: d75ff0ef jal ra,3bc07a24 + 3bc07cb4: 0005079b sext.w a5,a0 + 3bc07cb8: c2b2b737 lui a4,0xc2b2b + 3bc07cbc: e3d7071b addiw a4,a4,-451 + 3bc07cc0: 0491 addi s1,s1,4 + 3bc07cc2: 24f7140b mulaw s0,a4,a5 + 3bc07cc6: 27d4f7b7 lui a5,0x27d4f + 3bc07cca: b2f7879b addiw a5,a5,-1233 + 3bc07cce: 14f4140b srriw s0,s0,15 + 3bc07cd2: 02f4043b mulw s0,s0,a5 + 3bc07cd6: 4785 li a5,1 + 3bc07cd8: 08f91c63 bne s2,a5,3bc07d70 + 3bc07cdc: 8526 mv a0,s1 + 3bc07cde: d47ff0ef jal ra,3bc07a24 + 3bc07ce2: 0005079b sext.w a5,a0 + 3bc07ce6: c2b2b737 lui a4,0xc2b2b + 3bc07cea: e3d7071b addiw a4,a4,-451 + 3bc07cee: 0491 addi s1,s1,4 + 3bc07cf0: 24f7140b mulaw s0,a4,a5 + 3bc07cf4: 27d4f7b7 lui a5,0x27d4f + 3bc07cf8: b2f7879b addiw a5,a5,-1233 + 3bc07cfc: 14f4140b srriw s0,s0,15 + 3bc07d00: 02f4043b mulw s0,s0,a5 + 3bc07d04: 9814c70b lbuia a4,(s1),1,0 + 3bc07d08: 165667b7 lui a5,0x16566 + 3bc07d0c: 7b17879b addiw a5,a5,1969 + 3bc07d10: 24f7140b mulaw s0,a4,a5 + 3bc07d14: 9e3787b7 lui a5,0x9e378 + 3bc07d18: 9b17879b addiw a5,a5,-1615 + 3bc07d1c: 1554140b srriw s0,s0,21 + 3bc07d20: 02f4043b mulw s0,s0,a5 + 3bc07d24: 9814c70b lbuia a4,(s1),1,0 + 3bc07d28: 165667b7 lui a5,0x16566 + 3bc07d2c: 7b17879b addiw a5,a5,1969 + 3bc07d30: 24f7140b mulaw s0,a4,a5 + 3bc07d34: 9e3787b7 lui a5,0x9e378 + 3bc07d38: 9b17879b addiw a5,a5,-1615 + 3bc07d3c: 1554140b srriw s0,s0,21 + 3bc07d40: 02f4043b mulw s0,s0,a5 + 3bc07d44: 0004c703 lbu a4,0(s1) + 3bc07d48: 165667b7 lui a5,0x16566 + 3bc07d4c: 7b17879b addiw a5,a5,1969 + 3bc07d50: 24f7140b mulaw s0,a4,a5 + 3bc07d54: 9e3787b7 lui a5,0x9e378 + 3bc07d58: 9b17879b addiw a5,a5,-1615 + 3bc07d5c: 1554140b srriw s0,s0,21 + 3bc07d60: 02f4043b mulw s0,s0,a5 + 3bc07d64: 8522 mv a0,s0 + 3bc07d66: b359 j 3bc07aec + 3bc07d68: 419c lw a5,0(a1) + 3bc07d6a: b705 j 3bc07c8a + 3bc07d6c: 409c lw a5,0(s1) + 3bc07d6e: b7a9 j 3bc07cb8 + 3bc07d70: 409c lw a5,0(s1) + 3bc07d72: bf95 j 3bc07ce6 + +000000003bc07d74 : + 3bc07d74: 711d addi sp,sp,-96 + 3bc07d76: e8a2 sd s0,80(sp) + 3bc07d78: e0ca sd s2,64(sp) + 3bc07d7a: fc4e sd s3,56(sp) + 3bc07d7c: ec86 sd ra,88(sp) + 3bc07d7e: e4a6 sd s1,72(sp) + 3bc07d80: f852 sd s4,48(sp) + 3bc07d82: f456 sd s5,40(sp) + 3bc07d84: f05a sd s6,32(sp) + 3bc07d86: ec5e sd s7,24(sp) + 3bc07d88: e862 sd s8,16(sp) + 3bc07d8a: e466 sd s9,8(sp) + 3bc07d8c: 00357793 andi a5,a0,3 + 3bc07d90: 892a mv s2,a0 + 3bc07d92: 89ae mv s3,a1 + 3bc07d94: 8432 mv s0,a2 + 3bc07d96: eff1 bnez a5,3bc07e72 + 3bc07d98: 47bd li a5,15 + 3bc07d9a: 0cb7f663 bgeu a5,a1,3bc07e66 + 3bc07d9e: 242347b7 lui a5,0x24234 + 3bc07da2: ff158813 addi a6,a1,-15 # fffffffffffefff1 <__BL2_END__+0xffffffffc43dc7e1> + 3bc07da6: 4287879b addiw a5,a5,1064 + 3bc07daa: 982a add a6,a6,a0 + 3bc07dac: 9fb1 addw a5,a5,a2 + 3bc07dae: 61c88537 lui a0,0x61c88 + 3bc07db2: 85ebd637 lui a2,0x85ebd + 3bc07db6: a776061b addiw a2,a2,-1417 + 3bc07dba: 64f5051b addiw a0,a0,1615 + 3bc07dbe: 9e3785b7 lui a1,0x9e378 + 3bc07dc2: 0086073b addw a4,a2,s0 + 3bc07dc6: 9d21 addw a0,a0,s0 + 3bc07dc8: 86ca mv a3,s2 + 3bc07dca: 9b15859b addiw a1,a1,-1615 + 3bc07dce: 0006a883 lw a7,0(a3) # ffffffffffff0000 <__BL2_END__+0xffffffffc43dc7f0> + 3bc07dd2: 24c8978b mulaw a5,a7,a2 + 3bc07dd6: 0046a883 lw a7,4(a3) + 3bc07dda: 24c8970b mulaw a4,a7,a2 + 3bc07dde: 0086a883 lw a7,8(a3) + 3bc07de2: 1537978b srriw a5,a5,19 + 3bc07de6: 24c8940b mulaw s0,a7,a2 + 3bc07dea: 00c6a883 lw a7,12(a3) + 3bc07dee: 1537170b srriw a4,a4,19 + 3bc07df2: 06c1 addi a3,a3,16 + 3bc07df4: 24c8950b mulaw a0,a7,a2 + 3bc07df8: 1534140b srriw s0,s0,19 + 3bc07dfc: 1535150b srriw a0,a0,19 + 3bc07e00: 02b787bb mulw a5,a5,a1 + 3bc07e04: 02b7073b mulw a4,a4,a1 + 3bc07e08: 02b4043b mulw s0,s0,a1 + 3bc07e0c: 02b5053b mulw a0,a0,a1 + 3bc07e10: fb06efe3 bltu a3,a6,3bc07dce + 3bc07e14: 00190593 addi a1,s2,1 + 3bc07e18: 46c1 li a3,16 + 3bc07e1a: 00b86663 bltu a6,a1,3bc07e26 + 3bc07e1e: ff098693 addi a3,s3,-16 + 3bc07e22: 9ac1 andi a3,a3,-16 + 3bc07e24: 06c1 addi a3,a3,16 + 3bc07e26: 15f7978b srriw a5,a5,31 + 3bc07e2a: 1597170b srriw a4,a4,25 + 3bc07e2e: 9fb9 addw a5,a5,a4 + 3bc07e30: 1544140b srriw s0,s0,20 + 3bc07e34: 9fa1 addw a5,a5,s0 + 3bc07e36: 14e5150b srriw a0,a0,14 + 3bc07e3a: 9936 add s2,s2,a3 + 3bc07e3c: 9d3d addw a0,a0,a5 + 3bc07e3e: 4681 li a3,0 + 3bc07e40: 6446 ld s0,80(sp) + 3bc07e42: 60e6 ld ra,88(sp) + 3bc07e44: 64a6 ld s1,72(sp) + 3bc07e46: 7a42 ld s4,48(sp) + 3bc07e48: 7aa2 ld s5,40(sp) + 3bc07e4a: 7b02 ld s6,32(sp) + 3bc07e4c: 6be2 ld s7,24(sp) + 3bc07e4e: 6c42 ld s8,16(sp) + 3bc07e50: 6ca2 ld s9,8(sp) + 3bc07e52: 00f9f613 andi a2,s3,15 + 3bc07e56: 85ca mv a1,s2 + 3bc07e58: 00a9853b addw a0,s3,a0 + 3bc07e5c: 6906 ld s2,64(sp) + 3bc07e5e: 79e2 ld s3,56(sp) + 3bc07e60: 6125 addi sp,sp,96 + 3bc07e62: bd9ff06f j 3bc07a3a + 3bc07e66: 16566537 lui a0,0x16566 + 3bc07e6a: 7b15051b addiw a0,a0,1969 + 3bc07e6e: 9d31 addw a0,a0,a2 + 3bc07e70: b7f9 j 3bc07e3e + 3bc07e72: 47bd li a5,15 + 3bc07e74: 0ab7fe63 bgeu a5,a1,3bc07f30 + 3bc07e78: 242344b7 lui s1,0x24234 + 3bc07e7c: 85ebdab7 lui s5,0x85ebd + 3bc07e80: 61c887b7 lui a5,0x61c88 + 3bc07e84: ff158c93 addi s9,a1,-15 # ffffffff9e377ff1 <__BL2_END__+0xffffffff627647e1> + 3bc07e88: 4284849b addiw s1,s1,1064 + 3bc07e8c: a77a8a9b addiw s5,s5,-1417 + 3bc07e90: 64f7879b addiw a5,a5,1615 + 3bc07e94: 9e378b37 lui s6,0x9e378 + 3bc07e98: 9caa add s9,s9,a0 + 3bc07e9a: 9cb1 addw s1,s1,a2 + 3bc07e9c: 00ca8c3b addw s8,s5,a2 + 3bc07ea0: 00c78bbb addw s7,a5,a2 + 3bc07ea4: 8a2a mv s4,a0 + 3bc07ea6: 9b1b0b1b addiw s6,s6,-1615 + 3bc07eaa: 8552 mv a0,s4 + 3bc07eac: b79ff0ef jal ra,3bc07a24 + 3bc07eb0: 24aa948b mulaw s1,s5,a0 + 3bc07eb4: 004a0513 addi a0,s4,4 + 3bc07eb8: b6dff0ef jal ra,3bc07a24 + 3bc07ebc: 8762 mv a4,s8 + 3bc07ebe: 24aa970b mulaw a4,s5,a0 + 3bc07ec2: 008a0513 addi a0,s4,8 + 3bc07ec6: 1534948b srriw s1,s1,19 + 3bc07eca: 1537170b srriw a4,a4,19 + 3bc07ece: 03670c3b mulw s8,a4,s6 + 3bc07ed2: b53ff0ef jal ra,3bc07a24 + 3bc07ed6: 24aa940b mulaw s0,s5,a0 + 3bc07eda: 00ca0513 addi a0,s4,12 + 3bc07ede: 0a41 addi s4,s4,16 + 3bc07ee0: 1534160b srriw a2,s0,19 + 3bc07ee4: 0366043b mulw s0,a2,s6 + 3bc07ee8: b3dff0ef jal ra,3bc07a24 + 3bc07eec: 87de mv a5,s7 + 3bc07eee: 24aa978b mulaw a5,s5,a0 + 3bc07ef2: 1537978b srriw a5,a5,19 + 3bc07ef6: 036484bb mulw s1,s1,s6 + 3bc07efa: 03678bbb mulw s7,a5,s6 + 3bc07efe: fb9a66e3 bltu s4,s9,3bc07eaa + 3bc07f02: 00190713 addi a4,s2,1 + 3bc07f06: 47c1 li a5,16 + 3bc07f08: 00ece663 bltu s9,a4,3bc07f14 + 3bc07f0c: ff098793 addi a5,s3,-16 + 3bc07f10: 9bc1 andi a5,a5,-16 + 3bc07f12: 07c1 addi a5,a5,16 + 3bc07f14: 159c150b srriw a0,s8,25 + 3bc07f18: 15f4948b srriw s1,s1,31 + 3bc07f1c: 9ca9 addw s1,s1,a0 + 3bc07f1e: 1544150b srriw a0,s0,20 + 3bc07f22: 993e add s2,s2,a5 + 3bc07f24: 9d25 addw a0,a0,s1 + 3bc07f26: 14eb940b srriw s0,s7,14 + 3bc07f2a: 9d21 addw a0,a0,s0 + 3bc07f2c: 4685 li a3,1 + 3bc07f2e: bf09 j 3bc07e40 + 3bc07f30: 16566537 lui a0,0x16566 + 3bc07f34: 7b15051b addiw a0,a0,1969 + 3bc07f38: bfcd j 3bc07f2a + +000000003bc07f3a : + 3bc07f3a: 715d addi sp,sp,-80 + 3bc07f3c: e0a2 sd s0,64(sp) + 3bc07f3e: fc26 sd s1,56(sp) + 3bc07f40: 842e mv s0,a1 + 3bc07f42: 84aa mv s1,a0 + 3bc07f44: 03000613 li a2,48 + 3bc07f48: 4581 li a1,0 + 3bc07f4a: 850a mv a0,sp + 3bc07f4c: e486 sd ra,72(sp) + 3bc07f4e: ad3f80ef jal ra,3bc00a20 + 3bc07f52: 242347b7 lui a5,0x24234 + 3bc07f56: 4287879b addiw a5,a5,1064 + 3bc07f5a: 9fa1 addw a5,a5,s0 + 3bc07f5c: c43e sw a5,8(sp) + 3bc07f5e: 85ebd7b7 lui a5,0x85ebd + 3bc07f62: a777879b addiw a5,a5,-1417 + 3bc07f66: 9fa1 addw a5,a5,s0 + 3bc07f68: c63e sw a5,12(sp) + 3bc07f6a: 61c887b7 lui a5,0x61c88 + 3bc07f6e: 64f7879b addiw a5,a5,1615 + 3bc07f72: c822 sw s0,16(sp) + 3bc07f74: 858a mv a1,sp + 3bc07f76: 9c3d addw s0,s0,a5 + 3bc07f78: 8526 mv a0,s1 + 3bc07f7a: 02c00613 li a2,44 + 3bc07f7e: ca22 sw s0,20(sp) + 3bc07f80: afbf80ef jal ra,3bc00a7a + 3bc07f84: 60a6 ld ra,72(sp) + 3bc07f86: 6406 ld s0,64(sp) + 3bc07f88: 74e2 ld s1,56(sp) + 3bc07f8a: 4501 li a0,0 + 3bc07f8c: 6161 addi sp,sp,80 + 3bc07f8e: 8082 ret + +000000003bc07f90 : + 3bc07f90: 711d addi sp,sp,-96 + 3bc07f92: e0ca sd s2,64(sp) + 3bc07f94: ec86 sd ra,88(sp) + 3bc07f96: e8a2 sd s0,80(sp) + 3bc07f98: e4a6 sd s1,72(sp) + 3bc07f9a: fc4e sd s3,56(sp) + 3bc07f9c: f852 sd s4,48(sp) + 3bc07f9e: f456 sd s5,40(sp) + 3bc07fa0: f05a sd s6,32(sp) + 3bc07fa2: ec5e sd s7,24(sp) + 3bc07fa4: e862 sd s8,16(sp) + 3bc07fa6: e466 sd s9,8(sp) + 3bc07fa8: e06a sd s10,0(sp) + 3bc07faa: 4905 li s2,1 + 3bc07fac: c5b9 beqz a1,3bc07ffa + 3bc07fae: 4114 lw a3,0(a0) + 3bc07fb0: 842a mv s0,a0 + 3bc07fb2: 01063713 sltiu a4,a2,16 + 3bc07fb6: 00c6853b addw a0,a3,a2 + 3bc07fba: 483d li a6,15 + 3bc07fbc: 00a836b3 sltu a3,a6,a0 + 3bc07fc0: 00174713 xori a4,a4,1 + 3bc07fc4: 8f55 or a4,a4,a3 + 3bc07fc6: 4054 lw a3,4(s0) + 3bc07fc8: c008 sw a0,0(s0) + 3bc07fca: 84ae mv s1,a1 + 3bc07fcc: 8f55 or a4,a4,a3 + 3bc07fce: c058 sw a4,4(s0) + 3bc07fd0: 5418 lw a4,40(s0) + 3bc07fd2: 00c58d33 add s10,a1,a2 + 3bc07fd6: 0006091b sext.w s2,a2 + 3bc07fda: 7c07350b extu a0,a4,31,0 + 3bc07fde: 00a607b3 add a5,a2,a0 + 3bc07fe2: 02f86b63 bltu a6,a5,3bc08018 + 3bc07fe6: 01840793 addi a5,s0,24 # 10018 <__BSS_SIZE__+0xa408> + 3bc07fea: 953e add a0,a0,a5 + 3bc07fec: a8ff80ef jal ra,3bc00a7a + 3bc07ff0: 541c lw a5,40(s0) + 3bc07ff2: 012787bb addw a5,a5,s2 + 3bc07ff6: d41c sw a5,40(s0) + 3bc07ff8: 4901 li s2,0 + 3bc07ffa: 60e6 ld ra,88(sp) + 3bc07ffc: 6446 ld s0,80(sp) + 3bc07ffe: 64a6 ld s1,72(sp) + 3bc08000: 79e2 ld s3,56(sp) + 3bc08002: 7a42 ld s4,48(sp) + 3bc08004: 7aa2 ld s5,40(sp) + 3bc08006: 7b02 ld s6,32(sp) + 3bc08008: 6be2 ld s7,24(sp) + 3bc0800a: 6c42 ld s8,16(sp) + 3bc0800c: 6ca2 ld s9,8(sp) + 3bc0800e: 6d02 ld s10,0(sp) + 3bc08010: 854a mv a0,s2 + 3bc08012: 6906 ld s2,64(sp) + 3bc08014: 6125 addi sp,sp,96 + 3bc08016: 8082 ret + 3bc08018: c355 beqz a4,3bc080bc + 3bc0801a: 4b41 li s6,16 + 3bc0801c: 40eb063b subw a2,s6,a4 + 3bc08020: 01840993 addi s3,s0,24 + 3bc08024: 7c06360b extu a2,a2,31,0 + 3bc08028: 954e add a0,a0,s3 + 3bc0802a: a51f80ef jal ra,3bc00a7a + 3bc0802e: 00842903 lw s2,8(s0) + 3bc08032: 854e mv a0,s3 + 3bc08034: 85ebdab7 lui s5,0x85ebd + 3bc08038: 9edff0ef jal ra,3bc07a24 + 3bc0803c: a77a8a9b addiw s5,s5,-1417 + 3bc08040: 24aa990b mulaw s2,s5,a0 + 3bc08044: 9e378a37 lui s4,0x9e378 + 3bc08048: 9b1a0a1b addiw s4,s4,-1615 + 3bc0804c: 00c42983 lw s3,12(s0) + 3bc08050: 01c40513 addi a0,s0,28 + 3bc08054: 1539190b srriw s2,s2,19 + 3bc08058: 0349093b mulw s2,s2,s4 + 3bc0805c: 01242423 sw s2,8(s0) + 3bc08060: 9c5ff0ef jal ra,3bc07a24 + 3bc08064: 24aa998b mulaw s3,s5,a0 + 3bc08068: 02040513 addi a0,s0,32 + 3bc0806c: 1539998b srriw s3,s3,19 + 3bc08070: 034989bb mulw s3,s3,s4 + 3bc08074: 01342623 sw s3,12(s0) + 3bc08078: 01042983 lw s3,16(s0) + 3bc0807c: 9a9ff0ef jal ra,3bc07a24 + 3bc08080: 01442903 lw s2,20(s0) + 3bc08084: 24aa998b mulaw s3,s5,a0 + 3bc08088: 02440513 addi a0,s0,36 + 3bc0808c: 1539998b srriw s3,s3,19 + 3bc08090: 034989bb mulw s3,s3,s4 + 3bc08094: 01342823 sw s3,16(s0) + 3bc08098: 98dff0ef jal ra,3bc07a24 + 3bc0809c: 24aa990b mulaw s2,s5,a0 + 3bc080a0: 541c lw a5,40(s0) + 3bc080a2: 02042423 sw zero,40(s0) + 3bc080a6: 40fb0b3b subw s6,s6,a5 + 3bc080aa: 7c0b3b0b extu s6,s6,31,0 + 3bc080ae: 94da add s1,s1,s6 + 3bc080b0: 1539190b srriw s2,s2,19 + 3bc080b4: 0349093b mulw s2,s2,s4 + 3bc080b8: 01242a23 sw s2,20(s0) + 3bc080bc: ff0d0913 addi s2,s10,-16 + 3bc080c0: 08996363 bltu s2,s1,3bc08146 + 3bc080c4: e3844c8b lwd s9,s8,(s0),1,3 + 3bc080c8: e5444a8b lwd s5,s4,(s0),2,3 + 3bc080cc: 85ebdbb7 lui s7,0x85ebd + 3bc080d0: 9e378b37 lui s6,0x9e378 + 3bc080d4: 89a6 mv s3,s1 + 3bc080d6: a77b8b9b addiw s7,s7,-1417 + 3bc080da: 9b1b0b1b addiw s6,s6,-1615 + 3bc080de: 854e mv a0,s3 + 3bc080e0: 945ff0ef jal ra,3bc07a24 + 3bc080e4: 24ab9c8b mulaw s9,s7,a0 + 3bc080e8: 00498513 addi a0,s3,4 + 3bc080ec: 939ff0ef jal ra,3bc07a24 + 3bc080f0: 24ab9c0b mulaw s8,s7,a0 + 3bc080f4: 00898513 addi a0,s3,8 + 3bc080f8: 92dff0ef jal ra,3bc07a24 + 3bc080fc: 153c9c8b srriw s9,s9,19 + 3bc08100: 24ab9a8b mulaw s5,s7,a0 + 3bc08104: 00c98513 addi a0,s3,12 + 3bc08108: 91dff0ef jal ra,3bc07a24 + 3bc0810c: 153c1c0b srriw s8,s8,19 + 3bc08110: 09c1 addi s3,s3,16 + 3bc08112: 24ab9a0b mulaw s4,s7,a0 + 3bc08116: 153a9a8b srriw s5,s5,19 + 3bc0811a: 153a1a0b srriw s4,s4,19 + 3bc0811e: 036c8cbb mulw s9,s9,s6 + 3bc08122: 036c0c3b mulw s8,s8,s6 + 3bc08126: 036a8abb mulw s5,s5,s6 + 3bc0812a: 036a0a3b mulw s4,s4,s6 + 3bc0812e: fb3978e3 bgeu s2,s3,3bc080de + 3bc08132: 40990933 sub s2,s2,s1 + 3bc08136: ff097913 andi s2,s2,-16 + 3bc0813a: 0941 addi s2,s2,16 + 3bc0813c: 94ca add s1,s1,s2 + 3bc0813e: e3845c8b swd s9,s8,(s0),1,3 + 3bc08142: e5445a8b swd s5,s4,(s0),2,3 + 3bc08146: 4901 li s2,0 + 3bc08148: eba4f9e3 bgeu s1,s10,3bc07ffa + 3bc0814c: 409d0d33 sub s10,s10,s1 + 3bc08150: 866a mv a2,s10 + 3bc08152: 85a6 mv a1,s1 + 3bc08154: 01840513 addi a0,s0,24 + 3bc08158: 923f80ef jal ra,3bc00a7a + 3bc0815c: 03a42423 sw s10,40(s0) + 3bc08160: bd69 j 3bc07ffa + +000000003bc08162 : + 3bc08162: 415c lw a5,4(a0) + 3bc08164: 4918 lw a4,16(a0) + 3bc08166: cb8d beqz a5,3bc08198 + 3bc08168: 451c lw a5,8(a0) + 3bc0816a: 4554 lw a3,12(a0) + 3bc0816c: 1547170b srriw a4,a4,20 + 3bc08170: 15f7978b srriw a5,a5,31 + 3bc08174: 1596968b srriw a3,a3,25 + 3bc08178: 9fb5 addw a5,a5,a3 + 3bc0817a: 9fb9 addw a5,a5,a4 + 3bc0817c: 4958 lw a4,20(a0) + 3bc0817e: 14e7170b srriw a4,a4,14 + 3bc08182: 85aa mv a1,a0 + 3bc08184: 9fb9 addw a5,a5,a4 + 3bc08186: 5ac5c70b lwia a4,(a1),12,1 + 3bc0818a: 02856603 lwu a2,40(a0) # 16566028 + 3bc0818e: 4681 li a3,0 + 3bc08190: 00f7053b addw a0,a4,a5 + 3bc08194: 8a7ff06f j 3bc07a3a + 3bc08198: 165667b7 lui a5,0x16566 + 3bc0819c: 7b17879b addiw a5,a5,1969 + 3bc081a0: b7cd j 3bc08182 + +000000003bc081a2 : + 3bc081a2: 1141 addi sp,sp,-16 + 3bc081a4: e022 sd s0,0(sp) + 3bc081a6: 842a mv s0,a0 + 3bc081a8: 00003517 auipc a0,0x3 + 3bc081ac: 36850513 addi a0,a0,872 # 3bc0b510 + 3bc081b0: e406 sd ra,8(sp) + 3bc081b2: 9a6f80ef jal ra,3bc00358 + 3bc081b6: 400c lw a1,0(s0) + 3bc081b8: 00003517 auipc a0,0x3 + 3bc081bc: 36850513 addi a0,a0,872 # 3bc0b520 + 3bc081c0: 998f80ef jal ra,3bc00358 + 3bc081c4: 012000ef jal ra,3bc081d6 + 3bc081c8: 296000ef jal ra,3bc0845e + 3bc081cc: 60a2 ld ra,8(sp) + 3bc081ce: 6402 ld s0,0(sp) + 3bc081d0: 4501 li a0,0 + 3bc081d2: 0141 addi sp,sp,16 + 3bc081d4: 8082 ret + +000000003bc081d6 : + 3bc081d6: 030007b7 lui a5,0x3000 + 3bc081da: 43cc lw a1,4(a5) + 3bc081dc: 7139 addi sp,sp,-64 + 3bc081de: 030507b7 lui a5,0x3050 + 3bc081e2: 79c5b58b extu a1,a1,30,28 + 3bc081e6: 00003517 auipc a0,0x3 + 3bc081ea: 35250513 addi a0,a0,850 # 3bc0b538 + 3bc081ee: f822 sd s0,48(sp) + 3bc081f0: f426 sd s1,40(sp) + 3bc081f2: f04a sd s2,32(sp) + 3bc081f4: ec4e sd s3,24(sp) + 3bc081f6: fc06 sd ra,56(sp) + 3bc081f8: 1087a983 lw s3,264(a5) # 3050108 <__BSS_SIZE__+0x304a4f8> + 3bc081fc: e42e sd a1,8(sp) + 3bc081fe: 95af80ef jal ra,3bc00358 + 3bc08202: 65a2 ld a1,8(sp) + 3bc08204: 00003717 auipc a4,0x3 + 3bc08208: 41870713 addi a4,a4,1048 # 3bc0b61c + 3bc0820c: 0000b917 auipc s2,0xb + 3bc08210: 60290913 addi s2,s2,1538 # 3bc1380e + 3bc08214: 44b7478b lrw a5,a4,a1,2 + 3bc08218: 0000b497 auipc s1,0xb + 3bc0821c: 5f448493 addi s1,s1,1524 # 3bc1380c + 3bc08220: 0000b417 auipc s0,0xb + 3bc08224: 5ef40413 addi s0,s0,1519 # 3bc1380f + 3bc08228: 97ba add a5,a5,a4 + 3bc0822a: 8782 jr a5 + 3bc0822c: 478d li a5,3 + 3bc0822e: 4709 li a4,2 + 3bc08230: 00f90023 sb a5,0(s2) + 3bc08234: 00e48023 sb a4,0(s1) + 3bc08238: 00f40023 sb a5,0(s0) + 3bc0823c: a825 j 3bc08274 + 3bc0823e: 4791 li a5,4 + 3bc08240: 00f90023 sb a5,0(s2) + 3bc08244: 4785 li a5,1 + 3bc08246: 00f48023 sb a5,0(s1) + 3bc0824a: 478d li a5,3 + 3bc0824c: b7f5 j 3bc08238 + 3bc0824e: 00003517 auipc a0,0x3 + 3bc08252: 2fa50513 addi a0,a0,762 # 3bc0b548 + 3bc08256: 902f80ef jal ra,3bc00358 + 3bc0825a: 2981 sext.w s3,s3 + 3bc0825c: 6559b78b extu a5,s3,25,21 + 3bc08260: 00f90023 sb a5,0(s2) + 3bc08264: 71a9b78b extu a5,s3,28,26 + 3bc08268: 01d9d99b srliw s3,s3,0x1d + 3bc0826c: 00f48023 sb a5,0(s1) + 3bc08270: 01340023 sb s3,0(s0) + 3bc08274: 00044583 lbu a1,0(s0) + 3bc08278: 00094683 lbu a3,0(s2) + 3bc0827c: 0004c603 lbu a2,0(s1) + 3bc08280: 00003517 auipc a0,0x3 + 3bc08284: 2f050513 addi a0,a0,752 # 3bc0b570 + 3bc08288: 8d0f80ef jal ra,3bc00358 + 3bc0828c: 00094583 lbu a1,0(s2) + 3bc08290: 4725 li a4,9 + 3bc08292: fff5879b addiw a5,a1,-1 + 3bc08296: 0ff7f793 andi a5,a5,255 + 3bc0829a: 08f76963 bltu a4,a5,3bc0832c + 3bc0829e: 00003717 auipc a4,0x3 + 3bc082a2: 39e70713 addi a4,a4,926 # 3bc0b63c + 3bc082a6: 44f7478b lrw a5,a4,a5,2 + 3bc082aa: 0000b917 auipc s2,0xb + 3bc082ae: 56390913 addi s2,s2,1379 # 3bc1380d + 3bc082b2: 97ba add a5,a5,a4 + 3bc082b4: 8782 jr a5 + 3bc082b6: 478d li a5,3 + 3bc082b8: 00f90023 sb a5,0(s2) + 3bc082bc: 4789 li a5,2 + 3bc082be: 00f48023 sb a5,0(s1) + 3bc082c2: 4785 li a5,1 + 3bc082c4: bf95 j 3bc08238 + 3bc082c6: 4791 li a5,4 + 3bc082c8: 00f90023 sb a5,0(s2) + 3bc082cc: 4785 li a5,1 + 3bc082ce: 00f48023 sb a5,0(s1) + 3bc082d2: b79d j 3bc08238 + 3bc082d4: 00003517 auipc a0,0x3 + 3bc082d8: 27c50513 addi a0,a0,636 # 3bc0b550 + 3bc082dc: 87cf80ef jal ra,3bc00358 + 3bc082e0: bf51 j 3bc08274 + 3bc082e2: 00003517 auipc a0,0x3 + 3bc082e6: 29e50513 addi a0,a0,670 # 3bc0b580 + 3bc082ea: 86ef80ef jal ra,3bc00358 + 3bc082ee: 4785 li a5,1 + 3bc082f0: 00f90023 sb a5,0(s2) + 3bc082f4: 0004c583 lbu a1,0(s1) + 3bc082f8: 478d li a5,3 + 3bc082fa: 0cf58963 beq a1,a5,3bc083cc + 3bc082fe: 04b7e263 bltu a5,a1,3bc08342 + 3bc08302: 4485 li s1,1 + 3bc08304: 04958a63 beq a1,s1,3bc08358 + 3bc08308: 4789 li a5,2 + 3bc0830a: 0af58463 beq a1,a5,3bc083b2 + 3bc0830e: 00003517 auipc a0,0x3 + 3bc08312: 2ba50513 addi a0,a0,698 # 3bc0b5c8 + 3bc08316: 842f80ef jal ra,3bc00358 + 3bc0831a: a82d j 3bc08354 + 3bc0831c: 00003517 auipc a0,0x3 + 3bc08320: 26c50513 addi a0,a0,620 # 3bc0b588 + 3bc08324: 834f80ef jal ra,3bc00358 + 3bc08328: 4789 li a5,2 + 3bc0832a: b7d9 j 3bc082f0 + 3bc0832c: 00003517 auipc a0,0x3 + 3bc08330: 26450513 addi a0,a0,612 # 3bc0b590 + 3bc08334: 824f80ef jal ra,3bc00358 + 3bc08338: 0000b797 auipc a5,0xb + 3bc0833c: 4c078aa3 sb zero,1237(a5) # 3bc1380d + 3bc08340: bf55 j 3bc082f4 + 3bc08342: 4791 li a5,4 + 3bc08344: 00003517 auipc a0,0x3 + 3bc08348: 27c50513 addi a0,a0,636 # 3bc0b5c0 + 3bc0834c: fcf591e3 bne a1,a5,3bc0830e + 3bc08350: 808f80ef jal ra,3bc00358 + 3bc08354: 4781 li a5,0 + 3bc08356: a839 j 3bc08374 + 3bc08358: 00003517 auipc a0,0x3 + 3bc0835c: 25050513 addi a0,a0,592 # 3bc0b5a8 + 3bc08360: e42e sd a1,8(sp) + 3bc08362: ff7f70ef jal ra,3bc00358 + 3bc08366: 00044783 lbu a5,0(s0) + 3bc0836a: 65a2 ld a1,8(sp) + 3bc0836c: 06b78563 beq a5,a1,3bc083d6 + 3bc08370: 67e1 lui a5,0x18 + 3bc08372: 07ad addi a5,a5,11 + 3bc08374: 03000737 lui a4,0x3000 + 3bc08378: 08f72623 sw a5,140(a4) # 300008c <__BSS_SIZE__+0x2ffa47c> + 3bc0837c: 00044583 lbu a1,0(s0) + 3bc08380: 4789 li a5,2 + 3bc08382: 06f58c63 beq a1,a5,3bc083fa + 3bc08386: 478d li a5,3 + 3bc08388: 04f58d63 beq a1,a5,3bc083e2 + 3bc0838c: 4785 li a5,1 + 3bc0838e: 00003517 auipc a0,0x3 + 3bc08392: 25250513 addi a0,a0,594 # 3bc0b5e0 + 3bc08396: 04f58a63 beq a1,a5,3bc083ea + 3bc0839a: 7442 ld s0,48(sp) + 3bc0839c: 70e2 ld ra,56(sp) + 3bc0839e: 74a2 ld s1,40(sp) + 3bc083a0: 7902 ld s2,32(sp) + 3bc083a2: 69e2 ld s3,24(sp) + 3bc083a4: 00003517 auipc a0,0x3 + 3bc083a8: 26450513 addi a0,a0,612 # 3bc0b608 + 3bc083ac: 6121 addi sp,sp,64 + 3bc083ae: fabf706f j 3bc00358 + 3bc083b2: 00003517 auipc a0,0x3 + 3bc083b6: 1fe50513 addi a0,a0,510 # 3bc0b5b0 + 3bc083ba: f9ff70ef jal ra,3bc00358 + 3bc083be: 00044783 lbu a5,0(s0) + 3bc083c2: 00978d63 beq a5,s1,3bc083dc + 3bc083c6: 67e1 lui a5,0x18 + 3bc083c8: 07ed addi a5,a5,27 + 3bc083ca: b76d j 3bc08374 + 3bc083cc: 00003517 auipc a0,0x3 + 3bc083d0: 1ec50513 addi a0,a0,492 # 3bc0b5b8 + 3bc083d4: bfb5 j 3bc08350 + 3bc083d6: 67e1 lui a5,0x18 + 3bc083d8: 07b1 addi a5,a5,12 + 3bc083da: bf69 j 3bc08374 + 3bc083dc: 67e1 lui a5,0x18 + 3bc083de: 07f1 addi a5,a5,28 + 3bc083e0: bf51 j 3bc08374 + 3bc083e2: 00003517 auipc a0,0x3 + 3bc083e6: 20e50513 addi a0,a0,526 # 3bc0b5f0 + 3bc083ea: 7442 ld s0,48(sp) + 3bc083ec: 70e2 ld ra,56(sp) + 3bc083ee: 74a2 ld s1,40(sp) + 3bc083f0: 7902 ld s2,32(sp) + 3bc083f2: 69e2 ld s3,24(sp) + 3bc083f4: 6121 addi sp,sp,64 + 3bc083f6: f63f706f j 3bc00358 + 3bc083fa: 00003517 auipc a0,0x3 + 3bc083fe: 20650513 addi a0,a0,518 # 3bc0b600 + 3bc08402: b7e5 j 3bc083ea + +000000003bc08404 : + 3bc08404: 0000b517 auipc a0,0xb + 3bc08408: 40a54503 lbu a0,1034(a0) # 3bc1380e + 3bc0840c: 8082 ret + +000000003bc0840e : + 3bc0840e: 00030737 lui a4,0x30 + 3bc08412: 080087b7 lui a5,0x8008 + 3bc08416: 0705 addi a4,a4,1 + 3bc08418: c398 sw a4,0(a5) + 3bc0841a: 08078693 addi a3,a5,128 # 8008080 + 3bc0841e: c298 sw a4,0(a3) + 3bc08420: 10078693 addi a3,a5,256 + 3bc08424: c298 sw a4,0(a3) + 3bc08426: 18078693 addi a3,a5,384 + 3bc0842a: c298 sw a4,0(a3) + 3bc0842c: 20078693 addi a3,a5,512 + 3bc08430: c298 sw a4,0(a3) + 3bc08432: 28078693 addi a3,a5,640 + 3bc08436: c298 sw a4,0(a3) + 3bc08438: 30078693 addi a3,a5,768 + 3bc0843c: c298 sw a4,0(a3) + 3bc0843e: 38078693 addi a3,a5,896 + 3bc08442: c298 sw a4,0(a3) + 3bc08444: 40078693 addi a3,a5,1024 + 3bc08448: c298 sw a4,0(a3) + 3bc0844a: 48078693 addi a3,a5,1152 + 3bc0844e: c298 sw a4,0(a3) + 3bc08450: 50078693 addi a3,a5,1280 + 3bc08454: c298 sw a4,0(a3) + 3bc08456: 58078793 addi a5,a5,1408 + 3bc0845a: c398 sw a4,0(a5) + 3bc0845c: 8082 ret + +000000003bc0845e : + 3bc0845e: 7179 addi sp,sp,-48 + 3bc08460: f406 sd ra,40(sp) + 3bc08462: 3f2010ef jal ra,3bc09854 + 3bc08466: 7ae010ef jal ra,3bc09c14 + 3bc0846a: 0800a7b7 lui a5,0x800a + 3bc0846e: 0207a023 sw zero,32(a5) # 800a020 + 3bc08472: 007797b7 lui a5,0x779 + 3bc08476: 03000737 lui a4,0x3000 + 3bc0847a: 8aa78793 addi a5,a5,-1878 # 7788aa <__BSS_SIZE__+0x772c9a> + 3bc0847e: 1cf72c23 sw a5,472(a4) # 30001d8 <__BSS_SIZE__+0x2ffa5c8> + 3bc08482: 6789 lui a5,0x2 + 3bc08484: 29978793 addi a5,a5,665 # 2299 <__BSS_SIZE__-0x3977> + 3bc08488: 1cf72e23 sw a5,476(a4) + 3bc0848c: 2bb010ef jal ra,3bc09f46 + 3bc08490: 283000ef jal ra,3bc08f12 + 3bc08494: 444010ef jal ra,3bc098d8 + 3bc08498: 2a0010ef jal ra,3bc09738 + 3bc0849c: 297000ef jal ra,3bc08f32 + 3bc084a0: 083000ef jal ra,3bc08d22 + 3bc084a4: 17d000ef jal ra,3bc08e20 + 3bc084a8: 1bb000ef jal ra,3bc08e62 + 3bc084ac: 103000ef jal ra,3bc08dae + 3bc084b0: 139000ef jal ra,3bc08de8 + 3bc084b4: 1db000ef jal ra,3bc08e8e + 3bc084b8: 1ca000ef jal ra,3bc08682 + 3bc084bc: 0810 addi a2,sp,16 + 3bc084be: 082c addi a1,sp,24 + 3bc084c0: 0068 addi a0,sp,12 + 3bc084c2: 4f4000ef jal ra,3bc089b6 + 3bc084c6: 47b2 lw a5,12(sp) + 3bc084c8: e385 bnez a5,3bc084e8 + 3bc084ca: 00003517 auipc a0,0x3 + 3bc084ce: 19e50513 addi a0,a0,414 # 3bc0b668 + 3bc084d2: e87f70ef jal ra,3bc00358 + 3bc084d6: fac1468b ldd a3,a2,(sp),1,4 + 3bc084da: 45b2 lw a1,12(sp) + 3bc084dc: 00003517 auipc a0,0x3 + 3bc084e0: 1a450513 addi a0,a0,420 # 3bc0b680 + 3bc084e4: e75f70ef jal ra,3bc00358 + 3bc084e8: 17f010ef jal ra,3bc09e66 + 3bc084ec: 3cd000ef jal ra,3bc090b8 + 3bc084f0: 192000ef jal ra,3bc08682 + 3bc084f4: 0810 addi a2,sp,16 + 3bc084f6: 082c addi a1,sp,24 + 3bc084f8: 0068 addi a0,sp,12 + 3bc084fa: 4bc000ef jal ra,3bc089b6 + 3bc084fe: 47b2 lw a5,12(sp) + 3bc08500: e385 bnez a5,3bc08520 + 3bc08502: 00003517 auipc a0,0x3 + 3bc08506: 16650513 addi a0,a0,358 # 3bc0b668 + 3bc0850a: e4ff70ef jal ra,3bc00358 + 3bc0850e: fac1468b ldd a3,a2,(sp),1,4 + 3bc08512: 45b2 lw a1,12(sp) + 3bc08514: 00003517 auipc a0,0x3 + 3bc08518: 16c50513 addi a0,a0,364 # 3bc0b680 + 3bc0851c: e3df70ef jal ra,3bc00358 + 3bc08520: 56f000ef jal ra,3bc0928e + 3bc08524: 15e000ef jal ra,3bc08682 + 3bc08528: 0810 addi a2,sp,16 + 3bc0852a: 082c addi a1,sp,24 + 3bc0852c: 0068 addi a0,sp,12 + 3bc0852e: 488000ef jal ra,3bc089b6 + 3bc08532: 47b2 lw a5,12(sp) + 3bc08534: e385 bnez a5,3bc08554 + 3bc08536: 00003517 auipc a0,0x3 + 3bc0853a: 13250513 addi a0,a0,306 # 3bc0b668 + 3bc0853e: e1bf70ef jal ra,3bc00358 + 3bc08542: fac1468b ldd a3,a2,(sp),1,4 + 3bc08546: 45b2 lw a1,12(sp) + 3bc08548: 00003517 auipc a0,0x3 + 3bc0854c: 13850513 addi a0,a0,312 # 3bc0b680 + 3bc08550: e09f70ef jal ra,3bc00358 + 3bc08554: 4589 li a1,2 + 3bc08556: 4505 li a0,1 + 3bc08558: 05e010ef jal ra,3bc095b6 + 3bc0855c: 4585 li a1,1 + 3bc0855e: 4505 li a0,1 + 3bc08560: 056010ef jal ra,3bc095b6 + 3bc08564: 4581 li a1,0 + 3bc08566: 4505 li a0,1 + 3bc08568: 04e010ef jal ra,3bc095b6 + 3bc0856c: 116000ef jal ra,3bc08682 + 3bc08570: 0810 addi a2,sp,16 + 3bc08572: 082c addi a1,sp,24 + 3bc08574: 0068 addi a0,sp,12 + 3bc08576: 440000ef jal ra,3bc089b6 + 3bc0857a: 08000737 lui a4,0x8000 + 3bc0857e: 08c72783 lw a5,140(a4) # 800008c + 3bc08582: 4505 li a0,1 + 3bc08584: 2781 sext.w a5,a5 + 3bc08586: f0f7f793 andi a5,a5,-241 + 3bc0858a: 0107e793 ori a5,a5,16 + 3bc0858e: 0000b697 auipc a3,0xb + 3bc08592: 26f6a123 sw a5,610(a3) # 3bc137f0 + 3bc08596: 08f72623 sw a5,140(a4) + 3bc0859a: 633000ef jal ra,3bc093cc + 3bc0859e: 0e4000ef jal ra,3bc08682 + 3bc085a2: 0810 addi a2,sp,16 + 3bc085a4: 082c addi a1,sp,24 + 3bc085a6: 0068 addi a0,sp,12 + 3bc085a8: 40e000ef jal ra,3bc089b6 + 3bc085ac: 08d010ef jal ra,3bc09e38 + 3bc085b0: 00b10513 addi a0,sp,11 + 3bc085b4: 186010ef jal ra,3bc0973a + 3bc085b8: 00b14503 lbu a0,11(sp) + 3bc085bc: 0d9010ef jal ra,3bc09e94 + 3bc085c0: 00b14503 lbu a0,11(sp) + 3bc085c4: 64e010ef jal ra,3bc09c12 + 3bc085c8: 281000ef jal ra,3bc09048 + 3bc085cc: 0b6000ef jal ra,3bc08682 + 3bc085d0: 0810 addi a2,sp,16 + 3bc085d2: 082c addi a1,sp,24 + 3bc085d4: 0068 addi a0,sp,12 + 3bc085d6: 3e0000ef jal ra,3bc089b6 + 3bc085da: 47b2 lw a5,12(sp) + 3bc085dc: eb81 bnez a5,3bc085ec + 3bc085de: 00003517 auipc a0,0x3 + 3bc085e2: 0e250513 addi a0,a0,226 # 3bc0b6c0 + 3bc085e6: d73f70ef jal ra,3bc00358 + 3bc085ea: a001 j 3bc085ea + 3bc085ec: 0e4000ef jal ra,3bc086d0 + 3bc085f0: 0810 addi a2,sp,16 + 3bc085f2: 082c addi a1,sp,24 + 3bc085f4: 0068 addi a0,sp,12 + 3bc085f6: 3c0000ef jal ra,3bc089b6 + 3bc085fa: 47b2 lw a5,12(sp) + 3bc085fc: eb81 bnez a5,3bc0860c + 3bc085fe: 00003517 auipc a0,0x3 + 3bc08602: 0c250513 addi a0,a0,194 # 3bc0b6c0 + 3bc08606: d53f70ef jal ra,3bc00358 + 3bc0860a: a001 j 3bc0860a + 3bc0860c: 00003517 auipc a0,0x3 + 3bc08610: 0cc50513 addi a0,a0,204 # 3bc0b6d8 + 3bc08614: d45f70ef jal ra,3bc00358 + 3bc08618: 080087b7 lui a5,0x8008 + 3bc0861c: 4595 li a1,5 + 3bc0861e: cbac sw a1,80(a5) + 3bc08620: 08078613 addi a2,a5,128 # 8008080 + 3bc08624: 01000737 lui a4,0x1000 + 3bc08628: ca2c sw a1,80(a2) + 3bc0862a: 10070713 addi a4,a4,256 # 1000100 <__BSS_SIZE__+0xffa4f0> + 3bc0862e: c398 sw a4,0(a5) + 3bc08630: 43d4 lw a3,4(a5) + 3bc08632: 2681 sext.w a3,a3 + 3bc08634: c006f693 andi a3,a3,-1024 + 3bc08638: c3d4 sw a3,4(a5) + 3bc0863a: c218 sw a4,0(a2) + 3bc0863c: 4254 lw a3,4(a2) + 3bc0863e: 2681 sext.w a3,a3 + 3bc08640: c006f693 andi a3,a3,-1024 + 3bc08644: c254 sw a3,4(a2) + 3bc08646: 40078613 addi a2,a5,1024 + 3bc0864a: ca2c sw a1,80(a2) + 3bc0864c: 48078793 addi a5,a5,1152 + 3bc08650: cbac sw a1,80(a5) + 3bc08652: c218 sw a4,0(a2) + 3bc08654: 4254 lw a3,4(a2) + 3bc08656: 2681 sext.w a3,a3 + 3bc08658: c006f693 andi a3,a3,-1024 + 3bc0865c: c254 sw a3,4(a2) + 3bc0865e: c398 sw a4,0(a5) + 3bc08660: 43d8 lw a4,4(a5) + 3bc08662: 2701 sext.w a4,a4 + 3bc08664: c0077713 andi a4,a4,-1024 + 3bc08668: c3d8 sw a4,4(a5) + 3bc0866a: 0800a737 lui a4,0x800a + 3bc0866e: 4b5c lw a5,20(a4) + 3bc08670: 2781 sext.w a5,a5 + 3bc08672: 1007e793 ori a5,a5,256 + 3bc08676: cb5c sw a5,20(a4) + 3bc08678: d97ff0ef jal ra,3bc0840e + 3bc0867c: 70a2 ld ra,40(sp) + 3bc0867e: 6145 addi sp,sp,48 + 3bc08680: 8082 ret + +000000003bc08682 : + 3bc08682: 00060737 lui a4,0x60 + 3bc08686: 080107b7 lui a5,0x8010 + 3bc0868a: 0719 addi a4,a4,6 + 3bc0868c: c398 sw a4,0(a5) + 3bc0868e: 80200737 lui a4,0x80200 + 3bc08692: 1101 addi sp,sp,-32 + 3bc08694: a0070713 addi a4,a4,-1536 # ffffffff801ffa00 <__BL2_END__+0xffffffff445ec1f0> + 3bc08698: c63a sw a4,12(sp) + 3bc0869a: 40200737 lui a4,0x40200 + 3bc0869e: e802 sd zero,16(sp) + 3bc086a0: ec02 sd zero,24(sp) + 3bc086a2: a0070713 addi a4,a4,-1536 # 401ffa00 <__BL2_END__+0x45ec1f0> + 3bc086a6: c3b8 sw a4,64(a5) + 3bc086a8: 4732 lw a4,12(sp) + 3bc086aa: c3f8 sw a4,68(a5) + 3bc086ac: 4742 lw a4,16(sp) + 3bc086ae: c7b8 sw a4,72(a5) + 3bc086b0: 4752 lw a4,20(sp) + 3bc086b2: c7f8 sw a4,76(a5) + 3bc086b4: 4762 lw a4,24(sp) + 3bc086b6: cbb8 sw a4,80(a5) + 3bc086b8: 4772 lw a4,28(sp) + 3bc086ba: cbf8 sw a4,84(a5) + 3bc086bc: 00100737 lui a4,0x100 + 3bc086c0: 0007a823 sw zero,16(a5) # 8010010 + 3bc086c4: 177d addi a4,a4,-1 + 3bc086c6: cbd8 sw a4,20(a5) + 3bc086c8: 4711 li a4,4 + 3bc086ca: cf98 sw a4,24(a5) + 3bc086cc: 6105 addi sp,sp,32 + 3bc086ce: 8082 ret + +000000003bc086d0 : + 3bc086d0: 000c0737 lui a4,0xc0 + 3bc086d4: 080107b7 lui a5,0x8010 + 3bc086d8: 0731 addi a4,a4,12 + 3bc086da: c398 sw a4,0(a5) + 3bc086dc: 6705 lui a4,0x1 + 3bc086de: f0570713 addi a4,a4,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc086e2: d3d8 sw a4,36(a5) + 3bc086e4: 80103737 lui a4,0x80103 + 3bc086e8: 1101 addi sp,sp,-32 + 3bc086ea: c0f70713 addi a4,a4,-1009 # ffffffff80102c0f <__BL2_END__+0xffffffff444ef3ff> + 3bc086ee: c63a sw a4,12(sp) + 3bc086f0: c0000737 lui a4,0xc0000 + 3bc086f4: 0705 addi a4,a4,1 + 3bc086f6: 1702 slli a4,a4,0x20 + 3bc086f8: e83a sd a4,16(sp) + 3bc086fa: 40103737 lui a4,0x40103 + 3bc086fe: ec02 sd zero,24(sp) + 3bc08700: c0f70713 addi a4,a4,-1009 # 40102c0f <__BL2_END__+0x44ef3ff> + 3bc08704: c3b8 sw a4,64(a5) + 3bc08706: 4732 lw a4,12(sp) + 3bc08708: c3f8 sw a4,68(a5) + 3bc0870a: 4742 lw a4,16(sp) + 3bc0870c: c7b8 sw a4,72(a5) + 3bc0870e: 4752 lw a4,20(sp) + 3bc08710: c7f8 sw a4,76(a5) + 3bc08712: 4762 lw a4,24(sp) + 3bc08714: cbb8 sw a4,80(a5) + 3bc08716: 4772 lw a4,28(sp) + 3bc08718: cbf8 sw a4,84(a5) + 3bc0871a: 00100737 lui a4,0x100 + 3bc0871e: 0007a823 sw zero,16(a5) # 8010010 + 3bc08722: 177d addi a4,a4,-1 + 3bc08724: cbd8 sw a4,20(a5) + 3bc08726: 02000713 li a4,32 + 3bc0872a: cf98 sw a4,24(a5) + 3bc0872c: 6105 addi sp,sp,32 + 3bc0872e: 8082 ret + +000000003bc08730 : + 3bc08730: 00060737 lui a4,0x60 + 3bc08734: 080107b7 lui a5,0x8010 + 3bc08738: 0719 addi a4,a4,6 + 3bc0873a: c398 sw a4,0(a5) + 3bc0873c: 1101 addi sp,sp,-32 + 3bc0873e: 40001737 lui a4,0x40001 + 3bc08742: e802 sd zero,16(sp) + 3bc08744: ec02 sd zero,24(sp) + 3bc08746: c602 sw zero,12(sp) + 3bc08748: a0070713 addi a4,a4,-1536 # 40000a00 <__BL2_END__+0x43ed1f0> + 3bc0874c: c3b8 sw a4,64(a5) + 3bc0874e: 4732 lw a4,12(sp) + 3bc08750: c3f8 sw a4,68(a5) + 3bc08752: 4742 lw a4,16(sp) + 3bc08754: c7b8 sw a4,72(a5) + 3bc08756: 4752 lw a4,20(sp) + 3bc08758: c7f8 sw a4,76(a5) + 3bc0875a: 4762 lw a4,24(sp) + 3bc0875c: cbb8 sw a4,80(a5) + 3bc0875e: 4772 lw a4,28(sp) + 3bc08760: cbf8 sw a4,84(a5) + 3bc08762: 00100737 lui a4,0x100 + 3bc08766: 0007a823 sw zero,16(a5) # 8010010 + 3bc0876a: 177d addi a4,a4,-1 + 3bc0876c: cbd8 sw a4,20(a5) + 3bc0876e: 4711 li a4,4 + 3bc08770: cf98 sw a4,24(a5) + 3bc08772: 6105 addi sp,sp,32 + 3bc08774: 8082 ret + +000000003bc08776 : + 3bc08776: 00060737 lui a4,0x60 + 3bc0877a: 080107b7 lui a5,0x8010 + 3bc0877e: 0719 addi a4,a4,6 + 3bc08780: c398 sw a4,0(a5) + 3bc08782: 1101 addi sp,sp,-32 + 3bc08784: 80004737 lui a4,0x80004 + 3bc08788: e802 sd zero,16(sp) + 3bc0878a: ec02 sd zero,24(sp) + 3bc0878c: c602 sw zero,12(sp) + 3bc0878e: a0070713 addi a4,a4,-1536 # ffffffff80003a00 <__BL2_END__+0xffffffff443f01f0> + 3bc08792: c3b8 sw a4,64(a5) + 3bc08794: 4732 lw a4,12(sp) + 3bc08796: c3f8 sw a4,68(a5) + 3bc08798: 4742 lw a4,16(sp) + 3bc0879a: c7b8 sw a4,72(a5) + 3bc0879c: 4752 lw a4,20(sp) + 3bc0879e: c7f8 sw a4,76(a5) + 3bc087a0: 4762 lw a4,24(sp) + 3bc087a2: cbb8 sw a4,80(a5) + 3bc087a4: 4772 lw a4,28(sp) + 3bc087a6: cbf8 sw a4,84(a5) + 3bc087a8: 00100737 lui a4,0x100 + 3bc087ac: 0007a823 sw zero,16(a5) # 8010010 + 3bc087b0: 177d addi a4,a4,-1 + 3bc087b2: cbd8 sw a4,20(a5) + 3bc087b4: 4711 li a4,4 + 3bc087b6: cf98 sw a4,24(a5) + 3bc087b8: 6105 addi sp,sp,32 + 3bc087ba: 8082 ret + +000000003bc087bc : + 3bc087bc: 000607b7 lui a5,0x60 + 3bc087c0: 08010737 lui a4,0x8010 + 3bc087c4: 0799 addi a5,a5,6 + 3bc087c6: c31c sw a5,0(a4) + 3bc087c8: 1101 addi sp,sp,-32 + 3bc087ca: e519 bnez a0,3bc087d8 + 3bc087cc: 200017b7 lui a5,0x20001 + 3bc087d0: 078a slli a5,a5,0x2 + 3bc087d2: a0078793 addi a5,a5,-1536 # 20000a00 + 3bc087d6: a0ad j 3bc08840 + 3bc087d8: 4785 li a5,1 + 3bc087da: 04f51c63 bne a0,a5,3bc08832 + 3bc087de: 6785 lui a5,0x1 + 3bc087e0: f0578793 addi a5,a5,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc087e4: d35c sw a5,36(a4) + 3bc087e6: 00003797 auipc a5,0x3 + 3bc087ea: f0a7b783 ld a5,-246(a5) # 3bc0b6f0 + 3bc087ee: e43e sd a5,8(sp) + 3bc087f0: 00003797 auipc a5,0x3 + 3bc087f4: f087b783 ld a5,-248(a5) # 3bc0b6f8 + 3bc087f8: e83e sd a5,16(sp) + 3bc087fa: 478d li a5,3 + 3bc087fc: 07fa slli a5,a5,0x1e + 3bc087fe: 0785 addi a5,a5,1 + 3bc08800: ec3e sd a5,24(sp) + 3bc08802: 4722 lw a4,8(sp) + 3bc08804: 080107b7 lui a5,0x8010 + 3bc08808: c3b8 sw a4,64(a5) + 3bc0880a: 4732 lw a4,12(sp) + 3bc0880c: c3f8 sw a4,68(a5) + 3bc0880e: 4742 lw a4,16(sp) + 3bc08810: c7b8 sw a4,72(a5) + 3bc08812: 4752 lw a4,20(sp) + 3bc08814: c7f8 sw a4,76(a5) + 3bc08816: 4762 lw a4,24(sp) + 3bc08818: cbb8 sw a4,80(a5) + 3bc0881a: 4772 lw a4,28(sp) + 3bc0881c: cbf8 sw a4,84(a5) + 3bc0881e: 00100737 lui a4,0x100 + 3bc08822: 0007a823 sw zero,16(a5) # 8010010 + 3bc08826: 177d addi a4,a4,-1 + 3bc08828: cbd8 sw a4,20(a5) + 3bc0882a: 4711 li a4,4 + 3bc0882c: cf98 sw a4,24(a5) + 3bc0882e: 6105 addi sp,sp,32 + 3bc08830: 8082 ret + 3bc08832: 4789 li a5,2 + 3bc08834: 00f51a63 bne a0,a5,3bc08848 + 3bc08838: 00003797 auipc a5,0x3 + 3bc0883c: ec87b783 ld a5,-312(a5) # 3bc0b700 + 3bc08840: e43e sd a5,8(sp) + 3bc08842: e802 sd zero,16(sp) + 3bc08844: ec02 sd zero,24(sp) + 3bc08846: bf75 j 3bc08802 + 3bc08848: 47c9 li a5,18 + 3bc0884a: 02f51563 bne a0,a5,3bc08874 + 3bc0884e: 080006b7 lui a3,0x8000 + 3bc08852: 0846a783 lw a5,132(a3) # 8000084 + 3bc08856: 6709 lui a4,0x2 + 3bc08858: f0070713 addi a4,a4,-256 # 1f00 <__BSS_SIZE__-0x3d10> + 3bc0885c: 2781 sext.w a5,a5 + 3bc0885e: 9b81 andi a5,a5,-32 + 3bc08860: 01d7e793 ori a5,a5,29 + 3bc08864: 8fd9 or a5,a5,a4 + 3bc08866: 0000b717 auipc a4,0xb + 3bc0886a: f8f72523 sw a5,-118(a4) # 3bc137f0 + 3bc0886e: 08f6a223 sw a5,132(a3) + 3bc08872: b7d9 j 3bc08838 + 3bc08874: 47c1 li a5,16 + 3bc08876: f8f516e3 bne a0,a5,3bc08802 + 3bc0887a: 08000637 lui a2,0x8000 + 3bc0887e: 08462783 lw a5,132(a2) # 8000084 + 3bc08882: 6689 lui a3,0x2 + 3bc08884: f0068693 addi a3,a3,-256 # 1f00 <__BSS_SIZE__-0x3d10> + 3bc08888: 2781 sext.w a5,a5 + 3bc0888a: 9b81 andi a5,a5,-32 + 3bc0888c: 0017e793 ori a5,a5,1 + 3bc08890: 3007c713 xori a4,a5,768 + 3bc08894: 8f75 and a4,a4,a3 + 3bc08896: 8fb9 xor a5,a5,a4 + 3bc08898: 0000b717 auipc a4,0xb + 3bc0889c: f4f72c23 sw a5,-168(a4) # 3bc137f0 + 3bc088a0: 08f62223 sw a5,132(a2) + 3bc088a4: b725 j 3bc087cc + +000000003bc088a6 : + 3bc088a6: 000607b7 lui a5,0x60 + 3bc088aa: 08010737 lui a4,0x8010 + 3bc088ae: 0799 addi a5,a5,6 + 3bc088b0: c31c sw a5,0(a4) + 3bc088b2: 1101 addi sp,sp,-32 + 3bc088b4: e909 bnez a0,3bc088c6 + 3bc088b6: 00003797 auipc a5,0x3 + 3bc088ba: e527b783 ld a5,-430(a5) # 3bc0b708 + 3bc088be: e43e sd a5,8(sp) + 3bc088c0: e802 sd zero,16(sp) + 3bc088c2: ec02 sd zero,24(sp) + 3bc088c4: a035 j 3bc088f0 + 3bc088c6: 4785 li a5,1 + 3bc088c8: 04f51c63 bne a0,a5,3bc08920 + 3bc088cc: 6785 lui a5,0x1 + 3bc088ce: f0578793 addi a5,a5,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc088d2: d35c sw a5,36(a4) + 3bc088d4: 00003797 auipc a5,0x3 + 3bc088d8: e1c7b783 ld a5,-484(a5) # 3bc0b6f0 + 3bc088dc: e43e sd a5,8(sp) + 3bc088de: 00003797 auipc a5,0x3 + 3bc088e2: e1a7b783 ld a5,-486(a5) # 3bc0b6f8 + 3bc088e6: e83e sd a5,16(sp) + 3bc088e8: 478d li a5,3 + 3bc088ea: 07fa slli a5,a5,0x1e + 3bc088ec: 0785 addi a5,a5,1 + 3bc088ee: ec3e sd a5,24(sp) + 3bc088f0: 4722 lw a4,8(sp) + 3bc088f2: 080107b7 lui a5,0x8010 + 3bc088f6: c3b8 sw a4,64(a5) + 3bc088f8: 4732 lw a4,12(sp) + 3bc088fa: c3f8 sw a4,68(a5) + 3bc088fc: 4742 lw a4,16(sp) + 3bc088fe: c7b8 sw a4,72(a5) + 3bc08900: 4752 lw a4,20(sp) + 3bc08902: c7f8 sw a4,76(a5) + 3bc08904: 4762 lw a4,24(sp) + 3bc08906: cbb8 sw a4,80(a5) + 3bc08908: 4772 lw a4,28(sp) + 3bc0890a: cbf8 sw a4,84(a5) + 3bc0890c: 00100737 lui a4,0x100 + 3bc08910: 0007a823 sw zero,16(a5) # 8010010 + 3bc08914: 177d addi a4,a4,-1 + 3bc08916: cbd8 sw a4,20(a5) + 3bc08918: 4711 li a4,4 + 3bc0891a: cf98 sw a4,24(a5) + 3bc0891c: 6105 addi sp,sp,32 + 3bc0891e: 8082 ret + 3bc08920: 47c5 li a5,17 + 3bc08922: 00003717 auipc a4,0x3 + 3bc08926: de670713 addi a4,a4,-538 # 3bc0b708 + 3bc0892a: 00f51f63 bne a0,a5,3bc08948 + 3bc0892e: 67c1 lui a5,0x10 + 3bc08930: 30178793 addi a5,a5,769 # 10301 <__BSS_SIZE__+0xa6f1> + 3bc08934: 0000b697 auipc a3,0xb + 3bc08938: eaf6ae23 sw a5,-324(a3) # 3bc137f0 + 3bc0893c: 080006b7 lui a3,0x8000 + 3bc08940: 18f6a823 sw a5,400(a3) # 8000190 + 3bc08944: 631c ld a5,0(a4) + 3bc08946: bfa5 j 3bc088be + 3bc08948: 47c9 li a5,18 + 3bc0894a: f6f516e3 bne a0,a5,3bc088b6 + 3bc0894e: 67c9 lui a5,0x12 + 3bc08950: f1d78793 addi a5,a5,-227 # 11f1d <__BSS_SIZE__+0xc30d> + 3bc08954: b7c5 j 3bc08934 + +000000003bc08956 : + 3bc08956: 00060737 lui a4,0x60 + 3bc0895a: 080107b7 lui a5,0x8010 + 3bc0895e: 0719 addi a4,a4,6 + 3bc08960: c398 sw a4,0(a5) + 3bc08962: 6705 lui a4,0x1 + 3bc08964: f0570713 addi a4,a4,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc08968: d3d8 sw a4,36(a5) + 3bc0896a: 40103737 lui a4,0x40103 + 3bc0896e: 1101 addi sp,sp,-32 + 3bc08970: e0070713 addi a4,a4,-512 # 40102e00 <__BL2_END__+0x44ef5f0> + 3bc08974: c63a sw a4,12(sp) + 3bc08976: 00401737 lui a4,0x401 + 3bc0897a: 81770713 addi a4,a4,-2025 # 400817 <__BSS_SIZE__+0x3fac07> + 3bc0897e: 0726 slli a4,a4,0x9 + 3bc08980: e83a sd a4,16(sp) + 3bc08982: 40102737 lui a4,0x40102 + 3bc08986: ec02 sd zero,24(sp) + 3bc08988: 60070713 addi a4,a4,1536 # 40102600 <__BL2_END__+0x44eedf0> + 3bc0898c: c3b8 sw a4,64(a5) + 3bc0898e: 4732 lw a4,12(sp) + 3bc08990: c3f8 sw a4,68(a5) + 3bc08992: 4742 lw a4,16(sp) + 3bc08994: c7b8 sw a4,72(a5) + 3bc08996: 4752 lw a4,20(sp) + 3bc08998: c7f8 sw a4,76(a5) + 3bc0899a: 4762 lw a4,24(sp) + 3bc0899c: cbb8 sw a4,80(a5) + 3bc0899e: 4772 lw a4,28(sp) + 3bc089a0: cbf8 sw a4,84(a5) + 3bc089a2: 00100737 lui a4,0x100 + 3bc089a6: 0007a823 sw zero,16(a5) # 8010010 + 3bc089aa: 177d addi a4,a4,-1 + 3bc089ac: cbd8 sw a4,20(a5) + 3bc089ae: 4711 li a4,4 + 3bc089b0: cf98 sw a4,24(a5) + 3bc089b2: 6105 addi sp,sp,32 + 3bc089b4: 8082 ret + +000000003bc089b6 : + 3bc089b6: 000307b7 lui a5,0x30 + 3bc089ba: 08010737 lui a4,0x8010 + 3bc089be: 078d addi a5,a5,3 + 3bc089c0: c31c sw a5,0(a4) + 3bc089c2: 0000b897 auipc a7,0xb + 3bc089c6: e2e88893 addi a7,a7,-466 # 3bc137f0 + 3bc089ca: 08072783 lw a5,128(a4) # 8010080 + 3bc089ce: 08070693 addi a3,a4,128 + 3bc089d2: 2781 sext.w a5,a5 + 3bc089d4: 00f8a023 sw a5,0(a7) + 3bc089d8: 0047f813 andi a6,a5,4 + 3bc089dc: fe0807e3 beqz a6,3bc089ca + 3bc089e0: 0c37b78b extu a5,a5,3,3 + 3bc089e4: c79d beqz a5,3bc08a12 + 3bc089e6: 00052023 sw zero,0(a0) + 3bc089ea: e2e6c80b lwd a6,a4,(a3),1,3 + 3bc089ee: e4f6c50b lwd a0,a5,(a3),2,3 + 3bc089f2: 1702 slli a4,a4,0x20 + 3bc089f4: 7c08368b extu a3,a6,31,0 + 3bc089f8: 8f55 or a4,a4,a3 + 3bc089fa: 1782 slli a5,a5,0x20 + 3bc089fc: 7c05350b extu a0,a0,31,0 + 3bc08a00: e198 sd a4,0(a1) + 3bc08a02: 8fc9 or a5,a5,a0 + 3bc08a04: e21c sd a5,0(a2) + 3bc08a06: 080107b7 lui a5,0x8010 + 3bc08a0a: 00050737 lui a4,0x50 + 3bc08a0e: c398 sw a4,0(a5) + 3bc08a10: 8082 ret + 3bc08a12: 4785 li a5,1 + 3bc08a14: c11c sw a5,0(a0) + 3bc08a16: 0005b023 sd zero,0(a1) + 3bc08a1a: 00063023 sd zero,0(a2) + 3bc08a1e: b7e5 j 3bc08a06 + +000000003bc08a20 : + 3bc08a20: 7159 addi sp,sp,-112 + 3bc08a22: f0a2 sd s0,96(sp) + 3bc08a24: eca6 sd s1,88(sp) + 3bc08a26: e8ca sd s2,80(sp) + 3bc08a28: e4ce sd s3,72(sp) + 3bc08a2a: e0d2 sd s4,64(sp) + 3bc08a2c: fc56 sd s5,56(sp) + 3bc08a2e: f486 sd ra,104(sp) + 3bc08a30: f85a sd s6,48(sp) + 3bc08a32: f45e sd s7,40(sp) + 3bc08a34: f062 sd s8,32(sp) + 3bc08a36: c4dff0ef jal ra,3bc08682 + 3bc08a3a: 080017b7 lui a5,0x8001 + 3bc08a3e: b147a403 lw s0,-1260(a5) # 8000b14 + 3bc08a42: b447a783 lw a5,-1212(a5) + 3bc08a46: 4925 li s2,9 + 3bc08a48: 080007b7 lui a5,0x8000 + 3bc08a4c: 0947a483 lw s1,148(a5) # 8000094 + 3bc08a50: 2401 sext.w s0,s0 + 3bc08a52: 001f0a37 lui s4,0x1f0 + 3bc08a56: 2481 sext.w s1,s1 + 3bc08a58: 080019b7 lui s3,0x8001 + 3bc08a5c: 4a85 li s5,1 + 3bc08a5e: 0109171b slliw a4,s2,0x10 + 3bc08a62: 8f21 xor a4,a4,s0 + 3bc08a64: 01477733 and a4,a4,s4 + 3bc08a68: 8c39 xor s0,s0,a4 + 3bc08a6a: 2401 sext.w s0,s0 + 3bc08a6c: b089aa23 sw s0,-1260(s3) # 8000b14 + 3bc08a70: b489a223 sw s0,-1212(s3) + 3bc08a74: 0830 addi a2,sp,24 + 3bc08a76: 080c addi a1,sp,16 + 3bc08a78: 0068 addi a0,sp,12 + 3bc08a7a: f3dff0ef jal ra,3bc089b6 + 3bc08a7e: 47b2 lw a5,12(sp) + 3bc08a80: 00090c1b sext.w s8,s2 + 3bc08a84: ef8d bnez a5,3bc08abe + 3bc08a86: 00f4f793 andi a5,s1,15 + 3bc08a8a: 2785 addiw a5,a5,1 + 3bc08a8c: 018787bb addw a5,a5,s8 + 3bc08a90: 0107979b slliw a5,a5,0x10 + 3bc08a94: 8fa1 xor a5,a5,s0 + 3bc08a96: 0147f7b3 and a5,a5,s4 + 3bc08a9a: 8c3d xor s0,s0,a5 + 3bc08a9c: 2401 sext.w s0,s0 + 3bc08a9e: b089aa23 sw s0,-1260(s3) + 3bc08aa2: b489a223 sw s0,-1212(s3) + 3bc08aa6: 70a6 ld ra,104(sp) + 3bc08aa8: 7406 ld s0,96(sp) + 3bc08aaa: 64e6 ld s1,88(sp) + 3bc08aac: 6946 ld s2,80(sp) + 3bc08aae: 69a6 ld s3,72(sp) + 3bc08ab0: 6a06 ld s4,64(sp) + 3bc08ab2: 7ae2 ld s5,56(sp) + 3bc08ab4: 7b42 ld s6,48(sp) + 3bc08ab6: 7ba2 ld s7,40(sp) + 3bc08ab8: 7c02 ld s8,32(sp) + 3bc08aba: 6165 addi sp,sp,112 + 3bc08abc: 8082 ret + 3bc08abe: 397d addiw s2,s2,-1 + 3bc08ac0: f9591fe3 bne s2,s5,3bc08a5e + 3bc08ac4: b7cd j 3bc08aa6 + +000000003bc08ac6 : + 3bc08ac6: 08004737 lui a4,0x8004 + 3bc08aca: 18072683 lw a3,384(a4) # 8004180 + 3bc08ace: 0006879b sext.w a5,a3 + 3bc08ad2: 01f6d69b srliw a3,a3,0x1f + 3bc08ad6: e691 bnez a3,3bc08ae2 + 3bc08ad8: 80000637 lui a2,0x80000 + 3bc08adc: 8fd1 or a5,a5,a2 + 3bc08ade: 18f72023 sw a5,384(a4) + 3bc08ae2: 0000b797 auipc a5,0xb + 3bc08ae6: d007a723 sw zero,-754(a5) # 3bc137f0 + 3bc08aea: 08004737 lui a4,0x8004 + 3bc08aee: 0000b617 auipc a2,0xb + 3bc08af2: d0260613 addi a2,a2,-766 # 3bc137f0 + 3bc08af6: 4f1c lw a5,24(a4) + 3bc08af8: 2781 sext.w a5,a5 + 3bc08afa: c21c sw a5,0(a2) + 3bc08afc: 8b85 andi a5,a5,1 + 3bc08afe: ffe5 bnez a5,3bc08af6 + 3bc08b00: 00c5179b slliw a5,a0,0xc + 3bc08b04: 0107c793 xori a5,a5,16 + 3bc08b08: 653d lui a0,0xf + 3bc08b0a: 8fe9 and a5,a5,a0 + 3bc08b0c: 0107c793 xori a5,a5,16 + 3bc08b10: 2781 sext.w a5,a5 + 3bc08b12: cb1c sw a5,16(a4) + 3bc08b14: c20c sw a1,0(a2) + 3bc08b16: cb4c sw a1,20(a4) + 3bc08b18: 4b1c lw a5,16(a4) + 3bc08b1a: 800005b7 lui a1,0x80000 + 3bc08b1e: 8fcd or a5,a5,a1 + 3bc08b20: c21c sw a5,0(a2) + 3bc08b22: cb1c sw a5,16(a4) + 3bc08b24: ea91 bnez a3,3bc08b38 + 3bc08b26: 18072783 lw a5,384(a4) # 8004180 + 3bc08b2a: 2781 sext.w a5,a5 + 3bc08b2c: 7807b78b extu a5,a5,30,0 + 3bc08b30: 2781 sext.w a5,a5 + 3bc08b32: c21c sw a5,0(a2) + 3bc08b34: 18f72023 sw a5,384(a4) + 3bc08b38: 8082 ret + +000000003bc08b3a : + 3bc08b3a: 080067b7 lui a5,0x8006 + 3bc08b3e: 47fc lw a5,76(a5) + 3bc08b40: 0000b717 auipc a4,0xb + 3bc08b44: cb070713 addi a4,a4,-848 # 3bc137f0 + 3bc08b48: 2781 sext.w a5,a5 + 3bc08b4a: c31c sw a5,0(a4) + 3bc08b4c: 1447b78b extu a5,a5,5,4 + 3bc08b50: cf9d beqz a5,3bc08b8e + 3bc08b52: 080006b7 lui a3,0x8000 + 3bc08b56: 42bc lw a5,64(a3) + 3bc08b58: 7601 lui a2,0xfffe0 + 3bc08b5a: 1675 addi a2,a2,-3 + 3bc08b5c: 2781 sext.w a5,a5 + 3bc08b5e: 8ff1 and a5,a5,a2 + 3bc08b60: c31c sw a5,0(a4) + 3bc08b62: c2bc sw a5,64(a3) + 3bc08b64: 42bc lw a5,64(a3) + 3bc08b66: 00020637 lui a2,0x20 + 3bc08b6a: 0609 addi a2,a2,2 + 3bc08b6c: 2781 sext.w a5,a5 + 3bc08b6e: 8fd1 or a5,a5,a2 + 3bc08b70: c2bc sw a5,64(a3) + 3bc08b72: 0000b797 auipc a5,0xb + 3bc08b76: c607af23 sw zero,-898(a5) # 3bc137f0 + 3bc08b7a: 08003637 lui a2,0x8003 + 3bc08b7e: 66c1 lui a3,0x10 + 3bc08b80: 4a5c lw a5,20(a2) + 3bc08b82: 2781 sext.w a5,a5 + 3bc08b84: c31c sw a5,0(a4) + 3bc08b86: 8ff5 and a5,a5,a3 + 3bc08b88: 2781 sext.w a5,a5 + 3bc08b8a: dbfd beqz a5,3bc08b80 + 3bc08b8c: 8082 ret + 3bc08b8e: 08000637 lui a2,0x8000 + 3bc08b92: 423c lw a5,64(a2) + 3bc08b94: 7681 lui a3,0xfffe0 + 3bc08b96: 16f5 addi a3,a3,-3 + 3bc08b98: 2781 sext.w a5,a5 + 3bc08b9a: 8ff5 and a5,a5,a3 + 3bc08b9c: c31c sw a5,0(a4) + 3bc08b9e: c23c sw a5,64(a2) + 3bc08ba0: 8082 ret + +000000003bc08ba2 : + 3bc08ba2: 080066b7 lui a3,0x8006 + 3bc08ba6: 46dc lw a5,12(a3) + 3bc08ba8: 7769 lui a4,0xffffa + 3bc08baa: 177d addi a4,a4,-1 + 3bc08bac: 2781 sext.w a5,a5 + 3bc08bae: 8ff9 and a5,a5,a4 + 3bc08bb0: 03003737 lui a4,0x3003 + 3bc08bb4: c6dc sw a5,12(a3) + 3bc08bb6: 90070713 addi a4,a4,-1792 # 3002900 <__BSS_SIZE__+0x2ffccf0> + 3bc08bba: 0000b797 auipc a5,0xb + 3bc08bbe: c0e7a783 lw a5,-1010(a5) # 3bc137c8 + 3bc08bc2: cb7c sw a5,84(a4) + 3bc08bc4: 0000b797 auipc a5,0xb + 3bc08bc8: c0c7d783 lhu a5,-1012(a5) # 3bc137d0 + 3bc08bcc: cf3c sw a5,88(a4) + 3bc08bce: 0000b797 auipc a5,0xb + 3bc08bd2: c0a7b783 ld a5,-1014(a5) # 3bc137d8 + 3bc08bd6: 5c07b78b extu a5,a5,23,0 + 3bc08bda: 2781 sext.w a5,a5 + 3bc08bdc: 0000b697 auipc a3,0xb + 3bc08be0: c1468693 addi a3,a3,-1004 # 3bc137f0 + 3bc08be4: c29c sw a5,0(a3) + 3bc08be6: cf7c sw a5,92(a4) + 3bc08be8: 4b3c lw a5,80(a4) + 3bc08bea: 2781 sext.w a5,a5 + 3bc08bec: 0017c793 xori a5,a5,1 + 3bc08bf0: fa17f793 andi a5,a5,-95 + 3bc08bf4: 0207e793 ori a5,a5,32 + 3bc08bf8: c29c sw a5,0(a3) + 3bc08bfa: cb3c sw a5,80(a4) + 3bc08bfc: 8082 ret + +000000003bc08bfe : + 3bc08bfe: 08006737 lui a4,0x8006 + 3bc08c02: 475c lw a5,12(a4) + 3bc08c04: 6691 lui a3,0x4 + 3bc08c06: 8fd5 or a5,a5,a3 + 3bc08c08: 0000b697 auipc a3,0xb + 3bc08c0c: bef6a423 sw a5,-1048(a3) # 3bc137f0 + 3bc08c10: c75c sw a5,12(a4) + 3bc08c12: 8082 ret + +000000003bc08c14 : + 3bc08c14: 08006737 lui a4,0x8006 + 3bc08c18: 475c lw a5,12(a4) + 3bc08c1a: 6689 lui a3,0x2 + 3bc08c1c: 8fd5 or a5,a5,a3 + 3bc08c1e: 0000b697 auipc a3,0xb + 3bc08c22: bcf6a923 sw a5,-1070(a3) # 3bc137f0 + 3bc08c26: c75c sw a5,12(a4) + 3bc08c28: 8082 ret + +000000003bc08c2a : + 3bc08c2a: 1101 addi sp,sp,-32 + 3bc08c2c: 0000b797 auipc a5,0xb + 3bc08c30: bc07a223 sw zero,-1084(a5) # 3bc137f0 + 3bc08c34: 080066b7 lui a3,0x8006 + 3bc08c38: e822 sd s0,16(sp) + 3bc08c3a: ec06 sd ra,24(sp) + 3bc08c3c: e426 sd s1,8(sp) + 3bc08c3e: e04a sd s2,0(sp) + 3bc08c40: 0006a223 sw zero,4(a3) # 8006004 + 3bc08c44: 0006a423 sw zero,8(a3) + 3bc08c48: 46dc lw a5,12(a3) + 3bc08c4a: 0000b417 auipc s0,0xb + 3bc08c4e: ba640413 addi s0,s0,-1114 # 3bc137f0 + 3bc08c52: 2781 sext.w a5,a5 + 3bc08c54: f7f7f793 andi a5,a5,-129 + 3bc08c58: c01c sw a5,0(s0) + 3bc08c5a: c6dc sw a5,12(a3) + 3bc08c5c: 46fc lw a5,76(a3) + 3bc08c5e: c01c sw a5,0(s0) + 3bc08c60: 46fc lw a5,76(a3) + 3bc08c62: c01c sw a5,0(s0) + 3bc08c64: 46fc lw a5,76(a3) + 3bc08c66: c01c sw a5,0(s0) + 3bc08c68: 46fc lw a5,76(a3) + 3bc08c6a: c01c sw a5,0(s0) + 3bc08c6c: 46fc lw a5,76(a3) + 3bc08c6e: c01c sw a5,0(s0) + 3bc08c70: 46f8 lw a4,76(a3) + 3bc08c72: 0007079b sext.w a5,a4 + 3bc08c76: 8b05 andi a4,a4,1 + 3bc08c78: c315 beqz a4,3bc08c9c + 3bc08c7a: 2487b60b extu a2,a5,9,8 + 3bc08c7e: 1447b70b extu a4,a5,5,4 + 3bc08c82: e629 bnez a2,3bc08ccc + 3bc08c84: fcf7f793 andi a5,a5,-49 + 3bc08c88: 0087171b slliw a4,a4,0x8 + 3bc08c8c: 8f3d xor a4,a4,a5 + 3bc08c8e: 30077713 andi a4,a4,768 + 3bc08c92: 8fb9 xor a5,a5,a4 + 3bc08c94: c01c sw a5,0(s0) + 3bc08c96: c6fc sw a5,76(a3) + 3bc08c98: f7dff0ef jal ra,3bc08c14 + 3bc08c9c: 4685 li a3,1 + 3bc08c9e: c014 sw a3,0(s0) + 3bc08ca0: 08006737 lui a4,0x8006 + 3bc08ca4: c354 sw a3,4(a4) + 3bc08ca6: 475c lw a5,12(a4) + 3bc08ca8: 64a1 lui s1,0x8 + 3bc08caa: 08006937 lui s2,0x8006 + 3bc08cae: 2781 sext.w a5,a5 + 3bc08cb0: 0807e793 ori a5,a5,128 + 3bc08cb4: c75c sw a5,12(a4) + 3bc08cb6: c014 sw a3,0(s0) + 3bc08cb8: c714 sw a3,8(a4) + 3bc08cba: 401c lw a5,0(s0) + 3bc08cbc: 8fe5 and a5,a5,s1 + 3bc08cbe: cbb9 beqz a5,3bc08d14 + 3bc08cc0: 60e2 ld ra,24(sp) + 3bc08cc2: 6442 ld s0,16(sp) + 3bc08cc4: 64a2 ld s1,8(sp) + 3bc08cc6: 6902 ld s2,0(sp) + 3bc08cc8: 6105 addi sp,sp,32 + 3bc08cca: 8082 ret + 3bc08ccc: 4589 li a1,2 + 3bc08cce: 02b61163 bne a2,a1,3bc08cf0 + 3bc08cd2: fcf7f793 andi a5,a5,-49 + 3bc08cd6: 0207e793 ori a5,a5,32 + 3bc08cda: 0087171b slliw a4,a4,0x8 + 3bc08cde: 8f3d xor a4,a4,a5 + 3bc08ce0: 30077713 andi a4,a4,768 + 3bc08ce4: 8fb9 xor a5,a5,a4 + 3bc08ce6: c01c sw a5,0(s0) + 3bc08ce8: c6fc sw a5,76(a3) + 3bc08cea: eb9ff0ef jal ra,3bc08ba2 + 3bc08cee: b77d j 3bc08c9c + 3bc08cf0: 4585 li a1,1 + 3bc08cf2: fab615e3 bne a2,a1,3bc08c9c + 3bc08cf6: fcf7f793 andi a5,a5,-49 + 3bc08cfa: 0107e793 ori a5,a5,16 + 3bc08cfe: 0087171b slliw a4,a4,0x8 + 3bc08d02: 8f3d xor a4,a4,a5 + 3bc08d04: 30077713 andi a4,a4,768 + 3bc08d08: 8fb9 xor a5,a5,a4 + 3bc08d0a: c01c sw a5,0(s0) + 3bc08d0c: c6fc sw a5,76(a3) + 3bc08d0e: ef1ff0ef jal ra,3bc08bfe + 3bc08d12: b769 j 3bc08c9c + 3bc08d14: 01092783 lw a5,16(s2) # 8006010 + 3bc08d18: 4501 li a0,0 + 3bc08d1a: c01c sw a5,0(s0) + 3bc08d1c: c6ef70ef jal ra,3bc0018a + 3bc08d20: bf69 j 3bc08cba + +000000003bc08d22 : + 3bc08d22: 080067b7 lui a5,0x8006 + 3bc08d26: 43b4 lw a3,64(a5) + 3bc08d28: bf000737 lui a4,0xbf000 + 3bc08d2c: 377d addiw a4,a4,-1 + 3bc08d2e: 8f75 and a4,a4,a3 + 3bc08d30: 0000b697 auipc a3,0xb + 3bc08d34: ac068693 addi a3,a3,-1344 # 3bc137f0 + 3bc08d38: c298 sw a4,0(a3) + 3bc08d3a: c3b8 sw a4,64(a5) + 3bc08d3c: 43b8 lw a4,64(a5) + 3bc08d3e: 0006a023 sw zero,0(a3) + 3bc08d42: 0407a023 sw zero,64(a5) # 8006040 + 3bc08d46: 4fd8 lw a4,28(a5) + 3bc08d48: 2701 sext.w a4,a4 + 3bc08d4a: 08076713 ori a4,a4,128 + 3bc08d4e: cfd8 sw a4,28(a5) + 3bc08d50: 0006a023 sw zero,0(a3) + 3bc08d54: 0007a023 sw zero,0(a5) + 3bc08d58: 4fd8 lw a4,28(a5) + 3bc08d5a: 2701 sext.w a4,a4 + 3bc08d5c: f7f77713 andi a4,a4,-129 + 3bc08d60: c298 sw a4,0(a3) + 3bc08d62: cfd8 sw a4,28(a5) + 3bc08d64: 8082 ret + +000000003bc08d66 : + 3bc08d66: 1141 addi sp,sp,-16 + 3bc08d68: e406 sd ra,8(sp) + 3bc08d6a: e022 sd s0,0(sp) + 3bc08d6c: ebfff0ef jal ra,3bc08c2a + 3bc08d70: 08000737 lui a4,0x8000 + 3bc08d74: 15472783 lw a5,340(a4) # 8000154 + 3bc08d78: 0000b417 auipc s0,0xb + 3bc08d7c: a7840413 addi s0,s0,-1416 # 3bc137f0 + 3bc08d80: 2781 sext.w a5,a5 + 3bc08d82: 9bf9 andi a5,a5,-2 + 3bc08d84: 14f72a23 sw a5,340(a4) + 3bc08d88: 00042023 sw zero,0(s0) + 3bc08d8c: 12072823 sw zero,304(a4) + 3bc08d90: dabff0ef jal ra,3bc08b3a + 3bc08d94: 080067b7 lui a5,0x8006 + 3bc08d98: 80000737 lui a4,0x80000 + 3bc08d9c: c3b8 sw a4,64(a5) + 3bc08d9e: 00042023 sw zero,0(s0) + 3bc08da2: 60a2 ld ra,8(sp) + 3bc08da4: 6402 ld s0,0(sp) + 3bc08da6: 0007a023 sw zero,0(a5) # 8006000 + 3bc08daa: 0141 addi sp,sp,16 + 3bc08dac: 8082 ret + +000000003bc08dae : + 3bc08dae: 080007b7 lui a5,0x8000 + 3bc08db2: 10078693 addi a3,a5,256 # 8000100 + 3bc08db6: 4af8 lw a4,84(a3) + 3bc08db8: 0000b617 auipc a2,0xb + 3bc08dbc: a3860613 addi a2,a2,-1480 # 3bc137f0 + 3bc08dc0: 20078793 addi a5,a5,512 + 3bc08dc4: 2701 sext.w a4,a4 + 3bc08dc6: 9b79 andi a4,a4,-2 + 3bc08dc8: caf8 sw a4,84(a3) + 3bc08dca: 00062023 sw zero,0(a2) + 3bc08dce: f207a823 sw zero,-208(a5) + 3bc08dd2: 43d4 lw a3,4(a5) + 3bc08dd4: 000405b7 lui a1,0x40 + 3bc08dd8: 8ecd or a3,a3,a1 + 3bc08dda: c214 sw a3,0(a2) + 3bc08ddc: c3d4 sw a3,4(a5) + 3bc08dde: 53d8 lw a4,36(a5) + 3bc08de0: 8f4d or a4,a4,a1 + 3bc08de2: c218 sw a4,0(a2) + 3bc08de4: d3d8 sw a4,36(a5) + 3bc08de6: 8082 ret + +000000003bc08de8 : + 3bc08de8: 08004737 lui a4,0x8004 + 3bc08dec: 0000b697 auipc a3,0xb + 3bc08df0: a0468693 addi a3,a3,-1532 # 3bc137f0 + 3bc08df4: 1bc72783 lw a5,444(a4) # 80041bc + 3bc08df8: 2781 sext.w a5,a5 + 3bc08dfa: c29c sw a5,0(a3) + 3bc08dfc: 8b85 andi a5,a5,1 + 3bc08dfe: dbfd beqz a5,3bc08df4 + 3bc08e00: 32072023 sw zero,800(a4) + 3bc08e04: 1b072783 lw a5,432(a4) + 3bc08e08: 2781 sext.w a5,a5 + 3bc08e0a: fc07f793 andi a5,a5,-64 + 3bc08e0e: 0057e793 ori a5,a5,5 + 3bc08e12: c29c sw a5,0(a3) + 3bc08e14: 1af72823 sw a5,432(a4) + 3bc08e18: 4785 li a5,1 + 3bc08e1a: 32f72023 sw a5,800(a4) + 3bc08e1e: 8082 ret + +000000003bc08e20 : + 3bc08e20: 080036b7 lui a3,0x8003 + 3bc08e24: 0000b717 auipc a4,0xb + 3bc08e28: 9cc70713 addi a4,a4,-1588 # 3bc137f0 + 3bc08e2c: 569c lw a5,40(a3) + 3bc08e2e: 2781 sext.w a5,a5 + 3bc08e30: c31c sw a5,0(a4) + 3bc08e32: 1007f793 andi a5,a5,256 + 3bc08e36: dbfd beqz a5,3bc08e2c + 3bc08e38: 8082 ret + +000000003bc08e3a : + 3bc08e3a: 1141 addi sp,sp,-16 + 3bc08e3c: 4551 li a0,20 + 3bc08e3e: e406 sd ra,8(sp) + 3bc08e40: b4af70ef jal ra,3bc0018a + 3bc08e44: 080007b7 lui a5,0x8000 + 3bc08e48: 4741 li a4,16 + 3bc08e4a: 12e7a023 sw a4,288(a5) # 8000120 + 3bc08e4e: 60a2 ld ra,8(sp) + 3bc08e50: 4705 li a4,1 + 3bc08e52: 0000b697 auipc a3,0xb + 3bc08e56: 98e6af23 sw a4,-1634(a3) # 3bc137f0 + 3bc08e5a: 10e7ac23 sw a4,280(a5) + 3bc08e5e: 0141 addi sp,sp,16 + 3bc08e60: 8082 ret + +000000003bc08e62 : + 3bc08e62: 1141 addi sp,sp,-16 + 3bc08e64: e406 sd ra,8(sp) + 3bc08e66: 0000b797 auipc a5,0xb + 3bc08e6a: 98a78793 addi a5,a5,-1654 # 3bc137f0 + 3bc08e6e: 0007a023 sw zero,0(a5) + 3bc08e72: 08000737 lui a4,0x8000 + 3bc08e76: 10072c23 sw zero,280(a4) # 8000118 + 3bc08e7a: 08006737 lui a4,0x8006 + 3bc08e7e: 4778 lw a4,76(a4) + 3bc08e80: c398 sw a4,0(a5) + 3bc08e82: ee5ff0ef jal ra,3bc08d66 + 3bc08e86: 60a2 ld ra,8(sp) + 3bc08e88: 0141 addi sp,sp,16 + 3bc08e8a: fb1ff06f j 3bc08e3a + +000000003bc08e8e : + 3bc08e8e: 08004637 lui a2,0x8004 + 3bc08e92: 0000b697 auipc a3,0xb + 3bc08e96: 95e68693 addi a3,a3,-1698 # 3bc137f0 + 3bc08e9a: 4705 li a4,1 + 3bc08e9c: 425c lw a5,4(a2) + 3bc08e9e: 2781 sext.w a5,a5 + 3bc08ea0: c29c sw a5,0(a3) + 3bc08ea2: 8b9d andi a5,a5,7 + 3bc08ea4: fee79ce3 bne a5,a4,3bc08e9c + 3bc08ea8: 8082 ret + +000000003bc08eaa : + 3bc08eaa: 4785 li a5,1 + 3bc08eac: 0000b717 auipc a4,0xb + 3bc08eb0: 94470713 addi a4,a4,-1724 # 3bc137f0 + 3bc08eb4: 080006b7 lui a3,0x8000 + 3bc08eb8: c31c sw a5,0(a4) + 3bc08eba: 16f6aa23 sw a5,372(a3) # 8000174 + 3bc08ebe: 08003637 lui a2,0x8003 + 3bc08ec2: 468d li a3,3 + 3bc08ec4: 5a1c lw a5,48(a2) + 3bc08ec6: 2781 sext.w a5,a5 + 3bc08ec8: c31c sw a5,0(a4) + 3bc08eca: 2487b78b extu a5,a5,9,8 + 3bc08ece: fed79be3 bne a5,a3,3bc08ec4 + 3bc08ed2: 4785 li a5,1 + 3bc08ed4: 02f51a63 bne a0,a5,3bc08f08 + 3bc08ed8: 0800a7b7 lui a5,0x800a + 3bc08edc: 46ed li a3,27 + 3bc08ede: c394 sw a3,0(a5) + 3bc08ee0: 0800a7b7 lui a5,0x800a + 3bc08ee4: 4685 li a3,1 + 3bc08ee6: c3d4 sw a3,4(a5) + 3bc08ee8: 020006b7 lui a3,0x2000 + 3bc08eec: fcb68693 addi a3,a3,-53 # 1ffffcb <__BSS_SIZE__+0x1ffa3bb> + 3bc08ef0: c794 sw a3,8(a5) + 3bc08ef2: 400006b7 lui a3,0x40000 + 3bc08ef6: 16fd addi a3,a3,-1 + 3bc08ef8: c7d4 sw a3,12(a5) + 3bc08efa: 47c1 li a5,16 + 3bc08efc: c31c sw a5,0(a4) + 3bc08efe: 08000737 lui a4,0x8000 + 3bc08f02: 16f72a23 sw a5,372(a4) # 8000174 + 3bc08f06: 8082 ret + 3bc08f08: 0800a7b7 lui a5,0x800a + 3bc08f0c: 0007a023 sw zero,0(a5) # 800a000 + 3bc08f10: bfc1 j 3bc08ee0 + +000000003bc08f12 : + 3bc08f12: 08004737 lui a4,0x8004 + 3bc08f16: 080037b7 lui a5,0x8003 + 3bc08f1a: 439c lw a5,0(a5) + 3bc08f1c: 19072683 lw a3,400(a4) # 8004190 + 3bc08f20: 0000b797 auipc a5,0xb + 3bc08f24: 8d078793 addi a5,a5,-1840 # 3bc137f0 + 3bc08f28: c394 sw a3,0(a5) + 3bc08f2a: 19472703 lw a4,404(a4) + 3bc08f2e: c398 sw a4,0(a5) + 3bc08f30: 8082 ret + +000000003bc08f32 : + 3bc08f32: 08004737 lui a4,0x8004 + 3bc08f36: 32072023 sw zero,800(a4) # 8004320 + 3bc08f3a: 1b072783 lw a5,432(a4) + 3bc08f3e: 2781 sext.w a5,a5 + 3bc08f40: 0207e793 ori a5,a5,32 + 3bc08f44: 0000b697 auipc a3,0xb + 3bc08f48: 8af6a623 sw a5,-1876(a3) # 3bc137f0 + 3bc08f4c: 1af72823 sw a5,432(a4) + 3bc08f50: 4785 li a5,1 + 3bc08f52: 32f72023 sw a5,800(a4) + 3bc08f56: 8082 ret + +000000003bc08f58 : + 3bc08f58: 080067b7 lui a5,0x8006 + 3bc08f5c: 00080737 lui a4,0x80 + 3bc08f60: 0207a423 sw zero,40(a5) # 8006028 + 3bc08f64: 0705 addi a4,a4,1 + 3bc08f66: cbf8 sw a4,84(a5) + 3bc08f68: 01011737 lui a4,0x1011 + 3bc08f6c: 80870713 addi a4,a4,-2040 # 1010808 <__BSS_SIZE__+0x100abf8> + 3bc08f70: 030036b7 lui a3,0x3003 + 3bc08f74: cfb8 sw a4,88(a5) + 3bc08f76: 90068693 addi a3,a3,-1792 # 3002900 <__BSS_SIZE__+0x2ffccf0> + 3bc08f7a: 0000b717 auipc a4,0xb + 3bc08f7e: 84e72703 lw a4,-1970(a4) # 3bc137c8 + 3bc08f82: caf8 sw a4,84(a3) + 3bc08f84: 0000b717 auipc a4,0xb + 3bc08f88: 84c75703 lhu a4,-1972(a4) # 3bc137d0 + 3bc08f8c: ceb8 sw a4,88(a3) + 3bc08f8e: 0000b717 auipc a4,0xb + 3bc08f92: 84a73703 ld a4,-1974(a4) # 3bc137d8 + 3bc08f96: 5c07370b extu a4,a4,23,0 + 3bc08f9a: 0000b617 auipc a2,0xb + 3bc08f9e: 85660613 addi a2,a2,-1962 # 3bc137f0 + 3bc08fa2: 2701 sext.w a4,a4 + 3bc08fa4: c218 sw a4,0(a2) + 3bc08fa6: cef8 sw a4,92(a3) + 3bc08fa8: 4ab8 lw a4,80(a3) + 3bc08faa: 2701 sext.w a4,a4 + 3bc08fac: 00174713 xori a4,a4,1 + 3bc08fb0: fa177713 andi a4,a4,-95 + 3bc08fb4: 02076713 ori a4,a4,32 + 3bc08fb8: c218 sw a4,0(a2) + 3bc08fba: cab8 sw a4,80(a3) + 3bc08fbc: 47d8 lw a4,12(a5) + 3bc08fbe: 2701 sext.w a4,a4 + 3bc08fc0: 30b74693 xori a3,a4,779 + 3bc08fc4: 3c06b68b extu a3,a3,15,0 + 3bc08fc8: 8f35 xor a4,a4,a3 + 3bc08fca: c218 sw a4,0(a2) + 3bc08fcc: c7d8 sw a4,12(a5) + 3bc08fce: 4b98 lw a4,16(a5) + 3bc08fd0: 080066b7 lui a3,0x8006 + 3bc08fd4: 2701 sext.w a4,a4 + 3bc08fd6: f0077713 andi a4,a4,-256 + 3bc08fda: cb98 sw a4,16(a5) + 3bc08fdc: 4705 li a4,1 + 3bc08fde: c218 sw a4,0(a2) + 3bc08fe0: c3d8 sw a4,4(a5) + 3bc08fe2: 47d8 lw a4,12(a5) + 3bc08fe4: 2701 sext.w a4,a4 + 3bc08fe6: 08076713 ori a4,a4,128 + 3bc08fea: c218 sw a4,0(a2) + 3bc08fec: c7d8 sw a4,12(a5) + 3bc08fee: 6721 lui a4,0x8 + 3bc08ff0: 4a9c lw a5,16(a3) + 3bc08ff2: 2781 sext.w a5,a5 + 3bc08ff4: c21c sw a5,0(a2) + 3bc08ff6: 8ff9 and a5,a5,a4 + 3bc08ff8: 2781 sext.w a5,a5 + 3bc08ffa: dbfd beqz a5,3bc08ff0 + 3bc08ffc: 8082 ret + +000000003bc08ffe : + 3bc08ffe: 6785 lui a5,0x1 + 3bc09000: 08006737 lui a4,0x8006 + 3bc09004: 2f578793 addi a5,a5,757 # 12f5 <__BSS_SIZE__-0x491b> + 3bc09008: c37c sw a5,68(a4) + 3bc0900a: 0000a697 auipc a3,0xa + 3bc0900e: 7e668693 addi a3,a3,2022 # 3bc137f0 + 3bc09012: 0006a023 sw zero,0(a3) + 3bc09016: 080007b7 lui a5,0x8000 + 3bc0901a: 0e07aa23 sw zero,244(a5) # 80000f4 + 3bc0901e: 080047b7 lui a5,0x8004 + 3bc09022: 5b98 lw a4,48(a5) + 3bc09024: 767d lui a2,0xfffff + 3bc09026: 5ff60613 addi a2,a2,1535 # fffffffffffff5ff <__BL2_END__+0xffffffffc43ebdef> + 3bc0902a: 2701 sext.w a4,a4 + 3bc0902c: 8f71 and a4,a4,a2 + 3bc0902e: c298 sw a4,0(a3) + 3bc09030: db98 sw a4,48(a5) + 3bc09032: 10078793 addi a5,a5,256 # 8004100 + 3bc09036: 47b8 lw a4,72(a5) + 3bc09038: 7f800637 lui a2,0x7f800 + 3bc0903c: 167d addi a2,a2,-1 + 3bc0903e: 2701 sext.w a4,a4 + 3bc09040: 8f71 and a4,a4,a2 + 3bc09042: c298 sw a4,0(a3) + 3bc09044: c7b8 sw a4,72(a5) + 3bc09046: 8082 ret + +000000003bc09048 : + 3bc09048: 679d lui a5,0x7 + 3bc0904a: 0000a617 auipc a2,0xa + 3bc0904e: 7a660613 addi a2,a2,1958 # 3bc137f0 + 3bc09052: c8178793 addi a5,a5,-895 # 6c81 <__BSS_SIZE__+0x1071> + 3bc09056: c21c sw a5,0(a2) + 3bc09058: 08006737 lui a4,0x8006 + 3bc0905c: c37c sw a5,68(a4) + 3bc0905e: 08004737 lui a4,0x8004 + 3bc09062: 18070593 addi a1,a4,384 # 8004180 + 3bc09066: 499c lw a5,16(a1) + 3bc09068: 060006b7 lui a3,0x6000 + 3bc0906c: 1f000537 lui a0,0x1f000 + 3bc09070: 2781 sext.w a5,a5 + 3bc09072: 8ebd xor a3,a3,a5 + 3bc09074: 8ee9 and a3,a3,a0 + 3bc09076: 8fb5 xor a5,a5,a3 + 3bc09078: 2781 sext.w a5,a5 + 3bc0907a: c99c sw a5,16(a1) + 3bc0907c: 000307b7 lui a5,0x30 + 3bc09080: 03378793 addi a5,a5,51 # 30033 <__BSS_SIZE__+0x2a423> + 3bc09084: c21c sw a5,0(a2) + 3bc09086: 080006b7 lui a3,0x8000 + 3bc0908a: 0ef6aa23 sw a5,244(a3) # 80000f4 + 3bc0908e: 5b1c lw a5,48(a4) + 3bc09090: 76fd lui a3,0xfffff + 3bc09092: bff68693 addi a3,a3,-1025 # ffffffffffffebff <__BL2_END__+0xffffffffc43eb3ef> + 3bc09096: 2781 sext.w a5,a5 + 3bc09098: 8ff5 and a5,a5,a3 + 3bc0909a: 6685 lui a3,0x1 + 3bc0909c: a0068693 addi a3,a3,-1536 # a00 <__BSS_SIZE__-0x5210> + 3bc090a0: 8fd5 or a5,a5,a3 + 3bc090a2: c21c sw a5,0(a2) + 3bc090a4: db1c sw a5,48(a4) + 3bc090a6: 10070713 addi a4,a4,256 + 3bc090aa: 473c lw a5,72(a4) + 3bc090ac: 808006b7 lui a3,0x80800 + 3bc090b0: 8fd5 or a5,a5,a3 + 3bc090b2: c21c sw a5,0(a2) + 3bc090b4: c73c sw a5,72(a4) + 3bc090b6: 8082 ret + +000000003bc090b8 : + 3bc090b8: 715d addi sp,sp,-80 + 3bc090ba: f44e sd s3,40(sp) + 3bc090bc: e85a sd s6,16(sp) + 3bc090be: e486 sd ra,72(sp) + 3bc090c0: e0a2 sd s0,64(sp) + 3bc090c2: fc26 sd s1,56(sp) + 3bc090c4: f84a sd s2,48(sp) + 3bc090c6: f052 sd s4,32(sp) + 3bc090c8: ec56 sd s5,24(sp) + 3bc090ca: e45e sd s7,8(sp) + 3bc090cc: 080007b7 lui a5,0x8000 + 3bc090d0: 00fe0737 lui a4,0xfe0 + 3bc090d4: cff8 sw a4,92(a5) + 3bc090d6: 080047b7 lui a5,0x8004 + 3bc090da: 5407a023 sw zero,1344(a5) # 8004540 + 3bc090de: 5e07a823 sw zero,1520(a5) + 3bc090e2: 6a07a023 sw zero,1696(a5) + 3bc090e6: 08004b37 lui s6,0x8004 + 3bc090ea: 0000a997 auipc s3,0xa + 3bc090ee: 70698993 addi s3,s3,1798 # 3bc137f0 + 3bc090f2: 3fcb2783 lw a5,1020(s6) # 80043fc + 3bc090f6: 2781 sext.w a5,a5 + 3bc090f8: 00f9a023 sw a5,0(s3) + 3bc090fc: fbfd bnez a5,3bc090f2 + 3bc090fe: 030b2783 lw a5,48(s6) + 3bc09102: 0007849b sext.w s1,a5 + 3bc09106: 0017f913 andi s2,a5,1 + 3bc0910a: fd44f793 andi a5,s1,-44 + 3bc0910e: 00f9a023 sw a5,0(s3) + 3bc09112: 02fb2823 sw a5,48(s6) + 3bc09116: ee9ff0ef jal ra,3bc08ffe + 3bc0911a: 244b2a03 lw s4,580(s6) + 3bc0911e: 2a01 sext.w s4,s4 + 3bc09120: 0149a023 sw s4,0(s3) + 3bc09124: 001a7a13 andi s4,s4,1 + 3bc09128: e08ff0ef jal ra,3bc08730 + 3bc0912c: 120a0e63 beqz s4,3bc09268 + 3bc09130: 0e0b2403 lw s0,224(s6) + 3bc09134: 00040a9b sext.w s5,s0 + 3bc09138: 01945b9b srliw s7,s0,0x19 + 3bc0913c: 6994340b extu s0,s0,26,25 + 3bc09140: e07d bnez s0,3bc09226 + 3bc09142: 0159a023 sw s5,0(s3) + 3bc09146: 3c04358b extu a1,s0,15,0 + 3bc0914a: 0805e593 ori a1,a1,128 + 3bc0914e: 4505 li a0,1 + 3bc09150: 977ff0ef jal ra,3bc08ac6 + 3bc09154: 08000737 lui a4,0x8000 + 3bc09158: 18072783 lw a5,384(a4) # 8000180 + 3bc0915c: 004a1a1b slliw s4,s4,0x4 + 3bc09160: 2781 sext.w a5,a5 + 3bc09162: 0017e793 ori a5,a5,1 + 3bc09166: 0147ca33 xor s4,a5,s4 + 3bc0916a: 010a7a13 andi s4,s4,16 + 3bc0916e: 0147ca33 xor s4,a5,s4 + 3bc09172: 0149a023 sw s4,0(s3) + 3bc09176: 19472023 sw s4,384(a4) + 3bc0917a: 08003737 lui a4,0x8003 + 3bc0917e: 44472783 lw a5,1092(a4) # 8003444 + 3bc09182: 2781 sext.w a5,a5 + 3bc09184: 00f9a023 sw a5,0(s3) + 3bc09188: 8b85 andi a5,a5,1 + 3bc0918a: dbf5 beqz a5,3bc0917e + 3bc0918c: 00040737 lui a4,0x40 + 3bc09190: 080107b7 lui a5,0x8010 + 3bc09194: 08004437 lui s0,0x8004 + 3bc09198: c398 sw a4,0(a5) + 3bc0919a: 503c lw a5,96(s0) + 3bc0919c: 08040a13 addi s4,s0,128 # 8004080 + 3bc091a0: 4505 li a0,1 + 3bc091a2: 2781 sext.w a5,a5 + 3bc091a4: 9bf9 andi a5,a5,-2 + 3bc091a6: 00f9a023 sw a5,0(s3) + 3bc091aa: d03c sw a5,96(s0) + 3bc091ac: 05ca2583 lw a1,92(s4) # 1f005c <__BSS_SIZE__+0x1ea44c> + 3bc091b0: 2581 sext.w a1,a1 + 3bc091b2: 00b9a023 sw a1,0(s3) + 3bc091b6: 3c05b58b extu a1,a1,15,0 + 3bc091ba: 90dff0ef jal ra,3bc08ac6 + 3bc091be: 060a2583 lw a1,96(s4) + 3bc091c2: 4509 li a0,2 + 3bc091c4: 2581 sext.w a1,a1 + 3bc091c6: 00b9a023 sw a1,0(s3) + 3bc091ca: 7d05b58b extu a1,a1,31,16 + 3bc091ce: 8f9ff0ef jal ra,3bc08ac6 + 3bc091d2: 581c lw a5,48(s0) + 3bc091d4: 60a6 ld ra,72(sp) + 3bc091d6: 7a02 ld s4,32(sp) + 3bc091d8: 2781 sext.w a5,a5 + 3bc091da: 0097c733 xor a4,a5,s1 + 3bc091de: 02077713 andi a4,a4,32 + 3bc091e2: 8fb9 xor a5,a5,a4 + 3bc091e4: 0097c733 xor a4,a5,s1 + 3bc091e8: 8b21 andi a4,a4,8 + 3bc091ea: 8fb9 xor a5,a5,a4 + 3bc091ec: 8cbd xor s1,s1,a5 + 3bc091ee: 8889 andi s1,s1,2 + 3bc091f0: 8fa5 xor a5,a5,s1 + 3bc091f2: 9bf9 andi a5,a5,-2 + 3bc091f4: 0127e7b3 or a5,a5,s2 + 3bc091f8: 00f9a023 sw a5,0(s3) + 3bc091fc: d81c sw a5,48(s0) + 3bc091fe: 50040713 addi a4,s0,1280 + 3bc09202: 4785 li a5,1 + 3bc09204: c33c sw a5,64(a4) + 3bc09206: 58040713 addi a4,s0,1408 + 3bc0920a: db3c sw a5,112(a4) + 3bc0920c: 68040413 addi s0,s0,1664 + 3bc09210: d01c sw a5,32(s0) + 3bc09212: 6406 ld s0,64(sp) + 3bc09214: 74e2 ld s1,56(sp) + 3bc09216: 7942 ld s2,48(sp) + 3bc09218: 79a2 ld s3,40(sp) + 3bc0921a: 6ae2 ld s5,24(sp) + 3bc0921c: 6b42 ld s6,16(sp) + 3bc0921e: 6ba2 ld s7,8(sp) + 3bc09220: 6161 addi sp,sp,80 + 3bc09222: e27ff06f j 3bc09048 + 3bc09226: fa0005b7 lui a1,0xfa000 + 3bc0922a: 15fd addi a1,a1,-1 + 3bc0922c: 00baf5b3 and a1,s5,a1 + 3bc09230: 00b9a023 sw a1,0(s3) + 3bc09234: 4509 li a0,2 + 3bc09236: 7d05b58b extu a1,a1,31,16 + 3bc0923a: 88dff0ef jal ra,3bc08ac6 + 3bc0923e: 0dcb2403 lw s0,220(s6) + 3bc09242: 01aad59b srliw a1,s5,0x1a + 3bc09246: 0065959b slliw a1,a1,0x6 + 3bc0924a: 2401 sext.w s0,s0 + 3bc0924c: 0089a023 sw s0,0(s3) + 3bc09250: dff47413 andi s0,s0,-513 + 3bc09254: 8da1 xor a1,a1,s0 + 3bc09256: 0405f593 andi a1,a1,64 + 3bc0925a: 8c2d xor s0,s0,a1 + 3bc0925c: 002b959b slliw a1,s7,0x2 + 3bc09260: 8da1 xor a1,a1,s0 + 3bc09262: 8991 andi a1,a1,4 + 3bc09264: 8c2d xor s0,s0,a1 + 3bc09266: b5c5 j 3bc09146 + 3bc09268: 0dcb2583 lw a1,220(s6) + 3bc0926c: 67c1 lui a5,0x10 + 3bc0926e: dfb78793 addi a5,a5,-517 # fdfb <__BSS_SIZE__+0xa1eb> + 3bc09272: 2581 sext.w a1,a1 + 3bc09274: 00b9a023 sw a1,0(s3) + 3bc09278: dfb5f413 andi s0,a1,-517 + 3bc0927c: 8dfd and a1,a1,a5 + 3bc0927e: 0405e593 ori a1,a1,64 + 3bc09282: 4505 li a0,1 + 3bc09284: 04046413 ori s0,s0,64 + 3bc09288: 83fff0ef jal ra,3bc08ac6 + 3bc0928c: bd6d j 3bc09146 + +000000003bc0928e : + 3bc0928e: 7179 addi sp,sp,-48 + 3bc09290: f022 sd s0,32(sp) + 3bc09292: e052 sd s4,0(sp) + 3bc09294: f406 sd ra,40(sp) + 3bc09296: ec26 sd s1,24(sp) + 3bc09298: e84a sd s2,16(sp) + 3bc0929a: e44e sd s3,8(sp) + 3bc0929c: 080047b7 lui a5,0x8004 + 3bc092a0: 5407a023 sw zero,1344(a5) # 8004540 + 3bc092a4: 5e07a823 sw zero,1520(a5) + 3bc092a8: 6a07a023 sw zero,1696(a5) + 3bc092ac: 08004a37 lui s4,0x8004 + 3bc092b0: 0000a417 auipc s0,0xa + 3bc092b4: 54040413 addi s0,s0,1344 # 3bc137f0 + 3bc092b8: 3fca2783 lw a5,1020(s4) # 80043fc + 3bc092bc: 2781 sext.w a5,a5 + 3bc092be: c01c sw a5,0(s0) + 3bc092c0: ffe5 bnez a5,3bc092b8 + 3bc092c2: 030a2783 lw a5,48(s4) + 3bc092c6: 0007849b sext.w s1,a5 + 3bc092ca: 0017f913 andi s2,a5,1 + 3bc092ce: fd44f793 andi a5,s1,-44 + 3bc092d2: c01c sw a5,0(s0) + 3bc092d4: 02fa2823 sw a5,48(s4) + 3bc092d8: d27ff0ef jal ra,3bc08ffe + 3bc092dc: 080007b7 lui a5,0x8000 + 3bc092e0: 1847a983 lw s3,388(a5) # 8000184 + 3bc092e4: 2981 sext.w s3,s3 + 3bc092e6: 01342023 sw s3,0(s0) + 3bc092ea: 1049b98b extu s3,s3,4,4 + 3bc092ee: 02098763 beqz s3,3bc0931c + 3bc092f2: 060a2783 lw a5,96(s4) + 3bc092f6: 450d li a0,3 + 3bc092f8: 2781 sext.w a5,a5 + 3bc092fa: 0017e793 ori a5,a5,1 + 3bc092fe: c01c sw a5,0(s0) + 3bc09300: 06fa2023 sw a5,96(s4) + 3bc09304: 0e0a2583 lw a1,224(s4) + 3bc09308: 2581 sext.w a1,a1 + 3bc0930a: 0045e793 ori a5,a1,4 + 3bc0930e: 3c05b58b extu a1,a1,15,0 + 3bc09312: 0045e593 ori a1,a1,4 + 3bc09316: c01c sw a5,0(s0) + 3bc09318: faeff0ef jal ra,3bc08ac6 + 3bc0931c: c5aff0ef jal ra,3bc08776 + 3bc09320: 08000737 lui a4,0x8000 + 3bc09324: 18472783 lw a5,388(a4) # 8000184 + 3bc09328: 2781 sext.w a5,a5 + 3bc0932a: 0017e793 ori a5,a5,1 + 3bc0932e: c01c sw a5,0(s0) + 3bc09330: 18f72223 sw a5,388(a4) + 3bc09334: 08003737 lui a4,0x8003 + 3bc09338: 44472783 lw a5,1092(a4) # 8003444 + 3bc0933c: 2781 sext.w a5,a5 + 3bc0933e: c01c sw a5,0(s0) + 3bc09340: 8b89 andi a5,a5,2 + 3bc09342: dbfd beqz a5,3bc09338 + 3bc09344: 080107b7 lui a5,0x8010 + 3bc09348: 00040737 lui a4,0x40 + 3bc0934c: c398 sw a4,0(a5) + 3bc0934e: 02098763 beqz s3,3bc0937c + 3bc09352: 080049b7 lui s3,0x8004 + 3bc09356: 0e09a783 lw a5,224(s3) # 80040e0 + 3bc0935a: 65c1 lui a1,0x10 + 3bc0935c: 15ed addi a1,a1,-5 + 3bc0935e: 2781 sext.w a5,a5 + 3bc09360: ffb7f713 andi a4,a5,-5 + 3bc09364: 8dfd and a1,a1,a5 + 3bc09366: 450d li a0,3 + 3bc09368: c018 sw a4,0(s0) + 3bc0936a: f5cff0ef jal ra,3bc08ac6 + 3bc0936e: 0609a783 lw a5,96(s3) + 3bc09372: 2781 sext.w a5,a5 + 3bc09374: 9bf9 andi a5,a5,-2 + 3bc09376: c01c sw a5,0(s0) + 3bc09378: 06f9a023 sw a5,96(s3) + 3bc0937c: 08004737 lui a4,0x8004 + 3bc09380: 5b1c lw a5,48(a4) + 3bc09382: 70a2 ld ra,40(sp) + 3bc09384: 69a2 ld s3,8(sp) + 3bc09386: 2781 sext.w a5,a5 + 3bc09388: 0097c6b3 xor a3,a5,s1 + 3bc0938c: 0206f693 andi a3,a3,32 + 3bc09390: 8fb5 xor a5,a5,a3 + 3bc09392: 0097c6b3 xor a3,a5,s1 + 3bc09396: 8aa1 andi a3,a3,8 + 3bc09398: 8fb5 xor a5,a5,a3 + 3bc0939a: 8cbd xor s1,s1,a5 + 3bc0939c: 8889 andi s1,s1,2 + 3bc0939e: 8fa5 xor a5,a5,s1 + 3bc093a0: 9bf9 andi a5,a5,-2 + 3bc093a2: 0127e7b3 or a5,a5,s2 + 3bc093a6: c01c sw a5,0(s0) + 3bc093a8: db1c sw a5,48(a4) + 3bc093aa: 50070693 addi a3,a4,1280 # 8004500 + 3bc093ae: 4785 li a5,1 + 3bc093b0: c2bc sw a5,64(a3) + 3bc093b2: 7402 ld s0,32(sp) + 3bc093b4: 58070693 addi a3,a4,1408 + 3bc093b8: 64e2 ld s1,24(sp) + 3bc093ba: 6942 ld s2,16(sp) + 3bc093bc: 6a02 ld s4,0(sp) + 3bc093be: dabc sw a5,112(a3) + 3bc093c0: 68070713 addi a4,a4,1664 + 3bc093c4: d31c sw a5,32(a4) + 3bc093c6: 6145 addi sp,sp,48 + 3bc093c8: c81ff06f j 3bc09048 + +000000003bc093cc : + 3bc093cc: 7139 addi sp,sp,-64 + 3bc093ce: f822 sd s0,48(sp) + 3bc093d0: e456 sd s5,8(sp) + 3bc093d2: e05a sd s6,0(sp) + 3bc093d4: fc06 sd ra,56(sp) + 3bc093d6: f426 sd s1,40(sp) + 3bc093d8: f04a sd s2,32(sp) + 3bc093da: ec4e sd s3,24(sp) + 3bc093dc: e852 sd s4,16(sp) + 3bc093de: 080047b7 lui a5,0x8004 + 3bc093e2: 5407a023 sw zero,1344(a5) # 8004540 + 3bc093e6: 5e07a823 sw zero,1520(a5) + 3bc093ea: 8aaa mv s5,a0 + 3bc093ec: 6a07a023 sw zero,1696(a5) + 3bc093f0: 08004b37 lui s6,0x8004 + 3bc093f4: 0000a417 auipc s0,0xa + 3bc093f8: 3fc40413 addi s0,s0,1020 # 3bc137f0 + 3bc093fc: 3fcb2783 lw a5,1020(s6) # 80043fc + 3bc09400: 2781 sext.w a5,a5 + 3bc09402: c01c sw a5,0(s0) + 3bc09404: ffe5 bnez a5,3bc093fc + 3bc09406: 030b2783 lw a5,48(s6) + 3bc0940a: 0007891b sext.w s2,a5 + 3bc0940e: 0017f493 andi s1,a5,1 + 3bc09412: fd497793 andi a5,s2,-44 + 3bc09416: c01c sw a5,0(s0) + 3bc09418: 02fb2823 sw a5,48(s6) + 3bc0941c: be3ff0ef jal ra,3bc08ffe + 3bc09420: 4505 li a0,1 + 3bc09422: a89ff0ef jal ra,3bc08eaa + 3bc09426: 080006b7 lui a3,0x8000 + 3bc0942a: 08068613 addi a2,a3,128 # 8000080 + 3bc0942e: 4218 lw a4,0(a2) + 3bc09430: 002007b7 lui a5,0x200 + 3bc09434: 007f05b7 lui a1,0x7f0 + 3bc09438: 2701 sext.w a4,a4 + 3bc0943a: 8fb9 xor a5,a5,a4 + 3bc0943c: 8fed and a5,a5,a1 + 3bc0943e: 8f3d xor a4,a4,a5 + 3bc09440: 2701 sext.w a4,a4 + 3bc09442: 1f0007b7 lui a5,0x1f000 + 3bc09446: 8fb9 xor a5,a5,a4 + 3bc09448: 7f0005b7 lui a1,0x7f000 + 3bc0944c: 8fed and a5,a5,a1 + 3bc0944e: 8f3d xor a4,a4,a5 + 3bc09450: 2701 sext.w a4,a4 + 3bc09452: c018 sw a4,0(s0) + 3bc09454: c218 sw a4,0(a2) + 3bc09456: 00c62a03 lw s4,12(a2) + 3bc0945a: 18068693 addi a3,a3,384 + 3bc0945e: 000a079b sext.w a5,s4 + 3bc09462: 9bc5 andi a5,a5,-15 + 3bc09464: c01c sw a5,0(s0) + 3bc09466: c65c sw a5,12(a2) + 3bc09468: 0086a983 lw s3,8(a3) + 3bc0946c: 082a3a0b extu s4,s4,2,2 + 3bc09470: 2981 sext.w s3,s3 + 3bc09472: 01342023 sw s3,0(s0) + 3bc09476: 1049b98b extu s3,s3,4,4 + 3bc0947a: 02098763 beqz s3,3bc094a8 + 3bc0947e: 060b2783 lw a5,96(s6) + 3bc09482: 450d li a0,3 + 3bc09484: 2781 sext.w a5,a5 + 3bc09486: 0017e793 ori a5,a5,1 + 3bc0948a: c01c sw a5,0(s0) + 3bc0948c: 06fb2023 sw a5,96(s6) + 3bc09490: 0e0b2583 lw a1,224(s6) + 3bc09494: 2581 sext.w a1,a1 + 3bc09496: 0045e793 ori a5,a1,4 + 3bc0949a: 3c05b58b extu a1,a1,15,0 + 3bc0949e: 0045e593 ori a1,a1,4 + 3bc094a2: c01c sw a5,0(s0) + 3bc094a4: e22ff0ef jal ra,3bc08ac6 + 3bc094a8: 8556 mv a0,s5 + 3bc094aa: b12ff0ef jal ra,3bc087bc + 3bc094ae: 08000737 lui a4,0x8000 + 3bc094b2: 18872783 lw a5,392(a4) # 8000188 + 3bc094b6: 2781 sext.w a5,a5 + 3bc094b8: 0017e793 ori a5,a5,1 + 3bc094bc: c01c sw a5,0(s0) + 3bc094be: 18f72423 sw a5,392(a4) + 3bc094c2: 08003737 lui a4,0x8003 + 3bc094c6: 44472783 lw a5,1092(a4) # 8003444 + 3bc094ca: 2781 sext.w a5,a5 + 3bc094cc: c01c sw a5,0(s0) + 3bc094ce: 8b91 andi a5,a5,4 + 3bc094d0: dbfd beqz a5,3bc094c6 + 3bc094d2: 040a0563 beqz s4,3bc0951c + 3bc094d6: 08000737 lui a4,0x8000 + 3bc094da: 08070693 addi a3,a4,128 # 8000080 + 3bc094de: 46dc lw a5,12(a3) + 3bc094e0: 18070713 addi a4,a4,384 + 3bc094e4: 2781 sext.w a5,a5 + 3bc094e6: 9bed andi a5,a5,-5 + 3bc094e8: c01c sw a5,0(s0) + 3bc094ea: c6dc sw a5,12(a3) + 3bc094ec: 471c lw a5,8(a4) + 3bc094ee: 2781 sext.w a5,a5 + 3bc094f0: 0017e793 ori a5,a5,1 + 3bc094f4: c01c sw a5,0(s0) + 3bc094f6: c71c sw a5,8(a4) + 3bc094f8: 08003737 lui a4,0x8003 + 3bc094fc: 44472783 lw a5,1092(a4) # 8003444 + 3bc09500: 2781 sext.w a5,a5 + 3bc09502: c01c sw a5,0(s0) + 3bc09504: 8b91 andi a5,a5,4 + 3bc09506: dbfd beqz a5,3bc094fc + 3bc09508: 08000737 lui a4,0x8000 + 3bc0950c: 08c72783 lw a5,140(a4) # 800008c + 3bc09510: 2781 sext.w a5,a5 + 3bc09512: 0047e793 ori a5,a5,4 + 3bc09516: c01c sw a5,0(s0) + 3bc09518: 08f72623 sw a5,140(a4) + 3bc0951c: 02098763 beqz s3,3bc0954a + 3bc09520: 080049b7 lui s3,0x8004 + 3bc09524: 0e09a783 lw a5,224(s3) # 80040e0 + 3bc09528: 65c1 lui a1,0x10 + 3bc0952a: 15ed addi a1,a1,-5 + 3bc0952c: 2781 sext.w a5,a5 + 3bc0952e: ffb7f713 andi a4,a5,-5 + 3bc09532: 8dfd and a1,a1,a5 + 3bc09534: 450d li a0,3 + 3bc09536: c018 sw a4,0(s0) + 3bc09538: d8eff0ef jal ra,3bc08ac6 + 3bc0953c: 0609a783 lw a5,96(s3) + 3bc09540: 2781 sext.w a5,a5 + 3bc09542: 9bf9 andi a5,a5,-2 + 3bc09544: c01c sw a5,0(s0) + 3bc09546: 06f9a023 sw a5,96(s3) + 3bc0954a: cd6ff0ef jal ra,3bc08a20 + 3bc0954e: 080107b7 lui a5,0x8010 + 3bc09552: 00040737 lui a4,0x40 + 3bc09556: c398 sw a4,0(a5) + 3bc09558: 4501 li a0,0 + 3bc0955a: 951ff0ef jal ra,3bc08eaa + 3bc0955e: 08004737 lui a4,0x8004 + 3bc09562: 5b1c lw a5,48(a4) + 3bc09564: 70e2 ld ra,56(sp) + 3bc09566: 69e2 ld s3,24(sp) + 3bc09568: 2781 sext.w a5,a5 + 3bc0956a: 0127c6b3 xor a3,a5,s2 + 3bc0956e: 0206f693 andi a3,a3,32 + 3bc09572: 8fb5 xor a5,a5,a3 + 3bc09574: 0127c6b3 xor a3,a5,s2 + 3bc09578: 8aa1 andi a3,a3,8 + 3bc0957a: 8fb5 xor a5,a5,a3 + 3bc0957c: 0127c933 xor s2,a5,s2 + 3bc09580: 00297913 andi s2,s2,2 + 3bc09584: 0127c7b3 xor a5,a5,s2 + 3bc09588: 9bf9 andi a5,a5,-2 + 3bc0958a: 8fc5 or a5,a5,s1 + 3bc0958c: c01c sw a5,0(s0) + 3bc0958e: db1c sw a5,48(a4) + 3bc09590: 50070693 addi a3,a4,1280 # 8004500 + 3bc09594: 4785 li a5,1 + 3bc09596: c2bc sw a5,64(a3) + 3bc09598: 7442 ld s0,48(sp) + 3bc0959a: 58070693 addi a3,a4,1408 + 3bc0959e: 74a2 ld s1,40(sp) + 3bc095a0: 7902 ld s2,32(sp) + 3bc095a2: 6a42 ld s4,16(sp) + 3bc095a4: 6aa2 ld s5,8(sp) + 3bc095a6: 6b02 ld s6,0(sp) + 3bc095a8: dabc sw a5,112(a3) + 3bc095aa: 68070713 addi a4,a4,1664 + 3bc095ae: d31c sw a5,32(a4) + 3bc095b0: 6121 addi sp,sp,64 + 3bc095b2: a97ff06f j 3bc09048 + +000000003bc095b6 : + 3bc095b6: 7179 addi sp,sp,-48 + 3bc095b8: e84a sd s2,16(sp) + 3bc095ba: e44e sd s3,8(sp) + 3bc095bc: e052 sd s4,0(sp) + 3bc095be: f406 sd ra,40(sp) + 3bc095c0: f022 sd s0,32(sp) + 3bc095c2: ec26 sd s1,24(sp) + 3bc095c4: 080047b7 lui a5,0x8004 + 3bc095c8: 5407a023 sw zero,1344(a5) # 8004540 + 3bc095cc: 5e07a823 sw zero,1520(a5) + 3bc095d0: 89aa mv s3,a0 + 3bc095d2: 8a2e mv s4,a1 + 3bc095d4: 6a07a023 sw zero,1696(a5) + 3bc095d8: 08004737 lui a4,0x8004 + 3bc095dc: 0000a917 auipc s2,0xa + 3bc095e0: 21490913 addi s2,s2,532 # 3bc137f0 + 3bc095e4: 3fc72783 lw a5,1020(a4) # 80043fc + 3bc095e8: 2781 sext.w a5,a5 + 3bc095ea: 00f92023 sw a5,0(s2) + 3bc095ee: fbfd bnez a5,3bc095e4 + 3bc095f0: 5b1c lw a5,48(a4) + 3bc095f2: 0007849b sext.w s1,a5 + 3bc095f6: 0017f413 andi s0,a5,1 + 3bc095fa: fd44f793 andi a5,s1,-44 + 3bc095fe: 00f92023 sw a5,0(s2) + 3bc09602: db1c sw a5,48(a4) + 3bc09604: 9fbff0ef jal ra,3bc08ffe + 3bc09608: 4505 li a0,1 + 3bc0960a: 8a1ff0ef jal ra,3bc08eaa + 3bc0960e: 080007b7 lui a5,0x8000 + 3bc09612: 0bc7a703 lw a4,188(a5) # 80000bc + 3bc09616: 2701 sext.w a4,a4 + 3bc09618: 000a1863 bnez s4,3bc09628 + 3bc0961c: 77fd lui a5,0xfffff + 3bc0961e: 17fd addi a5,a5,-1 + 3bc09620: 8f7d and a4,a4,a5 + 3bc09622: 6789 lui a5,0x2 + 3bc09624: 8f5d or a4,a4,a5 + 3bc09626: a821 j 3bc0963e + 3bc09628: 4785 li a5,1 + 3bc0962a: 00fa1763 bne s4,a5,3bc09638 + 3bc0962e: 77f9 lui a5,0xffffe + 3bc09630: 17fd addi a5,a5,-1 + 3bc09632: 8f7d and a4,a4,a5 + 3bc09634: 6785 lui a5,0x1 + 3bc09636: b7fd j 3bc09624 + 3bc09638: 4789 li a5,2 + 3bc0963a: 0efa0963 beq s4,a5,3bc0972c + 3bc0963e: 00e92023 sw a4,0(s2) + 3bc09642: 00092703 lw a4,0(s2) + 3bc09646: 080007b7 lui a5,0x8000 + 3bc0964a: 0ae7ae23 sw a4,188(a5) # 80000bc + 3bc0964e: 0e0a1163 bnez s4,3bc09730 + 3bc09652: 08004737 lui a4,0x8004 + 3bc09656: 475c lw a5,12(a4) + 3bc09658: 2781 sext.w a5,a5 + 3bc0965a: 0807e793 ori a5,a5,128 + 3bc0965e: 00f92023 sw a5,0(s2) + 3bc09662: c75c sw a5,12(a4) + 3bc09664: af2ff0ef jal ra,3bc08956 + 3bc09668: 080007b7 lui a5,0x8000 + 3bc0966c: 18c7a783 lw a5,396(a5) # 800018c + 3bc09670: 2781 sext.w a5,a5 + 3bc09672: 4017e693 ori a3,a5,1025 + 3bc09676: 000a1663 bnez s4,3bc09682 + 3bc0967a: bff7f793 andi a5,a5,-1025 + 3bc0967e: 0017e693 ori a3,a5,1 + 3bc09682: 4785 li a5,1 + 3bc09684: 00f98763 beq s3,a5,3bc09692 + 3bc09688: 39bd addiw s3,s3,-17 + 3bc0968a: fef6f713 andi a4,a3,-17 + 3bc0968e: 0137e463 bltu a5,s3,3bc09696 + 3bc09692: 0106e713 ori a4,a3,16 + 3bc09696: 00e92023 sw a4,0(s2) + 3bc0969a: 080007b7 lui a5,0x8000 + 3bc0969e: 18e7a623 sw a4,396(a5) # 800018c + 3bc096a2: 08003737 lui a4,0x8003 + 3bc096a6: 44472783 lw a5,1092(a4) # 8003444 + 3bc096aa: 2781 sext.w a5,a5 + 3bc096ac: 00f92023 sw a5,0(s2) + 3bc096b0: 8ba1 andi a5,a5,8 + 3bc096b2: dbf5 beqz a5,3bc096a6 + 3bc096b4: 080049b7 lui s3,0x8004 + 3bc096b8: 00c9a783 lw a5,12(s3) # 800400c + 3bc096bc: 00040737 lui a4,0x40 + 3bc096c0: 4501 li a0,0 + 3bc096c2: 2781 sext.w a5,a5 + 3bc096c4: f7f7f793 andi a5,a5,-129 + 3bc096c8: 00f92023 sw a5,0(s2) + 3bc096cc: 00f9a623 sw a5,12(s3) + 3bc096d0: 080107b7 lui a5,0x8010 + 3bc096d4: c398 sw a4,0(a5) + 3bc096d6: fd4ff0ef jal ra,3bc08eaa + 3bc096da: 0309a783 lw a5,48(s3) + 3bc096de: 70a2 ld ra,40(sp) + 3bc096e0: 6a02 ld s4,0(sp) + 3bc096e2: 2781 sext.w a5,a5 + 3bc096e4: 0097c733 xor a4,a5,s1 + 3bc096e8: 02077713 andi a4,a4,32 + 3bc096ec: 8fb9 xor a5,a5,a4 + 3bc096ee: 0097c733 xor a4,a5,s1 + 3bc096f2: 8b21 andi a4,a4,8 + 3bc096f4: 8fb9 xor a5,a5,a4 + 3bc096f6: 8cbd xor s1,s1,a5 + 3bc096f8: 8889 andi s1,s1,2 + 3bc096fa: 8fa5 xor a5,a5,s1 + 3bc096fc: 9bf9 andi a5,a5,-2 + 3bc096fe: 8fc1 or a5,a5,s0 + 3bc09700: 00f92023 sw a5,0(s2) + 3bc09704: 02f9a823 sw a5,48(s3) + 3bc09708: 50098713 addi a4,s3,1280 + 3bc0970c: 4785 li a5,1 + 3bc0970e: c33c sw a5,64(a4) + 3bc09710: 58098713 addi a4,s3,1408 + 3bc09714: 7402 ld s0,32(sp) + 3bc09716: db3c sw a5,112(a4) + 3bc09718: 68098993 addi s3,s3,1664 + 3bc0971c: 64e2 ld s1,24(sp) + 3bc0971e: 6942 ld s2,16(sp) + 3bc09720: 02f9a023 sw a5,32(s3) + 3bc09724: 69a2 ld s3,8(sp) + 3bc09726: 6145 addi sp,sp,48 + 3bc09728: 921ff06f j 3bc09048 + 3bc0972c: 678d lui a5,0x3 + 3bc0972e: bddd j 3bc09624 + 3bc09730: 854e mv a0,s3 + 3bc09732: 974ff0ef jal ra,3bc088a6 + 3bc09736: bf0d j 3bc09668 + +000000003bc09738 : + 3bc09738: 8082 ret + +000000003bc0973a : + 3bc0973a: 1101 addi sp,sp,-32 + 3bc0973c: 000e0737 lui a4,0xe0 + 3bc09740: e802 sd zero,16(sp) + 3bc09742: ec02 sd zero,24(sp) + 3bc09744: c602 sw zero,12(sp) + 3bc09746: 080107b7 lui a5,0x8010 + 3bc0974a: 0719 addi a4,a4,6 + 3bc0974c: c398 sw a4,0(a5) + 3bc0974e: 0007a823 sw zero,16(a5) # 8010010 + 3bc09752: 577d li a4,-1 + 3bc09754: cbd8 sw a4,20(a5) + 3bc09756: 4711 li a4,4 + 3bc09758: cf98 sw a4,24(a5) + 3bc0975a: 40004737 lui a4,0x40004 + 3bc0975e: a0070713 addi a4,a4,-1536 # 40003a00 <__BL2_END__+0x43f01f0> + 3bc09762: c3b8 sw a4,64(a5) + 3bc09764: 4732 lw a4,12(sp) + 3bc09766: 0000a617 auipc a2,0xa + 3bc0976a: 08a60613 addi a2,a2,138 # 3bc137f0 + 3bc0976e: c3f8 sw a4,68(a5) + 3bc09770: 4742 lw a4,16(sp) + 3bc09772: c7b8 sw a4,72(a5) + 3bc09774: 4752 lw a4,20(sp) + 3bc09776: c7f8 sw a4,76(a5) + 3bc09778: 4762 lw a4,24(sp) + 3bc0977a: cbb8 sw a4,80(a5) + 3bc0977c: 4772 lw a4,28(sp) + 3bc0977e: cbf8 sw a4,84(a5) + 3bc09780: 6741 lui a4,0x10 + 3bc09782: 0705 addi a4,a4,1 + 3bc09784: c398 sw a4,0(a5) + 3bc09786: 08010737 lui a4,0x8010 + 3bc0978a: 08072783 lw a5,128(a4) # 8010080 + 3bc0978e: 2781 sext.w a5,a5 + 3bc09790: c21c sw a5,0(a2) + 3bc09792: 8b91 andi a5,a5,4 + 3bc09794: dbfd beqz a5,3bc0978a + 3bc09796: 68c1 lui a7,0x10 + 3bc09798: 67c1 lui a5,0x10 + 3bc0979a: 40004837 lui a6,0x40004 + 3bc0979e: 00188e13 addi t3,a7,1 # 10001 <__BSS_SIZE__+0xa3f1> + 3bc097a2: 80004337 lui t1,0x80004 + 3bc097a6: c31c sw a5,0(a4) + 3bc097a8: 45d5 li a1,21 + 3bc097aa: 4f05 li t5,1 + 3bc097ac: 080107b7 lui a5,0x8010 + 3bc097b0: b0080813 addi a6,a6,-1280 # 40003b00 <__BL2_END__+0x43f02f0> + 3bc097b4: 8ff2 mv t6,t3 + 3bc097b6: a0030313 addi t1,t1,-1536 # ffffffff80003a00 <__BL2_END__+0xffffffff443f01f0> + 3bc097ba: 02000e93 li t4,32 + 3bc097be: 00bf16bb sllw a3,t5,a1 + 3bc097c2: cb94 sw a3,16(a5) + 3bc097c4: 0507a023 sw a6,64(a5) # 8010040 + 3bc097c8: 46b2 lw a3,12(sp) + 3bc097ca: ff05871b addiw a4,a1,-16 + 3bc097ce: 0ff77713 andi a4,a4,255 + 3bc097d2: c3f4 sw a3,68(a5) + 3bc097d4: 46c2 lw a3,16(sp) + 3bc097d6: c7b4 sw a3,72(a5) + 3bc097d8: 46d2 lw a3,20(sp) + 3bc097da: c7f4 sw a3,76(a5) + 3bc097dc: 46e2 lw a3,24(sp) + 3bc097de: cbb4 sw a3,80(a5) + 3bc097e0: 46f2 lw a3,28(sp) + 3bc097e2: cbf4 sw a3,84(a5) + 3bc097e4: 01f7a023 sw t6,0(a5) + 3bc097e8: 0807a683 lw a3,128(a5) + 3bc097ec: 2681 sext.w a3,a3 + 3bc097ee: c214 sw a3,0(a2) + 3bc097f0: 8a91 andi a3,a3,4 + 3bc097f2: dafd beqz a3,3bc097e8 + 3bc097f4: 0117a023 sw a7,0(a5) + 3bc097f8: 0007a823 sw zero,16(a5) + 3bc097fc: 0467a023 sw t1,64(a5) + 3bc09800: 46b2 lw a3,12(sp) + 3bc09802: c3f4 sw a3,68(a5) + 3bc09804: 46c2 lw a3,16(sp) + 3bc09806: c7b4 sw a3,72(a5) + 3bc09808: 46d2 lw a3,20(sp) + 3bc0980a: c7f4 sw a3,76(a5) + 3bc0980c: 46e2 lw a3,24(sp) + 3bc0980e: cbb4 sw a3,80(a5) + 3bc09810: 46f2 lw a3,28(sp) + 3bc09812: cbf4 sw a3,84(a5) + 3bc09814: 01c7a023 sw t3,0(a5) + 3bc09818: 0807a683 lw a3,128(a5) + 3bc0981c: 2681 sext.w a3,a3 + 3bc0981e: c214 sw a3,0(a2) + 3bc09820: 8a91 andi a3,a3,4 + 3bc09822: dafd beqz a3,3bc09818 + 3bc09824: 0117a023 sw a7,0(a5) + 3bc09828: 4214 lw a3,0(a2) + 3bc0982a: 8aa1 andi a3,a3,8 + 3bc0982c: e689 bnez a3,3bc09836 + 3bc0982e: 2585 addiw a1,a1,1 + 3bc09830: f9d597e3 bne a1,t4,3bc097be + 3bc09834: 473d li a4,15 + 3bc09836: 00e50023 sb a4,0(a0) # 1f000000 + 3bc0983a: 2701 sext.w a4,a4 + 3bc0983c: c218 sw a4,0(a2) + 3bc0983e: 080007b7 lui a5,0x8000 + 3bc09842: 20e7a423 sw a4,520(a5) # 8000208 + 3bc09846: 080107b7 lui a5,0x8010 + 3bc0984a: 00040737 lui a4,0x40 + 3bc0984e: c398 sw a4,0(a5) + 3bc09850: 6105 addi sp,sp,32 + 3bc09852: 8082 ret + +000000003bc09854 : + 3bc09854: 2f000793 li a5,752 + 3bc09858: 0000a717 auipc a4,0xa + 3bc0985c: faf72023 sw a5,-96(a4) # 3bc137f8 + 3bc09860: 06400793 li a5,100 + 3bc09864: 0000a717 auipc a4,0xa + 3bc09868: f8f72c23 sw a5,-104(a4) # 3bc137fc + 3bc0986c: 00002717 auipc a4,0x2 + 3bc09870: 1a072703 lw a4,416(a4) # 3bc0ba0c + 3bc09874: 0047569b srliw a3,a4,0x4 + 3bc09878: 463d li a2,15 + 3bc0987a: 0000a797 auipc a5,0xa + 3bc0987e: f8d7a323 sw a3,-122(a5) # 3bc13800 + 3bc09882: 0000a797 auipc a5,0xa + 3bc09886: f6c7a923 sw a2,-142(a5) # 3bc137f4 + 3bc0988a: 02f00713 li a4,47 + 3bc0988e: 077a slli a4,a4,0x1e + 3bc09890: 7c06b78b extu a5,a3,31,0 + 3bc09894: 02f757b3 divu a5,a4,a5 + 3bc09898: 0000a717 auipc a4,0xa + 3bc0989c: f2f73823 sd a5,-208(a4) # 3bc137c8 + 3bc098a0: 0fa00713 li a4,250 + 3bc098a4: 02d7073b mulw a4,a4,a3 + 3bc098a8: 06400693 li a3,100 + 3bc098ac: 02d7573b divuw a4,a4,a3 + 3bc098b0: 7c07370b extu a4,a4,31,0 + 3bc098b4: 0000a697 auipc a3,0xa + 3bc098b8: f0e6be23 sd a4,-228(a3) # 3bc137d0 + 3bc098bc: 3e800693 li a3,1000 + 3bc098c0: 02d70733 mul a4,a4,a3 + 3bc098c4: 02c787b3 mul a5,a5,a2 + 3bc098c8: 02e7d7b3 divu a5,a5,a4 + 3bc098cc: 0000a717 auipc a4,0xa + 3bc098d0: f0f73623 sd a5,-244(a4) # 3bc137d8 + 3bc098d4: e84ff06f j 3bc08f58 + +000000003bc098d8 : + 3bc098d8: 1141 addi sp,sp,-16 + 3bc098da: e406 sd ra,8(sp) + 3bc098dc: b29fe0ef jal ra,3bc08404 + 3bc098e0: 357d addiw a0,a0,-1 + 3bc098e2: 0ff57513 andi a0,a0,255 + 3bc098e6: 47a5 li a5,9 + 3bc098e8: 12a7ef63 bltu a5,a0,3bc09a26 + 3bc098ec: 00002717 auipc a4,0x2 + 3bc098f0: e2470713 addi a4,a4,-476 # 3bc0b710 + 3bc098f4: 44a7478b lrw a5,a4,a0,2 + 3bc098f8: 97ba add a5,a5,a4 + 3bc098fa: 8782 jr a5 + 3bc098fc: 12141737 lui a4,0x12141 + 3bc09900: 080007b7 lui a5,0x8000 + 3bc09904: 074d addi a4,a4,19 + 3bc09906: c398 sw a4,0(a5) + 3bc09908: 0c041737 lui a4,0xc041 + 3bc0990c: 50370713 addi a4,a4,1283 # c041503 + 3bc09910: c3d8 sw a4,4(a5) + 3bc09912: 06050737 lui a4,0x6050 + 3bc09916: 0705 addi a4,a4,1 + 3bc09918: c798 sw a4,8(a5) + 3bc0991a: 08071737 lui a4,0x8071 + 3bc0991e: b0270713 addi a4,a4,-1278 # 8070b02 + 3bc09922: c7d8 sw a4,12(a5) + 3bc09924: 0a0f1737 lui a4,0xa0f1 + 3bc09928: e0970713 addi a4,a4,-503 # a0f0e09 + 3bc0992c: cb98 sw a4,16(a5) + 3bc0992e: 00161737 lui a4,0x161 + 3bc09932: 10d70713 addi a4,a4,269 # 16110d <__BSS_SIZE__+0x15b4fd> + 3bc09936: cbd8 sw a4,20(a5) + 3bc09938: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0993c: 10000713 li a4,256 + 3bc09940: cfd8 sw a4,28(a5) + 3bc09942: 02136737 lui a4,0x2136 + 3bc09946: 57470713 addi a4,a4,1396 # 2136574 <__BSS_SIZE__+0x2130964> + 3bc0994a: d398 sw a4,32(a5) + 3bc0994c: 4721 li a4,8 + 3bc0994e: d3d8 sw a4,36(a5) + 3bc09950: 76512737 lui a4,0x76512 + 3bc09954: 30870713 addi a4,a4,776 # 76512308 <__BL2_END__+0x3a8feaf8> + 3bc09958: d798 sw a4,40(a5) + 3bc0995a: 4711 li a4,4 + 3bc0995c: d7d8 sw a4,44(a5) + 3bc0995e: a0e1 j 3bc09a26 + 3bc09960: 08071737 lui a4,0x8071 + 3bc09964: 080007b7 lui a5,0x8000 + 3bc09968: d0970713 addi a4,a4,-759 # 8070d09 + 3bc0996c: c398 sw a4,0(a5) + 3bc0996e: 06050737 lui a4,0x6050 + 3bc09972: 20b70713 addi a4,a4,523 # 605020b + 3bc09976: c3d8 sw a4,4(a5) + 3bc09978: 14040737 lui a4,0x14040 + 3bc0997c: 10070713 addi a4,a4,256 # 14040100 + 3bc09980: c798 sw a4,8(a5) + 3bc09982: 15031737 lui a4,0x15031 + 3bc09986: e0c70713 addi a4,a4,-500 # 15030e0c + 3bc0998a: c7d8 sw a4,12(a5) + 3bc0998c: 0a0f1737 lui a4,0xa0f1 + 3bc09990: 21370713 addi a4,a4,531 # a0f1213 + 3bc09994: cb98 sw a4,16(a5) + 3bc09996: 00111737 lui a4,0x111 + 3bc0999a: 0759 addi a4,a4,22 + 3bc0999c: cbd8 sw a4,20(a5) + 3bc0999e: 0007ac23 sw zero,24(a5) # 8000018 + 3bc099a2: 10000713 li a4,256 + 3bc099a6: cfd8 sw a4,28(a5) + 3bc099a8: 82135737 lui a4,0x82135 + 3bc099ac: 76470713 addi a4,a4,1892 # ffffffff82135764 <__BL2_END__+0xffffffff46521f54> + 3bc099b0: d398 sw a4,32(a5) + 3bc099b2: 67513737 lui a4,0x67513 + 3bc099b6: 0207a223 sw zero,36(a5) + 3bc099ba: 02870713 addi a4,a4,40 # 67513028 <__BL2_END__+0x2b8ff818> + 3bc099be: bf69 j 3bc09958 + 3bc099c0: 08071737 lui a4,0x8071 + 3bc099c4: 080007b7 lui a5,0x8000 + 3bc099c8: b0970713 addi a4,a4,-1271 # 8070b09 + 3bc099cc: c398 sw a4,0(a5) + 3bc099ce: 05000737 lui a4,0x5000 + 3bc099d2: 20670713 addi a4,a4,518 # 5000206 + 3bc099d6: c3d8 sw a4,4(a5) + 3bc099d8: 0c040737 lui a4,0xc040 + 3bc099dc: 10d70713 addi a4,a4,269 # c04010d + 3bc099e0: c798 sw a4,8(a5) + 3bc099e2: 15031737 lui a4,0x15031 + 3bc099e6: a1470713 addi a4,a4,-1516 # 15030a14 + 3bc099ea: c7d8 sw a4,12(a5) + 3bc099ec: 10111737 lui a4,0x10111 + 3bc099f0: 21370713 addi a4,a4,531 # 10111213 + 3bc099f4: cb98 sw a4,16(a5) + 3bc099f6: 000f1737 lui a4,0xf1 + 3bc099fa: 60e70713 addi a4,a4,1550 # f160e <__BSS_SIZE__+0xeb9fe> + 3bc099fe: cbd8 sw a4,20(a5) + 3bc09a00: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09a04: 10000713 li a4,256 + 3bc09a08: cfd8 sw a4,28(a5) + 3bc09a0a: 31756737 lui a4,0x31756 + 3bc09a0e: 02470713 addi a4,a4,36 # 31756024 + 3bc09a12: d398 sw a4,32(a5) + 3bc09a14: 4721 li a4,8 + 3bc09a16: d3d8 sw a4,36(a5) + 3bc09a18: 26473737 lui a4,0x26473 + 3bc09a1c: 51870713 addi a4,a4,1304 # 26473518 + 3bc09a20: d798 sw a4,40(a5) + 3bc09a22: 0207a623 sw zero,44(a5) + 3bc09a26: 60a2 ld ra,8(sp) + 3bc09a28: 0141 addi sp,sp,16 + 3bc09a2a: 8082 ret + 3bc09a2c: 0c061737 lui a4,0xc061 + 3bc09a30: 080007b7 lui a5,0x8000 + 3bc09a34: 80b70713 addi a4,a4,-2037 # c06080b + 3bc09a38: c398 sw a4,0(a5) + 3bc09a3a: 070d1737 lui a4,0x70d1 + 3bc09a3e: 90470713 addi a4,a4,-1788 # 70d0904 + 3bc09a42: c3d8 sw a4,4(a5) + 3bc09a44: 6741 lui a4,0x10 + 3bc09a46: 50270713 addi a4,a4,1282 # 10502 <__BSS_SIZE__+0xa8f2> + 3bc09a4a: c798 sw a4,8(a5) + 3bc09a4c: 110a1737 lui a4,0x110a1 + 3bc09a50: e0370713 addi a4,a4,-509 # 110a0e03 + 3bc09a54: c7d8 sw a4,12(a5) + 3bc09a56: 0f141737 lui a4,0xf141 + 3bc09a5a: 61070713 addi a4,a4,1552 # f141610 + 3bc09a5e: cb98 sw a4,16(a5) + 3bc09a60: 00151737 lui a4,0x151 + 3bc09a64: 31270713 addi a4,a4,786 # 151312 <__BSS_SIZE__+0x14b702> + 3bc09a68: cbd8 sw a4,20(a5) + 3bc09a6a: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09a6e: 10000713 li a4,256 + 3bc09a72: cfd8 sw a4,28(a5) + 3bc09a74: 71840737 lui a4,0x71840 + 3bc09a78: 53270713 addi a4,a4,1330 # 71840532 <__BL2_END__+0x35c2cd22> + 3bc09a7c: d398 sw a4,32(a5) + 3bc09a7e: 4719 li a4,6 + 3bc09a80: d3d8 sw a4,36(a5) + 3bc09a82: 76103737 lui a4,0x76103 + 3bc09a86: 42570713 addi a4,a4,1061 # 76103425 <__BL2_END__+0x3a4efc15> + 3bc09a8a: d798 sw a4,40(a5) + 3bc09a8c: 4721 li a4,8 + 3bc09a8e: b5f9 j 3bc0995c + 3bc09a90: 080b1737 lui a4,0x80b1 + 3bc09a94: 080007b7 lui a5,0x8000 + 3bc09a98: d0670713 addi a4,a4,-762 # 80b0d06 + 3bc09a9c: c398 sw a4,0(a5) + 3bc09a9e: 09010737 lui a4,0x9010 + 3bc09aa2: 40770713 addi a4,a4,1031 # 9010407 + 3bc09aa6: c3d8 sw a4,4(a5) + 3bc09aa8: 14050737 lui a4,0x14050 + 3bc09aac: 20c70713 addi a4,a4,524 # 1405020c + 3bc09ab0: c798 sw a4,8(a5) + 3bc09ab2: 15001737 lui a4,0x15001 + 3bc09ab6: e0370713 addi a4,a4,-509 # 15000e03 + 3bc09aba: c7d8 sw a4,12(a5) + 3bc09abc: 0a0f1737 lui a4,0xa0f1 + 3bc09ac0: 21370713 addi a4,a4,531 # a0f1213 + 3bc09ac4: cb98 sw a4,16(a5) + 3bc09ac6: 00111737 lui a4,0x111 + 3bc09aca: 0759 addi a4,a4,22 + 3bc09acc: cbd8 sw a4,20(a5) + 3bc09ace: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09ad2: 10000713 li a4,256 + 3bc09ad6: cfd8 sw a4,28(a5) + 3bc09ad8: 82135737 lui a4,0x82135 + 3bc09adc: 76470713 addi a4,a4,1892 # ffffffff82135764 <__BL2_END__+0xffffffff46521f54> + 3bc09ae0: d398 sw a4,32(a5) + 3bc09ae2: 67513737 lui a4,0x67513 + 3bc09ae6: 0207a223 sw zero,36(a5) + 3bc09aea: 20870713 addi a4,a4,520 # 67513208 <__BL2_END__+0x2b8ff9f8> + 3bc09aee: b5ad j 3bc09958 + 3bc09af0: 0b061737 lui a4,0xb061 + 3bc09af4: 080007b7 lui a5,0x8000 + 3bc09af8: 90870713 addi a4,a4,-1784 # b060908 + 3bc09afc: c398 sw a4,0(a5) + 3bc09afe: 02000737 lui a4,0x2000 + 3bc09b02: 10770713 addi a4,a4,263 # 2000107 <__BSS_SIZE__+0x1ffa4f7> + 3bc09b06: c3d8 sw a4,4(a5) + 3bc09b08: 0c050737 lui a4,0xc050 + 3bc09b0c: 40d70713 addi a4,a4,1037 # c05040d + 3bc09b10: c798 sw a4,8(a5) + 3bc09b12: 13141737 lui a4,0x13141 + 3bc09b16: 50370713 addi a4,a4,1283 # 13141503 + 3bc09b1a: c7d8 sw a4,12(a5) + 3bc09b1c: 160a1737 lui a4,0x160a1 + 3bc09b20: 11270713 addi a4,a4,274 # 160a1112 + 3bc09b24: cb98 sw a4,16(a5) + 3bc09b26: 000f1737 lui a4,0xf1 + 3bc09b2a: 0739 addi a4,a4,14 + 3bc09b2c: cbd8 sw a4,20(a5) + 3bc09b2e: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09b32: 10000713 li a4,256 + 3bc09b36: cfd8 sw a4,28(a5) + 3bc09b38: 28137737 lui a4,0x28137 + 3bc09b3c: 56470713 addi a4,a4,1380 # 28137564 + 3bc09b40: d398 sw a4,32(a5) + 3bc09b42: 76158737 lui a4,0x76158 + 3bc09b46: 0207a223 sw zero,36(a5) + 3bc09b4a: 32070713 addi a4,a4,800 # 76158320 <__BL2_END__+0x3a544b10> + 3bc09b4e: b529 j 3bc09958 + 3bc09b50: 08061737 lui a4,0x8061 + 3bc09b54: 080007b7 lui a5,0x8000 + 3bc09b58: b0970713 addi a4,a4,-1271 # 8060b09 + 3bc09b5c: c398 sw a4,0(a5) + 3bc09b5e: 02040737 lui a4,0x2040 + 3bc09b62: 70170713 addi a4,a4,1793 # 2040701 <__BSS_SIZE__+0x203aaf1> + 3bc09b66: c3d8 sw a4,4(a5) + 3bc09b68: 0c000737 lui a4,0xc000 + 3bc09b6c: 50d70713 addi a4,a4,1293 # c00050d + 3bc09b70: c798 sw a4,8(a5) + 3bc09b72: 13150737 lui a4,0x13150 + 3bc09b76: 31470713 addi a4,a4,788 # 13150314 + 3bc09b7a: c7d8 sw a4,12(a5) + 3bc09b7c: 10111737 lui a4,0x10111 + 3bc09b80: 21670713 addi a4,a4,534 # 10111216 + 3bc09b84: cb98 sw a4,16(a5) + 3bc09b86: 000f1737 lui a4,0xf1 + 3bc09b8a: a0e70713 addi a4,a4,-1522 # f0a0e <__BSS_SIZE__+0xeadfe> + 3bc09b8e: cbd8 sw a4,20(a5) + 3bc09b90: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09b94: 10000713 li a4,256 + 3bc09b98: cfd8 sw a4,28(a5) + 3bc09b9a: 82135737 lui a4,0x82135 + 3bc09b9e: 67470713 addi a4,a4,1652 # ffffffff82135674 <__BL2_END__+0xffffffff46521e64> + 3bc09ba2: d398 sw a4,32(a5) + 3bc09ba4: 76153737 lui a4,0x76153 + 3bc09ba8: 0207a223 sw zero,36(a5) + 3bc09bac: 28070713 addi a4,a4,640 # 76153280 <__BL2_END__+0x3a53fa70> + 3bc09bb0: b365 j 3bc09958 + 3bc09bb2: 070b1737 lui a4,0x70b1 + 3bc09bb6: 080007b7 lui a5,0x8000 + 3bc09bba: 90c70713 addi a4,a4,-1780 # 70b090c + 3bc09bbe: c398 sw a4,0(a5) + 3bc09bc0: 04050737 lui a4,0x4050 + 3bc09bc4: 60870713 addi a4,a4,1544 # 4050608 <__BSS_SIZE__+0x404a9f8> + 3bc09bc8: c3d8 sw a4,4(a5) + 3bc09bca: 0e020737 lui a4,0xe020 + 3bc09bce: 30d70713 addi a4,a4,781 # e02030d + 3bc09bd2: c798 sw a4,8(a5) + 3bc09bd4: 110a0737 lui a4,0x110a0 + 3bc09bd8: 10070713 addi a4,a4,256 # 110a0100 + 3bc09bdc: c7d8 sw a4,12(a5) + 3bc09bde: 0f131737 lui a4,0xf131 + 3bc09be2: 61470713 addi a4,a4,1556 # f131614 + 3bc09be6: cb98 sw a4,16(a5) + 3bc09be8: 00151737 lui a4,0x151 + 3bc09bec: 0749 addi a4,a4,18 + 3bc09bee: cbd8 sw a4,20(a5) + 3bc09bf0: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09bf4: 10000713 li a4,256 + 3bc09bf8: cfd8 sw a4,28(a5) + 3bc09bfa: 86014737 lui a4,0x86014 + 3bc09bfe: 53270713 addi a4,a4,1330 # ffffffff86014532 <__BL2_END__+0xffffffff4a400d22> + 3bc09c02: d398 sw a4,32(a5) + 3bc09c04: 471d li a4,7 + 3bc09c06: d3d8 sw a4,36(a5) + 3bc09c08: 76012737 lui a4,0x76012 + 3bc09c0c: 34570713 addi a4,a4,837 # 76012345 <__BL2_END__+0x3a3feb35> + 3bc09c10: bdad j 3bc09a8a + +000000003bc09c12 : + 3bc09c12: 8082 ret + +000000003bc09c14 : + 3bc09c14: 63746737 lui a4,0x63746 + 3bc09c18: 080047b7 lui a5,0x8004 + 3bc09c1c: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32b61> + 3bc09c20: c7d8 sw a4,12(a5) + 3bc09c22: 14000737 lui a4,0x14000 + 3bc09c26: c3f8 sw a4,68(a5) + 3bc09c28: 470d li a4,3 + 3bc09c2a: d7f8 sw a4,108(a5) + 3bc09c2c: 999f06b7 lui a3,0x999f0 + 3bc09c30: 10078713 addi a4,a5,256 # 8004100 + 3bc09c34: c734 sw a3,72(a4) + 3bc09c36: 810416b7 lui a3,0x81041 + 3bc09c3a: 40168693 addi a3,a3,1025 # ffffffff81041401 <__BL2_END__+0xffffffff4542dbf1> + 3bc09c3e: c394 sw a3,0(a5) + 3bc09c40: 009306b7 lui a3,0x930 + 3bc09c44: 0207a823 sw zero,48(a5) + 3bc09c48: 0685 addi a3,a3,1 + 3bc09c4a: dbd4 sw a3,52(a5) + 3bc09c4c: 000206b7 lui a3,0x20 + 3bc09c50: df94 sw a3,56(a5) + 3bc09c52: 002016b7 lui a3,0x201 + 3bc09c56: 07068693 addi a3,a3,112 # 201070 <__BSS_SIZE__+0x1fb460> + 3bc09c5a: cbb4 sw a3,80(a5) + 3bc09c5c: 007106b7 lui a3,0x710 + 3bc09c60: 0607a023 sw zero,96(a5) + 3bc09c64: 0a468693 addi a3,a3,164 # 7100a4 <__BSS_SIZE__+0x70a494> + 3bc09c68: d3f4 sw a3,100(a5) + 3bc09c6a: 0c07a023 sw zero,192(a5) + 3bc09c6e: 6641 lui a2,0x10 + 3bc09c70: 0c07a223 sw zero,196(a5) + 3bc09c74: 08078693 addi a3,a5,128 + 3bc09c78: 0e560613 addi a2,a2,229 # 100e5 <__BSS_SIZE__+0xa4d5> + 3bc09c7c: cab0 sw a2,80(a3) + 3bc09c7e: 006a0637 lui a2,0x6a0 + 3bc09c82: caf0 sw a2,84(a3) + 3bc09c84: 1f140637 lui a2,0x1f140 + 3bc09c88: 04060613 addi a2,a2,64 # 1f140040 + 3bc09c8c: cef0 sw a2,92(a3) + 3bc09c8e: 00600637 lui a2,0x600 + 3bc09c92: d2b0 sw a2,96(a3) + 3bc09c94: 000b0637 lui a2,0xb0 + 3bc09c98: 3bf60613 addi a2,a2,959 # b03bf <__BSS_SIZE__+0xaa7af> + 3bc09c9c: d2f0 sw a2,100(a3) + 3bc09c9e: 0e1126b7 lui a3,0xe112 + 3bc09ca2: f1068693 addi a3,a3,-240 # e111f10 + 3bc09ca6: c314 sw a3,0(a4) + 3bc09ca8: 000306b7 lui a3,0x30 + 3bc09cac: 41768693 addi a3,a3,1047 # 30417 <__BSS_SIZE__+0x2a807> + 3bc09cb0: c354 sw a3,4(a4) + 3bc09cb2: 050706b7 lui a3,0x5070 + 3bc09cb6: 60a68693 addi a3,a3,1546 # 507060a + 3bc09cba: 6589 lui a1,0x2 + 3bc09cbc: c714 sw a3,8(a4) + 3bc09cbe: 00758693 addi a3,a1,7 # 2007 <__BSS_SIZE__-0x3c09> + 3bc09cc2: c754 sw a3,12(a4) + 3bc09cc4: 070206b7 lui a3,0x7020 + 3bc09cc8: 30768693 addi a3,a3,775 # 7020307 + 3bc09ccc: cb14 sw a3,16(a4) + 3bc09cce: 050506b7 lui a3,0x5050 + 3bc09cd2: 30368693 addi a3,a3,771 # 5050303 + 3bc09cd6: 6605 lui a2,0x1 + 3bc09cd8: cb54 sw a3,20(a4) + 3bc09cda: 90760693 addi a3,a2,-1785 # 907 <__BSS_SIZE__-0x5309> + 3bc09cde: d314 sw a3,32(a4) + 3bc09ce0: c09606b7 lui a3,0xc0960 + 3bc09ce4: 18078713 addi a4,a5,384 + 3bc09ce8: 1207ae23 sw zero,316(a5) + 3bc09cec: 02668693 addi a3,a3,38 # ffffffffc0960026 <__BL2_END__+0xffffffff84d4c816> + 3bc09cf0: c314 sw a3,0(a4) + 3bc09cf2: 048a8537 lui a0,0x48a8 + 3bc09cf6: 4685 li a3,1 + 3bc09cf8: c354 sw a3,4(a4) + 3bc09cfa: 30550513 addi a0,a0,773 # 48a8305 + 3bc09cfe: cb08 sw a0,16(a4) + 3bc09d00: 00070537 lui a0,0x70 + 3bc09d04: 20250813 addi a6,a0,514 # 70202 <__BSS_SIZE__+0x6a5f2> + 3bc09d08: 01072a23 sw a6,20(a4) # 14000014 + 3bc09d0c: 07c13837 lui a6,0x7c13 + 3bc09d10: 12180813 addi a6,a6,289 # 7c13121 + 3bc09d14: 01072c23 sw a6,24(a4) + 3bc09d18: 02100813 li a6,33 + 3bc09d1c: 01072e23 sw a6,28(a4) + 3bc09d20: c0400837 lui a6,0xc0400 + 3bc09d24: 0861 addi a6,a6,24 + 3bc09d26: 03072023 sw a6,32(a4) + 3bc09d2a: 00fe0837 lui a6,0xfe0 + 3bc09d2e: 0ff80813 addi a6,a6,255 # fe00ff <__BSS_SIZE__+0xfda4ef> + 3bc09d32: 03072223 sw a6,36(a4) + 3bc09d36: 80000837 lui a6,0x80000 + 3bc09d3a: 03072423 sw a6,40(a4) + 3bc09d3e: 2c100813 li a6,705 + 3bc09d42: 03072823 sw a6,48(a4) + 3bc09d46: c334 sw a3,64(a4) + 3bc09d48: c374 sw a3,68(a4) + 3bc09d4a: f1f58593 addi a1,a1,-225 + 3bc09d4e: 20078713 addi a4,a5,512 + 3bc09d52: c30c sw a1,0(a4) + 3bc09d54: 70750513 addi a0,a0,1799 + 3bc09d58: c348 sw a0,4(a4) + 3bc09d5a: 2007a423 sw zero,520(a5) + 3bc09d5e: 1f000537 lui a0,0x1f000 + 3bc09d62: c748 sw a0,12(a4) + 3bc09d64: cb0c sw a1,16(a4) + 3bc09d66: 060f05b7 lui a1,0x60f0 + 3bc09d6a: 60658593 addi a1,a1,1542 # 60f0606 + 3bc09d6e: cb4c sw a1,20(a4) + 3bc09d70: 060605b7 lui a1,0x6060 + 3bc09d74: 60658593 addi a1,a1,1542 # 6060606 + 3bc09d78: cf0c sw a1,24(a4) + 3bc09d7a: 60600513 li a0,1542 + 3bc09d7e: cf48 sw a0,28(a4) + 3bc09d80: 6511 lui a0,0x4 + 3bc09d82: f3f50813 addi a6,a0,-193 # 3f3f <__BSS_SIZE__-0x1cd1> + 3bc09d86: 03072023 sw a6,32(a4) + 3bc09d8a: d34c sw a1,36(a4) + 3bc09d8c: d70c sw a1,40(a4) + 3bc09d8e: 001f25b7 lui a1,0x1f2 + 3bc09d92: f0658593 addi a1,a1,-250 # 1f1f06 <__BSS_SIZE__+0x1ec2f6> + 3bc09d96: d74c sw a1,44(a4) + 3bc09d98: 080005b7 lui a1,0x8000 + 3bc09d9c: 61058593 addi a1,a1,1552 # 8000610 + 3bc09da0: c32c sw a1,64(a4) + 3bc09da2: 2407a223 sw zero,580(a5) + 3bc09da6: f8550513 addi a0,a0,-123 + 3bc09daa: cb28 sw a0,80(a4) + 3bc09dac: 100005b7 lui a1,0x10000 + 3bc09db0: 2407aa23 sw zero,596(a5) + 3bc09db4: 0f058593 addi a1,a1,240 # 100000f0 + 3bc09db8: cf6c sw a1,92(a4) + 3bc09dba: d36c sw a1,100(a4) + 3bc09dbc: d76c sw a1,108(a4) + 3bc09dbe: 3007a023 sw zero,768(a5) + 3bc09dc2: 3007a223 sw zero,772(a5) + 3bc09dc6: 3007a623 sw zero,780(a5) + 3bc09dca: 30078713 addi a4,a5,768 + 3bc09dce: d314 sw a3,32(a4) + 3bc09dd0: 3607a623 sw zero,876(a5) + 3bc09dd4: 40078713 addi a4,a5,1024 + 3bc09dd8: 45c5 li a1,17 + 3bc09dda: c30c sw a1,0(a4) + 3bc09ddc: 6599 lui a1,0x6 + 3bc09dde: c34c sw a1,4(a4) + 3bc09de0: 489d li a7,7 + 3bc09de2: c70c sw a1,8(a4) + 3bc09de4: 48078713 addi a4,a5,1152 + 3bc09de8: cb14 sw a3,16(a4) + 3bc09dea: 06a00813 li a6,106 + 3bc09dee: 01172a23 sw a7,20(a4) + 3bc09df2: 01072c23 sw a6,24(a4) + 3bc09df6: e0760613 addi a2,a2,-505 + 3bc09dfa: 01a80537 lui a0,0x1a80 + 3bc09dfe: cf50 sw a2,28(a4) + 3bc09e00: 1a850513 addi a0,a0,424 # 1a801a8 <__BSS_SIZE__+0x1a7a598> + 3bc09e04: d308 sw a0,32(a4) + 3bc09e06: db4c sw a1,52(a4) + 3bc09e08: df0c sw a1,56(a4) + 3bc09e0a: 50078713 addi a4,a5,1280 + 3bc09e0e: c334 sw a3,64(a4) + 3bc09e10: 05172223 sw a7,68(a4) + 3bc09e14: 05072423 sw a6,72(a4) + 3bc09e18: c770 sw a2,76(a4) + 3bc09e1a: cb28 sw a0,80(a4) + 3bc09e1c: d36c sw a1,100(a4) + 3bc09e1e: d72c sw a1,104(a4) + 3bc09e20: 58078713 addi a4,a5,1408 + 3bc09e24: db34 sw a3,112(a4) + 3bc09e26: 07172a23 sw a7,116(a4) + 3bc09e2a: 07072c23 sw a6,120(a4) + 3bc09e2e: df70 sw a2,124(a4) + 3bc09e30: 60078793 addi a5,a5,1536 + 3bc09e34: c388 sw a0,0(a5) + 3bc09e36: 8082 ret + +000000003bc09e38 : + 3bc09e38: 080047b7 lui a5,0x8004 + 3bc09e3c: 4709 li a4,2 + 3bc09e3e: db98 sw a4,48(a5) + 3bc09e40: 00400737 lui a4,0x400 + 3bc09e44: 0761 addi a4,a4,24 + 3bc09e46: 18078693 addi a3,a5,384 # 8004180 + 3bc09e4a: d298 sw a4,32(a3) + 3bc09e4c: 0800a737 lui a4,0x800a + 3bc09e50: 00072a23 sw zero,20(a4) # 800a014 + 3bc09e54: 63746737 lui a4,0x63746 + 3bc09e58: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32b61> + 3bc09e5c: c7d8 sw a4,12(a5) + 3bc09e5e: 08000737 lui a4,0x8000 + 3bc09e62: c3f8 sw a4,68(a5) + 3bc09e64: 8082 ret + +000000003bc09e66 : + 3bc09e66: 080047b7 lui a5,0x8004 + 3bc09e6a: c0400737 lui a4,0xc0400 + 3bc09e6e: 0207a823 sw zero,48(a5) # 8004030 + 3bc09e72: 0761 addi a4,a4,24 + 3bc09e74: 1ae7a023 sw a4,416(a5) + 3bc09e78: 6705 lui a4,0x1 + 3bc09e7a: 177d addi a4,a4,-1 + 3bc09e7c: 0800a6b7 lui a3,0x800a + 3bc09e80: cad8 sw a4,20(a3) + 3bc09e82: 63746737 lui a4,0x63746 + 3bc09e86: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32b61> + 3bc09e8a: c7d8 sw a4,12(a5) + 3bc09e8c: 14000737 lui a4,0x14000 + 3bc09e90: c3f8 sw a4,68(a5) + 3bc09e92: 8082 ret + +000000003bc09e94 : + 3bc09e94: 080047b7 lui a5,0x8004 + 3bc09e98: 4398 lw a4,0(a5) + 3bc09e9a: 0000a797 auipc a5,0xa + 3bc09e9e: 94e7ab23 sw a4,-1706(a5) # 3bc137f0 + 3bc09ea2: 34c7368b extu a3,a4,13,12 + 3bc09ea6: 4785 li a5,1 + 3bc09ea8: 9f95 subw a5,a5,a3 + 3bc09eaa: 40f557bb sraw a5,a0,a5 + 3bc09eae: 4689 li a3,2 + 3bc09eb0: 01e7571b srliw a4,a4,0x1e + 3bc09eb4: 40e6873b subw a4,a3,a4 + 3bc09eb8: 0ff7f793 andi a5,a5,255 + 3bc09ebc: 40e7d7bb sraw a5,a5,a4 + 3bc09ec0: 0ff7f793 andi a5,a5,255 + 3bc09ec4: ffa7869b addiw a3,a5,-6 + 3bc09ec8: 4711 li a4,4 + 3bc09eca: 02d76763 bltu a4,a3,3bc09ef8 + 3bc09ece: 00002717 auipc a4,0x2 + 3bc09ed2: 86a70713 addi a4,a4,-1942 # 3bc0b738 + 3bc09ed6: 54d7478b lurw a5,a4,a3,2 + 3bc09eda: 2781 sext.w a5,a5 + 3bc09edc: 97ba add a5,a5,a4 + 3bc09ede: 08004737 lui a4,0x8004 + 3bc09ee2: 8782 jr a5 + 3bc09ee4: 007107b7 lui a5,0x710 + 3bc09ee8: 02a78793 addi a5,a5,42 # 71002a <__BSS_SIZE__+0x70a41a> + 3bc09eec: d37c sw a5,100(a4) + 3bc09eee: 6785 lui a5,0x1 + 3bc09ef0: 90378793 addi a5,a5,-1789 # 903 <__BSS_SIZE__-0x530d> + 3bc09ef4: 12f72023 sw a5,288(a4) # 8004120 + 3bc09ef8: 080047b7 lui a5,0x8004 + 3bc09efc: 4709 li a4,2 + 3bc09efe: d3b8 sw a4,96(a5) + 3bc09f00: 0607a023 sw zero,96(a5) # 8004060 + 3bc09f04: 8082 ret + 3bc09f06: 007107b7 lui a5,0x710 + 3bc09f0a: 03478793 addi a5,a5,52 # 710034 <__BSS_SIZE__+0x70a424> + 3bc09f0e: bff9 j 3bc09eec + 3bc09f10: 007107b7 lui a5,0x710 + 3bc09f14: 04b78793 addi a5,a5,75 # 71004b <__BSS_SIZE__+0x70a43b> + 3bc09f18: d37c sw a5,100(a4) + 3bc09f1a: 6785 lui a5,0x1 + 3bc09f1c: 90478793 addi a5,a5,-1788 # 904 <__BSS_SIZE__-0x530c> + 3bc09f20: bfd1 j 3bc09ef4 + 3bc09f22: 007107b7 lui a5,0x710 + 3bc09f26: 07a78793 addi a5,a5,122 # 71007a <__BSS_SIZE__+0x70a46a> + 3bc09f2a: d37c sw a5,100(a4) + 3bc09f2c: 6785 lui a5,0x1 + 3bc09f2e: 90578793 addi a5,a5,-1787 # 905 <__BSS_SIZE__-0x530b> + 3bc09f32: b7c9 j 3bc09ef4 + 3bc09f34: 007107b7 lui a5,0x710 + 3bc09f38: 0a478793 addi a5,a5,164 # 7100a4 <__BSS_SIZE__+0x70a494> + 3bc09f3c: d37c sw a5,100(a4) + 3bc09f3e: 6785 lui a5,0x1 + 3bc09f40: 90778793 addi a5,a5,-1785 # 907 <__BSS_SIZE__-0x5309> + 3bc09f44: bf45 j 3bc09ef4 + +000000003bc09f46 : + 3bc09f46: 03020737 lui a4,0x3020 + 3bc09f4a: 080007b7 lui a5,0x8000 + 3bc09f4e: 10070713 addi a4,a4,256 # 3020100 <__BSS_SIZE__+0x301a4f0> + 3bc09f52: c398 sw a4,0(a5) + 3bc09f54: 07060737 lui a4,0x7060 + 3bc09f58: 50470713 addi a4,a4,1284 # 7060504 + 3bc09f5c: c3d8 sw a4,4(a5) + 3bc09f5e: 0b0a1737 lui a4,0xb0a1 + 3bc09f62: 90870713 addi a4,a4,-1784 # b0a0908 + 3bc09f66: c798 sw a4,8(a5) + 3bc09f68: 0f0e1737 lui a4,0xf0e1 + 3bc09f6c: d0c70713 addi a4,a4,-756 # f0e0d0c + 3bc09f70: c7d8 sw a4,12(a5) + 3bc09f72: 13121737 lui a4,0x13121 + 3bc09f76: 11070713 addi a4,a4,272 # 13121110 + 3bc09f7a: cb98 sw a4,16(a5) + 3bc09f7c: 00161737 lui a4,0x161 + 3bc09f80: 51470713 addi a4,a4,1300 # 161514 <__BSS_SIZE__+0x15b904> + 3bc09f84: cbd8 sw a4,20(a5) + 3bc09f86: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09f8a: 10000613 li a2,256 + 3bc09f8e: 76543737 lui a4,0x76543 + 3bc09f92: cfd0 sw a2,28(a5) + 3bc09f94: 21070713 addi a4,a4,528 # 76543210 <__BL2_END__+0x3a92fa00> + 3bc09f98: d398 sw a4,32(a5) + 3bc09f9a: 46a1 li a3,8 + 3bc09f9c: d3d4 sw a3,36(a5) + 3bc09f9e: d798 sw a4,40(a5) + 3bc09fa0: d7d4 sw a3,44(a5) + 3bc09fa2: 007f0737 lui a4,0x7f0 + 3bc09fa6: 0407a023 sw zero,64(a5) + 3bc09faa: 0735 addi a4,a4,13 + 3bc09fac: c3f8 sw a4,68(a5) + 3bc09fae: 0407a423 sw zero,72(a5) + 3bc09fb2: c7f4 sw a3,76(a5) + 3bc09fb4: 4719 li a4,6 + 3bc09fb6: cbb8 sw a4,80(a5) + 3bc09fb8: 0c001737 lui a4,0xc001 + 3bc09fbc: b0070713 addi a4,a4,-1280 # c000b00 + 3bc09fc0: cbf8 sw a4,84(a5) + 3bc09fc2: 09160737 lui a4,0x9160 + 3bc09fc6: 04f70713 addi a4,a4,79 # 916004f + 3bc09fca: cfb8 sw a4,88(a5) + 3bc09fcc: 04000837 lui a6,0x4000 + 3bc09fd0: 0407ae23 sw zero,92(a5) + 3bc09fd4: 37080713 addi a4,a6,880 # 4000370 <__BSS_SIZE__+0x3ffa760> + 3bc09fd8: d3b8 sw a4,96(a5) + 3bc09fda: 10001737 lui a4,0x10001 + 3bc09fde: c0070713 addi a4,a4,-1024 # 10000c00 + 3bc09fe2: d3f8 sw a4,100(a5) + 3bc09fe4: 00800737 lui a4,0x800 + 3bc09fe8: d7b8 sw a4,104(a5) + 3bc09fea: 10800713 li a4,264 + 3bc09fee: dbb8 sw a4,112(a5) + 3bc09ff0: 00072737 lui a4,0x72 + 3bc09ff4: dbf8 sw a4,116(a5) + 3bc09ff6: 1f00e6b7 lui a3,0x1f00e + 3bc09ffa: 08078713 addi a4,a5,128 + 3bc09ffe: c314 sw a3,0(a4) + 3bc0a000: 010b16b7 lui a3,0x10b1 + 3bc0a004: c0a68693 addi a3,a3,-1014 # 10b0c0a <__BSS_SIZE__+0x10aaffa> + 3bc0a008: c354 sw a3,4(a4) + 3bc0a00a: 0a0106b7 lui a3,0xa010 + 3bc0a00e: 11468693 addi a3,a3,276 # a010114 + 3bc0a012: c714 sw a3,8(a4) + 3bc0a014: aaaa06b7 lui a3,0xaaaa0 + 3bc0a018: 08f68693 addi a3,a3,143 # ffffffffaaaa008f <__BL2_END__+0xffffffff6ee8c87f> + 3bc0a01c: c754 sw a3,12(a4) + 3bc0a01e: 6691 lui a3,0x4 + 3bc0a020: 80068593 addi a1,a3,-2048 # 3800 <__BSS_SIZE__-0x2410> + 3bc0a024: 6505 lui a0,0x1 + 3bc0a026: cb0c sw a1,16(a4) + 3bc0a028: 80150593 addi a1,a0,-2047 # 801 <__BSS_SIZE__-0x540f> + 3bc0a02c: cb4c sw a1,20(a4) + 3bc0a02e: 074005b7 lui a1,0x7400 + 3bc0a032: 54058593 addi a1,a1,1344 # 7400540 + 3bc0a036: d30c sw a1,32(a4) + 3bc0a038: 014205b7 lui a1,0x1420 + 3bc0a03c: 50458593 addi a1,a1,1284 # 1420504 <__BSS_SIZE__+0x141a8f4> + 3bc0a040: d34c sw a1,36(a4) + 3bc0a042: 005505b7 lui a1,0x550 + 3bc0a046: 05a9 addi a1,a1,10 + 3bc0a048: d70c sw a1,40(a4) + 3bc0a04a: 005545b7 lui a1,0x554 + 3bc0a04e: c5a58593 addi a1,a1,-934 # 553c5a <__BSS_SIZE__+0x54e04a> + 3bc0a052: d74c sw a1,44(a4) + 3bc0a054: 00aaa5b7 lui a1,0xaaa + 3bc0a058: 5c358593 addi a1,a1,1475 # aaa5c3 <__BSS_SIZE__+0xaa49b3> + 3bc0a05c: db0c sw a1,48(a4) + 3bc0a05e: 00aaf5b7 lui a1,0xaaf + 3bc0a062: 0f058593 addi a1,a1,240 # aaf0f0 <__BSS_SIZE__+0xaa94e0> + 3bc0a066: db4c sw a1,52(a4) + 3bc0a068: 1e0015b7 lui a1,0x1e001 + 3bc0a06c: f0f58593 addi a1,a1,-241 # 1e000f0f + 3bc0a070: df0c sw a1,56(a4) + 3bc0a072: 000845b7 lui a1,0x84 + 3bc0a076: e1358593 addi a1,a1,-493 # 83e13 <__BSS_SIZE__+0x7e203> + 3bc0a07a: df4c sw a1,60(a4) + 3bc0a07c: 000305b7 lui a1,0x30 + 3bc0a080: 0e07a823 sw zero,240(a5) + 3bc0a084: 03358593 addi a1,a1,51 # 30033 <__BSS_SIZE__+0x2a423> + 3bc0a088: db6c sw a1,116(a4) + 3bc0a08a: 002105b7 lui a1,0x210 + 3bc0a08e: 02c58593 addi a1,a1,44 # 21002c <__BSS_SIZE__+0x20a41c> + 3bc0a092: df2c sw a1,120(a4) + 3bc0a094: 003705b7 lui a1,0x370 + 3bc0a098: 05d9 addi a1,a1,22 + 3bc0a09a: df6c sw a1,124(a4) + 3bc0a09c: 10078713 addi a4,a5,256 + 3bc0a0a0: 01072023 sw a6,0(a4) # 72000 <__BSS_SIZE__+0x6c3f0> + 3bc0a0a4: 1007a223 sw zero,260(a5) + 3bc0a0a8: 1007a623 sw zero,268(a5) + 3bc0a0ac: 1007a823 sw zero,272(a5) + 3bc0a0b0: 1007aa23 sw zero,276(a5) + 3bc0a0b4: 659d lui a1,0x7 + 3bc0a0b6: 1007ac23 sw zero,280(a5) + 3bc0a0ba: a1058593 addi a1,a1,-1520 # 6a10 <__BSS_SIZE__+0xe00> + 3bc0a0be: cf4c sw a1,28(a4) + 3bc0a0c0: 1207a023 sw zero,288(a5) + 3bc0a0c4: ef700593 li a1,-265 + 3bc0a0c8: d34c sw a1,36(a4) + 3bc0a0ca: 45fd li a1,31 + 3bc0a0cc: d70c sw a1,40(a4) + 3bc0a0ce: 4585 li a1,1 + 3bc0a0d0: d74c sw a1,44(a4) + 3bc0a0d2: 10100593 li a1,257 + 3bc0a0d6: db0c sw a1,48(a4) + 3bc0a0d8: db50 sw a2,52(a4) + 3bc0a0da: 4851 li a6,20 + 3bc0a0dc: 03072c23 sw a6,56(a4) + 3bc0a0e0: 1407a023 sw zero,320(a5) + 3bc0a0e4: 1407a223 sw zero,324(a5) + 3bc0a0e8: 80850e13 addi t3,a0,-2040 + 3bc0a0ec: 05c72423 sw t3,72(a4) + 3bc0a0f0: 1407a623 sw zero,332(a5) + 3bc0a0f4: 4815 li a6,5 + 3bc0a0f6: 05072823 sw a6,80(a4) + 3bc0a0fa: cb6c sw a1,84(a4) + 3bc0a0fc: 1407ac23 sw zero,344(a5) + 3bc0a100: 003335b7 lui a1,0x333 + 3bc0a104: 1407ae23 sw zero,348(a5) + 3bc0a108: 33158593 addi a1,a1,817 # 333331 <__BSS_SIZE__+0x32d721> + 3bc0a10c: 1607a223 sw zero,356(a5) + 3bc0a110: d72c sw a1,104(a4) + 3bc0a112: 1607a623 sw zero,364(a5) + 3bc0a116: 1607a823 sw zero,368(a5) + 3bc0a11a: db70 sw a2,116(a4) + 3bc0a11c: 00020637 lui a2,0x20 + 3bc0a120: 18078713 addi a4,a5,384 + 3bc0a124: 0641 addi a2,a2,16 + 3bc0a126: c310 sw a2,0(a4) + 3bc0a128: 1807a223 sw zero,388(a5) + 3bc0a12c: 00090637 lui a2,0x90 + 3bc0a130: 1807a423 sw zero,392(a5) + 3bc0a134: 40060613 addi a2,a2,1024 # 90400 <__BSS_SIZE__+0x8a7f0> + 3bc0a138: c750 sw a2,12(a4) + 3bc0a13a: 00021637 lui a2,0x21 + 3bc0a13e: 20e60613 addi a2,a2,526 # 2120e <__BSS_SIZE__+0x1b5fe> + 3bc0a142: cb10 sw a2,16(a4) + 3bc0a144: 2007a023 sw zero,512(a5) + 3bc0a148: 20078713 addi a4,a5,512 + 3bc0a14c: 44000613 li a2,1088 + 3bc0a150: c350 sw a2,4(a4) + 3bc0a152: 2007a423 sw zero,520(a5) + 3bc0a156: 2207a023 sw zero,544(a5) + 3bc0a15a: d350 sw a2,36(a4) + 3bc0a15c: 2207a423 sw zero,552(a5) + 3bc0a160: 4007a023 sw zero,1024(a5) + 3bc0a164: 4007a223 sw zero,1028(a5) + 3bc0a168: 4007a423 sw zero,1032(a5) + 3bc0a16c: 4007a623 sw zero,1036(a5) + 3bc0a170: 40078713 addi a4,a5,1024 + 3bc0a174: 001005b7 lui a1,0x100 + 3bc0a178: e4b7558b swd a1,a1,(a4),2,3 + 3bc0a17c: 4609 li a2,2 + 3bc0a17e: cf10 sw a2,24(a4) + 3bc0a180: 04068693 addi a3,a3,64 + 3bc0a184: cf54 sw a3,28(a4) + 3bc0a186: 000416b7 lui a3,0x41 + 3bc0a18a: 50078713 addi a4,a5,1280 + 3bc0a18e: 0685 addi a3,a3,1 + 3bc0a190: e0b7568b swd a3,a1,(a4),0,3 + 3bc0a194: 5007a423 sw zero,1288(a5) + 3bc0a198: 5007a623 sw zero,1292(a5) + 3bc0a19c: 4811 li a6,4 + 3bc0a19e: 01072823 sw a6,16(a4) + 3bc0a1a2: 5007aa23 sw zero,1300(a5) + 3bc0a1a6: 5007ac23 sw zero,1304(a5) + 3bc0a1aa: 5007ae23 sw zero,1308(a5) + 3bc0a1ae: 460d li a2,3 + 3bc0a1b0: d310 sw a2,32(a4) + 3bc0a1b2: c334 sw a3,64(a4) + 3bc0a1b4: c36c sw a1,68(a4) + 3bc0a1b6: 5407a423 sw zero,1352(a5) + 3bc0a1ba: 5407a623 sw zero,1356(a5) + 3bc0a1be: 05072823 sw a6,80(a4) + 3bc0a1c2: 5407aa23 sw zero,1364(a5) + 3bc0a1c6: 5407ac23 sw zero,1368(a5) + 3bc0a1ca: 5407ae23 sw zero,1372(a5) + 3bc0a1ce: d330 sw a2,96(a4) + 3bc0a1d0: 08001737 lui a4,0x8001 + 3bc0a1d4: 90070793 addi a5,a4,-1792 # 8000900 + 3bc0a1d8: 40000693 li a3,1024 + 3bc0a1dc: c394 sw a3,0(a5) + 3bc0a1de: d7d4 sw a3,44(a5) + 3bc0a1e0: db94 sw a3,48(a5) + 3bc0a1e2: dbd4 sw a3,52(a5) + 3bc0a1e4: df94 sw a3,56(a5) + 3bc0a1e6: 94072023 sw zero,-1728(a4) + 3bc0a1ea: 96072823 sw zero,-1680(a4) + 3bc0a1ee: 96072a23 sw zero,-1676(a4) + 3bc0a1f2: 080806b7 lui a3,0x8080 + 3bc0a1f6: 96072c23 sw zero,-1672(a4) + 3bc0a1fa: 40468693 addi a3,a3,1028 # 8080404 + 3bc0a1fe: 08081837 lui a6,0x8081 + 3bc0a202: dff4 sw a3,124(a5) + 3bc0a204: 80880813 addi a6,a6,-2040 # 8080808 + 3bc0a208: 98070793 addi a5,a4,-1664 + 3bc0a20c: 06400637 lui a2,0x6400 + 3bc0a210: 0107a023 sw a6,0(a5) + 3bc0a214: 64060613 addi a2,a2,1600 # 6400640 + 3bc0a218: a0070793 addi a5,a4,-1536 + 3bc0a21c: e0c7d60b swd a2,a2,(a5),0,3 + 3bc0a220: e2c7d60b swd a2,a2,(a5),1,3 + 3bc0a224: 64000f93 li t6,1600 + 3bc0a228: 01f7a823 sw t6,16(a5) + 3bc0a22c: 0b000f37 lui t5,0xb000 + 3bc0a230: 0a001337 lui t1,0xa001 + 3bc0a234: 01e7aa23 sw t5,20(a5) + 3bc0a238: 90030313 addi t1,t1,-1792 # a000900 + 3bc0a23c: 000408b7 lui a7,0x40 + 3bc0a240: 0067ac23 sw t1,24(a5) + 3bc0a244: 60088893 addi a7,a7,1536 # 40600 <__BSS_SIZE__+0x3a9f0> + 3bc0a248: 004006b7 lui a3,0x400 + 3bc0a24c: 04068693 addi a3,a3,64 # 400040 <__BSS_SIZE__+0x3fa430> + 3bc0a250: 0117ae23 sw a7,28(a5) + 3bc0a254: d394 sw a3,32(a5) + 3bc0a256: d3d4 sw a3,36(a5) + 3bc0a258: d794 sw a3,40(a5) + 3bc0a25a: d7d4 sw a3,44(a5) + 3bc0a25c: 04000e93 li t4,64 + 3bc0a260: 03d7a823 sw t4,48(a5) + 3bc0a264: a2072a23 sw zero,-1484(a4) + 3bc0a268: 03c7ac23 sw t3,56(a5) + 3bc0a26c: 0307ae23 sw a6,60(a5) + 3bc0a270: c3b0 sw a2,64(a5) + 3bc0a272: c3f0 sw a2,68(a5) + 3bc0a274: c7b0 sw a2,72(a5) + 3bc0a276: c7f0 sw a2,76(a5) + 3bc0a278: 05f7a823 sw t6,80(a5) + 3bc0a27c: 05e7aa23 sw t5,84(a5) + 3bc0a280: 0467ac23 sw t1,88(a5) + 3bc0a284: 0517ae23 sw a7,92(a5) + 3bc0a288: d3b4 sw a3,96(a5) + 3bc0a28a: d3f4 sw a3,100(a5) + 3bc0a28c: d7b4 sw a3,104(a5) + 3bc0a28e: d7f4 sw a3,108(a5) + 3bc0a290: 07d7a823 sw t4,112(a5) + 3bc0a294: a6072a23 sw zero,-1420(a4) + 3bc0a298: 07c7ac23 sw t3,120(a5) + 3bc0a29c: 0707ae23 sw a6,124(a5) + 3bc0a2a0: b0072023 sw zero,-1280(a4) + 3bc0a2a4: b0072223 sw zero,-1276(a4) + 3bc0a2a8: b0070793 addi a5,a4,-1280 + 3bc0a2ac: 00404837 lui a6,0x404 + 3bc0a2b0: 0107a423 sw a6,8(a5) + 3bc0a2b4: b4050513 addi a0,a0,-1216 + 3bc0a2b8: c7c8 sw a0,12(a5) + 3bc0a2ba: 000816b7 lui a3,0x81 + 3bc0a2be: b0072823 sw zero,-1264(a4) + 3bc0a2c2: e0e68693 addi a3,a3,-498 # 80e0e <__BSS_SIZE__+0x7b1fe> + 3bc0a2c6: cbd4 sw a3,20(a5) + 3bc0a2c8: b0072c23 sw zero,-1256(a4) + 3bc0a2cc: b0072e23 sw zero,-1252(a4) + 3bc0a2d0: 40400637 lui a2,0x40400 + 3bc0a2d4: d390 sw a2,32(a5) + 3bc0a2d6: 05c1 addi a1,a1,16 + 3bc0a2d8: d3cc sw a1,36(a5) + 3bc0a2da: b2072823 sw zero,-1232(a4) + 3bc0a2de: b2072a23 sw zero,-1228(a4) + 3bc0a2e2: 0307ac23 sw a6,56(a5) + 3bc0a2e6: dfc8 sw a0,60(a5) + 3bc0a2e8: b4072023 sw zero,-1216(a4) + 3bc0a2ec: c3f4 sw a3,68(a5) + 3bc0a2ee: b4072423 sw zero,-1208(a4) + 3bc0a2f2: b4072623 sw zero,-1204(a4) + 3bc0a2f6: cbb0 sw a2,80(a5) + 3bc0a2f8: cbec sw a1,84(a5) + 3bc0a2fa: 8082 ret + 3bc0a2fc: 0000 unimp + ... + +000000003bc0a300 : + 3bc0a300: 3032 3232 312d 2d32 3032 3254 3a31 3735 2022-12-20T21:57 + 3bc0a310: 323a 2b35 3830 303a 0030 0000 0000 0000 :25+08:00....... + +000000003bc0a320 : + 3bc0a320: 624a 3832 3967 673a 6536 3835 6565 0031 Jb28g9:g6e58ee1. + 3bc0a330: 3201 504f 4e45 4253 3a49 6e20 7865 5f74 .2OPENSBI: next_ + 3bc0a340: 6461 7264 303d 2578 786c 6120 6772 3d31 addr=0x%lx arg1= + 3bc0a350: 7830 6c25 0078 0000 7830 0000 60b6 ffff 0x%lx...0x...`.. + 3bc0a360: 605c ffff 605c ffff 605c ffff 605c ffff \`..\`..\`..\`.. + 3bc0a370: 60b6 ffff 605c ffff 605c ffff 616a ffff .`..\`..\`..ja.. + 3bc0a380: 605c ffff 605c ffff 605c ffff 6112 ffff \`..\`..\`...a.. + 3bc0a390: 605c ffff 605c ffff 60f2 ffff 605c ffff \`..\`...`..\`.. + 3bc0a3a0: 6170 ffff 605c ffff 605c ffff 6146 ffff pa..\`..\`..Fa.. + 3bc0a3b0: 605c ffff 6164 ffff 3001 4520 523a 5345 \`..da...0 E:RES + 3bc0a3c0: 5445 253a 3a73 6425 000a 0000 0000 0000 ET:%s:%d........ + 3bc0a3d0: 3001 4520 723a 3d61 7830 6c25 0a78 0000 .0 E:ra=0x%lx... + 3bc0a3e0: 6170 696e 0063 0000 3201 5352 2e43 000a panic....2RSC... + 3bc0a3f0: 3201 4c50 534c 0a2e 0000 0000 0000 0000 .2PLLS.......... + 3bc0a400: 3201 4c50 454c 0a2e 0000 0000 0000 0000 .2PLLE.......... + 3bc0a410: 3201 7355 2065 6e69 6574 6e72 6c61 3320 .2Use internal 3 + 3bc0a420: 6b32 000a 0000 0000 3201 7473 6f5f 5f6e 2k.......2st_on_ + 3bc0a430: 6572 7361 6e6f 253d 0a78 0000 0000 0000 reason=%x....... + 3bc0a440: 3201 7473 6f5f 6666 725f 6165 6f73 3d6e .2st_off_reason= + 3bc0a450: 7825 000a 0000 0000 0000 249f 1746 245d %x.........$F.]$ + 3bc0a460: 1746 245d aaab 24aa 8201 0012 8101 0018 F.]$...$........ + 3bc0a470: 8201 0030 8101 0016 c906 a55a 0024 0000 ..0.......Z.$... + 3bc0a480: 0000 83a0 0000 0140 ......@. + +000000003bc0a488 : + 3bc0a488: 3130 3332 3534 3736 3938 6261 6463 6665 0123456789abcdef + 3bc0a498: 6867 6a69 6c6b 6e6d 706f 7271 7473 7675 ghijklmnopqrstuv + 3bc0a4a8: 7877 7a79 0000 0000 0101 0101 0101 0101 wxyz............ + 3bc0a4b8: 3301 4920 4c3a 4549 252f 2f64 7025 302f .3 I:LIE/%d/%p/0 + 3bc0a4c8: 2578 2f78 6c25 2e75 000a 0000 0000 0000 x%x/%lu......... + 3bc0a4d8: 3201 3250 2f53 7830 6c25 2f78 7025 0a2e .2P2S/0x%lx/%p.. + ... + 3bc0a4f0: 3101 5720 4c3a 3250 4e5f 4d4f 4741 4349 .1 W:LP2_NOMAGIC + 3bc0a500: 000a 0000 0000 0000 3001 4520 703a 7261 .........0 E:par + 3bc0a510: 6d61 5f32 6b63 7573 206d 3028 2578 2f78 am2_cksum (0x%x/ + 3bc0a520: 7830 7825 0a29 0000 3201 3250 2e45 000a 0x%x)....2P2E... + 3bc0a530: 3201 5044 2f53 7830 7825 302f 2578 2e78 .2DPS/0x%x/0x%x. + 3bc0a540: 000a 0000 0000 0000 3001 4520 643a 7264 .........0 E:ddr + 3bc0a550: 705f 7261 6d61 635f 736b 6d75 2820 7830 _param_cksum (0x + 3bc0a560: 7825 302f 2578 2978 000a 0000 0000 0000 %x/0x%x)........ + 3bc0a570: 3201 5044 2e45 000a 3101 5720 443a 204c .2DPE....1 W:DL + 3bc0a580: 6163 636e 6c65 656c 2e64 4c20 616f 2064 cancelled. Load + 3bc0a590: 6c66 7361 2e68 2820 6425 2e29 000a 0000 flash. (%d)..... + 3bc0a5a0: 3001 4520 463a 6961 656c 2064 6f74 6c20 .0 E:Failed to l + 3bc0a5b0: 616f 2064 4444 2052 6170 6172 206d 2528 oad DDR param (% + 3bc0a5c0: 2964 0a2e 0000 0000 3201 3243 2f53 7830 d).......2C2S/0x + 3bc0a5d0: 7825 302f 2578 2f78 7830 7825 0a2e 0000 %x/0x%x/0x%x.... + 3bc0a5e0: 3201 6f4e 4320 3039 4c36 6920 616d 6567 .2No C906L image + 3bc0a5f0: 0a2e 0000 0000 0000 3001 4520 623a 636c .........0 E:blc + 3bc0a600: 5f70 6e32 5f64 7572 616e 6464 2072 3028 p_2nd_runaddr (0 + 3bc0a610: 2578 2978 6920 2073 6f6e 2074 6e69 4420 x%x) is not in D + 3bc0a620: 4152 2e4d 000a 0000 3001 4520 623a 636c RAM......0 E:blc + 3bc0a630: 5f70 6e32 5f64 6973 657a 2820 7830 7825 p_2nd_size (0x%x + 3bc0a640: 2029 7369 6e20 746f 6920 206e 5244 4d41 ) is not in DRAM + 3bc0a650: 0a2e 0000 0000 0000 3001 4520 623a 636c .........0 E:blc + 3bc0a660: 5f70 6e32 5f64 6b63 7573 206d 3028 2578 p_2nd_cksum (0x% + 3bc0a670: 2f78 7830 7825 0a29 0000 0000 0000 0000 x/0x%x)......... + 3bc0a680: 3001 4520 763a 7265 6669 2079 6c62 7063 .0 E:verify blcp + 3bc0a690: 3220 646e 2820 6425 0a29 0000 0000 0000 2nd (%d)....... + 3bc0a6a0: 3201 3243 2e45 000a 3201 534d 302f 2578 .2C2E....2MS/0x% + 3bc0a6b0: 2f78 7830 7825 302f 2578 2e78 000a 0000 x/0x%x/0x%x..... + 3bc0a6c0: 3201 6f4e 6d20 6e6f 7469 726f 0a2e 0000 .2No monitor.... + 3bc0a6d0: 3001 4520 6d3a 6e6f 7469 726f 725f 6e75 .0 E:monitor_run + 3bc0a6e0: 6461 7264 2820 7830 7825 2029 7369 6e20 addr (0x%x) is n + 3bc0a6f0: 746f 6920 206e 5244 4d41 0a2e 0000 0000 ot in DRAM...... + 3bc0a700: 3001 4520 6d3a 6e6f 7469 726f 735f 7a69 .0 E:monitor_siz + 3bc0a710: 2065 3028 2578 2978 6920 2073 6f6e 2074 e (0x%x) is not + 3bc0a720: 6e69 4420 4152 2e4d 000a 0000 0000 0000 in DRAM......... + 3bc0a730: 3001 4520 6d3a 6e6f 7469 726f 635f 736b .0 E:monitor_cks + 3bc0a740: 6d75 2820 7830 7825 302f 2578 2978 000a um (0x%x/0x%x).. + 3bc0a750: 3001 4520 763a 7265 6669 2079 6f6d 696e .0 E:verify moni + 3bc0a760: 6f74 2072 2528 2964 000a 0000 0000 0000 tor (%d)........ + 3bc0a770: 3201 454d 0a2e 0000 3201 324c 302f 2578 .2ME.....2L2/0x% + 3bc0a780: 2e78 000a 0000 0000 3201 324c 302f 2578 x........2L2/0x% + 3bc0a790: 2f78 7830 7825 302f 2578 786c 302f 2578 x/0x%x/0x%lx/0x% + 3bc0a7a0: 2f78 7830 7825 000a 3201 4f43 504d 252f x/0x%x...2COMP/% + 3bc0a7b0: 2e64 000a 0000 0000 3001 4520 6c3a 616f d........0 E:loa + 3bc0a7c0: 6564 5f72 6e32 5f64 6b63 7573 206d 3028 der_2nd_cksum (0 + 3bc0a7d0: 2578 2f78 7830 7825 0a29 0000 0000 0000 x%x/0x%x)....... + 3bc0a7e0: 3001 4520 763a 7265 6669 2079 6f6c 6461 .0 E:verify load + 3bc0a7f0: 7265 3220 646e 2820 6425 0a29 0000 0000 er 2nd (%d)..... + 3bc0a800: 3001 4520 463a 6961 656c 2064 6f74 6420 .0 E:Failed to d + 3bc0a810: 6365 6d6f 7270 7365 2073 6f6c 6461 7265 ecompress loader + 3bc0a820: 325f 646e 2820 6425 252f 756c 0a29 0000 _2nd (%d/%lu)... + 3bc0a830: 3201 6f4c 6461 7265 325f 646e 6c20 616f .2Loader_2nd loa + 3bc0a840: 6564 2e64 000a 0000 3001 4520 463a 6961 ded......0 E:Fai + 3bc0a850: 656c 2064 6f74 6c20 616f 2064 6572 7473 led to load rest + 3bc0a860: 2820 6425 2e29 000a 3201 754a 706d 7420 (%d)....2Jump t + 3bc0a870: 206f 6f6d 696e 6f74 2072 7461 3020 2578 o monitor at 0x% + 3bc0a880: 786c 0a2e 0000 0000 3201 754a 706d 7420 lx.......2Jump t + 3bc0a890: 206f 6f6c 6461 7265 325f 646e 6120 2074 o loader_2nd at + 3bc0a8a0: 7830 6c25 2e78 000a 3201 460a 4253 204c 0x%lx....2.FSBL + 3bc0a8b0: 7325 253a 0a73 0000 3301 4920 733a 5f77 %s:%s....3 I:sw_ + 3bc0a8c0: 6e69 6f66 303d 2578 0a78 0000 0000 0000 info=0x%x....... + 3bc0a8d0: 3301 4920 663a 7069 705f 7261 6d61 3a31 .3 I:fip_param1: + 3bc0a8e0: 7020 7261 6d61 635f 736b 6d75 303d 2578 param_cksum=0x% + 3bc0a8f0: 2078 6170 6172 326d 6c5f 616f 6164 6464 x param2_loadadd + 3bc0a900: 3d72 7830 7825 000a 3301 4920 433a 5f50 r=0x%x...3 I:CP_ + 3bc0a910: 5453 5441 5f45 4552 3d47 7830 7825 000a STATE_REG=0x%x.. + 3bc0a920: 3201 4c42 2032 6e65 2e64 000a 0000 0000 .2BL2 end....... + 3bc0a930: 5643 444c 3230 000a 3001 4520 253a 2073 CVLD02...0 E:%s + 3bc0a940: 6163 276e 2074 6c61 6f6c 2063 6c25 2075 can't alloc %lu + 3bc0a950: 7962 6574 0a73 0000 3001 4520 253a 3a73 bytes....0 E:%s: + 3bc0a960: 6420 7473 735f 7a69 2065 7369 4e20 4c55 dst_size is NUL + 3bc0a970: 2e4c 000a 0000 0000 3301 4920 4c3a 4d5a L........3 I:LZM + 3bc0a980: 3141 252f 2f70 7025 0a2e 0000 0000 0000 A1/%p/%p........ + 3bc0a990: 3301 4920 4c3a 4d5a 3241 752f 636e 6d6f .3 I:LZMA2/uncom + 3bc0a9a0: 5f70 6973 657a 303d 2578 786c 000a 0000 p_size=0x%lx.... + 3bc0a9b0: 3001 4520 4c3a 6d7a 4461 6365 646f 2065 .0 E:LzmaDecode + 3bc0a9c0: 5245 4f52 3a52 2520 2064 7328 6174 7574 ERROR: %d (statu + 3bc0a9d0: 3d73 6425 0a29 0000 3301 4920 4c3a 4d5a s=%d)....3 I:LZM + 3bc0a9e0: 3941 302f 2578 786c 000a 0000 0000 0000 A9/0x%lx........ + 3bc0a9f0: 3301 4920 4c3a 345a 252f 2f70 7025 0a2e .3 I:LZ4/%p/%p.. + ... + 3bc0aa08: 3001 4520 643a 7463 5378 6174 7574 3d73 .0 E:dctxStatus= + 3bc0aa18: 6c25 0a75 0000 0000 3301 4920 643a 7473 %lu......3 I:dst + 3bc0aa28: 735f 7a69 3d65 6c25 2075 7273 5f63 6973 _size=%lu src_si + 3bc0aa38: 657a 253d 756c 7220 7465 253d 647a 000a ze=%lu ret=%zd.. + 3bc0aa48: 3001 4520 4c3a 345a 5f46 6564 6f63 706d .0 E:LZ4F_decomp + 3bc0aa58: 6572 7373 253d 756c 000a 0000 0000 0000 ress=%lu........ + 3bc0aa68: 3201 4344 2f50 7025 302f 2578 786c 252f .2DCP/%p/0x%lx/% + 3bc0aa78: 2f70 7830 6c25 2f78 6425 0a2e 0000 0000 p/0x%lx/%d...... + 3bc0aa88: 3201 4344 2f50 7830 6c25 2f78 6425 0a2e .2DCP/0x%lx/%d.. + ... + +000000003bc0aaa0 <__func__.0>: + 3bc0aaa0: 7a53 6c41 6f6c 0063 SzAlloc. + +000000003bc0aaa8 <__func__.1>: + 3bc0aaa8: 6564 6f63 706d 6572 7373 6c5f 6d7a 0061 decompress_lzma. + 3bc0aab8: 3301 4920 413a 7070 696c 6163 6974 6e6f .3 I:Application + 3bc0aac8: 203a 7325 000a 0000 3301 4920 753a 6273 : %s.....3 I:usb + 3bc0aad8: 2520 0a73 0000 0000 3201 5355 4242 002e %s......2USBB.. + 3bc0aae8: 3301 4920 433a 4956 555f 4253 425f 4552 .3 I:CVI_USB_BRE + 3bc0aaf8: 4b41 000a 0000 0000 3201 5355 4b42 002e AK.......2USBK.. + 3bc0ab08: 3301 4920 663a 616c 4567 746e 7265 4c44 .3 I:flagEnterDL + 3bc0ab18: 2520 0a64 0000 0000 3301 4920 4d3a 4741 %d......3 I:MAG + 3bc0ab28: 4349 4e20 4d55 4e20 544f 4d20 5441 4843 IC NUM NOT MATCH + 3bc0ab38: 000a 0000 0000 0000 3201 5355 4b42 2e46 .........2USBKF. + ... + 3bc0ab50: 3301 4920 493a 204f 6241 726f 2074 2121 .3 I:IO Abort !! + 3bc0ab60: 2121 0a21 0000 0000 3301 4920 723a 6365 !!!......3 I:rec + 3bc0ab70: 7069 6569 746e 7420 7261 6567 2074 6163 ipient target ca + 3bc0ab80: 6e6e 746f 6220 2065 6e69 6574 6672 6361 nnot be interfac + 3bc0ab90: 2165 000a 0000 0000 3201 5355 5042 302f e!.......2USBP/0 + 3bc0aba0: 2578 2e78 0000 0000 3301 4920 663a 7374 x%x......3 I:fts + 3bc0abb0: 5b6e 6425 205d 203d 7825 000a 0000 0000 n[%d] = %x...... + 3bc0abc0: 3301 4920 633a 6372 7620 6c61 3d20 2520 .3 I:crc val = % + 3bc0abd0: 0a78 0000 0000 0000 3301 4920 743a 2073 x........3 I:ts + 3bc0abe0: 6176 206c 203d 7825 000a 0000 0000 0000 val = %x........ + 3bc0abf0: 3201 5355 5342 252f 2e73 0000 0000 0000 .2USBS/%s....... + 3bc0ac00: 3231 3433 3635 3837 4139 4342 0000 0000 123456789ABC.... + 3bc0ac10: 7065 6931 2d6e 7562 6b6c 0000 0000 0000 ep1in-bulk...... + 3bc0ac20: 7065 6f32 7475 622d 6c75 006b 0000 0000 ep2out-bulk..... + 3bc0ac30: 7065 6933 2d6e 6e69 0074 0000 7074 ffff ep3in-int...tp.. + 3bc0ac40: 7246 ffff 70da ffff 710c ffff 710c ffff Fr...p...q...q.. + 3bc0ac50: 7232 ffff 7246 ffff 710c ffff 710c ffff 2r..Fr...q...q.. + 3bc0ac60: 710c ffff 710c ffff 710c ffff 710c ffff .q...q...q...q.. + 3bc0ac70: 710c ffff 7206 ffff 3301 4920 623a 6c75 .q...r...3 I:bul + 3bc0ac80: 426b 6675 6c41 6f6c 3a63 2520 0a70 0000 kBufAlloc: %p... + 3bc0ac90: 3301 4920 633a 646d 7542 4166 6c6c 636f .3 I:cmdBufAlloc + 3bc0aca0: 203a 7025 000a 0000 3301 4920 633a 3062 : %p.....3 I:cb0 + 3bc0acb0: 625f 6675 203a 7025 000a 0000 0000 0000 _buf: %p........ + 3bc0acc0: 3301 4920 633a 3162 625f 6675 203a 7025 .3 I:cb1_buf: %p + 3bc0acd0: 000a 0000 0000 0000 3301 4920 633a 3262 .........3 I:cb2 + 3bc0ace0: 625f 6675 203a 7025 000a 0000 0000 0000 _buf: %p........ + 3bc0acf0: 3301 4920 653a 3070 7542 6666 6c41 6f6c .3 I:ep0BuffAllo + 3bc0ad00: 3a63 2520 0a70 0000 3301 4920 723a 7073 c: %p....3 I:rsp + 3bc0ad10: 625f 6675 203a 7025 000a 0000 0000 0000 _buf: %p........ + 3bc0ad20: 3301 4920 613a 6d63 625f 6675 203a 7025 .3 I:acm_buf: %p + 3bc0ad30: 000a 0000 0000 0000 3301 4920 733a 7465 .........3 I:set + 3bc0ad40: 7075 625f 6675 203a 7025 000a 0000 0000 up_buf: %p...... + 3bc0ad50: 3301 4920 683a 6e61 6c64 7265 203a 7025 .3 I:handler: %p + 3bc0ad60: 000a 0000 0000 0000 5643 5449 4b45 0000 ........CVITEK.. + 3bc0ad70: 5355 2042 6f43 206d 6f50 7472 0000 0000 USB Com Port.... + 3bc0ad80: 3301 4920 553a 4253 7620 7562 2073 7369 .3 I:USB vbus is + 3bc0ad90: 6f20 6666 000a 0000 3301 4920 743a 6d69 off.....3 I:tim + 3bc0ada0: 6f65 7475 695f 5f6e 736d 2520 0a64 0000 eout_in_ms %d... + 3bc0adb0: 3201 5355 4342 002e 3301 4920 553a 4253 .2USBC...3 I:USB + 3bc0adc0: 7020 6c6f 696c 676e 7420 6d69 6f65 7475 polling timeout + 3bc0add0: 695f 5f6e 736d 203a 6425 000a 0000 0000 _in_ms: %d...... + 3bc0ade0: 3301 4920 473a 6461 6567 2074 6552 6967 .3 I:Gadget Regi + 3bc0adf0: 7473 7265 4620 6961 0a6c 0000 0000 0000 ster Fail....... + 3bc0ae00: 3301 4920 473a 6461 6567 2074 626f 656a .3 I:Gadget obje + 3bc0ae10: 7463 6e20 746f 6520 6978 7473 6465 0a21 ct not existed!. + ... + 3bc0ae28: 3201 5355 4542 2e46 0000 0000 0000 0000 .2USBEF......... + 3bc0ae38: 3301 4920 633a 6e6f 656e 7463 6f69 206e .3 I:connection + 3bc0ae48: 7073 6565 3a64 2520 0a64 0000 0000 0000 speed: %d....... + 3bc0ae58: 3201 5355 5742 252f 2e64 0000 0000 0000 .2USBW/%d....... + 3bc0ae68: 3201 5355 4442 002e 3201 5355 4c42 002e .2USBD...2USBL.. + 3bc0ae78: 3001 4520 553a 4253 4520 7272 726f 2520 .0 E:USB Error % + 3bc0ae88: 0a75 0000 0000 0000 5454 0059 0000 0000 u.......TTY..... + +000000003bc0ae98 <__func__.0>: + 3bc0ae98: 6962 646e 0000 0000 bind.... + +000000003bc0aea0 <__func__.1>: + 3bc0aea0: 6e75 6962 646e 0000 unbind.. + +000000003bc0aea8 <__func__.4>: + 3bc0aea8: 6964 6373 6e6f 656e 7463 0000 0000 0000 disconnect...... + +000000003bc0aeb8 <__func__.5>: + 3bc0aeb8: 6572 6573 0074 0000 6177 6e72 6e69 2167 reset...warning! + 3bc0aec8: 6620 6572 2065 6e75 6966 696e 6873 6465 free unfinished + 3bc0aed8: 7220 7165 6575 7473 0a21 0000 0000 0000 request!....... + 3bc0aee8: 7325 203a 4820 4e41 2147 4120 4248 4920 %s: HANG! AHB I + 3bc0aef8: 6c64 2065 5247 4353 4c54 000a 0000 0000 dle GRSCTL...... + 3bc0af08: 7325 203a 6974 656d 756f 2074 6c66 7375 %s: timeout flus + 3bc0af18: 6968 676e 6620 6669 206f 4728 5352 4354 hing fifo (GRSTC + 3bc0af28: 4c54 253d 3830 2978 000a 0000 0000 0000 TL=%08x)........ + 3bc0af38: 7325 203a 6974 656d 756f 2074 6c66 7375 %s: timeout flus + 3bc0af48: 6968 676e 6620 6669 736f 2820 7267 7473 hing fifos (grst + 3bc0af58: 7463 206c 203d 7830 7825 0a29 0000 0000 ctl = 0x%x)..... + 3bc0af68: 7325 203a 6163 6c6c 6620 726f 6520 3070 %s: call for ep0 + 3bc0af78: 6f2d 7475 000a 0000 7325 203a 6974 656d -out....%s: time + 3bc0af88: 756f 2074 4944 5045 4e49 2e54 414e 454b out DIEPINT.NAKE + 3bc0af98: 4646 000a 0000 0000 7325 203a 6974 656d FF......%s: time + 3bc0afa8: 756f 2074 4947 544e 5453 2e53 4f47 5455 out GINTSTS.GOUT + 3bc0afb8: 414e 454b 4646 000a 7325 203a 6974 656d NAKEFF..%s: time + 3bc0afc8: 756f 2074 4f44 5045 5443 2e4c 5045 6944 out DOEPCTL.EPDi + 3bc0afd8: 6173 6c62 0a65 0000 7325 2928 4820 4e41 sable...%s() HAN + 3bc0afe8: 2147 5320 666f 2074 6552 6573 2074 5247 G! Soft Reset GR + 3bc0aff8: 5453 5443 3d4c 3025 0a78 0000 0000 0000 STCTL=%0x....... + 3bc0b008: 7325 2928 4820 4e41 2147 5320 666f 2074 %s() HANG! Soft + 3bc0b018: 2e34 2032 6552 6573 2074 5247 5453 5443 4.2 Reset GRSTCT + 3bc0b028: 3d4c 3025 0a78 0000 7325 2928 4820 4e41 L=%0x...%s() HAN + 3bc0b038: 2147 4120 4248 4920 6c64 2065 5247 5453 G! AHB Idle GRST + 3bc0b048: 5443 3d4c 3025 0a78 0000 0000 0000 0000 CTL=%0x......... + 3bc0b058: 6973 657a 6620 726f 6820 6e61 6c64 7265 size for handler + 3bc0b068: 6920 2073 6f74 206f 6173 6c6d 206c 2528 is too samll (% + 3bc0b078: 646c 202c 6425 0a29 0000 0000 0000 0000 ld, %d)......... + 3bc0b088: 6f4e 6d20 6d65 726f 2079 7661 6961 616c No memory availa + 3bc0b098: 6c62 2065 6f66 2072 4455 2143 000a 0000 ble for UDC!.... + +000000003bc0b0a8 <__func__.0>: + 3bc0b0a8: 7764 3263 655f 5f70 7473 706f 785f 6566 dwc2_ep_stop_xfe + 3bc0b0b8: 0072 0000 0000 0000 r....... + +000000003bc0b0c0 <__func__.1>: + 3bc0b0c0: 645f 6377 5f32 7065 645f 7369 6261 656c _dwc2_ep_disable + ... + +000000003bc0b0d8 <__func__.2>: + 3bc0b0d8: 7764 3263 725f 6365 6e6f 6966 5f67 7375 dwc2_reconfig_us + 3bc0b0e8: 6462 0000 0000 0000 bd...... + +000000003bc0b0f0 <__func__.3>: + 3bc0b0f0: 7764 3263 685f 6f73 6774 745f 6678 6669 dwc2_hsotg_txfif + 3bc0b100: 5f6f 6c66 7375 0068 o_flush. + +000000003bc0b108 <__func__.4>: + 3bc0b108: 7764 3263 685f 6f73 6774 695f 696e 5f74 dwc2_hsotg_init_ + 3bc0b118: 6966 6f66 0000 0000 fifo.... + +000000003bc0b120 : + 3bc0b120: 7764 3263 752d 6364 0000 0000 0000 0000 dwc2-udc........ + +000000003bc0b130 : + ... + 3bc0b138: 2ac2 3bc0 0000 0000 0000 0000 0000 0000 .*.;............ + ... + 3bc0b158: 27ac 3bc0 0000 0000 0000 0000 0000 0000 .'.;............ + ... + +000000003bc0b178 : + 3bc0b178: 7065 2d30 6f63 746e 6f72 006c 0000 0000 ep0-control..... + +000000003bc0b188 : + 3bc0b188: 7065 6931 2d6e 7562 6b6c 0000 0000 0000 ep1in-bulk...... + +000000003bc0b198 : + 3bc0b198: 7065 6f32 7475 622d 6c75 006b 0000 0000 ep2out-bulk..... + +000000003bc0b1a8 : + 3bc0b1a8: 7065 6933 2d6e 6e69 0074 0000 0000 0000 ep3in-int....... + 3bc0b1b8: 7263 2d71 623e 6572 7571 7365 3a74 7830 crq->brequest:0x + 3bc0b1c8: 7825 000a 8c86 ffff 8d62 ffff 8eb4 ffff %x......b....... + 3bc0b1d8: 8e06 ffff 8eb4 ffff 8c1a ffff 8c68 ffff ............h... + 3bc0b1e8: 8eb4 ffff 8c7c ffff 8c50 ffff 8eb4 ffff ....|...P....... + 3bc0b1f8: 8c72 ffff 0000 0000 7572 206e 6574 7473 r.......run test + 3bc0b208: 6d20 646f 2065 6425 000a 0000 0000 0000 mode %d........ + 3bc0b218: 3301 4920 553a 4253 4956 2f44 7825 0a2e .3 I:USBVID/%x.. + ... + +000000003bc0b230 : + 3bc0b230: 0000 1021 2042 3063 4084 50a5 60c6 70e7 ..!.B c0.@.P.`.p + 3bc0b240: 8108 9129 a14a b16b c18c d1ad e1ce f1ef ..).J.k......... + 3bc0b250: 1231 0210 3273 2252 52b5 4294 72f7 62d6 1...s2R".R.B.r.b + 3bc0b260: 9339 8318 b37b a35a d3bd c39c f3ff e3de 9...{.Z......... + 3bc0b270: 2462 3443 0420 1401 64e6 74c7 44a4 5485 b$C4 ....d.t.D.T + 3bc0b280: a56a b54b 8528 9509 e5ee f5cf c5ac d58d j.K.(........... + 3bc0b290: 3653 2672 1611 0630 76d7 66f6 5695 46b4 S6r&..0..v.f.V.F + 3bc0b2a0: b75b a77a 9719 8738 f7df e7fe d79d c7bc [.z...8......... + 3bc0b2b0: 48c4 58e5 6886 78a7 0840 1861 2802 3823 .H.X.h.x@.a..(#8 + 3bc0b2c0: c9cc d9ed e98e f9af 8948 9969 a90a b92b ........H.i...+. + 3bc0b2d0: 5af5 4ad4 7ab7 6a96 1a71 0a50 3a33 2a12 .Z.J.z.jq.P.3:.* + 3bc0b2e0: dbfd cbdc fbbf eb9e 9b79 8b58 bb3b ab1a ........y.X.;... + 3bc0b2f0: 6ca6 7c87 4ce4 5cc5 2c22 3c03 0c60 1c41 .l.|.L.\",.<`.A. + 3bc0b300: edae fd8f cdec ddcd ad2a bd0b 8d68 9d49 ........*...h.I. + 3bc0b310: 7e97 6eb6 5ed5 4ef4 3e13 2e32 1e51 0e70 .~.n.^.N.>2.Q.p. + 3bc0b320: ff9f efbe dfdd cffc bf1b af3a 9f59 8f78 ..........:.Y.x. + 3bc0b330: 9188 81a9 b1ca a1eb d10c c12d f14e e16f ..........-.N.o. + 3bc0b340: 1080 00a1 30c2 20e3 5004 4025 7046 6067 .....0. .P%@Fpg` + 3bc0b350: 83b9 9398 a3fb b3da c33d d31c e37f f35e ........=.....^. + 3bc0b360: 02b1 1290 22f3 32d2 4235 5214 6277 7256 .....".25B.RwbVr + 3bc0b370: b5ea a5cb 95a8 8589 f56e e54f d52c c50d ........n.O.,... + 3bc0b380: 34e2 24c3 14a0 0481 7466 6447 5424 4405 .4.$....ftGd$T.D + 3bc0b390: a7db b7fa 8799 97b8 e75f f77e c71d d73c ........_.~...<. + 3bc0b3a0: 26d3 36f2 0691 16b0 6657 7676 4615 5634 .&.6....Wfvv.F4V + 3bc0b3b0: d94c c96d f90e e92f 99c8 89e9 b98a a9ab L.m.../......... + 3bc0b3c0: 5844 4865 7806 6827 18c0 08e1 3882 28a3 DXeH.x'h.....8.( + 3bc0b3d0: cb7d db5c eb3f fb1e 8bf9 9bd8 abbb bb9a }.\.?........... + 3bc0b3e0: 4a75 5a54 6a37 7a16 0af1 1ad0 2ab3 3a92 uJTZ7j.z.....*.: + 3bc0b3f0: fd2e ed0f dd6c cd4d bdaa ad8b 9de8 8dc9 ....l.M......... + 3bc0b400: 7c26 6c07 5c64 4c45 3ca2 2c83 1ce0 0cc1 &|.ld\EL.<.,.... + 3bc0b410: ef1f ff3e cf5d df7c af9b bfba 8fd9 9ff8 ..>.].|......... + 3bc0b420: 6e17 7e36 4e55 5e74 2e93 3eb2 0ed1 1ef0 .n6~UNt^...>.... + 3bc0b430: bf12 ffff bf46 ffff bfb4 ffff c030 ffff ....F.......0... + 3bc0b440: c056 ffff c0fc ffff c1ac ffff c20e ffff V............... + 3bc0b450: c342 ffff c436 ffff c43a ffff c46c ffff B...6...:...l... + 3bc0b460: c4dc ffff c4fc ffff c556 ffff 0000 0000 ........V....... + +000000003bc0b470 : + 3bc0b470: 0000 0001 0000 0000 0000 0004 0000 0000 ................ + 3bc0b480: 0000 0010 0000 0000 0000 0040 0000 0000 ..........@..... + +000000003bc0b490 : + ... + 3bc0b49c: ffff ffff fffc ffff 0001 0000 0002 0000 ................ + 3bc0b4ac: 0003 0000 .... + +000000003bc0b4b0 : + 3bc0b4b0: 0000 0000 0001 0000 0002 0000 0001 0000 ................ + 3bc0b4c0: 0000 0000 0004 0000 0004 0000 0004 0000 ................ + 3bc0b4d0: c874 ffff c854 ffff c834 ffff c5f0 ffff t...T...4....... + 3bc0b4e0: c692 ffff c744 ffff c806 ffff c5c2 ffff ....D........... + 3bc0b4f0: c664 ffff c716 ffff c7d8 ffff c594 ffff d............... + 3bc0b500: c636 ffff c6e8 ffff c7aa ffff 0000 0000 6............... + 3bc0b510: 3201 4444 2052 6e69 7469 0a2e 0000 0000 .2DDR init...... + 3bc0b520: 3201 6464 5f72 6170 6172 5b6d 5d30 303d .2ddr_param[0]=0 + 3bc0b530: 2578 2e78 000a 0000 3201 6b70 5f67 7974 x%x......2pkg_ty + 3bc0b540: 6570 253d 0a78 0000 3201 6e32 0a64 0000 pe=%x....22nd... + 3bc0b550: 3201 6e75 6e6b 776f 206e 6b70 5f67 7974 .2unknown pkg_ty + 3bc0b560: 6570 303d 2578 0a78 0000 0000 0000 0000 pe=0x%x......... + 3bc0b570: 3201 2544 5f78 7825 255f 0a78 0000 0000 .2D%x_%x_%x..... + 3bc0b580: 3201 4444 3252 0000 3201 4444 3352 0000 .2DDR2...2DDR3.. + 3bc0b590: 3201 6e75 6e6b 776f 206e 6576 646e 726f .2unknown vendor + 3bc0b5a0: 253d 0064 0000 0000 3201 352d 3231 004d =%d......2-512M. + 3bc0b5b0: 3201 312d 0047 0000 3201 322d 0047 0000 .2-1G....2-2G... + 3bc0b5c0: 3201 342d 0047 0000 3201 752d 6b6e 6f6e .2-4G....2-unkno + 3bc0b5d0: 6e77 6320 7061 6361 7469 3d79 6425 0000 wn capacity=%d.. + 3bc0b5e0: 3201 512d 4e46 3838 000a 0000 0000 0000 .2-QFN88........ + 3bc0b5f0: 3201 512d 4e46 3836 000a 0000 0000 0000 .2-QFN68........ + 3bc0b600: 3201 422d 4147 000a 3201 752d 6b6e 6f6e .2-BGA...2-unkno + 3bc0b610: 6e77 7020 676b 253d 0064 0000 cc32 ffff wn pkg=%d...2... + 3bc0b620: ccb8 ffff cc10 ffff cc22 ffff cc32 ffff ........"...2... + 3bc0b630: ccb8 ffff cc9a ffff ccaa ffff cce0 ffff ................ + 3bc0b640: cce0 ffff cce0 ffff cca6 ffff cce0 ffff ................ + 3bc0b650: cce0 ffff cce0 ffff cce0 ffff cca6 ffff ................ + 3bc0b660: cce0 ffff 0000 0000 3001 4520 453a 5252 .........0 E:ERR + 3bc0b670: 524f 6220 7369 5f74 6166 6c69 000a 0000 OR bist_fail.... + 3bc0b680: 3001 4520 623a 7369 5f74 6572 7573 746c .0 E:bist_result + 3bc0b690: 3d20 2520 2c78 6520 7272 645f 7461 5f61 = %x, err_data_ + 3bc0b6a0: 646f 2064 203d 6c25 2c78 6520 7272 645f odd = %lx, err_d + 3bc0b6b0: 7461 5f61 7665 6e65 3d20 2520 786c 000a ata_even = %lx.. + 3bc0b6c0: 3201 4444 2052 4942 5453 4620 4941 0a4c .2DDR BIST FAIL. + ... + 3bc0b6d8: 3201 4444 2052 4942 5453 5020 5341 0a53 .2DDR BIST PASS. + ... + 3bc0b6f0: fa02 401f fa02 801f 2c02 4010 2c02 8010 ...@.....,.@.,.. + 3bc0b700: 7a00 4000 7a00 8000 3a00 4000 3a00 8000 .z.@.z...:.@.:.. + 3bc0b710: e1ec ffff e250 ffff e2b0 ffff e31c ffff ....P........... + 3bc0b720: e3e0 ffff e380 ffff e316 ffff e316 ffff ................ + 3bc0b730: e4a2 ffff e440 ffff e7ac ffff e7ce ffff ....@........... + 3bc0b740: e7d8 ffff e7ea ffff e7fc ffff ............ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2.elf b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2.elf new file mode 100755 index 000000000..ba4b5ecfc Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2.elf differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2.ld b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2.ld new file mode 100644 index 000000000..b7fbc239f --- /dev/null +++ b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2.ld @@ -0,0 +1,53 @@ +OUTPUT_FORMAT("elf64-littleriscv") +OUTPUT_ARCH(riscv) +ENTRY(bl2_entrypoint) +MEMORY { + RAM (rwx): ORIGIN = (0x3BC00000), LENGTH = (0x00019000) +} +SECTIONS +{ + . = (0x3BC00000); + ASSERT(. == ALIGN(4096), + "BL2_BASE address is not aligned on a page boundary.") + ro . : { + __RO_START__ = .; + *bl2_entrypoint.o(.text*) + *(.vectors) + *(.text*) + *(.rodata*) + __RO_END__ = .; + } >RAM + .data . : { + . = ALIGN(16); + __DATA_START__ = .; + *(.data*) + . = ALIGN(16); + __DATA_END__ = .; + } >RAM + stacks (NOLOAD) : { + . = ALIGN(64); + __STACKS_START__ = .; + . += 0x2000; + . = ALIGN(64); + __STACKS_END__ = .; + } >RAM + .bss : ALIGN(16) { + . = ALIGN(16); + __BSS_START__ = .; + *(SORT_BY_ALIGNMENT(.bss*)) + *(COMMON) + . = ALIGN(16); + __BSS_END__ = .; + } >RAM + __BL2_END__ = .; + __BSS_SIZE__ = SIZEOF(.bss); + ASSERT(. <= ((0x3BC00000) + (0x00019000)), "BL2 image has exceeded its limit.") +p_rom_api_cryptodma_aes_decrypt = 0x0000000004400100; +p_rom_api_flash_init = 0x0000000004400080; +p_rom_api_get_boot_src = 0x0000000004400020; +p_rom_api_get_number_of_retries = 0x00000000044000c0; +p_rom_api_image_crc = 0x00000000044000a0; +p_rom_api_load_image = 0x0000000004400060; +p_rom_api_set_boot_src = 0x0000000004400040; +p_rom_api_verify_rsa = 0x00000000044000e0; +} diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2.map b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2.map new file mode 100644 index 000000000..2e8ea8a76 --- /dev/null +++ b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2.map @@ -0,0 +1,3415 @@ + +Discarded input sections + + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .text.cpu_report_exception + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .text.enable_cache + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o + .text.memcpy16 + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o + .text.zeromem 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o + .debug_info 0x0000000000000000 0x1ac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o + .debug_abbrev 0x0000000000000000 0xdd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o + .debug_loc 0x0000000000000000 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o + .debug_aranges + 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o + .debug_ranges 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o + .debug_line 0x0000000000000000 0x102 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o + .debug_str 0x0000000000000000 0x3a69 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o + .debug_frame 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .text.inv_dcache_range + 0x0000000000000000 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .text.clean_dcache_range + 0x0000000000000000 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .text.enable_dcache + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .text.disable_dcache + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .text.timer_init + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x186b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .text.console_init + 0x0000000000000000 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .text.console_puts + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .text.console_getc + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .text.uart_tstc + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .text.console_tstc + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .rodata.tf_print_buffer.str1.8 + 0x0000000000000000 0x2d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .text.tf_print_buffer + 0x0000000000000000 0x96 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .text.config_core_power + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .text.apply_analog_trimming_data + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .text.bytes_reverse + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .rodata.__assert.str1.8 + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .text.__assert + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .debug_info 0x0000000000000000 0x153 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .debug_abbrev 0x0000000000000000 0xa4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .debug_loc 0x0000000000000000 0x109 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .debug_macro 0x0000000000000000 0x112 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .debug_line 0x0000000000000000 0x21b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .debug_str 0x0000000000000000 0x6fb3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .debug_frame 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .text.memcmp 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .text.memchr 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .text._memcpy 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .debug_macro 0x0000000000000000 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o + .text.strchr 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o + .debug_info 0x0000000000000000 0xe4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o + .debug_abbrev 0x0000000000000000 0x7f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o + .debug_loc 0x0000000000000000 0x6f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o + .debug_macro 0x0000000000000000 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o + .debug_line 0x0000000000000000 0x14e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o + .debug_str 0x0000000000000000 0x3a7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o + .text.strcasecmp + 0x0000000000000000 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o + .text.strncmp 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o + .debug_info 0x0000000000000000 0x105 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o + .debug_abbrev 0x0000000000000000 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o + .debug_loc 0x0000000000000000 0x15f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o + .debug_line 0x0000000000000000 0x13f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o + .debug_str 0x0000000000000000 0x3a39 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o + .text.strnlen 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o + .debug_info 0x0000000000000000 0x105 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o + .debug_abbrev 0x0000000000000000 0x9f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o + .debug_loc 0x0000000000000000 0xa3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o + .debug_line 0x0000000000000000 0x123 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o + .debug_str 0x0000000000000000 0x3a40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .text.is_usb_dl_enabled + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .rodata.print_sram_log.str1.8 + 0x0000000000000000 0x6d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .text.print_sram_log + 0x0000000000000000 0x86 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .text.DWC2_ReadReg32 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .text.DWC2_WriteReg32 + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .text.DWC2_UncachedRead8 + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .text.DWC2_UncachedRead16 + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .text.DWC2_UncachedWrite8 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .text.DWC2_UncachedWrite16 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .text.DWC2_WritePhysAddress32 + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .text.DWC2_BufferCopy + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .text.DWC2_DelayNs + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .text.set_trigger_cnt + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .text.dfu_usb_get_reset + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .text.otg_phy_init + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .text.otg_phy_off + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x517 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .text.crc16_pacing + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .text.crc16_ccitt_with_tag + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .text.LzmaDec_InitDicAndState + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .text.LzmaDec_DecodeToBuf + 0x0000000000000000 0xd6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .text.LzmaDec_Free + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .text.LzmaDec_Allocate + 0x0000000000000000 0xbc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_renormDictT + 0x0000000000000000 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4HC_rotatePattern + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4HC_setExternalDict + 0x0000000000000000 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4HC_reverseCountPattern + 0x0000000000000000 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4HC_countPattern + 0x0000000000000000 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4HC_init_internal + 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_decompress_fast_extDict + 0x0000000000000000 0x2aa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4HC_compress_optimal + 0x0000000000000000 0x1d36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4HC_compress_generic_noDictCtx + 0x0000000000000000 0x1b68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4HC_compress_generic + 0x0000000000000000 0x211a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_makeBlock + 0x0000000000000000 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_versionNumber + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .rodata.LZ4_versionString.str1.8 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_versionString + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compressBound + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_sizeofState + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compress_fast_extState_fastReset + 0x0000000000000000 0x1428 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_initStream + 0x0000000000000000 0x36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compress_fast_extState + 0x0000000000000000 0xd02 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compress_fast + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compress_default + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compress_destSize + 0x0000000000000000 0x83c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_createStream + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_resetStream + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_resetStream_fast + 0x0000000000000000 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_freeStream + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_loadDict + 0x0000000000000000 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_attach_dictionary + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compress_fast_continue + 0x0000000000000000 0x1ca4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_compressBlock_continue + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compress_forceExtDict + 0x0000000000000000 0xa24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_saveDict + 0x0000000000000000 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_decompress_safe_partial + 0x0000000000000000 0x2a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_decompress_fast + 0x0000000000000000 0x1e6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_decompress_fast_withPrefix64k + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_createStreamDecode + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_freeStreamDecode + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_setStreamDecode + 0x0000000000000000 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_decoderRingBufferSize + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_decompress_safe_continue + 0x0000000000000000 0x3c6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_decompress_fast_continue + 0x0000000000000000 0x316 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_decompress_fast_usingDict + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compress + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput_withState + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compress_withState + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput_continue + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compress_continue + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_uncompress + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_uncompress_unknownOutputSize + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_sizeofStreamState + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_resetStreamState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_create + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_slideInputBuffer + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_sizeofStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_createStreamHC + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_freeStreamHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_initStreamHC + 0x0000000000000000 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_setCompressionLevel + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compress_HC_destSize + 0x0000000000000000 0x6a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_resetStreamHC + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_resetStreamHC_fast + 0x0000000000000000 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compress_HC_extStateHC_fastReset + 0x0000000000000000 0x64 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compress_HC_extStateHC + 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compress_HC + 0x0000000000000000 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_initStream + 0x0000000000000000 0x5a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_compressBlock + 0x0000000000000000 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_favorDecompressionSpeed + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_loadDictHC + 0x0000000000000000 0xd6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compressHC_continue_generic + 0x0000000000000000 0xf0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_attach_HC_dictionary + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compress_HC_continue + 0x0000000000000000 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_compressBlockHC_continue + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_compressBlockHC + 0x0000000000000000 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compress_HC_continue_destSize + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_saveDictHC + 0x0000000000000000 0x96 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_localSaveDict + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compressHC + 0x0000000000000000 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compressHC2 + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compressHC_withStateHC + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput_withStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compressHC2_withStateHC + 0x0000000000000000 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput_withStateHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compressHC_continue + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput_continue + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_sizeofStreamStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_resetStreamStateHC + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_createHC + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_freeHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compressHC2_continue + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput_continue + 0x0000000000000000 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_slideInputBufferHC + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .rodata.LZ4F_getErrorName.str1.8 + 0x0000000000000000 0x17 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_getErrorName + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_getErrorCode + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_getVersion + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_compressionLevel_max + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_compressBound_internal + 0x0000000000000000 0x9c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_compressFrameBound + 0x0000000000000000 0x3e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_freeCDict + 0x0000000000000000 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_createCDict + 0x0000000000000000 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_createCompressionContext + 0x0000000000000000 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_freeCompressionContext + 0x0000000000000000 0x36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_compressBegin_usingCDict + 0x0000000000000000 0x20c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_compressBegin + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_compressBound + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_compressUpdate + 0x0000000000000000 0x204 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_flush + 0x0000000000000000 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_compressEnd + 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_compressFrame_usingCDict + 0x0000000000000000 0x104 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_compressFrame + 0x0000000000000000 0x112 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_freeDecompressionContext + 0x0000000000000000 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_resetDecompressionContext + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_headerSize + 0x0000000000000000 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_getFrameInfo + 0x0000000000000000 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_decompress_usingDict + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .rodata.str1.8 + 0x0000000000000000 0x246 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .rodata.cst8 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .rodata.LZ4F_errorStrings + 0x0000000000000000 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .rodata.clTable.2 + 0x0000000000000000 0x9c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .text.XXH64_mergeRound + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .text.XXH64_avalanche + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .text.XXH_read64 + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .text.XXH64_finalize.constprop.0 + 0x0000000000000000 0x7be /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .rodata.XXH64_finalize.constprop.0 + 0x0000000000000000 0x7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .text.XXH_versionNumber + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .text.XXH32_createState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .text.XXH32_freeState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .text.XXH32_copyState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .text.XXH32_canonicalFromHash + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .text.XXH32_hashFromCanonical + 0x0000000000000000 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .text.XXH64 0x0000000000000000 0x234 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .text.XXH64_createState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .text.XXH64_freeState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .text.XXH64_copyState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .text.XXH64_reset + 0x0000000000000000 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .text.XXH64_update + 0x0000000000000000 0x1fa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .text.XXH64_digest + 0x0000000000000000 0x8a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .text.XXH64_canonicalFromHash + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .text.XXH64_hashFromCanonical + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .rodata.cst8 0x0000000000000000 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .text.get_ddr_capacity + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .text.get_pkg 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .text.get_ddr_type + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .rodata.dump_axi_mon_reg.str1.8 + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .text.dump_axi_mon_reg + 0x0000000000000000 0x6c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.ddr_debug_num_write + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_ddr_sub_resume2 + 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_ddrc_suspend + 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_dll_cal_phyd_hw + 0x0000000000000000 0x10a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_dll_cal_phya_enautok + 0x0000000000000000 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_ctrlupd_short + 0x0000000000000000 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_wrlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_rdglvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_rdlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_wdqlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_dll_cal_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_zqcal_status + 0x0000000000000000 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_ddr_zqcal_isr8 + 0x0000000000000000 0x2d4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_ddr_zqcal_hw_isr8 + 0x0000000000000000 0x15e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_training_status + 0x0000000000000000 0x134 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_set_dq_vref + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_ddr_phya_pd + 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_ddr_phyd_save + 0x0000000000000000 0xae6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.ddr_sys_suspend + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_ddr_phyd_restore + 0x0000000000000000 0xaf4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_ddr_sub_resume3 + 0x0000000000000000 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_dll_sw_upd + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_set_dq_trig_lvl + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_ddr_freq_change_ltoh + 0x0000000000000000 0x276 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_lb_0_phase40 + 0x0000000000000000 0x16e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_lb_0_external + 0x0000000000000000 0x1ce /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_lb_1_dq_set_highlow + 0x0000000000000000 0x1b4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_lb_2_mux_demux + 0x0000000000000000 0x19c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_lb_3_ca_set_highlow + 0x0000000000000000 0x1e4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_lb_4_ca_clk_pat + 0x0000000000000000 0x132 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.ddr_sys_resume + 0x0000000000000000 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_rdlvl_sw_req + 0x0000000000000000 0x44c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_wdqlvl_sw_req + 0x0000000000000000 0x1ee /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_ddr_freq_change_htol + 0x0000000000000000 0x30a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_dfi_phyupd_req + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_dll_sw_clr + 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_bist_tx_shift_delay + 0x0000000000000000 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_bist_rx_delay + 0x0000000000000000 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_bist_rx_deskew_delay + 0x0000000000000000 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_ca_shift_delay + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_cs_shift_delay + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_bist_mask_shift_delay + 0x0000000000000000 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_reg_toggle + 0x0000000000000000 0x1514 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_ana_test + 0x0000000000000000 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_ddr_zq240 + 0x0000000000000000 0x1c4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_ddr_zq240_ate + 0x0000000000000000 0x148 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .text.cvx16_ddr_zq240_cal + 0x0000000000000000 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .data.ddr_patch_regs + 0x0000000000000000 0x1c8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .data.ddr_patch_regs_count + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .debug_info 0x0000000000000000 0x121 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .debug_abbrev 0x0000000000000000 0xb5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .debug_line 0x0000000000000000 0x160 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .debug_str 0x0000000000000000 0x53f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_entrypoint.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_entrypoint.o + .bss 0x0000000000000000 0x1000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_entrypoint.o + .rodata 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_entrypoint.o + +Memory Configuration + +Name Origin Length Attributes +RAM 0x000000003bc00000 0x0000000000019000 xrw +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + 0x000000003bc00000 . = 0x3bc00000 + 0x0000000000000001 ASSERT ((. == ALIGN (0x1000)), BL2_BASE address is not aligned on a page boundary.) + +ro 0x000000003bc00000 0xb74c + 0x000000003bc00000 __RO_START__ = . + *bl2_entrypoint.o(.text*) + .text.init 0x000000003bc00000 0x14c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_entrypoint.o + 0x000000003bc00000 bl2_entrypoint + *(.vectors) + *(.text*) + .text.sync_cache + 0x000000003bc0014c 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + 0x000000003bc0014c sync_cache + .text.flush_dcache_range + 0x000000003bc00156 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + 0x000000003bc00156 flush_dcache_range + .text.trig_simulation_timer + 0x000000003bc0017a 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + 0x000000003bc0017a trig_simulation_timer + .text.udelay 0x000000003bc0018a 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + 0x000000003bc0018a udelay + .text.mdelay 0x000000003bc001b4 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + 0x000000003bc001b4 mdelay + .text.get_timer + 0x000000003bc001be 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + 0x000000003bc001be get_timer + .text.get_random_from_timer + 0x000000003bc001e2 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + 0x000000003bc001e2 get_random_from_timer + .text.read_count_tick + 0x000000003bc0020c 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + 0x000000003bc0020c read_count_tick + .text.jump_to_monitor + 0x000000003bc0021a 0x78 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + 0x000000003bc0021a jump_to_monitor + .text.jump_to_loader_2nd + 0x000000003bc00292 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + 0x000000003bc00292 jump_to_loader_2nd + .text._uart_putc + 0x000000003bc00294 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + 0x000000003bc00294 _uart_putc + .text.console_putc + 0x000000003bc002a4 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + 0x000000003bc002a4 console_putc + .text.console_flush + 0x000000003bc002c2 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + 0x000000003bc002c2 console_flush + .text.unsigned_num_print + 0x000000003bc002d6 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .text.tf_printf + 0x000000003bc00358 0x19a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + 0x000000003bc00358 tf_printf + .text.__system_reset + 0x000000003bc004f2 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + 0x000000003bc004f2 __system_reset + .text.panic_handler + 0x000000003bc005ba 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + 0x000000003bc005ba panic_handler + .text.reset_c906l + 0x000000003bc005ec 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + 0x000000003bc005ec reset_c906l + .text.setup_dl_flag + 0x000000003bc00636 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + 0x000000003bc00636 setup_dl_flag + .text.sys_switch_all_to_pll + 0x000000003bc00680 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + 0x000000003bc00680 sys_switch_all_to_pll + .text.sys_pll_nd + 0x000000003bc0068e 0x18e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + 0x000000003bc0068e sys_pll_nd + .text.sys_pll_init + 0x000000003bc0081c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + 0x000000003bc0081c sys_pll_init + .text.switch_rtc_mode_1st_stage + 0x000000003bc00832 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + 0x000000003bc00832 switch_rtc_mode_1st_stage + .text.switch_rtc_mode_2nd_stage + 0x000000003bc00834 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + 0x000000003bc00834 switch_rtc_mode_2nd_stage + .text.set_rtc_en_registers + 0x000000003bc00878 0xbc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + 0x000000003bc00878 set_rtc_en_registers + .text.init_comm_info + 0x000000003bc00934 0x6e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + 0x000000003bc00934 init_comm_info + .text.dec_verify_image + 0x000000003bc009a2 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + 0x000000003bc009a2 dec_verify_image + .text.ntostr 0x000000003bc009a6 0x7a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + 0x000000003bc009a6 ntostr + .text.memset 0x000000003bc00a20 0x5a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + 0x000000003bc00a20 memset + .text.memcpy 0x000000003bc00a7a 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + 0x000000003bc00a7a memcpy + .text.memmove 0x000000003bc00ada 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + 0x000000003bc00ada memmove + .text.putchar_l + 0x000000003bc00afa 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + 0x000000003bc00afa putchar_l + .text.strcmp 0x000000003bc00b4c 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o + 0x000000003bc00b4c strcmp + .text.strlen 0x000000003bc00b68 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o + 0x000000003bc00b68 strlen + .text.gpio_in_value + 0x000000003bc00b7a 0x7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + 0x000000003bc00b7a gpio_in_value + .text.usb_id_det + 0x000000003bc00bf6 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + 0x000000003bc00bf6 usb_id_det + .text.read_time_ms + 0x000000003bc00c14 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .text.load_image_by_usb + 0x000000003bc00c2e 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + 0x000000003bc00c2e load_image_by_usb + .text.load_param2 + 0x000000003bc00c6e 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + 0x000000003bc00c6e load_param2 + .text.load_ddr_param + 0x000000003bc00d3e 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + 0x000000003bc00d3e load_ddr_param + .text.load_ddr + 0x000000003bc00dec 0xc6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + 0x000000003bc00dec load_ddr + .text.load_blcp_2nd + 0x000000003bc00eb2 0x166 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + 0x000000003bc00eb2 load_blcp_2nd + .text.load_monitor + 0x000000003bc01018 0x126 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + 0x000000003bc01018 load_monitor + .text.load_loader_2nd + 0x000000003bc0113e 0x208 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + 0x000000003bc0113e load_loader_2nd + .text.load_rest + 0x000000003bc01346 0xe6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + 0x000000003bc01346 load_rest + .text.bl2_main + 0x000000003bc0142c 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + 0x000000003bc0142c bl2_main + .text.SzFree 0x000000003bc014c4 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .text.SzAlloc 0x000000003bc014c6 0x42 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .text.decompress_lzma + 0x000000003bc01508 0xe8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + 0x000000003bc01508 decompress_lzma + .text.LZ4_malloc + 0x000000003bc015f0 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + 0x000000003bc015f0 LZ4_malloc + .text.LZ4_calloc + 0x000000003bc015f6 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + 0x000000003bc015f6 LZ4_calloc + .text.LZ4_free + 0x000000003bc0161e 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + 0x000000003bc0161e LZ4_free + .text.decompress_lz4 + 0x000000003bc01620 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + 0x000000003bc01620 decompress_lz4 + .text.decompress + 0x000000003bc016ce 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + 0x000000003bc016ce decompress + .text.DWC2_UncachedRead32 + 0x000000003bc0174c 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + 0x000000003bc0174c DWC2_UncachedRead32 + .text.DWC2_UncachedWrite32 + 0x000000003bc01752 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + 0x000000003bc01752 DWC2_UncachedWrite32 + .text.resume 0x000000003bc01756 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .text.requestMemAlloc + 0x000000003bc01758 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .text.requestMemFree + 0x000000003bc01790 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .text.acm_complete_set_line_coding + 0x000000003bc01792 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .text.reset 0x000000003bc017ae 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .text.disconnect + 0x000000003bc017c2 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .text.unbind 0x000000003bc017f0 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .text.bind 0x000000003bc01816 0x42 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .text.get_unicode_string + 0x000000003bc01858 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .text.bulkOutCmpl + 0x000000003bc018aa 0x234 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .text.getDescAcm + 0x000000003bc01ade 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .text.reqComplete + 0x000000003bc01b3a 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .text.bulkInCmpl + 0x000000003bc01b64 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .text.setup 0x000000003bc01bb4 0x442 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .text.suspend 0x000000003bc01ff6 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .text.convert_buf_addr + 0x000000003bc01ff8 0xa2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + 0x000000003bc01ff8 convert_buf_addr + .text.print_buf_addr + 0x000000003bc0209a 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + 0x000000003bc0209a print_buf_addr + .text.AcmIsr 0x000000003bc0216a 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + 0x000000003bc0216a AcmIsr + .text.acm_app_init + 0x000000003bc02170 0x138 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + 0x000000003bc02170 acm_app_init + .text.usb_vbus_det + 0x000000003bc022a8 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + 0x000000003bc022a8 usb_vbus_det + .text.get_usb_polling_timeout_value + 0x000000003bc022b4 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + 0x000000003bc022b4 get_usb_polling_timeout_value + .text.AcmApp 0x000000003bc022e4 0x478 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + 0x000000003bc022e4 AcmApp + .text.dwc2_fifo_status + 0x000000003bc0275c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .text.dwc2_free_request + 0x000000003bc02772 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .text.pullup 0x000000003bc027ac 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .text.dwc2_alloc_request + 0x000000003bc027f4 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .text.dwc2_ep_enable + 0x000000003bc0282c 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .text.dwc2_fifo_flush + 0x000000003bc028cc 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .text.dwc2_log_write + 0x000000003bc028ce 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + 0x000000003bc028ce dwc2_log_write + .text.dwc2_get_ep0_name + 0x000000003bc028d0 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + 0x000000003bc028d0 dwc2_get_ep0_name + .text.udc_reinit + 0x000000003bc028da 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + 0x000000003bc028da udc_reinit + .text.dwc2_done + 0x000000003bc02920 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + 0x000000003bc02920 dwc2_done + .text.dwc2_dequeue + 0x000000003bc02960 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .text.dwc2_nuke + 0x000000003bc029b4 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + 0x000000003bc029b4 dwc2_nuke + .text.usb_gadget_unregister_driver + 0x000000003bc029e2 0x9a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + 0x000000003bc029e2 usb_gadget_unregister_driver + .text.dwc2_hsotg_set_bit + 0x000000003bc02a7c 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + 0x000000003bc02a7c dwc2_hsotg_set_bit + .text.dwc2_hsotg_clear_bit + 0x000000003bc02a9e 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + 0x000000003bc02a9e dwc2_hsotg_clear_bit + .text.wakeup 0x000000003bc02ac2 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .text.dwc2_hsotg_wait_bit_set + 0x000000003bc02afe 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + 0x000000003bc02afe dwc2_hsotg_wait_bit_set + .text.dwc2_hsotg_txfifo_flush.constprop.0 + 0x000000003bc02b44 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .text.kill_all_requests.isra.0 + 0x000000003bc02bd4 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .text.dwc2_disconnect + 0x000000003bc02c32 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + 0x000000003bc02c32 dwc2_disconnect + .text.dwc2_hsotg_init_fifo.constprop.0 + 0x000000003bc02c88 0xda /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .text._dwc2_ep_disable.isra.0 + 0x000000003bc02d62 0x1a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .text.dwc2_ep_disable + 0x000000003bc02f08 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .text.dwc2_reconfig_usbd + 0x000000003bc02f28 0x28e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + 0x000000003bc02f28 dwc2_reconfig_usbd + .text.usb_gadget_register_driver + 0x000000003bc031b6 0x156 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + 0x000000003bc031b6 usb_gadget_register_driver + .text.dwc2_phy_to_log_ep + 0x000000003bc0330c 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + 0x000000003bc0330c dwc2_phy_to_log_ep + .text.dwc2_udc_probe + 0x000000003bc0331e 0x150 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + 0x000000003bc0331e dwc2_udc_probe + .text.usb_gadget_handle_interrupts + 0x000000003bc0346e 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + 0x000000003bc0346e usb_gadget_handle_interrupts + .text.set_max_pktsize + 0x000000003bc034ba 0x8e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep_clear_stall + 0x000000003bc03548 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep_set_stall + 0x000000003bc035a6 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_ep0_complete_out + 0x000000003bc03608 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep0_zlp + 0x000000003bc03688 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep0_set_stall.isra.0 + 0x000000003bc03706 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .text.setdma_rx.isra.0 + 0x000000003bc0376e 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .text.complete_rx + 0x000000003bc03818 0xfc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_pre_setup + 0x000000003bc03914 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03914 dwc2_udc_pre_setup + .text.dwc2_ep_fifo_write + 0x000000003bc0392a 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc0392a dwc2_ep_fifo_write + .text.setdma_tx + 0x000000003bc0396e 0x15c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_ep_fifo_read + 0x000000003bc03aca 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03aca dwc2_ep_fifo_read + .text.dwc2_write_fifo_ep0 + 0x000000003bc03b0e 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03b0e dwc2_write_fifo_ep0 + .text.dwc2_set_address + 0x000000003bc03b5a 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03b5a dwc2_set_address + .text.dwc2_ep0_read + 0x000000003bc03ba2 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03ba2 dwc2_ep0_read + .text.dwc2_ep0_write + 0x000000003bc03bca 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03bca dwc2_ep0_write + .text.dwc2_udc_set_nak + 0x000000003bc03c0a 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03c0a dwc2_udc_set_nak + .text.dwc2_udc_set_halt + 0x000000003bc03c4a 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03c4a dwc2_udc_set_halt + .text.dwc2_udc_ep_activate + 0x000000003bc03cac 0xb2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03cac dwc2_udc_ep_activate + .text.dwc2_handle_ep0 + 0x000000003bc03d5e 0x346 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03d5e dwc2_handle_ep0 + .text.dwc2_udc_irq + 0x000000003bc040a4 0x540 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc040a4 dwc2_udc_irq + .text.dwc2_ep0_kick + 0x000000003bc045e4 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc045e4 dwc2_ep0_kick + .text.dwc2_queue + 0x000000003bc045fc 0xd8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc045fc dwc2_queue + .text.usb_polling + 0x000000003bc046d4 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + 0x000000003bc046d4 usb_polling + .text.crc16_ccitt + 0x000000003bc04714 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + 0x000000003bc04714 crc16_ccitt + .text.LzmaDec_WriteRem + 0x000000003bc04746 0x72 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .text.LzmaDec_DecodeReal2 + 0x000000003bc047b8 0x138a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .text.LzmaDec_TryDummy + 0x000000003bc05b42 0x4e8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .text.LzmaDec_Init + 0x000000003bc0602a 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + 0x000000003bc0602a LzmaDec_Init + .text.LzmaDec_DecodeToDic + 0x000000003bc0603e 0x27c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + 0x000000003bc0603e LzmaDec_DecodeToDic + .text.LzmaDec_FreeProbs + 0x000000003bc062ba 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + 0x000000003bc062ba LzmaDec_FreeProbs + .text.LzmaDec_AllocateProbs2.isra.0 + 0x000000003bc062d6 0x66 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .text.LzmaProps_Decode + 0x000000003bc0633c 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + 0x000000003bc0633c LzmaProps_Decode + .text.LzmaDec_AllocateProbs + 0x000000003bc06386 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + 0x000000003bc06386 LzmaDec_AllocateProbs + .text.LzmaDecode + 0x000000003bc063b6 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + 0x000000003bc063b6 LzmaDecode + .text.LZ4F_readLE32 + 0x000000003bc06460 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_decompress_safe_withSmallPrefix + 0x000000003bc06484 0x276 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_updateDict + 0x000000003bc066fa 0x110 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4_decompress_safe + 0x000000003bc0680a 0x26e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + 0x000000003bc0680a LZ4_decompress_safe + .text.LZ4_decompress_safe_withPrefix64k + 0x000000003bc06a78 0x26a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + 0x000000003bc06a78 LZ4_decompress_safe_withPrefix64k + .text.LZ4_decompress_safe_forceExtDict + 0x000000003bc06ce2 0x316 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + 0x000000003bc06ce2 LZ4_decompress_safe_forceExtDict + .text.LZ4_decompress_safe_usingDict + 0x000000003bc06ff8 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + 0x000000003bc06ff8 LZ4_decompress_safe_usingDict + .text.LZ4F_isError + 0x000000003bc0701e 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + 0x000000003bc0701e LZ4F_isError + .text.LZ4F_getBlockSize + 0x000000003bc0702a 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + 0x000000003bc0702a LZ4F_getBlockSize + .text.LZ4F_decodeHeader + 0x000000003bc07048 0x1a4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .text.LZ4F_createDecompressionContext + 0x000000003bc071ec 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + 0x000000003bc071ec LZ4F_createDecompressionContext + .text.LZ4F_decompress + 0x000000003bc0721c 0x7dc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + 0x000000003bc0721c LZ4F_decompress + .text.XXH32_avalanche + 0x000000003bc079f8 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .text.XXH_read32 + 0x000000003bc07a24 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .text.XXH32_finalize.constprop.0 + 0x000000003bc07a3a 0x33a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .text.XXH32 0x000000003bc07d74 0x1c6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + 0x000000003bc07d74 XXH32 + .text.XXH32_reset + 0x000000003bc07f3a 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + 0x000000003bc07f3a XXH32_reset + .text.XXH32_update + 0x000000003bc07f90 0x1d2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + 0x000000003bc07f90 XXH32_update + .text.XXH32_digest + 0x000000003bc08162 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + 0x000000003bc08162 XXH32_digest + .text.ddr_init + 0x000000003bc081a2 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + 0x000000003bc081a2 ddr_init + .text.read_ddr_pkg_info + 0x000000003bc081d6 0x22e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + 0x000000003bc081d6 read_ddr_pkg_info + .text.get_ddr_vendor + 0x000000003bc08404 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + 0x000000003bc08404 get_ddr_vendor + .text.axi_mon_start_all + 0x000000003bc0840e 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + 0x000000003bc0840e axi_mon_start_all + .text.ddr_sys_bring_up + 0x000000003bc0845e 0x224 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + 0x000000003bc0845e ddr_sys_bring_up + .text.cvx16_bist_wr_prbs_init + 0x000000003bc08682 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc08682 cvx16_bist_wr_prbs_init + .text.cvx16_bist_wr_sram_init + 0x000000003bc086d0 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc086d0 cvx16_bist_wr_sram_init + .text.cvx16_bist_wrlvl_init + 0x000000003bc08730 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc08730 cvx16_bist_wrlvl_init + .text.cvx16_bist_rdglvl_init + 0x000000003bc08776 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc08776 cvx16_bist_rdglvl_init + .text.cvx16_bist_rdlvl_init + 0x000000003bc087bc 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc087bc cvx16_bist_rdlvl_init + .text.cvx16_bist_wdqlvl_init + 0x000000003bc088a6 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc088a6 cvx16_bist_wdqlvl_init + .text.cvx16_bist_wdmlvl_init + 0x000000003bc08956 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc08956 cvx16_bist_wdmlvl_init + .text.cvx16_bist_start_check + 0x000000003bc089b6 0x6a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc089b6 cvx16_bist_start_check + .text.cvx16_rdvld_train + 0x000000003bc08a20 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc08a20 cvx16_rdvld_train + .text.cvx16_synp_mrw + 0x000000003bc08ac6 0x74 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc08ac6 cvx16_synp_mrw + .text.cvx16_dll_cal + 0x000000003bc08b3a 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc08b3a cvx16_dll_cal + .text.cvx16_clk_normal + 0x000000003bc08ba2 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc08ba2 cvx16_clk_normal + .text.cvx16_clk_div2 + 0x000000003bc08bfe 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc08bfe cvx16_clk_div2 + .text.cvx16_clk_div40 + 0x000000003bc08c14 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc08c14 cvx16_clk_div40 + .text.cvx16_chg_pll_freq + 0x000000003bc08c2a 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc08c2a cvx16_chg_pll_freq + .text.cvx16_ddr_phy_power_on_seq1 + 0x000000003bc08d22 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc08d22 cvx16_ddr_phy_power_on_seq1 + .text.cvx16_ddr_phy_power_on_seq2 + 0x000000003bc08d66 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc08d66 cvx16_ddr_phy_power_on_seq2 + .text.cvx16_ddr_phy_power_on_seq3 + 0x000000003bc08dae 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc08dae cvx16_ddr_phy_power_on_seq3 + .text.cvx16_wait_for_dfi_init_complete + 0x000000003bc08de8 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc08de8 cvx16_wait_for_dfi_init_complete + .text.cvx16_polling_dfi_init_start + 0x000000003bc08e20 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc08e20 cvx16_polling_dfi_init_start + .text.cvx16_set_dfi_init_complete + 0x000000003bc08e3a 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc08e3a cvx16_set_dfi_init_complete + .text.cvx16_INT_ISR_08 + 0x000000003bc08e62 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc08e62 cvx16_INT_ISR_08 + .text.cvx16_polling_synp_normal_mode + 0x000000003bc08e8e 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc08e8e cvx16_polling_synp_normal_mode + .text.cvx16_dfi_ca_park_prbs + 0x000000003bc08eaa 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc08eaa cvx16_dfi_ca_park_prbs + .text.cvx16_setting_check + 0x000000003bc08f12 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc08f12 cvx16_setting_check + .text.cvx16_set_dfi_init_start + 0x000000003bc08f32 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc08f32 cvx16_set_dfi_init_start + .text.cvx16_pll_init + 0x000000003bc08f58 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc08f58 cvx16_pll_init + .text.cvx16_clk_gating_disable + 0x000000003bc08ffe 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc08ffe cvx16_clk_gating_disable + .text.cvx16_clk_gating_enable + 0x000000003bc09048 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc09048 cvx16_clk_gating_enable + .text.cvx16_wrlvl_req + 0x000000003bc090b8 0x1d6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc090b8 cvx16_wrlvl_req + .text.cvx16_rdglvl_req + 0x000000003bc0928e 0x13e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc0928e cvx16_rdglvl_req + .text.cvx16_rdlvl_req + 0x000000003bc093cc 0x1ea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc093cc cvx16_rdlvl_req + .text.cvx16_wdqlvl_req + 0x000000003bc095b6 0x182 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc095b6 cvx16_wdqlvl_req + .text.cvx16_en_rec_vol_mode + 0x000000003bc09738 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc09738 cvx16_en_rec_vol_mode + .text.ctrl_init_detect_dram_size + 0x000000003bc0973a 0x11a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc0973a ctrl_init_detect_dram_size + .text.pll_init + 0x000000003bc09854 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + 0x000000003bc09854 pll_init + .text.cvx16_pinmux + 0x000000003bc098d8 0x33a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + 0x000000003bc098d8 cvx16_pinmux + .text.cvx16_dram_cap_check + 0x000000003bc09c12 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + 0x000000003bc09c12 cvx16_dram_cap_check + .text.ddrc_init + 0x000000003bc09c14 0x224 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + 0x000000003bc09c14 ddrc_init + .text.ctrl_init_high_patch + 0x000000003bc09e38 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + 0x000000003bc09e38 ctrl_init_high_patch + .text.ctrl_init_low_patch + 0x000000003bc09e66 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + 0x000000003bc09e66 ctrl_init_low_patch + .text.ctrl_init_update_by_dram_size + 0x000000003bc09e94 0xb2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + 0x000000003bc09e94 ctrl_init_update_by_dram_size + .text.phy_init + 0x000000003bc09f46 0x3b6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + 0x000000003bc09f46 phy_init + *(.rodata*) + *fill* 0x000000003bc0a2fc 0x4 + .rodata.build_message + 0x000000003bc0a300 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o + 0x000000003bc0a300 build_message + *fill* 0x000000003bc0a31a 0x6 + .rodata.version_string + 0x000000003bc0a320 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o + 0x000000003bc0a320 version_string + .rodata.jump_to_monitor.str1.8 + 0x000000003bc0a330 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + *fill* 0x000000003bc0a356 0x2 + .rodata.tf_printf.str1.8 + 0x000000003bc0a358 0x3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + *fill* 0x000000003bc0a35b 0x1 + .rodata.tf_printf + 0x000000003bc0a35c 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .rodata.__system_reset.str1.8 + 0x000000003bc0a3b8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + *fill* 0x000000003bc0a3ca 0x6 + .rodata.panic_handler.str1.8 + 0x000000003bc0a3d0 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + *fill* 0x000000003bc0a3e6 0x2 + .rodata.reset_c906l.str1.8 + 0x000000003bc0a3e8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .rodata.sys_pll_nd.str1.8 + 0x000000003bc0a3f0 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + *fill* 0x000000003bc0a3f9 0x7 + .rodata.sys_pll_init.str1.8 + 0x000000003bc0a400 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + *fill* 0x000000003bc0a409 0x7 + .rodata.switch_rtc_mode_2nd_stage.str1.8 + 0x000000003bc0a410 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + *fill* 0x000000003bc0a424 0x4 + .rodata.set_rtc_en_registers.str1.8 + 0x000000003bc0a428 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + *fill* 0x000000003bc0a454 0x4 + .rodata.cst8 0x000000003bc0a458 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .rodata.hex2ascii_data + 0x000000003bc0a488 0x25 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + 0x000000003bc0a488 hex2ascii_data + *fill* 0x000000003bc0a4ad 0x3 + .rodata.cst8 0x000000003bc0a4b0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .rodata.load_image_by_usb.str1.8 + 0x000000003bc0a4b8 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + *fill* 0x000000003bc0a4d2 0x6 + .rodata.load_param2.str1.8 + 0x000000003bc0a4d8 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .rodata.load_ddr_param.str1.8 + 0x000000003bc0a530 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .rodata.load_ddr.str1.8 + 0x000000003bc0a578 0x4d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + *fill* 0x000000003bc0a5c5 0x3 + .rodata.load_blcp_2nd.str1.8 + 0x000000003bc0a5c8 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .rodata.load_monitor.str1.8 + 0x000000003bc0a6a8 0xcf /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + *fill* 0x000000003bc0a777 0x1 + .rodata.load_loader_2nd.str1.8 + 0x000000003bc0a778 0xce /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + *fill* 0x000000003bc0a846 0x2 + .rodata.load_rest.str1.8 + 0x000000003bc0a848 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .rodata.bl2_main.str1.8 + 0x000000003bc0a8a8 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + *fill* 0x000000003bc0a92c 0x4 + .rodata.cst8 0x000000003bc0a930 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .rodata.SzAlloc.str1.8 + 0x000000003bc0a938 0x1f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + *fill* 0x000000003bc0a957 0x1 + .rodata.decompress_lzma.str1.8 + 0x000000003bc0a958 0x92 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + *fill* 0x000000003bc0a9ea 0x6 + .rodata.decompress_lz4.str1.8 + 0x000000003bc0a9f0 0x72 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + *fill* 0x000000003bc0aa62 0x6 + .rodata.decompress.str1.8 + 0x000000003bc0aa68 0x31 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + *fill* 0x000000003bc0aa99 0x7 + .rodata.__func__.0 + 0x000000003bc0aaa0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .rodata.__func__.1 + 0x000000003bc0aaa8 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .rodata.reset.str1.8 + 0x000000003bc0aab8 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0aace 0x2 + .rodata.unbind.str1.8 + 0x000000003bc0aad0 0xd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0aadd 0x3 + .rodata.bind.str1.8 + 0x000000003bc0aae0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .rodata.bulkOutCmpl.str1.8 + 0x000000003bc0aae8 0x61 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0ab49 0x7 + .rodata.reqComplete.str1.8 + 0x000000003bc0ab50 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0ab65 0x3 + .rodata.setup.str1.8 + 0x000000003bc0ab68 0xd2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0ac3a 0x2 + .rodata.setup 0x000000003bc0ac3c 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .rodata.print_buf_addr.str1.8 + 0x000000003bc0ac78 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0ad62 0x6 + .rodata.acm_app_init.str1.8 + 0x000000003bc0ad68 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0ad7d 0x3 + .rodata.AcmApp.str1.8 + 0x000000003bc0ad80 0x10b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0ae8b 0x5 + .rodata.str1.8 + 0x000000003bc0ae90 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0ae94 0x4 + .rodata.__func__.0 + 0x000000003bc0ae98 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0ae9d 0x3 + .rodata.__func__.1 + 0x000000003bc0aea0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0aea7 0x1 + .rodata.__func__.4 + 0x000000003bc0aea8 0xb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0aeb3 0x5 + .rodata.__func__.5 + 0x000000003bc0aeb8 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0aebe 0x2 + .rodata.dwc2_free_request.str1.8 + 0x000000003bc0aec0 0x23 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0aee3 0x5 + .rodata.dwc2_hsotg_txfifo_flush.constprop.0.str1.8 + 0x000000003bc0aee8 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0af32 0x6 + .rodata.dwc2_hsotg_init_fifo.constprop.0.str1.8 + 0x000000003bc0af38 0x2d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0af65 0x3 + .rodata._dwc2_ep_disable.isra.0.str1.8 + 0x000000003bc0af68 0x77 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0afdf 0x1 + .rodata.dwc2_reconfig_usbd.str1.8 + 0x000000003bc0afe0 0x71 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b051 0x7 + .rodata.dwc2_udc_probe.str1.8 + 0x000000003bc0b058 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b0a6 0x2 + .rodata.__func__.0 + 0x000000003bc0b0a8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b0ba 0x6 + .rodata.__func__.1 + 0x000000003bc0b0c0 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b0d1 0x7 + .rodata.__func__.2 + 0x000000003bc0b0d8 0x13 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b0eb 0x5 + .rodata.__func__.3 + 0x000000003bc0b0f0 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .rodata.__func__.4 + 0x000000003bc0b108 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b11d 0x3 + .rodata.driver_name + 0x000000003bc0b120 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b129 0x7 + .rodata.dwc2_udc_ops + 0x000000003bc0b130 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .rodata.ep0name + 0x000000003bc0b178 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b184 0x4 + .rodata.ep1name + 0x000000003bc0b188 0xb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b193 0x5 + .rodata.ep2name + 0x000000003bc0b198 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b1a4 0x4 + .rodata.ep3name + 0x000000003bc0b1a8 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b1b2 0x6 + .rodata.dwc2_handle_ep0.str1.8 + 0x000000003bc0b1b8 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .rodata.dwc2_handle_ep0 + 0x000000003bc0b1cc 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + *fill* 0x000000003bc0b1fc 0x4 + .rodata.dwc2_udc_irq.str1.8 + 0x000000003bc0b200 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + *fill* 0x000000003bc0b212 0x6 + .rodata.usb_polling.str1.8 + 0x000000003bc0b218 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + *fill* 0x000000003bc0b229 0x7 + .rodata.crc16_tab + 0x000000003bc0b230 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .rodata.LZ4F_decompress + 0x000000003bc0b430 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + *fill* 0x000000003bc0b46c 0x4 + .rodata.blockSizes.0 + 0x000000003bc0b470 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .rodata.dec64table + 0x000000003bc0b490 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .rodata.inc32table + 0x000000003bc0b4b0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .rodata.XXH32_finalize.constprop.0 + 0x000000003bc0b4d0 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + *fill* 0x000000003bc0b50c 0x4 + .rodata.ddr_init.str1.8 + 0x000000003bc0b510 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + *fill* 0x000000003bc0b536 0x2 + .rodata.read_ddr_pkg_info.str1.8 + 0x000000003bc0b538 0xe2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + *fill* 0x000000003bc0b61a 0x2 + .rodata.read_ddr_pkg_info + 0x000000003bc0b61c 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + *fill* 0x000000003bc0b664 0x4 + .rodata.ddr_sys_bring_up.str1.8 + 0x000000003bc0b668 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + 0x81 (size before relaxing) + .rodata.cst8 0x000000003bc0b6f0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .rodata.cvx16_pinmux + 0x000000003bc0b710 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .rodata.ctrl_init_update_by_dram_size + 0x000000003bc0b738 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + 0x000000003bc0b74c __RO_END__ = . + +.rela.dyn 0x000000003bc0b750 0x0 + .rela.text.setup_dl_flag + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o + .rela.text.load_param2 + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o + .rela.text.load_ddr_param + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o + .rela.text.load_ddr + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o + .rela.text.load_blcp_2nd + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o + .rela.text.load_monitor + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o + .rela.text.load_loader_2nd + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o + .rela.text.load_rest + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o + .rela.text.init + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o + +.data 0x000000003bc0b74c 0x2c4 + 0x000000003bc0b750 . = ALIGN (0x10) + *fill* 0x000000003bc0b74c 0x4 + 0x000000003bc0b750 __DATA_START__ = . + *(.data*) + .data.time_records + 0x000000003bc0b750 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + 0x000000003bc0b750 time_records + .data.ConfDesc + 0x000000003bc0b758 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0b761 0x7 + .data.acm_buf 0x000000003bc0b768 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .data.acm_call_mgmt_descriptor + 0x000000003bc0b770 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0b775 0x3 + .data.acm_control_interface_desc + 0x000000003bc0b778 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0b781 0x7 + .data.acm_data_interface_desc + 0x000000003bc0b788 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0b791 0x7 + .data.acm_descriptor + 0x000000003bc0b798 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0b79c 0x4 + .data.acm_fs_in_desc + 0x000000003bc0b7a0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0b7a7 0x1 + .data.acm_fs_notify_desc + 0x000000003bc0b7a8 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0b7af 0x1 + .data.acm_fs_out_desc + 0x000000003bc0b7b0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0b7b7 0x1 + .data.acm_header_desc + 0x000000003bc0b7b8 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0b7bd 0x3 + .data.acm_hs_in_desc + 0x000000003bc0b7c0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0b7c7 0x1 + .data.acm_hs_notify_desc + 0x000000003bc0b7c8 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0b7cf 0x1 + .data.acm_hs_out_desc + 0x000000003bc0b7d0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0b7d7 0x1 + .data.acm_union_desc + 0x000000003bc0b7d8 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0b7dd 0x3 + .data.bosDesc 0x000000003bc0b7e0 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0b7e5 0x3 + .data.bulkBufAlloc + 0x000000003bc0b7e8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .data.capabilityExtDesc + 0x000000003bc0b7f0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0b7f7 0x1 + .data.cb0_buf 0x000000003bc0b7f8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .data.cb1_buf 0x000000003bc0b800 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .data.cb2_buf 0x000000003bc0b808 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .data.cmdBufAlloc + 0x000000003bc0b810 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .data.descriptorsFs + 0x000000003bc0b818 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .data.descriptorsHs + 0x000000003bc0b868 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .data.devHsDesc + 0x000000003bc0b8b8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0b8ca 0x6 + .data.drv_obj 0x000000003bc0b8d0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .data.ep0BuffAlloc + 0x000000003bc0b920 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .data.g_driver + 0x000000003bc0b928 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .data.handler 0x000000003bc0b980 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .data.languageDesc + 0x000000003bc0b988 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0b98c 0x4 + .data.qualifierDesc + 0x000000003bc0b990 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc0b99a 0x6 + .data.rsp_buf 0x000000003bc0b9a0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .data.setup_buf + 0x000000003bc0b9a8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .data.dwc2_ep_ops + 0x000000003bc0b9b0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .data.ep0_fifo_size + 0x000000003bc0ba00 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .data.ep_fifo_size + 0x000000003bc0ba04 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .data.cv_usb_vid + 0x000000003bc0ba08 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + 0x000000003bc0ba08 cv_usb_vid + *fill* 0x000000003bc0ba0a 0x2 + .data.ddr_data_rate + 0x000000003bc0ba0c 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + 0x000000003bc0ba0c ddr_data_rate + 0x000000003bc0ba10 . = ALIGN (0x10) + 0x000000003bc0ba10 __DATA_END__ = . + +stacks 0x000000003bc0ba10 0x2030 + 0x000000003bc0ba40 . = ALIGN (0x40) + *fill* 0x000000003bc0ba10 0x30 + 0x000000003bc0ba40 __STACKS_START__ = . + 0x000000003bc0da40 . = (. + 0x2000) + *fill* 0x000000003bc0ba40 0x2000 + 0x000000003bc0da40 . = ALIGN (0x40) + 0x000000003bc0da40 __STACKS_END__ = . + +.bss 0x000000003bc0dc00 0x5c10 + 0x000000003bc0dc00 . = ALIGN (0x10) + 0x000000003bc0dc00 __BSS_START__ = . + *(SORT_BY_ALIGNMENT(.bss*)) + .bss.fip_param2 + 0x000000003bc0dc00 0x1000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .bss.sram_union_buf + 0x000000003bc0ec00 0x4000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .bss.acm_bufArr + 0x000000003bc12c00 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + 0x000000003bc12c00 acm_bufArr + .bss.bulkBufAllocArr + 0x000000003bc12c80 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + 0x000000003bc12c80 bulkBufAllocArr + .bss.cb0_bufArr + 0x000000003bc12e80 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + 0x000000003bc12e80 cb0_bufArr + .bss.cb1_bufArr + 0x000000003bc12f00 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + 0x000000003bc12f00 cb1_bufArr + .bss.cb2_bufArr + 0x000000003bc12f80 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + 0x000000003bc12f80 cb2_bufArr + .bss.cmdBufAllocArr + 0x000000003bc13000 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + 0x000000003bc13000 cmdBufAllocArr + .bss.ep0BuffAllocArr + 0x000000003bc13200 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + 0x000000003bc13200 ep0BuffAllocArr + .bss.handlerArr + 0x000000003bc13280 0x400 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + 0x000000003bc13280 handlerArr + .bss.rsp_bufArr + 0x000000003bc13680 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + 0x000000003bc13680 rsp_bufArr + *fill* 0x000000003bc13690 0x30 + .bss.setup_bufArr + 0x000000003bc136c0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + 0x000000003bc136c0 setup_bufArr + .bss.fw_dynamic_info + 0x000000003bc136c8 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .bss.comp_alloc_buf + 0x000000003bc136f8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .bss.comp_alloc_size + 0x000000003bc13700 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .bss.acm 0x000000003bc13708 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + 0x000000003bc13708 acm + .bss.bulkBuf 0x000000003bc13710 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .bss.bulkInReq + 0x000000003bc13718 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .bss.bulkOutReq + 0x000000003bc13720 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .bss.cmdBuf 0x000000003bc13728 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .bss.ep0Buff 0x000000003bc13730 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .bss.ep0Req 0x000000003bc13738 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .bss.epIn 0x000000003bc13740 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .bss.epOut 0x000000003bc13748 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .bss.fip_buf 0x000000003bc13750 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .bss.productDesc + 0x000000003bc13758 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc13774 0x4 + .bss.serial.2 0x000000003bc13778 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .bss.serialDesc + 0x000000003bc13788 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + *fill* 0x000000003bc137a4 0x4 + .bss.vendorDesc + 0x000000003bc137a8 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .bss.reg 0x000000003bc137b8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + 0x000000003bc137b8 reg + .bss.the_controller + 0x000000003bc137c0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + 0x000000003bc137c0 the_controller + .bss.reg_set 0x000000003bc137c8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + 0x000000003bc137c8 reg_set + .bss.reg_span 0x000000003bc137d0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + 0x000000003bc137d0 reg_span + .bss.reg_step 0x000000003bc137d8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + 0x000000003bc137d8 reg_step + .bss.fip_tx_offset + 0x000000003bc137e0 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .bss.fip_tx_size + 0x000000003bc137e4 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .bss.transfer_size + 0x000000003bc137e8 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .bss.ts 0x000000003bc137ec 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .bss.rddata 0x000000003bc137f0 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x000000003bc137f0 rddata + .bss.dev_freq 0x000000003bc137f4 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + 0x000000003bc137f4 dev_freq + .bss.freq_in 0x000000003bc137f8 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + 0x000000003bc137f8 freq_in + .bss.mod_freq 0x000000003bc137fc 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + 0x000000003bc137fc mod_freq + .bss.tar_freq 0x000000003bc13800 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + 0x000000003bc13800 tar_freq + .bss.ack_idx.6 + 0x000000003bc13804 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .bss.acm_configValue + 0x000000003bc13805 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + 0x000000003bc13805 acm_configValue + .bss.configBreak + 0x000000003bc13806 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .bss.configValue + 0x000000003bc13807 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .bss.flagEnterDL + 0x000000003bc13808 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .bss.flagReboot + 0x000000003bc13809 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .bss.is_serial_patched.3 + 0x000000003bc1380a 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .bss.mem_alloc_cnt + 0x000000003bc1380b 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .bss.ddr_capacity + 0x000000003bc1380c 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + 0x000000003bc1380c ddr_capacity + .bss.ddr_type 0x000000003bc1380d 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + 0x000000003bc1380d ddr_type + .bss.ddr_vendor + 0x000000003bc1380e 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + 0x000000003bc1380e ddr_vendor + .bss.pkg 0x000000003bc1380f 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + 0x000000003bc1380f pkg + *(COMMON) + 0x000000003bc13810 . = ALIGN (0x10) + 0x000000003bc13810 __BSS_END__ = . + 0x000000003bc13810 __BL2_END__ = . + 0x0000000000005c10 __BSS_SIZE__ = SIZEOF (.bss) + 0x0000000000000001 ASSERT ((. <= 0x3bc19000), BL2 image has exceeded its limit.) + 0x0000000004400100 p_rom_api_cryptodma_aes_decrypt = 0x4400100 + 0x0000000004400080 p_rom_api_flash_init = 0x4400080 + 0x0000000004400020 p_rom_api_get_boot_src = 0x4400020 + 0x00000000044000c0 p_rom_api_get_number_of_retries = 0x44000c0 + 0x00000000044000a0 p_rom_api_image_crc = 0x44000a0 + 0x0000000004400060 p_rom_api_load_image = 0x4400060 + 0x0000000004400040 p_rom_api_set_boot_src = 0x4400040 + 0x00000000044000e0 p_rom_api_verify_rsa = 0x44000e0 +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/assert.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_entrypoint.o +OUTPUT(/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2.elf elf64-littleriscv) + +.debug_info 0x0000000000000000 0x6993c + .debug_info 0x0000000000000000 0x89 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o + .debug_info 0x0000000000000089 0x1a1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .debug_info 0x000000000000022a 0x1e4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .debug_info 0x000000000000040e 0x45f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .debug_info 0x000000000000086d 0x3d6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .debug_info 0x0000000000000c43 0x33f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .debug_info 0x0000000000000f82 0x474 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_info 0x00000000000013f6 0x1a24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_info 0x0000000000002e1a 0x622 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .debug_info 0x000000000000343c 0x22a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .debug_info 0x0000000000003666 0x41f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .debug_info 0x0000000000003a85 0x2d6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .debug_info 0x0000000000003d5b 0x13d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o + .debug_info 0x0000000000003e98 0xf6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o + .debug_info 0x0000000000003f8e 0x483 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_info 0x0000000000004411 0x1c6e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_info 0x000000000000607f 0x9df /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_info 0x0000000000006a5e 0x3a2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .debug_info 0x0000000000006e00 0x2fa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_info 0x0000000000009da8 0x3221 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_info 0x000000000000cfc9 0x39b8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_info 0x0000000000010981 0x2b7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_info 0x0000000000010c38 0x279 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .debug_info 0x0000000000010eb1 0x17cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_info 0x000000000001267e 0x285e2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .debug_info 0x000000000003ac60 0x4039 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_info 0x000000000003ec99 0x1a7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .debug_info 0x000000000003ee40 0x516 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .debug_info 0x000000000003f356 0x1135 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_info 0x000000000004048b 0x24b1d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .debug_info 0x0000000000064fa8 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .debug_info 0x0000000000065188 0x11b2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .debug_info 0x000000000006633a 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .debug_info 0x0000000000066402 0x1561 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .debug_info 0x0000000000067963 0x1fab /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .debug_info 0x000000000006990e 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_entrypoint.o + +.debug_abbrev 0x0000000000000000 0x4df7 + .debug_abbrev 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o + .debug_abbrev 0x0000000000000048 0xc1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .debug_abbrev 0x0000000000000109 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .debug_abbrev 0x00000000000001b9 0x1ae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .debug_abbrev 0x0000000000000367 0x197 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .debug_abbrev 0x00000000000004fe 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .debug_abbrev 0x0000000000000685 0x1e5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_abbrev 0x000000000000086a 0x371 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_abbrev 0x0000000000000bdb 0x134 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .debug_abbrev 0x0000000000000d0f 0x11a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .debug_abbrev 0x0000000000000e29 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .debug_abbrev 0x0000000000000f49 0x15d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .debug_abbrev 0x00000000000010a6 0xac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o + .debug_abbrev 0x0000000000001152 0x8c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o + .debug_abbrev 0x00000000000011de 0x202 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_abbrev 0x00000000000013e0 0x42f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_abbrev 0x000000000000180f 0x305 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_abbrev 0x0000000000001b14 0x181 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .debug_abbrev 0x0000000000001c95 0x6f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_abbrev 0x000000000000238b 0x657 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_abbrev 0x00000000000029e2 0x55c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_abbrev 0x0000000000002f3e 0x15a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_abbrev 0x0000000000003098 0x12f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .debug_abbrev 0x00000000000031c7 0x454 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_abbrev 0x000000000000361b 0x69b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .debug_abbrev 0x0000000000003cb6 0x4b9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_abbrev 0x000000000000416f 0xe9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .debug_abbrev 0x0000000000004258 0x17f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .debug_abbrev 0x00000000000043d7 0x203 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_abbrev 0x00000000000045da 0x3e8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .debug_abbrev 0x00000000000049c2 0x9e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .debug_abbrev 0x0000000000004a60 0xd3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .debug_abbrev 0x0000000000004b33 0x69 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .debug_abbrev 0x0000000000004b9c 0x17d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .debug_abbrev 0x0000000000004d19 0xca /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .debug_abbrev 0x0000000000004de3 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_entrypoint.o + +.debug_aranges 0x0000000000000000 0x1e80 + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o + .debug_aranges + 0x0000000000000020 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .debug_aranges + 0x0000000000000070 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .debug_aranges + 0x00000000000000e0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .debug_aranges + 0x0000000000000170 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .debug_aranges + 0x00000000000001b0 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .debug_aranges + 0x0000000000000250 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_aranges + 0x00000000000002a0 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_aranges + 0x0000000000000380 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .debug_aranges + 0x00000000000003b0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .debug_aranges + 0x00000000000003f0 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .debug_aranges + 0x0000000000000470 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .debug_aranges + 0x00000000000004a0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o + .debug_aranges + 0x00000000000004e0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o + .debug_aranges + 0x0000000000000510 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_aranges + 0x0000000000000560 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_aranges + 0x0000000000000630 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_aranges + 0x00000000000006d0 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .debug_aranges + 0x0000000000000770 0x170 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_aranges + 0x00000000000008e0 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_aranges + 0x0000000000000ae0 0x190 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_aranges + 0x0000000000000c70 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_aranges + 0x0000000000000ca0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .debug_aranges + 0x0000000000000cf0 0x100 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_aranges + 0x0000000000000df0 0x7c0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .debug_aranges + 0x00000000000015b0 0x1b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_aranges + 0x0000000000001760 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .debug_aranges + 0x0000000000001790 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .debug_aranges + 0x0000000000001800 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_aranges + 0x0000000000001850 0x4e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .debug_aranges + 0x0000000000001d30 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .debug_aranges + 0x0000000000001d60 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .debug_aranges + 0x0000000000001d90 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .debug_aranges + 0x0000000000001dc0 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .debug_aranges + 0x0000000000001e20 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .debug_aranges + 0x0000000000001e50 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_entrypoint.o + +.debug_macro 0x0000000000000000 0x9b13 + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o + .debug_macro 0x0000000000000011 0x86e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o + .debug_macro 0x000000000000087f 0x115 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .debug_macro 0x0000000000000994 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .debug_macro 0x0000000000001208 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .debug_macro 0x0000000000001477 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .debug_macro 0x0000000000001488 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .debug_macro 0x000000000000160f 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .debug_macro 0x0000000000001655 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .debug_macro 0x000000000000166b 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .debug_macro 0x0000000000001693 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .debug_macro 0x00000000000016af 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .debug_macro 0x000000000000185e 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .debug_macro 0x0000000000001923 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .debug_macro 0x00000000000019a5 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .debug_macro 0x0000000000001bce 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .debug_macro 0x0000000000001c8c 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .debug_macro 0x0000000000001d86 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .debug_macro 0x0000000000001f66 0x186b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .debug_macro 0x00000000000037d1 0x12c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .debug_macro 0x00000000000038fd 0x121 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .debug_macro 0x0000000000003a1e 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .debug_macro 0x0000000000003b4e 0x178 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .debug_macro 0x0000000000003cc6 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .debug_macro 0x0000000000003d92 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .debug_macro 0x0000000000003da8 0x146 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_macro 0x0000000000003eee 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_macro 0x0000000000003f94 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_macro 0x000000000000404c 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_macro 0x000000000000407a 0x14b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_macro 0x00000000000041c5 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_macro 0x000000000000443c 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_macro 0x00000000000044d0 0xe2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_macro 0x00000000000045b2 0x125 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .debug_macro 0x00000000000046d7 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .debug_macro 0x0000000000004754 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .debug_macro 0x000000000000479a 0x9b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .debug_macro 0x0000000000004835 0x11b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .debug_macro 0x0000000000004950 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .debug_macro 0x0000000000004966 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .debug_macro 0x0000000000004982 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .debug_macro 0x0000000000004a40 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o + .debug_macro 0x0000000000004a90 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o + .debug_macro 0x0000000000004ad6 0x1f9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_macro 0x0000000000004ccf 0xa60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_macro 0x000000000000572f 0x872 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_macro 0x0000000000005fa1 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_macro 0x0000000000005fe1 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_macro 0x0000000000005ffd 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_macro 0x000000000000601f 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_macro 0x0000000000006125 0x192 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_macro 0x00000000000062b7 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_macro 0x00000000000062cd 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_macro 0x00000000000062f5 0x13c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_macro 0x0000000000006431 0x16b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_macro 0x000000000000659c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_macro 0x00000000000065b2 0x61 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_macro 0x0000000000006613 0x9d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .debug_macro 0x00000000000066b0 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .debug_macro 0x0000000000006702 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000006902 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000006918 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000006928 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x000000000000693e 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x000000000000697e 0x51d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000006e9b 0x17a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000007015 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x000000000000703d 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x000000000000753a 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x00000000000075ce 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x0000000000007644 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_macro 0x000000000000765a 0x207 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007861 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007877 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x00000000000078c3 0x517 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007dda 0x1cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000007fa7 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_macro 0x00000000000080d7 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .debug_macro 0x0000000000008125 0x308 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_macro 0x000000000000842d 0x2ef /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .debug_macro 0x000000000000871c 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .debug_macro 0x00000000000087c4 0x27 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .debug_macro 0x00000000000087eb 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .debug_macro 0x000000000000884d 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .debug_macro 0x00000000000088ca 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .debug_macro 0x00000000000088f6 0x1ac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_macro 0x0000000000008aa2 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_macro 0x0000000000008af4 0x11b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .debug_macro 0x0000000000008c0f 0xfb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008d0a 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008d26 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008ef9 0x1c4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_macro 0x00000000000090bd 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000009163 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_macro 0x00000000000095fc 0xd7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .debug_macro 0x00000000000096d3 0x110 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .debug_macro 0x00000000000097e3 0xac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .debug_macro 0x000000000000988f 0xa1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000009930 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .debug_macro 0x00000000000099c8 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .debug_macro 0x0000000000009a72 0xa1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + +.debug_line 0x0000000000000000 0x777fd + .debug_line 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o + .debug_line 0x0000000000000028 0x231 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .debug_line 0x0000000000000259 0x351 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .debug_line 0x00000000000005aa 0x4f5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .debug_line 0x0000000000000a9f 0x341 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .debug_line 0x0000000000000de0 0x559 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .debug_line 0x0000000000001339 0x812 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_line 0x0000000000001b4b 0x1538 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_line 0x0000000000003083 0x21d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .debug_line 0x00000000000032a0 0x2db /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .debug_line 0x000000000000357b 0x5f0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .debug_line 0x0000000000003b6b 0x2f7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .debug_line 0x0000000000003e62 0x1f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o + .debug_line 0x0000000000004058 0x117 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o + .debug_line 0x000000000000416f 0x589 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_line 0x00000000000046f8 0x14d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_line 0x0000000000005bd0 0x792 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_line 0x0000000000006362 0x282 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .debug_line 0x00000000000065e4 0x265c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_line 0x0000000000008c40 0x27a7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_line 0x000000000000b3e7 0x3667 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_line 0x000000000000ea4e 0x2d9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_line 0x000000000000ed27 0x2a4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .debug_line 0x000000000000efcb 0x4528 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_line 0x00000000000134f3 0x34953 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .debug_line 0x0000000000047e46 0x3d78 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_line 0x000000000004bbbe 0x260 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .debug_line 0x000000000004be1e 0x622 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .debug_line 0x000000000004c440 0xcb5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_line 0x000000000004d0f5 0x27146 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .debug_line 0x000000000007423b 0x301 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .debug_line 0x000000000007453c 0xc73 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .debug_line 0x00000000000751af 0x165 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .debug_line 0x0000000000075314 0xebc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .debug_line 0x00000000000761d0 0x145c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + .debug_line 0x000000000007762c 0x1d1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_entrypoint.o + +.debug_str 0x0000000000000000 0x2399c + .debug_str 0x0000000000000000 0x2980 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o + 0x29a6 (size before relaxing) + .debug_str 0x0000000000002980 0x94c5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + 0xbeca (size before relaxing) + .debug_str 0x000000000000be45 0x217 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + 0x717f (size before relaxing) + .debug_str 0x000000000000c05c 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + 0xbf65 (size before relaxing) + .debug_str 0x000000000000c154 0x243 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + 0x7226 (size before relaxing) + .debug_str 0x000000000000c397 0x2ec /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + 0x67ea (size before relaxing) + .debug_str 0x000000000000c683 0x7f0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + 0x77a2 (size before relaxing) + .debug_str 0x000000000000ce73 0xf0b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + 0x7f63 (size before relaxing) + .debug_str 0x000000000000dd7e 0x30c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + 0x77ac (size before relaxing) + .debug_str 0x000000000000e08a 0x281 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + 0x4370 (size before relaxing) + .debug_str 0x000000000000e30b 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + 0x46c2 (size before relaxing) + .debug_str 0x000000000000e38b 0x4b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + 0x70b7 (size before relaxing) + .debug_str 0x000000000000e3d6 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o + 0x3c13 (size before relaxing) + .debug_str 0x000000000000e3fc 0x1b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o + 0x3a8b (size before relaxing) + .debug_str 0x000000000000e417 0x5ca5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + 0xd1d8 (size before relaxing) + .debug_str 0x00000000000140bc 0x443 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + 0x81fe (size before relaxing) + .debug_str 0x00000000000144ff 0xc1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + 0x8121 (size before relaxing) + .debug_str 0x0000000000015119 0x1cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + 0x437f (size before relaxing) + .debug_str 0x00000000000152e6 0x4ba0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + 0xca29 (size before relaxing) + .debug_str 0x0000000000019e86 0x6fa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + 0xba63 (size before relaxing) + .debug_str 0x000000000001a580 0x314 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + 0xb80f (size before relaxing) + .debug_str 0x000000000001a894 0x19 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + 0x75c8 (size before relaxing) + .debug_str 0x000000000001a8ad 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + 0x4115 (size before relaxing) + .debug_str 0x000000000001a8f3 0x12b6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + 0x9057 (size before relaxing) + .debug_str 0x000000000001bba9 0x3a87 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + 0x85bd (size before relaxing) + .debug_str 0x000000000001f630 0x7f5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + 0x7a74 (size before relaxing) + .debug_str 0x000000000001fe25 0x51 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + 0x7216 (size before relaxing) + .debug_str 0x000000000001fe76 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + 0x72c3 (size before relaxing) + .debug_str 0x000000000001fef3 0x2ed3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + 0x9efe (size before relaxing) + .debug_str 0x0000000000022dc6 0xa92 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + 0x87c3 (size before relaxing) + .debug_str 0x0000000000023858 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + 0x9876 (size before relaxing) + .debug_str 0x00000000000238a8 0x1f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + 0x5093 (size before relaxing) + .debug_str 0x00000000000238c7 0x27 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + 0x4e2c (size before relaxing) + .debug_str 0x00000000000238ee 0x4f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + 0x7579 (size before relaxing) + .debug_str 0x000000000002393d 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + 0x743b (size before relaxing) + .debug_str 0x0000000000023971 0x2b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_entrypoint.o + 0x65 (size before relaxing) + +.comment 0x0000000000000000 0x1d + .comment 0x0000000000000000 0x1d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o + 0x1e (size before relaxing) + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + +.note.GNU-stack + 0x0000000000000000 0x0 + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + +.debug_ranges 0x0000000000000000 0x301e0 + .debug_ranges 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .debug_ranges 0x0000000000000040 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .debug_ranges 0x00000000000000a0 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .debug_ranges 0x00000000000001c0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .debug_ranges 0x00000000000001f0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .debug_ranges 0x0000000000000280 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_ranges 0x0000000000000300 0x8d0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_ranges 0x0000000000000bd0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .debug_ranges 0x0000000000000bf0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .debug_ranges 0x0000000000000c20 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .debug_ranges 0x0000000000000d40 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .debug_ranges 0x0000000000000d60 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o + .debug_ranges 0x0000000000000d90 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o + .debug_ranges 0x0000000000000db0 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_ranges 0x0000000000000e90 0x100 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_ranges 0x0000000000000f90 0x160 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_ranges 0x00000000000010f0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .debug_ranges 0x0000000000001180 0x3d0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_ranges 0x0000000000001550 0x480 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_ranges 0x00000000000019d0 0x6b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_ranges 0x0000000000002080 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_ranges 0x00000000000020a0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .debug_ranges 0x00000000000020e0 0xbe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_ranges 0x0000000000002cc0 0x1cf40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .debug_ranges 0x000000000001fc00 0x27b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_ranges 0x00000000000223b0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .debug_ranges 0x00000000000223d0 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .debug_ranges 0x00000000000224a0 0x190 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_ranges 0x0000000000022630 0xce70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .debug_ranges 0x000000000002f4a0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .debug_ranges 0x000000000002f4c0 0x210 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .debug_ranges 0x000000000002f6d0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .debug_ranges 0x000000000002f6f0 0x570 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .debug_ranges 0x000000000002fc60 0x580 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + +.debug_frame 0x0000000000000000 0x4810 + .debug_frame 0x0000000000000000 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o + .debug_frame 0x0000000000000058 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .debug_frame 0x00000000000000e0 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .debug_frame 0x0000000000000198 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .debug_frame 0x00000000000001f8 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .debug_frame 0x00000000000002f0 0xd8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_frame 0x00000000000003c8 0x1d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_frame 0x00000000000005a0 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .debug_frame 0x00000000000005c8 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .debug_frame 0x0000000000000608 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .debug_frame 0x00000000000006a8 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .debug_frame 0x00000000000006e0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o + .debug_frame 0x0000000000000720 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o + .debug_frame 0x0000000000000748 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_frame 0x00000000000007d0 0x258 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_frame 0x0000000000000a28 0x158 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_frame 0x0000000000000b80 0x118 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .debug_frame 0x0000000000000c98 0x3b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_frame 0x0000000000001048 0x5a8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_frame 0x00000000000015f0 0x520 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_frame 0x0000000000001b10 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_frame 0x0000000000001b50 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .debug_frame 0x0000000000001bb8 0x2d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_frame 0x0000000000001e90 0x1758 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .debug_frame 0x00000000000035e8 0x488 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_frame 0x0000000000003a70 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .debug_frame 0x0000000000003aa8 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .debug_frame 0x0000000000003b60 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_frame 0x0000000000003be8 0xb08 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .debug_frame 0x00000000000046f0 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o + .debug_frame 0x0000000000004718 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .debug_frame 0x0000000000004750 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o + .debug_frame 0x0000000000004778 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .debug_frame 0x00000000000047e8 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o + +.debug_loc 0x0000000000000000 0xc2b4e + .debug_loc 0x0000000000000000 0x18c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o + .debug_loc 0x000000000000018c 0x28a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o + .debug_loc 0x0000000000000416 0x143 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o + .debug_loc 0x0000000000000559 0x24e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o + .debug_loc 0x00000000000007a7 0x8b7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o + .debug_loc 0x000000000000105e 0x1f54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o + .debug_loc 0x0000000000002fb2 0x39 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o + .debug_loc 0x0000000000002feb 0x450 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o + .debug_loc 0x000000000000343b 0xc56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o + .debug_loc 0x0000000000004091 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o + .debug_loc 0x000000000000414f 0x262 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o + .debug_loc 0x00000000000043b1 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o + .debug_loc 0x0000000000004433 0x38f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o + .debug_loc 0x00000000000047c2 0xe17 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o + .debug_loc 0x00000000000055d9 0x9d2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o + .debug_loc 0x0000000000005fab 0x156 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o + .debug_loc 0x0000000000006101 0x1f8b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o + .debug_loc 0x000000000000808c 0x28fb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o + .debug_loc 0x000000000000a987 0x4255 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o + .debug_loc 0x000000000000ebdc 0x11d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o + .debug_loc 0x000000000000ecf9 0x33f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o + .debug_loc 0x000000000000f038 0xa0cf /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/LzmaDec.o + .debug_loc 0x0000000000019107 0x5f2ef /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o + .debug_loc 0x00000000000783f6 0x8560 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o + .debug_loc 0x0000000000080956 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o + .debug_loc 0x00000000000809ee 0x22c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o + .debug_loc 0x0000000000080c1a 0xdfe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o + .debug_loc 0x0000000000081a18 0x3a3d4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o + .debug_loc 0x00000000000bbdec 0x1c14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o + .debug_loc 0x00000000000bda00 0x2003 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o + .debug_loc 0x00000000000bfa03 0x314b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2.sym b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2.sym new file mode 100644 index 000000000..aa68b6c67 --- /dev/null +++ b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2.sym @@ -0,0 +1,402 @@ + 39: 000000003bc0ec00 16384 OBJECT LOCAL DEFAULT 4 sram_union_buf + 167: 000000003bc047b8 5002 FUNC LOCAL DEFAULT 1 LzmaDec_DecodeReal2 + 38: 000000003bc0dc00 4096 OBJECT LOCAL DEFAULT 4 fip_param2 + 280: 000000003bc0721c 2012 FUNC GLOBAL DEFAULT 1 LZ4F_decompress + 376: 000000003bc040a4 1344 FUNC GLOBAL DEFAULT 1 dwc2_udc_irq + 168: 000000003bc05b42 1256 FUNC LOCAL DEFAULT 1 LzmaDec_TryDummy + 284: 000000003bc022e4 1144 FUNC GLOBAL DEFAULT 1 AcmApp + 62: 000000003bc01bb4 1090 FUNC LOCAL DEFAULT 1 setup + 374: 000000003bc13280 1024 OBJECT GLOBAL DEFAULT 4 handlerArr + 396: 000000003bc09f46 950 FUNC GLOBAL DEFAULT 1 phy_init + 335: 000000003bc03d5e 838 FUNC GLOBAL DEFAULT 1 dwc2_handle_ep0 + 281: 000000003bc098d8 826 FUNC GLOBAL DEFAULT 1 cvx16_pinmux + 181: 000000003bc07a3a 826 FUNC LOCAL DEFAULT 1 XXH32_finalize.constprop. + 295: 000000003bc06ce2 790 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_force + 398: 000000003bc02f28 654 FUNC GLOBAL DEFAULT 1 dwc2_reconfig_usbd + 222: 000000003bc0603e 636 FUNC GLOBAL DEFAULT 1 LzmaDec_DecodeToDic + 172: 000000003bc06484 630 FUNC LOCAL DEFAULT 1 LZ4_decompress_safe_withS + 219: 000000003bc0680a 622 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe + 341: 000000003bc06a78 618 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_withP + 58: 000000003bc018aa 564 FUNC LOCAL DEFAULT 1 bulkOutCmpl + 321: 000000003bc081d6 558 FUNC GLOBAL DEFAULT 1 read_ddr_pkg_info + 380: 000000003bc0845e 548 FUNC GLOBAL DEFAULT 1 ddr_sys_bring_up + 340: 000000003bc09c14 548 FUNC GLOBAL DEFAULT 1 ddrc_init + 313: 000000003bc0113e 520 FUNC GLOBAL DEFAULT 1 load_loader_2nd + 377: 000000003bc13000 512 OBJECT GLOBAL DEFAULT 4 cmdBufAllocArr + 218: 000000003bc12c80 512 OBJECT GLOBAL DEFAULT 4 bulkBufAllocArr + 164: 000000003bc0b230 512 OBJECT LOCAL DEFAULT 1 crc16_tab + 238: 000000003bc093cc 490 FUNC GLOBAL DEFAULT 1 cvx16_rdlvl_req + 236: 000000003bc090b8 470 FUNC GLOBAL DEFAULT 1 cvx16_wrlvl_req + 332: 000000003bc07f90 466 FUNC GLOBAL DEFAULT 1 XXH32_update + 338: 000000003bc07d74 454 FUNC GLOBAL DEFAULT 1 XXH32 + 136: 000000003bc02d62 422 FUNC LOCAL DEFAULT 1 _dwc2_ep_disable.isra.0 + 174: 000000003bc07048 420 FUNC LOCAL DEFAULT 1 LZ4F_decodeHeader + 342: 000000003bc00358 410 FUNC GLOBAL DEFAULT 1 tf_printf + 276: 000000003bc0068e 398 FUNC GLOBAL DEFAULT 1 sys_pll_nd + 226: 000000003bc095b6 386 FUNC GLOBAL DEFAULT 1 cvx16_wdqlvl_req + 326: 000000003bc00eb2 358 FUNC GLOBAL DEFAULT 1 load_blcp_2nd + 159: 000000003bc0396e 348 FUNC LOCAL DEFAULT 1 setdma_tx + 269: 000000003bc031b6 342 FUNC GLOBAL DEFAULT 1 usb_gadget_register_drive + 315: 000000003bc0331e 336 FUNC GLOBAL DEFAULT 1 dwc2_udc_probe + 354: 000000003bc0928e 318 FUNC GLOBAL DEFAULT 1 cvx16_rdglvl_req + 283: 000000003bc02170 312 FUNC GLOBAL DEFAULT 1 acm_app_init + 249: 000000003bc01018 294 FUNC GLOBAL DEFAULT 1 load_monitor + 361: 000000003bc0973a 282 FUNC GLOBAL DEFAULT 1 ctrl_init_detect_dram_siz + 173: 000000003bc066fa 272 FUNC LOCAL DEFAULT 1 LZ4F_updateDict + 158: 000000003bc03818 252 FUNC LOCAL DEFAULT 1 complete_rx + 272: 000000003bc08c2a 248 FUNC GLOBAL DEFAULT 1 cvx16_chg_pll_freq + 308: 000000003bc087bc 234 FUNC GLOBAL DEFAULT 1 cvx16_bist_rdlvl_init + 302: 000000003bc01508 232 FUNC GLOBAL DEFAULT 1 decompress_lzma + 230: 000000003bc01346 230 FUNC GLOBAL DEFAULT 1 load_rest + 135: 000000003bc02c88 218 FUNC LOCAL DEFAULT 1 dwc2_hsotg_init_fifo.cons + 318: 000000003bc045fc 216 FUNC GLOBAL DEFAULT 1 dwc2_queue + 346: 000000003bc0209a 208 FUNC GLOBAL DEFAULT 1 print_buf_addr + 279: 000000003bc00c6e 208 FUNC GLOBAL DEFAULT 1 load_param2 + 228: 000000003bc004f2 200 FUNC GLOBAL DEFAULT 1 __system_reset + 392: 000000003bc00dec 198 FUNC GLOBAL DEFAULT 1 load_ddr + 278: 000000003bc00878 188 FUNC GLOBAL DEFAULT 1 set_rtc_en_registers + 334: 000000003bc09e94 178 FUNC GLOBAL DEFAULT 1 ctrl_init_update_by_dram_ + 204: 000000003bc03cac 178 FUNC GLOBAL DEFAULT 1 dwc2_udc_ep_activate + 240: 000000003bc088a6 176 FUNC GLOBAL DEFAULT 1 cvx16_bist_wdqlvl_init + 384: 000000003bc01620 174 FUNC GLOBAL DEFAULT 1 decompress_lz4 + 200: 000000003bc00d3e 174 FUNC GLOBAL DEFAULT 1 load_ddr_param + 367: 000000003bc063b6 170 FUNC GLOBAL DEFAULT 1 LzmaDecode + 157: 000000003bc0376e 170 FUNC LOCAL DEFAULT 1 setdma_rx.isra.0 + 339: 000000003bc08a20 166 FUNC GLOBAL DEFAULT 1 cvx16_rdvld_train + 298: 000000003bc08f58 166 FUNC GLOBAL DEFAULT 1 cvx16_pll_init + 296: 000000003bc01ff8 162 FUNC GLOBAL DEFAULT 1 convert_buf_addr + 129: 000000003bc0282c 160 FUNC LOCAL DEFAULT 1 dwc2_ep_enable + 343: 000000003bc029e2 154 FUNC GLOBAL DEFAULT 1 usb_gadget_unregister_dri + 299: 000000003bc0142c 152 FUNC GLOBAL DEFAULT 1 bl2_main + 133: 000000003bc02b44 144 FUNC LOCAL DEFAULT 1 dwc2_hsotg_txfifo_flush.c + 151: 000000003bc034ba 142 FUNC LOCAL DEFAULT 1 set_max_pktsize + 397: 000000003bc09854 132 FUNC GLOBAL DEFAULT 1 pll_init + 27: 000000003bc002d6 130 FUNC LOCAL DEFAULT 1 unsigned_num_print + 348: 000000003bc12f80 128 OBJECT GLOBAL DEFAULT 4 cb2_bufArr + 322: 000000003bc12c00 128 OBJECT GLOBAL DEFAULT 4 acm_bufArr + 290: 000000003bc13200 128 OBJECT GLOBAL DEFAULT 4 ep0BuffAllocArr + 275: 000000003bc12e80 128 OBJECT GLOBAL DEFAULT 4 cb0_bufArr + 235: 000000003bc12f00 128 OBJECT GLOBAL DEFAULT 4 cb1_bufArr + 154: 000000003bc03608 128 FUNC LOCAL DEFAULT 1 dwc2_ep0_complete_out + 264: 000000003bc016ce 126 FUNC GLOBAL DEFAULT 1 decompress + 155: 000000003bc03688 126 FUNC LOCAL DEFAULT 1 dwc2_udc_ep0_zlp + 259: 000000003bc00b7a 124 FUNC GLOBAL DEFAULT 1 gpio_in_value + 356: 000000003bc009a6 122 FUNC GLOBAL DEFAULT 1 ntostr + 211: 000000003bc0021a 120 FUNC GLOBAL DEFAULT 1 jump_to_monitor + 393: 000000003bc08ac6 116 FUNC GLOBAL DEFAULT 1 cvx16_synp_mrw + 166: 000000003bc04746 114 FUNC LOCAL DEFAULT 1 LzmaDec_WriteRem + 263: 000000003bc09048 112 FUNC GLOBAL DEFAULT 1 cvx16_clk_gating_enable + 316: 000000003bc00934 110 FUNC GLOBAL DEFAULT 1 init_comm_info + 257: 000000003bc089b6 106 FUNC GLOBAL DEFAULT 1 cvx16_bist_start_check + 375: 000000003bc08eaa 104 FUNC GLOBAL DEFAULT 1 cvx16_dfi_ca_park_prbs + 282: 000000003bc08b3a 104 FUNC GLOBAL DEFAULT 1 cvx16_dll_cal + 156: 000000003bc03706 104 FUNC LOCAL DEFAULT 1 dwc2_udc_ep0_set_stall.is + 169: 000000003bc062d6 102 FUNC LOCAL DEFAULT 1 LzmaDec_AllocateProbs2.is + 331: 000000003bc03c4a 98 FUNC GLOBAL DEFAULT 1 dwc2_udc_set_halt + 153: 000000003bc035a6 98 FUNC LOCAL DEFAULT 1 dwc2_udc_ep_set_stall + 304: 000000003bc08956 96 FUNC GLOBAL DEFAULT 1 cvx16_bist_wdmlvl_init + 265: 000000003bc086d0 96 FUNC GLOBAL DEFAULT 1 cvx16_bist_wr_sram_init + 239: 000000003bc00a7a 96 FUNC GLOBAL DEFAULT 1 memcpy + 152: 000000003bc03548 94 FUNC LOCAL DEFAULT 1 dwc2_udc_ep_clear_stall + 134: 000000003bc02bd4 94 FUNC LOCAL DEFAULT 1 kill_all_requests.isra.0 + 328: 000000003bc08ba2 92 FUNC GLOBAL DEFAULT 1 cvx16_clk_normal + 60: 000000003bc01ade 92 FUNC LOCAL DEFAULT 1 getDescAcm + 330: 000000003bc00a20 90 FUNC GLOBAL DEFAULT 1 memset + 114: 000000003bc0b928 88 OBJECT LOCAL DEFAULT 2 g_driver + 337: 000000003bc07f3a 86 FUNC GLOBAL DEFAULT 1 XXH32_reset + 314: 000000003bc02c32 86 FUNC GLOBAL DEFAULT 1 dwc2_disconnect + 131: 000000003bc02960 84 FUNC LOCAL DEFAULT 1 dwc2_dequeue + 205: 000000003bc00afa 82 FUNC GLOBAL DEFAULT 1 putchar_l + 57: 000000003bc01858 82 FUNC LOCAL DEFAULT 1 get_unicode_string + 194: 000000003bc0840e 80 FUNC GLOBAL DEFAULT 1 axi_mon_start_all + 138: 000000003bc0b9b0 80 OBJECT LOCAL DEFAULT 2 dwc2_ep_ops + 112: 000000003bc0b8d0 80 OBJECT LOCAL DEFAULT 2 drv_obj + 110: 000000003bc0b868 80 OBJECT LOCAL DEFAULT 2 descriptorsHs + 109: 000000003bc0b818 80 OBJECT LOCAL DEFAULT 2 descriptorsFs + 59: 000000003bc01b64 80 FUNC LOCAL DEFAULT 1 bulkInCmpl + 217: 000000003bc08682 78 FUNC GLOBAL DEFAULT 1 cvx16_bist_wr_prbs_init + 291: 000000003bc0346e 76 FUNC GLOBAL DEFAULT 1 usb_gadget_handle_interru + 234: 000000003bc03b0e 76 FUNC GLOBAL DEFAULT 1 dwc2_write_fifo_ep0 + 365: 000000003bc005ec 74 FUNC GLOBAL DEFAULT 1 reset_c906l + 364: 000000003bc00636 74 FUNC GLOBAL DEFAULT 1 setup_dl_flag + 324: 000000003bc0633c 74 FUNC GLOBAL DEFAULT 1 LzmaProps_Decode + 285: 000000003bc08ffe 74 FUNC GLOBAL DEFAULT 1 cvx16_clk_gating_disable + 293: 000000003bc08d66 72 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 215: 000000003bc03b5a 72 FUNC GLOBAL DEFAULT 1 dwc2_set_address + 145: 000000003bc0b130 72 OBJECT LOCAL DEFAULT 1 dwc2_udc_ops + 127: 000000003bc027ac 72 FUNC LOCAL DEFAULT 1 pullup + 394: 000000003bc028da 70 FUNC GLOBAL DEFAULT 1 udc_reinit + 237: 000000003bc02afe 70 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_wait_bit_set + 224: 000000003bc08730 70 FUNC GLOBAL DEFAULT 1 cvx16_bist_wrlvl_init + 223: 000000003bc08776 70 FUNC GLOBAL DEFAULT 1 cvx16_bist_rdglvl_init + 383: 000000003bc0392a 68 FUNC GLOBAL DEFAULT 1 dwc2_ep_fifo_write + 372: 000000003bc03aca 68 FUNC GLOBAL DEFAULT 1 dwc2_ep_fifo_read + 229: 000000003bc00834 68 FUNC GLOBAL DEFAULT 1 switch_rtc_mode_2nd_stage + 221: 000000003bc08d22 68 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 56: 000000003bc01816 66 FUNC LOCAL DEFAULT 1 bind + 42: 000000003bc014c6 66 FUNC LOCAL DEFAULT 1 SzAlloc + 381: 000000003bc08162 64 FUNC GLOBAL DEFAULT 1 XXH32_digest + 357: 000000003bc046d4 64 FUNC GLOBAL DEFAULT 1 usb_polling + 352: 000000003bc03c0a 64 FUNC GLOBAL DEFAULT 1 dwc2_udc_set_nak + 311: 000000003bc00c2e 64 FUNC GLOBAL DEFAULT 1 load_image_by_usb + 307: 000000003bc02920 64 FUNC GLOBAL DEFAULT 1 dwc2_done + 243: 000000003bc03bca 64 FUNC GLOBAL DEFAULT 1 dwc2_ep0_write + 132: 000000003bc02ac2 60 FUNC LOCAL DEFAULT 1 wakeup + 268: 000000003bc08dae 58 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 126: 000000003bc02772 58 FUNC LOCAL DEFAULT 1 dwc2_free_request + 233: 000000003bc08de8 56 FUNC GLOBAL DEFAULT 1 cvx16_wait_for_dfi_init_c + 128: 000000003bc027f4 56 FUNC LOCAL DEFAULT 1 dwc2_alloc_request + 50: 000000003bc01758 56 FUNC LOCAL DEFAULT 1 requestMemAlloc + 382: 000000003bc081a2 52 FUNC GLOBAL DEFAULT 1 ddr_init + 253: 000000003bc005ba 50 FUNC GLOBAL DEFAULT 1 panic_handler + 231: 000000003bc04714 50 FUNC GLOBAL DEFAULT 1 crc16_ccitt + 297: 000000003bc06386 48 FUNC GLOBAL DEFAULT 1 LzmaDec_AllocateProbs + 288: 000000003bc022b4 48 FUNC GLOBAL DEFAULT 1 get_usb_polling_timeout_v + 286: 000000003bc071ec 48 FUNC GLOBAL DEFAULT 1 LZ4F_createDecompressionC + 24: 000000003bc136c8 48 OBJECT LOCAL DEFAULT 4 fw_dynamic_info + 391: 000000003bc09e38 46 FUNC GLOBAL DEFAULT 1 ctrl_init_high_patch + 254: 000000003bc029b4 46 FUNC GLOBAL DEFAULT 1 dwc2_nuke + 247: 000000003bc09e66 46 FUNC GLOBAL DEFAULT 1 ctrl_init_low_patch + 54: 000000003bc017c2 46 FUNC LOCAL DEFAULT 1 disconnect + 294: 000000003bc08e62 44 FUNC GLOBAL DEFAULT 1 cvx16_INT_ISR_08 + 179: 000000003bc079f8 44 FUNC LOCAL DEFAULT 1 XXH32_avalanche + 305: 000000003bc0018a 42 FUNC GLOBAL DEFAULT 1 udelay + 255: 000000003bc001e2 42 FUNC GLOBAL DEFAULT 1 get_random_from_timer + 61: 000000003bc01b3a 42 FUNC LOCAL DEFAULT 1 reqComplete + 344: 000000003bc015f6 40 FUNC GLOBAL DEFAULT 1 LZ4_calloc + 289: 000000003bc03ba2 40 FUNC GLOBAL DEFAULT 1 dwc2_ep0_read + 232: 000000003bc08e3a 40 FUNC GLOBAL DEFAULT 1 cvx16_set_dfi_init_comple + 390: 000000003bc08f32 38 FUNC GLOBAL DEFAULT 1 cvx16_set_dfi_init_start + 359: 000000003bc06ff8 38 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_using + 55: 000000003bc017f0 38 FUNC LOCAL DEFAULT 1 unbind + 333: 000000003bc0a488 37 OBJECT GLOBAL DEFAULT 1 hex2ascii_data + 274: 000000003bc00156 36 FUNC GLOBAL DEFAULT 1 flush_dcache_range + 267: 000000003bc001be 36 FUNC GLOBAL DEFAULT 1 get_timer + 242: 000000003bc02a9e 36 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_clear_bit + 171: 000000003bc06460 36 FUNC LOCAL DEFAULT 1 LZ4F_readLE32 + 245: 000000003bc02a7c 34 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_set_bit + 325: 000000003bc08f12 32 FUNC GLOBAL DEFAULT 1 cvx16_setting_check + 216: 000000003bc00ada 32 FUNC GLOBAL DEFAULT 1 memmove + 177: 000000003bc0b4b0 32 OBJECT LOCAL DEFAULT 1 inc32table + 176: 000000003bc0b490 32 OBJECT LOCAL DEFAULT 1 dec64table + 175: 000000003bc0b470 32 OBJECT LOCAL DEFAULT 1 blockSizes.0 + 137: 000000003bc02f08 32 FUNC LOCAL DEFAULT 1 dwc2_ep_disable + 385: 000000003bc0702a 30 FUNC GLOBAL DEFAULT 1 LZ4F_getBlockSize + 368: 000000003bc00bf6 30 FUNC GLOBAL DEFAULT 1 usb_id_det + 270: 000000003bc002a4 30 FUNC GLOBAL DEFAULT 1 console_putc + 358: 000000003bc08e8e 28 FUNC GLOBAL DEFAULT 1 cvx16_polling_synp_normal + 336: 000000003bc00b4c 28 FUNC GLOBAL DEFAULT 1 strcmp + 301: 000000003bc062ba 28 FUNC GLOBAL DEFAULT 1 LzmaDec_FreeProbs + 84: 000000003bc13788 28 OBJECT LOCAL DEFAULT 4 serialDesc + 82: 000000003bc13758 28 OBJECT LOCAL DEFAULT 4 productDesc + 52: 000000003bc01792 28 FUNC LOCAL DEFAULT 1 acm_complete_set_line_cod + 306: 000000003bc08e20 26 FUNC GLOBAL DEFAULT 1 cvx16_polling_dfi_init_st + 225: 000000003bc0a300 26 OBJECT GLOBAL DEFAULT 1 build_message + 37: 000000003bc00c14 26 FUNC LOCAL DEFAULT 1 read_time_ms + 207: 000000003bc045e4 24 FUNC GLOBAL DEFAULT 1 dwc2_ep0_kick + 142: 000000003bc0b0f0 24 OBJECT LOCAL DEFAULT 1 __func__.3 + 395: 000000003bc08bfe 22 FUNC GLOBAL DEFAULT 1 cvx16_clk_div2 + 371: 000000003bc0081c 22 FUNC GLOBAL DEFAULT 1 sys_pll_init + 252: 000000003bc08c14 22 FUNC GLOBAL DEFAULT 1 cvx16_clk_div40 + 209: 000000003bc03914 22 FUNC GLOBAL DEFAULT 1 dwc2_udc_pre_setup + 180: 000000003bc07a24 22 FUNC LOCAL DEFAULT 1 XXH_read32 + 125: 000000003bc0275c 22 FUNC LOCAL DEFAULT 1 dwc2_fifo_status + 143: 000000003bc0b108 21 OBJECT LOCAL DEFAULT 1 __func__.4 + 345: 000000003bc002c2 20 FUNC GLOBAL DEFAULT 1 console_flush + 248: 000000003bc0602a 20 FUNC GLOBAL DEFAULT 1 LzmaDec_Init + 53: 000000003bc017ae 20 FUNC LOCAL DEFAULT 1 reset + 141: 000000003bc0b0d8 19 OBJECT LOCAL DEFAULT 1 __func__.2 + 378: 000000003bc00b68 18 FUNC GLOBAL DEFAULT 1 strlen + 355: 000000003bc0330c 18 FUNC GLOBAL DEFAULT 1 dwc2_phy_to_log_ep + 139: 000000003bc0b0a8 18 OBJECT LOCAL DEFAULT 1 __func__.0 + 111: 000000003bc0b8b8 18 OBJECT LOCAL DEFAULT 2 devHsDesc + 140: 000000003bc0b0c0 17 OBJECT LOCAL DEFAULT 1 __func__.1 + 303: 000000003bc0017a 16 FUNC GLOBAL DEFAULT 1 trig_simulation_timer + 273: 000000003bc00294 16 FUNC GLOBAL DEFAULT 1 _uart_putc + 212: 000000003bc13680 16 OBJECT GLOBAL DEFAULT 4 rsp_bufArr + 201: 000000003bc0a320 16 OBJECT GLOBAL DEFAULT 1 version_string + 87: 000000003bc137a8 16 OBJECT LOCAL DEFAULT 4 vendorDesc + 83: 000000003bc13778 16 OBJECT LOCAL DEFAULT 4 serial.2 + 46: 000000003bc0aaa8 16 OBJECT LOCAL DEFAULT 1 __func__.1 + 319: 000000003bc00680 14 FUNC GLOBAL DEFAULT 1 sys_switch_all_to_pll + 262: 000000003bc0020c 14 FUNC GLOBAL DEFAULT 1 read_count_tick + 350: 000000003bc0701e 12 FUNC GLOBAL DEFAULT 1 LZ4F_isError + 329: 000000003bc022a8 12 FUNC GLOBAL DEFAULT 1 usb_vbus_det + 148: 000000003bc0b198 12 OBJECT LOCAL DEFAULT 1 ep2name + 146: 000000003bc0b178 12 OBJECT LOCAL DEFAULT 1 ep0name + 147: 000000003bc0b188 11 OBJECT LOCAL DEFAULT 1 ep1name + 122: 000000003bc0aea8 11 OBJECT LOCAL DEFAULT 1 __func__.4 + 363: 000000003bc0014c 10 FUNC GLOBAL DEFAULT 1 sync_cache + 241: 000000003bc028d0 10 FUNC GLOBAL DEFAULT 1 dwc2_get_ep0_name + 193: 000000003bc001b4 10 FUNC GLOBAL DEFAULT 1 mdelay + 192: 000000003bc08404 10 FUNC GLOBAL DEFAULT 1 get_ddr_vendor + 149: 000000003bc0b1a8 10 OBJECT LOCAL DEFAULT 1 ep3name + 117: 000000003bc0b990 10 OBJECT LOCAL DEFAULT 2 qualifierDesc + 144: 000000003bc0b120 9 OBJECT LOCAL DEFAULT 1 driver_name + 92: 000000003bc0b788 9 OBJECT LOCAL DEFAULT 2 acm_data_interface_desc + 91: 000000003bc0b778 9 OBJECT LOCAL DEFAULT 2 acm_control_interface_des + 88: 000000003bc0b758 9 OBJECT LOCAL DEFAULT 2 ConfDesc + 389: 000000003bc137c0 8 OBJECT GLOBAL DEFAULT 4 the_controller + 387: 000000003bc13708 8 OBJECT GLOBAL DEFAULT 4 acm + 366: 000000003bc137c8 8 OBJECT GLOBAL DEFAULT 4 reg_set + 327: 000000003bc137d0 8 OBJECT GLOBAL DEFAULT 4 reg_span + 246: 000000003bc136c0 8 OBJECT GLOBAL DEFAULT 4 setup_bufArr + 214: 000000003bc137b8 8 OBJECT GLOBAL DEFAULT 4 reg + 213: 000000003bc137d8 8 OBJECT GLOBAL DEFAULT 4 reg_step + 197: 000000003bc0b750 8 OBJECT GLOBAL DEFAULT 2 time_records + 119: 000000003bc0b9a8 8 OBJECT LOCAL DEFAULT 2 setup_buf + 118: 000000003bc0b9a0 8 OBJECT LOCAL DEFAULT 2 rsp_buf + 115: 000000003bc0b980 8 OBJECT LOCAL DEFAULT 2 handler + 113: 000000003bc0b920 8 OBJECT LOCAL DEFAULT 2 ep0BuffAlloc + 108: 000000003bc0b810 8 OBJECT LOCAL DEFAULT 2 cmdBufAlloc + 107: 000000003bc0b808 8 OBJECT LOCAL DEFAULT 2 cb2_buf + 106: 000000003bc0b800 8 OBJECT LOCAL DEFAULT 2 cb1_buf + 105: 000000003bc0b7f8 8 OBJECT LOCAL DEFAULT 2 cb0_buf + 103: 000000003bc0b7e8 8 OBJECT LOCAL DEFAULT 2 bulkBufAlloc + 89: 000000003bc0b768 8 OBJECT LOCAL DEFAULT 2 acm_buf + 75: 000000003bc13750 8 OBJECT LOCAL DEFAULT 4 fip_buf + 74: 000000003bc13748 8 OBJECT LOCAL DEFAULT 4 epOut + 73: 000000003bc13740 8 OBJECT LOCAL DEFAULT 4 epIn + 72: 000000003bc13738 8 OBJECT LOCAL DEFAULT 4 ep0Req + 71: 000000003bc13730 8 OBJECT LOCAL DEFAULT 4 ep0Buff + 68: 000000003bc13728 8 OBJECT LOCAL DEFAULT 4 cmdBuf + 67: 000000003bc13720 8 OBJECT LOCAL DEFAULT 4 bulkOutReq + 66: 000000003bc13718 8 OBJECT LOCAL DEFAULT 4 bulkInReq + 65: 000000003bc13710 8 OBJECT LOCAL DEFAULT 4 bulkBuf + 45: 000000003bc0aaa0 8 OBJECT LOCAL DEFAULT 1 __func__.0 + 44: 000000003bc13700 8 OBJECT LOCAL DEFAULT 4 comp_alloc_size + 43: 000000003bc136f8 8 OBJECT LOCAL DEFAULT 4 comp_alloc_buf + 121: 000000003bc0aea0 7 OBJECT LOCAL DEFAULT 1 __func__.1 + 104: 000000003bc0b7f0 7 OBJECT LOCAL DEFAULT 2 capabilityExtDesc + 100: 000000003bc0b7d0 7 OBJECT LOCAL DEFAULT 2 acm_hs_out_desc + 99: 000000003bc0b7c8 7 OBJECT LOCAL DEFAULT 2 acm_hs_notify_desc + 98: 000000003bc0b7c0 7 OBJECT LOCAL DEFAULT 2 acm_hs_in_desc + 96: 000000003bc0b7b0 7 OBJECT LOCAL DEFAULT 2 acm_fs_out_desc + 95: 000000003bc0b7a8 7 OBJECT LOCAL DEFAULT 2 acm_fs_notify_desc + 94: 000000003bc0b7a0 7 OBJECT LOCAL DEFAULT 2 acm_fs_in_desc + 360: 000000003bc015f0 6 FUNC GLOBAL DEFAULT 1 LZ4_malloc + 287: 000000003bc0174c 6 FUNC GLOBAL DEFAULT 1 DWC2_UncachedRead32 + 195: 000000003bc0216a 6 FUNC GLOBAL DEFAULT 1 AcmIsr + 123: 000000003bc0aeb8 6 OBJECT LOCAL DEFAULT 1 __func__.5 + 120: 000000003bc0ae98 5 OBJECT LOCAL DEFAULT 1 __func__.0 + 102: 000000003bc0b7e0 5 OBJECT LOCAL DEFAULT 2 bosDesc + 101: 000000003bc0b7d8 5 OBJECT LOCAL DEFAULT 2 acm_union_desc + 97: 000000003bc0b7b8 5 OBJECT LOCAL DEFAULT 2 acm_header_desc + 90: 000000003bc0b770 5 OBJECT LOCAL DEFAULT 2 acm_call_mgmt_descriptor + 388: 000000003bc01752 4 FUNC GLOBAL DEFAULT 1 DWC2_UncachedWrite32 + 373: 000000003bc0ba0c 4 OBJECT GLOBAL DEFAULT 2 ddr_data_rate + 317: 000000003bc137f4 4 OBJECT GLOBAL DEFAULT 4 dev_freq + 271: 000000003bc137f0 4 OBJECT GLOBAL DEFAULT 4 rddata + 258: 000000003bc137fc 4 OBJECT GLOBAL DEFAULT 4 mod_freq + 203: 000000003bc009a2 4 FUNC GLOBAL DEFAULT 1 dec_verify_image + 199: 000000003bc137f8 4 OBJECT GLOBAL DEFAULT 4 freq_in + 196: 000000003bc13800 4 OBJECT GLOBAL DEFAULT 4 tar_freq + 161: 000000003bc0ba04 4 OBJECT LOCAL DEFAULT 2 ep_fifo_size + 160: 000000003bc0ba00 4 OBJECT LOCAL DEFAULT 2 ep0_fifo_size + 116: 000000003bc0b988 4 OBJECT LOCAL DEFAULT 2 languageDesc + 93: 000000003bc0b798 4 OBJECT LOCAL DEFAULT 2 acm_descriptor + 86: 000000003bc137ec 4 OBJECT LOCAL DEFAULT 4 ts + 85: 000000003bc137e8 4 OBJECT LOCAL DEFAULT 4 transfer_size + 77: 000000003bc137e4 4 OBJECT LOCAL DEFAULT 4 fip_tx_size + 76: 000000003bc137e0 4 OBJECT LOCAL DEFAULT 4 fip_tx_offset + 370: 000000003bc0ba08 2 OBJECT GLOBAL DEFAULT 2 cv_usb_vid + 277: 000000003bc00832 2 FUNC GLOBAL DEFAULT 1 switch_rtc_mode_1st_stage + 261: 000000003bc09738 2 FUNC GLOBAL DEFAULT 1 cvx16_en_rec_vol_mode + 256: 000000003bc09c12 2 FUNC GLOBAL DEFAULT 1 cvx16_dram_cap_check + 244: 000000003bc028ce 2 FUNC GLOBAL DEFAULT 1 dwc2_log_write + 210: 000000003bc00292 2 FUNC GLOBAL DEFAULT 1 jump_to_loader_2nd + 206: 000000003bc0161e 2 FUNC GLOBAL DEFAULT 1 LZ4_free + 130: 000000003bc028cc 2 FUNC LOCAL DEFAULT 1 dwc2_fifo_flush + 63: 000000003bc01ff6 2 FUNC LOCAL DEFAULT 1 suspend + 51: 000000003bc01790 2 FUNC LOCAL DEFAULT 1 requestMemFree + 49: 000000003bc01756 2 FUNC LOCAL DEFAULT 1 resume + 41: 000000003bc014c4 2 FUNC LOCAL DEFAULT 1 SzFree + 386: 000000003bc1380c 1 OBJECT GLOBAL DEFAULT 4 ddr_capacity + 379: 000000003bc1380d 1 OBJECT GLOBAL DEFAULT 4 ddr_type + 309: 000000003bc1380e 1 OBJECT GLOBAL DEFAULT 4 ddr_vendor + 250: 000000003bc1380f 1 OBJECT GLOBAL DEFAULT 4 pkg + 220: 000000003bc13805 1 OBJECT GLOBAL DEFAULT 4 acm_configValue + 81: 000000003bc1380b 1 OBJECT LOCAL DEFAULT 4 mem_alloc_cnt + 80: 000000003bc1380a 1 OBJECT LOCAL DEFAULT 4 is_serial_patched.3 + 79: 000000003bc13809 1 OBJECT LOCAL DEFAULT 4 flagReboot + 78: 000000003bc13808 1 OBJECT LOCAL DEFAULT 4 flagEnterDL + 70: 000000003bc13807 1 OBJECT LOCAL DEFAULT 4 configValue + 69: 000000003bc13806 1 OBJECT LOCAL DEFAULT 4 configBreak + 64: 000000003bc13804 1 OBJECT LOCAL DEFAULT 4 ack_idx.6 + 369: 000000003bc0ba40 0 NOTYPE GLOBAL DEFAULT 3 __STACKS_START__ + 362: 00000000044000c0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_get_number_of_r + 353: 000000003bc00000 0 NOTYPE GLOBAL DEFAULT 1 __RO_START__ + 351: 000000003bc0dc00 0 NOTYPE GLOBAL DEFAULT 4 __BSS_START__ + 349: 0000000004400060 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_load_image + 347: 000000003bc0b74c 0 NOTYPE GLOBAL DEFAULT 1 __RO_END__ + 323: 0000000004400040 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_set_boot_src + 320: 000000003bc13810 0 NOTYPE GLOBAL DEFAULT 4 __BSS_END__ + 312: 000000003bc00000 0 NOTYPE GLOBAL DEFAULT 1 bl2_entrypoint + 310: 00000000044000a0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_image_crc + 300: 000000003bc0ba10 0 NOTYPE GLOBAL DEFAULT 2 __DATA_END__ + 292: 000000003bc13810 0 NOTYPE GLOBAL DEFAULT 4 __BL2_END__ + 266: 0000000000005c10 0 NOTYPE GLOBAL DEFAULT ABS __BSS_SIZE__ + 260: 00000000044000e0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_verify_rsa + 251: 000000003bc0da40 0 NOTYPE GLOBAL DEFAULT 3 __STACKS_END__ + 227: 000000003bc0b750 0 NOTYPE GLOBAL DEFAULT 2 __DATA_START__ + 208: 0000000004400020 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_get_boot_src + 202: 0000000004400080 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_flash_init + 198: 0000000004400100 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_cryptodma_aes_d + 191: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 190: 0000000000000000 0 FILE LOCAL DEFAULT ABS phy_init.c + 189: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddrc_init.c + 188: 0000000000000000 0 FILE LOCAL DEFAULT ABS cvx16_dram_cap_check.c + 187: 0000000000000000 0 FILE LOCAL DEFAULT ABS cvx16_pinmux.c + 186: 0000000000000000 0 FILE LOCAL DEFAULT ABS phy_pll_init.c + 185: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_sys.c + 184: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_sys_bring_up.c + 183: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_pkg_info.c + 182: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr.c + 178: 0000000000000000 0 FILE LOCAL DEFAULT ABS xxhash.c + 170: 0000000000000000 0 FILE LOCAL DEFAULT ABS lz4_all.c + 165: 0000000000000000 0 FILE LOCAL DEFAULT ABS LzmaDec.c + 163: 0000000000000000 0 FILE LOCAL DEFAULT ABS crc16.c + 162: 0000000000000000 0 FILE LOCAL DEFAULT ABS cv_usb.c + 150: 0000000000000000 0 FILE LOCAL DEFAULT ABS dwc2_udc_otg_xfer_dma.c + 124: 0000000000000000 0 FILE LOCAL DEFAULT ABS dwc2_udc_otg.c + 48: 0000000000000000 0 FILE LOCAL DEFAULT ABS usb_tty.c + 47: 0000000000000000 0 FILE LOCAL DEFAULT ABS cps_cvi.c + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS decompress.c + 36: 0000000000000000 0 FILE LOCAL DEFAULT ABS bl2_main.c + 35: 0000000000000000 0 FILE LOCAL DEFAULT ABS platform_device.c + 34: 0000000000000000 0 FILE LOCAL DEFAULT ABS strlen.c + 33: 0000000000000000 0 FILE LOCAL DEFAULT ABS strcmp.c + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS putchar.c + 31: 0000000000000000 0 FILE LOCAL DEFAULT ABS mem.c + 30: 0000000000000000 0 FILE LOCAL DEFAULT ABS misc.c + 29: 0000000000000000 0 FILE LOCAL DEFAULT ABS security.c + 28: 0000000000000000 0 FILE LOCAL DEFAULT ABS platform.c + 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS tf_printf.c + 25: 0000000000000000 0 FILE LOCAL DEFAULT ABS uart_dw.c + 23: 0000000000000000 0 FILE LOCAL DEFAULT ABS bl2_helper.c + 22: 0000000000000000 0 FILE LOCAL DEFAULT ABS delay_timer.c + 21: 0000000000000000 0 FILE LOCAL DEFAULT ABS cache.c + 20: 0000000000000000 0 FILE LOCAL DEFAULT ABS cpu_helper.c + 19: 000000003bc00144 0 NOTYPE LOCAL DEFAULT 1 die + 18: 000000003bc0012c 0 NOTYPE LOCAL DEFAULT 1 bss_clear + 17: 000000003bc00144 0 NOTYPE LOCAL DEFAULT 1 trap_vector + 16: 000000003bc00020 0 NOTYPE LOCAL DEFAULT 1 bl2_entrypoint_real + 15: 0000000000000000 0 FILE LOCAL DEFAULT ABS /root/.jenkins/workspace/ + 14: 0000000000000000 0 SECTION LOCAL DEFAULT 14 + 13: 0000000000000000 0 SECTION LOCAL DEFAULT 13 + 12: 0000000000000000 0 SECTION LOCAL DEFAULT 12 + 11: 0000000000000000 0 SECTION LOCAL DEFAULT 11 + 10: 0000000000000000 0 SECTION LOCAL DEFAULT 10 + 9: 0000000000000000 0 SECTION LOCAL DEFAULT 9 + 8: 0000000000000000 0 SECTION LOCAL DEFAULT 8 + 7: 0000000000000000 0 SECTION LOCAL DEFAULT 7 + 6: 0000000000000000 0 SECTION LOCAL DEFAULT 6 + 5: 0000000000000000 0 SECTION LOCAL DEFAULT 5 + 4: 000000003bc0dc00 0 SECTION LOCAL DEFAULT 4 + 3: 000000003bc0ba10 0 SECTION LOCAL DEFAULT 3 + 2: 000000003bc0b74c 0 SECTION LOCAL DEFAULT 2 + 1: 000000003bc00000 0 SECTION LOCAL DEFAULT 1 + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND +Symbol table '.symtab' contains 399 entries: + Num: Value Size Type Bind Vis Ndx Name + diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_entrypoint.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_entrypoint.o new file mode 100644 index 000000000..5b15c11ca Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_entrypoint.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o new file mode 100644 index 000000000..360116e4f Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_helper.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o new file mode 100644 index 000000000..f9bd6c337 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/bl2_main.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o new file mode 100644 index 000000000..f65d0c5c1 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/build_message.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o new file mode 100644 index 000000000..24cd418d3 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cache.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o new file mode 100644 index 000000000..5b519211c Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cps_cvi.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o new file mode 100644 index 000000000..89fc24408 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cpu_helper.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o new file mode 100644 index 000000000..797b5fecb Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/crc16.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o new file mode 100644 index 000000000..812db1b3e Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cv_usb.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o new file mode 100644 index 000000000..42a331caf Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_dram_cap_check.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o new file mode 100644 index 000000000..fdc6a703f Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/cvx16_pinmux.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o new file mode 100644 index 000000000..901d0d709 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o new file mode 100644 index 000000000..33b3cac76 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_patch_regs.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o new file mode 100644 index 000000000..28209e42c Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_pkg_info.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o new file mode 100644 index 000000000..5616b5c09 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o new file mode 100644 index 000000000..573b0439c Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddr_sys_bring_up.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o new file mode 100644 index 000000000..69f66962e Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/ddrc_init.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o new file mode 100644 index 000000000..170d31a17 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/decompress.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o new file mode 100644 index 000000000..a085565be Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/delay_timer.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o new file mode 100644 index 000000000..9d1426704 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o new file mode 100644 index 000000000..5641d367c Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/dwc2_udc_otg_xfer_dma.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o new file mode 100644 index 000000000..ed39f4816 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/lz4_all.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o new file mode 100644 index 000000000..7cd1a72df Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/mem.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o new file mode 100644 index 000000000..a0c465275 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o new file mode 100644 index 000000000..9db7c9ec8 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/misc_helpers.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o new file mode 100644 index 000000000..5a319c15c Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_init.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o new file mode 100644 index 000000000..b5d9ac710 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/phy_pll_init.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o new file mode 100644 index 000000000..f08149c58 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o new file mode 100644 index 000000000..2cdc2e40c Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/platform_device.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o new file mode 100644 index 000000000..36e302b48 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/putchar.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o new file mode 100644 index 000000000..a24046ebb Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/security.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o new file mode 100644 index 000000000..af3025b4f Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strchr.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o new file mode 100644 index 000000000..b4194d6e8 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strcmp.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o new file mode 100644 index 000000000..8a1a585be Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strlen.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o new file mode 100644 index 000000000..9730729f0 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strncmp.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o new file mode 100644 index 000000000..902d8c7d8 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/strnlen.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o new file mode 100644 index 000000000..d3fcbcb9d Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/tf_printf.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o new file mode 100644 index 000000000..3a558202a Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/uart_dw.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o new file mode 100644 index 000000000..b41784030 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/usb_tty.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o new file mode 100644 index 000000000..beb342a74 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/bl2/xxhash.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros.bin b/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros.bin new file mode 100755 index 000000000..c9902e4a9 --- /dev/null +++ b/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros.bin @@ -0,0 +1 @@ +ï¾­Þ \ No newline at end of file diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros.env b/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros.env new file mode 100644 index 000000000..a57837ce1 --- /dev/null +++ b/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros.env @@ -0,0 +1,2 @@ +MONITOR_RUNADDR=0x0000000080000000 +BLCP_2ND_RUNADDR=0x0000000087e00000 diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/blmacros.dis b/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/blmacros.dis new file mode 100644 index 000000000..6441aa9a5 --- /dev/null +++ b/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/blmacros.dis @@ -0,0 +1,24 @@ + +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/blmacros.elf: file format elf64-littleriscv +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/blmacros.elf +architecture: riscv:rv64, flags 0x00000112: +EXEC_P, HAS_SYMS, D_PAGED +start address 0x0000000000000000 + +Program Header: + LOAD off 0x0000000000001000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**12 + filesz 0x0000000000000004 memsz 0x0000000000000004 flags r-- + STACK off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**4 + filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw- + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000004 0000000000000000 0000000000000000 00001000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA +SYMBOL TABLE: +0000000000000000 l d .text 0000000000000000 .text +0000000087e00000 g *ABS* 0000000000000000 DEF_BLCP_2ND_RUNADDR +0000000080000000 g *ABS* 0000000000000000 DEF_MONITOR_RUNADDR +0000000080000000 g *ABS* 0000000000000000 DEF_DRAM_BASE + + diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/blmacros.elf b/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/blmacros.elf new file mode 100755 index 000000000..158106cd9 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/blmacros.elf differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/blmacros.ld b/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/blmacros.ld new file mode 100644 index 000000000..c5eb9698a --- /dev/null +++ b/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/blmacros.ld @@ -0,0 +1,10 @@ +SECTIONS +{ + .text : { + LONG(0xDEADBEEF); + *(*) + } + DEF_DRAM_BASE = 0x80000000; + DEF_MONITOR_RUNADDR = 0x80000000; + DEF_BLCP_2ND_RUNADDR = 0x87e00000; +} diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/blmacros.map b/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/blmacros.map new file mode 100644 index 000000000..5a50a45a3 --- /dev/null +++ b/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/blmacros.map @@ -0,0 +1,39 @@ + +Discarded input sections + + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/build_message.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/build_message.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/build_message.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/build_message.o + .rodata.build_message + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/build_message.o + .rodata.version_string + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/build_message.o + .debug_info 0x0000000000000000 0x89 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/build_message.o + .debug_abbrev 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/build_message.o + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/build_message.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/build_message.o + .debug_macro 0x0000000000000000 0x86e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/build_message.o + .debug_line 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/build_message.o + .debug_str 0x0000000000000000 0x29a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/build_message.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/build_message.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/build_message.o + +Memory Configuration + +Name Origin Length Attributes +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + +.text 0x0000000000000000 0x4 + 0x0000000000000000 0x4 LONG 0xdeadbeef + *(*) + 0x0000000080000000 DEF_DRAM_BASE = 0x80000000 + 0x0000000080000000 DEF_MONITOR_RUNADDR = 0x80000000 + 0x0000000087e00000 DEF_BLCP_2ND_RUNADDR = 0x87e00000 +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/build_message.o +OUTPUT(/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/blmacros.elf elf64-littleriscv) diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/blmacros.sym b/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/blmacros.sym new file mode 100644 index 000000000..f7a57862c --- /dev/null +++ b/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/blmacros.sym @@ -0,0 +1,8 @@ + 4: 0000000080000000 0 NOTYPE GLOBAL DEFAULT ABS DEF_DRAM_BASE + 3: 0000000080000000 0 NOTYPE GLOBAL DEFAULT ABS DEF_MONITOR_RUNADDR + 2: 0000000087e00000 0 NOTYPE GLOBAL DEFAULT ABS DEF_BLCP_2ND_RUNADDR + 1: 0000000000000000 0 SECTION LOCAL DEFAULT 1 + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND +Symbol table '.symtab' contains 5 entries: + Num: Value Size Type Bind Vis Ndx Name + diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/build_message.o b/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/build_message.o new file mode 100644 index 000000000..f65d0c5c1 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/blmacros/build_message.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/chip_conf.bin b/fsbl/build/cv1801c_wevb_0009a_spinand/chip_conf.bin new file mode 100644 index 000000000..d2dabd686 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/chip_conf.bin differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinand/fip.bin b/fsbl/build/cv1801c_wevb_0009a_spinand/fip.bin new file mode 100644 index 000000000..7fa98d62e Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinand/fip.bin differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2.bin b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2.bin new file mode 100755 index 000000000..986785866 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2.bin differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o new file mode 100644 index 000000000..899c320fb Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o new file mode 100644 index 000000000..e67d0500f Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2.dis b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2.dis new file mode 100644 index 000000000..8466bc06d --- /dev/null +++ b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2.dis @@ -0,0 +1,14885 @@ + +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2.elf: file format elf64-littleriscv +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2.elf +architecture: riscv:rv64, flags 0x00000112: +EXEC_P, HAS_SYMS, D_PAGED +start address 0x000000003bc00000 + +Program Header: + LOAD off 0x0000000000001000 vaddr 0x000000003bc00000 paddr 0x000000003bc00000 align 2**12 + filesz 0x000000000000ba10 memsz 0x0000000000013810 flags rwx + STACK off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**4 + filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw- + +Sections: +Idx Name Size VMA LMA File off Algn + 0 ro 0000b74c 000000003bc00000 000000003bc00000 00001000 2**3 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 000002c4 000000003bc0b74c 000000003bc0b74c 0000c74c 2**3 + CONTENTS, ALLOC, LOAD, DATA + 2 stacks 00002030 000000003bc0ba10 000000003bc0ba10 0000ca10 2**0 + ALLOC + 3 .bss 00005c10 000000003bc0dc00 000000003bc0dc00 0000ca10 2**9 + ALLOC + 4 .debug_info 0006993c 0000000000000000 0000000000000000 0000ca10 2**0 + CONTENTS, READONLY, DEBUGGING + 5 .debug_abbrev 00004df7 0000000000000000 0000000000000000 0007634c 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_aranges 00001e80 0000000000000000 0000000000000000 0007b150 2**4 + CONTENTS, READONLY, DEBUGGING + 7 .debug_macro 00009b13 0000000000000000 0000000000000000 0007cfd0 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_line 000777fd 0000000000000000 0000000000000000 00086ae3 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_str 0002399c 0000000000000000 0000000000000000 000fe2e0 2**0 + CONTENTS, READONLY, DEBUGGING + 10 .comment 0000001d 0000000000000000 0000000000000000 00121c7c 2**0 + CONTENTS, READONLY + 11 .debug_ranges 000301e0 0000000000000000 0000000000000000 00121c99 2**0 + CONTENTS, READONLY, DEBUGGING + 12 .debug_frame 00004810 0000000000000000 0000000000000000 00151e80 2**3 + CONTENTS, READONLY, DEBUGGING + 13 .debug_loc 000c2b4e 0000000000000000 0000000000000000 00156690 2**0 + CONTENTS, READONLY, DEBUGGING +SYMBOL TABLE: +000000003bc00000 l d ro 0000000000000000 ro +000000003bc0b74c l d .data 0000000000000000 .data +000000003bc0ba10 l d stacks 0000000000000000 stacks +000000003bc0dc00 l d .bss 0000000000000000 .bss +0000000000000000 l d .debug_info 0000000000000000 .debug_info +0000000000000000 l d .debug_abbrev 0000000000000000 .debug_abbrev +0000000000000000 l d .debug_aranges 0000000000000000 .debug_aranges +0000000000000000 l d .debug_macro 0000000000000000 .debug_macro +0000000000000000 l d .debug_line 0000000000000000 .debug_line +0000000000000000 l d .debug_str 0000000000000000 .debug_str +0000000000000000 l d .comment 0000000000000000 .comment +0000000000000000 l d .debug_ranges 0000000000000000 .debug_ranges +0000000000000000 l d .debug_frame 0000000000000000 .debug_frame +0000000000000000 l d .debug_loc 0000000000000000 .debug_loc +0000000000000000 l df *ABS* 0000000000000000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_entrypoint.o +000000003bc00020 l ro 0000000000000000 bl2_entrypoint_real +000000003bc00144 l ro 0000000000000000 trap_vector +000000003bc0012c l ro 0000000000000000 bss_clear +000000003bc00144 l ro 0000000000000000 die +0000000000000000 l df *ABS* 0000000000000000 cpu_helper.c +0000000000000000 l df *ABS* 0000000000000000 cache.c +0000000000000000 l df *ABS* 0000000000000000 delay_timer.c +0000000000000000 l df *ABS* 0000000000000000 bl2_helper.c +000000003bc136c8 l O .bss 0000000000000030 fw_dynamic_info +0000000000000000 l df *ABS* 0000000000000000 uart_dw.c +0000000000000000 l df *ABS* 0000000000000000 tf_printf.c +000000003bc002d6 l F ro 0000000000000082 unsigned_num_print +0000000000000000 l df *ABS* 0000000000000000 platform.c +0000000000000000 l df *ABS* 0000000000000000 security.c +0000000000000000 l df *ABS* 0000000000000000 misc.c +0000000000000000 l df *ABS* 0000000000000000 mem.c +0000000000000000 l df *ABS* 0000000000000000 putchar.c +0000000000000000 l df *ABS* 0000000000000000 strcmp.c +0000000000000000 l df *ABS* 0000000000000000 strlen.c +0000000000000000 l df *ABS* 0000000000000000 platform_device.c +0000000000000000 l df *ABS* 0000000000000000 bl2_main.c +000000003bc00c14 l F ro 000000000000001a read_time_ms +000000003bc0dc00 l O .bss 0000000000001000 fip_param2 +000000003bc0ec00 l O .bss 0000000000004000 sram_union_buf +0000000000000000 l df *ABS* 0000000000000000 decompress.c +000000003bc014c4 l F ro 0000000000000002 SzFree +000000003bc014c6 l F ro 0000000000000042 SzAlloc +000000003bc136f8 l O .bss 0000000000000008 comp_alloc_buf +000000003bc13700 l O .bss 0000000000000008 comp_alloc_size +000000003bc0aaa0 l O ro 0000000000000008 __func__.0 +000000003bc0aaa8 l O ro 0000000000000010 __func__.1 +0000000000000000 l df *ABS* 0000000000000000 cps_cvi.c +0000000000000000 l df *ABS* 0000000000000000 usb_tty.c +000000003bc01756 l F ro 0000000000000002 resume +000000003bc01758 l F ro 0000000000000038 requestMemAlloc +000000003bc01790 l F ro 0000000000000002 requestMemFree +000000003bc01792 l F ro 000000000000001c acm_complete_set_line_coding +000000003bc017ae l F ro 0000000000000014 reset +000000003bc017c2 l F ro 000000000000002e disconnect +000000003bc017f0 l F ro 0000000000000026 unbind +000000003bc01816 l F ro 0000000000000042 bind +000000003bc01858 l F ro 0000000000000052 get_unicode_string +000000003bc018aa l F ro 0000000000000234 bulkOutCmpl +000000003bc01b64 l F ro 0000000000000050 bulkInCmpl +000000003bc01ade l F ro 000000000000005c getDescAcm +000000003bc01b3a l F ro 000000000000002a reqComplete +000000003bc01bb4 l F ro 0000000000000442 setup +000000003bc01ff6 l F ro 0000000000000002 suspend +000000003bc13804 l O .bss 0000000000000001 ack_idx.6 +000000003bc13710 l O .bss 0000000000000008 bulkBuf +000000003bc13718 l O .bss 0000000000000008 bulkInReq +000000003bc13720 l O .bss 0000000000000008 bulkOutReq +000000003bc13728 l O .bss 0000000000000008 cmdBuf +000000003bc13806 l O .bss 0000000000000001 configBreak +000000003bc13807 l O .bss 0000000000000001 configValue +000000003bc13730 l O .bss 0000000000000008 ep0Buff +000000003bc13738 l O .bss 0000000000000008 ep0Req +000000003bc13740 l O .bss 0000000000000008 epIn +000000003bc13748 l O .bss 0000000000000008 epOut +000000003bc13750 l O .bss 0000000000000008 fip_buf +000000003bc137e0 l O .bss 0000000000000004 fip_tx_offset +000000003bc137e4 l O .bss 0000000000000004 fip_tx_size +000000003bc13808 l O .bss 0000000000000001 flagEnterDL +000000003bc13809 l O .bss 0000000000000001 flagReboot +000000003bc1380a l O .bss 0000000000000001 is_serial_patched.3 +000000003bc1380b l O .bss 0000000000000001 mem_alloc_cnt +000000003bc13758 l O .bss 000000000000001c productDesc +000000003bc13778 l O .bss 0000000000000010 serial.2 +000000003bc13788 l O .bss 000000000000001c serialDesc +000000003bc137e8 l O .bss 0000000000000004 transfer_size +000000003bc137ec l O .bss 0000000000000004 ts +000000003bc137a8 l O .bss 0000000000000010 vendorDesc +000000003bc0b758 l O .data 0000000000000009 ConfDesc +000000003bc0b768 l O .data 0000000000000008 acm_buf +000000003bc0b770 l O .data 0000000000000005 acm_call_mgmt_descriptor +000000003bc0b778 l O .data 0000000000000009 acm_control_interface_desc +000000003bc0b788 l O .data 0000000000000009 acm_data_interface_desc +000000003bc0b798 l O .data 0000000000000004 acm_descriptor +000000003bc0b7a0 l O .data 0000000000000007 acm_fs_in_desc +000000003bc0b7a8 l O .data 0000000000000007 acm_fs_notify_desc +000000003bc0b7b0 l O .data 0000000000000007 acm_fs_out_desc +000000003bc0b7b8 l O .data 0000000000000005 acm_header_desc +000000003bc0b7c0 l O .data 0000000000000007 acm_hs_in_desc +000000003bc0b7c8 l O .data 0000000000000007 acm_hs_notify_desc +000000003bc0b7d0 l O .data 0000000000000007 acm_hs_out_desc +000000003bc0b7d8 l O .data 0000000000000005 acm_union_desc +000000003bc0b7e0 l O .data 0000000000000005 bosDesc +000000003bc0b7e8 l O .data 0000000000000008 bulkBufAlloc +000000003bc0b7f0 l O .data 0000000000000007 capabilityExtDesc +000000003bc0b7f8 l O .data 0000000000000008 cb0_buf +000000003bc0b800 l O .data 0000000000000008 cb1_buf +000000003bc0b808 l O .data 0000000000000008 cb2_buf +000000003bc0b810 l O .data 0000000000000008 cmdBufAlloc +000000003bc0b818 l O .data 0000000000000050 descriptorsFs +000000003bc0b868 l O .data 0000000000000050 descriptorsHs +000000003bc0b8b8 l O .data 0000000000000012 devHsDesc +000000003bc0b8d0 l O .data 0000000000000050 drv_obj +000000003bc0b920 l O .data 0000000000000008 ep0BuffAlloc +000000003bc0b928 l O .data 0000000000000058 g_driver +000000003bc0b980 l O .data 0000000000000008 handler +000000003bc0b988 l O .data 0000000000000004 languageDesc +000000003bc0b990 l O .data 000000000000000a qualifierDesc +000000003bc0b9a0 l O .data 0000000000000008 rsp_buf +000000003bc0b9a8 l O .data 0000000000000008 setup_buf +000000003bc0ae98 l O ro 0000000000000005 __func__.0 +000000003bc0aea0 l O ro 0000000000000007 __func__.1 +000000003bc0aea8 l O ro 000000000000000b __func__.4 +000000003bc0aeb8 l O ro 0000000000000006 __func__.5 +0000000000000000 l df *ABS* 0000000000000000 dwc2_udc_otg.c +000000003bc0275c l F ro 0000000000000016 dwc2_fifo_status +000000003bc02772 l F ro 000000000000003a dwc2_free_request +000000003bc027ac l F ro 0000000000000048 pullup +000000003bc027f4 l F ro 0000000000000038 dwc2_alloc_request +000000003bc0282c l F ro 00000000000000a0 dwc2_ep_enable +000000003bc028cc l F ro 0000000000000002 dwc2_fifo_flush +000000003bc02960 l F ro 0000000000000054 dwc2_dequeue +000000003bc02ac2 l F ro 000000000000003c wakeup +000000003bc02b44 l F ro 0000000000000090 dwc2_hsotg_txfifo_flush.constprop.0 +000000003bc02bd4 l F ro 000000000000005e kill_all_requests.isra.0 +000000003bc02c88 l F ro 00000000000000da dwc2_hsotg_init_fifo.constprop.0 +000000003bc02d62 l F ro 00000000000001a6 _dwc2_ep_disable.isra.0 +000000003bc02f08 l F ro 0000000000000020 dwc2_ep_disable +000000003bc0b9b0 l O .data 0000000000000050 dwc2_ep_ops +000000003bc0b0a8 l O ro 0000000000000012 __func__.0 +000000003bc0b0c0 l O ro 0000000000000011 __func__.1 +000000003bc0b0d8 l O ro 0000000000000013 __func__.2 +000000003bc0b0f0 l O ro 0000000000000018 __func__.3 +000000003bc0b108 l O ro 0000000000000015 __func__.4 +000000003bc0b120 l O ro 0000000000000009 driver_name +000000003bc0b130 l O ro 0000000000000048 dwc2_udc_ops +000000003bc0b178 l O ro 000000000000000c ep0name +000000003bc0b188 l O ro 000000000000000b ep1name +000000003bc0b198 l O ro 000000000000000c ep2name +000000003bc0b1a8 l O ro 000000000000000a ep3name +0000000000000000 l df *ABS* 0000000000000000 dwc2_udc_otg_xfer_dma.c +000000003bc034ba l F ro 000000000000008e set_max_pktsize +000000003bc03548 l F ro 000000000000005e dwc2_udc_ep_clear_stall +000000003bc035a6 l F ro 0000000000000062 dwc2_udc_ep_set_stall +000000003bc03608 l F ro 0000000000000080 dwc2_ep0_complete_out +000000003bc03688 l F ro 000000000000007e dwc2_udc_ep0_zlp +000000003bc03706 l F ro 0000000000000068 dwc2_udc_ep0_set_stall.isra.0 +000000003bc0376e l F ro 00000000000000aa setdma_rx.isra.0 +000000003bc03818 l F ro 00000000000000fc complete_rx +000000003bc0396e l F ro 000000000000015c setdma_tx +000000003bc0ba00 l O .data 0000000000000004 ep0_fifo_size +000000003bc0ba04 l O .data 0000000000000004 ep_fifo_size +0000000000000000 l df *ABS* 0000000000000000 cv_usb.c +0000000000000000 l df *ABS* 0000000000000000 crc16.c +000000003bc0b230 l O ro 0000000000000200 crc16_tab +0000000000000000 l df *ABS* 0000000000000000 LzmaDec.c +000000003bc04746 l F ro 0000000000000072 LzmaDec_WriteRem +000000003bc047b8 l F ro 000000000000138a LzmaDec_DecodeReal2 +000000003bc05b42 l F ro 00000000000004e8 LzmaDec_TryDummy +000000003bc062d6 l F ro 0000000000000066 LzmaDec_AllocateProbs2.isra.0 +0000000000000000 l df *ABS* 0000000000000000 lz4_all.c +000000003bc06460 l F ro 0000000000000024 LZ4F_readLE32 +000000003bc06484 l F ro 0000000000000276 LZ4_decompress_safe_withSmallPrefix +000000003bc066fa l F ro 0000000000000110 LZ4F_updateDict +000000003bc07048 l F ro 00000000000001a4 LZ4F_decodeHeader +000000003bc0b470 l O ro 0000000000000020 blockSizes.0 +000000003bc0b490 l O ro 0000000000000020 dec64table +000000003bc0b4b0 l O ro 0000000000000020 inc32table +0000000000000000 l df *ABS* 0000000000000000 xxhash.c +000000003bc079f8 l F ro 000000000000002c XXH32_avalanche +000000003bc07a24 l F ro 0000000000000016 XXH_read32 +000000003bc07a3a l F ro 000000000000033a XXH32_finalize.constprop.0 +0000000000000000 l df *ABS* 0000000000000000 ddr.c +0000000000000000 l df *ABS* 0000000000000000 ddr_pkg_info.c +0000000000000000 l df *ABS* 0000000000000000 ddr_sys_bring_up.c +0000000000000000 l df *ABS* 0000000000000000 ddr_sys.c +0000000000000000 l df *ABS* 0000000000000000 phy_pll_init.c +0000000000000000 l df *ABS* 0000000000000000 cvx16_pinmux.c +0000000000000000 l df *ABS* 0000000000000000 cvx16_dram_cap_check.c +0000000000000000 l df *ABS* 0000000000000000 ddrc_init.c +0000000000000000 l df *ABS* 0000000000000000 phy_init.c +0000000000000000 l df *ABS* 0000000000000000 +000000003bc08404 g F ro 000000000000000a get_ddr_vendor +000000003bc001b4 g F ro 000000000000000a mdelay +000000003bc0840e g F ro 0000000000000050 axi_mon_start_all +000000003bc0216a g F ro 0000000000000006 AcmIsr +000000003bc13800 g O .bss 0000000000000004 tar_freq +000000003bc0b750 g O .data 0000000000000008 time_records +0000000004400100 g *ABS* 0000000000000000 p_rom_api_cryptodma_aes_decrypt +000000003bc137f8 g O .bss 0000000000000004 freq_in +000000003bc00d3e g F ro 00000000000000ae load_ddr_param +000000003bc0a320 g O ro 0000000000000010 version_string +0000000004400080 g *ABS* 0000000000000000 p_rom_api_flash_init +000000003bc009a2 g F ro 0000000000000004 dec_verify_image +000000003bc03cac g F ro 00000000000000b2 dwc2_udc_ep_activate +000000003bc00afa g F ro 0000000000000052 putchar_l +000000003bc0161e g F ro 0000000000000002 LZ4_free +000000003bc045e4 g F ro 0000000000000018 dwc2_ep0_kick +0000000004400020 g *ABS* 0000000000000000 p_rom_api_get_boot_src +000000003bc03914 g F ro 0000000000000016 dwc2_udc_pre_setup +000000003bc00292 g F ro 0000000000000002 jump_to_loader_2nd +000000003bc0021a g F ro 0000000000000078 jump_to_monitor +000000003bc13680 g O .bss 0000000000000010 rsp_bufArr +000000003bc137d8 g O .bss 0000000000000008 reg_step +000000003bc137b8 g O .bss 0000000000000008 reg +000000003bc03b5a g F ro 0000000000000048 dwc2_set_address +000000003bc00ada g F ro 0000000000000020 memmove +000000003bc08682 g F ro 000000000000004e cvx16_bist_wr_prbs_init +000000003bc12c80 g O .bss 0000000000000200 bulkBufAllocArr +000000003bc0680a g F ro 000000000000026e LZ4_decompress_safe +000000003bc13805 g O .bss 0000000000000001 acm_configValue +000000003bc08d22 g F ro 0000000000000044 cvx16_ddr_phy_power_on_seq1 +000000003bc0603e g F ro 000000000000027c LzmaDec_DecodeToDic +000000003bc08776 g F ro 0000000000000046 cvx16_bist_rdglvl_init +000000003bc08730 g F ro 0000000000000046 cvx16_bist_wrlvl_init +000000003bc0a300 g O ro 000000000000001a build_message +000000003bc095b6 g F ro 0000000000000182 cvx16_wdqlvl_req +000000003bc0b750 g .data 0000000000000000 __DATA_START__ +000000003bc004f2 g F ro 00000000000000c8 __system_reset +000000003bc00834 g F ro 0000000000000044 switch_rtc_mode_2nd_stage +000000003bc01346 g F ro 00000000000000e6 load_rest +000000003bc04714 g F ro 0000000000000032 crc16_ccitt +000000003bc08e3a g F ro 0000000000000028 cvx16_set_dfi_init_complete +000000003bc08de8 g F ro 0000000000000038 cvx16_wait_for_dfi_init_complete +000000003bc03b0e g F ro 000000000000004c dwc2_write_fifo_ep0 +000000003bc12f00 g O .bss 0000000000000080 cb1_bufArr +000000003bc090b8 g F ro 00000000000001d6 cvx16_wrlvl_req +000000003bc02afe g F ro 0000000000000046 dwc2_hsotg_wait_bit_set +000000003bc093cc g F ro 00000000000001ea cvx16_rdlvl_req +000000003bc00a7a g F ro 0000000000000060 memcpy +000000003bc088a6 g F ro 00000000000000b0 cvx16_bist_wdqlvl_init +000000003bc028d0 g F ro 000000000000000a dwc2_get_ep0_name +000000003bc02a9e g F ro 0000000000000024 dwc2_hsotg_clear_bit +000000003bc03bca g F ro 0000000000000040 dwc2_ep0_write +000000003bc028ce g F ro 0000000000000002 dwc2_log_write +000000003bc02a7c g F ro 0000000000000022 dwc2_hsotg_set_bit +000000003bc136c0 g O .bss 0000000000000008 setup_bufArr +000000003bc09e66 g F ro 000000000000002e ctrl_init_low_patch +000000003bc0602a g F ro 0000000000000014 LzmaDec_Init +000000003bc01018 g F ro 0000000000000126 load_monitor +000000003bc1380f g O .bss 0000000000000001 pkg +000000003bc0da40 g stacks 0000000000000000 __STACKS_END__ +000000003bc08c14 g F ro 0000000000000016 cvx16_clk_div40 +000000003bc005ba g F ro 0000000000000032 panic_handler +000000003bc029b4 g F ro 000000000000002e dwc2_nuke +000000003bc001e2 g F ro 000000000000002a get_random_from_timer +000000003bc09c12 g F ro 0000000000000002 cvx16_dram_cap_check +000000003bc089b6 g F ro 000000000000006a cvx16_bist_start_check +000000003bc137fc g O .bss 0000000000000004 mod_freq +000000003bc00b7a g F ro 000000000000007c gpio_in_value +00000000044000e0 g *ABS* 0000000000000000 p_rom_api_verify_rsa +000000003bc09738 g F ro 0000000000000002 cvx16_en_rec_vol_mode +000000003bc0020c g F ro 000000000000000e read_count_tick +000000003bc09048 g F ro 0000000000000070 cvx16_clk_gating_enable +000000003bc016ce g F ro 000000000000007e decompress +000000003bc086d0 g F ro 0000000000000060 cvx16_bist_wr_sram_init +0000000000005c10 g *ABS* 0000000000000000 __BSS_SIZE__ +000000003bc001be g F ro 0000000000000024 get_timer +000000003bc08dae g F ro 000000000000003a cvx16_ddr_phy_power_on_seq3 +000000003bc031b6 g F ro 0000000000000156 usb_gadget_register_driver +000000003bc002a4 g F ro 000000000000001e console_putc +000000003bc137f0 g O .bss 0000000000000004 rddata +000000003bc08c2a g F ro 00000000000000f8 cvx16_chg_pll_freq +000000003bc00294 g F ro 0000000000000010 _uart_putc +000000003bc00156 g F ro 0000000000000024 flush_dcache_range +000000003bc12e80 g O .bss 0000000000000080 cb0_bufArr +000000003bc0068e g F ro 000000000000018e sys_pll_nd +000000003bc00832 g F ro 0000000000000002 switch_rtc_mode_1st_stage +000000003bc00878 g F ro 00000000000000bc set_rtc_en_registers +000000003bc00c6e g F ro 00000000000000d0 load_param2 +000000003bc0721c g F ro 00000000000007dc LZ4F_decompress +000000003bc098d8 g F ro 000000000000033a cvx16_pinmux +000000003bc08b3a g F ro 0000000000000068 cvx16_dll_cal +000000003bc02170 g F ro 0000000000000138 acm_app_init +000000003bc022e4 g F ro 0000000000000478 AcmApp +000000003bc08ffe g F ro 000000000000004a cvx16_clk_gating_disable +000000003bc071ec g F ro 0000000000000030 LZ4F_createDecompressionContext +000000003bc0174c g F ro 0000000000000006 DWC2_UncachedRead32 +000000003bc022b4 g F ro 0000000000000030 get_usb_polling_timeout_value +000000003bc03ba2 g F ro 0000000000000028 dwc2_ep0_read +000000003bc13200 g O .bss 0000000000000080 ep0BuffAllocArr +000000003bc0346e g F ro 000000000000004c usb_gadget_handle_interrupts +000000003bc13810 g .bss 0000000000000000 __BL2_END__ +000000003bc08d66 g F ro 0000000000000048 cvx16_ddr_phy_power_on_seq2 +000000003bc08e62 g F ro 000000000000002c cvx16_INT_ISR_08 +000000003bc06ce2 g F ro 0000000000000316 LZ4_decompress_safe_forceExtDict +000000003bc01ff8 g F ro 00000000000000a2 convert_buf_addr +000000003bc06386 g F ro 0000000000000030 LzmaDec_AllocateProbs +000000003bc08f58 g F ro 00000000000000a6 cvx16_pll_init +000000003bc0142c g F ro 0000000000000098 bl2_main +000000003bc0ba10 g .data 0000000000000000 __DATA_END__ +000000003bc062ba g F ro 000000000000001c LzmaDec_FreeProbs +000000003bc01508 g F ro 00000000000000e8 decompress_lzma +000000003bc0017a g F ro 0000000000000010 trig_simulation_timer +000000003bc08956 g F ro 0000000000000060 cvx16_bist_wdmlvl_init +000000003bc0018a g F ro 000000000000002a udelay +000000003bc08e20 g F ro 000000000000001a cvx16_polling_dfi_init_start +000000003bc02920 g F ro 0000000000000040 dwc2_done +000000003bc087bc g F ro 00000000000000ea cvx16_bist_rdlvl_init +000000003bc1380e g O .bss 0000000000000001 ddr_vendor +00000000044000a0 g *ABS* 0000000000000000 p_rom_api_image_crc +000000003bc00c2e g F ro 0000000000000040 load_image_by_usb +000000003bc00000 g ro 0000000000000000 bl2_entrypoint +000000003bc0113e g F ro 0000000000000208 load_loader_2nd +000000003bc02c32 g F ro 0000000000000056 dwc2_disconnect +000000003bc0331e g F ro 0000000000000150 dwc2_udc_probe +000000003bc00934 g F ro 000000000000006e init_comm_info +000000003bc137f4 g O .bss 0000000000000004 dev_freq +000000003bc045fc g F ro 00000000000000d8 dwc2_queue +000000003bc00680 g F ro 000000000000000e sys_switch_all_to_pll +000000003bc13810 g .bss 0000000000000000 __BSS_END__ +000000003bc081d6 g F ro 000000000000022e read_ddr_pkg_info +000000003bc12c00 g O .bss 0000000000000080 acm_bufArr +0000000004400040 g *ABS* 0000000000000000 p_rom_api_set_boot_src +000000003bc0633c g F ro 000000000000004a LzmaProps_Decode +000000003bc08f12 g F ro 0000000000000020 cvx16_setting_check +000000003bc00eb2 g F ro 0000000000000166 load_blcp_2nd +000000003bc137d0 g O .bss 0000000000000008 reg_span +000000003bc08ba2 g F ro 000000000000005c cvx16_clk_normal +000000003bc022a8 g F ro 000000000000000c usb_vbus_det +000000003bc00a20 g F ro 000000000000005a memset +000000003bc03c4a g F ro 0000000000000062 dwc2_udc_set_halt +000000003bc07f90 g F ro 00000000000001d2 XXH32_update +000000003bc0a488 g O ro 0000000000000025 hex2ascii_data +000000003bc09e94 g F ro 00000000000000b2 ctrl_init_update_by_dram_size +000000003bc03d5e g F ro 0000000000000346 dwc2_handle_ep0 +000000003bc00b4c g F ro 000000000000001c strcmp +000000003bc07f3a g F ro 0000000000000056 XXH32_reset +000000003bc07d74 g F ro 00000000000001c6 XXH32 +000000003bc08a20 g F ro 00000000000000a6 cvx16_rdvld_train +000000003bc09c14 g F ro 0000000000000224 ddrc_init +000000003bc06a78 g F ro 000000000000026a LZ4_decompress_safe_withPrefix64k +000000003bc00358 g F ro 000000000000019a tf_printf +000000003bc029e2 g F ro 000000000000009a usb_gadget_unregister_driver +000000003bc015f6 g F ro 0000000000000028 LZ4_calloc +000000003bc002c2 g F ro 0000000000000014 console_flush +000000003bc0209a g F ro 00000000000000d0 print_buf_addr +000000003bc0b74c g ro 0000000000000000 __RO_END__ +000000003bc12f80 g O .bss 0000000000000080 cb2_bufArr +0000000004400060 g *ABS* 0000000000000000 p_rom_api_load_image +000000003bc0701e g F ro 000000000000000c LZ4F_isError +000000003bc0dc00 g .bss 0000000000000000 __BSS_START__ +000000003bc03c0a g F ro 0000000000000040 dwc2_udc_set_nak +000000003bc00000 g ro 0000000000000000 __RO_START__ +000000003bc0928e g F ro 000000000000013e cvx16_rdglvl_req +000000003bc0330c g F ro 0000000000000012 dwc2_phy_to_log_ep +000000003bc009a6 g F ro 000000000000007a ntostr +000000003bc046d4 g F ro 0000000000000040 usb_polling +000000003bc08e8e g F ro 000000000000001c cvx16_polling_synp_normal_mode +000000003bc06ff8 g F ro 0000000000000026 LZ4_decompress_safe_usingDict +000000003bc015f0 g F ro 0000000000000006 LZ4_malloc +000000003bc0973a g F ro 000000000000011a ctrl_init_detect_dram_size +00000000044000c0 g *ABS* 0000000000000000 p_rom_api_get_number_of_retries +000000003bc0014c g F ro 000000000000000a sync_cache +000000003bc00636 g F ro 000000000000004a setup_dl_flag +000000003bc005ec g F ro 000000000000004a reset_c906l +000000003bc137c8 g O .bss 0000000000000008 reg_set +000000003bc063b6 g F ro 00000000000000aa LzmaDecode +000000003bc00bf6 g F ro 000000000000001e usb_id_det +000000003bc0ba40 g stacks 0000000000000000 __STACKS_START__ +000000003bc0ba08 g O .data 0000000000000002 cv_usb_vid +000000003bc0081c g F ro 0000000000000016 sys_pll_init +000000003bc03aca g F ro 0000000000000044 dwc2_ep_fifo_read +000000003bc0ba0c g O .data 0000000000000004 ddr_data_rate +000000003bc13280 g O .bss 0000000000000400 handlerArr +000000003bc08eaa g F ro 0000000000000068 cvx16_dfi_ca_park_prbs +000000003bc040a4 g F ro 0000000000000540 dwc2_udc_irq +000000003bc13000 g O .bss 0000000000000200 cmdBufAllocArr +000000003bc00b68 g F ro 0000000000000012 strlen +000000003bc1380d g O .bss 0000000000000001 ddr_type +000000003bc0845e g F ro 0000000000000224 ddr_sys_bring_up +000000003bc08162 g F ro 0000000000000040 XXH32_digest +000000003bc081a2 g F ro 0000000000000034 ddr_init +000000003bc0392a g F ro 0000000000000044 dwc2_ep_fifo_write +000000003bc01620 g F ro 00000000000000ae decompress_lz4 +000000003bc0702a g F ro 000000000000001e LZ4F_getBlockSize +000000003bc1380c g O .bss 0000000000000001 ddr_capacity +000000003bc13708 g O .bss 0000000000000008 acm +000000003bc01752 g F ro 0000000000000004 DWC2_UncachedWrite32 +000000003bc137c0 g O .bss 0000000000000008 the_controller +000000003bc08f32 g F ro 0000000000000026 cvx16_set_dfi_init_start +000000003bc09e38 g F ro 000000000000002e ctrl_init_high_patch +000000003bc00dec g F ro 00000000000000c6 load_ddr +000000003bc08ac6 g F ro 0000000000000074 cvx16_synp_mrw +000000003bc028da g F ro 0000000000000046 udc_reinit +000000003bc08bfe g F ro 0000000000000016 cvx16_clk_div2 +000000003bc09f46 g F ro 00000000000003b6 phy_init +000000003bc09854 g F ro 0000000000000084 pll_init +000000003bc02f28 g F ro 000000000000028e dwc2_reconfig_usbd + + + +Disassembly of section ro: + +000000003bc00000 <__RO_START__>: + 3bc00000: 0200006f j 3bc00020 + ... + +000000003bc00020 : + 3bc00020: 05900e1b addiw t3,zero,89 + 3bc00024: 019e1e13 slli t3,t3,0x19 + 3bc00028: 03000eb7 lui t4,0x3000 + 3bc0002c: 084e8e9b addiw t4,t4,132 + 3bc00030: 01cea023 sw t3,0(t4) # 3000000 <__BSS_SIZE__+0x2ffa3f0> + 3bc00034: 00000093 li ra,0 + 3bc00038: 00000113 li sp,0 + 3bc0003c: 00000193 li gp,0 + 3bc00040: 00000213 li tp,0 + 3bc00044: 00000293 li t0,0 + 3bc00048: 00000313 li t1,0 + 3bc0004c: 00000393 li t2,0 + 3bc00050: 00000413 li s0,0 + 3bc00054: 00000493 li s1,0 + 3bc00058: 00000513 li a0,0 + 3bc0005c: 00000593 li a1,0 + 3bc00060: 00000613 li a2,0 + 3bc00064: 00000693 li a3,0 + 3bc00068: 00000713 li a4,0 + 3bc0006c: 00000793 li a5,0 + 3bc00070: 00000813 li a6,0 + 3bc00074: 00000893 li a7,0 + 3bc00078: 00000913 li s2,0 + 3bc0007c: 00000993 li s3,0 + 3bc00080: 00000a13 li s4,0 + 3bc00084: 00000a93 li s5,0 + 3bc00088: 00000b13 li s6,0 + 3bc0008c: 00000b93 li s7,0 + 3bc00090: 00000c13 li s8,0 + 3bc00094: 00000c93 li s9,0 + 3bc00098: 00000d13 li s10,0 + 3bc0009c: 00000d93 li s11,0 + 3bc000a0: 00000e13 li t3,0 + 3bc000a4: 00000e93 li t4,0 + 3bc000a8: 00000f13 li t5,0 + 3bc000ac: 00000f93 li t6,0 + 3bc000b0: 34001073 csrw mscratch,zero + 3bc000b4: 00000297 auipc t0,0x0 + 3bc000b8: 09028293 addi t0,t0,144 # 3bc00144 + 3bc000bc: 30529073 csrw mtvec,t0 + 3bc000c0: 000181b7 lui gp,0x18 + 3bc000c4: 0c71819b addiw gp,gp,199 + 3bc000c8: 00f19193 slli gp,gp,0xf + 3bc000cc: 7c019073 csrw mxstatus,gp + 3bc000d0: 702001b7 lui gp,0x70200 + 3bc000d4: ffc1819b addiw gp,gp,-4 + 3bc000d8: 00100213 li tp,1 + 3bc000dc: 0041a023 sw tp,0(gp) # 70200000 <__BL2_END__+0x345ec7f0> + 3bc000e0: 03300193 li gp,51 + 3bc000e4: 7c21b073 csrc mcor,gp + 3bc000e8: 01100193 li gp,17 + 3bc000ec: 7c21a073 csrs mcor,gp + 3bc000f0: 00100193 li gp,1 + 3bc000f4: 7c11a073 csrs mhcr,gp + 3bc000f8: 03300193 li gp,51 + 3bc000fc: 7c21b073 csrc mcor,gp + 3bc00100: 01200193 li gp,18 + 3bc00104: 7c21a073 csrs mcor,gp + 3bc00108: 00200193 li gp,2 + 3bc0010c: 7c11a073 csrs mhcr,gp + 3bc00110: 0000e117 auipc sp,0xe + 3bc00114: 93010113 addi sp,sp,-1744 # 3bc0da40 <__STACKS_END__> + 3bc00118: 0000e697 auipc a3,0xe + 3bc0011c: ae868693 addi a3,a3,-1304 # 3bc0dc00 <__BSS_START__> + 3bc00120: 00013717 auipc a4,0x13 + 3bc00124: 6f070713 addi a4,a4,1776 # 3bc13810 <__BL2_END__> + 3bc00128: 40d70733 sub a4,a4,a3 + +000000003bc0012c : + 3bc0012c: 0006b023 sd zero,0(a3) + 3bc00130: 00868693 addi a3,a3,8 + 3bc00134: ff870713 addi a4,a4,-8 + 3bc00138: fe071ae3 bnez a4,3bc0012c + 3bc0013c: 2f0010ef jal ra,3bc0142c + 3bc00140: 0040006f j 3bc00144 + +000000003bc00144 : + 3bc00144: 4760006f j 3bc005ba + 3bc00148: ffdff06f j 3bc00144 + +000000003bc0014c : + 3bc0014c: 0100000b icache.iall + 3bc00150: 01a0000b sync.i + 3bc00154: 8082 ret + +000000003bc00156 : + 3bc00156: 87aa mv a5,a0 + 3bc00158: 03f58593 addi a1,a1,63 + 3bc0015c: 95be add a1,a1,a5 + 3bc0015e: fc057513 andi a0,a0,-64 + 3bc00162: fc05f593 andi a1,a1,-64 + 3bc00166: 00b56563 bltu a0,a1,3bc00170 + 3bc0016a: 0190000b sync.s + 3bc0016e: 8082 ret + 3bc00170: 02b5000b dcache.cipa a0 + 3bc00174: 04050513 addi a0,a0,64 + 3bc00178: b7fd j 3bc00166 + +000000003bc0017a : + 3bc0017a: 47e5 li a5,25 + 3bc0017c: 02a787bb mulw a5,a5,a0 + 3bc00180: 03000737 lui a4,0x3000 + 3bc00184: 08f72423 sw a5,136(a4) # 3000088 <__BSS_SIZE__+0x2ffa478> + 3bc00188: 8082 ret + +000000003bc0018a : + 3bc0018a: c0102773 rdtime a4 + 3bc0018e: 47e5 li a5,25 + 3bc00190: 02a786bb mulw a3,a5,a0 + 3bc00194: fff74713 not a4,a4 + 3bc00198: 030007b7 lui a5,0x3000 + 3bc0019c: 2701 sext.w a4,a4 + 3bc0019e: 08d7a423 sw a3,136(a5) # 3000088 <__BSS_SIZE__+0x2ffa478> + 3bc001a2: c01027f3 rdtime a5 + 3bc001a6: fff7c793 not a5,a5 + 3bc001aa: 40f707bb subw a5,a4,a5 + 3bc001ae: fed7eae3 bltu a5,a3,3bc001a2 + 3bc001b2: 8082 ret + +000000003bc001b4 : + 3bc001b4: 3e800793 li a5,1000 + 3bc001b8: 02a7853b mulw a0,a5,a0 + 3bc001bc: b7f9 j 3bc0018a + +000000003bc001be : + 3bc001be: e519 bnez a0,3bc001cc + 3bc001c0: c0102573 rdtime a0 + 3bc001c4: fff54513 not a0,a0 + 3bc001c8: 2501 sext.w a0,a0 + 3bc001ca: 8082 ret + 3bc001cc: c01027f3 rdtime a5 + 3bc001d0: fff7c793 not a5,a5 + 3bc001d4: 9d1d subw a0,a0,a5 + 3bc001d6: 6799 lui a5,0x6 + 3bc001d8: 1a87879b addiw a5,a5,424 + 3bc001dc: 02f5553b divuw a0,a0,a5 + 3bc001e0: 8082 ret + +000000003bc001e2 : + 3bc001e2: e519 bnez a0,3bc001f0 + 3bc001e4: c0102573 rdtime a0 + 3bc001e8: fff54513 not a0,a0 + 3bc001ec: 2501 sext.w a0,a0 + 3bc001ee: 8082 ret + 3bc001f0: c01027f3 rdtime a5 + 3bc001f4: fff7c793 not a5,a5 + 3bc001f8: 9d1d subw a0,a0,a5 + 3bc001fa: 47e5 li a5,25 + 3bc001fc: 02f5553b divuw a0,a0,a5 + 3bc00200: 67e1 lui a5,0x18 + 3bc00202: 6a07879b addiw a5,a5,1696 + 3bc00206: 02f5753b remuw a0,a0,a5 + 3bc0020a: 8082 ret + +000000003bc0020c : + 3bc0020c: c0102573 rdtime a0 + 3bc00210: 47e5 li a5,25 + 3bc00212: 02f55533 divu a0,a0,a5 + 3bc00216: 2501 sext.w a0,a0 + 3bc00218: 8082 ret + +000000003bc0021a : + 3bc0021a: 1101 addi sp,sp,-32 + 3bc0021c: 494257b7 lui a5,0x49425 + 3bc00220: e822 sd s0,16(sp) + 3bc00222: 34f78793 addi a5,a5,847 # 4942534f <__BL2_END__+0xd811b3f> + 3bc00226: 00013417 auipc s0,0x13 + 3bc0022a: 4a240413 addi s0,s0,1186 # 3bc136c8 + 3bc0022e: e426 sd s1,8(sp) + 3bc00230: e01c sd a5,0(s0) + 3bc00232: 010014b7 lui s1,0x1001 + 3bc00236: 4785 li a5,1 + 3bc00238: e04a sd s2,0(sp) + 3bc0023a: 00749613 slli a2,s1,0x7 + 3bc0023e: 892a mv s2,a0 + 3bc00240: ec1c sd a5,24(s0) + 3bc00242: 0000a517 auipc a0,0xa + 3bc00246: 0ee50513 addi a0,a0,238 # 3bc0a330 + 3bc0024a: 57fd li a5,-1 + 3bc0024c: ec06 sd ra,24(sp) + 3bc0024e: f41c sd a5,40(s0) + 3bc00250: e80c sd a1,16(s0) + 3bc00252: 106000ef jal ra,3bc00358 + 3bc00256: 03000593 li a1,48 + 3bc0025a: 8522 mv a0,s0 + 3bc0025c: efbff0ef jal ra,3bc00156 + 3bc00260: fadff0ef jal ra,3bc0020c + 3bc00264: 3e800793 li a5,1000 + 3bc00268: 3e75051b addiw a0,a0,999 + 3bc0026c: 02f5553b divuw a0,a0,a5 + 3bc00270: 8622 mv a2,s0 + 3bc00272: 0000b797 auipc a5,0xb + 3bc00276: 4de7b783 ld a5,1246(a5) # 3bc0b750 + 3bc0027a: 6442 ld s0,16(sp) + 3bc0027c: 60e2 ld ra,24(sp) + 3bc0027e: 00749593 slli a1,s1,0x7 + 3bc00282: 64a2 ld s1,8(sp) + 3bc00284: 00a79723 sh a0,14(a5) + 3bc00288: 87ca mv a5,s2 + 3bc0028a: 6902 ld s2,0(sp) + 3bc0028c: 4501 li a0,0 + 3bc0028e: 6105 addi sp,sp,32 + 3bc00290: 8782 jr a5 + +000000003bc00292 : + 3bc00292: 8082 ret + +000000003bc00294 <_uart_putc>: + 3bc00294: 04140737 lui a4,0x4140 + 3bc00298: 4b5c lw a5,20(a4) + 3bc0029a: 0207f793 andi a5,a5,32 + 3bc0029e: dfed beqz a5,3bc00298 <_uart_putc+0x4> + 3bc002a0: c308 sw a0,0(a4) + 3bc002a2: 8082 ret + +000000003bc002a4 : + 3bc002a4: 1141 addi sp,sp,-16 + 3bc002a6: e022 sd s0,0(sp) + 3bc002a8: e406 sd ra,8(sp) + 3bc002aa: 47a9 li a5,10 + 3bc002ac: 842a mv s0,a0 + 3bc002ae: 00f51563 bne a0,a5,3bc002b8 + 3bc002b2: 4535 li a0,13 + 3bc002b4: fe1ff0ef jal ra,3bc00294 <_uart_putc> + 3bc002b8: 8522 mv a0,s0 + 3bc002ba: 6402 ld s0,0(sp) + 3bc002bc: 60a2 ld ra,8(sp) + 3bc002be: 0141 addi sp,sp,16 + 3bc002c0: bfd1 j 3bc00294 <_uart_putc> + +000000003bc002c2 : + 3bc002c2: 041406b7 lui a3,0x4140 + 3bc002c6: 06000713 li a4,96 + 3bc002ca: 4adc lw a5,20(a3) + 3bc002cc: 0607f793 andi a5,a5,96 + 3bc002d0: fee79de3 bne a5,a4,3bc002ca + 3bc002d4: 8082 ret + +000000003bc002d6 : + 3bc002d6: 7139 addi sp,sp,-64 + 3bc002d8: f04a sd s2,32(sp) + 3bc002da: 7c05b70b extu a4,a1,31,0 + 3bc002de: fc06 sd ra,56(sp) + 3bc002e0: f822 sd s0,48(sp) + 3bc002e2: f426 sd s1,40(sp) + 3bc002e4: 8932 mv s2,a2 + 3bc002e6: 4801 li a6,0 + 3bc002e8: 45a5 li a1,9 + 3bc002ea: 02e57633 remu a2,a0,a4 + 3bc002ee: 0018041b addiw s0,a6,1 + 3bc002f2: 0ff67793 andi a5,a2,255 + 3bc002f6: 04c5e063 bltu a1,a2,3bc00336 + 3bc002fa: 0307879b addiw a5,a5,48 + 3bc002fe: 0ff7f793 andi a5,a5,255 + 3bc00302: 0030 addi a2,sp,8 + 3bc00304: 0106578b srb a5,a2,a6,0 + 3bc00308: 02e557b3 divu a5,a0,a4 + 3bc0030c: 0805 addi a6,a6,1 + 3bc0030e: 02e57263 bgeu a0,a4,3bc00332 + 3bc00312: 408684bb subw s1,a3,s0 + 3bc00316: 02904363 bgtz s1,3bc0033c + 3bc0031a: 54fd li s1,-1 + 3bc0031c: 147d addi s0,s0,-1 + 3bc0031e: 0004079b sext.w a5,s0 + 3bc00322: 02979463 bne a5,s1,3bc0034a + 3bc00326: 70e2 ld ra,56(sp) + 3bc00328: 7442 ld s0,48(sp) + 3bc0032a: 74a2 ld s1,40(sp) + 3bc0032c: 7902 ld s2,32(sp) + 3bc0032e: 6121 addi sp,sp,64 + 3bc00330: 8082 ret + 3bc00332: 853e mv a0,a5 + 3bc00334: bf5d j 3bc002ea + 3bc00336: 0577879b addiw a5,a5,87 + 3bc0033a: b7d1 j 3bc002fe + 3bc0033c: 85ca mv a1,s2 + 3bc0033e: 03000513 li a0,48 + 3bc00342: 7b8000ef jal ra,3bc00afa + 3bc00346: 34fd addiw s1,s1,-1 + 3bc00348: b7f9 j 3bc00316 + 3bc0034a: 003c addi a5,sp,8 + 3bc0034c: 8087c50b lrbu a0,a5,s0,0 + 3bc00350: 85ca mv a1,s2 + 3bc00352: 7a8000ef jal ra,3bc00afa + 3bc00356: b7d9 j 3bc0031c + +000000003bc00358 : + 3bc00358: 7135 addi sp,sp,-160 + 3bc0035a: e8a2 sd s0,80(sp) + 3bc0035c: e4a6 sd s1,72(sp) + 3bc0035e: ec86 sd ra,88(sp) + 3bc00360: e0ca sd s2,64(sp) + 3bc00362: fc4e sd s3,56(sp) + 3bc00364: f852 sd s4,48(sp) + 3bc00366: f456 sd s5,40(sp) + 3bc00368: f05a sd s6,32(sp) + 3bc0036a: f4ae sd a1,104(sp) + 3bc0036c: f8b2 sd a2,112(sp) + 3bc0036e: fcb6 sd a3,120(sp) + 3bc00370: e13a sd a4,128(sp) + 3bc00372: e53e sd a5,136(sp) + 3bc00374: e942 sd a6,144(sp) + 3bc00376: ed46 sd a7,152(sp) + 3bc00378: 842a mv s0,a0 + 3bc0037a: 4489 li s1,2 + 3bc0037c: c11d beqz a0,3bc003a2 + 3bc0037e: 00054703 lbu a4,0(a0) + 3bc00382: 4785 li a5,1 + 3bc00384: 00f71f63 bne a4,a5,3bc003a2 + 3bc00388: 00154783 lbu a5,1(a0) + 3bc0038c: 4711 li a4,4 + 3bc0038e: fd07879b addiw a5,a5,-48 + 3bc00392: 0ff7f693 andi a3,a5,255 + 3bc00396: 00d76663 bltu a4,a3,3bc003a2 + 3bc0039a: 0007849b sext.w s1,a5 + 3bc0039e: 00250413 addi s0,a0,2 + 3bc003a2: 10bc addi a5,sp,104 + 3bc003a4: ec3e sd a5,24(sp) + 3bc003a6: 4a25 li s4,9 + 3bc003a8: 4ad9 li s5,22 + 3bc003aa: 0000a997 auipc s3,0xa + 3bc003ae: fb298993 addi s3,s3,-78 # 3bc0a35c + 3bc003b2: 00044503 lbu a0,0(s0) + 3bc003b6: e919 bnez a0,3bc003cc + 3bc003b8: 60e6 ld ra,88(sp) + 3bc003ba: 6446 ld s0,80(sp) + 3bc003bc: 64a6 ld s1,72(sp) + 3bc003be: 6906 ld s2,64(sp) + 3bc003c0: 79e2 ld s3,56(sp) + 3bc003c2: 7a42 ld s4,48(sp) + 3bc003c4: 7aa2 ld s5,40(sp) + 3bc003c6: 7b02 ld s6,32(sp) + 3bc003c8: 610d addi sp,sp,160 + 3bc003ca: 8082 ret + 3bc003cc: 02500793 li a5,37 + 3bc003d0: 0405 addi s0,s0,1 + 3bc003d2: 10f51c63 bne a0,a5,3bc004ea + 3bc003d6: 4781 li a5,0 + 3bc003d8: 4681 li a3,0 + 3bc003da: 03000613 li a2,48 + 3bc003de: 00044703 lbu a4,0(s0) + 3bc003e2: 00c70c63 beq a4,a2,3bc003fa + 3bc003e6: f9c7071b addiw a4,a4,-100 + 3bc003ea: 0ff77713 andi a4,a4,255 + 3bc003ee: fceae5e3 bltu s5,a4,3bc003b8 + 3bc003f2: 44e9c70b lrw a4,s3,a4,2 + 3bc003f6: 974e add a4,a4,s3 + 3bc003f8: 8702 jr a4 + 3bc003fa: 00144703 lbu a4,1(s0) + 3bc003fe: fd07071b addiw a4,a4,-48 + 3bc00402: 0ff77593 andi a1,a4,255 + 3bc00406: 00ba6463 bltu s4,a1,3bc0040e + 3bc0040a: 0007069b sext.w a3,a4 + 3bc0040e: 0409 addi s0,s0,2 + 3bc00410: b7f9 j 3bc003de + 3bc00412: 6762 ld a4,24(sp) + 3bc00414: 4585 li a1,1 + 3bc00416: 00870613 addi a2,a4,8 # 4140008 <__BSS_SIZE__+0x413a3f8> + 3bc0041a: ec32 sd a2,24(sp) + 3bc0041c: 02f5d563 bge a1,a5,3bc00446 + 3bc00420: 00073903 ld s2,0(a4) + 3bc00424: 00095b63 bgez s2,3bc0043a + 3bc00428: 85a6 mv a1,s1 + 3bc0042a: 02d00513 li a0,45 + 3bc0042e: e436 sd a3,8(sp) + 3bc00430: 6ca000ef jal ra,3bc00afa + 3bc00434: 66a2 ld a3,8(sp) + 3bc00436: 41200933 neg s2,s2 + 3bc0043a: 8626 mv a2,s1 + 3bc0043c: 45a9 li a1,10 + 3bc0043e: 854a mv a0,s2 + 3bc00440: e97ff0ef jal ra,3bc002d6 + 3bc00444: a831 j 3bc00460 + 3bc00446: ffe9 bnez a5,3bc00420 + 3bc00448: 00072903 lw s2,0(a4) + 3bc0044c: bfe1 j 3bc00424 + 3bc0044e: 67e2 ld a5,24(sp) + 3bc00450: 0007b903 ld s2,0(a5) + 3bc00454: 00878713 addi a4,a5,8 + 3bc00458: ec3a sd a4,24(sp) + 3bc0045a: 00094503 lbu a0,0(s2) + 3bc0045e: e119 bnez a0,3bc00464 + 3bc00460: 0405 addi s0,s0,1 + 3bc00462: bf81 j 3bc003b2 + 3bc00464: 85a6 mv a1,s1 + 3bc00466: 0905 addi s2,s2,1 + 3bc00468: 692000ef jal ra,3bc00afa + 3bc0046c: b7fd j 3bc0045a + 3bc0046e: 67e2 ld a5,24(sp) + 3bc00470: 0000a917 auipc s2,0xa + 3bc00474: ee890913 addi s2,s2,-280 # 3bc0a358 + 3bc00478: 0007bb03 ld s6,0(a5) + 3bc0047c: 00878713 addi a4,a5,8 + 3bc00480: ec3a sd a4,24(sp) + 3bc00482: 000b1c63 bnez s6,3bc0049a + 3bc00486: 8626 mv a2,s1 + 3bc00488: 45c1 li a1,16 + 3bc0048a: 855a mv a0,s6 + 3bc0048c: bf55 j 3bc00440 + 3bc0048e: 85a6 mv a1,s1 + 3bc00490: e436 sd a3,8(sp) + 3bc00492: 668000ef jal ra,3bc00afa + 3bc00496: 66a2 ld a3,8(sp) + 3bc00498: 0905 addi s2,s2,1 + 3bc0049a: 00094503 lbu a0,0(s2) + 3bc0049e: f965 bnez a0,3bc0048e + 3bc004a0: b7dd j 3bc00486 + 3bc004a2: 6762 ld a4,24(sp) + 3bc004a4: 4585 li a1,1 + 3bc004a6: 00870613 addi a2,a4,8 + 3bc004aa: ec32 sd a2,24(sp) + 3bc004ac: 00f5d663 bge a1,a5,3bc004b8 + 3bc004b0: 6308 ld a0,0(a4) + 3bc004b2: 8626 mv a2,s1 + 3bc004b4: 45c1 li a1,16 + 3bc004b6: b769 j 3bc00440 + 3bc004b8: ffe5 bnez a5,3bc004b0 + 3bc004ba: 00076503 lwu a0,0(a4) + 3bc004be: bfd5 j 3bc004b2 + 3bc004c0: 0405 addi s0,s0,1 + 3bc004c2: 4789 li a5,2 + 3bc004c4: bf29 j 3bc003de + 3bc004c6: 2785 addiw a5,a5,1 + 3bc004c8: 0405 addi s0,s0,1 + 3bc004ca: bf11 j 3bc003de + 3bc004cc: 6762 ld a4,24(sp) + 3bc004ce: 4585 li a1,1 + 3bc004d0: 00870613 addi a2,a4,8 + 3bc004d4: ec32 sd a2,24(sp) + 3bc004d6: 00f5d663 bge a1,a5,3bc004e2 + 3bc004da: 6308 ld a0,0(a4) + 3bc004dc: 8626 mv a2,s1 + 3bc004de: 45a9 li a1,10 + 3bc004e0: b785 j 3bc00440 + 3bc004e2: ffe5 bnez a5,3bc004da + 3bc004e4: 00076503 lwu a0,0(a4) + 3bc004e8: bfd5 j 3bc004dc + 3bc004ea: 85a6 mv a1,s1 + 3bc004ec: 60e000ef jal ra,3bc00afa + 3bc004f0: b5c9 j 3bc003b2 + +000000003bc004f2 <__system_reset>: + 3bc004f2: 7179 addi sp,sp,-48 + 3bc004f4: f022 sd s0,32(sp) + 3bc004f6: be00e437 lui s0,0xbe00e + 3bc004fa: f406 sd ra,40(sp) + 3bc004fc: 00340793 addi a5,s0,3 # ffffffffbe00e003 <__BL2_END__+0xffffffff823fa7f3> + 3bc00500: ec26 sd s1,24(sp) + 3bc00502: e84a sd s2,16(sp) + 3bc00504: e44e sd s3,8(sp) + 3bc00506: 0e000937 lui s2,0xe000 + 3bc0050a: 862e mv a2,a1 + 3bc0050c: 00f92823 sw a5,16(s2) # e000010 + 3bc00510: 85aa mv a1,a0 + 3bc00512: 0000a517 auipc a0,0xa + 3bc00516: ea650513 addi a0,a0,-346 # 3bc0a3b8 + 3bc0051a: e3fff0ef jal ra,3bc00358 + 3bc0051e: da5ff0ef jal ra,3bc002c2 + 3bc00522: be0034b7 lui s1,0xbe003 + 3bc00526: 00148793 addi a5,s1,1 # ffffffffbe003001 <__BL2_END__+0xffffffff823ef7f1> + 3bc0052a: 030009b7 lui s3,0x3000 + 3bc0052e: 6505 lui a0,0x1 + 3bc00530: 08f9a223 sw a5,132(s3) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc00534: 38850513 addi a0,a0,904 # 1388 <__BSS_SIZE__-0x4888> + 3bc00538: c7dff0ef jal ra,3bc001b4 + 3bc0053c: 050267b7 lui a5,0x5026 + 3bc00540: 4705 li a4,1 + 3bc00542: 0ee7a023 sw a4,224(a5) # 50260e0 + 3bc00546: 0ce7a423 sw a4,200(a5) + 3bc0054a: 0489 addi s1,s1,2 + 3bc0054c: 0899a223 sw s1,132(s3) + 3bc00550: 06400513 li a0,100 + 3bc00554: c37ff0ef jal ra,3bc0018a + 3bc00558: 050257b7 lui a5,0x5025 + 3bc0055c: 672d lui a4,0xb + 3bc0055e: 0a07a623 sw zero,172(a5) # 50250ac + 3bc00562: b1870713 addi a4,a4,-1256 # ab18 <__BSS_SIZE__+0x4f08> + 3bc00566: c3d8 sw a4,4(a5) + 3bc00568: 00400737 lui a4,0x400 + 3bc0056c: 04070713 addi a4,a4,64 # 400040 <__BSS_SIZE__+0x3fa430> + 3bc00570: c798 sw a4,8(a5) + 3bc00572: 030107b7 lui a5,0x3010 + 3bc00576: 06600713 li a4,102 + 3bc0057a: c3d8 sw a4,4(a5) + 3bc0057c: 02000713 li a4,32 + 3bc00580: cfd8 sw a4,28(a5) + 3bc00582: 07600713 li a4,118 + 3bc00586: c7d8 sw a4,12(a5) + 3bc00588: 4745 li a4,17 + 3bc0058a: c398 sw a4,0(a5) + 3bc0058c: 00394783 lbu a5,3(s2) + 3bc00590: 0407f793 andi a5,a5,64 + 3bc00594: c395 beqz a5,3bc005b8 <__system_reset+0xc6> + 3bc00596: 0411 addi s0,s0,4 + 3bc00598: 00892823 sw s0,16(s2) + 3bc0059c: 050266b7 lui a3,0x5026 + 3bc005a0: 470d li a4,3 + 3bc005a2: 0d46a783 lw a5,212(a3) # 50260d4 + 3bc005a6: 2781 sext.w a5,a5 + 3bc005a8: fee79de3 bne a5,a4,3bc005a2 <__system_reset+0xb0> + 3bc005ac: 000807b7 lui a5,0x80 + 3bc005b0: 05025737 lui a4,0x5025 + 3bc005b4: 07a1 addi a5,a5,8 + 3bc005b6: c71c sw a5,8(a4) + 3bc005b8: a001 j 3bc005b8 <__system_reset+0xc6> + +000000003bc005ba : + 3bc005ba: 1141 addi sp,sp,-16 + 3bc005bc: be00e7b7 lui a5,0xbe00e + 3bc005c0: e406 sd ra,8(sp) + 3bc005c2: 0e000737 lui a4,0xe000 + 3bc005c6: 0789 addi a5,a5,2 + 3bc005c8: cb1c sw a5,16(a4) + 3bc005ca: 0000879b sext.w a5,ra + 3bc005ce: 8586 mv a1,ra + 3bc005d0: 0000a517 auipc a0,0xa + 3bc005d4: e0050513 addi a0,a0,-512 # 3bc0a3d0 + 3bc005d8: cb5c sw a5,20(a4) + 3bc005da: d7fff0ef jal ra,3bc00358 + 3bc005de: 55fd li a1,-1 + 3bc005e0: 0000a517 auipc a0,0xa + 3bc005e4: e0050513 addi a0,a0,-512 # 3bc0a3e0 + 3bc005e8: f0bff0ef jal ra,3bc004f2 <__system_reset> + +000000003bc005ec : + 3bc005ec: 1141 addi sp,sp,-16 + 3bc005ee: e022 sd s0,0(sp) + 3bc005f0: 842a mv s0,a0 + 3bc005f2: 0000a517 auipc a0,0xa + 3bc005f6: df650513 addi a0,a0,-522 # 3bc0a3e8 + 3bc005fa: e406 sd ra,8(sp) + 3bc005fc: d5dff0ef jal ra,3bc00358 + 3bc00600: 03003737 lui a4,0x3003 + 3bc00604: 535c lw a5,36(a4) + 3bc00606: 6609 lui a2,0x2 + 3bc00608: 60a2 ld ra,8(sp) + 3bc0060a: 2781 sext.w a5,a5 + 3bc0060c: fbf7f793 andi a5,a5,-65 + 3bc00610: d35c sw a5,36(a4) + 3bc00612: 020b07b7 lui a5,0x20b0 + 3bc00616: 43d4 lw a3,4(a5) + 3bc00618: 8ed1 or a3,a3,a2 + 3bc0061a: c3d4 sw a3,4(a5) + 3bc0061c: 0004069b sext.w a3,s0 + 3bc00620: d394 sw a3,32(a5) + 3bc00622: 9401 srai s0,s0,0x20 + 3bc00624: d3c0 sw s0,36(a5) + 3bc00626: 535c lw a5,36(a4) + 3bc00628: 6402 ld s0,0(sp) + 3bc0062a: 2781 sext.w a5,a5 + 3bc0062c: 0407e793 ori a5,a5,64 + 3bc00630: d35c sw a5,36(a4) + 3bc00632: 0141 addi sp,sp,16 + 3bc00634: 8082 ret + +000000003bc00636 : + 3bc00636: 1141 addi sp,sp,-16 + 3bc00638: e406 sd ra,8(sp) + 3bc0063a: c8800097 auipc ra,0xc8800 + 3bc0063e: 9e6080e7 jalr -1562(ra) # 4400020 + 3bc00642: 67b5 lui a5,0xd + 3bc00644: 2501 sext.w a0,a0 + 3bc00646: ea078713 addi a4,a5,-352 # cea0 <__BSS_SIZE__+0x7290> + 3bc0064a: 00e50a63 beq a0,a4,3bc0065e + 3bc0064e: ea378793 addi a5,a5,-349 + 3bc00652: 02f50063 beq a0,a5,3bc00672 + 3bc00656: 0e0007b7 lui a5,0xe000 + 3bc0065a: c3c8 sw a0,4(a5) + 3bc0065c: a801 j 3bc0066c + 3bc0065e: 4d4757b7 lui a5,0x4d475 + 3bc00662: 0e000737 lui a4,0xe000 + 3bc00666: e3278793 addi a5,a5,-462 # 4d474e32 <__BL2_END__+0x11861622> + 3bc0066a: c35c sw a5,4(a4) + 3bc0066c: 60a2 ld ra,8(sp) + 3bc0066e: 0141 addi sp,sp,16 + 3bc00670: 8082 ret + 3bc00672: 4d4757b7 lui a5,0x4d475 + 3bc00676: 0e000737 lui a4,0xe000 + 3bc0067a: e3178793 addi a5,a5,-463 # 4d474e31 <__BL2_END__+0x11861621> + 3bc0067e: b7f5 j 3bc0066a + +000000003bc00680 : + 3bc00680: 030027b7 lui a5,0x3002 + 3bc00684: 0207a823 sw zero,48(a5) # 3002030 <__BSS_SIZE__+0x2ffc420> + 3bc00688: 0207aa23 sw zero,52(a5) + 3bc0068c: 8082 ret + +000000003bc0068e : + 3bc0068e: 7139 addi sp,sp,-64 + 3bc00690: 0000a797 auipc a5,0xa + 3bc00694: dc87b783 ld a5,-568(a5) # 3bc0a458 + 3bc00698: e03e sd a5,0(sp) + 3bc0069a: 0000a797 auipc a5,0xa + 3bc0069e: dc67b783 ld a5,-570(a5) # 3bc0a460 + 3bc006a2: e43e sd a5,8(sp) + 3bc006a4: 0000a797 auipc a5,0xa + 3bc006a8: dc47b783 ld a5,-572(a5) # 3bc0a468 + 3bc006ac: e83e sd a5,16(sp) + 3bc006ae: 0000a517 auipc a0,0xa + 3bc006b2: d4250513 addi a0,a0,-702 # 3bc0a3f0 + 3bc006b6: 0000a797 auipc a5,0xa + 3bc006ba: dba7b783 ld a5,-582(a5) # 3bc0a470 + 3bc006be: f426 sd s1,40(sp) + 3bc006c0: ec3e sd a5,24(sp) + 3bc006c2: fc06 sd ra,56(sp) + 3bc006c4: f822 sd s0,48(sp) + 3bc006c6: f04a sd s2,32(sp) + 3bc006c8: c91ff0ef jal ra,3bc00358 + 3bc006cc: 030027b7 lui a5,0x3002 + 3bc006d0: 577d li a4,-1 + 3bc006d2: 5b84 lw s1,48(a5) + 3bc006d4: 03f00693 li a3,63 + 3bc006d8: db98 sw a4,48(a5) + 3bc006da: dbd4 sw a3,52(a5) + 3bc006dc: 054887b7 lui a5,0x5488 + 3bc006e0: 03003737 lui a4,0x3003 + 3bc006e4: 10178793 addi a5,a5,257 # 5488101 + 3bc006e8: 80f72423 sw a5,-2040(a4) # 3002808 <__BSS_SIZE__+0x2ffcbf8> + 3bc006ec: 030037b7 lui a5,0x3003 + 3bc006f0: 84d72023 sw a3,-1984(a4) + 3bc006f4: 2481 sext.w s1,s1 + 3bc006f6: 4601 li a2,0 + 3bc006f8: 85470713 addi a4,a4,-1964 + 3bc006fc: 01010813 addi a6,sp,16 + 3bc00700: 80c78513 addi a0,a5,-2036 # 300280c <__BSS_SIZE__+0x2ffcbfc> + 3bc00704: 45c1 li a1,16 + 3bc00706: 4026468b lrw a3,a2,sp,0 + 3bc0070a: c314 sw a3,0(a4) + 3bc0070c: ffc72683 lw a3,-4(a4) + 3bc00710: 0741 addi a4,a4,16 + 3bc00712: 2681 sext.w a3,a3 + 3bc00714: 9abd andi a3,a3,-17 + 3bc00716: 0016e693 ori a3,a3,1 + 3bc0071a: fed72623 sw a3,-20(a4) + 3bc0071e: 4106468b lrw a3,a2,a6,0 + 3bc00722: 40a6568b srw a3,a2,a0,0 + 3bc00726: 0611 addi a2,a2,4 + 3bc00728: fcb61fe3 bne a2,a1,3bc00706 + 3bc0072c: 80078613 addi a2,a5,-2048 + 3bc00730: 4218 lw a4,0(a2) + 3bc00732: 76bd lui a3,0xfffef + 3bc00734: eee68693 addi a3,a3,-274 # fffffffffffeeeee <__BL2_END__+0xffffffffc43db6de> + 3bc00738: 2701 sext.w a4,a4 + 3bc0073a: 8f75 and a4,a4,a3 + 3bc0073c: c218 sw a4,0(a2) + 3bc0073e: 00448737 lui a4,0x448 + 3bc00742: 90078613 addi a2,a5,-1792 + 3bc00746: 10170713 addi a4,a4,257 # 448101 <__BSS_SIZE__+0x4424f1> + 3bc0074a: c618 sw a4,8(a2) + 3bc0074c: 03002437 lui s0,0x3002 + 3bc00750: 018006b7 lui a3,0x1800 + 3bc00754: 6841 lui a6,0x10 + 3bc00756: d014 sw a3,32(s0) + 3bc00758: 30980593 addi a1,a6,777 # 10309 <__BSS_SIZE__+0xa6f9> + 3bc0075c: 10040693 addi a3,s0,256 # 3002100 <__BSS_SIZE__+0x2ffc4f0> + 3bc00760: da8c sw a1,48(a3) + 3bc00762: 000205b7 lui a1,0x20 + 3bc00766: 20958593 addi a1,a1,521 # 20209 <__BSS_SIZE__+0x1a5f9> + 3bc0076a: de8c sw a1,56(a3) + 3bc0076c: c658 sw a4,12(a2) + 3bc0076e: 00030637 lui a2,0x30 + 3bc00772: 00960313 addi t1,a2,9 # 30009 <__BSS_SIZE__+0x2a3f9> + 3bc00776: 04642423 sw t1,72(s0) + 3bc0077a: 30960713 addi a4,a2,777 + 3bc0077e: 00040537 lui a0,0x40 + 3bc00782: c878 sw a4,84(s0) + 3bc00784: 00080937 lui s2,0x80 + 3bc00788: 00950713 addi a4,a0,9 # 40009 <__BSS_SIZE__+0x3a3f9> + 3bc0078c: d078 sw a4,100(s0) + 3bc0078e: 00990893 addi a7,s2,9 # 80009 <__BSS_SIZE__+0x7a3f9> + 3bc00792: 08040713 addi a4,s0,128 + 3bc00796: 01172423 sw a7,8(a4) + 3bc0079a: 001208b7 lui a7,0x120 + 3bc0079e: 08a5 addi a7,a7,9 + 3bc007a0: 01172c23 sw a7,24(a4) + 3bc007a4: 000f08b7 lui a7,0xf0 + 3bc007a8: 08a5 addi a7,a7,9 + 3bc007aa: 0316a023 sw a7,32(a3) # 1800020 <__BSS_SIZE__+0x17fa410> + 3bc007ae: 0825 addi a6,a6,9 + 3bc007b0: 03072423 sw a6,40(a4) + 3bc007b4: 10960813 addi a6,a2,265 + 3bc007b8: 07072223 sw a6,100(a4) + 3bc007bc: 30950513 addi a0,a0,777 + 3bc007c0: d768 sw a0,108(a4) + 3bc007c2: 00060537 lui a0,0x60 + 3bc007c6: 04672423 sw t1,72(a4) + 3bc007ca: 20950513 addi a0,a0,521 # 60209 <__BSS_SIZE__+0x5a5f9> + 3bc007ce: cb28 sw a0,80(a4) + 3bc007d0: cf28 sw a0,88(a4) + 3bc007d2: ca8c sw a1,16(a3) + 3bc007d4: 20960613 addi a2,a2,521 + 3bc007d8: c2f0 sw a2,68(a3) + 3bc007da: 00050637 lui a2,0x50 + 3bc007de: 0625 addi a2,a2,9 + 3bc007e0: df10 sw a2,56(a4) + 3bc007e2: d6d0 sw a2,44(a3) + 3bc007e4: 88078793 addi a5,a5,-1920 + 3bc007e8: 5398 lw a4,32(a5) + 3bc007ea: 10090913 addi s2,s2,256 + 3bc007ee: 0124f933 and s2,s1,s2 + 3bc007f2: 2701 sext.w a4,a4 + 3bc007f4: 9b6d andi a4,a4,-5 + 3bc007f6: d398 sw a4,32(a5) + 3bc007f8: 57d8 lw a4,44(a5) + 3bc007fa: 0c800513 li a0,200 + 3bc007fe: 2701 sext.w a4,a4 + 3bc00800: 9b65 andi a4,a4,-7 + 3bc00802: d7d8 sw a4,44(a5) + 3bc00804: 987ff0ef jal ra,3bc0018a + 3bc00808: 03242823 sw s2,48(s0) + 3bc0080c: 70e2 ld ra,56(sp) + 3bc0080e: 02042a23 sw zero,52(s0) + 3bc00812: 7442 ld s0,48(sp) + 3bc00814: 74a2 ld s1,40(sp) + 3bc00816: 7902 ld s2,32(sp) + 3bc00818: 6121 addi sp,sp,64 + 3bc0081a: 8082 ret + +000000003bc0081c : + 3bc0081c: 1141 addi sp,sp,-16 + 3bc0081e: e406 sd ra,8(sp) + 3bc00820: e6fff0ef jal ra,3bc0068e + 3bc00824: 60a2 ld ra,8(sp) + 3bc00826: 0000a517 auipc a0,0xa + 3bc0082a: bda50513 addi a0,a0,-1062 # 3bc0a400 + 3bc0082e: 0141 addi sp,sp,16 + 3bc00830: b625 j 3bc00358 + +000000003bc00832 : + 3bc00832: 8082 ret + +000000003bc00834 : + 3bc00834: 05025737 lui a4,0x5025 + 3bc00838: 475c lw a5,12(a4) + 3bc0083a: 471c lw a5,8(a4) + 3bc0083c: f40006b7 lui a3,0xf4000 + 3bc00840: bff68693 addi a3,a3,-1025 # fffffffff3fffbff <__BL2_END__+0xffffffffb83ec3ef> + 3bc00844: 2781 sext.w a5,a5 + 3bc00846: 8ff5 and a5,a5,a3 + 3bc00848: 0c0006b7 lui a3,0xc000 + 3bc0084c: 8fd5 or a5,a5,a3 + 3bc0084e: c71c sw a5,8(a4) + 3bc00850: 4685 li a3,1 + 3bc00852: 050267b7 lui a5,0x5026 + 3bc00856: 48d7a623 sw a3,1164(a5) # 502648c + 3bc0085a: 4807a623 sw zero,1164(a5) + 3bc0085e: 471c lw a5,8(a4) + 3bc00860: 0c0016b7 lui a3,0xc001 + 3bc00864: 80068693 addi a3,a3,-2048 # c000800 + 3bc00868: 2781 sext.w a5,a5 + 3bc0086a: 8fd5 or a5,a5,a3 + 3bc0086c: c71c sw a5,8(a4) + 3bc0086e: 0000a517 auipc a0,0xa + 3bc00872: ba250513 addi a0,a0,-1118 # 3bc0a410 + 3bc00876: b4cd j 3bc00358 + +000000003bc00878 : + 3bc00878: 1141 addi sp,sp,-16 + 3bc0087a: e022 sd s0,0(sp) + 3bc0087c: 05026437 lui s0,0x5026 + 3bc00880: 0f842583 lw a1,248(s0) # 50260f8 + 3bc00884: 0000a517 auipc a0,0xa + 3bc00888: ba450513 addi a0,a0,-1116 # 3bc0a428 + 3bc0088c: e406 sd ra,8(sp) + 3bc0088e: 2581 sext.w a1,a1 + 3bc00890: ac9ff0ef jal ra,3bc00358 + 3bc00894: 0fc42583 lw a1,252(s0) + 3bc00898: 0000a517 auipc a0,0xa + 3bc0089c: ba850513 addi a0,a0,-1112 # 3bc0a440 + 3bc008a0: 2581 sext.w a1,a1 + 3bc008a2: ab7ff0ef jal ra,3bc00358 + 3bc008a6: 4785 li a5,1 + 3bc008a8: 0cf42023 sw a5,192(s0) + 3bc008ac: 05026737 lui a4,0x5026 + 3bc008b0: 4685 li a3,1 + 3bc008b2: 0c072783 lw a5,192(a4) # 50260c0 + 3bc008b6: 2781 sext.w a5,a5 + 3bc008b8: fed79de3 bne a5,a3,3bc008b2 + 3bc008bc: 0cd72623 sw a3,204(a4) + 3bc008c0: 05026737 lui a4,0x5026 + 3bc008c4: 4685 li a3,1 + 3bc008c6: 0cc72783 lw a5,204(a4) # 50260cc + 3bc008ca: 2781 sext.w a5,a5 + 3bc008cc: fed79de3 bne a5,a3,3bc008c6 + 3bc008d0: 0cd72423 sw a3,200(a4) + 3bc008d4: 05026737 lui a4,0x5026 + 3bc008d8: 4685 li a3,1 + 3bc008da: 0c872783 lw a5,200(a4) # 50260c8 + 3bc008de: 2781 sext.w a5,a5 + 3bc008e0: fed79de3 bne a5,a3,3bc008da + 3bc008e4: 0ed72023 sw a3,224(a4) + 3bc008e8: 050266b7 lui a3,0x5026 + 3bc008ec: 4705 li a4,1 + 3bc008ee: 0e06a783 lw a5,224(a3) # 50260e0 + 3bc008f2: 2781 sext.w a5,a5 + 3bc008f4: fee79de3 bne a5,a4,3bc008ee + 3bc008f8: 05025737 lui a4,0x5025 + 3bc008fc: 08070613 addi a2,a4,128 # 5025080 + 3bc00900: 565c lw a5,44(a2) + 3bc00902: 60a2 ld ra,8(sp) + 3bc00904: 6402 ld s0,0(sp) + 3bc00906: 2781 sext.w a5,a5 + 3bc00908: 0017e793 ori a5,a5,1 + 3bc0090c: d65c sw a5,44(a2) + 3bc0090e: 67ad lui a5,0xb + 3bc00910: b1878793 addi a5,a5,-1256 # ab18 <__BSS_SIZE__+0x4f08> + 3bc00914: c35c sw a5,4(a4) + 3bc00916: 471c lw a5,8(a4) + 3bc00918: 7645 lui a2,0xffff1 + 3bc0091a: 84060613 addi a2,a2,-1984 # ffffffffffff0840 <__BL2_END__+0xffffffffc43dd030> + 3bc0091e: 2781 sext.w a5,a5 + 3bc00920: 8fd1 or a5,a5,a2 + 3bc00922: c71c sw a5,8(a4) + 3bc00924: 0d06a783 lw a5,208(a3) + 3bc00928: 2781 sext.w a5,a5 + 3bc0092a: 9bed andi a5,a5,-5 + 3bc0092c: 0cf6a823 sw a5,208(a3) + 3bc00930: 0141 addi sp,sp,16 + 3bc00932: 8082 ret + +000000003bc00934 : + 3bc00934: 7139 addi sp,sp,-64 + 3bc00936: 0000a797 auipc a5,0xa + 3bc0093a: b427b783 ld a5,-1214(a5) # 3bc0a478 + 3bc0093e: e43e sd a5,8(sp) + 3bc00940: 0000a797 auipc a5,0xa + 3bc00944: b407b783 ld a5,-1216(a5) # 3bc0a480 + 3bc00948: e83e sd a5,16(sp) + 3bc0094a: 400007b7 lui a5,0x40000 + 3bc0094e: 10778793 addi a5,a5,263 # 40000107 <__BL2_END__+0x43ec8f7> + 3bc00952: 07de slli a5,a5,0x17 + 3bc00954: ec3e sd a5,24(sp) + 3bc00956: 41d00793 li a5,1053 + 3bc0095a: 07d6 slli a5,a5,0x15 + 3bc0095c: f03e sd a5,32(sp) + 3bc0095e: 6785 lui a5,0x1 + 3bc00960: 10178793 addi a5,a5,257 # 1101 <__BSS_SIZE__-0x4b0f> + 3bc00964: d43e sw a5,40(sp) + 3bc00966: 478d li a5,3 + 3bc00968: 02f10723 sb a5,46(sp) + 3bc0096c: fc06 sd ra,56(sp) + 3bc0096e: 4701 li a4,0 + 3bc00970: 4781 li a5,0 + 3bc00972: 002c addi a1,sp,8 + 3bc00974: 02400693 li a3,36 + 3bc00978: 80b7460b lrbu a2,a4,a1,0 + 3bc0097c: 0705 addi a4,a4,1 + 3bc0097e: 9fb1 addw a5,a5,a2 + 3bc00980: 3c07b78b extu a5,a5,15,0 + 3bc00984: fed71ae3 bne a4,a3,3bc00978 + 3bc00988: 01900537 lui a0,0x1900 + 3bc0098c: 02800613 li a2,40 + 3bc00990: 40050513 addi a0,a0,1024 # 1900400 <__BSS_SIZE__+0x18fa7f0> + 3bc00994: 02f11623 sh a5,44(sp) + 3bc00998: 0e2000ef jal ra,3bc00a7a + 3bc0099c: 70e2 ld ra,56(sp) + 3bc0099e: 6121 addi sp,sp,64 + 3bc009a0: 8082 ret + +000000003bc009a2 : + 3bc009a2: 4501 li a0,0 + 3bc009a4: 8082 ret + +000000003bc009a6 : + 3bc009a6: 00050023 sb zero,0(a0) + 3bc009aa: 872a mv a4,a0 + 3bc009ac: 0000a317 auipc t1,0xa + 3bc009b0: adc30313 addi t1,t1,-1316 # 3bc0a488 + 3bc009b4: 4e65 li t3,25 + 3bc009b6: 02c5f7b3 remu a5,a1,a2 + 3bc009ba: 80f3478b lrbu a5,t1,a5,0 + 3bc009be: ce91 beqz a3,3bc009da + 3bc009c0: f9f7881b addiw a6,a5,-97 + 3bc009c4: 0ff87813 andi a6,a6,255 + 3bc009c8: 02000893 li a7,32 + 3bc009cc: 010e7363 bgeu t3,a6,3bc009d2 + 3bc009d0: 4881 li a7,0 + 3bc009d2: 411787bb subw a5,a5,a7 + 3bc009d6: 0ff7f793 andi a5,a5,255 + 3bc009da: 0817578b sbib a5,(a4),1,0 + 3bc009de: 02c5d7b3 divu a5,a1,a2 + 3bc009e2: 02c5f463 bgeu a1,a2,3bc00a0a + 3bc009e6: 87aa mv a5,a0 + 3bc009e8: 86ba mv a3,a4 + 3bc009ea: 02d7e263 bltu a5,a3,3bc00a0e + 3bc009ee: fff50693 addi a3,a0,-1 + 3bc009f2: 4781 li a5,0 + 3bc009f4: 00d76863 bltu a4,a3,3bc00a04 + 3bc009f8: 40a707b3 sub a5,a4,a0 + 3bc009fc: 0785 addi a5,a5,1 + 3bc009fe: 8385 srli a5,a5,0x1 + 3bc00a00: 40f007b3 neg a5,a5 + 3bc00a04: 00f70533 add a0,a4,a5 + 3bc00a08: 8082 ret + 3bc00a0a: 85be mv a1,a5 + 3bc00a0c: b76d j 3bc009b6 + 3bc00a0e: 0006c583 lbu a1,0(a3) + 3bc00a12: 0007c603 lbu a2,0(a5) + 3bc00a16: 1817d58b sbia a1,(a5),1,0 + 3bc00a1a: 19f6d60b sbia a2,(a3),-1,0 + 3bc00a1e: b7f1 j 3bc009ea + +000000003bc00a20 : + 3bc00a20: 0ff5f813 andi a6,a1,255 + 3bc00a24: 87aa mv a5,a0 + 3bc00a26: 0077f713 andi a4,a5,7 + 3bc00a2a: c719 beqz a4,3bc00a38 + 3bc00a2c: e211 bnez a2,3bc00a30 + 3bc00a2e: 8082 ret + 3bc00a30: 1817d80b sbia a6,(a5),1,0 + 3bc00a34: 167d addi a2,a2,-1 + 3bc00a36: bfc5 j 3bc00a26 + 3bc00a38: ca05 beqz a2,3bc00a68 + 3bc00a3a: 0000a697 auipc a3,0xa + 3bc00a3e: a766b683 ld a3,-1418(a3) # 3bc0a4b0 + 3bc00a42: 0ff5f593 andi a1,a1,255 + 3bc00a46: 02d585b3 mul a1,a1,a3 + 3bc00a4a: 489d li a7,7 + 3bc00a4c: 4681 li a3,0 + 3bc00a4e: 40d60333 sub t1,a2,a3 + 3bc00a52: 0068ec63 bltu a7,t1,3bc00a6a + 3bc00a56: 00365693 srli a3,a2,0x3 + 3bc00a5a: 55e1 li a1,-8 + 3bc00a5c: 06d7978b addsl a5,a5,a3,3 + 3bc00a60: 20b6960b mula a2,a3,a1 + 3bc00a64: 00e61763 bne a2,a4,3bc00a72 + 3bc00a68: 8082 ret + 3bc00a6a: 60d7d58b srd a1,a5,a3,0 + 3bc00a6e: 06a1 addi a3,a3,8 + 3bc00a70: bff9 j 3bc00a4e + 3bc00a72: 00e7d80b srb a6,a5,a4,0 + 3bc00a76: 0705 addi a4,a4,1 + 3bc00a78: b7f5 j 3bc00a64 + +000000003bc00a7a : + 3bc00a7a: 00b547b3 xor a5,a0,a1 + 3bc00a7e: 8b9d andi a5,a5,7 + 3bc00a80: e7a9 bnez a5,3bc00aca + 3bc00a82: 87aa mv a5,a0 + 3bc00a84: 0077f713 andi a4,a5,7 + 3bc00a88: cb09 beqz a4,3bc00a9a + 3bc00a8a: e211 bnez a2,3bc00a8e + 3bc00a8c: 8082 ret + 3bc00a8e: 9815c70b lbuia a4,(a1),1,0 + 3bc00a92: 167d addi a2,a2,-1 + 3bc00a94: 1817d70b sbia a4,(a5),1,0 + 3bc00a98: b7f5 j 3bc00a84 + 3bc00a9a: 469d li a3,7 + 3bc00a9c: e619 bnez a2,3bc00aaa + 3bc00a9e: 8082 ret + 3bc00aa0: 60e5c80b lrd a6,a1,a4,0 + 3bc00aa4: 60e7d80b srd a6,a5,a4,0 + 3bc00aa8: 0721 addi a4,a4,8 + 3bc00aaa: 40e60833 sub a6,a2,a4 + 3bc00aae: ff06e9e3 bltu a3,a6,3bc00aa0 + 3bc00ab2: 00365713 srli a4,a2,0x3 + 3bc00ab6: 56e1 li a3,-8 + 3bc00ab8: 20d7160b mula a2,a4,a3 + 3bc00abc: 070e slli a4,a4,0x3 + 3bc00abe: 97ba add a5,a5,a4 + 3bc00ac0: 95ba add a1,a1,a4 + 3bc00ac2: 4701 li a4,0 + 3bc00ac4: 00e61563 bne a2,a4,3bc00ace + 3bc00ac8: 8082 ret + 3bc00aca: 87aa mv a5,a0 + 3bc00acc: bfdd j 3bc00ac2 + 3bc00ace: 80e5c68b lrbu a3,a1,a4,0 + 3bc00ad2: 00e7d68b srb a3,a5,a4,0 + 3bc00ad6: 0705 addi a4,a4,1 + 3bc00ad8: b7f5 j 3bc00ac4 + +000000003bc00ada : + 3bc00ada: 40b50733 sub a4,a0,a1 + 3bc00ade: 87aa mv a5,a0 + 3bc00ae0: 00c76363 bltu a4,a2,3bc00ae6 + 3bc00ae4: bf59 j 3bc00a7a + 3bc00ae6: 95b2 add a1,a1,a2 + 3bc00ae8: 9532 add a0,a0,a2 + 3bc00aea: 00f51363 bne a0,a5,3bc00af0 + 3bc00aee: 8082 ret + 3bc00af0: 89f5c70b lbuib a4,(a1),-1,0 + 3bc00af4: 09f5570b sbib a4,(a0),-1,0 + 3bc00af8: bfcd j 3bc00aea + +000000003bc00afa : + 3bc00afa: 0e0007b7 lui a5,0xe000 + 3bc00afe: 4794 lw a3,8(a5) + 3bc00b00: 1141 addi sp,sp,-16 + 3bc00b02: e022 sd s0,0(sp) + 3bc00b04: e406 sd ra,8(sp) + 3bc00b06: 6709 lui a4,0x2 + 3bc00b08: 842a mv s0,a0 + 3bc00b0a: 00e6e463 bltu a3,a4,3bc00b12 + 3bc00b0e: 0007a423 sw zero,8(a5) # e000008 + 3bc00b12: 0e0007b7 lui a5,0xe000 + 3bc00b16: 4798 lw a4,8(a5) + 3bc00b18: 0017069b addiw a3,a4,1 + 3bc00b1c: c794 sw a3,8(a5) + 3bc00b1e: 0c0006b7 lui a3,0xc000 + 3bc00b22: 10e6d40b surb s0,a3,a4,0 + 3bc00b26: 4709 li a4,2 + 3bc00b28: 00b74d63 blt a4,a1,3bc00b42 + 3bc00b2c: 0007c783 lbu a5,0(a5) # e000000 + 3bc00b30: 8b91 andi a5,a5,4 + 3bc00b32: eb81 bnez a5,3bc00b42 + 3bc00b34: 0ff47513 andi a0,s0,255 + 3bc00b38: f6cff0ef jal ra,3bc002a4 + 3bc00b3c: 00055363 bgez a0,3bc00b42 + 3bc00b40: 547d li s0,-1 + 3bc00b42: 60a2 ld ra,8(sp) + 3bc00b44: 8522 mv a0,s0 + 3bc00b46: 6402 ld s0,0(sp) + 3bc00b48: 0141 addi sp,sp,16 + 3bc00b4a: 8082 ret + +000000003bc00b4c : + 3bc00b4c: 4701 li a4,0 + 3bc00b4e: 80e5478b lrbu a5,a0,a4,0 + 3bc00b52: 80e5c68b lrbu a3,a1,a4,0 + 3bc00b56: 00d78563 beq a5,a3,3bc00b60 + 3bc00b5a: 40d7853b subw a0,a5,a3 + 3bc00b5e: 8082 ret + 3bc00b60: 0705 addi a4,a4,1 + 3bc00b62: f7f5 bnez a5,3bc00b4e + 3bc00b64: 4501 li a0,0 + 3bc00b66: 8082 ret + +000000003bc00b68 : + 3bc00b68: 87aa mv a5,a0 + 3bc00b6a: 0007c703 lbu a4,0(a5) + 3bc00b6e: e701 bnez a4,3bc00b76 + 3bc00b70: 40a78533 sub a0,a5,a0 + 3bc00b74: 8082 ret + 3bc00b76: 0785 addi a5,a5,1 + 3bc00b78: bfcd j 3bc00b6a + +000000003bc00b7a : + 3bc00b7a: 1101 addi sp,sp,-32 + 3bc00b7c: 00c007b7 lui a5,0xc00 + 3bc00b80: e822 sd s0,16(sp) + 3bc00b82: e426 sd s1,8(sp) + 3bc00b84: e04a sd s2,0(sp) + 3bc00b86: 1c55370b extu a4,a0,7,5 + 3bc00b8a: 4007879b addiw a5,a5,1024 + 3bc00b8e: 0155541b srliw s0,a0,0x15 + 3bc00b92: 5105390b extu s2,a0,20,16 + 3bc00b96: 1045348b extu s1,a0,4,4 + 3bc00b9a: 3c85350b extu a0,a0,15,8 + 3bc00b9e: 9d3d addw a0,a0,a5 + 3bc00ba0: 0025151b slliw a0,a0,0x2 + 3bc00ba4: ec06 sd ra,24(sp) + 3bc00ba6: 7c05350b extu a0,a0,31,0 + 3bc00baa: c118 sw a4,0(a0) + 3bc00bac: 4529 li a0,10 + 3bc00bae: ddcff0ef jal ra,3bc0018a + 3bc00bb2: 00447793 andi a5,s0,4 + 3bc00bb6: eb9d bnez a5,3bc00bec + 3bc00bb8: 678d lui a5,0x3 + 3bc00bba: 881d andi s0,s0,7 + 3bc00bbc: 0207879b addiw a5,a5,32 + 3bc00bc0: 9c3d addw s0,s0,a5 + 3bc00bc2: 00c4141b slliw s0,s0,0xc + 3bc00bc6: 0504041b addiw s0,s0,80 + 3bc00bca: 7c04340b extu s0,s0,31,0 + 3bc00bce: 4008 lw a0,0(s0) + 3bc00bd0: 0125553b srlw a0,a0,s2 + 3bc00bd4: 00157793 andi a5,a0,1 + 3bc00bd8: 853e mv a0,a5 + 3bc00bda: c099 beqz s1,3bc00be0 + 3bc00bdc: 0017c513 xori a0,a5,1 + 3bc00be0: 60e2 ld ra,24(sp) + 3bc00be2: 6442 ld s0,16(sp) + 3bc00be4: 64a2 ld s1,8(sp) + 3bc00be6: 6902 ld s2,0(sp) + 3bc00be8: 6105 addi sp,sp,32 + 3bc00bea: 8082 ret + 3bc00bec: 05021437 lui s0,0x5021 + 3bc00bf0: 05040413 addi s0,s0,80 # 5021050 + 3bc00bf4: bfd9 j 3bc00bca + +000000003bc00bf6 : + 3bc00bf6: 030507b7 lui a5,0x3050 + 3bc00bfa: 1047a783 lw a5,260(a5) # 3050104 <__BSS_SIZE__+0x304a4f4> + 3bc00bfe: 0007851b sext.w a0,a5 + 3bc00c02: 8b91 andi a5,a5,4 + 3bc00c04: c391 beqz a5,3bc00c08 + 3bc00c06: bf95 j 3bc00b7a + 3bc00c08: 030007b7 lui a5,0x3000 + 3bc00c0c: 43c8 lw a0,4(a5) + 3bc00c0e: 2085350b extu a0,a0,8,8 + 3bc00c12: 8082 ret + +000000003bc00c14 : + 3bc00c14: 1141 addi sp,sp,-16 + 3bc00c16: e406 sd ra,8(sp) + 3bc00c18: df4ff0ef jal ra,3bc0020c + 3bc00c1c: 60a2 ld ra,8(sp) + 3bc00c1e: 3e75051b addiw a0,a0,999 + 3bc00c22: 3e800793 li a5,1000 + 3bc00c26: 02f5553b divuw a0,a0,a5 + 3bc00c2a: 0141 addi sp,sp,16 + 3bc00c2c: 8082 ret + +000000003bc00c2e : + 3bc00c2e: 7179 addi sp,sp,-48 + 3bc00c30: 8732 mv a4,a2 + 3bc00c32: 2601 sext.w a2,a2 + 3bc00c34: f022 sd s0,32(sp) + 3bc00c36: ec26 sd s1,24(sp) + 3bc00c38: e03a sd a4,0(sp) + 3bc00c3a: f406 sd ra,40(sp) + 3bc00c3c: 84aa mv s1,a0 + 3bc00c3e: e42e sd a1,8(sp) + 3bc00c40: 295030ef jal ra,3bc046d4 + 3bc00c44: 4785 li a5,1 + 3bc00c46: f8d1470b ldd a4,a3,(sp),0,4 + 3bc00c4a: 5479 li s0,-2 + 3bc00c4c: 00f51363 bne a0,a5,3bc00c52 + 3bc00c50: 4401 li s0,0 + 3bc00c52: 8626 mv a2,s1 + 3bc00c54: 85a2 mv a1,s0 + 3bc00c56: 0000a517 auipc a0,0xa + 3bc00c5a: 86250513 addi a0,a0,-1950 # 3bc0a4b8 + 3bc00c5e: efaff0ef jal ra,3bc00358 + 3bc00c62: 70a2 ld ra,40(sp) + 3bc00c64: 8522 mv a0,s0 + 3bc00c66: 7402 ld s0,32(sp) + 3bc00c68: 64e2 ld s1,24(sp) + 3bc00c6a: 6145 addi sp,sp,48 + 3bc00c6c: 8082 ret + +000000003bc00c6e : + 3bc00c6e: 1101 addi sp,sp,-32 + 3bc00c70: 0000d617 auipc a2,0xd + 3bc00c74: f9060613 addi a2,a2,-112 # 3bc0dc00 <__BSS_START__> + 3bc00c78: e42a sd a0,8(sp) + 3bc00c7a: 6585 lui a1,0x1 + 3bc00c7c: 0000a517 auipc a0,0xa + 3bc00c80: 85c50513 addi a0,a0,-1956 # 3bc0a4d8 + 3bc00c84: ec06 sd ra,24(sp) + 3bc00c86: e822 sd s0,16(sp) + 3bc00c88: ed0ff0ef jal ra,3bc00358 + 3bc00c8c: c87ff097 auipc ra,0xc87ff + 3bc00c90: 394080e7 jalr 916(ra) # 4400020 + 3bc00c94: 67b5 lui a5,0xd + 3bc00c96: 2501 sext.w a0,a0 + 3bc00c98: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00c9c: 66a2 ld a3,8(sp) + 3bc00c9e: 6605 lui a2,0x1 + 3bc00ca0: 04f51463 bne a0,a5,3bc00ce8 + 3bc00ca4: 3c0027b7 lui a5,0x3c002 + 3bc00ca8: 0e07a583 lw a1,224(a5) # 3c0020e0 <__BL2_END__+0x3ee8d0> + 3bc00cac: 0000d517 auipc a0,0xd + 3bc00cb0: f5450513 addi a0,a0,-172 # 3bc0dc00 <__BSS_START__> + 3bc00cb4: f7bff0ef jal ra,3bc00c2e + 3bc00cb8: 02054463 bltz a0,3bc00ce0 + 3bc00cbc: 0000d417 auipc s0,0xd + 3bc00cc0: f4440413 addi s0,s0,-188 # 3bc0dc00 <__BSS_START__> + 3bc00cc4: 6018 ld a4,0(s0) + 3bc00cc6: 0000a797 auipc a5,0xa + 3bc00cca: c6a7b783 ld a5,-918(a5) # 3bc0a930 + 3bc00cce: 02f70a63 beq a4,a5,3bc00d02 + 3bc00cd2: 0000a517 auipc a0,0xa + 3bc00cd6: 81e50513 addi a0,a0,-2018 # 3bc0a4f0 + 3bc00cda: e7eff0ef jal ra,3bc00358 + 3bc00cde: 557d li a0,-1 + 3bc00ce0: 60e2 ld ra,24(sp) + 3bc00ce2: 6442 ld s0,16(sp) + 3bc00ce4: 6105 addi sp,sp,32 + 3bc00ce6: 8082 ret + 3bc00ce8: 3c0027b7 lui a5,0x3c002 + 3bc00cec: 0e07a583 lw a1,224(a5) # 3c0020e0 <__BL2_END__+0x3ee8d0> + 3bc00cf0: 0000d517 auipc a0,0xd + 3bc00cf4: f1050513 addi a0,a0,-240 # 3bc0dc00 <__BSS_START__> + 3bc00cf8: c87ff097 auipc ra,0xc87ff + 3bc00cfc: 368080e7 jalr 872(ra) # 4400060 + 3bc00d00: bf65 j 3bc00cb8 + 3bc00d02: 6585 lui a1,0x1 + 3bc00d04: 15d1 addi a1,a1,-12 + 3bc00d06: 0000d517 auipc a0,0xd + 3bc00d0a: f0650513 addi a0,a0,-250 # 3bc0dc0c <__BSS_START__+0xc> + 3bc00d0e: c87ff097 auipc ra,0xc87ff + 3bc00d12: 392080e7 jalr 914(ra) # 44000a0 + 3bc00d16: 4410 lw a2,8(s0) + 3bc00d18: 0005059b sext.w a1,a0 + 3bc00d1c: 00b60963 beq a2,a1,3bc00d2e + 3bc00d20: 00009517 auipc a0,0x9 + 3bc00d24: 7e850513 addi a0,a0,2024 # 3bc0a508 + 3bc00d28: e30ff0ef jal ra,3bc00358 + 3bc00d2c: bf4d j 3bc00cde + 3bc00d2e: 00009517 auipc a0,0x9 + 3bc00d32: 7fa50513 addi a0,a0,2042 # 3bc0a528 + 3bc00d36: e22ff0ef jal ra,3bc00358 + 3bc00d3a: 4501 li a0,0 + 3bc00d3c: b755 j 3bc00ce0 + +000000003bc00d3e : + 3bc00d3e: 1101 addi sp,sp,-32 + 3bc00d40: e822 sd s0,16(sp) + 3bc00d42: 0000d417 auipc s0,0xd + 3bc00d46: ebe40413 addi s0,s0,-322 # 3bc0dc00 <__BSS_START__> + 3bc00d4a: 4c10 lw a2,24(s0) + 3bc00d4c: 484c lw a1,20(s0) + 3bc00d4e: e42a sd a0,8(sp) + 3bc00d50: 00009517 auipc a0,0x9 + 3bc00d54: 7e050513 addi a0,a0,2016 # 3bc0a530 + 3bc00d58: ec06 sd ra,24(sp) + 3bc00d5a: dfeff0ef jal ra,3bc00358 + 3bc00d5e: 4c18 lw a4,24(s0) + 3bc00d60: 6791 lui a5,0x4 + 3bc00d62: 66a2 ld a3,8(sp) + 3bc00d64: 00f76363 bltu a4,a5,3bc00d6a + 3bc00d68: cc1c sw a5,24(s0) + 3bc00d6a: e436 sd a3,8(sp) + 3bc00d6c: c87ff097 auipc ra,0xc87ff + 3bc00d70: 2b4080e7 jalr 692(ra) # 4400020 + 3bc00d74: 67b5 lui a5,0xd + 3bc00d76: 2501 sext.w a0,a0 + 3bc00d78: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00d7c: 66a2 ld a3,8(sp) + 3bc00d7e: 01846603 lwu a2,24(s0) + 3bc00d82: 484c lw a1,20(s0) + 3bc00d84: 04f51363 bne a0,a5,3bc00dca + 3bc00d88: 0000e517 auipc a0,0xe + 3bc00d8c: e7850513 addi a0,a0,-392 # 3bc0ec00 + 3bc00d90: e9fff0ef jal ra,3bc00c2e + 3bc00d94: 02054763 bltz a0,3bc00dc2 + 3bc00d98: 4c0c lw a1,24(s0) + 3bc00d9a: 0000e517 auipc a0,0xe + 3bc00d9e: e6650513 addi a0,a0,-410 # 3bc0ec00 + 3bc00da2: c87ff097 auipc ra,0xc87ff + 3bc00da6: 2fe080e7 jalr 766(ra) # 44000a0 + 3bc00daa: 4810 lw a2,16(s0) + 3bc00dac: 0005059b sext.w a1,a0 + 3bc00db0: 02b60663 beq a2,a1,3bc00ddc + 3bc00db4: 00009517 auipc a0,0x9 + 3bc00db8: 79450513 addi a0,a0,1940 # 3bc0a548 + 3bc00dbc: d9cff0ef jal ra,3bc00358 + 3bc00dc0: 557d li a0,-1 + 3bc00dc2: 60e2 ld ra,24(sp) + 3bc00dc4: 6442 ld s0,16(sp) + 3bc00dc6: 6105 addi sp,sp,32 + 3bc00dc8: 8082 ret + 3bc00dca: 0000e517 auipc a0,0xe + 3bc00dce: e3650513 addi a0,a0,-458 # 3bc0ec00 + 3bc00dd2: c87ff097 auipc ra,0xc87ff + 3bc00dd6: 28e080e7 jalr 654(ra) # 4400060 + 3bc00dda: bf6d j 3bc00d94 + 3bc00ddc: 00009517 auipc a0,0x9 + 3bc00de0: 79450513 addi a0,a0,1940 # 3bc0a570 + 3bc00de4: d74ff0ef jal ra,3bc00358 + 3bc00de8: 4501 li a0,0 + 3bc00dea: bfe1 j 3bc00dc2 + +000000003bc00dec : + 3bc00dec: 7179 addi sp,sp,-48 + 3bc00dee: ec26 sd s1,24(sp) + 3bc00df0: 74cd lui s1,0xffff3 + 3bc00df2: e84a sd s2,16(sp) + 3bc00df4: e44e sd s3,8(sp) + 3bc00df6: e052 sd s4,0(sp) + 3bc00df8: f406 sd ra,40(sp) + 3bc00dfa: f022 sd s0,32(sp) + 3bc00dfc: 1604849b addiw s1,s1,352 + 3bc00e00: 4995 li s3,5 + 3bc00e02: 4a05 li s4,1 + 3bc00e04: 00009917 auipc s2,0x9 + 3bc00e08: 77490913 addi s2,s2,1908 # 3bc0a578 + 3bc00e0c: 4401 li s0,0 + 3bc00e0e: c87ff097 auipc ra,0xc87ff + 3bc00e12: 2b2080e7 jalr 690(ra) # 44000c0 + 3bc00e16: 00a45e63 bge s0,a0,3bc00e32 + 3bc00e1a: 8522 mv a0,s0 + 3bc00e1c: e53ff0ef jal ra,3bc00c6e + 3bc00e20: 00055463 bgez a0,3bc00e28 + 3bc00e24: 2405 addiw s0,s0,1 + 3bc00e26: b7e5 j 3bc00e0e + 3bc00e28: 8522 mv a0,s0 + 3bc00e2a: f15ff0ef jal ra,3bc00d3e + 3bc00e2e: fe054be3 bltz a0,3bc00e24 + 3bc00e32: c87ff097 auipc ra,0xc87ff + 3bc00e36: 28e080e7 jalr 654(ra) # 44000c0 + 3bc00e3a: 02a45f63 bge s0,a0,3bc00e78 + 3bc00e3e: dd7ff0ef jal ra,3bc00c14 + 3bc00e42: 0000b417 auipc s0,0xb + 3bc00e46: 90e40413 addi s0,s0,-1778 # 3bc0b750 + 3bc00e4a: 601c ld a5,0(s0) + 3bc00e4c: 00a79123 sh a0,2(a5) + 3bc00e50: 0000e517 auipc a0,0xe + 3bc00e54: db050513 addi a0,a0,-592 # 3bc0ec00 + 3bc00e58: 34a070ef jal ra,3bc081a2 + 3bc00e5c: db9ff0ef jal ra,3bc00c14 + 3bc00e60: 601c ld a5,0(s0) + 3bc00e62: 70a2 ld ra,40(sp) + 3bc00e64: 7402 ld s0,32(sp) + 3bc00e66: 00a79223 sh a0,4(a5) + 3bc00e6a: 64e2 ld s1,24(sp) + 3bc00e6c: 6942 ld s2,16(sp) + 3bc00e6e: 69a2 ld s3,8(sp) + 3bc00e70: 6a02 ld s4,0(sp) + 3bc00e72: 4501 li a0,0 + 3bc00e74: 6145 addi sp,sp,48 + 3bc00e76: 8082 ret + 3bc00e78: c87ff097 auipc ra,0xc87ff + 3bc00e7c: 1a8080e7 jalr 424(ra) # 4400020 + 3bc00e80: 9d25 addw a0,a0,s1 + 3bc00e82: 85a2 mv a1,s0 + 3bc00e84: 00a9ef63 bltu s3,a0,3bc00ea2 + 3bc00e88: 00aa1533 sll a0,s4,a0 + 3bc00e8c: 02957513 andi a0,a0,41 + 3bc00e90: c909 beqz a0,3bc00ea2 + 3bc00e92: 854a mv a0,s2 + 3bc00e94: cc4ff0ef jal ra,3bc00358 + 3bc00e98: c87ff097 auipc ra,0xc87ff + 3bc00e9c: 1e8080e7 jalr 488(ra) # 4400080 + 3bc00ea0: b7b5 j 3bc00e0c + 3bc00ea2: 00009517 auipc a0,0x9 + 3bc00ea6: 6fe50513 addi a0,a0,1790 # 3bc0a5a0 + 3bc00eaa: caeff0ef jal ra,3bc00358 + 3bc00eae: f0cff0ef jal ra,3bc005ba + +000000003bc00eb2 : + 3bc00eb2: 7179 addi sp,sp,-48 + 3bc00eb4: e84a sd s2,16(sp) + 3bc00eb6: 0000b917 auipc s2,0xb + 3bc00eba: 89a90913 addi s2,s2,-1894 # 3bc0b750 + 3bc00ebe: 00093783 ld a5,0(s2) + 3bc00ec2: f022 sd s0,32(sp) + 3bc00ec4: 0000d417 auipc s0,0xd + 3bc00ec8: d3c40413 addi s0,s0,-708 # 3bc0dc00 <__BSS_START__> + 3bc00ecc: 0047d703 lhu a4,4(a5) + 3bc00ed0: 5414 lw a3,40(s0) + 3bc00ed2: 5450 lw a2,44(s0) + 3bc00ed4: 504c lw a1,36(s0) + 3bc00ed6: ec26 sd s1,24(sp) + 3bc00ed8: f406 sd ra,40(sp) + 3bc00eda: e44e sd s3,8(sp) + 3bc00edc: 00e79323 sh a4,6(a5) + 3bc00ee0: 84aa mv s1,a0 + 3bc00ee2: 00009517 auipc a0,0x9 + 3bc00ee6: 6e650513 addi a0,a0,1766 # 3bc0a5c8 + 3bc00eea: c6eff0ef jal ra,3bc00358 + 3bc00eee: 545c lw a5,44(s0) + 3bc00ef0: 00009517 auipc a0,0x9 + 3bc00ef4: 6f050513 addi a0,a0,1776 # 3bc0a5e0 + 3bc00ef8: 10078763 beqz a5,3bc01006 + 3bc00efc: 800006b7 lui a3,0x80000 + 3bc00f00: 00f6863b addw a2,a3,a5 + 3bc00f04: 08000737 lui a4,0x8000 + 3bc00f08: 00e66b63 bltu a2,a4,3bc00f1e + 3bc00f0c: 85be mv a1,a5 + 3bc00f0e: 00009517 auipc a0,0x9 + 3bc00f12: 6ea50513 addi a0,a0,1770 # 3bc0a5f8 + 3bc00f16: c42ff0ef jal ra,3bc00358 + 3bc00f1a: ea0ff0ef jal ra,3bc005ba + 3bc00f1e: 540c lw a1,40(s0) + 3bc00f20: 9fad addw a5,a5,a1 + 3bc00f22: 9fb5 addw a5,a5,a3 + 3bc00f24: 00e7e763 bltu a5,a4,3bc00f32 + 3bc00f28: 00009517 auipc a0,0x9 + 3bc00f2c: 70050513 addi a0,a0,1792 # 3bc0a628 + 3bc00f30: b7dd j 3bc00f16 + 3bc00f32: c87ff097 auipc ra,0xc87ff + 3bc00f36: 0ee080e7 jalr 238(ra) # 4400020 + 3bc00f3a: 67b5 lui a5,0xd + 3bc00f3c: 0005071b sext.w a4,a0 + 3bc00f40: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00f44: 504c lw a1,36(s0) + 3bc00f46: 02846603 lwu a2,40(s0) + 3bc00f4a: 02c46503 lwu a0,44(s0) + 3bc00f4e: 86a6 mv a3,s1 + 3bc00f50: 04f71263 bne a4,a5,3bc00f94 + 3bc00f54: cdbff0ef jal ra,3bc00c2e + 3bc00f58: 84aa mv s1,a0 + 3bc00f5a: 02054563 bltz a0,3bc00f84 + 3bc00f5e: 540c lw a1,40(s0) + 3bc00f60: 02c46503 lwu a0,44(s0) + 3bc00f64: c87ff097 auipc ra,0xc87ff + 3bc00f68: 13c080e7 jalr 316(ra) # 44000a0 + 3bc00f6c: 5010 lw a2,32(s0) + 3bc00f6e: 0005059b sext.w a1,a0 + 3bc00f72: 02b60663 beq a2,a1,3bc00f9e + 3bc00f76: 00009517 auipc a0,0x9 + 3bc00f7a: 6e250513 addi a0,a0,1762 # 3bc0a658 + 3bc00f7e: bdaff0ef jal ra,3bc00358 + 3bc00f82: 54fd li s1,-1 + 3bc00f84: 70a2 ld ra,40(sp) + 3bc00f86: 7402 ld s0,32(sp) + 3bc00f88: 6942 ld s2,16(sp) + 3bc00f8a: 69a2 ld s3,8(sp) + 3bc00f8c: 8526 mv a0,s1 + 3bc00f8e: 64e2 ld s1,24(sp) + 3bc00f90: 6145 addi sp,sp,48 + 3bc00f92: 8082 ret + 3bc00f94: c87ff097 auipc ra,0xc87ff + 3bc00f98: 0cc080e7 jalr 204(ra) # 4400060 + 3bc00f9c: bf75 j 3bc00f58 + 3bc00f9e: 02846583 lwu a1,40(s0) + 3bc00fa2: 02c46503 lwu a0,44(s0) + 3bc00fa6: 3c0026b7 lui a3,0x3c002 + 3bc00faa: 4601 li a2,0 + 3bc00fac: 9f7ff0ef jal ra,3bc009a2 + 3bc00fb0: 84aa mv s1,a0 + 3bc00fb2: 00055a63 bgez a0,3bc00fc6 + 3bc00fb6: 85aa mv a1,a0 + 3bc00fb8: 00009517 auipc a0,0x9 + 3bc00fbc: 6c850513 addi a0,a0,1736 # 3bc0a680 + 3bc00fc0: b98ff0ef jal ra,3bc00358 + 3bc00fc4: b7c1 j 3bc00f84 + 3bc00fc6: 02846583 lwu a1,40(s0) + 3bc00fca: 02c46503 lwu a0,44(s0) + 3bc00fce: 0e0009b7 lui s3,0xe000 + 3bc00fd2: 984ff0ef jal ra,3bc00156 + 3bc00fd6: 07c9a483 lw s1,124(s3) # e00007c + 3bc00fda: 95bff0ef jal ra,3bc00934 + 3bc00fde: c37ff0ef jal ra,3bc00c14 + 3bc00fe2: 00093783 ld a5,0(s2) + 3bc00fe6: 2481 sext.w s1,s1 + 3bc00fe8: 00a79323 sh a0,6(a5) + 3bc00fec: 0abc17b7 lui a5,0xabc1 + 3bc00ff0: def78793 addi a5,a5,-529 # abc0def + 3bc00ff4: 00f49d63 bne s1,a5,3bc0100e + 3bc00ff8: 545c lw a5,44(s0) + 3bc00ffa: 06f9ae23 sw a5,124(s3) + 3bc00ffe: 00009517 auipc a0,0x9 + 3bc01002: 6a250513 addi a0,a0,1698 # 3bc0a6a0 + 3bc01006: b52ff0ef jal ra,3bc00358 + 3bc0100a: 4481 li s1,0 + 3bc0100c: bfa5 j 3bc00f84 + 3bc0100e: 02c46503 lwu a0,44(s0) + 3bc01012: ddaff0ef jal ra,3bc005ec + 3bc01016: b7e5 j 3bc00ffe + +000000003bc01018 : + 3bc01018: 1101 addi sp,sp,-32 + 3bc0101a: e822 sd s0,16(sp) + 3bc0101c: 0000d417 auipc s0,0xd + 3bc01020: be440413 addi s0,s0,-1052 # 3bc0dc00 <__BSS_START__> + 3bc01024: e04a sd s2,0(sp) + 3bc01026: 5c14 lw a3,56(s0) + 3bc01028: 5c50 lw a2,60(s0) + 3bc0102a: 892e mv s2,a1 + 3bc0102c: 584c lw a1,52(s0) + 3bc0102e: e426 sd s1,8(sp) + 3bc01030: 84aa mv s1,a0 + 3bc01032: 00009517 auipc a0,0x9 + 3bc01036: 67650513 addi a0,a0,1654 # 3bc0a6a8 + 3bc0103a: ec06 sd ra,24(sp) + 3bc0103c: b1cff0ef jal ra,3bc00358 + 3bc01040: 5c5c lw a5,60(s0) + 3bc01042: eb89 bnez a5,3bc01054 + 3bc01044: 00009517 auipc a0,0x9 + 3bc01048: 67c50513 addi a0,a0,1660 # 3bc0a6c0 + 3bc0104c: b0cff0ef jal ra,3bc00358 + 3bc01050: 4481 li s1,0 + 3bc01052: a069 j 3bc010dc + 3bc01054: 800006b7 lui a3,0x80000 + 3bc01058: 00f6863b addw a2,a3,a5 + 3bc0105c: 08000737 lui a4,0x8000 + 3bc01060: 00e66b63 bltu a2,a4,3bc01076 + 3bc01064: 85be mv a1,a5 + 3bc01066: 00009517 auipc a0,0x9 + 3bc0106a: 66a50513 addi a0,a0,1642 # 3bc0a6d0 + 3bc0106e: aeaff0ef jal ra,3bc00358 + 3bc01072: d48ff0ef jal ra,3bc005ba + 3bc01076: 5c0c lw a1,56(s0) + 3bc01078: 9fad addw a5,a5,a1 + 3bc0107a: 9fb5 addw a5,a5,a3 + 3bc0107c: 00e7e763 bltu a5,a4,3bc0108a + 3bc01080: 00009517 auipc a0,0x9 + 3bc01084: 68050513 addi a0,a0,1664 # 3bc0a700 + 3bc01088: b7dd j 3bc0106e + 3bc0108a: c87ff097 auipc ra,0xc87ff + 3bc0108e: f96080e7 jalr -106(ra) # 4400020 + 3bc01092: 67b5 lui a5,0xd + 3bc01094: 0005071b sext.w a4,a0 + 3bc01098: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0109c: 584c lw a1,52(s0) + 3bc0109e: 03846603 lwu a2,56(s0) + 3bc010a2: 03c46503 lwu a0,60(s0) + 3bc010a6: 86a6 mv a3,s1 + 3bc010a8: 04f71163 bne a4,a5,3bc010ea + 3bc010ac: b83ff0ef jal ra,3bc00c2e + 3bc010b0: 84aa mv s1,a0 + 3bc010b2: 02054563 bltz a0,3bc010dc + 3bc010b6: 5c0c lw a1,56(s0) + 3bc010b8: 03c46503 lwu a0,60(s0) + 3bc010bc: c87ff097 auipc ra,0xc87ff + 3bc010c0: fe4080e7 jalr -28(ra) # 44000a0 + 3bc010c4: 5810 lw a2,48(s0) + 3bc010c6: 0005059b sext.w a1,a0 + 3bc010ca: 02b60563 beq a2,a1,3bc010f4 + 3bc010ce: 00009517 auipc a0,0x9 + 3bc010d2: 66250513 addi a0,a0,1634 # 3bc0a730 + 3bc010d6: a82ff0ef jal ra,3bc00358 + 3bc010da: 54fd li s1,-1 + 3bc010dc: 60e2 ld ra,24(sp) + 3bc010de: 6442 ld s0,16(sp) + 3bc010e0: 6902 ld s2,0(sp) + 3bc010e2: 8526 mv a0,s1 + 3bc010e4: 64a2 ld s1,8(sp) + 3bc010e6: 6105 addi sp,sp,32 + 3bc010e8: 8082 ret + 3bc010ea: c87ff097 auipc ra,0xc87ff + 3bc010ee: f76080e7 jalr -138(ra) # 4400060 + 3bc010f2: bf7d j 3bc010b0 + 3bc010f4: 03846583 lwu a1,56(s0) + 3bc010f8: 03c46503 lwu a0,60(s0) + 3bc010fc: 3c0026b7 lui a3,0x3c002 + 3bc01100: 4601 li a2,0 + 3bc01102: 8a1ff0ef jal ra,3bc009a2 + 3bc01106: 84aa mv s1,a0 + 3bc01108: 00055a63 bgez a0,3bc0111c + 3bc0110c: 85aa mv a1,a0 + 3bc0110e: 00009517 auipc a0,0x9 + 3bc01112: 64250513 addi a0,a0,1602 # 3bc0a750 + 3bc01116: a42ff0ef jal ra,3bc00358 + 3bc0111a: b7c9 j 3bc010dc + 3bc0111c: 03846583 lwu a1,56(s0) + 3bc01120: 03c46503 lwu a0,60(s0) + 3bc01124: 832ff0ef jal ra,3bc00156 + 3bc01128: 00009517 auipc a0,0x9 + 3bc0112c: 64850513 addi a0,a0,1608 # 3bc0a770 + 3bc01130: a28ff0ef jal ra,3bc00358 + 3bc01134: 03c46783 lwu a5,60(s0) + 3bc01138: 00f93023 sd a5,0(s2) + 3bc0113c: bf11 j 3bc01050 + +000000003bc0113e : + 3bc0113e: 715d addi sp,sp,-80 + 3bc01140: f44e sd s3,40(sp) + 3bc01142: 0000d997 auipc s3,0xd + 3bc01146: abe98993 addi s3,s3,-1346 # 3bc0dc00 <__BSS_START__> + 3bc0114a: e85a sd s6,16(sp) + 3bc0114c: 8b2e mv s6,a1 + 3bc0114e: 0449a583 lw a1,68(s3) + 3bc01152: ec56 sd s5,24(sp) + 3bc01154: 8aaa mv s5,a0 + 3bc01156: 00009517 auipc a0,0x9 + 3bc0115a: 62250513 addi a0,a0,1570 # 3bc0a778 + 3bc0115e: e486 sd ra,72(sp) + 3bc01160: e0a2 sd s0,64(sp) + 3bc01162: fc26 sd s1,56(sp) + 3bc01164: f84a sd s2,48(sp) + 3bc01166: f052 sd s4,32(sp) + 3bc01168: 9f0ff0ef jal ra,3bc00358 + 3bc0116c: c87ff097 auipc ra,0xc87ff + 3bc01170: eb4080e7 jalr -332(ra) # 4400020 + 3bc01174: 67b5 lui a5,0xd + 3bc01176: 2501 sext.w a0,a0 + 3bc01178: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0117c: 0449a583 lw a1,68(s3) + 3bc01180: 86d6 mv a3,s5 + 3bc01182: 20000613 li a2,512 + 3bc01186: 02f51663 bne a0,a5,3bc011b2 + 3bc0118a: 0000e517 auipc a0,0xe + 3bc0118e: a7650513 addi a0,a0,-1418 # 3bc0ec00 + 3bc01192: a9dff0ef jal ra,3bc00c2e + 3bc01196: 02055763 bgez a0,3bc011c4 + 3bc0119a: 59fd li s3,-1 + 3bc0119c: 60a6 ld ra,72(sp) + 3bc0119e: 6406 ld s0,64(sp) + 3bc011a0: 74e2 ld s1,56(sp) + 3bc011a2: 7942 ld s2,48(sp) + 3bc011a4: 7a02 ld s4,32(sp) + 3bc011a6: 6ae2 ld s5,24(sp) + 3bc011a8: 6b42 ld s6,16(sp) + 3bc011aa: 854e mv a0,s3 + 3bc011ac: 79a2 ld s3,40(sp) + 3bc011ae: 6161 addi sp,sp,80 + 3bc011b0: 8082 ret + 3bc011b2: 0000e517 auipc a0,0xe + 3bc011b6: a4e50513 addi a0,a0,-1458 # 3bc0ec00 + 3bc011ba: c87ff097 auipc ra,0xc87ff + 3bc011be: ea6080e7 jalr -346(ra) # 4400060 + 3bc011c2: bfd1 j 3bc01196 + 3bc011c4: 0000e417 auipc s0,0xe + 3bc011c8: a3c40413 addi s0,s0,-1476 # 3bc0ec00 + 3bc011cc: 4458 lw a4,12(s0) + 3bc011ce: 6814 ld a3,16(s0) + 3bc011d0: 4410 lw a2,8(s0) + 3bc011d2: 1ff7049b addiw s1,a4,511 + 3bc011d6: 404c lw a1,4(s0) + 3bc011d8: e004f493 andi s1,s1,-512 + 3bc011dc: 2481 sext.w s1,s1 + 3bc011de: 87a6 mv a5,s1 + 3bc011e0: 00009517 auipc a0,0x9 + 3bc011e4: 5a850513 addi a0,a0,1448 # 3bc0a788 + 3bc011e8: 970ff0ef jal ra,3bc00358 + 3bc011ec: 4058 lw a4,4(s0) + 3bc011ee: 345a37b7 lui a5,0x345a3 + 3bc011f2: 34278793 addi a5,a5,834 # 345a3342 + 3bc011f6: 06f70363 beq a4,a5,3bc0125c + 3bc011fa: 414d37b7 lui a5,0x414d3 + 3bc011fe: 34278793 addi a5,a5,834 # 414d3342 <__BL2_END__+0x58bfb32> + 3bc01202: 06f70963 beq a4,a5,3bc01274 + 3bc01206: 01043903 ld s2,16(s0) + 3bc0120a: 4a01 li s4,0 + 3bc0120c: c87ff097 auipc ra,0xc87ff + 3bc01210: e14080e7 jalr -492(ra) # 4400020 + 3bc01214: 67b5 lui a5,0xd + 3bc01216: 2501 sext.w a0,a0 + 3bc01218: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0121c: 0449a583 lw a1,68(s3) + 3bc01220: 86d6 mv a3,s5 + 3bc01222: 8626 mv a2,s1 + 3bc01224: 04f51a63 bne a0,a5,3bc01278 + 3bc01228: 854a mv a0,s2 + 3bc0122a: a05ff0ef jal ra,3bc00c2e + 3bc0122e: f60546e3 bltz a0,3bc0119a + 3bc01232: 444c lw a1,12(s0) + 3bc01234: 00c90993 addi s3,s2,12 + 3bc01238: 854e mv a0,s3 + 3bc0123a: 35d1 addiw a1,a1,-12 + 3bc0123c: c87ff097 auipc ra,0xc87ff + 3bc01240: e64080e7 jalr -412(ra) # 44000a0 + 3bc01244: 4410 lw a2,8(s0) + 3bc01246: 0005059b sext.w a1,a0 + 3bc0124a: 02b60d63 beq a2,a1,3bc01284 + 3bc0124e: 00009517 auipc a0,0x9 + 3bc01252: 56a50513 addi a0,a0,1386 # 3bc0a7b8 + 3bc01256: 902ff0ef jal ra,3bc00358 + 3bc0125a: b781 j 3bc0119a + 3bc0125c: 4a09 li s4,2 + 3bc0125e: 85d2 mv a1,s4 + 3bc01260: 00009517 auipc a0,0x9 + 3bc01264: 54850513 addi a0,a0,1352 # 3bc0a7a8 + 3bc01268: 00819937 lui s2,0x819 + 3bc0126c: 8ecff0ef jal ra,3bc00358 + 3bc01270: 0922 slli s2,s2,0x8 + 3bc01272: bf69 j 3bc0120c + 3bc01274: 4a05 li s4,1 + 3bc01276: b7e5 j 3bc0125e + 3bc01278: 854a mv a0,s2 + 3bc0127a: c87ff097 auipc ra,0xc87ff + 3bc0127e: de6080e7 jalr -538(ra) # 4400060 + 3bc01282: b775 j 3bc0122e + 3bc01284: 444c lw a1,12(s0) + 3bc01286: 854e mv a0,s3 + 3bc01288: 3c0026b7 lui a3,0x3c002 + 3bc0128c: 35d1 addiw a1,a1,-12 + 3bc0128e: 4651 li a2,20 + 3bc01290: 7c05b58b extu a1,a1,31,0 + 3bc01294: f0eff0ef jal ra,3bc009a2 + 3bc01298: 89aa mv s3,a0 + 3bc0129a: 00055a63 bgez a0,3bc012ae + 3bc0129e: 85aa mv a1,a0 + 3bc012a0: 00009517 auipc a0,0x9 + 3bc012a4: 54050513 addi a0,a0,1344 # 3bc0a7e0 + 3bc012a8: 8b0ff0ef jal ra,3bc00358 + 3bc012ac: bdc5 j 3bc0119c + 3bc012ae: 967ff0ef jal ra,3bc00c14 + 3bc012b2: 0000a997 auipc s3,0xa + 3bc012b6: 49e98993 addi s3,s3,1182 # 3bc0b750 + 3bc012ba: 0009b783 ld a5,0(s3) + 3bc012be: 00a79423 sh a0,8(a5) + 3bc012c2: bbeff0ef jal ra,3bc00680 + 3bc012c6: 94fff0ef jal ra,3bc00c14 + 3bc012ca: 0009b783 ld a5,0(s3) + 3bc012ce: 00a79523 sh a0,10(a5) + 3bc012d2: 040a0363 beqz s4,3bc01318 + 3bc012d6: 6804 ld s1,16(s0) + 3bc012d8: 010007b7 lui a5,0x1000 + 3bc012dc: 02000613 li a2,32 + 3bc012e0: 85ca mv a1,s2 + 3bc012e2: 8526 mv a0,s1 + 3bc012e4: e43e sd a5,8(sp) + 3bc012e6: f94ff0ef jal ra,3bc00a7a + 3bc012ea: 00c46683 lwu a3,12(s0) + 3bc012ee: 02090613 addi a2,s2,32 # 819020 <__BSS_SIZE__+0x813410> + 3bc012f2: 002c addi a1,sp,8 + 3bc012f4: 02048513 addi a0,s1,32 # ffffffffffff3020 <__BL2_END__+0xffffffffc43df810> + 3bc012f8: 8752 mv a4,s4 + 3bc012fa: 3d4000ef jal ra,3bc016ce + 3bc012fe: 6622 ld a2,8(sp) + 3bc01300: 85aa mv a1,a0 + 3bc01302: 0006049b sext.w s1,a2 + 3bc01306: 00055963 bgez a0,3bc01318 + 3bc0130a: 00009517 auipc a0,0x9 + 3bc0130e: 4f650513 addi a0,a0,1270 # 3bc0a800 + 3bc01312: 846ff0ef jal ra,3bc00358 + 3bc01316: b551 j 3bc0119a + 3bc01318: 6808 ld a0,16(s0) + 3bc0131a: 85a6 mv a1,s1 + 3bc0131c: e3bfe0ef jal ra,3bc00156 + 3bc01320: 8f5ff0ef jal ra,3bc00c14 + 3bc01324: 0009b783 ld a5,0(s3) + 3bc01328: 4981 li s3,0 + 3bc0132a: 00a79623 sh a0,12(a5) # 100000c <__BSS_SIZE__+0xffa3fc> + 3bc0132e: 00009517 auipc a0,0x9 + 3bc01332: 50250513 addi a0,a0,1282 # 3bc0a830 + 3bc01336: 822ff0ef jal ra,3bc00358 + 3bc0133a: 681c ld a5,16(s0) + 3bc0133c: 02078793 addi a5,a5,32 + 3bc01340: 00fb3023 sd a5,0(s6) + 3bc01344: bda1 j 3bc0119c + +000000003bc01346 : + 3bc01346: 7179 addi sp,sp,-48 + 3bc01348: ec26 sd s1,24(sp) + 3bc0134a: 74cd lui s1,0xffff3 + 3bc0134c: e84a sd s2,16(sp) + 3bc0134e: f406 sd ra,40(sp) + 3bc01350: f022 sd s0,32(sp) + 3bc01352: e002 sd zero,0(sp) + 3bc01354: e402 sd zero,8(sp) + 3bc01356: 1604849b addiw s1,s1,352 + 3bc0135a: cc2ff0ef jal ra,3bc0081c + 3bc0135e: 4915 li s2,5 + 3bc01360: 4401 li s0,0 + 3bc01362: c87ff097 auipc ra,0xc87ff + 3bc01366: d5e080e7 jalr -674(ra) # 44000c0 + 3bc0136a: 02a45563 bge s0,a0,3bc01394 + 3bc0136e: 8522 mv a0,s0 + 3bc01370: b43ff0ef jal ra,3bc00eb2 + 3bc01374: 00055463 bgez a0,3bc0137c + 3bc01378: 2405 addiw s0,s0,1 + 3bc0137a: b7e5 j 3bc01362 + 3bc0137c: 858a mv a1,sp + 3bc0137e: 8522 mv a0,s0 + 3bc01380: c99ff0ef jal ra,3bc01018 + 3bc01384: fe054ae3 bltz a0,3bc01378 + 3bc01388: 002c addi a1,sp,8 + 3bc0138a: 8522 mv a0,s0 + 3bc0138c: db3ff0ef jal ra,3bc0113e + 3bc01390: fe0544e3 bltz a0,3bc01378 + 3bc01394: c87ff097 auipc ra,0xc87ff + 3bc01398: d2c080e7 jalr -724(ra) # 44000c0 + 3bc0139c: 02a45b63 bge s0,a0,3bc013d2 + 3bc013a0: dadfe0ef jal ra,3bc0014c + 3bc013a4: f1ffe0ef jal ra,3bc002c2 + 3bc013a8: c8cff0ef jal ra,3bc00834 + 3bc013ac: 6582 ld a1,0(sp) + 3bc013ae: c5a5 beqz a1,3bc01416 + 3bc013b0: 00009517 auipc a0,0x9 + 3bc013b4: 4b850513 addi a0,a0,1208 # 3bc0a868 + 3bc013b8: fa1fe0ef jal ra,3bc00358 + 3bc013bc: 65a2 ld a1,8(sp) + 3bc013be: 6502 ld a0,0(sp) + 3bc013c0: e5bfe0ef jal ra,3bc0021a + 3bc013c4: 70a2 ld ra,40(sp) + 3bc013c6: 7402 ld s0,32(sp) + 3bc013c8: 64e2 ld s1,24(sp) + 3bc013ca: 6942 ld s2,16(sp) + 3bc013cc: 4501 li a0,0 + 3bc013ce: 6145 addi sp,sp,48 + 3bc013d0: 8082 ret + 3bc013d2: c87ff097 auipc ra,0xc87ff + 3bc013d6: c4e080e7 jalr -946(ra) # 4400020 + 3bc013da: 00a487bb addw a5,s1,a0 + 3bc013de: 85a2 mv a1,s0 + 3bc013e0: 02f96363 bltu s2,a5,3bc01406 + 3bc013e4: 4505 li a0,1 + 3bc013e6: 00f51533 sll a0,a0,a5 + 3bc013ea: 02957513 andi a0,a0,41 + 3bc013ee: cd01 beqz a0,3bc01406 + 3bc013f0: 00009517 auipc a0,0x9 + 3bc013f4: 18850513 addi a0,a0,392 # 3bc0a578 + 3bc013f8: f61fe0ef jal ra,3bc00358 + 3bc013fc: c87ff097 auipc ra,0xc87ff + 3bc01400: c84080e7 jalr -892(ra) # 4400080 + 3bc01404: bfb1 j 3bc01360 + 3bc01406: 00009517 auipc a0,0x9 + 3bc0140a: 44250513 addi a0,a0,1090 # 3bc0a848 + 3bc0140e: f4bfe0ef jal ra,3bc00358 + 3bc01412: 9a8ff0ef jal ra,3bc005ba + 3bc01416: 65a2 ld a1,8(sp) + 3bc01418: 00009517 auipc a0,0x9 + 3bc0141c: 47050513 addi a0,a0,1136 # 3bc0a888 + 3bc01420: f39fe0ef jal ra,3bc00358 + 3bc01424: 6522 ld a0,8(sp) + 3bc01426: e6dfe0ef jal ra,3bc00292 + 3bc0142a: bf69 j 3bc013c4 + +000000003bc0142c : + 3bc0142c: 1141 addi sp,sp,-16 + 3bc0142e: e406 sd ra,8(sp) + 3bc01430: b200f737 lui a4,0xb200f + 3bc01434: e022 sd s0,0(sp) + 3bc01436: 030007b7 lui a5,0x3000 + 3bc0143a: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc0143e: fd6ff0ef jal ra,3bc00c14 + 3bc01442: 0000a797 auipc a5,0xa + 3bc01446: 30e7b783 ld a5,782(a5) # 3bc0b750 + 3bc0144a: 00a79023 sh a0,0(a5) + 3bc0144e: 00009617 auipc a2,0x9 + 3bc01452: eb260613 addi a2,a2,-334 # 3bc0a300 + 3bc01456: 00009597 auipc a1,0x9 + 3bc0145a: eca58593 addi a1,a1,-310 # 3bc0a320 + 3bc0145e: 00009517 auipc a0,0x9 + 3bc01462: 44a50513 addi a0,a0,1098 # 3bc0a8a8 + 3bc01466: ef3fe0ef jal ra,3bc00358 + 3bc0146a: 0e000437 lui s0,0xe000 + 3bc0146e: 400c lw a1,0(s0) + 3bc01470: 00009517 auipc a0,0x9 + 3bc01474: 44850513 addi a0,a0,1096 # 3bc0a8b8 + 3bc01478: ee1fe0ef jal ra,3bc00358 + 3bc0147c: 3c0027b7 lui a5,0x3c002 + 3bc01480: 47cc lw a1,12(a5) + 3bc01482: 0e07a603 lw a2,224(a5) # 3c0020e0 <__BL2_END__+0x3ee8d0> + 3bc01486: 00009517 auipc a0,0x9 + 3bc0148a: 44a50513 addi a0,a0,1098 # 3bc0a8d0 + 3bc0148e: ecbfe0ef jal ra,3bc00358 + 3bc01492: 4c0c lw a1,24(s0) + 3bc01494: 00009517 auipc a0,0x9 + 3bc01498: 47450513 addi a0,a0,1140 # 3bc0a908 + 3bc0149c: 2581 sext.w a1,a1 + 3bc0149e: ebbfe0ef jal ra,3bc00358 + 3bc014a2: 994ff0ef jal ra,3bc00636 + 3bc014a6: b8cff0ef jal ra,3bc00832 + 3bc014aa: bceff0ef jal ra,3bc00878 + 3bc014ae: 93fff0ef jal ra,3bc00dec + 3bc014b2: e95ff0ef jal ra,3bc01346 + 3bc014b6: 00009517 auipc a0,0x9 + 3bc014ba: 46a50513 addi a0,a0,1130 # 3bc0a920 + 3bc014be: e9bfe0ef jal ra,3bc00358 + 3bc014c2: a001 j 3bc014c2 + +000000003bc014c4 : + 3bc014c4: 8082 ret + +000000003bc014c6 : + 3bc014c6: 00012797 auipc a5,0x12 + 3bc014ca: 23278793 addi a5,a5,562 # 3bc136f8 + 3bc014ce: 6388 ld a0,0(a5) + 3bc014d0: 00b50733 add a4,a0,a1 + 3bc014d4: e398 sd a4,0(a5) + 3bc014d6: 00012797 auipc a5,0x12 + 3bc014da: 22a7b783 ld a5,554(a5) # 3bc13700 + 3bc014de: 97ba add a5,a5,a4 + 3bc014e0: 02f76363 bltu a4,a5,3bc01506 + 3bc014e4: 1141 addi sp,sp,-16 + 3bc014e6: 862e mv a2,a1 + 3bc014e8: 00009517 auipc a0,0x9 + 3bc014ec: 45050513 addi a0,a0,1104 # 3bc0a938 + 3bc014f0: 00009597 auipc a1,0x9 + 3bc014f4: 5b058593 addi a1,a1,1456 # 3bc0aaa0 <__func__.0> + 3bc014f8: e406 sd ra,8(sp) + 3bc014fa: e5ffe0ef jal ra,3bc00358 + 3bc014fe: 60a2 ld ra,8(sp) + 3bc01500: 4501 li a0,0 + 3bc01502: 0141 addi sp,sp,16 + 3bc01504: 8082 ret + 3bc01506: 8082 ret + +000000003bc01508 : + 3bc01508: 711d addi sp,sp,-96 + 3bc0150a: 00000797 auipc a5,0x0 + 3bc0150e: fbc78793 addi a5,a5,-68 # 3bc014c6 + 3bc01512: f83e sd a5,48(sp) + 3bc01514: 00000797 auipc a5,0x0 + 3bc01518: fb078793 addi a5,a5,-80 # 3bc014c4 + 3bc0151c: ec86 sd ra,88(sp) + 3bc0151e: e8a2 sd s0,80(sp) + 3bc01520: e4a6 sd s1,72(sp) + 3bc01522: e0ca sd s2,64(sp) + 3bc01524: ec36 sd a3,24(sp) + 3bc01526: f402 sd zero,40(sp) + 3bc01528: fc3e sd a5,56(sp) + 3bc0152a: d202 sw zero,36(sp) + 3bc0152c: e19d bnez a1,3bc01552 + 3bc0152e: 00009597 auipc a1,0x9 + 3bc01532: 57a58593 addi a1,a1,1402 # 3bc0aaa8 <__func__.1> + 3bc01536: 00009517 auipc a0,0x9 + 3bc0153a: 42250513 addi a0,a0,1058 # 3bc0a958 + 3bc0153e: e1bfe0ef jal ra,3bc00358 + 3bc01542: 5429 li s0,-22 + 3bc01544: 60e6 ld ra,88(sp) + 3bc01546: 8522 mv a0,s0 + 3bc01548: 6446 ld s0,80(sp) + 3bc0154a: 64a6 ld s1,72(sp) + 3bc0154c: 6906 ld s2,64(sp) + 3bc0154e: 6125 addi sp,sp,96 + 3bc01550: 8082 ret + 3bc01552: 10300793 li a5,259 + 3bc01556: 07de slli a5,a5,0x17 + 3bc01558: 842a mv s0,a0 + 3bc0155a: 00012717 auipc a4,0x12 + 3bc0155e: 18f73f23 sd a5,414(a4) # 3bc136f8 + 3bc01562: 84ae mv s1,a1 + 3bc01564: 001007b7 lui a5,0x100 + 3bc01568: 85aa mv a1,a0 + 3bc0156a: 00009517 auipc a0,0x9 + 3bc0156e: 40e50513 addi a0,a0,1038 # 3bc0a978 + 3bc01572: 8932 mv s2,a2 + 3bc01574: 00012717 auipc a4,0x12 + 3bc01578: 18f73623 sd a5,396(a4) # 3bc13700 + 3bc0157c: dddfe0ef jal ra,3bc00358 + 3bc01580: 67e2 ld a5,24(sp) + 3bc01582: 4611 li a2,4 + 3bc01584: 00590593 addi a1,s2,5 + 3bc01588: 17ed addi a5,a5,-5 + 3bc0158a: 1008 addi a0,sp,32 + 3bc0158c: ec3e sd a5,24(sp) + 3bc0158e: cecff0ef jal ra,3bc00a7a + 3bc01592: 67e2 ld a5,24(sp) + 3bc01594: 02016583 lwu a1,32(sp) + 3bc01598: 00009517 auipc a0,0x9 + 3bc0159c: 3f850513 addi a0,a0,1016 # 3bc0a990 + 3bc015a0: 17e1 addi a5,a5,-8 + 3bc015a2: f42e sd a1,40(sp) + 3bc015a4: ec3e sd a5,24(sp) + 3bc015a6: db3fe0ef jal ra,3bc00358 + 3bc015aa: 181c addi a5,sp,48 + 3bc015ac: e03e sd a5,0(sp) + 3bc015ae: 8522 mv a0,s0 + 3bc015b0: 02410893 addi a7,sp,36 + 3bc015b4: 4805 li a6,1 + 3bc015b6: 4795 li a5,5 + 3bc015b8: 874a mv a4,s2 + 3bc015ba: 0834 addi a3,sp,24 + 3bc015bc: 00d90613 addi a2,s2,13 + 3bc015c0: 102c addi a1,sp,40 + 3bc015c2: 5f5040ef jal ra,3bc063b6 + 3bc015c6: 842a mv s0,a0 + 3bc015c8: c919 beqz a0,3bc015de + 3bc015ca: 5612 lw a2,36(sp) + 3bc015cc: 85aa mv a1,a0 + 3bc015ce: 00009517 auipc a0,0x9 + 3bc015d2: 3e250513 addi a0,a0,994 # 3bc0a9b0 + 3bc015d6: d83fe0ef jal ra,3bc00358 + 3bc015da: 5449 li s0,-14 + 3bc015dc: b7a5 j 3bc01544 + 3bc015de: 75a2 ld a1,40(sp) + 3bc015e0: 00009517 auipc a0,0x9 + 3bc015e4: 3f850513 addi a0,a0,1016 # 3bc0a9d8 + 3bc015e8: e08c sd a1,0(s1) + 3bc015ea: d6ffe0ef jal ra,3bc00358 + 3bc015ee: bf99 j 3bc01544 + +000000003bc015f0 : + 3bc015f0: 85aa mv a1,a0 + 3bc015f2: 4501 li a0,0 + 3bc015f4: bdc9 j 3bc014c6 + +000000003bc015f6 : + 3bc015f6: 02b50633 mul a2,a0,a1 + 3bc015fa: 1101 addi sp,sp,-32 + 3bc015fc: e822 sd s0,16(sp) + 3bc015fe: ec06 sd ra,24(sp) + 3bc01600: 8532 mv a0,a2 + 3bc01602: e432 sd a2,8(sp) + 3bc01604: fedff0ef jal ra,3bc015f0 + 3bc01608: 842a mv s0,a0 + 3bc0160a: c509 beqz a0,3bc01614 + 3bc0160c: 6622 ld a2,8(sp) + 3bc0160e: 4581 li a1,0 + 3bc01610: c10ff0ef jal ra,3bc00a20 + 3bc01614: 60e2 ld ra,24(sp) + 3bc01616: 8522 mv a0,s0 + 3bc01618: 6442 ld s0,16(sp) + 3bc0161a: 6105 addi sp,sp,32 + 3bc0161c: 8082 ret + +000000003bc0161e : + 3bc0161e: 8082 ret + +000000003bc01620 : + 3bc01620: 10300793 li a5,259 + 3bc01624: 715d addi sp,sp,-80 + 3bc01626: 07de slli a5,a5,0x17 + 3bc01628: e0a2 sd s0,64(sp) + 3bc0162a: f84a sd s2,48(sp) + 3bc0162c: 00012717 auipc a4,0x12 + 3bc01630: 0cf73623 sd a5,204(a4) # 3bc136f8 + 3bc01634: 842a mv s0,a0 + 3bc01636: 001007b7 lui a5,0x100 + 3bc0163a: 892e mv s2,a1 + 3bc0163c: 85aa mv a1,a0 + 3bc0163e: 00009517 auipc a0,0x9 + 3bc01642: 3b250513 addi a0,a0,946 # 3bc0a9f0 + 3bc01646: e486 sd ra,72(sp) + 3bc01648: e436 sd a3,8(sp) + 3bc0164a: 00012717 auipc a4,0x12 + 3bc0164e: 0af73b23 sd a5,182(a4) # 3bc13700 + 3bc01652: fc26 sd s1,56(sp) + 3bc01654: f44e sd s3,40(sp) + 3bc01656: 89b2 mv s3,a2 + 3bc01658: d01fe0ef jal ra,3bc00358 + 3bc0165c: 06400593 li a1,100 + 3bc01660: 0828 addi a0,sp,24 + 3bc01662: 38b050ef jal ra,3bc071ec + 3bc01666: 84aa mv s1,a0 + 3bc01668: 1b7050ef jal ra,3bc0701e + 3bc0166c: 2501 sext.w a0,a0 + 3bc0166e: c105 beqz a0,3bc0168e + 3bc01670: 85a6 mv a1,s1 + 3bc01672: 00009517 auipc a0,0x9 + 3bc01676: 39650513 addi a0,a0,918 # 3bc0aa08 + 3bc0167a: cdffe0ef jal ra,3bc00358 + 3bc0167e: 557d li a0,-1 + 3bc01680: 60a6 ld ra,72(sp) + 3bc01682: 6406 ld s0,64(sp) + 3bc01684: 74e2 ld s1,56(sp) + 3bc01686: 7942 ld s2,48(sp) + 3bc01688: 79a2 ld s3,40(sp) + 3bc0168a: 6161 addi sp,sp,80 + 3bc0168c: 8082 ret + 3bc0168e: 6562 ld a0,24(sp) + 3bc01690: 4781 li a5,0 + 3bc01692: 0038 addi a4,sp,8 + 3bc01694: 85a2 mv a1,s0 + 3bc01696: 86ce mv a3,s3 + 3bc01698: 864a mv a2,s2 + 3bc0169a: 383050ef jal ra,3bc0721c + 3bc0169e: 6622 ld a2,8(sp) + 3bc016a0: 00093583 ld a1,0(s2) + 3bc016a4: 86aa mv a3,a0 + 3bc016a6: 842a mv s0,a0 + 3bc016a8: 00009517 auipc a0,0x9 + 3bc016ac: 37850513 addi a0,a0,888 # 3bc0aa20 + 3bc016b0: ca9fe0ef jal ra,3bc00358 + 3bc016b4: 8526 mv a0,s1 + 3bc016b6: 169050ef jal ra,3bc0701e + 3bc016ba: 0005079b sext.w a5,a0 + 3bc016be: 4501 li a0,0 + 3bc016c0: d3e1 beqz a5,3bc01680 + 3bc016c2: 85a2 mv a1,s0 + 3bc016c4: 00009517 auipc a0,0x9 + 3bc016c8: 38450513 addi a0,a0,900 # 3bc0aa48 + 3bc016cc: b77d j 3bc0167a + +000000003bc016ce : + 3bc016ce: 7139 addi sp,sp,-64 + 3bc016d0: 87ba mv a5,a4 + 3bc016d2: ec4e sd s3,24(sp) + 3bc016d4: e852 sd s4,16(sp) + 3bc016d6: e456 sd s5,8(sp) + 3bc016d8: 89b2 mv s3,a2 + 3bc016da: 8a36 mv s4,a3 + 3bc016dc: 8aba mv s5,a4 + 3bc016de: 8736 mv a4,a3 + 3bc016e0: 86b2 mv a3,a2 + 3bc016e2: 6190 ld a2,0(a1) + 3bc016e4: f426 sd s1,40(sp) + 3bc016e6: f04a sd s2,32(sp) + 3bc016e8: 84ae mv s1,a1 + 3bc016ea: 892a mv s2,a0 + 3bc016ec: 85aa mv a1,a0 + 3bc016ee: 00009517 auipc a0,0x9 + 3bc016f2: 37a50513 addi a0,a0,890 # 3bc0aa68 + 3bc016f6: fc06 sd ra,56(sp) + 3bc016f8: f822 sd s0,48(sp) + 3bc016fa: c5ffe0ef jal ra,3bc00358 + 3bc016fe: 4785 li a5,1 + 3bc01700: 02fa8f63 beq s5,a5,3bc0173e + 3bc01704: 4789 li a5,2 + 3bc01706: 5429 li s0,-22 + 3bc01708: 00fa9963 bne s5,a5,3bc0171a + 3bc0170c: 86d2 mv a3,s4 + 3bc0170e: 864e mv a2,s3 + 3bc01710: 85a6 mv a1,s1 + 3bc01712: 854a mv a0,s2 + 3bc01714: f0dff0ef jal ra,3bc01620 + 3bc01718: 842a mv s0,a0 + 3bc0171a: 608c ld a1,0(s1) + 3bc0171c: 8622 mv a2,s0 + 3bc0171e: 00009517 auipc a0,0x9 + 3bc01722: 36a50513 addi a0,a0,874 # 3bc0aa88 + 3bc01726: c33fe0ef jal ra,3bc00358 + 3bc0172a: 70e2 ld ra,56(sp) + 3bc0172c: 8522 mv a0,s0 + 3bc0172e: 7442 ld s0,48(sp) + 3bc01730: 74a2 ld s1,40(sp) + 3bc01732: 7902 ld s2,32(sp) + 3bc01734: 69e2 ld s3,24(sp) + 3bc01736: 6a42 ld s4,16(sp) + 3bc01738: 6aa2 ld s5,8(sp) + 3bc0173a: 6121 addi sp,sp,64 + 3bc0173c: 8082 ret + 3bc0173e: 86d2 mv a3,s4 + 3bc01740: 864e mv a2,s3 + 3bc01742: 85a6 mv a1,s1 + 3bc01744: 854a mv a0,s2 + 3bc01746: dc3ff0ef jal ra,3bc01508 + 3bc0174a: b7f9 j 3bc01718 + +000000003bc0174c : + 3bc0174c: 4108 lw a0,0(a0) + 3bc0174e: 2501 sext.w a0,a0 + 3bc01750: 8082 ret + +000000003bc01752 : + 3bc01752: c188 sw a0,0(a1) + 3bc01754: 8082 ret + +000000003bc01756 : + 3bc01756: 8082 ret + +000000003bc01758 : + 3bc01758: 00012717 auipc a4,0x12 + 3bc0175c: 0b370713 addi a4,a4,179 # 3bc1380b + 3bc01760: 00074783 lbu a5,0(a4) + 3bc01764: eb89 bnez a5,3bc01776 + 3bc01766: 0000a517 auipc a0,0xa + 3bc0176a: 09253503 ld a0,146(a0) # 3bc0b7f8 + 3bc0176e: 2785 addiw a5,a5,1 + 3bc01770: 00f70023 sb a5,0(a4) + 3bc01774: 8082 ret + 3bc01776: 4685 li a3,1 + 3bc01778: 00d79763 bne a5,a3,3bc01786 + 3bc0177c: 0000a517 auipc a0,0xa + 3bc01780: 08453503 ld a0,132(a0) # 3bc0b800 + 3bc01784: b7ed j 3bc0176e + 3bc01786: 0000a517 auipc a0,0xa + 3bc0178a: 08253503 ld a0,130(a0) # 3bc0b808 + 3bc0178e: b7c5 j 3bc0176e + +000000003bc01790 : + 3bc01790: 8082 ret + +000000003bc01792 : + 3bc01792: 698c ld a1,16(a1) + 3bc01794: 00012517 auipc a0,0x12 + 3bc01798: f7453503 ld a0,-140(a0) # 3bc13708 + 3bc0179c: 1141 addi sp,sp,-16 + 3bc0179e: 461d li a2,7 + 3bc017a0: 0511 addi a0,a0,4 + 3bc017a2: e406 sd ra,8(sp) + 3bc017a4: ad6ff0ef jal ra,3bc00a7a + 3bc017a8: 60a2 ld ra,8(sp) + 3bc017aa: 0141 addi sp,sp,16 + 3bc017ac: 8082 ret + +000000003bc017ae : + 3bc017ae: 00009597 auipc a1,0x9 + 3bc017b2: 70a58593 addi a1,a1,1802 # 3bc0aeb8 <__func__.5> + 3bc017b6: 00009517 auipc a0,0x9 + 3bc017ba: 30250513 addi a0,a0,770 # 3bc0aab8 <__func__.1+0x10> + 3bc017be: b9bfe06f j 3bc00358 + +000000003bc017c2 : + 3bc017c2: 00012797 auipc a5,0x12 + 3bc017c6: 040781a3 sb zero,67(a5) # 3bc13805 + 3bc017ca: 4785 li a5,1 + 3bc017cc: 00012717 auipc a4,0x12 + 3bc017d0: 02f70fa3 sb a5,63(a4) # 3bc1380b + 3bc017d4: 00009597 auipc a1,0x9 + 3bc017d8: 6d458593 addi a1,a1,1748 # 3bc0aea8 <__func__.4> + 3bc017dc: 00012797 auipc a5,0x12 + 3bc017e0: 020785a3 sb zero,43(a5) # 3bc13807 + 3bc017e4: 00009517 auipc a0,0x9 + 3bc017e8: 2d450513 addi a0,a0,724 # 3bc0aab8 <__func__.1+0x10> + 3bc017ec: b6dfe06f j 3bc00358 + +000000003bc017f0 : + 3bc017f0: 1141 addi sp,sp,-16 + 3bc017f2: 00009597 auipc a1,0x9 + 3bc017f6: 6ae58593 addi a1,a1,1710 # 3bc0aea0 <__func__.1> + 3bc017fa: 00009517 auipc a0,0x9 + 3bc017fe: 2d650513 addi a0,a0,726 # 3bc0aad0 <__func__.1+0x28> + 3bc01802: e406 sd ra,8(sp) + 3bc01804: b55fe0ef jal ra,3bc00358 + 3bc01808: 60a2 ld ra,8(sp) + 3bc0180a: 0000a797 auipc a5,0xa + 3bc0180e: 0c07b323 sd zero,198(a5) # 3bc0b8d0 + 3bc01812: 0141 addi sp,sp,16 + 3bc01814: 8082 ret + +000000003bc01816 : + 3bc01816: 1141 addi sp,sp,-16 + 3bc01818: e022 sd s0,0(sp) + 3bc0181a: 00009597 auipc a1,0x9 + 3bc0181e: 67e58593 addi a1,a1,1662 # 3bc0ae98 <__func__.0> + 3bc01822: 842a mv s0,a0 + 3bc01824: 00009517 auipc a0,0x9 + 3bc01828: 2ac50513 addi a0,a0,684 # 3bc0aad0 <__func__.1+0x28> + 3bc0182c: e406 sd ra,8(sp) + 3bc0182e: b2bfe0ef jal ra,3bc00358 + 3bc01832: 0000a797 auipc a5,0xa + 3bc01836: 09e78793 addi a5,a5,158 # 3bc0b8d0 + 3bc0183a: 6398 ld a4,0(a5) + 3bc0183c: cf01 beqz a4,3bc01854 + 3bc0183e: 00009517 auipc a0,0x9 + 3bc01842: 2a250513 addi a0,a0,674 # 3bc0aae0 <__func__.1+0x38> + 3bc01846: b13fe0ef jal ra,3bc00358 + 3bc0184a: 60a2 ld ra,8(sp) + 3bc0184c: 6402 ld s0,0(sp) + 3bc0184e: 4501 li a0,0 + 3bc01850: 0141 addi sp,sp,16 + 3bc01852: 8082 ret + 3bc01854: e380 sd s0,0(a5) + 3bc01856: bfd5 j 3bc0184a + +000000003bc01858 : + 3bc01858: 1101 addi sp,sp,-32 + 3bc0185a: e822 sd s0,16(sp) + 3bc0185c: 842a mv s0,a0 + 3bc0185e: 852e mv a0,a1 + 3bc01860: e42e sd a1,8(sp) + 3bc01862: ec06 sd ra,24(sp) + 3bc01864: b04ff0ef jal ra,3bc00b68 + 3bc01868: 0506 slli a0,a0,0x1 + 3bc0186a: 0025071b addiw a4,a0,2 + 3bc0186e: 87a2 mv a5,s0 + 3bc01870: 1827d70b sbia a4,(a5),2,0 + 3bc01874: 470d li a4,3 + 3bc01876: 00e400a3 sb a4,1(s0) # e000001 + 3bc0187a: 06400713 li a4,100 + 3bc0187e: 65a2 ld a1,8(sp) + 3bc01880: 00a77463 bgeu a4,a0,3bc01888 + 3bc01884: 06400513 li a0,100 + 3bc01888: 4701 li a4,0 + 3bc0188a: 00171693 slli a3,a4,0x1 + 3bc0188e: 00a6e663 bltu a3,a0,3bc0189a + 3bc01892: 60e2 ld ra,24(sp) + 3bc01894: 6442 ld s0,16(sp) + 3bc01896: 6105 addi sp,sp,32 + 3bc01898: 8082 ret + 3bc0189a: 80e5c68b lrbu a3,a1,a4,0 + 3bc0189e: 0705 addi a4,a4,1 + 3bc018a0: 1827d68b sbia a3,(a5),2,0 + 3bc018a4: fe078fa3 sb zero,-1(a5) + 3bc018a8: b7cd j 3bc0188a + +000000003bc018aa : + 3bc018aa: 5d98 lw a4,56(a1) + 3bc018ac: fc600793 li a5,-58 + 3bc018b0: 22f70663 beq a4,a5,3bc01adc + 3bc018b4: 699c ld a5,16(a1) + 3bc018b6: 7179 addi sp,sp,-48 + 3bc018b8: e052 sd s4,0(sp) + 3bc018ba: f406 sd ra,40(sp) + 3bc018bc: f022 sd s0,32(sp) + 3bc018be: ec26 sd s1,24(sp) + 3bc018c0: e84a sd s2,16(sp) + 3bc018c2: e44e sd s3,8(sp) + 3bc018c4: 0037c403 lbu s0,3(a5) + 3bc018c8: 0047c703 lbu a4,4(a5) + 3bc018cc: 0017c483 lbu s1,1(a5) + 3bc018d0: 1402 slli s0,s0,0x20 + 3bc018d2: 0762 slli a4,a4,0x18 + 3bc018d4: 943a add s0,s0,a4 + 3bc018d6: 0077c703 lbu a4,7(a5) + 3bc018da: 0027c603 lbu a2,2(a5) + 3bc018de: 0084949b slliw s1,s1,0x8 + 3bc018e2: 943a add s0,s0,a4 + 3bc018e4: 0057c703 lbu a4,5(a5) + 3bc018e8: 9e25 addw a2,a2,s1 + 3bc018ea: 00012a17 auipc s4,0x12 + 3bc018ee: e3ea0a13 addi s4,s4,-450 # 3bc13728 + 3bc018f2: 0742 slli a4,a4,0x10 + 3bc018f4: 943a add s0,s0,a4 + 3bc018f6: 0067c703 lbu a4,6(a5) + 3bc018fa: 000a3583 ld a1,0(s4) + 3bc018fe: 84b2 mv s1,a2 + 3bc01900: 0722 slli a4,a4,0x8 + 3bc01902: 943a add s0,s0,a4 + 3bc01904: ee05 bnez a2,3bc0193c + 3bc01906: e81d bnez s0,3bc0193c + 3bc01908: 00012797 auipc a5,0x12 + 3bc0190c: e187b783 ld a5,-488(a5) # 3bc13720 + 3bc01910: 00012717 auipc a4,0x12 + 3bc01914: ed872703 lw a4,-296(a4) # 3bc137e8 + 3bc01918: 00012517 auipc a0,0x12 + 3bc0191c: e3053503 ld a0,-464(a0) # 3bc13748 + 3bc01920: cf98 sw a4,24(a5) + 3bc01922: 7118 ld a4,32(a0) + 3bc01924: 7402 ld s0,32(sp) + 3bc01926: 70a2 ld ra,40(sp) + 3bc01928: 64e2 ld s1,24(sp) + 3bc0192a: 6942 ld s2,16(sp) + 3bc0192c: 69a2 ld s3,8(sp) + 3bc0192e: 6a02 ld s4,0(sp) + 3bc01930: 7318 ld a4,32(a4) + 3bc01932: eb8c sd a1,16(a5) + 3bc01934: cfcc sw a1,28(a5) + 3bc01936: 85be mv a1,a5 + 3bc01938: 6145 addi sp,sp,48 + 3bc0193a: 8702 jr a4 + 3bc0193c: 0007c903 lbu s2,0(a5) + 3bc01940: 4501 li a0,0 + 3bc01942: 5d3020ef jal ra,3bc04714 + 3bc01946: 4789 li a5,2 + 3bc01948: 89aa mv s3,a0 + 3bc0194a: 0ef90763 beq s2,a5,3bc01a38 + 3bc0194e: 0327e363 bltu a5,s2,3bc01974 + 3bc01952: 0c091863 bnez s2,3bc01a22 + 3bc01956: 000a3583 ld a1,0(s4) + 3bc0195a: ff84861b addiw a2,s1,-8 + 3bc0195e: 00012517 auipc a0,0x12 + 3bc01962: df253503 ld a0,-526(a0) # 3bc13750 + 3bc01966: 7c06360b extu a2,a2,31,0 + 3bc0196a: 05a1 addi a1,a1,8 + 3bc0196c: 9522 add a0,a0,s0 + 3bc0196e: 90cff0ef jal ra,3bc00a7a + 3bc01972: a021 j 3bc0197a + 3bc01974: 478d li a5,3 + 3bc01976: 0ef90163 beq s2,a5,3bc01a58 + 3bc0197a: 0000a417 auipc s0,0xa + 3bc0197e: 02640413 addi s0,s0,38 # 3bc0b9a0 + 3bc01982: 6008 ld a0,0(s0) + 3bc01984: 4641 li a2,16 + 3bc01986: 4581 li a1,0 + 3bc01988: 898ff0ef jal ra,3bc00a20 + 3bc0198c: 601c ld a5,0(s0) + 3bc0198e: 00012617 auipc a2,0x12 + 3bc01992: e7660613 addi a2,a2,-394 # 3bc13804 + 3bc01996: 00064703 lbu a4,0(a2) + 3bc0199a: 0089951b slliw a0,s3,0x8 + 3bc0199e: 00012697 auipc a3,0x12 + 3bc019a2: e426a683 lw a3,-446(a3) # 3bc137e0 + 3bc019a6: 0089d99b srliw s3,s3,0x8 + 3bc019aa: 01356533 or a0,a0,s3 + 3bc019ae: 00012497 auipc s1,0x12 + 3bc019b2: d6a48493 addi s1,s1,-662 # 3bc13718 + 3bc019b6: 9006968b revw a3,a3 + 3bc019ba: 00a79023 sh a0,0(a5) + 3bc019be: 00a79123 sh a0,2(a5) + 3bc019c2: c794 sw a3,8(a5) + 3bc019c4: 6088 ld a0,0(s1) + 3bc019c6: 00012697 auipc a3,0x12 + 3bc019ca: e1e6a683 lw a3,-482(a3) # 3bc137e4 + 3bc019ce: 00e783a3 sb a4,7(a5) + 3bc019d2: 9006968b revw a3,a3 + 3bc019d6: 2705 addiw a4,a4,1 + 3bc019d8: 01278323 sb s2,6(a5) + 3bc019dc: 00079223 sh zero,4(a5) + 3bc019e0: c7d4 sw a3,12(a5) + 3bc019e2: 00e60023 sb a4,0(a2) + 3bc019e6: 4581 li a1,0 + 3bc019e8: 04000613 li a2,64 + 3bc019ec: 834ff0ef jal ra,3bc00a20 + 3bc019f0: 608c ld a1,0(s1) + 3bc019f2: 47c1 li a5,16 + 3bc019f4: 00012517 auipc a0,0x12 + 3bc019f8: d4c53503 ld a0,-692(a0) # 3bc13740 + 3bc019fc: cd9c sw a5,24(a1) + 3bc019fe: 601c ld a5,0(s0) + 3bc01a00: 7402 ld s0,32(sp) + 3bc01a02: 70a2 ld ra,40(sp) + 3bc01a04: e99c sd a5,16(a1) + 3bc01a06: cddc sw a5,28(a1) + 3bc01a08: 00000797 auipc a5,0x0 + 3bc01a0c: 15c78793 addi a5,a5,348 # 3bc01b64 + 3bc01a10: f59c sd a5,40(a1) + 3bc01a12: 711c ld a5,32(a0) + 3bc01a14: 64e2 ld s1,24(sp) + 3bc01a16: 6942 ld s2,16(sp) + 3bc01a18: 69a2 ld s3,8(sp) + 3bc01a1a: 6a02 ld s4,0(sp) + 3bc01a1c: 739c ld a5,32(a5) + 3bc01a1e: 6145 addi sp,sp,48 + 3bc01a20: 8782 jr a5 + 3bc01a22: 0e0007b7 lui a5,0xe000 + 3bc01a26: 0791 addi a5,a5,4 + 3bc01a28: f4f419e3 bne s0,a5,3bc0197a + 3bc01a2c: 000a3583 ld a1,0(s4) + 3bc01a30: 4611 li a2,4 + 3bc01a32: 8522 mv a0,s0 + 3bc01a34: 05a1 addi a1,a1,8 + 3bc01a36: bf25 j 3bc0196e + 3bc01a38: 00009517 auipc a0,0x9 + 3bc01a3c: 0b050513 addi a0,a0,176 # 3bc0aae8 <__func__.1+0x40> + 3bc01a40: 919fe0ef jal ra,3bc00358 + 3bc01a44: 00012797 auipc a5,0x12 + 3bc01a48: dc078023 sb zero,-576(a5) # 3bc13804 + 3bc01a4c: 4785 li a5,1 + 3bc01a4e: 00012717 auipc a4,0x12 + 3bc01a52: daf70c23 sb a5,-584(a4) # 3bc13806 + 3bc01a56: b715 j 3bc0197a + 3bc01a58: 000a3583 ld a1,0(s4) + 3bc01a5c: ff84861b addiw a2,s1,-8 + 3bc01a60: 4501 li a0,0 + 3bc01a62: 05a1 addi a1,a1,8 + 3bc01a64: 4b1020ef jal ra,3bc04714 + 3bc01a68: 842a mv s0,a0 + 3bc01a6a: 00009517 auipc a0,0x9 + 3bc01a6e: 09650513 addi a0,a0,150 # 3bc0ab00 <__func__.1+0x58> + 3bc01a72: 8e7fe0ef jal ra,3bc00358 + 3bc01a76: 67b1 lui a5,0xc + 3bc01a78: 2401 sext.w s0,s0 + 3bc01a7a: 28378793 addi a5,a5,643 # c283 <__BSS_SIZE__+0x6673> + 3bc01a7e: 02f41a63 bne s0,a5,3bc01ab2 + 3bc01a82: 00012797 auipc a5,0x12 + 3bc01a86: d8078123 sb zero,-638(a5) # 3bc13804 + 3bc01a8a: 00012797 auipc a5,0x12 + 3bc01a8e: d7e78793 addi a5,a5,-642 # 3bc13808 + 3bc01a92: 4705 li a4,1 + 3bc01a94: 00e78023 sb a4,0(a5) + 3bc01a98: 0e000737 lui a4,0xe000 + 3bc01a9c: 00072223 sw zero,4(a4) # e000004 + 3bc01aa0: 0007c583 lbu a1,0(a5) + 3bc01aa4: 00009517 auipc a0,0x9 + 3bc01aa8: 06450513 addi a0,a0,100 # 3bc0ab08 <__func__.1+0x60> + 3bc01aac: 8adfe0ef jal ra,3bc00358 + 3bc01ab0: b5e9 j 3bc0197a + 3bc01ab2: 00012797 auipc a5,0x12 + 3bc01ab6: d4078b23 sb zero,-682(a5) # 3bc13808 + 3bc01aba: 0e0007b7 lui a5,0xe000 + 3bc01abe: 0007a223 sw zero,4(a5) # e000004 + 3bc01ac2: 00009517 auipc a0,0x9 + 3bc01ac6: 05e50513 addi a0,a0,94 # 3bc0ab20 <__func__.1+0x78> + 3bc01aca: 88ffe0ef jal ra,3bc00358 + 3bc01ace: 00009517 auipc a0,0x9 + 3bc01ad2: 07250513 addi a0,a0,114 # 3bc0ab40 <__func__.1+0x98> + 3bc01ad6: 883fe0ef jal ra,3bc00358 + 3bc01ada: b545 j 3bc0197a + 3bc01adc: 8082 ret + +000000003bc01ade : + 3bc01ade: 7179 addi sp,sp,-48 + 3bc01ae0: f406 sd ra,40(sp) + 3bc01ae2: f022 sd s0,32(sp) + 3bc01ae4: ec26 sd s1,24(sp) + 3bc01ae6: e84a sd s2,16(sp) + 3bc01ae8: e44e sd s3,8(sp) + 3bc01aea: 4789 li a5,2 + 3bc01aec: 02f50263 beq a0,a5,3bc01b10 + 3bc01af0: 478d li a5,3 + 3bc01af2: 54fd li s1,-1 + 3bc01af4: 0000a417 auipc s0,0xa + 3bc01af8: d7440413 addi s0,s0,-652 # 3bc0b868 + 3bc01afc: 00f50e63 beq a0,a5,3bc01b18 + 3bc01b00: 70a2 ld ra,40(sp) + 3bc01b02: 7402 ld s0,32(sp) + 3bc01b04: 6942 ld s2,16(sp) + 3bc01b06: 69a2 ld s3,8(sp) + 3bc01b08: 8526 mv a0,s1 + 3bc01b0a: 64e2 ld s1,24(sp) + 3bc01b0c: 6145 addi sp,sp,48 + 3bc01b0e: 8082 ret + 3bc01b10: 0000a417 auipc s0,0xa + 3bc01b14: d0840413 addi s0,s0,-760 # 3bc0b818 + 3bc01b18: 892e mv s2,a1 + 3bc01b1a: 7884458b ldia a1,(s0),8,0 + 3bc01b1e: 4481 li s1,0 + 3bc01b20: d1e5 beqz a1,3bc01b00 + 3bc01b22: 0005c983 lbu s3,0(a1) + 3bc01b26: 00990533 add a0,s2,s1 + 3bc01b2a: 864e mv a2,s3 + 3bc01b2c: f4ffe0ef jal ra,3bc00a7a + 3bc01b30: 7884458b ldia a1,(s0),8,0 + 3bc01b34: 009984bb addw s1,s3,s1 + 3bc01b38: b7e5 j 3bc01b20 + +000000003bc01b3a : + 3bc01b3a: 5d98 lw a4,56(a1) + 3bc01b3c: 57ed li a5,-5 + 3bc01b3e: 02f71263 bne a4,a5,3bc01b62 + 3bc01b42: 1141 addi sp,sp,-16 + 3bc01b44: 00009517 auipc a0,0x9 + 3bc01b48: 00c50513 addi a0,a0,12 # 3bc0ab50 <__func__.1+0xa8> + 3bc01b4c: e406 sd ra,8(sp) + 3bc01b4e: 80bfe0ef jal ra,3bc00358 + 3bc01b52: 60a2 ld ra,8(sp) + 3bc01b54: 4785 li a5,1 + 3bc01b56: 00012717 auipc a4,0x12 + 3bc01b5a: caf709a3 sb a5,-845(a4) # 3bc13809 + 3bc01b5e: 0141 addi sp,sp,16 + 3bc01b60: 8082 ret + 3bc01b62: 8082 ret + +000000003bc01b64 : + 3bc01b64: 5d98 lw a4,56(a1) + 3bc01b66: fc600793 li a5,-58 + 3bc01b6a: 04f70463 beq a4,a5,3bc01bb2 + 3bc01b6e: 1141 addi sp,sp,-16 + 3bc01b70: e022 sd s0,0(sp) + 3bc01b72: 00012417 auipc s0,0x12 + 3bc01b76: bb640413 addi s0,s0,-1098 # 3bc13728 + 3bc01b7a: 6008 ld a0,0(s0) + 3bc01b7c: 4581 li a1,0 + 3bc01b7e: 4621 li a2,8 + 3bc01b80: e406 sd ra,8(sp) + 3bc01b82: e9ffe0ef jal ra,3bc00a20 + 3bc01b86: 00012597 auipc a1,0x12 + 3bc01b8a: b9a5b583 ld a1,-1126(a1) # 3bc13720 + 3bc01b8e: 00012797 auipc a5,0x12 + 3bc01b92: c5a7a783 lw a5,-934(a5) # 3bc137e8 + 3bc01b96: cd9c sw a5,24(a1) + 3bc01b98: 601c ld a5,0(s0) + 3bc01b9a: 00012517 auipc a0,0x12 + 3bc01b9e: bae53503 ld a0,-1106(a0) # 3bc13748 + 3bc01ba2: 6402 ld s0,0(sp) + 3bc01ba4: e99c sd a5,16(a1) + 3bc01ba6: cddc sw a5,28(a1) + 3bc01ba8: 711c ld a5,32(a0) + 3bc01baa: 60a2 ld ra,8(sp) + 3bc01bac: 739c ld a5,32(a5) + 3bc01bae: 0141 addi sp,sp,16 + 3bc01bb0: 8782 jr a5 + 3bc01bb2: 8082 ret + +000000003bc01bb4 : + 3bc01bb4: 7159 addi sp,sp,-112 + 3bc01bb6: e4ce sd s3,72(sp) + 3bc01bb8: fc56 sd s5,56(sp) + 3bc01bba: 00012997 auipc s3,0x12 + 3bc01bbe: b7698993 addi s3,s3,-1162 # 3bc13730 + 3bc01bc2: 00012a97 auipc s5,0x12 + 3bc01bc6: b76a8a93 addi s5,s5,-1162 # 3bc13738 + 3bc01bca: eca6 sd s1,88(sp) + 3bc01bcc: 000ab603 ld a2,0(s5) + 3bc01bd0: 84aa mv s1,a0 + 3bc01bd2: 0009b503 ld a0,0(s3) + 3bc01bd6: e0d2 sd s4,64(sp) + 3bc01bd8: f486 sd ra,104(sp) + 3bc01bda: f0a2 sd s0,96(sp) + 3bc01bdc: e8ca sd s2,80(sp) + 3bc01bde: f85a sd s6,48(sp) + 3bc01be0: f45e sd s7,40(sp) + 3bc01be2: f062 sd s8,32(sp) + 3bc01be4: ec66 sd s9,24(sp) + 3bc01be6: 0204a803 lw a6,32(s1) + 3bc01bea: 0015c703 lbu a4,1(a1) + 3bc01bee: 0005c683 lbu a3,0(a1) + 3bc01bf2: 0065da03 lhu s4,6(a1) + 3bc01bf6: 0025d783 lhu a5,2(a1) + 3bc01bfa: 00000597 auipc a1,0x0 + 3bc01bfe: f4058593 addi a1,a1,-192 # 3bc01b3a + 3bc01c02: f60c sd a1,40(a2) + 3bc01c04: ea08 sd a0,16(a2) + 3bc01c06: ce48 sw a0,28(a2) + 3bc01c08: 4589 li a1,2 + 3bc01c0a: 02b80763 beq a6,a1,3bc01c38 + 3bc01c0e: 458d li a1,3 + 3bc01c10: 4905 li s2,1 + 3bc01c12: 06b81063 bne a6,a1,3bc01c72 + 3bc01c16: 0000ab17 auipc s6,0xa + 3bc01c1a: bbab0b13 addi s6,s6,-1094 # 3bc0b7d0 + 3bc01c1e: 0000ab97 auipc s7,0xa + 3bc01c22: ba2b8b93 addi s7,s7,-1118 # 3bc0b7c0 + 3bc01c26: 0606f593 andi a1,a3,96 + 3bc01c2a: c185 beqz a1,3bc01c4a + 3bc01c2c: 02000693 li a3,32 + 3bc01c30: 36d58463 beq a1,a3,3bc01f98 + 3bc01c34: 4901 li s2,0 + 3bc01c36: a835 j 3bc01c72 + 3bc01c38: 0000ab17 auipc s6,0xa + 3bc01c3c: b78b0b13 addi s6,s6,-1160 # 3bc0b7b0 + 3bc01c40: 0000ab97 auipc s7,0xa + 3bc01c44: b60b8b93 addi s7,s7,-1184 # 3bc0b7a0 + 3bc01c48: bff9 j 3bc01c26 + 3bc01c4a: 4621 li a2,8 + 3bc01c4c: 32c70d63 beq a4,a2,3bc01f86 + 3bc01c50: 4625 li a2,9 + 3bc01c52: 24c70a63 beq a4,a2,3bc01ea6 + 3bc01c56: 4619 li a2,6 + 3bc01c58: 597d li s2,-1 + 3bc01c5a: 00c71c63 bne a4,a2,3bc01c72 + 3bc01c5e: 8abd andi a3,a3,15 + 3bc01c60: 4705 li a4,1 + 3bc01c62: 02e69663 bne a3,a4,3bc01c8e + 3bc01c66: 00009517 auipc a0,0x9 + 3bc01c6a: f0250513 addi a0,a0,-254 # 3bc0ab68 <__func__.1+0xc0> + 3bc01c6e: eeafe0ef jal ra,3bc00358 + 3bc01c72: 70a6 ld ra,104(sp) + 3bc01c74: 7406 ld s0,96(sp) + 3bc01c76: 64e6 ld s1,88(sp) + 3bc01c78: 69a6 ld s3,72(sp) + 3bc01c7a: 6a06 ld s4,64(sp) + 3bc01c7c: 7ae2 ld s5,56(sp) + 3bc01c7e: 7b42 ld s6,48(sp) + 3bc01c80: 7ba2 ld s7,40(sp) + 3bc01c82: 7c02 ld s8,32(sp) + 3bc01c84: 6ce2 ld s9,24(sp) + 3bc01c86: 854a mv a0,s2 + 3bc01c88: 6946 ld s2,80(sp) + 3bc01c8a: 6165 addi sp,sp,112 + 3bc01c8c: 8082 ret + 3bc01c8e: f2dd bnez a3,3bc01c34 + 3bc01c90: 0087d71b srliw a4,a5,0x8 + 3bc01c94: 377d addiw a4,a4,-1 + 3bc01c96: 3c07360b extu a2,a4,15,0 + 3bc01c9a: 46b9 li a3,14 + 3bc01c9c: 0ac6e663 bltu a3,a2,3bc01d48 + 3bc01ca0: 00009697 auipc a3,0x9 + 3bc01ca4: f9c68693 addi a3,a3,-100 # 3bc0ac3c <__func__.1+0x194> + 3bc01ca8: 44c6c70b lrw a4,a3,a2,2 + 3bc01cac: 9736 add a4,a4,a3 + 3bc01cae: 8702 jr a4 + 3bc01cb0: 0000a417 auipc s0,0xa + 3bc01cb4: d5840413 addi s0,s0,-680 # 3bc0ba08 + 3bc01cb8: 00045583 lhu a1,0(s0) + 3bc01cbc: cd89 beqz a1,3bc01cd6 + 3bc01cbe: 00009517 auipc a0,0x9 + 3bc01cc2: eda50513 addi a0,a0,-294 # 3bc0ab98 <__func__.1+0xf0> + 3bc01cc6: e92fe0ef jal ra,3bc00358 + 3bc01cca: 00045783 lhu a5,0(s0) + 3bc01cce: 0000a717 auipc a4,0xa + 3bc01cd2: bef71923 sh a5,-1038(a4) # 3bc0b8c0 + 3bc01cd6: 0009b503 ld a0,0(s3) + 3bc01cda: 4649 li a2,18 + 3bc01cdc: 0000a597 auipc a1,0xa + 3bc01ce0: bdc58593 addi a1,a1,-1060 # 3bc0b8b8 + 3bc01ce4: df7fe0ef jal ra,3bc00ada + 3bc01ce8: 4449 li s0,18 + 3bc01cea: 4905 li s2,1 + 3bc01cec: 6c88 ld a0,24(s1) + 3bc01cee: 014427b3 slt a5,s0,s4 + 3bc01cf2: 40fa140b mveqz s0,s4,a5 + 3bc01cf6: 711c ld a5,32(a0) + 3bc01cf8: 000ab583 ld a1,0(s5) + 3bc01cfc: 739c ld a5,32(a5) + 3bc01cfe: cd80 sw s0,24(a1) + 3bc01d00: 9782 jalr a5 + 3bc01d02: f20909e3 beqz s2,3bc01c34 + 3bc01d06: c00017b7 lui a5,0xc0001 + 3bc01d0a: 03000737 lui a4,0x3000 + 3bc01d0e: 0795 addi a5,a5,5 + 3bc01d10: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc01d14: b705 j 3bc01c34 + 3bc01d16: 0ff7f793 andi a5,a5,255 + 3bc01d1a: 4709 li a4,2 + 3bc01d1c: 02e78863 beq a5,a4,3bc01d4c + 3bc01d20: 02f76163 bltu a4,a5,3bc01d42 + 3bc01d24: 00012597 auipc a1,0x12 + 3bc01d28: a8458593 addi a1,a1,-1404 # 3bc137a8 + 3bc01d2c: e789 bnez a5,3bc01d36 + 3bc01d2e: 0000a597 auipc a1,0xa + 3bc01d32: c5a58593 addi a1,a1,-934 # 3bc0b988 + 3bc01d36: 0005c403 lbu s0,0(a1) + 3bc01d3a: 8622 mv a2,s0 + 3bc01d3c: 0009b503 ld a0,0(s3) + 3bc01d40: a215 j 3bc01e64 + 3bc01d42: 470d li a4,3 + 3bc01d44: 00e78963 beq a5,a4,3bc01d56 + 3bc01d48: 597d li s2,-1 + 3bc01d4a: b725 j 3bc01c72 + 3bc01d4c: 00012597 auipc a1,0x12 + 3bc01d50: a0c58593 addi a1,a1,-1524 # 3bc13758 + 3bc01d54: b7cd j 3bc01d36 + 3bc01d56: ea1fe0ef jal ra,3bc00bf6 + 3bc01d5a: 00009597 auipc a1,0x9 + 3bc01d5e: ea658593 addi a1,a1,-346 # 3bc0ac00 <__func__.1+0x158> + 3bc01d62: e55d bnez a0,3bc01e10 + 3bc01d64: 00012b17 auipc s6,0x12 + 3bc01d68: aa6b0b13 addi s6,s6,-1370 # 3bc1380a + 3bc01d6c: 000b4903 lbu s2,0(s6) + 3bc01d70: 08091263 bnez s2,3bc01df4 + 3bc01d74: 4641 li a2,16 + 3bc01d76: 4581 li a1,0 + 3bc01d78: 00012517 auipc a0,0x12 + 3bc01d7c: a0050513 addi a0,a0,-1536 # 3bc13778 + 3bc01d80: 03050bb7 lui s7,0x3050 + 3bc01d84: c9dfe0ef jal ra,3bc00a20 + 3bc01d88: 4401 li s0,0 + 3bc01d8a: 104b8b93 addi s7,s7,260 # 3050104 <__BSS_SIZE__+0x304a4f4> + 3bc01d8e: 00009c97 auipc s9,0x9 + 3bc01d92: e1ac8c93 addi s9,s9,-486 # 3bc0aba8 <__func__.1+0x100> + 3bc01d96: 4c11 li s8,4 + 3bc01d98: 448bc60b lrw a2,s7,s0,2 + 3bc01d9c: 0004059b sext.w a1,s0 + 3bc01da0: 8566 mv a0,s9 + 3bc01da2: 2601 sext.w a2,a2 + 3bc01da4: 4481560b srw a2,sp,s0,2 + 3bc01da8: db0fe0ef jal ra,3bc00358 + 3bc01dac: 4481478b lrw a5,sp,s0,2 + 3bc01db0: c391 beqz a5,3bc01db4 + 3bc01db2: 4905 li s2,1 + 3bc01db4: 0405 addi s0,s0,1 + 3bc01db6: ff8411e3 bne s0,s8,3bc01d98 + 3bc01dba: 06090663 beqz s2,3bc01e26 + 3bc01dbe: 858a mv a1,sp + 3bc01dc0: 4641 li a2,16 + 3bc01dc2: 4501 li a0,0 + 3bc01dc4: 151020ef jal ra,3bc04714 + 3bc01dc8: 0005041b sext.w s0,a0 + 3bc01dcc: 85a2 mv a1,s0 + 3bc01dce: 00009517 auipc a0,0x9 + 3bc01dd2: df250513 addi a0,a0,-526 # 3bc0abc0 <__func__.1+0x118> + 3bc01dd6: d82fe0ef jal ra,3bc00358 + 3bc01dda: 4681 li a3,0 + 3bc01ddc: 4641 li a2,16 + 3bc01dde: 7c04358b extu a1,s0,31,0 + 3bc01de2: 00012517 auipc a0,0x12 + 3bc01de6: 99650513 addi a0,a0,-1642 # 3bc13778 + 3bc01dea: bbdfe0ef jal ra,3bc009a6 + 3bc01dee: 4785 li a5,1 + 3bc01df0: 00fb0023 sb a5,0(s6) + 3bc01df4: 00012597 auipc a1,0x12 + 3bc01df8: 98458593 addi a1,a1,-1660 # 3bc13778 + 3bc01dfc: 00009517 auipc a0,0x9 + 3bc01e00: df450513 addi a0,a0,-524 # 3bc0abf0 <__func__.1+0x148> + 3bc01e04: d54fe0ef jal ra,3bc00358 + 3bc01e08: 00012597 auipc a1,0x12 + 3bc01e0c: 97058593 addi a1,a1,-1680 # 3bc13778 + 3bc01e10: 00012517 auipc a0,0x12 + 3bc01e14: 97850513 addi a0,a0,-1672 # 3bc13788 + 3bc01e18: a41ff0ef jal ra,3bc01858 + 3bc01e1c: 00012597 auipc a1,0x12 + 3bc01e20: 96c58593 addi a1,a1,-1684 # 3bc13788 + 3bc01e24: bf09 j 3bc01d36 + 3bc01e26: 00012517 auipc a0,0x12 + 3bc01e2a: 9c652503 lw a0,-1594(a0) # 3bc137ec + 3bc01e2e: bb4fe0ef jal ra,3bc001e2 + 3bc01e32: 0005041b sext.w s0,a0 + 3bc01e36: 85a2 mv a1,s0 + 3bc01e38: 00009517 auipc a0,0x9 + 3bc01e3c: da050513 addi a0,a0,-608 # 3bc0abd8 <__func__.1+0x130> + 3bc01e40: bf59 j 3bc01dd6 + 3bc01e42: 0000a597 auipc a1,0xa + 3bc01e46: 99e58593 addi a1,a1,-1634 # 3bc0b7e0 + 3bc01e4a: 4615 li a2,5 + 3bc01e4c: 0025d403 lhu s0,2(a1) + 3bc01e50: c8bfe0ef jal ra,3bc00ada + 3bc01e54: 0009b503 ld a0,0(s3) + 3bc01e58: 461d li a2,7 + 3bc01e5a: 0000a597 auipc a1,0xa + 3bc01e5e: 99658593 addi a1,a1,-1642 # 3bc0b7f0 + 3bc01e62: 0515 addi a0,a0,5 + 3bc01e64: c77fe0ef jal ra,3bc00ada + 3bc01e68: dc0406e3 beqz s0,3bc01c34 + 3bc01e6c: a809 j 3bc01e7e + 3bc01e6e: 4629 li a2,10 + 3bc01e70: 0000a597 auipc a1,0xa + 3bc01e74: b2058593 addi a1,a1,-1248 # 3bc0b990 + 3bc01e78: c63fe0ef jal ra,3bc00ada + 3bc01e7c: 4429 li s0,10 + 3bc01e7e: 4901 li s2,0 + 3bc01e80: b5b5 j 3bc01cec + 3bc01e82: 00950593 addi a1,a0,9 + 3bc01e86: 8542 mv a0,a6 + 3bc01e88: c57ff0ef jal ra,3bc01ade + 3bc01e8c: 2525 addiw a0,a0,9 + 3bc01e8e: 3c05350b extu a0,a0,15,0 + 3bc01e92: 0000a597 auipc a1,0xa + 3bc01e96: 8c658593 addi a1,a1,-1850 # 3bc0b758 + 3bc01e9a: 0005041b sext.w s0,a0 + 3bc01e9e: 00a59123 sh a0,2(a1) + 3bc01ea2: 4625 li a2,9 + 3bc01ea4: bd61 j 3bc01d3c + 3bc01ea6: 4705 li a4,1 + 3bc01ea8: 597d li s2,-1 + 3bc01eaa: dcf764e3 bltu a4,a5,3bc01c72 + 3bc01eae: e385 bnez a5,3bc01ece + 3bc01eb0: 00012797 auipc a5,0x12 + 3bc01eb4: 94078ba3 sb zero,-1705(a5) # 3bc13807 + 3bc01eb8: 6080 ld s0,0(s1) + 3bc01eba: d6848de3 beq s1,s0,3bc01c34 + 3bc01ebe: 6c1c ld a5,24(s0) + 3bc01ec0: c789 beqz a5,3bc01eca + 3bc01ec2: 701c ld a5,32(s0) + 3bc01ec4: 8522 mv a0,s0 + 3bc01ec6: 679c ld a5,8(a5) + 3bc01ec8: 9782 jalr a5 + 3bc01eca: 6000 ld s0,0(s0) + 3bc01ecc: b7fd j 3bc01eba + 3bc01ece: 00012797 auipc a5,0x12 + 3bc01ed2: 93978793 addi a5,a5,-1735 # 3bc13807 + 3bc01ed6: 0007c683 lbu a3,0(a5) + 3bc01eda: d4e68de3 beq a3,a4,3bc01c34 + 3bc01ede: 00e78023 sb a4,0(a5) + 3bc01ee2: 6080 ld s0,0(s1) + 3bc01ee4: 00009917 auipc s2,0x9 + 3bc01ee8: d2c90913 addi s2,s2,-724 # 3bc0ac10 <__func__.1+0x168> + 3bc01eec: 00848d63 beq s1,s0,3bc01f06 + 3bc01ef0: 6c08 ld a0,24(s0) + 3bc01ef2: c141 beqz a0,3bc01f72 + 3bc01ef4: 85ca mv a1,s2 + 3bc01ef6: c57fe0ef jal ra,3bc00b4c + 3bc01efa: ed25 bnez a0,3bc01f72 + 3bc01efc: 701c ld a5,32(s0) + 3bc01efe: 85de mv a1,s7 + 3bc01f00: 8522 mv a0,s0 + 3bc01f02: 639c ld a5,0(a5) + 3bc01f04: 9782 jalr a5 + 3bc01f06: 6080 ld s0,0(s1) + 3bc01f08: 00009917 auipc s2,0x9 + 3bc01f0c: d1890913 addi s2,s2,-744 # 3bc0ac20 <__func__.1+0x178> + 3bc01f10: 00848d63 beq s1,s0,3bc01f2a + 3bc01f14: 6c08 ld a0,24(s0) + 3bc01f16: c125 beqz a0,3bc01f76 + 3bc01f18: 85ca mv a1,s2 + 3bc01f1a: c33fe0ef jal ra,3bc00b4c + 3bc01f1e: ed21 bnez a0,3bc01f76 + 3bc01f20: 701c ld a5,32(s0) + 3bc01f22: 85da mv a1,s6 + 3bc01f24: 8522 mv a0,s0 + 3bc01f26: 639c ld a5,0(a5) + 3bc01f28: 9782 jalr a5 + 3bc01f2a: 6080 ld s0,0(s1) + 3bc01f2c: 00009917 auipc s2,0x9 + 3bc01f30: d0490913 addi s2,s2,-764 # 3bc0ac30 <__func__.1+0x188> + 3bc01f34: 02848063 beq s1,s0,3bc01f54 + 3bc01f38: 6c08 ld a0,24(s0) + 3bc01f3a: c121 beqz a0,3bc01f7a + 3bc01f3c: 85ca mv a1,s2 + 3bc01f3e: c0ffe0ef jal ra,3bc00b4c + 3bc01f42: ed05 bnez a0,3bc01f7a + 3bc01f44: 701c ld a5,32(s0) + 3bc01f46: 0000a597 auipc a1,0xa + 3bc01f4a: 86258593 addi a1,a1,-1950 # 3bc0b7a8 + 3bc01f4e: 8522 mv a0,s0 + 3bc01f50: 639c ld a5,0(a5) + 3bc01f52: 9782 jalr a5 + 3bc01f54: 689c ld a5,16(s1) + 3bc01f56: 0000a717 auipc a4,0xa + 3bc01f5a: 80974703 lbu a4,-2039(a4) # 3bc0b75f + 3bc01f5e: 04077713 andi a4,a4,64 + 3bc01f62: 6b9c ld a5,16(a5) + 3bc01f64: cf09 beqz a4,3bc01f7e + 3bc01f66: 4585 li a1,1 + 3bc01f68: cc0786e3 beqz a5,3bc01c34 + 3bc01f6c: 8526 mv a0,s1 + 3bc01f6e: 9782 jalr a5 + 3bc01f70: b1d1 j 3bc01c34 + 3bc01f72: 6000 ld s0,0(s0) + 3bc01f74: bfa5 j 3bc01eec + 3bc01f76: 6000 ld s0,0(s0) + 3bc01f78: bf61 j 3bc01f10 + 3bc01f7a: 6000 ld s0,0(s0) + 3bc01f7c: bf65 j 3bc01f34 + 3bc01f7e: ca078be3 beqz a5,3bc01c34 + 3bc01f82: 4581 li a1,0 + 3bc01f84: b7e5 j 3bc01f6c + 3bc01f86: 4605 li a2,1 + 3bc01f88: 00012597 auipc a1,0x12 + 3bc01f8c: 87f58593 addi a1,a1,-1921 # 3bc13807 + 3bc01f90: b4bfe0ef jal ra,3bc00ada + 3bc01f94: 4405 li s0,1 + 3bc01f96: b5e5 j 3bc01e7e + 3bc01f98: 02100693 li a3,33 + 3bc01f9c: 04d70263 beq a4,a3,3bc01fe0 + 3bc01fa0: 02200693 li a3,34 + 3bc01fa4: 02d70263 beq a4,a3,3bc01fc8 + 3bc01fa8: 4901 li s2,0 + 3bc01faa: ccb714e3 bne a4,a1,3bc01c72 + 3bc01fae: fffff797 auipc a5,0xfffff + 3bc01fb2: 7e478793 addi a5,a5,2020 # 3bc01792 + 3bc01fb6: 000a041b sext.w s0,s4 + 3bc01fba: f61c sd a5,40(a2) + 3bc01fbc: 4785 li a5,1 + 3bc01fbe: 00012717 auipc a4,0x12 + 3bc01fc2: 84f703a3 sb a5,-1977(a4) # 3bc13805 + 3bc01fc6: b54d j 3bc01e68 + 3bc01fc8: 00011717 auipc a4,0x11 + 3bc01fcc: 74073703 ld a4,1856(a4) # 3bc13708 + 3bc01fd0: 00f71623 sh a5,12(a4) + 3bc01fd4: 4785 li a5,1 + 3bc01fd6: 00012717 auipc a4,0x12 + 3bc01fda: 82f707a3 sb a5,-2001(a4) # 3bc13805 + 3bc01fde: b999 j 3bc01c34 + 3bc01fe0: 00011597 auipc a1,0x11 + 3bc01fe4: 7285b583 ld a1,1832(a1) # 3bc13708 + 3bc01fe8: 8652 mv a2,s4 + 3bc01fea: 0591 addi a1,a1,4 + 3bc01fec: 000a041b sext.w s0,s4 + 3bc01ff0: aebfe0ef jal ra,3bc00ada + 3bc01ff4: b7e1 j 3bc01fbc + +000000003bc01ff6 : + 3bc01ff6: 8082 ret + +000000003bc01ff8 : + 3bc01ff8: 00011797 auipc a5,0x11 + 3bc01ffc: c8878793 addi a5,a5,-888 # 3bc12c80 + 3bc02000: 00009717 auipc a4,0x9 + 3bc02004: 7ef73423 sd a5,2024(a4) # 3bc0b7e8 + 3bc02008: 00011797 auipc a5,0x11 + 3bc0200c: ff878793 addi a5,a5,-8 # 3bc13000 + 3bc02010: 0000a717 auipc a4,0xa + 3bc02014: 80f73023 sd a5,-2048(a4) # 3bc0b810 + 3bc02018: 00011797 auipc a5,0x11 + 3bc0201c: e6878793 addi a5,a5,-408 # 3bc12e80 + 3bc02020: 00009717 auipc a4,0x9 + 3bc02024: 7cf73c23 sd a5,2008(a4) # 3bc0b7f8 + 3bc02028: 00011797 auipc a5,0x11 + 3bc0202c: ed878793 addi a5,a5,-296 # 3bc12f00 + 3bc02030: 00009717 auipc a4,0x9 + 3bc02034: 7cf73823 sd a5,2000(a4) # 3bc0b800 + 3bc02038: 00011797 auipc a5,0x11 + 3bc0203c: f4878793 addi a5,a5,-184 # 3bc12f80 + 3bc02040: 00009717 auipc a4,0x9 + 3bc02044: 7cf73423 sd a5,1992(a4) # 3bc0b808 + 3bc02048: 00011797 auipc a5,0x11 + 3bc0204c: 1b878793 addi a5,a5,440 # 3bc13200 + 3bc02050: 0000a717 auipc a4,0xa + 3bc02054: 8cf73823 sd a5,-1840(a4) # 3bc0b920 + 3bc02058: 00011797 auipc a5,0x11 + 3bc0205c: 62878793 addi a5,a5,1576 # 3bc13680 + 3bc02060: 0000a717 auipc a4,0xa + 3bc02064: 94f73023 sd a5,-1728(a4) # 3bc0b9a0 + 3bc02068: 00011797 auipc a5,0x11 + 3bc0206c: b9878793 addi a5,a5,-1128 # 3bc12c00 + 3bc02070: 00009717 auipc a4,0x9 + 3bc02074: 6ef73c23 sd a5,1784(a4) # 3bc0b768 + 3bc02078: 00011797 auipc a5,0x11 + 3bc0207c: 64878793 addi a5,a5,1608 # 3bc136c0 + 3bc02080: 0000a717 auipc a4,0xa + 3bc02084: 92f73423 sd a5,-1752(a4) # 3bc0b9a8 + 3bc02088: 00011797 auipc a5,0x11 + 3bc0208c: 1f878793 addi a5,a5,504 # 3bc13280 + 3bc02090: 0000a717 auipc a4,0xa + 3bc02094: 8ef73823 sd a5,-1808(a4) # 3bc0b980 + 3bc02098: 8082 ret + +000000003bc0209a : + 3bc0209a: 1141 addi sp,sp,-16 + 3bc0209c: 00009597 auipc a1,0x9 + 3bc020a0: 74c5b583 ld a1,1868(a1) # 3bc0b7e8 + 3bc020a4: 00009517 auipc a0,0x9 + 3bc020a8: bd450513 addi a0,a0,-1068 # 3bc0ac78 <__func__.1+0x1d0> + 3bc020ac: e406 sd ra,8(sp) + 3bc020ae: aaafe0ef jal ra,3bc00358 + 3bc020b2: 00009597 auipc a1,0x9 + 3bc020b6: 75e5b583 ld a1,1886(a1) # 3bc0b810 + 3bc020ba: 00009517 auipc a0,0x9 + 3bc020be: bd650513 addi a0,a0,-1066 # 3bc0ac90 <__func__.1+0x1e8> + 3bc020c2: a96fe0ef jal ra,3bc00358 + 3bc020c6: 00009597 auipc a1,0x9 + 3bc020ca: 7325b583 ld a1,1842(a1) # 3bc0b7f8 + 3bc020ce: 00009517 auipc a0,0x9 + 3bc020d2: bda50513 addi a0,a0,-1062 # 3bc0aca8 <__func__.1+0x200> + 3bc020d6: a82fe0ef jal ra,3bc00358 + 3bc020da: 00009597 auipc a1,0x9 + 3bc020de: 7265b583 ld a1,1830(a1) # 3bc0b800 + 3bc020e2: 00009517 auipc a0,0x9 + 3bc020e6: bde50513 addi a0,a0,-1058 # 3bc0acc0 <__func__.1+0x218> + 3bc020ea: a6efe0ef jal ra,3bc00358 + 3bc020ee: 00009597 auipc a1,0x9 + 3bc020f2: 71a5b583 ld a1,1818(a1) # 3bc0b808 + 3bc020f6: 00009517 auipc a0,0x9 + 3bc020fa: be250513 addi a0,a0,-1054 # 3bc0acd8 <__func__.1+0x230> + 3bc020fe: a5afe0ef jal ra,3bc00358 + 3bc02102: 0000a597 auipc a1,0xa + 3bc02106: 81e5b583 ld a1,-2018(a1) # 3bc0b920 + 3bc0210a: 00009517 auipc a0,0x9 + 3bc0210e: be650513 addi a0,a0,-1050 # 3bc0acf0 <__func__.1+0x248> + 3bc02112: a46fe0ef jal ra,3bc00358 + 3bc02116: 0000a597 auipc a1,0xa + 3bc0211a: 88a5b583 ld a1,-1910(a1) # 3bc0b9a0 + 3bc0211e: 00009517 auipc a0,0x9 + 3bc02122: bea50513 addi a0,a0,-1046 # 3bc0ad08 <__func__.1+0x260> + 3bc02126: a32fe0ef jal ra,3bc00358 + 3bc0212a: 00009597 auipc a1,0x9 + 3bc0212e: 63e5b583 ld a1,1598(a1) # 3bc0b768 + 3bc02132: 00009517 auipc a0,0x9 + 3bc02136: bee50513 addi a0,a0,-1042 # 3bc0ad20 <__func__.1+0x278> + 3bc0213a: a1efe0ef jal ra,3bc00358 + 3bc0213e: 0000a597 auipc a1,0xa + 3bc02142: 86a5b583 ld a1,-1942(a1) # 3bc0b9a8 + 3bc02146: 00009517 auipc a0,0x9 + 3bc0214a: bf250513 addi a0,a0,-1038 # 3bc0ad38 <__func__.1+0x290> + 3bc0214e: a0afe0ef jal ra,3bc00358 + 3bc02152: 60a2 ld ra,8(sp) + 3bc02154: 0000a597 auipc a1,0xa + 3bc02158: 82c5b583 ld a1,-2004(a1) # 3bc0b980 + 3bc0215c: 00009517 auipc a0,0x9 + 3bc02160: bf450513 addi a0,a0,-1036 # 3bc0ad50 <__func__.1+0x2a8> + 3bc02164: 0141 addi sp,sp,16 + 3bc02166: 9f2fe06f j 3bc00358 + +000000003bc0216a : + 3bc0216a: 4501 li a0,0 + 3bc0216c: 3020106f j 3bc0346e + +000000003bc02170 : + 3bc02170: 7179 addi sp,sp,-48 + 3bc02172: f022 sd s0,32(sp) + 3bc02174: 00009417 auipc s0,0x9 + 3bc02178: 75c40413 addi s0,s0,1884 # 3bc0b8d0 + 3bc0217c: 601c ld a5,0(s0) + 3bc0217e: 00009597 auipc a1,0x9 + 3bc02182: bea58593 addi a1,a1,-1046 # 3bc0ad68 <__func__.1+0x2c0> + 3bc02186: 00011517 auipc a0,0x11 + 3bc0218a: 62250513 addi a0,a0,1570 # 3bc137a8 + 3bc0218e: f406 sd ra,40(sp) + 3bc02190: ec26 sd s1,24(sp) + 3bc02192: e84a sd s2,16(sp) + 3bc02194: 6f84 ld s1,24(a5) + 3bc02196: e44e sd s3,8(sp) + 3bc02198: ec0ff0ef jal ra,3bc01858 + 3bc0219c: 00011517 auipc a0,0x11 + 3bc021a0: 5bc50513 addi a0,a0,1468 # 3bc13758 + 3bc021a4: 00009597 auipc a1,0x9 + 3bc021a8: bcc58593 addi a1,a1,-1076 # 3bc0ad70 <__func__.1+0x2c8> + 3bc021ac: eacff0ef jal ra,3bc01858 + 3bc021b0: 00009517 auipc a0,0x9 + 3bc021b4: 77053503 ld a0,1904(a0) # 3bc0b920 + 3bc021b8: 03f57713 andi a4,a0,63 + 3bc021bc: 87aa mv a5,a0 + 3bc021be: c709 beqz a4,3bc021c8 + 3bc021c0: 04000793 li a5,64 + 3bc021c4: 9f99 subw a5,a5,a4 + 3bc021c6: 97aa add a5,a5,a0 + 3bc021c8: 00009997 auipc s3,0x9 + 3bc021cc: 62098993 addi s3,s3,1568 # 3bc0b7e8 + 3bc021d0: 00011717 auipc a4,0x11 + 3bc021d4: 56f73023 sd a5,1376(a4) # 3bc13730 + 3bc021d8: 0009b783 ld a5,0(s3) + 3bc021dc: 03f7f693 andi a3,a5,63 + 3bc021e0: c689 beqz a3,3bc021ea + 3bc021e2: 04000713 li a4,64 + 3bc021e6: 9f15 subw a4,a4,a3 + 3bc021e8: 97ba add a5,a5,a4 + 3bc021ea: 00009917 auipc s2,0x9 + 3bc021ee: 62690913 addi s2,s2,1574 # 3bc0b810 + 3bc021f2: 00011717 auipc a4,0x11 + 3bc021f6: 50f73f23 sd a5,1310(a4) # 3bc13710 + 3bc021fa: 00093783 ld a5,0(s2) + 3bc021fe: 03f7f693 andi a3,a5,63 + 3bc02202: c689 beqz a3,3bc0220c + 3bc02204: 04000713 li a4,64 + 3bc02208: 9f15 subw a4,a4,a3 + 3bc0220a: 97ba add a5,a5,a4 + 3bc0220c: 08000613 li a2,128 + 3bc02210: 4581 li a1,0 + 3bc02212: 00011717 auipc a4,0x11 + 3bc02216: 50f73b23 sd a5,1302(a4) # 3bc13728 + 3bc0221a: 807fe0ef jal ra,3bc00a20 + 3bc0221e: 0009b503 ld a0,0(s3) + 3bc02222: 20000613 li a2,512 + 3bc02226: 4581 li a1,0 + 3bc02228: ff8fe0ef jal ra,3bc00a20 + 3bc0222c: 00093503 ld a0,0(s2) + 3bc02230: 20000613 li a2,512 + 3bc02234: 4581 li a1,0 + 3bc02236: feafe0ef jal ra,3bc00a20 + 3bc0223a: 709c ld a5,32(s1) + 3bc0223c: 8526 mv a0,s1 + 3bc0223e: 6b9c ld a5,16(a5) + 3bc02240: 9782 jalr a5 + 3bc02242: 00011797 auipc a5,0x11 + 3bc02246: 4ea7bb23 sd a0,1270(a5) # 3bc13738 + 3bc0224a: 601c ld a5,0(s0) + 3bc0224c: 53d8 lw a4,36(a5) + 3bc0224e: 4791 li a5,4 + 3bc02250: 02e7e263 bltu a5,a4,3bc02274 + 3bc02254: 00009797 auipc a5,0x9 + 3bc02258: 58c78793 addi a5,a5,1420 # 3bc0b7e0 + 3bc0225c: 4731 li a4,12 + 3bc0225e: 00e79123 sh a4,2(a5) + 3bc02262: 4705 li a4,1 + 3bc02264: 00e78223 sb a4,4(a5) + 3bc02268: 20100793 li a5,513 + 3bc0226c: 00009717 auipc a4,0x9 + 3bc02270: 64f71723 sh a5,1614(a4) # 3bc0b8ba + 3bc02274: 00009797 auipc a5,0x9 + 3bc02278: 4f47b783 ld a5,1268(a5) # 3bc0b768 + 3bc0227c: 00011717 auipc a4,0x11 + 3bc02280: 48f73623 sd a5,1164(a4) # 3bc13708 + 3bc02284: 000e1737 lui a4,0xe1 + 3bc02288: c3d8 sw a4,4(a5) + 3bc0228a: 4721 li a4,8 + 3bc0228c: 00079423 sh zero,8(a5) + 3bc02290: 00e78523 sb a4,10(a5) + 3bc02294: 70a2 ld ra,40(sp) + 3bc02296: 7402 ld s0,32(sp) + 3bc02298: 00079623 sh zero,12(a5) + 3bc0229c: 64e2 ld s1,24(sp) + 3bc0229e: 6942 ld s2,16(sp) + 3bc022a0: 69a2 ld s3,8(sp) + 3bc022a2: 4501 li a0,0 + 3bc022a4: 6145 addi sp,sp,48 + 3bc022a6: 8082 ret + +000000003bc022a8 : + 3bc022a8: 030007b7 lui a5,0x3000 + 3bc022ac: 43c8 lw a0,4(a5) + 3bc022ae: 2495350b extu a0,a0,9,9 + 3bc022b2: 8082 ret + +000000003bc022b4 : + 3bc022b4: 1141 addi sp,sp,-16 + 3bc022b6: e406 sd ra,8(sp) + 3bc022b8: 93ffe0ef jal ra,3bc00bf6 + 3bc022bc: 3e800793 li a5,1000 + 3bc022c0: e911 bnez a0,3bc022d4 + 3bc022c2: 0e0007b7 lui a5,0xe000 + 3bc022c6: 639c ld a5,0(a5) + 3bc022c8: 0417b78b extu a5,a5,1,1 + 3bc022cc: eb81 bnez a5,3bc022dc + 3bc022ce: 6789 lui a5,0x2 + 3bc022d0: 71078793 addi a5,a5,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc022d4: 60a2 ld ra,8(sp) + 3bc022d6: 853e mv a0,a5 + 3bc022d8: 0141 addi sp,sp,16 + 3bc022da: 8082 ret + 3bc022dc: 67e1 lui a5,0x18 + 3bc022de: 69f78793 addi a5,a5,1695 # 1869f <__BSS_SIZE__+0x12a8f> + 3bc022e2: bfcd j 3bc022d4 + +000000003bc022e4 : + 3bc022e4: 7175 addi sp,sp,-144 + 3bc022e6: f0d2 sd s4,96(sp) + 3bc022e8: 00011797 auipc a5,0x11 + 3bc022ec: 46a7b423 sd a0,1128(a5) # 3bc13750 + 3bc022f0: 00011797 auipc a5,0x11 + 3bc022f4: 4eb7a823 sw a1,1264(a5) # 3bc137e0 + 3bc022f8: 00011a17 auipc s4,0x11 + 3bc022fc: 4eca0a13 addi s4,s4,1260 # 3bc137e4 + 3bc02300: e506 sd ra,136(sp) + 3bc02302: e122 sd s0,128(sp) + 3bc02304: fca6 sd s1,120(sp) + 3bc02306: f8ca sd s2,112(sp) + 3bc02308: f4ce sd s3,104(sp) + 3bc0230a: ecd6 sd s5,88(sp) + 3bc0230c: e8da sd s6,80(sp) + 3bc0230e: e4de sd s7,72(sp) + 3bc02310: e0e2 sd s8,64(sp) + 3bc02312: fc66 sd s9,56(sp) + 3bc02314: f86a sd s10,48(sp) + 3bc02316: f46e sd s11,40(sp) + 3bc02318: 00ca2023 sw a2,0(s4) + 3bc0231c: 0e0007b7 lui a5,0xe000 + 3bc02320: 0007a223 sw zero,4(a5) # e000004 + 3bc02324: f85ff0ef jal ra,3bc022a8 + 3bc02328: e909 bnez a0,3bc0233a + 3bc0232a: 00009517 auipc a0,0x9 + 3bc0232e: a5650513 addi a0,a0,-1450 # 3bc0ad80 <__func__.1+0x2d8> + 3bc02332: 826fe0ef jal ra,3bc00358 + 3bc02336: 596d li s2,-5 + 3bc02338: a111 j 3bc0273c + 3bc0233a: f7bff0ef jal ra,3bc022b4 + 3bc0233e: 0005049b sext.w s1,a0 + 3bc02342: 85a6 mv a1,s1 + 3bc02344: 00009517 auipc a0,0x9 + 3bc02348: a5450513 addi a0,a0,-1452 # 3bc0ad98 <__func__.1+0x2f0> + 3bc0234c: 80cfe0ef jal ra,3bc00358 + 3bc02350: 67e1 lui a5,0x18 + 3bc02352: 69e78793 addi a5,a5,1694 # 1869e <__BSS_SIZE__+0x12a8e> + 3bc02356: 0297f463 bgeu a5,s1,3bc0237e + 3bc0235a: 4785 li a5,1 + 3bc0235c: 00009517 auipc a0,0x9 + 3bc02360: a5450513 addi a0,a0,-1452 # 3bc0adb0 <__func__.1+0x308> + 3bc02364: 00011717 auipc a4,0x11 + 3bc02368: 4af70223 sb a5,1188(a4) # 3bc13808 + 3bc0236c: fedfd0ef jal ra,3bc00358 + 3bc02370: c00037b7 lui a5,0xc0003 + 3bc02374: 03000737 lui a4,0x3000 + 3bc02378: 078d addi a5,a5,3 + 3bc0237a: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc0237e: 85a6 mv a1,s1 + 3bc02380: 00009517 auipc a0,0x9 + 3bc02384: a3850513 addi a0,a0,-1480 # 3bc0adb8 <__func__.1+0x310> + 3bc02388: fd1fd0ef jal ra,3bc00358 + 3bc0238c: 3e800793 li a5,1000 + 3bc02390: 029787bb mulw a5,a5,s1 + 3bc02394: e43e sd a5,8(sp) + 3bc02396: c00037b7 lui a5,0xc0003 + 3bc0239a: 10178793 addi a5,a5,257 # ffffffffc0003101 <__BL2_END__+0xffffffff843ef8f1> + 3bc0239e: e83e sd a5,16(sp) + 3bc023a0: c00017b7 lui a5,0xc0001 + 3bc023a4: 0791 addi a5,a5,4 + 3bc023a6: ec3e sd a5,24(sp) + 3bc023a8: 00011797 auipc a5,0x11 + 3bc023ac: 3607b423 sd zero,872(a5) # 3bc13710 + 3bc023b0: 00011797 auipc a5,0x11 + 3bc023b4: 3607bc23 sd zero,888(a5) # 3bc13728 + 3bc023b8: 00011797 auipc a5,0x11 + 3bc023bc: 3607bc23 sd zero,888(a5) # 3bc13730 + 3bc023c0: 00011797 auipc a5,0x11 + 3bc023c4: 3807b023 sd zero,896(a5) # 3bc13740 + 3bc023c8: 00011797 auipc a5,0x11 + 3bc023cc: 3807b023 sd zero,896(a5) # 3bc13748 + 3bc023d0: 00011797 auipc a5,0x11 + 3bc023d4: 3407b423 sd zero,840(a5) # 3bc13718 + 3bc023d8: 00011797 auipc a5,0x11 + 3bc023dc: 3407b423 sd zero,840(a5) # 3bc13720 + 3bc023e0: 00011797 auipc a5,0x11 + 3bc023e4: 3407bc23 sd zero,856(a5) # 3bc13738 + 3bc023e8: 00011797 auipc a5,0x11 + 3bc023ec: 40078fa3 sb zero,1055(a5) # 3bc13807 + 3bc023f0: 00011797 auipc a5,0x11 + 3bc023f4: 40078b23 sb zero,1046(a5) # 3bc13806 + 3bc023f8: 00011797 auipc a5,0x11 + 3bc023fc: 400786a3 sb zero,1037(a5) # 3bc13805 + 3bc02400: 00011797 auipc a5,0x11 + 3bc02404: 400785a3 sb zero,1035(a5) # 3bc1380b + 3bc02408: 00011797 auipc a5,0x11 + 3bc0240c: 3e07a023 sw zero,992(a5) # 3bc137e8 + 3bc02410: 00011797 auipc a5,0x11 + 3bc02414: 2e07bc23 sd zero,760(a5) # 3bc13708 + 3bc02418: 00011797 auipc a5,0x11 + 3bc0241c: 3e0788a3 sb zero,1009(a5) # 3bc13809 + 3bc02420: bd9ff0ef jal ra,3bc01ff8 + 3bc02424: c77ff0ef jal ra,3bc0209a + 3bc02428: 00009417 auipc s0,0x9 + 3bc0242c: 4a840413 addi s0,s0,1192 # 3bc0b8d0 + 3bc02430: 00009797 auipc a5,0x9 + 3bc02434: 5507b783 ld a5,1360(a5) # 3bc0b980 + 3bc02438: e41c sd a5,8(s0) + 3bc0243a: 40000793 li a5,1024 + 3bc0243e: c81c sw a5,16(s0) + 3bc02440: 00009517 auipc a0,0x9 + 3bc02444: 49850513 addi a0,a0,1176 # 3bc0b8d8 + 3bc02448: 00009797 auipc a5,0x9 + 3bc0244c: 5607b783 ld a5,1376(a5) # 3bc0b9a8 + 3bc02450: e43c sd a5,72(s0) + 3bc02452: 6cd000ef jal ra,3bc0331e + 3bc02456: 0005099b sext.w s3,a0 + 3bc0245a: 892a mv s2,a0 + 3bc0245c: 02099063 bnez s3,3bc0247c + 3bc02460: 00009517 auipc a0,0x9 + 3bc02464: 4c850513 addi a0,a0,1224 # 3bc0b928 + 3bc02468: 54f000ef jal ra,3bc031b6 + 3bc0246c: 02055763 bgez a0,3bc0249a + 3bc02470: 00009517 auipc a0,0x9 + 3bc02474: 97050513 addi a0,a0,-1680 # 3bc0ade0 <__func__.1+0x338> + 3bc02478: ee1fd0ef jal ra,3bc00358 + 3bc0247c: 85ce mv a1,s3 + 3bc0247e: 00009517 auipc a0,0x9 + 3bc02482: 9fa50513 addi a0,a0,-1542 # 3bc0ae78 <__func__.1+0x3d0> + 3bc02486: ed3fd0ef jal ra,3bc00358 + 3bc0248a: c00037b7 lui a5,0xc0003 + 3bc0248e: 03000737 lui a4,0x3000 + 3bc02492: 079d addi a5,a5,7 + 3bc02494: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02498: a455 j 3bc0273c + 3bc0249a: 6000 ld s0,0(s0) + 3bc0249c: e411 bnez s0,3bc024a8 + 3bc0249e: 00009517 auipc a0,0x9 + 3bc024a2: 96250513 addi a0,a0,-1694 # 3bc0ae00 <__func__.1+0x358> + 3bc024a6: bfc9 j 3bc02478 + 3bc024a8: cc9ff0ef jal ra,3bc02170 + 3bc024ac: 4501 li a0,0 + 3bc024ae: d11fd0ef jal ra,3bc001be + 3bc024b2: 6742 ld a4,16(sp) + 3bc024b4: 00011917 auipc s2,0x11 + 3bc024b8: 33890913 addi s2,s2,824 # 3bc137ec + 3bc024bc: 00a92023 sw a0,0(s2) + 3bc024c0: 6522 ld a0,8(sp) + 3bc024c2: 030007b7 lui a5,0x3000 + 3bc024c6: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc024ca: cb1fd0ef jal ra,3bc0017a + 3bc024ce: 681c ld a5,16(s0) + 3bc024d0: 4585 li a1,1 + 3bc024d2: 8522 mv a0,s0 + 3bc024d4: 779c ld a5,40(a5) + 3bc024d6: 00011997 auipc s3,0x11 + 3bc024da: 24a98993 addi s3,s3,586 # 3bc13720 + 3bc024de: 00011b17 auipc s6,0x11 + 3bc024e2: 32ab0b13 addi s6,s6,810 # 3bc13808 + 3bc024e6: 9782 jalr a5 + 3bc024e8: 00011a97 auipc s5,0x11 + 3bc024ec: 31da8a93 addi s5,s5,797 # 3bc13805 + 3bc024f0: 000ac783 lbu a5,0(s5) + 3bc024f4: 18078663 beqz a5,3bc02680 + 3bc024f8: 6762 ld a4,24(sp) + 3bc024fa: 030007b7 lui a5,0x3000 + 3bc024fe: 00043b83 ld s7,0(s0) + 3bc02502: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02506: 4785 li a5,1 + 3bc02508: 00011717 auipc a4,0x11 + 3bc0250c: 30f701a3 sb a5,771(a4) # 3bc1380b + 3bc02510: 08200c13 li s8,130 + 3bc02514: 00011c97 auipc s9,0x11 + 3bc02518: 234c8c93 addi s9,s9,564 # 3bc13748 + 3bc0251c: 00011d17 auipc s10,0x11 + 3bc02520: 1fcd0d13 addi s10,s10,508 # 3bc13718 + 3bc02524: 00011d97 auipc s11,0x11 + 3bc02528: 21cd8d93 addi s11,s11,540 # 3bc13740 + 3bc0252c: 19741b63 bne s0,s7,3bc026c2 + 3bc02530: 02044783 lbu a5,32(s0) + 3bc02534: 470d li a4,3 + 3bc02536: 1ee78063 beq a5,a4,3bc02716 + 3bc0253a: 4715 li a4,5 + 3bc0253c: 1ee78063 beq a5,a4,3bc0271c + 3bc02540: 4709 li a4,2 + 3bc02542: dee79ae3 bne a5,a4,3bc02336 + 3bc02546: 04000793 li a5,64 + 3bc0254a: 0009b503 ld a0,0(s3) + 3bc0254e: 04000613 li a2,64 + 3bc02552: 4581 li a1,0 + 3bc02554: 00011717 auipc a4,0x11 + 3bc02558: 28f72a23 sw a5,660(a4) # 3bc137e8 + 3bc0255c: cc4fe0ef jal ra,3bc00a20 + 3bc02560: 0009b783 ld a5,0(s3) + 3bc02564: 00011717 auipc a4,0x11 + 3bc02568: 1c473703 ld a4,452(a4) # 3bc13728 + 3bc0256c: 00011b97 auipc s7,0x11 + 3bc02570: 27cb8b93 addi s7,s7,636 # 3bc137e8 + 3bc02574: eb98 sd a4,16(a5) + 3bc02576: cfd8 sw a4,28(a5) + 3bc02578: fffff717 auipc a4,0xfffff + 3bc0257c: 33270713 addi a4,a4,818 # 3bc018aa + 3bc02580: f798 sd a4,40(a5) + 3bc02582: 00011c17 auipc s8,0x11 + 3bc02586: 196c0c13 addi s8,s8,406 # 3bc13718 + 3bc0258a: 000ba703 lw a4,0(s7) + 3bc0258e: 000c3503 ld a0,0(s8) + 3bc02592: 04000613 li a2,64 + 3bc02596: cf98 sw a4,24(a5) + 3bc02598: 4581 li a1,0 + 3bc0259a: c86fe0ef jal ra,3bc00a20 + 3bc0259e: 000c3783 ld a5,0(s8) + 3bc025a2: 00011717 auipc a4,0x11 + 3bc025a6: 16e73703 ld a4,366(a4) # 3bc13710 + 3bc025aa: 00011517 auipc a0,0x11 + 3bc025ae: 19e53503 ld a0,414(a0) # 3bc13748 + 3bc025b2: eb98 sd a4,16(a5) + 3bc025b4: cfd8 sw a4,28(a5) + 3bc025b6: fffff717 auipc a4,0xfffff + 3bc025ba: 5ae70713 addi a4,a4,1454 # 3bc01b64 + 3bc025be: f798 sd a4,40(a5) + 3bc025c0: 000ba703 lw a4,0(s7) + 3bc025c4: 0009b583 ld a1,0(s3) + 3bc025c8: 4b85 li s7,1 + 3bc025ca: cf98 sw a4,24(a5) + 3bc025cc: 711c ld a5,32(a0) + 3bc025ce: 739c ld a5,32(a5) + 3bc025d0: 9782 jalr a5 + 3bc025d2: 500c lw a1,32(s0) + 3bc025d4: 00009517 auipc a0,0x9 + 3bc025d8: 86450513 addi a0,a0,-1948 # 3bc0ae38 <__func__.1+0x390> + 3bc025dc: d7dfd0ef jal ra,3bc00358 + 3bc025e0: 4501 li a0,0 + 3bc025e2: bddfd0ef jal ra,3bc001be + 3bc025e6: 00a92023 sw a0,0(s2) + 3bc025ea: b81ff0ef jal ra,3bc0216a + 3bc025ee: 000ac783 lbu a5,0(s5) + 3bc025f2: ee078be3 beqz a5,3bc024e8 + 3bc025f6: 00011797 auipc a5,0x11 + 3bc025fa: 21078793 addi a5,a5,528 # 3bc13806 + 3bc025fe: 0007c783 lbu a5,0(a5) + 3bc02602: eb95 bnez a5,3bc02636 + 3bc02604: 000b4783 lbu a5,0(s6) + 3bc02608: 10079d63 bnez a5,3bc02722 + 3bc0260c: 00092503 lw a0,0(s2) + 3bc02610: baffd0ef jal ra,3bc001be + 3bc02614: 2501 sext.w a0,a0 + 3bc02616: fca4fae3 bgeu s1,a0,3bc025ea + 3bc0261a: 85a6 mv a1,s1 + 3bc0261c: 00009517 auipc a0,0x9 + 3bc02620: 83c50513 addi a0,a0,-1988 # 3bc0ae58 <__func__.1+0x3b0> + 3bc02624: d35fd0ef jal ra,3bc00358 + 3bc02628: c00037b7 lui a5,0xc0003 + 3bc0262c: 03000737 lui a4,0x3000 + 3bc02630: 0795 addi a5,a5,5 + 3bc02632: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02636: 00009517 auipc a0,0x9 + 3bc0263a: 83a50513 addi a0,a0,-1990 # 3bc0ae70 <__func__.1+0x3c8> + 3bc0263e: d1bfd0ef jal ra,3bc00358 + 3bc02642: c00037b7 lui a5,0xc0003 + 3bc02646: 03000737 lui a4,0x3000 + 3bc0264a: 0799 addi a5,a5,6 + 3bc0264c: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02650: 681c ld a5,16(s0) + 3bc02652: 4581 li a1,0 + 3bc02654: 8522 mv a0,s0 + 3bc02656: 779c ld a5,40(a5) + 3bc02658: 9782 jalr a5 + 3bc0265a: 00009517 auipc a0,0x9 + 3bc0265e: 2ce50513 addi a0,a0,718 # 3bc0b928 + 3bc02662: 380000ef jal ra,3bc029e2 + 3bc02666: 0e0007b7 lui a5,0xe000 + 3bc0266a: 0047a903 lw s2,4(a5) # e000004 + 3bc0266e: 4d4757b7 lui a5,0x4d475 + 3bc02672: e3178793 addi a5,a5,-463 # 4d474e31 <__BL2_END__+0x11861621> + 3bc02676: 40f90933 sub s2,s2,a5 + 3bc0267a: 00193913 seqz s2,s2 + 3bc0267e: a87d j 3bc0273c + 3bc02680: aebff0ef jal ra,3bc0216a + 3bc02684: 00092503 lw a0,0(s2) + 3bc02688: b37fd0ef jal ra,3bc001be + 3bc0268c: 2501 sext.w a0,a0 + 3bc0268e: 02a4f363 bgeu s1,a0,3bc026b4 + 3bc02692: 000b4783 lbu a5,0(s6) + 3bc02696: ef99 bnez a5,3bc026b4 + 3bc02698: 00008517 auipc a0,0x8 + 3bc0269c: 79050513 addi a0,a0,1936 # 3bc0ae28 <__func__.1+0x380> + 3bc026a0: cb9fd0ef jal ra,3bc00358 + 3bc026a4: c00037b7 lui a5,0xc0003 + 3bc026a8: 03000737 lui a4,0x3000 + 3bc026ac: 0791 addi a5,a5,4 + 3bc026ae: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc026b2: b151 j 3bc02336 + 3bc026b4: 00011797 auipc a5,0x11 + 3bc026b8: 1557c783 lbu a5,341(a5) # 3bc13809 + 3bc026bc: e20786e3 beqz a5,3bc024e8 + 3bc026c0: b1e5 j 3bc023a8 + 3bc026c2: 030bb703 ld a4,48(s7) + 3bc026c6: c305 beqz a4,3bc026e6 + 3bc026c8: 00274703 lbu a4,2(a4) + 3bc026cc: 08100793 li a5,129 + 3bc026d0: 00f71e63 bne a4,a5,3bc026ec + 3bc026d4: 020bb703 ld a4,32(s7) + 3bc026d8: 855e mv a0,s7 + 3bc026da: 6b18 ld a4,16(a4) + 3bc026dc: 9702 jalr a4 + 3bc026de: 00ad3023 sd a0,0(s10) + 3bc026e2: 017db023 sd s7,0(s11) + 3bc026e6: 000bbb83 ld s7,0(s7) + 3bc026ea: b589 j 3bc0252c + 3bc026ec: 4785 li a5,1 + 3bc026ee: 00f71c63 bne a4,a5,3bc02706 + 3bc026f2: 020bb703 ld a4,32(s7) + 3bc026f6: 855e mv a0,s7 + 3bc026f8: 6b18 ld a4,16(a4) + 3bc026fa: 9702 jalr a4 + 3bc026fc: 00a9b023 sd a0,0(s3) + 3bc02700: 017cb023 sd s7,0(s9) + 3bc02704: b7cd j 3bc026e6 + 3bc02706: ff8710e3 bne a4,s8,3bc026e6 + 3bc0270a: 020bb703 ld a4,32(s7) + 3bc0270e: 855e mv a0,s7 + 3bc02710: 6b18 ld a4,16(a4) + 3bc02712: 9702 jalr a4 + 3bc02714: bfc9 j 3bc026e6 + 3bc02716: 20000793 li a5,512 + 3bc0271a: bd05 j 3bc0254a + 3bc0271c: 40000793 li a5,1024 + 3bc02720: b52d j 3bc0254a + 3bc02722: ed7794e3 bne a5,s7,3bc025ea + 3bc02726: 000a2783 lw a5,0(s4) + 3bc0272a: ec0790e3 bnez a5,3bc025ea + 3bc0272e: 00008517 auipc a0,0x8 + 3bc02732: 73a50513 addi a0,a0,1850 # 3bc0ae68 <__func__.1+0x3c0> + 3bc02736: c23fd0ef jal ra,3bc00358 + 3bc0273a: 4905 li s2,1 + 3bc0273c: 60aa ld ra,136(sp) + 3bc0273e: 640a ld s0,128(sp) + 3bc02740: 74e6 ld s1,120(sp) + 3bc02742: 79a6 ld s3,104(sp) + 3bc02744: 7a06 ld s4,96(sp) + 3bc02746: 6ae6 ld s5,88(sp) + 3bc02748: 6b46 ld s6,80(sp) + 3bc0274a: 6ba6 ld s7,72(sp) + 3bc0274c: 6c06 ld s8,64(sp) + 3bc0274e: 7ce2 ld s9,56(sp) + 3bc02750: 7d42 ld s10,48(sp) + 3bc02752: 7da2 ld s11,40(sp) + 3bc02754: 854a mv a0,s2 + 3bc02756: 7946 ld s2,112(sp) + 3bc02758: 6149 addi sp,sp,144 + 3bc0275a: 8082 ret + +000000003bc0275c : + 3bc0275c: c909 beqz a0,3bc0276e + 3bc0275e: 07150783 lb a5,113(a0) + 3bc02762: 4501 li a0,0 + 3bc02764: 0007d663 bgez a5,3bc02770 + 3bc02768: fd300513 li a0,-45 + 3bc0276c: 8082 ret + 3bc0276e: 5535 li a0,-19 + 3bc02770: 8082 ret + +000000003bc02772 : + 3bc02772: 61b8 ld a4,64(a1) + 3bc02774: 7179 addi sp,sp,-48 + 3bc02776: f022 sd s0,32(sp) + 3bc02778: ec26 sd s1,24(sp) + 3bc0277a: 00011417 auipc s0,0x11 + 3bc0277e: 04643403 ld s0,70(s0) # 3bc137c0 + 3bc02782: f406 sd ra,40(sp) + 3bc02784: 04058793 addi a5,a1,64 + 3bc02788: 7c04 ld s1,56(s0) + 3bc0278a: 00f70a63 beq a4,a5,3bc0279e + 3bc0278e: 00008517 auipc a0,0x8 + 3bc02792: 73250513 addi a0,a0,1842 # 3bc0aec0 <__func__.5+0x8> + 3bc02796: e42e sd a1,8(sp) + 3bc02798: bc1fd0ef jal ra,3bc00358 + 3bc0279c: 65a2 ld a1,8(sp) + 3bc0279e: 8522 mv a0,s0 + 3bc027a0: 7402 ld s0,32(sp) + 3bc027a2: 68bc ld a5,80(s1) + 3bc027a4: 70a2 ld ra,40(sp) + 3bc027a6: 64e2 ld s1,24(sp) + 3bc027a8: 6145 addi sp,sp,48 + 3bc027aa: 8782 jr a5 + +000000003bc027ac : + 3bc027ac: 7179 addi sp,sp,-48 + 3bc027ae: ec26 sd s1,24(sp) + 3bc027b0: 00011497 auipc s1,0x11 + 3bc027b4: 00848493 addi s1,s1,8 # 3bc137b8 + 3bc027b8: 6088 ld a0,0(s1) + 3bc027ba: f022 sd s0,32(sp) + 3bc027bc: 6405 lui s0,0x1 + 3bc027be: 80440413 addi s0,s0,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc027c2: 9522 add a0,a0,s0 + 3bc027c4: e42e sd a1,8(sp) + 3bc027c6: f406 sd ra,40(sp) + 3bc027c8: f85fe0ef jal ra,3bc0174c + 3bc027cc: 65a2 ld a1,8(sp) + 3bc027ce: 609c ld a5,0(s1) + 3bc027d0: 2501 sext.w a0,a0 + 3bc027d2: ed89 bnez a1,3bc027ec + 3bc027d4: 008785b3 add a1,a5,s0 + 3bc027d8: 00256513 ori a0,a0,2 + 3bc027dc: f77fe0ef jal ra,3bc01752 + 3bc027e0: 70a2 ld ra,40(sp) + 3bc027e2: 7402 ld s0,32(sp) + 3bc027e4: 64e2 ld s1,24(sp) + 3bc027e6: 4501 li a0,0 + 3bc027e8: 6145 addi sp,sp,48 + 3bc027ea: 8082 ret + 3bc027ec: 008785b3 add a1,a5,s0 + 3bc027f0: 9975 andi a0,a0,-3 + 3bc027f2: b7ed j 3bc027dc + +000000003bc027f4 : + 3bc027f4: 00011517 auipc a0,0x11 + 3bc027f8: fcc53503 ld a0,-52(a0) # 3bc137c0 + 3bc027fc: 7d1c ld a5,56(a0) + 3bc027fe: 1141 addi sp,sp,-16 + 3bc02800: e022 sd s0,0(sp) + 3bc02802: 67bc ld a5,72(a5) + 3bc02804: e406 sd ra,8(sp) + 3bc02806: 05000593 li a1,80 + 3bc0280a: 9782 jalr a5 + 3bc0280c: 842a mv s0,a0 + 3bc0280e: c911 beqz a0,3bc02822 + 3bc02810: 05000613 li a2,80 + 3bc02814: 4581 li a1,0 + 3bc02816: a0afe0ef jal ra,3bc00a20 + 3bc0281a: 04040793 addi a5,s0,64 + 3bc0281e: e03c sd a5,64(s0) + 3bc02820: e43c sd a5,72(s0) + 3bc02822: 60a2 ld ra,8(sp) + 3bc02824: 8522 mv a0,s0 + 3bc02826: 6402 ld s0,0(sp) + 3bc02828: 0141 addi sp,sp,16 + 3bc0282a: 8082 ret + +000000003bc0282c : + 3bc0282c: cd51 beqz a0,3bc028c8 + 3bc0282e: 1141 addi sp,sp,-16 + 3bc02830: e022 sd s0,0(sp) + 3bc02832: e406 sd ra,8(sp) + 3bc02834: 842a mv s0,a0 + 3bc02836: 5529 li a0,-22 + 3bc02838: c5c1 beqz a1,3bc028c0 + 3bc0283a: 603c ld a5,64(s0) + 3bc0283c: e3d1 bnez a5,3bc028c0 + 3bc0283e: 6c18 ld a4,24(s0) + 3bc02840: 00009797 auipc a5,0x9 + 3bc02844: 93878793 addi a5,a5,-1736 # 3bc0b178 + 3bc02848: 06f70c63 beq a4,a5,3bc028c0 + 3bc0284c: 0015c703 lbu a4,1(a1) + 3bc02850: 4795 li a5,5 + 3bc02852: 06f71763 bne a4,a5,3bc028c0 + 3bc02856: 07144703 lbu a4,113(s0) + 3bc0285a: 0025c783 lbu a5,2(a1) + 3bc0285e: 06f71163 bne a4,a5,3bc028c0 + 3bc02862: 0045d783 lhu a5,4(a1) + 3bc02866: 02845703 lhu a4,40(s0) + 3bc0286a: 04f76b63 bltu a4,a5,3bc028c0 + 3bc0286e: 07244683 lbu a3,114(s0) + 3bc02872: 0035c703 lbu a4,3(a1) + 3bc02876: 00e68863 beq a3,a4,3bc02886 + 3bc0287a: 4609 li a2,2 + 3bc0287c: 00c68563 beq a3,a2,3bc02886 + 3bc02880: 468d li a3,3 + 3bc02882: 02d71f63 bne a4,a3,3bc028c0 + 3bc02886: fde00513 li a0,-34 + 3bc0288a: cb9d beqz a5,3bc028c0 + 3bc0288c: 7c18 ld a4,56(s0) + 3bc0288e: fc600513 li a0,-58 + 3bc02892: 7f14 ld a3,56(a4) + 3bc02894: c695 beqz a3,3bc028c0 + 3bc02896: 5318 lw a4,32(a4) + 3bc02898: c705 beqz a4,3bc028c0 + 3bc0289a: 02f41423 sh a5,40(s0) + 3bc0289e: f80c sd a1,48(s0) + 3bc028a0: e02c sd a1,64(s0) + 3bc028a2: 8522 mv a0,s0 + 3bc028a4: 06040823 sb zero,112(s0) + 3bc028a8: 04043c23 sd zero,88(s0) + 3bc028ac: 35e010ef jal ra,3bc03c0a + 3bc028b0: 4581 li a1,0 + 3bc028b2: 8522 mv a0,s0 + 3bc028b4: 396010ef jal ra,3bc03c4a + 3bc028b8: 8522 mv a0,s0 + 3bc028ba: 3f2010ef jal ra,3bc03cac + 3bc028be: 4501 li a0,0 + 3bc028c0: 60a2 ld ra,8(sp) + 3bc028c2: 6402 ld s0,0(sp) + 3bc028c4: 0141 addi sp,sp,16 + 3bc028c6: 8082 ret + 3bc028c8: 5529 li a0,-22 + 3bc028ca: 8082 ret + +000000003bc028cc : + 3bc028cc: 8082 ret + +000000003bc028ce : + 3bc028ce: 8082 ret + +000000003bc028d0 : + 3bc028d0: 00009517 auipc a0,0x9 + 3bc028d4: 8a850513 addi a0,a0,-1880 # 3bc0b178 + 3bc028d8: 8082 ret + +000000003bc028da : + 3bc028da: 6d1c ld a5,24(a0) + 3bc028dc: f8a5550b sdd a0,a0,(a0),0,4 + 3bc028e0: 29850613 addi a2,a0,664 + 3bc028e4: f8f7d78b sdd a5,a5,(a5),0,4 + 3bc028e8: 04052423 sw zero,72(a0) + 3bc028ec: 09850793 addi a5,a0,152 + 3bc028f0: fe07bc23 sd zero,-8(a5) + 3bc028f4: 02078423 sb zero,40(a5) + 3bc028f8: f8f7d78b sdd a5,a5,(a5),0,4 + 3bc028fc: 0007b823 sd zero,16(a5) + 3bc02900: 08078713 addi a4,a5,128 + 3bc02904: 00c71363 bne a4,a2,3bc0290a + 3bc02908: 8082 ret + 3bc0290a: 6514 ld a3,8(a0) + 3bc0290c: 03878793 addi a5,a5,56 + 3bc02910: e51c sd a5,8(a0) + 3bc02912: faa73c23 sd a0,-72(a4) + 3bc02916: fcd73023 sd a3,-64(a4) + 3bc0291a: e29c sd a5,0(a3) + 3bc0291c: 87ba mv a5,a4 + 3bc0291e: bfc9 j 3bc028f0 + +000000003bc02920 : + 3bc02920: 65b8 ld a4,72(a1) + 3bc02922: 61b4 ld a3,64(a1) + 3bc02924: 1101 addi sp,sp,-32 + 3bc02926: ec06 sd ra,24(sp) + 3bc02928: e822 sd s0,16(sp) + 3bc0292a: 07054403 lbu s0,112(a0) + 3bc0292e: e698 sd a4,8(a3) + 3bc02930: e314 sd a3,0(a4) + 3bc02932: 5d98 lw a4,56(a1) + 3bc02934: 04058793 addi a5,a1,64 + 3bc02938: e1bc sd a5,64(a1) + 3bc0293a: e5bc sd a5,72(a1) + 3bc0293c: fdc00793 li a5,-36 + 3bc02940: 00f71363 bne a4,a5,3bc02946 + 3bc02944: dd90 sw a2,56(a1) + 3bc02946: 4785 li a5,1 + 3bc02948: 06f50823 sb a5,112(a0) + 3bc0294c: 759c ld a5,40(a1) + 3bc0294e: e42a sd a0,8(sp) + 3bc02950: 9782 jalr a5 + 3bc02952: 6522 ld a0,8(sp) + 3bc02954: 06850823 sb s0,112(a0) + 3bc02958: 60e2 ld ra,24(sp) + 3bc0295a: 6442 ld s0,16(sp) + 3bc0295c: 6105 addi sp,sp,32 + 3bc0295e: 8082 ret + +000000003bc02960 : + 3bc02960: c539 beqz a0,3bc029ae + 3bc02962: 6d14 ld a3,24(a0) + 3bc02964: 00009797 auipc a5,0x9 + 3bc02968: 81478793 addi a5,a5,-2028 # 3bc0b178 + 3bc0296c: 5729 li a4,-22 + 3bc0296e: 04f68163 beq a3,a5,3bc029b0 + 3bc02972: 872a mv a4,a0 + 3bc02974: 6e97478b ldib a5,(a4),9,3 + 3bc02978: fc078793 addi a5,a5,-64 + 3bc0297c: 86be mv a3,a5 + 3bc0297e: 6e86c60b ldib a2,(a3),8,3 + 3bc02982: 02e69163 bne a3,a4,3bc029a4 + 3bc02986: 5729 li a4,-22 + 3bc02988: 02f59463 bne a1,a5,3bc029b0 + 3bc0298c: 1141 addi sp,sp,-16 + 3bc0298e: fca00613 li a2,-54 + 3bc02992: 85be mv a1,a5 + 3bc02994: e406 sd ra,8(sp) + 3bc02996: f8bff0ef jal ra,3bc02920 + 3bc0299a: 60a2 ld ra,8(sp) + 3bc0299c: 4701 li a4,0 + 3bc0299e: 853a mv a0,a4 + 3bc029a0: 0141 addi sp,sp,16 + 3bc029a2: 8082 ret + 3bc029a4: fef584e3 beq a1,a5,3bc0298c + 3bc029a8: fc060793 addi a5,a2,-64 + 3bc029ac: bfc1 j 3bc0297c + 3bc029ae: 5729 li a4,-22 + 3bc029b0: 853a mv a0,a4 + 3bc029b2: 8082 ret + +000000003bc029b4 : + 3bc029b4: 7179 addi sp,sp,-48 + 3bc029b6: f022 sd s0,32(sp) + 3bc029b8: ec26 sd s1,24(sp) + 3bc029ba: f406 sd ra,40(sp) + 3bc029bc: 84ae mv s1,a1 + 3bc029be: 04850413 addi s0,a0,72 + 3bc029c2: 652c ld a1,72(a0) + 3bc029c4: 00859763 bne a1,s0,3bc029d2 + 3bc029c8: 70a2 ld ra,40(sp) + 3bc029ca: 7402 ld s0,32(sp) + 3bc029cc: 64e2 ld s1,24(sp) + 3bc029ce: 6145 addi sp,sp,48 + 3bc029d0: 8082 ret + 3bc029d2: 8626 mv a2,s1 + 3bc029d4: fc058593 addi a1,a1,-64 + 3bc029d8: e42a sd a0,8(sp) + 3bc029da: f47ff0ef jal ra,3bc02920 + 3bc029de: 6522 ld a0,8(sp) + 3bc029e0: b7cd j 3bc029c2 + +000000003bc029e2 : + 3bc029e2: 7139 addi sp,sp,-64 + 3bc029e4: f822 sd s0,48(sp) + 3bc029e6: fc06 sd ra,56(sp) + 3bc029e8: f426 sd s1,40(sp) + 3bc029ea: f04a sd s2,32(sp) + 3bc029ec: ec4e sd s3,24(sp) + 3bc029ee: e852 sd s4,16(sp) + 3bc029f0: e456 sd s5,8(sp) + 3bc029f2: 00011417 auipc s0,0x11 + 3bc029f6: dce43403 ld s0,-562(s0) # 3bc137c0 + 3bc029fa: cc3d beqz s0,3bc02a78 + 3bc029fc: 84aa mv s1,a0 + 3bc029fe: 5529 li a0,-22 + 3bc02a00: c0bd beqz s1,3bc02a66 + 3bc02a02: 7c18 ld a4,56(s0) + 3bc02a04: 06971163 bne a4,s1,3bc02a66 + 3bc02a08: 5018 lw a4,32(s0) + 3bc02a0a: 02043c23 sd zero,56(s0) + 3bc02a0e: 89a6 mv s3,s1 + 3bc02a10: e311 bnez a4,3bc02a14 + 3bc02a12: 4981 li s3,0 + 3bc02a14: 02042023 sw zero,32(s0) + 3bc02a18: 05040913 addi s2,s0,80 + 3bc02a1c: 25040a13 addi s4,s0,592 + 3bc02a20: 4a85 li s5,1 + 3bc02a22: 07590823 sb s5,112(s2) + 3bc02a26: 854a mv a0,s2 + 3bc02a28: fc600593 li a1,-58 + 3bc02a2c: 08090913 addi s2,s2,128 + 3bc02a30: f85ff0ef jal ra,3bc029b4 + 3bc02a34: ff4917e3 bne s2,s4,3bc02a22 + 3bc02a38: 00098663 beqz s3,3bc02a44 + 3bc02a3c: 0289b783 ld a5,40(s3) + 3bc02a40: 8522 mv a0,s0 + 3bc02a42: 9782 jalr a5 + 3bc02a44: 8522 mv a0,s0 + 3bc02a46: e95ff0ef jal ra,3bc028da + 3bc02a4a: 6c9c ld a5,24(s1) + 3bc02a4c: 8522 mv a0,s0 + 3bc02a4e: 9782 jalr a5 + 3bc02a50: 8522 mv a0,s0 + 3bc02a52: 4581 li a1,0 + 3bc02a54: 106010ef jal ra,3bc03b5a + 3bc02a58: 4501 li a0,0 + 3bc02a5a: 04042423 sw zero,72(s0) + 3bc02a5e: 02042023 sw zero,32(s0) + 3bc02a62: 24040823 sb zero,592(s0) + 3bc02a66: 70e2 ld ra,56(sp) + 3bc02a68: 7442 ld s0,48(sp) + 3bc02a6a: 74a2 ld s1,40(sp) + 3bc02a6c: 7902 ld s2,32(sp) + 3bc02a6e: 69e2 ld s3,24(sp) + 3bc02a70: 6a42 ld s4,16(sp) + 3bc02a72: 6aa2 ld s5,8(sp) + 3bc02a74: 6121 addi sp,sp,64 + 3bc02a76: 8082 ret + 3bc02a78: 5535 li a0,-19 + 3bc02a7a: b7f5 j 3bc02a66 + +000000003bc02a7c : + 3bc02a7c: 1101 addi sp,sp,-32 + 3bc02a7e: e822 sd s0,16(sp) + 3bc02a80: e426 sd s1,8(sp) + 3bc02a82: ec06 sd ra,24(sp) + 3bc02a84: 842e mv s0,a1 + 3bc02a86: 84aa mv s1,a0 + 3bc02a88: cc5fe0ef jal ra,3bc0174c + 3bc02a8c: 2501 sext.w a0,a0 + 3bc02a8e: 8d41 or a0,a0,s0 + 3bc02a90: 6442 ld s0,16(sp) + 3bc02a92: 60e2 ld ra,24(sp) + 3bc02a94: 85a6 mv a1,s1 + 3bc02a96: 64a2 ld s1,8(sp) + 3bc02a98: 6105 addi sp,sp,32 + 3bc02a9a: cb9fe06f j 3bc01752 + +000000003bc02a9e : + 3bc02a9e: 1101 addi sp,sp,-32 + 3bc02aa0: e822 sd s0,16(sp) + 3bc02aa2: ec06 sd ra,24(sp) + 3bc02aa4: 842a mv s0,a0 + 3bc02aa6: e42e sd a1,8(sp) + 3bc02aa8: ca5fe0ef jal ra,3bc0174c + 3bc02aac: 65a2 ld a1,8(sp) + 3bc02aae: 60e2 ld ra,24(sp) + 3bc02ab0: 2501 sext.w a0,a0 + 3bc02ab2: fff5c793 not a5,a1 + 3bc02ab6: 85a2 mv a1,s0 + 3bc02ab8: 6442 ld s0,16(sp) + 3bc02aba: 8d7d and a0,a0,a5 + 3bc02abc: 6105 addi sp,sp,32 + 3bc02abe: c95fe06f j 3bc01752 + +000000003bc02ac2 : + 3bc02ac2: 1101 addi sp,sp,-32 + 3bc02ac4: e426 sd s1,8(sp) + 3bc02ac6: 00011497 auipc s1,0x11 + 3bc02aca: cf248493 addi s1,s1,-782 # 3bc137b8 + 3bc02ace: 6088 ld a0,0(s1) + 3bc02ad0: e822 sd s0,16(sp) + 3bc02ad2: 6405 lui s0,0x1 + 3bc02ad4: 80440413 addi s0,s0,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02ad8: 4585 li a1,1 + 3bc02ada: 9522 add a0,a0,s0 + 3bc02adc: ec06 sd ra,24(sp) + 3bc02ade: f9fff0ef jal ra,3bc02a7c + 3bc02ae2: 4529 li a0,10 + 3bc02ae4: ed0fd0ef jal ra,3bc001b4 + 3bc02ae8: 6088 ld a0,0(s1) + 3bc02aea: 4585 li a1,1 + 3bc02aec: 9522 add a0,a0,s0 + 3bc02aee: fb1ff0ef jal ra,3bc02a9e + 3bc02af2: 60e2 ld ra,24(sp) + 3bc02af4: 6442 ld s0,16(sp) + 3bc02af6: 64a2 ld s1,8(sp) + 3bc02af8: 4501 li a0,0 + 3bc02afa: 6105 addi sp,sp,32 + 3bc02afc: 8082 ret + +000000003bc02afe : + 3bc02afe: 7179 addi sp,sp,-48 + 3bc02b00: f022 sd s0,32(sp) + 3bc02b02: ec26 sd s1,24(sp) + 3bc02b04: e84a sd s2,16(sp) + 3bc02b06: e44e sd s3,8(sp) + 3bc02b08: f406 sd ra,40(sp) + 3bc02b0a: 892a mv s2,a0 + 3bc02b0c: 89ae mv s3,a1 + 3bc02b0e: 84b2 mv s1,a2 + 3bc02b10: 4401 li s0,0 + 3bc02b12: 00941b63 bne s0,s1,3bc02b28 + 3bc02b16: fc400513 li a0,-60 + 3bc02b1a: 70a2 ld ra,40(sp) + 3bc02b1c: 7402 ld s0,32(sp) + 3bc02b1e: 64e2 ld s1,24(sp) + 3bc02b20: 6942 ld s2,16(sp) + 3bc02b22: 69a2 ld s3,8(sp) + 3bc02b24: 6145 addi sp,sp,48 + 3bc02b26: 8082 ret + 3bc02b28: 854a mv a0,s2 + 3bc02b2a: c23fe0ef jal ra,3bc0174c + 3bc02b2e: 2501 sext.w a0,a0 + 3bc02b30: 01357533 and a0,a0,s3 + 3bc02b34: e511 bnez a0,3bc02b40 + 3bc02b36: 4505 li a0,1 + 3bc02b38: e52fd0ef jal ra,3bc0018a + 3bc02b3c: 2405 addiw s0,s0,1 + 3bc02b3e: bfd1 j 3bc02b12 + 3bc02b40: 4501 li a0,0 + 3bc02b42: bfe1 j 3bc02b1a + +000000003bc02b44 : + 3bc02b44: 1101 addi sp,sp,-32 + 3bc02b46: e426 sd s1,8(sp) + 3bc02b48: 00011497 auipc s1,0x11 + 3bc02b4c: c7048493 addi s1,s1,-912 # 3bc137b8 + 3bc02b50: e822 sd s0,16(sp) + 3bc02b52: 842a mv s0,a0 + 3bc02b54: 6088 ld a0,0(s1) + 3bc02b56: 6609 lui a2,0x2 + 3bc02b58: 71060613 addi a2,a2,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc02b5c: 800005b7 lui a1,0x80000 + 3bc02b60: 0541 addi a0,a0,16 + 3bc02b62: ec06 sd ra,24(sp) + 3bc02b64: f9bff0ef jal ra,3bc02afe + 3bc02b68: c919 beqz a0,3bc02b7e + 3bc02b6a: 00008597 auipc a1,0x8 + 3bc02b6e: 58658593 addi a1,a1,1414 # 3bc0b0f0 <__func__.3> + 3bc02b72: 00008517 auipc a0,0x8 + 3bc02b76: 37650513 addi a0,a0,886 # 3bc0aee8 <__func__.5+0x30> + 3bc02b7a: fdefd0ef jal ra,3bc00358 + 3bc02b7e: 608c ld a1,0(s1) + 3bc02b80: 0064151b slliw a0,s0,0x6 + 3bc02b84: 02056513 ori a0,a0,32 + 3bc02b88: 05c1 addi a1,a1,16 + 3bc02b8a: 2501 sext.w a0,a0 + 3bc02b8c: bc7fe0ef jal ra,3bc01752 + 3bc02b90: 06400413 li s0,100 + 3bc02b94: 6088 ld a0,0(s1) + 3bc02b96: 0541 addi a0,a0,16 + 3bc02b98: bb5fe0ef jal ra,3bc0174c + 3bc02b9c: 0005061b sext.w a2,a0 + 3bc02ba0: 02057513 andi a0,a0,32 + 3bc02ba4: cd09 beqz a0,3bc02bbe + 3bc02ba6: 347d addiw s0,s0,-1 + 3bc02ba8: e015 bnez s0,3bc02bcc + 3bc02baa: 00008597 auipc a1,0x8 + 3bc02bae: 54658593 addi a1,a1,1350 # 3bc0b0f0 <__func__.3> + 3bc02bb2: 00008517 auipc a0,0x8 + 3bc02bb6: 35650513 addi a0,a0,854 # 3bc0af08 <__func__.5+0x50> + 3bc02bba: f9efd0ef jal ra,3bc00358 + 3bc02bbe: 6442 ld s0,16(sp) + 3bc02bc0: 60e2 ld ra,24(sp) + 3bc02bc2: 64a2 ld s1,8(sp) + 3bc02bc4: 4505 li a0,1 + 3bc02bc6: 6105 addi sp,sp,32 + 3bc02bc8: dc2fd06f j 3bc0018a + 3bc02bcc: 4505 li a0,1 + 3bc02bce: dbcfd0ef jal ra,3bc0018a + 3bc02bd2: b7c9 j 3bc02b94 + +000000003bc02bd4 : + 3bc02bd4: 1101 addi sp,sp,-32 + 3bc02bd6: e426 sd s1,8(sp) + 3bc02bd8: e04a sd s2,0(sp) + 3bc02bda: ec06 sd ra,24(sp) + 3bc02bdc: e822 sd s0,16(sp) + 3bc02bde: 07154403 lbu s0,113(a0) + 3bc02be2: 84aa mv s1,a0 + 3bc02be4: 60000913 li s2,1536 + 3bc02be8: 883d andi s0,s0,15 + 3bc02bea: e019 bnez s0,3bc02bf0 + 3bc02bec: 10000913 li s2,256 + 3bc02bf0: 8526 mv a0,s1 + 3bc02bf2: dc3ff0ef jal ra,3bc029b4 + 3bc02bf6: 6505 lui a0,0x1 + 3bc02bf8: 91850513 addi a0,a0,-1768 # 918 <__BSS_SIZE__-0x52f8> + 3bc02bfc: 0416 slli s0,s0,0x5 + 3bc02bfe: 942a add s0,s0,a0 + 3bc02c00: 00011517 auipc a0,0x11 + 3bc02c04: bb853503 ld a0,-1096(a0) # 3bc137b8 + 3bc02c08: 9522 add a0,a0,s0 + 3bc02c0a: b43fe0ef jal ra,3bc0174c + 3bc02c0e: 3c05350b extu a0,a0,15,0 + 3bc02c12: 050a slli a0,a0,0x2 + 3bc02c14: 01257963 bgeu a0,s2,3bc02c26 + 3bc02c18: 6442 ld s0,16(sp) + 3bc02c1a: 5ca8 lw a0,120(s1) + 3bc02c1c: 60e2 ld ra,24(sp) + 3bc02c1e: 64a2 ld s1,8(sp) + 3bc02c20: 6902 ld s2,0(sp) + 3bc02c22: 6105 addi sp,sp,32 + 3bc02c24: b705 j 3bc02b44 + 3bc02c26: 60e2 ld ra,24(sp) + 3bc02c28: 6442 ld s0,16(sp) + 3bc02c2a: 64a2 ld s1,8(sp) + 3bc02c2c: 6902 ld s2,0(sp) + 3bc02c2e: 6105 addi sp,sp,32 + 3bc02c30: 8082 ret + +000000003bc02c32 : + 3bc02c32: 27052783 lw a5,624(a0) + 3bc02c36: cba1 beqz a5,3bc02c86 + 3bc02c38: 1101 addi sp,sp,-32 + 3bc02c3a: e822 sd s0,16(sp) + 3bc02c3c: e426 sd s1,8(sp) + 3bc02c3e: e04a sd s2,0(sp) + 3bc02c40: ec06 sd ra,24(sp) + 3bc02c42: 842a mv s0,a0 + 3bc02c44: 26052823 sw zero,624(a0) + 3bc02c48: 0d050493 addi s1,a0,208 + 3bc02c4c: 25050913 addi s2,a0,592 + 3bc02c50: 6c9c ld a5,24(s1) + 3bc02c52: c791 beqz a5,3bc02c5e + 3bc02c54: fc600593 li a1,-58 + 3bc02c58: 8526 mv a0,s1 + 3bc02c5a: f7bff0ef jal ra,3bc02bd4 + 3bc02c5e: 08048493 addi s1,s1,128 + 3bc02c62: ff2497e3 bne s1,s2,3bc02c50 + 3bc02c66: 7c1c ld a5,56(s0) + 3bc02c68: 779c ld a5,40(a5) + 3bc02c6a: cb81 beqz a5,3bc02c7a + 3bc02c6c: 8522 mv a0,s0 + 3bc02c6e: 6442 ld s0,16(sp) + 3bc02c70: 60e2 ld ra,24(sp) + 3bc02c72: 64a2 ld s1,8(sp) + 3bc02c74: 6902 ld s2,0(sp) + 3bc02c76: 6105 addi sp,sp,32 + 3bc02c78: 8782 jr a5 + 3bc02c7a: 60e2 ld ra,24(sp) + 3bc02c7c: 6442 ld s0,16(sp) + 3bc02c7e: 64a2 ld s1,8(sp) + 3bc02c80: 6902 ld s2,0(sp) + 3bc02c82: 6105 addi sp,sp,32 + 3bc02c84: 8082 ret + 3bc02c86: 8082 ret + +000000003bc02c88 : + 3bc02c88: 1101 addi sp,sp,-32 + 3bc02c8a: e822 sd s0,16(sp) + 3bc02c8c: 00011417 auipc s0,0x11 + 3bc02c90: b2c40413 addi s0,s0,-1236 # 3bc137b8 + 3bc02c94: 6008 ld a0,0(s0) + 3bc02c96: 6609 lui a2,0x2 + 3bc02c98: 71060613 addi a2,a2,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc02c9c: 800005b7 lui a1,0x80000 + 3bc02ca0: 0541 addi a0,a0,16 + 3bc02ca2: ec06 sd ra,24(sp) + 3bc02ca4: e426 sd s1,8(sp) + 3bc02ca6: e59ff0ef jal ra,3bc02afe + 3bc02caa: c919 beqz a0,3bc02cc0 + 3bc02cac: 00008597 auipc a1,0x8 + 3bc02cb0: 45c58593 addi a1,a1,1116 # 3bc0b108 <__func__.4> + 3bc02cb4: 00008517 auipc a0,0x8 + 3bc02cb8: 23450513 addi a0,a0,564 # 3bc0aee8 <__func__.5+0x30> + 3bc02cbc: e9cfd0ef jal ra,3bc00358 + 3bc02cc0: 600c ld a1,0(s0) + 3bc02cc2: 40000513 li a0,1024 + 3bc02cc6: 018004b7 lui s1,0x1800 + 3bc02cca: 02458593 addi a1,a1,36 + 3bc02cce: a85fe0ef jal ra,3bc01752 + 3bc02cd2: 600c ld a1,0(s0) + 3bc02cd4: 00400537 lui a0,0x400 + 3bc02cd8: 40050513 addi a0,a0,1024 # 400400 <__BSS_SIZE__+0x3fa7f0> + 3bc02cdc: 02858593 addi a1,a1,40 + 3bc02ce0: a73fe0ef jal ra,3bc01752 + 3bc02ce4: 600c ld a1,0(s0) + 3bc02ce6: 44048513 addi a0,s1,1088 # 1800440 <__BSS_SIZE__+0x17fa830> + 3bc02cea: 10458593 addi a1,a1,260 + 3bc02cee: a65fe0ef jal ra,3bc01752 + 3bc02cf2: 600c ld a1,0(s0) + 3bc02cf4: 5c048513 addi a0,s1,1472 + 3bc02cf8: 10858593 addi a1,a1,264 + 3bc02cfc: a57fe0ef jal ra,3bc01752 + 3bc02d00: 600c ld a1,0(s0) + 3bc02d02: 74048513 addi a0,s1,1856 + 3bc02d06: 06400493 li s1,100 + 3bc02d0a: 10c58593 addi a1,a1,268 + 3bc02d0e: a45fe0ef jal ra,3bc01752 + 3bc02d12: 600c ld a1,0(s0) + 3bc02d14: 43000513 li a0,1072 + 3bc02d18: 05c1 addi a1,a1,16 + 3bc02d1a: a39fe0ef jal ra,3bc01752 + 3bc02d1e: 6008 ld a0,0(s0) + 3bc02d20: 0541 addi a0,a0,16 + 3bc02d22: a2bfe0ef jal ra,3bc0174c + 3bc02d26: 0005061b sext.w a2,a0 + 3bc02d2a: 03057513 andi a0,a0,48 + 3bc02d2e: c50d beqz a0,3bc02d58 + 3bc02d30: 34fd addiw s1,s1,-1 + 3bc02d32: ec99 bnez s1,3bc02d50 + 3bc02d34: 6442 ld s0,16(sp) + 3bc02d36: 60e2 ld ra,24(sp) + 3bc02d38: 64a2 ld s1,8(sp) + 3bc02d3a: 00008597 auipc a1,0x8 + 3bc02d3e: 3ce58593 addi a1,a1,974 # 3bc0b108 <__func__.4> + 3bc02d42: 00008517 auipc a0,0x8 + 3bc02d46: 1f650513 addi a0,a0,502 # 3bc0af38 <__func__.5+0x80> + 3bc02d4a: 6105 addi sp,sp,32 + 3bc02d4c: e0cfd06f j 3bc00358 + 3bc02d50: 4505 li a0,1 + 3bc02d52: c38fd0ef jal ra,3bc0018a + 3bc02d56: b7e1 j 3bc02d1e + 3bc02d58: 60e2 ld ra,24(sp) + 3bc02d5a: 6442 ld s0,16(sp) + 3bc02d5c: 64a2 ld s1,8(sp) + 3bc02d5e: 6105 addi sp,sp,32 + 3bc02d60: 8082 ret + +000000003bc02d62 <_dwc2_ep_disable.isra.0>: + 3bc02d62: 00011717 auipc a4,0x11 + 3bc02d66: a5e73703 ld a4,-1442(a4) # 3bc137c0 + 3bc02d6a: 05070713 addi a4,a4,80 + 3bc02d6e: 07154683 lbu a3,113(a0) + 3bc02d72: 00e51c63 bne a0,a4,3bc02d8a <_dwc2_ep_disable.isra.0+0x28> + 3bc02d76: 00008597 auipc a1,0x8 + 3bc02d7a: 34a58593 addi a1,a1,842 # 3bc0b0c0 <__func__.1> + 3bc02d7e: 00008517 auipc a0,0x8 + 3bc02d82: 1ea50513 addi a0,a0,490 # 3bc0af68 <__func__.5+0xb0> + 3bc02d86: dd2fd06f j 3bc00358 + 3bc02d8a: 7139 addi sp,sp,-64 + 3bc02d8c: f04a sd s2,32(sp) + 3bc02d8e: ec4e sd s3,24(sp) + 3bc02d90: 00011917 auipc s2,0x11 + 3bc02d94: a2890913 addi s2,s2,-1496 # 3bc137b8 + 3bc02d98: fc06 sd ra,56(sp) + 3bc02d9a: f822 sd s0,48(sp) + 3bc02d9c: f426 sd s1,40(sp) + 3bc02d9e: e852 sd s4,16(sp) + 3bc02da0: e456 sd s5,8(sp) + 3bc02da2: fc76b70b extu a4,a3,63,7 + 3bc02da6: 00093983 ld s3,0(s2) + 3bc02daa: 00f6f793 andi a5,a3,15 + 3bc02dae: 0e070563 beqz a4,3bc02e98 <_dwc2_ep_disable.isra.0+0x136> + 3bc02db2: 04878793 addi a5,a5,72 + 3bc02db6: 0796 slli a5,a5,0x5 + 3bc02db8: 99be add s3,s3,a5 + 3bc02dba: 84aa mv s1,a0 + 3bc02dbc: 854e mv a0,s3 + 3bc02dbe: 98ffe0ef jal ra,3bc0174c + 3bc02dc2: 00050a1b sext.w s4,a0 + 3bc02dc6: 080a5a63 bgez s4,3bc02e5a <_dwc2_ep_disable.isra.0+0xf8> + 3bc02dca: 0714c783 lbu a5,113(s1) + 3bc02dce: 00093503 ld a0,0(s2) + 3bc02dd2: fc77b70b extu a4,a5,63,7 + 3bc02dd6: 00f7f413 andi s0,a5,15 + 3bc02dda: c371 beqz a4,3bc02e9e <_dwc2_ep_disable.isra.0+0x13c> + 3bc02ddc: 04840413 addi s0,s0,72 + 3bc02de0: 0416 slli s0,s0,0x5 + 3bc02de2: 00850ab3 add s5,a0,s0 + 3bc02de6: 0421 addi s0,s0,8 + 3bc02de8: 942a add s0,s0,a0 + 3bc02dea: 080005b7 lui a1,0x8000 + 3bc02dee: 8556 mv a0,s5 + 3bc02df0: c8dff0ef jal ra,3bc02a7c + 3bc02df4: 06400613 li a2,100 + 3bc02df8: 04000593 li a1,64 + 3bc02dfc: 8522 mv a0,s0 + 3bc02dfe: d01ff0ef jal ra,3bc02afe + 3bc02e02: c919 beqz a0,3bc02e18 <_dwc2_ep_disable.isra.0+0xb6> + 3bc02e04: 00008597 auipc a1,0x8 + 3bc02e08: 2a458593 addi a1,a1,676 # 3bc0b0a8 <__func__.0> + 3bc02e0c: 00008517 auipc a0,0x8 + 3bc02e10: 17450513 addi a0,a0,372 # 3bc0af80 <__func__.5+0xc8> + 3bc02e14: d44fd0ef jal ra,3bc00358 + 3bc02e18: 480005b7 lui a1,0x48000 + 3bc02e1c: 8556 mv a0,s5 + 3bc02e1e: c5fff0ef jal ra,3bc02a7c + 3bc02e22: 06400613 li a2,100 + 3bc02e26: 4589 li a1,2 + 3bc02e28: 8522 mv a0,s0 + 3bc02e2a: cd5ff0ef jal ra,3bc02afe + 3bc02e2e: c919 beqz a0,3bc02e44 <_dwc2_ep_disable.isra.0+0xe2> + 3bc02e30: 00008597 auipc a1,0x8 + 3bc02e34: 27858593 addi a1,a1,632 # 3bc0b0a8 <__func__.0> + 3bc02e38: 00008517 auipc a0,0x8 + 3bc02e3c: 18850513 addi a0,a0,392 # 3bc0afc0 <__func__.5+0x108> + 3bc02e40: d18fd0ef jal ra,3bc00358 + 3bc02e44: 4589 li a1,2 + 3bc02e46: 8522 mv a0,s0 + 3bc02e48: c35ff0ef jal ra,3bc02a7c + 3bc02e4c: 07148783 lb a5,113(s1) + 3bc02e50: 0a07d163 bgez a5,3bc02ef2 <_dwc2_ep_disable.isra.0+0x190> + 3bc02e54: 5ca8 lw a0,120(s1) + 3bc02e56: cefff0ef jal ra,3bc02b44 + 3bc02e5a: 7fff8537 lui a0,0x7fff8 + 3bc02e5e: 157d addi a0,a0,-1 + 3bc02e60: 00aa7a33 and s4,s4,a0 + 3bc02e64: 08000537 lui a0,0x8000 + 3bc02e68: 85ce mv a1,s3 + 3bc02e6a: 00aa6533 or a0,s4,a0 + 3bc02e6e: 8e5fe0ef jal ra,3bc01752 + 3bc02e72: 8526 mv a0,s1 + 3bc02e74: fc600593 li a1,-58 + 3bc02e78: d5dff0ef jal ra,3bc02bd4 + 3bc02e7c: 4785 li a5,1 + 3bc02e7e: 06f48823 sb a5,112(s1) + 3bc02e82: 70e2 ld ra,56(sp) + 3bc02e84: 7442 ld s0,48(sp) + 3bc02e86: 0404b023 sd zero,64(s1) + 3bc02e8a: 7902 ld s2,32(sp) + 3bc02e8c: 74a2 ld s1,40(sp) + 3bc02e8e: 69e2 ld s3,24(sp) + 3bc02e90: 6a42 ld s4,16(sp) + 3bc02e92: 6aa2 ld s5,8(sp) + 3bc02e94: 6121 addi sp,sp,64 + 3bc02e96: 8082 ret + 3bc02e98: 05878793 addi a5,a5,88 + 3bc02e9c: bf29 j 3bc02db6 <_dwc2_ep_disable.isra.0+0x54> + 3bc02e9e: 05840413 addi s0,s0,88 + 3bc02ea2: 0416 slli s0,s0,0x5 + 3bc02ea4: 00850ab3 add s5,a0,s0 + 3bc02ea8: 0421 addi s0,s0,8 + 3bc02eaa: 942a add s0,s0,a0 + 3bc02eac: 0551 addi a0,a0,20 + 3bc02eae: 89ffe0ef jal ra,3bc0174c + 3bc02eb2: 08057513 andi a0,a0,128 + 3bc02eb6: e919 bnez a0,3bc02ecc <_dwc2_ep_disable.isra.0+0x16a> + 3bc02eb8: 00093503 ld a0,0(s2) + 3bc02ebc: 6785 lui a5,0x1 + 3bc02ebe: 80478793 addi a5,a5,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02ec2: 20000593 li a1,512 + 3bc02ec6: 953e add a0,a0,a5 + 3bc02ec8: bb5ff0ef jal ra,3bc02a7c + 3bc02ecc: 00093503 ld a0,0(s2) + 3bc02ed0: 06400613 li a2,100 + 3bc02ed4: 08000593 li a1,128 + 3bc02ed8: 0551 addi a0,a0,20 + 3bc02eda: c25ff0ef jal ra,3bc02afe + 3bc02ede: dd0d beqz a0,3bc02e18 <_dwc2_ep_disable.isra.0+0xb6> + 3bc02ee0: 00008597 auipc a1,0x8 + 3bc02ee4: 1c858593 addi a1,a1,456 # 3bc0b0a8 <__func__.0> + 3bc02ee8: 00008517 auipc a0,0x8 + 3bc02eec: 0b850513 addi a0,a0,184 # 3bc0afa0 <__func__.5+0xe8> + 3bc02ef0: b715 j 3bc02e14 <_dwc2_ep_disable.isra.0+0xb2> + 3bc02ef2: 00093503 ld a0,0(s2) + 3bc02ef6: 6785 lui a5,0x1 + 3bc02ef8: 80478793 addi a5,a5,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02efc: 40000593 li a1,1024 + 3bc02f00: 953e add a0,a0,a5 + 3bc02f02: b7bff0ef jal ra,3bc02a7c + 3bc02f06: bf91 j 3bc02e5a <_dwc2_ep_disable.isra.0+0xf8> + +000000003bc02f08 : + 3bc02f08: cd09 beqz a0,3bc02f22 + 3bc02f0a: 6138 ld a4,64(a0) + 3bc02f0c: 57a9 li a5,-22 + 3bc02f0e: cb19 beqz a4,3bc02f24 + 3bc02f10: 1141 addi sp,sp,-16 + 3bc02f12: e406 sd ra,8(sp) + 3bc02f14: e4fff0ef jal ra,3bc02d62 <_dwc2_ep_disable.isra.0> + 3bc02f18: 60a2 ld ra,8(sp) + 3bc02f1a: 4781 li a5,0 + 3bc02f1c: 853e mv a0,a5 + 3bc02f1e: 0141 addi sp,sp,16 + 3bc02f20: 8082 ret + 3bc02f22: 57a9 li a5,-22 + 3bc02f24: 853e mv a0,a5 + 3bc02f26: 8082 ret + +000000003bc02f28 : + 3bc02f28: 7139 addi sp,sp,-64 + 3bc02f2a: f426 sd s1,40(sp) + 3bc02f2c: f04a sd s2,32(sp) + 3bc02f2e: ec4e sd s3,24(sp) + 3bc02f30: 84aa mv s1,a0 + 3bc02f32: 04053983 ld s3,64(a0) + 3bc02f36: 892e mv s2,a1 + 3bc02f38: 05050513 addi a0,a0,80 + 3bc02f3c: fca00593 li a1,-54 + 3bc02f40: fc06 sd ra,56(sp) + 3bc02f42: f822 sd s0,48(sp) + 3bc02f44: e852 sd s4,16(sp) + 3bc02f46: e456 sd s5,8(sp) + 3bc02f48: c8dff0ef jal ra,3bc02bd4 + 3bc02f4c: 8526 mv a0,s1 + 3bc02f4e: 98dff0ef jal ra,3bc028da + 3bc02f52: 00011417 auipc s0,0x11 + 3bc02f56: 86640413 addi s0,s0,-1946 # 3bc137b8 + 3bc02f5a: 22091863 bnez s2,3bc0318a + 3bc02f5e: 6008 ld a0,0(s0) + 3bc02f60: 04050513 addi a0,a0,64 + 3bc02f64: fe8fe0ef jal ra,3bc0174c + 3bc02f68: 600c ld a1,0(s0) + 3bc02f6a: 6791 lui a5,0x4 + 3bc02f6c: 3c05350b extu a0,a0,15,0 + 3bc02f70: 20978793 addi a5,a5,521 # 4209 <__BSS_SIZE__-0x1a07> + 3bc02f74: 05c1 addi a1,a1,16 + 3bc02f76: 06a7ee63 bltu a5,a0,3bc02ff2 + 3bc02f7a: 4505 li a0,1 + 3bc02f7c: fd6fe0ef jal ra,3bc01752 + 3bc02f80: 03300a13 li s4,51 + 3bc02f84: 4505 li a0,1 + 3bc02f86: a04fd0ef jal ra,3bc0018a + 3bc02f8a: 6008 ld a0,0(s0) + 3bc02f8c: 3a7d addiw s4,s4,-1 + 3bc02f8e: 0541 addi a0,a0,16 + 3bc02f90: fbcfe0ef jal ra,3bc0174c + 3bc02f94: 0005061b sext.w a2,a0 + 3bc02f98: 020a1463 bnez s4,3bc02fc0 + 3bc02f9c: 00008597 auipc a1,0x8 + 3bc02fa0: 13c58593 addi a1,a1,316 # 3bc0b0d8 <__func__.2> + 3bc02fa4: 00008517 auipc a0,0x8 + 3bc02fa8: 03c50513 addi a0,a0,60 # 3bc0afe0 <__func__.5+0x128> + 3bc02fac: 7442 ld s0,48(sp) + 3bc02fae: 70e2 ld ra,56(sp) + 3bc02fb0: 74a2 ld s1,40(sp) + 3bc02fb2: 7902 ld s2,32(sp) + 3bc02fb4: 69e2 ld s3,24(sp) + 3bc02fb6: 6a42 ld s4,16(sp) + 3bc02fb8: 6aa2 ld s5,8(sp) + 3bc02fba: 6121 addi sp,sp,64 + 3bc02fbc: b9cfd06f j 3bc00358 + 3bc02fc0: 8a05 andi a2,a2,1 + 3bc02fc2: f269 bnez a2,3bc02f84 + 3bc02fc4: 03300a13 li s4,51 + 3bc02fc8: 4505 li a0,1 + 3bc02fca: 9c0fd0ef jal ra,3bc0018a + 3bc02fce: 6008 ld a0,0(s0) + 3bc02fd0: 3a7d addiw s4,s4,-1 + 3bc02fd2: 0541 addi a0,a0,16 + 3bc02fd4: f78fe0ef jal ra,3bc0174c + 3bc02fd8: 0005061b sext.w a2,a0 + 3bc02fdc: 060a1963 bnez s4,3bc0304e + 3bc02fe0: 00008597 auipc a1,0x8 + 3bc02fe4: 0f858593 addi a1,a1,248 # 3bc0b0d8 <__func__.2> + 3bc02fe8: 00008517 auipc a0,0x8 + 3bc02fec: 04850513 addi a0,a0,72 # 3bc0b030 <__func__.5+0x178> + 3bc02ff0: bf75 j 3bc02fac + 3bc02ff2: 4505 li a0,1 + 3bc02ff4: f5efe0ef jal ra,3bc01752 + 3bc02ff8: 03300a93 li s5,51 + 3bc02ffc: 20000a37 lui s4,0x20000 + 3bc03000: 4505 li a0,1 + 3bc03002: 988fd0ef jal ra,3bc0018a + 3bc03006: 6008 ld a0,0(s0) + 3bc03008: 3afd addiw s5,s5,-1 + 3bc0300a: 0541 addi a0,a0,16 + 3bc0300c: f40fe0ef jal ra,3bc0174c + 3bc03010: 0005061b sext.w a2,a0 + 3bc03014: 000a9b63 bnez s5,3bc0302a + 3bc03018: 00008597 auipc a1,0x8 + 3bc0301c: 0c058593 addi a1,a1,192 # 3bc0b0d8 <__func__.2> + 3bc03020: 00008517 auipc a0,0x8 + 3bc03024: fe850513 addi a0,a0,-24 # 3bc0b008 <__func__.5+0x150> + 3bc03028: b751 j 3bc02fac + 3bc0302a: 01467633 and a2,a2,s4 + 3bc0302e: 2601 sext.w a2,a2 + 3bc03030: da61 beqz a2,3bc03000 + 3bc03032: 6008 ld a0,0(s0) + 3bc03034: 0541 addi a0,a0,16 + 3bc03036: f16fe0ef jal ra,3bc0174c + 3bc0303a: 600c ld a1,0(s0) + 3bc0303c: 2501 sext.w a0,a0 + 3bc0303e: 9979 andi a0,a0,-2 + 3bc03040: 01456533 or a0,a0,s4 + 3bc03044: 05c1 addi a1,a1,16 + 3bc03046: 2501 sext.w a0,a0 + 3bc03048: f0afe0ef jal ra,3bc01752 + 3bc0304c: bfa5 j 3bc02fc4 + 3bc0304e: f6065de3 bgez a2,3bc02fc8 + 3bc03052: 0309a503 lw a0,48(s3) + 3bc03056: e509 bnez a0,3bc03060 + 3bc03058: 40081537 lui a0,0x40081 + 3bc0305c: 40f50513 addi a0,a0,1039 # 4008140f <__BL2_END__+0x446dbff> + 3bc03060: 600c ld a1,0(s0) + 3bc03062: 05b1 addi a1,a1,12 + 3bc03064: eeefe0ef jal ra,3bc01752 + 3bc03068: c21ff0ef jal ra,3bc02c88 + 3bc0306c: 02091063 bnez s2,3bc0308c + 3bc03070: 6008 ld a0,0(s0) + 3bc03072: 6985 lui s3,0x1 + 3bc03074: 80498993 addi s3,s3,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc03078: 954e add a0,a0,s3 + 3bc0307a: ed2fe0ef jal ra,3bc0174c + 3bc0307e: 600c ld a1,0(s0) + 3bc03080: 2501 sext.w a0,a0 + 3bc03082: 00256513 ori a0,a0,2 + 3bc03086: 95ce add a1,a1,s3 + 3bc03088: ecafe0ef jal ra,3bc01752 + 3bc0308c: 600c ld a1,0(s0) + 3bc0308e: 6985 lui s3,0x1 + 3bc03090: 80098a13 addi s4,s3,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc03094: 95d2 add a1,a1,s4 + 3bc03096: 00040537 lui a0,0x40 + 3bc0309a: eb8fe0ef jal ra,3bc01752 + 3bc0309e: 600c ld a1,0(s0) + 3bc030a0: 557d li a0,-1 + 3bc030a2: 0591 addi a1,a1,4 + 3bc030a4: eaefe0ef jal ra,3bc01752 + 3bc030a8: 600c ld a1,0(s0) + 3bc030aa: 557d li a0,-1 + 3bc030ac: 05d1 addi a1,a1,20 + 3bc030ae: ea4fe0ef jal ra,3bc01752 + 3bc030b2: 600c ld a1,0(s0) + 3bc030b4: 800c4537 lui a0,0x800c4 + 3bc030b8: 81050513 addi a0,a0,-2032 # ffffffff800c3810 <__BL2_END__+0xffffffff444b0000> + 3bc030bc: 05e1 addi a1,a1,24 + 3bc030be: e94fe0ef jal ra,3bc01752 + 3bc030c2: 600c ld a1,0(s0) + 3bc030c4: 4505 li a0,1 + 3bc030c6: 05a1 addi a1,a1,8 + 3bc030c8: e8afe0ef jal ra,3bc01752 + 3bc030cc: 600c ld a1,0(s0) + 3bc030ce: 81098793 addi a5,s3,-2032 + 3bc030d2: 4535 li a0,13 + 3bc030d4: 95be add a1,a1,a5 + 3bc030d6: e7cfe0ef jal ra,3bc01752 + 3bc030da: 600c ld a1,0(s0) + 3bc030dc: 81498793 addi a5,s3,-2028 + 3bc030e0: 4535 li a0,13 + 3bc030e2: 95be add a1,a1,a5 + 3bc030e4: e6efe0ef jal ra,3bc01752 + 3bc030e8: 600c ld a1,0(s0) + 3bc030ea: 81c98793 addi a5,s3,-2020 + 3bc030ee: 6541 lui a0,0x10 + 3bc030f0: 95be add a1,a1,a5 + 3bc030f2: 0505 addi a0,a0,1 + 3bc030f4: e5efe0ef jal ra,3bc01752 + 3bc030f8: 02091f63 bnez s2,3bc03136 + 3bc030fc: 6008 ld a0,0(s0) + 3bc030fe: 80498993 addi s3,s3,-2044 + 3bc03102: 954e add a0,a0,s3 + 3bc03104: e48fe0ef jal ra,3bc0174c + 3bc03108: 600c ld a1,0(s0) + 3bc0310a: 2501 sext.w a0,a0 + 3bc0310c: 01456533 or a0,a0,s4 + 3bc03110: 95ce add a1,a1,s3 + 3bc03112: e40fe0ef jal ra,3bc01752 + 3bc03116: 4529 li a0,10 + 3bc03118: 872fd0ef jal ra,3bc0018a + 3bc0311c: 6008 ld a0,0(s0) + 3bc0311e: 954e add a0,a0,s3 + 3bc03120: e2cfe0ef jal ra,3bc0174c + 3bc03124: 600c ld a1,0(s0) + 3bc03126: 77fd lui a5,0xfffff + 3bc03128: 2501 sext.w a0,a0 + 3bc0312a: 7ff78793 addi a5,a5,2047 # fffffffffffff7ff <__BL2_END__+0xffffffffc43ebfef> + 3bc0312e: 95ce add a1,a1,s3 + 3bc03130: 8d7d and a0,a0,a5 + 3bc03132: e20fe0ef jal ra,3bc01752 + 3bc03136: 8526 mv a0,s1 + 3bc03138: 7dc000ef jal ra,3bc03914 + 3bc0313c: 600c ld a1,0(s0) + 3bc0313e: 6785 lui a5,0x1 + 3bc03140: 90078793 addi a5,a5,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc03144: 95be add a1,a1,a5 + 3bc03146: 6521 lui a0,0x8 + 3bc03148: e0afe0ef jal ra,3bc01752 + 3bc0314c: 50000993 li s3,1280 + 3bc03150: 00091463 bnez s2,3bc03158 + 3bc03154: 50200993 li s3,1282 + 3bc03158: 6008 ld a0,0(s0) + 3bc0315a: 6485 lui s1,0x1 + 3bc0315c: 80448493 addi s1,s1,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc03160: 9526 add a0,a0,s1 + 3bc03162: deafe0ef jal ra,3bc0174c + 3bc03166: 600c ld a1,0(s0) + 3bc03168: 2501 sext.w a0,a0 + 3bc0316a: 00a9e533 or a0,s3,a0 + 3bc0316e: 95a6 add a1,a1,s1 + 3bc03170: de2fe0ef jal ra,3bc01752 + 3bc03174: 7442 ld s0,48(sp) + 3bc03176: 70e2 ld ra,56(sp) + 3bc03178: 74a2 ld s1,40(sp) + 3bc0317a: 7902 ld s2,32(sp) + 3bc0317c: 69e2 ld s3,24(sp) + 3bc0317e: 6a42 ld s4,16(sp) + 3bc03180: 6aa2 ld s5,8(sp) + 3bc03182: 450d li a0,3 + 3bc03184: 6121 addi sp,sp,64 + 3bc03186: 82efd06f j 3bc001b4 + 3bc0318a: 74fc ld a5,232(s1) + 3bc0318c: c789 beqz a5,3bc03196 + 3bc0318e: 0d048513 addi a0,s1,208 + 3bc03192: bd1ff0ef jal ra,3bc02d62 <_dwc2_ep_disable.isra.0> + 3bc03196: 1684b783 ld a5,360(s1) + 3bc0319a: c789 beqz a5,3bc031a4 + 3bc0319c: 15048513 addi a0,s1,336 + 3bc031a0: bc3ff0ef jal ra,3bc02d62 <_dwc2_ep_disable.isra.0> + 3bc031a4: 1e84b783 ld a5,488(s1) + 3bc031a8: ea0785e3 beqz a5,3bc03052 + 3bc031ac: 1d048513 addi a0,s1,464 + 3bc031b0: bb3ff0ef jal ra,3bc02d62 <_dwc2_ep_disable.isra.0> + 3bc031b4: bd79 j 3bc03052 + +000000003bc031b6 : + 3bc031b6: 7139 addi sp,sp,-64 + 3bc031b8: f822 sd s0,48(sp) + 3bc031ba: f426 sd s1,40(sp) + 3bc031bc: fc06 sd ra,56(sp) + 3bc031be: f04a sd s2,32(sp) + 3bc031c0: ec4e sd s3,24(sp) + 3bc031c2: e852 sd s4,16(sp) + 3bc031c4: e456 sd s5,8(sp) + 3bc031c6: 00010497 auipc s1,0x10 + 3bc031ca: 5fa4b483 ld s1,1530(s1) # 3bc137c0 + 3bc031ce: 5429 li s0,-22 + 3bc031d0: cd0d beqz a0,3bc0320a + 3bc031d2: 451c lw a5,8(a0) + 3bc031d4: 4705 li a4,1 + 3bc031d6: 5429 li s0,-22 + 3bc031d8: 37f9 addiw a5,a5,-2 + 3bc031da: 02f76863 bltu a4,a5,3bc0320a + 3bc031de: 691c ld a5,16(a0) + 3bc031e0: c78d beqz a5,3bc0320a + 3bc031e2: 7518 ld a4,40(a0) + 3bc031e4: c31d beqz a4,3bc0320a + 3bc031e6: 7118 ld a4,32(a0) + 3bc031e8: c30d beqz a4,3bc0320a + 3bc031ea: 6538 ld a4,72(a0) + 3bc031ec: cf19 beqz a4,3bc0320a + 3bc031ee: 6938 ld a4,80(a0) + 3bc031f0: cf09 beqz a4,3bc0320a + 3bc031f2: 5435 li s0,-19 + 3bc031f4: c899 beqz s1,3bc0320a + 3bc031f6: 7c98 ld a4,56(s1) + 3bc031f8: 5441 li s0,-16 + 3bc031fa: eb01 bnez a4,3bc0320a + 3bc031fc: fc88 sd a0,56(s1) + 3bc031fe: 8526 mv a0,s1 + 3bc03200: 9782 jalr a5 + 3bc03202: 842a mv s0,a0 + 3bc03204: cd09 beqz a0,3bc0321e + 3bc03206: 0204bc23 sd zero,56(s1) + 3bc0320a: 70e2 ld ra,56(sp) + 3bc0320c: 8522 mv a0,s0 + 3bc0320e: 7442 ld s0,48(sp) + 3bc03210: 74a2 ld s1,40(sp) + 3bc03212: 7902 ld s2,32(sp) + 3bc03214: 69e2 ld s3,24(sp) + 3bc03216: 6a42 ld s4,16(sp) + 3bc03218: 6aa2 ld s5,8(sp) + 3bc0321a: 6121 addi sp,sp,64 + 3bc0321c: 8082 ret + 3bc0321e: 00010917 auipc s2,0x10 + 3bc03222: 59a90913 addi s2,s2,1434 # 3bc137b8 + 3bc03226: 00093583 ld a1,0(s2) + 3bc0322a: 6985 lui s3,0x1 + 3bc0322c: 81498793 addi a5,s3,-2028 # 814 <__BSS_SIZE__-0x53fc> + 3bc03230: 95be add a1,a1,a5 + 3bc03232: 4535 li a0,13 + 3bc03234: 0404ba03 ld s4,64(s1) + 3bc03238: d1afe0ef jal ra,3bc01752 + 3bc0323c: 00093583 ld a1,0(s2) + 3bc03240: 81098793 addi a5,s3,-2032 + 3bc03244: 4535 li a0,13 + 3bc03246: 95be add a1,a1,a5 + 3bc03248: d0afe0ef jal ra,3bc01752 + 3bc0324c: 00093583 ld a1,0(s2) + 3bc03250: 81c98793 addi a5,s3,-2020 + 3bc03254: 4501 li a0,0 + 3bc03256: 95be add a1,a1,a5 + 3bc03258: cfafe0ef jal ra,3bc01752 + 3bc0325c: 00093503 ld a0,0(s2) + 3bc03260: 80498993 addi s3,s3,-2044 + 3bc03264: 954e add a0,a0,s3 + 3bc03266: ce6fe0ef jal ra,3bc0174c + 3bc0326a: 00093583 ld a1,0(s2) + 3bc0326e: 2501 sext.w a0,a0 + 3bc03270: 00256513 ori a0,a0,2 + 3bc03274: 95ce add a1,a1,s3 + 3bc03276: cdcfe0ef jal ra,3bc01752 + 3bc0327a: a0fff0ef jal ra,3bc02c88 + 3bc0327e: 030a2983 lw s3,48(s4) # 20000030 + 3bc03282: 00099663 bnez s3,3bc0328e + 3bc03286: 400819b7 lui s3,0x40081 + 3bc0328a: 40798993 addi s3,s3,1031 # 40081407 <__BL2_END__+0x446dbf7> + 3bc0328e: 0e0007b7 lui a5,0xe000 + 3bc03292: 0007c783 lbu a5,0(a5) # e000000 + 3bc03296: 4a01 li s4,0 + 3bc03298: 8ba1 andi a5,a5,8 + 3bc0329a: c795 beqz a5,3bc032c6 + 3bc0329c: 03006ab7 lui s5,0x3006 + 3bc032a0: 014a8513 addi a0,s5,20 # 3006014 <__BSS_SIZE__+0x3000404> + 3bc032a4: ca8fe0ef jal ra,3bc0174c + 3bc032a8: 00050a1b sext.w s4,a0 + 3bc032ac: 014a8593 addi a1,s5,20 + 3bc032b0: 18b00513 li a0,395 + 3bc032b4: c9efe0ef jal ra,3bc01752 + 3bc032b8: c00037b7 lui a5,0xc0003 + 3bc032bc: 03000737 lui a4,0x3000 + 3bc032c0: 07ad addi a5,a5,11 + 3bc032c2: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc032c6: 00093583 ld a1,0(s2) + 3bc032ca: 854e mv a0,s3 + 3bc032cc: 05b1 addi a1,a1,12 + 3bc032ce: c84fe0ef jal ra,3bc01752 + 3bc032d2: 0e0007b7 lui a5,0xe000 + 3bc032d6: 0007c783 lbu a5,0(a5) # e000000 + 3bc032da: 8ba1 andi a5,a5,8 + 3bc032dc: cb99 beqz a5,3bc032f2 + 3bc032de: 030065b7 lui a1,0x3006 + 3bc032e2: 8552 mv a0,s4 + 3bc032e4: 05d1 addi a1,a1,20 + 3bc032e6: c6cfe0ef jal ra,3bc01752 + 3bc032ea: 06400513 li a0,100 + 3bc032ee: e9dfc0ef jal ra,3bc0018a + 3bc032f2: 00093583 ld a1,0(s2) + 3bc032f6: 4505 li a0,1 + 3bc032f8: 05a1 addi a1,a1,8 + 3bc032fa: c58fe0ef jal ra,3bc01752 + 3bc032fe: 4581 li a1,0 + 3bc03300: 8526 mv a0,s1 + 3bc03302: c27ff0ef jal ra,3bc02f28 + 3bc03306: 0204a023 sw zero,32(s1) + 3bc0330a: b701 j 3bc0320a + +000000003bc0330c : + 3bc0330c: c901 beqz a0,3bc0331c + 3bc0330e: 0015151b slliw a0,a0,0x1 + 3bc03312: 00b035b3 snez a1,a1 + 3bc03316: 9d0d subw a0,a0,a1 + 3bc03318: 0ff57513 andi a0,a0,255 + 3bc0331c: 8082 ret + +000000003bc0331e : + 3bc0331e: 4510 lw a2,8(a0) + 3bc03320: 1101 addi sp,sp,-32 + 3bc03322: ec06 sd ra,24(sp) + 3bc03324: e822 sd s0,16(sp) + 3bc03326: e426 sd s1,8(sp) + 3bc03328: 27700793 li a5,631 + 3bc0332c: 02c7e063 bltu a5,a2,3bc0334c + 3bc03330: 00008517 auipc a0,0x8 + 3bc03334: d2850513 addi a0,a0,-728 # 3bc0b058 <__func__.5+0x1a0> + 3bc03338: 27800593 li a1,632 + 3bc0333c: 81cfd0ef jal ra,3bc00358 + 3bc03340: 557d li a0,-1 + 3bc03342: 60e2 ld ra,24(sp) + 3bc03344: 6442 ld s0,16(sp) + 3bc03346: 64a2 ld s1,8(sp) + 3bc03348: 6105 addi sp,sp,32 + 3bc0334a: 8082 ret + 3bc0334c: 6100 ld s0,0(a0) + 3bc0334e: 84aa mv s1,a0 + 3bc03350: 27800613 li a2,632 + 3bc03354: 4581 li a1,0 + 3bc03356: 8522 mv a0,s0 + 3bc03358: ec8fd0ef jal ra,3bc00a20 + 3bc0335c: 708c ld a1,32(s1) + 3bc0335e: 00008717 auipc a4,0x8 + 3bc03362: 65270713 addi a4,a4,1618 # 3bc0b9b0 + 3bc03366: 20000613 li a2,512 + 3bc0336a: 00010797 auipc a5,0x10 + 3bc0336e: 44b7b723 sd a1,1102(a5) # 3bc137b8 + 3bc03372: 00008797 auipc a5,0x8 + 3bc03376: dbe78793 addi a5,a5,-578 # 3bc0b130 + 3bc0337a: e81c sd a5,16(s0) + 3bc0337c: 05040793 addi a5,s0,80 + 3bc03380: ec1c sd a5,24(s0) + 3bc03382: 00008797 auipc a5,0x8 + 3bc03386: d9e78793 addi a5,a5,-610 # 3bc0b120 + 3bc0338a: f81c sd a5,48(s0) + 3bc0338c: 02c44783 lbu a5,44(s0) + 3bc03390: f838 sd a4,112(s0) + 3bc03392: f878 sd a4,240(s0) + 3bc03394: fc07f793 andi a5,a5,-64 + 3bc03398: 0017e793 ori a5,a5,1 + 3bc0339c: 02f40623 sb a5,44(s0) + 3bc033a0: 478d li a5,3 + 3bc033a2: d05c sw a5,36(s0) + 3bc033a4: 00008797 auipc a5,0x8 + 3bc033a8: dd478793 addi a5,a5,-556 # 3bc0b178 + 3bc033ac: f43c sd a5,104(s0) + 3bc033ae: 04000793 li a5,64 + 3bc033b2: 06f41c23 sh a5,120(s0) + 3bc033b6: 00008797 auipc a5,0x8 + 3bc033ba: dd278793 addi a5,a5,-558 # 3bc0b188 + 3bc033be: f47c sd a5,232(s0) + 3bc033c0: 28100793 li a5,641 + 3bc033c4: 14f410a3 sh a5,321(s0) + 3bc033c8: 4785 li a5,1 + 3bc033ca: 02079693 slli a3,a5,0x20 + 3bc033ce: 00268513 addi a0,a3,2 + 3bc033d2: 14a43223 sd a0,324(s0) + 3bc033d6: 0685 addi a3,a3,1 + 3bc033d8: 00008517 auipc a0,0x8 + 3bc033dc: dc050513 addi a0,a0,-576 # 3bc0b198 + 3bc033e0: 16a43423 sd a0,360(s0) + 3bc033e4: 1cd43223 sd a3,452(s0) + 3bc033e8: 20100513 li a0,513 + 3bc033ec: 00008697 auipc a3,0x8 + 3bc033f0: dbc68693 addi a3,a3,-580 # 3bc0b1a8 + 3bc033f4: 1786 slli a5,a5,0x21 + 3bc033f6: 078d addi a5,a5,3 + 3bc033f8: 16e43823 sd a4,368(s0) + 3bc033fc: 1ee43823 sd a4,496(s0) + 3bc03400: e024 sd s1,64(s0) + 3bc03402: 24040823 sb zero,592(s0) + 3bc03406: e440 sd s0,136(s0) + 3bc03408: 0c0410a3 sh zero,193(s0) + 3bc0340c: 0c042223 sw zero,196(s0) + 3bc03410: 0ec41c23 sh a2,248(s0) + 3bc03414: 10843423 sd s0,264(s0) + 3bc03418: 16c41c23 sh a2,376(s0) + 3bc0341c: 18843423 sd s0,392(s0) + 3bc03420: 1ca410a3 sh a0,449(s0) + 3bc03424: 1ed43423 sd a3,488(s0) + 3bc03428: 1ec41c23 sh a2,504(s0) + 3bc0342c: 20843423 sd s0,520(s0) + 3bc03430: 38200713 li a4,898 + 3bc03434: 24e410a3 sh a4,577(s0) + 3bc03438: 24f43223 sd a5,580(s0) + 3bc0343c: 00010797 auipc a5,0x10 + 3bc03440: 3887b223 sd s0,900(a5) # 3bc137c0 + 3bc03444: 60bc ld a5,64(s1) + 3bc03446: 24f43c23 sd a5,600(s0) + 3bc0344a: eb89 bnez a5,3bc0345c + 3bc0344c: 00008517 auipc a0,0x8 + 3bc03450: c3c50513 addi a0,a0,-964 # 3bc0b088 <__func__.5+0x1d0> + 3bc03454: f05fc0ef jal ra,3bc00358 + 3bc03458: 5551 li a0,-12 + 3bc0345a: b5e5 j 3bc03342 + 3bc0345c: 8522 mv a0,s0 + 3bc0345e: 26f42023 sw a5,608(s0) + 3bc03462: 26b43423 sd a1,616(s0) + 3bc03466: c74ff0ef jal ra,3bc028da + 3bc0346a: 4501 li a0,0 + 3bc0346c: bdd9 j 3bc03342 + +000000003bc0346e : + 3bc0346e: 1101 addi sp,sp,-32 + 3bc03470: e426 sd s1,8(sp) + 3bc03472: 00010497 auipc s1,0x10 + 3bc03476: 34648493 addi s1,s1,838 # 3bc137b8 + 3bc0347a: 6088 ld a0,0(s1) + 3bc0347c: ec06 sd ra,24(sp) + 3bc0347e: e822 sd s0,16(sp) + 3bc03480: 0551 addi a0,a0,20 + 3bc03482: acafe0ef jal ra,3bc0174c + 3bc03486: 0005041b sext.w s0,a0 + 3bc0348a: 6088 ld a0,0(s1) + 3bc0348c: 0561 addi a0,a0,24 + 3bc0348e: abefe0ef jal ra,3bc0174c + 3bc03492: 2501 sext.w a0,a0 + 3bc03494: 8c69 and s0,s0,a0 + 3bc03496: cc01 beqz s0,3bc034ae + 3bc03498: 6442 ld s0,16(sp) + 3bc0349a: 60e2 ld ra,24(sp) + 3bc0349c: 64a2 ld s1,8(sp) + 3bc0349e: 00010597 auipc a1,0x10 + 3bc034a2: 3225b583 ld a1,802(a1) # 3bc137c0 + 3bc034a6: 4505 li a0,1 + 3bc034a8: 6105 addi sp,sp,32 + 3bc034aa: 3fb0006f j 3bc040a4 + 3bc034ae: 60e2 ld ra,24(sp) + 3bc034b0: 6442 ld s0,16(sp) + 3bc034b2: 64a2 ld s1,8(sp) + 3bc034b4: 4501 li a0,0 + 3bc034b6: 6105 addi sp,sp,32 + 3bc034b8: 8082 ret + +000000003bc034ba : + 3bc034ba: 7179 addi sp,sp,-48 + 3bc034bc: f022 sd s0,32(sp) + 3bc034be: f406 sd ra,40(sp) + 3bc034c0: ec26 sd s1,24(sp) + 3bc034c2: 470d li a4,3 + 3bc034c4: 26853403 ld s0,616(a0) + 3bc034c8: 00008697 auipc a3,0x8 + 3bc034cc: 53868693 addi a3,a3,1336 # 3bc0ba00 + 3bc034d0: 00008797 auipc a5,0x8 + 3bc034d4: 53478793 addi a5,a5,1332 # 3bc0ba04 + 3bc034d8: 06e59163 bne a1,a4,3bc0353a + 3bc034dc: 04000713 li a4,64 + 3bc034e0: c298 sw a4,0(a3) + 3bc034e2: 20000713 li a4,512 + 3bc034e6: c398 sw a4,0(a5) + 3bc034e8: d10c sw a1,32(a0) + 3bc034ea: 0007d783 lhu a5,0(a5) + 3bc034ee: 6485 lui s1,0x1 + 3bc034f0: 90048593 addi a1,s1,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc034f4: 95a2 add a1,a1,s0 + 3bc034f6: 04000713 li a4,64 + 3bc034fa: 06e51c23 sh a4,120(a0) + 3bc034fe: 0ef51c23 sh a5,248(a0) + 3bc03502: 16f51c23 sh a5,376(a0) + 3bc03506: 1ef51c23 sh a5,504(a0) + 3bc0350a: 852e mv a0,a1 + 3bc0350c: e42e sd a1,8(sp) + 3bc0350e: a3efe0ef jal ra,3bc0174c + 3bc03512: 65a2 ld a1,8(sp) + 3bc03514: 2501 sext.w a0,a0 + 3bc03516: 9971 andi a0,a0,-4 + 3bc03518: b0048493 addi s1,s1,-1280 + 3bc0351c: a36fe0ef jal ra,3bc01752 + 3bc03520: 9426 add s0,s0,s1 + 3bc03522: 8522 mv a0,s0 + 3bc03524: a28fe0ef jal ra,3bc0174c + 3bc03528: 85a2 mv a1,s0 + 3bc0352a: 7402 ld s0,32(sp) + 3bc0352c: 70a2 ld ra,40(sp) + 3bc0352e: 64e2 ld s1,24(sp) + 3bc03530: 2501 sext.w a0,a0 + 3bc03532: 9971 andi a0,a0,-4 + 3bc03534: 6145 addi sp,sp,48 + 3bc03536: a1cfe06f j 3bc01752 + 3bc0353a: 04000713 li a4,64 + 3bc0353e: c298 sw a4,0(a3) + 3bc03540: c398 sw a4,0(a5) + 3bc03542: 4709 li a4,2 + 3bc03544: d118 sw a4,32(a0) + 3bc03546: b755 j 3bc034ea + +000000003bc03548 : + 3bc03548: 1101 addi sp,sp,-32 + 3bc0354a: e822 sd s0,16(sp) + 3bc0354c: ec06 sd ra,24(sp) + 3bc0354e: 07154703 lbu a4,113(a0) + 3bc03552: 7d1c ld a5,56(a0) + 3bc03554: 842a mv s0,a0 + 3bc03556: fc77368b extu a3,a4,63,7 + 3bc0355a: 2687b583 ld a1,616(a5) + 3bc0355e: 00f77793 andi a5,a4,15 + 3bc03562: ce9d beqz a3,3bc035a0 + 3bc03564: 04878793 addi a5,a5,72 + 3bc03568: 0796 slli a5,a5,0x5 + 3bc0356a: 95be add a1,a1,a5 + 3bc0356c: 852e mv a0,a1 + 3bc0356e: e42e sd a1,8(sp) + 3bc03570: 9dcfe0ef jal ra,3bc0174c + 3bc03574: ffe007b7 lui a5,0xffe00 + 3bc03578: 17fd addi a5,a5,-1 + 3bc0357a: 2501 sext.w a0,a0 + 3bc0357c: 8d7d and a0,a0,a5 + 3bc0357e: 07244783 lbu a5,114(s0) + 3bc03582: 4705 li a4,1 + 3bc03584: 65a2 ld a1,8(sp) + 3bc03586: 37f9 addiw a5,a5,-2 + 3bc03588: 0ff7f793 andi a5,a5,255 + 3bc0358c: 00f76563 bltu a4,a5,3bc03596 + 3bc03590: 100007b7 lui a5,0x10000 + 3bc03594: 8d5d or a0,a0,a5 + 3bc03596: 6442 ld s0,16(sp) + 3bc03598: 60e2 ld ra,24(sp) + 3bc0359a: 6105 addi sp,sp,32 + 3bc0359c: 9b6fe06f j 3bc01752 + 3bc035a0: 05878793 addi a5,a5,88 # 10000058 + 3bc035a4: b7d1 j 3bc03568 + +000000003bc035a6 : + 3bc035a6: 1101 addi sp,sp,-32 + 3bc035a8: ec06 sd ra,24(sp) + 3bc035aa: 07154703 lbu a4,113(a0) + 3bc035ae: 7d1c ld a5,56(a0) + 3bc035b0: fc77368b extu a3,a4,63,7 + 3bc035b4: 2687b583 ld a1,616(a5) + 3bc035b8: 00f77793 andi a5,a4,15 + 3bc035bc: ca85 beqz a3,3bc035ec + 3bc035be: 04878793 addi a5,a5,72 + 3bc035c2: 0796 slli a5,a5,0x5 + 3bc035c4: 95be add a1,a1,a5 + 3bc035c6: 852e mv a0,a1 + 3bc035c8: e42e sd a1,8(sp) + 3bc035ca: 982fe0ef jal ra,3bc0174c + 3bc035ce: 0005079b sext.w a5,a0 + 3bc035d2: 65a2 ld a1,8(sp) + 3bc035d4: 0007d563 bgez a5,3bc035de + 3bc035d8: 40000737 lui a4,0x40000 + 3bc035dc: 8fd9 or a5,a5,a4 + 3bc035de: 00200537 lui a0,0x200 + 3bc035e2: 8d5d or a0,a0,a5 + 3bc035e4: 60e2 ld ra,24(sp) + 3bc035e6: 6105 addi sp,sp,32 + 3bc035e8: 96afe06f j 3bc01752 + 3bc035ec: 05878793 addi a5,a5,88 + 3bc035f0: 0796 slli a5,a5,0x5 + 3bc035f2: 95be add a1,a1,a5 + 3bc035f4: 852e mv a0,a1 + 3bc035f6: e42e sd a1,8(sp) + 3bc035f8: 954fe0ef jal ra,3bc0174c + 3bc035fc: 002007b7 lui a5,0x200 + 3bc03600: 8d5d or a0,a0,a5 + 3bc03602: 65a2 ld a1,8(sp) + 3bc03604: 2501 sext.w a0,a0 + 3bc03606: bff9 j 3bc035e4 + +000000003bc03608 : + 3bc03608: 7139 addi sp,sp,-64 + 3bc0360a: f822 sd s0,48(sp) + 3bc0360c: 26853403 ld s0,616(a0) # 200268 <__BSS_SIZE__+0x1fa658> + 3bc03610: f426 sd s1,40(sp) + 3bc03612: 6485 lui s1,0x1 + 3bc03614: ec4e sd s3,24(sp) + 3bc03616: b1048593 addi a1,s1,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc0361a: 000809b7 lui s3,0x80 + 3bc0361e: f04a sd s2,32(sp) + 3bc03620: 95a2 add a1,a1,s0 + 3bc03622: 892a mv s2,a0 + 3bc03624: 00898513 addi a0,s3,8 # 80008 <__BSS_SIZE__+0x7a3f8> + 3bc03628: fc06 sd ra,56(sp) + 3bc0362a: 928fe0ef jal ra,3bc01752 + 3bc0362e: 26092503 lw a0,608(s2) + 3bc03632: b1448593 addi a1,s1,-1260 + 3bc03636: 95a2 add a1,a1,s0 + 3bc03638: 91afe0ef jal ra,3bc01752 + 3bc0363c: b0048593 addi a1,s1,-1280 + 3bc03640: 95a2 add a1,a1,s0 + 3bc03642: 852e mv a0,a1 + 3bc03644: e42e sd a1,8(sp) + 3bc03646: 906fe0ef jal ra,3bc0174c + 3bc0364a: 0005041b sext.w s0,a0 + 3bc0364e: c0000537 lui a0,0xc0000 + 3bc03652: 157d addi a0,a0,-1 + 3bc03654: 65a2 ld a1,8(sp) + 3bc03656: 8c69 and s0,s0,a0 + 3bc03658: 84000537 lui a0,0x84000 + 3bc0365c: 8c49 or s0,s0,a0 + 3bc0365e: 8522 mv a0,s0 + 3bc03660: 8f2fe0ef jal ra,3bc01752 + 3bc03664: 85a2 mv a1,s0 + 3bc03666: 7442 ld s0,48(sp) + 3bc03668: 26092603 lw a2,608(s2) + 3bc0366c: 70e2 ld ra,56(sp) + 3bc0366e: 74a2 ld s1,40(sp) + 3bc03670: 7902 ld s2,32(sp) + 3bc03672: 00898693 addi a3,s3,8 + 3bc03676: 69e2 ld s3,24(sp) + 3bc03678: 00089537 lui a0,0x89 + 3bc0367c: 4701 li a4,0 + 3bc0367e: 88850513 addi a0,a0,-1912 # 88888 <__BSS_SIZE__+0x82c78> + 3bc03682: 6121 addi sp,sp,64 + 3bc03684: a4aff06f j 3bc028ce + +000000003bc03688 : + 3bc03688: 7179 addi sp,sp,-48 + 3bc0368a: f022 sd s0,32(sp) + 3bc0368c: 26853403 ld s0,616(a0) + 3bc03690: ec26 sd s1,24(sp) + 3bc03692: e84a sd s2,16(sp) + 3bc03694: 6485 lui s1,0x1 + 3bc03696: 892a mv s2,a0 + 3bc03698: 26052503 lw a0,608(a0) + 3bc0369c: 91448593 addi a1,s1,-1772 # 914 <__BSS_SIZE__-0x52fc> + 3bc036a0: 95a2 add a1,a1,s0 + 3bc036a2: f406 sd ra,40(sp) + 3bc036a4: 8aefe0ef jal ra,3bc01752 + 3bc036a8: 91048593 addi a1,s1,-1776 + 3bc036ac: 95a2 add a1,a1,s0 + 3bc036ae: 00080537 lui a0,0x80 + 3bc036b2: 8a0fe0ef jal ra,3bc01752 + 3bc036b6: 90048593 addi a1,s1,-1792 + 3bc036ba: 95a2 add a1,a1,s0 + 3bc036bc: 852e mv a0,a1 + 3bc036be: e42e sd a1,8(sp) + 3bc036c0: 88cfe0ef jal ra,3bc0174c + 3bc036c4: 0005041b sext.w s0,a0 + 3bc036c8: c0000537 lui a0,0xc0000 + 3bc036cc: 157d addi a0,a0,-1 + 3bc036ce: 65a2 ld a1,8(sp) + 3bc036d0: 8c69 and s0,s0,a0 + 3bc036d2: 84000537 lui a0,0x84000 + 3bc036d6: 8c49 or s0,s0,a0 + 3bc036d8: 8522 mv a0,s0 + 3bc036da: 878fe0ef jal ra,3bc01752 + 3bc036de: 479d li a5,7 + 3bc036e0: 85a2 mv a1,s0 + 3bc036e2: 7402 ld s0,32(sp) + 3bc036e4: 26092603 lw a2,608(s2) + 3bc036e8: 70a2 ld ra,40(sp) + 3bc036ea: 64e2 ld s1,24(sp) + 3bc036ec: 04f92423 sw a5,72(s2) + 3bc036f0: 6942 ld s2,16(sp) + 3bc036f2: 000ab537 lui a0,0xab + 3bc036f6: 4701 li a4,0 + 3bc036f8: 000806b7 lui a3,0x80 + 3bc036fc: aaa50513 addi a0,a0,-1366 # aaaaa <__BSS_SIZE__+0xa4e9a> + 3bc03700: 6145 addi sp,sp,48 + 3bc03702: 9ccff06f j 3bc028ce + +000000003bc03706 : + 3bc03706: 1101 addi sp,sp,-32 + 3bc03708: e822 sd s0,16(sp) + 3bc0370a: e426 sd s1,8(sp) + 3bc0370c: 26853403 ld s0,616(a0) + 3bc03710: 84aa mv s1,a0 + 3bc03712: 00087537 lui a0,0x87 + 3bc03716: 08750513 addi a0,a0,135 # 87087 <__BSS_SIZE__+0x81477> + 3bc0371a: 4701 li a4,0 + 3bc0371c: 4681 li a3,0 + 3bc0371e: 4601 li a2,0 + 3bc03720: e04a sd s2,0(sp) + 3bc03722: ec06 sd ra,24(sp) + 3bc03724: 892e mv s2,a1 + 3bc03726: 9a8ff0ef jal ra,3bc028ce + 3bc0372a: 6505 lui a0,0x1 + 3bc0372c: 02090b63 beqz s2,3bc03762 + 3bc03730: 90050513 addi a0,a0,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc03734: 9522 add a0,a0,s0 + 3bc03736: 816fe0ef jal ra,3bc0174c + 3bc0373a: 2501 sext.w a0,a0 + 3bc0373c: 002007b7 lui a5,0x200 + 3bc03740: 8d5d or a0,a0,a5 + 3bc03742: 6585 lui a1,0x1 + 3bc03744: 02090263 beqz s2,3bc03768 + 3bc03748: 90058593 addi a1,a1,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc0374c: 95a2 add a1,a1,s0 + 3bc0374e: 804fe0ef jal ra,3bc01752 + 3bc03752: 60e2 ld ra,24(sp) + 3bc03754: 6442 ld s0,16(sp) + 3bc03756: 0404a423 sw zero,72(s1) + 3bc0375a: 6902 ld s2,0(sp) + 3bc0375c: 64a2 ld s1,8(sp) + 3bc0375e: 6105 addi sp,sp,32 + 3bc03760: 8082 ret + 3bc03762: b0050513 addi a0,a0,-1280 + 3bc03766: b7f9 j 3bc03734 + 3bc03768: b0058593 addi a1,a1,-1280 + 3bc0376c: b7c5 j 3bc0374c + +000000003bc0376e : + 3bc0376e: 7179 addi sp,sp,-48 + 3bc03770: 7d18 ld a4,56(a0) + 3bc03772: 5dd4 lw a3,60(a1) + 3bc03774: ec26 sd s1,24(sp) + 3bc03776: f406 sd ra,40(sp) + 3bc03778: f022 sd s0,32(sp) + 3bc0377a: e84a sd s2,16(sp) + 3bc0377c: 07154783 lbu a5,113(a0) + 3bc03780: 84aa mv s1,a0 + 3bc03782: 6988 ld a0,16(a1) + 3bc03784: 26873603 ld a2,616(a4) # 40000268 <__BL2_END__+0x43eca58> + 3bc03788: 7c06b70b extu a4,a3,31,0 + 3bc0378c: 953a add a0,a0,a4 + 3bc0378e: 4d98 lw a4,24(a1) + 3bc03790: 8bbd andi a5,a5,15 + 3bc03792: 6591 lui a1,0x4 + 3bc03794: 9f15 subw a4,a4,a3 + 3bc03796: e399 bnez a5,3bc0379c + 3bc03798: 0284d583 lhu a1,40(s1) + 3bc0379c: 0007069b sext.w a3,a4 + 3bc037a0: 00d5b6b3 sltu a3,a1,a3 + 3bc037a4: 0016c693 xori a3,a3,1 + 3bc037a8: 40d5970b mveqz a4,a1,a3 + 3bc037ac: d0b8 sw a4,96(s1) + 3bc037ae: f4a8 sd a0,104(s1) + 3bc037b0: 0007091b sext.w s2,a4 + 3bc037b4: 4405 li s0,1 + 3bc037b6: cb91 beqz a5,3bc037ca + 3bc037b8: 00090963 beqz s2,3bc037ca + 3bc037bc: 0284d683 lhu a3,40(s1) + 3bc037c0: fff9041b addiw s0,s2,-1 + 3bc037c4: 02d4543b divuw s0,s0,a3 + 3bc037c8: 2405 addiw s0,s0,1 + 3bc037ca: 05878793 addi a5,a5,88 # 200058 <__BSS_SIZE__+0x1fa448> + 3bc037ce: 0796 slli a5,a5,0x5 + 3bc037d0: 00f605b3 add a1,a2,a5 + 3bc037d4: 852e mv a0,a1 + 3bc037d6: e42e sd a1,8(sp) + 3bc037d8: f75fd0ef jal ra,3bc0174c + 3bc037dc: 54b0 lw a2,104(s1) + 3bc037de: 840004b7 lui s1,0x84000 + 3bc037e2: 65a2 ld a1,8(sp) + 3bc037e4: 8cc9 or s1,s1,a0 + 3bc037e6: 2481 sext.w s1,s1 + 3bc037e8: 8526 mv a0,s1 + 3bc037ea: 0134141b slliw s0,s0,0x13 + 3bc037ee: e032 sd a2,0(sp) + 3bc037f0: 00896433 or s0,s2,s0 + 3bc037f4: f5ffd0ef jal ra,3bc01752 + 3bc037f8: 0004069b sext.w a3,s0 + 3bc037fc: 7402 ld s0,32(sp) + 3bc037fe: 6602 ld a2,0(sp) + 3bc03800: 70a2 ld ra,40(sp) + 3bc03802: 6942 ld s2,16(sp) + 3bc03804: 85a6 mv a1,s1 + 3bc03806: 64e2 ld s1,24(sp) + 3bc03808: 00077537 lui a0,0x77 + 3bc0380c: 4701 li a4,0 + 3bc0380e: 77750513 addi a0,a0,1911 # 77777 <__BSS_SIZE__+0x71b67> + 3bc03812: 6145 addi sp,sp,48 + 3bc03814: 8baff06f j 3bc028ce + +000000003bc03818 : + 3bc03818: 715d addi sp,sp,-80 + 3bc0381a: ec56 sd s5,24(sp) + 3bc0381c: 8aae mv s5,a1 + 3bc0381e: fc26 sd s1,56(sp) + 3bc03820: 4581 li a1,0 + 3bc03822: 84aa mv s1,a0 + 3bc03824: 8556 mv a0,s5 + 3bc03826: e0a2 sd s0,64(sp) + 3bc03828: f84a sd s2,48(sp) + 3bc0382a: f44e sd s3,40(sp) + 3bc0382c: f052 sd s4,32(sp) + 3bc0382e: e486 sd ra,72(sp) + 3bc03830: addff0ef jal ra,3bc0330c + 3bc03834: 0005079b sext.w a5,a0 + 3bc03838: 00779a13 slli s4,a5,0x7 + 3bc0383c: 014487b3 add a5,s1,s4 + 3bc03840: 00751413 slli s0,a0,0x7 + 3bc03844: 0987b903 ld s2,152(a5) + 3bc03848: 09840993 addi s3,s0,152 + 3bc0384c: 99a6 add s3,s3,s1 + 3bc0384e: 09298563 beq s3,s2,3bc038d8 + 3bc03852: 6505 lui a0,0x1 + 3bc03854: b1050513 addi a0,a0,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc03858: 005a9793 slli a5,s5,0x5 + 3bc0385c: 97aa add a5,a5,a0 + 3bc0385e: 2684b503 ld a0,616(s1) # ffffffff84000268 <__BL2_END__+0xffffffff483eca58> + 3bc03862: fc090593 addi a1,s2,-64 + 3bc03866: e42e sd a1,8(sp) + 3bc03868: 953e add a0,a0,a5 + 3bc0386a: ee3fd0ef jal ra,3bc0174c + 3bc0386e: 0005071b sext.w a4,a0 + 3bc03872: 65a2 ld a1,8(sp) + 3bc03874: 07f77693 andi a3,a4,127 + 3bc03878: 000a8463 beqz s5,3bc03880 + 3bc0387c: fe092683 lw a3,-32(s2) + 3bc03880: 01448833 add a6,s1,s4 + 3bc03884: 0b082703 lw a4,176(a6) + 3bc03888: ffc92883 lw a7,-4(s2) + 3bc0388c: fd892603 lw a2,-40(s2) + 3bc03890: 40d7033b subw t1,a4,a3 + 3bc03894: 05040513 addi a0,s0,80 + 3bc03898: 411607bb subw a5,a2,a7 + 3bc0389c: 86be mv a3,a5 + 3bc0389e: 00f337b3 sltu a5,t1,a5 + 3bc038a2: 0017c793 xori a5,a5,1 + 3bc038a6: 40f3168b mveqz a3,t1,a5 + 3bc038aa: 011687bb addw a5,a3,a7 + 3bc038ae: 07885683 lhu a3,120(a6) + 3bc038b2: fef92e23 sw a5,-4(s2) + 3bc038b6: 9526 add a0,a0,s1 + 3bc038b8: 02d3773b remuw a4,t1,a3 + 3bc038bc: e319 bnez a4,3bc038c2 + 3bc038be: 04f61263 bne a2,a5,3bc03902 + 3bc038c2: 020a9463 bnez s5,3bc038ea + 3bc038c6: 44b8 lw a4,72(s1) + 3bc038c8: 4791 li a5,4 + 3bc038ca: 02f71063 bne a4,a5,3bc038ea + 3bc038ce: 8526 mv a0,s1 + 3bc038d0: db9ff0ef jal ra,3bc03688 + 3bc038d4: 479d li a5,7 + 3bc038d6: c4bc sw a5,72(s1) + 3bc038d8: 60a6 ld ra,72(sp) + 3bc038da: 6406 ld s0,64(sp) + 3bc038dc: 74e2 ld s1,56(sp) + 3bc038de: 7942 ld s2,48(sp) + 3bc038e0: 79a2 ld s3,40(sp) + 3bc038e2: 7a02 ld s4,32(sp) + 3bc038e4: 6ae2 ld s5,24(sp) + 3bc038e6: 6161 addi sp,sp,80 + 3bc038e8: 8082 ret + 3bc038ea: 4601 li a2,0 + 3bc038ec: e42a sd a0,8(sp) + 3bc038ee: 832ff0ef jal ra,3bc02920 + 3bc038f2: 014487b3 add a5,s1,s4 + 3bc038f6: 6fcc ld a1,152(a5) + 3bc038f8: feb980e3 beq s3,a1,3bc038d8 + 3bc038fc: 6522 ld a0,8(sp) + 3bc038fe: fc058593 addi a1,a1,-64 # 3fc0 <__BSS_SIZE__-0x1c50> + 3bc03902: 6406 ld s0,64(sp) + 3bc03904: 60a6 ld ra,72(sp) + 3bc03906: 74e2 ld s1,56(sp) + 3bc03908: 7942 ld s2,48(sp) + 3bc0390a: 79a2 ld s3,40(sp) + 3bc0390c: 7a02 ld s4,32(sp) + 3bc0390e: 6ae2 ld s5,24(sp) + 3bc03910: 6161 addi sp,sp,80 + 3bc03912: bdb1 j 3bc0376e + +000000003bc03914 : + 3bc03914: 26853583 ld a1,616(a0) + 3bc03918: 6785 lui a5,0x1 + 3bc0391a: b1078793 addi a5,a5,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc0391e: 20080537 lui a0,0x20080 + 3bc03922: 95be add a1,a1,a5 + 3bc03924: 0521 addi a0,a0,8 + 3bc03926: e2dfd06f j 3bc01752 + +000000003bc0392a : + 3bc0392a: 7179 addi sp,sp,-48 + 3bc0392c: e84a sd s2,16(sp) + 3bc0392e: 26853903 ld s2,616(a0) # 20080268 + 3bc03932: 0585 addi a1,a1,1 + 3bc03934: f022 sd s0,32(sp) + 3bc03936: 05b2 slli a1,a1,0xc + 3bc03938: 0036841b addiw s0,a3,3 + 3bc0393c: ec26 sd s1,24(sp) + 3bc0393e: f406 sd ra,40(sp) + 3bc03940: 4024340b extu s0,s0,16,2 + 3bc03944: 992e add s2,s2,a1 + 3bc03946: 4481 li s1,0 + 3bc03948: 0004879b sext.w a5,s1 + 3bc0394c: 0087e863 bltu a5,s0,3bc0395c + 3bc03950: 70a2 ld ra,40(sp) + 3bc03952: 7402 ld s0,32(sp) + 3bc03954: 64e2 ld s1,24(sp) + 3bc03956: 6942 ld s2,16(sp) + 3bc03958: 6145 addi sp,sp,48 + 3bc0395a: 8082 ret + 3bc0395c: 4496450b lrw a0,a2,s1,2 + 3bc03960: 85ca mv a1,s2 + 3bc03962: e432 sd a2,8(sp) + 3bc03964: deffd0ef jal ra,3bc01752 + 3bc03968: 6622 ld a2,8(sp) + 3bc0396a: 0485 addi s1,s1,1 + 3bc0396c: bff1 j 3bc03948 + +000000003bc0396e : + 3bc0396e: 7d1c ld a5,56(a0) + 3bc03970: 7119 addi sp,sp,-128 + 3bc03972: f8a2 sd s0,112(sp) + 3bc03974: f862 sd s8,48(sp) + 3bc03976: f466 sd s9,40(sp) + 3bc03978: f06a sd s10,32(sp) + 3bc0397a: 2687bc83 ld s9,616(a5) + 3bc0397e: fc86 sd ra,120(sp) + 3bc03980: 5ddc lw a5,60(a1) + 3bc03982: f4a6 sd s1,104(sp) + 3bc03984: f0ca sd s2,96(sp) + 3bc03986: ecce sd s3,88(sp) + 3bc03988: e8d2 sd s4,80(sp) + 3bc0398a: e4d6 sd s5,72(sp) + 3bc0398c: e0da sd s6,64(sp) + 3bc0398e: fc5e sd s7,56(sp) + 3bc03990: ec6e sd s11,24(sp) + 3bc03992: 07154903 lbu s2,113(a0) + 3bc03996: 6998 ld a4,16(a1) + 3bc03998: 4d80 lw s0,24(a1) + 3bc0399a: 7c07b60b extu a2,a5,31,0 + 3bc0399e: 00f97d13 andi s10,s2,15 + 3bc039a2: 963a add a2,a2,a4 + 3bc039a4: 40f4073b subw a4,s0,a5 + 3bc039a8: 6791 lui a5,0x4 + 3bc039aa: 8c2a mv s8,a0 + 3bc039ac: 896a mv s2,s10 + 3bc039ae: 6411 lui s0,0x4 + 3bc039b0: 00e7e363 bltu a5,a4,3bc039b6 + 3bc039b4: 843a mv s0,a4 + 3bc039b6: 000d1d63 bnez s10,3bc039d0 + 3bc039ba: 028c5783 lhu a5,40(s8) + 3bc039be: 873e mv a4,a5 + 3bc039c0: 00f437b3 sltu a5,s0,a5 + 3bc039c4: 0017c793 xori a5,a5,1 + 3bc039c8: 40f4170b mveqz a4,s0,a5 + 3bc039cc: 0007041b sext.w s0,a4 + 3bc039d0: 0004099b sext.w s3,s0 + 3bc039d4: 073c2023 sw s3,96(s8) + 3bc039d8: 06cc3423 sd a2,104(s8) + 3bc039dc: 00060a1b sext.w s4,a2 + 3bc039e0: 4785 li a5,1 + 3bc039e2: c801 beqz s0,3bc039f2 + 3bc039e4: 028c5503 lhu a0,40(s8) + 3bc039e8: fff4079b addiw a5,s0,-1 + 3bc039ec: 02a7d7bb divuw a5,a5,a0 + 3bc039f0: 2785 addiw a5,a5,1 + 3bc039f2: 6d85 lui s11,0x1 + 3bc039f4: 005d1b13 slli s6,s10,0x5 + 3bc039f8: 910d8a93 addi s5,s11,-1776 # 910 <__BSS_SIZE__-0x5300> + 3bc039fc: 0137979b slliw a5,a5,0x13 + 3bc03a00: 9ada add s5,s5,s6 + 3bc03a02: 00f46533 or a0,s0,a5 + 3bc03a06: 9ae6 add s5,s5,s9 + 3bc03a08: 85d6 mv a1,s5 + 3bc03a0a: 2501 sext.w a0,a0 + 3bc03a0c: e432 sd a2,8(sp) + 3bc03a0e: d45fd0ef jal ra,3bc01752 + 3bc03a12: 900d8793 addi a5,s11,-1792 + 3bc03a16: 9b3e add s6,s6,a5 + 3bc03a18: 9b66 add s6,s6,s9 + 3bc03a1a: 855a mv a0,s6 + 3bc03a1c: d31fd0ef jal ra,3bc0174c + 3bc03a20: 078c2783 lw a5,120(s8) + 3bc03a24: bc4004b7 lui s1,0xbc400 + 3bc03a28: 00050b9b sext.w s7,a0 + 3bc03a2c: 14fd addi s1,s1,-1 + 3bc03a2e: 0167979b slliw a5,a5,0x16 + 3bc03a32: 009bf4b3 and s1,s7,s1 + 3bc03a36: 8cdd or s1,s1,a5 + 3bc03a38: 77e1 lui a5,0xffff8 + 3bc03a3a: 7ff78793 addi a5,a5,2047 # ffffffffffff87ff <__BL2_END__+0xffffffffc43e4fef> + 3bc03a3e: 2481 sext.w s1,s1 + 3bc03a40: 8cfd and s1,s1,a5 + 3bc03a42: 840007b7 lui a5,0x84000 + 3bc03a46: 8cdd or s1,s1,a5 + 3bc03a48: 85da mv a1,s6 + 3bc03a4a: 8526 mv a0,s1 + 3bc03a4c: d07fd0ef jal ra,3bc01752 + 3bc03a50: 6622 ld a2,8(sp) + 3bc03a52: 038c3503 ld a0,56(s8) + 3bc03a56: 3c04368b extu a3,s0,15,0 + 3bc03a5a: 85ea mv a1,s10 + 3bc03a5c: ecfff0ef jal ra,3bc0392a + 3bc03a60: c809 beqz s0,3bc03a72 + 3bc03a62: 834d8593 addi a1,s11,-1996 + 3bc03a66: 4505 li a0,1 + 3bc03a68: 95e6 add a1,a1,s9 + 3bc03a6a: 0125153b sllw a0,a0,s2 + 3bc03a6e: ce5fd0ef jal ra,3bc01752 + 3bc03a72: 855a mv a0,s6 + 3bc03a74: cd9fd0ef jal ra,3bc0174c + 3bc03a78: 0005071b sext.w a4,a0 + 3bc03a7c: 00044537 lui a0,0x44 + 3bc03a80: 86de mv a3,s7 + 3bc03a82: 8652 mv a2,s4 + 3bc03a84: 85a6 mv a1,s1 + 3bc03a86: 44450513 addi a0,a0,1092 # 44444 <__BSS_SIZE__+0x3e834> + 3bc03a8a: e45fe0ef jal ra,3bc028ce + 3bc03a8e: 8556 mv a0,s5 + 3bc03a90: cbdfd0ef jal ra,3bc0174c + 3bc03a94: 0005059b sext.w a1,a0 + 3bc03a98: 00046537 lui a0,0x46 + 3bc03a9c: 86ca mv a3,s2 + 3bc03a9e: 8622 mv a2,s0 + 3bc03aa0: 46450513 addi a0,a0,1124 # 46464 <__BSS_SIZE__+0x40854> + 3bc03aa4: 4701 li a4,0 + 3bc03aa6: e29fe0ef jal ra,3bc028ce + 3bc03aaa: 70e6 ld ra,120(sp) + 3bc03aac: 7446 ld s0,112(sp) + 3bc03aae: 74a6 ld s1,104(sp) + 3bc03ab0: 7906 ld s2,96(sp) + 3bc03ab2: 6a46 ld s4,80(sp) + 3bc03ab4: 6aa6 ld s5,72(sp) + 3bc03ab6: 6b06 ld s6,64(sp) + 3bc03ab8: 7be2 ld s7,56(sp) + 3bc03aba: 7c42 ld s8,48(sp) + 3bc03abc: 7ca2 ld s9,40(sp) + 3bc03abe: 7d02 ld s10,32(sp) + 3bc03ac0: 6de2 ld s11,24(sp) + 3bc03ac2: 854e mv a0,s3 + 3bc03ac4: 69e6 ld s3,88(sp) + 3bc03ac6: 6109 addi sp,sp,128 + 3bc03ac8: 8082 ret + +000000003bc03aca : + 3bc03aca: 7179 addi sp,sp,-48 + 3bc03acc: e84a sd s2,16(sp) + 3bc03ace: 26853903 ld s2,616(a0) + 3bc03ad2: 0585 addi a1,a1,1 + 3bc03ad4: f022 sd s0,32(sp) + 3bc03ad6: 05b2 slli a1,a1,0xc + 3bc03ad8: 0036841b addiw s0,a3,3 + 3bc03adc: ec26 sd s1,24(sp) + 3bc03ade: f406 sd ra,40(sp) + 3bc03ae0: 4024340b extu s0,s0,16,2 + 3bc03ae4: 992e add s2,s2,a1 + 3bc03ae6: 4481 li s1,0 + 3bc03ae8: 0004879b sext.w a5,s1 + 3bc03aec: 0087e863 bltu a5,s0,3bc03afc + 3bc03af0: 70a2 ld ra,40(sp) + 3bc03af2: 7402 ld s0,32(sp) + 3bc03af4: 64e2 ld s1,24(sp) + 3bc03af6: 6942 ld s2,16(sp) + 3bc03af8: 6145 addi sp,sp,48 + 3bc03afa: 8082 ret + 3bc03afc: 854a mv a0,s2 + 3bc03afe: e432 sd a2,8(sp) + 3bc03b00: c4dfd0ef jal ra,3bc0174c + 3bc03b04: 6622 ld a2,8(sp) + 3bc03b06: 4496550b srw a0,a2,s1,2 + 3bc03b0a: 0485 addi s1,s1,1 + 3bc03b0c: bff1 j 3bc03ae8 + +000000003bc03b0e : + 3bc03b0e: 7179 addi sp,sp,-48 + 3bc03b10: e44e sd s3,8(sp) + 3bc03b12: 02855983 lhu s3,40(a0) + 3bc03b16: f022 sd s0,32(sp) + 3bc03b18: ec26 sd s1,24(sp) + 3bc03b1a: f406 sd ra,40(sp) + 3bc03b1c: e84a sd s2,16(sp) + 3bc03b1e: 84aa mv s1,a0 + 3bc03b20: 842e mv s0,a1 + 3bc03b22: e4dff0ef jal ra,3bc0396e + 3bc03b26: 2501 sext.w a0,a0 + 3bc03b28: 00a99e63 bne s3,a0,3bc03b44 + 3bc03b2c: 5c5c lw a5,60(s0) + 3bc03b2e: 4c18 lw a4,24(s0) + 3bc03b30: 4501 li a0,0 + 3bc03b32: 013787bb addw a5,a5,s3 + 3bc03b36: 00f71b63 bne a4,a5,3bc03b4c + 3bc03b3a: 505c lw a5,36(s0) + 3bc03b3c: 02e79713 slli a4,a5,0x2e + 3bc03b40: 00074663 bltz a4,3bc03b4c + 3bc03b44: 7c9c ld a5,56(s1) + 3bc03b46: 4505 li a0,1 + 3bc03b48: 0407a423 sw zero,72(a5) # ffffffff84000048 <__BL2_END__+0xffffffff483ec838> + 3bc03b4c: 70a2 ld ra,40(sp) + 3bc03b4e: 7402 ld s0,32(sp) + 3bc03b50: 64e2 ld s1,24(sp) + 3bc03b52: 6942 ld s2,16(sp) + 3bc03b54: 69a2 ld s3,8(sp) + 3bc03b56: 6145 addi sp,sp,48 + 3bc03b58: 8082 ret + +000000003bc03b5a : + 3bc03b5a: 7179 addi sp,sp,-48 + 3bc03b5c: ec26 sd s1,24(sp) + 3bc03b5e: 84ae mv s1,a1 + 3bc03b60: 26853583 ld a1,616(a0) + 3bc03b64: 6785 lui a5,0x1 + 3bc03b66: 80078793 addi a5,a5,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc03b6a: 95be add a1,a1,a5 + 3bc03b6c: f022 sd s0,32(sp) + 3bc03b6e: 842a mv s0,a0 + 3bc03b70: 852e mv a0,a1 + 3bc03b72: f406 sd ra,40(sp) + 3bc03b74: e42e sd a1,8(sp) + 3bc03b76: bd7fd0ef jal ra,3bc0174c + 3bc03b7a: 0044979b slliw a5,s1,0x4 + 3bc03b7e: 65a2 ld a1,8(sp) + 3bc03b80: 8d5d or a0,a0,a5 + 3bc03b82: 2501 sext.w a0,a0 + 3bc03b84: bcffd0ef jal ra,3bc01752 + 3bc03b88: 8522 mv a0,s0 + 3bc03b8a: affff0ef jal ra,3bc03688 + 3bc03b8e: 4785 li a5,1 + 3bc03b90: 24940823 sb s1,592(s0) # 4250 <__BSS_SIZE__-0x19c0> + 3bc03b94: 70a2 ld ra,40(sp) + 3bc03b96: 26f42823 sw a5,624(s0) + 3bc03b9a: 7402 ld s0,32(sp) + 3bc03b9c: 64e2 ld s1,24(sp) + 3bc03b9e: 6145 addi sp,sp,48 + 3bc03ba0: 8082 ret + +000000003bc03ba2 : + 3bc03ba2: 6d4c ld a1,152(a0) + 3bc03ba4: 09850693 addi a3,a0,152 + 3bc03ba8: 05050713 addi a4,a0,80 + 3bc03bac: 00d58e63 beq a1,a3,3bc03bc8 + 3bc03bb0: fd85a683 lw a3,-40(a1) + 3bc03bb4: e689 bnez a3,3bc03bbe + 3bc03bb6: 0a052823 sw zero,176(a0) + 3bc03bba: acfff06f j 3bc03688 + 3bc03bbe: fc058593 addi a1,a1,-64 + 3bc03bc2: 853a mv a0,a4 + 3bc03bc4: babff06f j 3bc0376e + 3bc03bc8: 8082 ret + +000000003bc03bca : + 3bc03bca: 6d4c ld a1,152(a0) + 3bc03bcc: 09850693 addi a3,a0,152 + 3bc03bd0: 02d58b63 beq a1,a3,3bc03c06 + 3bc03bd4: 1141 addi sp,sp,-16 + 3bc03bd6: e022 sd s0,0(sp) + 3bc03bd8: e406 sd ra,8(sp) + 3bc03bda: fc058593 addi a1,a1,-64 + 3bc03bde: 842a mv s0,a0 + 3bc03be0: 05050713 addi a4,a0,80 + 3bc03be4: 4501 li a0,0 + 3bc03be6: c989 beqz a1,3bc03bf8 + 3bc03be8: 853a mv a0,a4 + 3bc03bea: f25ff0ef jal ra,3bc03b0e + 3bc03bee: 4785 li a5,1 + 3bc03bf0: 00f51863 bne a0,a5,3bc03c00 + 3bc03bf4: 4795 li a5,5 + 3bc03bf6: c43c sw a5,72(s0) + 3bc03bf8: 60a2 ld ra,8(sp) + 3bc03bfa: 6402 ld s0,0(sp) + 3bc03bfc: 0141 addi sp,sp,16 + 3bc03bfe: 8082 ret + 3bc03c00: c43c sw a5,72(s0) + 3bc03c02: 4505 li a0,1 + 3bc03c04: bfd5 j 3bc03bf8 + 3bc03c06: 4501 li a0,0 + 3bc03c08: 8082 ret + +000000003bc03c0a : + 3bc03c0a: 1101 addi sp,sp,-32 + 3bc03c0c: ec06 sd ra,24(sp) + 3bc03c0e: 07154703 lbu a4,113(a0) + 3bc03c12: 7d1c ld a5,56(a0) + 3bc03c14: fc77368b extu a3,a4,63,7 + 3bc03c18: 2687b583 ld a1,616(a5) + 3bc03c1c: 00f77793 andi a5,a4,15 + 3bc03c20: c295 beqz a3,3bc03c44 + 3bc03c22: 04878793 addi a5,a5,72 + 3bc03c26: 0796 slli a5,a5,0x5 + 3bc03c28: 95be add a1,a1,a5 + 3bc03c2a: 852e mv a0,a1 + 3bc03c2c: e42e sd a1,8(sp) + 3bc03c2e: b1ffd0ef jal ra,3bc0174c + 3bc03c32: 65a2 ld a1,8(sp) + 3bc03c34: 60e2 ld ra,24(sp) + 3bc03c36: 080007b7 lui a5,0x8000 + 3bc03c3a: 8d5d or a0,a0,a5 + 3bc03c3c: 2501 sext.w a0,a0 + 3bc03c3e: 6105 addi sp,sp,32 + 3bc03c40: b13fd06f j 3bc01752 + 3bc03c44: 05878793 addi a5,a5,88 # 8000058 + 3bc03c48: bff9 j 3bc03c26 + +000000003bc03c4a : + 3bc03c4a: 07154703 lbu a4,113(a0) + 3bc03c4e: cd21 beqz a0,3bc03ca6 + 3bc03c50: 6134 ld a3,64(a0) + 3bc03c52: 87aa mv a5,a0 + 3bc03c54: caa9 beqz a3,3bc03ca6 + 3bc03c56: 00f77613 andi a2,a4,15 + 3bc03c5a: c631 beqz a2,3bc03ca6 + 3bc03c5c: 0036c603 lbu a2,3(a3) # 80003 <__BSS_SIZE__+0x7a3f3> + 3bc03c60: 4685 li a3,1 + 3bc03c62: 04d60263 beq a2,a3,3bc03ca6 + 3bc03c66: 1101 addi sp,sp,-32 + 3bc03c68: ec06 sd ra,24(sp) + 3bc03c6a: cd99 beqz a1,3bc03c88 + 3bc03c6c: fc77368b extu a3,a4,63,7 + 3bc03c70: c29d beqz a3,3bc03c96 + 3bc03c72: 6534 ld a3,72(a0) + 3bc03c74: 04850713 addi a4,a0,72 + 3bc03c78: fdd00593 li a1,-35 + 3bc03c7c: 00e68d63 beq a3,a4,3bc03c96 + 3bc03c80: 60e2 ld ra,24(sp) + 3bc03c82: 852e mv a0,a1 + 3bc03c84: 6105 addi sp,sp,32 + 3bc03c86: 8082 ret + 3bc03c88: 06050823 sb zero,112(a0) + 3bc03c8c: e42e sd a1,8(sp) + 3bc03c8e: 8bbff0ef jal ra,3bc03548 + 3bc03c92: 65a2 ld a1,8(sp) + 3bc03c94: b7f5 j 3bc03c80 + 3bc03c96: 4705 li a4,1 + 3bc03c98: 06e78823 sb a4,112(a5) + 3bc03c9c: 853e mv a0,a5 + 3bc03c9e: 909ff0ef jal ra,3bc035a6 + 3bc03ca2: 4581 li a1,0 + 3bc03ca4: bff1 j 3bc03c80 + 3bc03ca6: 55a9 li a1,-22 + 3bc03ca8: 852e mv a0,a1 + 3bc03caa: 8082 ret + +000000003bc03cac : + 3bc03cac: 7d1c ld a5,56(a0) + 3bc03cae: 7179 addi sp,sp,-48 + 3bc03cb0: f022 sd s0,32(sp) + 3bc03cb2: ec26 sd s1,24(sp) + 3bc03cb4: e84a sd s2,16(sp) + 3bc03cb6: e44e sd s3,8(sp) + 3bc03cb8: f406 sd ra,40(sp) + 3bc03cba: 2687b483 ld s1,616(a5) + 3bc03cbe: 07154783 lbu a5,113(a0) + 3bc03cc2: 4905 li s2,1 + 3bc03cc4: 89aa mv s3,a0 + 3bc03cc6: 00f7f413 andi s0,a5,15 + 3bc03cca: fc77b70b extu a4,a5,63,7 + 3bc03cce: 0089193b sllw s2,s2,s0 + 3bc03cd2: cf25 beqz a4,3bc03d4a + 3bc03cd4: 04840513 addi a0,s0,72 + 3bc03cd8: 0516 slli a0,a0,0x5 + 3bc03cda: 9526 add a0,a0,s1 + 3bc03cdc: a71fd0ef jal ra,3bc0174c + 3bc03ce0: 2501 sext.w a0,a0 + 3bc03ce2: 3cf5378b extu a5,a0,15,15 + 3bc03ce6: ef9d bnez a5,3bc03d24 + 3bc03ce8: fff407b7 lui a5,0xfff40 + 3bc03cec: 17fd addi a5,a5,-1 + 3bc03cee: 8d7d and a0,a0,a5 + 3bc03cf0: 0729c783 lbu a5,114(s3) + 3bc03cf4: 04840593 addi a1,s0,72 + 3bc03cf8: 0127979b slliw a5,a5,0x12 + 3bc03cfc: 8d5d or a0,a0,a5 + 3bc03cfe: 0289d783 lhu a5,40(s3) + 3bc03d02: 80057513 andi a0,a0,-2048 + 3bc03d06: 8d5d or a0,a0,a5 + 3bc03d08: 180087b7 lui a5,0x18008 + 3bc03d0c: 8d5d or a0,a0,a5 + 3bc03d0e: 07198783 lb a5,113(s3) + 3bc03d12: 2501 sext.w a0,a0 + 3bc03d14: 0007c463 bltz a5,3bc03d1c + 3bc03d18: 05840593 addi a1,s0,88 + 3bc03d1c: 0596 slli a1,a1,0x5 + 3bc03d1e: 95a6 add a1,a1,s1 + 3bc03d20: a33fd0ef jal ra,3bc01752 + 3bc03d24: 6585 lui a1,0x1 + 3bc03d26: 81c58593 addi a1,a1,-2020 # 81c <__BSS_SIZE__-0x53f4> + 3bc03d2a: 94ae add s1,s1,a1 + 3bc03d2c: 8526 mv a0,s1 + 3bc03d2e: a1ffd0ef jal ra,3bc0174c + 3bc03d32: 2501 sext.w a0,a0 + 3bc03d34: 7402 ld s0,32(sp) + 3bc03d36: 70a2 ld ra,40(sp) + 3bc03d38: 69a2 ld s3,8(sp) + 3bc03d3a: 85a6 mv a1,s1 + 3bc03d3c: 01256533 or a0,a0,s2 + 3bc03d40: 64e2 ld s1,24(sp) + 3bc03d42: 6942 ld s2,16(sp) + 3bc03d44: 6145 addi sp,sp,48 + 3bc03d46: a0dfd06f j 3bc01752 + 3bc03d4a: 05840513 addi a0,s0,88 + 3bc03d4e: 0516 slli a0,a0,0x5 + 3bc03d50: 9526 add a0,a0,s1 + 3bc03d52: 9fbfd0ef jal ra,3bc0174c + 3bc03d56: 2501 sext.w a0,a0 + 3bc03d58: 0109191b slliw s2,s2,0x10 + 3bc03d5c: b759 j 3bc03ce2 + +000000003bc03d5e : + 3bc03d5e: 453c lw a5,72(a0) + 3bc03d60: 34079163 bnez a5,3bc040a2 + 3bc03d64: 7139 addi sp,sp,-64 + 3bc03d66: f426 sd s1,40(sp) + 3bc03d68: 25853483 ld s1,600(a0) + 3bc03d6c: f822 sd s0,48(sp) + 3bc03d6e: fa400593 li a1,-92 + 3bc03d72: 842a mv s0,a0 + 3bc03d74: 05050513 addi a0,a0,80 + 3bc03d78: ec4e sd s3,24(sp) + 3bc03d7a: fc06 sd ra,56(sp) + 3bc03d7c: f04a sd s2,32(sp) + 3bc03d7e: e852 sd s4,16(sp) + 3bc03d80: c35fe0ef jal ra,3bc029b4 + 3bc03d84: 0004c783 lbu a5,0(s1) # ffffffffbc400000 <__BL2_END__+0xffffffff807ec7f0> + 3bc03d88: 0c144703 lbu a4,193(s0) + 3bc03d8c: 0064d983 lhu s3,6(s1) + 3bc03d90: fc77b60b extu a2,a5,63,7 + 3bc03d94: 07f77693 andi a3,a4,127 + 3bc03d98: c609 beqz a2,3bc03da2 + 3bc03d9a: f8076713 ori a4,a4,-128 + 3bc03d9e: 0ff77693 andi a3,a4,255 + 3bc03da2: 0607f793 andi a5,a5,96 + 3bc03da6: 25144703 lbu a4,593(s0) + 3bc03daa: 0017b793 seqz a5,a5 + 3bc03dae: 0017979b slliw a5,a5,0x1 + 3bc03db2: 0017e793 ori a5,a5,1 + 3bc03db6: 8b8d andi a5,a5,3 + 3bc03db8: 9b71 andi a4,a4,-4 + 3bc03dba: 8fd9 or a5,a5,a4 + 3bc03dbc: 24f408a3 sb a5,593(s0) + 3bc03dc0: 0cd400a3 sb a3,193(s0) + 3bc03dc4: 8b89 andi a5,a5,2 + 3bc03dc6: 24078a63 beqz a5,3bc0401a + 3bc03dca: 0014c703 lbu a4,1(s1) + 3bc03dce: 47ad li a5,11 + 3bc03dd0: 2ae7e863 bltu a5,a4,3bc04080 + 3bc03dd4: 87ba mv a5,a4 + 3bc03dd6: 00007717 auipc a4,0x7 + 3bc03dda: 3f670713 addi a4,a4,1014 # 3bc0b1cc + 3bc03dde: 44f7478b lrw a5,a4,a5,2 + 3bc03de2: 97ba add a5,a5,a4 + 3bc03de4: 8782 jr a5 + 3bc03de6: 0024d603 lhu a2,2(s1) + 3bc03dea: 000bc537 lui a0,0xbc + 3bc03dee: 4701 li a4,0 + 3bc03df0: 4681 li a3,0 + 3bc03df2: 4585 li a1,1 + 3bc03df4: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03df8: ad7fe0ef jal ra,3bc028ce + 3bc03dfc: 0004c783 lbu a5,0(s1) + 3bc03e00: 20079d63 bnez a5,3bc0401a + 3bc03e04: 8522 mv a0,s0 + 3bc03e06: 7442 ld s0,48(sp) + 3bc03e08: 0024c583 lbu a1,2(s1) + 3bc03e0c: 70e2 ld ra,56(sp) + 3bc03e0e: 74a2 ld s1,40(sp) + 3bc03e10: 7902 ld s2,32(sp) + 3bc03e12: 69e2 ld s3,24(sp) + 3bc03e14: 6a42 ld s4,16(sp) + 3bc03e16: 6121 addi sp,sp,64 + 3bc03e18: d43ff06f j 3bc03b5a + 3bc03e1c: 0024d603 lhu a2,2(s1) + 3bc03e20: 4701 li a4,0 + 3bc03e22: 4681 li a3,0 + 3bc03e24: 4589 li a1,2 + 3bc03e26: 000bc537 lui a0,0xbc + 3bc03e2a: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03e2e: aa1fe0ef jal ra,3bc028ce + 3bc03e32: a2e5 j 3bc0401a + 3bc03e34: 4701 li a4,0 + 3bc03e36: 4681 li a3,0 + 3bc03e38: 4601 li a2,0 + 3bc03e3a: 458d li a1,3 + 3bc03e3c: b7ed j 3bc03e26 + 3bc03e3e: 4701 li a4,0 + 3bc03e40: 4681 li a3,0 + 3bc03e42: 4601 li a2,0 + 3bc03e44: 4591 li a1,4 + 3bc03e46: b7c5 j 3bc03e26 + 3bc03e48: 4701 li a4,0 + 3bc03e4a: 4681 li a3,0 + 3bc03e4c: 4601 li a2,0 + 3bc03e4e: 4595 li a1,5 + 3bc03e50: bfd9 j 3bc03e26 + 3bc03e52: 000bc537 lui a0,0xbc + 3bc03e56: 4701 li a4,0 + 3bc03e58: 4681 li a3,0 + 3bc03e5a: 4601 li a2,0 + 3bc03e5c: 4599 li a1,6 + 3bc03e5e: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03e62: a6dfe0ef jal ra,3bc028ce + 3bc03e66: 0044d503 lhu a0,4(s1) + 3bc03e6a: 1c75358b extu a1,a0,7,7 + 3bc03e6e: 07f57513 andi a0,a0,127 + 3bc03e72: c9aff0ef jal ra,3bc0330c + 3bc03e76: 00011723 sh zero,14(sp) + 3bc03e7a: 0004c583 lbu a1,0(s1) + 3bc03e7e: 892a mv s2,a0 + 3bc03e80: 00007517 auipc a0,0x7 + 3bc03e84: 33850513 addi a0,a0,824 # 3bc0b1b8 + 3bc03e88: 89bd andi a1,a1,15 + 3bc03e8a: 26843a03 ld s4,616(s0) + 3bc03e8e: ccafc0ef jal ra,3bc00358 + 3bc03e92: 0004c783 lbu a5,0(s1) + 3bc03e96: 4705 li a4,1 + 3bc03e98: 8bbd andi a5,a5,15 + 3bc03e9a: 00e78a63 beq a5,a4,3bc03eae + 3bc03e9e: 4689 li a3,2 + 3bc03ea0: 06d78b63 beq a5,a3,3bc03f16 + 3bc03ea4: 16079b63 bnez a5,3bc0401a + 3bc03ea8: 00e11723 sh a4,14(sp) + 3bc03eac: a019 j 3bc03eb2 + 3bc03eae: 00011723 sh zero,14(sp) + 3bc03eb2: 25843503 ld a0,600(s0) + 3bc03eb6: 4609 li a2,2 + 3bc03eb8: 00e10593 addi a1,sp,14 + 3bc03ebc: bbffc0ef jal ra,3bc00a7a + 3bc03ec0: 6485 lui s1,0x1 + 3bc03ec2: 26042503 lw a0,608(s0) + 3bc03ec6: 91448593 addi a1,s1,-1772 # 914 <__BSS_SIZE__-0x52fc> + 3bc03eca: 95d2 add a1,a1,s4 + 3bc03ecc: 887fd0ef jal ra,3bc01752 + 3bc03ed0: 91048593 addi a1,s1,-1776 + 3bc03ed4: 00080537 lui a0,0x80 + 3bc03ed8: 95d2 add a1,a1,s4 + 3bc03eda: 0509 addi a0,a0,2 + 3bc03edc: 90048493 addi s1,s1,-1792 + 3bc03ee0: 873fd0ef jal ra,3bc01752 + 3bc03ee4: 9a26 add s4,s4,s1 + 3bc03ee6: 8552 mv a0,s4 + 3bc03ee8: 865fd0ef jal ra,3bc0174c + 3bc03eec: c00007b7 lui a5,0xc0000 + 3bc03ef0: 17fd addi a5,a5,-1 + 3bc03ef2: 2501 sext.w a0,a0 + 3bc03ef4: 8d7d and a0,a0,a5 + 3bc03ef6: 840007b7 lui a5,0x84000 + 3bc03efa: 8d5d or a0,a0,a5 + 3bc03efc: 85d2 mv a1,s4 + 3bc03efe: 855fd0ef jal ra,3bc01752 + 3bc03f02: 47a1 li a5,8 + 3bc03f04: c43c sw a5,72(s0) + 3bc03f06: 70e2 ld ra,56(sp) + 3bc03f08: 7442 ld s0,48(sp) + 3bc03f0a: 74a2 ld s1,40(sp) + 3bc03f0c: 7902 ld s2,32(sp) + 3bc03f0e: 69e2 ld s3,24(sp) + 3bc03f10: 6a42 ld s4,16(sp) + 3bc03f12: 6121 addi sp,sp,64 + 3bc03f14: 8082 ret + 3bc03f16: 0064d703 lhu a4,6(s1) + 3bc03f1a: 10e7e063 bltu a5,a4,3bc0401a + 3bc03f1e: 2901 sext.w s2,s2 + 3bc03f20: 091e slli s2,s2,0x7 + 3bc03f22: 9922 add s2,s2,s0 + 3bc03f24: 0c094783 lbu a5,192(s2) + 3bc03f28: 00f11723 sh a5,14(sp) + 3bc03f2c: b759 j 3bc03eb2 + 3bc03f2e: 000bc537 lui a0,0xbc + 3bc03f32: 4701 li a4,0 + 3bc03f34: 4681 li a3,0 + 3bc03f36: 4601 li a2,0 + 3bc03f38: 459d li a1,7 + 3bc03f3a: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03f3e: 991fe0ef jal ra,3bc028ce + 3bc03f42: 0044d503 lhu a0,4(s1) + 3bc03f46: 1c75358b extu a1,a0,7,7 + 3bc03f4a: 07f57513 andi a0,a0,127 + 3bc03f4e: bbeff0ef jal ra,3bc0330c + 3bc03f52: 00751913 slli s2,a0,0x7 + 3bc03f56: 05090913 addi s2,s2,80 + 3bc03f5a: 9922 add s2,s2,s0 + 3bc03f5c: 03893a03 ld s4,56(s2) + 3bc03f60: 258a3703 ld a4,600(s4) + 3bc03f64: 00675783 lhu a5,6(a4) + 3bc03f68: ebcd bnez a5,3bc0401a + 3bc03f6a: 00074783 lbu a5,0(a4) + 3bc03f6e: 8bbd andi a5,a5,15 + 3bc03f70: c795 beqz a5,3bc03f9c + 3bc03f72: 4689 li a3,2 + 3bc03f74: f8d799e3 bne a5,a3,3bc03f06 + 3bc03f78: 00275783 lhu a5,2(a4) + 3bc03f7c: f7c9 bnez a5,3bc03f06 + 3bc03f7e: 07194403 lbu s0,113(s2) + 3bc03f82: 883d andi s0,s0,15 + 3bc03f84: e415 bnez s0,3bc03fb0 + 3bc03f86: 4585 li a1,1 + 3bc03f88: 8552 mv a0,s4 + 3bc03f8a: 7442 ld s0,48(sp) + 3bc03f8c: 70e2 ld ra,56(sp) + 3bc03f8e: 74a2 ld s1,40(sp) + 3bc03f90: 7902 ld s2,32(sp) + 3bc03f92: 69e2 ld s3,24(sp) + 3bc03f94: 6a42 ld s4,16(sp) + 3bc03f96: 6121 addi sp,sp,64 + 3bc03f98: f6eff06f j 3bc03706 + 3bc03f9c: 8552 mv a0,s4 + 3bc03f9e: 7442 ld s0,48(sp) + 3bc03fa0: 70e2 ld ra,56(sp) + 3bc03fa2: 74a2 ld s1,40(sp) + 3bc03fa4: 7902 ld s2,32(sp) + 3bc03fa6: 69e2 ld s3,24(sp) + 3bc03fa8: 6a42 ld s4,16(sp) + 3bc03faa: 6121 addi sp,sp,64 + 3bc03fac: edcff06f j 3bc03688 + 3bc03fb0: 8552 mv a0,s4 + 3bc03fb2: ed6ff0ef jal ra,3bc03688 + 3bc03fb6: 854a mv a0,s2 + 3bc03fb8: d90ff0ef jal ra,3bc03548 + 3bc03fbc: 854a mv a0,s2 + 3bc03fbe: cefff0ef jal ra,3bc03cac + 3bc03fc2: 4785 li a5,1 + 3bc03fc4: 06090823 sb zero,112(s2) + 3bc03fc8: 268a0a23 sb s0,628(s4) + 3bc03fcc: 26fa0aa3 sb a5,629(s4) + 3bc03fd0: bf1d j 3bc03f06 + 3bc03fd2: 000bc537 lui a0,0xbc + 3bc03fd6: 4701 li a4,0 + 3bc03fd8: 4681 li a3,0 + 3bc03fda: 4601 li a2,0 + 3bc03fdc: 45a1 li a1,8 + 3bc03fde: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03fe2: 8edfe0ef jal ra,3bc028ce + 3bc03fe6: 0044d503 lhu a0,4(s1) + 3bc03fea: 1c75358b extu a1,a0,7,7 + 3bc03fee: 07f57513 andi a0,a0,127 + 3bc03ff2: b1aff0ef jal ra,3bc0330c + 3bc03ff6: 051e slli a0,a0,0x7 + 3bc03ff8: 05050513 addi a0,a0,80 + 3bc03ffc: 9522 add a0,a0,s0 + 3bc03ffe: 03853903 ld s2,56(a0) + 3bc04002: 25893783 ld a5,600(s2) + 3bc04006: 0067d703 lhu a4,6(a5) # ffffffff84000006 <__BL2_END__+0xffffffff483ec7f6> + 3bc0400a: eb01 bnez a4,3bc0401a + 3bc0400c: 0007c703 lbu a4,0(a5) + 3bc04010: 8b3d andi a4,a4,15 + 3bc04012: cb15 beqz a4,3bc04046 + 3bc04014: 4689 li a3,2 + 3bc04016: 04d70563 beq a4,a3,3bc04060 + 3bc0401a: 7c1c ld a5,56(s0) + 3bc0401c: cfbd beqz a5,3bc0409a + 3bc0401e: 739c ld a5,32(a5) + 3bc04020: 85a6 mv a1,s1 + 3bc04022: 8522 mv a0,s0 + 3bc04024: 9782 jalr a5 + 3bc04026: 06055263 bgez a0,3bc0408a + 3bc0402a: 0064d783 lhu a5,6(s1) + 3bc0402e: 4585 li a1,1 + 3bc04030: c789 beqz a5,3bc0403a + 3bc04032: 0c140583 lb a1,193(s0) + 3bc04036: 01f5d59b srliw a1,a1,0x1f + 3bc0403a: 6448 ld a0,136(s0) + 3bc0403c: ecaff0ef jal ra,3bc03706 + 3bc04040: 04042423 sw zero,72(s0) + 3bc04044: b5c9 j 3bc03f06 + 3bc04046: 0027d683 lhu a3,2(a5) + 3bc0404a: 4709 li a4,2 + 3bc0404c: 00e69863 bne a3,a4,3bc0405c + 3bc04050: 0047d783 lhu a5,4(a5) + 3bc04054: 0087d79b srliw a5,a5,0x8 + 3bc04058: 26f90b23 sb a5,630(s2) + 3bc0405c: 854a mv a0,s2 + 3bc0405e: b781 j 3bc03f9e + 3bc04060: 0027d783 lhu a5,2(a5) + 3bc04064: ffe5 bnez a5,3bc0405c + 3bc04066: 07154783 lbu a5,113(a0) + 3bc0406a: 8bbd andi a5,a5,15 + 3bc0406c: e781 bnez a5,3bc04074 + 3bc0406e: 4585 li a1,1 + 3bc04070: 854a mv a0,s2 + 3bc04072: bf21 j 3bc03f8a + 3bc04074: 4785 li a5,1 + 3bc04076: 06f50823 sb a5,112(a0) + 3bc0407a: d2cff0ef jal ra,3bc035a6 + 3bc0407e: bff9 j 3bc0405c + 3bc04080: 4701 li a4,0 + 3bc04082: 4681 li a3,0 + 3bc04084: 4601 li a2,0 + 3bc04086: 45a5 li a1,9 + 3bc04088: bb79 j 3bc03e26 + 3bc0408a: 25144783 lbu a5,593(s0) + 3bc0408e: 0017f713 andi a4,a5,1 + 3bc04092: c701 beqz a4,3bc0409a + 3bc04094: 9bf9 andi a5,a5,-2 + 3bc04096: 24f408a3 sb a5,593(s0) + 3bc0409a: e60996e3 bnez s3,3bc03f06 + 3bc0409e: 8522 mv a0,s0 + 3bc040a0: bdfd j 3bc03f9e + 3bc040a2: 8082 ret + +000000003bc040a4 : + 3bc040a4: 7119 addi sp,sp,-128 + 3bc040a6: ecce sd s3,88(sp) + 3bc040a8: 2685b983 ld s3,616(a1) + 3bc040ac: f0ca sd s2,96(sp) + 3bc040ae: f8a2 sd s0,112(sp) + 3bc040b0: 01498913 addi s2,s3,20 + 3bc040b4: 854a mv a0,s2 + 3bc040b6: f4a6 sd s1,104(sp) + 3bc040b8: e0da sd s6,64(sp) + 3bc040ba: fc86 sd ra,120(sp) + 3bc040bc: e8d2 sd s4,80(sp) + 3bc040be: e4d6 sd s5,72(sp) + 3bc040c0: fc5e sd s7,56(sp) + 3bc040c2: f862 sd s8,48(sp) + 3bc040c4: f466 sd s9,40(sp) + 3bc040c6: f06a sd s10,32(sp) + 3bc040c8: ec6e sd s11,24(sp) + 3bc040ca: 842e mv s0,a1 + 3bc040cc: 01898b13 addi s6,s3,24 + 3bc040d0: e7cfd0ef jal ra,3bc0174c + 3bc040d4: 0005049b sext.w s1,a0 + 3bc040d8: 855a mv a0,s6 + 3bc040da: e72fd0ef jal ra,3bc0174c + 3bc040de: 1c048563 beqz s1,3bc042a8 + 3bc040e2: 4430 lw a2,72(s0) + 3bc040e4: 00050a9b sext.w s5,a0 + 3bc040e8: 6505 lui a0,0x1 + 3bc040ea: 81850513 addi a0,a0,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc040ee: 954e add a0,a0,s3 + 3bc040f0: e432 sd a2,8(sp) + 3bc040f2: e5afd0ef jal ra,3bc0174c + 3bc040f6: 6622 ld a2,8(sp) + 3bc040f8: 0005069b sext.w a3,a0 + 3bc040fc: 653d lui a0,0xf + 3bc040fe: 4701 li a4,0 + 3bc04100: 85a6 mv a1,s1 + 3bc04102: 153d addi a0,a0,-17 + 3bc04104: fcafe0ef jal ra,3bc028ce + 3bc04108: 0104f793 andi a5,s1,16 + 3bc0410c: c3b5 beqz a5,3bc04170 + 3bc0410e: 85da mv a1,s6 + 3bc04110: fefaf513 andi a0,s5,-17 + 3bc04114: e3efd0ef jal ra,3bc01752 + 3bc04118: 02098513 addi a0,s3,32 + 3bc0411c: e30fd0ef jal ra,3bc0174c + 3bc04120: 00f57b93 andi s7,a0,15 + 3bc04124: 00050a1b sext.w s4,a0 + 3bc04128: 4581 li a1,0 + 3bc0412a: 855e mv a0,s7 + 3bc0412c: 9e0ff0ef jal ra,3bc0330c + 3bc04130: 001e07b7 lui a5,0x1e0 + 3bc04134: 00fa77b3 and a5,s4,a5 + 3bc04138: 00040737 lui a4,0x40 + 3bc0413c: 18e79663 bne a5,a4,3bc042c8 + 3bc04140: 384a3a0b extu s4,s4,14,4 + 3bc04144: 020a0163 beqz s4,3bc04166 + 3bc04148: 0005079b sext.w a5,a0 + 3bc0414c: 079e slli a5,a5,0x7 + 3bc0414e: 97a2 add a5,a5,s0 + 3bc04150: 0987bc03 ld s8,152(a5) # 1e0098 <__BSS_SIZE__+0x1da488> + 3bc04154: 86d2 mv a3,s4 + 3bc04156: 85de mv a1,s7 + 3bc04158: fd0c3603 ld a2,-48(s8) + 3bc0415c: 8522 mv a0,s0 + 3bc0415e: 96dff0ef jal ra,3bc03aca + 3bc04162: ff4c2023 sw s4,-32(s8) + 3bc04166: 85da mv a1,s6 + 3bc04168: 010ae513 ori a0,s5,16 + 3bc0416c: de6fd0ef jal ra,3bc01752 + 3bc04170: 34d4b78b extu a5,s1,13,13 + 3bc04174: cb9d beqz a5,3bc041aa + 3bc04176: 85ca mv a1,s2 + 3bc04178: 6509 lui a0,0x2 + 3bc0417a: dd8fd0ef jal ra,3bc01752 + 3bc0417e: 6505 lui a0,0x1 + 3bc04180: 80850513 addi a0,a0,-2040 # 808 <__BSS_SIZE__-0x5408> + 3bc04184: 954e add a0,a0,s3 + 3bc04186: dc6fd0ef jal ra,3bc0174c + 3bc0418a: 8919 andi a0,a0,6 + 3bc0418c: 14050b63 beqz a0,3bc042e2 + 3bc04190: 4589 li a1,2 + 3bc04192: 8522 mv a0,s0 + 3bc04194: b26ff0ef jal ra,3bc034ba + 3bc04198: 6509 lui a0,0x2 + 3bc0419a: 4701 li a4,0 + 3bc0419c: 4681 li a3,0 + 3bc0419e: 4601 li a2,0 + 3bc041a0: 4589 li a1,2 + 3bc041a2: 22250513 addi a0,a0,546 # 2222 <__BSS_SIZE__-0x39ee> + 3bc041a6: f28fe0ef jal ra,3bc028ce + 3bc041aa: 4004f793 andi a5,s1,1024 + 3bc041ae: c791 beqz a5,3bc041ba + 3bc041b0: 85ca mv a1,s2 + 3bc041b2: 40000513 li a0,1024 + 3bc041b6: d9cfd0ef jal ra,3bc01752 + 3bc041ba: 6505 lui a0,0x1 + 3bc041bc: 80050a13 addi s4,a0,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc041c0: 0144f7b3 and a5,s1,s4 + 3bc041c4: c395 beqz a5,3bc041e8 + 3bc041c6: 80850513 addi a0,a0,-2040 + 3bc041ca: 954e add a0,a0,s3 + 3bc041cc: d80fd0ef jal ra,3bc0174c + 3bc041d0: 85ca mv a1,s2 + 3bc041d2: 8552 mv a0,s4 + 3bc041d4: d7efd0ef jal ra,3bc01752 + 3bc041d8: 501c lw a5,32(s0) + 3bc041da: c799 beqz a5,3bc041e8 + 3bc041dc: 7c1c ld a5,56(s0) + 3bc041de: c789 beqz a5,3bc041e8 + 3bc041e0: 7b9c ld a5,48(a5) + 3bc041e2: c399 beqz a5,3bc041e8 + 3bc041e4: 8522 mv a0,s0 + 3bc041e6: 9782 jalr a5 + 3bc041e8: 0004df63 bgez s1,3bc04206 + 3bc041ec: 85ca mv a1,s2 + 3bc041ee: 80000537 lui a0,0x80000 + 3bc041f2: d60fd0ef jal ra,3bc01752 + 3bc041f6: 501c lw a5,32(s0) + 3bc041f8: c799 beqz a5,3bc04206 + 3bc041fa: 7c1c ld a5,56(s0) + 3bc041fc: c789 beqz a5,3bc04206 + 3bc041fe: 7f9c ld a5,56(a5) + 3bc04200: c399 beqz a5,3bc04206 + 3bc04202: 8522 mv a0,s0 + 3bc04204: 9782 jalr a5 + 3bc04206: 008017b7 lui a5,0x801 + 3bc0420a: 8fe5 and a5,a5,s1 + 3bc0420c: c3bd beqz a5,3bc04272 + 3bc0420e: 854e mv a0,s3 + 3bc04210: d3cfd0ef jal ra,3bc0174c + 3bc04214: 0005099b sext.w s3,a0 + 3bc04218: 6505 lui a0,0x1 + 3bc0421a: 4701 li a4,0 + 3bc0421c: 4681 li a3,0 + 3bc0421e: 4601 li a2,0 + 3bc04220: 85ce mv a1,s3 + 3bc04222: 11150513 addi a0,a0,273 # 1111 <__BSS_SIZE__-0x4aff> + 3bc04226: ea8fe0ef jal ra,3bc028ce + 3bc0422a: 30c4b78b extu a5,s1,12,12 + 3bc0422e: c789 beqz a5,3bc04238 + 3bc04230: 85ca mv a1,s2 + 3bc04232: 6505 lui a0,0x1 + 3bc04234: d1efd0ef jal ra,3bc01752 + 3bc04238: 5d74b78b extu a5,s1,23,23 + 3bc0423c: c791 beqz a5,3bc04248 + 3bc0423e: 85ca mv a1,s2 + 3bc04240: 00800537 lui a0,0x800 + 3bc04244: d0efd0ef jal ra,3bc01752 + 3bc04248: 000c0537 lui a0,0xc0 + 3bc0424c: 00a9f9b3 and s3,s3,a0 + 3bc04250: 000c07b7 lui a5,0xc0 + 3bc04254: 00f99f63 bne s3,a5,3bc04272 + 3bc04258: 27042903 lw s2,624(s0) + 3bc0425c: 8522 mv a0,s0 + 3bc0425e: 9d5fe0ef jal ra,3bc02c32 + 3bc04262: 00090663 beqz s2,3bc0426e + 3bc04266: 4585 li a1,1 + 3bc04268: 8522 mv a0,s0 + 3bc0426a: cbffe0ef jal ra,3bc02f28 + 3bc0426e: 04042423 sw zero,72(s0) + 3bc04272: 4924b78b extu a5,s1,18,18 + 3bc04276: e7c1 bnez a5,3bc042fe + 3bc04278: 4d34b48b extu s1,s1,19,19 + 3bc0427c: c495 beqz s1,3bc042a8 + 3bc0427e: 26843b03 ld s6,616(s0) + 3bc04282: 6505 lui a0,0x1 + 3bc04284: 81850513 addi a0,a0,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc04288: 955a add a0,a0,s6 + 3bc0428a: cc2fd0ef jal ra,3bc0174c + 3bc0428e: 00066a37 lui s4,0x66 + 3bc04292: 6a8d lui s5,0x3 + 3bc04294: 7d05398b extu s3,a0,31,16 + 3bc04298: 4901 li s2,0 + 3bc0429a: 4b99 li s7,6 + 3bc0429c: 666a0a13 addi s4,s4,1638 # 66666 <__BSS_SIZE__+0x60a56> + 3bc042a0: 333a8a93 addi s5,s5,819 # 3333 <__BSS_SIZE__-0x28dd> + 3bc042a4: 2a099963 bnez s3,3bc04556 + 3bc042a8: 70e6 ld ra,120(sp) + 3bc042aa: 7446 ld s0,112(sp) + 3bc042ac: 74a6 ld s1,104(sp) + 3bc042ae: 7906 ld s2,96(sp) + 3bc042b0: 69e6 ld s3,88(sp) + 3bc042b2: 6a46 ld s4,80(sp) + 3bc042b4: 6aa6 ld s5,72(sp) + 3bc042b6: 6b06 ld s6,64(sp) + 3bc042b8: 7be2 ld s7,56(sp) + 3bc042ba: 7c42 ld s8,48(sp) + 3bc042bc: 7ca2 ld s9,40(sp) + 3bc042be: 7d02 ld s10,32(sp) + 3bc042c0: 6de2 ld s11,24(sp) + 3bc042c2: 4501 li a0,0 + 3bc042c4: 6109 addi sp,sp,128 + 3bc042c6: 8082 ret + 3bc042c8: 000c0737 lui a4,0xc0 + 3bc042cc: e8e79de3 bne a5,a4,3bc04166 + 3bc042d0: 25843603 ld a2,600(s0) + 3bc042d4: 384a368b extu a3,s4,14,4 + 3bc042d8: 85de mv a1,s7 + 3bc042da: 8522 mv a0,s0 + 3bc042dc: feeff0ef jal ra,3bc03aca + 3bc042e0: b559 j 3bc04166 + 3bc042e2: 6509 lui a0,0x2 + 3bc042e4: 4701 li a4,0 + 3bc042e6: 4681 li a3,0 + 3bc042e8: 4601 li a2,0 + 3bc042ea: 4585 li a1,1 + 3bc042ec: 22250513 addi a0,a0,546 # 2222 <__BSS_SIZE__-0x39ee> + 3bc042f0: ddefe0ef jal ra,3bc028ce + 3bc042f4: 458d li a1,3 + 3bc042f6: 8522 mv a0,s0 + 3bc042f8: 9c2ff0ef jal ra,3bc034ba + 3bc042fc: b57d j 3bc041aa + 3bc042fe: 26843a03 ld s4,616(s0) + 3bc04302: 6a85 lui s5,0x1 + 3bc04304: 818a8513 addi a0,s5,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc04308: 9552 add a0,a0,s4 + 3bc0430a: c42fd0ef jal ra,3bc0174c + 3bc0430e: 00737b37 lui s6,0x737 + 3bc04312: 00747bb7 lui s7,0x747 + 3bc04316: 00055c37 lui s8,0x55 + 3bc0431a: 3c05398b extu s3,a0,15,0 + 3bc0431e: 4901 li s2,0 + 3bc04320: 373b0b13 addi s6,s6,883 # 737373 <__BSS_SIZE__+0x731763> + 3bc04324: 474b8b93 addi s7,s7,1140 # 747474 <__BSS_SIZE__+0x741864> + 3bc04328: 555c0c13 addi s8,s8,1365 # 55555 <__BSS_SIZE__+0x4f945> + 3bc0432c: 804a8a93 addi s5,s5,-2044 + 3bc04330: f40984e3 beqz s3,3bc04278 + 3bc04334: 0019f793 andi a5,s3,1 + 3bc04338: 1c078163 beqz a5,3bc044fa + 3bc0433c: 04890c93 addi s9,s2,72 + 3bc04340: 0c96 slli s9,s9,0x5 + 3bc04342: 008c8d93 addi s11,s9,8 + 3bc04346: 9dd2 add s11,s11,s4 + 3bc04348: 856e mv a0,s11 + 3bc0434a: c02fd0ef jal ra,3bc0174c + 3bc0434e: 00050d1b sext.w s10,a0 + 3bc04352: 010c8513 addi a0,s9,16 + 3bc04356: 9552 add a0,a0,s4 + 3bc04358: bf4fd0ef jal ra,3bc0174c + 3bc0435c: 0005069b sext.w a3,a0 + 3bc04360: 019a0533 add a0,s4,s9 + 3bc04364: e436 sd a3,8(sp) + 3bc04366: be6fd0ef jal ra,3bc0174c + 3bc0436a: 66a2 ld a3,8(sp) + 3bc0436c: 0005071b sext.w a4,a0 + 3bc04370: 866a mv a2,s10 + 3bc04372: 85ca mv a1,s2 + 3bc04374: 855a mv a0,s6 + 3bc04376: d58fe0ef jal ra,3bc028ce + 3bc0437a: 014c8513 addi a0,s9,20 + 3bc0437e: 9552 add a0,a0,s4 + 3bc04380: bccfd0ef jal ra,3bc0174c + 3bc04384: 0ce1 addi s9,s9,24 + 3bc04386: 0005059b sext.w a1,a0 + 3bc0438a: 019a0533 add a0,s4,s9 + 3bc0438e: e42e sd a1,8(sp) + 3bc04390: bbcfd0ef jal ra,3bc0174c + 3bc04394: 65a2 ld a1,8(sp) + 3bc04396: 0005061b sext.w a2,a0 + 3bc0439a: 4701 li a4,0 + 3bc0439c: 4681 li a3,0 + 3bc0439e: 855e mv a0,s7 + 3bc043a0: d2efe0ef jal ra,3bc028ce + 3bc043a4: 856a mv a0,s10 + 3bc043a6: 85ee mv a1,s11 + 3bc043a8: 001d7d13 andi s10,s10,1 + 3bc043ac: ba6fd0ef jal ra,3bc01752 + 3bc043b0: 140d0563 beqz s10,3bc044fa + 3bc043b4: 4585 li a1,1 + 3bc043b6: 854a mv a0,s2 + 3bc043b8: f55fe0ef jal ra,3bc0330c + 3bc043bc: 00050c9b sext.w s9,a0 + 3bc043c0: 0c9e slli s9,s9,0x7 + 3bc043c2: 01940833 add a6,s0,s9 + 3bc043c6: 09883603 ld a2,152(a6) + 3bc043ca: 00751d13 slli s10,a0,0x7 + 3bc043ce: 098d0d93 addi s11,s10,152 + 3bc043d2: 442c lw a1,72(s0) + 3bc043d4: 9da2 add s11,s11,s0 + 3bc043d6: 41b60633 sub a2,a2,s11 + 3bc043da: 00163613 seqz a2,a2 + 3bc043de: 4701 li a4,0 + 3bc043e0: 4681 li a3,0 + 3bc043e2: 8562 mv a0,s8 + 3bc043e4: e442 sd a6,8(sp) + 3bc043e6: ce8fe0ef jal ra,3bc028ce + 3bc043ea: 4430 lw a2,72(s0) + 3bc043ec: 47a1 li a5,8 + 3bc043ee: 6822 ld a6,8(sp) + 3bc043f0: 00f61a63 bne a2,a5,3bc04404 + 3bc043f4: 4799 li a5,6 + 3bc043f6: c43c sw a5,72(s0) + 3bc043f8: 8522 mv a0,s0 + 3bc043fa: a0eff0ef jal ra,3bc03608 + 3bc043fe: 04090c63 beqz s2,3bc04456 + 3bc04402: a8e5 j 3bc044fa + 3bc04404: 09883703 ld a4,152(a6) + 3bc04408: feed8be3 beq s11,a4,3bc043fe + 3bc0440c: ffc72303 lw t1,-4(a4) # bfffc <__BSS_SIZE__+0xba3ec> + 3bc04410: fd872883 lw a7,-40(a4) + 3bc04414: 0b082783 lw a5,176(a6) + 3bc04418: 050d0513 addi a0,s10,80 + 3bc0441c: 40688e3b subw t3,a7,t1 + 3bc04420: 0007869b sext.w a3,a5 + 3bc04424: 000e081b sext.w a6,t3 + 3bc04428: 00d836b3 sltu a3,a6,a3 + 3bc0442c: 0016c693 xori a3,a3,1 + 3bc04430: 40de178b mveqz a5,t3,a3 + 3bc04434: 006786bb addw a3,a5,t1 + 3bc04438: fed72e23 sw a3,-4(a4) + 3bc0443c: 9522 add a0,a0,s0 + 3bc0443e: fc070593 addi a1,a4,-64 + 3bc04442: 08091c63 bnez s2,3bc044da + 3bc04446: 4785 li a5,1 + 3bc04448: 06f61463 bne a2,a5,3bc044b0 + 3bc0444c: ec2ff0ef jal ra,3bc03b0e + 3bc04450: c119 beqz a0,3bc04456 + 3bc04452: 4795 li a5,5 + 3bc04454: c43c sw a5,72(s0) + 3bc04456: 27644783 lbu a5,630(s0) + 3bc0445a: c3a9 beqz a5,3bc0449c + 3bc0445c: 26843d03 ld s10,616(s0) + 3bc04460: 00078d9b sext.w s11,a5 + 3bc04464: e43e sd a5,8(sp) + 3bc04466: 9d56 add s10,s10,s5 + 3bc04468: 856a mv a0,s10 + 3bc0446a: ae2fd0ef jal ra,3bc0174c + 3bc0446e: 67a2 ld a5,8(sp) + 3bc04470: 00050c9b sext.w s9,a0 + 3bc04474: 4711 li a4,4 + 3bc04476: 37fd addiw a5,a5,-1 + 3bc04478: f8fcfc93 andi s9,s9,-113 + 3bc0447c: 02f76063 bltu a4,a5,3bc0449c + 3bc04480: 85ee mv a1,s11 + 3bc04482: 00007517 auipc a0,0x7 + 3bc04486: d7e50513 addi a0,a0,-642 # 3bc0b200 + 3bc0448a: ecffb0ef jal ra,3bc00358 + 3bc0448e: 004d9513 slli a0,s11,0x4 + 3bc04492: 85ea mv a1,s10 + 3bc04494: 01956533 or a0,a0,s9 + 3bc04498: abafd0ef jal ra,3bc01752 + 3bc0449c: 443c lw a5,72(s0) + 3bc0449e: 471d li a4,7 + 3bc044a0: 06e79363 bne a5,a4,3bc04506 + 3bc044a4: 04042423 sw zero,72(s0) + 3bc044a8: 8522 mv a0,s0 + 3bc044aa: c6aff0ef jal ra,3bc03914 + 3bc044ae: a8a9 j 3bc04508 + 3bc044b0: 479d li a5,7 + 3bc044b2: 00f61863 bne a2,a5,3bc044c2 + 3bc044b6: 4601 li a2,0 + 3bc044b8: c68fe0ef jal ra,3bc02920 + 3bc044bc: 04042423 sw zero,72(s0) + 3bc044c0: bf59 j 3bc04456 + 3bc044c2: 4795 li a5,5 + 3bc044c4: f8f619e3 bne a2,a5,3bc04456 + 3bc044c8: 4601 li a2,0 + 3bc044ca: c56fe0ef jal ra,3bc02920 + 3bc044ce: 4799 li a5,6 + 3bc044d0: c43c sw a5,72(s0) + 3bc044d2: 8522 mv a0,s0 + 3bc044d4: 934ff0ef jal ra,3bc03608 + 3bc044d8: bfbd j 3bc04456 + 3bc044da: 00d89763 bne a7,a3,3bc044e8 + 3bc044de: 4601 li a2,0 + 3bc044e0: e42a sd a0,8(sp) + 3bc044e2: c3efe0ef jal ra,3bc02920 + 3bc044e6: 6522 ld a0,8(sp) + 3bc044e8: 9ca2 add s9,s9,s0 + 3bc044ea: 098cb583 ld a1,152(s9) + 3bc044ee: 00bd8663 beq s11,a1,3bc044fa + 3bc044f2: fc058593 addi a1,a1,-64 + 3bc044f6: c78ff0ef jal ra,3bc0396e + 3bc044fa: 2905 addiw s2,s2,1 + 3bc044fc: 0ff97913 andi s2,s2,255 + 3bc04500: 0019d993 srli s3,s3,0x1 + 3bc04504: b535 j 3bc04330 + 3bc04506: d3cd beqz a5,3bc044a8 + 3bc04508: 27544703 lbu a4,629(s0) + 3bc0450c: 4785 li a5,1 + 3bc0450e: fef716e3 bne a4,a5,3bc044fa + 3bc04512: 27444503 lbu a0,628(s0) + 3bc04516: 4585 li a1,1 + 3bc04518: df5fe0ef jal ra,3bc0330c + 3bc0451c: 0005071b sext.w a4,a0 + 3bc04520: 071e slli a4,a4,0x7 + 3bc04522: 9722 add a4,a4,s0 + 3bc04524: 00751793 slli a5,a0,0x7 + 3bc04528: 6f4c ld a1,152(a4) + 3bc0452a: 05078513 addi a0,a5,80 # c0050 <__BSS_SIZE__+0xba440> + 3bc0452e: 09878793 addi a5,a5,152 + 3bc04532: 97a2 add a5,a5,s0 + 3bc04534: 9522 add a0,a0,s0 + 3bc04536: 00f58a63 beq a1,a5,3bc0454a + 3bc0453a: 0c170783 lb a5,193(a4) + 3bc0453e: fc058593 addi a1,a1,-64 + 3bc04542: 0007d763 bgez a5,3bc04550 + 3bc04546: c28ff0ef jal ra,3bc0396e + 3bc0454a: 26040aa3 sb zero,629(s0) + 3bc0454e: b775 j 3bc044fa + 3bc04550: a1eff0ef jal ra,3bc0376e + 3bc04554: bfdd j 3bc0454a + 3bc04556: 0019f793 andi a5,s3,1 + 3bc0455a: c3a1 beqz a5,3bc0459a + 3bc0455c: 05890493 addi s1,s2,88 + 3bc04560: 0496 slli s1,s1,0x5 + 3bc04562: 04a1 addi s1,s1,8 + 3bc04564: 94da add s1,s1,s6 + 3bc04566: 8526 mv a0,s1 + 3bc04568: 9e4fd0ef jal ra,3bc0174c + 3bc0456c: 0005061b sext.w a2,a0 + 3bc04570: 8532 mv a0,a2 + 3bc04572: 85a6 mv a1,s1 + 3bc04574: e432 sd a2,8(sp) + 3bc04576: 9dcfd0ef jal ra,3bc01752 + 3bc0457a: 6622 ld a2,8(sp) + 3bc0457c: 06091063 bnez s2,3bc045dc + 3bc04580: 00867793 andi a5,a2,8 + 3bc04584: c38d beqz a5,3bc045a6 + 3bc04586: 8556 mv a0,s5 + 3bc04588: 4701 li a4,0 + 3bc0458a: 4681 li a3,0 + 3bc0458c: 4601 li a2,0 + 3bc0458e: 4581 li a1,0 + 3bc04590: b3efe0ef jal ra,3bc028ce + 3bc04594: 8522 mv a0,s0 + 3bc04596: fc8ff0ef jal ra,3bc03d5e + 3bc0459a: 2905 addiw s2,s2,1 + 3bc0459c: 0ff97913 andi s2,s2,255 + 3bc045a0: 0019d993 srli s3,s3,0x1 + 3bc045a4: b301 j 3bc042a4 + 3bc045a6: 00167793 andi a5,a2,1 + 3bc045aa: dbe5 beqz a5,3bc0459a + 3bc045ac: 443c lw a5,72(s0) + 3bc045ae: 4701 li a4,0 + 3bc045b0: 4681 li a3,0 + 3bc045b2: 01778b63 beq a5,s7,3bc045c8 + 3bc045b6: 4585 li a1,1 + 3bc045b8: 8552 mv a0,s4 + 3bc045ba: b14fe0ef jal ra,3bc028ce + 3bc045be: 4581 li a1,0 + 3bc045c0: 8522 mv a0,s0 + 3bc045c2: a56ff0ef jal ra,3bc03818 + 3bc045c6: bfd1 j 3bc0459a + 3bc045c8: 8552 mv a0,s4 + 3bc045ca: 4589 li a1,2 + 3bc045cc: b02fe0ef jal ra,3bc028ce + 3bc045d0: 8522 mv a0,s0 + 3bc045d2: 04042423 sw zero,72(s0) + 3bc045d6: b3eff0ef jal ra,3bc03914 + 3bc045da: b7c1 j 3bc0459a + 3bc045dc: 8a05 andi a2,a2,1 + 3bc045de: de55 beqz a2,3bc0459a + 3bc045e0: 85ca mv a1,s2 + 3bc045e2: bff9 j 3bc045c0 + +000000003bc045e4 : + 3bc045e4: 07158703 lb a4,113(a1) + 3bc045e8: 00075663 bgez a4,3bc045f4 + 3bc045ec: 4705 li a4,1 + 3bc045ee: c538 sw a4,72(a0) + 3bc045f0: ddaff06f j 3bc03bca + 3bc045f4: 4711 li a4,4 + 3bc045f6: c538 sw a4,72(a0) + 3bc045f8: daaff06f j 3bc03ba2 + +000000003bc045fc : + 3bc045fc: e581 bnez a1,3bc04604 + 3bc045fe: 57a9 li a5,-22 + 3bc04600: 853e mv a0,a5 + 3bc04602: 8082 ret + 3bc04604: 759c ld a5,40(a1) + 3bc04606: dfe5 beqz a5,3bc045fe + 3bc04608: 699c ld a5,16(a1) + 3bc0460a: dbf5 beqz a5,3bc045fe + 3bc0460c: 61bc ld a5,64(a1) + 3bc0460e: 7179 addi sp,sp,-48 + 3bc04610: e84a sd s2,16(sp) + 3bc04612: f406 sd ra,40(sp) + 3bc04614: f022 sd s0,32(sp) + 3bc04616: ec26 sd s1,24(sp) + 3bc04618: e44e sd s3,8(sp) + 3bc0461a: 04058913 addi s2,a1,64 + 3bc0461e: 06f91763 bne s2,a5,3bc0468c + 3bc04622: c52d beqz a0,3bc0468c + 3bc04624: 613c ld a5,64(a0) + 3bc04626: 84ae mv s1,a1 + 3bc04628: 842a mv s0,a0 + 3bc0462a: cbb9 beqz a5,3bc04680 + 3bc0462c: 7c08 ld a0,56(s0) + 3bc0462e: 07144683 lbu a3,113(s0) + 3bc04632: fc600793 li a5,-58 + 3bc04636: 7d18 ld a4,56(a0) + 3bc04638: cb39 beqz a4,3bc0468e + 3bc0463a: 5118 lw a4,32(a0) + 3bc0463c: fc600793 li a5,-58 + 3bc04640: c739 beqz a4,3bc0468e + 3bc04642: 4785 li a5,1 + 3bc04644: 1782 slli a5,a5,0x20 + 3bc04646: fdc78793 addi a5,a5,-36 + 3bc0464a: 26853703 ld a4,616(a0) + 3bc0464e: fc9c sd a5,56(s1) + 3bc04650: 643c ld a5,72(s0) + 3bc04652: 04840993 addi s3,s0,72 + 3bc04656: 04f99f63 bne s3,a5,3bc046b4 + 3bc0465a: 07044783 lbu a5,112(s0) + 3bc0465e: ebb9 bnez a5,3bc046b4 + 3bc04660: 00f6f793 andi a5,a3,15 + 3bc04664: ef8d bnez a5,3bc0469e + 3bc04666: 683c ld a5,80(s0) + 3bc04668: 05243823 sd s2,80(s0) + 3bc0466c: 0534b023 sd s3,64(s1) + 3bc04670: e4bc sd a5,72(s1) + 3bc04672: 0127b023 sd s2,0(a5) + 3bc04676: 85a2 mv a1,s0 + 3bc04678: f6dff0ef jal ra,3bc045e4 + 3bc0467c: 4781 li a5,0 + 3bc0467e: a801 j 3bc0468e + 3bc04680: 01853983 ld s3,24(a0) + 3bc04684: a4cfe0ef jal ra,3bc028d0 + 3bc04688: faa982e3 beq s3,a0,3bc0462c + 3bc0468c: 57a9 li a5,-22 + 3bc0468e: 70a2 ld ra,40(sp) + 3bc04690: 7402 ld s0,32(sp) + 3bc04692: 64e2 ld s1,24(sp) + 3bc04694: 6942 ld s2,16(sp) + 3bc04696: 69a2 ld s3,8(sp) + 3bc04698: 853e mv a0,a5 + 3bc0469a: 6145 addi sp,sp,48 + 3bc0469c: 8082 ret + 3bc0469e: fc76b78b extu a5,a3,63,7 + 3bc046a2: 01470513 addi a0,a4,20 + 3bc046a6: c385 beqz a5,3bc046c6 + 3bc046a8: 8a4fd0ef jal ra,3bc0174c + 3bc046ac: 85a6 mv a1,s1 + 3bc046ae: 8522 mv a0,s0 + 3bc046b0: abeff0ef jal ra,3bc0396e + 3bc046b4: 683c ld a5,80(s0) + 3bc046b6: 05243823 sd s2,80(s0) + 3bc046ba: 0534b023 sd s3,64(s1) + 3bc046be: e4bc sd a5,72(s1) + 3bc046c0: 0127b023 sd s2,0(a5) + 3bc046c4: bf65 j 3bc0467c + 3bc046c6: 886fd0ef jal ra,3bc0174c + 3bc046ca: 85a6 mv a1,s1 + 3bc046cc: 8522 mv a0,s0 + 3bc046ce: 8a0ff0ef jal ra,3bc0376e + 3bc046d2: b7cd j 3bc046b4 + +000000003bc046d4 : + 3bc046d4: 7179 addi sp,sp,-48 + 3bc046d6: f022 sd s0,32(sp) + 3bc046d8: ec26 sd s1,24(sp) + 3bc046da: f406 sd ra,40(sp) + 3bc046dc: e432 sd a2,8(sp) + 3bc046de: 0e0007b7 lui a5,0xe000 + 3bc046e2: 84ae mv s1,a1 + 3bc046e4: 638c ld a1,0(a5) + 3bc046e6: 842a mv s0,a0 + 3bc046e8: 00007517 auipc a0,0x7 + 3bc046ec: b3050513 addi a0,a0,-1232 # 3bc0b218 + 3bc046f0: 5055b78b extu a5,a1,20,5 + 3bc046f4: 85be mv a1,a5 + 3bc046f6: 00007717 auipc a4,0x7 + 3bc046fa: 30f71923 sh a5,786(a4) # 3bc0ba08 + 3bc046fe: c5bfb0ef jal ra,3bc00358 + 3bc04702: 8522 mv a0,s0 + 3bc04704: 7402 ld s0,32(sp) + 3bc04706: 6622 ld a2,8(sp) + 3bc04708: 70a2 ld ra,40(sp) + 3bc0470a: 85a6 mv a1,s1 + 3bc0470c: 64e2 ld s1,24(sp) + 3bc0470e: 6145 addi sp,sp,48 + 3bc04710: bd5fd06f j 3bc022e4 + +000000003bc04714 : + 3bc04714: 4781 li a5,0 + 3bc04716: 00007697 auipc a3,0x7 + 3bc0471a: b1a68693 addi a3,a3,-1254 # 3bc0b230 + 3bc0471e: 0007871b sext.w a4,a5 + 3bc04722: 00c74363 blt a4,a2,3bc04728 + 3bc04726: 8082 ret + 3bc04728: 80f5c80b lrbu a6,a1,a5,0 + 3bc0472c: 9c85370b extu a4,a0,39,8 + 3bc04730: 0085151b slliw a0,a0,0x8 + 3bc04734: 01074733 xor a4,a4,a6 + 3bc04738: a2e6c70b lrhu a4,a3,a4,1 + 3bc0473c: 0785 addi a5,a5,1 + 3bc0473e: 8d39 xor a0,a0,a4 + 3bc04740: 3c05350b extu a0,a0,15,0 + 3bc04744: bfe9 j 3bc0471e + +000000003bc04746 : + 3bc04746: 4d78 lw a4,92(a0) + 3bc04748: 11000793 li a5,272 + 3bc0474c: fff7069b addiw a3,a4,-1 + 3bc04750: 04d7e563 bltu a5,a3,3bc0479a + 3bc04754: 7510 ld a2,40(a0) + 3bc04756: 7c07368b extu a3,a4,31,0 + 3bc0475a: 01853803 ld a6,24(a0) + 3bc0475e: 8d91 sub a1,a1,a2 + 3bc04760: 02053e03 ld t3,32(a0) + 3bc04764: 04856883 lwu a7,72(a0) + 3bc04768: 87ba mv a5,a4 + 3bc0476a: 00d5f463 bgeu a1,a3,3bc04772 + 3bc0476e: 0005879b sext.w a5,a1 + 3bc04772: 416c lw a1,68(a0) + 3bc04774: 4134 lw a3,64(a0) + 3bc04776: e599 bnez a1,3bc04784 + 3bc04778: 414c lw a1,4(a0) + 3bc0477a: 40d5833b subw t1,a1,a3 + 3bc0477e: 0067e363 bltu a5,t1,3bc04784 + 3bc04782: c16c sw a1,68(a0) + 3bc04784: 9ebd addw a3,a3,a5 + 3bc04786: 9f1d subw a4,a4,a5 + 3bc04788: c134 sw a3,64(a0) + 3bc0478a: cd78 sw a4,92(a0) + 3bc0478c: 86be mv a3,a5 + 3bc0478e: 8732 mv a4,a2 + 3bc04790: e691 bnez a3,3bc0479c + 3bc04792: 7c07b78b extu a5,a5,31,0 + 3bc04796: 97b2 add a5,a5,a2 + 3bc04798: f51c sd a5,40(a0) + 3bc0479a: 8082 ret + 3bc0479c: 36fd addiw a3,a3,-1 + 3bc0479e: 411705b3 sub a1,a4,a7 + 3bc047a2: 8372 mv t1,t3 + 3bc047a4: 01176363 bltu a4,a7,3bc047aa + 3bc047a8: 4301 li t1,0 + 3bc047aa: 95c2 add a1,a1,a6 + 3bc047ac: 8065c58b lrbu a1,a1,t1,0 + 3bc047b0: 00e8558b srb a1,a6,a4,0 + 3bc047b4: 0705 addi a4,a4,1 + 3bc047b6: bfe9 j 3bc04790 + +000000003bc047b8 : + 3bc047b8: 7155 addi sp,sp,-208 + 3bc047ba: e1a2 sd s0,192(sp) + 3bc047bc: 6405 lui s0,0x1 + 3bc047be: e586 sd ra,200(sp) + 3bc047c0: fd26 sd s1,184(sp) + 3bc047c2: f94a sd s2,176(sp) + 3bc047c4: f54e sd s3,168(sp) + 3bc047c6: f152 sd s4,160(sp) + 3bc047c8: ed56 sd s5,152(sp) + 3bc047ca: e95a sd s6,144(sp) + 3bc047cc: e55e sd s7,136(sp) + 3bc047ce: e162 sd s8,128(sp) + 3bc047d0: fce6 sd s9,120(sp) + 3bc047d2: f8ea sd s10,112(sp) + 3bc047d4: f4ee sd s11,104(sp) + 3bc047d6: e82e sd a1,16(sp) + 3bc047d8: f832 sd a2,48(sp) + 3bc047da: 8004041b addiw s0,s0,-2048 + 3bc047de: 417c lw a5,68(a0) + 3bc047e0: 04052e03 lw t3,64(a0) + 3bc047e4: 02853803 ld a6,40(a0) + 3bc047e8: ec3e sd a5,24(sp) + 3bc047ea: eba1 bnez a5,3bc0483a + 3bc047ec: 415c lw a5,4(a0) + 3bc047ee: 6742 ld a4,16(sp) + 3bc047f0: 66c2 ld a3,16(sp) + 3bc047f2: 41c787bb subw a5,a5,t3 + 3bc047f6: 7c07b78b extu a5,a5,31,0 + 3bc047fa: 41070733 sub a4,a4,a6 + 3bc047fe: e436 sd a3,8(sp) + 3bc04800: 00e7f463 bgeu a5,a4,3bc04808 + 3bc04804: 97c2 add a5,a5,a6 + 3bc04806: e43e sd a5,8(sp) + 3bc04808: 020e1b63 bnez t3,3bc0483e + 3bc0480c: 5d58 lw a4,60(a0) + 3bc0480e: c00007b7 lui a5,0xc0000 + 3bc04812: bff78793 addi a5,a5,-1025 # ffffffffbffffbff <__BL2_END__+0xffffffff843ec3ef> + 3bc04816: 02e7f463 bgeu a5,a4,3bc0483e + 3bc0481a: 4505 li a0,1 + 3bc0481c: 60ae ld ra,200(sp) + 3bc0481e: 640e ld s0,192(sp) + 3bc04820: 74ea ld s1,184(sp) + 3bc04822: 794a ld s2,176(sp) + 3bc04824: 79aa ld s3,168(sp) + 3bc04826: 7a0a ld s4,160(sp) + 3bc04828: 6aea ld s5,152(sp) + 3bc0482a: 6b4a ld s6,144(sp) + 3bc0482c: 6baa ld s7,136(sp) + 3bc0482e: 6c0a ld s8,128(sp) + 3bc04830: 7ce6 ld s9,120(sp) + 3bc04832: 7d46 ld s10,112(sp) + 3bc04834: 7da6 ld s11,104(sp) + 3bc04836: 6169 addi sp,sp,208 + 3bc04838: 8082 ret + 3bc0483a: 67c2 ld a5,16(sp) + 3bc0483c: e43e sd a5,8(sp) + 3bc0483e: 497c lw a5,84(a0) + 3bc04840: 00154703 lbu a4,1(a0) + 3bc04844: 690c ld a1,16(a0) + 3bc04846: f03e sd a5,32(sp) + 3bc04848: 00054783 lbu a5,0(a0) + 3bc0484c: 00254303 lbu t1,2(a0) + 3bc04850: 74fd lui s1,0xfffff + 3bc04852: f43e sd a5,40(sp) + 3bc04854: 76a2 ld a3,40(sp) + 3bc04856: 10000793 li a5,256 + 3bc0485a: 00e7973b sllw a4,a5,a4 + 3bc0485e: 02053a83 ld s5,32(a0) + 3bc04862: 00d7d7bb srlw a5,a5,a3 + 3bc04866: 60048493 addi s1,s1,1536 # fffffffffffff600 <__BL2_END__+0xffffffffc43ebdf0> + 3bc0486a: 56fd li a3,-1 + 3bc0486c: 40f707bb subw a5,a4,a5 + 3bc04870: 006696bb sllw a3,a3,t1 + 3bc04874: 94ae add s1,s1,a1 + 3bc04876: fc3e sd a5,56(sp) + 3bc04878: fff6c693 not a3,a3 + 3bc0487c: e4a6 sd s1,72(sp) + 3bc0487e: 05852883 lw a7,88(a0) + 3bc04882: a0058493 addi s1,a1,-1536 + 3bc04886: 04852f83 lw t6,72(a0) + 3bc0488a: 04c52f03 lw t5,76(a0) + 3bc0488e: 05052983 lw s3,80(a0) + 3bc04892: 01853a03 ld s4,24(a0) + 3bc04896: 7918 ld a4,48(a0) + 3bc04898: 5d10 lw a2,56(a0) + 3bc0489a: 5d5c lw a5,60(a0) + 3bc0489c: 2681 sext.w a3,a3 + 3bc0489e: e8a6 sd s1,80(sp) + 3bc048a0: fffa8493 addi s1,s5,-1 + 3bc048a4: e0b6 sd a3,64(sp) + 3bc048a6: 4301 li t1,0 + 3bc048a8: 010006b7 lui a3,0x1000 + 3bc048ac: eca6 sd s1,88(sp) + 3bc048ae: 6486 ld s1,64(sp) + 3bc048b0: 01c4feb3 and t4,s1,t3 + 3bc048b4: 004e9e9b slliw t4,t4,0x4 + 3bc048b8: 011e893b addw s2,t4,a7 + 3bc048bc: 02091493 slli s1,s2,0x20 + 3bc048c0: 01f4d913 srli s2,s1,0x1f + 3bc048c4: e0090b93 addi s7,s2,-512 + 3bc048c8: a175cb0b lrhu s6,a1,s7,0 + 3bc048cc: 000b039b sext.w t2,s6 + 3bc048d0: 00d67a63 bgeu a2,a3,3bc048e4 + 3bc048d4: 9817428b lbuia t0,(a4),1,0 + 3bc048d8: 0087979b slliw a5,a5,0x8 + 3bc048dc: 0086161b slliw a2,a2,0x8 + 3bc048e0: 00f2e7b3 or a5,t0,a5 + 3bc048e4: 00b6529b srliw t0,a2,0xb + 3bc048e8: 027284bb mulw s1,t0,t2 + 3bc048ec: 82a6 mv t0,s1 + 3bc048ee: 7497f663 bgeu a5,s1,3bc0503a + 3bc048f2: 6ee2 ld t4,24(sp) + 3bc048f4: 407403bb subw t2,s0,t2 + 3bc048f8: 0053d39b srliw t2,t2,0x5 + 3bc048fc: 016383bb addw t2,t2,s6 + 3bc04900: 2175d38b srh t2,a1,s7,0 + 3bc04904: 01ceeeb3 or t4,t4,t3 + 3bc04908: 28058613 addi a2,a1,640 + 3bc0490c: 020e8b63 beqz t4,3bc04942 + 3bc04910: 6966 ld s2,88(sp) + 3bc04912: fff80393 addi t2,a6,-1 + 3bc04916: 008e1e9b slliw t4,t3,0x8 + 3bc0491a: 4109138b mveqz t2,s2,a6 + 3bc0491e: 807a438b lrbu t2,s4,t2,0 + 3bc04922: 01d38ebb addw t4,t2,t4 + 3bc04926: 73e2 ld t2,56(sp) + 3bc04928: 01d3feb3 and t4,t2,t4 + 3bc0492c: 73a2 ld t2,40(sp) + 3bc0492e: 007e9ebb sllw t4,t4,t2 + 3bc04932: 438d li t2,3 + 3bc04934: 027e8ebb mulw t4,t4,t2 + 3bc04938: 020e9393 slli t2,t4,0x20 + 3bc0493c: 01f3de93 srli t4,t2,0x1f + 3bc04940: 9676 add a2,a2,t4 + 3bc04942: 4e99 li t4,6 + 3bc04944: 2e05 addiw t3,t3,1 + 3bc04946: 311eef63 bltu t4,a7,3bc04c64 + 3bc0494a: 438d li t2,3 + 3bc0494c: 8ec6 mv t4,a7 + 3bc0494e: 0113f363 bgeu t2,a7,3bc04954 + 3bc04952: 4e8d li t4,3 + 3bc04954: 00265383 lhu t2,2(a2) + 3bc04958: 41d888bb subw a7,a7,t4 + 3bc0495c: 00038e9b sext.w t4,t2 + 3bc04960: 00d4fa63 bgeu s1,a3,3bc04974 + 3bc04964: 0082949b slliw s1,t0,0x8 + 3bc04968: 9817428b lbuia t0,(a4),1,0 + 3bc0496c: 0087979b slliw a5,a5,0x8 + 3bc04970: 00f2e7b3 or a5,t0,a5 + 3bc04974: 00b4d29b srliw t0,s1,0xb + 3bc04978: 03d2893b mulw s2,t0,t4 + 3bc0497c: 2327f563 bgeu a5,s2,3bc04ba6 + 3bc04980: 41d40ebb subw t4,s0,t4 + 3bc04984: 005ede9b srliw t4,t4,0x5 + 3bc04988: 007e83bb addw t2,t4,t2 + 3bc0498c: 3c03b38b extu t2,t2,15,0 + 3bc04990: 4e89 li t4,2 + 3bc04992: 00761123 sh t2,2(a2) + 3bc04996: b3d6448b lurhu s1,a2,t4,1 + 3bc0499a: 03d61b8b addsl s7,a2,t4,1 + 3bc0499e: 0004829b sext.w t0,s1 + 3bc049a2: 00d97a63 bgeu s2,a3,3bc049b6 + 3bc049a6: 9817438b lbuia t2,(a4),1,0 + 3bc049aa: 0087979b slliw a5,a5,0x8 + 3bc049ae: 0089191b slliw s2,s2,0x8 + 3bc049b2: 00f3e7b3 or a5,t2,a5 + 3bc049b6: 00b95b1b srliw s6,s2,0xb + 3bc049ba: 025b03bb mulw t2,s6,t0 + 3bc049be: 001e9c1b slliw s8,t4,0x1 + 3bc049c2: 0e86 slli t4,t4,0x1 + 3bc049c4: 1e77fd63 bgeu a5,t2,3bc04bbe + 3bc049c8: 405402bb subw t0,s0,t0 + 3bc049cc: 0052d29b srliw t0,t0,0x5 + 3bc049d0: 009284bb addw s1,t0,s1 + 3bc049d4: 3c04b48b extu s1,s1,15,0 + 3bc049d8: 009b9023 sh s1,0(s7) + 3bc049dc: b3d6490b lurhu s2,a2,t4,1 + 3bc049e0: 020e9493 slli s1,t4,0x20 + 3bc049e4: 01f4dc13 srli s8,s1,0x1f + 3bc049e8: 9c32 add s8,s8,a2 + 3bc049ea: 0009029b sext.w t0,s2 + 3bc049ee: 00d3f963 bgeu t2,a3,3bc04a00 + 3bc049f2: 9817448b lbuia s1,(a4),1,0 + 3bc049f6: 0087979b slliw a5,a5,0x8 + 3bc049fa: 0083939b slliw t2,t2,0x8 + 3bc049fe: 8fc5 or a5,a5,s1 + 3bc04a00: 00b3db9b srliw s7,t2,0xb + 3bc04a04: 025b84bb mulw s1,s7,t0 + 3bc04a08: 001e9b1b slliw s6,t4,0x1 + 3bc04a0c: 1c97f663 bgeu a5,s1,3bc04bd8 + 3bc04a10: 405402bb subw t0,s0,t0 + 3bc04a14: 0052d29b srliw t0,t0,0x5 + 3bc04a18: 0122893b addw s2,t0,s2 + 3bc04a1c: 3c09390b extu s2,s2,15,0 + 3bc04a20: 012c1023 sh s2,0(s8) + 3bc04a24: b366428b lurhu t0,a2,s6,1 + 3bc04a28: 020b1e93 slli t4,s6,0x20 + 3bc04a2c: 01fedc13 srli s8,t4,0x1f + 3bc04a30: 9c32 add s8,s8,a2 + 3bc04a32: 00028e9b sext.w t4,t0 + 3bc04a36: 00d4fa63 bgeu s1,a3,3bc04a4a + 3bc04a3a: 9817438b lbuia t2,(a4),1,0 + 3bc04a3e: 0087979b slliw a5,a5,0x8 + 3bc04a42: 0084949b slliw s1,s1,0x8 + 3bc04a46: 00f3e7b3 or a5,t2,a5 + 3bc04a4a: 00b4db9b srliw s7,s1,0xb + 3bc04a4e: 03db83bb mulw t2,s7,t4 + 3bc04a52: 001b191b slliw s2,s6,0x1 + 3bc04a56: 1877fc63 bgeu a5,t2,3bc04bee + 3bc04a5a: 41d40ebb subw t4,s0,t4 + 3bc04a5e: 005ede9b srliw t4,t4,0x5 + 3bc04a62: 005e82bb addw t0,t4,t0 + 3bc04a66: 3c02b28b extu t0,t0,15,0 + 3bc04a6a: 02091493 slli s1,s2,0x20 + 3bc04a6e: 005c1023 sh t0,0(s8) + 3bc04a72: 01f4db93 srli s7,s1,0x1f + 3bc04a76: b326448b lurhu s1,a2,s2,1 + 3bc04a7a: 9bb2 add s7,s7,a2 + 3bc04a7c: 00048e9b sext.w t4,s1 + 3bc04a80: 00d3fa63 bgeu t2,a3,3bc04a94 + 3bc04a84: 9817428b lbuia t0,(a4),1,0 + 3bc04a88: 0087979b slliw a5,a5,0x8 + 3bc04a8c: 0083939b slliw t2,t2,0x8 + 3bc04a90: 00f2e7b3 or a5,t0,a5 + 3bc04a94: 00b3db1b srliw s6,t2,0xb + 3bc04a98: 03db02bb mulw t0,s6,t4 + 3bc04a9c: 0019191b slliw s2,s2,0x1 + 3bc04aa0: 1657f363 bgeu a5,t0,3bc04c06 + 3bc04aa4: 41d40ebb subw t4,s0,t4 + 3bc04aa8: 005ede9b srliw t4,t4,0x5 + 3bc04aac: 009e84bb addw s1,t4,s1 + 3bc04ab0: 3c04b48b extu s1,s1,15,0 + 3bc04ab4: 009b9023 sh s1,0(s7) + 3bc04ab8: 02091493 slli s1,s2,0x20 + 3bc04abc: 01f4db93 srli s7,s1,0x1f + 3bc04ac0: b326448b lurhu s1,a2,s2,1 + 3bc04ac4: 9bb2 add s7,s7,a2 + 3bc04ac6: 00048e9b sext.w t4,s1 + 3bc04aca: 00d2fa63 bgeu t0,a3,3bc04ade + 3bc04ace: 9817438b lbuia t2,(a4),1,0 + 3bc04ad2: 0087979b slliw a5,a5,0x8 + 3bc04ad6: 0082929b slliw t0,t0,0x8 + 3bc04ada: 00f3e7b3 or a5,t2,a5 + 3bc04ade: 00b2db1b srliw s6,t0,0xb + 3bc04ae2: 03db03bb mulw t2,s6,t4 + 3bc04ae6: 0019191b slliw s2,s2,0x1 + 3bc04aea: 1277fa63 bgeu a5,t2,3bc04c1e + 3bc04aee: 41d40ebb subw t4,s0,t4 + 3bc04af2: 005ede9b srliw t4,t4,0x5 + 3bc04af6: 009e84bb addw s1,t4,s1 + 3bc04afa: 3c04b48b extu s1,s1,15,0 + 3bc04afe: 009b9023 sh s1,0(s7) + 3bc04b02: 02091493 slli s1,s2,0x20 + 3bc04b06: 01f4db93 srli s7,s1,0x1f + 3bc04b0a: b326448b lurhu s1,a2,s2,1 + 3bc04b0e: 9bb2 add s7,s7,a2 + 3bc04b10: 00048e9b sext.w t4,s1 + 3bc04b14: 00d3fa63 bgeu t2,a3,3bc04b28 + 3bc04b18: 9817428b lbuia t0,(a4),1,0 + 3bc04b1c: 0087979b slliw a5,a5,0x8 + 3bc04b20: 0083939b slliw t2,t2,0x8 + 3bc04b24: 00f2e7b3 or a5,t0,a5 + 3bc04b28: 00b3db1b srliw s6,t2,0xb + 3bc04b2c: 03db02bb mulw t0,s6,t4 + 3bc04b30: 0019191b slliw s2,s2,0x1 + 3bc04b34: 1057f163 bgeu a5,t0,3bc04c36 + 3bc04b38: 41d40ebb subw t4,s0,t4 + 3bc04b3c: 005ede9b srliw t4,t4,0x5 + 3bc04b40: 009e84bb addw s1,t4,s1 + 3bc04b44: 3c04b48b extu s1,s1,15,0 + 3bc04b48: 009b9023 sh s1,0(s7) + 3bc04b4c: b3264b8b lurhu s7,a2,s2,1 + 3bc04b50: 02091493 slli s1,s2,0x20 + 3bc04b54: 01f4db13 srli s6,s1,0x1f + 3bc04b58: 9b32 add s6,s6,a2 + 3bc04b5a: 000b8e9b sext.w t4,s7 + 3bc04b5e: 00d2f963 bgeu t0,a3,3bc04b70 + 3bc04b62: 9817460b lbuia a2,(a4),1,0 + 3bc04b66: 0087979b slliw a5,a5,0x8 + 3bc04b6a: 0082929b slliw t0,t0,0x8 + 3bc04b6e: 8fd1 or a5,a5,a2 + 3bc04b70: 00b2d39b srliw t2,t0,0xb + 3bc04b74: 03d3863b mulw a2,t2,t4 + 3bc04b78: 0019149b slliw s1,s2,0x1 + 3bc04b7c: 0cc7f963 bgeu a5,a2,3bc04c4e + 3bc04b80: 41d40ebb subw t4,s0,t4 + 3bc04b84: 005ede9b srliw t4,t4,0x5 + 3bc04b88: 017e8ebb addw t4,t4,s7 + 3bc04b8c: 01db1023 sh t4,0(s6) + 3bc04b90: 010a548b srb s1,s4,a6,0 + 3bc04b94: 0805 addi a6,a6,1 + 3bc04b96: 64a2 ld s1,8(sp) + 3bc04b98: 649870e3 bgeu a6,s1,3bc059d8 + 3bc04b9c: 74c2 ld s1,48(sp) + 3bc04b9e: d09768e3 bltu a4,s1,3bc048ae + 3bc04ba2: 6370006f j 3bc059d8 + 3bc04ba6: 005ede9b srliw t4,t4,0x5 + 3bc04baa: 41d383bb subw t2,t2,t4 + 3bc04bae: 412787bb subw a5,a5,s2 + 3bc04bb2: 3c03b38b extu t2,t2,15,0 + 3bc04bb6: 4124893b subw s2,s1,s2 + 3bc04bba: 4e8d li t4,3 + 3bc04bbc: bbd9 j 3bc04992 + 3bc04bbe: 0052d29b srliw t0,t0,0x5 + 3bc04bc2: 405484bb subw s1,s1,t0 + 3bc04bc6: 407787bb subw a5,a5,t2 + 3bc04bca: 3c04b48b extu s1,s1,15,0 + 3bc04bce: 001c0e9b addiw t4,s8,1 + 3bc04bd2: 407903bb subw t2,s2,t2 + 3bc04bd6: b509 j 3bc049d8 + 3bc04bd8: 0052d29b srliw t0,t0,0x5 + 3bc04bdc: 4059093b subw s2,s2,t0 + 3bc04be0: 9f85 subw a5,a5,s1 + 3bc04be2: 3c09390b extu s2,s2,15,0 + 3bc04be6: 2b05 addiw s6,s6,1 + 3bc04be8: 409384bb subw s1,t2,s1 + 3bc04bec: bd15 j 3bc04a20 + 3bc04bee: 005ede9b srliw t4,t4,0x5 + 3bc04bf2: 41d282bb subw t0,t0,t4 + 3bc04bf6: 407787bb subw a5,a5,t2 + 3bc04bfa: 3c02b28b extu t0,t0,15,0 + 3bc04bfe: 2905 addiw s2,s2,1 + 3bc04c00: 407483bb subw t2,s1,t2 + 3bc04c04: b59d j 3bc04a6a + 3bc04c06: 005ede9b srliw t4,t4,0x5 + 3bc04c0a: 41d484bb subw s1,s1,t4 + 3bc04c0e: 405787bb subw a5,a5,t0 + 3bc04c12: 3c04b48b extu s1,s1,15,0 + 3bc04c16: 2905 addiw s2,s2,1 + 3bc04c18: 405382bb subw t0,t2,t0 + 3bc04c1c: bd61 j 3bc04ab4 + 3bc04c1e: 005ede9b srliw t4,t4,0x5 + 3bc04c22: 41d484bb subw s1,s1,t4 + 3bc04c26: 407787bb subw a5,a5,t2 + 3bc04c2a: 3c04b48b extu s1,s1,15,0 + 3bc04c2e: 2905 addiw s2,s2,1 + 3bc04c30: 407283bb subw t2,t0,t2 + 3bc04c34: b5e9 j 3bc04afe + 3bc04c36: 005ede9b srliw t4,t4,0x5 + 3bc04c3a: 41d484bb subw s1,s1,t4 + 3bc04c3e: 405787bb subw a5,a5,t0 + 3bc04c42: 3c04b48b extu s1,s1,15,0 + 3bc04c46: 2905 addiw s2,s2,1 + 3bc04c48: 405382bb subw t0,t2,t0 + 3bc04c4c: bdf5 j 3bc04b48 + 3bc04c4e: 005ede9b srliw t4,t4,0x5 + 3bc04c52: 41db8ebb subw t4,s7,t4 + 3bc04c56: 9f91 subw a5,a5,a2 + 3bc04c58: 01db1023 sh t4,0(s6) + 3bc04c5c: 2485 addiw s1,s1,1 + 3bc04c5e: 40c2863b subw a2,t0,a2 + 3bc04c62: b73d j 3bc04b90 + 3bc04c64: 7c0fb90b extu s2,t6,31,0 + 3bc04c68: 41280eb3 sub t4,a6,s2 + 3bc04c6c: 83d6 mv t2,s5 + 3bc04c6e: 01286363 bltu a6,s2,3bc04c74 + 3bc04c72: 4381 li t2,0 + 3bc04c74: 9ed2 add t4,t4,s4 + 3bc04c76: 4925 li s2,9 + 3bc04c78: 807ece8b lrbu t4,t4,t2,0 + 3bc04c7c: 438d li t2,3 + 3bc04c7e: 01197363 bgeu s2,a7,3bc04c84 + 3bc04c82: 4399 li t2,6 + 3bc04c84: 001e9b1b slliw s6,t4,0x1 + 3bc04c88: 100b7b13 andi s6,s6,256 + 3bc04c8c: 407888bb subw a7,a7,t2 + 3bc04c90: 101b039b addiw t2,s6,257 + 3bc04c94: b2764c0b lurhu s8,a2,t2,1 + 3bc04c98: 101b0b93 addi s7,s6,257 + 3bc04c9c: 03761b8b addsl s7,a2,s7,1 + 3bc04ca0: 000c039b sext.w t2,s8 + 3bc04ca4: 00d4fa63 bgeu s1,a3,3bc04cb8 + 3bc04ca8: 0082949b slliw s1,t0,0x8 + 3bc04cac: 9817428b lbuia t0,(a4),1,0 + 3bc04cb0: 0087979b slliw a5,a5,0x8 + 3bc04cb4: 00f2e7b3 or a5,t0,a5 + 3bc04cb8: 00b4d29b srliw t0,s1,0xb + 3bc04cbc: 0272893b mulw s2,t0,t2 + 3bc04cc0: 2b27ff63 bgeu a5,s2,3bc04f7e + 3bc04cc4: 407403bb subw t2,s0,t2 + 3bc04cc8: 0053d39b srliw t2,t2,0x5 + 3bc04ccc: 01838c3b addw s8,t2,s8 + 3bc04cd0: 3c0c3c0b extu s8,s8,15,0 + 3bc04cd4: 100b4b13 xori s6,s6,256 + 3bc04cd8: 4289 li t0,2 + 3bc04cda: 002e939b slliw t2,t4,0x2 + 3bc04cde: 007b73b3 and t2,s6,t2 + 3bc04ce2: 005b04bb addw s1,s6,t0 + 3bc04ce6: 018b9023 sh s8,0(s7) + 3bc04cea: 00038c1b sext.w s8,t2 + 3bc04cee: 007483bb addw t2,s1,t2 + 3bc04cf2: b2764b8b lurhu s7,a2,t2,1 + 3bc04cf6: 02039493 slli s1,t2,0x20 + 3bc04cfa: 01f4dd13 srli s10,s1,0x1f + 3bc04cfe: 9d32 add s10,s10,a2 + 3bc04d00: 000b839b sext.w t2,s7 + 3bc04d04: 00d97963 bgeu s2,a3,3bc04d16 + 3bc04d08: 9817448b lbuia s1,(a4),1,0 + 3bc04d0c: 0087979b slliw a5,a5,0x8 + 3bc04d10: 0089191b slliw s2,s2,0x8 + 3bc04d14: 8fc5 or a5,a5,s1 + 3bc04d16: 00b95c9b srliw s9,s2,0xb + 3bc04d1a: 027c84bb mulw s1,s9,t2 + 3bc04d1e: 00129d9b slliw s11,t0,0x1 + 3bc04d22: 0286 slli t0,t0,0x1 + 3bc04d24: 2697f963 bgeu a5,s1,3bc04f96 + 3bc04d28: 407403bb subw t2,s0,t2 + 3bc04d2c: 0053d39b srliw t2,t2,0x5 + 3bc04d30: 01738bbb addw s7,t2,s7 + 3bc04d34: 3c0bbb8b extu s7,s7,15,0 + 3bc04d38: 018b4c33 xor s8,s6,s8 + 3bc04d3c: 003e939b slliw t2,t4,0x3 + 3bc04d40: 007c73b3 and t2,s8,t2 + 3bc04d44: 005c093b addw s2,s8,t0 + 3bc04d48: 017d1023 sh s7,0(s10) + 3bc04d4c: 00038b1b sext.w s6,t2 + 3bc04d50: 007903bb addw t2,s2,t2 + 3bc04d54: b2764c8b lurhu s9,a2,t2,1 + 3bc04d58: 02039913 slli s2,t2,0x20 + 3bc04d5c: 01f95d93 srli s11,s2,0x1f + 3bc04d60: 9db2 add s11,s11,a2 + 3bc04d62: 000c839b sext.w t2,s9 + 3bc04d66: 00d4fa63 bgeu s1,a3,3bc04d7a + 3bc04d6a: 9817490b lbuia s2,(a4),1,0 + 3bc04d6e: 0087979b slliw a5,a5,0x8 + 3bc04d72: 0084949b slliw s1,s1,0x8 + 3bc04d76: 00f967b3 or a5,s2,a5 + 3bc04d7a: 00b4dd1b srliw s10,s1,0xb + 3bc04d7e: 027d093b mulw s2,s10,t2 + 3bc04d82: 00129b9b slliw s7,t0,0x1 + 3bc04d86: 2327f463 bgeu a5,s2,3bc04fae + 3bc04d8a: 407403bb subw t2,s0,t2 + 3bc04d8e: 0053d39b srliw t2,t2,0x5 + 3bc04d92: 01938cbb addw s9,t2,s9 + 3bc04d96: 3c0cbc8b extu s9,s9,15,0 + 3bc04d9a: 016c4b33 xor s6,s8,s6 + 3bc04d9e: 004e929b slliw t0,t4,0x4 + 3bc04da2: 005b72b3 and t0,s6,t0 + 3bc04da6: 017b03bb addw t2,s6,s7 + 3bc04daa: 019d9023 sh s9,0(s11) + 3bc04dae: 00028c1b sext.w s8,t0 + 3bc04db2: 005382bb addw t0,t2,t0 + 3bc04db6: b256438b lurhu t2,a2,t0,1 + 3bc04dba: 02029493 slli s1,t0,0x20 + 3bc04dbe: 01f4dd13 srli s10,s1,0x1f + 3bc04dc2: 9d32 add s10,s10,a2 + 3bc04dc4: 0003829b sext.w t0,t2 + 3bc04dc8: 00d97963 bgeu s2,a3,3bc04dda + 3bc04dcc: 9817448b lbuia s1,(a4),1,0 + 3bc04dd0: 0087979b slliw a5,a5,0x8 + 3bc04dd4: 0089191b slliw s2,s2,0x8 + 3bc04dd8: 8fc5 or a5,a5,s1 + 3bc04dda: 00b95c9b srliw s9,s2,0xb + 3bc04dde: 025c84bb mulw s1,s9,t0 + 3bc04de2: 001b9b9b slliw s7,s7,0x1 + 3bc04de6: 1e97f063 bgeu a5,s1,3bc04fc6 + 3bc04dea: 405402bb subw t0,s0,t0 + 3bc04dee: 0052d29b srliw t0,t0,0x5 + 3bc04df2: 007283bb addw t2,t0,t2 + 3bc04df6: 3c03b38b extu t2,t2,15,0 + 3bc04dfa: 018b4c33 xor s8,s6,s8 + 3bc04dfe: 005e929b slliw t0,t4,0x5 + 3bc04e02: 007d1023 sh t2,0(s10) + 3bc04e06: 005c72b3 and t0,s8,t0 + 3bc04e0a: 017c03bb addw t2,s8,s7 + 3bc04e0e: 00028b1b sext.w s6,t0 + 3bc04e12: 005382bb addw t0,t2,t0 + 3bc04e16: b256490b lurhu s2,a2,t0,1 + 3bc04e1a: 02029393 slli t2,t0,0x20 + 3bc04e1e: 01f3dd13 srli s10,t2,0x1f + 3bc04e22: 9d32 add s10,s10,a2 + 3bc04e24: 0009029b sext.w t0,s2 + 3bc04e28: 00d4fa63 bgeu s1,a3,3bc04e3c + 3bc04e2c: 9817438b lbuia t2,(a4),1,0 + 3bc04e30: 0087979b slliw a5,a5,0x8 + 3bc04e34: 0084949b slliw s1,s1,0x8 + 3bc04e38: 00f3e7b3 or a5,t2,a5 + 3bc04e3c: 00b4dc9b srliw s9,s1,0xb + 3bc04e40: 025c83bb mulw t2,s9,t0 + 3bc04e44: 001b9b9b slliw s7,s7,0x1 + 3bc04e48: 1877fa63 bgeu a5,t2,3bc04fdc + 3bc04e4c: 405402bb subw t0,s0,t0 + 3bc04e50: 0052d29b srliw t0,t0,0x5 + 3bc04e54: 0122893b addw s2,t0,s2 + 3bc04e58: 3c09390b extu s2,s2,15,0 + 3bc04e5c: 016c4b33 xor s6,s8,s6 + 3bc04e60: 006e929b slliw t0,t4,0x6 + 3bc04e64: 005b72b3 and t0,s6,t0 + 3bc04e68: 017b04bb addw s1,s6,s7 + 3bc04e6c: 00028c1b sext.w s8,t0 + 3bc04e70: 005482bb addw t0,s1,t0 + 3bc04e74: 02029493 slli s1,t0,0x20 + 3bc04e78: 012d1023 sh s2,0(s10) + 3bc04e7c: 01f4dd13 srli s10,s1,0x1f + 3bc04e80: b256448b lurhu s1,a2,t0,1 + 3bc04e84: 9d32 add s10,s10,a2 + 3bc04e86: 0004829b sext.w t0,s1 + 3bc04e8a: 00d3fa63 bgeu t2,a3,3bc04e9e + 3bc04e8e: 9817490b lbuia s2,(a4),1,0 + 3bc04e92: 0087979b slliw a5,a5,0x8 + 3bc04e96: 0083939b slliw t2,t2,0x8 + 3bc04e9a: 00f967b3 or a5,s2,a5 + 3bc04e9e: 00b3dc9b srliw s9,t2,0xb + 3bc04ea2: 025c893b mulw s2,s9,t0 + 3bc04ea6: 001b9b9b slliw s7,s7,0x1 + 3bc04eaa: 1527f563 bgeu a5,s2,3bc04ff4 + 3bc04eae: 405402bb subw t0,s0,t0 + 3bc04eb2: 0052d29b srliw t0,t0,0x5 + 3bc04eb6: 009284bb addw s1,t0,s1 + 3bc04eba: 3c04b48b extu s1,s1,15,0 + 3bc04ebe: 018b4c33 xor s8,s6,s8 + 3bc04ec2: 007e929b slliw t0,t4,0x7 + 3bc04ec6: 005c72b3 and t0,s8,t0 + 3bc04eca: 017c03bb addw t2,s8,s7 + 3bc04ece: 009d1023 sh s1,0(s10) + 3bc04ed2: 0002849b sext.w s1,t0 + 3bc04ed6: 005382bb addw t0,t2,t0 + 3bc04eda: b2564b0b lurhu s6,a2,t0,1 + 3bc04ede: 02029393 slli t2,t0,0x20 + 3bc04ee2: 01f3dd93 srli s11,t2,0x1f + 3bc04ee6: 9db2 add s11,s11,a2 + 3bc04ee8: 000b029b sext.w t0,s6 + 3bc04eec: 00d97a63 bgeu s2,a3,3bc04f00 + 3bc04ef0: 9817438b lbuia t2,(a4),1,0 + 3bc04ef4: 0087979b slliw a5,a5,0x8 + 3bc04ef8: 0089191b slliw s2,s2,0x8 + 3bc04efc: 00f3e7b3 or a5,t2,a5 + 3bc04f00: 00b95d1b srliw s10,s2,0xb + 3bc04f04: 025d03bb mulw t2,s10,t0 + 3bc04f08: 001b9c9b slliw s9,s7,0x1 + 3bc04f0c: 1077f063 bgeu a5,t2,3bc0500c + 3bc04f10: 405402bb subw t0,s0,t0 + 3bc04f14: 0052d29b srliw t0,t0,0x5 + 3bc04f18: 01628b3b addw s6,t0,s6 + 3bc04f1c: 3c0b3b0b extu s6,s6,15,0 + 3bc04f20: 009c44b3 xor s1,s8,s1 + 3bc04f24: 008e9e9b slliw t4,t4,0x8 + 3bc04f28: 01d4feb3 and t4,s1,t4 + 3bc04f2c: 019484bb addw s1,s1,s9 + 3bc04f30: 01d48ebb addw t4,s1,t4 + 3bc04f34: 016d9023 sh s6,0(s11) + 3bc04f38: b3d64b0b lurhu s6,a2,t4,1 + 3bc04f3c: 020e9493 slli s1,t4,0x20 + 3bc04f40: 01f4d913 srli s2,s1,0x1f + 3bc04f44: 9932 add s2,s2,a2 + 3bc04f46: 000b0e9b sext.w t4,s6 + 3bc04f4a: 00d3f963 bgeu t2,a3,3bc04f5c + 3bc04f4e: 9817460b lbuia a2,(a4),1,0 + 3bc04f52: 0087979b slliw a5,a5,0x8 + 3bc04f56: 0083939b slliw t2,t2,0x8 + 3bc04f5a: 8fd1 or a5,a5,a2 + 3bc04f5c: 00b3d29b srliw t0,t2,0xb + 3bc04f60: 03d2863b mulw a2,t0,t4 + 3bc04f64: 001c949b slliw s1,s9,0x1 + 3bc04f68: 0ac7fe63 bgeu a5,a2,3bc05024 + 3bc04f6c: 41d40ebb subw t4,s0,t4 + 3bc04f70: 005ede9b srliw t4,t4,0x5 + 3bc04f74: 016e8ebb addw t4,t4,s6 + 3bc04f78: 01d91023 sh t4,0(s2) + 3bc04f7c: b911 j 3bc04b90 + 3bc04f7e: 0053d39b srliw t2,t2,0x5 + 3bc04f82: 407c0c3b subw s8,s8,t2 + 3bc04f86: 412787bb subw a5,a5,s2 + 3bc04f8a: 3c0c3c0b extu s8,s8,15,0 + 3bc04f8e: 4124893b subw s2,s1,s2 + 3bc04f92: 428d li t0,3 + 3bc04f94: b399 j 3bc04cda + 3bc04f96: 0053d39b srliw t2,t2,0x5 + 3bc04f9a: 407b8bbb subw s7,s7,t2 + 3bc04f9e: 9f85 subw a5,a5,s1 + 3bc04fa0: 3c0bbb8b extu s7,s7,15,0 + 3bc04fa4: 001d829b addiw t0,s11,1 + 3bc04fa8: 409904bb subw s1,s2,s1 + 3bc04fac: bb41 j 3bc04d3c + 3bc04fae: 0053d39b srliw t2,t2,0x5 + 3bc04fb2: 407c8cbb subw s9,s9,t2 + 3bc04fb6: 412787bb subw a5,a5,s2 + 3bc04fba: 3c0cbc8b extu s9,s9,15,0 + 3bc04fbe: 2b85 addiw s7,s7,1 + 3bc04fc0: 4124893b subw s2,s1,s2 + 3bc04fc4: bbe9 j 3bc04d9e + 3bc04fc6: 0052d29b srliw t0,t0,0x5 + 3bc04fca: 405383bb subw t2,t2,t0 + 3bc04fce: 9f85 subw a5,a5,s1 + 3bc04fd0: 3c03b38b extu t2,t2,15,0 + 3bc04fd4: 2b85 addiw s7,s7,1 + 3bc04fd6: 409904bb subw s1,s2,s1 + 3bc04fda: b515 j 3bc04dfe + 3bc04fdc: 0052d29b srliw t0,t0,0x5 + 3bc04fe0: 4059093b subw s2,s2,t0 + 3bc04fe4: 407787bb subw a5,a5,t2 + 3bc04fe8: 3c09390b extu s2,s2,15,0 + 3bc04fec: 2b85 addiw s7,s7,1 + 3bc04fee: 407483bb subw t2,s1,t2 + 3bc04ff2: b5bd j 3bc04e60 + 3bc04ff4: 0052d29b srliw t0,t0,0x5 + 3bc04ff8: 405484bb subw s1,s1,t0 + 3bc04ffc: 412787bb subw a5,a5,s2 + 3bc05000: 3c04b48b extu s1,s1,15,0 + 3bc05004: 2b85 addiw s7,s7,1 + 3bc05006: 4123893b subw s2,t2,s2 + 3bc0500a: bd65 j 3bc04ec2 + 3bc0500c: 0052d29b srliw t0,t0,0x5 + 3bc05010: 405b0b3b subw s6,s6,t0 + 3bc05014: 407787bb subw a5,a5,t2 + 3bc05018: 3c0b3b0b extu s6,s6,15,0 + 3bc0501c: 2c85 addiw s9,s9,1 + 3bc0501e: 407903bb subw t2,s2,t2 + 3bc05022: b709 j 3bc04f24 + 3bc05024: 005ede9b srliw t4,t4,0x5 + 3bc05028: 41db0ebb subw t4,s6,t4 + 3bc0502c: 9f91 subw a5,a5,a2 + 3bc0502e: 01d91023 sh t4,0(s2) + 3bc05032: 2485 addiw s1,s1,1 + 3bc05034: 40c3863b subw a2,t2,a2 + 3bc05038: bea1 j 3bc04b90 + 3bc0503a: 0053d39b srliw t2,t2,0x5 + 3bc0503e: 407b03bb subw t2,s6,t2 + 3bc05042: 2175d38b srh t2,a1,s7,0 + 3bc05046: 7c08bb8b extu s7,a7,31,0 + 3bc0504a: 0bc1 addi s7,s7,16 + 3bc0504c: a375cc0b lrhu s8,a1,s7,1 + 3bc05050: 409604bb subw s1,a2,s1 + 3bc05054: 405787bb subw a5,a5,t0 + 3bc05058: 001b9b13 slli s6,s7,0x1 + 3bc0505c: 000c039b sext.w t2,s8 + 3bc05060: 00d4fa63 bgeu s1,a3,3bc05074 + 3bc05064: 0087929b slliw t0,a5,0x8 + 3bc05068: 9817478b lbuia a5,(a4),1,0 + 3bc0506c: 0084949b slliw s1,s1,0x8 + 3bc05070: 0057e7b3 or a5,a5,t0 + 3bc05074: 00b4d29b srliw t0,s1,0xb + 3bc05078: 0272863b mulw a2,t0,t2 + 3bc0507c: 36c7ff63 bgeu a5,a2,3bc053fa + 3bc05080: 407403bb subw t2,s0,t2 + 3bc05084: 0053d39b srliw t2,t2,0x5 + 3bc05088: 62c6 ld t0,80(sp) + 3bc0508a: 018383bb addw t2,t2,s8 + 3bc0508e: 2375d38b srh t2,a1,s7,1 + 3bc05092: 28b1 addiw a7,a7,12 + 3bc05094: 8b7e mv s6,t6 + 3bc05096: 0002d383 lhu t2,0(t0) + 3bc0509a: 00038f9b sext.w t6,t2 + 3bc0509e: 00d67a63 bgeu a2,a3,3bc050b2 + 3bc050a2: 9817430b lbuia t1,(a4),1,0 + 3bc050a6: 0087979b slliw a5,a5,0x8 + 3bc050aa: 0086161b slliw a2,a2,0x8 + 3bc050ae: 00f367b3 or a5,t1,a5 + 3bc050b2: 00b6531b srliw t1,a2,0xb + 3bc050b6: 03f304bb mulw s1,t1,t6 + 3bc050ba: 8326 mv t1,s1 + 3bc050bc: 5297f663 bgeu a5,s1,3bc055e8 + 3bc050c0: 41f40fbb subw t6,s0,t6 + 3bc050c4: 005fdf9b srliw t6,t6,0x5 + 3bc050c8: 7c0ebe8b extu t4,t4,31,0 + 3bc050cc: 007f8fbb addw t6,t6,t2 + 3bc050d0: 01f29023 sh t6,0(t0) + 3bc050d4: 03d2928b addsl t0,t0,t4,1 + 3bc050d8: 0022de83 lhu t4,2(t0) + 3bc050dc: 000e861b sext.w a2,t4 + 3bc050e0: 00d4fa63 bgeu s1,a3,3bc050f4 + 3bc050e4: 9817430b lbuia t1,(a4),1,0 + 3bc050e8: 0087979b slliw a5,a5,0x8 + 3bc050ec: 0084949b slliw s1,s1,0x8 + 3bc050f0: 00f367b3 or a5,t1,a5 + 3bc050f4: 00b4d31b srliw t1,s1,0xb + 3bc050f8: 02c30fbb mulw t6,t1,a2 + 3bc050fc: 4bf7f263 bgeu a5,t6,3bc055a0 + 3bc05100: 40c4063b subw a2,s0,a2 + 3bc05104: 0056561b srliw a2,a2,0x5 + 3bc05108: 01d60ebb addw t4,a2,t4 + 3bc0510c: 3c0ebe8b extu t4,t4,15,0 + 3bc05110: 4309 li t1,2 + 3bc05112: 01d29123 sh t4,2(t0) + 3bc05116: b262c38b lurhu t2,t0,t1,1 + 3bc0511a: 7c03390b extu s2,t1,31,0 + 3bc0511e: 0003861b sext.w a2,t2 + 3bc05122: 00dffa63 bgeu t6,a3,3bc05136 + 3bc05126: 98174e8b lbuia t4,(a4),1,0 + 3bc0512a: 0087979b slliw a5,a5,0x8 + 3bc0512e: 008f9f9b slliw t6,t6,0x8 + 3bc05132: 00fee7b3 or a5,t4,a5 + 3bc05136: 00bfd49b srliw s1,t6,0xb + 3bc0513a: 02c48ebb mulw t4,s1,a2 + 3bc0513e: 00131b9b slliw s7,t1,0x1 + 3bc05142: 0306 slli t1,t1,0x1 + 3bc05144: 47d7fa63 bgeu a5,t4,3bc055b8 + 3bc05148: 40c4063b subw a2,s0,a2 + 3bc0514c: 0056561b srliw a2,a2,0x5 + 3bc05150: 007603bb addw t2,a2,t2 + 3bc05154: 3c03b38b extu t2,t2,15,0 + 3bc05158: 2322d38b srh t2,t0,s2,1 + 3bc0515c: b262c38b lurhu t2,t0,t1,1 + 3bc05160: 7c033b8b extu s7,t1,31,0 + 3bc05164: 00038f9b sext.w t6,t2 + 3bc05168: 00def963 bgeu t4,a3,3bc0517a + 3bc0516c: 9817460b lbuia a2,(a4),1,0 + 3bc05170: 0087979b slliw a5,a5,0x8 + 3bc05174: 008e9e9b slliw t4,t4,0x8 + 3bc05178: 8fd1 or a5,a5,a2 + 3bc0517a: 00bed91b srliw s2,t4,0xb + 3bc0517e: 03f9063b mulw a2,s2,t6 + 3bc05182: 0013131b slliw t1,t1,0x1 + 3bc05186: 44c7f663 bgeu a5,a2,3bc055d2 + 3bc0518a: 41f40fbb subw t6,s0,t6 + 3bc0518e: 005fdf9b srliw t6,t6,0x5 + 3bc05192: 007f83bb addw t2,t6,t2 + 3bc05196: 3c03b38b extu t2,t2,15,0 + 3bc0519a: 2372d38b srh t2,t0,s7,1 + 3bc0519e: 3361 addiw t1,t1,-8 + 3bc051a0: 44ad li s1,11 + 3bc051a2: 1114f5e3 bgeu s1,a7,3bc05aac + 3bc051a6: 448d li s1,3 + 3bc051a8: 8f9a mv t6,t1 + 3bc051aa: 0064f363 bgeu s1,t1,3bc051b0 + 3bc051ae: 4f8d li t6,3 + 3bc051b0: 006f9f9b slliw t6,t6,0x6 + 3bc051b4: 040f8f9b addiw t6,t6,64 + 3bc051b8: 7c0fbf8b extu t6,t6,31,0 + 3bc051bc: 03f59f8b addsl t6,a1,t6,1 + 3bc051c0: 002fd383 lhu t2,2(t6) + 3bc051c4: 00038e9b sext.w t4,t2 + 3bc051c8: 00d67a63 bgeu a2,a3,3bc051dc + 3bc051cc: 9817428b lbuia t0,(a4),1,0 + 3bc051d0: 0087979b slliw a5,a5,0x8 + 3bc051d4: 0086161b slliw a2,a2,0x8 + 3bc051d8: 00f2e7b3 or a5,t0,a5 + 3bc051dc: 00b6549b srliw s1,a2,0xb + 3bc051e0: 03d482bb mulw t0,s1,t4 + 3bc051e4: 5e57f763 bgeu a5,t0,3bc057d2 + 3bc051e8: 41d40ebb subw t4,s0,t4 + 3bc051ec: 005ede9b srliw t4,t4,0x5 + 3bc051f0: 007e83bb addw t2,t4,t2 + 3bc051f4: 3c03b38b extu t2,t2,15,0 + 3bc051f8: 4609 li a2,2 + 3bc051fa: 007f9123 sh t2,2(t6) + 3bc051fe: b2cfc48b lurhu s1,t6,a2,1 + 3bc05202: 7c063b8b extu s7,a2,31,0 + 3bc05206: 00048e9b sext.w t4,s1 + 3bc0520a: 00d2fa63 bgeu t0,a3,3bc0521e + 3bc0520e: 9817438b lbuia t2,(a4),1,0 + 3bc05212: 0087979b slliw a5,a5,0x8 + 3bc05216: 0082929b slliw t0,t0,0x8 + 3bc0521a: 00f3e7b3 or a5,t2,a5 + 3bc0521e: 00b2d91b srliw s2,t0,0xb + 3bc05222: 03d903bb mulw t2,s2,t4 + 3bc05226: 00161c1b slliw s8,a2,0x1 + 3bc0522a: 0606 slli a2,a2,0x1 + 3bc0522c: 5a77ff63 bgeu a5,t2,3bc057ea + 3bc05230: 41d40ebb subw t4,s0,t4 + 3bc05234: 005ede9b srliw t4,t4,0x5 + 3bc05238: 009e84bb addw s1,t4,s1 + 3bc0523c: 3c04b48b extu s1,s1,15,0 + 3bc05240: 237fd48b srh s1,t6,s7,1 + 3bc05244: b2cfc48b lurhu s1,t6,a2,1 + 3bc05248: 7c063c0b extu s8,a2,31,0 + 3bc0524c: 00048e9b sext.w t4,s1 + 3bc05250: 00d3fa63 bgeu t2,a3,3bc05264 + 3bc05254: 9817428b lbuia t0,(a4),1,0 + 3bc05258: 0087979b slliw a5,a5,0x8 + 3bc0525c: 0083939b slliw t2,t2,0x8 + 3bc05260: 00f2e7b3 or a5,t0,a5 + 3bc05264: 00b3db9b srliw s7,t2,0xb + 3bc05268: 03db82bb mulw t0,s7,t4 + 3bc0526c: 0016191b slliw s2,a2,0x1 + 3bc05270: 5857fa63 bgeu a5,t0,3bc05804 + 3bc05274: 41d40ebb subw t4,s0,t4 + 3bc05278: 005ede9b srliw t4,t4,0x5 + 3bc0527c: 009e84bb addw s1,t4,s1 + 3bc05280: 3c04b48b extu s1,s1,15,0 + 3bc05284: 238fd48b srh s1,t6,s8,1 + 3bc05288: b32fc38b lurhu t2,t6,s2,1 + 3bc0528c: 7c093c0b extu s8,s2,31,0 + 3bc05290: 0003861b sext.w a2,t2 + 3bc05294: 00d2fa63 bgeu t0,a3,3bc052a8 + 3bc05298: 98174e8b lbuia t4,(a4),1,0 + 3bc0529c: 0087979b slliw a5,a5,0x8 + 3bc052a0: 0082929b slliw t0,t0,0x8 + 3bc052a4: 00fee7b3 or a5,t4,a5 + 3bc052a8: 00b2db9b srliw s7,t0,0xb + 3bc052ac: 02cb8ebb mulw t4,s7,a2 + 3bc052b0: 0019149b slliw s1,s2,0x1 + 3bc052b4: 57d7f463 bgeu a5,t4,3bc0581c + 3bc052b8: 40c4063b subw a2,s0,a2 + 3bc052bc: 0056561b srliw a2,a2,0x5 + 3bc052c0: 007603bb addw t2,a2,t2 + 3bc052c4: 3c03b38b extu t2,t2,15,0 + 3bc052c8: 238fd38b srh t2,t6,s8,1 + 3bc052cc: b29fc28b lurhu t0,t6,s1,1 + 3bc052d0: 7c04bc0b extu s8,s1,31,0 + 3bc052d4: 0002861b sext.w a2,t0 + 3bc052d8: 00defa63 bgeu t4,a3,3bc052ec + 3bc052dc: 9817438b lbuia t2,(a4),1,0 + 3bc052e0: 0087979b slliw a5,a5,0x8 + 3bc052e4: 008e9e9b slliw t4,t4,0x8 + 3bc052e8: 00f3e7b3 or a5,t2,a5 + 3bc052ec: 00bedb9b srliw s7,t4,0xb + 3bc052f0: 02cb83bb mulw t2,s7,a2 + 3bc052f4: 0014991b slliw s2,s1,0x1 + 3bc052f8: 5277fe63 bgeu a5,t2,3bc05834 + 3bc052fc: 40c4063b subw a2,s0,a2 + 3bc05300: 0056561b srliw a2,a2,0x5 + 3bc05304: 005602bb addw t0,a2,t0 + 3bc05308: 3c02b28b extu t0,t0,15,0 + 3bc0530c: 238fd28b srh t0,t6,s8,1 + 3bc05310: b32fc48b lurhu s1,t6,s2,1 + 3bc05314: 7c093c0b extu s8,s2,31,0 + 3bc05318: 0004829b sext.w t0,s1 + 3bc0531c: 00d3f963 bgeu t2,a3,3bc0532e + 3bc05320: 9817460b lbuia a2,(a4),1,0 + 3bc05324: 0087979b slliw a5,a5,0x8 + 3bc05328: 0083939b slliw t2,t2,0x8 + 3bc0532c: 8fd1 or a5,a5,a2 + 3bc0532e: 00b3db9b srliw s7,t2,0xb + 3bc05332: 025b863b mulw a2,s7,t0 + 3bc05336: 00191e9b slliw t4,s2,0x1 + 3bc0533a: 50c7f963 bgeu a5,a2,3bc0584c + 3bc0533e: 405402bb subw t0,s0,t0 + 3bc05342: 0052d29b srliw t0,t0,0x5 + 3bc05346: 009284bb addw s1,t0,s1 + 3bc0534a: 3c04b48b extu s1,s1,15,0 + 3bc0534e: fc0e8e9b addiw t4,t4,-64 + 3bc05352: 238fd48b srh s1,t6,s8,1 + 3bc05356: 000e839b sext.w t2,t4 + 3bc0535a: 448d li s1,3 + 3bc0535c: 0874f063 bgeu s1,t2,3bc053dc + 3bc05360: 001eff93 andi t6,t4,1 + 3bc05364: 44b5 li s1,13 + 3bc05366: 001ed29b srliw t0,t4,0x1 + 3bc0536a: 002fef93 ori t6,t6,2 + 3bc0536e: 5074e963 bltu s1,t2,3bc05880 + 3bc05372: 32fd addiw t0,t0,-1 + 3bc05374: 005f9fbb sllw t6,t6,t0 + 3bc05378: 2f85 addiw t6,t6,1 + 3bc0537a: 4c05 li s8,1 + 3bc0537c: 020f9493 slli s1,t6,0x20 + 3bc05380: 01f4db93 srli s7,s1,0x1f + 3bc05384: 74fd lui s1,0xfffff + 3bc05386: 30048493 addi s1,s1,768 # fffffffffffff300 <__BL2_END__+0xffffffffc43ebaf0> + 3bc0538a: 9ba6 add s7,s7,s1 + 3bc0538c: a175c48b lrhu s1,a1,s7,0 + 3bc05390: 0004839b sext.w t2,s1 + 3bc05394: 00d67a63 bgeu a2,a3,3bc053a8 + 3bc05398: 98174e8b lbuia t4,(a4),1,0 + 3bc0539c: 0087979b slliw a5,a5,0x8 + 3bc053a0: 0086161b slliw a2,a2,0x8 + 3bc053a4: 00fee7b3 or a5,t4,a5 + 3bc053a8: 00b6591b srliw s2,a2,0xb + 3bc053ac: 02790d3b mulw s10,s2,t2 + 3bc053b0: 001c1e9b slliw t4,s8,0x1 + 3bc053b4: 4ba7f963 bgeu a5,s10,3bc05866 + 3bc053b8: 407403bb subw t2,s0,t2 + 3bc053bc: 0053d39b srliw t2,t2,0x5 + 3bc053c0: 009384bb addw s1,t2,s1 + 3bc053c4: 3c04b48b extu s1,s1,15,0 + 3bc053c8: 018f8fbb addw t6,t6,s8 + 3bc053cc: 866a mv a2,s10 + 3bc053ce: 2175d48b srh s1,a1,s7,0 + 3bc053d2: 32fd addiw t0,t0,-1 + 3bc053d4: 48029763 bnez t0,3bc05862 + 3bc053d8: 41df83bb subw t2,t6,t4 + 3bc053dc: 44c9 li s1,18 + 3bc053de: 00138f9b addiw t6,t2,1 + 3bc053e2: 6d14f363 bgeu s1,a7,3bc05aa8 + 3bc053e6: 48a9 li a7,10 + 3bc053e8: 6ee2 ld t4,24(sp) + 3bc053ea: 41de1e8b mveqz t4,t3,t4 + 3bc053ee: 73d3e063 bltu t2,t4,3bc05b0e + 3bc053f2: 03053423 sd a6,40(a0) + 3bc053f6: c24ff06f j 3bc0481a + 3bc053fa: 0053d39b srliw t2,t2,0x5 + 3bc053fe: 407c03bb subw t2,s8,t2 + 3bc05402: 2375d38b srh t2,a1,s7,1 + 3bc05406: 018b0c13 addi s8,s6,24 + 3bc0540a: a185cb8b lrhu s7,a1,s8,0 + 3bc0540e: 40c48cbb subw s9,s1,a2 + 3bc05412: 9f91 subw a5,a5,a2 + 3bc05414: 000b839b sext.w t2,s7 + 3bc05418: 00dcfa63 bgeu s9,a3,3bc0542c + 3bc0541c: 0087929b slliw t0,a5,0x8 + 3bc05420: 9817478b lbuia a5,(a4),1,0 + 3bc05424: 008c9c9b slliw s9,s9,0x8 + 3bc05428: 0057e7b3 or a5,a5,t0 + 3bc0542c: 00bcd61b srliw a2,s9,0xb + 3bc05430: 027602bb mulw t0,a2,t2 + 3bc05434: 8616 mv a2,t0 + 3bc05436: 0a57f463 bgeu a5,t0,3bc054de + 3bc0543a: 407403bb subw t2,s0,t2 + 3bc0543e: 0053d39b srliw t2,t2,0x5 + 3bc05442: 74fd lui s1,0xfffff + 3bc05444: 017383bb addw t2,t2,s7 + 3bc05448: 40048493 addi s1,s1,1024 # fffffffffffff400 <__BL2_END__+0xffffffffc43ebbf0> + 3bc0544c: 2185d38b srh t2,a1,s8,0 + 3bc05450: 9926 add s2,s2,s1 + 3bc05452: a125c48b lrhu s1,a1,s2,0 + 3bc05456: 0004839b sext.w t2,s1 + 3bc0545a: 00d2f963 bgeu t0,a3,3bc0546c + 3bc0545e: 9817460b lbuia a2,(a4),1,0 + 3bc05462: 0087979b slliw a5,a5,0x8 + 3bc05466: 0082929b slliw t0,t0,0x8 + 3bc0546a: 8fd1 or a5,a5,a2 + 3bc0546c: 00b2db1b srliw s6,t0,0xb + 3bc05470: 027b063b mulw a2,s6,t2 + 3bc05474: 8b32 mv s6,a2 + 3bc05476: 02c7ff63 bgeu a5,a2,3bc054b4 + 3bc0547a: 407403bb subw t2,s0,t2 + 3bc0547e: 0053d39b srliw t2,t2,0x5 + 3bc05482: 009383bb addw t2,t2,s1 + 3bc05486: 2125d38b srh t2,a1,s2,0 + 3bc0548a: 7c0fb38b extu t2,t6,31,0 + 3bc0548e: 40780eb3 sub t4,a6,t2 + 3bc05492: 82d6 mv t0,s5 + 3bc05494: 00786363 bltu a6,t2,3bc0549a + 3bc05498: 4281 li t0,0 + 3bc0549a: 9ed2 add t4,t4,s4 + 3bc0549c: 805ece8b lrbu t4,t4,t0,0 + 3bc054a0: 2e05 addiw t3,t3,1 + 3bc054a2: 010a5e8b srb t4,s4,a6,0 + 3bc054a6: 4e99 li t4,6 + 3bc054a8: 0805 addi a6,a6,1 + 3bc054aa: 691ef963 bgeu t4,a7,3bc05b3c + 3bc054ae: 48ad li a7,11 + 3bc054b0: ee6ff06f j 3bc04b96 + 3bc054b4: 0053d39b srliw t2,t2,0x5 + 3bc054b8: 837a mv t1,t5 + 3bc054ba: 407483bb subw t2,s1,t2 + 3bc054be: 8f7e mv t5,t6 + 3bc054c0: 40c2863b subw a2,t0,a2 + 3bc054c4: 416787bb subw a5,a5,s6 + 3bc054c8: 2125d38b srh t2,a1,s2,0 + 3bc054cc: 8f9a mv t6,t1 + 3bc054ce: 4319 li t1,6 + 3bc054d0: 0d137663 bgeu t1,a7,3bc0559c + 3bc054d4: 48ad li a7,11 + 3bc054d6: 8b7a mv s6,t5 + 3bc054d8: 62a6 ld t0,72(sp) + 3bc054da: 8f7e mv t5,t6 + 3bc054dc: be6d j 3bc05096 + 3bc054de: 0053d39b srliw t2,t2,0x5 + 3bc054e2: 407b83bb subw t2,s7,t2 + 3bc054e6: 2185d38b srh t2,a1,s8,0 + 3bc054ea: 030b0493 addi s1,s6,48 + 3bc054ee: a095c38b lrhu t2,a1,s1,0 + 3bc054f2: 405c82bb subw t0,s9,t0 + 3bc054f6: 9f91 subw a5,a5,a2 + 3bc054f8: 0003831b sext.w t1,t2 + 3bc054fc: 00d2f963 bgeu t0,a3,3bc0550e + 3bc05500: 0087961b slliw a2,a5,0x8 + 3bc05504: 9817478b lbuia a5,(a4),1,0 + 3bc05508: 0082929b slliw t0,t0,0x8 + 3bc0550c: 8fd1 or a5,a5,a2 + 3bc0550e: 00b2d91b srliw s2,t0,0xb + 3bc05512: 0269063b mulw a2,s2,t1 + 3bc05516: 00c7fb63 bgeu a5,a2,3bc0552c + 3bc0551a: 4064033b subw t1,s0,t1 + 3bc0551e: 0053531b srliw t1,t1,0x5 + 3bc05522: 0073033b addw t1,t1,t2 + 3bc05526: 2095d30b srh t1,a1,s1,0 + 3bc0552a: b755 j 3bc054ce + 3bc0552c: 0053531b srliw t1,t1,0x5 + 3bc05530: 4063833b subw t1,t2,t1 + 3bc05534: 2095d30b srh t1,a1,s1,0 + 3bc05538: 048b0b13 addi s6,s6,72 + 3bc0553c: a165c38b lrhu t2,a1,s6,0 + 3bc05540: 40c28bbb subw s7,t0,a2 + 3bc05544: 9f91 subw a5,a5,a2 + 3bc05546: 0003831b sext.w t1,t2 + 3bc0554a: 00dbfa63 bgeu s7,a3,3bc0555e + 3bc0554e: 0087991b slliw s2,a5,0x8 + 3bc05552: 9817478b lbuia a5,(a4),1,0 + 3bc05556: 008b9b9b slliw s7,s7,0x8 + 3bc0555a: 0127e7b3 or a5,a5,s2 + 3bc0555e: 00bbd29b srliw t0,s7,0xb + 3bc05562: 0262863b mulw a2,t0,t1 + 3bc05566: 00c7fe63 bgeu a5,a2,3bc05582 + 3bc0556a: 4064033b subw t1,s0,t1 + 3bc0556e: 0053531b srliw t1,t1,0x5 + 3bc05572: 0073033b addw t1,t1,t2 + 3bc05576: 2165d30b srh t1,a1,s6,0 + 3bc0557a: 837a mv t1,t5 + 3bc0557c: 8f4e mv t5,s3 + 3bc0557e: 899a mv s3,t1 + 3bc05580: b7b9 j 3bc054ce + 3bc05582: 0053531b srliw t1,t1,0x5 + 3bc05586: 4063833b subw t1,t2,t1 + 3bc0558a: 9f91 subw a5,a5,a2 + 3bc0558c: 2165d30b srh t1,a1,s6,0 + 3bc05590: 40cb863b subw a2,s7,a2 + 3bc05594: 837a mv t1,t5 + 3bc05596: 7f02 ld t5,32(sp) + 3bc05598: f04e sd s3,32(sp) + 3bc0559a: b7d5 j 3bc0557e + 3bc0559c: 48a1 li a7,8 + 3bc0559e: bf25 j 3bc054d6 + 3bc055a0: 0056561b srliw a2,a2,0x5 + 3bc055a4: 40ce8ebb subw t4,t4,a2 + 3bc055a8: 41f787bb subw a5,a5,t6 + 3bc055ac: 3c0ebe8b extu t4,t4,15,0 + 3bc055b0: 41f48fbb subw t6,s1,t6 + 3bc055b4: 430d li t1,3 + 3bc055b6: beb1 j 3bc05112 + 3bc055b8: 0056561b srliw a2,a2,0x5 + 3bc055bc: 40c383bb subw t2,t2,a2 + 3bc055c0: 41d787bb subw a5,a5,t4 + 3bc055c4: 3c03b38b extu t2,t2,15,0 + 3bc055c8: 001b831b addiw t1,s7,1 + 3bc055cc: 41df8ebb subw t4,t6,t4 + 3bc055d0: b661 j 3bc05158 + 3bc055d2: 005fdf9b srliw t6,t6,0x5 + 3bc055d6: 41f383bb subw t2,t2,t6 + 3bc055da: 9f91 subw a5,a5,a2 + 3bc055dc: 3c03b38b extu t2,t2,15,0 + 3bc055e0: 2305 addiw t1,t1,1 + 3bc055e2: 40ce863b subw a2,t4,a2 + 3bc055e6: be55 j 3bc0519a + 3bc055e8: 005fdf9b srliw t6,t6,0x5 + 3bc055ec: 41f38fbb subw t6,t2,t6 + 3bc055f0: 0102d383 lhu t2,16(t0) + 3bc055f4: 01f29023 sh t6,0(t0) + 3bc055f8: 9e05 subw a2,a2,s1 + 3bc055fa: 406787bb subw a5,a5,t1 + 3bc055fe: 00038f9b sext.w t6,t2 + 3bc05602: 00d67a63 bgeu a2,a3,3bc05616 + 3bc05606: 0087931b slliw t1,a5,0x8 + 3bc0560a: 9817478b lbuia a5,(a4),1,0 + 3bc0560e: 0086161b slliw a2,a2,0x8 + 3bc05612: 0067e7b3 or a5,a5,t1 + 3bc05616: 00b6531b srliw t1,a2,0xb + 3bc0561a: 03f304bb mulw s1,t1,t6 + 3bc0561e: 1297f563 bgeu a5,s1,3bc05748 + 3bc05622: 41f40fbb subw t6,s0,t6 + 3bc05626: 005fdf9b srliw t6,t6,0x5 + 3bc0562a: 7c0ebe8b extu t4,t4,31,0 + 3bc0562e: 007f8fbb addw t6,t6,t2 + 3bc05632: 0ea1 addi t4,t4,8 + 3bc05634: 01f29823 sh t6,16(t0) + 3bc05638: 03d2928b addsl t0,t0,t4,1 + 3bc0563c: 0022df83 lhu t6,2(t0) + 3bc05640: 000f861b sext.w a2,t6 + 3bc05644: 00d4fa63 bgeu s1,a3,3bc05658 + 3bc05648: 9817430b lbuia t1,(a4),1,0 + 3bc0564c: 0087979b slliw a5,a5,0x8 + 3bc05650: 0084949b slliw s1,s1,0x8 + 3bc05654: 00f367b3 or a5,t1,a5 + 3bc05658: 00b4d31b srliw t1,s1,0xb + 3bc0565c: 02c30ebb mulw t4,t1,a2 + 3bc05660: 0bd7f063 bgeu a5,t4,3bc05700 + 3bc05664: 40c4063b subw a2,s0,a2 + 3bc05668: 0056561b srliw a2,a2,0x5 + 3bc0566c: 01f60fbb addw t6,a2,t6 + 3bc05670: 3c0fbf8b extu t6,t6,15,0 + 3bc05674: 4309 li t1,2 + 3bc05676: 01f29123 sh t6,2(t0) + 3bc0567a: b262c38b lurhu t2,t0,t1,1 + 3bc0567e: 7c03390b extu s2,t1,31,0 + 3bc05682: 0003861b sext.w a2,t2 + 3bc05686: 00defa63 bgeu t4,a3,3bc0569a + 3bc0568a: 98174f8b lbuia t6,(a4),1,0 + 3bc0568e: 0087979b slliw a5,a5,0x8 + 3bc05692: 008e9e9b slliw t4,t4,0x8 + 3bc05696: 00ffe7b3 or a5,t6,a5 + 3bc0569a: 00bed49b srliw s1,t4,0xb + 3bc0569e: 02c48fbb mulw t6,s1,a2 + 3bc056a2: 00131b9b slliw s7,t1,0x1 + 3bc056a6: 0306 slli t1,t1,0x1 + 3bc056a8: 07f7f863 bgeu a5,t6,3bc05718 + 3bc056ac: 40c4063b subw a2,s0,a2 + 3bc056b0: 0056561b srliw a2,a2,0x5 + 3bc056b4: 007603bb addw t2,a2,t2 + 3bc056b8: 3c03b38b extu t2,t2,15,0 + 3bc056bc: 2322d38b srh t2,t0,s2,1 + 3bc056c0: b262c48b lurhu s1,t0,t1,1 + 3bc056c4: 7c03390b extu s2,t1,31,0 + 3bc056c8: 00048e9b sext.w t4,s1 + 3bc056cc: 00dff963 bgeu t6,a3,3bc056de + 3bc056d0: 9817460b lbuia a2,(a4),1,0 + 3bc056d4: 0087979b slliw a5,a5,0x8 + 3bc056d8: 008f9f9b slliw t6,t6,0x8 + 3bc056dc: 8fd1 or a5,a5,a2 + 3bc056de: 00bfd39b srliw t2,t6,0xb + 3bc056e2: 03d3863b mulw a2,t2,t4 + 3bc056e6: 0013131b slliw t1,t1,0x1 + 3bc056ea: 04c7f463 bgeu a5,a2,3bc05732 + 3bc056ee: 41d40ebb subw t4,s0,t4 + 3bc056f2: 005ede9b srliw t4,t4,0x5 + 3bc056f6: 009e8ebb addw t4,t4,s1 + 3bc056fa: 2322de8b srh t4,t0,s2,1 + 3bc056fe: b44d j 3bc051a0 + 3bc05700: 0056561b srliw a2,a2,0x5 + 3bc05704: 40cf8fbb subw t6,t6,a2 + 3bc05708: 41d787bb subw a5,a5,t4 + 3bc0570c: 3c0fbf8b extu t6,t6,15,0 + 3bc05710: 41d48ebb subw t4,s1,t4 + 3bc05714: 430d li t1,3 + 3bc05716: b785 j 3bc05676 + 3bc05718: 0056561b srliw a2,a2,0x5 + 3bc0571c: 40c383bb subw t2,t2,a2 + 3bc05720: 41f787bb subw a5,a5,t6 + 3bc05724: 3c03b38b extu t2,t2,15,0 + 3bc05728: 001b831b addiw t1,s7,1 + 3bc0572c: 41fe8fbb subw t6,t4,t6 + 3bc05730: b771 j 3bc056bc + 3bc05732: 005ede9b srliw t4,t4,0x5 + 3bc05736: 41d48ebb subw t4,s1,t4 + 3bc0573a: 9f91 subw a5,a5,a2 + 3bc0573c: 2322de8b srh t4,t0,s2,1 + 3bc05740: 2305 addiw t1,t1,1 + 3bc05742: 40cf863b subw a2,t6,a2 + 3bc05746: bca9 j 3bc051a0 + 3bc05748: 005fdf9b srliw t6,t6,0x5 + 3bc0574c: 41f38fbb subw t6,t2,t6 + 3bc05750: 9e05 subw a2,a2,s1 + 3bc05752: 9f85 subw a5,a5,s1 + 3bc05754: 01f29823 sh t6,16(t0) + 3bc05758: 4305 li t1,1 + 3bc0575a: 0ff00b93 li s7,255 + 3bc0575e: 02031493 slli s1,t1,0x20 + 3bc05762: 01f4de93 srli t4,s1,0x1f + 3bc05766: 200e8e93 addi t4,t4,512 + 3bc0576a: a1d2cf8b lrhu t6,t0,t4,0 + 3bc0576e: 01d28c33 add s8,t0,t4 + 3bc05772: 000f8e9b sext.w t4,t6 + 3bc05776: 00d67a63 bgeu a2,a3,3bc0578a + 3bc0577a: 9817438b lbuia t2,(a4),1,0 + 3bc0577e: 0087979b slliw a5,a5,0x8 + 3bc05782: 0086161b slliw a2,a2,0x8 + 3bc05786: 00f3e7b3 or a5,t2,a5 + 3bc0578a: 00b6539b srliw t2,a2,0xb + 3bc0578e: 03d3893b mulw s2,t2,t4 + 3bc05792: 0013131b slliw t1,t1,0x1 + 3bc05796: 0327f263 bgeu a5,s2,3bc057ba + 3bc0579a: 41d40ebb subw t4,s0,t4 + 3bc0579e: 005ede9b srliw t4,t4,0x5 + 3bc057a2: 01fe8fbb addw t6,t4,t6 + 3bc057a6: 3c0fbf8b extu t6,t6,15,0 + 3bc057aa: 864a mv a2,s2 + 3bc057ac: 01fc1023 sh t6,0(s8) + 3bc057b0: fa6bf7e3 bgeu s7,t1,3bc0575e + 3bc057b4: f103031b addiw t1,t1,-240 + 3bc057b8: b2e5 j 3bc051a0 + 3bc057ba: 005ede9b srliw t4,t4,0x5 + 3bc057be: 41df8fbb subw t6,t6,t4 + 3bc057c2: 4126063b subw a2,a2,s2 + 3bc057c6: 412787bb subw a5,a5,s2 + 3bc057ca: 3c0fbf8b extu t6,t6,15,0 + 3bc057ce: 2305 addiw t1,t1,1 + 3bc057d0: bff1 j 3bc057ac + 3bc057d2: 005ede9b srliw t4,t4,0x5 + 3bc057d6: 41d383bb subw t2,t2,t4 + 3bc057da: 405787bb subw a5,a5,t0 + 3bc057de: 3c03b38b extu t2,t2,15,0 + 3bc057e2: 405602bb subw t0,a2,t0 + 3bc057e6: 460d li a2,3 + 3bc057e8: bc09 j 3bc051fa + 3bc057ea: 005ede9b srliw t4,t4,0x5 + 3bc057ee: 41d484bb subw s1,s1,t4 + 3bc057f2: 407787bb subw a5,a5,t2 + 3bc057f6: 3c04b48b extu s1,s1,15,0 + 3bc057fa: 001c061b addiw a2,s8,1 + 3bc057fe: 407283bb subw t2,t0,t2 + 3bc05802: bc3d j 3bc05240 + 3bc05804: 005ede9b srliw t4,t4,0x5 + 3bc05808: 41d484bb subw s1,s1,t4 + 3bc0580c: 405787bb subw a5,a5,t0 + 3bc05810: 3c04b48b extu s1,s1,15,0 + 3bc05814: 2905 addiw s2,s2,1 + 3bc05816: 405382bb subw t0,t2,t0 + 3bc0581a: b4ad j 3bc05284 + 3bc0581c: 0056561b srliw a2,a2,0x5 + 3bc05820: 40c383bb subw t2,t2,a2 + 3bc05824: 41d787bb subw a5,a5,t4 + 3bc05828: 3c03b38b extu t2,t2,15,0 + 3bc0582c: 2485 addiw s1,s1,1 + 3bc0582e: 41d28ebb subw t4,t0,t4 + 3bc05832: bc59 j 3bc052c8 + 3bc05834: 0056561b srliw a2,a2,0x5 + 3bc05838: 40c282bb subw t0,t0,a2 + 3bc0583c: 407787bb subw a5,a5,t2 + 3bc05840: 3c02b28b extu t0,t0,15,0 + 3bc05844: 2905 addiw s2,s2,1 + 3bc05846: 407e83bb subw t2,t4,t2 + 3bc0584a: b4c9 j 3bc0530c + 3bc0584c: 0052d29b srliw t0,t0,0x5 + 3bc05850: 405484bb subw s1,s1,t0 + 3bc05854: 9f91 subw a5,a5,a2 + 3bc05856: 3c04b48b extu s1,s1,15,0 + 3bc0585a: 2e85 addiw t4,t4,1 + 3bc0585c: 40c3863b subw a2,t2,a2 + 3bc05860: b4fd j 3bc0534e + 3bc05862: 8c76 mv s8,t4 + 3bc05864: be21 j 3bc0537c + 3bc05866: 0053d39b srliw t2,t2,0x5 + 3bc0586a: 407484bb subw s1,s1,t2 + 3bc0586e: 41a6063b subw a2,a2,s10 + 3bc05872: 41a787bb subw a5,a5,s10 + 3bc05876: 3c04b48b extu s1,s1,15,0 + 3bc0587a: 01fe8fbb addw t6,t4,t6 + 3bc0587e: be81 j 3bc053ce + 3bc05880: 32ed addiw t0,t0,-5 + 3bc05882: 00d67a63 bgeu a2,a3,3bc05896 + 3bc05886: 98174e8b lbuia t4,(a4),1,0 + 3bc0588a: 0087979b slliw a5,a5,0x8 + 3bc0588e: 0086161b slliw a2,a2,0x8 + 3bc05892: 00fee7b3 or a5,t4,a5 + 3bc05896: 0016539b srliw t2,a2,0x1 + 3bc0589a: 407787bb subw a5,a5,t2 + 3bc0589e: 41f7d49b sraiw s1,a5,0x1f + 3bc058a2: 001f9f9b slliw t6,t6,0x1 + 3bc058a6: 0003861b sext.w a2,t2 + 3bc058aa: 2f85 addiw t6,t6,1 + 3bc058ac: 0093f3b3 and t2,t2,s1 + 3bc058b0: 32fd addiw t0,t0,-1 + 3bc058b2: 01f48fbb addw t6,s1,t6 + 3bc058b6: 007787bb addw a5,a5,t2 + 3bc058ba: fc0294e3 bnez t0,3bc05882 + 3bc058be: 0025d283 lhu t0,2(a1) + 3bc058c2: 004f9f9b slliw t6,t6,0x4 + 3bc058c6: 00028e9b sext.w t4,t0 + 3bc058ca: 00d67a63 bgeu a2,a3,3bc058de + 3bc058ce: 9817438b lbuia t2,(a4),1,0 + 3bc058d2: 0087979b slliw a5,a5,0x8 + 3bc058d6: 0086161b slliw a2,a2,0x8 + 3bc058da: 00f3e7b3 or a5,t2,a5 + 3bc058de: 00b6549b srliw s1,a2,0xb + 3bc058e2: 03d483bb mulw t2,s1,t4 + 3bc058e6: 1677f463 bgeu a5,t2,3bc05a4e + 3bc058ea: 41d40ebb subw t4,s0,t4 + 3bc058ee: 005ede9b srliw t4,t4,0x5 + 3bc058f2: 005e82bb addw t0,t4,t0 + 3bc058f6: 3c02b28b extu t0,t0,15,0 + 3bc058fa: 4e89 li t4,2 + 3bc058fc: 00559123 sh t0,2(a1) + 3bc05900: b3d5c48b lurhu s1,a1,t4,1 + 3bc05904: 7c0ebb8b extu s7,t4,31,0 + 3bc05908: 0004861b sext.w a2,s1 + 3bc0590c: 00d3fa63 bgeu t2,a3,3bc05920 + 3bc05910: 9817428b lbuia t0,(a4),1,0 + 3bc05914: 0087979b slliw a5,a5,0x8 + 3bc05918: 0083939b slliw t2,t2,0x8 + 3bc0591c: 00f2e7b3 or a5,t0,a5 + 3bc05920: 00b3d91b srliw s2,t2,0xb + 3bc05924: 02c902bb mulw t0,s2,a2 + 3bc05928: 1257ff63 bgeu a5,t0,3bc05a66 + 3bc0592c: 40c4063b subw a2,s0,a2 + 3bc05930: 0056561b srliw a2,a2,0x5 + 3bc05934: 9cb1 addw s1,s1,a2 + 3bc05936: 3c04b48b extu s1,s1,15,0 + 3bc0593a: 0e89 addi t4,t4,2 + 3bc0593c: 2375d48b srh s1,a1,s7,1 + 3bc05940: b3d5cb8b lurhu s7,a1,t4,1 + 3bc05944: 7c0eb90b extu s2,t4,31,0 + 3bc05948: 000b861b sext.w a2,s7 + 3bc0594c: 00d2fa63 bgeu t0,a3,3bc05960 + 3bc05950: 9817438b lbuia t2,(a4),1,0 + 3bc05954: 0087979b slliw a5,a5,0x8 + 3bc05958: 0082929b slliw t0,t0,0x8 + 3bc0595c: 00f3e7b3 or a5,t2,a5 + 3bc05960: 00b2d49b srliw s1,t0,0xb + 3bc05964: 02c483bb mulw t2,s1,a2 + 3bc05968: 1077fa63 bgeu a5,t2,3bc05a7c + 3bc0596c: 40c4063b subw a2,s0,a2 + 3bc05970: 0056561b srliw a2,a2,0x5 + 3bc05974: 01760bbb addw s7,a2,s7 + 3bc05978: 3c0bbb8b extu s7,s7,15,0 + 3bc0597c: 2e91 addiw t4,t4,4 + 3bc0597e: 2325db8b srh s7,a1,s2,1 + 3bc05982: b3d5c48b lurhu s1,a1,t4,1 + 3bc05986: 7c0ebb8b extu s7,t4,31,0 + 3bc0598a: 0004829b sext.w t0,s1 + 3bc0598e: 00d3f963 bgeu t2,a3,3bc059a0 + 3bc05992: 9817460b lbuia a2,(a4),1,0 + 3bc05996: 0087979b slliw a5,a5,0x8 + 3bc0599a: 0083939b slliw t2,t2,0x8 + 3bc0599e: 8fd1 or a5,a5,a2 + 3bc059a0: 00b3d91b srliw s2,t2,0xb + 3bc059a4: 0259063b mulw a2,s2,t0 + 3bc059a8: 0ec7f663 bgeu a5,a2,3bc05a94 + 3bc059ac: 405402bb subw t0,s0,t0 + 3bc059b0: 0052d29b srliw t0,t0,0x5 + 3bc059b4: 009284bb addw s1,t0,s1 + 3bc059b8: 3c04b48b extu s1,s1,15,0 + 3bc059bc: 3ee1 addiw t4,t4,-8 + 3bc059be: 01feefb3 or t6,t4,t6 + 3bc059c2: 2375d48b srh s1,a1,s7,1 + 3bc059c6: 000f839b sext.w t2,t6 + 3bc059ca: 54fd li s1,-1 + 3bc059cc: a09398e3 bne t2,s1,3bc053dc + 3bc059d0: 38d1 addiw a7,a7,-12 + 3bc059d2: 8fda mv t6,s6 + 3bc059d4: 11200313 li t1,274 + 3bc059d8: 010006b7 lui a3,0x1000 + 3bc059dc: 00d67963 bgeu a2,a3,3bc059ee + 3bc059e0: 9817468b lbuia a3,(a4),1,0 + 3bc059e4: 0087979b slliw a5,a5,0x8 + 3bc059e8: 0086161b slliw a2,a2,0x8 + 3bc059ec: 8fd5 or a5,a5,a3 + 3bc059ee: dd5c sw a5,60(a0) + 3bc059f0: 7782 ld a5,32(sp) + 3bc059f2: f918 sd a4,48(a0) + 3bc059f4: dd10 sw a2,56(a0) + 3bc059f6: c97c sw a5,84(a0) + 3bc059f8: 417c lw a5,68(a0) + 3bc059fa: 04652e23 sw t1,92(a0) + 3bc059fe: 03053423 sd a6,40(a0) + 3bc05a02: 05c52023 sw t3,64(a0) + 3bc05a06: 05f52423 sw t6,72(a0) + 3bc05a0a: 05e52623 sw t5,76(a0) + 3bc05a0e: 05352823 sw s3,80(a0) + 3bc05a12: 05152c23 sw a7,88(a0) + 3bc05a16: e789 bnez a5,3bc05a20 + 3bc05a18: 415c lw a5,4(a0) + 3bc05a1a: 00fe6363 bltu t3,a5,3bc05a20 + 3bc05a1e: c17c sw a5,68(a0) + 3bc05a20: 65c2 ld a1,16(sp) + 3bc05a22: e42a sd a0,8(sp) + 3bc05a24: d23fe0ef jal ra,3bc04746 + 3bc05a28: 6522 ld a0,8(sp) + 3bc05a2a: 6742 ld a4,16(sp) + 3bc05a2c: 751c ld a5,40(a0) + 3bc05a2e: 00e7fd63 bgeu a5,a4,3bc05a48 + 3bc05a32: 791c ld a5,48(a0) + 3bc05a34: 7742 ld a4,48(sp) + 3bc05a36: 00e7f963 bgeu a5,a4,3bc05a48 + 3bc05a3a: 4d78 lw a4,92(a0) + 3bc05a3c: 11100793 li a5,273 + 3bc05a40: 00e7e463 bltu a5,a4,3bc05a48 + 3bc05a44: d9bfe06f j 3bc047de + 3bc05a48: 4501 li a0,0 + 3bc05a4a: dd3fe06f j 3bc0481c + 3bc05a4e: 005ede9b srliw t4,t4,0x5 + 3bc05a52: 41d282bb subw t0,t0,t4 + 3bc05a56: 407787bb subw a5,a5,t2 + 3bc05a5a: 3c02b28b extu t0,t0,15,0 + 3bc05a5e: 407603bb subw t2,a2,t2 + 3bc05a62: 4e8d li t4,3 + 3bc05a64: bd61 j 3bc058fc + 3bc05a66: 0056561b srliw a2,a2,0x5 + 3bc05a6a: 9c91 subw s1,s1,a2 + 3bc05a6c: 405787bb subw a5,a5,t0 + 3bc05a70: 3c04b48b extu s1,s1,15,0 + 3bc05a74: 0e91 addi t4,t4,4 + 3bc05a76: 405382bb subw t0,t2,t0 + 3bc05a7a: b5c9 j 3bc0593c + 3bc05a7c: 0056561b srliw a2,a2,0x5 + 3bc05a80: 40cb8bbb subw s7,s7,a2 + 3bc05a84: 407787bb subw a5,a5,t2 + 3bc05a88: 3c0bbb8b extu s7,s7,15,0 + 3bc05a8c: 2ea1 addiw t4,t4,8 + 3bc05a8e: 407283bb subw t2,t0,t2 + 3bc05a92: b5f5 j 3bc0597e + 3bc05a94: 0052d29b srliw t0,t0,0x5 + 3bc05a98: 405484bb subw s1,s1,t0 + 3bc05a9c: 9f91 subw a5,a5,a2 + 3bc05a9e: 3c04b48b extu s1,s1,15,0 + 3bc05aa2: 40c3863b subw a2,t2,a2 + 3bc05aa6: bf21 j 3bc059be + 3bc05aa8: 489d li a7,7 + 3bc05aaa: ba3d j 3bc053e8 + 3bc05aac: 8fda mv t6,s6 + 3bc05aae: 64a2 ld s1,8(sp) + 3bc05ab0: 00230e9b addiw t4,t1,2 + 3bc05ab4: 8376 mv t1,t4 + 3bc05ab6: 410483b3 sub t2,s1,a6 + 3bc05aba: 93048ce3 beq s1,a6,3bc053f2 + 3bc05abe: 7c0eb28b extu t0,t4,31,0 + 3bc05ac2: 0053f463 bgeu t2,t0,3bc05aca + 3bc05ac6: 00038e9b sext.w t4,t2 + 3bc05aca: 7c0fb48b extu s1,t6,31,0 + 3bc05ace: 409803b3 sub t2,a6,s1 + 3bc05ad2: 82d6 mv t0,s5 + 3bc05ad4: 00986363 bltu a6,s1,3bc05ada + 3bc05ad8: 4281 li t0,0 + 3bc05ada: 9396 add t2,t2,t0 + 3bc05adc: 7c0eb48b extu s1,t4,31,0 + 3bc05ae0: 407a8933 sub s2,s5,t2 + 3bc05ae4: 01de0e3b addw t3,t3,t4 + 3bc05ae8: 41d3033b subw t1,t1,t4 + 3bc05aec: 010a02b3 add t0,s4,a6 + 3bc05af0: 02996363 bltu s2,s1,3bc05b16 + 3bc05af4: 410383b3 sub t2,t2,a6 + 3bc05af8: 00928eb3 add t4,t0,s1 + 3bc05afc: 9826 add a6,a6,s1 + 3bc05afe: 8072c48b lrbu s1,t0,t2,0 + 3bc05b02: 1812d48b sbia s1,(t0),1,0 + 3bc05b06: fe5e9ce3 bne t4,t0,3bc05afe + 3bc05b0a: 88cff06f j 3bc04b96 + 3bc05b0e: f04e sd s3,32(sp) + 3bc05b10: 89fa mv s3,t5 + 3bc05b12: 8f5a mv t5,s6 + 3bc05b14: bf69 j 3bc05aae + 3bc05b16: 84f6 mv s1,t4 + 3bc05b18: 807a490b lrbu s2,s4,t2,0 + 3bc05b1c: 0385 addi t2,t2,1 + 3bc05b1e: 01228023 sb s2,0(t0) + 3bc05b22: 007a9363 bne s5,t2,3bc05b28 + 3bc05b26: 4381 li t2,0 + 3bc05b28: 34fd addiw s1,s1,-1 + 3bc05b2a: 0285 addi t0,t0,1 + 3bc05b2c: f4f5 bnez s1,3bc05b18 + 3bc05b2e: 3efd addiw t4,t4,-1 + 3bc05b30: 0805 addi a6,a6,1 + 3bc05b32: 7c0ebe8b extu t4,t4,31,0 + 3bc05b36: 9876 add a6,a6,t4 + 3bc05b38: 85eff06f j 3bc04b96 + 3bc05b3c: 48a5 li a7,9 + 3bc05b3e: 858ff06f j 3bc04b96 + +000000003bc05b42 : + 3bc05b42: 00254703 lbu a4,2(a0) + 3bc05b46: 04052303 lw t1,64(a0) + 3bc05b4a: 4805 li a6,1 + 3bc05b4c: 00e8183b sllw a6,a6,a4 + 3bc05b50: 05852e83 lw t4,88(a0) + 3bc05b54: 387d addiw a6,a6,-1 + 3bc05b56: 01037833 and a6,t1,a6 + 3bc05b5a: 0048181b slliw a6,a6,0x4 + 3bc05b5e: 010e8e3b addw t3,t4,a6 + 3bc05b62: 01053883 ld a7,16(a0) + 3bc05b66: 020e1713 slli a4,t3,0x20 + 3bc05b6a: 5d14 lw a3,56(a0) + 3bc05b6c: 01f75e13 srli t3,a4,0x1f + 3bc05b70: 9e46 add t3,t3,a7 + 3bc05b72: 01000737 lui a4,0x1000 + 3bc05b76: 5d5c lw a5,60(a0) + 3bc05b78: e00e5f83 lhu t6,-512(t3) + 3bc05b7c: 8f2a mv t5,a0 + 3bc05b7e: 962e add a2,a2,a1 + 3bc05b80: 00e6fc63 bgeu a3,a4,3bc05b98 + 3bc05b84: 4501 li a0,0 + 3bc05b86: 0cc5f463 bgeu a1,a2,3bc05c4e + 3bc05b8a: 9815c70b lbuia a4,(a1),1,0 + 3bc05b8e: 0087979b slliw a5,a5,0x8 + 3bc05b92: 0086969b slliw a3,a3,0x8 + 3bc05b96: 8fd9 or a5,a5,a4 + 3bc05b98: 00b6d71b srliw a4,a3,0xb + 3bc05b9c: 03f7073b mulw a4,a4,t6 + 3bc05ba0: 14e7f063 bgeu a5,a4,3bc05ce0 + 3bc05ba4: 040f3683 ld a3,64(t5) + 3bc05ba8: 28088893 addi a7,a7,640 # f0280 <__BSS_SIZE__+0xea670> + 3bc05bac: caa1 beqz a3,3bc05bfc + 3bc05bae: 001f4503 lbu a0,1(t5) + 3bc05bb2: 4685 li a3,1 + 3bc05bb4: 000f4803 lbu a6,0(t5) + 3bc05bb8: 00a696bb sllw a3,a3,a0 + 3bc05bbc: 36fd addiw a3,a3,-1 + 3bc05bbe: 00d37333 and t1,t1,a3 + 3bc05bc2: 028f3683 ld a3,40(t5) + 3bc05bc6: 018f3e03 ld t3,24(t5) + 3bc05bca: 0103133b sllw t1,t1,a6 + 3bc05bce: fff68513 addi a0,a3,-1 # ffffff <__BSS_SIZE__+0xffa3ef> + 3bc05bd2: e681 bnez a3,3bc05bda + 3bc05bd4: 020f3503 ld a0,32(t5) + 3bc05bd8: 157d addi a0,a0,-1 + 3bc05bda: 80ae468b lrbu a3,t3,a0,0 + 3bc05bde: 4521 li a0,8 + 3bc05be0: 4105053b subw a0,a0,a6 + 3bc05be4: 40a6d6bb sraw a3,a3,a0 + 3bc05be8: 006686bb addw a3,a3,t1 + 3bc05bec: 30000513 li a0,768 + 3bc05bf0: 02a686bb mulw a3,a3,a0 + 3bc05bf4: 7c06b68b extu a3,a3,31,0 + 3bc05bf8: 02d8988b addsl a7,a7,a3,1 + 3bc05bfc: 4699 li a3,6 + 3bc05bfe: 05d6eb63 bltu a3,t4,3bc05c54 + 3bc05c02: 4685 li a3,1 + 3bc05c04: 01000eb7 lui t4,0x1000 + 3bc05c08: 0ff00e13 li t3,255 + 3bc05c0c: b2d8c80b lurhu a6,a7,a3,1 + 3bc05c10: 01d77b63 bgeu a4,t4,3bc05c26 + 3bc05c14: 2ec5f363 bgeu a1,a2,3bc05efa + 3bc05c18: 9815c50b lbuia a0,(a1),1,0 + 3bc05c1c: 0087979b slliw a5,a5,0x8 + 3bc05c20: 0087171b slliw a4,a4,0x8 + 3bc05c24: 8fc9 or a5,a5,a0 + 3bc05c26: 00b7551b srliw a0,a4,0xb + 3bc05c2a: 0305083b mulw a6,a0,a6 + 3bc05c2e: 0016969b slliw a3,a3,0x1 + 3bc05c32: 0107ef63 bltu a5,a6,3bc05c50 + 3bc05c36: 4107073b subw a4,a4,a6 + 3bc05c3a: 410787bb subw a5,a5,a6 + 3bc05c3e: 2685 addiw a3,a3,1 + 3bc05c40: fcde76e3 bgeu t3,a3,3bc05c0c + 3bc05c44: 4505 li a0,1 + 3bc05c46: 010007b7 lui a5,0x1000 + 3bc05c4a: 2af76663 bltu a4,a5,3bc05ef6 + 3bc05c4e: 8082 ret + 3bc05c50: 8742 mv a4,a6 + 3bc05c52: b7fd j 3bc05c40 + 3bc05c54: 028f3303 ld t1,40(t5) + 3bc05c58: 048f6803 lwu a6,72(t5) + 3bc05c5c: 018f3683 ld a3,24(t5) + 3bc05c60: 4501 li a0,0 + 3bc05c62: 41030e33 sub t3,t1,a6 + 3bc05c66: 01037463 bgeu t1,a6,3bc05c6e + 3bc05c6a: 020f3503 ld a0,32(t5) + 3bc05c6e: 96f2 add a3,a3,t3 + 3bc05c70: 80a6ce0b lrbu t3,a3,a0,0 + 3bc05c74: 010002b7 lui t0,0x1000 + 3bc05c78: 4685 li a3,1 + 3bc05c7a: 10000513 li a0,256 + 3bc05c7e: 0ff00f93 li t6,255 + 3bc05c82: 001e181b slliw a6,t3,0x1 + 3bc05c86: 00d5033b addw t1,a0,a3 + 3bc05c8a: 00080e1b sext.w t3,a6 + 3bc05c8e: 01057833 and a6,a0,a6 + 3bc05c92: 00080e9b sext.w t4,a6 + 3bc05c96: 0103083b addw a6,t1,a6 + 3bc05c9a: b308c30b lurhu t1,a7,a6,1 + 3bc05c9e: 00577c63 bgeu a4,t0,3bc05cb6 + 3bc05ca2: 24c5fc63 bgeu a1,a2,3bc05efa + 3bc05ca6: 9815c80b lbuia a6,(a1),1,0 + 3bc05caa: 0087979b slliw a5,a5,0x8 + 3bc05cae: 0087171b slliw a4,a4,0x8 + 3bc05cb2: 00f867b3 or a5,a6,a5 + 3bc05cb6: 00b7581b srliw a6,a4,0xb + 3bc05cba: 02680f3b mulw t5,a6,t1 + 3bc05cbe: 0016969b slliw a3,a3,0x1 + 3bc05cc2: 01e7f863 bgeu a5,t5,3bc05cd2 + 3bc05cc6: 01d54533 xor a0,a0,t4 + 3bc05cca: 877a mv a4,t5 + 3bc05ccc: fadffbe3 bgeu t6,a3,3bc05c82 + 3bc05cd0: bf95 j 3bc05c44 + 3bc05cd2: 41e7073b subw a4,a4,t5 + 3bc05cd6: 41e787bb subw a5,a5,t5 + 3bc05cda: 2685 addiw a3,a3,1 + 3bc05cdc: 8576 mv a0,t4 + 3bc05cde: b7fd j 3bc05ccc + 3bc05ce0: 7c0eb50b extu a0,t4,31,0 + 3bc05ce4: 0541 addi a0,a0,16 + 3bc05ce6: a2a8cf0b lrhu t5,a7,a0,1 + 3bc05cea: 00151e93 slli t4,a0,0x1 + 3bc05cee: 40e6833b subw t1,a3,a4 + 3bc05cf2: 01000537 lui a0,0x1000 + 3bc05cf6: 9f99 subw a5,a5,a4 + 3bc05cf8: 00a37c63 bgeu t1,a0,3bc05d10 + 3bc05cfc: 4501 li a0,0 + 3bc05cfe: f4c5f8e3 bgeu a1,a2,3bc05c4e + 3bc05d02: 9815c70b lbuia a4,(a1),1,0 + 3bc05d06: 0087979b slliw a5,a5,0x8 + 3bc05d0a: 0083131b slliw t1,t1,0x8 + 3bc05d0e: 8fd9 or a5,a5,a4 + 3bc05d10: 00b3571b srliw a4,t1,0xb + 3bc05d14: 03e706bb mulw a3,a4,t5 + 3bc05d18: 16d7f563 bgeu a5,a3,3bc05e82 + 3bc05d1c: a0088313 addi t1,a7,-1536 + 3bc05d20: 4509 li a0,2 + 3bc05d22: 4f01 li t5,0 + 3bc05d24: 01000e37 lui t3,0x1000 + 3bc05d28: 00035703 lhu a4,0(t1) + 3bc05d2c: 01c6fc63 bgeu a3,t3,3bc05d44 + 3bc05d30: 1cc5f563 bgeu a1,a2,3bc05efa + 3bc05d34: 9815ce0b lbuia t3,(a1),1,0 + 3bc05d38: 0087979b slliw a5,a5,0x8 + 3bc05d3c: 0086969b slliw a3,a3,0x8 + 3bc05d40: 00fe67b3 or a5,t3,a5 + 3bc05d44: 00b6de1b srliw t3,a3,0xb + 3bc05d48: 02ee073b mulw a4,t3,a4 + 3bc05d4c: 22e7fc63 bgeu a5,a4,3bc05f84 + 3bc05d50: 7c08380b extu a6,a6,31,0 + 3bc05d54: 0303130b addsl t1,t1,a6,1 + 3bc05d58: 4801 li a6,0 + 3bc05d5a: 46a1 li a3,8 + 3bc05d5c: 4e05 li t3,1 + 3bc05d5e: 010003b7 lui t2,0x1000 + 3bc05d62: b3c34f8b lurhu t6,t1,t3,1 + 3bc05d66: 00777c63 bgeu a4,t2,3bc05d7e + 3bc05d6a: 18c5f863 bgeu a1,a2,3bc05efa + 3bc05d6e: 9815ce8b lbuia t4,(a1),1,0 + 3bc05d72: 0087979b slliw a5,a5,0x8 + 3bc05d76: 0087171b slliw a4,a4,0x8 + 3bc05d7a: 00fee7b3 or a5,t4,a5 + 3bc05d7e: 00b75e9b srliw t4,a4,0xb + 3bc05d82: 03fe8fbb mulw t6,t4,t6 + 3bc05d86: 001e1e1b slliw t3,t3,0x1 + 3bc05d8a: 25f7e663 bltu a5,t6,3bc05fd6 + 3bc05d8e: 41f7073b subw a4,a4,t6 + 3bc05d92: 41f787bb subw a5,a5,t6 + 3bc05d96: 2e05 addiw t3,t3,1 + 3bc05d98: fcde65e3 bltu t3,a3,3bc05d62 + 3bc05d9c: 430d li t1,3 + 3bc05d9e: ebe364e3 bltu t1,t5,3bc05c46 + 3bc05da2: 40d806bb subw a3,a6,a3 + 3bc05da6: 01c6883b addw a6,a3,t3 + 3bc05daa: 86c2 mv a3,a6 + 3bc05dac: 01037363 bgeu t1,a6,3bc05db2 + 3bc05db0: 468d li a3,3 + 3bc05db2: 0066981b slliw a6,a3,0x6 + 3bc05db6: 0408081b addiw a6,a6,64 + 3bc05dba: 7c08380b extu a6,a6,31,0 + 3bc05dbe: 4685 li a3,1 + 3bc05dc0: 01000fb7 lui t6,0x1000 + 3bc05dc4: 03f00f13 li t5,63 + 3bc05dc8: 7c06b30b extu t1,a3,31,0 + 3bc05dcc: 9342 add t1,t1,a6 + 3bc05dce: a268ce0b lrhu t3,a7,t1,1 + 3bc05dd2: 01f77c63 bgeu a4,t6,3bc05dea + 3bc05dd6: 12c5f263 bgeu a1,a2,3bc05efa + 3bc05dda: 9815c30b lbuia t1,(a1),1,0 + 3bc05dde: 0087979b slliw a5,a5,0x8 + 3bc05de2: 0087171b slliw a4,a4,0x8 + 3bc05de6: 00f367b3 or a5,t1,a5 + 3bc05dea: 00b7531b srliw t1,a4,0xb + 3bc05dee: 03c30e3b mulw t3,t1,t3 + 3bc05df2: 0016969b slliw a3,a3,0x1 + 3bc05df6: 1fc7e263 bltu a5,t3,3bc05fda + 3bc05dfa: 41c7073b subw a4,a4,t3 + 3bc05dfe: 41c787bb subw a5,a5,t3 + 3bc05e02: 2685 addiw a3,a3,1 + 3bc05e04: fcdf72e3 bgeu t5,a3,3bc05dc8 + 3bc05e08: fc06869b addiw a3,a3,-64 + 3bc05e0c: 0006831b sext.w t1,a3 + 3bc05e10: 480d li a6,3 + 3bc05e12: e2687ae3 bgeu a6,t1,3bc05c46 + 3bc05e16: 4e35 li t3,13 + 3bc05e18: 0016d81b srliw a6,a3,0x1 + 3bc05e1c: 1c6e6163 bltu t3,t1,3bc05fde + 3bc05e20: 8a85 andi a3,a3,1 + 3bc05e22: 387d addiw a6,a6,-1 + 3bc05e24: 0026e693 ori a3,a3,2 + 3bc05e28: 010696bb sllw a3,a3,a6 + 3bc05e2c: 02069313 slli t1,a3,0x20 + 3bc05e30: 01f35693 srli a3,t1,0x1f + 3bc05e34: 737d lui t1,0xfffff + 3bc05e36: 30030313 addi t1,t1,768 # fffffffffffff300 <__BL2_END__+0xffffffffc43ebaf0> + 3bc05e3a: 969a add a3,a3,t1 + 3bc05e3c: 98b6 add a7,a7,a3 + 3bc05e3e: 4e05 li t3,1 + 3bc05e40: 4685 li a3,1 + 3bc05e42: 010002b7 lui t0,0x1000 + 3bc05e46: b2d8ce8b lurhu t4,a7,a3,1 + 3bc05e4a: 00577c63 bgeu a4,t0,3bc05e62 + 3bc05e4e: 0ac5f663 bgeu a1,a2,3bc05efa + 3bc05e52: 9815c30b lbuia t1,(a1),1,0 + 3bc05e56: 0087979b slliw a5,a5,0x8 + 3bc05e5a: 0087171b slliw a4,a4,0x8 + 3bc05e5e: 00f367b3 or a5,t1,a5 + 3bc05e62: 00b7531b srliw t1,a4,0xb + 3bc05e66: 03d30f3b mulw t5,t1,t4 + 3bc05e6a: 001e1f9b slliw t6,t3,0x1 + 3bc05e6e: 1be7f763 bgeu a5,t5,3bc0601c + 3bc05e72: 01c686bb addw a3,a3,t3 + 3bc05e76: 877a mv a4,t5 + 3bc05e78: 387d addiw a6,a6,-1 + 3bc05e7a: dc0806e3 beqz a6,3bc05c46 + 3bc05e7e: 8e7e mv t3,t6 + 3bc05e80: b7d9 j 3bc05e46 + 3bc05e82: 40d3053b subw a0,t1,a3 + 3bc05e86: 9ec6 add t4,t4,a7 + 3bc05e88: 01000f37 lui t5,0x1000 + 3bc05e8c: 40d7873b subw a4,a5,a3 + 3bc05e90: 832a mv t1,a0 + 3bc05e92: 018ed683 lhu a3,24(t4) # 1000018 <__BSS_SIZE__+0xffa408> + 3bc05e96: 01e57c63 bgeu a0,t5,3bc05eae + 3bc05e9a: 4501 li a0,0 + 3bc05e9c: dac5f9e3 bgeu a1,a2,3bc05c4e + 3bc05ea0: 0087179b slliw a5,a4,0x8 + 3bc05ea4: 9815c70b lbuia a4,(a1),1,0 + 3bc05ea8: 0083151b slliw a0,t1,0x8 + 3bc05eac: 8f5d or a4,a4,a5 + 3bc05eae: 00b5531b srliw t1,a0,0xb + 3bc05eb2: 02d306bb mulw a3,t1,a3 + 3bc05eb6: 8336 mv t1,a3 + 3bc05eb8: 04d77e63 bgeu a4,a3,3bc05f14 + 3bc05ebc: 77fd lui a5,0xfffff + 3bc05ebe: 9e3e add t3,t3,a5 + 3bc05ec0: 010007b7 lui a5,0x1000 + 3bc05ec4: 400e5e03 lhu t3,1024(t3) # 1000400 <__BSS_SIZE__+0xffa7f0> + 3bc05ec8: 00f6fc63 bgeu a3,a5,3bc05ee0 + 3bc05ecc: 4501 li a0,0 + 3bc05ece: d8c5f0e3 bgeu a1,a2,3bc05c4e + 3bc05ed2: 0087179b slliw a5,a4,0x8 + 3bc05ed6: 9815c70b lbuia a4,(a1),1,0 + 3bc05eda: 0086969b slliw a3,a3,0x8 + 3bc05ede: 8f5d or a4,a4,a5 + 3bc05ee0: 00b6d79b srliw a5,a3,0xb + 3bc05ee4: 03c7833b mulw t1,a5,t3 + 3bc05ee8: 00677b63 bgeu a4,t1,3bc05efe + 3bc05eec: 010007b7 lui a5,0x1000 + 3bc05ef0: 450d li a0,3 + 3bc05ef2: d4f37ee3 bgeu t1,a5,3bc05c4e + 3bc05ef6: d4c5ece3 bltu a1,a2,3bc05c4e + 3bc05efa: 4501 li a0,0 + 3bc05efc: bb89 j 3bc05c4e + 3bc05efe: 406686bb subw a3,a3,t1 + 3bc05f02: 406707bb subw a5,a4,t1 + 3bc05f06: 737d lui t1,0xfffff + 3bc05f08: 60030313 addi t1,t1,1536 # fffffffffffff600 <__BL2_END__+0xffffffffc43ebdf0> + 3bc05f0c: 9346 add t1,t1,a7 + 3bc05f0e: 450d li a0,3 + 3bc05f10: 4f31 li t5,12 + 3bc05f12: bd09 j 3bc05d24 + 3bc05f14: 9d15 subw a0,a0,a3 + 3bc05f16: 01000e37 lui t3,0x1000 + 3bc05f1a: 406707bb subw a5,a4,t1 + 3bc05f1e: 86aa mv a3,a0 + 3bc05f20: 030ed303 lhu t1,48(t4) + 3bc05f24: 01c57c63 bgeu a0,t3,3bc05f3c + 3bc05f28: 4501 li a0,0 + 3bc05f2a: d2c5f2e3 bgeu a1,a2,3bc05c4e + 3bc05f2e: 0087971b slliw a4,a5,0x8 + 3bc05f32: 9815c78b lbuia a5,(a1),1,0 + 3bc05f36: 0086951b slliw a0,a3,0x8 + 3bc05f3a: 8fd9 or a5,a5,a4 + 3bc05f3c: 00b5571b srliw a4,a0,0xb + 3bc05f40: 026706bb mulw a3,a4,t1 + 3bc05f44: 8736 mv a4,a3 + 3bc05f46: fcd7e0e3 bltu a5,a3,3bc05f06 + 3bc05f4a: 9d15 subw a0,a0,a3 + 3bc05f4c: 01000e37 lui t3,0x1000 + 3bc05f50: 048ed303 lhu t1,72(t4) + 3bc05f54: 86aa mv a3,a0 + 3bc05f56: 9f99 subw a5,a5,a4 + 3bc05f58: 01c57c63 bgeu a0,t3,3bc05f70 + 3bc05f5c: 4501 li a0,0 + 3bc05f5e: cec5f8e3 bgeu a1,a2,3bc05c4e + 3bc05f62: 0087971b slliw a4,a5,0x8 + 3bc05f66: 9815c78b lbuia a5,(a1),1,0 + 3bc05f6a: 0086951b slliw a0,a3,0x8 + 3bc05f6e: 8fd9 or a5,a5,a4 + 3bc05f70: 00b5571b srliw a4,a0,0xb + 3bc05f74: 026706bb mulw a3,a4,t1 + 3bc05f78: f8d7e7e3 bltu a5,a3,3bc05f06 + 3bc05f7c: 9f95 subw a5,a5,a3 + 3bc05f7e: 40d506bb subw a3,a0,a3 + 3bc05f82: b751 j 3bc05f06 + 3bc05f84: 40e68ebb subw t4,a3,a4 + 3bc05f88: 01000fb7 lui t6,0x1000 + 3bc05f8c: 9f99 subw a5,a5,a4 + 3bc05f8e: 01035703 lhu a4,16(t1) + 3bc05f92: 01fefc63 bgeu t4,t6,3bc05faa + 3bc05f96: f6c5f2e3 bgeu a1,a2,3bc05efa + 3bc05f9a: 00879e1b slliw t3,a5,0x8 + 3bc05f9e: 9815c78b lbuia a5,(a1),1,0 + 3bc05fa2: 008e9e9b slliw t4,t4,0x8 + 3bc05fa6: 01c7e7b3 or a5,a5,t3 + 3bc05faa: 00bed69b srliw a3,t4,0xb + 3bc05fae: 02e6873b mulw a4,a3,a4 + 3bc05fb2: 00e7f963 bgeu a5,a4,3bc05fc4 + 3bc05fb6: 7c08368b extu a3,a6,31,0 + 3bc05fba: 06a1 addi a3,a3,8 + 3bc05fbc: 02d3130b addsl t1,t1,a3,1 + 3bc05fc0: 4821 li a6,8 + 3bc05fc2: bb61 j 3bc05d5a + 3bc05fc4: 9f99 subw a5,a5,a4 + 3bc05fc6: 20030313 addi t1,t1,512 + 3bc05fca: 40ee873b subw a4,t4,a4 + 3bc05fce: 4841 li a6,16 + 3bc05fd0: 10000693 li a3,256 + 3bc05fd4: b361 j 3bc05d5c + 3bc05fd6: 877e mv a4,t6 + 3bc05fd8: b3c1 j 3bc05d98 + 3bc05fda: 8772 mv a4,t3 + 3bc05fdc: b525 j 3bc05e04 + 3bc05fde: 386d addiw a6,a6,-5 + 3bc05fe0: 01000e37 lui t3,0x1000 + 3bc05fe4: 01c77b63 bgeu a4,t3,3bc05ffa + 3bc05fe8: f0c5f9e3 bgeu a1,a2,3bc05efa + 3bc05fec: 9815c68b lbuia a3,(a1),1,0 + 3bc05ff0: 0087979b slliw a5,a5,0x8 + 3bc05ff4: 0087171b slliw a4,a4,0x8 + 3bc05ff8: 8fd5 or a5,a5,a3 + 3bc05ffa: 0017531b srliw t1,a4,0x1 + 3bc05ffe: 406786bb subw a3,a5,t1 + 3bc06002: 01f6d69b srliw a3,a3,0x1f + 3bc06006: 36fd addiw a3,a3,-1 + 3bc06008: 0066f6b3 and a3,a3,t1 + 3bc0600c: 387d addiw a6,a6,-1 + 3bc0600e: 0003071b sext.w a4,t1 + 3bc06012: 9f95 subw a5,a5,a3 + 3bc06014: fc0818e3 bnez a6,3bc05fe4 + 3bc06018: 4811 li a6,4 + 3bc0601a: b515 j 3bc05e3e + 3bc0601c: 41e7073b subw a4,a4,t5 + 3bc06020: 41e787bb subw a5,a5,t5 + 3bc06024: 00df86bb addw a3,t6,a3 + 3bc06028: bd81 j 3bc05e78 + +000000003bc0602a : + 3bc0602a: 11400793 li a5,276 + 3bc0602e: 02053423 sd zero,40(a0) # 1000028 <__BSS_SIZE__+0xffa418> + 3bc06032: 06052223 sw zero,100(a0) + 3bc06036: 04053023 sd zero,64(a0) + 3bc0603a: cd7c sw a5,92(a0) + 3bc0603c: 8082 ret + +000000003bc0603e : + 3bc0603e: 7175 addi sp,sp,-144 + 3bc06040: e122 sd s0,128(sp) + 3bc06042: f8ca sd s2,112(sp) + 3bc06044: f4ce sd s3,104(sp) + 3bc06046: f0d2 sd s4,96(sp) + 3bc06048: f86a sd s10,48(sp) + 3bc0604a: f46e sd s11,40(sp) + 3bc0604c: e506 sd ra,136(sp) + 3bc0604e: fca6 sd s1,120(sp) + 3bc06050: ecd6 sd s5,88(sp) + 3bc06052: e8da sd s6,80(sp) + 3bc06054: e4de sd s7,72(sp) + 3bc06056: e0e2 sd s8,64(sp) + 3bc06058: fc66 sd s9,56(sp) + 3bc0605a: 0006bd83 ld s11,0(a3) + 3bc0605e: 0006b023 sd zero,0(a3) + 3bc06062: 0007a023 sw zero,0(a5) # 1000000 <__BSS_SIZE__+0xffa3f0> + 3bc06066: e43a sd a4,8(sp) + 3bc06068: 4d78 lw a4,92(a0) + 3bc0606a: 89be mv s3,a5 + 3bc0606c: 11200793 li a5,274 + 3bc06070: 8932 mv s2,a2 + 3bc06072: 842a mv s0,a0 + 3bc06074: 8a2e mv s4,a1 + 3bc06076: 8d36 mv s10,a3 + 3bc06078: 4611 li a2,4 + 3bc0607a: 04e7e263 bltu a5,a4,3bc060be + 3bc0607e: 85d2 mv a1,s4 + 3bc06080: 8522 mv a0,s0 + 3bc06082: ec4fe0ef jal ra,3bc04746 + 3bc06086: 4b4d li s6,19 + 3bc06088: 06840a93 addi s5,s0,104 # 1068 <__BSS_SIZE__-0x4ba8> + 3bc0608c: 4c7c lw a5,92(s0) + 3bc0608e: 11200713 li a4,274 + 3bc06092: 0ce79663 bne a5,a4,3bc0615e + 3bc06096: 5c5c lw a5,60(s0) + 3bc06098: eb9d bnez a5,3bc060ce + 3bc0609a: 4785 li a5,1 + 3bc0609c: a8a1 j 3bc060f4 + 3bc0609e: 0017859b addiw a1,a5,1 + 3bc060a2: d06c sw a1,100(s0) + 3bc060a4: 9819458b lbuia a1,(s2),1,0 + 3bc060a8: 7c07b78b extu a5,a5,31,0 + 3bc060ac: 97a2 add a5,a5,s0 + 3bc060ae: 06b78423 sb a1,104(a5) + 3bc060b2: 000d3783 ld a5,0(s10) + 3bc060b6: 1dfd addi s11,s11,-1 + 3bc060b8: 0785 addi a5,a5,1 + 3bc060ba: 00fd3023 sd a5,0(s10) + 3bc060be: 507c lw a5,100(s0) + 3bc060c0: 020d8863 beqz s11,3bc060f0 + 3bc060c4: fcf67de3 bgeu a2,a5,3bc0609e + 3bc060c8: 06844603 lbu a2,104(s0) + 3bc060cc: ca05 beqz a2,3bc060fc + 3bc060ce: 4485 li s1,1 + 3bc060d0: 60aa ld ra,136(sp) + 3bc060d2: 640a ld s0,128(sp) + 3bc060d4: 7946 ld s2,112(sp) + 3bc060d6: 79a6 ld s3,104(sp) + 3bc060d8: 7a06 ld s4,96(sp) + 3bc060da: 6ae6 ld s5,88(sp) + 3bc060dc: 6b46 ld s6,80(sp) + 3bc060de: 6ba6 ld s7,72(sp) + 3bc060e0: 6c06 ld s8,64(sp) + 3bc060e2: 7ce2 ld s9,56(sp) + 3bc060e4: 7d42 ld s10,48(sp) + 3bc060e6: 7da2 ld s11,40(sp) + 3bc060e8: 8526 mv a0,s1 + 3bc060ea: 74e6 ld s1,120(sp) + 3bc060ec: 6149 addi sp,sp,144 + 3bc060ee: 8082 ret + 3bc060f0: ffe1 bnez a5,3bc060c8 + 3bc060f2: 478d li a5,3 + 3bc060f4: 00f9a023 sw a5,0(s3) + 3bc060f8: 4481 li s1,0 + 3bc060fa: bfd9 j 3bc060d0 + 3bc060fc: 4611 li a2,4 + 3bc060fe: fef67ae3 bgeu a2,a5,3bc060f2 + 3bc06102: 06942783 lw a5,105(s0) + 3bc06106: 06042223 sw zero,100(s0) + 3bc0610a: 9007978b revw a5,a5 + 3bc0610e: dc5c sw a5,60(s0) + 3bc06110: 57fd li a5,-1 + 3bc06112: dc1c sw a5,56(s0) + 3bc06114: 11300793 li a5,275 + 3bc06118: 02f70c63 beq a4,a5,3bc06150 + 3bc0611c: 00044783 lbu a5,0(s0) + 3bc06120: 00144703 lbu a4,1(s0) + 3bc06124: 6410 ld a2,8(s0) + 3bc06126: 40000593 li a1,1024 + 3bc0612a: 9f3d addw a4,a4,a5 + 3bc0612c: 30000793 li a5,768 + 3bc06130: 00e797bb sllw a5,a5,a4 + 3bc06134: 7c07879b addiw a5,a5,1984 + 3bc06138: 7c07b78b extu a5,a5,31,0 + 3bc0613c: 4701 li a4,0 + 3bc0613e: 00f76c63 bltu a4,a5,3bc06156 + 3bc06142: 4785 li a5,1 + 3bc06144: 1782 slli a5,a5,0x20 + 3bc06146: 0785 addi a5,a5,1 + 3bc06148: e43c sd a5,72(s0) + 3bc0614a: e83c sd a5,80(s0) + 3bc0614c: 04042c23 sw zero,88(s0) + 3bc06150: 04042e23 sw zero,92(s0) + 3bc06154: b72d j 3bc0607e + 3bc06156: 22e6558b srh a1,a2,a4,1 + 3bc0615a: 0705 addi a4,a4,1 + 3bc0615c: b7cd j 3bc0613e + 3bc0615e: 7418 ld a4,40(s0) + 3bc06160: 01476b63 bltu a4,s4,3bc06176 + 3bc06164: 12079f63 bnez a5,3bc062a2 + 3bc06168: 5c5c lw a5,60(s0) + 3bc0616a: 14079363 bnez a5,3bc062b0 + 3bc0616e: 4791 li a5,4 + 3bc06170: b751 j 3bc060f4 + 3bc06172: 4789 li a5,2 + 3bc06174: b741 j 3bc060f4 + 3bc06176: 4c81 li s9,0 + 3bc06178: 06442b83 lw s7,100(s0) + 3bc0617c: 0c0b9263 bnez s7,3bc06240 + 3bc06180: 01bb7463 bgeu s6,s11,3bc06188 + 3bc06184: 040c8263 beqz s9,3bc061c8 + 3bc06188: 866e mv a2,s11 + 3bc0618a: 85ca mv a1,s2 + 3bc0618c: 8522 mv a0,s0 + 3bc0618e: 9b5ff0ef jal ra,3bc05b42 + 3bc06192: 0005049b sext.w s1,a0 + 3bc06196: e095 bnez s1,3bc061ba + 3bc06198: 866e mv a2,s11 + 3bc0619a: 85ca mv a1,s2 + 3bc0619c: 06840513 addi a0,s0,104 + 3bc061a0: 8dbfa0ef jal ra,3bc00a7a + 3bc061a4: 000d3783 ld a5,0(s10) + 3bc061a8: 07b42223 sw s11,100(s0) + 3bc061ac: 9dbe add s11,s11,a5 + 3bc061ae: 01bd3023 sd s11,0(s10) + 3bc061b2: 478d li a5,3 + 3bc061b4: 00f9a023 sw a5,0(s3) + 3bc061b8: bf21 j 3bc060d0 + 3bc061ba: 000c8563 beqz s9,3bc061c4 + 3bc061be: 4789 li a5,2 + 3bc061c0: 0ef49463 bne s1,a5,3bc062a8 + 3bc061c4: 864a mv a2,s2 + 3bc061c6: a021 j 3bc061ce + 3bc061c8: fecd8613 addi a2,s11,-20 + 3bc061cc: 964a add a2,a2,s2 + 3bc061ce: 03243823 sd s2,48(s0) + 3bc061d2: 85d2 mv a1,s4 + 3bc061d4: 8522 mv a0,s0 + 3bc061d6: de2fe0ef jal ra,3bc047b8 + 3bc061da: ee051ae3 bnez a0,3bc060ce + 3bc061de: 7818 ld a4,48(s0) + 3bc061e0: 000d3783 ld a5,0(s10) + 3bc061e4: 41270933 sub s2,a4,s2 + 3bc061e8: 97ca add a5,a5,s2 + 3bc061ea: 00fd3023 sd a5,0(s10) + 3bc061ee: 412d8db3 sub s11,s11,s2 + 3bc061f2: 893a mv s2,a4 + 3bc061f4: bd61 j 3bc0608c + 3bc061f6: 8109478b lrbu a5,s2,a6,0 + 3bc061fa: 0106578b srb a5,a2,a6,0 + 3bc061fe: 0805 addi a6,a6,1 + 3bc06200: 0008079b sext.w a5,a6 + 3bc06204: e83e sd a5,16(sp) + 3bc06206: 01780c3b addw s8,a6,s7 + 3bc0620a: 018b6463 bltu s6,s8,3bc06212 + 3bc0620e: ffb814e3 bne a6,s11,3bc061f6 + 3bc06212: 07842223 sw s8,100(s0) + 3bc06216: 018b7463 bgeu s6,s8,3bc0621e + 3bc0621a: 020c8f63 beqz s9,3bc06258 + 3bc0621e: 7c0c360b extu a2,s8,31,0 + 3bc06222: 85d6 mv a1,s5 + 3bc06224: 8522 mv a0,s0 + 3bc06226: ec42 sd a6,24(sp) + 3bc06228: 91bff0ef jal ra,3bc05b42 + 3bc0622c: 0005049b sext.w s1,a0 + 3bc06230: 6862 ld a6,24(sp) + 3bc06232: ec91 bnez s1,3bc0624e + 3bc06234: 000d3783 ld a5,0(s10) + 3bc06238: 983e add a6,a6,a5 + 3bc0623a: 010d3023 sd a6,0(s10) + 3bc0623e: bf95 j 3bc061b2 + 3bc06240: 7c0bb60b extu a2,s7,31,0 + 3bc06244: 06860613 addi a2,a2,104 + 3bc06248: 4801 li a6,0 + 3bc0624a: 9622 add a2,a2,s0 + 3bc0624c: bf55 j 3bc06200 + 3bc0624e: 000c8563 beqz s9,3bc06258 + 3bc06252: 4789 li a5,2 + 3bc06254: 04f49a63 bne s1,a5,3bc062a8 + 3bc06258: 03543823 sd s5,48(s0) + 3bc0625c: 8656 mv a2,s5 + 3bc0625e: 85d2 mv a1,s4 + 3bc06260: 8522 mv a0,s0 + 3bc06262: d56fe0ef jal ra,3bc047b8 + 3bc06266: e60514e3 bnez a0,3bc060ce + 3bc0626a: 781c ld a5,48(s0) + 3bc0626c: 415787bb subw a5,a5,s5 + 3bc06270: 02fc6763 bltu s8,a5,3bc0629e + 3bc06274: 66c2 ld a3,16(sp) + 3bc06276: 40fc073b subw a4,s8,a5 + 3bc0627a: 02e6e263 bltu a3,a4,3bc0629e + 3bc0627e: 000d3703 ld a4,0(s10) + 3bc06282: 417787bb subw a5,a5,s7 + 3bc06286: 7c07b78b extu a5,a5,31,0 + 3bc0628a: 973e add a4,a4,a5 + 3bc0628c: 00ed3023 sd a4,0(s10) + 3bc06290: 40fd8db3 sub s11,s11,a5 + 3bc06294: 00f90733 add a4,s2,a5 + 3bc06298: 06042223 sw zero,100(s0) + 3bc0629c: bf99 j 3bc061f2 + 3bc0629e: 44ad li s1,11 + 3bc062a0: bd05 j 3bc060d0 + 3bc062a2: 67a2 ld a5,8(sp) + 3bc062a4: ec0787e3 beqz a5,3bc06172 + 3bc062a8: 4789 li a5,2 + 3bc062aa: 00f9a023 sw a5,0(s3) + 3bc062ae: b505 j 3bc060ce + 3bc062b0: 67a2 ld a5,8(sp) + 3bc062b2: ec0780e3 beqz a5,3bc06172 + 3bc062b6: 4c85 li s9,1 + 3bc062b8: b5c1 j 3bc06178 + +000000003bc062ba : + 3bc062ba: 1141 addi sp,sp,-16 + 3bc062bc: e022 sd s0,0(sp) + 3bc062be: 842a mv s0,a0 + 3bc062c0: 659c ld a5,8(a1) + 3bc062c2: 852e mv a0,a1 + 3bc062c4: 640c ld a1,8(s0) + 3bc062c6: e406 sd ra,8(sp) + 3bc062c8: 9782 jalr a5 + 3bc062ca: 60a2 ld ra,8(sp) + 3bc062cc: 00043423 sd zero,8(s0) + 3bc062d0: 6402 ld s0,0(sp) + 3bc062d2: 0141 addi sp,sp,16 + 3bc062d4: 8082 ret + +000000003bc062d6 : + 3bc062d6: 1101 addi sp,sp,-32 + 3bc062d8: 6518 ld a4,8(a0) + 3bc062da: e426 sd s1,8(sp) + 3bc062dc: 9db1 addw a1,a1,a2 + 3bc062de: 30000493 li s1,768 + 3bc062e2: e822 sd s0,16(sp) + 3bc062e4: 00b494bb sllw s1,s1,a1 + 3bc062e8: ec06 sd ra,24(sp) + 3bc062ea: e04a sd s2,0(sp) + 3bc062ec: 842a mv s0,a0 + 3bc062ee: 7c04849b addiw s1,s1,1984 + 3bc062f2: c719 beqz a4,3bc06300 + 3bc062f4: 5138 lw a4,96(a0) + 3bc062f6: 0004879b sext.w a5,s1 + 3bc062fa: 4501 li a0,0 + 3bc062fc: 02f70a63 beq a4,a5,3bc06330 + 3bc06300: 85b6 mv a1,a3 + 3bc06302: 8522 mv a0,s0 + 3bc06304: 8936 mv s2,a3 + 3bc06306: fb5ff0ef jal ra,3bc062ba + 3bc0630a: 00093783 ld a5,0(s2) + 3bc0630e: 02049713 slli a4,s1,0x20 + 3bc06312: 01f75593 srli a1,a4,0x1f + 3bc06316: 854a mv a0,s2 + 3bc06318: 9782 jalr a5 + 3bc0631a: 87aa mv a5,a0 + 3bc0631c: e408 sd a0,8(s0) + 3bc0631e: 4509 li a0,2 + 3bc06320: cb81 beqz a5,3bc06330 + 3bc06322: 6505 lui a0,0x1 + 3bc06324: d0050513 addi a0,a0,-768 # d00 <__BSS_SIZE__-0x4f10> + 3bc06328: 97aa add a5,a5,a0 + 3bc0632a: e81c sd a5,16(s0) + 3bc0632c: d024 sw s1,96(s0) + 3bc0632e: 4501 li a0,0 + 3bc06330: 60e2 ld ra,24(sp) + 3bc06332: 6442 ld s0,16(sp) + 3bc06334: 64a2 ld s1,8(sp) + 3bc06336: 6902 ld s2,0(sp) + 3bc06338: 6105 addi sp,sp,32 + 3bc0633a: 8082 ret + +000000003bc0633c : + 3bc0633c: 4791 li a5,4 + 3bc0633e: 00c7e463 bltu a5,a2,3bc06346 + 3bc06342: 4511 li a0,4 + 3bc06344: 8082 ret + 3bc06346: 0015a703 lw a4,1(a1) + 3bc0634a: 6685 lui a3,0x1 + 3bc0634c: 87ba mv a5,a4 + 3bc0634e: 00d77363 bgeu a4,a3,3bc06354 + 3bc06352: 6785 lui a5,0x1 + 3bc06354: c15c sw a5,4(a0) + 3bc06356: 0005c783 lbu a5,0(a1) + 3bc0635a: 0e000713 li a4,224 + 3bc0635e: fef762e3 bltu a4,a5,3bc06342 + 3bc06362: 4725 li a4,9 + 3bc06364: 02e7f6bb remuw a3,a5,a4 + 3bc06368: 02e7d7bb divuw a5,a5,a4 + 3bc0636c: 4715 li a4,5 + 3bc0636e: 00d50023 sb a3,0(a0) + 3bc06372: 02e7d6bb divuw a3,a5,a4 + 3bc06376: 02e7f7bb remuw a5,a5,a4 + 3bc0637a: 00d50123 sb a3,2(a0) + 3bc0637e: 00f500a3 sb a5,1(a0) + 3bc06382: 4501 li a0,0 + 3bc06384: 8082 ret + +000000003bc06386 : + 3bc06386: 7179 addi sp,sp,-48 + 3bc06388: f022 sd s0,32(sp) + 3bc0638a: 842a mv s0,a0 + 3bc0638c: 0828 addi a0,sp,24 + 3bc0638e: f406 sd ra,40(sp) + 3bc06390: e436 sd a3,8(sp) + 3bc06392: fabff0ef jal ra,3bc0633c + 3bc06396: ed01 bnez a0,3bc063ae + 3bc06398: 66a2 ld a3,8(sp) + 3bc0639a: 01914603 lbu a2,25(sp) + 3bc0639e: 01814583 lbu a1,24(sp) + 3bc063a2: 8522 mv a0,s0 + 3bc063a4: f33ff0ef jal ra,3bc062d6 + 3bc063a8: e119 bnez a0,3bc063ae + 3bc063aa: 67e2 ld a5,24(sp) + 3bc063ac: e01c sd a5,0(s0) + 3bc063ae: 70a2 ld ra,40(sp) + 3bc063b0: 7402 ld s0,32(sp) + 3bc063b2: 6145 addi sp,sp,48 + 3bc063b4: 8082 ret + +000000003bc063b6 : + 3bc063b6: 7155 addi sp,sp,-208 + 3bc063b8: e1a2 sd s0,192(sp) + 3bc063ba: f152 sd s4,160(sp) + 3bc063bc: ed56 sd s5,152(sp) + 3bc063be: e586 sd ra,200(sp) + 3bc063c0: fd26 sd s1,184(sp) + 3bc063c2: f94a sd s2,176(sp) + 3bc063c4: f54e sd s3,168(sp) + 3bc063c6: e95a sd s6,144(sp) + 3bc063c8: e55e sd s7,136(sp) + 3bc063ca: e162 sd s8,128(sp) + 3bc063cc: 0005ba03 ld s4,0(a1) + 3bc063d0: 0006ba83 ld s5,0(a3) # 1000 <__BSS_SIZE__-0x4c10> + 3bc063d4: 0006b023 sd zero,0(a3) + 3bc063d8: 0005b023 sd zero,0(a1) + 3bc063dc: 833a mv t1,a4 + 3bc063de: 0008a023 sw zero,0(a7) + 3bc063e2: 4711 li a4,4 + 3bc063e4: 4419 li s0,6 + 3bc063e6: 07577063 bgeu a4,s5,3bc06446 + 3bc063ea: 84b6 mv s1,a3 + 3bc063ec: 66ce ld a3,208(sp) + 3bc063ee: 8bb2 mv s7,a2 + 3bc063f0: 8c2e mv s8,a1 + 3bc063f2: 89aa mv s3,a0 + 3bc063f4: 863e mv a2,a5 + 3bc063f6: 859a mv a1,t1 + 3bc063f8: 850a mv a0,sp + 3bc063fa: 8946 mv s2,a7 + 3bc063fc: 8b42 mv s6,a6 + 3bc063fe: ec02 sd zero,24(sp) + 3bc06400: e402 sd zero,8(sp) + 3bc06402: f85ff0ef jal ra,3bc06386 + 3bc06406: 842a mv s0,a0 + 3bc06408: ed1d bnez a0,3bc06446 + 3bc0640a: 850a mv a0,sp + 3bc0640c: ec4e sd s3,24(sp) + 3bc0640e: f052 sd s4,32(sp) + 3bc06410: c1bff0ef jal ra,3bc0602a + 3bc06414: 87ca mv a5,s2 + 3bc06416: 0154b023 sd s5,0(s1) + 3bc0641a: 875a mv a4,s6 + 3bc0641c: 86a6 mv a3,s1 + 3bc0641e: 865e mv a2,s7 + 3bc06420: 85d2 mv a1,s4 + 3bc06422: 850a mv a0,sp + 3bc06424: c1bff0ef jal ra,3bc0603e + 3bc06428: 77a2 ld a5,40(sp) + 3bc0642a: 842a mv s0,a0 + 3bc0642c: 00fc3023 sd a5,0(s8) + 3bc06430: e519 bnez a0,3bc0643e + 3bc06432: 00092703 lw a4,0(s2) + 3bc06436: 478d li a5,3 + 3bc06438: 00f71363 bne a4,a5,3bc0643e + 3bc0643c: 4419 li s0,6 + 3bc0643e: 65ce ld a1,208(sp) + 3bc06440: 850a mv a0,sp + 3bc06442: e79ff0ef jal ra,3bc062ba + 3bc06446: 60ae ld ra,200(sp) + 3bc06448: 8522 mv a0,s0 + 3bc0644a: 640e ld s0,192(sp) + 3bc0644c: 74ea ld s1,184(sp) + 3bc0644e: 794a ld s2,176(sp) + 3bc06450: 79aa ld s3,168(sp) + 3bc06452: 7a0a ld s4,160(sp) + 3bc06454: 6aea ld s5,152(sp) + 3bc06456: 6b4a ld s6,144(sp) + 3bc06458: 6baa ld s7,136(sp) + 3bc0645a: 6c0a ld s8,128(sp) + 3bc0645c: 6169 addi sp,sp,208 + 3bc0645e: 8082 ret + +000000003bc06460 : + 3bc06460: 00154783 lbu a5,1(a0) + 3bc06464: 00254703 lbu a4,2(a0) + 3bc06468: 00054683 lbu a3,0(a0) + 3bc0646c: 00354503 lbu a0,3(a0) + 3bc06470: 0107171b slliw a4,a4,0x10 + 3bc06474: 0087979b slliw a5,a5,0x8 + 3bc06478: 9fb9 addw a5,a5,a4 + 3bc0647a: 9fb5 addw a5,a5,a3 + 3bc0647c: 0185151b slliw a0,a0,0x18 + 3bc06480: 9d3d addw a0,a0,a5 + 3bc06482: 8082 ret + +000000003bc06484 : + 3bc06484: 40e58733 sub a4,a1,a4 + 3bc06488: 26050763 beqz a0,3bc066f6 + 3bc0648c: 00c50e33 add t3,a0,a2 + 3bc06490: 7119 addi sp,sp,-128 + 3bc06492: ff0e0793 addi a5,t3,-16 # fffff0 <__BSS_SIZE__+0xffa3e0> + 3bc06496: ecce sd s3,88(sp) + 3bc06498: 00d58eb3 add t4,a1,a3 + 3bc0649c: fc86 sd ra,120(sp) + 3bc0649e: f8a2 sd s0,112(sp) + 3bc064a0: f4a6 sd s1,104(sp) + 3bc064a2: f0ca sd s2,96(sp) + 3bc064a4: e8d2 sd s4,80(sp) + 3bc064a6: e4d6 sd s5,72(sp) + 3bc064a8: e0da sd s6,64(sp) + 3bc064aa: fc5e sd s7,56(sp) + 3bc064ac: f862 sd s8,48(sp) + 3bc064ae: f466 sd s9,40(sp) + 3bc064b0: f06a sd s10,32(sp) + 3bc064b2: ec6e sd s11,24(sp) + 3bc064b4: e43e sd a5,8(sp) + 3bc064b6: 832a mv t1,a0 + 3bc064b8: fe0e8993 addi s3,t4,-32 + 3bc064bc: ea95 bnez a3,3bc064f0 + 3bc064be: 4785 li a5,1 + 3bc064c0: 557d li a0,-1 + 3bc064c2: 00f61863 bne a2,a5,3bc064d2 + 3bc064c6: 00034503 lbu a0,0(t1) + 3bc064ca: 00a03533 snez a0,a0 + 3bc064ce: 0005250b ext a0,a0,0,0 + 3bc064d2: 70e6 ld ra,120(sp) + 3bc064d4: 7446 ld s0,112(sp) + 3bc064d6: 74a6 ld s1,104(sp) + 3bc064d8: 7906 ld s2,96(sp) + 3bc064da: 69e6 ld s3,88(sp) + 3bc064dc: 6a46 ld s4,80(sp) + 3bc064de: 6aa6 ld s5,72(sp) + 3bc064e0: 6b06 ld s6,64(sp) + 3bc064e2: 7be2 ld s7,56(sp) + 3bc064e4: 7c42 ld s8,48(sp) + 3bc064e6: 7ca2 ld s9,40(sp) + 3bc064e8: 7d02 ld s10,32(sp) + 3bc064ea: 6de2 ld s11,24(sp) + 3bc064ec: 6109 addi sp,sp,128 + 3bc064ee: 8082 ret + 3bc064f0: 557d li a0,-1 + 3bc064f2: d265 beqz a2,3bc064d2 + 3bc064f4: 879a mv a5,t1 + 3bc064f6: 882e mv a6,a1 + 3bc064f8: 4fbd li t6,15 + 3bc064fa: 429d li t0,7 + 3bc064fc: ff4e8393 addi t2,t4,-12 + 3bc06500: 4a41 li s4,16 + 3bc06502: ff9e8f13 addi t5,t4,-7 + 3bc06506: ffbe8a93 addi s5,t4,-5 + 3bc0650a: 00005b17 auipc s6,0x5 + 3bc0650e: fa6b0b13 addi s6,s6,-90 # 3bc0b4b0 + 3bc06512: 00005b97 auipc s7,0x5 + 3bc06516: f7eb8b93 addi s7,s7,-130 # 3bc0b490 + 3bc0651a: ffce0c13 addi s8,t3,-4 + 3bc0651e: 0ff00493 li s1,255 + 3bc06522: ff8e0c93 addi s9,t3,-8 + 3bc06526: ff1e0913 addi s2,t3,-15 + 3bc0652a: 5d7d li s10,-1 + 3bc0652c: 9817c50b lbuia a0,(a5),1,0 + 3bc06530: 00455693 srli a3,a0,0x4 + 3bc06534: 0045561b srliw a2,a0,0x4 + 3bc06538: 07f68063 beq a3,t6,3bc06598 + 3bc0653c: 0109b8b3 sltu a7,s3,a6 + 3bc06540: 0018c893 xori a7,a7,1 + 3bc06544: 0ff8f893 andi a7,a7,255 + 3bc06548: 00c80433 add s0,a6,a2 + 3bc0654c: 00c786b3 add a3,a5,a2 + 3bc06550: 06088d63 beqz a7,3bc065ca + 3bc06554: 68a2 ld a7,8(sp) + 3bc06556: 0717fa63 bgeu a5,a7,3bc065ca + 3bc0655a: 6390 ld a2,0(a5) + 3bc0655c: 893d andi a0,a0,15 + 3bc0655e: 00c83023 sd a2,0(a6) + 3bc06562: 679c ld a5,8(a5) + 3bc06564: 862a mv a2,a0 + 3bc06566: 00f83423 sd a5,8(a6) + 3bc0656a: 87b6 mv a5,a3 + 3bc0656c: b827c88b lhuia a7,(a5),2,0 + 3bc06570: 411406b3 sub a3,s0,a7 + 3bc06574: 0bf50763 beq a0,t6,3bc06622 + 3bc06578: 0d12f563 bgeu t0,a7,3bc06642 + 3bc0657c: 0ce6e363 bltu a3,a4,3bc06642 + 3bc06580: 6290 ld a2,0(a3) + 3bc06582: 0511 addi a0,a0,4 + 3bc06584: 00a40833 add a6,s0,a0 + 3bc06588: e010 sd a2,0(s0) + 3bc0658a: 6690 ld a2,8(a3) + 3bc0658c: e410 sd a2,8(s0) + 3bc0658e: 0106d683 lhu a3,16(a3) + 3bc06592: 00d41823 sh a3,16(s0) + 3bc06596: bf59 j 3bc0652c + 3bc06598: 0527fd63 bgeu a5,s2,3bc065f2 + 3bc0659c: 4601 li a2,0 + 3bc0659e: 9817c88b lbuia a7,(a5),1,0 + 3bc065a2: 00c8863b addw a2,a7,a2 + 3bc065a6: 0527f963 bgeu a5,s2,3bc065f8 + 3bc065aa: fe988ae3 beq a7,s1,3bc0659e + 3bc065ae: 4681 li a3,0 + 3bc065b0: 7c06360b extu a2,a2,31,0 + 3bc065b4: 063d addi a2,a2,15 + 3bc065b6: 13a68a63 beq a3,s10,3bc066ea + 3bc065ba: 010606b3 add a3,a2,a6 + 3bc065be: 1306e663 bltu a3,a6,3bc066ea + 3bc065c2: 00f606b3 add a3,a2,a5 + 3bc065c6: 12f6e263 bltu a3,a5,3bc066ea + 3bc065ca: 00c80433 add s0,a6,a2 + 3bc065ce: 00c788b3 add a7,a5,a2 + 3bc065d2: 0083e463 bltu t2,s0,3bc065da + 3bc065d6: 031cf363 bgeu s9,a7,3bc065fc + 3bc065da: 111e1863 bne t3,a7,3bc066ea + 3bc065de: 108ee663 bltu t4,s0,3bc066ea + 3bc065e2: 84ae mv s1,a1 + 3bc065e4: 8542 mv a0,a6 + 3bc065e6: 85be mv a1,a5 + 3bc065e8: cf2fa0ef jal ra,3bc00ada + 3bc065ec: 4094053b subw a0,s0,s1 + 3bc065f0: b5cd j 3bc064d2 + 3bc065f2: 56fd li a3,-1 + 3bc065f4: 4601 li a2,0 + 3bc065f6: bf6d j 3bc065b0 + 3bc065f8: 56f9 li a3,-2 + 3bc065fa: bf5d j 3bc065b0 + 3bc065fc: 4681 li a3,0 + 3bc065fe: 60d7c60b lrd a2,a5,a3,0 + 3bc06602: 60d8560b srd a2,a6,a3,0 + 3bc06606: 06a1 addi a3,a3,8 + 3bc06608: 00d80633 add a2,a6,a3 + 3bc0660c: fe8669e3 bltu a2,s0,3bc065fe + 3bc06610: 87c6 mv a5,a7 + 3bc06612: b827c88b lhuia a7,(a5),2,0 + 3bc06616: 00f57613 andi a2,a0,15 + 3bc0661a: 411406b3 sub a3,s0,a7 + 3bc0661e: 03f61263 bne a2,t6,3bc06642 + 3bc06622: 4601 li a2,0 + 3bc06624: 9817c80b lbuia a6,(a5),1,0 + 3bc06628: 00c8063b addw a2,a6,a2 + 3bc0662c: 0b87ff63 bgeu a5,s8,3bc066ea + 3bc06630: fe980ae3 beq a6,s1,3bc06624 + 3bc06634: 7c06360b extu a2,a2,31,0 + 3bc06638: 063d addi a2,a2,15 + 3bc0663a: 00860533 add a0,a2,s0 + 3bc0663e: 0a856663 bltu a0,s0,3bc066ea + 3bc06642: 0611 addi a2,a2,4 + 3bc06644: 0ae6e363 bltu a3,a4,3bc066ea + 3bc06648: 00c40833 add a6,s0,a2 + 3bc0664c: 0712e463 bltu t0,a7,3bc066b4 + 3bc06650: 00042023 sw zero,0(s0) + 3bc06654: 0006c503 lbu a0,0(a3) + 3bc06658: 00a40023 sb a0,0(s0) + 3bc0665c: 0016c503 lbu a0,1(a3) + 3bc06660: 00a400a3 sb a0,1(s0) + 3bc06664: 0026c503 lbu a0,2(a3) + 3bc06668: 00a40123 sb a0,2(s0) + 3bc0666c: 0036c503 lbu a0,3(a3) + 3bc06670: 00a401a3 sb a0,3(s0) + 3bc06674: c51b450b lrwu a0,s6,a7,2 + 3bc06678: 00a68db3 add s11,a3,a0 + 3bc0667c: 40a6c68b lrw a3,a3,a0,0 + 3bc06680: c054 sw a3,4(s0) + 3bc06682: 451bc68b lrw a3,s7,a7,2 + 3bc06686: 40dd86b3 sub a3,s11,a3 + 3bc0668a: 0503f363 bgeu t2,a6,3bc066d0 + 3bc0668e: 050aee63 bltu s5,a6,3bc066ea + 3bc06692: 0421 addi s0,s0,8 + 3bc06694: 01e47e63 bgeu s0,t5,3bc066b0 + 3bc06698: 8536 mv a0,a3 + 3bc0669a: 8622 mv a2,s0 + 3bc0669c: 7885488b ldia a7,(a0),8,0 + 3bc066a0: 7886588b sdia a7,(a2),8,0 + 3bc066a4: ffe66ce3 bltu a2,t5,3bc0669c + 3bc066a8: 408f0433 sub s0,t5,s0 + 3bc066ac: 96a2 add a3,a3,s0 + 3bc066ae: 847a mv s0,t5 + 3bc066b0: 4601 li a2,0 + 3bc066b2: a811 j 3bc066c6 + 3bc066b4: 7886c50b ldia a0,(a3),8,0 + 3bc066b8: e008 sd a0,0(s0) + 3bc066ba: bfc1 j 3bc0668a + 3bc066bc: 80c6c50b lrbu a0,a3,a2,0 + 3bc066c0: 00c4550b srb a0,s0,a2,0 + 3bc066c4: 0605 addi a2,a2,1 + 3bc066c6: 00c40533 add a0,s0,a2 + 3bc066ca: ff0569e3 bltu a0,a6,3bc066bc + 3bc066ce: bdb9 j 3bc0652c + 3bc066d0: 6288 ld a0,0(a3) + 3bc066d2: e408 sd a0,8(s0) + 3bc066d4: e4ca7ce3 bgeu s4,a2,3bc0652c + 3bc066d8: 0441 addi s0,s0,16 + 3bc066da: 06a1 addi a3,a3,8 + 3bc066dc: 7886c60b ldia a2,(a3),8,0 + 3bc066e0: 7884560b sdia a2,(s0),8,0 + 3bc066e4: ff046ce3 bltu s0,a6,3bc066dc + 3bc066e8: b591 j 3bc0652c + 3bc066ea: 40678533 sub a0,a5,t1 + 3bc066ee: fff54513 not a0,a0 + 3bc066f2: 2501 sext.w a0,a0 + 3bc066f4: bbf9 j 3bc064d2 + 3bc066f6: 557d li a0,-1 + 3bc066f8: 8082 ret + +000000003bc066fa : + 3bc066fa: 06853803 ld a6,104(a0) + 3bc066fe: 7179 addi sp,sp,-48 + 3bc06700: f022 sd s0,32(sp) + 3bc06702: f406 sd ra,40(sp) + 3bc06704: ec26 sd s1,24(sp) + 3bc06706: e84a sd s2,16(sp) + 3bc06708: e44e sd s3,8(sp) + 3bc0670a: 842a mv s0,a0 + 3bc0670c: 00081363 bnez a6,3bc06712 + 3bc06710: f12c sd a1,96(a0) + 3bc06712: 7028 ld a0,96(s0) + 3bc06714: 010507b3 add a5,a0,a6 + 3bc06718: 00f59663 bne a1,a5,3bc06724 + 3bc0671c: 00c807b3 add a5,a6,a2 + 3bc06720: f43c sd a5,104(s0) + 3bc06722: a811 j 3bc06736 + 3bc06724: 40d588b3 sub a7,a1,a3 + 3bc06728: 98b2 add a7,a7,a2 + 3bc0672a: 67c1 lui a5,0x10 + 3bc0672c: 00f8ec63 bltu a7,a5,3bc06744 + 3bc06730: f034 sd a3,96(s0) + 3bc06732: 07143423 sd a7,104(s0) + 3bc06736: 70a2 ld ra,40(sp) + 3bc06738: 7402 ld s0,32(sp) + 3bc0673a: 64e2 ld s1,24(sp) + 3bc0673c: 6942 ld s2,16(sp) + 3bc0673e: 69a2 ld s3,8(sp) + 3bc06740: 6145 addi sp,sp,48 + 3bc06742: 8082 ret + 3bc06744: 6c34 ld a3,88(s0) + 3bc06746: 84b2 mv s1,a2 + 3bc06748: 89ae mv s3,a1 + 3bc0674a: cb29 beqz a4,3bc0679c + 3bc0674c: 00d51563 bne a0,a3,3bc06756 + 3bc06750: 00c807b3 add a5,a6,a2 + 3bc06754: b7f1 j 3bc06720 + 3bc06756: 07043903 ld s2,112(s0) + 3bc0675a: 604c ld a1,128(s0) + 3bc0675c: 7c38 ld a4,120(s0) + 3bc0675e: 40d90933 sub s2,s2,a3 + 3bc06762: 40b805b3 sub a1,a6,a1 + 3bc06766: 4601 li a2,0 + 3bc06768: 00e7ea63 bltu a5,a4,3bc0677c + 3bc0676c: 40e78633 sub a2,a5,a4 + 3bc06770: 00c937b3 sltu a5,s2,a2 + 3bc06774: 0017c793 xori a5,a5,1 + 3bc06778: 40f9160b mveqz a2,s2,a5 + 3bc0677c: 40c907b3 sub a5,s2,a2 + 3bc06780: 8d91 sub a1,a1,a2 + 3bc06782: 95aa add a1,a1,a0 + 3bc06784: 00f68533 add a0,a3,a5 + 3bc06788: af2fa0ef jal ra,3bc00a7a + 3bc0678c: 6050 ld a2,128(s0) + 3bc0678e: 6c3c ld a5,88(s0) + 3bc06790: 94b2 add s1,s1,a2 + 3bc06792: 9926 add s2,s2,s1 + 3bc06794: f03c sd a5,96(s0) + 3bc06796: 07243423 sd s2,104(s0) + 3bc0679a: bf71 j 3bc06736 + 3bc0679c: 02d51e63 bne a0,a3,3bc067d8 + 3bc067a0: 7c14 ld a3,56(s0) + 3bc067a2: 00c80733 add a4,a6,a2 + 3bc067a6: 00e6fe63 bgeu a3,a4,3bc067c2 + 3bc067aa: 40c78933 sub s2,a5,a2 + 3bc067ae: 40f607b3 sub a5,a2,a5 + 3bc067b2: 97c2 add a5,a5,a6 + 3bc067b4: 864a mv a2,s2 + 3bc067b6: 00f505b3 add a1,a0,a5 + 3bc067ba: ac0fa0ef jal ra,3bc00a7a + 3bc067be: 07243423 sd s2,104(s0) + 3bc067c2: 6c28 ld a0,88(s0) + 3bc067c4: 743c ld a5,104(s0) + 3bc067c6: 8626 mv a2,s1 + 3bc067c8: 85ce mv a1,s3 + 3bc067ca: 953e add a0,a0,a5 + 3bc067cc: aaefa0ef jal ra,3bc00a7a + 3bc067d0: 7430 ld a2,104(s0) + 3bc067d2: 94b2 add s1,s1,a2 + 3bc067d4: f424 sd s1,104(s0) + 3bc067d6: b785 j 3bc06736 + 3bc067d8: 8f91 sub a5,a5,a2 + 3bc067da: 0107b733 sltu a4,a5,a6 + 3bc067de: 00174713 xori a4,a4,1 + 3bc067e2: 42e8178b mvnez a5,a6,a4 + 3bc067e6: 40f805b3 sub a1,a6,a5 + 3bc067ea: 863e mv a2,a5 + 3bc067ec: 95aa add a1,a1,a0 + 3bc067ee: 8536 mv a0,a3 + 3bc067f0: 893e mv s2,a5 + 3bc067f2: a88fa0ef jal ra,3bc00a7a + 3bc067f6: 6c28 ld a0,88(s0) + 3bc067f8: 8626 mv a2,s1 + 3bc067fa: 85ce mv a1,s3 + 3bc067fc: 954a add a0,a0,s2 + 3bc067fe: a7cfa0ef jal ra,3bc00a7a + 3bc06802: 6c3c ld a5,88(s0) + 3bc06804: 94ca add s1,s1,s2 + 3bc06806: f03c sd a5,96(s0) + 3bc06808: b7f1 j 3bc067d4 + +000000003bc0680a : + 3bc0680a: 26050463 beqz a0,3bc06a72 + 3bc0680e: 7159 addi sp,sp,-112 + 3bc06810: eca6 sd s1,88(sp) + 3bc06812: 00c50833 add a6,a0,a2 + 3bc06816: 00d588b3 add a7,a1,a3 + 3bc0681a: f486 sd ra,104(sp) + 3bc0681c: f0a2 sd s0,96(sp) + 3bc0681e: e8ca sd s2,80(sp) + 3bc06820: e4ce sd s3,72(sp) + 3bc06822: e0d2 sd s4,64(sp) + 3bc06824: fc56 sd s5,56(sp) + 3bc06826: f85a sd s6,48(sp) + 3bc06828: f45e sd s7,40(sp) + 3bc0682a: f062 sd s8,32(sp) + 3bc0682c: ec66 sd s9,24(sp) + 3bc0682e: e86a sd s10,16(sp) + 3bc06830: e46e sd s11,8(sp) + 3bc06832: ff080393 addi t2,a6,-16 + 3bc06836: fe088493 addi s1,a7,-32 + 3bc0683a: ea9d bnez a3,3bc06870 + 3bc0683c: 4705 li a4,1 + 3bc0683e: 57fd li a5,-1 + 3bc06840: 00e61863 bne a2,a4,3bc06850 + 3bc06844: 00054783 lbu a5,0(a0) + 3bc06848: 00f037b3 snez a5,a5 + 3bc0684c: 0007a78b ext a5,a5,0,0 + 3bc06850: 70a6 ld ra,104(sp) + 3bc06852: 7406 ld s0,96(sp) + 3bc06854: 64e6 ld s1,88(sp) + 3bc06856: 6946 ld s2,80(sp) + 3bc06858: 69a6 ld s3,72(sp) + 3bc0685a: 6a06 ld s4,64(sp) + 3bc0685c: 7ae2 ld s5,56(sp) + 3bc0685e: 7b42 ld s6,48(sp) + 3bc06860: 7ba2 ld s7,40(sp) + 3bc06862: 7c02 ld s8,32(sp) + 3bc06864: 6ce2 ld s9,24(sp) + 3bc06866: 6d42 ld s10,16(sp) + 3bc06868: 6da2 ld s11,8(sp) + 3bc0686a: 853e mv a0,a5 + 3bc0686c: 6165 addi sp,sp,112 + 3bc0686e: 8082 ret + 3bc06870: 57fd li a5,-1 + 3bc06872: de79 beqz a2,3bc06850 + 3bc06874: 87aa mv a5,a0 + 3bc06876: 872e mv a4,a1 + 3bc06878: 4e3d li t3,15 + 3bc0687a: 4e9d li t4,7 + 3bc0687c: ff488f13 addi t5,a7,-12 + 3bc06880: 4941 li s2,16 + 3bc06882: ff988313 addi t1,a7,-7 + 3bc06886: ffb88993 addi s3,a7,-5 + 3bc0688a: 00005a17 auipc s4,0x5 + 3bc0688e: c26a0a13 addi s4,s4,-986 # 3bc0b4b0 + 3bc06892: 00005a97 auipc s5,0x5 + 3bc06896: bfea8a93 addi s5,s5,-1026 # 3bc0b490 + 3bc0689a: ffc80b13 addi s6,a6,-4 + 3bc0689e: 0ff00f93 li t6,255 + 3bc068a2: ff880b93 addi s7,a6,-8 + 3bc068a6: ff180293 addi t0,a6,-15 + 3bc068aa: 5c7d li s8,-1 + 3bc068ac: 9817c68b lbuia a3,(a5),1,0 + 3bc068b0: 0046d413 srli s0,a3,0x4 + 3bc068b4: 0046d61b srliw a2,a3,0x4 + 3bc068b8: 05c40d63 beq s0,t3,3bc06912 + 3bc068bc: 00e4bd33 sltu s10,s1,a4 + 3bc068c0: 001d4d13 xori s10,s10,1 + 3bc068c4: 0ffd7d13 andi s10,s10,255 + 3bc068c8: 00c70433 add s0,a4,a2 + 3bc068cc: 00c78cb3 add s9,a5,a2 + 3bc068d0: 060d0a63 beqz s10,3bc06944 + 3bc068d4: 0677f863 bgeu a5,t2,3bc06944 + 3bc068d8: 6390 ld a2,0(a5) + 3bc068da: e310 sd a2,0(a4) + 3bc068dc: 679c ld a5,8(a5) + 3bc068de: e71c sd a5,8(a4) + 3bc068e0: 87e6 mv a5,s9 + 3bc068e2: b827cc8b lhuia s9,(a5),2,0 + 3bc068e6: 00f6f713 andi a4,a3,15 + 3bc068ea: 86ba mv a3,a4 + 3bc068ec: 41940633 sub a2,s0,s9 + 3bc068f0: 0bc70563 beq a4,t3,3bc0699a + 3bc068f4: 0d9ef363 bgeu t4,s9,3bc069ba + 3bc068f8: 0cb66163 bltu a2,a1,3bc069ba + 3bc068fc: 6214 ld a3,0(a2) + 3bc068fe: 0711 addi a4,a4,4 + 3bc06900: 9722 add a4,a4,s0 + 3bc06902: e014 sd a3,0(s0) + 3bc06904: 6614 ld a3,8(a2) + 3bc06906: e414 sd a3,8(s0) + 3bc06908: 01065683 lhu a3,16(a2) + 3bc0690c: 00d41823 sh a3,16(s0) + 3bc06910: bf71 j 3bc068ac + 3bc06912: 0457fd63 bgeu a5,t0,3bc0696c + 3bc06916: 4601 li a2,0 + 3bc06918: 9817cc8b lbuia s9,(a5),1,0 + 3bc0691c: 00cc863b addw a2,s9,a2 + 3bc06920: 0457f963 bgeu a5,t0,3bc06972 + 3bc06924: fffc8ae3 beq s9,t6,3bc06918 + 3bc06928: 4401 li s0,0 + 3bc0692a: 7c06360b extu a2,a2,31,0 + 3bc0692e: 063d addi a2,a2,15 + 3bc06930: 13840c63 beq s0,s8,3bc06a68 + 3bc06934: 00e60433 add s0,a2,a4 + 3bc06938: 12e46863 bltu s0,a4,3bc06a68 + 3bc0693c: 00f60433 add s0,a2,a5 + 3bc06940: 12f46463 bltu s0,a5,3bc06a68 + 3bc06944: 00c70433 add s0,a4,a2 + 3bc06948: 00c78cb3 add s9,a5,a2 + 3bc0694c: 008f6463 bltu t5,s0,3bc06954 + 3bc06950: 039bf363 bgeu s7,s9,3bc06976 + 3bc06954: 11981a63 bne a6,s9,3bc06a68 + 3bc06958: 1088e863 bltu a7,s0,3bc06a68 + 3bc0695c: 84ae mv s1,a1 + 3bc0695e: 853a mv a0,a4 + 3bc06960: 85be mv a1,a5 + 3bc06962: 978fa0ef jal ra,3bc00ada + 3bc06966: 409407bb subw a5,s0,s1 + 3bc0696a: b5dd j 3bc06850 + 3bc0696c: 547d li s0,-1 + 3bc0696e: 4601 li a2,0 + 3bc06970: bf6d j 3bc0692a + 3bc06972: 5479 li s0,-2 + 3bc06974: bf5d j 3bc0692a + 3bc06976: 4601 li a2,0 + 3bc06978: 60c7cd0b lrd s10,a5,a2,0 + 3bc0697c: 60c75d0b srd s10,a4,a2,0 + 3bc06980: 0621 addi a2,a2,8 + 3bc06982: 00c70d33 add s10,a4,a2 + 3bc06986: fe8d69e3 bltu s10,s0,3bc06978 + 3bc0698a: 87e6 mv a5,s9 + 3bc0698c: b827cc8b lhuia s9,(a5),2,0 + 3bc06990: 8abd andi a3,a3,15 + 3bc06992: 41940633 sub a2,s0,s9 + 3bc06996: 03c69263 bne a3,t3,3bc069ba + 3bc0699a: 4681 li a3,0 + 3bc0699c: 9817cd0b lbuia s10,(a5),1,0 + 3bc069a0: 00dd06bb addw a3,s10,a3 + 3bc069a4: 0d67f263 bgeu a5,s6,3bc06a68 + 3bc069a8: fffd0ae3 beq s10,t6,3bc0699c + 3bc069ac: 7c06b68b extu a3,a3,31,0 + 3bc069b0: 06bd addi a3,a3,15 + 3bc069b2: 00868733 add a4,a3,s0 + 3bc069b6: 0a876963 bltu a4,s0,3bc06a68 + 3bc069ba: 0691 addi a3,a3,4 + 3bc069bc: 0ab66663 bltu a2,a1,3bc06a68 + 3bc069c0: 00d40733 add a4,s0,a3 + 3bc069c4: 079ee463 bltu t4,s9,3bc06a2c + 3bc069c8: 00042023 sw zero,0(s0) + 3bc069cc: 00064d03 lbu s10,0(a2) + 3bc069d0: 01a40023 sb s10,0(s0) + 3bc069d4: 00164d03 lbu s10,1(a2) + 3bc069d8: 01a400a3 sb s10,1(s0) + 3bc069dc: 00264d03 lbu s10,2(a2) + 3bc069e0: 01a40123 sb s10,2(s0) + 3bc069e4: 00364d03 lbu s10,3(a2) + 3bc069e8: 01a401a3 sb s10,3(s0) + 3bc069ec: c59a4d0b lrwu s10,s4,s9,2 + 3bc069f0: 01a60db3 add s11,a2,s10 + 3bc069f4: 41a6460b lrw a2,a2,s10,0 + 3bc069f8: c050 sw a2,4(s0) + 3bc069fa: 459ac60b lrw a2,s5,s9,2 + 3bc069fe: 40cd8633 sub a2,s11,a2 + 3bc06a02: 04ef7463 bgeu t5,a4,3bc06a4a + 3bc06a06: 06e9e163 bltu s3,a4,3bc06a68 + 3bc06a0a: 0421 addi s0,s0,8 + 3bc06a0c: 00647e63 bgeu s0,t1,3bc06a28 + 3bc06a10: 8cb2 mv s9,a2 + 3bc06a12: 86a2 mv a3,s0 + 3bc06a14: 788ccd0b ldia s10,(s9),8,0 + 3bc06a18: 7886dd0b sdia s10,(a3),8,0 + 3bc06a1c: fe66ece3 bltu a3,t1,3bc06a14 + 3bc06a20: 40830433 sub s0,t1,s0 + 3bc06a24: 9622 add a2,a2,s0 + 3bc06a26: 841a mv s0,t1 + 3bc06a28: 4681 li a3,0 + 3bc06a2a: a819 j 3bc06a40 + 3bc06a2c: 78864c8b ldia s9,(a2),8,0 + 3bc06a30: 01943023 sd s9,0(s0) + 3bc06a34: b7f9 j 3bc06a02 + 3bc06a36: 80d64c8b lrbu s9,a2,a3,0 + 3bc06a3a: 00d45c8b srb s9,s0,a3,0 + 3bc06a3e: 0685 addi a3,a3,1 + 3bc06a40: 00d40cb3 add s9,s0,a3 + 3bc06a44: feece9e3 bltu s9,a4,3bc06a36 + 3bc06a48: b595 j 3bc068ac + 3bc06a4a: 00063c83 ld s9,0(a2) + 3bc06a4e: 01943423 sd s9,8(s0) + 3bc06a52: e4d97de3 bgeu s2,a3,3bc068ac + 3bc06a56: 0441 addi s0,s0,16 + 3bc06a58: 0621 addi a2,a2,8 + 3bc06a5a: 7886468b ldia a3,(a2),8,0 + 3bc06a5e: 7884568b sdia a3,(s0),8,0 + 3bc06a62: fee46ce3 bltu s0,a4,3bc06a5a + 3bc06a66: b599 j 3bc068ac + 3bc06a68: 8f89 sub a5,a5,a0 + 3bc06a6a: fff7c793 not a5,a5 + 3bc06a6e: 2781 sext.w a5,a5 + 3bc06a70: b3c5 j 3bc06850 + 3bc06a72: 57fd li a5,-1 + 3bc06a74: 853e mv a0,a5 + 3bc06a76: 8082 ret + +000000003bc06a78 : + 3bc06a78: 77c1 lui a5,0xffff0 + 3bc06a7a: 7119 addi sp,sp,-128 + 3bc06a7c: 97ae add a5,a5,a1 + 3bc06a7e: fc86 sd ra,120(sp) + 3bc06a80: f8a2 sd s0,112(sp) + 3bc06a82: f4a6 sd s1,104(sp) + 3bc06a84: f0ca sd s2,96(sp) + 3bc06a86: ecce sd s3,88(sp) + 3bc06a88: e8d2 sd s4,80(sp) + 3bc06a8a: e4d6 sd s5,72(sp) + 3bc06a8c: e0da sd s6,64(sp) + 3bc06a8e: fc5e sd s7,56(sp) + 3bc06a90: f862 sd s8,48(sp) + 3bc06a92: f466 sd s9,40(sp) + 3bc06a94: f06a sd s10,32(sp) + 3bc06a96: ec6e sd s11,24(sp) + 3bc06a98: e43e sd a5,8(sp) + 3bc06a9a: 24050263 beqz a0,3bc06cde + 3bc06a9e: 00c50333 add t1,a0,a2 + 3bc06aa2: 00d58e33 add t3,a1,a3 + 3bc06aa6: 88aa mv a7,a0 + 3bc06aa8: ff030913 addi s2,t1,-16 + 3bc06aac: fe0e0993 addi s3,t3,-32 + 3bc06ab0: ea95 bnez a3,3bc06ae4 + 3bc06ab2: 4785 li a5,1 + 3bc06ab4: 557d li a0,-1 + 3bc06ab6: 00f61863 bne a2,a5,3bc06ac6 + 3bc06aba: 0008c503 lbu a0,0(a7) + 3bc06abe: 00a03533 snez a0,a0 + 3bc06ac2: 0005250b ext a0,a0,0,0 + 3bc06ac6: 70e6 ld ra,120(sp) + 3bc06ac8: 7446 ld s0,112(sp) + 3bc06aca: 74a6 ld s1,104(sp) + 3bc06acc: 7906 ld s2,96(sp) + 3bc06ace: 69e6 ld s3,88(sp) + 3bc06ad0: 6a46 ld s4,80(sp) + 3bc06ad2: 6aa6 ld s5,72(sp) + 3bc06ad4: 6b06 ld s6,64(sp) + 3bc06ad6: 7be2 ld s7,56(sp) + 3bc06ad8: 7c42 ld s8,48(sp) + 3bc06ada: 7ca2 ld s9,40(sp) + 3bc06adc: 7d02 ld s10,32(sp) + 3bc06ade: 6de2 ld s11,24(sp) + 3bc06ae0: 6109 addi sp,sp,128 + 3bc06ae2: 8082 ret + 3bc06ae4: 557d li a0,-1 + 3bc06ae6: d265 beqz a2,3bc06ac6 + 3bc06ae8: 87c6 mv a5,a7 + 3bc06aea: 882e mv a6,a1 + 3bc06aec: 4f3d li t5,15 + 3bc06aee: 4f9d li t6,7 + 3bc06af0: ff4e0293 addi t0,t3,-12 + 3bc06af4: 4a41 li s4,16 + 3bc06af6: ff9e0e93 addi t4,t3,-7 + 3bc06afa: ffbe0a93 addi s5,t3,-5 + 3bc06afe: 00005b17 auipc s6,0x5 + 3bc06b02: 9b2b0b13 addi s6,s6,-1614 # 3bc0b4b0 + 3bc06b06: 00005b97 auipc s7,0x5 + 3bc06b0a: 98ab8b93 addi s7,s7,-1654 # 3bc0b490 + 3bc06b0e: ffc30c13 addi s8,t1,-4 + 3bc06b12: 0ff00393 li t2,255 + 3bc06b16: ff830c93 addi s9,t1,-8 + 3bc06b1a: ff130493 addi s1,t1,-15 + 3bc06b1e: 5d7d li s10,-1 + 3bc06b20: 9817c68b lbuia a3,(a5),1,0 + 3bc06b24: 0046d713 srli a4,a3,0x4 + 3bc06b28: 0046d61b srliw a2,a3,0x4 + 3bc06b2c: 05e70b63 beq a4,t5,3bc06b82 + 3bc06b30: 0109b533 sltu a0,s3,a6 + 3bc06b34: 00154513 xori a0,a0,1 + 3bc06b38: 0ff57513 andi a0,a0,255 + 3bc06b3c: 00c80433 add s0,a6,a2 + 3bc06b40: 00c78733 add a4,a5,a2 + 3bc06b44: c53d beqz a0,3bc06bb2 + 3bc06b46: 0727f663 bgeu a5,s2,3bc06bb2 + 3bc06b4a: 6390 ld a2,0(a5) + 3bc06b4c: 8abd andi a3,a3,15 + 3bc06b4e: 00c83023 sd a2,0(a6) + 3bc06b52: 679c ld a5,8(a5) + 3bc06b54: 00f83423 sd a5,8(a6) + 3bc06b58: 87ba mv a5,a4 + 3bc06b5a: b827c60b lhuia a2,(a5),2,0 + 3bc06b5e: 40c40733 sub a4,s0,a2 + 3bc06b62: 0be68363 beq a3,t5,3bc06c08 + 3bc06b66: 0ccff163 bgeu t6,a2,3bc06c28 + 3bc06b6a: 6310 ld a2,0(a4) + 3bc06b6c: 0691 addi a3,a3,4 + 3bc06b6e: 00d40833 add a6,s0,a3 + 3bc06b72: e010 sd a2,0(s0) + 3bc06b74: 6710 ld a2,8(a4) + 3bc06b76: e410 sd a2,8(s0) + 3bc06b78: 01075703 lhu a4,16(a4) # 1000010 <__BSS_SIZE__+0xffa400> + 3bc06b7c: 00e41823 sh a4,16(s0) + 3bc06b80: b745 j 3bc06b20 + 3bc06b82: 0497fc63 bgeu a5,s1,3bc06bda + 3bc06b86: 4601 li a2,0 + 3bc06b88: 9817c50b lbuia a0,(a5),1,0 + 3bc06b8c: 9e29 addw a2,a2,a0 + 3bc06b8e: 0497f963 bgeu a5,s1,3bc06be0 + 3bc06b92: fe750be3 beq a0,t2,3bc06b88 + 3bc06b96: 4701 li a4,0 + 3bc06b98: 7c06360b extu a2,a2,31,0 + 3bc06b9c: 063d addi a2,a2,15 + 3bc06b9e: 13a70a63 beq a4,s10,3bc06cd2 + 3bc06ba2: 01060733 add a4,a2,a6 + 3bc06ba6: 13076663 bltu a4,a6,3bc06cd2 + 3bc06baa: 00f60733 add a4,a2,a5 + 3bc06bae: 12f76263 bltu a4,a5,3bc06cd2 + 3bc06bb2: 00c80433 add s0,a6,a2 + 3bc06bb6: 00c78533 add a0,a5,a2 + 3bc06bba: 0082e463 bltu t0,s0,3bc06bc2 + 3bc06bbe: 02acf363 bgeu s9,a0,3bc06be4 + 3bc06bc2: 10a31863 bne t1,a0,3bc06cd2 + 3bc06bc6: 108e6663 bltu t3,s0,3bc06cd2 + 3bc06bca: 84ae mv s1,a1 + 3bc06bcc: 8542 mv a0,a6 + 3bc06bce: 85be mv a1,a5 + 3bc06bd0: f0bf90ef jal ra,3bc00ada + 3bc06bd4: 4094053b subw a0,s0,s1 + 3bc06bd8: b5fd j 3bc06ac6 + 3bc06bda: 577d li a4,-1 + 3bc06bdc: 4601 li a2,0 + 3bc06bde: bf6d j 3bc06b98 + 3bc06be0: 5779 li a4,-2 + 3bc06be2: bf5d j 3bc06b98 + 3bc06be4: 4701 li a4,0 + 3bc06be6: 60e7c60b lrd a2,a5,a4,0 + 3bc06bea: 60e8560b srd a2,a6,a4,0 + 3bc06bee: 0721 addi a4,a4,8 + 3bc06bf0: 00e80633 add a2,a6,a4 + 3bc06bf4: fe8669e3 bltu a2,s0,3bc06be6 + 3bc06bf8: 87aa mv a5,a0 + 3bc06bfa: b827c60b lhuia a2,(a5),2,0 + 3bc06bfe: 8abd andi a3,a3,15 + 3bc06c00: 40c40733 sub a4,s0,a2 + 3bc06c04: 03e69263 bne a3,t5,3bc06c28 + 3bc06c08: 4681 li a3,0 + 3bc06c0a: 9817c80b lbuia a6,(a5),1,0 + 3bc06c0e: 00d806bb addw a3,a6,a3 + 3bc06c12: 0d87f063 bgeu a5,s8,3bc06cd2 + 3bc06c16: fe780ae3 beq a6,t2,3bc06c0a + 3bc06c1a: 7c06b68b extu a3,a3,31,0 + 3bc06c1e: 06bd addi a3,a3,15 + 3bc06c20: 00868533 add a0,a3,s0 + 3bc06c24: 0a856763 bltu a0,s0,3bc06cd2 + 3bc06c28: 6522 ld a0,8(sp) + 3bc06c2a: 0691 addi a3,a3,4 + 3bc06c2c: 0aa76363 bltu a4,a0,3bc06cd2 + 3bc06c30: 00d40833 add a6,s0,a3 + 3bc06c34: 06cfe463 bltu t6,a2,3bc06c9c + 3bc06c38: 00042023 sw zero,0(s0) + 3bc06c3c: 00074503 lbu a0,0(a4) + 3bc06c40: 00a40023 sb a0,0(s0) + 3bc06c44: 00174503 lbu a0,1(a4) + 3bc06c48: 00a400a3 sb a0,1(s0) + 3bc06c4c: 00274503 lbu a0,2(a4) + 3bc06c50: 00a40123 sb a0,2(s0) + 3bc06c54: 00374503 lbu a0,3(a4) + 3bc06c58: 00a401a3 sb a0,3(s0) + 3bc06c5c: c4cb450b lrwu a0,s6,a2,2 + 3bc06c60: 00a70db3 add s11,a4,a0 + 3bc06c64: 40a7470b lrw a4,a4,a0,0 + 3bc06c68: c058 sw a4,4(s0) + 3bc06c6a: 44cbc70b lrw a4,s7,a2,2 + 3bc06c6e: 40ed8733 sub a4,s11,a4 + 3bc06c72: 0502f363 bgeu t0,a6,3bc06cb8 + 3bc06c76: 050aee63 bltu s5,a6,3bc06cd2 + 3bc06c7a: 0421 addi s0,s0,8 + 3bc06c7c: 01d47e63 bgeu s0,t4,3bc06c98 + 3bc06c80: 863a mv a2,a4 + 3bc06c82: 86a2 mv a3,s0 + 3bc06c84: 7886450b ldia a0,(a2),8,0 + 3bc06c88: 7886d50b sdia a0,(a3),8,0 + 3bc06c8c: ffd6ece3 bltu a3,t4,3bc06c84 + 3bc06c90: 408e8433 sub s0,t4,s0 + 3bc06c94: 9722 add a4,a4,s0 + 3bc06c96: 8476 mv s0,t4 + 3bc06c98: 4681 li a3,0 + 3bc06c9a: a811 j 3bc06cae + 3bc06c9c: 7887460b ldia a2,(a4),8,0 + 3bc06ca0: e010 sd a2,0(s0) + 3bc06ca2: bfc1 j 3bc06c72 + 3bc06ca4: 80d7460b lrbu a2,a4,a3,0 + 3bc06ca8: 00d4560b srb a2,s0,a3,0 + 3bc06cac: 0685 addi a3,a3,1 + 3bc06cae: 00d40633 add a2,s0,a3 + 3bc06cb2: ff0669e3 bltu a2,a6,3bc06ca4 + 3bc06cb6: b5ad j 3bc06b20 + 3bc06cb8: 6310 ld a2,0(a4) + 3bc06cba: e410 sd a2,8(s0) + 3bc06cbc: e6da72e3 bgeu s4,a3,3bc06b20 + 3bc06cc0: 0441 addi s0,s0,16 + 3bc06cc2: 0721 addi a4,a4,8 + 3bc06cc4: 7887468b ldia a3,(a4),8,0 + 3bc06cc8: 7884568b sdia a3,(s0),8,0 + 3bc06ccc: ff046ce3 bltu s0,a6,3bc06cc4 + 3bc06cd0: bd81 j 3bc06b20 + 3bc06cd2: 41178533 sub a0,a5,a7 + 3bc06cd6: fff54513 not a0,a0 + 3bc06cda: 2501 sext.w a0,a0 + 3bc06cdc: b3ed j 3bc06ac6 + 3bc06cde: 557d li a0,-1 + 3bc06ce0: b3dd j 3bc06ac6 + +000000003bc06ce2 : + 3bc06ce2: 30050963 beqz a0,3bc06ff4 + 3bc06ce6: 7135 addi sp,sp,-160 + 3bc06ce8: e526 sd s1,136(sp) + 3bc06cea: fcce sd s3,120(sp) + 3bc06cec: f0da sd s6,96(sp) + 3bc06cee: ecde sd s7,88(sp) + 3bc06cf0: e8e2 sd s8,80(sp) + 3bc06cf2: e0ea sd s10,64(sp) + 3bc06cf4: ed06 sd ra,152(sp) + 3bc06cf6: e922 sd s0,144(sp) + 3bc06cf8: e14a sd s2,128(sp) + 3bc06cfa: f8d2 sd s4,112(sp) + 3bc06cfc: f4d6 sd s5,104(sp) + 3bc06cfe: e4e6 sd s9,72(sp) + 3bc06d00: fc6e sd s11,56(sp) + 3bc06d02: 8b2a mv s6,a0 + 3bc06d04: 8d2e mv s10,a1 + 3bc06d06: 84ba mv s1,a4 + 3bc06d08: 89be mv s3,a5 + 3bc06d0a: 00c50bb3 add s7,a0,a2 + 3bc06d0e: 00d58c33 add s8,a1,a3 + 3bc06d12: c319 beqz a4,3bc06d18 + 3bc06d14: 00f704b3 add s1,a4,a5 + 3bc06d18: ff0b8793 addi a5,s7,-16 + 3bc06d1c: e03e sd a5,0(sp) + 3bc06d1e: fe0c0793 addi a5,s8,-32 + 3bc06d22: e43e sd a5,8(sp) + 3bc06d24: ea95 bnez a3,3bc06d58 + 3bc06d26: 4785 li a5,1 + 3bc06d28: 557d li a0,-1 + 3bc06d2a: 00f61863 bne a2,a5,3bc06d3a + 3bc06d2e: 000b4503 lbu a0,0(s6) + 3bc06d32: 00a03533 snez a0,a0 + 3bc06d36: 0005250b ext a0,a0,0,0 + 3bc06d3a: 60ea ld ra,152(sp) + 3bc06d3c: 644a ld s0,144(sp) + 3bc06d3e: 64aa ld s1,136(sp) + 3bc06d40: 690a ld s2,128(sp) + 3bc06d42: 79e6 ld s3,120(sp) + 3bc06d44: 7a46 ld s4,112(sp) + 3bc06d46: 7aa6 ld s5,104(sp) + 3bc06d48: 7b06 ld s6,96(sp) + 3bc06d4a: 6be6 ld s7,88(sp) + 3bc06d4c: 6c46 ld s8,80(sp) + 3bc06d4e: 6ca6 ld s9,72(sp) + 3bc06d50: 6d06 ld s10,64(sp) + 3bc06d52: 7de2 ld s11,56(sp) + 3bc06d54: 610d addi sp,sp,160 + 3bc06d56: 8082 ret + 3bc06d58: 557d li a0,-1 + 3bc06d5a: d265 beqz a2,3bc06d3a + 3bc06d5c: ffcb8793 addi a5,s7,-4 + 3bc06d60: e83e sd a5,16(sp) + 3bc06d62: ff8b8793 addi a5,s7,-8 + 3bc06d66: 845a mv s0,s6 + 3bc06d68: 8cea mv s9,s10 + 3bc06d6a: ff4c0a13 addi s4,s8,-12 + 3bc06d6e: ff9c0913 addi s2,s8,-7 + 3bc06d72: ffbc0a93 addi s5,s8,-5 + 3bc06d76: ec3e sd a5,24(sp) + 3bc06d78: 9814468b lbuia a3,(s0),1,0 + 3bc06d7c: 4ebd li t4,15 + 3bc06d7e: 0046d793 srli a5,a3,0x4 + 3bc06d82: 0046d61b srliw a2,a3,0x4 + 3bc06d86: 07d78363 beq a5,t4,3bc06dec + 3bc06d8a: 67a2 ld a5,8(sp) + 3bc06d8c: 00cc8db3 add s11,s9,a2 + 3bc06d90: 00c40533 add a0,s0,a2 + 3bc06d94: 0197b5b3 sltu a1,a5,s9 + 3bc06d98: 0015c593 xori a1,a1,1 + 3bc06d9c: 0ff5f593 andi a1,a1,255 + 3bc06da0: c5c1 beqz a1,3bc06e28 + 3bc06da2: 6782 ld a5,0(sp) + 3bc06da4: 08f47263 bgeu s0,a5,3bc06e28 + 3bc06da8: 6010 ld a2,0(s0) + 3bc06daa: 8abd andi a3,a3,15 + 3bc06dac: 00ccb023 sd a2,0(s9) + 3bc06db0: 6410 ld a2,8(s0) + 3bc06db2: 842a mv s0,a0 + 3bc06db4: 00ccb423 sd a2,8(s9) + 3bc06db8: b824458b lhuia a1,(s0),2,0 + 3bc06dbc: 8636 mv a2,a3 + 3bc06dbe: 40bd8533 sub a0,s11,a1 + 3bc06dc2: 0dd68063 beq a3,t4,3bc06e82 + 3bc06dc6: 471d li a4,7 + 3bc06dc8: 0eb77063 bgeu a4,a1,3bc06ea8 + 3bc06dcc: 0da56e63 bltu a0,s10,3bc06ea8 + 3bc06dd0: 6118 ld a4,0(a0) + 3bc06dd2: 0691 addi a3,a3,4 + 3bc06dd4: 00dd8cb3 add s9,s11,a3 + 3bc06dd8: 00edb023 sd a4,0(s11) + 3bc06ddc: 6518 ld a4,8(a0) + 3bc06dde: 00edb423 sd a4,8(s11) + 3bc06de2: 01055703 lhu a4,16(a0) + 3bc06de6: 00ed9823 sh a4,16(s11) + 3bc06dea: b779 j 3bc06d78 + 3bc06dec: ff1b8793 addi a5,s7,-15 + 3bc06df0: 06f47063 bgeu s0,a5,3bc06e50 + 3bc06df4: 4601 li a2,0 + 3bc06df6: 0ff00513 li a0,255 + 3bc06dfa: 98144e8b lbuia t4,(s0),1,0 + 3bc06dfe: 00ce863b addw a2,t4,a2 + 3bc06e02: 04f47a63 bgeu s0,a5,3bc06e56 + 3bc06e06: feae8ae3 beq t4,a0,3bc06dfa + 3bc06e0a: 4781 li a5,0 + 3bc06e0c: 7c06360b extu a2,a2,31,0 + 3bc06e10: 55fd li a1,-1 + 3bc06e12: 063d addi a2,a2,15 + 3bc06e14: 1cb78a63 beq a5,a1,3bc06fe8 + 3bc06e18: 019607b3 add a5,a2,s9 + 3bc06e1c: 1d97e663 bltu a5,s9,3bc06fe8 + 3bc06e20: 008607b3 add a5,a2,s0 + 3bc06e24: 1c87e263 bltu a5,s0,3bc06fe8 + 3bc06e28: 00cc8db3 add s11,s9,a2 + 3bc06e2c: 00c405b3 add a1,s0,a2 + 3bc06e30: 01ba6563 bltu s4,s11,3bc06e3a + 3bc06e34: 67e2 ld a5,24(sp) + 3bc06e36: 02b7f263 bgeu a5,a1,3bc06e5a + 3bc06e3a: 1abb9763 bne s7,a1,3bc06fe8 + 3bc06e3e: 1bbc6563 bltu s8,s11,3bc06fe8 + 3bc06e42: 85a2 mv a1,s0 + 3bc06e44: 8566 mv a0,s9 + 3bc06e46: c95f90ef jal ra,3bc00ada + 3bc06e4a: 41ad853b subw a0,s11,s10 + 3bc06e4e: b5f5 j 3bc06d3a + 3bc06e50: 57fd li a5,-1 + 3bc06e52: 4601 li a2,0 + 3bc06e54: bf65 j 3bc06e0c + 3bc06e56: 57f9 li a5,-2 + 3bc06e58: bf55 j 3bc06e0c + 3bc06e5a: 4601 li a2,0 + 3bc06e5c: 60c4450b lrd a0,s0,a2,0 + 3bc06e60: 60ccd50b srd a0,s9,a2,0 + 3bc06e64: 0621 addi a2,a2,8 + 3bc06e66: 00cc8533 add a0,s9,a2 + 3bc06e6a: ffb569e3 bltu a0,s11,3bc06e5c + 3bc06e6e: 842e mv s0,a1 + 3bc06e70: b824458b lhuia a1,(s0),2,0 + 3bc06e74: 00f6f613 andi a2,a3,15 + 3bc06e78: 473d li a4,15 + 3bc06e7a: 40bd8533 sub a0,s11,a1 + 3bc06e7e: 02e61563 bne a2,a4,3bc06ea8 + 3bc06e82: 4601 li a2,0 + 3bc06e84: 0ff00693 li a3,255 + 3bc06e88: 98144e8b lbuia t4,(s0),1,0 + 3bc06e8c: 67c2 ld a5,16(sp) + 3bc06e8e: 00ce863b addw a2,t4,a2 + 3bc06e92: 14f47b63 bgeu s0,a5,3bc06fe8 + 3bc06e96: fede89e3 beq t4,a3,3bc06e88 + 3bc06e9a: 7c06360b extu a2,a2,31,0 + 3bc06e9e: 063d addi a2,a2,15 + 3bc06ea0: 01b60733 add a4,a2,s11 + 3bc06ea4: 15b76263 bltu a4,s11,3bc06fe8 + 3bc06ea8: 6741 lui a4,0x10 + 3bc06eaa: 0611 addi a2,a2,4 + 3bc06eac: 00e9f663 bgeu s3,a4,3bc06eb8 + 3bc06eb0: 01350733 add a4,a0,s3 + 3bc06eb4: 13a76a63 bltu a4,s10,3bc06fe8 + 3bc06eb8: 00cd8cb3 add s9,s11,a2 + 3bc06ebc: 07a57663 bgeu a0,s10,3bc06f28 + 3bc06ec0: 139ae463 bltu s5,s9,3bc06fe8 + 3bc06ec4: 40ad06b3 sub a3,s10,a0 + 3bc06ec8: 40d485b3 sub a1,s1,a3 + 3bc06ecc: 00c6e663 bltu a3,a2,3bc06ed8 + 3bc06ed0: 856e mv a0,s11 + 3bc06ed2: c09f90ef jal ra,3bc00ada + 3bc06ed6: b54d j 3bc06d78 + 3bc06ed8: 40d60eb3 sub t4,a2,a3 + 3bc06edc: 856e mv a0,s11 + 3bc06ede: 8636 mv a2,a3 + 3bc06ee0: f476 sd t4,40(sp) + 3bc06ee2: f036 sd a3,32(sp) + 3bc06ee4: b97f90ef jal ra,3bc00a7a + 3bc06ee8: 7682 ld a3,32(sp) + 3bc06eea: 7ea2 ld t4,40(sp) + 3bc06eec: 00dd8533 add a0,s11,a3 + 3bc06ef0: 41a507b3 sub a5,a0,s10 + 3bc06ef4: 03d7f563 bgeu a5,t4,3bc06f1e + 3bc06ef8: 4781 li a5,0 + 3bc06efa: a031 j 3bc06f06 + 3bc06efc: 80fd468b lrbu a3,s10,a5,0 + 3bc06f00: 00f5568b srb a3,a0,a5,0 + 3bc06f04: 0785 addi a5,a5,1 + 3bc06f06: 00f506b3 add a3,a0,a5 + 3bc06f0a: ff96e9e3 bltu a3,s9,3bc06efc + 3bc06f0e: 00acb733 sltu a4,s9,a0 + 3bc06f12: 8676 mv a2,t4 + 3bc06f14: 42e0160b mvnez a2,zero,a4 + 3bc06f18: 00c50cb3 add s9,a0,a2 + 3bc06f1c: bdb1 j 3bc06d78 + 3bc06f1e: 8676 mv a2,t4 + 3bc06f20: 85ea mv a1,s10 + 3bc06f22: b59f90ef jal ra,3bc00a7a + 3bc06f26: bd89 j 3bc06d78 + 3bc06f28: 469d li a3,7 + 3bc06f2a: 06b6ee63 bltu a3,a1,3bc06fa6 + 3bc06f2e: 000da023 sw zero,0(s11) + 3bc06f32: 00054683 lbu a3,0(a0) + 3bc06f36: 00004797 auipc a5,0x4 + 3bc06f3a: 57a78793 addi a5,a5,1402 # 3bc0b4b0 + 3bc06f3e: c4b7ce8b lrwu t4,a5,a1,2 + 3bc06f42: 00dd8023 sb a3,0(s11) + 3bc06f46: 00154683 lbu a3,1(a0) + 3bc06f4a: 00004797 auipc a5,0x4 + 3bc06f4e: 54678793 addi a5,a5,1350 # 3bc0b490 + 3bc06f52: 01d50f33 add t5,a0,t4 + 3bc06f56: 00dd80a3 sb a3,1(s11) + 3bc06f5a: 00254683 lbu a3,2(a0) + 3bc06f5e: 00dd8123 sb a3,2(s11) + 3bc06f62: 00354683 lbu a3,3(a0) + 3bc06f66: 00dd81a3 sb a3,3(s11) + 3bc06f6a: 41d5468b lrw a3,a0,t4,0 + 3bc06f6e: 00dda223 sw a3,4(s11) + 3bc06f72: 44b7c68b lrw a3,a5,a1,2 + 3bc06f76: 40df06b3 sub a3,t5,a3 + 3bc06f7a: 059a7663 bgeu s4,s9,3bc06fc6 + 3bc06f7e: 079ae563 bltu s5,s9,3bc06fe8 + 3bc06f82: 008d8513 addi a0,s11,8 + 3bc06f86: 01257e63 bgeu a0,s2,3bc06fa2 + 3bc06f8a: 8636 mv a2,a3 + 3bc06f8c: 87aa mv a5,a0 + 3bc06f8e: 7886458b ldia a1,(a2),8,0 + 3bc06f92: 7887d58b sdia a1,(a5),8,0 + 3bc06f96: ff27ece3 bltu a5,s2,3bc06f8e + 3bc06f9a: 40a907b3 sub a5,s2,a0 + 3bc06f9e: 96be add a3,a3,a5 + 3bc06fa0: 854a mv a0,s2 + 3bc06fa2: 4781 li a5,0 + 3bc06fa4: a821 j 3bc06fbc + 3bc06fa6: 86aa mv a3,a0 + 3bc06fa8: 7886c58b ldia a1,(a3),8,0 + 3bc06fac: 00bdb023 sd a1,0(s11) + 3bc06fb0: b7e9 j 3bc06f7a + 3bc06fb2: 80f6c60b lrbu a2,a3,a5,0 + 3bc06fb6: 00f5560b srb a2,a0,a5,0 + 3bc06fba: 0785 addi a5,a5,1 + 3bc06fbc: 00f50633 add a2,a0,a5 + 3bc06fc0: ff9669e3 bltu a2,s9,3bc06fb2 + 3bc06fc4: bb55 j 3bc06d78 + 3bc06fc6: 628c ld a1,0(a3) + 3bc06fc8: 00bdb423 sd a1,8(s11) + 3bc06fcc: 45c1 li a1,16 + 3bc06fce: dac5f5e3 bgeu a1,a2,3bc06d78 + 3bc06fd2: 010d8513 addi a0,s11,16 + 3bc06fd6: 00868613 addi a2,a3,8 + 3bc06fda: 7886478b ldia a5,(a2),8,0 + 3bc06fde: 7885578b sdia a5,(a0),8,0 + 3bc06fe2: ff956ce3 bltu a0,s9,3bc06fda + 3bc06fe6: bb49 j 3bc06d78 + 3bc06fe8: 41640533 sub a0,s0,s6 + 3bc06fec: fff54513 not a0,a0 + 3bc06ff0: 2501 sext.w a0,a0 + 3bc06ff2: b3a1 j 3bc06d3a + 3bc06ff4: 557d li a0,-1 + 3bc06ff6: 8082 ret + +000000003bc06ff8 : + 3bc06ff8: 883e mv a6,a5 + 3bc06ffa: e399 bnez a5,3bc07000 + 3bc06ffc: 80fff06f j 3bc0680a + 3bc07000: 00f708b3 add a7,a4,a5 + 3bc07004: 01159b63 bne a1,a7,3bc0701a + 3bc07008: 67c1 lui a5,0x10 + 3bc0700a: 17f9 addi a5,a5,-2 + 3bc0700c: 0107d463 bge a5,a6,3bc07014 + 3bc07010: a69ff06f j 3bc06a78 + 3bc07014: 8742 mv a4,a6 + 3bc07016: c6eff06f j 3bc06484 + 3bc0701a: cc9ff06f j 3bc06ce2 + +000000003bc0701e : + 3bc0701e: fed53513 sltiu a0,a0,-19 + 3bc07022: 00154513 xori a0,a0,1 + 3bc07026: 2501 sext.w a0,a0 + 3bc07028: 8082 ret + +000000003bc0702a : + 3bc0702a: e111 bnez a0,3bc0702e + 3bc0702c: 4511 li a0,4 + 3bc0702e: ffc5069b addiw a3,a0,-4 + 3bc07032: 470d li a4,3 + 3bc07034: 5579 li a0,-2 + 3bc07036: 00d76863 bltu a4,a3,3bc07046 + 3bc0703a: 00004717 auipc a4,0x4 + 3bc0703e: 43670713 addi a4,a4,1078 # 3bc0b470 + 3bc07042: 76d7450b lurd a0,a4,a3,3 + 3bc07046: 8082 ret + +000000003bc07048 : + 3bc07048: 715d addi sp,sp,-80 + 3bc0704a: f84a sd s2,48(sp) + 3bc0704c: e486 sd ra,72(sp) + 3bc0704e: e0a2 sd s0,64(sp) + 3bc07050: fc26 sd s1,56(sp) + 3bc07052: f44e sd s3,40(sp) + 3bc07054: f052 sd s4,32(sp) + 3bc07056: ec56 sd s5,24(sp) + 3bc07058: e85a sd s6,16(sp) + 3bc0705a: e45e sd s7,8(sp) + 3bc0705c: e062 sd s8,0(sp) + 3bc0705e: 4799 li a5,6 + 3bc07060: 5951 li s2,-12 + 3bc07062: 04c7f663 bgeu a5,a2,3bc070ae + 3bc07066: 84ae mv s1,a1 + 3bc07068: 8932 mv s2,a2 + 3bc0706a: 4581 li a1,0 + 3bc0706c: 02000613 li a2,32 + 3bc07070: 842a mv s0,a0 + 3bc07072: 9aff90ef jal ra,3bc00a20 + 3bc07076: 8526 mv a0,s1 + 3bc07078: be8ff0ef jal ra,3bc06460 + 3bc0707c: 2501 sext.w a0,a0 + 3bc0707e: 184d37b7 lui a5,0x184d3 + 3bc07082: ff057713 andi a4,a0,-16 + 3bc07086: a5078793 addi a5,a5,-1456 # 184d2a50 + 3bc0708a: 02f71f63 bne a4,a5,3bc070c8 + 3bc0708e: 4785 li a5,1 + 3bc07090: c45c sw a5,12(s0) + 3bc07092: 0e840793 addi a5,s0,232 + 3bc07096: 00f49963 bne s1,a5,3bc070a8 + 3bc0709a: 47a1 li a5,8 + 3bc0709c: e83c sd a5,80(s0) + 3bc0709e: 05243423 sd s2,72(s0) + 3bc070a2: 47b5 li a5,13 + 3bc070a4: d05c sw a5,36(s0) + 3bc070a6: a021 j 3bc070ae + 3bc070a8: 47b1 li a5,12 + 3bc070aa: d05c sw a5,36(s0) + 3bc070ac: 4911 li s2,4 + 3bc070ae: 60a6 ld ra,72(sp) + 3bc070b0: 6406 ld s0,64(sp) + 3bc070b2: 74e2 ld s1,56(sp) + 3bc070b4: 79a2 ld s3,40(sp) + 3bc070b6: 7a02 ld s4,32(sp) + 3bc070b8: 6ae2 ld s5,24(sp) + 3bc070ba: 6b42 ld s6,16(sp) + 3bc070bc: 6ba2 ld s7,8(sp) + 3bc070be: 6c02 ld s8,0(sp) + 3bc070c0: 854a mv a0,s2 + 3bc070c2: 7942 ld s2,48(sp) + 3bc070c4: 6161 addi sp,sp,80 + 3bc070c6: 8082 ret + 3bc070c8: 184d27b7 lui a5,0x184d2 + 3bc070cc: 20478793 addi a5,a5,516 # 184d2204 + 3bc070d0: 10f51863 bne a0,a5,3bc071e0 + 3bc070d4: 00042623 sw zero,12(s0) + 3bc070d8: 0044c783 lbu a5,4(s1) + 3bc070dc: 0417b70b extu a4,a5,1,1 + 3bc070e0: 00078b1b sext.w s6,a5 + 3bc070e4: 0067d693 srli a3,a5,0x6 + 3bc070e8: 0e071e63 bnez a4,3bc071e4 + 3bc070ec: 4705 li a4,1 + 3bc070ee: 0ee69d63 bne a3,a4,3bc071e8 + 3bc070f2: 0c3b3c0b extu s8,s6,3,3 + 3bc070f6: 49bd li s3,15 + 3bc070f8: 000c1363 bnez s8,3bc070fe + 3bc070fc: 499d li s3,7 + 3bc070fe: 0017fa13 andi s4,a5,1 + 3bc07102: 0549998b addsl s3,s3,s4,2 + 3bc07106: 03397063 bgeu s2,s3,3bc07126 + 3bc0710a: 0e840513 addi a0,s0,232 + 3bc0710e: 00a48663 beq s1,a0,3bc0711a + 3bc07112: 864a mv a2,s2 + 3bc07114: 85a6 mv a1,s1 + 3bc07116: 965f90ef jal ra,3bc00a7a + 3bc0711a: 05243423 sd s2,72(s0) + 3bc0711e: 05343823 sd s3,80(s0) + 3bc07122: 4785 li a5,1 + 3bc07124: b741 j 3bc070a4 + 3bc07126: 0054c783 lbu a5,5(s1) + 3bc0712a: 5961 li s2,-8 + 3bc0712c: fc77b70b extu a4,a5,63,7 + 3bc07130: 8c47bb8b extu s7,a5,35,4 + 3bc07134: ff2d bnez a4,3bc070ae + 3bc07136: 004bf713 andi a4,s7,4 + 3bc0713a: 5979 li s2,-2 + 3bc0713c: db2d beqz a4,3bc070ae + 3bc0713e: 8bbd andi a5,a5,15 + 3bc07140: 5961 li s2,-8 + 3bc07142: f7b5 bnez a5,3bc070ae + 3bc07144: ffb98a93 addi s5,s3,-5 + 3bc07148: 4601 li a2,0 + 3bc0714a: 85d6 mv a1,s5 + 3bc0714c: 00448513 addi a0,s1,4 + 3bc07150: 425000ef jal ra,3bc07d74 + 3bc07154: 013487b3 add a5,s1,s3 + 3bc07158: fff7c783 lbu a5,-1(a5) + 3bc0715c: 3c85350b extu a0,a0,15,8 + 3bc07160: 593d li s2,-17 + 3bc07162: f4a796e3 bne a5,a0,3bc070ae + 3bc07166: 145b378b extu a5,s6,5,5 + 3bc0716a: 007bf513 andi a0,s7,7 + 3bc0716e: c05c sw a5,4(s0) + 3bc07170: 104b378b extu a5,s6,4,4 + 3bc07174: 082b3b0b extu s6,s6,2,2 + 3bc07178: cc5c sw a5,28(s0) + 3bc0717a: 01642423 sw s6,8(s0) + 3bc0717e: c008 sw a0,0(s0) + 3bc07180: eabff0ef jal ra,3bc0702a + 3bc07184: f808 sd a0,48(s0) + 3bc07186: 040c0263 beqz s8,3bc071ca + 3bc0718a: 0074c783 lbu a5,7(s1) + 3bc0718e: 0084c703 lbu a4,8(s1) + 3bc07192: 0064c683 lbu a3,6(s1) + 3bc07196: 07a2 slli a5,a5,0x8 + 3bc07198: 0742 slli a4,a4,0x10 + 3bc0719a: 97ba add a5,a5,a4 + 3bc0719c: 0094c703 lbu a4,9(s1) + 3bc071a0: 97b6 add a5,a5,a3 + 3bc071a2: 0762 slli a4,a4,0x18 + 3bc071a4: 97ba add a5,a5,a4 + 3bc071a6: 00a4c703 lbu a4,10(s1) + 3bc071aa: 1702 slli a4,a4,0x20 + 3bc071ac: 97ba add a5,a5,a4 + 3bc071ae: 00b4c703 lbu a4,11(s1) + 3bc071b2: 1722 slli a4,a4,0x28 + 3bc071b4: 973e add a4,a4,a5 + 3bc071b6: 00c4c783 lbu a5,12(s1) + 3bc071ba: 17c2 slli a5,a5,0x30 + 3bc071bc: 973e add a4,a4,a5 + 3bc071be: 00d4c783 lbu a5,13(s1) + 3bc071c2: 17e2 slli a5,a5,0x38 + 3bc071c4: 97ba add a5,a5,a4 + 3bc071c6: e81c sd a5,16(s0) + 3bc071c8: f41c sd a5,40(s0) + 3bc071ca: 000a0763 beqz s4,3bc071d8 + 3bc071ce: 01548533 add a0,s1,s5 + 3bc071d2: a8eff0ef jal ra,3bc06460 + 3bc071d6: cc08 sw a0,24(s0) + 3bc071d8: 4789 li a5,2 + 3bc071da: d05c sw a5,36(s0) + 3bc071dc: 894e mv s2,s3 + 3bc071de: bdc1 j 3bc070ae + 3bc071e0: 594d li s2,-13 + 3bc071e2: b5f1 j 3bc070ae + 3bc071e4: 5961 li s2,-8 + 3bc071e6: b5e1 j 3bc070ae + 3bc071e8: 5969 li s2,-6 + 3bc071ea: b5d1 j 3bc070ae + +000000003bc071ec : + 3bc071ec: 1101 addi sp,sp,-32 + 3bc071ee: e822 sd s0,16(sp) + 3bc071f0: e426 sd s1,8(sp) + 3bc071f2: 842a mv s0,a0 + 3bc071f4: 84ae mv s1,a1 + 3bc071f6: 4505 li a0,1 + 3bc071f8: 10000593 li a1,256 + 3bc071fc: ec06 sd ra,24(sp) + 3bc071fe: bf8fa0ef jal ra,3bc015f6 + 3bc07202: e909 bnez a0,3bc07214 + 3bc07204: 00043023 sd zero,0(s0) + 3bc07208: 555d li a0,-9 + 3bc0720a: 60e2 ld ra,24(sp) + 3bc0720c: 6442 ld s0,16(sp) + 3bc0720e: 64a2 ld s1,8(sp) + 3bc07210: 6105 addi sp,sp,32 + 3bc07212: 8082 ret + 3bc07214: d104 sw s1,32(a0) + 3bc07216: e008 sd a0,0(s0) + 3bc07218: 4501 li a0,0 + 3bc0721a: bfc5 j 3bc0720a + +000000003bc0721c : + 3bc0721c: 7131 addi sp,sp,-192 + 3bc0721e: ed4e sd s3,152(sp) + 3bc07220: 00073983 ld s3,0(a4) + 3bc07224: e556 sd s5,136(sp) + 3bc07226: e15a sd s6,128(sp) + 3bc07228: f0ea sd s10,96(sp) + 3bc0722a: ecee sd s11,88(sp) + 3bc0722c: fd06 sd ra,184(sp) + 3bc0722e: f922 sd s0,176(sp) + 3bc07230: f526 sd s1,168(sp) + 3bc07232: f14a sd s2,160(sp) + 3bc07234: e952 sd s4,144(sp) + 3bc07236: fcde sd s7,120(sp) + 3bc07238: f8e2 sd s8,112(sp) + 3bc0723a: f4e6 sd s9,104(sp) + 3bc0723c: fad1560b sdd a2,a3,(sp),1,4 + 3bc07240: e43e sd a5,8(sp) + 3bc07242: 8d2a mv s10,a0 + 3bc07244: 8aae mv s5,a1 + 3bc07246: 8dba mv s11,a4 + 3bc07248: 99b6 add s3,s3,a3 + 3bc0724a: 4b01 li s6,0 + 3bc0724c: c581 beqz a1,3bc07254 + 3bc0724e: 00063b03 ld s6,0(a2) + 3bc07252: 9b2e add s6,s6,a1 + 3bc07254: 0080 addi s0,sp,64 + 3bc07256: 4641 li a2,16 + 3bc07258: 4581 li a1,0 + 3bc0725a: 8522 mv a0,s0 + 3bc0725c: fc4f90ef jal ra,3bc00a20 + 3bc07260: 67a2 ld a5,8(sp) + 3bc07262: 000db023 sd zero,0(s11) + 3bc07266: 6ce2 ld s9,24(sp) + 3bc07268: 40f4178b mveqz a5,s0,a5 + 3bc0726c: e43e sd a5,8(sp) + 3bc0726e: 67c2 ld a5,16(sp) + 3bc07270: 8956 mv s2,s5 + 3bc07272: 4485 li s1,1 + 3bc07274: 0007b023 sd zero,0(a5) + 3bc07278: 0ecd0793 addi a5,s10,236 + 3bc0727c: f43e sd a5,40(sp) + 3bc0727e: 0b8d0793 addi a5,s10,184 + 3bc07282: 4a05 li s4,1 + 3bc07284: 0e8d0b93 addi s7,s10,232 + 3bc07288: 088d0c13 addi s8,s10,136 + 3bc0728c: f03e sd a5,32(sp) + 3bc0728e: 080a1b63 bnez s4,3bc07324 + 3bc07292: 004d2783 lw a5,4(s10) + 3bc07296: ebbd bnez a5,3bc0730c + 3bc07298: 060d3583 ld a1,96(s10) + 3bc0729c: 058d3503 ld a0,88(s10) + 3bc072a0: 06a58663 beq a1,a0,3bc0730c + 3bc072a4: c5a5 beqz a1,3bc0730c + 3bc072a6: 67a2 ld a5,8(sp) + 3bc072a8: 439c lw a5,0(a5) + 3bc072aa: e3ad bnez a5,3bc0730c + 3bc072ac: 024d2703 lw a4,36(s10) + 3bc072b0: 479d li a5,7 + 3bc072b2: ffe7069b addiw a3,a4,-2 + 3bc072b6: 04d7eb63 bltu a5,a3,3bc0730c + 3bc072ba: 46a5 li a3,9 + 3bc072bc: 068d3783 ld a5,104(s10) + 3bc072c0: 6ed71c63 bne a4,a3,3bc079b8 + 3bc072c4: 080d3683 ld a3,128(s10) + 3bc072c8: 070d3403 ld s0,112(s10) + 3bc072cc: 078d3703 ld a4,120(s10) + 3bc072d0: 8f95 sub a5,a5,a3 + 3bc072d2: 66c1 lui a3,0x10 + 3bc072d4: 8c09 sub s0,s0,a0 + 3bc072d6: 4601 li a2,0 + 3bc072d8: 00e6ea63 bltu a3,a4,3bc072ec + 3bc072dc: 40e68633 sub a2,a3,a4 + 3bc072e0: 00c43733 sltu a4,s0,a2 + 3bc072e4: 00174713 xori a4,a4,1 + 3bc072e8: 40e4160b mveqz a2,s0,a4 + 3bc072ec: 8f91 sub a5,a5,a2 + 3bc072ee: 40c40733 sub a4,s0,a2 + 3bc072f2: 95be add a1,a1,a5 + 3bc072f4: 953a add a0,a0,a4 + 3bc072f6: f84f90ef jal ra,3bc00a7a + 3bc072fa: 058d3783 ld a5,88(s10) + 3bc072fe: 06fd3023 sd a5,96(s10) + 3bc07302: 080d3783 ld a5,128(s10) + 3bc07306: 943e add s0,s0,a5 + 3bc07308: 068d3423 sd s0,104(s10) + 3bc0730c: 67e2 ld a5,24(sp) + 3bc0730e: 41590933 sub s2,s2,s5 + 3bc07312: 8526 mv a0,s1 + 3bc07314: 40fc88b3 sub a7,s9,a5 + 3bc07318: 67c2 ld a5,16(sp) + 3bc0731a: 011db023 sd a7,0(s11) + 3bc0731e: 0127b023 sd s2,0(a5) + 3bc07322: a055 j 3bc073c6 + 3bc07324: 024d2783 lw a5,36(s10) + 3bc07328: 4739 li a4,14 + 3bc0732a: f6f762e3 bltu a4,a5,3bc0728e + 3bc0732e: 024d6783 lwu a5,36(s10) + 3bc07332: 00004717 auipc a4,0x4 + 3bc07336: 0fe70713 addi a4,a4,254 # 3bc0b430 + 3bc0733a: 44f7478b lrw a5,a4,a5,2 + 3bc0733e: 97ba add a5,a5,a4 + 3bc07340: 8782 jr a5 + 3bc07342: 41998633 sub a2,s3,s9 + 3bc07346: 47c9 li a5,18 + 3bc07348: 00c7fd63 bgeu a5,a2,3bc07362 + 3bc0734c: 85e6 mv a1,s9 + 3bc0734e: 856a mv a0,s10 + 3bc07350: cf9ff0ef jal ra,3bc07048 + 3bc07354: 57b1 li a5,-20 + 3bc07356: 06a7e863 bltu a5,a0,3bc073c6 + 3bc0735a: 00ac8433 add s0,s9,a0 + 3bc0735e: 8ca2 mv s9,s0 + 3bc07360: b73d j 3bc0728e + 3bc07362: 040d3423 sd zero,72(s10) + 3bc07366: 673c8d63 beq s9,s3,3bc079e0 + 3bc0736a: 479d li a5,7 + 3bc0736c: 04fd3823 sd a5,80(s10) + 3bc07370: 4785 li a5,1 + 3bc07372: 02fd2223 sw a5,36(s10) + 3bc07376: 048d3503 ld a0,72(s10) + 3bc0737a: 050d3403 ld s0,80(s10) + 3bc0737e: 41998633 sub a2,s3,s9 + 3bc07382: 85e6 mv a1,s9 + 3bc07384: 8c09 sub s0,s0,a0 + 3bc07386: 008637b3 sltu a5,a2,s0 + 3bc0738a: 0017c793 xori a5,a5,1 + 3bc0738e: 40f6140b mveqz s0,a2,a5 + 3bc07392: 8622 mv a2,s0 + 3bc07394: 955e add a0,a0,s7 + 3bc07396: ee4f90ef jal ra,3bc00a7a + 3bc0739a: 048d3783 ld a5,72(s10) + 3bc0739e: 050d3603 ld a2,80(s10) + 3bc073a2: 97a2 add a5,a5,s0 + 3bc073a4: 04fd3423 sd a5,72(s10) + 3bc073a8: 9466 add s0,s0,s9 + 3bc073aa: 00c7f763 bgeu a5,a2,3bc073b8 + 3bc073ae: 0611 addi a2,a2,4 + 3bc073b0: 40f604b3 sub s1,a2,a5 + 3bc073b4: 4a01 li s4,0 + 3bc073b6: b765 j 3bc0735e + 3bc073b8: 85de mv a1,s7 + 3bc073ba: 856a mv a0,s10 + 3bc073bc: c8dff0ef jal ra,3bc07048 + 3bc073c0: 57b1 li a5,-20 + 3bc073c2: f8a7fee3 bgeu a5,a0,3bc0735e + 3bc073c6: 70ea ld ra,184(sp) + 3bc073c8: 744a ld s0,176(sp) + 3bc073ca: 74aa ld s1,168(sp) + 3bc073cc: 790a ld s2,160(sp) + 3bc073ce: 69ea ld s3,152(sp) + 3bc073d0: 6a4a ld s4,144(sp) + 3bc073d2: 6aaa ld s5,136(sp) + 3bc073d4: 6b0a ld s6,128(sp) + 3bc073d6: 7be6 ld s7,120(sp) + 3bc073d8: 7c46 ld s8,112(sp) + 3bc073da: 7ca6 ld s9,104(sp) + 3bc073dc: 7d06 ld s10,96(sp) + 3bc073de: 6de6 ld s11,88(sp) + 3bc073e0: 6129 addi sp,sp,192 + 3bc073e2: 8082 ret + 3bc073e4: 008d2783 lw a5,8(s10) + 3bc073e8: c789 beqz a5,3bc073f2 + 3bc073ea: 4581 li a1,0 + 3bc073ec: 8562 mv a0,s8 + 3bc073ee: 34d000ef jal ra,3bc07f3a + 3bc073f2: 004d2403 lw s0,4(s10) + 3bc073f6: 030d3783 ld a5,48(s10) + 3bc073fa: 00143413 seqz s0,s0 + 3bc073fe: 0446 slli s0,s0,0x11 + 3bc07400: 943e add s0,s0,a5 + 3bc07402: 038d3783 ld a5,56(s10) + 3bc07406: 0287fe63 bgeu a5,s0,3bc07442 + 3bc0740a: 040d3503 ld a0,64(s10) + 3bc0740e: 020d3c23 sd zero,56(s10) + 3bc07412: a0cfa0ef jal ra,3bc0161e + 3bc07416: 030d3503 ld a0,48(s10) + 3bc0741a: 0511 addi a0,a0,4 + 3bc0741c: 9d4fa0ef jal ra,3bc015f0 + 3bc07420: 04ad3023 sd a0,64(s10) + 3bc07424: e119 bnez a0,3bc0742a + 3bc07426: 555d li a0,-9 + 3bc07428: bf79 j 3bc073c6 + 3bc0742a: 058d3503 ld a0,88(s10) + 3bc0742e: 9f0fa0ef jal ra,3bc0161e + 3bc07432: 8522 mv a0,s0 + 3bc07434: 9bcfa0ef jal ra,3bc015f0 + 3bc07438: 04ad3c23 sd a0,88(s10) + 3bc0743c: d56d beqz a0,3bc07426 + 3bc0743e: 028d3c23 sd s0,56(s10) + 3bc07442: 058d3783 ld a5,88(s10) + 3bc07446: 040d3423 sd zero,72(s10) + 3bc0744a: 040d3823 sd zero,80(s10) + 3bc0744e: 06fd3823 sd a5,112(s10) + 3bc07452: 478d li a5,3 + 3bc07454: 080d3023 sd zero,128(s10) + 3bc07458: 060d3c23 sd zero,120(s10) + 3bc0745c: 02fd2223 sw a5,36(s10) + 3bc07460: 419987b3 sub a5,s3,s9 + 3bc07464: 470d li a4,3 + 3bc07466: 00f77b63 bgeu a4,a5,3bc0747c + 3bc0746a: 024d2703 lw a4,36(s10) + 3bc0746e: 4791 li a5,4 + 3bc07470: 004c8413 addi s0,s9,4 + 3bc07474: 04f71e63 bne a4,a5,3bc074d0 + 3bc07478: 8ca2 mv s9,s0 + 3bc0747a: a031 j 3bc07486 + 3bc0747c: 4791 li a5,4 + 3bc0747e: 040d3423 sd zero,72(s10) + 3bc07482: 02fd2223 sw a5,36(s10) + 3bc07486: 048d3683 ld a3,72(s10) + 3bc0748a: 4711 li a4,4 + 3bc0748c: 040d3503 ld a0,64(s10) + 3bc07490: 40d705b3 sub a1,a4,a3 + 3bc07494: 41998633 sub a2,s3,s9 + 3bc07498: 00c5b7b3 sltu a5,a1,a2 + 3bc0749c: 0017c793 xori a5,a5,1 + 3bc074a0: 40f5960b mveqz a2,a1,a5 + 3bc074a4: 9536 add a0,a0,a3 + 3bc074a6: 85e6 mv a1,s9 + 3bc074a8: f832 sd a2,48(sp) + 3bc074aa: dd0f90ef jal ra,3bc00a7a + 3bc074ae: 048d3783 ld a5,72(s10) + 3bc074b2: 7642 ld a2,48(sp) + 3bc074b4: 00cc8433 add s0,s9,a2 + 3bc074b8: 963e add a2,a2,a5 + 3bc074ba: 04cd3423 sd a2,72(s10) + 3bc074be: 478d li a5,3 + 3bc074c0: 00c7e663 bltu a5,a2,3bc074cc + 3bc074c4: 4711 li a4,4 + 3bc074c6: 40c704b3 sub s1,a4,a2 + 3bc074ca: b5ed j 3bc073b4 + 3bc074cc: 040d3c83 ld s9,64(s10) + 3bc074d0: 8566 mv a0,s9 + 3bc074d2: f8ffe0ef jal ra,3bc06460 + 3bc074d6: 2501 sext.w a0,a0 + 3bc074d8: 47a9 li a5,10 + 3bc074da: c50d beqz a0,3bc07504 + 3bc074dc: 030d3683 ld a3,48(s10) + 3bc074e0: 7805378b extu a5,a0,30,0 + 3bc074e4: 7c07b70b extu a4,a5,31,0 + 3bc074e8: 4ef6ee63 bltu a3,a5,3bc079e4 + 3bc074ec: 01cd2783 lw a5,28(s10) + 3bc074f0: 00055d63 bgez a0,3bc0750a + 3bc074f4: 04ed3823 sd a4,80(s10) + 3bc074f8: c789 beqz a5,3bc07502 + 3bc074fa: 7502 ld a0,32(sp) + 3bc074fc: 4581 li a1,0 + 3bc074fe: 23d000ef jal ra,3bc07f3a + 3bc07502: 4795 li a5,5 + 3bc07504: 02fd2223 sw a5,36(s10) + 3bc07508: bd99 j 3bc0735e + 3bc0750a: 02079693 slli a3,a5,0x20 + 3bc0750e: 01e6d793 srli a5,a3,0x1e + 3bc07512: 97ba add a5,a5,a4 + 3bc07514: 471d li a4,7 + 3bc07516: 04fd3823 sd a5,80(s10) + 3bc0751a: 02ed2223 sw a4,36(s10) + 3bc0751e: 01690463 beq s2,s6,3bc07526 + 3bc07522: e3341ee3 bne s0,s3,3bc0735e + 3bc07526: 00478493 addi s1,a5,4 + 3bc0752a: b569 j 3bc073b4 + 3bc0752c: 4601 li a2,0 + 3bc0752e: 06090e63 beqz s2,3bc075aa + 3bc07532: 41998733 sub a4,s3,s9 + 3bc07536: 412b0633 sub a2,s6,s2 + 3bc0753a: 00c737b3 sltu a5,a4,a2 + 3bc0753e: 0017c793 xori a5,a5,1 + 3bc07542: 40f7160b mveqz a2,a4,a5 + 3bc07546: 050d3703 ld a4,80(s10) + 3bc0754a: 85e6 mv a1,s9 + 3bc0754c: 854a mv a0,s2 + 3bc0754e: 00c737b3 sltu a5,a4,a2 + 3bc07552: 0017c793 xori a5,a5,1 + 3bc07556: 40f7160b mveqz a2,a4,a5 + 3bc0755a: f832 sd a2,48(sp) + 3bc0755c: d1ef90ef jal ra,3bc00a7a + 3bc07560: 01cd2783 lw a5,28(s10) + 3bc07564: 7642 ld a2,48(sp) + 3bc07566: c791 beqz a5,3bc07572 + 3bc07568: 7502 ld a0,32(sp) + 3bc0756a: 85e6 mv a1,s9 + 3bc0756c: 225000ef jal ra,3bc07f90 + 3bc07570: 7642 ld a2,48(sp) + 3bc07572: 008d2783 lw a5,8(s10) + 3bc07576: c799 beqz a5,3bc07584 + 3bc07578: 85e6 mv a1,s9 + 3bc0757a: 8562 mv a0,s8 + 3bc0757c: f832 sd a2,48(sp) + 3bc0757e: 213000ef jal ra,3bc07f90 + 3bc07582: 7642 ld a2,48(sp) + 3bc07584: 010d3783 ld a5,16(s10) + 3bc07588: c791 beqz a5,3bc07594 + 3bc0758a: 028d3783 ld a5,40(s10) + 3bc0758e: 8f91 sub a5,a5,a2 + 3bc07590: 02fd3423 sd a5,40(s10) + 3bc07594: 004d2783 lw a5,4(s10) + 3bc07598: eb89 bnez a5,3bc075aa + 3bc0759a: 4701 li a4,0 + 3bc0759c: 86d6 mv a3,s5 + 3bc0759e: 85ca mv a1,s2 + 3bc075a0: 856a mv a0,s10 + 3bc075a2: f832 sd a2,48(sp) + 3bc075a4: 956ff0ef jal ra,3bc066fa + 3bc075a8: 7642 ld a2,48(sp) + 3bc075aa: 050d3783 ld a5,80(s10) + 3bc075ae: 01cd2703 lw a4,28(s10) + 3bc075b2: 00cc8433 add s0,s9,a2 + 3bc075b6: 9932 add s2,s2,a2 + 3bc075b8: 00c79863 bne a5,a2,3bc075c8 + 3bc075bc: 28070d63 beqz a4,3bc07856 + 3bc075c0: 040d3423 sd zero,72(s10) + 3bc075c4: 4799 li a5,6 + 3bc075c6: bf3d j 3bc07504 + 3bc075c8: 40c78633 sub a2,a5,a2 + 3bc075cc: 04cd3823 sd a2,80(s10) + 3bc075d0: 00e03733 snez a4,a4 + 3bc075d4: 0611 addi a2,a2,4 + 3bc075d6: 04e6148b addsl s1,a2,a4,2 + 3bc075da: bbe9 j 3bc073b4 + 3bc075dc: 419987b3 sub a5,s3,s9 + 3bc075e0: 470d li a4,3 + 3bc075e2: 048d3503 ld a0,72(s10) + 3bc075e6: 02f75363 bge a4,a5,3bc0760c + 3bc075ea: e10d bnez a0,3bc0760c + 3bc075ec: 004c8413 addi s0,s9,4 + 3bc075f0: 8766 mv a4,s9 + 3bc075f2: 853a mv a0,a4 + 3bc075f4: e6dfe0ef jal ra,3bc06460 + 3bc075f8: 00050c9b sext.w s9,a0 + 3bc075fc: 7502 ld a0,32(sp) + 3bc075fe: 365000ef jal ra,3bc08162 + 3bc07602: 2501 sext.w a0,a0 + 3bc07604: 24ac8963 beq s9,a0,3bc07856 + 3bc07608: 5565 li a0,-7 + 3bc0760a: bb75 j 3bc073c6 + 3bc0760c: 4411 li s0,4 + 3bc0760e: 8c09 sub s0,s0,a0 + 3bc07610: 0087b733 sltu a4,a5,s0 + 3bc07614: 00174713 xori a4,a4,1 + 3bc07618: 40e7940b mveqz s0,a5,a4 + 3bc0761c: 8622 mv a2,s0 + 3bc0761e: 85e6 mv a1,s9 + 3bc07620: 955e add a0,a0,s7 + 3bc07622: f85e sd s7,48(sp) + 3bc07624: c56f90ef jal ra,3bc00a7a + 3bc07628: 048d3783 ld a5,72(s10) + 3bc0762c: 468d li a3,3 + 3bc0762e: 7742 ld a4,48(sp) + 3bc07630: 97a2 add a5,a5,s0 + 3bc07632: 04fd3423 sd a5,72(s10) + 3bc07636: 9466 add s0,s0,s9 + 3bc07638: d6f6fee3 bgeu a3,a5,3bc073b4 + 3bc0763c: bf5d j 3bc075f2 + 3bc0763e: 050d3403 ld s0,80(s10) + 3bc07642: 419987b3 sub a5,s3,s9 + 3bc07646: 0087f963 bgeu a5,s0,3bc07658 + 3bc0764a: 47a1 li a5,8 + 3bc0764c: 040d3423 sd zero,72(s10) + 3bc07650: 02fd2223 sw a5,36(s10) + 3bc07654: 8466 mv s0,s9 + 3bc07656: b321 j 3bc0735e + 3bc07658: 9466 add s0,s0,s9 + 3bc0765a: 01cd2783 lw a5,28(s10) + 3bc0765e: 16079563 bnez a5,3bc077c8 + 3bc07662: 030d3683 ld a3,48(s10) + 3bc07666: 412b0633 sub a2,s6,s2 + 3bc0766a: 060d3703 ld a4,96(s10) + 3bc0766e: 068d3783 ld a5,104(s10) + 3bc07672: 18d67263 bgeu a2,a3,3bc077f6 + 3bc07676: 004d2683 lw a3,4(s10) + 3bc0767a: ea95 bnez a3,3bc076ae + 3bc0767c: 058d3683 ld a3,88(s10) + 3bc07680: 1cd71d63 bne a4,a3,3bc0785a + 3bc07684: 000206b7 lui a3,0x20 + 3bc07688: 00f6fc63 bgeu a3,a5,3bc076a0 + 3bc0768c: 75c1 lui a1,0xffff0 + 3bc0768e: 95be add a1,a1,a5 + 3bc07690: 6641 lui a2,0x10 + 3bc07692: 95ba add a1,a1,a4 + 3bc07694: 853a mv a0,a4 + 3bc07696: be4f90ef jal ra,3bc00a7a + 3bc0769a: 67c1 lui a5,0x10 + 3bc0769c: 06fd3423 sd a5,104(s10) + 3bc076a0: 058d3783 ld a5,88(s10) + 3bc076a4: 068d3703 ld a4,104(s10) + 3bc076a8: 97ba add a5,a5,a4 + 3bc076aa: 06fd3823 sd a5,112(s10) + 3bc076ae: 060d3703 ld a4,96(s10) + 3bc076b2: 068d3783 ld a5,104(s10) + 3bc076b6: cb09 beqz a4,3bc076c8 + 3bc076b8: 400006b7 lui a3,0x40000 + 3bc076bc: 00f6f663 bgeu a3,a5,3bc076c8 + 3bc076c0: 76c1 lui a3,0xffff0 + 3bc076c2: 97b6 add a5,a5,a3 + 3bc076c4: 973e add a4,a4,a5 + 3bc076c6: 67c1 lui a5,0x10 + 3bc076c8: 030d2683 lw a3,48(s10) + 3bc076cc: 050d2603 lw a2,80(s10) + 3bc076d0: 070d3583 ld a1,112(s10) + 3bc076d4: 8566 mv a0,s9 + 3bc076d6: 2781 sext.w a5,a5 + 3bc076d8: 921ff0ef jal ra,3bc06ff8 + 3bc076dc: 8caa mv s9,a0 + 3bc076de: 30054763 bltz a0,3bc079ec + 3bc076e2: 008d2783 lw a5,8(s10) + 3bc076e6: c799 beqz a5,3bc076f4 + 3bc076e8: 070d3583 ld a1,112(s10) + 3bc076ec: 862a mv a2,a0 + 3bc076ee: 8562 mv a0,s8 + 3bc076f0: 0a1000ef jal ra,3bc07f90 + 3bc076f4: 010d3783 ld a5,16(s10) + 3bc076f8: c799 beqz a5,3bc07706 + 3bc076fa: 028d3783 ld a5,40(s10) + 3bc076fe: 419787b3 sub a5,a5,s9 + 3bc07702: 02fd3423 sd a5,40(s10) + 3bc07706: 47a5 li a5,9 + 3bc07708: 079d3c23 sd s9,120(s10) + 3bc0770c: 080d3023 sd zero,128(s10) + 3bc07710: 02fd2223 sw a5,36(s10) + 3bc07714: 04090763 beqz s2,3bc07762 + 3bc07718: 080d3703 ld a4,128(s10) + 3bc0771c: 078d3603 ld a2,120(s10) + 3bc07720: 412b06b3 sub a3,s6,s2 + 3bc07724: 070d3583 ld a1,112(s10) + 3bc07728: 8e19 sub a2,a2,a4 + 3bc0772a: 00c6b7b3 sltu a5,a3,a2 + 3bc0772e: 0017c793 xori a5,a5,1 + 3bc07732: 42f6168b mvnez a3,a2,a5 + 3bc07736: 8636 mv a2,a3 + 3bc07738: 95ba add a1,a1,a4 + 3bc0773a: 854a mv a0,s2 + 3bc0773c: 8cb6 mv s9,a3 + 3bc0773e: b3cf90ef jal ra,3bc00a7a + 3bc07742: 004d2783 lw a5,4(s10) + 3bc07746: eb81 bnez a5,3bc07756 + 3bc07748: 4705 li a4,1 + 3bc0774a: 86d6 mv a3,s5 + 3bc0774c: 8666 mv a2,s9 + 3bc0774e: 85ca mv a1,s2 + 3bc07750: 856a mv a0,s10 + 3bc07752: fa9fe0ef jal ra,3bc066fa + 3bc07756: 080d3783 ld a5,128(s10) + 3bc0775a: 9966 add s2,s2,s9 + 3bc0775c: 97e6 add a5,a5,s9 + 3bc0775e: 08fd3023 sd a5,128(s10) + 3bc07762: 080d3703 ld a4,128(s10) + 3bc07766: 078d3783 ld a5,120(s10) + 3bc0776a: 0ef70663 beq a4,a5,3bc07856 + 3bc0776e: 4491 li s1,4 + 3bc07770: b191 j 3bc073b4 + 3bc07772: 048d3703 ld a4,72(s10) + 3bc07776: 050d3403 ld s0,80(s10) + 3bc0777a: 41998633 sub a2,s3,s9 + 3bc0777e: 040d3503 ld a0,64(s10) + 3bc07782: 8c19 sub s0,s0,a4 + 3bc07784: 008637b3 sltu a5,a2,s0 + 3bc07788: 0017c793 xori a5,a5,1 + 3bc0778c: 40f6140b mveqz s0,a2,a5 + 3bc07790: 8622 mv a2,s0 + 3bc07792: 953a add a0,a0,a4 + 3bc07794: 85e6 mv a1,s9 + 3bc07796: ae4f90ef jal ra,3bc00a7a + 3bc0779a: 048d3783 ld a5,72(s10) + 3bc0779e: 00f40733 add a4,s0,a5 + 3bc077a2: 050d3783 ld a5,80(s10) + 3bc077a6: 04ed3423 sd a4,72(s10) + 3bc077aa: 9466 add s0,s0,s9 + 3bc077ac: 00f77b63 bgeu a4,a5,3bc077c2 + 3bc077b0: 01cd2483 lw s1,28(s10) + 3bc077b4: 0791 addi a5,a5,4 + 3bc077b6: 8f99 sub a5,a5,a4 + 3bc077b8: 009034b3 snez s1,s1 + 3bc077bc: 0497948b addsl s1,a5,s1,2 + 3bc077c0: bed5 j 3bc073b4 + 3bc077c2: 040d3c83 ld s9,64(s10) + 3bc077c6: bd51 j 3bc0765a + 3bc077c8: 050d3583 ld a1,80(s10) + 3bc077cc: 15f1 addi a1,a1,-4 + 3bc077ce: 04bd3823 sd a1,80(s10) + 3bc077d2: 00bc8533 add a0,s9,a1 + 3bc077d6: fc2e sd a1,56(sp) + 3bc077d8: c89fe0ef jal ra,3bc06460 + 3bc077dc: 75e2 ld a1,56(sp) + 3bc077de: 0005079b sext.w a5,a0 + 3bc077e2: 4601 li a2,0 + 3bc077e4: 8566 mv a0,s9 + 3bc077e6: f83e sd a5,48(sp) + 3bc077e8: 58c000ef jal ra,3bc07d74 + 3bc077ec: 77c2 ld a5,48(sp) + 3bc077ee: 2501 sext.w a0,a0 + 3bc077f0: e6a789e3 beq a5,a0,3bc07662 + 3bc077f4: bd11 j 3bc07608 + 3bc077f6: cb09 beqz a4,3bc07808 + 3bc077f8: 40000637 lui a2,0x40000 + 3bc077fc: 00f67663 bgeu a2,a5,3bc07808 + 3bc07800: 75c1 lui a1,0xffff0 + 3bc07802: 97ae add a5,a5,a1 + 3bc07804: 973e add a4,a4,a5 + 3bc07806: 67c1 lui a5,0x10 + 3bc07808: 050d2603 lw a2,80(s10) + 3bc0780c: 8566 mv a0,s9 + 3bc0780e: 2781 sext.w a5,a5 + 3bc07810: 2681 sext.w a3,a3 + 3bc07812: 85ca mv a1,s2 + 3bc07814: fe4ff0ef jal ra,3bc06ff8 + 3bc07818: 8caa mv s9,a0 + 3bc0781a: 1c054763 bltz a0,3bc079e8 + 3bc0781e: 008d2783 lw a5,8(s10) + 3bc07822: c791 beqz a5,3bc0782e + 3bc07824: 862a mv a2,a0 + 3bc07826: 85ca mv a1,s2 + 3bc07828: 8562 mv a0,s8 + 3bc0782a: 766000ef jal ra,3bc07f90 + 3bc0782e: 010d3783 ld a5,16(s10) + 3bc07832: c799 beqz a5,3bc07840 + 3bc07834: 028d3783 ld a5,40(s10) + 3bc07838: 419787b3 sub a5,a5,s9 + 3bc0783c: 02fd3423 sd a5,40(s10) + 3bc07840: 004d2783 lw a5,4(s10) + 3bc07844: eb81 bnez a5,3bc07854 + 3bc07846: 4701 li a4,0 + 3bc07848: 86d6 mv a3,s5 + 3bc0784a: 8666 mv a2,s9 + 3bc0784c: 85ca mv a1,s2 + 3bc0784e: 856a mv a0,s10 + 3bc07850: eabfe0ef jal ra,3bc066fa + 3bc07854: 9966 add s2,s2,s9 + 3bc07856: 478d li a5,3 + 3bc07858: b175 j 3bc07504 + 3bc0785a: 6741 lui a4,0x10 + 3bc0785c: 00f77363 bgeu a4,a5,3bc07862 + 3bc07860: 67c1 lui a5,0x10 + 3bc07862: 97b6 add a5,a5,a3 + 3bc07864: b599 j 3bc076aa + 3bc07866: 8466 mv s0,s9 + 3bc07868: b575 j 3bc07714 + 3bc0786a: 028d3483 ld s1,40(s10) + 3bc0786e: 18049163 bnez s1,3bc079f0 + 3bc07872: 008d2a03 lw s4,8(s10) + 3bc07876: 000a1963 bnez s4,3bc07888 + 3bc0787a: 020d2223 sw zero,36(s10) + 3bc0787e: 060d3023 sd zero,96(s10) + 3bc07882: 060d3423 sd zero,104(s10) + 3bc07886: b3f9 j 3bc07654 + 3bc07888: 419987b3 sub a5,s3,s9 + 3bc0788c: 470d li a4,3 + 3bc0788e: 04f74a63 blt a4,a5,3bc078e2 + 3bc07892: 47ad li a5,11 + 3bc07894: 040d3423 sd zero,72(s10) + 3bc07898: 02fd2223 sw a5,36(s10) + 3bc0789c: 048d3703 ld a4,72(s10) + 3bc078a0: 4491 li s1,4 + 3bc078a2: 41998a33 sub s4,s3,s9 + 3bc078a6: 40e48633 sub a2,s1,a4 + 3bc078aa: 014637b3 sltu a5,a2,s4 + 3bc078ae: 040d3503 ld a0,64(s10) + 3bc078b2: 0017c793 xori a5,a5,1 + 3bc078b6: 40f61a0b mveqz s4,a2,a5 + 3bc078ba: 8652 mv a2,s4 + 3bc078bc: 85e6 mv a1,s9 + 3bc078be: 953a add a0,a0,a4 + 3bc078c0: 9baf90ef jal ra,3bc00a7a + 3bc078c4: 048d3603 ld a2,72(s10) + 3bc078c8: 014c8433 add s0,s9,s4 + 3bc078cc: 478d li a5,3 + 3bc078ce: 9a32 add s4,s4,a2 + 3bc078d0: 054d3423 sd s4,72(s10) + 3bc078d4: 414484b3 sub s1,s1,s4 + 3bc078d8: ad47fee3 bgeu a5,s4,3bc073b4 + 3bc078dc: 040d3c83 ld s9,64(s10) + 3bc078e0: a019 j 3bc078e6 + 3bc078e2: 004c8413 addi s0,s9,4 + 3bc078e6: 8566 mv a0,s9 + 3bc078e8: b79fe0ef jal ra,3bc06460 + 3bc078ec: 0005049b sext.w s1,a0 + 3bc078f0: 8562 mv a0,s8 + 3bc078f2: 071000ef jal ra,3bc08162 + 3bc078f6: 2501 sext.w a0,a0 + 3bc078f8: 0ea49e63 bne s1,a0,3bc079f4 + 3bc078fc: 020d2223 sw zero,36(s10) + 3bc07900: 060d3023 sd zero,96(s10) + 3bc07904: 060d3423 sd zero,104(s10) + 3bc07908: 4481 li s1,0 + 3bc0790a: b46d j 3bc073b4 + 3bc0790c: 419987b3 sub a5,s3,s9 + 3bc07910: 470d li a4,3 + 3bc07912: 004c8413 addi s0,s9,4 + 3bc07916: 04f74d63 blt a4,a5,3bc07970 + 3bc0791a: 4791 li a5,4 + 3bc0791c: 04fd3423 sd a5,72(s10) + 3bc07920: 47a1 li a5,8 + 3bc07922: 04fd3823 sd a5,80(s10) + 3bc07926: 47b5 li a5,13 + 3bc07928: 02fd2223 sw a5,36(s10) + 3bc0792c: 048d3503 ld a0,72(s10) + 3bc07930: 050d3603 ld a2,80(s10) + 3bc07934: 41998733 sub a4,s3,s9 + 3bc07938: 85e6 mv a1,s9 + 3bc0793a: 8e09 sub a2,a2,a0 + 3bc0793c: 00c737b3 sltu a5,a4,a2 + 3bc07940: 0017c793 xori a5,a5,1 + 3bc07944: 40f7160b mveqz a2,a4,a5 + 3bc07948: 955e add a0,a0,s7 + 3bc0794a: f832 sd a2,48(sp) + 3bc0794c: 92ef90ef jal ra,3bc00a7a + 3bc07950: 048d3783 ld a5,72(s10) + 3bc07954: 7642 ld a2,48(sp) + 3bc07956: 00cc8433 add s0,s9,a2 + 3bc0795a: 963e add a2,a2,a5 + 3bc0795c: 050d3783 ld a5,80(s10) + 3bc07960: 04cd3423 sd a2,72(s10) + 3bc07964: 00f67563 bgeu a2,a5,3bc0796e + 3bc07968: 40c784b3 sub s1,a5,a2 + 3bc0796c: b4a1 j 3bc073b4 + 3bc0796e: 7ca2 ld s9,40(sp) + 3bc07970: 8566 mv a0,s9 + 3bc07972: aeffe0ef jal ra,3bc06460 + 3bc07976: 7c05350b extu a0,a0,31,0 + 3bc0797a: 00ad3823 sd a0,16(s10) + 3bc0797e: 04ad3823 sd a0,80(s10) + 3bc07982: 47b9 li a5,14 + 3bc07984: b641 j 3bc07504 + 3bc07986: 050d3483 ld s1,80(s10) + 3bc0798a: 41998633 sub a2,s3,s9 + 3bc0798e: 4a01 li s4,0 + 3bc07990: 00c4b7b3 sltu a5,s1,a2 + 3bc07994: 0017c793 xori a5,a5,1 + 3bc07998: 40f4960b mveqz a2,s1,a5 + 3bc0799c: 8c91 sub s1,s1,a2 + 3bc0799e: 049d3823 sd s1,80(s10) + 3bc079a2: 00cc8433 add s0,s9,a2 + 3bc079a6: 9a049ce3 bnez s1,3bc0735e + 3bc079aa: 020d2223 sw zero,36(s10) + 3bc079ae: 060d3023 sd zero,96(s10) + 3bc079b2: 060d3423 sd zero,104(s10) + 3bc079b6: b265 j 3bc0735e + 3bc079b8: 6741 lui a4,0x10 + 3bc079ba: 843e mv s0,a5 + 3bc079bc: 00f77363 bgeu a4,a5,3bc079c2 + 3bc079c0: 6441 lui s0,0x10 + 3bc079c2: 8f81 sub a5,a5,s0 + 3bc079c4: 95be add a1,a1,a5 + 3bc079c6: 8622 mv a2,s0 + 3bc079c8: 8b2f90ef jal ra,3bc00a7a + 3bc079cc: 058d3783 ld a5,88(s10) + 3bc079d0: 068d3423 sd s0,104(s10) + 3bc079d4: 06fd3023 sd a5,96(s10) + 3bc079d8: 97a2 add a5,a5,s0 + 3bc079da: 06fd3823 sd a5,112(s10) + 3bc079de: b23d j 3bc0730c + 3bc079e0: 451d li a0,7 + 3bc079e2: b2d5 j 3bc073c6 + 3bc079e4: 5579 li a0,-2 + 3bc079e6: b2c5 j 3bc073c6 + 3bc079e8: 557d li a0,-1 + 3bc079ea: baf1 j 3bc073c6 + 3bc079ec: 5541 li a0,-16 + 3bc079ee: bae1 j 3bc073c6 + 3bc079f0: 5549 li a0,-14 + 3bc079f2: bad1 j 3bc073c6 + 3bc079f4: 5539 li a0,-18 + 3bc079f6: bac1 j 3bc073c6 + +000000003bc079f8 : + 3bc079f8: 00f5579b srliw a5,a0,0xf + 3bc079fc: 8d3d xor a0,a0,a5 + 3bc079fe: 85ebd7b7 lui a5,0x85ebd + 3bc07a02: a777879b addiw a5,a5,-1417 + 3bc07a06: 02a7853b mulw a0,a5,a0 + 3bc07a0a: 00d5579b srliw a5,a0,0xd + 3bc07a0e: 8fa9 xor a5,a5,a0 + 3bc07a10: c2b2b537 lui a0,0xc2b2b + 3bc07a14: e3d5051b addiw a0,a0,-451 + 3bc07a18: 02a787bb mulw a5,a5,a0 + 3bc07a1c: 0107d51b srliw a0,a5,0x10 + 3bc07a20: 8d3d xor a0,a0,a5 + 3bc07a22: 8082 ret + +000000003bc07a24 : + 3bc07a24: 1101 addi sp,sp,-32 + 3bc07a26: 85aa mv a1,a0 + 3bc07a28: 4611 li a2,4 + 3bc07a2a: 0068 addi a0,sp,12 + 3bc07a2c: ec06 sd ra,24(sp) + 3bc07a2e: 84cf90ef jal ra,3bc00a7a + 3bc07a32: 60e2 ld ra,24(sp) + 3bc07a34: 4532 lw a0,12(sp) + 3bc07a36: 6105 addi sp,sp,32 + 3bc07a38: 8082 ret + +000000003bc07a3a : + 3bc07a3a: 1101 addi sp,sp,-32 + 3bc07a3c: 8a3d andi a2,a2,15 + 3bc07a3e: e822 sd s0,16(sp) + 3bc07a40: ec06 sd ra,24(sp) + 3bc07a42: e426 sd s1,8(sp) + 3bc07a44: e04a sd s2,0(sp) + 3bc07a46: 167d addi a2,a2,-1 + 3bc07a48: 47b9 li a5,14 + 3bc07a4a: 842a mv s0,a0 + 3bc07a4c: 30c7ec63 bltu a5,a2,3bc07d64 + 3bc07a50: 00004717 auipc a4,0x4 + 3bc07a54: a8070713 addi a4,a4,-1408 # 3bc0b4d0 + 3bc07a58: 44c7478b lrw a5,a4,a2,2 + 3bc07a5c: 84ae mv s1,a1 + 3bc07a5e: 8936 mv s2,a3 + 3bc07a60: 97ba add a5,a5,a4 + 3bc07a62: 8782 jr a5 + 3bc07a64: 4785 li a5,1 + 3bc07a66: 08f69a63 bne a3,a5,3bc07afa + 3bc07a6a: 852e mv a0,a1 + 3bc07a6c: fb9ff0ef jal ra,3bc07a24 + 3bc07a70: 0005079b sext.w a5,a0 + 3bc07a74: c2b2b737 lui a4,0xc2b2b + 3bc07a78: e3d7071b addiw a4,a4,-451 + 3bc07a7c: 24f7140b mulaw s0,a4,a5 + 3bc07a80: 27d4f7b7 lui a5,0x27d4f + 3bc07a84: b2f7879b addiw a5,a5,-1233 + 3bc07a88: 0491 addi s1,s1,4 + 3bc07a8a: 14f4140b srriw s0,s0,15 + 3bc07a8e: 02f4043b mulw s0,s0,a5 + 3bc07a92: 4785 li a5,1 + 3bc07a94: 06f91563 bne s2,a5,3bc07afe + 3bc07a98: 8526 mv a0,s1 + 3bc07a9a: f8bff0ef jal ra,3bc07a24 + 3bc07a9e: 0005079b sext.w a5,a0 + 3bc07aa2: c2b2b737 lui a4,0xc2b2b + 3bc07aa6: e3d7071b addiw a4,a4,-451 + 3bc07aaa: 0491 addi s1,s1,4 + 3bc07aac: 24f7140b mulaw s0,a4,a5 + 3bc07ab0: 27d4f7b7 lui a5,0x27d4f + 3bc07ab4: b2f7879b addiw a5,a5,-1233 + 3bc07ab8: 14f4140b srriw s0,s0,15 + 3bc07abc: 02f4043b mulw s0,s0,a5 + 3bc07ac0: 4785 li a5,1 + 3bc07ac2: 04f91063 bne s2,a5,3bc07b02 + 3bc07ac6: 8526 mv a0,s1 + 3bc07ac8: f5dff0ef jal ra,3bc07a24 + 3bc07acc: 0005079b sext.w a5,a0 + 3bc07ad0: c2b2b737 lui a4,0xc2b2b + 3bc07ad4: e3d7071b addiw a4,a4,-451 + 3bc07ad8: 24f7140b mulaw s0,a4,a5 + 3bc07adc: 27d4f7b7 lui a5,0x27d4f + 3bc07ae0: b2f7879b addiw a5,a5,-1233 + 3bc07ae4: 14f4150b srriw a0,s0,15 + 3bc07ae8: 02a7853b mulw a0,a5,a0 + 3bc07aec: 6442 ld s0,16(sp) + 3bc07aee: 60e2 ld ra,24(sp) + 3bc07af0: 64a2 ld s1,8(sp) + 3bc07af2: 6902 ld s2,0(sp) + 3bc07af4: 6105 addi sp,sp,32 + 3bc07af6: f03ff06f j 3bc079f8 + 3bc07afa: 419c lw a5,0(a1) + 3bc07afc: bfa5 j 3bc07a74 + 3bc07afe: 409c lw a5,0(s1) + 3bc07b00: b74d j 3bc07aa2 + 3bc07b02: 409c lw a5,0(s1) + 3bc07b04: b7f1 j 3bc07ad0 + 3bc07b06: 4785 li a5,1 + 3bc07b08: 0af69263 bne a3,a5,3bc07bac + 3bc07b0c: 852e mv a0,a1 + 3bc07b0e: f17ff0ef jal ra,3bc07a24 + 3bc07b12: 0005079b sext.w a5,a0 + 3bc07b16: c2b2b737 lui a4,0xc2b2b + 3bc07b1a: e3d7071b addiw a4,a4,-451 + 3bc07b1e: 24f7140b mulaw s0,a4,a5 + 3bc07b22: 27d4f7b7 lui a5,0x27d4f + 3bc07b26: b2f7879b addiw a5,a5,-1233 + 3bc07b2a: 0491 addi s1,s1,4 + 3bc07b2c: 14f4140b srriw s0,s0,15 + 3bc07b30: 02f4043b mulw s0,s0,a5 + 3bc07b34: 4785 li a5,1 + 3bc07b36: 06f91d63 bne s2,a5,3bc07bb0 + 3bc07b3a: 8526 mv a0,s1 + 3bc07b3c: ee9ff0ef jal ra,3bc07a24 + 3bc07b40: 0005079b sext.w a5,a0 + 3bc07b44: c2b2b737 lui a4,0xc2b2b + 3bc07b48: e3d7071b addiw a4,a4,-451 + 3bc07b4c: 0491 addi s1,s1,4 + 3bc07b4e: 24f7140b mulaw s0,a4,a5 + 3bc07b52: 27d4f7b7 lui a5,0x27d4f + 3bc07b56: b2f7879b addiw a5,a5,-1233 + 3bc07b5a: 14f4140b srriw s0,s0,15 + 3bc07b5e: 02f4043b mulw s0,s0,a5 + 3bc07b62: 4785 li a5,1 + 3bc07b64: 04f91863 bne s2,a5,3bc07bb4 + 3bc07b68: 8526 mv a0,s1 + 3bc07b6a: ebbff0ef jal ra,3bc07a24 + 3bc07b6e: 0005079b sext.w a5,a0 + 3bc07b72: c2b2b737 lui a4,0xc2b2b + 3bc07b76: e3d7071b addiw a4,a4,-451 + 3bc07b7a: 16566537 lui a0,0x16566 + 3bc07b7e: 7b15051b addiw a0,a0,1969 + 3bc07b82: 24f7140b mulaw s0,a4,a5 + 3bc07b86: 0044c783 lbu a5,4(s1) + 3bc07b8a: 27d4f737 lui a4,0x27d4f + 3bc07b8e: b2f7071b addiw a4,a4,-1233 + 3bc07b92: 02a787bb mulw a5,a5,a0 + 3bc07b96: 14f4140b srriw s0,s0,15 + 3bc07b9a: 9e378537 lui a0,0x9e378 + 3bc07b9e: 9b15051b addiw a0,a0,-1615 + 3bc07ba2: 24e4178b mulaw a5,s0,a4 + 3bc07ba6: 1557978b srriw a5,a5,21 + 3bc07baa: bf3d j 3bc07ae8 + 3bc07bac: 419c lw a5,0(a1) + 3bc07bae: b7a5 j 3bc07b16 + 3bc07bb0: 409c lw a5,0(s1) + 3bc07bb2: bf49 j 3bc07b44 + 3bc07bb4: 409c lw a5,0(s1) + 3bc07bb6: bf75 j 3bc07b72 + 3bc07bb8: 4785 li a5,1 + 3bc07bba: 0af69a63 bne a3,a5,3bc07c6e + 3bc07bbe: 852e mv a0,a1 + 3bc07bc0: e65ff0ef jal ra,3bc07a24 + 3bc07bc4: 0005079b sext.w a5,a0 + 3bc07bc8: c2b2b737 lui a4,0xc2b2b + 3bc07bcc: e3d7071b addiw a4,a4,-451 + 3bc07bd0: 24f7140b mulaw s0,a4,a5 + 3bc07bd4: 27d4f7b7 lui a5,0x27d4f + 3bc07bd8: b2f7879b addiw a5,a5,-1233 + 3bc07bdc: 0491 addi s1,s1,4 + 3bc07bde: 14f4140b srriw s0,s0,15 + 3bc07be2: 02f4043b mulw s0,s0,a5 + 3bc07be6: 4785 li a5,1 + 3bc07be8: 08f91563 bne s2,a5,3bc07c72 + 3bc07bec: 8526 mv a0,s1 + 3bc07bee: e37ff0ef jal ra,3bc07a24 + 3bc07bf2: 0005079b sext.w a5,a0 + 3bc07bf6: c2b2b737 lui a4,0xc2b2b + 3bc07bfa: e3d7071b addiw a4,a4,-451 + 3bc07bfe: 0491 addi s1,s1,4 + 3bc07c00: 24f7140b mulaw s0,a4,a5 + 3bc07c04: 27d4f7b7 lui a5,0x27d4f + 3bc07c08: b2f7879b addiw a5,a5,-1233 + 3bc07c0c: 14f4140b srriw s0,s0,15 + 3bc07c10: 02f4043b mulw s0,s0,a5 + 3bc07c14: 4785 li a5,1 + 3bc07c16: 06f91063 bne s2,a5,3bc07c76 + 3bc07c1a: 8526 mv a0,s1 + 3bc07c1c: e09ff0ef jal ra,3bc07a24 + 3bc07c20: 0005079b sext.w a5,a0 + 3bc07c24: c2b2b737 lui a4,0xc2b2b + 3bc07c28: e3d7071b addiw a4,a4,-451 + 3bc07c2c: 9e378537 lui a0,0x9e378 + 3bc07c30: 9b15051b addiw a0,a0,-1615 + 3bc07c34: 24f7140b mulaw s0,a4,a5 + 3bc07c38: 0044c703 lbu a4,4(s1) + 3bc07c3c: 165667b7 lui a5,0x16566 + 3bc07c40: 7b17869b addiw a3,a5,1969 + 3bc07c44: 27d4f7b7 lui a5,0x27d4f + 3bc07c48: b2f7879b addiw a5,a5,-1233 + 3bc07c4c: 02d7073b mulw a4,a4,a3 + 3bc07c50: 14f4140b srriw s0,s0,15 + 3bc07c54: 24f4170b mulaw a4,s0,a5 + 3bc07c58: 0054c783 lbu a5,5(s1) + 3bc07c5c: 02d787bb mulw a5,a5,a3 + 3bc07c60: 1557170b srriw a4,a4,21 + 3bc07c64: 24a7178b mulaw a5,a4,a0 + 3bc07c68: 1557978b srriw a5,a5,21 + 3bc07c6c: bdb5 j 3bc07ae8 + 3bc07c6e: 419c lw a5,0(a1) + 3bc07c70: bfa1 j 3bc07bc8 + 3bc07c72: 409c lw a5,0(s1) + 3bc07c74: b749 j 3bc07bf6 + 3bc07c76: 409c lw a5,0(s1) + 3bc07c78: b775 j 3bc07c24 + 3bc07c7a: 4785 li a5,1 + 3bc07c7c: 0ef69663 bne a3,a5,3bc07d68 + 3bc07c80: 852e mv a0,a1 + 3bc07c82: da3ff0ef jal ra,3bc07a24 + 3bc07c86: 0005079b sext.w a5,a0 + 3bc07c8a: c2b2b737 lui a4,0xc2b2b + 3bc07c8e: e3d7071b addiw a4,a4,-451 + 3bc07c92: 24f7140b mulaw s0,a4,a5 + 3bc07c96: 27d4f7b7 lui a5,0x27d4f + 3bc07c9a: b2f7879b addiw a5,a5,-1233 + 3bc07c9e: 0491 addi s1,s1,4 + 3bc07ca0: 14f4140b srriw s0,s0,15 + 3bc07ca4: 02f4043b mulw s0,s0,a5 + 3bc07ca8: 4785 li a5,1 + 3bc07caa: 0cf91163 bne s2,a5,3bc07d6c + 3bc07cae: 8526 mv a0,s1 + 3bc07cb0: d75ff0ef jal ra,3bc07a24 + 3bc07cb4: 0005079b sext.w a5,a0 + 3bc07cb8: c2b2b737 lui a4,0xc2b2b + 3bc07cbc: e3d7071b addiw a4,a4,-451 + 3bc07cc0: 0491 addi s1,s1,4 + 3bc07cc2: 24f7140b mulaw s0,a4,a5 + 3bc07cc6: 27d4f7b7 lui a5,0x27d4f + 3bc07cca: b2f7879b addiw a5,a5,-1233 + 3bc07cce: 14f4140b srriw s0,s0,15 + 3bc07cd2: 02f4043b mulw s0,s0,a5 + 3bc07cd6: 4785 li a5,1 + 3bc07cd8: 08f91c63 bne s2,a5,3bc07d70 + 3bc07cdc: 8526 mv a0,s1 + 3bc07cde: d47ff0ef jal ra,3bc07a24 + 3bc07ce2: 0005079b sext.w a5,a0 + 3bc07ce6: c2b2b737 lui a4,0xc2b2b + 3bc07cea: e3d7071b addiw a4,a4,-451 + 3bc07cee: 0491 addi s1,s1,4 + 3bc07cf0: 24f7140b mulaw s0,a4,a5 + 3bc07cf4: 27d4f7b7 lui a5,0x27d4f + 3bc07cf8: b2f7879b addiw a5,a5,-1233 + 3bc07cfc: 14f4140b srriw s0,s0,15 + 3bc07d00: 02f4043b mulw s0,s0,a5 + 3bc07d04: 9814c70b lbuia a4,(s1),1,0 + 3bc07d08: 165667b7 lui a5,0x16566 + 3bc07d0c: 7b17879b addiw a5,a5,1969 + 3bc07d10: 24f7140b mulaw s0,a4,a5 + 3bc07d14: 9e3787b7 lui a5,0x9e378 + 3bc07d18: 9b17879b addiw a5,a5,-1615 + 3bc07d1c: 1554140b srriw s0,s0,21 + 3bc07d20: 02f4043b mulw s0,s0,a5 + 3bc07d24: 9814c70b lbuia a4,(s1),1,0 + 3bc07d28: 165667b7 lui a5,0x16566 + 3bc07d2c: 7b17879b addiw a5,a5,1969 + 3bc07d30: 24f7140b mulaw s0,a4,a5 + 3bc07d34: 9e3787b7 lui a5,0x9e378 + 3bc07d38: 9b17879b addiw a5,a5,-1615 + 3bc07d3c: 1554140b srriw s0,s0,21 + 3bc07d40: 02f4043b mulw s0,s0,a5 + 3bc07d44: 0004c703 lbu a4,0(s1) + 3bc07d48: 165667b7 lui a5,0x16566 + 3bc07d4c: 7b17879b addiw a5,a5,1969 + 3bc07d50: 24f7140b mulaw s0,a4,a5 + 3bc07d54: 9e3787b7 lui a5,0x9e378 + 3bc07d58: 9b17879b addiw a5,a5,-1615 + 3bc07d5c: 1554140b srriw s0,s0,21 + 3bc07d60: 02f4043b mulw s0,s0,a5 + 3bc07d64: 8522 mv a0,s0 + 3bc07d66: b359 j 3bc07aec + 3bc07d68: 419c lw a5,0(a1) + 3bc07d6a: b705 j 3bc07c8a + 3bc07d6c: 409c lw a5,0(s1) + 3bc07d6e: b7a9 j 3bc07cb8 + 3bc07d70: 409c lw a5,0(s1) + 3bc07d72: bf95 j 3bc07ce6 + +000000003bc07d74 : + 3bc07d74: 711d addi sp,sp,-96 + 3bc07d76: e8a2 sd s0,80(sp) + 3bc07d78: e0ca sd s2,64(sp) + 3bc07d7a: fc4e sd s3,56(sp) + 3bc07d7c: ec86 sd ra,88(sp) + 3bc07d7e: e4a6 sd s1,72(sp) + 3bc07d80: f852 sd s4,48(sp) + 3bc07d82: f456 sd s5,40(sp) + 3bc07d84: f05a sd s6,32(sp) + 3bc07d86: ec5e sd s7,24(sp) + 3bc07d88: e862 sd s8,16(sp) + 3bc07d8a: e466 sd s9,8(sp) + 3bc07d8c: 00357793 andi a5,a0,3 + 3bc07d90: 892a mv s2,a0 + 3bc07d92: 89ae mv s3,a1 + 3bc07d94: 8432 mv s0,a2 + 3bc07d96: eff1 bnez a5,3bc07e72 + 3bc07d98: 47bd li a5,15 + 3bc07d9a: 0cb7f663 bgeu a5,a1,3bc07e66 + 3bc07d9e: 242347b7 lui a5,0x24234 + 3bc07da2: ff158813 addi a6,a1,-15 # fffffffffffefff1 <__BL2_END__+0xffffffffc43dc7e1> + 3bc07da6: 4287879b addiw a5,a5,1064 + 3bc07daa: 982a add a6,a6,a0 + 3bc07dac: 9fb1 addw a5,a5,a2 + 3bc07dae: 61c88537 lui a0,0x61c88 + 3bc07db2: 85ebd637 lui a2,0x85ebd + 3bc07db6: a776061b addiw a2,a2,-1417 + 3bc07dba: 64f5051b addiw a0,a0,1615 + 3bc07dbe: 9e3785b7 lui a1,0x9e378 + 3bc07dc2: 0086073b addw a4,a2,s0 + 3bc07dc6: 9d21 addw a0,a0,s0 + 3bc07dc8: 86ca mv a3,s2 + 3bc07dca: 9b15859b addiw a1,a1,-1615 + 3bc07dce: 0006a883 lw a7,0(a3) # ffffffffffff0000 <__BL2_END__+0xffffffffc43dc7f0> + 3bc07dd2: 24c8978b mulaw a5,a7,a2 + 3bc07dd6: 0046a883 lw a7,4(a3) + 3bc07dda: 24c8970b mulaw a4,a7,a2 + 3bc07dde: 0086a883 lw a7,8(a3) + 3bc07de2: 1537978b srriw a5,a5,19 + 3bc07de6: 24c8940b mulaw s0,a7,a2 + 3bc07dea: 00c6a883 lw a7,12(a3) + 3bc07dee: 1537170b srriw a4,a4,19 + 3bc07df2: 06c1 addi a3,a3,16 + 3bc07df4: 24c8950b mulaw a0,a7,a2 + 3bc07df8: 1534140b srriw s0,s0,19 + 3bc07dfc: 1535150b srriw a0,a0,19 + 3bc07e00: 02b787bb mulw a5,a5,a1 + 3bc07e04: 02b7073b mulw a4,a4,a1 + 3bc07e08: 02b4043b mulw s0,s0,a1 + 3bc07e0c: 02b5053b mulw a0,a0,a1 + 3bc07e10: fb06efe3 bltu a3,a6,3bc07dce + 3bc07e14: 00190593 addi a1,s2,1 + 3bc07e18: 46c1 li a3,16 + 3bc07e1a: 00b86663 bltu a6,a1,3bc07e26 + 3bc07e1e: ff098693 addi a3,s3,-16 + 3bc07e22: 9ac1 andi a3,a3,-16 + 3bc07e24: 06c1 addi a3,a3,16 + 3bc07e26: 15f7978b srriw a5,a5,31 + 3bc07e2a: 1597170b srriw a4,a4,25 + 3bc07e2e: 9fb9 addw a5,a5,a4 + 3bc07e30: 1544140b srriw s0,s0,20 + 3bc07e34: 9fa1 addw a5,a5,s0 + 3bc07e36: 14e5150b srriw a0,a0,14 + 3bc07e3a: 9936 add s2,s2,a3 + 3bc07e3c: 9d3d addw a0,a0,a5 + 3bc07e3e: 4681 li a3,0 + 3bc07e40: 6446 ld s0,80(sp) + 3bc07e42: 60e6 ld ra,88(sp) + 3bc07e44: 64a6 ld s1,72(sp) + 3bc07e46: 7a42 ld s4,48(sp) + 3bc07e48: 7aa2 ld s5,40(sp) + 3bc07e4a: 7b02 ld s6,32(sp) + 3bc07e4c: 6be2 ld s7,24(sp) + 3bc07e4e: 6c42 ld s8,16(sp) + 3bc07e50: 6ca2 ld s9,8(sp) + 3bc07e52: 00f9f613 andi a2,s3,15 + 3bc07e56: 85ca mv a1,s2 + 3bc07e58: 00a9853b addw a0,s3,a0 + 3bc07e5c: 6906 ld s2,64(sp) + 3bc07e5e: 79e2 ld s3,56(sp) + 3bc07e60: 6125 addi sp,sp,96 + 3bc07e62: bd9ff06f j 3bc07a3a + 3bc07e66: 16566537 lui a0,0x16566 + 3bc07e6a: 7b15051b addiw a0,a0,1969 + 3bc07e6e: 9d31 addw a0,a0,a2 + 3bc07e70: b7f9 j 3bc07e3e + 3bc07e72: 47bd li a5,15 + 3bc07e74: 0ab7fe63 bgeu a5,a1,3bc07f30 + 3bc07e78: 242344b7 lui s1,0x24234 + 3bc07e7c: 85ebdab7 lui s5,0x85ebd + 3bc07e80: 61c887b7 lui a5,0x61c88 + 3bc07e84: ff158c93 addi s9,a1,-15 # ffffffff9e377ff1 <__BL2_END__+0xffffffff627647e1> + 3bc07e88: 4284849b addiw s1,s1,1064 + 3bc07e8c: a77a8a9b addiw s5,s5,-1417 + 3bc07e90: 64f7879b addiw a5,a5,1615 + 3bc07e94: 9e378b37 lui s6,0x9e378 + 3bc07e98: 9caa add s9,s9,a0 + 3bc07e9a: 9cb1 addw s1,s1,a2 + 3bc07e9c: 00ca8c3b addw s8,s5,a2 + 3bc07ea0: 00c78bbb addw s7,a5,a2 + 3bc07ea4: 8a2a mv s4,a0 + 3bc07ea6: 9b1b0b1b addiw s6,s6,-1615 + 3bc07eaa: 8552 mv a0,s4 + 3bc07eac: b79ff0ef jal ra,3bc07a24 + 3bc07eb0: 24aa948b mulaw s1,s5,a0 + 3bc07eb4: 004a0513 addi a0,s4,4 + 3bc07eb8: b6dff0ef jal ra,3bc07a24 + 3bc07ebc: 8762 mv a4,s8 + 3bc07ebe: 24aa970b mulaw a4,s5,a0 + 3bc07ec2: 008a0513 addi a0,s4,8 + 3bc07ec6: 1534948b srriw s1,s1,19 + 3bc07eca: 1537170b srriw a4,a4,19 + 3bc07ece: 03670c3b mulw s8,a4,s6 + 3bc07ed2: b53ff0ef jal ra,3bc07a24 + 3bc07ed6: 24aa940b mulaw s0,s5,a0 + 3bc07eda: 00ca0513 addi a0,s4,12 + 3bc07ede: 0a41 addi s4,s4,16 + 3bc07ee0: 1534160b srriw a2,s0,19 + 3bc07ee4: 0366043b mulw s0,a2,s6 + 3bc07ee8: b3dff0ef jal ra,3bc07a24 + 3bc07eec: 87de mv a5,s7 + 3bc07eee: 24aa978b mulaw a5,s5,a0 + 3bc07ef2: 1537978b srriw a5,a5,19 + 3bc07ef6: 036484bb mulw s1,s1,s6 + 3bc07efa: 03678bbb mulw s7,a5,s6 + 3bc07efe: fb9a66e3 bltu s4,s9,3bc07eaa + 3bc07f02: 00190713 addi a4,s2,1 + 3bc07f06: 47c1 li a5,16 + 3bc07f08: 00ece663 bltu s9,a4,3bc07f14 + 3bc07f0c: ff098793 addi a5,s3,-16 + 3bc07f10: 9bc1 andi a5,a5,-16 + 3bc07f12: 07c1 addi a5,a5,16 + 3bc07f14: 159c150b srriw a0,s8,25 + 3bc07f18: 15f4948b srriw s1,s1,31 + 3bc07f1c: 9ca9 addw s1,s1,a0 + 3bc07f1e: 1544150b srriw a0,s0,20 + 3bc07f22: 993e add s2,s2,a5 + 3bc07f24: 9d25 addw a0,a0,s1 + 3bc07f26: 14eb940b srriw s0,s7,14 + 3bc07f2a: 9d21 addw a0,a0,s0 + 3bc07f2c: 4685 li a3,1 + 3bc07f2e: bf09 j 3bc07e40 + 3bc07f30: 16566537 lui a0,0x16566 + 3bc07f34: 7b15051b addiw a0,a0,1969 + 3bc07f38: bfcd j 3bc07f2a + +000000003bc07f3a : + 3bc07f3a: 715d addi sp,sp,-80 + 3bc07f3c: e0a2 sd s0,64(sp) + 3bc07f3e: fc26 sd s1,56(sp) + 3bc07f40: 842e mv s0,a1 + 3bc07f42: 84aa mv s1,a0 + 3bc07f44: 03000613 li a2,48 + 3bc07f48: 4581 li a1,0 + 3bc07f4a: 850a mv a0,sp + 3bc07f4c: e486 sd ra,72(sp) + 3bc07f4e: ad3f80ef jal ra,3bc00a20 + 3bc07f52: 242347b7 lui a5,0x24234 + 3bc07f56: 4287879b addiw a5,a5,1064 + 3bc07f5a: 9fa1 addw a5,a5,s0 + 3bc07f5c: c43e sw a5,8(sp) + 3bc07f5e: 85ebd7b7 lui a5,0x85ebd + 3bc07f62: a777879b addiw a5,a5,-1417 + 3bc07f66: 9fa1 addw a5,a5,s0 + 3bc07f68: c63e sw a5,12(sp) + 3bc07f6a: 61c887b7 lui a5,0x61c88 + 3bc07f6e: 64f7879b addiw a5,a5,1615 + 3bc07f72: c822 sw s0,16(sp) + 3bc07f74: 858a mv a1,sp + 3bc07f76: 9c3d addw s0,s0,a5 + 3bc07f78: 8526 mv a0,s1 + 3bc07f7a: 02c00613 li a2,44 + 3bc07f7e: ca22 sw s0,20(sp) + 3bc07f80: afbf80ef jal ra,3bc00a7a + 3bc07f84: 60a6 ld ra,72(sp) + 3bc07f86: 6406 ld s0,64(sp) + 3bc07f88: 74e2 ld s1,56(sp) + 3bc07f8a: 4501 li a0,0 + 3bc07f8c: 6161 addi sp,sp,80 + 3bc07f8e: 8082 ret + +000000003bc07f90 : + 3bc07f90: 711d addi sp,sp,-96 + 3bc07f92: e0ca sd s2,64(sp) + 3bc07f94: ec86 sd ra,88(sp) + 3bc07f96: e8a2 sd s0,80(sp) + 3bc07f98: e4a6 sd s1,72(sp) + 3bc07f9a: fc4e sd s3,56(sp) + 3bc07f9c: f852 sd s4,48(sp) + 3bc07f9e: f456 sd s5,40(sp) + 3bc07fa0: f05a sd s6,32(sp) + 3bc07fa2: ec5e sd s7,24(sp) + 3bc07fa4: e862 sd s8,16(sp) + 3bc07fa6: e466 sd s9,8(sp) + 3bc07fa8: e06a sd s10,0(sp) + 3bc07faa: 4905 li s2,1 + 3bc07fac: c5b9 beqz a1,3bc07ffa + 3bc07fae: 4114 lw a3,0(a0) + 3bc07fb0: 842a mv s0,a0 + 3bc07fb2: 01063713 sltiu a4,a2,16 + 3bc07fb6: 00c6853b addw a0,a3,a2 + 3bc07fba: 483d li a6,15 + 3bc07fbc: 00a836b3 sltu a3,a6,a0 + 3bc07fc0: 00174713 xori a4,a4,1 + 3bc07fc4: 8f55 or a4,a4,a3 + 3bc07fc6: 4054 lw a3,4(s0) + 3bc07fc8: c008 sw a0,0(s0) + 3bc07fca: 84ae mv s1,a1 + 3bc07fcc: 8f55 or a4,a4,a3 + 3bc07fce: c058 sw a4,4(s0) + 3bc07fd0: 5418 lw a4,40(s0) + 3bc07fd2: 00c58d33 add s10,a1,a2 + 3bc07fd6: 0006091b sext.w s2,a2 + 3bc07fda: 7c07350b extu a0,a4,31,0 + 3bc07fde: 00a607b3 add a5,a2,a0 + 3bc07fe2: 02f86b63 bltu a6,a5,3bc08018 + 3bc07fe6: 01840793 addi a5,s0,24 # 10018 <__BSS_SIZE__+0xa408> + 3bc07fea: 953e add a0,a0,a5 + 3bc07fec: a8ff80ef jal ra,3bc00a7a + 3bc07ff0: 541c lw a5,40(s0) + 3bc07ff2: 012787bb addw a5,a5,s2 + 3bc07ff6: d41c sw a5,40(s0) + 3bc07ff8: 4901 li s2,0 + 3bc07ffa: 60e6 ld ra,88(sp) + 3bc07ffc: 6446 ld s0,80(sp) + 3bc07ffe: 64a6 ld s1,72(sp) + 3bc08000: 79e2 ld s3,56(sp) + 3bc08002: 7a42 ld s4,48(sp) + 3bc08004: 7aa2 ld s5,40(sp) + 3bc08006: 7b02 ld s6,32(sp) + 3bc08008: 6be2 ld s7,24(sp) + 3bc0800a: 6c42 ld s8,16(sp) + 3bc0800c: 6ca2 ld s9,8(sp) + 3bc0800e: 6d02 ld s10,0(sp) + 3bc08010: 854a mv a0,s2 + 3bc08012: 6906 ld s2,64(sp) + 3bc08014: 6125 addi sp,sp,96 + 3bc08016: 8082 ret + 3bc08018: c355 beqz a4,3bc080bc + 3bc0801a: 4b41 li s6,16 + 3bc0801c: 40eb063b subw a2,s6,a4 + 3bc08020: 01840993 addi s3,s0,24 + 3bc08024: 7c06360b extu a2,a2,31,0 + 3bc08028: 954e add a0,a0,s3 + 3bc0802a: a51f80ef jal ra,3bc00a7a + 3bc0802e: 00842903 lw s2,8(s0) + 3bc08032: 854e mv a0,s3 + 3bc08034: 85ebdab7 lui s5,0x85ebd + 3bc08038: 9edff0ef jal ra,3bc07a24 + 3bc0803c: a77a8a9b addiw s5,s5,-1417 + 3bc08040: 24aa990b mulaw s2,s5,a0 + 3bc08044: 9e378a37 lui s4,0x9e378 + 3bc08048: 9b1a0a1b addiw s4,s4,-1615 + 3bc0804c: 00c42983 lw s3,12(s0) + 3bc08050: 01c40513 addi a0,s0,28 + 3bc08054: 1539190b srriw s2,s2,19 + 3bc08058: 0349093b mulw s2,s2,s4 + 3bc0805c: 01242423 sw s2,8(s0) + 3bc08060: 9c5ff0ef jal ra,3bc07a24 + 3bc08064: 24aa998b mulaw s3,s5,a0 + 3bc08068: 02040513 addi a0,s0,32 + 3bc0806c: 1539998b srriw s3,s3,19 + 3bc08070: 034989bb mulw s3,s3,s4 + 3bc08074: 01342623 sw s3,12(s0) + 3bc08078: 01042983 lw s3,16(s0) + 3bc0807c: 9a9ff0ef jal ra,3bc07a24 + 3bc08080: 01442903 lw s2,20(s0) + 3bc08084: 24aa998b mulaw s3,s5,a0 + 3bc08088: 02440513 addi a0,s0,36 + 3bc0808c: 1539998b srriw s3,s3,19 + 3bc08090: 034989bb mulw s3,s3,s4 + 3bc08094: 01342823 sw s3,16(s0) + 3bc08098: 98dff0ef jal ra,3bc07a24 + 3bc0809c: 24aa990b mulaw s2,s5,a0 + 3bc080a0: 541c lw a5,40(s0) + 3bc080a2: 02042423 sw zero,40(s0) + 3bc080a6: 40fb0b3b subw s6,s6,a5 + 3bc080aa: 7c0b3b0b extu s6,s6,31,0 + 3bc080ae: 94da add s1,s1,s6 + 3bc080b0: 1539190b srriw s2,s2,19 + 3bc080b4: 0349093b mulw s2,s2,s4 + 3bc080b8: 01242a23 sw s2,20(s0) + 3bc080bc: ff0d0913 addi s2,s10,-16 + 3bc080c0: 08996363 bltu s2,s1,3bc08146 + 3bc080c4: e3844c8b lwd s9,s8,(s0),1,3 + 3bc080c8: e5444a8b lwd s5,s4,(s0),2,3 + 3bc080cc: 85ebdbb7 lui s7,0x85ebd + 3bc080d0: 9e378b37 lui s6,0x9e378 + 3bc080d4: 89a6 mv s3,s1 + 3bc080d6: a77b8b9b addiw s7,s7,-1417 + 3bc080da: 9b1b0b1b addiw s6,s6,-1615 + 3bc080de: 854e mv a0,s3 + 3bc080e0: 945ff0ef jal ra,3bc07a24 + 3bc080e4: 24ab9c8b mulaw s9,s7,a0 + 3bc080e8: 00498513 addi a0,s3,4 + 3bc080ec: 939ff0ef jal ra,3bc07a24 + 3bc080f0: 24ab9c0b mulaw s8,s7,a0 + 3bc080f4: 00898513 addi a0,s3,8 + 3bc080f8: 92dff0ef jal ra,3bc07a24 + 3bc080fc: 153c9c8b srriw s9,s9,19 + 3bc08100: 24ab9a8b mulaw s5,s7,a0 + 3bc08104: 00c98513 addi a0,s3,12 + 3bc08108: 91dff0ef jal ra,3bc07a24 + 3bc0810c: 153c1c0b srriw s8,s8,19 + 3bc08110: 09c1 addi s3,s3,16 + 3bc08112: 24ab9a0b mulaw s4,s7,a0 + 3bc08116: 153a9a8b srriw s5,s5,19 + 3bc0811a: 153a1a0b srriw s4,s4,19 + 3bc0811e: 036c8cbb mulw s9,s9,s6 + 3bc08122: 036c0c3b mulw s8,s8,s6 + 3bc08126: 036a8abb mulw s5,s5,s6 + 3bc0812a: 036a0a3b mulw s4,s4,s6 + 3bc0812e: fb3978e3 bgeu s2,s3,3bc080de + 3bc08132: 40990933 sub s2,s2,s1 + 3bc08136: ff097913 andi s2,s2,-16 + 3bc0813a: 0941 addi s2,s2,16 + 3bc0813c: 94ca add s1,s1,s2 + 3bc0813e: e3845c8b swd s9,s8,(s0),1,3 + 3bc08142: e5445a8b swd s5,s4,(s0),2,3 + 3bc08146: 4901 li s2,0 + 3bc08148: eba4f9e3 bgeu s1,s10,3bc07ffa + 3bc0814c: 409d0d33 sub s10,s10,s1 + 3bc08150: 866a mv a2,s10 + 3bc08152: 85a6 mv a1,s1 + 3bc08154: 01840513 addi a0,s0,24 + 3bc08158: 923f80ef jal ra,3bc00a7a + 3bc0815c: 03a42423 sw s10,40(s0) + 3bc08160: bd69 j 3bc07ffa + +000000003bc08162 : + 3bc08162: 415c lw a5,4(a0) + 3bc08164: 4918 lw a4,16(a0) + 3bc08166: cb8d beqz a5,3bc08198 + 3bc08168: 451c lw a5,8(a0) + 3bc0816a: 4554 lw a3,12(a0) + 3bc0816c: 1547170b srriw a4,a4,20 + 3bc08170: 15f7978b srriw a5,a5,31 + 3bc08174: 1596968b srriw a3,a3,25 + 3bc08178: 9fb5 addw a5,a5,a3 + 3bc0817a: 9fb9 addw a5,a5,a4 + 3bc0817c: 4958 lw a4,20(a0) + 3bc0817e: 14e7170b srriw a4,a4,14 + 3bc08182: 85aa mv a1,a0 + 3bc08184: 9fb9 addw a5,a5,a4 + 3bc08186: 5ac5c70b lwia a4,(a1),12,1 + 3bc0818a: 02856603 lwu a2,40(a0) # 16566028 + 3bc0818e: 4681 li a3,0 + 3bc08190: 00f7053b addw a0,a4,a5 + 3bc08194: 8a7ff06f j 3bc07a3a + 3bc08198: 165667b7 lui a5,0x16566 + 3bc0819c: 7b17879b addiw a5,a5,1969 + 3bc081a0: b7cd j 3bc08182 + +000000003bc081a2 : + 3bc081a2: 1141 addi sp,sp,-16 + 3bc081a4: e022 sd s0,0(sp) + 3bc081a6: 842a mv s0,a0 + 3bc081a8: 00003517 auipc a0,0x3 + 3bc081ac: 36850513 addi a0,a0,872 # 3bc0b510 + 3bc081b0: e406 sd ra,8(sp) + 3bc081b2: 9a6f80ef jal ra,3bc00358 + 3bc081b6: 400c lw a1,0(s0) + 3bc081b8: 00003517 auipc a0,0x3 + 3bc081bc: 36850513 addi a0,a0,872 # 3bc0b520 + 3bc081c0: 998f80ef jal ra,3bc00358 + 3bc081c4: 012000ef jal ra,3bc081d6 + 3bc081c8: 296000ef jal ra,3bc0845e + 3bc081cc: 60a2 ld ra,8(sp) + 3bc081ce: 6402 ld s0,0(sp) + 3bc081d0: 4501 li a0,0 + 3bc081d2: 0141 addi sp,sp,16 + 3bc081d4: 8082 ret + +000000003bc081d6 : + 3bc081d6: 030007b7 lui a5,0x3000 + 3bc081da: 43cc lw a1,4(a5) + 3bc081dc: 7139 addi sp,sp,-64 + 3bc081de: 030507b7 lui a5,0x3050 + 3bc081e2: 79c5b58b extu a1,a1,30,28 + 3bc081e6: 00003517 auipc a0,0x3 + 3bc081ea: 35250513 addi a0,a0,850 # 3bc0b538 + 3bc081ee: f822 sd s0,48(sp) + 3bc081f0: f426 sd s1,40(sp) + 3bc081f2: f04a sd s2,32(sp) + 3bc081f4: ec4e sd s3,24(sp) + 3bc081f6: fc06 sd ra,56(sp) + 3bc081f8: 1087a983 lw s3,264(a5) # 3050108 <__BSS_SIZE__+0x304a4f8> + 3bc081fc: e42e sd a1,8(sp) + 3bc081fe: 95af80ef jal ra,3bc00358 + 3bc08202: 65a2 ld a1,8(sp) + 3bc08204: 00003717 auipc a4,0x3 + 3bc08208: 41870713 addi a4,a4,1048 # 3bc0b61c + 3bc0820c: 0000b917 auipc s2,0xb + 3bc08210: 60290913 addi s2,s2,1538 # 3bc1380e + 3bc08214: 44b7478b lrw a5,a4,a1,2 + 3bc08218: 0000b497 auipc s1,0xb + 3bc0821c: 5f448493 addi s1,s1,1524 # 3bc1380c + 3bc08220: 0000b417 auipc s0,0xb + 3bc08224: 5ef40413 addi s0,s0,1519 # 3bc1380f + 3bc08228: 97ba add a5,a5,a4 + 3bc0822a: 8782 jr a5 + 3bc0822c: 478d li a5,3 + 3bc0822e: 4709 li a4,2 + 3bc08230: 00f90023 sb a5,0(s2) + 3bc08234: 00e48023 sb a4,0(s1) + 3bc08238: 00f40023 sb a5,0(s0) + 3bc0823c: a825 j 3bc08274 + 3bc0823e: 4791 li a5,4 + 3bc08240: 00f90023 sb a5,0(s2) + 3bc08244: 4785 li a5,1 + 3bc08246: 00f48023 sb a5,0(s1) + 3bc0824a: 478d li a5,3 + 3bc0824c: b7f5 j 3bc08238 + 3bc0824e: 00003517 auipc a0,0x3 + 3bc08252: 2fa50513 addi a0,a0,762 # 3bc0b548 + 3bc08256: 902f80ef jal ra,3bc00358 + 3bc0825a: 2981 sext.w s3,s3 + 3bc0825c: 6559b78b extu a5,s3,25,21 + 3bc08260: 00f90023 sb a5,0(s2) + 3bc08264: 71a9b78b extu a5,s3,28,26 + 3bc08268: 01d9d99b srliw s3,s3,0x1d + 3bc0826c: 00f48023 sb a5,0(s1) + 3bc08270: 01340023 sb s3,0(s0) + 3bc08274: 00044583 lbu a1,0(s0) + 3bc08278: 00094683 lbu a3,0(s2) + 3bc0827c: 0004c603 lbu a2,0(s1) + 3bc08280: 00003517 auipc a0,0x3 + 3bc08284: 2f050513 addi a0,a0,752 # 3bc0b570 + 3bc08288: 8d0f80ef jal ra,3bc00358 + 3bc0828c: 00094583 lbu a1,0(s2) + 3bc08290: 4725 li a4,9 + 3bc08292: fff5879b addiw a5,a1,-1 + 3bc08296: 0ff7f793 andi a5,a5,255 + 3bc0829a: 08f76963 bltu a4,a5,3bc0832c + 3bc0829e: 00003717 auipc a4,0x3 + 3bc082a2: 39e70713 addi a4,a4,926 # 3bc0b63c + 3bc082a6: 44f7478b lrw a5,a4,a5,2 + 3bc082aa: 0000b917 auipc s2,0xb + 3bc082ae: 56390913 addi s2,s2,1379 # 3bc1380d + 3bc082b2: 97ba add a5,a5,a4 + 3bc082b4: 8782 jr a5 + 3bc082b6: 478d li a5,3 + 3bc082b8: 00f90023 sb a5,0(s2) + 3bc082bc: 4789 li a5,2 + 3bc082be: 00f48023 sb a5,0(s1) + 3bc082c2: 4785 li a5,1 + 3bc082c4: bf95 j 3bc08238 + 3bc082c6: 4791 li a5,4 + 3bc082c8: 00f90023 sb a5,0(s2) + 3bc082cc: 4785 li a5,1 + 3bc082ce: 00f48023 sb a5,0(s1) + 3bc082d2: b79d j 3bc08238 + 3bc082d4: 00003517 auipc a0,0x3 + 3bc082d8: 27c50513 addi a0,a0,636 # 3bc0b550 + 3bc082dc: 87cf80ef jal ra,3bc00358 + 3bc082e0: bf51 j 3bc08274 + 3bc082e2: 00003517 auipc a0,0x3 + 3bc082e6: 29e50513 addi a0,a0,670 # 3bc0b580 + 3bc082ea: 86ef80ef jal ra,3bc00358 + 3bc082ee: 4785 li a5,1 + 3bc082f0: 00f90023 sb a5,0(s2) + 3bc082f4: 0004c583 lbu a1,0(s1) + 3bc082f8: 478d li a5,3 + 3bc082fa: 0cf58963 beq a1,a5,3bc083cc + 3bc082fe: 04b7e263 bltu a5,a1,3bc08342 + 3bc08302: 4485 li s1,1 + 3bc08304: 04958a63 beq a1,s1,3bc08358 + 3bc08308: 4789 li a5,2 + 3bc0830a: 0af58463 beq a1,a5,3bc083b2 + 3bc0830e: 00003517 auipc a0,0x3 + 3bc08312: 2ba50513 addi a0,a0,698 # 3bc0b5c8 + 3bc08316: 842f80ef jal ra,3bc00358 + 3bc0831a: a82d j 3bc08354 + 3bc0831c: 00003517 auipc a0,0x3 + 3bc08320: 26c50513 addi a0,a0,620 # 3bc0b588 + 3bc08324: 834f80ef jal ra,3bc00358 + 3bc08328: 4789 li a5,2 + 3bc0832a: b7d9 j 3bc082f0 + 3bc0832c: 00003517 auipc a0,0x3 + 3bc08330: 26450513 addi a0,a0,612 # 3bc0b590 + 3bc08334: 824f80ef jal ra,3bc00358 + 3bc08338: 0000b797 auipc a5,0xb + 3bc0833c: 4c078aa3 sb zero,1237(a5) # 3bc1380d + 3bc08340: bf55 j 3bc082f4 + 3bc08342: 4791 li a5,4 + 3bc08344: 00003517 auipc a0,0x3 + 3bc08348: 27c50513 addi a0,a0,636 # 3bc0b5c0 + 3bc0834c: fcf591e3 bne a1,a5,3bc0830e + 3bc08350: 808f80ef jal ra,3bc00358 + 3bc08354: 4781 li a5,0 + 3bc08356: a839 j 3bc08374 + 3bc08358: 00003517 auipc a0,0x3 + 3bc0835c: 25050513 addi a0,a0,592 # 3bc0b5a8 + 3bc08360: e42e sd a1,8(sp) + 3bc08362: ff7f70ef jal ra,3bc00358 + 3bc08366: 00044783 lbu a5,0(s0) + 3bc0836a: 65a2 ld a1,8(sp) + 3bc0836c: 06b78563 beq a5,a1,3bc083d6 + 3bc08370: 67e1 lui a5,0x18 + 3bc08372: 07ad addi a5,a5,11 + 3bc08374: 03000737 lui a4,0x3000 + 3bc08378: 08f72623 sw a5,140(a4) # 300008c <__BSS_SIZE__+0x2ffa47c> + 3bc0837c: 00044583 lbu a1,0(s0) + 3bc08380: 4789 li a5,2 + 3bc08382: 06f58c63 beq a1,a5,3bc083fa + 3bc08386: 478d li a5,3 + 3bc08388: 04f58d63 beq a1,a5,3bc083e2 + 3bc0838c: 4785 li a5,1 + 3bc0838e: 00003517 auipc a0,0x3 + 3bc08392: 25250513 addi a0,a0,594 # 3bc0b5e0 + 3bc08396: 04f58a63 beq a1,a5,3bc083ea + 3bc0839a: 7442 ld s0,48(sp) + 3bc0839c: 70e2 ld ra,56(sp) + 3bc0839e: 74a2 ld s1,40(sp) + 3bc083a0: 7902 ld s2,32(sp) + 3bc083a2: 69e2 ld s3,24(sp) + 3bc083a4: 00003517 auipc a0,0x3 + 3bc083a8: 26450513 addi a0,a0,612 # 3bc0b608 + 3bc083ac: 6121 addi sp,sp,64 + 3bc083ae: fabf706f j 3bc00358 + 3bc083b2: 00003517 auipc a0,0x3 + 3bc083b6: 1fe50513 addi a0,a0,510 # 3bc0b5b0 + 3bc083ba: f9ff70ef jal ra,3bc00358 + 3bc083be: 00044783 lbu a5,0(s0) + 3bc083c2: 00978d63 beq a5,s1,3bc083dc + 3bc083c6: 67e1 lui a5,0x18 + 3bc083c8: 07ed addi a5,a5,27 + 3bc083ca: b76d j 3bc08374 + 3bc083cc: 00003517 auipc a0,0x3 + 3bc083d0: 1ec50513 addi a0,a0,492 # 3bc0b5b8 + 3bc083d4: bfb5 j 3bc08350 + 3bc083d6: 67e1 lui a5,0x18 + 3bc083d8: 07b1 addi a5,a5,12 + 3bc083da: bf69 j 3bc08374 + 3bc083dc: 67e1 lui a5,0x18 + 3bc083de: 07f1 addi a5,a5,28 + 3bc083e0: bf51 j 3bc08374 + 3bc083e2: 00003517 auipc a0,0x3 + 3bc083e6: 20e50513 addi a0,a0,526 # 3bc0b5f0 + 3bc083ea: 7442 ld s0,48(sp) + 3bc083ec: 70e2 ld ra,56(sp) + 3bc083ee: 74a2 ld s1,40(sp) + 3bc083f0: 7902 ld s2,32(sp) + 3bc083f2: 69e2 ld s3,24(sp) + 3bc083f4: 6121 addi sp,sp,64 + 3bc083f6: f63f706f j 3bc00358 + 3bc083fa: 00003517 auipc a0,0x3 + 3bc083fe: 20650513 addi a0,a0,518 # 3bc0b600 + 3bc08402: b7e5 j 3bc083ea + +000000003bc08404 : + 3bc08404: 0000b517 auipc a0,0xb + 3bc08408: 40a54503 lbu a0,1034(a0) # 3bc1380e + 3bc0840c: 8082 ret + +000000003bc0840e : + 3bc0840e: 00030737 lui a4,0x30 + 3bc08412: 080087b7 lui a5,0x8008 + 3bc08416: 0705 addi a4,a4,1 + 3bc08418: c398 sw a4,0(a5) + 3bc0841a: 08078693 addi a3,a5,128 # 8008080 + 3bc0841e: c298 sw a4,0(a3) + 3bc08420: 10078693 addi a3,a5,256 + 3bc08424: c298 sw a4,0(a3) + 3bc08426: 18078693 addi a3,a5,384 + 3bc0842a: c298 sw a4,0(a3) + 3bc0842c: 20078693 addi a3,a5,512 + 3bc08430: c298 sw a4,0(a3) + 3bc08432: 28078693 addi a3,a5,640 + 3bc08436: c298 sw a4,0(a3) + 3bc08438: 30078693 addi a3,a5,768 + 3bc0843c: c298 sw a4,0(a3) + 3bc0843e: 38078693 addi a3,a5,896 + 3bc08442: c298 sw a4,0(a3) + 3bc08444: 40078693 addi a3,a5,1024 + 3bc08448: c298 sw a4,0(a3) + 3bc0844a: 48078693 addi a3,a5,1152 + 3bc0844e: c298 sw a4,0(a3) + 3bc08450: 50078693 addi a3,a5,1280 + 3bc08454: c298 sw a4,0(a3) + 3bc08456: 58078793 addi a5,a5,1408 + 3bc0845a: c398 sw a4,0(a5) + 3bc0845c: 8082 ret + +000000003bc0845e : + 3bc0845e: 7179 addi sp,sp,-48 + 3bc08460: f406 sd ra,40(sp) + 3bc08462: 3f2010ef jal ra,3bc09854 + 3bc08466: 7ae010ef jal ra,3bc09c14 + 3bc0846a: 0800a7b7 lui a5,0x800a + 3bc0846e: 0207a023 sw zero,32(a5) # 800a020 + 3bc08472: 007797b7 lui a5,0x779 + 3bc08476: 03000737 lui a4,0x3000 + 3bc0847a: 8aa78793 addi a5,a5,-1878 # 7788aa <__BSS_SIZE__+0x772c9a> + 3bc0847e: 1cf72c23 sw a5,472(a4) # 30001d8 <__BSS_SIZE__+0x2ffa5c8> + 3bc08482: 6789 lui a5,0x2 + 3bc08484: 29978793 addi a5,a5,665 # 2299 <__BSS_SIZE__-0x3977> + 3bc08488: 1cf72e23 sw a5,476(a4) + 3bc0848c: 2bb010ef jal ra,3bc09f46 + 3bc08490: 283000ef jal ra,3bc08f12 + 3bc08494: 444010ef jal ra,3bc098d8 + 3bc08498: 2a0010ef jal ra,3bc09738 + 3bc0849c: 297000ef jal ra,3bc08f32 + 3bc084a0: 083000ef jal ra,3bc08d22 + 3bc084a4: 17d000ef jal ra,3bc08e20 + 3bc084a8: 1bb000ef jal ra,3bc08e62 + 3bc084ac: 103000ef jal ra,3bc08dae + 3bc084b0: 139000ef jal ra,3bc08de8 + 3bc084b4: 1db000ef jal ra,3bc08e8e + 3bc084b8: 1ca000ef jal ra,3bc08682 + 3bc084bc: 0810 addi a2,sp,16 + 3bc084be: 082c addi a1,sp,24 + 3bc084c0: 0068 addi a0,sp,12 + 3bc084c2: 4f4000ef jal ra,3bc089b6 + 3bc084c6: 47b2 lw a5,12(sp) + 3bc084c8: e385 bnez a5,3bc084e8 + 3bc084ca: 00003517 auipc a0,0x3 + 3bc084ce: 19e50513 addi a0,a0,414 # 3bc0b668 + 3bc084d2: e87f70ef jal ra,3bc00358 + 3bc084d6: fac1468b ldd a3,a2,(sp),1,4 + 3bc084da: 45b2 lw a1,12(sp) + 3bc084dc: 00003517 auipc a0,0x3 + 3bc084e0: 1a450513 addi a0,a0,420 # 3bc0b680 + 3bc084e4: e75f70ef jal ra,3bc00358 + 3bc084e8: 17f010ef jal ra,3bc09e66 + 3bc084ec: 3cd000ef jal ra,3bc090b8 + 3bc084f0: 192000ef jal ra,3bc08682 + 3bc084f4: 0810 addi a2,sp,16 + 3bc084f6: 082c addi a1,sp,24 + 3bc084f8: 0068 addi a0,sp,12 + 3bc084fa: 4bc000ef jal ra,3bc089b6 + 3bc084fe: 47b2 lw a5,12(sp) + 3bc08500: e385 bnez a5,3bc08520 + 3bc08502: 00003517 auipc a0,0x3 + 3bc08506: 16650513 addi a0,a0,358 # 3bc0b668 + 3bc0850a: e4ff70ef jal ra,3bc00358 + 3bc0850e: fac1468b ldd a3,a2,(sp),1,4 + 3bc08512: 45b2 lw a1,12(sp) + 3bc08514: 00003517 auipc a0,0x3 + 3bc08518: 16c50513 addi a0,a0,364 # 3bc0b680 + 3bc0851c: e3df70ef jal ra,3bc00358 + 3bc08520: 56f000ef jal ra,3bc0928e + 3bc08524: 15e000ef jal ra,3bc08682 + 3bc08528: 0810 addi a2,sp,16 + 3bc0852a: 082c addi a1,sp,24 + 3bc0852c: 0068 addi a0,sp,12 + 3bc0852e: 488000ef jal ra,3bc089b6 + 3bc08532: 47b2 lw a5,12(sp) + 3bc08534: e385 bnez a5,3bc08554 + 3bc08536: 00003517 auipc a0,0x3 + 3bc0853a: 13250513 addi a0,a0,306 # 3bc0b668 + 3bc0853e: e1bf70ef jal ra,3bc00358 + 3bc08542: fac1468b ldd a3,a2,(sp),1,4 + 3bc08546: 45b2 lw a1,12(sp) + 3bc08548: 00003517 auipc a0,0x3 + 3bc0854c: 13850513 addi a0,a0,312 # 3bc0b680 + 3bc08550: e09f70ef jal ra,3bc00358 + 3bc08554: 4589 li a1,2 + 3bc08556: 4505 li a0,1 + 3bc08558: 05e010ef jal ra,3bc095b6 + 3bc0855c: 4585 li a1,1 + 3bc0855e: 4505 li a0,1 + 3bc08560: 056010ef jal ra,3bc095b6 + 3bc08564: 4581 li a1,0 + 3bc08566: 4505 li a0,1 + 3bc08568: 04e010ef jal ra,3bc095b6 + 3bc0856c: 116000ef jal ra,3bc08682 + 3bc08570: 0810 addi a2,sp,16 + 3bc08572: 082c addi a1,sp,24 + 3bc08574: 0068 addi a0,sp,12 + 3bc08576: 440000ef jal ra,3bc089b6 + 3bc0857a: 08000737 lui a4,0x8000 + 3bc0857e: 08c72783 lw a5,140(a4) # 800008c + 3bc08582: 4505 li a0,1 + 3bc08584: 2781 sext.w a5,a5 + 3bc08586: f0f7f793 andi a5,a5,-241 + 3bc0858a: 0107e793 ori a5,a5,16 + 3bc0858e: 0000b697 auipc a3,0xb + 3bc08592: 26f6a123 sw a5,610(a3) # 3bc137f0 + 3bc08596: 08f72623 sw a5,140(a4) + 3bc0859a: 633000ef jal ra,3bc093cc + 3bc0859e: 0e4000ef jal ra,3bc08682 + 3bc085a2: 0810 addi a2,sp,16 + 3bc085a4: 082c addi a1,sp,24 + 3bc085a6: 0068 addi a0,sp,12 + 3bc085a8: 40e000ef jal ra,3bc089b6 + 3bc085ac: 08d010ef jal ra,3bc09e38 + 3bc085b0: 00b10513 addi a0,sp,11 + 3bc085b4: 186010ef jal ra,3bc0973a + 3bc085b8: 00b14503 lbu a0,11(sp) + 3bc085bc: 0d9010ef jal ra,3bc09e94 + 3bc085c0: 00b14503 lbu a0,11(sp) + 3bc085c4: 64e010ef jal ra,3bc09c12 + 3bc085c8: 281000ef jal ra,3bc09048 + 3bc085cc: 0b6000ef jal ra,3bc08682 + 3bc085d0: 0810 addi a2,sp,16 + 3bc085d2: 082c addi a1,sp,24 + 3bc085d4: 0068 addi a0,sp,12 + 3bc085d6: 3e0000ef jal ra,3bc089b6 + 3bc085da: 47b2 lw a5,12(sp) + 3bc085dc: eb81 bnez a5,3bc085ec + 3bc085de: 00003517 auipc a0,0x3 + 3bc085e2: 0e250513 addi a0,a0,226 # 3bc0b6c0 + 3bc085e6: d73f70ef jal ra,3bc00358 + 3bc085ea: a001 j 3bc085ea + 3bc085ec: 0e4000ef jal ra,3bc086d0 + 3bc085f0: 0810 addi a2,sp,16 + 3bc085f2: 082c addi a1,sp,24 + 3bc085f4: 0068 addi a0,sp,12 + 3bc085f6: 3c0000ef jal ra,3bc089b6 + 3bc085fa: 47b2 lw a5,12(sp) + 3bc085fc: eb81 bnez a5,3bc0860c + 3bc085fe: 00003517 auipc a0,0x3 + 3bc08602: 0c250513 addi a0,a0,194 # 3bc0b6c0 + 3bc08606: d53f70ef jal ra,3bc00358 + 3bc0860a: a001 j 3bc0860a + 3bc0860c: 00003517 auipc a0,0x3 + 3bc08610: 0cc50513 addi a0,a0,204 # 3bc0b6d8 + 3bc08614: d45f70ef jal ra,3bc00358 + 3bc08618: 080087b7 lui a5,0x8008 + 3bc0861c: 4595 li a1,5 + 3bc0861e: cbac sw a1,80(a5) + 3bc08620: 08078613 addi a2,a5,128 # 8008080 + 3bc08624: 01000737 lui a4,0x1000 + 3bc08628: ca2c sw a1,80(a2) + 3bc0862a: 10070713 addi a4,a4,256 # 1000100 <__BSS_SIZE__+0xffa4f0> + 3bc0862e: c398 sw a4,0(a5) + 3bc08630: 43d4 lw a3,4(a5) + 3bc08632: 2681 sext.w a3,a3 + 3bc08634: c006f693 andi a3,a3,-1024 + 3bc08638: c3d4 sw a3,4(a5) + 3bc0863a: c218 sw a4,0(a2) + 3bc0863c: 4254 lw a3,4(a2) + 3bc0863e: 2681 sext.w a3,a3 + 3bc08640: c006f693 andi a3,a3,-1024 + 3bc08644: c254 sw a3,4(a2) + 3bc08646: 40078613 addi a2,a5,1024 + 3bc0864a: ca2c sw a1,80(a2) + 3bc0864c: 48078793 addi a5,a5,1152 + 3bc08650: cbac sw a1,80(a5) + 3bc08652: c218 sw a4,0(a2) + 3bc08654: 4254 lw a3,4(a2) + 3bc08656: 2681 sext.w a3,a3 + 3bc08658: c006f693 andi a3,a3,-1024 + 3bc0865c: c254 sw a3,4(a2) + 3bc0865e: c398 sw a4,0(a5) + 3bc08660: 43d8 lw a4,4(a5) + 3bc08662: 2701 sext.w a4,a4 + 3bc08664: c0077713 andi a4,a4,-1024 + 3bc08668: c3d8 sw a4,4(a5) + 3bc0866a: 0800a737 lui a4,0x800a + 3bc0866e: 4b5c lw a5,20(a4) + 3bc08670: 2781 sext.w a5,a5 + 3bc08672: 1007e793 ori a5,a5,256 + 3bc08676: cb5c sw a5,20(a4) + 3bc08678: d97ff0ef jal ra,3bc0840e + 3bc0867c: 70a2 ld ra,40(sp) + 3bc0867e: 6145 addi sp,sp,48 + 3bc08680: 8082 ret + +000000003bc08682 : + 3bc08682: 00060737 lui a4,0x60 + 3bc08686: 080107b7 lui a5,0x8010 + 3bc0868a: 0719 addi a4,a4,6 + 3bc0868c: c398 sw a4,0(a5) + 3bc0868e: 80200737 lui a4,0x80200 + 3bc08692: 1101 addi sp,sp,-32 + 3bc08694: a0070713 addi a4,a4,-1536 # ffffffff801ffa00 <__BL2_END__+0xffffffff445ec1f0> + 3bc08698: c63a sw a4,12(sp) + 3bc0869a: 40200737 lui a4,0x40200 + 3bc0869e: e802 sd zero,16(sp) + 3bc086a0: ec02 sd zero,24(sp) + 3bc086a2: a0070713 addi a4,a4,-1536 # 401ffa00 <__BL2_END__+0x45ec1f0> + 3bc086a6: c3b8 sw a4,64(a5) + 3bc086a8: 4732 lw a4,12(sp) + 3bc086aa: c3f8 sw a4,68(a5) + 3bc086ac: 4742 lw a4,16(sp) + 3bc086ae: c7b8 sw a4,72(a5) + 3bc086b0: 4752 lw a4,20(sp) + 3bc086b2: c7f8 sw a4,76(a5) + 3bc086b4: 4762 lw a4,24(sp) + 3bc086b6: cbb8 sw a4,80(a5) + 3bc086b8: 4772 lw a4,28(sp) + 3bc086ba: cbf8 sw a4,84(a5) + 3bc086bc: 00100737 lui a4,0x100 + 3bc086c0: 0007a823 sw zero,16(a5) # 8010010 + 3bc086c4: 177d addi a4,a4,-1 + 3bc086c6: cbd8 sw a4,20(a5) + 3bc086c8: 4711 li a4,4 + 3bc086ca: cf98 sw a4,24(a5) + 3bc086cc: 6105 addi sp,sp,32 + 3bc086ce: 8082 ret + +000000003bc086d0 : + 3bc086d0: 000c0737 lui a4,0xc0 + 3bc086d4: 080107b7 lui a5,0x8010 + 3bc086d8: 0731 addi a4,a4,12 + 3bc086da: c398 sw a4,0(a5) + 3bc086dc: 6705 lui a4,0x1 + 3bc086de: f0570713 addi a4,a4,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc086e2: d3d8 sw a4,36(a5) + 3bc086e4: 80103737 lui a4,0x80103 + 3bc086e8: 1101 addi sp,sp,-32 + 3bc086ea: c0f70713 addi a4,a4,-1009 # ffffffff80102c0f <__BL2_END__+0xffffffff444ef3ff> + 3bc086ee: c63a sw a4,12(sp) + 3bc086f0: c0000737 lui a4,0xc0000 + 3bc086f4: 0705 addi a4,a4,1 + 3bc086f6: 1702 slli a4,a4,0x20 + 3bc086f8: e83a sd a4,16(sp) + 3bc086fa: 40103737 lui a4,0x40103 + 3bc086fe: ec02 sd zero,24(sp) + 3bc08700: c0f70713 addi a4,a4,-1009 # 40102c0f <__BL2_END__+0x44ef3ff> + 3bc08704: c3b8 sw a4,64(a5) + 3bc08706: 4732 lw a4,12(sp) + 3bc08708: c3f8 sw a4,68(a5) + 3bc0870a: 4742 lw a4,16(sp) + 3bc0870c: c7b8 sw a4,72(a5) + 3bc0870e: 4752 lw a4,20(sp) + 3bc08710: c7f8 sw a4,76(a5) + 3bc08712: 4762 lw a4,24(sp) + 3bc08714: cbb8 sw a4,80(a5) + 3bc08716: 4772 lw a4,28(sp) + 3bc08718: cbf8 sw a4,84(a5) + 3bc0871a: 00100737 lui a4,0x100 + 3bc0871e: 0007a823 sw zero,16(a5) # 8010010 + 3bc08722: 177d addi a4,a4,-1 + 3bc08724: cbd8 sw a4,20(a5) + 3bc08726: 02000713 li a4,32 + 3bc0872a: cf98 sw a4,24(a5) + 3bc0872c: 6105 addi sp,sp,32 + 3bc0872e: 8082 ret + +000000003bc08730 : + 3bc08730: 00060737 lui a4,0x60 + 3bc08734: 080107b7 lui a5,0x8010 + 3bc08738: 0719 addi a4,a4,6 + 3bc0873a: c398 sw a4,0(a5) + 3bc0873c: 1101 addi sp,sp,-32 + 3bc0873e: 40001737 lui a4,0x40001 + 3bc08742: e802 sd zero,16(sp) + 3bc08744: ec02 sd zero,24(sp) + 3bc08746: c602 sw zero,12(sp) + 3bc08748: a0070713 addi a4,a4,-1536 # 40000a00 <__BL2_END__+0x43ed1f0> + 3bc0874c: c3b8 sw a4,64(a5) + 3bc0874e: 4732 lw a4,12(sp) + 3bc08750: c3f8 sw a4,68(a5) + 3bc08752: 4742 lw a4,16(sp) + 3bc08754: c7b8 sw a4,72(a5) + 3bc08756: 4752 lw a4,20(sp) + 3bc08758: c7f8 sw a4,76(a5) + 3bc0875a: 4762 lw a4,24(sp) + 3bc0875c: cbb8 sw a4,80(a5) + 3bc0875e: 4772 lw a4,28(sp) + 3bc08760: cbf8 sw a4,84(a5) + 3bc08762: 00100737 lui a4,0x100 + 3bc08766: 0007a823 sw zero,16(a5) # 8010010 + 3bc0876a: 177d addi a4,a4,-1 + 3bc0876c: cbd8 sw a4,20(a5) + 3bc0876e: 4711 li a4,4 + 3bc08770: cf98 sw a4,24(a5) + 3bc08772: 6105 addi sp,sp,32 + 3bc08774: 8082 ret + +000000003bc08776 : + 3bc08776: 00060737 lui a4,0x60 + 3bc0877a: 080107b7 lui a5,0x8010 + 3bc0877e: 0719 addi a4,a4,6 + 3bc08780: c398 sw a4,0(a5) + 3bc08782: 1101 addi sp,sp,-32 + 3bc08784: 80004737 lui a4,0x80004 + 3bc08788: e802 sd zero,16(sp) + 3bc0878a: ec02 sd zero,24(sp) + 3bc0878c: c602 sw zero,12(sp) + 3bc0878e: a0070713 addi a4,a4,-1536 # ffffffff80003a00 <__BL2_END__+0xffffffff443f01f0> + 3bc08792: c3b8 sw a4,64(a5) + 3bc08794: 4732 lw a4,12(sp) + 3bc08796: c3f8 sw a4,68(a5) + 3bc08798: 4742 lw a4,16(sp) + 3bc0879a: c7b8 sw a4,72(a5) + 3bc0879c: 4752 lw a4,20(sp) + 3bc0879e: c7f8 sw a4,76(a5) + 3bc087a0: 4762 lw a4,24(sp) + 3bc087a2: cbb8 sw a4,80(a5) + 3bc087a4: 4772 lw a4,28(sp) + 3bc087a6: cbf8 sw a4,84(a5) + 3bc087a8: 00100737 lui a4,0x100 + 3bc087ac: 0007a823 sw zero,16(a5) # 8010010 + 3bc087b0: 177d addi a4,a4,-1 + 3bc087b2: cbd8 sw a4,20(a5) + 3bc087b4: 4711 li a4,4 + 3bc087b6: cf98 sw a4,24(a5) + 3bc087b8: 6105 addi sp,sp,32 + 3bc087ba: 8082 ret + +000000003bc087bc : + 3bc087bc: 000607b7 lui a5,0x60 + 3bc087c0: 08010737 lui a4,0x8010 + 3bc087c4: 0799 addi a5,a5,6 + 3bc087c6: c31c sw a5,0(a4) + 3bc087c8: 1101 addi sp,sp,-32 + 3bc087ca: e519 bnez a0,3bc087d8 + 3bc087cc: 200017b7 lui a5,0x20001 + 3bc087d0: 078a slli a5,a5,0x2 + 3bc087d2: a0078793 addi a5,a5,-1536 # 20000a00 + 3bc087d6: a0ad j 3bc08840 + 3bc087d8: 4785 li a5,1 + 3bc087da: 04f51c63 bne a0,a5,3bc08832 + 3bc087de: 6785 lui a5,0x1 + 3bc087e0: f0578793 addi a5,a5,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc087e4: d35c sw a5,36(a4) + 3bc087e6: 00003797 auipc a5,0x3 + 3bc087ea: f0a7b783 ld a5,-246(a5) # 3bc0b6f0 + 3bc087ee: e43e sd a5,8(sp) + 3bc087f0: 00003797 auipc a5,0x3 + 3bc087f4: f087b783 ld a5,-248(a5) # 3bc0b6f8 + 3bc087f8: e83e sd a5,16(sp) + 3bc087fa: 478d li a5,3 + 3bc087fc: 07fa slli a5,a5,0x1e + 3bc087fe: 0785 addi a5,a5,1 + 3bc08800: ec3e sd a5,24(sp) + 3bc08802: 4722 lw a4,8(sp) + 3bc08804: 080107b7 lui a5,0x8010 + 3bc08808: c3b8 sw a4,64(a5) + 3bc0880a: 4732 lw a4,12(sp) + 3bc0880c: c3f8 sw a4,68(a5) + 3bc0880e: 4742 lw a4,16(sp) + 3bc08810: c7b8 sw a4,72(a5) + 3bc08812: 4752 lw a4,20(sp) + 3bc08814: c7f8 sw a4,76(a5) + 3bc08816: 4762 lw a4,24(sp) + 3bc08818: cbb8 sw a4,80(a5) + 3bc0881a: 4772 lw a4,28(sp) + 3bc0881c: cbf8 sw a4,84(a5) + 3bc0881e: 00100737 lui a4,0x100 + 3bc08822: 0007a823 sw zero,16(a5) # 8010010 + 3bc08826: 177d addi a4,a4,-1 + 3bc08828: cbd8 sw a4,20(a5) + 3bc0882a: 4711 li a4,4 + 3bc0882c: cf98 sw a4,24(a5) + 3bc0882e: 6105 addi sp,sp,32 + 3bc08830: 8082 ret + 3bc08832: 4789 li a5,2 + 3bc08834: 00f51a63 bne a0,a5,3bc08848 + 3bc08838: 00003797 auipc a5,0x3 + 3bc0883c: ec87b783 ld a5,-312(a5) # 3bc0b700 + 3bc08840: e43e sd a5,8(sp) + 3bc08842: e802 sd zero,16(sp) + 3bc08844: ec02 sd zero,24(sp) + 3bc08846: bf75 j 3bc08802 + 3bc08848: 47c9 li a5,18 + 3bc0884a: 02f51563 bne a0,a5,3bc08874 + 3bc0884e: 080006b7 lui a3,0x8000 + 3bc08852: 0846a783 lw a5,132(a3) # 8000084 + 3bc08856: 6709 lui a4,0x2 + 3bc08858: f0070713 addi a4,a4,-256 # 1f00 <__BSS_SIZE__-0x3d10> + 3bc0885c: 2781 sext.w a5,a5 + 3bc0885e: 9b81 andi a5,a5,-32 + 3bc08860: 01d7e793 ori a5,a5,29 + 3bc08864: 8fd9 or a5,a5,a4 + 3bc08866: 0000b717 auipc a4,0xb + 3bc0886a: f8f72523 sw a5,-118(a4) # 3bc137f0 + 3bc0886e: 08f6a223 sw a5,132(a3) + 3bc08872: b7d9 j 3bc08838 + 3bc08874: 47c1 li a5,16 + 3bc08876: f8f516e3 bne a0,a5,3bc08802 + 3bc0887a: 08000637 lui a2,0x8000 + 3bc0887e: 08462783 lw a5,132(a2) # 8000084 + 3bc08882: 6689 lui a3,0x2 + 3bc08884: f0068693 addi a3,a3,-256 # 1f00 <__BSS_SIZE__-0x3d10> + 3bc08888: 2781 sext.w a5,a5 + 3bc0888a: 9b81 andi a5,a5,-32 + 3bc0888c: 0017e793 ori a5,a5,1 + 3bc08890: 3007c713 xori a4,a5,768 + 3bc08894: 8f75 and a4,a4,a3 + 3bc08896: 8fb9 xor a5,a5,a4 + 3bc08898: 0000b717 auipc a4,0xb + 3bc0889c: f4f72c23 sw a5,-168(a4) # 3bc137f0 + 3bc088a0: 08f62223 sw a5,132(a2) + 3bc088a4: b725 j 3bc087cc + +000000003bc088a6 : + 3bc088a6: 000607b7 lui a5,0x60 + 3bc088aa: 08010737 lui a4,0x8010 + 3bc088ae: 0799 addi a5,a5,6 + 3bc088b0: c31c sw a5,0(a4) + 3bc088b2: 1101 addi sp,sp,-32 + 3bc088b4: e909 bnez a0,3bc088c6 + 3bc088b6: 00003797 auipc a5,0x3 + 3bc088ba: e527b783 ld a5,-430(a5) # 3bc0b708 + 3bc088be: e43e sd a5,8(sp) + 3bc088c0: e802 sd zero,16(sp) + 3bc088c2: ec02 sd zero,24(sp) + 3bc088c4: a035 j 3bc088f0 + 3bc088c6: 4785 li a5,1 + 3bc088c8: 04f51c63 bne a0,a5,3bc08920 + 3bc088cc: 6785 lui a5,0x1 + 3bc088ce: f0578793 addi a5,a5,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc088d2: d35c sw a5,36(a4) + 3bc088d4: 00003797 auipc a5,0x3 + 3bc088d8: e1c7b783 ld a5,-484(a5) # 3bc0b6f0 + 3bc088dc: e43e sd a5,8(sp) + 3bc088de: 00003797 auipc a5,0x3 + 3bc088e2: e1a7b783 ld a5,-486(a5) # 3bc0b6f8 + 3bc088e6: e83e sd a5,16(sp) + 3bc088e8: 478d li a5,3 + 3bc088ea: 07fa slli a5,a5,0x1e + 3bc088ec: 0785 addi a5,a5,1 + 3bc088ee: ec3e sd a5,24(sp) + 3bc088f0: 4722 lw a4,8(sp) + 3bc088f2: 080107b7 lui a5,0x8010 + 3bc088f6: c3b8 sw a4,64(a5) + 3bc088f8: 4732 lw a4,12(sp) + 3bc088fa: c3f8 sw a4,68(a5) + 3bc088fc: 4742 lw a4,16(sp) + 3bc088fe: c7b8 sw a4,72(a5) + 3bc08900: 4752 lw a4,20(sp) + 3bc08902: c7f8 sw a4,76(a5) + 3bc08904: 4762 lw a4,24(sp) + 3bc08906: cbb8 sw a4,80(a5) + 3bc08908: 4772 lw a4,28(sp) + 3bc0890a: cbf8 sw a4,84(a5) + 3bc0890c: 00100737 lui a4,0x100 + 3bc08910: 0007a823 sw zero,16(a5) # 8010010 + 3bc08914: 177d addi a4,a4,-1 + 3bc08916: cbd8 sw a4,20(a5) + 3bc08918: 4711 li a4,4 + 3bc0891a: cf98 sw a4,24(a5) + 3bc0891c: 6105 addi sp,sp,32 + 3bc0891e: 8082 ret + 3bc08920: 47c5 li a5,17 + 3bc08922: 00003717 auipc a4,0x3 + 3bc08926: de670713 addi a4,a4,-538 # 3bc0b708 + 3bc0892a: 00f51f63 bne a0,a5,3bc08948 + 3bc0892e: 67c1 lui a5,0x10 + 3bc08930: 30178793 addi a5,a5,769 # 10301 <__BSS_SIZE__+0xa6f1> + 3bc08934: 0000b697 auipc a3,0xb + 3bc08938: eaf6ae23 sw a5,-324(a3) # 3bc137f0 + 3bc0893c: 080006b7 lui a3,0x8000 + 3bc08940: 18f6a823 sw a5,400(a3) # 8000190 + 3bc08944: 631c ld a5,0(a4) + 3bc08946: bfa5 j 3bc088be + 3bc08948: 47c9 li a5,18 + 3bc0894a: f6f516e3 bne a0,a5,3bc088b6 + 3bc0894e: 67c9 lui a5,0x12 + 3bc08950: f1d78793 addi a5,a5,-227 # 11f1d <__BSS_SIZE__+0xc30d> + 3bc08954: b7c5 j 3bc08934 + +000000003bc08956 : + 3bc08956: 00060737 lui a4,0x60 + 3bc0895a: 080107b7 lui a5,0x8010 + 3bc0895e: 0719 addi a4,a4,6 + 3bc08960: c398 sw a4,0(a5) + 3bc08962: 6705 lui a4,0x1 + 3bc08964: f0570713 addi a4,a4,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc08968: d3d8 sw a4,36(a5) + 3bc0896a: 40103737 lui a4,0x40103 + 3bc0896e: 1101 addi sp,sp,-32 + 3bc08970: e0070713 addi a4,a4,-512 # 40102e00 <__BL2_END__+0x44ef5f0> + 3bc08974: c63a sw a4,12(sp) + 3bc08976: 00401737 lui a4,0x401 + 3bc0897a: 81770713 addi a4,a4,-2025 # 400817 <__BSS_SIZE__+0x3fac07> + 3bc0897e: 0726 slli a4,a4,0x9 + 3bc08980: e83a sd a4,16(sp) + 3bc08982: 40102737 lui a4,0x40102 + 3bc08986: ec02 sd zero,24(sp) + 3bc08988: 60070713 addi a4,a4,1536 # 40102600 <__BL2_END__+0x44eedf0> + 3bc0898c: c3b8 sw a4,64(a5) + 3bc0898e: 4732 lw a4,12(sp) + 3bc08990: c3f8 sw a4,68(a5) + 3bc08992: 4742 lw a4,16(sp) + 3bc08994: c7b8 sw a4,72(a5) + 3bc08996: 4752 lw a4,20(sp) + 3bc08998: c7f8 sw a4,76(a5) + 3bc0899a: 4762 lw a4,24(sp) + 3bc0899c: cbb8 sw a4,80(a5) + 3bc0899e: 4772 lw a4,28(sp) + 3bc089a0: cbf8 sw a4,84(a5) + 3bc089a2: 00100737 lui a4,0x100 + 3bc089a6: 0007a823 sw zero,16(a5) # 8010010 + 3bc089aa: 177d addi a4,a4,-1 + 3bc089ac: cbd8 sw a4,20(a5) + 3bc089ae: 4711 li a4,4 + 3bc089b0: cf98 sw a4,24(a5) + 3bc089b2: 6105 addi sp,sp,32 + 3bc089b4: 8082 ret + +000000003bc089b6 : + 3bc089b6: 000307b7 lui a5,0x30 + 3bc089ba: 08010737 lui a4,0x8010 + 3bc089be: 078d addi a5,a5,3 + 3bc089c0: c31c sw a5,0(a4) + 3bc089c2: 0000b897 auipc a7,0xb + 3bc089c6: e2e88893 addi a7,a7,-466 # 3bc137f0 + 3bc089ca: 08072783 lw a5,128(a4) # 8010080 + 3bc089ce: 08070693 addi a3,a4,128 + 3bc089d2: 2781 sext.w a5,a5 + 3bc089d4: 00f8a023 sw a5,0(a7) + 3bc089d8: 0047f813 andi a6,a5,4 + 3bc089dc: fe0807e3 beqz a6,3bc089ca + 3bc089e0: 0c37b78b extu a5,a5,3,3 + 3bc089e4: c79d beqz a5,3bc08a12 + 3bc089e6: 00052023 sw zero,0(a0) + 3bc089ea: e2e6c80b lwd a6,a4,(a3),1,3 + 3bc089ee: e4f6c50b lwd a0,a5,(a3),2,3 + 3bc089f2: 1702 slli a4,a4,0x20 + 3bc089f4: 7c08368b extu a3,a6,31,0 + 3bc089f8: 8f55 or a4,a4,a3 + 3bc089fa: 1782 slli a5,a5,0x20 + 3bc089fc: 7c05350b extu a0,a0,31,0 + 3bc08a00: e198 sd a4,0(a1) + 3bc08a02: 8fc9 or a5,a5,a0 + 3bc08a04: e21c sd a5,0(a2) + 3bc08a06: 080107b7 lui a5,0x8010 + 3bc08a0a: 00050737 lui a4,0x50 + 3bc08a0e: c398 sw a4,0(a5) + 3bc08a10: 8082 ret + 3bc08a12: 4785 li a5,1 + 3bc08a14: c11c sw a5,0(a0) + 3bc08a16: 0005b023 sd zero,0(a1) + 3bc08a1a: 00063023 sd zero,0(a2) + 3bc08a1e: b7e5 j 3bc08a06 + +000000003bc08a20 : + 3bc08a20: 7159 addi sp,sp,-112 + 3bc08a22: f0a2 sd s0,96(sp) + 3bc08a24: eca6 sd s1,88(sp) + 3bc08a26: e8ca sd s2,80(sp) + 3bc08a28: e4ce sd s3,72(sp) + 3bc08a2a: e0d2 sd s4,64(sp) + 3bc08a2c: fc56 sd s5,56(sp) + 3bc08a2e: f486 sd ra,104(sp) + 3bc08a30: f85a sd s6,48(sp) + 3bc08a32: f45e sd s7,40(sp) + 3bc08a34: f062 sd s8,32(sp) + 3bc08a36: c4dff0ef jal ra,3bc08682 + 3bc08a3a: 080017b7 lui a5,0x8001 + 3bc08a3e: b147a403 lw s0,-1260(a5) # 8000b14 + 3bc08a42: b447a783 lw a5,-1212(a5) + 3bc08a46: 4925 li s2,9 + 3bc08a48: 080007b7 lui a5,0x8000 + 3bc08a4c: 0947a483 lw s1,148(a5) # 8000094 + 3bc08a50: 2401 sext.w s0,s0 + 3bc08a52: 001f0a37 lui s4,0x1f0 + 3bc08a56: 2481 sext.w s1,s1 + 3bc08a58: 080019b7 lui s3,0x8001 + 3bc08a5c: 4a85 li s5,1 + 3bc08a5e: 0109171b slliw a4,s2,0x10 + 3bc08a62: 8f21 xor a4,a4,s0 + 3bc08a64: 01477733 and a4,a4,s4 + 3bc08a68: 8c39 xor s0,s0,a4 + 3bc08a6a: 2401 sext.w s0,s0 + 3bc08a6c: b089aa23 sw s0,-1260(s3) # 8000b14 + 3bc08a70: b489a223 sw s0,-1212(s3) + 3bc08a74: 0830 addi a2,sp,24 + 3bc08a76: 080c addi a1,sp,16 + 3bc08a78: 0068 addi a0,sp,12 + 3bc08a7a: f3dff0ef jal ra,3bc089b6 + 3bc08a7e: 47b2 lw a5,12(sp) + 3bc08a80: 00090c1b sext.w s8,s2 + 3bc08a84: ef8d bnez a5,3bc08abe + 3bc08a86: 00f4f793 andi a5,s1,15 + 3bc08a8a: 2785 addiw a5,a5,1 + 3bc08a8c: 018787bb addw a5,a5,s8 + 3bc08a90: 0107979b slliw a5,a5,0x10 + 3bc08a94: 8fa1 xor a5,a5,s0 + 3bc08a96: 0147f7b3 and a5,a5,s4 + 3bc08a9a: 8c3d xor s0,s0,a5 + 3bc08a9c: 2401 sext.w s0,s0 + 3bc08a9e: b089aa23 sw s0,-1260(s3) + 3bc08aa2: b489a223 sw s0,-1212(s3) + 3bc08aa6: 70a6 ld ra,104(sp) + 3bc08aa8: 7406 ld s0,96(sp) + 3bc08aaa: 64e6 ld s1,88(sp) + 3bc08aac: 6946 ld s2,80(sp) + 3bc08aae: 69a6 ld s3,72(sp) + 3bc08ab0: 6a06 ld s4,64(sp) + 3bc08ab2: 7ae2 ld s5,56(sp) + 3bc08ab4: 7b42 ld s6,48(sp) + 3bc08ab6: 7ba2 ld s7,40(sp) + 3bc08ab8: 7c02 ld s8,32(sp) + 3bc08aba: 6165 addi sp,sp,112 + 3bc08abc: 8082 ret + 3bc08abe: 397d addiw s2,s2,-1 + 3bc08ac0: f9591fe3 bne s2,s5,3bc08a5e + 3bc08ac4: b7cd j 3bc08aa6 + +000000003bc08ac6 : + 3bc08ac6: 08004737 lui a4,0x8004 + 3bc08aca: 18072683 lw a3,384(a4) # 8004180 + 3bc08ace: 0006879b sext.w a5,a3 + 3bc08ad2: 01f6d69b srliw a3,a3,0x1f + 3bc08ad6: e691 bnez a3,3bc08ae2 + 3bc08ad8: 80000637 lui a2,0x80000 + 3bc08adc: 8fd1 or a5,a5,a2 + 3bc08ade: 18f72023 sw a5,384(a4) + 3bc08ae2: 0000b797 auipc a5,0xb + 3bc08ae6: d007a723 sw zero,-754(a5) # 3bc137f0 + 3bc08aea: 08004737 lui a4,0x8004 + 3bc08aee: 0000b617 auipc a2,0xb + 3bc08af2: d0260613 addi a2,a2,-766 # 3bc137f0 + 3bc08af6: 4f1c lw a5,24(a4) + 3bc08af8: 2781 sext.w a5,a5 + 3bc08afa: c21c sw a5,0(a2) + 3bc08afc: 8b85 andi a5,a5,1 + 3bc08afe: ffe5 bnez a5,3bc08af6 + 3bc08b00: 00c5179b slliw a5,a0,0xc + 3bc08b04: 0107c793 xori a5,a5,16 + 3bc08b08: 653d lui a0,0xf + 3bc08b0a: 8fe9 and a5,a5,a0 + 3bc08b0c: 0107c793 xori a5,a5,16 + 3bc08b10: 2781 sext.w a5,a5 + 3bc08b12: cb1c sw a5,16(a4) + 3bc08b14: c20c sw a1,0(a2) + 3bc08b16: cb4c sw a1,20(a4) + 3bc08b18: 4b1c lw a5,16(a4) + 3bc08b1a: 800005b7 lui a1,0x80000 + 3bc08b1e: 8fcd or a5,a5,a1 + 3bc08b20: c21c sw a5,0(a2) + 3bc08b22: cb1c sw a5,16(a4) + 3bc08b24: ea91 bnez a3,3bc08b38 + 3bc08b26: 18072783 lw a5,384(a4) # 8004180 + 3bc08b2a: 2781 sext.w a5,a5 + 3bc08b2c: 7807b78b extu a5,a5,30,0 + 3bc08b30: 2781 sext.w a5,a5 + 3bc08b32: c21c sw a5,0(a2) + 3bc08b34: 18f72023 sw a5,384(a4) + 3bc08b38: 8082 ret + +000000003bc08b3a : + 3bc08b3a: 080067b7 lui a5,0x8006 + 3bc08b3e: 47fc lw a5,76(a5) + 3bc08b40: 0000b717 auipc a4,0xb + 3bc08b44: cb070713 addi a4,a4,-848 # 3bc137f0 + 3bc08b48: 2781 sext.w a5,a5 + 3bc08b4a: c31c sw a5,0(a4) + 3bc08b4c: 1447b78b extu a5,a5,5,4 + 3bc08b50: cf9d beqz a5,3bc08b8e + 3bc08b52: 080006b7 lui a3,0x8000 + 3bc08b56: 42bc lw a5,64(a3) + 3bc08b58: 7601 lui a2,0xfffe0 + 3bc08b5a: 1675 addi a2,a2,-3 + 3bc08b5c: 2781 sext.w a5,a5 + 3bc08b5e: 8ff1 and a5,a5,a2 + 3bc08b60: c31c sw a5,0(a4) + 3bc08b62: c2bc sw a5,64(a3) + 3bc08b64: 42bc lw a5,64(a3) + 3bc08b66: 00020637 lui a2,0x20 + 3bc08b6a: 0609 addi a2,a2,2 + 3bc08b6c: 2781 sext.w a5,a5 + 3bc08b6e: 8fd1 or a5,a5,a2 + 3bc08b70: c2bc sw a5,64(a3) + 3bc08b72: 0000b797 auipc a5,0xb + 3bc08b76: c607af23 sw zero,-898(a5) # 3bc137f0 + 3bc08b7a: 08003637 lui a2,0x8003 + 3bc08b7e: 66c1 lui a3,0x10 + 3bc08b80: 4a5c lw a5,20(a2) + 3bc08b82: 2781 sext.w a5,a5 + 3bc08b84: c31c sw a5,0(a4) + 3bc08b86: 8ff5 and a5,a5,a3 + 3bc08b88: 2781 sext.w a5,a5 + 3bc08b8a: dbfd beqz a5,3bc08b80 + 3bc08b8c: 8082 ret + 3bc08b8e: 08000637 lui a2,0x8000 + 3bc08b92: 423c lw a5,64(a2) + 3bc08b94: 7681 lui a3,0xfffe0 + 3bc08b96: 16f5 addi a3,a3,-3 + 3bc08b98: 2781 sext.w a5,a5 + 3bc08b9a: 8ff5 and a5,a5,a3 + 3bc08b9c: c31c sw a5,0(a4) + 3bc08b9e: c23c sw a5,64(a2) + 3bc08ba0: 8082 ret + +000000003bc08ba2 : + 3bc08ba2: 080066b7 lui a3,0x8006 + 3bc08ba6: 46dc lw a5,12(a3) + 3bc08ba8: 7769 lui a4,0xffffa + 3bc08baa: 177d addi a4,a4,-1 + 3bc08bac: 2781 sext.w a5,a5 + 3bc08bae: 8ff9 and a5,a5,a4 + 3bc08bb0: 03003737 lui a4,0x3003 + 3bc08bb4: c6dc sw a5,12(a3) + 3bc08bb6: 90070713 addi a4,a4,-1792 # 3002900 <__BSS_SIZE__+0x2ffccf0> + 3bc08bba: 0000b797 auipc a5,0xb + 3bc08bbe: c0e7a783 lw a5,-1010(a5) # 3bc137c8 + 3bc08bc2: cb7c sw a5,84(a4) + 3bc08bc4: 0000b797 auipc a5,0xb + 3bc08bc8: c0c7d783 lhu a5,-1012(a5) # 3bc137d0 + 3bc08bcc: cf3c sw a5,88(a4) + 3bc08bce: 0000b797 auipc a5,0xb + 3bc08bd2: c0a7b783 ld a5,-1014(a5) # 3bc137d8 + 3bc08bd6: 5c07b78b extu a5,a5,23,0 + 3bc08bda: 2781 sext.w a5,a5 + 3bc08bdc: 0000b697 auipc a3,0xb + 3bc08be0: c1468693 addi a3,a3,-1004 # 3bc137f0 + 3bc08be4: c29c sw a5,0(a3) + 3bc08be6: cf7c sw a5,92(a4) + 3bc08be8: 4b3c lw a5,80(a4) + 3bc08bea: 2781 sext.w a5,a5 + 3bc08bec: 0017c793 xori a5,a5,1 + 3bc08bf0: fa17f793 andi a5,a5,-95 + 3bc08bf4: 0207e793 ori a5,a5,32 + 3bc08bf8: c29c sw a5,0(a3) + 3bc08bfa: cb3c sw a5,80(a4) + 3bc08bfc: 8082 ret + +000000003bc08bfe : + 3bc08bfe: 08006737 lui a4,0x8006 + 3bc08c02: 475c lw a5,12(a4) + 3bc08c04: 6691 lui a3,0x4 + 3bc08c06: 8fd5 or a5,a5,a3 + 3bc08c08: 0000b697 auipc a3,0xb + 3bc08c0c: bef6a423 sw a5,-1048(a3) # 3bc137f0 + 3bc08c10: c75c sw a5,12(a4) + 3bc08c12: 8082 ret + +000000003bc08c14 : + 3bc08c14: 08006737 lui a4,0x8006 + 3bc08c18: 475c lw a5,12(a4) + 3bc08c1a: 6689 lui a3,0x2 + 3bc08c1c: 8fd5 or a5,a5,a3 + 3bc08c1e: 0000b697 auipc a3,0xb + 3bc08c22: bcf6a923 sw a5,-1070(a3) # 3bc137f0 + 3bc08c26: c75c sw a5,12(a4) + 3bc08c28: 8082 ret + +000000003bc08c2a : + 3bc08c2a: 1101 addi sp,sp,-32 + 3bc08c2c: 0000b797 auipc a5,0xb + 3bc08c30: bc07a223 sw zero,-1084(a5) # 3bc137f0 + 3bc08c34: 080066b7 lui a3,0x8006 + 3bc08c38: e822 sd s0,16(sp) + 3bc08c3a: ec06 sd ra,24(sp) + 3bc08c3c: e426 sd s1,8(sp) + 3bc08c3e: e04a sd s2,0(sp) + 3bc08c40: 0006a223 sw zero,4(a3) # 8006004 + 3bc08c44: 0006a423 sw zero,8(a3) + 3bc08c48: 46dc lw a5,12(a3) + 3bc08c4a: 0000b417 auipc s0,0xb + 3bc08c4e: ba640413 addi s0,s0,-1114 # 3bc137f0 + 3bc08c52: 2781 sext.w a5,a5 + 3bc08c54: f7f7f793 andi a5,a5,-129 + 3bc08c58: c01c sw a5,0(s0) + 3bc08c5a: c6dc sw a5,12(a3) + 3bc08c5c: 46fc lw a5,76(a3) + 3bc08c5e: c01c sw a5,0(s0) + 3bc08c60: 46fc lw a5,76(a3) + 3bc08c62: c01c sw a5,0(s0) + 3bc08c64: 46fc lw a5,76(a3) + 3bc08c66: c01c sw a5,0(s0) + 3bc08c68: 46fc lw a5,76(a3) + 3bc08c6a: c01c sw a5,0(s0) + 3bc08c6c: 46fc lw a5,76(a3) + 3bc08c6e: c01c sw a5,0(s0) + 3bc08c70: 46f8 lw a4,76(a3) + 3bc08c72: 0007079b sext.w a5,a4 + 3bc08c76: 8b05 andi a4,a4,1 + 3bc08c78: c315 beqz a4,3bc08c9c + 3bc08c7a: 2487b60b extu a2,a5,9,8 + 3bc08c7e: 1447b70b extu a4,a5,5,4 + 3bc08c82: e629 bnez a2,3bc08ccc + 3bc08c84: fcf7f793 andi a5,a5,-49 + 3bc08c88: 0087171b slliw a4,a4,0x8 + 3bc08c8c: 8f3d xor a4,a4,a5 + 3bc08c8e: 30077713 andi a4,a4,768 + 3bc08c92: 8fb9 xor a5,a5,a4 + 3bc08c94: c01c sw a5,0(s0) + 3bc08c96: c6fc sw a5,76(a3) + 3bc08c98: f7dff0ef jal ra,3bc08c14 + 3bc08c9c: 4685 li a3,1 + 3bc08c9e: c014 sw a3,0(s0) + 3bc08ca0: 08006737 lui a4,0x8006 + 3bc08ca4: c354 sw a3,4(a4) + 3bc08ca6: 475c lw a5,12(a4) + 3bc08ca8: 64a1 lui s1,0x8 + 3bc08caa: 08006937 lui s2,0x8006 + 3bc08cae: 2781 sext.w a5,a5 + 3bc08cb0: 0807e793 ori a5,a5,128 + 3bc08cb4: c75c sw a5,12(a4) + 3bc08cb6: c014 sw a3,0(s0) + 3bc08cb8: c714 sw a3,8(a4) + 3bc08cba: 401c lw a5,0(s0) + 3bc08cbc: 8fe5 and a5,a5,s1 + 3bc08cbe: cbb9 beqz a5,3bc08d14 + 3bc08cc0: 60e2 ld ra,24(sp) + 3bc08cc2: 6442 ld s0,16(sp) + 3bc08cc4: 64a2 ld s1,8(sp) + 3bc08cc6: 6902 ld s2,0(sp) + 3bc08cc8: 6105 addi sp,sp,32 + 3bc08cca: 8082 ret + 3bc08ccc: 4589 li a1,2 + 3bc08cce: 02b61163 bne a2,a1,3bc08cf0 + 3bc08cd2: fcf7f793 andi a5,a5,-49 + 3bc08cd6: 0207e793 ori a5,a5,32 + 3bc08cda: 0087171b slliw a4,a4,0x8 + 3bc08cde: 8f3d xor a4,a4,a5 + 3bc08ce0: 30077713 andi a4,a4,768 + 3bc08ce4: 8fb9 xor a5,a5,a4 + 3bc08ce6: c01c sw a5,0(s0) + 3bc08ce8: c6fc sw a5,76(a3) + 3bc08cea: eb9ff0ef jal ra,3bc08ba2 + 3bc08cee: b77d j 3bc08c9c + 3bc08cf0: 4585 li a1,1 + 3bc08cf2: fab615e3 bne a2,a1,3bc08c9c + 3bc08cf6: fcf7f793 andi a5,a5,-49 + 3bc08cfa: 0107e793 ori a5,a5,16 + 3bc08cfe: 0087171b slliw a4,a4,0x8 + 3bc08d02: 8f3d xor a4,a4,a5 + 3bc08d04: 30077713 andi a4,a4,768 + 3bc08d08: 8fb9 xor a5,a5,a4 + 3bc08d0a: c01c sw a5,0(s0) + 3bc08d0c: c6fc sw a5,76(a3) + 3bc08d0e: ef1ff0ef jal ra,3bc08bfe + 3bc08d12: b769 j 3bc08c9c + 3bc08d14: 01092783 lw a5,16(s2) # 8006010 + 3bc08d18: 4501 li a0,0 + 3bc08d1a: c01c sw a5,0(s0) + 3bc08d1c: c6ef70ef jal ra,3bc0018a + 3bc08d20: bf69 j 3bc08cba + +000000003bc08d22 : + 3bc08d22: 080067b7 lui a5,0x8006 + 3bc08d26: 43b4 lw a3,64(a5) + 3bc08d28: bf000737 lui a4,0xbf000 + 3bc08d2c: 377d addiw a4,a4,-1 + 3bc08d2e: 8f75 and a4,a4,a3 + 3bc08d30: 0000b697 auipc a3,0xb + 3bc08d34: ac068693 addi a3,a3,-1344 # 3bc137f0 + 3bc08d38: c298 sw a4,0(a3) + 3bc08d3a: c3b8 sw a4,64(a5) + 3bc08d3c: 43b8 lw a4,64(a5) + 3bc08d3e: 0006a023 sw zero,0(a3) + 3bc08d42: 0407a023 sw zero,64(a5) # 8006040 + 3bc08d46: 4fd8 lw a4,28(a5) + 3bc08d48: 2701 sext.w a4,a4 + 3bc08d4a: 08076713 ori a4,a4,128 + 3bc08d4e: cfd8 sw a4,28(a5) + 3bc08d50: 0006a023 sw zero,0(a3) + 3bc08d54: 0007a023 sw zero,0(a5) + 3bc08d58: 4fd8 lw a4,28(a5) + 3bc08d5a: 2701 sext.w a4,a4 + 3bc08d5c: f7f77713 andi a4,a4,-129 + 3bc08d60: c298 sw a4,0(a3) + 3bc08d62: cfd8 sw a4,28(a5) + 3bc08d64: 8082 ret + +000000003bc08d66 : + 3bc08d66: 1141 addi sp,sp,-16 + 3bc08d68: e406 sd ra,8(sp) + 3bc08d6a: e022 sd s0,0(sp) + 3bc08d6c: ebfff0ef jal ra,3bc08c2a + 3bc08d70: 08000737 lui a4,0x8000 + 3bc08d74: 15472783 lw a5,340(a4) # 8000154 + 3bc08d78: 0000b417 auipc s0,0xb + 3bc08d7c: a7840413 addi s0,s0,-1416 # 3bc137f0 + 3bc08d80: 2781 sext.w a5,a5 + 3bc08d82: 9bf9 andi a5,a5,-2 + 3bc08d84: 14f72a23 sw a5,340(a4) + 3bc08d88: 00042023 sw zero,0(s0) + 3bc08d8c: 12072823 sw zero,304(a4) + 3bc08d90: dabff0ef jal ra,3bc08b3a + 3bc08d94: 080067b7 lui a5,0x8006 + 3bc08d98: 80000737 lui a4,0x80000 + 3bc08d9c: c3b8 sw a4,64(a5) + 3bc08d9e: 00042023 sw zero,0(s0) + 3bc08da2: 60a2 ld ra,8(sp) + 3bc08da4: 6402 ld s0,0(sp) + 3bc08da6: 0007a023 sw zero,0(a5) # 8006000 + 3bc08daa: 0141 addi sp,sp,16 + 3bc08dac: 8082 ret + +000000003bc08dae : + 3bc08dae: 080007b7 lui a5,0x8000 + 3bc08db2: 10078693 addi a3,a5,256 # 8000100 + 3bc08db6: 4af8 lw a4,84(a3) + 3bc08db8: 0000b617 auipc a2,0xb + 3bc08dbc: a3860613 addi a2,a2,-1480 # 3bc137f0 + 3bc08dc0: 20078793 addi a5,a5,512 + 3bc08dc4: 2701 sext.w a4,a4 + 3bc08dc6: 9b79 andi a4,a4,-2 + 3bc08dc8: caf8 sw a4,84(a3) + 3bc08dca: 00062023 sw zero,0(a2) + 3bc08dce: f207a823 sw zero,-208(a5) + 3bc08dd2: 43d4 lw a3,4(a5) + 3bc08dd4: 000405b7 lui a1,0x40 + 3bc08dd8: 8ecd or a3,a3,a1 + 3bc08dda: c214 sw a3,0(a2) + 3bc08ddc: c3d4 sw a3,4(a5) + 3bc08dde: 53d8 lw a4,36(a5) + 3bc08de0: 8f4d or a4,a4,a1 + 3bc08de2: c218 sw a4,0(a2) + 3bc08de4: d3d8 sw a4,36(a5) + 3bc08de6: 8082 ret + +000000003bc08de8 : + 3bc08de8: 08004737 lui a4,0x8004 + 3bc08dec: 0000b697 auipc a3,0xb + 3bc08df0: a0468693 addi a3,a3,-1532 # 3bc137f0 + 3bc08df4: 1bc72783 lw a5,444(a4) # 80041bc + 3bc08df8: 2781 sext.w a5,a5 + 3bc08dfa: c29c sw a5,0(a3) + 3bc08dfc: 8b85 andi a5,a5,1 + 3bc08dfe: dbfd beqz a5,3bc08df4 + 3bc08e00: 32072023 sw zero,800(a4) + 3bc08e04: 1b072783 lw a5,432(a4) + 3bc08e08: 2781 sext.w a5,a5 + 3bc08e0a: fc07f793 andi a5,a5,-64 + 3bc08e0e: 0057e793 ori a5,a5,5 + 3bc08e12: c29c sw a5,0(a3) + 3bc08e14: 1af72823 sw a5,432(a4) + 3bc08e18: 4785 li a5,1 + 3bc08e1a: 32f72023 sw a5,800(a4) + 3bc08e1e: 8082 ret + +000000003bc08e20 : + 3bc08e20: 080036b7 lui a3,0x8003 + 3bc08e24: 0000b717 auipc a4,0xb + 3bc08e28: 9cc70713 addi a4,a4,-1588 # 3bc137f0 + 3bc08e2c: 569c lw a5,40(a3) + 3bc08e2e: 2781 sext.w a5,a5 + 3bc08e30: c31c sw a5,0(a4) + 3bc08e32: 1007f793 andi a5,a5,256 + 3bc08e36: dbfd beqz a5,3bc08e2c + 3bc08e38: 8082 ret + +000000003bc08e3a : + 3bc08e3a: 1141 addi sp,sp,-16 + 3bc08e3c: 4551 li a0,20 + 3bc08e3e: e406 sd ra,8(sp) + 3bc08e40: b4af70ef jal ra,3bc0018a + 3bc08e44: 080007b7 lui a5,0x8000 + 3bc08e48: 4741 li a4,16 + 3bc08e4a: 12e7a023 sw a4,288(a5) # 8000120 + 3bc08e4e: 60a2 ld ra,8(sp) + 3bc08e50: 4705 li a4,1 + 3bc08e52: 0000b697 auipc a3,0xb + 3bc08e56: 98e6af23 sw a4,-1634(a3) # 3bc137f0 + 3bc08e5a: 10e7ac23 sw a4,280(a5) + 3bc08e5e: 0141 addi sp,sp,16 + 3bc08e60: 8082 ret + +000000003bc08e62 : + 3bc08e62: 1141 addi sp,sp,-16 + 3bc08e64: e406 sd ra,8(sp) + 3bc08e66: 0000b797 auipc a5,0xb + 3bc08e6a: 98a78793 addi a5,a5,-1654 # 3bc137f0 + 3bc08e6e: 0007a023 sw zero,0(a5) + 3bc08e72: 08000737 lui a4,0x8000 + 3bc08e76: 10072c23 sw zero,280(a4) # 8000118 + 3bc08e7a: 08006737 lui a4,0x8006 + 3bc08e7e: 4778 lw a4,76(a4) + 3bc08e80: c398 sw a4,0(a5) + 3bc08e82: ee5ff0ef jal ra,3bc08d66 + 3bc08e86: 60a2 ld ra,8(sp) + 3bc08e88: 0141 addi sp,sp,16 + 3bc08e8a: fb1ff06f j 3bc08e3a + +000000003bc08e8e : + 3bc08e8e: 08004637 lui a2,0x8004 + 3bc08e92: 0000b697 auipc a3,0xb + 3bc08e96: 95e68693 addi a3,a3,-1698 # 3bc137f0 + 3bc08e9a: 4705 li a4,1 + 3bc08e9c: 425c lw a5,4(a2) + 3bc08e9e: 2781 sext.w a5,a5 + 3bc08ea0: c29c sw a5,0(a3) + 3bc08ea2: 8b9d andi a5,a5,7 + 3bc08ea4: fee79ce3 bne a5,a4,3bc08e9c + 3bc08ea8: 8082 ret + +000000003bc08eaa : + 3bc08eaa: 4785 li a5,1 + 3bc08eac: 0000b717 auipc a4,0xb + 3bc08eb0: 94470713 addi a4,a4,-1724 # 3bc137f0 + 3bc08eb4: 080006b7 lui a3,0x8000 + 3bc08eb8: c31c sw a5,0(a4) + 3bc08eba: 16f6aa23 sw a5,372(a3) # 8000174 + 3bc08ebe: 08003637 lui a2,0x8003 + 3bc08ec2: 468d li a3,3 + 3bc08ec4: 5a1c lw a5,48(a2) + 3bc08ec6: 2781 sext.w a5,a5 + 3bc08ec8: c31c sw a5,0(a4) + 3bc08eca: 2487b78b extu a5,a5,9,8 + 3bc08ece: fed79be3 bne a5,a3,3bc08ec4 + 3bc08ed2: 4785 li a5,1 + 3bc08ed4: 02f51a63 bne a0,a5,3bc08f08 + 3bc08ed8: 0800a7b7 lui a5,0x800a + 3bc08edc: 46ed li a3,27 + 3bc08ede: c394 sw a3,0(a5) + 3bc08ee0: 0800a7b7 lui a5,0x800a + 3bc08ee4: 4685 li a3,1 + 3bc08ee6: c3d4 sw a3,4(a5) + 3bc08ee8: 020006b7 lui a3,0x2000 + 3bc08eec: fcb68693 addi a3,a3,-53 # 1ffffcb <__BSS_SIZE__+0x1ffa3bb> + 3bc08ef0: c794 sw a3,8(a5) + 3bc08ef2: 400006b7 lui a3,0x40000 + 3bc08ef6: 16fd addi a3,a3,-1 + 3bc08ef8: c7d4 sw a3,12(a5) + 3bc08efa: 47c1 li a5,16 + 3bc08efc: c31c sw a5,0(a4) + 3bc08efe: 08000737 lui a4,0x8000 + 3bc08f02: 16f72a23 sw a5,372(a4) # 8000174 + 3bc08f06: 8082 ret + 3bc08f08: 0800a7b7 lui a5,0x800a + 3bc08f0c: 0007a023 sw zero,0(a5) # 800a000 + 3bc08f10: bfc1 j 3bc08ee0 + +000000003bc08f12 : + 3bc08f12: 08004737 lui a4,0x8004 + 3bc08f16: 080037b7 lui a5,0x8003 + 3bc08f1a: 439c lw a5,0(a5) + 3bc08f1c: 19072683 lw a3,400(a4) # 8004190 + 3bc08f20: 0000b797 auipc a5,0xb + 3bc08f24: 8d078793 addi a5,a5,-1840 # 3bc137f0 + 3bc08f28: c394 sw a3,0(a5) + 3bc08f2a: 19472703 lw a4,404(a4) + 3bc08f2e: c398 sw a4,0(a5) + 3bc08f30: 8082 ret + +000000003bc08f32 : + 3bc08f32: 08004737 lui a4,0x8004 + 3bc08f36: 32072023 sw zero,800(a4) # 8004320 + 3bc08f3a: 1b072783 lw a5,432(a4) + 3bc08f3e: 2781 sext.w a5,a5 + 3bc08f40: 0207e793 ori a5,a5,32 + 3bc08f44: 0000b697 auipc a3,0xb + 3bc08f48: 8af6a623 sw a5,-1876(a3) # 3bc137f0 + 3bc08f4c: 1af72823 sw a5,432(a4) + 3bc08f50: 4785 li a5,1 + 3bc08f52: 32f72023 sw a5,800(a4) + 3bc08f56: 8082 ret + +000000003bc08f58 : + 3bc08f58: 080067b7 lui a5,0x8006 + 3bc08f5c: 00080737 lui a4,0x80 + 3bc08f60: 0207a423 sw zero,40(a5) # 8006028 + 3bc08f64: 0705 addi a4,a4,1 + 3bc08f66: cbf8 sw a4,84(a5) + 3bc08f68: 01011737 lui a4,0x1011 + 3bc08f6c: 80870713 addi a4,a4,-2040 # 1010808 <__BSS_SIZE__+0x100abf8> + 3bc08f70: 030036b7 lui a3,0x3003 + 3bc08f74: cfb8 sw a4,88(a5) + 3bc08f76: 90068693 addi a3,a3,-1792 # 3002900 <__BSS_SIZE__+0x2ffccf0> + 3bc08f7a: 0000b717 auipc a4,0xb + 3bc08f7e: 84e72703 lw a4,-1970(a4) # 3bc137c8 + 3bc08f82: caf8 sw a4,84(a3) + 3bc08f84: 0000b717 auipc a4,0xb + 3bc08f88: 84c75703 lhu a4,-1972(a4) # 3bc137d0 + 3bc08f8c: ceb8 sw a4,88(a3) + 3bc08f8e: 0000b717 auipc a4,0xb + 3bc08f92: 84a73703 ld a4,-1974(a4) # 3bc137d8 + 3bc08f96: 5c07370b extu a4,a4,23,0 + 3bc08f9a: 0000b617 auipc a2,0xb + 3bc08f9e: 85660613 addi a2,a2,-1962 # 3bc137f0 + 3bc08fa2: 2701 sext.w a4,a4 + 3bc08fa4: c218 sw a4,0(a2) + 3bc08fa6: cef8 sw a4,92(a3) + 3bc08fa8: 4ab8 lw a4,80(a3) + 3bc08faa: 2701 sext.w a4,a4 + 3bc08fac: 00174713 xori a4,a4,1 + 3bc08fb0: fa177713 andi a4,a4,-95 + 3bc08fb4: 02076713 ori a4,a4,32 + 3bc08fb8: c218 sw a4,0(a2) + 3bc08fba: cab8 sw a4,80(a3) + 3bc08fbc: 47d8 lw a4,12(a5) + 3bc08fbe: 2701 sext.w a4,a4 + 3bc08fc0: 30b74693 xori a3,a4,779 + 3bc08fc4: 3c06b68b extu a3,a3,15,0 + 3bc08fc8: 8f35 xor a4,a4,a3 + 3bc08fca: c218 sw a4,0(a2) + 3bc08fcc: c7d8 sw a4,12(a5) + 3bc08fce: 4b98 lw a4,16(a5) + 3bc08fd0: 080066b7 lui a3,0x8006 + 3bc08fd4: 2701 sext.w a4,a4 + 3bc08fd6: f0077713 andi a4,a4,-256 + 3bc08fda: cb98 sw a4,16(a5) + 3bc08fdc: 4705 li a4,1 + 3bc08fde: c218 sw a4,0(a2) + 3bc08fe0: c3d8 sw a4,4(a5) + 3bc08fe2: 47d8 lw a4,12(a5) + 3bc08fe4: 2701 sext.w a4,a4 + 3bc08fe6: 08076713 ori a4,a4,128 + 3bc08fea: c218 sw a4,0(a2) + 3bc08fec: c7d8 sw a4,12(a5) + 3bc08fee: 6721 lui a4,0x8 + 3bc08ff0: 4a9c lw a5,16(a3) + 3bc08ff2: 2781 sext.w a5,a5 + 3bc08ff4: c21c sw a5,0(a2) + 3bc08ff6: 8ff9 and a5,a5,a4 + 3bc08ff8: 2781 sext.w a5,a5 + 3bc08ffa: dbfd beqz a5,3bc08ff0 + 3bc08ffc: 8082 ret + +000000003bc08ffe : + 3bc08ffe: 6785 lui a5,0x1 + 3bc09000: 08006737 lui a4,0x8006 + 3bc09004: 2f578793 addi a5,a5,757 # 12f5 <__BSS_SIZE__-0x491b> + 3bc09008: c37c sw a5,68(a4) + 3bc0900a: 0000a697 auipc a3,0xa + 3bc0900e: 7e668693 addi a3,a3,2022 # 3bc137f0 + 3bc09012: 0006a023 sw zero,0(a3) + 3bc09016: 080007b7 lui a5,0x8000 + 3bc0901a: 0e07aa23 sw zero,244(a5) # 80000f4 + 3bc0901e: 080047b7 lui a5,0x8004 + 3bc09022: 5b98 lw a4,48(a5) + 3bc09024: 767d lui a2,0xfffff + 3bc09026: 5ff60613 addi a2,a2,1535 # fffffffffffff5ff <__BL2_END__+0xffffffffc43ebdef> + 3bc0902a: 2701 sext.w a4,a4 + 3bc0902c: 8f71 and a4,a4,a2 + 3bc0902e: c298 sw a4,0(a3) + 3bc09030: db98 sw a4,48(a5) + 3bc09032: 10078793 addi a5,a5,256 # 8004100 + 3bc09036: 47b8 lw a4,72(a5) + 3bc09038: 7f800637 lui a2,0x7f800 + 3bc0903c: 167d addi a2,a2,-1 + 3bc0903e: 2701 sext.w a4,a4 + 3bc09040: 8f71 and a4,a4,a2 + 3bc09042: c298 sw a4,0(a3) + 3bc09044: c7b8 sw a4,72(a5) + 3bc09046: 8082 ret + +000000003bc09048 : + 3bc09048: 679d lui a5,0x7 + 3bc0904a: 0000a617 auipc a2,0xa + 3bc0904e: 7a660613 addi a2,a2,1958 # 3bc137f0 + 3bc09052: c8178793 addi a5,a5,-895 # 6c81 <__BSS_SIZE__+0x1071> + 3bc09056: c21c sw a5,0(a2) + 3bc09058: 08006737 lui a4,0x8006 + 3bc0905c: c37c sw a5,68(a4) + 3bc0905e: 08004737 lui a4,0x8004 + 3bc09062: 18070593 addi a1,a4,384 # 8004180 + 3bc09066: 499c lw a5,16(a1) + 3bc09068: 060006b7 lui a3,0x6000 + 3bc0906c: 1f000537 lui a0,0x1f000 + 3bc09070: 2781 sext.w a5,a5 + 3bc09072: 8ebd xor a3,a3,a5 + 3bc09074: 8ee9 and a3,a3,a0 + 3bc09076: 8fb5 xor a5,a5,a3 + 3bc09078: 2781 sext.w a5,a5 + 3bc0907a: c99c sw a5,16(a1) + 3bc0907c: 000307b7 lui a5,0x30 + 3bc09080: 03378793 addi a5,a5,51 # 30033 <__BSS_SIZE__+0x2a423> + 3bc09084: c21c sw a5,0(a2) + 3bc09086: 080006b7 lui a3,0x8000 + 3bc0908a: 0ef6aa23 sw a5,244(a3) # 80000f4 + 3bc0908e: 5b1c lw a5,48(a4) + 3bc09090: 76fd lui a3,0xfffff + 3bc09092: bff68693 addi a3,a3,-1025 # ffffffffffffebff <__BL2_END__+0xffffffffc43eb3ef> + 3bc09096: 2781 sext.w a5,a5 + 3bc09098: 8ff5 and a5,a5,a3 + 3bc0909a: 6685 lui a3,0x1 + 3bc0909c: a0068693 addi a3,a3,-1536 # a00 <__BSS_SIZE__-0x5210> + 3bc090a0: 8fd5 or a5,a5,a3 + 3bc090a2: c21c sw a5,0(a2) + 3bc090a4: db1c sw a5,48(a4) + 3bc090a6: 10070713 addi a4,a4,256 + 3bc090aa: 473c lw a5,72(a4) + 3bc090ac: 808006b7 lui a3,0x80800 + 3bc090b0: 8fd5 or a5,a5,a3 + 3bc090b2: c21c sw a5,0(a2) + 3bc090b4: c73c sw a5,72(a4) + 3bc090b6: 8082 ret + +000000003bc090b8 : + 3bc090b8: 715d addi sp,sp,-80 + 3bc090ba: f44e sd s3,40(sp) + 3bc090bc: e85a sd s6,16(sp) + 3bc090be: e486 sd ra,72(sp) + 3bc090c0: e0a2 sd s0,64(sp) + 3bc090c2: fc26 sd s1,56(sp) + 3bc090c4: f84a sd s2,48(sp) + 3bc090c6: f052 sd s4,32(sp) + 3bc090c8: ec56 sd s5,24(sp) + 3bc090ca: e45e sd s7,8(sp) + 3bc090cc: 080007b7 lui a5,0x8000 + 3bc090d0: 00fe0737 lui a4,0xfe0 + 3bc090d4: cff8 sw a4,92(a5) + 3bc090d6: 080047b7 lui a5,0x8004 + 3bc090da: 5407a023 sw zero,1344(a5) # 8004540 + 3bc090de: 5e07a823 sw zero,1520(a5) + 3bc090e2: 6a07a023 sw zero,1696(a5) + 3bc090e6: 08004b37 lui s6,0x8004 + 3bc090ea: 0000a997 auipc s3,0xa + 3bc090ee: 70698993 addi s3,s3,1798 # 3bc137f0 + 3bc090f2: 3fcb2783 lw a5,1020(s6) # 80043fc + 3bc090f6: 2781 sext.w a5,a5 + 3bc090f8: 00f9a023 sw a5,0(s3) + 3bc090fc: fbfd bnez a5,3bc090f2 + 3bc090fe: 030b2783 lw a5,48(s6) + 3bc09102: 0007849b sext.w s1,a5 + 3bc09106: 0017f913 andi s2,a5,1 + 3bc0910a: fd44f793 andi a5,s1,-44 + 3bc0910e: 00f9a023 sw a5,0(s3) + 3bc09112: 02fb2823 sw a5,48(s6) + 3bc09116: ee9ff0ef jal ra,3bc08ffe + 3bc0911a: 244b2a03 lw s4,580(s6) + 3bc0911e: 2a01 sext.w s4,s4 + 3bc09120: 0149a023 sw s4,0(s3) + 3bc09124: 001a7a13 andi s4,s4,1 + 3bc09128: e08ff0ef jal ra,3bc08730 + 3bc0912c: 120a0e63 beqz s4,3bc09268 + 3bc09130: 0e0b2403 lw s0,224(s6) + 3bc09134: 00040a9b sext.w s5,s0 + 3bc09138: 01945b9b srliw s7,s0,0x19 + 3bc0913c: 6994340b extu s0,s0,26,25 + 3bc09140: e07d bnez s0,3bc09226 + 3bc09142: 0159a023 sw s5,0(s3) + 3bc09146: 3c04358b extu a1,s0,15,0 + 3bc0914a: 0805e593 ori a1,a1,128 + 3bc0914e: 4505 li a0,1 + 3bc09150: 977ff0ef jal ra,3bc08ac6 + 3bc09154: 08000737 lui a4,0x8000 + 3bc09158: 18072783 lw a5,384(a4) # 8000180 + 3bc0915c: 004a1a1b slliw s4,s4,0x4 + 3bc09160: 2781 sext.w a5,a5 + 3bc09162: 0017e793 ori a5,a5,1 + 3bc09166: 0147ca33 xor s4,a5,s4 + 3bc0916a: 010a7a13 andi s4,s4,16 + 3bc0916e: 0147ca33 xor s4,a5,s4 + 3bc09172: 0149a023 sw s4,0(s3) + 3bc09176: 19472023 sw s4,384(a4) + 3bc0917a: 08003737 lui a4,0x8003 + 3bc0917e: 44472783 lw a5,1092(a4) # 8003444 + 3bc09182: 2781 sext.w a5,a5 + 3bc09184: 00f9a023 sw a5,0(s3) + 3bc09188: 8b85 andi a5,a5,1 + 3bc0918a: dbf5 beqz a5,3bc0917e + 3bc0918c: 00040737 lui a4,0x40 + 3bc09190: 080107b7 lui a5,0x8010 + 3bc09194: 08004437 lui s0,0x8004 + 3bc09198: c398 sw a4,0(a5) + 3bc0919a: 503c lw a5,96(s0) + 3bc0919c: 08040a13 addi s4,s0,128 # 8004080 + 3bc091a0: 4505 li a0,1 + 3bc091a2: 2781 sext.w a5,a5 + 3bc091a4: 9bf9 andi a5,a5,-2 + 3bc091a6: 00f9a023 sw a5,0(s3) + 3bc091aa: d03c sw a5,96(s0) + 3bc091ac: 05ca2583 lw a1,92(s4) # 1f005c <__BSS_SIZE__+0x1ea44c> + 3bc091b0: 2581 sext.w a1,a1 + 3bc091b2: 00b9a023 sw a1,0(s3) + 3bc091b6: 3c05b58b extu a1,a1,15,0 + 3bc091ba: 90dff0ef jal ra,3bc08ac6 + 3bc091be: 060a2583 lw a1,96(s4) + 3bc091c2: 4509 li a0,2 + 3bc091c4: 2581 sext.w a1,a1 + 3bc091c6: 00b9a023 sw a1,0(s3) + 3bc091ca: 7d05b58b extu a1,a1,31,16 + 3bc091ce: 8f9ff0ef jal ra,3bc08ac6 + 3bc091d2: 581c lw a5,48(s0) + 3bc091d4: 60a6 ld ra,72(sp) + 3bc091d6: 7a02 ld s4,32(sp) + 3bc091d8: 2781 sext.w a5,a5 + 3bc091da: 0097c733 xor a4,a5,s1 + 3bc091de: 02077713 andi a4,a4,32 + 3bc091e2: 8fb9 xor a5,a5,a4 + 3bc091e4: 0097c733 xor a4,a5,s1 + 3bc091e8: 8b21 andi a4,a4,8 + 3bc091ea: 8fb9 xor a5,a5,a4 + 3bc091ec: 8cbd xor s1,s1,a5 + 3bc091ee: 8889 andi s1,s1,2 + 3bc091f0: 8fa5 xor a5,a5,s1 + 3bc091f2: 9bf9 andi a5,a5,-2 + 3bc091f4: 0127e7b3 or a5,a5,s2 + 3bc091f8: 00f9a023 sw a5,0(s3) + 3bc091fc: d81c sw a5,48(s0) + 3bc091fe: 50040713 addi a4,s0,1280 + 3bc09202: 4785 li a5,1 + 3bc09204: c33c sw a5,64(a4) + 3bc09206: 58040713 addi a4,s0,1408 + 3bc0920a: db3c sw a5,112(a4) + 3bc0920c: 68040413 addi s0,s0,1664 + 3bc09210: d01c sw a5,32(s0) + 3bc09212: 6406 ld s0,64(sp) + 3bc09214: 74e2 ld s1,56(sp) + 3bc09216: 7942 ld s2,48(sp) + 3bc09218: 79a2 ld s3,40(sp) + 3bc0921a: 6ae2 ld s5,24(sp) + 3bc0921c: 6b42 ld s6,16(sp) + 3bc0921e: 6ba2 ld s7,8(sp) + 3bc09220: 6161 addi sp,sp,80 + 3bc09222: e27ff06f j 3bc09048 + 3bc09226: fa0005b7 lui a1,0xfa000 + 3bc0922a: 15fd addi a1,a1,-1 + 3bc0922c: 00baf5b3 and a1,s5,a1 + 3bc09230: 00b9a023 sw a1,0(s3) + 3bc09234: 4509 li a0,2 + 3bc09236: 7d05b58b extu a1,a1,31,16 + 3bc0923a: 88dff0ef jal ra,3bc08ac6 + 3bc0923e: 0dcb2403 lw s0,220(s6) + 3bc09242: 01aad59b srliw a1,s5,0x1a + 3bc09246: 0065959b slliw a1,a1,0x6 + 3bc0924a: 2401 sext.w s0,s0 + 3bc0924c: 0089a023 sw s0,0(s3) + 3bc09250: dff47413 andi s0,s0,-513 + 3bc09254: 8da1 xor a1,a1,s0 + 3bc09256: 0405f593 andi a1,a1,64 + 3bc0925a: 8c2d xor s0,s0,a1 + 3bc0925c: 002b959b slliw a1,s7,0x2 + 3bc09260: 8da1 xor a1,a1,s0 + 3bc09262: 8991 andi a1,a1,4 + 3bc09264: 8c2d xor s0,s0,a1 + 3bc09266: b5c5 j 3bc09146 + 3bc09268: 0dcb2583 lw a1,220(s6) + 3bc0926c: 67c1 lui a5,0x10 + 3bc0926e: dfb78793 addi a5,a5,-517 # fdfb <__BSS_SIZE__+0xa1eb> + 3bc09272: 2581 sext.w a1,a1 + 3bc09274: 00b9a023 sw a1,0(s3) + 3bc09278: dfb5f413 andi s0,a1,-517 + 3bc0927c: 8dfd and a1,a1,a5 + 3bc0927e: 0405e593 ori a1,a1,64 + 3bc09282: 4505 li a0,1 + 3bc09284: 04046413 ori s0,s0,64 + 3bc09288: 83fff0ef jal ra,3bc08ac6 + 3bc0928c: bd6d j 3bc09146 + +000000003bc0928e : + 3bc0928e: 7179 addi sp,sp,-48 + 3bc09290: f022 sd s0,32(sp) + 3bc09292: e052 sd s4,0(sp) + 3bc09294: f406 sd ra,40(sp) + 3bc09296: ec26 sd s1,24(sp) + 3bc09298: e84a sd s2,16(sp) + 3bc0929a: e44e sd s3,8(sp) + 3bc0929c: 080047b7 lui a5,0x8004 + 3bc092a0: 5407a023 sw zero,1344(a5) # 8004540 + 3bc092a4: 5e07a823 sw zero,1520(a5) + 3bc092a8: 6a07a023 sw zero,1696(a5) + 3bc092ac: 08004a37 lui s4,0x8004 + 3bc092b0: 0000a417 auipc s0,0xa + 3bc092b4: 54040413 addi s0,s0,1344 # 3bc137f0 + 3bc092b8: 3fca2783 lw a5,1020(s4) # 80043fc + 3bc092bc: 2781 sext.w a5,a5 + 3bc092be: c01c sw a5,0(s0) + 3bc092c0: ffe5 bnez a5,3bc092b8 + 3bc092c2: 030a2783 lw a5,48(s4) + 3bc092c6: 0007849b sext.w s1,a5 + 3bc092ca: 0017f913 andi s2,a5,1 + 3bc092ce: fd44f793 andi a5,s1,-44 + 3bc092d2: c01c sw a5,0(s0) + 3bc092d4: 02fa2823 sw a5,48(s4) + 3bc092d8: d27ff0ef jal ra,3bc08ffe + 3bc092dc: 080007b7 lui a5,0x8000 + 3bc092e0: 1847a983 lw s3,388(a5) # 8000184 + 3bc092e4: 2981 sext.w s3,s3 + 3bc092e6: 01342023 sw s3,0(s0) + 3bc092ea: 1049b98b extu s3,s3,4,4 + 3bc092ee: 02098763 beqz s3,3bc0931c + 3bc092f2: 060a2783 lw a5,96(s4) + 3bc092f6: 450d li a0,3 + 3bc092f8: 2781 sext.w a5,a5 + 3bc092fa: 0017e793 ori a5,a5,1 + 3bc092fe: c01c sw a5,0(s0) + 3bc09300: 06fa2023 sw a5,96(s4) + 3bc09304: 0e0a2583 lw a1,224(s4) + 3bc09308: 2581 sext.w a1,a1 + 3bc0930a: 0045e793 ori a5,a1,4 + 3bc0930e: 3c05b58b extu a1,a1,15,0 + 3bc09312: 0045e593 ori a1,a1,4 + 3bc09316: c01c sw a5,0(s0) + 3bc09318: faeff0ef jal ra,3bc08ac6 + 3bc0931c: c5aff0ef jal ra,3bc08776 + 3bc09320: 08000737 lui a4,0x8000 + 3bc09324: 18472783 lw a5,388(a4) # 8000184 + 3bc09328: 2781 sext.w a5,a5 + 3bc0932a: 0017e793 ori a5,a5,1 + 3bc0932e: c01c sw a5,0(s0) + 3bc09330: 18f72223 sw a5,388(a4) + 3bc09334: 08003737 lui a4,0x8003 + 3bc09338: 44472783 lw a5,1092(a4) # 8003444 + 3bc0933c: 2781 sext.w a5,a5 + 3bc0933e: c01c sw a5,0(s0) + 3bc09340: 8b89 andi a5,a5,2 + 3bc09342: dbfd beqz a5,3bc09338 + 3bc09344: 080107b7 lui a5,0x8010 + 3bc09348: 00040737 lui a4,0x40 + 3bc0934c: c398 sw a4,0(a5) + 3bc0934e: 02098763 beqz s3,3bc0937c + 3bc09352: 080049b7 lui s3,0x8004 + 3bc09356: 0e09a783 lw a5,224(s3) # 80040e0 + 3bc0935a: 65c1 lui a1,0x10 + 3bc0935c: 15ed addi a1,a1,-5 + 3bc0935e: 2781 sext.w a5,a5 + 3bc09360: ffb7f713 andi a4,a5,-5 + 3bc09364: 8dfd and a1,a1,a5 + 3bc09366: 450d li a0,3 + 3bc09368: c018 sw a4,0(s0) + 3bc0936a: f5cff0ef jal ra,3bc08ac6 + 3bc0936e: 0609a783 lw a5,96(s3) + 3bc09372: 2781 sext.w a5,a5 + 3bc09374: 9bf9 andi a5,a5,-2 + 3bc09376: c01c sw a5,0(s0) + 3bc09378: 06f9a023 sw a5,96(s3) + 3bc0937c: 08004737 lui a4,0x8004 + 3bc09380: 5b1c lw a5,48(a4) + 3bc09382: 70a2 ld ra,40(sp) + 3bc09384: 69a2 ld s3,8(sp) + 3bc09386: 2781 sext.w a5,a5 + 3bc09388: 0097c6b3 xor a3,a5,s1 + 3bc0938c: 0206f693 andi a3,a3,32 + 3bc09390: 8fb5 xor a5,a5,a3 + 3bc09392: 0097c6b3 xor a3,a5,s1 + 3bc09396: 8aa1 andi a3,a3,8 + 3bc09398: 8fb5 xor a5,a5,a3 + 3bc0939a: 8cbd xor s1,s1,a5 + 3bc0939c: 8889 andi s1,s1,2 + 3bc0939e: 8fa5 xor a5,a5,s1 + 3bc093a0: 9bf9 andi a5,a5,-2 + 3bc093a2: 0127e7b3 or a5,a5,s2 + 3bc093a6: c01c sw a5,0(s0) + 3bc093a8: db1c sw a5,48(a4) + 3bc093aa: 50070693 addi a3,a4,1280 # 8004500 + 3bc093ae: 4785 li a5,1 + 3bc093b0: c2bc sw a5,64(a3) + 3bc093b2: 7402 ld s0,32(sp) + 3bc093b4: 58070693 addi a3,a4,1408 + 3bc093b8: 64e2 ld s1,24(sp) + 3bc093ba: 6942 ld s2,16(sp) + 3bc093bc: 6a02 ld s4,0(sp) + 3bc093be: dabc sw a5,112(a3) + 3bc093c0: 68070713 addi a4,a4,1664 + 3bc093c4: d31c sw a5,32(a4) + 3bc093c6: 6145 addi sp,sp,48 + 3bc093c8: c81ff06f j 3bc09048 + +000000003bc093cc : + 3bc093cc: 7139 addi sp,sp,-64 + 3bc093ce: f822 sd s0,48(sp) + 3bc093d0: e456 sd s5,8(sp) + 3bc093d2: e05a sd s6,0(sp) + 3bc093d4: fc06 sd ra,56(sp) + 3bc093d6: f426 sd s1,40(sp) + 3bc093d8: f04a sd s2,32(sp) + 3bc093da: ec4e sd s3,24(sp) + 3bc093dc: e852 sd s4,16(sp) + 3bc093de: 080047b7 lui a5,0x8004 + 3bc093e2: 5407a023 sw zero,1344(a5) # 8004540 + 3bc093e6: 5e07a823 sw zero,1520(a5) + 3bc093ea: 8aaa mv s5,a0 + 3bc093ec: 6a07a023 sw zero,1696(a5) + 3bc093f0: 08004b37 lui s6,0x8004 + 3bc093f4: 0000a417 auipc s0,0xa + 3bc093f8: 3fc40413 addi s0,s0,1020 # 3bc137f0 + 3bc093fc: 3fcb2783 lw a5,1020(s6) # 80043fc + 3bc09400: 2781 sext.w a5,a5 + 3bc09402: c01c sw a5,0(s0) + 3bc09404: ffe5 bnez a5,3bc093fc + 3bc09406: 030b2783 lw a5,48(s6) + 3bc0940a: 0007891b sext.w s2,a5 + 3bc0940e: 0017f493 andi s1,a5,1 + 3bc09412: fd497793 andi a5,s2,-44 + 3bc09416: c01c sw a5,0(s0) + 3bc09418: 02fb2823 sw a5,48(s6) + 3bc0941c: be3ff0ef jal ra,3bc08ffe + 3bc09420: 4505 li a0,1 + 3bc09422: a89ff0ef jal ra,3bc08eaa + 3bc09426: 080006b7 lui a3,0x8000 + 3bc0942a: 08068613 addi a2,a3,128 # 8000080 + 3bc0942e: 4218 lw a4,0(a2) + 3bc09430: 002007b7 lui a5,0x200 + 3bc09434: 007f05b7 lui a1,0x7f0 + 3bc09438: 2701 sext.w a4,a4 + 3bc0943a: 8fb9 xor a5,a5,a4 + 3bc0943c: 8fed and a5,a5,a1 + 3bc0943e: 8f3d xor a4,a4,a5 + 3bc09440: 2701 sext.w a4,a4 + 3bc09442: 1f0007b7 lui a5,0x1f000 + 3bc09446: 8fb9 xor a5,a5,a4 + 3bc09448: 7f0005b7 lui a1,0x7f000 + 3bc0944c: 8fed and a5,a5,a1 + 3bc0944e: 8f3d xor a4,a4,a5 + 3bc09450: 2701 sext.w a4,a4 + 3bc09452: c018 sw a4,0(s0) + 3bc09454: c218 sw a4,0(a2) + 3bc09456: 00c62a03 lw s4,12(a2) + 3bc0945a: 18068693 addi a3,a3,384 + 3bc0945e: 000a079b sext.w a5,s4 + 3bc09462: 9bc5 andi a5,a5,-15 + 3bc09464: c01c sw a5,0(s0) + 3bc09466: c65c sw a5,12(a2) + 3bc09468: 0086a983 lw s3,8(a3) + 3bc0946c: 082a3a0b extu s4,s4,2,2 + 3bc09470: 2981 sext.w s3,s3 + 3bc09472: 01342023 sw s3,0(s0) + 3bc09476: 1049b98b extu s3,s3,4,4 + 3bc0947a: 02098763 beqz s3,3bc094a8 + 3bc0947e: 060b2783 lw a5,96(s6) + 3bc09482: 450d li a0,3 + 3bc09484: 2781 sext.w a5,a5 + 3bc09486: 0017e793 ori a5,a5,1 + 3bc0948a: c01c sw a5,0(s0) + 3bc0948c: 06fb2023 sw a5,96(s6) + 3bc09490: 0e0b2583 lw a1,224(s6) + 3bc09494: 2581 sext.w a1,a1 + 3bc09496: 0045e793 ori a5,a1,4 + 3bc0949a: 3c05b58b extu a1,a1,15,0 + 3bc0949e: 0045e593 ori a1,a1,4 + 3bc094a2: c01c sw a5,0(s0) + 3bc094a4: e22ff0ef jal ra,3bc08ac6 + 3bc094a8: 8556 mv a0,s5 + 3bc094aa: b12ff0ef jal ra,3bc087bc + 3bc094ae: 08000737 lui a4,0x8000 + 3bc094b2: 18872783 lw a5,392(a4) # 8000188 + 3bc094b6: 2781 sext.w a5,a5 + 3bc094b8: 0017e793 ori a5,a5,1 + 3bc094bc: c01c sw a5,0(s0) + 3bc094be: 18f72423 sw a5,392(a4) + 3bc094c2: 08003737 lui a4,0x8003 + 3bc094c6: 44472783 lw a5,1092(a4) # 8003444 + 3bc094ca: 2781 sext.w a5,a5 + 3bc094cc: c01c sw a5,0(s0) + 3bc094ce: 8b91 andi a5,a5,4 + 3bc094d0: dbfd beqz a5,3bc094c6 + 3bc094d2: 040a0563 beqz s4,3bc0951c + 3bc094d6: 08000737 lui a4,0x8000 + 3bc094da: 08070693 addi a3,a4,128 # 8000080 + 3bc094de: 46dc lw a5,12(a3) + 3bc094e0: 18070713 addi a4,a4,384 + 3bc094e4: 2781 sext.w a5,a5 + 3bc094e6: 9bed andi a5,a5,-5 + 3bc094e8: c01c sw a5,0(s0) + 3bc094ea: c6dc sw a5,12(a3) + 3bc094ec: 471c lw a5,8(a4) + 3bc094ee: 2781 sext.w a5,a5 + 3bc094f0: 0017e793 ori a5,a5,1 + 3bc094f4: c01c sw a5,0(s0) + 3bc094f6: c71c sw a5,8(a4) + 3bc094f8: 08003737 lui a4,0x8003 + 3bc094fc: 44472783 lw a5,1092(a4) # 8003444 + 3bc09500: 2781 sext.w a5,a5 + 3bc09502: c01c sw a5,0(s0) + 3bc09504: 8b91 andi a5,a5,4 + 3bc09506: dbfd beqz a5,3bc094fc + 3bc09508: 08000737 lui a4,0x8000 + 3bc0950c: 08c72783 lw a5,140(a4) # 800008c + 3bc09510: 2781 sext.w a5,a5 + 3bc09512: 0047e793 ori a5,a5,4 + 3bc09516: c01c sw a5,0(s0) + 3bc09518: 08f72623 sw a5,140(a4) + 3bc0951c: 02098763 beqz s3,3bc0954a + 3bc09520: 080049b7 lui s3,0x8004 + 3bc09524: 0e09a783 lw a5,224(s3) # 80040e0 + 3bc09528: 65c1 lui a1,0x10 + 3bc0952a: 15ed addi a1,a1,-5 + 3bc0952c: 2781 sext.w a5,a5 + 3bc0952e: ffb7f713 andi a4,a5,-5 + 3bc09532: 8dfd and a1,a1,a5 + 3bc09534: 450d li a0,3 + 3bc09536: c018 sw a4,0(s0) + 3bc09538: d8eff0ef jal ra,3bc08ac6 + 3bc0953c: 0609a783 lw a5,96(s3) + 3bc09540: 2781 sext.w a5,a5 + 3bc09542: 9bf9 andi a5,a5,-2 + 3bc09544: c01c sw a5,0(s0) + 3bc09546: 06f9a023 sw a5,96(s3) + 3bc0954a: cd6ff0ef jal ra,3bc08a20 + 3bc0954e: 080107b7 lui a5,0x8010 + 3bc09552: 00040737 lui a4,0x40 + 3bc09556: c398 sw a4,0(a5) + 3bc09558: 4501 li a0,0 + 3bc0955a: 951ff0ef jal ra,3bc08eaa + 3bc0955e: 08004737 lui a4,0x8004 + 3bc09562: 5b1c lw a5,48(a4) + 3bc09564: 70e2 ld ra,56(sp) + 3bc09566: 69e2 ld s3,24(sp) + 3bc09568: 2781 sext.w a5,a5 + 3bc0956a: 0127c6b3 xor a3,a5,s2 + 3bc0956e: 0206f693 andi a3,a3,32 + 3bc09572: 8fb5 xor a5,a5,a3 + 3bc09574: 0127c6b3 xor a3,a5,s2 + 3bc09578: 8aa1 andi a3,a3,8 + 3bc0957a: 8fb5 xor a5,a5,a3 + 3bc0957c: 0127c933 xor s2,a5,s2 + 3bc09580: 00297913 andi s2,s2,2 + 3bc09584: 0127c7b3 xor a5,a5,s2 + 3bc09588: 9bf9 andi a5,a5,-2 + 3bc0958a: 8fc5 or a5,a5,s1 + 3bc0958c: c01c sw a5,0(s0) + 3bc0958e: db1c sw a5,48(a4) + 3bc09590: 50070693 addi a3,a4,1280 # 8004500 + 3bc09594: 4785 li a5,1 + 3bc09596: c2bc sw a5,64(a3) + 3bc09598: 7442 ld s0,48(sp) + 3bc0959a: 58070693 addi a3,a4,1408 + 3bc0959e: 74a2 ld s1,40(sp) + 3bc095a0: 7902 ld s2,32(sp) + 3bc095a2: 6a42 ld s4,16(sp) + 3bc095a4: 6aa2 ld s5,8(sp) + 3bc095a6: 6b02 ld s6,0(sp) + 3bc095a8: dabc sw a5,112(a3) + 3bc095aa: 68070713 addi a4,a4,1664 + 3bc095ae: d31c sw a5,32(a4) + 3bc095b0: 6121 addi sp,sp,64 + 3bc095b2: a97ff06f j 3bc09048 + +000000003bc095b6 : + 3bc095b6: 7179 addi sp,sp,-48 + 3bc095b8: e84a sd s2,16(sp) + 3bc095ba: e44e sd s3,8(sp) + 3bc095bc: e052 sd s4,0(sp) + 3bc095be: f406 sd ra,40(sp) + 3bc095c0: f022 sd s0,32(sp) + 3bc095c2: ec26 sd s1,24(sp) + 3bc095c4: 080047b7 lui a5,0x8004 + 3bc095c8: 5407a023 sw zero,1344(a5) # 8004540 + 3bc095cc: 5e07a823 sw zero,1520(a5) + 3bc095d0: 89aa mv s3,a0 + 3bc095d2: 8a2e mv s4,a1 + 3bc095d4: 6a07a023 sw zero,1696(a5) + 3bc095d8: 08004737 lui a4,0x8004 + 3bc095dc: 0000a917 auipc s2,0xa + 3bc095e0: 21490913 addi s2,s2,532 # 3bc137f0 + 3bc095e4: 3fc72783 lw a5,1020(a4) # 80043fc + 3bc095e8: 2781 sext.w a5,a5 + 3bc095ea: 00f92023 sw a5,0(s2) + 3bc095ee: fbfd bnez a5,3bc095e4 + 3bc095f0: 5b1c lw a5,48(a4) + 3bc095f2: 0007849b sext.w s1,a5 + 3bc095f6: 0017f413 andi s0,a5,1 + 3bc095fa: fd44f793 andi a5,s1,-44 + 3bc095fe: 00f92023 sw a5,0(s2) + 3bc09602: db1c sw a5,48(a4) + 3bc09604: 9fbff0ef jal ra,3bc08ffe + 3bc09608: 4505 li a0,1 + 3bc0960a: 8a1ff0ef jal ra,3bc08eaa + 3bc0960e: 080007b7 lui a5,0x8000 + 3bc09612: 0bc7a703 lw a4,188(a5) # 80000bc + 3bc09616: 2701 sext.w a4,a4 + 3bc09618: 000a1863 bnez s4,3bc09628 + 3bc0961c: 77fd lui a5,0xfffff + 3bc0961e: 17fd addi a5,a5,-1 + 3bc09620: 8f7d and a4,a4,a5 + 3bc09622: 6789 lui a5,0x2 + 3bc09624: 8f5d or a4,a4,a5 + 3bc09626: a821 j 3bc0963e + 3bc09628: 4785 li a5,1 + 3bc0962a: 00fa1763 bne s4,a5,3bc09638 + 3bc0962e: 77f9 lui a5,0xffffe + 3bc09630: 17fd addi a5,a5,-1 + 3bc09632: 8f7d and a4,a4,a5 + 3bc09634: 6785 lui a5,0x1 + 3bc09636: b7fd j 3bc09624 + 3bc09638: 4789 li a5,2 + 3bc0963a: 0efa0963 beq s4,a5,3bc0972c + 3bc0963e: 00e92023 sw a4,0(s2) + 3bc09642: 00092703 lw a4,0(s2) + 3bc09646: 080007b7 lui a5,0x8000 + 3bc0964a: 0ae7ae23 sw a4,188(a5) # 80000bc + 3bc0964e: 0e0a1163 bnez s4,3bc09730 + 3bc09652: 08004737 lui a4,0x8004 + 3bc09656: 475c lw a5,12(a4) + 3bc09658: 2781 sext.w a5,a5 + 3bc0965a: 0807e793 ori a5,a5,128 + 3bc0965e: 00f92023 sw a5,0(s2) + 3bc09662: c75c sw a5,12(a4) + 3bc09664: af2ff0ef jal ra,3bc08956 + 3bc09668: 080007b7 lui a5,0x8000 + 3bc0966c: 18c7a783 lw a5,396(a5) # 800018c + 3bc09670: 2781 sext.w a5,a5 + 3bc09672: 4017e693 ori a3,a5,1025 + 3bc09676: 000a1663 bnez s4,3bc09682 + 3bc0967a: bff7f793 andi a5,a5,-1025 + 3bc0967e: 0017e693 ori a3,a5,1 + 3bc09682: 4785 li a5,1 + 3bc09684: 00f98763 beq s3,a5,3bc09692 + 3bc09688: 39bd addiw s3,s3,-17 + 3bc0968a: fef6f713 andi a4,a3,-17 + 3bc0968e: 0137e463 bltu a5,s3,3bc09696 + 3bc09692: 0106e713 ori a4,a3,16 + 3bc09696: 00e92023 sw a4,0(s2) + 3bc0969a: 080007b7 lui a5,0x8000 + 3bc0969e: 18e7a623 sw a4,396(a5) # 800018c + 3bc096a2: 08003737 lui a4,0x8003 + 3bc096a6: 44472783 lw a5,1092(a4) # 8003444 + 3bc096aa: 2781 sext.w a5,a5 + 3bc096ac: 00f92023 sw a5,0(s2) + 3bc096b0: 8ba1 andi a5,a5,8 + 3bc096b2: dbf5 beqz a5,3bc096a6 + 3bc096b4: 080049b7 lui s3,0x8004 + 3bc096b8: 00c9a783 lw a5,12(s3) # 800400c + 3bc096bc: 00040737 lui a4,0x40 + 3bc096c0: 4501 li a0,0 + 3bc096c2: 2781 sext.w a5,a5 + 3bc096c4: f7f7f793 andi a5,a5,-129 + 3bc096c8: 00f92023 sw a5,0(s2) + 3bc096cc: 00f9a623 sw a5,12(s3) + 3bc096d0: 080107b7 lui a5,0x8010 + 3bc096d4: c398 sw a4,0(a5) + 3bc096d6: fd4ff0ef jal ra,3bc08eaa + 3bc096da: 0309a783 lw a5,48(s3) + 3bc096de: 70a2 ld ra,40(sp) + 3bc096e0: 6a02 ld s4,0(sp) + 3bc096e2: 2781 sext.w a5,a5 + 3bc096e4: 0097c733 xor a4,a5,s1 + 3bc096e8: 02077713 andi a4,a4,32 + 3bc096ec: 8fb9 xor a5,a5,a4 + 3bc096ee: 0097c733 xor a4,a5,s1 + 3bc096f2: 8b21 andi a4,a4,8 + 3bc096f4: 8fb9 xor a5,a5,a4 + 3bc096f6: 8cbd xor s1,s1,a5 + 3bc096f8: 8889 andi s1,s1,2 + 3bc096fa: 8fa5 xor a5,a5,s1 + 3bc096fc: 9bf9 andi a5,a5,-2 + 3bc096fe: 8fc1 or a5,a5,s0 + 3bc09700: 00f92023 sw a5,0(s2) + 3bc09704: 02f9a823 sw a5,48(s3) + 3bc09708: 50098713 addi a4,s3,1280 + 3bc0970c: 4785 li a5,1 + 3bc0970e: c33c sw a5,64(a4) + 3bc09710: 58098713 addi a4,s3,1408 + 3bc09714: 7402 ld s0,32(sp) + 3bc09716: db3c sw a5,112(a4) + 3bc09718: 68098993 addi s3,s3,1664 + 3bc0971c: 64e2 ld s1,24(sp) + 3bc0971e: 6942 ld s2,16(sp) + 3bc09720: 02f9a023 sw a5,32(s3) + 3bc09724: 69a2 ld s3,8(sp) + 3bc09726: 6145 addi sp,sp,48 + 3bc09728: 921ff06f j 3bc09048 + 3bc0972c: 678d lui a5,0x3 + 3bc0972e: bddd j 3bc09624 + 3bc09730: 854e mv a0,s3 + 3bc09732: 974ff0ef jal ra,3bc088a6 + 3bc09736: bf0d j 3bc09668 + +000000003bc09738 : + 3bc09738: 8082 ret + +000000003bc0973a : + 3bc0973a: 1101 addi sp,sp,-32 + 3bc0973c: 000e0737 lui a4,0xe0 + 3bc09740: e802 sd zero,16(sp) + 3bc09742: ec02 sd zero,24(sp) + 3bc09744: c602 sw zero,12(sp) + 3bc09746: 080107b7 lui a5,0x8010 + 3bc0974a: 0719 addi a4,a4,6 + 3bc0974c: c398 sw a4,0(a5) + 3bc0974e: 0007a823 sw zero,16(a5) # 8010010 + 3bc09752: 577d li a4,-1 + 3bc09754: cbd8 sw a4,20(a5) + 3bc09756: 4711 li a4,4 + 3bc09758: cf98 sw a4,24(a5) + 3bc0975a: 40004737 lui a4,0x40004 + 3bc0975e: a0070713 addi a4,a4,-1536 # 40003a00 <__BL2_END__+0x43f01f0> + 3bc09762: c3b8 sw a4,64(a5) + 3bc09764: 4732 lw a4,12(sp) + 3bc09766: 0000a617 auipc a2,0xa + 3bc0976a: 08a60613 addi a2,a2,138 # 3bc137f0 + 3bc0976e: c3f8 sw a4,68(a5) + 3bc09770: 4742 lw a4,16(sp) + 3bc09772: c7b8 sw a4,72(a5) + 3bc09774: 4752 lw a4,20(sp) + 3bc09776: c7f8 sw a4,76(a5) + 3bc09778: 4762 lw a4,24(sp) + 3bc0977a: cbb8 sw a4,80(a5) + 3bc0977c: 4772 lw a4,28(sp) + 3bc0977e: cbf8 sw a4,84(a5) + 3bc09780: 6741 lui a4,0x10 + 3bc09782: 0705 addi a4,a4,1 + 3bc09784: c398 sw a4,0(a5) + 3bc09786: 08010737 lui a4,0x8010 + 3bc0978a: 08072783 lw a5,128(a4) # 8010080 + 3bc0978e: 2781 sext.w a5,a5 + 3bc09790: c21c sw a5,0(a2) + 3bc09792: 8b91 andi a5,a5,4 + 3bc09794: dbfd beqz a5,3bc0978a + 3bc09796: 68c1 lui a7,0x10 + 3bc09798: 67c1 lui a5,0x10 + 3bc0979a: 40004837 lui a6,0x40004 + 3bc0979e: 00188e13 addi t3,a7,1 # 10001 <__BSS_SIZE__+0xa3f1> + 3bc097a2: 80004337 lui t1,0x80004 + 3bc097a6: c31c sw a5,0(a4) + 3bc097a8: 45d5 li a1,21 + 3bc097aa: 4f05 li t5,1 + 3bc097ac: 080107b7 lui a5,0x8010 + 3bc097b0: b0080813 addi a6,a6,-1280 # 40003b00 <__BL2_END__+0x43f02f0> + 3bc097b4: 8ff2 mv t6,t3 + 3bc097b6: a0030313 addi t1,t1,-1536 # ffffffff80003a00 <__BL2_END__+0xffffffff443f01f0> + 3bc097ba: 02000e93 li t4,32 + 3bc097be: 00bf16bb sllw a3,t5,a1 + 3bc097c2: cb94 sw a3,16(a5) + 3bc097c4: 0507a023 sw a6,64(a5) # 8010040 + 3bc097c8: 46b2 lw a3,12(sp) + 3bc097ca: ff05871b addiw a4,a1,-16 + 3bc097ce: 0ff77713 andi a4,a4,255 + 3bc097d2: c3f4 sw a3,68(a5) + 3bc097d4: 46c2 lw a3,16(sp) + 3bc097d6: c7b4 sw a3,72(a5) + 3bc097d8: 46d2 lw a3,20(sp) + 3bc097da: c7f4 sw a3,76(a5) + 3bc097dc: 46e2 lw a3,24(sp) + 3bc097de: cbb4 sw a3,80(a5) + 3bc097e0: 46f2 lw a3,28(sp) + 3bc097e2: cbf4 sw a3,84(a5) + 3bc097e4: 01f7a023 sw t6,0(a5) + 3bc097e8: 0807a683 lw a3,128(a5) + 3bc097ec: 2681 sext.w a3,a3 + 3bc097ee: c214 sw a3,0(a2) + 3bc097f0: 8a91 andi a3,a3,4 + 3bc097f2: dafd beqz a3,3bc097e8 + 3bc097f4: 0117a023 sw a7,0(a5) + 3bc097f8: 0007a823 sw zero,16(a5) + 3bc097fc: 0467a023 sw t1,64(a5) + 3bc09800: 46b2 lw a3,12(sp) + 3bc09802: c3f4 sw a3,68(a5) + 3bc09804: 46c2 lw a3,16(sp) + 3bc09806: c7b4 sw a3,72(a5) + 3bc09808: 46d2 lw a3,20(sp) + 3bc0980a: c7f4 sw a3,76(a5) + 3bc0980c: 46e2 lw a3,24(sp) + 3bc0980e: cbb4 sw a3,80(a5) + 3bc09810: 46f2 lw a3,28(sp) + 3bc09812: cbf4 sw a3,84(a5) + 3bc09814: 01c7a023 sw t3,0(a5) + 3bc09818: 0807a683 lw a3,128(a5) + 3bc0981c: 2681 sext.w a3,a3 + 3bc0981e: c214 sw a3,0(a2) + 3bc09820: 8a91 andi a3,a3,4 + 3bc09822: dafd beqz a3,3bc09818 + 3bc09824: 0117a023 sw a7,0(a5) + 3bc09828: 4214 lw a3,0(a2) + 3bc0982a: 8aa1 andi a3,a3,8 + 3bc0982c: e689 bnez a3,3bc09836 + 3bc0982e: 2585 addiw a1,a1,1 + 3bc09830: f9d597e3 bne a1,t4,3bc097be + 3bc09834: 473d li a4,15 + 3bc09836: 00e50023 sb a4,0(a0) # 1f000000 + 3bc0983a: 2701 sext.w a4,a4 + 3bc0983c: c218 sw a4,0(a2) + 3bc0983e: 080007b7 lui a5,0x8000 + 3bc09842: 20e7a423 sw a4,520(a5) # 8000208 + 3bc09846: 080107b7 lui a5,0x8010 + 3bc0984a: 00040737 lui a4,0x40 + 3bc0984e: c398 sw a4,0(a5) + 3bc09850: 6105 addi sp,sp,32 + 3bc09852: 8082 ret + +000000003bc09854 : + 3bc09854: 2f000793 li a5,752 + 3bc09858: 0000a717 auipc a4,0xa + 3bc0985c: faf72023 sw a5,-96(a4) # 3bc137f8 + 3bc09860: 06400793 li a5,100 + 3bc09864: 0000a717 auipc a4,0xa + 3bc09868: f8f72c23 sw a5,-104(a4) # 3bc137fc + 3bc0986c: 00002717 auipc a4,0x2 + 3bc09870: 1a072703 lw a4,416(a4) # 3bc0ba0c + 3bc09874: 0047569b srliw a3,a4,0x4 + 3bc09878: 463d li a2,15 + 3bc0987a: 0000a797 auipc a5,0xa + 3bc0987e: f8d7a323 sw a3,-122(a5) # 3bc13800 + 3bc09882: 0000a797 auipc a5,0xa + 3bc09886: f6c7a923 sw a2,-142(a5) # 3bc137f4 + 3bc0988a: 02f00713 li a4,47 + 3bc0988e: 077a slli a4,a4,0x1e + 3bc09890: 7c06b78b extu a5,a3,31,0 + 3bc09894: 02f757b3 divu a5,a4,a5 + 3bc09898: 0000a717 auipc a4,0xa + 3bc0989c: f2f73823 sd a5,-208(a4) # 3bc137c8 + 3bc098a0: 0fa00713 li a4,250 + 3bc098a4: 02d7073b mulw a4,a4,a3 + 3bc098a8: 06400693 li a3,100 + 3bc098ac: 02d7573b divuw a4,a4,a3 + 3bc098b0: 7c07370b extu a4,a4,31,0 + 3bc098b4: 0000a697 auipc a3,0xa + 3bc098b8: f0e6be23 sd a4,-228(a3) # 3bc137d0 + 3bc098bc: 3e800693 li a3,1000 + 3bc098c0: 02d70733 mul a4,a4,a3 + 3bc098c4: 02c787b3 mul a5,a5,a2 + 3bc098c8: 02e7d7b3 divu a5,a5,a4 + 3bc098cc: 0000a717 auipc a4,0xa + 3bc098d0: f0f73623 sd a5,-244(a4) # 3bc137d8 + 3bc098d4: e84ff06f j 3bc08f58 + +000000003bc098d8 : + 3bc098d8: 1141 addi sp,sp,-16 + 3bc098da: e406 sd ra,8(sp) + 3bc098dc: b29fe0ef jal ra,3bc08404 + 3bc098e0: 357d addiw a0,a0,-1 + 3bc098e2: 0ff57513 andi a0,a0,255 + 3bc098e6: 47a5 li a5,9 + 3bc098e8: 12a7ef63 bltu a5,a0,3bc09a26 + 3bc098ec: 00002717 auipc a4,0x2 + 3bc098f0: e2470713 addi a4,a4,-476 # 3bc0b710 + 3bc098f4: 44a7478b lrw a5,a4,a0,2 + 3bc098f8: 97ba add a5,a5,a4 + 3bc098fa: 8782 jr a5 + 3bc098fc: 12141737 lui a4,0x12141 + 3bc09900: 080007b7 lui a5,0x8000 + 3bc09904: 074d addi a4,a4,19 + 3bc09906: c398 sw a4,0(a5) + 3bc09908: 0c041737 lui a4,0xc041 + 3bc0990c: 50370713 addi a4,a4,1283 # c041503 + 3bc09910: c3d8 sw a4,4(a5) + 3bc09912: 06050737 lui a4,0x6050 + 3bc09916: 0705 addi a4,a4,1 + 3bc09918: c798 sw a4,8(a5) + 3bc0991a: 08071737 lui a4,0x8071 + 3bc0991e: b0270713 addi a4,a4,-1278 # 8070b02 + 3bc09922: c7d8 sw a4,12(a5) + 3bc09924: 0a0f1737 lui a4,0xa0f1 + 3bc09928: e0970713 addi a4,a4,-503 # a0f0e09 + 3bc0992c: cb98 sw a4,16(a5) + 3bc0992e: 00161737 lui a4,0x161 + 3bc09932: 10d70713 addi a4,a4,269 # 16110d <__BSS_SIZE__+0x15b4fd> + 3bc09936: cbd8 sw a4,20(a5) + 3bc09938: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0993c: 10000713 li a4,256 + 3bc09940: cfd8 sw a4,28(a5) + 3bc09942: 02136737 lui a4,0x2136 + 3bc09946: 57470713 addi a4,a4,1396 # 2136574 <__BSS_SIZE__+0x2130964> + 3bc0994a: d398 sw a4,32(a5) + 3bc0994c: 4721 li a4,8 + 3bc0994e: d3d8 sw a4,36(a5) + 3bc09950: 76512737 lui a4,0x76512 + 3bc09954: 30870713 addi a4,a4,776 # 76512308 <__BL2_END__+0x3a8feaf8> + 3bc09958: d798 sw a4,40(a5) + 3bc0995a: 4711 li a4,4 + 3bc0995c: d7d8 sw a4,44(a5) + 3bc0995e: a0e1 j 3bc09a26 + 3bc09960: 08071737 lui a4,0x8071 + 3bc09964: 080007b7 lui a5,0x8000 + 3bc09968: d0970713 addi a4,a4,-759 # 8070d09 + 3bc0996c: c398 sw a4,0(a5) + 3bc0996e: 06050737 lui a4,0x6050 + 3bc09972: 20b70713 addi a4,a4,523 # 605020b + 3bc09976: c3d8 sw a4,4(a5) + 3bc09978: 14040737 lui a4,0x14040 + 3bc0997c: 10070713 addi a4,a4,256 # 14040100 + 3bc09980: c798 sw a4,8(a5) + 3bc09982: 15031737 lui a4,0x15031 + 3bc09986: e0c70713 addi a4,a4,-500 # 15030e0c + 3bc0998a: c7d8 sw a4,12(a5) + 3bc0998c: 0a0f1737 lui a4,0xa0f1 + 3bc09990: 21370713 addi a4,a4,531 # a0f1213 + 3bc09994: cb98 sw a4,16(a5) + 3bc09996: 00111737 lui a4,0x111 + 3bc0999a: 0759 addi a4,a4,22 + 3bc0999c: cbd8 sw a4,20(a5) + 3bc0999e: 0007ac23 sw zero,24(a5) # 8000018 + 3bc099a2: 10000713 li a4,256 + 3bc099a6: cfd8 sw a4,28(a5) + 3bc099a8: 82135737 lui a4,0x82135 + 3bc099ac: 76470713 addi a4,a4,1892 # ffffffff82135764 <__BL2_END__+0xffffffff46521f54> + 3bc099b0: d398 sw a4,32(a5) + 3bc099b2: 67513737 lui a4,0x67513 + 3bc099b6: 0207a223 sw zero,36(a5) + 3bc099ba: 02870713 addi a4,a4,40 # 67513028 <__BL2_END__+0x2b8ff818> + 3bc099be: bf69 j 3bc09958 + 3bc099c0: 08071737 lui a4,0x8071 + 3bc099c4: 080007b7 lui a5,0x8000 + 3bc099c8: b0970713 addi a4,a4,-1271 # 8070b09 + 3bc099cc: c398 sw a4,0(a5) + 3bc099ce: 05000737 lui a4,0x5000 + 3bc099d2: 20670713 addi a4,a4,518 # 5000206 + 3bc099d6: c3d8 sw a4,4(a5) + 3bc099d8: 0c040737 lui a4,0xc040 + 3bc099dc: 10d70713 addi a4,a4,269 # c04010d + 3bc099e0: c798 sw a4,8(a5) + 3bc099e2: 15031737 lui a4,0x15031 + 3bc099e6: a1470713 addi a4,a4,-1516 # 15030a14 + 3bc099ea: c7d8 sw a4,12(a5) + 3bc099ec: 10111737 lui a4,0x10111 + 3bc099f0: 21370713 addi a4,a4,531 # 10111213 + 3bc099f4: cb98 sw a4,16(a5) + 3bc099f6: 000f1737 lui a4,0xf1 + 3bc099fa: 60e70713 addi a4,a4,1550 # f160e <__BSS_SIZE__+0xeb9fe> + 3bc099fe: cbd8 sw a4,20(a5) + 3bc09a00: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09a04: 10000713 li a4,256 + 3bc09a08: cfd8 sw a4,28(a5) + 3bc09a0a: 31756737 lui a4,0x31756 + 3bc09a0e: 02470713 addi a4,a4,36 # 31756024 + 3bc09a12: d398 sw a4,32(a5) + 3bc09a14: 4721 li a4,8 + 3bc09a16: d3d8 sw a4,36(a5) + 3bc09a18: 26473737 lui a4,0x26473 + 3bc09a1c: 51870713 addi a4,a4,1304 # 26473518 + 3bc09a20: d798 sw a4,40(a5) + 3bc09a22: 0207a623 sw zero,44(a5) + 3bc09a26: 60a2 ld ra,8(sp) + 3bc09a28: 0141 addi sp,sp,16 + 3bc09a2a: 8082 ret + 3bc09a2c: 0c061737 lui a4,0xc061 + 3bc09a30: 080007b7 lui a5,0x8000 + 3bc09a34: 80b70713 addi a4,a4,-2037 # c06080b + 3bc09a38: c398 sw a4,0(a5) + 3bc09a3a: 070d1737 lui a4,0x70d1 + 3bc09a3e: 90470713 addi a4,a4,-1788 # 70d0904 + 3bc09a42: c3d8 sw a4,4(a5) + 3bc09a44: 6741 lui a4,0x10 + 3bc09a46: 50270713 addi a4,a4,1282 # 10502 <__BSS_SIZE__+0xa8f2> + 3bc09a4a: c798 sw a4,8(a5) + 3bc09a4c: 110a1737 lui a4,0x110a1 + 3bc09a50: e0370713 addi a4,a4,-509 # 110a0e03 + 3bc09a54: c7d8 sw a4,12(a5) + 3bc09a56: 0f141737 lui a4,0xf141 + 3bc09a5a: 61070713 addi a4,a4,1552 # f141610 + 3bc09a5e: cb98 sw a4,16(a5) + 3bc09a60: 00151737 lui a4,0x151 + 3bc09a64: 31270713 addi a4,a4,786 # 151312 <__BSS_SIZE__+0x14b702> + 3bc09a68: cbd8 sw a4,20(a5) + 3bc09a6a: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09a6e: 10000713 li a4,256 + 3bc09a72: cfd8 sw a4,28(a5) + 3bc09a74: 71840737 lui a4,0x71840 + 3bc09a78: 53270713 addi a4,a4,1330 # 71840532 <__BL2_END__+0x35c2cd22> + 3bc09a7c: d398 sw a4,32(a5) + 3bc09a7e: 4719 li a4,6 + 3bc09a80: d3d8 sw a4,36(a5) + 3bc09a82: 76103737 lui a4,0x76103 + 3bc09a86: 42570713 addi a4,a4,1061 # 76103425 <__BL2_END__+0x3a4efc15> + 3bc09a8a: d798 sw a4,40(a5) + 3bc09a8c: 4721 li a4,8 + 3bc09a8e: b5f9 j 3bc0995c + 3bc09a90: 080b1737 lui a4,0x80b1 + 3bc09a94: 080007b7 lui a5,0x8000 + 3bc09a98: d0670713 addi a4,a4,-762 # 80b0d06 + 3bc09a9c: c398 sw a4,0(a5) + 3bc09a9e: 09010737 lui a4,0x9010 + 3bc09aa2: 40770713 addi a4,a4,1031 # 9010407 + 3bc09aa6: c3d8 sw a4,4(a5) + 3bc09aa8: 14050737 lui a4,0x14050 + 3bc09aac: 20c70713 addi a4,a4,524 # 1405020c + 3bc09ab0: c798 sw a4,8(a5) + 3bc09ab2: 15001737 lui a4,0x15001 + 3bc09ab6: e0370713 addi a4,a4,-509 # 15000e03 + 3bc09aba: c7d8 sw a4,12(a5) + 3bc09abc: 0a0f1737 lui a4,0xa0f1 + 3bc09ac0: 21370713 addi a4,a4,531 # a0f1213 + 3bc09ac4: cb98 sw a4,16(a5) + 3bc09ac6: 00111737 lui a4,0x111 + 3bc09aca: 0759 addi a4,a4,22 + 3bc09acc: cbd8 sw a4,20(a5) + 3bc09ace: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09ad2: 10000713 li a4,256 + 3bc09ad6: cfd8 sw a4,28(a5) + 3bc09ad8: 82135737 lui a4,0x82135 + 3bc09adc: 76470713 addi a4,a4,1892 # ffffffff82135764 <__BL2_END__+0xffffffff46521f54> + 3bc09ae0: d398 sw a4,32(a5) + 3bc09ae2: 67513737 lui a4,0x67513 + 3bc09ae6: 0207a223 sw zero,36(a5) + 3bc09aea: 20870713 addi a4,a4,520 # 67513208 <__BL2_END__+0x2b8ff9f8> + 3bc09aee: b5ad j 3bc09958 + 3bc09af0: 0b061737 lui a4,0xb061 + 3bc09af4: 080007b7 lui a5,0x8000 + 3bc09af8: 90870713 addi a4,a4,-1784 # b060908 + 3bc09afc: c398 sw a4,0(a5) + 3bc09afe: 02000737 lui a4,0x2000 + 3bc09b02: 10770713 addi a4,a4,263 # 2000107 <__BSS_SIZE__+0x1ffa4f7> + 3bc09b06: c3d8 sw a4,4(a5) + 3bc09b08: 0c050737 lui a4,0xc050 + 3bc09b0c: 40d70713 addi a4,a4,1037 # c05040d + 3bc09b10: c798 sw a4,8(a5) + 3bc09b12: 13141737 lui a4,0x13141 + 3bc09b16: 50370713 addi a4,a4,1283 # 13141503 + 3bc09b1a: c7d8 sw a4,12(a5) + 3bc09b1c: 160a1737 lui a4,0x160a1 + 3bc09b20: 11270713 addi a4,a4,274 # 160a1112 + 3bc09b24: cb98 sw a4,16(a5) + 3bc09b26: 000f1737 lui a4,0xf1 + 3bc09b2a: 0739 addi a4,a4,14 + 3bc09b2c: cbd8 sw a4,20(a5) + 3bc09b2e: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09b32: 10000713 li a4,256 + 3bc09b36: cfd8 sw a4,28(a5) + 3bc09b38: 28137737 lui a4,0x28137 + 3bc09b3c: 56470713 addi a4,a4,1380 # 28137564 + 3bc09b40: d398 sw a4,32(a5) + 3bc09b42: 76158737 lui a4,0x76158 + 3bc09b46: 0207a223 sw zero,36(a5) + 3bc09b4a: 32070713 addi a4,a4,800 # 76158320 <__BL2_END__+0x3a544b10> + 3bc09b4e: b529 j 3bc09958 + 3bc09b50: 08061737 lui a4,0x8061 + 3bc09b54: 080007b7 lui a5,0x8000 + 3bc09b58: b0970713 addi a4,a4,-1271 # 8060b09 + 3bc09b5c: c398 sw a4,0(a5) + 3bc09b5e: 02040737 lui a4,0x2040 + 3bc09b62: 70170713 addi a4,a4,1793 # 2040701 <__BSS_SIZE__+0x203aaf1> + 3bc09b66: c3d8 sw a4,4(a5) + 3bc09b68: 0c000737 lui a4,0xc000 + 3bc09b6c: 50d70713 addi a4,a4,1293 # c00050d + 3bc09b70: c798 sw a4,8(a5) + 3bc09b72: 13150737 lui a4,0x13150 + 3bc09b76: 31470713 addi a4,a4,788 # 13150314 + 3bc09b7a: c7d8 sw a4,12(a5) + 3bc09b7c: 10111737 lui a4,0x10111 + 3bc09b80: 21670713 addi a4,a4,534 # 10111216 + 3bc09b84: cb98 sw a4,16(a5) + 3bc09b86: 000f1737 lui a4,0xf1 + 3bc09b8a: a0e70713 addi a4,a4,-1522 # f0a0e <__BSS_SIZE__+0xeadfe> + 3bc09b8e: cbd8 sw a4,20(a5) + 3bc09b90: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09b94: 10000713 li a4,256 + 3bc09b98: cfd8 sw a4,28(a5) + 3bc09b9a: 82135737 lui a4,0x82135 + 3bc09b9e: 67470713 addi a4,a4,1652 # ffffffff82135674 <__BL2_END__+0xffffffff46521e64> + 3bc09ba2: d398 sw a4,32(a5) + 3bc09ba4: 76153737 lui a4,0x76153 + 3bc09ba8: 0207a223 sw zero,36(a5) + 3bc09bac: 28070713 addi a4,a4,640 # 76153280 <__BL2_END__+0x3a53fa70> + 3bc09bb0: b365 j 3bc09958 + 3bc09bb2: 070b1737 lui a4,0x70b1 + 3bc09bb6: 080007b7 lui a5,0x8000 + 3bc09bba: 90c70713 addi a4,a4,-1780 # 70b090c + 3bc09bbe: c398 sw a4,0(a5) + 3bc09bc0: 04050737 lui a4,0x4050 + 3bc09bc4: 60870713 addi a4,a4,1544 # 4050608 <__BSS_SIZE__+0x404a9f8> + 3bc09bc8: c3d8 sw a4,4(a5) + 3bc09bca: 0e020737 lui a4,0xe020 + 3bc09bce: 30d70713 addi a4,a4,781 # e02030d + 3bc09bd2: c798 sw a4,8(a5) + 3bc09bd4: 110a0737 lui a4,0x110a0 + 3bc09bd8: 10070713 addi a4,a4,256 # 110a0100 + 3bc09bdc: c7d8 sw a4,12(a5) + 3bc09bde: 0f131737 lui a4,0xf131 + 3bc09be2: 61470713 addi a4,a4,1556 # f131614 + 3bc09be6: cb98 sw a4,16(a5) + 3bc09be8: 00151737 lui a4,0x151 + 3bc09bec: 0749 addi a4,a4,18 + 3bc09bee: cbd8 sw a4,20(a5) + 3bc09bf0: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09bf4: 10000713 li a4,256 + 3bc09bf8: cfd8 sw a4,28(a5) + 3bc09bfa: 86014737 lui a4,0x86014 + 3bc09bfe: 53270713 addi a4,a4,1330 # ffffffff86014532 <__BL2_END__+0xffffffff4a400d22> + 3bc09c02: d398 sw a4,32(a5) + 3bc09c04: 471d li a4,7 + 3bc09c06: d3d8 sw a4,36(a5) + 3bc09c08: 76012737 lui a4,0x76012 + 3bc09c0c: 34570713 addi a4,a4,837 # 76012345 <__BL2_END__+0x3a3feb35> + 3bc09c10: bdad j 3bc09a8a + +000000003bc09c12 : + 3bc09c12: 8082 ret + +000000003bc09c14 : + 3bc09c14: 63746737 lui a4,0x63746 + 3bc09c18: 080047b7 lui a5,0x8004 + 3bc09c1c: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32b61> + 3bc09c20: c7d8 sw a4,12(a5) + 3bc09c22: 14000737 lui a4,0x14000 + 3bc09c26: c3f8 sw a4,68(a5) + 3bc09c28: 470d li a4,3 + 3bc09c2a: d7f8 sw a4,108(a5) + 3bc09c2c: 999f06b7 lui a3,0x999f0 + 3bc09c30: 10078713 addi a4,a5,256 # 8004100 + 3bc09c34: c734 sw a3,72(a4) + 3bc09c36: 810416b7 lui a3,0x81041 + 3bc09c3a: 40168693 addi a3,a3,1025 # ffffffff81041401 <__BL2_END__+0xffffffff4542dbf1> + 3bc09c3e: c394 sw a3,0(a5) + 3bc09c40: 009306b7 lui a3,0x930 + 3bc09c44: 0207a823 sw zero,48(a5) + 3bc09c48: 0685 addi a3,a3,1 + 3bc09c4a: dbd4 sw a3,52(a5) + 3bc09c4c: 000206b7 lui a3,0x20 + 3bc09c50: df94 sw a3,56(a5) + 3bc09c52: 002016b7 lui a3,0x201 + 3bc09c56: 07068693 addi a3,a3,112 # 201070 <__BSS_SIZE__+0x1fb460> + 3bc09c5a: cbb4 sw a3,80(a5) + 3bc09c5c: 007106b7 lui a3,0x710 + 3bc09c60: 0607a023 sw zero,96(a5) + 3bc09c64: 0a468693 addi a3,a3,164 # 7100a4 <__BSS_SIZE__+0x70a494> + 3bc09c68: d3f4 sw a3,100(a5) + 3bc09c6a: 0c07a023 sw zero,192(a5) + 3bc09c6e: 6641 lui a2,0x10 + 3bc09c70: 0c07a223 sw zero,196(a5) + 3bc09c74: 08078693 addi a3,a5,128 + 3bc09c78: 0e560613 addi a2,a2,229 # 100e5 <__BSS_SIZE__+0xa4d5> + 3bc09c7c: cab0 sw a2,80(a3) + 3bc09c7e: 006a0637 lui a2,0x6a0 + 3bc09c82: caf0 sw a2,84(a3) + 3bc09c84: 1f140637 lui a2,0x1f140 + 3bc09c88: 04060613 addi a2,a2,64 # 1f140040 + 3bc09c8c: cef0 sw a2,92(a3) + 3bc09c8e: 00600637 lui a2,0x600 + 3bc09c92: d2b0 sw a2,96(a3) + 3bc09c94: 000b0637 lui a2,0xb0 + 3bc09c98: 3bf60613 addi a2,a2,959 # b03bf <__BSS_SIZE__+0xaa7af> + 3bc09c9c: d2f0 sw a2,100(a3) + 3bc09c9e: 0e1126b7 lui a3,0xe112 + 3bc09ca2: f1068693 addi a3,a3,-240 # e111f10 + 3bc09ca6: c314 sw a3,0(a4) + 3bc09ca8: 000306b7 lui a3,0x30 + 3bc09cac: 41768693 addi a3,a3,1047 # 30417 <__BSS_SIZE__+0x2a807> + 3bc09cb0: c354 sw a3,4(a4) + 3bc09cb2: 050706b7 lui a3,0x5070 + 3bc09cb6: 60a68693 addi a3,a3,1546 # 507060a + 3bc09cba: 6589 lui a1,0x2 + 3bc09cbc: c714 sw a3,8(a4) + 3bc09cbe: 00758693 addi a3,a1,7 # 2007 <__BSS_SIZE__-0x3c09> + 3bc09cc2: c754 sw a3,12(a4) + 3bc09cc4: 070206b7 lui a3,0x7020 + 3bc09cc8: 30768693 addi a3,a3,775 # 7020307 + 3bc09ccc: cb14 sw a3,16(a4) + 3bc09cce: 050506b7 lui a3,0x5050 + 3bc09cd2: 30368693 addi a3,a3,771 # 5050303 + 3bc09cd6: 6605 lui a2,0x1 + 3bc09cd8: cb54 sw a3,20(a4) + 3bc09cda: 90760693 addi a3,a2,-1785 # 907 <__BSS_SIZE__-0x5309> + 3bc09cde: d314 sw a3,32(a4) + 3bc09ce0: c09606b7 lui a3,0xc0960 + 3bc09ce4: 18078713 addi a4,a5,384 + 3bc09ce8: 1207ae23 sw zero,316(a5) + 3bc09cec: 02668693 addi a3,a3,38 # ffffffffc0960026 <__BL2_END__+0xffffffff84d4c816> + 3bc09cf0: c314 sw a3,0(a4) + 3bc09cf2: 048a8537 lui a0,0x48a8 + 3bc09cf6: 4685 li a3,1 + 3bc09cf8: c354 sw a3,4(a4) + 3bc09cfa: 30550513 addi a0,a0,773 # 48a8305 + 3bc09cfe: cb08 sw a0,16(a4) + 3bc09d00: 00070537 lui a0,0x70 + 3bc09d04: 20250813 addi a6,a0,514 # 70202 <__BSS_SIZE__+0x6a5f2> + 3bc09d08: 01072a23 sw a6,20(a4) # 14000014 + 3bc09d0c: 07c13837 lui a6,0x7c13 + 3bc09d10: 12180813 addi a6,a6,289 # 7c13121 + 3bc09d14: 01072c23 sw a6,24(a4) + 3bc09d18: 02100813 li a6,33 + 3bc09d1c: 01072e23 sw a6,28(a4) + 3bc09d20: c0400837 lui a6,0xc0400 + 3bc09d24: 0861 addi a6,a6,24 + 3bc09d26: 03072023 sw a6,32(a4) + 3bc09d2a: 00fe0837 lui a6,0xfe0 + 3bc09d2e: 0ff80813 addi a6,a6,255 # fe00ff <__BSS_SIZE__+0xfda4ef> + 3bc09d32: 03072223 sw a6,36(a4) + 3bc09d36: 80000837 lui a6,0x80000 + 3bc09d3a: 03072423 sw a6,40(a4) + 3bc09d3e: 2c100813 li a6,705 + 3bc09d42: 03072823 sw a6,48(a4) + 3bc09d46: c334 sw a3,64(a4) + 3bc09d48: c374 sw a3,68(a4) + 3bc09d4a: f1f58593 addi a1,a1,-225 + 3bc09d4e: 20078713 addi a4,a5,512 + 3bc09d52: c30c sw a1,0(a4) + 3bc09d54: 70750513 addi a0,a0,1799 + 3bc09d58: c348 sw a0,4(a4) + 3bc09d5a: 2007a423 sw zero,520(a5) + 3bc09d5e: 1f000537 lui a0,0x1f000 + 3bc09d62: c748 sw a0,12(a4) + 3bc09d64: cb0c sw a1,16(a4) + 3bc09d66: 060f05b7 lui a1,0x60f0 + 3bc09d6a: 60658593 addi a1,a1,1542 # 60f0606 + 3bc09d6e: cb4c sw a1,20(a4) + 3bc09d70: 060605b7 lui a1,0x6060 + 3bc09d74: 60658593 addi a1,a1,1542 # 6060606 + 3bc09d78: cf0c sw a1,24(a4) + 3bc09d7a: 60600513 li a0,1542 + 3bc09d7e: cf48 sw a0,28(a4) + 3bc09d80: 6511 lui a0,0x4 + 3bc09d82: f3f50813 addi a6,a0,-193 # 3f3f <__BSS_SIZE__-0x1cd1> + 3bc09d86: 03072023 sw a6,32(a4) + 3bc09d8a: d34c sw a1,36(a4) + 3bc09d8c: d70c sw a1,40(a4) + 3bc09d8e: 001f25b7 lui a1,0x1f2 + 3bc09d92: f0658593 addi a1,a1,-250 # 1f1f06 <__BSS_SIZE__+0x1ec2f6> + 3bc09d96: d74c sw a1,44(a4) + 3bc09d98: 080005b7 lui a1,0x8000 + 3bc09d9c: 61058593 addi a1,a1,1552 # 8000610 + 3bc09da0: c32c sw a1,64(a4) + 3bc09da2: 2407a223 sw zero,580(a5) + 3bc09da6: f8550513 addi a0,a0,-123 + 3bc09daa: cb28 sw a0,80(a4) + 3bc09dac: 100005b7 lui a1,0x10000 + 3bc09db0: 2407aa23 sw zero,596(a5) + 3bc09db4: 0f058593 addi a1,a1,240 # 100000f0 + 3bc09db8: cf6c sw a1,92(a4) + 3bc09dba: d36c sw a1,100(a4) + 3bc09dbc: d76c sw a1,108(a4) + 3bc09dbe: 3007a023 sw zero,768(a5) + 3bc09dc2: 3007a223 sw zero,772(a5) + 3bc09dc6: 3007a623 sw zero,780(a5) + 3bc09dca: 30078713 addi a4,a5,768 + 3bc09dce: d314 sw a3,32(a4) + 3bc09dd0: 3607a623 sw zero,876(a5) + 3bc09dd4: 40078713 addi a4,a5,1024 + 3bc09dd8: 45c5 li a1,17 + 3bc09dda: c30c sw a1,0(a4) + 3bc09ddc: 6599 lui a1,0x6 + 3bc09dde: c34c sw a1,4(a4) + 3bc09de0: 489d li a7,7 + 3bc09de2: c70c sw a1,8(a4) + 3bc09de4: 48078713 addi a4,a5,1152 + 3bc09de8: cb14 sw a3,16(a4) + 3bc09dea: 06a00813 li a6,106 + 3bc09dee: 01172a23 sw a7,20(a4) + 3bc09df2: 01072c23 sw a6,24(a4) + 3bc09df6: e0760613 addi a2,a2,-505 + 3bc09dfa: 01a80537 lui a0,0x1a80 + 3bc09dfe: cf50 sw a2,28(a4) + 3bc09e00: 1a850513 addi a0,a0,424 # 1a801a8 <__BSS_SIZE__+0x1a7a598> + 3bc09e04: d308 sw a0,32(a4) + 3bc09e06: db4c sw a1,52(a4) + 3bc09e08: df0c sw a1,56(a4) + 3bc09e0a: 50078713 addi a4,a5,1280 + 3bc09e0e: c334 sw a3,64(a4) + 3bc09e10: 05172223 sw a7,68(a4) + 3bc09e14: 05072423 sw a6,72(a4) + 3bc09e18: c770 sw a2,76(a4) + 3bc09e1a: cb28 sw a0,80(a4) + 3bc09e1c: d36c sw a1,100(a4) + 3bc09e1e: d72c sw a1,104(a4) + 3bc09e20: 58078713 addi a4,a5,1408 + 3bc09e24: db34 sw a3,112(a4) + 3bc09e26: 07172a23 sw a7,116(a4) + 3bc09e2a: 07072c23 sw a6,120(a4) + 3bc09e2e: df70 sw a2,124(a4) + 3bc09e30: 60078793 addi a5,a5,1536 + 3bc09e34: c388 sw a0,0(a5) + 3bc09e36: 8082 ret + +000000003bc09e38 : + 3bc09e38: 080047b7 lui a5,0x8004 + 3bc09e3c: 4709 li a4,2 + 3bc09e3e: db98 sw a4,48(a5) + 3bc09e40: 00400737 lui a4,0x400 + 3bc09e44: 0761 addi a4,a4,24 + 3bc09e46: 18078693 addi a3,a5,384 # 8004180 + 3bc09e4a: d298 sw a4,32(a3) + 3bc09e4c: 0800a737 lui a4,0x800a + 3bc09e50: 00072a23 sw zero,20(a4) # 800a014 + 3bc09e54: 63746737 lui a4,0x63746 + 3bc09e58: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32b61> + 3bc09e5c: c7d8 sw a4,12(a5) + 3bc09e5e: 08000737 lui a4,0x8000 + 3bc09e62: c3f8 sw a4,68(a5) + 3bc09e64: 8082 ret + +000000003bc09e66 : + 3bc09e66: 080047b7 lui a5,0x8004 + 3bc09e6a: c0400737 lui a4,0xc0400 + 3bc09e6e: 0207a823 sw zero,48(a5) # 8004030 + 3bc09e72: 0761 addi a4,a4,24 + 3bc09e74: 1ae7a023 sw a4,416(a5) + 3bc09e78: 6705 lui a4,0x1 + 3bc09e7a: 177d addi a4,a4,-1 + 3bc09e7c: 0800a6b7 lui a3,0x800a + 3bc09e80: cad8 sw a4,20(a3) + 3bc09e82: 63746737 lui a4,0x63746 + 3bc09e86: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32b61> + 3bc09e8a: c7d8 sw a4,12(a5) + 3bc09e8c: 14000737 lui a4,0x14000 + 3bc09e90: c3f8 sw a4,68(a5) + 3bc09e92: 8082 ret + +000000003bc09e94 : + 3bc09e94: 080047b7 lui a5,0x8004 + 3bc09e98: 4398 lw a4,0(a5) + 3bc09e9a: 0000a797 auipc a5,0xa + 3bc09e9e: 94e7ab23 sw a4,-1706(a5) # 3bc137f0 + 3bc09ea2: 34c7368b extu a3,a4,13,12 + 3bc09ea6: 4785 li a5,1 + 3bc09ea8: 9f95 subw a5,a5,a3 + 3bc09eaa: 40f557bb sraw a5,a0,a5 + 3bc09eae: 4689 li a3,2 + 3bc09eb0: 01e7571b srliw a4,a4,0x1e + 3bc09eb4: 40e6873b subw a4,a3,a4 + 3bc09eb8: 0ff7f793 andi a5,a5,255 + 3bc09ebc: 40e7d7bb sraw a5,a5,a4 + 3bc09ec0: 0ff7f793 andi a5,a5,255 + 3bc09ec4: ffa7869b addiw a3,a5,-6 + 3bc09ec8: 4711 li a4,4 + 3bc09eca: 02d76763 bltu a4,a3,3bc09ef8 + 3bc09ece: 00002717 auipc a4,0x2 + 3bc09ed2: 86a70713 addi a4,a4,-1942 # 3bc0b738 + 3bc09ed6: 54d7478b lurw a5,a4,a3,2 + 3bc09eda: 2781 sext.w a5,a5 + 3bc09edc: 97ba add a5,a5,a4 + 3bc09ede: 08004737 lui a4,0x8004 + 3bc09ee2: 8782 jr a5 + 3bc09ee4: 007107b7 lui a5,0x710 + 3bc09ee8: 02a78793 addi a5,a5,42 # 71002a <__BSS_SIZE__+0x70a41a> + 3bc09eec: d37c sw a5,100(a4) + 3bc09eee: 6785 lui a5,0x1 + 3bc09ef0: 90378793 addi a5,a5,-1789 # 903 <__BSS_SIZE__-0x530d> + 3bc09ef4: 12f72023 sw a5,288(a4) # 8004120 + 3bc09ef8: 080047b7 lui a5,0x8004 + 3bc09efc: 4709 li a4,2 + 3bc09efe: d3b8 sw a4,96(a5) + 3bc09f00: 0607a023 sw zero,96(a5) # 8004060 + 3bc09f04: 8082 ret + 3bc09f06: 007107b7 lui a5,0x710 + 3bc09f0a: 03478793 addi a5,a5,52 # 710034 <__BSS_SIZE__+0x70a424> + 3bc09f0e: bff9 j 3bc09eec + 3bc09f10: 007107b7 lui a5,0x710 + 3bc09f14: 04b78793 addi a5,a5,75 # 71004b <__BSS_SIZE__+0x70a43b> + 3bc09f18: d37c sw a5,100(a4) + 3bc09f1a: 6785 lui a5,0x1 + 3bc09f1c: 90478793 addi a5,a5,-1788 # 904 <__BSS_SIZE__-0x530c> + 3bc09f20: bfd1 j 3bc09ef4 + 3bc09f22: 007107b7 lui a5,0x710 + 3bc09f26: 07a78793 addi a5,a5,122 # 71007a <__BSS_SIZE__+0x70a46a> + 3bc09f2a: d37c sw a5,100(a4) + 3bc09f2c: 6785 lui a5,0x1 + 3bc09f2e: 90578793 addi a5,a5,-1787 # 905 <__BSS_SIZE__-0x530b> + 3bc09f32: b7c9 j 3bc09ef4 + 3bc09f34: 007107b7 lui a5,0x710 + 3bc09f38: 0a478793 addi a5,a5,164 # 7100a4 <__BSS_SIZE__+0x70a494> + 3bc09f3c: d37c sw a5,100(a4) + 3bc09f3e: 6785 lui a5,0x1 + 3bc09f40: 90778793 addi a5,a5,-1785 # 907 <__BSS_SIZE__-0x5309> + 3bc09f44: bf45 j 3bc09ef4 + +000000003bc09f46 : + 3bc09f46: 03020737 lui a4,0x3020 + 3bc09f4a: 080007b7 lui a5,0x8000 + 3bc09f4e: 10070713 addi a4,a4,256 # 3020100 <__BSS_SIZE__+0x301a4f0> + 3bc09f52: c398 sw a4,0(a5) + 3bc09f54: 07060737 lui a4,0x7060 + 3bc09f58: 50470713 addi a4,a4,1284 # 7060504 + 3bc09f5c: c3d8 sw a4,4(a5) + 3bc09f5e: 0b0a1737 lui a4,0xb0a1 + 3bc09f62: 90870713 addi a4,a4,-1784 # b0a0908 + 3bc09f66: c798 sw a4,8(a5) + 3bc09f68: 0f0e1737 lui a4,0xf0e1 + 3bc09f6c: d0c70713 addi a4,a4,-756 # f0e0d0c + 3bc09f70: c7d8 sw a4,12(a5) + 3bc09f72: 13121737 lui a4,0x13121 + 3bc09f76: 11070713 addi a4,a4,272 # 13121110 + 3bc09f7a: cb98 sw a4,16(a5) + 3bc09f7c: 00161737 lui a4,0x161 + 3bc09f80: 51470713 addi a4,a4,1300 # 161514 <__BSS_SIZE__+0x15b904> + 3bc09f84: cbd8 sw a4,20(a5) + 3bc09f86: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09f8a: 10000613 li a2,256 + 3bc09f8e: 76543737 lui a4,0x76543 + 3bc09f92: cfd0 sw a2,28(a5) + 3bc09f94: 21070713 addi a4,a4,528 # 76543210 <__BL2_END__+0x3a92fa00> + 3bc09f98: d398 sw a4,32(a5) + 3bc09f9a: 46a1 li a3,8 + 3bc09f9c: d3d4 sw a3,36(a5) + 3bc09f9e: d798 sw a4,40(a5) + 3bc09fa0: d7d4 sw a3,44(a5) + 3bc09fa2: 007f0737 lui a4,0x7f0 + 3bc09fa6: 0407a023 sw zero,64(a5) + 3bc09faa: 0735 addi a4,a4,13 + 3bc09fac: c3f8 sw a4,68(a5) + 3bc09fae: 0407a423 sw zero,72(a5) + 3bc09fb2: c7f4 sw a3,76(a5) + 3bc09fb4: 4719 li a4,6 + 3bc09fb6: cbb8 sw a4,80(a5) + 3bc09fb8: 0c001737 lui a4,0xc001 + 3bc09fbc: b0070713 addi a4,a4,-1280 # c000b00 + 3bc09fc0: cbf8 sw a4,84(a5) + 3bc09fc2: 09160737 lui a4,0x9160 + 3bc09fc6: 04f70713 addi a4,a4,79 # 916004f + 3bc09fca: cfb8 sw a4,88(a5) + 3bc09fcc: 04000837 lui a6,0x4000 + 3bc09fd0: 0407ae23 sw zero,92(a5) + 3bc09fd4: 37080713 addi a4,a6,880 # 4000370 <__BSS_SIZE__+0x3ffa760> + 3bc09fd8: d3b8 sw a4,96(a5) + 3bc09fda: 10001737 lui a4,0x10001 + 3bc09fde: c0070713 addi a4,a4,-1024 # 10000c00 + 3bc09fe2: d3f8 sw a4,100(a5) + 3bc09fe4: 00800737 lui a4,0x800 + 3bc09fe8: d7b8 sw a4,104(a5) + 3bc09fea: 10800713 li a4,264 + 3bc09fee: dbb8 sw a4,112(a5) + 3bc09ff0: 00072737 lui a4,0x72 + 3bc09ff4: dbf8 sw a4,116(a5) + 3bc09ff6: 1f00e6b7 lui a3,0x1f00e + 3bc09ffa: 08078713 addi a4,a5,128 + 3bc09ffe: c314 sw a3,0(a4) + 3bc0a000: 010b16b7 lui a3,0x10b1 + 3bc0a004: c0a68693 addi a3,a3,-1014 # 10b0c0a <__BSS_SIZE__+0x10aaffa> + 3bc0a008: c354 sw a3,4(a4) + 3bc0a00a: 0a0106b7 lui a3,0xa010 + 3bc0a00e: 11468693 addi a3,a3,276 # a010114 + 3bc0a012: c714 sw a3,8(a4) + 3bc0a014: aaaa06b7 lui a3,0xaaaa0 + 3bc0a018: 08f68693 addi a3,a3,143 # ffffffffaaaa008f <__BL2_END__+0xffffffff6ee8c87f> + 3bc0a01c: c754 sw a3,12(a4) + 3bc0a01e: 6691 lui a3,0x4 + 3bc0a020: 80068593 addi a1,a3,-2048 # 3800 <__BSS_SIZE__-0x2410> + 3bc0a024: 6505 lui a0,0x1 + 3bc0a026: cb0c sw a1,16(a4) + 3bc0a028: 80150593 addi a1,a0,-2047 # 801 <__BSS_SIZE__-0x540f> + 3bc0a02c: cb4c sw a1,20(a4) + 3bc0a02e: 074005b7 lui a1,0x7400 + 3bc0a032: 54058593 addi a1,a1,1344 # 7400540 + 3bc0a036: d30c sw a1,32(a4) + 3bc0a038: 014205b7 lui a1,0x1420 + 3bc0a03c: 50458593 addi a1,a1,1284 # 1420504 <__BSS_SIZE__+0x141a8f4> + 3bc0a040: d34c sw a1,36(a4) + 3bc0a042: 005505b7 lui a1,0x550 + 3bc0a046: 05a9 addi a1,a1,10 + 3bc0a048: d70c sw a1,40(a4) + 3bc0a04a: 005545b7 lui a1,0x554 + 3bc0a04e: c5a58593 addi a1,a1,-934 # 553c5a <__BSS_SIZE__+0x54e04a> + 3bc0a052: d74c sw a1,44(a4) + 3bc0a054: 00aaa5b7 lui a1,0xaaa + 3bc0a058: 5c358593 addi a1,a1,1475 # aaa5c3 <__BSS_SIZE__+0xaa49b3> + 3bc0a05c: db0c sw a1,48(a4) + 3bc0a05e: 00aaf5b7 lui a1,0xaaf + 3bc0a062: 0f058593 addi a1,a1,240 # aaf0f0 <__BSS_SIZE__+0xaa94e0> + 3bc0a066: db4c sw a1,52(a4) + 3bc0a068: 1e0015b7 lui a1,0x1e001 + 3bc0a06c: f0f58593 addi a1,a1,-241 # 1e000f0f + 3bc0a070: df0c sw a1,56(a4) + 3bc0a072: 000845b7 lui a1,0x84 + 3bc0a076: e1358593 addi a1,a1,-493 # 83e13 <__BSS_SIZE__+0x7e203> + 3bc0a07a: df4c sw a1,60(a4) + 3bc0a07c: 000305b7 lui a1,0x30 + 3bc0a080: 0e07a823 sw zero,240(a5) + 3bc0a084: 03358593 addi a1,a1,51 # 30033 <__BSS_SIZE__+0x2a423> + 3bc0a088: db6c sw a1,116(a4) + 3bc0a08a: 002105b7 lui a1,0x210 + 3bc0a08e: 02c58593 addi a1,a1,44 # 21002c <__BSS_SIZE__+0x20a41c> + 3bc0a092: df2c sw a1,120(a4) + 3bc0a094: 003705b7 lui a1,0x370 + 3bc0a098: 05d9 addi a1,a1,22 + 3bc0a09a: df6c sw a1,124(a4) + 3bc0a09c: 10078713 addi a4,a5,256 + 3bc0a0a0: 01072023 sw a6,0(a4) # 72000 <__BSS_SIZE__+0x6c3f0> + 3bc0a0a4: 1007a223 sw zero,260(a5) + 3bc0a0a8: 1007a623 sw zero,268(a5) + 3bc0a0ac: 1007a823 sw zero,272(a5) + 3bc0a0b0: 1007aa23 sw zero,276(a5) + 3bc0a0b4: 659d lui a1,0x7 + 3bc0a0b6: 1007ac23 sw zero,280(a5) + 3bc0a0ba: a1058593 addi a1,a1,-1520 # 6a10 <__BSS_SIZE__+0xe00> + 3bc0a0be: cf4c sw a1,28(a4) + 3bc0a0c0: 1207a023 sw zero,288(a5) + 3bc0a0c4: ef700593 li a1,-265 + 3bc0a0c8: d34c sw a1,36(a4) + 3bc0a0ca: 45fd li a1,31 + 3bc0a0cc: d70c sw a1,40(a4) + 3bc0a0ce: 4585 li a1,1 + 3bc0a0d0: d74c sw a1,44(a4) + 3bc0a0d2: 10100593 li a1,257 + 3bc0a0d6: db0c sw a1,48(a4) + 3bc0a0d8: db50 sw a2,52(a4) + 3bc0a0da: 4851 li a6,20 + 3bc0a0dc: 03072c23 sw a6,56(a4) + 3bc0a0e0: 1407a023 sw zero,320(a5) + 3bc0a0e4: 1407a223 sw zero,324(a5) + 3bc0a0e8: 80850e13 addi t3,a0,-2040 + 3bc0a0ec: 05c72423 sw t3,72(a4) + 3bc0a0f0: 1407a623 sw zero,332(a5) + 3bc0a0f4: 4815 li a6,5 + 3bc0a0f6: 05072823 sw a6,80(a4) + 3bc0a0fa: cb6c sw a1,84(a4) + 3bc0a0fc: 1407ac23 sw zero,344(a5) + 3bc0a100: 003335b7 lui a1,0x333 + 3bc0a104: 1407ae23 sw zero,348(a5) + 3bc0a108: 33158593 addi a1,a1,817 # 333331 <__BSS_SIZE__+0x32d721> + 3bc0a10c: 1607a223 sw zero,356(a5) + 3bc0a110: d72c sw a1,104(a4) + 3bc0a112: 1607a623 sw zero,364(a5) + 3bc0a116: 1607a823 sw zero,368(a5) + 3bc0a11a: db70 sw a2,116(a4) + 3bc0a11c: 00020637 lui a2,0x20 + 3bc0a120: 18078713 addi a4,a5,384 + 3bc0a124: 0641 addi a2,a2,16 + 3bc0a126: c310 sw a2,0(a4) + 3bc0a128: 1807a223 sw zero,388(a5) + 3bc0a12c: 00090637 lui a2,0x90 + 3bc0a130: 1807a423 sw zero,392(a5) + 3bc0a134: 40060613 addi a2,a2,1024 # 90400 <__BSS_SIZE__+0x8a7f0> + 3bc0a138: c750 sw a2,12(a4) + 3bc0a13a: 00021637 lui a2,0x21 + 3bc0a13e: 20e60613 addi a2,a2,526 # 2120e <__BSS_SIZE__+0x1b5fe> + 3bc0a142: cb10 sw a2,16(a4) + 3bc0a144: 2007a023 sw zero,512(a5) + 3bc0a148: 20078713 addi a4,a5,512 + 3bc0a14c: 44000613 li a2,1088 + 3bc0a150: c350 sw a2,4(a4) + 3bc0a152: 2007a423 sw zero,520(a5) + 3bc0a156: 2207a023 sw zero,544(a5) + 3bc0a15a: d350 sw a2,36(a4) + 3bc0a15c: 2207a423 sw zero,552(a5) + 3bc0a160: 4007a023 sw zero,1024(a5) + 3bc0a164: 4007a223 sw zero,1028(a5) + 3bc0a168: 4007a423 sw zero,1032(a5) + 3bc0a16c: 4007a623 sw zero,1036(a5) + 3bc0a170: 40078713 addi a4,a5,1024 + 3bc0a174: 001005b7 lui a1,0x100 + 3bc0a178: e4b7558b swd a1,a1,(a4),2,3 + 3bc0a17c: 4609 li a2,2 + 3bc0a17e: cf10 sw a2,24(a4) + 3bc0a180: 04068693 addi a3,a3,64 + 3bc0a184: cf54 sw a3,28(a4) + 3bc0a186: 000416b7 lui a3,0x41 + 3bc0a18a: 50078713 addi a4,a5,1280 + 3bc0a18e: 0685 addi a3,a3,1 + 3bc0a190: e0b7568b swd a3,a1,(a4),0,3 + 3bc0a194: 5007a423 sw zero,1288(a5) + 3bc0a198: 5007a623 sw zero,1292(a5) + 3bc0a19c: 4811 li a6,4 + 3bc0a19e: 01072823 sw a6,16(a4) + 3bc0a1a2: 5007aa23 sw zero,1300(a5) + 3bc0a1a6: 5007ac23 sw zero,1304(a5) + 3bc0a1aa: 5007ae23 sw zero,1308(a5) + 3bc0a1ae: 460d li a2,3 + 3bc0a1b0: d310 sw a2,32(a4) + 3bc0a1b2: c334 sw a3,64(a4) + 3bc0a1b4: c36c sw a1,68(a4) + 3bc0a1b6: 5407a423 sw zero,1352(a5) + 3bc0a1ba: 5407a623 sw zero,1356(a5) + 3bc0a1be: 05072823 sw a6,80(a4) + 3bc0a1c2: 5407aa23 sw zero,1364(a5) + 3bc0a1c6: 5407ac23 sw zero,1368(a5) + 3bc0a1ca: 5407ae23 sw zero,1372(a5) + 3bc0a1ce: d330 sw a2,96(a4) + 3bc0a1d0: 08001737 lui a4,0x8001 + 3bc0a1d4: 90070793 addi a5,a4,-1792 # 8000900 + 3bc0a1d8: 40000693 li a3,1024 + 3bc0a1dc: c394 sw a3,0(a5) + 3bc0a1de: d7d4 sw a3,44(a5) + 3bc0a1e0: db94 sw a3,48(a5) + 3bc0a1e2: dbd4 sw a3,52(a5) + 3bc0a1e4: df94 sw a3,56(a5) + 3bc0a1e6: 94072023 sw zero,-1728(a4) + 3bc0a1ea: 96072823 sw zero,-1680(a4) + 3bc0a1ee: 96072a23 sw zero,-1676(a4) + 3bc0a1f2: 080806b7 lui a3,0x8080 + 3bc0a1f6: 96072c23 sw zero,-1672(a4) + 3bc0a1fa: 40468693 addi a3,a3,1028 # 8080404 + 3bc0a1fe: 08081837 lui a6,0x8081 + 3bc0a202: dff4 sw a3,124(a5) + 3bc0a204: 80880813 addi a6,a6,-2040 # 8080808 + 3bc0a208: 98070793 addi a5,a4,-1664 + 3bc0a20c: 06400637 lui a2,0x6400 + 3bc0a210: 0107a023 sw a6,0(a5) + 3bc0a214: 64060613 addi a2,a2,1600 # 6400640 + 3bc0a218: a0070793 addi a5,a4,-1536 + 3bc0a21c: e0c7d60b swd a2,a2,(a5),0,3 + 3bc0a220: e2c7d60b swd a2,a2,(a5),1,3 + 3bc0a224: 64000f93 li t6,1600 + 3bc0a228: 01f7a823 sw t6,16(a5) + 3bc0a22c: 0b000f37 lui t5,0xb000 + 3bc0a230: 0a001337 lui t1,0xa001 + 3bc0a234: 01e7aa23 sw t5,20(a5) + 3bc0a238: 90030313 addi t1,t1,-1792 # a000900 + 3bc0a23c: 000408b7 lui a7,0x40 + 3bc0a240: 0067ac23 sw t1,24(a5) + 3bc0a244: 60088893 addi a7,a7,1536 # 40600 <__BSS_SIZE__+0x3a9f0> + 3bc0a248: 004006b7 lui a3,0x400 + 3bc0a24c: 04068693 addi a3,a3,64 # 400040 <__BSS_SIZE__+0x3fa430> + 3bc0a250: 0117ae23 sw a7,28(a5) + 3bc0a254: d394 sw a3,32(a5) + 3bc0a256: d3d4 sw a3,36(a5) + 3bc0a258: d794 sw a3,40(a5) + 3bc0a25a: d7d4 sw a3,44(a5) + 3bc0a25c: 04000e93 li t4,64 + 3bc0a260: 03d7a823 sw t4,48(a5) + 3bc0a264: a2072a23 sw zero,-1484(a4) + 3bc0a268: 03c7ac23 sw t3,56(a5) + 3bc0a26c: 0307ae23 sw a6,60(a5) + 3bc0a270: c3b0 sw a2,64(a5) + 3bc0a272: c3f0 sw a2,68(a5) + 3bc0a274: c7b0 sw a2,72(a5) + 3bc0a276: c7f0 sw a2,76(a5) + 3bc0a278: 05f7a823 sw t6,80(a5) + 3bc0a27c: 05e7aa23 sw t5,84(a5) + 3bc0a280: 0467ac23 sw t1,88(a5) + 3bc0a284: 0517ae23 sw a7,92(a5) + 3bc0a288: d3b4 sw a3,96(a5) + 3bc0a28a: d3f4 sw a3,100(a5) + 3bc0a28c: d7b4 sw a3,104(a5) + 3bc0a28e: d7f4 sw a3,108(a5) + 3bc0a290: 07d7a823 sw t4,112(a5) + 3bc0a294: a6072a23 sw zero,-1420(a4) + 3bc0a298: 07c7ac23 sw t3,120(a5) + 3bc0a29c: 0707ae23 sw a6,124(a5) + 3bc0a2a0: b0072023 sw zero,-1280(a4) + 3bc0a2a4: b0072223 sw zero,-1276(a4) + 3bc0a2a8: b0070793 addi a5,a4,-1280 + 3bc0a2ac: 00404837 lui a6,0x404 + 3bc0a2b0: 0107a423 sw a6,8(a5) + 3bc0a2b4: b4050513 addi a0,a0,-1216 + 3bc0a2b8: c7c8 sw a0,12(a5) + 3bc0a2ba: 000816b7 lui a3,0x81 + 3bc0a2be: b0072823 sw zero,-1264(a4) + 3bc0a2c2: e0e68693 addi a3,a3,-498 # 80e0e <__BSS_SIZE__+0x7b1fe> + 3bc0a2c6: cbd4 sw a3,20(a5) + 3bc0a2c8: b0072c23 sw zero,-1256(a4) + 3bc0a2cc: b0072e23 sw zero,-1252(a4) + 3bc0a2d0: 40400637 lui a2,0x40400 + 3bc0a2d4: d390 sw a2,32(a5) + 3bc0a2d6: 05c1 addi a1,a1,16 + 3bc0a2d8: d3cc sw a1,36(a5) + 3bc0a2da: b2072823 sw zero,-1232(a4) + 3bc0a2de: b2072a23 sw zero,-1228(a4) + 3bc0a2e2: 0307ac23 sw a6,56(a5) + 3bc0a2e6: dfc8 sw a0,60(a5) + 3bc0a2e8: b4072023 sw zero,-1216(a4) + 3bc0a2ec: c3f4 sw a3,68(a5) + 3bc0a2ee: b4072423 sw zero,-1208(a4) + 3bc0a2f2: b4072623 sw zero,-1204(a4) + 3bc0a2f6: cbb0 sw a2,80(a5) + 3bc0a2f8: cbec sw a1,84(a5) + 3bc0a2fa: 8082 ret + 3bc0a2fc: 0000 unimp + ... + +000000003bc0a300 : + 3bc0a300: 3032 3232 312d 2d32 3032 3254 3a31 3835 2022-12-20T21:58 + 3bc0a310: 303a 2b32 3830 303a 0030 0000 0000 0000 :02+08:00....... + +000000003bc0a320 : + 3bc0a320: 624a 3832 3967 673a 6536 3835 6565 0031 Jb28g9:g6e58ee1. + 3bc0a330: 3201 504f 4e45 4253 3a49 6e20 7865 5f74 .2OPENSBI: next_ + 3bc0a340: 6461 7264 303d 2578 786c 6120 6772 3d31 addr=0x%lx arg1= + 3bc0a350: 7830 6c25 0078 0000 7830 0000 60b6 ffff 0x%lx...0x...`.. + 3bc0a360: 605c ffff 605c ffff 605c ffff 605c ffff \`..\`..\`..\`.. + 3bc0a370: 60b6 ffff 605c ffff 605c ffff 616a ffff .`..\`..\`..ja.. + 3bc0a380: 605c ffff 605c ffff 605c ffff 6112 ffff \`..\`..\`...a.. + 3bc0a390: 605c ffff 605c ffff 60f2 ffff 605c ffff \`..\`...`..\`.. + 3bc0a3a0: 6170 ffff 605c ffff 605c ffff 6146 ffff pa..\`..\`..Fa.. + 3bc0a3b0: 605c ffff 6164 ffff 3001 4520 523a 5345 \`..da...0 E:RES + 3bc0a3c0: 5445 253a 3a73 6425 000a 0000 0000 0000 ET:%s:%d........ + 3bc0a3d0: 3001 4520 723a 3d61 7830 6c25 0a78 0000 .0 E:ra=0x%lx... + 3bc0a3e0: 6170 696e 0063 0000 3201 5352 2e43 000a panic....2RSC... + 3bc0a3f0: 3201 4c50 534c 0a2e 0000 0000 0000 0000 .2PLLS.......... + 3bc0a400: 3201 4c50 454c 0a2e 0000 0000 0000 0000 .2PLLE.......... + 3bc0a410: 3201 7355 2065 6e69 6574 6e72 6c61 3320 .2Use internal 3 + 3bc0a420: 6b32 000a 0000 0000 3201 7473 6f5f 5f6e 2k.......2st_on_ + 3bc0a430: 6572 7361 6e6f 253d 0a78 0000 0000 0000 reason=%x....... + 3bc0a440: 3201 7473 6f5f 6666 725f 6165 6f73 3d6e .2st_off_reason= + 3bc0a450: 7825 000a 0000 0000 0000 249f 1746 245d %x.........$F.]$ + 3bc0a460: 1746 245d aaab 24aa 8201 0012 8101 0018 F.]$...$........ + 3bc0a470: 8201 0030 8101 0016 c906 a55a 0024 0000 ..0.......Z.$... + 3bc0a480: 0000 83a0 0000 0140 ......@. + +000000003bc0a488 : + 3bc0a488: 3130 3332 3534 3736 3938 6261 6463 6665 0123456789abcdef + 3bc0a498: 6867 6a69 6c6b 6e6d 706f 7271 7473 7675 ghijklmnopqrstuv + 3bc0a4a8: 7877 7a79 0000 0000 0101 0101 0101 0101 wxyz............ + 3bc0a4b8: 3301 4920 4c3a 4549 252f 2f64 7025 302f .3 I:LIE/%d/%p/0 + 3bc0a4c8: 2578 2f78 6c25 2e75 000a 0000 0000 0000 x%x/%lu......... + 3bc0a4d8: 3201 3250 2f53 7830 6c25 2f78 7025 0a2e .2P2S/0x%lx/%p.. + ... + 3bc0a4f0: 3101 5720 4c3a 3250 4e5f 4d4f 4741 4349 .1 W:LP2_NOMAGIC + 3bc0a500: 000a 0000 0000 0000 3001 4520 703a 7261 .........0 E:par + 3bc0a510: 6d61 5f32 6b63 7573 206d 3028 2578 2f78 am2_cksum (0x%x/ + 3bc0a520: 7830 7825 0a29 0000 3201 3250 2e45 000a 0x%x)....2P2E... + 3bc0a530: 3201 5044 2f53 7830 7825 302f 2578 2e78 .2DPS/0x%x/0x%x. + 3bc0a540: 000a 0000 0000 0000 3001 4520 643a 7264 .........0 E:ddr + 3bc0a550: 705f 7261 6d61 635f 736b 6d75 2820 7830 _param_cksum (0x + 3bc0a560: 7825 302f 2578 2978 000a 0000 0000 0000 %x/0x%x)........ + 3bc0a570: 3201 5044 2e45 000a 3101 5720 443a 204c .2DPE....1 W:DL + 3bc0a580: 6163 636e 6c65 656c 2e64 4c20 616f 2064 cancelled. Load + 3bc0a590: 6c66 7361 2e68 2820 6425 2e29 000a 0000 flash. (%d)..... + 3bc0a5a0: 3001 4520 463a 6961 656c 2064 6f74 6c20 .0 E:Failed to l + 3bc0a5b0: 616f 2064 4444 2052 6170 6172 206d 2528 oad DDR param (% + 3bc0a5c0: 2964 0a2e 0000 0000 3201 3243 2f53 7830 d).......2C2S/0x + 3bc0a5d0: 7825 302f 2578 2f78 7830 7825 0a2e 0000 %x/0x%x/0x%x.... + 3bc0a5e0: 3201 6f4e 4320 3039 4c36 6920 616d 6567 .2No C906L image + 3bc0a5f0: 0a2e 0000 0000 0000 3001 4520 623a 636c .........0 E:blc + 3bc0a600: 5f70 6e32 5f64 7572 616e 6464 2072 3028 p_2nd_runaddr (0 + 3bc0a610: 2578 2978 6920 2073 6f6e 2074 6e69 4420 x%x) is not in D + 3bc0a620: 4152 2e4d 000a 0000 3001 4520 623a 636c RAM......0 E:blc + 3bc0a630: 5f70 6e32 5f64 6973 657a 2820 7830 7825 p_2nd_size (0x%x + 3bc0a640: 2029 7369 6e20 746f 6920 206e 5244 4d41 ) is not in DRAM + 3bc0a650: 0a2e 0000 0000 0000 3001 4520 623a 636c .........0 E:blc + 3bc0a660: 5f70 6e32 5f64 6b63 7573 206d 3028 2578 p_2nd_cksum (0x% + 3bc0a670: 2f78 7830 7825 0a29 0000 0000 0000 0000 x/0x%x)......... + 3bc0a680: 3001 4520 763a 7265 6669 2079 6c62 7063 .0 E:verify blcp + 3bc0a690: 3220 646e 2820 6425 0a29 0000 0000 0000 2nd (%d)....... + 3bc0a6a0: 3201 3243 2e45 000a 3201 534d 302f 2578 .2C2E....2MS/0x% + 3bc0a6b0: 2f78 7830 7825 302f 2578 2e78 000a 0000 x/0x%x/0x%x..... + 3bc0a6c0: 3201 6f4e 6d20 6e6f 7469 726f 0a2e 0000 .2No monitor.... + 3bc0a6d0: 3001 4520 6d3a 6e6f 7469 726f 725f 6e75 .0 E:monitor_run + 3bc0a6e0: 6461 7264 2820 7830 7825 2029 7369 6e20 addr (0x%x) is n + 3bc0a6f0: 746f 6920 206e 5244 4d41 0a2e 0000 0000 ot in DRAM...... + 3bc0a700: 3001 4520 6d3a 6e6f 7469 726f 735f 7a69 .0 E:monitor_siz + 3bc0a710: 2065 3028 2578 2978 6920 2073 6f6e 2074 e (0x%x) is not + 3bc0a720: 6e69 4420 4152 2e4d 000a 0000 0000 0000 in DRAM......... + 3bc0a730: 3001 4520 6d3a 6e6f 7469 726f 635f 736b .0 E:monitor_cks + 3bc0a740: 6d75 2820 7830 7825 302f 2578 2978 000a um (0x%x/0x%x).. + 3bc0a750: 3001 4520 763a 7265 6669 2079 6f6d 696e .0 E:verify moni + 3bc0a760: 6f74 2072 2528 2964 000a 0000 0000 0000 tor (%d)........ + 3bc0a770: 3201 454d 0a2e 0000 3201 324c 302f 2578 .2ME.....2L2/0x% + 3bc0a780: 2e78 000a 0000 0000 3201 324c 302f 2578 x........2L2/0x% + 3bc0a790: 2f78 7830 7825 302f 2578 786c 302f 2578 x/0x%x/0x%lx/0x% + 3bc0a7a0: 2f78 7830 7825 000a 3201 4f43 504d 252f x/0x%x...2COMP/% + 3bc0a7b0: 2e64 000a 0000 0000 3001 4520 6c3a 616f d........0 E:loa + 3bc0a7c0: 6564 5f72 6e32 5f64 6b63 7573 206d 3028 der_2nd_cksum (0 + 3bc0a7d0: 2578 2f78 7830 7825 0a29 0000 0000 0000 x%x/0x%x)....... + 3bc0a7e0: 3001 4520 763a 7265 6669 2079 6f6c 6461 .0 E:verify load + 3bc0a7f0: 7265 3220 646e 2820 6425 0a29 0000 0000 er 2nd (%d)..... + 3bc0a800: 3001 4520 463a 6961 656c 2064 6f74 6420 .0 E:Failed to d + 3bc0a810: 6365 6d6f 7270 7365 2073 6f6c 6461 7265 ecompress loader + 3bc0a820: 325f 646e 2820 6425 252f 756c 0a29 0000 _2nd (%d/%lu)... + 3bc0a830: 3201 6f4c 6461 7265 325f 646e 6c20 616f .2Loader_2nd loa + 3bc0a840: 6564 2e64 000a 0000 3001 4520 463a 6961 ded......0 E:Fai + 3bc0a850: 656c 2064 6f74 6c20 616f 2064 6572 7473 led to load rest + 3bc0a860: 2820 6425 2e29 000a 3201 754a 706d 7420 (%d)....2Jump t + 3bc0a870: 206f 6f6d 696e 6f74 2072 7461 3020 2578 o monitor at 0x% + 3bc0a880: 786c 0a2e 0000 0000 3201 754a 706d 7420 lx.......2Jump t + 3bc0a890: 206f 6f6c 6461 7265 325f 646e 6120 2074 o loader_2nd at + 3bc0a8a0: 7830 6c25 2e78 000a 3201 460a 4253 204c 0x%lx....2.FSBL + 3bc0a8b0: 7325 253a 0a73 0000 3301 4920 733a 5f77 %s:%s....3 I:sw_ + 3bc0a8c0: 6e69 6f66 303d 2578 0a78 0000 0000 0000 info=0x%x....... + 3bc0a8d0: 3301 4920 663a 7069 705f 7261 6d61 3a31 .3 I:fip_param1: + 3bc0a8e0: 7020 7261 6d61 635f 736b 6d75 303d 2578 param_cksum=0x% + 3bc0a8f0: 2078 6170 6172 326d 6c5f 616f 6164 6464 x param2_loadadd + 3bc0a900: 3d72 7830 7825 000a 3301 4920 433a 5f50 r=0x%x...3 I:CP_ + 3bc0a910: 5453 5441 5f45 4552 3d47 7830 7825 000a STATE_REG=0x%x.. + 3bc0a920: 3201 4c42 2032 6e65 2e64 000a 0000 0000 .2BL2 end....... + 3bc0a930: 5643 444c 3230 000a 3001 4520 253a 2073 CVLD02...0 E:%s + 3bc0a940: 6163 276e 2074 6c61 6f6c 2063 6c25 2075 can't alloc %lu + 3bc0a950: 7962 6574 0a73 0000 3001 4520 253a 3a73 bytes....0 E:%s: + 3bc0a960: 6420 7473 735f 7a69 2065 7369 4e20 4c55 dst_size is NUL + 3bc0a970: 2e4c 000a 0000 0000 3301 4920 4c3a 4d5a L........3 I:LZM + 3bc0a980: 3141 252f 2f70 7025 0a2e 0000 0000 0000 A1/%p/%p........ + 3bc0a990: 3301 4920 4c3a 4d5a 3241 752f 636e 6d6f .3 I:LZMA2/uncom + 3bc0a9a0: 5f70 6973 657a 303d 2578 786c 000a 0000 p_size=0x%lx.... + 3bc0a9b0: 3001 4520 4c3a 6d7a 4461 6365 646f 2065 .0 E:LzmaDecode + 3bc0a9c0: 5245 4f52 3a52 2520 2064 7328 6174 7574 ERROR: %d (statu + 3bc0a9d0: 3d73 6425 0a29 0000 3301 4920 4c3a 4d5a s=%d)....3 I:LZM + 3bc0a9e0: 3941 302f 2578 786c 000a 0000 0000 0000 A9/0x%lx........ + 3bc0a9f0: 3301 4920 4c3a 345a 252f 2f70 7025 0a2e .3 I:LZ4/%p/%p.. + ... + 3bc0aa08: 3001 4520 643a 7463 5378 6174 7574 3d73 .0 E:dctxStatus= + 3bc0aa18: 6c25 0a75 0000 0000 3301 4920 643a 7473 %lu......3 I:dst + 3bc0aa28: 735f 7a69 3d65 6c25 2075 7273 5f63 6973 _size=%lu src_si + 3bc0aa38: 657a 253d 756c 7220 7465 253d 647a 000a ze=%lu ret=%zd.. + 3bc0aa48: 3001 4520 4c3a 345a 5f46 6564 6f63 706d .0 E:LZ4F_decomp + 3bc0aa58: 6572 7373 253d 756c 000a 0000 0000 0000 ress=%lu........ + 3bc0aa68: 3201 4344 2f50 7025 302f 2578 786c 252f .2DCP/%p/0x%lx/% + 3bc0aa78: 2f70 7830 6c25 2f78 6425 0a2e 0000 0000 p/0x%lx/%d...... + 3bc0aa88: 3201 4344 2f50 7830 6c25 2f78 6425 0a2e .2DCP/0x%lx/%d.. + ... + +000000003bc0aaa0 <__func__.0>: + 3bc0aaa0: 7a53 6c41 6f6c 0063 SzAlloc. + +000000003bc0aaa8 <__func__.1>: + 3bc0aaa8: 6564 6f63 706d 6572 7373 6c5f 6d7a 0061 decompress_lzma. + 3bc0aab8: 3301 4920 413a 7070 696c 6163 6974 6e6f .3 I:Application + 3bc0aac8: 203a 7325 000a 0000 3301 4920 753a 6273 : %s.....3 I:usb + 3bc0aad8: 2520 0a73 0000 0000 3201 5355 4242 002e %s......2USBB.. + 3bc0aae8: 3301 4920 433a 4956 555f 4253 425f 4552 .3 I:CVI_USB_BRE + 3bc0aaf8: 4b41 000a 0000 0000 3201 5355 4b42 002e AK.......2USBK.. + 3bc0ab08: 3301 4920 663a 616c 4567 746e 7265 4c44 .3 I:flagEnterDL + 3bc0ab18: 2520 0a64 0000 0000 3301 4920 4d3a 4741 %d......3 I:MAG + 3bc0ab28: 4349 4e20 4d55 4e20 544f 4d20 5441 4843 IC NUM NOT MATCH + 3bc0ab38: 000a 0000 0000 0000 3201 5355 4b42 2e46 .........2USBKF. + ... + 3bc0ab50: 3301 4920 493a 204f 6241 726f 2074 2121 .3 I:IO Abort !! + 3bc0ab60: 2121 0a21 0000 0000 3301 4920 723a 6365 !!!......3 I:rec + 3bc0ab70: 7069 6569 746e 7420 7261 6567 2074 6163 ipient target ca + 3bc0ab80: 6e6e 746f 6220 2065 6e69 6574 6672 6361 nnot be interfac + 3bc0ab90: 2165 000a 0000 0000 3201 5355 5042 302f e!.......2USBP/0 + 3bc0aba0: 2578 2e78 0000 0000 3301 4920 663a 7374 x%x......3 I:fts + 3bc0abb0: 5b6e 6425 205d 203d 7825 000a 0000 0000 n[%d] = %x...... + 3bc0abc0: 3301 4920 633a 6372 7620 6c61 3d20 2520 .3 I:crc val = % + 3bc0abd0: 0a78 0000 0000 0000 3301 4920 743a 2073 x........3 I:ts + 3bc0abe0: 6176 206c 203d 7825 000a 0000 0000 0000 val = %x........ + 3bc0abf0: 3201 5355 5342 252f 2e73 0000 0000 0000 .2USBS/%s....... + 3bc0ac00: 3231 3433 3635 3837 4139 4342 0000 0000 123456789ABC.... + 3bc0ac10: 7065 6931 2d6e 7562 6b6c 0000 0000 0000 ep1in-bulk...... + 3bc0ac20: 7065 6f32 7475 622d 6c75 006b 0000 0000 ep2out-bulk..... + 3bc0ac30: 7065 6933 2d6e 6e69 0074 0000 7074 ffff ep3in-int...tp.. + 3bc0ac40: 7246 ffff 70da ffff 710c ffff 710c ffff Fr...p...q...q.. + 3bc0ac50: 7232 ffff 7246 ffff 710c ffff 710c ffff 2r..Fr...q...q.. + 3bc0ac60: 710c ffff 710c ffff 710c ffff 710c ffff .q...q...q...q.. + 3bc0ac70: 710c ffff 7206 ffff 3301 4920 623a 6c75 .q...r...3 I:bul + 3bc0ac80: 426b 6675 6c41 6f6c 3a63 2520 0a70 0000 kBufAlloc: %p... + 3bc0ac90: 3301 4920 633a 646d 7542 4166 6c6c 636f .3 I:cmdBufAlloc + 3bc0aca0: 203a 7025 000a 0000 3301 4920 633a 3062 : %p.....3 I:cb0 + 3bc0acb0: 625f 6675 203a 7025 000a 0000 0000 0000 _buf: %p........ + 3bc0acc0: 3301 4920 633a 3162 625f 6675 203a 7025 .3 I:cb1_buf: %p + 3bc0acd0: 000a 0000 0000 0000 3301 4920 633a 3262 .........3 I:cb2 + 3bc0ace0: 625f 6675 203a 7025 000a 0000 0000 0000 _buf: %p........ + 3bc0acf0: 3301 4920 653a 3070 7542 6666 6c41 6f6c .3 I:ep0BuffAllo + 3bc0ad00: 3a63 2520 0a70 0000 3301 4920 723a 7073 c: %p....3 I:rsp + 3bc0ad10: 625f 6675 203a 7025 000a 0000 0000 0000 _buf: %p........ + 3bc0ad20: 3301 4920 613a 6d63 625f 6675 203a 7025 .3 I:acm_buf: %p + 3bc0ad30: 000a 0000 0000 0000 3301 4920 733a 7465 .........3 I:set + 3bc0ad40: 7075 625f 6675 203a 7025 000a 0000 0000 up_buf: %p...... + 3bc0ad50: 3301 4920 683a 6e61 6c64 7265 203a 7025 .3 I:handler: %p + 3bc0ad60: 000a 0000 0000 0000 5643 5449 4b45 0000 ........CVITEK.. + 3bc0ad70: 5355 2042 6f43 206d 6f50 7472 0000 0000 USB Com Port.... + 3bc0ad80: 3301 4920 553a 4253 7620 7562 2073 7369 .3 I:USB vbus is + 3bc0ad90: 6f20 6666 000a 0000 3301 4920 743a 6d69 off.....3 I:tim + 3bc0ada0: 6f65 7475 695f 5f6e 736d 2520 0a64 0000 eout_in_ms %d... + 3bc0adb0: 3201 5355 4342 002e 3301 4920 553a 4253 .2USBC...3 I:USB + 3bc0adc0: 7020 6c6f 696c 676e 7420 6d69 6f65 7475 polling timeout + 3bc0add0: 695f 5f6e 736d 203a 6425 000a 0000 0000 _in_ms: %d...... + 3bc0ade0: 3301 4920 473a 6461 6567 2074 6552 6967 .3 I:Gadget Regi + 3bc0adf0: 7473 7265 4620 6961 0a6c 0000 0000 0000 ster Fail....... + 3bc0ae00: 3301 4920 473a 6461 6567 2074 626f 656a .3 I:Gadget obje + 3bc0ae10: 7463 6e20 746f 6520 6978 7473 6465 0a21 ct not existed!. + ... + 3bc0ae28: 3201 5355 4542 2e46 0000 0000 0000 0000 .2USBEF......... + 3bc0ae38: 3301 4920 633a 6e6f 656e 7463 6f69 206e .3 I:connection + 3bc0ae48: 7073 6565 3a64 2520 0a64 0000 0000 0000 speed: %d....... + 3bc0ae58: 3201 5355 5742 252f 2e64 0000 0000 0000 .2USBW/%d....... + 3bc0ae68: 3201 5355 4442 002e 3201 5355 4c42 002e .2USBD...2USBL.. + 3bc0ae78: 3001 4520 553a 4253 4520 7272 726f 2520 .0 E:USB Error % + 3bc0ae88: 0a75 0000 0000 0000 5454 0059 0000 0000 u.......TTY..... + +000000003bc0ae98 <__func__.0>: + 3bc0ae98: 6962 646e 0000 0000 bind.... + +000000003bc0aea0 <__func__.1>: + 3bc0aea0: 6e75 6962 646e 0000 unbind.. + +000000003bc0aea8 <__func__.4>: + 3bc0aea8: 6964 6373 6e6f 656e 7463 0000 0000 0000 disconnect...... + +000000003bc0aeb8 <__func__.5>: + 3bc0aeb8: 6572 6573 0074 0000 6177 6e72 6e69 2167 reset...warning! + 3bc0aec8: 6620 6572 2065 6e75 6966 696e 6873 6465 free unfinished + 3bc0aed8: 7220 7165 6575 7473 0a21 0000 0000 0000 request!....... + 3bc0aee8: 7325 203a 4820 4e41 2147 4120 4248 4920 %s: HANG! AHB I + 3bc0aef8: 6c64 2065 5247 4353 4c54 000a 0000 0000 dle GRSCTL...... + 3bc0af08: 7325 203a 6974 656d 756f 2074 6c66 7375 %s: timeout flus + 3bc0af18: 6968 676e 6620 6669 206f 4728 5352 4354 hing fifo (GRSTC + 3bc0af28: 4c54 253d 3830 2978 000a 0000 0000 0000 TL=%08x)........ + 3bc0af38: 7325 203a 6974 656d 756f 2074 6c66 7375 %s: timeout flus + 3bc0af48: 6968 676e 6620 6669 736f 2820 7267 7473 hing fifos (grst + 3bc0af58: 7463 206c 203d 7830 7825 0a29 0000 0000 ctl = 0x%x)..... + 3bc0af68: 7325 203a 6163 6c6c 6620 726f 6520 3070 %s: call for ep0 + 3bc0af78: 6f2d 7475 000a 0000 7325 203a 6974 656d -out....%s: time + 3bc0af88: 756f 2074 4944 5045 4e49 2e54 414e 454b out DIEPINT.NAKE + 3bc0af98: 4646 000a 0000 0000 7325 203a 6974 656d FF......%s: time + 3bc0afa8: 756f 2074 4947 544e 5453 2e53 4f47 5455 out GINTSTS.GOUT + 3bc0afb8: 414e 454b 4646 000a 7325 203a 6974 656d NAKEFF..%s: time + 3bc0afc8: 756f 2074 4f44 5045 5443 2e4c 5045 6944 out DOEPCTL.EPDi + 3bc0afd8: 6173 6c62 0a65 0000 7325 2928 4820 4e41 sable...%s() HAN + 3bc0afe8: 2147 5320 666f 2074 6552 6573 2074 5247 G! Soft Reset GR + 3bc0aff8: 5453 5443 3d4c 3025 0a78 0000 0000 0000 STCTL=%0x....... + 3bc0b008: 7325 2928 4820 4e41 2147 5320 666f 2074 %s() HANG! Soft + 3bc0b018: 2e34 2032 6552 6573 2074 5247 5453 5443 4.2 Reset GRSTCT + 3bc0b028: 3d4c 3025 0a78 0000 7325 2928 4820 4e41 L=%0x...%s() HAN + 3bc0b038: 2147 4120 4248 4920 6c64 2065 5247 5453 G! AHB Idle GRST + 3bc0b048: 5443 3d4c 3025 0a78 0000 0000 0000 0000 CTL=%0x......... + 3bc0b058: 6973 657a 6620 726f 6820 6e61 6c64 7265 size for handler + 3bc0b068: 6920 2073 6f74 206f 6173 6c6d 206c 2528 is too samll (% + 3bc0b078: 646c 202c 6425 0a29 0000 0000 0000 0000 ld, %d)......... + 3bc0b088: 6f4e 6d20 6d65 726f 2079 7661 6961 616c No memory availa + 3bc0b098: 6c62 2065 6f66 2072 4455 2143 000a 0000 ble for UDC!.... + +000000003bc0b0a8 <__func__.0>: + 3bc0b0a8: 7764 3263 655f 5f70 7473 706f 785f 6566 dwc2_ep_stop_xfe + 3bc0b0b8: 0072 0000 0000 0000 r....... + +000000003bc0b0c0 <__func__.1>: + 3bc0b0c0: 645f 6377 5f32 7065 645f 7369 6261 656c _dwc2_ep_disable + ... + +000000003bc0b0d8 <__func__.2>: + 3bc0b0d8: 7764 3263 725f 6365 6e6f 6966 5f67 7375 dwc2_reconfig_us + 3bc0b0e8: 6462 0000 0000 0000 bd...... + +000000003bc0b0f0 <__func__.3>: + 3bc0b0f0: 7764 3263 685f 6f73 6774 745f 6678 6669 dwc2_hsotg_txfif + 3bc0b100: 5f6f 6c66 7375 0068 o_flush. + +000000003bc0b108 <__func__.4>: + 3bc0b108: 7764 3263 685f 6f73 6774 695f 696e 5f74 dwc2_hsotg_init_ + 3bc0b118: 6966 6f66 0000 0000 fifo.... + +000000003bc0b120 : + 3bc0b120: 7764 3263 752d 6364 0000 0000 0000 0000 dwc2-udc........ + +000000003bc0b130 : + ... + 3bc0b138: 2ac2 3bc0 0000 0000 0000 0000 0000 0000 .*.;............ + ... + 3bc0b158: 27ac 3bc0 0000 0000 0000 0000 0000 0000 .'.;............ + ... + +000000003bc0b178 : + 3bc0b178: 7065 2d30 6f63 746e 6f72 006c 0000 0000 ep0-control..... + +000000003bc0b188 : + 3bc0b188: 7065 6931 2d6e 7562 6b6c 0000 0000 0000 ep1in-bulk...... + +000000003bc0b198 : + 3bc0b198: 7065 6f32 7475 622d 6c75 006b 0000 0000 ep2out-bulk..... + +000000003bc0b1a8 : + 3bc0b1a8: 7065 6933 2d6e 6e69 0074 0000 0000 0000 ep3in-int....... + 3bc0b1b8: 7263 2d71 623e 6572 7571 7365 3a74 7830 crq->brequest:0x + 3bc0b1c8: 7825 000a 8c86 ffff 8d62 ffff 8eb4 ffff %x......b....... + 3bc0b1d8: 8e06 ffff 8eb4 ffff 8c1a ffff 8c68 ffff ............h... + 3bc0b1e8: 8eb4 ffff 8c7c ffff 8c50 ffff 8eb4 ffff ....|...P....... + 3bc0b1f8: 8c72 ffff 0000 0000 7572 206e 6574 7473 r.......run test + 3bc0b208: 6d20 646f 2065 6425 000a 0000 0000 0000 mode %d........ + 3bc0b218: 3301 4920 553a 4253 4956 2f44 7825 0a2e .3 I:USBVID/%x.. + ... + +000000003bc0b230 : + 3bc0b230: 0000 1021 2042 3063 4084 50a5 60c6 70e7 ..!.B c0.@.P.`.p + 3bc0b240: 8108 9129 a14a b16b c18c d1ad e1ce f1ef ..).J.k......... + 3bc0b250: 1231 0210 3273 2252 52b5 4294 72f7 62d6 1...s2R".R.B.r.b + 3bc0b260: 9339 8318 b37b a35a d3bd c39c f3ff e3de 9...{.Z......... + 3bc0b270: 2462 3443 0420 1401 64e6 74c7 44a4 5485 b$C4 ....d.t.D.T + 3bc0b280: a56a b54b 8528 9509 e5ee f5cf c5ac d58d j.K.(........... + 3bc0b290: 3653 2672 1611 0630 76d7 66f6 5695 46b4 S6r&..0..v.f.V.F + 3bc0b2a0: b75b a77a 9719 8738 f7df e7fe d79d c7bc [.z...8......... + 3bc0b2b0: 48c4 58e5 6886 78a7 0840 1861 2802 3823 .H.X.h.x@.a..(#8 + 3bc0b2c0: c9cc d9ed e98e f9af 8948 9969 a90a b92b ........H.i...+. + 3bc0b2d0: 5af5 4ad4 7ab7 6a96 1a71 0a50 3a33 2a12 .Z.J.z.jq.P.3:.* + 3bc0b2e0: dbfd cbdc fbbf eb9e 9b79 8b58 bb3b ab1a ........y.X.;... + 3bc0b2f0: 6ca6 7c87 4ce4 5cc5 2c22 3c03 0c60 1c41 .l.|.L.\",.<`.A. + 3bc0b300: edae fd8f cdec ddcd ad2a bd0b 8d68 9d49 ........*...h.I. + 3bc0b310: 7e97 6eb6 5ed5 4ef4 3e13 2e32 1e51 0e70 .~.n.^.N.>2.Q.p. + 3bc0b320: ff9f efbe dfdd cffc bf1b af3a 9f59 8f78 ..........:.Y.x. + 3bc0b330: 9188 81a9 b1ca a1eb d10c c12d f14e e16f ..........-.N.o. + 3bc0b340: 1080 00a1 30c2 20e3 5004 4025 7046 6067 .....0. .P%@Fpg` + 3bc0b350: 83b9 9398 a3fb b3da c33d d31c e37f f35e ........=.....^. + 3bc0b360: 02b1 1290 22f3 32d2 4235 5214 6277 7256 .....".25B.RwbVr + 3bc0b370: b5ea a5cb 95a8 8589 f56e e54f d52c c50d ........n.O.,... + 3bc0b380: 34e2 24c3 14a0 0481 7466 6447 5424 4405 .4.$....ftGd$T.D + 3bc0b390: a7db b7fa 8799 97b8 e75f f77e c71d d73c ........_.~...<. + 3bc0b3a0: 26d3 36f2 0691 16b0 6657 7676 4615 5634 .&.6....Wfvv.F4V + 3bc0b3b0: d94c c96d f90e e92f 99c8 89e9 b98a a9ab L.m.../......... + 3bc0b3c0: 5844 4865 7806 6827 18c0 08e1 3882 28a3 DXeH.x'h.....8.( + 3bc0b3d0: cb7d db5c eb3f fb1e 8bf9 9bd8 abbb bb9a }.\.?........... + 3bc0b3e0: 4a75 5a54 6a37 7a16 0af1 1ad0 2ab3 3a92 uJTZ7j.z.....*.: + 3bc0b3f0: fd2e ed0f dd6c cd4d bdaa ad8b 9de8 8dc9 ....l.M......... + 3bc0b400: 7c26 6c07 5c64 4c45 3ca2 2c83 1ce0 0cc1 &|.ld\EL.<.,.... + 3bc0b410: ef1f ff3e cf5d df7c af9b bfba 8fd9 9ff8 ..>.].|......... + 3bc0b420: 6e17 7e36 4e55 5e74 2e93 3eb2 0ed1 1ef0 .n6~UNt^...>.... + 3bc0b430: bf12 ffff bf46 ffff bfb4 ffff c030 ffff ....F.......0... + 3bc0b440: c056 ffff c0fc ffff c1ac ffff c20e ffff V............... + 3bc0b450: c342 ffff c436 ffff c43a ffff c46c ffff B...6...:...l... + 3bc0b460: c4dc ffff c4fc ffff c556 ffff 0000 0000 ........V....... + +000000003bc0b470 : + 3bc0b470: 0000 0001 0000 0000 0000 0004 0000 0000 ................ + 3bc0b480: 0000 0010 0000 0000 0000 0040 0000 0000 ..........@..... + +000000003bc0b490 : + ... + 3bc0b49c: ffff ffff fffc ffff 0001 0000 0002 0000 ................ + 3bc0b4ac: 0003 0000 .... + +000000003bc0b4b0 : + 3bc0b4b0: 0000 0000 0001 0000 0002 0000 0001 0000 ................ + 3bc0b4c0: 0000 0000 0004 0000 0004 0000 0004 0000 ................ + 3bc0b4d0: c874 ffff c854 ffff c834 ffff c5f0 ffff t...T...4....... + 3bc0b4e0: c692 ffff c744 ffff c806 ffff c5c2 ffff ....D........... + 3bc0b4f0: c664 ffff c716 ffff c7d8 ffff c594 ffff d............... + 3bc0b500: c636 ffff c6e8 ffff c7aa ffff 0000 0000 6............... + 3bc0b510: 3201 4444 2052 6e69 7469 0a2e 0000 0000 .2DDR init...... + 3bc0b520: 3201 6464 5f72 6170 6172 5b6d 5d30 303d .2ddr_param[0]=0 + 3bc0b530: 2578 2e78 000a 0000 3201 6b70 5f67 7974 x%x......2pkg_ty + 3bc0b540: 6570 253d 0a78 0000 3201 6e32 0a64 0000 pe=%x....22nd... + 3bc0b550: 3201 6e75 6e6b 776f 206e 6b70 5f67 7974 .2unknown pkg_ty + 3bc0b560: 6570 303d 2578 0a78 0000 0000 0000 0000 pe=0x%x......... + 3bc0b570: 3201 2544 5f78 7825 255f 0a78 0000 0000 .2D%x_%x_%x..... + 3bc0b580: 3201 4444 3252 0000 3201 4444 3352 0000 .2DDR2...2DDR3.. + 3bc0b590: 3201 6e75 6e6b 776f 206e 6576 646e 726f .2unknown vendor + 3bc0b5a0: 253d 0064 0000 0000 3201 352d 3231 004d =%d......2-512M. + 3bc0b5b0: 3201 312d 0047 0000 3201 322d 0047 0000 .2-1G....2-2G... + 3bc0b5c0: 3201 342d 0047 0000 3201 752d 6b6e 6f6e .2-4G....2-unkno + 3bc0b5d0: 6e77 6320 7061 6361 7469 3d79 6425 0000 wn capacity=%d.. + 3bc0b5e0: 3201 512d 4e46 3838 000a 0000 0000 0000 .2-QFN88........ + 3bc0b5f0: 3201 512d 4e46 3836 000a 0000 0000 0000 .2-QFN68........ + 3bc0b600: 3201 422d 4147 000a 3201 752d 6b6e 6f6e .2-BGA...2-unkno + 3bc0b610: 6e77 7020 676b 253d 0064 0000 cc32 ffff wn pkg=%d...2... + 3bc0b620: ccb8 ffff cc10 ffff cc22 ffff cc32 ffff ........"...2... + 3bc0b630: ccb8 ffff cc9a ffff ccaa ffff cce0 ffff ................ + 3bc0b640: cce0 ffff cce0 ffff cca6 ffff cce0 ffff ................ + 3bc0b650: cce0 ffff cce0 ffff cce0 ffff cca6 ffff ................ + 3bc0b660: cce0 ffff 0000 0000 3001 4520 453a 5252 .........0 E:ERR + 3bc0b670: 524f 6220 7369 5f74 6166 6c69 000a 0000 OR bist_fail.... + 3bc0b680: 3001 4520 623a 7369 5f74 6572 7573 746c .0 E:bist_result + 3bc0b690: 3d20 2520 2c78 6520 7272 645f 7461 5f61 = %x, err_data_ + 3bc0b6a0: 646f 2064 203d 6c25 2c78 6520 7272 645f odd = %lx, err_d + 3bc0b6b0: 7461 5f61 7665 6e65 3d20 2520 786c 000a ata_even = %lx.. + 3bc0b6c0: 3201 4444 2052 4942 5453 4620 4941 0a4c .2DDR BIST FAIL. + ... + 3bc0b6d8: 3201 4444 2052 4942 5453 5020 5341 0a53 .2DDR BIST PASS. + ... + 3bc0b6f0: fa02 401f fa02 801f 2c02 4010 2c02 8010 ...@.....,.@.,.. + 3bc0b700: 7a00 4000 7a00 8000 3a00 4000 3a00 8000 .z.@.z...:.@.:.. + 3bc0b710: e1ec ffff e250 ffff e2b0 ffff e31c ffff ....P........... + 3bc0b720: e3e0 ffff e380 ffff e316 ffff e316 ffff ................ + 3bc0b730: e4a2 ffff e440 ffff e7ac ffff e7ce ffff ....@........... + 3bc0b740: e7d8 ffff e7ea ffff e7fc ffff ............ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2.elf b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2.elf new file mode 100755 index 000000000..875680689 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2.elf differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2.ld b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2.ld new file mode 100644 index 000000000..b7fbc239f --- /dev/null +++ b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2.ld @@ -0,0 +1,53 @@ +OUTPUT_FORMAT("elf64-littleriscv") +OUTPUT_ARCH(riscv) +ENTRY(bl2_entrypoint) +MEMORY { + RAM (rwx): ORIGIN = (0x3BC00000), LENGTH = (0x00019000) +} +SECTIONS +{ + . = (0x3BC00000); + ASSERT(. == ALIGN(4096), + "BL2_BASE address is not aligned on a page boundary.") + ro . : { + __RO_START__ = .; + *bl2_entrypoint.o(.text*) + *(.vectors) + *(.text*) + *(.rodata*) + __RO_END__ = .; + } >RAM + .data . : { + . = ALIGN(16); + __DATA_START__ = .; + *(.data*) + . = ALIGN(16); + __DATA_END__ = .; + } >RAM + stacks (NOLOAD) : { + . = ALIGN(64); + __STACKS_START__ = .; + . += 0x2000; + . = ALIGN(64); + __STACKS_END__ = .; + } >RAM + .bss : ALIGN(16) { + . = ALIGN(16); + __BSS_START__ = .; + *(SORT_BY_ALIGNMENT(.bss*)) + *(COMMON) + . = ALIGN(16); + __BSS_END__ = .; + } >RAM + __BL2_END__ = .; + __BSS_SIZE__ = SIZEOF(.bss); + ASSERT(. <= ((0x3BC00000) + (0x00019000)), "BL2 image has exceeded its limit.") +p_rom_api_cryptodma_aes_decrypt = 0x0000000004400100; +p_rom_api_flash_init = 0x0000000004400080; +p_rom_api_get_boot_src = 0x0000000004400020; +p_rom_api_get_number_of_retries = 0x00000000044000c0; +p_rom_api_image_crc = 0x00000000044000a0; +p_rom_api_load_image = 0x0000000004400060; +p_rom_api_set_boot_src = 0x0000000004400040; +p_rom_api_verify_rsa = 0x00000000044000e0; +} diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2.map b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2.map new file mode 100644 index 000000000..dd44b5631 --- /dev/null +++ b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2.map @@ -0,0 +1,3415 @@ + +Discarded input sections + + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .text.cpu_report_exception + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .text.enable_cache + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o + .text.memcpy16 + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o + .text.zeromem 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o + .debug_info 0x0000000000000000 0x1ac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o + .debug_abbrev 0x0000000000000000 0xdd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o + .debug_loc 0x0000000000000000 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o + .debug_aranges + 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o + .debug_ranges 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o + .debug_line 0x0000000000000000 0x102 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o + .debug_str 0x0000000000000000 0x3a69 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o + .debug_frame 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .text.inv_dcache_range + 0x0000000000000000 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .text.clean_dcache_range + 0x0000000000000000 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .text.enable_dcache + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .text.disable_dcache + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .text.timer_init + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x186b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .text.console_init + 0x0000000000000000 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .text.console_puts + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .text.console_getc + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .text.uart_tstc + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .text.console_tstc + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .rodata.tf_print_buffer.str1.8 + 0x0000000000000000 0x2d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .text.tf_print_buffer + 0x0000000000000000 0x96 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .text.config_core_power + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .text.apply_analog_trimming_data + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .text.bytes_reverse + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .rodata.__assert.str1.8 + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .text.__assert + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .debug_info 0x0000000000000000 0x153 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .debug_abbrev 0x0000000000000000 0xa4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .debug_loc 0x0000000000000000 0x109 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x112 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .debug_line 0x0000000000000000 0x21b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .debug_str 0x0000000000000000 0x6fb3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .debug_frame 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .text.memcmp 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .text.memchr 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .text._memcpy 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o + .text.strchr 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o + .debug_info 0x0000000000000000 0xe4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o + .debug_abbrev 0x0000000000000000 0x7f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o + .debug_loc 0x0000000000000000 0x6f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o + .debug_line 0x0000000000000000 0x14e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o + .debug_str 0x0000000000000000 0x3a7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o + .text.strcasecmp + 0x0000000000000000 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o + .text.strncmp 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o + .debug_info 0x0000000000000000 0x105 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o + .debug_abbrev 0x0000000000000000 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o + .debug_loc 0x0000000000000000 0x15f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o + .debug_line 0x0000000000000000 0x13f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o + .debug_str 0x0000000000000000 0x3a39 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o + .text.strnlen 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o + .debug_info 0x0000000000000000 0x105 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o + .debug_abbrev 0x0000000000000000 0x9f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o + .debug_loc 0x0000000000000000 0xa3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o + .debug_line 0x0000000000000000 0x123 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o + .debug_str 0x0000000000000000 0x3a40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .text.is_usb_dl_enabled + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .rodata.print_sram_log.str1.8 + 0x0000000000000000 0x6d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .text.print_sram_log + 0x0000000000000000 0x86 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_ReadReg32 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_WriteReg32 + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedRead8 + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedRead16 + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedWrite8 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedWrite16 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_WritePhysAddress32 + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_BufferCopy + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .text.DWC2_DelayNs + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.set_trigger_cnt + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dfu_usb_get_reset + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.otg_phy_init + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.otg_phy_off + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x517 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .text.crc16_pacing + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .text.crc16_ccitt_with_tag + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .text.LzmaDec_InitDicAndState + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .text.LzmaDec_DecodeToBuf + 0x0000000000000000 0xd6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .text.LzmaDec_Free + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .text.LzmaDec_Allocate + 0x0000000000000000 0xbc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_renormDictT + 0x0000000000000000 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4HC_rotatePattern + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4HC_setExternalDict + 0x0000000000000000 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4HC_reverseCountPattern + 0x0000000000000000 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4HC_countPattern + 0x0000000000000000 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4HC_init_internal + 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_extDict + 0x0000000000000000 0x2aa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4HC_compress_optimal + 0x0000000000000000 0x1d36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4HC_compress_generic_noDictCtx + 0x0000000000000000 0x1b68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4HC_compress_generic + 0x0000000000000000 0x211a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_makeBlock + 0x0000000000000000 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_versionNumber + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .rodata.LZ4_versionString.str1.8 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_versionString + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressBound + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofState + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast_extState_fastReset + 0x0000000000000000 0x1428 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_initStream + 0x0000000000000000 0x36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast_extState + 0x0000000000000000 0xd02 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_default + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_destSize + 0x0000000000000000 0x83c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_createStream + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_resetStream + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_resetStream_fast + 0x0000000000000000 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_freeStream + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_loadDict + 0x0000000000000000 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_attach_dictionary + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast_continue + 0x0000000000000000 0x1ca4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlock_continue + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_forceExtDict + 0x0000000000000000 0xa24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_saveDict + 0x0000000000000000 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe_partial + 0x0000000000000000 0x2a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast + 0x0000000000000000 0x1e6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_withPrefix64k + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_createStreamDecode + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_freeStreamDecode + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_setStreamDecode + 0x0000000000000000 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decoderRingBufferSize + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe_continue + 0x0000000000000000 0x3c6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_continue + 0x0000000000000000 0x316 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_usingDict + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput_withState + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_withState + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput_continue + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_continue + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_uncompress + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_uncompress_unknownOutputSize + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofStreamState + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_create + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_slideInputBuffer + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_createStreamHC + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_freeStreamHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_initStreamHC + 0x0000000000000000 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_setCompressionLevel + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_destSize + 0x0000000000000000 0x6a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamHC + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamHC_fast + 0x0000000000000000 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_extStateHC_fastReset + 0x0000000000000000 0x64 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_extStateHC + 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC + 0x0000000000000000 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_initStream + 0x0000000000000000 0x5a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlock + 0x0000000000000000 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_favorDecompressionSpeed + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_loadDictHC + 0x0000000000000000 0xd6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_continue_generic + 0x0000000000000000 0xf0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_attach_HC_dictionary + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_continue + 0x0000000000000000 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlockHC_continue + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlockHC + 0x0000000000000000 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_continue_destSize + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_saveDictHC + 0x0000000000000000 0x96 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_localSaveDict + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC + 0x0000000000000000 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2 + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_withStateHC + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput_withStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_withStateHC + 0x0000000000000000 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput_withStateHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_continue + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput_continue + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofStreamStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamStateHC + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_createHC + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_freeHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_continue + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput_continue + 0x0000000000000000 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_slideInputBufferHC + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .rodata.LZ4F_getErrorName.str1.8 + 0x0000000000000000 0x17 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_getErrorName + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_getErrorCode + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_getVersion + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressionLevel_max + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBound_internal + 0x0000000000000000 0x9c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressFrameBound + 0x0000000000000000 0x3e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_freeCDict + 0x0000000000000000 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_createCDict + 0x0000000000000000 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_createCompressionContext + 0x0000000000000000 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_freeCompressionContext + 0x0000000000000000 0x36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBegin_usingCDict + 0x0000000000000000 0x20c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBegin + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBound + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressUpdate + 0x0000000000000000 0x204 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_flush + 0x0000000000000000 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressEnd + 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressFrame_usingCDict + 0x0000000000000000 0x104 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_compressFrame + 0x0000000000000000 0x112 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_freeDecompressionContext + 0x0000000000000000 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_resetDecompressionContext + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_headerSize + 0x0000000000000000 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_getFrameInfo + 0x0000000000000000 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_decompress_usingDict + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .rodata.str1.8 + 0x0000000000000000 0x246 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .rodata.cst8 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .rodata.LZ4F_errorStrings + 0x0000000000000000 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .rodata.clTable.2 + 0x0000000000000000 0x9c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH64_mergeRound + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH64_avalanche + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH_read64 + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH64_finalize.constprop.0 + 0x0000000000000000 0x7be /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .rodata.XXH64_finalize.constprop.0 + 0x0000000000000000 0x7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH_versionNumber + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH32_createState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH32_freeState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH32_copyState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH32_canonicalFromHash + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH32_hashFromCanonical + 0x0000000000000000 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH64 0x0000000000000000 0x234 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH64_createState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH64_freeState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH64_copyState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH64_reset + 0x0000000000000000 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH64_update + 0x0000000000000000 0x1fa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH64_digest + 0x0000000000000000 0x8a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH64_canonicalFromHash + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH64_hashFromCanonical + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .rodata.cst8 0x0000000000000000 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .text.get_ddr_capacity + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .text.get_pkg 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .text.get_ddr_type + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .rodata.dump_axi_mon_reg.str1.8 + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .text.dump_axi_mon_reg + 0x0000000000000000 0x6c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.ddr_debug_num_write + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_sub_resume2 + 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddrc_suspend + 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_cal_phyd_hw + 0x0000000000000000 0x10a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_cal_phya_enautok + 0x0000000000000000 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ctrlupd_short + 0x0000000000000000 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_wrlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_rdglvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_rdlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_wdqlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_cal_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_zqcal_status + 0x0000000000000000 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zqcal_isr8 + 0x0000000000000000 0x2d4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zqcal_hw_isr8 + 0x0000000000000000 0x15e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_training_status + 0x0000000000000000 0x134 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_set_dq_vref + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_phya_pd + 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_phyd_save + 0x0000000000000000 0xae6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.ddr_sys_suspend + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_phyd_restore + 0x0000000000000000 0xaf4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_sub_resume3 + 0x0000000000000000 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_sw_upd + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_set_dq_trig_lvl + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_freq_change_ltoh + 0x0000000000000000 0x276 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_0_phase40 + 0x0000000000000000 0x16e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_0_external + 0x0000000000000000 0x1ce /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_1_dq_set_highlow + 0x0000000000000000 0x1b4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_2_mux_demux + 0x0000000000000000 0x19c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_3_ca_set_highlow + 0x0000000000000000 0x1e4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_4_ca_clk_pat + 0x0000000000000000 0x132 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.ddr_sys_resume + 0x0000000000000000 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_rdlvl_sw_req + 0x0000000000000000 0x44c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_wdqlvl_sw_req + 0x0000000000000000 0x1ee /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_freq_change_htol + 0x0000000000000000 0x30a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_dfi_phyupd_req + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_sw_clr + 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_tx_shift_delay + 0x0000000000000000 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_rx_delay + 0x0000000000000000 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_rx_deskew_delay + 0x0000000000000000 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ca_shift_delay + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_cs_shift_delay + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_mask_shift_delay + 0x0000000000000000 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_reg_toggle + 0x0000000000000000 0x1514 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ana_test + 0x0000000000000000 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zq240 + 0x0000000000000000 0x1c4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zq240_ate + 0x0000000000000000 0x148 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zq240_cal + 0x0000000000000000 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .data.ddr_patch_regs + 0x0000000000000000 0x1c8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .data.ddr_patch_regs_count + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_info 0x0000000000000000 0x121 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_abbrev 0x0000000000000000 0xb5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_line 0x0000000000000000 0x160 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .debug_str 0x0000000000000000 0x53f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_entrypoint.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_entrypoint.o + .bss 0x0000000000000000 0x1000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_entrypoint.o + .rodata 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_entrypoint.o + +Memory Configuration + +Name Origin Length Attributes +RAM 0x000000003bc00000 0x0000000000019000 xrw +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + 0x000000003bc00000 . = 0x3bc00000 + 0x0000000000000001 ASSERT ((. == ALIGN (0x1000)), BL2_BASE address is not aligned on a page boundary.) + +ro 0x000000003bc00000 0xb74c + 0x000000003bc00000 __RO_START__ = . + *bl2_entrypoint.o(.text*) + .text.init 0x000000003bc00000 0x14c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_entrypoint.o + 0x000000003bc00000 bl2_entrypoint + *(.vectors) + *(.text*) + .text.sync_cache + 0x000000003bc0014c 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + 0x000000003bc0014c sync_cache + .text.flush_dcache_range + 0x000000003bc00156 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + 0x000000003bc00156 flush_dcache_range + .text.trig_simulation_timer + 0x000000003bc0017a 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + 0x000000003bc0017a trig_simulation_timer + .text.udelay 0x000000003bc0018a 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + 0x000000003bc0018a udelay + .text.mdelay 0x000000003bc001b4 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + 0x000000003bc001b4 mdelay + .text.get_timer + 0x000000003bc001be 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + 0x000000003bc001be get_timer + .text.get_random_from_timer + 0x000000003bc001e2 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + 0x000000003bc001e2 get_random_from_timer + .text.read_count_tick + 0x000000003bc0020c 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + 0x000000003bc0020c read_count_tick + .text.jump_to_monitor + 0x000000003bc0021a 0x78 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + 0x000000003bc0021a jump_to_monitor + .text.jump_to_loader_2nd + 0x000000003bc00292 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + 0x000000003bc00292 jump_to_loader_2nd + .text._uart_putc + 0x000000003bc00294 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + 0x000000003bc00294 _uart_putc + .text.console_putc + 0x000000003bc002a4 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + 0x000000003bc002a4 console_putc + .text.console_flush + 0x000000003bc002c2 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + 0x000000003bc002c2 console_flush + .text.unsigned_num_print + 0x000000003bc002d6 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .text.tf_printf + 0x000000003bc00358 0x19a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + 0x000000003bc00358 tf_printf + .text.__system_reset + 0x000000003bc004f2 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + 0x000000003bc004f2 __system_reset + .text.panic_handler + 0x000000003bc005ba 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + 0x000000003bc005ba panic_handler + .text.reset_c906l + 0x000000003bc005ec 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + 0x000000003bc005ec reset_c906l + .text.setup_dl_flag + 0x000000003bc00636 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + 0x000000003bc00636 setup_dl_flag + .text.sys_switch_all_to_pll + 0x000000003bc00680 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + 0x000000003bc00680 sys_switch_all_to_pll + .text.sys_pll_nd + 0x000000003bc0068e 0x18e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + 0x000000003bc0068e sys_pll_nd + .text.sys_pll_init + 0x000000003bc0081c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + 0x000000003bc0081c sys_pll_init + .text.switch_rtc_mode_1st_stage + 0x000000003bc00832 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + 0x000000003bc00832 switch_rtc_mode_1st_stage + .text.switch_rtc_mode_2nd_stage + 0x000000003bc00834 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + 0x000000003bc00834 switch_rtc_mode_2nd_stage + .text.set_rtc_en_registers + 0x000000003bc00878 0xbc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + 0x000000003bc00878 set_rtc_en_registers + .text.init_comm_info + 0x000000003bc00934 0x6e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + 0x000000003bc00934 init_comm_info + .text.dec_verify_image + 0x000000003bc009a2 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + 0x000000003bc009a2 dec_verify_image + .text.ntostr 0x000000003bc009a6 0x7a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + 0x000000003bc009a6 ntostr + .text.memset 0x000000003bc00a20 0x5a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + 0x000000003bc00a20 memset + .text.memcpy 0x000000003bc00a7a 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + 0x000000003bc00a7a memcpy + .text.memmove 0x000000003bc00ada 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + 0x000000003bc00ada memmove + .text.putchar_l + 0x000000003bc00afa 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + 0x000000003bc00afa putchar_l + .text.strcmp 0x000000003bc00b4c 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o + 0x000000003bc00b4c strcmp + .text.strlen 0x000000003bc00b68 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o + 0x000000003bc00b68 strlen + .text.gpio_in_value + 0x000000003bc00b7a 0x7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + 0x000000003bc00b7a gpio_in_value + .text.usb_id_det + 0x000000003bc00bf6 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + 0x000000003bc00bf6 usb_id_det + .text.read_time_ms + 0x000000003bc00c14 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .text.load_image_by_usb + 0x000000003bc00c2e 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc00c2e load_image_by_usb + .text.load_param2 + 0x000000003bc00c6e 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc00c6e load_param2 + .text.load_ddr_param + 0x000000003bc00d3e 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc00d3e load_ddr_param + .text.load_ddr + 0x000000003bc00dec 0xc6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc00dec load_ddr + .text.load_blcp_2nd + 0x000000003bc00eb2 0x166 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc00eb2 load_blcp_2nd + .text.load_monitor + 0x000000003bc01018 0x126 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc01018 load_monitor + .text.load_loader_2nd + 0x000000003bc0113e 0x208 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc0113e load_loader_2nd + .text.load_rest + 0x000000003bc01346 0xe6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc01346 load_rest + .text.bl2_main + 0x000000003bc0142c 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc0142c bl2_main + .text.SzFree 0x000000003bc014c4 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .text.SzAlloc 0x000000003bc014c6 0x42 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .text.decompress_lzma + 0x000000003bc01508 0xe8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + 0x000000003bc01508 decompress_lzma + .text.LZ4_malloc + 0x000000003bc015f0 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + 0x000000003bc015f0 LZ4_malloc + .text.LZ4_calloc + 0x000000003bc015f6 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + 0x000000003bc015f6 LZ4_calloc + .text.LZ4_free + 0x000000003bc0161e 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + 0x000000003bc0161e LZ4_free + .text.decompress_lz4 + 0x000000003bc01620 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + 0x000000003bc01620 decompress_lz4 + .text.decompress + 0x000000003bc016ce 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + 0x000000003bc016ce decompress + .text.DWC2_UncachedRead32 + 0x000000003bc0174c 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + 0x000000003bc0174c DWC2_UncachedRead32 + .text.DWC2_UncachedWrite32 + 0x000000003bc01752 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + 0x000000003bc01752 DWC2_UncachedWrite32 + .text.resume 0x000000003bc01756 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .text.requestMemAlloc + 0x000000003bc01758 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .text.requestMemFree + 0x000000003bc01790 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .text.acm_complete_set_line_coding + 0x000000003bc01792 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .text.reset 0x000000003bc017ae 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .text.disconnect + 0x000000003bc017c2 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .text.unbind 0x000000003bc017f0 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .text.bind 0x000000003bc01816 0x42 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .text.get_unicode_string + 0x000000003bc01858 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .text.bulkOutCmpl + 0x000000003bc018aa 0x234 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .text.getDescAcm + 0x000000003bc01ade 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .text.reqComplete + 0x000000003bc01b3a 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .text.bulkInCmpl + 0x000000003bc01b64 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .text.setup 0x000000003bc01bb4 0x442 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .text.suspend 0x000000003bc01ff6 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .text.convert_buf_addr + 0x000000003bc01ff8 0xa2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc01ff8 convert_buf_addr + .text.print_buf_addr + 0x000000003bc0209a 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc0209a print_buf_addr + .text.AcmIsr 0x000000003bc0216a 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc0216a AcmIsr + .text.acm_app_init + 0x000000003bc02170 0x138 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc02170 acm_app_init + .text.usb_vbus_det + 0x000000003bc022a8 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc022a8 usb_vbus_det + .text.get_usb_polling_timeout_value + 0x000000003bc022b4 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc022b4 get_usb_polling_timeout_value + .text.AcmApp 0x000000003bc022e4 0x478 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc022e4 AcmApp + .text.dwc2_fifo_status + 0x000000003bc0275c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_free_request + 0x000000003bc02772 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.pullup 0x000000003bc027ac 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_alloc_request + 0x000000003bc027f4 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_ep_enable + 0x000000003bc0282c 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_fifo_flush + 0x000000003bc028cc 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_log_write + 0x000000003bc028ce 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc028ce dwc2_log_write + .text.dwc2_get_ep0_name + 0x000000003bc028d0 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc028d0 dwc2_get_ep0_name + .text.udc_reinit + 0x000000003bc028da 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc028da udc_reinit + .text.dwc2_done + 0x000000003bc02920 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02920 dwc2_done + .text.dwc2_dequeue + 0x000000003bc02960 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_nuke + 0x000000003bc029b4 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc029b4 dwc2_nuke + .text.usb_gadget_unregister_driver + 0x000000003bc029e2 0x9a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc029e2 usb_gadget_unregister_driver + .text.dwc2_hsotg_set_bit + 0x000000003bc02a7c 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02a7c dwc2_hsotg_set_bit + .text.dwc2_hsotg_clear_bit + 0x000000003bc02a9e 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02a9e dwc2_hsotg_clear_bit + .text.wakeup 0x000000003bc02ac2 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_hsotg_wait_bit_set + 0x000000003bc02afe 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02afe dwc2_hsotg_wait_bit_set + .text.dwc2_hsotg_txfifo_flush.constprop.0 + 0x000000003bc02b44 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.kill_all_requests.isra.0 + 0x000000003bc02bd4 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_disconnect + 0x000000003bc02c32 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02c32 dwc2_disconnect + .text.dwc2_hsotg_init_fifo.constprop.0 + 0x000000003bc02c88 0xda /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text._dwc2_ep_disable.isra.0 + 0x000000003bc02d62 0x1a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_ep_disable + 0x000000003bc02f08 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_reconfig_usbd + 0x000000003bc02f28 0x28e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02f28 dwc2_reconfig_usbd + .text.usb_gadget_register_driver + 0x000000003bc031b6 0x156 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc031b6 usb_gadget_register_driver + .text.dwc2_phy_to_log_ep + 0x000000003bc0330c 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc0330c dwc2_phy_to_log_ep + .text.dwc2_udc_probe + 0x000000003bc0331e 0x150 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc0331e dwc2_udc_probe + .text.usb_gadget_handle_interrupts + 0x000000003bc0346e 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc0346e usb_gadget_handle_interrupts + .text.set_max_pktsize + 0x000000003bc034ba 0x8e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep_clear_stall + 0x000000003bc03548 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep_set_stall + 0x000000003bc035a6 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_ep0_complete_out + 0x000000003bc03608 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep0_zlp + 0x000000003bc03688 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep0_set_stall.isra.0 + 0x000000003bc03706 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.setdma_rx.isra.0 + 0x000000003bc0376e 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.complete_rx + 0x000000003bc03818 0xfc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_pre_setup + 0x000000003bc03914 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03914 dwc2_udc_pre_setup + .text.dwc2_ep_fifo_write + 0x000000003bc0392a 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc0392a dwc2_ep_fifo_write + .text.setdma_tx + 0x000000003bc0396e 0x15c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_ep_fifo_read + 0x000000003bc03aca 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03aca dwc2_ep_fifo_read + .text.dwc2_write_fifo_ep0 + 0x000000003bc03b0e 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03b0e dwc2_write_fifo_ep0 + .text.dwc2_set_address + 0x000000003bc03b5a 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03b5a dwc2_set_address + .text.dwc2_ep0_read + 0x000000003bc03ba2 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03ba2 dwc2_ep0_read + .text.dwc2_ep0_write + 0x000000003bc03bca 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03bca dwc2_ep0_write + .text.dwc2_udc_set_nak + 0x000000003bc03c0a 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03c0a dwc2_udc_set_nak + .text.dwc2_udc_set_halt + 0x000000003bc03c4a 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03c4a dwc2_udc_set_halt + .text.dwc2_udc_ep_activate + 0x000000003bc03cac 0xb2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03cac dwc2_udc_ep_activate + .text.dwc2_handle_ep0 + 0x000000003bc03d5e 0x346 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03d5e dwc2_handle_ep0 + .text.dwc2_udc_irq + 0x000000003bc040a4 0x540 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc040a4 dwc2_udc_irq + .text.dwc2_ep0_kick + 0x000000003bc045e4 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc045e4 dwc2_ep0_kick + .text.dwc2_queue + 0x000000003bc045fc 0xd8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc045fc dwc2_queue + .text.usb_polling + 0x000000003bc046d4 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + 0x000000003bc046d4 usb_polling + .text.crc16_ccitt + 0x000000003bc04714 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + 0x000000003bc04714 crc16_ccitt + .text.LzmaDec_WriteRem + 0x000000003bc04746 0x72 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .text.LzmaDec_DecodeReal2 + 0x000000003bc047b8 0x138a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .text.LzmaDec_TryDummy + 0x000000003bc05b42 0x4e8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .text.LzmaDec_Init + 0x000000003bc0602a 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + 0x000000003bc0602a LzmaDec_Init + .text.LzmaDec_DecodeToDic + 0x000000003bc0603e 0x27c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + 0x000000003bc0603e LzmaDec_DecodeToDic + .text.LzmaDec_FreeProbs + 0x000000003bc062ba 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + 0x000000003bc062ba LzmaDec_FreeProbs + .text.LzmaDec_AllocateProbs2.isra.0 + 0x000000003bc062d6 0x66 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .text.LzmaProps_Decode + 0x000000003bc0633c 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + 0x000000003bc0633c LzmaProps_Decode + .text.LzmaDec_AllocateProbs + 0x000000003bc06386 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + 0x000000003bc06386 LzmaDec_AllocateProbs + .text.LzmaDecode + 0x000000003bc063b6 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + 0x000000003bc063b6 LzmaDecode + .text.LZ4F_readLE32 + 0x000000003bc06460 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe_withSmallPrefix + 0x000000003bc06484 0x276 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_updateDict + 0x000000003bc066fa 0x110 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe + 0x000000003bc0680a 0x26e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + 0x000000003bc0680a LZ4_decompress_safe + .text.LZ4_decompress_safe_withPrefix64k + 0x000000003bc06a78 0x26a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + 0x000000003bc06a78 LZ4_decompress_safe_withPrefix64k + .text.LZ4_decompress_safe_forceExtDict + 0x000000003bc06ce2 0x316 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + 0x000000003bc06ce2 LZ4_decompress_safe_forceExtDict + .text.LZ4_decompress_safe_usingDict + 0x000000003bc06ff8 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + 0x000000003bc06ff8 LZ4_decompress_safe_usingDict + .text.LZ4F_isError + 0x000000003bc0701e 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + 0x000000003bc0701e LZ4F_isError + .text.LZ4F_getBlockSize + 0x000000003bc0702a 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + 0x000000003bc0702a LZ4F_getBlockSize + .text.LZ4F_decodeHeader + 0x000000003bc07048 0x1a4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .text.LZ4F_createDecompressionContext + 0x000000003bc071ec 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + 0x000000003bc071ec LZ4F_createDecompressionContext + .text.LZ4F_decompress + 0x000000003bc0721c 0x7dc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + 0x000000003bc0721c LZ4F_decompress + .text.XXH32_avalanche + 0x000000003bc079f8 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH_read32 + 0x000000003bc07a24 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH32_finalize.constprop.0 + 0x000000003bc07a3a 0x33a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .text.XXH32 0x000000003bc07d74 0x1c6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + 0x000000003bc07d74 XXH32 + .text.XXH32_reset + 0x000000003bc07f3a 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + 0x000000003bc07f3a XXH32_reset + .text.XXH32_update + 0x000000003bc07f90 0x1d2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + 0x000000003bc07f90 XXH32_update + .text.XXH32_digest + 0x000000003bc08162 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + 0x000000003bc08162 XXH32_digest + .text.ddr_init + 0x000000003bc081a2 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + 0x000000003bc081a2 ddr_init + .text.read_ddr_pkg_info + 0x000000003bc081d6 0x22e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc081d6 read_ddr_pkg_info + .text.get_ddr_vendor + 0x000000003bc08404 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc08404 get_ddr_vendor + .text.axi_mon_start_all + 0x000000003bc0840e 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + 0x000000003bc0840e axi_mon_start_all + .text.ddr_sys_bring_up + 0x000000003bc0845e 0x224 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + 0x000000003bc0845e ddr_sys_bring_up + .text.cvx16_bist_wr_prbs_init + 0x000000003bc08682 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08682 cvx16_bist_wr_prbs_init + .text.cvx16_bist_wr_sram_init + 0x000000003bc086d0 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc086d0 cvx16_bist_wr_sram_init + .text.cvx16_bist_wrlvl_init + 0x000000003bc08730 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08730 cvx16_bist_wrlvl_init + .text.cvx16_bist_rdglvl_init + 0x000000003bc08776 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08776 cvx16_bist_rdglvl_init + .text.cvx16_bist_rdlvl_init + 0x000000003bc087bc 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc087bc cvx16_bist_rdlvl_init + .text.cvx16_bist_wdqlvl_init + 0x000000003bc088a6 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc088a6 cvx16_bist_wdqlvl_init + .text.cvx16_bist_wdmlvl_init + 0x000000003bc08956 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08956 cvx16_bist_wdmlvl_init + .text.cvx16_bist_start_check + 0x000000003bc089b6 0x6a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc089b6 cvx16_bist_start_check + .text.cvx16_rdvld_train + 0x000000003bc08a20 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08a20 cvx16_rdvld_train + .text.cvx16_synp_mrw + 0x000000003bc08ac6 0x74 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08ac6 cvx16_synp_mrw + .text.cvx16_dll_cal + 0x000000003bc08b3a 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08b3a cvx16_dll_cal + .text.cvx16_clk_normal + 0x000000003bc08ba2 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08ba2 cvx16_clk_normal + .text.cvx16_clk_div2 + 0x000000003bc08bfe 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08bfe cvx16_clk_div2 + .text.cvx16_clk_div40 + 0x000000003bc08c14 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08c14 cvx16_clk_div40 + .text.cvx16_chg_pll_freq + 0x000000003bc08c2a 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08c2a cvx16_chg_pll_freq + .text.cvx16_ddr_phy_power_on_seq1 + 0x000000003bc08d22 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08d22 cvx16_ddr_phy_power_on_seq1 + .text.cvx16_ddr_phy_power_on_seq2 + 0x000000003bc08d66 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08d66 cvx16_ddr_phy_power_on_seq2 + .text.cvx16_ddr_phy_power_on_seq3 + 0x000000003bc08dae 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08dae cvx16_ddr_phy_power_on_seq3 + .text.cvx16_wait_for_dfi_init_complete + 0x000000003bc08de8 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08de8 cvx16_wait_for_dfi_init_complete + .text.cvx16_polling_dfi_init_start + 0x000000003bc08e20 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08e20 cvx16_polling_dfi_init_start + .text.cvx16_set_dfi_init_complete + 0x000000003bc08e3a 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08e3a cvx16_set_dfi_init_complete + .text.cvx16_INT_ISR_08 + 0x000000003bc08e62 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08e62 cvx16_INT_ISR_08 + .text.cvx16_polling_synp_normal_mode + 0x000000003bc08e8e 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08e8e cvx16_polling_synp_normal_mode + .text.cvx16_dfi_ca_park_prbs + 0x000000003bc08eaa 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08eaa cvx16_dfi_ca_park_prbs + .text.cvx16_setting_check + 0x000000003bc08f12 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08f12 cvx16_setting_check + .text.cvx16_set_dfi_init_start + 0x000000003bc08f32 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08f32 cvx16_set_dfi_init_start + .text.cvx16_pll_init + 0x000000003bc08f58 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08f58 cvx16_pll_init + .text.cvx16_clk_gating_disable + 0x000000003bc08ffe 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc08ffe cvx16_clk_gating_disable + .text.cvx16_clk_gating_enable + 0x000000003bc09048 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc09048 cvx16_clk_gating_enable + .text.cvx16_wrlvl_req + 0x000000003bc090b8 0x1d6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc090b8 cvx16_wrlvl_req + .text.cvx16_rdglvl_req + 0x000000003bc0928e 0x13e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc0928e cvx16_rdglvl_req + .text.cvx16_rdlvl_req + 0x000000003bc093cc 0x1ea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc093cc cvx16_rdlvl_req + .text.cvx16_wdqlvl_req + 0x000000003bc095b6 0x182 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc095b6 cvx16_wdqlvl_req + .text.cvx16_en_rec_vol_mode + 0x000000003bc09738 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc09738 cvx16_en_rec_vol_mode + .text.ctrl_init_detect_dram_size + 0x000000003bc0973a 0x11a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc0973a ctrl_init_detect_dram_size + .text.pll_init + 0x000000003bc09854 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + 0x000000003bc09854 pll_init + .text.cvx16_pinmux + 0x000000003bc098d8 0x33a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + 0x000000003bc098d8 cvx16_pinmux + .text.cvx16_dram_cap_check + 0x000000003bc09c12 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + 0x000000003bc09c12 cvx16_dram_cap_check + .text.ddrc_init + 0x000000003bc09c14 0x224 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + 0x000000003bc09c14 ddrc_init + .text.ctrl_init_high_patch + 0x000000003bc09e38 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + 0x000000003bc09e38 ctrl_init_high_patch + .text.ctrl_init_low_patch + 0x000000003bc09e66 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + 0x000000003bc09e66 ctrl_init_low_patch + .text.ctrl_init_update_by_dram_size + 0x000000003bc09e94 0xb2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + 0x000000003bc09e94 ctrl_init_update_by_dram_size + .text.phy_init + 0x000000003bc09f46 0x3b6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + 0x000000003bc09f46 phy_init + *(.rodata*) + *fill* 0x000000003bc0a2fc 0x4 + .rodata.build_message + 0x000000003bc0a300 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o + 0x000000003bc0a300 build_message + *fill* 0x000000003bc0a31a 0x6 + .rodata.version_string + 0x000000003bc0a320 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o + 0x000000003bc0a320 version_string + .rodata.jump_to_monitor.str1.8 + 0x000000003bc0a330 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + *fill* 0x000000003bc0a356 0x2 + .rodata.tf_printf.str1.8 + 0x000000003bc0a358 0x3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + *fill* 0x000000003bc0a35b 0x1 + .rodata.tf_printf + 0x000000003bc0a35c 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .rodata.__system_reset.str1.8 + 0x000000003bc0a3b8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + *fill* 0x000000003bc0a3ca 0x6 + .rodata.panic_handler.str1.8 + 0x000000003bc0a3d0 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + *fill* 0x000000003bc0a3e6 0x2 + .rodata.reset_c906l.str1.8 + 0x000000003bc0a3e8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .rodata.sys_pll_nd.str1.8 + 0x000000003bc0a3f0 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + *fill* 0x000000003bc0a3f9 0x7 + .rodata.sys_pll_init.str1.8 + 0x000000003bc0a400 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + *fill* 0x000000003bc0a409 0x7 + .rodata.switch_rtc_mode_2nd_stage.str1.8 + 0x000000003bc0a410 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + *fill* 0x000000003bc0a424 0x4 + .rodata.set_rtc_en_registers.str1.8 + 0x000000003bc0a428 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + *fill* 0x000000003bc0a454 0x4 + .rodata.cst8 0x000000003bc0a458 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .rodata.hex2ascii_data + 0x000000003bc0a488 0x25 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + 0x000000003bc0a488 hex2ascii_data + *fill* 0x000000003bc0a4ad 0x3 + .rodata.cst8 0x000000003bc0a4b0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .rodata.load_image_by_usb.str1.8 + 0x000000003bc0a4b8 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a4d2 0x6 + .rodata.load_param2.str1.8 + 0x000000003bc0a4d8 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .rodata.load_ddr_param.str1.8 + 0x000000003bc0a530 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .rodata.load_ddr.str1.8 + 0x000000003bc0a578 0x4d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a5c5 0x3 + .rodata.load_blcp_2nd.str1.8 + 0x000000003bc0a5c8 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .rodata.load_monitor.str1.8 + 0x000000003bc0a6a8 0xcf /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a777 0x1 + .rodata.load_loader_2nd.str1.8 + 0x000000003bc0a778 0xce /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a846 0x2 + .rodata.load_rest.str1.8 + 0x000000003bc0a848 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .rodata.bl2_main.str1.8 + 0x000000003bc0a8a8 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a92c 0x4 + .rodata.cst8 0x000000003bc0a930 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .rodata.SzAlloc.str1.8 + 0x000000003bc0a938 0x1f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a957 0x1 + .rodata.decompress_lzma.str1.8 + 0x000000003bc0a958 0x92 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a9ea 0x6 + .rodata.decompress_lz4.str1.8 + 0x000000003bc0a9f0 0x72 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + *fill* 0x000000003bc0aa62 0x6 + .rodata.decompress.str1.8 + 0x000000003bc0aa68 0x31 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + *fill* 0x000000003bc0aa99 0x7 + .rodata.__func__.0 + 0x000000003bc0aaa0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .rodata.__func__.1 + 0x000000003bc0aaa8 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .rodata.reset.str1.8 + 0x000000003bc0aab8 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aace 0x2 + .rodata.unbind.str1.8 + 0x000000003bc0aad0 0xd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aadd 0x3 + .rodata.bind.str1.8 + 0x000000003bc0aae0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .rodata.bulkOutCmpl.str1.8 + 0x000000003bc0aae8 0x61 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab49 0x7 + .rodata.reqComplete.str1.8 + 0x000000003bc0ab50 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab65 0x3 + .rodata.setup.str1.8 + 0x000000003bc0ab68 0xd2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ac3a 0x2 + .rodata.setup 0x000000003bc0ac3c 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .rodata.print_buf_addr.str1.8 + 0x000000003bc0ac78 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ad62 0x6 + .rodata.acm_app_init.str1.8 + 0x000000003bc0ad68 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ad7d 0x3 + .rodata.AcmApp.str1.8 + 0x000000003bc0ad80 0x10b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ae8b 0x5 + .rodata.str1.8 + 0x000000003bc0ae90 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ae94 0x4 + .rodata.__func__.0 + 0x000000003bc0ae98 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ae9d 0x3 + .rodata.__func__.1 + 0x000000003bc0aea0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aea7 0x1 + .rodata.__func__.4 + 0x000000003bc0aea8 0xb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aeb3 0x5 + .rodata.__func__.5 + 0x000000003bc0aeb8 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aebe 0x2 + .rodata.dwc2_free_request.str1.8 + 0x000000003bc0aec0 0x23 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0aee3 0x5 + .rodata.dwc2_hsotg_txfifo_flush.constprop.0.str1.8 + 0x000000003bc0aee8 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0af32 0x6 + .rodata.dwc2_hsotg_init_fifo.constprop.0.str1.8 + 0x000000003bc0af38 0x2d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0af65 0x3 + .rodata._dwc2_ep_disable.isra.0.str1.8 + 0x000000003bc0af68 0x77 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0afdf 0x1 + .rodata.dwc2_reconfig_usbd.str1.8 + 0x000000003bc0afe0 0x71 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b051 0x7 + .rodata.dwc2_udc_probe.str1.8 + 0x000000003bc0b058 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b0a6 0x2 + .rodata.__func__.0 + 0x000000003bc0b0a8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b0ba 0x6 + .rodata.__func__.1 + 0x000000003bc0b0c0 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b0d1 0x7 + .rodata.__func__.2 + 0x000000003bc0b0d8 0x13 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b0eb 0x5 + .rodata.__func__.3 + 0x000000003bc0b0f0 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .rodata.__func__.4 + 0x000000003bc0b108 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b11d 0x3 + .rodata.driver_name + 0x000000003bc0b120 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b129 0x7 + .rodata.dwc2_udc_ops + 0x000000003bc0b130 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .rodata.ep0name + 0x000000003bc0b178 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b184 0x4 + .rodata.ep1name + 0x000000003bc0b188 0xb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b193 0x5 + .rodata.ep2name + 0x000000003bc0b198 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b1a4 0x4 + .rodata.ep3name + 0x000000003bc0b1a8 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0b1b2 0x6 + .rodata.dwc2_handle_ep0.str1.8 + 0x000000003bc0b1b8 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .rodata.dwc2_handle_ep0 + 0x000000003bc0b1cc 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + *fill* 0x000000003bc0b1fc 0x4 + .rodata.dwc2_udc_irq.str1.8 + 0x000000003bc0b200 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + *fill* 0x000000003bc0b212 0x6 + .rodata.usb_polling.str1.8 + 0x000000003bc0b218 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + *fill* 0x000000003bc0b229 0x7 + .rodata.crc16_tab + 0x000000003bc0b230 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .rodata.LZ4F_decompress + 0x000000003bc0b430 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + *fill* 0x000000003bc0b46c 0x4 + .rodata.blockSizes.0 + 0x000000003bc0b470 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .rodata.dec64table + 0x000000003bc0b490 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .rodata.inc32table + 0x000000003bc0b4b0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .rodata.XXH32_finalize.constprop.0 + 0x000000003bc0b4d0 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + *fill* 0x000000003bc0b50c 0x4 + .rodata.ddr_init.str1.8 + 0x000000003bc0b510 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + *fill* 0x000000003bc0b536 0x2 + .rodata.read_ddr_pkg_info.str1.8 + 0x000000003bc0b538 0xe2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + *fill* 0x000000003bc0b61a 0x2 + .rodata.read_ddr_pkg_info + 0x000000003bc0b61c 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + *fill* 0x000000003bc0b664 0x4 + .rodata.ddr_sys_bring_up.str1.8 + 0x000000003bc0b668 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + 0x81 (size before relaxing) + .rodata.cst8 0x000000003bc0b6f0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .rodata.cvx16_pinmux + 0x000000003bc0b710 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .rodata.ctrl_init_update_by_dram_size + 0x000000003bc0b738 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + 0x000000003bc0b74c __RO_END__ = . + +.rela.dyn 0x000000003bc0b750 0x0 + .rela.text.setup_dl_flag + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o + .rela.text.load_param2 + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o + .rela.text.load_ddr_param + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o + .rela.text.load_ddr + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o + .rela.text.load_blcp_2nd + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o + .rela.text.load_monitor + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o + .rela.text.load_loader_2nd + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o + .rela.text.load_rest + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o + .rela.text.init + 0x000000003bc0b750 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o + +.data 0x000000003bc0b74c 0x2c4 + 0x000000003bc0b750 . = ALIGN (0x10) + *fill* 0x000000003bc0b74c 0x4 + 0x000000003bc0b750 __DATA_START__ = . + *(.data*) + .data.time_records + 0x000000003bc0b750 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + 0x000000003bc0b750 time_records + .data.ConfDesc + 0x000000003bc0b758 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b761 0x7 + .data.acm_buf 0x000000003bc0b768 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .data.acm_call_mgmt_descriptor + 0x000000003bc0b770 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b775 0x3 + .data.acm_control_interface_desc + 0x000000003bc0b778 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b781 0x7 + .data.acm_data_interface_desc + 0x000000003bc0b788 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b791 0x7 + .data.acm_descriptor + 0x000000003bc0b798 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b79c 0x4 + .data.acm_fs_in_desc + 0x000000003bc0b7a0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7a7 0x1 + .data.acm_fs_notify_desc + 0x000000003bc0b7a8 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7af 0x1 + .data.acm_fs_out_desc + 0x000000003bc0b7b0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7b7 0x1 + .data.acm_header_desc + 0x000000003bc0b7b8 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7bd 0x3 + .data.acm_hs_in_desc + 0x000000003bc0b7c0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7c7 0x1 + .data.acm_hs_notify_desc + 0x000000003bc0b7c8 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7cf 0x1 + .data.acm_hs_out_desc + 0x000000003bc0b7d0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7d7 0x1 + .data.acm_union_desc + 0x000000003bc0b7d8 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7dd 0x3 + .data.bosDesc 0x000000003bc0b7e0 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7e5 0x3 + .data.bulkBufAlloc + 0x000000003bc0b7e8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .data.capabilityExtDesc + 0x000000003bc0b7f0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b7f7 0x1 + .data.cb0_buf 0x000000003bc0b7f8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .data.cb1_buf 0x000000003bc0b800 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .data.cb2_buf 0x000000003bc0b808 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .data.cmdBufAlloc + 0x000000003bc0b810 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .data.descriptorsFs + 0x000000003bc0b818 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .data.descriptorsHs + 0x000000003bc0b868 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .data.devHsDesc + 0x000000003bc0b8b8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b8ca 0x6 + .data.drv_obj 0x000000003bc0b8d0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .data.ep0BuffAlloc + 0x000000003bc0b920 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .data.g_driver + 0x000000003bc0b928 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .data.handler 0x000000003bc0b980 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .data.languageDesc + 0x000000003bc0b988 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b98c 0x4 + .data.qualifierDesc + 0x000000003bc0b990 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b99a 0x6 + .data.rsp_buf 0x000000003bc0b9a0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .data.setup_buf + 0x000000003bc0b9a8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .data.dwc2_ep_ops + 0x000000003bc0b9b0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .data.ep0_fifo_size + 0x000000003bc0ba00 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .data.ep_fifo_size + 0x000000003bc0ba04 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .data.cv_usb_vid + 0x000000003bc0ba08 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + 0x000000003bc0ba08 cv_usb_vid + *fill* 0x000000003bc0ba0a 0x2 + .data.ddr_data_rate + 0x000000003bc0ba0c 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + 0x000000003bc0ba0c ddr_data_rate + 0x000000003bc0ba10 . = ALIGN (0x10) + 0x000000003bc0ba10 __DATA_END__ = . + +stacks 0x000000003bc0ba10 0x2030 + 0x000000003bc0ba40 . = ALIGN (0x40) + *fill* 0x000000003bc0ba10 0x30 + 0x000000003bc0ba40 __STACKS_START__ = . + 0x000000003bc0da40 . = (. + 0x2000) + *fill* 0x000000003bc0ba40 0x2000 + 0x000000003bc0da40 . = ALIGN (0x40) + 0x000000003bc0da40 __STACKS_END__ = . + +.bss 0x000000003bc0dc00 0x5c10 + 0x000000003bc0dc00 . = ALIGN (0x10) + 0x000000003bc0dc00 __BSS_START__ = . + *(SORT_BY_ALIGNMENT(.bss*)) + .bss.fip_param2 + 0x000000003bc0dc00 0x1000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .bss.sram_union_buf + 0x000000003bc0ec00 0x4000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .bss.acm_bufArr + 0x000000003bc12c00 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc12c00 acm_bufArr + .bss.bulkBufAllocArr + 0x000000003bc12c80 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc12c80 bulkBufAllocArr + .bss.cb0_bufArr + 0x000000003bc12e80 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc12e80 cb0_bufArr + .bss.cb1_bufArr + 0x000000003bc12f00 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc12f00 cb1_bufArr + .bss.cb2_bufArr + 0x000000003bc12f80 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc12f80 cb2_bufArr + .bss.cmdBufAllocArr + 0x000000003bc13000 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc13000 cmdBufAllocArr + .bss.ep0BuffAllocArr + 0x000000003bc13200 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc13200 ep0BuffAllocArr + .bss.handlerArr + 0x000000003bc13280 0x400 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc13280 handlerArr + .bss.rsp_bufArr + 0x000000003bc13680 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc13680 rsp_bufArr + *fill* 0x000000003bc13690 0x30 + .bss.setup_bufArr + 0x000000003bc136c0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc136c0 setup_bufArr + .bss.fw_dynamic_info + 0x000000003bc136c8 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .bss.comp_alloc_buf + 0x000000003bc136f8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .bss.comp_alloc_size + 0x000000003bc13700 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .bss.acm 0x000000003bc13708 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc13708 acm + .bss.bulkBuf 0x000000003bc13710 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.bulkInReq + 0x000000003bc13718 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.bulkOutReq + 0x000000003bc13720 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.cmdBuf 0x000000003bc13728 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.ep0Buff 0x000000003bc13730 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.ep0Req 0x000000003bc13738 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.epIn 0x000000003bc13740 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.epOut 0x000000003bc13748 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.fip_buf 0x000000003bc13750 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.productDesc + 0x000000003bc13758 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc13774 0x4 + .bss.serial.2 0x000000003bc13778 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.serialDesc + 0x000000003bc13788 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc137a4 0x4 + .bss.vendorDesc + 0x000000003bc137a8 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.reg 0x000000003bc137b8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc137b8 reg + .bss.the_controller + 0x000000003bc137c0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc137c0 the_controller + .bss.reg_set 0x000000003bc137c8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + 0x000000003bc137c8 reg_set + .bss.reg_span 0x000000003bc137d0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + 0x000000003bc137d0 reg_span + .bss.reg_step 0x000000003bc137d8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + 0x000000003bc137d8 reg_step + .bss.fip_tx_offset + 0x000000003bc137e0 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.fip_tx_size + 0x000000003bc137e4 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.transfer_size + 0x000000003bc137e8 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.ts 0x000000003bc137ec 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.rddata 0x000000003bc137f0 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x000000003bc137f0 rddata + .bss.dev_freq 0x000000003bc137f4 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + 0x000000003bc137f4 dev_freq + .bss.freq_in 0x000000003bc137f8 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + 0x000000003bc137f8 freq_in + .bss.mod_freq 0x000000003bc137fc 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + 0x000000003bc137fc mod_freq + .bss.tar_freq 0x000000003bc13800 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + 0x000000003bc13800 tar_freq + .bss.ack_idx.6 + 0x000000003bc13804 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.acm_configValue + 0x000000003bc13805 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + 0x000000003bc13805 acm_configValue + .bss.configBreak + 0x000000003bc13806 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.configValue + 0x000000003bc13807 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.flagEnterDL + 0x000000003bc13808 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.flagReboot + 0x000000003bc13809 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.is_serial_patched.3 + 0x000000003bc1380a 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.mem_alloc_cnt + 0x000000003bc1380b 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .bss.ddr_capacity + 0x000000003bc1380c 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1380c ddr_capacity + .bss.ddr_type 0x000000003bc1380d 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1380d ddr_type + .bss.ddr_vendor + 0x000000003bc1380e 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1380e ddr_vendor + .bss.pkg 0x000000003bc1380f 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1380f pkg + *(COMMON) + 0x000000003bc13810 . = ALIGN (0x10) + 0x000000003bc13810 __BSS_END__ = . + 0x000000003bc13810 __BL2_END__ = . + 0x0000000000005c10 __BSS_SIZE__ = SIZEOF (.bss) + 0x0000000000000001 ASSERT ((. <= 0x3bc19000), BL2 image has exceeded its limit.) + 0x0000000004400100 p_rom_api_cryptodma_aes_decrypt = 0x4400100 + 0x0000000004400080 p_rom_api_flash_init = 0x4400080 + 0x0000000004400020 p_rom_api_get_boot_src = 0x4400020 + 0x00000000044000c0 p_rom_api_get_number_of_retries = 0x44000c0 + 0x00000000044000a0 p_rom_api_image_crc = 0x44000a0 + 0x0000000004400060 p_rom_api_load_image = 0x4400060 + 0x0000000004400040 p_rom_api_set_boot_src = 0x4400040 + 0x00000000044000e0 p_rom_api_verify_rsa = 0x44000e0 +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/assert.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_entrypoint.o +OUTPUT(/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2.elf elf64-littleriscv) + +.debug_info 0x0000000000000000 0x6993c + .debug_info 0x0000000000000000 0x89 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o + .debug_info 0x0000000000000089 0x1a1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_info 0x000000000000022a 0x1e4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .debug_info 0x000000000000040e 0x45f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_info 0x000000000000086d 0x3d6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_info 0x0000000000000c43 0x33f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_info 0x0000000000000f82 0x474 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_info 0x00000000000013f6 0x1a24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_info 0x0000000000002e1a 0x622 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .debug_info 0x000000000000343c 0x22a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .debug_info 0x0000000000003666 0x41f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .debug_info 0x0000000000003a85 0x2d6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .debug_info 0x0000000000003d5b 0x13d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o + .debug_info 0x0000000000003e98 0xf6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o + .debug_info 0x0000000000003f8e 0x483 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_info 0x0000000000004411 0x1c6e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_info 0x000000000000607f 0x9df /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_info 0x0000000000006a5e 0x3a2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_info 0x0000000000006e00 0x2fa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_info 0x0000000000009da8 0x3221 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_info 0x000000000000cfc9 0x39b8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_info 0x0000000000010981 0x2b7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_info 0x0000000000010c38 0x279 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .debug_info 0x0000000000010eb1 0x17cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_info 0x000000000001267e 0x285e2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_info 0x000000000003ac60 0x4039 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_info 0x000000000003ec99 0x1a7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .debug_info 0x000000000003ee40 0x516 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_info 0x000000000003f356 0x1135 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_info 0x000000000004048b 0x24b1d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_info 0x0000000000064fa8 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_info 0x0000000000065188 0x11b2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_info 0x000000000006633a 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_info 0x0000000000066402 0x1561 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_info 0x0000000000067963 0x1fab /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .debug_info 0x000000000006990e 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_entrypoint.o + +.debug_abbrev 0x0000000000000000 0x4df7 + .debug_abbrev 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o + .debug_abbrev 0x0000000000000048 0xc1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_abbrev 0x0000000000000109 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .debug_abbrev 0x00000000000001b9 0x1ae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_abbrev 0x0000000000000367 0x197 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_abbrev 0x00000000000004fe 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_abbrev 0x0000000000000685 0x1e5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_abbrev 0x000000000000086a 0x371 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_abbrev 0x0000000000000bdb 0x134 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .debug_abbrev 0x0000000000000d0f 0x11a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .debug_abbrev 0x0000000000000e29 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .debug_abbrev 0x0000000000000f49 0x15d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .debug_abbrev 0x00000000000010a6 0xac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o + .debug_abbrev 0x0000000000001152 0x8c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o + .debug_abbrev 0x00000000000011de 0x202 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_abbrev 0x00000000000013e0 0x42f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_abbrev 0x000000000000180f 0x305 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_abbrev 0x0000000000001b14 0x181 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_abbrev 0x0000000000001c95 0x6f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_abbrev 0x000000000000238b 0x657 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_abbrev 0x00000000000029e2 0x55c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_abbrev 0x0000000000002f3e 0x15a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_abbrev 0x0000000000003098 0x12f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .debug_abbrev 0x00000000000031c7 0x454 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_abbrev 0x000000000000361b 0x69b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_abbrev 0x0000000000003cb6 0x4b9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_abbrev 0x000000000000416f 0xe9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .debug_abbrev 0x0000000000004258 0x17f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_abbrev 0x00000000000043d7 0x203 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_abbrev 0x00000000000045da 0x3e8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_abbrev 0x00000000000049c2 0x9e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_abbrev 0x0000000000004a60 0xd3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_abbrev 0x0000000000004b33 0x69 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_abbrev 0x0000000000004b9c 0x17d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_abbrev 0x0000000000004d19 0xca /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .debug_abbrev 0x0000000000004de3 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_entrypoint.o + +.debug_aranges 0x0000000000000000 0x1e80 + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o + .debug_aranges + 0x0000000000000020 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_aranges + 0x0000000000000070 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .debug_aranges + 0x00000000000000e0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_aranges + 0x0000000000000170 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_aranges + 0x00000000000001b0 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_aranges + 0x0000000000000250 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_aranges + 0x00000000000002a0 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_aranges + 0x0000000000000380 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .debug_aranges + 0x00000000000003b0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .debug_aranges + 0x00000000000003f0 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .debug_aranges + 0x0000000000000470 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .debug_aranges + 0x00000000000004a0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o + .debug_aranges + 0x00000000000004e0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o + .debug_aranges + 0x0000000000000510 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_aranges + 0x0000000000000560 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_aranges + 0x0000000000000630 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_aranges + 0x00000000000006d0 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_aranges + 0x0000000000000770 0x170 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_aranges + 0x00000000000008e0 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_aranges + 0x0000000000000ae0 0x190 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_aranges + 0x0000000000000c70 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_aranges + 0x0000000000000ca0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .debug_aranges + 0x0000000000000cf0 0x100 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_aranges + 0x0000000000000df0 0x7c0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_aranges + 0x00000000000015b0 0x1b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_aranges + 0x0000000000001760 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .debug_aranges + 0x0000000000001790 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_aranges + 0x0000000000001800 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_aranges + 0x0000000000001850 0x4e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_aranges + 0x0000000000001d30 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_aranges + 0x0000000000001d60 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_aranges + 0x0000000000001d90 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_aranges + 0x0000000000001dc0 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_aranges + 0x0000000000001e20 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .debug_aranges + 0x0000000000001e50 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_entrypoint.o + +.debug_macro 0x0000000000000000 0x9b13 + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o + .debug_macro 0x0000000000000011 0x86e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o + .debug_macro 0x000000000000087f 0x115 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000000994 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001208 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001477 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001488 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x000000000000160f 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001655 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x000000000000166b 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001693 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x00000000000016af 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x000000000000185e 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001923 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x00000000000019a5 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001bce 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001c8c 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001d86 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001f66 0x186b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_macro 0x00000000000037d1 0x12c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .debug_macro 0x00000000000038fd 0x121 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000003a1e 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000003b4e 0x178 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000003cc6 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000003d92 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000003da8 0x146 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000003eee 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000003f94 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x000000000000404c 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_macro 0x000000000000407a 0x14b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x00000000000041c5 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x000000000000443c 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x00000000000044d0 0xe2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_macro 0x00000000000045b2 0x125 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .debug_macro 0x00000000000046d7 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .debug_macro 0x0000000000004754 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .debug_macro 0x000000000000479a 0x9b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .debug_macro 0x0000000000004835 0x11b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004950 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004966 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004982 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004a40 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000004a90 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o + .debug_macro 0x0000000000004ad6 0x1f9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000004ccf 0xa60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x000000000000572f 0x872 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000005fa1 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000005fe1 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000005ffd 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x000000000000601f 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000006125 0x192 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x00000000000062b7 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x00000000000062cd 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_macro 0x00000000000062f5 0x13c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000006431 0x16b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x000000000000659c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x00000000000065b2 0x61 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_macro 0x0000000000006613 0x9d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x00000000000066b0 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000006702 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006902 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006918 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006928 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000693e 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000697e 0x51d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006e9b 0x17a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000007015 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000703d 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000753a 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x00000000000075ce 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000007644 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000765a 0x207 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007861 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007877 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x00000000000078c3 0x517 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007dda 0x1cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000007fa7 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_macro 0x00000000000080d7 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .debug_macro 0x0000000000008125 0x308 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_macro 0x000000000000842d 0x2ef /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x000000000000871c 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000087c4 0x27 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000087eb 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x000000000000884d 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000088ca 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000088f6 0x1ac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000008aa2 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000008af4 0x11b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .debug_macro 0x0000000000008c0f 0xfb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008d0a 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008d26 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008ef9 0x1c4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x00000000000090bd 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000009163 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x00000000000095fc 0xd7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_macro 0x00000000000096d3 0x110 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x00000000000097e3 0xac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_macro 0x000000000000988f 0xa1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000009930 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x00000000000099c8 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000009a72 0xa1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + +.debug_line 0x0000000000000000 0x777fd + .debug_line 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o + .debug_line 0x0000000000000028 0x231 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_line 0x0000000000000259 0x351 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .debug_line 0x00000000000005aa 0x4f5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_line 0x0000000000000a9f 0x341 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_line 0x0000000000000de0 0x559 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_line 0x0000000000001339 0x812 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_line 0x0000000000001b4b 0x1538 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_line 0x0000000000003083 0x21d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .debug_line 0x00000000000032a0 0x2db /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .debug_line 0x000000000000357b 0x5f0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .debug_line 0x0000000000003b6b 0x2f7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .debug_line 0x0000000000003e62 0x1f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o + .debug_line 0x0000000000004058 0x117 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o + .debug_line 0x000000000000416f 0x589 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_line 0x00000000000046f8 0x14d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_line 0x0000000000005bd0 0x792 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_line 0x0000000000006362 0x282 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_line 0x00000000000065e4 0x265c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_line 0x0000000000008c40 0x27a7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_line 0x000000000000b3e7 0x3667 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_line 0x000000000000ea4e 0x2d9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_line 0x000000000000ed27 0x2a4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .debug_line 0x000000000000efcb 0x4528 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_line 0x00000000000134f3 0x34953 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_line 0x0000000000047e46 0x3d78 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_line 0x000000000004bbbe 0x260 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .debug_line 0x000000000004be1e 0x622 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_line 0x000000000004c440 0xcb5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_line 0x000000000004d0f5 0x27146 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_line 0x000000000007423b 0x301 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_line 0x000000000007453c 0xc73 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_line 0x00000000000751af 0x165 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_line 0x0000000000075314 0xebc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_line 0x00000000000761d0 0x145c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + .debug_line 0x000000000007762c 0x1d1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_entrypoint.o + +.debug_str 0x0000000000000000 0x2399c + .debug_str 0x0000000000000000 0x2980 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o + 0x29a6 (size before relaxing) + .debug_str 0x0000000000002980 0x94c5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + 0xbeca (size before relaxing) + .debug_str 0x000000000000be45 0x217 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + 0x717f (size before relaxing) + .debug_str 0x000000000000c05c 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + 0xbf65 (size before relaxing) + .debug_str 0x000000000000c154 0x243 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + 0x7226 (size before relaxing) + .debug_str 0x000000000000c397 0x2ec /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + 0x67ea (size before relaxing) + .debug_str 0x000000000000c683 0x7f0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + 0x77a2 (size before relaxing) + .debug_str 0x000000000000ce73 0xf0b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + 0x7f63 (size before relaxing) + .debug_str 0x000000000000dd7e 0x30c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + 0x77ac (size before relaxing) + .debug_str 0x000000000000e08a 0x281 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + 0x4370 (size before relaxing) + .debug_str 0x000000000000e30b 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + 0x46c2 (size before relaxing) + .debug_str 0x000000000000e38b 0x4b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + 0x70b7 (size before relaxing) + .debug_str 0x000000000000e3d6 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o + 0x3c13 (size before relaxing) + .debug_str 0x000000000000e3fc 0x1b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o + 0x3a8b (size before relaxing) + .debug_str 0x000000000000e417 0x5ca5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + 0xd1d8 (size before relaxing) + .debug_str 0x00000000000140bc 0x443 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + 0x81fe (size before relaxing) + .debug_str 0x00000000000144ff 0xc1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + 0x8121 (size before relaxing) + .debug_str 0x0000000000015119 0x1cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + 0x437f (size before relaxing) + .debug_str 0x00000000000152e6 0x4ba0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + 0xca29 (size before relaxing) + .debug_str 0x0000000000019e86 0x6fa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + 0xba63 (size before relaxing) + .debug_str 0x000000000001a580 0x314 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0xb80f (size before relaxing) + .debug_str 0x000000000001a894 0x19 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + 0x75c8 (size before relaxing) + .debug_str 0x000000000001a8ad 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + 0x4115 (size before relaxing) + .debug_str 0x000000000001a8f3 0x12b6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + 0x9057 (size before relaxing) + .debug_str 0x000000000001bba9 0x3a87 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + 0x85bd (size before relaxing) + .debug_str 0x000000000001f630 0x7f5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + 0x7a74 (size before relaxing) + .debug_str 0x000000000001fe25 0x51 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + 0x7216 (size before relaxing) + .debug_str 0x000000000001fe76 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + 0x72c3 (size before relaxing) + .debug_str 0x000000000001fef3 0x2ed3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + 0x9efe (size before relaxing) + .debug_str 0x0000000000022dc6 0xa92 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + 0x87c3 (size before relaxing) + .debug_str 0x0000000000023858 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + 0x9876 (size before relaxing) + .debug_str 0x00000000000238a8 0x1f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + 0x5093 (size before relaxing) + .debug_str 0x00000000000238c7 0x27 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + 0x4e2c (size before relaxing) + .debug_str 0x00000000000238ee 0x4f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + 0x7579 (size before relaxing) + .debug_str 0x000000000002393d 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + 0x743b (size before relaxing) + .debug_str 0x0000000000023971 0x2b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_entrypoint.o + 0x65 (size before relaxing) + +.comment 0x0000000000000000 0x1d + .comment 0x0000000000000000 0x1d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o + 0x1e (size before relaxing) + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + +.note.GNU-stack + 0x0000000000000000 0x0 + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + +.debug_ranges 0x0000000000000000 0x301e0 + .debug_ranges 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_ranges 0x0000000000000040 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .debug_ranges 0x00000000000000a0 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_ranges 0x00000000000001c0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_ranges 0x00000000000001f0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_ranges 0x0000000000000280 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_ranges 0x0000000000000300 0x8d0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_ranges 0x0000000000000bd0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .debug_ranges 0x0000000000000bf0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .debug_ranges 0x0000000000000c20 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .debug_ranges 0x0000000000000d40 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .debug_ranges 0x0000000000000d60 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o + .debug_ranges 0x0000000000000d90 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o + .debug_ranges 0x0000000000000db0 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_ranges 0x0000000000000e90 0x100 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_ranges 0x0000000000000f90 0x160 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_ranges 0x00000000000010f0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_ranges 0x0000000000001180 0x3d0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_ranges 0x0000000000001550 0x480 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_ranges 0x00000000000019d0 0x6b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_ranges 0x0000000000002080 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_ranges 0x00000000000020a0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .debug_ranges 0x00000000000020e0 0xbe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_ranges 0x0000000000002cc0 0x1cf40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_ranges 0x000000000001fc00 0x27b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_ranges 0x00000000000223b0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .debug_ranges 0x00000000000223d0 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_ranges 0x00000000000224a0 0x190 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_ranges 0x0000000000022630 0xce70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_ranges 0x000000000002f4a0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_ranges 0x000000000002f4c0 0x210 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_ranges 0x000000000002f6d0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_ranges 0x000000000002f6f0 0x570 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_ranges 0x000000000002fc60 0x580 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + +.debug_frame 0x0000000000000000 0x4810 + .debug_frame 0x0000000000000000 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o + .debug_frame 0x0000000000000058 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .debug_frame 0x00000000000000e0 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_frame 0x0000000000000198 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_frame 0x00000000000001f8 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_frame 0x00000000000002f0 0xd8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_frame 0x00000000000003c8 0x1d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_frame 0x00000000000005a0 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .debug_frame 0x00000000000005c8 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .debug_frame 0x0000000000000608 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .debug_frame 0x00000000000006a8 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .debug_frame 0x00000000000006e0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o + .debug_frame 0x0000000000000720 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o + .debug_frame 0x0000000000000748 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_frame 0x00000000000007d0 0x258 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_frame 0x0000000000000a28 0x158 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_frame 0x0000000000000b80 0x118 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_frame 0x0000000000000c98 0x3b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_frame 0x0000000000001048 0x5a8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_frame 0x00000000000015f0 0x520 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_frame 0x0000000000001b10 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_frame 0x0000000000001b50 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .debug_frame 0x0000000000001bb8 0x2d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_frame 0x0000000000001e90 0x1758 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_frame 0x00000000000035e8 0x488 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_frame 0x0000000000003a70 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .debug_frame 0x0000000000003aa8 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_frame 0x0000000000003b60 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_frame 0x0000000000003be8 0xb08 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_frame 0x00000000000046f0 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o + .debug_frame 0x0000000000004718 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_frame 0x0000000000004750 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o + .debug_frame 0x0000000000004778 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_frame 0x00000000000047e8 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o + +.debug_loc 0x0000000000000000 0xc2b4e + .debug_loc 0x0000000000000000 0x18c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o + .debug_loc 0x000000000000018c 0x28a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o + .debug_loc 0x0000000000000416 0x143 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o + .debug_loc 0x0000000000000559 0x24e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o + .debug_loc 0x00000000000007a7 0x8b7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o + .debug_loc 0x000000000000105e 0x1f54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o + .debug_loc 0x0000000000002fb2 0x39 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o + .debug_loc 0x0000000000002feb 0x450 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o + .debug_loc 0x000000000000343b 0xc56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o + .debug_loc 0x0000000000004091 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o + .debug_loc 0x000000000000414f 0x262 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o + .debug_loc 0x00000000000043b1 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o + .debug_loc 0x0000000000004433 0x38f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o + .debug_loc 0x00000000000047c2 0xe17 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o + .debug_loc 0x00000000000055d9 0x9d2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o + .debug_loc 0x0000000000005fab 0x156 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o + .debug_loc 0x0000000000006101 0x1f8b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o + .debug_loc 0x000000000000808c 0x28fb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o + .debug_loc 0x000000000000a987 0x4255 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_loc 0x000000000000ebdc 0x11d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o + .debug_loc 0x000000000000ecf9 0x33f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o + .debug_loc 0x000000000000f038 0xa0cf /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/LzmaDec.o + .debug_loc 0x0000000000019107 0x5f2ef /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o + .debug_loc 0x00000000000783f6 0x8560 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o + .debug_loc 0x0000000000080956 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o + .debug_loc 0x00000000000809ee 0x22c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o + .debug_loc 0x0000000000080c1a 0xdfe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o + .debug_loc 0x0000000000081a18 0x3a3d4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o + .debug_loc 0x00000000000bbdec 0x1c14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o + .debug_loc 0x00000000000bda00 0x2003 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o + .debug_loc 0x00000000000bfa03 0x314b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2.sym b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2.sym new file mode 100644 index 000000000..aa68b6c67 --- /dev/null +++ b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2.sym @@ -0,0 +1,402 @@ + 39: 000000003bc0ec00 16384 OBJECT LOCAL DEFAULT 4 sram_union_buf + 167: 000000003bc047b8 5002 FUNC LOCAL DEFAULT 1 LzmaDec_DecodeReal2 + 38: 000000003bc0dc00 4096 OBJECT LOCAL DEFAULT 4 fip_param2 + 280: 000000003bc0721c 2012 FUNC GLOBAL DEFAULT 1 LZ4F_decompress + 376: 000000003bc040a4 1344 FUNC GLOBAL DEFAULT 1 dwc2_udc_irq + 168: 000000003bc05b42 1256 FUNC LOCAL DEFAULT 1 LzmaDec_TryDummy + 284: 000000003bc022e4 1144 FUNC GLOBAL DEFAULT 1 AcmApp + 62: 000000003bc01bb4 1090 FUNC LOCAL DEFAULT 1 setup + 374: 000000003bc13280 1024 OBJECT GLOBAL DEFAULT 4 handlerArr + 396: 000000003bc09f46 950 FUNC GLOBAL DEFAULT 1 phy_init + 335: 000000003bc03d5e 838 FUNC GLOBAL DEFAULT 1 dwc2_handle_ep0 + 281: 000000003bc098d8 826 FUNC GLOBAL DEFAULT 1 cvx16_pinmux + 181: 000000003bc07a3a 826 FUNC LOCAL DEFAULT 1 XXH32_finalize.constprop. + 295: 000000003bc06ce2 790 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_force + 398: 000000003bc02f28 654 FUNC GLOBAL DEFAULT 1 dwc2_reconfig_usbd + 222: 000000003bc0603e 636 FUNC GLOBAL DEFAULT 1 LzmaDec_DecodeToDic + 172: 000000003bc06484 630 FUNC LOCAL DEFAULT 1 LZ4_decompress_safe_withS + 219: 000000003bc0680a 622 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe + 341: 000000003bc06a78 618 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_withP + 58: 000000003bc018aa 564 FUNC LOCAL DEFAULT 1 bulkOutCmpl + 321: 000000003bc081d6 558 FUNC GLOBAL DEFAULT 1 read_ddr_pkg_info + 380: 000000003bc0845e 548 FUNC GLOBAL DEFAULT 1 ddr_sys_bring_up + 340: 000000003bc09c14 548 FUNC GLOBAL DEFAULT 1 ddrc_init + 313: 000000003bc0113e 520 FUNC GLOBAL DEFAULT 1 load_loader_2nd + 377: 000000003bc13000 512 OBJECT GLOBAL DEFAULT 4 cmdBufAllocArr + 218: 000000003bc12c80 512 OBJECT GLOBAL DEFAULT 4 bulkBufAllocArr + 164: 000000003bc0b230 512 OBJECT LOCAL DEFAULT 1 crc16_tab + 238: 000000003bc093cc 490 FUNC GLOBAL DEFAULT 1 cvx16_rdlvl_req + 236: 000000003bc090b8 470 FUNC GLOBAL DEFAULT 1 cvx16_wrlvl_req + 332: 000000003bc07f90 466 FUNC GLOBAL DEFAULT 1 XXH32_update + 338: 000000003bc07d74 454 FUNC GLOBAL DEFAULT 1 XXH32 + 136: 000000003bc02d62 422 FUNC LOCAL DEFAULT 1 _dwc2_ep_disable.isra.0 + 174: 000000003bc07048 420 FUNC LOCAL DEFAULT 1 LZ4F_decodeHeader + 342: 000000003bc00358 410 FUNC GLOBAL DEFAULT 1 tf_printf + 276: 000000003bc0068e 398 FUNC GLOBAL DEFAULT 1 sys_pll_nd + 226: 000000003bc095b6 386 FUNC GLOBAL DEFAULT 1 cvx16_wdqlvl_req + 326: 000000003bc00eb2 358 FUNC GLOBAL DEFAULT 1 load_blcp_2nd + 159: 000000003bc0396e 348 FUNC LOCAL DEFAULT 1 setdma_tx + 269: 000000003bc031b6 342 FUNC GLOBAL DEFAULT 1 usb_gadget_register_drive + 315: 000000003bc0331e 336 FUNC GLOBAL DEFAULT 1 dwc2_udc_probe + 354: 000000003bc0928e 318 FUNC GLOBAL DEFAULT 1 cvx16_rdglvl_req + 283: 000000003bc02170 312 FUNC GLOBAL DEFAULT 1 acm_app_init + 249: 000000003bc01018 294 FUNC GLOBAL DEFAULT 1 load_monitor + 361: 000000003bc0973a 282 FUNC GLOBAL DEFAULT 1 ctrl_init_detect_dram_siz + 173: 000000003bc066fa 272 FUNC LOCAL DEFAULT 1 LZ4F_updateDict + 158: 000000003bc03818 252 FUNC LOCAL DEFAULT 1 complete_rx + 272: 000000003bc08c2a 248 FUNC GLOBAL DEFAULT 1 cvx16_chg_pll_freq + 308: 000000003bc087bc 234 FUNC GLOBAL DEFAULT 1 cvx16_bist_rdlvl_init + 302: 000000003bc01508 232 FUNC GLOBAL DEFAULT 1 decompress_lzma + 230: 000000003bc01346 230 FUNC GLOBAL DEFAULT 1 load_rest + 135: 000000003bc02c88 218 FUNC LOCAL DEFAULT 1 dwc2_hsotg_init_fifo.cons + 318: 000000003bc045fc 216 FUNC GLOBAL DEFAULT 1 dwc2_queue + 346: 000000003bc0209a 208 FUNC GLOBAL DEFAULT 1 print_buf_addr + 279: 000000003bc00c6e 208 FUNC GLOBAL DEFAULT 1 load_param2 + 228: 000000003bc004f2 200 FUNC GLOBAL DEFAULT 1 __system_reset + 392: 000000003bc00dec 198 FUNC GLOBAL DEFAULT 1 load_ddr + 278: 000000003bc00878 188 FUNC GLOBAL DEFAULT 1 set_rtc_en_registers + 334: 000000003bc09e94 178 FUNC GLOBAL DEFAULT 1 ctrl_init_update_by_dram_ + 204: 000000003bc03cac 178 FUNC GLOBAL DEFAULT 1 dwc2_udc_ep_activate + 240: 000000003bc088a6 176 FUNC GLOBAL DEFAULT 1 cvx16_bist_wdqlvl_init + 384: 000000003bc01620 174 FUNC GLOBAL DEFAULT 1 decompress_lz4 + 200: 000000003bc00d3e 174 FUNC GLOBAL DEFAULT 1 load_ddr_param + 367: 000000003bc063b6 170 FUNC GLOBAL DEFAULT 1 LzmaDecode + 157: 000000003bc0376e 170 FUNC LOCAL DEFAULT 1 setdma_rx.isra.0 + 339: 000000003bc08a20 166 FUNC GLOBAL DEFAULT 1 cvx16_rdvld_train + 298: 000000003bc08f58 166 FUNC GLOBAL DEFAULT 1 cvx16_pll_init + 296: 000000003bc01ff8 162 FUNC GLOBAL DEFAULT 1 convert_buf_addr + 129: 000000003bc0282c 160 FUNC LOCAL DEFAULT 1 dwc2_ep_enable + 343: 000000003bc029e2 154 FUNC GLOBAL DEFAULT 1 usb_gadget_unregister_dri + 299: 000000003bc0142c 152 FUNC GLOBAL DEFAULT 1 bl2_main + 133: 000000003bc02b44 144 FUNC LOCAL DEFAULT 1 dwc2_hsotg_txfifo_flush.c + 151: 000000003bc034ba 142 FUNC LOCAL DEFAULT 1 set_max_pktsize + 397: 000000003bc09854 132 FUNC GLOBAL DEFAULT 1 pll_init + 27: 000000003bc002d6 130 FUNC LOCAL DEFAULT 1 unsigned_num_print + 348: 000000003bc12f80 128 OBJECT GLOBAL DEFAULT 4 cb2_bufArr + 322: 000000003bc12c00 128 OBJECT GLOBAL DEFAULT 4 acm_bufArr + 290: 000000003bc13200 128 OBJECT GLOBAL DEFAULT 4 ep0BuffAllocArr + 275: 000000003bc12e80 128 OBJECT GLOBAL DEFAULT 4 cb0_bufArr + 235: 000000003bc12f00 128 OBJECT GLOBAL DEFAULT 4 cb1_bufArr + 154: 000000003bc03608 128 FUNC LOCAL DEFAULT 1 dwc2_ep0_complete_out + 264: 000000003bc016ce 126 FUNC GLOBAL DEFAULT 1 decompress + 155: 000000003bc03688 126 FUNC LOCAL DEFAULT 1 dwc2_udc_ep0_zlp + 259: 000000003bc00b7a 124 FUNC GLOBAL DEFAULT 1 gpio_in_value + 356: 000000003bc009a6 122 FUNC GLOBAL DEFAULT 1 ntostr + 211: 000000003bc0021a 120 FUNC GLOBAL DEFAULT 1 jump_to_monitor + 393: 000000003bc08ac6 116 FUNC GLOBAL DEFAULT 1 cvx16_synp_mrw + 166: 000000003bc04746 114 FUNC LOCAL DEFAULT 1 LzmaDec_WriteRem + 263: 000000003bc09048 112 FUNC GLOBAL DEFAULT 1 cvx16_clk_gating_enable + 316: 000000003bc00934 110 FUNC GLOBAL DEFAULT 1 init_comm_info + 257: 000000003bc089b6 106 FUNC GLOBAL DEFAULT 1 cvx16_bist_start_check + 375: 000000003bc08eaa 104 FUNC GLOBAL DEFAULT 1 cvx16_dfi_ca_park_prbs + 282: 000000003bc08b3a 104 FUNC GLOBAL DEFAULT 1 cvx16_dll_cal + 156: 000000003bc03706 104 FUNC LOCAL DEFAULT 1 dwc2_udc_ep0_set_stall.is + 169: 000000003bc062d6 102 FUNC LOCAL DEFAULT 1 LzmaDec_AllocateProbs2.is + 331: 000000003bc03c4a 98 FUNC GLOBAL DEFAULT 1 dwc2_udc_set_halt + 153: 000000003bc035a6 98 FUNC LOCAL DEFAULT 1 dwc2_udc_ep_set_stall + 304: 000000003bc08956 96 FUNC GLOBAL DEFAULT 1 cvx16_bist_wdmlvl_init + 265: 000000003bc086d0 96 FUNC GLOBAL DEFAULT 1 cvx16_bist_wr_sram_init + 239: 000000003bc00a7a 96 FUNC GLOBAL DEFAULT 1 memcpy + 152: 000000003bc03548 94 FUNC LOCAL DEFAULT 1 dwc2_udc_ep_clear_stall + 134: 000000003bc02bd4 94 FUNC LOCAL DEFAULT 1 kill_all_requests.isra.0 + 328: 000000003bc08ba2 92 FUNC GLOBAL DEFAULT 1 cvx16_clk_normal + 60: 000000003bc01ade 92 FUNC LOCAL DEFAULT 1 getDescAcm + 330: 000000003bc00a20 90 FUNC GLOBAL DEFAULT 1 memset + 114: 000000003bc0b928 88 OBJECT LOCAL DEFAULT 2 g_driver + 337: 000000003bc07f3a 86 FUNC GLOBAL DEFAULT 1 XXH32_reset + 314: 000000003bc02c32 86 FUNC GLOBAL DEFAULT 1 dwc2_disconnect + 131: 000000003bc02960 84 FUNC LOCAL DEFAULT 1 dwc2_dequeue + 205: 000000003bc00afa 82 FUNC GLOBAL DEFAULT 1 putchar_l + 57: 000000003bc01858 82 FUNC LOCAL DEFAULT 1 get_unicode_string + 194: 000000003bc0840e 80 FUNC GLOBAL DEFAULT 1 axi_mon_start_all + 138: 000000003bc0b9b0 80 OBJECT LOCAL DEFAULT 2 dwc2_ep_ops + 112: 000000003bc0b8d0 80 OBJECT LOCAL DEFAULT 2 drv_obj + 110: 000000003bc0b868 80 OBJECT LOCAL DEFAULT 2 descriptorsHs + 109: 000000003bc0b818 80 OBJECT LOCAL DEFAULT 2 descriptorsFs + 59: 000000003bc01b64 80 FUNC LOCAL DEFAULT 1 bulkInCmpl + 217: 000000003bc08682 78 FUNC GLOBAL DEFAULT 1 cvx16_bist_wr_prbs_init + 291: 000000003bc0346e 76 FUNC GLOBAL DEFAULT 1 usb_gadget_handle_interru + 234: 000000003bc03b0e 76 FUNC GLOBAL DEFAULT 1 dwc2_write_fifo_ep0 + 365: 000000003bc005ec 74 FUNC GLOBAL DEFAULT 1 reset_c906l + 364: 000000003bc00636 74 FUNC GLOBAL DEFAULT 1 setup_dl_flag + 324: 000000003bc0633c 74 FUNC GLOBAL DEFAULT 1 LzmaProps_Decode + 285: 000000003bc08ffe 74 FUNC GLOBAL DEFAULT 1 cvx16_clk_gating_disable + 293: 000000003bc08d66 72 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 215: 000000003bc03b5a 72 FUNC GLOBAL DEFAULT 1 dwc2_set_address + 145: 000000003bc0b130 72 OBJECT LOCAL DEFAULT 1 dwc2_udc_ops + 127: 000000003bc027ac 72 FUNC LOCAL DEFAULT 1 pullup + 394: 000000003bc028da 70 FUNC GLOBAL DEFAULT 1 udc_reinit + 237: 000000003bc02afe 70 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_wait_bit_set + 224: 000000003bc08730 70 FUNC GLOBAL DEFAULT 1 cvx16_bist_wrlvl_init + 223: 000000003bc08776 70 FUNC GLOBAL DEFAULT 1 cvx16_bist_rdglvl_init + 383: 000000003bc0392a 68 FUNC GLOBAL DEFAULT 1 dwc2_ep_fifo_write + 372: 000000003bc03aca 68 FUNC GLOBAL DEFAULT 1 dwc2_ep_fifo_read + 229: 000000003bc00834 68 FUNC GLOBAL DEFAULT 1 switch_rtc_mode_2nd_stage + 221: 000000003bc08d22 68 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 56: 000000003bc01816 66 FUNC LOCAL DEFAULT 1 bind + 42: 000000003bc014c6 66 FUNC LOCAL DEFAULT 1 SzAlloc + 381: 000000003bc08162 64 FUNC GLOBAL DEFAULT 1 XXH32_digest + 357: 000000003bc046d4 64 FUNC GLOBAL DEFAULT 1 usb_polling + 352: 000000003bc03c0a 64 FUNC GLOBAL DEFAULT 1 dwc2_udc_set_nak + 311: 000000003bc00c2e 64 FUNC GLOBAL DEFAULT 1 load_image_by_usb + 307: 000000003bc02920 64 FUNC GLOBAL DEFAULT 1 dwc2_done + 243: 000000003bc03bca 64 FUNC GLOBAL DEFAULT 1 dwc2_ep0_write + 132: 000000003bc02ac2 60 FUNC LOCAL DEFAULT 1 wakeup + 268: 000000003bc08dae 58 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 126: 000000003bc02772 58 FUNC LOCAL DEFAULT 1 dwc2_free_request + 233: 000000003bc08de8 56 FUNC GLOBAL DEFAULT 1 cvx16_wait_for_dfi_init_c + 128: 000000003bc027f4 56 FUNC LOCAL DEFAULT 1 dwc2_alloc_request + 50: 000000003bc01758 56 FUNC LOCAL DEFAULT 1 requestMemAlloc + 382: 000000003bc081a2 52 FUNC GLOBAL DEFAULT 1 ddr_init + 253: 000000003bc005ba 50 FUNC GLOBAL DEFAULT 1 panic_handler + 231: 000000003bc04714 50 FUNC GLOBAL DEFAULT 1 crc16_ccitt + 297: 000000003bc06386 48 FUNC GLOBAL DEFAULT 1 LzmaDec_AllocateProbs + 288: 000000003bc022b4 48 FUNC GLOBAL DEFAULT 1 get_usb_polling_timeout_v + 286: 000000003bc071ec 48 FUNC GLOBAL DEFAULT 1 LZ4F_createDecompressionC + 24: 000000003bc136c8 48 OBJECT LOCAL DEFAULT 4 fw_dynamic_info + 391: 000000003bc09e38 46 FUNC GLOBAL DEFAULT 1 ctrl_init_high_patch + 254: 000000003bc029b4 46 FUNC GLOBAL DEFAULT 1 dwc2_nuke + 247: 000000003bc09e66 46 FUNC GLOBAL DEFAULT 1 ctrl_init_low_patch + 54: 000000003bc017c2 46 FUNC LOCAL DEFAULT 1 disconnect + 294: 000000003bc08e62 44 FUNC GLOBAL DEFAULT 1 cvx16_INT_ISR_08 + 179: 000000003bc079f8 44 FUNC LOCAL DEFAULT 1 XXH32_avalanche + 305: 000000003bc0018a 42 FUNC GLOBAL DEFAULT 1 udelay + 255: 000000003bc001e2 42 FUNC GLOBAL DEFAULT 1 get_random_from_timer + 61: 000000003bc01b3a 42 FUNC LOCAL DEFAULT 1 reqComplete + 344: 000000003bc015f6 40 FUNC GLOBAL DEFAULT 1 LZ4_calloc + 289: 000000003bc03ba2 40 FUNC GLOBAL DEFAULT 1 dwc2_ep0_read + 232: 000000003bc08e3a 40 FUNC GLOBAL DEFAULT 1 cvx16_set_dfi_init_comple + 390: 000000003bc08f32 38 FUNC GLOBAL DEFAULT 1 cvx16_set_dfi_init_start + 359: 000000003bc06ff8 38 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_using + 55: 000000003bc017f0 38 FUNC LOCAL DEFAULT 1 unbind + 333: 000000003bc0a488 37 OBJECT GLOBAL DEFAULT 1 hex2ascii_data + 274: 000000003bc00156 36 FUNC GLOBAL DEFAULT 1 flush_dcache_range + 267: 000000003bc001be 36 FUNC GLOBAL DEFAULT 1 get_timer + 242: 000000003bc02a9e 36 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_clear_bit + 171: 000000003bc06460 36 FUNC LOCAL DEFAULT 1 LZ4F_readLE32 + 245: 000000003bc02a7c 34 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_set_bit + 325: 000000003bc08f12 32 FUNC GLOBAL DEFAULT 1 cvx16_setting_check + 216: 000000003bc00ada 32 FUNC GLOBAL DEFAULT 1 memmove + 177: 000000003bc0b4b0 32 OBJECT LOCAL DEFAULT 1 inc32table + 176: 000000003bc0b490 32 OBJECT LOCAL DEFAULT 1 dec64table + 175: 000000003bc0b470 32 OBJECT LOCAL DEFAULT 1 blockSizes.0 + 137: 000000003bc02f08 32 FUNC LOCAL DEFAULT 1 dwc2_ep_disable + 385: 000000003bc0702a 30 FUNC GLOBAL DEFAULT 1 LZ4F_getBlockSize + 368: 000000003bc00bf6 30 FUNC GLOBAL DEFAULT 1 usb_id_det + 270: 000000003bc002a4 30 FUNC GLOBAL DEFAULT 1 console_putc + 358: 000000003bc08e8e 28 FUNC GLOBAL DEFAULT 1 cvx16_polling_synp_normal + 336: 000000003bc00b4c 28 FUNC GLOBAL DEFAULT 1 strcmp + 301: 000000003bc062ba 28 FUNC GLOBAL DEFAULT 1 LzmaDec_FreeProbs + 84: 000000003bc13788 28 OBJECT LOCAL DEFAULT 4 serialDesc + 82: 000000003bc13758 28 OBJECT LOCAL DEFAULT 4 productDesc + 52: 000000003bc01792 28 FUNC LOCAL DEFAULT 1 acm_complete_set_line_cod + 306: 000000003bc08e20 26 FUNC GLOBAL DEFAULT 1 cvx16_polling_dfi_init_st + 225: 000000003bc0a300 26 OBJECT GLOBAL DEFAULT 1 build_message + 37: 000000003bc00c14 26 FUNC LOCAL DEFAULT 1 read_time_ms + 207: 000000003bc045e4 24 FUNC GLOBAL DEFAULT 1 dwc2_ep0_kick + 142: 000000003bc0b0f0 24 OBJECT LOCAL DEFAULT 1 __func__.3 + 395: 000000003bc08bfe 22 FUNC GLOBAL DEFAULT 1 cvx16_clk_div2 + 371: 000000003bc0081c 22 FUNC GLOBAL DEFAULT 1 sys_pll_init + 252: 000000003bc08c14 22 FUNC GLOBAL DEFAULT 1 cvx16_clk_div40 + 209: 000000003bc03914 22 FUNC GLOBAL DEFAULT 1 dwc2_udc_pre_setup + 180: 000000003bc07a24 22 FUNC LOCAL DEFAULT 1 XXH_read32 + 125: 000000003bc0275c 22 FUNC LOCAL DEFAULT 1 dwc2_fifo_status + 143: 000000003bc0b108 21 OBJECT LOCAL DEFAULT 1 __func__.4 + 345: 000000003bc002c2 20 FUNC GLOBAL DEFAULT 1 console_flush + 248: 000000003bc0602a 20 FUNC GLOBAL DEFAULT 1 LzmaDec_Init + 53: 000000003bc017ae 20 FUNC LOCAL DEFAULT 1 reset + 141: 000000003bc0b0d8 19 OBJECT LOCAL DEFAULT 1 __func__.2 + 378: 000000003bc00b68 18 FUNC GLOBAL DEFAULT 1 strlen + 355: 000000003bc0330c 18 FUNC GLOBAL DEFAULT 1 dwc2_phy_to_log_ep + 139: 000000003bc0b0a8 18 OBJECT LOCAL DEFAULT 1 __func__.0 + 111: 000000003bc0b8b8 18 OBJECT LOCAL DEFAULT 2 devHsDesc + 140: 000000003bc0b0c0 17 OBJECT LOCAL DEFAULT 1 __func__.1 + 303: 000000003bc0017a 16 FUNC GLOBAL DEFAULT 1 trig_simulation_timer + 273: 000000003bc00294 16 FUNC GLOBAL DEFAULT 1 _uart_putc + 212: 000000003bc13680 16 OBJECT GLOBAL DEFAULT 4 rsp_bufArr + 201: 000000003bc0a320 16 OBJECT GLOBAL DEFAULT 1 version_string + 87: 000000003bc137a8 16 OBJECT LOCAL DEFAULT 4 vendorDesc + 83: 000000003bc13778 16 OBJECT LOCAL DEFAULT 4 serial.2 + 46: 000000003bc0aaa8 16 OBJECT LOCAL DEFAULT 1 __func__.1 + 319: 000000003bc00680 14 FUNC GLOBAL DEFAULT 1 sys_switch_all_to_pll + 262: 000000003bc0020c 14 FUNC GLOBAL DEFAULT 1 read_count_tick + 350: 000000003bc0701e 12 FUNC GLOBAL DEFAULT 1 LZ4F_isError + 329: 000000003bc022a8 12 FUNC GLOBAL DEFAULT 1 usb_vbus_det + 148: 000000003bc0b198 12 OBJECT LOCAL DEFAULT 1 ep2name + 146: 000000003bc0b178 12 OBJECT LOCAL DEFAULT 1 ep0name + 147: 000000003bc0b188 11 OBJECT LOCAL DEFAULT 1 ep1name + 122: 000000003bc0aea8 11 OBJECT LOCAL DEFAULT 1 __func__.4 + 363: 000000003bc0014c 10 FUNC GLOBAL DEFAULT 1 sync_cache + 241: 000000003bc028d0 10 FUNC GLOBAL DEFAULT 1 dwc2_get_ep0_name + 193: 000000003bc001b4 10 FUNC GLOBAL DEFAULT 1 mdelay + 192: 000000003bc08404 10 FUNC GLOBAL DEFAULT 1 get_ddr_vendor + 149: 000000003bc0b1a8 10 OBJECT LOCAL DEFAULT 1 ep3name + 117: 000000003bc0b990 10 OBJECT LOCAL DEFAULT 2 qualifierDesc + 144: 000000003bc0b120 9 OBJECT LOCAL DEFAULT 1 driver_name + 92: 000000003bc0b788 9 OBJECT LOCAL DEFAULT 2 acm_data_interface_desc + 91: 000000003bc0b778 9 OBJECT LOCAL DEFAULT 2 acm_control_interface_des + 88: 000000003bc0b758 9 OBJECT LOCAL DEFAULT 2 ConfDesc + 389: 000000003bc137c0 8 OBJECT GLOBAL DEFAULT 4 the_controller + 387: 000000003bc13708 8 OBJECT GLOBAL DEFAULT 4 acm + 366: 000000003bc137c8 8 OBJECT GLOBAL DEFAULT 4 reg_set + 327: 000000003bc137d0 8 OBJECT GLOBAL DEFAULT 4 reg_span + 246: 000000003bc136c0 8 OBJECT GLOBAL DEFAULT 4 setup_bufArr + 214: 000000003bc137b8 8 OBJECT GLOBAL DEFAULT 4 reg + 213: 000000003bc137d8 8 OBJECT GLOBAL DEFAULT 4 reg_step + 197: 000000003bc0b750 8 OBJECT GLOBAL DEFAULT 2 time_records + 119: 000000003bc0b9a8 8 OBJECT LOCAL DEFAULT 2 setup_buf + 118: 000000003bc0b9a0 8 OBJECT LOCAL DEFAULT 2 rsp_buf + 115: 000000003bc0b980 8 OBJECT LOCAL DEFAULT 2 handler + 113: 000000003bc0b920 8 OBJECT LOCAL DEFAULT 2 ep0BuffAlloc + 108: 000000003bc0b810 8 OBJECT LOCAL DEFAULT 2 cmdBufAlloc + 107: 000000003bc0b808 8 OBJECT LOCAL DEFAULT 2 cb2_buf + 106: 000000003bc0b800 8 OBJECT LOCAL DEFAULT 2 cb1_buf + 105: 000000003bc0b7f8 8 OBJECT LOCAL DEFAULT 2 cb0_buf + 103: 000000003bc0b7e8 8 OBJECT LOCAL DEFAULT 2 bulkBufAlloc + 89: 000000003bc0b768 8 OBJECT LOCAL DEFAULT 2 acm_buf + 75: 000000003bc13750 8 OBJECT LOCAL DEFAULT 4 fip_buf + 74: 000000003bc13748 8 OBJECT LOCAL DEFAULT 4 epOut + 73: 000000003bc13740 8 OBJECT LOCAL DEFAULT 4 epIn + 72: 000000003bc13738 8 OBJECT LOCAL DEFAULT 4 ep0Req + 71: 000000003bc13730 8 OBJECT LOCAL DEFAULT 4 ep0Buff + 68: 000000003bc13728 8 OBJECT LOCAL DEFAULT 4 cmdBuf + 67: 000000003bc13720 8 OBJECT LOCAL DEFAULT 4 bulkOutReq + 66: 000000003bc13718 8 OBJECT LOCAL DEFAULT 4 bulkInReq + 65: 000000003bc13710 8 OBJECT LOCAL DEFAULT 4 bulkBuf + 45: 000000003bc0aaa0 8 OBJECT LOCAL DEFAULT 1 __func__.0 + 44: 000000003bc13700 8 OBJECT LOCAL DEFAULT 4 comp_alloc_size + 43: 000000003bc136f8 8 OBJECT LOCAL DEFAULT 4 comp_alloc_buf + 121: 000000003bc0aea0 7 OBJECT LOCAL DEFAULT 1 __func__.1 + 104: 000000003bc0b7f0 7 OBJECT LOCAL DEFAULT 2 capabilityExtDesc + 100: 000000003bc0b7d0 7 OBJECT LOCAL DEFAULT 2 acm_hs_out_desc + 99: 000000003bc0b7c8 7 OBJECT LOCAL DEFAULT 2 acm_hs_notify_desc + 98: 000000003bc0b7c0 7 OBJECT LOCAL DEFAULT 2 acm_hs_in_desc + 96: 000000003bc0b7b0 7 OBJECT LOCAL DEFAULT 2 acm_fs_out_desc + 95: 000000003bc0b7a8 7 OBJECT LOCAL DEFAULT 2 acm_fs_notify_desc + 94: 000000003bc0b7a0 7 OBJECT LOCAL DEFAULT 2 acm_fs_in_desc + 360: 000000003bc015f0 6 FUNC GLOBAL DEFAULT 1 LZ4_malloc + 287: 000000003bc0174c 6 FUNC GLOBAL DEFAULT 1 DWC2_UncachedRead32 + 195: 000000003bc0216a 6 FUNC GLOBAL DEFAULT 1 AcmIsr + 123: 000000003bc0aeb8 6 OBJECT LOCAL DEFAULT 1 __func__.5 + 120: 000000003bc0ae98 5 OBJECT LOCAL DEFAULT 1 __func__.0 + 102: 000000003bc0b7e0 5 OBJECT LOCAL DEFAULT 2 bosDesc + 101: 000000003bc0b7d8 5 OBJECT LOCAL DEFAULT 2 acm_union_desc + 97: 000000003bc0b7b8 5 OBJECT LOCAL DEFAULT 2 acm_header_desc + 90: 000000003bc0b770 5 OBJECT LOCAL DEFAULT 2 acm_call_mgmt_descriptor + 388: 000000003bc01752 4 FUNC GLOBAL DEFAULT 1 DWC2_UncachedWrite32 + 373: 000000003bc0ba0c 4 OBJECT GLOBAL DEFAULT 2 ddr_data_rate + 317: 000000003bc137f4 4 OBJECT GLOBAL DEFAULT 4 dev_freq + 271: 000000003bc137f0 4 OBJECT GLOBAL DEFAULT 4 rddata + 258: 000000003bc137fc 4 OBJECT GLOBAL DEFAULT 4 mod_freq + 203: 000000003bc009a2 4 FUNC GLOBAL DEFAULT 1 dec_verify_image + 199: 000000003bc137f8 4 OBJECT GLOBAL DEFAULT 4 freq_in + 196: 000000003bc13800 4 OBJECT GLOBAL DEFAULT 4 tar_freq + 161: 000000003bc0ba04 4 OBJECT LOCAL DEFAULT 2 ep_fifo_size + 160: 000000003bc0ba00 4 OBJECT LOCAL DEFAULT 2 ep0_fifo_size + 116: 000000003bc0b988 4 OBJECT LOCAL DEFAULT 2 languageDesc + 93: 000000003bc0b798 4 OBJECT LOCAL DEFAULT 2 acm_descriptor + 86: 000000003bc137ec 4 OBJECT LOCAL DEFAULT 4 ts + 85: 000000003bc137e8 4 OBJECT LOCAL DEFAULT 4 transfer_size + 77: 000000003bc137e4 4 OBJECT LOCAL DEFAULT 4 fip_tx_size + 76: 000000003bc137e0 4 OBJECT LOCAL DEFAULT 4 fip_tx_offset + 370: 000000003bc0ba08 2 OBJECT GLOBAL DEFAULT 2 cv_usb_vid + 277: 000000003bc00832 2 FUNC GLOBAL DEFAULT 1 switch_rtc_mode_1st_stage + 261: 000000003bc09738 2 FUNC GLOBAL DEFAULT 1 cvx16_en_rec_vol_mode + 256: 000000003bc09c12 2 FUNC GLOBAL DEFAULT 1 cvx16_dram_cap_check + 244: 000000003bc028ce 2 FUNC GLOBAL DEFAULT 1 dwc2_log_write + 210: 000000003bc00292 2 FUNC GLOBAL DEFAULT 1 jump_to_loader_2nd + 206: 000000003bc0161e 2 FUNC GLOBAL DEFAULT 1 LZ4_free + 130: 000000003bc028cc 2 FUNC LOCAL DEFAULT 1 dwc2_fifo_flush + 63: 000000003bc01ff6 2 FUNC LOCAL DEFAULT 1 suspend + 51: 000000003bc01790 2 FUNC LOCAL DEFAULT 1 requestMemFree + 49: 000000003bc01756 2 FUNC LOCAL DEFAULT 1 resume + 41: 000000003bc014c4 2 FUNC LOCAL DEFAULT 1 SzFree + 386: 000000003bc1380c 1 OBJECT GLOBAL DEFAULT 4 ddr_capacity + 379: 000000003bc1380d 1 OBJECT GLOBAL DEFAULT 4 ddr_type + 309: 000000003bc1380e 1 OBJECT GLOBAL DEFAULT 4 ddr_vendor + 250: 000000003bc1380f 1 OBJECT GLOBAL DEFAULT 4 pkg + 220: 000000003bc13805 1 OBJECT GLOBAL DEFAULT 4 acm_configValue + 81: 000000003bc1380b 1 OBJECT LOCAL DEFAULT 4 mem_alloc_cnt + 80: 000000003bc1380a 1 OBJECT LOCAL DEFAULT 4 is_serial_patched.3 + 79: 000000003bc13809 1 OBJECT LOCAL DEFAULT 4 flagReboot + 78: 000000003bc13808 1 OBJECT LOCAL DEFAULT 4 flagEnterDL + 70: 000000003bc13807 1 OBJECT LOCAL DEFAULT 4 configValue + 69: 000000003bc13806 1 OBJECT LOCAL DEFAULT 4 configBreak + 64: 000000003bc13804 1 OBJECT LOCAL DEFAULT 4 ack_idx.6 + 369: 000000003bc0ba40 0 NOTYPE GLOBAL DEFAULT 3 __STACKS_START__ + 362: 00000000044000c0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_get_number_of_r + 353: 000000003bc00000 0 NOTYPE GLOBAL DEFAULT 1 __RO_START__ + 351: 000000003bc0dc00 0 NOTYPE GLOBAL DEFAULT 4 __BSS_START__ + 349: 0000000004400060 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_load_image + 347: 000000003bc0b74c 0 NOTYPE GLOBAL DEFAULT 1 __RO_END__ + 323: 0000000004400040 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_set_boot_src + 320: 000000003bc13810 0 NOTYPE GLOBAL DEFAULT 4 __BSS_END__ + 312: 000000003bc00000 0 NOTYPE GLOBAL DEFAULT 1 bl2_entrypoint + 310: 00000000044000a0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_image_crc + 300: 000000003bc0ba10 0 NOTYPE GLOBAL DEFAULT 2 __DATA_END__ + 292: 000000003bc13810 0 NOTYPE GLOBAL DEFAULT 4 __BL2_END__ + 266: 0000000000005c10 0 NOTYPE GLOBAL DEFAULT ABS __BSS_SIZE__ + 260: 00000000044000e0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_verify_rsa + 251: 000000003bc0da40 0 NOTYPE GLOBAL DEFAULT 3 __STACKS_END__ + 227: 000000003bc0b750 0 NOTYPE GLOBAL DEFAULT 2 __DATA_START__ + 208: 0000000004400020 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_get_boot_src + 202: 0000000004400080 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_flash_init + 198: 0000000004400100 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_cryptodma_aes_d + 191: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 190: 0000000000000000 0 FILE LOCAL DEFAULT ABS phy_init.c + 189: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddrc_init.c + 188: 0000000000000000 0 FILE LOCAL DEFAULT ABS cvx16_dram_cap_check.c + 187: 0000000000000000 0 FILE LOCAL DEFAULT ABS cvx16_pinmux.c + 186: 0000000000000000 0 FILE LOCAL DEFAULT ABS phy_pll_init.c + 185: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_sys.c + 184: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_sys_bring_up.c + 183: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_pkg_info.c + 182: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr.c + 178: 0000000000000000 0 FILE LOCAL DEFAULT ABS xxhash.c + 170: 0000000000000000 0 FILE LOCAL DEFAULT ABS lz4_all.c + 165: 0000000000000000 0 FILE LOCAL DEFAULT ABS LzmaDec.c + 163: 0000000000000000 0 FILE LOCAL DEFAULT ABS crc16.c + 162: 0000000000000000 0 FILE LOCAL DEFAULT ABS cv_usb.c + 150: 0000000000000000 0 FILE LOCAL DEFAULT ABS dwc2_udc_otg_xfer_dma.c + 124: 0000000000000000 0 FILE LOCAL DEFAULT ABS dwc2_udc_otg.c + 48: 0000000000000000 0 FILE LOCAL DEFAULT ABS usb_tty.c + 47: 0000000000000000 0 FILE LOCAL DEFAULT ABS cps_cvi.c + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS decompress.c + 36: 0000000000000000 0 FILE LOCAL DEFAULT ABS bl2_main.c + 35: 0000000000000000 0 FILE LOCAL DEFAULT ABS platform_device.c + 34: 0000000000000000 0 FILE LOCAL DEFAULT ABS strlen.c + 33: 0000000000000000 0 FILE LOCAL DEFAULT ABS strcmp.c + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS putchar.c + 31: 0000000000000000 0 FILE LOCAL DEFAULT ABS mem.c + 30: 0000000000000000 0 FILE LOCAL DEFAULT ABS misc.c + 29: 0000000000000000 0 FILE LOCAL DEFAULT ABS security.c + 28: 0000000000000000 0 FILE LOCAL DEFAULT ABS platform.c + 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS tf_printf.c + 25: 0000000000000000 0 FILE LOCAL DEFAULT ABS uart_dw.c + 23: 0000000000000000 0 FILE LOCAL DEFAULT ABS bl2_helper.c + 22: 0000000000000000 0 FILE LOCAL DEFAULT ABS delay_timer.c + 21: 0000000000000000 0 FILE LOCAL DEFAULT ABS cache.c + 20: 0000000000000000 0 FILE LOCAL DEFAULT ABS cpu_helper.c + 19: 000000003bc00144 0 NOTYPE LOCAL DEFAULT 1 die + 18: 000000003bc0012c 0 NOTYPE LOCAL DEFAULT 1 bss_clear + 17: 000000003bc00144 0 NOTYPE LOCAL DEFAULT 1 trap_vector + 16: 000000003bc00020 0 NOTYPE LOCAL DEFAULT 1 bl2_entrypoint_real + 15: 0000000000000000 0 FILE LOCAL DEFAULT ABS /root/.jenkins/workspace/ + 14: 0000000000000000 0 SECTION LOCAL DEFAULT 14 + 13: 0000000000000000 0 SECTION LOCAL DEFAULT 13 + 12: 0000000000000000 0 SECTION LOCAL DEFAULT 12 + 11: 0000000000000000 0 SECTION LOCAL DEFAULT 11 + 10: 0000000000000000 0 SECTION LOCAL DEFAULT 10 + 9: 0000000000000000 0 SECTION LOCAL DEFAULT 9 + 8: 0000000000000000 0 SECTION LOCAL DEFAULT 8 + 7: 0000000000000000 0 SECTION LOCAL DEFAULT 7 + 6: 0000000000000000 0 SECTION LOCAL DEFAULT 6 + 5: 0000000000000000 0 SECTION LOCAL DEFAULT 5 + 4: 000000003bc0dc00 0 SECTION LOCAL DEFAULT 4 + 3: 000000003bc0ba10 0 SECTION LOCAL DEFAULT 3 + 2: 000000003bc0b74c 0 SECTION LOCAL DEFAULT 2 + 1: 000000003bc00000 0 SECTION LOCAL DEFAULT 1 + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND +Symbol table '.symtab' contains 399 entries: + Num: Value Size Type Bind Vis Ndx Name + diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_entrypoint.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_entrypoint.o new file mode 100644 index 000000000..5b15c11ca Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_entrypoint.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o new file mode 100644 index 000000000..e22c8a887 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_helper.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o new file mode 100644 index 000000000..eae2707d7 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/bl2_main.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o new file mode 100644 index 000000000..eb90d7e1e Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/build_message.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o new file mode 100644 index 000000000..78393d3be Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cache.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o new file mode 100644 index 000000000..5b519211c Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cps_cvi.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o new file mode 100644 index 000000000..0584ae7a5 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cpu_helper.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o new file mode 100644 index 000000000..797b5fecb Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/crc16.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o new file mode 100644 index 000000000..4ee51e381 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cv_usb.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o new file mode 100644 index 000000000..42a331caf Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_dram_cap_check.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o new file mode 100644 index 000000000..fdc6a703f Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/cvx16_pinmux.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o new file mode 100644 index 000000000..a9b115577 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o new file mode 100644 index 000000000..33b3cac76 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_patch_regs.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o new file mode 100644 index 000000000..50a8b3faa Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_pkg_info.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o new file mode 100644 index 000000000..5616b5c09 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o new file mode 100644 index 000000000..c7ffe25b7 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddr_sys_bring_up.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o new file mode 100644 index 000000000..69f66962e Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/ddrc_init.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o new file mode 100644 index 000000000..cd20e5e0b Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/decompress.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o new file mode 100644 index 000000000..615964b3d Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/delay_timer.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o new file mode 100644 index 000000000..6748f433a Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o new file mode 100644 index 000000000..31f149fcf Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/dwc2_udc_otg_xfer_dma.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o new file mode 100644 index 000000000..ed39f4816 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/lz4_all.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o new file mode 100644 index 000000000..7cd1a72df Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/mem.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o new file mode 100644 index 000000000..a0c465275 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o new file mode 100644 index 000000000..9db7c9ec8 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/misc_helpers.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o new file mode 100644 index 000000000..5a319c15c Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_init.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o new file mode 100644 index 000000000..82fc3958c Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/phy_pll_init.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o new file mode 100644 index 000000000..79956b758 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o new file mode 100644 index 000000000..846127c4d Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/platform_device.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o new file mode 100644 index 000000000..411867b5a Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/putchar.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o new file mode 100644 index 000000000..dd290ba0c Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/security.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o new file mode 100644 index 000000000..af3025b4f Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strchr.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o new file mode 100644 index 000000000..b4194d6e8 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strcmp.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o new file mode 100644 index 000000000..8a1a585be Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strlen.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o new file mode 100644 index 000000000..9730729f0 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strncmp.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o new file mode 100644 index 000000000..902d8c7d8 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/strnlen.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o new file mode 100644 index 000000000..c555aa631 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/tf_printf.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o new file mode 100644 index 000000000..de4fd3ad4 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/uart_dw.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o new file mode 100644 index 000000000..e73b4828d Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/usb_tty.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o new file mode 100644 index 000000000..6d02f57a0 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/bl2/xxhash.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros.bin b/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros.bin new file mode 100755 index 000000000..c9902e4a9 --- /dev/null +++ b/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros.bin @@ -0,0 +1 @@ +ï¾­Þ \ No newline at end of file diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros.env b/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros.env new file mode 100644 index 000000000..a57837ce1 --- /dev/null +++ b/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros.env @@ -0,0 +1,2 @@ +MONITOR_RUNADDR=0x0000000080000000 +BLCP_2ND_RUNADDR=0x0000000087e00000 diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/blmacros.dis b/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/blmacros.dis new file mode 100644 index 000000000..a67406cfd --- /dev/null +++ b/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/blmacros.dis @@ -0,0 +1,24 @@ + +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/blmacros.elf: file format elf64-littleriscv +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/blmacros.elf +architecture: riscv:rv64, flags 0x00000112: +EXEC_P, HAS_SYMS, D_PAGED +start address 0x0000000000000000 + +Program Header: + LOAD off 0x0000000000001000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**12 + filesz 0x0000000000000004 memsz 0x0000000000000004 flags r-- + STACK off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**4 + filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw- + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000004 0000000000000000 0000000000000000 00001000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA +SYMBOL TABLE: +0000000000000000 l d .text 0000000000000000 .text +0000000087e00000 g *ABS* 0000000000000000 DEF_BLCP_2ND_RUNADDR +0000000080000000 g *ABS* 0000000000000000 DEF_MONITOR_RUNADDR +0000000080000000 g *ABS* 0000000000000000 DEF_DRAM_BASE + + diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/blmacros.elf b/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/blmacros.elf new file mode 100755 index 000000000..158106cd9 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/blmacros.elf differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/blmacros.ld b/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/blmacros.ld new file mode 100644 index 000000000..c5eb9698a --- /dev/null +++ b/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/blmacros.ld @@ -0,0 +1,10 @@ +SECTIONS +{ + .text : { + LONG(0xDEADBEEF); + *(*) + } + DEF_DRAM_BASE = 0x80000000; + DEF_MONITOR_RUNADDR = 0x80000000; + DEF_BLCP_2ND_RUNADDR = 0x87e00000; +} diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/blmacros.map b/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/blmacros.map new file mode 100644 index 000000000..dec2f3bac --- /dev/null +++ b/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/blmacros.map @@ -0,0 +1,39 @@ + +Discarded input sections + + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/build_message.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/build_message.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/build_message.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/build_message.o + .rodata.build_message + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/build_message.o + .rodata.version_string + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/build_message.o + .debug_info 0x0000000000000000 0x89 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/build_message.o + .debug_abbrev 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/build_message.o + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/build_message.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/build_message.o + .debug_macro 0x0000000000000000 0x86e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/build_message.o + .debug_line 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/build_message.o + .debug_str 0x0000000000000000 0x29a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/build_message.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/build_message.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/build_message.o + +Memory Configuration + +Name Origin Length Attributes +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + +.text 0x0000000000000000 0x4 + 0x0000000000000000 0x4 LONG 0xdeadbeef + *(*) + 0x0000000080000000 DEF_DRAM_BASE = 0x80000000 + 0x0000000080000000 DEF_MONITOR_RUNADDR = 0x80000000 + 0x0000000087e00000 DEF_BLCP_2ND_RUNADDR = 0x87e00000 +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/build_message.o +OUTPUT(/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/blmacros.elf elf64-littleriscv) diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/blmacros.sym b/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/blmacros.sym new file mode 100644 index 000000000..f7a57862c --- /dev/null +++ b/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/blmacros.sym @@ -0,0 +1,8 @@ + 4: 0000000080000000 0 NOTYPE GLOBAL DEFAULT ABS DEF_DRAM_BASE + 3: 0000000080000000 0 NOTYPE GLOBAL DEFAULT ABS DEF_MONITOR_RUNADDR + 2: 0000000087e00000 0 NOTYPE GLOBAL DEFAULT ABS DEF_BLCP_2ND_RUNADDR + 1: 0000000000000000 0 SECTION LOCAL DEFAULT 1 + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND +Symbol table '.symtab' contains 5 entries: + Num: Value Size Type Bind Vis Ndx Name + diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/build_message.o b/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/build_message.o new file mode 100644 index 000000000..eb90d7e1e Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/blmacros/build_message.o differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/chip_conf.bin b/fsbl/build/cv1801c_wevb_0009a_spinor/chip_conf.bin new file mode 100644 index 000000000..d2dabd686 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/chip_conf.bin differ diff --git a/fsbl/build/cv1801c_wevb_0009a_spinor/fip.bin b/fsbl/build/cv1801c_wevb_0009a_spinor/fip.bin new file mode 100644 index 000000000..31ba9f242 Binary files /dev/null and b/fsbl/build/cv1801c_wevb_0009a_spinor/fip.bin differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2.bin b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2.bin new file mode 100755 index 000000000..e5ccf5c8d Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2.bin differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o new file mode 100644 index 000000000..1879f88ab Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o new file mode 100644 index 000000000..4305dec26 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2.dis b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2.dis new file mode 100644 index 000000000..187e869ae --- /dev/null +++ b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2.dis @@ -0,0 +1,14588 @@ + +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2.elf: file format elf64-littleriscv +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2.elf +architecture: riscv:rv64, flags 0x00000112: +EXEC_P, HAS_SYMS, D_PAGED +start address 0x000000003bc00000 + +Program Header: + LOAD off 0x0000000000001000 vaddr 0x000000003bc00000 paddr 0x000000003bc00000 align 2**12 + filesz 0x000000000000b700 memsz 0x0000000000013410 flags rwx + STACK off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**4 + filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw- + +Sections: +Idx Name Size VMA LMA File off Algn + 0 ro 0000b434 000000003bc00000 000000003bc00000 00001000 2**3 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 000002cc 000000003bc0b434 000000003bc0b434 0000c434 2**3 + CONTENTS, ALLOC, LOAD, DATA + 2 stacks 00002000 000000003bc0b700 000000003bc0b700 0000c700 2**0 + ALLOC + 3 .bss 00005c10 000000003bc0d800 000000003bc0d800 0000c700 2**9 + ALLOC + 4 .debug_info 00068732 0000000000000000 0000000000000000 0000c700 2**0 + CONTENTS, READONLY, DEBUGGING + 5 .debug_abbrev 00004de5 0000000000000000 0000000000000000 00074e32 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_aranges 00001e80 0000000000000000 0000000000000000 00079c20 2**4 + CONTENTS, READONLY, DEBUGGING + 7 .debug_macro 00009b13 0000000000000000 0000000000000000 0007baa0 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_line 00075d63 0000000000000000 0000000000000000 000855b3 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_str 0002394c 0000000000000000 0000000000000000 000fb316 2**0 + CONTENTS, READONLY, DEBUGGING + 10 .comment 0000001d 0000000000000000 0000000000000000 0011ec62 2**0 + CONTENTS, READONLY + 11 .debug_ranges 0002f790 0000000000000000 0000000000000000 0011ec7f 2**0 + CONTENTS, READONLY, DEBUGGING + 12 .debug_frame 000047b8 0000000000000000 0000000000000000 0014e410 2**3 + CONTENTS, READONLY, DEBUGGING + 13 .debug_loc 000c12a0 0000000000000000 0000000000000000 00152bc8 2**0 + CONTENTS, READONLY, DEBUGGING +SYMBOL TABLE: +000000003bc00000 l d ro 0000000000000000 ro +000000003bc0b434 l d .data 0000000000000000 .data +000000003bc0b700 l d stacks 0000000000000000 stacks +000000003bc0d800 l d .bss 0000000000000000 .bss +0000000000000000 l d .debug_info 0000000000000000 .debug_info +0000000000000000 l d .debug_abbrev 0000000000000000 .debug_abbrev +0000000000000000 l d .debug_aranges 0000000000000000 .debug_aranges +0000000000000000 l d .debug_macro 0000000000000000 .debug_macro +0000000000000000 l d .debug_line 0000000000000000 .debug_line +0000000000000000 l d .debug_str 0000000000000000 .debug_str +0000000000000000 l d .comment 0000000000000000 .comment +0000000000000000 l d .debug_ranges 0000000000000000 .debug_ranges +0000000000000000 l d .debug_frame 0000000000000000 .debug_frame +0000000000000000 l d .debug_loc 0000000000000000 .debug_loc +0000000000000000 l df *ABS* 0000000000000000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_entrypoint.o +000000003bc00020 l ro 0000000000000000 bl2_entrypoint_real +000000003bc00144 l ro 0000000000000000 trap_vector +000000003bc0012c l ro 0000000000000000 bss_clear +000000003bc00144 l ro 0000000000000000 die +0000000000000000 l df *ABS* 0000000000000000 cpu_helper.c +0000000000000000 l df *ABS* 0000000000000000 cache.c +0000000000000000 l df *ABS* 0000000000000000 delay_timer.c +0000000000000000 l df *ABS* 0000000000000000 bl2_helper.c +000000003bc132c8 l O .bss 0000000000000030 fw_dynamic_info +0000000000000000 l df *ABS* 0000000000000000 uart_dw.c +0000000000000000 l df *ABS* 0000000000000000 tf_printf.c +000000003bc002d6 l F ro 0000000000000082 unsigned_num_print +0000000000000000 l df *ABS* 0000000000000000 platform.c +0000000000000000 l df *ABS* 0000000000000000 security.c +0000000000000000 l df *ABS* 0000000000000000 misc.c +0000000000000000 l df *ABS* 0000000000000000 mem.c +0000000000000000 l df *ABS* 0000000000000000 putchar.c +0000000000000000 l df *ABS* 0000000000000000 strcmp.c +0000000000000000 l df *ABS* 0000000000000000 strlen.c +0000000000000000 l df *ABS* 0000000000000000 platform_device.c +0000000000000000 l df *ABS* 0000000000000000 bl2_main.c +000000003bc00c06 l F ro 000000000000001a read_time_ms +000000003bc0d800 l O .bss 0000000000001000 fip_param2 +000000003bc0e800 l O .bss 0000000000004000 sram_union_buf +0000000000000000 l df *ABS* 0000000000000000 decompress.c +000000003bc014b6 l F ro 0000000000000002 SzFree +000000003bc014b8 l F ro 0000000000000042 SzAlloc +000000003bc132f8 l O .bss 0000000000000008 comp_alloc_buf +000000003bc13300 l O .bss 0000000000000008 comp_alloc_size +000000003bc0a788 l O ro 0000000000000008 __func__.0 +000000003bc0a790 l O ro 0000000000000010 __func__.1 +0000000000000000 l df *ABS* 0000000000000000 cps_cvi.c +0000000000000000 l df *ABS* 0000000000000000 usb_tty.c +000000003bc01748 l F ro 0000000000000002 resume +000000003bc0174a l F ro 0000000000000038 requestMemAlloc +000000003bc01782 l F ro 0000000000000002 requestMemFree +000000003bc01784 l F ro 000000000000001c acm_complete_set_line_coding +000000003bc017a0 l F ro 0000000000000014 reset +000000003bc017b4 l F ro 000000000000002e disconnect +000000003bc017e2 l F ro 0000000000000026 unbind +000000003bc01808 l F ro 0000000000000042 bind +000000003bc0184a l F ro 0000000000000052 get_unicode_string +000000003bc0189c l F ro 0000000000000234 bulkOutCmpl +000000003bc01b56 l F ro 0000000000000050 bulkInCmpl +000000003bc01ad0 l F ro 000000000000005c getDescAcm +000000003bc01b2c l F ro 000000000000002a reqComplete +000000003bc01ba6 l F ro 0000000000000442 setup +000000003bc01fe8 l F ro 0000000000000002 suspend +000000003bc13404 l O .bss 0000000000000001 ack_idx.6 +000000003bc13310 l O .bss 0000000000000008 bulkBuf +000000003bc13318 l O .bss 0000000000000008 bulkInReq +000000003bc13320 l O .bss 0000000000000008 bulkOutReq +000000003bc13328 l O .bss 0000000000000008 cmdBuf +000000003bc13406 l O .bss 0000000000000001 configBreak +000000003bc13407 l O .bss 0000000000000001 configValue +000000003bc13330 l O .bss 0000000000000008 ep0Buff +000000003bc13338 l O .bss 0000000000000008 ep0Req +000000003bc13340 l O .bss 0000000000000008 epIn +000000003bc13348 l O .bss 0000000000000008 epOut +000000003bc13350 l O .bss 0000000000000008 fip_buf +000000003bc133e0 l O .bss 0000000000000004 fip_tx_offset +000000003bc133e4 l O .bss 0000000000000004 fip_tx_size +000000003bc13408 l O .bss 0000000000000001 flagEnterDL +000000003bc13409 l O .bss 0000000000000001 flagReboot +000000003bc1340a l O .bss 0000000000000001 is_serial_patched.3 +000000003bc1340b l O .bss 0000000000000001 mem_alloc_cnt +000000003bc13358 l O .bss 000000000000001c productDesc +000000003bc13378 l O .bss 0000000000000010 serial.2 +000000003bc13388 l O .bss 000000000000001c serialDesc +000000003bc133e8 l O .bss 0000000000000004 transfer_size +000000003bc133ec l O .bss 0000000000000004 ts +000000003bc133a8 l O .bss 0000000000000010 vendorDesc +000000003bc0b448 l O .data 0000000000000009 ConfDesc +000000003bc0b458 l O .data 0000000000000008 acm_buf +000000003bc0b460 l O .data 0000000000000005 acm_call_mgmt_descriptor +000000003bc0b468 l O .data 0000000000000009 acm_control_interface_desc +000000003bc0b478 l O .data 0000000000000009 acm_data_interface_desc +000000003bc0b488 l O .data 0000000000000004 acm_descriptor +000000003bc0b490 l O .data 0000000000000007 acm_fs_in_desc +000000003bc0b498 l O .data 0000000000000007 acm_fs_notify_desc +000000003bc0b4a0 l O .data 0000000000000007 acm_fs_out_desc +000000003bc0b4a8 l O .data 0000000000000005 acm_header_desc +000000003bc0b4b0 l O .data 0000000000000007 acm_hs_in_desc +000000003bc0b4b8 l O .data 0000000000000007 acm_hs_notify_desc +000000003bc0b4c0 l O .data 0000000000000007 acm_hs_out_desc +000000003bc0b4c8 l O .data 0000000000000005 acm_union_desc +000000003bc0b4d0 l O .data 0000000000000005 bosDesc +000000003bc0b4d8 l O .data 0000000000000008 bulkBufAlloc +000000003bc0b4e0 l O .data 0000000000000007 capabilityExtDesc +000000003bc0b4e8 l O .data 0000000000000008 cb0_buf +000000003bc0b4f0 l O .data 0000000000000008 cb1_buf +000000003bc0b4f8 l O .data 0000000000000008 cb2_buf +000000003bc0b500 l O .data 0000000000000008 cmdBufAlloc +000000003bc0b508 l O .data 0000000000000050 descriptorsFs +000000003bc0b558 l O .data 0000000000000050 descriptorsHs +000000003bc0b5a8 l O .data 0000000000000012 devHsDesc +000000003bc0b5c0 l O .data 0000000000000050 drv_obj +000000003bc0b610 l O .data 0000000000000008 ep0BuffAlloc +000000003bc0b618 l O .data 0000000000000058 g_driver +000000003bc0b670 l O .data 0000000000000008 handler +000000003bc0b678 l O .data 0000000000000004 languageDesc +000000003bc0b680 l O .data 000000000000000a qualifierDesc +000000003bc0b690 l O .data 0000000000000008 rsp_buf +000000003bc0b698 l O .data 0000000000000008 setup_buf +000000003bc0ab80 l O ro 0000000000000005 __func__.0 +000000003bc0ab88 l O ro 0000000000000007 __func__.1 +000000003bc0ab90 l O ro 000000000000000b __func__.4 +000000003bc0aba0 l O ro 0000000000000006 __func__.5 +0000000000000000 l df *ABS* 0000000000000000 dwc2_udc_otg.c +000000003bc0274e l F ro 0000000000000016 dwc2_fifo_status +000000003bc02764 l F ro 000000000000003a dwc2_free_request +000000003bc0279e l F ro 0000000000000048 pullup +000000003bc027e6 l F ro 0000000000000038 dwc2_alloc_request +000000003bc0281e l F ro 00000000000000a0 dwc2_ep_enable +000000003bc028be l F ro 0000000000000002 dwc2_fifo_flush +000000003bc02952 l F ro 0000000000000054 dwc2_dequeue +000000003bc02ab4 l F ro 000000000000003c wakeup +000000003bc02b36 l F ro 0000000000000090 dwc2_hsotg_txfifo_flush.constprop.0 +000000003bc02bc6 l F ro 000000000000005e kill_all_requests.isra.0 +000000003bc02c7a l F ro 00000000000000da dwc2_hsotg_init_fifo.constprop.0 +000000003bc02d54 l F ro 00000000000001a6 _dwc2_ep_disable.isra.0 +000000003bc02efa l F ro 0000000000000020 dwc2_ep_disable +000000003bc0b6a0 l O .data 0000000000000050 dwc2_ep_ops +000000003bc0ad90 l O ro 0000000000000012 __func__.0 +000000003bc0ada8 l O ro 0000000000000011 __func__.1 +000000003bc0adc0 l O ro 0000000000000013 __func__.2 +000000003bc0add8 l O ro 0000000000000018 __func__.3 +000000003bc0adf0 l O ro 0000000000000015 __func__.4 +000000003bc0ae08 l O ro 0000000000000009 driver_name +000000003bc0ae18 l O ro 0000000000000048 dwc2_udc_ops +000000003bc0ae60 l O ro 000000000000000c ep0name +000000003bc0ae70 l O ro 000000000000000b ep1name +000000003bc0ae80 l O ro 000000000000000c ep2name +000000003bc0ae90 l O ro 000000000000000a ep3name +0000000000000000 l df *ABS* 0000000000000000 dwc2_udc_otg_xfer_dma.c +000000003bc034ac l F ro 000000000000008e set_max_pktsize +000000003bc0353a l F ro 000000000000005e dwc2_udc_ep_clear_stall +000000003bc03598 l F ro 0000000000000062 dwc2_udc_ep_set_stall +000000003bc035fa l F ro 0000000000000080 dwc2_ep0_complete_out +000000003bc0367a l F ro 000000000000007e dwc2_udc_ep0_zlp +000000003bc036f8 l F ro 0000000000000068 dwc2_udc_ep0_set_stall.isra.0 +000000003bc03760 l F ro 00000000000000aa setdma_rx.isra.0 +000000003bc0380a l F ro 00000000000000fc complete_rx +000000003bc03960 l F ro 000000000000015c setdma_tx +000000003bc0b6f0 l O .data 0000000000000004 ep0_fifo_size +000000003bc0b6f4 l O .data 0000000000000004 ep_fifo_size +0000000000000000 l df *ABS* 0000000000000000 cv_usb.c +0000000000000000 l df *ABS* 0000000000000000 crc16.c +000000003bc0af18 l O ro 0000000000000200 crc16_tab +0000000000000000 l df *ABS* 0000000000000000 LzmaDec.c +000000003bc04738 l F ro 0000000000000072 LzmaDec_WriteRem +000000003bc047aa l F ro 000000000000138a LzmaDec_DecodeReal2 +000000003bc05b34 l F ro 00000000000004e8 LzmaDec_TryDummy +000000003bc062c8 l F ro 0000000000000066 LzmaDec_AllocateProbs2.isra.0 +0000000000000000 l df *ABS* 0000000000000000 lz4_all.c +000000003bc06452 l F ro 0000000000000024 LZ4F_readLE32 +000000003bc06476 l F ro 0000000000000276 LZ4_decompress_safe_withSmallPrefix +000000003bc066ec l F ro 0000000000000110 LZ4F_updateDict +000000003bc0703a l F ro 00000000000001a4 LZ4F_decodeHeader +000000003bc0b158 l O ro 0000000000000020 blockSizes.0 +000000003bc0b178 l O ro 0000000000000020 dec64table +000000003bc0b198 l O ro 0000000000000020 inc32table +0000000000000000 l df *ABS* 0000000000000000 xxhash.c +000000003bc079ea l F ro 000000000000002c XXH32_avalanche +000000003bc07a16 l F ro 0000000000000016 XXH_read32 +000000003bc07a2c l F ro 000000000000033a XXH32_finalize.constprop.0 +0000000000000000 l df *ABS* 0000000000000000 ddr.c +0000000000000000 l df *ABS* 0000000000000000 ddr_pkg_info.c +0000000000000000 l df *ABS* 0000000000000000 ddr_sys_bring_up.c +0000000000000000 l df *ABS* 0000000000000000 ddr_sys.c +0000000000000000 l df *ABS* 0000000000000000 phy_pll_init.c +0000000000000000 l df *ABS* 0000000000000000 cvx16_pinmux.c +0000000000000000 l df *ABS* 0000000000000000 cvx16_dram_cap_check.c +0000000000000000 l df *ABS* 0000000000000000 ddrc_init.c +0000000000000000 l df *ABS* 0000000000000000 phy_init.c +0000000000000000 l df *ABS* 0000000000000000 +000000003bc083f6 g F ro 000000000000000a get_ddr_vendor +000000003bc001b4 g F ro 000000000000000a mdelay +000000003bc08400 g F ro 0000000000000050 axi_mon_start_all +000000003bc0215c g F ro 0000000000000006 AcmIsr +000000003bc13400 g O .bss 0000000000000004 tar_freq +000000003bc0b440 g O .data 0000000000000008 time_records +0000000004400100 g *ABS* 0000000000000000 p_rom_api_cryptodma_aes_decrypt +000000003bc133f8 g O .bss 0000000000000004 freq_in +000000003bc00d30 g F ro 00000000000000ae load_ddr_param +000000003bc0a010 g O ro 0000000000000010 version_string +0000000004400080 g *ABS* 0000000000000000 p_rom_api_flash_init +000000003bc00994 g F ro 0000000000000004 dec_verify_image +000000003bc03c9e g F ro 00000000000000b2 dwc2_udc_ep_activate +000000003bc00aec g F ro 0000000000000052 putchar_l +000000003bc01610 g F ro 0000000000000002 LZ4_free +000000003bc045d6 g F ro 0000000000000018 dwc2_ep0_kick +0000000004400020 g *ABS* 0000000000000000 p_rom_api_get_boot_src +000000003bc03906 g F ro 0000000000000016 dwc2_udc_pre_setup +000000003bc00292 g F ro 0000000000000002 jump_to_loader_2nd +000000003bc0021a g F ro 0000000000000078 jump_to_monitor +000000003bc13280 g O .bss 0000000000000010 rsp_bufArr +000000003bc133d8 g O .bss 0000000000000008 reg_step +000000003bc133b8 g O .bss 0000000000000008 reg +000000003bc03b4c g F ro 0000000000000048 dwc2_set_address +000000003bc00acc g F ro 0000000000000020 memmove +000000003bc08674 g F ro 000000000000004e cvx16_bist_wr_prbs_init +000000003bc12880 g O .bss 0000000000000200 bulkBufAllocArr +000000003bc067fc g F ro 000000000000026e LZ4_decompress_safe +000000003bc13405 g O .bss 0000000000000001 acm_configValue +000000003bc08c5a g F ro 0000000000000044 cvx16_ddr_phy_power_on_seq1 +000000003bc06030 g F ro 000000000000027c LzmaDec_DecodeToDic +000000003bc08722 g F ro 0000000000000046 cvx16_bist_rdglvl_init +000000003bc09ff0 g O ro 000000000000001a build_message +000000003bc0921e g F ro 0000000000000182 cvx16_wdqlvl_req +000000003bc0b440 g .data 0000000000000000 __DATA_START__ +000000003bc004f2 g F ro 00000000000000c8 __system_reset +000000003bc00834 g F ro 0000000000000044 switch_rtc_mode_2nd_stage +000000003bc01338 g F ro 00000000000000e6 load_rest +000000003bc04706 g F ro 0000000000000032 crc16_ccitt +000000003bc08d72 g F ro 0000000000000028 cvx16_set_dfi_init_complete +000000003bc08d20 g F ro 0000000000000038 cvx16_wait_for_dfi_init_complete +000000003bc03b00 g F ro 000000000000004c dwc2_write_fifo_ep0 +000000003bc12b00 g O .bss 0000000000000080 cb1_bufArr +000000003bc08e4a g F ro 0000000000000002 cvx16_wrlvl_req +000000003bc02af0 g F ro 0000000000000046 dwc2_hsotg_wait_bit_set +000000003bc090ae g F ro 0000000000000170 cvx16_rdlvl_req +000000003bc00a6c g F ro 0000000000000060 memcpy +000000003bc08852 g F ro 00000000000000b0 cvx16_bist_wdqlvl_init +000000003bc028c2 g F ro 000000000000000a dwc2_get_ep0_name +000000003bc02a90 g F ro 0000000000000024 dwc2_hsotg_clear_bit +000000003bc03bbc g F ro 0000000000000040 dwc2_ep0_write +000000003bc028c0 g F ro 0000000000000002 dwc2_log_write +000000003bc02a6e g F ro 0000000000000022 dwc2_hsotg_set_bit +000000003bc132c0 g O .bss 0000000000000008 setup_bufArr +000000003bc099c8 g F ro 000000000000002e ctrl_init_low_patch +000000003bc0601c g F ro 0000000000000014 LzmaDec_Init +000000003bc0100a g F ro 0000000000000126 load_monitor +000000003bc1340f g O .bss 0000000000000001 pkg +000000003bc0d700 g stacks 0000000000000000 __STACKS_END__ +000000003bc08b4c g F ro 0000000000000016 cvx16_clk_div40 +000000003bc005ba g F ro 0000000000000032 panic_handler +000000003bc029a6 g F ro 000000000000002e dwc2_nuke +000000003bc001e2 g F ro 000000000000002a get_random_from_timer +000000003bc0979a g F ro 0000000000000002 cvx16_dram_cap_check +000000003bc08962 g F ro 000000000000006a cvx16_bist_start_check +000000003bc133fc g O .bss 0000000000000004 mod_freq +000000003bc00b6c g F ro 000000000000007c gpio_in_value +00000000044000e0 g *ABS* 0000000000000000 p_rom_api_verify_rsa +000000003bc093a0 g F ro 000000000000001a cvx16_en_rec_vol_mode +000000003bc0020c g F ro 000000000000000e read_count_tick +000000003bc08f78 g F ro 0000000000000070 cvx16_clk_gating_enable +000000003bc016c0 g F ro 000000000000007e decompress +000000003bc086c2 g F ro 0000000000000060 cvx16_bist_wr_sram_init +0000000000005c10 g *ABS* 0000000000000000 __BSS_SIZE__ +000000003bc001be g F ro 0000000000000024 get_timer +000000003bc08ce6 g F ro 000000000000003a cvx16_ddr_phy_power_on_seq3 +000000003bc031a8 g F ro 0000000000000156 usb_gadget_register_driver +000000003bc002a4 g F ro 000000000000001e console_putc +000000003bc133f0 g O .bss 0000000000000004 rddata +000000003bc08b62 g F ro 00000000000000f8 cvx16_chg_pll_freq +000000003bc00294 g F ro 0000000000000010 _uart_putc +000000003bc00156 g F ro 0000000000000024 flush_dcache_range +000000003bc12a80 g O .bss 0000000000000080 cb0_bufArr +000000003bc0068e g F ro 000000000000018e sys_pll_nd +000000003bc00832 g F ro 0000000000000002 switch_rtc_mode_1st_stage +000000003bc00878 g F ro 00000000000000bc set_rtc_en_registers +000000003bc00c60 g F ro 00000000000000d0 load_param2 +000000003bc0720e g F ro 00000000000007dc LZ4F_decompress +000000003bc09460 g F ro 000000000000033a cvx16_pinmux +000000003bc08a72 g F ro 0000000000000068 cvx16_dll_cal +000000003bc02162 g F ro 0000000000000138 acm_app_init +000000003bc022d6 g F ro 0000000000000478 AcmApp +000000003bc08f2e g F ro 000000000000004a cvx16_clk_gating_disable +000000003bc071de g F ro 0000000000000030 LZ4F_createDecompressionContext +000000003bc0173e g F ro 0000000000000006 DWC2_UncachedRead32 +000000003bc022a6 g F ro 0000000000000030 get_usb_polling_timeout_value +000000003bc03b94 g F ro 0000000000000028 dwc2_ep0_read +000000003bc12e00 g O .bss 0000000000000080 ep0BuffAllocArr +000000003bc03460 g F ro 000000000000004c usb_gadget_handle_interrupts +000000003bc13410 g .bss 0000000000000000 __BL2_END__ +000000003bc08c9e g F ro 0000000000000048 cvx16_ddr_phy_power_on_seq2 +000000003bc08d9a g F ro 000000000000002c cvx16_INT_ISR_08 +000000003bc06cd4 g F ro 0000000000000316 LZ4_decompress_safe_forceExtDict +000000003bc01fea g F ro 00000000000000a2 convert_buf_addr +000000003bc06378 g F ro 0000000000000030 LzmaDec_AllocateProbs +000000003bc08e92 g F ro 000000000000009c cvx16_pll_init +000000003bc0141e g F ro 0000000000000098 bl2_main +000000003bc0b700 g .data 0000000000000000 __DATA_END__ +000000003bc062ac g F ro 000000000000001c LzmaDec_FreeProbs +000000003bc014fa g F ro 00000000000000e8 decompress_lzma +000000003bc0017a g F ro 0000000000000010 trig_simulation_timer +000000003bc08902 g F ro 0000000000000060 cvx16_bist_wdmlvl_init +000000003bc0018a g F ro 000000000000002a udelay +000000003bc08d58 g F ro 000000000000001a cvx16_polling_dfi_init_start +000000003bc02912 g F ro 0000000000000040 dwc2_done +000000003bc08768 g F ro 00000000000000ea cvx16_bist_rdlvl_init +000000003bc1340e g O .bss 0000000000000001 ddr_vendor +00000000044000a0 g *ABS* 0000000000000000 p_rom_api_image_crc +000000003bc00c20 g F ro 0000000000000040 load_image_by_usb +000000003bc00000 g ro 0000000000000000 bl2_entrypoint +000000003bc01130 g F ro 0000000000000208 load_loader_2nd +000000003bc02c24 g F ro 0000000000000056 dwc2_disconnect +000000003bc03310 g F ro 0000000000000150 dwc2_udc_probe +000000003bc00934 g F ro 0000000000000060 init_comm_info +000000003bc133f4 g O .bss 0000000000000004 dev_freq +000000003bc045ee g F ro 00000000000000d8 dwc2_queue +000000003bc00680 g F ro 000000000000000e sys_switch_all_to_pll +000000003bc13410 g .bss 0000000000000000 __BSS_END__ +000000003bc081c8 g F ro 000000000000022e read_ddr_pkg_info +000000003bc12800 g O .bss 0000000000000080 acm_bufArr +0000000004400040 g *ABS* 0000000000000000 p_rom_api_set_boot_src +000000003bc0632e g F ro 000000000000004a LzmaProps_Decode +000000003bc08e4c g F ro 0000000000000020 cvx16_setting_check +000000003bc00ea4 g F ro 0000000000000166 load_blcp_2nd +000000003bc133d0 g O .bss 0000000000000008 reg_span +000000003bc08ada g F ro 000000000000005c cvx16_clk_normal +000000003bc0229a g F ro 000000000000000c usb_vbus_det +000000003bc00a12 g F ro 000000000000005a memset +000000003bc03c3c g F ro 0000000000000062 dwc2_udc_set_halt +000000003bc07f82 g F ro 00000000000001d2 XXH32_update +000000003bc0a170 g O ro 0000000000000025 hex2ascii_data +000000003bc099f6 g F ro 000000000000021c ctrl_init_update_by_dram_size +000000003bc03d50 g F ro 0000000000000346 dwc2_handle_ep0 +000000003bc00b3e g F ro 000000000000001c strcmp +000000003bc07f2c g F ro 0000000000000056 XXH32_reset +000000003bc07d66 g F ro 00000000000001c6 XXH32 +000000003bc089cc g F ro 00000000000000a6 cvx16_rdvld_train +000000003bc0979c g F ro 00000000000001fe ddrc_init +000000003bc06a6a g F ro 000000000000026a LZ4_decompress_safe_withPrefix64k +000000003bc00358 g F ro 000000000000019a tf_printf +000000003bc029d4 g F ro 000000000000009a usb_gadget_unregister_driver +000000003bc015e8 g F ro 0000000000000028 LZ4_calloc +000000003bc002c2 g F ro 0000000000000014 console_flush +000000003bc0208c g F ro 00000000000000d0 print_buf_addr +000000003bc0b434 g ro 0000000000000000 __RO_END__ +000000003bc12b80 g O .bss 0000000000000080 cb2_bufArr +0000000004400060 g *ABS* 0000000000000000 p_rom_api_load_image +000000003bc07010 g F ro 000000000000000c LZ4F_isError +000000003bc0d800 g .bss 0000000000000000 __BSS_START__ +000000003bc03bfc g F ro 0000000000000040 dwc2_udc_set_nak +000000003bc00000 g ro 0000000000000000 __RO_START__ +000000003bc08fe8 g F ro 00000000000000c6 cvx16_rdglvl_req +000000003bc032fe g F ro 0000000000000012 dwc2_phy_to_log_ep +000000003bc00998 g F ro 000000000000007a ntostr +000000003bc046c6 g F ro 0000000000000040 usb_polling +000000003bc08dc6 g F ro 000000000000001c cvx16_polling_synp_normal_mode +000000003bc06fea g F ro 0000000000000026 LZ4_decompress_safe_usingDict +000000003bc015e2 g F ro 0000000000000006 LZ4_malloc +000000003bc093ba g F ro 0000000000000022 ctrl_init_detect_dram_size +00000000044000c0 g *ABS* 0000000000000000 p_rom_api_get_number_of_retries +000000003bc0014c g F ro 000000000000000a sync_cache +000000003bc00636 g F ro 000000000000004a setup_dl_flag +000000003bc005ec g F ro 000000000000004a reset_c906l +000000003bc133c8 g O .bss 0000000000000008 reg_set +000000003bc063a8 g F ro 00000000000000aa LzmaDecode +000000003bc00be8 g F ro 000000000000001e usb_id_det +000000003bc0b700 g stacks 0000000000000000 __STACKS_START__ +000000003bc0b6f8 g O .data 0000000000000002 cv_usb_vid +000000003bc0081c g F ro 0000000000000016 sys_pll_init +000000003bc03abc g F ro 0000000000000044 dwc2_ep_fifo_read +000000003bc0b6fc g O .data 0000000000000004 ddr_data_rate +000000003bc12e80 g O .bss 0000000000000400 handlerArr +000000003bc08de2 g F ro 0000000000000068 cvx16_dfi_ca_park_prbs +000000003bc04096 g F ro 0000000000000540 dwc2_udc_irq +000000003bc12c00 g O .bss 0000000000000200 cmdBufAllocArr +000000003bc00b5a g F ro 0000000000000012 strlen +000000003bc1340d g O .bss 0000000000000001 ddr_type +000000003bc08450 g F ro 0000000000000224 ddr_sys_bring_up +000000003bc08154 g F ro 0000000000000040 XXH32_digest +000000003bc08194 g F ro 0000000000000034 ddr_init +000000003bc0391c g F ro 0000000000000044 dwc2_ep_fifo_write +000000003bc01612 g F ro 00000000000000ae decompress_lz4 +000000003bc0701c g F ro 000000000000001e LZ4F_getBlockSize +000000003bc1340c g O .bss 0000000000000001 ddr_capacity +000000003bc13308 g O .bss 0000000000000008 acm +000000003bc01744 g F ro 0000000000000004 DWC2_UncachedWrite32 +000000003bc133c0 g O .bss 0000000000000008 the_controller +000000003bc08e6c g F ro 0000000000000026 cvx16_set_dfi_init_start +000000003bc0999a g F ro 000000000000002e ctrl_init_high_patch +000000003bc00dde g F ro 00000000000000c6 load_ddr +000000003bc028cc g F ro 0000000000000046 udc_reinit +000000003bc08b36 g F ro 0000000000000016 cvx16_clk_div2 +000000003bc09c12 g F ro 00000000000003da phy_init +000000003bc093dc g F ro 0000000000000084 pll_init +000000003bc02f1a g F ro 000000000000028e dwc2_reconfig_usbd + + + +Disassembly of section ro: + +000000003bc00000 <__RO_START__>: + 3bc00000: 0200006f j 3bc00020 + ... + +000000003bc00020 : + 3bc00020: 05900e1b addiw t3,zero,89 + 3bc00024: 019e1e13 slli t3,t3,0x19 + 3bc00028: 03000eb7 lui t4,0x3000 + 3bc0002c: 084e8e9b addiw t4,t4,132 + 3bc00030: 01cea023 sw t3,0(t4) # 3000000 <__BSS_SIZE__+0x2ffa3f0> + 3bc00034: 00000093 li ra,0 + 3bc00038: 00000113 li sp,0 + 3bc0003c: 00000193 li gp,0 + 3bc00040: 00000213 li tp,0 + 3bc00044: 00000293 li t0,0 + 3bc00048: 00000313 li t1,0 + 3bc0004c: 00000393 li t2,0 + 3bc00050: 00000413 li s0,0 + 3bc00054: 00000493 li s1,0 + 3bc00058: 00000513 li a0,0 + 3bc0005c: 00000593 li a1,0 + 3bc00060: 00000613 li a2,0 + 3bc00064: 00000693 li a3,0 + 3bc00068: 00000713 li a4,0 + 3bc0006c: 00000793 li a5,0 + 3bc00070: 00000813 li a6,0 + 3bc00074: 00000893 li a7,0 + 3bc00078: 00000913 li s2,0 + 3bc0007c: 00000993 li s3,0 + 3bc00080: 00000a13 li s4,0 + 3bc00084: 00000a93 li s5,0 + 3bc00088: 00000b13 li s6,0 + 3bc0008c: 00000b93 li s7,0 + 3bc00090: 00000c13 li s8,0 + 3bc00094: 00000c93 li s9,0 + 3bc00098: 00000d13 li s10,0 + 3bc0009c: 00000d93 li s11,0 + 3bc000a0: 00000e13 li t3,0 + 3bc000a4: 00000e93 li t4,0 + 3bc000a8: 00000f13 li t5,0 + 3bc000ac: 00000f93 li t6,0 + 3bc000b0: 34001073 csrw mscratch,zero + 3bc000b4: 00000297 auipc t0,0x0 + 3bc000b8: 09028293 addi t0,t0,144 # 3bc00144 + 3bc000bc: 30529073 csrw mtvec,t0 + 3bc000c0: 000181b7 lui gp,0x18 + 3bc000c4: 0c71819b addiw gp,gp,199 + 3bc000c8: 00f19193 slli gp,gp,0xf + 3bc000cc: 7c019073 csrw mxstatus,gp + 3bc000d0: 702001b7 lui gp,0x70200 + 3bc000d4: ffc1819b addiw gp,gp,-4 + 3bc000d8: 00100213 li tp,1 + 3bc000dc: 0041a023 sw tp,0(gp) # 70200000 <__BL2_END__+0x345ecbf0> + 3bc000e0: 03300193 li gp,51 + 3bc000e4: 7c21b073 csrc mcor,gp + 3bc000e8: 01100193 li gp,17 + 3bc000ec: 7c21a073 csrs mcor,gp + 3bc000f0: 00100193 li gp,1 + 3bc000f4: 7c11a073 csrs mhcr,gp + 3bc000f8: 03300193 li gp,51 + 3bc000fc: 7c21b073 csrc mcor,gp + 3bc00100: 01200193 li gp,18 + 3bc00104: 7c21a073 csrs mcor,gp + 3bc00108: 00200193 li gp,2 + 3bc0010c: 7c11a073 csrs mhcr,gp + 3bc00110: 0000d117 auipc sp,0xd + 3bc00114: 5f010113 addi sp,sp,1520 # 3bc0d700 <__STACKS_END__> + 3bc00118: 0000d697 auipc a3,0xd + 3bc0011c: 6e868693 addi a3,a3,1768 # 3bc0d800 <__BSS_START__> + 3bc00120: 00013717 auipc a4,0x13 + 3bc00124: 2f070713 addi a4,a4,752 # 3bc13410 <__BL2_END__> + 3bc00128: 40d70733 sub a4,a4,a3 + +000000003bc0012c : + 3bc0012c: 0006b023 sd zero,0(a3) + 3bc00130: 00868693 addi a3,a3,8 + 3bc00134: ff870713 addi a4,a4,-8 + 3bc00138: fe071ae3 bnez a4,3bc0012c + 3bc0013c: 2e2010ef jal ra,3bc0141e + 3bc00140: 0040006f j 3bc00144 + +000000003bc00144 : + 3bc00144: 4760006f j 3bc005ba + 3bc00148: ffdff06f j 3bc00144 + +000000003bc0014c : + 3bc0014c: 0100000b icache.iall + 3bc00150: 01a0000b sync.i + 3bc00154: 8082 ret + +000000003bc00156 : + 3bc00156: 87aa mv a5,a0 + 3bc00158: 03f58593 addi a1,a1,63 + 3bc0015c: 95be add a1,a1,a5 + 3bc0015e: fc057513 andi a0,a0,-64 + 3bc00162: fc05f593 andi a1,a1,-64 + 3bc00166: 00b56563 bltu a0,a1,3bc00170 + 3bc0016a: 0190000b sync.s + 3bc0016e: 8082 ret + 3bc00170: 02b5000b dcache.cipa a0 + 3bc00174: 04050513 addi a0,a0,64 + 3bc00178: b7fd j 3bc00166 + +000000003bc0017a : + 3bc0017a: 47e5 li a5,25 + 3bc0017c: 02a787bb mulw a5,a5,a0 + 3bc00180: 03000737 lui a4,0x3000 + 3bc00184: 08f72423 sw a5,136(a4) # 3000088 <__BSS_SIZE__+0x2ffa478> + 3bc00188: 8082 ret + +000000003bc0018a : + 3bc0018a: c0102773 rdtime a4 + 3bc0018e: 47e5 li a5,25 + 3bc00190: 02a786bb mulw a3,a5,a0 + 3bc00194: fff74713 not a4,a4 + 3bc00198: 030007b7 lui a5,0x3000 + 3bc0019c: 2701 sext.w a4,a4 + 3bc0019e: 08d7a423 sw a3,136(a5) # 3000088 <__BSS_SIZE__+0x2ffa478> + 3bc001a2: c01027f3 rdtime a5 + 3bc001a6: fff7c793 not a5,a5 + 3bc001aa: 40f707bb subw a5,a4,a5 + 3bc001ae: fed7eae3 bltu a5,a3,3bc001a2 + 3bc001b2: 8082 ret + +000000003bc001b4 : + 3bc001b4: 3e800793 li a5,1000 + 3bc001b8: 02a7853b mulw a0,a5,a0 + 3bc001bc: b7f9 j 3bc0018a + +000000003bc001be : + 3bc001be: e519 bnez a0,3bc001cc + 3bc001c0: c0102573 rdtime a0 + 3bc001c4: fff54513 not a0,a0 + 3bc001c8: 2501 sext.w a0,a0 + 3bc001ca: 8082 ret + 3bc001cc: c01027f3 rdtime a5 + 3bc001d0: fff7c793 not a5,a5 + 3bc001d4: 9d1d subw a0,a0,a5 + 3bc001d6: 6799 lui a5,0x6 + 3bc001d8: 1a87879b addiw a5,a5,424 + 3bc001dc: 02f5553b divuw a0,a0,a5 + 3bc001e0: 8082 ret + +000000003bc001e2 : + 3bc001e2: e519 bnez a0,3bc001f0 + 3bc001e4: c0102573 rdtime a0 + 3bc001e8: fff54513 not a0,a0 + 3bc001ec: 2501 sext.w a0,a0 + 3bc001ee: 8082 ret + 3bc001f0: c01027f3 rdtime a5 + 3bc001f4: fff7c793 not a5,a5 + 3bc001f8: 9d1d subw a0,a0,a5 + 3bc001fa: 47e5 li a5,25 + 3bc001fc: 02f5553b divuw a0,a0,a5 + 3bc00200: 67e1 lui a5,0x18 + 3bc00202: 6a07879b addiw a5,a5,1696 + 3bc00206: 02f5753b remuw a0,a0,a5 + 3bc0020a: 8082 ret + +000000003bc0020c : + 3bc0020c: c0102573 rdtime a0 + 3bc00210: 47e5 li a5,25 + 3bc00212: 02f55533 divu a0,a0,a5 + 3bc00216: 2501 sext.w a0,a0 + 3bc00218: 8082 ret + +000000003bc0021a : + 3bc0021a: 1101 addi sp,sp,-32 + 3bc0021c: 494257b7 lui a5,0x49425 + 3bc00220: e822 sd s0,16(sp) + 3bc00222: 34f78793 addi a5,a5,847 # 4942534f <__BL2_END__+0xd811f3f> + 3bc00226: 00013417 auipc s0,0x13 + 3bc0022a: 0a240413 addi s0,s0,162 # 3bc132c8 + 3bc0022e: e426 sd s1,8(sp) + 3bc00230: e01c sd a5,0(s0) + 3bc00232: 010014b7 lui s1,0x1001 + 3bc00236: 4785 li a5,1 + 3bc00238: e04a sd s2,0(sp) + 3bc0023a: 00749613 slli a2,s1,0x7 + 3bc0023e: 892a mv s2,a0 + 3bc00240: ec1c sd a5,24(s0) + 3bc00242: 0000a517 auipc a0,0xa + 3bc00246: dde50513 addi a0,a0,-546 # 3bc0a020 + 3bc0024a: 57fd li a5,-1 + 3bc0024c: ec06 sd ra,24(sp) + 3bc0024e: f41c sd a5,40(s0) + 3bc00250: e80c sd a1,16(s0) + 3bc00252: 106000ef jal ra,3bc00358 + 3bc00256: 03000593 li a1,48 + 3bc0025a: 8522 mv a0,s0 + 3bc0025c: efbff0ef jal ra,3bc00156 + 3bc00260: fadff0ef jal ra,3bc0020c + 3bc00264: 3e800793 li a5,1000 + 3bc00268: 3e75051b addiw a0,a0,999 + 3bc0026c: 02f5553b divuw a0,a0,a5 + 3bc00270: 8622 mv a2,s0 + 3bc00272: 0000b797 auipc a5,0xb + 3bc00276: 1ce7b783 ld a5,462(a5) # 3bc0b440 + 3bc0027a: 6442 ld s0,16(sp) + 3bc0027c: 60e2 ld ra,24(sp) + 3bc0027e: 00749593 slli a1,s1,0x7 + 3bc00282: 64a2 ld s1,8(sp) + 3bc00284: 00a79723 sh a0,14(a5) + 3bc00288: 87ca mv a5,s2 + 3bc0028a: 6902 ld s2,0(sp) + 3bc0028c: 4501 li a0,0 + 3bc0028e: 6105 addi sp,sp,32 + 3bc00290: 8782 jr a5 + +000000003bc00292 : + 3bc00292: 8082 ret + +000000003bc00294 <_uart_putc>: + 3bc00294: 04140737 lui a4,0x4140 + 3bc00298: 4b5c lw a5,20(a4) + 3bc0029a: 0207f793 andi a5,a5,32 + 3bc0029e: dfed beqz a5,3bc00298 <_uart_putc+0x4> + 3bc002a0: c308 sw a0,0(a4) + 3bc002a2: 8082 ret + +000000003bc002a4 : + 3bc002a4: 1141 addi sp,sp,-16 + 3bc002a6: e022 sd s0,0(sp) + 3bc002a8: e406 sd ra,8(sp) + 3bc002aa: 47a9 li a5,10 + 3bc002ac: 842a mv s0,a0 + 3bc002ae: 00f51563 bne a0,a5,3bc002b8 + 3bc002b2: 4535 li a0,13 + 3bc002b4: fe1ff0ef jal ra,3bc00294 <_uart_putc> + 3bc002b8: 8522 mv a0,s0 + 3bc002ba: 6402 ld s0,0(sp) + 3bc002bc: 60a2 ld ra,8(sp) + 3bc002be: 0141 addi sp,sp,16 + 3bc002c0: bfd1 j 3bc00294 <_uart_putc> + +000000003bc002c2 : + 3bc002c2: 041406b7 lui a3,0x4140 + 3bc002c6: 06000713 li a4,96 + 3bc002ca: 4adc lw a5,20(a3) + 3bc002cc: 0607f793 andi a5,a5,96 + 3bc002d0: fee79de3 bne a5,a4,3bc002ca + 3bc002d4: 8082 ret + +000000003bc002d6 : + 3bc002d6: 7139 addi sp,sp,-64 + 3bc002d8: f04a sd s2,32(sp) + 3bc002da: 7c05b70b extu a4,a1,31,0 + 3bc002de: fc06 sd ra,56(sp) + 3bc002e0: f822 sd s0,48(sp) + 3bc002e2: f426 sd s1,40(sp) + 3bc002e4: 8932 mv s2,a2 + 3bc002e6: 4801 li a6,0 + 3bc002e8: 45a5 li a1,9 + 3bc002ea: 02e57633 remu a2,a0,a4 + 3bc002ee: 0018041b addiw s0,a6,1 + 3bc002f2: 0ff67793 andi a5,a2,255 + 3bc002f6: 04c5e063 bltu a1,a2,3bc00336 + 3bc002fa: 0307879b addiw a5,a5,48 + 3bc002fe: 0ff7f793 andi a5,a5,255 + 3bc00302: 0030 addi a2,sp,8 + 3bc00304: 0106578b srb a5,a2,a6,0 + 3bc00308: 02e557b3 divu a5,a0,a4 + 3bc0030c: 0805 addi a6,a6,1 + 3bc0030e: 02e57263 bgeu a0,a4,3bc00332 + 3bc00312: 408684bb subw s1,a3,s0 + 3bc00316: 02904363 bgtz s1,3bc0033c + 3bc0031a: 54fd li s1,-1 + 3bc0031c: 147d addi s0,s0,-1 + 3bc0031e: 0004079b sext.w a5,s0 + 3bc00322: 02979463 bne a5,s1,3bc0034a + 3bc00326: 70e2 ld ra,56(sp) + 3bc00328: 7442 ld s0,48(sp) + 3bc0032a: 74a2 ld s1,40(sp) + 3bc0032c: 7902 ld s2,32(sp) + 3bc0032e: 6121 addi sp,sp,64 + 3bc00330: 8082 ret + 3bc00332: 853e mv a0,a5 + 3bc00334: bf5d j 3bc002ea + 3bc00336: 0577879b addiw a5,a5,87 + 3bc0033a: b7d1 j 3bc002fe + 3bc0033c: 85ca mv a1,s2 + 3bc0033e: 03000513 li a0,48 + 3bc00342: 7aa000ef jal ra,3bc00aec + 3bc00346: 34fd addiw s1,s1,-1 + 3bc00348: b7f9 j 3bc00316 + 3bc0034a: 003c addi a5,sp,8 + 3bc0034c: 8087c50b lrbu a0,a5,s0,0 + 3bc00350: 85ca mv a1,s2 + 3bc00352: 79a000ef jal ra,3bc00aec + 3bc00356: b7d9 j 3bc0031c + +000000003bc00358 : + 3bc00358: 7135 addi sp,sp,-160 + 3bc0035a: e8a2 sd s0,80(sp) + 3bc0035c: e4a6 sd s1,72(sp) + 3bc0035e: ec86 sd ra,88(sp) + 3bc00360: e0ca sd s2,64(sp) + 3bc00362: fc4e sd s3,56(sp) + 3bc00364: f852 sd s4,48(sp) + 3bc00366: f456 sd s5,40(sp) + 3bc00368: f05a sd s6,32(sp) + 3bc0036a: f4ae sd a1,104(sp) + 3bc0036c: f8b2 sd a2,112(sp) + 3bc0036e: fcb6 sd a3,120(sp) + 3bc00370: e13a sd a4,128(sp) + 3bc00372: e53e sd a5,136(sp) + 3bc00374: e942 sd a6,144(sp) + 3bc00376: ed46 sd a7,152(sp) + 3bc00378: 842a mv s0,a0 + 3bc0037a: 4489 li s1,2 + 3bc0037c: c11d beqz a0,3bc003a2 + 3bc0037e: 00054703 lbu a4,0(a0) + 3bc00382: 4785 li a5,1 + 3bc00384: 00f71f63 bne a4,a5,3bc003a2 + 3bc00388: 00154783 lbu a5,1(a0) + 3bc0038c: 4711 li a4,4 + 3bc0038e: fd07879b addiw a5,a5,-48 + 3bc00392: 0ff7f693 andi a3,a5,255 + 3bc00396: 00d76663 bltu a4,a3,3bc003a2 + 3bc0039a: 0007849b sext.w s1,a5 + 3bc0039e: 00250413 addi s0,a0,2 + 3bc003a2: 10bc addi a5,sp,104 + 3bc003a4: ec3e sd a5,24(sp) + 3bc003a6: 4a25 li s4,9 + 3bc003a8: 4ad9 li s5,22 + 3bc003aa: 0000a997 auipc s3,0xa + 3bc003ae: ca298993 addi s3,s3,-862 # 3bc0a04c + 3bc003b2: 00044503 lbu a0,0(s0) + 3bc003b6: e919 bnez a0,3bc003cc + 3bc003b8: 60e6 ld ra,88(sp) + 3bc003ba: 6446 ld s0,80(sp) + 3bc003bc: 64a6 ld s1,72(sp) + 3bc003be: 6906 ld s2,64(sp) + 3bc003c0: 79e2 ld s3,56(sp) + 3bc003c2: 7a42 ld s4,48(sp) + 3bc003c4: 7aa2 ld s5,40(sp) + 3bc003c6: 7b02 ld s6,32(sp) + 3bc003c8: 610d addi sp,sp,160 + 3bc003ca: 8082 ret + 3bc003cc: 02500793 li a5,37 + 3bc003d0: 0405 addi s0,s0,1 + 3bc003d2: 10f51c63 bne a0,a5,3bc004ea + 3bc003d6: 4781 li a5,0 + 3bc003d8: 4681 li a3,0 + 3bc003da: 03000613 li a2,48 + 3bc003de: 00044703 lbu a4,0(s0) + 3bc003e2: 00c70c63 beq a4,a2,3bc003fa + 3bc003e6: f9c7071b addiw a4,a4,-100 + 3bc003ea: 0ff77713 andi a4,a4,255 + 3bc003ee: fceae5e3 bltu s5,a4,3bc003b8 + 3bc003f2: 44e9c70b lrw a4,s3,a4,2 + 3bc003f6: 974e add a4,a4,s3 + 3bc003f8: 8702 jr a4 + 3bc003fa: 00144703 lbu a4,1(s0) + 3bc003fe: fd07071b addiw a4,a4,-48 + 3bc00402: 0ff77593 andi a1,a4,255 + 3bc00406: 00ba6463 bltu s4,a1,3bc0040e + 3bc0040a: 0007069b sext.w a3,a4 + 3bc0040e: 0409 addi s0,s0,2 + 3bc00410: b7f9 j 3bc003de + 3bc00412: 6762 ld a4,24(sp) + 3bc00414: 4585 li a1,1 + 3bc00416: 00870613 addi a2,a4,8 # 4140008 <__BSS_SIZE__+0x413a3f8> + 3bc0041a: ec32 sd a2,24(sp) + 3bc0041c: 02f5d563 bge a1,a5,3bc00446 + 3bc00420: 00073903 ld s2,0(a4) + 3bc00424: 00095b63 bgez s2,3bc0043a + 3bc00428: 85a6 mv a1,s1 + 3bc0042a: 02d00513 li a0,45 + 3bc0042e: e436 sd a3,8(sp) + 3bc00430: 6bc000ef jal ra,3bc00aec + 3bc00434: 66a2 ld a3,8(sp) + 3bc00436: 41200933 neg s2,s2 + 3bc0043a: 8626 mv a2,s1 + 3bc0043c: 45a9 li a1,10 + 3bc0043e: 854a mv a0,s2 + 3bc00440: e97ff0ef jal ra,3bc002d6 + 3bc00444: a831 j 3bc00460 + 3bc00446: ffe9 bnez a5,3bc00420 + 3bc00448: 00072903 lw s2,0(a4) + 3bc0044c: bfe1 j 3bc00424 + 3bc0044e: 67e2 ld a5,24(sp) + 3bc00450: 0007b903 ld s2,0(a5) + 3bc00454: 00878713 addi a4,a5,8 + 3bc00458: ec3a sd a4,24(sp) + 3bc0045a: 00094503 lbu a0,0(s2) + 3bc0045e: e119 bnez a0,3bc00464 + 3bc00460: 0405 addi s0,s0,1 + 3bc00462: bf81 j 3bc003b2 + 3bc00464: 85a6 mv a1,s1 + 3bc00466: 0905 addi s2,s2,1 + 3bc00468: 684000ef jal ra,3bc00aec + 3bc0046c: b7fd j 3bc0045a + 3bc0046e: 67e2 ld a5,24(sp) + 3bc00470: 0000a917 auipc s2,0xa + 3bc00474: bd890913 addi s2,s2,-1064 # 3bc0a048 + 3bc00478: 0007bb03 ld s6,0(a5) + 3bc0047c: 00878713 addi a4,a5,8 + 3bc00480: ec3a sd a4,24(sp) + 3bc00482: 000b1c63 bnez s6,3bc0049a + 3bc00486: 8626 mv a2,s1 + 3bc00488: 45c1 li a1,16 + 3bc0048a: 855a mv a0,s6 + 3bc0048c: bf55 j 3bc00440 + 3bc0048e: 85a6 mv a1,s1 + 3bc00490: e436 sd a3,8(sp) + 3bc00492: 65a000ef jal ra,3bc00aec + 3bc00496: 66a2 ld a3,8(sp) + 3bc00498: 0905 addi s2,s2,1 + 3bc0049a: 00094503 lbu a0,0(s2) + 3bc0049e: f965 bnez a0,3bc0048e + 3bc004a0: b7dd j 3bc00486 + 3bc004a2: 6762 ld a4,24(sp) + 3bc004a4: 4585 li a1,1 + 3bc004a6: 00870613 addi a2,a4,8 + 3bc004aa: ec32 sd a2,24(sp) + 3bc004ac: 00f5d663 bge a1,a5,3bc004b8 + 3bc004b0: 6308 ld a0,0(a4) + 3bc004b2: 8626 mv a2,s1 + 3bc004b4: 45c1 li a1,16 + 3bc004b6: b769 j 3bc00440 + 3bc004b8: ffe5 bnez a5,3bc004b0 + 3bc004ba: 00076503 lwu a0,0(a4) + 3bc004be: bfd5 j 3bc004b2 + 3bc004c0: 0405 addi s0,s0,1 + 3bc004c2: 4789 li a5,2 + 3bc004c4: bf29 j 3bc003de + 3bc004c6: 2785 addiw a5,a5,1 + 3bc004c8: 0405 addi s0,s0,1 + 3bc004ca: bf11 j 3bc003de + 3bc004cc: 6762 ld a4,24(sp) + 3bc004ce: 4585 li a1,1 + 3bc004d0: 00870613 addi a2,a4,8 + 3bc004d4: ec32 sd a2,24(sp) + 3bc004d6: 00f5d663 bge a1,a5,3bc004e2 + 3bc004da: 6308 ld a0,0(a4) + 3bc004dc: 8626 mv a2,s1 + 3bc004de: 45a9 li a1,10 + 3bc004e0: b785 j 3bc00440 + 3bc004e2: ffe5 bnez a5,3bc004da + 3bc004e4: 00076503 lwu a0,0(a4) + 3bc004e8: bfd5 j 3bc004dc + 3bc004ea: 85a6 mv a1,s1 + 3bc004ec: 600000ef jal ra,3bc00aec + 3bc004f0: b5c9 j 3bc003b2 + +000000003bc004f2 <__system_reset>: + 3bc004f2: 7179 addi sp,sp,-48 + 3bc004f4: f022 sd s0,32(sp) + 3bc004f6: be00e437 lui s0,0xbe00e + 3bc004fa: f406 sd ra,40(sp) + 3bc004fc: 00340793 addi a5,s0,3 # ffffffffbe00e003 <__BL2_END__+0xffffffff823fabf3> + 3bc00500: ec26 sd s1,24(sp) + 3bc00502: e84a sd s2,16(sp) + 3bc00504: e44e sd s3,8(sp) + 3bc00506: 0e000937 lui s2,0xe000 + 3bc0050a: 862e mv a2,a1 + 3bc0050c: 00f92823 sw a5,16(s2) # e000010 + 3bc00510: 85aa mv a1,a0 + 3bc00512: 0000a517 auipc a0,0xa + 3bc00516: b9650513 addi a0,a0,-1130 # 3bc0a0a8 + 3bc0051a: e3fff0ef jal ra,3bc00358 + 3bc0051e: da5ff0ef jal ra,3bc002c2 + 3bc00522: be0034b7 lui s1,0xbe003 + 3bc00526: 00148793 addi a5,s1,1 # ffffffffbe003001 <__BL2_END__+0xffffffff823efbf1> + 3bc0052a: 030009b7 lui s3,0x3000 + 3bc0052e: 6505 lui a0,0x1 + 3bc00530: 08f9a223 sw a5,132(s3) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc00534: 38850513 addi a0,a0,904 # 1388 <__BSS_SIZE__-0x4888> + 3bc00538: c7dff0ef jal ra,3bc001b4 + 3bc0053c: 050267b7 lui a5,0x5026 + 3bc00540: 4705 li a4,1 + 3bc00542: 0ee7a023 sw a4,224(a5) # 50260e0 + 3bc00546: 0ce7a423 sw a4,200(a5) + 3bc0054a: 0489 addi s1,s1,2 + 3bc0054c: 0899a223 sw s1,132(s3) + 3bc00550: 06400513 li a0,100 + 3bc00554: c37ff0ef jal ra,3bc0018a + 3bc00558: 050257b7 lui a5,0x5025 + 3bc0055c: 672d lui a4,0xb + 3bc0055e: 0a07a623 sw zero,172(a5) # 50250ac + 3bc00562: b1870713 addi a4,a4,-1256 # ab18 <__BSS_SIZE__+0x4f08> + 3bc00566: c3d8 sw a4,4(a5) + 3bc00568: 00400737 lui a4,0x400 + 3bc0056c: 04070713 addi a4,a4,64 # 400040 <__BSS_SIZE__+0x3fa430> + 3bc00570: c798 sw a4,8(a5) + 3bc00572: 030107b7 lui a5,0x3010 + 3bc00576: 06600713 li a4,102 + 3bc0057a: c3d8 sw a4,4(a5) + 3bc0057c: 02000713 li a4,32 + 3bc00580: cfd8 sw a4,28(a5) + 3bc00582: 07600713 li a4,118 + 3bc00586: c7d8 sw a4,12(a5) + 3bc00588: 4745 li a4,17 + 3bc0058a: c398 sw a4,0(a5) + 3bc0058c: 00394783 lbu a5,3(s2) + 3bc00590: 0407f793 andi a5,a5,64 + 3bc00594: c395 beqz a5,3bc005b8 <__system_reset+0xc6> + 3bc00596: 0411 addi s0,s0,4 + 3bc00598: 00892823 sw s0,16(s2) + 3bc0059c: 050266b7 lui a3,0x5026 + 3bc005a0: 470d li a4,3 + 3bc005a2: 0d46a783 lw a5,212(a3) # 50260d4 + 3bc005a6: 2781 sext.w a5,a5 + 3bc005a8: fee79de3 bne a5,a4,3bc005a2 <__system_reset+0xb0> + 3bc005ac: 000807b7 lui a5,0x80 + 3bc005b0: 05025737 lui a4,0x5025 + 3bc005b4: 07a1 addi a5,a5,8 + 3bc005b6: c71c sw a5,8(a4) + 3bc005b8: a001 j 3bc005b8 <__system_reset+0xc6> + +000000003bc005ba : + 3bc005ba: 1141 addi sp,sp,-16 + 3bc005bc: be00e7b7 lui a5,0xbe00e + 3bc005c0: e406 sd ra,8(sp) + 3bc005c2: 0e000737 lui a4,0xe000 + 3bc005c6: 0789 addi a5,a5,2 + 3bc005c8: cb1c sw a5,16(a4) + 3bc005ca: 0000879b sext.w a5,ra + 3bc005ce: 8586 mv a1,ra + 3bc005d0: 0000a517 auipc a0,0xa + 3bc005d4: af050513 addi a0,a0,-1296 # 3bc0a0c0 + 3bc005d8: cb5c sw a5,20(a4) + 3bc005da: d7fff0ef jal ra,3bc00358 + 3bc005de: 55fd li a1,-1 + 3bc005e0: 0000a517 auipc a0,0xa + 3bc005e4: af050513 addi a0,a0,-1296 # 3bc0a0d0 + 3bc005e8: f0bff0ef jal ra,3bc004f2 <__system_reset> + +000000003bc005ec : + 3bc005ec: 1141 addi sp,sp,-16 + 3bc005ee: e022 sd s0,0(sp) + 3bc005f0: 842a mv s0,a0 + 3bc005f2: 0000a517 auipc a0,0xa + 3bc005f6: ae650513 addi a0,a0,-1306 # 3bc0a0d8 + 3bc005fa: e406 sd ra,8(sp) + 3bc005fc: d5dff0ef jal ra,3bc00358 + 3bc00600: 03003737 lui a4,0x3003 + 3bc00604: 535c lw a5,36(a4) + 3bc00606: 6609 lui a2,0x2 + 3bc00608: 60a2 ld ra,8(sp) + 3bc0060a: 2781 sext.w a5,a5 + 3bc0060c: fbf7f793 andi a5,a5,-65 + 3bc00610: d35c sw a5,36(a4) + 3bc00612: 020b07b7 lui a5,0x20b0 + 3bc00616: 43d4 lw a3,4(a5) + 3bc00618: 8ed1 or a3,a3,a2 + 3bc0061a: c3d4 sw a3,4(a5) + 3bc0061c: 0004069b sext.w a3,s0 + 3bc00620: d394 sw a3,32(a5) + 3bc00622: 9401 srai s0,s0,0x20 + 3bc00624: d3c0 sw s0,36(a5) + 3bc00626: 535c lw a5,36(a4) + 3bc00628: 6402 ld s0,0(sp) + 3bc0062a: 2781 sext.w a5,a5 + 3bc0062c: 0407e793 ori a5,a5,64 + 3bc00630: d35c sw a5,36(a4) + 3bc00632: 0141 addi sp,sp,16 + 3bc00634: 8082 ret + +000000003bc00636 : + 3bc00636: 1141 addi sp,sp,-16 + 3bc00638: e406 sd ra,8(sp) + 3bc0063a: c8800097 auipc ra,0xc8800 + 3bc0063e: 9e6080e7 jalr -1562(ra) # 4400020 + 3bc00642: 67b5 lui a5,0xd + 3bc00644: 2501 sext.w a0,a0 + 3bc00646: ea078713 addi a4,a5,-352 # cea0 <__BSS_SIZE__+0x7290> + 3bc0064a: 00e50a63 beq a0,a4,3bc0065e + 3bc0064e: ea378793 addi a5,a5,-349 + 3bc00652: 02f50063 beq a0,a5,3bc00672 + 3bc00656: 0e0007b7 lui a5,0xe000 + 3bc0065a: c3c8 sw a0,4(a5) + 3bc0065c: a801 j 3bc0066c + 3bc0065e: 4d4757b7 lui a5,0x4d475 + 3bc00662: 0e000737 lui a4,0xe000 + 3bc00666: e3278793 addi a5,a5,-462 # 4d474e32 <__BL2_END__+0x11861a22> + 3bc0066a: c35c sw a5,4(a4) + 3bc0066c: 60a2 ld ra,8(sp) + 3bc0066e: 0141 addi sp,sp,16 + 3bc00670: 8082 ret + 3bc00672: 4d4757b7 lui a5,0x4d475 + 3bc00676: 0e000737 lui a4,0xe000 + 3bc0067a: e3178793 addi a5,a5,-463 # 4d474e31 <__BL2_END__+0x11861a21> + 3bc0067e: b7f5 j 3bc0066a + +000000003bc00680 : + 3bc00680: 030027b7 lui a5,0x3002 + 3bc00684: 0207a823 sw zero,48(a5) # 3002030 <__BSS_SIZE__+0x2ffc420> + 3bc00688: 0207aa23 sw zero,52(a5) + 3bc0068c: 8082 ret + +000000003bc0068e : + 3bc0068e: 7139 addi sp,sp,-64 + 3bc00690: 0000a797 auipc a5,0xa + 3bc00694: ab87b783 ld a5,-1352(a5) # 3bc0a148 + 3bc00698: e03e sd a5,0(sp) + 3bc0069a: 0000a797 auipc a5,0xa + 3bc0069e: ab67b783 ld a5,-1354(a5) # 3bc0a150 + 3bc006a2: e43e sd a5,8(sp) + 3bc006a4: 0000a797 auipc a5,0xa + 3bc006a8: ab47b783 ld a5,-1356(a5) # 3bc0a158 + 3bc006ac: e83e sd a5,16(sp) + 3bc006ae: 0000a517 auipc a0,0xa + 3bc006b2: a3250513 addi a0,a0,-1486 # 3bc0a0e0 + 3bc006b6: 0000a797 auipc a5,0xa + 3bc006ba: aaa7b783 ld a5,-1366(a5) # 3bc0a160 + 3bc006be: f426 sd s1,40(sp) + 3bc006c0: ec3e sd a5,24(sp) + 3bc006c2: fc06 sd ra,56(sp) + 3bc006c4: f822 sd s0,48(sp) + 3bc006c6: f04a sd s2,32(sp) + 3bc006c8: c91ff0ef jal ra,3bc00358 + 3bc006cc: 030027b7 lui a5,0x3002 + 3bc006d0: 577d li a4,-1 + 3bc006d2: 5b84 lw s1,48(a5) + 3bc006d4: 03f00693 li a3,63 + 3bc006d8: db98 sw a4,48(a5) + 3bc006da: dbd4 sw a3,52(a5) + 3bc006dc: 054887b7 lui a5,0x5488 + 3bc006e0: 03003737 lui a4,0x3003 + 3bc006e4: 10178793 addi a5,a5,257 # 5488101 + 3bc006e8: 80f72423 sw a5,-2040(a4) # 3002808 <__BSS_SIZE__+0x2ffcbf8> + 3bc006ec: 030037b7 lui a5,0x3003 + 3bc006f0: 84d72023 sw a3,-1984(a4) + 3bc006f4: 2481 sext.w s1,s1 + 3bc006f6: 4601 li a2,0 + 3bc006f8: 85470713 addi a4,a4,-1964 + 3bc006fc: 01010813 addi a6,sp,16 + 3bc00700: 80c78513 addi a0,a5,-2036 # 300280c <__BSS_SIZE__+0x2ffcbfc> + 3bc00704: 45c1 li a1,16 + 3bc00706: 4026468b lrw a3,a2,sp,0 + 3bc0070a: c314 sw a3,0(a4) + 3bc0070c: ffc72683 lw a3,-4(a4) + 3bc00710: 0741 addi a4,a4,16 + 3bc00712: 2681 sext.w a3,a3 + 3bc00714: 9abd andi a3,a3,-17 + 3bc00716: 0016e693 ori a3,a3,1 + 3bc0071a: fed72623 sw a3,-20(a4) + 3bc0071e: 4106468b lrw a3,a2,a6,0 + 3bc00722: 40a6568b srw a3,a2,a0,0 + 3bc00726: 0611 addi a2,a2,4 + 3bc00728: fcb61fe3 bne a2,a1,3bc00706 + 3bc0072c: 80078613 addi a2,a5,-2048 + 3bc00730: 4218 lw a4,0(a2) + 3bc00732: 76bd lui a3,0xfffef + 3bc00734: eee68693 addi a3,a3,-274 # fffffffffffeeeee <__BL2_END__+0xffffffffc43dbade> + 3bc00738: 2701 sext.w a4,a4 + 3bc0073a: 8f75 and a4,a4,a3 + 3bc0073c: c218 sw a4,0(a2) + 3bc0073e: 00448737 lui a4,0x448 + 3bc00742: 90078613 addi a2,a5,-1792 + 3bc00746: 10170713 addi a4,a4,257 # 448101 <__BSS_SIZE__+0x4424f1> + 3bc0074a: c618 sw a4,8(a2) + 3bc0074c: 03002437 lui s0,0x3002 + 3bc00750: 018006b7 lui a3,0x1800 + 3bc00754: 6841 lui a6,0x10 + 3bc00756: d014 sw a3,32(s0) + 3bc00758: 30980593 addi a1,a6,777 # 10309 <__BSS_SIZE__+0xa6f9> + 3bc0075c: 10040693 addi a3,s0,256 # 3002100 <__BSS_SIZE__+0x2ffc4f0> + 3bc00760: da8c sw a1,48(a3) + 3bc00762: 000205b7 lui a1,0x20 + 3bc00766: 20958593 addi a1,a1,521 # 20209 <__BSS_SIZE__+0x1a5f9> + 3bc0076a: de8c sw a1,56(a3) + 3bc0076c: c658 sw a4,12(a2) + 3bc0076e: 00030637 lui a2,0x30 + 3bc00772: 00960313 addi t1,a2,9 # 30009 <__BSS_SIZE__+0x2a3f9> + 3bc00776: 04642423 sw t1,72(s0) + 3bc0077a: 30960713 addi a4,a2,777 + 3bc0077e: 00040537 lui a0,0x40 + 3bc00782: c878 sw a4,84(s0) + 3bc00784: 00080937 lui s2,0x80 + 3bc00788: 00950713 addi a4,a0,9 # 40009 <__BSS_SIZE__+0x3a3f9> + 3bc0078c: d078 sw a4,100(s0) + 3bc0078e: 00990893 addi a7,s2,9 # 80009 <__BSS_SIZE__+0x7a3f9> + 3bc00792: 08040713 addi a4,s0,128 + 3bc00796: 01172423 sw a7,8(a4) + 3bc0079a: 001208b7 lui a7,0x120 + 3bc0079e: 08a5 addi a7,a7,9 + 3bc007a0: 01172c23 sw a7,24(a4) + 3bc007a4: 000f08b7 lui a7,0xf0 + 3bc007a8: 08a5 addi a7,a7,9 + 3bc007aa: 0316a023 sw a7,32(a3) # 1800020 <__BSS_SIZE__+0x17fa410> + 3bc007ae: 0825 addi a6,a6,9 + 3bc007b0: 03072423 sw a6,40(a4) + 3bc007b4: 10960813 addi a6,a2,265 + 3bc007b8: 07072223 sw a6,100(a4) + 3bc007bc: 30950513 addi a0,a0,777 + 3bc007c0: d768 sw a0,108(a4) + 3bc007c2: 00060537 lui a0,0x60 + 3bc007c6: 04672423 sw t1,72(a4) + 3bc007ca: 20950513 addi a0,a0,521 # 60209 <__BSS_SIZE__+0x5a5f9> + 3bc007ce: cb28 sw a0,80(a4) + 3bc007d0: cf28 sw a0,88(a4) + 3bc007d2: ca8c sw a1,16(a3) + 3bc007d4: 20960613 addi a2,a2,521 + 3bc007d8: c2f0 sw a2,68(a3) + 3bc007da: 00050637 lui a2,0x50 + 3bc007de: 0625 addi a2,a2,9 + 3bc007e0: df10 sw a2,56(a4) + 3bc007e2: d6d0 sw a2,44(a3) + 3bc007e4: 88078793 addi a5,a5,-1920 + 3bc007e8: 5398 lw a4,32(a5) + 3bc007ea: 10090913 addi s2,s2,256 + 3bc007ee: 0124f933 and s2,s1,s2 + 3bc007f2: 2701 sext.w a4,a4 + 3bc007f4: 9b6d andi a4,a4,-5 + 3bc007f6: d398 sw a4,32(a5) + 3bc007f8: 57d8 lw a4,44(a5) + 3bc007fa: 0c800513 li a0,200 + 3bc007fe: 2701 sext.w a4,a4 + 3bc00800: 9b65 andi a4,a4,-7 + 3bc00802: d7d8 sw a4,44(a5) + 3bc00804: 987ff0ef jal ra,3bc0018a + 3bc00808: 03242823 sw s2,48(s0) + 3bc0080c: 70e2 ld ra,56(sp) + 3bc0080e: 02042a23 sw zero,52(s0) + 3bc00812: 7442 ld s0,48(sp) + 3bc00814: 74a2 ld s1,40(sp) + 3bc00816: 7902 ld s2,32(sp) + 3bc00818: 6121 addi sp,sp,64 + 3bc0081a: 8082 ret + +000000003bc0081c : + 3bc0081c: 1141 addi sp,sp,-16 + 3bc0081e: e406 sd ra,8(sp) + 3bc00820: e6fff0ef jal ra,3bc0068e + 3bc00824: 60a2 ld ra,8(sp) + 3bc00826: 0000a517 auipc a0,0xa + 3bc0082a: 8ca50513 addi a0,a0,-1846 # 3bc0a0f0 + 3bc0082e: 0141 addi sp,sp,16 + 3bc00830: b625 j 3bc00358 + +000000003bc00832 : + 3bc00832: 8082 ret + +000000003bc00834 : + 3bc00834: 05025737 lui a4,0x5025 + 3bc00838: 475c lw a5,12(a4) + 3bc0083a: 471c lw a5,8(a4) + 3bc0083c: f40006b7 lui a3,0xf4000 + 3bc00840: bff68693 addi a3,a3,-1025 # fffffffff3fffbff <__BL2_END__+0xffffffffb83ec7ef> + 3bc00844: 2781 sext.w a5,a5 + 3bc00846: 8ff5 and a5,a5,a3 + 3bc00848: 0c0006b7 lui a3,0xc000 + 3bc0084c: 8fd5 or a5,a5,a3 + 3bc0084e: c71c sw a5,8(a4) + 3bc00850: 4685 li a3,1 + 3bc00852: 050267b7 lui a5,0x5026 + 3bc00856: 48d7a623 sw a3,1164(a5) # 502648c + 3bc0085a: 4807a623 sw zero,1164(a5) + 3bc0085e: 471c lw a5,8(a4) + 3bc00860: 0c0016b7 lui a3,0xc001 + 3bc00864: 80068693 addi a3,a3,-2048 # c000800 + 3bc00868: 2781 sext.w a5,a5 + 3bc0086a: 8fd5 or a5,a5,a3 + 3bc0086c: c71c sw a5,8(a4) + 3bc0086e: 0000a517 auipc a0,0xa + 3bc00872: 89250513 addi a0,a0,-1902 # 3bc0a100 + 3bc00876: b4cd j 3bc00358 + +000000003bc00878 : + 3bc00878: 1141 addi sp,sp,-16 + 3bc0087a: e022 sd s0,0(sp) + 3bc0087c: 05026437 lui s0,0x5026 + 3bc00880: 0f842583 lw a1,248(s0) # 50260f8 + 3bc00884: 0000a517 auipc a0,0xa + 3bc00888: 89450513 addi a0,a0,-1900 # 3bc0a118 + 3bc0088c: e406 sd ra,8(sp) + 3bc0088e: 2581 sext.w a1,a1 + 3bc00890: ac9ff0ef jal ra,3bc00358 + 3bc00894: 0fc42583 lw a1,252(s0) + 3bc00898: 0000a517 auipc a0,0xa + 3bc0089c: 89850513 addi a0,a0,-1896 # 3bc0a130 + 3bc008a0: 2581 sext.w a1,a1 + 3bc008a2: ab7ff0ef jal ra,3bc00358 + 3bc008a6: 4785 li a5,1 + 3bc008a8: 0cf42023 sw a5,192(s0) + 3bc008ac: 05026737 lui a4,0x5026 + 3bc008b0: 4685 li a3,1 + 3bc008b2: 0c072783 lw a5,192(a4) # 50260c0 + 3bc008b6: 2781 sext.w a5,a5 + 3bc008b8: fed79de3 bne a5,a3,3bc008b2 + 3bc008bc: 0cd72623 sw a3,204(a4) + 3bc008c0: 05026737 lui a4,0x5026 + 3bc008c4: 4685 li a3,1 + 3bc008c6: 0cc72783 lw a5,204(a4) # 50260cc + 3bc008ca: 2781 sext.w a5,a5 + 3bc008cc: fed79de3 bne a5,a3,3bc008c6 + 3bc008d0: 0cd72423 sw a3,200(a4) + 3bc008d4: 05026737 lui a4,0x5026 + 3bc008d8: 4685 li a3,1 + 3bc008da: 0c872783 lw a5,200(a4) # 50260c8 + 3bc008de: 2781 sext.w a5,a5 + 3bc008e0: fed79de3 bne a5,a3,3bc008da + 3bc008e4: 0ed72023 sw a3,224(a4) + 3bc008e8: 050266b7 lui a3,0x5026 + 3bc008ec: 4705 li a4,1 + 3bc008ee: 0e06a783 lw a5,224(a3) # 50260e0 + 3bc008f2: 2781 sext.w a5,a5 + 3bc008f4: fee79de3 bne a5,a4,3bc008ee + 3bc008f8: 05025737 lui a4,0x5025 + 3bc008fc: 08070613 addi a2,a4,128 # 5025080 + 3bc00900: 565c lw a5,44(a2) + 3bc00902: 60a2 ld ra,8(sp) + 3bc00904: 6402 ld s0,0(sp) + 3bc00906: 2781 sext.w a5,a5 + 3bc00908: 0017e793 ori a5,a5,1 + 3bc0090c: d65c sw a5,44(a2) + 3bc0090e: 67ad lui a5,0xb + 3bc00910: b1878793 addi a5,a5,-1256 # ab18 <__BSS_SIZE__+0x4f08> + 3bc00914: c35c sw a5,4(a4) + 3bc00916: 471c lw a5,8(a4) + 3bc00918: 7645 lui a2,0xffff1 + 3bc0091a: 84060613 addi a2,a2,-1984 # ffffffffffff0840 <__BL2_END__+0xffffffffc43dd430> + 3bc0091e: 2781 sext.w a5,a5 + 3bc00920: 8fd1 or a5,a5,a2 + 3bc00922: c71c sw a5,8(a4) + 3bc00924: 0d06a783 lw a5,208(a3) + 3bc00928: 2781 sext.w a5,a5 + 3bc0092a: 9bed andi a5,a5,-5 + 3bc0092c: 0cf6a823 sw a5,208(a3) + 3bc00930: 0141 addi sp,sp,16 + 3bc00932: 8082 ret + +000000003bc00934 : + 3bc00934: 7139 addi sp,sp,-64 + 3bc00936: 0000a797 auipc a5,0xa + 3bc0093a: 8327b783 ld a5,-1998(a5) # 3bc0a168 + 3bc0093e: e43e sd a5,8(sp) + 3bc00940: 000827b7 lui a5,0x82 + 3bc00944: 47378793 addi a5,a5,1139 # 82473 <__BSS_SIZE__+0x7c863> + 3bc00948: 07b2 slli a5,a5,0xc + 3bc0094a: faf1578b sdd a5,a5,(sp),1,4 + 3bc0094e: f03e sd a5,32(sp) + 3bc00950: 6785 lui a5,0x1 + 3bc00952: 10178793 addi a5,a5,257 # 1101 <__BSS_SIZE__-0x4b0f> + 3bc00956: d43e sw a5,40(sp) + 3bc00958: 478d li a5,3 + 3bc0095a: 02f10723 sb a5,46(sp) + 3bc0095e: fc06 sd ra,56(sp) + 3bc00960: 4701 li a4,0 + 3bc00962: 4781 li a5,0 + 3bc00964: 002c addi a1,sp,8 + 3bc00966: 02400693 li a3,36 + 3bc0096a: 80b7460b lrbu a2,a4,a1,0 + 3bc0096e: 0705 addi a4,a4,1 + 3bc00970: 9fb1 addw a5,a5,a2 + 3bc00972: 3c07b78b extu a5,a5,15,0 + 3bc00976: fed71ae3 bne a4,a3,3bc0096a + 3bc0097a: 01900537 lui a0,0x1900 + 3bc0097e: 02800613 li a2,40 + 3bc00982: 40050513 addi a0,a0,1024 # 1900400 <__BSS_SIZE__+0x18fa7f0> + 3bc00986: 02f11623 sh a5,44(sp) + 3bc0098a: 0e2000ef jal ra,3bc00a6c + 3bc0098e: 70e2 ld ra,56(sp) + 3bc00990: 6121 addi sp,sp,64 + 3bc00992: 8082 ret + +000000003bc00994 : + 3bc00994: 4501 li a0,0 + 3bc00996: 8082 ret + +000000003bc00998 : + 3bc00998: 00050023 sb zero,0(a0) + 3bc0099c: 872a mv a4,a0 + 3bc0099e: 00009317 auipc t1,0x9 + 3bc009a2: 7d230313 addi t1,t1,2002 # 3bc0a170 + 3bc009a6: 4e65 li t3,25 + 3bc009a8: 02c5f7b3 remu a5,a1,a2 + 3bc009ac: 80f3478b lrbu a5,t1,a5,0 + 3bc009b0: ce91 beqz a3,3bc009cc + 3bc009b2: f9f7881b addiw a6,a5,-97 + 3bc009b6: 0ff87813 andi a6,a6,255 + 3bc009ba: 02000893 li a7,32 + 3bc009be: 010e7363 bgeu t3,a6,3bc009c4 + 3bc009c2: 4881 li a7,0 + 3bc009c4: 411787bb subw a5,a5,a7 + 3bc009c8: 0ff7f793 andi a5,a5,255 + 3bc009cc: 0817578b sbib a5,(a4),1,0 + 3bc009d0: 02c5d7b3 divu a5,a1,a2 + 3bc009d4: 02c5f463 bgeu a1,a2,3bc009fc + 3bc009d8: 87aa mv a5,a0 + 3bc009da: 86ba mv a3,a4 + 3bc009dc: 02d7e263 bltu a5,a3,3bc00a00 + 3bc009e0: fff50693 addi a3,a0,-1 + 3bc009e4: 4781 li a5,0 + 3bc009e6: 00d76863 bltu a4,a3,3bc009f6 + 3bc009ea: 40a707b3 sub a5,a4,a0 + 3bc009ee: 0785 addi a5,a5,1 + 3bc009f0: 8385 srli a5,a5,0x1 + 3bc009f2: 40f007b3 neg a5,a5 + 3bc009f6: 00f70533 add a0,a4,a5 + 3bc009fa: 8082 ret + 3bc009fc: 85be mv a1,a5 + 3bc009fe: b76d j 3bc009a8 + 3bc00a00: 0006c583 lbu a1,0(a3) + 3bc00a04: 0007c603 lbu a2,0(a5) + 3bc00a08: 1817d58b sbia a1,(a5),1,0 + 3bc00a0c: 19f6d60b sbia a2,(a3),-1,0 + 3bc00a10: b7f1 j 3bc009dc + +000000003bc00a12 : + 3bc00a12: 0ff5f813 andi a6,a1,255 + 3bc00a16: 87aa mv a5,a0 + 3bc00a18: 0077f713 andi a4,a5,7 + 3bc00a1c: c719 beqz a4,3bc00a2a + 3bc00a1e: e211 bnez a2,3bc00a22 + 3bc00a20: 8082 ret + 3bc00a22: 1817d80b sbia a6,(a5),1,0 + 3bc00a26: 167d addi a2,a2,-1 + 3bc00a28: bfc5 j 3bc00a18 + 3bc00a2a: ca05 beqz a2,3bc00a5a + 3bc00a2c: 00009697 auipc a3,0x9 + 3bc00a30: 76c6b683 ld a3,1900(a3) # 3bc0a198 + 3bc00a34: 0ff5f593 andi a1,a1,255 + 3bc00a38: 02d585b3 mul a1,a1,a3 + 3bc00a3c: 489d li a7,7 + 3bc00a3e: 4681 li a3,0 + 3bc00a40: 40d60333 sub t1,a2,a3 + 3bc00a44: 0068ec63 bltu a7,t1,3bc00a5c + 3bc00a48: 00365693 srli a3,a2,0x3 + 3bc00a4c: 55e1 li a1,-8 + 3bc00a4e: 06d7978b addsl a5,a5,a3,3 + 3bc00a52: 20b6960b mula a2,a3,a1 + 3bc00a56: 00e61763 bne a2,a4,3bc00a64 + 3bc00a5a: 8082 ret + 3bc00a5c: 60d7d58b srd a1,a5,a3,0 + 3bc00a60: 06a1 addi a3,a3,8 + 3bc00a62: bff9 j 3bc00a40 + 3bc00a64: 00e7d80b srb a6,a5,a4,0 + 3bc00a68: 0705 addi a4,a4,1 + 3bc00a6a: b7f5 j 3bc00a56 + +000000003bc00a6c : + 3bc00a6c: 00b547b3 xor a5,a0,a1 + 3bc00a70: 8b9d andi a5,a5,7 + 3bc00a72: e7a9 bnez a5,3bc00abc + 3bc00a74: 87aa mv a5,a0 + 3bc00a76: 0077f713 andi a4,a5,7 + 3bc00a7a: cb09 beqz a4,3bc00a8c + 3bc00a7c: e211 bnez a2,3bc00a80 + 3bc00a7e: 8082 ret + 3bc00a80: 9815c70b lbuia a4,(a1),1,0 + 3bc00a84: 167d addi a2,a2,-1 + 3bc00a86: 1817d70b sbia a4,(a5),1,0 + 3bc00a8a: b7f5 j 3bc00a76 + 3bc00a8c: 469d li a3,7 + 3bc00a8e: e619 bnez a2,3bc00a9c + 3bc00a90: 8082 ret + 3bc00a92: 60e5c80b lrd a6,a1,a4,0 + 3bc00a96: 60e7d80b srd a6,a5,a4,0 + 3bc00a9a: 0721 addi a4,a4,8 + 3bc00a9c: 40e60833 sub a6,a2,a4 + 3bc00aa0: ff06e9e3 bltu a3,a6,3bc00a92 + 3bc00aa4: 00365713 srli a4,a2,0x3 + 3bc00aa8: 56e1 li a3,-8 + 3bc00aaa: 20d7160b mula a2,a4,a3 + 3bc00aae: 070e slli a4,a4,0x3 + 3bc00ab0: 97ba add a5,a5,a4 + 3bc00ab2: 95ba add a1,a1,a4 + 3bc00ab4: 4701 li a4,0 + 3bc00ab6: 00e61563 bne a2,a4,3bc00ac0 + 3bc00aba: 8082 ret + 3bc00abc: 87aa mv a5,a0 + 3bc00abe: bfdd j 3bc00ab4 + 3bc00ac0: 80e5c68b lrbu a3,a1,a4,0 + 3bc00ac4: 00e7d68b srb a3,a5,a4,0 + 3bc00ac8: 0705 addi a4,a4,1 + 3bc00aca: b7f5 j 3bc00ab6 + +000000003bc00acc : + 3bc00acc: 40b50733 sub a4,a0,a1 + 3bc00ad0: 87aa mv a5,a0 + 3bc00ad2: 00c76363 bltu a4,a2,3bc00ad8 + 3bc00ad6: bf59 j 3bc00a6c + 3bc00ad8: 95b2 add a1,a1,a2 + 3bc00ada: 9532 add a0,a0,a2 + 3bc00adc: 00f51363 bne a0,a5,3bc00ae2 + 3bc00ae0: 8082 ret + 3bc00ae2: 89f5c70b lbuib a4,(a1),-1,0 + 3bc00ae6: 09f5570b sbib a4,(a0),-1,0 + 3bc00aea: bfcd j 3bc00adc + +000000003bc00aec : + 3bc00aec: 0e0007b7 lui a5,0xe000 + 3bc00af0: 4794 lw a3,8(a5) + 3bc00af2: 1141 addi sp,sp,-16 + 3bc00af4: e022 sd s0,0(sp) + 3bc00af6: e406 sd ra,8(sp) + 3bc00af8: 6709 lui a4,0x2 + 3bc00afa: 842a mv s0,a0 + 3bc00afc: 00e6e463 bltu a3,a4,3bc00b04 + 3bc00b00: 0007a423 sw zero,8(a5) # e000008 + 3bc00b04: 0e0007b7 lui a5,0xe000 + 3bc00b08: 4798 lw a4,8(a5) + 3bc00b0a: 0017069b addiw a3,a4,1 + 3bc00b0e: c794 sw a3,8(a5) + 3bc00b10: 0c0006b7 lui a3,0xc000 + 3bc00b14: 10e6d40b surb s0,a3,a4,0 + 3bc00b18: 4709 li a4,2 + 3bc00b1a: 00b74d63 blt a4,a1,3bc00b34 + 3bc00b1e: 0007c783 lbu a5,0(a5) # e000000 + 3bc00b22: 8b91 andi a5,a5,4 + 3bc00b24: eb81 bnez a5,3bc00b34 + 3bc00b26: 0ff47513 andi a0,s0,255 + 3bc00b2a: f7aff0ef jal ra,3bc002a4 + 3bc00b2e: 00055363 bgez a0,3bc00b34 + 3bc00b32: 547d li s0,-1 + 3bc00b34: 60a2 ld ra,8(sp) + 3bc00b36: 8522 mv a0,s0 + 3bc00b38: 6402 ld s0,0(sp) + 3bc00b3a: 0141 addi sp,sp,16 + 3bc00b3c: 8082 ret + +000000003bc00b3e : + 3bc00b3e: 4701 li a4,0 + 3bc00b40: 80e5478b lrbu a5,a0,a4,0 + 3bc00b44: 80e5c68b lrbu a3,a1,a4,0 + 3bc00b48: 00d78563 beq a5,a3,3bc00b52 + 3bc00b4c: 40d7853b subw a0,a5,a3 + 3bc00b50: 8082 ret + 3bc00b52: 0705 addi a4,a4,1 + 3bc00b54: f7f5 bnez a5,3bc00b40 + 3bc00b56: 4501 li a0,0 + 3bc00b58: 8082 ret + +000000003bc00b5a : + 3bc00b5a: 87aa mv a5,a0 + 3bc00b5c: 0007c703 lbu a4,0(a5) + 3bc00b60: e701 bnez a4,3bc00b68 + 3bc00b62: 40a78533 sub a0,a5,a0 + 3bc00b66: 8082 ret + 3bc00b68: 0785 addi a5,a5,1 + 3bc00b6a: bfcd j 3bc00b5c + +000000003bc00b6c : + 3bc00b6c: 1101 addi sp,sp,-32 + 3bc00b6e: 00c007b7 lui a5,0xc00 + 3bc00b72: e822 sd s0,16(sp) + 3bc00b74: e426 sd s1,8(sp) + 3bc00b76: e04a sd s2,0(sp) + 3bc00b78: 1c55370b extu a4,a0,7,5 + 3bc00b7c: 4007879b addiw a5,a5,1024 + 3bc00b80: 0155541b srliw s0,a0,0x15 + 3bc00b84: 5105390b extu s2,a0,20,16 + 3bc00b88: 1045348b extu s1,a0,4,4 + 3bc00b8c: 3c85350b extu a0,a0,15,8 + 3bc00b90: 9d3d addw a0,a0,a5 + 3bc00b92: 0025151b slliw a0,a0,0x2 + 3bc00b96: ec06 sd ra,24(sp) + 3bc00b98: 7c05350b extu a0,a0,31,0 + 3bc00b9c: c118 sw a4,0(a0) + 3bc00b9e: 4529 li a0,10 + 3bc00ba0: deaff0ef jal ra,3bc0018a + 3bc00ba4: 00447793 andi a5,s0,4 + 3bc00ba8: eb9d bnez a5,3bc00bde + 3bc00baa: 678d lui a5,0x3 + 3bc00bac: 881d andi s0,s0,7 + 3bc00bae: 0207879b addiw a5,a5,32 + 3bc00bb2: 9c3d addw s0,s0,a5 + 3bc00bb4: 00c4141b slliw s0,s0,0xc + 3bc00bb8: 0504041b addiw s0,s0,80 + 3bc00bbc: 7c04340b extu s0,s0,31,0 + 3bc00bc0: 4008 lw a0,0(s0) + 3bc00bc2: 0125553b srlw a0,a0,s2 + 3bc00bc6: 00157793 andi a5,a0,1 + 3bc00bca: 853e mv a0,a5 + 3bc00bcc: c099 beqz s1,3bc00bd2 + 3bc00bce: 0017c513 xori a0,a5,1 + 3bc00bd2: 60e2 ld ra,24(sp) + 3bc00bd4: 6442 ld s0,16(sp) + 3bc00bd6: 64a2 ld s1,8(sp) + 3bc00bd8: 6902 ld s2,0(sp) + 3bc00bda: 6105 addi sp,sp,32 + 3bc00bdc: 8082 ret + 3bc00bde: 05021437 lui s0,0x5021 + 3bc00be2: 05040413 addi s0,s0,80 # 5021050 + 3bc00be6: bfd9 j 3bc00bbc + +000000003bc00be8 : + 3bc00be8: 030507b7 lui a5,0x3050 + 3bc00bec: 1047a783 lw a5,260(a5) # 3050104 <__BSS_SIZE__+0x304a4f4> + 3bc00bf0: 0007851b sext.w a0,a5 + 3bc00bf4: 8b91 andi a5,a5,4 + 3bc00bf6: c391 beqz a5,3bc00bfa + 3bc00bf8: bf95 j 3bc00b6c + 3bc00bfa: 030007b7 lui a5,0x3000 + 3bc00bfe: 43c8 lw a0,4(a5) + 3bc00c00: 2085350b extu a0,a0,8,8 + 3bc00c04: 8082 ret + +000000003bc00c06 : + 3bc00c06: 1141 addi sp,sp,-16 + 3bc00c08: e406 sd ra,8(sp) + 3bc00c0a: e02ff0ef jal ra,3bc0020c + 3bc00c0e: 60a2 ld ra,8(sp) + 3bc00c10: 3e75051b addiw a0,a0,999 + 3bc00c14: 3e800793 li a5,1000 + 3bc00c18: 02f5553b divuw a0,a0,a5 + 3bc00c1c: 0141 addi sp,sp,16 + 3bc00c1e: 8082 ret + +000000003bc00c20 : + 3bc00c20: 7179 addi sp,sp,-48 + 3bc00c22: 8732 mv a4,a2 + 3bc00c24: 2601 sext.w a2,a2 + 3bc00c26: f022 sd s0,32(sp) + 3bc00c28: ec26 sd s1,24(sp) + 3bc00c2a: e03a sd a4,0(sp) + 3bc00c2c: f406 sd ra,40(sp) + 3bc00c2e: 84aa mv s1,a0 + 3bc00c30: e42e sd a1,8(sp) + 3bc00c32: 295030ef jal ra,3bc046c6 + 3bc00c36: 4785 li a5,1 + 3bc00c38: f8d1470b ldd a4,a3,(sp),0,4 + 3bc00c3c: 5479 li s0,-2 + 3bc00c3e: 00f51363 bne a0,a5,3bc00c44 + 3bc00c42: 4401 li s0,0 + 3bc00c44: 8626 mv a2,s1 + 3bc00c46: 85a2 mv a1,s0 + 3bc00c48: 00009517 auipc a0,0x9 + 3bc00c4c: 55850513 addi a0,a0,1368 # 3bc0a1a0 + 3bc00c50: f08ff0ef jal ra,3bc00358 + 3bc00c54: 70a2 ld ra,40(sp) + 3bc00c56: 8522 mv a0,s0 + 3bc00c58: 7402 ld s0,32(sp) + 3bc00c5a: 64e2 ld s1,24(sp) + 3bc00c5c: 6145 addi sp,sp,48 + 3bc00c5e: 8082 ret + +000000003bc00c60 : + 3bc00c60: 1101 addi sp,sp,-32 + 3bc00c62: 0000d617 auipc a2,0xd + 3bc00c66: b9e60613 addi a2,a2,-1122 # 3bc0d800 <__BSS_START__> + 3bc00c6a: e42a sd a0,8(sp) + 3bc00c6c: 6585 lui a1,0x1 + 3bc00c6e: 00009517 auipc a0,0x9 + 3bc00c72: 55250513 addi a0,a0,1362 # 3bc0a1c0 + 3bc00c76: ec06 sd ra,24(sp) + 3bc00c78: e822 sd s0,16(sp) + 3bc00c7a: edeff0ef jal ra,3bc00358 + 3bc00c7e: c87ff097 auipc ra,0xc87ff + 3bc00c82: 3a2080e7 jalr 930(ra) # 4400020 + 3bc00c86: 67b5 lui a5,0xd + 3bc00c88: 2501 sext.w a0,a0 + 3bc00c8a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00c8e: 66a2 ld a3,8(sp) + 3bc00c90: 6605 lui a2,0x1 + 3bc00c92: 04f51463 bne a0,a5,3bc00cda + 3bc00c96: 3c0027b7 lui a5,0x3c002 + 3bc00c9a: 0e07a583 lw a1,224(a5) # 3c0020e0 <__BL2_END__+0x3eecd0> + 3bc00c9e: 0000d517 auipc a0,0xd + 3bc00ca2: b6250513 addi a0,a0,-1182 # 3bc0d800 <__BSS_START__> + 3bc00ca6: f7bff0ef jal ra,3bc00c20 + 3bc00caa: 02054463 bltz a0,3bc00cd2 + 3bc00cae: 0000d417 auipc s0,0xd + 3bc00cb2: b5240413 addi s0,s0,-1198 # 3bc0d800 <__BSS_START__> + 3bc00cb6: 6018 ld a4,0(s0) + 3bc00cb8: 0000a797 auipc a5,0xa + 3bc00cbc: 9607b783 ld a5,-1696(a5) # 3bc0a618 + 3bc00cc0: 02f70a63 beq a4,a5,3bc00cf4 + 3bc00cc4: 00009517 auipc a0,0x9 + 3bc00cc8: 51450513 addi a0,a0,1300 # 3bc0a1d8 + 3bc00ccc: e8cff0ef jal ra,3bc00358 + 3bc00cd0: 557d li a0,-1 + 3bc00cd2: 60e2 ld ra,24(sp) + 3bc00cd4: 6442 ld s0,16(sp) + 3bc00cd6: 6105 addi sp,sp,32 + 3bc00cd8: 8082 ret + 3bc00cda: 3c0027b7 lui a5,0x3c002 + 3bc00cde: 0e07a583 lw a1,224(a5) # 3c0020e0 <__BL2_END__+0x3eecd0> + 3bc00ce2: 0000d517 auipc a0,0xd + 3bc00ce6: b1e50513 addi a0,a0,-1250 # 3bc0d800 <__BSS_START__> + 3bc00cea: c87ff097 auipc ra,0xc87ff + 3bc00cee: 376080e7 jalr 886(ra) # 4400060 + 3bc00cf2: bf65 j 3bc00caa + 3bc00cf4: 6585 lui a1,0x1 + 3bc00cf6: 15d1 addi a1,a1,-12 + 3bc00cf8: 0000d517 auipc a0,0xd + 3bc00cfc: b1450513 addi a0,a0,-1260 # 3bc0d80c <__BSS_START__+0xc> + 3bc00d00: c87ff097 auipc ra,0xc87ff + 3bc00d04: 3a0080e7 jalr 928(ra) # 44000a0 + 3bc00d08: 4410 lw a2,8(s0) + 3bc00d0a: 0005059b sext.w a1,a0 + 3bc00d0e: 00b60963 beq a2,a1,3bc00d20 + 3bc00d12: 00009517 auipc a0,0x9 + 3bc00d16: 4de50513 addi a0,a0,1246 # 3bc0a1f0 + 3bc00d1a: e3eff0ef jal ra,3bc00358 + 3bc00d1e: bf4d j 3bc00cd0 + 3bc00d20: 00009517 auipc a0,0x9 + 3bc00d24: 4f050513 addi a0,a0,1264 # 3bc0a210 + 3bc00d28: e30ff0ef jal ra,3bc00358 + 3bc00d2c: 4501 li a0,0 + 3bc00d2e: b755 j 3bc00cd2 + +000000003bc00d30 : + 3bc00d30: 1101 addi sp,sp,-32 + 3bc00d32: e822 sd s0,16(sp) + 3bc00d34: 0000d417 auipc s0,0xd + 3bc00d38: acc40413 addi s0,s0,-1332 # 3bc0d800 <__BSS_START__> + 3bc00d3c: 4c10 lw a2,24(s0) + 3bc00d3e: 484c lw a1,20(s0) + 3bc00d40: e42a sd a0,8(sp) + 3bc00d42: 00009517 auipc a0,0x9 + 3bc00d46: 4d650513 addi a0,a0,1238 # 3bc0a218 + 3bc00d4a: ec06 sd ra,24(sp) + 3bc00d4c: e0cff0ef jal ra,3bc00358 + 3bc00d50: 4c18 lw a4,24(s0) + 3bc00d52: 6791 lui a5,0x4 + 3bc00d54: 66a2 ld a3,8(sp) + 3bc00d56: 00f76363 bltu a4,a5,3bc00d5c + 3bc00d5a: cc1c sw a5,24(s0) + 3bc00d5c: e436 sd a3,8(sp) + 3bc00d5e: c87ff097 auipc ra,0xc87ff + 3bc00d62: 2c2080e7 jalr 706(ra) # 4400020 + 3bc00d66: 67b5 lui a5,0xd + 3bc00d68: 2501 sext.w a0,a0 + 3bc00d6a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00d6e: 66a2 ld a3,8(sp) + 3bc00d70: 01846603 lwu a2,24(s0) + 3bc00d74: 484c lw a1,20(s0) + 3bc00d76: 04f51363 bne a0,a5,3bc00dbc + 3bc00d7a: 0000e517 auipc a0,0xe + 3bc00d7e: a8650513 addi a0,a0,-1402 # 3bc0e800 + 3bc00d82: e9fff0ef jal ra,3bc00c20 + 3bc00d86: 02054763 bltz a0,3bc00db4 + 3bc00d8a: 4c0c lw a1,24(s0) + 3bc00d8c: 0000e517 auipc a0,0xe + 3bc00d90: a7450513 addi a0,a0,-1420 # 3bc0e800 + 3bc00d94: c87ff097 auipc ra,0xc87ff + 3bc00d98: 30c080e7 jalr 780(ra) # 44000a0 + 3bc00d9c: 4810 lw a2,16(s0) + 3bc00d9e: 0005059b sext.w a1,a0 + 3bc00da2: 02b60663 beq a2,a1,3bc00dce + 3bc00da6: 00009517 auipc a0,0x9 + 3bc00daa: 48a50513 addi a0,a0,1162 # 3bc0a230 + 3bc00dae: daaff0ef jal ra,3bc00358 + 3bc00db2: 557d li a0,-1 + 3bc00db4: 60e2 ld ra,24(sp) + 3bc00db6: 6442 ld s0,16(sp) + 3bc00db8: 6105 addi sp,sp,32 + 3bc00dba: 8082 ret + 3bc00dbc: 0000e517 auipc a0,0xe + 3bc00dc0: a4450513 addi a0,a0,-1468 # 3bc0e800 + 3bc00dc4: c87ff097 auipc ra,0xc87ff + 3bc00dc8: 29c080e7 jalr 668(ra) # 4400060 + 3bc00dcc: bf6d j 3bc00d86 + 3bc00dce: 00009517 auipc a0,0x9 + 3bc00dd2: 48a50513 addi a0,a0,1162 # 3bc0a258 + 3bc00dd6: d82ff0ef jal ra,3bc00358 + 3bc00dda: 4501 li a0,0 + 3bc00ddc: bfe1 j 3bc00db4 + +000000003bc00dde : + 3bc00dde: 7179 addi sp,sp,-48 + 3bc00de0: ec26 sd s1,24(sp) + 3bc00de2: 74cd lui s1,0xffff3 + 3bc00de4: e84a sd s2,16(sp) + 3bc00de6: e44e sd s3,8(sp) + 3bc00de8: e052 sd s4,0(sp) + 3bc00dea: f406 sd ra,40(sp) + 3bc00dec: f022 sd s0,32(sp) + 3bc00dee: 1604849b addiw s1,s1,352 + 3bc00df2: 4995 li s3,5 + 3bc00df4: 4a05 li s4,1 + 3bc00df6: 00009917 auipc s2,0x9 + 3bc00dfa: 46a90913 addi s2,s2,1130 # 3bc0a260 + 3bc00dfe: 4401 li s0,0 + 3bc00e00: c87ff097 auipc ra,0xc87ff + 3bc00e04: 2c0080e7 jalr 704(ra) # 44000c0 + 3bc00e08: 00a45e63 bge s0,a0,3bc00e24 + 3bc00e0c: 8522 mv a0,s0 + 3bc00e0e: e53ff0ef jal ra,3bc00c60 + 3bc00e12: 00055463 bgez a0,3bc00e1a + 3bc00e16: 2405 addiw s0,s0,1 + 3bc00e18: b7e5 j 3bc00e00 + 3bc00e1a: 8522 mv a0,s0 + 3bc00e1c: f15ff0ef jal ra,3bc00d30 + 3bc00e20: fe054be3 bltz a0,3bc00e16 + 3bc00e24: c87ff097 auipc ra,0xc87ff + 3bc00e28: 29c080e7 jalr 668(ra) # 44000c0 + 3bc00e2c: 02a45f63 bge s0,a0,3bc00e6a + 3bc00e30: dd7ff0ef jal ra,3bc00c06 + 3bc00e34: 0000a417 auipc s0,0xa + 3bc00e38: 60c40413 addi s0,s0,1548 # 3bc0b440 + 3bc00e3c: 601c ld a5,0(s0) + 3bc00e3e: 00a79123 sh a0,2(a5) + 3bc00e42: 0000e517 auipc a0,0xe + 3bc00e46: 9be50513 addi a0,a0,-1602 # 3bc0e800 + 3bc00e4a: 34a070ef jal ra,3bc08194 + 3bc00e4e: db9ff0ef jal ra,3bc00c06 + 3bc00e52: 601c ld a5,0(s0) + 3bc00e54: 70a2 ld ra,40(sp) + 3bc00e56: 7402 ld s0,32(sp) + 3bc00e58: 00a79223 sh a0,4(a5) + 3bc00e5c: 64e2 ld s1,24(sp) + 3bc00e5e: 6942 ld s2,16(sp) + 3bc00e60: 69a2 ld s3,8(sp) + 3bc00e62: 6a02 ld s4,0(sp) + 3bc00e64: 4501 li a0,0 + 3bc00e66: 6145 addi sp,sp,48 + 3bc00e68: 8082 ret + 3bc00e6a: c87ff097 auipc ra,0xc87ff + 3bc00e6e: 1b6080e7 jalr 438(ra) # 4400020 + 3bc00e72: 9d25 addw a0,a0,s1 + 3bc00e74: 85a2 mv a1,s0 + 3bc00e76: 00a9ef63 bltu s3,a0,3bc00e94 + 3bc00e7a: 00aa1533 sll a0,s4,a0 + 3bc00e7e: 02957513 andi a0,a0,41 + 3bc00e82: c909 beqz a0,3bc00e94 + 3bc00e84: 854a mv a0,s2 + 3bc00e86: cd2ff0ef jal ra,3bc00358 + 3bc00e8a: c87ff097 auipc ra,0xc87ff + 3bc00e8e: 1f6080e7 jalr 502(ra) # 4400080 + 3bc00e92: b7b5 j 3bc00dfe + 3bc00e94: 00009517 auipc a0,0x9 + 3bc00e98: 3f450513 addi a0,a0,1012 # 3bc0a288 + 3bc00e9c: cbcff0ef jal ra,3bc00358 + 3bc00ea0: f1aff0ef jal ra,3bc005ba + +000000003bc00ea4 : + 3bc00ea4: 7179 addi sp,sp,-48 + 3bc00ea6: e84a sd s2,16(sp) + 3bc00ea8: 0000a917 auipc s2,0xa + 3bc00eac: 59890913 addi s2,s2,1432 # 3bc0b440 + 3bc00eb0: 00093783 ld a5,0(s2) + 3bc00eb4: f022 sd s0,32(sp) + 3bc00eb6: 0000d417 auipc s0,0xd + 3bc00eba: 94a40413 addi s0,s0,-1718 # 3bc0d800 <__BSS_START__> + 3bc00ebe: 0047d703 lhu a4,4(a5) + 3bc00ec2: 5414 lw a3,40(s0) + 3bc00ec4: 5450 lw a2,44(s0) + 3bc00ec6: 504c lw a1,36(s0) + 3bc00ec8: ec26 sd s1,24(sp) + 3bc00eca: f406 sd ra,40(sp) + 3bc00ecc: e44e sd s3,8(sp) + 3bc00ece: 00e79323 sh a4,6(a5) + 3bc00ed2: 84aa mv s1,a0 + 3bc00ed4: 00009517 auipc a0,0x9 + 3bc00ed8: 3dc50513 addi a0,a0,988 # 3bc0a2b0 + 3bc00edc: c7cff0ef jal ra,3bc00358 + 3bc00ee0: 545c lw a5,44(s0) + 3bc00ee2: 00009517 auipc a0,0x9 + 3bc00ee6: 3e650513 addi a0,a0,998 # 3bc0a2c8 + 3bc00eea: 10078763 beqz a5,3bc00ff8 + 3bc00eee: 800006b7 lui a3,0x80000 + 3bc00ef2: 00f6863b addw a2,a3,a5 + 3bc00ef6: 04000737 lui a4,0x4000 + 3bc00efa: 00e66b63 bltu a2,a4,3bc00f10 + 3bc00efe: 85be mv a1,a5 + 3bc00f00: 00009517 auipc a0,0x9 + 3bc00f04: 3e050513 addi a0,a0,992 # 3bc0a2e0 + 3bc00f08: c50ff0ef jal ra,3bc00358 + 3bc00f0c: eaeff0ef jal ra,3bc005ba + 3bc00f10: 540c lw a1,40(s0) + 3bc00f12: 9fad addw a5,a5,a1 + 3bc00f14: 9fb5 addw a5,a5,a3 + 3bc00f16: 00e7e763 bltu a5,a4,3bc00f24 + 3bc00f1a: 00009517 auipc a0,0x9 + 3bc00f1e: 3f650513 addi a0,a0,1014 # 3bc0a310 + 3bc00f22: b7dd j 3bc00f08 + 3bc00f24: c87ff097 auipc ra,0xc87ff + 3bc00f28: 0fc080e7 jalr 252(ra) # 4400020 + 3bc00f2c: 67b5 lui a5,0xd + 3bc00f2e: 0005071b sext.w a4,a0 + 3bc00f32: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00f36: 504c lw a1,36(s0) + 3bc00f38: 02846603 lwu a2,40(s0) + 3bc00f3c: 02c46503 lwu a0,44(s0) + 3bc00f40: 86a6 mv a3,s1 + 3bc00f42: 04f71263 bne a4,a5,3bc00f86 + 3bc00f46: cdbff0ef jal ra,3bc00c20 + 3bc00f4a: 84aa mv s1,a0 + 3bc00f4c: 02054563 bltz a0,3bc00f76 + 3bc00f50: 540c lw a1,40(s0) + 3bc00f52: 02c46503 lwu a0,44(s0) + 3bc00f56: c87ff097 auipc ra,0xc87ff + 3bc00f5a: 14a080e7 jalr 330(ra) # 44000a0 + 3bc00f5e: 5010 lw a2,32(s0) + 3bc00f60: 0005059b sext.w a1,a0 + 3bc00f64: 02b60663 beq a2,a1,3bc00f90 + 3bc00f68: 00009517 auipc a0,0x9 + 3bc00f6c: 3d850513 addi a0,a0,984 # 3bc0a340 + 3bc00f70: be8ff0ef jal ra,3bc00358 + 3bc00f74: 54fd li s1,-1 + 3bc00f76: 70a2 ld ra,40(sp) + 3bc00f78: 7402 ld s0,32(sp) + 3bc00f7a: 6942 ld s2,16(sp) + 3bc00f7c: 69a2 ld s3,8(sp) + 3bc00f7e: 8526 mv a0,s1 + 3bc00f80: 64e2 ld s1,24(sp) + 3bc00f82: 6145 addi sp,sp,48 + 3bc00f84: 8082 ret + 3bc00f86: c87ff097 auipc ra,0xc87ff + 3bc00f8a: 0da080e7 jalr 218(ra) # 4400060 + 3bc00f8e: bf75 j 3bc00f4a + 3bc00f90: 02846583 lwu a1,40(s0) + 3bc00f94: 02c46503 lwu a0,44(s0) + 3bc00f98: 3c0026b7 lui a3,0x3c002 + 3bc00f9c: 4601 li a2,0 + 3bc00f9e: 9f7ff0ef jal ra,3bc00994 + 3bc00fa2: 84aa mv s1,a0 + 3bc00fa4: 00055a63 bgez a0,3bc00fb8 + 3bc00fa8: 85aa mv a1,a0 + 3bc00faa: 00009517 auipc a0,0x9 + 3bc00fae: 3be50513 addi a0,a0,958 # 3bc0a368 + 3bc00fb2: ba6ff0ef jal ra,3bc00358 + 3bc00fb6: b7c1 j 3bc00f76 + 3bc00fb8: 02846583 lwu a1,40(s0) + 3bc00fbc: 02c46503 lwu a0,44(s0) + 3bc00fc0: 0e0009b7 lui s3,0xe000 + 3bc00fc4: 992ff0ef jal ra,3bc00156 + 3bc00fc8: 07c9a483 lw s1,124(s3) # e00007c + 3bc00fcc: 969ff0ef jal ra,3bc00934 + 3bc00fd0: c37ff0ef jal ra,3bc00c06 + 3bc00fd4: 00093783 ld a5,0(s2) + 3bc00fd8: 2481 sext.w s1,s1 + 3bc00fda: 00a79323 sh a0,6(a5) + 3bc00fde: 0abc17b7 lui a5,0xabc1 + 3bc00fe2: def78793 addi a5,a5,-529 # abc0def + 3bc00fe6: 00f49d63 bne s1,a5,3bc01000 + 3bc00fea: 545c lw a5,44(s0) + 3bc00fec: 06f9ae23 sw a5,124(s3) + 3bc00ff0: 00009517 auipc a0,0x9 + 3bc00ff4: 39850513 addi a0,a0,920 # 3bc0a388 + 3bc00ff8: b60ff0ef jal ra,3bc00358 + 3bc00ffc: 4481 li s1,0 + 3bc00ffe: bfa5 j 3bc00f76 + 3bc01000: 02c46503 lwu a0,44(s0) + 3bc01004: de8ff0ef jal ra,3bc005ec + 3bc01008: b7e5 j 3bc00ff0 + +000000003bc0100a : + 3bc0100a: 1101 addi sp,sp,-32 + 3bc0100c: e822 sd s0,16(sp) + 3bc0100e: 0000c417 auipc s0,0xc + 3bc01012: 7f240413 addi s0,s0,2034 # 3bc0d800 <__BSS_START__> + 3bc01016: e04a sd s2,0(sp) + 3bc01018: 5c14 lw a3,56(s0) + 3bc0101a: 5c50 lw a2,60(s0) + 3bc0101c: 892e mv s2,a1 + 3bc0101e: 584c lw a1,52(s0) + 3bc01020: e426 sd s1,8(sp) + 3bc01022: 84aa mv s1,a0 + 3bc01024: 00009517 auipc a0,0x9 + 3bc01028: 36c50513 addi a0,a0,876 # 3bc0a390 + 3bc0102c: ec06 sd ra,24(sp) + 3bc0102e: b2aff0ef jal ra,3bc00358 + 3bc01032: 5c5c lw a5,60(s0) + 3bc01034: eb89 bnez a5,3bc01046 + 3bc01036: 00009517 auipc a0,0x9 + 3bc0103a: 37250513 addi a0,a0,882 # 3bc0a3a8 + 3bc0103e: b1aff0ef jal ra,3bc00358 + 3bc01042: 4481 li s1,0 + 3bc01044: a069 j 3bc010ce + 3bc01046: 800006b7 lui a3,0x80000 + 3bc0104a: 00f6863b addw a2,a3,a5 + 3bc0104e: 04000737 lui a4,0x4000 + 3bc01052: 00e66b63 bltu a2,a4,3bc01068 + 3bc01056: 85be mv a1,a5 + 3bc01058: 00009517 auipc a0,0x9 + 3bc0105c: 36050513 addi a0,a0,864 # 3bc0a3b8 + 3bc01060: af8ff0ef jal ra,3bc00358 + 3bc01064: d56ff0ef jal ra,3bc005ba + 3bc01068: 5c0c lw a1,56(s0) + 3bc0106a: 9fad addw a5,a5,a1 + 3bc0106c: 9fb5 addw a5,a5,a3 + 3bc0106e: 00e7e763 bltu a5,a4,3bc0107c + 3bc01072: 00009517 auipc a0,0x9 + 3bc01076: 37650513 addi a0,a0,886 # 3bc0a3e8 + 3bc0107a: b7dd j 3bc01060 + 3bc0107c: c87ff097 auipc ra,0xc87ff + 3bc01080: fa4080e7 jalr -92(ra) # 4400020 + 3bc01084: 67b5 lui a5,0xd + 3bc01086: 0005071b sext.w a4,a0 + 3bc0108a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0108e: 584c lw a1,52(s0) + 3bc01090: 03846603 lwu a2,56(s0) + 3bc01094: 03c46503 lwu a0,60(s0) + 3bc01098: 86a6 mv a3,s1 + 3bc0109a: 04f71163 bne a4,a5,3bc010dc + 3bc0109e: b83ff0ef jal ra,3bc00c20 + 3bc010a2: 84aa mv s1,a0 + 3bc010a4: 02054563 bltz a0,3bc010ce + 3bc010a8: 5c0c lw a1,56(s0) + 3bc010aa: 03c46503 lwu a0,60(s0) + 3bc010ae: c87ff097 auipc ra,0xc87ff + 3bc010b2: ff2080e7 jalr -14(ra) # 44000a0 + 3bc010b6: 5810 lw a2,48(s0) + 3bc010b8: 0005059b sext.w a1,a0 + 3bc010bc: 02b60563 beq a2,a1,3bc010e6 + 3bc010c0: 00009517 auipc a0,0x9 + 3bc010c4: 35850513 addi a0,a0,856 # 3bc0a418 + 3bc010c8: a90ff0ef jal ra,3bc00358 + 3bc010cc: 54fd li s1,-1 + 3bc010ce: 60e2 ld ra,24(sp) + 3bc010d0: 6442 ld s0,16(sp) + 3bc010d2: 6902 ld s2,0(sp) + 3bc010d4: 8526 mv a0,s1 + 3bc010d6: 64a2 ld s1,8(sp) + 3bc010d8: 6105 addi sp,sp,32 + 3bc010da: 8082 ret + 3bc010dc: c87ff097 auipc ra,0xc87ff + 3bc010e0: f84080e7 jalr -124(ra) # 4400060 + 3bc010e4: bf7d j 3bc010a2 + 3bc010e6: 03846583 lwu a1,56(s0) + 3bc010ea: 03c46503 lwu a0,60(s0) + 3bc010ee: 3c0026b7 lui a3,0x3c002 + 3bc010f2: 4601 li a2,0 + 3bc010f4: 8a1ff0ef jal ra,3bc00994 + 3bc010f8: 84aa mv s1,a0 + 3bc010fa: 00055a63 bgez a0,3bc0110e + 3bc010fe: 85aa mv a1,a0 + 3bc01100: 00009517 auipc a0,0x9 + 3bc01104: 33850513 addi a0,a0,824 # 3bc0a438 + 3bc01108: a50ff0ef jal ra,3bc00358 + 3bc0110c: b7c9 j 3bc010ce + 3bc0110e: 03846583 lwu a1,56(s0) + 3bc01112: 03c46503 lwu a0,60(s0) + 3bc01116: 840ff0ef jal ra,3bc00156 + 3bc0111a: 00009517 auipc a0,0x9 + 3bc0111e: 33e50513 addi a0,a0,830 # 3bc0a458 + 3bc01122: a36ff0ef jal ra,3bc00358 + 3bc01126: 03c46783 lwu a5,60(s0) + 3bc0112a: 00f93023 sd a5,0(s2) + 3bc0112e: bf11 j 3bc01042 + +000000003bc01130 : + 3bc01130: 715d addi sp,sp,-80 + 3bc01132: f44e sd s3,40(sp) + 3bc01134: 0000c997 auipc s3,0xc + 3bc01138: 6cc98993 addi s3,s3,1740 # 3bc0d800 <__BSS_START__> + 3bc0113c: e85a sd s6,16(sp) + 3bc0113e: 8b2e mv s6,a1 + 3bc01140: 0449a583 lw a1,68(s3) + 3bc01144: ec56 sd s5,24(sp) + 3bc01146: 8aaa mv s5,a0 + 3bc01148: 00009517 auipc a0,0x9 + 3bc0114c: 31850513 addi a0,a0,792 # 3bc0a460 + 3bc01150: e486 sd ra,72(sp) + 3bc01152: e0a2 sd s0,64(sp) + 3bc01154: fc26 sd s1,56(sp) + 3bc01156: f84a sd s2,48(sp) + 3bc01158: f052 sd s4,32(sp) + 3bc0115a: 9feff0ef jal ra,3bc00358 + 3bc0115e: c87ff097 auipc ra,0xc87ff + 3bc01162: ec2080e7 jalr -318(ra) # 4400020 + 3bc01166: 67b5 lui a5,0xd + 3bc01168: 2501 sext.w a0,a0 + 3bc0116a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0116e: 0449a583 lw a1,68(s3) + 3bc01172: 86d6 mv a3,s5 + 3bc01174: 20000613 li a2,512 + 3bc01178: 02f51663 bne a0,a5,3bc011a4 + 3bc0117c: 0000d517 auipc a0,0xd + 3bc01180: 68450513 addi a0,a0,1668 # 3bc0e800 + 3bc01184: a9dff0ef jal ra,3bc00c20 + 3bc01188: 02055763 bgez a0,3bc011b6 + 3bc0118c: 59fd li s3,-1 + 3bc0118e: 60a6 ld ra,72(sp) + 3bc01190: 6406 ld s0,64(sp) + 3bc01192: 74e2 ld s1,56(sp) + 3bc01194: 7942 ld s2,48(sp) + 3bc01196: 7a02 ld s4,32(sp) + 3bc01198: 6ae2 ld s5,24(sp) + 3bc0119a: 6b42 ld s6,16(sp) + 3bc0119c: 854e mv a0,s3 + 3bc0119e: 79a2 ld s3,40(sp) + 3bc011a0: 6161 addi sp,sp,80 + 3bc011a2: 8082 ret + 3bc011a4: 0000d517 auipc a0,0xd + 3bc011a8: 65c50513 addi a0,a0,1628 # 3bc0e800 + 3bc011ac: c87ff097 auipc ra,0xc87ff + 3bc011b0: eb4080e7 jalr -332(ra) # 4400060 + 3bc011b4: bfd1 j 3bc01188 + 3bc011b6: 0000d417 auipc s0,0xd + 3bc011ba: 64a40413 addi s0,s0,1610 # 3bc0e800 + 3bc011be: 4458 lw a4,12(s0) + 3bc011c0: 6814 ld a3,16(s0) + 3bc011c2: 4410 lw a2,8(s0) + 3bc011c4: 1ff7049b addiw s1,a4,511 + 3bc011c8: 404c lw a1,4(s0) + 3bc011ca: e004f493 andi s1,s1,-512 + 3bc011ce: 2481 sext.w s1,s1 + 3bc011d0: 87a6 mv a5,s1 + 3bc011d2: 00009517 auipc a0,0x9 + 3bc011d6: 29e50513 addi a0,a0,670 # 3bc0a470 + 3bc011da: 97eff0ef jal ra,3bc00358 + 3bc011de: 4058 lw a4,4(s0) + 3bc011e0: 345a37b7 lui a5,0x345a3 + 3bc011e4: 34278793 addi a5,a5,834 # 345a3342 + 3bc011e8: 06f70363 beq a4,a5,3bc0124e + 3bc011ec: 414d37b7 lui a5,0x414d3 + 3bc011f0: 34278793 addi a5,a5,834 # 414d3342 <__BL2_END__+0x58bff32> + 3bc011f4: 06f70963 beq a4,a5,3bc01266 + 3bc011f8: 01043903 ld s2,16(s0) + 3bc011fc: 4a01 li s4,0 + 3bc011fe: c87ff097 auipc ra,0xc87ff + 3bc01202: e22080e7 jalr -478(ra) # 4400020 + 3bc01206: 67b5 lui a5,0xd + 3bc01208: 2501 sext.w a0,a0 + 3bc0120a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0120e: 0449a583 lw a1,68(s3) + 3bc01212: 86d6 mv a3,s5 + 3bc01214: 8626 mv a2,s1 + 3bc01216: 04f51a63 bne a0,a5,3bc0126a + 3bc0121a: 854a mv a0,s2 + 3bc0121c: a05ff0ef jal ra,3bc00c20 + 3bc01220: f60546e3 bltz a0,3bc0118c + 3bc01224: 444c lw a1,12(s0) + 3bc01226: 00c90993 addi s3,s2,12 + 3bc0122a: 854e mv a0,s3 + 3bc0122c: 35d1 addiw a1,a1,-12 + 3bc0122e: c87ff097 auipc ra,0xc87ff + 3bc01232: e72080e7 jalr -398(ra) # 44000a0 + 3bc01236: 4410 lw a2,8(s0) + 3bc01238: 0005059b sext.w a1,a0 + 3bc0123c: 02b60d63 beq a2,a1,3bc01276 + 3bc01240: 00009517 auipc a0,0x9 + 3bc01244: 26050513 addi a0,a0,608 # 3bc0a4a0 + 3bc01248: 910ff0ef jal ra,3bc00358 + 3bc0124c: b781 j 3bc0118c + 3bc0124e: 4a09 li s4,2 + 3bc01250: 85d2 mv a1,s4 + 3bc01252: 00009517 auipc a0,0x9 + 3bc01256: 23e50513 addi a0,a0,574 # 3bc0a490 + 3bc0125a: 00815937 lui s2,0x815 + 3bc0125e: 8faff0ef jal ra,3bc00358 + 3bc01262: 0922 slli s2,s2,0x8 + 3bc01264: bf69 j 3bc011fe + 3bc01266: 4a05 li s4,1 + 3bc01268: b7e5 j 3bc01250 + 3bc0126a: 854a mv a0,s2 + 3bc0126c: c87ff097 auipc ra,0xc87ff + 3bc01270: df4080e7 jalr -524(ra) # 4400060 + 3bc01274: b775 j 3bc01220 + 3bc01276: 444c lw a1,12(s0) + 3bc01278: 854e mv a0,s3 + 3bc0127a: 3c0026b7 lui a3,0x3c002 + 3bc0127e: 35d1 addiw a1,a1,-12 + 3bc01280: 4651 li a2,20 + 3bc01282: 7c05b58b extu a1,a1,31,0 + 3bc01286: f0eff0ef jal ra,3bc00994 + 3bc0128a: 89aa mv s3,a0 + 3bc0128c: 00055a63 bgez a0,3bc012a0 + 3bc01290: 85aa mv a1,a0 + 3bc01292: 00009517 auipc a0,0x9 + 3bc01296: 23650513 addi a0,a0,566 # 3bc0a4c8 + 3bc0129a: 8beff0ef jal ra,3bc00358 + 3bc0129e: bdc5 j 3bc0118e + 3bc012a0: 967ff0ef jal ra,3bc00c06 + 3bc012a4: 0000a997 auipc s3,0xa + 3bc012a8: 19c98993 addi s3,s3,412 # 3bc0b440 + 3bc012ac: 0009b783 ld a5,0(s3) + 3bc012b0: 00a79423 sh a0,8(a5) + 3bc012b4: bccff0ef jal ra,3bc00680 + 3bc012b8: 94fff0ef jal ra,3bc00c06 + 3bc012bc: 0009b783 ld a5,0(s3) + 3bc012c0: 00a79523 sh a0,10(a5) + 3bc012c4: 040a0363 beqz s4,3bc0130a + 3bc012c8: 6804 ld s1,16(s0) + 3bc012ca: 010007b7 lui a5,0x1000 + 3bc012ce: 02000613 li a2,32 + 3bc012d2: 85ca mv a1,s2 + 3bc012d4: 8526 mv a0,s1 + 3bc012d6: e43e sd a5,8(sp) + 3bc012d8: f94ff0ef jal ra,3bc00a6c + 3bc012dc: 00c46683 lwu a3,12(s0) + 3bc012e0: 02090613 addi a2,s2,32 # 815020 <__BSS_SIZE__+0x80f410> + 3bc012e4: 002c addi a1,sp,8 + 3bc012e6: 02048513 addi a0,s1,32 # ffffffffffff3020 <__BL2_END__+0xffffffffc43dfc10> + 3bc012ea: 8752 mv a4,s4 + 3bc012ec: 3d4000ef jal ra,3bc016c0 + 3bc012f0: 6622 ld a2,8(sp) + 3bc012f2: 85aa mv a1,a0 + 3bc012f4: 0006049b sext.w s1,a2 + 3bc012f8: 00055963 bgez a0,3bc0130a + 3bc012fc: 00009517 auipc a0,0x9 + 3bc01300: 1ec50513 addi a0,a0,492 # 3bc0a4e8 + 3bc01304: 854ff0ef jal ra,3bc00358 + 3bc01308: b551 j 3bc0118c + 3bc0130a: 6808 ld a0,16(s0) + 3bc0130c: 85a6 mv a1,s1 + 3bc0130e: e49fe0ef jal ra,3bc00156 + 3bc01312: 8f5ff0ef jal ra,3bc00c06 + 3bc01316: 0009b783 ld a5,0(s3) + 3bc0131a: 4981 li s3,0 + 3bc0131c: 00a79623 sh a0,12(a5) # 100000c <__BSS_SIZE__+0xffa3fc> + 3bc01320: 00009517 auipc a0,0x9 + 3bc01324: 1f850513 addi a0,a0,504 # 3bc0a518 + 3bc01328: 830ff0ef jal ra,3bc00358 + 3bc0132c: 681c ld a5,16(s0) + 3bc0132e: 02078793 addi a5,a5,32 + 3bc01332: 00fb3023 sd a5,0(s6) + 3bc01336: bda1 j 3bc0118e + +000000003bc01338 : + 3bc01338: 7179 addi sp,sp,-48 + 3bc0133a: ec26 sd s1,24(sp) + 3bc0133c: 74cd lui s1,0xffff3 + 3bc0133e: e84a sd s2,16(sp) + 3bc01340: f406 sd ra,40(sp) + 3bc01342: f022 sd s0,32(sp) + 3bc01344: e002 sd zero,0(sp) + 3bc01346: e402 sd zero,8(sp) + 3bc01348: 1604849b addiw s1,s1,352 + 3bc0134c: cd0ff0ef jal ra,3bc0081c + 3bc01350: 4915 li s2,5 + 3bc01352: 4401 li s0,0 + 3bc01354: c87ff097 auipc ra,0xc87ff + 3bc01358: d6c080e7 jalr -660(ra) # 44000c0 + 3bc0135c: 02a45563 bge s0,a0,3bc01386 + 3bc01360: 8522 mv a0,s0 + 3bc01362: b43ff0ef jal ra,3bc00ea4 + 3bc01366: 00055463 bgez a0,3bc0136e + 3bc0136a: 2405 addiw s0,s0,1 + 3bc0136c: b7e5 j 3bc01354 + 3bc0136e: 858a mv a1,sp + 3bc01370: 8522 mv a0,s0 + 3bc01372: c99ff0ef jal ra,3bc0100a + 3bc01376: fe054ae3 bltz a0,3bc0136a + 3bc0137a: 002c addi a1,sp,8 + 3bc0137c: 8522 mv a0,s0 + 3bc0137e: db3ff0ef jal ra,3bc01130 + 3bc01382: fe0544e3 bltz a0,3bc0136a + 3bc01386: c87ff097 auipc ra,0xc87ff + 3bc0138a: d3a080e7 jalr -710(ra) # 44000c0 + 3bc0138e: 02a45b63 bge s0,a0,3bc013c4 + 3bc01392: dbbfe0ef jal ra,3bc0014c + 3bc01396: f2dfe0ef jal ra,3bc002c2 + 3bc0139a: c9aff0ef jal ra,3bc00834 + 3bc0139e: 6582 ld a1,0(sp) + 3bc013a0: c5a5 beqz a1,3bc01408 + 3bc013a2: 00009517 auipc a0,0x9 + 3bc013a6: 1ae50513 addi a0,a0,430 # 3bc0a550 + 3bc013aa: faffe0ef jal ra,3bc00358 + 3bc013ae: 65a2 ld a1,8(sp) + 3bc013b0: 6502 ld a0,0(sp) + 3bc013b2: e69fe0ef jal ra,3bc0021a + 3bc013b6: 70a2 ld ra,40(sp) + 3bc013b8: 7402 ld s0,32(sp) + 3bc013ba: 64e2 ld s1,24(sp) + 3bc013bc: 6942 ld s2,16(sp) + 3bc013be: 4501 li a0,0 + 3bc013c0: 6145 addi sp,sp,48 + 3bc013c2: 8082 ret + 3bc013c4: c87ff097 auipc ra,0xc87ff + 3bc013c8: c5c080e7 jalr -932(ra) # 4400020 + 3bc013cc: 00a487bb addw a5,s1,a0 + 3bc013d0: 85a2 mv a1,s0 + 3bc013d2: 02f96363 bltu s2,a5,3bc013f8 + 3bc013d6: 4505 li a0,1 + 3bc013d8: 00f51533 sll a0,a0,a5 + 3bc013dc: 02957513 andi a0,a0,41 + 3bc013e0: cd01 beqz a0,3bc013f8 + 3bc013e2: 00009517 auipc a0,0x9 + 3bc013e6: e7e50513 addi a0,a0,-386 # 3bc0a260 + 3bc013ea: f6ffe0ef jal ra,3bc00358 + 3bc013ee: c87ff097 auipc ra,0xc87ff + 3bc013f2: c92080e7 jalr -878(ra) # 4400080 + 3bc013f6: bfb1 j 3bc01352 + 3bc013f8: 00009517 auipc a0,0x9 + 3bc013fc: 13850513 addi a0,a0,312 # 3bc0a530 + 3bc01400: f59fe0ef jal ra,3bc00358 + 3bc01404: 9b6ff0ef jal ra,3bc005ba + 3bc01408: 65a2 ld a1,8(sp) + 3bc0140a: 00009517 auipc a0,0x9 + 3bc0140e: 16650513 addi a0,a0,358 # 3bc0a570 + 3bc01412: f47fe0ef jal ra,3bc00358 + 3bc01416: 6522 ld a0,8(sp) + 3bc01418: e7bfe0ef jal ra,3bc00292 + 3bc0141c: bf69 j 3bc013b6 + +000000003bc0141e : + 3bc0141e: 1141 addi sp,sp,-16 + 3bc01420: e406 sd ra,8(sp) + 3bc01422: b200f737 lui a4,0xb200f + 3bc01426: e022 sd s0,0(sp) + 3bc01428: 030007b7 lui a5,0x3000 + 3bc0142c: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc01430: fd6ff0ef jal ra,3bc00c06 + 3bc01434: 0000a797 auipc a5,0xa + 3bc01438: 00c7b783 ld a5,12(a5) # 3bc0b440 + 3bc0143c: 00a79023 sh a0,0(a5) + 3bc01440: 00009617 auipc a2,0x9 + 3bc01444: bb060613 addi a2,a2,-1104 # 3bc09ff0 + 3bc01448: 00009597 auipc a1,0x9 + 3bc0144c: bc858593 addi a1,a1,-1080 # 3bc0a010 + 3bc01450: 00009517 auipc a0,0x9 + 3bc01454: 14050513 addi a0,a0,320 # 3bc0a590 + 3bc01458: f01fe0ef jal ra,3bc00358 + 3bc0145c: 0e000437 lui s0,0xe000 + 3bc01460: 400c lw a1,0(s0) + 3bc01462: 00009517 auipc a0,0x9 + 3bc01466: 13e50513 addi a0,a0,318 # 3bc0a5a0 + 3bc0146a: eeffe0ef jal ra,3bc00358 + 3bc0146e: 3c0027b7 lui a5,0x3c002 + 3bc01472: 47cc lw a1,12(a5) + 3bc01474: 0e07a603 lw a2,224(a5) # 3c0020e0 <__BL2_END__+0x3eecd0> + 3bc01478: 00009517 auipc a0,0x9 + 3bc0147c: 14050513 addi a0,a0,320 # 3bc0a5b8 + 3bc01480: ed9fe0ef jal ra,3bc00358 + 3bc01484: 4c0c lw a1,24(s0) + 3bc01486: 00009517 auipc a0,0x9 + 3bc0148a: 16a50513 addi a0,a0,362 # 3bc0a5f0 + 3bc0148e: 2581 sext.w a1,a1 + 3bc01490: ec9fe0ef jal ra,3bc00358 + 3bc01494: 9a2ff0ef jal ra,3bc00636 + 3bc01498: b9aff0ef jal ra,3bc00832 + 3bc0149c: bdcff0ef jal ra,3bc00878 + 3bc014a0: 93fff0ef jal ra,3bc00dde + 3bc014a4: e95ff0ef jal ra,3bc01338 + 3bc014a8: 00009517 auipc a0,0x9 + 3bc014ac: 16050513 addi a0,a0,352 # 3bc0a608 + 3bc014b0: ea9fe0ef jal ra,3bc00358 + 3bc014b4: a001 j 3bc014b4 + +000000003bc014b6 : + 3bc014b6: 8082 ret + +000000003bc014b8 : + 3bc014b8: 00012797 auipc a5,0x12 + 3bc014bc: e4078793 addi a5,a5,-448 # 3bc132f8 + 3bc014c0: 6388 ld a0,0(a5) + 3bc014c2: 00b50733 add a4,a0,a1 + 3bc014c6: e398 sd a4,0(a5) + 3bc014c8: 00012797 auipc a5,0x12 + 3bc014cc: e387b783 ld a5,-456(a5) # 3bc13300 + 3bc014d0: 97ba add a5,a5,a4 + 3bc014d2: 02f76363 bltu a4,a5,3bc014f8 + 3bc014d6: 1141 addi sp,sp,-16 + 3bc014d8: 862e mv a2,a1 + 3bc014da: 00009517 auipc a0,0x9 + 3bc014de: 14650513 addi a0,a0,326 # 3bc0a620 + 3bc014e2: 00009597 auipc a1,0x9 + 3bc014e6: 2a658593 addi a1,a1,678 # 3bc0a788 <__func__.0> + 3bc014ea: e406 sd ra,8(sp) + 3bc014ec: e6dfe0ef jal ra,3bc00358 + 3bc014f0: 60a2 ld ra,8(sp) + 3bc014f2: 4501 li a0,0 + 3bc014f4: 0141 addi sp,sp,16 + 3bc014f6: 8082 ret + 3bc014f8: 8082 ret + +000000003bc014fa : + 3bc014fa: 711d addi sp,sp,-96 + 3bc014fc: 00000797 auipc a5,0x0 + 3bc01500: fbc78793 addi a5,a5,-68 # 3bc014b8 + 3bc01504: f83e sd a5,48(sp) + 3bc01506: 00000797 auipc a5,0x0 + 3bc0150a: fb078793 addi a5,a5,-80 # 3bc014b6 + 3bc0150e: ec86 sd ra,88(sp) + 3bc01510: e8a2 sd s0,80(sp) + 3bc01512: e4a6 sd s1,72(sp) + 3bc01514: e0ca sd s2,64(sp) + 3bc01516: ec36 sd a3,24(sp) + 3bc01518: f402 sd zero,40(sp) + 3bc0151a: fc3e sd a5,56(sp) + 3bc0151c: d202 sw zero,36(sp) + 3bc0151e: e19d bnez a1,3bc01544 + 3bc01520: 00009597 auipc a1,0x9 + 3bc01524: 27058593 addi a1,a1,624 # 3bc0a790 <__func__.1> + 3bc01528: 00009517 auipc a0,0x9 + 3bc0152c: 11850513 addi a0,a0,280 # 3bc0a640 + 3bc01530: e29fe0ef jal ra,3bc00358 + 3bc01534: 5429 li s0,-22 + 3bc01536: 60e6 ld ra,88(sp) + 3bc01538: 8522 mv a0,s0 + 3bc0153a: 6446 ld s0,80(sp) + 3bc0153c: 64a6 ld s1,72(sp) + 3bc0153e: 6906 ld s2,64(sp) + 3bc01540: 6125 addi sp,sp,96 + 3bc01542: 8082 ret + 3bc01544: 20500793 li a5,517 + 3bc01548: 07da slli a5,a5,0x16 + 3bc0154a: 842a mv s0,a0 + 3bc0154c: 00012717 auipc a4,0x12 + 3bc01550: daf73623 sd a5,-596(a4) # 3bc132f8 + 3bc01554: 84ae mv s1,a1 + 3bc01556: 001007b7 lui a5,0x100 + 3bc0155a: 85aa mv a1,a0 + 3bc0155c: 00009517 auipc a0,0x9 + 3bc01560: 10450513 addi a0,a0,260 # 3bc0a660 + 3bc01564: 8932 mv s2,a2 + 3bc01566: 00012717 auipc a4,0x12 + 3bc0156a: d8f73d23 sd a5,-614(a4) # 3bc13300 + 3bc0156e: debfe0ef jal ra,3bc00358 + 3bc01572: 67e2 ld a5,24(sp) + 3bc01574: 4611 li a2,4 + 3bc01576: 00590593 addi a1,s2,5 + 3bc0157a: 17ed addi a5,a5,-5 + 3bc0157c: 1008 addi a0,sp,32 + 3bc0157e: ec3e sd a5,24(sp) + 3bc01580: cecff0ef jal ra,3bc00a6c + 3bc01584: 67e2 ld a5,24(sp) + 3bc01586: 02016583 lwu a1,32(sp) + 3bc0158a: 00009517 auipc a0,0x9 + 3bc0158e: 0ee50513 addi a0,a0,238 # 3bc0a678 + 3bc01592: 17e1 addi a5,a5,-8 + 3bc01594: f42e sd a1,40(sp) + 3bc01596: ec3e sd a5,24(sp) + 3bc01598: dc1fe0ef jal ra,3bc00358 + 3bc0159c: 181c addi a5,sp,48 + 3bc0159e: e03e sd a5,0(sp) + 3bc015a0: 8522 mv a0,s0 + 3bc015a2: 02410893 addi a7,sp,36 + 3bc015a6: 4805 li a6,1 + 3bc015a8: 4795 li a5,5 + 3bc015aa: 874a mv a4,s2 + 3bc015ac: 0834 addi a3,sp,24 + 3bc015ae: 00d90613 addi a2,s2,13 + 3bc015b2: 102c addi a1,sp,40 + 3bc015b4: 5f5040ef jal ra,3bc063a8 + 3bc015b8: 842a mv s0,a0 + 3bc015ba: c919 beqz a0,3bc015d0 + 3bc015bc: 5612 lw a2,36(sp) + 3bc015be: 85aa mv a1,a0 + 3bc015c0: 00009517 auipc a0,0x9 + 3bc015c4: 0d850513 addi a0,a0,216 # 3bc0a698 + 3bc015c8: d91fe0ef jal ra,3bc00358 + 3bc015cc: 5449 li s0,-14 + 3bc015ce: b7a5 j 3bc01536 + 3bc015d0: 75a2 ld a1,40(sp) + 3bc015d2: 00009517 auipc a0,0x9 + 3bc015d6: 0ee50513 addi a0,a0,238 # 3bc0a6c0 + 3bc015da: e08c sd a1,0(s1) + 3bc015dc: d7dfe0ef jal ra,3bc00358 + 3bc015e0: bf99 j 3bc01536 + +000000003bc015e2 : + 3bc015e2: 85aa mv a1,a0 + 3bc015e4: 4501 li a0,0 + 3bc015e6: bdc9 j 3bc014b8 + +000000003bc015e8 : + 3bc015e8: 02b50633 mul a2,a0,a1 + 3bc015ec: 1101 addi sp,sp,-32 + 3bc015ee: e822 sd s0,16(sp) + 3bc015f0: ec06 sd ra,24(sp) + 3bc015f2: 8532 mv a0,a2 + 3bc015f4: e432 sd a2,8(sp) + 3bc015f6: fedff0ef jal ra,3bc015e2 + 3bc015fa: 842a mv s0,a0 + 3bc015fc: c509 beqz a0,3bc01606 + 3bc015fe: 6622 ld a2,8(sp) + 3bc01600: 4581 li a1,0 + 3bc01602: c10ff0ef jal ra,3bc00a12 + 3bc01606: 60e2 ld ra,24(sp) + 3bc01608: 8522 mv a0,s0 + 3bc0160a: 6442 ld s0,16(sp) + 3bc0160c: 6105 addi sp,sp,32 + 3bc0160e: 8082 ret + +000000003bc01610 : + 3bc01610: 8082 ret + +000000003bc01612 : + 3bc01612: 20500793 li a5,517 + 3bc01616: 715d addi sp,sp,-80 + 3bc01618: 07da slli a5,a5,0x16 + 3bc0161a: e0a2 sd s0,64(sp) + 3bc0161c: f84a sd s2,48(sp) + 3bc0161e: 00012717 auipc a4,0x12 + 3bc01622: ccf73d23 sd a5,-806(a4) # 3bc132f8 + 3bc01626: 842a mv s0,a0 + 3bc01628: 001007b7 lui a5,0x100 + 3bc0162c: 892e mv s2,a1 + 3bc0162e: 85aa mv a1,a0 + 3bc01630: 00009517 auipc a0,0x9 + 3bc01634: 0a850513 addi a0,a0,168 # 3bc0a6d8 + 3bc01638: e486 sd ra,72(sp) + 3bc0163a: e436 sd a3,8(sp) + 3bc0163c: 00012717 auipc a4,0x12 + 3bc01640: ccf73223 sd a5,-828(a4) # 3bc13300 + 3bc01644: fc26 sd s1,56(sp) + 3bc01646: f44e sd s3,40(sp) + 3bc01648: 89b2 mv s3,a2 + 3bc0164a: d0ffe0ef jal ra,3bc00358 + 3bc0164e: 06400593 li a1,100 + 3bc01652: 0828 addi a0,sp,24 + 3bc01654: 38b050ef jal ra,3bc071de + 3bc01658: 84aa mv s1,a0 + 3bc0165a: 1b7050ef jal ra,3bc07010 + 3bc0165e: 2501 sext.w a0,a0 + 3bc01660: c105 beqz a0,3bc01680 + 3bc01662: 85a6 mv a1,s1 + 3bc01664: 00009517 auipc a0,0x9 + 3bc01668: 08c50513 addi a0,a0,140 # 3bc0a6f0 + 3bc0166c: cedfe0ef jal ra,3bc00358 + 3bc01670: 557d li a0,-1 + 3bc01672: 60a6 ld ra,72(sp) + 3bc01674: 6406 ld s0,64(sp) + 3bc01676: 74e2 ld s1,56(sp) + 3bc01678: 7942 ld s2,48(sp) + 3bc0167a: 79a2 ld s3,40(sp) + 3bc0167c: 6161 addi sp,sp,80 + 3bc0167e: 8082 ret + 3bc01680: 6562 ld a0,24(sp) + 3bc01682: 4781 li a5,0 + 3bc01684: 0038 addi a4,sp,8 + 3bc01686: 85a2 mv a1,s0 + 3bc01688: 86ce mv a3,s3 + 3bc0168a: 864a mv a2,s2 + 3bc0168c: 383050ef jal ra,3bc0720e + 3bc01690: 6622 ld a2,8(sp) + 3bc01692: 00093583 ld a1,0(s2) + 3bc01696: 86aa mv a3,a0 + 3bc01698: 842a mv s0,a0 + 3bc0169a: 00009517 auipc a0,0x9 + 3bc0169e: 06e50513 addi a0,a0,110 # 3bc0a708 + 3bc016a2: cb7fe0ef jal ra,3bc00358 + 3bc016a6: 8526 mv a0,s1 + 3bc016a8: 169050ef jal ra,3bc07010 + 3bc016ac: 0005079b sext.w a5,a0 + 3bc016b0: 4501 li a0,0 + 3bc016b2: d3e1 beqz a5,3bc01672 + 3bc016b4: 85a2 mv a1,s0 + 3bc016b6: 00009517 auipc a0,0x9 + 3bc016ba: 07a50513 addi a0,a0,122 # 3bc0a730 + 3bc016be: b77d j 3bc0166c + +000000003bc016c0 : + 3bc016c0: 7139 addi sp,sp,-64 + 3bc016c2: 87ba mv a5,a4 + 3bc016c4: ec4e sd s3,24(sp) + 3bc016c6: e852 sd s4,16(sp) + 3bc016c8: e456 sd s5,8(sp) + 3bc016ca: 89b2 mv s3,a2 + 3bc016cc: 8a36 mv s4,a3 + 3bc016ce: 8aba mv s5,a4 + 3bc016d0: 8736 mv a4,a3 + 3bc016d2: 86b2 mv a3,a2 + 3bc016d4: 6190 ld a2,0(a1) + 3bc016d6: f426 sd s1,40(sp) + 3bc016d8: f04a sd s2,32(sp) + 3bc016da: 84ae mv s1,a1 + 3bc016dc: 892a mv s2,a0 + 3bc016de: 85aa mv a1,a0 + 3bc016e0: 00009517 auipc a0,0x9 + 3bc016e4: 07050513 addi a0,a0,112 # 3bc0a750 + 3bc016e8: fc06 sd ra,56(sp) + 3bc016ea: f822 sd s0,48(sp) + 3bc016ec: c6dfe0ef jal ra,3bc00358 + 3bc016f0: 4785 li a5,1 + 3bc016f2: 02fa8f63 beq s5,a5,3bc01730 + 3bc016f6: 4789 li a5,2 + 3bc016f8: 5429 li s0,-22 + 3bc016fa: 00fa9963 bne s5,a5,3bc0170c + 3bc016fe: 86d2 mv a3,s4 + 3bc01700: 864e mv a2,s3 + 3bc01702: 85a6 mv a1,s1 + 3bc01704: 854a mv a0,s2 + 3bc01706: f0dff0ef jal ra,3bc01612 + 3bc0170a: 842a mv s0,a0 + 3bc0170c: 608c ld a1,0(s1) + 3bc0170e: 8622 mv a2,s0 + 3bc01710: 00009517 auipc a0,0x9 + 3bc01714: 06050513 addi a0,a0,96 # 3bc0a770 + 3bc01718: c41fe0ef jal ra,3bc00358 + 3bc0171c: 70e2 ld ra,56(sp) + 3bc0171e: 8522 mv a0,s0 + 3bc01720: 7442 ld s0,48(sp) + 3bc01722: 74a2 ld s1,40(sp) + 3bc01724: 7902 ld s2,32(sp) + 3bc01726: 69e2 ld s3,24(sp) + 3bc01728: 6a42 ld s4,16(sp) + 3bc0172a: 6aa2 ld s5,8(sp) + 3bc0172c: 6121 addi sp,sp,64 + 3bc0172e: 8082 ret + 3bc01730: 86d2 mv a3,s4 + 3bc01732: 864e mv a2,s3 + 3bc01734: 85a6 mv a1,s1 + 3bc01736: 854a mv a0,s2 + 3bc01738: dc3ff0ef jal ra,3bc014fa + 3bc0173c: b7f9 j 3bc0170a + +000000003bc0173e : + 3bc0173e: 4108 lw a0,0(a0) + 3bc01740: 2501 sext.w a0,a0 + 3bc01742: 8082 ret + +000000003bc01744 : + 3bc01744: c188 sw a0,0(a1) + 3bc01746: 8082 ret + +000000003bc01748 : + 3bc01748: 8082 ret + +000000003bc0174a : + 3bc0174a: 00012717 auipc a4,0x12 + 3bc0174e: cc170713 addi a4,a4,-831 # 3bc1340b + 3bc01752: 00074783 lbu a5,0(a4) + 3bc01756: eb89 bnez a5,3bc01768 + 3bc01758: 0000a517 auipc a0,0xa + 3bc0175c: d9053503 ld a0,-624(a0) # 3bc0b4e8 + 3bc01760: 2785 addiw a5,a5,1 + 3bc01762: 00f70023 sb a5,0(a4) + 3bc01766: 8082 ret + 3bc01768: 4685 li a3,1 + 3bc0176a: 00d79763 bne a5,a3,3bc01778 + 3bc0176e: 0000a517 auipc a0,0xa + 3bc01772: d8253503 ld a0,-638(a0) # 3bc0b4f0 + 3bc01776: b7ed j 3bc01760 + 3bc01778: 0000a517 auipc a0,0xa + 3bc0177c: d8053503 ld a0,-640(a0) # 3bc0b4f8 + 3bc01780: b7c5 j 3bc01760 + +000000003bc01782 : + 3bc01782: 8082 ret + +000000003bc01784 : + 3bc01784: 698c ld a1,16(a1) + 3bc01786: 00012517 auipc a0,0x12 + 3bc0178a: b8253503 ld a0,-1150(a0) # 3bc13308 + 3bc0178e: 1141 addi sp,sp,-16 + 3bc01790: 461d li a2,7 + 3bc01792: 0511 addi a0,a0,4 + 3bc01794: e406 sd ra,8(sp) + 3bc01796: ad6ff0ef jal ra,3bc00a6c + 3bc0179a: 60a2 ld ra,8(sp) + 3bc0179c: 0141 addi sp,sp,16 + 3bc0179e: 8082 ret + +000000003bc017a0 : + 3bc017a0: 00009597 auipc a1,0x9 + 3bc017a4: 40058593 addi a1,a1,1024 # 3bc0aba0 <__func__.5> + 3bc017a8: 00009517 auipc a0,0x9 + 3bc017ac: ff850513 addi a0,a0,-8 # 3bc0a7a0 <__func__.1+0x10> + 3bc017b0: ba9fe06f j 3bc00358 + +000000003bc017b4 : + 3bc017b4: 00012797 auipc a5,0x12 + 3bc017b8: c40788a3 sb zero,-943(a5) # 3bc13405 + 3bc017bc: 4785 li a5,1 + 3bc017be: 00012717 auipc a4,0x12 + 3bc017c2: c4f706a3 sb a5,-947(a4) # 3bc1340b + 3bc017c6: 00009597 auipc a1,0x9 + 3bc017ca: 3ca58593 addi a1,a1,970 # 3bc0ab90 <__func__.4> + 3bc017ce: 00012797 auipc a5,0x12 + 3bc017d2: c2078ca3 sb zero,-967(a5) # 3bc13407 + 3bc017d6: 00009517 auipc a0,0x9 + 3bc017da: fca50513 addi a0,a0,-54 # 3bc0a7a0 <__func__.1+0x10> + 3bc017de: b7bfe06f j 3bc00358 + +000000003bc017e2 : + 3bc017e2: 1141 addi sp,sp,-16 + 3bc017e4: 00009597 auipc a1,0x9 + 3bc017e8: 3a458593 addi a1,a1,932 # 3bc0ab88 <__func__.1> + 3bc017ec: 00009517 auipc a0,0x9 + 3bc017f0: fcc50513 addi a0,a0,-52 # 3bc0a7b8 <__func__.1+0x28> + 3bc017f4: e406 sd ra,8(sp) + 3bc017f6: b63fe0ef jal ra,3bc00358 + 3bc017fa: 60a2 ld ra,8(sp) + 3bc017fc: 0000a797 auipc a5,0xa + 3bc01800: dc07b223 sd zero,-572(a5) # 3bc0b5c0 + 3bc01804: 0141 addi sp,sp,16 + 3bc01806: 8082 ret + +000000003bc01808 : + 3bc01808: 1141 addi sp,sp,-16 + 3bc0180a: e022 sd s0,0(sp) + 3bc0180c: 00009597 auipc a1,0x9 + 3bc01810: 37458593 addi a1,a1,884 # 3bc0ab80 <__func__.0> + 3bc01814: 842a mv s0,a0 + 3bc01816: 00009517 auipc a0,0x9 + 3bc0181a: fa250513 addi a0,a0,-94 # 3bc0a7b8 <__func__.1+0x28> + 3bc0181e: e406 sd ra,8(sp) + 3bc01820: b39fe0ef jal ra,3bc00358 + 3bc01824: 0000a797 auipc a5,0xa + 3bc01828: d9c78793 addi a5,a5,-612 # 3bc0b5c0 + 3bc0182c: 6398 ld a4,0(a5) + 3bc0182e: cf01 beqz a4,3bc01846 + 3bc01830: 00009517 auipc a0,0x9 + 3bc01834: f9850513 addi a0,a0,-104 # 3bc0a7c8 <__func__.1+0x38> + 3bc01838: b21fe0ef jal ra,3bc00358 + 3bc0183c: 60a2 ld ra,8(sp) + 3bc0183e: 6402 ld s0,0(sp) + 3bc01840: 4501 li a0,0 + 3bc01842: 0141 addi sp,sp,16 + 3bc01844: 8082 ret + 3bc01846: e380 sd s0,0(a5) + 3bc01848: bfd5 j 3bc0183c + +000000003bc0184a : + 3bc0184a: 1101 addi sp,sp,-32 + 3bc0184c: e822 sd s0,16(sp) + 3bc0184e: 842a mv s0,a0 + 3bc01850: 852e mv a0,a1 + 3bc01852: e42e sd a1,8(sp) + 3bc01854: ec06 sd ra,24(sp) + 3bc01856: b04ff0ef jal ra,3bc00b5a + 3bc0185a: 0506 slli a0,a0,0x1 + 3bc0185c: 0025071b addiw a4,a0,2 + 3bc01860: 87a2 mv a5,s0 + 3bc01862: 1827d70b sbia a4,(a5),2,0 + 3bc01866: 470d li a4,3 + 3bc01868: 00e400a3 sb a4,1(s0) # e000001 + 3bc0186c: 06400713 li a4,100 + 3bc01870: 65a2 ld a1,8(sp) + 3bc01872: 00a77463 bgeu a4,a0,3bc0187a + 3bc01876: 06400513 li a0,100 + 3bc0187a: 4701 li a4,0 + 3bc0187c: 00171693 slli a3,a4,0x1 + 3bc01880: 00a6e663 bltu a3,a0,3bc0188c + 3bc01884: 60e2 ld ra,24(sp) + 3bc01886: 6442 ld s0,16(sp) + 3bc01888: 6105 addi sp,sp,32 + 3bc0188a: 8082 ret + 3bc0188c: 80e5c68b lrbu a3,a1,a4,0 + 3bc01890: 0705 addi a4,a4,1 + 3bc01892: 1827d68b sbia a3,(a5),2,0 + 3bc01896: fe078fa3 sb zero,-1(a5) + 3bc0189a: b7cd j 3bc0187c + +000000003bc0189c : + 3bc0189c: 5d98 lw a4,56(a1) + 3bc0189e: fc600793 li a5,-58 + 3bc018a2: 22f70663 beq a4,a5,3bc01ace + 3bc018a6: 699c ld a5,16(a1) + 3bc018a8: 7179 addi sp,sp,-48 + 3bc018aa: e052 sd s4,0(sp) + 3bc018ac: f406 sd ra,40(sp) + 3bc018ae: f022 sd s0,32(sp) + 3bc018b0: ec26 sd s1,24(sp) + 3bc018b2: e84a sd s2,16(sp) + 3bc018b4: e44e sd s3,8(sp) + 3bc018b6: 0037c403 lbu s0,3(a5) + 3bc018ba: 0047c703 lbu a4,4(a5) + 3bc018be: 0017c483 lbu s1,1(a5) + 3bc018c2: 1402 slli s0,s0,0x20 + 3bc018c4: 0762 slli a4,a4,0x18 + 3bc018c6: 943a add s0,s0,a4 + 3bc018c8: 0077c703 lbu a4,7(a5) + 3bc018cc: 0027c603 lbu a2,2(a5) + 3bc018d0: 0084949b slliw s1,s1,0x8 + 3bc018d4: 943a add s0,s0,a4 + 3bc018d6: 0057c703 lbu a4,5(a5) + 3bc018da: 9e25 addw a2,a2,s1 + 3bc018dc: 00012a17 auipc s4,0x12 + 3bc018e0: a4ca0a13 addi s4,s4,-1460 # 3bc13328 + 3bc018e4: 0742 slli a4,a4,0x10 + 3bc018e6: 943a add s0,s0,a4 + 3bc018e8: 0067c703 lbu a4,6(a5) + 3bc018ec: 000a3583 ld a1,0(s4) + 3bc018f0: 84b2 mv s1,a2 + 3bc018f2: 0722 slli a4,a4,0x8 + 3bc018f4: 943a add s0,s0,a4 + 3bc018f6: ee05 bnez a2,3bc0192e + 3bc018f8: e81d bnez s0,3bc0192e + 3bc018fa: 00012797 auipc a5,0x12 + 3bc018fe: a267b783 ld a5,-1498(a5) # 3bc13320 + 3bc01902: 00012717 auipc a4,0x12 + 3bc01906: ae672703 lw a4,-1306(a4) # 3bc133e8 + 3bc0190a: 00012517 auipc a0,0x12 + 3bc0190e: a3e53503 ld a0,-1474(a0) # 3bc13348 + 3bc01912: cf98 sw a4,24(a5) + 3bc01914: 7118 ld a4,32(a0) + 3bc01916: 7402 ld s0,32(sp) + 3bc01918: 70a2 ld ra,40(sp) + 3bc0191a: 64e2 ld s1,24(sp) + 3bc0191c: 6942 ld s2,16(sp) + 3bc0191e: 69a2 ld s3,8(sp) + 3bc01920: 6a02 ld s4,0(sp) + 3bc01922: 7318 ld a4,32(a4) + 3bc01924: eb8c sd a1,16(a5) + 3bc01926: cfcc sw a1,28(a5) + 3bc01928: 85be mv a1,a5 + 3bc0192a: 6145 addi sp,sp,48 + 3bc0192c: 8702 jr a4 + 3bc0192e: 0007c903 lbu s2,0(a5) + 3bc01932: 4501 li a0,0 + 3bc01934: 5d3020ef jal ra,3bc04706 + 3bc01938: 4789 li a5,2 + 3bc0193a: 89aa mv s3,a0 + 3bc0193c: 0ef90763 beq s2,a5,3bc01a2a + 3bc01940: 0327e363 bltu a5,s2,3bc01966 + 3bc01944: 0c091863 bnez s2,3bc01a14 + 3bc01948: 000a3583 ld a1,0(s4) + 3bc0194c: ff84861b addiw a2,s1,-8 + 3bc01950: 00012517 auipc a0,0x12 + 3bc01954: a0053503 ld a0,-1536(a0) # 3bc13350 + 3bc01958: 7c06360b extu a2,a2,31,0 + 3bc0195c: 05a1 addi a1,a1,8 + 3bc0195e: 9522 add a0,a0,s0 + 3bc01960: 90cff0ef jal ra,3bc00a6c + 3bc01964: a021 j 3bc0196c + 3bc01966: 478d li a5,3 + 3bc01968: 0ef90163 beq s2,a5,3bc01a4a + 3bc0196c: 0000a417 auipc s0,0xa + 3bc01970: d2440413 addi s0,s0,-732 # 3bc0b690 + 3bc01974: 6008 ld a0,0(s0) + 3bc01976: 4641 li a2,16 + 3bc01978: 4581 li a1,0 + 3bc0197a: 898ff0ef jal ra,3bc00a12 + 3bc0197e: 601c ld a5,0(s0) + 3bc01980: 00012617 auipc a2,0x12 + 3bc01984: a8460613 addi a2,a2,-1404 # 3bc13404 + 3bc01988: 00064703 lbu a4,0(a2) + 3bc0198c: 0089951b slliw a0,s3,0x8 + 3bc01990: 00012697 auipc a3,0x12 + 3bc01994: a506a683 lw a3,-1456(a3) # 3bc133e0 + 3bc01998: 0089d99b srliw s3,s3,0x8 + 3bc0199c: 01356533 or a0,a0,s3 + 3bc019a0: 00012497 auipc s1,0x12 + 3bc019a4: 97848493 addi s1,s1,-1672 # 3bc13318 + 3bc019a8: 9006968b revw a3,a3 + 3bc019ac: 00a79023 sh a0,0(a5) + 3bc019b0: 00a79123 sh a0,2(a5) + 3bc019b4: c794 sw a3,8(a5) + 3bc019b6: 6088 ld a0,0(s1) + 3bc019b8: 00012697 auipc a3,0x12 + 3bc019bc: a2c6a683 lw a3,-1492(a3) # 3bc133e4 + 3bc019c0: 00e783a3 sb a4,7(a5) + 3bc019c4: 9006968b revw a3,a3 + 3bc019c8: 2705 addiw a4,a4,1 + 3bc019ca: 01278323 sb s2,6(a5) + 3bc019ce: 00079223 sh zero,4(a5) + 3bc019d2: c7d4 sw a3,12(a5) + 3bc019d4: 00e60023 sb a4,0(a2) + 3bc019d8: 4581 li a1,0 + 3bc019da: 04000613 li a2,64 + 3bc019de: 834ff0ef jal ra,3bc00a12 + 3bc019e2: 608c ld a1,0(s1) + 3bc019e4: 47c1 li a5,16 + 3bc019e6: 00012517 auipc a0,0x12 + 3bc019ea: 95a53503 ld a0,-1702(a0) # 3bc13340 + 3bc019ee: cd9c sw a5,24(a1) + 3bc019f0: 601c ld a5,0(s0) + 3bc019f2: 7402 ld s0,32(sp) + 3bc019f4: 70a2 ld ra,40(sp) + 3bc019f6: e99c sd a5,16(a1) + 3bc019f8: cddc sw a5,28(a1) + 3bc019fa: 00000797 auipc a5,0x0 + 3bc019fe: 15c78793 addi a5,a5,348 # 3bc01b56 + 3bc01a02: f59c sd a5,40(a1) + 3bc01a04: 711c ld a5,32(a0) + 3bc01a06: 64e2 ld s1,24(sp) + 3bc01a08: 6942 ld s2,16(sp) + 3bc01a0a: 69a2 ld s3,8(sp) + 3bc01a0c: 6a02 ld s4,0(sp) + 3bc01a0e: 739c ld a5,32(a5) + 3bc01a10: 6145 addi sp,sp,48 + 3bc01a12: 8782 jr a5 + 3bc01a14: 0e0007b7 lui a5,0xe000 + 3bc01a18: 0791 addi a5,a5,4 + 3bc01a1a: f4f419e3 bne s0,a5,3bc0196c + 3bc01a1e: 000a3583 ld a1,0(s4) + 3bc01a22: 4611 li a2,4 + 3bc01a24: 8522 mv a0,s0 + 3bc01a26: 05a1 addi a1,a1,8 + 3bc01a28: bf25 j 3bc01960 + 3bc01a2a: 00009517 auipc a0,0x9 + 3bc01a2e: da650513 addi a0,a0,-602 # 3bc0a7d0 <__func__.1+0x40> + 3bc01a32: 927fe0ef jal ra,3bc00358 + 3bc01a36: 00012797 auipc a5,0x12 + 3bc01a3a: 9c078723 sb zero,-1586(a5) # 3bc13404 + 3bc01a3e: 4785 li a5,1 + 3bc01a40: 00012717 auipc a4,0x12 + 3bc01a44: 9cf70323 sb a5,-1594(a4) # 3bc13406 + 3bc01a48: b715 j 3bc0196c + 3bc01a4a: 000a3583 ld a1,0(s4) + 3bc01a4e: ff84861b addiw a2,s1,-8 + 3bc01a52: 4501 li a0,0 + 3bc01a54: 05a1 addi a1,a1,8 + 3bc01a56: 4b1020ef jal ra,3bc04706 + 3bc01a5a: 842a mv s0,a0 + 3bc01a5c: 00009517 auipc a0,0x9 + 3bc01a60: d8c50513 addi a0,a0,-628 # 3bc0a7e8 <__func__.1+0x58> + 3bc01a64: 8f5fe0ef jal ra,3bc00358 + 3bc01a68: 67b1 lui a5,0xc + 3bc01a6a: 2401 sext.w s0,s0 + 3bc01a6c: 28378793 addi a5,a5,643 # c283 <__BSS_SIZE__+0x6673> + 3bc01a70: 02f41a63 bne s0,a5,3bc01aa4 + 3bc01a74: 00012797 auipc a5,0x12 + 3bc01a78: 98078823 sb zero,-1648(a5) # 3bc13404 + 3bc01a7c: 00012797 auipc a5,0x12 + 3bc01a80: 98c78793 addi a5,a5,-1652 # 3bc13408 + 3bc01a84: 4705 li a4,1 + 3bc01a86: 00e78023 sb a4,0(a5) + 3bc01a8a: 0e000737 lui a4,0xe000 + 3bc01a8e: 00072223 sw zero,4(a4) # e000004 + 3bc01a92: 0007c583 lbu a1,0(a5) + 3bc01a96: 00009517 auipc a0,0x9 + 3bc01a9a: d5a50513 addi a0,a0,-678 # 3bc0a7f0 <__func__.1+0x60> + 3bc01a9e: 8bbfe0ef jal ra,3bc00358 + 3bc01aa2: b5e9 j 3bc0196c + 3bc01aa4: 00012797 auipc a5,0x12 + 3bc01aa8: 96078223 sb zero,-1692(a5) # 3bc13408 + 3bc01aac: 0e0007b7 lui a5,0xe000 + 3bc01ab0: 0007a223 sw zero,4(a5) # e000004 + 3bc01ab4: 00009517 auipc a0,0x9 + 3bc01ab8: d5450513 addi a0,a0,-684 # 3bc0a808 <__func__.1+0x78> + 3bc01abc: 89dfe0ef jal ra,3bc00358 + 3bc01ac0: 00009517 auipc a0,0x9 + 3bc01ac4: d6850513 addi a0,a0,-664 # 3bc0a828 <__func__.1+0x98> + 3bc01ac8: 891fe0ef jal ra,3bc00358 + 3bc01acc: b545 j 3bc0196c + 3bc01ace: 8082 ret + +000000003bc01ad0 : + 3bc01ad0: 7179 addi sp,sp,-48 + 3bc01ad2: f406 sd ra,40(sp) + 3bc01ad4: f022 sd s0,32(sp) + 3bc01ad6: ec26 sd s1,24(sp) + 3bc01ad8: e84a sd s2,16(sp) + 3bc01ada: e44e sd s3,8(sp) + 3bc01adc: 4789 li a5,2 + 3bc01ade: 02f50263 beq a0,a5,3bc01b02 + 3bc01ae2: 478d li a5,3 + 3bc01ae4: 54fd li s1,-1 + 3bc01ae6: 0000a417 auipc s0,0xa + 3bc01aea: a7240413 addi s0,s0,-1422 # 3bc0b558 + 3bc01aee: 00f50e63 beq a0,a5,3bc01b0a + 3bc01af2: 70a2 ld ra,40(sp) + 3bc01af4: 7402 ld s0,32(sp) + 3bc01af6: 6942 ld s2,16(sp) + 3bc01af8: 69a2 ld s3,8(sp) + 3bc01afa: 8526 mv a0,s1 + 3bc01afc: 64e2 ld s1,24(sp) + 3bc01afe: 6145 addi sp,sp,48 + 3bc01b00: 8082 ret + 3bc01b02: 0000a417 auipc s0,0xa + 3bc01b06: a0640413 addi s0,s0,-1530 # 3bc0b508 + 3bc01b0a: 892e mv s2,a1 + 3bc01b0c: 7884458b ldia a1,(s0),8,0 + 3bc01b10: 4481 li s1,0 + 3bc01b12: d1e5 beqz a1,3bc01af2 + 3bc01b14: 0005c983 lbu s3,0(a1) + 3bc01b18: 00990533 add a0,s2,s1 + 3bc01b1c: 864e mv a2,s3 + 3bc01b1e: f4ffe0ef jal ra,3bc00a6c + 3bc01b22: 7884458b ldia a1,(s0),8,0 + 3bc01b26: 009984bb addw s1,s3,s1 + 3bc01b2a: b7e5 j 3bc01b12 + +000000003bc01b2c : + 3bc01b2c: 5d98 lw a4,56(a1) + 3bc01b2e: 57ed li a5,-5 + 3bc01b30: 02f71263 bne a4,a5,3bc01b54 + 3bc01b34: 1141 addi sp,sp,-16 + 3bc01b36: 00009517 auipc a0,0x9 + 3bc01b3a: d0250513 addi a0,a0,-766 # 3bc0a838 <__func__.1+0xa8> + 3bc01b3e: e406 sd ra,8(sp) + 3bc01b40: 819fe0ef jal ra,3bc00358 + 3bc01b44: 60a2 ld ra,8(sp) + 3bc01b46: 4785 li a5,1 + 3bc01b48: 00012717 auipc a4,0x12 + 3bc01b4c: 8cf700a3 sb a5,-1855(a4) # 3bc13409 + 3bc01b50: 0141 addi sp,sp,16 + 3bc01b52: 8082 ret + 3bc01b54: 8082 ret + +000000003bc01b56 : + 3bc01b56: 5d98 lw a4,56(a1) + 3bc01b58: fc600793 li a5,-58 + 3bc01b5c: 04f70463 beq a4,a5,3bc01ba4 + 3bc01b60: 1141 addi sp,sp,-16 + 3bc01b62: e022 sd s0,0(sp) + 3bc01b64: 00011417 auipc s0,0x11 + 3bc01b68: 7c440413 addi s0,s0,1988 # 3bc13328 + 3bc01b6c: 6008 ld a0,0(s0) + 3bc01b6e: 4581 li a1,0 + 3bc01b70: 4621 li a2,8 + 3bc01b72: e406 sd ra,8(sp) + 3bc01b74: e9ffe0ef jal ra,3bc00a12 + 3bc01b78: 00011597 auipc a1,0x11 + 3bc01b7c: 7a85b583 ld a1,1960(a1) # 3bc13320 + 3bc01b80: 00012797 auipc a5,0x12 + 3bc01b84: 8687a783 lw a5,-1944(a5) # 3bc133e8 + 3bc01b88: cd9c sw a5,24(a1) + 3bc01b8a: 601c ld a5,0(s0) + 3bc01b8c: 00011517 auipc a0,0x11 + 3bc01b90: 7bc53503 ld a0,1980(a0) # 3bc13348 + 3bc01b94: 6402 ld s0,0(sp) + 3bc01b96: e99c sd a5,16(a1) + 3bc01b98: cddc sw a5,28(a1) + 3bc01b9a: 711c ld a5,32(a0) + 3bc01b9c: 60a2 ld ra,8(sp) + 3bc01b9e: 739c ld a5,32(a5) + 3bc01ba0: 0141 addi sp,sp,16 + 3bc01ba2: 8782 jr a5 + 3bc01ba4: 8082 ret + +000000003bc01ba6 : + 3bc01ba6: 7159 addi sp,sp,-112 + 3bc01ba8: e4ce sd s3,72(sp) + 3bc01baa: fc56 sd s5,56(sp) + 3bc01bac: 00011997 auipc s3,0x11 + 3bc01bb0: 78498993 addi s3,s3,1924 # 3bc13330 + 3bc01bb4: 00011a97 auipc s5,0x11 + 3bc01bb8: 784a8a93 addi s5,s5,1924 # 3bc13338 + 3bc01bbc: eca6 sd s1,88(sp) + 3bc01bbe: 000ab603 ld a2,0(s5) + 3bc01bc2: 84aa mv s1,a0 + 3bc01bc4: 0009b503 ld a0,0(s3) + 3bc01bc8: e0d2 sd s4,64(sp) + 3bc01bca: f486 sd ra,104(sp) + 3bc01bcc: f0a2 sd s0,96(sp) + 3bc01bce: e8ca sd s2,80(sp) + 3bc01bd0: f85a sd s6,48(sp) + 3bc01bd2: f45e sd s7,40(sp) + 3bc01bd4: f062 sd s8,32(sp) + 3bc01bd6: ec66 sd s9,24(sp) + 3bc01bd8: 0204a803 lw a6,32(s1) + 3bc01bdc: 0015c703 lbu a4,1(a1) + 3bc01be0: 0005c683 lbu a3,0(a1) + 3bc01be4: 0065da03 lhu s4,6(a1) + 3bc01be8: 0025d783 lhu a5,2(a1) + 3bc01bec: 00000597 auipc a1,0x0 + 3bc01bf0: f4058593 addi a1,a1,-192 # 3bc01b2c + 3bc01bf4: f60c sd a1,40(a2) + 3bc01bf6: ea08 sd a0,16(a2) + 3bc01bf8: ce48 sw a0,28(a2) + 3bc01bfa: 4589 li a1,2 + 3bc01bfc: 02b80763 beq a6,a1,3bc01c2a + 3bc01c00: 458d li a1,3 + 3bc01c02: 4905 li s2,1 + 3bc01c04: 06b81063 bne a6,a1,3bc01c64 + 3bc01c08: 0000ab17 auipc s6,0xa + 3bc01c0c: 8b8b0b13 addi s6,s6,-1864 # 3bc0b4c0 + 3bc01c10: 0000ab97 auipc s7,0xa + 3bc01c14: 8a0b8b93 addi s7,s7,-1888 # 3bc0b4b0 + 3bc01c18: 0606f593 andi a1,a3,96 + 3bc01c1c: c185 beqz a1,3bc01c3c + 3bc01c1e: 02000693 li a3,32 + 3bc01c22: 36d58463 beq a1,a3,3bc01f8a + 3bc01c26: 4901 li s2,0 + 3bc01c28: a835 j 3bc01c64 + 3bc01c2a: 0000ab17 auipc s6,0xa + 3bc01c2e: 876b0b13 addi s6,s6,-1930 # 3bc0b4a0 + 3bc01c32: 0000ab97 auipc s7,0xa + 3bc01c36: 85eb8b93 addi s7,s7,-1954 # 3bc0b490 + 3bc01c3a: bff9 j 3bc01c18 + 3bc01c3c: 4621 li a2,8 + 3bc01c3e: 32c70d63 beq a4,a2,3bc01f78 + 3bc01c42: 4625 li a2,9 + 3bc01c44: 24c70a63 beq a4,a2,3bc01e98 + 3bc01c48: 4619 li a2,6 + 3bc01c4a: 597d li s2,-1 + 3bc01c4c: 00c71c63 bne a4,a2,3bc01c64 + 3bc01c50: 8abd andi a3,a3,15 + 3bc01c52: 4705 li a4,1 + 3bc01c54: 02e69663 bne a3,a4,3bc01c80 + 3bc01c58: 00009517 auipc a0,0x9 + 3bc01c5c: bf850513 addi a0,a0,-1032 # 3bc0a850 <__func__.1+0xc0> + 3bc01c60: ef8fe0ef jal ra,3bc00358 + 3bc01c64: 70a6 ld ra,104(sp) + 3bc01c66: 7406 ld s0,96(sp) + 3bc01c68: 64e6 ld s1,88(sp) + 3bc01c6a: 69a6 ld s3,72(sp) + 3bc01c6c: 6a06 ld s4,64(sp) + 3bc01c6e: 7ae2 ld s5,56(sp) + 3bc01c70: 7b42 ld s6,48(sp) + 3bc01c72: 7ba2 ld s7,40(sp) + 3bc01c74: 7c02 ld s8,32(sp) + 3bc01c76: 6ce2 ld s9,24(sp) + 3bc01c78: 854a mv a0,s2 + 3bc01c7a: 6946 ld s2,80(sp) + 3bc01c7c: 6165 addi sp,sp,112 + 3bc01c7e: 8082 ret + 3bc01c80: f2dd bnez a3,3bc01c26 + 3bc01c82: 0087d71b srliw a4,a5,0x8 + 3bc01c86: 377d addiw a4,a4,-1 + 3bc01c88: 3c07360b extu a2,a4,15,0 + 3bc01c8c: 46b9 li a3,14 + 3bc01c8e: 0ac6e663 bltu a3,a2,3bc01d3a + 3bc01c92: 00009697 auipc a3,0x9 + 3bc01c96: c9268693 addi a3,a3,-878 # 3bc0a924 <__func__.1+0x194> + 3bc01c9a: 44c6c70b lrw a4,a3,a2,2 + 3bc01c9e: 9736 add a4,a4,a3 + 3bc01ca0: 8702 jr a4 + 3bc01ca2: 0000a417 auipc s0,0xa + 3bc01ca6: a5640413 addi s0,s0,-1450 # 3bc0b6f8 + 3bc01caa: 00045583 lhu a1,0(s0) + 3bc01cae: cd89 beqz a1,3bc01cc8 + 3bc01cb0: 00009517 auipc a0,0x9 + 3bc01cb4: bd050513 addi a0,a0,-1072 # 3bc0a880 <__func__.1+0xf0> + 3bc01cb8: ea0fe0ef jal ra,3bc00358 + 3bc01cbc: 00045783 lhu a5,0(s0) + 3bc01cc0: 0000a717 auipc a4,0xa + 3bc01cc4: 8ef71823 sh a5,-1808(a4) # 3bc0b5b0 + 3bc01cc8: 0009b503 ld a0,0(s3) + 3bc01ccc: 4649 li a2,18 + 3bc01cce: 0000a597 auipc a1,0xa + 3bc01cd2: 8da58593 addi a1,a1,-1830 # 3bc0b5a8 + 3bc01cd6: df7fe0ef jal ra,3bc00acc + 3bc01cda: 4449 li s0,18 + 3bc01cdc: 4905 li s2,1 + 3bc01cde: 6c88 ld a0,24(s1) + 3bc01ce0: 014427b3 slt a5,s0,s4 + 3bc01ce4: 40fa140b mveqz s0,s4,a5 + 3bc01ce8: 711c ld a5,32(a0) + 3bc01cea: 000ab583 ld a1,0(s5) + 3bc01cee: 739c ld a5,32(a5) + 3bc01cf0: cd80 sw s0,24(a1) + 3bc01cf2: 9782 jalr a5 + 3bc01cf4: f20909e3 beqz s2,3bc01c26 + 3bc01cf8: c00017b7 lui a5,0xc0001 + 3bc01cfc: 03000737 lui a4,0x3000 + 3bc01d00: 0795 addi a5,a5,5 + 3bc01d02: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc01d06: b705 j 3bc01c26 + 3bc01d08: 0ff7f793 andi a5,a5,255 + 3bc01d0c: 4709 li a4,2 + 3bc01d0e: 02e78863 beq a5,a4,3bc01d3e + 3bc01d12: 02f76163 bltu a4,a5,3bc01d34 + 3bc01d16: 00011597 auipc a1,0x11 + 3bc01d1a: 69258593 addi a1,a1,1682 # 3bc133a8 + 3bc01d1e: e789 bnez a5,3bc01d28 + 3bc01d20: 0000a597 auipc a1,0xa + 3bc01d24: 95858593 addi a1,a1,-1704 # 3bc0b678 + 3bc01d28: 0005c403 lbu s0,0(a1) + 3bc01d2c: 8622 mv a2,s0 + 3bc01d2e: 0009b503 ld a0,0(s3) + 3bc01d32: a215 j 3bc01e56 + 3bc01d34: 470d li a4,3 + 3bc01d36: 00e78963 beq a5,a4,3bc01d48 + 3bc01d3a: 597d li s2,-1 + 3bc01d3c: b725 j 3bc01c64 + 3bc01d3e: 00011597 auipc a1,0x11 + 3bc01d42: 61a58593 addi a1,a1,1562 # 3bc13358 + 3bc01d46: b7cd j 3bc01d28 + 3bc01d48: ea1fe0ef jal ra,3bc00be8 + 3bc01d4c: 00009597 auipc a1,0x9 + 3bc01d50: b9c58593 addi a1,a1,-1124 # 3bc0a8e8 <__func__.1+0x158> + 3bc01d54: e55d bnez a0,3bc01e02 + 3bc01d56: 00011b17 auipc s6,0x11 + 3bc01d5a: 6b4b0b13 addi s6,s6,1716 # 3bc1340a + 3bc01d5e: 000b4903 lbu s2,0(s6) + 3bc01d62: 08091263 bnez s2,3bc01de6 + 3bc01d66: 4641 li a2,16 + 3bc01d68: 4581 li a1,0 + 3bc01d6a: 00011517 auipc a0,0x11 + 3bc01d6e: 60e50513 addi a0,a0,1550 # 3bc13378 + 3bc01d72: 03050bb7 lui s7,0x3050 + 3bc01d76: c9dfe0ef jal ra,3bc00a12 + 3bc01d7a: 4401 li s0,0 + 3bc01d7c: 104b8b93 addi s7,s7,260 # 3050104 <__BSS_SIZE__+0x304a4f4> + 3bc01d80: 00009c97 auipc s9,0x9 + 3bc01d84: b10c8c93 addi s9,s9,-1264 # 3bc0a890 <__func__.1+0x100> + 3bc01d88: 4c11 li s8,4 + 3bc01d8a: 448bc60b lrw a2,s7,s0,2 + 3bc01d8e: 0004059b sext.w a1,s0 + 3bc01d92: 8566 mv a0,s9 + 3bc01d94: 2601 sext.w a2,a2 + 3bc01d96: 4481560b srw a2,sp,s0,2 + 3bc01d9a: dbefe0ef jal ra,3bc00358 + 3bc01d9e: 4481478b lrw a5,sp,s0,2 + 3bc01da2: c391 beqz a5,3bc01da6 + 3bc01da4: 4905 li s2,1 + 3bc01da6: 0405 addi s0,s0,1 + 3bc01da8: ff8411e3 bne s0,s8,3bc01d8a + 3bc01dac: 06090663 beqz s2,3bc01e18 + 3bc01db0: 858a mv a1,sp + 3bc01db2: 4641 li a2,16 + 3bc01db4: 4501 li a0,0 + 3bc01db6: 151020ef jal ra,3bc04706 + 3bc01dba: 0005041b sext.w s0,a0 + 3bc01dbe: 85a2 mv a1,s0 + 3bc01dc0: 00009517 auipc a0,0x9 + 3bc01dc4: ae850513 addi a0,a0,-1304 # 3bc0a8a8 <__func__.1+0x118> + 3bc01dc8: d90fe0ef jal ra,3bc00358 + 3bc01dcc: 4681 li a3,0 + 3bc01dce: 4641 li a2,16 + 3bc01dd0: 7c04358b extu a1,s0,31,0 + 3bc01dd4: 00011517 auipc a0,0x11 + 3bc01dd8: 5a450513 addi a0,a0,1444 # 3bc13378 + 3bc01ddc: bbdfe0ef jal ra,3bc00998 + 3bc01de0: 4785 li a5,1 + 3bc01de2: 00fb0023 sb a5,0(s6) + 3bc01de6: 00011597 auipc a1,0x11 + 3bc01dea: 59258593 addi a1,a1,1426 # 3bc13378 + 3bc01dee: 00009517 auipc a0,0x9 + 3bc01df2: aea50513 addi a0,a0,-1302 # 3bc0a8d8 <__func__.1+0x148> + 3bc01df6: d62fe0ef jal ra,3bc00358 + 3bc01dfa: 00011597 auipc a1,0x11 + 3bc01dfe: 57e58593 addi a1,a1,1406 # 3bc13378 + 3bc01e02: 00011517 auipc a0,0x11 + 3bc01e06: 58650513 addi a0,a0,1414 # 3bc13388 + 3bc01e0a: a41ff0ef jal ra,3bc0184a + 3bc01e0e: 00011597 auipc a1,0x11 + 3bc01e12: 57a58593 addi a1,a1,1402 # 3bc13388 + 3bc01e16: bf09 j 3bc01d28 + 3bc01e18: 00011517 auipc a0,0x11 + 3bc01e1c: 5d452503 lw a0,1492(a0) # 3bc133ec + 3bc01e20: bc2fe0ef jal ra,3bc001e2 + 3bc01e24: 0005041b sext.w s0,a0 + 3bc01e28: 85a2 mv a1,s0 + 3bc01e2a: 00009517 auipc a0,0x9 + 3bc01e2e: a9650513 addi a0,a0,-1386 # 3bc0a8c0 <__func__.1+0x130> + 3bc01e32: bf59 j 3bc01dc8 + 3bc01e34: 00009597 auipc a1,0x9 + 3bc01e38: 69c58593 addi a1,a1,1692 # 3bc0b4d0 + 3bc01e3c: 4615 li a2,5 + 3bc01e3e: 0025d403 lhu s0,2(a1) + 3bc01e42: c8bfe0ef jal ra,3bc00acc + 3bc01e46: 0009b503 ld a0,0(s3) + 3bc01e4a: 461d li a2,7 + 3bc01e4c: 00009597 auipc a1,0x9 + 3bc01e50: 69458593 addi a1,a1,1684 # 3bc0b4e0 + 3bc01e54: 0515 addi a0,a0,5 + 3bc01e56: c77fe0ef jal ra,3bc00acc + 3bc01e5a: dc0406e3 beqz s0,3bc01c26 + 3bc01e5e: a809 j 3bc01e70 + 3bc01e60: 4629 li a2,10 + 3bc01e62: 0000a597 auipc a1,0xa + 3bc01e66: 81e58593 addi a1,a1,-2018 # 3bc0b680 + 3bc01e6a: c63fe0ef jal ra,3bc00acc + 3bc01e6e: 4429 li s0,10 + 3bc01e70: 4901 li s2,0 + 3bc01e72: b5b5 j 3bc01cde + 3bc01e74: 00950593 addi a1,a0,9 + 3bc01e78: 8542 mv a0,a6 + 3bc01e7a: c57ff0ef jal ra,3bc01ad0 + 3bc01e7e: 2525 addiw a0,a0,9 + 3bc01e80: 3c05350b extu a0,a0,15,0 + 3bc01e84: 00009597 auipc a1,0x9 + 3bc01e88: 5c458593 addi a1,a1,1476 # 3bc0b448 + 3bc01e8c: 0005041b sext.w s0,a0 + 3bc01e90: 00a59123 sh a0,2(a1) + 3bc01e94: 4625 li a2,9 + 3bc01e96: bd61 j 3bc01d2e + 3bc01e98: 4705 li a4,1 + 3bc01e9a: 597d li s2,-1 + 3bc01e9c: dcf764e3 bltu a4,a5,3bc01c64 + 3bc01ea0: e385 bnez a5,3bc01ec0 + 3bc01ea2: 00011797 auipc a5,0x11 + 3bc01ea6: 560782a3 sb zero,1381(a5) # 3bc13407 + 3bc01eaa: 6080 ld s0,0(s1) + 3bc01eac: d6848de3 beq s1,s0,3bc01c26 + 3bc01eb0: 6c1c ld a5,24(s0) + 3bc01eb2: c789 beqz a5,3bc01ebc + 3bc01eb4: 701c ld a5,32(s0) + 3bc01eb6: 8522 mv a0,s0 + 3bc01eb8: 679c ld a5,8(a5) + 3bc01eba: 9782 jalr a5 + 3bc01ebc: 6000 ld s0,0(s0) + 3bc01ebe: b7fd j 3bc01eac + 3bc01ec0: 00011797 auipc a5,0x11 + 3bc01ec4: 54778793 addi a5,a5,1351 # 3bc13407 + 3bc01ec8: 0007c683 lbu a3,0(a5) + 3bc01ecc: d4e68de3 beq a3,a4,3bc01c26 + 3bc01ed0: 00e78023 sb a4,0(a5) + 3bc01ed4: 6080 ld s0,0(s1) + 3bc01ed6: 00009917 auipc s2,0x9 + 3bc01eda: a2290913 addi s2,s2,-1502 # 3bc0a8f8 <__func__.1+0x168> + 3bc01ede: 00848d63 beq s1,s0,3bc01ef8 + 3bc01ee2: 6c08 ld a0,24(s0) + 3bc01ee4: c141 beqz a0,3bc01f64 + 3bc01ee6: 85ca mv a1,s2 + 3bc01ee8: c57fe0ef jal ra,3bc00b3e + 3bc01eec: ed25 bnez a0,3bc01f64 + 3bc01eee: 701c ld a5,32(s0) + 3bc01ef0: 85de mv a1,s7 + 3bc01ef2: 8522 mv a0,s0 + 3bc01ef4: 639c ld a5,0(a5) + 3bc01ef6: 9782 jalr a5 + 3bc01ef8: 6080 ld s0,0(s1) + 3bc01efa: 00009917 auipc s2,0x9 + 3bc01efe: a0e90913 addi s2,s2,-1522 # 3bc0a908 <__func__.1+0x178> + 3bc01f02: 00848d63 beq s1,s0,3bc01f1c + 3bc01f06: 6c08 ld a0,24(s0) + 3bc01f08: c125 beqz a0,3bc01f68 + 3bc01f0a: 85ca mv a1,s2 + 3bc01f0c: c33fe0ef jal ra,3bc00b3e + 3bc01f10: ed21 bnez a0,3bc01f68 + 3bc01f12: 701c ld a5,32(s0) + 3bc01f14: 85da mv a1,s6 + 3bc01f16: 8522 mv a0,s0 + 3bc01f18: 639c ld a5,0(a5) + 3bc01f1a: 9782 jalr a5 + 3bc01f1c: 6080 ld s0,0(s1) + 3bc01f1e: 00009917 auipc s2,0x9 + 3bc01f22: 9fa90913 addi s2,s2,-1542 # 3bc0a918 <__func__.1+0x188> + 3bc01f26: 02848063 beq s1,s0,3bc01f46 + 3bc01f2a: 6c08 ld a0,24(s0) + 3bc01f2c: c121 beqz a0,3bc01f6c + 3bc01f2e: 85ca mv a1,s2 + 3bc01f30: c0ffe0ef jal ra,3bc00b3e + 3bc01f34: ed05 bnez a0,3bc01f6c + 3bc01f36: 701c ld a5,32(s0) + 3bc01f38: 00009597 auipc a1,0x9 + 3bc01f3c: 56058593 addi a1,a1,1376 # 3bc0b498 + 3bc01f40: 8522 mv a0,s0 + 3bc01f42: 639c ld a5,0(a5) + 3bc01f44: 9782 jalr a5 + 3bc01f46: 689c ld a5,16(s1) + 3bc01f48: 00009717 auipc a4,0x9 + 3bc01f4c: 50774703 lbu a4,1287(a4) # 3bc0b44f + 3bc01f50: 04077713 andi a4,a4,64 + 3bc01f54: 6b9c ld a5,16(a5) + 3bc01f56: cf09 beqz a4,3bc01f70 + 3bc01f58: 4585 li a1,1 + 3bc01f5a: cc0786e3 beqz a5,3bc01c26 + 3bc01f5e: 8526 mv a0,s1 + 3bc01f60: 9782 jalr a5 + 3bc01f62: b1d1 j 3bc01c26 + 3bc01f64: 6000 ld s0,0(s0) + 3bc01f66: bfa5 j 3bc01ede + 3bc01f68: 6000 ld s0,0(s0) + 3bc01f6a: bf61 j 3bc01f02 + 3bc01f6c: 6000 ld s0,0(s0) + 3bc01f6e: bf65 j 3bc01f26 + 3bc01f70: ca078be3 beqz a5,3bc01c26 + 3bc01f74: 4581 li a1,0 + 3bc01f76: b7e5 j 3bc01f5e + 3bc01f78: 4605 li a2,1 + 3bc01f7a: 00011597 auipc a1,0x11 + 3bc01f7e: 48d58593 addi a1,a1,1165 # 3bc13407 + 3bc01f82: b4bfe0ef jal ra,3bc00acc + 3bc01f86: 4405 li s0,1 + 3bc01f88: b5e5 j 3bc01e70 + 3bc01f8a: 02100693 li a3,33 + 3bc01f8e: 04d70263 beq a4,a3,3bc01fd2 + 3bc01f92: 02200693 li a3,34 + 3bc01f96: 02d70263 beq a4,a3,3bc01fba + 3bc01f9a: 4901 li s2,0 + 3bc01f9c: ccb714e3 bne a4,a1,3bc01c64 + 3bc01fa0: fffff797 auipc a5,0xfffff + 3bc01fa4: 7e478793 addi a5,a5,2020 # 3bc01784 + 3bc01fa8: 000a041b sext.w s0,s4 + 3bc01fac: f61c sd a5,40(a2) + 3bc01fae: 4785 li a5,1 + 3bc01fb0: 00011717 auipc a4,0x11 + 3bc01fb4: 44f70aa3 sb a5,1109(a4) # 3bc13405 + 3bc01fb8: b54d j 3bc01e5a + 3bc01fba: 00011717 auipc a4,0x11 + 3bc01fbe: 34e73703 ld a4,846(a4) # 3bc13308 + 3bc01fc2: 00f71623 sh a5,12(a4) + 3bc01fc6: 4785 li a5,1 + 3bc01fc8: 00011717 auipc a4,0x11 + 3bc01fcc: 42f70ea3 sb a5,1085(a4) # 3bc13405 + 3bc01fd0: b999 j 3bc01c26 + 3bc01fd2: 00011597 auipc a1,0x11 + 3bc01fd6: 3365b583 ld a1,822(a1) # 3bc13308 + 3bc01fda: 8652 mv a2,s4 + 3bc01fdc: 0591 addi a1,a1,4 + 3bc01fde: 000a041b sext.w s0,s4 + 3bc01fe2: aebfe0ef jal ra,3bc00acc + 3bc01fe6: b7e1 j 3bc01fae + +000000003bc01fe8 : + 3bc01fe8: 8082 ret + +000000003bc01fea : + 3bc01fea: 00011797 auipc a5,0x11 + 3bc01fee: 89678793 addi a5,a5,-1898 # 3bc12880 + 3bc01ff2: 00009717 auipc a4,0x9 + 3bc01ff6: 4ef73323 sd a5,1254(a4) # 3bc0b4d8 + 3bc01ffa: 00011797 auipc a5,0x11 + 3bc01ffe: c0678793 addi a5,a5,-1018 # 3bc12c00 + 3bc02002: 00009717 auipc a4,0x9 + 3bc02006: 4ef73f23 sd a5,1278(a4) # 3bc0b500 + 3bc0200a: 00011797 auipc a5,0x11 + 3bc0200e: a7678793 addi a5,a5,-1418 # 3bc12a80 + 3bc02012: 00009717 auipc a4,0x9 + 3bc02016: 4cf73b23 sd a5,1238(a4) # 3bc0b4e8 + 3bc0201a: 00011797 auipc a5,0x11 + 3bc0201e: ae678793 addi a5,a5,-1306 # 3bc12b00 + 3bc02022: 00009717 auipc a4,0x9 + 3bc02026: 4cf73723 sd a5,1230(a4) # 3bc0b4f0 + 3bc0202a: 00011797 auipc a5,0x11 + 3bc0202e: b5678793 addi a5,a5,-1194 # 3bc12b80 + 3bc02032: 00009717 auipc a4,0x9 + 3bc02036: 4cf73323 sd a5,1222(a4) # 3bc0b4f8 + 3bc0203a: 00011797 auipc a5,0x11 + 3bc0203e: dc678793 addi a5,a5,-570 # 3bc12e00 + 3bc02042: 00009717 auipc a4,0x9 + 3bc02046: 5cf73723 sd a5,1486(a4) # 3bc0b610 + 3bc0204a: 00011797 auipc a5,0x11 + 3bc0204e: 23678793 addi a5,a5,566 # 3bc13280 + 3bc02052: 00009717 auipc a4,0x9 + 3bc02056: 62f73f23 sd a5,1598(a4) # 3bc0b690 + 3bc0205a: 00010797 auipc a5,0x10 + 3bc0205e: 7a678793 addi a5,a5,1958 # 3bc12800 + 3bc02062: 00009717 auipc a4,0x9 + 3bc02066: 3ef73b23 sd a5,1014(a4) # 3bc0b458 + 3bc0206a: 00011797 auipc a5,0x11 + 3bc0206e: 25678793 addi a5,a5,598 # 3bc132c0 + 3bc02072: 00009717 auipc a4,0x9 + 3bc02076: 62f73323 sd a5,1574(a4) # 3bc0b698 + 3bc0207a: 00011797 auipc a5,0x11 + 3bc0207e: e0678793 addi a5,a5,-506 # 3bc12e80 + 3bc02082: 00009717 auipc a4,0x9 + 3bc02086: 5ef73723 sd a5,1518(a4) # 3bc0b670 + 3bc0208a: 8082 ret + +000000003bc0208c : + 3bc0208c: 1141 addi sp,sp,-16 + 3bc0208e: 00009597 auipc a1,0x9 + 3bc02092: 44a5b583 ld a1,1098(a1) # 3bc0b4d8 + 3bc02096: 00009517 auipc a0,0x9 + 3bc0209a: 8ca50513 addi a0,a0,-1846 # 3bc0a960 <__func__.1+0x1d0> + 3bc0209e: e406 sd ra,8(sp) + 3bc020a0: ab8fe0ef jal ra,3bc00358 + 3bc020a4: 00009597 auipc a1,0x9 + 3bc020a8: 45c5b583 ld a1,1116(a1) # 3bc0b500 + 3bc020ac: 00009517 auipc a0,0x9 + 3bc020b0: 8cc50513 addi a0,a0,-1844 # 3bc0a978 <__func__.1+0x1e8> + 3bc020b4: aa4fe0ef jal ra,3bc00358 + 3bc020b8: 00009597 auipc a1,0x9 + 3bc020bc: 4305b583 ld a1,1072(a1) # 3bc0b4e8 + 3bc020c0: 00009517 auipc a0,0x9 + 3bc020c4: 8d050513 addi a0,a0,-1840 # 3bc0a990 <__func__.1+0x200> + 3bc020c8: a90fe0ef jal ra,3bc00358 + 3bc020cc: 00009597 auipc a1,0x9 + 3bc020d0: 4245b583 ld a1,1060(a1) # 3bc0b4f0 + 3bc020d4: 00009517 auipc a0,0x9 + 3bc020d8: 8d450513 addi a0,a0,-1836 # 3bc0a9a8 <__func__.1+0x218> + 3bc020dc: a7cfe0ef jal ra,3bc00358 + 3bc020e0: 00009597 auipc a1,0x9 + 3bc020e4: 4185b583 ld a1,1048(a1) # 3bc0b4f8 + 3bc020e8: 00009517 auipc a0,0x9 + 3bc020ec: 8d850513 addi a0,a0,-1832 # 3bc0a9c0 <__func__.1+0x230> + 3bc020f0: a68fe0ef jal ra,3bc00358 + 3bc020f4: 00009597 auipc a1,0x9 + 3bc020f8: 51c5b583 ld a1,1308(a1) # 3bc0b610 + 3bc020fc: 00009517 auipc a0,0x9 + 3bc02100: 8dc50513 addi a0,a0,-1828 # 3bc0a9d8 <__func__.1+0x248> + 3bc02104: a54fe0ef jal ra,3bc00358 + 3bc02108: 00009597 auipc a1,0x9 + 3bc0210c: 5885b583 ld a1,1416(a1) # 3bc0b690 + 3bc02110: 00009517 auipc a0,0x9 + 3bc02114: 8e050513 addi a0,a0,-1824 # 3bc0a9f0 <__func__.1+0x260> + 3bc02118: a40fe0ef jal ra,3bc00358 + 3bc0211c: 00009597 auipc a1,0x9 + 3bc02120: 33c5b583 ld a1,828(a1) # 3bc0b458 + 3bc02124: 00009517 auipc a0,0x9 + 3bc02128: 8e450513 addi a0,a0,-1820 # 3bc0aa08 <__func__.1+0x278> + 3bc0212c: a2cfe0ef jal ra,3bc00358 + 3bc02130: 00009597 auipc a1,0x9 + 3bc02134: 5685b583 ld a1,1384(a1) # 3bc0b698 + 3bc02138: 00009517 auipc a0,0x9 + 3bc0213c: 8e850513 addi a0,a0,-1816 # 3bc0aa20 <__func__.1+0x290> + 3bc02140: a18fe0ef jal ra,3bc00358 + 3bc02144: 60a2 ld ra,8(sp) + 3bc02146: 00009597 auipc a1,0x9 + 3bc0214a: 52a5b583 ld a1,1322(a1) # 3bc0b670 + 3bc0214e: 00009517 auipc a0,0x9 + 3bc02152: 8ea50513 addi a0,a0,-1814 # 3bc0aa38 <__func__.1+0x2a8> + 3bc02156: 0141 addi sp,sp,16 + 3bc02158: a00fe06f j 3bc00358 + +000000003bc0215c : + 3bc0215c: 4501 li a0,0 + 3bc0215e: 3020106f j 3bc03460 + +000000003bc02162 : + 3bc02162: 7179 addi sp,sp,-48 + 3bc02164: f022 sd s0,32(sp) + 3bc02166: 00009417 auipc s0,0x9 + 3bc0216a: 45a40413 addi s0,s0,1114 # 3bc0b5c0 + 3bc0216e: 601c ld a5,0(s0) + 3bc02170: 00009597 auipc a1,0x9 + 3bc02174: 8e058593 addi a1,a1,-1824 # 3bc0aa50 <__func__.1+0x2c0> + 3bc02178: 00011517 auipc a0,0x11 + 3bc0217c: 23050513 addi a0,a0,560 # 3bc133a8 + 3bc02180: f406 sd ra,40(sp) + 3bc02182: ec26 sd s1,24(sp) + 3bc02184: e84a sd s2,16(sp) + 3bc02186: 6f84 ld s1,24(a5) + 3bc02188: e44e sd s3,8(sp) + 3bc0218a: ec0ff0ef jal ra,3bc0184a + 3bc0218e: 00011517 auipc a0,0x11 + 3bc02192: 1ca50513 addi a0,a0,458 # 3bc13358 + 3bc02196: 00009597 auipc a1,0x9 + 3bc0219a: 8c258593 addi a1,a1,-1854 # 3bc0aa58 <__func__.1+0x2c8> + 3bc0219e: eacff0ef jal ra,3bc0184a + 3bc021a2: 00009517 auipc a0,0x9 + 3bc021a6: 46e53503 ld a0,1134(a0) # 3bc0b610 + 3bc021aa: 03f57713 andi a4,a0,63 + 3bc021ae: 87aa mv a5,a0 + 3bc021b0: c709 beqz a4,3bc021ba + 3bc021b2: 04000793 li a5,64 + 3bc021b6: 9f99 subw a5,a5,a4 + 3bc021b8: 97aa add a5,a5,a0 + 3bc021ba: 00009997 auipc s3,0x9 + 3bc021be: 31e98993 addi s3,s3,798 # 3bc0b4d8 + 3bc021c2: 00011717 auipc a4,0x11 + 3bc021c6: 16f73723 sd a5,366(a4) # 3bc13330 + 3bc021ca: 0009b783 ld a5,0(s3) + 3bc021ce: 03f7f693 andi a3,a5,63 + 3bc021d2: c689 beqz a3,3bc021dc + 3bc021d4: 04000713 li a4,64 + 3bc021d8: 9f15 subw a4,a4,a3 + 3bc021da: 97ba add a5,a5,a4 + 3bc021dc: 00009917 auipc s2,0x9 + 3bc021e0: 32490913 addi s2,s2,804 # 3bc0b500 + 3bc021e4: 00011717 auipc a4,0x11 + 3bc021e8: 12f73623 sd a5,300(a4) # 3bc13310 + 3bc021ec: 00093783 ld a5,0(s2) + 3bc021f0: 03f7f693 andi a3,a5,63 + 3bc021f4: c689 beqz a3,3bc021fe + 3bc021f6: 04000713 li a4,64 + 3bc021fa: 9f15 subw a4,a4,a3 + 3bc021fc: 97ba add a5,a5,a4 + 3bc021fe: 08000613 li a2,128 + 3bc02202: 4581 li a1,0 + 3bc02204: 00011717 auipc a4,0x11 + 3bc02208: 12f73223 sd a5,292(a4) # 3bc13328 + 3bc0220c: 807fe0ef jal ra,3bc00a12 + 3bc02210: 0009b503 ld a0,0(s3) + 3bc02214: 20000613 li a2,512 + 3bc02218: 4581 li a1,0 + 3bc0221a: ff8fe0ef jal ra,3bc00a12 + 3bc0221e: 00093503 ld a0,0(s2) + 3bc02222: 20000613 li a2,512 + 3bc02226: 4581 li a1,0 + 3bc02228: feafe0ef jal ra,3bc00a12 + 3bc0222c: 709c ld a5,32(s1) + 3bc0222e: 8526 mv a0,s1 + 3bc02230: 6b9c ld a5,16(a5) + 3bc02232: 9782 jalr a5 + 3bc02234: 00011797 auipc a5,0x11 + 3bc02238: 10a7b223 sd a0,260(a5) # 3bc13338 + 3bc0223c: 601c ld a5,0(s0) + 3bc0223e: 53d8 lw a4,36(a5) + 3bc02240: 4791 li a5,4 + 3bc02242: 02e7e263 bltu a5,a4,3bc02266 + 3bc02246: 00009797 auipc a5,0x9 + 3bc0224a: 28a78793 addi a5,a5,650 # 3bc0b4d0 + 3bc0224e: 4731 li a4,12 + 3bc02250: 00e79123 sh a4,2(a5) + 3bc02254: 4705 li a4,1 + 3bc02256: 00e78223 sb a4,4(a5) + 3bc0225a: 20100793 li a5,513 + 3bc0225e: 00009717 auipc a4,0x9 + 3bc02262: 34f71623 sh a5,844(a4) # 3bc0b5aa + 3bc02266: 00009797 auipc a5,0x9 + 3bc0226a: 1f27b783 ld a5,498(a5) # 3bc0b458 + 3bc0226e: 00011717 auipc a4,0x11 + 3bc02272: 08f73d23 sd a5,154(a4) # 3bc13308 + 3bc02276: 000e1737 lui a4,0xe1 + 3bc0227a: c3d8 sw a4,4(a5) + 3bc0227c: 4721 li a4,8 + 3bc0227e: 00079423 sh zero,8(a5) + 3bc02282: 00e78523 sb a4,10(a5) + 3bc02286: 70a2 ld ra,40(sp) + 3bc02288: 7402 ld s0,32(sp) + 3bc0228a: 00079623 sh zero,12(a5) + 3bc0228e: 64e2 ld s1,24(sp) + 3bc02290: 6942 ld s2,16(sp) + 3bc02292: 69a2 ld s3,8(sp) + 3bc02294: 4501 li a0,0 + 3bc02296: 6145 addi sp,sp,48 + 3bc02298: 8082 ret + +000000003bc0229a : + 3bc0229a: 030007b7 lui a5,0x3000 + 3bc0229e: 43c8 lw a0,4(a5) + 3bc022a0: 2495350b extu a0,a0,9,9 + 3bc022a4: 8082 ret + +000000003bc022a6 : + 3bc022a6: 1141 addi sp,sp,-16 + 3bc022a8: e406 sd ra,8(sp) + 3bc022aa: 93ffe0ef jal ra,3bc00be8 + 3bc022ae: 3e800793 li a5,1000 + 3bc022b2: e911 bnez a0,3bc022c6 + 3bc022b4: 0e0007b7 lui a5,0xe000 + 3bc022b8: 639c ld a5,0(a5) + 3bc022ba: 0417b78b extu a5,a5,1,1 + 3bc022be: eb81 bnez a5,3bc022ce + 3bc022c0: 6789 lui a5,0x2 + 3bc022c2: 71078793 addi a5,a5,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc022c6: 60a2 ld ra,8(sp) + 3bc022c8: 853e mv a0,a5 + 3bc022ca: 0141 addi sp,sp,16 + 3bc022cc: 8082 ret + 3bc022ce: 67e1 lui a5,0x18 + 3bc022d0: 69f78793 addi a5,a5,1695 # 1869f <__BSS_SIZE__+0x12a8f> + 3bc022d4: bfcd j 3bc022c6 + +000000003bc022d6 : + 3bc022d6: 7175 addi sp,sp,-144 + 3bc022d8: f0d2 sd s4,96(sp) + 3bc022da: 00011797 auipc a5,0x11 + 3bc022de: 06a7bb23 sd a0,118(a5) # 3bc13350 + 3bc022e2: 00011797 auipc a5,0x11 + 3bc022e6: 0eb7af23 sw a1,254(a5) # 3bc133e0 + 3bc022ea: 00011a17 auipc s4,0x11 + 3bc022ee: 0faa0a13 addi s4,s4,250 # 3bc133e4 + 3bc022f2: e506 sd ra,136(sp) + 3bc022f4: e122 sd s0,128(sp) + 3bc022f6: fca6 sd s1,120(sp) + 3bc022f8: f8ca sd s2,112(sp) + 3bc022fa: f4ce sd s3,104(sp) + 3bc022fc: ecd6 sd s5,88(sp) + 3bc022fe: e8da sd s6,80(sp) + 3bc02300: e4de sd s7,72(sp) + 3bc02302: e0e2 sd s8,64(sp) + 3bc02304: fc66 sd s9,56(sp) + 3bc02306: f86a sd s10,48(sp) + 3bc02308: f46e sd s11,40(sp) + 3bc0230a: 00ca2023 sw a2,0(s4) + 3bc0230e: 0e0007b7 lui a5,0xe000 + 3bc02312: 0007a223 sw zero,4(a5) # e000004 + 3bc02316: f85ff0ef jal ra,3bc0229a + 3bc0231a: e909 bnez a0,3bc0232c + 3bc0231c: 00008517 auipc a0,0x8 + 3bc02320: 74c50513 addi a0,a0,1868 # 3bc0aa68 <__func__.1+0x2d8> + 3bc02324: 834fe0ef jal ra,3bc00358 + 3bc02328: 596d li s2,-5 + 3bc0232a: a111 j 3bc0272e + 3bc0232c: f7bff0ef jal ra,3bc022a6 + 3bc02330: 0005049b sext.w s1,a0 + 3bc02334: 85a6 mv a1,s1 + 3bc02336: 00008517 auipc a0,0x8 + 3bc0233a: 74a50513 addi a0,a0,1866 # 3bc0aa80 <__func__.1+0x2f0> + 3bc0233e: 81afe0ef jal ra,3bc00358 + 3bc02342: 67e1 lui a5,0x18 + 3bc02344: 69e78793 addi a5,a5,1694 # 1869e <__BSS_SIZE__+0x12a8e> + 3bc02348: 0297f463 bgeu a5,s1,3bc02370 + 3bc0234c: 4785 li a5,1 + 3bc0234e: 00008517 auipc a0,0x8 + 3bc02352: 74a50513 addi a0,a0,1866 # 3bc0aa98 <__func__.1+0x308> + 3bc02356: 00011717 auipc a4,0x11 + 3bc0235a: 0af70923 sb a5,178(a4) # 3bc13408 + 3bc0235e: ffbfd0ef jal ra,3bc00358 + 3bc02362: c00037b7 lui a5,0xc0003 + 3bc02366: 03000737 lui a4,0x3000 + 3bc0236a: 078d addi a5,a5,3 + 3bc0236c: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02370: 85a6 mv a1,s1 + 3bc02372: 00008517 auipc a0,0x8 + 3bc02376: 72e50513 addi a0,a0,1838 # 3bc0aaa0 <__func__.1+0x310> + 3bc0237a: fdffd0ef jal ra,3bc00358 + 3bc0237e: 3e800793 li a5,1000 + 3bc02382: 029787bb mulw a5,a5,s1 + 3bc02386: e43e sd a5,8(sp) + 3bc02388: c00037b7 lui a5,0xc0003 + 3bc0238c: 10178793 addi a5,a5,257 # ffffffffc0003101 <__BL2_END__+0xffffffff843efcf1> + 3bc02390: e83e sd a5,16(sp) + 3bc02392: c00017b7 lui a5,0xc0001 + 3bc02396: 0791 addi a5,a5,4 + 3bc02398: ec3e sd a5,24(sp) + 3bc0239a: 00011797 auipc a5,0x11 + 3bc0239e: f607bb23 sd zero,-138(a5) # 3bc13310 + 3bc023a2: 00011797 auipc a5,0x11 + 3bc023a6: f807b323 sd zero,-122(a5) # 3bc13328 + 3bc023aa: 00011797 auipc a5,0x11 + 3bc023ae: f807b323 sd zero,-122(a5) # 3bc13330 + 3bc023b2: 00011797 auipc a5,0x11 + 3bc023b6: f807b723 sd zero,-114(a5) # 3bc13340 + 3bc023ba: 00011797 auipc a5,0x11 + 3bc023be: f807b723 sd zero,-114(a5) # 3bc13348 + 3bc023c2: 00011797 auipc a5,0x11 + 3bc023c6: f407bb23 sd zero,-170(a5) # 3bc13318 + 3bc023ca: 00011797 auipc a5,0x11 + 3bc023ce: f407bb23 sd zero,-170(a5) # 3bc13320 + 3bc023d2: 00011797 auipc a5,0x11 + 3bc023d6: f607b323 sd zero,-154(a5) # 3bc13338 + 3bc023da: 00011797 auipc a5,0x11 + 3bc023de: 020786a3 sb zero,45(a5) # 3bc13407 + 3bc023e2: 00011797 auipc a5,0x11 + 3bc023e6: 02078223 sb zero,36(a5) # 3bc13406 + 3bc023ea: 00011797 auipc a5,0x11 + 3bc023ee: 00078da3 sb zero,27(a5) # 3bc13405 + 3bc023f2: 00011797 auipc a5,0x11 + 3bc023f6: 00078ca3 sb zero,25(a5) # 3bc1340b + 3bc023fa: 00011797 auipc a5,0x11 + 3bc023fe: fe07a723 sw zero,-18(a5) # 3bc133e8 + 3bc02402: 00011797 auipc a5,0x11 + 3bc02406: f007b323 sd zero,-250(a5) # 3bc13308 + 3bc0240a: 00011797 auipc a5,0x11 + 3bc0240e: fe078fa3 sb zero,-1(a5) # 3bc13409 + 3bc02412: bd9ff0ef jal ra,3bc01fea + 3bc02416: c77ff0ef jal ra,3bc0208c + 3bc0241a: 00009417 auipc s0,0x9 + 3bc0241e: 1a640413 addi s0,s0,422 # 3bc0b5c0 + 3bc02422: 00009797 auipc a5,0x9 + 3bc02426: 24e7b783 ld a5,590(a5) # 3bc0b670 + 3bc0242a: e41c sd a5,8(s0) + 3bc0242c: 40000793 li a5,1024 + 3bc02430: c81c sw a5,16(s0) + 3bc02432: 00009517 auipc a0,0x9 + 3bc02436: 19650513 addi a0,a0,406 # 3bc0b5c8 + 3bc0243a: 00009797 auipc a5,0x9 + 3bc0243e: 25e7b783 ld a5,606(a5) # 3bc0b698 + 3bc02442: e43c sd a5,72(s0) + 3bc02444: 6cd000ef jal ra,3bc03310 + 3bc02448: 0005099b sext.w s3,a0 + 3bc0244c: 892a mv s2,a0 + 3bc0244e: 02099063 bnez s3,3bc0246e + 3bc02452: 00009517 auipc a0,0x9 + 3bc02456: 1c650513 addi a0,a0,454 # 3bc0b618 + 3bc0245a: 54f000ef jal ra,3bc031a8 + 3bc0245e: 02055763 bgez a0,3bc0248c + 3bc02462: 00008517 auipc a0,0x8 + 3bc02466: 66650513 addi a0,a0,1638 # 3bc0aac8 <__func__.1+0x338> + 3bc0246a: eeffd0ef jal ra,3bc00358 + 3bc0246e: 85ce mv a1,s3 + 3bc02470: 00008517 auipc a0,0x8 + 3bc02474: 6f050513 addi a0,a0,1776 # 3bc0ab60 <__func__.1+0x3d0> + 3bc02478: ee1fd0ef jal ra,3bc00358 + 3bc0247c: c00037b7 lui a5,0xc0003 + 3bc02480: 03000737 lui a4,0x3000 + 3bc02484: 079d addi a5,a5,7 + 3bc02486: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc0248a: a455 j 3bc0272e + 3bc0248c: 6000 ld s0,0(s0) + 3bc0248e: e411 bnez s0,3bc0249a + 3bc02490: 00008517 auipc a0,0x8 + 3bc02494: 65850513 addi a0,a0,1624 # 3bc0aae8 <__func__.1+0x358> + 3bc02498: bfc9 j 3bc0246a + 3bc0249a: cc9ff0ef jal ra,3bc02162 + 3bc0249e: 4501 li a0,0 + 3bc024a0: d1ffd0ef jal ra,3bc001be + 3bc024a4: 6742 ld a4,16(sp) + 3bc024a6: 00011917 auipc s2,0x11 + 3bc024aa: f4690913 addi s2,s2,-186 # 3bc133ec + 3bc024ae: 00a92023 sw a0,0(s2) + 3bc024b2: 6522 ld a0,8(sp) + 3bc024b4: 030007b7 lui a5,0x3000 + 3bc024b8: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc024bc: cbffd0ef jal ra,3bc0017a + 3bc024c0: 681c ld a5,16(s0) + 3bc024c2: 4585 li a1,1 + 3bc024c4: 8522 mv a0,s0 + 3bc024c6: 779c ld a5,40(a5) + 3bc024c8: 00011997 auipc s3,0x11 + 3bc024cc: e5898993 addi s3,s3,-424 # 3bc13320 + 3bc024d0: 00011b17 auipc s6,0x11 + 3bc024d4: f38b0b13 addi s6,s6,-200 # 3bc13408 + 3bc024d8: 9782 jalr a5 + 3bc024da: 00011a97 auipc s5,0x11 + 3bc024de: f2ba8a93 addi s5,s5,-213 # 3bc13405 + 3bc024e2: 000ac783 lbu a5,0(s5) + 3bc024e6: 18078663 beqz a5,3bc02672 + 3bc024ea: 6762 ld a4,24(sp) + 3bc024ec: 030007b7 lui a5,0x3000 + 3bc024f0: 00043b83 ld s7,0(s0) + 3bc024f4: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc024f8: 4785 li a5,1 + 3bc024fa: 00011717 auipc a4,0x11 + 3bc024fe: f0f708a3 sb a5,-239(a4) # 3bc1340b + 3bc02502: 08200c13 li s8,130 + 3bc02506: 00011c97 auipc s9,0x11 + 3bc0250a: e42c8c93 addi s9,s9,-446 # 3bc13348 + 3bc0250e: 00011d17 auipc s10,0x11 + 3bc02512: e0ad0d13 addi s10,s10,-502 # 3bc13318 + 3bc02516: 00011d97 auipc s11,0x11 + 3bc0251a: e2ad8d93 addi s11,s11,-470 # 3bc13340 + 3bc0251e: 19741b63 bne s0,s7,3bc026b4 + 3bc02522: 02044783 lbu a5,32(s0) + 3bc02526: 470d li a4,3 + 3bc02528: 1ee78063 beq a5,a4,3bc02708 + 3bc0252c: 4715 li a4,5 + 3bc0252e: 1ee78063 beq a5,a4,3bc0270e + 3bc02532: 4709 li a4,2 + 3bc02534: dee79ae3 bne a5,a4,3bc02328 + 3bc02538: 04000793 li a5,64 + 3bc0253c: 0009b503 ld a0,0(s3) + 3bc02540: 04000613 li a2,64 + 3bc02544: 4581 li a1,0 + 3bc02546: 00011717 auipc a4,0x11 + 3bc0254a: eaf72123 sw a5,-350(a4) # 3bc133e8 + 3bc0254e: cc4fe0ef jal ra,3bc00a12 + 3bc02552: 0009b783 ld a5,0(s3) + 3bc02556: 00011717 auipc a4,0x11 + 3bc0255a: dd273703 ld a4,-558(a4) # 3bc13328 + 3bc0255e: 00011b97 auipc s7,0x11 + 3bc02562: e8ab8b93 addi s7,s7,-374 # 3bc133e8 + 3bc02566: eb98 sd a4,16(a5) + 3bc02568: cfd8 sw a4,28(a5) + 3bc0256a: fffff717 auipc a4,0xfffff + 3bc0256e: 33270713 addi a4,a4,818 # 3bc0189c + 3bc02572: f798 sd a4,40(a5) + 3bc02574: 00011c17 auipc s8,0x11 + 3bc02578: da4c0c13 addi s8,s8,-604 # 3bc13318 + 3bc0257c: 000ba703 lw a4,0(s7) + 3bc02580: 000c3503 ld a0,0(s8) + 3bc02584: 04000613 li a2,64 + 3bc02588: cf98 sw a4,24(a5) + 3bc0258a: 4581 li a1,0 + 3bc0258c: c86fe0ef jal ra,3bc00a12 + 3bc02590: 000c3783 ld a5,0(s8) + 3bc02594: 00011717 auipc a4,0x11 + 3bc02598: d7c73703 ld a4,-644(a4) # 3bc13310 + 3bc0259c: 00011517 auipc a0,0x11 + 3bc025a0: dac53503 ld a0,-596(a0) # 3bc13348 + 3bc025a4: eb98 sd a4,16(a5) + 3bc025a6: cfd8 sw a4,28(a5) + 3bc025a8: fffff717 auipc a4,0xfffff + 3bc025ac: 5ae70713 addi a4,a4,1454 # 3bc01b56 + 3bc025b0: f798 sd a4,40(a5) + 3bc025b2: 000ba703 lw a4,0(s7) + 3bc025b6: 0009b583 ld a1,0(s3) + 3bc025ba: 4b85 li s7,1 + 3bc025bc: cf98 sw a4,24(a5) + 3bc025be: 711c ld a5,32(a0) + 3bc025c0: 739c ld a5,32(a5) + 3bc025c2: 9782 jalr a5 + 3bc025c4: 500c lw a1,32(s0) + 3bc025c6: 00008517 auipc a0,0x8 + 3bc025ca: 55a50513 addi a0,a0,1370 # 3bc0ab20 <__func__.1+0x390> + 3bc025ce: d8bfd0ef jal ra,3bc00358 + 3bc025d2: 4501 li a0,0 + 3bc025d4: bebfd0ef jal ra,3bc001be + 3bc025d8: 00a92023 sw a0,0(s2) + 3bc025dc: b81ff0ef jal ra,3bc0215c + 3bc025e0: 000ac783 lbu a5,0(s5) + 3bc025e4: ee078be3 beqz a5,3bc024da + 3bc025e8: 00011797 auipc a5,0x11 + 3bc025ec: e1e78793 addi a5,a5,-482 # 3bc13406 + 3bc025f0: 0007c783 lbu a5,0(a5) + 3bc025f4: eb95 bnez a5,3bc02628 + 3bc025f6: 000b4783 lbu a5,0(s6) + 3bc025fa: 10079d63 bnez a5,3bc02714 + 3bc025fe: 00092503 lw a0,0(s2) + 3bc02602: bbdfd0ef jal ra,3bc001be + 3bc02606: 2501 sext.w a0,a0 + 3bc02608: fca4fae3 bgeu s1,a0,3bc025dc + 3bc0260c: 85a6 mv a1,s1 + 3bc0260e: 00008517 auipc a0,0x8 + 3bc02612: 53250513 addi a0,a0,1330 # 3bc0ab40 <__func__.1+0x3b0> + 3bc02616: d43fd0ef jal ra,3bc00358 + 3bc0261a: c00037b7 lui a5,0xc0003 + 3bc0261e: 03000737 lui a4,0x3000 + 3bc02622: 0795 addi a5,a5,5 + 3bc02624: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02628: 00008517 auipc a0,0x8 + 3bc0262c: 53050513 addi a0,a0,1328 # 3bc0ab58 <__func__.1+0x3c8> + 3bc02630: d29fd0ef jal ra,3bc00358 + 3bc02634: c00037b7 lui a5,0xc0003 + 3bc02638: 03000737 lui a4,0x3000 + 3bc0263c: 0799 addi a5,a5,6 + 3bc0263e: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02642: 681c ld a5,16(s0) + 3bc02644: 4581 li a1,0 + 3bc02646: 8522 mv a0,s0 + 3bc02648: 779c ld a5,40(a5) + 3bc0264a: 9782 jalr a5 + 3bc0264c: 00009517 auipc a0,0x9 + 3bc02650: fcc50513 addi a0,a0,-52 # 3bc0b618 + 3bc02654: 380000ef jal ra,3bc029d4 + 3bc02658: 0e0007b7 lui a5,0xe000 + 3bc0265c: 0047a903 lw s2,4(a5) # e000004 + 3bc02660: 4d4757b7 lui a5,0x4d475 + 3bc02664: e3178793 addi a5,a5,-463 # 4d474e31 <__BL2_END__+0x11861a21> + 3bc02668: 40f90933 sub s2,s2,a5 + 3bc0266c: 00193913 seqz s2,s2 + 3bc02670: a87d j 3bc0272e + 3bc02672: aebff0ef jal ra,3bc0215c + 3bc02676: 00092503 lw a0,0(s2) + 3bc0267a: b45fd0ef jal ra,3bc001be + 3bc0267e: 2501 sext.w a0,a0 + 3bc02680: 02a4f363 bgeu s1,a0,3bc026a6 + 3bc02684: 000b4783 lbu a5,0(s6) + 3bc02688: ef99 bnez a5,3bc026a6 + 3bc0268a: 00008517 auipc a0,0x8 + 3bc0268e: 48650513 addi a0,a0,1158 # 3bc0ab10 <__func__.1+0x380> + 3bc02692: cc7fd0ef jal ra,3bc00358 + 3bc02696: c00037b7 lui a5,0xc0003 + 3bc0269a: 03000737 lui a4,0x3000 + 3bc0269e: 0791 addi a5,a5,4 + 3bc026a0: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc026a4: b151 j 3bc02328 + 3bc026a6: 00011797 auipc a5,0x11 + 3bc026aa: d637c783 lbu a5,-669(a5) # 3bc13409 + 3bc026ae: e20786e3 beqz a5,3bc024da + 3bc026b2: b1e5 j 3bc0239a + 3bc026b4: 030bb703 ld a4,48(s7) + 3bc026b8: c305 beqz a4,3bc026d8 + 3bc026ba: 00274703 lbu a4,2(a4) + 3bc026be: 08100793 li a5,129 + 3bc026c2: 00f71e63 bne a4,a5,3bc026de + 3bc026c6: 020bb703 ld a4,32(s7) + 3bc026ca: 855e mv a0,s7 + 3bc026cc: 6b18 ld a4,16(a4) + 3bc026ce: 9702 jalr a4 + 3bc026d0: 00ad3023 sd a0,0(s10) + 3bc026d4: 017db023 sd s7,0(s11) + 3bc026d8: 000bbb83 ld s7,0(s7) + 3bc026dc: b589 j 3bc0251e + 3bc026de: 4785 li a5,1 + 3bc026e0: 00f71c63 bne a4,a5,3bc026f8 + 3bc026e4: 020bb703 ld a4,32(s7) + 3bc026e8: 855e mv a0,s7 + 3bc026ea: 6b18 ld a4,16(a4) + 3bc026ec: 9702 jalr a4 + 3bc026ee: 00a9b023 sd a0,0(s3) + 3bc026f2: 017cb023 sd s7,0(s9) + 3bc026f6: b7cd j 3bc026d8 + 3bc026f8: ff8710e3 bne a4,s8,3bc026d8 + 3bc026fc: 020bb703 ld a4,32(s7) + 3bc02700: 855e mv a0,s7 + 3bc02702: 6b18 ld a4,16(a4) + 3bc02704: 9702 jalr a4 + 3bc02706: bfc9 j 3bc026d8 + 3bc02708: 20000793 li a5,512 + 3bc0270c: bd05 j 3bc0253c + 3bc0270e: 40000793 li a5,1024 + 3bc02712: b52d j 3bc0253c + 3bc02714: ed7794e3 bne a5,s7,3bc025dc + 3bc02718: 000a2783 lw a5,0(s4) + 3bc0271c: ec0790e3 bnez a5,3bc025dc + 3bc02720: 00008517 auipc a0,0x8 + 3bc02724: 43050513 addi a0,a0,1072 # 3bc0ab50 <__func__.1+0x3c0> + 3bc02728: c31fd0ef jal ra,3bc00358 + 3bc0272c: 4905 li s2,1 + 3bc0272e: 60aa ld ra,136(sp) + 3bc02730: 640a ld s0,128(sp) + 3bc02732: 74e6 ld s1,120(sp) + 3bc02734: 79a6 ld s3,104(sp) + 3bc02736: 7a06 ld s4,96(sp) + 3bc02738: 6ae6 ld s5,88(sp) + 3bc0273a: 6b46 ld s6,80(sp) + 3bc0273c: 6ba6 ld s7,72(sp) + 3bc0273e: 6c06 ld s8,64(sp) + 3bc02740: 7ce2 ld s9,56(sp) + 3bc02742: 7d42 ld s10,48(sp) + 3bc02744: 7da2 ld s11,40(sp) + 3bc02746: 854a mv a0,s2 + 3bc02748: 7946 ld s2,112(sp) + 3bc0274a: 6149 addi sp,sp,144 + 3bc0274c: 8082 ret + +000000003bc0274e : + 3bc0274e: c909 beqz a0,3bc02760 + 3bc02750: 07150783 lb a5,113(a0) + 3bc02754: 4501 li a0,0 + 3bc02756: 0007d663 bgez a5,3bc02762 + 3bc0275a: fd300513 li a0,-45 + 3bc0275e: 8082 ret + 3bc02760: 5535 li a0,-19 + 3bc02762: 8082 ret + +000000003bc02764 : + 3bc02764: 61b8 ld a4,64(a1) + 3bc02766: 7179 addi sp,sp,-48 + 3bc02768: f022 sd s0,32(sp) + 3bc0276a: ec26 sd s1,24(sp) + 3bc0276c: 00011417 auipc s0,0x11 + 3bc02770: c5443403 ld s0,-940(s0) # 3bc133c0 + 3bc02774: f406 sd ra,40(sp) + 3bc02776: 04058793 addi a5,a1,64 + 3bc0277a: 7c04 ld s1,56(s0) + 3bc0277c: 00f70a63 beq a4,a5,3bc02790 + 3bc02780: 00008517 auipc a0,0x8 + 3bc02784: 42850513 addi a0,a0,1064 # 3bc0aba8 <__func__.5+0x8> + 3bc02788: e42e sd a1,8(sp) + 3bc0278a: bcffd0ef jal ra,3bc00358 + 3bc0278e: 65a2 ld a1,8(sp) + 3bc02790: 8522 mv a0,s0 + 3bc02792: 7402 ld s0,32(sp) + 3bc02794: 68bc ld a5,80(s1) + 3bc02796: 70a2 ld ra,40(sp) + 3bc02798: 64e2 ld s1,24(sp) + 3bc0279a: 6145 addi sp,sp,48 + 3bc0279c: 8782 jr a5 + +000000003bc0279e : + 3bc0279e: 7179 addi sp,sp,-48 + 3bc027a0: ec26 sd s1,24(sp) + 3bc027a2: 00011497 auipc s1,0x11 + 3bc027a6: c1648493 addi s1,s1,-1002 # 3bc133b8 + 3bc027aa: 6088 ld a0,0(s1) + 3bc027ac: f022 sd s0,32(sp) + 3bc027ae: 6405 lui s0,0x1 + 3bc027b0: 80440413 addi s0,s0,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc027b4: 9522 add a0,a0,s0 + 3bc027b6: e42e sd a1,8(sp) + 3bc027b8: f406 sd ra,40(sp) + 3bc027ba: f85fe0ef jal ra,3bc0173e + 3bc027be: 65a2 ld a1,8(sp) + 3bc027c0: 609c ld a5,0(s1) + 3bc027c2: 2501 sext.w a0,a0 + 3bc027c4: ed89 bnez a1,3bc027de + 3bc027c6: 008785b3 add a1,a5,s0 + 3bc027ca: 00256513 ori a0,a0,2 + 3bc027ce: f77fe0ef jal ra,3bc01744 + 3bc027d2: 70a2 ld ra,40(sp) + 3bc027d4: 7402 ld s0,32(sp) + 3bc027d6: 64e2 ld s1,24(sp) + 3bc027d8: 4501 li a0,0 + 3bc027da: 6145 addi sp,sp,48 + 3bc027dc: 8082 ret + 3bc027de: 008785b3 add a1,a5,s0 + 3bc027e2: 9975 andi a0,a0,-3 + 3bc027e4: b7ed j 3bc027ce + +000000003bc027e6 : + 3bc027e6: 00011517 auipc a0,0x11 + 3bc027ea: bda53503 ld a0,-1062(a0) # 3bc133c0 + 3bc027ee: 7d1c ld a5,56(a0) + 3bc027f0: 1141 addi sp,sp,-16 + 3bc027f2: e022 sd s0,0(sp) + 3bc027f4: 67bc ld a5,72(a5) + 3bc027f6: e406 sd ra,8(sp) + 3bc027f8: 05000593 li a1,80 + 3bc027fc: 9782 jalr a5 + 3bc027fe: 842a mv s0,a0 + 3bc02800: c911 beqz a0,3bc02814 + 3bc02802: 05000613 li a2,80 + 3bc02806: 4581 li a1,0 + 3bc02808: a0afe0ef jal ra,3bc00a12 + 3bc0280c: 04040793 addi a5,s0,64 + 3bc02810: e03c sd a5,64(s0) + 3bc02812: e43c sd a5,72(s0) + 3bc02814: 60a2 ld ra,8(sp) + 3bc02816: 8522 mv a0,s0 + 3bc02818: 6402 ld s0,0(sp) + 3bc0281a: 0141 addi sp,sp,16 + 3bc0281c: 8082 ret + +000000003bc0281e : + 3bc0281e: cd51 beqz a0,3bc028ba + 3bc02820: 1141 addi sp,sp,-16 + 3bc02822: e022 sd s0,0(sp) + 3bc02824: e406 sd ra,8(sp) + 3bc02826: 842a mv s0,a0 + 3bc02828: 5529 li a0,-22 + 3bc0282a: c5c1 beqz a1,3bc028b2 + 3bc0282c: 603c ld a5,64(s0) + 3bc0282e: e3d1 bnez a5,3bc028b2 + 3bc02830: 6c18 ld a4,24(s0) + 3bc02832: 00008797 auipc a5,0x8 + 3bc02836: 62e78793 addi a5,a5,1582 # 3bc0ae60 + 3bc0283a: 06f70c63 beq a4,a5,3bc028b2 + 3bc0283e: 0015c703 lbu a4,1(a1) + 3bc02842: 4795 li a5,5 + 3bc02844: 06f71763 bne a4,a5,3bc028b2 + 3bc02848: 07144703 lbu a4,113(s0) + 3bc0284c: 0025c783 lbu a5,2(a1) + 3bc02850: 06f71163 bne a4,a5,3bc028b2 + 3bc02854: 0045d783 lhu a5,4(a1) + 3bc02858: 02845703 lhu a4,40(s0) + 3bc0285c: 04f76b63 bltu a4,a5,3bc028b2 + 3bc02860: 07244683 lbu a3,114(s0) + 3bc02864: 0035c703 lbu a4,3(a1) + 3bc02868: 00e68863 beq a3,a4,3bc02878 + 3bc0286c: 4609 li a2,2 + 3bc0286e: 00c68563 beq a3,a2,3bc02878 + 3bc02872: 468d li a3,3 + 3bc02874: 02d71f63 bne a4,a3,3bc028b2 + 3bc02878: fde00513 li a0,-34 + 3bc0287c: cb9d beqz a5,3bc028b2 + 3bc0287e: 7c18 ld a4,56(s0) + 3bc02880: fc600513 li a0,-58 + 3bc02884: 7f14 ld a3,56(a4) + 3bc02886: c695 beqz a3,3bc028b2 + 3bc02888: 5318 lw a4,32(a4) + 3bc0288a: c705 beqz a4,3bc028b2 + 3bc0288c: 02f41423 sh a5,40(s0) + 3bc02890: f80c sd a1,48(s0) + 3bc02892: e02c sd a1,64(s0) + 3bc02894: 8522 mv a0,s0 + 3bc02896: 06040823 sb zero,112(s0) + 3bc0289a: 04043c23 sd zero,88(s0) + 3bc0289e: 35e010ef jal ra,3bc03bfc + 3bc028a2: 4581 li a1,0 + 3bc028a4: 8522 mv a0,s0 + 3bc028a6: 396010ef jal ra,3bc03c3c + 3bc028aa: 8522 mv a0,s0 + 3bc028ac: 3f2010ef jal ra,3bc03c9e + 3bc028b0: 4501 li a0,0 + 3bc028b2: 60a2 ld ra,8(sp) + 3bc028b4: 6402 ld s0,0(sp) + 3bc028b6: 0141 addi sp,sp,16 + 3bc028b8: 8082 ret + 3bc028ba: 5529 li a0,-22 + 3bc028bc: 8082 ret + +000000003bc028be : + 3bc028be: 8082 ret + +000000003bc028c0 : + 3bc028c0: 8082 ret + +000000003bc028c2 : + 3bc028c2: 00008517 auipc a0,0x8 + 3bc028c6: 59e50513 addi a0,a0,1438 # 3bc0ae60 + 3bc028ca: 8082 ret + +000000003bc028cc : + 3bc028cc: 6d1c ld a5,24(a0) + 3bc028ce: f8a5550b sdd a0,a0,(a0),0,4 + 3bc028d2: 29850613 addi a2,a0,664 + 3bc028d6: f8f7d78b sdd a5,a5,(a5),0,4 + 3bc028da: 04052423 sw zero,72(a0) + 3bc028de: 09850793 addi a5,a0,152 + 3bc028e2: fe07bc23 sd zero,-8(a5) + 3bc028e6: 02078423 sb zero,40(a5) + 3bc028ea: f8f7d78b sdd a5,a5,(a5),0,4 + 3bc028ee: 0007b823 sd zero,16(a5) + 3bc028f2: 08078713 addi a4,a5,128 + 3bc028f6: 00c71363 bne a4,a2,3bc028fc + 3bc028fa: 8082 ret + 3bc028fc: 6514 ld a3,8(a0) + 3bc028fe: 03878793 addi a5,a5,56 + 3bc02902: e51c sd a5,8(a0) + 3bc02904: faa73c23 sd a0,-72(a4) + 3bc02908: fcd73023 sd a3,-64(a4) + 3bc0290c: e29c sd a5,0(a3) + 3bc0290e: 87ba mv a5,a4 + 3bc02910: bfc9 j 3bc028e2 + +000000003bc02912 : + 3bc02912: 65b8 ld a4,72(a1) + 3bc02914: 61b4 ld a3,64(a1) + 3bc02916: 1101 addi sp,sp,-32 + 3bc02918: ec06 sd ra,24(sp) + 3bc0291a: e822 sd s0,16(sp) + 3bc0291c: 07054403 lbu s0,112(a0) + 3bc02920: e698 sd a4,8(a3) + 3bc02922: e314 sd a3,0(a4) + 3bc02924: 5d98 lw a4,56(a1) + 3bc02926: 04058793 addi a5,a1,64 + 3bc0292a: e1bc sd a5,64(a1) + 3bc0292c: e5bc sd a5,72(a1) + 3bc0292e: fdc00793 li a5,-36 + 3bc02932: 00f71363 bne a4,a5,3bc02938 + 3bc02936: dd90 sw a2,56(a1) + 3bc02938: 4785 li a5,1 + 3bc0293a: 06f50823 sb a5,112(a0) + 3bc0293e: 759c ld a5,40(a1) + 3bc02940: e42a sd a0,8(sp) + 3bc02942: 9782 jalr a5 + 3bc02944: 6522 ld a0,8(sp) + 3bc02946: 06850823 sb s0,112(a0) + 3bc0294a: 60e2 ld ra,24(sp) + 3bc0294c: 6442 ld s0,16(sp) + 3bc0294e: 6105 addi sp,sp,32 + 3bc02950: 8082 ret + +000000003bc02952 : + 3bc02952: c539 beqz a0,3bc029a0 + 3bc02954: 6d14 ld a3,24(a0) + 3bc02956: 00008797 auipc a5,0x8 + 3bc0295a: 50a78793 addi a5,a5,1290 # 3bc0ae60 + 3bc0295e: 5729 li a4,-22 + 3bc02960: 04f68163 beq a3,a5,3bc029a2 + 3bc02964: 872a mv a4,a0 + 3bc02966: 6e97478b ldib a5,(a4),9,3 + 3bc0296a: fc078793 addi a5,a5,-64 + 3bc0296e: 86be mv a3,a5 + 3bc02970: 6e86c60b ldib a2,(a3),8,3 + 3bc02974: 02e69163 bne a3,a4,3bc02996 + 3bc02978: 5729 li a4,-22 + 3bc0297a: 02f59463 bne a1,a5,3bc029a2 + 3bc0297e: 1141 addi sp,sp,-16 + 3bc02980: fca00613 li a2,-54 + 3bc02984: 85be mv a1,a5 + 3bc02986: e406 sd ra,8(sp) + 3bc02988: f8bff0ef jal ra,3bc02912 + 3bc0298c: 60a2 ld ra,8(sp) + 3bc0298e: 4701 li a4,0 + 3bc02990: 853a mv a0,a4 + 3bc02992: 0141 addi sp,sp,16 + 3bc02994: 8082 ret + 3bc02996: fef584e3 beq a1,a5,3bc0297e + 3bc0299a: fc060793 addi a5,a2,-64 + 3bc0299e: bfc1 j 3bc0296e + 3bc029a0: 5729 li a4,-22 + 3bc029a2: 853a mv a0,a4 + 3bc029a4: 8082 ret + +000000003bc029a6 : + 3bc029a6: 7179 addi sp,sp,-48 + 3bc029a8: f022 sd s0,32(sp) + 3bc029aa: ec26 sd s1,24(sp) + 3bc029ac: f406 sd ra,40(sp) + 3bc029ae: 84ae mv s1,a1 + 3bc029b0: 04850413 addi s0,a0,72 + 3bc029b4: 652c ld a1,72(a0) + 3bc029b6: 00859763 bne a1,s0,3bc029c4 + 3bc029ba: 70a2 ld ra,40(sp) + 3bc029bc: 7402 ld s0,32(sp) + 3bc029be: 64e2 ld s1,24(sp) + 3bc029c0: 6145 addi sp,sp,48 + 3bc029c2: 8082 ret + 3bc029c4: 8626 mv a2,s1 + 3bc029c6: fc058593 addi a1,a1,-64 + 3bc029ca: e42a sd a0,8(sp) + 3bc029cc: f47ff0ef jal ra,3bc02912 + 3bc029d0: 6522 ld a0,8(sp) + 3bc029d2: b7cd j 3bc029b4 + +000000003bc029d4 : + 3bc029d4: 7139 addi sp,sp,-64 + 3bc029d6: f822 sd s0,48(sp) + 3bc029d8: fc06 sd ra,56(sp) + 3bc029da: f426 sd s1,40(sp) + 3bc029dc: f04a sd s2,32(sp) + 3bc029de: ec4e sd s3,24(sp) + 3bc029e0: e852 sd s4,16(sp) + 3bc029e2: e456 sd s5,8(sp) + 3bc029e4: 00011417 auipc s0,0x11 + 3bc029e8: 9dc43403 ld s0,-1572(s0) # 3bc133c0 + 3bc029ec: cc3d beqz s0,3bc02a6a + 3bc029ee: 84aa mv s1,a0 + 3bc029f0: 5529 li a0,-22 + 3bc029f2: c0bd beqz s1,3bc02a58 + 3bc029f4: 7c18 ld a4,56(s0) + 3bc029f6: 06971163 bne a4,s1,3bc02a58 + 3bc029fa: 5018 lw a4,32(s0) + 3bc029fc: 02043c23 sd zero,56(s0) + 3bc02a00: 89a6 mv s3,s1 + 3bc02a02: e311 bnez a4,3bc02a06 + 3bc02a04: 4981 li s3,0 + 3bc02a06: 02042023 sw zero,32(s0) + 3bc02a0a: 05040913 addi s2,s0,80 + 3bc02a0e: 25040a13 addi s4,s0,592 + 3bc02a12: 4a85 li s5,1 + 3bc02a14: 07590823 sb s5,112(s2) + 3bc02a18: 854a mv a0,s2 + 3bc02a1a: fc600593 li a1,-58 + 3bc02a1e: 08090913 addi s2,s2,128 + 3bc02a22: f85ff0ef jal ra,3bc029a6 + 3bc02a26: ff4917e3 bne s2,s4,3bc02a14 + 3bc02a2a: 00098663 beqz s3,3bc02a36 + 3bc02a2e: 0289b783 ld a5,40(s3) + 3bc02a32: 8522 mv a0,s0 + 3bc02a34: 9782 jalr a5 + 3bc02a36: 8522 mv a0,s0 + 3bc02a38: e95ff0ef jal ra,3bc028cc + 3bc02a3c: 6c9c ld a5,24(s1) + 3bc02a3e: 8522 mv a0,s0 + 3bc02a40: 9782 jalr a5 + 3bc02a42: 8522 mv a0,s0 + 3bc02a44: 4581 li a1,0 + 3bc02a46: 106010ef jal ra,3bc03b4c + 3bc02a4a: 4501 li a0,0 + 3bc02a4c: 04042423 sw zero,72(s0) + 3bc02a50: 02042023 sw zero,32(s0) + 3bc02a54: 24040823 sb zero,592(s0) + 3bc02a58: 70e2 ld ra,56(sp) + 3bc02a5a: 7442 ld s0,48(sp) + 3bc02a5c: 74a2 ld s1,40(sp) + 3bc02a5e: 7902 ld s2,32(sp) + 3bc02a60: 69e2 ld s3,24(sp) + 3bc02a62: 6a42 ld s4,16(sp) + 3bc02a64: 6aa2 ld s5,8(sp) + 3bc02a66: 6121 addi sp,sp,64 + 3bc02a68: 8082 ret + 3bc02a6a: 5535 li a0,-19 + 3bc02a6c: b7f5 j 3bc02a58 + +000000003bc02a6e : + 3bc02a6e: 1101 addi sp,sp,-32 + 3bc02a70: e822 sd s0,16(sp) + 3bc02a72: e426 sd s1,8(sp) + 3bc02a74: ec06 sd ra,24(sp) + 3bc02a76: 842e mv s0,a1 + 3bc02a78: 84aa mv s1,a0 + 3bc02a7a: cc5fe0ef jal ra,3bc0173e + 3bc02a7e: 2501 sext.w a0,a0 + 3bc02a80: 8d41 or a0,a0,s0 + 3bc02a82: 6442 ld s0,16(sp) + 3bc02a84: 60e2 ld ra,24(sp) + 3bc02a86: 85a6 mv a1,s1 + 3bc02a88: 64a2 ld s1,8(sp) + 3bc02a8a: 6105 addi sp,sp,32 + 3bc02a8c: cb9fe06f j 3bc01744 + +000000003bc02a90 : + 3bc02a90: 1101 addi sp,sp,-32 + 3bc02a92: e822 sd s0,16(sp) + 3bc02a94: ec06 sd ra,24(sp) + 3bc02a96: 842a mv s0,a0 + 3bc02a98: e42e sd a1,8(sp) + 3bc02a9a: ca5fe0ef jal ra,3bc0173e + 3bc02a9e: 65a2 ld a1,8(sp) + 3bc02aa0: 60e2 ld ra,24(sp) + 3bc02aa2: 2501 sext.w a0,a0 + 3bc02aa4: fff5c793 not a5,a1 + 3bc02aa8: 85a2 mv a1,s0 + 3bc02aaa: 6442 ld s0,16(sp) + 3bc02aac: 8d7d and a0,a0,a5 + 3bc02aae: 6105 addi sp,sp,32 + 3bc02ab0: c95fe06f j 3bc01744 + +000000003bc02ab4 : + 3bc02ab4: 1101 addi sp,sp,-32 + 3bc02ab6: e426 sd s1,8(sp) + 3bc02ab8: 00011497 auipc s1,0x11 + 3bc02abc: 90048493 addi s1,s1,-1792 # 3bc133b8 + 3bc02ac0: 6088 ld a0,0(s1) + 3bc02ac2: e822 sd s0,16(sp) + 3bc02ac4: 6405 lui s0,0x1 + 3bc02ac6: 80440413 addi s0,s0,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02aca: 4585 li a1,1 + 3bc02acc: 9522 add a0,a0,s0 + 3bc02ace: ec06 sd ra,24(sp) + 3bc02ad0: f9fff0ef jal ra,3bc02a6e + 3bc02ad4: 4529 li a0,10 + 3bc02ad6: edefd0ef jal ra,3bc001b4 + 3bc02ada: 6088 ld a0,0(s1) + 3bc02adc: 4585 li a1,1 + 3bc02ade: 9522 add a0,a0,s0 + 3bc02ae0: fb1ff0ef jal ra,3bc02a90 + 3bc02ae4: 60e2 ld ra,24(sp) + 3bc02ae6: 6442 ld s0,16(sp) + 3bc02ae8: 64a2 ld s1,8(sp) + 3bc02aea: 4501 li a0,0 + 3bc02aec: 6105 addi sp,sp,32 + 3bc02aee: 8082 ret + +000000003bc02af0 : + 3bc02af0: 7179 addi sp,sp,-48 + 3bc02af2: f022 sd s0,32(sp) + 3bc02af4: ec26 sd s1,24(sp) + 3bc02af6: e84a sd s2,16(sp) + 3bc02af8: e44e sd s3,8(sp) + 3bc02afa: f406 sd ra,40(sp) + 3bc02afc: 892a mv s2,a0 + 3bc02afe: 89ae mv s3,a1 + 3bc02b00: 84b2 mv s1,a2 + 3bc02b02: 4401 li s0,0 + 3bc02b04: 00941b63 bne s0,s1,3bc02b1a + 3bc02b08: fc400513 li a0,-60 + 3bc02b0c: 70a2 ld ra,40(sp) + 3bc02b0e: 7402 ld s0,32(sp) + 3bc02b10: 64e2 ld s1,24(sp) + 3bc02b12: 6942 ld s2,16(sp) + 3bc02b14: 69a2 ld s3,8(sp) + 3bc02b16: 6145 addi sp,sp,48 + 3bc02b18: 8082 ret + 3bc02b1a: 854a mv a0,s2 + 3bc02b1c: c23fe0ef jal ra,3bc0173e + 3bc02b20: 2501 sext.w a0,a0 + 3bc02b22: 01357533 and a0,a0,s3 + 3bc02b26: e511 bnez a0,3bc02b32 + 3bc02b28: 4505 li a0,1 + 3bc02b2a: e60fd0ef jal ra,3bc0018a + 3bc02b2e: 2405 addiw s0,s0,1 + 3bc02b30: bfd1 j 3bc02b04 + 3bc02b32: 4501 li a0,0 + 3bc02b34: bfe1 j 3bc02b0c + +000000003bc02b36 : + 3bc02b36: 1101 addi sp,sp,-32 + 3bc02b38: e426 sd s1,8(sp) + 3bc02b3a: 00011497 auipc s1,0x11 + 3bc02b3e: 87e48493 addi s1,s1,-1922 # 3bc133b8 + 3bc02b42: e822 sd s0,16(sp) + 3bc02b44: 842a mv s0,a0 + 3bc02b46: 6088 ld a0,0(s1) + 3bc02b48: 6609 lui a2,0x2 + 3bc02b4a: 71060613 addi a2,a2,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc02b4e: 800005b7 lui a1,0x80000 + 3bc02b52: 0541 addi a0,a0,16 + 3bc02b54: ec06 sd ra,24(sp) + 3bc02b56: f9bff0ef jal ra,3bc02af0 + 3bc02b5a: c919 beqz a0,3bc02b70 + 3bc02b5c: 00008597 auipc a1,0x8 + 3bc02b60: 27c58593 addi a1,a1,636 # 3bc0add8 <__func__.3> + 3bc02b64: 00008517 auipc a0,0x8 + 3bc02b68: 06c50513 addi a0,a0,108 # 3bc0abd0 <__func__.5+0x30> + 3bc02b6c: fecfd0ef jal ra,3bc00358 + 3bc02b70: 608c ld a1,0(s1) + 3bc02b72: 0064151b slliw a0,s0,0x6 + 3bc02b76: 02056513 ori a0,a0,32 + 3bc02b7a: 05c1 addi a1,a1,16 + 3bc02b7c: 2501 sext.w a0,a0 + 3bc02b7e: bc7fe0ef jal ra,3bc01744 + 3bc02b82: 06400413 li s0,100 + 3bc02b86: 6088 ld a0,0(s1) + 3bc02b88: 0541 addi a0,a0,16 + 3bc02b8a: bb5fe0ef jal ra,3bc0173e + 3bc02b8e: 0005061b sext.w a2,a0 + 3bc02b92: 02057513 andi a0,a0,32 + 3bc02b96: cd09 beqz a0,3bc02bb0 + 3bc02b98: 347d addiw s0,s0,-1 + 3bc02b9a: e015 bnez s0,3bc02bbe + 3bc02b9c: 00008597 auipc a1,0x8 + 3bc02ba0: 23c58593 addi a1,a1,572 # 3bc0add8 <__func__.3> + 3bc02ba4: 00008517 auipc a0,0x8 + 3bc02ba8: 04c50513 addi a0,a0,76 # 3bc0abf0 <__func__.5+0x50> + 3bc02bac: facfd0ef jal ra,3bc00358 + 3bc02bb0: 6442 ld s0,16(sp) + 3bc02bb2: 60e2 ld ra,24(sp) + 3bc02bb4: 64a2 ld s1,8(sp) + 3bc02bb6: 4505 li a0,1 + 3bc02bb8: 6105 addi sp,sp,32 + 3bc02bba: dd0fd06f j 3bc0018a + 3bc02bbe: 4505 li a0,1 + 3bc02bc0: dcafd0ef jal ra,3bc0018a + 3bc02bc4: b7c9 j 3bc02b86 + +000000003bc02bc6 : + 3bc02bc6: 1101 addi sp,sp,-32 + 3bc02bc8: e426 sd s1,8(sp) + 3bc02bca: e04a sd s2,0(sp) + 3bc02bcc: ec06 sd ra,24(sp) + 3bc02bce: e822 sd s0,16(sp) + 3bc02bd0: 07154403 lbu s0,113(a0) + 3bc02bd4: 84aa mv s1,a0 + 3bc02bd6: 60000913 li s2,1536 + 3bc02bda: 883d andi s0,s0,15 + 3bc02bdc: e019 bnez s0,3bc02be2 + 3bc02bde: 10000913 li s2,256 + 3bc02be2: 8526 mv a0,s1 + 3bc02be4: dc3ff0ef jal ra,3bc029a6 + 3bc02be8: 6505 lui a0,0x1 + 3bc02bea: 91850513 addi a0,a0,-1768 # 918 <__BSS_SIZE__-0x52f8> + 3bc02bee: 0416 slli s0,s0,0x5 + 3bc02bf0: 942a add s0,s0,a0 + 3bc02bf2: 00010517 auipc a0,0x10 + 3bc02bf6: 7c653503 ld a0,1990(a0) # 3bc133b8 + 3bc02bfa: 9522 add a0,a0,s0 + 3bc02bfc: b43fe0ef jal ra,3bc0173e + 3bc02c00: 3c05350b extu a0,a0,15,0 + 3bc02c04: 050a slli a0,a0,0x2 + 3bc02c06: 01257963 bgeu a0,s2,3bc02c18 + 3bc02c0a: 6442 ld s0,16(sp) + 3bc02c0c: 5ca8 lw a0,120(s1) + 3bc02c0e: 60e2 ld ra,24(sp) + 3bc02c10: 64a2 ld s1,8(sp) + 3bc02c12: 6902 ld s2,0(sp) + 3bc02c14: 6105 addi sp,sp,32 + 3bc02c16: b705 j 3bc02b36 + 3bc02c18: 60e2 ld ra,24(sp) + 3bc02c1a: 6442 ld s0,16(sp) + 3bc02c1c: 64a2 ld s1,8(sp) + 3bc02c1e: 6902 ld s2,0(sp) + 3bc02c20: 6105 addi sp,sp,32 + 3bc02c22: 8082 ret + +000000003bc02c24 : + 3bc02c24: 27052783 lw a5,624(a0) + 3bc02c28: cba1 beqz a5,3bc02c78 + 3bc02c2a: 1101 addi sp,sp,-32 + 3bc02c2c: e822 sd s0,16(sp) + 3bc02c2e: e426 sd s1,8(sp) + 3bc02c30: e04a sd s2,0(sp) + 3bc02c32: ec06 sd ra,24(sp) + 3bc02c34: 842a mv s0,a0 + 3bc02c36: 26052823 sw zero,624(a0) + 3bc02c3a: 0d050493 addi s1,a0,208 + 3bc02c3e: 25050913 addi s2,a0,592 + 3bc02c42: 6c9c ld a5,24(s1) + 3bc02c44: c791 beqz a5,3bc02c50 + 3bc02c46: fc600593 li a1,-58 + 3bc02c4a: 8526 mv a0,s1 + 3bc02c4c: f7bff0ef jal ra,3bc02bc6 + 3bc02c50: 08048493 addi s1,s1,128 + 3bc02c54: ff2497e3 bne s1,s2,3bc02c42 + 3bc02c58: 7c1c ld a5,56(s0) + 3bc02c5a: 779c ld a5,40(a5) + 3bc02c5c: cb81 beqz a5,3bc02c6c + 3bc02c5e: 8522 mv a0,s0 + 3bc02c60: 6442 ld s0,16(sp) + 3bc02c62: 60e2 ld ra,24(sp) + 3bc02c64: 64a2 ld s1,8(sp) + 3bc02c66: 6902 ld s2,0(sp) + 3bc02c68: 6105 addi sp,sp,32 + 3bc02c6a: 8782 jr a5 + 3bc02c6c: 60e2 ld ra,24(sp) + 3bc02c6e: 6442 ld s0,16(sp) + 3bc02c70: 64a2 ld s1,8(sp) + 3bc02c72: 6902 ld s2,0(sp) + 3bc02c74: 6105 addi sp,sp,32 + 3bc02c76: 8082 ret + 3bc02c78: 8082 ret + +000000003bc02c7a : + 3bc02c7a: 1101 addi sp,sp,-32 + 3bc02c7c: e822 sd s0,16(sp) + 3bc02c7e: 00010417 auipc s0,0x10 + 3bc02c82: 73a40413 addi s0,s0,1850 # 3bc133b8 + 3bc02c86: 6008 ld a0,0(s0) + 3bc02c88: 6609 lui a2,0x2 + 3bc02c8a: 71060613 addi a2,a2,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc02c8e: 800005b7 lui a1,0x80000 + 3bc02c92: 0541 addi a0,a0,16 + 3bc02c94: ec06 sd ra,24(sp) + 3bc02c96: e426 sd s1,8(sp) + 3bc02c98: e59ff0ef jal ra,3bc02af0 + 3bc02c9c: c919 beqz a0,3bc02cb2 + 3bc02c9e: 00008597 auipc a1,0x8 + 3bc02ca2: 15258593 addi a1,a1,338 # 3bc0adf0 <__func__.4> + 3bc02ca6: 00008517 auipc a0,0x8 + 3bc02caa: f2a50513 addi a0,a0,-214 # 3bc0abd0 <__func__.5+0x30> + 3bc02cae: eaafd0ef jal ra,3bc00358 + 3bc02cb2: 600c ld a1,0(s0) + 3bc02cb4: 40000513 li a0,1024 + 3bc02cb8: 018004b7 lui s1,0x1800 + 3bc02cbc: 02458593 addi a1,a1,36 + 3bc02cc0: a85fe0ef jal ra,3bc01744 + 3bc02cc4: 600c ld a1,0(s0) + 3bc02cc6: 00400537 lui a0,0x400 + 3bc02cca: 40050513 addi a0,a0,1024 # 400400 <__BSS_SIZE__+0x3fa7f0> + 3bc02cce: 02858593 addi a1,a1,40 + 3bc02cd2: a73fe0ef jal ra,3bc01744 + 3bc02cd6: 600c ld a1,0(s0) + 3bc02cd8: 44048513 addi a0,s1,1088 # 1800440 <__BSS_SIZE__+0x17fa830> + 3bc02cdc: 10458593 addi a1,a1,260 + 3bc02ce0: a65fe0ef jal ra,3bc01744 + 3bc02ce4: 600c ld a1,0(s0) + 3bc02ce6: 5c048513 addi a0,s1,1472 + 3bc02cea: 10858593 addi a1,a1,264 + 3bc02cee: a57fe0ef jal ra,3bc01744 + 3bc02cf2: 600c ld a1,0(s0) + 3bc02cf4: 74048513 addi a0,s1,1856 + 3bc02cf8: 06400493 li s1,100 + 3bc02cfc: 10c58593 addi a1,a1,268 + 3bc02d00: a45fe0ef jal ra,3bc01744 + 3bc02d04: 600c ld a1,0(s0) + 3bc02d06: 43000513 li a0,1072 + 3bc02d0a: 05c1 addi a1,a1,16 + 3bc02d0c: a39fe0ef jal ra,3bc01744 + 3bc02d10: 6008 ld a0,0(s0) + 3bc02d12: 0541 addi a0,a0,16 + 3bc02d14: a2bfe0ef jal ra,3bc0173e + 3bc02d18: 0005061b sext.w a2,a0 + 3bc02d1c: 03057513 andi a0,a0,48 + 3bc02d20: c50d beqz a0,3bc02d4a + 3bc02d22: 34fd addiw s1,s1,-1 + 3bc02d24: ec99 bnez s1,3bc02d42 + 3bc02d26: 6442 ld s0,16(sp) + 3bc02d28: 60e2 ld ra,24(sp) + 3bc02d2a: 64a2 ld s1,8(sp) + 3bc02d2c: 00008597 auipc a1,0x8 + 3bc02d30: 0c458593 addi a1,a1,196 # 3bc0adf0 <__func__.4> + 3bc02d34: 00008517 auipc a0,0x8 + 3bc02d38: eec50513 addi a0,a0,-276 # 3bc0ac20 <__func__.5+0x80> + 3bc02d3c: 6105 addi sp,sp,32 + 3bc02d3e: e1afd06f j 3bc00358 + 3bc02d42: 4505 li a0,1 + 3bc02d44: c46fd0ef jal ra,3bc0018a + 3bc02d48: b7e1 j 3bc02d10 + 3bc02d4a: 60e2 ld ra,24(sp) + 3bc02d4c: 6442 ld s0,16(sp) + 3bc02d4e: 64a2 ld s1,8(sp) + 3bc02d50: 6105 addi sp,sp,32 + 3bc02d52: 8082 ret + +000000003bc02d54 <_dwc2_ep_disable.isra.0>: + 3bc02d54: 00010717 auipc a4,0x10 + 3bc02d58: 66c73703 ld a4,1644(a4) # 3bc133c0 + 3bc02d5c: 05070713 addi a4,a4,80 + 3bc02d60: 07154683 lbu a3,113(a0) + 3bc02d64: 00e51c63 bne a0,a4,3bc02d7c <_dwc2_ep_disable.isra.0+0x28> + 3bc02d68: 00008597 auipc a1,0x8 + 3bc02d6c: 04058593 addi a1,a1,64 # 3bc0ada8 <__func__.1> + 3bc02d70: 00008517 auipc a0,0x8 + 3bc02d74: ee050513 addi a0,a0,-288 # 3bc0ac50 <__func__.5+0xb0> + 3bc02d78: de0fd06f j 3bc00358 + 3bc02d7c: 7139 addi sp,sp,-64 + 3bc02d7e: f04a sd s2,32(sp) + 3bc02d80: ec4e sd s3,24(sp) + 3bc02d82: 00010917 auipc s2,0x10 + 3bc02d86: 63690913 addi s2,s2,1590 # 3bc133b8 + 3bc02d8a: fc06 sd ra,56(sp) + 3bc02d8c: f822 sd s0,48(sp) + 3bc02d8e: f426 sd s1,40(sp) + 3bc02d90: e852 sd s4,16(sp) + 3bc02d92: e456 sd s5,8(sp) + 3bc02d94: fc76b70b extu a4,a3,63,7 + 3bc02d98: 00093983 ld s3,0(s2) + 3bc02d9c: 00f6f793 andi a5,a3,15 + 3bc02da0: 0e070563 beqz a4,3bc02e8a <_dwc2_ep_disable.isra.0+0x136> + 3bc02da4: 04878793 addi a5,a5,72 + 3bc02da8: 0796 slli a5,a5,0x5 + 3bc02daa: 99be add s3,s3,a5 + 3bc02dac: 84aa mv s1,a0 + 3bc02dae: 854e mv a0,s3 + 3bc02db0: 98ffe0ef jal ra,3bc0173e + 3bc02db4: 00050a1b sext.w s4,a0 + 3bc02db8: 080a5a63 bgez s4,3bc02e4c <_dwc2_ep_disable.isra.0+0xf8> + 3bc02dbc: 0714c783 lbu a5,113(s1) + 3bc02dc0: 00093503 ld a0,0(s2) + 3bc02dc4: fc77b70b extu a4,a5,63,7 + 3bc02dc8: 00f7f413 andi s0,a5,15 + 3bc02dcc: c371 beqz a4,3bc02e90 <_dwc2_ep_disable.isra.0+0x13c> + 3bc02dce: 04840413 addi s0,s0,72 + 3bc02dd2: 0416 slli s0,s0,0x5 + 3bc02dd4: 00850ab3 add s5,a0,s0 + 3bc02dd8: 0421 addi s0,s0,8 + 3bc02dda: 942a add s0,s0,a0 + 3bc02ddc: 080005b7 lui a1,0x8000 + 3bc02de0: 8556 mv a0,s5 + 3bc02de2: c8dff0ef jal ra,3bc02a6e + 3bc02de6: 06400613 li a2,100 + 3bc02dea: 04000593 li a1,64 + 3bc02dee: 8522 mv a0,s0 + 3bc02df0: d01ff0ef jal ra,3bc02af0 + 3bc02df4: c919 beqz a0,3bc02e0a <_dwc2_ep_disable.isra.0+0xb6> + 3bc02df6: 00008597 auipc a1,0x8 + 3bc02dfa: f9a58593 addi a1,a1,-102 # 3bc0ad90 <__func__.0> + 3bc02dfe: 00008517 auipc a0,0x8 + 3bc02e02: e6a50513 addi a0,a0,-406 # 3bc0ac68 <__func__.5+0xc8> + 3bc02e06: d52fd0ef jal ra,3bc00358 + 3bc02e0a: 480005b7 lui a1,0x48000 + 3bc02e0e: 8556 mv a0,s5 + 3bc02e10: c5fff0ef jal ra,3bc02a6e + 3bc02e14: 06400613 li a2,100 + 3bc02e18: 4589 li a1,2 + 3bc02e1a: 8522 mv a0,s0 + 3bc02e1c: cd5ff0ef jal ra,3bc02af0 + 3bc02e20: c919 beqz a0,3bc02e36 <_dwc2_ep_disable.isra.0+0xe2> + 3bc02e22: 00008597 auipc a1,0x8 + 3bc02e26: f6e58593 addi a1,a1,-146 # 3bc0ad90 <__func__.0> + 3bc02e2a: 00008517 auipc a0,0x8 + 3bc02e2e: e7e50513 addi a0,a0,-386 # 3bc0aca8 <__func__.5+0x108> + 3bc02e32: d26fd0ef jal ra,3bc00358 + 3bc02e36: 4589 li a1,2 + 3bc02e38: 8522 mv a0,s0 + 3bc02e3a: c35ff0ef jal ra,3bc02a6e + 3bc02e3e: 07148783 lb a5,113(s1) + 3bc02e42: 0a07d163 bgez a5,3bc02ee4 <_dwc2_ep_disable.isra.0+0x190> + 3bc02e46: 5ca8 lw a0,120(s1) + 3bc02e48: cefff0ef jal ra,3bc02b36 + 3bc02e4c: 7fff8537 lui a0,0x7fff8 + 3bc02e50: 157d addi a0,a0,-1 + 3bc02e52: 00aa7a33 and s4,s4,a0 + 3bc02e56: 08000537 lui a0,0x8000 + 3bc02e5a: 85ce mv a1,s3 + 3bc02e5c: 00aa6533 or a0,s4,a0 + 3bc02e60: 8e5fe0ef jal ra,3bc01744 + 3bc02e64: 8526 mv a0,s1 + 3bc02e66: fc600593 li a1,-58 + 3bc02e6a: d5dff0ef jal ra,3bc02bc6 + 3bc02e6e: 4785 li a5,1 + 3bc02e70: 06f48823 sb a5,112(s1) + 3bc02e74: 70e2 ld ra,56(sp) + 3bc02e76: 7442 ld s0,48(sp) + 3bc02e78: 0404b023 sd zero,64(s1) + 3bc02e7c: 7902 ld s2,32(sp) + 3bc02e7e: 74a2 ld s1,40(sp) + 3bc02e80: 69e2 ld s3,24(sp) + 3bc02e82: 6a42 ld s4,16(sp) + 3bc02e84: 6aa2 ld s5,8(sp) + 3bc02e86: 6121 addi sp,sp,64 + 3bc02e88: 8082 ret + 3bc02e8a: 05878793 addi a5,a5,88 + 3bc02e8e: bf29 j 3bc02da8 <_dwc2_ep_disable.isra.0+0x54> + 3bc02e90: 05840413 addi s0,s0,88 + 3bc02e94: 0416 slli s0,s0,0x5 + 3bc02e96: 00850ab3 add s5,a0,s0 + 3bc02e9a: 0421 addi s0,s0,8 + 3bc02e9c: 942a add s0,s0,a0 + 3bc02e9e: 0551 addi a0,a0,20 + 3bc02ea0: 89ffe0ef jal ra,3bc0173e + 3bc02ea4: 08057513 andi a0,a0,128 + 3bc02ea8: e919 bnez a0,3bc02ebe <_dwc2_ep_disable.isra.0+0x16a> + 3bc02eaa: 00093503 ld a0,0(s2) + 3bc02eae: 6785 lui a5,0x1 + 3bc02eb0: 80478793 addi a5,a5,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02eb4: 20000593 li a1,512 + 3bc02eb8: 953e add a0,a0,a5 + 3bc02eba: bb5ff0ef jal ra,3bc02a6e + 3bc02ebe: 00093503 ld a0,0(s2) + 3bc02ec2: 06400613 li a2,100 + 3bc02ec6: 08000593 li a1,128 + 3bc02eca: 0551 addi a0,a0,20 + 3bc02ecc: c25ff0ef jal ra,3bc02af0 + 3bc02ed0: dd0d beqz a0,3bc02e0a <_dwc2_ep_disable.isra.0+0xb6> + 3bc02ed2: 00008597 auipc a1,0x8 + 3bc02ed6: ebe58593 addi a1,a1,-322 # 3bc0ad90 <__func__.0> + 3bc02eda: 00008517 auipc a0,0x8 + 3bc02ede: dae50513 addi a0,a0,-594 # 3bc0ac88 <__func__.5+0xe8> + 3bc02ee2: b715 j 3bc02e06 <_dwc2_ep_disable.isra.0+0xb2> + 3bc02ee4: 00093503 ld a0,0(s2) + 3bc02ee8: 6785 lui a5,0x1 + 3bc02eea: 80478793 addi a5,a5,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02eee: 40000593 li a1,1024 + 3bc02ef2: 953e add a0,a0,a5 + 3bc02ef4: b7bff0ef jal ra,3bc02a6e + 3bc02ef8: bf91 j 3bc02e4c <_dwc2_ep_disable.isra.0+0xf8> + +000000003bc02efa : + 3bc02efa: cd09 beqz a0,3bc02f14 + 3bc02efc: 6138 ld a4,64(a0) + 3bc02efe: 57a9 li a5,-22 + 3bc02f00: cb19 beqz a4,3bc02f16 + 3bc02f02: 1141 addi sp,sp,-16 + 3bc02f04: e406 sd ra,8(sp) + 3bc02f06: e4fff0ef jal ra,3bc02d54 <_dwc2_ep_disable.isra.0> + 3bc02f0a: 60a2 ld ra,8(sp) + 3bc02f0c: 4781 li a5,0 + 3bc02f0e: 853e mv a0,a5 + 3bc02f10: 0141 addi sp,sp,16 + 3bc02f12: 8082 ret + 3bc02f14: 57a9 li a5,-22 + 3bc02f16: 853e mv a0,a5 + 3bc02f18: 8082 ret + +000000003bc02f1a : + 3bc02f1a: 7139 addi sp,sp,-64 + 3bc02f1c: f426 sd s1,40(sp) + 3bc02f1e: f04a sd s2,32(sp) + 3bc02f20: ec4e sd s3,24(sp) + 3bc02f22: 84aa mv s1,a0 + 3bc02f24: 04053983 ld s3,64(a0) + 3bc02f28: 892e mv s2,a1 + 3bc02f2a: 05050513 addi a0,a0,80 + 3bc02f2e: fca00593 li a1,-54 + 3bc02f32: fc06 sd ra,56(sp) + 3bc02f34: f822 sd s0,48(sp) + 3bc02f36: e852 sd s4,16(sp) + 3bc02f38: e456 sd s5,8(sp) + 3bc02f3a: c8dff0ef jal ra,3bc02bc6 + 3bc02f3e: 8526 mv a0,s1 + 3bc02f40: 98dff0ef jal ra,3bc028cc + 3bc02f44: 00010417 auipc s0,0x10 + 3bc02f48: 47440413 addi s0,s0,1140 # 3bc133b8 + 3bc02f4c: 22091863 bnez s2,3bc0317c + 3bc02f50: 6008 ld a0,0(s0) + 3bc02f52: 04050513 addi a0,a0,64 + 3bc02f56: fe8fe0ef jal ra,3bc0173e + 3bc02f5a: 600c ld a1,0(s0) + 3bc02f5c: 6791 lui a5,0x4 + 3bc02f5e: 3c05350b extu a0,a0,15,0 + 3bc02f62: 20978793 addi a5,a5,521 # 4209 <__BSS_SIZE__-0x1a07> + 3bc02f66: 05c1 addi a1,a1,16 + 3bc02f68: 06a7ee63 bltu a5,a0,3bc02fe4 + 3bc02f6c: 4505 li a0,1 + 3bc02f6e: fd6fe0ef jal ra,3bc01744 + 3bc02f72: 03300a13 li s4,51 + 3bc02f76: 4505 li a0,1 + 3bc02f78: a12fd0ef jal ra,3bc0018a + 3bc02f7c: 6008 ld a0,0(s0) + 3bc02f7e: 3a7d addiw s4,s4,-1 + 3bc02f80: 0541 addi a0,a0,16 + 3bc02f82: fbcfe0ef jal ra,3bc0173e + 3bc02f86: 0005061b sext.w a2,a0 + 3bc02f8a: 020a1463 bnez s4,3bc02fb2 + 3bc02f8e: 00008597 auipc a1,0x8 + 3bc02f92: e3258593 addi a1,a1,-462 # 3bc0adc0 <__func__.2> + 3bc02f96: 00008517 auipc a0,0x8 + 3bc02f9a: d3250513 addi a0,a0,-718 # 3bc0acc8 <__func__.5+0x128> + 3bc02f9e: 7442 ld s0,48(sp) + 3bc02fa0: 70e2 ld ra,56(sp) + 3bc02fa2: 74a2 ld s1,40(sp) + 3bc02fa4: 7902 ld s2,32(sp) + 3bc02fa6: 69e2 ld s3,24(sp) + 3bc02fa8: 6a42 ld s4,16(sp) + 3bc02faa: 6aa2 ld s5,8(sp) + 3bc02fac: 6121 addi sp,sp,64 + 3bc02fae: baafd06f j 3bc00358 + 3bc02fb2: 8a05 andi a2,a2,1 + 3bc02fb4: f269 bnez a2,3bc02f76 + 3bc02fb6: 03300a13 li s4,51 + 3bc02fba: 4505 li a0,1 + 3bc02fbc: 9cefd0ef jal ra,3bc0018a + 3bc02fc0: 6008 ld a0,0(s0) + 3bc02fc2: 3a7d addiw s4,s4,-1 + 3bc02fc4: 0541 addi a0,a0,16 + 3bc02fc6: f78fe0ef jal ra,3bc0173e + 3bc02fca: 0005061b sext.w a2,a0 + 3bc02fce: 060a1963 bnez s4,3bc03040 + 3bc02fd2: 00008597 auipc a1,0x8 + 3bc02fd6: dee58593 addi a1,a1,-530 # 3bc0adc0 <__func__.2> + 3bc02fda: 00008517 auipc a0,0x8 + 3bc02fde: d3e50513 addi a0,a0,-706 # 3bc0ad18 <__func__.5+0x178> + 3bc02fe2: bf75 j 3bc02f9e + 3bc02fe4: 4505 li a0,1 + 3bc02fe6: f5efe0ef jal ra,3bc01744 + 3bc02fea: 03300a93 li s5,51 + 3bc02fee: 20000a37 lui s4,0x20000 + 3bc02ff2: 4505 li a0,1 + 3bc02ff4: 996fd0ef jal ra,3bc0018a + 3bc02ff8: 6008 ld a0,0(s0) + 3bc02ffa: 3afd addiw s5,s5,-1 + 3bc02ffc: 0541 addi a0,a0,16 + 3bc02ffe: f40fe0ef jal ra,3bc0173e + 3bc03002: 0005061b sext.w a2,a0 + 3bc03006: 000a9b63 bnez s5,3bc0301c + 3bc0300a: 00008597 auipc a1,0x8 + 3bc0300e: db658593 addi a1,a1,-586 # 3bc0adc0 <__func__.2> + 3bc03012: 00008517 auipc a0,0x8 + 3bc03016: cde50513 addi a0,a0,-802 # 3bc0acf0 <__func__.5+0x150> + 3bc0301a: b751 j 3bc02f9e + 3bc0301c: 01467633 and a2,a2,s4 + 3bc03020: 2601 sext.w a2,a2 + 3bc03022: da61 beqz a2,3bc02ff2 + 3bc03024: 6008 ld a0,0(s0) + 3bc03026: 0541 addi a0,a0,16 + 3bc03028: f16fe0ef jal ra,3bc0173e + 3bc0302c: 600c ld a1,0(s0) + 3bc0302e: 2501 sext.w a0,a0 + 3bc03030: 9979 andi a0,a0,-2 + 3bc03032: 01456533 or a0,a0,s4 + 3bc03036: 05c1 addi a1,a1,16 + 3bc03038: 2501 sext.w a0,a0 + 3bc0303a: f0afe0ef jal ra,3bc01744 + 3bc0303e: bfa5 j 3bc02fb6 + 3bc03040: f6065de3 bgez a2,3bc02fba + 3bc03044: 0309a503 lw a0,48(s3) + 3bc03048: e509 bnez a0,3bc03052 + 3bc0304a: 40081537 lui a0,0x40081 + 3bc0304e: 40f50513 addi a0,a0,1039 # 4008140f <__BL2_END__+0x446dfff> + 3bc03052: 600c ld a1,0(s0) + 3bc03054: 05b1 addi a1,a1,12 + 3bc03056: eeefe0ef jal ra,3bc01744 + 3bc0305a: c21ff0ef jal ra,3bc02c7a + 3bc0305e: 02091063 bnez s2,3bc0307e + 3bc03062: 6008 ld a0,0(s0) + 3bc03064: 6985 lui s3,0x1 + 3bc03066: 80498993 addi s3,s3,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc0306a: 954e add a0,a0,s3 + 3bc0306c: ed2fe0ef jal ra,3bc0173e + 3bc03070: 600c ld a1,0(s0) + 3bc03072: 2501 sext.w a0,a0 + 3bc03074: 00256513 ori a0,a0,2 + 3bc03078: 95ce add a1,a1,s3 + 3bc0307a: ecafe0ef jal ra,3bc01744 + 3bc0307e: 600c ld a1,0(s0) + 3bc03080: 6985 lui s3,0x1 + 3bc03082: 80098a13 addi s4,s3,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc03086: 95d2 add a1,a1,s4 + 3bc03088: 00040537 lui a0,0x40 + 3bc0308c: eb8fe0ef jal ra,3bc01744 + 3bc03090: 600c ld a1,0(s0) + 3bc03092: 557d li a0,-1 + 3bc03094: 0591 addi a1,a1,4 + 3bc03096: eaefe0ef jal ra,3bc01744 + 3bc0309a: 600c ld a1,0(s0) + 3bc0309c: 557d li a0,-1 + 3bc0309e: 05d1 addi a1,a1,20 + 3bc030a0: ea4fe0ef jal ra,3bc01744 + 3bc030a4: 600c ld a1,0(s0) + 3bc030a6: 800c4537 lui a0,0x800c4 + 3bc030aa: 81050513 addi a0,a0,-2032 # ffffffff800c3810 <__BL2_END__+0xffffffff444b0400> + 3bc030ae: 05e1 addi a1,a1,24 + 3bc030b0: e94fe0ef jal ra,3bc01744 + 3bc030b4: 600c ld a1,0(s0) + 3bc030b6: 4505 li a0,1 + 3bc030b8: 05a1 addi a1,a1,8 + 3bc030ba: e8afe0ef jal ra,3bc01744 + 3bc030be: 600c ld a1,0(s0) + 3bc030c0: 81098793 addi a5,s3,-2032 + 3bc030c4: 4535 li a0,13 + 3bc030c6: 95be add a1,a1,a5 + 3bc030c8: e7cfe0ef jal ra,3bc01744 + 3bc030cc: 600c ld a1,0(s0) + 3bc030ce: 81498793 addi a5,s3,-2028 + 3bc030d2: 4535 li a0,13 + 3bc030d4: 95be add a1,a1,a5 + 3bc030d6: e6efe0ef jal ra,3bc01744 + 3bc030da: 600c ld a1,0(s0) + 3bc030dc: 81c98793 addi a5,s3,-2020 + 3bc030e0: 6541 lui a0,0x10 + 3bc030e2: 95be add a1,a1,a5 + 3bc030e4: 0505 addi a0,a0,1 + 3bc030e6: e5efe0ef jal ra,3bc01744 + 3bc030ea: 02091f63 bnez s2,3bc03128 + 3bc030ee: 6008 ld a0,0(s0) + 3bc030f0: 80498993 addi s3,s3,-2044 + 3bc030f4: 954e add a0,a0,s3 + 3bc030f6: e48fe0ef jal ra,3bc0173e + 3bc030fa: 600c ld a1,0(s0) + 3bc030fc: 2501 sext.w a0,a0 + 3bc030fe: 01456533 or a0,a0,s4 + 3bc03102: 95ce add a1,a1,s3 + 3bc03104: e40fe0ef jal ra,3bc01744 + 3bc03108: 4529 li a0,10 + 3bc0310a: 880fd0ef jal ra,3bc0018a + 3bc0310e: 6008 ld a0,0(s0) + 3bc03110: 954e add a0,a0,s3 + 3bc03112: e2cfe0ef jal ra,3bc0173e + 3bc03116: 600c ld a1,0(s0) + 3bc03118: 77fd lui a5,0xfffff + 3bc0311a: 2501 sext.w a0,a0 + 3bc0311c: 7ff78793 addi a5,a5,2047 # fffffffffffff7ff <__BL2_END__+0xffffffffc43ec3ef> + 3bc03120: 95ce add a1,a1,s3 + 3bc03122: 8d7d and a0,a0,a5 + 3bc03124: e20fe0ef jal ra,3bc01744 + 3bc03128: 8526 mv a0,s1 + 3bc0312a: 7dc000ef jal ra,3bc03906 + 3bc0312e: 600c ld a1,0(s0) + 3bc03130: 6785 lui a5,0x1 + 3bc03132: 90078793 addi a5,a5,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc03136: 95be add a1,a1,a5 + 3bc03138: 6521 lui a0,0x8 + 3bc0313a: e0afe0ef jal ra,3bc01744 + 3bc0313e: 50000993 li s3,1280 + 3bc03142: 00091463 bnez s2,3bc0314a + 3bc03146: 50200993 li s3,1282 + 3bc0314a: 6008 ld a0,0(s0) + 3bc0314c: 6485 lui s1,0x1 + 3bc0314e: 80448493 addi s1,s1,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc03152: 9526 add a0,a0,s1 + 3bc03154: deafe0ef jal ra,3bc0173e + 3bc03158: 600c ld a1,0(s0) + 3bc0315a: 2501 sext.w a0,a0 + 3bc0315c: 00a9e533 or a0,s3,a0 + 3bc03160: 95a6 add a1,a1,s1 + 3bc03162: de2fe0ef jal ra,3bc01744 + 3bc03166: 7442 ld s0,48(sp) + 3bc03168: 70e2 ld ra,56(sp) + 3bc0316a: 74a2 ld s1,40(sp) + 3bc0316c: 7902 ld s2,32(sp) + 3bc0316e: 69e2 ld s3,24(sp) + 3bc03170: 6a42 ld s4,16(sp) + 3bc03172: 6aa2 ld s5,8(sp) + 3bc03174: 450d li a0,3 + 3bc03176: 6121 addi sp,sp,64 + 3bc03178: 83cfd06f j 3bc001b4 + 3bc0317c: 74fc ld a5,232(s1) + 3bc0317e: c789 beqz a5,3bc03188 + 3bc03180: 0d048513 addi a0,s1,208 + 3bc03184: bd1ff0ef jal ra,3bc02d54 <_dwc2_ep_disable.isra.0> + 3bc03188: 1684b783 ld a5,360(s1) + 3bc0318c: c789 beqz a5,3bc03196 + 3bc0318e: 15048513 addi a0,s1,336 + 3bc03192: bc3ff0ef jal ra,3bc02d54 <_dwc2_ep_disable.isra.0> + 3bc03196: 1e84b783 ld a5,488(s1) + 3bc0319a: ea0785e3 beqz a5,3bc03044 + 3bc0319e: 1d048513 addi a0,s1,464 + 3bc031a2: bb3ff0ef jal ra,3bc02d54 <_dwc2_ep_disable.isra.0> + 3bc031a6: bd79 j 3bc03044 + +000000003bc031a8 : + 3bc031a8: 7139 addi sp,sp,-64 + 3bc031aa: f822 sd s0,48(sp) + 3bc031ac: f426 sd s1,40(sp) + 3bc031ae: fc06 sd ra,56(sp) + 3bc031b0: f04a sd s2,32(sp) + 3bc031b2: ec4e sd s3,24(sp) + 3bc031b4: e852 sd s4,16(sp) + 3bc031b6: e456 sd s5,8(sp) + 3bc031b8: 00010497 auipc s1,0x10 + 3bc031bc: 2084b483 ld s1,520(s1) # 3bc133c0 + 3bc031c0: 5429 li s0,-22 + 3bc031c2: cd0d beqz a0,3bc031fc + 3bc031c4: 451c lw a5,8(a0) + 3bc031c6: 4705 li a4,1 + 3bc031c8: 5429 li s0,-22 + 3bc031ca: 37f9 addiw a5,a5,-2 + 3bc031cc: 02f76863 bltu a4,a5,3bc031fc + 3bc031d0: 691c ld a5,16(a0) + 3bc031d2: c78d beqz a5,3bc031fc + 3bc031d4: 7518 ld a4,40(a0) + 3bc031d6: c31d beqz a4,3bc031fc + 3bc031d8: 7118 ld a4,32(a0) + 3bc031da: c30d beqz a4,3bc031fc + 3bc031dc: 6538 ld a4,72(a0) + 3bc031de: cf19 beqz a4,3bc031fc + 3bc031e0: 6938 ld a4,80(a0) + 3bc031e2: cf09 beqz a4,3bc031fc + 3bc031e4: 5435 li s0,-19 + 3bc031e6: c899 beqz s1,3bc031fc + 3bc031e8: 7c98 ld a4,56(s1) + 3bc031ea: 5441 li s0,-16 + 3bc031ec: eb01 bnez a4,3bc031fc + 3bc031ee: fc88 sd a0,56(s1) + 3bc031f0: 8526 mv a0,s1 + 3bc031f2: 9782 jalr a5 + 3bc031f4: 842a mv s0,a0 + 3bc031f6: cd09 beqz a0,3bc03210 + 3bc031f8: 0204bc23 sd zero,56(s1) + 3bc031fc: 70e2 ld ra,56(sp) + 3bc031fe: 8522 mv a0,s0 + 3bc03200: 7442 ld s0,48(sp) + 3bc03202: 74a2 ld s1,40(sp) + 3bc03204: 7902 ld s2,32(sp) + 3bc03206: 69e2 ld s3,24(sp) + 3bc03208: 6a42 ld s4,16(sp) + 3bc0320a: 6aa2 ld s5,8(sp) + 3bc0320c: 6121 addi sp,sp,64 + 3bc0320e: 8082 ret + 3bc03210: 00010917 auipc s2,0x10 + 3bc03214: 1a890913 addi s2,s2,424 # 3bc133b8 + 3bc03218: 00093583 ld a1,0(s2) + 3bc0321c: 6985 lui s3,0x1 + 3bc0321e: 81498793 addi a5,s3,-2028 # 814 <__BSS_SIZE__-0x53fc> + 3bc03222: 95be add a1,a1,a5 + 3bc03224: 4535 li a0,13 + 3bc03226: 0404ba03 ld s4,64(s1) + 3bc0322a: d1afe0ef jal ra,3bc01744 + 3bc0322e: 00093583 ld a1,0(s2) + 3bc03232: 81098793 addi a5,s3,-2032 + 3bc03236: 4535 li a0,13 + 3bc03238: 95be add a1,a1,a5 + 3bc0323a: d0afe0ef jal ra,3bc01744 + 3bc0323e: 00093583 ld a1,0(s2) + 3bc03242: 81c98793 addi a5,s3,-2020 + 3bc03246: 4501 li a0,0 + 3bc03248: 95be add a1,a1,a5 + 3bc0324a: cfafe0ef jal ra,3bc01744 + 3bc0324e: 00093503 ld a0,0(s2) + 3bc03252: 80498993 addi s3,s3,-2044 + 3bc03256: 954e add a0,a0,s3 + 3bc03258: ce6fe0ef jal ra,3bc0173e + 3bc0325c: 00093583 ld a1,0(s2) + 3bc03260: 2501 sext.w a0,a0 + 3bc03262: 00256513 ori a0,a0,2 + 3bc03266: 95ce add a1,a1,s3 + 3bc03268: cdcfe0ef jal ra,3bc01744 + 3bc0326c: a0fff0ef jal ra,3bc02c7a + 3bc03270: 030a2983 lw s3,48(s4) # 20000030 + 3bc03274: 00099663 bnez s3,3bc03280 + 3bc03278: 400819b7 lui s3,0x40081 + 3bc0327c: 40798993 addi s3,s3,1031 # 40081407 <__BL2_END__+0x446dff7> + 3bc03280: 0e0007b7 lui a5,0xe000 + 3bc03284: 0007c783 lbu a5,0(a5) # e000000 + 3bc03288: 4a01 li s4,0 + 3bc0328a: 8ba1 andi a5,a5,8 + 3bc0328c: c795 beqz a5,3bc032b8 + 3bc0328e: 03006ab7 lui s5,0x3006 + 3bc03292: 014a8513 addi a0,s5,20 # 3006014 <__BSS_SIZE__+0x3000404> + 3bc03296: ca8fe0ef jal ra,3bc0173e + 3bc0329a: 00050a1b sext.w s4,a0 + 3bc0329e: 014a8593 addi a1,s5,20 + 3bc032a2: 18b00513 li a0,395 + 3bc032a6: c9efe0ef jal ra,3bc01744 + 3bc032aa: c00037b7 lui a5,0xc0003 + 3bc032ae: 03000737 lui a4,0x3000 + 3bc032b2: 07ad addi a5,a5,11 + 3bc032b4: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc032b8: 00093583 ld a1,0(s2) + 3bc032bc: 854e mv a0,s3 + 3bc032be: 05b1 addi a1,a1,12 + 3bc032c0: c84fe0ef jal ra,3bc01744 + 3bc032c4: 0e0007b7 lui a5,0xe000 + 3bc032c8: 0007c783 lbu a5,0(a5) # e000000 + 3bc032cc: 8ba1 andi a5,a5,8 + 3bc032ce: cb99 beqz a5,3bc032e4 + 3bc032d0: 030065b7 lui a1,0x3006 + 3bc032d4: 8552 mv a0,s4 + 3bc032d6: 05d1 addi a1,a1,20 + 3bc032d8: c6cfe0ef jal ra,3bc01744 + 3bc032dc: 06400513 li a0,100 + 3bc032e0: eabfc0ef jal ra,3bc0018a + 3bc032e4: 00093583 ld a1,0(s2) + 3bc032e8: 4505 li a0,1 + 3bc032ea: 05a1 addi a1,a1,8 + 3bc032ec: c58fe0ef jal ra,3bc01744 + 3bc032f0: 4581 li a1,0 + 3bc032f2: 8526 mv a0,s1 + 3bc032f4: c27ff0ef jal ra,3bc02f1a + 3bc032f8: 0204a023 sw zero,32(s1) + 3bc032fc: b701 j 3bc031fc + +000000003bc032fe : + 3bc032fe: c901 beqz a0,3bc0330e + 3bc03300: 0015151b slliw a0,a0,0x1 + 3bc03304: 00b035b3 snez a1,a1 + 3bc03308: 9d0d subw a0,a0,a1 + 3bc0330a: 0ff57513 andi a0,a0,255 + 3bc0330e: 8082 ret + +000000003bc03310 : + 3bc03310: 4510 lw a2,8(a0) + 3bc03312: 1101 addi sp,sp,-32 + 3bc03314: ec06 sd ra,24(sp) + 3bc03316: e822 sd s0,16(sp) + 3bc03318: e426 sd s1,8(sp) + 3bc0331a: 27700793 li a5,631 + 3bc0331e: 02c7e063 bltu a5,a2,3bc0333e + 3bc03322: 00008517 auipc a0,0x8 + 3bc03326: a1e50513 addi a0,a0,-1506 # 3bc0ad40 <__func__.5+0x1a0> + 3bc0332a: 27800593 li a1,632 + 3bc0332e: 82afd0ef jal ra,3bc00358 + 3bc03332: 557d li a0,-1 + 3bc03334: 60e2 ld ra,24(sp) + 3bc03336: 6442 ld s0,16(sp) + 3bc03338: 64a2 ld s1,8(sp) + 3bc0333a: 6105 addi sp,sp,32 + 3bc0333c: 8082 ret + 3bc0333e: 6100 ld s0,0(a0) + 3bc03340: 84aa mv s1,a0 + 3bc03342: 27800613 li a2,632 + 3bc03346: 4581 li a1,0 + 3bc03348: 8522 mv a0,s0 + 3bc0334a: ec8fd0ef jal ra,3bc00a12 + 3bc0334e: 708c ld a1,32(s1) + 3bc03350: 00008717 auipc a4,0x8 + 3bc03354: 35070713 addi a4,a4,848 # 3bc0b6a0 + 3bc03358: 20000613 li a2,512 + 3bc0335c: 00010797 auipc a5,0x10 + 3bc03360: 04b7be23 sd a1,92(a5) # 3bc133b8 + 3bc03364: 00008797 auipc a5,0x8 + 3bc03368: ab478793 addi a5,a5,-1356 # 3bc0ae18 + 3bc0336c: e81c sd a5,16(s0) + 3bc0336e: 05040793 addi a5,s0,80 + 3bc03372: ec1c sd a5,24(s0) + 3bc03374: 00008797 auipc a5,0x8 + 3bc03378: a9478793 addi a5,a5,-1388 # 3bc0ae08 + 3bc0337c: f81c sd a5,48(s0) + 3bc0337e: 02c44783 lbu a5,44(s0) + 3bc03382: f838 sd a4,112(s0) + 3bc03384: f878 sd a4,240(s0) + 3bc03386: fc07f793 andi a5,a5,-64 + 3bc0338a: 0017e793 ori a5,a5,1 + 3bc0338e: 02f40623 sb a5,44(s0) + 3bc03392: 478d li a5,3 + 3bc03394: d05c sw a5,36(s0) + 3bc03396: 00008797 auipc a5,0x8 + 3bc0339a: aca78793 addi a5,a5,-1334 # 3bc0ae60 + 3bc0339e: f43c sd a5,104(s0) + 3bc033a0: 04000793 li a5,64 + 3bc033a4: 06f41c23 sh a5,120(s0) + 3bc033a8: 00008797 auipc a5,0x8 + 3bc033ac: ac878793 addi a5,a5,-1336 # 3bc0ae70 + 3bc033b0: f47c sd a5,232(s0) + 3bc033b2: 28100793 li a5,641 + 3bc033b6: 14f410a3 sh a5,321(s0) + 3bc033ba: 4785 li a5,1 + 3bc033bc: 02079693 slli a3,a5,0x20 + 3bc033c0: 00268513 addi a0,a3,2 + 3bc033c4: 14a43223 sd a0,324(s0) + 3bc033c8: 0685 addi a3,a3,1 + 3bc033ca: 00008517 auipc a0,0x8 + 3bc033ce: ab650513 addi a0,a0,-1354 # 3bc0ae80 + 3bc033d2: 16a43423 sd a0,360(s0) + 3bc033d6: 1cd43223 sd a3,452(s0) + 3bc033da: 20100513 li a0,513 + 3bc033de: 00008697 auipc a3,0x8 + 3bc033e2: ab268693 addi a3,a3,-1358 # 3bc0ae90 + 3bc033e6: 1786 slli a5,a5,0x21 + 3bc033e8: 078d addi a5,a5,3 + 3bc033ea: 16e43823 sd a4,368(s0) + 3bc033ee: 1ee43823 sd a4,496(s0) + 3bc033f2: e024 sd s1,64(s0) + 3bc033f4: 24040823 sb zero,592(s0) + 3bc033f8: e440 sd s0,136(s0) + 3bc033fa: 0c0410a3 sh zero,193(s0) + 3bc033fe: 0c042223 sw zero,196(s0) + 3bc03402: 0ec41c23 sh a2,248(s0) + 3bc03406: 10843423 sd s0,264(s0) + 3bc0340a: 16c41c23 sh a2,376(s0) + 3bc0340e: 18843423 sd s0,392(s0) + 3bc03412: 1ca410a3 sh a0,449(s0) + 3bc03416: 1ed43423 sd a3,488(s0) + 3bc0341a: 1ec41c23 sh a2,504(s0) + 3bc0341e: 20843423 sd s0,520(s0) + 3bc03422: 38200713 li a4,898 + 3bc03426: 24e410a3 sh a4,577(s0) + 3bc0342a: 24f43223 sd a5,580(s0) + 3bc0342e: 00010797 auipc a5,0x10 + 3bc03432: f887b923 sd s0,-110(a5) # 3bc133c0 + 3bc03436: 60bc ld a5,64(s1) + 3bc03438: 24f43c23 sd a5,600(s0) + 3bc0343c: eb89 bnez a5,3bc0344e + 3bc0343e: 00008517 auipc a0,0x8 + 3bc03442: 93250513 addi a0,a0,-1742 # 3bc0ad70 <__func__.5+0x1d0> + 3bc03446: f13fc0ef jal ra,3bc00358 + 3bc0344a: 5551 li a0,-12 + 3bc0344c: b5e5 j 3bc03334 + 3bc0344e: 8522 mv a0,s0 + 3bc03450: 26f42023 sw a5,608(s0) + 3bc03454: 26b43423 sd a1,616(s0) + 3bc03458: c74ff0ef jal ra,3bc028cc + 3bc0345c: 4501 li a0,0 + 3bc0345e: bdd9 j 3bc03334 + +000000003bc03460 : + 3bc03460: 1101 addi sp,sp,-32 + 3bc03462: e426 sd s1,8(sp) + 3bc03464: 00010497 auipc s1,0x10 + 3bc03468: f5448493 addi s1,s1,-172 # 3bc133b8 + 3bc0346c: 6088 ld a0,0(s1) + 3bc0346e: ec06 sd ra,24(sp) + 3bc03470: e822 sd s0,16(sp) + 3bc03472: 0551 addi a0,a0,20 + 3bc03474: acafe0ef jal ra,3bc0173e + 3bc03478: 0005041b sext.w s0,a0 + 3bc0347c: 6088 ld a0,0(s1) + 3bc0347e: 0561 addi a0,a0,24 + 3bc03480: abefe0ef jal ra,3bc0173e + 3bc03484: 2501 sext.w a0,a0 + 3bc03486: 8c69 and s0,s0,a0 + 3bc03488: cc01 beqz s0,3bc034a0 + 3bc0348a: 6442 ld s0,16(sp) + 3bc0348c: 60e2 ld ra,24(sp) + 3bc0348e: 64a2 ld s1,8(sp) + 3bc03490: 00010597 auipc a1,0x10 + 3bc03494: f305b583 ld a1,-208(a1) # 3bc133c0 + 3bc03498: 4505 li a0,1 + 3bc0349a: 6105 addi sp,sp,32 + 3bc0349c: 3fb0006f j 3bc04096 + 3bc034a0: 60e2 ld ra,24(sp) + 3bc034a2: 6442 ld s0,16(sp) + 3bc034a4: 64a2 ld s1,8(sp) + 3bc034a6: 4501 li a0,0 + 3bc034a8: 6105 addi sp,sp,32 + 3bc034aa: 8082 ret + +000000003bc034ac : + 3bc034ac: 7179 addi sp,sp,-48 + 3bc034ae: f022 sd s0,32(sp) + 3bc034b0: f406 sd ra,40(sp) + 3bc034b2: ec26 sd s1,24(sp) + 3bc034b4: 470d li a4,3 + 3bc034b6: 26853403 ld s0,616(a0) + 3bc034ba: 00008697 auipc a3,0x8 + 3bc034be: 23668693 addi a3,a3,566 # 3bc0b6f0 + 3bc034c2: 00008797 auipc a5,0x8 + 3bc034c6: 23278793 addi a5,a5,562 # 3bc0b6f4 + 3bc034ca: 06e59163 bne a1,a4,3bc0352c + 3bc034ce: 04000713 li a4,64 + 3bc034d2: c298 sw a4,0(a3) + 3bc034d4: 20000713 li a4,512 + 3bc034d8: c398 sw a4,0(a5) + 3bc034da: d10c sw a1,32(a0) + 3bc034dc: 0007d783 lhu a5,0(a5) + 3bc034e0: 6485 lui s1,0x1 + 3bc034e2: 90048593 addi a1,s1,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc034e6: 95a2 add a1,a1,s0 + 3bc034e8: 04000713 li a4,64 + 3bc034ec: 06e51c23 sh a4,120(a0) + 3bc034f0: 0ef51c23 sh a5,248(a0) + 3bc034f4: 16f51c23 sh a5,376(a0) + 3bc034f8: 1ef51c23 sh a5,504(a0) + 3bc034fc: 852e mv a0,a1 + 3bc034fe: e42e sd a1,8(sp) + 3bc03500: a3efe0ef jal ra,3bc0173e + 3bc03504: 65a2 ld a1,8(sp) + 3bc03506: 2501 sext.w a0,a0 + 3bc03508: 9971 andi a0,a0,-4 + 3bc0350a: b0048493 addi s1,s1,-1280 + 3bc0350e: a36fe0ef jal ra,3bc01744 + 3bc03512: 9426 add s0,s0,s1 + 3bc03514: 8522 mv a0,s0 + 3bc03516: a28fe0ef jal ra,3bc0173e + 3bc0351a: 85a2 mv a1,s0 + 3bc0351c: 7402 ld s0,32(sp) + 3bc0351e: 70a2 ld ra,40(sp) + 3bc03520: 64e2 ld s1,24(sp) + 3bc03522: 2501 sext.w a0,a0 + 3bc03524: 9971 andi a0,a0,-4 + 3bc03526: 6145 addi sp,sp,48 + 3bc03528: a1cfe06f j 3bc01744 + 3bc0352c: 04000713 li a4,64 + 3bc03530: c298 sw a4,0(a3) + 3bc03532: c398 sw a4,0(a5) + 3bc03534: 4709 li a4,2 + 3bc03536: d118 sw a4,32(a0) + 3bc03538: b755 j 3bc034dc + +000000003bc0353a : + 3bc0353a: 1101 addi sp,sp,-32 + 3bc0353c: e822 sd s0,16(sp) + 3bc0353e: ec06 sd ra,24(sp) + 3bc03540: 07154703 lbu a4,113(a0) + 3bc03544: 7d1c ld a5,56(a0) + 3bc03546: 842a mv s0,a0 + 3bc03548: fc77368b extu a3,a4,63,7 + 3bc0354c: 2687b583 ld a1,616(a5) + 3bc03550: 00f77793 andi a5,a4,15 + 3bc03554: ce9d beqz a3,3bc03592 + 3bc03556: 04878793 addi a5,a5,72 + 3bc0355a: 0796 slli a5,a5,0x5 + 3bc0355c: 95be add a1,a1,a5 + 3bc0355e: 852e mv a0,a1 + 3bc03560: e42e sd a1,8(sp) + 3bc03562: 9dcfe0ef jal ra,3bc0173e + 3bc03566: ffe007b7 lui a5,0xffe00 + 3bc0356a: 17fd addi a5,a5,-1 + 3bc0356c: 2501 sext.w a0,a0 + 3bc0356e: 8d7d and a0,a0,a5 + 3bc03570: 07244783 lbu a5,114(s0) + 3bc03574: 4705 li a4,1 + 3bc03576: 65a2 ld a1,8(sp) + 3bc03578: 37f9 addiw a5,a5,-2 + 3bc0357a: 0ff7f793 andi a5,a5,255 + 3bc0357e: 00f76563 bltu a4,a5,3bc03588 + 3bc03582: 100007b7 lui a5,0x10000 + 3bc03586: 8d5d or a0,a0,a5 + 3bc03588: 6442 ld s0,16(sp) + 3bc0358a: 60e2 ld ra,24(sp) + 3bc0358c: 6105 addi sp,sp,32 + 3bc0358e: 9b6fe06f j 3bc01744 + 3bc03592: 05878793 addi a5,a5,88 # 10000058 + 3bc03596: b7d1 j 3bc0355a + +000000003bc03598 : + 3bc03598: 1101 addi sp,sp,-32 + 3bc0359a: ec06 sd ra,24(sp) + 3bc0359c: 07154703 lbu a4,113(a0) + 3bc035a0: 7d1c ld a5,56(a0) + 3bc035a2: fc77368b extu a3,a4,63,7 + 3bc035a6: 2687b583 ld a1,616(a5) + 3bc035aa: 00f77793 andi a5,a4,15 + 3bc035ae: ca85 beqz a3,3bc035de + 3bc035b0: 04878793 addi a5,a5,72 + 3bc035b4: 0796 slli a5,a5,0x5 + 3bc035b6: 95be add a1,a1,a5 + 3bc035b8: 852e mv a0,a1 + 3bc035ba: e42e sd a1,8(sp) + 3bc035bc: 982fe0ef jal ra,3bc0173e + 3bc035c0: 0005079b sext.w a5,a0 + 3bc035c4: 65a2 ld a1,8(sp) + 3bc035c6: 0007d563 bgez a5,3bc035d0 + 3bc035ca: 40000737 lui a4,0x40000 + 3bc035ce: 8fd9 or a5,a5,a4 + 3bc035d0: 00200537 lui a0,0x200 + 3bc035d4: 8d5d or a0,a0,a5 + 3bc035d6: 60e2 ld ra,24(sp) + 3bc035d8: 6105 addi sp,sp,32 + 3bc035da: 96afe06f j 3bc01744 + 3bc035de: 05878793 addi a5,a5,88 + 3bc035e2: 0796 slli a5,a5,0x5 + 3bc035e4: 95be add a1,a1,a5 + 3bc035e6: 852e mv a0,a1 + 3bc035e8: e42e sd a1,8(sp) + 3bc035ea: 954fe0ef jal ra,3bc0173e + 3bc035ee: 002007b7 lui a5,0x200 + 3bc035f2: 8d5d or a0,a0,a5 + 3bc035f4: 65a2 ld a1,8(sp) + 3bc035f6: 2501 sext.w a0,a0 + 3bc035f8: bff9 j 3bc035d6 + +000000003bc035fa : + 3bc035fa: 7139 addi sp,sp,-64 + 3bc035fc: f822 sd s0,48(sp) + 3bc035fe: 26853403 ld s0,616(a0) # 200268 <__BSS_SIZE__+0x1fa658> + 3bc03602: f426 sd s1,40(sp) + 3bc03604: 6485 lui s1,0x1 + 3bc03606: ec4e sd s3,24(sp) + 3bc03608: b1048593 addi a1,s1,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc0360c: 000809b7 lui s3,0x80 + 3bc03610: f04a sd s2,32(sp) + 3bc03612: 95a2 add a1,a1,s0 + 3bc03614: 892a mv s2,a0 + 3bc03616: 00898513 addi a0,s3,8 # 80008 <__BSS_SIZE__+0x7a3f8> + 3bc0361a: fc06 sd ra,56(sp) + 3bc0361c: 928fe0ef jal ra,3bc01744 + 3bc03620: 26092503 lw a0,608(s2) + 3bc03624: b1448593 addi a1,s1,-1260 + 3bc03628: 95a2 add a1,a1,s0 + 3bc0362a: 91afe0ef jal ra,3bc01744 + 3bc0362e: b0048593 addi a1,s1,-1280 + 3bc03632: 95a2 add a1,a1,s0 + 3bc03634: 852e mv a0,a1 + 3bc03636: e42e sd a1,8(sp) + 3bc03638: 906fe0ef jal ra,3bc0173e + 3bc0363c: 0005041b sext.w s0,a0 + 3bc03640: c0000537 lui a0,0xc0000 + 3bc03644: 157d addi a0,a0,-1 + 3bc03646: 65a2 ld a1,8(sp) + 3bc03648: 8c69 and s0,s0,a0 + 3bc0364a: 84000537 lui a0,0x84000 + 3bc0364e: 8c49 or s0,s0,a0 + 3bc03650: 8522 mv a0,s0 + 3bc03652: 8f2fe0ef jal ra,3bc01744 + 3bc03656: 85a2 mv a1,s0 + 3bc03658: 7442 ld s0,48(sp) + 3bc0365a: 26092603 lw a2,608(s2) + 3bc0365e: 70e2 ld ra,56(sp) + 3bc03660: 74a2 ld s1,40(sp) + 3bc03662: 7902 ld s2,32(sp) + 3bc03664: 00898693 addi a3,s3,8 + 3bc03668: 69e2 ld s3,24(sp) + 3bc0366a: 00089537 lui a0,0x89 + 3bc0366e: 4701 li a4,0 + 3bc03670: 88850513 addi a0,a0,-1912 # 88888 <__BSS_SIZE__+0x82c78> + 3bc03674: 6121 addi sp,sp,64 + 3bc03676: a4aff06f j 3bc028c0 + +000000003bc0367a : + 3bc0367a: 7179 addi sp,sp,-48 + 3bc0367c: f022 sd s0,32(sp) + 3bc0367e: 26853403 ld s0,616(a0) + 3bc03682: ec26 sd s1,24(sp) + 3bc03684: e84a sd s2,16(sp) + 3bc03686: 6485 lui s1,0x1 + 3bc03688: 892a mv s2,a0 + 3bc0368a: 26052503 lw a0,608(a0) + 3bc0368e: 91448593 addi a1,s1,-1772 # 914 <__BSS_SIZE__-0x52fc> + 3bc03692: 95a2 add a1,a1,s0 + 3bc03694: f406 sd ra,40(sp) + 3bc03696: 8aefe0ef jal ra,3bc01744 + 3bc0369a: 91048593 addi a1,s1,-1776 + 3bc0369e: 95a2 add a1,a1,s0 + 3bc036a0: 00080537 lui a0,0x80 + 3bc036a4: 8a0fe0ef jal ra,3bc01744 + 3bc036a8: 90048593 addi a1,s1,-1792 + 3bc036ac: 95a2 add a1,a1,s0 + 3bc036ae: 852e mv a0,a1 + 3bc036b0: e42e sd a1,8(sp) + 3bc036b2: 88cfe0ef jal ra,3bc0173e + 3bc036b6: 0005041b sext.w s0,a0 + 3bc036ba: c0000537 lui a0,0xc0000 + 3bc036be: 157d addi a0,a0,-1 + 3bc036c0: 65a2 ld a1,8(sp) + 3bc036c2: 8c69 and s0,s0,a0 + 3bc036c4: 84000537 lui a0,0x84000 + 3bc036c8: 8c49 or s0,s0,a0 + 3bc036ca: 8522 mv a0,s0 + 3bc036cc: 878fe0ef jal ra,3bc01744 + 3bc036d0: 479d li a5,7 + 3bc036d2: 85a2 mv a1,s0 + 3bc036d4: 7402 ld s0,32(sp) + 3bc036d6: 26092603 lw a2,608(s2) + 3bc036da: 70a2 ld ra,40(sp) + 3bc036dc: 64e2 ld s1,24(sp) + 3bc036de: 04f92423 sw a5,72(s2) + 3bc036e2: 6942 ld s2,16(sp) + 3bc036e4: 000ab537 lui a0,0xab + 3bc036e8: 4701 li a4,0 + 3bc036ea: 000806b7 lui a3,0x80 + 3bc036ee: aaa50513 addi a0,a0,-1366 # aaaaa <__BSS_SIZE__+0xa4e9a> + 3bc036f2: 6145 addi sp,sp,48 + 3bc036f4: 9ccff06f j 3bc028c0 + +000000003bc036f8 : + 3bc036f8: 1101 addi sp,sp,-32 + 3bc036fa: e822 sd s0,16(sp) + 3bc036fc: e426 sd s1,8(sp) + 3bc036fe: 26853403 ld s0,616(a0) + 3bc03702: 84aa mv s1,a0 + 3bc03704: 00087537 lui a0,0x87 + 3bc03708: 08750513 addi a0,a0,135 # 87087 <__BSS_SIZE__+0x81477> + 3bc0370c: 4701 li a4,0 + 3bc0370e: 4681 li a3,0 + 3bc03710: 4601 li a2,0 + 3bc03712: e04a sd s2,0(sp) + 3bc03714: ec06 sd ra,24(sp) + 3bc03716: 892e mv s2,a1 + 3bc03718: 9a8ff0ef jal ra,3bc028c0 + 3bc0371c: 6505 lui a0,0x1 + 3bc0371e: 02090b63 beqz s2,3bc03754 + 3bc03722: 90050513 addi a0,a0,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc03726: 9522 add a0,a0,s0 + 3bc03728: 816fe0ef jal ra,3bc0173e + 3bc0372c: 2501 sext.w a0,a0 + 3bc0372e: 002007b7 lui a5,0x200 + 3bc03732: 8d5d or a0,a0,a5 + 3bc03734: 6585 lui a1,0x1 + 3bc03736: 02090263 beqz s2,3bc0375a + 3bc0373a: 90058593 addi a1,a1,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc0373e: 95a2 add a1,a1,s0 + 3bc03740: 804fe0ef jal ra,3bc01744 + 3bc03744: 60e2 ld ra,24(sp) + 3bc03746: 6442 ld s0,16(sp) + 3bc03748: 0404a423 sw zero,72(s1) + 3bc0374c: 6902 ld s2,0(sp) + 3bc0374e: 64a2 ld s1,8(sp) + 3bc03750: 6105 addi sp,sp,32 + 3bc03752: 8082 ret + 3bc03754: b0050513 addi a0,a0,-1280 + 3bc03758: b7f9 j 3bc03726 + 3bc0375a: b0058593 addi a1,a1,-1280 + 3bc0375e: b7c5 j 3bc0373e + +000000003bc03760 : + 3bc03760: 7179 addi sp,sp,-48 + 3bc03762: 7d18 ld a4,56(a0) + 3bc03764: 5dd4 lw a3,60(a1) + 3bc03766: ec26 sd s1,24(sp) + 3bc03768: f406 sd ra,40(sp) + 3bc0376a: f022 sd s0,32(sp) + 3bc0376c: e84a sd s2,16(sp) + 3bc0376e: 07154783 lbu a5,113(a0) + 3bc03772: 84aa mv s1,a0 + 3bc03774: 6988 ld a0,16(a1) + 3bc03776: 26873603 ld a2,616(a4) # 40000268 <__BL2_END__+0x43ece58> + 3bc0377a: 7c06b70b extu a4,a3,31,0 + 3bc0377e: 953a add a0,a0,a4 + 3bc03780: 4d98 lw a4,24(a1) + 3bc03782: 8bbd andi a5,a5,15 + 3bc03784: 6591 lui a1,0x4 + 3bc03786: 9f15 subw a4,a4,a3 + 3bc03788: e399 bnez a5,3bc0378e + 3bc0378a: 0284d583 lhu a1,40(s1) + 3bc0378e: 0007069b sext.w a3,a4 + 3bc03792: 00d5b6b3 sltu a3,a1,a3 + 3bc03796: 0016c693 xori a3,a3,1 + 3bc0379a: 40d5970b mveqz a4,a1,a3 + 3bc0379e: d0b8 sw a4,96(s1) + 3bc037a0: f4a8 sd a0,104(s1) + 3bc037a2: 0007091b sext.w s2,a4 + 3bc037a6: 4405 li s0,1 + 3bc037a8: cb91 beqz a5,3bc037bc + 3bc037aa: 00090963 beqz s2,3bc037bc + 3bc037ae: 0284d683 lhu a3,40(s1) + 3bc037b2: fff9041b addiw s0,s2,-1 + 3bc037b6: 02d4543b divuw s0,s0,a3 + 3bc037ba: 2405 addiw s0,s0,1 + 3bc037bc: 05878793 addi a5,a5,88 # 200058 <__BSS_SIZE__+0x1fa448> + 3bc037c0: 0796 slli a5,a5,0x5 + 3bc037c2: 00f605b3 add a1,a2,a5 + 3bc037c6: 852e mv a0,a1 + 3bc037c8: e42e sd a1,8(sp) + 3bc037ca: f75fd0ef jal ra,3bc0173e + 3bc037ce: 54b0 lw a2,104(s1) + 3bc037d0: 840004b7 lui s1,0x84000 + 3bc037d4: 65a2 ld a1,8(sp) + 3bc037d6: 8cc9 or s1,s1,a0 + 3bc037d8: 2481 sext.w s1,s1 + 3bc037da: 8526 mv a0,s1 + 3bc037dc: 0134141b slliw s0,s0,0x13 + 3bc037e0: e032 sd a2,0(sp) + 3bc037e2: 00896433 or s0,s2,s0 + 3bc037e6: f5ffd0ef jal ra,3bc01744 + 3bc037ea: 0004069b sext.w a3,s0 + 3bc037ee: 7402 ld s0,32(sp) + 3bc037f0: 6602 ld a2,0(sp) + 3bc037f2: 70a2 ld ra,40(sp) + 3bc037f4: 6942 ld s2,16(sp) + 3bc037f6: 85a6 mv a1,s1 + 3bc037f8: 64e2 ld s1,24(sp) + 3bc037fa: 00077537 lui a0,0x77 + 3bc037fe: 4701 li a4,0 + 3bc03800: 77750513 addi a0,a0,1911 # 77777 <__BSS_SIZE__+0x71b67> + 3bc03804: 6145 addi sp,sp,48 + 3bc03806: 8baff06f j 3bc028c0 + +000000003bc0380a : + 3bc0380a: 715d addi sp,sp,-80 + 3bc0380c: ec56 sd s5,24(sp) + 3bc0380e: 8aae mv s5,a1 + 3bc03810: fc26 sd s1,56(sp) + 3bc03812: 4581 li a1,0 + 3bc03814: 84aa mv s1,a0 + 3bc03816: 8556 mv a0,s5 + 3bc03818: e0a2 sd s0,64(sp) + 3bc0381a: f84a sd s2,48(sp) + 3bc0381c: f44e sd s3,40(sp) + 3bc0381e: f052 sd s4,32(sp) + 3bc03820: e486 sd ra,72(sp) + 3bc03822: addff0ef jal ra,3bc032fe + 3bc03826: 0005079b sext.w a5,a0 + 3bc0382a: 00779a13 slli s4,a5,0x7 + 3bc0382e: 014487b3 add a5,s1,s4 + 3bc03832: 00751413 slli s0,a0,0x7 + 3bc03836: 0987b903 ld s2,152(a5) + 3bc0383a: 09840993 addi s3,s0,152 + 3bc0383e: 99a6 add s3,s3,s1 + 3bc03840: 09298563 beq s3,s2,3bc038ca + 3bc03844: 6505 lui a0,0x1 + 3bc03846: b1050513 addi a0,a0,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc0384a: 005a9793 slli a5,s5,0x5 + 3bc0384e: 97aa add a5,a5,a0 + 3bc03850: 2684b503 ld a0,616(s1) # ffffffff84000268 <__BL2_END__+0xffffffff483ece58> + 3bc03854: fc090593 addi a1,s2,-64 + 3bc03858: e42e sd a1,8(sp) + 3bc0385a: 953e add a0,a0,a5 + 3bc0385c: ee3fd0ef jal ra,3bc0173e + 3bc03860: 0005071b sext.w a4,a0 + 3bc03864: 65a2 ld a1,8(sp) + 3bc03866: 07f77693 andi a3,a4,127 + 3bc0386a: 000a8463 beqz s5,3bc03872 + 3bc0386e: fe092683 lw a3,-32(s2) + 3bc03872: 01448833 add a6,s1,s4 + 3bc03876: 0b082703 lw a4,176(a6) + 3bc0387a: ffc92883 lw a7,-4(s2) + 3bc0387e: fd892603 lw a2,-40(s2) + 3bc03882: 40d7033b subw t1,a4,a3 + 3bc03886: 05040513 addi a0,s0,80 + 3bc0388a: 411607bb subw a5,a2,a7 + 3bc0388e: 86be mv a3,a5 + 3bc03890: 00f337b3 sltu a5,t1,a5 + 3bc03894: 0017c793 xori a5,a5,1 + 3bc03898: 40f3168b mveqz a3,t1,a5 + 3bc0389c: 011687bb addw a5,a3,a7 + 3bc038a0: 07885683 lhu a3,120(a6) + 3bc038a4: fef92e23 sw a5,-4(s2) + 3bc038a8: 9526 add a0,a0,s1 + 3bc038aa: 02d3773b remuw a4,t1,a3 + 3bc038ae: e319 bnez a4,3bc038b4 + 3bc038b0: 04f61263 bne a2,a5,3bc038f4 + 3bc038b4: 020a9463 bnez s5,3bc038dc + 3bc038b8: 44b8 lw a4,72(s1) + 3bc038ba: 4791 li a5,4 + 3bc038bc: 02f71063 bne a4,a5,3bc038dc + 3bc038c0: 8526 mv a0,s1 + 3bc038c2: db9ff0ef jal ra,3bc0367a + 3bc038c6: 479d li a5,7 + 3bc038c8: c4bc sw a5,72(s1) + 3bc038ca: 60a6 ld ra,72(sp) + 3bc038cc: 6406 ld s0,64(sp) + 3bc038ce: 74e2 ld s1,56(sp) + 3bc038d0: 7942 ld s2,48(sp) + 3bc038d2: 79a2 ld s3,40(sp) + 3bc038d4: 7a02 ld s4,32(sp) + 3bc038d6: 6ae2 ld s5,24(sp) + 3bc038d8: 6161 addi sp,sp,80 + 3bc038da: 8082 ret + 3bc038dc: 4601 li a2,0 + 3bc038de: e42a sd a0,8(sp) + 3bc038e0: 832ff0ef jal ra,3bc02912 + 3bc038e4: 014487b3 add a5,s1,s4 + 3bc038e8: 6fcc ld a1,152(a5) + 3bc038ea: feb980e3 beq s3,a1,3bc038ca + 3bc038ee: 6522 ld a0,8(sp) + 3bc038f0: fc058593 addi a1,a1,-64 # 3fc0 <__BSS_SIZE__-0x1c50> + 3bc038f4: 6406 ld s0,64(sp) + 3bc038f6: 60a6 ld ra,72(sp) + 3bc038f8: 74e2 ld s1,56(sp) + 3bc038fa: 7942 ld s2,48(sp) + 3bc038fc: 79a2 ld s3,40(sp) + 3bc038fe: 7a02 ld s4,32(sp) + 3bc03900: 6ae2 ld s5,24(sp) + 3bc03902: 6161 addi sp,sp,80 + 3bc03904: bdb1 j 3bc03760 + +000000003bc03906 : + 3bc03906: 26853583 ld a1,616(a0) + 3bc0390a: 6785 lui a5,0x1 + 3bc0390c: b1078793 addi a5,a5,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc03910: 20080537 lui a0,0x20080 + 3bc03914: 95be add a1,a1,a5 + 3bc03916: 0521 addi a0,a0,8 + 3bc03918: e2dfd06f j 3bc01744 + +000000003bc0391c : + 3bc0391c: 7179 addi sp,sp,-48 + 3bc0391e: e84a sd s2,16(sp) + 3bc03920: 26853903 ld s2,616(a0) # 20080268 + 3bc03924: 0585 addi a1,a1,1 + 3bc03926: f022 sd s0,32(sp) + 3bc03928: 05b2 slli a1,a1,0xc + 3bc0392a: 0036841b addiw s0,a3,3 + 3bc0392e: ec26 sd s1,24(sp) + 3bc03930: f406 sd ra,40(sp) + 3bc03932: 4024340b extu s0,s0,16,2 + 3bc03936: 992e add s2,s2,a1 + 3bc03938: 4481 li s1,0 + 3bc0393a: 0004879b sext.w a5,s1 + 3bc0393e: 0087e863 bltu a5,s0,3bc0394e + 3bc03942: 70a2 ld ra,40(sp) + 3bc03944: 7402 ld s0,32(sp) + 3bc03946: 64e2 ld s1,24(sp) + 3bc03948: 6942 ld s2,16(sp) + 3bc0394a: 6145 addi sp,sp,48 + 3bc0394c: 8082 ret + 3bc0394e: 4496450b lrw a0,a2,s1,2 + 3bc03952: 85ca mv a1,s2 + 3bc03954: e432 sd a2,8(sp) + 3bc03956: deffd0ef jal ra,3bc01744 + 3bc0395a: 6622 ld a2,8(sp) + 3bc0395c: 0485 addi s1,s1,1 + 3bc0395e: bff1 j 3bc0393a + +000000003bc03960 : + 3bc03960: 7d1c ld a5,56(a0) + 3bc03962: 7119 addi sp,sp,-128 + 3bc03964: f8a2 sd s0,112(sp) + 3bc03966: f862 sd s8,48(sp) + 3bc03968: f466 sd s9,40(sp) + 3bc0396a: f06a sd s10,32(sp) + 3bc0396c: 2687bc83 ld s9,616(a5) + 3bc03970: fc86 sd ra,120(sp) + 3bc03972: 5ddc lw a5,60(a1) + 3bc03974: f4a6 sd s1,104(sp) + 3bc03976: f0ca sd s2,96(sp) + 3bc03978: ecce sd s3,88(sp) + 3bc0397a: e8d2 sd s4,80(sp) + 3bc0397c: e4d6 sd s5,72(sp) + 3bc0397e: e0da sd s6,64(sp) + 3bc03980: fc5e sd s7,56(sp) + 3bc03982: ec6e sd s11,24(sp) + 3bc03984: 07154903 lbu s2,113(a0) + 3bc03988: 6998 ld a4,16(a1) + 3bc0398a: 4d80 lw s0,24(a1) + 3bc0398c: 7c07b60b extu a2,a5,31,0 + 3bc03990: 00f97d13 andi s10,s2,15 + 3bc03994: 963a add a2,a2,a4 + 3bc03996: 40f4073b subw a4,s0,a5 + 3bc0399a: 6791 lui a5,0x4 + 3bc0399c: 8c2a mv s8,a0 + 3bc0399e: 896a mv s2,s10 + 3bc039a0: 6411 lui s0,0x4 + 3bc039a2: 00e7e363 bltu a5,a4,3bc039a8 + 3bc039a6: 843a mv s0,a4 + 3bc039a8: 000d1d63 bnez s10,3bc039c2 + 3bc039ac: 028c5783 lhu a5,40(s8) + 3bc039b0: 873e mv a4,a5 + 3bc039b2: 00f437b3 sltu a5,s0,a5 + 3bc039b6: 0017c793 xori a5,a5,1 + 3bc039ba: 40f4170b mveqz a4,s0,a5 + 3bc039be: 0007041b sext.w s0,a4 + 3bc039c2: 0004099b sext.w s3,s0 + 3bc039c6: 073c2023 sw s3,96(s8) + 3bc039ca: 06cc3423 sd a2,104(s8) + 3bc039ce: 00060a1b sext.w s4,a2 + 3bc039d2: 4785 li a5,1 + 3bc039d4: c801 beqz s0,3bc039e4 + 3bc039d6: 028c5503 lhu a0,40(s8) + 3bc039da: fff4079b addiw a5,s0,-1 + 3bc039de: 02a7d7bb divuw a5,a5,a0 + 3bc039e2: 2785 addiw a5,a5,1 + 3bc039e4: 6d85 lui s11,0x1 + 3bc039e6: 005d1b13 slli s6,s10,0x5 + 3bc039ea: 910d8a93 addi s5,s11,-1776 # 910 <__BSS_SIZE__-0x5300> + 3bc039ee: 0137979b slliw a5,a5,0x13 + 3bc039f2: 9ada add s5,s5,s6 + 3bc039f4: 00f46533 or a0,s0,a5 + 3bc039f8: 9ae6 add s5,s5,s9 + 3bc039fa: 85d6 mv a1,s5 + 3bc039fc: 2501 sext.w a0,a0 + 3bc039fe: e432 sd a2,8(sp) + 3bc03a00: d45fd0ef jal ra,3bc01744 + 3bc03a04: 900d8793 addi a5,s11,-1792 + 3bc03a08: 9b3e add s6,s6,a5 + 3bc03a0a: 9b66 add s6,s6,s9 + 3bc03a0c: 855a mv a0,s6 + 3bc03a0e: d31fd0ef jal ra,3bc0173e + 3bc03a12: 078c2783 lw a5,120(s8) + 3bc03a16: bc4004b7 lui s1,0xbc400 + 3bc03a1a: 00050b9b sext.w s7,a0 + 3bc03a1e: 14fd addi s1,s1,-1 + 3bc03a20: 0167979b slliw a5,a5,0x16 + 3bc03a24: 009bf4b3 and s1,s7,s1 + 3bc03a28: 8cdd or s1,s1,a5 + 3bc03a2a: 77e1 lui a5,0xffff8 + 3bc03a2c: 7ff78793 addi a5,a5,2047 # ffffffffffff87ff <__BL2_END__+0xffffffffc43e53ef> + 3bc03a30: 2481 sext.w s1,s1 + 3bc03a32: 8cfd and s1,s1,a5 + 3bc03a34: 840007b7 lui a5,0x84000 + 3bc03a38: 8cdd or s1,s1,a5 + 3bc03a3a: 85da mv a1,s6 + 3bc03a3c: 8526 mv a0,s1 + 3bc03a3e: d07fd0ef jal ra,3bc01744 + 3bc03a42: 6622 ld a2,8(sp) + 3bc03a44: 038c3503 ld a0,56(s8) + 3bc03a48: 3c04368b extu a3,s0,15,0 + 3bc03a4c: 85ea mv a1,s10 + 3bc03a4e: ecfff0ef jal ra,3bc0391c + 3bc03a52: c809 beqz s0,3bc03a64 + 3bc03a54: 834d8593 addi a1,s11,-1996 + 3bc03a58: 4505 li a0,1 + 3bc03a5a: 95e6 add a1,a1,s9 + 3bc03a5c: 0125153b sllw a0,a0,s2 + 3bc03a60: ce5fd0ef jal ra,3bc01744 + 3bc03a64: 855a mv a0,s6 + 3bc03a66: cd9fd0ef jal ra,3bc0173e + 3bc03a6a: 0005071b sext.w a4,a0 + 3bc03a6e: 00044537 lui a0,0x44 + 3bc03a72: 86de mv a3,s7 + 3bc03a74: 8652 mv a2,s4 + 3bc03a76: 85a6 mv a1,s1 + 3bc03a78: 44450513 addi a0,a0,1092 # 44444 <__BSS_SIZE__+0x3e834> + 3bc03a7c: e45fe0ef jal ra,3bc028c0 + 3bc03a80: 8556 mv a0,s5 + 3bc03a82: cbdfd0ef jal ra,3bc0173e + 3bc03a86: 0005059b sext.w a1,a0 + 3bc03a8a: 00046537 lui a0,0x46 + 3bc03a8e: 86ca mv a3,s2 + 3bc03a90: 8622 mv a2,s0 + 3bc03a92: 46450513 addi a0,a0,1124 # 46464 <__BSS_SIZE__+0x40854> + 3bc03a96: 4701 li a4,0 + 3bc03a98: e29fe0ef jal ra,3bc028c0 + 3bc03a9c: 70e6 ld ra,120(sp) + 3bc03a9e: 7446 ld s0,112(sp) + 3bc03aa0: 74a6 ld s1,104(sp) + 3bc03aa2: 7906 ld s2,96(sp) + 3bc03aa4: 6a46 ld s4,80(sp) + 3bc03aa6: 6aa6 ld s5,72(sp) + 3bc03aa8: 6b06 ld s6,64(sp) + 3bc03aaa: 7be2 ld s7,56(sp) + 3bc03aac: 7c42 ld s8,48(sp) + 3bc03aae: 7ca2 ld s9,40(sp) + 3bc03ab0: 7d02 ld s10,32(sp) + 3bc03ab2: 6de2 ld s11,24(sp) + 3bc03ab4: 854e mv a0,s3 + 3bc03ab6: 69e6 ld s3,88(sp) + 3bc03ab8: 6109 addi sp,sp,128 + 3bc03aba: 8082 ret + +000000003bc03abc : + 3bc03abc: 7179 addi sp,sp,-48 + 3bc03abe: e84a sd s2,16(sp) + 3bc03ac0: 26853903 ld s2,616(a0) + 3bc03ac4: 0585 addi a1,a1,1 + 3bc03ac6: f022 sd s0,32(sp) + 3bc03ac8: 05b2 slli a1,a1,0xc + 3bc03aca: 0036841b addiw s0,a3,3 + 3bc03ace: ec26 sd s1,24(sp) + 3bc03ad0: f406 sd ra,40(sp) + 3bc03ad2: 4024340b extu s0,s0,16,2 + 3bc03ad6: 992e add s2,s2,a1 + 3bc03ad8: 4481 li s1,0 + 3bc03ada: 0004879b sext.w a5,s1 + 3bc03ade: 0087e863 bltu a5,s0,3bc03aee + 3bc03ae2: 70a2 ld ra,40(sp) + 3bc03ae4: 7402 ld s0,32(sp) + 3bc03ae6: 64e2 ld s1,24(sp) + 3bc03ae8: 6942 ld s2,16(sp) + 3bc03aea: 6145 addi sp,sp,48 + 3bc03aec: 8082 ret + 3bc03aee: 854a mv a0,s2 + 3bc03af0: e432 sd a2,8(sp) + 3bc03af2: c4dfd0ef jal ra,3bc0173e + 3bc03af6: 6622 ld a2,8(sp) + 3bc03af8: 4496550b srw a0,a2,s1,2 + 3bc03afc: 0485 addi s1,s1,1 + 3bc03afe: bff1 j 3bc03ada + +000000003bc03b00 : + 3bc03b00: 7179 addi sp,sp,-48 + 3bc03b02: e44e sd s3,8(sp) + 3bc03b04: 02855983 lhu s3,40(a0) + 3bc03b08: f022 sd s0,32(sp) + 3bc03b0a: ec26 sd s1,24(sp) + 3bc03b0c: f406 sd ra,40(sp) + 3bc03b0e: e84a sd s2,16(sp) + 3bc03b10: 84aa mv s1,a0 + 3bc03b12: 842e mv s0,a1 + 3bc03b14: e4dff0ef jal ra,3bc03960 + 3bc03b18: 2501 sext.w a0,a0 + 3bc03b1a: 00a99e63 bne s3,a0,3bc03b36 + 3bc03b1e: 5c5c lw a5,60(s0) + 3bc03b20: 4c18 lw a4,24(s0) + 3bc03b22: 4501 li a0,0 + 3bc03b24: 013787bb addw a5,a5,s3 + 3bc03b28: 00f71b63 bne a4,a5,3bc03b3e + 3bc03b2c: 505c lw a5,36(s0) + 3bc03b2e: 02e79713 slli a4,a5,0x2e + 3bc03b32: 00074663 bltz a4,3bc03b3e + 3bc03b36: 7c9c ld a5,56(s1) + 3bc03b38: 4505 li a0,1 + 3bc03b3a: 0407a423 sw zero,72(a5) # ffffffff84000048 <__BL2_END__+0xffffffff483ecc38> + 3bc03b3e: 70a2 ld ra,40(sp) + 3bc03b40: 7402 ld s0,32(sp) + 3bc03b42: 64e2 ld s1,24(sp) + 3bc03b44: 6942 ld s2,16(sp) + 3bc03b46: 69a2 ld s3,8(sp) + 3bc03b48: 6145 addi sp,sp,48 + 3bc03b4a: 8082 ret + +000000003bc03b4c : + 3bc03b4c: 7179 addi sp,sp,-48 + 3bc03b4e: ec26 sd s1,24(sp) + 3bc03b50: 84ae mv s1,a1 + 3bc03b52: 26853583 ld a1,616(a0) + 3bc03b56: 6785 lui a5,0x1 + 3bc03b58: 80078793 addi a5,a5,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc03b5c: 95be add a1,a1,a5 + 3bc03b5e: f022 sd s0,32(sp) + 3bc03b60: 842a mv s0,a0 + 3bc03b62: 852e mv a0,a1 + 3bc03b64: f406 sd ra,40(sp) + 3bc03b66: e42e sd a1,8(sp) + 3bc03b68: bd7fd0ef jal ra,3bc0173e + 3bc03b6c: 0044979b slliw a5,s1,0x4 + 3bc03b70: 65a2 ld a1,8(sp) + 3bc03b72: 8d5d or a0,a0,a5 + 3bc03b74: 2501 sext.w a0,a0 + 3bc03b76: bcffd0ef jal ra,3bc01744 + 3bc03b7a: 8522 mv a0,s0 + 3bc03b7c: affff0ef jal ra,3bc0367a + 3bc03b80: 4785 li a5,1 + 3bc03b82: 24940823 sb s1,592(s0) # 4250 <__BSS_SIZE__-0x19c0> + 3bc03b86: 70a2 ld ra,40(sp) + 3bc03b88: 26f42823 sw a5,624(s0) + 3bc03b8c: 7402 ld s0,32(sp) + 3bc03b8e: 64e2 ld s1,24(sp) + 3bc03b90: 6145 addi sp,sp,48 + 3bc03b92: 8082 ret + +000000003bc03b94 : + 3bc03b94: 6d4c ld a1,152(a0) + 3bc03b96: 09850693 addi a3,a0,152 + 3bc03b9a: 05050713 addi a4,a0,80 + 3bc03b9e: 00d58e63 beq a1,a3,3bc03bba + 3bc03ba2: fd85a683 lw a3,-40(a1) + 3bc03ba6: e689 bnez a3,3bc03bb0 + 3bc03ba8: 0a052823 sw zero,176(a0) + 3bc03bac: acfff06f j 3bc0367a + 3bc03bb0: fc058593 addi a1,a1,-64 + 3bc03bb4: 853a mv a0,a4 + 3bc03bb6: babff06f j 3bc03760 + 3bc03bba: 8082 ret + +000000003bc03bbc : + 3bc03bbc: 6d4c ld a1,152(a0) + 3bc03bbe: 09850693 addi a3,a0,152 + 3bc03bc2: 02d58b63 beq a1,a3,3bc03bf8 + 3bc03bc6: 1141 addi sp,sp,-16 + 3bc03bc8: e022 sd s0,0(sp) + 3bc03bca: e406 sd ra,8(sp) + 3bc03bcc: fc058593 addi a1,a1,-64 + 3bc03bd0: 842a mv s0,a0 + 3bc03bd2: 05050713 addi a4,a0,80 + 3bc03bd6: 4501 li a0,0 + 3bc03bd8: c989 beqz a1,3bc03bea + 3bc03bda: 853a mv a0,a4 + 3bc03bdc: f25ff0ef jal ra,3bc03b00 + 3bc03be0: 4785 li a5,1 + 3bc03be2: 00f51863 bne a0,a5,3bc03bf2 + 3bc03be6: 4795 li a5,5 + 3bc03be8: c43c sw a5,72(s0) + 3bc03bea: 60a2 ld ra,8(sp) + 3bc03bec: 6402 ld s0,0(sp) + 3bc03bee: 0141 addi sp,sp,16 + 3bc03bf0: 8082 ret + 3bc03bf2: c43c sw a5,72(s0) + 3bc03bf4: 4505 li a0,1 + 3bc03bf6: bfd5 j 3bc03bea + 3bc03bf8: 4501 li a0,0 + 3bc03bfa: 8082 ret + +000000003bc03bfc : + 3bc03bfc: 1101 addi sp,sp,-32 + 3bc03bfe: ec06 sd ra,24(sp) + 3bc03c00: 07154703 lbu a4,113(a0) + 3bc03c04: 7d1c ld a5,56(a0) + 3bc03c06: fc77368b extu a3,a4,63,7 + 3bc03c0a: 2687b583 ld a1,616(a5) + 3bc03c0e: 00f77793 andi a5,a4,15 + 3bc03c12: c295 beqz a3,3bc03c36 + 3bc03c14: 04878793 addi a5,a5,72 + 3bc03c18: 0796 slli a5,a5,0x5 + 3bc03c1a: 95be add a1,a1,a5 + 3bc03c1c: 852e mv a0,a1 + 3bc03c1e: e42e sd a1,8(sp) + 3bc03c20: b1ffd0ef jal ra,3bc0173e + 3bc03c24: 65a2 ld a1,8(sp) + 3bc03c26: 60e2 ld ra,24(sp) + 3bc03c28: 080007b7 lui a5,0x8000 + 3bc03c2c: 8d5d or a0,a0,a5 + 3bc03c2e: 2501 sext.w a0,a0 + 3bc03c30: 6105 addi sp,sp,32 + 3bc03c32: b13fd06f j 3bc01744 + 3bc03c36: 05878793 addi a5,a5,88 # 8000058 + 3bc03c3a: bff9 j 3bc03c18 + +000000003bc03c3c : + 3bc03c3c: 07154703 lbu a4,113(a0) + 3bc03c40: cd21 beqz a0,3bc03c98 + 3bc03c42: 6134 ld a3,64(a0) + 3bc03c44: 87aa mv a5,a0 + 3bc03c46: caa9 beqz a3,3bc03c98 + 3bc03c48: 00f77613 andi a2,a4,15 + 3bc03c4c: c631 beqz a2,3bc03c98 + 3bc03c4e: 0036c603 lbu a2,3(a3) # 80003 <__BSS_SIZE__+0x7a3f3> + 3bc03c52: 4685 li a3,1 + 3bc03c54: 04d60263 beq a2,a3,3bc03c98 + 3bc03c58: 1101 addi sp,sp,-32 + 3bc03c5a: ec06 sd ra,24(sp) + 3bc03c5c: cd99 beqz a1,3bc03c7a + 3bc03c5e: fc77368b extu a3,a4,63,7 + 3bc03c62: c29d beqz a3,3bc03c88 + 3bc03c64: 6534 ld a3,72(a0) + 3bc03c66: 04850713 addi a4,a0,72 + 3bc03c6a: fdd00593 li a1,-35 + 3bc03c6e: 00e68d63 beq a3,a4,3bc03c88 + 3bc03c72: 60e2 ld ra,24(sp) + 3bc03c74: 852e mv a0,a1 + 3bc03c76: 6105 addi sp,sp,32 + 3bc03c78: 8082 ret + 3bc03c7a: 06050823 sb zero,112(a0) + 3bc03c7e: e42e sd a1,8(sp) + 3bc03c80: 8bbff0ef jal ra,3bc0353a + 3bc03c84: 65a2 ld a1,8(sp) + 3bc03c86: b7f5 j 3bc03c72 + 3bc03c88: 4705 li a4,1 + 3bc03c8a: 06e78823 sb a4,112(a5) + 3bc03c8e: 853e mv a0,a5 + 3bc03c90: 909ff0ef jal ra,3bc03598 + 3bc03c94: 4581 li a1,0 + 3bc03c96: bff1 j 3bc03c72 + 3bc03c98: 55a9 li a1,-22 + 3bc03c9a: 852e mv a0,a1 + 3bc03c9c: 8082 ret + +000000003bc03c9e : + 3bc03c9e: 7d1c ld a5,56(a0) + 3bc03ca0: 7179 addi sp,sp,-48 + 3bc03ca2: f022 sd s0,32(sp) + 3bc03ca4: ec26 sd s1,24(sp) + 3bc03ca6: e84a sd s2,16(sp) + 3bc03ca8: e44e sd s3,8(sp) + 3bc03caa: f406 sd ra,40(sp) + 3bc03cac: 2687b483 ld s1,616(a5) + 3bc03cb0: 07154783 lbu a5,113(a0) + 3bc03cb4: 4905 li s2,1 + 3bc03cb6: 89aa mv s3,a0 + 3bc03cb8: 00f7f413 andi s0,a5,15 + 3bc03cbc: fc77b70b extu a4,a5,63,7 + 3bc03cc0: 0089193b sllw s2,s2,s0 + 3bc03cc4: cf25 beqz a4,3bc03d3c + 3bc03cc6: 04840513 addi a0,s0,72 + 3bc03cca: 0516 slli a0,a0,0x5 + 3bc03ccc: 9526 add a0,a0,s1 + 3bc03cce: a71fd0ef jal ra,3bc0173e + 3bc03cd2: 2501 sext.w a0,a0 + 3bc03cd4: 3cf5378b extu a5,a0,15,15 + 3bc03cd8: ef9d bnez a5,3bc03d16 + 3bc03cda: fff407b7 lui a5,0xfff40 + 3bc03cde: 17fd addi a5,a5,-1 + 3bc03ce0: 8d7d and a0,a0,a5 + 3bc03ce2: 0729c783 lbu a5,114(s3) + 3bc03ce6: 04840593 addi a1,s0,72 + 3bc03cea: 0127979b slliw a5,a5,0x12 + 3bc03cee: 8d5d or a0,a0,a5 + 3bc03cf0: 0289d783 lhu a5,40(s3) + 3bc03cf4: 80057513 andi a0,a0,-2048 + 3bc03cf8: 8d5d or a0,a0,a5 + 3bc03cfa: 180087b7 lui a5,0x18008 + 3bc03cfe: 8d5d or a0,a0,a5 + 3bc03d00: 07198783 lb a5,113(s3) + 3bc03d04: 2501 sext.w a0,a0 + 3bc03d06: 0007c463 bltz a5,3bc03d0e + 3bc03d0a: 05840593 addi a1,s0,88 + 3bc03d0e: 0596 slli a1,a1,0x5 + 3bc03d10: 95a6 add a1,a1,s1 + 3bc03d12: a33fd0ef jal ra,3bc01744 + 3bc03d16: 6585 lui a1,0x1 + 3bc03d18: 81c58593 addi a1,a1,-2020 # 81c <__BSS_SIZE__-0x53f4> + 3bc03d1c: 94ae add s1,s1,a1 + 3bc03d1e: 8526 mv a0,s1 + 3bc03d20: a1ffd0ef jal ra,3bc0173e + 3bc03d24: 2501 sext.w a0,a0 + 3bc03d26: 7402 ld s0,32(sp) + 3bc03d28: 70a2 ld ra,40(sp) + 3bc03d2a: 69a2 ld s3,8(sp) + 3bc03d2c: 85a6 mv a1,s1 + 3bc03d2e: 01256533 or a0,a0,s2 + 3bc03d32: 64e2 ld s1,24(sp) + 3bc03d34: 6942 ld s2,16(sp) + 3bc03d36: 6145 addi sp,sp,48 + 3bc03d38: a0dfd06f j 3bc01744 + 3bc03d3c: 05840513 addi a0,s0,88 + 3bc03d40: 0516 slli a0,a0,0x5 + 3bc03d42: 9526 add a0,a0,s1 + 3bc03d44: 9fbfd0ef jal ra,3bc0173e + 3bc03d48: 2501 sext.w a0,a0 + 3bc03d4a: 0109191b slliw s2,s2,0x10 + 3bc03d4e: b759 j 3bc03cd4 + +000000003bc03d50 : + 3bc03d50: 453c lw a5,72(a0) + 3bc03d52: 34079163 bnez a5,3bc04094 + 3bc03d56: 7139 addi sp,sp,-64 + 3bc03d58: f426 sd s1,40(sp) + 3bc03d5a: 25853483 ld s1,600(a0) + 3bc03d5e: f822 sd s0,48(sp) + 3bc03d60: fa400593 li a1,-92 + 3bc03d64: 842a mv s0,a0 + 3bc03d66: 05050513 addi a0,a0,80 + 3bc03d6a: ec4e sd s3,24(sp) + 3bc03d6c: fc06 sd ra,56(sp) + 3bc03d6e: f04a sd s2,32(sp) + 3bc03d70: e852 sd s4,16(sp) + 3bc03d72: c35fe0ef jal ra,3bc029a6 + 3bc03d76: 0004c783 lbu a5,0(s1) # ffffffffbc400000 <__BL2_END__+0xffffffff807ecbf0> + 3bc03d7a: 0c144703 lbu a4,193(s0) + 3bc03d7e: 0064d983 lhu s3,6(s1) + 3bc03d82: fc77b60b extu a2,a5,63,7 + 3bc03d86: 07f77693 andi a3,a4,127 + 3bc03d8a: c609 beqz a2,3bc03d94 + 3bc03d8c: f8076713 ori a4,a4,-128 + 3bc03d90: 0ff77693 andi a3,a4,255 + 3bc03d94: 0607f793 andi a5,a5,96 + 3bc03d98: 25144703 lbu a4,593(s0) + 3bc03d9c: 0017b793 seqz a5,a5 + 3bc03da0: 0017979b slliw a5,a5,0x1 + 3bc03da4: 0017e793 ori a5,a5,1 + 3bc03da8: 8b8d andi a5,a5,3 + 3bc03daa: 9b71 andi a4,a4,-4 + 3bc03dac: 8fd9 or a5,a5,a4 + 3bc03dae: 24f408a3 sb a5,593(s0) + 3bc03db2: 0cd400a3 sb a3,193(s0) + 3bc03db6: 8b89 andi a5,a5,2 + 3bc03db8: 24078a63 beqz a5,3bc0400c + 3bc03dbc: 0014c703 lbu a4,1(s1) + 3bc03dc0: 47ad li a5,11 + 3bc03dc2: 2ae7e863 bltu a5,a4,3bc04072 + 3bc03dc6: 87ba mv a5,a4 + 3bc03dc8: 00007717 auipc a4,0x7 + 3bc03dcc: 0ec70713 addi a4,a4,236 # 3bc0aeb4 + 3bc03dd0: 44f7478b lrw a5,a4,a5,2 + 3bc03dd4: 97ba add a5,a5,a4 + 3bc03dd6: 8782 jr a5 + 3bc03dd8: 0024d603 lhu a2,2(s1) + 3bc03ddc: 000bc537 lui a0,0xbc + 3bc03de0: 4701 li a4,0 + 3bc03de2: 4681 li a3,0 + 3bc03de4: 4585 li a1,1 + 3bc03de6: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03dea: ad7fe0ef jal ra,3bc028c0 + 3bc03dee: 0004c783 lbu a5,0(s1) + 3bc03df2: 20079d63 bnez a5,3bc0400c + 3bc03df6: 8522 mv a0,s0 + 3bc03df8: 7442 ld s0,48(sp) + 3bc03dfa: 0024c583 lbu a1,2(s1) + 3bc03dfe: 70e2 ld ra,56(sp) + 3bc03e00: 74a2 ld s1,40(sp) + 3bc03e02: 7902 ld s2,32(sp) + 3bc03e04: 69e2 ld s3,24(sp) + 3bc03e06: 6a42 ld s4,16(sp) + 3bc03e08: 6121 addi sp,sp,64 + 3bc03e0a: d43ff06f j 3bc03b4c + 3bc03e0e: 0024d603 lhu a2,2(s1) + 3bc03e12: 4701 li a4,0 + 3bc03e14: 4681 li a3,0 + 3bc03e16: 4589 li a1,2 + 3bc03e18: 000bc537 lui a0,0xbc + 3bc03e1c: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03e20: aa1fe0ef jal ra,3bc028c0 + 3bc03e24: a2e5 j 3bc0400c + 3bc03e26: 4701 li a4,0 + 3bc03e28: 4681 li a3,0 + 3bc03e2a: 4601 li a2,0 + 3bc03e2c: 458d li a1,3 + 3bc03e2e: b7ed j 3bc03e18 + 3bc03e30: 4701 li a4,0 + 3bc03e32: 4681 li a3,0 + 3bc03e34: 4601 li a2,0 + 3bc03e36: 4591 li a1,4 + 3bc03e38: b7c5 j 3bc03e18 + 3bc03e3a: 4701 li a4,0 + 3bc03e3c: 4681 li a3,0 + 3bc03e3e: 4601 li a2,0 + 3bc03e40: 4595 li a1,5 + 3bc03e42: bfd9 j 3bc03e18 + 3bc03e44: 000bc537 lui a0,0xbc + 3bc03e48: 4701 li a4,0 + 3bc03e4a: 4681 li a3,0 + 3bc03e4c: 4601 li a2,0 + 3bc03e4e: 4599 li a1,6 + 3bc03e50: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03e54: a6dfe0ef jal ra,3bc028c0 + 3bc03e58: 0044d503 lhu a0,4(s1) + 3bc03e5c: 1c75358b extu a1,a0,7,7 + 3bc03e60: 07f57513 andi a0,a0,127 + 3bc03e64: c9aff0ef jal ra,3bc032fe + 3bc03e68: 00011723 sh zero,14(sp) + 3bc03e6c: 0004c583 lbu a1,0(s1) + 3bc03e70: 892a mv s2,a0 + 3bc03e72: 00007517 auipc a0,0x7 + 3bc03e76: 02e50513 addi a0,a0,46 # 3bc0aea0 + 3bc03e7a: 89bd andi a1,a1,15 + 3bc03e7c: 26843a03 ld s4,616(s0) + 3bc03e80: cd8fc0ef jal ra,3bc00358 + 3bc03e84: 0004c783 lbu a5,0(s1) + 3bc03e88: 4705 li a4,1 + 3bc03e8a: 8bbd andi a5,a5,15 + 3bc03e8c: 00e78a63 beq a5,a4,3bc03ea0 + 3bc03e90: 4689 li a3,2 + 3bc03e92: 06d78b63 beq a5,a3,3bc03f08 + 3bc03e96: 16079b63 bnez a5,3bc0400c + 3bc03e9a: 00e11723 sh a4,14(sp) + 3bc03e9e: a019 j 3bc03ea4 + 3bc03ea0: 00011723 sh zero,14(sp) + 3bc03ea4: 25843503 ld a0,600(s0) + 3bc03ea8: 4609 li a2,2 + 3bc03eaa: 00e10593 addi a1,sp,14 + 3bc03eae: bbffc0ef jal ra,3bc00a6c + 3bc03eb2: 6485 lui s1,0x1 + 3bc03eb4: 26042503 lw a0,608(s0) + 3bc03eb8: 91448593 addi a1,s1,-1772 # 914 <__BSS_SIZE__-0x52fc> + 3bc03ebc: 95d2 add a1,a1,s4 + 3bc03ebe: 887fd0ef jal ra,3bc01744 + 3bc03ec2: 91048593 addi a1,s1,-1776 + 3bc03ec6: 00080537 lui a0,0x80 + 3bc03eca: 95d2 add a1,a1,s4 + 3bc03ecc: 0509 addi a0,a0,2 + 3bc03ece: 90048493 addi s1,s1,-1792 + 3bc03ed2: 873fd0ef jal ra,3bc01744 + 3bc03ed6: 9a26 add s4,s4,s1 + 3bc03ed8: 8552 mv a0,s4 + 3bc03eda: 865fd0ef jal ra,3bc0173e + 3bc03ede: c00007b7 lui a5,0xc0000 + 3bc03ee2: 17fd addi a5,a5,-1 + 3bc03ee4: 2501 sext.w a0,a0 + 3bc03ee6: 8d7d and a0,a0,a5 + 3bc03ee8: 840007b7 lui a5,0x84000 + 3bc03eec: 8d5d or a0,a0,a5 + 3bc03eee: 85d2 mv a1,s4 + 3bc03ef0: 855fd0ef jal ra,3bc01744 + 3bc03ef4: 47a1 li a5,8 + 3bc03ef6: c43c sw a5,72(s0) + 3bc03ef8: 70e2 ld ra,56(sp) + 3bc03efa: 7442 ld s0,48(sp) + 3bc03efc: 74a2 ld s1,40(sp) + 3bc03efe: 7902 ld s2,32(sp) + 3bc03f00: 69e2 ld s3,24(sp) + 3bc03f02: 6a42 ld s4,16(sp) + 3bc03f04: 6121 addi sp,sp,64 + 3bc03f06: 8082 ret + 3bc03f08: 0064d703 lhu a4,6(s1) + 3bc03f0c: 10e7e063 bltu a5,a4,3bc0400c + 3bc03f10: 2901 sext.w s2,s2 + 3bc03f12: 091e slli s2,s2,0x7 + 3bc03f14: 9922 add s2,s2,s0 + 3bc03f16: 0c094783 lbu a5,192(s2) + 3bc03f1a: 00f11723 sh a5,14(sp) + 3bc03f1e: b759 j 3bc03ea4 + 3bc03f20: 000bc537 lui a0,0xbc + 3bc03f24: 4701 li a4,0 + 3bc03f26: 4681 li a3,0 + 3bc03f28: 4601 li a2,0 + 3bc03f2a: 459d li a1,7 + 3bc03f2c: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03f30: 991fe0ef jal ra,3bc028c0 + 3bc03f34: 0044d503 lhu a0,4(s1) + 3bc03f38: 1c75358b extu a1,a0,7,7 + 3bc03f3c: 07f57513 andi a0,a0,127 + 3bc03f40: bbeff0ef jal ra,3bc032fe + 3bc03f44: 00751913 slli s2,a0,0x7 + 3bc03f48: 05090913 addi s2,s2,80 + 3bc03f4c: 9922 add s2,s2,s0 + 3bc03f4e: 03893a03 ld s4,56(s2) + 3bc03f52: 258a3703 ld a4,600(s4) + 3bc03f56: 00675783 lhu a5,6(a4) + 3bc03f5a: ebcd bnez a5,3bc0400c + 3bc03f5c: 00074783 lbu a5,0(a4) + 3bc03f60: 8bbd andi a5,a5,15 + 3bc03f62: c795 beqz a5,3bc03f8e + 3bc03f64: 4689 li a3,2 + 3bc03f66: f8d799e3 bne a5,a3,3bc03ef8 + 3bc03f6a: 00275783 lhu a5,2(a4) + 3bc03f6e: f7c9 bnez a5,3bc03ef8 + 3bc03f70: 07194403 lbu s0,113(s2) + 3bc03f74: 883d andi s0,s0,15 + 3bc03f76: e415 bnez s0,3bc03fa2 + 3bc03f78: 4585 li a1,1 + 3bc03f7a: 8552 mv a0,s4 + 3bc03f7c: 7442 ld s0,48(sp) + 3bc03f7e: 70e2 ld ra,56(sp) + 3bc03f80: 74a2 ld s1,40(sp) + 3bc03f82: 7902 ld s2,32(sp) + 3bc03f84: 69e2 ld s3,24(sp) + 3bc03f86: 6a42 ld s4,16(sp) + 3bc03f88: 6121 addi sp,sp,64 + 3bc03f8a: f6eff06f j 3bc036f8 + 3bc03f8e: 8552 mv a0,s4 + 3bc03f90: 7442 ld s0,48(sp) + 3bc03f92: 70e2 ld ra,56(sp) + 3bc03f94: 74a2 ld s1,40(sp) + 3bc03f96: 7902 ld s2,32(sp) + 3bc03f98: 69e2 ld s3,24(sp) + 3bc03f9a: 6a42 ld s4,16(sp) + 3bc03f9c: 6121 addi sp,sp,64 + 3bc03f9e: edcff06f j 3bc0367a + 3bc03fa2: 8552 mv a0,s4 + 3bc03fa4: ed6ff0ef jal ra,3bc0367a + 3bc03fa8: 854a mv a0,s2 + 3bc03faa: d90ff0ef jal ra,3bc0353a + 3bc03fae: 854a mv a0,s2 + 3bc03fb0: cefff0ef jal ra,3bc03c9e + 3bc03fb4: 4785 li a5,1 + 3bc03fb6: 06090823 sb zero,112(s2) + 3bc03fba: 268a0a23 sb s0,628(s4) + 3bc03fbe: 26fa0aa3 sb a5,629(s4) + 3bc03fc2: bf1d j 3bc03ef8 + 3bc03fc4: 000bc537 lui a0,0xbc + 3bc03fc8: 4701 li a4,0 + 3bc03fca: 4681 li a3,0 + 3bc03fcc: 4601 li a2,0 + 3bc03fce: 45a1 li a1,8 + 3bc03fd0: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03fd4: 8edfe0ef jal ra,3bc028c0 + 3bc03fd8: 0044d503 lhu a0,4(s1) + 3bc03fdc: 1c75358b extu a1,a0,7,7 + 3bc03fe0: 07f57513 andi a0,a0,127 + 3bc03fe4: b1aff0ef jal ra,3bc032fe + 3bc03fe8: 051e slli a0,a0,0x7 + 3bc03fea: 05050513 addi a0,a0,80 + 3bc03fee: 9522 add a0,a0,s0 + 3bc03ff0: 03853903 ld s2,56(a0) + 3bc03ff4: 25893783 ld a5,600(s2) + 3bc03ff8: 0067d703 lhu a4,6(a5) # ffffffff84000006 <__BL2_END__+0xffffffff483ecbf6> + 3bc03ffc: eb01 bnez a4,3bc0400c + 3bc03ffe: 0007c703 lbu a4,0(a5) + 3bc04002: 8b3d andi a4,a4,15 + 3bc04004: cb15 beqz a4,3bc04038 + 3bc04006: 4689 li a3,2 + 3bc04008: 04d70563 beq a4,a3,3bc04052 + 3bc0400c: 7c1c ld a5,56(s0) + 3bc0400e: cfbd beqz a5,3bc0408c + 3bc04010: 739c ld a5,32(a5) + 3bc04012: 85a6 mv a1,s1 + 3bc04014: 8522 mv a0,s0 + 3bc04016: 9782 jalr a5 + 3bc04018: 06055263 bgez a0,3bc0407c + 3bc0401c: 0064d783 lhu a5,6(s1) + 3bc04020: 4585 li a1,1 + 3bc04022: c789 beqz a5,3bc0402c + 3bc04024: 0c140583 lb a1,193(s0) + 3bc04028: 01f5d59b srliw a1,a1,0x1f + 3bc0402c: 6448 ld a0,136(s0) + 3bc0402e: ecaff0ef jal ra,3bc036f8 + 3bc04032: 04042423 sw zero,72(s0) + 3bc04036: b5c9 j 3bc03ef8 + 3bc04038: 0027d683 lhu a3,2(a5) + 3bc0403c: 4709 li a4,2 + 3bc0403e: 00e69863 bne a3,a4,3bc0404e + 3bc04042: 0047d783 lhu a5,4(a5) + 3bc04046: 0087d79b srliw a5,a5,0x8 + 3bc0404a: 26f90b23 sb a5,630(s2) + 3bc0404e: 854a mv a0,s2 + 3bc04050: b781 j 3bc03f90 + 3bc04052: 0027d783 lhu a5,2(a5) + 3bc04056: ffe5 bnez a5,3bc0404e + 3bc04058: 07154783 lbu a5,113(a0) + 3bc0405c: 8bbd andi a5,a5,15 + 3bc0405e: e781 bnez a5,3bc04066 + 3bc04060: 4585 li a1,1 + 3bc04062: 854a mv a0,s2 + 3bc04064: bf21 j 3bc03f7c + 3bc04066: 4785 li a5,1 + 3bc04068: 06f50823 sb a5,112(a0) + 3bc0406c: d2cff0ef jal ra,3bc03598 + 3bc04070: bff9 j 3bc0404e + 3bc04072: 4701 li a4,0 + 3bc04074: 4681 li a3,0 + 3bc04076: 4601 li a2,0 + 3bc04078: 45a5 li a1,9 + 3bc0407a: bb79 j 3bc03e18 + 3bc0407c: 25144783 lbu a5,593(s0) + 3bc04080: 0017f713 andi a4,a5,1 + 3bc04084: c701 beqz a4,3bc0408c + 3bc04086: 9bf9 andi a5,a5,-2 + 3bc04088: 24f408a3 sb a5,593(s0) + 3bc0408c: e60996e3 bnez s3,3bc03ef8 + 3bc04090: 8522 mv a0,s0 + 3bc04092: bdfd j 3bc03f90 + 3bc04094: 8082 ret + +000000003bc04096 : + 3bc04096: 7119 addi sp,sp,-128 + 3bc04098: ecce sd s3,88(sp) + 3bc0409a: 2685b983 ld s3,616(a1) + 3bc0409e: f0ca sd s2,96(sp) + 3bc040a0: f8a2 sd s0,112(sp) + 3bc040a2: 01498913 addi s2,s3,20 + 3bc040a6: 854a mv a0,s2 + 3bc040a8: f4a6 sd s1,104(sp) + 3bc040aa: e0da sd s6,64(sp) + 3bc040ac: fc86 sd ra,120(sp) + 3bc040ae: e8d2 sd s4,80(sp) + 3bc040b0: e4d6 sd s5,72(sp) + 3bc040b2: fc5e sd s7,56(sp) + 3bc040b4: f862 sd s8,48(sp) + 3bc040b6: f466 sd s9,40(sp) + 3bc040b8: f06a sd s10,32(sp) + 3bc040ba: ec6e sd s11,24(sp) + 3bc040bc: 842e mv s0,a1 + 3bc040be: 01898b13 addi s6,s3,24 + 3bc040c2: e7cfd0ef jal ra,3bc0173e + 3bc040c6: 0005049b sext.w s1,a0 + 3bc040ca: 855a mv a0,s6 + 3bc040cc: e72fd0ef jal ra,3bc0173e + 3bc040d0: 1c048563 beqz s1,3bc0429a + 3bc040d4: 4430 lw a2,72(s0) + 3bc040d6: 00050a9b sext.w s5,a0 + 3bc040da: 6505 lui a0,0x1 + 3bc040dc: 81850513 addi a0,a0,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc040e0: 954e add a0,a0,s3 + 3bc040e2: e432 sd a2,8(sp) + 3bc040e4: e5afd0ef jal ra,3bc0173e + 3bc040e8: 6622 ld a2,8(sp) + 3bc040ea: 0005069b sext.w a3,a0 + 3bc040ee: 653d lui a0,0xf + 3bc040f0: 4701 li a4,0 + 3bc040f2: 85a6 mv a1,s1 + 3bc040f4: 153d addi a0,a0,-17 + 3bc040f6: fcafe0ef jal ra,3bc028c0 + 3bc040fa: 0104f793 andi a5,s1,16 + 3bc040fe: c3b5 beqz a5,3bc04162 + 3bc04100: 85da mv a1,s6 + 3bc04102: fefaf513 andi a0,s5,-17 + 3bc04106: e3efd0ef jal ra,3bc01744 + 3bc0410a: 02098513 addi a0,s3,32 + 3bc0410e: e30fd0ef jal ra,3bc0173e + 3bc04112: 00f57b93 andi s7,a0,15 + 3bc04116: 00050a1b sext.w s4,a0 + 3bc0411a: 4581 li a1,0 + 3bc0411c: 855e mv a0,s7 + 3bc0411e: 9e0ff0ef jal ra,3bc032fe + 3bc04122: 001e07b7 lui a5,0x1e0 + 3bc04126: 00fa77b3 and a5,s4,a5 + 3bc0412a: 00040737 lui a4,0x40 + 3bc0412e: 18e79663 bne a5,a4,3bc042ba + 3bc04132: 384a3a0b extu s4,s4,14,4 + 3bc04136: 020a0163 beqz s4,3bc04158 + 3bc0413a: 0005079b sext.w a5,a0 + 3bc0413e: 079e slli a5,a5,0x7 + 3bc04140: 97a2 add a5,a5,s0 + 3bc04142: 0987bc03 ld s8,152(a5) # 1e0098 <__BSS_SIZE__+0x1da488> + 3bc04146: 86d2 mv a3,s4 + 3bc04148: 85de mv a1,s7 + 3bc0414a: fd0c3603 ld a2,-48(s8) + 3bc0414e: 8522 mv a0,s0 + 3bc04150: 96dff0ef jal ra,3bc03abc + 3bc04154: ff4c2023 sw s4,-32(s8) + 3bc04158: 85da mv a1,s6 + 3bc0415a: 010ae513 ori a0,s5,16 + 3bc0415e: de6fd0ef jal ra,3bc01744 + 3bc04162: 34d4b78b extu a5,s1,13,13 + 3bc04166: cb9d beqz a5,3bc0419c + 3bc04168: 85ca mv a1,s2 + 3bc0416a: 6509 lui a0,0x2 + 3bc0416c: dd8fd0ef jal ra,3bc01744 + 3bc04170: 6505 lui a0,0x1 + 3bc04172: 80850513 addi a0,a0,-2040 # 808 <__BSS_SIZE__-0x5408> + 3bc04176: 954e add a0,a0,s3 + 3bc04178: dc6fd0ef jal ra,3bc0173e + 3bc0417c: 8919 andi a0,a0,6 + 3bc0417e: 14050b63 beqz a0,3bc042d4 + 3bc04182: 4589 li a1,2 + 3bc04184: 8522 mv a0,s0 + 3bc04186: b26ff0ef jal ra,3bc034ac + 3bc0418a: 6509 lui a0,0x2 + 3bc0418c: 4701 li a4,0 + 3bc0418e: 4681 li a3,0 + 3bc04190: 4601 li a2,0 + 3bc04192: 4589 li a1,2 + 3bc04194: 22250513 addi a0,a0,546 # 2222 <__BSS_SIZE__-0x39ee> + 3bc04198: f28fe0ef jal ra,3bc028c0 + 3bc0419c: 4004f793 andi a5,s1,1024 + 3bc041a0: c791 beqz a5,3bc041ac + 3bc041a2: 85ca mv a1,s2 + 3bc041a4: 40000513 li a0,1024 + 3bc041a8: d9cfd0ef jal ra,3bc01744 + 3bc041ac: 6505 lui a0,0x1 + 3bc041ae: 80050a13 addi s4,a0,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc041b2: 0144f7b3 and a5,s1,s4 + 3bc041b6: c395 beqz a5,3bc041da + 3bc041b8: 80850513 addi a0,a0,-2040 + 3bc041bc: 954e add a0,a0,s3 + 3bc041be: d80fd0ef jal ra,3bc0173e + 3bc041c2: 85ca mv a1,s2 + 3bc041c4: 8552 mv a0,s4 + 3bc041c6: d7efd0ef jal ra,3bc01744 + 3bc041ca: 501c lw a5,32(s0) + 3bc041cc: c799 beqz a5,3bc041da + 3bc041ce: 7c1c ld a5,56(s0) + 3bc041d0: c789 beqz a5,3bc041da + 3bc041d2: 7b9c ld a5,48(a5) + 3bc041d4: c399 beqz a5,3bc041da + 3bc041d6: 8522 mv a0,s0 + 3bc041d8: 9782 jalr a5 + 3bc041da: 0004df63 bgez s1,3bc041f8 + 3bc041de: 85ca mv a1,s2 + 3bc041e0: 80000537 lui a0,0x80000 + 3bc041e4: d60fd0ef jal ra,3bc01744 + 3bc041e8: 501c lw a5,32(s0) + 3bc041ea: c799 beqz a5,3bc041f8 + 3bc041ec: 7c1c ld a5,56(s0) + 3bc041ee: c789 beqz a5,3bc041f8 + 3bc041f0: 7f9c ld a5,56(a5) + 3bc041f2: c399 beqz a5,3bc041f8 + 3bc041f4: 8522 mv a0,s0 + 3bc041f6: 9782 jalr a5 + 3bc041f8: 008017b7 lui a5,0x801 + 3bc041fc: 8fe5 and a5,a5,s1 + 3bc041fe: c3bd beqz a5,3bc04264 + 3bc04200: 854e mv a0,s3 + 3bc04202: d3cfd0ef jal ra,3bc0173e + 3bc04206: 0005099b sext.w s3,a0 + 3bc0420a: 6505 lui a0,0x1 + 3bc0420c: 4701 li a4,0 + 3bc0420e: 4681 li a3,0 + 3bc04210: 4601 li a2,0 + 3bc04212: 85ce mv a1,s3 + 3bc04214: 11150513 addi a0,a0,273 # 1111 <__BSS_SIZE__-0x4aff> + 3bc04218: ea8fe0ef jal ra,3bc028c0 + 3bc0421c: 30c4b78b extu a5,s1,12,12 + 3bc04220: c789 beqz a5,3bc0422a + 3bc04222: 85ca mv a1,s2 + 3bc04224: 6505 lui a0,0x1 + 3bc04226: d1efd0ef jal ra,3bc01744 + 3bc0422a: 5d74b78b extu a5,s1,23,23 + 3bc0422e: c791 beqz a5,3bc0423a + 3bc04230: 85ca mv a1,s2 + 3bc04232: 00800537 lui a0,0x800 + 3bc04236: d0efd0ef jal ra,3bc01744 + 3bc0423a: 000c0537 lui a0,0xc0 + 3bc0423e: 00a9f9b3 and s3,s3,a0 + 3bc04242: 000c07b7 lui a5,0xc0 + 3bc04246: 00f99f63 bne s3,a5,3bc04264 + 3bc0424a: 27042903 lw s2,624(s0) + 3bc0424e: 8522 mv a0,s0 + 3bc04250: 9d5fe0ef jal ra,3bc02c24 + 3bc04254: 00090663 beqz s2,3bc04260 + 3bc04258: 4585 li a1,1 + 3bc0425a: 8522 mv a0,s0 + 3bc0425c: cbffe0ef jal ra,3bc02f1a + 3bc04260: 04042423 sw zero,72(s0) + 3bc04264: 4924b78b extu a5,s1,18,18 + 3bc04268: e7c1 bnez a5,3bc042f0 + 3bc0426a: 4d34b48b extu s1,s1,19,19 + 3bc0426e: c495 beqz s1,3bc0429a + 3bc04270: 26843b03 ld s6,616(s0) + 3bc04274: 6505 lui a0,0x1 + 3bc04276: 81850513 addi a0,a0,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc0427a: 955a add a0,a0,s6 + 3bc0427c: cc2fd0ef jal ra,3bc0173e + 3bc04280: 00066a37 lui s4,0x66 + 3bc04284: 6a8d lui s5,0x3 + 3bc04286: 7d05398b extu s3,a0,31,16 + 3bc0428a: 4901 li s2,0 + 3bc0428c: 4b99 li s7,6 + 3bc0428e: 666a0a13 addi s4,s4,1638 # 66666 <__BSS_SIZE__+0x60a56> + 3bc04292: 333a8a93 addi s5,s5,819 # 3333 <__BSS_SIZE__-0x28dd> + 3bc04296: 2a099963 bnez s3,3bc04548 + 3bc0429a: 70e6 ld ra,120(sp) + 3bc0429c: 7446 ld s0,112(sp) + 3bc0429e: 74a6 ld s1,104(sp) + 3bc042a0: 7906 ld s2,96(sp) + 3bc042a2: 69e6 ld s3,88(sp) + 3bc042a4: 6a46 ld s4,80(sp) + 3bc042a6: 6aa6 ld s5,72(sp) + 3bc042a8: 6b06 ld s6,64(sp) + 3bc042aa: 7be2 ld s7,56(sp) + 3bc042ac: 7c42 ld s8,48(sp) + 3bc042ae: 7ca2 ld s9,40(sp) + 3bc042b0: 7d02 ld s10,32(sp) + 3bc042b2: 6de2 ld s11,24(sp) + 3bc042b4: 4501 li a0,0 + 3bc042b6: 6109 addi sp,sp,128 + 3bc042b8: 8082 ret + 3bc042ba: 000c0737 lui a4,0xc0 + 3bc042be: e8e79de3 bne a5,a4,3bc04158 + 3bc042c2: 25843603 ld a2,600(s0) + 3bc042c6: 384a368b extu a3,s4,14,4 + 3bc042ca: 85de mv a1,s7 + 3bc042cc: 8522 mv a0,s0 + 3bc042ce: feeff0ef jal ra,3bc03abc + 3bc042d2: b559 j 3bc04158 + 3bc042d4: 6509 lui a0,0x2 + 3bc042d6: 4701 li a4,0 + 3bc042d8: 4681 li a3,0 + 3bc042da: 4601 li a2,0 + 3bc042dc: 4585 li a1,1 + 3bc042de: 22250513 addi a0,a0,546 # 2222 <__BSS_SIZE__-0x39ee> + 3bc042e2: ddefe0ef jal ra,3bc028c0 + 3bc042e6: 458d li a1,3 + 3bc042e8: 8522 mv a0,s0 + 3bc042ea: 9c2ff0ef jal ra,3bc034ac + 3bc042ee: b57d j 3bc0419c + 3bc042f0: 26843a03 ld s4,616(s0) + 3bc042f4: 6a85 lui s5,0x1 + 3bc042f6: 818a8513 addi a0,s5,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc042fa: 9552 add a0,a0,s4 + 3bc042fc: c42fd0ef jal ra,3bc0173e + 3bc04300: 00737b37 lui s6,0x737 + 3bc04304: 00747bb7 lui s7,0x747 + 3bc04308: 00055c37 lui s8,0x55 + 3bc0430c: 3c05398b extu s3,a0,15,0 + 3bc04310: 4901 li s2,0 + 3bc04312: 373b0b13 addi s6,s6,883 # 737373 <__BSS_SIZE__+0x731763> + 3bc04316: 474b8b93 addi s7,s7,1140 # 747474 <__BSS_SIZE__+0x741864> + 3bc0431a: 555c0c13 addi s8,s8,1365 # 55555 <__BSS_SIZE__+0x4f945> + 3bc0431e: 804a8a93 addi s5,s5,-2044 + 3bc04322: f40984e3 beqz s3,3bc0426a + 3bc04326: 0019f793 andi a5,s3,1 + 3bc0432a: 1c078163 beqz a5,3bc044ec + 3bc0432e: 04890c93 addi s9,s2,72 + 3bc04332: 0c96 slli s9,s9,0x5 + 3bc04334: 008c8d93 addi s11,s9,8 + 3bc04338: 9dd2 add s11,s11,s4 + 3bc0433a: 856e mv a0,s11 + 3bc0433c: c02fd0ef jal ra,3bc0173e + 3bc04340: 00050d1b sext.w s10,a0 + 3bc04344: 010c8513 addi a0,s9,16 + 3bc04348: 9552 add a0,a0,s4 + 3bc0434a: bf4fd0ef jal ra,3bc0173e + 3bc0434e: 0005069b sext.w a3,a0 + 3bc04352: 019a0533 add a0,s4,s9 + 3bc04356: e436 sd a3,8(sp) + 3bc04358: be6fd0ef jal ra,3bc0173e + 3bc0435c: 66a2 ld a3,8(sp) + 3bc0435e: 0005071b sext.w a4,a0 + 3bc04362: 866a mv a2,s10 + 3bc04364: 85ca mv a1,s2 + 3bc04366: 855a mv a0,s6 + 3bc04368: d58fe0ef jal ra,3bc028c0 + 3bc0436c: 014c8513 addi a0,s9,20 + 3bc04370: 9552 add a0,a0,s4 + 3bc04372: bccfd0ef jal ra,3bc0173e + 3bc04376: 0ce1 addi s9,s9,24 + 3bc04378: 0005059b sext.w a1,a0 + 3bc0437c: 019a0533 add a0,s4,s9 + 3bc04380: e42e sd a1,8(sp) + 3bc04382: bbcfd0ef jal ra,3bc0173e + 3bc04386: 65a2 ld a1,8(sp) + 3bc04388: 0005061b sext.w a2,a0 + 3bc0438c: 4701 li a4,0 + 3bc0438e: 4681 li a3,0 + 3bc04390: 855e mv a0,s7 + 3bc04392: d2efe0ef jal ra,3bc028c0 + 3bc04396: 856a mv a0,s10 + 3bc04398: 85ee mv a1,s11 + 3bc0439a: 001d7d13 andi s10,s10,1 + 3bc0439e: ba6fd0ef jal ra,3bc01744 + 3bc043a2: 140d0563 beqz s10,3bc044ec + 3bc043a6: 4585 li a1,1 + 3bc043a8: 854a mv a0,s2 + 3bc043aa: f55fe0ef jal ra,3bc032fe + 3bc043ae: 00050c9b sext.w s9,a0 + 3bc043b2: 0c9e slli s9,s9,0x7 + 3bc043b4: 01940833 add a6,s0,s9 + 3bc043b8: 09883603 ld a2,152(a6) + 3bc043bc: 00751d13 slli s10,a0,0x7 + 3bc043c0: 098d0d93 addi s11,s10,152 + 3bc043c4: 442c lw a1,72(s0) + 3bc043c6: 9da2 add s11,s11,s0 + 3bc043c8: 41b60633 sub a2,a2,s11 + 3bc043cc: 00163613 seqz a2,a2 + 3bc043d0: 4701 li a4,0 + 3bc043d2: 4681 li a3,0 + 3bc043d4: 8562 mv a0,s8 + 3bc043d6: e442 sd a6,8(sp) + 3bc043d8: ce8fe0ef jal ra,3bc028c0 + 3bc043dc: 4430 lw a2,72(s0) + 3bc043de: 47a1 li a5,8 + 3bc043e0: 6822 ld a6,8(sp) + 3bc043e2: 00f61a63 bne a2,a5,3bc043f6 + 3bc043e6: 4799 li a5,6 + 3bc043e8: c43c sw a5,72(s0) + 3bc043ea: 8522 mv a0,s0 + 3bc043ec: a0eff0ef jal ra,3bc035fa + 3bc043f0: 04090c63 beqz s2,3bc04448 + 3bc043f4: a8e5 j 3bc044ec + 3bc043f6: 09883703 ld a4,152(a6) + 3bc043fa: feed8be3 beq s11,a4,3bc043f0 + 3bc043fe: ffc72303 lw t1,-4(a4) # bfffc <__BSS_SIZE__+0xba3ec> + 3bc04402: fd872883 lw a7,-40(a4) + 3bc04406: 0b082783 lw a5,176(a6) + 3bc0440a: 050d0513 addi a0,s10,80 + 3bc0440e: 40688e3b subw t3,a7,t1 + 3bc04412: 0007869b sext.w a3,a5 + 3bc04416: 000e081b sext.w a6,t3 + 3bc0441a: 00d836b3 sltu a3,a6,a3 + 3bc0441e: 0016c693 xori a3,a3,1 + 3bc04422: 40de178b mveqz a5,t3,a3 + 3bc04426: 006786bb addw a3,a5,t1 + 3bc0442a: fed72e23 sw a3,-4(a4) + 3bc0442e: 9522 add a0,a0,s0 + 3bc04430: fc070593 addi a1,a4,-64 + 3bc04434: 08091c63 bnez s2,3bc044cc + 3bc04438: 4785 li a5,1 + 3bc0443a: 06f61463 bne a2,a5,3bc044a2 + 3bc0443e: ec2ff0ef jal ra,3bc03b00 + 3bc04442: c119 beqz a0,3bc04448 + 3bc04444: 4795 li a5,5 + 3bc04446: c43c sw a5,72(s0) + 3bc04448: 27644783 lbu a5,630(s0) + 3bc0444c: c3a9 beqz a5,3bc0448e + 3bc0444e: 26843d03 ld s10,616(s0) + 3bc04452: 00078d9b sext.w s11,a5 + 3bc04456: e43e sd a5,8(sp) + 3bc04458: 9d56 add s10,s10,s5 + 3bc0445a: 856a mv a0,s10 + 3bc0445c: ae2fd0ef jal ra,3bc0173e + 3bc04460: 67a2 ld a5,8(sp) + 3bc04462: 00050c9b sext.w s9,a0 + 3bc04466: 4711 li a4,4 + 3bc04468: 37fd addiw a5,a5,-1 + 3bc0446a: f8fcfc93 andi s9,s9,-113 + 3bc0446e: 02f76063 bltu a4,a5,3bc0448e + 3bc04472: 85ee mv a1,s11 + 3bc04474: 00007517 auipc a0,0x7 + 3bc04478: a7450513 addi a0,a0,-1420 # 3bc0aee8 + 3bc0447c: eddfb0ef jal ra,3bc00358 + 3bc04480: 004d9513 slli a0,s11,0x4 + 3bc04484: 85ea mv a1,s10 + 3bc04486: 01956533 or a0,a0,s9 + 3bc0448a: abafd0ef jal ra,3bc01744 + 3bc0448e: 443c lw a5,72(s0) + 3bc04490: 471d li a4,7 + 3bc04492: 06e79363 bne a5,a4,3bc044f8 + 3bc04496: 04042423 sw zero,72(s0) + 3bc0449a: 8522 mv a0,s0 + 3bc0449c: c6aff0ef jal ra,3bc03906 + 3bc044a0: a8a9 j 3bc044fa + 3bc044a2: 479d li a5,7 + 3bc044a4: 00f61863 bne a2,a5,3bc044b4 + 3bc044a8: 4601 li a2,0 + 3bc044aa: c68fe0ef jal ra,3bc02912 + 3bc044ae: 04042423 sw zero,72(s0) + 3bc044b2: bf59 j 3bc04448 + 3bc044b4: 4795 li a5,5 + 3bc044b6: f8f619e3 bne a2,a5,3bc04448 + 3bc044ba: 4601 li a2,0 + 3bc044bc: c56fe0ef jal ra,3bc02912 + 3bc044c0: 4799 li a5,6 + 3bc044c2: c43c sw a5,72(s0) + 3bc044c4: 8522 mv a0,s0 + 3bc044c6: 934ff0ef jal ra,3bc035fa + 3bc044ca: bfbd j 3bc04448 + 3bc044cc: 00d89763 bne a7,a3,3bc044da + 3bc044d0: 4601 li a2,0 + 3bc044d2: e42a sd a0,8(sp) + 3bc044d4: c3efe0ef jal ra,3bc02912 + 3bc044d8: 6522 ld a0,8(sp) + 3bc044da: 9ca2 add s9,s9,s0 + 3bc044dc: 098cb583 ld a1,152(s9) + 3bc044e0: 00bd8663 beq s11,a1,3bc044ec + 3bc044e4: fc058593 addi a1,a1,-64 + 3bc044e8: c78ff0ef jal ra,3bc03960 + 3bc044ec: 2905 addiw s2,s2,1 + 3bc044ee: 0ff97913 andi s2,s2,255 + 3bc044f2: 0019d993 srli s3,s3,0x1 + 3bc044f6: b535 j 3bc04322 + 3bc044f8: d3cd beqz a5,3bc0449a + 3bc044fa: 27544703 lbu a4,629(s0) + 3bc044fe: 4785 li a5,1 + 3bc04500: fef716e3 bne a4,a5,3bc044ec + 3bc04504: 27444503 lbu a0,628(s0) + 3bc04508: 4585 li a1,1 + 3bc0450a: df5fe0ef jal ra,3bc032fe + 3bc0450e: 0005071b sext.w a4,a0 + 3bc04512: 071e slli a4,a4,0x7 + 3bc04514: 9722 add a4,a4,s0 + 3bc04516: 00751793 slli a5,a0,0x7 + 3bc0451a: 6f4c ld a1,152(a4) + 3bc0451c: 05078513 addi a0,a5,80 # c0050 <__BSS_SIZE__+0xba440> + 3bc04520: 09878793 addi a5,a5,152 + 3bc04524: 97a2 add a5,a5,s0 + 3bc04526: 9522 add a0,a0,s0 + 3bc04528: 00f58a63 beq a1,a5,3bc0453c + 3bc0452c: 0c170783 lb a5,193(a4) + 3bc04530: fc058593 addi a1,a1,-64 + 3bc04534: 0007d763 bgez a5,3bc04542 + 3bc04538: c28ff0ef jal ra,3bc03960 + 3bc0453c: 26040aa3 sb zero,629(s0) + 3bc04540: b775 j 3bc044ec + 3bc04542: a1eff0ef jal ra,3bc03760 + 3bc04546: bfdd j 3bc0453c + 3bc04548: 0019f793 andi a5,s3,1 + 3bc0454c: c3a1 beqz a5,3bc0458c + 3bc0454e: 05890493 addi s1,s2,88 + 3bc04552: 0496 slli s1,s1,0x5 + 3bc04554: 04a1 addi s1,s1,8 + 3bc04556: 94da add s1,s1,s6 + 3bc04558: 8526 mv a0,s1 + 3bc0455a: 9e4fd0ef jal ra,3bc0173e + 3bc0455e: 0005061b sext.w a2,a0 + 3bc04562: 8532 mv a0,a2 + 3bc04564: 85a6 mv a1,s1 + 3bc04566: e432 sd a2,8(sp) + 3bc04568: 9dcfd0ef jal ra,3bc01744 + 3bc0456c: 6622 ld a2,8(sp) + 3bc0456e: 06091063 bnez s2,3bc045ce + 3bc04572: 00867793 andi a5,a2,8 + 3bc04576: c38d beqz a5,3bc04598 + 3bc04578: 8556 mv a0,s5 + 3bc0457a: 4701 li a4,0 + 3bc0457c: 4681 li a3,0 + 3bc0457e: 4601 li a2,0 + 3bc04580: 4581 li a1,0 + 3bc04582: b3efe0ef jal ra,3bc028c0 + 3bc04586: 8522 mv a0,s0 + 3bc04588: fc8ff0ef jal ra,3bc03d50 + 3bc0458c: 2905 addiw s2,s2,1 + 3bc0458e: 0ff97913 andi s2,s2,255 + 3bc04592: 0019d993 srli s3,s3,0x1 + 3bc04596: b301 j 3bc04296 + 3bc04598: 00167793 andi a5,a2,1 + 3bc0459c: dbe5 beqz a5,3bc0458c + 3bc0459e: 443c lw a5,72(s0) + 3bc045a0: 4701 li a4,0 + 3bc045a2: 4681 li a3,0 + 3bc045a4: 01778b63 beq a5,s7,3bc045ba + 3bc045a8: 4585 li a1,1 + 3bc045aa: 8552 mv a0,s4 + 3bc045ac: b14fe0ef jal ra,3bc028c0 + 3bc045b0: 4581 li a1,0 + 3bc045b2: 8522 mv a0,s0 + 3bc045b4: a56ff0ef jal ra,3bc0380a + 3bc045b8: bfd1 j 3bc0458c + 3bc045ba: 8552 mv a0,s4 + 3bc045bc: 4589 li a1,2 + 3bc045be: b02fe0ef jal ra,3bc028c0 + 3bc045c2: 8522 mv a0,s0 + 3bc045c4: 04042423 sw zero,72(s0) + 3bc045c8: b3eff0ef jal ra,3bc03906 + 3bc045cc: b7c1 j 3bc0458c + 3bc045ce: 8a05 andi a2,a2,1 + 3bc045d0: de55 beqz a2,3bc0458c + 3bc045d2: 85ca mv a1,s2 + 3bc045d4: bff9 j 3bc045b2 + +000000003bc045d6 : + 3bc045d6: 07158703 lb a4,113(a1) + 3bc045da: 00075663 bgez a4,3bc045e6 + 3bc045de: 4705 li a4,1 + 3bc045e0: c538 sw a4,72(a0) + 3bc045e2: ddaff06f j 3bc03bbc + 3bc045e6: 4711 li a4,4 + 3bc045e8: c538 sw a4,72(a0) + 3bc045ea: daaff06f j 3bc03b94 + +000000003bc045ee : + 3bc045ee: e581 bnez a1,3bc045f6 + 3bc045f0: 57a9 li a5,-22 + 3bc045f2: 853e mv a0,a5 + 3bc045f4: 8082 ret + 3bc045f6: 759c ld a5,40(a1) + 3bc045f8: dfe5 beqz a5,3bc045f0 + 3bc045fa: 699c ld a5,16(a1) + 3bc045fc: dbf5 beqz a5,3bc045f0 + 3bc045fe: 61bc ld a5,64(a1) + 3bc04600: 7179 addi sp,sp,-48 + 3bc04602: e84a sd s2,16(sp) + 3bc04604: f406 sd ra,40(sp) + 3bc04606: f022 sd s0,32(sp) + 3bc04608: ec26 sd s1,24(sp) + 3bc0460a: e44e sd s3,8(sp) + 3bc0460c: 04058913 addi s2,a1,64 + 3bc04610: 06f91763 bne s2,a5,3bc0467e + 3bc04614: c52d beqz a0,3bc0467e + 3bc04616: 613c ld a5,64(a0) + 3bc04618: 84ae mv s1,a1 + 3bc0461a: 842a mv s0,a0 + 3bc0461c: cbb9 beqz a5,3bc04672 + 3bc0461e: 7c08 ld a0,56(s0) + 3bc04620: 07144683 lbu a3,113(s0) + 3bc04624: fc600793 li a5,-58 + 3bc04628: 7d18 ld a4,56(a0) + 3bc0462a: cb39 beqz a4,3bc04680 + 3bc0462c: 5118 lw a4,32(a0) + 3bc0462e: fc600793 li a5,-58 + 3bc04632: c739 beqz a4,3bc04680 + 3bc04634: 4785 li a5,1 + 3bc04636: 1782 slli a5,a5,0x20 + 3bc04638: fdc78793 addi a5,a5,-36 + 3bc0463c: 26853703 ld a4,616(a0) + 3bc04640: fc9c sd a5,56(s1) + 3bc04642: 643c ld a5,72(s0) + 3bc04644: 04840993 addi s3,s0,72 + 3bc04648: 04f99f63 bne s3,a5,3bc046a6 + 3bc0464c: 07044783 lbu a5,112(s0) + 3bc04650: ebb9 bnez a5,3bc046a6 + 3bc04652: 00f6f793 andi a5,a3,15 + 3bc04656: ef8d bnez a5,3bc04690 + 3bc04658: 683c ld a5,80(s0) + 3bc0465a: 05243823 sd s2,80(s0) + 3bc0465e: 0534b023 sd s3,64(s1) + 3bc04662: e4bc sd a5,72(s1) + 3bc04664: 0127b023 sd s2,0(a5) + 3bc04668: 85a2 mv a1,s0 + 3bc0466a: f6dff0ef jal ra,3bc045d6 + 3bc0466e: 4781 li a5,0 + 3bc04670: a801 j 3bc04680 + 3bc04672: 01853983 ld s3,24(a0) + 3bc04676: a4cfe0ef jal ra,3bc028c2 + 3bc0467a: faa982e3 beq s3,a0,3bc0461e + 3bc0467e: 57a9 li a5,-22 + 3bc04680: 70a2 ld ra,40(sp) + 3bc04682: 7402 ld s0,32(sp) + 3bc04684: 64e2 ld s1,24(sp) + 3bc04686: 6942 ld s2,16(sp) + 3bc04688: 69a2 ld s3,8(sp) + 3bc0468a: 853e mv a0,a5 + 3bc0468c: 6145 addi sp,sp,48 + 3bc0468e: 8082 ret + 3bc04690: fc76b78b extu a5,a3,63,7 + 3bc04694: 01470513 addi a0,a4,20 + 3bc04698: c385 beqz a5,3bc046b8 + 3bc0469a: 8a4fd0ef jal ra,3bc0173e + 3bc0469e: 85a6 mv a1,s1 + 3bc046a0: 8522 mv a0,s0 + 3bc046a2: abeff0ef jal ra,3bc03960 + 3bc046a6: 683c ld a5,80(s0) + 3bc046a8: 05243823 sd s2,80(s0) + 3bc046ac: 0534b023 sd s3,64(s1) + 3bc046b0: e4bc sd a5,72(s1) + 3bc046b2: 0127b023 sd s2,0(a5) + 3bc046b6: bf65 j 3bc0466e + 3bc046b8: 886fd0ef jal ra,3bc0173e + 3bc046bc: 85a6 mv a1,s1 + 3bc046be: 8522 mv a0,s0 + 3bc046c0: 8a0ff0ef jal ra,3bc03760 + 3bc046c4: b7cd j 3bc046a6 + +000000003bc046c6 : + 3bc046c6: 7179 addi sp,sp,-48 + 3bc046c8: f022 sd s0,32(sp) + 3bc046ca: ec26 sd s1,24(sp) + 3bc046cc: f406 sd ra,40(sp) + 3bc046ce: e432 sd a2,8(sp) + 3bc046d0: 0e0007b7 lui a5,0xe000 + 3bc046d4: 84ae mv s1,a1 + 3bc046d6: 638c ld a1,0(a5) + 3bc046d8: 842a mv s0,a0 + 3bc046da: 00007517 auipc a0,0x7 + 3bc046de: 82650513 addi a0,a0,-2010 # 3bc0af00 + 3bc046e2: 5055b78b extu a5,a1,20,5 + 3bc046e6: 85be mv a1,a5 + 3bc046e8: 00007717 auipc a4,0x7 + 3bc046ec: 00f71823 sh a5,16(a4) # 3bc0b6f8 + 3bc046f0: c69fb0ef jal ra,3bc00358 + 3bc046f4: 8522 mv a0,s0 + 3bc046f6: 7402 ld s0,32(sp) + 3bc046f8: 6622 ld a2,8(sp) + 3bc046fa: 70a2 ld ra,40(sp) + 3bc046fc: 85a6 mv a1,s1 + 3bc046fe: 64e2 ld s1,24(sp) + 3bc04700: 6145 addi sp,sp,48 + 3bc04702: bd5fd06f j 3bc022d6 + +000000003bc04706 : + 3bc04706: 4781 li a5,0 + 3bc04708: 00007697 auipc a3,0x7 + 3bc0470c: 81068693 addi a3,a3,-2032 # 3bc0af18 + 3bc04710: 0007871b sext.w a4,a5 + 3bc04714: 00c74363 blt a4,a2,3bc0471a + 3bc04718: 8082 ret + 3bc0471a: 80f5c80b lrbu a6,a1,a5,0 + 3bc0471e: 9c85370b extu a4,a0,39,8 + 3bc04722: 0085151b slliw a0,a0,0x8 + 3bc04726: 01074733 xor a4,a4,a6 + 3bc0472a: a2e6c70b lrhu a4,a3,a4,1 + 3bc0472e: 0785 addi a5,a5,1 + 3bc04730: 8d39 xor a0,a0,a4 + 3bc04732: 3c05350b extu a0,a0,15,0 + 3bc04736: bfe9 j 3bc04710 + +000000003bc04738 : + 3bc04738: 4d78 lw a4,92(a0) + 3bc0473a: 11000793 li a5,272 + 3bc0473e: fff7069b addiw a3,a4,-1 + 3bc04742: 04d7e563 bltu a5,a3,3bc0478c + 3bc04746: 7510 ld a2,40(a0) + 3bc04748: 7c07368b extu a3,a4,31,0 + 3bc0474c: 01853803 ld a6,24(a0) + 3bc04750: 8d91 sub a1,a1,a2 + 3bc04752: 02053e03 ld t3,32(a0) + 3bc04756: 04856883 lwu a7,72(a0) + 3bc0475a: 87ba mv a5,a4 + 3bc0475c: 00d5f463 bgeu a1,a3,3bc04764 + 3bc04760: 0005879b sext.w a5,a1 + 3bc04764: 416c lw a1,68(a0) + 3bc04766: 4134 lw a3,64(a0) + 3bc04768: e599 bnez a1,3bc04776 + 3bc0476a: 414c lw a1,4(a0) + 3bc0476c: 40d5833b subw t1,a1,a3 + 3bc04770: 0067e363 bltu a5,t1,3bc04776 + 3bc04774: c16c sw a1,68(a0) + 3bc04776: 9ebd addw a3,a3,a5 + 3bc04778: 9f1d subw a4,a4,a5 + 3bc0477a: c134 sw a3,64(a0) + 3bc0477c: cd78 sw a4,92(a0) + 3bc0477e: 86be mv a3,a5 + 3bc04780: 8732 mv a4,a2 + 3bc04782: e691 bnez a3,3bc0478e + 3bc04784: 7c07b78b extu a5,a5,31,0 + 3bc04788: 97b2 add a5,a5,a2 + 3bc0478a: f51c sd a5,40(a0) + 3bc0478c: 8082 ret + 3bc0478e: 36fd addiw a3,a3,-1 + 3bc04790: 411705b3 sub a1,a4,a7 + 3bc04794: 8372 mv t1,t3 + 3bc04796: 01176363 bltu a4,a7,3bc0479c + 3bc0479a: 4301 li t1,0 + 3bc0479c: 95c2 add a1,a1,a6 + 3bc0479e: 8065c58b lrbu a1,a1,t1,0 + 3bc047a2: 00e8558b srb a1,a6,a4,0 + 3bc047a6: 0705 addi a4,a4,1 + 3bc047a8: bfe9 j 3bc04782 + +000000003bc047aa : + 3bc047aa: 7155 addi sp,sp,-208 + 3bc047ac: e1a2 sd s0,192(sp) + 3bc047ae: 6405 lui s0,0x1 + 3bc047b0: e586 sd ra,200(sp) + 3bc047b2: fd26 sd s1,184(sp) + 3bc047b4: f94a sd s2,176(sp) + 3bc047b6: f54e sd s3,168(sp) + 3bc047b8: f152 sd s4,160(sp) + 3bc047ba: ed56 sd s5,152(sp) + 3bc047bc: e95a sd s6,144(sp) + 3bc047be: e55e sd s7,136(sp) + 3bc047c0: e162 sd s8,128(sp) + 3bc047c2: fce6 sd s9,120(sp) + 3bc047c4: f8ea sd s10,112(sp) + 3bc047c6: f4ee sd s11,104(sp) + 3bc047c8: e82e sd a1,16(sp) + 3bc047ca: f832 sd a2,48(sp) + 3bc047cc: 8004041b addiw s0,s0,-2048 + 3bc047d0: 417c lw a5,68(a0) + 3bc047d2: 04052e03 lw t3,64(a0) + 3bc047d6: 02853803 ld a6,40(a0) + 3bc047da: ec3e sd a5,24(sp) + 3bc047dc: eba1 bnez a5,3bc0482c + 3bc047de: 415c lw a5,4(a0) + 3bc047e0: 6742 ld a4,16(sp) + 3bc047e2: 66c2 ld a3,16(sp) + 3bc047e4: 41c787bb subw a5,a5,t3 + 3bc047e8: 7c07b78b extu a5,a5,31,0 + 3bc047ec: 41070733 sub a4,a4,a6 + 3bc047f0: e436 sd a3,8(sp) + 3bc047f2: 00e7f463 bgeu a5,a4,3bc047fa + 3bc047f6: 97c2 add a5,a5,a6 + 3bc047f8: e43e sd a5,8(sp) + 3bc047fa: 020e1b63 bnez t3,3bc04830 + 3bc047fe: 5d58 lw a4,60(a0) + 3bc04800: c00007b7 lui a5,0xc0000 + 3bc04804: bff78793 addi a5,a5,-1025 # ffffffffbffffbff <__BL2_END__+0xffffffff843ec7ef> + 3bc04808: 02e7f463 bgeu a5,a4,3bc04830 + 3bc0480c: 4505 li a0,1 + 3bc0480e: 60ae ld ra,200(sp) + 3bc04810: 640e ld s0,192(sp) + 3bc04812: 74ea ld s1,184(sp) + 3bc04814: 794a ld s2,176(sp) + 3bc04816: 79aa ld s3,168(sp) + 3bc04818: 7a0a ld s4,160(sp) + 3bc0481a: 6aea ld s5,152(sp) + 3bc0481c: 6b4a ld s6,144(sp) + 3bc0481e: 6baa ld s7,136(sp) + 3bc04820: 6c0a ld s8,128(sp) + 3bc04822: 7ce6 ld s9,120(sp) + 3bc04824: 7d46 ld s10,112(sp) + 3bc04826: 7da6 ld s11,104(sp) + 3bc04828: 6169 addi sp,sp,208 + 3bc0482a: 8082 ret + 3bc0482c: 67c2 ld a5,16(sp) + 3bc0482e: e43e sd a5,8(sp) + 3bc04830: 497c lw a5,84(a0) + 3bc04832: 00154703 lbu a4,1(a0) + 3bc04836: 690c ld a1,16(a0) + 3bc04838: f03e sd a5,32(sp) + 3bc0483a: 00054783 lbu a5,0(a0) + 3bc0483e: 00254303 lbu t1,2(a0) + 3bc04842: 74fd lui s1,0xfffff + 3bc04844: f43e sd a5,40(sp) + 3bc04846: 76a2 ld a3,40(sp) + 3bc04848: 10000793 li a5,256 + 3bc0484c: 00e7973b sllw a4,a5,a4 + 3bc04850: 02053a83 ld s5,32(a0) + 3bc04854: 00d7d7bb srlw a5,a5,a3 + 3bc04858: 60048493 addi s1,s1,1536 # fffffffffffff600 <__BL2_END__+0xffffffffc43ec1f0> + 3bc0485c: 56fd li a3,-1 + 3bc0485e: 40f707bb subw a5,a4,a5 + 3bc04862: 006696bb sllw a3,a3,t1 + 3bc04866: 94ae add s1,s1,a1 + 3bc04868: fc3e sd a5,56(sp) + 3bc0486a: fff6c693 not a3,a3 + 3bc0486e: e4a6 sd s1,72(sp) + 3bc04870: 05852883 lw a7,88(a0) + 3bc04874: a0058493 addi s1,a1,-1536 + 3bc04878: 04852f83 lw t6,72(a0) + 3bc0487c: 04c52f03 lw t5,76(a0) + 3bc04880: 05052983 lw s3,80(a0) + 3bc04884: 01853a03 ld s4,24(a0) + 3bc04888: 7918 ld a4,48(a0) + 3bc0488a: 5d10 lw a2,56(a0) + 3bc0488c: 5d5c lw a5,60(a0) + 3bc0488e: 2681 sext.w a3,a3 + 3bc04890: e8a6 sd s1,80(sp) + 3bc04892: fffa8493 addi s1,s5,-1 + 3bc04896: e0b6 sd a3,64(sp) + 3bc04898: 4301 li t1,0 + 3bc0489a: 010006b7 lui a3,0x1000 + 3bc0489e: eca6 sd s1,88(sp) + 3bc048a0: 6486 ld s1,64(sp) + 3bc048a2: 01c4feb3 and t4,s1,t3 + 3bc048a6: 004e9e9b slliw t4,t4,0x4 + 3bc048aa: 011e893b addw s2,t4,a7 + 3bc048ae: 02091493 slli s1,s2,0x20 + 3bc048b2: 01f4d913 srli s2,s1,0x1f + 3bc048b6: e0090b93 addi s7,s2,-512 + 3bc048ba: a175cb0b lrhu s6,a1,s7,0 + 3bc048be: 000b039b sext.w t2,s6 + 3bc048c2: 00d67a63 bgeu a2,a3,3bc048d6 + 3bc048c6: 9817428b lbuia t0,(a4),1,0 + 3bc048ca: 0087979b slliw a5,a5,0x8 + 3bc048ce: 0086161b slliw a2,a2,0x8 + 3bc048d2: 00f2e7b3 or a5,t0,a5 + 3bc048d6: 00b6529b srliw t0,a2,0xb + 3bc048da: 027284bb mulw s1,t0,t2 + 3bc048de: 82a6 mv t0,s1 + 3bc048e0: 7497f663 bgeu a5,s1,3bc0502c + 3bc048e4: 6ee2 ld t4,24(sp) + 3bc048e6: 407403bb subw t2,s0,t2 + 3bc048ea: 0053d39b srliw t2,t2,0x5 + 3bc048ee: 016383bb addw t2,t2,s6 + 3bc048f2: 2175d38b srh t2,a1,s7,0 + 3bc048f6: 01ceeeb3 or t4,t4,t3 + 3bc048fa: 28058613 addi a2,a1,640 + 3bc048fe: 020e8b63 beqz t4,3bc04934 + 3bc04902: 6966 ld s2,88(sp) + 3bc04904: fff80393 addi t2,a6,-1 + 3bc04908: 008e1e9b slliw t4,t3,0x8 + 3bc0490c: 4109138b mveqz t2,s2,a6 + 3bc04910: 807a438b lrbu t2,s4,t2,0 + 3bc04914: 01d38ebb addw t4,t2,t4 + 3bc04918: 73e2 ld t2,56(sp) + 3bc0491a: 01d3feb3 and t4,t2,t4 + 3bc0491e: 73a2 ld t2,40(sp) + 3bc04920: 007e9ebb sllw t4,t4,t2 + 3bc04924: 438d li t2,3 + 3bc04926: 027e8ebb mulw t4,t4,t2 + 3bc0492a: 020e9393 slli t2,t4,0x20 + 3bc0492e: 01f3de93 srli t4,t2,0x1f + 3bc04932: 9676 add a2,a2,t4 + 3bc04934: 4e99 li t4,6 + 3bc04936: 2e05 addiw t3,t3,1 + 3bc04938: 311eef63 bltu t4,a7,3bc04c56 + 3bc0493c: 438d li t2,3 + 3bc0493e: 8ec6 mv t4,a7 + 3bc04940: 0113f363 bgeu t2,a7,3bc04946 + 3bc04944: 4e8d li t4,3 + 3bc04946: 00265383 lhu t2,2(a2) + 3bc0494a: 41d888bb subw a7,a7,t4 + 3bc0494e: 00038e9b sext.w t4,t2 + 3bc04952: 00d4fa63 bgeu s1,a3,3bc04966 + 3bc04956: 0082949b slliw s1,t0,0x8 + 3bc0495a: 9817428b lbuia t0,(a4),1,0 + 3bc0495e: 0087979b slliw a5,a5,0x8 + 3bc04962: 00f2e7b3 or a5,t0,a5 + 3bc04966: 00b4d29b srliw t0,s1,0xb + 3bc0496a: 03d2893b mulw s2,t0,t4 + 3bc0496e: 2327f563 bgeu a5,s2,3bc04b98 + 3bc04972: 41d40ebb subw t4,s0,t4 + 3bc04976: 005ede9b srliw t4,t4,0x5 + 3bc0497a: 007e83bb addw t2,t4,t2 + 3bc0497e: 3c03b38b extu t2,t2,15,0 + 3bc04982: 4e89 li t4,2 + 3bc04984: 00761123 sh t2,2(a2) + 3bc04988: b3d6448b lurhu s1,a2,t4,1 + 3bc0498c: 03d61b8b addsl s7,a2,t4,1 + 3bc04990: 0004829b sext.w t0,s1 + 3bc04994: 00d97a63 bgeu s2,a3,3bc049a8 + 3bc04998: 9817438b lbuia t2,(a4),1,0 + 3bc0499c: 0087979b slliw a5,a5,0x8 + 3bc049a0: 0089191b slliw s2,s2,0x8 + 3bc049a4: 00f3e7b3 or a5,t2,a5 + 3bc049a8: 00b95b1b srliw s6,s2,0xb + 3bc049ac: 025b03bb mulw t2,s6,t0 + 3bc049b0: 001e9c1b slliw s8,t4,0x1 + 3bc049b4: 0e86 slli t4,t4,0x1 + 3bc049b6: 1e77fd63 bgeu a5,t2,3bc04bb0 + 3bc049ba: 405402bb subw t0,s0,t0 + 3bc049be: 0052d29b srliw t0,t0,0x5 + 3bc049c2: 009284bb addw s1,t0,s1 + 3bc049c6: 3c04b48b extu s1,s1,15,0 + 3bc049ca: 009b9023 sh s1,0(s7) + 3bc049ce: b3d6490b lurhu s2,a2,t4,1 + 3bc049d2: 020e9493 slli s1,t4,0x20 + 3bc049d6: 01f4dc13 srli s8,s1,0x1f + 3bc049da: 9c32 add s8,s8,a2 + 3bc049dc: 0009029b sext.w t0,s2 + 3bc049e0: 00d3f963 bgeu t2,a3,3bc049f2 + 3bc049e4: 9817448b lbuia s1,(a4),1,0 + 3bc049e8: 0087979b slliw a5,a5,0x8 + 3bc049ec: 0083939b slliw t2,t2,0x8 + 3bc049f0: 8fc5 or a5,a5,s1 + 3bc049f2: 00b3db9b srliw s7,t2,0xb + 3bc049f6: 025b84bb mulw s1,s7,t0 + 3bc049fa: 001e9b1b slliw s6,t4,0x1 + 3bc049fe: 1c97f663 bgeu a5,s1,3bc04bca + 3bc04a02: 405402bb subw t0,s0,t0 + 3bc04a06: 0052d29b srliw t0,t0,0x5 + 3bc04a0a: 0122893b addw s2,t0,s2 + 3bc04a0e: 3c09390b extu s2,s2,15,0 + 3bc04a12: 012c1023 sh s2,0(s8) + 3bc04a16: b366428b lurhu t0,a2,s6,1 + 3bc04a1a: 020b1e93 slli t4,s6,0x20 + 3bc04a1e: 01fedc13 srli s8,t4,0x1f + 3bc04a22: 9c32 add s8,s8,a2 + 3bc04a24: 00028e9b sext.w t4,t0 + 3bc04a28: 00d4fa63 bgeu s1,a3,3bc04a3c + 3bc04a2c: 9817438b lbuia t2,(a4),1,0 + 3bc04a30: 0087979b slliw a5,a5,0x8 + 3bc04a34: 0084949b slliw s1,s1,0x8 + 3bc04a38: 00f3e7b3 or a5,t2,a5 + 3bc04a3c: 00b4db9b srliw s7,s1,0xb + 3bc04a40: 03db83bb mulw t2,s7,t4 + 3bc04a44: 001b191b slliw s2,s6,0x1 + 3bc04a48: 1877fc63 bgeu a5,t2,3bc04be0 + 3bc04a4c: 41d40ebb subw t4,s0,t4 + 3bc04a50: 005ede9b srliw t4,t4,0x5 + 3bc04a54: 005e82bb addw t0,t4,t0 + 3bc04a58: 3c02b28b extu t0,t0,15,0 + 3bc04a5c: 02091493 slli s1,s2,0x20 + 3bc04a60: 005c1023 sh t0,0(s8) + 3bc04a64: 01f4db93 srli s7,s1,0x1f + 3bc04a68: b326448b lurhu s1,a2,s2,1 + 3bc04a6c: 9bb2 add s7,s7,a2 + 3bc04a6e: 00048e9b sext.w t4,s1 + 3bc04a72: 00d3fa63 bgeu t2,a3,3bc04a86 + 3bc04a76: 9817428b lbuia t0,(a4),1,0 + 3bc04a7a: 0087979b slliw a5,a5,0x8 + 3bc04a7e: 0083939b slliw t2,t2,0x8 + 3bc04a82: 00f2e7b3 or a5,t0,a5 + 3bc04a86: 00b3db1b srliw s6,t2,0xb + 3bc04a8a: 03db02bb mulw t0,s6,t4 + 3bc04a8e: 0019191b slliw s2,s2,0x1 + 3bc04a92: 1657f363 bgeu a5,t0,3bc04bf8 + 3bc04a96: 41d40ebb subw t4,s0,t4 + 3bc04a9a: 005ede9b srliw t4,t4,0x5 + 3bc04a9e: 009e84bb addw s1,t4,s1 + 3bc04aa2: 3c04b48b extu s1,s1,15,0 + 3bc04aa6: 009b9023 sh s1,0(s7) + 3bc04aaa: 02091493 slli s1,s2,0x20 + 3bc04aae: 01f4db93 srli s7,s1,0x1f + 3bc04ab2: b326448b lurhu s1,a2,s2,1 + 3bc04ab6: 9bb2 add s7,s7,a2 + 3bc04ab8: 00048e9b sext.w t4,s1 + 3bc04abc: 00d2fa63 bgeu t0,a3,3bc04ad0 + 3bc04ac0: 9817438b lbuia t2,(a4),1,0 + 3bc04ac4: 0087979b slliw a5,a5,0x8 + 3bc04ac8: 0082929b slliw t0,t0,0x8 + 3bc04acc: 00f3e7b3 or a5,t2,a5 + 3bc04ad0: 00b2db1b srliw s6,t0,0xb + 3bc04ad4: 03db03bb mulw t2,s6,t4 + 3bc04ad8: 0019191b slliw s2,s2,0x1 + 3bc04adc: 1277fa63 bgeu a5,t2,3bc04c10 + 3bc04ae0: 41d40ebb subw t4,s0,t4 + 3bc04ae4: 005ede9b srliw t4,t4,0x5 + 3bc04ae8: 009e84bb addw s1,t4,s1 + 3bc04aec: 3c04b48b extu s1,s1,15,0 + 3bc04af0: 009b9023 sh s1,0(s7) + 3bc04af4: 02091493 slli s1,s2,0x20 + 3bc04af8: 01f4db93 srli s7,s1,0x1f + 3bc04afc: b326448b lurhu s1,a2,s2,1 + 3bc04b00: 9bb2 add s7,s7,a2 + 3bc04b02: 00048e9b sext.w t4,s1 + 3bc04b06: 00d3fa63 bgeu t2,a3,3bc04b1a + 3bc04b0a: 9817428b lbuia t0,(a4),1,0 + 3bc04b0e: 0087979b slliw a5,a5,0x8 + 3bc04b12: 0083939b slliw t2,t2,0x8 + 3bc04b16: 00f2e7b3 or a5,t0,a5 + 3bc04b1a: 00b3db1b srliw s6,t2,0xb + 3bc04b1e: 03db02bb mulw t0,s6,t4 + 3bc04b22: 0019191b slliw s2,s2,0x1 + 3bc04b26: 1057f163 bgeu a5,t0,3bc04c28 + 3bc04b2a: 41d40ebb subw t4,s0,t4 + 3bc04b2e: 005ede9b srliw t4,t4,0x5 + 3bc04b32: 009e84bb addw s1,t4,s1 + 3bc04b36: 3c04b48b extu s1,s1,15,0 + 3bc04b3a: 009b9023 sh s1,0(s7) + 3bc04b3e: b3264b8b lurhu s7,a2,s2,1 + 3bc04b42: 02091493 slli s1,s2,0x20 + 3bc04b46: 01f4db13 srli s6,s1,0x1f + 3bc04b4a: 9b32 add s6,s6,a2 + 3bc04b4c: 000b8e9b sext.w t4,s7 + 3bc04b50: 00d2f963 bgeu t0,a3,3bc04b62 + 3bc04b54: 9817460b lbuia a2,(a4),1,0 + 3bc04b58: 0087979b slliw a5,a5,0x8 + 3bc04b5c: 0082929b slliw t0,t0,0x8 + 3bc04b60: 8fd1 or a5,a5,a2 + 3bc04b62: 00b2d39b srliw t2,t0,0xb + 3bc04b66: 03d3863b mulw a2,t2,t4 + 3bc04b6a: 0019149b slliw s1,s2,0x1 + 3bc04b6e: 0cc7f963 bgeu a5,a2,3bc04c40 + 3bc04b72: 41d40ebb subw t4,s0,t4 + 3bc04b76: 005ede9b srliw t4,t4,0x5 + 3bc04b7a: 017e8ebb addw t4,t4,s7 + 3bc04b7e: 01db1023 sh t4,0(s6) + 3bc04b82: 010a548b srb s1,s4,a6,0 + 3bc04b86: 0805 addi a6,a6,1 + 3bc04b88: 64a2 ld s1,8(sp) + 3bc04b8a: 649870e3 bgeu a6,s1,3bc059ca + 3bc04b8e: 74c2 ld s1,48(sp) + 3bc04b90: d09768e3 bltu a4,s1,3bc048a0 + 3bc04b94: 6370006f j 3bc059ca + 3bc04b98: 005ede9b srliw t4,t4,0x5 + 3bc04b9c: 41d383bb subw t2,t2,t4 + 3bc04ba0: 412787bb subw a5,a5,s2 + 3bc04ba4: 3c03b38b extu t2,t2,15,0 + 3bc04ba8: 4124893b subw s2,s1,s2 + 3bc04bac: 4e8d li t4,3 + 3bc04bae: bbd9 j 3bc04984 + 3bc04bb0: 0052d29b srliw t0,t0,0x5 + 3bc04bb4: 405484bb subw s1,s1,t0 + 3bc04bb8: 407787bb subw a5,a5,t2 + 3bc04bbc: 3c04b48b extu s1,s1,15,0 + 3bc04bc0: 001c0e9b addiw t4,s8,1 + 3bc04bc4: 407903bb subw t2,s2,t2 + 3bc04bc8: b509 j 3bc049ca + 3bc04bca: 0052d29b srliw t0,t0,0x5 + 3bc04bce: 4059093b subw s2,s2,t0 + 3bc04bd2: 9f85 subw a5,a5,s1 + 3bc04bd4: 3c09390b extu s2,s2,15,0 + 3bc04bd8: 2b05 addiw s6,s6,1 + 3bc04bda: 409384bb subw s1,t2,s1 + 3bc04bde: bd15 j 3bc04a12 + 3bc04be0: 005ede9b srliw t4,t4,0x5 + 3bc04be4: 41d282bb subw t0,t0,t4 + 3bc04be8: 407787bb subw a5,a5,t2 + 3bc04bec: 3c02b28b extu t0,t0,15,0 + 3bc04bf0: 2905 addiw s2,s2,1 + 3bc04bf2: 407483bb subw t2,s1,t2 + 3bc04bf6: b59d j 3bc04a5c + 3bc04bf8: 005ede9b srliw t4,t4,0x5 + 3bc04bfc: 41d484bb subw s1,s1,t4 + 3bc04c00: 405787bb subw a5,a5,t0 + 3bc04c04: 3c04b48b extu s1,s1,15,0 + 3bc04c08: 2905 addiw s2,s2,1 + 3bc04c0a: 405382bb subw t0,t2,t0 + 3bc04c0e: bd61 j 3bc04aa6 + 3bc04c10: 005ede9b srliw t4,t4,0x5 + 3bc04c14: 41d484bb subw s1,s1,t4 + 3bc04c18: 407787bb subw a5,a5,t2 + 3bc04c1c: 3c04b48b extu s1,s1,15,0 + 3bc04c20: 2905 addiw s2,s2,1 + 3bc04c22: 407283bb subw t2,t0,t2 + 3bc04c26: b5e9 j 3bc04af0 + 3bc04c28: 005ede9b srliw t4,t4,0x5 + 3bc04c2c: 41d484bb subw s1,s1,t4 + 3bc04c30: 405787bb subw a5,a5,t0 + 3bc04c34: 3c04b48b extu s1,s1,15,0 + 3bc04c38: 2905 addiw s2,s2,1 + 3bc04c3a: 405382bb subw t0,t2,t0 + 3bc04c3e: bdf5 j 3bc04b3a + 3bc04c40: 005ede9b srliw t4,t4,0x5 + 3bc04c44: 41db8ebb subw t4,s7,t4 + 3bc04c48: 9f91 subw a5,a5,a2 + 3bc04c4a: 01db1023 sh t4,0(s6) + 3bc04c4e: 2485 addiw s1,s1,1 + 3bc04c50: 40c2863b subw a2,t0,a2 + 3bc04c54: b73d j 3bc04b82 + 3bc04c56: 7c0fb90b extu s2,t6,31,0 + 3bc04c5a: 41280eb3 sub t4,a6,s2 + 3bc04c5e: 83d6 mv t2,s5 + 3bc04c60: 01286363 bltu a6,s2,3bc04c66 + 3bc04c64: 4381 li t2,0 + 3bc04c66: 9ed2 add t4,t4,s4 + 3bc04c68: 4925 li s2,9 + 3bc04c6a: 807ece8b lrbu t4,t4,t2,0 + 3bc04c6e: 438d li t2,3 + 3bc04c70: 01197363 bgeu s2,a7,3bc04c76 + 3bc04c74: 4399 li t2,6 + 3bc04c76: 001e9b1b slliw s6,t4,0x1 + 3bc04c7a: 100b7b13 andi s6,s6,256 + 3bc04c7e: 407888bb subw a7,a7,t2 + 3bc04c82: 101b039b addiw t2,s6,257 + 3bc04c86: b2764c0b lurhu s8,a2,t2,1 + 3bc04c8a: 101b0b93 addi s7,s6,257 + 3bc04c8e: 03761b8b addsl s7,a2,s7,1 + 3bc04c92: 000c039b sext.w t2,s8 + 3bc04c96: 00d4fa63 bgeu s1,a3,3bc04caa + 3bc04c9a: 0082949b slliw s1,t0,0x8 + 3bc04c9e: 9817428b lbuia t0,(a4),1,0 + 3bc04ca2: 0087979b slliw a5,a5,0x8 + 3bc04ca6: 00f2e7b3 or a5,t0,a5 + 3bc04caa: 00b4d29b srliw t0,s1,0xb + 3bc04cae: 0272893b mulw s2,t0,t2 + 3bc04cb2: 2b27ff63 bgeu a5,s2,3bc04f70 + 3bc04cb6: 407403bb subw t2,s0,t2 + 3bc04cba: 0053d39b srliw t2,t2,0x5 + 3bc04cbe: 01838c3b addw s8,t2,s8 + 3bc04cc2: 3c0c3c0b extu s8,s8,15,0 + 3bc04cc6: 100b4b13 xori s6,s6,256 + 3bc04cca: 4289 li t0,2 + 3bc04ccc: 002e939b slliw t2,t4,0x2 + 3bc04cd0: 007b73b3 and t2,s6,t2 + 3bc04cd4: 005b04bb addw s1,s6,t0 + 3bc04cd8: 018b9023 sh s8,0(s7) + 3bc04cdc: 00038c1b sext.w s8,t2 + 3bc04ce0: 007483bb addw t2,s1,t2 + 3bc04ce4: b2764b8b lurhu s7,a2,t2,1 + 3bc04ce8: 02039493 slli s1,t2,0x20 + 3bc04cec: 01f4dd13 srli s10,s1,0x1f + 3bc04cf0: 9d32 add s10,s10,a2 + 3bc04cf2: 000b839b sext.w t2,s7 + 3bc04cf6: 00d97963 bgeu s2,a3,3bc04d08 + 3bc04cfa: 9817448b lbuia s1,(a4),1,0 + 3bc04cfe: 0087979b slliw a5,a5,0x8 + 3bc04d02: 0089191b slliw s2,s2,0x8 + 3bc04d06: 8fc5 or a5,a5,s1 + 3bc04d08: 00b95c9b srliw s9,s2,0xb + 3bc04d0c: 027c84bb mulw s1,s9,t2 + 3bc04d10: 00129d9b slliw s11,t0,0x1 + 3bc04d14: 0286 slli t0,t0,0x1 + 3bc04d16: 2697f963 bgeu a5,s1,3bc04f88 + 3bc04d1a: 407403bb subw t2,s0,t2 + 3bc04d1e: 0053d39b srliw t2,t2,0x5 + 3bc04d22: 01738bbb addw s7,t2,s7 + 3bc04d26: 3c0bbb8b extu s7,s7,15,0 + 3bc04d2a: 018b4c33 xor s8,s6,s8 + 3bc04d2e: 003e939b slliw t2,t4,0x3 + 3bc04d32: 007c73b3 and t2,s8,t2 + 3bc04d36: 005c093b addw s2,s8,t0 + 3bc04d3a: 017d1023 sh s7,0(s10) + 3bc04d3e: 00038b1b sext.w s6,t2 + 3bc04d42: 007903bb addw t2,s2,t2 + 3bc04d46: b2764c8b lurhu s9,a2,t2,1 + 3bc04d4a: 02039913 slli s2,t2,0x20 + 3bc04d4e: 01f95d93 srli s11,s2,0x1f + 3bc04d52: 9db2 add s11,s11,a2 + 3bc04d54: 000c839b sext.w t2,s9 + 3bc04d58: 00d4fa63 bgeu s1,a3,3bc04d6c + 3bc04d5c: 9817490b lbuia s2,(a4),1,0 + 3bc04d60: 0087979b slliw a5,a5,0x8 + 3bc04d64: 0084949b slliw s1,s1,0x8 + 3bc04d68: 00f967b3 or a5,s2,a5 + 3bc04d6c: 00b4dd1b srliw s10,s1,0xb + 3bc04d70: 027d093b mulw s2,s10,t2 + 3bc04d74: 00129b9b slliw s7,t0,0x1 + 3bc04d78: 2327f463 bgeu a5,s2,3bc04fa0 + 3bc04d7c: 407403bb subw t2,s0,t2 + 3bc04d80: 0053d39b srliw t2,t2,0x5 + 3bc04d84: 01938cbb addw s9,t2,s9 + 3bc04d88: 3c0cbc8b extu s9,s9,15,0 + 3bc04d8c: 016c4b33 xor s6,s8,s6 + 3bc04d90: 004e929b slliw t0,t4,0x4 + 3bc04d94: 005b72b3 and t0,s6,t0 + 3bc04d98: 017b03bb addw t2,s6,s7 + 3bc04d9c: 019d9023 sh s9,0(s11) + 3bc04da0: 00028c1b sext.w s8,t0 + 3bc04da4: 005382bb addw t0,t2,t0 + 3bc04da8: b256438b lurhu t2,a2,t0,1 + 3bc04dac: 02029493 slli s1,t0,0x20 + 3bc04db0: 01f4dd13 srli s10,s1,0x1f + 3bc04db4: 9d32 add s10,s10,a2 + 3bc04db6: 0003829b sext.w t0,t2 + 3bc04dba: 00d97963 bgeu s2,a3,3bc04dcc + 3bc04dbe: 9817448b lbuia s1,(a4),1,0 + 3bc04dc2: 0087979b slliw a5,a5,0x8 + 3bc04dc6: 0089191b slliw s2,s2,0x8 + 3bc04dca: 8fc5 or a5,a5,s1 + 3bc04dcc: 00b95c9b srliw s9,s2,0xb + 3bc04dd0: 025c84bb mulw s1,s9,t0 + 3bc04dd4: 001b9b9b slliw s7,s7,0x1 + 3bc04dd8: 1e97f063 bgeu a5,s1,3bc04fb8 + 3bc04ddc: 405402bb subw t0,s0,t0 + 3bc04de0: 0052d29b srliw t0,t0,0x5 + 3bc04de4: 007283bb addw t2,t0,t2 + 3bc04de8: 3c03b38b extu t2,t2,15,0 + 3bc04dec: 018b4c33 xor s8,s6,s8 + 3bc04df0: 005e929b slliw t0,t4,0x5 + 3bc04df4: 007d1023 sh t2,0(s10) + 3bc04df8: 005c72b3 and t0,s8,t0 + 3bc04dfc: 017c03bb addw t2,s8,s7 + 3bc04e00: 00028b1b sext.w s6,t0 + 3bc04e04: 005382bb addw t0,t2,t0 + 3bc04e08: b256490b lurhu s2,a2,t0,1 + 3bc04e0c: 02029393 slli t2,t0,0x20 + 3bc04e10: 01f3dd13 srli s10,t2,0x1f + 3bc04e14: 9d32 add s10,s10,a2 + 3bc04e16: 0009029b sext.w t0,s2 + 3bc04e1a: 00d4fa63 bgeu s1,a3,3bc04e2e + 3bc04e1e: 9817438b lbuia t2,(a4),1,0 + 3bc04e22: 0087979b slliw a5,a5,0x8 + 3bc04e26: 0084949b slliw s1,s1,0x8 + 3bc04e2a: 00f3e7b3 or a5,t2,a5 + 3bc04e2e: 00b4dc9b srliw s9,s1,0xb + 3bc04e32: 025c83bb mulw t2,s9,t0 + 3bc04e36: 001b9b9b slliw s7,s7,0x1 + 3bc04e3a: 1877fa63 bgeu a5,t2,3bc04fce + 3bc04e3e: 405402bb subw t0,s0,t0 + 3bc04e42: 0052d29b srliw t0,t0,0x5 + 3bc04e46: 0122893b addw s2,t0,s2 + 3bc04e4a: 3c09390b extu s2,s2,15,0 + 3bc04e4e: 016c4b33 xor s6,s8,s6 + 3bc04e52: 006e929b slliw t0,t4,0x6 + 3bc04e56: 005b72b3 and t0,s6,t0 + 3bc04e5a: 017b04bb addw s1,s6,s7 + 3bc04e5e: 00028c1b sext.w s8,t0 + 3bc04e62: 005482bb addw t0,s1,t0 + 3bc04e66: 02029493 slli s1,t0,0x20 + 3bc04e6a: 012d1023 sh s2,0(s10) + 3bc04e6e: 01f4dd13 srli s10,s1,0x1f + 3bc04e72: b256448b lurhu s1,a2,t0,1 + 3bc04e76: 9d32 add s10,s10,a2 + 3bc04e78: 0004829b sext.w t0,s1 + 3bc04e7c: 00d3fa63 bgeu t2,a3,3bc04e90 + 3bc04e80: 9817490b lbuia s2,(a4),1,0 + 3bc04e84: 0087979b slliw a5,a5,0x8 + 3bc04e88: 0083939b slliw t2,t2,0x8 + 3bc04e8c: 00f967b3 or a5,s2,a5 + 3bc04e90: 00b3dc9b srliw s9,t2,0xb + 3bc04e94: 025c893b mulw s2,s9,t0 + 3bc04e98: 001b9b9b slliw s7,s7,0x1 + 3bc04e9c: 1527f563 bgeu a5,s2,3bc04fe6 + 3bc04ea0: 405402bb subw t0,s0,t0 + 3bc04ea4: 0052d29b srliw t0,t0,0x5 + 3bc04ea8: 009284bb addw s1,t0,s1 + 3bc04eac: 3c04b48b extu s1,s1,15,0 + 3bc04eb0: 018b4c33 xor s8,s6,s8 + 3bc04eb4: 007e929b slliw t0,t4,0x7 + 3bc04eb8: 005c72b3 and t0,s8,t0 + 3bc04ebc: 017c03bb addw t2,s8,s7 + 3bc04ec0: 009d1023 sh s1,0(s10) + 3bc04ec4: 0002849b sext.w s1,t0 + 3bc04ec8: 005382bb addw t0,t2,t0 + 3bc04ecc: b2564b0b lurhu s6,a2,t0,1 + 3bc04ed0: 02029393 slli t2,t0,0x20 + 3bc04ed4: 01f3dd93 srli s11,t2,0x1f + 3bc04ed8: 9db2 add s11,s11,a2 + 3bc04eda: 000b029b sext.w t0,s6 + 3bc04ede: 00d97a63 bgeu s2,a3,3bc04ef2 + 3bc04ee2: 9817438b lbuia t2,(a4),1,0 + 3bc04ee6: 0087979b slliw a5,a5,0x8 + 3bc04eea: 0089191b slliw s2,s2,0x8 + 3bc04eee: 00f3e7b3 or a5,t2,a5 + 3bc04ef2: 00b95d1b srliw s10,s2,0xb + 3bc04ef6: 025d03bb mulw t2,s10,t0 + 3bc04efa: 001b9c9b slliw s9,s7,0x1 + 3bc04efe: 1077f063 bgeu a5,t2,3bc04ffe + 3bc04f02: 405402bb subw t0,s0,t0 + 3bc04f06: 0052d29b srliw t0,t0,0x5 + 3bc04f0a: 01628b3b addw s6,t0,s6 + 3bc04f0e: 3c0b3b0b extu s6,s6,15,0 + 3bc04f12: 009c44b3 xor s1,s8,s1 + 3bc04f16: 008e9e9b slliw t4,t4,0x8 + 3bc04f1a: 01d4feb3 and t4,s1,t4 + 3bc04f1e: 019484bb addw s1,s1,s9 + 3bc04f22: 01d48ebb addw t4,s1,t4 + 3bc04f26: 016d9023 sh s6,0(s11) + 3bc04f2a: b3d64b0b lurhu s6,a2,t4,1 + 3bc04f2e: 020e9493 slli s1,t4,0x20 + 3bc04f32: 01f4d913 srli s2,s1,0x1f + 3bc04f36: 9932 add s2,s2,a2 + 3bc04f38: 000b0e9b sext.w t4,s6 + 3bc04f3c: 00d3f963 bgeu t2,a3,3bc04f4e + 3bc04f40: 9817460b lbuia a2,(a4),1,0 + 3bc04f44: 0087979b slliw a5,a5,0x8 + 3bc04f48: 0083939b slliw t2,t2,0x8 + 3bc04f4c: 8fd1 or a5,a5,a2 + 3bc04f4e: 00b3d29b srliw t0,t2,0xb + 3bc04f52: 03d2863b mulw a2,t0,t4 + 3bc04f56: 001c949b slliw s1,s9,0x1 + 3bc04f5a: 0ac7fe63 bgeu a5,a2,3bc05016 + 3bc04f5e: 41d40ebb subw t4,s0,t4 + 3bc04f62: 005ede9b srliw t4,t4,0x5 + 3bc04f66: 016e8ebb addw t4,t4,s6 + 3bc04f6a: 01d91023 sh t4,0(s2) + 3bc04f6e: b911 j 3bc04b82 + 3bc04f70: 0053d39b srliw t2,t2,0x5 + 3bc04f74: 407c0c3b subw s8,s8,t2 + 3bc04f78: 412787bb subw a5,a5,s2 + 3bc04f7c: 3c0c3c0b extu s8,s8,15,0 + 3bc04f80: 4124893b subw s2,s1,s2 + 3bc04f84: 428d li t0,3 + 3bc04f86: b399 j 3bc04ccc + 3bc04f88: 0053d39b srliw t2,t2,0x5 + 3bc04f8c: 407b8bbb subw s7,s7,t2 + 3bc04f90: 9f85 subw a5,a5,s1 + 3bc04f92: 3c0bbb8b extu s7,s7,15,0 + 3bc04f96: 001d829b addiw t0,s11,1 + 3bc04f9a: 409904bb subw s1,s2,s1 + 3bc04f9e: bb41 j 3bc04d2e + 3bc04fa0: 0053d39b srliw t2,t2,0x5 + 3bc04fa4: 407c8cbb subw s9,s9,t2 + 3bc04fa8: 412787bb subw a5,a5,s2 + 3bc04fac: 3c0cbc8b extu s9,s9,15,0 + 3bc04fb0: 2b85 addiw s7,s7,1 + 3bc04fb2: 4124893b subw s2,s1,s2 + 3bc04fb6: bbe9 j 3bc04d90 + 3bc04fb8: 0052d29b srliw t0,t0,0x5 + 3bc04fbc: 405383bb subw t2,t2,t0 + 3bc04fc0: 9f85 subw a5,a5,s1 + 3bc04fc2: 3c03b38b extu t2,t2,15,0 + 3bc04fc6: 2b85 addiw s7,s7,1 + 3bc04fc8: 409904bb subw s1,s2,s1 + 3bc04fcc: b515 j 3bc04df0 + 3bc04fce: 0052d29b srliw t0,t0,0x5 + 3bc04fd2: 4059093b subw s2,s2,t0 + 3bc04fd6: 407787bb subw a5,a5,t2 + 3bc04fda: 3c09390b extu s2,s2,15,0 + 3bc04fde: 2b85 addiw s7,s7,1 + 3bc04fe0: 407483bb subw t2,s1,t2 + 3bc04fe4: b5bd j 3bc04e52 + 3bc04fe6: 0052d29b srliw t0,t0,0x5 + 3bc04fea: 405484bb subw s1,s1,t0 + 3bc04fee: 412787bb subw a5,a5,s2 + 3bc04ff2: 3c04b48b extu s1,s1,15,0 + 3bc04ff6: 2b85 addiw s7,s7,1 + 3bc04ff8: 4123893b subw s2,t2,s2 + 3bc04ffc: bd65 j 3bc04eb4 + 3bc04ffe: 0052d29b srliw t0,t0,0x5 + 3bc05002: 405b0b3b subw s6,s6,t0 + 3bc05006: 407787bb subw a5,a5,t2 + 3bc0500a: 3c0b3b0b extu s6,s6,15,0 + 3bc0500e: 2c85 addiw s9,s9,1 + 3bc05010: 407903bb subw t2,s2,t2 + 3bc05014: b709 j 3bc04f16 + 3bc05016: 005ede9b srliw t4,t4,0x5 + 3bc0501a: 41db0ebb subw t4,s6,t4 + 3bc0501e: 9f91 subw a5,a5,a2 + 3bc05020: 01d91023 sh t4,0(s2) + 3bc05024: 2485 addiw s1,s1,1 + 3bc05026: 40c3863b subw a2,t2,a2 + 3bc0502a: bea1 j 3bc04b82 + 3bc0502c: 0053d39b srliw t2,t2,0x5 + 3bc05030: 407b03bb subw t2,s6,t2 + 3bc05034: 2175d38b srh t2,a1,s7,0 + 3bc05038: 7c08bb8b extu s7,a7,31,0 + 3bc0503c: 0bc1 addi s7,s7,16 + 3bc0503e: a375cc0b lrhu s8,a1,s7,1 + 3bc05042: 409604bb subw s1,a2,s1 + 3bc05046: 405787bb subw a5,a5,t0 + 3bc0504a: 001b9b13 slli s6,s7,0x1 + 3bc0504e: 000c039b sext.w t2,s8 + 3bc05052: 00d4fa63 bgeu s1,a3,3bc05066 + 3bc05056: 0087929b slliw t0,a5,0x8 + 3bc0505a: 9817478b lbuia a5,(a4),1,0 + 3bc0505e: 0084949b slliw s1,s1,0x8 + 3bc05062: 0057e7b3 or a5,a5,t0 + 3bc05066: 00b4d29b srliw t0,s1,0xb + 3bc0506a: 0272863b mulw a2,t0,t2 + 3bc0506e: 36c7ff63 bgeu a5,a2,3bc053ec + 3bc05072: 407403bb subw t2,s0,t2 + 3bc05076: 0053d39b srliw t2,t2,0x5 + 3bc0507a: 62c6 ld t0,80(sp) + 3bc0507c: 018383bb addw t2,t2,s8 + 3bc05080: 2375d38b srh t2,a1,s7,1 + 3bc05084: 28b1 addiw a7,a7,12 + 3bc05086: 8b7e mv s6,t6 + 3bc05088: 0002d383 lhu t2,0(t0) + 3bc0508c: 00038f9b sext.w t6,t2 + 3bc05090: 00d67a63 bgeu a2,a3,3bc050a4 + 3bc05094: 9817430b lbuia t1,(a4),1,0 + 3bc05098: 0087979b slliw a5,a5,0x8 + 3bc0509c: 0086161b slliw a2,a2,0x8 + 3bc050a0: 00f367b3 or a5,t1,a5 + 3bc050a4: 00b6531b srliw t1,a2,0xb + 3bc050a8: 03f304bb mulw s1,t1,t6 + 3bc050ac: 8326 mv t1,s1 + 3bc050ae: 5297f663 bgeu a5,s1,3bc055da + 3bc050b2: 41f40fbb subw t6,s0,t6 + 3bc050b6: 005fdf9b srliw t6,t6,0x5 + 3bc050ba: 7c0ebe8b extu t4,t4,31,0 + 3bc050be: 007f8fbb addw t6,t6,t2 + 3bc050c2: 01f29023 sh t6,0(t0) + 3bc050c6: 03d2928b addsl t0,t0,t4,1 + 3bc050ca: 0022de83 lhu t4,2(t0) + 3bc050ce: 000e861b sext.w a2,t4 + 3bc050d2: 00d4fa63 bgeu s1,a3,3bc050e6 + 3bc050d6: 9817430b lbuia t1,(a4),1,0 + 3bc050da: 0087979b slliw a5,a5,0x8 + 3bc050de: 0084949b slliw s1,s1,0x8 + 3bc050e2: 00f367b3 or a5,t1,a5 + 3bc050e6: 00b4d31b srliw t1,s1,0xb + 3bc050ea: 02c30fbb mulw t6,t1,a2 + 3bc050ee: 4bf7f263 bgeu a5,t6,3bc05592 + 3bc050f2: 40c4063b subw a2,s0,a2 + 3bc050f6: 0056561b srliw a2,a2,0x5 + 3bc050fa: 01d60ebb addw t4,a2,t4 + 3bc050fe: 3c0ebe8b extu t4,t4,15,0 + 3bc05102: 4309 li t1,2 + 3bc05104: 01d29123 sh t4,2(t0) + 3bc05108: b262c38b lurhu t2,t0,t1,1 + 3bc0510c: 7c03390b extu s2,t1,31,0 + 3bc05110: 0003861b sext.w a2,t2 + 3bc05114: 00dffa63 bgeu t6,a3,3bc05128 + 3bc05118: 98174e8b lbuia t4,(a4),1,0 + 3bc0511c: 0087979b slliw a5,a5,0x8 + 3bc05120: 008f9f9b slliw t6,t6,0x8 + 3bc05124: 00fee7b3 or a5,t4,a5 + 3bc05128: 00bfd49b srliw s1,t6,0xb + 3bc0512c: 02c48ebb mulw t4,s1,a2 + 3bc05130: 00131b9b slliw s7,t1,0x1 + 3bc05134: 0306 slli t1,t1,0x1 + 3bc05136: 47d7fa63 bgeu a5,t4,3bc055aa + 3bc0513a: 40c4063b subw a2,s0,a2 + 3bc0513e: 0056561b srliw a2,a2,0x5 + 3bc05142: 007603bb addw t2,a2,t2 + 3bc05146: 3c03b38b extu t2,t2,15,0 + 3bc0514a: 2322d38b srh t2,t0,s2,1 + 3bc0514e: b262c38b lurhu t2,t0,t1,1 + 3bc05152: 7c033b8b extu s7,t1,31,0 + 3bc05156: 00038f9b sext.w t6,t2 + 3bc0515a: 00def963 bgeu t4,a3,3bc0516c + 3bc0515e: 9817460b lbuia a2,(a4),1,0 + 3bc05162: 0087979b slliw a5,a5,0x8 + 3bc05166: 008e9e9b slliw t4,t4,0x8 + 3bc0516a: 8fd1 or a5,a5,a2 + 3bc0516c: 00bed91b srliw s2,t4,0xb + 3bc05170: 03f9063b mulw a2,s2,t6 + 3bc05174: 0013131b slliw t1,t1,0x1 + 3bc05178: 44c7f663 bgeu a5,a2,3bc055c4 + 3bc0517c: 41f40fbb subw t6,s0,t6 + 3bc05180: 005fdf9b srliw t6,t6,0x5 + 3bc05184: 007f83bb addw t2,t6,t2 + 3bc05188: 3c03b38b extu t2,t2,15,0 + 3bc0518c: 2372d38b srh t2,t0,s7,1 + 3bc05190: 3361 addiw t1,t1,-8 + 3bc05192: 44ad li s1,11 + 3bc05194: 1114f5e3 bgeu s1,a7,3bc05a9e + 3bc05198: 448d li s1,3 + 3bc0519a: 8f9a mv t6,t1 + 3bc0519c: 0064f363 bgeu s1,t1,3bc051a2 + 3bc051a0: 4f8d li t6,3 + 3bc051a2: 006f9f9b slliw t6,t6,0x6 + 3bc051a6: 040f8f9b addiw t6,t6,64 + 3bc051aa: 7c0fbf8b extu t6,t6,31,0 + 3bc051ae: 03f59f8b addsl t6,a1,t6,1 + 3bc051b2: 002fd383 lhu t2,2(t6) + 3bc051b6: 00038e9b sext.w t4,t2 + 3bc051ba: 00d67a63 bgeu a2,a3,3bc051ce + 3bc051be: 9817428b lbuia t0,(a4),1,0 + 3bc051c2: 0087979b slliw a5,a5,0x8 + 3bc051c6: 0086161b slliw a2,a2,0x8 + 3bc051ca: 00f2e7b3 or a5,t0,a5 + 3bc051ce: 00b6549b srliw s1,a2,0xb + 3bc051d2: 03d482bb mulw t0,s1,t4 + 3bc051d6: 5e57f763 bgeu a5,t0,3bc057c4 + 3bc051da: 41d40ebb subw t4,s0,t4 + 3bc051de: 005ede9b srliw t4,t4,0x5 + 3bc051e2: 007e83bb addw t2,t4,t2 + 3bc051e6: 3c03b38b extu t2,t2,15,0 + 3bc051ea: 4609 li a2,2 + 3bc051ec: 007f9123 sh t2,2(t6) + 3bc051f0: b2cfc48b lurhu s1,t6,a2,1 + 3bc051f4: 7c063b8b extu s7,a2,31,0 + 3bc051f8: 00048e9b sext.w t4,s1 + 3bc051fc: 00d2fa63 bgeu t0,a3,3bc05210 + 3bc05200: 9817438b lbuia t2,(a4),1,0 + 3bc05204: 0087979b slliw a5,a5,0x8 + 3bc05208: 0082929b slliw t0,t0,0x8 + 3bc0520c: 00f3e7b3 or a5,t2,a5 + 3bc05210: 00b2d91b srliw s2,t0,0xb + 3bc05214: 03d903bb mulw t2,s2,t4 + 3bc05218: 00161c1b slliw s8,a2,0x1 + 3bc0521c: 0606 slli a2,a2,0x1 + 3bc0521e: 5a77ff63 bgeu a5,t2,3bc057dc + 3bc05222: 41d40ebb subw t4,s0,t4 + 3bc05226: 005ede9b srliw t4,t4,0x5 + 3bc0522a: 009e84bb addw s1,t4,s1 + 3bc0522e: 3c04b48b extu s1,s1,15,0 + 3bc05232: 237fd48b srh s1,t6,s7,1 + 3bc05236: b2cfc48b lurhu s1,t6,a2,1 + 3bc0523a: 7c063c0b extu s8,a2,31,0 + 3bc0523e: 00048e9b sext.w t4,s1 + 3bc05242: 00d3fa63 bgeu t2,a3,3bc05256 + 3bc05246: 9817428b lbuia t0,(a4),1,0 + 3bc0524a: 0087979b slliw a5,a5,0x8 + 3bc0524e: 0083939b slliw t2,t2,0x8 + 3bc05252: 00f2e7b3 or a5,t0,a5 + 3bc05256: 00b3db9b srliw s7,t2,0xb + 3bc0525a: 03db82bb mulw t0,s7,t4 + 3bc0525e: 0016191b slliw s2,a2,0x1 + 3bc05262: 5857fa63 bgeu a5,t0,3bc057f6 + 3bc05266: 41d40ebb subw t4,s0,t4 + 3bc0526a: 005ede9b srliw t4,t4,0x5 + 3bc0526e: 009e84bb addw s1,t4,s1 + 3bc05272: 3c04b48b extu s1,s1,15,0 + 3bc05276: 238fd48b srh s1,t6,s8,1 + 3bc0527a: b32fc38b lurhu t2,t6,s2,1 + 3bc0527e: 7c093c0b extu s8,s2,31,0 + 3bc05282: 0003861b sext.w a2,t2 + 3bc05286: 00d2fa63 bgeu t0,a3,3bc0529a + 3bc0528a: 98174e8b lbuia t4,(a4),1,0 + 3bc0528e: 0087979b slliw a5,a5,0x8 + 3bc05292: 0082929b slliw t0,t0,0x8 + 3bc05296: 00fee7b3 or a5,t4,a5 + 3bc0529a: 00b2db9b srliw s7,t0,0xb + 3bc0529e: 02cb8ebb mulw t4,s7,a2 + 3bc052a2: 0019149b slliw s1,s2,0x1 + 3bc052a6: 57d7f463 bgeu a5,t4,3bc0580e + 3bc052aa: 40c4063b subw a2,s0,a2 + 3bc052ae: 0056561b srliw a2,a2,0x5 + 3bc052b2: 007603bb addw t2,a2,t2 + 3bc052b6: 3c03b38b extu t2,t2,15,0 + 3bc052ba: 238fd38b srh t2,t6,s8,1 + 3bc052be: b29fc28b lurhu t0,t6,s1,1 + 3bc052c2: 7c04bc0b extu s8,s1,31,0 + 3bc052c6: 0002861b sext.w a2,t0 + 3bc052ca: 00defa63 bgeu t4,a3,3bc052de + 3bc052ce: 9817438b lbuia t2,(a4),1,0 + 3bc052d2: 0087979b slliw a5,a5,0x8 + 3bc052d6: 008e9e9b slliw t4,t4,0x8 + 3bc052da: 00f3e7b3 or a5,t2,a5 + 3bc052de: 00bedb9b srliw s7,t4,0xb + 3bc052e2: 02cb83bb mulw t2,s7,a2 + 3bc052e6: 0014991b slliw s2,s1,0x1 + 3bc052ea: 5277fe63 bgeu a5,t2,3bc05826 + 3bc052ee: 40c4063b subw a2,s0,a2 + 3bc052f2: 0056561b srliw a2,a2,0x5 + 3bc052f6: 005602bb addw t0,a2,t0 + 3bc052fa: 3c02b28b extu t0,t0,15,0 + 3bc052fe: 238fd28b srh t0,t6,s8,1 + 3bc05302: b32fc48b lurhu s1,t6,s2,1 + 3bc05306: 7c093c0b extu s8,s2,31,0 + 3bc0530a: 0004829b sext.w t0,s1 + 3bc0530e: 00d3f963 bgeu t2,a3,3bc05320 + 3bc05312: 9817460b lbuia a2,(a4),1,0 + 3bc05316: 0087979b slliw a5,a5,0x8 + 3bc0531a: 0083939b slliw t2,t2,0x8 + 3bc0531e: 8fd1 or a5,a5,a2 + 3bc05320: 00b3db9b srliw s7,t2,0xb + 3bc05324: 025b863b mulw a2,s7,t0 + 3bc05328: 00191e9b slliw t4,s2,0x1 + 3bc0532c: 50c7f963 bgeu a5,a2,3bc0583e + 3bc05330: 405402bb subw t0,s0,t0 + 3bc05334: 0052d29b srliw t0,t0,0x5 + 3bc05338: 009284bb addw s1,t0,s1 + 3bc0533c: 3c04b48b extu s1,s1,15,0 + 3bc05340: fc0e8e9b addiw t4,t4,-64 + 3bc05344: 238fd48b srh s1,t6,s8,1 + 3bc05348: 000e839b sext.w t2,t4 + 3bc0534c: 448d li s1,3 + 3bc0534e: 0874f063 bgeu s1,t2,3bc053ce + 3bc05352: 001eff93 andi t6,t4,1 + 3bc05356: 44b5 li s1,13 + 3bc05358: 001ed29b srliw t0,t4,0x1 + 3bc0535c: 002fef93 ori t6,t6,2 + 3bc05360: 5074e963 bltu s1,t2,3bc05872 + 3bc05364: 32fd addiw t0,t0,-1 + 3bc05366: 005f9fbb sllw t6,t6,t0 + 3bc0536a: 2f85 addiw t6,t6,1 + 3bc0536c: 4c05 li s8,1 + 3bc0536e: 020f9493 slli s1,t6,0x20 + 3bc05372: 01f4db93 srli s7,s1,0x1f + 3bc05376: 74fd lui s1,0xfffff + 3bc05378: 30048493 addi s1,s1,768 # fffffffffffff300 <__BL2_END__+0xffffffffc43ebef0> + 3bc0537c: 9ba6 add s7,s7,s1 + 3bc0537e: a175c48b lrhu s1,a1,s7,0 + 3bc05382: 0004839b sext.w t2,s1 + 3bc05386: 00d67a63 bgeu a2,a3,3bc0539a + 3bc0538a: 98174e8b lbuia t4,(a4),1,0 + 3bc0538e: 0087979b slliw a5,a5,0x8 + 3bc05392: 0086161b slliw a2,a2,0x8 + 3bc05396: 00fee7b3 or a5,t4,a5 + 3bc0539a: 00b6591b srliw s2,a2,0xb + 3bc0539e: 02790d3b mulw s10,s2,t2 + 3bc053a2: 001c1e9b slliw t4,s8,0x1 + 3bc053a6: 4ba7f963 bgeu a5,s10,3bc05858 + 3bc053aa: 407403bb subw t2,s0,t2 + 3bc053ae: 0053d39b srliw t2,t2,0x5 + 3bc053b2: 009384bb addw s1,t2,s1 + 3bc053b6: 3c04b48b extu s1,s1,15,0 + 3bc053ba: 018f8fbb addw t6,t6,s8 + 3bc053be: 866a mv a2,s10 + 3bc053c0: 2175d48b srh s1,a1,s7,0 + 3bc053c4: 32fd addiw t0,t0,-1 + 3bc053c6: 48029763 bnez t0,3bc05854 + 3bc053ca: 41df83bb subw t2,t6,t4 + 3bc053ce: 44c9 li s1,18 + 3bc053d0: 00138f9b addiw t6,t2,1 + 3bc053d4: 6d14f363 bgeu s1,a7,3bc05a9a + 3bc053d8: 48a9 li a7,10 + 3bc053da: 6ee2 ld t4,24(sp) + 3bc053dc: 41de1e8b mveqz t4,t3,t4 + 3bc053e0: 73d3e063 bltu t2,t4,3bc05b00 + 3bc053e4: 03053423 sd a6,40(a0) + 3bc053e8: c24ff06f j 3bc0480c + 3bc053ec: 0053d39b srliw t2,t2,0x5 + 3bc053f0: 407c03bb subw t2,s8,t2 + 3bc053f4: 2375d38b srh t2,a1,s7,1 + 3bc053f8: 018b0c13 addi s8,s6,24 + 3bc053fc: a185cb8b lrhu s7,a1,s8,0 + 3bc05400: 40c48cbb subw s9,s1,a2 + 3bc05404: 9f91 subw a5,a5,a2 + 3bc05406: 000b839b sext.w t2,s7 + 3bc0540a: 00dcfa63 bgeu s9,a3,3bc0541e + 3bc0540e: 0087929b slliw t0,a5,0x8 + 3bc05412: 9817478b lbuia a5,(a4),1,0 + 3bc05416: 008c9c9b slliw s9,s9,0x8 + 3bc0541a: 0057e7b3 or a5,a5,t0 + 3bc0541e: 00bcd61b srliw a2,s9,0xb + 3bc05422: 027602bb mulw t0,a2,t2 + 3bc05426: 8616 mv a2,t0 + 3bc05428: 0a57f463 bgeu a5,t0,3bc054d0 + 3bc0542c: 407403bb subw t2,s0,t2 + 3bc05430: 0053d39b srliw t2,t2,0x5 + 3bc05434: 74fd lui s1,0xfffff + 3bc05436: 017383bb addw t2,t2,s7 + 3bc0543a: 40048493 addi s1,s1,1024 # fffffffffffff400 <__BL2_END__+0xffffffffc43ebff0> + 3bc0543e: 2185d38b srh t2,a1,s8,0 + 3bc05442: 9926 add s2,s2,s1 + 3bc05444: a125c48b lrhu s1,a1,s2,0 + 3bc05448: 0004839b sext.w t2,s1 + 3bc0544c: 00d2f963 bgeu t0,a3,3bc0545e + 3bc05450: 9817460b lbuia a2,(a4),1,0 + 3bc05454: 0087979b slliw a5,a5,0x8 + 3bc05458: 0082929b slliw t0,t0,0x8 + 3bc0545c: 8fd1 or a5,a5,a2 + 3bc0545e: 00b2db1b srliw s6,t0,0xb + 3bc05462: 027b063b mulw a2,s6,t2 + 3bc05466: 8b32 mv s6,a2 + 3bc05468: 02c7ff63 bgeu a5,a2,3bc054a6 + 3bc0546c: 407403bb subw t2,s0,t2 + 3bc05470: 0053d39b srliw t2,t2,0x5 + 3bc05474: 009383bb addw t2,t2,s1 + 3bc05478: 2125d38b srh t2,a1,s2,0 + 3bc0547c: 7c0fb38b extu t2,t6,31,0 + 3bc05480: 40780eb3 sub t4,a6,t2 + 3bc05484: 82d6 mv t0,s5 + 3bc05486: 00786363 bltu a6,t2,3bc0548c + 3bc0548a: 4281 li t0,0 + 3bc0548c: 9ed2 add t4,t4,s4 + 3bc0548e: 805ece8b lrbu t4,t4,t0,0 + 3bc05492: 2e05 addiw t3,t3,1 + 3bc05494: 010a5e8b srb t4,s4,a6,0 + 3bc05498: 4e99 li t4,6 + 3bc0549a: 0805 addi a6,a6,1 + 3bc0549c: 691ef963 bgeu t4,a7,3bc05b2e + 3bc054a0: 48ad li a7,11 + 3bc054a2: ee6ff06f j 3bc04b88 + 3bc054a6: 0053d39b srliw t2,t2,0x5 + 3bc054aa: 837a mv t1,t5 + 3bc054ac: 407483bb subw t2,s1,t2 + 3bc054b0: 8f7e mv t5,t6 + 3bc054b2: 40c2863b subw a2,t0,a2 + 3bc054b6: 416787bb subw a5,a5,s6 + 3bc054ba: 2125d38b srh t2,a1,s2,0 + 3bc054be: 8f9a mv t6,t1 + 3bc054c0: 4319 li t1,6 + 3bc054c2: 0d137663 bgeu t1,a7,3bc0558e + 3bc054c6: 48ad li a7,11 + 3bc054c8: 8b7a mv s6,t5 + 3bc054ca: 62a6 ld t0,72(sp) + 3bc054cc: 8f7e mv t5,t6 + 3bc054ce: be6d j 3bc05088 + 3bc054d0: 0053d39b srliw t2,t2,0x5 + 3bc054d4: 407b83bb subw t2,s7,t2 + 3bc054d8: 2185d38b srh t2,a1,s8,0 + 3bc054dc: 030b0493 addi s1,s6,48 + 3bc054e0: a095c38b lrhu t2,a1,s1,0 + 3bc054e4: 405c82bb subw t0,s9,t0 + 3bc054e8: 9f91 subw a5,a5,a2 + 3bc054ea: 0003831b sext.w t1,t2 + 3bc054ee: 00d2f963 bgeu t0,a3,3bc05500 + 3bc054f2: 0087961b slliw a2,a5,0x8 + 3bc054f6: 9817478b lbuia a5,(a4),1,0 + 3bc054fa: 0082929b slliw t0,t0,0x8 + 3bc054fe: 8fd1 or a5,a5,a2 + 3bc05500: 00b2d91b srliw s2,t0,0xb + 3bc05504: 0269063b mulw a2,s2,t1 + 3bc05508: 00c7fb63 bgeu a5,a2,3bc0551e + 3bc0550c: 4064033b subw t1,s0,t1 + 3bc05510: 0053531b srliw t1,t1,0x5 + 3bc05514: 0073033b addw t1,t1,t2 + 3bc05518: 2095d30b srh t1,a1,s1,0 + 3bc0551c: b755 j 3bc054c0 + 3bc0551e: 0053531b srliw t1,t1,0x5 + 3bc05522: 4063833b subw t1,t2,t1 + 3bc05526: 2095d30b srh t1,a1,s1,0 + 3bc0552a: 048b0b13 addi s6,s6,72 + 3bc0552e: a165c38b lrhu t2,a1,s6,0 + 3bc05532: 40c28bbb subw s7,t0,a2 + 3bc05536: 9f91 subw a5,a5,a2 + 3bc05538: 0003831b sext.w t1,t2 + 3bc0553c: 00dbfa63 bgeu s7,a3,3bc05550 + 3bc05540: 0087991b slliw s2,a5,0x8 + 3bc05544: 9817478b lbuia a5,(a4),1,0 + 3bc05548: 008b9b9b slliw s7,s7,0x8 + 3bc0554c: 0127e7b3 or a5,a5,s2 + 3bc05550: 00bbd29b srliw t0,s7,0xb + 3bc05554: 0262863b mulw a2,t0,t1 + 3bc05558: 00c7fe63 bgeu a5,a2,3bc05574 + 3bc0555c: 4064033b subw t1,s0,t1 + 3bc05560: 0053531b srliw t1,t1,0x5 + 3bc05564: 0073033b addw t1,t1,t2 + 3bc05568: 2165d30b srh t1,a1,s6,0 + 3bc0556c: 837a mv t1,t5 + 3bc0556e: 8f4e mv t5,s3 + 3bc05570: 899a mv s3,t1 + 3bc05572: b7b9 j 3bc054c0 + 3bc05574: 0053531b srliw t1,t1,0x5 + 3bc05578: 4063833b subw t1,t2,t1 + 3bc0557c: 9f91 subw a5,a5,a2 + 3bc0557e: 2165d30b srh t1,a1,s6,0 + 3bc05582: 40cb863b subw a2,s7,a2 + 3bc05586: 837a mv t1,t5 + 3bc05588: 7f02 ld t5,32(sp) + 3bc0558a: f04e sd s3,32(sp) + 3bc0558c: b7d5 j 3bc05570 + 3bc0558e: 48a1 li a7,8 + 3bc05590: bf25 j 3bc054c8 + 3bc05592: 0056561b srliw a2,a2,0x5 + 3bc05596: 40ce8ebb subw t4,t4,a2 + 3bc0559a: 41f787bb subw a5,a5,t6 + 3bc0559e: 3c0ebe8b extu t4,t4,15,0 + 3bc055a2: 41f48fbb subw t6,s1,t6 + 3bc055a6: 430d li t1,3 + 3bc055a8: beb1 j 3bc05104 + 3bc055aa: 0056561b srliw a2,a2,0x5 + 3bc055ae: 40c383bb subw t2,t2,a2 + 3bc055b2: 41d787bb subw a5,a5,t4 + 3bc055b6: 3c03b38b extu t2,t2,15,0 + 3bc055ba: 001b831b addiw t1,s7,1 + 3bc055be: 41df8ebb subw t4,t6,t4 + 3bc055c2: b661 j 3bc0514a + 3bc055c4: 005fdf9b srliw t6,t6,0x5 + 3bc055c8: 41f383bb subw t2,t2,t6 + 3bc055cc: 9f91 subw a5,a5,a2 + 3bc055ce: 3c03b38b extu t2,t2,15,0 + 3bc055d2: 2305 addiw t1,t1,1 + 3bc055d4: 40ce863b subw a2,t4,a2 + 3bc055d8: be55 j 3bc0518c + 3bc055da: 005fdf9b srliw t6,t6,0x5 + 3bc055de: 41f38fbb subw t6,t2,t6 + 3bc055e2: 0102d383 lhu t2,16(t0) + 3bc055e6: 01f29023 sh t6,0(t0) + 3bc055ea: 9e05 subw a2,a2,s1 + 3bc055ec: 406787bb subw a5,a5,t1 + 3bc055f0: 00038f9b sext.w t6,t2 + 3bc055f4: 00d67a63 bgeu a2,a3,3bc05608 + 3bc055f8: 0087931b slliw t1,a5,0x8 + 3bc055fc: 9817478b lbuia a5,(a4),1,0 + 3bc05600: 0086161b slliw a2,a2,0x8 + 3bc05604: 0067e7b3 or a5,a5,t1 + 3bc05608: 00b6531b srliw t1,a2,0xb + 3bc0560c: 03f304bb mulw s1,t1,t6 + 3bc05610: 1297f563 bgeu a5,s1,3bc0573a + 3bc05614: 41f40fbb subw t6,s0,t6 + 3bc05618: 005fdf9b srliw t6,t6,0x5 + 3bc0561c: 7c0ebe8b extu t4,t4,31,0 + 3bc05620: 007f8fbb addw t6,t6,t2 + 3bc05624: 0ea1 addi t4,t4,8 + 3bc05626: 01f29823 sh t6,16(t0) + 3bc0562a: 03d2928b addsl t0,t0,t4,1 + 3bc0562e: 0022df83 lhu t6,2(t0) + 3bc05632: 000f861b sext.w a2,t6 + 3bc05636: 00d4fa63 bgeu s1,a3,3bc0564a + 3bc0563a: 9817430b lbuia t1,(a4),1,0 + 3bc0563e: 0087979b slliw a5,a5,0x8 + 3bc05642: 0084949b slliw s1,s1,0x8 + 3bc05646: 00f367b3 or a5,t1,a5 + 3bc0564a: 00b4d31b srliw t1,s1,0xb + 3bc0564e: 02c30ebb mulw t4,t1,a2 + 3bc05652: 0bd7f063 bgeu a5,t4,3bc056f2 + 3bc05656: 40c4063b subw a2,s0,a2 + 3bc0565a: 0056561b srliw a2,a2,0x5 + 3bc0565e: 01f60fbb addw t6,a2,t6 + 3bc05662: 3c0fbf8b extu t6,t6,15,0 + 3bc05666: 4309 li t1,2 + 3bc05668: 01f29123 sh t6,2(t0) + 3bc0566c: b262c38b lurhu t2,t0,t1,1 + 3bc05670: 7c03390b extu s2,t1,31,0 + 3bc05674: 0003861b sext.w a2,t2 + 3bc05678: 00defa63 bgeu t4,a3,3bc0568c + 3bc0567c: 98174f8b lbuia t6,(a4),1,0 + 3bc05680: 0087979b slliw a5,a5,0x8 + 3bc05684: 008e9e9b slliw t4,t4,0x8 + 3bc05688: 00ffe7b3 or a5,t6,a5 + 3bc0568c: 00bed49b srliw s1,t4,0xb + 3bc05690: 02c48fbb mulw t6,s1,a2 + 3bc05694: 00131b9b slliw s7,t1,0x1 + 3bc05698: 0306 slli t1,t1,0x1 + 3bc0569a: 07f7f863 bgeu a5,t6,3bc0570a + 3bc0569e: 40c4063b subw a2,s0,a2 + 3bc056a2: 0056561b srliw a2,a2,0x5 + 3bc056a6: 007603bb addw t2,a2,t2 + 3bc056aa: 3c03b38b extu t2,t2,15,0 + 3bc056ae: 2322d38b srh t2,t0,s2,1 + 3bc056b2: b262c48b lurhu s1,t0,t1,1 + 3bc056b6: 7c03390b extu s2,t1,31,0 + 3bc056ba: 00048e9b sext.w t4,s1 + 3bc056be: 00dff963 bgeu t6,a3,3bc056d0 + 3bc056c2: 9817460b lbuia a2,(a4),1,0 + 3bc056c6: 0087979b slliw a5,a5,0x8 + 3bc056ca: 008f9f9b slliw t6,t6,0x8 + 3bc056ce: 8fd1 or a5,a5,a2 + 3bc056d0: 00bfd39b srliw t2,t6,0xb + 3bc056d4: 03d3863b mulw a2,t2,t4 + 3bc056d8: 0013131b slliw t1,t1,0x1 + 3bc056dc: 04c7f463 bgeu a5,a2,3bc05724 + 3bc056e0: 41d40ebb subw t4,s0,t4 + 3bc056e4: 005ede9b srliw t4,t4,0x5 + 3bc056e8: 009e8ebb addw t4,t4,s1 + 3bc056ec: 2322de8b srh t4,t0,s2,1 + 3bc056f0: b44d j 3bc05192 + 3bc056f2: 0056561b srliw a2,a2,0x5 + 3bc056f6: 40cf8fbb subw t6,t6,a2 + 3bc056fa: 41d787bb subw a5,a5,t4 + 3bc056fe: 3c0fbf8b extu t6,t6,15,0 + 3bc05702: 41d48ebb subw t4,s1,t4 + 3bc05706: 430d li t1,3 + 3bc05708: b785 j 3bc05668 + 3bc0570a: 0056561b srliw a2,a2,0x5 + 3bc0570e: 40c383bb subw t2,t2,a2 + 3bc05712: 41f787bb subw a5,a5,t6 + 3bc05716: 3c03b38b extu t2,t2,15,0 + 3bc0571a: 001b831b addiw t1,s7,1 + 3bc0571e: 41fe8fbb subw t6,t4,t6 + 3bc05722: b771 j 3bc056ae + 3bc05724: 005ede9b srliw t4,t4,0x5 + 3bc05728: 41d48ebb subw t4,s1,t4 + 3bc0572c: 9f91 subw a5,a5,a2 + 3bc0572e: 2322de8b srh t4,t0,s2,1 + 3bc05732: 2305 addiw t1,t1,1 + 3bc05734: 40cf863b subw a2,t6,a2 + 3bc05738: bca9 j 3bc05192 + 3bc0573a: 005fdf9b srliw t6,t6,0x5 + 3bc0573e: 41f38fbb subw t6,t2,t6 + 3bc05742: 9e05 subw a2,a2,s1 + 3bc05744: 9f85 subw a5,a5,s1 + 3bc05746: 01f29823 sh t6,16(t0) + 3bc0574a: 4305 li t1,1 + 3bc0574c: 0ff00b93 li s7,255 + 3bc05750: 02031493 slli s1,t1,0x20 + 3bc05754: 01f4de93 srli t4,s1,0x1f + 3bc05758: 200e8e93 addi t4,t4,512 + 3bc0575c: a1d2cf8b lrhu t6,t0,t4,0 + 3bc05760: 01d28c33 add s8,t0,t4 + 3bc05764: 000f8e9b sext.w t4,t6 + 3bc05768: 00d67a63 bgeu a2,a3,3bc0577c + 3bc0576c: 9817438b lbuia t2,(a4),1,0 + 3bc05770: 0087979b slliw a5,a5,0x8 + 3bc05774: 0086161b slliw a2,a2,0x8 + 3bc05778: 00f3e7b3 or a5,t2,a5 + 3bc0577c: 00b6539b srliw t2,a2,0xb + 3bc05780: 03d3893b mulw s2,t2,t4 + 3bc05784: 0013131b slliw t1,t1,0x1 + 3bc05788: 0327f263 bgeu a5,s2,3bc057ac + 3bc0578c: 41d40ebb subw t4,s0,t4 + 3bc05790: 005ede9b srliw t4,t4,0x5 + 3bc05794: 01fe8fbb addw t6,t4,t6 + 3bc05798: 3c0fbf8b extu t6,t6,15,0 + 3bc0579c: 864a mv a2,s2 + 3bc0579e: 01fc1023 sh t6,0(s8) + 3bc057a2: fa6bf7e3 bgeu s7,t1,3bc05750 + 3bc057a6: f103031b addiw t1,t1,-240 + 3bc057aa: b2e5 j 3bc05192 + 3bc057ac: 005ede9b srliw t4,t4,0x5 + 3bc057b0: 41df8fbb subw t6,t6,t4 + 3bc057b4: 4126063b subw a2,a2,s2 + 3bc057b8: 412787bb subw a5,a5,s2 + 3bc057bc: 3c0fbf8b extu t6,t6,15,0 + 3bc057c0: 2305 addiw t1,t1,1 + 3bc057c2: bff1 j 3bc0579e + 3bc057c4: 005ede9b srliw t4,t4,0x5 + 3bc057c8: 41d383bb subw t2,t2,t4 + 3bc057cc: 405787bb subw a5,a5,t0 + 3bc057d0: 3c03b38b extu t2,t2,15,0 + 3bc057d4: 405602bb subw t0,a2,t0 + 3bc057d8: 460d li a2,3 + 3bc057da: bc09 j 3bc051ec + 3bc057dc: 005ede9b srliw t4,t4,0x5 + 3bc057e0: 41d484bb subw s1,s1,t4 + 3bc057e4: 407787bb subw a5,a5,t2 + 3bc057e8: 3c04b48b extu s1,s1,15,0 + 3bc057ec: 001c061b addiw a2,s8,1 + 3bc057f0: 407283bb subw t2,t0,t2 + 3bc057f4: bc3d j 3bc05232 + 3bc057f6: 005ede9b srliw t4,t4,0x5 + 3bc057fa: 41d484bb subw s1,s1,t4 + 3bc057fe: 405787bb subw a5,a5,t0 + 3bc05802: 3c04b48b extu s1,s1,15,0 + 3bc05806: 2905 addiw s2,s2,1 + 3bc05808: 405382bb subw t0,t2,t0 + 3bc0580c: b4ad j 3bc05276 + 3bc0580e: 0056561b srliw a2,a2,0x5 + 3bc05812: 40c383bb subw t2,t2,a2 + 3bc05816: 41d787bb subw a5,a5,t4 + 3bc0581a: 3c03b38b extu t2,t2,15,0 + 3bc0581e: 2485 addiw s1,s1,1 + 3bc05820: 41d28ebb subw t4,t0,t4 + 3bc05824: bc59 j 3bc052ba + 3bc05826: 0056561b srliw a2,a2,0x5 + 3bc0582a: 40c282bb subw t0,t0,a2 + 3bc0582e: 407787bb subw a5,a5,t2 + 3bc05832: 3c02b28b extu t0,t0,15,0 + 3bc05836: 2905 addiw s2,s2,1 + 3bc05838: 407e83bb subw t2,t4,t2 + 3bc0583c: b4c9 j 3bc052fe + 3bc0583e: 0052d29b srliw t0,t0,0x5 + 3bc05842: 405484bb subw s1,s1,t0 + 3bc05846: 9f91 subw a5,a5,a2 + 3bc05848: 3c04b48b extu s1,s1,15,0 + 3bc0584c: 2e85 addiw t4,t4,1 + 3bc0584e: 40c3863b subw a2,t2,a2 + 3bc05852: b4fd j 3bc05340 + 3bc05854: 8c76 mv s8,t4 + 3bc05856: be21 j 3bc0536e + 3bc05858: 0053d39b srliw t2,t2,0x5 + 3bc0585c: 407484bb subw s1,s1,t2 + 3bc05860: 41a6063b subw a2,a2,s10 + 3bc05864: 41a787bb subw a5,a5,s10 + 3bc05868: 3c04b48b extu s1,s1,15,0 + 3bc0586c: 01fe8fbb addw t6,t4,t6 + 3bc05870: be81 j 3bc053c0 + 3bc05872: 32ed addiw t0,t0,-5 + 3bc05874: 00d67a63 bgeu a2,a3,3bc05888 + 3bc05878: 98174e8b lbuia t4,(a4),1,0 + 3bc0587c: 0087979b slliw a5,a5,0x8 + 3bc05880: 0086161b slliw a2,a2,0x8 + 3bc05884: 00fee7b3 or a5,t4,a5 + 3bc05888: 0016539b srliw t2,a2,0x1 + 3bc0588c: 407787bb subw a5,a5,t2 + 3bc05890: 41f7d49b sraiw s1,a5,0x1f + 3bc05894: 001f9f9b slliw t6,t6,0x1 + 3bc05898: 0003861b sext.w a2,t2 + 3bc0589c: 2f85 addiw t6,t6,1 + 3bc0589e: 0093f3b3 and t2,t2,s1 + 3bc058a2: 32fd addiw t0,t0,-1 + 3bc058a4: 01f48fbb addw t6,s1,t6 + 3bc058a8: 007787bb addw a5,a5,t2 + 3bc058ac: fc0294e3 bnez t0,3bc05874 + 3bc058b0: 0025d283 lhu t0,2(a1) + 3bc058b4: 004f9f9b slliw t6,t6,0x4 + 3bc058b8: 00028e9b sext.w t4,t0 + 3bc058bc: 00d67a63 bgeu a2,a3,3bc058d0 + 3bc058c0: 9817438b lbuia t2,(a4),1,0 + 3bc058c4: 0087979b slliw a5,a5,0x8 + 3bc058c8: 0086161b slliw a2,a2,0x8 + 3bc058cc: 00f3e7b3 or a5,t2,a5 + 3bc058d0: 00b6549b srliw s1,a2,0xb + 3bc058d4: 03d483bb mulw t2,s1,t4 + 3bc058d8: 1677f463 bgeu a5,t2,3bc05a40 + 3bc058dc: 41d40ebb subw t4,s0,t4 + 3bc058e0: 005ede9b srliw t4,t4,0x5 + 3bc058e4: 005e82bb addw t0,t4,t0 + 3bc058e8: 3c02b28b extu t0,t0,15,0 + 3bc058ec: 4e89 li t4,2 + 3bc058ee: 00559123 sh t0,2(a1) + 3bc058f2: b3d5c48b lurhu s1,a1,t4,1 + 3bc058f6: 7c0ebb8b extu s7,t4,31,0 + 3bc058fa: 0004861b sext.w a2,s1 + 3bc058fe: 00d3fa63 bgeu t2,a3,3bc05912 + 3bc05902: 9817428b lbuia t0,(a4),1,0 + 3bc05906: 0087979b slliw a5,a5,0x8 + 3bc0590a: 0083939b slliw t2,t2,0x8 + 3bc0590e: 00f2e7b3 or a5,t0,a5 + 3bc05912: 00b3d91b srliw s2,t2,0xb + 3bc05916: 02c902bb mulw t0,s2,a2 + 3bc0591a: 1257ff63 bgeu a5,t0,3bc05a58 + 3bc0591e: 40c4063b subw a2,s0,a2 + 3bc05922: 0056561b srliw a2,a2,0x5 + 3bc05926: 9cb1 addw s1,s1,a2 + 3bc05928: 3c04b48b extu s1,s1,15,0 + 3bc0592c: 0e89 addi t4,t4,2 + 3bc0592e: 2375d48b srh s1,a1,s7,1 + 3bc05932: b3d5cb8b lurhu s7,a1,t4,1 + 3bc05936: 7c0eb90b extu s2,t4,31,0 + 3bc0593a: 000b861b sext.w a2,s7 + 3bc0593e: 00d2fa63 bgeu t0,a3,3bc05952 + 3bc05942: 9817438b lbuia t2,(a4),1,0 + 3bc05946: 0087979b slliw a5,a5,0x8 + 3bc0594a: 0082929b slliw t0,t0,0x8 + 3bc0594e: 00f3e7b3 or a5,t2,a5 + 3bc05952: 00b2d49b srliw s1,t0,0xb + 3bc05956: 02c483bb mulw t2,s1,a2 + 3bc0595a: 1077fa63 bgeu a5,t2,3bc05a6e + 3bc0595e: 40c4063b subw a2,s0,a2 + 3bc05962: 0056561b srliw a2,a2,0x5 + 3bc05966: 01760bbb addw s7,a2,s7 + 3bc0596a: 3c0bbb8b extu s7,s7,15,0 + 3bc0596e: 2e91 addiw t4,t4,4 + 3bc05970: 2325db8b srh s7,a1,s2,1 + 3bc05974: b3d5c48b lurhu s1,a1,t4,1 + 3bc05978: 7c0ebb8b extu s7,t4,31,0 + 3bc0597c: 0004829b sext.w t0,s1 + 3bc05980: 00d3f963 bgeu t2,a3,3bc05992 + 3bc05984: 9817460b lbuia a2,(a4),1,0 + 3bc05988: 0087979b slliw a5,a5,0x8 + 3bc0598c: 0083939b slliw t2,t2,0x8 + 3bc05990: 8fd1 or a5,a5,a2 + 3bc05992: 00b3d91b srliw s2,t2,0xb + 3bc05996: 0259063b mulw a2,s2,t0 + 3bc0599a: 0ec7f663 bgeu a5,a2,3bc05a86 + 3bc0599e: 405402bb subw t0,s0,t0 + 3bc059a2: 0052d29b srliw t0,t0,0x5 + 3bc059a6: 009284bb addw s1,t0,s1 + 3bc059aa: 3c04b48b extu s1,s1,15,0 + 3bc059ae: 3ee1 addiw t4,t4,-8 + 3bc059b0: 01feefb3 or t6,t4,t6 + 3bc059b4: 2375d48b srh s1,a1,s7,1 + 3bc059b8: 000f839b sext.w t2,t6 + 3bc059bc: 54fd li s1,-1 + 3bc059be: a09398e3 bne t2,s1,3bc053ce + 3bc059c2: 38d1 addiw a7,a7,-12 + 3bc059c4: 8fda mv t6,s6 + 3bc059c6: 11200313 li t1,274 + 3bc059ca: 010006b7 lui a3,0x1000 + 3bc059ce: 00d67963 bgeu a2,a3,3bc059e0 + 3bc059d2: 9817468b lbuia a3,(a4),1,0 + 3bc059d6: 0087979b slliw a5,a5,0x8 + 3bc059da: 0086161b slliw a2,a2,0x8 + 3bc059de: 8fd5 or a5,a5,a3 + 3bc059e0: dd5c sw a5,60(a0) + 3bc059e2: 7782 ld a5,32(sp) + 3bc059e4: f918 sd a4,48(a0) + 3bc059e6: dd10 sw a2,56(a0) + 3bc059e8: c97c sw a5,84(a0) + 3bc059ea: 417c lw a5,68(a0) + 3bc059ec: 04652e23 sw t1,92(a0) + 3bc059f0: 03053423 sd a6,40(a0) + 3bc059f4: 05c52023 sw t3,64(a0) + 3bc059f8: 05f52423 sw t6,72(a0) + 3bc059fc: 05e52623 sw t5,76(a0) + 3bc05a00: 05352823 sw s3,80(a0) + 3bc05a04: 05152c23 sw a7,88(a0) + 3bc05a08: e789 bnez a5,3bc05a12 + 3bc05a0a: 415c lw a5,4(a0) + 3bc05a0c: 00fe6363 bltu t3,a5,3bc05a12 + 3bc05a10: c17c sw a5,68(a0) + 3bc05a12: 65c2 ld a1,16(sp) + 3bc05a14: e42a sd a0,8(sp) + 3bc05a16: d23fe0ef jal ra,3bc04738 + 3bc05a1a: 6522 ld a0,8(sp) + 3bc05a1c: 6742 ld a4,16(sp) + 3bc05a1e: 751c ld a5,40(a0) + 3bc05a20: 00e7fd63 bgeu a5,a4,3bc05a3a + 3bc05a24: 791c ld a5,48(a0) + 3bc05a26: 7742 ld a4,48(sp) + 3bc05a28: 00e7f963 bgeu a5,a4,3bc05a3a + 3bc05a2c: 4d78 lw a4,92(a0) + 3bc05a2e: 11100793 li a5,273 + 3bc05a32: 00e7e463 bltu a5,a4,3bc05a3a + 3bc05a36: d9bfe06f j 3bc047d0 + 3bc05a3a: 4501 li a0,0 + 3bc05a3c: dd3fe06f j 3bc0480e + 3bc05a40: 005ede9b srliw t4,t4,0x5 + 3bc05a44: 41d282bb subw t0,t0,t4 + 3bc05a48: 407787bb subw a5,a5,t2 + 3bc05a4c: 3c02b28b extu t0,t0,15,0 + 3bc05a50: 407603bb subw t2,a2,t2 + 3bc05a54: 4e8d li t4,3 + 3bc05a56: bd61 j 3bc058ee + 3bc05a58: 0056561b srliw a2,a2,0x5 + 3bc05a5c: 9c91 subw s1,s1,a2 + 3bc05a5e: 405787bb subw a5,a5,t0 + 3bc05a62: 3c04b48b extu s1,s1,15,0 + 3bc05a66: 0e91 addi t4,t4,4 + 3bc05a68: 405382bb subw t0,t2,t0 + 3bc05a6c: b5c9 j 3bc0592e + 3bc05a6e: 0056561b srliw a2,a2,0x5 + 3bc05a72: 40cb8bbb subw s7,s7,a2 + 3bc05a76: 407787bb subw a5,a5,t2 + 3bc05a7a: 3c0bbb8b extu s7,s7,15,0 + 3bc05a7e: 2ea1 addiw t4,t4,8 + 3bc05a80: 407283bb subw t2,t0,t2 + 3bc05a84: b5f5 j 3bc05970 + 3bc05a86: 0052d29b srliw t0,t0,0x5 + 3bc05a8a: 405484bb subw s1,s1,t0 + 3bc05a8e: 9f91 subw a5,a5,a2 + 3bc05a90: 3c04b48b extu s1,s1,15,0 + 3bc05a94: 40c3863b subw a2,t2,a2 + 3bc05a98: bf21 j 3bc059b0 + 3bc05a9a: 489d li a7,7 + 3bc05a9c: ba3d j 3bc053da + 3bc05a9e: 8fda mv t6,s6 + 3bc05aa0: 64a2 ld s1,8(sp) + 3bc05aa2: 00230e9b addiw t4,t1,2 + 3bc05aa6: 8376 mv t1,t4 + 3bc05aa8: 410483b3 sub t2,s1,a6 + 3bc05aac: 93048ce3 beq s1,a6,3bc053e4 + 3bc05ab0: 7c0eb28b extu t0,t4,31,0 + 3bc05ab4: 0053f463 bgeu t2,t0,3bc05abc + 3bc05ab8: 00038e9b sext.w t4,t2 + 3bc05abc: 7c0fb48b extu s1,t6,31,0 + 3bc05ac0: 409803b3 sub t2,a6,s1 + 3bc05ac4: 82d6 mv t0,s5 + 3bc05ac6: 00986363 bltu a6,s1,3bc05acc + 3bc05aca: 4281 li t0,0 + 3bc05acc: 9396 add t2,t2,t0 + 3bc05ace: 7c0eb48b extu s1,t4,31,0 + 3bc05ad2: 407a8933 sub s2,s5,t2 + 3bc05ad6: 01de0e3b addw t3,t3,t4 + 3bc05ada: 41d3033b subw t1,t1,t4 + 3bc05ade: 010a02b3 add t0,s4,a6 + 3bc05ae2: 02996363 bltu s2,s1,3bc05b08 + 3bc05ae6: 410383b3 sub t2,t2,a6 + 3bc05aea: 00928eb3 add t4,t0,s1 + 3bc05aee: 9826 add a6,a6,s1 + 3bc05af0: 8072c48b lrbu s1,t0,t2,0 + 3bc05af4: 1812d48b sbia s1,(t0),1,0 + 3bc05af8: fe5e9ce3 bne t4,t0,3bc05af0 + 3bc05afc: 88cff06f j 3bc04b88 + 3bc05b00: f04e sd s3,32(sp) + 3bc05b02: 89fa mv s3,t5 + 3bc05b04: 8f5a mv t5,s6 + 3bc05b06: bf69 j 3bc05aa0 + 3bc05b08: 84f6 mv s1,t4 + 3bc05b0a: 807a490b lrbu s2,s4,t2,0 + 3bc05b0e: 0385 addi t2,t2,1 + 3bc05b10: 01228023 sb s2,0(t0) + 3bc05b14: 007a9363 bne s5,t2,3bc05b1a + 3bc05b18: 4381 li t2,0 + 3bc05b1a: 34fd addiw s1,s1,-1 + 3bc05b1c: 0285 addi t0,t0,1 + 3bc05b1e: f4f5 bnez s1,3bc05b0a + 3bc05b20: 3efd addiw t4,t4,-1 + 3bc05b22: 0805 addi a6,a6,1 + 3bc05b24: 7c0ebe8b extu t4,t4,31,0 + 3bc05b28: 9876 add a6,a6,t4 + 3bc05b2a: 85eff06f j 3bc04b88 + 3bc05b2e: 48a5 li a7,9 + 3bc05b30: 858ff06f j 3bc04b88 + +000000003bc05b34 : + 3bc05b34: 00254703 lbu a4,2(a0) + 3bc05b38: 04052303 lw t1,64(a0) + 3bc05b3c: 4805 li a6,1 + 3bc05b3e: 00e8183b sllw a6,a6,a4 + 3bc05b42: 05852e83 lw t4,88(a0) + 3bc05b46: 387d addiw a6,a6,-1 + 3bc05b48: 01037833 and a6,t1,a6 + 3bc05b4c: 0048181b slliw a6,a6,0x4 + 3bc05b50: 010e8e3b addw t3,t4,a6 + 3bc05b54: 01053883 ld a7,16(a0) + 3bc05b58: 020e1713 slli a4,t3,0x20 + 3bc05b5c: 5d14 lw a3,56(a0) + 3bc05b5e: 01f75e13 srli t3,a4,0x1f + 3bc05b62: 9e46 add t3,t3,a7 + 3bc05b64: 01000737 lui a4,0x1000 + 3bc05b68: 5d5c lw a5,60(a0) + 3bc05b6a: e00e5f83 lhu t6,-512(t3) + 3bc05b6e: 8f2a mv t5,a0 + 3bc05b70: 962e add a2,a2,a1 + 3bc05b72: 00e6fc63 bgeu a3,a4,3bc05b8a + 3bc05b76: 4501 li a0,0 + 3bc05b78: 0cc5f463 bgeu a1,a2,3bc05c40 + 3bc05b7c: 9815c70b lbuia a4,(a1),1,0 + 3bc05b80: 0087979b slliw a5,a5,0x8 + 3bc05b84: 0086969b slliw a3,a3,0x8 + 3bc05b88: 8fd9 or a5,a5,a4 + 3bc05b8a: 00b6d71b srliw a4,a3,0xb + 3bc05b8e: 03f7073b mulw a4,a4,t6 + 3bc05b92: 14e7f063 bgeu a5,a4,3bc05cd2 + 3bc05b96: 040f3683 ld a3,64(t5) + 3bc05b9a: 28088893 addi a7,a7,640 # f0280 <__BSS_SIZE__+0xea670> + 3bc05b9e: caa1 beqz a3,3bc05bee + 3bc05ba0: 001f4503 lbu a0,1(t5) + 3bc05ba4: 4685 li a3,1 + 3bc05ba6: 000f4803 lbu a6,0(t5) + 3bc05baa: 00a696bb sllw a3,a3,a0 + 3bc05bae: 36fd addiw a3,a3,-1 + 3bc05bb0: 00d37333 and t1,t1,a3 + 3bc05bb4: 028f3683 ld a3,40(t5) + 3bc05bb8: 018f3e03 ld t3,24(t5) + 3bc05bbc: 0103133b sllw t1,t1,a6 + 3bc05bc0: fff68513 addi a0,a3,-1 # ffffff <__BSS_SIZE__+0xffa3ef> + 3bc05bc4: e681 bnez a3,3bc05bcc + 3bc05bc6: 020f3503 ld a0,32(t5) + 3bc05bca: 157d addi a0,a0,-1 + 3bc05bcc: 80ae468b lrbu a3,t3,a0,0 + 3bc05bd0: 4521 li a0,8 + 3bc05bd2: 4105053b subw a0,a0,a6 + 3bc05bd6: 40a6d6bb sraw a3,a3,a0 + 3bc05bda: 006686bb addw a3,a3,t1 + 3bc05bde: 30000513 li a0,768 + 3bc05be2: 02a686bb mulw a3,a3,a0 + 3bc05be6: 7c06b68b extu a3,a3,31,0 + 3bc05bea: 02d8988b addsl a7,a7,a3,1 + 3bc05bee: 4699 li a3,6 + 3bc05bf0: 05d6eb63 bltu a3,t4,3bc05c46 + 3bc05bf4: 4685 li a3,1 + 3bc05bf6: 01000eb7 lui t4,0x1000 + 3bc05bfa: 0ff00e13 li t3,255 + 3bc05bfe: b2d8c80b lurhu a6,a7,a3,1 + 3bc05c02: 01d77b63 bgeu a4,t4,3bc05c18 + 3bc05c06: 2ec5f363 bgeu a1,a2,3bc05eec + 3bc05c0a: 9815c50b lbuia a0,(a1),1,0 + 3bc05c0e: 0087979b slliw a5,a5,0x8 + 3bc05c12: 0087171b slliw a4,a4,0x8 + 3bc05c16: 8fc9 or a5,a5,a0 + 3bc05c18: 00b7551b srliw a0,a4,0xb + 3bc05c1c: 0305083b mulw a6,a0,a6 + 3bc05c20: 0016969b slliw a3,a3,0x1 + 3bc05c24: 0107ef63 bltu a5,a6,3bc05c42 + 3bc05c28: 4107073b subw a4,a4,a6 + 3bc05c2c: 410787bb subw a5,a5,a6 + 3bc05c30: 2685 addiw a3,a3,1 + 3bc05c32: fcde76e3 bgeu t3,a3,3bc05bfe + 3bc05c36: 4505 li a0,1 + 3bc05c38: 010007b7 lui a5,0x1000 + 3bc05c3c: 2af76663 bltu a4,a5,3bc05ee8 + 3bc05c40: 8082 ret + 3bc05c42: 8742 mv a4,a6 + 3bc05c44: b7fd j 3bc05c32 + 3bc05c46: 028f3303 ld t1,40(t5) + 3bc05c4a: 048f6803 lwu a6,72(t5) + 3bc05c4e: 018f3683 ld a3,24(t5) + 3bc05c52: 4501 li a0,0 + 3bc05c54: 41030e33 sub t3,t1,a6 + 3bc05c58: 01037463 bgeu t1,a6,3bc05c60 + 3bc05c5c: 020f3503 ld a0,32(t5) + 3bc05c60: 96f2 add a3,a3,t3 + 3bc05c62: 80a6ce0b lrbu t3,a3,a0,0 + 3bc05c66: 010002b7 lui t0,0x1000 + 3bc05c6a: 4685 li a3,1 + 3bc05c6c: 10000513 li a0,256 + 3bc05c70: 0ff00f93 li t6,255 + 3bc05c74: 001e181b slliw a6,t3,0x1 + 3bc05c78: 00d5033b addw t1,a0,a3 + 3bc05c7c: 00080e1b sext.w t3,a6 + 3bc05c80: 01057833 and a6,a0,a6 + 3bc05c84: 00080e9b sext.w t4,a6 + 3bc05c88: 0103083b addw a6,t1,a6 + 3bc05c8c: b308c30b lurhu t1,a7,a6,1 + 3bc05c90: 00577c63 bgeu a4,t0,3bc05ca8 + 3bc05c94: 24c5fc63 bgeu a1,a2,3bc05eec + 3bc05c98: 9815c80b lbuia a6,(a1),1,0 + 3bc05c9c: 0087979b slliw a5,a5,0x8 + 3bc05ca0: 0087171b slliw a4,a4,0x8 + 3bc05ca4: 00f867b3 or a5,a6,a5 + 3bc05ca8: 00b7581b srliw a6,a4,0xb + 3bc05cac: 02680f3b mulw t5,a6,t1 + 3bc05cb0: 0016969b slliw a3,a3,0x1 + 3bc05cb4: 01e7f863 bgeu a5,t5,3bc05cc4 + 3bc05cb8: 01d54533 xor a0,a0,t4 + 3bc05cbc: 877a mv a4,t5 + 3bc05cbe: fadffbe3 bgeu t6,a3,3bc05c74 + 3bc05cc2: bf95 j 3bc05c36 + 3bc05cc4: 41e7073b subw a4,a4,t5 + 3bc05cc8: 41e787bb subw a5,a5,t5 + 3bc05ccc: 2685 addiw a3,a3,1 + 3bc05cce: 8576 mv a0,t4 + 3bc05cd0: b7fd j 3bc05cbe + 3bc05cd2: 7c0eb50b extu a0,t4,31,0 + 3bc05cd6: 0541 addi a0,a0,16 + 3bc05cd8: a2a8cf0b lrhu t5,a7,a0,1 + 3bc05cdc: 00151e93 slli t4,a0,0x1 + 3bc05ce0: 40e6833b subw t1,a3,a4 + 3bc05ce4: 01000537 lui a0,0x1000 + 3bc05ce8: 9f99 subw a5,a5,a4 + 3bc05cea: 00a37c63 bgeu t1,a0,3bc05d02 + 3bc05cee: 4501 li a0,0 + 3bc05cf0: f4c5f8e3 bgeu a1,a2,3bc05c40 + 3bc05cf4: 9815c70b lbuia a4,(a1),1,0 + 3bc05cf8: 0087979b slliw a5,a5,0x8 + 3bc05cfc: 0083131b slliw t1,t1,0x8 + 3bc05d00: 8fd9 or a5,a5,a4 + 3bc05d02: 00b3571b srliw a4,t1,0xb + 3bc05d06: 03e706bb mulw a3,a4,t5 + 3bc05d0a: 16d7f563 bgeu a5,a3,3bc05e74 + 3bc05d0e: a0088313 addi t1,a7,-1536 + 3bc05d12: 4509 li a0,2 + 3bc05d14: 4f01 li t5,0 + 3bc05d16: 01000e37 lui t3,0x1000 + 3bc05d1a: 00035703 lhu a4,0(t1) + 3bc05d1e: 01c6fc63 bgeu a3,t3,3bc05d36 + 3bc05d22: 1cc5f563 bgeu a1,a2,3bc05eec + 3bc05d26: 9815ce0b lbuia t3,(a1),1,0 + 3bc05d2a: 0087979b slliw a5,a5,0x8 + 3bc05d2e: 0086969b slliw a3,a3,0x8 + 3bc05d32: 00fe67b3 or a5,t3,a5 + 3bc05d36: 00b6de1b srliw t3,a3,0xb + 3bc05d3a: 02ee073b mulw a4,t3,a4 + 3bc05d3e: 22e7fc63 bgeu a5,a4,3bc05f76 + 3bc05d42: 7c08380b extu a6,a6,31,0 + 3bc05d46: 0303130b addsl t1,t1,a6,1 + 3bc05d4a: 4801 li a6,0 + 3bc05d4c: 46a1 li a3,8 + 3bc05d4e: 4e05 li t3,1 + 3bc05d50: 010003b7 lui t2,0x1000 + 3bc05d54: b3c34f8b lurhu t6,t1,t3,1 + 3bc05d58: 00777c63 bgeu a4,t2,3bc05d70 + 3bc05d5c: 18c5f863 bgeu a1,a2,3bc05eec + 3bc05d60: 9815ce8b lbuia t4,(a1),1,0 + 3bc05d64: 0087979b slliw a5,a5,0x8 + 3bc05d68: 0087171b slliw a4,a4,0x8 + 3bc05d6c: 00fee7b3 or a5,t4,a5 + 3bc05d70: 00b75e9b srliw t4,a4,0xb + 3bc05d74: 03fe8fbb mulw t6,t4,t6 + 3bc05d78: 001e1e1b slliw t3,t3,0x1 + 3bc05d7c: 25f7e663 bltu a5,t6,3bc05fc8 + 3bc05d80: 41f7073b subw a4,a4,t6 + 3bc05d84: 41f787bb subw a5,a5,t6 + 3bc05d88: 2e05 addiw t3,t3,1 + 3bc05d8a: fcde65e3 bltu t3,a3,3bc05d54 + 3bc05d8e: 430d li t1,3 + 3bc05d90: ebe364e3 bltu t1,t5,3bc05c38 + 3bc05d94: 40d806bb subw a3,a6,a3 + 3bc05d98: 01c6883b addw a6,a3,t3 + 3bc05d9c: 86c2 mv a3,a6 + 3bc05d9e: 01037363 bgeu t1,a6,3bc05da4 + 3bc05da2: 468d li a3,3 + 3bc05da4: 0066981b slliw a6,a3,0x6 + 3bc05da8: 0408081b addiw a6,a6,64 + 3bc05dac: 7c08380b extu a6,a6,31,0 + 3bc05db0: 4685 li a3,1 + 3bc05db2: 01000fb7 lui t6,0x1000 + 3bc05db6: 03f00f13 li t5,63 + 3bc05dba: 7c06b30b extu t1,a3,31,0 + 3bc05dbe: 9342 add t1,t1,a6 + 3bc05dc0: a268ce0b lrhu t3,a7,t1,1 + 3bc05dc4: 01f77c63 bgeu a4,t6,3bc05ddc + 3bc05dc8: 12c5f263 bgeu a1,a2,3bc05eec + 3bc05dcc: 9815c30b lbuia t1,(a1),1,0 + 3bc05dd0: 0087979b slliw a5,a5,0x8 + 3bc05dd4: 0087171b slliw a4,a4,0x8 + 3bc05dd8: 00f367b3 or a5,t1,a5 + 3bc05ddc: 00b7531b srliw t1,a4,0xb + 3bc05de0: 03c30e3b mulw t3,t1,t3 + 3bc05de4: 0016969b slliw a3,a3,0x1 + 3bc05de8: 1fc7e263 bltu a5,t3,3bc05fcc + 3bc05dec: 41c7073b subw a4,a4,t3 + 3bc05df0: 41c787bb subw a5,a5,t3 + 3bc05df4: 2685 addiw a3,a3,1 + 3bc05df6: fcdf72e3 bgeu t5,a3,3bc05dba + 3bc05dfa: fc06869b addiw a3,a3,-64 + 3bc05dfe: 0006831b sext.w t1,a3 + 3bc05e02: 480d li a6,3 + 3bc05e04: e2687ae3 bgeu a6,t1,3bc05c38 + 3bc05e08: 4e35 li t3,13 + 3bc05e0a: 0016d81b srliw a6,a3,0x1 + 3bc05e0e: 1c6e6163 bltu t3,t1,3bc05fd0 + 3bc05e12: 8a85 andi a3,a3,1 + 3bc05e14: 387d addiw a6,a6,-1 + 3bc05e16: 0026e693 ori a3,a3,2 + 3bc05e1a: 010696bb sllw a3,a3,a6 + 3bc05e1e: 02069313 slli t1,a3,0x20 + 3bc05e22: 01f35693 srli a3,t1,0x1f + 3bc05e26: 737d lui t1,0xfffff + 3bc05e28: 30030313 addi t1,t1,768 # fffffffffffff300 <__BL2_END__+0xffffffffc43ebef0> + 3bc05e2c: 969a add a3,a3,t1 + 3bc05e2e: 98b6 add a7,a7,a3 + 3bc05e30: 4e05 li t3,1 + 3bc05e32: 4685 li a3,1 + 3bc05e34: 010002b7 lui t0,0x1000 + 3bc05e38: b2d8ce8b lurhu t4,a7,a3,1 + 3bc05e3c: 00577c63 bgeu a4,t0,3bc05e54 + 3bc05e40: 0ac5f663 bgeu a1,a2,3bc05eec + 3bc05e44: 9815c30b lbuia t1,(a1),1,0 + 3bc05e48: 0087979b slliw a5,a5,0x8 + 3bc05e4c: 0087171b slliw a4,a4,0x8 + 3bc05e50: 00f367b3 or a5,t1,a5 + 3bc05e54: 00b7531b srliw t1,a4,0xb + 3bc05e58: 03d30f3b mulw t5,t1,t4 + 3bc05e5c: 001e1f9b slliw t6,t3,0x1 + 3bc05e60: 1be7f763 bgeu a5,t5,3bc0600e + 3bc05e64: 01c686bb addw a3,a3,t3 + 3bc05e68: 877a mv a4,t5 + 3bc05e6a: 387d addiw a6,a6,-1 + 3bc05e6c: dc0806e3 beqz a6,3bc05c38 + 3bc05e70: 8e7e mv t3,t6 + 3bc05e72: b7d9 j 3bc05e38 + 3bc05e74: 40d3053b subw a0,t1,a3 + 3bc05e78: 9ec6 add t4,t4,a7 + 3bc05e7a: 01000f37 lui t5,0x1000 + 3bc05e7e: 40d7873b subw a4,a5,a3 + 3bc05e82: 832a mv t1,a0 + 3bc05e84: 018ed683 lhu a3,24(t4) # 1000018 <__BSS_SIZE__+0xffa408> + 3bc05e88: 01e57c63 bgeu a0,t5,3bc05ea0 + 3bc05e8c: 4501 li a0,0 + 3bc05e8e: dac5f9e3 bgeu a1,a2,3bc05c40 + 3bc05e92: 0087179b slliw a5,a4,0x8 + 3bc05e96: 9815c70b lbuia a4,(a1),1,0 + 3bc05e9a: 0083151b slliw a0,t1,0x8 + 3bc05e9e: 8f5d or a4,a4,a5 + 3bc05ea0: 00b5531b srliw t1,a0,0xb + 3bc05ea4: 02d306bb mulw a3,t1,a3 + 3bc05ea8: 8336 mv t1,a3 + 3bc05eaa: 04d77e63 bgeu a4,a3,3bc05f06 + 3bc05eae: 77fd lui a5,0xfffff + 3bc05eb0: 9e3e add t3,t3,a5 + 3bc05eb2: 010007b7 lui a5,0x1000 + 3bc05eb6: 400e5e03 lhu t3,1024(t3) # 1000400 <__BSS_SIZE__+0xffa7f0> + 3bc05eba: 00f6fc63 bgeu a3,a5,3bc05ed2 + 3bc05ebe: 4501 li a0,0 + 3bc05ec0: d8c5f0e3 bgeu a1,a2,3bc05c40 + 3bc05ec4: 0087179b slliw a5,a4,0x8 + 3bc05ec8: 9815c70b lbuia a4,(a1),1,0 + 3bc05ecc: 0086969b slliw a3,a3,0x8 + 3bc05ed0: 8f5d or a4,a4,a5 + 3bc05ed2: 00b6d79b srliw a5,a3,0xb + 3bc05ed6: 03c7833b mulw t1,a5,t3 + 3bc05eda: 00677b63 bgeu a4,t1,3bc05ef0 + 3bc05ede: 010007b7 lui a5,0x1000 + 3bc05ee2: 450d li a0,3 + 3bc05ee4: d4f37ee3 bgeu t1,a5,3bc05c40 + 3bc05ee8: d4c5ece3 bltu a1,a2,3bc05c40 + 3bc05eec: 4501 li a0,0 + 3bc05eee: bb89 j 3bc05c40 + 3bc05ef0: 406686bb subw a3,a3,t1 + 3bc05ef4: 406707bb subw a5,a4,t1 + 3bc05ef8: 737d lui t1,0xfffff + 3bc05efa: 60030313 addi t1,t1,1536 # fffffffffffff600 <__BL2_END__+0xffffffffc43ec1f0> + 3bc05efe: 9346 add t1,t1,a7 + 3bc05f00: 450d li a0,3 + 3bc05f02: 4f31 li t5,12 + 3bc05f04: bd09 j 3bc05d16 + 3bc05f06: 9d15 subw a0,a0,a3 + 3bc05f08: 01000e37 lui t3,0x1000 + 3bc05f0c: 406707bb subw a5,a4,t1 + 3bc05f10: 86aa mv a3,a0 + 3bc05f12: 030ed303 lhu t1,48(t4) + 3bc05f16: 01c57c63 bgeu a0,t3,3bc05f2e + 3bc05f1a: 4501 li a0,0 + 3bc05f1c: d2c5f2e3 bgeu a1,a2,3bc05c40 + 3bc05f20: 0087971b slliw a4,a5,0x8 + 3bc05f24: 9815c78b lbuia a5,(a1),1,0 + 3bc05f28: 0086951b slliw a0,a3,0x8 + 3bc05f2c: 8fd9 or a5,a5,a4 + 3bc05f2e: 00b5571b srliw a4,a0,0xb + 3bc05f32: 026706bb mulw a3,a4,t1 + 3bc05f36: 8736 mv a4,a3 + 3bc05f38: fcd7e0e3 bltu a5,a3,3bc05ef8 + 3bc05f3c: 9d15 subw a0,a0,a3 + 3bc05f3e: 01000e37 lui t3,0x1000 + 3bc05f42: 048ed303 lhu t1,72(t4) + 3bc05f46: 86aa mv a3,a0 + 3bc05f48: 9f99 subw a5,a5,a4 + 3bc05f4a: 01c57c63 bgeu a0,t3,3bc05f62 + 3bc05f4e: 4501 li a0,0 + 3bc05f50: cec5f8e3 bgeu a1,a2,3bc05c40 + 3bc05f54: 0087971b slliw a4,a5,0x8 + 3bc05f58: 9815c78b lbuia a5,(a1),1,0 + 3bc05f5c: 0086951b slliw a0,a3,0x8 + 3bc05f60: 8fd9 or a5,a5,a4 + 3bc05f62: 00b5571b srliw a4,a0,0xb + 3bc05f66: 026706bb mulw a3,a4,t1 + 3bc05f6a: f8d7e7e3 bltu a5,a3,3bc05ef8 + 3bc05f6e: 9f95 subw a5,a5,a3 + 3bc05f70: 40d506bb subw a3,a0,a3 + 3bc05f74: b751 j 3bc05ef8 + 3bc05f76: 40e68ebb subw t4,a3,a4 + 3bc05f7a: 01000fb7 lui t6,0x1000 + 3bc05f7e: 9f99 subw a5,a5,a4 + 3bc05f80: 01035703 lhu a4,16(t1) + 3bc05f84: 01fefc63 bgeu t4,t6,3bc05f9c + 3bc05f88: f6c5f2e3 bgeu a1,a2,3bc05eec + 3bc05f8c: 00879e1b slliw t3,a5,0x8 + 3bc05f90: 9815c78b lbuia a5,(a1),1,0 + 3bc05f94: 008e9e9b slliw t4,t4,0x8 + 3bc05f98: 01c7e7b3 or a5,a5,t3 + 3bc05f9c: 00bed69b srliw a3,t4,0xb + 3bc05fa0: 02e6873b mulw a4,a3,a4 + 3bc05fa4: 00e7f963 bgeu a5,a4,3bc05fb6 + 3bc05fa8: 7c08368b extu a3,a6,31,0 + 3bc05fac: 06a1 addi a3,a3,8 + 3bc05fae: 02d3130b addsl t1,t1,a3,1 + 3bc05fb2: 4821 li a6,8 + 3bc05fb4: bb61 j 3bc05d4c + 3bc05fb6: 9f99 subw a5,a5,a4 + 3bc05fb8: 20030313 addi t1,t1,512 + 3bc05fbc: 40ee873b subw a4,t4,a4 + 3bc05fc0: 4841 li a6,16 + 3bc05fc2: 10000693 li a3,256 + 3bc05fc6: b361 j 3bc05d4e + 3bc05fc8: 877e mv a4,t6 + 3bc05fca: b3c1 j 3bc05d8a + 3bc05fcc: 8772 mv a4,t3 + 3bc05fce: b525 j 3bc05df6 + 3bc05fd0: 386d addiw a6,a6,-5 + 3bc05fd2: 01000e37 lui t3,0x1000 + 3bc05fd6: 01c77b63 bgeu a4,t3,3bc05fec + 3bc05fda: f0c5f9e3 bgeu a1,a2,3bc05eec + 3bc05fde: 9815c68b lbuia a3,(a1),1,0 + 3bc05fe2: 0087979b slliw a5,a5,0x8 + 3bc05fe6: 0087171b slliw a4,a4,0x8 + 3bc05fea: 8fd5 or a5,a5,a3 + 3bc05fec: 0017531b srliw t1,a4,0x1 + 3bc05ff0: 406786bb subw a3,a5,t1 + 3bc05ff4: 01f6d69b srliw a3,a3,0x1f + 3bc05ff8: 36fd addiw a3,a3,-1 + 3bc05ffa: 0066f6b3 and a3,a3,t1 + 3bc05ffe: 387d addiw a6,a6,-1 + 3bc06000: 0003071b sext.w a4,t1 + 3bc06004: 9f95 subw a5,a5,a3 + 3bc06006: fc0818e3 bnez a6,3bc05fd6 + 3bc0600a: 4811 li a6,4 + 3bc0600c: b515 j 3bc05e30 + 3bc0600e: 41e7073b subw a4,a4,t5 + 3bc06012: 41e787bb subw a5,a5,t5 + 3bc06016: 00df86bb addw a3,t6,a3 + 3bc0601a: bd81 j 3bc05e6a + +000000003bc0601c : + 3bc0601c: 11400793 li a5,276 + 3bc06020: 02053423 sd zero,40(a0) # 1000028 <__BSS_SIZE__+0xffa418> + 3bc06024: 06052223 sw zero,100(a0) + 3bc06028: 04053023 sd zero,64(a0) + 3bc0602c: cd7c sw a5,92(a0) + 3bc0602e: 8082 ret + +000000003bc06030 : + 3bc06030: 7175 addi sp,sp,-144 + 3bc06032: e122 sd s0,128(sp) + 3bc06034: f8ca sd s2,112(sp) + 3bc06036: f4ce sd s3,104(sp) + 3bc06038: f0d2 sd s4,96(sp) + 3bc0603a: f86a sd s10,48(sp) + 3bc0603c: f46e sd s11,40(sp) + 3bc0603e: e506 sd ra,136(sp) + 3bc06040: fca6 sd s1,120(sp) + 3bc06042: ecd6 sd s5,88(sp) + 3bc06044: e8da sd s6,80(sp) + 3bc06046: e4de sd s7,72(sp) + 3bc06048: e0e2 sd s8,64(sp) + 3bc0604a: fc66 sd s9,56(sp) + 3bc0604c: 0006bd83 ld s11,0(a3) + 3bc06050: 0006b023 sd zero,0(a3) + 3bc06054: 0007a023 sw zero,0(a5) # 1000000 <__BSS_SIZE__+0xffa3f0> + 3bc06058: e43a sd a4,8(sp) + 3bc0605a: 4d78 lw a4,92(a0) + 3bc0605c: 89be mv s3,a5 + 3bc0605e: 11200793 li a5,274 + 3bc06062: 8932 mv s2,a2 + 3bc06064: 842a mv s0,a0 + 3bc06066: 8a2e mv s4,a1 + 3bc06068: 8d36 mv s10,a3 + 3bc0606a: 4611 li a2,4 + 3bc0606c: 04e7e263 bltu a5,a4,3bc060b0 + 3bc06070: 85d2 mv a1,s4 + 3bc06072: 8522 mv a0,s0 + 3bc06074: ec4fe0ef jal ra,3bc04738 + 3bc06078: 4b4d li s6,19 + 3bc0607a: 06840a93 addi s5,s0,104 # 1068 <__BSS_SIZE__-0x4ba8> + 3bc0607e: 4c7c lw a5,92(s0) + 3bc06080: 11200713 li a4,274 + 3bc06084: 0ce79663 bne a5,a4,3bc06150 + 3bc06088: 5c5c lw a5,60(s0) + 3bc0608a: eb9d bnez a5,3bc060c0 + 3bc0608c: 4785 li a5,1 + 3bc0608e: a8a1 j 3bc060e6 + 3bc06090: 0017859b addiw a1,a5,1 + 3bc06094: d06c sw a1,100(s0) + 3bc06096: 9819458b lbuia a1,(s2),1,0 + 3bc0609a: 7c07b78b extu a5,a5,31,0 + 3bc0609e: 97a2 add a5,a5,s0 + 3bc060a0: 06b78423 sb a1,104(a5) + 3bc060a4: 000d3783 ld a5,0(s10) + 3bc060a8: 1dfd addi s11,s11,-1 + 3bc060aa: 0785 addi a5,a5,1 + 3bc060ac: 00fd3023 sd a5,0(s10) + 3bc060b0: 507c lw a5,100(s0) + 3bc060b2: 020d8863 beqz s11,3bc060e2 + 3bc060b6: fcf67de3 bgeu a2,a5,3bc06090 + 3bc060ba: 06844603 lbu a2,104(s0) + 3bc060be: ca05 beqz a2,3bc060ee + 3bc060c0: 4485 li s1,1 + 3bc060c2: 60aa ld ra,136(sp) + 3bc060c4: 640a ld s0,128(sp) + 3bc060c6: 7946 ld s2,112(sp) + 3bc060c8: 79a6 ld s3,104(sp) + 3bc060ca: 7a06 ld s4,96(sp) + 3bc060cc: 6ae6 ld s5,88(sp) + 3bc060ce: 6b46 ld s6,80(sp) + 3bc060d0: 6ba6 ld s7,72(sp) + 3bc060d2: 6c06 ld s8,64(sp) + 3bc060d4: 7ce2 ld s9,56(sp) + 3bc060d6: 7d42 ld s10,48(sp) + 3bc060d8: 7da2 ld s11,40(sp) + 3bc060da: 8526 mv a0,s1 + 3bc060dc: 74e6 ld s1,120(sp) + 3bc060de: 6149 addi sp,sp,144 + 3bc060e0: 8082 ret + 3bc060e2: ffe1 bnez a5,3bc060ba + 3bc060e4: 478d li a5,3 + 3bc060e6: 00f9a023 sw a5,0(s3) + 3bc060ea: 4481 li s1,0 + 3bc060ec: bfd9 j 3bc060c2 + 3bc060ee: 4611 li a2,4 + 3bc060f0: fef67ae3 bgeu a2,a5,3bc060e4 + 3bc060f4: 06942783 lw a5,105(s0) + 3bc060f8: 06042223 sw zero,100(s0) + 3bc060fc: 9007978b revw a5,a5 + 3bc06100: dc5c sw a5,60(s0) + 3bc06102: 57fd li a5,-1 + 3bc06104: dc1c sw a5,56(s0) + 3bc06106: 11300793 li a5,275 + 3bc0610a: 02f70c63 beq a4,a5,3bc06142 + 3bc0610e: 00044783 lbu a5,0(s0) + 3bc06112: 00144703 lbu a4,1(s0) + 3bc06116: 6410 ld a2,8(s0) + 3bc06118: 40000593 li a1,1024 + 3bc0611c: 9f3d addw a4,a4,a5 + 3bc0611e: 30000793 li a5,768 + 3bc06122: 00e797bb sllw a5,a5,a4 + 3bc06126: 7c07879b addiw a5,a5,1984 + 3bc0612a: 7c07b78b extu a5,a5,31,0 + 3bc0612e: 4701 li a4,0 + 3bc06130: 00f76c63 bltu a4,a5,3bc06148 + 3bc06134: 4785 li a5,1 + 3bc06136: 1782 slli a5,a5,0x20 + 3bc06138: 0785 addi a5,a5,1 + 3bc0613a: e43c sd a5,72(s0) + 3bc0613c: e83c sd a5,80(s0) + 3bc0613e: 04042c23 sw zero,88(s0) + 3bc06142: 04042e23 sw zero,92(s0) + 3bc06146: b72d j 3bc06070 + 3bc06148: 22e6558b srh a1,a2,a4,1 + 3bc0614c: 0705 addi a4,a4,1 + 3bc0614e: b7cd j 3bc06130 + 3bc06150: 7418 ld a4,40(s0) + 3bc06152: 01476b63 bltu a4,s4,3bc06168 + 3bc06156: 12079f63 bnez a5,3bc06294 + 3bc0615a: 5c5c lw a5,60(s0) + 3bc0615c: 14079363 bnez a5,3bc062a2 + 3bc06160: 4791 li a5,4 + 3bc06162: b751 j 3bc060e6 + 3bc06164: 4789 li a5,2 + 3bc06166: b741 j 3bc060e6 + 3bc06168: 4c81 li s9,0 + 3bc0616a: 06442b83 lw s7,100(s0) + 3bc0616e: 0c0b9263 bnez s7,3bc06232 + 3bc06172: 01bb7463 bgeu s6,s11,3bc0617a + 3bc06176: 040c8263 beqz s9,3bc061ba + 3bc0617a: 866e mv a2,s11 + 3bc0617c: 85ca mv a1,s2 + 3bc0617e: 8522 mv a0,s0 + 3bc06180: 9b5ff0ef jal ra,3bc05b34 + 3bc06184: 0005049b sext.w s1,a0 + 3bc06188: e095 bnez s1,3bc061ac + 3bc0618a: 866e mv a2,s11 + 3bc0618c: 85ca mv a1,s2 + 3bc0618e: 06840513 addi a0,s0,104 + 3bc06192: 8dbfa0ef jal ra,3bc00a6c + 3bc06196: 000d3783 ld a5,0(s10) + 3bc0619a: 07b42223 sw s11,100(s0) + 3bc0619e: 9dbe add s11,s11,a5 + 3bc061a0: 01bd3023 sd s11,0(s10) + 3bc061a4: 478d li a5,3 + 3bc061a6: 00f9a023 sw a5,0(s3) + 3bc061aa: bf21 j 3bc060c2 + 3bc061ac: 000c8563 beqz s9,3bc061b6 + 3bc061b0: 4789 li a5,2 + 3bc061b2: 0ef49463 bne s1,a5,3bc0629a + 3bc061b6: 864a mv a2,s2 + 3bc061b8: a021 j 3bc061c0 + 3bc061ba: fecd8613 addi a2,s11,-20 + 3bc061be: 964a add a2,a2,s2 + 3bc061c0: 03243823 sd s2,48(s0) + 3bc061c4: 85d2 mv a1,s4 + 3bc061c6: 8522 mv a0,s0 + 3bc061c8: de2fe0ef jal ra,3bc047aa + 3bc061cc: ee051ae3 bnez a0,3bc060c0 + 3bc061d0: 7818 ld a4,48(s0) + 3bc061d2: 000d3783 ld a5,0(s10) + 3bc061d6: 41270933 sub s2,a4,s2 + 3bc061da: 97ca add a5,a5,s2 + 3bc061dc: 00fd3023 sd a5,0(s10) + 3bc061e0: 412d8db3 sub s11,s11,s2 + 3bc061e4: 893a mv s2,a4 + 3bc061e6: bd61 j 3bc0607e + 3bc061e8: 8109478b lrbu a5,s2,a6,0 + 3bc061ec: 0106578b srb a5,a2,a6,0 + 3bc061f0: 0805 addi a6,a6,1 + 3bc061f2: 0008079b sext.w a5,a6 + 3bc061f6: e83e sd a5,16(sp) + 3bc061f8: 01780c3b addw s8,a6,s7 + 3bc061fc: 018b6463 bltu s6,s8,3bc06204 + 3bc06200: ffb814e3 bne a6,s11,3bc061e8 + 3bc06204: 07842223 sw s8,100(s0) + 3bc06208: 018b7463 bgeu s6,s8,3bc06210 + 3bc0620c: 020c8f63 beqz s9,3bc0624a + 3bc06210: 7c0c360b extu a2,s8,31,0 + 3bc06214: 85d6 mv a1,s5 + 3bc06216: 8522 mv a0,s0 + 3bc06218: ec42 sd a6,24(sp) + 3bc0621a: 91bff0ef jal ra,3bc05b34 + 3bc0621e: 0005049b sext.w s1,a0 + 3bc06222: 6862 ld a6,24(sp) + 3bc06224: ec91 bnez s1,3bc06240 + 3bc06226: 000d3783 ld a5,0(s10) + 3bc0622a: 983e add a6,a6,a5 + 3bc0622c: 010d3023 sd a6,0(s10) + 3bc06230: bf95 j 3bc061a4 + 3bc06232: 7c0bb60b extu a2,s7,31,0 + 3bc06236: 06860613 addi a2,a2,104 + 3bc0623a: 4801 li a6,0 + 3bc0623c: 9622 add a2,a2,s0 + 3bc0623e: bf55 j 3bc061f2 + 3bc06240: 000c8563 beqz s9,3bc0624a + 3bc06244: 4789 li a5,2 + 3bc06246: 04f49a63 bne s1,a5,3bc0629a + 3bc0624a: 03543823 sd s5,48(s0) + 3bc0624e: 8656 mv a2,s5 + 3bc06250: 85d2 mv a1,s4 + 3bc06252: 8522 mv a0,s0 + 3bc06254: d56fe0ef jal ra,3bc047aa + 3bc06258: e60514e3 bnez a0,3bc060c0 + 3bc0625c: 781c ld a5,48(s0) + 3bc0625e: 415787bb subw a5,a5,s5 + 3bc06262: 02fc6763 bltu s8,a5,3bc06290 + 3bc06266: 66c2 ld a3,16(sp) + 3bc06268: 40fc073b subw a4,s8,a5 + 3bc0626c: 02e6e263 bltu a3,a4,3bc06290 + 3bc06270: 000d3703 ld a4,0(s10) + 3bc06274: 417787bb subw a5,a5,s7 + 3bc06278: 7c07b78b extu a5,a5,31,0 + 3bc0627c: 973e add a4,a4,a5 + 3bc0627e: 00ed3023 sd a4,0(s10) + 3bc06282: 40fd8db3 sub s11,s11,a5 + 3bc06286: 00f90733 add a4,s2,a5 + 3bc0628a: 06042223 sw zero,100(s0) + 3bc0628e: bf99 j 3bc061e4 + 3bc06290: 44ad li s1,11 + 3bc06292: bd05 j 3bc060c2 + 3bc06294: 67a2 ld a5,8(sp) + 3bc06296: ec0787e3 beqz a5,3bc06164 + 3bc0629a: 4789 li a5,2 + 3bc0629c: 00f9a023 sw a5,0(s3) + 3bc062a0: b505 j 3bc060c0 + 3bc062a2: 67a2 ld a5,8(sp) + 3bc062a4: ec0780e3 beqz a5,3bc06164 + 3bc062a8: 4c85 li s9,1 + 3bc062aa: b5c1 j 3bc0616a + +000000003bc062ac : + 3bc062ac: 1141 addi sp,sp,-16 + 3bc062ae: e022 sd s0,0(sp) + 3bc062b0: 842a mv s0,a0 + 3bc062b2: 659c ld a5,8(a1) + 3bc062b4: 852e mv a0,a1 + 3bc062b6: 640c ld a1,8(s0) + 3bc062b8: e406 sd ra,8(sp) + 3bc062ba: 9782 jalr a5 + 3bc062bc: 60a2 ld ra,8(sp) + 3bc062be: 00043423 sd zero,8(s0) + 3bc062c2: 6402 ld s0,0(sp) + 3bc062c4: 0141 addi sp,sp,16 + 3bc062c6: 8082 ret + +000000003bc062c8 : + 3bc062c8: 1101 addi sp,sp,-32 + 3bc062ca: 6518 ld a4,8(a0) + 3bc062cc: e426 sd s1,8(sp) + 3bc062ce: 9db1 addw a1,a1,a2 + 3bc062d0: 30000493 li s1,768 + 3bc062d4: e822 sd s0,16(sp) + 3bc062d6: 00b494bb sllw s1,s1,a1 + 3bc062da: ec06 sd ra,24(sp) + 3bc062dc: e04a sd s2,0(sp) + 3bc062de: 842a mv s0,a0 + 3bc062e0: 7c04849b addiw s1,s1,1984 + 3bc062e4: c719 beqz a4,3bc062f2 + 3bc062e6: 5138 lw a4,96(a0) + 3bc062e8: 0004879b sext.w a5,s1 + 3bc062ec: 4501 li a0,0 + 3bc062ee: 02f70a63 beq a4,a5,3bc06322 + 3bc062f2: 85b6 mv a1,a3 + 3bc062f4: 8522 mv a0,s0 + 3bc062f6: 8936 mv s2,a3 + 3bc062f8: fb5ff0ef jal ra,3bc062ac + 3bc062fc: 00093783 ld a5,0(s2) + 3bc06300: 02049713 slli a4,s1,0x20 + 3bc06304: 01f75593 srli a1,a4,0x1f + 3bc06308: 854a mv a0,s2 + 3bc0630a: 9782 jalr a5 + 3bc0630c: 87aa mv a5,a0 + 3bc0630e: e408 sd a0,8(s0) + 3bc06310: 4509 li a0,2 + 3bc06312: cb81 beqz a5,3bc06322 + 3bc06314: 6505 lui a0,0x1 + 3bc06316: d0050513 addi a0,a0,-768 # d00 <__BSS_SIZE__-0x4f10> + 3bc0631a: 97aa add a5,a5,a0 + 3bc0631c: e81c sd a5,16(s0) + 3bc0631e: d024 sw s1,96(s0) + 3bc06320: 4501 li a0,0 + 3bc06322: 60e2 ld ra,24(sp) + 3bc06324: 6442 ld s0,16(sp) + 3bc06326: 64a2 ld s1,8(sp) + 3bc06328: 6902 ld s2,0(sp) + 3bc0632a: 6105 addi sp,sp,32 + 3bc0632c: 8082 ret + +000000003bc0632e : + 3bc0632e: 4791 li a5,4 + 3bc06330: 00c7e463 bltu a5,a2,3bc06338 + 3bc06334: 4511 li a0,4 + 3bc06336: 8082 ret + 3bc06338: 0015a703 lw a4,1(a1) + 3bc0633c: 6685 lui a3,0x1 + 3bc0633e: 87ba mv a5,a4 + 3bc06340: 00d77363 bgeu a4,a3,3bc06346 + 3bc06344: 6785 lui a5,0x1 + 3bc06346: c15c sw a5,4(a0) + 3bc06348: 0005c783 lbu a5,0(a1) + 3bc0634c: 0e000713 li a4,224 + 3bc06350: fef762e3 bltu a4,a5,3bc06334 + 3bc06354: 4725 li a4,9 + 3bc06356: 02e7f6bb remuw a3,a5,a4 + 3bc0635a: 02e7d7bb divuw a5,a5,a4 + 3bc0635e: 4715 li a4,5 + 3bc06360: 00d50023 sb a3,0(a0) + 3bc06364: 02e7d6bb divuw a3,a5,a4 + 3bc06368: 02e7f7bb remuw a5,a5,a4 + 3bc0636c: 00d50123 sb a3,2(a0) + 3bc06370: 00f500a3 sb a5,1(a0) + 3bc06374: 4501 li a0,0 + 3bc06376: 8082 ret + +000000003bc06378 : + 3bc06378: 7179 addi sp,sp,-48 + 3bc0637a: f022 sd s0,32(sp) + 3bc0637c: 842a mv s0,a0 + 3bc0637e: 0828 addi a0,sp,24 + 3bc06380: f406 sd ra,40(sp) + 3bc06382: e436 sd a3,8(sp) + 3bc06384: fabff0ef jal ra,3bc0632e + 3bc06388: ed01 bnez a0,3bc063a0 + 3bc0638a: 66a2 ld a3,8(sp) + 3bc0638c: 01914603 lbu a2,25(sp) + 3bc06390: 01814583 lbu a1,24(sp) + 3bc06394: 8522 mv a0,s0 + 3bc06396: f33ff0ef jal ra,3bc062c8 + 3bc0639a: e119 bnez a0,3bc063a0 + 3bc0639c: 67e2 ld a5,24(sp) + 3bc0639e: e01c sd a5,0(s0) + 3bc063a0: 70a2 ld ra,40(sp) + 3bc063a2: 7402 ld s0,32(sp) + 3bc063a4: 6145 addi sp,sp,48 + 3bc063a6: 8082 ret + +000000003bc063a8 : + 3bc063a8: 7155 addi sp,sp,-208 + 3bc063aa: e1a2 sd s0,192(sp) + 3bc063ac: f152 sd s4,160(sp) + 3bc063ae: ed56 sd s5,152(sp) + 3bc063b0: e586 sd ra,200(sp) + 3bc063b2: fd26 sd s1,184(sp) + 3bc063b4: f94a sd s2,176(sp) + 3bc063b6: f54e sd s3,168(sp) + 3bc063b8: e95a sd s6,144(sp) + 3bc063ba: e55e sd s7,136(sp) + 3bc063bc: e162 sd s8,128(sp) + 3bc063be: 0005ba03 ld s4,0(a1) + 3bc063c2: 0006ba83 ld s5,0(a3) # 1000 <__BSS_SIZE__-0x4c10> + 3bc063c6: 0006b023 sd zero,0(a3) + 3bc063ca: 0005b023 sd zero,0(a1) + 3bc063ce: 833a mv t1,a4 + 3bc063d0: 0008a023 sw zero,0(a7) + 3bc063d4: 4711 li a4,4 + 3bc063d6: 4419 li s0,6 + 3bc063d8: 07577063 bgeu a4,s5,3bc06438 + 3bc063dc: 84b6 mv s1,a3 + 3bc063de: 66ce ld a3,208(sp) + 3bc063e0: 8bb2 mv s7,a2 + 3bc063e2: 8c2e mv s8,a1 + 3bc063e4: 89aa mv s3,a0 + 3bc063e6: 863e mv a2,a5 + 3bc063e8: 859a mv a1,t1 + 3bc063ea: 850a mv a0,sp + 3bc063ec: 8946 mv s2,a7 + 3bc063ee: 8b42 mv s6,a6 + 3bc063f0: ec02 sd zero,24(sp) + 3bc063f2: e402 sd zero,8(sp) + 3bc063f4: f85ff0ef jal ra,3bc06378 + 3bc063f8: 842a mv s0,a0 + 3bc063fa: ed1d bnez a0,3bc06438 + 3bc063fc: 850a mv a0,sp + 3bc063fe: ec4e sd s3,24(sp) + 3bc06400: f052 sd s4,32(sp) + 3bc06402: c1bff0ef jal ra,3bc0601c + 3bc06406: 87ca mv a5,s2 + 3bc06408: 0154b023 sd s5,0(s1) + 3bc0640c: 875a mv a4,s6 + 3bc0640e: 86a6 mv a3,s1 + 3bc06410: 865e mv a2,s7 + 3bc06412: 85d2 mv a1,s4 + 3bc06414: 850a mv a0,sp + 3bc06416: c1bff0ef jal ra,3bc06030 + 3bc0641a: 77a2 ld a5,40(sp) + 3bc0641c: 842a mv s0,a0 + 3bc0641e: 00fc3023 sd a5,0(s8) + 3bc06422: e519 bnez a0,3bc06430 + 3bc06424: 00092703 lw a4,0(s2) + 3bc06428: 478d li a5,3 + 3bc0642a: 00f71363 bne a4,a5,3bc06430 + 3bc0642e: 4419 li s0,6 + 3bc06430: 65ce ld a1,208(sp) + 3bc06432: 850a mv a0,sp + 3bc06434: e79ff0ef jal ra,3bc062ac + 3bc06438: 60ae ld ra,200(sp) + 3bc0643a: 8522 mv a0,s0 + 3bc0643c: 640e ld s0,192(sp) + 3bc0643e: 74ea ld s1,184(sp) + 3bc06440: 794a ld s2,176(sp) + 3bc06442: 79aa ld s3,168(sp) + 3bc06444: 7a0a ld s4,160(sp) + 3bc06446: 6aea ld s5,152(sp) + 3bc06448: 6b4a ld s6,144(sp) + 3bc0644a: 6baa ld s7,136(sp) + 3bc0644c: 6c0a ld s8,128(sp) + 3bc0644e: 6169 addi sp,sp,208 + 3bc06450: 8082 ret + +000000003bc06452 : + 3bc06452: 00154783 lbu a5,1(a0) + 3bc06456: 00254703 lbu a4,2(a0) + 3bc0645a: 00054683 lbu a3,0(a0) + 3bc0645e: 00354503 lbu a0,3(a0) + 3bc06462: 0107171b slliw a4,a4,0x10 + 3bc06466: 0087979b slliw a5,a5,0x8 + 3bc0646a: 9fb9 addw a5,a5,a4 + 3bc0646c: 9fb5 addw a5,a5,a3 + 3bc0646e: 0185151b slliw a0,a0,0x18 + 3bc06472: 9d3d addw a0,a0,a5 + 3bc06474: 8082 ret + +000000003bc06476 : + 3bc06476: 40e58733 sub a4,a1,a4 + 3bc0647a: 26050763 beqz a0,3bc066e8 + 3bc0647e: 00c50e33 add t3,a0,a2 + 3bc06482: 7119 addi sp,sp,-128 + 3bc06484: ff0e0793 addi a5,t3,-16 # fffff0 <__BSS_SIZE__+0xffa3e0> + 3bc06488: ecce sd s3,88(sp) + 3bc0648a: 00d58eb3 add t4,a1,a3 + 3bc0648e: fc86 sd ra,120(sp) + 3bc06490: f8a2 sd s0,112(sp) + 3bc06492: f4a6 sd s1,104(sp) + 3bc06494: f0ca sd s2,96(sp) + 3bc06496: e8d2 sd s4,80(sp) + 3bc06498: e4d6 sd s5,72(sp) + 3bc0649a: e0da sd s6,64(sp) + 3bc0649c: fc5e sd s7,56(sp) + 3bc0649e: f862 sd s8,48(sp) + 3bc064a0: f466 sd s9,40(sp) + 3bc064a2: f06a sd s10,32(sp) + 3bc064a4: ec6e sd s11,24(sp) + 3bc064a6: e43e sd a5,8(sp) + 3bc064a8: 832a mv t1,a0 + 3bc064aa: fe0e8993 addi s3,t4,-32 + 3bc064ae: ea95 bnez a3,3bc064e2 + 3bc064b0: 4785 li a5,1 + 3bc064b2: 557d li a0,-1 + 3bc064b4: 00f61863 bne a2,a5,3bc064c4 + 3bc064b8: 00034503 lbu a0,0(t1) + 3bc064bc: 00a03533 snez a0,a0 + 3bc064c0: 0005250b ext a0,a0,0,0 + 3bc064c4: 70e6 ld ra,120(sp) + 3bc064c6: 7446 ld s0,112(sp) + 3bc064c8: 74a6 ld s1,104(sp) + 3bc064ca: 7906 ld s2,96(sp) + 3bc064cc: 69e6 ld s3,88(sp) + 3bc064ce: 6a46 ld s4,80(sp) + 3bc064d0: 6aa6 ld s5,72(sp) + 3bc064d2: 6b06 ld s6,64(sp) + 3bc064d4: 7be2 ld s7,56(sp) + 3bc064d6: 7c42 ld s8,48(sp) + 3bc064d8: 7ca2 ld s9,40(sp) + 3bc064da: 7d02 ld s10,32(sp) + 3bc064dc: 6de2 ld s11,24(sp) + 3bc064de: 6109 addi sp,sp,128 + 3bc064e0: 8082 ret + 3bc064e2: 557d li a0,-1 + 3bc064e4: d265 beqz a2,3bc064c4 + 3bc064e6: 879a mv a5,t1 + 3bc064e8: 882e mv a6,a1 + 3bc064ea: 4fbd li t6,15 + 3bc064ec: 429d li t0,7 + 3bc064ee: ff4e8393 addi t2,t4,-12 + 3bc064f2: 4a41 li s4,16 + 3bc064f4: ff9e8f13 addi t5,t4,-7 + 3bc064f8: ffbe8a93 addi s5,t4,-5 + 3bc064fc: 00005b17 auipc s6,0x5 + 3bc06500: c9cb0b13 addi s6,s6,-868 # 3bc0b198 + 3bc06504: 00005b97 auipc s7,0x5 + 3bc06508: c74b8b93 addi s7,s7,-908 # 3bc0b178 + 3bc0650c: ffce0c13 addi s8,t3,-4 + 3bc06510: 0ff00493 li s1,255 + 3bc06514: ff8e0c93 addi s9,t3,-8 + 3bc06518: ff1e0913 addi s2,t3,-15 + 3bc0651c: 5d7d li s10,-1 + 3bc0651e: 9817c50b lbuia a0,(a5),1,0 + 3bc06522: 00455693 srli a3,a0,0x4 + 3bc06526: 0045561b srliw a2,a0,0x4 + 3bc0652a: 07f68063 beq a3,t6,3bc0658a + 3bc0652e: 0109b8b3 sltu a7,s3,a6 + 3bc06532: 0018c893 xori a7,a7,1 + 3bc06536: 0ff8f893 andi a7,a7,255 + 3bc0653a: 00c80433 add s0,a6,a2 + 3bc0653e: 00c786b3 add a3,a5,a2 + 3bc06542: 06088d63 beqz a7,3bc065bc + 3bc06546: 68a2 ld a7,8(sp) + 3bc06548: 0717fa63 bgeu a5,a7,3bc065bc + 3bc0654c: 6390 ld a2,0(a5) + 3bc0654e: 893d andi a0,a0,15 + 3bc06550: 00c83023 sd a2,0(a6) + 3bc06554: 679c ld a5,8(a5) + 3bc06556: 862a mv a2,a0 + 3bc06558: 00f83423 sd a5,8(a6) + 3bc0655c: 87b6 mv a5,a3 + 3bc0655e: b827c88b lhuia a7,(a5),2,0 + 3bc06562: 411406b3 sub a3,s0,a7 + 3bc06566: 0bf50763 beq a0,t6,3bc06614 + 3bc0656a: 0d12f563 bgeu t0,a7,3bc06634 + 3bc0656e: 0ce6e363 bltu a3,a4,3bc06634 + 3bc06572: 6290 ld a2,0(a3) + 3bc06574: 0511 addi a0,a0,4 + 3bc06576: 00a40833 add a6,s0,a0 + 3bc0657a: e010 sd a2,0(s0) + 3bc0657c: 6690 ld a2,8(a3) + 3bc0657e: e410 sd a2,8(s0) + 3bc06580: 0106d683 lhu a3,16(a3) + 3bc06584: 00d41823 sh a3,16(s0) + 3bc06588: bf59 j 3bc0651e + 3bc0658a: 0527fd63 bgeu a5,s2,3bc065e4 + 3bc0658e: 4601 li a2,0 + 3bc06590: 9817c88b lbuia a7,(a5),1,0 + 3bc06594: 00c8863b addw a2,a7,a2 + 3bc06598: 0527f963 bgeu a5,s2,3bc065ea + 3bc0659c: fe988ae3 beq a7,s1,3bc06590 + 3bc065a0: 4681 li a3,0 + 3bc065a2: 7c06360b extu a2,a2,31,0 + 3bc065a6: 063d addi a2,a2,15 + 3bc065a8: 13a68a63 beq a3,s10,3bc066dc + 3bc065ac: 010606b3 add a3,a2,a6 + 3bc065b0: 1306e663 bltu a3,a6,3bc066dc + 3bc065b4: 00f606b3 add a3,a2,a5 + 3bc065b8: 12f6e263 bltu a3,a5,3bc066dc + 3bc065bc: 00c80433 add s0,a6,a2 + 3bc065c0: 00c788b3 add a7,a5,a2 + 3bc065c4: 0083e463 bltu t2,s0,3bc065cc + 3bc065c8: 031cf363 bgeu s9,a7,3bc065ee + 3bc065cc: 111e1863 bne t3,a7,3bc066dc + 3bc065d0: 108ee663 bltu t4,s0,3bc066dc + 3bc065d4: 84ae mv s1,a1 + 3bc065d6: 8542 mv a0,a6 + 3bc065d8: 85be mv a1,a5 + 3bc065da: cf2fa0ef jal ra,3bc00acc + 3bc065de: 4094053b subw a0,s0,s1 + 3bc065e2: b5cd j 3bc064c4 + 3bc065e4: 56fd li a3,-1 + 3bc065e6: 4601 li a2,0 + 3bc065e8: bf6d j 3bc065a2 + 3bc065ea: 56f9 li a3,-2 + 3bc065ec: bf5d j 3bc065a2 + 3bc065ee: 4681 li a3,0 + 3bc065f0: 60d7c60b lrd a2,a5,a3,0 + 3bc065f4: 60d8560b srd a2,a6,a3,0 + 3bc065f8: 06a1 addi a3,a3,8 + 3bc065fa: 00d80633 add a2,a6,a3 + 3bc065fe: fe8669e3 bltu a2,s0,3bc065f0 + 3bc06602: 87c6 mv a5,a7 + 3bc06604: b827c88b lhuia a7,(a5),2,0 + 3bc06608: 00f57613 andi a2,a0,15 + 3bc0660c: 411406b3 sub a3,s0,a7 + 3bc06610: 03f61263 bne a2,t6,3bc06634 + 3bc06614: 4601 li a2,0 + 3bc06616: 9817c80b lbuia a6,(a5),1,0 + 3bc0661a: 00c8063b addw a2,a6,a2 + 3bc0661e: 0b87ff63 bgeu a5,s8,3bc066dc + 3bc06622: fe980ae3 beq a6,s1,3bc06616 + 3bc06626: 7c06360b extu a2,a2,31,0 + 3bc0662a: 063d addi a2,a2,15 + 3bc0662c: 00860533 add a0,a2,s0 + 3bc06630: 0a856663 bltu a0,s0,3bc066dc + 3bc06634: 0611 addi a2,a2,4 + 3bc06636: 0ae6e363 bltu a3,a4,3bc066dc + 3bc0663a: 00c40833 add a6,s0,a2 + 3bc0663e: 0712e463 bltu t0,a7,3bc066a6 + 3bc06642: 00042023 sw zero,0(s0) + 3bc06646: 0006c503 lbu a0,0(a3) + 3bc0664a: 00a40023 sb a0,0(s0) + 3bc0664e: 0016c503 lbu a0,1(a3) + 3bc06652: 00a400a3 sb a0,1(s0) + 3bc06656: 0026c503 lbu a0,2(a3) + 3bc0665a: 00a40123 sb a0,2(s0) + 3bc0665e: 0036c503 lbu a0,3(a3) + 3bc06662: 00a401a3 sb a0,3(s0) + 3bc06666: c51b450b lrwu a0,s6,a7,2 + 3bc0666a: 00a68db3 add s11,a3,a0 + 3bc0666e: 40a6c68b lrw a3,a3,a0,0 + 3bc06672: c054 sw a3,4(s0) + 3bc06674: 451bc68b lrw a3,s7,a7,2 + 3bc06678: 40dd86b3 sub a3,s11,a3 + 3bc0667c: 0503f363 bgeu t2,a6,3bc066c2 + 3bc06680: 050aee63 bltu s5,a6,3bc066dc + 3bc06684: 0421 addi s0,s0,8 + 3bc06686: 01e47e63 bgeu s0,t5,3bc066a2 + 3bc0668a: 8536 mv a0,a3 + 3bc0668c: 8622 mv a2,s0 + 3bc0668e: 7885488b ldia a7,(a0),8,0 + 3bc06692: 7886588b sdia a7,(a2),8,0 + 3bc06696: ffe66ce3 bltu a2,t5,3bc0668e + 3bc0669a: 408f0433 sub s0,t5,s0 + 3bc0669e: 96a2 add a3,a3,s0 + 3bc066a0: 847a mv s0,t5 + 3bc066a2: 4601 li a2,0 + 3bc066a4: a811 j 3bc066b8 + 3bc066a6: 7886c50b ldia a0,(a3),8,0 + 3bc066aa: e008 sd a0,0(s0) + 3bc066ac: bfc1 j 3bc0667c + 3bc066ae: 80c6c50b lrbu a0,a3,a2,0 + 3bc066b2: 00c4550b srb a0,s0,a2,0 + 3bc066b6: 0605 addi a2,a2,1 + 3bc066b8: 00c40533 add a0,s0,a2 + 3bc066bc: ff0569e3 bltu a0,a6,3bc066ae + 3bc066c0: bdb9 j 3bc0651e + 3bc066c2: 6288 ld a0,0(a3) + 3bc066c4: e408 sd a0,8(s0) + 3bc066c6: e4ca7ce3 bgeu s4,a2,3bc0651e + 3bc066ca: 0441 addi s0,s0,16 + 3bc066cc: 06a1 addi a3,a3,8 + 3bc066ce: 7886c60b ldia a2,(a3),8,0 + 3bc066d2: 7884560b sdia a2,(s0),8,0 + 3bc066d6: ff046ce3 bltu s0,a6,3bc066ce + 3bc066da: b591 j 3bc0651e + 3bc066dc: 40678533 sub a0,a5,t1 + 3bc066e0: fff54513 not a0,a0 + 3bc066e4: 2501 sext.w a0,a0 + 3bc066e6: bbf9 j 3bc064c4 + 3bc066e8: 557d li a0,-1 + 3bc066ea: 8082 ret + +000000003bc066ec : + 3bc066ec: 06853803 ld a6,104(a0) + 3bc066f0: 7179 addi sp,sp,-48 + 3bc066f2: f022 sd s0,32(sp) + 3bc066f4: f406 sd ra,40(sp) + 3bc066f6: ec26 sd s1,24(sp) + 3bc066f8: e84a sd s2,16(sp) + 3bc066fa: e44e sd s3,8(sp) + 3bc066fc: 842a mv s0,a0 + 3bc066fe: 00081363 bnez a6,3bc06704 + 3bc06702: f12c sd a1,96(a0) + 3bc06704: 7028 ld a0,96(s0) + 3bc06706: 010507b3 add a5,a0,a6 + 3bc0670a: 00f59663 bne a1,a5,3bc06716 + 3bc0670e: 00c807b3 add a5,a6,a2 + 3bc06712: f43c sd a5,104(s0) + 3bc06714: a811 j 3bc06728 + 3bc06716: 40d588b3 sub a7,a1,a3 + 3bc0671a: 98b2 add a7,a7,a2 + 3bc0671c: 67c1 lui a5,0x10 + 3bc0671e: 00f8ec63 bltu a7,a5,3bc06736 + 3bc06722: f034 sd a3,96(s0) + 3bc06724: 07143423 sd a7,104(s0) + 3bc06728: 70a2 ld ra,40(sp) + 3bc0672a: 7402 ld s0,32(sp) + 3bc0672c: 64e2 ld s1,24(sp) + 3bc0672e: 6942 ld s2,16(sp) + 3bc06730: 69a2 ld s3,8(sp) + 3bc06732: 6145 addi sp,sp,48 + 3bc06734: 8082 ret + 3bc06736: 6c34 ld a3,88(s0) + 3bc06738: 84b2 mv s1,a2 + 3bc0673a: 89ae mv s3,a1 + 3bc0673c: cb29 beqz a4,3bc0678e + 3bc0673e: 00d51563 bne a0,a3,3bc06748 + 3bc06742: 00c807b3 add a5,a6,a2 + 3bc06746: b7f1 j 3bc06712 + 3bc06748: 07043903 ld s2,112(s0) + 3bc0674c: 604c ld a1,128(s0) + 3bc0674e: 7c38 ld a4,120(s0) + 3bc06750: 40d90933 sub s2,s2,a3 + 3bc06754: 40b805b3 sub a1,a6,a1 + 3bc06758: 4601 li a2,0 + 3bc0675a: 00e7ea63 bltu a5,a4,3bc0676e + 3bc0675e: 40e78633 sub a2,a5,a4 + 3bc06762: 00c937b3 sltu a5,s2,a2 + 3bc06766: 0017c793 xori a5,a5,1 + 3bc0676a: 40f9160b mveqz a2,s2,a5 + 3bc0676e: 40c907b3 sub a5,s2,a2 + 3bc06772: 8d91 sub a1,a1,a2 + 3bc06774: 95aa add a1,a1,a0 + 3bc06776: 00f68533 add a0,a3,a5 + 3bc0677a: af2fa0ef jal ra,3bc00a6c + 3bc0677e: 6050 ld a2,128(s0) + 3bc06780: 6c3c ld a5,88(s0) + 3bc06782: 94b2 add s1,s1,a2 + 3bc06784: 9926 add s2,s2,s1 + 3bc06786: f03c sd a5,96(s0) + 3bc06788: 07243423 sd s2,104(s0) + 3bc0678c: bf71 j 3bc06728 + 3bc0678e: 02d51e63 bne a0,a3,3bc067ca + 3bc06792: 7c14 ld a3,56(s0) + 3bc06794: 00c80733 add a4,a6,a2 + 3bc06798: 00e6fe63 bgeu a3,a4,3bc067b4 + 3bc0679c: 40c78933 sub s2,a5,a2 + 3bc067a0: 40f607b3 sub a5,a2,a5 + 3bc067a4: 97c2 add a5,a5,a6 + 3bc067a6: 864a mv a2,s2 + 3bc067a8: 00f505b3 add a1,a0,a5 + 3bc067ac: ac0fa0ef jal ra,3bc00a6c + 3bc067b0: 07243423 sd s2,104(s0) + 3bc067b4: 6c28 ld a0,88(s0) + 3bc067b6: 743c ld a5,104(s0) + 3bc067b8: 8626 mv a2,s1 + 3bc067ba: 85ce mv a1,s3 + 3bc067bc: 953e add a0,a0,a5 + 3bc067be: aaefa0ef jal ra,3bc00a6c + 3bc067c2: 7430 ld a2,104(s0) + 3bc067c4: 94b2 add s1,s1,a2 + 3bc067c6: f424 sd s1,104(s0) + 3bc067c8: b785 j 3bc06728 + 3bc067ca: 8f91 sub a5,a5,a2 + 3bc067cc: 0107b733 sltu a4,a5,a6 + 3bc067d0: 00174713 xori a4,a4,1 + 3bc067d4: 42e8178b mvnez a5,a6,a4 + 3bc067d8: 40f805b3 sub a1,a6,a5 + 3bc067dc: 863e mv a2,a5 + 3bc067de: 95aa add a1,a1,a0 + 3bc067e0: 8536 mv a0,a3 + 3bc067e2: 893e mv s2,a5 + 3bc067e4: a88fa0ef jal ra,3bc00a6c + 3bc067e8: 6c28 ld a0,88(s0) + 3bc067ea: 8626 mv a2,s1 + 3bc067ec: 85ce mv a1,s3 + 3bc067ee: 954a add a0,a0,s2 + 3bc067f0: a7cfa0ef jal ra,3bc00a6c + 3bc067f4: 6c3c ld a5,88(s0) + 3bc067f6: 94ca add s1,s1,s2 + 3bc067f8: f03c sd a5,96(s0) + 3bc067fa: b7f1 j 3bc067c6 + +000000003bc067fc : + 3bc067fc: 26050463 beqz a0,3bc06a64 + 3bc06800: 7159 addi sp,sp,-112 + 3bc06802: eca6 sd s1,88(sp) + 3bc06804: 00c50833 add a6,a0,a2 + 3bc06808: 00d588b3 add a7,a1,a3 + 3bc0680c: f486 sd ra,104(sp) + 3bc0680e: f0a2 sd s0,96(sp) + 3bc06810: e8ca sd s2,80(sp) + 3bc06812: e4ce sd s3,72(sp) + 3bc06814: e0d2 sd s4,64(sp) + 3bc06816: fc56 sd s5,56(sp) + 3bc06818: f85a sd s6,48(sp) + 3bc0681a: f45e sd s7,40(sp) + 3bc0681c: f062 sd s8,32(sp) + 3bc0681e: ec66 sd s9,24(sp) + 3bc06820: e86a sd s10,16(sp) + 3bc06822: e46e sd s11,8(sp) + 3bc06824: ff080393 addi t2,a6,-16 + 3bc06828: fe088493 addi s1,a7,-32 + 3bc0682c: ea9d bnez a3,3bc06862 + 3bc0682e: 4705 li a4,1 + 3bc06830: 57fd li a5,-1 + 3bc06832: 00e61863 bne a2,a4,3bc06842 + 3bc06836: 00054783 lbu a5,0(a0) + 3bc0683a: 00f037b3 snez a5,a5 + 3bc0683e: 0007a78b ext a5,a5,0,0 + 3bc06842: 70a6 ld ra,104(sp) + 3bc06844: 7406 ld s0,96(sp) + 3bc06846: 64e6 ld s1,88(sp) + 3bc06848: 6946 ld s2,80(sp) + 3bc0684a: 69a6 ld s3,72(sp) + 3bc0684c: 6a06 ld s4,64(sp) + 3bc0684e: 7ae2 ld s5,56(sp) + 3bc06850: 7b42 ld s6,48(sp) + 3bc06852: 7ba2 ld s7,40(sp) + 3bc06854: 7c02 ld s8,32(sp) + 3bc06856: 6ce2 ld s9,24(sp) + 3bc06858: 6d42 ld s10,16(sp) + 3bc0685a: 6da2 ld s11,8(sp) + 3bc0685c: 853e mv a0,a5 + 3bc0685e: 6165 addi sp,sp,112 + 3bc06860: 8082 ret + 3bc06862: 57fd li a5,-1 + 3bc06864: de79 beqz a2,3bc06842 + 3bc06866: 87aa mv a5,a0 + 3bc06868: 872e mv a4,a1 + 3bc0686a: 4e3d li t3,15 + 3bc0686c: 4e9d li t4,7 + 3bc0686e: ff488f13 addi t5,a7,-12 + 3bc06872: 4941 li s2,16 + 3bc06874: ff988313 addi t1,a7,-7 + 3bc06878: ffb88993 addi s3,a7,-5 + 3bc0687c: 00005a17 auipc s4,0x5 + 3bc06880: 91ca0a13 addi s4,s4,-1764 # 3bc0b198 + 3bc06884: 00005a97 auipc s5,0x5 + 3bc06888: 8f4a8a93 addi s5,s5,-1804 # 3bc0b178 + 3bc0688c: ffc80b13 addi s6,a6,-4 + 3bc06890: 0ff00f93 li t6,255 + 3bc06894: ff880b93 addi s7,a6,-8 + 3bc06898: ff180293 addi t0,a6,-15 + 3bc0689c: 5c7d li s8,-1 + 3bc0689e: 9817c68b lbuia a3,(a5),1,0 + 3bc068a2: 0046d413 srli s0,a3,0x4 + 3bc068a6: 0046d61b srliw a2,a3,0x4 + 3bc068aa: 05c40d63 beq s0,t3,3bc06904 + 3bc068ae: 00e4bd33 sltu s10,s1,a4 + 3bc068b2: 001d4d13 xori s10,s10,1 + 3bc068b6: 0ffd7d13 andi s10,s10,255 + 3bc068ba: 00c70433 add s0,a4,a2 + 3bc068be: 00c78cb3 add s9,a5,a2 + 3bc068c2: 060d0a63 beqz s10,3bc06936 + 3bc068c6: 0677f863 bgeu a5,t2,3bc06936 + 3bc068ca: 6390 ld a2,0(a5) + 3bc068cc: e310 sd a2,0(a4) + 3bc068ce: 679c ld a5,8(a5) + 3bc068d0: e71c sd a5,8(a4) + 3bc068d2: 87e6 mv a5,s9 + 3bc068d4: b827cc8b lhuia s9,(a5),2,0 + 3bc068d8: 00f6f713 andi a4,a3,15 + 3bc068dc: 86ba mv a3,a4 + 3bc068de: 41940633 sub a2,s0,s9 + 3bc068e2: 0bc70563 beq a4,t3,3bc0698c + 3bc068e6: 0d9ef363 bgeu t4,s9,3bc069ac + 3bc068ea: 0cb66163 bltu a2,a1,3bc069ac + 3bc068ee: 6214 ld a3,0(a2) + 3bc068f0: 0711 addi a4,a4,4 + 3bc068f2: 9722 add a4,a4,s0 + 3bc068f4: e014 sd a3,0(s0) + 3bc068f6: 6614 ld a3,8(a2) + 3bc068f8: e414 sd a3,8(s0) + 3bc068fa: 01065683 lhu a3,16(a2) + 3bc068fe: 00d41823 sh a3,16(s0) + 3bc06902: bf71 j 3bc0689e + 3bc06904: 0457fd63 bgeu a5,t0,3bc0695e + 3bc06908: 4601 li a2,0 + 3bc0690a: 9817cc8b lbuia s9,(a5),1,0 + 3bc0690e: 00cc863b addw a2,s9,a2 + 3bc06912: 0457f963 bgeu a5,t0,3bc06964 + 3bc06916: fffc8ae3 beq s9,t6,3bc0690a + 3bc0691a: 4401 li s0,0 + 3bc0691c: 7c06360b extu a2,a2,31,0 + 3bc06920: 063d addi a2,a2,15 + 3bc06922: 13840c63 beq s0,s8,3bc06a5a + 3bc06926: 00e60433 add s0,a2,a4 + 3bc0692a: 12e46863 bltu s0,a4,3bc06a5a + 3bc0692e: 00f60433 add s0,a2,a5 + 3bc06932: 12f46463 bltu s0,a5,3bc06a5a + 3bc06936: 00c70433 add s0,a4,a2 + 3bc0693a: 00c78cb3 add s9,a5,a2 + 3bc0693e: 008f6463 bltu t5,s0,3bc06946 + 3bc06942: 039bf363 bgeu s7,s9,3bc06968 + 3bc06946: 11981a63 bne a6,s9,3bc06a5a + 3bc0694a: 1088e863 bltu a7,s0,3bc06a5a + 3bc0694e: 84ae mv s1,a1 + 3bc06950: 853a mv a0,a4 + 3bc06952: 85be mv a1,a5 + 3bc06954: 978fa0ef jal ra,3bc00acc + 3bc06958: 409407bb subw a5,s0,s1 + 3bc0695c: b5dd j 3bc06842 + 3bc0695e: 547d li s0,-1 + 3bc06960: 4601 li a2,0 + 3bc06962: bf6d j 3bc0691c + 3bc06964: 5479 li s0,-2 + 3bc06966: bf5d j 3bc0691c + 3bc06968: 4601 li a2,0 + 3bc0696a: 60c7cd0b lrd s10,a5,a2,0 + 3bc0696e: 60c75d0b srd s10,a4,a2,0 + 3bc06972: 0621 addi a2,a2,8 + 3bc06974: 00c70d33 add s10,a4,a2 + 3bc06978: fe8d69e3 bltu s10,s0,3bc0696a + 3bc0697c: 87e6 mv a5,s9 + 3bc0697e: b827cc8b lhuia s9,(a5),2,0 + 3bc06982: 8abd andi a3,a3,15 + 3bc06984: 41940633 sub a2,s0,s9 + 3bc06988: 03c69263 bne a3,t3,3bc069ac + 3bc0698c: 4681 li a3,0 + 3bc0698e: 9817cd0b lbuia s10,(a5),1,0 + 3bc06992: 00dd06bb addw a3,s10,a3 + 3bc06996: 0d67f263 bgeu a5,s6,3bc06a5a + 3bc0699a: fffd0ae3 beq s10,t6,3bc0698e + 3bc0699e: 7c06b68b extu a3,a3,31,0 + 3bc069a2: 06bd addi a3,a3,15 + 3bc069a4: 00868733 add a4,a3,s0 + 3bc069a8: 0a876963 bltu a4,s0,3bc06a5a + 3bc069ac: 0691 addi a3,a3,4 + 3bc069ae: 0ab66663 bltu a2,a1,3bc06a5a + 3bc069b2: 00d40733 add a4,s0,a3 + 3bc069b6: 079ee463 bltu t4,s9,3bc06a1e + 3bc069ba: 00042023 sw zero,0(s0) + 3bc069be: 00064d03 lbu s10,0(a2) + 3bc069c2: 01a40023 sb s10,0(s0) + 3bc069c6: 00164d03 lbu s10,1(a2) + 3bc069ca: 01a400a3 sb s10,1(s0) + 3bc069ce: 00264d03 lbu s10,2(a2) + 3bc069d2: 01a40123 sb s10,2(s0) + 3bc069d6: 00364d03 lbu s10,3(a2) + 3bc069da: 01a401a3 sb s10,3(s0) + 3bc069de: c59a4d0b lrwu s10,s4,s9,2 + 3bc069e2: 01a60db3 add s11,a2,s10 + 3bc069e6: 41a6460b lrw a2,a2,s10,0 + 3bc069ea: c050 sw a2,4(s0) + 3bc069ec: 459ac60b lrw a2,s5,s9,2 + 3bc069f0: 40cd8633 sub a2,s11,a2 + 3bc069f4: 04ef7463 bgeu t5,a4,3bc06a3c + 3bc069f8: 06e9e163 bltu s3,a4,3bc06a5a + 3bc069fc: 0421 addi s0,s0,8 + 3bc069fe: 00647e63 bgeu s0,t1,3bc06a1a + 3bc06a02: 8cb2 mv s9,a2 + 3bc06a04: 86a2 mv a3,s0 + 3bc06a06: 788ccd0b ldia s10,(s9),8,0 + 3bc06a0a: 7886dd0b sdia s10,(a3),8,0 + 3bc06a0e: fe66ece3 bltu a3,t1,3bc06a06 + 3bc06a12: 40830433 sub s0,t1,s0 + 3bc06a16: 9622 add a2,a2,s0 + 3bc06a18: 841a mv s0,t1 + 3bc06a1a: 4681 li a3,0 + 3bc06a1c: a819 j 3bc06a32 + 3bc06a1e: 78864c8b ldia s9,(a2),8,0 + 3bc06a22: 01943023 sd s9,0(s0) + 3bc06a26: b7f9 j 3bc069f4 + 3bc06a28: 80d64c8b lrbu s9,a2,a3,0 + 3bc06a2c: 00d45c8b srb s9,s0,a3,0 + 3bc06a30: 0685 addi a3,a3,1 + 3bc06a32: 00d40cb3 add s9,s0,a3 + 3bc06a36: feece9e3 bltu s9,a4,3bc06a28 + 3bc06a3a: b595 j 3bc0689e + 3bc06a3c: 00063c83 ld s9,0(a2) + 3bc06a40: 01943423 sd s9,8(s0) + 3bc06a44: e4d97de3 bgeu s2,a3,3bc0689e + 3bc06a48: 0441 addi s0,s0,16 + 3bc06a4a: 0621 addi a2,a2,8 + 3bc06a4c: 7886468b ldia a3,(a2),8,0 + 3bc06a50: 7884568b sdia a3,(s0),8,0 + 3bc06a54: fee46ce3 bltu s0,a4,3bc06a4c + 3bc06a58: b599 j 3bc0689e + 3bc06a5a: 8f89 sub a5,a5,a0 + 3bc06a5c: fff7c793 not a5,a5 + 3bc06a60: 2781 sext.w a5,a5 + 3bc06a62: b3c5 j 3bc06842 + 3bc06a64: 57fd li a5,-1 + 3bc06a66: 853e mv a0,a5 + 3bc06a68: 8082 ret + +000000003bc06a6a : + 3bc06a6a: 77c1 lui a5,0xffff0 + 3bc06a6c: 7119 addi sp,sp,-128 + 3bc06a6e: 97ae add a5,a5,a1 + 3bc06a70: fc86 sd ra,120(sp) + 3bc06a72: f8a2 sd s0,112(sp) + 3bc06a74: f4a6 sd s1,104(sp) + 3bc06a76: f0ca sd s2,96(sp) + 3bc06a78: ecce sd s3,88(sp) + 3bc06a7a: e8d2 sd s4,80(sp) + 3bc06a7c: e4d6 sd s5,72(sp) + 3bc06a7e: e0da sd s6,64(sp) + 3bc06a80: fc5e sd s7,56(sp) + 3bc06a82: f862 sd s8,48(sp) + 3bc06a84: f466 sd s9,40(sp) + 3bc06a86: f06a sd s10,32(sp) + 3bc06a88: ec6e sd s11,24(sp) + 3bc06a8a: e43e sd a5,8(sp) + 3bc06a8c: 24050263 beqz a0,3bc06cd0 + 3bc06a90: 00c50333 add t1,a0,a2 + 3bc06a94: 00d58e33 add t3,a1,a3 + 3bc06a98: 88aa mv a7,a0 + 3bc06a9a: ff030913 addi s2,t1,-16 + 3bc06a9e: fe0e0993 addi s3,t3,-32 + 3bc06aa2: ea95 bnez a3,3bc06ad6 + 3bc06aa4: 4785 li a5,1 + 3bc06aa6: 557d li a0,-1 + 3bc06aa8: 00f61863 bne a2,a5,3bc06ab8 + 3bc06aac: 0008c503 lbu a0,0(a7) + 3bc06ab0: 00a03533 snez a0,a0 + 3bc06ab4: 0005250b ext a0,a0,0,0 + 3bc06ab8: 70e6 ld ra,120(sp) + 3bc06aba: 7446 ld s0,112(sp) + 3bc06abc: 74a6 ld s1,104(sp) + 3bc06abe: 7906 ld s2,96(sp) + 3bc06ac0: 69e6 ld s3,88(sp) + 3bc06ac2: 6a46 ld s4,80(sp) + 3bc06ac4: 6aa6 ld s5,72(sp) + 3bc06ac6: 6b06 ld s6,64(sp) + 3bc06ac8: 7be2 ld s7,56(sp) + 3bc06aca: 7c42 ld s8,48(sp) + 3bc06acc: 7ca2 ld s9,40(sp) + 3bc06ace: 7d02 ld s10,32(sp) + 3bc06ad0: 6de2 ld s11,24(sp) + 3bc06ad2: 6109 addi sp,sp,128 + 3bc06ad4: 8082 ret + 3bc06ad6: 557d li a0,-1 + 3bc06ad8: d265 beqz a2,3bc06ab8 + 3bc06ada: 87c6 mv a5,a7 + 3bc06adc: 882e mv a6,a1 + 3bc06ade: 4f3d li t5,15 + 3bc06ae0: 4f9d li t6,7 + 3bc06ae2: ff4e0293 addi t0,t3,-12 + 3bc06ae6: 4a41 li s4,16 + 3bc06ae8: ff9e0e93 addi t4,t3,-7 + 3bc06aec: ffbe0a93 addi s5,t3,-5 + 3bc06af0: 00004b17 auipc s6,0x4 + 3bc06af4: 6a8b0b13 addi s6,s6,1704 # 3bc0b198 + 3bc06af8: 00004b97 auipc s7,0x4 + 3bc06afc: 680b8b93 addi s7,s7,1664 # 3bc0b178 + 3bc06b00: ffc30c13 addi s8,t1,-4 + 3bc06b04: 0ff00393 li t2,255 + 3bc06b08: ff830c93 addi s9,t1,-8 + 3bc06b0c: ff130493 addi s1,t1,-15 + 3bc06b10: 5d7d li s10,-1 + 3bc06b12: 9817c68b lbuia a3,(a5),1,0 + 3bc06b16: 0046d713 srli a4,a3,0x4 + 3bc06b1a: 0046d61b srliw a2,a3,0x4 + 3bc06b1e: 05e70b63 beq a4,t5,3bc06b74 + 3bc06b22: 0109b533 sltu a0,s3,a6 + 3bc06b26: 00154513 xori a0,a0,1 + 3bc06b2a: 0ff57513 andi a0,a0,255 + 3bc06b2e: 00c80433 add s0,a6,a2 + 3bc06b32: 00c78733 add a4,a5,a2 + 3bc06b36: c53d beqz a0,3bc06ba4 + 3bc06b38: 0727f663 bgeu a5,s2,3bc06ba4 + 3bc06b3c: 6390 ld a2,0(a5) + 3bc06b3e: 8abd andi a3,a3,15 + 3bc06b40: 00c83023 sd a2,0(a6) + 3bc06b44: 679c ld a5,8(a5) + 3bc06b46: 00f83423 sd a5,8(a6) + 3bc06b4a: 87ba mv a5,a4 + 3bc06b4c: b827c60b lhuia a2,(a5),2,0 + 3bc06b50: 40c40733 sub a4,s0,a2 + 3bc06b54: 0be68363 beq a3,t5,3bc06bfa + 3bc06b58: 0ccff163 bgeu t6,a2,3bc06c1a + 3bc06b5c: 6310 ld a2,0(a4) + 3bc06b5e: 0691 addi a3,a3,4 + 3bc06b60: 00d40833 add a6,s0,a3 + 3bc06b64: e010 sd a2,0(s0) + 3bc06b66: 6710 ld a2,8(a4) + 3bc06b68: e410 sd a2,8(s0) + 3bc06b6a: 01075703 lhu a4,16(a4) # 1000010 <__BSS_SIZE__+0xffa400> + 3bc06b6e: 00e41823 sh a4,16(s0) + 3bc06b72: b745 j 3bc06b12 + 3bc06b74: 0497fc63 bgeu a5,s1,3bc06bcc + 3bc06b78: 4601 li a2,0 + 3bc06b7a: 9817c50b lbuia a0,(a5),1,0 + 3bc06b7e: 9e29 addw a2,a2,a0 + 3bc06b80: 0497f963 bgeu a5,s1,3bc06bd2 + 3bc06b84: fe750be3 beq a0,t2,3bc06b7a + 3bc06b88: 4701 li a4,0 + 3bc06b8a: 7c06360b extu a2,a2,31,0 + 3bc06b8e: 063d addi a2,a2,15 + 3bc06b90: 13a70a63 beq a4,s10,3bc06cc4 + 3bc06b94: 01060733 add a4,a2,a6 + 3bc06b98: 13076663 bltu a4,a6,3bc06cc4 + 3bc06b9c: 00f60733 add a4,a2,a5 + 3bc06ba0: 12f76263 bltu a4,a5,3bc06cc4 + 3bc06ba4: 00c80433 add s0,a6,a2 + 3bc06ba8: 00c78533 add a0,a5,a2 + 3bc06bac: 0082e463 bltu t0,s0,3bc06bb4 + 3bc06bb0: 02acf363 bgeu s9,a0,3bc06bd6 + 3bc06bb4: 10a31863 bne t1,a0,3bc06cc4 + 3bc06bb8: 108e6663 bltu t3,s0,3bc06cc4 + 3bc06bbc: 84ae mv s1,a1 + 3bc06bbe: 8542 mv a0,a6 + 3bc06bc0: 85be mv a1,a5 + 3bc06bc2: f0bf90ef jal ra,3bc00acc + 3bc06bc6: 4094053b subw a0,s0,s1 + 3bc06bca: b5fd j 3bc06ab8 + 3bc06bcc: 577d li a4,-1 + 3bc06bce: 4601 li a2,0 + 3bc06bd0: bf6d j 3bc06b8a + 3bc06bd2: 5779 li a4,-2 + 3bc06bd4: bf5d j 3bc06b8a + 3bc06bd6: 4701 li a4,0 + 3bc06bd8: 60e7c60b lrd a2,a5,a4,0 + 3bc06bdc: 60e8560b srd a2,a6,a4,0 + 3bc06be0: 0721 addi a4,a4,8 + 3bc06be2: 00e80633 add a2,a6,a4 + 3bc06be6: fe8669e3 bltu a2,s0,3bc06bd8 + 3bc06bea: 87aa mv a5,a0 + 3bc06bec: b827c60b lhuia a2,(a5),2,0 + 3bc06bf0: 8abd andi a3,a3,15 + 3bc06bf2: 40c40733 sub a4,s0,a2 + 3bc06bf6: 03e69263 bne a3,t5,3bc06c1a + 3bc06bfa: 4681 li a3,0 + 3bc06bfc: 9817c80b lbuia a6,(a5),1,0 + 3bc06c00: 00d806bb addw a3,a6,a3 + 3bc06c04: 0d87f063 bgeu a5,s8,3bc06cc4 + 3bc06c08: fe780ae3 beq a6,t2,3bc06bfc + 3bc06c0c: 7c06b68b extu a3,a3,31,0 + 3bc06c10: 06bd addi a3,a3,15 + 3bc06c12: 00868533 add a0,a3,s0 + 3bc06c16: 0a856763 bltu a0,s0,3bc06cc4 + 3bc06c1a: 6522 ld a0,8(sp) + 3bc06c1c: 0691 addi a3,a3,4 + 3bc06c1e: 0aa76363 bltu a4,a0,3bc06cc4 + 3bc06c22: 00d40833 add a6,s0,a3 + 3bc06c26: 06cfe463 bltu t6,a2,3bc06c8e + 3bc06c2a: 00042023 sw zero,0(s0) + 3bc06c2e: 00074503 lbu a0,0(a4) + 3bc06c32: 00a40023 sb a0,0(s0) + 3bc06c36: 00174503 lbu a0,1(a4) + 3bc06c3a: 00a400a3 sb a0,1(s0) + 3bc06c3e: 00274503 lbu a0,2(a4) + 3bc06c42: 00a40123 sb a0,2(s0) + 3bc06c46: 00374503 lbu a0,3(a4) + 3bc06c4a: 00a401a3 sb a0,3(s0) + 3bc06c4e: c4cb450b lrwu a0,s6,a2,2 + 3bc06c52: 00a70db3 add s11,a4,a0 + 3bc06c56: 40a7470b lrw a4,a4,a0,0 + 3bc06c5a: c058 sw a4,4(s0) + 3bc06c5c: 44cbc70b lrw a4,s7,a2,2 + 3bc06c60: 40ed8733 sub a4,s11,a4 + 3bc06c64: 0502f363 bgeu t0,a6,3bc06caa + 3bc06c68: 050aee63 bltu s5,a6,3bc06cc4 + 3bc06c6c: 0421 addi s0,s0,8 + 3bc06c6e: 01d47e63 bgeu s0,t4,3bc06c8a + 3bc06c72: 863a mv a2,a4 + 3bc06c74: 86a2 mv a3,s0 + 3bc06c76: 7886450b ldia a0,(a2),8,0 + 3bc06c7a: 7886d50b sdia a0,(a3),8,0 + 3bc06c7e: ffd6ece3 bltu a3,t4,3bc06c76 + 3bc06c82: 408e8433 sub s0,t4,s0 + 3bc06c86: 9722 add a4,a4,s0 + 3bc06c88: 8476 mv s0,t4 + 3bc06c8a: 4681 li a3,0 + 3bc06c8c: a811 j 3bc06ca0 + 3bc06c8e: 7887460b ldia a2,(a4),8,0 + 3bc06c92: e010 sd a2,0(s0) + 3bc06c94: bfc1 j 3bc06c64 + 3bc06c96: 80d7460b lrbu a2,a4,a3,0 + 3bc06c9a: 00d4560b srb a2,s0,a3,0 + 3bc06c9e: 0685 addi a3,a3,1 + 3bc06ca0: 00d40633 add a2,s0,a3 + 3bc06ca4: ff0669e3 bltu a2,a6,3bc06c96 + 3bc06ca8: b5ad j 3bc06b12 + 3bc06caa: 6310 ld a2,0(a4) + 3bc06cac: e410 sd a2,8(s0) + 3bc06cae: e6da72e3 bgeu s4,a3,3bc06b12 + 3bc06cb2: 0441 addi s0,s0,16 + 3bc06cb4: 0721 addi a4,a4,8 + 3bc06cb6: 7887468b ldia a3,(a4),8,0 + 3bc06cba: 7884568b sdia a3,(s0),8,0 + 3bc06cbe: ff046ce3 bltu s0,a6,3bc06cb6 + 3bc06cc2: bd81 j 3bc06b12 + 3bc06cc4: 41178533 sub a0,a5,a7 + 3bc06cc8: fff54513 not a0,a0 + 3bc06ccc: 2501 sext.w a0,a0 + 3bc06cce: b3ed j 3bc06ab8 + 3bc06cd0: 557d li a0,-1 + 3bc06cd2: b3dd j 3bc06ab8 + +000000003bc06cd4 : + 3bc06cd4: 30050963 beqz a0,3bc06fe6 + 3bc06cd8: 7135 addi sp,sp,-160 + 3bc06cda: e526 sd s1,136(sp) + 3bc06cdc: fcce sd s3,120(sp) + 3bc06cde: f0da sd s6,96(sp) + 3bc06ce0: ecde sd s7,88(sp) + 3bc06ce2: e8e2 sd s8,80(sp) + 3bc06ce4: e0ea sd s10,64(sp) + 3bc06ce6: ed06 sd ra,152(sp) + 3bc06ce8: e922 sd s0,144(sp) + 3bc06cea: e14a sd s2,128(sp) + 3bc06cec: f8d2 sd s4,112(sp) + 3bc06cee: f4d6 sd s5,104(sp) + 3bc06cf0: e4e6 sd s9,72(sp) + 3bc06cf2: fc6e sd s11,56(sp) + 3bc06cf4: 8b2a mv s6,a0 + 3bc06cf6: 8d2e mv s10,a1 + 3bc06cf8: 84ba mv s1,a4 + 3bc06cfa: 89be mv s3,a5 + 3bc06cfc: 00c50bb3 add s7,a0,a2 + 3bc06d00: 00d58c33 add s8,a1,a3 + 3bc06d04: c319 beqz a4,3bc06d0a + 3bc06d06: 00f704b3 add s1,a4,a5 + 3bc06d0a: ff0b8793 addi a5,s7,-16 + 3bc06d0e: e03e sd a5,0(sp) + 3bc06d10: fe0c0793 addi a5,s8,-32 + 3bc06d14: e43e sd a5,8(sp) + 3bc06d16: ea95 bnez a3,3bc06d4a + 3bc06d18: 4785 li a5,1 + 3bc06d1a: 557d li a0,-1 + 3bc06d1c: 00f61863 bne a2,a5,3bc06d2c + 3bc06d20: 000b4503 lbu a0,0(s6) + 3bc06d24: 00a03533 snez a0,a0 + 3bc06d28: 0005250b ext a0,a0,0,0 + 3bc06d2c: 60ea ld ra,152(sp) + 3bc06d2e: 644a ld s0,144(sp) + 3bc06d30: 64aa ld s1,136(sp) + 3bc06d32: 690a ld s2,128(sp) + 3bc06d34: 79e6 ld s3,120(sp) + 3bc06d36: 7a46 ld s4,112(sp) + 3bc06d38: 7aa6 ld s5,104(sp) + 3bc06d3a: 7b06 ld s6,96(sp) + 3bc06d3c: 6be6 ld s7,88(sp) + 3bc06d3e: 6c46 ld s8,80(sp) + 3bc06d40: 6ca6 ld s9,72(sp) + 3bc06d42: 6d06 ld s10,64(sp) + 3bc06d44: 7de2 ld s11,56(sp) + 3bc06d46: 610d addi sp,sp,160 + 3bc06d48: 8082 ret + 3bc06d4a: 557d li a0,-1 + 3bc06d4c: d265 beqz a2,3bc06d2c + 3bc06d4e: ffcb8793 addi a5,s7,-4 + 3bc06d52: e83e sd a5,16(sp) + 3bc06d54: ff8b8793 addi a5,s7,-8 + 3bc06d58: 845a mv s0,s6 + 3bc06d5a: 8cea mv s9,s10 + 3bc06d5c: ff4c0a13 addi s4,s8,-12 + 3bc06d60: ff9c0913 addi s2,s8,-7 + 3bc06d64: ffbc0a93 addi s5,s8,-5 + 3bc06d68: ec3e sd a5,24(sp) + 3bc06d6a: 9814468b lbuia a3,(s0),1,0 + 3bc06d6e: 4ebd li t4,15 + 3bc06d70: 0046d793 srli a5,a3,0x4 + 3bc06d74: 0046d61b srliw a2,a3,0x4 + 3bc06d78: 07d78363 beq a5,t4,3bc06dde + 3bc06d7c: 67a2 ld a5,8(sp) + 3bc06d7e: 00cc8db3 add s11,s9,a2 + 3bc06d82: 00c40533 add a0,s0,a2 + 3bc06d86: 0197b5b3 sltu a1,a5,s9 + 3bc06d8a: 0015c593 xori a1,a1,1 + 3bc06d8e: 0ff5f593 andi a1,a1,255 + 3bc06d92: c5c1 beqz a1,3bc06e1a + 3bc06d94: 6782 ld a5,0(sp) + 3bc06d96: 08f47263 bgeu s0,a5,3bc06e1a + 3bc06d9a: 6010 ld a2,0(s0) + 3bc06d9c: 8abd andi a3,a3,15 + 3bc06d9e: 00ccb023 sd a2,0(s9) + 3bc06da2: 6410 ld a2,8(s0) + 3bc06da4: 842a mv s0,a0 + 3bc06da6: 00ccb423 sd a2,8(s9) + 3bc06daa: b824458b lhuia a1,(s0),2,0 + 3bc06dae: 8636 mv a2,a3 + 3bc06db0: 40bd8533 sub a0,s11,a1 + 3bc06db4: 0dd68063 beq a3,t4,3bc06e74 + 3bc06db8: 471d li a4,7 + 3bc06dba: 0eb77063 bgeu a4,a1,3bc06e9a + 3bc06dbe: 0da56e63 bltu a0,s10,3bc06e9a + 3bc06dc2: 6118 ld a4,0(a0) + 3bc06dc4: 0691 addi a3,a3,4 + 3bc06dc6: 00dd8cb3 add s9,s11,a3 + 3bc06dca: 00edb023 sd a4,0(s11) + 3bc06dce: 6518 ld a4,8(a0) + 3bc06dd0: 00edb423 sd a4,8(s11) + 3bc06dd4: 01055703 lhu a4,16(a0) + 3bc06dd8: 00ed9823 sh a4,16(s11) + 3bc06ddc: b779 j 3bc06d6a + 3bc06dde: ff1b8793 addi a5,s7,-15 + 3bc06de2: 06f47063 bgeu s0,a5,3bc06e42 + 3bc06de6: 4601 li a2,0 + 3bc06de8: 0ff00513 li a0,255 + 3bc06dec: 98144e8b lbuia t4,(s0),1,0 + 3bc06df0: 00ce863b addw a2,t4,a2 + 3bc06df4: 04f47a63 bgeu s0,a5,3bc06e48 + 3bc06df8: feae8ae3 beq t4,a0,3bc06dec + 3bc06dfc: 4781 li a5,0 + 3bc06dfe: 7c06360b extu a2,a2,31,0 + 3bc06e02: 55fd li a1,-1 + 3bc06e04: 063d addi a2,a2,15 + 3bc06e06: 1cb78a63 beq a5,a1,3bc06fda + 3bc06e0a: 019607b3 add a5,a2,s9 + 3bc06e0e: 1d97e663 bltu a5,s9,3bc06fda + 3bc06e12: 008607b3 add a5,a2,s0 + 3bc06e16: 1c87e263 bltu a5,s0,3bc06fda + 3bc06e1a: 00cc8db3 add s11,s9,a2 + 3bc06e1e: 00c405b3 add a1,s0,a2 + 3bc06e22: 01ba6563 bltu s4,s11,3bc06e2c + 3bc06e26: 67e2 ld a5,24(sp) + 3bc06e28: 02b7f263 bgeu a5,a1,3bc06e4c + 3bc06e2c: 1abb9763 bne s7,a1,3bc06fda + 3bc06e30: 1bbc6563 bltu s8,s11,3bc06fda + 3bc06e34: 85a2 mv a1,s0 + 3bc06e36: 8566 mv a0,s9 + 3bc06e38: c95f90ef jal ra,3bc00acc + 3bc06e3c: 41ad853b subw a0,s11,s10 + 3bc06e40: b5f5 j 3bc06d2c + 3bc06e42: 57fd li a5,-1 + 3bc06e44: 4601 li a2,0 + 3bc06e46: bf65 j 3bc06dfe + 3bc06e48: 57f9 li a5,-2 + 3bc06e4a: bf55 j 3bc06dfe + 3bc06e4c: 4601 li a2,0 + 3bc06e4e: 60c4450b lrd a0,s0,a2,0 + 3bc06e52: 60ccd50b srd a0,s9,a2,0 + 3bc06e56: 0621 addi a2,a2,8 + 3bc06e58: 00cc8533 add a0,s9,a2 + 3bc06e5c: ffb569e3 bltu a0,s11,3bc06e4e + 3bc06e60: 842e mv s0,a1 + 3bc06e62: b824458b lhuia a1,(s0),2,0 + 3bc06e66: 00f6f613 andi a2,a3,15 + 3bc06e6a: 473d li a4,15 + 3bc06e6c: 40bd8533 sub a0,s11,a1 + 3bc06e70: 02e61563 bne a2,a4,3bc06e9a + 3bc06e74: 4601 li a2,0 + 3bc06e76: 0ff00693 li a3,255 + 3bc06e7a: 98144e8b lbuia t4,(s0),1,0 + 3bc06e7e: 67c2 ld a5,16(sp) + 3bc06e80: 00ce863b addw a2,t4,a2 + 3bc06e84: 14f47b63 bgeu s0,a5,3bc06fda + 3bc06e88: fede89e3 beq t4,a3,3bc06e7a + 3bc06e8c: 7c06360b extu a2,a2,31,0 + 3bc06e90: 063d addi a2,a2,15 + 3bc06e92: 01b60733 add a4,a2,s11 + 3bc06e96: 15b76263 bltu a4,s11,3bc06fda + 3bc06e9a: 6741 lui a4,0x10 + 3bc06e9c: 0611 addi a2,a2,4 + 3bc06e9e: 00e9f663 bgeu s3,a4,3bc06eaa + 3bc06ea2: 01350733 add a4,a0,s3 + 3bc06ea6: 13a76a63 bltu a4,s10,3bc06fda + 3bc06eaa: 00cd8cb3 add s9,s11,a2 + 3bc06eae: 07a57663 bgeu a0,s10,3bc06f1a + 3bc06eb2: 139ae463 bltu s5,s9,3bc06fda + 3bc06eb6: 40ad06b3 sub a3,s10,a0 + 3bc06eba: 40d485b3 sub a1,s1,a3 + 3bc06ebe: 00c6e663 bltu a3,a2,3bc06eca + 3bc06ec2: 856e mv a0,s11 + 3bc06ec4: c09f90ef jal ra,3bc00acc + 3bc06ec8: b54d j 3bc06d6a + 3bc06eca: 40d60eb3 sub t4,a2,a3 + 3bc06ece: 856e mv a0,s11 + 3bc06ed0: 8636 mv a2,a3 + 3bc06ed2: f476 sd t4,40(sp) + 3bc06ed4: f036 sd a3,32(sp) + 3bc06ed6: b97f90ef jal ra,3bc00a6c + 3bc06eda: 7682 ld a3,32(sp) + 3bc06edc: 7ea2 ld t4,40(sp) + 3bc06ede: 00dd8533 add a0,s11,a3 + 3bc06ee2: 41a507b3 sub a5,a0,s10 + 3bc06ee6: 03d7f563 bgeu a5,t4,3bc06f10 + 3bc06eea: 4781 li a5,0 + 3bc06eec: a031 j 3bc06ef8 + 3bc06eee: 80fd468b lrbu a3,s10,a5,0 + 3bc06ef2: 00f5568b srb a3,a0,a5,0 + 3bc06ef6: 0785 addi a5,a5,1 + 3bc06ef8: 00f506b3 add a3,a0,a5 + 3bc06efc: ff96e9e3 bltu a3,s9,3bc06eee + 3bc06f00: 00acb733 sltu a4,s9,a0 + 3bc06f04: 8676 mv a2,t4 + 3bc06f06: 42e0160b mvnez a2,zero,a4 + 3bc06f0a: 00c50cb3 add s9,a0,a2 + 3bc06f0e: bdb1 j 3bc06d6a + 3bc06f10: 8676 mv a2,t4 + 3bc06f12: 85ea mv a1,s10 + 3bc06f14: b59f90ef jal ra,3bc00a6c + 3bc06f18: bd89 j 3bc06d6a + 3bc06f1a: 469d li a3,7 + 3bc06f1c: 06b6ee63 bltu a3,a1,3bc06f98 + 3bc06f20: 000da023 sw zero,0(s11) + 3bc06f24: 00054683 lbu a3,0(a0) + 3bc06f28: 00004797 auipc a5,0x4 + 3bc06f2c: 27078793 addi a5,a5,624 # 3bc0b198 + 3bc06f30: c4b7ce8b lrwu t4,a5,a1,2 + 3bc06f34: 00dd8023 sb a3,0(s11) + 3bc06f38: 00154683 lbu a3,1(a0) + 3bc06f3c: 00004797 auipc a5,0x4 + 3bc06f40: 23c78793 addi a5,a5,572 # 3bc0b178 + 3bc06f44: 01d50f33 add t5,a0,t4 + 3bc06f48: 00dd80a3 sb a3,1(s11) + 3bc06f4c: 00254683 lbu a3,2(a0) + 3bc06f50: 00dd8123 sb a3,2(s11) + 3bc06f54: 00354683 lbu a3,3(a0) + 3bc06f58: 00dd81a3 sb a3,3(s11) + 3bc06f5c: 41d5468b lrw a3,a0,t4,0 + 3bc06f60: 00dda223 sw a3,4(s11) + 3bc06f64: 44b7c68b lrw a3,a5,a1,2 + 3bc06f68: 40df06b3 sub a3,t5,a3 + 3bc06f6c: 059a7663 bgeu s4,s9,3bc06fb8 + 3bc06f70: 079ae563 bltu s5,s9,3bc06fda + 3bc06f74: 008d8513 addi a0,s11,8 + 3bc06f78: 01257e63 bgeu a0,s2,3bc06f94 + 3bc06f7c: 8636 mv a2,a3 + 3bc06f7e: 87aa mv a5,a0 + 3bc06f80: 7886458b ldia a1,(a2),8,0 + 3bc06f84: 7887d58b sdia a1,(a5),8,0 + 3bc06f88: ff27ece3 bltu a5,s2,3bc06f80 + 3bc06f8c: 40a907b3 sub a5,s2,a0 + 3bc06f90: 96be add a3,a3,a5 + 3bc06f92: 854a mv a0,s2 + 3bc06f94: 4781 li a5,0 + 3bc06f96: a821 j 3bc06fae + 3bc06f98: 86aa mv a3,a0 + 3bc06f9a: 7886c58b ldia a1,(a3),8,0 + 3bc06f9e: 00bdb023 sd a1,0(s11) + 3bc06fa2: b7e9 j 3bc06f6c + 3bc06fa4: 80f6c60b lrbu a2,a3,a5,0 + 3bc06fa8: 00f5560b srb a2,a0,a5,0 + 3bc06fac: 0785 addi a5,a5,1 + 3bc06fae: 00f50633 add a2,a0,a5 + 3bc06fb2: ff9669e3 bltu a2,s9,3bc06fa4 + 3bc06fb6: bb55 j 3bc06d6a + 3bc06fb8: 628c ld a1,0(a3) + 3bc06fba: 00bdb423 sd a1,8(s11) + 3bc06fbe: 45c1 li a1,16 + 3bc06fc0: dac5f5e3 bgeu a1,a2,3bc06d6a + 3bc06fc4: 010d8513 addi a0,s11,16 + 3bc06fc8: 00868613 addi a2,a3,8 + 3bc06fcc: 7886478b ldia a5,(a2),8,0 + 3bc06fd0: 7885578b sdia a5,(a0),8,0 + 3bc06fd4: ff956ce3 bltu a0,s9,3bc06fcc + 3bc06fd8: bb49 j 3bc06d6a + 3bc06fda: 41640533 sub a0,s0,s6 + 3bc06fde: fff54513 not a0,a0 + 3bc06fe2: 2501 sext.w a0,a0 + 3bc06fe4: b3a1 j 3bc06d2c + 3bc06fe6: 557d li a0,-1 + 3bc06fe8: 8082 ret + +000000003bc06fea : + 3bc06fea: 883e mv a6,a5 + 3bc06fec: e399 bnez a5,3bc06ff2 + 3bc06fee: 80fff06f j 3bc067fc + 3bc06ff2: 00f708b3 add a7,a4,a5 + 3bc06ff6: 01159b63 bne a1,a7,3bc0700c + 3bc06ffa: 67c1 lui a5,0x10 + 3bc06ffc: 17f9 addi a5,a5,-2 + 3bc06ffe: 0107d463 bge a5,a6,3bc07006 + 3bc07002: a69ff06f j 3bc06a6a + 3bc07006: 8742 mv a4,a6 + 3bc07008: c6eff06f j 3bc06476 + 3bc0700c: cc9ff06f j 3bc06cd4 + +000000003bc07010 : + 3bc07010: fed53513 sltiu a0,a0,-19 + 3bc07014: 00154513 xori a0,a0,1 + 3bc07018: 2501 sext.w a0,a0 + 3bc0701a: 8082 ret + +000000003bc0701c : + 3bc0701c: e111 bnez a0,3bc07020 + 3bc0701e: 4511 li a0,4 + 3bc07020: ffc5069b addiw a3,a0,-4 + 3bc07024: 470d li a4,3 + 3bc07026: 5579 li a0,-2 + 3bc07028: 00d76863 bltu a4,a3,3bc07038 + 3bc0702c: 00004717 auipc a4,0x4 + 3bc07030: 12c70713 addi a4,a4,300 # 3bc0b158 + 3bc07034: 76d7450b lurd a0,a4,a3,3 + 3bc07038: 8082 ret + +000000003bc0703a : + 3bc0703a: 715d addi sp,sp,-80 + 3bc0703c: f84a sd s2,48(sp) + 3bc0703e: e486 sd ra,72(sp) + 3bc07040: e0a2 sd s0,64(sp) + 3bc07042: fc26 sd s1,56(sp) + 3bc07044: f44e sd s3,40(sp) + 3bc07046: f052 sd s4,32(sp) + 3bc07048: ec56 sd s5,24(sp) + 3bc0704a: e85a sd s6,16(sp) + 3bc0704c: e45e sd s7,8(sp) + 3bc0704e: e062 sd s8,0(sp) + 3bc07050: 4799 li a5,6 + 3bc07052: 5951 li s2,-12 + 3bc07054: 04c7f663 bgeu a5,a2,3bc070a0 + 3bc07058: 84ae mv s1,a1 + 3bc0705a: 8932 mv s2,a2 + 3bc0705c: 4581 li a1,0 + 3bc0705e: 02000613 li a2,32 + 3bc07062: 842a mv s0,a0 + 3bc07064: 9aff90ef jal ra,3bc00a12 + 3bc07068: 8526 mv a0,s1 + 3bc0706a: be8ff0ef jal ra,3bc06452 + 3bc0706e: 2501 sext.w a0,a0 + 3bc07070: 184d37b7 lui a5,0x184d3 + 3bc07074: ff057713 andi a4,a0,-16 + 3bc07078: a5078793 addi a5,a5,-1456 # 184d2a50 + 3bc0707c: 02f71f63 bne a4,a5,3bc070ba + 3bc07080: 4785 li a5,1 + 3bc07082: c45c sw a5,12(s0) + 3bc07084: 0e840793 addi a5,s0,232 + 3bc07088: 00f49963 bne s1,a5,3bc0709a + 3bc0708c: 47a1 li a5,8 + 3bc0708e: e83c sd a5,80(s0) + 3bc07090: 05243423 sd s2,72(s0) + 3bc07094: 47b5 li a5,13 + 3bc07096: d05c sw a5,36(s0) + 3bc07098: a021 j 3bc070a0 + 3bc0709a: 47b1 li a5,12 + 3bc0709c: d05c sw a5,36(s0) + 3bc0709e: 4911 li s2,4 + 3bc070a0: 60a6 ld ra,72(sp) + 3bc070a2: 6406 ld s0,64(sp) + 3bc070a4: 74e2 ld s1,56(sp) + 3bc070a6: 79a2 ld s3,40(sp) + 3bc070a8: 7a02 ld s4,32(sp) + 3bc070aa: 6ae2 ld s5,24(sp) + 3bc070ac: 6b42 ld s6,16(sp) + 3bc070ae: 6ba2 ld s7,8(sp) + 3bc070b0: 6c02 ld s8,0(sp) + 3bc070b2: 854a mv a0,s2 + 3bc070b4: 7942 ld s2,48(sp) + 3bc070b6: 6161 addi sp,sp,80 + 3bc070b8: 8082 ret + 3bc070ba: 184d27b7 lui a5,0x184d2 + 3bc070be: 20478793 addi a5,a5,516 # 184d2204 + 3bc070c2: 10f51863 bne a0,a5,3bc071d2 + 3bc070c6: 00042623 sw zero,12(s0) + 3bc070ca: 0044c783 lbu a5,4(s1) + 3bc070ce: 0417b70b extu a4,a5,1,1 + 3bc070d2: 00078b1b sext.w s6,a5 + 3bc070d6: 0067d693 srli a3,a5,0x6 + 3bc070da: 0e071e63 bnez a4,3bc071d6 + 3bc070de: 4705 li a4,1 + 3bc070e0: 0ee69d63 bne a3,a4,3bc071da + 3bc070e4: 0c3b3c0b extu s8,s6,3,3 + 3bc070e8: 49bd li s3,15 + 3bc070ea: 000c1363 bnez s8,3bc070f0 + 3bc070ee: 499d li s3,7 + 3bc070f0: 0017fa13 andi s4,a5,1 + 3bc070f4: 0549998b addsl s3,s3,s4,2 + 3bc070f8: 03397063 bgeu s2,s3,3bc07118 + 3bc070fc: 0e840513 addi a0,s0,232 + 3bc07100: 00a48663 beq s1,a0,3bc0710c + 3bc07104: 864a mv a2,s2 + 3bc07106: 85a6 mv a1,s1 + 3bc07108: 965f90ef jal ra,3bc00a6c + 3bc0710c: 05243423 sd s2,72(s0) + 3bc07110: 05343823 sd s3,80(s0) + 3bc07114: 4785 li a5,1 + 3bc07116: b741 j 3bc07096 + 3bc07118: 0054c783 lbu a5,5(s1) + 3bc0711c: 5961 li s2,-8 + 3bc0711e: fc77b70b extu a4,a5,63,7 + 3bc07122: 8c47bb8b extu s7,a5,35,4 + 3bc07126: ff2d bnez a4,3bc070a0 + 3bc07128: 004bf713 andi a4,s7,4 + 3bc0712c: 5979 li s2,-2 + 3bc0712e: db2d beqz a4,3bc070a0 + 3bc07130: 8bbd andi a5,a5,15 + 3bc07132: 5961 li s2,-8 + 3bc07134: f7b5 bnez a5,3bc070a0 + 3bc07136: ffb98a93 addi s5,s3,-5 + 3bc0713a: 4601 li a2,0 + 3bc0713c: 85d6 mv a1,s5 + 3bc0713e: 00448513 addi a0,s1,4 + 3bc07142: 425000ef jal ra,3bc07d66 + 3bc07146: 013487b3 add a5,s1,s3 + 3bc0714a: fff7c783 lbu a5,-1(a5) + 3bc0714e: 3c85350b extu a0,a0,15,8 + 3bc07152: 593d li s2,-17 + 3bc07154: f4a796e3 bne a5,a0,3bc070a0 + 3bc07158: 145b378b extu a5,s6,5,5 + 3bc0715c: 007bf513 andi a0,s7,7 + 3bc07160: c05c sw a5,4(s0) + 3bc07162: 104b378b extu a5,s6,4,4 + 3bc07166: 082b3b0b extu s6,s6,2,2 + 3bc0716a: cc5c sw a5,28(s0) + 3bc0716c: 01642423 sw s6,8(s0) + 3bc07170: c008 sw a0,0(s0) + 3bc07172: eabff0ef jal ra,3bc0701c + 3bc07176: f808 sd a0,48(s0) + 3bc07178: 040c0263 beqz s8,3bc071bc + 3bc0717c: 0074c783 lbu a5,7(s1) + 3bc07180: 0084c703 lbu a4,8(s1) + 3bc07184: 0064c683 lbu a3,6(s1) + 3bc07188: 07a2 slli a5,a5,0x8 + 3bc0718a: 0742 slli a4,a4,0x10 + 3bc0718c: 97ba add a5,a5,a4 + 3bc0718e: 0094c703 lbu a4,9(s1) + 3bc07192: 97b6 add a5,a5,a3 + 3bc07194: 0762 slli a4,a4,0x18 + 3bc07196: 97ba add a5,a5,a4 + 3bc07198: 00a4c703 lbu a4,10(s1) + 3bc0719c: 1702 slli a4,a4,0x20 + 3bc0719e: 97ba add a5,a5,a4 + 3bc071a0: 00b4c703 lbu a4,11(s1) + 3bc071a4: 1722 slli a4,a4,0x28 + 3bc071a6: 973e add a4,a4,a5 + 3bc071a8: 00c4c783 lbu a5,12(s1) + 3bc071ac: 17c2 slli a5,a5,0x30 + 3bc071ae: 973e add a4,a4,a5 + 3bc071b0: 00d4c783 lbu a5,13(s1) + 3bc071b4: 17e2 slli a5,a5,0x38 + 3bc071b6: 97ba add a5,a5,a4 + 3bc071b8: e81c sd a5,16(s0) + 3bc071ba: f41c sd a5,40(s0) + 3bc071bc: 000a0763 beqz s4,3bc071ca + 3bc071c0: 01548533 add a0,s1,s5 + 3bc071c4: a8eff0ef jal ra,3bc06452 + 3bc071c8: cc08 sw a0,24(s0) + 3bc071ca: 4789 li a5,2 + 3bc071cc: d05c sw a5,36(s0) + 3bc071ce: 894e mv s2,s3 + 3bc071d0: bdc1 j 3bc070a0 + 3bc071d2: 594d li s2,-13 + 3bc071d4: b5f1 j 3bc070a0 + 3bc071d6: 5961 li s2,-8 + 3bc071d8: b5e1 j 3bc070a0 + 3bc071da: 5969 li s2,-6 + 3bc071dc: b5d1 j 3bc070a0 + +000000003bc071de : + 3bc071de: 1101 addi sp,sp,-32 + 3bc071e0: e822 sd s0,16(sp) + 3bc071e2: e426 sd s1,8(sp) + 3bc071e4: 842a mv s0,a0 + 3bc071e6: 84ae mv s1,a1 + 3bc071e8: 4505 li a0,1 + 3bc071ea: 10000593 li a1,256 + 3bc071ee: ec06 sd ra,24(sp) + 3bc071f0: bf8fa0ef jal ra,3bc015e8 + 3bc071f4: e909 bnez a0,3bc07206 + 3bc071f6: 00043023 sd zero,0(s0) + 3bc071fa: 555d li a0,-9 + 3bc071fc: 60e2 ld ra,24(sp) + 3bc071fe: 6442 ld s0,16(sp) + 3bc07200: 64a2 ld s1,8(sp) + 3bc07202: 6105 addi sp,sp,32 + 3bc07204: 8082 ret + 3bc07206: d104 sw s1,32(a0) + 3bc07208: e008 sd a0,0(s0) + 3bc0720a: 4501 li a0,0 + 3bc0720c: bfc5 j 3bc071fc + +000000003bc0720e : + 3bc0720e: 7131 addi sp,sp,-192 + 3bc07210: ed4e sd s3,152(sp) + 3bc07212: 00073983 ld s3,0(a4) + 3bc07216: e556 sd s5,136(sp) + 3bc07218: e15a sd s6,128(sp) + 3bc0721a: f0ea sd s10,96(sp) + 3bc0721c: ecee sd s11,88(sp) + 3bc0721e: fd06 sd ra,184(sp) + 3bc07220: f922 sd s0,176(sp) + 3bc07222: f526 sd s1,168(sp) + 3bc07224: f14a sd s2,160(sp) + 3bc07226: e952 sd s4,144(sp) + 3bc07228: fcde sd s7,120(sp) + 3bc0722a: f8e2 sd s8,112(sp) + 3bc0722c: f4e6 sd s9,104(sp) + 3bc0722e: fad1560b sdd a2,a3,(sp),1,4 + 3bc07232: e43e sd a5,8(sp) + 3bc07234: 8d2a mv s10,a0 + 3bc07236: 8aae mv s5,a1 + 3bc07238: 8dba mv s11,a4 + 3bc0723a: 99b6 add s3,s3,a3 + 3bc0723c: 4b01 li s6,0 + 3bc0723e: c581 beqz a1,3bc07246 + 3bc07240: 00063b03 ld s6,0(a2) + 3bc07244: 9b2e add s6,s6,a1 + 3bc07246: 0080 addi s0,sp,64 + 3bc07248: 4641 li a2,16 + 3bc0724a: 4581 li a1,0 + 3bc0724c: 8522 mv a0,s0 + 3bc0724e: fc4f90ef jal ra,3bc00a12 + 3bc07252: 67a2 ld a5,8(sp) + 3bc07254: 000db023 sd zero,0(s11) + 3bc07258: 6ce2 ld s9,24(sp) + 3bc0725a: 40f4178b mveqz a5,s0,a5 + 3bc0725e: e43e sd a5,8(sp) + 3bc07260: 67c2 ld a5,16(sp) + 3bc07262: 8956 mv s2,s5 + 3bc07264: 4485 li s1,1 + 3bc07266: 0007b023 sd zero,0(a5) + 3bc0726a: 0ecd0793 addi a5,s10,236 + 3bc0726e: f43e sd a5,40(sp) + 3bc07270: 0b8d0793 addi a5,s10,184 + 3bc07274: 4a05 li s4,1 + 3bc07276: 0e8d0b93 addi s7,s10,232 + 3bc0727a: 088d0c13 addi s8,s10,136 + 3bc0727e: f03e sd a5,32(sp) + 3bc07280: 080a1b63 bnez s4,3bc07316 + 3bc07284: 004d2783 lw a5,4(s10) + 3bc07288: ebbd bnez a5,3bc072fe + 3bc0728a: 060d3583 ld a1,96(s10) + 3bc0728e: 058d3503 ld a0,88(s10) + 3bc07292: 06a58663 beq a1,a0,3bc072fe + 3bc07296: c5a5 beqz a1,3bc072fe + 3bc07298: 67a2 ld a5,8(sp) + 3bc0729a: 439c lw a5,0(a5) + 3bc0729c: e3ad bnez a5,3bc072fe + 3bc0729e: 024d2703 lw a4,36(s10) + 3bc072a2: 479d li a5,7 + 3bc072a4: ffe7069b addiw a3,a4,-2 + 3bc072a8: 04d7eb63 bltu a5,a3,3bc072fe + 3bc072ac: 46a5 li a3,9 + 3bc072ae: 068d3783 ld a5,104(s10) + 3bc072b2: 6ed71c63 bne a4,a3,3bc079aa + 3bc072b6: 080d3683 ld a3,128(s10) + 3bc072ba: 070d3403 ld s0,112(s10) + 3bc072be: 078d3703 ld a4,120(s10) + 3bc072c2: 8f95 sub a5,a5,a3 + 3bc072c4: 66c1 lui a3,0x10 + 3bc072c6: 8c09 sub s0,s0,a0 + 3bc072c8: 4601 li a2,0 + 3bc072ca: 00e6ea63 bltu a3,a4,3bc072de + 3bc072ce: 40e68633 sub a2,a3,a4 + 3bc072d2: 00c43733 sltu a4,s0,a2 + 3bc072d6: 00174713 xori a4,a4,1 + 3bc072da: 40e4160b mveqz a2,s0,a4 + 3bc072de: 8f91 sub a5,a5,a2 + 3bc072e0: 40c40733 sub a4,s0,a2 + 3bc072e4: 95be add a1,a1,a5 + 3bc072e6: 953a add a0,a0,a4 + 3bc072e8: f84f90ef jal ra,3bc00a6c + 3bc072ec: 058d3783 ld a5,88(s10) + 3bc072f0: 06fd3023 sd a5,96(s10) + 3bc072f4: 080d3783 ld a5,128(s10) + 3bc072f8: 943e add s0,s0,a5 + 3bc072fa: 068d3423 sd s0,104(s10) + 3bc072fe: 67e2 ld a5,24(sp) + 3bc07300: 41590933 sub s2,s2,s5 + 3bc07304: 8526 mv a0,s1 + 3bc07306: 40fc88b3 sub a7,s9,a5 + 3bc0730a: 67c2 ld a5,16(sp) + 3bc0730c: 011db023 sd a7,0(s11) + 3bc07310: 0127b023 sd s2,0(a5) + 3bc07314: a055 j 3bc073b8 + 3bc07316: 024d2783 lw a5,36(s10) + 3bc0731a: 4739 li a4,14 + 3bc0731c: f6f762e3 bltu a4,a5,3bc07280 + 3bc07320: 024d6783 lwu a5,36(s10) + 3bc07324: 00004717 auipc a4,0x4 + 3bc07328: df470713 addi a4,a4,-524 # 3bc0b118 + 3bc0732c: 44f7478b lrw a5,a4,a5,2 + 3bc07330: 97ba add a5,a5,a4 + 3bc07332: 8782 jr a5 + 3bc07334: 41998633 sub a2,s3,s9 + 3bc07338: 47c9 li a5,18 + 3bc0733a: 00c7fd63 bgeu a5,a2,3bc07354 + 3bc0733e: 85e6 mv a1,s9 + 3bc07340: 856a mv a0,s10 + 3bc07342: cf9ff0ef jal ra,3bc0703a + 3bc07346: 57b1 li a5,-20 + 3bc07348: 06a7e863 bltu a5,a0,3bc073b8 + 3bc0734c: 00ac8433 add s0,s9,a0 + 3bc07350: 8ca2 mv s9,s0 + 3bc07352: b73d j 3bc07280 + 3bc07354: 040d3423 sd zero,72(s10) + 3bc07358: 673c8d63 beq s9,s3,3bc079d2 + 3bc0735c: 479d li a5,7 + 3bc0735e: 04fd3823 sd a5,80(s10) + 3bc07362: 4785 li a5,1 + 3bc07364: 02fd2223 sw a5,36(s10) + 3bc07368: 048d3503 ld a0,72(s10) + 3bc0736c: 050d3403 ld s0,80(s10) + 3bc07370: 41998633 sub a2,s3,s9 + 3bc07374: 85e6 mv a1,s9 + 3bc07376: 8c09 sub s0,s0,a0 + 3bc07378: 008637b3 sltu a5,a2,s0 + 3bc0737c: 0017c793 xori a5,a5,1 + 3bc07380: 40f6140b mveqz s0,a2,a5 + 3bc07384: 8622 mv a2,s0 + 3bc07386: 955e add a0,a0,s7 + 3bc07388: ee4f90ef jal ra,3bc00a6c + 3bc0738c: 048d3783 ld a5,72(s10) + 3bc07390: 050d3603 ld a2,80(s10) + 3bc07394: 97a2 add a5,a5,s0 + 3bc07396: 04fd3423 sd a5,72(s10) + 3bc0739a: 9466 add s0,s0,s9 + 3bc0739c: 00c7f763 bgeu a5,a2,3bc073aa + 3bc073a0: 0611 addi a2,a2,4 + 3bc073a2: 40f604b3 sub s1,a2,a5 + 3bc073a6: 4a01 li s4,0 + 3bc073a8: b765 j 3bc07350 + 3bc073aa: 85de mv a1,s7 + 3bc073ac: 856a mv a0,s10 + 3bc073ae: c8dff0ef jal ra,3bc0703a + 3bc073b2: 57b1 li a5,-20 + 3bc073b4: f8a7fee3 bgeu a5,a0,3bc07350 + 3bc073b8: 70ea ld ra,184(sp) + 3bc073ba: 744a ld s0,176(sp) + 3bc073bc: 74aa ld s1,168(sp) + 3bc073be: 790a ld s2,160(sp) + 3bc073c0: 69ea ld s3,152(sp) + 3bc073c2: 6a4a ld s4,144(sp) + 3bc073c4: 6aaa ld s5,136(sp) + 3bc073c6: 6b0a ld s6,128(sp) + 3bc073c8: 7be6 ld s7,120(sp) + 3bc073ca: 7c46 ld s8,112(sp) + 3bc073cc: 7ca6 ld s9,104(sp) + 3bc073ce: 7d06 ld s10,96(sp) + 3bc073d0: 6de6 ld s11,88(sp) + 3bc073d2: 6129 addi sp,sp,192 + 3bc073d4: 8082 ret + 3bc073d6: 008d2783 lw a5,8(s10) + 3bc073da: c789 beqz a5,3bc073e4 + 3bc073dc: 4581 li a1,0 + 3bc073de: 8562 mv a0,s8 + 3bc073e0: 34d000ef jal ra,3bc07f2c + 3bc073e4: 004d2403 lw s0,4(s10) + 3bc073e8: 030d3783 ld a5,48(s10) + 3bc073ec: 00143413 seqz s0,s0 + 3bc073f0: 0446 slli s0,s0,0x11 + 3bc073f2: 943e add s0,s0,a5 + 3bc073f4: 038d3783 ld a5,56(s10) + 3bc073f8: 0287fe63 bgeu a5,s0,3bc07434 + 3bc073fc: 040d3503 ld a0,64(s10) + 3bc07400: 020d3c23 sd zero,56(s10) + 3bc07404: a0cfa0ef jal ra,3bc01610 + 3bc07408: 030d3503 ld a0,48(s10) + 3bc0740c: 0511 addi a0,a0,4 + 3bc0740e: 9d4fa0ef jal ra,3bc015e2 + 3bc07412: 04ad3023 sd a0,64(s10) + 3bc07416: e119 bnez a0,3bc0741c + 3bc07418: 555d li a0,-9 + 3bc0741a: bf79 j 3bc073b8 + 3bc0741c: 058d3503 ld a0,88(s10) + 3bc07420: 9f0fa0ef jal ra,3bc01610 + 3bc07424: 8522 mv a0,s0 + 3bc07426: 9bcfa0ef jal ra,3bc015e2 + 3bc0742a: 04ad3c23 sd a0,88(s10) + 3bc0742e: d56d beqz a0,3bc07418 + 3bc07430: 028d3c23 sd s0,56(s10) + 3bc07434: 058d3783 ld a5,88(s10) + 3bc07438: 040d3423 sd zero,72(s10) + 3bc0743c: 040d3823 sd zero,80(s10) + 3bc07440: 06fd3823 sd a5,112(s10) + 3bc07444: 478d li a5,3 + 3bc07446: 080d3023 sd zero,128(s10) + 3bc0744a: 060d3c23 sd zero,120(s10) + 3bc0744e: 02fd2223 sw a5,36(s10) + 3bc07452: 419987b3 sub a5,s3,s9 + 3bc07456: 470d li a4,3 + 3bc07458: 00f77b63 bgeu a4,a5,3bc0746e + 3bc0745c: 024d2703 lw a4,36(s10) + 3bc07460: 4791 li a5,4 + 3bc07462: 004c8413 addi s0,s9,4 + 3bc07466: 04f71e63 bne a4,a5,3bc074c2 + 3bc0746a: 8ca2 mv s9,s0 + 3bc0746c: a031 j 3bc07478 + 3bc0746e: 4791 li a5,4 + 3bc07470: 040d3423 sd zero,72(s10) + 3bc07474: 02fd2223 sw a5,36(s10) + 3bc07478: 048d3683 ld a3,72(s10) + 3bc0747c: 4711 li a4,4 + 3bc0747e: 040d3503 ld a0,64(s10) + 3bc07482: 40d705b3 sub a1,a4,a3 + 3bc07486: 41998633 sub a2,s3,s9 + 3bc0748a: 00c5b7b3 sltu a5,a1,a2 + 3bc0748e: 0017c793 xori a5,a5,1 + 3bc07492: 40f5960b mveqz a2,a1,a5 + 3bc07496: 9536 add a0,a0,a3 + 3bc07498: 85e6 mv a1,s9 + 3bc0749a: f832 sd a2,48(sp) + 3bc0749c: dd0f90ef jal ra,3bc00a6c + 3bc074a0: 048d3783 ld a5,72(s10) + 3bc074a4: 7642 ld a2,48(sp) + 3bc074a6: 00cc8433 add s0,s9,a2 + 3bc074aa: 963e add a2,a2,a5 + 3bc074ac: 04cd3423 sd a2,72(s10) + 3bc074b0: 478d li a5,3 + 3bc074b2: 00c7e663 bltu a5,a2,3bc074be + 3bc074b6: 4711 li a4,4 + 3bc074b8: 40c704b3 sub s1,a4,a2 + 3bc074bc: b5ed j 3bc073a6 + 3bc074be: 040d3c83 ld s9,64(s10) + 3bc074c2: 8566 mv a0,s9 + 3bc074c4: f8ffe0ef jal ra,3bc06452 + 3bc074c8: 2501 sext.w a0,a0 + 3bc074ca: 47a9 li a5,10 + 3bc074cc: c50d beqz a0,3bc074f6 + 3bc074ce: 030d3683 ld a3,48(s10) + 3bc074d2: 7805378b extu a5,a0,30,0 + 3bc074d6: 7c07b70b extu a4,a5,31,0 + 3bc074da: 4ef6ee63 bltu a3,a5,3bc079d6 + 3bc074de: 01cd2783 lw a5,28(s10) + 3bc074e2: 00055d63 bgez a0,3bc074fc + 3bc074e6: 04ed3823 sd a4,80(s10) + 3bc074ea: c789 beqz a5,3bc074f4 + 3bc074ec: 7502 ld a0,32(sp) + 3bc074ee: 4581 li a1,0 + 3bc074f0: 23d000ef jal ra,3bc07f2c + 3bc074f4: 4795 li a5,5 + 3bc074f6: 02fd2223 sw a5,36(s10) + 3bc074fa: bd99 j 3bc07350 + 3bc074fc: 02079693 slli a3,a5,0x20 + 3bc07500: 01e6d793 srli a5,a3,0x1e + 3bc07504: 97ba add a5,a5,a4 + 3bc07506: 471d li a4,7 + 3bc07508: 04fd3823 sd a5,80(s10) + 3bc0750c: 02ed2223 sw a4,36(s10) + 3bc07510: 01690463 beq s2,s6,3bc07518 + 3bc07514: e3341ee3 bne s0,s3,3bc07350 + 3bc07518: 00478493 addi s1,a5,4 + 3bc0751c: b569 j 3bc073a6 + 3bc0751e: 4601 li a2,0 + 3bc07520: 06090e63 beqz s2,3bc0759c + 3bc07524: 41998733 sub a4,s3,s9 + 3bc07528: 412b0633 sub a2,s6,s2 + 3bc0752c: 00c737b3 sltu a5,a4,a2 + 3bc07530: 0017c793 xori a5,a5,1 + 3bc07534: 40f7160b mveqz a2,a4,a5 + 3bc07538: 050d3703 ld a4,80(s10) + 3bc0753c: 85e6 mv a1,s9 + 3bc0753e: 854a mv a0,s2 + 3bc07540: 00c737b3 sltu a5,a4,a2 + 3bc07544: 0017c793 xori a5,a5,1 + 3bc07548: 40f7160b mveqz a2,a4,a5 + 3bc0754c: f832 sd a2,48(sp) + 3bc0754e: d1ef90ef jal ra,3bc00a6c + 3bc07552: 01cd2783 lw a5,28(s10) + 3bc07556: 7642 ld a2,48(sp) + 3bc07558: c791 beqz a5,3bc07564 + 3bc0755a: 7502 ld a0,32(sp) + 3bc0755c: 85e6 mv a1,s9 + 3bc0755e: 225000ef jal ra,3bc07f82 + 3bc07562: 7642 ld a2,48(sp) + 3bc07564: 008d2783 lw a5,8(s10) + 3bc07568: c799 beqz a5,3bc07576 + 3bc0756a: 85e6 mv a1,s9 + 3bc0756c: 8562 mv a0,s8 + 3bc0756e: f832 sd a2,48(sp) + 3bc07570: 213000ef jal ra,3bc07f82 + 3bc07574: 7642 ld a2,48(sp) + 3bc07576: 010d3783 ld a5,16(s10) + 3bc0757a: c791 beqz a5,3bc07586 + 3bc0757c: 028d3783 ld a5,40(s10) + 3bc07580: 8f91 sub a5,a5,a2 + 3bc07582: 02fd3423 sd a5,40(s10) + 3bc07586: 004d2783 lw a5,4(s10) + 3bc0758a: eb89 bnez a5,3bc0759c + 3bc0758c: 4701 li a4,0 + 3bc0758e: 86d6 mv a3,s5 + 3bc07590: 85ca mv a1,s2 + 3bc07592: 856a mv a0,s10 + 3bc07594: f832 sd a2,48(sp) + 3bc07596: 956ff0ef jal ra,3bc066ec + 3bc0759a: 7642 ld a2,48(sp) + 3bc0759c: 050d3783 ld a5,80(s10) + 3bc075a0: 01cd2703 lw a4,28(s10) + 3bc075a4: 00cc8433 add s0,s9,a2 + 3bc075a8: 9932 add s2,s2,a2 + 3bc075aa: 00c79863 bne a5,a2,3bc075ba + 3bc075ae: 28070d63 beqz a4,3bc07848 + 3bc075b2: 040d3423 sd zero,72(s10) + 3bc075b6: 4799 li a5,6 + 3bc075b8: bf3d j 3bc074f6 + 3bc075ba: 40c78633 sub a2,a5,a2 + 3bc075be: 04cd3823 sd a2,80(s10) + 3bc075c2: 00e03733 snez a4,a4 + 3bc075c6: 0611 addi a2,a2,4 + 3bc075c8: 04e6148b addsl s1,a2,a4,2 + 3bc075cc: bbe9 j 3bc073a6 + 3bc075ce: 419987b3 sub a5,s3,s9 + 3bc075d2: 470d li a4,3 + 3bc075d4: 048d3503 ld a0,72(s10) + 3bc075d8: 02f75363 bge a4,a5,3bc075fe + 3bc075dc: e10d bnez a0,3bc075fe + 3bc075de: 004c8413 addi s0,s9,4 + 3bc075e2: 8766 mv a4,s9 + 3bc075e4: 853a mv a0,a4 + 3bc075e6: e6dfe0ef jal ra,3bc06452 + 3bc075ea: 00050c9b sext.w s9,a0 + 3bc075ee: 7502 ld a0,32(sp) + 3bc075f0: 365000ef jal ra,3bc08154 + 3bc075f4: 2501 sext.w a0,a0 + 3bc075f6: 24ac8963 beq s9,a0,3bc07848 + 3bc075fa: 5565 li a0,-7 + 3bc075fc: bb75 j 3bc073b8 + 3bc075fe: 4411 li s0,4 + 3bc07600: 8c09 sub s0,s0,a0 + 3bc07602: 0087b733 sltu a4,a5,s0 + 3bc07606: 00174713 xori a4,a4,1 + 3bc0760a: 40e7940b mveqz s0,a5,a4 + 3bc0760e: 8622 mv a2,s0 + 3bc07610: 85e6 mv a1,s9 + 3bc07612: 955e add a0,a0,s7 + 3bc07614: f85e sd s7,48(sp) + 3bc07616: c56f90ef jal ra,3bc00a6c + 3bc0761a: 048d3783 ld a5,72(s10) + 3bc0761e: 468d li a3,3 + 3bc07620: 7742 ld a4,48(sp) + 3bc07622: 97a2 add a5,a5,s0 + 3bc07624: 04fd3423 sd a5,72(s10) + 3bc07628: 9466 add s0,s0,s9 + 3bc0762a: d6f6fee3 bgeu a3,a5,3bc073a6 + 3bc0762e: bf5d j 3bc075e4 + 3bc07630: 050d3403 ld s0,80(s10) + 3bc07634: 419987b3 sub a5,s3,s9 + 3bc07638: 0087f963 bgeu a5,s0,3bc0764a + 3bc0763c: 47a1 li a5,8 + 3bc0763e: 040d3423 sd zero,72(s10) + 3bc07642: 02fd2223 sw a5,36(s10) + 3bc07646: 8466 mv s0,s9 + 3bc07648: b321 j 3bc07350 + 3bc0764a: 9466 add s0,s0,s9 + 3bc0764c: 01cd2783 lw a5,28(s10) + 3bc07650: 16079563 bnez a5,3bc077ba + 3bc07654: 030d3683 ld a3,48(s10) + 3bc07658: 412b0633 sub a2,s6,s2 + 3bc0765c: 060d3703 ld a4,96(s10) + 3bc07660: 068d3783 ld a5,104(s10) + 3bc07664: 18d67263 bgeu a2,a3,3bc077e8 + 3bc07668: 004d2683 lw a3,4(s10) + 3bc0766c: ea95 bnez a3,3bc076a0 + 3bc0766e: 058d3683 ld a3,88(s10) + 3bc07672: 1cd71d63 bne a4,a3,3bc0784c + 3bc07676: 000206b7 lui a3,0x20 + 3bc0767a: 00f6fc63 bgeu a3,a5,3bc07692 + 3bc0767e: 75c1 lui a1,0xffff0 + 3bc07680: 95be add a1,a1,a5 + 3bc07682: 6641 lui a2,0x10 + 3bc07684: 95ba add a1,a1,a4 + 3bc07686: 853a mv a0,a4 + 3bc07688: be4f90ef jal ra,3bc00a6c + 3bc0768c: 67c1 lui a5,0x10 + 3bc0768e: 06fd3423 sd a5,104(s10) + 3bc07692: 058d3783 ld a5,88(s10) + 3bc07696: 068d3703 ld a4,104(s10) + 3bc0769a: 97ba add a5,a5,a4 + 3bc0769c: 06fd3823 sd a5,112(s10) + 3bc076a0: 060d3703 ld a4,96(s10) + 3bc076a4: 068d3783 ld a5,104(s10) + 3bc076a8: cb09 beqz a4,3bc076ba + 3bc076aa: 400006b7 lui a3,0x40000 + 3bc076ae: 00f6f663 bgeu a3,a5,3bc076ba + 3bc076b2: 76c1 lui a3,0xffff0 + 3bc076b4: 97b6 add a5,a5,a3 + 3bc076b6: 973e add a4,a4,a5 + 3bc076b8: 67c1 lui a5,0x10 + 3bc076ba: 030d2683 lw a3,48(s10) + 3bc076be: 050d2603 lw a2,80(s10) + 3bc076c2: 070d3583 ld a1,112(s10) + 3bc076c6: 8566 mv a0,s9 + 3bc076c8: 2781 sext.w a5,a5 + 3bc076ca: 921ff0ef jal ra,3bc06fea + 3bc076ce: 8caa mv s9,a0 + 3bc076d0: 30054763 bltz a0,3bc079de + 3bc076d4: 008d2783 lw a5,8(s10) + 3bc076d8: c799 beqz a5,3bc076e6 + 3bc076da: 070d3583 ld a1,112(s10) + 3bc076de: 862a mv a2,a0 + 3bc076e0: 8562 mv a0,s8 + 3bc076e2: 0a1000ef jal ra,3bc07f82 + 3bc076e6: 010d3783 ld a5,16(s10) + 3bc076ea: c799 beqz a5,3bc076f8 + 3bc076ec: 028d3783 ld a5,40(s10) + 3bc076f0: 419787b3 sub a5,a5,s9 + 3bc076f4: 02fd3423 sd a5,40(s10) + 3bc076f8: 47a5 li a5,9 + 3bc076fa: 079d3c23 sd s9,120(s10) + 3bc076fe: 080d3023 sd zero,128(s10) + 3bc07702: 02fd2223 sw a5,36(s10) + 3bc07706: 04090763 beqz s2,3bc07754 + 3bc0770a: 080d3703 ld a4,128(s10) + 3bc0770e: 078d3603 ld a2,120(s10) + 3bc07712: 412b06b3 sub a3,s6,s2 + 3bc07716: 070d3583 ld a1,112(s10) + 3bc0771a: 8e19 sub a2,a2,a4 + 3bc0771c: 00c6b7b3 sltu a5,a3,a2 + 3bc07720: 0017c793 xori a5,a5,1 + 3bc07724: 42f6168b mvnez a3,a2,a5 + 3bc07728: 8636 mv a2,a3 + 3bc0772a: 95ba add a1,a1,a4 + 3bc0772c: 854a mv a0,s2 + 3bc0772e: 8cb6 mv s9,a3 + 3bc07730: b3cf90ef jal ra,3bc00a6c + 3bc07734: 004d2783 lw a5,4(s10) + 3bc07738: eb81 bnez a5,3bc07748 + 3bc0773a: 4705 li a4,1 + 3bc0773c: 86d6 mv a3,s5 + 3bc0773e: 8666 mv a2,s9 + 3bc07740: 85ca mv a1,s2 + 3bc07742: 856a mv a0,s10 + 3bc07744: fa9fe0ef jal ra,3bc066ec + 3bc07748: 080d3783 ld a5,128(s10) + 3bc0774c: 9966 add s2,s2,s9 + 3bc0774e: 97e6 add a5,a5,s9 + 3bc07750: 08fd3023 sd a5,128(s10) + 3bc07754: 080d3703 ld a4,128(s10) + 3bc07758: 078d3783 ld a5,120(s10) + 3bc0775c: 0ef70663 beq a4,a5,3bc07848 + 3bc07760: 4491 li s1,4 + 3bc07762: b191 j 3bc073a6 + 3bc07764: 048d3703 ld a4,72(s10) + 3bc07768: 050d3403 ld s0,80(s10) + 3bc0776c: 41998633 sub a2,s3,s9 + 3bc07770: 040d3503 ld a0,64(s10) + 3bc07774: 8c19 sub s0,s0,a4 + 3bc07776: 008637b3 sltu a5,a2,s0 + 3bc0777a: 0017c793 xori a5,a5,1 + 3bc0777e: 40f6140b mveqz s0,a2,a5 + 3bc07782: 8622 mv a2,s0 + 3bc07784: 953a add a0,a0,a4 + 3bc07786: 85e6 mv a1,s9 + 3bc07788: ae4f90ef jal ra,3bc00a6c + 3bc0778c: 048d3783 ld a5,72(s10) + 3bc07790: 00f40733 add a4,s0,a5 + 3bc07794: 050d3783 ld a5,80(s10) + 3bc07798: 04ed3423 sd a4,72(s10) + 3bc0779c: 9466 add s0,s0,s9 + 3bc0779e: 00f77b63 bgeu a4,a5,3bc077b4 + 3bc077a2: 01cd2483 lw s1,28(s10) + 3bc077a6: 0791 addi a5,a5,4 + 3bc077a8: 8f99 sub a5,a5,a4 + 3bc077aa: 009034b3 snez s1,s1 + 3bc077ae: 0497948b addsl s1,a5,s1,2 + 3bc077b2: bed5 j 3bc073a6 + 3bc077b4: 040d3c83 ld s9,64(s10) + 3bc077b8: bd51 j 3bc0764c + 3bc077ba: 050d3583 ld a1,80(s10) + 3bc077be: 15f1 addi a1,a1,-4 + 3bc077c0: 04bd3823 sd a1,80(s10) + 3bc077c4: 00bc8533 add a0,s9,a1 + 3bc077c8: fc2e sd a1,56(sp) + 3bc077ca: c89fe0ef jal ra,3bc06452 + 3bc077ce: 75e2 ld a1,56(sp) + 3bc077d0: 0005079b sext.w a5,a0 + 3bc077d4: 4601 li a2,0 + 3bc077d6: 8566 mv a0,s9 + 3bc077d8: f83e sd a5,48(sp) + 3bc077da: 58c000ef jal ra,3bc07d66 + 3bc077de: 77c2 ld a5,48(sp) + 3bc077e0: 2501 sext.w a0,a0 + 3bc077e2: e6a789e3 beq a5,a0,3bc07654 + 3bc077e6: bd11 j 3bc075fa + 3bc077e8: cb09 beqz a4,3bc077fa + 3bc077ea: 40000637 lui a2,0x40000 + 3bc077ee: 00f67663 bgeu a2,a5,3bc077fa + 3bc077f2: 75c1 lui a1,0xffff0 + 3bc077f4: 97ae add a5,a5,a1 + 3bc077f6: 973e add a4,a4,a5 + 3bc077f8: 67c1 lui a5,0x10 + 3bc077fa: 050d2603 lw a2,80(s10) + 3bc077fe: 8566 mv a0,s9 + 3bc07800: 2781 sext.w a5,a5 + 3bc07802: 2681 sext.w a3,a3 + 3bc07804: 85ca mv a1,s2 + 3bc07806: fe4ff0ef jal ra,3bc06fea + 3bc0780a: 8caa mv s9,a0 + 3bc0780c: 1c054763 bltz a0,3bc079da + 3bc07810: 008d2783 lw a5,8(s10) + 3bc07814: c791 beqz a5,3bc07820 + 3bc07816: 862a mv a2,a0 + 3bc07818: 85ca mv a1,s2 + 3bc0781a: 8562 mv a0,s8 + 3bc0781c: 766000ef jal ra,3bc07f82 + 3bc07820: 010d3783 ld a5,16(s10) + 3bc07824: c799 beqz a5,3bc07832 + 3bc07826: 028d3783 ld a5,40(s10) + 3bc0782a: 419787b3 sub a5,a5,s9 + 3bc0782e: 02fd3423 sd a5,40(s10) + 3bc07832: 004d2783 lw a5,4(s10) + 3bc07836: eb81 bnez a5,3bc07846 + 3bc07838: 4701 li a4,0 + 3bc0783a: 86d6 mv a3,s5 + 3bc0783c: 8666 mv a2,s9 + 3bc0783e: 85ca mv a1,s2 + 3bc07840: 856a mv a0,s10 + 3bc07842: eabfe0ef jal ra,3bc066ec + 3bc07846: 9966 add s2,s2,s9 + 3bc07848: 478d li a5,3 + 3bc0784a: b175 j 3bc074f6 + 3bc0784c: 6741 lui a4,0x10 + 3bc0784e: 00f77363 bgeu a4,a5,3bc07854 + 3bc07852: 67c1 lui a5,0x10 + 3bc07854: 97b6 add a5,a5,a3 + 3bc07856: b599 j 3bc0769c + 3bc07858: 8466 mv s0,s9 + 3bc0785a: b575 j 3bc07706 + 3bc0785c: 028d3483 ld s1,40(s10) + 3bc07860: 18049163 bnez s1,3bc079e2 + 3bc07864: 008d2a03 lw s4,8(s10) + 3bc07868: 000a1963 bnez s4,3bc0787a + 3bc0786c: 020d2223 sw zero,36(s10) + 3bc07870: 060d3023 sd zero,96(s10) + 3bc07874: 060d3423 sd zero,104(s10) + 3bc07878: b3f9 j 3bc07646 + 3bc0787a: 419987b3 sub a5,s3,s9 + 3bc0787e: 470d li a4,3 + 3bc07880: 04f74a63 blt a4,a5,3bc078d4 + 3bc07884: 47ad li a5,11 + 3bc07886: 040d3423 sd zero,72(s10) + 3bc0788a: 02fd2223 sw a5,36(s10) + 3bc0788e: 048d3703 ld a4,72(s10) + 3bc07892: 4491 li s1,4 + 3bc07894: 41998a33 sub s4,s3,s9 + 3bc07898: 40e48633 sub a2,s1,a4 + 3bc0789c: 014637b3 sltu a5,a2,s4 + 3bc078a0: 040d3503 ld a0,64(s10) + 3bc078a4: 0017c793 xori a5,a5,1 + 3bc078a8: 40f61a0b mveqz s4,a2,a5 + 3bc078ac: 8652 mv a2,s4 + 3bc078ae: 85e6 mv a1,s9 + 3bc078b0: 953a add a0,a0,a4 + 3bc078b2: 9baf90ef jal ra,3bc00a6c + 3bc078b6: 048d3603 ld a2,72(s10) + 3bc078ba: 014c8433 add s0,s9,s4 + 3bc078be: 478d li a5,3 + 3bc078c0: 9a32 add s4,s4,a2 + 3bc078c2: 054d3423 sd s4,72(s10) + 3bc078c6: 414484b3 sub s1,s1,s4 + 3bc078ca: ad47fee3 bgeu a5,s4,3bc073a6 + 3bc078ce: 040d3c83 ld s9,64(s10) + 3bc078d2: a019 j 3bc078d8 + 3bc078d4: 004c8413 addi s0,s9,4 + 3bc078d8: 8566 mv a0,s9 + 3bc078da: b79fe0ef jal ra,3bc06452 + 3bc078de: 0005049b sext.w s1,a0 + 3bc078e2: 8562 mv a0,s8 + 3bc078e4: 071000ef jal ra,3bc08154 + 3bc078e8: 2501 sext.w a0,a0 + 3bc078ea: 0ea49e63 bne s1,a0,3bc079e6 + 3bc078ee: 020d2223 sw zero,36(s10) + 3bc078f2: 060d3023 sd zero,96(s10) + 3bc078f6: 060d3423 sd zero,104(s10) + 3bc078fa: 4481 li s1,0 + 3bc078fc: b46d j 3bc073a6 + 3bc078fe: 419987b3 sub a5,s3,s9 + 3bc07902: 470d li a4,3 + 3bc07904: 004c8413 addi s0,s9,4 + 3bc07908: 04f74d63 blt a4,a5,3bc07962 + 3bc0790c: 4791 li a5,4 + 3bc0790e: 04fd3423 sd a5,72(s10) + 3bc07912: 47a1 li a5,8 + 3bc07914: 04fd3823 sd a5,80(s10) + 3bc07918: 47b5 li a5,13 + 3bc0791a: 02fd2223 sw a5,36(s10) + 3bc0791e: 048d3503 ld a0,72(s10) + 3bc07922: 050d3603 ld a2,80(s10) + 3bc07926: 41998733 sub a4,s3,s9 + 3bc0792a: 85e6 mv a1,s9 + 3bc0792c: 8e09 sub a2,a2,a0 + 3bc0792e: 00c737b3 sltu a5,a4,a2 + 3bc07932: 0017c793 xori a5,a5,1 + 3bc07936: 40f7160b mveqz a2,a4,a5 + 3bc0793a: 955e add a0,a0,s7 + 3bc0793c: f832 sd a2,48(sp) + 3bc0793e: 92ef90ef jal ra,3bc00a6c + 3bc07942: 048d3783 ld a5,72(s10) + 3bc07946: 7642 ld a2,48(sp) + 3bc07948: 00cc8433 add s0,s9,a2 + 3bc0794c: 963e add a2,a2,a5 + 3bc0794e: 050d3783 ld a5,80(s10) + 3bc07952: 04cd3423 sd a2,72(s10) + 3bc07956: 00f67563 bgeu a2,a5,3bc07960 + 3bc0795a: 40c784b3 sub s1,a5,a2 + 3bc0795e: b4a1 j 3bc073a6 + 3bc07960: 7ca2 ld s9,40(sp) + 3bc07962: 8566 mv a0,s9 + 3bc07964: aeffe0ef jal ra,3bc06452 + 3bc07968: 7c05350b extu a0,a0,31,0 + 3bc0796c: 00ad3823 sd a0,16(s10) + 3bc07970: 04ad3823 sd a0,80(s10) + 3bc07974: 47b9 li a5,14 + 3bc07976: b641 j 3bc074f6 + 3bc07978: 050d3483 ld s1,80(s10) + 3bc0797c: 41998633 sub a2,s3,s9 + 3bc07980: 4a01 li s4,0 + 3bc07982: 00c4b7b3 sltu a5,s1,a2 + 3bc07986: 0017c793 xori a5,a5,1 + 3bc0798a: 40f4960b mveqz a2,s1,a5 + 3bc0798e: 8c91 sub s1,s1,a2 + 3bc07990: 049d3823 sd s1,80(s10) + 3bc07994: 00cc8433 add s0,s9,a2 + 3bc07998: 9a049ce3 bnez s1,3bc07350 + 3bc0799c: 020d2223 sw zero,36(s10) + 3bc079a0: 060d3023 sd zero,96(s10) + 3bc079a4: 060d3423 sd zero,104(s10) + 3bc079a8: b265 j 3bc07350 + 3bc079aa: 6741 lui a4,0x10 + 3bc079ac: 843e mv s0,a5 + 3bc079ae: 00f77363 bgeu a4,a5,3bc079b4 + 3bc079b2: 6441 lui s0,0x10 + 3bc079b4: 8f81 sub a5,a5,s0 + 3bc079b6: 95be add a1,a1,a5 + 3bc079b8: 8622 mv a2,s0 + 3bc079ba: 8b2f90ef jal ra,3bc00a6c + 3bc079be: 058d3783 ld a5,88(s10) + 3bc079c2: 068d3423 sd s0,104(s10) + 3bc079c6: 06fd3023 sd a5,96(s10) + 3bc079ca: 97a2 add a5,a5,s0 + 3bc079cc: 06fd3823 sd a5,112(s10) + 3bc079d0: b23d j 3bc072fe + 3bc079d2: 451d li a0,7 + 3bc079d4: b2d5 j 3bc073b8 + 3bc079d6: 5579 li a0,-2 + 3bc079d8: b2c5 j 3bc073b8 + 3bc079da: 557d li a0,-1 + 3bc079dc: baf1 j 3bc073b8 + 3bc079de: 5541 li a0,-16 + 3bc079e0: bae1 j 3bc073b8 + 3bc079e2: 5549 li a0,-14 + 3bc079e4: bad1 j 3bc073b8 + 3bc079e6: 5539 li a0,-18 + 3bc079e8: bac1 j 3bc073b8 + +000000003bc079ea : + 3bc079ea: 00f5579b srliw a5,a0,0xf + 3bc079ee: 8d3d xor a0,a0,a5 + 3bc079f0: 85ebd7b7 lui a5,0x85ebd + 3bc079f4: a777879b addiw a5,a5,-1417 + 3bc079f8: 02a7853b mulw a0,a5,a0 + 3bc079fc: 00d5579b srliw a5,a0,0xd + 3bc07a00: 8fa9 xor a5,a5,a0 + 3bc07a02: c2b2b537 lui a0,0xc2b2b + 3bc07a06: e3d5051b addiw a0,a0,-451 + 3bc07a0a: 02a787bb mulw a5,a5,a0 + 3bc07a0e: 0107d51b srliw a0,a5,0x10 + 3bc07a12: 8d3d xor a0,a0,a5 + 3bc07a14: 8082 ret + +000000003bc07a16 : + 3bc07a16: 1101 addi sp,sp,-32 + 3bc07a18: 85aa mv a1,a0 + 3bc07a1a: 4611 li a2,4 + 3bc07a1c: 0068 addi a0,sp,12 + 3bc07a1e: ec06 sd ra,24(sp) + 3bc07a20: 84cf90ef jal ra,3bc00a6c + 3bc07a24: 60e2 ld ra,24(sp) + 3bc07a26: 4532 lw a0,12(sp) + 3bc07a28: 6105 addi sp,sp,32 + 3bc07a2a: 8082 ret + +000000003bc07a2c : + 3bc07a2c: 1101 addi sp,sp,-32 + 3bc07a2e: 8a3d andi a2,a2,15 + 3bc07a30: e822 sd s0,16(sp) + 3bc07a32: ec06 sd ra,24(sp) + 3bc07a34: e426 sd s1,8(sp) + 3bc07a36: e04a sd s2,0(sp) + 3bc07a38: 167d addi a2,a2,-1 + 3bc07a3a: 47b9 li a5,14 + 3bc07a3c: 842a mv s0,a0 + 3bc07a3e: 30c7ec63 bltu a5,a2,3bc07d56 + 3bc07a42: 00003717 auipc a4,0x3 + 3bc07a46: 77670713 addi a4,a4,1910 # 3bc0b1b8 + 3bc07a4a: 44c7478b lrw a5,a4,a2,2 + 3bc07a4e: 84ae mv s1,a1 + 3bc07a50: 8936 mv s2,a3 + 3bc07a52: 97ba add a5,a5,a4 + 3bc07a54: 8782 jr a5 + 3bc07a56: 4785 li a5,1 + 3bc07a58: 08f69a63 bne a3,a5,3bc07aec + 3bc07a5c: 852e mv a0,a1 + 3bc07a5e: fb9ff0ef jal ra,3bc07a16 + 3bc07a62: 0005079b sext.w a5,a0 + 3bc07a66: c2b2b737 lui a4,0xc2b2b + 3bc07a6a: e3d7071b addiw a4,a4,-451 + 3bc07a6e: 24f7140b mulaw s0,a4,a5 + 3bc07a72: 27d4f7b7 lui a5,0x27d4f + 3bc07a76: b2f7879b addiw a5,a5,-1233 + 3bc07a7a: 0491 addi s1,s1,4 + 3bc07a7c: 14f4140b srriw s0,s0,15 + 3bc07a80: 02f4043b mulw s0,s0,a5 + 3bc07a84: 4785 li a5,1 + 3bc07a86: 06f91563 bne s2,a5,3bc07af0 + 3bc07a8a: 8526 mv a0,s1 + 3bc07a8c: f8bff0ef jal ra,3bc07a16 + 3bc07a90: 0005079b sext.w a5,a0 + 3bc07a94: c2b2b737 lui a4,0xc2b2b + 3bc07a98: e3d7071b addiw a4,a4,-451 + 3bc07a9c: 0491 addi s1,s1,4 + 3bc07a9e: 24f7140b mulaw s0,a4,a5 + 3bc07aa2: 27d4f7b7 lui a5,0x27d4f + 3bc07aa6: b2f7879b addiw a5,a5,-1233 + 3bc07aaa: 14f4140b srriw s0,s0,15 + 3bc07aae: 02f4043b mulw s0,s0,a5 + 3bc07ab2: 4785 li a5,1 + 3bc07ab4: 04f91063 bne s2,a5,3bc07af4 + 3bc07ab8: 8526 mv a0,s1 + 3bc07aba: f5dff0ef jal ra,3bc07a16 + 3bc07abe: 0005079b sext.w a5,a0 + 3bc07ac2: c2b2b737 lui a4,0xc2b2b + 3bc07ac6: e3d7071b addiw a4,a4,-451 + 3bc07aca: 24f7140b mulaw s0,a4,a5 + 3bc07ace: 27d4f7b7 lui a5,0x27d4f + 3bc07ad2: b2f7879b addiw a5,a5,-1233 + 3bc07ad6: 14f4150b srriw a0,s0,15 + 3bc07ada: 02a7853b mulw a0,a5,a0 + 3bc07ade: 6442 ld s0,16(sp) + 3bc07ae0: 60e2 ld ra,24(sp) + 3bc07ae2: 64a2 ld s1,8(sp) + 3bc07ae4: 6902 ld s2,0(sp) + 3bc07ae6: 6105 addi sp,sp,32 + 3bc07ae8: f03ff06f j 3bc079ea + 3bc07aec: 419c lw a5,0(a1) + 3bc07aee: bfa5 j 3bc07a66 + 3bc07af0: 409c lw a5,0(s1) + 3bc07af2: b74d j 3bc07a94 + 3bc07af4: 409c lw a5,0(s1) + 3bc07af6: b7f1 j 3bc07ac2 + 3bc07af8: 4785 li a5,1 + 3bc07afa: 0af69263 bne a3,a5,3bc07b9e + 3bc07afe: 852e mv a0,a1 + 3bc07b00: f17ff0ef jal ra,3bc07a16 + 3bc07b04: 0005079b sext.w a5,a0 + 3bc07b08: c2b2b737 lui a4,0xc2b2b + 3bc07b0c: e3d7071b addiw a4,a4,-451 + 3bc07b10: 24f7140b mulaw s0,a4,a5 + 3bc07b14: 27d4f7b7 lui a5,0x27d4f + 3bc07b18: b2f7879b addiw a5,a5,-1233 + 3bc07b1c: 0491 addi s1,s1,4 + 3bc07b1e: 14f4140b srriw s0,s0,15 + 3bc07b22: 02f4043b mulw s0,s0,a5 + 3bc07b26: 4785 li a5,1 + 3bc07b28: 06f91d63 bne s2,a5,3bc07ba2 + 3bc07b2c: 8526 mv a0,s1 + 3bc07b2e: ee9ff0ef jal ra,3bc07a16 + 3bc07b32: 0005079b sext.w a5,a0 + 3bc07b36: c2b2b737 lui a4,0xc2b2b + 3bc07b3a: e3d7071b addiw a4,a4,-451 + 3bc07b3e: 0491 addi s1,s1,4 + 3bc07b40: 24f7140b mulaw s0,a4,a5 + 3bc07b44: 27d4f7b7 lui a5,0x27d4f + 3bc07b48: b2f7879b addiw a5,a5,-1233 + 3bc07b4c: 14f4140b srriw s0,s0,15 + 3bc07b50: 02f4043b mulw s0,s0,a5 + 3bc07b54: 4785 li a5,1 + 3bc07b56: 04f91863 bne s2,a5,3bc07ba6 + 3bc07b5a: 8526 mv a0,s1 + 3bc07b5c: ebbff0ef jal ra,3bc07a16 + 3bc07b60: 0005079b sext.w a5,a0 + 3bc07b64: c2b2b737 lui a4,0xc2b2b + 3bc07b68: e3d7071b addiw a4,a4,-451 + 3bc07b6c: 16566537 lui a0,0x16566 + 3bc07b70: 7b15051b addiw a0,a0,1969 + 3bc07b74: 24f7140b mulaw s0,a4,a5 + 3bc07b78: 0044c783 lbu a5,4(s1) + 3bc07b7c: 27d4f737 lui a4,0x27d4f + 3bc07b80: b2f7071b addiw a4,a4,-1233 + 3bc07b84: 02a787bb mulw a5,a5,a0 + 3bc07b88: 14f4140b srriw s0,s0,15 + 3bc07b8c: 9e378537 lui a0,0x9e378 + 3bc07b90: 9b15051b addiw a0,a0,-1615 + 3bc07b94: 24e4178b mulaw a5,s0,a4 + 3bc07b98: 1557978b srriw a5,a5,21 + 3bc07b9c: bf3d j 3bc07ada + 3bc07b9e: 419c lw a5,0(a1) + 3bc07ba0: b7a5 j 3bc07b08 + 3bc07ba2: 409c lw a5,0(s1) + 3bc07ba4: bf49 j 3bc07b36 + 3bc07ba6: 409c lw a5,0(s1) + 3bc07ba8: bf75 j 3bc07b64 + 3bc07baa: 4785 li a5,1 + 3bc07bac: 0af69a63 bne a3,a5,3bc07c60 + 3bc07bb0: 852e mv a0,a1 + 3bc07bb2: e65ff0ef jal ra,3bc07a16 + 3bc07bb6: 0005079b sext.w a5,a0 + 3bc07bba: c2b2b737 lui a4,0xc2b2b + 3bc07bbe: e3d7071b addiw a4,a4,-451 + 3bc07bc2: 24f7140b mulaw s0,a4,a5 + 3bc07bc6: 27d4f7b7 lui a5,0x27d4f + 3bc07bca: b2f7879b addiw a5,a5,-1233 + 3bc07bce: 0491 addi s1,s1,4 + 3bc07bd0: 14f4140b srriw s0,s0,15 + 3bc07bd4: 02f4043b mulw s0,s0,a5 + 3bc07bd8: 4785 li a5,1 + 3bc07bda: 08f91563 bne s2,a5,3bc07c64 + 3bc07bde: 8526 mv a0,s1 + 3bc07be0: e37ff0ef jal ra,3bc07a16 + 3bc07be4: 0005079b sext.w a5,a0 + 3bc07be8: c2b2b737 lui a4,0xc2b2b + 3bc07bec: e3d7071b addiw a4,a4,-451 + 3bc07bf0: 0491 addi s1,s1,4 + 3bc07bf2: 24f7140b mulaw s0,a4,a5 + 3bc07bf6: 27d4f7b7 lui a5,0x27d4f + 3bc07bfa: b2f7879b addiw a5,a5,-1233 + 3bc07bfe: 14f4140b srriw s0,s0,15 + 3bc07c02: 02f4043b mulw s0,s0,a5 + 3bc07c06: 4785 li a5,1 + 3bc07c08: 06f91063 bne s2,a5,3bc07c68 + 3bc07c0c: 8526 mv a0,s1 + 3bc07c0e: e09ff0ef jal ra,3bc07a16 + 3bc07c12: 0005079b sext.w a5,a0 + 3bc07c16: c2b2b737 lui a4,0xc2b2b + 3bc07c1a: e3d7071b addiw a4,a4,-451 + 3bc07c1e: 9e378537 lui a0,0x9e378 + 3bc07c22: 9b15051b addiw a0,a0,-1615 + 3bc07c26: 24f7140b mulaw s0,a4,a5 + 3bc07c2a: 0044c703 lbu a4,4(s1) + 3bc07c2e: 165667b7 lui a5,0x16566 + 3bc07c32: 7b17869b addiw a3,a5,1969 + 3bc07c36: 27d4f7b7 lui a5,0x27d4f + 3bc07c3a: b2f7879b addiw a5,a5,-1233 + 3bc07c3e: 02d7073b mulw a4,a4,a3 + 3bc07c42: 14f4140b srriw s0,s0,15 + 3bc07c46: 24f4170b mulaw a4,s0,a5 + 3bc07c4a: 0054c783 lbu a5,5(s1) + 3bc07c4e: 02d787bb mulw a5,a5,a3 + 3bc07c52: 1557170b srriw a4,a4,21 + 3bc07c56: 24a7178b mulaw a5,a4,a0 + 3bc07c5a: 1557978b srriw a5,a5,21 + 3bc07c5e: bdb5 j 3bc07ada + 3bc07c60: 419c lw a5,0(a1) + 3bc07c62: bfa1 j 3bc07bba + 3bc07c64: 409c lw a5,0(s1) + 3bc07c66: b749 j 3bc07be8 + 3bc07c68: 409c lw a5,0(s1) + 3bc07c6a: b775 j 3bc07c16 + 3bc07c6c: 4785 li a5,1 + 3bc07c6e: 0ef69663 bne a3,a5,3bc07d5a + 3bc07c72: 852e mv a0,a1 + 3bc07c74: da3ff0ef jal ra,3bc07a16 + 3bc07c78: 0005079b sext.w a5,a0 + 3bc07c7c: c2b2b737 lui a4,0xc2b2b + 3bc07c80: e3d7071b addiw a4,a4,-451 + 3bc07c84: 24f7140b mulaw s0,a4,a5 + 3bc07c88: 27d4f7b7 lui a5,0x27d4f + 3bc07c8c: b2f7879b addiw a5,a5,-1233 + 3bc07c90: 0491 addi s1,s1,4 + 3bc07c92: 14f4140b srriw s0,s0,15 + 3bc07c96: 02f4043b mulw s0,s0,a5 + 3bc07c9a: 4785 li a5,1 + 3bc07c9c: 0cf91163 bne s2,a5,3bc07d5e + 3bc07ca0: 8526 mv a0,s1 + 3bc07ca2: d75ff0ef jal ra,3bc07a16 + 3bc07ca6: 0005079b sext.w a5,a0 + 3bc07caa: c2b2b737 lui a4,0xc2b2b + 3bc07cae: e3d7071b addiw a4,a4,-451 + 3bc07cb2: 0491 addi s1,s1,4 + 3bc07cb4: 24f7140b mulaw s0,a4,a5 + 3bc07cb8: 27d4f7b7 lui a5,0x27d4f + 3bc07cbc: b2f7879b addiw a5,a5,-1233 + 3bc07cc0: 14f4140b srriw s0,s0,15 + 3bc07cc4: 02f4043b mulw s0,s0,a5 + 3bc07cc8: 4785 li a5,1 + 3bc07cca: 08f91c63 bne s2,a5,3bc07d62 + 3bc07cce: 8526 mv a0,s1 + 3bc07cd0: d47ff0ef jal ra,3bc07a16 + 3bc07cd4: 0005079b sext.w a5,a0 + 3bc07cd8: c2b2b737 lui a4,0xc2b2b + 3bc07cdc: e3d7071b addiw a4,a4,-451 + 3bc07ce0: 0491 addi s1,s1,4 + 3bc07ce2: 24f7140b mulaw s0,a4,a5 + 3bc07ce6: 27d4f7b7 lui a5,0x27d4f + 3bc07cea: b2f7879b addiw a5,a5,-1233 + 3bc07cee: 14f4140b srriw s0,s0,15 + 3bc07cf2: 02f4043b mulw s0,s0,a5 + 3bc07cf6: 9814c70b lbuia a4,(s1),1,0 + 3bc07cfa: 165667b7 lui a5,0x16566 + 3bc07cfe: 7b17879b addiw a5,a5,1969 + 3bc07d02: 24f7140b mulaw s0,a4,a5 + 3bc07d06: 9e3787b7 lui a5,0x9e378 + 3bc07d0a: 9b17879b addiw a5,a5,-1615 + 3bc07d0e: 1554140b srriw s0,s0,21 + 3bc07d12: 02f4043b mulw s0,s0,a5 + 3bc07d16: 9814c70b lbuia a4,(s1),1,0 + 3bc07d1a: 165667b7 lui a5,0x16566 + 3bc07d1e: 7b17879b addiw a5,a5,1969 + 3bc07d22: 24f7140b mulaw s0,a4,a5 + 3bc07d26: 9e3787b7 lui a5,0x9e378 + 3bc07d2a: 9b17879b addiw a5,a5,-1615 + 3bc07d2e: 1554140b srriw s0,s0,21 + 3bc07d32: 02f4043b mulw s0,s0,a5 + 3bc07d36: 0004c703 lbu a4,0(s1) + 3bc07d3a: 165667b7 lui a5,0x16566 + 3bc07d3e: 7b17879b addiw a5,a5,1969 + 3bc07d42: 24f7140b mulaw s0,a4,a5 + 3bc07d46: 9e3787b7 lui a5,0x9e378 + 3bc07d4a: 9b17879b addiw a5,a5,-1615 + 3bc07d4e: 1554140b srriw s0,s0,21 + 3bc07d52: 02f4043b mulw s0,s0,a5 + 3bc07d56: 8522 mv a0,s0 + 3bc07d58: b359 j 3bc07ade + 3bc07d5a: 419c lw a5,0(a1) + 3bc07d5c: b705 j 3bc07c7c + 3bc07d5e: 409c lw a5,0(s1) + 3bc07d60: b7a9 j 3bc07caa + 3bc07d62: 409c lw a5,0(s1) + 3bc07d64: bf95 j 3bc07cd8 + +000000003bc07d66 : + 3bc07d66: 711d addi sp,sp,-96 + 3bc07d68: e8a2 sd s0,80(sp) + 3bc07d6a: e0ca sd s2,64(sp) + 3bc07d6c: fc4e sd s3,56(sp) + 3bc07d6e: ec86 sd ra,88(sp) + 3bc07d70: e4a6 sd s1,72(sp) + 3bc07d72: f852 sd s4,48(sp) + 3bc07d74: f456 sd s5,40(sp) + 3bc07d76: f05a sd s6,32(sp) + 3bc07d78: ec5e sd s7,24(sp) + 3bc07d7a: e862 sd s8,16(sp) + 3bc07d7c: e466 sd s9,8(sp) + 3bc07d7e: 00357793 andi a5,a0,3 + 3bc07d82: 892a mv s2,a0 + 3bc07d84: 89ae mv s3,a1 + 3bc07d86: 8432 mv s0,a2 + 3bc07d88: eff1 bnez a5,3bc07e64 + 3bc07d8a: 47bd li a5,15 + 3bc07d8c: 0cb7f663 bgeu a5,a1,3bc07e58 + 3bc07d90: 242347b7 lui a5,0x24234 + 3bc07d94: ff158813 addi a6,a1,-15 # fffffffffffefff1 <__BL2_END__+0xffffffffc43dcbe1> + 3bc07d98: 4287879b addiw a5,a5,1064 + 3bc07d9c: 982a add a6,a6,a0 + 3bc07d9e: 9fb1 addw a5,a5,a2 + 3bc07da0: 61c88537 lui a0,0x61c88 + 3bc07da4: 85ebd637 lui a2,0x85ebd + 3bc07da8: a776061b addiw a2,a2,-1417 + 3bc07dac: 64f5051b addiw a0,a0,1615 + 3bc07db0: 9e3785b7 lui a1,0x9e378 + 3bc07db4: 0086073b addw a4,a2,s0 + 3bc07db8: 9d21 addw a0,a0,s0 + 3bc07dba: 86ca mv a3,s2 + 3bc07dbc: 9b15859b addiw a1,a1,-1615 + 3bc07dc0: 0006a883 lw a7,0(a3) # ffffffffffff0000 <__BL2_END__+0xffffffffc43dcbf0> + 3bc07dc4: 24c8978b mulaw a5,a7,a2 + 3bc07dc8: 0046a883 lw a7,4(a3) + 3bc07dcc: 24c8970b mulaw a4,a7,a2 + 3bc07dd0: 0086a883 lw a7,8(a3) + 3bc07dd4: 1537978b srriw a5,a5,19 + 3bc07dd8: 24c8940b mulaw s0,a7,a2 + 3bc07ddc: 00c6a883 lw a7,12(a3) + 3bc07de0: 1537170b srriw a4,a4,19 + 3bc07de4: 06c1 addi a3,a3,16 + 3bc07de6: 24c8950b mulaw a0,a7,a2 + 3bc07dea: 1534140b srriw s0,s0,19 + 3bc07dee: 1535150b srriw a0,a0,19 + 3bc07df2: 02b787bb mulw a5,a5,a1 + 3bc07df6: 02b7073b mulw a4,a4,a1 + 3bc07dfa: 02b4043b mulw s0,s0,a1 + 3bc07dfe: 02b5053b mulw a0,a0,a1 + 3bc07e02: fb06efe3 bltu a3,a6,3bc07dc0 + 3bc07e06: 00190593 addi a1,s2,1 + 3bc07e0a: 46c1 li a3,16 + 3bc07e0c: 00b86663 bltu a6,a1,3bc07e18 + 3bc07e10: ff098693 addi a3,s3,-16 + 3bc07e14: 9ac1 andi a3,a3,-16 + 3bc07e16: 06c1 addi a3,a3,16 + 3bc07e18: 15f7978b srriw a5,a5,31 + 3bc07e1c: 1597170b srriw a4,a4,25 + 3bc07e20: 9fb9 addw a5,a5,a4 + 3bc07e22: 1544140b srriw s0,s0,20 + 3bc07e26: 9fa1 addw a5,a5,s0 + 3bc07e28: 14e5150b srriw a0,a0,14 + 3bc07e2c: 9936 add s2,s2,a3 + 3bc07e2e: 9d3d addw a0,a0,a5 + 3bc07e30: 4681 li a3,0 + 3bc07e32: 6446 ld s0,80(sp) + 3bc07e34: 60e6 ld ra,88(sp) + 3bc07e36: 64a6 ld s1,72(sp) + 3bc07e38: 7a42 ld s4,48(sp) + 3bc07e3a: 7aa2 ld s5,40(sp) + 3bc07e3c: 7b02 ld s6,32(sp) + 3bc07e3e: 6be2 ld s7,24(sp) + 3bc07e40: 6c42 ld s8,16(sp) + 3bc07e42: 6ca2 ld s9,8(sp) + 3bc07e44: 00f9f613 andi a2,s3,15 + 3bc07e48: 85ca mv a1,s2 + 3bc07e4a: 00a9853b addw a0,s3,a0 + 3bc07e4e: 6906 ld s2,64(sp) + 3bc07e50: 79e2 ld s3,56(sp) + 3bc07e52: 6125 addi sp,sp,96 + 3bc07e54: bd9ff06f j 3bc07a2c + 3bc07e58: 16566537 lui a0,0x16566 + 3bc07e5c: 7b15051b addiw a0,a0,1969 + 3bc07e60: 9d31 addw a0,a0,a2 + 3bc07e62: b7f9 j 3bc07e30 + 3bc07e64: 47bd li a5,15 + 3bc07e66: 0ab7fe63 bgeu a5,a1,3bc07f22 + 3bc07e6a: 242344b7 lui s1,0x24234 + 3bc07e6e: 85ebdab7 lui s5,0x85ebd + 3bc07e72: 61c887b7 lui a5,0x61c88 + 3bc07e76: ff158c93 addi s9,a1,-15 # ffffffff9e377ff1 <__BL2_END__+0xffffffff62764be1> + 3bc07e7a: 4284849b addiw s1,s1,1064 + 3bc07e7e: a77a8a9b addiw s5,s5,-1417 + 3bc07e82: 64f7879b addiw a5,a5,1615 + 3bc07e86: 9e378b37 lui s6,0x9e378 + 3bc07e8a: 9caa add s9,s9,a0 + 3bc07e8c: 9cb1 addw s1,s1,a2 + 3bc07e8e: 00ca8c3b addw s8,s5,a2 + 3bc07e92: 00c78bbb addw s7,a5,a2 + 3bc07e96: 8a2a mv s4,a0 + 3bc07e98: 9b1b0b1b addiw s6,s6,-1615 + 3bc07e9c: 8552 mv a0,s4 + 3bc07e9e: b79ff0ef jal ra,3bc07a16 + 3bc07ea2: 24aa948b mulaw s1,s5,a0 + 3bc07ea6: 004a0513 addi a0,s4,4 + 3bc07eaa: b6dff0ef jal ra,3bc07a16 + 3bc07eae: 8762 mv a4,s8 + 3bc07eb0: 24aa970b mulaw a4,s5,a0 + 3bc07eb4: 008a0513 addi a0,s4,8 + 3bc07eb8: 1534948b srriw s1,s1,19 + 3bc07ebc: 1537170b srriw a4,a4,19 + 3bc07ec0: 03670c3b mulw s8,a4,s6 + 3bc07ec4: b53ff0ef jal ra,3bc07a16 + 3bc07ec8: 24aa940b mulaw s0,s5,a0 + 3bc07ecc: 00ca0513 addi a0,s4,12 + 3bc07ed0: 0a41 addi s4,s4,16 + 3bc07ed2: 1534160b srriw a2,s0,19 + 3bc07ed6: 0366043b mulw s0,a2,s6 + 3bc07eda: b3dff0ef jal ra,3bc07a16 + 3bc07ede: 87de mv a5,s7 + 3bc07ee0: 24aa978b mulaw a5,s5,a0 + 3bc07ee4: 1537978b srriw a5,a5,19 + 3bc07ee8: 036484bb mulw s1,s1,s6 + 3bc07eec: 03678bbb mulw s7,a5,s6 + 3bc07ef0: fb9a66e3 bltu s4,s9,3bc07e9c + 3bc07ef4: 00190713 addi a4,s2,1 + 3bc07ef8: 47c1 li a5,16 + 3bc07efa: 00ece663 bltu s9,a4,3bc07f06 + 3bc07efe: ff098793 addi a5,s3,-16 + 3bc07f02: 9bc1 andi a5,a5,-16 + 3bc07f04: 07c1 addi a5,a5,16 + 3bc07f06: 159c150b srriw a0,s8,25 + 3bc07f0a: 15f4948b srriw s1,s1,31 + 3bc07f0e: 9ca9 addw s1,s1,a0 + 3bc07f10: 1544150b srriw a0,s0,20 + 3bc07f14: 993e add s2,s2,a5 + 3bc07f16: 9d25 addw a0,a0,s1 + 3bc07f18: 14eb940b srriw s0,s7,14 + 3bc07f1c: 9d21 addw a0,a0,s0 + 3bc07f1e: 4685 li a3,1 + 3bc07f20: bf09 j 3bc07e32 + 3bc07f22: 16566537 lui a0,0x16566 + 3bc07f26: 7b15051b addiw a0,a0,1969 + 3bc07f2a: bfcd j 3bc07f1c + +000000003bc07f2c : + 3bc07f2c: 715d addi sp,sp,-80 + 3bc07f2e: e0a2 sd s0,64(sp) + 3bc07f30: fc26 sd s1,56(sp) + 3bc07f32: 842e mv s0,a1 + 3bc07f34: 84aa mv s1,a0 + 3bc07f36: 03000613 li a2,48 + 3bc07f3a: 4581 li a1,0 + 3bc07f3c: 850a mv a0,sp + 3bc07f3e: e486 sd ra,72(sp) + 3bc07f40: ad3f80ef jal ra,3bc00a12 + 3bc07f44: 242347b7 lui a5,0x24234 + 3bc07f48: 4287879b addiw a5,a5,1064 + 3bc07f4c: 9fa1 addw a5,a5,s0 + 3bc07f4e: c43e sw a5,8(sp) + 3bc07f50: 85ebd7b7 lui a5,0x85ebd + 3bc07f54: a777879b addiw a5,a5,-1417 + 3bc07f58: 9fa1 addw a5,a5,s0 + 3bc07f5a: c63e sw a5,12(sp) + 3bc07f5c: 61c887b7 lui a5,0x61c88 + 3bc07f60: 64f7879b addiw a5,a5,1615 + 3bc07f64: c822 sw s0,16(sp) + 3bc07f66: 858a mv a1,sp + 3bc07f68: 9c3d addw s0,s0,a5 + 3bc07f6a: 8526 mv a0,s1 + 3bc07f6c: 02c00613 li a2,44 + 3bc07f70: ca22 sw s0,20(sp) + 3bc07f72: afbf80ef jal ra,3bc00a6c + 3bc07f76: 60a6 ld ra,72(sp) + 3bc07f78: 6406 ld s0,64(sp) + 3bc07f7a: 74e2 ld s1,56(sp) + 3bc07f7c: 4501 li a0,0 + 3bc07f7e: 6161 addi sp,sp,80 + 3bc07f80: 8082 ret + +000000003bc07f82 : + 3bc07f82: 711d addi sp,sp,-96 + 3bc07f84: e0ca sd s2,64(sp) + 3bc07f86: ec86 sd ra,88(sp) + 3bc07f88: e8a2 sd s0,80(sp) + 3bc07f8a: e4a6 sd s1,72(sp) + 3bc07f8c: fc4e sd s3,56(sp) + 3bc07f8e: f852 sd s4,48(sp) + 3bc07f90: f456 sd s5,40(sp) + 3bc07f92: f05a sd s6,32(sp) + 3bc07f94: ec5e sd s7,24(sp) + 3bc07f96: e862 sd s8,16(sp) + 3bc07f98: e466 sd s9,8(sp) + 3bc07f9a: e06a sd s10,0(sp) + 3bc07f9c: 4905 li s2,1 + 3bc07f9e: c5b9 beqz a1,3bc07fec + 3bc07fa0: 4114 lw a3,0(a0) + 3bc07fa2: 842a mv s0,a0 + 3bc07fa4: 01063713 sltiu a4,a2,16 + 3bc07fa8: 00c6853b addw a0,a3,a2 + 3bc07fac: 483d li a6,15 + 3bc07fae: 00a836b3 sltu a3,a6,a0 + 3bc07fb2: 00174713 xori a4,a4,1 + 3bc07fb6: 8f55 or a4,a4,a3 + 3bc07fb8: 4054 lw a3,4(s0) + 3bc07fba: c008 sw a0,0(s0) + 3bc07fbc: 84ae mv s1,a1 + 3bc07fbe: 8f55 or a4,a4,a3 + 3bc07fc0: c058 sw a4,4(s0) + 3bc07fc2: 5418 lw a4,40(s0) + 3bc07fc4: 00c58d33 add s10,a1,a2 + 3bc07fc8: 0006091b sext.w s2,a2 + 3bc07fcc: 7c07350b extu a0,a4,31,0 + 3bc07fd0: 00a607b3 add a5,a2,a0 + 3bc07fd4: 02f86b63 bltu a6,a5,3bc0800a + 3bc07fd8: 01840793 addi a5,s0,24 # 10018 <__BSS_SIZE__+0xa408> + 3bc07fdc: 953e add a0,a0,a5 + 3bc07fde: a8ff80ef jal ra,3bc00a6c + 3bc07fe2: 541c lw a5,40(s0) + 3bc07fe4: 012787bb addw a5,a5,s2 + 3bc07fe8: d41c sw a5,40(s0) + 3bc07fea: 4901 li s2,0 + 3bc07fec: 60e6 ld ra,88(sp) + 3bc07fee: 6446 ld s0,80(sp) + 3bc07ff0: 64a6 ld s1,72(sp) + 3bc07ff2: 79e2 ld s3,56(sp) + 3bc07ff4: 7a42 ld s4,48(sp) + 3bc07ff6: 7aa2 ld s5,40(sp) + 3bc07ff8: 7b02 ld s6,32(sp) + 3bc07ffa: 6be2 ld s7,24(sp) + 3bc07ffc: 6c42 ld s8,16(sp) + 3bc07ffe: 6ca2 ld s9,8(sp) + 3bc08000: 6d02 ld s10,0(sp) + 3bc08002: 854a mv a0,s2 + 3bc08004: 6906 ld s2,64(sp) + 3bc08006: 6125 addi sp,sp,96 + 3bc08008: 8082 ret + 3bc0800a: c355 beqz a4,3bc080ae + 3bc0800c: 4b41 li s6,16 + 3bc0800e: 40eb063b subw a2,s6,a4 + 3bc08012: 01840993 addi s3,s0,24 + 3bc08016: 7c06360b extu a2,a2,31,0 + 3bc0801a: 954e add a0,a0,s3 + 3bc0801c: a51f80ef jal ra,3bc00a6c + 3bc08020: 00842903 lw s2,8(s0) + 3bc08024: 854e mv a0,s3 + 3bc08026: 85ebdab7 lui s5,0x85ebd + 3bc0802a: 9edff0ef jal ra,3bc07a16 + 3bc0802e: a77a8a9b addiw s5,s5,-1417 + 3bc08032: 24aa990b mulaw s2,s5,a0 + 3bc08036: 9e378a37 lui s4,0x9e378 + 3bc0803a: 9b1a0a1b addiw s4,s4,-1615 + 3bc0803e: 00c42983 lw s3,12(s0) + 3bc08042: 01c40513 addi a0,s0,28 + 3bc08046: 1539190b srriw s2,s2,19 + 3bc0804a: 0349093b mulw s2,s2,s4 + 3bc0804e: 01242423 sw s2,8(s0) + 3bc08052: 9c5ff0ef jal ra,3bc07a16 + 3bc08056: 24aa998b mulaw s3,s5,a0 + 3bc0805a: 02040513 addi a0,s0,32 + 3bc0805e: 1539998b srriw s3,s3,19 + 3bc08062: 034989bb mulw s3,s3,s4 + 3bc08066: 01342623 sw s3,12(s0) + 3bc0806a: 01042983 lw s3,16(s0) + 3bc0806e: 9a9ff0ef jal ra,3bc07a16 + 3bc08072: 01442903 lw s2,20(s0) + 3bc08076: 24aa998b mulaw s3,s5,a0 + 3bc0807a: 02440513 addi a0,s0,36 + 3bc0807e: 1539998b srriw s3,s3,19 + 3bc08082: 034989bb mulw s3,s3,s4 + 3bc08086: 01342823 sw s3,16(s0) + 3bc0808a: 98dff0ef jal ra,3bc07a16 + 3bc0808e: 24aa990b mulaw s2,s5,a0 + 3bc08092: 541c lw a5,40(s0) + 3bc08094: 02042423 sw zero,40(s0) + 3bc08098: 40fb0b3b subw s6,s6,a5 + 3bc0809c: 7c0b3b0b extu s6,s6,31,0 + 3bc080a0: 94da add s1,s1,s6 + 3bc080a2: 1539190b srriw s2,s2,19 + 3bc080a6: 0349093b mulw s2,s2,s4 + 3bc080aa: 01242a23 sw s2,20(s0) + 3bc080ae: ff0d0913 addi s2,s10,-16 + 3bc080b2: 08996363 bltu s2,s1,3bc08138 + 3bc080b6: e3844c8b lwd s9,s8,(s0),1,3 + 3bc080ba: e5444a8b lwd s5,s4,(s0),2,3 + 3bc080be: 85ebdbb7 lui s7,0x85ebd + 3bc080c2: 9e378b37 lui s6,0x9e378 + 3bc080c6: 89a6 mv s3,s1 + 3bc080c8: a77b8b9b addiw s7,s7,-1417 + 3bc080cc: 9b1b0b1b addiw s6,s6,-1615 + 3bc080d0: 854e mv a0,s3 + 3bc080d2: 945ff0ef jal ra,3bc07a16 + 3bc080d6: 24ab9c8b mulaw s9,s7,a0 + 3bc080da: 00498513 addi a0,s3,4 + 3bc080de: 939ff0ef jal ra,3bc07a16 + 3bc080e2: 24ab9c0b mulaw s8,s7,a0 + 3bc080e6: 00898513 addi a0,s3,8 + 3bc080ea: 92dff0ef jal ra,3bc07a16 + 3bc080ee: 153c9c8b srriw s9,s9,19 + 3bc080f2: 24ab9a8b mulaw s5,s7,a0 + 3bc080f6: 00c98513 addi a0,s3,12 + 3bc080fa: 91dff0ef jal ra,3bc07a16 + 3bc080fe: 153c1c0b srriw s8,s8,19 + 3bc08102: 09c1 addi s3,s3,16 + 3bc08104: 24ab9a0b mulaw s4,s7,a0 + 3bc08108: 153a9a8b srriw s5,s5,19 + 3bc0810c: 153a1a0b srriw s4,s4,19 + 3bc08110: 036c8cbb mulw s9,s9,s6 + 3bc08114: 036c0c3b mulw s8,s8,s6 + 3bc08118: 036a8abb mulw s5,s5,s6 + 3bc0811c: 036a0a3b mulw s4,s4,s6 + 3bc08120: fb3978e3 bgeu s2,s3,3bc080d0 + 3bc08124: 40990933 sub s2,s2,s1 + 3bc08128: ff097913 andi s2,s2,-16 + 3bc0812c: 0941 addi s2,s2,16 + 3bc0812e: 94ca add s1,s1,s2 + 3bc08130: e3845c8b swd s9,s8,(s0),1,3 + 3bc08134: e5445a8b swd s5,s4,(s0),2,3 + 3bc08138: 4901 li s2,0 + 3bc0813a: eba4f9e3 bgeu s1,s10,3bc07fec + 3bc0813e: 409d0d33 sub s10,s10,s1 + 3bc08142: 866a mv a2,s10 + 3bc08144: 85a6 mv a1,s1 + 3bc08146: 01840513 addi a0,s0,24 + 3bc0814a: 923f80ef jal ra,3bc00a6c + 3bc0814e: 03a42423 sw s10,40(s0) + 3bc08152: bd69 j 3bc07fec + +000000003bc08154 : + 3bc08154: 415c lw a5,4(a0) + 3bc08156: 4918 lw a4,16(a0) + 3bc08158: cb8d beqz a5,3bc0818a + 3bc0815a: 451c lw a5,8(a0) + 3bc0815c: 4554 lw a3,12(a0) + 3bc0815e: 1547170b srriw a4,a4,20 + 3bc08162: 15f7978b srriw a5,a5,31 + 3bc08166: 1596968b srriw a3,a3,25 + 3bc0816a: 9fb5 addw a5,a5,a3 + 3bc0816c: 9fb9 addw a5,a5,a4 + 3bc0816e: 4958 lw a4,20(a0) + 3bc08170: 14e7170b srriw a4,a4,14 + 3bc08174: 85aa mv a1,a0 + 3bc08176: 9fb9 addw a5,a5,a4 + 3bc08178: 5ac5c70b lwia a4,(a1),12,1 + 3bc0817c: 02856603 lwu a2,40(a0) # 16566028 + 3bc08180: 4681 li a3,0 + 3bc08182: 00f7053b addw a0,a4,a5 + 3bc08186: 8a7ff06f j 3bc07a2c + 3bc0818a: 165667b7 lui a5,0x16566 + 3bc0818e: 7b17879b addiw a5,a5,1969 + 3bc08192: b7cd j 3bc08174 + +000000003bc08194 : + 3bc08194: 1141 addi sp,sp,-16 + 3bc08196: e022 sd s0,0(sp) + 3bc08198: 842a mv s0,a0 + 3bc0819a: 00003517 auipc a0,0x3 + 3bc0819e: 05e50513 addi a0,a0,94 # 3bc0b1f8 + 3bc081a2: e406 sd ra,8(sp) + 3bc081a4: 9b4f80ef jal ra,3bc00358 + 3bc081a8: 400c lw a1,0(s0) + 3bc081aa: 00003517 auipc a0,0x3 + 3bc081ae: 05e50513 addi a0,a0,94 # 3bc0b208 + 3bc081b2: 9a6f80ef jal ra,3bc00358 + 3bc081b6: 012000ef jal ra,3bc081c8 + 3bc081ba: 296000ef jal ra,3bc08450 + 3bc081be: 60a2 ld ra,8(sp) + 3bc081c0: 6402 ld s0,0(sp) + 3bc081c2: 4501 li a0,0 + 3bc081c4: 0141 addi sp,sp,16 + 3bc081c6: 8082 ret + +000000003bc081c8 : + 3bc081c8: 030007b7 lui a5,0x3000 + 3bc081cc: 43cc lw a1,4(a5) + 3bc081ce: 7139 addi sp,sp,-64 + 3bc081d0: 030507b7 lui a5,0x3050 + 3bc081d4: 79c5b58b extu a1,a1,30,28 + 3bc081d8: 00003517 auipc a0,0x3 + 3bc081dc: 04850513 addi a0,a0,72 # 3bc0b220 + 3bc081e0: f822 sd s0,48(sp) + 3bc081e2: f426 sd s1,40(sp) + 3bc081e4: f04a sd s2,32(sp) + 3bc081e6: ec4e sd s3,24(sp) + 3bc081e8: fc06 sd ra,56(sp) + 3bc081ea: 1087a983 lw s3,264(a5) # 3050108 <__BSS_SIZE__+0x304a4f8> + 3bc081ee: e42e sd a1,8(sp) + 3bc081f0: 968f80ef jal ra,3bc00358 + 3bc081f4: 65a2 ld a1,8(sp) + 3bc081f6: 00003717 auipc a4,0x3 + 3bc081fa: 10e70713 addi a4,a4,270 # 3bc0b304 + 3bc081fe: 0000b917 auipc s2,0xb + 3bc08202: 21090913 addi s2,s2,528 # 3bc1340e + 3bc08206: 44b7478b lrw a5,a4,a1,2 + 3bc0820a: 0000b497 auipc s1,0xb + 3bc0820e: 20248493 addi s1,s1,514 # 3bc1340c + 3bc08212: 0000b417 auipc s0,0xb + 3bc08216: 1fd40413 addi s0,s0,509 # 3bc1340f + 3bc0821a: 97ba add a5,a5,a4 + 3bc0821c: 8782 jr a5 + 3bc0821e: 478d li a5,3 + 3bc08220: 4709 li a4,2 + 3bc08222: 00f90023 sb a5,0(s2) + 3bc08226: 00e48023 sb a4,0(s1) + 3bc0822a: 00f40023 sb a5,0(s0) + 3bc0822e: a825 j 3bc08266 + 3bc08230: 4791 li a5,4 + 3bc08232: 00f90023 sb a5,0(s2) + 3bc08236: 4785 li a5,1 + 3bc08238: 00f48023 sb a5,0(s1) + 3bc0823c: 478d li a5,3 + 3bc0823e: b7f5 j 3bc0822a + 3bc08240: 00003517 auipc a0,0x3 + 3bc08244: ff050513 addi a0,a0,-16 # 3bc0b230 + 3bc08248: 910f80ef jal ra,3bc00358 + 3bc0824c: 2981 sext.w s3,s3 + 3bc0824e: 6559b78b extu a5,s3,25,21 + 3bc08252: 00f90023 sb a5,0(s2) + 3bc08256: 71a9b78b extu a5,s3,28,26 + 3bc0825a: 01d9d99b srliw s3,s3,0x1d + 3bc0825e: 00f48023 sb a5,0(s1) + 3bc08262: 01340023 sb s3,0(s0) + 3bc08266: 00044583 lbu a1,0(s0) + 3bc0826a: 00094683 lbu a3,0(s2) + 3bc0826e: 0004c603 lbu a2,0(s1) + 3bc08272: 00003517 auipc a0,0x3 + 3bc08276: fe650513 addi a0,a0,-26 # 3bc0b258 + 3bc0827a: 8def80ef jal ra,3bc00358 + 3bc0827e: 00094583 lbu a1,0(s2) + 3bc08282: 4725 li a4,9 + 3bc08284: fff5879b addiw a5,a1,-1 + 3bc08288: 0ff7f793 andi a5,a5,255 + 3bc0828c: 08f76963 bltu a4,a5,3bc0831e + 3bc08290: 00003717 auipc a4,0x3 + 3bc08294: 09470713 addi a4,a4,148 # 3bc0b324 + 3bc08298: 44f7478b lrw a5,a4,a5,2 + 3bc0829c: 0000b917 auipc s2,0xb + 3bc082a0: 17190913 addi s2,s2,369 # 3bc1340d + 3bc082a4: 97ba add a5,a5,a4 + 3bc082a6: 8782 jr a5 + 3bc082a8: 478d li a5,3 + 3bc082aa: 00f90023 sb a5,0(s2) + 3bc082ae: 4789 li a5,2 + 3bc082b0: 00f48023 sb a5,0(s1) + 3bc082b4: 4785 li a5,1 + 3bc082b6: bf95 j 3bc0822a + 3bc082b8: 4791 li a5,4 + 3bc082ba: 00f90023 sb a5,0(s2) + 3bc082be: 4785 li a5,1 + 3bc082c0: 00f48023 sb a5,0(s1) + 3bc082c4: b79d j 3bc0822a + 3bc082c6: 00003517 auipc a0,0x3 + 3bc082ca: f7250513 addi a0,a0,-142 # 3bc0b238 + 3bc082ce: 88af80ef jal ra,3bc00358 + 3bc082d2: bf51 j 3bc08266 + 3bc082d4: 00003517 auipc a0,0x3 + 3bc082d8: f9450513 addi a0,a0,-108 # 3bc0b268 + 3bc082dc: 87cf80ef jal ra,3bc00358 + 3bc082e0: 4785 li a5,1 + 3bc082e2: 00f90023 sb a5,0(s2) + 3bc082e6: 0004c583 lbu a1,0(s1) + 3bc082ea: 478d li a5,3 + 3bc082ec: 0cf58963 beq a1,a5,3bc083be + 3bc082f0: 04b7e263 bltu a5,a1,3bc08334 + 3bc082f4: 4485 li s1,1 + 3bc082f6: 04958a63 beq a1,s1,3bc0834a + 3bc082fa: 4789 li a5,2 + 3bc082fc: 0af58463 beq a1,a5,3bc083a4 + 3bc08300: 00003517 auipc a0,0x3 + 3bc08304: fb050513 addi a0,a0,-80 # 3bc0b2b0 + 3bc08308: 850f80ef jal ra,3bc00358 + 3bc0830c: a82d j 3bc08346 + 3bc0830e: 00003517 auipc a0,0x3 + 3bc08312: f6250513 addi a0,a0,-158 # 3bc0b270 + 3bc08316: 842f80ef jal ra,3bc00358 + 3bc0831a: 4789 li a5,2 + 3bc0831c: b7d9 j 3bc082e2 + 3bc0831e: 00003517 auipc a0,0x3 + 3bc08322: f5a50513 addi a0,a0,-166 # 3bc0b278 + 3bc08326: 832f80ef jal ra,3bc00358 + 3bc0832a: 0000b797 auipc a5,0xb + 3bc0832e: 0e0781a3 sb zero,227(a5) # 3bc1340d + 3bc08332: bf55 j 3bc082e6 + 3bc08334: 4791 li a5,4 + 3bc08336: 00003517 auipc a0,0x3 + 3bc0833a: f7250513 addi a0,a0,-142 # 3bc0b2a8 + 3bc0833e: fcf591e3 bne a1,a5,3bc08300 + 3bc08342: 816f80ef jal ra,3bc00358 + 3bc08346: 4781 li a5,0 + 3bc08348: a839 j 3bc08366 + 3bc0834a: 00003517 auipc a0,0x3 + 3bc0834e: f4650513 addi a0,a0,-186 # 3bc0b290 + 3bc08352: e42e sd a1,8(sp) + 3bc08354: 804f80ef jal ra,3bc00358 + 3bc08358: 00044783 lbu a5,0(s0) + 3bc0835c: 65a2 ld a1,8(sp) + 3bc0835e: 06b78563 beq a5,a1,3bc083c8 + 3bc08362: 67e1 lui a5,0x18 + 3bc08364: 07ad addi a5,a5,11 + 3bc08366: 03000737 lui a4,0x3000 + 3bc0836a: 08f72623 sw a5,140(a4) # 300008c <__BSS_SIZE__+0x2ffa47c> + 3bc0836e: 00044583 lbu a1,0(s0) + 3bc08372: 4789 li a5,2 + 3bc08374: 06f58c63 beq a1,a5,3bc083ec + 3bc08378: 478d li a5,3 + 3bc0837a: 04f58d63 beq a1,a5,3bc083d4 + 3bc0837e: 4785 li a5,1 + 3bc08380: 00003517 auipc a0,0x3 + 3bc08384: f4850513 addi a0,a0,-184 # 3bc0b2c8 + 3bc08388: 04f58a63 beq a1,a5,3bc083dc + 3bc0838c: 7442 ld s0,48(sp) + 3bc0838e: 70e2 ld ra,56(sp) + 3bc08390: 74a2 ld s1,40(sp) + 3bc08392: 7902 ld s2,32(sp) + 3bc08394: 69e2 ld s3,24(sp) + 3bc08396: 00003517 auipc a0,0x3 + 3bc0839a: f5a50513 addi a0,a0,-166 # 3bc0b2f0 + 3bc0839e: 6121 addi sp,sp,64 + 3bc083a0: fb9f706f j 3bc00358 + 3bc083a4: 00003517 auipc a0,0x3 + 3bc083a8: ef450513 addi a0,a0,-268 # 3bc0b298 + 3bc083ac: fadf70ef jal ra,3bc00358 + 3bc083b0: 00044783 lbu a5,0(s0) + 3bc083b4: 00978d63 beq a5,s1,3bc083ce + 3bc083b8: 67e1 lui a5,0x18 + 3bc083ba: 07ed addi a5,a5,27 + 3bc083bc: b76d j 3bc08366 + 3bc083be: 00003517 auipc a0,0x3 + 3bc083c2: ee250513 addi a0,a0,-286 # 3bc0b2a0 + 3bc083c6: bfb5 j 3bc08342 + 3bc083c8: 67e1 lui a5,0x18 + 3bc083ca: 07b1 addi a5,a5,12 + 3bc083cc: bf69 j 3bc08366 + 3bc083ce: 67e1 lui a5,0x18 + 3bc083d0: 07f1 addi a5,a5,28 + 3bc083d2: bf51 j 3bc08366 + 3bc083d4: 00003517 auipc a0,0x3 + 3bc083d8: f0450513 addi a0,a0,-252 # 3bc0b2d8 + 3bc083dc: 7442 ld s0,48(sp) + 3bc083de: 70e2 ld ra,56(sp) + 3bc083e0: 74a2 ld s1,40(sp) + 3bc083e2: 7902 ld s2,32(sp) + 3bc083e4: 69e2 ld s3,24(sp) + 3bc083e6: 6121 addi sp,sp,64 + 3bc083e8: f71f706f j 3bc00358 + 3bc083ec: 00003517 auipc a0,0x3 + 3bc083f0: efc50513 addi a0,a0,-260 # 3bc0b2e8 + 3bc083f4: b7e5 j 3bc083dc + +000000003bc083f6 : + 3bc083f6: 0000b517 auipc a0,0xb + 3bc083fa: 01854503 lbu a0,24(a0) # 3bc1340e + 3bc083fe: 8082 ret + +000000003bc08400 : + 3bc08400: 00030737 lui a4,0x30 + 3bc08404: 080087b7 lui a5,0x8008 + 3bc08408: 0705 addi a4,a4,1 + 3bc0840a: c398 sw a4,0(a5) + 3bc0840c: 08078693 addi a3,a5,128 # 8008080 + 3bc08410: c298 sw a4,0(a3) + 3bc08412: 10078693 addi a3,a5,256 + 3bc08416: c298 sw a4,0(a3) + 3bc08418: 18078693 addi a3,a5,384 + 3bc0841c: c298 sw a4,0(a3) + 3bc0841e: 20078693 addi a3,a5,512 + 3bc08422: c298 sw a4,0(a3) + 3bc08424: 28078693 addi a3,a5,640 + 3bc08428: c298 sw a4,0(a3) + 3bc0842a: 30078693 addi a3,a5,768 + 3bc0842e: c298 sw a4,0(a3) + 3bc08430: 38078693 addi a3,a5,896 + 3bc08434: c298 sw a4,0(a3) + 3bc08436: 40078693 addi a3,a5,1024 + 3bc0843a: c298 sw a4,0(a3) + 3bc0843c: 48078693 addi a3,a5,1152 + 3bc08440: c298 sw a4,0(a3) + 3bc08442: 50078693 addi a3,a5,1280 + 3bc08446: c298 sw a4,0(a3) + 3bc08448: 58078793 addi a5,a5,1408 + 3bc0844c: c398 sw a4,0(a5) + 3bc0844e: 8082 ret + +000000003bc08450 : + 3bc08450: 7179 addi sp,sp,-48 + 3bc08452: f406 sd ra,40(sp) + 3bc08454: 789000ef jal ra,3bc093dc + 3bc08458: 344010ef jal ra,3bc0979c + 3bc0845c: 0800a7b7 lui a5,0x800a + 3bc08460: 0207a023 sw zero,32(a5) # 800a020 + 3bc08464: 007797b7 lui a5,0x779 + 3bc08468: 03000737 lui a4,0x3000 + 3bc0846c: 8aa78793 addi a5,a5,-1878 # 7788aa <__BSS_SIZE__+0x772c9a> + 3bc08470: 1cf72c23 sw a5,472(a4) # 30001d8 <__BSS_SIZE__+0x2ffa5c8> + 3bc08474: 6789 lui a5,0x2 + 3bc08476: 29978793 addi a5,a5,665 # 2299 <__BSS_SIZE__-0x3977> + 3bc0847a: 1cf72e23 sw a5,476(a4) + 3bc0847e: 794010ef jal ra,3bc09c12 + 3bc08482: 1cb000ef jal ra,3bc08e4c + 3bc08486: 7db000ef jal ra,3bc09460 + 3bc0848a: 717000ef jal ra,3bc093a0 + 3bc0848e: 1df000ef jal ra,3bc08e6c + 3bc08492: 7c8000ef jal ra,3bc08c5a + 3bc08496: 0c3000ef jal ra,3bc08d58 + 3bc0849a: 101000ef jal ra,3bc08d9a + 3bc0849e: 049000ef jal ra,3bc08ce6 + 3bc084a2: 07f000ef jal ra,3bc08d20 + 3bc084a6: 121000ef jal ra,3bc08dc6 + 3bc084aa: 1ca000ef jal ra,3bc08674 + 3bc084ae: 0810 addi a2,sp,16 + 3bc084b0: 082c addi a1,sp,24 + 3bc084b2: 0068 addi a0,sp,12 + 3bc084b4: 4ae000ef jal ra,3bc08962 + 3bc084b8: 47b2 lw a5,12(sp) + 3bc084ba: e385 bnez a5,3bc084da + 3bc084bc: 00003517 auipc a0,0x3 + 3bc084c0: e9450513 addi a0,a0,-364 # 3bc0b350 + 3bc084c4: e95f70ef jal ra,3bc00358 + 3bc084c8: fac1468b ldd a3,a2,(sp),1,4 + 3bc084cc: 45b2 lw a1,12(sp) + 3bc084ce: 00003517 auipc a0,0x3 + 3bc084d2: e9a50513 addi a0,a0,-358 # 3bc0b368 + 3bc084d6: e83f70ef jal ra,3bc00358 + 3bc084da: 4ee010ef jal ra,3bc099c8 + 3bc084de: 16d000ef jal ra,3bc08e4a + 3bc084e2: 192000ef jal ra,3bc08674 + 3bc084e6: 0810 addi a2,sp,16 + 3bc084e8: 082c addi a1,sp,24 + 3bc084ea: 0068 addi a0,sp,12 + 3bc084ec: 476000ef jal ra,3bc08962 + 3bc084f0: 47b2 lw a5,12(sp) + 3bc084f2: e385 bnez a5,3bc08512 + 3bc084f4: 00003517 auipc a0,0x3 + 3bc084f8: e5c50513 addi a0,a0,-420 # 3bc0b350 + 3bc084fc: e5df70ef jal ra,3bc00358 + 3bc08500: fac1468b ldd a3,a2,(sp),1,4 + 3bc08504: 45b2 lw a1,12(sp) + 3bc08506: 00003517 auipc a0,0x3 + 3bc0850a: e6250513 addi a0,a0,-414 # 3bc0b368 + 3bc0850e: e4bf70ef jal ra,3bc00358 + 3bc08512: 2d7000ef jal ra,3bc08fe8 + 3bc08516: 15e000ef jal ra,3bc08674 + 3bc0851a: 0810 addi a2,sp,16 + 3bc0851c: 082c addi a1,sp,24 + 3bc0851e: 0068 addi a0,sp,12 + 3bc08520: 442000ef jal ra,3bc08962 + 3bc08524: 47b2 lw a5,12(sp) + 3bc08526: e385 bnez a5,3bc08546 + 3bc08528: 00003517 auipc a0,0x3 + 3bc0852c: e2850513 addi a0,a0,-472 # 3bc0b350 + 3bc08530: e29f70ef jal ra,3bc00358 + 3bc08534: fac1468b ldd a3,a2,(sp),1,4 + 3bc08538: 45b2 lw a1,12(sp) + 3bc0853a: 00003517 auipc a0,0x3 + 3bc0853e: e2e50513 addi a0,a0,-466 # 3bc0b368 + 3bc08542: e17f70ef jal ra,3bc00358 + 3bc08546: 4589 li a1,2 + 3bc08548: 4505 li a0,1 + 3bc0854a: 4d5000ef jal ra,3bc0921e + 3bc0854e: 4585 li a1,1 + 3bc08550: 4505 li a0,1 + 3bc08552: 4cd000ef jal ra,3bc0921e + 3bc08556: 4581 li a1,0 + 3bc08558: 4505 li a0,1 + 3bc0855a: 4c5000ef jal ra,3bc0921e + 3bc0855e: 116000ef jal ra,3bc08674 + 3bc08562: 0810 addi a2,sp,16 + 3bc08564: 082c addi a1,sp,24 + 3bc08566: 0068 addi a0,sp,12 + 3bc08568: 3fa000ef jal ra,3bc08962 + 3bc0856c: 08000737 lui a4,0x8000 + 3bc08570: 08c72783 lw a5,140(a4) # 800008c + 3bc08574: 4505 li a0,1 + 3bc08576: 2781 sext.w a5,a5 + 3bc08578: f0f7f793 andi a5,a5,-241 + 3bc0857c: 0107e793 ori a5,a5,16 + 3bc08580: 0000b697 auipc a3,0xb + 3bc08584: e6f6a823 sw a5,-400(a3) # 3bc133f0 + 3bc08588: 08f72623 sw a5,140(a4) + 3bc0858c: 323000ef jal ra,3bc090ae + 3bc08590: 0e4000ef jal ra,3bc08674 + 3bc08594: 0810 addi a2,sp,16 + 3bc08596: 082c addi a1,sp,24 + 3bc08598: 0068 addi a0,sp,12 + 3bc0859a: 3c8000ef jal ra,3bc08962 + 3bc0859e: 3fc010ef jal ra,3bc0999a + 3bc085a2: 00b10513 addi a0,sp,11 + 3bc085a6: 615000ef jal ra,3bc093ba + 3bc085aa: 00b14503 lbu a0,11(sp) + 3bc085ae: 448010ef jal ra,3bc099f6 + 3bc085b2: 00b14503 lbu a0,11(sp) + 3bc085b6: 1e4010ef jal ra,3bc0979a + 3bc085ba: 1bf000ef jal ra,3bc08f78 + 3bc085be: 0b6000ef jal ra,3bc08674 + 3bc085c2: 0810 addi a2,sp,16 + 3bc085c4: 082c addi a1,sp,24 + 3bc085c6: 0068 addi a0,sp,12 + 3bc085c8: 39a000ef jal ra,3bc08962 + 3bc085cc: 47b2 lw a5,12(sp) + 3bc085ce: eb81 bnez a5,3bc085de + 3bc085d0: 00003517 auipc a0,0x3 + 3bc085d4: dd850513 addi a0,a0,-552 # 3bc0b3a8 + 3bc085d8: d81f70ef jal ra,3bc00358 + 3bc085dc: a001 j 3bc085dc + 3bc085de: 0e4000ef jal ra,3bc086c2 + 3bc085e2: 0810 addi a2,sp,16 + 3bc085e4: 082c addi a1,sp,24 + 3bc085e6: 0068 addi a0,sp,12 + 3bc085e8: 37a000ef jal ra,3bc08962 + 3bc085ec: 47b2 lw a5,12(sp) + 3bc085ee: eb81 bnez a5,3bc085fe + 3bc085f0: 00003517 auipc a0,0x3 + 3bc085f4: db850513 addi a0,a0,-584 # 3bc0b3a8 + 3bc085f8: d61f70ef jal ra,3bc00358 + 3bc085fc: a001 j 3bc085fc + 3bc085fe: 00003517 auipc a0,0x3 + 3bc08602: dc250513 addi a0,a0,-574 # 3bc0b3c0 + 3bc08606: d53f70ef jal ra,3bc00358 + 3bc0860a: 080087b7 lui a5,0x8008 + 3bc0860e: 4595 li a1,5 + 3bc08610: cbac sw a1,80(a5) + 3bc08612: 08078613 addi a2,a5,128 # 8008080 + 3bc08616: 01000737 lui a4,0x1000 + 3bc0861a: ca2c sw a1,80(a2) + 3bc0861c: 10070713 addi a4,a4,256 # 1000100 <__BSS_SIZE__+0xffa4f0> + 3bc08620: c398 sw a4,0(a5) + 3bc08622: 43d4 lw a3,4(a5) + 3bc08624: 2681 sext.w a3,a3 + 3bc08626: c006f693 andi a3,a3,-1024 + 3bc0862a: c3d4 sw a3,4(a5) + 3bc0862c: c218 sw a4,0(a2) + 3bc0862e: 4254 lw a3,4(a2) + 3bc08630: 2681 sext.w a3,a3 + 3bc08632: c006f693 andi a3,a3,-1024 + 3bc08636: c254 sw a3,4(a2) + 3bc08638: 40078613 addi a2,a5,1024 + 3bc0863c: ca2c sw a1,80(a2) + 3bc0863e: 48078793 addi a5,a5,1152 + 3bc08642: cbac sw a1,80(a5) + 3bc08644: c218 sw a4,0(a2) + 3bc08646: 4254 lw a3,4(a2) + 3bc08648: 2681 sext.w a3,a3 + 3bc0864a: c006f693 andi a3,a3,-1024 + 3bc0864e: c254 sw a3,4(a2) + 3bc08650: c398 sw a4,0(a5) + 3bc08652: 43d8 lw a4,4(a5) + 3bc08654: 2701 sext.w a4,a4 + 3bc08656: c0077713 andi a4,a4,-1024 + 3bc0865a: c3d8 sw a4,4(a5) + 3bc0865c: 0800a737 lui a4,0x800a + 3bc08660: 4b5c lw a5,20(a4) + 3bc08662: 2781 sext.w a5,a5 + 3bc08664: 1007e793 ori a5,a5,256 + 3bc08668: cb5c sw a5,20(a4) + 3bc0866a: d97ff0ef jal ra,3bc08400 + 3bc0866e: 70a2 ld ra,40(sp) + 3bc08670: 6145 addi sp,sp,48 + 3bc08672: 8082 ret + +000000003bc08674 : + 3bc08674: 00060737 lui a4,0x60 + 3bc08678: 080107b7 lui a5,0x8010 + 3bc0867c: 0719 addi a4,a4,6 + 3bc0867e: c398 sw a4,0(a5) + 3bc08680: 80200737 lui a4,0x80200 + 3bc08684: 1101 addi sp,sp,-32 + 3bc08686: a0070713 addi a4,a4,-1536 # ffffffff801ffa00 <__BL2_END__+0xffffffff445ec5f0> + 3bc0868a: c63a sw a4,12(sp) + 3bc0868c: 40200737 lui a4,0x40200 + 3bc08690: e802 sd zero,16(sp) + 3bc08692: ec02 sd zero,24(sp) + 3bc08694: a0070713 addi a4,a4,-1536 # 401ffa00 <__BL2_END__+0x45ec5f0> + 3bc08698: c3b8 sw a4,64(a5) + 3bc0869a: 4732 lw a4,12(sp) + 3bc0869c: c3f8 sw a4,68(a5) + 3bc0869e: 4742 lw a4,16(sp) + 3bc086a0: c7b8 sw a4,72(a5) + 3bc086a2: 4752 lw a4,20(sp) + 3bc086a4: c7f8 sw a4,76(a5) + 3bc086a6: 4762 lw a4,24(sp) + 3bc086a8: cbb8 sw a4,80(a5) + 3bc086aa: 4772 lw a4,28(sp) + 3bc086ac: cbf8 sw a4,84(a5) + 3bc086ae: 00100737 lui a4,0x100 + 3bc086b2: 0007a823 sw zero,16(a5) # 8010010 + 3bc086b6: 177d addi a4,a4,-1 + 3bc086b8: cbd8 sw a4,20(a5) + 3bc086ba: 4711 li a4,4 + 3bc086bc: cf98 sw a4,24(a5) + 3bc086be: 6105 addi sp,sp,32 + 3bc086c0: 8082 ret + +000000003bc086c2 : + 3bc086c2: 000c0737 lui a4,0xc0 + 3bc086c6: 080107b7 lui a5,0x8010 + 3bc086ca: 0731 addi a4,a4,12 + 3bc086cc: c398 sw a4,0(a5) + 3bc086ce: 6705 lui a4,0x1 + 3bc086d0: f0570713 addi a4,a4,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc086d4: d3d8 sw a4,36(a5) + 3bc086d6: 80103737 lui a4,0x80103 + 3bc086da: 1101 addi sp,sp,-32 + 3bc086dc: c0f70713 addi a4,a4,-1009 # ffffffff80102c0f <__BL2_END__+0xffffffff444ef7ff> + 3bc086e0: c63a sw a4,12(sp) + 3bc086e2: c0000737 lui a4,0xc0000 + 3bc086e6: 0705 addi a4,a4,1 + 3bc086e8: 1702 slli a4,a4,0x20 + 3bc086ea: e83a sd a4,16(sp) + 3bc086ec: 40103737 lui a4,0x40103 + 3bc086f0: ec02 sd zero,24(sp) + 3bc086f2: c0f70713 addi a4,a4,-1009 # 40102c0f <__BL2_END__+0x44ef7ff> + 3bc086f6: c3b8 sw a4,64(a5) + 3bc086f8: 4732 lw a4,12(sp) + 3bc086fa: c3f8 sw a4,68(a5) + 3bc086fc: 4742 lw a4,16(sp) + 3bc086fe: c7b8 sw a4,72(a5) + 3bc08700: 4752 lw a4,20(sp) + 3bc08702: c7f8 sw a4,76(a5) + 3bc08704: 4762 lw a4,24(sp) + 3bc08706: cbb8 sw a4,80(a5) + 3bc08708: 4772 lw a4,28(sp) + 3bc0870a: cbf8 sw a4,84(a5) + 3bc0870c: 00100737 lui a4,0x100 + 3bc08710: 0007a823 sw zero,16(a5) # 8010010 + 3bc08714: 177d addi a4,a4,-1 + 3bc08716: cbd8 sw a4,20(a5) + 3bc08718: 02000713 li a4,32 + 3bc0871c: cf98 sw a4,24(a5) + 3bc0871e: 6105 addi sp,sp,32 + 3bc08720: 8082 ret + +000000003bc08722 : + 3bc08722: 00060737 lui a4,0x60 + 3bc08726: 080107b7 lui a5,0x8010 + 3bc0872a: 0719 addi a4,a4,6 + 3bc0872c: c398 sw a4,0(a5) + 3bc0872e: 1101 addi sp,sp,-32 + 3bc08730: 80004737 lui a4,0x80004 + 3bc08734: e802 sd zero,16(sp) + 3bc08736: ec02 sd zero,24(sp) + 3bc08738: c602 sw zero,12(sp) + 3bc0873a: a0070713 addi a4,a4,-1536 # ffffffff80003a00 <__BL2_END__+0xffffffff443f05f0> + 3bc0873e: c3b8 sw a4,64(a5) + 3bc08740: 4732 lw a4,12(sp) + 3bc08742: c3f8 sw a4,68(a5) + 3bc08744: 4742 lw a4,16(sp) + 3bc08746: c7b8 sw a4,72(a5) + 3bc08748: 4752 lw a4,20(sp) + 3bc0874a: c7f8 sw a4,76(a5) + 3bc0874c: 4762 lw a4,24(sp) + 3bc0874e: cbb8 sw a4,80(a5) + 3bc08750: 4772 lw a4,28(sp) + 3bc08752: cbf8 sw a4,84(a5) + 3bc08754: 00100737 lui a4,0x100 + 3bc08758: 0007a823 sw zero,16(a5) # 8010010 + 3bc0875c: 177d addi a4,a4,-1 + 3bc0875e: cbd8 sw a4,20(a5) + 3bc08760: 4711 li a4,4 + 3bc08762: cf98 sw a4,24(a5) + 3bc08764: 6105 addi sp,sp,32 + 3bc08766: 8082 ret + +000000003bc08768 : + 3bc08768: 000607b7 lui a5,0x60 + 3bc0876c: 08010737 lui a4,0x8010 + 3bc08770: 0799 addi a5,a5,6 + 3bc08772: c31c sw a5,0(a4) + 3bc08774: 1101 addi sp,sp,-32 + 3bc08776: e519 bnez a0,3bc08784 + 3bc08778: 200017b7 lui a5,0x20001 + 3bc0877c: 078a slli a5,a5,0x2 + 3bc0877e: a0078793 addi a5,a5,-1536 # 20000a00 + 3bc08782: a0ad j 3bc087ec + 3bc08784: 4785 li a5,1 + 3bc08786: 04f51c63 bne a0,a5,3bc087de + 3bc0878a: 6785 lui a5,0x1 + 3bc0878c: f0578793 addi a5,a5,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc08790: d35c sw a5,36(a4) + 3bc08792: 00003797 auipc a5,0x3 + 3bc08796: c467b783 ld a5,-954(a5) # 3bc0b3d8 + 3bc0879a: e43e sd a5,8(sp) + 3bc0879c: 00003797 auipc a5,0x3 + 3bc087a0: c447b783 ld a5,-956(a5) # 3bc0b3e0 + 3bc087a4: e83e sd a5,16(sp) + 3bc087a6: 478d li a5,3 + 3bc087a8: 07fa slli a5,a5,0x1e + 3bc087aa: 0785 addi a5,a5,1 + 3bc087ac: ec3e sd a5,24(sp) + 3bc087ae: 4722 lw a4,8(sp) + 3bc087b0: 080107b7 lui a5,0x8010 + 3bc087b4: c3b8 sw a4,64(a5) + 3bc087b6: 4732 lw a4,12(sp) + 3bc087b8: c3f8 sw a4,68(a5) + 3bc087ba: 4742 lw a4,16(sp) + 3bc087bc: c7b8 sw a4,72(a5) + 3bc087be: 4752 lw a4,20(sp) + 3bc087c0: c7f8 sw a4,76(a5) + 3bc087c2: 4762 lw a4,24(sp) + 3bc087c4: cbb8 sw a4,80(a5) + 3bc087c6: 4772 lw a4,28(sp) + 3bc087c8: cbf8 sw a4,84(a5) + 3bc087ca: 00100737 lui a4,0x100 + 3bc087ce: 0007a823 sw zero,16(a5) # 8010010 + 3bc087d2: 177d addi a4,a4,-1 + 3bc087d4: cbd8 sw a4,20(a5) + 3bc087d6: 4711 li a4,4 + 3bc087d8: cf98 sw a4,24(a5) + 3bc087da: 6105 addi sp,sp,32 + 3bc087dc: 8082 ret + 3bc087de: 4789 li a5,2 + 3bc087e0: 00f51a63 bne a0,a5,3bc087f4 + 3bc087e4: 00003797 auipc a5,0x3 + 3bc087e8: c047b783 ld a5,-1020(a5) # 3bc0b3e8 + 3bc087ec: e43e sd a5,8(sp) + 3bc087ee: e802 sd zero,16(sp) + 3bc087f0: ec02 sd zero,24(sp) + 3bc087f2: bf75 j 3bc087ae + 3bc087f4: 47c9 li a5,18 + 3bc087f6: 02f51563 bne a0,a5,3bc08820 + 3bc087fa: 080006b7 lui a3,0x8000 + 3bc087fe: 0846a783 lw a5,132(a3) # 8000084 + 3bc08802: 6709 lui a4,0x2 + 3bc08804: f0070713 addi a4,a4,-256 # 1f00 <__BSS_SIZE__-0x3d10> + 3bc08808: 2781 sext.w a5,a5 + 3bc0880a: 9b81 andi a5,a5,-32 + 3bc0880c: 01d7e793 ori a5,a5,29 + 3bc08810: 8fd9 or a5,a5,a4 + 3bc08812: 0000b717 auipc a4,0xb + 3bc08816: bcf72f23 sw a5,-1058(a4) # 3bc133f0 + 3bc0881a: 08f6a223 sw a5,132(a3) + 3bc0881e: b7d9 j 3bc087e4 + 3bc08820: 47c1 li a5,16 + 3bc08822: f8f516e3 bne a0,a5,3bc087ae + 3bc08826: 08000637 lui a2,0x8000 + 3bc0882a: 08462783 lw a5,132(a2) # 8000084 + 3bc0882e: 6689 lui a3,0x2 + 3bc08830: f0068693 addi a3,a3,-256 # 1f00 <__BSS_SIZE__-0x3d10> + 3bc08834: 2781 sext.w a5,a5 + 3bc08836: 9b81 andi a5,a5,-32 + 3bc08838: 0017e793 ori a5,a5,1 + 3bc0883c: 3007c713 xori a4,a5,768 + 3bc08840: 8f75 and a4,a4,a3 + 3bc08842: 8fb9 xor a5,a5,a4 + 3bc08844: 0000b717 auipc a4,0xb + 3bc08848: baf72623 sw a5,-1108(a4) # 3bc133f0 + 3bc0884c: 08f62223 sw a5,132(a2) + 3bc08850: b725 j 3bc08778 + +000000003bc08852 : + 3bc08852: 000607b7 lui a5,0x60 + 3bc08856: 08010737 lui a4,0x8010 + 3bc0885a: 0799 addi a5,a5,6 + 3bc0885c: c31c sw a5,0(a4) + 3bc0885e: 1101 addi sp,sp,-32 + 3bc08860: e909 bnez a0,3bc08872 + 3bc08862: 00003797 auipc a5,0x3 + 3bc08866: b8e7b783 ld a5,-1138(a5) # 3bc0b3f0 + 3bc0886a: e43e sd a5,8(sp) + 3bc0886c: e802 sd zero,16(sp) + 3bc0886e: ec02 sd zero,24(sp) + 3bc08870: a035 j 3bc0889c + 3bc08872: 4785 li a5,1 + 3bc08874: 04f51c63 bne a0,a5,3bc088cc + 3bc08878: 6785 lui a5,0x1 + 3bc0887a: f0578793 addi a5,a5,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc0887e: d35c sw a5,36(a4) + 3bc08880: 00003797 auipc a5,0x3 + 3bc08884: b587b783 ld a5,-1192(a5) # 3bc0b3d8 + 3bc08888: e43e sd a5,8(sp) + 3bc0888a: 00003797 auipc a5,0x3 + 3bc0888e: b567b783 ld a5,-1194(a5) # 3bc0b3e0 + 3bc08892: e83e sd a5,16(sp) + 3bc08894: 478d li a5,3 + 3bc08896: 07fa slli a5,a5,0x1e + 3bc08898: 0785 addi a5,a5,1 + 3bc0889a: ec3e sd a5,24(sp) + 3bc0889c: 4722 lw a4,8(sp) + 3bc0889e: 080107b7 lui a5,0x8010 + 3bc088a2: c3b8 sw a4,64(a5) + 3bc088a4: 4732 lw a4,12(sp) + 3bc088a6: c3f8 sw a4,68(a5) + 3bc088a8: 4742 lw a4,16(sp) + 3bc088aa: c7b8 sw a4,72(a5) + 3bc088ac: 4752 lw a4,20(sp) + 3bc088ae: c7f8 sw a4,76(a5) + 3bc088b0: 4762 lw a4,24(sp) + 3bc088b2: cbb8 sw a4,80(a5) + 3bc088b4: 4772 lw a4,28(sp) + 3bc088b6: cbf8 sw a4,84(a5) + 3bc088b8: 00100737 lui a4,0x100 + 3bc088bc: 0007a823 sw zero,16(a5) # 8010010 + 3bc088c0: 177d addi a4,a4,-1 + 3bc088c2: cbd8 sw a4,20(a5) + 3bc088c4: 4711 li a4,4 + 3bc088c6: cf98 sw a4,24(a5) + 3bc088c8: 6105 addi sp,sp,32 + 3bc088ca: 8082 ret + 3bc088cc: 47c5 li a5,17 + 3bc088ce: 00003717 auipc a4,0x3 + 3bc088d2: b2270713 addi a4,a4,-1246 # 3bc0b3f0 + 3bc088d6: 00f51f63 bne a0,a5,3bc088f4 + 3bc088da: 67c1 lui a5,0x10 + 3bc088dc: 30178793 addi a5,a5,769 # 10301 <__BSS_SIZE__+0xa6f1> + 3bc088e0: 0000b697 auipc a3,0xb + 3bc088e4: b0f6a823 sw a5,-1264(a3) # 3bc133f0 + 3bc088e8: 080006b7 lui a3,0x8000 + 3bc088ec: 18f6a823 sw a5,400(a3) # 8000190 + 3bc088f0: 631c ld a5,0(a4) + 3bc088f2: bfa5 j 3bc0886a + 3bc088f4: 47c9 li a5,18 + 3bc088f6: f6f516e3 bne a0,a5,3bc08862 + 3bc088fa: 67c9 lui a5,0x12 + 3bc088fc: f1d78793 addi a5,a5,-227 # 11f1d <__BSS_SIZE__+0xc30d> + 3bc08900: b7c5 j 3bc088e0 + +000000003bc08902 : + 3bc08902: 00060737 lui a4,0x60 + 3bc08906: 080107b7 lui a5,0x8010 + 3bc0890a: 0719 addi a4,a4,6 + 3bc0890c: c398 sw a4,0(a5) + 3bc0890e: 6705 lui a4,0x1 + 3bc08910: f0570713 addi a4,a4,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc08914: d3d8 sw a4,36(a5) + 3bc08916: 40103737 lui a4,0x40103 + 3bc0891a: 1101 addi sp,sp,-32 + 3bc0891c: e0070713 addi a4,a4,-512 # 40102e00 <__BL2_END__+0x44ef9f0> + 3bc08920: c63a sw a4,12(sp) + 3bc08922: 00401737 lui a4,0x401 + 3bc08926: 81770713 addi a4,a4,-2025 # 400817 <__BSS_SIZE__+0x3fac07> + 3bc0892a: 0726 slli a4,a4,0x9 + 3bc0892c: e83a sd a4,16(sp) + 3bc0892e: 40102737 lui a4,0x40102 + 3bc08932: ec02 sd zero,24(sp) + 3bc08934: 60070713 addi a4,a4,1536 # 40102600 <__BL2_END__+0x44ef1f0> + 3bc08938: c3b8 sw a4,64(a5) + 3bc0893a: 4732 lw a4,12(sp) + 3bc0893c: c3f8 sw a4,68(a5) + 3bc0893e: 4742 lw a4,16(sp) + 3bc08940: c7b8 sw a4,72(a5) + 3bc08942: 4752 lw a4,20(sp) + 3bc08944: c7f8 sw a4,76(a5) + 3bc08946: 4762 lw a4,24(sp) + 3bc08948: cbb8 sw a4,80(a5) + 3bc0894a: 4772 lw a4,28(sp) + 3bc0894c: cbf8 sw a4,84(a5) + 3bc0894e: 00100737 lui a4,0x100 + 3bc08952: 0007a823 sw zero,16(a5) # 8010010 + 3bc08956: 177d addi a4,a4,-1 + 3bc08958: cbd8 sw a4,20(a5) + 3bc0895a: 4711 li a4,4 + 3bc0895c: cf98 sw a4,24(a5) + 3bc0895e: 6105 addi sp,sp,32 + 3bc08960: 8082 ret + +000000003bc08962 : + 3bc08962: 000307b7 lui a5,0x30 + 3bc08966: 08010737 lui a4,0x8010 + 3bc0896a: 078d addi a5,a5,3 + 3bc0896c: c31c sw a5,0(a4) + 3bc0896e: 0000b897 auipc a7,0xb + 3bc08972: a8288893 addi a7,a7,-1406 # 3bc133f0 + 3bc08976: 08072783 lw a5,128(a4) # 8010080 + 3bc0897a: 08070693 addi a3,a4,128 + 3bc0897e: 2781 sext.w a5,a5 + 3bc08980: 00f8a023 sw a5,0(a7) + 3bc08984: 0047f813 andi a6,a5,4 + 3bc08988: fe0807e3 beqz a6,3bc08976 + 3bc0898c: 0c37b78b extu a5,a5,3,3 + 3bc08990: c79d beqz a5,3bc089be + 3bc08992: 00052023 sw zero,0(a0) + 3bc08996: e2e6c80b lwd a6,a4,(a3),1,3 + 3bc0899a: e4f6c50b lwd a0,a5,(a3),2,3 + 3bc0899e: 1702 slli a4,a4,0x20 + 3bc089a0: 7c08368b extu a3,a6,31,0 + 3bc089a4: 8f55 or a4,a4,a3 + 3bc089a6: 1782 slli a5,a5,0x20 + 3bc089a8: 7c05350b extu a0,a0,31,0 + 3bc089ac: e198 sd a4,0(a1) + 3bc089ae: 8fc9 or a5,a5,a0 + 3bc089b0: e21c sd a5,0(a2) + 3bc089b2: 080107b7 lui a5,0x8010 + 3bc089b6: 00050737 lui a4,0x50 + 3bc089ba: c398 sw a4,0(a5) + 3bc089bc: 8082 ret + 3bc089be: 4785 li a5,1 + 3bc089c0: c11c sw a5,0(a0) + 3bc089c2: 0005b023 sd zero,0(a1) + 3bc089c6: 00063023 sd zero,0(a2) + 3bc089ca: b7e5 j 3bc089b2 + +000000003bc089cc : + 3bc089cc: 7159 addi sp,sp,-112 + 3bc089ce: f0a2 sd s0,96(sp) + 3bc089d0: eca6 sd s1,88(sp) + 3bc089d2: e8ca sd s2,80(sp) + 3bc089d4: e4ce sd s3,72(sp) + 3bc089d6: e0d2 sd s4,64(sp) + 3bc089d8: fc56 sd s5,56(sp) + 3bc089da: f486 sd ra,104(sp) + 3bc089dc: f85a sd s6,48(sp) + 3bc089de: f45e sd s7,40(sp) + 3bc089e0: f062 sd s8,32(sp) + 3bc089e2: c93ff0ef jal ra,3bc08674 + 3bc089e6: 080017b7 lui a5,0x8001 + 3bc089ea: b147a403 lw s0,-1260(a5) # 8000b14 + 3bc089ee: b447a783 lw a5,-1212(a5) + 3bc089f2: 4925 li s2,9 + 3bc089f4: 080007b7 lui a5,0x8000 + 3bc089f8: 0947a483 lw s1,148(a5) # 8000094 + 3bc089fc: 2401 sext.w s0,s0 + 3bc089fe: 001f0a37 lui s4,0x1f0 + 3bc08a02: 2481 sext.w s1,s1 + 3bc08a04: 080019b7 lui s3,0x8001 + 3bc08a08: 4a85 li s5,1 + 3bc08a0a: 0109171b slliw a4,s2,0x10 + 3bc08a0e: 8f21 xor a4,a4,s0 + 3bc08a10: 01477733 and a4,a4,s4 + 3bc08a14: 8c39 xor s0,s0,a4 + 3bc08a16: 2401 sext.w s0,s0 + 3bc08a18: b089aa23 sw s0,-1260(s3) # 8000b14 + 3bc08a1c: b489a223 sw s0,-1212(s3) + 3bc08a20: 0830 addi a2,sp,24 + 3bc08a22: 080c addi a1,sp,16 + 3bc08a24: 0068 addi a0,sp,12 + 3bc08a26: f3dff0ef jal ra,3bc08962 + 3bc08a2a: 47b2 lw a5,12(sp) + 3bc08a2c: 00090c1b sext.w s8,s2 + 3bc08a30: ef8d bnez a5,3bc08a6a + 3bc08a32: 00f4f793 andi a5,s1,15 + 3bc08a36: 2785 addiw a5,a5,1 + 3bc08a38: 018787bb addw a5,a5,s8 + 3bc08a3c: 0107979b slliw a5,a5,0x10 + 3bc08a40: 8fa1 xor a5,a5,s0 + 3bc08a42: 0147f7b3 and a5,a5,s4 + 3bc08a46: 8c3d xor s0,s0,a5 + 3bc08a48: 2401 sext.w s0,s0 + 3bc08a4a: b089aa23 sw s0,-1260(s3) + 3bc08a4e: b489a223 sw s0,-1212(s3) + 3bc08a52: 70a6 ld ra,104(sp) + 3bc08a54: 7406 ld s0,96(sp) + 3bc08a56: 64e6 ld s1,88(sp) + 3bc08a58: 6946 ld s2,80(sp) + 3bc08a5a: 69a6 ld s3,72(sp) + 3bc08a5c: 6a06 ld s4,64(sp) + 3bc08a5e: 7ae2 ld s5,56(sp) + 3bc08a60: 7b42 ld s6,48(sp) + 3bc08a62: 7ba2 ld s7,40(sp) + 3bc08a64: 7c02 ld s8,32(sp) + 3bc08a66: 6165 addi sp,sp,112 + 3bc08a68: 8082 ret + 3bc08a6a: 397d addiw s2,s2,-1 + 3bc08a6c: f9591fe3 bne s2,s5,3bc08a0a + 3bc08a70: b7cd j 3bc08a52 + +000000003bc08a72 : + 3bc08a72: 080067b7 lui a5,0x8006 + 3bc08a76: 47fc lw a5,76(a5) + 3bc08a78: 0000b717 auipc a4,0xb + 3bc08a7c: 97870713 addi a4,a4,-1672 # 3bc133f0 + 3bc08a80: 2781 sext.w a5,a5 + 3bc08a82: c31c sw a5,0(a4) + 3bc08a84: 1447b78b extu a5,a5,5,4 + 3bc08a88: cf9d beqz a5,3bc08ac6 + 3bc08a8a: 080006b7 lui a3,0x8000 + 3bc08a8e: 42bc lw a5,64(a3) + 3bc08a90: 7601 lui a2,0xfffe0 + 3bc08a92: 1675 addi a2,a2,-3 + 3bc08a94: 2781 sext.w a5,a5 + 3bc08a96: 8ff1 and a5,a5,a2 + 3bc08a98: c31c sw a5,0(a4) + 3bc08a9a: c2bc sw a5,64(a3) + 3bc08a9c: 42bc lw a5,64(a3) + 3bc08a9e: 00020637 lui a2,0x20 + 3bc08aa2: 0609 addi a2,a2,2 + 3bc08aa4: 2781 sext.w a5,a5 + 3bc08aa6: 8fd1 or a5,a5,a2 + 3bc08aa8: c2bc sw a5,64(a3) + 3bc08aaa: 0000b797 auipc a5,0xb + 3bc08aae: 9407a323 sw zero,-1722(a5) # 3bc133f0 + 3bc08ab2: 08003637 lui a2,0x8003 + 3bc08ab6: 66c1 lui a3,0x10 + 3bc08ab8: 4a5c lw a5,20(a2) + 3bc08aba: 2781 sext.w a5,a5 + 3bc08abc: c31c sw a5,0(a4) + 3bc08abe: 8ff5 and a5,a5,a3 + 3bc08ac0: 2781 sext.w a5,a5 + 3bc08ac2: dbfd beqz a5,3bc08ab8 + 3bc08ac4: 8082 ret + 3bc08ac6: 08000637 lui a2,0x8000 + 3bc08aca: 423c lw a5,64(a2) + 3bc08acc: 7681 lui a3,0xfffe0 + 3bc08ace: 16f5 addi a3,a3,-3 + 3bc08ad0: 2781 sext.w a5,a5 + 3bc08ad2: 8ff5 and a5,a5,a3 + 3bc08ad4: c31c sw a5,0(a4) + 3bc08ad6: c23c sw a5,64(a2) + 3bc08ad8: 8082 ret + +000000003bc08ada : + 3bc08ada: 080066b7 lui a3,0x8006 + 3bc08ade: 46dc lw a5,12(a3) + 3bc08ae0: 7769 lui a4,0xffffa + 3bc08ae2: 177d addi a4,a4,-1 + 3bc08ae4: 2781 sext.w a5,a5 + 3bc08ae6: 8ff9 and a5,a5,a4 + 3bc08ae8: 03003737 lui a4,0x3003 + 3bc08aec: c6dc sw a5,12(a3) + 3bc08aee: 90070713 addi a4,a4,-1792 # 3002900 <__BSS_SIZE__+0x2ffccf0> + 3bc08af2: 0000b797 auipc a5,0xb + 3bc08af6: 8d67a783 lw a5,-1834(a5) # 3bc133c8 + 3bc08afa: cb7c sw a5,84(a4) + 3bc08afc: 0000b797 auipc a5,0xb + 3bc08b00: 8d47d783 lhu a5,-1836(a5) # 3bc133d0 + 3bc08b04: cf3c sw a5,88(a4) + 3bc08b06: 0000b797 auipc a5,0xb + 3bc08b0a: 8d27b783 ld a5,-1838(a5) # 3bc133d8 + 3bc08b0e: 5c07b78b extu a5,a5,23,0 + 3bc08b12: 2781 sext.w a5,a5 + 3bc08b14: 0000b697 auipc a3,0xb + 3bc08b18: 8dc68693 addi a3,a3,-1828 # 3bc133f0 + 3bc08b1c: c29c sw a5,0(a3) + 3bc08b1e: cf7c sw a5,92(a4) + 3bc08b20: 4b3c lw a5,80(a4) + 3bc08b22: 2781 sext.w a5,a5 + 3bc08b24: 0017c793 xori a5,a5,1 + 3bc08b28: fa17f793 andi a5,a5,-95 + 3bc08b2c: 0207e793 ori a5,a5,32 + 3bc08b30: c29c sw a5,0(a3) + 3bc08b32: cb3c sw a5,80(a4) + 3bc08b34: 8082 ret + +000000003bc08b36 : + 3bc08b36: 08006737 lui a4,0x8006 + 3bc08b3a: 475c lw a5,12(a4) + 3bc08b3c: 6691 lui a3,0x4 + 3bc08b3e: 8fd5 or a5,a5,a3 + 3bc08b40: 0000b697 auipc a3,0xb + 3bc08b44: 8af6a823 sw a5,-1872(a3) # 3bc133f0 + 3bc08b48: c75c sw a5,12(a4) + 3bc08b4a: 8082 ret + +000000003bc08b4c : + 3bc08b4c: 08006737 lui a4,0x8006 + 3bc08b50: 475c lw a5,12(a4) + 3bc08b52: 6689 lui a3,0x2 + 3bc08b54: 8fd5 or a5,a5,a3 + 3bc08b56: 0000b697 auipc a3,0xb + 3bc08b5a: 88f6ad23 sw a5,-1894(a3) # 3bc133f0 + 3bc08b5e: c75c sw a5,12(a4) + 3bc08b60: 8082 ret + +000000003bc08b62 : + 3bc08b62: 1101 addi sp,sp,-32 + 3bc08b64: 0000b797 auipc a5,0xb + 3bc08b68: 8807a623 sw zero,-1908(a5) # 3bc133f0 + 3bc08b6c: 080066b7 lui a3,0x8006 + 3bc08b70: e822 sd s0,16(sp) + 3bc08b72: ec06 sd ra,24(sp) + 3bc08b74: e426 sd s1,8(sp) + 3bc08b76: e04a sd s2,0(sp) + 3bc08b78: 0006a223 sw zero,4(a3) # 8006004 + 3bc08b7c: 0006a423 sw zero,8(a3) + 3bc08b80: 46dc lw a5,12(a3) + 3bc08b82: 0000b417 auipc s0,0xb + 3bc08b86: 86e40413 addi s0,s0,-1938 # 3bc133f0 + 3bc08b8a: 2781 sext.w a5,a5 + 3bc08b8c: f7f7f793 andi a5,a5,-129 + 3bc08b90: c01c sw a5,0(s0) + 3bc08b92: c6dc sw a5,12(a3) + 3bc08b94: 46fc lw a5,76(a3) + 3bc08b96: c01c sw a5,0(s0) + 3bc08b98: 46fc lw a5,76(a3) + 3bc08b9a: c01c sw a5,0(s0) + 3bc08b9c: 46fc lw a5,76(a3) + 3bc08b9e: c01c sw a5,0(s0) + 3bc08ba0: 46fc lw a5,76(a3) + 3bc08ba2: c01c sw a5,0(s0) + 3bc08ba4: 46fc lw a5,76(a3) + 3bc08ba6: c01c sw a5,0(s0) + 3bc08ba8: 46f8 lw a4,76(a3) + 3bc08baa: 0007079b sext.w a5,a4 + 3bc08bae: 8b05 andi a4,a4,1 + 3bc08bb0: c315 beqz a4,3bc08bd4 + 3bc08bb2: 2487b60b extu a2,a5,9,8 + 3bc08bb6: 1447b70b extu a4,a5,5,4 + 3bc08bba: e629 bnez a2,3bc08c04 + 3bc08bbc: fcf7f793 andi a5,a5,-49 + 3bc08bc0: 0087171b slliw a4,a4,0x8 + 3bc08bc4: 8f3d xor a4,a4,a5 + 3bc08bc6: 30077713 andi a4,a4,768 + 3bc08bca: 8fb9 xor a5,a5,a4 + 3bc08bcc: c01c sw a5,0(s0) + 3bc08bce: c6fc sw a5,76(a3) + 3bc08bd0: f7dff0ef jal ra,3bc08b4c + 3bc08bd4: 4685 li a3,1 + 3bc08bd6: c014 sw a3,0(s0) + 3bc08bd8: 08006737 lui a4,0x8006 + 3bc08bdc: c354 sw a3,4(a4) + 3bc08bde: 475c lw a5,12(a4) + 3bc08be0: 64a1 lui s1,0x8 + 3bc08be2: 08006937 lui s2,0x8006 + 3bc08be6: 2781 sext.w a5,a5 + 3bc08be8: 0807e793 ori a5,a5,128 + 3bc08bec: c75c sw a5,12(a4) + 3bc08bee: c014 sw a3,0(s0) + 3bc08bf0: c714 sw a3,8(a4) + 3bc08bf2: 401c lw a5,0(s0) + 3bc08bf4: 8fe5 and a5,a5,s1 + 3bc08bf6: cbb9 beqz a5,3bc08c4c + 3bc08bf8: 60e2 ld ra,24(sp) + 3bc08bfa: 6442 ld s0,16(sp) + 3bc08bfc: 64a2 ld s1,8(sp) + 3bc08bfe: 6902 ld s2,0(sp) + 3bc08c00: 6105 addi sp,sp,32 + 3bc08c02: 8082 ret + 3bc08c04: 4589 li a1,2 + 3bc08c06: 02b61163 bne a2,a1,3bc08c28 + 3bc08c0a: fcf7f793 andi a5,a5,-49 + 3bc08c0e: 0207e793 ori a5,a5,32 + 3bc08c12: 0087171b slliw a4,a4,0x8 + 3bc08c16: 8f3d xor a4,a4,a5 + 3bc08c18: 30077713 andi a4,a4,768 + 3bc08c1c: 8fb9 xor a5,a5,a4 + 3bc08c1e: c01c sw a5,0(s0) + 3bc08c20: c6fc sw a5,76(a3) + 3bc08c22: eb9ff0ef jal ra,3bc08ada + 3bc08c26: b77d j 3bc08bd4 + 3bc08c28: 4585 li a1,1 + 3bc08c2a: fab615e3 bne a2,a1,3bc08bd4 + 3bc08c2e: fcf7f793 andi a5,a5,-49 + 3bc08c32: 0107e793 ori a5,a5,16 + 3bc08c36: 0087171b slliw a4,a4,0x8 + 3bc08c3a: 8f3d xor a4,a4,a5 + 3bc08c3c: 30077713 andi a4,a4,768 + 3bc08c40: 8fb9 xor a5,a5,a4 + 3bc08c42: c01c sw a5,0(s0) + 3bc08c44: c6fc sw a5,76(a3) + 3bc08c46: ef1ff0ef jal ra,3bc08b36 + 3bc08c4a: b769 j 3bc08bd4 + 3bc08c4c: 01092783 lw a5,16(s2) # 8006010 + 3bc08c50: 4501 li a0,0 + 3bc08c52: c01c sw a5,0(s0) + 3bc08c54: d36f70ef jal ra,3bc0018a + 3bc08c58: bf69 j 3bc08bf2 + +000000003bc08c5a : + 3bc08c5a: 080067b7 lui a5,0x8006 + 3bc08c5e: 43b4 lw a3,64(a5) + 3bc08c60: bf000737 lui a4,0xbf000 + 3bc08c64: 377d addiw a4,a4,-1 + 3bc08c66: 8f75 and a4,a4,a3 + 3bc08c68: 0000a697 auipc a3,0xa + 3bc08c6c: 78868693 addi a3,a3,1928 # 3bc133f0 + 3bc08c70: c298 sw a4,0(a3) + 3bc08c72: c3b8 sw a4,64(a5) + 3bc08c74: 43b8 lw a4,64(a5) + 3bc08c76: 0006a023 sw zero,0(a3) + 3bc08c7a: 0407a023 sw zero,64(a5) # 8006040 + 3bc08c7e: 4fd8 lw a4,28(a5) + 3bc08c80: 2701 sext.w a4,a4 + 3bc08c82: 08076713 ori a4,a4,128 + 3bc08c86: cfd8 sw a4,28(a5) + 3bc08c88: 0006a023 sw zero,0(a3) + 3bc08c8c: 0007a023 sw zero,0(a5) + 3bc08c90: 4fd8 lw a4,28(a5) + 3bc08c92: 2701 sext.w a4,a4 + 3bc08c94: f7f77713 andi a4,a4,-129 + 3bc08c98: c298 sw a4,0(a3) + 3bc08c9a: cfd8 sw a4,28(a5) + 3bc08c9c: 8082 ret + +000000003bc08c9e : + 3bc08c9e: 1141 addi sp,sp,-16 + 3bc08ca0: e406 sd ra,8(sp) + 3bc08ca2: e022 sd s0,0(sp) + 3bc08ca4: ebfff0ef jal ra,3bc08b62 + 3bc08ca8: 08000737 lui a4,0x8000 + 3bc08cac: 15472783 lw a5,340(a4) # 8000154 + 3bc08cb0: 0000a417 auipc s0,0xa + 3bc08cb4: 74040413 addi s0,s0,1856 # 3bc133f0 + 3bc08cb8: 2781 sext.w a5,a5 + 3bc08cba: 9bf9 andi a5,a5,-2 + 3bc08cbc: 14f72a23 sw a5,340(a4) + 3bc08cc0: 00042023 sw zero,0(s0) + 3bc08cc4: 12072823 sw zero,304(a4) + 3bc08cc8: dabff0ef jal ra,3bc08a72 + 3bc08ccc: 080067b7 lui a5,0x8006 + 3bc08cd0: 80000737 lui a4,0x80000 + 3bc08cd4: c3b8 sw a4,64(a5) + 3bc08cd6: 00042023 sw zero,0(s0) + 3bc08cda: 60a2 ld ra,8(sp) + 3bc08cdc: 6402 ld s0,0(sp) + 3bc08cde: 0007a023 sw zero,0(a5) # 8006000 + 3bc08ce2: 0141 addi sp,sp,16 + 3bc08ce4: 8082 ret + +000000003bc08ce6 : + 3bc08ce6: 080007b7 lui a5,0x8000 + 3bc08cea: 10078693 addi a3,a5,256 # 8000100 + 3bc08cee: 4af8 lw a4,84(a3) + 3bc08cf0: 0000a617 auipc a2,0xa + 3bc08cf4: 70060613 addi a2,a2,1792 # 3bc133f0 + 3bc08cf8: 20078793 addi a5,a5,512 + 3bc08cfc: 2701 sext.w a4,a4 + 3bc08cfe: 9b79 andi a4,a4,-2 + 3bc08d00: caf8 sw a4,84(a3) + 3bc08d02: 00062023 sw zero,0(a2) + 3bc08d06: f207a823 sw zero,-208(a5) + 3bc08d0a: 43d4 lw a3,4(a5) + 3bc08d0c: 000405b7 lui a1,0x40 + 3bc08d10: 8ecd or a3,a3,a1 + 3bc08d12: c214 sw a3,0(a2) + 3bc08d14: c3d4 sw a3,4(a5) + 3bc08d16: 53d8 lw a4,36(a5) + 3bc08d18: 8f4d or a4,a4,a1 + 3bc08d1a: c218 sw a4,0(a2) + 3bc08d1c: d3d8 sw a4,36(a5) + 3bc08d1e: 8082 ret + +000000003bc08d20 : + 3bc08d20: 08004737 lui a4,0x8004 + 3bc08d24: 0000a697 auipc a3,0xa + 3bc08d28: 6cc68693 addi a3,a3,1740 # 3bc133f0 + 3bc08d2c: 1bc72783 lw a5,444(a4) # 80041bc + 3bc08d30: 2781 sext.w a5,a5 + 3bc08d32: c29c sw a5,0(a3) + 3bc08d34: 8b85 andi a5,a5,1 + 3bc08d36: dbfd beqz a5,3bc08d2c + 3bc08d38: 32072023 sw zero,800(a4) + 3bc08d3c: 1b072783 lw a5,432(a4) + 3bc08d40: 2781 sext.w a5,a5 + 3bc08d42: fc07f793 andi a5,a5,-64 + 3bc08d46: 0057e793 ori a5,a5,5 + 3bc08d4a: c29c sw a5,0(a3) + 3bc08d4c: 1af72823 sw a5,432(a4) + 3bc08d50: 4785 li a5,1 + 3bc08d52: 32f72023 sw a5,800(a4) + 3bc08d56: 8082 ret + +000000003bc08d58 : + 3bc08d58: 080036b7 lui a3,0x8003 + 3bc08d5c: 0000a717 auipc a4,0xa + 3bc08d60: 69470713 addi a4,a4,1684 # 3bc133f0 + 3bc08d64: 569c lw a5,40(a3) + 3bc08d66: 2781 sext.w a5,a5 + 3bc08d68: c31c sw a5,0(a4) + 3bc08d6a: 1007f793 andi a5,a5,256 + 3bc08d6e: dbfd beqz a5,3bc08d64 + 3bc08d70: 8082 ret + +000000003bc08d72 : + 3bc08d72: 1141 addi sp,sp,-16 + 3bc08d74: 4551 li a0,20 + 3bc08d76: e406 sd ra,8(sp) + 3bc08d78: c12f70ef jal ra,3bc0018a + 3bc08d7c: 080007b7 lui a5,0x8000 + 3bc08d80: 4741 li a4,16 + 3bc08d82: 12e7a023 sw a4,288(a5) # 8000120 + 3bc08d86: 60a2 ld ra,8(sp) + 3bc08d88: 4705 li a4,1 + 3bc08d8a: 0000a697 auipc a3,0xa + 3bc08d8e: 66e6a323 sw a4,1638(a3) # 3bc133f0 + 3bc08d92: 10e7ac23 sw a4,280(a5) + 3bc08d96: 0141 addi sp,sp,16 + 3bc08d98: 8082 ret + +000000003bc08d9a : + 3bc08d9a: 1141 addi sp,sp,-16 + 3bc08d9c: e406 sd ra,8(sp) + 3bc08d9e: 0000a797 auipc a5,0xa + 3bc08da2: 65278793 addi a5,a5,1618 # 3bc133f0 + 3bc08da6: 0007a023 sw zero,0(a5) + 3bc08daa: 08000737 lui a4,0x8000 + 3bc08dae: 10072c23 sw zero,280(a4) # 8000118 + 3bc08db2: 08006737 lui a4,0x8006 + 3bc08db6: 4778 lw a4,76(a4) + 3bc08db8: c398 sw a4,0(a5) + 3bc08dba: ee5ff0ef jal ra,3bc08c9e + 3bc08dbe: 60a2 ld ra,8(sp) + 3bc08dc0: 0141 addi sp,sp,16 + 3bc08dc2: fb1ff06f j 3bc08d72 + +000000003bc08dc6 : + 3bc08dc6: 08004637 lui a2,0x8004 + 3bc08dca: 0000a697 auipc a3,0xa + 3bc08dce: 62668693 addi a3,a3,1574 # 3bc133f0 + 3bc08dd2: 4705 li a4,1 + 3bc08dd4: 425c lw a5,4(a2) + 3bc08dd6: 2781 sext.w a5,a5 + 3bc08dd8: c29c sw a5,0(a3) + 3bc08dda: 8b9d andi a5,a5,7 + 3bc08ddc: fee79ce3 bne a5,a4,3bc08dd4 + 3bc08de0: 8082 ret + +000000003bc08de2 : + 3bc08de2: 4785 li a5,1 + 3bc08de4: 0000a717 auipc a4,0xa + 3bc08de8: 60c70713 addi a4,a4,1548 # 3bc133f0 + 3bc08dec: 080006b7 lui a3,0x8000 + 3bc08df0: c31c sw a5,0(a4) + 3bc08df2: 16f6aa23 sw a5,372(a3) # 8000174 + 3bc08df6: 08003637 lui a2,0x8003 + 3bc08dfa: 468d li a3,3 + 3bc08dfc: 5a1c lw a5,48(a2) + 3bc08dfe: 2781 sext.w a5,a5 + 3bc08e00: c31c sw a5,0(a4) + 3bc08e02: 2487b78b extu a5,a5,9,8 + 3bc08e06: fed79be3 bne a5,a3,3bc08dfc + 3bc08e0a: 4785 li a5,1 + 3bc08e0c: 02f51a63 bne a0,a5,3bc08e40 + 3bc08e10: 0800a7b7 lui a5,0x800a + 3bc08e14: 46ed li a3,27 + 3bc08e16: c394 sw a3,0(a5) + 3bc08e18: 0800a7b7 lui a5,0x800a + 3bc08e1c: 4685 li a3,1 + 3bc08e1e: c3d4 sw a3,4(a5) + 3bc08e20: 020006b7 lui a3,0x2000 + 3bc08e24: fcb68693 addi a3,a3,-53 # 1ffffcb <__BSS_SIZE__+0x1ffa3bb> + 3bc08e28: c794 sw a3,8(a5) + 3bc08e2a: 400006b7 lui a3,0x40000 + 3bc08e2e: 16fd addi a3,a3,-1 + 3bc08e30: c7d4 sw a3,12(a5) + 3bc08e32: 47c1 li a5,16 + 3bc08e34: c31c sw a5,0(a4) + 3bc08e36: 08000737 lui a4,0x8000 + 3bc08e3a: 16f72a23 sw a5,372(a4) # 8000174 + 3bc08e3e: 8082 ret + 3bc08e40: 0800a7b7 lui a5,0x800a + 3bc08e44: 0007a023 sw zero,0(a5) # 800a000 + 3bc08e48: bfc1 j 3bc08e18 + +000000003bc08e4a : + 3bc08e4a: 8082 ret + +000000003bc08e4c : + 3bc08e4c: 08004737 lui a4,0x8004 + 3bc08e50: 080037b7 lui a5,0x8003 + 3bc08e54: 439c lw a5,0(a5) + 3bc08e56: 19072683 lw a3,400(a4) # 8004190 + 3bc08e5a: 0000a797 auipc a5,0xa + 3bc08e5e: 59678793 addi a5,a5,1430 # 3bc133f0 + 3bc08e62: c394 sw a3,0(a5) + 3bc08e64: 19472703 lw a4,404(a4) + 3bc08e68: c398 sw a4,0(a5) + 3bc08e6a: 8082 ret + +000000003bc08e6c : + 3bc08e6c: 08004737 lui a4,0x8004 + 3bc08e70: 32072023 sw zero,800(a4) # 8004320 + 3bc08e74: 1b072783 lw a5,432(a4) + 3bc08e78: 2781 sext.w a5,a5 + 3bc08e7a: 0207e793 ori a5,a5,32 + 3bc08e7e: 0000a697 auipc a3,0xa + 3bc08e82: 56f6a923 sw a5,1394(a3) # 3bc133f0 + 3bc08e86: 1af72823 sw a5,432(a4) + 3bc08e8a: 4785 li a5,1 + 3bc08e8c: 32f72023 sw a5,800(a4) + 3bc08e90: 8082 ret + +000000003bc08e92 : + 3bc08e92: 08006737 lui a4,0x8006 + 3bc08e96: 000807b7 lui a5,0x80 + 3bc08e9a: 02072423 sw zero,40(a4) # 8006028 + 3bc08e9e: 0785 addi a5,a5,1 + 3bc08ea0: 030036b7 lui a3,0x3003 + 3bc08ea4: cb7c sw a5,84(a4) + 3bc08ea6: 90068693 addi a3,a3,-1792 # 3002900 <__BSS_SIZE__+0x2ffccf0> + 3bc08eaa: 0000a797 auipc a5,0xa + 3bc08eae: 51e7a783 lw a5,1310(a5) # 3bc133c8 + 3bc08eb2: cafc sw a5,84(a3) + 3bc08eb4: 0000a797 auipc a5,0xa + 3bc08eb8: 51c7d783 lhu a5,1308(a5) # 3bc133d0 + 3bc08ebc: cebc sw a5,88(a3) + 3bc08ebe: 0000a797 auipc a5,0xa + 3bc08ec2: 51a7b783 ld a5,1306(a5) # 3bc133d8 + 3bc08ec6: 5c07b78b extu a5,a5,23,0 + 3bc08eca: 0000a617 auipc a2,0xa + 3bc08ece: 52660613 addi a2,a2,1318 # 3bc133f0 + 3bc08ed2: 2781 sext.w a5,a5 + 3bc08ed4: c21c sw a5,0(a2) + 3bc08ed6: cefc sw a5,92(a3) + 3bc08ed8: 4abc lw a5,80(a3) + 3bc08eda: 2781 sext.w a5,a5 + 3bc08edc: 0017c793 xori a5,a5,1 + 3bc08ee0: fa17f793 andi a5,a5,-95 + 3bc08ee4: 0207e793 ori a5,a5,32 + 3bc08ee8: c21c sw a5,0(a2) + 3bc08eea: cabc sw a5,80(a3) + 3bc08eec: 475c lw a5,12(a4) + 3bc08eee: 2781 sext.w a5,a5 + 3bc08ef0: 30b7c693 xori a3,a5,779 + 3bc08ef4: 3c06b68b extu a3,a3,15,0 + 3bc08ef8: 8fb5 xor a5,a5,a3 + 3bc08efa: c21c sw a5,0(a2) + 3bc08efc: c75c sw a5,12(a4) + 3bc08efe: 4b1c lw a5,16(a4) + 3bc08f00: 080066b7 lui a3,0x8006 + 3bc08f04: 2781 sext.w a5,a5 + 3bc08f06: f007f793 andi a5,a5,-256 + 3bc08f0a: cb1c sw a5,16(a4) + 3bc08f0c: 4785 li a5,1 + 3bc08f0e: c21c sw a5,0(a2) + 3bc08f10: c35c sw a5,4(a4) + 3bc08f12: 475c lw a5,12(a4) + 3bc08f14: 2781 sext.w a5,a5 + 3bc08f16: 0807e793 ori a5,a5,128 + 3bc08f1a: c21c sw a5,0(a2) + 3bc08f1c: c75c sw a5,12(a4) + 3bc08f1e: 6721 lui a4,0x8 + 3bc08f20: 4a9c lw a5,16(a3) + 3bc08f22: 2781 sext.w a5,a5 + 3bc08f24: c21c sw a5,0(a2) + 3bc08f26: 8ff9 and a5,a5,a4 + 3bc08f28: 2781 sext.w a5,a5 + 3bc08f2a: dbfd beqz a5,3bc08f20 + 3bc08f2c: 8082 ret + +000000003bc08f2e : + 3bc08f2e: 6785 lui a5,0x1 + 3bc08f30: 08006737 lui a4,0x8006 + 3bc08f34: 2f578793 addi a5,a5,757 # 12f5 <__BSS_SIZE__-0x491b> + 3bc08f38: c37c sw a5,68(a4) + 3bc08f3a: 0000a697 auipc a3,0xa + 3bc08f3e: 4b668693 addi a3,a3,1206 # 3bc133f0 + 3bc08f42: 0006a023 sw zero,0(a3) + 3bc08f46: 080007b7 lui a5,0x8000 + 3bc08f4a: 0e07aa23 sw zero,244(a5) # 80000f4 + 3bc08f4e: 080047b7 lui a5,0x8004 + 3bc08f52: 5b98 lw a4,48(a5) + 3bc08f54: 767d lui a2,0xfffff + 3bc08f56: 5ff60613 addi a2,a2,1535 # fffffffffffff5ff <__BL2_END__+0xffffffffc43ec1ef> + 3bc08f5a: 2701 sext.w a4,a4 + 3bc08f5c: 8f71 and a4,a4,a2 + 3bc08f5e: c298 sw a4,0(a3) + 3bc08f60: db98 sw a4,48(a5) + 3bc08f62: 10078793 addi a5,a5,256 # 8004100 + 3bc08f66: 47b8 lw a4,72(a5) + 3bc08f68: 7f800637 lui a2,0x7f800 + 3bc08f6c: 167d addi a2,a2,-1 + 3bc08f6e: 2701 sext.w a4,a4 + 3bc08f70: 8f71 and a4,a4,a2 + 3bc08f72: c298 sw a4,0(a3) + 3bc08f74: c7b8 sw a4,72(a5) + 3bc08f76: 8082 ret + +000000003bc08f78 : + 3bc08f78: 679d lui a5,0x7 + 3bc08f7a: 0000a617 auipc a2,0xa + 3bc08f7e: 47660613 addi a2,a2,1142 # 3bc133f0 + 3bc08f82: c8178793 addi a5,a5,-895 # 6c81 <__BSS_SIZE__+0x1071> + 3bc08f86: c21c sw a5,0(a2) + 3bc08f88: 08006737 lui a4,0x8006 + 3bc08f8c: c37c sw a5,68(a4) + 3bc08f8e: 08004737 lui a4,0x8004 + 3bc08f92: 18070593 addi a1,a4,384 # 8004180 + 3bc08f96: 499c lw a5,16(a1) + 3bc08f98: 060006b7 lui a3,0x6000 + 3bc08f9c: 1f000537 lui a0,0x1f000 + 3bc08fa0: 2781 sext.w a5,a5 + 3bc08fa2: 8ebd xor a3,a3,a5 + 3bc08fa4: 8ee9 and a3,a3,a0 + 3bc08fa6: 8fb5 xor a5,a5,a3 + 3bc08fa8: 2781 sext.w a5,a5 + 3bc08faa: c99c sw a5,16(a1) + 3bc08fac: 000307b7 lui a5,0x30 + 3bc08fb0: 03378793 addi a5,a5,51 # 30033 <__BSS_SIZE__+0x2a423> + 3bc08fb4: c21c sw a5,0(a2) + 3bc08fb6: 080006b7 lui a3,0x8000 + 3bc08fba: 0ef6aa23 sw a5,244(a3) # 80000f4 + 3bc08fbe: 5b1c lw a5,48(a4) + 3bc08fc0: 76fd lui a3,0xfffff + 3bc08fc2: bff68693 addi a3,a3,-1025 # ffffffffffffebff <__BL2_END__+0xffffffffc43eb7ef> + 3bc08fc6: 2781 sext.w a5,a5 + 3bc08fc8: 8ff5 and a5,a5,a3 + 3bc08fca: 6685 lui a3,0x1 + 3bc08fcc: a0068693 addi a3,a3,-1536 # a00 <__BSS_SIZE__-0x5210> + 3bc08fd0: 8fd5 or a5,a5,a3 + 3bc08fd2: c21c sw a5,0(a2) + 3bc08fd4: db1c sw a5,48(a4) + 3bc08fd6: 10070713 addi a4,a4,256 + 3bc08fda: 473c lw a5,72(a4) + 3bc08fdc: 808006b7 lui a3,0x80800 + 3bc08fe0: 8fd5 or a5,a5,a3 + 3bc08fe2: c21c sw a5,0(a2) + 3bc08fe4: c73c sw a5,72(a4) + 3bc08fe6: 8082 ret + +000000003bc08fe8 : + 3bc08fe8: 1101 addi sp,sp,-32 + 3bc08fea: e426 sd s1,8(sp) + 3bc08fec: ec06 sd ra,24(sp) + 3bc08fee: e822 sd s0,16(sp) + 3bc08ff0: e04a sd s2,0(sp) + 3bc08ff2: 080047b7 lui a5,0x8004 + 3bc08ff6: 5407a023 sw zero,1344(a5) # 8004540 + 3bc08ffa: 5e07a823 sw zero,1520(a5) + 3bc08ffe: 6a07a023 sw zero,1696(a5) + 3bc09002: 08004737 lui a4,0x8004 + 3bc09006: 0000a497 auipc s1,0xa + 3bc0900a: 3ea48493 addi s1,s1,1002 # 3bc133f0 + 3bc0900e: 3fc72783 lw a5,1020(a4) # 80043fc + 3bc09012: 2781 sext.w a5,a5 + 3bc09014: c09c sw a5,0(s1) + 3bc09016: ffe5 bnez a5,3bc0900e + 3bc09018: 5b1c lw a5,48(a4) + 3bc0901a: 0007841b sext.w s0,a5 + 3bc0901e: fd447693 andi a3,s0,-44 + 3bc09022: c094 sw a3,0(s1) + 3bc09024: db14 sw a3,48(a4) + 3bc09026: 0017f913 andi s2,a5,1 + 3bc0902a: f05ff0ef jal ra,3bc08f2e + 3bc0902e: ef4ff0ef jal ra,3bc08722 + 3bc09032: 080006b7 lui a3,0x8000 + 3bc09036: 1846a703 lw a4,388(a3) # 8000184 + 3bc0903a: 080037b7 lui a5,0x8003 + 3bc0903e: 2701 sext.w a4,a4 + 3bc09040: 00176713 ori a4,a4,1 + 3bc09044: c098 sw a4,0(s1) + 3bc09046: 18e6a223 sw a4,388(a3) + 3bc0904a: 4447a703 lw a4,1092(a5) # 8003444 + 3bc0904e: 2701 sext.w a4,a4 + 3bc09050: c098 sw a4,0(s1) + 3bc09052: 8b09 andi a4,a4,2 + 3bc09054: db7d beqz a4,3bc0904a + 3bc09056: 080107b7 lui a5,0x8010 + 3bc0905a: 00040737 lui a4,0x40 + 3bc0905e: c398 sw a4,0(a5) + 3bc09060: 080046b7 lui a3,0x8004 + 3bc09064: 5a98 lw a4,48(a3) + 3bc09066: 60e2 ld ra,24(sp) + 3bc09068: 2701 sext.w a4,a4 + 3bc0906a: 00874633 xor a2,a4,s0 + 3bc0906e: 02067613 andi a2,a2,32 + 3bc09072: 8f31 xor a4,a4,a2 + 3bc09074: 00874633 xor a2,a4,s0 + 3bc09078: 8a21 andi a2,a2,8 + 3bc0907a: 8f31 xor a4,a4,a2 + 3bc0907c: 008747b3 xor a5,a4,s0 + 3bc09080: 8b89 andi a5,a5,2 + 3bc09082: 8fb9 xor a5,a5,a4 + 3bc09084: 9bf9 andi a5,a5,-2 + 3bc09086: 0127e7b3 or a5,a5,s2 + 3bc0908a: c09c sw a5,0(s1) + 3bc0908c: da9c sw a5,48(a3) + 3bc0908e: 50068713 addi a4,a3,1280 # 8004500 + 3bc09092: 4785 li a5,1 + 3bc09094: c33c sw a5,64(a4) + 3bc09096: 6442 ld s0,16(sp) + 3bc09098: 58068713 addi a4,a3,1408 + 3bc0909c: 64a2 ld s1,8(sp) + 3bc0909e: 6902 ld s2,0(sp) + 3bc090a0: db3c sw a5,112(a4) + 3bc090a2: 68068693 addi a3,a3,1664 + 3bc090a6: d29c sw a5,32(a3) + 3bc090a8: 6105 addi sp,sp,32 + 3bc090aa: ecfff06f j 3bc08f78 + +000000003bc090ae : + 3bc090ae: 7139 addi sp,sp,-64 + 3bc090b0: f426 sd s1,40(sp) + 3bc090b2: e456 sd s5,8(sp) + 3bc090b4: fc06 sd ra,56(sp) + 3bc090b6: f822 sd s0,48(sp) + 3bc090b8: f04a sd s2,32(sp) + 3bc090ba: ec4e sd s3,24(sp) + 3bc090bc: e852 sd s4,16(sp) + 3bc090be: 080047b7 lui a5,0x8004 + 3bc090c2: 5407a023 sw zero,1344(a5) # 8004540 + 3bc090c6: 5e07a823 sw zero,1520(a5) + 3bc090ca: 8aaa mv s5,a0 + 3bc090cc: 6a07a023 sw zero,1696(a5) + 3bc090d0: 08004737 lui a4,0x8004 + 3bc090d4: 0000a497 auipc s1,0xa + 3bc090d8: 31c48493 addi s1,s1,796 # 3bc133f0 + 3bc090dc: 3fc72783 lw a5,1020(a4) # 80043fc + 3bc090e0: 2781 sext.w a5,a5 + 3bc090e2: c09c sw a5,0(s1) + 3bc090e4: ffe5 bnez a5,3bc090dc + 3bc090e6: 5b1c lw a5,48(a4) + 3bc090e8: 080009b7 lui s3,0x8000 + 3bc090ec: 0007891b sext.w s2,a5 + 3bc090f0: 0017f413 andi s0,a5,1 + 3bc090f4: fd497793 andi a5,s2,-44 + 3bc090f8: c09c sw a5,0(s1) + 3bc090fa: db1c sw a5,48(a4) + 3bc090fc: e33ff0ef jal ra,3bc08f2e + 3bc09100: 4505 li a0,1 + 3bc09102: ce1ff0ef jal ra,3bc08de2 + 3bc09106: 08098693 addi a3,s3,128 # 8000080 + 3bc0910a: 4298 lw a4,0(a3) + 3bc0910c: 002007b7 lui a5,0x200 + 3bc09110: 007f0637 lui a2,0x7f0 + 3bc09114: 2701 sext.w a4,a4 + 3bc09116: 8fb9 xor a5,a5,a4 + 3bc09118: 8ff1 and a5,a5,a2 + 3bc0911a: 8f3d xor a4,a4,a5 + 3bc0911c: 2701 sext.w a4,a4 + 3bc0911e: 1f0007b7 lui a5,0x1f000 + 3bc09122: 8fb9 xor a5,a5,a4 + 3bc09124: 7f000637 lui a2,0x7f000 + 3bc09128: 8ff1 and a5,a5,a2 + 3bc0912a: 8f3d xor a4,a4,a5 + 3bc0912c: 2701 sext.w a4,a4 + 3bc0912e: c098 sw a4,0(s1) + 3bc09130: c298 sw a4,0(a3) + 3bc09132: 46dc lw a5,12(a3) + 3bc09134: 8556 mv a0,s5 + 3bc09136: 0007871b sext.w a4,a5 + 3bc0913a: 0827ba0b extu s4,a5,2,2 + 3bc0913e: ff177793 andi a5,a4,-15 + 3bc09142: c09c sw a5,0(s1) + 3bc09144: c6dc sw a5,12(a3) + 3bc09146: e22ff0ef jal ra,3bc08768 + 3bc0914a: 1889a783 lw a5,392(s3) + 3bc0914e: 08003737 lui a4,0x8003 + 3bc09152: 2781 sext.w a5,a5 + 3bc09154: 0017e793 ori a5,a5,1 + 3bc09158: c09c sw a5,0(s1) + 3bc0915a: 18f9a423 sw a5,392(s3) + 3bc0915e: 44472783 lw a5,1092(a4) # 8003444 + 3bc09162: 2781 sext.w a5,a5 + 3bc09164: c09c sw a5,0(s1) + 3bc09166: 8b91 andi a5,a5,4 + 3bc09168: dbfd beqz a5,3bc0915e + 3bc0916a: 040a0563 beqz s4,3bc091b4 + 3bc0916e: 08000737 lui a4,0x8000 + 3bc09172: 08070693 addi a3,a4,128 # 8000080 + 3bc09176: 46dc lw a5,12(a3) + 3bc09178: 18070713 addi a4,a4,384 + 3bc0917c: 2781 sext.w a5,a5 + 3bc0917e: 9bed andi a5,a5,-5 + 3bc09180: c09c sw a5,0(s1) + 3bc09182: c6dc sw a5,12(a3) + 3bc09184: 471c lw a5,8(a4) + 3bc09186: 2781 sext.w a5,a5 + 3bc09188: 0017e793 ori a5,a5,1 + 3bc0918c: c09c sw a5,0(s1) + 3bc0918e: c71c sw a5,8(a4) + 3bc09190: 08003737 lui a4,0x8003 + 3bc09194: 44472783 lw a5,1092(a4) # 8003444 + 3bc09198: 2781 sext.w a5,a5 + 3bc0919a: c09c sw a5,0(s1) + 3bc0919c: 8b91 andi a5,a5,4 + 3bc0919e: dbfd beqz a5,3bc09194 + 3bc091a0: 08000737 lui a4,0x8000 + 3bc091a4: 08c72783 lw a5,140(a4) # 800008c + 3bc091a8: 2781 sext.w a5,a5 + 3bc091aa: 0047e793 ori a5,a5,4 + 3bc091ae: c09c sw a5,0(s1) + 3bc091b0: 08f72623 sw a5,140(a4) + 3bc091b4: 819ff0ef jal ra,3bc089cc + 3bc091b8: 080107b7 lui a5,0x8010 + 3bc091bc: 00040737 lui a4,0x40 + 3bc091c0: c398 sw a4,0(a5) + 3bc091c2: 4501 li a0,0 + 3bc091c4: c1fff0ef jal ra,3bc08de2 + 3bc091c8: 08004737 lui a4,0x8004 + 3bc091cc: 5b1c lw a5,48(a4) + 3bc091ce: 70e2 ld ra,56(sp) + 3bc091d0: 69e2 ld s3,24(sp) + 3bc091d2: 2781 sext.w a5,a5 + 3bc091d4: 0127c6b3 xor a3,a5,s2 + 3bc091d8: 0206f693 andi a3,a3,32 + 3bc091dc: 8fb5 xor a5,a5,a3 + 3bc091de: 0127c6b3 xor a3,a5,s2 + 3bc091e2: 8aa1 andi a3,a3,8 + 3bc091e4: 8fb5 xor a5,a5,a3 + 3bc091e6: 0127c933 xor s2,a5,s2 + 3bc091ea: 00297913 andi s2,s2,2 + 3bc091ee: 0127c7b3 xor a5,a5,s2 + 3bc091f2: 9bf9 andi a5,a5,-2 + 3bc091f4: 8fc1 or a5,a5,s0 + 3bc091f6: c09c sw a5,0(s1) + 3bc091f8: db1c sw a5,48(a4) + 3bc091fa: 50070693 addi a3,a4,1280 # 8004500 + 3bc091fe: 4785 li a5,1 + 3bc09200: c2bc sw a5,64(a3) + 3bc09202: 7442 ld s0,48(sp) + 3bc09204: 58070693 addi a3,a4,1408 + 3bc09208: 74a2 ld s1,40(sp) + 3bc0920a: 7902 ld s2,32(sp) + 3bc0920c: 6a42 ld s4,16(sp) + 3bc0920e: 6aa2 ld s5,8(sp) + 3bc09210: dabc sw a5,112(a3) + 3bc09212: 68070713 addi a4,a4,1664 + 3bc09216: d31c sw a5,32(a4) + 3bc09218: 6121 addi sp,sp,64 + 3bc0921a: d5fff06f j 3bc08f78 + +000000003bc0921e : + 3bc0921e: 7179 addi sp,sp,-48 + 3bc09220: e84a sd s2,16(sp) + 3bc09222: e44e sd s3,8(sp) + 3bc09224: e052 sd s4,0(sp) + 3bc09226: f406 sd ra,40(sp) + 3bc09228: f022 sd s0,32(sp) + 3bc0922a: ec26 sd s1,24(sp) + 3bc0922c: 080047b7 lui a5,0x8004 + 3bc09230: 5407a023 sw zero,1344(a5) # 8004540 + 3bc09234: 5e07a823 sw zero,1520(a5) + 3bc09238: 89aa mv s3,a0 + 3bc0923a: 8a2e mv s4,a1 + 3bc0923c: 6a07a023 sw zero,1696(a5) + 3bc09240: 08004737 lui a4,0x8004 + 3bc09244: 0000a917 auipc s2,0xa + 3bc09248: 1ac90913 addi s2,s2,428 # 3bc133f0 + 3bc0924c: 3fc72783 lw a5,1020(a4) # 80043fc + 3bc09250: 2781 sext.w a5,a5 + 3bc09252: 00f92023 sw a5,0(s2) + 3bc09256: fbfd bnez a5,3bc0924c + 3bc09258: 5b1c lw a5,48(a4) + 3bc0925a: 0007849b sext.w s1,a5 + 3bc0925e: 0017f413 andi s0,a5,1 + 3bc09262: fd44f793 andi a5,s1,-44 + 3bc09266: 00f92023 sw a5,0(s2) + 3bc0926a: db1c sw a5,48(a4) + 3bc0926c: cc3ff0ef jal ra,3bc08f2e + 3bc09270: 4505 li a0,1 + 3bc09272: b71ff0ef jal ra,3bc08de2 + 3bc09276: 080007b7 lui a5,0x8000 + 3bc0927a: 0bc7a703 lw a4,188(a5) # 80000bc + 3bc0927e: 2701 sext.w a4,a4 + 3bc09280: 000a1863 bnez s4,3bc09290 + 3bc09284: 77fd lui a5,0xfffff + 3bc09286: 17fd addi a5,a5,-1 + 3bc09288: 8f7d and a4,a4,a5 + 3bc0928a: 6789 lui a5,0x2 + 3bc0928c: 8f5d or a4,a4,a5 + 3bc0928e: a821 j 3bc092a6 + 3bc09290: 4785 li a5,1 + 3bc09292: 00fa1763 bne s4,a5,3bc092a0 + 3bc09296: 77f9 lui a5,0xffffe + 3bc09298: 17fd addi a5,a5,-1 + 3bc0929a: 8f7d and a4,a4,a5 + 3bc0929c: 6785 lui a5,0x1 + 3bc0929e: b7fd j 3bc0928c + 3bc092a0: 4789 li a5,2 + 3bc092a2: 0efa0963 beq s4,a5,3bc09394 + 3bc092a6: 00e92023 sw a4,0(s2) + 3bc092aa: 00092703 lw a4,0(s2) + 3bc092ae: 080007b7 lui a5,0x8000 + 3bc092b2: 0ae7ae23 sw a4,188(a5) # 80000bc + 3bc092b6: 0e0a1163 bnez s4,3bc09398 + 3bc092ba: 08004737 lui a4,0x8004 + 3bc092be: 475c lw a5,12(a4) + 3bc092c0: 2781 sext.w a5,a5 + 3bc092c2: 0807e793 ori a5,a5,128 + 3bc092c6: 00f92023 sw a5,0(s2) + 3bc092ca: c75c sw a5,12(a4) + 3bc092cc: e36ff0ef jal ra,3bc08902 + 3bc092d0: 080007b7 lui a5,0x8000 + 3bc092d4: 18c7a783 lw a5,396(a5) # 800018c + 3bc092d8: 2781 sext.w a5,a5 + 3bc092da: 4017e693 ori a3,a5,1025 + 3bc092de: 000a1663 bnez s4,3bc092ea + 3bc092e2: bff7f793 andi a5,a5,-1025 + 3bc092e6: 0017e693 ori a3,a5,1 + 3bc092ea: 4785 li a5,1 + 3bc092ec: 00f98763 beq s3,a5,3bc092fa + 3bc092f0: 39bd addiw s3,s3,-17 + 3bc092f2: fef6f713 andi a4,a3,-17 + 3bc092f6: 0137e463 bltu a5,s3,3bc092fe + 3bc092fa: 0106e713 ori a4,a3,16 + 3bc092fe: 00e92023 sw a4,0(s2) + 3bc09302: 080007b7 lui a5,0x8000 + 3bc09306: 18e7a623 sw a4,396(a5) # 800018c + 3bc0930a: 08003737 lui a4,0x8003 + 3bc0930e: 44472783 lw a5,1092(a4) # 8003444 + 3bc09312: 2781 sext.w a5,a5 + 3bc09314: 00f92023 sw a5,0(s2) + 3bc09318: 8ba1 andi a5,a5,8 + 3bc0931a: dbf5 beqz a5,3bc0930e + 3bc0931c: 080049b7 lui s3,0x8004 + 3bc09320: 00c9a783 lw a5,12(s3) # 800400c + 3bc09324: 00040737 lui a4,0x40 + 3bc09328: 4501 li a0,0 + 3bc0932a: 2781 sext.w a5,a5 + 3bc0932c: f7f7f793 andi a5,a5,-129 + 3bc09330: 00f92023 sw a5,0(s2) + 3bc09334: 00f9a623 sw a5,12(s3) + 3bc09338: 080107b7 lui a5,0x8010 + 3bc0933c: c398 sw a4,0(a5) + 3bc0933e: aa5ff0ef jal ra,3bc08de2 + 3bc09342: 0309a783 lw a5,48(s3) + 3bc09346: 70a2 ld ra,40(sp) + 3bc09348: 6a02 ld s4,0(sp) + 3bc0934a: 2781 sext.w a5,a5 + 3bc0934c: 0097c733 xor a4,a5,s1 + 3bc09350: 02077713 andi a4,a4,32 + 3bc09354: 8fb9 xor a5,a5,a4 + 3bc09356: 0097c733 xor a4,a5,s1 + 3bc0935a: 8b21 andi a4,a4,8 + 3bc0935c: 8fb9 xor a5,a5,a4 + 3bc0935e: 8cbd xor s1,s1,a5 + 3bc09360: 8889 andi s1,s1,2 + 3bc09362: 8fa5 xor a5,a5,s1 + 3bc09364: 9bf9 andi a5,a5,-2 + 3bc09366: 8fc1 or a5,a5,s0 + 3bc09368: 00f92023 sw a5,0(s2) + 3bc0936c: 02f9a823 sw a5,48(s3) + 3bc09370: 50098713 addi a4,s3,1280 + 3bc09374: 4785 li a5,1 + 3bc09376: c33c sw a5,64(a4) + 3bc09378: 58098713 addi a4,s3,1408 + 3bc0937c: 7402 ld s0,32(sp) + 3bc0937e: db3c sw a5,112(a4) + 3bc09380: 68098993 addi s3,s3,1664 + 3bc09384: 64e2 ld s1,24(sp) + 3bc09386: 6942 ld s2,16(sp) + 3bc09388: 02f9a023 sw a5,32(s3) + 3bc0938c: 69a2 ld s3,8(sp) + 3bc0938e: 6145 addi sp,sp,48 + 3bc09390: be9ff06f j 3bc08f78 + 3bc09394: 678d lui a5,0x3 + 3bc09396: bddd j 3bc0928c + 3bc09398: 854e mv a0,s3 + 3bc0939a: cb8ff0ef jal ra,3bc08852 + 3bc0939e: bf0d j 3bc092d0 + +000000003bc093a0 : + 3bc093a0: 6785 lui a5,0x1 + 3bc093a2: 0785 addi a5,a5,1 + 3bc093a4: 0000a717 auipc a4,0xa + 3bc093a8: 04f72623 sw a5,76(a4) # 3bc133f0 + 3bc093ac: 08000737 lui a4,0x8000 + 3bc093b0: 50f72023 sw a5,1280(a4) # 8000500 + 3bc093b4: 54f72023 sw a5,1344(a4) + 3bc093b8: 8082 ret + +000000003bc093ba : + 3bc093ba: 4799 li a5,6 + 3bc093bc: 00f50023 sb a5,0(a0) # 1f000000 + 3bc093c0: 0000a717 auipc a4,0xa + 3bc093c4: 02f72823 sw a5,48(a4) # 3bc133f0 + 3bc093c8: 08000737 lui a4,0x8000 + 3bc093cc: 20f72423 sw a5,520(a4) # 8000208 + 3bc093d0: 080107b7 lui a5,0x8010 + 3bc093d4: 00040737 lui a4,0x40 + 3bc093d8: c398 sw a4,0(a5) + 3bc093da: 8082 ret + +000000003bc093dc : + 3bc093dc: 2f000793 li a5,752 + 3bc093e0: 0000a717 auipc a4,0xa + 3bc093e4: 00f72c23 sw a5,24(a4) # 3bc133f8 + 3bc093e8: 06400793 li a5,100 + 3bc093ec: 0000a717 auipc a4,0xa + 3bc093f0: 00f72823 sw a5,16(a4) # 3bc133fc + 3bc093f4: 00002717 auipc a4,0x2 + 3bc093f8: 30872703 lw a4,776(a4) # 3bc0b6fc + 3bc093fc: 0047569b srliw a3,a4,0x4 + 3bc09400: 463d li a2,15 + 3bc09402: 0000a797 auipc a5,0xa + 3bc09406: fed7af23 sw a3,-2(a5) # 3bc13400 + 3bc0940a: 0000a797 auipc a5,0xa + 3bc0940e: fec7a523 sw a2,-22(a5) # 3bc133f4 + 3bc09412: 02f00713 li a4,47 + 3bc09416: 077a slli a4,a4,0x1e + 3bc09418: 7c06b78b extu a5,a3,31,0 + 3bc0941c: 02f757b3 divu a5,a4,a5 + 3bc09420: 0000a717 auipc a4,0xa + 3bc09424: faf73423 sd a5,-88(a4) # 3bc133c8 + 3bc09428: 0fa00713 li a4,250 + 3bc0942c: 02d7073b mulw a4,a4,a3 + 3bc09430: 06400693 li a3,100 + 3bc09434: 02d7573b divuw a4,a4,a3 + 3bc09438: 7c07370b extu a4,a4,31,0 + 3bc0943c: 0000a697 auipc a3,0xa + 3bc09440: f8e6ba23 sd a4,-108(a3) # 3bc133d0 + 3bc09444: 3e800693 li a3,1000 + 3bc09448: 02d70733 mul a4,a4,a3 + 3bc0944c: 02c787b3 mul a5,a5,a2 + 3bc09450: 02e7d7b3 divu a5,a5,a4 + 3bc09454: 0000a717 auipc a4,0xa + 3bc09458: f8f73223 sd a5,-124(a4) # 3bc133d8 + 3bc0945c: a37ff06f j 3bc08e92 + +000000003bc09460 : + 3bc09460: 1141 addi sp,sp,-16 + 3bc09462: e406 sd ra,8(sp) + 3bc09464: f93fe0ef jal ra,3bc083f6 + 3bc09468: 357d addiw a0,a0,-1 + 3bc0946a: 0ff57513 andi a0,a0,255 + 3bc0946e: 47a5 li a5,9 + 3bc09470: 12a7ef63 bltu a5,a0,3bc095ae + 3bc09474: 00002717 auipc a4,0x2 + 3bc09478: f8470713 addi a4,a4,-124 # 3bc0b3f8 + 3bc0947c: 44a7478b lrw a5,a4,a0,2 + 3bc09480: 97ba add a5,a5,a4 + 3bc09482: 8782 jr a5 + 3bc09484: 12141737 lui a4,0x12141 + 3bc09488: 080007b7 lui a5,0x8000 + 3bc0948c: 074d addi a4,a4,19 + 3bc0948e: c398 sw a4,0(a5) + 3bc09490: 0c041737 lui a4,0xc041 + 3bc09494: 50370713 addi a4,a4,1283 # c041503 + 3bc09498: c3d8 sw a4,4(a5) + 3bc0949a: 06050737 lui a4,0x6050 + 3bc0949e: 0705 addi a4,a4,1 + 3bc094a0: c798 sw a4,8(a5) + 3bc094a2: 08071737 lui a4,0x8071 + 3bc094a6: b0270713 addi a4,a4,-1278 # 8070b02 + 3bc094aa: c7d8 sw a4,12(a5) + 3bc094ac: 0a0f1737 lui a4,0xa0f1 + 3bc094b0: e0970713 addi a4,a4,-503 # a0f0e09 + 3bc094b4: cb98 sw a4,16(a5) + 3bc094b6: 00161737 lui a4,0x161 + 3bc094ba: 10d70713 addi a4,a4,269 # 16110d <__BSS_SIZE__+0x15b4fd> + 3bc094be: cbd8 sw a4,20(a5) + 3bc094c0: 0007ac23 sw zero,24(a5) # 8000018 + 3bc094c4: 10000713 li a4,256 + 3bc094c8: cfd8 sw a4,28(a5) + 3bc094ca: 02136737 lui a4,0x2136 + 3bc094ce: 57470713 addi a4,a4,1396 # 2136574 <__BSS_SIZE__+0x2130964> + 3bc094d2: d398 sw a4,32(a5) + 3bc094d4: 4721 li a4,8 + 3bc094d6: d3d8 sw a4,36(a5) + 3bc094d8: 76512737 lui a4,0x76512 + 3bc094dc: 30870713 addi a4,a4,776 # 76512308 <__BL2_END__+0x3a8feef8> + 3bc094e0: d798 sw a4,40(a5) + 3bc094e2: 4711 li a4,4 + 3bc094e4: d7d8 sw a4,44(a5) + 3bc094e6: a0e1 j 3bc095ae + 3bc094e8: 08071737 lui a4,0x8071 + 3bc094ec: 080007b7 lui a5,0x8000 + 3bc094f0: d0970713 addi a4,a4,-759 # 8070d09 + 3bc094f4: c398 sw a4,0(a5) + 3bc094f6: 06050737 lui a4,0x6050 + 3bc094fa: 20b70713 addi a4,a4,523 # 605020b + 3bc094fe: c3d8 sw a4,4(a5) + 3bc09500: 14040737 lui a4,0x14040 + 3bc09504: 10070713 addi a4,a4,256 # 14040100 + 3bc09508: c798 sw a4,8(a5) + 3bc0950a: 15031737 lui a4,0x15031 + 3bc0950e: e0c70713 addi a4,a4,-500 # 15030e0c + 3bc09512: c7d8 sw a4,12(a5) + 3bc09514: 0a0f1737 lui a4,0xa0f1 + 3bc09518: 21370713 addi a4,a4,531 # a0f1213 + 3bc0951c: cb98 sw a4,16(a5) + 3bc0951e: 00111737 lui a4,0x111 + 3bc09522: 0759 addi a4,a4,22 + 3bc09524: cbd8 sw a4,20(a5) + 3bc09526: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0952a: 10000713 li a4,256 + 3bc0952e: cfd8 sw a4,28(a5) + 3bc09530: 82135737 lui a4,0x82135 + 3bc09534: 76470713 addi a4,a4,1892 # ffffffff82135764 <__BL2_END__+0xffffffff46522354> + 3bc09538: d398 sw a4,32(a5) + 3bc0953a: 67513737 lui a4,0x67513 + 3bc0953e: 0207a223 sw zero,36(a5) + 3bc09542: 02870713 addi a4,a4,40 # 67513028 <__BL2_END__+0x2b8ffc18> + 3bc09546: bf69 j 3bc094e0 + 3bc09548: 08071737 lui a4,0x8071 + 3bc0954c: 080007b7 lui a5,0x8000 + 3bc09550: b0970713 addi a4,a4,-1271 # 8070b09 + 3bc09554: c398 sw a4,0(a5) + 3bc09556: 05000737 lui a4,0x5000 + 3bc0955a: 20670713 addi a4,a4,518 # 5000206 + 3bc0955e: c3d8 sw a4,4(a5) + 3bc09560: 0c040737 lui a4,0xc040 + 3bc09564: 10d70713 addi a4,a4,269 # c04010d + 3bc09568: c798 sw a4,8(a5) + 3bc0956a: 15031737 lui a4,0x15031 + 3bc0956e: a1470713 addi a4,a4,-1516 # 15030a14 + 3bc09572: c7d8 sw a4,12(a5) + 3bc09574: 10111737 lui a4,0x10111 + 3bc09578: 21370713 addi a4,a4,531 # 10111213 + 3bc0957c: cb98 sw a4,16(a5) + 3bc0957e: 000f1737 lui a4,0xf1 + 3bc09582: 60e70713 addi a4,a4,1550 # f160e <__BSS_SIZE__+0xeb9fe> + 3bc09586: cbd8 sw a4,20(a5) + 3bc09588: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0958c: 10000713 li a4,256 + 3bc09590: cfd8 sw a4,28(a5) + 3bc09592: 31756737 lui a4,0x31756 + 3bc09596: 02470713 addi a4,a4,36 # 31756024 + 3bc0959a: d398 sw a4,32(a5) + 3bc0959c: 4721 li a4,8 + 3bc0959e: d3d8 sw a4,36(a5) + 3bc095a0: 26473737 lui a4,0x26473 + 3bc095a4: 51870713 addi a4,a4,1304 # 26473518 + 3bc095a8: d798 sw a4,40(a5) + 3bc095aa: 0207a623 sw zero,44(a5) + 3bc095ae: 60a2 ld ra,8(sp) + 3bc095b0: 0141 addi sp,sp,16 + 3bc095b2: 8082 ret + 3bc095b4: 0c061737 lui a4,0xc061 + 3bc095b8: 080007b7 lui a5,0x8000 + 3bc095bc: 80b70713 addi a4,a4,-2037 # c06080b + 3bc095c0: c398 sw a4,0(a5) + 3bc095c2: 070d1737 lui a4,0x70d1 + 3bc095c6: 90470713 addi a4,a4,-1788 # 70d0904 + 3bc095ca: c3d8 sw a4,4(a5) + 3bc095cc: 6741 lui a4,0x10 + 3bc095ce: 50270713 addi a4,a4,1282 # 10502 <__BSS_SIZE__+0xa8f2> + 3bc095d2: c798 sw a4,8(a5) + 3bc095d4: 110a1737 lui a4,0x110a1 + 3bc095d8: e0370713 addi a4,a4,-509 # 110a0e03 + 3bc095dc: c7d8 sw a4,12(a5) + 3bc095de: 0f141737 lui a4,0xf141 + 3bc095e2: 61070713 addi a4,a4,1552 # f141610 + 3bc095e6: cb98 sw a4,16(a5) + 3bc095e8: 00151737 lui a4,0x151 + 3bc095ec: 31270713 addi a4,a4,786 # 151312 <__BSS_SIZE__+0x14b702> + 3bc095f0: cbd8 sw a4,20(a5) + 3bc095f2: 0007ac23 sw zero,24(a5) # 8000018 + 3bc095f6: 10000713 li a4,256 + 3bc095fa: cfd8 sw a4,28(a5) + 3bc095fc: 71840737 lui a4,0x71840 + 3bc09600: 53270713 addi a4,a4,1330 # 71840532 <__BL2_END__+0x35c2d122> + 3bc09604: d398 sw a4,32(a5) + 3bc09606: 4719 li a4,6 + 3bc09608: d3d8 sw a4,36(a5) + 3bc0960a: 76103737 lui a4,0x76103 + 3bc0960e: 42570713 addi a4,a4,1061 # 76103425 <__BL2_END__+0x3a4f0015> + 3bc09612: d798 sw a4,40(a5) + 3bc09614: 4721 li a4,8 + 3bc09616: b5f9 j 3bc094e4 + 3bc09618: 080b1737 lui a4,0x80b1 + 3bc0961c: 080007b7 lui a5,0x8000 + 3bc09620: d0670713 addi a4,a4,-762 # 80b0d06 + 3bc09624: c398 sw a4,0(a5) + 3bc09626: 09010737 lui a4,0x9010 + 3bc0962a: 40770713 addi a4,a4,1031 # 9010407 + 3bc0962e: c3d8 sw a4,4(a5) + 3bc09630: 14050737 lui a4,0x14050 + 3bc09634: 20c70713 addi a4,a4,524 # 1405020c + 3bc09638: c798 sw a4,8(a5) + 3bc0963a: 15001737 lui a4,0x15001 + 3bc0963e: e0370713 addi a4,a4,-509 # 15000e03 + 3bc09642: c7d8 sw a4,12(a5) + 3bc09644: 0a0f1737 lui a4,0xa0f1 + 3bc09648: 21370713 addi a4,a4,531 # a0f1213 + 3bc0964c: cb98 sw a4,16(a5) + 3bc0964e: 00111737 lui a4,0x111 + 3bc09652: 0759 addi a4,a4,22 + 3bc09654: cbd8 sw a4,20(a5) + 3bc09656: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0965a: 10000713 li a4,256 + 3bc0965e: cfd8 sw a4,28(a5) + 3bc09660: 82135737 lui a4,0x82135 + 3bc09664: 76470713 addi a4,a4,1892 # ffffffff82135764 <__BL2_END__+0xffffffff46522354> + 3bc09668: d398 sw a4,32(a5) + 3bc0966a: 67513737 lui a4,0x67513 + 3bc0966e: 0207a223 sw zero,36(a5) + 3bc09672: 20870713 addi a4,a4,520 # 67513208 <__BL2_END__+0x2b8ffdf8> + 3bc09676: b5ad j 3bc094e0 + 3bc09678: 0b061737 lui a4,0xb061 + 3bc0967c: 080007b7 lui a5,0x8000 + 3bc09680: 90870713 addi a4,a4,-1784 # b060908 + 3bc09684: c398 sw a4,0(a5) + 3bc09686: 02000737 lui a4,0x2000 + 3bc0968a: 10770713 addi a4,a4,263 # 2000107 <__BSS_SIZE__+0x1ffa4f7> + 3bc0968e: c3d8 sw a4,4(a5) + 3bc09690: 0c050737 lui a4,0xc050 + 3bc09694: 40d70713 addi a4,a4,1037 # c05040d + 3bc09698: c798 sw a4,8(a5) + 3bc0969a: 13141737 lui a4,0x13141 + 3bc0969e: 50370713 addi a4,a4,1283 # 13141503 + 3bc096a2: c7d8 sw a4,12(a5) + 3bc096a4: 160a1737 lui a4,0x160a1 + 3bc096a8: 11270713 addi a4,a4,274 # 160a1112 + 3bc096ac: cb98 sw a4,16(a5) + 3bc096ae: 000f1737 lui a4,0xf1 + 3bc096b2: 0739 addi a4,a4,14 + 3bc096b4: cbd8 sw a4,20(a5) + 3bc096b6: 0007ac23 sw zero,24(a5) # 8000018 + 3bc096ba: 10000713 li a4,256 + 3bc096be: cfd8 sw a4,28(a5) + 3bc096c0: 28137737 lui a4,0x28137 + 3bc096c4: 56470713 addi a4,a4,1380 # 28137564 + 3bc096c8: d398 sw a4,32(a5) + 3bc096ca: 76158737 lui a4,0x76158 + 3bc096ce: 0207a223 sw zero,36(a5) + 3bc096d2: 32070713 addi a4,a4,800 # 76158320 <__BL2_END__+0x3a544f10> + 3bc096d6: b529 j 3bc094e0 + 3bc096d8: 08061737 lui a4,0x8061 + 3bc096dc: 080007b7 lui a5,0x8000 + 3bc096e0: b0970713 addi a4,a4,-1271 # 8060b09 + 3bc096e4: c398 sw a4,0(a5) + 3bc096e6: 02040737 lui a4,0x2040 + 3bc096ea: 70170713 addi a4,a4,1793 # 2040701 <__BSS_SIZE__+0x203aaf1> + 3bc096ee: c3d8 sw a4,4(a5) + 3bc096f0: 0c000737 lui a4,0xc000 + 3bc096f4: 50d70713 addi a4,a4,1293 # c00050d + 3bc096f8: c798 sw a4,8(a5) + 3bc096fa: 13150737 lui a4,0x13150 + 3bc096fe: 31470713 addi a4,a4,788 # 13150314 + 3bc09702: c7d8 sw a4,12(a5) + 3bc09704: 10111737 lui a4,0x10111 + 3bc09708: 21670713 addi a4,a4,534 # 10111216 + 3bc0970c: cb98 sw a4,16(a5) + 3bc0970e: 000f1737 lui a4,0xf1 + 3bc09712: a0e70713 addi a4,a4,-1522 # f0a0e <__BSS_SIZE__+0xeadfe> + 3bc09716: cbd8 sw a4,20(a5) + 3bc09718: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0971c: 10000713 li a4,256 + 3bc09720: cfd8 sw a4,28(a5) + 3bc09722: 82135737 lui a4,0x82135 + 3bc09726: 67470713 addi a4,a4,1652 # ffffffff82135674 <__BL2_END__+0xffffffff46522264> + 3bc0972a: d398 sw a4,32(a5) + 3bc0972c: 76153737 lui a4,0x76153 + 3bc09730: 0207a223 sw zero,36(a5) + 3bc09734: 28070713 addi a4,a4,640 # 76153280 <__BL2_END__+0x3a53fe70> + 3bc09738: b365 j 3bc094e0 + 3bc0973a: 070b1737 lui a4,0x70b1 + 3bc0973e: 080007b7 lui a5,0x8000 + 3bc09742: 90c70713 addi a4,a4,-1780 # 70b090c + 3bc09746: c398 sw a4,0(a5) + 3bc09748: 04050737 lui a4,0x4050 + 3bc0974c: 60870713 addi a4,a4,1544 # 4050608 <__BSS_SIZE__+0x404a9f8> + 3bc09750: c3d8 sw a4,4(a5) + 3bc09752: 0e020737 lui a4,0xe020 + 3bc09756: 30d70713 addi a4,a4,781 # e02030d + 3bc0975a: c798 sw a4,8(a5) + 3bc0975c: 110a0737 lui a4,0x110a0 + 3bc09760: 10070713 addi a4,a4,256 # 110a0100 + 3bc09764: c7d8 sw a4,12(a5) + 3bc09766: 0f131737 lui a4,0xf131 + 3bc0976a: 61470713 addi a4,a4,1556 # f131614 + 3bc0976e: cb98 sw a4,16(a5) + 3bc09770: 00151737 lui a4,0x151 + 3bc09774: 0749 addi a4,a4,18 + 3bc09776: cbd8 sw a4,20(a5) + 3bc09778: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0977c: 10000713 li a4,256 + 3bc09780: cfd8 sw a4,28(a5) + 3bc09782: 86014737 lui a4,0x86014 + 3bc09786: 53270713 addi a4,a4,1330 # ffffffff86014532 <__BL2_END__+0xffffffff4a401122> + 3bc0978a: d398 sw a4,32(a5) + 3bc0978c: 471d li a4,7 + 3bc0978e: d3d8 sw a4,36(a5) + 3bc09790: 76012737 lui a4,0x76012 + 3bc09794: 34570713 addi a4,a4,837 # 76012345 <__BL2_END__+0x3a3fef35> + 3bc09798: bdad j 3bc09612 + +000000003bc0979a : + 3bc0979a: 8082 ret + +000000003bc0979c : + 3bc0979c: 63746737 lui a4,0x63746 + 3bc097a0: 080047b7 lui a5,0x8004 + 3bc097a4: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32f61> + 3bc097a8: c7d8 sw a4,12(a5) + 3bc097aa: 14000737 lui a4,0x14000 + 3bc097ae: c3f8 sw a4,68(a5) + 3bc097b0: 470d li a4,3 + 3bc097b2: d7f8 sw a4,108(a5) + 3bc097b4: 979c06b7 lui a3,0x979c0 + 3bc097b8: 10078713 addi a4,a5,256 # 8004100 + 3bc097bc: c734 sw a3,72(a4) + 3bc097be: 810416b7 lui a3,0x81041 + 3bc097c2: 40068693 addi a3,a3,1024 # ffffffff81041400 <__BL2_END__+0xffffffff4542dff0> + 3bc097c6: c394 sw a3,0(a5) + 3bc097c8: 006a06b7 lui a3,0x6a0 + 3bc097cc: 0207a823 sw zero,48(a5) + 3bc097d0: 0685 addi a3,a3,1 + 3bc097d2: dbd4 sw a3,52(a5) + 3bc097d4: 000206b7 lui a3,0x20 + 3bc097d8: df94 sw a3,56(a5) + 3bc097da: 002016b7 lui a3,0x201 + 3bc097de: 07068693 addi a3,a3,112 # 201070 <__BSS_SIZE__+0x1fb460> + 3bc097e2: cbb4 sw a3,80(a5) + 3bc097e4: 005106b7 lui a3,0x510 + 3bc097e8: 0607a023 sw zero,96(a5) + 3bc097ec: 02c68693 addi a3,a3,44 # 51002c <__BSS_SIZE__+0x50a41c> + 3bc097f0: 6641 lui a2,0x10 + 3bc097f2: d3f4 sw a3,100(a5) + 3bc097f4: 04360613 addi a2,a2,67 # 10043 <__BSS_SIZE__+0xa433> + 3bc097f8: 08078693 addi a3,a5,128 + 3bc097fc: cab0 sw a2,80(a3) + 3bc097fe: 03730637 lui a2,0x3730 + 3bc09802: 0c07aa23 sw zero,212(a5) + 3bc09806: 04060613 addi a2,a2,64 # 3730040 <__BSS_SIZE__+0x372a430> + 3bc0980a: cef0 sw a2,92(a3) + 3bc0980c: 00800637 lui a2,0x800 + 3bc09810: d2b0 sw a2,96(a3) + 3bc09812: 0a0116b7 lui a3,0xa011 + 3bc09816: 61068693 addi a3,a3,1552 # a011610 + 3bc0981a: c314 sw a3,0(a4) + 3bc0981c: 000306b7 lui a3,0x30 + 3bc09820: 41468693 addi a3,a3,1044 # 30414 <__BSS_SIZE__+0x2a804> + 3bc09824: c354 sw a3,4(a4) + 3bc09826: 030406b7 lui a3,0x3040 + 3bc0982a: 40868693 addi a3,a3,1032 # 3040408 <__BSS_SIZE__+0x303a7f8> + 3bc0982e: c714 sw a3,8(a4) + 3bc09830: 668d lui a3,0x3 + 3bc09832: 0691 addi a3,a3,4 + 3bc09834: c754 sw a3,12(a4) + 3bc09836: 050206b7 lui a3,0x5020 + 3bc0983a: 40668693 addi a3,a3,1030 # 5020406 + 3bc0983e: cb14 sw a3,16(a4) + 3bc09840: 010106b7 lui a3,0x1010 + 3bc09844: 30368693 addi a3,a3,771 # 1010303 <__BSS_SIZE__+0x100a6f3> + 3bc09848: cb54 sw a3,20(a4) + 3bc0984a: 50300693 li a3,1283 + 3bc0984e: d314 sw a3,32(a4) + 3bc09850: 048586b7 lui a3,0x4858 + 3bc09854: 18078713 addi a4,a5,384 + 3bc09858: 30268693 addi a3,a3,770 # 4858302 + 3bc0985c: cb14 sw a3,16(a4) + 3bc0985e: 000706b7 lui a3,0x70 + 3bc09862: 10268693 addi a3,a3,258 # 70102 <__BSS_SIZE__+0x6a4f2> + 3bc09866: cb54 sw a3,20(a4) + 3bc09868: 07c136b7 lui a3,0x7c13 + 3bc0986c: 12168693 addi a3,a3,289 # 7c13121 + 3bc09870: cf14 sw a3,24(a4) + 3bc09872: 02100693 li a3,33 + 3bc09876: cf54 sw a3,28(a4) + 3bc09878: c04006b7 lui a3,0xc0400 + 3bc0987c: 06e1 addi a3,a3,24 + 3bc0987e: d314 sw a3,32(a4) + 3bc09880: 00fe06b7 lui a3,0xfe0 + 3bc09884: 0ff68693 addi a3,a3,255 # fe00ff <__BSS_SIZE__+0xfda4ef> + 3bc09888: d354 sw a3,36(a4) + 3bc0988a: 800006b7 lui a3,0x80000 + 3bc0988e: d714 sw a3,40(a4) + 3bc09890: 2c100693 li a3,705 + 3bc09894: db14 sw a3,48(a4) + 3bc09896: 4685 li a3,1 + 3bc09898: c334 sw a3,64(a4) + 3bc0989a: 6609 lui a2,0x2 + 3bc0989c: 001405b7 lui a1,0x140 + 3bc098a0: f1f60613 addi a2,a2,-225 # 1f1f <__BSS_SIZE__-0x3cf1> + 3bc098a4: c374 sw a3,68(a4) + 3bc098a6: 70758593 addi a1,a1,1799 # 140707 <__BSS_SIZE__+0x13aaf7> + 3bc098aa: 20078713 addi a4,a5,512 + 3bc098ae: c310 sw a2,0(a4) + 3bc098b0: c34c sw a1,4(a4) + 3bc098b2: 2007a423 sw zero,520(a5) + 3bc098b6: 1f0005b7 lui a1,0x1f000 + 3bc098ba: c74c sw a1,12(a4) + 3bc098bc: cb10 sw a2,16(a4) + 3bc098be: 050f0637 lui a2,0x50f0 + 3bc098c2: 50560613 addi a2,a2,1285 # 50f0505 + 3bc098c6: cb50 sw a2,20(a4) + 3bc098c8: 06060637 lui a2,0x6060 + 3bc098cc: 60560613 addi a2,a2,1541 # 6060605 + 3bc098d0: cf10 sw a2,24(a4) + 3bc098d2: 60600613 li a2,1542 + 3bc098d6: cf50 sw a2,28(a4) + 3bc098d8: 6611 lui a2,0x4 + 3bc098da: f3f60593 addi a1,a2,-193 # 3f3f <__BSS_SIZE__-0x1cd1> + 3bc098de: d30c sw a1,32(a4) + 3bc098e0: 050505b7 lui a1,0x5050 + 3bc098e4: 50558593 addi a1,a1,1285 # 5050505 + 3bc098e8: d34c sw a1,36(a4) + 3bc098ea: d70c sw a1,40(a4) + 3bc098ec: 001f25b7 lui a1,0x1f2 + 3bc098f0: f0558593 addi a1,a1,-251 # 1f1f05 <__BSS_SIZE__+0x1ec2f5> + 3bc098f4: d74c sw a1,44(a4) + 3bc098f6: 070105b7 lui a1,0x7010 + 3bc098fa: 70858593 addi a1,a1,1800 # 7010708 + 3bc098fe: c32c sw a1,64(a4) + 3bc09900: 2407a223 sw zero,580(a5) + 3bc09904: f8560613 addi a2,a2,-123 + 3bc09908: cb30 sw a2,80(a4) + 3bc0990a: 02000613 li a2,32 + 3bc0990e: cb70 sw a2,84(a4) + 3bc09910: 10000637 lui a2,0x10000 + 3bc09914: 0a860613 addi a2,a2,168 # 100000a8 + 3bc09918: cf70 sw a2,92(a4) + 3bc0991a: d370 sw a2,100(a4) + 3bc0991c: d770 sw a2,108(a4) + 3bc0991e: 3007a023 sw zero,768(a5) + 3bc09922: 3007a223 sw zero,772(a5) + 3bc09926: 3007a623 sw zero,780(a5) + 3bc0992a: 30078713 addi a4,a5,768 + 3bc0992e: d314 sw a3,32(a4) + 3bc09930: 3607a623 sw zero,876(a5) + 3bc09934: 40078713 addi a4,a5,1024 + 3bc09938: 4645 li a2,17 + 3bc0993a: c310 sw a2,0(a4) + 3bc0993c: 6619 lui a2,0x6 + 3bc0993e: c350 sw a2,4(a4) + 3bc09940: c710 sw a2,8(a4) + 3bc09942: 48078713 addi a4,a5,1152 + 3bc09946: cb14 sw a3,16(a4) + 3bc09948: 489d li a7,7 + 3bc0994a: 01172a23 sw a7,20(a4) # 14000014 + 3bc0994e: 06a00813 li a6,106 + 3bc09952: 6505 lui a0,0x1 + 3bc09954: 01072c23 sw a6,24(a4) + 3bc09958: e0750513 addi a0,a0,-505 # e07 <__BSS_SIZE__-0x4e09> + 3bc0995c: 01a805b7 lui a1,0x1a80 + 3bc09960: cf48 sw a0,28(a4) + 3bc09962: 1a858593 addi a1,a1,424 # 1a801a8 <__BSS_SIZE__+0x1a7a598> + 3bc09966: d30c sw a1,32(a4) + 3bc09968: db50 sw a2,52(a4) + 3bc0996a: df10 sw a2,56(a4) + 3bc0996c: 50078713 addi a4,a5,1280 + 3bc09970: c334 sw a3,64(a4) + 3bc09972: 05172223 sw a7,68(a4) + 3bc09976: 05072423 sw a6,72(a4) + 3bc0997a: c768 sw a0,76(a4) + 3bc0997c: cb2c sw a1,80(a4) + 3bc0997e: d370 sw a2,100(a4) + 3bc09980: d730 sw a2,104(a4) + 3bc09982: 58078713 addi a4,a5,1408 + 3bc09986: db34 sw a3,112(a4) + 3bc09988: 07172a23 sw a7,116(a4) + 3bc0998c: 07072c23 sw a6,120(a4) + 3bc09990: df68 sw a0,124(a4) + 3bc09992: 60078793 addi a5,a5,1536 + 3bc09996: c38c sw a1,0(a5) + 3bc09998: 8082 ret + +000000003bc0999a : + 3bc0999a: 080047b7 lui a5,0x8004 + 3bc0999e: 4709 li a4,2 + 3bc099a0: db98 sw a4,48(a5) + 3bc099a2: 00400737 lui a4,0x400 + 3bc099a6: 0761 addi a4,a4,24 + 3bc099a8: 18078693 addi a3,a5,384 # 8004180 + 3bc099ac: d298 sw a4,32(a3) + 3bc099ae: 0800a737 lui a4,0x800a + 3bc099b2: 00072a23 sw zero,20(a4) # 800a014 + 3bc099b6: 63746737 lui a4,0x63746 + 3bc099ba: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32f61> + 3bc099be: c7d8 sw a4,12(a5) + 3bc099c0: 08000737 lui a4,0x8000 + 3bc099c4: c3f8 sw a4,68(a5) + 3bc099c6: 8082 ret + +000000003bc099c8 : + 3bc099c8: 080047b7 lui a5,0x8004 + 3bc099cc: c0400737 lui a4,0xc0400 + 3bc099d0: 0207a823 sw zero,48(a5) # 8004030 + 3bc099d4: 0761 addi a4,a4,24 + 3bc099d6: 1ae7a023 sw a4,416(a5) + 3bc099da: 6705 lui a4,0x1 + 3bc099dc: 177d addi a4,a4,-1 + 3bc099de: 0800a6b7 lui a3,0x800a + 3bc099e2: cad8 sw a4,20(a3) + 3bc099e4: 63746737 lui a4,0x63746 + 3bc099e8: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32f61> + 3bc099ec: c7d8 sw a4,12(a5) + 3bc099ee: 14000737 lui a4,0x14000 + 3bc099f2: c3f8 sw a4,68(a5) + 3bc099f4: 8082 ret + +000000003bc099f6 : + 3bc099f6: 080047b7 lui a5,0x8004 + 3bc099fa: 4398 lw a4,0(a5) + 3bc099fc: 0000a797 auipc a5,0xa + 3bc09a00: 9ee7aa23 sw a4,-1548(a5) # 3bc133f0 + 3bc09a04: 34c7368b extu a3,a4,13,12 + 3bc09a08: 4785 li a5,1 + 3bc09a0a: 9f95 subw a5,a5,a3 + 3bc09a0c: 40f557bb sraw a5,a0,a5 + 3bc09a10: 01e7571b srliw a4,a4,0x1e + 3bc09a14: 4689 li a3,2 + 3bc09a16: 40e6873b subw a4,a3,a4 + 3bc09a1a: 0ff7f793 andi a5,a5,255 + 3bc09a1e: 40e7d7bb sraw a5,a5,a4 + 3bc09a22: 0ff7f793 andi a5,a5,255 + 3bc09a26: ffb7861b addiw a2,a5,-5 + 3bc09a2a: 4711 li a4,4 + 3bc09a2c: 1ac76f63 bltu a4,a2,3bc09bea + 3bc09a30: 00002717 auipc a4,0x2 + 3bc09a34: 9f070713 addi a4,a4,-1552 # 3bc0b420 + 3bc09a38: 54c7478b lurw a5,a4,a2,2 + 3bc09a3c: 2781 sext.w a5,a5 + 3bc09a3e: 97ba add a5,a5,a4 + 3bc09a40: 8782 jr a5 + 3bc09a42: 00510737 lui a4,0x510 + 3bc09a46: 080047b7 lui a5,0x8004 + 3bc09a4a: 0765 addi a4,a4,25 + 3bc09a4c: d3f8 sw a4,100(a5) + 3bc09a4e: 0b011737 lui a4,0xb011 + 3bc09a52: 61070713 addi a4,a4,1552 # b011610 + 3bc09a56: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09a5a: 50200713 li a4,1282 + 3bc09a5e: 12e7a023 sw a4,288(a5) + 3bc09a62: 08004637 lui a2,0x8004 + 3bc09a66: 6709 lui a4,0x2 + 3bc09a68: 20060793 addi a5,a2,512 # 8004200 + 3bc09a6c: f1f70713 addi a4,a4,-225 # 1f1f <__BSS_SIZE__-0x3cf1> + 3bc09a70: 003f06b7 lui a3,0x3f0 + 3bc09a74: c398 sw a4,0(a5) + 3bc09a76: 60668693 addi a3,a3,1542 # 3f0606 <__BSS_SIZE__+0x3ea9f6> + 3bc09a7a: c3d4 sw a3,4(a5) + 3bc09a7c: 20062423 sw zero,520(a2) + 3bc09a80: 1f1f06b7 lui a3,0x1f1f0 + 3bc09a84: c7d4 sw a3,12(a5) + 3bc09a86: cb98 sw a4,16(a5) + 3bc09a88: 040f0737 lui a4,0x40f0 + 3bc09a8c: 40470713 addi a4,a4,1028 # 40f0404 <__BSS_SIZE__+0x40ea7f4> + 3bc09a90: cbd8 sw a4,20(a5) + 3bc09a92: 04040737 lui a4,0x4040 + 3bc09a96: 40470713 addi a4,a4,1028 # 4040404 <__BSS_SIZE__+0x403a7f4> + 3bc09a9a: cf98 sw a4,24(a5) + 3bc09a9c: 40400693 li a3,1028 + 3bc09aa0: cfd4 sw a3,28(a5) + 3bc09aa2: 6691 lui a3,0x4 + 3bc09aa4: f3f68693 addi a3,a3,-193 # 3f3f <__BSS_SIZE__-0x1cd1> + 3bc09aa8: d394 sw a3,32(a5) + 3bc09aaa: d3d8 sw a4,36(a5) + 3bc09aac: d798 sw a4,40(a5) + 3bc09aae: 001f2737 lui a4,0x1f2 + 3bc09ab2: f0470713 addi a4,a4,-252 # 1f1f04 <__BSS_SIZE__+0x1ec2f4> + 3bc09ab6: d7d8 sw a4,44(a5) + 3bc09ab8: a289 j 3bc09bfa + 3bc09aba: 00510737 lui a4,0x510 + 3bc09abe: 080047b7 lui a5,0x8004 + 3bc09ac2: 02c70713 addi a4,a4,44 # 51002c <__BSS_SIZE__+0x50a41c> + 3bc09ac6: d3f8 sw a4,100(a5) + 3bc09ac8: 0a011737 lui a4,0xa011 + 3bc09acc: 61070713 addi a4,a4,1552 # a011610 + 3bc09ad0: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09ad4: 50300713 li a4,1283 + 3bc09ad8: 12e7a023 sw a4,288(a5) + 3bc09adc: 08004637 lui a2,0x8004 + 3bc09ae0: 6709 lui a4,0x2 + 3bc09ae2: 20060793 addi a5,a2,512 # 8004200 + 3bc09ae6: f1f70713 addi a4,a4,-225 # 1f1f <__BSS_SIZE__-0x3cf1> + 3bc09aea: 003f06b7 lui a3,0x3f0 + 3bc09aee: c398 sw a4,0(a5) + 3bc09af0: 70768693 addi a3,a3,1799 # 3f0707 <__BSS_SIZE__+0x3eaaf7> + 3bc09af4: c3d4 sw a3,4(a5) + 3bc09af6: 20062423 sw zero,520(a2) + 3bc09afa: 1f0006b7 lui a3,0x1f000 + 3bc09afe: c7d4 sw a3,12(a5) + 3bc09b00: cb98 sw a4,16(a5) + 3bc09b02: 050f0737 lui a4,0x50f0 + 3bc09b06: 50570713 addi a4,a4,1285 # 50f0505 + 3bc09b0a: cbd8 sw a4,20(a5) + 3bc09b0c: 05050737 lui a4,0x5050 + 3bc09b10: 50570713 addi a4,a4,1285 # 5050505 + 3bc09b14: cf98 sw a4,24(a5) + 3bc09b16: 50500693 li a3,1285 + 3bc09b1a: cfd4 sw a3,28(a5) + 3bc09b1c: 6691 lui a3,0x4 + 3bc09b1e: f3f68693 addi a3,a3,-193 # 3f3f <__BSS_SIZE__-0x1cd1> + 3bc09b22: d394 sw a3,32(a5) + 3bc09b24: d3d8 sw a4,36(a5) + 3bc09b26: d798 sw a4,40(a5) + 3bc09b28: 001f2737 lui a4,0x1f2 + 3bc09b2c: f0570713 addi a4,a4,-251 # 1f1f05 <__BSS_SIZE__+0x1ec2f5> + 3bc09b30: b759 j 3bc09ab6 + 3bc09b32: 00510737 lui a4,0x510 + 3bc09b36: 080047b7 lui a5,0x8004 + 3bc09b3a: 02b70713 addi a4,a4,43 # 51002b <__BSS_SIZE__+0x50a41b> + 3bc09b3e: d3f8 sw a4,100(a5) + 3bc09b40: 0b0f1737 lui a4,0xb0f1 + 3bc09b44: 61070713 addi a4,a4,1552 # b0f1610 + 3bc09b48: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09b4c: 50300713 li a4,1283 + 3bc09b50: 12e7a023 sw a4,288(a5) + 3bc09b54: 08004637 lui a2,0x8004 + 3bc09b58: 6709 lui a4,0x2 + 3bc09b5a: 20060793 addi a5,a2,512 # 8004200 + 3bc09b5e: f1f70713 addi a4,a4,-225 # 1f1f <__BSS_SIZE__-0x3cf1> + 3bc09b62: 000706b7 lui a3,0x70 + 3bc09b66: c398 sw a4,0(a5) + 3bc09b68: 70768693 addi a3,a3,1799 # 70707 <__BSS_SIZE__+0x6aaf7> + 3bc09b6c: c3d4 sw a3,4(a5) + 3bc09b6e: 20062423 sw zero,520(a2) + 3bc09b72: 1f0006b7 lui a3,0x1f000 + 3bc09b76: c7d4 sw a3,12(a5) + 3bc09b78: cb98 sw a4,16(a5) + 3bc09b7a: 060f0737 lui a4,0x60f0 + 3bc09b7e: 60670713 addi a4,a4,1542 # 60f0606 + 3bc09b82: cbd8 sw a4,20(a5) + 3bc09b84: 06060737 lui a4,0x6060 + 3bc09b88: 60670713 addi a4,a4,1542 # 6060606 + 3bc09b8c: cf98 sw a4,24(a5) + 3bc09b8e: 60600693 li a3,1542 + 3bc09b92: cfd4 sw a3,28(a5) + 3bc09b94: 6691 lui a3,0x4 + 3bc09b96: f3f68693 addi a3,a3,-193 # 3f3f <__BSS_SIZE__-0x1cd1> + 3bc09b9a: d394 sw a3,32(a5) + 3bc09b9c: d3d8 sw a4,36(a5) + 3bc09b9e: d798 sw a4,40(a5) + 3bc09ba0: 001f2737 lui a4,0x1f2 + 3bc09ba4: f0670713 addi a4,a4,-250 # 1f1f06 <__BSS_SIZE__+0x1ec2f6> + 3bc09ba8: b739 j 3bc09ab6 + 3bc09baa: 00510737 lui a4,0x510 + 3bc09bae: 080047b7 lui a5,0x8004 + 3bc09bb2: 04170713 addi a4,a4,65 # 510041 <__BSS_SIZE__+0x50a431> + 3bc09bb6: d3f8 sw a4,100(a5) + 3bc09bb8: 0b0f1737 lui a4,0xb0f1 + 3bc09bbc: 61070713 addi a4,a4,1552 # b0f1610 + 3bc09bc0: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09bc4: 50400713 li a4,1284 + 3bc09bc8: b761 j 3bc09b50 + 3bc09bca: 00510737 lui a4,0x510 + 3bc09bce: 080047b7 lui a5,0x8004 + 3bc09bd2: 06e70713 addi a4,a4,110 # 51006e <__BSS_SIZE__+0x50a45e> + 3bc09bd6: d3f8 sw a4,100(a5) + 3bc09bd8: 0b0f1737 lui a4,0xb0f1 + 3bc09bdc: 61070713 addi a4,a4,1552 # b0f1610 + 3bc09be0: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09be4: 50500713 li a4,1285 + 3bc09be8: b7a5 j 3bc09b50 + 3bc09bea: 4719 li a4,6 + 3bc09bec: eee788e3 beq a5,a4,3bc09adc + 3bc09bf0: 00f74c63 blt a4,a5,3bc09c08 + 3bc09bf4: 4715 li a4,5 + 3bc09bf6: e6e786e3 beq a5,a4,3bc09a62 + 3bc09bfa: 080047b7 lui a5,0x8004 + 3bc09bfe: 4709 li a4,2 + 3bc09c00: d3b8 sw a4,96(a5) + 3bc09c02: 0607a023 sw zero,96(a5) # 8004060 + 3bc09c06: 8082 ret + 3bc09c08: 37e5 addiw a5,a5,-7 + 3bc09c0a: 4709 li a4,2 + 3bc09c0c: fef767e3 bltu a4,a5,3bc09bfa + 3bc09c10: b791 j 3bc09b54 + +000000003bc09c12 : + 3bc09c12: 03020737 lui a4,0x3020 + 3bc09c16: 080007b7 lui a5,0x8000 + 3bc09c1a: 10070713 addi a4,a4,256 # 3020100 <__BSS_SIZE__+0x301a4f0> + 3bc09c1e: c398 sw a4,0(a5) + 3bc09c20: 07060737 lui a4,0x7060 + 3bc09c24: 50470713 addi a4,a4,1284 # 7060504 + 3bc09c28: c3d8 sw a4,4(a5) + 3bc09c2a: 0b0a1737 lui a4,0xb0a1 + 3bc09c2e: 90870713 addi a4,a4,-1784 # b0a0908 + 3bc09c32: c798 sw a4,8(a5) + 3bc09c34: 0f0e1737 lui a4,0xf0e1 + 3bc09c38: d0c70713 addi a4,a4,-756 # f0e0d0c + 3bc09c3c: c7d8 sw a4,12(a5) + 3bc09c3e: 13121737 lui a4,0x13121 + 3bc09c42: 11070713 addi a4,a4,272 # 13121110 + 3bc09c46: cb98 sw a4,16(a5) + 3bc09c48: 00161737 lui a4,0x161 + 3bc09c4c: 51470713 addi a4,a4,1300 # 161514 <__BSS_SIZE__+0x15b904> + 3bc09c50: cbd8 sw a4,20(a5) + 3bc09c52: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09c56: 10000593 li a1,256 + 3bc09c5a: 76543737 lui a4,0x76543 + 3bc09c5e: cfcc sw a1,28(a5) + 3bc09c60: 21070713 addi a4,a4,528 # 76543210 <__BL2_END__+0x3a92fe00> + 3bc09c64: d398 sw a4,32(a5) + 3bc09c66: 46a1 li a3,8 + 3bc09c68: d3d4 sw a3,36(a5) + 3bc09c6a: d798 sw a4,40(a5) + 3bc09c6c: d7d4 sw a3,44(a5) + 3bc09c6e: 007f0737 lui a4,0x7f0 + 3bc09c72: 0407a023 sw zero,64(a5) + 3bc09c76: 0735 addi a4,a4,13 + 3bc09c78: c3f8 sw a4,68(a5) + 3bc09c7a: 0407a423 sw zero,72(a5) + 3bc09c7e: 4741 li a4,16 + 3bc09c80: c7f8 sw a4,76(a5) + 3bc09c82: 4611 li a2,4 + 3bc09c84: 0c001737 lui a4,0xc001 + 3bc09c88: cbb0 sw a2,80(a5) + 3bc09c8a: b0070713 addi a4,a4,-1280 # c000b00 + 3bc09c8e: cbf8 sw a4,84(a5) + 3bc09c90: 09160737 lui a4,0x9160 + 3bc09c94: 04f70713 addi a4,a4,79 # 916004f + 3bc09c98: cfb8 sw a4,88(a5) + 3bc09c9a: 040008b7 lui a7,0x4000 + 3bc09c9e: 0407ae23 sw zero,92(a5) + 3bc09ca2: 37088713 addi a4,a7,880 # 4000370 <__BSS_SIZE__+0x3ffa760> + 3bc09ca6: d3b8 sw a4,96(a5) + 3bc09ca8: 0e001737 lui a4,0xe001 + 3bc09cac: 94070713 addi a4,a4,-1728 # e000940 + 3bc09cb0: d3f8 sw a4,100(a5) + 3bc09cb2: 00800737 lui a4,0x800 + 3bc09cb6: d7b8 sw a4,104(a5) + 3bc09cb8: 10800713 li a4,264 + 3bc09cbc: dbb8 sw a4,112(a5) + 3bc09cbe: 00072737 lui a4,0x72 + 3bc09cc2: dbf8 sw a4,116(a5) + 3bc09cc4: 1f00e6b7 lui a3,0x1f00e + 3bc09cc8: 08078713 addi a4,a5,128 + 3bc09ccc: c314 sw a3,0(a4) + 3bc09cce: 010916b7 lui a3,0x1091 + 3bc09cd2: 06bd addi a3,a3,15 + 3bc09cd4: c354 sw a3,4(a4) + 3bc09cd6: 0a0106b7 lui a3,0xa010 + 3bc09cda: 11468693 addi a3,a3,276 # a010114 + 3bc09cde: c714 sw a3,8(a4) + 3bc09ce0: aaaa06b7 lui a3,0xaaaa0 + 3bc09ce4: 08f68693 addi a3,a3,143 # ffffffffaaaa008f <__BL2_END__+0xffffffff6ee8cc7f> + 3bc09ce8: c754 sw a3,12(a4) + 3bc09cea: 6691 lui a3,0x4 + 3bc09cec: 80068513 addi a0,a3,-2048 # 3800 <__BSS_SIZE__-0x2410> + 3bc09cf0: cb08 sw a0,16(a4) + 3bc09cf2: 6505 lui a0,0x1 + 3bc09cf4: 80150813 addi a6,a0,-2047 # 801 <__BSS_SIZE__-0x540f> + 3bc09cf8: 01072a23 sw a6,20(a4) # 72014 <__BSS_SIZE__+0x6c404> + 3bc09cfc: 07400837 lui a6,0x7400 + 3bc09d00: 54080813 addi a6,a6,1344 # 7400540 + 3bc09d04: 03072023 sw a6,32(a4) + 3bc09d08: 01420837 lui a6,0x1420 + 3bc09d0c: 50480813 addi a6,a6,1284 # 1420504 <__BSS_SIZE__+0x141a8f4> + 3bc09d10: 03072223 sw a6,36(a4) + 3bc09d14: 00550837 lui a6,0x550 + 3bc09d18: 0829 addi a6,a6,10 + 3bc09d1a: 03072423 sw a6,40(a4) + 3bc09d1e: 00554837 lui a6,0x554 + 3bc09d22: c5a80813 addi a6,a6,-934 # 553c5a <__BSS_SIZE__+0x54e04a> + 3bc09d26: 03072623 sw a6,44(a4) + 3bc09d2a: 00aaa837 lui a6,0xaaa + 3bc09d2e: 5c380813 addi a6,a6,1475 # aaa5c3 <__BSS_SIZE__+0xaa49b3> + 3bc09d32: 03072823 sw a6,48(a4) + 3bc09d36: 00aaf837 lui a6,0xaaf + 3bc09d3a: 0f080813 addi a6,a6,240 # aaf0f0 <__BSS_SIZE__+0xaa94e0> + 3bc09d3e: 03072a23 sw a6,52(a4) + 3bc09d42: 1e001837 lui a6,0x1e001 + 3bc09d46: f0f80813 addi a6,a6,-241 # 1e000f0f + 3bc09d4a: 03072c23 sw a6,56(a4) + 3bc09d4e: 00084837 lui a6,0x84 + 3bc09d52: e1380813 addi a6,a6,-493 # 83e13 <__BSS_SIZE__+0x7e203> + 3bc09d56: 03072e23 sw a6,60(a4) + 3bc09d5a: 00030837 lui a6,0x30 + 3bc09d5e: 0e07a823 sw zero,240(a5) + 3bc09d62: 03380813 addi a6,a6,51 # 30033 <__BSS_SIZE__+0x2a423> + 3bc09d66: 07072a23 sw a6,116(a4) + 3bc09d6a: 00210837 lui a6,0x210 + 3bc09d6e: 02c80813 addi a6,a6,44 # 21002c <__BSS_SIZE__+0x20a41c> + 3bc09d72: 07072c23 sw a6,120(a4) + 3bc09d76: 00370837 lui a6,0x370 + 3bc09d7a: 0859 addi a6,a6,22 + 3bc09d7c: 07072e23 sw a6,124(a4) + 3bc09d80: 10078713 addi a4,a5,256 + 3bc09d84: 01172023 sw a7,0(a4) + 3bc09d88: 1007a223 sw zero,260(a5) + 3bc09d8c: 1007a623 sw zero,268(a5) + 3bc09d90: 1007a823 sw zero,272(a5) + 3bc09d94: 1007aa23 sw zero,276(a5) + 3bc09d98: 681d lui a6,0x7 + 3bc09d9a: 1007ac23 sw zero,280(a5) + 3bc09d9e: a1080813 addi a6,a6,-1520 # 6a10 <__BSS_SIZE__+0xe00> + 3bc09da2: 01072e23 sw a6,28(a4) + 3bc09da6: 1207a023 sw zero,288(a5) + 3bc09daa: ef700813 li a6,-265 + 3bc09dae: 03072223 sw a6,36(a4) + 3bc09db2: 487d li a6,31 + 3bc09db4: 03072423 sw a6,40(a4) + 3bc09db8: 4805 li a6,1 + 3bc09dba: 03072623 sw a6,44(a4) + 3bc09dbe: 10100813 li a6,257 + 3bc09dc2: 03072823 sw a6,48(a4) + 3bc09dc6: db4c sw a1,52(a4) + 3bc09dc8: 48d1 li a7,20 + 3bc09dca: 03172c23 sw a7,56(a4) + 3bc09dce: 1407a023 sw zero,320(a5) + 3bc09dd2: 1407a223 sw zero,324(a5) + 3bc09dd6: 80850e13 addi t3,a0,-2040 + 3bc09dda: 05c72423 sw t3,72(a4) + 3bc09dde: 1407a623 sw zero,332(a5) + 3bc09de2: 4895 li a7,5 + 3bc09de4: 05172823 sw a7,80(a4) + 3bc09de8: 05072a23 sw a6,84(a4) + 3bc09dec: 1407ac23 sw zero,344(a5) + 3bc09df0: 00333837 lui a6,0x333 + 3bc09df4: 1407ae23 sw zero,348(a5) + 3bc09df8: 33180813 addi a6,a6,817 # 333331 <__BSS_SIZE__+0x32d721> + 3bc09dfc: 1607a223 sw zero,356(a5) + 3bc09e00: 07072423 sw a6,104(a4) + 3bc09e04: 1607a623 sw zero,364(a5) + 3bc09e08: 1607a823 sw zero,368(a5) + 3bc09e0c: db6c sw a1,116(a4) + 3bc09e0e: 000205b7 lui a1,0x20 + 3bc09e12: 18078713 addi a4,a5,384 + 3bc09e16: 05c1 addi a1,a1,16 + 3bc09e18: c30c sw a1,0(a4) + 3bc09e1a: 1807a223 sw zero,388(a5) + 3bc09e1e: 000505b7 lui a1,0x50 + 3bc09e22: 1807a423 sw zero,392(a5) + 3bc09e26: 40058593 addi a1,a1,1024 # 50400 <__BSS_SIZE__+0x4a7f0> + 3bc09e2a: c74c sw a1,12(a4) + 3bc09e2c: 000215b7 lui a1,0x21 + 3bc09e30: 20e58593 addi a1,a1,526 # 2120e <__BSS_SIZE__+0x1b5fe> + 3bc09e34: cb0c sw a1,16(a4) + 3bc09e36: 2007a023 sw zero,512(a5) + 3bc09e3a: 20078713 addi a4,a5,512 + 3bc09e3e: 44000593 li a1,1088 + 3bc09e42: c34c sw a1,4(a4) + 3bc09e44: 2007a423 sw zero,520(a5) + 3bc09e48: 2207a023 sw zero,544(a5) + 3bc09e4c: d34c sw a1,36(a4) + 3bc09e4e: 2207a423 sw zero,552(a5) + 3bc09e52: 4007a023 sw zero,1024(a5) + 3bc09e56: 4007a223 sw zero,1028(a5) + 3bc09e5a: 4007a423 sw zero,1032(a5) + 3bc09e5e: 4007a623 sw zero,1036(a5) + 3bc09e62: 001005b7 lui a1,0x100 + 3bc09e66: 40078713 addi a4,a5,1024 + 3bc09e6a: e4b7558b swd a1,a1,(a4),2,3 + 3bc09e6e: 4007ac23 sw zero,1048(a5) + 3bc09e72: 04068693 addi a3,a3,64 + 3bc09e76: cf54 sw a3,28(a4) + 3bc09e78: 000416b7 lui a3,0x41 + 3bc09e7c: 50078713 addi a4,a5,1280 + 3bc09e80: 0685 addi a3,a3,1 + 3bc09e82: e0b7568b swd a3,a1,(a4),0,3 + 3bc09e86: 5007a423 sw zero,1288(a5) + 3bc09e8a: 5007a623 sw zero,1292(a5) + 3bc09e8e: cb10 sw a2,16(a4) + 3bc09e90: 5007aa23 sw zero,1300(a5) + 3bc09e94: 5007ac23 sw zero,1304(a5) + 3bc09e98: 5007ae23 sw zero,1308(a5) + 3bc09e9c: 480d li a6,3 + 3bc09e9e: 03072023 sw a6,32(a4) + 3bc09ea2: c334 sw a3,64(a4) + 3bc09ea4: c36c sw a1,68(a4) + 3bc09ea6: 5407a423 sw zero,1352(a5) + 3bc09eaa: 5407a623 sw zero,1356(a5) + 3bc09eae: cb30 sw a2,80(a4) + 3bc09eb0: 5407aa23 sw zero,1364(a5) + 3bc09eb4: 5407ac23 sw zero,1368(a5) + 3bc09eb8: 5407ae23 sw zero,1372(a5) + 3bc09ebc: 07072023 sw a6,96(a4) + 3bc09ec0: 08001737 lui a4,0x8001 + 3bc09ec4: 90070793 addi a5,a4,-1792 # 8000900 + 3bc09ec8: 40000693 li a3,1024 + 3bc09ecc: c394 sw a3,0(a5) + 3bc09ece: d7d4 sw a3,44(a5) + 3bc09ed0: db94 sw a3,48(a5) + 3bc09ed2: dbd4 sw a3,52(a5) + 3bc09ed4: df94 sw a3,56(a5) + 3bc09ed6: 94072023 sw zero,-1728(a4) + 3bc09eda: 96072823 sw zero,-1680(a4) + 3bc09ede: 96072a23 sw zero,-1676(a4) + 3bc09ee2: 080806b7 lui a3,0x8080 + 3bc09ee6: 96072c23 sw zero,-1672(a4) + 3bc09eea: 40468693 addi a3,a3,1028 # 8080404 + 3bc09eee: 08081837 lui a6,0x8081 + 3bc09ef2: dff4 sw a3,124(a5) + 3bc09ef4: 80880813 addi a6,a6,-2040 # 8080808 + 3bc09ef8: 98070793 addi a5,a4,-1664 + 3bc09efc: 06400637 lui a2,0x6400 + 3bc09f00: 0107a023 sw a6,0(a5) + 3bc09f04: 64060613 addi a2,a2,1600 # 6400640 + 3bc09f08: a0070793 addi a5,a4,-1536 + 3bc09f0c: e0c7d60b swd a2,a2,(a5),0,3 + 3bc09f10: e2c7d60b swd a2,a2,(a5),1,3 + 3bc09f14: 64000f93 li t6,1600 + 3bc09f18: 01f7a823 sw t6,16(a5) + 3bc09f1c: 0d000f37 lui t5,0xd000 + 3bc09f20: 0a001337 lui t1,0xa001 + 3bc09f24: 01e7aa23 sw t5,20(a5) + 3bc09f28: b0030313 addi t1,t1,-1280 # a000b00 + 3bc09f2c: 000408b7 lui a7,0x40 + 3bc09f30: 0067ac23 sw t1,24(a5) + 3bc09f34: 40088893 addi a7,a7,1024 # 40400 <__BSS_SIZE__+0x3a7f0> + 3bc09f38: 004006b7 lui a3,0x400 + 3bc09f3c: 04068693 addi a3,a3,64 # 400040 <__BSS_SIZE__+0x3fa430> + 3bc09f40: 0117ae23 sw a7,28(a5) + 3bc09f44: d394 sw a3,32(a5) + 3bc09f46: d3d4 sw a3,36(a5) + 3bc09f48: d794 sw a3,40(a5) + 3bc09f4a: d7d4 sw a3,44(a5) + 3bc09f4c: 04000e93 li t4,64 + 3bc09f50: 03d7a823 sw t4,48(a5) + 3bc09f54: a2072a23 sw zero,-1484(a4) + 3bc09f58: 03c7ac23 sw t3,56(a5) + 3bc09f5c: 0307ae23 sw a6,60(a5) + 3bc09f60: c3b0 sw a2,64(a5) + 3bc09f62: c3f0 sw a2,68(a5) + 3bc09f64: c7b0 sw a2,72(a5) + 3bc09f66: c7f0 sw a2,76(a5) + 3bc09f68: 05f7a823 sw t6,80(a5) + 3bc09f6c: 05e7aa23 sw t5,84(a5) + 3bc09f70: 0467ac23 sw t1,88(a5) + 3bc09f74: 0517ae23 sw a7,92(a5) + 3bc09f78: d3b4 sw a3,96(a5) + 3bc09f7a: d3f4 sw a3,100(a5) + 3bc09f7c: d7b4 sw a3,104(a5) + 3bc09f7e: d7f4 sw a3,108(a5) + 3bc09f80: 07d7a823 sw t4,112(a5) + 3bc09f84: a6072a23 sw zero,-1420(a4) + 3bc09f88: 07c7ac23 sw t3,120(a5) + 3bc09f8c: 0707ae23 sw a6,124(a5) + 3bc09f90: b0072023 sw zero,-1280(a4) + 3bc09f94: b0072223 sw zero,-1276(a4) + 3bc09f98: b0070793 addi a5,a4,-1280 + 3bc09f9c: 00404837 lui a6,0x404 + 3bc09fa0: 0107a423 sw a6,8(a5) + 3bc09fa4: 90050513 addi a0,a0,-1792 + 3bc09fa8: c7c8 sw a0,12(a5) + 3bc09faa: 000716b7 lui a3,0x71 + 3bc09fae: b0072823 sw zero,-1264(a4) + 3bc09fb2: e0e68693 addi a3,a3,-498 # 70e0e <__BSS_SIZE__+0x6b1fe> + 3bc09fb6: cbd4 sw a3,20(a5) + 3bc09fb8: b0072c23 sw zero,-1256(a4) + 3bc09fbc: b0072e23 sw zero,-1252(a4) + 3bc09fc0: 40400637 lui a2,0x40400 + 3bc09fc4: d390 sw a2,32(a5) + 3bc09fc6: 05c1 addi a1,a1,16 + 3bc09fc8: d3cc sw a1,36(a5) + 3bc09fca: b2072823 sw zero,-1232(a4) + 3bc09fce: b2072a23 sw zero,-1228(a4) + 3bc09fd2: 0307ac23 sw a6,56(a5) + 3bc09fd6: dfc8 sw a0,60(a5) + 3bc09fd8: b4072023 sw zero,-1216(a4) + 3bc09fdc: c3f4 sw a3,68(a5) + 3bc09fde: b4072423 sw zero,-1208(a4) + 3bc09fe2: b4072623 sw zero,-1204(a4) + 3bc09fe6: cbb0 sw a2,80(a5) + 3bc09fe8: cbec sw a1,84(a5) + 3bc09fea: 8082 ret + 3bc09fec: 0000 unimp + ... + +000000003bc09ff0 : + 3bc09ff0: 3032 3232 312d 2d32 3032 3254 3a31 3835 2022-12-20T21:58 + 3bc0a000: 333a 2b39 3830 303a 0030 0000 0000 0000 :39+08:00....... + +000000003bc0a010 : + 3bc0a010: 624a 3832 3967 673a 6536 3835 6565 0031 Jb28g9:g6e58ee1. + 3bc0a020: 3201 504f 4e45 4253 3a49 6e20 7865 5f74 .2OPENSBI: next_ + 3bc0a030: 6461 7264 303d 2578 786c 6120 6772 3d31 addr=0x%lx arg1= + 3bc0a040: 7830 6c25 0078 0000 7830 0000 63c6 ffff 0x%lx...0x...c.. + 3bc0a050: 636c ffff 636c ffff 636c ffff 636c ffff lc..lc..lc..lc.. + 3bc0a060: 63c6 ffff 636c ffff 636c ffff 647a ffff .c..lc..lc..zd.. + 3bc0a070: 636c ffff 636c ffff 636c ffff 6422 ffff lc..lc..lc.."d.. + 3bc0a080: 636c ffff 636c ffff 6402 ffff 636c ffff lc..lc...d..lc.. + 3bc0a090: 6480 ffff 636c ffff 636c ffff 6456 ffff .d..lc..lc..Vd.. + 3bc0a0a0: 636c ffff 6474 ffff 3001 4520 523a 5345 lc..td...0 E:RES + 3bc0a0b0: 5445 253a 3a73 6425 000a 0000 0000 0000 ET:%s:%d........ + 3bc0a0c0: 3001 4520 723a 3d61 7830 6c25 0a78 0000 .0 E:ra=0x%lx... + 3bc0a0d0: 6170 696e 0063 0000 3201 5352 2e43 000a panic....2RSC... + 3bc0a0e0: 3201 4c50 534c 0a2e 0000 0000 0000 0000 .2PLLS.......... + 3bc0a0f0: 3201 4c50 454c 0a2e 0000 0000 0000 0000 .2PLLE.......... + 3bc0a100: 3201 7355 2065 6e69 6574 6e72 6c61 3320 .2Use internal 3 + 3bc0a110: 6b32 000a 0000 0000 3201 7473 6f5f 5f6e 2k.......2st_on_ + 3bc0a120: 6572 7361 6e6f 253d 0a78 0000 0000 0000 reason=%x....... + 3bc0a130: 3201 7473 6f5f 6666 725f 6165 6f73 3d6e .2st_off_reason= + 3bc0a140: 7825 000a 0000 0000 0000 249f 1746 245d %x.........$F.]$ + 3bc0a150: 1746 245d aaab 24aa 8201 0012 8101 0018 F.]$...$........ + 3bc0a160: 8201 0030 8101 0016 c906 a55a 0024 0000 ..0.......Z.$... + +000000003bc0a170 : + 3bc0a170: 3130 3332 3534 3736 3938 6261 6463 6665 0123456789abcdef + 3bc0a180: 6867 6a69 6c6b 6e6d 706f 7271 7473 7675 ghijklmnopqrstuv + 3bc0a190: 7877 7a79 0000 0000 0101 0101 0101 0101 wxyz............ + 3bc0a1a0: 3301 4920 4c3a 4549 252f 2f64 7025 302f .3 I:LIE/%d/%p/0 + 3bc0a1b0: 2578 2f78 6c25 2e75 000a 0000 0000 0000 x%x/%lu......... + 3bc0a1c0: 3201 3250 2f53 7830 6c25 2f78 7025 0a2e .2P2S/0x%lx/%p.. + ... + 3bc0a1d8: 3101 5720 4c3a 3250 4e5f 4d4f 4741 4349 .1 W:LP2_NOMAGIC + 3bc0a1e8: 000a 0000 0000 0000 3001 4520 703a 7261 .........0 E:par + 3bc0a1f8: 6d61 5f32 6b63 7573 206d 3028 2578 2f78 am2_cksum (0x%x/ + 3bc0a208: 7830 7825 0a29 0000 3201 3250 2e45 000a 0x%x)....2P2E... + 3bc0a218: 3201 5044 2f53 7830 7825 302f 2578 2e78 .2DPS/0x%x/0x%x. + 3bc0a228: 000a 0000 0000 0000 3001 4520 643a 7264 .........0 E:ddr + 3bc0a238: 705f 7261 6d61 635f 736b 6d75 2820 7830 _param_cksum (0x + 3bc0a248: 7825 302f 2578 2978 000a 0000 0000 0000 %x/0x%x)........ + 3bc0a258: 3201 5044 2e45 000a 3101 5720 443a 204c .2DPE....1 W:DL + 3bc0a268: 6163 636e 6c65 656c 2e64 4c20 616f 2064 cancelled. Load + 3bc0a278: 6c66 7361 2e68 2820 6425 2e29 000a 0000 flash. (%d)..... + 3bc0a288: 3001 4520 463a 6961 656c 2064 6f74 6c20 .0 E:Failed to l + 3bc0a298: 616f 2064 4444 2052 6170 6172 206d 2528 oad DDR param (% + 3bc0a2a8: 2964 0a2e 0000 0000 3201 3243 2f53 7830 d).......2C2S/0x + 3bc0a2b8: 7825 302f 2578 2f78 7830 7825 0a2e 0000 %x/0x%x/0x%x.... + 3bc0a2c8: 3201 6f4e 4320 3039 4c36 6920 616d 6567 .2No C906L image + 3bc0a2d8: 0a2e 0000 0000 0000 3001 4520 623a 636c .........0 E:blc + 3bc0a2e8: 5f70 6e32 5f64 7572 616e 6464 2072 3028 p_2nd_runaddr (0 + 3bc0a2f8: 2578 2978 6920 2073 6f6e 2074 6e69 4420 x%x) is not in D + 3bc0a308: 4152 2e4d 000a 0000 3001 4520 623a 636c RAM......0 E:blc + 3bc0a318: 5f70 6e32 5f64 6973 657a 2820 7830 7825 p_2nd_size (0x%x + 3bc0a328: 2029 7369 6e20 746f 6920 206e 5244 4d41 ) is not in DRAM + 3bc0a338: 0a2e 0000 0000 0000 3001 4520 623a 636c .........0 E:blc + 3bc0a348: 5f70 6e32 5f64 6b63 7573 206d 3028 2578 p_2nd_cksum (0x% + 3bc0a358: 2f78 7830 7825 0a29 0000 0000 0000 0000 x/0x%x)......... + 3bc0a368: 3001 4520 763a 7265 6669 2079 6c62 7063 .0 E:verify blcp + 3bc0a378: 3220 646e 2820 6425 0a29 0000 0000 0000 2nd (%d)....... + 3bc0a388: 3201 3243 2e45 000a 3201 534d 302f 2578 .2C2E....2MS/0x% + 3bc0a398: 2f78 7830 7825 302f 2578 2e78 000a 0000 x/0x%x/0x%x..... + 3bc0a3a8: 3201 6f4e 6d20 6e6f 7469 726f 0a2e 0000 .2No monitor.... + 3bc0a3b8: 3001 4520 6d3a 6e6f 7469 726f 725f 6e75 .0 E:monitor_run + 3bc0a3c8: 6461 7264 2820 7830 7825 2029 7369 6e20 addr (0x%x) is n + 3bc0a3d8: 746f 6920 206e 5244 4d41 0a2e 0000 0000 ot in DRAM...... + 3bc0a3e8: 3001 4520 6d3a 6e6f 7469 726f 735f 7a69 .0 E:monitor_siz + 3bc0a3f8: 2065 3028 2578 2978 6920 2073 6f6e 2074 e (0x%x) is not + 3bc0a408: 6e69 4420 4152 2e4d 000a 0000 0000 0000 in DRAM......... + 3bc0a418: 3001 4520 6d3a 6e6f 7469 726f 635f 736b .0 E:monitor_cks + 3bc0a428: 6d75 2820 7830 7825 302f 2578 2978 000a um (0x%x/0x%x).. + 3bc0a438: 3001 4520 763a 7265 6669 2079 6f6d 696e .0 E:verify moni + 3bc0a448: 6f74 2072 2528 2964 000a 0000 0000 0000 tor (%d)........ + 3bc0a458: 3201 454d 0a2e 0000 3201 324c 302f 2578 .2ME.....2L2/0x% + 3bc0a468: 2e78 000a 0000 0000 3201 324c 302f 2578 x........2L2/0x% + 3bc0a478: 2f78 7830 7825 302f 2578 786c 302f 2578 x/0x%x/0x%lx/0x% + 3bc0a488: 2f78 7830 7825 000a 3201 4f43 504d 252f x/0x%x...2COMP/% + 3bc0a498: 2e64 000a 0000 0000 3001 4520 6c3a 616f d........0 E:loa + 3bc0a4a8: 6564 5f72 6e32 5f64 6b63 7573 206d 3028 der_2nd_cksum (0 + 3bc0a4b8: 2578 2f78 7830 7825 0a29 0000 0000 0000 x%x/0x%x)....... + 3bc0a4c8: 3001 4520 763a 7265 6669 2079 6f6c 6461 .0 E:verify load + 3bc0a4d8: 7265 3220 646e 2820 6425 0a29 0000 0000 er 2nd (%d)..... + 3bc0a4e8: 3001 4520 463a 6961 656c 2064 6f74 6420 .0 E:Failed to d + 3bc0a4f8: 6365 6d6f 7270 7365 2073 6f6c 6461 7265 ecompress loader + 3bc0a508: 325f 646e 2820 6425 252f 756c 0a29 0000 _2nd (%d/%lu)... + 3bc0a518: 3201 6f4c 6461 7265 325f 646e 6c20 616f .2Loader_2nd loa + 3bc0a528: 6564 2e64 000a 0000 3001 4520 463a 6961 ded......0 E:Fai + 3bc0a538: 656c 2064 6f74 6c20 616f 2064 6572 7473 led to load rest + 3bc0a548: 2820 6425 2e29 000a 3201 754a 706d 7420 (%d)....2Jump t + 3bc0a558: 206f 6f6d 696e 6f74 2072 7461 3020 2578 o monitor at 0x% + 3bc0a568: 786c 0a2e 0000 0000 3201 754a 706d 7420 lx.......2Jump t + 3bc0a578: 206f 6f6c 6461 7265 325f 646e 6120 2074 o loader_2nd at + 3bc0a588: 7830 6c25 2e78 000a 3201 460a 4253 204c 0x%lx....2.FSBL + 3bc0a598: 7325 253a 0a73 0000 3301 4920 733a 5f77 %s:%s....3 I:sw_ + 3bc0a5a8: 6e69 6f66 303d 2578 0a78 0000 0000 0000 info=0x%x....... + 3bc0a5b8: 3301 4920 663a 7069 705f 7261 6d61 3a31 .3 I:fip_param1: + 3bc0a5c8: 7020 7261 6d61 635f 736b 6d75 303d 2578 param_cksum=0x% + 3bc0a5d8: 2078 6170 6172 326d 6c5f 616f 6164 6464 x param2_loadadd + 3bc0a5e8: 3d72 7830 7825 000a 3301 4920 433a 5f50 r=0x%x...3 I:CP_ + 3bc0a5f8: 5453 5441 5f45 4552 3d47 7830 7825 000a STATE_REG=0x%x.. + 3bc0a608: 3201 4c42 2032 6e65 2e64 000a 0000 0000 .2BL2 end....... + 3bc0a618: 5643 444c 3230 000a 3001 4520 253a 2073 CVLD02...0 E:%s + 3bc0a628: 6163 276e 2074 6c61 6f6c 2063 6c25 2075 can't alloc %lu + 3bc0a638: 7962 6574 0a73 0000 3001 4520 253a 3a73 bytes....0 E:%s: + 3bc0a648: 6420 7473 735f 7a69 2065 7369 4e20 4c55 dst_size is NUL + 3bc0a658: 2e4c 000a 0000 0000 3301 4920 4c3a 4d5a L........3 I:LZM + 3bc0a668: 3141 252f 2f70 7025 0a2e 0000 0000 0000 A1/%p/%p........ + 3bc0a678: 3301 4920 4c3a 4d5a 3241 752f 636e 6d6f .3 I:LZMA2/uncom + 3bc0a688: 5f70 6973 657a 303d 2578 786c 000a 0000 p_size=0x%lx.... + 3bc0a698: 3001 4520 4c3a 6d7a 4461 6365 646f 2065 .0 E:LzmaDecode + 3bc0a6a8: 5245 4f52 3a52 2520 2064 7328 6174 7574 ERROR: %d (statu + 3bc0a6b8: 3d73 6425 0a29 0000 3301 4920 4c3a 4d5a s=%d)....3 I:LZM + 3bc0a6c8: 3941 302f 2578 786c 000a 0000 0000 0000 A9/0x%lx........ + 3bc0a6d8: 3301 4920 4c3a 345a 252f 2f70 7025 0a2e .3 I:LZ4/%p/%p.. + ... + 3bc0a6f0: 3001 4520 643a 7463 5378 6174 7574 3d73 .0 E:dctxStatus= + 3bc0a700: 6c25 0a75 0000 0000 3301 4920 643a 7473 %lu......3 I:dst + 3bc0a710: 735f 7a69 3d65 6c25 2075 7273 5f63 6973 _size=%lu src_si + 3bc0a720: 657a 253d 756c 7220 7465 253d 647a 000a ze=%lu ret=%zd.. + 3bc0a730: 3001 4520 4c3a 345a 5f46 6564 6f63 706d .0 E:LZ4F_decomp + 3bc0a740: 6572 7373 253d 756c 000a 0000 0000 0000 ress=%lu........ + 3bc0a750: 3201 4344 2f50 7025 302f 2578 786c 252f .2DCP/%p/0x%lx/% + 3bc0a760: 2f70 7830 6c25 2f78 6425 0a2e 0000 0000 p/0x%lx/%d...... + 3bc0a770: 3201 4344 2f50 7830 6c25 2f78 6425 0a2e .2DCP/0x%lx/%d.. + ... + +000000003bc0a788 <__func__.0>: + 3bc0a788: 7a53 6c41 6f6c 0063 SzAlloc. + +000000003bc0a790 <__func__.1>: + 3bc0a790: 6564 6f63 706d 6572 7373 6c5f 6d7a 0061 decompress_lzma. + 3bc0a7a0: 3301 4920 413a 7070 696c 6163 6974 6e6f .3 I:Application + 3bc0a7b0: 203a 7325 000a 0000 3301 4920 753a 6273 : %s.....3 I:usb + 3bc0a7c0: 2520 0a73 0000 0000 3201 5355 4242 002e %s......2USBB.. + 3bc0a7d0: 3301 4920 433a 4956 555f 4253 425f 4552 .3 I:CVI_USB_BRE + 3bc0a7e0: 4b41 000a 0000 0000 3201 5355 4b42 002e AK.......2USBK.. + 3bc0a7f0: 3301 4920 663a 616c 4567 746e 7265 4c44 .3 I:flagEnterDL + 3bc0a800: 2520 0a64 0000 0000 3301 4920 4d3a 4741 %d......3 I:MAG + 3bc0a810: 4349 4e20 4d55 4e20 544f 4d20 5441 4843 IC NUM NOT MATCH + 3bc0a820: 000a 0000 0000 0000 3201 5355 4b42 2e46 .........2USBKF. + ... + 3bc0a838: 3301 4920 493a 204f 6241 726f 2074 2121 .3 I:IO Abort !! + 3bc0a848: 2121 0a21 0000 0000 3301 4920 723a 6365 !!!......3 I:rec + 3bc0a858: 7069 6569 746e 7420 7261 6567 2074 6163 ipient target ca + 3bc0a868: 6e6e 746f 6220 2065 6e69 6574 6672 6361 nnot be interfac + 3bc0a878: 2165 000a 0000 0000 3201 5355 5042 302f e!.......2USBP/0 + 3bc0a888: 2578 2e78 0000 0000 3301 4920 663a 7374 x%x......3 I:fts + 3bc0a898: 5b6e 6425 205d 203d 7825 000a 0000 0000 n[%d] = %x...... + 3bc0a8a8: 3301 4920 633a 6372 7620 6c61 3d20 2520 .3 I:crc val = % + 3bc0a8b8: 0a78 0000 0000 0000 3301 4920 743a 2073 x........3 I:ts + 3bc0a8c8: 6176 206c 203d 7825 000a 0000 0000 0000 val = %x........ + 3bc0a8d8: 3201 5355 5342 252f 2e73 0000 0000 0000 .2USBS/%s....... + 3bc0a8e8: 3231 3433 3635 3837 4139 4342 0000 0000 123456789ABC.... + 3bc0a8f8: 7065 6931 2d6e 7562 6b6c 0000 0000 0000 ep1in-bulk...... + 3bc0a908: 7065 6f32 7475 622d 6c75 006b 0000 0000 ep2out-bulk..... + 3bc0a918: 7065 6933 2d6e 6e69 0074 0000 737e ffff ep3in-int...~s.. + 3bc0a928: 7550 ffff 73e4 ffff 7416 ffff 7416 ffff Pu...s...t...t.. + 3bc0a938: 753c ffff 7550 ffff 7416 ffff 7416 ffff : + 3bc0ab80: 6962 646e 0000 0000 bind.... + +000000003bc0ab88 <__func__.1>: + 3bc0ab88: 6e75 6962 646e 0000 unbind.. + +000000003bc0ab90 <__func__.4>: + 3bc0ab90: 6964 6373 6e6f 656e 7463 0000 0000 0000 disconnect...... + +000000003bc0aba0 <__func__.5>: + 3bc0aba0: 6572 6573 0074 0000 6177 6e72 6e69 2167 reset...warning! + 3bc0abb0: 6620 6572 2065 6e75 6966 696e 6873 6465 free unfinished + 3bc0abc0: 7220 7165 6575 7473 0a21 0000 0000 0000 request!....... + 3bc0abd0: 7325 203a 4820 4e41 2147 4120 4248 4920 %s: HANG! AHB I + 3bc0abe0: 6c64 2065 5247 4353 4c54 000a 0000 0000 dle GRSCTL...... + 3bc0abf0: 7325 203a 6974 656d 756f 2074 6c66 7375 %s: timeout flus + 3bc0ac00: 6968 676e 6620 6669 206f 4728 5352 4354 hing fifo (GRSTC + 3bc0ac10: 4c54 253d 3830 2978 000a 0000 0000 0000 TL=%08x)........ + 3bc0ac20: 7325 203a 6974 656d 756f 2074 6c66 7375 %s: timeout flus + 3bc0ac30: 6968 676e 6620 6669 736f 2820 7267 7473 hing fifos (grst + 3bc0ac40: 7463 206c 203d 7830 7825 0a29 0000 0000 ctl = 0x%x)..... + 3bc0ac50: 7325 203a 6163 6c6c 6620 726f 6520 3070 %s: call for ep0 + 3bc0ac60: 6f2d 7475 000a 0000 7325 203a 6974 656d -out....%s: time + 3bc0ac70: 756f 2074 4944 5045 4e49 2e54 414e 454b out DIEPINT.NAKE + 3bc0ac80: 4646 000a 0000 0000 7325 203a 6974 656d FF......%s: time + 3bc0ac90: 756f 2074 4947 544e 5453 2e53 4f47 5455 out GINTSTS.GOUT + 3bc0aca0: 414e 454b 4646 000a 7325 203a 6974 656d NAKEFF..%s: time + 3bc0acb0: 756f 2074 4f44 5045 5443 2e4c 5045 6944 out DOEPCTL.EPDi + 3bc0acc0: 6173 6c62 0a65 0000 7325 2928 4820 4e41 sable...%s() HAN + 3bc0acd0: 2147 5320 666f 2074 6552 6573 2074 5247 G! Soft Reset GR + 3bc0ace0: 5453 5443 3d4c 3025 0a78 0000 0000 0000 STCTL=%0x....... + 3bc0acf0: 7325 2928 4820 4e41 2147 5320 666f 2074 %s() HANG! Soft + 3bc0ad00: 2e34 2032 6552 6573 2074 5247 5453 5443 4.2 Reset GRSTCT + 3bc0ad10: 3d4c 3025 0a78 0000 7325 2928 4820 4e41 L=%0x...%s() HAN + 3bc0ad20: 2147 4120 4248 4920 6c64 2065 5247 5453 G! AHB Idle GRST + 3bc0ad30: 5443 3d4c 3025 0a78 0000 0000 0000 0000 CTL=%0x......... + 3bc0ad40: 6973 657a 6620 726f 6820 6e61 6c64 7265 size for handler + 3bc0ad50: 6920 2073 6f74 206f 6173 6c6d 206c 2528 is too samll (% + 3bc0ad60: 646c 202c 6425 0a29 0000 0000 0000 0000 ld, %d)......... + 3bc0ad70: 6f4e 6d20 6d65 726f 2079 7661 6961 616c No memory availa + 3bc0ad80: 6c62 2065 6f66 2072 4455 2143 000a 0000 ble for UDC!.... + +000000003bc0ad90 <__func__.0>: + 3bc0ad90: 7764 3263 655f 5f70 7473 706f 785f 6566 dwc2_ep_stop_xfe + 3bc0ada0: 0072 0000 0000 0000 r....... + +000000003bc0ada8 <__func__.1>: + 3bc0ada8: 645f 6377 5f32 7065 645f 7369 6261 656c _dwc2_ep_disable + ... + +000000003bc0adc0 <__func__.2>: + 3bc0adc0: 7764 3263 725f 6365 6e6f 6966 5f67 7375 dwc2_reconfig_us + 3bc0add0: 6462 0000 0000 0000 bd...... + +000000003bc0add8 <__func__.3>: + 3bc0add8: 7764 3263 685f 6f73 6774 745f 6678 6669 dwc2_hsotg_txfif + 3bc0ade8: 5f6f 6c66 7375 0068 o_flush. + +000000003bc0adf0 <__func__.4>: + 3bc0adf0: 7764 3263 685f 6f73 6774 695f 696e 5f74 dwc2_hsotg_init_ + 3bc0ae00: 6966 6f66 0000 0000 fifo.... + +000000003bc0ae08 : + 3bc0ae08: 7764 3263 752d 6364 0000 0000 0000 0000 dwc2-udc........ + +000000003bc0ae18 : + ... + 3bc0ae20: 2ab4 3bc0 0000 0000 0000 0000 0000 0000 .*.;............ + ... + 3bc0ae40: 279e 3bc0 0000 0000 0000 0000 0000 0000 .'.;............ + ... + +000000003bc0ae60 : + 3bc0ae60: 7065 2d30 6f63 746e 6f72 006c 0000 0000 ep0-control..... + +000000003bc0ae70 : + 3bc0ae70: 7065 6931 2d6e 7562 6b6c 0000 0000 0000 ep1in-bulk...... + +000000003bc0ae80 : + 3bc0ae80: 7065 6f32 7475 622d 6c75 006b 0000 0000 ep2out-bulk..... + +000000003bc0ae90 : + 3bc0ae90: 7065 6933 2d6e 6e69 0074 0000 0000 0000 ep3in-int....... + 3bc0aea0: 7263 2d71 623e 6572 7571 7365 3a74 7830 crq->brequest:0x + 3bc0aeb0: 7825 000a 8f90 ffff 906c ffff 91be ffff %x......l....... + 3bc0aec0: 9110 ffff 91be ffff 8f24 ffff 8f72 ffff ........$...r... + 3bc0aed0: 91be ffff 8f86 ffff 8f5a ffff 91be ffff ........Z....... + 3bc0aee0: 8f7c ffff 0000 0000 7572 206e 6574 7473 |.......run test + 3bc0aef0: 6d20 646f 2065 6425 000a 0000 0000 0000 mode %d........ + 3bc0af00: 3301 4920 553a 4253 4956 2f44 7825 0a2e .3 I:USBVID/%x.. + ... + +000000003bc0af18 : + 3bc0af18: 0000 1021 2042 3063 4084 50a5 60c6 70e7 ..!.B c0.@.P.`.p + 3bc0af28: 8108 9129 a14a b16b c18c d1ad e1ce f1ef ..).J.k......... + 3bc0af38: 1231 0210 3273 2252 52b5 4294 72f7 62d6 1...s2R".R.B.r.b + 3bc0af48: 9339 8318 b37b a35a d3bd c39c f3ff e3de 9...{.Z......... + 3bc0af58: 2462 3443 0420 1401 64e6 74c7 44a4 5485 b$C4 ....d.t.D.T + 3bc0af68: a56a b54b 8528 9509 e5ee f5cf c5ac d58d j.K.(........... + 3bc0af78: 3653 2672 1611 0630 76d7 66f6 5695 46b4 S6r&..0..v.f.V.F + 3bc0af88: b75b a77a 9719 8738 f7df e7fe d79d c7bc [.z...8......... + 3bc0af98: 48c4 58e5 6886 78a7 0840 1861 2802 3823 .H.X.h.x@.a..(#8 + 3bc0afa8: c9cc d9ed e98e f9af 8948 9969 a90a b92b ........H.i...+. + 3bc0afb8: 5af5 4ad4 7ab7 6a96 1a71 0a50 3a33 2a12 .Z.J.z.jq.P.3:.* + 3bc0afc8: dbfd cbdc fbbf eb9e 9b79 8b58 bb3b ab1a ........y.X.;... + 3bc0afd8: 6ca6 7c87 4ce4 5cc5 2c22 3c03 0c60 1c41 .l.|.L.\",.<`.A. + 3bc0afe8: edae fd8f cdec ddcd ad2a bd0b 8d68 9d49 ........*...h.I. + 3bc0aff8: 7e97 6eb6 5ed5 4ef4 3e13 2e32 1e51 0e70 .~.n.^.N.>2.Q.p. + 3bc0b008: ff9f efbe dfdd cffc bf1b af3a 9f59 8f78 ..........:.Y.x. + 3bc0b018: 9188 81a9 b1ca a1eb d10c c12d f14e e16f ..........-.N.o. + 3bc0b028: 1080 00a1 30c2 20e3 5004 4025 7046 6067 .....0. .P%@Fpg` + 3bc0b038: 83b9 9398 a3fb b3da c33d d31c e37f f35e ........=.....^. + 3bc0b048: 02b1 1290 22f3 32d2 4235 5214 6277 7256 .....".25B.RwbVr + 3bc0b058: b5ea a5cb 95a8 8589 f56e e54f d52c c50d ........n.O.,... + 3bc0b068: 34e2 24c3 14a0 0481 7466 6447 5424 4405 .4.$....ftGd$T.D + 3bc0b078: a7db b7fa 8799 97b8 e75f f77e c71d d73c ........_.~...<. + 3bc0b088: 26d3 36f2 0691 16b0 6657 7676 4615 5634 .&.6....Wfvv.F4V + 3bc0b098: d94c c96d f90e e92f 99c8 89e9 b98a a9ab L.m.../......... + 3bc0b0a8: 5844 4865 7806 6827 18c0 08e1 3882 28a3 DXeH.x'h.....8.( + 3bc0b0b8: cb7d db5c eb3f fb1e 8bf9 9bd8 abbb bb9a }.\.?........... + 3bc0b0c8: 4a75 5a54 6a37 7a16 0af1 1ad0 2ab3 3a92 uJTZ7j.z.....*.: + 3bc0b0d8: fd2e ed0f dd6c cd4d bdaa ad8b 9de8 8dc9 ....l.M......... + 3bc0b0e8: 7c26 6c07 5c64 4c45 3ca2 2c83 1ce0 0cc1 &|.ld\EL.<.,.... + 3bc0b0f8: ef1f ff3e cf5d df7c af9b bfba 8fd9 9ff8 ..>.].|......... + 3bc0b108: 6e17 7e36 4e55 5e74 2e93 3eb2 0ed1 1ef0 .n6~UNt^...>.... + 3bc0b118: c21c ffff c250 ffff c2be ffff c33a ffff ....P.......:... + 3bc0b128: c360 ffff c406 ffff c4b6 ffff c518 ffff `............... + 3bc0b138: c64c ffff c740 ffff c744 ffff c776 ffff L...@...D...v... + 3bc0b148: c7e6 ffff c806 ffff c860 ffff 0000 0000 ........`....... + +000000003bc0b158 : + 3bc0b158: 0000 0001 0000 0000 0000 0004 0000 0000 ................ + 3bc0b168: 0000 0010 0000 0000 0000 0040 0000 0000 ..........@..... + +000000003bc0b178 : + ... + 3bc0b184: ffff ffff fffc ffff 0001 0000 0002 0000 ................ + 3bc0b194: 0003 0000 .... + +000000003bc0b198 : + 3bc0b198: 0000 0000 0001 0000 0002 0000 0001 0000 ................ + 3bc0b1a8: 0000 0000 0004 0000 0004 0000 0004 0000 ................ + 3bc0b1b8: cb7e ffff cb5e ffff cb3e ffff c8fa ffff ~...^...>....... + 3bc0b1c8: c99c ffff ca4e ffff cb10 ffff c8cc ffff ....N........... + 3bc0b1d8: c96e ffff ca20 ffff cae2 ffff c89e ffff n... ........... + 3bc0b1e8: c940 ffff c9f2 ffff cab4 ffff 0000 0000 @............... + 3bc0b1f8: 3201 4444 2052 6e69 7469 0a2e 0000 0000 .2DDR init...... + 3bc0b208: 3201 6464 5f72 6170 6172 5b6d 5d30 303d .2ddr_param[0]=0 + 3bc0b218: 2578 2e78 000a 0000 3201 6b70 5f67 7974 x%x......2pkg_ty + 3bc0b228: 6570 253d 0a78 0000 3201 6e32 0a64 0000 pe=%x....22nd... + 3bc0b238: 3201 6e75 6e6b 776f 206e 6b70 5f67 7974 .2unknown pkg_ty + 3bc0b248: 6570 303d 2578 0a78 0000 0000 0000 0000 pe=0x%x......... + 3bc0b258: 3201 2544 5f78 7825 255f 0a78 0000 0000 .2D%x_%x_%x..... + 3bc0b268: 3201 4444 3252 0000 3201 4444 3352 0000 .2DDR2...2DDR3.. + 3bc0b278: 3201 6e75 6e6b 776f 206e 6576 646e 726f .2unknown vendor + 3bc0b288: 253d 0064 0000 0000 3201 352d 3231 004d =%d......2-512M. + 3bc0b298: 3201 312d 0047 0000 3201 322d 0047 0000 .2-1G....2-2G... + 3bc0b2a8: 3201 342d 0047 0000 3201 752d 6b6e 6f6e .2-4G....2-unkno + 3bc0b2b8: 6e77 6320 7061 6361 7469 3d79 6425 0000 wn capacity=%d.. + 3bc0b2c8: 3201 512d 4e46 3838 000a 0000 0000 0000 .2-QFN88........ + 3bc0b2d8: 3201 512d 4e46 3836 000a 0000 0000 0000 .2-QFN68........ + 3bc0b2e8: 3201 422d 4147 000a 3201 752d 6b6e 6f6e .2-BGA...2-unkno + 3bc0b2f8: 6e77 7020 676b 253d 0064 0000 cf3c ffff wn pkg=%d...<... + 3bc0b308: cfc2 ffff cf1a ffff cf2c ffff cf3c ffff ........,...<... + 3bc0b318: cfc2 ffff cfa4 ffff cfb4 ffff cfea ffff ................ + 3bc0b328: cfea ffff cfea ffff cfb0 ffff cfea ffff ................ + 3bc0b338: cfea ffff cfea ffff cfea ffff cfb0 ffff ................ + 3bc0b348: cfea ffff 0000 0000 3001 4520 453a 5252 .........0 E:ERR + 3bc0b358: 524f 6220 7369 5f74 6166 6c69 000a 0000 OR bist_fail.... + 3bc0b368: 3001 4520 623a 7369 5f74 6572 7573 746c .0 E:bist_result + 3bc0b378: 3d20 2520 2c78 6520 7272 645f 7461 5f61 = %x, err_data_ + 3bc0b388: 646f 2064 203d 6c25 2c78 6520 7272 645f odd = %lx, err_d + 3bc0b398: 7461 5f61 7665 6e65 3d20 2520 786c 000a ata_even = %lx.. + 3bc0b3a8: 3201 4444 2052 4942 5453 4620 4941 0a4c .2DDR BIST FAIL. + ... + 3bc0b3c0: 3201 4444 2052 4942 5453 5020 5341 0a53 .2DDR BIST PASS. + ... + 3bc0b3d8: fa02 401f fa02 801f 2c02 4010 2c02 8010 ...@.....,.@.,.. + 3bc0b3e8: 7a00 4000 7a00 8000 3a00 4000 3a00 8000 .z.@.z...:.@.:.. + 3bc0b3f8: e08c ffff e0f0 ffff e150 ffff e1bc ffff ........P....... + 3bc0b408: e280 ffff e220 ffff e1b6 ffff e1b6 ffff .... ........... + 3bc0b418: e342 ffff e2e0 ffff e622 ffff e69a ffff B......."....... + 3bc0b428: e712 ffff e78a ffff e7aa ffff ............ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2.elf b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2.elf new file mode 100755 index 000000000..556d2606c Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2.elf differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2.ld b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2.ld new file mode 100644 index 000000000..b7fbc239f --- /dev/null +++ b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2.ld @@ -0,0 +1,53 @@ +OUTPUT_FORMAT("elf64-littleriscv") +OUTPUT_ARCH(riscv) +ENTRY(bl2_entrypoint) +MEMORY { + RAM (rwx): ORIGIN = (0x3BC00000), LENGTH = (0x00019000) +} +SECTIONS +{ + . = (0x3BC00000); + ASSERT(. == ALIGN(4096), + "BL2_BASE address is not aligned on a page boundary.") + ro . : { + __RO_START__ = .; + *bl2_entrypoint.o(.text*) + *(.vectors) + *(.text*) + *(.rodata*) + __RO_END__ = .; + } >RAM + .data . : { + . = ALIGN(16); + __DATA_START__ = .; + *(.data*) + . = ALIGN(16); + __DATA_END__ = .; + } >RAM + stacks (NOLOAD) : { + . = ALIGN(64); + __STACKS_START__ = .; + . += 0x2000; + . = ALIGN(64); + __STACKS_END__ = .; + } >RAM + .bss : ALIGN(16) { + . = ALIGN(16); + __BSS_START__ = .; + *(SORT_BY_ALIGNMENT(.bss*)) + *(COMMON) + . = ALIGN(16); + __BSS_END__ = .; + } >RAM + __BL2_END__ = .; + __BSS_SIZE__ = SIZEOF(.bss); + ASSERT(. <= ((0x3BC00000) + (0x00019000)), "BL2 image has exceeded its limit.") +p_rom_api_cryptodma_aes_decrypt = 0x0000000004400100; +p_rom_api_flash_init = 0x0000000004400080; +p_rom_api_get_boot_src = 0x0000000004400020; +p_rom_api_get_number_of_retries = 0x00000000044000c0; +p_rom_api_image_crc = 0x00000000044000a0; +p_rom_api_load_image = 0x0000000004400060; +p_rom_api_set_boot_src = 0x0000000004400040; +p_rom_api_verify_rsa = 0x00000000044000e0; +} diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2.map b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2.map new file mode 100644 index 000000000..75ba0b656 --- /dev/null +++ b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2.map @@ -0,0 +1,3413 @@ + +Discarded input sections + + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .text.cpu_report_exception + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .text.enable_cache + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o + .text.memcpy16 + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o + .text.zeromem 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o + .debug_info 0x0000000000000000 0x1ac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o + .debug_abbrev 0x0000000000000000 0xdd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o + .debug_loc 0x0000000000000000 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o + .debug_aranges + 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o + .debug_ranges 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o + .debug_line 0x0000000000000000 0x102 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o + .debug_str 0x0000000000000000 0x3a69 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o + .debug_frame 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .text.inv_dcache_range + 0x0000000000000000 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .text.clean_dcache_range + 0x0000000000000000 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .text.enable_dcache + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .text.disable_dcache + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .text.timer_init + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x186b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .text.console_init + 0x0000000000000000 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .text.console_puts + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .text.console_getc + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .text.uart_tstc + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .text.console_tstc + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .rodata.tf_print_buffer.str1.8 + 0x0000000000000000 0x2d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .text.tf_print_buffer + 0x0000000000000000 0x96 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .text.config_core_power + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .text.apply_analog_trimming_data + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .text.bytes_reverse + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .rodata.__assert.str1.8 + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .text.__assert + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .debug_info 0x0000000000000000 0x153 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .debug_abbrev 0x0000000000000000 0xa4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .debug_loc 0x0000000000000000 0x109 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x112 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .debug_line 0x0000000000000000 0x21b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .debug_str 0x0000000000000000 0x6f9a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .debug_frame 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .text.memcmp 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .text.memchr 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .text._memcpy 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o + .text.strchr 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o + .debug_info 0x0000000000000000 0xe4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o + .debug_abbrev 0x0000000000000000 0x7f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o + .debug_loc 0x0000000000000000 0x6f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o + .debug_line 0x0000000000000000 0x14e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o + .debug_str 0x0000000000000000 0x3a7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o + .text.strcasecmp + 0x0000000000000000 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o + .text.strncmp 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o + .debug_info 0x0000000000000000 0x105 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o + .debug_abbrev 0x0000000000000000 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o + .debug_loc 0x0000000000000000 0x15f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o + .debug_line 0x0000000000000000 0x13f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o + .debug_str 0x0000000000000000 0x3a39 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o + .text.strnlen 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o + .debug_info 0x0000000000000000 0x105 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o + .debug_abbrev 0x0000000000000000 0x9f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o + .debug_loc 0x0000000000000000 0xa3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o + .debug_line 0x0000000000000000 0x123 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o + .debug_str 0x0000000000000000 0x3a40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .text.is_usb_dl_enabled + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .rodata.print_sram_log.str1.8 + 0x0000000000000000 0x6d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .text.print_sram_log + 0x0000000000000000 0x86 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_ReadReg32 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_WriteReg32 + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedRead8 + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedRead16 + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedWrite8 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedWrite16 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_WritePhysAddress32 + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_BufferCopy + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_DelayNs + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.set_trigger_cnt + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dfu_usb_get_reset + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.otg_phy_init + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.otg_phy_off + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x517 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .text.crc16_pacing + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .text.crc16_ccitt_with_tag + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_InitDicAndState + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_DecodeToBuf + 0x0000000000000000 0xd6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_Free + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_Allocate + 0x0000000000000000 0xbc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_renormDictT + 0x0000000000000000 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_rotatePattern + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_setExternalDict + 0x0000000000000000 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_reverseCountPattern + 0x0000000000000000 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_countPattern + 0x0000000000000000 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_init_internal + 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_extDict + 0x0000000000000000 0x2aa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_compress_optimal + 0x0000000000000000 0x1d36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_compress_generic_noDictCtx + 0x0000000000000000 0x1b68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_compress_generic + 0x0000000000000000 0x211a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_makeBlock + 0x0000000000000000 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_versionNumber + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .rodata.LZ4_versionString.str1.8 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_versionString + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressBound + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofState + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast_extState_fastReset + 0x0000000000000000 0x1428 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_initStream + 0x0000000000000000 0x36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast_extState + 0x0000000000000000 0xd02 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_default + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_destSize + 0x0000000000000000 0x83c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_createStream + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStream + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStream_fast + 0x0000000000000000 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_freeStream + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_loadDict + 0x0000000000000000 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_attach_dictionary + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast_continue + 0x0000000000000000 0x1ca4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlock_continue + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_forceExtDict + 0x0000000000000000 0xa24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_saveDict + 0x0000000000000000 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe_partial + 0x0000000000000000 0x2a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast + 0x0000000000000000 0x1e6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_withPrefix64k + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_createStreamDecode + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_freeStreamDecode + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_setStreamDecode + 0x0000000000000000 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decoderRingBufferSize + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe_continue + 0x0000000000000000 0x3c6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_continue + 0x0000000000000000 0x316 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_usingDict + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput_withState + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_withState + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput_continue + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_continue + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_uncompress + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_uncompress_unknownOutputSize + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofStreamState + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_create + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_slideInputBuffer + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_createStreamHC + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_freeStreamHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_initStreamHC + 0x0000000000000000 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_setCompressionLevel + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_destSize + 0x0000000000000000 0x6a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamHC + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamHC_fast + 0x0000000000000000 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_extStateHC_fastReset + 0x0000000000000000 0x64 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_extStateHC + 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC + 0x0000000000000000 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_initStream + 0x0000000000000000 0x5a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlock + 0x0000000000000000 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_favorDecompressionSpeed + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_loadDictHC + 0x0000000000000000 0xd6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_continue_generic + 0x0000000000000000 0xf0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_attach_HC_dictionary + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_continue + 0x0000000000000000 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlockHC_continue + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlockHC + 0x0000000000000000 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_continue_destSize + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_saveDictHC + 0x0000000000000000 0x96 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_localSaveDict + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC + 0x0000000000000000 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2 + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_withStateHC + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput_withStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_withStateHC + 0x0000000000000000 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput_withStateHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_continue + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput_continue + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofStreamStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamStateHC + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_createHC + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_freeHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_continue + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput_continue + 0x0000000000000000 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_slideInputBufferHC + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .rodata.LZ4F_getErrorName.str1.8 + 0x0000000000000000 0x17 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_getErrorName + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_getErrorCode + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_getVersion + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressionLevel_max + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBound_internal + 0x0000000000000000 0x9c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressFrameBound + 0x0000000000000000 0x3e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_freeCDict + 0x0000000000000000 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_createCDict + 0x0000000000000000 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_createCompressionContext + 0x0000000000000000 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_freeCompressionContext + 0x0000000000000000 0x36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBegin_usingCDict + 0x0000000000000000 0x20c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBegin + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBound + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressUpdate + 0x0000000000000000 0x204 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_flush + 0x0000000000000000 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressEnd + 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressFrame_usingCDict + 0x0000000000000000 0x104 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressFrame + 0x0000000000000000 0x112 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_freeDecompressionContext + 0x0000000000000000 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_resetDecompressionContext + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_headerSize + 0x0000000000000000 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_getFrameInfo + 0x0000000000000000 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_decompress_usingDict + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .rodata.str1.8 + 0x0000000000000000 0x246 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .rodata.cst8 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .rodata.LZ4F_errorStrings + 0x0000000000000000 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .rodata.clTable.2 + 0x0000000000000000 0x9c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH64_mergeRound + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH64_avalanche + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH_read64 + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH64_finalize.constprop.0 + 0x0000000000000000 0x7be /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .rodata.XXH64_finalize.constprop.0 + 0x0000000000000000 0x7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH_versionNumber + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH32_createState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH32_freeState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH32_copyState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH32_canonicalFromHash + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH32_hashFromCanonical + 0x0000000000000000 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH64 0x0000000000000000 0x234 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH64_createState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH64_freeState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH64_copyState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH64_reset + 0x0000000000000000 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH64_update + 0x0000000000000000 0x1fa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH64_digest + 0x0000000000000000 0x8a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH64_canonicalFromHash + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH64_hashFromCanonical + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .rodata.cst8 0x0000000000000000 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .text.get_ddr_capacity + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .text.get_pkg 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .text.get_ddr_type + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .rodata.dump_axi_mon_reg.str1.8 + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .text.dump_axi_mon_reg + 0x0000000000000000 0x6c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.ddr_debug_num_write + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_sub_resume2 + 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddrc_suspend + 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_wrlvl_init + 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_synp_mrw + 0x0000000000000000 0x74 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_cal_phyd_hw + 0x0000000000000000 0x10a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_cal_phya_enautok + 0x0000000000000000 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ctrlupd_short + 0x0000000000000000 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_wrlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_rdglvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_rdlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_wdqlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_cal_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_zqcal_status + 0x0000000000000000 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zqcal_isr8 + 0x0000000000000000 0x2d4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zqcal_hw_isr8 + 0x0000000000000000 0x15e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_training_status + 0x0000000000000000 0x134 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_set_dq_vref + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_phya_pd + 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_phyd_save + 0x0000000000000000 0xae6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.ddr_sys_suspend + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_phyd_restore + 0x0000000000000000 0xaf4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_sub_resume3 + 0x0000000000000000 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_sw_upd + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_set_dq_trig_lvl + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_freq_change_ltoh + 0x0000000000000000 0x1ca /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_0_phase40 + 0x0000000000000000 0x16e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_0_external + 0x0000000000000000 0x1ce /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_1_dq_set_highlow + 0x0000000000000000 0x1b4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_2_mux_demux + 0x0000000000000000 0x19c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_3_ca_set_highlow + 0x0000000000000000 0x1e4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_4_ca_clk_pat + 0x0000000000000000 0x132 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.ddr_sys_resume + 0x0000000000000000 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_rdlvl_sw_req + 0x0000000000000000 0x3c0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_wdqlvl_sw_req + 0x0000000000000000 0x1ee /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_freq_change_htol + 0x0000000000000000 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dfi_phyupd_req + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_sw_clr + 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_tx_shift_delay + 0x0000000000000000 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_rx_delay + 0x0000000000000000 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_rx_deskew_delay + 0x0000000000000000 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ca_shift_delay + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_cs_shift_delay + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_mask_shift_delay + 0x0000000000000000 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_reg_toggle + 0x0000000000000000 0x1514 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ana_test + 0x0000000000000000 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zq240 + 0x0000000000000000 0x1c4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zq240_ate + 0x0000000000000000 0x148 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zq240_cal + 0x0000000000000000 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .data.ddr_patch_regs + 0x0000000000000000 0x1c8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .data.ddr_patch_regs_count + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_info 0x0000000000000000 0x121 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_abbrev 0x0000000000000000 0xb5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_line 0x0000000000000000 0x160 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_str 0x0000000000000000 0x53f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_entrypoint.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_entrypoint.o + .bss 0x0000000000000000 0x1000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_entrypoint.o + .rodata 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_entrypoint.o + +Memory Configuration + +Name Origin Length Attributes +RAM 0x000000003bc00000 0x0000000000019000 xrw +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + 0x000000003bc00000 . = 0x3bc00000 + 0x0000000000000001 ASSERT ((. == ALIGN (0x1000)), BL2_BASE address is not aligned on a page boundary.) + +ro 0x000000003bc00000 0xb434 + 0x000000003bc00000 __RO_START__ = . + *bl2_entrypoint.o(.text*) + .text.init 0x000000003bc00000 0x14c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_entrypoint.o + 0x000000003bc00000 bl2_entrypoint + *(.vectors) + *(.text*) + .text.sync_cache + 0x000000003bc0014c 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + 0x000000003bc0014c sync_cache + .text.flush_dcache_range + 0x000000003bc00156 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + 0x000000003bc00156 flush_dcache_range + .text.trig_simulation_timer + 0x000000003bc0017a 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc0017a trig_simulation_timer + .text.udelay 0x000000003bc0018a 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc0018a udelay + .text.mdelay 0x000000003bc001b4 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc001b4 mdelay + .text.get_timer + 0x000000003bc001be 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc001be get_timer + .text.get_random_from_timer + 0x000000003bc001e2 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc001e2 get_random_from_timer + .text.read_count_tick + 0x000000003bc0020c 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc0020c read_count_tick + .text.jump_to_monitor + 0x000000003bc0021a 0x78 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + 0x000000003bc0021a jump_to_monitor + .text.jump_to_loader_2nd + 0x000000003bc00292 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + 0x000000003bc00292 jump_to_loader_2nd + .text._uart_putc + 0x000000003bc00294 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + 0x000000003bc00294 _uart_putc + .text.console_putc + 0x000000003bc002a4 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + 0x000000003bc002a4 console_putc + .text.console_flush + 0x000000003bc002c2 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + 0x000000003bc002c2 console_flush + .text.unsigned_num_print + 0x000000003bc002d6 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .text.tf_printf + 0x000000003bc00358 0x19a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + 0x000000003bc00358 tf_printf + .text.__system_reset + 0x000000003bc004f2 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + 0x000000003bc004f2 __system_reset + .text.panic_handler + 0x000000003bc005ba 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + 0x000000003bc005ba panic_handler + .text.reset_c906l + 0x000000003bc005ec 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + 0x000000003bc005ec reset_c906l + .text.setup_dl_flag + 0x000000003bc00636 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + 0x000000003bc00636 setup_dl_flag + .text.sys_switch_all_to_pll + 0x000000003bc00680 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + 0x000000003bc00680 sys_switch_all_to_pll + .text.sys_pll_nd + 0x000000003bc0068e 0x18e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + 0x000000003bc0068e sys_pll_nd + .text.sys_pll_init + 0x000000003bc0081c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + 0x000000003bc0081c sys_pll_init + .text.switch_rtc_mode_1st_stage + 0x000000003bc00832 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + 0x000000003bc00832 switch_rtc_mode_1st_stage + .text.switch_rtc_mode_2nd_stage + 0x000000003bc00834 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + 0x000000003bc00834 switch_rtc_mode_2nd_stage + .text.set_rtc_en_registers + 0x000000003bc00878 0xbc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + 0x000000003bc00878 set_rtc_en_registers + .text.init_comm_info + 0x000000003bc00934 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + 0x000000003bc00934 init_comm_info + .text.dec_verify_image + 0x000000003bc00994 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + 0x000000003bc00994 dec_verify_image + .text.ntostr 0x000000003bc00998 0x7a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + 0x000000003bc00998 ntostr + .text.memset 0x000000003bc00a12 0x5a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + 0x000000003bc00a12 memset + .text.memcpy 0x000000003bc00a6c 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + 0x000000003bc00a6c memcpy + .text.memmove 0x000000003bc00acc 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + 0x000000003bc00acc memmove + .text.putchar_l + 0x000000003bc00aec 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + 0x000000003bc00aec putchar_l + .text.strcmp 0x000000003bc00b3e 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o + 0x000000003bc00b3e strcmp + .text.strlen 0x000000003bc00b5a 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o + 0x000000003bc00b5a strlen + .text.gpio_in_value + 0x000000003bc00b6c 0x7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + 0x000000003bc00b6c gpio_in_value + .text.usb_id_det + 0x000000003bc00be8 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + 0x000000003bc00be8 usb_id_det + .text.read_time_ms + 0x000000003bc00c06 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .text.load_image_by_usb + 0x000000003bc00c20 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00c20 load_image_by_usb + .text.load_param2 + 0x000000003bc00c60 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00c60 load_param2 + .text.load_ddr_param + 0x000000003bc00d30 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00d30 load_ddr_param + .text.load_ddr + 0x000000003bc00dde 0xc6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00dde load_ddr + .text.load_blcp_2nd + 0x000000003bc00ea4 0x166 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00ea4 load_blcp_2nd + .text.load_monitor + 0x000000003bc0100a 0x126 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc0100a load_monitor + .text.load_loader_2nd + 0x000000003bc01130 0x208 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc01130 load_loader_2nd + .text.load_rest + 0x000000003bc01338 0xe6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc01338 load_rest + .text.bl2_main + 0x000000003bc0141e 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc0141e bl2_main + .text.SzFree 0x000000003bc014b6 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .text.SzAlloc 0x000000003bc014b8 0x42 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .text.decompress_lzma + 0x000000003bc014fa 0xe8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + 0x000000003bc014fa decompress_lzma + .text.LZ4_malloc + 0x000000003bc015e2 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + 0x000000003bc015e2 LZ4_malloc + .text.LZ4_calloc + 0x000000003bc015e8 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + 0x000000003bc015e8 LZ4_calloc + .text.LZ4_free + 0x000000003bc01610 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + 0x000000003bc01610 LZ4_free + .text.decompress_lz4 + 0x000000003bc01612 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + 0x000000003bc01612 decompress_lz4 + .text.decompress + 0x000000003bc016c0 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + 0x000000003bc016c0 decompress + .text.DWC2_UncachedRead32 + 0x000000003bc0173e 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + 0x000000003bc0173e DWC2_UncachedRead32 + .text.DWC2_UncachedWrite32 + 0x000000003bc01744 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + 0x000000003bc01744 DWC2_UncachedWrite32 + .text.resume 0x000000003bc01748 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .text.requestMemAlloc + 0x000000003bc0174a 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .text.requestMemFree + 0x000000003bc01782 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .text.acm_complete_set_line_coding + 0x000000003bc01784 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .text.reset 0x000000003bc017a0 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .text.disconnect + 0x000000003bc017b4 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .text.unbind 0x000000003bc017e2 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .text.bind 0x000000003bc01808 0x42 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .text.get_unicode_string + 0x000000003bc0184a 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .text.bulkOutCmpl + 0x000000003bc0189c 0x234 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .text.getDescAcm + 0x000000003bc01ad0 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .text.reqComplete + 0x000000003bc01b2c 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .text.bulkInCmpl + 0x000000003bc01b56 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .text.setup 0x000000003bc01ba6 0x442 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .text.suspend 0x000000003bc01fe8 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .text.convert_buf_addr + 0x000000003bc01fea 0xa2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc01fea convert_buf_addr + .text.print_buf_addr + 0x000000003bc0208c 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc0208c print_buf_addr + .text.AcmIsr 0x000000003bc0215c 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc0215c AcmIsr + .text.acm_app_init + 0x000000003bc02162 0x138 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc02162 acm_app_init + .text.usb_vbus_det + 0x000000003bc0229a 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc0229a usb_vbus_det + .text.get_usb_polling_timeout_value + 0x000000003bc022a6 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc022a6 get_usb_polling_timeout_value + .text.AcmApp 0x000000003bc022d6 0x478 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc022d6 AcmApp + .text.dwc2_fifo_status + 0x000000003bc0274e 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_free_request + 0x000000003bc02764 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.pullup 0x000000003bc0279e 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_alloc_request + 0x000000003bc027e6 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_ep_enable + 0x000000003bc0281e 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_fifo_flush + 0x000000003bc028be 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_log_write + 0x000000003bc028c0 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc028c0 dwc2_log_write + .text.dwc2_get_ep0_name + 0x000000003bc028c2 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc028c2 dwc2_get_ep0_name + .text.udc_reinit + 0x000000003bc028cc 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc028cc udc_reinit + .text.dwc2_done + 0x000000003bc02912 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02912 dwc2_done + .text.dwc2_dequeue + 0x000000003bc02952 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_nuke + 0x000000003bc029a6 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc029a6 dwc2_nuke + .text.usb_gadget_unregister_driver + 0x000000003bc029d4 0x9a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc029d4 usb_gadget_unregister_driver + .text.dwc2_hsotg_set_bit + 0x000000003bc02a6e 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02a6e dwc2_hsotg_set_bit + .text.dwc2_hsotg_clear_bit + 0x000000003bc02a90 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02a90 dwc2_hsotg_clear_bit + .text.wakeup 0x000000003bc02ab4 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_hsotg_wait_bit_set + 0x000000003bc02af0 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02af0 dwc2_hsotg_wait_bit_set + .text.dwc2_hsotg_txfifo_flush.constprop.0 + 0x000000003bc02b36 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.kill_all_requests.isra.0 + 0x000000003bc02bc6 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_disconnect + 0x000000003bc02c24 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02c24 dwc2_disconnect + .text.dwc2_hsotg_init_fifo.constprop.0 + 0x000000003bc02c7a 0xda /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text._dwc2_ep_disable.isra.0 + 0x000000003bc02d54 0x1a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_ep_disable + 0x000000003bc02efa 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_reconfig_usbd + 0x000000003bc02f1a 0x28e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02f1a dwc2_reconfig_usbd + .text.usb_gadget_register_driver + 0x000000003bc031a8 0x156 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc031a8 usb_gadget_register_driver + .text.dwc2_phy_to_log_ep + 0x000000003bc032fe 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc032fe dwc2_phy_to_log_ep + .text.dwc2_udc_probe + 0x000000003bc03310 0x150 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc03310 dwc2_udc_probe + .text.usb_gadget_handle_interrupts + 0x000000003bc03460 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc03460 usb_gadget_handle_interrupts + .text.set_max_pktsize + 0x000000003bc034ac 0x8e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep_clear_stall + 0x000000003bc0353a 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep_set_stall + 0x000000003bc03598 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_ep0_complete_out + 0x000000003bc035fa 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep0_zlp + 0x000000003bc0367a 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep0_set_stall.isra.0 + 0x000000003bc036f8 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.setdma_rx.isra.0 + 0x000000003bc03760 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.complete_rx + 0x000000003bc0380a 0xfc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_pre_setup + 0x000000003bc03906 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03906 dwc2_udc_pre_setup + .text.dwc2_ep_fifo_write + 0x000000003bc0391c 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc0391c dwc2_ep_fifo_write + .text.setdma_tx + 0x000000003bc03960 0x15c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_ep_fifo_read + 0x000000003bc03abc 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03abc dwc2_ep_fifo_read + .text.dwc2_write_fifo_ep0 + 0x000000003bc03b00 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03b00 dwc2_write_fifo_ep0 + .text.dwc2_set_address + 0x000000003bc03b4c 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03b4c dwc2_set_address + .text.dwc2_ep0_read + 0x000000003bc03b94 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03b94 dwc2_ep0_read + .text.dwc2_ep0_write + 0x000000003bc03bbc 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03bbc dwc2_ep0_write + .text.dwc2_udc_set_nak + 0x000000003bc03bfc 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03bfc dwc2_udc_set_nak + .text.dwc2_udc_set_halt + 0x000000003bc03c3c 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03c3c dwc2_udc_set_halt + .text.dwc2_udc_ep_activate + 0x000000003bc03c9e 0xb2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03c9e dwc2_udc_ep_activate + .text.dwc2_handle_ep0 + 0x000000003bc03d50 0x346 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03d50 dwc2_handle_ep0 + .text.dwc2_udc_irq + 0x000000003bc04096 0x540 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc04096 dwc2_udc_irq + .text.dwc2_ep0_kick + 0x000000003bc045d6 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc045d6 dwc2_ep0_kick + .text.dwc2_queue + 0x000000003bc045ee 0xd8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc045ee dwc2_queue + .text.usb_polling + 0x000000003bc046c6 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + 0x000000003bc046c6 usb_polling + .text.crc16_ccitt + 0x000000003bc04706 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + 0x000000003bc04706 crc16_ccitt + .text.LzmaDec_WriteRem + 0x000000003bc04738 0x72 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_DecodeReal2 + 0x000000003bc047aa 0x138a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_TryDummy + 0x000000003bc05b34 0x4e8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_Init + 0x000000003bc0601c 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc0601c LzmaDec_Init + .text.LzmaDec_DecodeToDic + 0x000000003bc06030 0x27c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc06030 LzmaDec_DecodeToDic + .text.LzmaDec_FreeProbs + 0x000000003bc062ac 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc062ac LzmaDec_FreeProbs + .text.LzmaDec_AllocateProbs2.isra.0 + 0x000000003bc062c8 0x66 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaProps_Decode + 0x000000003bc0632e 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc0632e LzmaProps_Decode + .text.LzmaDec_AllocateProbs + 0x000000003bc06378 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc06378 LzmaDec_AllocateProbs + .text.LzmaDecode + 0x000000003bc063a8 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc063a8 LzmaDecode + .text.LZ4F_readLE32 + 0x000000003bc06452 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe_withSmallPrefix + 0x000000003bc06476 0x276 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_updateDict + 0x000000003bc066ec 0x110 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe + 0x000000003bc067fc 0x26e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc067fc LZ4_decompress_safe + .text.LZ4_decompress_safe_withPrefix64k + 0x000000003bc06a6a 0x26a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc06a6a LZ4_decompress_safe_withPrefix64k + .text.LZ4_decompress_safe_forceExtDict + 0x000000003bc06cd4 0x316 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc06cd4 LZ4_decompress_safe_forceExtDict + .text.LZ4_decompress_safe_usingDict + 0x000000003bc06fea 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc06fea LZ4_decompress_safe_usingDict + .text.LZ4F_isError + 0x000000003bc07010 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc07010 LZ4F_isError + .text.LZ4F_getBlockSize + 0x000000003bc0701c 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc0701c LZ4F_getBlockSize + .text.LZ4F_decodeHeader + 0x000000003bc0703a 0x1a4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_createDecompressionContext + 0x000000003bc071de 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc071de LZ4F_createDecompressionContext + .text.LZ4F_decompress + 0x000000003bc0720e 0x7dc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc0720e LZ4F_decompress + .text.XXH32_avalanche + 0x000000003bc079ea 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH_read32 + 0x000000003bc07a16 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH32_finalize.constprop.0 + 0x000000003bc07a2c 0x33a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .text.XXH32 0x000000003bc07d66 0x1c6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + 0x000000003bc07d66 XXH32 + .text.XXH32_reset + 0x000000003bc07f2c 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + 0x000000003bc07f2c XXH32_reset + .text.XXH32_update + 0x000000003bc07f82 0x1d2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + 0x000000003bc07f82 XXH32_update + .text.XXH32_digest + 0x000000003bc08154 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + 0x000000003bc08154 XXH32_digest + .text.ddr_init + 0x000000003bc08194 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + 0x000000003bc08194 ddr_init + .text.read_ddr_pkg_info + 0x000000003bc081c8 0x22e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc081c8 read_ddr_pkg_info + .text.get_ddr_vendor + 0x000000003bc083f6 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc083f6 get_ddr_vendor + .text.axi_mon_start_all + 0x000000003bc08400 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + 0x000000003bc08400 axi_mon_start_all + .text.ddr_sys_bring_up + 0x000000003bc08450 0x224 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + 0x000000003bc08450 ddr_sys_bring_up + .text.cvx16_bist_wr_prbs_init + 0x000000003bc08674 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08674 cvx16_bist_wr_prbs_init + .text.cvx16_bist_wr_sram_init + 0x000000003bc086c2 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc086c2 cvx16_bist_wr_sram_init + .text.cvx16_bist_rdglvl_init + 0x000000003bc08722 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08722 cvx16_bist_rdglvl_init + .text.cvx16_bist_rdlvl_init + 0x000000003bc08768 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08768 cvx16_bist_rdlvl_init + .text.cvx16_bist_wdqlvl_init + 0x000000003bc08852 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08852 cvx16_bist_wdqlvl_init + .text.cvx16_bist_wdmlvl_init + 0x000000003bc08902 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08902 cvx16_bist_wdmlvl_init + .text.cvx16_bist_start_check + 0x000000003bc08962 0x6a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08962 cvx16_bist_start_check + .text.cvx16_rdvld_train + 0x000000003bc089cc 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc089cc cvx16_rdvld_train + .text.cvx16_dll_cal + 0x000000003bc08a72 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08a72 cvx16_dll_cal + .text.cvx16_clk_normal + 0x000000003bc08ada 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08ada cvx16_clk_normal + .text.cvx16_clk_div2 + 0x000000003bc08b36 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08b36 cvx16_clk_div2 + .text.cvx16_clk_div40 + 0x000000003bc08b4c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08b4c cvx16_clk_div40 + .text.cvx16_chg_pll_freq + 0x000000003bc08b62 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08b62 cvx16_chg_pll_freq + .text.cvx16_ddr_phy_power_on_seq1 + 0x000000003bc08c5a 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08c5a cvx16_ddr_phy_power_on_seq1 + .text.cvx16_ddr_phy_power_on_seq2 + 0x000000003bc08c9e 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08c9e cvx16_ddr_phy_power_on_seq2 + .text.cvx16_ddr_phy_power_on_seq3 + 0x000000003bc08ce6 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08ce6 cvx16_ddr_phy_power_on_seq3 + .text.cvx16_wait_for_dfi_init_complete + 0x000000003bc08d20 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08d20 cvx16_wait_for_dfi_init_complete + .text.cvx16_polling_dfi_init_start + 0x000000003bc08d58 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08d58 cvx16_polling_dfi_init_start + .text.cvx16_set_dfi_init_complete + 0x000000003bc08d72 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08d72 cvx16_set_dfi_init_complete + .text.cvx16_INT_ISR_08 + 0x000000003bc08d9a 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08d9a cvx16_INT_ISR_08 + .text.cvx16_polling_synp_normal_mode + 0x000000003bc08dc6 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08dc6 cvx16_polling_synp_normal_mode + .text.cvx16_dfi_ca_park_prbs + 0x000000003bc08de2 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08de2 cvx16_dfi_ca_park_prbs + .text.cvx16_wrlvl_req + 0x000000003bc08e4a 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08e4a cvx16_wrlvl_req + .text.cvx16_setting_check + 0x000000003bc08e4c 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08e4c cvx16_setting_check + .text.cvx16_set_dfi_init_start + 0x000000003bc08e6c 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08e6c cvx16_set_dfi_init_start + .text.cvx16_pll_init + 0x000000003bc08e92 0x9c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08e92 cvx16_pll_init + .text.cvx16_clk_gating_disable + 0x000000003bc08f2e 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08f2e cvx16_clk_gating_disable + .text.cvx16_clk_gating_enable + 0x000000003bc08f78 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08f78 cvx16_clk_gating_enable + .text.cvx16_rdglvl_req + 0x000000003bc08fe8 0xc6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08fe8 cvx16_rdglvl_req + .text.cvx16_rdlvl_req + 0x000000003bc090ae 0x170 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc090ae cvx16_rdlvl_req + .text.cvx16_wdqlvl_req + 0x000000003bc0921e 0x182 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc0921e cvx16_wdqlvl_req + .text.cvx16_en_rec_vol_mode + 0x000000003bc093a0 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc093a0 cvx16_en_rec_vol_mode + .text.ctrl_init_detect_dram_size + 0x000000003bc093ba 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc093ba ctrl_init_detect_dram_size + .text.pll_init + 0x000000003bc093dc 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc093dc pll_init + .text.cvx16_pinmux + 0x000000003bc09460 0x33a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + 0x000000003bc09460 cvx16_pinmux + .text.cvx16_dram_cap_check + 0x000000003bc0979a 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + 0x000000003bc0979a cvx16_dram_cap_check + .text.ddrc_init + 0x000000003bc0979c 0x1fe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc0979c ddrc_init + .text.ctrl_init_high_patch + 0x000000003bc0999a 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc0999a ctrl_init_high_patch + .text.ctrl_init_low_patch + 0x000000003bc099c8 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc099c8 ctrl_init_low_patch + .text.ctrl_init_update_by_dram_size + 0x000000003bc099f6 0x21c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc099f6 ctrl_init_update_by_dram_size + .text.phy_init + 0x000000003bc09c12 0x3da /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + 0x000000003bc09c12 phy_init + *(.rodata*) + *fill* 0x000000003bc09fec 0x4 + .rodata.build_message + 0x000000003bc09ff0 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o + 0x000000003bc09ff0 build_message + *fill* 0x000000003bc0a00a 0x6 + .rodata.version_string + 0x000000003bc0a010 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o + 0x000000003bc0a010 version_string + .rodata.jump_to_monitor.str1.8 + 0x000000003bc0a020 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + *fill* 0x000000003bc0a046 0x2 + .rodata.tf_printf.str1.8 + 0x000000003bc0a048 0x3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + *fill* 0x000000003bc0a04b 0x1 + .rodata.tf_printf + 0x000000003bc0a04c 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .rodata.__system_reset.str1.8 + 0x000000003bc0a0a8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a0ba 0x6 + .rodata.panic_handler.str1.8 + 0x000000003bc0a0c0 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a0d6 0x2 + .rodata.reset_c906l.str1.8 + 0x000000003bc0a0d8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .rodata.sys_pll_nd.str1.8 + 0x000000003bc0a0e0 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a0e9 0x7 + .rodata.sys_pll_init.str1.8 + 0x000000003bc0a0f0 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a0f9 0x7 + .rodata.switch_rtc_mode_2nd_stage.str1.8 + 0x000000003bc0a100 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a114 0x4 + .rodata.set_rtc_en_registers.str1.8 + 0x000000003bc0a118 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a144 0x4 + .rodata.cst8 0x000000003bc0a148 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .rodata.hex2ascii_data + 0x000000003bc0a170 0x25 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + 0x000000003bc0a170 hex2ascii_data + *fill* 0x000000003bc0a195 0x3 + .rodata.cst8 0x000000003bc0a198 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .rodata.load_image_by_usb.str1.8 + 0x000000003bc0a1a0 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a1ba 0x6 + .rodata.load_param2.str1.8 + 0x000000003bc0a1c0 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .rodata.load_ddr_param.str1.8 + 0x000000003bc0a218 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .rodata.load_ddr.str1.8 + 0x000000003bc0a260 0x4d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a2ad 0x3 + .rodata.load_blcp_2nd.str1.8 + 0x000000003bc0a2b0 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .rodata.load_monitor.str1.8 + 0x000000003bc0a390 0xcf /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a45f 0x1 + .rodata.load_loader_2nd.str1.8 + 0x000000003bc0a460 0xce /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a52e 0x2 + .rodata.load_rest.str1.8 + 0x000000003bc0a530 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .rodata.bl2_main.str1.8 + 0x000000003bc0a590 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a614 0x4 + .rodata.cst8 0x000000003bc0a618 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .rodata.SzAlloc.str1.8 + 0x000000003bc0a620 0x1f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a63f 0x1 + .rodata.decompress_lzma.str1.8 + 0x000000003bc0a640 0x92 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a6d2 0x6 + .rodata.decompress_lz4.str1.8 + 0x000000003bc0a6d8 0x72 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a74a 0x6 + .rodata.decompress.str1.8 + 0x000000003bc0a750 0x31 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a781 0x7 + .rodata.__func__.0 + 0x000000003bc0a788 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .rodata.__func__.1 + 0x000000003bc0a790 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .rodata.reset.str1.8 + 0x000000003bc0a7a0 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a7b6 0x2 + .rodata.unbind.str1.8 + 0x000000003bc0a7b8 0xd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a7c5 0x3 + .rodata.bind.str1.8 + 0x000000003bc0a7c8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .rodata.bulkOutCmpl.str1.8 + 0x000000003bc0a7d0 0x61 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a831 0x7 + .rodata.reqComplete.str1.8 + 0x000000003bc0a838 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a84d 0x3 + .rodata.setup.str1.8 + 0x000000003bc0a850 0xd2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a922 0x2 + .rodata.setup 0x000000003bc0a924 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .rodata.print_buf_addr.str1.8 + 0x000000003bc0a960 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aa4a 0x6 + .rodata.acm_app_init.str1.8 + 0x000000003bc0aa50 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aa65 0x3 + .rodata.AcmApp.str1.8 + 0x000000003bc0aa68 0x10b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab73 0x5 + .rodata.str1.8 + 0x000000003bc0ab78 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab7c 0x4 + .rodata.__func__.0 + 0x000000003bc0ab80 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab85 0x3 + .rodata.__func__.1 + 0x000000003bc0ab88 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab8f 0x1 + .rodata.__func__.4 + 0x000000003bc0ab90 0xb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab9b 0x5 + .rodata.__func__.5 + 0x000000003bc0aba0 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aba6 0x2 + .rodata.dwc2_free_request.str1.8 + 0x000000003bc0aba8 0x23 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0abcb 0x5 + .rodata.dwc2_hsotg_txfifo_flush.constprop.0.str1.8 + 0x000000003bc0abd0 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ac1a 0x6 + .rodata.dwc2_hsotg_init_fifo.constprop.0.str1.8 + 0x000000003bc0ac20 0x2d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ac4d 0x3 + .rodata._dwc2_ep_disable.isra.0.str1.8 + 0x000000003bc0ac50 0x77 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0acc7 0x1 + .rodata.dwc2_reconfig_usbd.str1.8 + 0x000000003bc0acc8 0x71 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ad39 0x7 + .rodata.dwc2_udc_probe.str1.8 + 0x000000003bc0ad40 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ad8e 0x2 + .rodata.__func__.0 + 0x000000003bc0ad90 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ada2 0x6 + .rodata.__func__.1 + 0x000000003bc0ada8 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0adb9 0x7 + .rodata.__func__.2 + 0x000000003bc0adc0 0x13 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0add3 0x5 + .rodata.__func__.3 + 0x000000003bc0add8 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .rodata.__func__.4 + 0x000000003bc0adf0 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae05 0x3 + .rodata.driver_name + 0x000000003bc0ae08 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae11 0x7 + .rodata.dwc2_udc_ops + 0x000000003bc0ae18 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .rodata.ep0name + 0x000000003bc0ae60 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae6c 0x4 + .rodata.ep1name + 0x000000003bc0ae70 0xb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae7b 0x5 + .rodata.ep2name + 0x000000003bc0ae80 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae8c 0x4 + .rodata.ep3name + 0x000000003bc0ae90 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae9a 0x6 + .rodata.dwc2_handle_ep0.str1.8 + 0x000000003bc0aea0 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .rodata.dwc2_handle_ep0 + 0x000000003bc0aeb4 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + *fill* 0x000000003bc0aee4 0x4 + .rodata.dwc2_udc_irq.str1.8 + 0x000000003bc0aee8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + *fill* 0x000000003bc0aefa 0x6 + .rodata.usb_polling.str1.8 + 0x000000003bc0af00 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + *fill* 0x000000003bc0af11 0x7 + .rodata.crc16_tab + 0x000000003bc0af18 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .rodata.LZ4F_decompress + 0x000000003bc0b118 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + *fill* 0x000000003bc0b154 0x4 + .rodata.blockSizes.0 + 0x000000003bc0b158 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .rodata.dec64table + 0x000000003bc0b178 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .rodata.inc32table + 0x000000003bc0b198 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .rodata.XXH32_finalize.constprop.0 + 0x000000003bc0b1b8 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + *fill* 0x000000003bc0b1f4 0x4 + .rodata.ddr_init.str1.8 + 0x000000003bc0b1f8 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + *fill* 0x000000003bc0b21e 0x2 + .rodata.read_ddr_pkg_info.str1.8 + 0x000000003bc0b220 0xe2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + *fill* 0x000000003bc0b302 0x2 + .rodata.read_ddr_pkg_info + 0x000000003bc0b304 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + *fill* 0x000000003bc0b34c 0x4 + .rodata.ddr_sys_bring_up.str1.8 + 0x000000003bc0b350 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + 0x81 (size before relaxing) + .rodata.cst8 0x000000003bc0b3d8 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .rodata.cvx16_pinmux + 0x000000003bc0b3f8 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .rodata.ctrl_init_update_by_dram_size + 0x000000003bc0b420 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc0b434 __RO_END__ = . + +.rela.dyn 0x000000003bc0b438 0x0 + .rela.text.setup_dl_flag + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o + .rela.text.load_param2 + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o + .rela.text.load_ddr_param + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o + .rela.text.load_ddr + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o + .rela.text.load_blcp_2nd + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o + .rela.text.load_monitor + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o + .rela.text.load_loader_2nd + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o + .rela.text.load_rest + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o + .rela.text.init + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o + +.data 0x000000003bc0b434 0x2cc + 0x000000003bc0b440 . = ALIGN (0x10) + *fill* 0x000000003bc0b434 0xc + 0x000000003bc0b440 __DATA_START__ = . + *(.data*) + .data.time_records + 0x000000003bc0b440 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc0b440 time_records + .data.ConfDesc + 0x000000003bc0b448 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b451 0x7 + .data.acm_buf 0x000000003bc0b458 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .data.acm_call_mgmt_descriptor + 0x000000003bc0b460 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b465 0x3 + .data.acm_control_interface_desc + 0x000000003bc0b468 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b471 0x7 + .data.acm_data_interface_desc + 0x000000003bc0b478 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b481 0x7 + .data.acm_descriptor + 0x000000003bc0b488 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b48c 0x4 + .data.acm_fs_in_desc + 0x000000003bc0b490 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b497 0x1 + .data.acm_fs_notify_desc + 0x000000003bc0b498 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b49f 0x1 + .data.acm_fs_out_desc + 0x000000003bc0b4a0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4a7 0x1 + .data.acm_header_desc + 0x000000003bc0b4a8 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4ad 0x3 + .data.acm_hs_in_desc + 0x000000003bc0b4b0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4b7 0x1 + .data.acm_hs_notify_desc + 0x000000003bc0b4b8 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4bf 0x1 + .data.acm_hs_out_desc + 0x000000003bc0b4c0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4c7 0x1 + .data.acm_union_desc + 0x000000003bc0b4c8 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4cd 0x3 + .data.bosDesc 0x000000003bc0b4d0 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4d5 0x3 + .data.bulkBufAlloc + 0x000000003bc0b4d8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .data.capabilityExtDesc + 0x000000003bc0b4e0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4e7 0x1 + .data.cb0_buf 0x000000003bc0b4e8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .data.cb1_buf 0x000000003bc0b4f0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .data.cb2_buf 0x000000003bc0b4f8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .data.cmdBufAlloc + 0x000000003bc0b500 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .data.descriptorsFs + 0x000000003bc0b508 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .data.descriptorsHs + 0x000000003bc0b558 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .data.devHsDesc + 0x000000003bc0b5a8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b5ba 0x6 + .data.drv_obj 0x000000003bc0b5c0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .data.ep0BuffAlloc + 0x000000003bc0b610 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .data.g_driver + 0x000000003bc0b618 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .data.handler 0x000000003bc0b670 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .data.languageDesc + 0x000000003bc0b678 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b67c 0x4 + .data.qualifierDesc + 0x000000003bc0b680 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b68a 0x6 + .data.rsp_buf 0x000000003bc0b690 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .data.setup_buf + 0x000000003bc0b698 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .data.dwc2_ep_ops + 0x000000003bc0b6a0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .data.ep0_fifo_size + 0x000000003bc0b6f0 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .data.ep_fifo_size + 0x000000003bc0b6f4 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .data.cv_usb_vid + 0x000000003bc0b6f8 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + 0x000000003bc0b6f8 cv_usb_vid + *fill* 0x000000003bc0b6fa 0x2 + .data.ddr_data_rate + 0x000000003bc0b6fc 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc0b6fc ddr_data_rate + 0x000000003bc0b700 . = ALIGN (0x10) + 0x000000003bc0b700 __DATA_END__ = . + +stacks 0x000000003bc0b700 0x2000 + 0x000000003bc0b700 . = ALIGN (0x40) + *fill* 0x000000003bc0b700 0x0 + 0x000000003bc0b700 __STACKS_START__ = . + 0x000000003bc0d700 . = (. + 0x2000) + *fill* 0x000000003bc0b700 0x2000 + 0x000000003bc0d700 . = ALIGN (0x40) + 0x000000003bc0d700 __STACKS_END__ = . + +.bss 0x000000003bc0d800 0x5c10 + 0x000000003bc0d800 . = ALIGN (0x10) + 0x000000003bc0d800 __BSS_START__ = . + *(SORT_BY_ALIGNMENT(.bss*)) + .bss.fip_param2 + 0x000000003bc0d800 0x1000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .bss.sram_union_buf + 0x000000003bc0e800 0x4000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .bss.acm_bufArr + 0x000000003bc12800 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12800 acm_bufArr + .bss.bulkBufAllocArr + 0x000000003bc12880 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12880 bulkBufAllocArr + .bss.cb0_bufArr + 0x000000003bc12a80 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12a80 cb0_bufArr + .bss.cb1_bufArr + 0x000000003bc12b00 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12b00 cb1_bufArr + .bss.cb2_bufArr + 0x000000003bc12b80 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12b80 cb2_bufArr + .bss.cmdBufAllocArr + 0x000000003bc12c00 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12c00 cmdBufAllocArr + .bss.ep0BuffAllocArr + 0x000000003bc12e00 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12e00 ep0BuffAllocArr + .bss.handlerArr + 0x000000003bc12e80 0x400 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12e80 handlerArr + .bss.rsp_bufArr + 0x000000003bc13280 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc13280 rsp_bufArr + *fill* 0x000000003bc13290 0x30 + .bss.setup_bufArr + 0x000000003bc132c0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc132c0 setup_bufArr + .bss.fw_dynamic_info + 0x000000003bc132c8 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .bss.comp_alloc_buf + 0x000000003bc132f8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .bss.comp_alloc_size + 0x000000003bc13300 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .bss.acm 0x000000003bc13308 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc13308 acm + .bss.bulkBuf 0x000000003bc13310 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.bulkInReq + 0x000000003bc13318 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.bulkOutReq + 0x000000003bc13320 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.cmdBuf 0x000000003bc13328 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.ep0Buff 0x000000003bc13330 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.ep0Req 0x000000003bc13338 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.epIn 0x000000003bc13340 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.epOut 0x000000003bc13348 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.fip_buf 0x000000003bc13350 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.productDesc + 0x000000003bc13358 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc13374 0x4 + .bss.serial.2 0x000000003bc13378 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.serialDesc + 0x000000003bc13388 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc133a4 0x4 + .bss.vendorDesc + 0x000000003bc133a8 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.reg 0x000000003bc133b8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc133b8 reg + .bss.the_controller + 0x000000003bc133c0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc133c0 the_controller + .bss.reg_set 0x000000003bc133c8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc133c8 reg_set + .bss.reg_span 0x000000003bc133d0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc133d0 reg_span + .bss.reg_step 0x000000003bc133d8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc133d8 reg_step + .bss.fip_tx_offset + 0x000000003bc133e0 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.fip_tx_size + 0x000000003bc133e4 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.transfer_size + 0x000000003bc133e8 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.ts 0x000000003bc133ec 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.rddata 0x000000003bc133f0 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc133f0 rddata + .bss.dev_freq 0x000000003bc133f4 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc133f4 dev_freq + .bss.freq_in 0x000000003bc133f8 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc133f8 freq_in + .bss.mod_freq 0x000000003bc133fc 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc133fc mod_freq + .bss.tar_freq 0x000000003bc13400 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc13400 tar_freq + .bss.ack_idx.6 + 0x000000003bc13404 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.acm_configValue + 0x000000003bc13405 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc13405 acm_configValue + .bss.configBreak + 0x000000003bc13406 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.configValue + 0x000000003bc13407 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.flagEnterDL + 0x000000003bc13408 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.flagReboot + 0x000000003bc13409 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.is_serial_patched.3 + 0x000000003bc1340a 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.mem_alloc_cnt + 0x000000003bc1340b 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .bss.ddr_capacity + 0x000000003bc1340c 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1340c ddr_capacity + .bss.ddr_type 0x000000003bc1340d 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1340d ddr_type + .bss.ddr_vendor + 0x000000003bc1340e 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1340e ddr_vendor + .bss.pkg 0x000000003bc1340f 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1340f pkg + *(COMMON) + 0x000000003bc13410 . = ALIGN (0x10) + 0x000000003bc13410 __BSS_END__ = . + 0x000000003bc13410 __BL2_END__ = . + 0x0000000000005c10 __BSS_SIZE__ = SIZEOF (.bss) + 0x0000000000000001 ASSERT ((. <= 0x3bc19000), BL2 image has exceeded its limit.) + 0x0000000004400100 p_rom_api_cryptodma_aes_decrypt = 0x4400100 + 0x0000000004400080 p_rom_api_flash_init = 0x4400080 + 0x0000000004400020 p_rom_api_get_boot_src = 0x4400020 + 0x00000000044000c0 p_rom_api_get_number_of_retries = 0x44000c0 + 0x00000000044000a0 p_rom_api_image_crc = 0x44000a0 + 0x0000000004400060 p_rom_api_load_image = 0x4400060 + 0x0000000004400040 p_rom_api_set_boot_src = 0x4400040 + 0x00000000044000e0 p_rom_api_verify_rsa = 0x44000e0 +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/assert.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_entrypoint.o +OUTPUT(/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2.elf elf64-littleriscv) + +.debug_info 0x0000000000000000 0x68732 + .debug_info 0x0000000000000000 0x89 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o + .debug_info 0x0000000000000089 0x1a1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_info 0x000000000000022a 0x1e4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .debug_info 0x000000000000040e 0x45f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_info 0x000000000000086d 0x3d6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_info 0x0000000000000c43 0x33f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_info 0x0000000000000f82 0x474 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_info 0x00000000000013f6 0x1a24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_info 0x0000000000002e1a 0x622 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .debug_info 0x000000000000343c 0x22a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .debug_info 0x0000000000003666 0x41f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .debug_info 0x0000000000003a85 0x2d6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .debug_info 0x0000000000003d5b 0x13d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o + .debug_info 0x0000000000003e98 0xf6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o + .debug_info 0x0000000000003f8e 0x483 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_info 0x0000000000004411 0x1c6e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_info 0x000000000000607f 0x9df /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_info 0x0000000000006a5e 0x3a2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_info 0x0000000000006e00 0x2fa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_info 0x0000000000009da8 0x3221 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_info 0x000000000000cfc9 0x39b8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_info 0x0000000000010981 0x2b7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_info 0x0000000000010c38 0x279 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .debug_info 0x0000000000010eb1 0x17cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_info 0x000000000001267e 0x285e2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_info 0x000000000003ac60 0x4039 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_info 0x000000000003ec99 0x1a7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .debug_info 0x000000000003ee40 0x516 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_info 0x000000000003f356 0x1135 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_info 0x000000000004048b 0x23242 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_info 0x00000000000636cd 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_info 0x00000000000638ad 0x11b2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_info 0x0000000000064a5f 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_info 0x0000000000064b27 0x1c32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_info 0x0000000000066759 0x1fab /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .debug_info 0x0000000000068704 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_entrypoint.o + +.debug_abbrev 0x0000000000000000 0x4de5 + .debug_abbrev 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o + .debug_abbrev 0x0000000000000048 0xc1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_abbrev 0x0000000000000109 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .debug_abbrev 0x00000000000001b9 0x1ae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_abbrev 0x0000000000000367 0x197 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_abbrev 0x00000000000004fe 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_abbrev 0x0000000000000685 0x1e5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_abbrev 0x000000000000086a 0x371 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_abbrev 0x0000000000000bdb 0x134 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .debug_abbrev 0x0000000000000d0f 0x11a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .debug_abbrev 0x0000000000000e29 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .debug_abbrev 0x0000000000000f49 0x15d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .debug_abbrev 0x00000000000010a6 0xac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o + .debug_abbrev 0x0000000000001152 0x8c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o + .debug_abbrev 0x00000000000011de 0x202 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_abbrev 0x00000000000013e0 0x42f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_abbrev 0x000000000000180f 0x305 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_abbrev 0x0000000000001b14 0x181 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_abbrev 0x0000000000001c95 0x6f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_abbrev 0x000000000000238b 0x657 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_abbrev 0x00000000000029e2 0x55c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_abbrev 0x0000000000002f3e 0x15a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_abbrev 0x0000000000003098 0x12f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .debug_abbrev 0x00000000000031c7 0x454 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_abbrev 0x000000000000361b 0x69b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_abbrev 0x0000000000003cb6 0x4b9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_abbrev 0x000000000000416f 0xe9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .debug_abbrev 0x0000000000004258 0x17f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_abbrev 0x00000000000043d7 0x203 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_abbrev 0x00000000000045da 0x3e8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_abbrev 0x00000000000049c2 0x9e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_abbrev 0x0000000000004a60 0xd3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_abbrev 0x0000000000004b33 0x69 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_abbrev 0x0000000000004b9c 0x16b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_abbrev 0x0000000000004d07 0xca /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .debug_abbrev 0x0000000000004dd1 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_entrypoint.o + +.debug_aranges 0x0000000000000000 0x1e80 + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o + .debug_aranges + 0x0000000000000020 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_aranges + 0x0000000000000070 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .debug_aranges + 0x00000000000000e0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_aranges + 0x0000000000000170 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_aranges + 0x00000000000001b0 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_aranges + 0x0000000000000250 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_aranges + 0x00000000000002a0 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_aranges + 0x0000000000000380 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .debug_aranges + 0x00000000000003b0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .debug_aranges + 0x00000000000003f0 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .debug_aranges + 0x0000000000000470 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .debug_aranges + 0x00000000000004a0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o + .debug_aranges + 0x00000000000004e0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o + .debug_aranges + 0x0000000000000510 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_aranges + 0x0000000000000560 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_aranges + 0x0000000000000630 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_aranges + 0x00000000000006d0 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_aranges + 0x0000000000000770 0x170 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_aranges + 0x00000000000008e0 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_aranges + 0x0000000000000ae0 0x190 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_aranges + 0x0000000000000c70 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_aranges + 0x0000000000000ca0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .debug_aranges + 0x0000000000000cf0 0x100 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_aranges + 0x0000000000000df0 0x7c0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_aranges + 0x00000000000015b0 0x1b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_aranges + 0x0000000000001760 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .debug_aranges + 0x0000000000001790 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_aranges + 0x0000000000001800 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_aranges + 0x0000000000001850 0x4e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_aranges + 0x0000000000001d30 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_aranges + 0x0000000000001d60 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_aranges + 0x0000000000001d90 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_aranges + 0x0000000000001dc0 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_aranges + 0x0000000000001e20 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .debug_aranges + 0x0000000000001e50 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_entrypoint.o + +.debug_macro 0x0000000000000000 0x9b13 + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o + .debug_macro 0x0000000000000011 0x86e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o + .debug_macro 0x000000000000087f 0x115 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000000994 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001208 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001477 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001488 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x000000000000160f 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001655 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x000000000000166b 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001693 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x00000000000016af 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x000000000000185e 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001923 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x00000000000019a5 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001bce 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001c8c 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001d86 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001f66 0x186b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x00000000000037d1 0x12c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .debug_macro 0x00000000000038fd 0x121 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000003a1e 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000003b4e 0x178 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000003cc6 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000003d92 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000003da8 0x146 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000003eee 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000003f94 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x000000000000404c 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x000000000000407a 0x14b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x00000000000041c5 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x000000000000443c 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x00000000000044d0 0xe2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_macro 0x00000000000045b2 0x125 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .debug_macro 0x00000000000046d7 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000004754 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .debug_macro 0x000000000000479a 0x9b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000004835 0x11b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004950 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004966 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004982 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004a40 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000004a90 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000004ad6 0x1f9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000004ccf 0xa60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x000000000000572f 0x872 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000005fa1 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000005fe1 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000005ffd 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x000000000000601f 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000006125 0x192 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x00000000000062b7 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x00000000000062cd 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x00000000000062f5 0x13c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000006431 0x16b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x000000000000659c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x00000000000065b2 0x61 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000006613 0x9d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x00000000000066b0 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000006702 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006902 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006918 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006928 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000693e 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000697e 0x51d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006e9b 0x17a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000007015 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000703d 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000753a 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x00000000000075ce 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000007644 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000765a 0x207 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007861 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007877 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x00000000000078c3 0x517 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007dda 0x1cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000007fa7 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x00000000000080d7 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000008125 0x308 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x000000000000842d 0x2ef /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x000000000000871c 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000087c4 0x27 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000087eb 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x000000000000884d 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000088ca 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000088f6 0x1ac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000008aa2 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000008af4 0x11b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000008c0f 0xfb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008d0a 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008d26 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008ef9 0x1c4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x00000000000090bd 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000009163 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x00000000000095fc 0xd7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x00000000000096d3 0x110 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x00000000000097e3 0xac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x000000000000988f 0xa1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000009930 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x00000000000099c8 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000009a72 0xa1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + +.debug_line 0x0000000000000000 0x75d63 + .debug_line 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o + .debug_line 0x0000000000000028 0x231 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_line 0x0000000000000259 0x351 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .debug_line 0x00000000000005aa 0x4f5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_line 0x0000000000000a9f 0x341 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_line 0x0000000000000de0 0x559 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_line 0x0000000000001339 0x812 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_line 0x0000000000001b4b 0x1538 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_line 0x0000000000003083 0x21d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .debug_line 0x00000000000032a0 0x2db /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .debug_line 0x000000000000357b 0x5f0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .debug_line 0x0000000000003b6b 0x2f7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .debug_line 0x0000000000003e62 0x1f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o + .debug_line 0x0000000000004058 0x117 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o + .debug_line 0x000000000000416f 0x589 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_line 0x00000000000046f8 0x14d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_line 0x0000000000005bd0 0x792 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_line 0x0000000000006362 0x282 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_line 0x00000000000065e4 0x265c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_line 0x0000000000008c40 0x27a7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_line 0x000000000000b3e7 0x3667 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_line 0x000000000000ea4e 0x2d9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_line 0x000000000000ed27 0x2a4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .debug_line 0x000000000000efcb 0x4528 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_line 0x00000000000134f3 0x34953 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_line 0x0000000000047e46 0x3d78 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_line 0x000000000004bbbe 0x260 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .debug_line 0x000000000004be1e 0x622 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_line 0x000000000004c440 0xcb5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_line 0x000000000004d0f5 0x251fe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_line 0x00000000000722f3 0x301 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_line 0x00000000000725f4 0xc73 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_line 0x0000000000073267 0x165 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_line 0x00000000000733cc 0x136a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_line 0x0000000000074736 0x145c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + .debug_line 0x0000000000075b92 0x1d1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_entrypoint.o + +.debug_str 0x0000000000000000 0x2394c + .debug_str 0x0000000000000000 0x2979 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o + 0x29a6 (size before relaxing) + .debug_str 0x0000000000002979 0x94ac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + 0xbeb1 (size before relaxing) + .debug_str 0x000000000000be25 0x217 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + 0x7166 (size before relaxing) + .debug_str 0x000000000000c03c 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + 0xbf4c (size before relaxing) + .debug_str 0x000000000000c134 0x243 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + 0x720d (size before relaxing) + .debug_str 0x000000000000c377 0x2ec /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + 0x67d1 (size before relaxing) + .debug_str 0x000000000000c663 0x7f0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + 0x7789 (size before relaxing) + .debug_str 0x000000000000ce53 0xf0b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + 0x7f4a (size before relaxing) + .debug_str 0x000000000000dd5e 0x30c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + 0x7793 (size before relaxing) + .debug_str 0x000000000000e06a 0x281 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + 0x4370 (size before relaxing) + .debug_str 0x000000000000e2eb 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + 0x46c2 (size before relaxing) + .debug_str 0x000000000000e36b 0x4b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + 0x709e (size before relaxing) + .debug_str 0x000000000000e3b6 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o + 0x3c13 (size before relaxing) + .debug_str 0x000000000000e3dc 0x1b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o + 0x3a8b (size before relaxing) + .debug_str 0x000000000000e3f7 0x5ca5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + 0xd1bf (size before relaxing) + .debug_str 0x000000000001409c 0x443 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + 0x81e5 (size before relaxing) + .debug_str 0x00000000000144df 0xc1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + 0x8108 (size before relaxing) + .debug_str 0x00000000000150f9 0x1cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + 0x437f (size before relaxing) + .debug_str 0x00000000000152c6 0x4ba0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + 0xca10 (size before relaxing) + .debug_str 0x0000000000019e66 0x6fa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + 0xba4a (size before relaxing) + .debug_str 0x000000000001a560 0x314 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0xb7f6 (size before relaxing) + .debug_str 0x000000000001a874 0x19 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + 0x75af (size before relaxing) + .debug_str 0x000000000001a88d 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + 0x4115 (size before relaxing) + .debug_str 0x000000000001a8d3 0x12b6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + 0x903e (size before relaxing) + .debug_str 0x000000000001bb89 0x3a87 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + 0x85bd (size before relaxing) + .debug_str 0x000000000001f610 0x7f5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + 0x7a5b (size before relaxing) + .debug_str 0x000000000001fe05 0x51 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + 0x71fd (size before relaxing) + .debug_str 0x000000000001fe56 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + 0x72aa (size before relaxing) + .debug_str 0x000000000001fed3 0x2ed3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + 0x9ee5 (size before relaxing) + .debug_str 0x0000000000022da6 0xa62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + 0x8793 (size before relaxing) + .debug_str 0x0000000000023808 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + 0x985d (size before relaxing) + .debug_str 0x0000000000023858 0x1f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + 0x5093 (size before relaxing) + .debug_str 0x0000000000023877 0x27 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + 0x4e2c (size before relaxing) + .debug_str 0x000000000002389e 0x4f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + 0x7579 (size before relaxing) + .debug_str 0x00000000000238ed 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + 0x743b (size before relaxing) + .debug_str 0x0000000000023921 0x2b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_entrypoint.o + 0x65 (size before relaxing) + +.comment 0x0000000000000000 0x1d + .comment 0x0000000000000000 0x1d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o + 0x1e (size before relaxing) + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + +.note.GNU-stack + 0x0000000000000000 0x0 + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + +.debug_ranges 0x0000000000000000 0x2f790 + .debug_ranges 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_ranges 0x0000000000000040 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .debug_ranges 0x00000000000000a0 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_ranges 0x00000000000001c0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_ranges 0x00000000000001f0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_ranges 0x0000000000000280 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_ranges 0x0000000000000300 0x8d0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_ranges 0x0000000000000bd0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .debug_ranges 0x0000000000000bf0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .debug_ranges 0x0000000000000c20 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .debug_ranges 0x0000000000000d40 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .debug_ranges 0x0000000000000d60 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o + .debug_ranges 0x0000000000000d90 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o + .debug_ranges 0x0000000000000db0 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_ranges 0x0000000000000e90 0x100 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_ranges 0x0000000000000f90 0x160 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_ranges 0x00000000000010f0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_ranges 0x0000000000001180 0x3d0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_ranges 0x0000000000001550 0x480 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_ranges 0x00000000000019d0 0x6b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_ranges 0x0000000000002080 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_ranges 0x00000000000020a0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .debug_ranges 0x00000000000020e0 0xbe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_ranges 0x0000000000002cc0 0x1cf40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_ranges 0x000000000001fc00 0x27b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_ranges 0x00000000000223b0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .debug_ranges 0x00000000000223d0 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_ranges 0x00000000000224a0 0x190 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_ranges 0x0000000000022630 0xc470 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_ranges 0x000000000002eaa0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_ranges 0x000000000002eac0 0x210 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_ranges 0x000000000002ecd0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_ranges 0x000000000002ecf0 0x520 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_ranges 0x000000000002f210 0x580 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + +.debug_frame 0x0000000000000000 0x47b8 + .debug_frame 0x0000000000000000 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o + .debug_frame 0x0000000000000058 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .debug_frame 0x00000000000000e0 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_frame 0x0000000000000198 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_frame 0x00000000000001f8 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_frame 0x00000000000002f0 0xd8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_frame 0x00000000000003c8 0x1d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_frame 0x00000000000005a0 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .debug_frame 0x00000000000005c8 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .debug_frame 0x0000000000000608 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .debug_frame 0x00000000000006a8 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .debug_frame 0x00000000000006e0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o + .debug_frame 0x0000000000000720 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o + .debug_frame 0x0000000000000748 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_frame 0x00000000000007d0 0x258 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_frame 0x0000000000000a28 0x158 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_frame 0x0000000000000b80 0x118 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_frame 0x0000000000000c98 0x3b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_frame 0x0000000000001048 0x5a8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_frame 0x00000000000015f0 0x520 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_frame 0x0000000000001b10 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_frame 0x0000000000001b50 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .debug_frame 0x0000000000001bb8 0x2d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_frame 0x0000000000001e90 0x1758 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_frame 0x00000000000035e8 0x488 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_frame 0x0000000000003a70 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .debug_frame 0x0000000000003aa8 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_frame 0x0000000000003b60 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_frame 0x0000000000003be8 0xab0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_frame 0x0000000000004698 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o + .debug_frame 0x00000000000046c0 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_frame 0x00000000000046f8 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_frame 0x0000000000004720 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_frame 0x0000000000004790 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o + +.debug_loc 0x0000000000000000 0xc12a0 + .debug_loc 0x0000000000000000 0x18c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o + .debug_loc 0x000000000000018c 0x28a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o + .debug_loc 0x0000000000000416 0x143 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o + .debug_loc 0x0000000000000559 0x24e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o + .debug_loc 0x00000000000007a7 0x8b7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o + .debug_loc 0x000000000000105e 0x1f54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o + .debug_loc 0x0000000000002fb2 0x39 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o + .debug_loc 0x0000000000002feb 0x450 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o + .debug_loc 0x000000000000343b 0xc56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o + .debug_loc 0x0000000000004091 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o + .debug_loc 0x000000000000414f 0x262 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o + .debug_loc 0x00000000000043b1 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o + .debug_loc 0x0000000000004433 0x38f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o + .debug_loc 0x00000000000047c2 0xe17 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o + .debug_loc 0x00000000000055d9 0x9d2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o + .debug_loc 0x0000000000005fab 0x156 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o + .debug_loc 0x0000000000006101 0x1f8b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o + .debug_loc 0x000000000000808c 0x28fb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_loc 0x000000000000a987 0x4255 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_loc 0x000000000000ebdc 0x11d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o + .debug_loc 0x000000000000ecf9 0x33f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o + .debug_loc 0x000000000000f038 0xa0cf /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/LzmaDec.o + .debug_loc 0x0000000000019107 0x5f2ef /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o + .debug_loc 0x00000000000783f6 0x8560 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o + .debug_loc 0x0000000000080956 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o + .debug_loc 0x00000000000809ee 0x22c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_loc 0x0000000000080c1a 0xdfe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_loc 0x0000000000081a18 0x37fb4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o + .debug_loc 0x00000000000b99cc 0x1c14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_loc 0x00000000000bb5e0 0x2b75 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o + .debug_loc 0x00000000000be155 0x314b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2.sym b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2.sym new file mode 100644 index 000000000..08b449c14 --- /dev/null +++ b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2.sym @@ -0,0 +1,400 @@ + 39: 000000003bc0e800 16384 OBJECT LOCAL DEFAULT 4 sram_union_buf + 167: 000000003bc047aa 5002 FUNC LOCAL DEFAULT 1 LzmaDec_DecodeReal2 + 38: 000000003bc0d800 4096 OBJECT LOCAL DEFAULT 4 fip_param2 + 279: 000000003bc0720e 2012 FUNC GLOBAL DEFAULT 1 LZ4F_decompress + 375: 000000003bc04096 1344 FUNC GLOBAL DEFAULT 1 dwc2_udc_irq + 168: 000000003bc05b34 1256 FUNC LOCAL DEFAULT 1 LzmaDec_TryDummy + 283: 000000003bc022d6 1144 FUNC GLOBAL DEFAULT 1 AcmApp + 62: 000000003bc01ba6 1090 FUNC LOCAL DEFAULT 1 setup + 373: 000000003bc12e80 1024 OBJECT GLOBAL DEFAULT 4 handlerArr + 394: 000000003bc09c12 986 FUNC GLOBAL DEFAULT 1 phy_init + 334: 000000003bc03d50 838 FUNC GLOBAL DEFAULT 1 dwc2_handle_ep0 + 280: 000000003bc09460 826 FUNC GLOBAL DEFAULT 1 cvx16_pinmux + 181: 000000003bc07a2c 826 FUNC LOCAL DEFAULT 1 XXH32_finalize.constprop. + 294: 000000003bc06cd4 790 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_force + 396: 000000003bc02f1a 654 FUNC GLOBAL DEFAULT 1 dwc2_reconfig_usbd + 222: 000000003bc06030 636 FUNC GLOBAL DEFAULT 1 LzmaDec_DecodeToDic + 172: 000000003bc06476 630 FUNC LOCAL DEFAULT 1 LZ4_decompress_safe_withS + 219: 000000003bc067fc 622 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe + 340: 000000003bc06a6a 618 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_withP + 58: 000000003bc0189c 564 FUNC LOCAL DEFAULT 1 bulkOutCmpl + 320: 000000003bc081c8 558 FUNC GLOBAL DEFAULT 1 read_ddr_pkg_info + 379: 000000003bc08450 548 FUNC GLOBAL DEFAULT 1 ddr_sys_bring_up + 333: 000000003bc099f6 540 FUNC GLOBAL DEFAULT 1 ctrl_init_update_by_dram_ + 312: 000000003bc01130 520 FUNC GLOBAL DEFAULT 1 load_loader_2nd + 376: 000000003bc12c00 512 OBJECT GLOBAL DEFAULT 4 cmdBufAllocArr + 218: 000000003bc12880 512 OBJECT GLOBAL DEFAULT 4 bulkBufAllocArr + 164: 000000003bc0af18 512 OBJECT LOCAL DEFAULT 1 crc16_tab + 339: 000000003bc0979c 510 FUNC GLOBAL DEFAULT 1 ddrc_init + 331: 000000003bc07f82 466 FUNC GLOBAL DEFAULT 1 XXH32_update + 337: 000000003bc07d66 454 FUNC GLOBAL DEFAULT 1 XXH32 + 136: 000000003bc02d54 422 FUNC LOCAL DEFAULT 1 _dwc2_ep_disable.isra.0 + 174: 000000003bc0703a 420 FUNC LOCAL DEFAULT 1 LZ4F_decodeHeader + 341: 000000003bc00358 410 FUNC GLOBAL DEFAULT 1 tf_printf + 275: 000000003bc0068e 398 FUNC GLOBAL DEFAULT 1 sys_pll_nd + 225: 000000003bc0921e 386 FUNC GLOBAL DEFAULT 1 cvx16_wdqlvl_req + 237: 000000003bc090ae 368 FUNC GLOBAL DEFAULT 1 cvx16_rdlvl_req + 325: 000000003bc00ea4 358 FUNC GLOBAL DEFAULT 1 load_blcp_2nd + 159: 000000003bc03960 348 FUNC LOCAL DEFAULT 1 setdma_tx + 268: 000000003bc031a8 342 FUNC GLOBAL DEFAULT 1 usb_gadget_register_drive + 314: 000000003bc03310 336 FUNC GLOBAL DEFAULT 1 dwc2_udc_probe + 282: 000000003bc02162 312 FUNC GLOBAL DEFAULT 1 acm_app_init + 248: 000000003bc0100a 294 FUNC GLOBAL DEFAULT 1 load_monitor + 173: 000000003bc066ec 272 FUNC LOCAL DEFAULT 1 LZ4F_updateDict + 158: 000000003bc0380a 252 FUNC LOCAL DEFAULT 1 complete_rx + 271: 000000003bc08b62 248 FUNC GLOBAL DEFAULT 1 cvx16_chg_pll_freq + 307: 000000003bc08768 234 FUNC GLOBAL DEFAULT 1 cvx16_bist_rdlvl_init + 301: 000000003bc014fa 232 FUNC GLOBAL DEFAULT 1 decompress_lzma + 229: 000000003bc01338 230 FUNC GLOBAL DEFAULT 1 load_rest + 135: 000000003bc02c7a 218 FUNC LOCAL DEFAULT 1 dwc2_hsotg_init_fifo.cons + 317: 000000003bc045ee 216 FUNC GLOBAL DEFAULT 1 dwc2_queue + 345: 000000003bc0208c 208 FUNC GLOBAL DEFAULT 1 print_buf_addr + 278: 000000003bc00c60 208 FUNC GLOBAL DEFAULT 1 load_param2 + 227: 000000003bc004f2 200 FUNC GLOBAL DEFAULT 1 __system_reset + 391: 000000003bc00dde 198 FUNC GLOBAL DEFAULT 1 load_ddr + 353: 000000003bc08fe8 198 FUNC GLOBAL DEFAULT 1 cvx16_rdglvl_req + 277: 000000003bc00878 188 FUNC GLOBAL DEFAULT 1 set_rtc_en_registers + 204: 000000003bc03c9e 178 FUNC GLOBAL DEFAULT 1 dwc2_udc_ep_activate + 239: 000000003bc08852 176 FUNC GLOBAL DEFAULT 1 cvx16_bist_wdqlvl_init + 383: 000000003bc01612 174 FUNC GLOBAL DEFAULT 1 decompress_lz4 + 200: 000000003bc00d30 174 FUNC GLOBAL DEFAULT 1 load_ddr_param + 366: 000000003bc063a8 170 FUNC GLOBAL DEFAULT 1 LzmaDecode + 157: 000000003bc03760 170 FUNC LOCAL DEFAULT 1 setdma_rx.isra.0 + 338: 000000003bc089cc 166 FUNC GLOBAL DEFAULT 1 cvx16_rdvld_train + 295: 000000003bc01fea 162 FUNC GLOBAL DEFAULT 1 convert_buf_addr + 129: 000000003bc0281e 160 FUNC LOCAL DEFAULT 1 dwc2_ep_enable + 297: 000000003bc08e92 156 FUNC GLOBAL DEFAULT 1 cvx16_pll_init + 342: 000000003bc029d4 154 FUNC GLOBAL DEFAULT 1 usb_gadget_unregister_dri + 298: 000000003bc0141e 152 FUNC GLOBAL DEFAULT 1 bl2_main + 133: 000000003bc02b36 144 FUNC LOCAL DEFAULT 1 dwc2_hsotg_txfifo_flush.c + 151: 000000003bc034ac 142 FUNC LOCAL DEFAULT 1 set_max_pktsize + 395: 000000003bc093dc 132 FUNC GLOBAL DEFAULT 1 pll_init + 27: 000000003bc002d6 130 FUNC LOCAL DEFAULT 1 unsigned_num_print + 347: 000000003bc12b80 128 OBJECT GLOBAL DEFAULT 4 cb2_bufArr + 321: 000000003bc12800 128 OBJECT GLOBAL DEFAULT 4 acm_bufArr + 289: 000000003bc12e00 128 OBJECT GLOBAL DEFAULT 4 ep0BuffAllocArr + 274: 000000003bc12a80 128 OBJECT GLOBAL DEFAULT 4 cb0_bufArr + 234: 000000003bc12b00 128 OBJECT GLOBAL DEFAULT 4 cb1_bufArr + 154: 000000003bc035fa 128 FUNC LOCAL DEFAULT 1 dwc2_ep0_complete_out + 263: 000000003bc016c0 126 FUNC GLOBAL DEFAULT 1 decompress + 155: 000000003bc0367a 126 FUNC LOCAL DEFAULT 1 dwc2_udc_ep0_zlp + 258: 000000003bc00b6c 124 FUNC GLOBAL DEFAULT 1 gpio_in_value + 355: 000000003bc00998 122 FUNC GLOBAL DEFAULT 1 ntostr + 211: 000000003bc0021a 120 FUNC GLOBAL DEFAULT 1 jump_to_monitor + 166: 000000003bc04738 114 FUNC LOCAL DEFAULT 1 LzmaDec_WriteRem + 262: 000000003bc08f78 112 FUNC GLOBAL DEFAULT 1 cvx16_clk_gating_enable + 256: 000000003bc08962 106 FUNC GLOBAL DEFAULT 1 cvx16_bist_start_check + 374: 000000003bc08de2 104 FUNC GLOBAL DEFAULT 1 cvx16_dfi_ca_park_prbs + 281: 000000003bc08a72 104 FUNC GLOBAL DEFAULT 1 cvx16_dll_cal + 156: 000000003bc036f8 104 FUNC LOCAL DEFAULT 1 dwc2_udc_ep0_set_stall.is + 169: 000000003bc062c8 102 FUNC LOCAL DEFAULT 1 LzmaDec_AllocateProbs2.is + 330: 000000003bc03c3c 98 FUNC GLOBAL DEFAULT 1 dwc2_udc_set_halt + 153: 000000003bc03598 98 FUNC LOCAL DEFAULT 1 dwc2_udc_ep_set_stall + 315: 000000003bc00934 96 FUNC GLOBAL DEFAULT 1 init_comm_info + 303: 000000003bc08902 96 FUNC GLOBAL DEFAULT 1 cvx16_bist_wdmlvl_init + 264: 000000003bc086c2 96 FUNC GLOBAL DEFAULT 1 cvx16_bist_wr_sram_init + 238: 000000003bc00a6c 96 FUNC GLOBAL DEFAULT 1 memcpy + 152: 000000003bc0353a 94 FUNC LOCAL DEFAULT 1 dwc2_udc_ep_clear_stall + 134: 000000003bc02bc6 94 FUNC LOCAL DEFAULT 1 kill_all_requests.isra.0 + 327: 000000003bc08ada 92 FUNC GLOBAL DEFAULT 1 cvx16_clk_normal + 60: 000000003bc01ad0 92 FUNC LOCAL DEFAULT 1 getDescAcm + 329: 000000003bc00a12 90 FUNC GLOBAL DEFAULT 1 memset + 114: 000000003bc0b618 88 OBJECT LOCAL DEFAULT 2 g_driver + 336: 000000003bc07f2c 86 FUNC GLOBAL DEFAULT 1 XXH32_reset + 313: 000000003bc02c24 86 FUNC GLOBAL DEFAULT 1 dwc2_disconnect + 131: 000000003bc02952 84 FUNC LOCAL DEFAULT 1 dwc2_dequeue + 205: 000000003bc00aec 82 FUNC GLOBAL DEFAULT 1 putchar_l + 57: 000000003bc0184a 82 FUNC LOCAL DEFAULT 1 get_unicode_string + 194: 000000003bc08400 80 FUNC GLOBAL DEFAULT 1 axi_mon_start_all + 138: 000000003bc0b6a0 80 OBJECT LOCAL DEFAULT 2 dwc2_ep_ops + 112: 000000003bc0b5c0 80 OBJECT LOCAL DEFAULT 2 drv_obj + 110: 000000003bc0b558 80 OBJECT LOCAL DEFAULT 2 descriptorsHs + 109: 000000003bc0b508 80 OBJECT LOCAL DEFAULT 2 descriptorsFs + 59: 000000003bc01b56 80 FUNC LOCAL DEFAULT 1 bulkInCmpl + 217: 000000003bc08674 78 FUNC GLOBAL DEFAULT 1 cvx16_bist_wr_prbs_init + 290: 000000003bc03460 76 FUNC GLOBAL DEFAULT 1 usb_gadget_handle_interru + 233: 000000003bc03b00 76 FUNC GLOBAL DEFAULT 1 dwc2_write_fifo_ep0 + 364: 000000003bc005ec 74 FUNC GLOBAL DEFAULT 1 reset_c906l + 363: 000000003bc00636 74 FUNC GLOBAL DEFAULT 1 setup_dl_flag + 323: 000000003bc0632e 74 FUNC GLOBAL DEFAULT 1 LzmaProps_Decode + 284: 000000003bc08f2e 74 FUNC GLOBAL DEFAULT 1 cvx16_clk_gating_disable + 292: 000000003bc08c9e 72 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 215: 000000003bc03b4c 72 FUNC GLOBAL DEFAULT 1 dwc2_set_address + 145: 000000003bc0ae18 72 OBJECT LOCAL DEFAULT 1 dwc2_udc_ops + 127: 000000003bc0279e 72 FUNC LOCAL DEFAULT 1 pullup + 392: 000000003bc028cc 70 FUNC GLOBAL DEFAULT 1 udc_reinit + 236: 000000003bc02af0 70 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_wait_bit_set + 223: 000000003bc08722 70 FUNC GLOBAL DEFAULT 1 cvx16_bist_rdglvl_init + 382: 000000003bc0391c 68 FUNC GLOBAL DEFAULT 1 dwc2_ep_fifo_write + 371: 000000003bc03abc 68 FUNC GLOBAL DEFAULT 1 dwc2_ep_fifo_read + 228: 000000003bc00834 68 FUNC GLOBAL DEFAULT 1 switch_rtc_mode_2nd_stage + 221: 000000003bc08c5a 68 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 56: 000000003bc01808 66 FUNC LOCAL DEFAULT 1 bind + 42: 000000003bc014b8 66 FUNC LOCAL DEFAULT 1 SzAlloc + 380: 000000003bc08154 64 FUNC GLOBAL DEFAULT 1 XXH32_digest + 356: 000000003bc046c6 64 FUNC GLOBAL DEFAULT 1 usb_polling + 351: 000000003bc03bfc 64 FUNC GLOBAL DEFAULT 1 dwc2_udc_set_nak + 310: 000000003bc00c20 64 FUNC GLOBAL DEFAULT 1 load_image_by_usb + 306: 000000003bc02912 64 FUNC GLOBAL DEFAULT 1 dwc2_done + 242: 000000003bc03bbc 64 FUNC GLOBAL DEFAULT 1 dwc2_ep0_write + 132: 000000003bc02ab4 60 FUNC LOCAL DEFAULT 1 wakeup + 267: 000000003bc08ce6 58 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 126: 000000003bc02764 58 FUNC LOCAL DEFAULT 1 dwc2_free_request + 232: 000000003bc08d20 56 FUNC GLOBAL DEFAULT 1 cvx16_wait_for_dfi_init_c + 128: 000000003bc027e6 56 FUNC LOCAL DEFAULT 1 dwc2_alloc_request + 50: 000000003bc0174a 56 FUNC LOCAL DEFAULT 1 requestMemAlloc + 381: 000000003bc08194 52 FUNC GLOBAL DEFAULT 1 ddr_init + 252: 000000003bc005ba 50 FUNC GLOBAL DEFAULT 1 panic_handler + 230: 000000003bc04706 50 FUNC GLOBAL DEFAULT 1 crc16_ccitt + 296: 000000003bc06378 48 FUNC GLOBAL DEFAULT 1 LzmaDec_AllocateProbs + 287: 000000003bc022a6 48 FUNC GLOBAL DEFAULT 1 get_usb_polling_timeout_v + 285: 000000003bc071de 48 FUNC GLOBAL DEFAULT 1 LZ4F_createDecompressionC + 24: 000000003bc132c8 48 OBJECT LOCAL DEFAULT 4 fw_dynamic_info + 390: 000000003bc0999a 46 FUNC GLOBAL DEFAULT 1 ctrl_init_high_patch + 253: 000000003bc029a6 46 FUNC GLOBAL DEFAULT 1 dwc2_nuke + 246: 000000003bc099c8 46 FUNC GLOBAL DEFAULT 1 ctrl_init_low_patch + 54: 000000003bc017b4 46 FUNC LOCAL DEFAULT 1 disconnect + 293: 000000003bc08d9a 44 FUNC GLOBAL DEFAULT 1 cvx16_INT_ISR_08 + 179: 000000003bc079ea 44 FUNC LOCAL DEFAULT 1 XXH32_avalanche + 304: 000000003bc0018a 42 FUNC GLOBAL DEFAULT 1 udelay + 254: 000000003bc001e2 42 FUNC GLOBAL DEFAULT 1 get_random_from_timer + 61: 000000003bc01b2c 42 FUNC LOCAL DEFAULT 1 reqComplete + 343: 000000003bc015e8 40 FUNC GLOBAL DEFAULT 1 LZ4_calloc + 288: 000000003bc03b94 40 FUNC GLOBAL DEFAULT 1 dwc2_ep0_read + 231: 000000003bc08d72 40 FUNC GLOBAL DEFAULT 1 cvx16_set_dfi_init_comple + 389: 000000003bc08e6c 38 FUNC GLOBAL DEFAULT 1 cvx16_set_dfi_init_start + 358: 000000003bc06fea 38 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_using + 55: 000000003bc017e2 38 FUNC LOCAL DEFAULT 1 unbind + 332: 000000003bc0a170 37 OBJECT GLOBAL DEFAULT 1 hex2ascii_data + 273: 000000003bc00156 36 FUNC GLOBAL DEFAULT 1 flush_dcache_range + 266: 000000003bc001be 36 FUNC GLOBAL DEFAULT 1 get_timer + 241: 000000003bc02a90 36 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_clear_bit + 171: 000000003bc06452 36 FUNC LOCAL DEFAULT 1 LZ4F_readLE32 + 360: 000000003bc093ba 34 FUNC GLOBAL DEFAULT 1 ctrl_init_detect_dram_siz + 244: 000000003bc02a6e 34 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_set_bit + 324: 000000003bc08e4c 32 FUNC GLOBAL DEFAULT 1 cvx16_setting_check + 216: 000000003bc00acc 32 FUNC GLOBAL DEFAULT 1 memmove + 177: 000000003bc0b198 32 OBJECT LOCAL DEFAULT 1 inc32table + 176: 000000003bc0b178 32 OBJECT LOCAL DEFAULT 1 dec64table + 175: 000000003bc0b158 32 OBJECT LOCAL DEFAULT 1 blockSizes.0 + 137: 000000003bc02efa 32 FUNC LOCAL DEFAULT 1 dwc2_ep_disable + 384: 000000003bc0701c 30 FUNC GLOBAL DEFAULT 1 LZ4F_getBlockSize + 367: 000000003bc00be8 30 FUNC GLOBAL DEFAULT 1 usb_id_det + 269: 000000003bc002a4 30 FUNC GLOBAL DEFAULT 1 console_putc + 357: 000000003bc08dc6 28 FUNC GLOBAL DEFAULT 1 cvx16_polling_synp_normal + 335: 000000003bc00b3e 28 FUNC GLOBAL DEFAULT 1 strcmp + 300: 000000003bc062ac 28 FUNC GLOBAL DEFAULT 1 LzmaDec_FreeProbs + 84: 000000003bc13388 28 OBJECT LOCAL DEFAULT 4 serialDesc + 82: 000000003bc13358 28 OBJECT LOCAL DEFAULT 4 productDesc + 52: 000000003bc01784 28 FUNC LOCAL DEFAULT 1 acm_complete_set_line_cod + 305: 000000003bc08d58 26 FUNC GLOBAL DEFAULT 1 cvx16_polling_dfi_init_st + 260: 000000003bc093a0 26 FUNC GLOBAL DEFAULT 1 cvx16_en_rec_vol_mode + 224: 000000003bc09ff0 26 OBJECT GLOBAL DEFAULT 1 build_message + 37: 000000003bc00c06 26 FUNC LOCAL DEFAULT 1 read_time_ms + 207: 000000003bc045d6 24 FUNC GLOBAL DEFAULT 1 dwc2_ep0_kick + 142: 000000003bc0add8 24 OBJECT LOCAL DEFAULT 1 __func__.3 + 393: 000000003bc08b36 22 FUNC GLOBAL DEFAULT 1 cvx16_clk_div2 + 370: 000000003bc0081c 22 FUNC GLOBAL DEFAULT 1 sys_pll_init + 251: 000000003bc08b4c 22 FUNC GLOBAL DEFAULT 1 cvx16_clk_div40 + 209: 000000003bc03906 22 FUNC GLOBAL DEFAULT 1 dwc2_udc_pre_setup + 180: 000000003bc07a16 22 FUNC LOCAL DEFAULT 1 XXH_read32 + 125: 000000003bc0274e 22 FUNC LOCAL DEFAULT 1 dwc2_fifo_status + 143: 000000003bc0adf0 21 OBJECT LOCAL DEFAULT 1 __func__.4 + 344: 000000003bc002c2 20 FUNC GLOBAL DEFAULT 1 console_flush + 247: 000000003bc0601c 20 FUNC GLOBAL DEFAULT 1 LzmaDec_Init + 53: 000000003bc017a0 20 FUNC LOCAL DEFAULT 1 reset + 141: 000000003bc0adc0 19 OBJECT LOCAL DEFAULT 1 __func__.2 + 377: 000000003bc00b5a 18 FUNC GLOBAL DEFAULT 1 strlen + 354: 000000003bc032fe 18 FUNC GLOBAL DEFAULT 1 dwc2_phy_to_log_ep + 139: 000000003bc0ad90 18 OBJECT LOCAL DEFAULT 1 __func__.0 + 111: 000000003bc0b5a8 18 OBJECT LOCAL DEFAULT 2 devHsDesc + 140: 000000003bc0ada8 17 OBJECT LOCAL DEFAULT 1 __func__.1 + 302: 000000003bc0017a 16 FUNC GLOBAL DEFAULT 1 trig_simulation_timer + 272: 000000003bc00294 16 FUNC GLOBAL DEFAULT 1 _uart_putc + 212: 000000003bc13280 16 OBJECT GLOBAL DEFAULT 4 rsp_bufArr + 201: 000000003bc0a010 16 OBJECT GLOBAL DEFAULT 1 version_string + 87: 000000003bc133a8 16 OBJECT LOCAL DEFAULT 4 vendorDesc + 83: 000000003bc13378 16 OBJECT LOCAL DEFAULT 4 serial.2 + 46: 000000003bc0a790 16 OBJECT LOCAL DEFAULT 1 __func__.1 + 318: 000000003bc00680 14 FUNC GLOBAL DEFAULT 1 sys_switch_all_to_pll + 261: 000000003bc0020c 14 FUNC GLOBAL DEFAULT 1 read_count_tick + 349: 000000003bc07010 12 FUNC GLOBAL DEFAULT 1 LZ4F_isError + 328: 000000003bc0229a 12 FUNC GLOBAL DEFAULT 1 usb_vbus_det + 148: 000000003bc0ae80 12 OBJECT LOCAL DEFAULT 1 ep2name + 146: 000000003bc0ae60 12 OBJECT LOCAL DEFAULT 1 ep0name + 147: 000000003bc0ae70 11 OBJECT LOCAL DEFAULT 1 ep1name + 122: 000000003bc0ab90 11 OBJECT LOCAL DEFAULT 1 __func__.4 + 362: 000000003bc0014c 10 FUNC GLOBAL DEFAULT 1 sync_cache + 240: 000000003bc028c2 10 FUNC GLOBAL DEFAULT 1 dwc2_get_ep0_name + 193: 000000003bc001b4 10 FUNC GLOBAL DEFAULT 1 mdelay + 192: 000000003bc083f6 10 FUNC GLOBAL DEFAULT 1 get_ddr_vendor + 149: 000000003bc0ae90 10 OBJECT LOCAL DEFAULT 1 ep3name + 117: 000000003bc0b680 10 OBJECT LOCAL DEFAULT 2 qualifierDesc + 144: 000000003bc0ae08 9 OBJECT LOCAL DEFAULT 1 driver_name + 92: 000000003bc0b478 9 OBJECT LOCAL DEFAULT 2 acm_data_interface_desc + 91: 000000003bc0b468 9 OBJECT LOCAL DEFAULT 2 acm_control_interface_des + 88: 000000003bc0b448 9 OBJECT LOCAL DEFAULT 2 ConfDesc + 388: 000000003bc133c0 8 OBJECT GLOBAL DEFAULT 4 the_controller + 386: 000000003bc13308 8 OBJECT GLOBAL DEFAULT 4 acm + 365: 000000003bc133c8 8 OBJECT GLOBAL DEFAULT 4 reg_set + 326: 000000003bc133d0 8 OBJECT GLOBAL DEFAULT 4 reg_span + 245: 000000003bc132c0 8 OBJECT GLOBAL DEFAULT 4 setup_bufArr + 214: 000000003bc133b8 8 OBJECT GLOBAL DEFAULT 4 reg + 213: 000000003bc133d8 8 OBJECT GLOBAL DEFAULT 4 reg_step + 197: 000000003bc0b440 8 OBJECT GLOBAL DEFAULT 2 time_records + 119: 000000003bc0b698 8 OBJECT LOCAL DEFAULT 2 setup_buf + 118: 000000003bc0b690 8 OBJECT LOCAL DEFAULT 2 rsp_buf + 115: 000000003bc0b670 8 OBJECT LOCAL DEFAULT 2 handler + 113: 000000003bc0b610 8 OBJECT LOCAL DEFAULT 2 ep0BuffAlloc + 108: 000000003bc0b500 8 OBJECT LOCAL DEFAULT 2 cmdBufAlloc + 107: 000000003bc0b4f8 8 OBJECT LOCAL DEFAULT 2 cb2_buf + 106: 000000003bc0b4f0 8 OBJECT LOCAL DEFAULT 2 cb1_buf + 105: 000000003bc0b4e8 8 OBJECT LOCAL DEFAULT 2 cb0_buf + 103: 000000003bc0b4d8 8 OBJECT LOCAL DEFAULT 2 bulkBufAlloc + 89: 000000003bc0b458 8 OBJECT LOCAL DEFAULT 2 acm_buf + 75: 000000003bc13350 8 OBJECT LOCAL DEFAULT 4 fip_buf + 74: 000000003bc13348 8 OBJECT LOCAL DEFAULT 4 epOut + 73: 000000003bc13340 8 OBJECT LOCAL DEFAULT 4 epIn + 72: 000000003bc13338 8 OBJECT LOCAL DEFAULT 4 ep0Req + 71: 000000003bc13330 8 OBJECT LOCAL DEFAULT 4 ep0Buff + 68: 000000003bc13328 8 OBJECT LOCAL DEFAULT 4 cmdBuf + 67: 000000003bc13320 8 OBJECT LOCAL DEFAULT 4 bulkOutReq + 66: 000000003bc13318 8 OBJECT LOCAL DEFAULT 4 bulkInReq + 65: 000000003bc13310 8 OBJECT LOCAL DEFAULT 4 bulkBuf + 45: 000000003bc0a788 8 OBJECT LOCAL DEFAULT 1 __func__.0 + 44: 000000003bc13300 8 OBJECT LOCAL DEFAULT 4 comp_alloc_size + 43: 000000003bc132f8 8 OBJECT LOCAL DEFAULT 4 comp_alloc_buf + 121: 000000003bc0ab88 7 OBJECT LOCAL DEFAULT 1 __func__.1 + 104: 000000003bc0b4e0 7 OBJECT LOCAL DEFAULT 2 capabilityExtDesc + 100: 000000003bc0b4c0 7 OBJECT LOCAL DEFAULT 2 acm_hs_out_desc + 99: 000000003bc0b4b8 7 OBJECT LOCAL DEFAULT 2 acm_hs_notify_desc + 98: 000000003bc0b4b0 7 OBJECT LOCAL DEFAULT 2 acm_hs_in_desc + 96: 000000003bc0b4a0 7 OBJECT LOCAL DEFAULT 2 acm_fs_out_desc + 95: 000000003bc0b498 7 OBJECT LOCAL DEFAULT 2 acm_fs_notify_desc + 94: 000000003bc0b490 7 OBJECT LOCAL DEFAULT 2 acm_fs_in_desc + 359: 000000003bc015e2 6 FUNC GLOBAL DEFAULT 1 LZ4_malloc + 286: 000000003bc0173e 6 FUNC GLOBAL DEFAULT 1 DWC2_UncachedRead32 + 195: 000000003bc0215c 6 FUNC GLOBAL DEFAULT 1 AcmIsr + 123: 000000003bc0aba0 6 OBJECT LOCAL DEFAULT 1 __func__.5 + 120: 000000003bc0ab80 5 OBJECT LOCAL DEFAULT 1 __func__.0 + 102: 000000003bc0b4d0 5 OBJECT LOCAL DEFAULT 2 bosDesc + 101: 000000003bc0b4c8 5 OBJECT LOCAL DEFAULT 2 acm_union_desc + 97: 000000003bc0b4a8 5 OBJECT LOCAL DEFAULT 2 acm_header_desc + 90: 000000003bc0b460 5 OBJECT LOCAL DEFAULT 2 acm_call_mgmt_descriptor + 387: 000000003bc01744 4 FUNC GLOBAL DEFAULT 1 DWC2_UncachedWrite32 + 372: 000000003bc0b6fc 4 OBJECT GLOBAL DEFAULT 2 ddr_data_rate + 316: 000000003bc133f4 4 OBJECT GLOBAL DEFAULT 4 dev_freq + 270: 000000003bc133f0 4 OBJECT GLOBAL DEFAULT 4 rddata + 257: 000000003bc133fc 4 OBJECT GLOBAL DEFAULT 4 mod_freq + 203: 000000003bc00994 4 FUNC GLOBAL DEFAULT 1 dec_verify_image + 199: 000000003bc133f8 4 OBJECT GLOBAL DEFAULT 4 freq_in + 196: 000000003bc13400 4 OBJECT GLOBAL DEFAULT 4 tar_freq + 161: 000000003bc0b6f4 4 OBJECT LOCAL DEFAULT 2 ep_fifo_size + 160: 000000003bc0b6f0 4 OBJECT LOCAL DEFAULT 2 ep0_fifo_size + 116: 000000003bc0b678 4 OBJECT LOCAL DEFAULT 2 languageDesc + 93: 000000003bc0b488 4 OBJECT LOCAL DEFAULT 2 acm_descriptor + 86: 000000003bc133ec 4 OBJECT LOCAL DEFAULT 4 ts + 85: 000000003bc133e8 4 OBJECT LOCAL DEFAULT 4 transfer_size + 77: 000000003bc133e4 4 OBJECT LOCAL DEFAULT 4 fip_tx_size + 76: 000000003bc133e0 4 OBJECT LOCAL DEFAULT 4 fip_tx_offset + 369: 000000003bc0b6f8 2 OBJECT GLOBAL DEFAULT 2 cv_usb_vid + 276: 000000003bc00832 2 FUNC GLOBAL DEFAULT 1 switch_rtc_mode_1st_stage + 255: 000000003bc0979a 2 FUNC GLOBAL DEFAULT 1 cvx16_dram_cap_check + 243: 000000003bc028c0 2 FUNC GLOBAL DEFAULT 1 dwc2_log_write + 235: 000000003bc08e4a 2 FUNC GLOBAL DEFAULT 1 cvx16_wrlvl_req + 210: 000000003bc00292 2 FUNC GLOBAL DEFAULT 1 jump_to_loader_2nd + 206: 000000003bc01610 2 FUNC GLOBAL DEFAULT 1 LZ4_free + 130: 000000003bc028be 2 FUNC LOCAL DEFAULT 1 dwc2_fifo_flush + 63: 000000003bc01fe8 2 FUNC LOCAL DEFAULT 1 suspend + 51: 000000003bc01782 2 FUNC LOCAL DEFAULT 1 requestMemFree + 49: 000000003bc01748 2 FUNC LOCAL DEFAULT 1 resume + 41: 000000003bc014b6 2 FUNC LOCAL DEFAULT 1 SzFree + 385: 000000003bc1340c 1 OBJECT GLOBAL DEFAULT 4 ddr_capacity + 378: 000000003bc1340d 1 OBJECT GLOBAL DEFAULT 4 ddr_type + 308: 000000003bc1340e 1 OBJECT GLOBAL DEFAULT 4 ddr_vendor + 249: 000000003bc1340f 1 OBJECT GLOBAL DEFAULT 4 pkg + 220: 000000003bc13405 1 OBJECT GLOBAL DEFAULT 4 acm_configValue + 81: 000000003bc1340b 1 OBJECT LOCAL DEFAULT 4 mem_alloc_cnt + 80: 000000003bc1340a 1 OBJECT LOCAL DEFAULT 4 is_serial_patched.3 + 79: 000000003bc13409 1 OBJECT LOCAL DEFAULT 4 flagReboot + 78: 000000003bc13408 1 OBJECT LOCAL DEFAULT 4 flagEnterDL + 70: 000000003bc13407 1 OBJECT LOCAL DEFAULT 4 configValue + 69: 000000003bc13406 1 OBJECT LOCAL DEFAULT 4 configBreak + 64: 000000003bc13404 1 OBJECT LOCAL DEFAULT 4 ack_idx.6 + 368: 000000003bc0b700 0 NOTYPE GLOBAL DEFAULT 3 __STACKS_START__ + 361: 00000000044000c0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_get_number_of_r + 352: 000000003bc00000 0 NOTYPE GLOBAL DEFAULT 1 __RO_START__ + 350: 000000003bc0d800 0 NOTYPE GLOBAL DEFAULT 4 __BSS_START__ + 348: 0000000004400060 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_load_image + 346: 000000003bc0b434 0 NOTYPE GLOBAL DEFAULT 1 __RO_END__ + 322: 0000000004400040 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_set_boot_src + 319: 000000003bc13410 0 NOTYPE GLOBAL DEFAULT 4 __BSS_END__ + 311: 000000003bc00000 0 NOTYPE GLOBAL DEFAULT 1 bl2_entrypoint + 309: 00000000044000a0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_image_crc + 299: 000000003bc0b700 0 NOTYPE GLOBAL DEFAULT 2 __DATA_END__ + 291: 000000003bc13410 0 NOTYPE GLOBAL DEFAULT 4 __BL2_END__ + 265: 0000000000005c10 0 NOTYPE GLOBAL DEFAULT ABS __BSS_SIZE__ + 259: 00000000044000e0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_verify_rsa + 250: 000000003bc0d700 0 NOTYPE GLOBAL DEFAULT 3 __STACKS_END__ + 226: 000000003bc0b440 0 NOTYPE GLOBAL DEFAULT 2 __DATA_START__ + 208: 0000000004400020 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_get_boot_src + 202: 0000000004400080 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_flash_init + 198: 0000000004400100 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_cryptodma_aes_d + 191: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 190: 0000000000000000 0 FILE LOCAL DEFAULT ABS phy_init.c + 189: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddrc_init.c + 188: 0000000000000000 0 FILE LOCAL DEFAULT ABS cvx16_dram_cap_check.c + 187: 0000000000000000 0 FILE LOCAL DEFAULT ABS cvx16_pinmux.c + 186: 0000000000000000 0 FILE LOCAL DEFAULT ABS phy_pll_init.c + 185: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_sys.c + 184: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_sys_bring_up.c + 183: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_pkg_info.c + 182: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr.c + 178: 0000000000000000 0 FILE LOCAL DEFAULT ABS xxhash.c + 170: 0000000000000000 0 FILE LOCAL DEFAULT ABS lz4_all.c + 165: 0000000000000000 0 FILE LOCAL DEFAULT ABS LzmaDec.c + 163: 0000000000000000 0 FILE LOCAL DEFAULT ABS crc16.c + 162: 0000000000000000 0 FILE LOCAL DEFAULT ABS cv_usb.c + 150: 0000000000000000 0 FILE LOCAL DEFAULT ABS dwc2_udc_otg_xfer_dma.c + 124: 0000000000000000 0 FILE LOCAL DEFAULT ABS dwc2_udc_otg.c + 48: 0000000000000000 0 FILE LOCAL DEFAULT ABS usb_tty.c + 47: 0000000000000000 0 FILE LOCAL DEFAULT ABS cps_cvi.c + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS decompress.c + 36: 0000000000000000 0 FILE LOCAL DEFAULT ABS bl2_main.c + 35: 0000000000000000 0 FILE LOCAL DEFAULT ABS platform_device.c + 34: 0000000000000000 0 FILE LOCAL DEFAULT ABS strlen.c + 33: 0000000000000000 0 FILE LOCAL DEFAULT ABS strcmp.c + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS putchar.c + 31: 0000000000000000 0 FILE LOCAL DEFAULT ABS mem.c + 30: 0000000000000000 0 FILE LOCAL DEFAULT ABS misc.c + 29: 0000000000000000 0 FILE LOCAL DEFAULT ABS security.c + 28: 0000000000000000 0 FILE LOCAL DEFAULT ABS platform.c + 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS tf_printf.c + 25: 0000000000000000 0 FILE LOCAL DEFAULT ABS uart_dw.c + 23: 0000000000000000 0 FILE LOCAL DEFAULT ABS bl2_helper.c + 22: 0000000000000000 0 FILE LOCAL DEFAULT ABS delay_timer.c + 21: 0000000000000000 0 FILE LOCAL DEFAULT ABS cache.c + 20: 0000000000000000 0 FILE LOCAL DEFAULT ABS cpu_helper.c + 19: 000000003bc00144 0 NOTYPE LOCAL DEFAULT 1 die + 18: 000000003bc0012c 0 NOTYPE LOCAL DEFAULT 1 bss_clear + 17: 000000003bc00144 0 NOTYPE LOCAL DEFAULT 1 trap_vector + 16: 000000003bc00020 0 NOTYPE LOCAL DEFAULT 1 bl2_entrypoint_real + 15: 0000000000000000 0 FILE LOCAL DEFAULT ABS /root/.jenkins/workspace/ + 14: 0000000000000000 0 SECTION LOCAL DEFAULT 14 + 13: 0000000000000000 0 SECTION LOCAL DEFAULT 13 + 12: 0000000000000000 0 SECTION LOCAL DEFAULT 12 + 11: 0000000000000000 0 SECTION LOCAL DEFAULT 11 + 10: 0000000000000000 0 SECTION LOCAL DEFAULT 10 + 9: 0000000000000000 0 SECTION LOCAL DEFAULT 9 + 8: 0000000000000000 0 SECTION LOCAL DEFAULT 8 + 7: 0000000000000000 0 SECTION LOCAL DEFAULT 7 + 6: 0000000000000000 0 SECTION LOCAL DEFAULT 6 + 5: 0000000000000000 0 SECTION LOCAL DEFAULT 5 + 4: 000000003bc0d800 0 SECTION LOCAL DEFAULT 4 + 3: 000000003bc0b700 0 SECTION LOCAL DEFAULT 3 + 2: 000000003bc0b434 0 SECTION LOCAL DEFAULT 2 + 1: 000000003bc00000 0 SECTION LOCAL DEFAULT 1 + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND +Symbol table '.symtab' contains 397 entries: + Num: Value Size Type Bind Vis Ndx Name + diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_entrypoint.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_entrypoint.o new file mode 100644 index 000000000..5b15c11ca Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_entrypoint.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o new file mode 100644 index 000000000..a2a2d8302 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_helper.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o new file mode 100644 index 000000000..9e65bb4e7 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/bl2_main.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o new file mode 100644 index 000000000..e39946040 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/build_message.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o new file mode 100644 index 000000000..7a063d536 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cache.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o new file mode 100644 index 000000000..7c48d860c Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cps_cvi.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o new file mode 100644 index 000000000..ae5cba654 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cpu_helper.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o new file mode 100644 index 000000000..c8f34d3a3 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/crc16.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o new file mode 100644 index 000000000..a3a389679 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cv_usb.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o new file mode 100644 index 000000000..469de3283 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_dram_cap_check.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o new file mode 100644 index 000000000..df60916d2 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/cvx16_pinmux.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o new file mode 100644 index 000000000..cd9478604 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o new file mode 100644 index 000000000..72822eb6f Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_patch_regs.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o new file mode 100644 index 000000000..0eb483031 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_pkg_info.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o new file mode 100644 index 000000000..33a08bcbd Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o new file mode 100644 index 000000000..2a08130a4 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddr_sys_bring_up.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o new file mode 100644 index 000000000..92fda5ec5 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/ddrc_init.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o new file mode 100644 index 000000000..bacc1f935 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/decompress.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o new file mode 100644 index 000000000..419cd6166 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/delay_timer.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o new file mode 100644 index 000000000..3c618b0bb Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o new file mode 100644 index 000000000..ec4fd4e8a Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o new file mode 100644 index 000000000..7f34e7cf0 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/lz4_all.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o new file mode 100644 index 000000000..08e4f90b6 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/mem.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o new file mode 100644 index 000000000..030743c93 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o new file mode 100644 index 000000000..87e4f7b57 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/misc_helpers.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o new file mode 100644 index 000000000..9e9abcfe4 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_init.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o new file mode 100644 index 000000000..f8b08c640 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/phy_pll_init.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o new file mode 100644 index 000000000..7bd644dcb Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o new file mode 100644 index 000000000..5caf2dc4c Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/platform_device.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o new file mode 100644 index 000000000..d79bbff42 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/putchar.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o new file mode 100644 index 000000000..0500268f5 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/security.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o new file mode 100644 index 000000000..dd8f41302 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strchr.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o new file mode 100644 index 000000000..1660fd445 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strcmp.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o new file mode 100644 index 000000000..260f95a40 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strlen.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o new file mode 100644 index 000000000..95435309e Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strncmp.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o new file mode 100644 index 000000000..d247c14da Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/strnlen.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o new file mode 100644 index 000000000..59a9ba6e6 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/tf_printf.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o new file mode 100644 index 000000000..3cf86e7e1 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/uart_dw.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o new file mode 100644 index 000000000..a948308b3 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/usb_tty.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o new file mode 100644 index 000000000..8f8b0b7b7 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/bl2/xxhash.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros.bin b/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros.bin new file mode 100755 index 000000000..c9902e4a9 --- /dev/null +++ b/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros.bin @@ -0,0 +1 @@ +ï¾­Þ \ No newline at end of file diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros.env b/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros.env new file mode 100644 index 000000000..cff9e1110 --- /dev/null +++ b/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros.env @@ -0,0 +1,2 @@ +MONITOR_RUNADDR=0x0000000080000000 +BLCP_2ND_RUNADDR=0x0000000083f40000 diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/blmacros.dis b/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/blmacros.dis new file mode 100644 index 000000000..187d20fbf --- /dev/null +++ b/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/blmacros.dis @@ -0,0 +1,24 @@ + +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/blmacros.elf: file format elf64-littleriscv +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/blmacros.elf +architecture: riscv:rv64, flags 0x00000112: +EXEC_P, HAS_SYMS, D_PAGED +start address 0x0000000000000000 + +Program Header: + LOAD off 0x0000000000001000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**12 + filesz 0x0000000000000004 memsz 0x0000000000000004 flags r-- + STACK off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**4 + filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw- + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000004 0000000000000000 0000000000000000 00001000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA +SYMBOL TABLE: +0000000000000000 l d .text 0000000000000000 .text +0000000083f40000 g *ABS* 0000000000000000 DEF_BLCP_2ND_RUNADDR +0000000080000000 g *ABS* 0000000000000000 DEF_MONITOR_RUNADDR +0000000080000000 g *ABS* 0000000000000000 DEF_DRAM_BASE + + diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/blmacros.elf b/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/blmacros.elf new file mode 100755 index 000000000..e5027bece Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/blmacros.elf differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/blmacros.ld b/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/blmacros.ld new file mode 100644 index 000000000..44cdce7f4 --- /dev/null +++ b/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/blmacros.ld @@ -0,0 +1,10 @@ +SECTIONS +{ + .text : { + LONG(0xDEADBEEF); + *(*) + } + DEF_DRAM_BASE = 0x80000000; + DEF_MONITOR_RUNADDR = 0x80000000; + DEF_BLCP_2ND_RUNADDR = 0x83f40000; +} diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/blmacros.map b/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/blmacros.map new file mode 100644 index 000000000..86f96be17 --- /dev/null +++ b/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/blmacros.map @@ -0,0 +1,39 @@ + +Discarded input sections + + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/build_message.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/build_message.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/build_message.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/build_message.o + .rodata.build_message + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/build_message.o + .rodata.version_string + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/build_message.o + .debug_info 0x0000000000000000 0x89 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/build_message.o + .debug_abbrev 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/build_message.o + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/build_message.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/build_message.o + .debug_macro 0x0000000000000000 0x86e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/build_message.o + .debug_line 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/build_message.o + .debug_str 0x0000000000000000 0x29a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/build_message.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/build_message.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/build_message.o + +Memory Configuration + +Name Origin Length Attributes +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + +.text 0x0000000000000000 0x4 + 0x0000000000000000 0x4 LONG 0xdeadbeef + *(*) + 0x0000000080000000 DEF_DRAM_BASE = 0x80000000 + 0x0000000080000000 DEF_MONITOR_RUNADDR = 0x80000000 + 0x0000000083f40000 DEF_BLCP_2ND_RUNADDR = 0x83f40000 +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/build_message.o +OUTPUT(/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/blmacros.elf elf64-littleriscv) diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/blmacros.sym b/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/blmacros.sym new file mode 100644 index 000000000..9cfdf8696 --- /dev/null +++ b/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/blmacros.sym @@ -0,0 +1,8 @@ + 4: 0000000080000000 0 NOTYPE GLOBAL DEFAULT ABS DEF_DRAM_BASE + 3: 0000000080000000 0 NOTYPE GLOBAL DEFAULT ABS DEF_MONITOR_RUNADDR + 2: 0000000083f40000 0 NOTYPE GLOBAL DEFAULT ABS DEF_BLCP_2ND_RUNADDR + 1: 0000000000000000 0 SECTION LOCAL DEFAULT 1 + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND +Symbol table '.symtab' contains 5 entries: + Num: Value Size Type Bind Vis Ndx Name + diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/build_message.o b/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/build_message.o new file mode 100644 index 000000000..e39946040 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/blmacros/build_message.o differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/chip_conf.bin b/fsbl/build/cv180zb_wdmb_0008a_spinor/chip_conf.bin new file mode 100644 index 000000000..d2dabd686 Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/chip_conf.bin differ diff --git a/fsbl/build/cv180zb_wdmb_0008a_spinor/fip.bin b/fsbl/build/cv180zb_wdmb_0008a_spinor/fip.bin new file mode 100644 index 000000000..85b4df6dd Binary files /dev/null and b/fsbl/build/cv180zb_wdmb_0008a_spinor/fip.bin differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2.bin b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2.bin new file mode 100755 index 000000000..c3d906970 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2.bin differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o new file mode 100644 index 000000000..13fbcbed1 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o new file mode 100644 index 000000000..3714b5e4c Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2.dis b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2.dis new file mode 100644 index 000000000..7967b36b4 --- /dev/null +++ b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2.dis @@ -0,0 +1,14588 @@ + +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2.elf: file format elf64-littleriscv +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2.elf +architecture: riscv:rv64, flags 0x00000112: +EXEC_P, HAS_SYMS, D_PAGED +start address 0x000000003bc00000 + +Program Header: + LOAD off 0x0000000000001000 vaddr 0x000000003bc00000 paddr 0x000000003bc00000 align 2**12 + filesz 0x000000000000b700 memsz 0x0000000000013410 flags rwx + STACK off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**4 + filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw- + +Sections: +Idx Name Size VMA LMA File off Algn + 0 ro 0000b434 000000003bc00000 000000003bc00000 00001000 2**3 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .data 000002cc 000000003bc0b434 000000003bc0b434 0000c434 2**3 + CONTENTS, ALLOC, LOAD, DATA + 2 stacks 00002000 000000003bc0b700 000000003bc0b700 0000c700 2**0 + ALLOC + 3 .bss 00005c10 000000003bc0d800 000000003bc0d800 0000c700 2**9 + ALLOC + 4 .debug_info 00068732 0000000000000000 0000000000000000 0000c700 2**0 + CONTENTS, READONLY, DEBUGGING + 5 .debug_abbrev 00004de5 0000000000000000 0000000000000000 00074e32 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_aranges 00001e80 0000000000000000 0000000000000000 00079c20 2**4 + CONTENTS, READONLY, DEBUGGING + 7 .debug_macro 00009b13 0000000000000000 0000000000000000 0007baa0 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_line 00075d63 0000000000000000 0000000000000000 000855b3 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_str 0002394c 0000000000000000 0000000000000000 000fb316 2**0 + CONTENTS, READONLY, DEBUGGING + 10 .comment 0000001d 0000000000000000 0000000000000000 0011ec62 2**0 + CONTENTS, READONLY + 11 .debug_ranges 0002f790 0000000000000000 0000000000000000 0011ec7f 2**0 + CONTENTS, READONLY, DEBUGGING + 12 .debug_frame 000047b8 0000000000000000 0000000000000000 0014e410 2**3 + CONTENTS, READONLY, DEBUGGING + 13 .debug_loc 000c12a0 0000000000000000 0000000000000000 00152bc8 2**0 + CONTENTS, READONLY, DEBUGGING +SYMBOL TABLE: +000000003bc00000 l d ro 0000000000000000 ro +000000003bc0b434 l d .data 0000000000000000 .data +000000003bc0b700 l d stacks 0000000000000000 stacks +000000003bc0d800 l d .bss 0000000000000000 .bss +0000000000000000 l d .debug_info 0000000000000000 .debug_info +0000000000000000 l d .debug_abbrev 0000000000000000 .debug_abbrev +0000000000000000 l d .debug_aranges 0000000000000000 .debug_aranges +0000000000000000 l d .debug_macro 0000000000000000 .debug_macro +0000000000000000 l d .debug_line 0000000000000000 .debug_line +0000000000000000 l d .debug_str 0000000000000000 .debug_str +0000000000000000 l d .comment 0000000000000000 .comment +0000000000000000 l d .debug_ranges 0000000000000000 .debug_ranges +0000000000000000 l d .debug_frame 0000000000000000 .debug_frame +0000000000000000 l d .debug_loc 0000000000000000 .debug_loc +0000000000000000 l df *ABS* 0000000000000000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_entrypoint.o +000000003bc00020 l ro 0000000000000000 bl2_entrypoint_real +000000003bc00144 l ro 0000000000000000 trap_vector +000000003bc0012c l ro 0000000000000000 bss_clear +000000003bc00144 l ro 0000000000000000 die +0000000000000000 l df *ABS* 0000000000000000 cpu_helper.c +0000000000000000 l df *ABS* 0000000000000000 cache.c +0000000000000000 l df *ABS* 0000000000000000 delay_timer.c +0000000000000000 l df *ABS* 0000000000000000 bl2_helper.c +000000003bc132c8 l O .bss 0000000000000030 fw_dynamic_info +0000000000000000 l df *ABS* 0000000000000000 uart_dw.c +0000000000000000 l df *ABS* 0000000000000000 tf_printf.c +000000003bc002d6 l F ro 0000000000000082 unsigned_num_print +0000000000000000 l df *ABS* 0000000000000000 platform.c +0000000000000000 l df *ABS* 0000000000000000 security.c +0000000000000000 l df *ABS* 0000000000000000 misc.c +0000000000000000 l df *ABS* 0000000000000000 mem.c +0000000000000000 l df *ABS* 0000000000000000 putchar.c +0000000000000000 l df *ABS* 0000000000000000 strcmp.c +0000000000000000 l df *ABS* 0000000000000000 strlen.c +0000000000000000 l df *ABS* 0000000000000000 platform_device.c +0000000000000000 l df *ABS* 0000000000000000 bl2_main.c +000000003bc00c06 l F ro 000000000000001a read_time_ms +000000003bc0d800 l O .bss 0000000000001000 fip_param2 +000000003bc0e800 l O .bss 0000000000004000 sram_union_buf +0000000000000000 l df *ABS* 0000000000000000 decompress.c +000000003bc014b6 l F ro 0000000000000002 SzFree +000000003bc014b8 l F ro 0000000000000042 SzAlloc +000000003bc132f8 l O .bss 0000000000000008 comp_alloc_buf +000000003bc13300 l O .bss 0000000000000008 comp_alloc_size +000000003bc0a788 l O ro 0000000000000008 __func__.0 +000000003bc0a790 l O ro 0000000000000010 __func__.1 +0000000000000000 l df *ABS* 0000000000000000 cps_cvi.c +0000000000000000 l df *ABS* 0000000000000000 usb_tty.c +000000003bc01748 l F ro 0000000000000002 resume +000000003bc0174a l F ro 0000000000000038 requestMemAlloc +000000003bc01782 l F ro 0000000000000002 requestMemFree +000000003bc01784 l F ro 000000000000001c acm_complete_set_line_coding +000000003bc017a0 l F ro 0000000000000014 reset +000000003bc017b4 l F ro 000000000000002e disconnect +000000003bc017e2 l F ro 0000000000000026 unbind +000000003bc01808 l F ro 0000000000000042 bind +000000003bc0184a l F ro 0000000000000052 get_unicode_string +000000003bc0189c l F ro 0000000000000234 bulkOutCmpl +000000003bc01b56 l F ro 0000000000000050 bulkInCmpl +000000003bc01ad0 l F ro 000000000000005c getDescAcm +000000003bc01b2c l F ro 000000000000002a reqComplete +000000003bc01ba6 l F ro 0000000000000442 setup +000000003bc01fe8 l F ro 0000000000000002 suspend +000000003bc13404 l O .bss 0000000000000001 ack_idx.6 +000000003bc13310 l O .bss 0000000000000008 bulkBuf +000000003bc13318 l O .bss 0000000000000008 bulkInReq +000000003bc13320 l O .bss 0000000000000008 bulkOutReq +000000003bc13328 l O .bss 0000000000000008 cmdBuf +000000003bc13406 l O .bss 0000000000000001 configBreak +000000003bc13407 l O .bss 0000000000000001 configValue +000000003bc13330 l O .bss 0000000000000008 ep0Buff +000000003bc13338 l O .bss 0000000000000008 ep0Req +000000003bc13340 l O .bss 0000000000000008 epIn +000000003bc13348 l O .bss 0000000000000008 epOut +000000003bc13350 l O .bss 0000000000000008 fip_buf +000000003bc133e0 l O .bss 0000000000000004 fip_tx_offset +000000003bc133e4 l O .bss 0000000000000004 fip_tx_size +000000003bc13408 l O .bss 0000000000000001 flagEnterDL +000000003bc13409 l O .bss 0000000000000001 flagReboot +000000003bc1340a l O .bss 0000000000000001 is_serial_patched.3 +000000003bc1340b l O .bss 0000000000000001 mem_alloc_cnt +000000003bc13358 l O .bss 000000000000001c productDesc +000000003bc13378 l O .bss 0000000000000010 serial.2 +000000003bc13388 l O .bss 000000000000001c serialDesc +000000003bc133e8 l O .bss 0000000000000004 transfer_size +000000003bc133ec l O .bss 0000000000000004 ts +000000003bc133a8 l O .bss 0000000000000010 vendorDesc +000000003bc0b448 l O .data 0000000000000009 ConfDesc +000000003bc0b458 l O .data 0000000000000008 acm_buf +000000003bc0b460 l O .data 0000000000000005 acm_call_mgmt_descriptor +000000003bc0b468 l O .data 0000000000000009 acm_control_interface_desc +000000003bc0b478 l O .data 0000000000000009 acm_data_interface_desc +000000003bc0b488 l O .data 0000000000000004 acm_descriptor +000000003bc0b490 l O .data 0000000000000007 acm_fs_in_desc +000000003bc0b498 l O .data 0000000000000007 acm_fs_notify_desc +000000003bc0b4a0 l O .data 0000000000000007 acm_fs_out_desc +000000003bc0b4a8 l O .data 0000000000000005 acm_header_desc +000000003bc0b4b0 l O .data 0000000000000007 acm_hs_in_desc +000000003bc0b4b8 l O .data 0000000000000007 acm_hs_notify_desc +000000003bc0b4c0 l O .data 0000000000000007 acm_hs_out_desc +000000003bc0b4c8 l O .data 0000000000000005 acm_union_desc +000000003bc0b4d0 l O .data 0000000000000005 bosDesc +000000003bc0b4d8 l O .data 0000000000000008 bulkBufAlloc +000000003bc0b4e0 l O .data 0000000000000007 capabilityExtDesc +000000003bc0b4e8 l O .data 0000000000000008 cb0_buf +000000003bc0b4f0 l O .data 0000000000000008 cb1_buf +000000003bc0b4f8 l O .data 0000000000000008 cb2_buf +000000003bc0b500 l O .data 0000000000000008 cmdBufAlloc +000000003bc0b508 l O .data 0000000000000050 descriptorsFs +000000003bc0b558 l O .data 0000000000000050 descriptorsHs +000000003bc0b5a8 l O .data 0000000000000012 devHsDesc +000000003bc0b5c0 l O .data 0000000000000050 drv_obj +000000003bc0b610 l O .data 0000000000000008 ep0BuffAlloc +000000003bc0b618 l O .data 0000000000000058 g_driver +000000003bc0b670 l O .data 0000000000000008 handler +000000003bc0b678 l O .data 0000000000000004 languageDesc +000000003bc0b680 l O .data 000000000000000a qualifierDesc +000000003bc0b690 l O .data 0000000000000008 rsp_buf +000000003bc0b698 l O .data 0000000000000008 setup_buf +000000003bc0ab80 l O ro 0000000000000005 __func__.0 +000000003bc0ab88 l O ro 0000000000000007 __func__.1 +000000003bc0ab90 l O ro 000000000000000b __func__.4 +000000003bc0aba0 l O ro 0000000000000006 __func__.5 +0000000000000000 l df *ABS* 0000000000000000 dwc2_udc_otg.c +000000003bc0274e l F ro 0000000000000016 dwc2_fifo_status +000000003bc02764 l F ro 000000000000003a dwc2_free_request +000000003bc0279e l F ro 0000000000000048 pullup +000000003bc027e6 l F ro 0000000000000038 dwc2_alloc_request +000000003bc0281e l F ro 00000000000000a0 dwc2_ep_enable +000000003bc028be l F ro 0000000000000002 dwc2_fifo_flush +000000003bc02952 l F ro 0000000000000054 dwc2_dequeue +000000003bc02ab4 l F ro 000000000000003c wakeup +000000003bc02b36 l F ro 0000000000000090 dwc2_hsotg_txfifo_flush.constprop.0 +000000003bc02bc6 l F ro 000000000000005e kill_all_requests.isra.0 +000000003bc02c7a l F ro 00000000000000da dwc2_hsotg_init_fifo.constprop.0 +000000003bc02d54 l F ro 00000000000001a6 _dwc2_ep_disable.isra.0 +000000003bc02efa l F ro 0000000000000020 dwc2_ep_disable +000000003bc0b6a0 l O .data 0000000000000050 dwc2_ep_ops +000000003bc0ad90 l O ro 0000000000000012 __func__.0 +000000003bc0ada8 l O ro 0000000000000011 __func__.1 +000000003bc0adc0 l O ro 0000000000000013 __func__.2 +000000003bc0add8 l O ro 0000000000000018 __func__.3 +000000003bc0adf0 l O ro 0000000000000015 __func__.4 +000000003bc0ae08 l O ro 0000000000000009 driver_name +000000003bc0ae18 l O ro 0000000000000048 dwc2_udc_ops +000000003bc0ae60 l O ro 000000000000000c ep0name +000000003bc0ae70 l O ro 000000000000000b ep1name +000000003bc0ae80 l O ro 000000000000000c ep2name +000000003bc0ae90 l O ro 000000000000000a ep3name +0000000000000000 l df *ABS* 0000000000000000 dwc2_udc_otg_xfer_dma.c +000000003bc034ac l F ro 000000000000008e set_max_pktsize +000000003bc0353a l F ro 000000000000005e dwc2_udc_ep_clear_stall +000000003bc03598 l F ro 0000000000000062 dwc2_udc_ep_set_stall +000000003bc035fa l F ro 0000000000000080 dwc2_ep0_complete_out +000000003bc0367a l F ro 000000000000007e dwc2_udc_ep0_zlp +000000003bc036f8 l F ro 0000000000000068 dwc2_udc_ep0_set_stall.isra.0 +000000003bc03760 l F ro 00000000000000aa setdma_rx.isra.0 +000000003bc0380a l F ro 00000000000000fc complete_rx +000000003bc03960 l F ro 000000000000015c setdma_tx +000000003bc0b6f0 l O .data 0000000000000004 ep0_fifo_size +000000003bc0b6f4 l O .data 0000000000000004 ep_fifo_size +0000000000000000 l df *ABS* 0000000000000000 cv_usb.c +0000000000000000 l df *ABS* 0000000000000000 crc16.c +000000003bc0af18 l O ro 0000000000000200 crc16_tab +0000000000000000 l df *ABS* 0000000000000000 LzmaDec.c +000000003bc04738 l F ro 0000000000000072 LzmaDec_WriteRem +000000003bc047aa l F ro 000000000000138a LzmaDec_DecodeReal2 +000000003bc05b34 l F ro 00000000000004e8 LzmaDec_TryDummy +000000003bc062c8 l F ro 0000000000000066 LzmaDec_AllocateProbs2.isra.0 +0000000000000000 l df *ABS* 0000000000000000 lz4_all.c +000000003bc06452 l F ro 0000000000000024 LZ4F_readLE32 +000000003bc06476 l F ro 0000000000000276 LZ4_decompress_safe_withSmallPrefix +000000003bc066ec l F ro 0000000000000110 LZ4F_updateDict +000000003bc0703a l F ro 00000000000001a4 LZ4F_decodeHeader +000000003bc0b158 l O ro 0000000000000020 blockSizes.0 +000000003bc0b178 l O ro 0000000000000020 dec64table +000000003bc0b198 l O ro 0000000000000020 inc32table +0000000000000000 l df *ABS* 0000000000000000 xxhash.c +000000003bc079ea l F ro 000000000000002c XXH32_avalanche +000000003bc07a16 l F ro 0000000000000016 XXH_read32 +000000003bc07a2c l F ro 000000000000033a XXH32_finalize.constprop.0 +0000000000000000 l df *ABS* 0000000000000000 ddr.c +0000000000000000 l df *ABS* 0000000000000000 ddr_pkg_info.c +0000000000000000 l df *ABS* 0000000000000000 ddr_sys_bring_up.c +0000000000000000 l df *ABS* 0000000000000000 ddr_sys.c +0000000000000000 l df *ABS* 0000000000000000 phy_pll_init.c +0000000000000000 l df *ABS* 0000000000000000 cvx16_pinmux.c +0000000000000000 l df *ABS* 0000000000000000 cvx16_dram_cap_check.c +0000000000000000 l df *ABS* 0000000000000000 ddrc_init.c +0000000000000000 l df *ABS* 0000000000000000 phy_init.c +0000000000000000 l df *ABS* 0000000000000000 +000000003bc083f6 g F ro 000000000000000a get_ddr_vendor +000000003bc001b4 g F ro 000000000000000a mdelay +000000003bc08400 g F ro 0000000000000050 axi_mon_start_all +000000003bc0215c g F ro 0000000000000006 AcmIsr +000000003bc13400 g O .bss 0000000000000004 tar_freq +000000003bc0b440 g O .data 0000000000000008 time_records +0000000004400100 g *ABS* 0000000000000000 p_rom_api_cryptodma_aes_decrypt +000000003bc133f8 g O .bss 0000000000000004 freq_in +000000003bc00d30 g F ro 00000000000000ae load_ddr_param +000000003bc0a010 g O ro 0000000000000010 version_string +0000000004400080 g *ABS* 0000000000000000 p_rom_api_flash_init +000000003bc00994 g F ro 0000000000000004 dec_verify_image +000000003bc03c9e g F ro 00000000000000b2 dwc2_udc_ep_activate +000000003bc00aec g F ro 0000000000000052 putchar_l +000000003bc01610 g F ro 0000000000000002 LZ4_free +000000003bc045d6 g F ro 0000000000000018 dwc2_ep0_kick +0000000004400020 g *ABS* 0000000000000000 p_rom_api_get_boot_src +000000003bc03906 g F ro 0000000000000016 dwc2_udc_pre_setup +000000003bc00292 g F ro 0000000000000002 jump_to_loader_2nd +000000003bc0021a g F ro 0000000000000078 jump_to_monitor +000000003bc13280 g O .bss 0000000000000010 rsp_bufArr +000000003bc133d8 g O .bss 0000000000000008 reg_step +000000003bc133b8 g O .bss 0000000000000008 reg +000000003bc03b4c g F ro 0000000000000048 dwc2_set_address +000000003bc00acc g F ro 0000000000000020 memmove +000000003bc08674 g F ro 000000000000004e cvx16_bist_wr_prbs_init +000000003bc12880 g O .bss 0000000000000200 bulkBufAllocArr +000000003bc067fc g F ro 000000000000026e LZ4_decompress_safe +000000003bc13405 g O .bss 0000000000000001 acm_configValue +000000003bc08c5a g F ro 0000000000000044 cvx16_ddr_phy_power_on_seq1 +000000003bc06030 g F ro 000000000000027c LzmaDec_DecodeToDic +000000003bc08722 g F ro 0000000000000046 cvx16_bist_rdglvl_init +000000003bc09ff0 g O ro 000000000000001a build_message +000000003bc0921e g F ro 0000000000000182 cvx16_wdqlvl_req +000000003bc0b440 g .data 0000000000000000 __DATA_START__ +000000003bc004f2 g F ro 00000000000000c8 __system_reset +000000003bc00834 g F ro 0000000000000044 switch_rtc_mode_2nd_stage +000000003bc01338 g F ro 00000000000000e6 load_rest +000000003bc04706 g F ro 0000000000000032 crc16_ccitt +000000003bc08d72 g F ro 0000000000000028 cvx16_set_dfi_init_complete +000000003bc08d20 g F ro 0000000000000038 cvx16_wait_for_dfi_init_complete +000000003bc03b00 g F ro 000000000000004c dwc2_write_fifo_ep0 +000000003bc12b00 g O .bss 0000000000000080 cb1_bufArr +000000003bc08e4a g F ro 0000000000000002 cvx16_wrlvl_req +000000003bc02af0 g F ro 0000000000000046 dwc2_hsotg_wait_bit_set +000000003bc090ae g F ro 0000000000000170 cvx16_rdlvl_req +000000003bc00a6c g F ro 0000000000000060 memcpy +000000003bc08852 g F ro 00000000000000b0 cvx16_bist_wdqlvl_init +000000003bc028c2 g F ro 000000000000000a dwc2_get_ep0_name +000000003bc02a90 g F ro 0000000000000024 dwc2_hsotg_clear_bit +000000003bc03bbc g F ro 0000000000000040 dwc2_ep0_write +000000003bc028c0 g F ro 0000000000000002 dwc2_log_write +000000003bc02a6e g F ro 0000000000000022 dwc2_hsotg_set_bit +000000003bc132c0 g O .bss 0000000000000008 setup_bufArr +000000003bc099c8 g F ro 000000000000002e ctrl_init_low_patch +000000003bc0601c g F ro 0000000000000014 LzmaDec_Init +000000003bc0100a g F ro 0000000000000126 load_monitor +000000003bc1340f g O .bss 0000000000000001 pkg +000000003bc0d700 g stacks 0000000000000000 __STACKS_END__ +000000003bc08b4c g F ro 0000000000000016 cvx16_clk_div40 +000000003bc005ba g F ro 0000000000000032 panic_handler +000000003bc029a6 g F ro 000000000000002e dwc2_nuke +000000003bc001e2 g F ro 000000000000002a get_random_from_timer +000000003bc0979a g F ro 0000000000000002 cvx16_dram_cap_check +000000003bc08962 g F ro 000000000000006a cvx16_bist_start_check +000000003bc133fc g O .bss 0000000000000004 mod_freq +000000003bc00b6c g F ro 000000000000007c gpio_in_value +00000000044000e0 g *ABS* 0000000000000000 p_rom_api_verify_rsa +000000003bc093a0 g F ro 000000000000001a cvx16_en_rec_vol_mode +000000003bc0020c g F ro 000000000000000e read_count_tick +000000003bc08f78 g F ro 0000000000000070 cvx16_clk_gating_enable +000000003bc016c0 g F ro 000000000000007e decompress +000000003bc086c2 g F ro 0000000000000060 cvx16_bist_wr_sram_init +0000000000005c10 g *ABS* 0000000000000000 __BSS_SIZE__ +000000003bc001be g F ro 0000000000000024 get_timer +000000003bc08ce6 g F ro 000000000000003a cvx16_ddr_phy_power_on_seq3 +000000003bc031a8 g F ro 0000000000000156 usb_gadget_register_driver +000000003bc002a4 g F ro 000000000000001e console_putc +000000003bc133f0 g O .bss 0000000000000004 rddata +000000003bc08b62 g F ro 00000000000000f8 cvx16_chg_pll_freq +000000003bc00294 g F ro 0000000000000010 _uart_putc +000000003bc00156 g F ro 0000000000000024 flush_dcache_range +000000003bc12a80 g O .bss 0000000000000080 cb0_bufArr +000000003bc0068e g F ro 000000000000018e sys_pll_nd +000000003bc00832 g F ro 0000000000000002 switch_rtc_mode_1st_stage +000000003bc00878 g F ro 00000000000000bc set_rtc_en_registers +000000003bc00c60 g F ro 00000000000000d0 load_param2 +000000003bc0720e g F ro 00000000000007dc LZ4F_decompress +000000003bc09460 g F ro 000000000000033a cvx16_pinmux +000000003bc08a72 g F ro 0000000000000068 cvx16_dll_cal +000000003bc02162 g F ro 0000000000000138 acm_app_init +000000003bc022d6 g F ro 0000000000000478 AcmApp +000000003bc08f2e g F ro 000000000000004a cvx16_clk_gating_disable +000000003bc071de g F ro 0000000000000030 LZ4F_createDecompressionContext +000000003bc0173e g F ro 0000000000000006 DWC2_UncachedRead32 +000000003bc022a6 g F ro 0000000000000030 get_usb_polling_timeout_value +000000003bc03b94 g F ro 0000000000000028 dwc2_ep0_read +000000003bc12e00 g O .bss 0000000000000080 ep0BuffAllocArr +000000003bc03460 g F ro 000000000000004c usb_gadget_handle_interrupts +000000003bc13410 g .bss 0000000000000000 __BL2_END__ +000000003bc08c9e g F ro 0000000000000048 cvx16_ddr_phy_power_on_seq2 +000000003bc08d9a g F ro 000000000000002c cvx16_INT_ISR_08 +000000003bc06cd4 g F ro 0000000000000316 LZ4_decompress_safe_forceExtDict +000000003bc01fea g F ro 00000000000000a2 convert_buf_addr +000000003bc06378 g F ro 0000000000000030 LzmaDec_AllocateProbs +000000003bc08e92 g F ro 000000000000009c cvx16_pll_init +000000003bc0141e g F ro 0000000000000098 bl2_main +000000003bc0b700 g .data 0000000000000000 __DATA_END__ +000000003bc062ac g F ro 000000000000001c LzmaDec_FreeProbs +000000003bc014fa g F ro 00000000000000e8 decompress_lzma +000000003bc0017a g F ro 0000000000000010 trig_simulation_timer +000000003bc08902 g F ro 0000000000000060 cvx16_bist_wdmlvl_init +000000003bc0018a g F ro 000000000000002a udelay +000000003bc08d58 g F ro 000000000000001a cvx16_polling_dfi_init_start +000000003bc02912 g F ro 0000000000000040 dwc2_done +000000003bc08768 g F ro 00000000000000ea cvx16_bist_rdlvl_init +000000003bc1340e g O .bss 0000000000000001 ddr_vendor +00000000044000a0 g *ABS* 0000000000000000 p_rom_api_image_crc +000000003bc00c20 g F ro 0000000000000040 load_image_by_usb +000000003bc00000 g ro 0000000000000000 bl2_entrypoint +000000003bc01130 g F ro 0000000000000208 load_loader_2nd +000000003bc02c24 g F ro 0000000000000056 dwc2_disconnect +000000003bc03310 g F ro 0000000000000150 dwc2_udc_probe +000000003bc00934 g F ro 0000000000000060 init_comm_info +000000003bc133f4 g O .bss 0000000000000004 dev_freq +000000003bc045ee g F ro 00000000000000d8 dwc2_queue +000000003bc00680 g F ro 000000000000000e sys_switch_all_to_pll +000000003bc13410 g .bss 0000000000000000 __BSS_END__ +000000003bc081c8 g F ro 000000000000022e read_ddr_pkg_info +000000003bc12800 g O .bss 0000000000000080 acm_bufArr +0000000004400040 g *ABS* 0000000000000000 p_rom_api_set_boot_src +000000003bc0632e g F ro 000000000000004a LzmaProps_Decode +000000003bc08e4c g F ro 0000000000000020 cvx16_setting_check +000000003bc00ea4 g F ro 0000000000000166 load_blcp_2nd +000000003bc133d0 g O .bss 0000000000000008 reg_span +000000003bc08ada g F ro 000000000000005c cvx16_clk_normal +000000003bc0229a g F ro 000000000000000c usb_vbus_det +000000003bc00a12 g F ro 000000000000005a memset +000000003bc03c3c g F ro 0000000000000062 dwc2_udc_set_halt +000000003bc07f82 g F ro 00000000000001d2 XXH32_update +000000003bc0a170 g O ro 0000000000000025 hex2ascii_data +000000003bc099f6 g F ro 000000000000021c ctrl_init_update_by_dram_size +000000003bc03d50 g F ro 0000000000000346 dwc2_handle_ep0 +000000003bc00b3e g F ro 000000000000001c strcmp +000000003bc07f2c g F ro 0000000000000056 XXH32_reset +000000003bc07d66 g F ro 00000000000001c6 XXH32 +000000003bc089cc g F ro 00000000000000a6 cvx16_rdvld_train +000000003bc0979c g F ro 00000000000001fe ddrc_init +000000003bc06a6a g F ro 000000000000026a LZ4_decompress_safe_withPrefix64k +000000003bc00358 g F ro 000000000000019a tf_printf +000000003bc029d4 g F ro 000000000000009a usb_gadget_unregister_driver +000000003bc015e8 g F ro 0000000000000028 LZ4_calloc +000000003bc002c2 g F ro 0000000000000014 console_flush +000000003bc0208c g F ro 00000000000000d0 print_buf_addr +000000003bc0b434 g ro 0000000000000000 __RO_END__ +000000003bc12b80 g O .bss 0000000000000080 cb2_bufArr +0000000004400060 g *ABS* 0000000000000000 p_rom_api_load_image +000000003bc07010 g F ro 000000000000000c LZ4F_isError +000000003bc0d800 g .bss 0000000000000000 __BSS_START__ +000000003bc03bfc g F ro 0000000000000040 dwc2_udc_set_nak +000000003bc00000 g ro 0000000000000000 __RO_START__ +000000003bc08fe8 g F ro 00000000000000c6 cvx16_rdglvl_req +000000003bc032fe g F ro 0000000000000012 dwc2_phy_to_log_ep +000000003bc00998 g F ro 000000000000007a ntostr +000000003bc046c6 g F ro 0000000000000040 usb_polling +000000003bc08dc6 g F ro 000000000000001c cvx16_polling_synp_normal_mode +000000003bc06fea g F ro 0000000000000026 LZ4_decompress_safe_usingDict +000000003bc015e2 g F ro 0000000000000006 LZ4_malloc +000000003bc093ba g F ro 0000000000000022 ctrl_init_detect_dram_size +00000000044000c0 g *ABS* 0000000000000000 p_rom_api_get_number_of_retries +000000003bc0014c g F ro 000000000000000a sync_cache +000000003bc00636 g F ro 000000000000004a setup_dl_flag +000000003bc005ec g F ro 000000000000004a reset_c906l +000000003bc133c8 g O .bss 0000000000000008 reg_set +000000003bc063a8 g F ro 00000000000000aa LzmaDecode +000000003bc00be8 g F ro 000000000000001e usb_id_det +000000003bc0b700 g stacks 0000000000000000 __STACKS_START__ +000000003bc0b6f8 g O .data 0000000000000002 cv_usb_vid +000000003bc0081c g F ro 0000000000000016 sys_pll_init +000000003bc03abc g F ro 0000000000000044 dwc2_ep_fifo_read +000000003bc0b6fc g O .data 0000000000000004 ddr_data_rate +000000003bc12e80 g O .bss 0000000000000400 handlerArr +000000003bc08de2 g F ro 0000000000000068 cvx16_dfi_ca_park_prbs +000000003bc04096 g F ro 0000000000000540 dwc2_udc_irq +000000003bc12c00 g O .bss 0000000000000200 cmdBufAllocArr +000000003bc00b5a g F ro 0000000000000012 strlen +000000003bc1340d g O .bss 0000000000000001 ddr_type +000000003bc08450 g F ro 0000000000000224 ddr_sys_bring_up +000000003bc08154 g F ro 0000000000000040 XXH32_digest +000000003bc08194 g F ro 0000000000000034 ddr_init +000000003bc0391c g F ro 0000000000000044 dwc2_ep_fifo_write +000000003bc01612 g F ro 00000000000000ae decompress_lz4 +000000003bc0701c g F ro 000000000000001e LZ4F_getBlockSize +000000003bc1340c g O .bss 0000000000000001 ddr_capacity +000000003bc13308 g O .bss 0000000000000008 acm +000000003bc01744 g F ro 0000000000000004 DWC2_UncachedWrite32 +000000003bc133c0 g O .bss 0000000000000008 the_controller +000000003bc08e6c g F ro 0000000000000026 cvx16_set_dfi_init_start +000000003bc0999a g F ro 000000000000002e ctrl_init_high_patch +000000003bc00dde g F ro 00000000000000c6 load_ddr +000000003bc028cc g F ro 0000000000000046 udc_reinit +000000003bc08b36 g F ro 0000000000000016 cvx16_clk_div2 +000000003bc09c12 g F ro 00000000000003da phy_init +000000003bc093dc g F ro 0000000000000084 pll_init +000000003bc02f1a g F ro 000000000000028e dwc2_reconfig_usbd + + + +Disassembly of section ro: + +000000003bc00000 <__RO_START__>: + 3bc00000: 0200006f j 3bc00020 + ... + +000000003bc00020 : + 3bc00020: 05900e1b addiw t3,zero,89 + 3bc00024: 019e1e13 slli t3,t3,0x19 + 3bc00028: 03000eb7 lui t4,0x3000 + 3bc0002c: 084e8e9b addiw t4,t4,132 + 3bc00030: 01cea023 sw t3,0(t4) # 3000000 <__BSS_SIZE__+0x2ffa3f0> + 3bc00034: 00000093 li ra,0 + 3bc00038: 00000113 li sp,0 + 3bc0003c: 00000193 li gp,0 + 3bc00040: 00000213 li tp,0 + 3bc00044: 00000293 li t0,0 + 3bc00048: 00000313 li t1,0 + 3bc0004c: 00000393 li t2,0 + 3bc00050: 00000413 li s0,0 + 3bc00054: 00000493 li s1,0 + 3bc00058: 00000513 li a0,0 + 3bc0005c: 00000593 li a1,0 + 3bc00060: 00000613 li a2,0 + 3bc00064: 00000693 li a3,0 + 3bc00068: 00000713 li a4,0 + 3bc0006c: 00000793 li a5,0 + 3bc00070: 00000813 li a6,0 + 3bc00074: 00000893 li a7,0 + 3bc00078: 00000913 li s2,0 + 3bc0007c: 00000993 li s3,0 + 3bc00080: 00000a13 li s4,0 + 3bc00084: 00000a93 li s5,0 + 3bc00088: 00000b13 li s6,0 + 3bc0008c: 00000b93 li s7,0 + 3bc00090: 00000c13 li s8,0 + 3bc00094: 00000c93 li s9,0 + 3bc00098: 00000d13 li s10,0 + 3bc0009c: 00000d93 li s11,0 + 3bc000a0: 00000e13 li t3,0 + 3bc000a4: 00000e93 li t4,0 + 3bc000a8: 00000f13 li t5,0 + 3bc000ac: 00000f93 li t6,0 + 3bc000b0: 34001073 csrw mscratch,zero + 3bc000b4: 00000297 auipc t0,0x0 + 3bc000b8: 09028293 addi t0,t0,144 # 3bc00144 + 3bc000bc: 30529073 csrw mtvec,t0 + 3bc000c0: 000181b7 lui gp,0x18 + 3bc000c4: 0c71819b addiw gp,gp,199 + 3bc000c8: 00f19193 slli gp,gp,0xf + 3bc000cc: 7c019073 csrw mxstatus,gp + 3bc000d0: 702001b7 lui gp,0x70200 + 3bc000d4: ffc1819b addiw gp,gp,-4 + 3bc000d8: 00100213 li tp,1 + 3bc000dc: 0041a023 sw tp,0(gp) # 70200000 <__BL2_END__+0x345ecbf0> + 3bc000e0: 03300193 li gp,51 + 3bc000e4: 7c21b073 csrc mcor,gp + 3bc000e8: 01100193 li gp,17 + 3bc000ec: 7c21a073 csrs mcor,gp + 3bc000f0: 00100193 li gp,1 + 3bc000f4: 7c11a073 csrs mhcr,gp + 3bc000f8: 03300193 li gp,51 + 3bc000fc: 7c21b073 csrc mcor,gp + 3bc00100: 01200193 li gp,18 + 3bc00104: 7c21a073 csrs mcor,gp + 3bc00108: 00200193 li gp,2 + 3bc0010c: 7c11a073 csrs mhcr,gp + 3bc00110: 0000d117 auipc sp,0xd + 3bc00114: 5f010113 addi sp,sp,1520 # 3bc0d700 <__STACKS_END__> + 3bc00118: 0000d697 auipc a3,0xd + 3bc0011c: 6e868693 addi a3,a3,1768 # 3bc0d800 <__BSS_START__> + 3bc00120: 00013717 auipc a4,0x13 + 3bc00124: 2f070713 addi a4,a4,752 # 3bc13410 <__BL2_END__> + 3bc00128: 40d70733 sub a4,a4,a3 + +000000003bc0012c : + 3bc0012c: 0006b023 sd zero,0(a3) + 3bc00130: 00868693 addi a3,a3,8 + 3bc00134: ff870713 addi a4,a4,-8 + 3bc00138: fe071ae3 bnez a4,3bc0012c + 3bc0013c: 2e2010ef jal ra,3bc0141e + 3bc00140: 0040006f j 3bc00144 + +000000003bc00144 : + 3bc00144: 4760006f j 3bc005ba + 3bc00148: ffdff06f j 3bc00144 + +000000003bc0014c : + 3bc0014c: 0100000b icache.iall + 3bc00150: 01a0000b sync.i + 3bc00154: 8082 ret + +000000003bc00156 : + 3bc00156: 87aa mv a5,a0 + 3bc00158: 03f58593 addi a1,a1,63 + 3bc0015c: 95be add a1,a1,a5 + 3bc0015e: fc057513 andi a0,a0,-64 + 3bc00162: fc05f593 andi a1,a1,-64 + 3bc00166: 00b56563 bltu a0,a1,3bc00170 + 3bc0016a: 0190000b sync.s + 3bc0016e: 8082 ret + 3bc00170: 02b5000b dcache.cipa a0 + 3bc00174: 04050513 addi a0,a0,64 + 3bc00178: b7fd j 3bc00166 + +000000003bc0017a : + 3bc0017a: 47e5 li a5,25 + 3bc0017c: 02a787bb mulw a5,a5,a0 + 3bc00180: 03000737 lui a4,0x3000 + 3bc00184: 08f72423 sw a5,136(a4) # 3000088 <__BSS_SIZE__+0x2ffa478> + 3bc00188: 8082 ret + +000000003bc0018a : + 3bc0018a: c0102773 rdtime a4 + 3bc0018e: 47e5 li a5,25 + 3bc00190: 02a786bb mulw a3,a5,a0 + 3bc00194: fff74713 not a4,a4 + 3bc00198: 030007b7 lui a5,0x3000 + 3bc0019c: 2701 sext.w a4,a4 + 3bc0019e: 08d7a423 sw a3,136(a5) # 3000088 <__BSS_SIZE__+0x2ffa478> + 3bc001a2: c01027f3 rdtime a5 + 3bc001a6: fff7c793 not a5,a5 + 3bc001aa: 40f707bb subw a5,a4,a5 + 3bc001ae: fed7eae3 bltu a5,a3,3bc001a2 + 3bc001b2: 8082 ret + +000000003bc001b4 : + 3bc001b4: 3e800793 li a5,1000 + 3bc001b8: 02a7853b mulw a0,a5,a0 + 3bc001bc: b7f9 j 3bc0018a + +000000003bc001be : + 3bc001be: e519 bnez a0,3bc001cc + 3bc001c0: c0102573 rdtime a0 + 3bc001c4: fff54513 not a0,a0 + 3bc001c8: 2501 sext.w a0,a0 + 3bc001ca: 8082 ret + 3bc001cc: c01027f3 rdtime a5 + 3bc001d0: fff7c793 not a5,a5 + 3bc001d4: 9d1d subw a0,a0,a5 + 3bc001d6: 6799 lui a5,0x6 + 3bc001d8: 1a87879b addiw a5,a5,424 + 3bc001dc: 02f5553b divuw a0,a0,a5 + 3bc001e0: 8082 ret + +000000003bc001e2 : + 3bc001e2: e519 bnez a0,3bc001f0 + 3bc001e4: c0102573 rdtime a0 + 3bc001e8: fff54513 not a0,a0 + 3bc001ec: 2501 sext.w a0,a0 + 3bc001ee: 8082 ret + 3bc001f0: c01027f3 rdtime a5 + 3bc001f4: fff7c793 not a5,a5 + 3bc001f8: 9d1d subw a0,a0,a5 + 3bc001fa: 47e5 li a5,25 + 3bc001fc: 02f5553b divuw a0,a0,a5 + 3bc00200: 67e1 lui a5,0x18 + 3bc00202: 6a07879b addiw a5,a5,1696 + 3bc00206: 02f5753b remuw a0,a0,a5 + 3bc0020a: 8082 ret + +000000003bc0020c : + 3bc0020c: c0102573 rdtime a0 + 3bc00210: 47e5 li a5,25 + 3bc00212: 02f55533 divu a0,a0,a5 + 3bc00216: 2501 sext.w a0,a0 + 3bc00218: 8082 ret + +000000003bc0021a : + 3bc0021a: 1101 addi sp,sp,-32 + 3bc0021c: 494257b7 lui a5,0x49425 + 3bc00220: e822 sd s0,16(sp) + 3bc00222: 34f78793 addi a5,a5,847 # 4942534f <__BL2_END__+0xd811f3f> + 3bc00226: 00013417 auipc s0,0x13 + 3bc0022a: 0a240413 addi s0,s0,162 # 3bc132c8 + 3bc0022e: e426 sd s1,8(sp) + 3bc00230: e01c sd a5,0(s0) + 3bc00232: 010014b7 lui s1,0x1001 + 3bc00236: 4785 li a5,1 + 3bc00238: e04a sd s2,0(sp) + 3bc0023a: 00749613 slli a2,s1,0x7 + 3bc0023e: 892a mv s2,a0 + 3bc00240: ec1c sd a5,24(s0) + 3bc00242: 0000a517 auipc a0,0xa + 3bc00246: dde50513 addi a0,a0,-546 # 3bc0a020 + 3bc0024a: 57fd li a5,-1 + 3bc0024c: ec06 sd ra,24(sp) + 3bc0024e: f41c sd a5,40(s0) + 3bc00250: e80c sd a1,16(s0) + 3bc00252: 106000ef jal ra,3bc00358 + 3bc00256: 03000593 li a1,48 + 3bc0025a: 8522 mv a0,s0 + 3bc0025c: efbff0ef jal ra,3bc00156 + 3bc00260: fadff0ef jal ra,3bc0020c + 3bc00264: 3e800793 li a5,1000 + 3bc00268: 3e75051b addiw a0,a0,999 + 3bc0026c: 02f5553b divuw a0,a0,a5 + 3bc00270: 8622 mv a2,s0 + 3bc00272: 0000b797 auipc a5,0xb + 3bc00276: 1ce7b783 ld a5,462(a5) # 3bc0b440 + 3bc0027a: 6442 ld s0,16(sp) + 3bc0027c: 60e2 ld ra,24(sp) + 3bc0027e: 00749593 slli a1,s1,0x7 + 3bc00282: 64a2 ld s1,8(sp) + 3bc00284: 00a79723 sh a0,14(a5) + 3bc00288: 87ca mv a5,s2 + 3bc0028a: 6902 ld s2,0(sp) + 3bc0028c: 4501 li a0,0 + 3bc0028e: 6105 addi sp,sp,32 + 3bc00290: 8782 jr a5 + +000000003bc00292 : + 3bc00292: 8082 ret + +000000003bc00294 <_uart_putc>: + 3bc00294: 04140737 lui a4,0x4140 + 3bc00298: 4b5c lw a5,20(a4) + 3bc0029a: 0207f793 andi a5,a5,32 + 3bc0029e: dfed beqz a5,3bc00298 <_uart_putc+0x4> + 3bc002a0: c308 sw a0,0(a4) + 3bc002a2: 8082 ret + +000000003bc002a4 : + 3bc002a4: 1141 addi sp,sp,-16 + 3bc002a6: e022 sd s0,0(sp) + 3bc002a8: e406 sd ra,8(sp) + 3bc002aa: 47a9 li a5,10 + 3bc002ac: 842a mv s0,a0 + 3bc002ae: 00f51563 bne a0,a5,3bc002b8 + 3bc002b2: 4535 li a0,13 + 3bc002b4: fe1ff0ef jal ra,3bc00294 <_uart_putc> + 3bc002b8: 8522 mv a0,s0 + 3bc002ba: 6402 ld s0,0(sp) + 3bc002bc: 60a2 ld ra,8(sp) + 3bc002be: 0141 addi sp,sp,16 + 3bc002c0: bfd1 j 3bc00294 <_uart_putc> + +000000003bc002c2 : + 3bc002c2: 041406b7 lui a3,0x4140 + 3bc002c6: 06000713 li a4,96 + 3bc002ca: 4adc lw a5,20(a3) + 3bc002cc: 0607f793 andi a5,a5,96 + 3bc002d0: fee79de3 bne a5,a4,3bc002ca + 3bc002d4: 8082 ret + +000000003bc002d6 : + 3bc002d6: 7139 addi sp,sp,-64 + 3bc002d8: f04a sd s2,32(sp) + 3bc002da: 7c05b70b extu a4,a1,31,0 + 3bc002de: fc06 sd ra,56(sp) + 3bc002e0: f822 sd s0,48(sp) + 3bc002e2: f426 sd s1,40(sp) + 3bc002e4: 8932 mv s2,a2 + 3bc002e6: 4801 li a6,0 + 3bc002e8: 45a5 li a1,9 + 3bc002ea: 02e57633 remu a2,a0,a4 + 3bc002ee: 0018041b addiw s0,a6,1 + 3bc002f2: 0ff67793 andi a5,a2,255 + 3bc002f6: 04c5e063 bltu a1,a2,3bc00336 + 3bc002fa: 0307879b addiw a5,a5,48 + 3bc002fe: 0ff7f793 andi a5,a5,255 + 3bc00302: 0030 addi a2,sp,8 + 3bc00304: 0106578b srb a5,a2,a6,0 + 3bc00308: 02e557b3 divu a5,a0,a4 + 3bc0030c: 0805 addi a6,a6,1 + 3bc0030e: 02e57263 bgeu a0,a4,3bc00332 + 3bc00312: 408684bb subw s1,a3,s0 + 3bc00316: 02904363 bgtz s1,3bc0033c + 3bc0031a: 54fd li s1,-1 + 3bc0031c: 147d addi s0,s0,-1 + 3bc0031e: 0004079b sext.w a5,s0 + 3bc00322: 02979463 bne a5,s1,3bc0034a + 3bc00326: 70e2 ld ra,56(sp) + 3bc00328: 7442 ld s0,48(sp) + 3bc0032a: 74a2 ld s1,40(sp) + 3bc0032c: 7902 ld s2,32(sp) + 3bc0032e: 6121 addi sp,sp,64 + 3bc00330: 8082 ret + 3bc00332: 853e mv a0,a5 + 3bc00334: bf5d j 3bc002ea + 3bc00336: 0577879b addiw a5,a5,87 + 3bc0033a: b7d1 j 3bc002fe + 3bc0033c: 85ca mv a1,s2 + 3bc0033e: 03000513 li a0,48 + 3bc00342: 7aa000ef jal ra,3bc00aec + 3bc00346: 34fd addiw s1,s1,-1 + 3bc00348: b7f9 j 3bc00316 + 3bc0034a: 003c addi a5,sp,8 + 3bc0034c: 8087c50b lrbu a0,a5,s0,0 + 3bc00350: 85ca mv a1,s2 + 3bc00352: 79a000ef jal ra,3bc00aec + 3bc00356: b7d9 j 3bc0031c + +000000003bc00358 : + 3bc00358: 7135 addi sp,sp,-160 + 3bc0035a: e8a2 sd s0,80(sp) + 3bc0035c: e4a6 sd s1,72(sp) + 3bc0035e: ec86 sd ra,88(sp) + 3bc00360: e0ca sd s2,64(sp) + 3bc00362: fc4e sd s3,56(sp) + 3bc00364: f852 sd s4,48(sp) + 3bc00366: f456 sd s5,40(sp) + 3bc00368: f05a sd s6,32(sp) + 3bc0036a: f4ae sd a1,104(sp) + 3bc0036c: f8b2 sd a2,112(sp) + 3bc0036e: fcb6 sd a3,120(sp) + 3bc00370: e13a sd a4,128(sp) + 3bc00372: e53e sd a5,136(sp) + 3bc00374: e942 sd a6,144(sp) + 3bc00376: ed46 sd a7,152(sp) + 3bc00378: 842a mv s0,a0 + 3bc0037a: 4489 li s1,2 + 3bc0037c: c11d beqz a0,3bc003a2 + 3bc0037e: 00054703 lbu a4,0(a0) + 3bc00382: 4785 li a5,1 + 3bc00384: 00f71f63 bne a4,a5,3bc003a2 + 3bc00388: 00154783 lbu a5,1(a0) + 3bc0038c: 4711 li a4,4 + 3bc0038e: fd07879b addiw a5,a5,-48 + 3bc00392: 0ff7f693 andi a3,a5,255 + 3bc00396: 00d76663 bltu a4,a3,3bc003a2 + 3bc0039a: 0007849b sext.w s1,a5 + 3bc0039e: 00250413 addi s0,a0,2 + 3bc003a2: 10bc addi a5,sp,104 + 3bc003a4: ec3e sd a5,24(sp) + 3bc003a6: 4a25 li s4,9 + 3bc003a8: 4ad9 li s5,22 + 3bc003aa: 0000a997 auipc s3,0xa + 3bc003ae: ca298993 addi s3,s3,-862 # 3bc0a04c + 3bc003b2: 00044503 lbu a0,0(s0) + 3bc003b6: e919 bnez a0,3bc003cc + 3bc003b8: 60e6 ld ra,88(sp) + 3bc003ba: 6446 ld s0,80(sp) + 3bc003bc: 64a6 ld s1,72(sp) + 3bc003be: 6906 ld s2,64(sp) + 3bc003c0: 79e2 ld s3,56(sp) + 3bc003c2: 7a42 ld s4,48(sp) + 3bc003c4: 7aa2 ld s5,40(sp) + 3bc003c6: 7b02 ld s6,32(sp) + 3bc003c8: 610d addi sp,sp,160 + 3bc003ca: 8082 ret + 3bc003cc: 02500793 li a5,37 + 3bc003d0: 0405 addi s0,s0,1 + 3bc003d2: 10f51c63 bne a0,a5,3bc004ea + 3bc003d6: 4781 li a5,0 + 3bc003d8: 4681 li a3,0 + 3bc003da: 03000613 li a2,48 + 3bc003de: 00044703 lbu a4,0(s0) + 3bc003e2: 00c70c63 beq a4,a2,3bc003fa + 3bc003e6: f9c7071b addiw a4,a4,-100 + 3bc003ea: 0ff77713 andi a4,a4,255 + 3bc003ee: fceae5e3 bltu s5,a4,3bc003b8 + 3bc003f2: 44e9c70b lrw a4,s3,a4,2 + 3bc003f6: 974e add a4,a4,s3 + 3bc003f8: 8702 jr a4 + 3bc003fa: 00144703 lbu a4,1(s0) + 3bc003fe: fd07071b addiw a4,a4,-48 + 3bc00402: 0ff77593 andi a1,a4,255 + 3bc00406: 00ba6463 bltu s4,a1,3bc0040e + 3bc0040a: 0007069b sext.w a3,a4 + 3bc0040e: 0409 addi s0,s0,2 + 3bc00410: b7f9 j 3bc003de + 3bc00412: 6762 ld a4,24(sp) + 3bc00414: 4585 li a1,1 + 3bc00416: 00870613 addi a2,a4,8 # 4140008 <__BSS_SIZE__+0x413a3f8> + 3bc0041a: ec32 sd a2,24(sp) + 3bc0041c: 02f5d563 bge a1,a5,3bc00446 + 3bc00420: 00073903 ld s2,0(a4) + 3bc00424: 00095b63 bgez s2,3bc0043a + 3bc00428: 85a6 mv a1,s1 + 3bc0042a: 02d00513 li a0,45 + 3bc0042e: e436 sd a3,8(sp) + 3bc00430: 6bc000ef jal ra,3bc00aec + 3bc00434: 66a2 ld a3,8(sp) + 3bc00436: 41200933 neg s2,s2 + 3bc0043a: 8626 mv a2,s1 + 3bc0043c: 45a9 li a1,10 + 3bc0043e: 854a mv a0,s2 + 3bc00440: e97ff0ef jal ra,3bc002d6 + 3bc00444: a831 j 3bc00460 + 3bc00446: ffe9 bnez a5,3bc00420 + 3bc00448: 00072903 lw s2,0(a4) + 3bc0044c: bfe1 j 3bc00424 + 3bc0044e: 67e2 ld a5,24(sp) + 3bc00450: 0007b903 ld s2,0(a5) + 3bc00454: 00878713 addi a4,a5,8 + 3bc00458: ec3a sd a4,24(sp) + 3bc0045a: 00094503 lbu a0,0(s2) + 3bc0045e: e119 bnez a0,3bc00464 + 3bc00460: 0405 addi s0,s0,1 + 3bc00462: bf81 j 3bc003b2 + 3bc00464: 85a6 mv a1,s1 + 3bc00466: 0905 addi s2,s2,1 + 3bc00468: 684000ef jal ra,3bc00aec + 3bc0046c: b7fd j 3bc0045a + 3bc0046e: 67e2 ld a5,24(sp) + 3bc00470: 0000a917 auipc s2,0xa + 3bc00474: bd890913 addi s2,s2,-1064 # 3bc0a048 + 3bc00478: 0007bb03 ld s6,0(a5) + 3bc0047c: 00878713 addi a4,a5,8 + 3bc00480: ec3a sd a4,24(sp) + 3bc00482: 000b1c63 bnez s6,3bc0049a + 3bc00486: 8626 mv a2,s1 + 3bc00488: 45c1 li a1,16 + 3bc0048a: 855a mv a0,s6 + 3bc0048c: bf55 j 3bc00440 + 3bc0048e: 85a6 mv a1,s1 + 3bc00490: e436 sd a3,8(sp) + 3bc00492: 65a000ef jal ra,3bc00aec + 3bc00496: 66a2 ld a3,8(sp) + 3bc00498: 0905 addi s2,s2,1 + 3bc0049a: 00094503 lbu a0,0(s2) + 3bc0049e: f965 bnez a0,3bc0048e + 3bc004a0: b7dd j 3bc00486 + 3bc004a2: 6762 ld a4,24(sp) + 3bc004a4: 4585 li a1,1 + 3bc004a6: 00870613 addi a2,a4,8 + 3bc004aa: ec32 sd a2,24(sp) + 3bc004ac: 00f5d663 bge a1,a5,3bc004b8 + 3bc004b0: 6308 ld a0,0(a4) + 3bc004b2: 8626 mv a2,s1 + 3bc004b4: 45c1 li a1,16 + 3bc004b6: b769 j 3bc00440 + 3bc004b8: ffe5 bnez a5,3bc004b0 + 3bc004ba: 00076503 lwu a0,0(a4) + 3bc004be: bfd5 j 3bc004b2 + 3bc004c0: 0405 addi s0,s0,1 + 3bc004c2: 4789 li a5,2 + 3bc004c4: bf29 j 3bc003de + 3bc004c6: 2785 addiw a5,a5,1 + 3bc004c8: 0405 addi s0,s0,1 + 3bc004ca: bf11 j 3bc003de + 3bc004cc: 6762 ld a4,24(sp) + 3bc004ce: 4585 li a1,1 + 3bc004d0: 00870613 addi a2,a4,8 + 3bc004d4: ec32 sd a2,24(sp) + 3bc004d6: 00f5d663 bge a1,a5,3bc004e2 + 3bc004da: 6308 ld a0,0(a4) + 3bc004dc: 8626 mv a2,s1 + 3bc004de: 45a9 li a1,10 + 3bc004e0: b785 j 3bc00440 + 3bc004e2: ffe5 bnez a5,3bc004da + 3bc004e4: 00076503 lwu a0,0(a4) + 3bc004e8: bfd5 j 3bc004dc + 3bc004ea: 85a6 mv a1,s1 + 3bc004ec: 600000ef jal ra,3bc00aec + 3bc004f0: b5c9 j 3bc003b2 + +000000003bc004f2 <__system_reset>: + 3bc004f2: 7179 addi sp,sp,-48 + 3bc004f4: f022 sd s0,32(sp) + 3bc004f6: be00e437 lui s0,0xbe00e + 3bc004fa: f406 sd ra,40(sp) + 3bc004fc: 00340793 addi a5,s0,3 # ffffffffbe00e003 <__BL2_END__+0xffffffff823fabf3> + 3bc00500: ec26 sd s1,24(sp) + 3bc00502: e84a sd s2,16(sp) + 3bc00504: e44e sd s3,8(sp) + 3bc00506: 0e000937 lui s2,0xe000 + 3bc0050a: 862e mv a2,a1 + 3bc0050c: 00f92823 sw a5,16(s2) # e000010 + 3bc00510: 85aa mv a1,a0 + 3bc00512: 0000a517 auipc a0,0xa + 3bc00516: b9650513 addi a0,a0,-1130 # 3bc0a0a8 + 3bc0051a: e3fff0ef jal ra,3bc00358 + 3bc0051e: da5ff0ef jal ra,3bc002c2 + 3bc00522: be0034b7 lui s1,0xbe003 + 3bc00526: 00148793 addi a5,s1,1 # ffffffffbe003001 <__BL2_END__+0xffffffff823efbf1> + 3bc0052a: 030009b7 lui s3,0x3000 + 3bc0052e: 6505 lui a0,0x1 + 3bc00530: 08f9a223 sw a5,132(s3) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc00534: 38850513 addi a0,a0,904 # 1388 <__BSS_SIZE__-0x4888> + 3bc00538: c7dff0ef jal ra,3bc001b4 + 3bc0053c: 050267b7 lui a5,0x5026 + 3bc00540: 4705 li a4,1 + 3bc00542: 0ee7a023 sw a4,224(a5) # 50260e0 + 3bc00546: 0ce7a423 sw a4,200(a5) + 3bc0054a: 0489 addi s1,s1,2 + 3bc0054c: 0899a223 sw s1,132(s3) + 3bc00550: 06400513 li a0,100 + 3bc00554: c37ff0ef jal ra,3bc0018a + 3bc00558: 050257b7 lui a5,0x5025 + 3bc0055c: 672d lui a4,0xb + 3bc0055e: 0a07a623 sw zero,172(a5) # 50250ac + 3bc00562: b1870713 addi a4,a4,-1256 # ab18 <__BSS_SIZE__+0x4f08> + 3bc00566: c3d8 sw a4,4(a5) + 3bc00568: 00400737 lui a4,0x400 + 3bc0056c: 04070713 addi a4,a4,64 # 400040 <__BSS_SIZE__+0x3fa430> + 3bc00570: c798 sw a4,8(a5) + 3bc00572: 030107b7 lui a5,0x3010 + 3bc00576: 06600713 li a4,102 + 3bc0057a: c3d8 sw a4,4(a5) + 3bc0057c: 02000713 li a4,32 + 3bc00580: cfd8 sw a4,28(a5) + 3bc00582: 07600713 li a4,118 + 3bc00586: c7d8 sw a4,12(a5) + 3bc00588: 4745 li a4,17 + 3bc0058a: c398 sw a4,0(a5) + 3bc0058c: 00394783 lbu a5,3(s2) + 3bc00590: 0407f793 andi a5,a5,64 + 3bc00594: c395 beqz a5,3bc005b8 <__system_reset+0xc6> + 3bc00596: 0411 addi s0,s0,4 + 3bc00598: 00892823 sw s0,16(s2) + 3bc0059c: 050266b7 lui a3,0x5026 + 3bc005a0: 470d li a4,3 + 3bc005a2: 0d46a783 lw a5,212(a3) # 50260d4 + 3bc005a6: 2781 sext.w a5,a5 + 3bc005a8: fee79de3 bne a5,a4,3bc005a2 <__system_reset+0xb0> + 3bc005ac: 000807b7 lui a5,0x80 + 3bc005b0: 05025737 lui a4,0x5025 + 3bc005b4: 07a1 addi a5,a5,8 + 3bc005b6: c71c sw a5,8(a4) + 3bc005b8: a001 j 3bc005b8 <__system_reset+0xc6> + +000000003bc005ba : + 3bc005ba: 1141 addi sp,sp,-16 + 3bc005bc: be00e7b7 lui a5,0xbe00e + 3bc005c0: e406 sd ra,8(sp) + 3bc005c2: 0e000737 lui a4,0xe000 + 3bc005c6: 0789 addi a5,a5,2 + 3bc005c8: cb1c sw a5,16(a4) + 3bc005ca: 0000879b sext.w a5,ra + 3bc005ce: 8586 mv a1,ra + 3bc005d0: 0000a517 auipc a0,0xa + 3bc005d4: af050513 addi a0,a0,-1296 # 3bc0a0c0 + 3bc005d8: cb5c sw a5,20(a4) + 3bc005da: d7fff0ef jal ra,3bc00358 + 3bc005de: 55fd li a1,-1 + 3bc005e0: 0000a517 auipc a0,0xa + 3bc005e4: af050513 addi a0,a0,-1296 # 3bc0a0d0 + 3bc005e8: f0bff0ef jal ra,3bc004f2 <__system_reset> + +000000003bc005ec : + 3bc005ec: 1141 addi sp,sp,-16 + 3bc005ee: e022 sd s0,0(sp) + 3bc005f0: 842a mv s0,a0 + 3bc005f2: 0000a517 auipc a0,0xa + 3bc005f6: ae650513 addi a0,a0,-1306 # 3bc0a0d8 + 3bc005fa: e406 sd ra,8(sp) + 3bc005fc: d5dff0ef jal ra,3bc00358 + 3bc00600: 03003737 lui a4,0x3003 + 3bc00604: 535c lw a5,36(a4) + 3bc00606: 6609 lui a2,0x2 + 3bc00608: 60a2 ld ra,8(sp) + 3bc0060a: 2781 sext.w a5,a5 + 3bc0060c: fbf7f793 andi a5,a5,-65 + 3bc00610: d35c sw a5,36(a4) + 3bc00612: 020b07b7 lui a5,0x20b0 + 3bc00616: 43d4 lw a3,4(a5) + 3bc00618: 8ed1 or a3,a3,a2 + 3bc0061a: c3d4 sw a3,4(a5) + 3bc0061c: 0004069b sext.w a3,s0 + 3bc00620: d394 sw a3,32(a5) + 3bc00622: 9401 srai s0,s0,0x20 + 3bc00624: d3c0 sw s0,36(a5) + 3bc00626: 535c lw a5,36(a4) + 3bc00628: 6402 ld s0,0(sp) + 3bc0062a: 2781 sext.w a5,a5 + 3bc0062c: 0407e793 ori a5,a5,64 + 3bc00630: d35c sw a5,36(a4) + 3bc00632: 0141 addi sp,sp,16 + 3bc00634: 8082 ret + +000000003bc00636 : + 3bc00636: 1141 addi sp,sp,-16 + 3bc00638: e406 sd ra,8(sp) + 3bc0063a: c8800097 auipc ra,0xc8800 + 3bc0063e: 9e6080e7 jalr -1562(ra) # 4400020 + 3bc00642: 67b5 lui a5,0xd + 3bc00644: 2501 sext.w a0,a0 + 3bc00646: ea078713 addi a4,a5,-352 # cea0 <__BSS_SIZE__+0x7290> + 3bc0064a: 00e50a63 beq a0,a4,3bc0065e + 3bc0064e: ea378793 addi a5,a5,-349 + 3bc00652: 02f50063 beq a0,a5,3bc00672 + 3bc00656: 0e0007b7 lui a5,0xe000 + 3bc0065a: c3c8 sw a0,4(a5) + 3bc0065c: a801 j 3bc0066c + 3bc0065e: 4d4757b7 lui a5,0x4d475 + 3bc00662: 0e000737 lui a4,0xe000 + 3bc00666: e3278793 addi a5,a5,-462 # 4d474e32 <__BL2_END__+0x11861a22> + 3bc0066a: c35c sw a5,4(a4) + 3bc0066c: 60a2 ld ra,8(sp) + 3bc0066e: 0141 addi sp,sp,16 + 3bc00670: 8082 ret + 3bc00672: 4d4757b7 lui a5,0x4d475 + 3bc00676: 0e000737 lui a4,0xe000 + 3bc0067a: e3178793 addi a5,a5,-463 # 4d474e31 <__BL2_END__+0x11861a21> + 3bc0067e: b7f5 j 3bc0066a + +000000003bc00680 : + 3bc00680: 030027b7 lui a5,0x3002 + 3bc00684: 0207a823 sw zero,48(a5) # 3002030 <__BSS_SIZE__+0x2ffc420> + 3bc00688: 0207aa23 sw zero,52(a5) + 3bc0068c: 8082 ret + +000000003bc0068e : + 3bc0068e: 7139 addi sp,sp,-64 + 3bc00690: 0000a797 auipc a5,0xa + 3bc00694: ab87b783 ld a5,-1352(a5) # 3bc0a148 + 3bc00698: e03e sd a5,0(sp) + 3bc0069a: 0000a797 auipc a5,0xa + 3bc0069e: ab67b783 ld a5,-1354(a5) # 3bc0a150 + 3bc006a2: e43e sd a5,8(sp) + 3bc006a4: 0000a797 auipc a5,0xa + 3bc006a8: ab47b783 ld a5,-1356(a5) # 3bc0a158 + 3bc006ac: e83e sd a5,16(sp) + 3bc006ae: 0000a517 auipc a0,0xa + 3bc006b2: a3250513 addi a0,a0,-1486 # 3bc0a0e0 + 3bc006b6: 0000a797 auipc a5,0xa + 3bc006ba: aaa7b783 ld a5,-1366(a5) # 3bc0a160 + 3bc006be: f426 sd s1,40(sp) + 3bc006c0: ec3e sd a5,24(sp) + 3bc006c2: fc06 sd ra,56(sp) + 3bc006c4: f822 sd s0,48(sp) + 3bc006c6: f04a sd s2,32(sp) + 3bc006c8: c91ff0ef jal ra,3bc00358 + 3bc006cc: 030027b7 lui a5,0x3002 + 3bc006d0: 577d li a4,-1 + 3bc006d2: 5b84 lw s1,48(a5) + 3bc006d4: 03f00693 li a3,63 + 3bc006d8: db98 sw a4,48(a5) + 3bc006da: dbd4 sw a3,52(a5) + 3bc006dc: 054887b7 lui a5,0x5488 + 3bc006e0: 03003737 lui a4,0x3003 + 3bc006e4: 10178793 addi a5,a5,257 # 5488101 + 3bc006e8: 80f72423 sw a5,-2040(a4) # 3002808 <__BSS_SIZE__+0x2ffcbf8> + 3bc006ec: 030037b7 lui a5,0x3003 + 3bc006f0: 84d72023 sw a3,-1984(a4) + 3bc006f4: 2481 sext.w s1,s1 + 3bc006f6: 4601 li a2,0 + 3bc006f8: 85470713 addi a4,a4,-1964 + 3bc006fc: 01010813 addi a6,sp,16 + 3bc00700: 80c78513 addi a0,a5,-2036 # 300280c <__BSS_SIZE__+0x2ffcbfc> + 3bc00704: 45c1 li a1,16 + 3bc00706: 4026468b lrw a3,a2,sp,0 + 3bc0070a: c314 sw a3,0(a4) + 3bc0070c: ffc72683 lw a3,-4(a4) + 3bc00710: 0741 addi a4,a4,16 + 3bc00712: 2681 sext.w a3,a3 + 3bc00714: 9abd andi a3,a3,-17 + 3bc00716: 0016e693 ori a3,a3,1 + 3bc0071a: fed72623 sw a3,-20(a4) + 3bc0071e: 4106468b lrw a3,a2,a6,0 + 3bc00722: 40a6568b srw a3,a2,a0,0 + 3bc00726: 0611 addi a2,a2,4 + 3bc00728: fcb61fe3 bne a2,a1,3bc00706 + 3bc0072c: 80078613 addi a2,a5,-2048 + 3bc00730: 4218 lw a4,0(a2) + 3bc00732: 76bd lui a3,0xfffef + 3bc00734: eee68693 addi a3,a3,-274 # fffffffffffeeeee <__BL2_END__+0xffffffffc43dbade> + 3bc00738: 2701 sext.w a4,a4 + 3bc0073a: 8f75 and a4,a4,a3 + 3bc0073c: c218 sw a4,0(a2) + 3bc0073e: 00448737 lui a4,0x448 + 3bc00742: 90078613 addi a2,a5,-1792 + 3bc00746: 10170713 addi a4,a4,257 # 448101 <__BSS_SIZE__+0x4424f1> + 3bc0074a: c618 sw a4,8(a2) + 3bc0074c: 03002437 lui s0,0x3002 + 3bc00750: 018006b7 lui a3,0x1800 + 3bc00754: 6841 lui a6,0x10 + 3bc00756: d014 sw a3,32(s0) + 3bc00758: 30980593 addi a1,a6,777 # 10309 <__BSS_SIZE__+0xa6f9> + 3bc0075c: 10040693 addi a3,s0,256 # 3002100 <__BSS_SIZE__+0x2ffc4f0> + 3bc00760: da8c sw a1,48(a3) + 3bc00762: 000205b7 lui a1,0x20 + 3bc00766: 20958593 addi a1,a1,521 # 20209 <__BSS_SIZE__+0x1a5f9> + 3bc0076a: de8c sw a1,56(a3) + 3bc0076c: c658 sw a4,12(a2) + 3bc0076e: 00030637 lui a2,0x30 + 3bc00772: 00960313 addi t1,a2,9 # 30009 <__BSS_SIZE__+0x2a3f9> + 3bc00776: 04642423 sw t1,72(s0) + 3bc0077a: 30960713 addi a4,a2,777 + 3bc0077e: 00040537 lui a0,0x40 + 3bc00782: c878 sw a4,84(s0) + 3bc00784: 00080937 lui s2,0x80 + 3bc00788: 00950713 addi a4,a0,9 # 40009 <__BSS_SIZE__+0x3a3f9> + 3bc0078c: d078 sw a4,100(s0) + 3bc0078e: 00990893 addi a7,s2,9 # 80009 <__BSS_SIZE__+0x7a3f9> + 3bc00792: 08040713 addi a4,s0,128 + 3bc00796: 01172423 sw a7,8(a4) + 3bc0079a: 001208b7 lui a7,0x120 + 3bc0079e: 08a5 addi a7,a7,9 + 3bc007a0: 01172c23 sw a7,24(a4) + 3bc007a4: 000f08b7 lui a7,0xf0 + 3bc007a8: 08a5 addi a7,a7,9 + 3bc007aa: 0316a023 sw a7,32(a3) # 1800020 <__BSS_SIZE__+0x17fa410> + 3bc007ae: 0825 addi a6,a6,9 + 3bc007b0: 03072423 sw a6,40(a4) + 3bc007b4: 10960813 addi a6,a2,265 + 3bc007b8: 07072223 sw a6,100(a4) + 3bc007bc: 30950513 addi a0,a0,777 + 3bc007c0: d768 sw a0,108(a4) + 3bc007c2: 00060537 lui a0,0x60 + 3bc007c6: 04672423 sw t1,72(a4) + 3bc007ca: 20950513 addi a0,a0,521 # 60209 <__BSS_SIZE__+0x5a5f9> + 3bc007ce: cb28 sw a0,80(a4) + 3bc007d0: cf28 sw a0,88(a4) + 3bc007d2: ca8c sw a1,16(a3) + 3bc007d4: 20960613 addi a2,a2,521 + 3bc007d8: c2f0 sw a2,68(a3) + 3bc007da: 00050637 lui a2,0x50 + 3bc007de: 0625 addi a2,a2,9 + 3bc007e0: df10 sw a2,56(a4) + 3bc007e2: d6d0 sw a2,44(a3) + 3bc007e4: 88078793 addi a5,a5,-1920 + 3bc007e8: 5398 lw a4,32(a5) + 3bc007ea: 10090913 addi s2,s2,256 + 3bc007ee: 0124f933 and s2,s1,s2 + 3bc007f2: 2701 sext.w a4,a4 + 3bc007f4: 9b6d andi a4,a4,-5 + 3bc007f6: d398 sw a4,32(a5) + 3bc007f8: 57d8 lw a4,44(a5) + 3bc007fa: 0c800513 li a0,200 + 3bc007fe: 2701 sext.w a4,a4 + 3bc00800: 9b65 andi a4,a4,-7 + 3bc00802: d7d8 sw a4,44(a5) + 3bc00804: 987ff0ef jal ra,3bc0018a + 3bc00808: 03242823 sw s2,48(s0) + 3bc0080c: 70e2 ld ra,56(sp) + 3bc0080e: 02042a23 sw zero,52(s0) + 3bc00812: 7442 ld s0,48(sp) + 3bc00814: 74a2 ld s1,40(sp) + 3bc00816: 7902 ld s2,32(sp) + 3bc00818: 6121 addi sp,sp,64 + 3bc0081a: 8082 ret + +000000003bc0081c : + 3bc0081c: 1141 addi sp,sp,-16 + 3bc0081e: e406 sd ra,8(sp) + 3bc00820: e6fff0ef jal ra,3bc0068e + 3bc00824: 60a2 ld ra,8(sp) + 3bc00826: 0000a517 auipc a0,0xa + 3bc0082a: 8ca50513 addi a0,a0,-1846 # 3bc0a0f0 + 3bc0082e: 0141 addi sp,sp,16 + 3bc00830: b625 j 3bc00358 + +000000003bc00832 : + 3bc00832: 8082 ret + +000000003bc00834 : + 3bc00834: 05025737 lui a4,0x5025 + 3bc00838: 475c lw a5,12(a4) + 3bc0083a: 471c lw a5,8(a4) + 3bc0083c: f40006b7 lui a3,0xf4000 + 3bc00840: bff68693 addi a3,a3,-1025 # fffffffff3fffbff <__BL2_END__+0xffffffffb83ec7ef> + 3bc00844: 2781 sext.w a5,a5 + 3bc00846: 8ff5 and a5,a5,a3 + 3bc00848: 0c0006b7 lui a3,0xc000 + 3bc0084c: 8fd5 or a5,a5,a3 + 3bc0084e: c71c sw a5,8(a4) + 3bc00850: 4685 li a3,1 + 3bc00852: 050267b7 lui a5,0x5026 + 3bc00856: 48d7a623 sw a3,1164(a5) # 502648c + 3bc0085a: 4807a623 sw zero,1164(a5) + 3bc0085e: 471c lw a5,8(a4) + 3bc00860: 0c0016b7 lui a3,0xc001 + 3bc00864: 80068693 addi a3,a3,-2048 # c000800 + 3bc00868: 2781 sext.w a5,a5 + 3bc0086a: 8fd5 or a5,a5,a3 + 3bc0086c: c71c sw a5,8(a4) + 3bc0086e: 0000a517 auipc a0,0xa + 3bc00872: 89250513 addi a0,a0,-1902 # 3bc0a100 + 3bc00876: b4cd j 3bc00358 + +000000003bc00878 : + 3bc00878: 1141 addi sp,sp,-16 + 3bc0087a: e022 sd s0,0(sp) + 3bc0087c: 05026437 lui s0,0x5026 + 3bc00880: 0f842583 lw a1,248(s0) # 50260f8 + 3bc00884: 0000a517 auipc a0,0xa + 3bc00888: 89450513 addi a0,a0,-1900 # 3bc0a118 + 3bc0088c: e406 sd ra,8(sp) + 3bc0088e: 2581 sext.w a1,a1 + 3bc00890: ac9ff0ef jal ra,3bc00358 + 3bc00894: 0fc42583 lw a1,252(s0) + 3bc00898: 0000a517 auipc a0,0xa + 3bc0089c: 89850513 addi a0,a0,-1896 # 3bc0a130 + 3bc008a0: 2581 sext.w a1,a1 + 3bc008a2: ab7ff0ef jal ra,3bc00358 + 3bc008a6: 4785 li a5,1 + 3bc008a8: 0cf42023 sw a5,192(s0) + 3bc008ac: 05026737 lui a4,0x5026 + 3bc008b0: 4685 li a3,1 + 3bc008b2: 0c072783 lw a5,192(a4) # 50260c0 + 3bc008b6: 2781 sext.w a5,a5 + 3bc008b8: fed79de3 bne a5,a3,3bc008b2 + 3bc008bc: 0cd72623 sw a3,204(a4) + 3bc008c0: 05026737 lui a4,0x5026 + 3bc008c4: 4685 li a3,1 + 3bc008c6: 0cc72783 lw a5,204(a4) # 50260cc + 3bc008ca: 2781 sext.w a5,a5 + 3bc008cc: fed79de3 bne a5,a3,3bc008c6 + 3bc008d0: 0cd72423 sw a3,200(a4) + 3bc008d4: 05026737 lui a4,0x5026 + 3bc008d8: 4685 li a3,1 + 3bc008da: 0c872783 lw a5,200(a4) # 50260c8 + 3bc008de: 2781 sext.w a5,a5 + 3bc008e0: fed79de3 bne a5,a3,3bc008da + 3bc008e4: 0ed72023 sw a3,224(a4) + 3bc008e8: 050266b7 lui a3,0x5026 + 3bc008ec: 4705 li a4,1 + 3bc008ee: 0e06a783 lw a5,224(a3) # 50260e0 + 3bc008f2: 2781 sext.w a5,a5 + 3bc008f4: fee79de3 bne a5,a4,3bc008ee + 3bc008f8: 05025737 lui a4,0x5025 + 3bc008fc: 08070613 addi a2,a4,128 # 5025080 + 3bc00900: 565c lw a5,44(a2) + 3bc00902: 60a2 ld ra,8(sp) + 3bc00904: 6402 ld s0,0(sp) + 3bc00906: 2781 sext.w a5,a5 + 3bc00908: 0017e793 ori a5,a5,1 + 3bc0090c: d65c sw a5,44(a2) + 3bc0090e: 67ad lui a5,0xb + 3bc00910: b1878793 addi a5,a5,-1256 # ab18 <__BSS_SIZE__+0x4f08> + 3bc00914: c35c sw a5,4(a4) + 3bc00916: 471c lw a5,8(a4) + 3bc00918: 7645 lui a2,0xffff1 + 3bc0091a: 84060613 addi a2,a2,-1984 # ffffffffffff0840 <__BL2_END__+0xffffffffc43dd430> + 3bc0091e: 2781 sext.w a5,a5 + 3bc00920: 8fd1 or a5,a5,a2 + 3bc00922: c71c sw a5,8(a4) + 3bc00924: 0d06a783 lw a5,208(a3) + 3bc00928: 2781 sext.w a5,a5 + 3bc0092a: 9bed andi a5,a5,-5 + 3bc0092c: 0cf6a823 sw a5,208(a3) + 3bc00930: 0141 addi sp,sp,16 + 3bc00932: 8082 ret + +000000003bc00934 : + 3bc00934: 7139 addi sp,sp,-64 + 3bc00936: 0000a797 auipc a5,0xa + 3bc0093a: 8327b783 ld a5,-1998(a5) # 3bc0a168 + 3bc0093e: e43e sd a5,8(sp) + 3bc00940: 000827b7 lui a5,0x82 + 3bc00944: 47378793 addi a5,a5,1139 # 82473 <__BSS_SIZE__+0x7c863> + 3bc00948: 07b2 slli a5,a5,0xc + 3bc0094a: faf1578b sdd a5,a5,(sp),1,4 + 3bc0094e: f03e sd a5,32(sp) + 3bc00950: 6785 lui a5,0x1 + 3bc00952: 10178793 addi a5,a5,257 # 1101 <__BSS_SIZE__-0x4b0f> + 3bc00956: d43e sw a5,40(sp) + 3bc00958: 478d li a5,3 + 3bc0095a: 02f10723 sb a5,46(sp) + 3bc0095e: fc06 sd ra,56(sp) + 3bc00960: 4701 li a4,0 + 3bc00962: 4781 li a5,0 + 3bc00964: 002c addi a1,sp,8 + 3bc00966: 02400693 li a3,36 + 3bc0096a: 80b7460b lrbu a2,a4,a1,0 + 3bc0096e: 0705 addi a4,a4,1 + 3bc00970: 9fb1 addw a5,a5,a2 + 3bc00972: 3c07b78b extu a5,a5,15,0 + 3bc00976: fed71ae3 bne a4,a3,3bc0096a + 3bc0097a: 01900537 lui a0,0x1900 + 3bc0097e: 02800613 li a2,40 + 3bc00982: 40050513 addi a0,a0,1024 # 1900400 <__BSS_SIZE__+0x18fa7f0> + 3bc00986: 02f11623 sh a5,44(sp) + 3bc0098a: 0e2000ef jal ra,3bc00a6c + 3bc0098e: 70e2 ld ra,56(sp) + 3bc00990: 6121 addi sp,sp,64 + 3bc00992: 8082 ret + +000000003bc00994 : + 3bc00994: 4501 li a0,0 + 3bc00996: 8082 ret + +000000003bc00998 : + 3bc00998: 00050023 sb zero,0(a0) + 3bc0099c: 872a mv a4,a0 + 3bc0099e: 00009317 auipc t1,0x9 + 3bc009a2: 7d230313 addi t1,t1,2002 # 3bc0a170 + 3bc009a6: 4e65 li t3,25 + 3bc009a8: 02c5f7b3 remu a5,a1,a2 + 3bc009ac: 80f3478b lrbu a5,t1,a5,0 + 3bc009b0: ce91 beqz a3,3bc009cc + 3bc009b2: f9f7881b addiw a6,a5,-97 + 3bc009b6: 0ff87813 andi a6,a6,255 + 3bc009ba: 02000893 li a7,32 + 3bc009be: 010e7363 bgeu t3,a6,3bc009c4 + 3bc009c2: 4881 li a7,0 + 3bc009c4: 411787bb subw a5,a5,a7 + 3bc009c8: 0ff7f793 andi a5,a5,255 + 3bc009cc: 0817578b sbib a5,(a4),1,0 + 3bc009d0: 02c5d7b3 divu a5,a1,a2 + 3bc009d4: 02c5f463 bgeu a1,a2,3bc009fc + 3bc009d8: 87aa mv a5,a0 + 3bc009da: 86ba mv a3,a4 + 3bc009dc: 02d7e263 bltu a5,a3,3bc00a00 + 3bc009e0: fff50693 addi a3,a0,-1 + 3bc009e4: 4781 li a5,0 + 3bc009e6: 00d76863 bltu a4,a3,3bc009f6 + 3bc009ea: 40a707b3 sub a5,a4,a0 + 3bc009ee: 0785 addi a5,a5,1 + 3bc009f0: 8385 srli a5,a5,0x1 + 3bc009f2: 40f007b3 neg a5,a5 + 3bc009f6: 00f70533 add a0,a4,a5 + 3bc009fa: 8082 ret + 3bc009fc: 85be mv a1,a5 + 3bc009fe: b76d j 3bc009a8 + 3bc00a00: 0006c583 lbu a1,0(a3) + 3bc00a04: 0007c603 lbu a2,0(a5) + 3bc00a08: 1817d58b sbia a1,(a5),1,0 + 3bc00a0c: 19f6d60b sbia a2,(a3),-1,0 + 3bc00a10: b7f1 j 3bc009dc + +000000003bc00a12 : + 3bc00a12: 0ff5f813 andi a6,a1,255 + 3bc00a16: 87aa mv a5,a0 + 3bc00a18: 0077f713 andi a4,a5,7 + 3bc00a1c: c719 beqz a4,3bc00a2a + 3bc00a1e: e211 bnez a2,3bc00a22 + 3bc00a20: 8082 ret + 3bc00a22: 1817d80b sbia a6,(a5),1,0 + 3bc00a26: 167d addi a2,a2,-1 + 3bc00a28: bfc5 j 3bc00a18 + 3bc00a2a: ca05 beqz a2,3bc00a5a + 3bc00a2c: 00009697 auipc a3,0x9 + 3bc00a30: 76c6b683 ld a3,1900(a3) # 3bc0a198 + 3bc00a34: 0ff5f593 andi a1,a1,255 + 3bc00a38: 02d585b3 mul a1,a1,a3 + 3bc00a3c: 489d li a7,7 + 3bc00a3e: 4681 li a3,0 + 3bc00a40: 40d60333 sub t1,a2,a3 + 3bc00a44: 0068ec63 bltu a7,t1,3bc00a5c + 3bc00a48: 00365693 srli a3,a2,0x3 + 3bc00a4c: 55e1 li a1,-8 + 3bc00a4e: 06d7978b addsl a5,a5,a3,3 + 3bc00a52: 20b6960b mula a2,a3,a1 + 3bc00a56: 00e61763 bne a2,a4,3bc00a64 + 3bc00a5a: 8082 ret + 3bc00a5c: 60d7d58b srd a1,a5,a3,0 + 3bc00a60: 06a1 addi a3,a3,8 + 3bc00a62: bff9 j 3bc00a40 + 3bc00a64: 00e7d80b srb a6,a5,a4,0 + 3bc00a68: 0705 addi a4,a4,1 + 3bc00a6a: b7f5 j 3bc00a56 + +000000003bc00a6c : + 3bc00a6c: 00b547b3 xor a5,a0,a1 + 3bc00a70: 8b9d andi a5,a5,7 + 3bc00a72: e7a9 bnez a5,3bc00abc + 3bc00a74: 87aa mv a5,a0 + 3bc00a76: 0077f713 andi a4,a5,7 + 3bc00a7a: cb09 beqz a4,3bc00a8c + 3bc00a7c: e211 bnez a2,3bc00a80 + 3bc00a7e: 8082 ret + 3bc00a80: 9815c70b lbuia a4,(a1),1,0 + 3bc00a84: 167d addi a2,a2,-1 + 3bc00a86: 1817d70b sbia a4,(a5),1,0 + 3bc00a8a: b7f5 j 3bc00a76 + 3bc00a8c: 469d li a3,7 + 3bc00a8e: e619 bnez a2,3bc00a9c + 3bc00a90: 8082 ret + 3bc00a92: 60e5c80b lrd a6,a1,a4,0 + 3bc00a96: 60e7d80b srd a6,a5,a4,0 + 3bc00a9a: 0721 addi a4,a4,8 + 3bc00a9c: 40e60833 sub a6,a2,a4 + 3bc00aa0: ff06e9e3 bltu a3,a6,3bc00a92 + 3bc00aa4: 00365713 srli a4,a2,0x3 + 3bc00aa8: 56e1 li a3,-8 + 3bc00aaa: 20d7160b mula a2,a4,a3 + 3bc00aae: 070e slli a4,a4,0x3 + 3bc00ab0: 97ba add a5,a5,a4 + 3bc00ab2: 95ba add a1,a1,a4 + 3bc00ab4: 4701 li a4,0 + 3bc00ab6: 00e61563 bne a2,a4,3bc00ac0 + 3bc00aba: 8082 ret + 3bc00abc: 87aa mv a5,a0 + 3bc00abe: bfdd j 3bc00ab4 + 3bc00ac0: 80e5c68b lrbu a3,a1,a4,0 + 3bc00ac4: 00e7d68b srb a3,a5,a4,0 + 3bc00ac8: 0705 addi a4,a4,1 + 3bc00aca: b7f5 j 3bc00ab6 + +000000003bc00acc : + 3bc00acc: 40b50733 sub a4,a0,a1 + 3bc00ad0: 87aa mv a5,a0 + 3bc00ad2: 00c76363 bltu a4,a2,3bc00ad8 + 3bc00ad6: bf59 j 3bc00a6c + 3bc00ad8: 95b2 add a1,a1,a2 + 3bc00ada: 9532 add a0,a0,a2 + 3bc00adc: 00f51363 bne a0,a5,3bc00ae2 + 3bc00ae0: 8082 ret + 3bc00ae2: 89f5c70b lbuib a4,(a1),-1,0 + 3bc00ae6: 09f5570b sbib a4,(a0),-1,0 + 3bc00aea: bfcd j 3bc00adc + +000000003bc00aec : + 3bc00aec: 0e0007b7 lui a5,0xe000 + 3bc00af0: 4794 lw a3,8(a5) + 3bc00af2: 1141 addi sp,sp,-16 + 3bc00af4: e022 sd s0,0(sp) + 3bc00af6: e406 sd ra,8(sp) + 3bc00af8: 6709 lui a4,0x2 + 3bc00afa: 842a mv s0,a0 + 3bc00afc: 00e6e463 bltu a3,a4,3bc00b04 + 3bc00b00: 0007a423 sw zero,8(a5) # e000008 + 3bc00b04: 0e0007b7 lui a5,0xe000 + 3bc00b08: 4798 lw a4,8(a5) + 3bc00b0a: 0017069b addiw a3,a4,1 + 3bc00b0e: c794 sw a3,8(a5) + 3bc00b10: 0c0006b7 lui a3,0xc000 + 3bc00b14: 10e6d40b surb s0,a3,a4,0 + 3bc00b18: 4709 li a4,2 + 3bc00b1a: 00b74d63 blt a4,a1,3bc00b34 + 3bc00b1e: 0007c783 lbu a5,0(a5) # e000000 + 3bc00b22: 8b91 andi a5,a5,4 + 3bc00b24: eb81 bnez a5,3bc00b34 + 3bc00b26: 0ff47513 andi a0,s0,255 + 3bc00b2a: f7aff0ef jal ra,3bc002a4 + 3bc00b2e: 00055363 bgez a0,3bc00b34 + 3bc00b32: 547d li s0,-1 + 3bc00b34: 60a2 ld ra,8(sp) + 3bc00b36: 8522 mv a0,s0 + 3bc00b38: 6402 ld s0,0(sp) + 3bc00b3a: 0141 addi sp,sp,16 + 3bc00b3c: 8082 ret + +000000003bc00b3e : + 3bc00b3e: 4701 li a4,0 + 3bc00b40: 80e5478b lrbu a5,a0,a4,0 + 3bc00b44: 80e5c68b lrbu a3,a1,a4,0 + 3bc00b48: 00d78563 beq a5,a3,3bc00b52 + 3bc00b4c: 40d7853b subw a0,a5,a3 + 3bc00b50: 8082 ret + 3bc00b52: 0705 addi a4,a4,1 + 3bc00b54: f7f5 bnez a5,3bc00b40 + 3bc00b56: 4501 li a0,0 + 3bc00b58: 8082 ret + +000000003bc00b5a : + 3bc00b5a: 87aa mv a5,a0 + 3bc00b5c: 0007c703 lbu a4,0(a5) + 3bc00b60: e701 bnez a4,3bc00b68 + 3bc00b62: 40a78533 sub a0,a5,a0 + 3bc00b66: 8082 ret + 3bc00b68: 0785 addi a5,a5,1 + 3bc00b6a: bfcd j 3bc00b5c + +000000003bc00b6c : + 3bc00b6c: 1101 addi sp,sp,-32 + 3bc00b6e: 00c007b7 lui a5,0xc00 + 3bc00b72: e822 sd s0,16(sp) + 3bc00b74: e426 sd s1,8(sp) + 3bc00b76: e04a sd s2,0(sp) + 3bc00b78: 1c55370b extu a4,a0,7,5 + 3bc00b7c: 4007879b addiw a5,a5,1024 + 3bc00b80: 0155541b srliw s0,a0,0x15 + 3bc00b84: 5105390b extu s2,a0,20,16 + 3bc00b88: 1045348b extu s1,a0,4,4 + 3bc00b8c: 3c85350b extu a0,a0,15,8 + 3bc00b90: 9d3d addw a0,a0,a5 + 3bc00b92: 0025151b slliw a0,a0,0x2 + 3bc00b96: ec06 sd ra,24(sp) + 3bc00b98: 7c05350b extu a0,a0,31,0 + 3bc00b9c: c118 sw a4,0(a0) + 3bc00b9e: 4529 li a0,10 + 3bc00ba0: deaff0ef jal ra,3bc0018a + 3bc00ba4: 00447793 andi a5,s0,4 + 3bc00ba8: eb9d bnez a5,3bc00bde + 3bc00baa: 678d lui a5,0x3 + 3bc00bac: 881d andi s0,s0,7 + 3bc00bae: 0207879b addiw a5,a5,32 + 3bc00bb2: 9c3d addw s0,s0,a5 + 3bc00bb4: 00c4141b slliw s0,s0,0xc + 3bc00bb8: 0504041b addiw s0,s0,80 + 3bc00bbc: 7c04340b extu s0,s0,31,0 + 3bc00bc0: 4008 lw a0,0(s0) + 3bc00bc2: 0125553b srlw a0,a0,s2 + 3bc00bc6: 00157793 andi a5,a0,1 + 3bc00bca: 853e mv a0,a5 + 3bc00bcc: c099 beqz s1,3bc00bd2 + 3bc00bce: 0017c513 xori a0,a5,1 + 3bc00bd2: 60e2 ld ra,24(sp) + 3bc00bd4: 6442 ld s0,16(sp) + 3bc00bd6: 64a2 ld s1,8(sp) + 3bc00bd8: 6902 ld s2,0(sp) + 3bc00bda: 6105 addi sp,sp,32 + 3bc00bdc: 8082 ret + 3bc00bde: 05021437 lui s0,0x5021 + 3bc00be2: 05040413 addi s0,s0,80 # 5021050 + 3bc00be6: bfd9 j 3bc00bbc + +000000003bc00be8 : + 3bc00be8: 030507b7 lui a5,0x3050 + 3bc00bec: 1047a783 lw a5,260(a5) # 3050104 <__BSS_SIZE__+0x304a4f4> + 3bc00bf0: 0007851b sext.w a0,a5 + 3bc00bf4: 8b91 andi a5,a5,4 + 3bc00bf6: c391 beqz a5,3bc00bfa + 3bc00bf8: bf95 j 3bc00b6c + 3bc00bfa: 030007b7 lui a5,0x3000 + 3bc00bfe: 43c8 lw a0,4(a5) + 3bc00c00: 2085350b extu a0,a0,8,8 + 3bc00c04: 8082 ret + +000000003bc00c06 : + 3bc00c06: 1141 addi sp,sp,-16 + 3bc00c08: e406 sd ra,8(sp) + 3bc00c0a: e02ff0ef jal ra,3bc0020c + 3bc00c0e: 60a2 ld ra,8(sp) + 3bc00c10: 3e75051b addiw a0,a0,999 + 3bc00c14: 3e800793 li a5,1000 + 3bc00c18: 02f5553b divuw a0,a0,a5 + 3bc00c1c: 0141 addi sp,sp,16 + 3bc00c1e: 8082 ret + +000000003bc00c20 : + 3bc00c20: 7179 addi sp,sp,-48 + 3bc00c22: 8732 mv a4,a2 + 3bc00c24: 2601 sext.w a2,a2 + 3bc00c26: f022 sd s0,32(sp) + 3bc00c28: ec26 sd s1,24(sp) + 3bc00c2a: e03a sd a4,0(sp) + 3bc00c2c: f406 sd ra,40(sp) + 3bc00c2e: 84aa mv s1,a0 + 3bc00c30: e42e sd a1,8(sp) + 3bc00c32: 295030ef jal ra,3bc046c6 + 3bc00c36: 4785 li a5,1 + 3bc00c38: f8d1470b ldd a4,a3,(sp),0,4 + 3bc00c3c: 5479 li s0,-2 + 3bc00c3e: 00f51363 bne a0,a5,3bc00c44 + 3bc00c42: 4401 li s0,0 + 3bc00c44: 8626 mv a2,s1 + 3bc00c46: 85a2 mv a1,s0 + 3bc00c48: 00009517 auipc a0,0x9 + 3bc00c4c: 55850513 addi a0,a0,1368 # 3bc0a1a0 + 3bc00c50: f08ff0ef jal ra,3bc00358 + 3bc00c54: 70a2 ld ra,40(sp) + 3bc00c56: 8522 mv a0,s0 + 3bc00c58: 7402 ld s0,32(sp) + 3bc00c5a: 64e2 ld s1,24(sp) + 3bc00c5c: 6145 addi sp,sp,48 + 3bc00c5e: 8082 ret + +000000003bc00c60 : + 3bc00c60: 1101 addi sp,sp,-32 + 3bc00c62: 0000d617 auipc a2,0xd + 3bc00c66: b9e60613 addi a2,a2,-1122 # 3bc0d800 <__BSS_START__> + 3bc00c6a: e42a sd a0,8(sp) + 3bc00c6c: 6585 lui a1,0x1 + 3bc00c6e: 00009517 auipc a0,0x9 + 3bc00c72: 55250513 addi a0,a0,1362 # 3bc0a1c0 + 3bc00c76: ec06 sd ra,24(sp) + 3bc00c78: e822 sd s0,16(sp) + 3bc00c7a: edeff0ef jal ra,3bc00358 + 3bc00c7e: c87ff097 auipc ra,0xc87ff + 3bc00c82: 3a2080e7 jalr 930(ra) # 4400020 + 3bc00c86: 67b5 lui a5,0xd + 3bc00c88: 2501 sext.w a0,a0 + 3bc00c8a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00c8e: 66a2 ld a3,8(sp) + 3bc00c90: 6605 lui a2,0x1 + 3bc00c92: 04f51463 bne a0,a5,3bc00cda + 3bc00c96: 3c0027b7 lui a5,0x3c002 + 3bc00c9a: 0e07a583 lw a1,224(a5) # 3c0020e0 <__BL2_END__+0x3eecd0> + 3bc00c9e: 0000d517 auipc a0,0xd + 3bc00ca2: b6250513 addi a0,a0,-1182 # 3bc0d800 <__BSS_START__> + 3bc00ca6: f7bff0ef jal ra,3bc00c20 + 3bc00caa: 02054463 bltz a0,3bc00cd2 + 3bc00cae: 0000d417 auipc s0,0xd + 3bc00cb2: b5240413 addi s0,s0,-1198 # 3bc0d800 <__BSS_START__> + 3bc00cb6: 6018 ld a4,0(s0) + 3bc00cb8: 0000a797 auipc a5,0xa + 3bc00cbc: 9607b783 ld a5,-1696(a5) # 3bc0a618 + 3bc00cc0: 02f70a63 beq a4,a5,3bc00cf4 + 3bc00cc4: 00009517 auipc a0,0x9 + 3bc00cc8: 51450513 addi a0,a0,1300 # 3bc0a1d8 + 3bc00ccc: e8cff0ef jal ra,3bc00358 + 3bc00cd0: 557d li a0,-1 + 3bc00cd2: 60e2 ld ra,24(sp) + 3bc00cd4: 6442 ld s0,16(sp) + 3bc00cd6: 6105 addi sp,sp,32 + 3bc00cd8: 8082 ret + 3bc00cda: 3c0027b7 lui a5,0x3c002 + 3bc00cde: 0e07a583 lw a1,224(a5) # 3c0020e0 <__BL2_END__+0x3eecd0> + 3bc00ce2: 0000d517 auipc a0,0xd + 3bc00ce6: b1e50513 addi a0,a0,-1250 # 3bc0d800 <__BSS_START__> + 3bc00cea: c87ff097 auipc ra,0xc87ff + 3bc00cee: 376080e7 jalr 886(ra) # 4400060 + 3bc00cf2: bf65 j 3bc00caa + 3bc00cf4: 6585 lui a1,0x1 + 3bc00cf6: 15d1 addi a1,a1,-12 + 3bc00cf8: 0000d517 auipc a0,0xd + 3bc00cfc: b1450513 addi a0,a0,-1260 # 3bc0d80c <__BSS_START__+0xc> + 3bc00d00: c87ff097 auipc ra,0xc87ff + 3bc00d04: 3a0080e7 jalr 928(ra) # 44000a0 + 3bc00d08: 4410 lw a2,8(s0) + 3bc00d0a: 0005059b sext.w a1,a0 + 3bc00d0e: 00b60963 beq a2,a1,3bc00d20 + 3bc00d12: 00009517 auipc a0,0x9 + 3bc00d16: 4de50513 addi a0,a0,1246 # 3bc0a1f0 + 3bc00d1a: e3eff0ef jal ra,3bc00358 + 3bc00d1e: bf4d j 3bc00cd0 + 3bc00d20: 00009517 auipc a0,0x9 + 3bc00d24: 4f050513 addi a0,a0,1264 # 3bc0a210 + 3bc00d28: e30ff0ef jal ra,3bc00358 + 3bc00d2c: 4501 li a0,0 + 3bc00d2e: b755 j 3bc00cd2 + +000000003bc00d30 : + 3bc00d30: 1101 addi sp,sp,-32 + 3bc00d32: e822 sd s0,16(sp) + 3bc00d34: 0000d417 auipc s0,0xd + 3bc00d38: acc40413 addi s0,s0,-1332 # 3bc0d800 <__BSS_START__> + 3bc00d3c: 4c10 lw a2,24(s0) + 3bc00d3e: 484c lw a1,20(s0) + 3bc00d40: e42a sd a0,8(sp) + 3bc00d42: 00009517 auipc a0,0x9 + 3bc00d46: 4d650513 addi a0,a0,1238 # 3bc0a218 + 3bc00d4a: ec06 sd ra,24(sp) + 3bc00d4c: e0cff0ef jal ra,3bc00358 + 3bc00d50: 4c18 lw a4,24(s0) + 3bc00d52: 6791 lui a5,0x4 + 3bc00d54: 66a2 ld a3,8(sp) + 3bc00d56: 00f76363 bltu a4,a5,3bc00d5c + 3bc00d5a: cc1c sw a5,24(s0) + 3bc00d5c: e436 sd a3,8(sp) + 3bc00d5e: c87ff097 auipc ra,0xc87ff + 3bc00d62: 2c2080e7 jalr 706(ra) # 4400020 + 3bc00d66: 67b5 lui a5,0xd + 3bc00d68: 2501 sext.w a0,a0 + 3bc00d6a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00d6e: 66a2 ld a3,8(sp) + 3bc00d70: 01846603 lwu a2,24(s0) + 3bc00d74: 484c lw a1,20(s0) + 3bc00d76: 04f51363 bne a0,a5,3bc00dbc + 3bc00d7a: 0000e517 auipc a0,0xe + 3bc00d7e: a8650513 addi a0,a0,-1402 # 3bc0e800 + 3bc00d82: e9fff0ef jal ra,3bc00c20 + 3bc00d86: 02054763 bltz a0,3bc00db4 + 3bc00d8a: 4c0c lw a1,24(s0) + 3bc00d8c: 0000e517 auipc a0,0xe + 3bc00d90: a7450513 addi a0,a0,-1420 # 3bc0e800 + 3bc00d94: c87ff097 auipc ra,0xc87ff + 3bc00d98: 30c080e7 jalr 780(ra) # 44000a0 + 3bc00d9c: 4810 lw a2,16(s0) + 3bc00d9e: 0005059b sext.w a1,a0 + 3bc00da2: 02b60663 beq a2,a1,3bc00dce + 3bc00da6: 00009517 auipc a0,0x9 + 3bc00daa: 48a50513 addi a0,a0,1162 # 3bc0a230 + 3bc00dae: daaff0ef jal ra,3bc00358 + 3bc00db2: 557d li a0,-1 + 3bc00db4: 60e2 ld ra,24(sp) + 3bc00db6: 6442 ld s0,16(sp) + 3bc00db8: 6105 addi sp,sp,32 + 3bc00dba: 8082 ret + 3bc00dbc: 0000e517 auipc a0,0xe + 3bc00dc0: a4450513 addi a0,a0,-1468 # 3bc0e800 + 3bc00dc4: c87ff097 auipc ra,0xc87ff + 3bc00dc8: 29c080e7 jalr 668(ra) # 4400060 + 3bc00dcc: bf6d j 3bc00d86 + 3bc00dce: 00009517 auipc a0,0x9 + 3bc00dd2: 48a50513 addi a0,a0,1162 # 3bc0a258 + 3bc00dd6: d82ff0ef jal ra,3bc00358 + 3bc00dda: 4501 li a0,0 + 3bc00ddc: bfe1 j 3bc00db4 + +000000003bc00dde : + 3bc00dde: 7179 addi sp,sp,-48 + 3bc00de0: ec26 sd s1,24(sp) + 3bc00de2: 74cd lui s1,0xffff3 + 3bc00de4: e84a sd s2,16(sp) + 3bc00de6: e44e sd s3,8(sp) + 3bc00de8: e052 sd s4,0(sp) + 3bc00dea: f406 sd ra,40(sp) + 3bc00dec: f022 sd s0,32(sp) + 3bc00dee: 1604849b addiw s1,s1,352 + 3bc00df2: 4995 li s3,5 + 3bc00df4: 4a05 li s4,1 + 3bc00df6: 00009917 auipc s2,0x9 + 3bc00dfa: 46a90913 addi s2,s2,1130 # 3bc0a260 + 3bc00dfe: 4401 li s0,0 + 3bc00e00: c87ff097 auipc ra,0xc87ff + 3bc00e04: 2c0080e7 jalr 704(ra) # 44000c0 + 3bc00e08: 00a45e63 bge s0,a0,3bc00e24 + 3bc00e0c: 8522 mv a0,s0 + 3bc00e0e: e53ff0ef jal ra,3bc00c60 + 3bc00e12: 00055463 bgez a0,3bc00e1a + 3bc00e16: 2405 addiw s0,s0,1 + 3bc00e18: b7e5 j 3bc00e00 + 3bc00e1a: 8522 mv a0,s0 + 3bc00e1c: f15ff0ef jal ra,3bc00d30 + 3bc00e20: fe054be3 bltz a0,3bc00e16 + 3bc00e24: c87ff097 auipc ra,0xc87ff + 3bc00e28: 29c080e7 jalr 668(ra) # 44000c0 + 3bc00e2c: 02a45f63 bge s0,a0,3bc00e6a + 3bc00e30: dd7ff0ef jal ra,3bc00c06 + 3bc00e34: 0000a417 auipc s0,0xa + 3bc00e38: 60c40413 addi s0,s0,1548 # 3bc0b440 + 3bc00e3c: 601c ld a5,0(s0) + 3bc00e3e: 00a79123 sh a0,2(a5) + 3bc00e42: 0000e517 auipc a0,0xe + 3bc00e46: 9be50513 addi a0,a0,-1602 # 3bc0e800 + 3bc00e4a: 34a070ef jal ra,3bc08194 + 3bc00e4e: db9ff0ef jal ra,3bc00c06 + 3bc00e52: 601c ld a5,0(s0) + 3bc00e54: 70a2 ld ra,40(sp) + 3bc00e56: 7402 ld s0,32(sp) + 3bc00e58: 00a79223 sh a0,4(a5) + 3bc00e5c: 64e2 ld s1,24(sp) + 3bc00e5e: 6942 ld s2,16(sp) + 3bc00e60: 69a2 ld s3,8(sp) + 3bc00e62: 6a02 ld s4,0(sp) + 3bc00e64: 4501 li a0,0 + 3bc00e66: 6145 addi sp,sp,48 + 3bc00e68: 8082 ret + 3bc00e6a: c87ff097 auipc ra,0xc87ff + 3bc00e6e: 1b6080e7 jalr 438(ra) # 4400020 + 3bc00e72: 9d25 addw a0,a0,s1 + 3bc00e74: 85a2 mv a1,s0 + 3bc00e76: 00a9ef63 bltu s3,a0,3bc00e94 + 3bc00e7a: 00aa1533 sll a0,s4,a0 + 3bc00e7e: 02957513 andi a0,a0,41 + 3bc00e82: c909 beqz a0,3bc00e94 + 3bc00e84: 854a mv a0,s2 + 3bc00e86: cd2ff0ef jal ra,3bc00358 + 3bc00e8a: c87ff097 auipc ra,0xc87ff + 3bc00e8e: 1f6080e7 jalr 502(ra) # 4400080 + 3bc00e92: b7b5 j 3bc00dfe + 3bc00e94: 00009517 auipc a0,0x9 + 3bc00e98: 3f450513 addi a0,a0,1012 # 3bc0a288 + 3bc00e9c: cbcff0ef jal ra,3bc00358 + 3bc00ea0: f1aff0ef jal ra,3bc005ba + +000000003bc00ea4 : + 3bc00ea4: 7179 addi sp,sp,-48 + 3bc00ea6: e84a sd s2,16(sp) + 3bc00ea8: 0000a917 auipc s2,0xa + 3bc00eac: 59890913 addi s2,s2,1432 # 3bc0b440 + 3bc00eb0: 00093783 ld a5,0(s2) + 3bc00eb4: f022 sd s0,32(sp) + 3bc00eb6: 0000d417 auipc s0,0xd + 3bc00eba: 94a40413 addi s0,s0,-1718 # 3bc0d800 <__BSS_START__> + 3bc00ebe: 0047d703 lhu a4,4(a5) + 3bc00ec2: 5414 lw a3,40(s0) + 3bc00ec4: 5450 lw a2,44(s0) + 3bc00ec6: 504c lw a1,36(s0) + 3bc00ec8: ec26 sd s1,24(sp) + 3bc00eca: f406 sd ra,40(sp) + 3bc00ecc: e44e sd s3,8(sp) + 3bc00ece: 00e79323 sh a4,6(a5) + 3bc00ed2: 84aa mv s1,a0 + 3bc00ed4: 00009517 auipc a0,0x9 + 3bc00ed8: 3dc50513 addi a0,a0,988 # 3bc0a2b0 + 3bc00edc: c7cff0ef jal ra,3bc00358 + 3bc00ee0: 545c lw a5,44(s0) + 3bc00ee2: 00009517 auipc a0,0x9 + 3bc00ee6: 3e650513 addi a0,a0,998 # 3bc0a2c8 + 3bc00eea: 10078763 beqz a5,3bc00ff8 + 3bc00eee: 800006b7 lui a3,0x80000 + 3bc00ef2: 00f6863b addw a2,a3,a5 + 3bc00ef6: 04000737 lui a4,0x4000 + 3bc00efa: 00e66b63 bltu a2,a4,3bc00f10 + 3bc00efe: 85be mv a1,a5 + 3bc00f00: 00009517 auipc a0,0x9 + 3bc00f04: 3e050513 addi a0,a0,992 # 3bc0a2e0 + 3bc00f08: c50ff0ef jal ra,3bc00358 + 3bc00f0c: eaeff0ef jal ra,3bc005ba + 3bc00f10: 540c lw a1,40(s0) + 3bc00f12: 9fad addw a5,a5,a1 + 3bc00f14: 9fb5 addw a5,a5,a3 + 3bc00f16: 00e7e763 bltu a5,a4,3bc00f24 + 3bc00f1a: 00009517 auipc a0,0x9 + 3bc00f1e: 3f650513 addi a0,a0,1014 # 3bc0a310 + 3bc00f22: b7dd j 3bc00f08 + 3bc00f24: c87ff097 auipc ra,0xc87ff + 3bc00f28: 0fc080e7 jalr 252(ra) # 4400020 + 3bc00f2c: 67b5 lui a5,0xd + 3bc00f2e: 0005071b sext.w a4,a0 + 3bc00f32: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc00f36: 504c lw a1,36(s0) + 3bc00f38: 02846603 lwu a2,40(s0) + 3bc00f3c: 02c46503 lwu a0,44(s0) + 3bc00f40: 86a6 mv a3,s1 + 3bc00f42: 04f71263 bne a4,a5,3bc00f86 + 3bc00f46: cdbff0ef jal ra,3bc00c20 + 3bc00f4a: 84aa mv s1,a0 + 3bc00f4c: 02054563 bltz a0,3bc00f76 + 3bc00f50: 540c lw a1,40(s0) + 3bc00f52: 02c46503 lwu a0,44(s0) + 3bc00f56: c87ff097 auipc ra,0xc87ff + 3bc00f5a: 14a080e7 jalr 330(ra) # 44000a0 + 3bc00f5e: 5010 lw a2,32(s0) + 3bc00f60: 0005059b sext.w a1,a0 + 3bc00f64: 02b60663 beq a2,a1,3bc00f90 + 3bc00f68: 00009517 auipc a0,0x9 + 3bc00f6c: 3d850513 addi a0,a0,984 # 3bc0a340 + 3bc00f70: be8ff0ef jal ra,3bc00358 + 3bc00f74: 54fd li s1,-1 + 3bc00f76: 70a2 ld ra,40(sp) + 3bc00f78: 7402 ld s0,32(sp) + 3bc00f7a: 6942 ld s2,16(sp) + 3bc00f7c: 69a2 ld s3,8(sp) + 3bc00f7e: 8526 mv a0,s1 + 3bc00f80: 64e2 ld s1,24(sp) + 3bc00f82: 6145 addi sp,sp,48 + 3bc00f84: 8082 ret + 3bc00f86: c87ff097 auipc ra,0xc87ff + 3bc00f8a: 0da080e7 jalr 218(ra) # 4400060 + 3bc00f8e: bf75 j 3bc00f4a + 3bc00f90: 02846583 lwu a1,40(s0) + 3bc00f94: 02c46503 lwu a0,44(s0) + 3bc00f98: 3c0026b7 lui a3,0x3c002 + 3bc00f9c: 4601 li a2,0 + 3bc00f9e: 9f7ff0ef jal ra,3bc00994 + 3bc00fa2: 84aa mv s1,a0 + 3bc00fa4: 00055a63 bgez a0,3bc00fb8 + 3bc00fa8: 85aa mv a1,a0 + 3bc00faa: 00009517 auipc a0,0x9 + 3bc00fae: 3be50513 addi a0,a0,958 # 3bc0a368 + 3bc00fb2: ba6ff0ef jal ra,3bc00358 + 3bc00fb6: b7c1 j 3bc00f76 + 3bc00fb8: 02846583 lwu a1,40(s0) + 3bc00fbc: 02c46503 lwu a0,44(s0) + 3bc00fc0: 0e0009b7 lui s3,0xe000 + 3bc00fc4: 992ff0ef jal ra,3bc00156 + 3bc00fc8: 07c9a483 lw s1,124(s3) # e00007c + 3bc00fcc: 969ff0ef jal ra,3bc00934 + 3bc00fd0: c37ff0ef jal ra,3bc00c06 + 3bc00fd4: 00093783 ld a5,0(s2) + 3bc00fd8: 2481 sext.w s1,s1 + 3bc00fda: 00a79323 sh a0,6(a5) + 3bc00fde: 0abc17b7 lui a5,0xabc1 + 3bc00fe2: def78793 addi a5,a5,-529 # abc0def + 3bc00fe6: 00f49d63 bne s1,a5,3bc01000 + 3bc00fea: 545c lw a5,44(s0) + 3bc00fec: 06f9ae23 sw a5,124(s3) + 3bc00ff0: 00009517 auipc a0,0x9 + 3bc00ff4: 39850513 addi a0,a0,920 # 3bc0a388 + 3bc00ff8: b60ff0ef jal ra,3bc00358 + 3bc00ffc: 4481 li s1,0 + 3bc00ffe: bfa5 j 3bc00f76 + 3bc01000: 02c46503 lwu a0,44(s0) + 3bc01004: de8ff0ef jal ra,3bc005ec + 3bc01008: b7e5 j 3bc00ff0 + +000000003bc0100a : + 3bc0100a: 1101 addi sp,sp,-32 + 3bc0100c: e822 sd s0,16(sp) + 3bc0100e: 0000c417 auipc s0,0xc + 3bc01012: 7f240413 addi s0,s0,2034 # 3bc0d800 <__BSS_START__> + 3bc01016: e04a sd s2,0(sp) + 3bc01018: 5c14 lw a3,56(s0) + 3bc0101a: 5c50 lw a2,60(s0) + 3bc0101c: 892e mv s2,a1 + 3bc0101e: 584c lw a1,52(s0) + 3bc01020: e426 sd s1,8(sp) + 3bc01022: 84aa mv s1,a0 + 3bc01024: 00009517 auipc a0,0x9 + 3bc01028: 36c50513 addi a0,a0,876 # 3bc0a390 + 3bc0102c: ec06 sd ra,24(sp) + 3bc0102e: b2aff0ef jal ra,3bc00358 + 3bc01032: 5c5c lw a5,60(s0) + 3bc01034: eb89 bnez a5,3bc01046 + 3bc01036: 00009517 auipc a0,0x9 + 3bc0103a: 37250513 addi a0,a0,882 # 3bc0a3a8 + 3bc0103e: b1aff0ef jal ra,3bc00358 + 3bc01042: 4481 li s1,0 + 3bc01044: a069 j 3bc010ce + 3bc01046: 800006b7 lui a3,0x80000 + 3bc0104a: 00f6863b addw a2,a3,a5 + 3bc0104e: 04000737 lui a4,0x4000 + 3bc01052: 00e66b63 bltu a2,a4,3bc01068 + 3bc01056: 85be mv a1,a5 + 3bc01058: 00009517 auipc a0,0x9 + 3bc0105c: 36050513 addi a0,a0,864 # 3bc0a3b8 + 3bc01060: af8ff0ef jal ra,3bc00358 + 3bc01064: d56ff0ef jal ra,3bc005ba + 3bc01068: 5c0c lw a1,56(s0) + 3bc0106a: 9fad addw a5,a5,a1 + 3bc0106c: 9fb5 addw a5,a5,a3 + 3bc0106e: 00e7e763 bltu a5,a4,3bc0107c + 3bc01072: 00009517 auipc a0,0x9 + 3bc01076: 37650513 addi a0,a0,886 # 3bc0a3e8 + 3bc0107a: b7dd j 3bc01060 + 3bc0107c: c87ff097 auipc ra,0xc87ff + 3bc01080: fa4080e7 jalr -92(ra) # 4400020 + 3bc01084: 67b5 lui a5,0xd + 3bc01086: 0005071b sext.w a4,a0 + 3bc0108a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0108e: 584c lw a1,52(s0) + 3bc01090: 03846603 lwu a2,56(s0) + 3bc01094: 03c46503 lwu a0,60(s0) + 3bc01098: 86a6 mv a3,s1 + 3bc0109a: 04f71163 bne a4,a5,3bc010dc + 3bc0109e: b83ff0ef jal ra,3bc00c20 + 3bc010a2: 84aa mv s1,a0 + 3bc010a4: 02054563 bltz a0,3bc010ce + 3bc010a8: 5c0c lw a1,56(s0) + 3bc010aa: 03c46503 lwu a0,60(s0) + 3bc010ae: c87ff097 auipc ra,0xc87ff + 3bc010b2: ff2080e7 jalr -14(ra) # 44000a0 + 3bc010b6: 5810 lw a2,48(s0) + 3bc010b8: 0005059b sext.w a1,a0 + 3bc010bc: 02b60563 beq a2,a1,3bc010e6 + 3bc010c0: 00009517 auipc a0,0x9 + 3bc010c4: 35850513 addi a0,a0,856 # 3bc0a418 + 3bc010c8: a90ff0ef jal ra,3bc00358 + 3bc010cc: 54fd li s1,-1 + 3bc010ce: 60e2 ld ra,24(sp) + 3bc010d0: 6442 ld s0,16(sp) + 3bc010d2: 6902 ld s2,0(sp) + 3bc010d4: 8526 mv a0,s1 + 3bc010d6: 64a2 ld s1,8(sp) + 3bc010d8: 6105 addi sp,sp,32 + 3bc010da: 8082 ret + 3bc010dc: c87ff097 auipc ra,0xc87ff + 3bc010e0: f84080e7 jalr -124(ra) # 4400060 + 3bc010e4: bf7d j 3bc010a2 + 3bc010e6: 03846583 lwu a1,56(s0) + 3bc010ea: 03c46503 lwu a0,60(s0) + 3bc010ee: 3c0026b7 lui a3,0x3c002 + 3bc010f2: 4601 li a2,0 + 3bc010f4: 8a1ff0ef jal ra,3bc00994 + 3bc010f8: 84aa mv s1,a0 + 3bc010fa: 00055a63 bgez a0,3bc0110e + 3bc010fe: 85aa mv a1,a0 + 3bc01100: 00009517 auipc a0,0x9 + 3bc01104: 33850513 addi a0,a0,824 # 3bc0a438 + 3bc01108: a50ff0ef jal ra,3bc00358 + 3bc0110c: b7c9 j 3bc010ce + 3bc0110e: 03846583 lwu a1,56(s0) + 3bc01112: 03c46503 lwu a0,60(s0) + 3bc01116: 840ff0ef jal ra,3bc00156 + 3bc0111a: 00009517 auipc a0,0x9 + 3bc0111e: 33e50513 addi a0,a0,830 # 3bc0a458 + 3bc01122: a36ff0ef jal ra,3bc00358 + 3bc01126: 03c46783 lwu a5,60(s0) + 3bc0112a: 00f93023 sd a5,0(s2) + 3bc0112e: bf11 j 3bc01042 + +000000003bc01130 : + 3bc01130: 715d addi sp,sp,-80 + 3bc01132: f44e sd s3,40(sp) + 3bc01134: 0000c997 auipc s3,0xc + 3bc01138: 6cc98993 addi s3,s3,1740 # 3bc0d800 <__BSS_START__> + 3bc0113c: e85a sd s6,16(sp) + 3bc0113e: 8b2e mv s6,a1 + 3bc01140: 0449a583 lw a1,68(s3) + 3bc01144: ec56 sd s5,24(sp) + 3bc01146: 8aaa mv s5,a0 + 3bc01148: 00009517 auipc a0,0x9 + 3bc0114c: 31850513 addi a0,a0,792 # 3bc0a460 + 3bc01150: e486 sd ra,72(sp) + 3bc01152: e0a2 sd s0,64(sp) + 3bc01154: fc26 sd s1,56(sp) + 3bc01156: f84a sd s2,48(sp) + 3bc01158: f052 sd s4,32(sp) + 3bc0115a: 9feff0ef jal ra,3bc00358 + 3bc0115e: c87ff097 auipc ra,0xc87ff + 3bc01162: ec2080e7 jalr -318(ra) # 4400020 + 3bc01166: 67b5 lui a5,0xd + 3bc01168: 2501 sext.w a0,a0 + 3bc0116a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0116e: 0449a583 lw a1,68(s3) + 3bc01172: 86d6 mv a3,s5 + 3bc01174: 20000613 li a2,512 + 3bc01178: 02f51663 bne a0,a5,3bc011a4 + 3bc0117c: 0000d517 auipc a0,0xd + 3bc01180: 68450513 addi a0,a0,1668 # 3bc0e800 + 3bc01184: a9dff0ef jal ra,3bc00c20 + 3bc01188: 02055763 bgez a0,3bc011b6 + 3bc0118c: 59fd li s3,-1 + 3bc0118e: 60a6 ld ra,72(sp) + 3bc01190: 6406 ld s0,64(sp) + 3bc01192: 74e2 ld s1,56(sp) + 3bc01194: 7942 ld s2,48(sp) + 3bc01196: 7a02 ld s4,32(sp) + 3bc01198: 6ae2 ld s5,24(sp) + 3bc0119a: 6b42 ld s6,16(sp) + 3bc0119c: 854e mv a0,s3 + 3bc0119e: 79a2 ld s3,40(sp) + 3bc011a0: 6161 addi sp,sp,80 + 3bc011a2: 8082 ret + 3bc011a4: 0000d517 auipc a0,0xd + 3bc011a8: 65c50513 addi a0,a0,1628 # 3bc0e800 + 3bc011ac: c87ff097 auipc ra,0xc87ff + 3bc011b0: eb4080e7 jalr -332(ra) # 4400060 + 3bc011b4: bfd1 j 3bc01188 + 3bc011b6: 0000d417 auipc s0,0xd + 3bc011ba: 64a40413 addi s0,s0,1610 # 3bc0e800 + 3bc011be: 4458 lw a4,12(s0) + 3bc011c0: 6814 ld a3,16(s0) + 3bc011c2: 4410 lw a2,8(s0) + 3bc011c4: 1ff7049b addiw s1,a4,511 + 3bc011c8: 404c lw a1,4(s0) + 3bc011ca: e004f493 andi s1,s1,-512 + 3bc011ce: 2481 sext.w s1,s1 + 3bc011d0: 87a6 mv a5,s1 + 3bc011d2: 00009517 auipc a0,0x9 + 3bc011d6: 29e50513 addi a0,a0,670 # 3bc0a470 + 3bc011da: 97eff0ef jal ra,3bc00358 + 3bc011de: 4058 lw a4,4(s0) + 3bc011e0: 345a37b7 lui a5,0x345a3 + 3bc011e4: 34278793 addi a5,a5,834 # 345a3342 + 3bc011e8: 06f70363 beq a4,a5,3bc0124e + 3bc011ec: 414d37b7 lui a5,0x414d3 + 3bc011f0: 34278793 addi a5,a5,834 # 414d3342 <__BL2_END__+0x58bff32> + 3bc011f4: 06f70963 beq a4,a5,3bc01266 + 3bc011f8: 01043903 ld s2,16(s0) + 3bc011fc: 4a01 li s4,0 + 3bc011fe: c87ff097 auipc ra,0xc87ff + 3bc01202: e22080e7 jalr -478(ra) # 4400020 + 3bc01206: 67b5 lui a5,0xd + 3bc01208: 2501 sext.w a0,a0 + 3bc0120a: ea378793 addi a5,a5,-349 # cea3 <__BSS_SIZE__+0x7293> + 3bc0120e: 0449a583 lw a1,68(s3) + 3bc01212: 86d6 mv a3,s5 + 3bc01214: 8626 mv a2,s1 + 3bc01216: 04f51a63 bne a0,a5,3bc0126a + 3bc0121a: 854a mv a0,s2 + 3bc0121c: a05ff0ef jal ra,3bc00c20 + 3bc01220: f60546e3 bltz a0,3bc0118c + 3bc01224: 444c lw a1,12(s0) + 3bc01226: 00c90993 addi s3,s2,12 + 3bc0122a: 854e mv a0,s3 + 3bc0122c: 35d1 addiw a1,a1,-12 + 3bc0122e: c87ff097 auipc ra,0xc87ff + 3bc01232: e72080e7 jalr -398(ra) # 44000a0 + 3bc01236: 4410 lw a2,8(s0) + 3bc01238: 0005059b sext.w a1,a0 + 3bc0123c: 02b60d63 beq a2,a1,3bc01276 + 3bc01240: 00009517 auipc a0,0x9 + 3bc01244: 26050513 addi a0,a0,608 # 3bc0a4a0 + 3bc01248: 910ff0ef jal ra,3bc00358 + 3bc0124c: b781 j 3bc0118c + 3bc0124e: 4a09 li s4,2 + 3bc01250: 85d2 mv a1,s4 + 3bc01252: 00009517 auipc a0,0x9 + 3bc01256: 23e50513 addi a0,a0,574 # 3bc0a490 + 3bc0125a: 00815937 lui s2,0x815 + 3bc0125e: 8faff0ef jal ra,3bc00358 + 3bc01262: 0922 slli s2,s2,0x8 + 3bc01264: bf69 j 3bc011fe + 3bc01266: 4a05 li s4,1 + 3bc01268: b7e5 j 3bc01250 + 3bc0126a: 854a mv a0,s2 + 3bc0126c: c87ff097 auipc ra,0xc87ff + 3bc01270: df4080e7 jalr -524(ra) # 4400060 + 3bc01274: b775 j 3bc01220 + 3bc01276: 444c lw a1,12(s0) + 3bc01278: 854e mv a0,s3 + 3bc0127a: 3c0026b7 lui a3,0x3c002 + 3bc0127e: 35d1 addiw a1,a1,-12 + 3bc01280: 4651 li a2,20 + 3bc01282: 7c05b58b extu a1,a1,31,0 + 3bc01286: f0eff0ef jal ra,3bc00994 + 3bc0128a: 89aa mv s3,a0 + 3bc0128c: 00055a63 bgez a0,3bc012a0 + 3bc01290: 85aa mv a1,a0 + 3bc01292: 00009517 auipc a0,0x9 + 3bc01296: 23650513 addi a0,a0,566 # 3bc0a4c8 + 3bc0129a: 8beff0ef jal ra,3bc00358 + 3bc0129e: bdc5 j 3bc0118e + 3bc012a0: 967ff0ef jal ra,3bc00c06 + 3bc012a4: 0000a997 auipc s3,0xa + 3bc012a8: 19c98993 addi s3,s3,412 # 3bc0b440 + 3bc012ac: 0009b783 ld a5,0(s3) + 3bc012b0: 00a79423 sh a0,8(a5) + 3bc012b4: bccff0ef jal ra,3bc00680 + 3bc012b8: 94fff0ef jal ra,3bc00c06 + 3bc012bc: 0009b783 ld a5,0(s3) + 3bc012c0: 00a79523 sh a0,10(a5) + 3bc012c4: 040a0363 beqz s4,3bc0130a + 3bc012c8: 6804 ld s1,16(s0) + 3bc012ca: 010007b7 lui a5,0x1000 + 3bc012ce: 02000613 li a2,32 + 3bc012d2: 85ca mv a1,s2 + 3bc012d4: 8526 mv a0,s1 + 3bc012d6: e43e sd a5,8(sp) + 3bc012d8: f94ff0ef jal ra,3bc00a6c + 3bc012dc: 00c46683 lwu a3,12(s0) + 3bc012e0: 02090613 addi a2,s2,32 # 815020 <__BSS_SIZE__+0x80f410> + 3bc012e4: 002c addi a1,sp,8 + 3bc012e6: 02048513 addi a0,s1,32 # ffffffffffff3020 <__BL2_END__+0xffffffffc43dfc10> + 3bc012ea: 8752 mv a4,s4 + 3bc012ec: 3d4000ef jal ra,3bc016c0 + 3bc012f0: 6622 ld a2,8(sp) + 3bc012f2: 85aa mv a1,a0 + 3bc012f4: 0006049b sext.w s1,a2 + 3bc012f8: 00055963 bgez a0,3bc0130a + 3bc012fc: 00009517 auipc a0,0x9 + 3bc01300: 1ec50513 addi a0,a0,492 # 3bc0a4e8 + 3bc01304: 854ff0ef jal ra,3bc00358 + 3bc01308: b551 j 3bc0118c + 3bc0130a: 6808 ld a0,16(s0) + 3bc0130c: 85a6 mv a1,s1 + 3bc0130e: e49fe0ef jal ra,3bc00156 + 3bc01312: 8f5ff0ef jal ra,3bc00c06 + 3bc01316: 0009b783 ld a5,0(s3) + 3bc0131a: 4981 li s3,0 + 3bc0131c: 00a79623 sh a0,12(a5) # 100000c <__BSS_SIZE__+0xffa3fc> + 3bc01320: 00009517 auipc a0,0x9 + 3bc01324: 1f850513 addi a0,a0,504 # 3bc0a518 + 3bc01328: 830ff0ef jal ra,3bc00358 + 3bc0132c: 681c ld a5,16(s0) + 3bc0132e: 02078793 addi a5,a5,32 + 3bc01332: 00fb3023 sd a5,0(s6) + 3bc01336: bda1 j 3bc0118e + +000000003bc01338 : + 3bc01338: 7179 addi sp,sp,-48 + 3bc0133a: ec26 sd s1,24(sp) + 3bc0133c: 74cd lui s1,0xffff3 + 3bc0133e: e84a sd s2,16(sp) + 3bc01340: f406 sd ra,40(sp) + 3bc01342: f022 sd s0,32(sp) + 3bc01344: e002 sd zero,0(sp) + 3bc01346: e402 sd zero,8(sp) + 3bc01348: 1604849b addiw s1,s1,352 + 3bc0134c: cd0ff0ef jal ra,3bc0081c + 3bc01350: 4915 li s2,5 + 3bc01352: 4401 li s0,0 + 3bc01354: c87ff097 auipc ra,0xc87ff + 3bc01358: d6c080e7 jalr -660(ra) # 44000c0 + 3bc0135c: 02a45563 bge s0,a0,3bc01386 + 3bc01360: 8522 mv a0,s0 + 3bc01362: b43ff0ef jal ra,3bc00ea4 + 3bc01366: 00055463 bgez a0,3bc0136e + 3bc0136a: 2405 addiw s0,s0,1 + 3bc0136c: b7e5 j 3bc01354 + 3bc0136e: 858a mv a1,sp + 3bc01370: 8522 mv a0,s0 + 3bc01372: c99ff0ef jal ra,3bc0100a + 3bc01376: fe054ae3 bltz a0,3bc0136a + 3bc0137a: 002c addi a1,sp,8 + 3bc0137c: 8522 mv a0,s0 + 3bc0137e: db3ff0ef jal ra,3bc01130 + 3bc01382: fe0544e3 bltz a0,3bc0136a + 3bc01386: c87ff097 auipc ra,0xc87ff + 3bc0138a: d3a080e7 jalr -710(ra) # 44000c0 + 3bc0138e: 02a45b63 bge s0,a0,3bc013c4 + 3bc01392: dbbfe0ef jal ra,3bc0014c + 3bc01396: f2dfe0ef jal ra,3bc002c2 + 3bc0139a: c9aff0ef jal ra,3bc00834 + 3bc0139e: 6582 ld a1,0(sp) + 3bc013a0: c5a5 beqz a1,3bc01408 + 3bc013a2: 00009517 auipc a0,0x9 + 3bc013a6: 1ae50513 addi a0,a0,430 # 3bc0a550 + 3bc013aa: faffe0ef jal ra,3bc00358 + 3bc013ae: 65a2 ld a1,8(sp) + 3bc013b0: 6502 ld a0,0(sp) + 3bc013b2: e69fe0ef jal ra,3bc0021a + 3bc013b6: 70a2 ld ra,40(sp) + 3bc013b8: 7402 ld s0,32(sp) + 3bc013ba: 64e2 ld s1,24(sp) + 3bc013bc: 6942 ld s2,16(sp) + 3bc013be: 4501 li a0,0 + 3bc013c0: 6145 addi sp,sp,48 + 3bc013c2: 8082 ret + 3bc013c4: c87ff097 auipc ra,0xc87ff + 3bc013c8: c5c080e7 jalr -932(ra) # 4400020 + 3bc013cc: 00a487bb addw a5,s1,a0 + 3bc013d0: 85a2 mv a1,s0 + 3bc013d2: 02f96363 bltu s2,a5,3bc013f8 + 3bc013d6: 4505 li a0,1 + 3bc013d8: 00f51533 sll a0,a0,a5 + 3bc013dc: 02957513 andi a0,a0,41 + 3bc013e0: cd01 beqz a0,3bc013f8 + 3bc013e2: 00009517 auipc a0,0x9 + 3bc013e6: e7e50513 addi a0,a0,-386 # 3bc0a260 + 3bc013ea: f6ffe0ef jal ra,3bc00358 + 3bc013ee: c87ff097 auipc ra,0xc87ff + 3bc013f2: c92080e7 jalr -878(ra) # 4400080 + 3bc013f6: bfb1 j 3bc01352 + 3bc013f8: 00009517 auipc a0,0x9 + 3bc013fc: 13850513 addi a0,a0,312 # 3bc0a530 + 3bc01400: f59fe0ef jal ra,3bc00358 + 3bc01404: 9b6ff0ef jal ra,3bc005ba + 3bc01408: 65a2 ld a1,8(sp) + 3bc0140a: 00009517 auipc a0,0x9 + 3bc0140e: 16650513 addi a0,a0,358 # 3bc0a570 + 3bc01412: f47fe0ef jal ra,3bc00358 + 3bc01416: 6522 ld a0,8(sp) + 3bc01418: e7bfe0ef jal ra,3bc00292 + 3bc0141c: bf69 j 3bc013b6 + +000000003bc0141e : + 3bc0141e: 1141 addi sp,sp,-16 + 3bc01420: e406 sd ra,8(sp) + 3bc01422: b200f737 lui a4,0xb200f + 3bc01426: e022 sd s0,0(sp) + 3bc01428: 030007b7 lui a5,0x3000 + 3bc0142c: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc01430: fd6ff0ef jal ra,3bc00c06 + 3bc01434: 0000a797 auipc a5,0xa + 3bc01438: 00c7b783 ld a5,12(a5) # 3bc0b440 + 3bc0143c: 00a79023 sh a0,0(a5) + 3bc01440: 00009617 auipc a2,0x9 + 3bc01444: bb060613 addi a2,a2,-1104 # 3bc09ff0 + 3bc01448: 00009597 auipc a1,0x9 + 3bc0144c: bc858593 addi a1,a1,-1080 # 3bc0a010 + 3bc01450: 00009517 auipc a0,0x9 + 3bc01454: 14050513 addi a0,a0,320 # 3bc0a590 + 3bc01458: f01fe0ef jal ra,3bc00358 + 3bc0145c: 0e000437 lui s0,0xe000 + 3bc01460: 400c lw a1,0(s0) + 3bc01462: 00009517 auipc a0,0x9 + 3bc01466: 13e50513 addi a0,a0,318 # 3bc0a5a0 + 3bc0146a: eeffe0ef jal ra,3bc00358 + 3bc0146e: 3c0027b7 lui a5,0x3c002 + 3bc01472: 47cc lw a1,12(a5) + 3bc01474: 0e07a603 lw a2,224(a5) # 3c0020e0 <__BL2_END__+0x3eecd0> + 3bc01478: 00009517 auipc a0,0x9 + 3bc0147c: 14050513 addi a0,a0,320 # 3bc0a5b8 + 3bc01480: ed9fe0ef jal ra,3bc00358 + 3bc01484: 4c0c lw a1,24(s0) + 3bc01486: 00009517 auipc a0,0x9 + 3bc0148a: 16a50513 addi a0,a0,362 # 3bc0a5f0 + 3bc0148e: 2581 sext.w a1,a1 + 3bc01490: ec9fe0ef jal ra,3bc00358 + 3bc01494: 9a2ff0ef jal ra,3bc00636 + 3bc01498: b9aff0ef jal ra,3bc00832 + 3bc0149c: bdcff0ef jal ra,3bc00878 + 3bc014a0: 93fff0ef jal ra,3bc00dde + 3bc014a4: e95ff0ef jal ra,3bc01338 + 3bc014a8: 00009517 auipc a0,0x9 + 3bc014ac: 16050513 addi a0,a0,352 # 3bc0a608 + 3bc014b0: ea9fe0ef jal ra,3bc00358 + 3bc014b4: a001 j 3bc014b4 + +000000003bc014b6 : + 3bc014b6: 8082 ret + +000000003bc014b8 : + 3bc014b8: 00012797 auipc a5,0x12 + 3bc014bc: e4078793 addi a5,a5,-448 # 3bc132f8 + 3bc014c0: 6388 ld a0,0(a5) + 3bc014c2: 00b50733 add a4,a0,a1 + 3bc014c6: e398 sd a4,0(a5) + 3bc014c8: 00012797 auipc a5,0x12 + 3bc014cc: e387b783 ld a5,-456(a5) # 3bc13300 + 3bc014d0: 97ba add a5,a5,a4 + 3bc014d2: 02f76363 bltu a4,a5,3bc014f8 + 3bc014d6: 1141 addi sp,sp,-16 + 3bc014d8: 862e mv a2,a1 + 3bc014da: 00009517 auipc a0,0x9 + 3bc014de: 14650513 addi a0,a0,326 # 3bc0a620 + 3bc014e2: 00009597 auipc a1,0x9 + 3bc014e6: 2a658593 addi a1,a1,678 # 3bc0a788 <__func__.0> + 3bc014ea: e406 sd ra,8(sp) + 3bc014ec: e6dfe0ef jal ra,3bc00358 + 3bc014f0: 60a2 ld ra,8(sp) + 3bc014f2: 4501 li a0,0 + 3bc014f4: 0141 addi sp,sp,16 + 3bc014f6: 8082 ret + 3bc014f8: 8082 ret + +000000003bc014fa : + 3bc014fa: 711d addi sp,sp,-96 + 3bc014fc: 00000797 auipc a5,0x0 + 3bc01500: fbc78793 addi a5,a5,-68 # 3bc014b8 + 3bc01504: f83e sd a5,48(sp) + 3bc01506: 00000797 auipc a5,0x0 + 3bc0150a: fb078793 addi a5,a5,-80 # 3bc014b6 + 3bc0150e: ec86 sd ra,88(sp) + 3bc01510: e8a2 sd s0,80(sp) + 3bc01512: e4a6 sd s1,72(sp) + 3bc01514: e0ca sd s2,64(sp) + 3bc01516: ec36 sd a3,24(sp) + 3bc01518: f402 sd zero,40(sp) + 3bc0151a: fc3e sd a5,56(sp) + 3bc0151c: d202 sw zero,36(sp) + 3bc0151e: e19d bnez a1,3bc01544 + 3bc01520: 00009597 auipc a1,0x9 + 3bc01524: 27058593 addi a1,a1,624 # 3bc0a790 <__func__.1> + 3bc01528: 00009517 auipc a0,0x9 + 3bc0152c: 11850513 addi a0,a0,280 # 3bc0a640 + 3bc01530: e29fe0ef jal ra,3bc00358 + 3bc01534: 5429 li s0,-22 + 3bc01536: 60e6 ld ra,88(sp) + 3bc01538: 8522 mv a0,s0 + 3bc0153a: 6446 ld s0,80(sp) + 3bc0153c: 64a6 ld s1,72(sp) + 3bc0153e: 6906 ld s2,64(sp) + 3bc01540: 6125 addi sp,sp,96 + 3bc01542: 8082 ret + 3bc01544: 20500793 li a5,517 + 3bc01548: 07da slli a5,a5,0x16 + 3bc0154a: 842a mv s0,a0 + 3bc0154c: 00012717 auipc a4,0x12 + 3bc01550: daf73623 sd a5,-596(a4) # 3bc132f8 + 3bc01554: 84ae mv s1,a1 + 3bc01556: 001007b7 lui a5,0x100 + 3bc0155a: 85aa mv a1,a0 + 3bc0155c: 00009517 auipc a0,0x9 + 3bc01560: 10450513 addi a0,a0,260 # 3bc0a660 + 3bc01564: 8932 mv s2,a2 + 3bc01566: 00012717 auipc a4,0x12 + 3bc0156a: d8f73d23 sd a5,-614(a4) # 3bc13300 + 3bc0156e: debfe0ef jal ra,3bc00358 + 3bc01572: 67e2 ld a5,24(sp) + 3bc01574: 4611 li a2,4 + 3bc01576: 00590593 addi a1,s2,5 + 3bc0157a: 17ed addi a5,a5,-5 + 3bc0157c: 1008 addi a0,sp,32 + 3bc0157e: ec3e sd a5,24(sp) + 3bc01580: cecff0ef jal ra,3bc00a6c + 3bc01584: 67e2 ld a5,24(sp) + 3bc01586: 02016583 lwu a1,32(sp) + 3bc0158a: 00009517 auipc a0,0x9 + 3bc0158e: 0ee50513 addi a0,a0,238 # 3bc0a678 + 3bc01592: 17e1 addi a5,a5,-8 + 3bc01594: f42e sd a1,40(sp) + 3bc01596: ec3e sd a5,24(sp) + 3bc01598: dc1fe0ef jal ra,3bc00358 + 3bc0159c: 181c addi a5,sp,48 + 3bc0159e: e03e sd a5,0(sp) + 3bc015a0: 8522 mv a0,s0 + 3bc015a2: 02410893 addi a7,sp,36 + 3bc015a6: 4805 li a6,1 + 3bc015a8: 4795 li a5,5 + 3bc015aa: 874a mv a4,s2 + 3bc015ac: 0834 addi a3,sp,24 + 3bc015ae: 00d90613 addi a2,s2,13 + 3bc015b2: 102c addi a1,sp,40 + 3bc015b4: 5f5040ef jal ra,3bc063a8 + 3bc015b8: 842a mv s0,a0 + 3bc015ba: c919 beqz a0,3bc015d0 + 3bc015bc: 5612 lw a2,36(sp) + 3bc015be: 85aa mv a1,a0 + 3bc015c0: 00009517 auipc a0,0x9 + 3bc015c4: 0d850513 addi a0,a0,216 # 3bc0a698 + 3bc015c8: d91fe0ef jal ra,3bc00358 + 3bc015cc: 5449 li s0,-14 + 3bc015ce: b7a5 j 3bc01536 + 3bc015d0: 75a2 ld a1,40(sp) + 3bc015d2: 00009517 auipc a0,0x9 + 3bc015d6: 0ee50513 addi a0,a0,238 # 3bc0a6c0 + 3bc015da: e08c sd a1,0(s1) + 3bc015dc: d7dfe0ef jal ra,3bc00358 + 3bc015e0: bf99 j 3bc01536 + +000000003bc015e2 : + 3bc015e2: 85aa mv a1,a0 + 3bc015e4: 4501 li a0,0 + 3bc015e6: bdc9 j 3bc014b8 + +000000003bc015e8 : + 3bc015e8: 02b50633 mul a2,a0,a1 + 3bc015ec: 1101 addi sp,sp,-32 + 3bc015ee: e822 sd s0,16(sp) + 3bc015f0: ec06 sd ra,24(sp) + 3bc015f2: 8532 mv a0,a2 + 3bc015f4: e432 sd a2,8(sp) + 3bc015f6: fedff0ef jal ra,3bc015e2 + 3bc015fa: 842a mv s0,a0 + 3bc015fc: c509 beqz a0,3bc01606 + 3bc015fe: 6622 ld a2,8(sp) + 3bc01600: 4581 li a1,0 + 3bc01602: c10ff0ef jal ra,3bc00a12 + 3bc01606: 60e2 ld ra,24(sp) + 3bc01608: 8522 mv a0,s0 + 3bc0160a: 6442 ld s0,16(sp) + 3bc0160c: 6105 addi sp,sp,32 + 3bc0160e: 8082 ret + +000000003bc01610 : + 3bc01610: 8082 ret + +000000003bc01612 : + 3bc01612: 20500793 li a5,517 + 3bc01616: 715d addi sp,sp,-80 + 3bc01618: 07da slli a5,a5,0x16 + 3bc0161a: e0a2 sd s0,64(sp) + 3bc0161c: f84a sd s2,48(sp) + 3bc0161e: 00012717 auipc a4,0x12 + 3bc01622: ccf73d23 sd a5,-806(a4) # 3bc132f8 + 3bc01626: 842a mv s0,a0 + 3bc01628: 001007b7 lui a5,0x100 + 3bc0162c: 892e mv s2,a1 + 3bc0162e: 85aa mv a1,a0 + 3bc01630: 00009517 auipc a0,0x9 + 3bc01634: 0a850513 addi a0,a0,168 # 3bc0a6d8 + 3bc01638: e486 sd ra,72(sp) + 3bc0163a: e436 sd a3,8(sp) + 3bc0163c: 00012717 auipc a4,0x12 + 3bc01640: ccf73223 sd a5,-828(a4) # 3bc13300 + 3bc01644: fc26 sd s1,56(sp) + 3bc01646: f44e sd s3,40(sp) + 3bc01648: 89b2 mv s3,a2 + 3bc0164a: d0ffe0ef jal ra,3bc00358 + 3bc0164e: 06400593 li a1,100 + 3bc01652: 0828 addi a0,sp,24 + 3bc01654: 38b050ef jal ra,3bc071de + 3bc01658: 84aa mv s1,a0 + 3bc0165a: 1b7050ef jal ra,3bc07010 + 3bc0165e: 2501 sext.w a0,a0 + 3bc01660: c105 beqz a0,3bc01680 + 3bc01662: 85a6 mv a1,s1 + 3bc01664: 00009517 auipc a0,0x9 + 3bc01668: 08c50513 addi a0,a0,140 # 3bc0a6f0 + 3bc0166c: cedfe0ef jal ra,3bc00358 + 3bc01670: 557d li a0,-1 + 3bc01672: 60a6 ld ra,72(sp) + 3bc01674: 6406 ld s0,64(sp) + 3bc01676: 74e2 ld s1,56(sp) + 3bc01678: 7942 ld s2,48(sp) + 3bc0167a: 79a2 ld s3,40(sp) + 3bc0167c: 6161 addi sp,sp,80 + 3bc0167e: 8082 ret + 3bc01680: 6562 ld a0,24(sp) + 3bc01682: 4781 li a5,0 + 3bc01684: 0038 addi a4,sp,8 + 3bc01686: 85a2 mv a1,s0 + 3bc01688: 86ce mv a3,s3 + 3bc0168a: 864a mv a2,s2 + 3bc0168c: 383050ef jal ra,3bc0720e + 3bc01690: 6622 ld a2,8(sp) + 3bc01692: 00093583 ld a1,0(s2) + 3bc01696: 86aa mv a3,a0 + 3bc01698: 842a mv s0,a0 + 3bc0169a: 00009517 auipc a0,0x9 + 3bc0169e: 06e50513 addi a0,a0,110 # 3bc0a708 + 3bc016a2: cb7fe0ef jal ra,3bc00358 + 3bc016a6: 8526 mv a0,s1 + 3bc016a8: 169050ef jal ra,3bc07010 + 3bc016ac: 0005079b sext.w a5,a0 + 3bc016b0: 4501 li a0,0 + 3bc016b2: d3e1 beqz a5,3bc01672 + 3bc016b4: 85a2 mv a1,s0 + 3bc016b6: 00009517 auipc a0,0x9 + 3bc016ba: 07a50513 addi a0,a0,122 # 3bc0a730 + 3bc016be: b77d j 3bc0166c + +000000003bc016c0 : + 3bc016c0: 7139 addi sp,sp,-64 + 3bc016c2: 87ba mv a5,a4 + 3bc016c4: ec4e sd s3,24(sp) + 3bc016c6: e852 sd s4,16(sp) + 3bc016c8: e456 sd s5,8(sp) + 3bc016ca: 89b2 mv s3,a2 + 3bc016cc: 8a36 mv s4,a3 + 3bc016ce: 8aba mv s5,a4 + 3bc016d0: 8736 mv a4,a3 + 3bc016d2: 86b2 mv a3,a2 + 3bc016d4: 6190 ld a2,0(a1) + 3bc016d6: f426 sd s1,40(sp) + 3bc016d8: f04a sd s2,32(sp) + 3bc016da: 84ae mv s1,a1 + 3bc016dc: 892a mv s2,a0 + 3bc016de: 85aa mv a1,a0 + 3bc016e0: 00009517 auipc a0,0x9 + 3bc016e4: 07050513 addi a0,a0,112 # 3bc0a750 + 3bc016e8: fc06 sd ra,56(sp) + 3bc016ea: f822 sd s0,48(sp) + 3bc016ec: c6dfe0ef jal ra,3bc00358 + 3bc016f0: 4785 li a5,1 + 3bc016f2: 02fa8f63 beq s5,a5,3bc01730 + 3bc016f6: 4789 li a5,2 + 3bc016f8: 5429 li s0,-22 + 3bc016fa: 00fa9963 bne s5,a5,3bc0170c + 3bc016fe: 86d2 mv a3,s4 + 3bc01700: 864e mv a2,s3 + 3bc01702: 85a6 mv a1,s1 + 3bc01704: 854a mv a0,s2 + 3bc01706: f0dff0ef jal ra,3bc01612 + 3bc0170a: 842a mv s0,a0 + 3bc0170c: 608c ld a1,0(s1) + 3bc0170e: 8622 mv a2,s0 + 3bc01710: 00009517 auipc a0,0x9 + 3bc01714: 06050513 addi a0,a0,96 # 3bc0a770 + 3bc01718: c41fe0ef jal ra,3bc00358 + 3bc0171c: 70e2 ld ra,56(sp) + 3bc0171e: 8522 mv a0,s0 + 3bc01720: 7442 ld s0,48(sp) + 3bc01722: 74a2 ld s1,40(sp) + 3bc01724: 7902 ld s2,32(sp) + 3bc01726: 69e2 ld s3,24(sp) + 3bc01728: 6a42 ld s4,16(sp) + 3bc0172a: 6aa2 ld s5,8(sp) + 3bc0172c: 6121 addi sp,sp,64 + 3bc0172e: 8082 ret + 3bc01730: 86d2 mv a3,s4 + 3bc01732: 864e mv a2,s3 + 3bc01734: 85a6 mv a1,s1 + 3bc01736: 854a mv a0,s2 + 3bc01738: dc3ff0ef jal ra,3bc014fa + 3bc0173c: b7f9 j 3bc0170a + +000000003bc0173e : + 3bc0173e: 4108 lw a0,0(a0) + 3bc01740: 2501 sext.w a0,a0 + 3bc01742: 8082 ret + +000000003bc01744 : + 3bc01744: c188 sw a0,0(a1) + 3bc01746: 8082 ret + +000000003bc01748 : + 3bc01748: 8082 ret + +000000003bc0174a : + 3bc0174a: 00012717 auipc a4,0x12 + 3bc0174e: cc170713 addi a4,a4,-831 # 3bc1340b + 3bc01752: 00074783 lbu a5,0(a4) + 3bc01756: eb89 bnez a5,3bc01768 + 3bc01758: 0000a517 auipc a0,0xa + 3bc0175c: d9053503 ld a0,-624(a0) # 3bc0b4e8 + 3bc01760: 2785 addiw a5,a5,1 + 3bc01762: 00f70023 sb a5,0(a4) + 3bc01766: 8082 ret + 3bc01768: 4685 li a3,1 + 3bc0176a: 00d79763 bne a5,a3,3bc01778 + 3bc0176e: 0000a517 auipc a0,0xa + 3bc01772: d8253503 ld a0,-638(a0) # 3bc0b4f0 + 3bc01776: b7ed j 3bc01760 + 3bc01778: 0000a517 auipc a0,0xa + 3bc0177c: d8053503 ld a0,-640(a0) # 3bc0b4f8 + 3bc01780: b7c5 j 3bc01760 + +000000003bc01782 : + 3bc01782: 8082 ret + +000000003bc01784 : + 3bc01784: 698c ld a1,16(a1) + 3bc01786: 00012517 auipc a0,0x12 + 3bc0178a: b8253503 ld a0,-1150(a0) # 3bc13308 + 3bc0178e: 1141 addi sp,sp,-16 + 3bc01790: 461d li a2,7 + 3bc01792: 0511 addi a0,a0,4 + 3bc01794: e406 sd ra,8(sp) + 3bc01796: ad6ff0ef jal ra,3bc00a6c + 3bc0179a: 60a2 ld ra,8(sp) + 3bc0179c: 0141 addi sp,sp,16 + 3bc0179e: 8082 ret + +000000003bc017a0 : + 3bc017a0: 00009597 auipc a1,0x9 + 3bc017a4: 40058593 addi a1,a1,1024 # 3bc0aba0 <__func__.5> + 3bc017a8: 00009517 auipc a0,0x9 + 3bc017ac: ff850513 addi a0,a0,-8 # 3bc0a7a0 <__func__.1+0x10> + 3bc017b0: ba9fe06f j 3bc00358 + +000000003bc017b4 : + 3bc017b4: 00012797 auipc a5,0x12 + 3bc017b8: c40788a3 sb zero,-943(a5) # 3bc13405 + 3bc017bc: 4785 li a5,1 + 3bc017be: 00012717 auipc a4,0x12 + 3bc017c2: c4f706a3 sb a5,-947(a4) # 3bc1340b + 3bc017c6: 00009597 auipc a1,0x9 + 3bc017ca: 3ca58593 addi a1,a1,970 # 3bc0ab90 <__func__.4> + 3bc017ce: 00012797 auipc a5,0x12 + 3bc017d2: c2078ca3 sb zero,-967(a5) # 3bc13407 + 3bc017d6: 00009517 auipc a0,0x9 + 3bc017da: fca50513 addi a0,a0,-54 # 3bc0a7a0 <__func__.1+0x10> + 3bc017de: b7bfe06f j 3bc00358 + +000000003bc017e2 : + 3bc017e2: 1141 addi sp,sp,-16 + 3bc017e4: 00009597 auipc a1,0x9 + 3bc017e8: 3a458593 addi a1,a1,932 # 3bc0ab88 <__func__.1> + 3bc017ec: 00009517 auipc a0,0x9 + 3bc017f0: fcc50513 addi a0,a0,-52 # 3bc0a7b8 <__func__.1+0x28> + 3bc017f4: e406 sd ra,8(sp) + 3bc017f6: b63fe0ef jal ra,3bc00358 + 3bc017fa: 60a2 ld ra,8(sp) + 3bc017fc: 0000a797 auipc a5,0xa + 3bc01800: dc07b223 sd zero,-572(a5) # 3bc0b5c0 + 3bc01804: 0141 addi sp,sp,16 + 3bc01806: 8082 ret + +000000003bc01808 : + 3bc01808: 1141 addi sp,sp,-16 + 3bc0180a: e022 sd s0,0(sp) + 3bc0180c: 00009597 auipc a1,0x9 + 3bc01810: 37458593 addi a1,a1,884 # 3bc0ab80 <__func__.0> + 3bc01814: 842a mv s0,a0 + 3bc01816: 00009517 auipc a0,0x9 + 3bc0181a: fa250513 addi a0,a0,-94 # 3bc0a7b8 <__func__.1+0x28> + 3bc0181e: e406 sd ra,8(sp) + 3bc01820: b39fe0ef jal ra,3bc00358 + 3bc01824: 0000a797 auipc a5,0xa + 3bc01828: d9c78793 addi a5,a5,-612 # 3bc0b5c0 + 3bc0182c: 6398 ld a4,0(a5) + 3bc0182e: cf01 beqz a4,3bc01846 + 3bc01830: 00009517 auipc a0,0x9 + 3bc01834: f9850513 addi a0,a0,-104 # 3bc0a7c8 <__func__.1+0x38> + 3bc01838: b21fe0ef jal ra,3bc00358 + 3bc0183c: 60a2 ld ra,8(sp) + 3bc0183e: 6402 ld s0,0(sp) + 3bc01840: 4501 li a0,0 + 3bc01842: 0141 addi sp,sp,16 + 3bc01844: 8082 ret + 3bc01846: e380 sd s0,0(a5) + 3bc01848: bfd5 j 3bc0183c + +000000003bc0184a : + 3bc0184a: 1101 addi sp,sp,-32 + 3bc0184c: e822 sd s0,16(sp) + 3bc0184e: 842a mv s0,a0 + 3bc01850: 852e mv a0,a1 + 3bc01852: e42e sd a1,8(sp) + 3bc01854: ec06 sd ra,24(sp) + 3bc01856: b04ff0ef jal ra,3bc00b5a + 3bc0185a: 0506 slli a0,a0,0x1 + 3bc0185c: 0025071b addiw a4,a0,2 + 3bc01860: 87a2 mv a5,s0 + 3bc01862: 1827d70b sbia a4,(a5),2,0 + 3bc01866: 470d li a4,3 + 3bc01868: 00e400a3 sb a4,1(s0) # e000001 + 3bc0186c: 06400713 li a4,100 + 3bc01870: 65a2 ld a1,8(sp) + 3bc01872: 00a77463 bgeu a4,a0,3bc0187a + 3bc01876: 06400513 li a0,100 + 3bc0187a: 4701 li a4,0 + 3bc0187c: 00171693 slli a3,a4,0x1 + 3bc01880: 00a6e663 bltu a3,a0,3bc0188c + 3bc01884: 60e2 ld ra,24(sp) + 3bc01886: 6442 ld s0,16(sp) + 3bc01888: 6105 addi sp,sp,32 + 3bc0188a: 8082 ret + 3bc0188c: 80e5c68b lrbu a3,a1,a4,0 + 3bc01890: 0705 addi a4,a4,1 + 3bc01892: 1827d68b sbia a3,(a5),2,0 + 3bc01896: fe078fa3 sb zero,-1(a5) + 3bc0189a: b7cd j 3bc0187c + +000000003bc0189c : + 3bc0189c: 5d98 lw a4,56(a1) + 3bc0189e: fc600793 li a5,-58 + 3bc018a2: 22f70663 beq a4,a5,3bc01ace + 3bc018a6: 699c ld a5,16(a1) + 3bc018a8: 7179 addi sp,sp,-48 + 3bc018aa: e052 sd s4,0(sp) + 3bc018ac: f406 sd ra,40(sp) + 3bc018ae: f022 sd s0,32(sp) + 3bc018b0: ec26 sd s1,24(sp) + 3bc018b2: e84a sd s2,16(sp) + 3bc018b4: e44e sd s3,8(sp) + 3bc018b6: 0037c403 lbu s0,3(a5) + 3bc018ba: 0047c703 lbu a4,4(a5) + 3bc018be: 0017c483 lbu s1,1(a5) + 3bc018c2: 1402 slli s0,s0,0x20 + 3bc018c4: 0762 slli a4,a4,0x18 + 3bc018c6: 943a add s0,s0,a4 + 3bc018c8: 0077c703 lbu a4,7(a5) + 3bc018cc: 0027c603 lbu a2,2(a5) + 3bc018d0: 0084949b slliw s1,s1,0x8 + 3bc018d4: 943a add s0,s0,a4 + 3bc018d6: 0057c703 lbu a4,5(a5) + 3bc018da: 9e25 addw a2,a2,s1 + 3bc018dc: 00012a17 auipc s4,0x12 + 3bc018e0: a4ca0a13 addi s4,s4,-1460 # 3bc13328 + 3bc018e4: 0742 slli a4,a4,0x10 + 3bc018e6: 943a add s0,s0,a4 + 3bc018e8: 0067c703 lbu a4,6(a5) + 3bc018ec: 000a3583 ld a1,0(s4) + 3bc018f0: 84b2 mv s1,a2 + 3bc018f2: 0722 slli a4,a4,0x8 + 3bc018f4: 943a add s0,s0,a4 + 3bc018f6: ee05 bnez a2,3bc0192e + 3bc018f8: e81d bnez s0,3bc0192e + 3bc018fa: 00012797 auipc a5,0x12 + 3bc018fe: a267b783 ld a5,-1498(a5) # 3bc13320 + 3bc01902: 00012717 auipc a4,0x12 + 3bc01906: ae672703 lw a4,-1306(a4) # 3bc133e8 + 3bc0190a: 00012517 auipc a0,0x12 + 3bc0190e: a3e53503 ld a0,-1474(a0) # 3bc13348 + 3bc01912: cf98 sw a4,24(a5) + 3bc01914: 7118 ld a4,32(a0) + 3bc01916: 7402 ld s0,32(sp) + 3bc01918: 70a2 ld ra,40(sp) + 3bc0191a: 64e2 ld s1,24(sp) + 3bc0191c: 6942 ld s2,16(sp) + 3bc0191e: 69a2 ld s3,8(sp) + 3bc01920: 6a02 ld s4,0(sp) + 3bc01922: 7318 ld a4,32(a4) + 3bc01924: eb8c sd a1,16(a5) + 3bc01926: cfcc sw a1,28(a5) + 3bc01928: 85be mv a1,a5 + 3bc0192a: 6145 addi sp,sp,48 + 3bc0192c: 8702 jr a4 + 3bc0192e: 0007c903 lbu s2,0(a5) + 3bc01932: 4501 li a0,0 + 3bc01934: 5d3020ef jal ra,3bc04706 + 3bc01938: 4789 li a5,2 + 3bc0193a: 89aa mv s3,a0 + 3bc0193c: 0ef90763 beq s2,a5,3bc01a2a + 3bc01940: 0327e363 bltu a5,s2,3bc01966 + 3bc01944: 0c091863 bnez s2,3bc01a14 + 3bc01948: 000a3583 ld a1,0(s4) + 3bc0194c: ff84861b addiw a2,s1,-8 + 3bc01950: 00012517 auipc a0,0x12 + 3bc01954: a0053503 ld a0,-1536(a0) # 3bc13350 + 3bc01958: 7c06360b extu a2,a2,31,0 + 3bc0195c: 05a1 addi a1,a1,8 + 3bc0195e: 9522 add a0,a0,s0 + 3bc01960: 90cff0ef jal ra,3bc00a6c + 3bc01964: a021 j 3bc0196c + 3bc01966: 478d li a5,3 + 3bc01968: 0ef90163 beq s2,a5,3bc01a4a + 3bc0196c: 0000a417 auipc s0,0xa + 3bc01970: d2440413 addi s0,s0,-732 # 3bc0b690 + 3bc01974: 6008 ld a0,0(s0) + 3bc01976: 4641 li a2,16 + 3bc01978: 4581 li a1,0 + 3bc0197a: 898ff0ef jal ra,3bc00a12 + 3bc0197e: 601c ld a5,0(s0) + 3bc01980: 00012617 auipc a2,0x12 + 3bc01984: a8460613 addi a2,a2,-1404 # 3bc13404 + 3bc01988: 00064703 lbu a4,0(a2) + 3bc0198c: 0089951b slliw a0,s3,0x8 + 3bc01990: 00012697 auipc a3,0x12 + 3bc01994: a506a683 lw a3,-1456(a3) # 3bc133e0 + 3bc01998: 0089d99b srliw s3,s3,0x8 + 3bc0199c: 01356533 or a0,a0,s3 + 3bc019a0: 00012497 auipc s1,0x12 + 3bc019a4: 97848493 addi s1,s1,-1672 # 3bc13318 + 3bc019a8: 9006968b revw a3,a3 + 3bc019ac: 00a79023 sh a0,0(a5) + 3bc019b0: 00a79123 sh a0,2(a5) + 3bc019b4: c794 sw a3,8(a5) + 3bc019b6: 6088 ld a0,0(s1) + 3bc019b8: 00012697 auipc a3,0x12 + 3bc019bc: a2c6a683 lw a3,-1492(a3) # 3bc133e4 + 3bc019c0: 00e783a3 sb a4,7(a5) + 3bc019c4: 9006968b revw a3,a3 + 3bc019c8: 2705 addiw a4,a4,1 + 3bc019ca: 01278323 sb s2,6(a5) + 3bc019ce: 00079223 sh zero,4(a5) + 3bc019d2: c7d4 sw a3,12(a5) + 3bc019d4: 00e60023 sb a4,0(a2) + 3bc019d8: 4581 li a1,0 + 3bc019da: 04000613 li a2,64 + 3bc019de: 834ff0ef jal ra,3bc00a12 + 3bc019e2: 608c ld a1,0(s1) + 3bc019e4: 47c1 li a5,16 + 3bc019e6: 00012517 auipc a0,0x12 + 3bc019ea: 95a53503 ld a0,-1702(a0) # 3bc13340 + 3bc019ee: cd9c sw a5,24(a1) + 3bc019f0: 601c ld a5,0(s0) + 3bc019f2: 7402 ld s0,32(sp) + 3bc019f4: 70a2 ld ra,40(sp) + 3bc019f6: e99c sd a5,16(a1) + 3bc019f8: cddc sw a5,28(a1) + 3bc019fa: 00000797 auipc a5,0x0 + 3bc019fe: 15c78793 addi a5,a5,348 # 3bc01b56 + 3bc01a02: f59c sd a5,40(a1) + 3bc01a04: 711c ld a5,32(a0) + 3bc01a06: 64e2 ld s1,24(sp) + 3bc01a08: 6942 ld s2,16(sp) + 3bc01a0a: 69a2 ld s3,8(sp) + 3bc01a0c: 6a02 ld s4,0(sp) + 3bc01a0e: 739c ld a5,32(a5) + 3bc01a10: 6145 addi sp,sp,48 + 3bc01a12: 8782 jr a5 + 3bc01a14: 0e0007b7 lui a5,0xe000 + 3bc01a18: 0791 addi a5,a5,4 + 3bc01a1a: f4f419e3 bne s0,a5,3bc0196c + 3bc01a1e: 000a3583 ld a1,0(s4) + 3bc01a22: 4611 li a2,4 + 3bc01a24: 8522 mv a0,s0 + 3bc01a26: 05a1 addi a1,a1,8 + 3bc01a28: bf25 j 3bc01960 + 3bc01a2a: 00009517 auipc a0,0x9 + 3bc01a2e: da650513 addi a0,a0,-602 # 3bc0a7d0 <__func__.1+0x40> + 3bc01a32: 927fe0ef jal ra,3bc00358 + 3bc01a36: 00012797 auipc a5,0x12 + 3bc01a3a: 9c078723 sb zero,-1586(a5) # 3bc13404 + 3bc01a3e: 4785 li a5,1 + 3bc01a40: 00012717 auipc a4,0x12 + 3bc01a44: 9cf70323 sb a5,-1594(a4) # 3bc13406 + 3bc01a48: b715 j 3bc0196c + 3bc01a4a: 000a3583 ld a1,0(s4) + 3bc01a4e: ff84861b addiw a2,s1,-8 + 3bc01a52: 4501 li a0,0 + 3bc01a54: 05a1 addi a1,a1,8 + 3bc01a56: 4b1020ef jal ra,3bc04706 + 3bc01a5a: 842a mv s0,a0 + 3bc01a5c: 00009517 auipc a0,0x9 + 3bc01a60: d8c50513 addi a0,a0,-628 # 3bc0a7e8 <__func__.1+0x58> + 3bc01a64: 8f5fe0ef jal ra,3bc00358 + 3bc01a68: 67b1 lui a5,0xc + 3bc01a6a: 2401 sext.w s0,s0 + 3bc01a6c: 28378793 addi a5,a5,643 # c283 <__BSS_SIZE__+0x6673> + 3bc01a70: 02f41a63 bne s0,a5,3bc01aa4 + 3bc01a74: 00012797 auipc a5,0x12 + 3bc01a78: 98078823 sb zero,-1648(a5) # 3bc13404 + 3bc01a7c: 00012797 auipc a5,0x12 + 3bc01a80: 98c78793 addi a5,a5,-1652 # 3bc13408 + 3bc01a84: 4705 li a4,1 + 3bc01a86: 00e78023 sb a4,0(a5) + 3bc01a8a: 0e000737 lui a4,0xe000 + 3bc01a8e: 00072223 sw zero,4(a4) # e000004 + 3bc01a92: 0007c583 lbu a1,0(a5) + 3bc01a96: 00009517 auipc a0,0x9 + 3bc01a9a: d5a50513 addi a0,a0,-678 # 3bc0a7f0 <__func__.1+0x60> + 3bc01a9e: 8bbfe0ef jal ra,3bc00358 + 3bc01aa2: b5e9 j 3bc0196c + 3bc01aa4: 00012797 auipc a5,0x12 + 3bc01aa8: 96078223 sb zero,-1692(a5) # 3bc13408 + 3bc01aac: 0e0007b7 lui a5,0xe000 + 3bc01ab0: 0007a223 sw zero,4(a5) # e000004 + 3bc01ab4: 00009517 auipc a0,0x9 + 3bc01ab8: d5450513 addi a0,a0,-684 # 3bc0a808 <__func__.1+0x78> + 3bc01abc: 89dfe0ef jal ra,3bc00358 + 3bc01ac0: 00009517 auipc a0,0x9 + 3bc01ac4: d6850513 addi a0,a0,-664 # 3bc0a828 <__func__.1+0x98> + 3bc01ac8: 891fe0ef jal ra,3bc00358 + 3bc01acc: b545 j 3bc0196c + 3bc01ace: 8082 ret + +000000003bc01ad0 : + 3bc01ad0: 7179 addi sp,sp,-48 + 3bc01ad2: f406 sd ra,40(sp) + 3bc01ad4: f022 sd s0,32(sp) + 3bc01ad6: ec26 sd s1,24(sp) + 3bc01ad8: e84a sd s2,16(sp) + 3bc01ada: e44e sd s3,8(sp) + 3bc01adc: 4789 li a5,2 + 3bc01ade: 02f50263 beq a0,a5,3bc01b02 + 3bc01ae2: 478d li a5,3 + 3bc01ae4: 54fd li s1,-1 + 3bc01ae6: 0000a417 auipc s0,0xa + 3bc01aea: a7240413 addi s0,s0,-1422 # 3bc0b558 + 3bc01aee: 00f50e63 beq a0,a5,3bc01b0a + 3bc01af2: 70a2 ld ra,40(sp) + 3bc01af4: 7402 ld s0,32(sp) + 3bc01af6: 6942 ld s2,16(sp) + 3bc01af8: 69a2 ld s3,8(sp) + 3bc01afa: 8526 mv a0,s1 + 3bc01afc: 64e2 ld s1,24(sp) + 3bc01afe: 6145 addi sp,sp,48 + 3bc01b00: 8082 ret + 3bc01b02: 0000a417 auipc s0,0xa + 3bc01b06: a0640413 addi s0,s0,-1530 # 3bc0b508 + 3bc01b0a: 892e mv s2,a1 + 3bc01b0c: 7884458b ldia a1,(s0),8,0 + 3bc01b10: 4481 li s1,0 + 3bc01b12: d1e5 beqz a1,3bc01af2 + 3bc01b14: 0005c983 lbu s3,0(a1) + 3bc01b18: 00990533 add a0,s2,s1 + 3bc01b1c: 864e mv a2,s3 + 3bc01b1e: f4ffe0ef jal ra,3bc00a6c + 3bc01b22: 7884458b ldia a1,(s0),8,0 + 3bc01b26: 009984bb addw s1,s3,s1 + 3bc01b2a: b7e5 j 3bc01b12 + +000000003bc01b2c : + 3bc01b2c: 5d98 lw a4,56(a1) + 3bc01b2e: 57ed li a5,-5 + 3bc01b30: 02f71263 bne a4,a5,3bc01b54 + 3bc01b34: 1141 addi sp,sp,-16 + 3bc01b36: 00009517 auipc a0,0x9 + 3bc01b3a: d0250513 addi a0,a0,-766 # 3bc0a838 <__func__.1+0xa8> + 3bc01b3e: e406 sd ra,8(sp) + 3bc01b40: 819fe0ef jal ra,3bc00358 + 3bc01b44: 60a2 ld ra,8(sp) + 3bc01b46: 4785 li a5,1 + 3bc01b48: 00012717 auipc a4,0x12 + 3bc01b4c: 8cf700a3 sb a5,-1855(a4) # 3bc13409 + 3bc01b50: 0141 addi sp,sp,16 + 3bc01b52: 8082 ret + 3bc01b54: 8082 ret + +000000003bc01b56 : + 3bc01b56: 5d98 lw a4,56(a1) + 3bc01b58: fc600793 li a5,-58 + 3bc01b5c: 04f70463 beq a4,a5,3bc01ba4 + 3bc01b60: 1141 addi sp,sp,-16 + 3bc01b62: e022 sd s0,0(sp) + 3bc01b64: 00011417 auipc s0,0x11 + 3bc01b68: 7c440413 addi s0,s0,1988 # 3bc13328 + 3bc01b6c: 6008 ld a0,0(s0) + 3bc01b6e: 4581 li a1,0 + 3bc01b70: 4621 li a2,8 + 3bc01b72: e406 sd ra,8(sp) + 3bc01b74: e9ffe0ef jal ra,3bc00a12 + 3bc01b78: 00011597 auipc a1,0x11 + 3bc01b7c: 7a85b583 ld a1,1960(a1) # 3bc13320 + 3bc01b80: 00012797 auipc a5,0x12 + 3bc01b84: 8687a783 lw a5,-1944(a5) # 3bc133e8 + 3bc01b88: cd9c sw a5,24(a1) + 3bc01b8a: 601c ld a5,0(s0) + 3bc01b8c: 00011517 auipc a0,0x11 + 3bc01b90: 7bc53503 ld a0,1980(a0) # 3bc13348 + 3bc01b94: 6402 ld s0,0(sp) + 3bc01b96: e99c sd a5,16(a1) + 3bc01b98: cddc sw a5,28(a1) + 3bc01b9a: 711c ld a5,32(a0) + 3bc01b9c: 60a2 ld ra,8(sp) + 3bc01b9e: 739c ld a5,32(a5) + 3bc01ba0: 0141 addi sp,sp,16 + 3bc01ba2: 8782 jr a5 + 3bc01ba4: 8082 ret + +000000003bc01ba6 : + 3bc01ba6: 7159 addi sp,sp,-112 + 3bc01ba8: e4ce sd s3,72(sp) + 3bc01baa: fc56 sd s5,56(sp) + 3bc01bac: 00011997 auipc s3,0x11 + 3bc01bb0: 78498993 addi s3,s3,1924 # 3bc13330 + 3bc01bb4: 00011a97 auipc s5,0x11 + 3bc01bb8: 784a8a93 addi s5,s5,1924 # 3bc13338 + 3bc01bbc: eca6 sd s1,88(sp) + 3bc01bbe: 000ab603 ld a2,0(s5) + 3bc01bc2: 84aa mv s1,a0 + 3bc01bc4: 0009b503 ld a0,0(s3) + 3bc01bc8: e0d2 sd s4,64(sp) + 3bc01bca: f486 sd ra,104(sp) + 3bc01bcc: f0a2 sd s0,96(sp) + 3bc01bce: e8ca sd s2,80(sp) + 3bc01bd0: f85a sd s6,48(sp) + 3bc01bd2: f45e sd s7,40(sp) + 3bc01bd4: f062 sd s8,32(sp) + 3bc01bd6: ec66 sd s9,24(sp) + 3bc01bd8: 0204a803 lw a6,32(s1) + 3bc01bdc: 0015c703 lbu a4,1(a1) + 3bc01be0: 0005c683 lbu a3,0(a1) + 3bc01be4: 0065da03 lhu s4,6(a1) + 3bc01be8: 0025d783 lhu a5,2(a1) + 3bc01bec: 00000597 auipc a1,0x0 + 3bc01bf0: f4058593 addi a1,a1,-192 # 3bc01b2c + 3bc01bf4: f60c sd a1,40(a2) + 3bc01bf6: ea08 sd a0,16(a2) + 3bc01bf8: ce48 sw a0,28(a2) + 3bc01bfa: 4589 li a1,2 + 3bc01bfc: 02b80763 beq a6,a1,3bc01c2a + 3bc01c00: 458d li a1,3 + 3bc01c02: 4905 li s2,1 + 3bc01c04: 06b81063 bne a6,a1,3bc01c64 + 3bc01c08: 0000ab17 auipc s6,0xa + 3bc01c0c: 8b8b0b13 addi s6,s6,-1864 # 3bc0b4c0 + 3bc01c10: 0000ab97 auipc s7,0xa + 3bc01c14: 8a0b8b93 addi s7,s7,-1888 # 3bc0b4b0 + 3bc01c18: 0606f593 andi a1,a3,96 + 3bc01c1c: c185 beqz a1,3bc01c3c + 3bc01c1e: 02000693 li a3,32 + 3bc01c22: 36d58463 beq a1,a3,3bc01f8a + 3bc01c26: 4901 li s2,0 + 3bc01c28: a835 j 3bc01c64 + 3bc01c2a: 0000ab17 auipc s6,0xa + 3bc01c2e: 876b0b13 addi s6,s6,-1930 # 3bc0b4a0 + 3bc01c32: 0000ab97 auipc s7,0xa + 3bc01c36: 85eb8b93 addi s7,s7,-1954 # 3bc0b490 + 3bc01c3a: bff9 j 3bc01c18 + 3bc01c3c: 4621 li a2,8 + 3bc01c3e: 32c70d63 beq a4,a2,3bc01f78 + 3bc01c42: 4625 li a2,9 + 3bc01c44: 24c70a63 beq a4,a2,3bc01e98 + 3bc01c48: 4619 li a2,6 + 3bc01c4a: 597d li s2,-1 + 3bc01c4c: 00c71c63 bne a4,a2,3bc01c64 + 3bc01c50: 8abd andi a3,a3,15 + 3bc01c52: 4705 li a4,1 + 3bc01c54: 02e69663 bne a3,a4,3bc01c80 + 3bc01c58: 00009517 auipc a0,0x9 + 3bc01c5c: bf850513 addi a0,a0,-1032 # 3bc0a850 <__func__.1+0xc0> + 3bc01c60: ef8fe0ef jal ra,3bc00358 + 3bc01c64: 70a6 ld ra,104(sp) + 3bc01c66: 7406 ld s0,96(sp) + 3bc01c68: 64e6 ld s1,88(sp) + 3bc01c6a: 69a6 ld s3,72(sp) + 3bc01c6c: 6a06 ld s4,64(sp) + 3bc01c6e: 7ae2 ld s5,56(sp) + 3bc01c70: 7b42 ld s6,48(sp) + 3bc01c72: 7ba2 ld s7,40(sp) + 3bc01c74: 7c02 ld s8,32(sp) + 3bc01c76: 6ce2 ld s9,24(sp) + 3bc01c78: 854a mv a0,s2 + 3bc01c7a: 6946 ld s2,80(sp) + 3bc01c7c: 6165 addi sp,sp,112 + 3bc01c7e: 8082 ret + 3bc01c80: f2dd bnez a3,3bc01c26 + 3bc01c82: 0087d71b srliw a4,a5,0x8 + 3bc01c86: 377d addiw a4,a4,-1 + 3bc01c88: 3c07360b extu a2,a4,15,0 + 3bc01c8c: 46b9 li a3,14 + 3bc01c8e: 0ac6e663 bltu a3,a2,3bc01d3a + 3bc01c92: 00009697 auipc a3,0x9 + 3bc01c96: c9268693 addi a3,a3,-878 # 3bc0a924 <__func__.1+0x194> + 3bc01c9a: 44c6c70b lrw a4,a3,a2,2 + 3bc01c9e: 9736 add a4,a4,a3 + 3bc01ca0: 8702 jr a4 + 3bc01ca2: 0000a417 auipc s0,0xa + 3bc01ca6: a5640413 addi s0,s0,-1450 # 3bc0b6f8 + 3bc01caa: 00045583 lhu a1,0(s0) + 3bc01cae: cd89 beqz a1,3bc01cc8 + 3bc01cb0: 00009517 auipc a0,0x9 + 3bc01cb4: bd050513 addi a0,a0,-1072 # 3bc0a880 <__func__.1+0xf0> + 3bc01cb8: ea0fe0ef jal ra,3bc00358 + 3bc01cbc: 00045783 lhu a5,0(s0) + 3bc01cc0: 0000a717 auipc a4,0xa + 3bc01cc4: 8ef71823 sh a5,-1808(a4) # 3bc0b5b0 + 3bc01cc8: 0009b503 ld a0,0(s3) + 3bc01ccc: 4649 li a2,18 + 3bc01cce: 0000a597 auipc a1,0xa + 3bc01cd2: 8da58593 addi a1,a1,-1830 # 3bc0b5a8 + 3bc01cd6: df7fe0ef jal ra,3bc00acc + 3bc01cda: 4449 li s0,18 + 3bc01cdc: 4905 li s2,1 + 3bc01cde: 6c88 ld a0,24(s1) + 3bc01ce0: 014427b3 slt a5,s0,s4 + 3bc01ce4: 40fa140b mveqz s0,s4,a5 + 3bc01ce8: 711c ld a5,32(a0) + 3bc01cea: 000ab583 ld a1,0(s5) + 3bc01cee: 739c ld a5,32(a5) + 3bc01cf0: cd80 sw s0,24(a1) + 3bc01cf2: 9782 jalr a5 + 3bc01cf4: f20909e3 beqz s2,3bc01c26 + 3bc01cf8: c00017b7 lui a5,0xc0001 + 3bc01cfc: 03000737 lui a4,0x3000 + 3bc01d00: 0795 addi a5,a5,5 + 3bc01d02: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc01d06: b705 j 3bc01c26 + 3bc01d08: 0ff7f793 andi a5,a5,255 + 3bc01d0c: 4709 li a4,2 + 3bc01d0e: 02e78863 beq a5,a4,3bc01d3e + 3bc01d12: 02f76163 bltu a4,a5,3bc01d34 + 3bc01d16: 00011597 auipc a1,0x11 + 3bc01d1a: 69258593 addi a1,a1,1682 # 3bc133a8 + 3bc01d1e: e789 bnez a5,3bc01d28 + 3bc01d20: 0000a597 auipc a1,0xa + 3bc01d24: 95858593 addi a1,a1,-1704 # 3bc0b678 + 3bc01d28: 0005c403 lbu s0,0(a1) + 3bc01d2c: 8622 mv a2,s0 + 3bc01d2e: 0009b503 ld a0,0(s3) + 3bc01d32: a215 j 3bc01e56 + 3bc01d34: 470d li a4,3 + 3bc01d36: 00e78963 beq a5,a4,3bc01d48 + 3bc01d3a: 597d li s2,-1 + 3bc01d3c: b725 j 3bc01c64 + 3bc01d3e: 00011597 auipc a1,0x11 + 3bc01d42: 61a58593 addi a1,a1,1562 # 3bc13358 + 3bc01d46: b7cd j 3bc01d28 + 3bc01d48: ea1fe0ef jal ra,3bc00be8 + 3bc01d4c: 00009597 auipc a1,0x9 + 3bc01d50: b9c58593 addi a1,a1,-1124 # 3bc0a8e8 <__func__.1+0x158> + 3bc01d54: e55d bnez a0,3bc01e02 + 3bc01d56: 00011b17 auipc s6,0x11 + 3bc01d5a: 6b4b0b13 addi s6,s6,1716 # 3bc1340a + 3bc01d5e: 000b4903 lbu s2,0(s6) + 3bc01d62: 08091263 bnez s2,3bc01de6 + 3bc01d66: 4641 li a2,16 + 3bc01d68: 4581 li a1,0 + 3bc01d6a: 00011517 auipc a0,0x11 + 3bc01d6e: 60e50513 addi a0,a0,1550 # 3bc13378 + 3bc01d72: 03050bb7 lui s7,0x3050 + 3bc01d76: c9dfe0ef jal ra,3bc00a12 + 3bc01d7a: 4401 li s0,0 + 3bc01d7c: 104b8b93 addi s7,s7,260 # 3050104 <__BSS_SIZE__+0x304a4f4> + 3bc01d80: 00009c97 auipc s9,0x9 + 3bc01d84: b10c8c93 addi s9,s9,-1264 # 3bc0a890 <__func__.1+0x100> + 3bc01d88: 4c11 li s8,4 + 3bc01d8a: 448bc60b lrw a2,s7,s0,2 + 3bc01d8e: 0004059b sext.w a1,s0 + 3bc01d92: 8566 mv a0,s9 + 3bc01d94: 2601 sext.w a2,a2 + 3bc01d96: 4481560b srw a2,sp,s0,2 + 3bc01d9a: dbefe0ef jal ra,3bc00358 + 3bc01d9e: 4481478b lrw a5,sp,s0,2 + 3bc01da2: c391 beqz a5,3bc01da6 + 3bc01da4: 4905 li s2,1 + 3bc01da6: 0405 addi s0,s0,1 + 3bc01da8: ff8411e3 bne s0,s8,3bc01d8a + 3bc01dac: 06090663 beqz s2,3bc01e18 + 3bc01db0: 858a mv a1,sp + 3bc01db2: 4641 li a2,16 + 3bc01db4: 4501 li a0,0 + 3bc01db6: 151020ef jal ra,3bc04706 + 3bc01dba: 0005041b sext.w s0,a0 + 3bc01dbe: 85a2 mv a1,s0 + 3bc01dc0: 00009517 auipc a0,0x9 + 3bc01dc4: ae850513 addi a0,a0,-1304 # 3bc0a8a8 <__func__.1+0x118> + 3bc01dc8: d90fe0ef jal ra,3bc00358 + 3bc01dcc: 4681 li a3,0 + 3bc01dce: 4641 li a2,16 + 3bc01dd0: 7c04358b extu a1,s0,31,0 + 3bc01dd4: 00011517 auipc a0,0x11 + 3bc01dd8: 5a450513 addi a0,a0,1444 # 3bc13378 + 3bc01ddc: bbdfe0ef jal ra,3bc00998 + 3bc01de0: 4785 li a5,1 + 3bc01de2: 00fb0023 sb a5,0(s6) + 3bc01de6: 00011597 auipc a1,0x11 + 3bc01dea: 59258593 addi a1,a1,1426 # 3bc13378 + 3bc01dee: 00009517 auipc a0,0x9 + 3bc01df2: aea50513 addi a0,a0,-1302 # 3bc0a8d8 <__func__.1+0x148> + 3bc01df6: d62fe0ef jal ra,3bc00358 + 3bc01dfa: 00011597 auipc a1,0x11 + 3bc01dfe: 57e58593 addi a1,a1,1406 # 3bc13378 + 3bc01e02: 00011517 auipc a0,0x11 + 3bc01e06: 58650513 addi a0,a0,1414 # 3bc13388 + 3bc01e0a: a41ff0ef jal ra,3bc0184a + 3bc01e0e: 00011597 auipc a1,0x11 + 3bc01e12: 57a58593 addi a1,a1,1402 # 3bc13388 + 3bc01e16: bf09 j 3bc01d28 + 3bc01e18: 00011517 auipc a0,0x11 + 3bc01e1c: 5d452503 lw a0,1492(a0) # 3bc133ec + 3bc01e20: bc2fe0ef jal ra,3bc001e2 + 3bc01e24: 0005041b sext.w s0,a0 + 3bc01e28: 85a2 mv a1,s0 + 3bc01e2a: 00009517 auipc a0,0x9 + 3bc01e2e: a9650513 addi a0,a0,-1386 # 3bc0a8c0 <__func__.1+0x130> + 3bc01e32: bf59 j 3bc01dc8 + 3bc01e34: 00009597 auipc a1,0x9 + 3bc01e38: 69c58593 addi a1,a1,1692 # 3bc0b4d0 + 3bc01e3c: 4615 li a2,5 + 3bc01e3e: 0025d403 lhu s0,2(a1) + 3bc01e42: c8bfe0ef jal ra,3bc00acc + 3bc01e46: 0009b503 ld a0,0(s3) + 3bc01e4a: 461d li a2,7 + 3bc01e4c: 00009597 auipc a1,0x9 + 3bc01e50: 69458593 addi a1,a1,1684 # 3bc0b4e0 + 3bc01e54: 0515 addi a0,a0,5 + 3bc01e56: c77fe0ef jal ra,3bc00acc + 3bc01e5a: dc0406e3 beqz s0,3bc01c26 + 3bc01e5e: a809 j 3bc01e70 + 3bc01e60: 4629 li a2,10 + 3bc01e62: 0000a597 auipc a1,0xa + 3bc01e66: 81e58593 addi a1,a1,-2018 # 3bc0b680 + 3bc01e6a: c63fe0ef jal ra,3bc00acc + 3bc01e6e: 4429 li s0,10 + 3bc01e70: 4901 li s2,0 + 3bc01e72: b5b5 j 3bc01cde + 3bc01e74: 00950593 addi a1,a0,9 + 3bc01e78: 8542 mv a0,a6 + 3bc01e7a: c57ff0ef jal ra,3bc01ad0 + 3bc01e7e: 2525 addiw a0,a0,9 + 3bc01e80: 3c05350b extu a0,a0,15,0 + 3bc01e84: 00009597 auipc a1,0x9 + 3bc01e88: 5c458593 addi a1,a1,1476 # 3bc0b448 + 3bc01e8c: 0005041b sext.w s0,a0 + 3bc01e90: 00a59123 sh a0,2(a1) + 3bc01e94: 4625 li a2,9 + 3bc01e96: bd61 j 3bc01d2e + 3bc01e98: 4705 li a4,1 + 3bc01e9a: 597d li s2,-1 + 3bc01e9c: dcf764e3 bltu a4,a5,3bc01c64 + 3bc01ea0: e385 bnez a5,3bc01ec0 + 3bc01ea2: 00011797 auipc a5,0x11 + 3bc01ea6: 560782a3 sb zero,1381(a5) # 3bc13407 + 3bc01eaa: 6080 ld s0,0(s1) + 3bc01eac: d6848de3 beq s1,s0,3bc01c26 + 3bc01eb0: 6c1c ld a5,24(s0) + 3bc01eb2: c789 beqz a5,3bc01ebc + 3bc01eb4: 701c ld a5,32(s0) + 3bc01eb6: 8522 mv a0,s0 + 3bc01eb8: 679c ld a5,8(a5) + 3bc01eba: 9782 jalr a5 + 3bc01ebc: 6000 ld s0,0(s0) + 3bc01ebe: b7fd j 3bc01eac + 3bc01ec0: 00011797 auipc a5,0x11 + 3bc01ec4: 54778793 addi a5,a5,1351 # 3bc13407 + 3bc01ec8: 0007c683 lbu a3,0(a5) + 3bc01ecc: d4e68de3 beq a3,a4,3bc01c26 + 3bc01ed0: 00e78023 sb a4,0(a5) + 3bc01ed4: 6080 ld s0,0(s1) + 3bc01ed6: 00009917 auipc s2,0x9 + 3bc01eda: a2290913 addi s2,s2,-1502 # 3bc0a8f8 <__func__.1+0x168> + 3bc01ede: 00848d63 beq s1,s0,3bc01ef8 + 3bc01ee2: 6c08 ld a0,24(s0) + 3bc01ee4: c141 beqz a0,3bc01f64 + 3bc01ee6: 85ca mv a1,s2 + 3bc01ee8: c57fe0ef jal ra,3bc00b3e + 3bc01eec: ed25 bnez a0,3bc01f64 + 3bc01eee: 701c ld a5,32(s0) + 3bc01ef0: 85de mv a1,s7 + 3bc01ef2: 8522 mv a0,s0 + 3bc01ef4: 639c ld a5,0(a5) + 3bc01ef6: 9782 jalr a5 + 3bc01ef8: 6080 ld s0,0(s1) + 3bc01efa: 00009917 auipc s2,0x9 + 3bc01efe: a0e90913 addi s2,s2,-1522 # 3bc0a908 <__func__.1+0x178> + 3bc01f02: 00848d63 beq s1,s0,3bc01f1c + 3bc01f06: 6c08 ld a0,24(s0) + 3bc01f08: c125 beqz a0,3bc01f68 + 3bc01f0a: 85ca mv a1,s2 + 3bc01f0c: c33fe0ef jal ra,3bc00b3e + 3bc01f10: ed21 bnez a0,3bc01f68 + 3bc01f12: 701c ld a5,32(s0) + 3bc01f14: 85da mv a1,s6 + 3bc01f16: 8522 mv a0,s0 + 3bc01f18: 639c ld a5,0(a5) + 3bc01f1a: 9782 jalr a5 + 3bc01f1c: 6080 ld s0,0(s1) + 3bc01f1e: 00009917 auipc s2,0x9 + 3bc01f22: 9fa90913 addi s2,s2,-1542 # 3bc0a918 <__func__.1+0x188> + 3bc01f26: 02848063 beq s1,s0,3bc01f46 + 3bc01f2a: 6c08 ld a0,24(s0) + 3bc01f2c: c121 beqz a0,3bc01f6c + 3bc01f2e: 85ca mv a1,s2 + 3bc01f30: c0ffe0ef jal ra,3bc00b3e + 3bc01f34: ed05 bnez a0,3bc01f6c + 3bc01f36: 701c ld a5,32(s0) + 3bc01f38: 00009597 auipc a1,0x9 + 3bc01f3c: 56058593 addi a1,a1,1376 # 3bc0b498 + 3bc01f40: 8522 mv a0,s0 + 3bc01f42: 639c ld a5,0(a5) + 3bc01f44: 9782 jalr a5 + 3bc01f46: 689c ld a5,16(s1) + 3bc01f48: 00009717 auipc a4,0x9 + 3bc01f4c: 50774703 lbu a4,1287(a4) # 3bc0b44f + 3bc01f50: 04077713 andi a4,a4,64 + 3bc01f54: 6b9c ld a5,16(a5) + 3bc01f56: cf09 beqz a4,3bc01f70 + 3bc01f58: 4585 li a1,1 + 3bc01f5a: cc0786e3 beqz a5,3bc01c26 + 3bc01f5e: 8526 mv a0,s1 + 3bc01f60: 9782 jalr a5 + 3bc01f62: b1d1 j 3bc01c26 + 3bc01f64: 6000 ld s0,0(s0) + 3bc01f66: bfa5 j 3bc01ede + 3bc01f68: 6000 ld s0,0(s0) + 3bc01f6a: bf61 j 3bc01f02 + 3bc01f6c: 6000 ld s0,0(s0) + 3bc01f6e: bf65 j 3bc01f26 + 3bc01f70: ca078be3 beqz a5,3bc01c26 + 3bc01f74: 4581 li a1,0 + 3bc01f76: b7e5 j 3bc01f5e + 3bc01f78: 4605 li a2,1 + 3bc01f7a: 00011597 auipc a1,0x11 + 3bc01f7e: 48d58593 addi a1,a1,1165 # 3bc13407 + 3bc01f82: b4bfe0ef jal ra,3bc00acc + 3bc01f86: 4405 li s0,1 + 3bc01f88: b5e5 j 3bc01e70 + 3bc01f8a: 02100693 li a3,33 + 3bc01f8e: 04d70263 beq a4,a3,3bc01fd2 + 3bc01f92: 02200693 li a3,34 + 3bc01f96: 02d70263 beq a4,a3,3bc01fba + 3bc01f9a: 4901 li s2,0 + 3bc01f9c: ccb714e3 bne a4,a1,3bc01c64 + 3bc01fa0: fffff797 auipc a5,0xfffff + 3bc01fa4: 7e478793 addi a5,a5,2020 # 3bc01784 + 3bc01fa8: 000a041b sext.w s0,s4 + 3bc01fac: f61c sd a5,40(a2) + 3bc01fae: 4785 li a5,1 + 3bc01fb0: 00011717 auipc a4,0x11 + 3bc01fb4: 44f70aa3 sb a5,1109(a4) # 3bc13405 + 3bc01fb8: b54d j 3bc01e5a + 3bc01fba: 00011717 auipc a4,0x11 + 3bc01fbe: 34e73703 ld a4,846(a4) # 3bc13308 + 3bc01fc2: 00f71623 sh a5,12(a4) + 3bc01fc6: 4785 li a5,1 + 3bc01fc8: 00011717 auipc a4,0x11 + 3bc01fcc: 42f70ea3 sb a5,1085(a4) # 3bc13405 + 3bc01fd0: b999 j 3bc01c26 + 3bc01fd2: 00011597 auipc a1,0x11 + 3bc01fd6: 3365b583 ld a1,822(a1) # 3bc13308 + 3bc01fda: 8652 mv a2,s4 + 3bc01fdc: 0591 addi a1,a1,4 + 3bc01fde: 000a041b sext.w s0,s4 + 3bc01fe2: aebfe0ef jal ra,3bc00acc + 3bc01fe6: b7e1 j 3bc01fae + +000000003bc01fe8 : + 3bc01fe8: 8082 ret + +000000003bc01fea : + 3bc01fea: 00011797 auipc a5,0x11 + 3bc01fee: 89678793 addi a5,a5,-1898 # 3bc12880 + 3bc01ff2: 00009717 auipc a4,0x9 + 3bc01ff6: 4ef73323 sd a5,1254(a4) # 3bc0b4d8 + 3bc01ffa: 00011797 auipc a5,0x11 + 3bc01ffe: c0678793 addi a5,a5,-1018 # 3bc12c00 + 3bc02002: 00009717 auipc a4,0x9 + 3bc02006: 4ef73f23 sd a5,1278(a4) # 3bc0b500 + 3bc0200a: 00011797 auipc a5,0x11 + 3bc0200e: a7678793 addi a5,a5,-1418 # 3bc12a80 + 3bc02012: 00009717 auipc a4,0x9 + 3bc02016: 4cf73b23 sd a5,1238(a4) # 3bc0b4e8 + 3bc0201a: 00011797 auipc a5,0x11 + 3bc0201e: ae678793 addi a5,a5,-1306 # 3bc12b00 + 3bc02022: 00009717 auipc a4,0x9 + 3bc02026: 4cf73723 sd a5,1230(a4) # 3bc0b4f0 + 3bc0202a: 00011797 auipc a5,0x11 + 3bc0202e: b5678793 addi a5,a5,-1194 # 3bc12b80 + 3bc02032: 00009717 auipc a4,0x9 + 3bc02036: 4cf73323 sd a5,1222(a4) # 3bc0b4f8 + 3bc0203a: 00011797 auipc a5,0x11 + 3bc0203e: dc678793 addi a5,a5,-570 # 3bc12e00 + 3bc02042: 00009717 auipc a4,0x9 + 3bc02046: 5cf73723 sd a5,1486(a4) # 3bc0b610 + 3bc0204a: 00011797 auipc a5,0x11 + 3bc0204e: 23678793 addi a5,a5,566 # 3bc13280 + 3bc02052: 00009717 auipc a4,0x9 + 3bc02056: 62f73f23 sd a5,1598(a4) # 3bc0b690 + 3bc0205a: 00010797 auipc a5,0x10 + 3bc0205e: 7a678793 addi a5,a5,1958 # 3bc12800 + 3bc02062: 00009717 auipc a4,0x9 + 3bc02066: 3ef73b23 sd a5,1014(a4) # 3bc0b458 + 3bc0206a: 00011797 auipc a5,0x11 + 3bc0206e: 25678793 addi a5,a5,598 # 3bc132c0 + 3bc02072: 00009717 auipc a4,0x9 + 3bc02076: 62f73323 sd a5,1574(a4) # 3bc0b698 + 3bc0207a: 00011797 auipc a5,0x11 + 3bc0207e: e0678793 addi a5,a5,-506 # 3bc12e80 + 3bc02082: 00009717 auipc a4,0x9 + 3bc02086: 5ef73723 sd a5,1518(a4) # 3bc0b670 + 3bc0208a: 8082 ret + +000000003bc0208c : + 3bc0208c: 1141 addi sp,sp,-16 + 3bc0208e: 00009597 auipc a1,0x9 + 3bc02092: 44a5b583 ld a1,1098(a1) # 3bc0b4d8 + 3bc02096: 00009517 auipc a0,0x9 + 3bc0209a: 8ca50513 addi a0,a0,-1846 # 3bc0a960 <__func__.1+0x1d0> + 3bc0209e: e406 sd ra,8(sp) + 3bc020a0: ab8fe0ef jal ra,3bc00358 + 3bc020a4: 00009597 auipc a1,0x9 + 3bc020a8: 45c5b583 ld a1,1116(a1) # 3bc0b500 + 3bc020ac: 00009517 auipc a0,0x9 + 3bc020b0: 8cc50513 addi a0,a0,-1844 # 3bc0a978 <__func__.1+0x1e8> + 3bc020b4: aa4fe0ef jal ra,3bc00358 + 3bc020b8: 00009597 auipc a1,0x9 + 3bc020bc: 4305b583 ld a1,1072(a1) # 3bc0b4e8 + 3bc020c0: 00009517 auipc a0,0x9 + 3bc020c4: 8d050513 addi a0,a0,-1840 # 3bc0a990 <__func__.1+0x200> + 3bc020c8: a90fe0ef jal ra,3bc00358 + 3bc020cc: 00009597 auipc a1,0x9 + 3bc020d0: 4245b583 ld a1,1060(a1) # 3bc0b4f0 + 3bc020d4: 00009517 auipc a0,0x9 + 3bc020d8: 8d450513 addi a0,a0,-1836 # 3bc0a9a8 <__func__.1+0x218> + 3bc020dc: a7cfe0ef jal ra,3bc00358 + 3bc020e0: 00009597 auipc a1,0x9 + 3bc020e4: 4185b583 ld a1,1048(a1) # 3bc0b4f8 + 3bc020e8: 00009517 auipc a0,0x9 + 3bc020ec: 8d850513 addi a0,a0,-1832 # 3bc0a9c0 <__func__.1+0x230> + 3bc020f0: a68fe0ef jal ra,3bc00358 + 3bc020f4: 00009597 auipc a1,0x9 + 3bc020f8: 51c5b583 ld a1,1308(a1) # 3bc0b610 + 3bc020fc: 00009517 auipc a0,0x9 + 3bc02100: 8dc50513 addi a0,a0,-1828 # 3bc0a9d8 <__func__.1+0x248> + 3bc02104: a54fe0ef jal ra,3bc00358 + 3bc02108: 00009597 auipc a1,0x9 + 3bc0210c: 5885b583 ld a1,1416(a1) # 3bc0b690 + 3bc02110: 00009517 auipc a0,0x9 + 3bc02114: 8e050513 addi a0,a0,-1824 # 3bc0a9f0 <__func__.1+0x260> + 3bc02118: a40fe0ef jal ra,3bc00358 + 3bc0211c: 00009597 auipc a1,0x9 + 3bc02120: 33c5b583 ld a1,828(a1) # 3bc0b458 + 3bc02124: 00009517 auipc a0,0x9 + 3bc02128: 8e450513 addi a0,a0,-1820 # 3bc0aa08 <__func__.1+0x278> + 3bc0212c: a2cfe0ef jal ra,3bc00358 + 3bc02130: 00009597 auipc a1,0x9 + 3bc02134: 5685b583 ld a1,1384(a1) # 3bc0b698 + 3bc02138: 00009517 auipc a0,0x9 + 3bc0213c: 8e850513 addi a0,a0,-1816 # 3bc0aa20 <__func__.1+0x290> + 3bc02140: a18fe0ef jal ra,3bc00358 + 3bc02144: 60a2 ld ra,8(sp) + 3bc02146: 00009597 auipc a1,0x9 + 3bc0214a: 52a5b583 ld a1,1322(a1) # 3bc0b670 + 3bc0214e: 00009517 auipc a0,0x9 + 3bc02152: 8ea50513 addi a0,a0,-1814 # 3bc0aa38 <__func__.1+0x2a8> + 3bc02156: 0141 addi sp,sp,16 + 3bc02158: a00fe06f j 3bc00358 + +000000003bc0215c : + 3bc0215c: 4501 li a0,0 + 3bc0215e: 3020106f j 3bc03460 + +000000003bc02162 : + 3bc02162: 7179 addi sp,sp,-48 + 3bc02164: f022 sd s0,32(sp) + 3bc02166: 00009417 auipc s0,0x9 + 3bc0216a: 45a40413 addi s0,s0,1114 # 3bc0b5c0 + 3bc0216e: 601c ld a5,0(s0) + 3bc02170: 00009597 auipc a1,0x9 + 3bc02174: 8e058593 addi a1,a1,-1824 # 3bc0aa50 <__func__.1+0x2c0> + 3bc02178: 00011517 auipc a0,0x11 + 3bc0217c: 23050513 addi a0,a0,560 # 3bc133a8 + 3bc02180: f406 sd ra,40(sp) + 3bc02182: ec26 sd s1,24(sp) + 3bc02184: e84a sd s2,16(sp) + 3bc02186: 6f84 ld s1,24(a5) + 3bc02188: e44e sd s3,8(sp) + 3bc0218a: ec0ff0ef jal ra,3bc0184a + 3bc0218e: 00011517 auipc a0,0x11 + 3bc02192: 1ca50513 addi a0,a0,458 # 3bc13358 + 3bc02196: 00009597 auipc a1,0x9 + 3bc0219a: 8c258593 addi a1,a1,-1854 # 3bc0aa58 <__func__.1+0x2c8> + 3bc0219e: eacff0ef jal ra,3bc0184a + 3bc021a2: 00009517 auipc a0,0x9 + 3bc021a6: 46e53503 ld a0,1134(a0) # 3bc0b610 + 3bc021aa: 03f57713 andi a4,a0,63 + 3bc021ae: 87aa mv a5,a0 + 3bc021b0: c709 beqz a4,3bc021ba + 3bc021b2: 04000793 li a5,64 + 3bc021b6: 9f99 subw a5,a5,a4 + 3bc021b8: 97aa add a5,a5,a0 + 3bc021ba: 00009997 auipc s3,0x9 + 3bc021be: 31e98993 addi s3,s3,798 # 3bc0b4d8 + 3bc021c2: 00011717 auipc a4,0x11 + 3bc021c6: 16f73723 sd a5,366(a4) # 3bc13330 + 3bc021ca: 0009b783 ld a5,0(s3) + 3bc021ce: 03f7f693 andi a3,a5,63 + 3bc021d2: c689 beqz a3,3bc021dc + 3bc021d4: 04000713 li a4,64 + 3bc021d8: 9f15 subw a4,a4,a3 + 3bc021da: 97ba add a5,a5,a4 + 3bc021dc: 00009917 auipc s2,0x9 + 3bc021e0: 32490913 addi s2,s2,804 # 3bc0b500 + 3bc021e4: 00011717 auipc a4,0x11 + 3bc021e8: 12f73623 sd a5,300(a4) # 3bc13310 + 3bc021ec: 00093783 ld a5,0(s2) + 3bc021f0: 03f7f693 andi a3,a5,63 + 3bc021f4: c689 beqz a3,3bc021fe + 3bc021f6: 04000713 li a4,64 + 3bc021fa: 9f15 subw a4,a4,a3 + 3bc021fc: 97ba add a5,a5,a4 + 3bc021fe: 08000613 li a2,128 + 3bc02202: 4581 li a1,0 + 3bc02204: 00011717 auipc a4,0x11 + 3bc02208: 12f73223 sd a5,292(a4) # 3bc13328 + 3bc0220c: 807fe0ef jal ra,3bc00a12 + 3bc02210: 0009b503 ld a0,0(s3) + 3bc02214: 20000613 li a2,512 + 3bc02218: 4581 li a1,0 + 3bc0221a: ff8fe0ef jal ra,3bc00a12 + 3bc0221e: 00093503 ld a0,0(s2) + 3bc02222: 20000613 li a2,512 + 3bc02226: 4581 li a1,0 + 3bc02228: feafe0ef jal ra,3bc00a12 + 3bc0222c: 709c ld a5,32(s1) + 3bc0222e: 8526 mv a0,s1 + 3bc02230: 6b9c ld a5,16(a5) + 3bc02232: 9782 jalr a5 + 3bc02234: 00011797 auipc a5,0x11 + 3bc02238: 10a7b223 sd a0,260(a5) # 3bc13338 + 3bc0223c: 601c ld a5,0(s0) + 3bc0223e: 53d8 lw a4,36(a5) + 3bc02240: 4791 li a5,4 + 3bc02242: 02e7e263 bltu a5,a4,3bc02266 + 3bc02246: 00009797 auipc a5,0x9 + 3bc0224a: 28a78793 addi a5,a5,650 # 3bc0b4d0 + 3bc0224e: 4731 li a4,12 + 3bc02250: 00e79123 sh a4,2(a5) + 3bc02254: 4705 li a4,1 + 3bc02256: 00e78223 sb a4,4(a5) + 3bc0225a: 20100793 li a5,513 + 3bc0225e: 00009717 auipc a4,0x9 + 3bc02262: 34f71623 sh a5,844(a4) # 3bc0b5aa + 3bc02266: 00009797 auipc a5,0x9 + 3bc0226a: 1f27b783 ld a5,498(a5) # 3bc0b458 + 3bc0226e: 00011717 auipc a4,0x11 + 3bc02272: 08f73d23 sd a5,154(a4) # 3bc13308 + 3bc02276: 000e1737 lui a4,0xe1 + 3bc0227a: c3d8 sw a4,4(a5) + 3bc0227c: 4721 li a4,8 + 3bc0227e: 00079423 sh zero,8(a5) + 3bc02282: 00e78523 sb a4,10(a5) + 3bc02286: 70a2 ld ra,40(sp) + 3bc02288: 7402 ld s0,32(sp) + 3bc0228a: 00079623 sh zero,12(a5) + 3bc0228e: 64e2 ld s1,24(sp) + 3bc02290: 6942 ld s2,16(sp) + 3bc02292: 69a2 ld s3,8(sp) + 3bc02294: 4501 li a0,0 + 3bc02296: 6145 addi sp,sp,48 + 3bc02298: 8082 ret + +000000003bc0229a : + 3bc0229a: 030007b7 lui a5,0x3000 + 3bc0229e: 43c8 lw a0,4(a5) + 3bc022a0: 2495350b extu a0,a0,9,9 + 3bc022a4: 8082 ret + +000000003bc022a6 : + 3bc022a6: 1141 addi sp,sp,-16 + 3bc022a8: e406 sd ra,8(sp) + 3bc022aa: 93ffe0ef jal ra,3bc00be8 + 3bc022ae: 3e800793 li a5,1000 + 3bc022b2: e911 bnez a0,3bc022c6 + 3bc022b4: 0e0007b7 lui a5,0xe000 + 3bc022b8: 639c ld a5,0(a5) + 3bc022ba: 0417b78b extu a5,a5,1,1 + 3bc022be: eb81 bnez a5,3bc022ce + 3bc022c0: 6789 lui a5,0x2 + 3bc022c2: 71078793 addi a5,a5,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc022c6: 60a2 ld ra,8(sp) + 3bc022c8: 853e mv a0,a5 + 3bc022ca: 0141 addi sp,sp,16 + 3bc022cc: 8082 ret + 3bc022ce: 67e1 lui a5,0x18 + 3bc022d0: 69f78793 addi a5,a5,1695 # 1869f <__BSS_SIZE__+0x12a8f> + 3bc022d4: bfcd j 3bc022c6 + +000000003bc022d6 : + 3bc022d6: 7175 addi sp,sp,-144 + 3bc022d8: f0d2 sd s4,96(sp) + 3bc022da: 00011797 auipc a5,0x11 + 3bc022de: 06a7bb23 sd a0,118(a5) # 3bc13350 + 3bc022e2: 00011797 auipc a5,0x11 + 3bc022e6: 0eb7af23 sw a1,254(a5) # 3bc133e0 + 3bc022ea: 00011a17 auipc s4,0x11 + 3bc022ee: 0faa0a13 addi s4,s4,250 # 3bc133e4 + 3bc022f2: e506 sd ra,136(sp) + 3bc022f4: e122 sd s0,128(sp) + 3bc022f6: fca6 sd s1,120(sp) + 3bc022f8: f8ca sd s2,112(sp) + 3bc022fa: f4ce sd s3,104(sp) + 3bc022fc: ecd6 sd s5,88(sp) + 3bc022fe: e8da sd s6,80(sp) + 3bc02300: e4de sd s7,72(sp) + 3bc02302: e0e2 sd s8,64(sp) + 3bc02304: fc66 sd s9,56(sp) + 3bc02306: f86a sd s10,48(sp) + 3bc02308: f46e sd s11,40(sp) + 3bc0230a: 00ca2023 sw a2,0(s4) + 3bc0230e: 0e0007b7 lui a5,0xe000 + 3bc02312: 0007a223 sw zero,4(a5) # e000004 + 3bc02316: f85ff0ef jal ra,3bc0229a + 3bc0231a: e909 bnez a0,3bc0232c + 3bc0231c: 00008517 auipc a0,0x8 + 3bc02320: 74c50513 addi a0,a0,1868 # 3bc0aa68 <__func__.1+0x2d8> + 3bc02324: 834fe0ef jal ra,3bc00358 + 3bc02328: 596d li s2,-5 + 3bc0232a: a111 j 3bc0272e + 3bc0232c: f7bff0ef jal ra,3bc022a6 + 3bc02330: 0005049b sext.w s1,a0 + 3bc02334: 85a6 mv a1,s1 + 3bc02336: 00008517 auipc a0,0x8 + 3bc0233a: 74a50513 addi a0,a0,1866 # 3bc0aa80 <__func__.1+0x2f0> + 3bc0233e: 81afe0ef jal ra,3bc00358 + 3bc02342: 67e1 lui a5,0x18 + 3bc02344: 69e78793 addi a5,a5,1694 # 1869e <__BSS_SIZE__+0x12a8e> + 3bc02348: 0297f463 bgeu a5,s1,3bc02370 + 3bc0234c: 4785 li a5,1 + 3bc0234e: 00008517 auipc a0,0x8 + 3bc02352: 74a50513 addi a0,a0,1866 # 3bc0aa98 <__func__.1+0x308> + 3bc02356: 00011717 auipc a4,0x11 + 3bc0235a: 0af70923 sb a5,178(a4) # 3bc13408 + 3bc0235e: ffbfd0ef jal ra,3bc00358 + 3bc02362: c00037b7 lui a5,0xc0003 + 3bc02366: 03000737 lui a4,0x3000 + 3bc0236a: 078d addi a5,a5,3 + 3bc0236c: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02370: 85a6 mv a1,s1 + 3bc02372: 00008517 auipc a0,0x8 + 3bc02376: 72e50513 addi a0,a0,1838 # 3bc0aaa0 <__func__.1+0x310> + 3bc0237a: fdffd0ef jal ra,3bc00358 + 3bc0237e: 3e800793 li a5,1000 + 3bc02382: 029787bb mulw a5,a5,s1 + 3bc02386: e43e sd a5,8(sp) + 3bc02388: c00037b7 lui a5,0xc0003 + 3bc0238c: 10178793 addi a5,a5,257 # ffffffffc0003101 <__BL2_END__+0xffffffff843efcf1> + 3bc02390: e83e sd a5,16(sp) + 3bc02392: c00017b7 lui a5,0xc0001 + 3bc02396: 0791 addi a5,a5,4 + 3bc02398: ec3e sd a5,24(sp) + 3bc0239a: 00011797 auipc a5,0x11 + 3bc0239e: f607bb23 sd zero,-138(a5) # 3bc13310 + 3bc023a2: 00011797 auipc a5,0x11 + 3bc023a6: f807b323 sd zero,-122(a5) # 3bc13328 + 3bc023aa: 00011797 auipc a5,0x11 + 3bc023ae: f807b323 sd zero,-122(a5) # 3bc13330 + 3bc023b2: 00011797 auipc a5,0x11 + 3bc023b6: f807b723 sd zero,-114(a5) # 3bc13340 + 3bc023ba: 00011797 auipc a5,0x11 + 3bc023be: f807b723 sd zero,-114(a5) # 3bc13348 + 3bc023c2: 00011797 auipc a5,0x11 + 3bc023c6: f407bb23 sd zero,-170(a5) # 3bc13318 + 3bc023ca: 00011797 auipc a5,0x11 + 3bc023ce: f407bb23 sd zero,-170(a5) # 3bc13320 + 3bc023d2: 00011797 auipc a5,0x11 + 3bc023d6: f607b323 sd zero,-154(a5) # 3bc13338 + 3bc023da: 00011797 auipc a5,0x11 + 3bc023de: 020786a3 sb zero,45(a5) # 3bc13407 + 3bc023e2: 00011797 auipc a5,0x11 + 3bc023e6: 02078223 sb zero,36(a5) # 3bc13406 + 3bc023ea: 00011797 auipc a5,0x11 + 3bc023ee: 00078da3 sb zero,27(a5) # 3bc13405 + 3bc023f2: 00011797 auipc a5,0x11 + 3bc023f6: 00078ca3 sb zero,25(a5) # 3bc1340b + 3bc023fa: 00011797 auipc a5,0x11 + 3bc023fe: fe07a723 sw zero,-18(a5) # 3bc133e8 + 3bc02402: 00011797 auipc a5,0x11 + 3bc02406: f007b323 sd zero,-250(a5) # 3bc13308 + 3bc0240a: 00011797 auipc a5,0x11 + 3bc0240e: fe078fa3 sb zero,-1(a5) # 3bc13409 + 3bc02412: bd9ff0ef jal ra,3bc01fea + 3bc02416: c77ff0ef jal ra,3bc0208c + 3bc0241a: 00009417 auipc s0,0x9 + 3bc0241e: 1a640413 addi s0,s0,422 # 3bc0b5c0 + 3bc02422: 00009797 auipc a5,0x9 + 3bc02426: 24e7b783 ld a5,590(a5) # 3bc0b670 + 3bc0242a: e41c sd a5,8(s0) + 3bc0242c: 40000793 li a5,1024 + 3bc02430: c81c sw a5,16(s0) + 3bc02432: 00009517 auipc a0,0x9 + 3bc02436: 19650513 addi a0,a0,406 # 3bc0b5c8 + 3bc0243a: 00009797 auipc a5,0x9 + 3bc0243e: 25e7b783 ld a5,606(a5) # 3bc0b698 + 3bc02442: e43c sd a5,72(s0) + 3bc02444: 6cd000ef jal ra,3bc03310 + 3bc02448: 0005099b sext.w s3,a0 + 3bc0244c: 892a mv s2,a0 + 3bc0244e: 02099063 bnez s3,3bc0246e + 3bc02452: 00009517 auipc a0,0x9 + 3bc02456: 1c650513 addi a0,a0,454 # 3bc0b618 + 3bc0245a: 54f000ef jal ra,3bc031a8 + 3bc0245e: 02055763 bgez a0,3bc0248c + 3bc02462: 00008517 auipc a0,0x8 + 3bc02466: 66650513 addi a0,a0,1638 # 3bc0aac8 <__func__.1+0x338> + 3bc0246a: eeffd0ef jal ra,3bc00358 + 3bc0246e: 85ce mv a1,s3 + 3bc02470: 00008517 auipc a0,0x8 + 3bc02474: 6f050513 addi a0,a0,1776 # 3bc0ab60 <__func__.1+0x3d0> + 3bc02478: ee1fd0ef jal ra,3bc00358 + 3bc0247c: c00037b7 lui a5,0xc0003 + 3bc02480: 03000737 lui a4,0x3000 + 3bc02484: 079d addi a5,a5,7 + 3bc02486: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc0248a: a455 j 3bc0272e + 3bc0248c: 6000 ld s0,0(s0) + 3bc0248e: e411 bnez s0,3bc0249a + 3bc02490: 00008517 auipc a0,0x8 + 3bc02494: 65850513 addi a0,a0,1624 # 3bc0aae8 <__func__.1+0x358> + 3bc02498: bfc9 j 3bc0246a + 3bc0249a: cc9ff0ef jal ra,3bc02162 + 3bc0249e: 4501 li a0,0 + 3bc024a0: d1ffd0ef jal ra,3bc001be + 3bc024a4: 6742 ld a4,16(sp) + 3bc024a6: 00011917 auipc s2,0x11 + 3bc024aa: f4690913 addi s2,s2,-186 # 3bc133ec + 3bc024ae: 00a92023 sw a0,0(s2) + 3bc024b2: 6522 ld a0,8(sp) + 3bc024b4: 030007b7 lui a5,0x3000 + 3bc024b8: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc024bc: cbffd0ef jal ra,3bc0017a + 3bc024c0: 681c ld a5,16(s0) + 3bc024c2: 4585 li a1,1 + 3bc024c4: 8522 mv a0,s0 + 3bc024c6: 779c ld a5,40(a5) + 3bc024c8: 00011997 auipc s3,0x11 + 3bc024cc: e5898993 addi s3,s3,-424 # 3bc13320 + 3bc024d0: 00011b17 auipc s6,0x11 + 3bc024d4: f38b0b13 addi s6,s6,-200 # 3bc13408 + 3bc024d8: 9782 jalr a5 + 3bc024da: 00011a97 auipc s5,0x11 + 3bc024de: f2ba8a93 addi s5,s5,-213 # 3bc13405 + 3bc024e2: 000ac783 lbu a5,0(s5) + 3bc024e6: 18078663 beqz a5,3bc02672 + 3bc024ea: 6762 ld a4,24(sp) + 3bc024ec: 030007b7 lui a5,0x3000 + 3bc024f0: 00043b83 ld s7,0(s0) + 3bc024f4: 08e7a223 sw a4,132(a5) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc024f8: 4785 li a5,1 + 3bc024fa: 00011717 auipc a4,0x11 + 3bc024fe: f0f708a3 sb a5,-239(a4) # 3bc1340b + 3bc02502: 08200c13 li s8,130 + 3bc02506: 00011c97 auipc s9,0x11 + 3bc0250a: e42c8c93 addi s9,s9,-446 # 3bc13348 + 3bc0250e: 00011d17 auipc s10,0x11 + 3bc02512: e0ad0d13 addi s10,s10,-502 # 3bc13318 + 3bc02516: 00011d97 auipc s11,0x11 + 3bc0251a: e2ad8d93 addi s11,s11,-470 # 3bc13340 + 3bc0251e: 19741b63 bne s0,s7,3bc026b4 + 3bc02522: 02044783 lbu a5,32(s0) + 3bc02526: 470d li a4,3 + 3bc02528: 1ee78063 beq a5,a4,3bc02708 + 3bc0252c: 4715 li a4,5 + 3bc0252e: 1ee78063 beq a5,a4,3bc0270e + 3bc02532: 4709 li a4,2 + 3bc02534: dee79ae3 bne a5,a4,3bc02328 + 3bc02538: 04000793 li a5,64 + 3bc0253c: 0009b503 ld a0,0(s3) + 3bc02540: 04000613 li a2,64 + 3bc02544: 4581 li a1,0 + 3bc02546: 00011717 auipc a4,0x11 + 3bc0254a: eaf72123 sw a5,-350(a4) # 3bc133e8 + 3bc0254e: cc4fe0ef jal ra,3bc00a12 + 3bc02552: 0009b783 ld a5,0(s3) + 3bc02556: 00011717 auipc a4,0x11 + 3bc0255a: dd273703 ld a4,-558(a4) # 3bc13328 + 3bc0255e: 00011b97 auipc s7,0x11 + 3bc02562: e8ab8b93 addi s7,s7,-374 # 3bc133e8 + 3bc02566: eb98 sd a4,16(a5) + 3bc02568: cfd8 sw a4,28(a5) + 3bc0256a: fffff717 auipc a4,0xfffff + 3bc0256e: 33270713 addi a4,a4,818 # 3bc0189c + 3bc02572: f798 sd a4,40(a5) + 3bc02574: 00011c17 auipc s8,0x11 + 3bc02578: da4c0c13 addi s8,s8,-604 # 3bc13318 + 3bc0257c: 000ba703 lw a4,0(s7) + 3bc02580: 000c3503 ld a0,0(s8) + 3bc02584: 04000613 li a2,64 + 3bc02588: cf98 sw a4,24(a5) + 3bc0258a: 4581 li a1,0 + 3bc0258c: c86fe0ef jal ra,3bc00a12 + 3bc02590: 000c3783 ld a5,0(s8) + 3bc02594: 00011717 auipc a4,0x11 + 3bc02598: d7c73703 ld a4,-644(a4) # 3bc13310 + 3bc0259c: 00011517 auipc a0,0x11 + 3bc025a0: dac53503 ld a0,-596(a0) # 3bc13348 + 3bc025a4: eb98 sd a4,16(a5) + 3bc025a6: cfd8 sw a4,28(a5) + 3bc025a8: fffff717 auipc a4,0xfffff + 3bc025ac: 5ae70713 addi a4,a4,1454 # 3bc01b56 + 3bc025b0: f798 sd a4,40(a5) + 3bc025b2: 000ba703 lw a4,0(s7) + 3bc025b6: 0009b583 ld a1,0(s3) + 3bc025ba: 4b85 li s7,1 + 3bc025bc: cf98 sw a4,24(a5) + 3bc025be: 711c ld a5,32(a0) + 3bc025c0: 739c ld a5,32(a5) + 3bc025c2: 9782 jalr a5 + 3bc025c4: 500c lw a1,32(s0) + 3bc025c6: 00008517 auipc a0,0x8 + 3bc025ca: 55a50513 addi a0,a0,1370 # 3bc0ab20 <__func__.1+0x390> + 3bc025ce: d8bfd0ef jal ra,3bc00358 + 3bc025d2: 4501 li a0,0 + 3bc025d4: bebfd0ef jal ra,3bc001be + 3bc025d8: 00a92023 sw a0,0(s2) + 3bc025dc: b81ff0ef jal ra,3bc0215c + 3bc025e0: 000ac783 lbu a5,0(s5) + 3bc025e4: ee078be3 beqz a5,3bc024da + 3bc025e8: 00011797 auipc a5,0x11 + 3bc025ec: e1e78793 addi a5,a5,-482 # 3bc13406 + 3bc025f0: 0007c783 lbu a5,0(a5) + 3bc025f4: eb95 bnez a5,3bc02628 + 3bc025f6: 000b4783 lbu a5,0(s6) + 3bc025fa: 10079d63 bnez a5,3bc02714 + 3bc025fe: 00092503 lw a0,0(s2) + 3bc02602: bbdfd0ef jal ra,3bc001be + 3bc02606: 2501 sext.w a0,a0 + 3bc02608: fca4fae3 bgeu s1,a0,3bc025dc + 3bc0260c: 85a6 mv a1,s1 + 3bc0260e: 00008517 auipc a0,0x8 + 3bc02612: 53250513 addi a0,a0,1330 # 3bc0ab40 <__func__.1+0x3b0> + 3bc02616: d43fd0ef jal ra,3bc00358 + 3bc0261a: c00037b7 lui a5,0xc0003 + 3bc0261e: 03000737 lui a4,0x3000 + 3bc02622: 0795 addi a5,a5,5 + 3bc02624: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02628: 00008517 auipc a0,0x8 + 3bc0262c: 53050513 addi a0,a0,1328 # 3bc0ab58 <__func__.1+0x3c8> + 3bc02630: d29fd0ef jal ra,3bc00358 + 3bc02634: c00037b7 lui a5,0xc0003 + 3bc02638: 03000737 lui a4,0x3000 + 3bc0263c: 0799 addi a5,a5,6 + 3bc0263e: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc02642: 681c ld a5,16(s0) + 3bc02644: 4581 li a1,0 + 3bc02646: 8522 mv a0,s0 + 3bc02648: 779c ld a5,40(a5) + 3bc0264a: 9782 jalr a5 + 3bc0264c: 00009517 auipc a0,0x9 + 3bc02650: fcc50513 addi a0,a0,-52 # 3bc0b618 + 3bc02654: 380000ef jal ra,3bc029d4 + 3bc02658: 0e0007b7 lui a5,0xe000 + 3bc0265c: 0047a903 lw s2,4(a5) # e000004 + 3bc02660: 4d4757b7 lui a5,0x4d475 + 3bc02664: e3178793 addi a5,a5,-463 # 4d474e31 <__BL2_END__+0x11861a21> + 3bc02668: 40f90933 sub s2,s2,a5 + 3bc0266c: 00193913 seqz s2,s2 + 3bc02670: a87d j 3bc0272e + 3bc02672: aebff0ef jal ra,3bc0215c + 3bc02676: 00092503 lw a0,0(s2) + 3bc0267a: b45fd0ef jal ra,3bc001be + 3bc0267e: 2501 sext.w a0,a0 + 3bc02680: 02a4f363 bgeu s1,a0,3bc026a6 + 3bc02684: 000b4783 lbu a5,0(s6) + 3bc02688: ef99 bnez a5,3bc026a6 + 3bc0268a: 00008517 auipc a0,0x8 + 3bc0268e: 48650513 addi a0,a0,1158 # 3bc0ab10 <__func__.1+0x380> + 3bc02692: cc7fd0ef jal ra,3bc00358 + 3bc02696: c00037b7 lui a5,0xc0003 + 3bc0269a: 03000737 lui a4,0x3000 + 3bc0269e: 0791 addi a5,a5,4 + 3bc026a0: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc026a4: b151 j 3bc02328 + 3bc026a6: 00011797 auipc a5,0x11 + 3bc026aa: d637c783 lbu a5,-669(a5) # 3bc13409 + 3bc026ae: e20786e3 beqz a5,3bc024da + 3bc026b2: b1e5 j 3bc0239a + 3bc026b4: 030bb703 ld a4,48(s7) + 3bc026b8: c305 beqz a4,3bc026d8 + 3bc026ba: 00274703 lbu a4,2(a4) + 3bc026be: 08100793 li a5,129 + 3bc026c2: 00f71e63 bne a4,a5,3bc026de + 3bc026c6: 020bb703 ld a4,32(s7) + 3bc026ca: 855e mv a0,s7 + 3bc026cc: 6b18 ld a4,16(a4) + 3bc026ce: 9702 jalr a4 + 3bc026d0: 00ad3023 sd a0,0(s10) + 3bc026d4: 017db023 sd s7,0(s11) + 3bc026d8: 000bbb83 ld s7,0(s7) + 3bc026dc: b589 j 3bc0251e + 3bc026de: 4785 li a5,1 + 3bc026e0: 00f71c63 bne a4,a5,3bc026f8 + 3bc026e4: 020bb703 ld a4,32(s7) + 3bc026e8: 855e mv a0,s7 + 3bc026ea: 6b18 ld a4,16(a4) + 3bc026ec: 9702 jalr a4 + 3bc026ee: 00a9b023 sd a0,0(s3) + 3bc026f2: 017cb023 sd s7,0(s9) + 3bc026f6: b7cd j 3bc026d8 + 3bc026f8: ff8710e3 bne a4,s8,3bc026d8 + 3bc026fc: 020bb703 ld a4,32(s7) + 3bc02700: 855e mv a0,s7 + 3bc02702: 6b18 ld a4,16(a4) + 3bc02704: 9702 jalr a4 + 3bc02706: bfc9 j 3bc026d8 + 3bc02708: 20000793 li a5,512 + 3bc0270c: bd05 j 3bc0253c + 3bc0270e: 40000793 li a5,1024 + 3bc02712: b52d j 3bc0253c + 3bc02714: ed7794e3 bne a5,s7,3bc025dc + 3bc02718: 000a2783 lw a5,0(s4) + 3bc0271c: ec0790e3 bnez a5,3bc025dc + 3bc02720: 00008517 auipc a0,0x8 + 3bc02724: 43050513 addi a0,a0,1072 # 3bc0ab50 <__func__.1+0x3c0> + 3bc02728: c31fd0ef jal ra,3bc00358 + 3bc0272c: 4905 li s2,1 + 3bc0272e: 60aa ld ra,136(sp) + 3bc02730: 640a ld s0,128(sp) + 3bc02732: 74e6 ld s1,120(sp) + 3bc02734: 79a6 ld s3,104(sp) + 3bc02736: 7a06 ld s4,96(sp) + 3bc02738: 6ae6 ld s5,88(sp) + 3bc0273a: 6b46 ld s6,80(sp) + 3bc0273c: 6ba6 ld s7,72(sp) + 3bc0273e: 6c06 ld s8,64(sp) + 3bc02740: 7ce2 ld s9,56(sp) + 3bc02742: 7d42 ld s10,48(sp) + 3bc02744: 7da2 ld s11,40(sp) + 3bc02746: 854a mv a0,s2 + 3bc02748: 7946 ld s2,112(sp) + 3bc0274a: 6149 addi sp,sp,144 + 3bc0274c: 8082 ret + +000000003bc0274e : + 3bc0274e: c909 beqz a0,3bc02760 + 3bc02750: 07150783 lb a5,113(a0) + 3bc02754: 4501 li a0,0 + 3bc02756: 0007d663 bgez a5,3bc02762 + 3bc0275a: fd300513 li a0,-45 + 3bc0275e: 8082 ret + 3bc02760: 5535 li a0,-19 + 3bc02762: 8082 ret + +000000003bc02764 : + 3bc02764: 61b8 ld a4,64(a1) + 3bc02766: 7179 addi sp,sp,-48 + 3bc02768: f022 sd s0,32(sp) + 3bc0276a: ec26 sd s1,24(sp) + 3bc0276c: 00011417 auipc s0,0x11 + 3bc02770: c5443403 ld s0,-940(s0) # 3bc133c0 + 3bc02774: f406 sd ra,40(sp) + 3bc02776: 04058793 addi a5,a1,64 + 3bc0277a: 7c04 ld s1,56(s0) + 3bc0277c: 00f70a63 beq a4,a5,3bc02790 + 3bc02780: 00008517 auipc a0,0x8 + 3bc02784: 42850513 addi a0,a0,1064 # 3bc0aba8 <__func__.5+0x8> + 3bc02788: e42e sd a1,8(sp) + 3bc0278a: bcffd0ef jal ra,3bc00358 + 3bc0278e: 65a2 ld a1,8(sp) + 3bc02790: 8522 mv a0,s0 + 3bc02792: 7402 ld s0,32(sp) + 3bc02794: 68bc ld a5,80(s1) + 3bc02796: 70a2 ld ra,40(sp) + 3bc02798: 64e2 ld s1,24(sp) + 3bc0279a: 6145 addi sp,sp,48 + 3bc0279c: 8782 jr a5 + +000000003bc0279e : + 3bc0279e: 7179 addi sp,sp,-48 + 3bc027a0: ec26 sd s1,24(sp) + 3bc027a2: 00011497 auipc s1,0x11 + 3bc027a6: c1648493 addi s1,s1,-1002 # 3bc133b8 + 3bc027aa: 6088 ld a0,0(s1) + 3bc027ac: f022 sd s0,32(sp) + 3bc027ae: 6405 lui s0,0x1 + 3bc027b0: 80440413 addi s0,s0,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc027b4: 9522 add a0,a0,s0 + 3bc027b6: e42e sd a1,8(sp) + 3bc027b8: f406 sd ra,40(sp) + 3bc027ba: f85fe0ef jal ra,3bc0173e + 3bc027be: 65a2 ld a1,8(sp) + 3bc027c0: 609c ld a5,0(s1) + 3bc027c2: 2501 sext.w a0,a0 + 3bc027c4: ed89 bnez a1,3bc027de + 3bc027c6: 008785b3 add a1,a5,s0 + 3bc027ca: 00256513 ori a0,a0,2 + 3bc027ce: f77fe0ef jal ra,3bc01744 + 3bc027d2: 70a2 ld ra,40(sp) + 3bc027d4: 7402 ld s0,32(sp) + 3bc027d6: 64e2 ld s1,24(sp) + 3bc027d8: 4501 li a0,0 + 3bc027da: 6145 addi sp,sp,48 + 3bc027dc: 8082 ret + 3bc027de: 008785b3 add a1,a5,s0 + 3bc027e2: 9975 andi a0,a0,-3 + 3bc027e4: b7ed j 3bc027ce + +000000003bc027e6 : + 3bc027e6: 00011517 auipc a0,0x11 + 3bc027ea: bda53503 ld a0,-1062(a0) # 3bc133c0 + 3bc027ee: 7d1c ld a5,56(a0) + 3bc027f0: 1141 addi sp,sp,-16 + 3bc027f2: e022 sd s0,0(sp) + 3bc027f4: 67bc ld a5,72(a5) + 3bc027f6: e406 sd ra,8(sp) + 3bc027f8: 05000593 li a1,80 + 3bc027fc: 9782 jalr a5 + 3bc027fe: 842a mv s0,a0 + 3bc02800: c911 beqz a0,3bc02814 + 3bc02802: 05000613 li a2,80 + 3bc02806: 4581 li a1,0 + 3bc02808: a0afe0ef jal ra,3bc00a12 + 3bc0280c: 04040793 addi a5,s0,64 + 3bc02810: e03c sd a5,64(s0) + 3bc02812: e43c sd a5,72(s0) + 3bc02814: 60a2 ld ra,8(sp) + 3bc02816: 8522 mv a0,s0 + 3bc02818: 6402 ld s0,0(sp) + 3bc0281a: 0141 addi sp,sp,16 + 3bc0281c: 8082 ret + +000000003bc0281e : + 3bc0281e: cd51 beqz a0,3bc028ba + 3bc02820: 1141 addi sp,sp,-16 + 3bc02822: e022 sd s0,0(sp) + 3bc02824: e406 sd ra,8(sp) + 3bc02826: 842a mv s0,a0 + 3bc02828: 5529 li a0,-22 + 3bc0282a: c5c1 beqz a1,3bc028b2 + 3bc0282c: 603c ld a5,64(s0) + 3bc0282e: e3d1 bnez a5,3bc028b2 + 3bc02830: 6c18 ld a4,24(s0) + 3bc02832: 00008797 auipc a5,0x8 + 3bc02836: 62e78793 addi a5,a5,1582 # 3bc0ae60 + 3bc0283a: 06f70c63 beq a4,a5,3bc028b2 + 3bc0283e: 0015c703 lbu a4,1(a1) + 3bc02842: 4795 li a5,5 + 3bc02844: 06f71763 bne a4,a5,3bc028b2 + 3bc02848: 07144703 lbu a4,113(s0) + 3bc0284c: 0025c783 lbu a5,2(a1) + 3bc02850: 06f71163 bne a4,a5,3bc028b2 + 3bc02854: 0045d783 lhu a5,4(a1) + 3bc02858: 02845703 lhu a4,40(s0) + 3bc0285c: 04f76b63 bltu a4,a5,3bc028b2 + 3bc02860: 07244683 lbu a3,114(s0) + 3bc02864: 0035c703 lbu a4,3(a1) + 3bc02868: 00e68863 beq a3,a4,3bc02878 + 3bc0286c: 4609 li a2,2 + 3bc0286e: 00c68563 beq a3,a2,3bc02878 + 3bc02872: 468d li a3,3 + 3bc02874: 02d71f63 bne a4,a3,3bc028b2 + 3bc02878: fde00513 li a0,-34 + 3bc0287c: cb9d beqz a5,3bc028b2 + 3bc0287e: 7c18 ld a4,56(s0) + 3bc02880: fc600513 li a0,-58 + 3bc02884: 7f14 ld a3,56(a4) + 3bc02886: c695 beqz a3,3bc028b2 + 3bc02888: 5318 lw a4,32(a4) + 3bc0288a: c705 beqz a4,3bc028b2 + 3bc0288c: 02f41423 sh a5,40(s0) + 3bc02890: f80c sd a1,48(s0) + 3bc02892: e02c sd a1,64(s0) + 3bc02894: 8522 mv a0,s0 + 3bc02896: 06040823 sb zero,112(s0) + 3bc0289a: 04043c23 sd zero,88(s0) + 3bc0289e: 35e010ef jal ra,3bc03bfc + 3bc028a2: 4581 li a1,0 + 3bc028a4: 8522 mv a0,s0 + 3bc028a6: 396010ef jal ra,3bc03c3c + 3bc028aa: 8522 mv a0,s0 + 3bc028ac: 3f2010ef jal ra,3bc03c9e + 3bc028b0: 4501 li a0,0 + 3bc028b2: 60a2 ld ra,8(sp) + 3bc028b4: 6402 ld s0,0(sp) + 3bc028b6: 0141 addi sp,sp,16 + 3bc028b8: 8082 ret + 3bc028ba: 5529 li a0,-22 + 3bc028bc: 8082 ret + +000000003bc028be : + 3bc028be: 8082 ret + +000000003bc028c0 : + 3bc028c0: 8082 ret + +000000003bc028c2 : + 3bc028c2: 00008517 auipc a0,0x8 + 3bc028c6: 59e50513 addi a0,a0,1438 # 3bc0ae60 + 3bc028ca: 8082 ret + +000000003bc028cc : + 3bc028cc: 6d1c ld a5,24(a0) + 3bc028ce: f8a5550b sdd a0,a0,(a0),0,4 + 3bc028d2: 29850613 addi a2,a0,664 + 3bc028d6: f8f7d78b sdd a5,a5,(a5),0,4 + 3bc028da: 04052423 sw zero,72(a0) + 3bc028de: 09850793 addi a5,a0,152 + 3bc028e2: fe07bc23 sd zero,-8(a5) + 3bc028e6: 02078423 sb zero,40(a5) + 3bc028ea: f8f7d78b sdd a5,a5,(a5),0,4 + 3bc028ee: 0007b823 sd zero,16(a5) + 3bc028f2: 08078713 addi a4,a5,128 + 3bc028f6: 00c71363 bne a4,a2,3bc028fc + 3bc028fa: 8082 ret + 3bc028fc: 6514 ld a3,8(a0) + 3bc028fe: 03878793 addi a5,a5,56 + 3bc02902: e51c sd a5,8(a0) + 3bc02904: faa73c23 sd a0,-72(a4) + 3bc02908: fcd73023 sd a3,-64(a4) + 3bc0290c: e29c sd a5,0(a3) + 3bc0290e: 87ba mv a5,a4 + 3bc02910: bfc9 j 3bc028e2 + +000000003bc02912 : + 3bc02912: 65b8 ld a4,72(a1) + 3bc02914: 61b4 ld a3,64(a1) + 3bc02916: 1101 addi sp,sp,-32 + 3bc02918: ec06 sd ra,24(sp) + 3bc0291a: e822 sd s0,16(sp) + 3bc0291c: 07054403 lbu s0,112(a0) + 3bc02920: e698 sd a4,8(a3) + 3bc02922: e314 sd a3,0(a4) + 3bc02924: 5d98 lw a4,56(a1) + 3bc02926: 04058793 addi a5,a1,64 + 3bc0292a: e1bc sd a5,64(a1) + 3bc0292c: e5bc sd a5,72(a1) + 3bc0292e: fdc00793 li a5,-36 + 3bc02932: 00f71363 bne a4,a5,3bc02938 + 3bc02936: dd90 sw a2,56(a1) + 3bc02938: 4785 li a5,1 + 3bc0293a: 06f50823 sb a5,112(a0) + 3bc0293e: 759c ld a5,40(a1) + 3bc02940: e42a sd a0,8(sp) + 3bc02942: 9782 jalr a5 + 3bc02944: 6522 ld a0,8(sp) + 3bc02946: 06850823 sb s0,112(a0) + 3bc0294a: 60e2 ld ra,24(sp) + 3bc0294c: 6442 ld s0,16(sp) + 3bc0294e: 6105 addi sp,sp,32 + 3bc02950: 8082 ret + +000000003bc02952 : + 3bc02952: c539 beqz a0,3bc029a0 + 3bc02954: 6d14 ld a3,24(a0) + 3bc02956: 00008797 auipc a5,0x8 + 3bc0295a: 50a78793 addi a5,a5,1290 # 3bc0ae60 + 3bc0295e: 5729 li a4,-22 + 3bc02960: 04f68163 beq a3,a5,3bc029a2 + 3bc02964: 872a mv a4,a0 + 3bc02966: 6e97478b ldib a5,(a4),9,3 + 3bc0296a: fc078793 addi a5,a5,-64 + 3bc0296e: 86be mv a3,a5 + 3bc02970: 6e86c60b ldib a2,(a3),8,3 + 3bc02974: 02e69163 bne a3,a4,3bc02996 + 3bc02978: 5729 li a4,-22 + 3bc0297a: 02f59463 bne a1,a5,3bc029a2 + 3bc0297e: 1141 addi sp,sp,-16 + 3bc02980: fca00613 li a2,-54 + 3bc02984: 85be mv a1,a5 + 3bc02986: e406 sd ra,8(sp) + 3bc02988: f8bff0ef jal ra,3bc02912 + 3bc0298c: 60a2 ld ra,8(sp) + 3bc0298e: 4701 li a4,0 + 3bc02990: 853a mv a0,a4 + 3bc02992: 0141 addi sp,sp,16 + 3bc02994: 8082 ret + 3bc02996: fef584e3 beq a1,a5,3bc0297e + 3bc0299a: fc060793 addi a5,a2,-64 + 3bc0299e: bfc1 j 3bc0296e + 3bc029a0: 5729 li a4,-22 + 3bc029a2: 853a mv a0,a4 + 3bc029a4: 8082 ret + +000000003bc029a6 : + 3bc029a6: 7179 addi sp,sp,-48 + 3bc029a8: f022 sd s0,32(sp) + 3bc029aa: ec26 sd s1,24(sp) + 3bc029ac: f406 sd ra,40(sp) + 3bc029ae: 84ae mv s1,a1 + 3bc029b0: 04850413 addi s0,a0,72 + 3bc029b4: 652c ld a1,72(a0) + 3bc029b6: 00859763 bne a1,s0,3bc029c4 + 3bc029ba: 70a2 ld ra,40(sp) + 3bc029bc: 7402 ld s0,32(sp) + 3bc029be: 64e2 ld s1,24(sp) + 3bc029c0: 6145 addi sp,sp,48 + 3bc029c2: 8082 ret + 3bc029c4: 8626 mv a2,s1 + 3bc029c6: fc058593 addi a1,a1,-64 + 3bc029ca: e42a sd a0,8(sp) + 3bc029cc: f47ff0ef jal ra,3bc02912 + 3bc029d0: 6522 ld a0,8(sp) + 3bc029d2: b7cd j 3bc029b4 + +000000003bc029d4 : + 3bc029d4: 7139 addi sp,sp,-64 + 3bc029d6: f822 sd s0,48(sp) + 3bc029d8: fc06 sd ra,56(sp) + 3bc029da: f426 sd s1,40(sp) + 3bc029dc: f04a sd s2,32(sp) + 3bc029de: ec4e sd s3,24(sp) + 3bc029e0: e852 sd s4,16(sp) + 3bc029e2: e456 sd s5,8(sp) + 3bc029e4: 00011417 auipc s0,0x11 + 3bc029e8: 9dc43403 ld s0,-1572(s0) # 3bc133c0 + 3bc029ec: cc3d beqz s0,3bc02a6a + 3bc029ee: 84aa mv s1,a0 + 3bc029f0: 5529 li a0,-22 + 3bc029f2: c0bd beqz s1,3bc02a58 + 3bc029f4: 7c18 ld a4,56(s0) + 3bc029f6: 06971163 bne a4,s1,3bc02a58 + 3bc029fa: 5018 lw a4,32(s0) + 3bc029fc: 02043c23 sd zero,56(s0) + 3bc02a00: 89a6 mv s3,s1 + 3bc02a02: e311 bnez a4,3bc02a06 + 3bc02a04: 4981 li s3,0 + 3bc02a06: 02042023 sw zero,32(s0) + 3bc02a0a: 05040913 addi s2,s0,80 + 3bc02a0e: 25040a13 addi s4,s0,592 + 3bc02a12: 4a85 li s5,1 + 3bc02a14: 07590823 sb s5,112(s2) + 3bc02a18: 854a mv a0,s2 + 3bc02a1a: fc600593 li a1,-58 + 3bc02a1e: 08090913 addi s2,s2,128 + 3bc02a22: f85ff0ef jal ra,3bc029a6 + 3bc02a26: ff4917e3 bne s2,s4,3bc02a14 + 3bc02a2a: 00098663 beqz s3,3bc02a36 + 3bc02a2e: 0289b783 ld a5,40(s3) + 3bc02a32: 8522 mv a0,s0 + 3bc02a34: 9782 jalr a5 + 3bc02a36: 8522 mv a0,s0 + 3bc02a38: e95ff0ef jal ra,3bc028cc + 3bc02a3c: 6c9c ld a5,24(s1) + 3bc02a3e: 8522 mv a0,s0 + 3bc02a40: 9782 jalr a5 + 3bc02a42: 8522 mv a0,s0 + 3bc02a44: 4581 li a1,0 + 3bc02a46: 106010ef jal ra,3bc03b4c + 3bc02a4a: 4501 li a0,0 + 3bc02a4c: 04042423 sw zero,72(s0) + 3bc02a50: 02042023 sw zero,32(s0) + 3bc02a54: 24040823 sb zero,592(s0) + 3bc02a58: 70e2 ld ra,56(sp) + 3bc02a5a: 7442 ld s0,48(sp) + 3bc02a5c: 74a2 ld s1,40(sp) + 3bc02a5e: 7902 ld s2,32(sp) + 3bc02a60: 69e2 ld s3,24(sp) + 3bc02a62: 6a42 ld s4,16(sp) + 3bc02a64: 6aa2 ld s5,8(sp) + 3bc02a66: 6121 addi sp,sp,64 + 3bc02a68: 8082 ret + 3bc02a6a: 5535 li a0,-19 + 3bc02a6c: b7f5 j 3bc02a58 + +000000003bc02a6e : + 3bc02a6e: 1101 addi sp,sp,-32 + 3bc02a70: e822 sd s0,16(sp) + 3bc02a72: e426 sd s1,8(sp) + 3bc02a74: ec06 sd ra,24(sp) + 3bc02a76: 842e mv s0,a1 + 3bc02a78: 84aa mv s1,a0 + 3bc02a7a: cc5fe0ef jal ra,3bc0173e + 3bc02a7e: 2501 sext.w a0,a0 + 3bc02a80: 8d41 or a0,a0,s0 + 3bc02a82: 6442 ld s0,16(sp) + 3bc02a84: 60e2 ld ra,24(sp) + 3bc02a86: 85a6 mv a1,s1 + 3bc02a88: 64a2 ld s1,8(sp) + 3bc02a8a: 6105 addi sp,sp,32 + 3bc02a8c: cb9fe06f j 3bc01744 + +000000003bc02a90 : + 3bc02a90: 1101 addi sp,sp,-32 + 3bc02a92: e822 sd s0,16(sp) + 3bc02a94: ec06 sd ra,24(sp) + 3bc02a96: 842a mv s0,a0 + 3bc02a98: e42e sd a1,8(sp) + 3bc02a9a: ca5fe0ef jal ra,3bc0173e + 3bc02a9e: 65a2 ld a1,8(sp) + 3bc02aa0: 60e2 ld ra,24(sp) + 3bc02aa2: 2501 sext.w a0,a0 + 3bc02aa4: fff5c793 not a5,a1 + 3bc02aa8: 85a2 mv a1,s0 + 3bc02aaa: 6442 ld s0,16(sp) + 3bc02aac: 8d7d and a0,a0,a5 + 3bc02aae: 6105 addi sp,sp,32 + 3bc02ab0: c95fe06f j 3bc01744 + +000000003bc02ab4 : + 3bc02ab4: 1101 addi sp,sp,-32 + 3bc02ab6: e426 sd s1,8(sp) + 3bc02ab8: 00011497 auipc s1,0x11 + 3bc02abc: 90048493 addi s1,s1,-1792 # 3bc133b8 + 3bc02ac0: 6088 ld a0,0(s1) + 3bc02ac2: e822 sd s0,16(sp) + 3bc02ac4: 6405 lui s0,0x1 + 3bc02ac6: 80440413 addi s0,s0,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02aca: 4585 li a1,1 + 3bc02acc: 9522 add a0,a0,s0 + 3bc02ace: ec06 sd ra,24(sp) + 3bc02ad0: f9fff0ef jal ra,3bc02a6e + 3bc02ad4: 4529 li a0,10 + 3bc02ad6: edefd0ef jal ra,3bc001b4 + 3bc02ada: 6088 ld a0,0(s1) + 3bc02adc: 4585 li a1,1 + 3bc02ade: 9522 add a0,a0,s0 + 3bc02ae0: fb1ff0ef jal ra,3bc02a90 + 3bc02ae4: 60e2 ld ra,24(sp) + 3bc02ae6: 6442 ld s0,16(sp) + 3bc02ae8: 64a2 ld s1,8(sp) + 3bc02aea: 4501 li a0,0 + 3bc02aec: 6105 addi sp,sp,32 + 3bc02aee: 8082 ret + +000000003bc02af0 : + 3bc02af0: 7179 addi sp,sp,-48 + 3bc02af2: f022 sd s0,32(sp) + 3bc02af4: ec26 sd s1,24(sp) + 3bc02af6: e84a sd s2,16(sp) + 3bc02af8: e44e sd s3,8(sp) + 3bc02afa: f406 sd ra,40(sp) + 3bc02afc: 892a mv s2,a0 + 3bc02afe: 89ae mv s3,a1 + 3bc02b00: 84b2 mv s1,a2 + 3bc02b02: 4401 li s0,0 + 3bc02b04: 00941b63 bne s0,s1,3bc02b1a + 3bc02b08: fc400513 li a0,-60 + 3bc02b0c: 70a2 ld ra,40(sp) + 3bc02b0e: 7402 ld s0,32(sp) + 3bc02b10: 64e2 ld s1,24(sp) + 3bc02b12: 6942 ld s2,16(sp) + 3bc02b14: 69a2 ld s3,8(sp) + 3bc02b16: 6145 addi sp,sp,48 + 3bc02b18: 8082 ret + 3bc02b1a: 854a mv a0,s2 + 3bc02b1c: c23fe0ef jal ra,3bc0173e + 3bc02b20: 2501 sext.w a0,a0 + 3bc02b22: 01357533 and a0,a0,s3 + 3bc02b26: e511 bnez a0,3bc02b32 + 3bc02b28: 4505 li a0,1 + 3bc02b2a: e60fd0ef jal ra,3bc0018a + 3bc02b2e: 2405 addiw s0,s0,1 + 3bc02b30: bfd1 j 3bc02b04 + 3bc02b32: 4501 li a0,0 + 3bc02b34: bfe1 j 3bc02b0c + +000000003bc02b36 : + 3bc02b36: 1101 addi sp,sp,-32 + 3bc02b38: e426 sd s1,8(sp) + 3bc02b3a: 00011497 auipc s1,0x11 + 3bc02b3e: 87e48493 addi s1,s1,-1922 # 3bc133b8 + 3bc02b42: e822 sd s0,16(sp) + 3bc02b44: 842a mv s0,a0 + 3bc02b46: 6088 ld a0,0(s1) + 3bc02b48: 6609 lui a2,0x2 + 3bc02b4a: 71060613 addi a2,a2,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc02b4e: 800005b7 lui a1,0x80000 + 3bc02b52: 0541 addi a0,a0,16 + 3bc02b54: ec06 sd ra,24(sp) + 3bc02b56: f9bff0ef jal ra,3bc02af0 + 3bc02b5a: c919 beqz a0,3bc02b70 + 3bc02b5c: 00008597 auipc a1,0x8 + 3bc02b60: 27c58593 addi a1,a1,636 # 3bc0add8 <__func__.3> + 3bc02b64: 00008517 auipc a0,0x8 + 3bc02b68: 06c50513 addi a0,a0,108 # 3bc0abd0 <__func__.5+0x30> + 3bc02b6c: fecfd0ef jal ra,3bc00358 + 3bc02b70: 608c ld a1,0(s1) + 3bc02b72: 0064151b slliw a0,s0,0x6 + 3bc02b76: 02056513 ori a0,a0,32 + 3bc02b7a: 05c1 addi a1,a1,16 + 3bc02b7c: 2501 sext.w a0,a0 + 3bc02b7e: bc7fe0ef jal ra,3bc01744 + 3bc02b82: 06400413 li s0,100 + 3bc02b86: 6088 ld a0,0(s1) + 3bc02b88: 0541 addi a0,a0,16 + 3bc02b8a: bb5fe0ef jal ra,3bc0173e + 3bc02b8e: 0005061b sext.w a2,a0 + 3bc02b92: 02057513 andi a0,a0,32 + 3bc02b96: cd09 beqz a0,3bc02bb0 + 3bc02b98: 347d addiw s0,s0,-1 + 3bc02b9a: e015 bnez s0,3bc02bbe + 3bc02b9c: 00008597 auipc a1,0x8 + 3bc02ba0: 23c58593 addi a1,a1,572 # 3bc0add8 <__func__.3> + 3bc02ba4: 00008517 auipc a0,0x8 + 3bc02ba8: 04c50513 addi a0,a0,76 # 3bc0abf0 <__func__.5+0x50> + 3bc02bac: facfd0ef jal ra,3bc00358 + 3bc02bb0: 6442 ld s0,16(sp) + 3bc02bb2: 60e2 ld ra,24(sp) + 3bc02bb4: 64a2 ld s1,8(sp) + 3bc02bb6: 4505 li a0,1 + 3bc02bb8: 6105 addi sp,sp,32 + 3bc02bba: dd0fd06f j 3bc0018a + 3bc02bbe: 4505 li a0,1 + 3bc02bc0: dcafd0ef jal ra,3bc0018a + 3bc02bc4: b7c9 j 3bc02b86 + +000000003bc02bc6 : + 3bc02bc6: 1101 addi sp,sp,-32 + 3bc02bc8: e426 sd s1,8(sp) + 3bc02bca: e04a sd s2,0(sp) + 3bc02bcc: ec06 sd ra,24(sp) + 3bc02bce: e822 sd s0,16(sp) + 3bc02bd0: 07154403 lbu s0,113(a0) + 3bc02bd4: 84aa mv s1,a0 + 3bc02bd6: 60000913 li s2,1536 + 3bc02bda: 883d andi s0,s0,15 + 3bc02bdc: e019 bnez s0,3bc02be2 + 3bc02bde: 10000913 li s2,256 + 3bc02be2: 8526 mv a0,s1 + 3bc02be4: dc3ff0ef jal ra,3bc029a6 + 3bc02be8: 6505 lui a0,0x1 + 3bc02bea: 91850513 addi a0,a0,-1768 # 918 <__BSS_SIZE__-0x52f8> + 3bc02bee: 0416 slli s0,s0,0x5 + 3bc02bf0: 942a add s0,s0,a0 + 3bc02bf2: 00010517 auipc a0,0x10 + 3bc02bf6: 7c653503 ld a0,1990(a0) # 3bc133b8 + 3bc02bfa: 9522 add a0,a0,s0 + 3bc02bfc: b43fe0ef jal ra,3bc0173e + 3bc02c00: 3c05350b extu a0,a0,15,0 + 3bc02c04: 050a slli a0,a0,0x2 + 3bc02c06: 01257963 bgeu a0,s2,3bc02c18 + 3bc02c0a: 6442 ld s0,16(sp) + 3bc02c0c: 5ca8 lw a0,120(s1) + 3bc02c0e: 60e2 ld ra,24(sp) + 3bc02c10: 64a2 ld s1,8(sp) + 3bc02c12: 6902 ld s2,0(sp) + 3bc02c14: 6105 addi sp,sp,32 + 3bc02c16: b705 j 3bc02b36 + 3bc02c18: 60e2 ld ra,24(sp) + 3bc02c1a: 6442 ld s0,16(sp) + 3bc02c1c: 64a2 ld s1,8(sp) + 3bc02c1e: 6902 ld s2,0(sp) + 3bc02c20: 6105 addi sp,sp,32 + 3bc02c22: 8082 ret + +000000003bc02c24 : + 3bc02c24: 27052783 lw a5,624(a0) + 3bc02c28: cba1 beqz a5,3bc02c78 + 3bc02c2a: 1101 addi sp,sp,-32 + 3bc02c2c: e822 sd s0,16(sp) + 3bc02c2e: e426 sd s1,8(sp) + 3bc02c30: e04a sd s2,0(sp) + 3bc02c32: ec06 sd ra,24(sp) + 3bc02c34: 842a mv s0,a0 + 3bc02c36: 26052823 sw zero,624(a0) + 3bc02c3a: 0d050493 addi s1,a0,208 + 3bc02c3e: 25050913 addi s2,a0,592 + 3bc02c42: 6c9c ld a5,24(s1) + 3bc02c44: c791 beqz a5,3bc02c50 + 3bc02c46: fc600593 li a1,-58 + 3bc02c4a: 8526 mv a0,s1 + 3bc02c4c: f7bff0ef jal ra,3bc02bc6 + 3bc02c50: 08048493 addi s1,s1,128 + 3bc02c54: ff2497e3 bne s1,s2,3bc02c42 + 3bc02c58: 7c1c ld a5,56(s0) + 3bc02c5a: 779c ld a5,40(a5) + 3bc02c5c: cb81 beqz a5,3bc02c6c + 3bc02c5e: 8522 mv a0,s0 + 3bc02c60: 6442 ld s0,16(sp) + 3bc02c62: 60e2 ld ra,24(sp) + 3bc02c64: 64a2 ld s1,8(sp) + 3bc02c66: 6902 ld s2,0(sp) + 3bc02c68: 6105 addi sp,sp,32 + 3bc02c6a: 8782 jr a5 + 3bc02c6c: 60e2 ld ra,24(sp) + 3bc02c6e: 6442 ld s0,16(sp) + 3bc02c70: 64a2 ld s1,8(sp) + 3bc02c72: 6902 ld s2,0(sp) + 3bc02c74: 6105 addi sp,sp,32 + 3bc02c76: 8082 ret + 3bc02c78: 8082 ret + +000000003bc02c7a : + 3bc02c7a: 1101 addi sp,sp,-32 + 3bc02c7c: e822 sd s0,16(sp) + 3bc02c7e: 00010417 auipc s0,0x10 + 3bc02c82: 73a40413 addi s0,s0,1850 # 3bc133b8 + 3bc02c86: 6008 ld a0,0(s0) + 3bc02c88: 6609 lui a2,0x2 + 3bc02c8a: 71060613 addi a2,a2,1808 # 2710 <__BSS_SIZE__-0x3500> + 3bc02c8e: 800005b7 lui a1,0x80000 + 3bc02c92: 0541 addi a0,a0,16 + 3bc02c94: ec06 sd ra,24(sp) + 3bc02c96: e426 sd s1,8(sp) + 3bc02c98: e59ff0ef jal ra,3bc02af0 + 3bc02c9c: c919 beqz a0,3bc02cb2 + 3bc02c9e: 00008597 auipc a1,0x8 + 3bc02ca2: 15258593 addi a1,a1,338 # 3bc0adf0 <__func__.4> + 3bc02ca6: 00008517 auipc a0,0x8 + 3bc02caa: f2a50513 addi a0,a0,-214 # 3bc0abd0 <__func__.5+0x30> + 3bc02cae: eaafd0ef jal ra,3bc00358 + 3bc02cb2: 600c ld a1,0(s0) + 3bc02cb4: 40000513 li a0,1024 + 3bc02cb8: 018004b7 lui s1,0x1800 + 3bc02cbc: 02458593 addi a1,a1,36 + 3bc02cc0: a85fe0ef jal ra,3bc01744 + 3bc02cc4: 600c ld a1,0(s0) + 3bc02cc6: 00400537 lui a0,0x400 + 3bc02cca: 40050513 addi a0,a0,1024 # 400400 <__BSS_SIZE__+0x3fa7f0> + 3bc02cce: 02858593 addi a1,a1,40 + 3bc02cd2: a73fe0ef jal ra,3bc01744 + 3bc02cd6: 600c ld a1,0(s0) + 3bc02cd8: 44048513 addi a0,s1,1088 # 1800440 <__BSS_SIZE__+0x17fa830> + 3bc02cdc: 10458593 addi a1,a1,260 + 3bc02ce0: a65fe0ef jal ra,3bc01744 + 3bc02ce4: 600c ld a1,0(s0) + 3bc02ce6: 5c048513 addi a0,s1,1472 + 3bc02cea: 10858593 addi a1,a1,264 + 3bc02cee: a57fe0ef jal ra,3bc01744 + 3bc02cf2: 600c ld a1,0(s0) + 3bc02cf4: 74048513 addi a0,s1,1856 + 3bc02cf8: 06400493 li s1,100 + 3bc02cfc: 10c58593 addi a1,a1,268 + 3bc02d00: a45fe0ef jal ra,3bc01744 + 3bc02d04: 600c ld a1,0(s0) + 3bc02d06: 43000513 li a0,1072 + 3bc02d0a: 05c1 addi a1,a1,16 + 3bc02d0c: a39fe0ef jal ra,3bc01744 + 3bc02d10: 6008 ld a0,0(s0) + 3bc02d12: 0541 addi a0,a0,16 + 3bc02d14: a2bfe0ef jal ra,3bc0173e + 3bc02d18: 0005061b sext.w a2,a0 + 3bc02d1c: 03057513 andi a0,a0,48 + 3bc02d20: c50d beqz a0,3bc02d4a + 3bc02d22: 34fd addiw s1,s1,-1 + 3bc02d24: ec99 bnez s1,3bc02d42 + 3bc02d26: 6442 ld s0,16(sp) + 3bc02d28: 60e2 ld ra,24(sp) + 3bc02d2a: 64a2 ld s1,8(sp) + 3bc02d2c: 00008597 auipc a1,0x8 + 3bc02d30: 0c458593 addi a1,a1,196 # 3bc0adf0 <__func__.4> + 3bc02d34: 00008517 auipc a0,0x8 + 3bc02d38: eec50513 addi a0,a0,-276 # 3bc0ac20 <__func__.5+0x80> + 3bc02d3c: 6105 addi sp,sp,32 + 3bc02d3e: e1afd06f j 3bc00358 + 3bc02d42: 4505 li a0,1 + 3bc02d44: c46fd0ef jal ra,3bc0018a + 3bc02d48: b7e1 j 3bc02d10 + 3bc02d4a: 60e2 ld ra,24(sp) + 3bc02d4c: 6442 ld s0,16(sp) + 3bc02d4e: 64a2 ld s1,8(sp) + 3bc02d50: 6105 addi sp,sp,32 + 3bc02d52: 8082 ret + +000000003bc02d54 <_dwc2_ep_disable.isra.0>: + 3bc02d54: 00010717 auipc a4,0x10 + 3bc02d58: 66c73703 ld a4,1644(a4) # 3bc133c0 + 3bc02d5c: 05070713 addi a4,a4,80 + 3bc02d60: 07154683 lbu a3,113(a0) + 3bc02d64: 00e51c63 bne a0,a4,3bc02d7c <_dwc2_ep_disable.isra.0+0x28> + 3bc02d68: 00008597 auipc a1,0x8 + 3bc02d6c: 04058593 addi a1,a1,64 # 3bc0ada8 <__func__.1> + 3bc02d70: 00008517 auipc a0,0x8 + 3bc02d74: ee050513 addi a0,a0,-288 # 3bc0ac50 <__func__.5+0xb0> + 3bc02d78: de0fd06f j 3bc00358 + 3bc02d7c: 7139 addi sp,sp,-64 + 3bc02d7e: f04a sd s2,32(sp) + 3bc02d80: ec4e sd s3,24(sp) + 3bc02d82: 00010917 auipc s2,0x10 + 3bc02d86: 63690913 addi s2,s2,1590 # 3bc133b8 + 3bc02d8a: fc06 sd ra,56(sp) + 3bc02d8c: f822 sd s0,48(sp) + 3bc02d8e: f426 sd s1,40(sp) + 3bc02d90: e852 sd s4,16(sp) + 3bc02d92: e456 sd s5,8(sp) + 3bc02d94: fc76b70b extu a4,a3,63,7 + 3bc02d98: 00093983 ld s3,0(s2) + 3bc02d9c: 00f6f793 andi a5,a3,15 + 3bc02da0: 0e070563 beqz a4,3bc02e8a <_dwc2_ep_disable.isra.0+0x136> + 3bc02da4: 04878793 addi a5,a5,72 + 3bc02da8: 0796 slli a5,a5,0x5 + 3bc02daa: 99be add s3,s3,a5 + 3bc02dac: 84aa mv s1,a0 + 3bc02dae: 854e mv a0,s3 + 3bc02db0: 98ffe0ef jal ra,3bc0173e + 3bc02db4: 00050a1b sext.w s4,a0 + 3bc02db8: 080a5a63 bgez s4,3bc02e4c <_dwc2_ep_disable.isra.0+0xf8> + 3bc02dbc: 0714c783 lbu a5,113(s1) + 3bc02dc0: 00093503 ld a0,0(s2) + 3bc02dc4: fc77b70b extu a4,a5,63,7 + 3bc02dc8: 00f7f413 andi s0,a5,15 + 3bc02dcc: c371 beqz a4,3bc02e90 <_dwc2_ep_disable.isra.0+0x13c> + 3bc02dce: 04840413 addi s0,s0,72 + 3bc02dd2: 0416 slli s0,s0,0x5 + 3bc02dd4: 00850ab3 add s5,a0,s0 + 3bc02dd8: 0421 addi s0,s0,8 + 3bc02dda: 942a add s0,s0,a0 + 3bc02ddc: 080005b7 lui a1,0x8000 + 3bc02de0: 8556 mv a0,s5 + 3bc02de2: c8dff0ef jal ra,3bc02a6e + 3bc02de6: 06400613 li a2,100 + 3bc02dea: 04000593 li a1,64 + 3bc02dee: 8522 mv a0,s0 + 3bc02df0: d01ff0ef jal ra,3bc02af0 + 3bc02df4: c919 beqz a0,3bc02e0a <_dwc2_ep_disable.isra.0+0xb6> + 3bc02df6: 00008597 auipc a1,0x8 + 3bc02dfa: f9a58593 addi a1,a1,-102 # 3bc0ad90 <__func__.0> + 3bc02dfe: 00008517 auipc a0,0x8 + 3bc02e02: e6a50513 addi a0,a0,-406 # 3bc0ac68 <__func__.5+0xc8> + 3bc02e06: d52fd0ef jal ra,3bc00358 + 3bc02e0a: 480005b7 lui a1,0x48000 + 3bc02e0e: 8556 mv a0,s5 + 3bc02e10: c5fff0ef jal ra,3bc02a6e + 3bc02e14: 06400613 li a2,100 + 3bc02e18: 4589 li a1,2 + 3bc02e1a: 8522 mv a0,s0 + 3bc02e1c: cd5ff0ef jal ra,3bc02af0 + 3bc02e20: c919 beqz a0,3bc02e36 <_dwc2_ep_disable.isra.0+0xe2> + 3bc02e22: 00008597 auipc a1,0x8 + 3bc02e26: f6e58593 addi a1,a1,-146 # 3bc0ad90 <__func__.0> + 3bc02e2a: 00008517 auipc a0,0x8 + 3bc02e2e: e7e50513 addi a0,a0,-386 # 3bc0aca8 <__func__.5+0x108> + 3bc02e32: d26fd0ef jal ra,3bc00358 + 3bc02e36: 4589 li a1,2 + 3bc02e38: 8522 mv a0,s0 + 3bc02e3a: c35ff0ef jal ra,3bc02a6e + 3bc02e3e: 07148783 lb a5,113(s1) + 3bc02e42: 0a07d163 bgez a5,3bc02ee4 <_dwc2_ep_disable.isra.0+0x190> + 3bc02e46: 5ca8 lw a0,120(s1) + 3bc02e48: cefff0ef jal ra,3bc02b36 + 3bc02e4c: 7fff8537 lui a0,0x7fff8 + 3bc02e50: 157d addi a0,a0,-1 + 3bc02e52: 00aa7a33 and s4,s4,a0 + 3bc02e56: 08000537 lui a0,0x8000 + 3bc02e5a: 85ce mv a1,s3 + 3bc02e5c: 00aa6533 or a0,s4,a0 + 3bc02e60: 8e5fe0ef jal ra,3bc01744 + 3bc02e64: 8526 mv a0,s1 + 3bc02e66: fc600593 li a1,-58 + 3bc02e6a: d5dff0ef jal ra,3bc02bc6 + 3bc02e6e: 4785 li a5,1 + 3bc02e70: 06f48823 sb a5,112(s1) + 3bc02e74: 70e2 ld ra,56(sp) + 3bc02e76: 7442 ld s0,48(sp) + 3bc02e78: 0404b023 sd zero,64(s1) + 3bc02e7c: 7902 ld s2,32(sp) + 3bc02e7e: 74a2 ld s1,40(sp) + 3bc02e80: 69e2 ld s3,24(sp) + 3bc02e82: 6a42 ld s4,16(sp) + 3bc02e84: 6aa2 ld s5,8(sp) + 3bc02e86: 6121 addi sp,sp,64 + 3bc02e88: 8082 ret + 3bc02e8a: 05878793 addi a5,a5,88 + 3bc02e8e: bf29 j 3bc02da8 <_dwc2_ep_disable.isra.0+0x54> + 3bc02e90: 05840413 addi s0,s0,88 + 3bc02e94: 0416 slli s0,s0,0x5 + 3bc02e96: 00850ab3 add s5,a0,s0 + 3bc02e9a: 0421 addi s0,s0,8 + 3bc02e9c: 942a add s0,s0,a0 + 3bc02e9e: 0551 addi a0,a0,20 + 3bc02ea0: 89ffe0ef jal ra,3bc0173e + 3bc02ea4: 08057513 andi a0,a0,128 + 3bc02ea8: e919 bnez a0,3bc02ebe <_dwc2_ep_disable.isra.0+0x16a> + 3bc02eaa: 00093503 ld a0,0(s2) + 3bc02eae: 6785 lui a5,0x1 + 3bc02eb0: 80478793 addi a5,a5,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02eb4: 20000593 li a1,512 + 3bc02eb8: 953e add a0,a0,a5 + 3bc02eba: bb5ff0ef jal ra,3bc02a6e + 3bc02ebe: 00093503 ld a0,0(s2) + 3bc02ec2: 06400613 li a2,100 + 3bc02ec6: 08000593 li a1,128 + 3bc02eca: 0551 addi a0,a0,20 + 3bc02ecc: c25ff0ef jal ra,3bc02af0 + 3bc02ed0: dd0d beqz a0,3bc02e0a <_dwc2_ep_disable.isra.0+0xb6> + 3bc02ed2: 00008597 auipc a1,0x8 + 3bc02ed6: ebe58593 addi a1,a1,-322 # 3bc0ad90 <__func__.0> + 3bc02eda: 00008517 auipc a0,0x8 + 3bc02ede: dae50513 addi a0,a0,-594 # 3bc0ac88 <__func__.5+0xe8> + 3bc02ee2: b715 j 3bc02e06 <_dwc2_ep_disable.isra.0+0xb2> + 3bc02ee4: 00093503 ld a0,0(s2) + 3bc02ee8: 6785 lui a5,0x1 + 3bc02eea: 80478793 addi a5,a5,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc02eee: 40000593 li a1,1024 + 3bc02ef2: 953e add a0,a0,a5 + 3bc02ef4: b7bff0ef jal ra,3bc02a6e + 3bc02ef8: bf91 j 3bc02e4c <_dwc2_ep_disable.isra.0+0xf8> + +000000003bc02efa : + 3bc02efa: cd09 beqz a0,3bc02f14 + 3bc02efc: 6138 ld a4,64(a0) + 3bc02efe: 57a9 li a5,-22 + 3bc02f00: cb19 beqz a4,3bc02f16 + 3bc02f02: 1141 addi sp,sp,-16 + 3bc02f04: e406 sd ra,8(sp) + 3bc02f06: e4fff0ef jal ra,3bc02d54 <_dwc2_ep_disable.isra.0> + 3bc02f0a: 60a2 ld ra,8(sp) + 3bc02f0c: 4781 li a5,0 + 3bc02f0e: 853e mv a0,a5 + 3bc02f10: 0141 addi sp,sp,16 + 3bc02f12: 8082 ret + 3bc02f14: 57a9 li a5,-22 + 3bc02f16: 853e mv a0,a5 + 3bc02f18: 8082 ret + +000000003bc02f1a : + 3bc02f1a: 7139 addi sp,sp,-64 + 3bc02f1c: f426 sd s1,40(sp) + 3bc02f1e: f04a sd s2,32(sp) + 3bc02f20: ec4e sd s3,24(sp) + 3bc02f22: 84aa mv s1,a0 + 3bc02f24: 04053983 ld s3,64(a0) + 3bc02f28: 892e mv s2,a1 + 3bc02f2a: 05050513 addi a0,a0,80 + 3bc02f2e: fca00593 li a1,-54 + 3bc02f32: fc06 sd ra,56(sp) + 3bc02f34: f822 sd s0,48(sp) + 3bc02f36: e852 sd s4,16(sp) + 3bc02f38: e456 sd s5,8(sp) + 3bc02f3a: c8dff0ef jal ra,3bc02bc6 + 3bc02f3e: 8526 mv a0,s1 + 3bc02f40: 98dff0ef jal ra,3bc028cc + 3bc02f44: 00010417 auipc s0,0x10 + 3bc02f48: 47440413 addi s0,s0,1140 # 3bc133b8 + 3bc02f4c: 22091863 bnez s2,3bc0317c + 3bc02f50: 6008 ld a0,0(s0) + 3bc02f52: 04050513 addi a0,a0,64 + 3bc02f56: fe8fe0ef jal ra,3bc0173e + 3bc02f5a: 600c ld a1,0(s0) + 3bc02f5c: 6791 lui a5,0x4 + 3bc02f5e: 3c05350b extu a0,a0,15,0 + 3bc02f62: 20978793 addi a5,a5,521 # 4209 <__BSS_SIZE__-0x1a07> + 3bc02f66: 05c1 addi a1,a1,16 + 3bc02f68: 06a7ee63 bltu a5,a0,3bc02fe4 + 3bc02f6c: 4505 li a0,1 + 3bc02f6e: fd6fe0ef jal ra,3bc01744 + 3bc02f72: 03300a13 li s4,51 + 3bc02f76: 4505 li a0,1 + 3bc02f78: a12fd0ef jal ra,3bc0018a + 3bc02f7c: 6008 ld a0,0(s0) + 3bc02f7e: 3a7d addiw s4,s4,-1 + 3bc02f80: 0541 addi a0,a0,16 + 3bc02f82: fbcfe0ef jal ra,3bc0173e + 3bc02f86: 0005061b sext.w a2,a0 + 3bc02f8a: 020a1463 bnez s4,3bc02fb2 + 3bc02f8e: 00008597 auipc a1,0x8 + 3bc02f92: e3258593 addi a1,a1,-462 # 3bc0adc0 <__func__.2> + 3bc02f96: 00008517 auipc a0,0x8 + 3bc02f9a: d3250513 addi a0,a0,-718 # 3bc0acc8 <__func__.5+0x128> + 3bc02f9e: 7442 ld s0,48(sp) + 3bc02fa0: 70e2 ld ra,56(sp) + 3bc02fa2: 74a2 ld s1,40(sp) + 3bc02fa4: 7902 ld s2,32(sp) + 3bc02fa6: 69e2 ld s3,24(sp) + 3bc02fa8: 6a42 ld s4,16(sp) + 3bc02faa: 6aa2 ld s5,8(sp) + 3bc02fac: 6121 addi sp,sp,64 + 3bc02fae: baafd06f j 3bc00358 + 3bc02fb2: 8a05 andi a2,a2,1 + 3bc02fb4: f269 bnez a2,3bc02f76 + 3bc02fb6: 03300a13 li s4,51 + 3bc02fba: 4505 li a0,1 + 3bc02fbc: 9cefd0ef jal ra,3bc0018a + 3bc02fc0: 6008 ld a0,0(s0) + 3bc02fc2: 3a7d addiw s4,s4,-1 + 3bc02fc4: 0541 addi a0,a0,16 + 3bc02fc6: f78fe0ef jal ra,3bc0173e + 3bc02fca: 0005061b sext.w a2,a0 + 3bc02fce: 060a1963 bnez s4,3bc03040 + 3bc02fd2: 00008597 auipc a1,0x8 + 3bc02fd6: dee58593 addi a1,a1,-530 # 3bc0adc0 <__func__.2> + 3bc02fda: 00008517 auipc a0,0x8 + 3bc02fde: d3e50513 addi a0,a0,-706 # 3bc0ad18 <__func__.5+0x178> + 3bc02fe2: bf75 j 3bc02f9e + 3bc02fe4: 4505 li a0,1 + 3bc02fe6: f5efe0ef jal ra,3bc01744 + 3bc02fea: 03300a93 li s5,51 + 3bc02fee: 20000a37 lui s4,0x20000 + 3bc02ff2: 4505 li a0,1 + 3bc02ff4: 996fd0ef jal ra,3bc0018a + 3bc02ff8: 6008 ld a0,0(s0) + 3bc02ffa: 3afd addiw s5,s5,-1 + 3bc02ffc: 0541 addi a0,a0,16 + 3bc02ffe: f40fe0ef jal ra,3bc0173e + 3bc03002: 0005061b sext.w a2,a0 + 3bc03006: 000a9b63 bnez s5,3bc0301c + 3bc0300a: 00008597 auipc a1,0x8 + 3bc0300e: db658593 addi a1,a1,-586 # 3bc0adc0 <__func__.2> + 3bc03012: 00008517 auipc a0,0x8 + 3bc03016: cde50513 addi a0,a0,-802 # 3bc0acf0 <__func__.5+0x150> + 3bc0301a: b751 j 3bc02f9e + 3bc0301c: 01467633 and a2,a2,s4 + 3bc03020: 2601 sext.w a2,a2 + 3bc03022: da61 beqz a2,3bc02ff2 + 3bc03024: 6008 ld a0,0(s0) + 3bc03026: 0541 addi a0,a0,16 + 3bc03028: f16fe0ef jal ra,3bc0173e + 3bc0302c: 600c ld a1,0(s0) + 3bc0302e: 2501 sext.w a0,a0 + 3bc03030: 9979 andi a0,a0,-2 + 3bc03032: 01456533 or a0,a0,s4 + 3bc03036: 05c1 addi a1,a1,16 + 3bc03038: 2501 sext.w a0,a0 + 3bc0303a: f0afe0ef jal ra,3bc01744 + 3bc0303e: bfa5 j 3bc02fb6 + 3bc03040: f6065de3 bgez a2,3bc02fba + 3bc03044: 0309a503 lw a0,48(s3) + 3bc03048: e509 bnez a0,3bc03052 + 3bc0304a: 40081537 lui a0,0x40081 + 3bc0304e: 40f50513 addi a0,a0,1039 # 4008140f <__BL2_END__+0x446dfff> + 3bc03052: 600c ld a1,0(s0) + 3bc03054: 05b1 addi a1,a1,12 + 3bc03056: eeefe0ef jal ra,3bc01744 + 3bc0305a: c21ff0ef jal ra,3bc02c7a + 3bc0305e: 02091063 bnez s2,3bc0307e + 3bc03062: 6008 ld a0,0(s0) + 3bc03064: 6985 lui s3,0x1 + 3bc03066: 80498993 addi s3,s3,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc0306a: 954e add a0,a0,s3 + 3bc0306c: ed2fe0ef jal ra,3bc0173e + 3bc03070: 600c ld a1,0(s0) + 3bc03072: 2501 sext.w a0,a0 + 3bc03074: 00256513 ori a0,a0,2 + 3bc03078: 95ce add a1,a1,s3 + 3bc0307a: ecafe0ef jal ra,3bc01744 + 3bc0307e: 600c ld a1,0(s0) + 3bc03080: 6985 lui s3,0x1 + 3bc03082: 80098a13 addi s4,s3,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc03086: 95d2 add a1,a1,s4 + 3bc03088: 00040537 lui a0,0x40 + 3bc0308c: eb8fe0ef jal ra,3bc01744 + 3bc03090: 600c ld a1,0(s0) + 3bc03092: 557d li a0,-1 + 3bc03094: 0591 addi a1,a1,4 + 3bc03096: eaefe0ef jal ra,3bc01744 + 3bc0309a: 600c ld a1,0(s0) + 3bc0309c: 557d li a0,-1 + 3bc0309e: 05d1 addi a1,a1,20 + 3bc030a0: ea4fe0ef jal ra,3bc01744 + 3bc030a4: 600c ld a1,0(s0) + 3bc030a6: 800c4537 lui a0,0x800c4 + 3bc030aa: 81050513 addi a0,a0,-2032 # ffffffff800c3810 <__BL2_END__+0xffffffff444b0400> + 3bc030ae: 05e1 addi a1,a1,24 + 3bc030b0: e94fe0ef jal ra,3bc01744 + 3bc030b4: 600c ld a1,0(s0) + 3bc030b6: 4505 li a0,1 + 3bc030b8: 05a1 addi a1,a1,8 + 3bc030ba: e8afe0ef jal ra,3bc01744 + 3bc030be: 600c ld a1,0(s0) + 3bc030c0: 81098793 addi a5,s3,-2032 + 3bc030c4: 4535 li a0,13 + 3bc030c6: 95be add a1,a1,a5 + 3bc030c8: e7cfe0ef jal ra,3bc01744 + 3bc030cc: 600c ld a1,0(s0) + 3bc030ce: 81498793 addi a5,s3,-2028 + 3bc030d2: 4535 li a0,13 + 3bc030d4: 95be add a1,a1,a5 + 3bc030d6: e6efe0ef jal ra,3bc01744 + 3bc030da: 600c ld a1,0(s0) + 3bc030dc: 81c98793 addi a5,s3,-2020 + 3bc030e0: 6541 lui a0,0x10 + 3bc030e2: 95be add a1,a1,a5 + 3bc030e4: 0505 addi a0,a0,1 + 3bc030e6: e5efe0ef jal ra,3bc01744 + 3bc030ea: 02091f63 bnez s2,3bc03128 + 3bc030ee: 6008 ld a0,0(s0) + 3bc030f0: 80498993 addi s3,s3,-2044 + 3bc030f4: 954e add a0,a0,s3 + 3bc030f6: e48fe0ef jal ra,3bc0173e + 3bc030fa: 600c ld a1,0(s0) + 3bc030fc: 2501 sext.w a0,a0 + 3bc030fe: 01456533 or a0,a0,s4 + 3bc03102: 95ce add a1,a1,s3 + 3bc03104: e40fe0ef jal ra,3bc01744 + 3bc03108: 4529 li a0,10 + 3bc0310a: 880fd0ef jal ra,3bc0018a + 3bc0310e: 6008 ld a0,0(s0) + 3bc03110: 954e add a0,a0,s3 + 3bc03112: e2cfe0ef jal ra,3bc0173e + 3bc03116: 600c ld a1,0(s0) + 3bc03118: 77fd lui a5,0xfffff + 3bc0311a: 2501 sext.w a0,a0 + 3bc0311c: 7ff78793 addi a5,a5,2047 # fffffffffffff7ff <__BL2_END__+0xffffffffc43ec3ef> + 3bc03120: 95ce add a1,a1,s3 + 3bc03122: 8d7d and a0,a0,a5 + 3bc03124: e20fe0ef jal ra,3bc01744 + 3bc03128: 8526 mv a0,s1 + 3bc0312a: 7dc000ef jal ra,3bc03906 + 3bc0312e: 600c ld a1,0(s0) + 3bc03130: 6785 lui a5,0x1 + 3bc03132: 90078793 addi a5,a5,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc03136: 95be add a1,a1,a5 + 3bc03138: 6521 lui a0,0x8 + 3bc0313a: e0afe0ef jal ra,3bc01744 + 3bc0313e: 50000993 li s3,1280 + 3bc03142: 00091463 bnez s2,3bc0314a + 3bc03146: 50200993 li s3,1282 + 3bc0314a: 6008 ld a0,0(s0) + 3bc0314c: 6485 lui s1,0x1 + 3bc0314e: 80448493 addi s1,s1,-2044 # 804 <__BSS_SIZE__-0x540c> + 3bc03152: 9526 add a0,a0,s1 + 3bc03154: deafe0ef jal ra,3bc0173e + 3bc03158: 600c ld a1,0(s0) + 3bc0315a: 2501 sext.w a0,a0 + 3bc0315c: 00a9e533 or a0,s3,a0 + 3bc03160: 95a6 add a1,a1,s1 + 3bc03162: de2fe0ef jal ra,3bc01744 + 3bc03166: 7442 ld s0,48(sp) + 3bc03168: 70e2 ld ra,56(sp) + 3bc0316a: 74a2 ld s1,40(sp) + 3bc0316c: 7902 ld s2,32(sp) + 3bc0316e: 69e2 ld s3,24(sp) + 3bc03170: 6a42 ld s4,16(sp) + 3bc03172: 6aa2 ld s5,8(sp) + 3bc03174: 450d li a0,3 + 3bc03176: 6121 addi sp,sp,64 + 3bc03178: 83cfd06f j 3bc001b4 + 3bc0317c: 74fc ld a5,232(s1) + 3bc0317e: c789 beqz a5,3bc03188 + 3bc03180: 0d048513 addi a0,s1,208 + 3bc03184: bd1ff0ef jal ra,3bc02d54 <_dwc2_ep_disable.isra.0> + 3bc03188: 1684b783 ld a5,360(s1) + 3bc0318c: c789 beqz a5,3bc03196 + 3bc0318e: 15048513 addi a0,s1,336 + 3bc03192: bc3ff0ef jal ra,3bc02d54 <_dwc2_ep_disable.isra.0> + 3bc03196: 1e84b783 ld a5,488(s1) + 3bc0319a: ea0785e3 beqz a5,3bc03044 + 3bc0319e: 1d048513 addi a0,s1,464 + 3bc031a2: bb3ff0ef jal ra,3bc02d54 <_dwc2_ep_disable.isra.0> + 3bc031a6: bd79 j 3bc03044 + +000000003bc031a8 : + 3bc031a8: 7139 addi sp,sp,-64 + 3bc031aa: f822 sd s0,48(sp) + 3bc031ac: f426 sd s1,40(sp) + 3bc031ae: fc06 sd ra,56(sp) + 3bc031b0: f04a sd s2,32(sp) + 3bc031b2: ec4e sd s3,24(sp) + 3bc031b4: e852 sd s4,16(sp) + 3bc031b6: e456 sd s5,8(sp) + 3bc031b8: 00010497 auipc s1,0x10 + 3bc031bc: 2084b483 ld s1,520(s1) # 3bc133c0 + 3bc031c0: 5429 li s0,-22 + 3bc031c2: cd0d beqz a0,3bc031fc + 3bc031c4: 451c lw a5,8(a0) + 3bc031c6: 4705 li a4,1 + 3bc031c8: 5429 li s0,-22 + 3bc031ca: 37f9 addiw a5,a5,-2 + 3bc031cc: 02f76863 bltu a4,a5,3bc031fc + 3bc031d0: 691c ld a5,16(a0) + 3bc031d2: c78d beqz a5,3bc031fc + 3bc031d4: 7518 ld a4,40(a0) + 3bc031d6: c31d beqz a4,3bc031fc + 3bc031d8: 7118 ld a4,32(a0) + 3bc031da: c30d beqz a4,3bc031fc + 3bc031dc: 6538 ld a4,72(a0) + 3bc031de: cf19 beqz a4,3bc031fc + 3bc031e0: 6938 ld a4,80(a0) + 3bc031e2: cf09 beqz a4,3bc031fc + 3bc031e4: 5435 li s0,-19 + 3bc031e6: c899 beqz s1,3bc031fc + 3bc031e8: 7c98 ld a4,56(s1) + 3bc031ea: 5441 li s0,-16 + 3bc031ec: eb01 bnez a4,3bc031fc + 3bc031ee: fc88 sd a0,56(s1) + 3bc031f0: 8526 mv a0,s1 + 3bc031f2: 9782 jalr a5 + 3bc031f4: 842a mv s0,a0 + 3bc031f6: cd09 beqz a0,3bc03210 + 3bc031f8: 0204bc23 sd zero,56(s1) + 3bc031fc: 70e2 ld ra,56(sp) + 3bc031fe: 8522 mv a0,s0 + 3bc03200: 7442 ld s0,48(sp) + 3bc03202: 74a2 ld s1,40(sp) + 3bc03204: 7902 ld s2,32(sp) + 3bc03206: 69e2 ld s3,24(sp) + 3bc03208: 6a42 ld s4,16(sp) + 3bc0320a: 6aa2 ld s5,8(sp) + 3bc0320c: 6121 addi sp,sp,64 + 3bc0320e: 8082 ret + 3bc03210: 00010917 auipc s2,0x10 + 3bc03214: 1a890913 addi s2,s2,424 # 3bc133b8 + 3bc03218: 00093583 ld a1,0(s2) + 3bc0321c: 6985 lui s3,0x1 + 3bc0321e: 81498793 addi a5,s3,-2028 # 814 <__BSS_SIZE__-0x53fc> + 3bc03222: 95be add a1,a1,a5 + 3bc03224: 4535 li a0,13 + 3bc03226: 0404ba03 ld s4,64(s1) + 3bc0322a: d1afe0ef jal ra,3bc01744 + 3bc0322e: 00093583 ld a1,0(s2) + 3bc03232: 81098793 addi a5,s3,-2032 + 3bc03236: 4535 li a0,13 + 3bc03238: 95be add a1,a1,a5 + 3bc0323a: d0afe0ef jal ra,3bc01744 + 3bc0323e: 00093583 ld a1,0(s2) + 3bc03242: 81c98793 addi a5,s3,-2020 + 3bc03246: 4501 li a0,0 + 3bc03248: 95be add a1,a1,a5 + 3bc0324a: cfafe0ef jal ra,3bc01744 + 3bc0324e: 00093503 ld a0,0(s2) + 3bc03252: 80498993 addi s3,s3,-2044 + 3bc03256: 954e add a0,a0,s3 + 3bc03258: ce6fe0ef jal ra,3bc0173e + 3bc0325c: 00093583 ld a1,0(s2) + 3bc03260: 2501 sext.w a0,a0 + 3bc03262: 00256513 ori a0,a0,2 + 3bc03266: 95ce add a1,a1,s3 + 3bc03268: cdcfe0ef jal ra,3bc01744 + 3bc0326c: a0fff0ef jal ra,3bc02c7a + 3bc03270: 030a2983 lw s3,48(s4) # 20000030 + 3bc03274: 00099663 bnez s3,3bc03280 + 3bc03278: 400819b7 lui s3,0x40081 + 3bc0327c: 40798993 addi s3,s3,1031 # 40081407 <__BL2_END__+0x446dff7> + 3bc03280: 0e0007b7 lui a5,0xe000 + 3bc03284: 0007c783 lbu a5,0(a5) # e000000 + 3bc03288: 4a01 li s4,0 + 3bc0328a: 8ba1 andi a5,a5,8 + 3bc0328c: c795 beqz a5,3bc032b8 + 3bc0328e: 03006ab7 lui s5,0x3006 + 3bc03292: 014a8513 addi a0,s5,20 # 3006014 <__BSS_SIZE__+0x3000404> + 3bc03296: ca8fe0ef jal ra,3bc0173e + 3bc0329a: 00050a1b sext.w s4,a0 + 3bc0329e: 014a8593 addi a1,s5,20 + 3bc032a2: 18b00513 li a0,395 + 3bc032a6: c9efe0ef jal ra,3bc01744 + 3bc032aa: c00037b7 lui a5,0xc0003 + 3bc032ae: 03000737 lui a4,0x3000 + 3bc032b2: 07ad addi a5,a5,11 + 3bc032b4: 08f72223 sw a5,132(a4) # 3000084 <__BSS_SIZE__+0x2ffa474> + 3bc032b8: 00093583 ld a1,0(s2) + 3bc032bc: 854e mv a0,s3 + 3bc032be: 05b1 addi a1,a1,12 + 3bc032c0: c84fe0ef jal ra,3bc01744 + 3bc032c4: 0e0007b7 lui a5,0xe000 + 3bc032c8: 0007c783 lbu a5,0(a5) # e000000 + 3bc032cc: 8ba1 andi a5,a5,8 + 3bc032ce: cb99 beqz a5,3bc032e4 + 3bc032d0: 030065b7 lui a1,0x3006 + 3bc032d4: 8552 mv a0,s4 + 3bc032d6: 05d1 addi a1,a1,20 + 3bc032d8: c6cfe0ef jal ra,3bc01744 + 3bc032dc: 06400513 li a0,100 + 3bc032e0: eabfc0ef jal ra,3bc0018a + 3bc032e4: 00093583 ld a1,0(s2) + 3bc032e8: 4505 li a0,1 + 3bc032ea: 05a1 addi a1,a1,8 + 3bc032ec: c58fe0ef jal ra,3bc01744 + 3bc032f0: 4581 li a1,0 + 3bc032f2: 8526 mv a0,s1 + 3bc032f4: c27ff0ef jal ra,3bc02f1a + 3bc032f8: 0204a023 sw zero,32(s1) + 3bc032fc: b701 j 3bc031fc + +000000003bc032fe : + 3bc032fe: c901 beqz a0,3bc0330e + 3bc03300: 0015151b slliw a0,a0,0x1 + 3bc03304: 00b035b3 snez a1,a1 + 3bc03308: 9d0d subw a0,a0,a1 + 3bc0330a: 0ff57513 andi a0,a0,255 + 3bc0330e: 8082 ret + +000000003bc03310 : + 3bc03310: 4510 lw a2,8(a0) + 3bc03312: 1101 addi sp,sp,-32 + 3bc03314: ec06 sd ra,24(sp) + 3bc03316: e822 sd s0,16(sp) + 3bc03318: e426 sd s1,8(sp) + 3bc0331a: 27700793 li a5,631 + 3bc0331e: 02c7e063 bltu a5,a2,3bc0333e + 3bc03322: 00008517 auipc a0,0x8 + 3bc03326: a1e50513 addi a0,a0,-1506 # 3bc0ad40 <__func__.5+0x1a0> + 3bc0332a: 27800593 li a1,632 + 3bc0332e: 82afd0ef jal ra,3bc00358 + 3bc03332: 557d li a0,-1 + 3bc03334: 60e2 ld ra,24(sp) + 3bc03336: 6442 ld s0,16(sp) + 3bc03338: 64a2 ld s1,8(sp) + 3bc0333a: 6105 addi sp,sp,32 + 3bc0333c: 8082 ret + 3bc0333e: 6100 ld s0,0(a0) + 3bc03340: 84aa mv s1,a0 + 3bc03342: 27800613 li a2,632 + 3bc03346: 4581 li a1,0 + 3bc03348: 8522 mv a0,s0 + 3bc0334a: ec8fd0ef jal ra,3bc00a12 + 3bc0334e: 708c ld a1,32(s1) + 3bc03350: 00008717 auipc a4,0x8 + 3bc03354: 35070713 addi a4,a4,848 # 3bc0b6a0 + 3bc03358: 20000613 li a2,512 + 3bc0335c: 00010797 auipc a5,0x10 + 3bc03360: 04b7be23 sd a1,92(a5) # 3bc133b8 + 3bc03364: 00008797 auipc a5,0x8 + 3bc03368: ab478793 addi a5,a5,-1356 # 3bc0ae18 + 3bc0336c: e81c sd a5,16(s0) + 3bc0336e: 05040793 addi a5,s0,80 + 3bc03372: ec1c sd a5,24(s0) + 3bc03374: 00008797 auipc a5,0x8 + 3bc03378: a9478793 addi a5,a5,-1388 # 3bc0ae08 + 3bc0337c: f81c sd a5,48(s0) + 3bc0337e: 02c44783 lbu a5,44(s0) + 3bc03382: f838 sd a4,112(s0) + 3bc03384: f878 sd a4,240(s0) + 3bc03386: fc07f793 andi a5,a5,-64 + 3bc0338a: 0017e793 ori a5,a5,1 + 3bc0338e: 02f40623 sb a5,44(s0) + 3bc03392: 478d li a5,3 + 3bc03394: d05c sw a5,36(s0) + 3bc03396: 00008797 auipc a5,0x8 + 3bc0339a: aca78793 addi a5,a5,-1334 # 3bc0ae60 + 3bc0339e: f43c sd a5,104(s0) + 3bc033a0: 04000793 li a5,64 + 3bc033a4: 06f41c23 sh a5,120(s0) + 3bc033a8: 00008797 auipc a5,0x8 + 3bc033ac: ac878793 addi a5,a5,-1336 # 3bc0ae70 + 3bc033b0: f47c sd a5,232(s0) + 3bc033b2: 28100793 li a5,641 + 3bc033b6: 14f410a3 sh a5,321(s0) + 3bc033ba: 4785 li a5,1 + 3bc033bc: 02079693 slli a3,a5,0x20 + 3bc033c0: 00268513 addi a0,a3,2 + 3bc033c4: 14a43223 sd a0,324(s0) + 3bc033c8: 0685 addi a3,a3,1 + 3bc033ca: 00008517 auipc a0,0x8 + 3bc033ce: ab650513 addi a0,a0,-1354 # 3bc0ae80 + 3bc033d2: 16a43423 sd a0,360(s0) + 3bc033d6: 1cd43223 sd a3,452(s0) + 3bc033da: 20100513 li a0,513 + 3bc033de: 00008697 auipc a3,0x8 + 3bc033e2: ab268693 addi a3,a3,-1358 # 3bc0ae90 + 3bc033e6: 1786 slli a5,a5,0x21 + 3bc033e8: 078d addi a5,a5,3 + 3bc033ea: 16e43823 sd a4,368(s0) + 3bc033ee: 1ee43823 sd a4,496(s0) + 3bc033f2: e024 sd s1,64(s0) + 3bc033f4: 24040823 sb zero,592(s0) + 3bc033f8: e440 sd s0,136(s0) + 3bc033fa: 0c0410a3 sh zero,193(s0) + 3bc033fe: 0c042223 sw zero,196(s0) + 3bc03402: 0ec41c23 sh a2,248(s0) + 3bc03406: 10843423 sd s0,264(s0) + 3bc0340a: 16c41c23 sh a2,376(s0) + 3bc0340e: 18843423 sd s0,392(s0) + 3bc03412: 1ca410a3 sh a0,449(s0) + 3bc03416: 1ed43423 sd a3,488(s0) + 3bc0341a: 1ec41c23 sh a2,504(s0) + 3bc0341e: 20843423 sd s0,520(s0) + 3bc03422: 38200713 li a4,898 + 3bc03426: 24e410a3 sh a4,577(s0) + 3bc0342a: 24f43223 sd a5,580(s0) + 3bc0342e: 00010797 auipc a5,0x10 + 3bc03432: f887b923 sd s0,-110(a5) # 3bc133c0 + 3bc03436: 60bc ld a5,64(s1) + 3bc03438: 24f43c23 sd a5,600(s0) + 3bc0343c: eb89 bnez a5,3bc0344e + 3bc0343e: 00008517 auipc a0,0x8 + 3bc03442: 93250513 addi a0,a0,-1742 # 3bc0ad70 <__func__.5+0x1d0> + 3bc03446: f13fc0ef jal ra,3bc00358 + 3bc0344a: 5551 li a0,-12 + 3bc0344c: b5e5 j 3bc03334 + 3bc0344e: 8522 mv a0,s0 + 3bc03450: 26f42023 sw a5,608(s0) + 3bc03454: 26b43423 sd a1,616(s0) + 3bc03458: c74ff0ef jal ra,3bc028cc + 3bc0345c: 4501 li a0,0 + 3bc0345e: bdd9 j 3bc03334 + +000000003bc03460 : + 3bc03460: 1101 addi sp,sp,-32 + 3bc03462: e426 sd s1,8(sp) + 3bc03464: 00010497 auipc s1,0x10 + 3bc03468: f5448493 addi s1,s1,-172 # 3bc133b8 + 3bc0346c: 6088 ld a0,0(s1) + 3bc0346e: ec06 sd ra,24(sp) + 3bc03470: e822 sd s0,16(sp) + 3bc03472: 0551 addi a0,a0,20 + 3bc03474: acafe0ef jal ra,3bc0173e + 3bc03478: 0005041b sext.w s0,a0 + 3bc0347c: 6088 ld a0,0(s1) + 3bc0347e: 0561 addi a0,a0,24 + 3bc03480: abefe0ef jal ra,3bc0173e + 3bc03484: 2501 sext.w a0,a0 + 3bc03486: 8c69 and s0,s0,a0 + 3bc03488: cc01 beqz s0,3bc034a0 + 3bc0348a: 6442 ld s0,16(sp) + 3bc0348c: 60e2 ld ra,24(sp) + 3bc0348e: 64a2 ld s1,8(sp) + 3bc03490: 00010597 auipc a1,0x10 + 3bc03494: f305b583 ld a1,-208(a1) # 3bc133c0 + 3bc03498: 4505 li a0,1 + 3bc0349a: 6105 addi sp,sp,32 + 3bc0349c: 3fb0006f j 3bc04096 + 3bc034a0: 60e2 ld ra,24(sp) + 3bc034a2: 6442 ld s0,16(sp) + 3bc034a4: 64a2 ld s1,8(sp) + 3bc034a6: 4501 li a0,0 + 3bc034a8: 6105 addi sp,sp,32 + 3bc034aa: 8082 ret + +000000003bc034ac : + 3bc034ac: 7179 addi sp,sp,-48 + 3bc034ae: f022 sd s0,32(sp) + 3bc034b0: f406 sd ra,40(sp) + 3bc034b2: ec26 sd s1,24(sp) + 3bc034b4: 470d li a4,3 + 3bc034b6: 26853403 ld s0,616(a0) + 3bc034ba: 00008697 auipc a3,0x8 + 3bc034be: 23668693 addi a3,a3,566 # 3bc0b6f0 + 3bc034c2: 00008797 auipc a5,0x8 + 3bc034c6: 23278793 addi a5,a5,562 # 3bc0b6f4 + 3bc034ca: 06e59163 bne a1,a4,3bc0352c + 3bc034ce: 04000713 li a4,64 + 3bc034d2: c298 sw a4,0(a3) + 3bc034d4: 20000713 li a4,512 + 3bc034d8: c398 sw a4,0(a5) + 3bc034da: d10c sw a1,32(a0) + 3bc034dc: 0007d783 lhu a5,0(a5) + 3bc034e0: 6485 lui s1,0x1 + 3bc034e2: 90048593 addi a1,s1,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc034e6: 95a2 add a1,a1,s0 + 3bc034e8: 04000713 li a4,64 + 3bc034ec: 06e51c23 sh a4,120(a0) + 3bc034f0: 0ef51c23 sh a5,248(a0) + 3bc034f4: 16f51c23 sh a5,376(a0) + 3bc034f8: 1ef51c23 sh a5,504(a0) + 3bc034fc: 852e mv a0,a1 + 3bc034fe: e42e sd a1,8(sp) + 3bc03500: a3efe0ef jal ra,3bc0173e + 3bc03504: 65a2 ld a1,8(sp) + 3bc03506: 2501 sext.w a0,a0 + 3bc03508: 9971 andi a0,a0,-4 + 3bc0350a: b0048493 addi s1,s1,-1280 + 3bc0350e: a36fe0ef jal ra,3bc01744 + 3bc03512: 9426 add s0,s0,s1 + 3bc03514: 8522 mv a0,s0 + 3bc03516: a28fe0ef jal ra,3bc0173e + 3bc0351a: 85a2 mv a1,s0 + 3bc0351c: 7402 ld s0,32(sp) + 3bc0351e: 70a2 ld ra,40(sp) + 3bc03520: 64e2 ld s1,24(sp) + 3bc03522: 2501 sext.w a0,a0 + 3bc03524: 9971 andi a0,a0,-4 + 3bc03526: 6145 addi sp,sp,48 + 3bc03528: a1cfe06f j 3bc01744 + 3bc0352c: 04000713 li a4,64 + 3bc03530: c298 sw a4,0(a3) + 3bc03532: c398 sw a4,0(a5) + 3bc03534: 4709 li a4,2 + 3bc03536: d118 sw a4,32(a0) + 3bc03538: b755 j 3bc034dc + +000000003bc0353a : + 3bc0353a: 1101 addi sp,sp,-32 + 3bc0353c: e822 sd s0,16(sp) + 3bc0353e: ec06 sd ra,24(sp) + 3bc03540: 07154703 lbu a4,113(a0) + 3bc03544: 7d1c ld a5,56(a0) + 3bc03546: 842a mv s0,a0 + 3bc03548: fc77368b extu a3,a4,63,7 + 3bc0354c: 2687b583 ld a1,616(a5) + 3bc03550: 00f77793 andi a5,a4,15 + 3bc03554: ce9d beqz a3,3bc03592 + 3bc03556: 04878793 addi a5,a5,72 + 3bc0355a: 0796 slli a5,a5,0x5 + 3bc0355c: 95be add a1,a1,a5 + 3bc0355e: 852e mv a0,a1 + 3bc03560: e42e sd a1,8(sp) + 3bc03562: 9dcfe0ef jal ra,3bc0173e + 3bc03566: ffe007b7 lui a5,0xffe00 + 3bc0356a: 17fd addi a5,a5,-1 + 3bc0356c: 2501 sext.w a0,a0 + 3bc0356e: 8d7d and a0,a0,a5 + 3bc03570: 07244783 lbu a5,114(s0) + 3bc03574: 4705 li a4,1 + 3bc03576: 65a2 ld a1,8(sp) + 3bc03578: 37f9 addiw a5,a5,-2 + 3bc0357a: 0ff7f793 andi a5,a5,255 + 3bc0357e: 00f76563 bltu a4,a5,3bc03588 + 3bc03582: 100007b7 lui a5,0x10000 + 3bc03586: 8d5d or a0,a0,a5 + 3bc03588: 6442 ld s0,16(sp) + 3bc0358a: 60e2 ld ra,24(sp) + 3bc0358c: 6105 addi sp,sp,32 + 3bc0358e: 9b6fe06f j 3bc01744 + 3bc03592: 05878793 addi a5,a5,88 # 10000058 + 3bc03596: b7d1 j 3bc0355a + +000000003bc03598 : + 3bc03598: 1101 addi sp,sp,-32 + 3bc0359a: ec06 sd ra,24(sp) + 3bc0359c: 07154703 lbu a4,113(a0) + 3bc035a0: 7d1c ld a5,56(a0) + 3bc035a2: fc77368b extu a3,a4,63,7 + 3bc035a6: 2687b583 ld a1,616(a5) + 3bc035aa: 00f77793 andi a5,a4,15 + 3bc035ae: ca85 beqz a3,3bc035de + 3bc035b0: 04878793 addi a5,a5,72 + 3bc035b4: 0796 slli a5,a5,0x5 + 3bc035b6: 95be add a1,a1,a5 + 3bc035b8: 852e mv a0,a1 + 3bc035ba: e42e sd a1,8(sp) + 3bc035bc: 982fe0ef jal ra,3bc0173e + 3bc035c0: 0005079b sext.w a5,a0 + 3bc035c4: 65a2 ld a1,8(sp) + 3bc035c6: 0007d563 bgez a5,3bc035d0 + 3bc035ca: 40000737 lui a4,0x40000 + 3bc035ce: 8fd9 or a5,a5,a4 + 3bc035d0: 00200537 lui a0,0x200 + 3bc035d4: 8d5d or a0,a0,a5 + 3bc035d6: 60e2 ld ra,24(sp) + 3bc035d8: 6105 addi sp,sp,32 + 3bc035da: 96afe06f j 3bc01744 + 3bc035de: 05878793 addi a5,a5,88 + 3bc035e2: 0796 slli a5,a5,0x5 + 3bc035e4: 95be add a1,a1,a5 + 3bc035e6: 852e mv a0,a1 + 3bc035e8: e42e sd a1,8(sp) + 3bc035ea: 954fe0ef jal ra,3bc0173e + 3bc035ee: 002007b7 lui a5,0x200 + 3bc035f2: 8d5d or a0,a0,a5 + 3bc035f4: 65a2 ld a1,8(sp) + 3bc035f6: 2501 sext.w a0,a0 + 3bc035f8: bff9 j 3bc035d6 + +000000003bc035fa : + 3bc035fa: 7139 addi sp,sp,-64 + 3bc035fc: f822 sd s0,48(sp) + 3bc035fe: 26853403 ld s0,616(a0) # 200268 <__BSS_SIZE__+0x1fa658> + 3bc03602: f426 sd s1,40(sp) + 3bc03604: 6485 lui s1,0x1 + 3bc03606: ec4e sd s3,24(sp) + 3bc03608: b1048593 addi a1,s1,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc0360c: 000809b7 lui s3,0x80 + 3bc03610: f04a sd s2,32(sp) + 3bc03612: 95a2 add a1,a1,s0 + 3bc03614: 892a mv s2,a0 + 3bc03616: 00898513 addi a0,s3,8 # 80008 <__BSS_SIZE__+0x7a3f8> + 3bc0361a: fc06 sd ra,56(sp) + 3bc0361c: 928fe0ef jal ra,3bc01744 + 3bc03620: 26092503 lw a0,608(s2) + 3bc03624: b1448593 addi a1,s1,-1260 + 3bc03628: 95a2 add a1,a1,s0 + 3bc0362a: 91afe0ef jal ra,3bc01744 + 3bc0362e: b0048593 addi a1,s1,-1280 + 3bc03632: 95a2 add a1,a1,s0 + 3bc03634: 852e mv a0,a1 + 3bc03636: e42e sd a1,8(sp) + 3bc03638: 906fe0ef jal ra,3bc0173e + 3bc0363c: 0005041b sext.w s0,a0 + 3bc03640: c0000537 lui a0,0xc0000 + 3bc03644: 157d addi a0,a0,-1 + 3bc03646: 65a2 ld a1,8(sp) + 3bc03648: 8c69 and s0,s0,a0 + 3bc0364a: 84000537 lui a0,0x84000 + 3bc0364e: 8c49 or s0,s0,a0 + 3bc03650: 8522 mv a0,s0 + 3bc03652: 8f2fe0ef jal ra,3bc01744 + 3bc03656: 85a2 mv a1,s0 + 3bc03658: 7442 ld s0,48(sp) + 3bc0365a: 26092603 lw a2,608(s2) + 3bc0365e: 70e2 ld ra,56(sp) + 3bc03660: 74a2 ld s1,40(sp) + 3bc03662: 7902 ld s2,32(sp) + 3bc03664: 00898693 addi a3,s3,8 + 3bc03668: 69e2 ld s3,24(sp) + 3bc0366a: 00089537 lui a0,0x89 + 3bc0366e: 4701 li a4,0 + 3bc03670: 88850513 addi a0,a0,-1912 # 88888 <__BSS_SIZE__+0x82c78> + 3bc03674: 6121 addi sp,sp,64 + 3bc03676: a4aff06f j 3bc028c0 + +000000003bc0367a : + 3bc0367a: 7179 addi sp,sp,-48 + 3bc0367c: f022 sd s0,32(sp) + 3bc0367e: 26853403 ld s0,616(a0) + 3bc03682: ec26 sd s1,24(sp) + 3bc03684: e84a sd s2,16(sp) + 3bc03686: 6485 lui s1,0x1 + 3bc03688: 892a mv s2,a0 + 3bc0368a: 26052503 lw a0,608(a0) + 3bc0368e: 91448593 addi a1,s1,-1772 # 914 <__BSS_SIZE__-0x52fc> + 3bc03692: 95a2 add a1,a1,s0 + 3bc03694: f406 sd ra,40(sp) + 3bc03696: 8aefe0ef jal ra,3bc01744 + 3bc0369a: 91048593 addi a1,s1,-1776 + 3bc0369e: 95a2 add a1,a1,s0 + 3bc036a0: 00080537 lui a0,0x80 + 3bc036a4: 8a0fe0ef jal ra,3bc01744 + 3bc036a8: 90048593 addi a1,s1,-1792 + 3bc036ac: 95a2 add a1,a1,s0 + 3bc036ae: 852e mv a0,a1 + 3bc036b0: e42e sd a1,8(sp) + 3bc036b2: 88cfe0ef jal ra,3bc0173e + 3bc036b6: 0005041b sext.w s0,a0 + 3bc036ba: c0000537 lui a0,0xc0000 + 3bc036be: 157d addi a0,a0,-1 + 3bc036c0: 65a2 ld a1,8(sp) + 3bc036c2: 8c69 and s0,s0,a0 + 3bc036c4: 84000537 lui a0,0x84000 + 3bc036c8: 8c49 or s0,s0,a0 + 3bc036ca: 8522 mv a0,s0 + 3bc036cc: 878fe0ef jal ra,3bc01744 + 3bc036d0: 479d li a5,7 + 3bc036d2: 85a2 mv a1,s0 + 3bc036d4: 7402 ld s0,32(sp) + 3bc036d6: 26092603 lw a2,608(s2) + 3bc036da: 70a2 ld ra,40(sp) + 3bc036dc: 64e2 ld s1,24(sp) + 3bc036de: 04f92423 sw a5,72(s2) + 3bc036e2: 6942 ld s2,16(sp) + 3bc036e4: 000ab537 lui a0,0xab + 3bc036e8: 4701 li a4,0 + 3bc036ea: 000806b7 lui a3,0x80 + 3bc036ee: aaa50513 addi a0,a0,-1366 # aaaaa <__BSS_SIZE__+0xa4e9a> + 3bc036f2: 6145 addi sp,sp,48 + 3bc036f4: 9ccff06f j 3bc028c0 + +000000003bc036f8 : + 3bc036f8: 1101 addi sp,sp,-32 + 3bc036fa: e822 sd s0,16(sp) + 3bc036fc: e426 sd s1,8(sp) + 3bc036fe: 26853403 ld s0,616(a0) + 3bc03702: 84aa mv s1,a0 + 3bc03704: 00087537 lui a0,0x87 + 3bc03708: 08750513 addi a0,a0,135 # 87087 <__BSS_SIZE__+0x81477> + 3bc0370c: 4701 li a4,0 + 3bc0370e: 4681 li a3,0 + 3bc03710: 4601 li a2,0 + 3bc03712: e04a sd s2,0(sp) + 3bc03714: ec06 sd ra,24(sp) + 3bc03716: 892e mv s2,a1 + 3bc03718: 9a8ff0ef jal ra,3bc028c0 + 3bc0371c: 6505 lui a0,0x1 + 3bc0371e: 02090b63 beqz s2,3bc03754 + 3bc03722: 90050513 addi a0,a0,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc03726: 9522 add a0,a0,s0 + 3bc03728: 816fe0ef jal ra,3bc0173e + 3bc0372c: 2501 sext.w a0,a0 + 3bc0372e: 002007b7 lui a5,0x200 + 3bc03732: 8d5d or a0,a0,a5 + 3bc03734: 6585 lui a1,0x1 + 3bc03736: 02090263 beqz s2,3bc0375a + 3bc0373a: 90058593 addi a1,a1,-1792 # 900 <__BSS_SIZE__-0x5310> + 3bc0373e: 95a2 add a1,a1,s0 + 3bc03740: 804fe0ef jal ra,3bc01744 + 3bc03744: 60e2 ld ra,24(sp) + 3bc03746: 6442 ld s0,16(sp) + 3bc03748: 0404a423 sw zero,72(s1) + 3bc0374c: 6902 ld s2,0(sp) + 3bc0374e: 64a2 ld s1,8(sp) + 3bc03750: 6105 addi sp,sp,32 + 3bc03752: 8082 ret + 3bc03754: b0050513 addi a0,a0,-1280 + 3bc03758: b7f9 j 3bc03726 + 3bc0375a: b0058593 addi a1,a1,-1280 + 3bc0375e: b7c5 j 3bc0373e + +000000003bc03760 : + 3bc03760: 7179 addi sp,sp,-48 + 3bc03762: 7d18 ld a4,56(a0) + 3bc03764: 5dd4 lw a3,60(a1) + 3bc03766: ec26 sd s1,24(sp) + 3bc03768: f406 sd ra,40(sp) + 3bc0376a: f022 sd s0,32(sp) + 3bc0376c: e84a sd s2,16(sp) + 3bc0376e: 07154783 lbu a5,113(a0) + 3bc03772: 84aa mv s1,a0 + 3bc03774: 6988 ld a0,16(a1) + 3bc03776: 26873603 ld a2,616(a4) # 40000268 <__BL2_END__+0x43ece58> + 3bc0377a: 7c06b70b extu a4,a3,31,0 + 3bc0377e: 953a add a0,a0,a4 + 3bc03780: 4d98 lw a4,24(a1) + 3bc03782: 8bbd andi a5,a5,15 + 3bc03784: 6591 lui a1,0x4 + 3bc03786: 9f15 subw a4,a4,a3 + 3bc03788: e399 bnez a5,3bc0378e + 3bc0378a: 0284d583 lhu a1,40(s1) + 3bc0378e: 0007069b sext.w a3,a4 + 3bc03792: 00d5b6b3 sltu a3,a1,a3 + 3bc03796: 0016c693 xori a3,a3,1 + 3bc0379a: 40d5970b mveqz a4,a1,a3 + 3bc0379e: d0b8 sw a4,96(s1) + 3bc037a0: f4a8 sd a0,104(s1) + 3bc037a2: 0007091b sext.w s2,a4 + 3bc037a6: 4405 li s0,1 + 3bc037a8: cb91 beqz a5,3bc037bc + 3bc037aa: 00090963 beqz s2,3bc037bc + 3bc037ae: 0284d683 lhu a3,40(s1) + 3bc037b2: fff9041b addiw s0,s2,-1 + 3bc037b6: 02d4543b divuw s0,s0,a3 + 3bc037ba: 2405 addiw s0,s0,1 + 3bc037bc: 05878793 addi a5,a5,88 # 200058 <__BSS_SIZE__+0x1fa448> + 3bc037c0: 0796 slli a5,a5,0x5 + 3bc037c2: 00f605b3 add a1,a2,a5 + 3bc037c6: 852e mv a0,a1 + 3bc037c8: e42e sd a1,8(sp) + 3bc037ca: f75fd0ef jal ra,3bc0173e + 3bc037ce: 54b0 lw a2,104(s1) + 3bc037d0: 840004b7 lui s1,0x84000 + 3bc037d4: 65a2 ld a1,8(sp) + 3bc037d6: 8cc9 or s1,s1,a0 + 3bc037d8: 2481 sext.w s1,s1 + 3bc037da: 8526 mv a0,s1 + 3bc037dc: 0134141b slliw s0,s0,0x13 + 3bc037e0: e032 sd a2,0(sp) + 3bc037e2: 00896433 or s0,s2,s0 + 3bc037e6: f5ffd0ef jal ra,3bc01744 + 3bc037ea: 0004069b sext.w a3,s0 + 3bc037ee: 7402 ld s0,32(sp) + 3bc037f0: 6602 ld a2,0(sp) + 3bc037f2: 70a2 ld ra,40(sp) + 3bc037f4: 6942 ld s2,16(sp) + 3bc037f6: 85a6 mv a1,s1 + 3bc037f8: 64e2 ld s1,24(sp) + 3bc037fa: 00077537 lui a0,0x77 + 3bc037fe: 4701 li a4,0 + 3bc03800: 77750513 addi a0,a0,1911 # 77777 <__BSS_SIZE__+0x71b67> + 3bc03804: 6145 addi sp,sp,48 + 3bc03806: 8baff06f j 3bc028c0 + +000000003bc0380a : + 3bc0380a: 715d addi sp,sp,-80 + 3bc0380c: ec56 sd s5,24(sp) + 3bc0380e: 8aae mv s5,a1 + 3bc03810: fc26 sd s1,56(sp) + 3bc03812: 4581 li a1,0 + 3bc03814: 84aa mv s1,a0 + 3bc03816: 8556 mv a0,s5 + 3bc03818: e0a2 sd s0,64(sp) + 3bc0381a: f84a sd s2,48(sp) + 3bc0381c: f44e sd s3,40(sp) + 3bc0381e: f052 sd s4,32(sp) + 3bc03820: e486 sd ra,72(sp) + 3bc03822: addff0ef jal ra,3bc032fe + 3bc03826: 0005079b sext.w a5,a0 + 3bc0382a: 00779a13 slli s4,a5,0x7 + 3bc0382e: 014487b3 add a5,s1,s4 + 3bc03832: 00751413 slli s0,a0,0x7 + 3bc03836: 0987b903 ld s2,152(a5) + 3bc0383a: 09840993 addi s3,s0,152 + 3bc0383e: 99a6 add s3,s3,s1 + 3bc03840: 09298563 beq s3,s2,3bc038ca + 3bc03844: 6505 lui a0,0x1 + 3bc03846: b1050513 addi a0,a0,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc0384a: 005a9793 slli a5,s5,0x5 + 3bc0384e: 97aa add a5,a5,a0 + 3bc03850: 2684b503 ld a0,616(s1) # ffffffff84000268 <__BL2_END__+0xffffffff483ece58> + 3bc03854: fc090593 addi a1,s2,-64 + 3bc03858: e42e sd a1,8(sp) + 3bc0385a: 953e add a0,a0,a5 + 3bc0385c: ee3fd0ef jal ra,3bc0173e + 3bc03860: 0005071b sext.w a4,a0 + 3bc03864: 65a2 ld a1,8(sp) + 3bc03866: 07f77693 andi a3,a4,127 + 3bc0386a: 000a8463 beqz s5,3bc03872 + 3bc0386e: fe092683 lw a3,-32(s2) + 3bc03872: 01448833 add a6,s1,s4 + 3bc03876: 0b082703 lw a4,176(a6) + 3bc0387a: ffc92883 lw a7,-4(s2) + 3bc0387e: fd892603 lw a2,-40(s2) + 3bc03882: 40d7033b subw t1,a4,a3 + 3bc03886: 05040513 addi a0,s0,80 + 3bc0388a: 411607bb subw a5,a2,a7 + 3bc0388e: 86be mv a3,a5 + 3bc03890: 00f337b3 sltu a5,t1,a5 + 3bc03894: 0017c793 xori a5,a5,1 + 3bc03898: 40f3168b mveqz a3,t1,a5 + 3bc0389c: 011687bb addw a5,a3,a7 + 3bc038a0: 07885683 lhu a3,120(a6) + 3bc038a4: fef92e23 sw a5,-4(s2) + 3bc038a8: 9526 add a0,a0,s1 + 3bc038aa: 02d3773b remuw a4,t1,a3 + 3bc038ae: e319 bnez a4,3bc038b4 + 3bc038b0: 04f61263 bne a2,a5,3bc038f4 + 3bc038b4: 020a9463 bnez s5,3bc038dc + 3bc038b8: 44b8 lw a4,72(s1) + 3bc038ba: 4791 li a5,4 + 3bc038bc: 02f71063 bne a4,a5,3bc038dc + 3bc038c0: 8526 mv a0,s1 + 3bc038c2: db9ff0ef jal ra,3bc0367a + 3bc038c6: 479d li a5,7 + 3bc038c8: c4bc sw a5,72(s1) + 3bc038ca: 60a6 ld ra,72(sp) + 3bc038cc: 6406 ld s0,64(sp) + 3bc038ce: 74e2 ld s1,56(sp) + 3bc038d0: 7942 ld s2,48(sp) + 3bc038d2: 79a2 ld s3,40(sp) + 3bc038d4: 7a02 ld s4,32(sp) + 3bc038d6: 6ae2 ld s5,24(sp) + 3bc038d8: 6161 addi sp,sp,80 + 3bc038da: 8082 ret + 3bc038dc: 4601 li a2,0 + 3bc038de: e42a sd a0,8(sp) + 3bc038e0: 832ff0ef jal ra,3bc02912 + 3bc038e4: 014487b3 add a5,s1,s4 + 3bc038e8: 6fcc ld a1,152(a5) + 3bc038ea: feb980e3 beq s3,a1,3bc038ca + 3bc038ee: 6522 ld a0,8(sp) + 3bc038f0: fc058593 addi a1,a1,-64 # 3fc0 <__BSS_SIZE__-0x1c50> + 3bc038f4: 6406 ld s0,64(sp) + 3bc038f6: 60a6 ld ra,72(sp) + 3bc038f8: 74e2 ld s1,56(sp) + 3bc038fa: 7942 ld s2,48(sp) + 3bc038fc: 79a2 ld s3,40(sp) + 3bc038fe: 7a02 ld s4,32(sp) + 3bc03900: 6ae2 ld s5,24(sp) + 3bc03902: 6161 addi sp,sp,80 + 3bc03904: bdb1 j 3bc03760 + +000000003bc03906 : + 3bc03906: 26853583 ld a1,616(a0) + 3bc0390a: 6785 lui a5,0x1 + 3bc0390c: b1078793 addi a5,a5,-1264 # b10 <__BSS_SIZE__-0x5100> + 3bc03910: 20080537 lui a0,0x20080 + 3bc03914: 95be add a1,a1,a5 + 3bc03916: 0521 addi a0,a0,8 + 3bc03918: e2dfd06f j 3bc01744 + +000000003bc0391c : + 3bc0391c: 7179 addi sp,sp,-48 + 3bc0391e: e84a sd s2,16(sp) + 3bc03920: 26853903 ld s2,616(a0) # 20080268 + 3bc03924: 0585 addi a1,a1,1 + 3bc03926: f022 sd s0,32(sp) + 3bc03928: 05b2 slli a1,a1,0xc + 3bc0392a: 0036841b addiw s0,a3,3 + 3bc0392e: ec26 sd s1,24(sp) + 3bc03930: f406 sd ra,40(sp) + 3bc03932: 4024340b extu s0,s0,16,2 + 3bc03936: 992e add s2,s2,a1 + 3bc03938: 4481 li s1,0 + 3bc0393a: 0004879b sext.w a5,s1 + 3bc0393e: 0087e863 bltu a5,s0,3bc0394e + 3bc03942: 70a2 ld ra,40(sp) + 3bc03944: 7402 ld s0,32(sp) + 3bc03946: 64e2 ld s1,24(sp) + 3bc03948: 6942 ld s2,16(sp) + 3bc0394a: 6145 addi sp,sp,48 + 3bc0394c: 8082 ret + 3bc0394e: 4496450b lrw a0,a2,s1,2 + 3bc03952: 85ca mv a1,s2 + 3bc03954: e432 sd a2,8(sp) + 3bc03956: deffd0ef jal ra,3bc01744 + 3bc0395a: 6622 ld a2,8(sp) + 3bc0395c: 0485 addi s1,s1,1 + 3bc0395e: bff1 j 3bc0393a + +000000003bc03960 : + 3bc03960: 7d1c ld a5,56(a0) + 3bc03962: 7119 addi sp,sp,-128 + 3bc03964: f8a2 sd s0,112(sp) + 3bc03966: f862 sd s8,48(sp) + 3bc03968: f466 sd s9,40(sp) + 3bc0396a: f06a sd s10,32(sp) + 3bc0396c: 2687bc83 ld s9,616(a5) + 3bc03970: fc86 sd ra,120(sp) + 3bc03972: 5ddc lw a5,60(a1) + 3bc03974: f4a6 sd s1,104(sp) + 3bc03976: f0ca sd s2,96(sp) + 3bc03978: ecce sd s3,88(sp) + 3bc0397a: e8d2 sd s4,80(sp) + 3bc0397c: e4d6 sd s5,72(sp) + 3bc0397e: e0da sd s6,64(sp) + 3bc03980: fc5e sd s7,56(sp) + 3bc03982: ec6e sd s11,24(sp) + 3bc03984: 07154903 lbu s2,113(a0) + 3bc03988: 6998 ld a4,16(a1) + 3bc0398a: 4d80 lw s0,24(a1) + 3bc0398c: 7c07b60b extu a2,a5,31,0 + 3bc03990: 00f97d13 andi s10,s2,15 + 3bc03994: 963a add a2,a2,a4 + 3bc03996: 40f4073b subw a4,s0,a5 + 3bc0399a: 6791 lui a5,0x4 + 3bc0399c: 8c2a mv s8,a0 + 3bc0399e: 896a mv s2,s10 + 3bc039a0: 6411 lui s0,0x4 + 3bc039a2: 00e7e363 bltu a5,a4,3bc039a8 + 3bc039a6: 843a mv s0,a4 + 3bc039a8: 000d1d63 bnez s10,3bc039c2 + 3bc039ac: 028c5783 lhu a5,40(s8) + 3bc039b0: 873e mv a4,a5 + 3bc039b2: 00f437b3 sltu a5,s0,a5 + 3bc039b6: 0017c793 xori a5,a5,1 + 3bc039ba: 40f4170b mveqz a4,s0,a5 + 3bc039be: 0007041b sext.w s0,a4 + 3bc039c2: 0004099b sext.w s3,s0 + 3bc039c6: 073c2023 sw s3,96(s8) + 3bc039ca: 06cc3423 sd a2,104(s8) + 3bc039ce: 00060a1b sext.w s4,a2 + 3bc039d2: 4785 li a5,1 + 3bc039d4: c801 beqz s0,3bc039e4 + 3bc039d6: 028c5503 lhu a0,40(s8) + 3bc039da: fff4079b addiw a5,s0,-1 + 3bc039de: 02a7d7bb divuw a5,a5,a0 + 3bc039e2: 2785 addiw a5,a5,1 + 3bc039e4: 6d85 lui s11,0x1 + 3bc039e6: 005d1b13 slli s6,s10,0x5 + 3bc039ea: 910d8a93 addi s5,s11,-1776 # 910 <__BSS_SIZE__-0x5300> + 3bc039ee: 0137979b slliw a5,a5,0x13 + 3bc039f2: 9ada add s5,s5,s6 + 3bc039f4: 00f46533 or a0,s0,a5 + 3bc039f8: 9ae6 add s5,s5,s9 + 3bc039fa: 85d6 mv a1,s5 + 3bc039fc: 2501 sext.w a0,a0 + 3bc039fe: e432 sd a2,8(sp) + 3bc03a00: d45fd0ef jal ra,3bc01744 + 3bc03a04: 900d8793 addi a5,s11,-1792 + 3bc03a08: 9b3e add s6,s6,a5 + 3bc03a0a: 9b66 add s6,s6,s9 + 3bc03a0c: 855a mv a0,s6 + 3bc03a0e: d31fd0ef jal ra,3bc0173e + 3bc03a12: 078c2783 lw a5,120(s8) + 3bc03a16: bc4004b7 lui s1,0xbc400 + 3bc03a1a: 00050b9b sext.w s7,a0 + 3bc03a1e: 14fd addi s1,s1,-1 + 3bc03a20: 0167979b slliw a5,a5,0x16 + 3bc03a24: 009bf4b3 and s1,s7,s1 + 3bc03a28: 8cdd or s1,s1,a5 + 3bc03a2a: 77e1 lui a5,0xffff8 + 3bc03a2c: 7ff78793 addi a5,a5,2047 # ffffffffffff87ff <__BL2_END__+0xffffffffc43e53ef> + 3bc03a30: 2481 sext.w s1,s1 + 3bc03a32: 8cfd and s1,s1,a5 + 3bc03a34: 840007b7 lui a5,0x84000 + 3bc03a38: 8cdd or s1,s1,a5 + 3bc03a3a: 85da mv a1,s6 + 3bc03a3c: 8526 mv a0,s1 + 3bc03a3e: d07fd0ef jal ra,3bc01744 + 3bc03a42: 6622 ld a2,8(sp) + 3bc03a44: 038c3503 ld a0,56(s8) + 3bc03a48: 3c04368b extu a3,s0,15,0 + 3bc03a4c: 85ea mv a1,s10 + 3bc03a4e: ecfff0ef jal ra,3bc0391c + 3bc03a52: c809 beqz s0,3bc03a64 + 3bc03a54: 834d8593 addi a1,s11,-1996 + 3bc03a58: 4505 li a0,1 + 3bc03a5a: 95e6 add a1,a1,s9 + 3bc03a5c: 0125153b sllw a0,a0,s2 + 3bc03a60: ce5fd0ef jal ra,3bc01744 + 3bc03a64: 855a mv a0,s6 + 3bc03a66: cd9fd0ef jal ra,3bc0173e + 3bc03a6a: 0005071b sext.w a4,a0 + 3bc03a6e: 00044537 lui a0,0x44 + 3bc03a72: 86de mv a3,s7 + 3bc03a74: 8652 mv a2,s4 + 3bc03a76: 85a6 mv a1,s1 + 3bc03a78: 44450513 addi a0,a0,1092 # 44444 <__BSS_SIZE__+0x3e834> + 3bc03a7c: e45fe0ef jal ra,3bc028c0 + 3bc03a80: 8556 mv a0,s5 + 3bc03a82: cbdfd0ef jal ra,3bc0173e + 3bc03a86: 0005059b sext.w a1,a0 + 3bc03a8a: 00046537 lui a0,0x46 + 3bc03a8e: 86ca mv a3,s2 + 3bc03a90: 8622 mv a2,s0 + 3bc03a92: 46450513 addi a0,a0,1124 # 46464 <__BSS_SIZE__+0x40854> + 3bc03a96: 4701 li a4,0 + 3bc03a98: e29fe0ef jal ra,3bc028c0 + 3bc03a9c: 70e6 ld ra,120(sp) + 3bc03a9e: 7446 ld s0,112(sp) + 3bc03aa0: 74a6 ld s1,104(sp) + 3bc03aa2: 7906 ld s2,96(sp) + 3bc03aa4: 6a46 ld s4,80(sp) + 3bc03aa6: 6aa6 ld s5,72(sp) + 3bc03aa8: 6b06 ld s6,64(sp) + 3bc03aaa: 7be2 ld s7,56(sp) + 3bc03aac: 7c42 ld s8,48(sp) + 3bc03aae: 7ca2 ld s9,40(sp) + 3bc03ab0: 7d02 ld s10,32(sp) + 3bc03ab2: 6de2 ld s11,24(sp) + 3bc03ab4: 854e mv a0,s3 + 3bc03ab6: 69e6 ld s3,88(sp) + 3bc03ab8: 6109 addi sp,sp,128 + 3bc03aba: 8082 ret + +000000003bc03abc : + 3bc03abc: 7179 addi sp,sp,-48 + 3bc03abe: e84a sd s2,16(sp) + 3bc03ac0: 26853903 ld s2,616(a0) + 3bc03ac4: 0585 addi a1,a1,1 + 3bc03ac6: f022 sd s0,32(sp) + 3bc03ac8: 05b2 slli a1,a1,0xc + 3bc03aca: 0036841b addiw s0,a3,3 + 3bc03ace: ec26 sd s1,24(sp) + 3bc03ad0: f406 sd ra,40(sp) + 3bc03ad2: 4024340b extu s0,s0,16,2 + 3bc03ad6: 992e add s2,s2,a1 + 3bc03ad8: 4481 li s1,0 + 3bc03ada: 0004879b sext.w a5,s1 + 3bc03ade: 0087e863 bltu a5,s0,3bc03aee + 3bc03ae2: 70a2 ld ra,40(sp) + 3bc03ae4: 7402 ld s0,32(sp) + 3bc03ae6: 64e2 ld s1,24(sp) + 3bc03ae8: 6942 ld s2,16(sp) + 3bc03aea: 6145 addi sp,sp,48 + 3bc03aec: 8082 ret + 3bc03aee: 854a mv a0,s2 + 3bc03af0: e432 sd a2,8(sp) + 3bc03af2: c4dfd0ef jal ra,3bc0173e + 3bc03af6: 6622 ld a2,8(sp) + 3bc03af8: 4496550b srw a0,a2,s1,2 + 3bc03afc: 0485 addi s1,s1,1 + 3bc03afe: bff1 j 3bc03ada + +000000003bc03b00 : + 3bc03b00: 7179 addi sp,sp,-48 + 3bc03b02: e44e sd s3,8(sp) + 3bc03b04: 02855983 lhu s3,40(a0) + 3bc03b08: f022 sd s0,32(sp) + 3bc03b0a: ec26 sd s1,24(sp) + 3bc03b0c: f406 sd ra,40(sp) + 3bc03b0e: e84a sd s2,16(sp) + 3bc03b10: 84aa mv s1,a0 + 3bc03b12: 842e mv s0,a1 + 3bc03b14: e4dff0ef jal ra,3bc03960 + 3bc03b18: 2501 sext.w a0,a0 + 3bc03b1a: 00a99e63 bne s3,a0,3bc03b36 + 3bc03b1e: 5c5c lw a5,60(s0) + 3bc03b20: 4c18 lw a4,24(s0) + 3bc03b22: 4501 li a0,0 + 3bc03b24: 013787bb addw a5,a5,s3 + 3bc03b28: 00f71b63 bne a4,a5,3bc03b3e + 3bc03b2c: 505c lw a5,36(s0) + 3bc03b2e: 02e79713 slli a4,a5,0x2e + 3bc03b32: 00074663 bltz a4,3bc03b3e + 3bc03b36: 7c9c ld a5,56(s1) + 3bc03b38: 4505 li a0,1 + 3bc03b3a: 0407a423 sw zero,72(a5) # ffffffff84000048 <__BL2_END__+0xffffffff483ecc38> + 3bc03b3e: 70a2 ld ra,40(sp) + 3bc03b40: 7402 ld s0,32(sp) + 3bc03b42: 64e2 ld s1,24(sp) + 3bc03b44: 6942 ld s2,16(sp) + 3bc03b46: 69a2 ld s3,8(sp) + 3bc03b48: 6145 addi sp,sp,48 + 3bc03b4a: 8082 ret + +000000003bc03b4c : + 3bc03b4c: 7179 addi sp,sp,-48 + 3bc03b4e: ec26 sd s1,24(sp) + 3bc03b50: 84ae mv s1,a1 + 3bc03b52: 26853583 ld a1,616(a0) + 3bc03b56: 6785 lui a5,0x1 + 3bc03b58: 80078793 addi a5,a5,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc03b5c: 95be add a1,a1,a5 + 3bc03b5e: f022 sd s0,32(sp) + 3bc03b60: 842a mv s0,a0 + 3bc03b62: 852e mv a0,a1 + 3bc03b64: f406 sd ra,40(sp) + 3bc03b66: e42e sd a1,8(sp) + 3bc03b68: bd7fd0ef jal ra,3bc0173e + 3bc03b6c: 0044979b slliw a5,s1,0x4 + 3bc03b70: 65a2 ld a1,8(sp) + 3bc03b72: 8d5d or a0,a0,a5 + 3bc03b74: 2501 sext.w a0,a0 + 3bc03b76: bcffd0ef jal ra,3bc01744 + 3bc03b7a: 8522 mv a0,s0 + 3bc03b7c: affff0ef jal ra,3bc0367a + 3bc03b80: 4785 li a5,1 + 3bc03b82: 24940823 sb s1,592(s0) # 4250 <__BSS_SIZE__-0x19c0> + 3bc03b86: 70a2 ld ra,40(sp) + 3bc03b88: 26f42823 sw a5,624(s0) + 3bc03b8c: 7402 ld s0,32(sp) + 3bc03b8e: 64e2 ld s1,24(sp) + 3bc03b90: 6145 addi sp,sp,48 + 3bc03b92: 8082 ret + +000000003bc03b94 : + 3bc03b94: 6d4c ld a1,152(a0) + 3bc03b96: 09850693 addi a3,a0,152 + 3bc03b9a: 05050713 addi a4,a0,80 + 3bc03b9e: 00d58e63 beq a1,a3,3bc03bba + 3bc03ba2: fd85a683 lw a3,-40(a1) + 3bc03ba6: e689 bnez a3,3bc03bb0 + 3bc03ba8: 0a052823 sw zero,176(a0) + 3bc03bac: acfff06f j 3bc0367a + 3bc03bb0: fc058593 addi a1,a1,-64 + 3bc03bb4: 853a mv a0,a4 + 3bc03bb6: babff06f j 3bc03760 + 3bc03bba: 8082 ret + +000000003bc03bbc : + 3bc03bbc: 6d4c ld a1,152(a0) + 3bc03bbe: 09850693 addi a3,a0,152 + 3bc03bc2: 02d58b63 beq a1,a3,3bc03bf8 + 3bc03bc6: 1141 addi sp,sp,-16 + 3bc03bc8: e022 sd s0,0(sp) + 3bc03bca: e406 sd ra,8(sp) + 3bc03bcc: fc058593 addi a1,a1,-64 + 3bc03bd0: 842a mv s0,a0 + 3bc03bd2: 05050713 addi a4,a0,80 + 3bc03bd6: 4501 li a0,0 + 3bc03bd8: c989 beqz a1,3bc03bea + 3bc03bda: 853a mv a0,a4 + 3bc03bdc: f25ff0ef jal ra,3bc03b00 + 3bc03be0: 4785 li a5,1 + 3bc03be2: 00f51863 bne a0,a5,3bc03bf2 + 3bc03be6: 4795 li a5,5 + 3bc03be8: c43c sw a5,72(s0) + 3bc03bea: 60a2 ld ra,8(sp) + 3bc03bec: 6402 ld s0,0(sp) + 3bc03bee: 0141 addi sp,sp,16 + 3bc03bf0: 8082 ret + 3bc03bf2: c43c sw a5,72(s0) + 3bc03bf4: 4505 li a0,1 + 3bc03bf6: bfd5 j 3bc03bea + 3bc03bf8: 4501 li a0,0 + 3bc03bfa: 8082 ret + +000000003bc03bfc : + 3bc03bfc: 1101 addi sp,sp,-32 + 3bc03bfe: ec06 sd ra,24(sp) + 3bc03c00: 07154703 lbu a4,113(a0) + 3bc03c04: 7d1c ld a5,56(a0) + 3bc03c06: fc77368b extu a3,a4,63,7 + 3bc03c0a: 2687b583 ld a1,616(a5) + 3bc03c0e: 00f77793 andi a5,a4,15 + 3bc03c12: c295 beqz a3,3bc03c36 + 3bc03c14: 04878793 addi a5,a5,72 + 3bc03c18: 0796 slli a5,a5,0x5 + 3bc03c1a: 95be add a1,a1,a5 + 3bc03c1c: 852e mv a0,a1 + 3bc03c1e: e42e sd a1,8(sp) + 3bc03c20: b1ffd0ef jal ra,3bc0173e + 3bc03c24: 65a2 ld a1,8(sp) + 3bc03c26: 60e2 ld ra,24(sp) + 3bc03c28: 080007b7 lui a5,0x8000 + 3bc03c2c: 8d5d or a0,a0,a5 + 3bc03c2e: 2501 sext.w a0,a0 + 3bc03c30: 6105 addi sp,sp,32 + 3bc03c32: b13fd06f j 3bc01744 + 3bc03c36: 05878793 addi a5,a5,88 # 8000058 + 3bc03c3a: bff9 j 3bc03c18 + +000000003bc03c3c : + 3bc03c3c: 07154703 lbu a4,113(a0) + 3bc03c40: cd21 beqz a0,3bc03c98 + 3bc03c42: 6134 ld a3,64(a0) + 3bc03c44: 87aa mv a5,a0 + 3bc03c46: caa9 beqz a3,3bc03c98 + 3bc03c48: 00f77613 andi a2,a4,15 + 3bc03c4c: c631 beqz a2,3bc03c98 + 3bc03c4e: 0036c603 lbu a2,3(a3) # 80003 <__BSS_SIZE__+0x7a3f3> + 3bc03c52: 4685 li a3,1 + 3bc03c54: 04d60263 beq a2,a3,3bc03c98 + 3bc03c58: 1101 addi sp,sp,-32 + 3bc03c5a: ec06 sd ra,24(sp) + 3bc03c5c: cd99 beqz a1,3bc03c7a + 3bc03c5e: fc77368b extu a3,a4,63,7 + 3bc03c62: c29d beqz a3,3bc03c88 + 3bc03c64: 6534 ld a3,72(a0) + 3bc03c66: 04850713 addi a4,a0,72 + 3bc03c6a: fdd00593 li a1,-35 + 3bc03c6e: 00e68d63 beq a3,a4,3bc03c88 + 3bc03c72: 60e2 ld ra,24(sp) + 3bc03c74: 852e mv a0,a1 + 3bc03c76: 6105 addi sp,sp,32 + 3bc03c78: 8082 ret + 3bc03c7a: 06050823 sb zero,112(a0) + 3bc03c7e: e42e sd a1,8(sp) + 3bc03c80: 8bbff0ef jal ra,3bc0353a + 3bc03c84: 65a2 ld a1,8(sp) + 3bc03c86: b7f5 j 3bc03c72 + 3bc03c88: 4705 li a4,1 + 3bc03c8a: 06e78823 sb a4,112(a5) + 3bc03c8e: 853e mv a0,a5 + 3bc03c90: 909ff0ef jal ra,3bc03598 + 3bc03c94: 4581 li a1,0 + 3bc03c96: bff1 j 3bc03c72 + 3bc03c98: 55a9 li a1,-22 + 3bc03c9a: 852e mv a0,a1 + 3bc03c9c: 8082 ret + +000000003bc03c9e : + 3bc03c9e: 7d1c ld a5,56(a0) + 3bc03ca0: 7179 addi sp,sp,-48 + 3bc03ca2: f022 sd s0,32(sp) + 3bc03ca4: ec26 sd s1,24(sp) + 3bc03ca6: e84a sd s2,16(sp) + 3bc03ca8: e44e sd s3,8(sp) + 3bc03caa: f406 sd ra,40(sp) + 3bc03cac: 2687b483 ld s1,616(a5) + 3bc03cb0: 07154783 lbu a5,113(a0) + 3bc03cb4: 4905 li s2,1 + 3bc03cb6: 89aa mv s3,a0 + 3bc03cb8: 00f7f413 andi s0,a5,15 + 3bc03cbc: fc77b70b extu a4,a5,63,7 + 3bc03cc0: 0089193b sllw s2,s2,s0 + 3bc03cc4: cf25 beqz a4,3bc03d3c + 3bc03cc6: 04840513 addi a0,s0,72 + 3bc03cca: 0516 slli a0,a0,0x5 + 3bc03ccc: 9526 add a0,a0,s1 + 3bc03cce: a71fd0ef jal ra,3bc0173e + 3bc03cd2: 2501 sext.w a0,a0 + 3bc03cd4: 3cf5378b extu a5,a0,15,15 + 3bc03cd8: ef9d bnez a5,3bc03d16 + 3bc03cda: fff407b7 lui a5,0xfff40 + 3bc03cde: 17fd addi a5,a5,-1 + 3bc03ce0: 8d7d and a0,a0,a5 + 3bc03ce2: 0729c783 lbu a5,114(s3) + 3bc03ce6: 04840593 addi a1,s0,72 + 3bc03cea: 0127979b slliw a5,a5,0x12 + 3bc03cee: 8d5d or a0,a0,a5 + 3bc03cf0: 0289d783 lhu a5,40(s3) + 3bc03cf4: 80057513 andi a0,a0,-2048 + 3bc03cf8: 8d5d or a0,a0,a5 + 3bc03cfa: 180087b7 lui a5,0x18008 + 3bc03cfe: 8d5d or a0,a0,a5 + 3bc03d00: 07198783 lb a5,113(s3) + 3bc03d04: 2501 sext.w a0,a0 + 3bc03d06: 0007c463 bltz a5,3bc03d0e + 3bc03d0a: 05840593 addi a1,s0,88 + 3bc03d0e: 0596 slli a1,a1,0x5 + 3bc03d10: 95a6 add a1,a1,s1 + 3bc03d12: a33fd0ef jal ra,3bc01744 + 3bc03d16: 6585 lui a1,0x1 + 3bc03d18: 81c58593 addi a1,a1,-2020 # 81c <__BSS_SIZE__-0x53f4> + 3bc03d1c: 94ae add s1,s1,a1 + 3bc03d1e: 8526 mv a0,s1 + 3bc03d20: a1ffd0ef jal ra,3bc0173e + 3bc03d24: 2501 sext.w a0,a0 + 3bc03d26: 7402 ld s0,32(sp) + 3bc03d28: 70a2 ld ra,40(sp) + 3bc03d2a: 69a2 ld s3,8(sp) + 3bc03d2c: 85a6 mv a1,s1 + 3bc03d2e: 01256533 or a0,a0,s2 + 3bc03d32: 64e2 ld s1,24(sp) + 3bc03d34: 6942 ld s2,16(sp) + 3bc03d36: 6145 addi sp,sp,48 + 3bc03d38: a0dfd06f j 3bc01744 + 3bc03d3c: 05840513 addi a0,s0,88 + 3bc03d40: 0516 slli a0,a0,0x5 + 3bc03d42: 9526 add a0,a0,s1 + 3bc03d44: 9fbfd0ef jal ra,3bc0173e + 3bc03d48: 2501 sext.w a0,a0 + 3bc03d4a: 0109191b slliw s2,s2,0x10 + 3bc03d4e: b759 j 3bc03cd4 + +000000003bc03d50 : + 3bc03d50: 453c lw a5,72(a0) + 3bc03d52: 34079163 bnez a5,3bc04094 + 3bc03d56: 7139 addi sp,sp,-64 + 3bc03d58: f426 sd s1,40(sp) + 3bc03d5a: 25853483 ld s1,600(a0) + 3bc03d5e: f822 sd s0,48(sp) + 3bc03d60: fa400593 li a1,-92 + 3bc03d64: 842a mv s0,a0 + 3bc03d66: 05050513 addi a0,a0,80 + 3bc03d6a: ec4e sd s3,24(sp) + 3bc03d6c: fc06 sd ra,56(sp) + 3bc03d6e: f04a sd s2,32(sp) + 3bc03d70: e852 sd s4,16(sp) + 3bc03d72: c35fe0ef jal ra,3bc029a6 + 3bc03d76: 0004c783 lbu a5,0(s1) # ffffffffbc400000 <__BL2_END__+0xffffffff807ecbf0> + 3bc03d7a: 0c144703 lbu a4,193(s0) + 3bc03d7e: 0064d983 lhu s3,6(s1) + 3bc03d82: fc77b60b extu a2,a5,63,7 + 3bc03d86: 07f77693 andi a3,a4,127 + 3bc03d8a: c609 beqz a2,3bc03d94 + 3bc03d8c: f8076713 ori a4,a4,-128 + 3bc03d90: 0ff77693 andi a3,a4,255 + 3bc03d94: 0607f793 andi a5,a5,96 + 3bc03d98: 25144703 lbu a4,593(s0) + 3bc03d9c: 0017b793 seqz a5,a5 + 3bc03da0: 0017979b slliw a5,a5,0x1 + 3bc03da4: 0017e793 ori a5,a5,1 + 3bc03da8: 8b8d andi a5,a5,3 + 3bc03daa: 9b71 andi a4,a4,-4 + 3bc03dac: 8fd9 or a5,a5,a4 + 3bc03dae: 24f408a3 sb a5,593(s0) + 3bc03db2: 0cd400a3 sb a3,193(s0) + 3bc03db6: 8b89 andi a5,a5,2 + 3bc03db8: 24078a63 beqz a5,3bc0400c + 3bc03dbc: 0014c703 lbu a4,1(s1) + 3bc03dc0: 47ad li a5,11 + 3bc03dc2: 2ae7e863 bltu a5,a4,3bc04072 + 3bc03dc6: 87ba mv a5,a4 + 3bc03dc8: 00007717 auipc a4,0x7 + 3bc03dcc: 0ec70713 addi a4,a4,236 # 3bc0aeb4 + 3bc03dd0: 44f7478b lrw a5,a4,a5,2 + 3bc03dd4: 97ba add a5,a5,a4 + 3bc03dd6: 8782 jr a5 + 3bc03dd8: 0024d603 lhu a2,2(s1) + 3bc03ddc: 000bc537 lui a0,0xbc + 3bc03de0: 4701 li a4,0 + 3bc03de2: 4681 li a3,0 + 3bc03de4: 4585 li a1,1 + 3bc03de6: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03dea: ad7fe0ef jal ra,3bc028c0 + 3bc03dee: 0004c783 lbu a5,0(s1) + 3bc03df2: 20079d63 bnez a5,3bc0400c + 3bc03df6: 8522 mv a0,s0 + 3bc03df8: 7442 ld s0,48(sp) + 3bc03dfa: 0024c583 lbu a1,2(s1) + 3bc03dfe: 70e2 ld ra,56(sp) + 3bc03e00: 74a2 ld s1,40(sp) + 3bc03e02: 7902 ld s2,32(sp) + 3bc03e04: 69e2 ld s3,24(sp) + 3bc03e06: 6a42 ld s4,16(sp) + 3bc03e08: 6121 addi sp,sp,64 + 3bc03e0a: d43ff06f j 3bc03b4c + 3bc03e0e: 0024d603 lhu a2,2(s1) + 3bc03e12: 4701 li a4,0 + 3bc03e14: 4681 li a3,0 + 3bc03e16: 4589 li a1,2 + 3bc03e18: 000bc537 lui a0,0xbc + 3bc03e1c: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03e20: aa1fe0ef jal ra,3bc028c0 + 3bc03e24: a2e5 j 3bc0400c + 3bc03e26: 4701 li a4,0 + 3bc03e28: 4681 li a3,0 + 3bc03e2a: 4601 li a2,0 + 3bc03e2c: 458d li a1,3 + 3bc03e2e: b7ed j 3bc03e18 + 3bc03e30: 4701 li a4,0 + 3bc03e32: 4681 li a3,0 + 3bc03e34: 4601 li a2,0 + 3bc03e36: 4591 li a1,4 + 3bc03e38: b7c5 j 3bc03e18 + 3bc03e3a: 4701 li a4,0 + 3bc03e3c: 4681 li a3,0 + 3bc03e3e: 4601 li a2,0 + 3bc03e40: 4595 li a1,5 + 3bc03e42: bfd9 j 3bc03e18 + 3bc03e44: 000bc537 lui a0,0xbc + 3bc03e48: 4701 li a4,0 + 3bc03e4a: 4681 li a3,0 + 3bc03e4c: 4601 li a2,0 + 3bc03e4e: 4599 li a1,6 + 3bc03e50: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03e54: a6dfe0ef jal ra,3bc028c0 + 3bc03e58: 0044d503 lhu a0,4(s1) + 3bc03e5c: 1c75358b extu a1,a0,7,7 + 3bc03e60: 07f57513 andi a0,a0,127 + 3bc03e64: c9aff0ef jal ra,3bc032fe + 3bc03e68: 00011723 sh zero,14(sp) + 3bc03e6c: 0004c583 lbu a1,0(s1) + 3bc03e70: 892a mv s2,a0 + 3bc03e72: 00007517 auipc a0,0x7 + 3bc03e76: 02e50513 addi a0,a0,46 # 3bc0aea0 + 3bc03e7a: 89bd andi a1,a1,15 + 3bc03e7c: 26843a03 ld s4,616(s0) + 3bc03e80: cd8fc0ef jal ra,3bc00358 + 3bc03e84: 0004c783 lbu a5,0(s1) + 3bc03e88: 4705 li a4,1 + 3bc03e8a: 8bbd andi a5,a5,15 + 3bc03e8c: 00e78a63 beq a5,a4,3bc03ea0 + 3bc03e90: 4689 li a3,2 + 3bc03e92: 06d78b63 beq a5,a3,3bc03f08 + 3bc03e96: 16079b63 bnez a5,3bc0400c + 3bc03e9a: 00e11723 sh a4,14(sp) + 3bc03e9e: a019 j 3bc03ea4 + 3bc03ea0: 00011723 sh zero,14(sp) + 3bc03ea4: 25843503 ld a0,600(s0) + 3bc03ea8: 4609 li a2,2 + 3bc03eaa: 00e10593 addi a1,sp,14 + 3bc03eae: bbffc0ef jal ra,3bc00a6c + 3bc03eb2: 6485 lui s1,0x1 + 3bc03eb4: 26042503 lw a0,608(s0) + 3bc03eb8: 91448593 addi a1,s1,-1772 # 914 <__BSS_SIZE__-0x52fc> + 3bc03ebc: 95d2 add a1,a1,s4 + 3bc03ebe: 887fd0ef jal ra,3bc01744 + 3bc03ec2: 91048593 addi a1,s1,-1776 + 3bc03ec6: 00080537 lui a0,0x80 + 3bc03eca: 95d2 add a1,a1,s4 + 3bc03ecc: 0509 addi a0,a0,2 + 3bc03ece: 90048493 addi s1,s1,-1792 + 3bc03ed2: 873fd0ef jal ra,3bc01744 + 3bc03ed6: 9a26 add s4,s4,s1 + 3bc03ed8: 8552 mv a0,s4 + 3bc03eda: 865fd0ef jal ra,3bc0173e + 3bc03ede: c00007b7 lui a5,0xc0000 + 3bc03ee2: 17fd addi a5,a5,-1 + 3bc03ee4: 2501 sext.w a0,a0 + 3bc03ee6: 8d7d and a0,a0,a5 + 3bc03ee8: 840007b7 lui a5,0x84000 + 3bc03eec: 8d5d or a0,a0,a5 + 3bc03eee: 85d2 mv a1,s4 + 3bc03ef0: 855fd0ef jal ra,3bc01744 + 3bc03ef4: 47a1 li a5,8 + 3bc03ef6: c43c sw a5,72(s0) + 3bc03ef8: 70e2 ld ra,56(sp) + 3bc03efa: 7442 ld s0,48(sp) + 3bc03efc: 74a2 ld s1,40(sp) + 3bc03efe: 7902 ld s2,32(sp) + 3bc03f00: 69e2 ld s3,24(sp) + 3bc03f02: 6a42 ld s4,16(sp) + 3bc03f04: 6121 addi sp,sp,64 + 3bc03f06: 8082 ret + 3bc03f08: 0064d703 lhu a4,6(s1) + 3bc03f0c: 10e7e063 bltu a5,a4,3bc0400c + 3bc03f10: 2901 sext.w s2,s2 + 3bc03f12: 091e slli s2,s2,0x7 + 3bc03f14: 9922 add s2,s2,s0 + 3bc03f16: 0c094783 lbu a5,192(s2) + 3bc03f1a: 00f11723 sh a5,14(sp) + 3bc03f1e: b759 j 3bc03ea4 + 3bc03f20: 000bc537 lui a0,0xbc + 3bc03f24: 4701 li a4,0 + 3bc03f26: 4681 li a3,0 + 3bc03f28: 4601 li a2,0 + 3bc03f2a: 459d li a1,7 + 3bc03f2c: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03f30: 991fe0ef jal ra,3bc028c0 + 3bc03f34: 0044d503 lhu a0,4(s1) + 3bc03f38: 1c75358b extu a1,a0,7,7 + 3bc03f3c: 07f57513 andi a0,a0,127 + 3bc03f40: bbeff0ef jal ra,3bc032fe + 3bc03f44: 00751913 slli s2,a0,0x7 + 3bc03f48: 05090913 addi s2,s2,80 + 3bc03f4c: 9922 add s2,s2,s0 + 3bc03f4e: 03893a03 ld s4,56(s2) + 3bc03f52: 258a3703 ld a4,600(s4) + 3bc03f56: 00675783 lhu a5,6(a4) + 3bc03f5a: ebcd bnez a5,3bc0400c + 3bc03f5c: 00074783 lbu a5,0(a4) + 3bc03f60: 8bbd andi a5,a5,15 + 3bc03f62: c795 beqz a5,3bc03f8e + 3bc03f64: 4689 li a3,2 + 3bc03f66: f8d799e3 bne a5,a3,3bc03ef8 + 3bc03f6a: 00275783 lhu a5,2(a4) + 3bc03f6e: f7c9 bnez a5,3bc03ef8 + 3bc03f70: 07194403 lbu s0,113(s2) + 3bc03f74: 883d andi s0,s0,15 + 3bc03f76: e415 bnez s0,3bc03fa2 + 3bc03f78: 4585 li a1,1 + 3bc03f7a: 8552 mv a0,s4 + 3bc03f7c: 7442 ld s0,48(sp) + 3bc03f7e: 70e2 ld ra,56(sp) + 3bc03f80: 74a2 ld s1,40(sp) + 3bc03f82: 7902 ld s2,32(sp) + 3bc03f84: 69e2 ld s3,24(sp) + 3bc03f86: 6a42 ld s4,16(sp) + 3bc03f88: 6121 addi sp,sp,64 + 3bc03f8a: f6eff06f j 3bc036f8 + 3bc03f8e: 8552 mv a0,s4 + 3bc03f90: 7442 ld s0,48(sp) + 3bc03f92: 70e2 ld ra,56(sp) + 3bc03f94: 74a2 ld s1,40(sp) + 3bc03f96: 7902 ld s2,32(sp) + 3bc03f98: 69e2 ld s3,24(sp) + 3bc03f9a: 6a42 ld s4,16(sp) + 3bc03f9c: 6121 addi sp,sp,64 + 3bc03f9e: edcff06f j 3bc0367a + 3bc03fa2: 8552 mv a0,s4 + 3bc03fa4: ed6ff0ef jal ra,3bc0367a + 3bc03fa8: 854a mv a0,s2 + 3bc03faa: d90ff0ef jal ra,3bc0353a + 3bc03fae: 854a mv a0,s2 + 3bc03fb0: cefff0ef jal ra,3bc03c9e + 3bc03fb4: 4785 li a5,1 + 3bc03fb6: 06090823 sb zero,112(s2) + 3bc03fba: 268a0a23 sb s0,628(s4) + 3bc03fbe: 26fa0aa3 sb a5,629(s4) + 3bc03fc2: bf1d j 3bc03ef8 + 3bc03fc4: 000bc537 lui a0,0xbc + 3bc03fc8: 4701 li a4,0 + 3bc03fca: 4681 li a3,0 + 3bc03fcc: 4601 li a2,0 + 3bc03fce: 45a1 li a1,8 + 3bc03fd0: bbb50513 addi a0,a0,-1093 # bbbbb <__BSS_SIZE__+0xb5fab> + 3bc03fd4: 8edfe0ef jal ra,3bc028c0 + 3bc03fd8: 0044d503 lhu a0,4(s1) + 3bc03fdc: 1c75358b extu a1,a0,7,7 + 3bc03fe0: 07f57513 andi a0,a0,127 + 3bc03fe4: b1aff0ef jal ra,3bc032fe + 3bc03fe8: 051e slli a0,a0,0x7 + 3bc03fea: 05050513 addi a0,a0,80 + 3bc03fee: 9522 add a0,a0,s0 + 3bc03ff0: 03853903 ld s2,56(a0) + 3bc03ff4: 25893783 ld a5,600(s2) + 3bc03ff8: 0067d703 lhu a4,6(a5) # ffffffff84000006 <__BL2_END__+0xffffffff483ecbf6> + 3bc03ffc: eb01 bnez a4,3bc0400c + 3bc03ffe: 0007c703 lbu a4,0(a5) + 3bc04002: 8b3d andi a4,a4,15 + 3bc04004: cb15 beqz a4,3bc04038 + 3bc04006: 4689 li a3,2 + 3bc04008: 04d70563 beq a4,a3,3bc04052 + 3bc0400c: 7c1c ld a5,56(s0) + 3bc0400e: cfbd beqz a5,3bc0408c + 3bc04010: 739c ld a5,32(a5) + 3bc04012: 85a6 mv a1,s1 + 3bc04014: 8522 mv a0,s0 + 3bc04016: 9782 jalr a5 + 3bc04018: 06055263 bgez a0,3bc0407c + 3bc0401c: 0064d783 lhu a5,6(s1) + 3bc04020: 4585 li a1,1 + 3bc04022: c789 beqz a5,3bc0402c + 3bc04024: 0c140583 lb a1,193(s0) + 3bc04028: 01f5d59b srliw a1,a1,0x1f + 3bc0402c: 6448 ld a0,136(s0) + 3bc0402e: ecaff0ef jal ra,3bc036f8 + 3bc04032: 04042423 sw zero,72(s0) + 3bc04036: b5c9 j 3bc03ef8 + 3bc04038: 0027d683 lhu a3,2(a5) + 3bc0403c: 4709 li a4,2 + 3bc0403e: 00e69863 bne a3,a4,3bc0404e + 3bc04042: 0047d783 lhu a5,4(a5) + 3bc04046: 0087d79b srliw a5,a5,0x8 + 3bc0404a: 26f90b23 sb a5,630(s2) + 3bc0404e: 854a mv a0,s2 + 3bc04050: b781 j 3bc03f90 + 3bc04052: 0027d783 lhu a5,2(a5) + 3bc04056: ffe5 bnez a5,3bc0404e + 3bc04058: 07154783 lbu a5,113(a0) + 3bc0405c: 8bbd andi a5,a5,15 + 3bc0405e: e781 bnez a5,3bc04066 + 3bc04060: 4585 li a1,1 + 3bc04062: 854a mv a0,s2 + 3bc04064: bf21 j 3bc03f7c + 3bc04066: 4785 li a5,1 + 3bc04068: 06f50823 sb a5,112(a0) + 3bc0406c: d2cff0ef jal ra,3bc03598 + 3bc04070: bff9 j 3bc0404e + 3bc04072: 4701 li a4,0 + 3bc04074: 4681 li a3,0 + 3bc04076: 4601 li a2,0 + 3bc04078: 45a5 li a1,9 + 3bc0407a: bb79 j 3bc03e18 + 3bc0407c: 25144783 lbu a5,593(s0) + 3bc04080: 0017f713 andi a4,a5,1 + 3bc04084: c701 beqz a4,3bc0408c + 3bc04086: 9bf9 andi a5,a5,-2 + 3bc04088: 24f408a3 sb a5,593(s0) + 3bc0408c: e60996e3 bnez s3,3bc03ef8 + 3bc04090: 8522 mv a0,s0 + 3bc04092: bdfd j 3bc03f90 + 3bc04094: 8082 ret + +000000003bc04096 : + 3bc04096: 7119 addi sp,sp,-128 + 3bc04098: ecce sd s3,88(sp) + 3bc0409a: 2685b983 ld s3,616(a1) + 3bc0409e: f0ca sd s2,96(sp) + 3bc040a0: f8a2 sd s0,112(sp) + 3bc040a2: 01498913 addi s2,s3,20 + 3bc040a6: 854a mv a0,s2 + 3bc040a8: f4a6 sd s1,104(sp) + 3bc040aa: e0da sd s6,64(sp) + 3bc040ac: fc86 sd ra,120(sp) + 3bc040ae: e8d2 sd s4,80(sp) + 3bc040b0: e4d6 sd s5,72(sp) + 3bc040b2: fc5e sd s7,56(sp) + 3bc040b4: f862 sd s8,48(sp) + 3bc040b6: f466 sd s9,40(sp) + 3bc040b8: f06a sd s10,32(sp) + 3bc040ba: ec6e sd s11,24(sp) + 3bc040bc: 842e mv s0,a1 + 3bc040be: 01898b13 addi s6,s3,24 + 3bc040c2: e7cfd0ef jal ra,3bc0173e + 3bc040c6: 0005049b sext.w s1,a0 + 3bc040ca: 855a mv a0,s6 + 3bc040cc: e72fd0ef jal ra,3bc0173e + 3bc040d0: 1c048563 beqz s1,3bc0429a + 3bc040d4: 4430 lw a2,72(s0) + 3bc040d6: 00050a9b sext.w s5,a0 + 3bc040da: 6505 lui a0,0x1 + 3bc040dc: 81850513 addi a0,a0,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc040e0: 954e add a0,a0,s3 + 3bc040e2: e432 sd a2,8(sp) + 3bc040e4: e5afd0ef jal ra,3bc0173e + 3bc040e8: 6622 ld a2,8(sp) + 3bc040ea: 0005069b sext.w a3,a0 + 3bc040ee: 653d lui a0,0xf + 3bc040f0: 4701 li a4,0 + 3bc040f2: 85a6 mv a1,s1 + 3bc040f4: 153d addi a0,a0,-17 + 3bc040f6: fcafe0ef jal ra,3bc028c0 + 3bc040fa: 0104f793 andi a5,s1,16 + 3bc040fe: c3b5 beqz a5,3bc04162 + 3bc04100: 85da mv a1,s6 + 3bc04102: fefaf513 andi a0,s5,-17 + 3bc04106: e3efd0ef jal ra,3bc01744 + 3bc0410a: 02098513 addi a0,s3,32 + 3bc0410e: e30fd0ef jal ra,3bc0173e + 3bc04112: 00f57b93 andi s7,a0,15 + 3bc04116: 00050a1b sext.w s4,a0 + 3bc0411a: 4581 li a1,0 + 3bc0411c: 855e mv a0,s7 + 3bc0411e: 9e0ff0ef jal ra,3bc032fe + 3bc04122: 001e07b7 lui a5,0x1e0 + 3bc04126: 00fa77b3 and a5,s4,a5 + 3bc0412a: 00040737 lui a4,0x40 + 3bc0412e: 18e79663 bne a5,a4,3bc042ba + 3bc04132: 384a3a0b extu s4,s4,14,4 + 3bc04136: 020a0163 beqz s4,3bc04158 + 3bc0413a: 0005079b sext.w a5,a0 + 3bc0413e: 079e slli a5,a5,0x7 + 3bc04140: 97a2 add a5,a5,s0 + 3bc04142: 0987bc03 ld s8,152(a5) # 1e0098 <__BSS_SIZE__+0x1da488> + 3bc04146: 86d2 mv a3,s4 + 3bc04148: 85de mv a1,s7 + 3bc0414a: fd0c3603 ld a2,-48(s8) + 3bc0414e: 8522 mv a0,s0 + 3bc04150: 96dff0ef jal ra,3bc03abc + 3bc04154: ff4c2023 sw s4,-32(s8) + 3bc04158: 85da mv a1,s6 + 3bc0415a: 010ae513 ori a0,s5,16 + 3bc0415e: de6fd0ef jal ra,3bc01744 + 3bc04162: 34d4b78b extu a5,s1,13,13 + 3bc04166: cb9d beqz a5,3bc0419c + 3bc04168: 85ca mv a1,s2 + 3bc0416a: 6509 lui a0,0x2 + 3bc0416c: dd8fd0ef jal ra,3bc01744 + 3bc04170: 6505 lui a0,0x1 + 3bc04172: 80850513 addi a0,a0,-2040 # 808 <__BSS_SIZE__-0x5408> + 3bc04176: 954e add a0,a0,s3 + 3bc04178: dc6fd0ef jal ra,3bc0173e + 3bc0417c: 8919 andi a0,a0,6 + 3bc0417e: 14050b63 beqz a0,3bc042d4 + 3bc04182: 4589 li a1,2 + 3bc04184: 8522 mv a0,s0 + 3bc04186: b26ff0ef jal ra,3bc034ac + 3bc0418a: 6509 lui a0,0x2 + 3bc0418c: 4701 li a4,0 + 3bc0418e: 4681 li a3,0 + 3bc04190: 4601 li a2,0 + 3bc04192: 4589 li a1,2 + 3bc04194: 22250513 addi a0,a0,546 # 2222 <__BSS_SIZE__-0x39ee> + 3bc04198: f28fe0ef jal ra,3bc028c0 + 3bc0419c: 4004f793 andi a5,s1,1024 + 3bc041a0: c791 beqz a5,3bc041ac + 3bc041a2: 85ca mv a1,s2 + 3bc041a4: 40000513 li a0,1024 + 3bc041a8: d9cfd0ef jal ra,3bc01744 + 3bc041ac: 6505 lui a0,0x1 + 3bc041ae: 80050a13 addi s4,a0,-2048 # 800 <__BSS_SIZE__-0x5410> + 3bc041b2: 0144f7b3 and a5,s1,s4 + 3bc041b6: c395 beqz a5,3bc041da + 3bc041b8: 80850513 addi a0,a0,-2040 + 3bc041bc: 954e add a0,a0,s3 + 3bc041be: d80fd0ef jal ra,3bc0173e + 3bc041c2: 85ca mv a1,s2 + 3bc041c4: 8552 mv a0,s4 + 3bc041c6: d7efd0ef jal ra,3bc01744 + 3bc041ca: 501c lw a5,32(s0) + 3bc041cc: c799 beqz a5,3bc041da + 3bc041ce: 7c1c ld a5,56(s0) + 3bc041d0: c789 beqz a5,3bc041da + 3bc041d2: 7b9c ld a5,48(a5) + 3bc041d4: c399 beqz a5,3bc041da + 3bc041d6: 8522 mv a0,s0 + 3bc041d8: 9782 jalr a5 + 3bc041da: 0004df63 bgez s1,3bc041f8 + 3bc041de: 85ca mv a1,s2 + 3bc041e0: 80000537 lui a0,0x80000 + 3bc041e4: d60fd0ef jal ra,3bc01744 + 3bc041e8: 501c lw a5,32(s0) + 3bc041ea: c799 beqz a5,3bc041f8 + 3bc041ec: 7c1c ld a5,56(s0) + 3bc041ee: c789 beqz a5,3bc041f8 + 3bc041f0: 7f9c ld a5,56(a5) + 3bc041f2: c399 beqz a5,3bc041f8 + 3bc041f4: 8522 mv a0,s0 + 3bc041f6: 9782 jalr a5 + 3bc041f8: 008017b7 lui a5,0x801 + 3bc041fc: 8fe5 and a5,a5,s1 + 3bc041fe: c3bd beqz a5,3bc04264 + 3bc04200: 854e mv a0,s3 + 3bc04202: d3cfd0ef jal ra,3bc0173e + 3bc04206: 0005099b sext.w s3,a0 + 3bc0420a: 6505 lui a0,0x1 + 3bc0420c: 4701 li a4,0 + 3bc0420e: 4681 li a3,0 + 3bc04210: 4601 li a2,0 + 3bc04212: 85ce mv a1,s3 + 3bc04214: 11150513 addi a0,a0,273 # 1111 <__BSS_SIZE__-0x4aff> + 3bc04218: ea8fe0ef jal ra,3bc028c0 + 3bc0421c: 30c4b78b extu a5,s1,12,12 + 3bc04220: c789 beqz a5,3bc0422a + 3bc04222: 85ca mv a1,s2 + 3bc04224: 6505 lui a0,0x1 + 3bc04226: d1efd0ef jal ra,3bc01744 + 3bc0422a: 5d74b78b extu a5,s1,23,23 + 3bc0422e: c791 beqz a5,3bc0423a + 3bc04230: 85ca mv a1,s2 + 3bc04232: 00800537 lui a0,0x800 + 3bc04236: d0efd0ef jal ra,3bc01744 + 3bc0423a: 000c0537 lui a0,0xc0 + 3bc0423e: 00a9f9b3 and s3,s3,a0 + 3bc04242: 000c07b7 lui a5,0xc0 + 3bc04246: 00f99f63 bne s3,a5,3bc04264 + 3bc0424a: 27042903 lw s2,624(s0) + 3bc0424e: 8522 mv a0,s0 + 3bc04250: 9d5fe0ef jal ra,3bc02c24 + 3bc04254: 00090663 beqz s2,3bc04260 + 3bc04258: 4585 li a1,1 + 3bc0425a: 8522 mv a0,s0 + 3bc0425c: cbffe0ef jal ra,3bc02f1a + 3bc04260: 04042423 sw zero,72(s0) + 3bc04264: 4924b78b extu a5,s1,18,18 + 3bc04268: e7c1 bnez a5,3bc042f0 + 3bc0426a: 4d34b48b extu s1,s1,19,19 + 3bc0426e: c495 beqz s1,3bc0429a + 3bc04270: 26843b03 ld s6,616(s0) + 3bc04274: 6505 lui a0,0x1 + 3bc04276: 81850513 addi a0,a0,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc0427a: 955a add a0,a0,s6 + 3bc0427c: cc2fd0ef jal ra,3bc0173e + 3bc04280: 00066a37 lui s4,0x66 + 3bc04284: 6a8d lui s5,0x3 + 3bc04286: 7d05398b extu s3,a0,31,16 + 3bc0428a: 4901 li s2,0 + 3bc0428c: 4b99 li s7,6 + 3bc0428e: 666a0a13 addi s4,s4,1638 # 66666 <__BSS_SIZE__+0x60a56> + 3bc04292: 333a8a93 addi s5,s5,819 # 3333 <__BSS_SIZE__-0x28dd> + 3bc04296: 2a099963 bnez s3,3bc04548 + 3bc0429a: 70e6 ld ra,120(sp) + 3bc0429c: 7446 ld s0,112(sp) + 3bc0429e: 74a6 ld s1,104(sp) + 3bc042a0: 7906 ld s2,96(sp) + 3bc042a2: 69e6 ld s3,88(sp) + 3bc042a4: 6a46 ld s4,80(sp) + 3bc042a6: 6aa6 ld s5,72(sp) + 3bc042a8: 6b06 ld s6,64(sp) + 3bc042aa: 7be2 ld s7,56(sp) + 3bc042ac: 7c42 ld s8,48(sp) + 3bc042ae: 7ca2 ld s9,40(sp) + 3bc042b0: 7d02 ld s10,32(sp) + 3bc042b2: 6de2 ld s11,24(sp) + 3bc042b4: 4501 li a0,0 + 3bc042b6: 6109 addi sp,sp,128 + 3bc042b8: 8082 ret + 3bc042ba: 000c0737 lui a4,0xc0 + 3bc042be: e8e79de3 bne a5,a4,3bc04158 + 3bc042c2: 25843603 ld a2,600(s0) + 3bc042c6: 384a368b extu a3,s4,14,4 + 3bc042ca: 85de mv a1,s7 + 3bc042cc: 8522 mv a0,s0 + 3bc042ce: feeff0ef jal ra,3bc03abc + 3bc042d2: b559 j 3bc04158 + 3bc042d4: 6509 lui a0,0x2 + 3bc042d6: 4701 li a4,0 + 3bc042d8: 4681 li a3,0 + 3bc042da: 4601 li a2,0 + 3bc042dc: 4585 li a1,1 + 3bc042de: 22250513 addi a0,a0,546 # 2222 <__BSS_SIZE__-0x39ee> + 3bc042e2: ddefe0ef jal ra,3bc028c0 + 3bc042e6: 458d li a1,3 + 3bc042e8: 8522 mv a0,s0 + 3bc042ea: 9c2ff0ef jal ra,3bc034ac + 3bc042ee: b57d j 3bc0419c + 3bc042f0: 26843a03 ld s4,616(s0) + 3bc042f4: 6a85 lui s5,0x1 + 3bc042f6: 818a8513 addi a0,s5,-2024 # 818 <__BSS_SIZE__-0x53f8> + 3bc042fa: 9552 add a0,a0,s4 + 3bc042fc: c42fd0ef jal ra,3bc0173e + 3bc04300: 00737b37 lui s6,0x737 + 3bc04304: 00747bb7 lui s7,0x747 + 3bc04308: 00055c37 lui s8,0x55 + 3bc0430c: 3c05398b extu s3,a0,15,0 + 3bc04310: 4901 li s2,0 + 3bc04312: 373b0b13 addi s6,s6,883 # 737373 <__BSS_SIZE__+0x731763> + 3bc04316: 474b8b93 addi s7,s7,1140 # 747474 <__BSS_SIZE__+0x741864> + 3bc0431a: 555c0c13 addi s8,s8,1365 # 55555 <__BSS_SIZE__+0x4f945> + 3bc0431e: 804a8a93 addi s5,s5,-2044 + 3bc04322: f40984e3 beqz s3,3bc0426a + 3bc04326: 0019f793 andi a5,s3,1 + 3bc0432a: 1c078163 beqz a5,3bc044ec + 3bc0432e: 04890c93 addi s9,s2,72 + 3bc04332: 0c96 slli s9,s9,0x5 + 3bc04334: 008c8d93 addi s11,s9,8 + 3bc04338: 9dd2 add s11,s11,s4 + 3bc0433a: 856e mv a0,s11 + 3bc0433c: c02fd0ef jal ra,3bc0173e + 3bc04340: 00050d1b sext.w s10,a0 + 3bc04344: 010c8513 addi a0,s9,16 + 3bc04348: 9552 add a0,a0,s4 + 3bc0434a: bf4fd0ef jal ra,3bc0173e + 3bc0434e: 0005069b sext.w a3,a0 + 3bc04352: 019a0533 add a0,s4,s9 + 3bc04356: e436 sd a3,8(sp) + 3bc04358: be6fd0ef jal ra,3bc0173e + 3bc0435c: 66a2 ld a3,8(sp) + 3bc0435e: 0005071b sext.w a4,a0 + 3bc04362: 866a mv a2,s10 + 3bc04364: 85ca mv a1,s2 + 3bc04366: 855a mv a0,s6 + 3bc04368: d58fe0ef jal ra,3bc028c0 + 3bc0436c: 014c8513 addi a0,s9,20 + 3bc04370: 9552 add a0,a0,s4 + 3bc04372: bccfd0ef jal ra,3bc0173e + 3bc04376: 0ce1 addi s9,s9,24 + 3bc04378: 0005059b sext.w a1,a0 + 3bc0437c: 019a0533 add a0,s4,s9 + 3bc04380: e42e sd a1,8(sp) + 3bc04382: bbcfd0ef jal ra,3bc0173e + 3bc04386: 65a2 ld a1,8(sp) + 3bc04388: 0005061b sext.w a2,a0 + 3bc0438c: 4701 li a4,0 + 3bc0438e: 4681 li a3,0 + 3bc04390: 855e mv a0,s7 + 3bc04392: d2efe0ef jal ra,3bc028c0 + 3bc04396: 856a mv a0,s10 + 3bc04398: 85ee mv a1,s11 + 3bc0439a: 001d7d13 andi s10,s10,1 + 3bc0439e: ba6fd0ef jal ra,3bc01744 + 3bc043a2: 140d0563 beqz s10,3bc044ec + 3bc043a6: 4585 li a1,1 + 3bc043a8: 854a mv a0,s2 + 3bc043aa: f55fe0ef jal ra,3bc032fe + 3bc043ae: 00050c9b sext.w s9,a0 + 3bc043b2: 0c9e slli s9,s9,0x7 + 3bc043b4: 01940833 add a6,s0,s9 + 3bc043b8: 09883603 ld a2,152(a6) + 3bc043bc: 00751d13 slli s10,a0,0x7 + 3bc043c0: 098d0d93 addi s11,s10,152 + 3bc043c4: 442c lw a1,72(s0) + 3bc043c6: 9da2 add s11,s11,s0 + 3bc043c8: 41b60633 sub a2,a2,s11 + 3bc043cc: 00163613 seqz a2,a2 + 3bc043d0: 4701 li a4,0 + 3bc043d2: 4681 li a3,0 + 3bc043d4: 8562 mv a0,s8 + 3bc043d6: e442 sd a6,8(sp) + 3bc043d8: ce8fe0ef jal ra,3bc028c0 + 3bc043dc: 4430 lw a2,72(s0) + 3bc043de: 47a1 li a5,8 + 3bc043e0: 6822 ld a6,8(sp) + 3bc043e2: 00f61a63 bne a2,a5,3bc043f6 + 3bc043e6: 4799 li a5,6 + 3bc043e8: c43c sw a5,72(s0) + 3bc043ea: 8522 mv a0,s0 + 3bc043ec: a0eff0ef jal ra,3bc035fa + 3bc043f0: 04090c63 beqz s2,3bc04448 + 3bc043f4: a8e5 j 3bc044ec + 3bc043f6: 09883703 ld a4,152(a6) + 3bc043fa: feed8be3 beq s11,a4,3bc043f0 + 3bc043fe: ffc72303 lw t1,-4(a4) # bfffc <__BSS_SIZE__+0xba3ec> + 3bc04402: fd872883 lw a7,-40(a4) + 3bc04406: 0b082783 lw a5,176(a6) + 3bc0440a: 050d0513 addi a0,s10,80 + 3bc0440e: 40688e3b subw t3,a7,t1 + 3bc04412: 0007869b sext.w a3,a5 + 3bc04416: 000e081b sext.w a6,t3 + 3bc0441a: 00d836b3 sltu a3,a6,a3 + 3bc0441e: 0016c693 xori a3,a3,1 + 3bc04422: 40de178b mveqz a5,t3,a3 + 3bc04426: 006786bb addw a3,a5,t1 + 3bc0442a: fed72e23 sw a3,-4(a4) + 3bc0442e: 9522 add a0,a0,s0 + 3bc04430: fc070593 addi a1,a4,-64 + 3bc04434: 08091c63 bnez s2,3bc044cc + 3bc04438: 4785 li a5,1 + 3bc0443a: 06f61463 bne a2,a5,3bc044a2 + 3bc0443e: ec2ff0ef jal ra,3bc03b00 + 3bc04442: c119 beqz a0,3bc04448 + 3bc04444: 4795 li a5,5 + 3bc04446: c43c sw a5,72(s0) + 3bc04448: 27644783 lbu a5,630(s0) + 3bc0444c: c3a9 beqz a5,3bc0448e + 3bc0444e: 26843d03 ld s10,616(s0) + 3bc04452: 00078d9b sext.w s11,a5 + 3bc04456: e43e sd a5,8(sp) + 3bc04458: 9d56 add s10,s10,s5 + 3bc0445a: 856a mv a0,s10 + 3bc0445c: ae2fd0ef jal ra,3bc0173e + 3bc04460: 67a2 ld a5,8(sp) + 3bc04462: 00050c9b sext.w s9,a0 + 3bc04466: 4711 li a4,4 + 3bc04468: 37fd addiw a5,a5,-1 + 3bc0446a: f8fcfc93 andi s9,s9,-113 + 3bc0446e: 02f76063 bltu a4,a5,3bc0448e + 3bc04472: 85ee mv a1,s11 + 3bc04474: 00007517 auipc a0,0x7 + 3bc04478: a7450513 addi a0,a0,-1420 # 3bc0aee8 + 3bc0447c: eddfb0ef jal ra,3bc00358 + 3bc04480: 004d9513 slli a0,s11,0x4 + 3bc04484: 85ea mv a1,s10 + 3bc04486: 01956533 or a0,a0,s9 + 3bc0448a: abafd0ef jal ra,3bc01744 + 3bc0448e: 443c lw a5,72(s0) + 3bc04490: 471d li a4,7 + 3bc04492: 06e79363 bne a5,a4,3bc044f8 + 3bc04496: 04042423 sw zero,72(s0) + 3bc0449a: 8522 mv a0,s0 + 3bc0449c: c6aff0ef jal ra,3bc03906 + 3bc044a0: a8a9 j 3bc044fa + 3bc044a2: 479d li a5,7 + 3bc044a4: 00f61863 bne a2,a5,3bc044b4 + 3bc044a8: 4601 li a2,0 + 3bc044aa: c68fe0ef jal ra,3bc02912 + 3bc044ae: 04042423 sw zero,72(s0) + 3bc044b2: bf59 j 3bc04448 + 3bc044b4: 4795 li a5,5 + 3bc044b6: f8f619e3 bne a2,a5,3bc04448 + 3bc044ba: 4601 li a2,0 + 3bc044bc: c56fe0ef jal ra,3bc02912 + 3bc044c0: 4799 li a5,6 + 3bc044c2: c43c sw a5,72(s0) + 3bc044c4: 8522 mv a0,s0 + 3bc044c6: 934ff0ef jal ra,3bc035fa + 3bc044ca: bfbd j 3bc04448 + 3bc044cc: 00d89763 bne a7,a3,3bc044da + 3bc044d0: 4601 li a2,0 + 3bc044d2: e42a sd a0,8(sp) + 3bc044d4: c3efe0ef jal ra,3bc02912 + 3bc044d8: 6522 ld a0,8(sp) + 3bc044da: 9ca2 add s9,s9,s0 + 3bc044dc: 098cb583 ld a1,152(s9) + 3bc044e0: 00bd8663 beq s11,a1,3bc044ec + 3bc044e4: fc058593 addi a1,a1,-64 + 3bc044e8: c78ff0ef jal ra,3bc03960 + 3bc044ec: 2905 addiw s2,s2,1 + 3bc044ee: 0ff97913 andi s2,s2,255 + 3bc044f2: 0019d993 srli s3,s3,0x1 + 3bc044f6: b535 j 3bc04322 + 3bc044f8: d3cd beqz a5,3bc0449a + 3bc044fa: 27544703 lbu a4,629(s0) + 3bc044fe: 4785 li a5,1 + 3bc04500: fef716e3 bne a4,a5,3bc044ec + 3bc04504: 27444503 lbu a0,628(s0) + 3bc04508: 4585 li a1,1 + 3bc0450a: df5fe0ef jal ra,3bc032fe + 3bc0450e: 0005071b sext.w a4,a0 + 3bc04512: 071e slli a4,a4,0x7 + 3bc04514: 9722 add a4,a4,s0 + 3bc04516: 00751793 slli a5,a0,0x7 + 3bc0451a: 6f4c ld a1,152(a4) + 3bc0451c: 05078513 addi a0,a5,80 # c0050 <__BSS_SIZE__+0xba440> + 3bc04520: 09878793 addi a5,a5,152 + 3bc04524: 97a2 add a5,a5,s0 + 3bc04526: 9522 add a0,a0,s0 + 3bc04528: 00f58a63 beq a1,a5,3bc0453c + 3bc0452c: 0c170783 lb a5,193(a4) + 3bc04530: fc058593 addi a1,a1,-64 + 3bc04534: 0007d763 bgez a5,3bc04542 + 3bc04538: c28ff0ef jal ra,3bc03960 + 3bc0453c: 26040aa3 sb zero,629(s0) + 3bc04540: b775 j 3bc044ec + 3bc04542: a1eff0ef jal ra,3bc03760 + 3bc04546: bfdd j 3bc0453c + 3bc04548: 0019f793 andi a5,s3,1 + 3bc0454c: c3a1 beqz a5,3bc0458c + 3bc0454e: 05890493 addi s1,s2,88 + 3bc04552: 0496 slli s1,s1,0x5 + 3bc04554: 04a1 addi s1,s1,8 + 3bc04556: 94da add s1,s1,s6 + 3bc04558: 8526 mv a0,s1 + 3bc0455a: 9e4fd0ef jal ra,3bc0173e + 3bc0455e: 0005061b sext.w a2,a0 + 3bc04562: 8532 mv a0,a2 + 3bc04564: 85a6 mv a1,s1 + 3bc04566: e432 sd a2,8(sp) + 3bc04568: 9dcfd0ef jal ra,3bc01744 + 3bc0456c: 6622 ld a2,8(sp) + 3bc0456e: 06091063 bnez s2,3bc045ce + 3bc04572: 00867793 andi a5,a2,8 + 3bc04576: c38d beqz a5,3bc04598 + 3bc04578: 8556 mv a0,s5 + 3bc0457a: 4701 li a4,0 + 3bc0457c: 4681 li a3,0 + 3bc0457e: 4601 li a2,0 + 3bc04580: 4581 li a1,0 + 3bc04582: b3efe0ef jal ra,3bc028c0 + 3bc04586: 8522 mv a0,s0 + 3bc04588: fc8ff0ef jal ra,3bc03d50 + 3bc0458c: 2905 addiw s2,s2,1 + 3bc0458e: 0ff97913 andi s2,s2,255 + 3bc04592: 0019d993 srli s3,s3,0x1 + 3bc04596: b301 j 3bc04296 + 3bc04598: 00167793 andi a5,a2,1 + 3bc0459c: dbe5 beqz a5,3bc0458c + 3bc0459e: 443c lw a5,72(s0) + 3bc045a0: 4701 li a4,0 + 3bc045a2: 4681 li a3,0 + 3bc045a4: 01778b63 beq a5,s7,3bc045ba + 3bc045a8: 4585 li a1,1 + 3bc045aa: 8552 mv a0,s4 + 3bc045ac: b14fe0ef jal ra,3bc028c0 + 3bc045b0: 4581 li a1,0 + 3bc045b2: 8522 mv a0,s0 + 3bc045b4: a56ff0ef jal ra,3bc0380a + 3bc045b8: bfd1 j 3bc0458c + 3bc045ba: 8552 mv a0,s4 + 3bc045bc: 4589 li a1,2 + 3bc045be: b02fe0ef jal ra,3bc028c0 + 3bc045c2: 8522 mv a0,s0 + 3bc045c4: 04042423 sw zero,72(s0) + 3bc045c8: b3eff0ef jal ra,3bc03906 + 3bc045cc: b7c1 j 3bc0458c + 3bc045ce: 8a05 andi a2,a2,1 + 3bc045d0: de55 beqz a2,3bc0458c + 3bc045d2: 85ca mv a1,s2 + 3bc045d4: bff9 j 3bc045b2 + +000000003bc045d6 : + 3bc045d6: 07158703 lb a4,113(a1) + 3bc045da: 00075663 bgez a4,3bc045e6 + 3bc045de: 4705 li a4,1 + 3bc045e0: c538 sw a4,72(a0) + 3bc045e2: ddaff06f j 3bc03bbc + 3bc045e6: 4711 li a4,4 + 3bc045e8: c538 sw a4,72(a0) + 3bc045ea: daaff06f j 3bc03b94 + +000000003bc045ee : + 3bc045ee: e581 bnez a1,3bc045f6 + 3bc045f0: 57a9 li a5,-22 + 3bc045f2: 853e mv a0,a5 + 3bc045f4: 8082 ret + 3bc045f6: 759c ld a5,40(a1) + 3bc045f8: dfe5 beqz a5,3bc045f0 + 3bc045fa: 699c ld a5,16(a1) + 3bc045fc: dbf5 beqz a5,3bc045f0 + 3bc045fe: 61bc ld a5,64(a1) + 3bc04600: 7179 addi sp,sp,-48 + 3bc04602: e84a sd s2,16(sp) + 3bc04604: f406 sd ra,40(sp) + 3bc04606: f022 sd s0,32(sp) + 3bc04608: ec26 sd s1,24(sp) + 3bc0460a: e44e sd s3,8(sp) + 3bc0460c: 04058913 addi s2,a1,64 + 3bc04610: 06f91763 bne s2,a5,3bc0467e + 3bc04614: c52d beqz a0,3bc0467e + 3bc04616: 613c ld a5,64(a0) + 3bc04618: 84ae mv s1,a1 + 3bc0461a: 842a mv s0,a0 + 3bc0461c: cbb9 beqz a5,3bc04672 + 3bc0461e: 7c08 ld a0,56(s0) + 3bc04620: 07144683 lbu a3,113(s0) + 3bc04624: fc600793 li a5,-58 + 3bc04628: 7d18 ld a4,56(a0) + 3bc0462a: cb39 beqz a4,3bc04680 + 3bc0462c: 5118 lw a4,32(a0) + 3bc0462e: fc600793 li a5,-58 + 3bc04632: c739 beqz a4,3bc04680 + 3bc04634: 4785 li a5,1 + 3bc04636: 1782 slli a5,a5,0x20 + 3bc04638: fdc78793 addi a5,a5,-36 + 3bc0463c: 26853703 ld a4,616(a0) + 3bc04640: fc9c sd a5,56(s1) + 3bc04642: 643c ld a5,72(s0) + 3bc04644: 04840993 addi s3,s0,72 + 3bc04648: 04f99f63 bne s3,a5,3bc046a6 + 3bc0464c: 07044783 lbu a5,112(s0) + 3bc04650: ebb9 bnez a5,3bc046a6 + 3bc04652: 00f6f793 andi a5,a3,15 + 3bc04656: ef8d bnez a5,3bc04690 + 3bc04658: 683c ld a5,80(s0) + 3bc0465a: 05243823 sd s2,80(s0) + 3bc0465e: 0534b023 sd s3,64(s1) + 3bc04662: e4bc sd a5,72(s1) + 3bc04664: 0127b023 sd s2,0(a5) + 3bc04668: 85a2 mv a1,s0 + 3bc0466a: f6dff0ef jal ra,3bc045d6 + 3bc0466e: 4781 li a5,0 + 3bc04670: a801 j 3bc04680 + 3bc04672: 01853983 ld s3,24(a0) + 3bc04676: a4cfe0ef jal ra,3bc028c2 + 3bc0467a: faa982e3 beq s3,a0,3bc0461e + 3bc0467e: 57a9 li a5,-22 + 3bc04680: 70a2 ld ra,40(sp) + 3bc04682: 7402 ld s0,32(sp) + 3bc04684: 64e2 ld s1,24(sp) + 3bc04686: 6942 ld s2,16(sp) + 3bc04688: 69a2 ld s3,8(sp) + 3bc0468a: 853e mv a0,a5 + 3bc0468c: 6145 addi sp,sp,48 + 3bc0468e: 8082 ret + 3bc04690: fc76b78b extu a5,a3,63,7 + 3bc04694: 01470513 addi a0,a4,20 + 3bc04698: c385 beqz a5,3bc046b8 + 3bc0469a: 8a4fd0ef jal ra,3bc0173e + 3bc0469e: 85a6 mv a1,s1 + 3bc046a0: 8522 mv a0,s0 + 3bc046a2: abeff0ef jal ra,3bc03960 + 3bc046a6: 683c ld a5,80(s0) + 3bc046a8: 05243823 sd s2,80(s0) + 3bc046ac: 0534b023 sd s3,64(s1) + 3bc046b0: e4bc sd a5,72(s1) + 3bc046b2: 0127b023 sd s2,0(a5) + 3bc046b6: bf65 j 3bc0466e + 3bc046b8: 886fd0ef jal ra,3bc0173e + 3bc046bc: 85a6 mv a1,s1 + 3bc046be: 8522 mv a0,s0 + 3bc046c0: 8a0ff0ef jal ra,3bc03760 + 3bc046c4: b7cd j 3bc046a6 + +000000003bc046c6 : + 3bc046c6: 7179 addi sp,sp,-48 + 3bc046c8: f022 sd s0,32(sp) + 3bc046ca: ec26 sd s1,24(sp) + 3bc046cc: f406 sd ra,40(sp) + 3bc046ce: e432 sd a2,8(sp) + 3bc046d0: 0e0007b7 lui a5,0xe000 + 3bc046d4: 84ae mv s1,a1 + 3bc046d6: 638c ld a1,0(a5) + 3bc046d8: 842a mv s0,a0 + 3bc046da: 00007517 auipc a0,0x7 + 3bc046de: 82650513 addi a0,a0,-2010 # 3bc0af00 + 3bc046e2: 5055b78b extu a5,a1,20,5 + 3bc046e6: 85be mv a1,a5 + 3bc046e8: 00007717 auipc a4,0x7 + 3bc046ec: 00f71823 sh a5,16(a4) # 3bc0b6f8 + 3bc046f0: c69fb0ef jal ra,3bc00358 + 3bc046f4: 8522 mv a0,s0 + 3bc046f6: 7402 ld s0,32(sp) + 3bc046f8: 6622 ld a2,8(sp) + 3bc046fa: 70a2 ld ra,40(sp) + 3bc046fc: 85a6 mv a1,s1 + 3bc046fe: 64e2 ld s1,24(sp) + 3bc04700: 6145 addi sp,sp,48 + 3bc04702: bd5fd06f j 3bc022d6 + +000000003bc04706 : + 3bc04706: 4781 li a5,0 + 3bc04708: 00007697 auipc a3,0x7 + 3bc0470c: 81068693 addi a3,a3,-2032 # 3bc0af18 + 3bc04710: 0007871b sext.w a4,a5 + 3bc04714: 00c74363 blt a4,a2,3bc0471a + 3bc04718: 8082 ret + 3bc0471a: 80f5c80b lrbu a6,a1,a5,0 + 3bc0471e: 9c85370b extu a4,a0,39,8 + 3bc04722: 0085151b slliw a0,a0,0x8 + 3bc04726: 01074733 xor a4,a4,a6 + 3bc0472a: a2e6c70b lrhu a4,a3,a4,1 + 3bc0472e: 0785 addi a5,a5,1 + 3bc04730: 8d39 xor a0,a0,a4 + 3bc04732: 3c05350b extu a0,a0,15,0 + 3bc04736: bfe9 j 3bc04710 + +000000003bc04738 : + 3bc04738: 4d78 lw a4,92(a0) + 3bc0473a: 11000793 li a5,272 + 3bc0473e: fff7069b addiw a3,a4,-1 + 3bc04742: 04d7e563 bltu a5,a3,3bc0478c + 3bc04746: 7510 ld a2,40(a0) + 3bc04748: 7c07368b extu a3,a4,31,0 + 3bc0474c: 01853803 ld a6,24(a0) + 3bc04750: 8d91 sub a1,a1,a2 + 3bc04752: 02053e03 ld t3,32(a0) + 3bc04756: 04856883 lwu a7,72(a0) + 3bc0475a: 87ba mv a5,a4 + 3bc0475c: 00d5f463 bgeu a1,a3,3bc04764 + 3bc04760: 0005879b sext.w a5,a1 + 3bc04764: 416c lw a1,68(a0) + 3bc04766: 4134 lw a3,64(a0) + 3bc04768: e599 bnez a1,3bc04776 + 3bc0476a: 414c lw a1,4(a0) + 3bc0476c: 40d5833b subw t1,a1,a3 + 3bc04770: 0067e363 bltu a5,t1,3bc04776 + 3bc04774: c16c sw a1,68(a0) + 3bc04776: 9ebd addw a3,a3,a5 + 3bc04778: 9f1d subw a4,a4,a5 + 3bc0477a: c134 sw a3,64(a0) + 3bc0477c: cd78 sw a4,92(a0) + 3bc0477e: 86be mv a3,a5 + 3bc04780: 8732 mv a4,a2 + 3bc04782: e691 bnez a3,3bc0478e + 3bc04784: 7c07b78b extu a5,a5,31,0 + 3bc04788: 97b2 add a5,a5,a2 + 3bc0478a: f51c sd a5,40(a0) + 3bc0478c: 8082 ret + 3bc0478e: 36fd addiw a3,a3,-1 + 3bc04790: 411705b3 sub a1,a4,a7 + 3bc04794: 8372 mv t1,t3 + 3bc04796: 01176363 bltu a4,a7,3bc0479c + 3bc0479a: 4301 li t1,0 + 3bc0479c: 95c2 add a1,a1,a6 + 3bc0479e: 8065c58b lrbu a1,a1,t1,0 + 3bc047a2: 00e8558b srb a1,a6,a4,0 + 3bc047a6: 0705 addi a4,a4,1 + 3bc047a8: bfe9 j 3bc04782 + +000000003bc047aa : + 3bc047aa: 7155 addi sp,sp,-208 + 3bc047ac: e1a2 sd s0,192(sp) + 3bc047ae: 6405 lui s0,0x1 + 3bc047b0: e586 sd ra,200(sp) + 3bc047b2: fd26 sd s1,184(sp) + 3bc047b4: f94a sd s2,176(sp) + 3bc047b6: f54e sd s3,168(sp) + 3bc047b8: f152 sd s4,160(sp) + 3bc047ba: ed56 sd s5,152(sp) + 3bc047bc: e95a sd s6,144(sp) + 3bc047be: e55e sd s7,136(sp) + 3bc047c0: e162 sd s8,128(sp) + 3bc047c2: fce6 sd s9,120(sp) + 3bc047c4: f8ea sd s10,112(sp) + 3bc047c6: f4ee sd s11,104(sp) + 3bc047c8: e82e sd a1,16(sp) + 3bc047ca: f832 sd a2,48(sp) + 3bc047cc: 8004041b addiw s0,s0,-2048 + 3bc047d0: 417c lw a5,68(a0) + 3bc047d2: 04052e03 lw t3,64(a0) + 3bc047d6: 02853803 ld a6,40(a0) + 3bc047da: ec3e sd a5,24(sp) + 3bc047dc: eba1 bnez a5,3bc0482c + 3bc047de: 415c lw a5,4(a0) + 3bc047e0: 6742 ld a4,16(sp) + 3bc047e2: 66c2 ld a3,16(sp) + 3bc047e4: 41c787bb subw a5,a5,t3 + 3bc047e8: 7c07b78b extu a5,a5,31,0 + 3bc047ec: 41070733 sub a4,a4,a6 + 3bc047f0: e436 sd a3,8(sp) + 3bc047f2: 00e7f463 bgeu a5,a4,3bc047fa + 3bc047f6: 97c2 add a5,a5,a6 + 3bc047f8: e43e sd a5,8(sp) + 3bc047fa: 020e1b63 bnez t3,3bc04830 + 3bc047fe: 5d58 lw a4,60(a0) + 3bc04800: c00007b7 lui a5,0xc0000 + 3bc04804: bff78793 addi a5,a5,-1025 # ffffffffbffffbff <__BL2_END__+0xffffffff843ec7ef> + 3bc04808: 02e7f463 bgeu a5,a4,3bc04830 + 3bc0480c: 4505 li a0,1 + 3bc0480e: 60ae ld ra,200(sp) + 3bc04810: 640e ld s0,192(sp) + 3bc04812: 74ea ld s1,184(sp) + 3bc04814: 794a ld s2,176(sp) + 3bc04816: 79aa ld s3,168(sp) + 3bc04818: 7a0a ld s4,160(sp) + 3bc0481a: 6aea ld s5,152(sp) + 3bc0481c: 6b4a ld s6,144(sp) + 3bc0481e: 6baa ld s7,136(sp) + 3bc04820: 6c0a ld s8,128(sp) + 3bc04822: 7ce6 ld s9,120(sp) + 3bc04824: 7d46 ld s10,112(sp) + 3bc04826: 7da6 ld s11,104(sp) + 3bc04828: 6169 addi sp,sp,208 + 3bc0482a: 8082 ret + 3bc0482c: 67c2 ld a5,16(sp) + 3bc0482e: e43e sd a5,8(sp) + 3bc04830: 497c lw a5,84(a0) + 3bc04832: 00154703 lbu a4,1(a0) + 3bc04836: 690c ld a1,16(a0) + 3bc04838: f03e sd a5,32(sp) + 3bc0483a: 00054783 lbu a5,0(a0) + 3bc0483e: 00254303 lbu t1,2(a0) + 3bc04842: 74fd lui s1,0xfffff + 3bc04844: f43e sd a5,40(sp) + 3bc04846: 76a2 ld a3,40(sp) + 3bc04848: 10000793 li a5,256 + 3bc0484c: 00e7973b sllw a4,a5,a4 + 3bc04850: 02053a83 ld s5,32(a0) + 3bc04854: 00d7d7bb srlw a5,a5,a3 + 3bc04858: 60048493 addi s1,s1,1536 # fffffffffffff600 <__BL2_END__+0xffffffffc43ec1f0> + 3bc0485c: 56fd li a3,-1 + 3bc0485e: 40f707bb subw a5,a4,a5 + 3bc04862: 006696bb sllw a3,a3,t1 + 3bc04866: 94ae add s1,s1,a1 + 3bc04868: fc3e sd a5,56(sp) + 3bc0486a: fff6c693 not a3,a3 + 3bc0486e: e4a6 sd s1,72(sp) + 3bc04870: 05852883 lw a7,88(a0) + 3bc04874: a0058493 addi s1,a1,-1536 + 3bc04878: 04852f83 lw t6,72(a0) + 3bc0487c: 04c52f03 lw t5,76(a0) + 3bc04880: 05052983 lw s3,80(a0) + 3bc04884: 01853a03 ld s4,24(a0) + 3bc04888: 7918 ld a4,48(a0) + 3bc0488a: 5d10 lw a2,56(a0) + 3bc0488c: 5d5c lw a5,60(a0) + 3bc0488e: 2681 sext.w a3,a3 + 3bc04890: e8a6 sd s1,80(sp) + 3bc04892: fffa8493 addi s1,s5,-1 + 3bc04896: e0b6 sd a3,64(sp) + 3bc04898: 4301 li t1,0 + 3bc0489a: 010006b7 lui a3,0x1000 + 3bc0489e: eca6 sd s1,88(sp) + 3bc048a0: 6486 ld s1,64(sp) + 3bc048a2: 01c4feb3 and t4,s1,t3 + 3bc048a6: 004e9e9b slliw t4,t4,0x4 + 3bc048aa: 011e893b addw s2,t4,a7 + 3bc048ae: 02091493 slli s1,s2,0x20 + 3bc048b2: 01f4d913 srli s2,s1,0x1f + 3bc048b6: e0090b93 addi s7,s2,-512 + 3bc048ba: a175cb0b lrhu s6,a1,s7,0 + 3bc048be: 000b039b sext.w t2,s6 + 3bc048c2: 00d67a63 bgeu a2,a3,3bc048d6 + 3bc048c6: 9817428b lbuia t0,(a4),1,0 + 3bc048ca: 0087979b slliw a5,a5,0x8 + 3bc048ce: 0086161b slliw a2,a2,0x8 + 3bc048d2: 00f2e7b3 or a5,t0,a5 + 3bc048d6: 00b6529b srliw t0,a2,0xb + 3bc048da: 027284bb mulw s1,t0,t2 + 3bc048de: 82a6 mv t0,s1 + 3bc048e0: 7497f663 bgeu a5,s1,3bc0502c + 3bc048e4: 6ee2 ld t4,24(sp) + 3bc048e6: 407403bb subw t2,s0,t2 + 3bc048ea: 0053d39b srliw t2,t2,0x5 + 3bc048ee: 016383bb addw t2,t2,s6 + 3bc048f2: 2175d38b srh t2,a1,s7,0 + 3bc048f6: 01ceeeb3 or t4,t4,t3 + 3bc048fa: 28058613 addi a2,a1,640 + 3bc048fe: 020e8b63 beqz t4,3bc04934 + 3bc04902: 6966 ld s2,88(sp) + 3bc04904: fff80393 addi t2,a6,-1 + 3bc04908: 008e1e9b slliw t4,t3,0x8 + 3bc0490c: 4109138b mveqz t2,s2,a6 + 3bc04910: 807a438b lrbu t2,s4,t2,0 + 3bc04914: 01d38ebb addw t4,t2,t4 + 3bc04918: 73e2 ld t2,56(sp) + 3bc0491a: 01d3feb3 and t4,t2,t4 + 3bc0491e: 73a2 ld t2,40(sp) + 3bc04920: 007e9ebb sllw t4,t4,t2 + 3bc04924: 438d li t2,3 + 3bc04926: 027e8ebb mulw t4,t4,t2 + 3bc0492a: 020e9393 slli t2,t4,0x20 + 3bc0492e: 01f3de93 srli t4,t2,0x1f + 3bc04932: 9676 add a2,a2,t4 + 3bc04934: 4e99 li t4,6 + 3bc04936: 2e05 addiw t3,t3,1 + 3bc04938: 311eef63 bltu t4,a7,3bc04c56 + 3bc0493c: 438d li t2,3 + 3bc0493e: 8ec6 mv t4,a7 + 3bc04940: 0113f363 bgeu t2,a7,3bc04946 + 3bc04944: 4e8d li t4,3 + 3bc04946: 00265383 lhu t2,2(a2) + 3bc0494a: 41d888bb subw a7,a7,t4 + 3bc0494e: 00038e9b sext.w t4,t2 + 3bc04952: 00d4fa63 bgeu s1,a3,3bc04966 + 3bc04956: 0082949b slliw s1,t0,0x8 + 3bc0495a: 9817428b lbuia t0,(a4),1,0 + 3bc0495e: 0087979b slliw a5,a5,0x8 + 3bc04962: 00f2e7b3 or a5,t0,a5 + 3bc04966: 00b4d29b srliw t0,s1,0xb + 3bc0496a: 03d2893b mulw s2,t0,t4 + 3bc0496e: 2327f563 bgeu a5,s2,3bc04b98 + 3bc04972: 41d40ebb subw t4,s0,t4 + 3bc04976: 005ede9b srliw t4,t4,0x5 + 3bc0497a: 007e83bb addw t2,t4,t2 + 3bc0497e: 3c03b38b extu t2,t2,15,0 + 3bc04982: 4e89 li t4,2 + 3bc04984: 00761123 sh t2,2(a2) + 3bc04988: b3d6448b lurhu s1,a2,t4,1 + 3bc0498c: 03d61b8b addsl s7,a2,t4,1 + 3bc04990: 0004829b sext.w t0,s1 + 3bc04994: 00d97a63 bgeu s2,a3,3bc049a8 + 3bc04998: 9817438b lbuia t2,(a4),1,0 + 3bc0499c: 0087979b slliw a5,a5,0x8 + 3bc049a0: 0089191b slliw s2,s2,0x8 + 3bc049a4: 00f3e7b3 or a5,t2,a5 + 3bc049a8: 00b95b1b srliw s6,s2,0xb + 3bc049ac: 025b03bb mulw t2,s6,t0 + 3bc049b0: 001e9c1b slliw s8,t4,0x1 + 3bc049b4: 0e86 slli t4,t4,0x1 + 3bc049b6: 1e77fd63 bgeu a5,t2,3bc04bb0 + 3bc049ba: 405402bb subw t0,s0,t0 + 3bc049be: 0052d29b srliw t0,t0,0x5 + 3bc049c2: 009284bb addw s1,t0,s1 + 3bc049c6: 3c04b48b extu s1,s1,15,0 + 3bc049ca: 009b9023 sh s1,0(s7) + 3bc049ce: b3d6490b lurhu s2,a2,t4,1 + 3bc049d2: 020e9493 slli s1,t4,0x20 + 3bc049d6: 01f4dc13 srli s8,s1,0x1f + 3bc049da: 9c32 add s8,s8,a2 + 3bc049dc: 0009029b sext.w t0,s2 + 3bc049e0: 00d3f963 bgeu t2,a3,3bc049f2 + 3bc049e4: 9817448b lbuia s1,(a4),1,0 + 3bc049e8: 0087979b slliw a5,a5,0x8 + 3bc049ec: 0083939b slliw t2,t2,0x8 + 3bc049f0: 8fc5 or a5,a5,s1 + 3bc049f2: 00b3db9b srliw s7,t2,0xb + 3bc049f6: 025b84bb mulw s1,s7,t0 + 3bc049fa: 001e9b1b slliw s6,t4,0x1 + 3bc049fe: 1c97f663 bgeu a5,s1,3bc04bca + 3bc04a02: 405402bb subw t0,s0,t0 + 3bc04a06: 0052d29b srliw t0,t0,0x5 + 3bc04a0a: 0122893b addw s2,t0,s2 + 3bc04a0e: 3c09390b extu s2,s2,15,0 + 3bc04a12: 012c1023 sh s2,0(s8) + 3bc04a16: b366428b lurhu t0,a2,s6,1 + 3bc04a1a: 020b1e93 slli t4,s6,0x20 + 3bc04a1e: 01fedc13 srli s8,t4,0x1f + 3bc04a22: 9c32 add s8,s8,a2 + 3bc04a24: 00028e9b sext.w t4,t0 + 3bc04a28: 00d4fa63 bgeu s1,a3,3bc04a3c + 3bc04a2c: 9817438b lbuia t2,(a4),1,0 + 3bc04a30: 0087979b slliw a5,a5,0x8 + 3bc04a34: 0084949b slliw s1,s1,0x8 + 3bc04a38: 00f3e7b3 or a5,t2,a5 + 3bc04a3c: 00b4db9b srliw s7,s1,0xb + 3bc04a40: 03db83bb mulw t2,s7,t4 + 3bc04a44: 001b191b slliw s2,s6,0x1 + 3bc04a48: 1877fc63 bgeu a5,t2,3bc04be0 + 3bc04a4c: 41d40ebb subw t4,s0,t4 + 3bc04a50: 005ede9b srliw t4,t4,0x5 + 3bc04a54: 005e82bb addw t0,t4,t0 + 3bc04a58: 3c02b28b extu t0,t0,15,0 + 3bc04a5c: 02091493 slli s1,s2,0x20 + 3bc04a60: 005c1023 sh t0,0(s8) + 3bc04a64: 01f4db93 srli s7,s1,0x1f + 3bc04a68: b326448b lurhu s1,a2,s2,1 + 3bc04a6c: 9bb2 add s7,s7,a2 + 3bc04a6e: 00048e9b sext.w t4,s1 + 3bc04a72: 00d3fa63 bgeu t2,a3,3bc04a86 + 3bc04a76: 9817428b lbuia t0,(a4),1,0 + 3bc04a7a: 0087979b slliw a5,a5,0x8 + 3bc04a7e: 0083939b slliw t2,t2,0x8 + 3bc04a82: 00f2e7b3 or a5,t0,a5 + 3bc04a86: 00b3db1b srliw s6,t2,0xb + 3bc04a8a: 03db02bb mulw t0,s6,t4 + 3bc04a8e: 0019191b slliw s2,s2,0x1 + 3bc04a92: 1657f363 bgeu a5,t0,3bc04bf8 + 3bc04a96: 41d40ebb subw t4,s0,t4 + 3bc04a9a: 005ede9b srliw t4,t4,0x5 + 3bc04a9e: 009e84bb addw s1,t4,s1 + 3bc04aa2: 3c04b48b extu s1,s1,15,0 + 3bc04aa6: 009b9023 sh s1,0(s7) + 3bc04aaa: 02091493 slli s1,s2,0x20 + 3bc04aae: 01f4db93 srli s7,s1,0x1f + 3bc04ab2: b326448b lurhu s1,a2,s2,1 + 3bc04ab6: 9bb2 add s7,s7,a2 + 3bc04ab8: 00048e9b sext.w t4,s1 + 3bc04abc: 00d2fa63 bgeu t0,a3,3bc04ad0 + 3bc04ac0: 9817438b lbuia t2,(a4),1,0 + 3bc04ac4: 0087979b slliw a5,a5,0x8 + 3bc04ac8: 0082929b slliw t0,t0,0x8 + 3bc04acc: 00f3e7b3 or a5,t2,a5 + 3bc04ad0: 00b2db1b srliw s6,t0,0xb + 3bc04ad4: 03db03bb mulw t2,s6,t4 + 3bc04ad8: 0019191b slliw s2,s2,0x1 + 3bc04adc: 1277fa63 bgeu a5,t2,3bc04c10 + 3bc04ae0: 41d40ebb subw t4,s0,t4 + 3bc04ae4: 005ede9b srliw t4,t4,0x5 + 3bc04ae8: 009e84bb addw s1,t4,s1 + 3bc04aec: 3c04b48b extu s1,s1,15,0 + 3bc04af0: 009b9023 sh s1,0(s7) + 3bc04af4: 02091493 slli s1,s2,0x20 + 3bc04af8: 01f4db93 srli s7,s1,0x1f + 3bc04afc: b326448b lurhu s1,a2,s2,1 + 3bc04b00: 9bb2 add s7,s7,a2 + 3bc04b02: 00048e9b sext.w t4,s1 + 3bc04b06: 00d3fa63 bgeu t2,a3,3bc04b1a + 3bc04b0a: 9817428b lbuia t0,(a4),1,0 + 3bc04b0e: 0087979b slliw a5,a5,0x8 + 3bc04b12: 0083939b slliw t2,t2,0x8 + 3bc04b16: 00f2e7b3 or a5,t0,a5 + 3bc04b1a: 00b3db1b srliw s6,t2,0xb + 3bc04b1e: 03db02bb mulw t0,s6,t4 + 3bc04b22: 0019191b slliw s2,s2,0x1 + 3bc04b26: 1057f163 bgeu a5,t0,3bc04c28 + 3bc04b2a: 41d40ebb subw t4,s0,t4 + 3bc04b2e: 005ede9b srliw t4,t4,0x5 + 3bc04b32: 009e84bb addw s1,t4,s1 + 3bc04b36: 3c04b48b extu s1,s1,15,0 + 3bc04b3a: 009b9023 sh s1,0(s7) + 3bc04b3e: b3264b8b lurhu s7,a2,s2,1 + 3bc04b42: 02091493 slli s1,s2,0x20 + 3bc04b46: 01f4db13 srli s6,s1,0x1f + 3bc04b4a: 9b32 add s6,s6,a2 + 3bc04b4c: 000b8e9b sext.w t4,s7 + 3bc04b50: 00d2f963 bgeu t0,a3,3bc04b62 + 3bc04b54: 9817460b lbuia a2,(a4),1,0 + 3bc04b58: 0087979b slliw a5,a5,0x8 + 3bc04b5c: 0082929b slliw t0,t0,0x8 + 3bc04b60: 8fd1 or a5,a5,a2 + 3bc04b62: 00b2d39b srliw t2,t0,0xb + 3bc04b66: 03d3863b mulw a2,t2,t4 + 3bc04b6a: 0019149b slliw s1,s2,0x1 + 3bc04b6e: 0cc7f963 bgeu a5,a2,3bc04c40 + 3bc04b72: 41d40ebb subw t4,s0,t4 + 3bc04b76: 005ede9b srliw t4,t4,0x5 + 3bc04b7a: 017e8ebb addw t4,t4,s7 + 3bc04b7e: 01db1023 sh t4,0(s6) + 3bc04b82: 010a548b srb s1,s4,a6,0 + 3bc04b86: 0805 addi a6,a6,1 + 3bc04b88: 64a2 ld s1,8(sp) + 3bc04b8a: 649870e3 bgeu a6,s1,3bc059ca + 3bc04b8e: 74c2 ld s1,48(sp) + 3bc04b90: d09768e3 bltu a4,s1,3bc048a0 + 3bc04b94: 6370006f j 3bc059ca + 3bc04b98: 005ede9b srliw t4,t4,0x5 + 3bc04b9c: 41d383bb subw t2,t2,t4 + 3bc04ba0: 412787bb subw a5,a5,s2 + 3bc04ba4: 3c03b38b extu t2,t2,15,0 + 3bc04ba8: 4124893b subw s2,s1,s2 + 3bc04bac: 4e8d li t4,3 + 3bc04bae: bbd9 j 3bc04984 + 3bc04bb0: 0052d29b srliw t0,t0,0x5 + 3bc04bb4: 405484bb subw s1,s1,t0 + 3bc04bb8: 407787bb subw a5,a5,t2 + 3bc04bbc: 3c04b48b extu s1,s1,15,0 + 3bc04bc0: 001c0e9b addiw t4,s8,1 + 3bc04bc4: 407903bb subw t2,s2,t2 + 3bc04bc8: b509 j 3bc049ca + 3bc04bca: 0052d29b srliw t0,t0,0x5 + 3bc04bce: 4059093b subw s2,s2,t0 + 3bc04bd2: 9f85 subw a5,a5,s1 + 3bc04bd4: 3c09390b extu s2,s2,15,0 + 3bc04bd8: 2b05 addiw s6,s6,1 + 3bc04bda: 409384bb subw s1,t2,s1 + 3bc04bde: bd15 j 3bc04a12 + 3bc04be0: 005ede9b srliw t4,t4,0x5 + 3bc04be4: 41d282bb subw t0,t0,t4 + 3bc04be8: 407787bb subw a5,a5,t2 + 3bc04bec: 3c02b28b extu t0,t0,15,0 + 3bc04bf0: 2905 addiw s2,s2,1 + 3bc04bf2: 407483bb subw t2,s1,t2 + 3bc04bf6: b59d j 3bc04a5c + 3bc04bf8: 005ede9b srliw t4,t4,0x5 + 3bc04bfc: 41d484bb subw s1,s1,t4 + 3bc04c00: 405787bb subw a5,a5,t0 + 3bc04c04: 3c04b48b extu s1,s1,15,0 + 3bc04c08: 2905 addiw s2,s2,1 + 3bc04c0a: 405382bb subw t0,t2,t0 + 3bc04c0e: bd61 j 3bc04aa6 + 3bc04c10: 005ede9b srliw t4,t4,0x5 + 3bc04c14: 41d484bb subw s1,s1,t4 + 3bc04c18: 407787bb subw a5,a5,t2 + 3bc04c1c: 3c04b48b extu s1,s1,15,0 + 3bc04c20: 2905 addiw s2,s2,1 + 3bc04c22: 407283bb subw t2,t0,t2 + 3bc04c26: b5e9 j 3bc04af0 + 3bc04c28: 005ede9b srliw t4,t4,0x5 + 3bc04c2c: 41d484bb subw s1,s1,t4 + 3bc04c30: 405787bb subw a5,a5,t0 + 3bc04c34: 3c04b48b extu s1,s1,15,0 + 3bc04c38: 2905 addiw s2,s2,1 + 3bc04c3a: 405382bb subw t0,t2,t0 + 3bc04c3e: bdf5 j 3bc04b3a + 3bc04c40: 005ede9b srliw t4,t4,0x5 + 3bc04c44: 41db8ebb subw t4,s7,t4 + 3bc04c48: 9f91 subw a5,a5,a2 + 3bc04c4a: 01db1023 sh t4,0(s6) + 3bc04c4e: 2485 addiw s1,s1,1 + 3bc04c50: 40c2863b subw a2,t0,a2 + 3bc04c54: b73d j 3bc04b82 + 3bc04c56: 7c0fb90b extu s2,t6,31,0 + 3bc04c5a: 41280eb3 sub t4,a6,s2 + 3bc04c5e: 83d6 mv t2,s5 + 3bc04c60: 01286363 bltu a6,s2,3bc04c66 + 3bc04c64: 4381 li t2,0 + 3bc04c66: 9ed2 add t4,t4,s4 + 3bc04c68: 4925 li s2,9 + 3bc04c6a: 807ece8b lrbu t4,t4,t2,0 + 3bc04c6e: 438d li t2,3 + 3bc04c70: 01197363 bgeu s2,a7,3bc04c76 + 3bc04c74: 4399 li t2,6 + 3bc04c76: 001e9b1b slliw s6,t4,0x1 + 3bc04c7a: 100b7b13 andi s6,s6,256 + 3bc04c7e: 407888bb subw a7,a7,t2 + 3bc04c82: 101b039b addiw t2,s6,257 + 3bc04c86: b2764c0b lurhu s8,a2,t2,1 + 3bc04c8a: 101b0b93 addi s7,s6,257 + 3bc04c8e: 03761b8b addsl s7,a2,s7,1 + 3bc04c92: 000c039b sext.w t2,s8 + 3bc04c96: 00d4fa63 bgeu s1,a3,3bc04caa + 3bc04c9a: 0082949b slliw s1,t0,0x8 + 3bc04c9e: 9817428b lbuia t0,(a4),1,0 + 3bc04ca2: 0087979b slliw a5,a5,0x8 + 3bc04ca6: 00f2e7b3 or a5,t0,a5 + 3bc04caa: 00b4d29b srliw t0,s1,0xb + 3bc04cae: 0272893b mulw s2,t0,t2 + 3bc04cb2: 2b27ff63 bgeu a5,s2,3bc04f70 + 3bc04cb6: 407403bb subw t2,s0,t2 + 3bc04cba: 0053d39b srliw t2,t2,0x5 + 3bc04cbe: 01838c3b addw s8,t2,s8 + 3bc04cc2: 3c0c3c0b extu s8,s8,15,0 + 3bc04cc6: 100b4b13 xori s6,s6,256 + 3bc04cca: 4289 li t0,2 + 3bc04ccc: 002e939b slliw t2,t4,0x2 + 3bc04cd0: 007b73b3 and t2,s6,t2 + 3bc04cd4: 005b04bb addw s1,s6,t0 + 3bc04cd8: 018b9023 sh s8,0(s7) + 3bc04cdc: 00038c1b sext.w s8,t2 + 3bc04ce0: 007483bb addw t2,s1,t2 + 3bc04ce4: b2764b8b lurhu s7,a2,t2,1 + 3bc04ce8: 02039493 slli s1,t2,0x20 + 3bc04cec: 01f4dd13 srli s10,s1,0x1f + 3bc04cf0: 9d32 add s10,s10,a2 + 3bc04cf2: 000b839b sext.w t2,s7 + 3bc04cf6: 00d97963 bgeu s2,a3,3bc04d08 + 3bc04cfa: 9817448b lbuia s1,(a4),1,0 + 3bc04cfe: 0087979b slliw a5,a5,0x8 + 3bc04d02: 0089191b slliw s2,s2,0x8 + 3bc04d06: 8fc5 or a5,a5,s1 + 3bc04d08: 00b95c9b srliw s9,s2,0xb + 3bc04d0c: 027c84bb mulw s1,s9,t2 + 3bc04d10: 00129d9b slliw s11,t0,0x1 + 3bc04d14: 0286 slli t0,t0,0x1 + 3bc04d16: 2697f963 bgeu a5,s1,3bc04f88 + 3bc04d1a: 407403bb subw t2,s0,t2 + 3bc04d1e: 0053d39b srliw t2,t2,0x5 + 3bc04d22: 01738bbb addw s7,t2,s7 + 3bc04d26: 3c0bbb8b extu s7,s7,15,0 + 3bc04d2a: 018b4c33 xor s8,s6,s8 + 3bc04d2e: 003e939b slliw t2,t4,0x3 + 3bc04d32: 007c73b3 and t2,s8,t2 + 3bc04d36: 005c093b addw s2,s8,t0 + 3bc04d3a: 017d1023 sh s7,0(s10) + 3bc04d3e: 00038b1b sext.w s6,t2 + 3bc04d42: 007903bb addw t2,s2,t2 + 3bc04d46: b2764c8b lurhu s9,a2,t2,1 + 3bc04d4a: 02039913 slli s2,t2,0x20 + 3bc04d4e: 01f95d93 srli s11,s2,0x1f + 3bc04d52: 9db2 add s11,s11,a2 + 3bc04d54: 000c839b sext.w t2,s9 + 3bc04d58: 00d4fa63 bgeu s1,a3,3bc04d6c + 3bc04d5c: 9817490b lbuia s2,(a4),1,0 + 3bc04d60: 0087979b slliw a5,a5,0x8 + 3bc04d64: 0084949b slliw s1,s1,0x8 + 3bc04d68: 00f967b3 or a5,s2,a5 + 3bc04d6c: 00b4dd1b srliw s10,s1,0xb + 3bc04d70: 027d093b mulw s2,s10,t2 + 3bc04d74: 00129b9b slliw s7,t0,0x1 + 3bc04d78: 2327f463 bgeu a5,s2,3bc04fa0 + 3bc04d7c: 407403bb subw t2,s0,t2 + 3bc04d80: 0053d39b srliw t2,t2,0x5 + 3bc04d84: 01938cbb addw s9,t2,s9 + 3bc04d88: 3c0cbc8b extu s9,s9,15,0 + 3bc04d8c: 016c4b33 xor s6,s8,s6 + 3bc04d90: 004e929b slliw t0,t4,0x4 + 3bc04d94: 005b72b3 and t0,s6,t0 + 3bc04d98: 017b03bb addw t2,s6,s7 + 3bc04d9c: 019d9023 sh s9,0(s11) + 3bc04da0: 00028c1b sext.w s8,t0 + 3bc04da4: 005382bb addw t0,t2,t0 + 3bc04da8: b256438b lurhu t2,a2,t0,1 + 3bc04dac: 02029493 slli s1,t0,0x20 + 3bc04db0: 01f4dd13 srli s10,s1,0x1f + 3bc04db4: 9d32 add s10,s10,a2 + 3bc04db6: 0003829b sext.w t0,t2 + 3bc04dba: 00d97963 bgeu s2,a3,3bc04dcc + 3bc04dbe: 9817448b lbuia s1,(a4),1,0 + 3bc04dc2: 0087979b slliw a5,a5,0x8 + 3bc04dc6: 0089191b slliw s2,s2,0x8 + 3bc04dca: 8fc5 or a5,a5,s1 + 3bc04dcc: 00b95c9b srliw s9,s2,0xb + 3bc04dd0: 025c84bb mulw s1,s9,t0 + 3bc04dd4: 001b9b9b slliw s7,s7,0x1 + 3bc04dd8: 1e97f063 bgeu a5,s1,3bc04fb8 + 3bc04ddc: 405402bb subw t0,s0,t0 + 3bc04de0: 0052d29b srliw t0,t0,0x5 + 3bc04de4: 007283bb addw t2,t0,t2 + 3bc04de8: 3c03b38b extu t2,t2,15,0 + 3bc04dec: 018b4c33 xor s8,s6,s8 + 3bc04df0: 005e929b slliw t0,t4,0x5 + 3bc04df4: 007d1023 sh t2,0(s10) + 3bc04df8: 005c72b3 and t0,s8,t0 + 3bc04dfc: 017c03bb addw t2,s8,s7 + 3bc04e00: 00028b1b sext.w s6,t0 + 3bc04e04: 005382bb addw t0,t2,t0 + 3bc04e08: b256490b lurhu s2,a2,t0,1 + 3bc04e0c: 02029393 slli t2,t0,0x20 + 3bc04e10: 01f3dd13 srli s10,t2,0x1f + 3bc04e14: 9d32 add s10,s10,a2 + 3bc04e16: 0009029b sext.w t0,s2 + 3bc04e1a: 00d4fa63 bgeu s1,a3,3bc04e2e + 3bc04e1e: 9817438b lbuia t2,(a4),1,0 + 3bc04e22: 0087979b slliw a5,a5,0x8 + 3bc04e26: 0084949b slliw s1,s1,0x8 + 3bc04e2a: 00f3e7b3 or a5,t2,a5 + 3bc04e2e: 00b4dc9b srliw s9,s1,0xb + 3bc04e32: 025c83bb mulw t2,s9,t0 + 3bc04e36: 001b9b9b slliw s7,s7,0x1 + 3bc04e3a: 1877fa63 bgeu a5,t2,3bc04fce + 3bc04e3e: 405402bb subw t0,s0,t0 + 3bc04e42: 0052d29b srliw t0,t0,0x5 + 3bc04e46: 0122893b addw s2,t0,s2 + 3bc04e4a: 3c09390b extu s2,s2,15,0 + 3bc04e4e: 016c4b33 xor s6,s8,s6 + 3bc04e52: 006e929b slliw t0,t4,0x6 + 3bc04e56: 005b72b3 and t0,s6,t0 + 3bc04e5a: 017b04bb addw s1,s6,s7 + 3bc04e5e: 00028c1b sext.w s8,t0 + 3bc04e62: 005482bb addw t0,s1,t0 + 3bc04e66: 02029493 slli s1,t0,0x20 + 3bc04e6a: 012d1023 sh s2,0(s10) + 3bc04e6e: 01f4dd13 srli s10,s1,0x1f + 3bc04e72: b256448b lurhu s1,a2,t0,1 + 3bc04e76: 9d32 add s10,s10,a2 + 3bc04e78: 0004829b sext.w t0,s1 + 3bc04e7c: 00d3fa63 bgeu t2,a3,3bc04e90 + 3bc04e80: 9817490b lbuia s2,(a4),1,0 + 3bc04e84: 0087979b slliw a5,a5,0x8 + 3bc04e88: 0083939b slliw t2,t2,0x8 + 3bc04e8c: 00f967b3 or a5,s2,a5 + 3bc04e90: 00b3dc9b srliw s9,t2,0xb + 3bc04e94: 025c893b mulw s2,s9,t0 + 3bc04e98: 001b9b9b slliw s7,s7,0x1 + 3bc04e9c: 1527f563 bgeu a5,s2,3bc04fe6 + 3bc04ea0: 405402bb subw t0,s0,t0 + 3bc04ea4: 0052d29b srliw t0,t0,0x5 + 3bc04ea8: 009284bb addw s1,t0,s1 + 3bc04eac: 3c04b48b extu s1,s1,15,0 + 3bc04eb0: 018b4c33 xor s8,s6,s8 + 3bc04eb4: 007e929b slliw t0,t4,0x7 + 3bc04eb8: 005c72b3 and t0,s8,t0 + 3bc04ebc: 017c03bb addw t2,s8,s7 + 3bc04ec0: 009d1023 sh s1,0(s10) + 3bc04ec4: 0002849b sext.w s1,t0 + 3bc04ec8: 005382bb addw t0,t2,t0 + 3bc04ecc: b2564b0b lurhu s6,a2,t0,1 + 3bc04ed0: 02029393 slli t2,t0,0x20 + 3bc04ed4: 01f3dd93 srli s11,t2,0x1f + 3bc04ed8: 9db2 add s11,s11,a2 + 3bc04eda: 000b029b sext.w t0,s6 + 3bc04ede: 00d97a63 bgeu s2,a3,3bc04ef2 + 3bc04ee2: 9817438b lbuia t2,(a4),1,0 + 3bc04ee6: 0087979b slliw a5,a5,0x8 + 3bc04eea: 0089191b slliw s2,s2,0x8 + 3bc04eee: 00f3e7b3 or a5,t2,a5 + 3bc04ef2: 00b95d1b srliw s10,s2,0xb + 3bc04ef6: 025d03bb mulw t2,s10,t0 + 3bc04efa: 001b9c9b slliw s9,s7,0x1 + 3bc04efe: 1077f063 bgeu a5,t2,3bc04ffe + 3bc04f02: 405402bb subw t0,s0,t0 + 3bc04f06: 0052d29b srliw t0,t0,0x5 + 3bc04f0a: 01628b3b addw s6,t0,s6 + 3bc04f0e: 3c0b3b0b extu s6,s6,15,0 + 3bc04f12: 009c44b3 xor s1,s8,s1 + 3bc04f16: 008e9e9b slliw t4,t4,0x8 + 3bc04f1a: 01d4feb3 and t4,s1,t4 + 3bc04f1e: 019484bb addw s1,s1,s9 + 3bc04f22: 01d48ebb addw t4,s1,t4 + 3bc04f26: 016d9023 sh s6,0(s11) + 3bc04f2a: b3d64b0b lurhu s6,a2,t4,1 + 3bc04f2e: 020e9493 slli s1,t4,0x20 + 3bc04f32: 01f4d913 srli s2,s1,0x1f + 3bc04f36: 9932 add s2,s2,a2 + 3bc04f38: 000b0e9b sext.w t4,s6 + 3bc04f3c: 00d3f963 bgeu t2,a3,3bc04f4e + 3bc04f40: 9817460b lbuia a2,(a4),1,0 + 3bc04f44: 0087979b slliw a5,a5,0x8 + 3bc04f48: 0083939b slliw t2,t2,0x8 + 3bc04f4c: 8fd1 or a5,a5,a2 + 3bc04f4e: 00b3d29b srliw t0,t2,0xb + 3bc04f52: 03d2863b mulw a2,t0,t4 + 3bc04f56: 001c949b slliw s1,s9,0x1 + 3bc04f5a: 0ac7fe63 bgeu a5,a2,3bc05016 + 3bc04f5e: 41d40ebb subw t4,s0,t4 + 3bc04f62: 005ede9b srliw t4,t4,0x5 + 3bc04f66: 016e8ebb addw t4,t4,s6 + 3bc04f6a: 01d91023 sh t4,0(s2) + 3bc04f6e: b911 j 3bc04b82 + 3bc04f70: 0053d39b srliw t2,t2,0x5 + 3bc04f74: 407c0c3b subw s8,s8,t2 + 3bc04f78: 412787bb subw a5,a5,s2 + 3bc04f7c: 3c0c3c0b extu s8,s8,15,0 + 3bc04f80: 4124893b subw s2,s1,s2 + 3bc04f84: 428d li t0,3 + 3bc04f86: b399 j 3bc04ccc + 3bc04f88: 0053d39b srliw t2,t2,0x5 + 3bc04f8c: 407b8bbb subw s7,s7,t2 + 3bc04f90: 9f85 subw a5,a5,s1 + 3bc04f92: 3c0bbb8b extu s7,s7,15,0 + 3bc04f96: 001d829b addiw t0,s11,1 + 3bc04f9a: 409904bb subw s1,s2,s1 + 3bc04f9e: bb41 j 3bc04d2e + 3bc04fa0: 0053d39b srliw t2,t2,0x5 + 3bc04fa4: 407c8cbb subw s9,s9,t2 + 3bc04fa8: 412787bb subw a5,a5,s2 + 3bc04fac: 3c0cbc8b extu s9,s9,15,0 + 3bc04fb0: 2b85 addiw s7,s7,1 + 3bc04fb2: 4124893b subw s2,s1,s2 + 3bc04fb6: bbe9 j 3bc04d90 + 3bc04fb8: 0052d29b srliw t0,t0,0x5 + 3bc04fbc: 405383bb subw t2,t2,t0 + 3bc04fc0: 9f85 subw a5,a5,s1 + 3bc04fc2: 3c03b38b extu t2,t2,15,0 + 3bc04fc6: 2b85 addiw s7,s7,1 + 3bc04fc8: 409904bb subw s1,s2,s1 + 3bc04fcc: b515 j 3bc04df0 + 3bc04fce: 0052d29b srliw t0,t0,0x5 + 3bc04fd2: 4059093b subw s2,s2,t0 + 3bc04fd6: 407787bb subw a5,a5,t2 + 3bc04fda: 3c09390b extu s2,s2,15,0 + 3bc04fde: 2b85 addiw s7,s7,1 + 3bc04fe0: 407483bb subw t2,s1,t2 + 3bc04fe4: b5bd j 3bc04e52 + 3bc04fe6: 0052d29b srliw t0,t0,0x5 + 3bc04fea: 405484bb subw s1,s1,t0 + 3bc04fee: 412787bb subw a5,a5,s2 + 3bc04ff2: 3c04b48b extu s1,s1,15,0 + 3bc04ff6: 2b85 addiw s7,s7,1 + 3bc04ff8: 4123893b subw s2,t2,s2 + 3bc04ffc: bd65 j 3bc04eb4 + 3bc04ffe: 0052d29b srliw t0,t0,0x5 + 3bc05002: 405b0b3b subw s6,s6,t0 + 3bc05006: 407787bb subw a5,a5,t2 + 3bc0500a: 3c0b3b0b extu s6,s6,15,0 + 3bc0500e: 2c85 addiw s9,s9,1 + 3bc05010: 407903bb subw t2,s2,t2 + 3bc05014: b709 j 3bc04f16 + 3bc05016: 005ede9b srliw t4,t4,0x5 + 3bc0501a: 41db0ebb subw t4,s6,t4 + 3bc0501e: 9f91 subw a5,a5,a2 + 3bc05020: 01d91023 sh t4,0(s2) + 3bc05024: 2485 addiw s1,s1,1 + 3bc05026: 40c3863b subw a2,t2,a2 + 3bc0502a: bea1 j 3bc04b82 + 3bc0502c: 0053d39b srliw t2,t2,0x5 + 3bc05030: 407b03bb subw t2,s6,t2 + 3bc05034: 2175d38b srh t2,a1,s7,0 + 3bc05038: 7c08bb8b extu s7,a7,31,0 + 3bc0503c: 0bc1 addi s7,s7,16 + 3bc0503e: a375cc0b lrhu s8,a1,s7,1 + 3bc05042: 409604bb subw s1,a2,s1 + 3bc05046: 405787bb subw a5,a5,t0 + 3bc0504a: 001b9b13 slli s6,s7,0x1 + 3bc0504e: 000c039b sext.w t2,s8 + 3bc05052: 00d4fa63 bgeu s1,a3,3bc05066 + 3bc05056: 0087929b slliw t0,a5,0x8 + 3bc0505a: 9817478b lbuia a5,(a4),1,0 + 3bc0505e: 0084949b slliw s1,s1,0x8 + 3bc05062: 0057e7b3 or a5,a5,t0 + 3bc05066: 00b4d29b srliw t0,s1,0xb + 3bc0506a: 0272863b mulw a2,t0,t2 + 3bc0506e: 36c7ff63 bgeu a5,a2,3bc053ec + 3bc05072: 407403bb subw t2,s0,t2 + 3bc05076: 0053d39b srliw t2,t2,0x5 + 3bc0507a: 62c6 ld t0,80(sp) + 3bc0507c: 018383bb addw t2,t2,s8 + 3bc05080: 2375d38b srh t2,a1,s7,1 + 3bc05084: 28b1 addiw a7,a7,12 + 3bc05086: 8b7e mv s6,t6 + 3bc05088: 0002d383 lhu t2,0(t0) + 3bc0508c: 00038f9b sext.w t6,t2 + 3bc05090: 00d67a63 bgeu a2,a3,3bc050a4 + 3bc05094: 9817430b lbuia t1,(a4),1,0 + 3bc05098: 0087979b slliw a5,a5,0x8 + 3bc0509c: 0086161b slliw a2,a2,0x8 + 3bc050a0: 00f367b3 or a5,t1,a5 + 3bc050a4: 00b6531b srliw t1,a2,0xb + 3bc050a8: 03f304bb mulw s1,t1,t6 + 3bc050ac: 8326 mv t1,s1 + 3bc050ae: 5297f663 bgeu a5,s1,3bc055da + 3bc050b2: 41f40fbb subw t6,s0,t6 + 3bc050b6: 005fdf9b srliw t6,t6,0x5 + 3bc050ba: 7c0ebe8b extu t4,t4,31,0 + 3bc050be: 007f8fbb addw t6,t6,t2 + 3bc050c2: 01f29023 sh t6,0(t0) + 3bc050c6: 03d2928b addsl t0,t0,t4,1 + 3bc050ca: 0022de83 lhu t4,2(t0) + 3bc050ce: 000e861b sext.w a2,t4 + 3bc050d2: 00d4fa63 bgeu s1,a3,3bc050e6 + 3bc050d6: 9817430b lbuia t1,(a4),1,0 + 3bc050da: 0087979b slliw a5,a5,0x8 + 3bc050de: 0084949b slliw s1,s1,0x8 + 3bc050e2: 00f367b3 or a5,t1,a5 + 3bc050e6: 00b4d31b srliw t1,s1,0xb + 3bc050ea: 02c30fbb mulw t6,t1,a2 + 3bc050ee: 4bf7f263 bgeu a5,t6,3bc05592 + 3bc050f2: 40c4063b subw a2,s0,a2 + 3bc050f6: 0056561b srliw a2,a2,0x5 + 3bc050fa: 01d60ebb addw t4,a2,t4 + 3bc050fe: 3c0ebe8b extu t4,t4,15,0 + 3bc05102: 4309 li t1,2 + 3bc05104: 01d29123 sh t4,2(t0) + 3bc05108: b262c38b lurhu t2,t0,t1,1 + 3bc0510c: 7c03390b extu s2,t1,31,0 + 3bc05110: 0003861b sext.w a2,t2 + 3bc05114: 00dffa63 bgeu t6,a3,3bc05128 + 3bc05118: 98174e8b lbuia t4,(a4),1,0 + 3bc0511c: 0087979b slliw a5,a5,0x8 + 3bc05120: 008f9f9b slliw t6,t6,0x8 + 3bc05124: 00fee7b3 or a5,t4,a5 + 3bc05128: 00bfd49b srliw s1,t6,0xb + 3bc0512c: 02c48ebb mulw t4,s1,a2 + 3bc05130: 00131b9b slliw s7,t1,0x1 + 3bc05134: 0306 slli t1,t1,0x1 + 3bc05136: 47d7fa63 bgeu a5,t4,3bc055aa + 3bc0513a: 40c4063b subw a2,s0,a2 + 3bc0513e: 0056561b srliw a2,a2,0x5 + 3bc05142: 007603bb addw t2,a2,t2 + 3bc05146: 3c03b38b extu t2,t2,15,0 + 3bc0514a: 2322d38b srh t2,t0,s2,1 + 3bc0514e: b262c38b lurhu t2,t0,t1,1 + 3bc05152: 7c033b8b extu s7,t1,31,0 + 3bc05156: 00038f9b sext.w t6,t2 + 3bc0515a: 00def963 bgeu t4,a3,3bc0516c + 3bc0515e: 9817460b lbuia a2,(a4),1,0 + 3bc05162: 0087979b slliw a5,a5,0x8 + 3bc05166: 008e9e9b slliw t4,t4,0x8 + 3bc0516a: 8fd1 or a5,a5,a2 + 3bc0516c: 00bed91b srliw s2,t4,0xb + 3bc05170: 03f9063b mulw a2,s2,t6 + 3bc05174: 0013131b slliw t1,t1,0x1 + 3bc05178: 44c7f663 bgeu a5,a2,3bc055c4 + 3bc0517c: 41f40fbb subw t6,s0,t6 + 3bc05180: 005fdf9b srliw t6,t6,0x5 + 3bc05184: 007f83bb addw t2,t6,t2 + 3bc05188: 3c03b38b extu t2,t2,15,0 + 3bc0518c: 2372d38b srh t2,t0,s7,1 + 3bc05190: 3361 addiw t1,t1,-8 + 3bc05192: 44ad li s1,11 + 3bc05194: 1114f5e3 bgeu s1,a7,3bc05a9e + 3bc05198: 448d li s1,3 + 3bc0519a: 8f9a mv t6,t1 + 3bc0519c: 0064f363 bgeu s1,t1,3bc051a2 + 3bc051a0: 4f8d li t6,3 + 3bc051a2: 006f9f9b slliw t6,t6,0x6 + 3bc051a6: 040f8f9b addiw t6,t6,64 + 3bc051aa: 7c0fbf8b extu t6,t6,31,0 + 3bc051ae: 03f59f8b addsl t6,a1,t6,1 + 3bc051b2: 002fd383 lhu t2,2(t6) + 3bc051b6: 00038e9b sext.w t4,t2 + 3bc051ba: 00d67a63 bgeu a2,a3,3bc051ce + 3bc051be: 9817428b lbuia t0,(a4),1,0 + 3bc051c2: 0087979b slliw a5,a5,0x8 + 3bc051c6: 0086161b slliw a2,a2,0x8 + 3bc051ca: 00f2e7b3 or a5,t0,a5 + 3bc051ce: 00b6549b srliw s1,a2,0xb + 3bc051d2: 03d482bb mulw t0,s1,t4 + 3bc051d6: 5e57f763 bgeu a5,t0,3bc057c4 + 3bc051da: 41d40ebb subw t4,s0,t4 + 3bc051de: 005ede9b srliw t4,t4,0x5 + 3bc051e2: 007e83bb addw t2,t4,t2 + 3bc051e6: 3c03b38b extu t2,t2,15,0 + 3bc051ea: 4609 li a2,2 + 3bc051ec: 007f9123 sh t2,2(t6) + 3bc051f0: b2cfc48b lurhu s1,t6,a2,1 + 3bc051f4: 7c063b8b extu s7,a2,31,0 + 3bc051f8: 00048e9b sext.w t4,s1 + 3bc051fc: 00d2fa63 bgeu t0,a3,3bc05210 + 3bc05200: 9817438b lbuia t2,(a4),1,0 + 3bc05204: 0087979b slliw a5,a5,0x8 + 3bc05208: 0082929b slliw t0,t0,0x8 + 3bc0520c: 00f3e7b3 or a5,t2,a5 + 3bc05210: 00b2d91b srliw s2,t0,0xb + 3bc05214: 03d903bb mulw t2,s2,t4 + 3bc05218: 00161c1b slliw s8,a2,0x1 + 3bc0521c: 0606 slli a2,a2,0x1 + 3bc0521e: 5a77ff63 bgeu a5,t2,3bc057dc + 3bc05222: 41d40ebb subw t4,s0,t4 + 3bc05226: 005ede9b srliw t4,t4,0x5 + 3bc0522a: 009e84bb addw s1,t4,s1 + 3bc0522e: 3c04b48b extu s1,s1,15,0 + 3bc05232: 237fd48b srh s1,t6,s7,1 + 3bc05236: b2cfc48b lurhu s1,t6,a2,1 + 3bc0523a: 7c063c0b extu s8,a2,31,0 + 3bc0523e: 00048e9b sext.w t4,s1 + 3bc05242: 00d3fa63 bgeu t2,a3,3bc05256 + 3bc05246: 9817428b lbuia t0,(a4),1,0 + 3bc0524a: 0087979b slliw a5,a5,0x8 + 3bc0524e: 0083939b slliw t2,t2,0x8 + 3bc05252: 00f2e7b3 or a5,t0,a5 + 3bc05256: 00b3db9b srliw s7,t2,0xb + 3bc0525a: 03db82bb mulw t0,s7,t4 + 3bc0525e: 0016191b slliw s2,a2,0x1 + 3bc05262: 5857fa63 bgeu a5,t0,3bc057f6 + 3bc05266: 41d40ebb subw t4,s0,t4 + 3bc0526a: 005ede9b srliw t4,t4,0x5 + 3bc0526e: 009e84bb addw s1,t4,s1 + 3bc05272: 3c04b48b extu s1,s1,15,0 + 3bc05276: 238fd48b srh s1,t6,s8,1 + 3bc0527a: b32fc38b lurhu t2,t6,s2,1 + 3bc0527e: 7c093c0b extu s8,s2,31,0 + 3bc05282: 0003861b sext.w a2,t2 + 3bc05286: 00d2fa63 bgeu t0,a3,3bc0529a + 3bc0528a: 98174e8b lbuia t4,(a4),1,0 + 3bc0528e: 0087979b slliw a5,a5,0x8 + 3bc05292: 0082929b slliw t0,t0,0x8 + 3bc05296: 00fee7b3 or a5,t4,a5 + 3bc0529a: 00b2db9b srliw s7,t0,0xb + 3bc0529e: 02cb8ebb mulw t4,s7,a2 + 3bc052a2: 0019149b slliw s1,s2,0x1 + 3bc052a6: 57d7f463 bgeu a5,t4,3bc0580e + 3bc052aa: 40c4063b subw a2,s0,a2 + 3bc052ae: 0056561b srliw a2,a2,0x5 + 3bc052b2: 007603bb addw t2,a2,t2 + 3bc052b6: 3c03b38b extu t2,t2,15,0 + 3bc052ba: 238fd38b srh t2,t6,s8,1 + 3bc052be: b29fc28b lurhu t0,t6,s1,1 + 3bc052c2: 7c04bc0b extu s8,s1,31,0 + 3bc052c6: 0002861b sext.w a2,t0 + 3bc052ca: 00defa63 bgeu t4,a3,3bc052de + 3bc052ce: 9817438b lbuia t2,(a4),1,0 + 3bc052d2: 0087979b slliw a5,a5,0x8 + 3bc052d6: 008e9e9b slliw t4,t4,0x8 + 3bc052da: 00f3e7b3 or a5,t2,a5 + 3bc052de: 00bedb9b srliw s7,t4,0xb + 3bc052e2: 02cb83bb mulw t2,s7,a2 + 3bc052e6: 0014991b slliw s2,s1,0x1 + 3bc052ea: 5277fe63 bgeu a5,t2,3bc05826 + 3bc052ee: 40c4063b subw a2,s0,a2 + 3bc052f2: 0056561b srliw a2,a2,0x5 + 3bc052f6: 005602bb addw t0,a2,t0 + 3bc052fa: 3c02b28b extu t0,t0,15,0 + 3bc052fe: 238fd28b srh t0,t6,s8,1 + 3bc05302: b32fc48b lurhu s1,t6,s2,1 + 3bc05306: 7c093c0b extu s8,s2,31,0 + 3bc0530a: 0004829b sext.w t0,s1 + 3bc0530e: 00d3f963 bgeu t2,a3,3bc05320 + 3bc05312: 9817460b lbuia a2,(a4),1,0 + 3bc05316: 0087979b slliw a5,a5,0x8 + 3bc0531a: 0083939b slliw t2,t2,0x8 + 3bc0531e: 8fd1 or a5,a5,a2 + 3bc05320: 00b3db9b srliw s7,t2,0xb + 3bc05324: 025b863b mulw a2,s7,t0 + 3bc05328: 00191e9b slliw t4,s2,0x1 + 3bc0532c: 50c7f963 bgeu a5,a2,3bc0583e + 3bc05330: 405402bb subw t0,s0,t0 + 3bc05334: 0052d29b srliw t0,t0,0x5 + 3bc05338: 009284bb addw s1,t0,s1 + 3bc0533c: 3c04b48b extu s1,s1,15,0 + 3bc05340: fc0e8e9b addiw t4,t4,-64 + 3bc05344: 238fd48b srh s1,t6,s8,1 + 3bc05348: 000e839b sext.w t2,t4 + 3bc0534c: 448d li s1,3 + 3bc0534e: 0874f063 bgeu s1,t2,3bc053ce + 3bc05352: 001eff93 andi t6,t4,1 + 3bc05356: 44b5 li s1,13 + 3bc05358: 001ed29b srliw t0,t4,0x1 + 3bc0535c: 002fef93 ori t6,t6,2 + 3bc05360: 5074e963 bltu s1,t2,3bc05872 + 3bc05364: 32fd addiw t0,t0,-1 + 3bc05366: 005f9fbb sllw t6,t6,t0 + 3bc0536a: 2f85 addiw t6,t6,1 + 3bc0536c: 4c05 li s8,1 + 3bc0536e: 020f9493 slli s1,t6,0x20 + 3bc05372: 01f4db93 srli s7,s1,0x1f + 3bc05376: 74fd lui s1,0xfffff + 3bc05378: 30048493 addi s1,s1,768 # fffffffffffff300 <__BL2_END__+0xffffffffc43ebef0> + 3bc0537c: 9ba6 add s7,s7,s1 + 3bc0537e: a175c48b lrhu s1,a1,s7,0 + 3bc05382: 0004839b sext.w t2,s1 + 3bc05386: 00d67a63 bgeu a2,a3,3bc0539a + 3bc0538a: 98174e8b lbuia t4,(a4),1,0 + 3bc0538e: 0087979b slliw a5,a5,0x8 + 3bc05392: 0086161b slliw a2,a2,0x8 + 3bc05396: 00fee7b3 or a5,t4,a5 + 3bc0539a: 00b6591b srliw s2,a2,0xb + 3bc0539e: 02790d3b mulw s10,s2,t2 + 3bc053a2: 001c1e9b slliw t4,s8,0x1 + 3bc053a6: 4ba7f963 bgeu a5,s10,3bc05858 + 3bc053aa: 407403bb subw t2,s0,t2 + 3bc053ae: 0053d39b srliw t2,t2,0x5 + 3bc053b2: 009384bb addw s1,t2,s1 + 3bc053b6: 3c04b48b extu s1,s1,15,0 + 3bc053ba: 018f8fbb addw t6,t6,s8 + 3bc053be: 866a mv a2,s10 + 3bc053c0: 2175d48b srh s1,a1,s7,0 + 3bc053c4: 32fd addiw t0,t0,-1 + 3bc053c6: 48029763 bnez t0,3bc05854 + 3bc053ca: 41df83bb subw t2,t6,t4 + 3bc053ce: 44c9 li s1,18 + 3bc053d0: 00138f9b addiw t6,t2,1 + 3bc053d4: 6d14f363 bgeu s1,a7,3bc05a9a + 3bc053d8: 48a9 li a7,10 + 3bc053da: 6ee2 ld t4,24(sp) + 3bc053dc: 41de1e8b mveqz t4,t3,t4 + 3bc053e0: 73d3e063 bltu t2,t4,3bc05b00 + 3bc053e4: 03053423 sd a6,40(a0) + 3bc053e8: c24ff06f j 3bc0480c + 3bc053ec: 0053d39b srliw t2,t2,0x5 + 3bc053f0: 407c03bb subw t2,s8,t2 + 3bc053f4: 2375d38b srh t2,a1,s7,1 + 3bc053f8: 018b0c13 addi s8,s6,24 + 3bc053fc: a185cb8b lrhu s7,a1,s8,0 + 3bc05400: 40c48cbb subw s9,s1,a2 + 3bc05404: 9f91 subw a5,a5,a2 + 3bc05406: 000b839b sext.w t2,s7 + 3bc0540a: 00dcfa63 bgeu s9,a3,3bc0541e + 3bc0540e: 0087929b slliw t0,a5,0x8 + 3bc05412: 9817478b lbuia a5,(a4),1,0 + 3bc05416: 008c9c9b slliw s9,s9,0x8 + 3bc0541a: 0057e7b3 or a5,a5,t0 + 3bc0541e: 00bcd61b srliw a2,s9,0xb + 3bc05422: 027602bb mulw t0,a2,t2 + 3bc05426: 8616 mv a2,t0 + 3bc05428: 0a57f463 bgeu a5,t0,3bc054d0 + 3bc0542c: 407403bb subw t2,s0,t2 + 3bc05430: 0053d39b srliw t2,t2,0x5 + 3bc05434: 74fd lui s1,0xfffff + 3bc05436: 017383bb addw t2,t2,s7 + 3bc0543a: 40048493 addi s1,s1,1024 # fffffffffffff400 <__BL2_END__+0xffffffffc43ebff0> + 3bc0543e: 2185d38b srh t2,a1,s8,0 + 3bc05442: 9926 add s2,s2,s1 + 3bc05444: a125c48b lrhu s1,a1,s2,0 + 3bc05448: 0004839b sext.w t2,s1 + 3bc0544c: 00d2f963 bgeu t0,a3,3bc0545e + 3bc05450: 9817460b lbuia a2,(a4),1,0 + 3bc05454: 0087979b slliw a5,a5,0x8 + 3bc05458: 0082929b slliw t0,t0,0x8 + 3bc0545c: 8fd1 or a5,a5,a2 + 3bc0545e: 00b2db1b srliw s6,t0,0xb + 3bc05462: 027b063b mulw a2,s6,t2 + 3bc05466: 8b32 mv s6,a2 + 3bc05468: 02c7ff63 bgeu a5,a2,3bc054a6 + 3bc0546c: 407403bb subw t2,s0,t2 + 3bc05470: 0053d39b srliw t2,t2,0x5 + 3bc05474: 009383bb addw t2,t2,s1 + 3bc05478: 2125d38b srh t2,a1,s2,0 + 3bc0547c: 7c0fb38b extu t2,t6,31,0 + 3bc05480: 40780eb3 sub t4,a6,t2 + 3bc05484: 82d6 mv t0,s5 + 3bc05486: 00786363 bltu a6,t2,3bc0548c + 3bc0548a: 4281 li t0,0 + 3bc0548c: 9ed2 add t4,t4,s4 + 3bc0548e: 805ece8b lrbu t4,t4,t0,0 + 3bc05492: 2e05 addiw t3,t3,1 + 3bc05494: 010a5e8b srb t4,s4,a6,0 + 3bc05498: 4e99 li t4,6 + 3bc0549a: 0805 addi a6,a6,1 + 3bc0549c: 691ef963 bgeu t4,a7,3bc05b2e + 3bc054a0: 48ad li a7,11 + 3bc054a2: ee6ff06f j 3bc04b88 + 3bc054a6: 0053d39b srliw t2,t2,0x5 + 3bc054aa: 837a mv t1,t5 + 3bc054ac: 407483bb subw t2,s1,t2 + 3bc054b0: 8f7e mv t5,t6 + 3bc054b2: 40c2863b subw a2,t0,a2 + 3bc054b6: 416787bb subw a5,a5,s6 + 3bc054ba: 2125d38b srh t2,a1,s2,0 + 3bc054be: 8f9a mv t6,t1 + 3bc054c0: 4319 li t1,6 + 3bc054c2: 0d137663 bgeu t1,a7,3bc0558e + 3bc054c6: 48ad li a7,11 + 3bc054c8: 8b7a mv s6,t5 + 3bc054ca: 62a6 ld t0,72(sp) + 3bc054cc: 8f7e mv t5,t6 + 3bc054ce: be6d j 3bc05088 + 3bc054d0: 0053d39b srliw t2,t2,0x5 + 3bc054d4: 407b83bb subw t2,s7,t2 + 3bc054d8: 2185d38b srh t2,a1,s8,0 + 3bc054dc: 030b0493 addi s1,s6,48 + 3bc054e0: a095c38b lrhu t2,a1,s1,0 + 3bc054e4: 405c82bb subw t0,s9,t0 + 3bc054e8: 9f91 subw a5,a5,a2 + 3bc054ea: 0003831b sext.w t1,t2 + 3bc054ee: 00d2f963 bgeu t0,a3,3bc05500 + 3bc054f2: 0087961b slliw a2,a5,0x8 + 3bc054f6: 9817478b lbuia a5,(a4),1,0 + 3bc054fa: 0082929b slliw t0,t0,0x8 + 3bc054fe: 8fd1 or a5,a5,a2 + 3bc05500: 00b2d91b srliw s2,t0,0xb + 3bc05504: 0269063b mulw a2,s2,t1 + 3bc05508: 00c7fb63 bgeu a5,a2,3bc0551e + 3bc0550c: 4064033b subw t1,s0,t1 + 3bc05510: 0053531b srliw t1,t1,0x5 + 3bc05514: 0073033b addw t1,t1,t2 + 3bc05518: 2095d30b srh t1,a1,s1,0 + 3bc0551c: b755 j 3bc054c0 + 3bc0551e: 0053531b srliw t1,t1,0x5 + 3bc05522: 4063833b subw t1,t2,t1 + 3bc05526: 2095d30b srh t1,a1,s1,0 + 3bc0552a: 048b0b13 addi s6,s6,72 + 3bc0552e: a165c38b lrhu t2,a1,s6,0 + 3bc05532: 40c28bbb subw s7,t0,a2 + 3bc05536: 9f91 subw a5,a5,a2 + 3bc05538: 0003831b sext.w t1,t2 + 3bc0553c: 00dbfa63 bgeu s7,a3,3bc05550 + 3bc05540: 0087991b slliw s2,a5,0x8 + 3bc05544: 9817478b lbuia a5,(a4),1,0 + 3bc05548: 008b9b9b slliw s7,s7,0x8 + 3bc0554c: 0127e7b3 or a5,a5,s2 + 3bc05550: 00bbd29b srliw t0,s7,0xb + 3bc05554: 0262863b mulw a2,t0,t1 + 3bc05558: 00c7fe63 bgeu a5,a2,3bc05574 + 3bc0555c: 4064033b subw t1,s0,t1 + 3bc05560: 0053531b srliw t1,t1,0x5 + 3bc05564: 0073033b addw t1,t1,t2 + 3bc05568: 2165d30b srh t1,a1,s6,0 + 3bc0556c: 837a mv t1,t5 + 3bc0556e: 8f4e mv t5,s3 + 3bc05570: 899a mv s3,t1 + 3bc05572: b7b9 j 3bc054c0 + 3bc05574: 0053531b srliw t1,t1,0x5 + 3bc05578: 4063833b subw t1,t2,t1 + 3bc0557c: 9f91 subw a5,a5,a2 + 3bc0557e: 2165d30b srh t1,a1,s6,0 + 3bc05582: 40cb863b subw a2,s7,a2 + 3bc05586: 837a mv t1,t5 + 3bc05588: 7f02 ld t5,32(sp) + 3bc0558a: f04e sd s3,32(sp) + 3bc0558c: b7d5 j 3bc05570 + 3bc0558e: 48a1 li a7,8 + 3bc05590: bf25 j 3bc054c8 + 3bc05592: 0056561b srliw a2,a2,0x5 + 3bc05596: 40ce8ebb subw t4,t4,a2 + 3bc0559a: 41f787bb subw a5,a5,t6 + 3bc0559e: 3c0ebe8b extu t4,t4,15,0 + 3bc055a2: 41f48fbb subw t6,s1,t6 + 3bc055a6: 430d li t1,3 + 3bc055a8: beb1 j 3bc05104 + 3bc055aa: 0056561b srliw a2,a2,0x5 + 3bc055ae: 40c383bb subw t2,t2,a2 + 3bc055b2: 41d787bb subw a5,a5,t4 + 3bc055b6: 3c03b38b extu t2,t2,15,0 + 3bc055ba: 001b831b addiw t1,s7,1 + 3bc055be: 41df8ebb subw t4,t6,t4 + 3bc055c2: b661 j 3bc0514a + 3bc055c4: 005fdf9b srliw t6,t6,0x5 + 3bc055c8: 41f383bb subw t2,t2,t6 + 3bc055cc: 9f91 subw a5,a5,a2 + 3bc055ce: 3c03b38b extu t2,t2,15,0 + 3bc055d2: 2305 addiw t1,t1,1 + 3bc055d4: 40ce863b subw a2,t4,a2 + 3bc055d8: be55 j 3bc0518c + 3bc055da: 005fdf9b srliw t6,t6,0x5 + 3bc055de: 41f38fbb subw t6,t2,t6 + 3bc055e2: 0102d383 lhu t2,16(t0) + 3bc055e6: 01f29023 sh t6,0(t0) + 3bc055ea: 9e05 subw a2,a2,s1 + 3bc055ec: 406787bb subw a5,a5,t1 + 3bc055f0: 00038f9b sext.w t6,t2 + 3bc055f4: 00d67a63 bgeu a2,a3,3bc05608 + 3bc055f8: 0087931b slliw t1,a5,0x8 + 3bc055fc: 9817478b lbuia a5,(a4),1,0 + 3bc05600: 0086161b slliw a2,a2,0x8 + 3bc05604: 0067e7b3 or a5,a5,t1 + 3bc05608: 00b6531b srliw t1,a2,0xb + 3bc0560c: 03f304bb mulw s1,t1,t6 + 3bc05610: 1297f563 bgeu a5,s1,3bc0573a + 3bc05614: 41f40fbb subw t6,s0,t6 + 3bc05618: 005fdf9b srliw t6,t6,0x5 + 3bc0561c: 7c0ebe8b extu t4,t4,31,0 + 3bc05620: 007f8fbb addw t6,t6,t2 + 3bc05624: 0ea1 addi t4,t4,8 + 3bc05626: 01f29823 sh t6,16(t0) + 3bc0562a: 03d2928b addsl t0,t0,t4,1 + 3bc0562e: 0022df83 lhu t6,2(t0) + 3bc05632: 000f861b sext.w a2,t6 + 3bc05636: 00d4fa63 bgeu s1,a3,3bc0564a + 3bc0563a: 9817430b lbuia t1,(a4),1,0 + 3bc0563e: 0087979b slliw a5,a5,0x8 + 3bc05642: 0084949b slliw s1,s1,0x8 + 3bc05646: 00f367b3 or a5,t1,a5 + 3bc0564a: 00b4d31b srliw t1,s1,0xb + 3bc0564e: 02c30ebb mulw t4,t1,a2 + 3bc05652: 0bd7f063 bgeu a5,t4,3bc056f2 + 3bc05656: 40c4063b subw a2,s0,a2 + 3bc0565a: 0056561b srliw a2,a2,0x5 + 3bc0565e: 01f60fbb addw t6,a2,t6 + 3bc05662: 3c0fbf8b extu t6,t6,15,0 + 3bc05666: 4309 li t1,2 + 3bc05668: 01f29123 sh t6,2(t0) + 3bc0566c: b262c38b lurhu t2,t0,t1,1 + 3bc05670: 7c03390b extu s2,t1,31,0 + 3bc05674: 0003861b sext.w a2,t2 + 3bc05678: 00defa63 bgeu t4,a3,3bc0568c + 3bc0567c: 98174f8b lbuia t6,(a4),1,0 + 3bc05680: 0087979b slliw a5,a5,0x8 + 3bc05684: 008e9e9b slliw t4,t4,0x8 + 3bc05688: 00ffe7b3 or a5,t6,a5 + 3bc0568c: 00bed49b srliw s1,t4,0xb + 3bc05690: 02c48fbb mulw t6,s1,a2 + 3bc05694: 00131b9b slliw s7,t1,0x1 + 3bc05698: 0306 slli t1,t1,0x1 + 3bc0569a: 07f7f863 bgeu a5,t6,3bc0570a + 3bc0569e: 40c4063b subw a2,s0,a2 + 3bc056a2: 0056561b srliw a2,a2,0x5 + 3bc056a6: 007603bb addw t2,a2,t2 + 3bc056aa: 3c03b38b extu t2,t2,15,0 + 3bc056ae: 2322d38b srh t2,t0,s2,1 + 3bc056b2: b262c48b lurhu s1,t0,t1,1 + 3bc056b6: 7c03390b extu s2,t1,31,0 + 3bc056ba: 00048e9b sext.w t4,s1 + 3bc056be: 00dff963 bgeu t6,a3,3bc056d0 + 3bc056c2: 9817460b lbuia a2,(a4),1,0 + 3bc056c6: 0087979b slliw a5,a5,0x8 + 3bc056ca: 008f9f9b slliw t6,t6,0x8 + 3bc056ce: 8fd1 or a5,a5,a2 + 3bc056d0: 00bfd39b srliw t2,t6,0xb + 3bc056d4: 03d3863b mulw a2,t2,t4 + 3bc056d8: 0013131b slliw t1,t1,0x1 + 3bc056dc: 04c7f463 bgeu a5,a2,3bc05724 + 3bc056e0: 41d40ebb subw t4,s0,t4 + 3bc056e4: 005ede9b srliw t4,t4,0x5 + 3bc056e8: 009e8ebb addw t4,t4,s1 + 3bc056ec: 2322de8b srh t4,t0,s2,1 + 3bc056f0: b44d j 3bc05192 + 3bc056f2: 0056561b srliw a2,a2,0x5 + 3bc056f6: 40cf8fbb subw t6,t6,a2 + 3bc056fa: 41d787bb subw a5,a5,t4 + 3bc056fe: 3c0fbf8b extu t6,t6,15,0 + 3bc05702: 41d48ebb subw t4,s1,t4 + 3bc05706: 430d li t1,3 + 3bc05708: b785 j 3bc05668 + 3bc0570a: 0056561b srliw a2,a2,0x5 + 3bc0570e: 40c383bb subw t2,t2,a2 + 3bc05712: 41f787bb subw a5,a5,t6 + 3bc05716: 3c03b38b extu t2,t2,15,0 + 3bc0571a: 001b831b addiw t1,s7,1 + 3bc0571e: 41fe8fbb subw t6,t4,t6 + 3bc05722: b771 j 3bc056ae + 3bc05724: 005ede9b srliw t4,t4,0x5 + 3bc05728: 41d48ebb subw t4,s1,t4 + 3bc0572c: 9f91 subw a5,a5,a2 + 3bc0572e: 2322de8b srh t4,t0,s2,1 + 3bc05732: 2305 addiw t1,t1,1 + 3bc05734: 40cf863b subw a2,t6,a2 + 3bc05738: bca9 j 3bc05192 + 3bc0573a: 005fdf9b srliw t6,t6,0x5 + 3bc0573e: 41f38fbb subw t6,t2,t6 + 3bc05742: 9e05 subw a2,a2,s1 + 3bc05744: 9f85 subw a5,a5,s1 + 3bc05746: 01f29823 sh t6,16(t0) + 3bc0574a: 4305 li t1,1 + 3bc0574c: 0ff00b93 li s7,255 + 3bc05750: 02031493 slli s1,t1,0x20 + 3bc05754: 01f4de93 srli t4,s1,0x1f + 3bc05758: 200e8e93 addi t4,t4,512 + 3bc0575c: a1d2cf8b lrhu t6,t0,t4,0 + 3bc05760: 01d28c33 add s8,t0,t4 + 3bc05764: 000f8e9b sext.w t4,t6 + 3bc05768: 00d67a63 bgeu a2,a3,3bc0577c + 3bc0576c: 9817438b lbuia t2,(a4),1,0 + 3bc05770: 0087979b slliw a5,a5,0x8 + 3bc05774: 0086161b slliw a2,a2,0x8 + 3bc05778: 00f3e7b3 or a5,t2,a5 + 3bc0577c: 00b6539b srliw t2,a2,0xb + 3bc05780: 03d3893b mulw s2,t2,t4 + 3bc05784: 0013131b slliw t1,t1,0x1 + 3bc05788: 0327f263 bgeu a5,s2,3bc057ac + 3bc0578c: 41d40ebb subw t4,s0,t4 + 3bc05790: 005ede9b srliw t4,t4,0x5 + 3bc05794: 01fe8fbb addw t6,t4,t6 + 3bc05798: 3c0fbf8b extu t6,t6,15,0 + 3bc0579c: 864a mv a2,s2 + 3bc0579e: 01fc1023 sh t6,0(s8) + 3bc057a2: fa6bf7e3 bgeu s7,t1,3bc05750 + 3bc057a6: f103031b addiw t1,t1,-240 + 3bc057aa: b2e5 j 3bc05192 + 3bc057ac: 005ede9b srliw t4,t4,0x5 + 3bc057b0: 41df8fbb subw t6,t6,t4 + 3bc057b4: 4126063b subw a2,a2,s2 + 3bc057b8: 412787bb subw a5,a5,s2 + 3bc057bc: 3c0fbf8b extu t6,t6,15,0 + 3bc057c0: 2305 addiw t1,t1,1 + 3bc057c2: bff1 j 3bc0579e + 3bc057c4: 005ede9b srliw t4,t4,0x5 + 3bc057c8: 41d383bb subw t2,t2,t4 + 3bc057cc: 405787bb subw a5,a5,t0 + 3bc057d0: 3c03b38b extu t2,t2,15,0 + 3bc057d4: 405602bb subw t0,a2,t0 + 3bc057d8: 460d li a2,3 + 3bc057da: bc09 j 3bc051ec + 3bc057dc: 005ede9b srliw t4,t4,0x5 + 3bc057e0: 41d484bb subw s1,s1,t4 + 3bc057e4: 407787bb subw a5,a5,t2 + 3bc057e8: 3c04b48b extu s1,s1,15,0 + 3bc057ec: 001c061b addiw a2,s8,1 + 3bc057f0: 407283bb subw t2,t0,t2 + 3bc057f4: bc3d j 3bc05232 + 3bc057f6: 005ede9b srliw t4,t4,0x5 + 3bc057fa: 41d484bb subw s1,s1,t4 + 3bc057fe: 405787bb subw a5,a5,t0 + 3bc05802: 3c04b48b extu s1,s1,15,0 + 3bc05806: 2905 addiw s2,s2,1 + 3bc05808: 405382bb subw t0,t2,t0 + 3bc0580c: b4ad j 3bc05276 + 3bc0580e: 0056561b srliw a2,a2,0x5 + 3bc05812: 40c383bb subw t2,t2,a2 + 3bc05816: 41d787bb subw a5,a5,t4 + 3bc0581a: 3c03b38b extu t2,t2,15,0 + 3bc0581e: 2485 addiw s1,s1,1 + 3bc05820: 41d28ebb subw t4,t0,t4 + 3bc05824: bc59 j 3bc052ba + 3bc05826: 0056561b srliw a2,a2,0x5 + 3bc0582a: 40c282bb subw t0,t0,a2 + 3bc0582e: 407787bb subw a5,a5,t2 + 3bc05832: 3c02b28b extu t0,t0,15,0 + 3bc05836: 2905 addiw s2,s2,1 + 3bc05838: 407e83bb subw t2,t4,t2 + 3bc0583c: b4c9 j 3bc052fe + 3bc0583e: 0052d29b srliw t0,t0,0x5 + 3bc05842: 405484bb subw s1,s1,t0 + 3bc05846: 9f91 subw a5,a5,a2 + 3bc05848: 3c04b48b extu s1,s1,15,0 + 3bc0584c: 2e85 addiw t4,t4,1 + 3bc0584e: 40c3863b subw a2,t2,a2 + 3bc05852: b4fd j 3bc05340 + 3bc05854: 8c76 mv s8,t4 + 3bc05856: be21 j 3bc0536e + 3bc05858: 0053d39b srliw t2,t2,0x5 + 3bc0585c: 407484bb subw s1,s1,t2 + 3bc05860: 41a6063b subw a2,a2,s10 + 3bc05864: 41a787bb subw a5,a5,s10 + 3bc05868: 3c04b48b extu s1,s1,15,0 + 3bc0586c: 01fe8fbb addw t6,t4,t6 + 3bc05870: be81 j 3bc053c0 + 3bc05872: 32ed addiw t0,t0,-5 + 3bc05874: 00d67a63 bgeu a2,a3,3bc05888 + 3bc05878: 98174e8b lbuia t4,(a4),1,0 + 3bc0587c: 0087979b slliw a5,a5,0x8 + 3bc05880: 0086161b slliw a2,a2,0x8 + 3bc05884: 00fee7b3 or a5,t4,a5 + 3bc05888: 0016539b srliw t2,a2,0x1 + 3bc0588c: 407787bb subw a5,a5,t2 + 3bc05890: 41f7d49b sraiw s1,a5,0x1f + 3bc05894: 001f9f9b slliw t6,t6,0x1 + 3bc05898: 0003861b sext.w a2,t2 + 3bc0589c: 2f85 addiw t6,t6,1 + 3bc0589e: 0093f3b3 and t2,t2,s1 + 3bc058a2: 32fd addiw t0,t0,-1 + 3bc058a4: 01f48fbb addw t6,s1,t6 + 3bc058a8: 007787bb addw a5,a5,t2 + 3bc058ac: fc0294e3 bnez t0,3bc05874 + 3bc058b0: 0025d283 lhu t0,2(a1) + 3bc058b4: 004f9f9b slliw t6,t6,0x4 + 3bc058b8: 00028e9b sext.w t4,t0 + 3bc058bc: 00d67a63 bgeu a2,a3,3bc058d0 + 3bc058c0: 9817438b lbuia t2,(a4),1,0 + 3bc058c4: 0087979b slliw a5,a5,0x8 + 3bc058c8: 0086161b slliw a2,a2,0x8 + 3bc058cc: 00f3e7b3 or a5,t2,a5 + 3bc058d0: 00b6549b srliw s1,a2,0xb + 3bc058d4: 03d483bb mulw t2,s1,t4 + 3bc058d8: 1677f463 bgeu a5,t2,3bc05a40 + 3bc058dc: 41d40ebb subw t4,s0,t4 + 3bc058e0: 005ede9b srliw t4,t4,0x5 + 3bc058e4: 005e82bb addw t0,t4,t0 + 3bc058e8: 3c02b28b extu t0,t0,15,0 + 3bc058ec: 4e89 li t4,2 + 3bc058ee: 00559123 sh t0,2(a1) + 3bc058f2: b3d5c48b lurhu s1,a1,t4,1 + 3bc058f6: 7c0ebb8b extu s7,t4,31,0 + 3bc058fa: 0004861b sext.w a2,s1 + 3bc058fe: 00d3fa63 bgeu t2,a3,3bc05912 + 3bc05902: 9817428b lbuia t0,(a4),1,0 + 3bc05906: 0087979b slliw a5,a5,0x8 + 3bc0590a: 0083939b slliw t2,t2,0x8 + 3bc0590e: 00f2e7b3 or a5,t0,a5 + 3bc05912: 00b3d91b srliw s2,t2,0xb + 3bc05916: 02c902bb mulw t0,s2,a2 + 3bc0591a: 1257ff63 bgeu a5,t0,3bc05a58 + 3bc0591e: 40c4063b subw a2,s0,a2 + 3bc05922: 0056561b srliw a2,a2,0x5 + 3bc05926: 9cb1 addw s1,s1,a2 + 3bc05928: 3c04b48b extu s1,s1,15,0 + 3bc0592c: 0e89 addi t4,t4,2 + 3bc0592e: 2375d48b srh s1,a1,s7,1 + 3bc05932: b3d5cb8b lurhu s7,a1,t4,1 + 3bc05936: 7c0eb90b extu s2,t4,31,0 + 3bc0593a: 000b861b sext.w a2,s7 + 3bc0593e: 00d2fa63 bgeu t0,a3,3bc05952 + 3bc05942: 9817438b lbuia t2,(a4),1,0 + 3bc05946: 0087979b slliw a5,a5,0x8 + 3bc0594a: 0082929b slliw t0,t0,0x8 + 3bc0594e: 00f3e7b3 or a5,t2,a5 + 3bc05952: 00b2d49b srliw s1,t0,0xb + 3bc05956: 02c483bb mulw t2,s1,a2 + 3bc0595a: 1077fa63 bgeu a5,t2,3bc05a6e + 3bc0595e: 40c4063b subw a2,s0,a2 + 3bc05962: 0056561b srliw a2,a2,0x5 + 3bc05966: 01760bbb addw s7,a2,s7 + 3bc0596a: 3c0bbb8b extu s7,s7,15,0 + 3bc0596e: 2e91 addiw t4,t4,4 + 3bc05970: 2325db8b srh s7,a1,s2,1 + 3bc05974: b3d5c48b lurhu s1,a1,t4,1 + 3bc05978: 7c0ebb8b extu s7,t4,31,0 + 3bc0597c: 0004829b sext.w t0,s1 + 3bc05980: 00d3f963 bgeu t2,a3,3bc05992 + 3bc05984: 9817460b lbuia a2,(a4),1,0 + 3bc05988: 0087979b slliw a5,a5,0x8 + 3bc0598c: 0083939b slliw t2,t2,0x8 + 3bc05990: 8fd1 or a5,a5,a2 + 3bc05992: 00b3d91b srliw s2,t2,0xb + 3bc05996: 0259063b mulw a2,s2,t0 + 3bc0599a: 0ec7f663 bgeu a5,a2,3bc05a86 + 3bc0599e: 405402bb subw t0,s0,t0 + 3bc059a2: 0052d29b srliw t0,t0,0x5 + 3bc059a6: 009284bb addw s1,t0,s1 + 3bc059aa: 3c04b48b extu s1,s1,15,0 + 3bc059ae: 3ee1 addiw t4,t4,-8 + 3bc059b0: 01feefb3 or t6,t4,t6 + 3bc059b4: 2375d48b srh s1,a1,s7,1 + 3bc059b8: 000f839b sext.w t2,t6 + 3bc059bc: 54fd li s1,-1 + 3bc059be: a09398e3 bne t2,s1,3bc053ce + 3bc059c2: 38d1 addiw a7,a7,-12 + 3bc059c4: 8fda mv t6,s6 + 3bc059c6: 11200313 li t1,274 + 3bc059ca: 010006b7 lui a3,0x1000 + 3bc059ce: 00d67963 bgeu a2,a3,3bc059e0 + 3bc059d2: 9817468b lbuia a3,(a4),1,0 + 3bc059d6: 0087979b slliw a5,a5,0x8 + 3bc059da: 0086161b slliw a2,a2,0x8 + 3bc059de: 8fd5 or a5,a5,a3 + 3bc059e0: dd5c sw a5,60(a0) + 3bc059e2: 7782 ld a5,32(sp) + 3bc059e4: f918 sd a4,48(a0) + 3bc059e6: dd10 sw a2,56(a0) + 3bc059e8: c97c sw a5,84(a0) + 3bc059ea: 417c lw a5,68(a0) + 3bc059ec: 04652e23 sw t1,92(a0) + 3bc059f0: 03053423 sd a6,40(a0) + 3bc059f4: 05c52023 sw t3,64(a0) + 3bc059f8: 05f52423 sw t6,72(a0) + 3bc059fc: 05e52623 sw t5,76(a0) + 3bc05a00: 05352823 sw s3,80(a0) + 3bc05a04: 05152c23 sw a7,88(a0) + 3bc05a08: e789 bnez a5,3bc05a12 + 3bc05a0a: 415c lw a5,4(a0) + 3bc05a0c: 00fe6363 bltu t3,a5,3bc05a12 + 3bc05a10: c17c sw a5,68(a0) + 3bc05a12: 65c2 ld a1,16(sp) + 3bc05a14: e42a sd a0,8(sp) + 3bc05a16: d23fe0ef jal ra,3bc04738 + 3bc05a1a: 6522 ld a0,8(sp) + 3bc05a1c: 6742 ld a4,16(sp) + 3bc05a1e: 751c ld a5,40(a0) + 3bc05a20: 00e7fd63 bgeu a5,a4,3bc05a3a + 3bc05a24: 791c ld a5,48(a0) + 3bc05a26: 7742 ld a4,48(sp) + 3bc05a28: 00e7f963 bgeu a5,a4,3bc05a3a + 3bc05a2c: 4d78 lw a4,92(a0) + 3bc05a2e: 11100793 li a5,273 + 3bc05a32: 00e7e463 bltu a5,a4,3bc05a3a + 3bc05a36: d9bfe06f j 3bc047d0 + 3bc05a3a: 4501 li a0,0 + 3bc05a3c: dd3fe06f j 3bc0480e + 3bc05a40: 005ede9b srliw t4,t4,0x5 + 3bc05a44: 41d282bb subw t0,t0,t4 + 3bc05a48: 407787bb subw a5,a5,t2 + 3bc05a4c: 3c02b28b extu t0,t0,15,0 + 3bc05a50: 407603bb subw t2,a2,t2 + 3bc05a54: 4e8d li t4,3 + 3bc05a56: bd61 j 3bc058ee + 3bc05a58: 0056561b srliw a2,a2,0x5 + 3bc05a5c: 9c91 subw s1,s1,a2 + 3bc05a5e: 405787bb subw a5,a5,t0 + 3bc05a62: 3c04b48b extu s1,s1,15,0 + 3bc05a66: 0e91 addi t4,t4,4 + 3bc05a68: 405382bb subw t0,t2,t0 + 3bc05a6c: b5c9 j 3bc0592e + 3bc05a6e: 0056561b srliw a2,a2,0x5 + 3bc05a72: 40cb8bbb subw s7,s7,a2 + 3bc05a76: 407787bb subw a5,a5,t2 + 3bc05a7a: 3c0bbb8b extu s7,s7,15,0 + 3bc05a7e: 2ea1 addiw t4,t4,8 + 3bc05a80: 407283bb subw t2,t0,t2 + 3bc05a84: b5f5 j 3bc05970 + 3bc05a86: 0052d29b srliw t0,t0,0x5 + 3bc05a8a: 405484bb subw s1,s1,t0 + 3bc05a8e: 9f91 subw a5,a5,a2 + 3bc05a90: 3c04b48b extu s1,s1,15,0 + 3bc05a94: 40c3863b subw a2,t2,a2 + 3bc05a98: bf21 j 3bc059b0 + 3bc05a9a: 489d li a7,7 + 3bc05a9c: ba3d j 3bc053da + 3bc05a9e: 8fda mv t6,s6 + 3bc05aa0: 64a2 ld s1,8(sp) + 3bc05aa2: 00230e9b addiw t4,t1,2 + 3bc05aa6: 8376 mv t1,t4 + 3bc05aa8: 410483b3 sub t2,s1,a6 + 3bc05aac: 93048ce3 beq s1,a6,3bc053e4 + 3bc05ab0: 7c0eb28b extu t0,t4,31,0 + 3bc05ab4: 0053f463 bgeu t2,t0,3bc05abc + 3bc05ab8: 00038e9b sext.w t4,t2 + 3bc05abc: 7c0fb48b extu s1,t6,31,0 + 3bc05ac0: 409803b3 sub t2,a6,s1 + 3bc05ac4: 82d6 mv t0,s5 + 3bc05ac6: 00986363 bltu a6,s1,3bc05acc + 3bc05aca: 4281 li t0,0 + 3bc05acc: 9396 add t2,t2,t0 + 3bc05ace: 7c0eb48b extu s1,t4,31,0 + 3bc05ad2: 407a8933 sub s2,s5,t2 + 3bc05ad6: 01de0e3b addw t3,t3,t4 + 3bc05ada: 41d3033b subw t1,t1,t4 + 3bc05ade: 010a02b3 add t0,s4,a6 + 3bc05ae2: 02996363 bltu s2,s1,3bc05b08 + 3bc05ae6: 410383b3 sub t2,t2,a6 + 3bc05aea: 00928eb3 add t4,t0,s1 + 3bc05aee: 9826 add a6,a6,s1 + 3bc05af0: 8072c48b lrbu s1,t0,t2,0 + 3bc05af4: 1812d48b sbia s1,(t0),1,0 + 3bc05af8: fe5e9ce3 bne t4,t0,3bc05af0 + 3bc05afc: 88cff06f j 3bc04b88 + 3bc05b00: f04e sd s3,32(sp) + 3bc05b02: 89fa mv s3,t5 + 3bc05b04: 8f5a mv t5,s6 + 3bc05b06: bf69 j 3bc05aa0 + 3bc05b08: 84f6 mv s1,t4 + 3bc05b0a: 807a490b lrbu s2,s4,t2,0 + 3bc05b0e: 0385 addi t2,t2,1 + 3bc05b10: 01228023 sb s2,0(t0) + 3bc05b14: 007a9363 bne s5,t2,3bc05b1a + 3bc05b18: 4381 li t2,0 + 3bc05b1a: 34fd addiw s1,s1,-1 + 3bc05b1c: 0285 addi t0,t0,1 + 3bc05b1e: f4f5 bnez s1,3bc05b0a + 3bc05b20: 3efd addiw t4,t4,-1 + 3bc05b22: 0805 addi a6,a6,1 + 3bc05b24: 7c0ebe8b extu t4,t4,31,0 + 3bc05b28: 9876 add a6,a6,t4 + 3bc05b2a: 85eff06f j 3bc04b88 + 3bc05b2e: 48a5 li a7,9 + 3bc05b30: 858ff06f j 3bc04b88 + +000000003bc05b34 : + 3bc05b34: 00254703 lbu a4,2(a0) + 3bc05b38: 04052303 lw t1,64(a0) + 3bc05b3c: 4805 li a6,1 + 3bc05b3e: 00e8183b sllw a6,a6,a4 + 3bc05b42: 05852e83 lw t4,88(a0) + 3bc05b46: 387d addiw a6,a6,-1 + 3bc05b48: 01037833 and a6,t1,a6 + 3bc05b4c: 0048181b slliw a6,a6,0x4 + 3bc05b50: 010e8e3b addw t3,t4,a6 + 3bc05b54: 01053883 ld a7,16(a0) + 3bc05b58: 020e1713 slli a4,t3,0x20 + 3bc05b5c: 5d14 lw a3,56(a0) + 3bc05b5e: 01f75e13 srli t3,a4,0x1f + 3bc05b62: 9e46 add t3,t3,a7 + 3bc05b64: 01000737 lui a4,0x1000 + 3bc05b68: 5d5c lw a5,60(a0) + 3bc05b6a: e00e5f83 lhu t6,-512(t3) + 3bc05b6e: 8f2a mv t5,a0 + 3bc05b70: 962e add a2,a2,a1 + 3bc05b72: 00e6fc63 bgeu a3,a4,3bc05b8a + 3bc05b76: 4501 li a0,0 + 3bc05b78: 0cc5f463 bgeu a1,a2,3bc05c40 + 3bc05b7c: 9815c70b lbuia a4,(a1),1,0 + 3bc05b80: 0087979b slliw a5,a5,0x8 + 3bc05b84: 0086969b slliw a3,a3,0x8 + 3bc05b88: 8fd9 or a5,a5,a4 + 3bc05b8a: 00b6d71b srliw a4,a3,0xb + 3bc05b8e: 03f7073b mulw a4,a4,t6 + 3bc05b92: 14e7f063 bgeu a5,a4,3bc05cd2 + 3bc05b96: 040f3683 ld a3,64(t5) + 3bc05b9a: 28088893 addi a7,a7,640 # f0280 <__BSS_SIZE__+0xea670> + 3bc05b9e: caa1 beqz a3,3bc05bee + 3bc05ba0: 001f4503 lbu a0,1(t5) + 3bc05ba4: 4685 li a3,1 + 3bc05ba6: 000f4803 lbu a6,0(t5) + 3bc05baa: 00a696bb sllw a3,a3,a0 + 3bc05bae: 36fd addiw a3,a3,-1 + 3bc05bb0: 00d37333 and t1,t1,a3 + 3bc05bb4: 028f3683 ld a3,40(t5) + 3bc05bb8: 018f3e03 ld t3,24(t5) + 3bc05bbc: 0103133b sllw t1,t1,a6 + 3bc05bc0: fff68513 addi a0,a3,-1 # ffffff <__BSS_SIZE__+0xffa3ef> + 3bc05bc4: e681 bnez a3,3bc05bcc + 3bc05bc6: 020f3503 ld a0,32(t5) + 3bc05bca: 157d addi a0,a0,-1 + 3bc05bcc: 80ae468b lrbu a3,t3,a0,0 + 3bc05bd0: 4521 li a0,8 + 3bc05bd2: 4105053b subw a0,a0,a6 + 3bc05bd6: 40a6d6bb sraw a3,a3,a0 + 3bc05bda: 006686bb addw a3,a3,t1 + 3bc05bde: 30000513 li a0,768 + 3bc05be2: 02a686bb mulw a3,a3,a0 + 3bc05be6: 7c06b68b extu a3,a3,31,0 + 3bc05bea: 02d8988b addsl a7,a7,a3,1 + 3bc05bee: 4699 li a3,6 + 3bc05bf0: 05d6eb63 bltu a3,t4,3bc05c46 + 3bc05bf4: 4685 li a3,1 + 3bc05bf6: 01000eb7 lui t4,0x1000 + 3bc05bfa: 0ff00e13 li t3,255 + 3bc05bfe: b2d8c80b lurhu a6,a7,a3,1 + 3bc05c02: 01d77b63 bgeu a4,t4,3bc05c18 + 3bc05c06: 2ec5f363 bgeu a1,a2,3bc05eec + 3bc05c0a: 9815c50b lbuia a0,(a1),1,0 + 3bc05c0e: 0087979b slliw a5,a5,0x8 + 3bc05c12: 0087171b slliw a4,a4,0x8 + 3bc05c16: 8fc9 or a5,a5,a0 + 3bc05c18: 00b7551b srliw a0,a4,0xb + 3bc05c1c: 0305083b mulw a6,a0,a6 + 3bc05c20: 0016969b slliw a3,a3,0x1 + 3bc05c24: 0107ef63 bltu a5,a6,3bc05c42 + 3bc05c28: 4107073b subw a4,a4,a6 + 3bc05c2c: 410787bb subw a5,a5,a6 + 3bc05c30: 2685 addiw a3,a3,1 + 3bc05c32: fcde76e3 bgeu t3,a3,3bc05bfe + 3bc05c36: 4505 li a0,1 + 3bc05c38: 010007b7 lui a5,0x1000 + 3bc05c3c: 2af76663 bltu a4,a5,3bc05ee8 + 3bc05c40: 8082 ret + 3bc05c42: 8742 mv a4,a6 + 3bc05c44: b7fd j 3bc05c32 + 3bc05c46: 028f3303 ld t1,40(t5) + 3bc05c4a: 048f6803 lwu a6,72(t5) + 3bc05c4e: 018f3683 ld a3,24(t5) + 3bc05c52: 4501 li a0,0 + 3bc05c54: 41030e33 sub t3,t1,a6 + 3bc05c58: 01037463 bgeu t1,a6,3bc05c60 + 3bc05c5c: 020f3503 ld a0,32(t5) + 3bc05c60: 96f2 add a3,a3,t3 + 3bc05c62: 80a6ce0b lrbu t3,a3,a0,0 + 3bc05c66: 010002b7 lui t0,0x1000 + 3bc05c6a: 4685 li a3,1 + 3bc05c6c: 10000513 li a0,256 + 3bc05c70: 0ff00f93 li t6,255 + 3bc05c74: 001e181b slliw a6,t3,0x1 + 3bc05c78: 00d5033b addw t1,a0,a3 + 3bc05c7c: 00080e1b sext.w t3,a6 + 3bc05c80: 01057833 and a6,a0,a6 + 3bc05c84: 00080e9b sext.w t4,a6 + 3bc05c88: 0103083b addw a6,t1,a6 + 3bc05c8c: b308c30b lurhu t1,a7,a6,1 + 3bc05c90: 00577c63 bgeu a4,t0,3bc05ca8 + 3bc05c94: 24c5fc63 bgeu a1,a2,3bc05eec + 3bc05c98: 9815c80b lbuia a6,(a1),1,0 + 3bc05c9c: 0087979b slliw a5,a5,0x8 + 3bc05ca0: 0087171b slliw a4,a4,0x8 + 3bc05ca4: 00f867b3 or a5,a6,a5 + 3bc05ca8: 00b7581b srliw a6,a4,0xb + 3bc05cac: 02680f3b mulw t5,a6,t1 + 3bc05cb0: 0016969b slliw a3,a3,0x1 + 3bc05cb4: 01e7f863 bgeu a5,t5,3bc05cc4 + 3bc05cb8: 01d54533 xor a0,a0,t4 + 3bc05cbc: 877a mv a4,t5 + 3bc05cbe: fadffbe3 bgeu t6,a3,3bc05c74 + 3bc05cc2: bf95 j 3bc05c36 + 3bc05cc4: 41e7073b subw a4,a4,t5 + 3bc05cc8: 41e787bb subw a5,a5,t5 + 3bc05ccc: 2685 addiw a3,a3,1 + 3bc05cce: 8576 mv a0,t4 + 3bc05cd0: b7fd j 3bc05cbe + 3bc05cd2: 7c0eb50b extu a0,t4,31,0 + 3bc05cd6: 0541 addi a0,a0,16 + 3bc05cd8: a2a8cf0b lrhu t5,a7,a0,1 + 3bc05cdc: 00151e93 slli t4,a0,0x1 + 3bc05ce0: 40e6833b subw t1,a3,a4 + 3bc05ce4: 01000537 lui a0,0x1000 + 3bc05ce8: 9f99 subw a5,a5,a4 + 3bc05cea: 00a37c63 bgeu t1,a0,3bc05d02 + 3bc05cee: 4501 li a0,0 + 3bc05cf0: f4c5f8e3 bgeu a1,a2,3bc05c40 + 3bc05cf4: 9815c70b lbuia a4,(a1),1,0 + 3bc05cf8: 0087979b slliw a5,a5,0x8 + 3bc05cfc: 0083131b slliw t1,t1,0x8 + 3bc05d00: 8fd9 or a5,a5,a4 + 3bc05d02: 00b3571b srliw a4,t1,0xb + 3bc05d06: 03e706bb mulw a3,a4,t5 + 3bc05d0a: 16d7f563 bgeu a5,a3,3bc05e74 + 3bc05d0e: a0088313 addi t1,a7,-1536 + 3bc05d12: 4509 li a0,2 + 3bc05d14: 4f01 li t5,0 + 3bc05d16: 01000e37 lui t3,0x1000 + 3bc05d1a: 00035703 lhu a4,0(t1) + 3bc05d1e: 01c6fc63 bgeu a3,t3,3bc05d36 + 3bc05d22: 1cc5f563 bgeu a1,a2,3bc05eec + 3bc05d26: 9815ce0b lbuia t3,(a1),1,0 + 3bc05d2a: 0087979b slliw a5,a5,0x8 + 3bc05d2e: 0086969b slliw a3,a3,0x8 + 3bc05d32: 00fe67b3 or a5,t3,a5 + 3bc05d36: 00b6de1b srliw t3,a3,0xb + 3bc05d3a: 02ee073b mulw a4,t3,a4 + 3bc05d3e: 22e7fc63 bgeu a5,a4,3bc05f76 + 3bc05d42: 7c08380b extu a6,a6,31,0 + 3bc05d46: 0303130b addsl t1,t1,a6,1 + 3bc05d4a: 4801 li a6,0 + 3bc05d4c: 46a1 li a3,8 + 3bc05d4e: 4e05 li t3,1 + 3bc05d50: 010003b7 lui t2,0x1000 + 3bc05d54: b3c34f8b lurhu t6,t1,t3,1 + 3bc05d58: 00777c63 bgeu a4,t2,3bc05d70 + 3bc05d5c: 18c5f863 bgeu a1,a2,3bc05eec + 3bc05d60: 9815ce8b lbuia t4,(a1),1,0 + 3bc05d64: 0087979b slliw a5,a5,0x8 + 3bc05d68: 0087171b slliw a4,a4,0x8 + 3bc05d6c: 00fee7b3 or a5,t4,a5 + 3bc05d70: 00b75e9b srliw t4,a4,0xb + 3bc05d74: 03fe8fbb mulw t6,t4,t6 + 3bc05d78: 001e1e1b slliw t3,t3,0x1 + 3bc05d7c: 25f7e663 bltu a5,t6,3bc05fc8 + 3bc05d80: 41f7073b subw a4,a4,t6 + 3bc05d84: 41f787bb subw a5,a5,t6 + 3bc05d88: 2e05 addiw t3,t3,1 + 3bc05d8a: fcde65e3 bltu t3,a3,3bc05d54 + 3bc05d8e: 430d li t1,3 + 3bc05d90: ebe364e3 bltu t1,t5,3bc05c38 + 3bc05d94: 40d806bb subw a3,a6,a3 + 3bc05d98: 01c6883b addw a6,a3,t3 + 3bc05d9c: 86c2 mv a3,a6 + 3bc05d9e: 01037363 bgeu t1,a6,3bc05da4 + 3bc05da2: 468d li a3,3 + 3bc05da4: 0066981b slliw a6,a3,0x6 + 3bc05da8: 0408081b addiw a6,a6,64 + 3bc05dac: 7c08380b extu a6,a6,31,0 + 3bc05db0: 4685 li a3,1 + 3bc05db2: 01000fb7 lui t6,0x1000 + 3bc05db6: 03f00f13 li t5,63 + 3bc05dba: 7c06b30b extu t1,a3,31,0 + 3bc05dbe: 9342 add t1,t1,a6 + 3bc05dc0: a268ce0b lrhu t3,a7,t1,1 + 3bc05dc4: 01f77c63 bgeu a4,t6,3bc05ddc + 3bc05dc8: 12c5f263 bgeu a1,a2,3bc05eec + 3bc05dcc: 9815c30b lbuia t1,(a1),1,0 + 3bc05dd0: 0087979b slliw a5,a5,0x8 + 3bc05dd4: 0087171b slliw a4,a4,0x8 + 3bc05dd8: 00f367b3 or a5,t1,a5 + 3bc05ddc: 00b7531b srliw t1,a4,0xb + 3bc05de0: 03c30e3b mulw t3,t1,t3 + 3bc05de4: 0016969b slliw a3,a3,0x1 + 3bc05de8: 1fc7e263 bltu a5,t3,3bc05fcc + 3bc05dec: 41c7073b subw a4,a4,t3 + 3bc05df0: 41c787bb subw a5,a5,t3 + 3bc05df4: 2685 addiw a3,a3,1 + 3bc05df6: fcdf72e3 bgeu t5,a3,3bc05dba + 3bc05dfa: fc06869b addiw a3,a3,-64 + 3bc05dfe: 0006831b sext.w t1,a3 + 3bc05e02: 480d li a6,3 + 3bc05e04: e2687ae3 bgeu a6,t1,3bc05c38 + 3bc05e08: 4e35 li t3,13 + 3bc05e0a: 0016d81b srliw a6,a3,0x1 + 3bc05e0e: 1c6e6163 bltu t3,t1,3bc05fd0 + 3bc05e12: 8a85 andi a3,a3,1 + 3bc05e14: 387d addiw a6,a6,-1 + 3bc05e16: 0026e693 ori a3,a3,2 + 3bc05e1a: 010696bb sllw a3,a3,a6 + 3bc05e1e: 02069313 slli t1,a3,0x20 + 3bc05e22: 01f35693 srli a3,t1,0x1f + 3bc05e26: 737d lui t1,0xfffff + 3bc05e28: 30030313 addi t1,t1,768 # fffffffffffff300 <__BL2_END__+0xffffffffc43ebef0> + 3bc05e2c: 969a add a3,a3,t1 + 3bc05e2e: 98b6 add a7,a7,a3 + 3bc05e30: 4e05 li t3,1 + 3bc05e32: 4685 li a3,1 + 3bc05e34: 010002b7 lui t0,0x1000 + 3bc05e38: b2d8ce8b lurhu t4,a7,a3,1 + 3bc05e3c: 00577c63 bgeu a4,t0,3bc05e54 + 3bc05e40: 0ac5f663 bgeu a1,a2,3bc05eec + 3bc05e44: 9815c30b lbuia t1,(a1),1,0 + 3bc05e48: 0087979b slliw a5,a5,0x8 + 3bc05e4c: 0087171b slliw a4,a4,0x8 + 3bc05e50: 00f367b3 or a5,t1,a5 + 3bc05e54: 00b7531b srliw t1,a4,0xb + 3bc05e58: 03d30f3b mulw t5,t1,t4 + 3bc05e5c: 001e1f9b slliw t6,t3,0x1 + 3bc05e60: 1be7f763 bgeu a5,t5,3bc0600e + 3bc05e64: 01c686bb addw a3,a3,t3 + 3bc05e68: 877a mv a4,t5 + 3bc05e6a: 387d addiw a6,a6,-1 + 3bc05e6c: dc0806e3 beqz a6,3bc05c38 + 3bc05e70: 8e7e mv t3,t6 + 3bc05e72: b7d9 j 3bc05e38 + 3bc05e74: 40d3053b subw a0,t1,a3 + 3bc05e78: 9ec6 add t4,t4,a7 + 3bc05e7a: 01000f37 lui t5,0x1000 + 3bc05e7e: 40d7873b subw a4,a5,a3 + 3bc05e82: 832a mv t1,a0 + 3bc05e84: 018ed683 lhu a3,24(t4) # 1000018 <__BSS_SIZE__+0xffa408> + 3bc05e88: 01e57c63 bgeu a0,t5,3bc05ea0 + 3bc05e8c: 4501 li a0,0 + 3bc05e8e: dac5f9e3 bgeu a1,a2,3bc05c40 + 3bc05e92: 0087179b slliw a5,a4,0x8 + 3bc05e96: 9815c70b lbuia a4,(a1),1,0 + 3bc05e9a: 0083151b slliw a0,t1,0x8 + 3bc05e9e: 8f5d or a4,a4,a5 + 3bc05ea0: 00b5531b srliw t1,a0,0xb + 3bc05ea4: 02d306bb mulw a3,t1,a3 + 3bc05ea8: 8336 mv t1,a3 + 3bc05eaa: 04d77e63 bgeu a4,a3,3bc05f06 + 3bc05eae: 77fd lui a5,0xfffff + 3bc05eb0: 9e3e add t3,t3,a5 + 3bc05eb2: 010007b7 lui a5,0x1000 + 3bc05eb6: 400e5e03 lhu t3,1024(t3) # 1000400 <__BSS_SIZE__+0xffa7f0> + 3bc05eba: 00f6fc63 bgeu a3,a5,3bc05ed2 + 3bc05ebe: 4501 li a0,0 + 3bc05ec0: d8c5f0e3 bgeu a1,a2,3bc05c40 + 3bc05ec4: 0087179b slliw a5,a4,0x8 + 3bc05ec8: 9815c70b lbuia a4,(a1),1,0 + 3bc05ecc: 0086969b slliw a3,a3,0x8 + 3bc05ed0: 8f5d or a4,a4,a5 + 3bc05ed2: 00b6d79b srliw a5,a3,0xb + 3bc05ed6: 03c7833b mulw t1,a5,t3 + 3bc05eda: 00677b63 bgeu a4,t1,3bc05ef0 + 3bc05ede: 010007b7 lui a5,0x1000 + 3bc05ee2: 450d li a0,3 + 3bc05ee4: d4f37ee3 bgeu t1,a5,3bc05c40 + 3bc05ee8: d4c5ece3 bltu a1,a2,3bc05c40 + 3bc05eec: 4501 li a0,0 + 3bc05eee: bb89 j 3bc05c40 + 3bc05ef0: 406686bb subw a3,a3,t1 + 3bc05ef4: 406707bb subw a5,a4,t1 + 3bc05ef8: 737d lui t1,0xfffff + 3bc05efa: 60030313 addi t1,t1,1536 # fffffffffffff600 <__BL2_END__+0xffffffffc43ec1f0> + 3bc05efe: 9346 add t1,t1,a7 + 3bc05f00: 450d li a0,3 + 3bc05f02: 4f31 li t5,12 + 3bc05f04: bd09 j 3bc05d16 + 3bc05f06: 9d15 subw a0,a0,a3 + 3bc05f08: 01000e37 lui t3,0x1000 + 3bc05f0c: 406707bb subw a5,a4,t1 + 3bc05f10: 86aa mv a3,a0 + 3bc05f12: 030ed303 lhu t1,48(t4) + 3bc05f16: 01c57c63 bgeu a0,t3,3bc05f2e + 3bc05f1a: 4501 li a0,0 + 3bc05f1c: d2c5f2e3 bgeu a1,a2,3bc05c40 + 3bc05f20: 0087971b slliw a4,a5,0x8 + 3bc05f24: 9815c78b lbuia a5,(a1),1,0 + 3bc05f28: 0086951b slliw a0,a3,0x8 + 3bc05f2c: 8fd9 or a5,a5,a4 + 3bc05f2e: 00b5571b srliw a4,a0,0xb + 3bc05f32: 026706bb mulw a3,a4,t1 + 3bc05f36: 8736 mv a4,a3 + 3bc05f38: fcd7e0e3 bltu a5,a3,3bc05ef8 + 3bc05f3c: 9d15 subw a0,a0,a3 + 3bc05f3e: 01000e37 lui t3,0x1000 + 3bc05f42: 048ed303 lhu t1,72(t4) + 3bc05f46: 86aa mv a3,a0 + 3bc05f48: 9f99 subw a5,a5,a4 + 3bc05f4a: 01c57c63 bgeu a0,t3,3bc05f62 + 3bc05f4e: 4501 li a0,0 + 3bc05f50: cec5f8e3 bgeu a1,a2,3bc05c40 + 3bc05f54: 0087971b slliw a4,a5,0x8 + 3bc05f58: 9815c78b lbuia a5,(a1),1,0 + 3bc05f5c: 0086951b slliw a0,a3,0x8 + 3bc05f60: 8fd9 or a5,a5,a4 + 3bc05f62: 00b5571b srliw a4,a0,0xb + 3bc05f66: 026706bb mulw a3,a4,t1 + 3bc05f6a: f8d7e7e3 bltu a5,a3,3bc05ef8 + 3bc05f6e: 9f95 subw a5,a5,a3 + 3bc05f70: 40d506bb subw a3,a0,a3 + 3bc05f74: b751 j 3bc05ef8 + 3bc05f76: 40e68ebb subw t4,a3,a4 + 3bc05f7a: 01000fb7 lui t6,0x1000 + 3bc05f7e: 9f99 subw a5,a5,a4 + 3bc05f80: 01035703 lhu a4,16(t1) + 3bc05f84: 01fefc63 bgeu t4,t6,3bc05f9c + 3bc05f88: f6c5f2e3 bgeu a1,a2,3bc05eec + 3bc05f8c: 00879e1b slliw t3,a5,0x8 + 3bc05f90: 9815c78b lbuia a5,(a1),1,0 + 3bc05f94: 008e9e9b slliw t4,t4,0x8 + 3bc05f98: 01c7e7b3 or a5,a5,t3 + 3bc05f9c: 00bed69b srliw a3,t4,0xb + 3bc05fa0: 02e6873b mulw a4,a3,a4 + 3bc05fa4: 00e7f963 bgeu a5,a4,3bc05fb6 + 3bc05fa8: 7c08368b extu a3,a6,31,0 + 3bc05fac: 06a1 addi a3,a3,8 + 3bc05fae: 02d3130b addsl t1,t1,a3,1 + 3bc05fb2: 4821 li a6,8 + 3bc05fb4: bb61 j 3bc05d4c + 3bc05fb6: 9f99 subw a5,a5,a4 + 3bc05fb8: 20030313 addi t1,t1,512 + 3bc05fbc: 40ee873b subw a4,t4,a4 + 3bc05fc0: 4841 li a6,16 + 3bc05fc2: 10000693 li a3,256 + 3bc05fc6: b361 j 3bc05d4e + 3bc05fc8: 877e mv a4,t6 + 3bc05fca: b3c1 j 3bc05d8a + 3bc05fcc: 8772 mv a4,t3 + 3bc05fce: b525 j 3bc05df6 + 3bc05fd0: 386d addiw a6,a6,-5 + 3bc05fd2: 01000e37 lui t3,0x1000 + 3bc05fd6: 01c77b63 bgeu a4,t3,3bc05fec + 3bc05fda: f0c5f9e3 bgeu a1,a2,3bc05eec + 3bc05fde: 9815c68b lbuia a3,(a1),1,0 + 3bc05fe2: 0087979b slliw a5,a5,0x8 + 3bc05fe6: 0087171b slliw a4,a4,0x8 + 3bc05fea: 8fd5 or a5,a5,a3 + 3bc05fec: 0017531b srliw t1,a4,0x1 + 3bc05ff0: 406786bb subw a3,a5,t1 + 3bc05ff4: 01f6d69b srliw a3,a3,0x1f + 3bc05ff8: 36fd addiw a3,a3,-1 + 3bc05ffa: 0066f6b3 and a3,a3,t1 + 3bc05ffe: 387d addiw a6,a6,-1 + 3bc06000: 0003071b sext.w a4,t1 + 3bc06004: 9f95 subw a5,a5,a3 + 3bc06006: fc0818e3 bnez a6,3bc05fd6 + 3bc0600a: 4811 li a6,4 + 3bc0600c: b515 j 3bc05e30 + 3bc0600e: 41e7073b subw a4,a4,t5 + 3bc06012: 41e787bb subw a5,a5,t5 + 3bc06016: 00df86bb addw a3,t6,a3 + 3bc0601a: bd81 j 3bc05e6a + +000000003bc0601c : + 3bc0601c: 11400793 li a5,276 + 3bc06020: 02053423 sd zero,40(a0) # 1000028 <__BSS_SIZE__+0xffa418> + 3bc06024: 06052223 sw zero,100(a0) + 3bc06028: 04053023 sd zero,64(a0) + 3bc0602c: cd7c sw a5,92(a0) + 3bc0602e: 8082 ret + +000000003bc06030 : + 3bc06030: 7175 addi sp,sp,-144 + 3bc06032: e122 sd s0,128(sp) + 3bc06034: f8ca sd s2,112(sp) + 3bc06036: f4ce sd s3,104(sp) + 3bc06038: f0d2 sd s4,96(sp) + 3bc0603a: f86a sd s10,48(sp) + 3bc0603c: f46e sd s11,40(sp) + 3bc0603e: e506 sd ra,136(sp) + 3bc06040: fca6 sd s1,120(sp) + 3bc06042: ecd6 sd s5,88(sp) + 3bc06044: e8da sd s6,80(sp) + 3bc06046: e4de sd s7,72(sp) + 3bc06048: e0e2 sd s8,64(sp) + 3bc0604a: fc66 sd s9,56(sp) + 3bc0604c: 0006bd83 ld s11,0(a3) + 3bc06050: 0006b023 sd zero,0(a3) + 3bc06054: 0007a023 sw zero,0(a5) # 1000000 <__BSS_SIZE__+0xffa3f0> + 3bc06058: e43a sd a4,8(sp) + 3bc0605a: 4d78 lw a4,92(a0) + 3bc0605c: 89be mv s3,a5 + 3bc0605e: 11200793 li a5,274 + 3bc06062: 8932 mv s2,a2 + 3bc06064: 842a mv s0,a0 + 3bc06066: 8a2e mv s4,a1 + 3bc06068: 8d36 mv s10,a3 + 3bc0606a: 4611 li a2,4 + 3bc0606c: 04e7e263 bltu a5,a4,3bc060b0 + 3bc06070: 85d2 mv a1,s4 + 3bc06072: 8522 mv a0,s0 + 3bc06074: ec4fe0ef jal ra,3bc04738 + 3bc06078: 4b4d li s6,19 + 3bc0607a: 06840a93 addi s5,s0,104 # 1068 <__BSS_SIZE__-0x4ba8> + 3bc0607e: 4c7c lw a5,92(s0) + 3bc06080: 11200713 li a4,274 + 3bc06084: 0ce79663 bne a5,a4,3bc06150 + 3bc06088: 5c5c lw a5,60(s0) + 3bc0608a: eb9d bnez a5,3bc060c0 + 3bc0608c: 4785 li a5,1 + 3bc0608e: a8a1 j 3bc060e6 + 3bc06090: 0017859b addiw a1,a5,1 + 3bc06094: d06c sw a1,100(s0) + 3bc06096: 9819458b lbuia a1,(s2),1,0 + 3bc0609a: 7c07b78b extu a5,a5,31,0 + 3bc0609e: 97a2 add a5,a5,s0 + 3bc060a0: 06b78423 sb a1,104(a5) + 3bc060a4: 000d3783 ld a5,0(s10) + 3bc060a8: 1dfd addi s11,s11,-1 + 3bc060aa: 0785 addi a5,a5,1 + 3bc060ac: 00fd3023 sd a5,0(s10) + 3bc060b0: 507c lw a5,100(s0) + 3bc060b2: 020d8863 beqz s11,3bc060e2 + 3bc060b6: fcf67de3 bgeu a2,a5,3bc06090 + 3bc060ba: 06844603 lbu a2,104(s0) + 3bc060be: ca05 beqz a2,3bc060ee + 3bc060c0: 4485 li s1,1 + 3bc060c2: 60aa ld ra,136(sp) + 3bc060c4: 640a ld s0,128(sp) + 3bc060c6: 7946 ld s2,112(sp) + 3bc060c8: 79a6 ld s3,104(sp) + 3bc060ca: 7a06 ld s4,96(sp) + 3bc060cc: 6ae6 ld s5,88(sp) + 3bc060ce: 6b46 ld s6,80(sp) + 3bc060d0: 6ba6 ld s7,72(sp) + 3bc060d2: 6c06 ld s8,64(sp) + 3bc060d4: 7ce2 ld s9,56(sp) + 3bc060d6: 7d42 ld s10,48(sp) + 3bc060d8: 7da2 ld s11,40(sp) + 3bc060da: 8526 mv a0,s1 + 3bc060dc: 74e6 ld s1,120(sp) + 3bc060de: 6149 addi sp,sp,144 + 3bc060e0: 8082 ret + 3bc060e2: ffe1 bnez a5,3bc060ba + 3bc060e4: 478d li a5,3 + 3bc060e6: 00f9a023 sw a5,0(s3) + 3bc060ea: 4481 li s1,0 + 3bc060ec: bfd9 j 3bc060c2 + 3bc060ee: 4611 li a2,4 + 3bc060f0: fef67ae3 bgeu a2,a5,3bc060e4 + 3bc060f4: 06942783 lw a5,105(s0) + 3bc060f8: 06042223 sw zero,100(s0) + 3bc060fc: 9007978b revw a5,a5 + 3bc06100: dc5c sw a5,60(s0) + 3bc06102: 57fd li a5,-1 + 3bc06104: dc1c sw a5,56(s0) + 3bc06106: 11300793 li a5,275 + 3bc0610a: 02f70c63 beq a4,a5,3bc06142 + 3bc0610e: 00044783 lbu a5,0(s0) + 3bc06112: 00144703 lbu a4,1(s0) + 3bc06116: 6410 ld a2,8(s0) + 3bc06118: 40000593 li a1,1024 + 3bc0611c: 9f3d addw a4,a4,a5 + 3bc0611e: 30000793 li a5,768 + 3bc06122: 00e797bb sllw a5,a5,a4 + 3bc06126: 7c07879b addiw a5,a5,1984 + 3bc0612a: 7c07b78b extu a5,a5,31,0 + 3bc0612e: 4701 li a4,0 + 3bc06130: 00f76c63 bltu a4,a5,3bc06148 + 3bc06134: 4785 li a5,1 + 3bc06136: 1782 slli a5,a5,0x20 + 3bc06138: 0785 addi a5,a5,1 + 3bc0613a: e43c sd a5,72(s0) + 3bc0613c: e83c sd a5,80(s0) + 3bc0613e: 04042c23 sw zero,88(s0) + 3bc06142: 04042e23 sw zero,92(s0) + 3bc06146: b72d j 3bc06070 + 3bc06148: 22e6558b srh a1,a2,a4,1 + 3bc0614c: 0705 addi a4,a4,1 + 3bc0614e: b7cd j 3bc06130 + 3bc06150: 7418 ld a4,40(s0) + 3bc06152: 01476b63 bltu a4,s4,3bc06168 + 3bc06156: 12079f63 bnez a5,3bc06294 + 3bc0615a: 5c5c lw a5,60(s0) + 3bc0615c: 14079363 bnez a5,3bc062a2 + 3bc06160: 4791 li a5,4 + 3bc06162: b751 j 3bc060e6 + 3bc06164: 4789 li a5,2 + 3bc06166: b741 j 3bc060e6 + 3bc06168: 4c81 li s9,0 + 3bc0616a: 06442b83 lw s7,100(s0) + 3bc0616e: 0c0b9263 bnez s7,3bc06232 + 3bc06172: 01bb7463 bgeu s6,s11,3bc0617a + 3bc06176: 040c8263 beqz s9,3bc061ba + 3bc0617a: 866e mv a2,s11 + 3bc0617c: 85ca mv a1,s2 + 3bc0617e: 8522 mv a0,s0 + 3bc06180: 9b5ff0ef jal ra,3bc05b34 + 3bc06184: 0005049b sext.w s1,a0 + 3bc06188: e095 bnez s1,3bc061ac + 3bc0618a: 866e mv a2,s11 + 3bc0618c: 85ca mv a1,s2 + 3bc0618e: 06840513 addi a0,s0,104 + 3bc06192: 8dbfa0ef jal ra,3bc00a6c + 3bc06196: 000d3783 ld a5,0(s10) + 3bc0619a: 07b42223 sw s11,100(s0) + 3bc0619e: 9dbe add s11,s11,a5 + 3bc061a0: 01bd3023 sd s11,0(s10) + 3bc061a4: 478d li a5,3 + 3bc061a6: 00f9a023 sw a5,0(s3) + 3bc061aa: bf21 j 3bc060c2 + 3bc061ac: 000c8563 beqz s9,3bc061b6 + 3bc061b0: 4789 li a5,2 + 3bc061b2: 0ef49463 bne s1,a5,3bc0629a + 3bc061b6: 864a mv a2,s2 + 3bc061b8: a021 j 3bc061c0 + 3bc061ba: fecd8613 addi a2,s11,-20 + 3bc061be: 964a add a2,a2,s2 + 3bc061c0: 03243823 sd s2,48(s0) + 3bc061c4: 85d2 mv a1,s4 + 3bc061c6: 8522 mv a0,s0 + 3bc061c8: de2fe0ef jal ra,3bc047aa + 3bc061cc: ee051ae3 bnez a0,3bc060c0 + 3bc061d0: 7818 ld a4,48(s0) + 3bc061d2: 000d3783 ld a5,0(s10) + 3bc061d6: 41270933 sub s2,a4,s2 + 3bc061da: 97ca add a5,a5,s2 + 3bc061dc: 00fd3023 sd a5,0(s10) + 3bc061e0: 412d8db3 sub s11,s11,s2 + 3bc061e4: 893a mv s2,a4 + 3bc061e6: bd61 j 3bc0607e + 3bc061e8: 8109478b lrbu a5,s2,a6,0 + 3bc061ec: 0106578b srb a5,a2,a6,0 + 3bc061f0: 0805 addi a6,a6,1 + 3bc061f2: 0008079b sext.w a5,a6 + 3bc061f6: e83e sd a5,16(sp) + 3bc061f8: 01780c3b addw s8,a6,s7 + 3bc061fc: 018b6463 bltu s6,s8,3bc06204 + 3bc06200: ffb814e3 bne a6,s11,3bc061e8 + 3bc06204: 07842223 sw s8,100(s0) + 3bc06208: 018b7463 bgeu s6,s8,3bc06210 + 3bc0620c: 020c8f63 beqz s9,3bc0624a + 3bc06210: 7c0c360b extu a2,s8,31,0 + 3bc06214: 85d6 mv a1,s5 + 3bc06216: 8522 mv a0,s0 + 3bc06218: ec42 sd a6,24(sp) + 3bc0621a: 91bff0ef jal ra,3bc05b34 + 3bc0621e: 0005049b sext.w s1,a0 + 3bc06222: 6862 ld a6,24(sp) + 3bc06224: ec91 bnez s1,3bc06240 + 3bc06226: 000d3783 ld a5,0(s10) + 3bc0622a: 983e add a6,a6,a5 + 3bc0622c: 010d3023 sd a6,0(s10) + 3bc06230: bf95 j 3bc061a4 + 3bc06232: 7c0bb60b extu a2,s7,31,0 + 3bc06236: 06860613 addi a2,a2,104 + 3bc0623a: 4801 li a6,0 + 3bc0623c: 9622 add a2,a2,s0 + 3bc0623e: bf55 j 3bc061f2 + 3bc06240: 000c8563 beqz s9,3bc0624a + 3bc06244: 4789 li a5,2 + 3bc06246: 04f49a63 bne s1,a5,3bc0629a + 3bc0624a: 03543823 sd s5,48(s0) + 3bc0624e: 8656 mv a2,s5 + 3bc06250: 85d2 mv a1,s4 + 3bc06252: 8522 mv a0,s0 + 3bc06254: d56fe0ef jal ra,3bc047aa + 3bc06258: e60514e3 bnez a0,3bc060c0 + 3bc0625c: 781c ld a5,48(s0) + 3bc0625e: 415787bb subw a5,a5,s5 + 3bc06262: 02fc6763 bltu s8,a5,3bc06290 + 3bc06266: 66c2 ld a3,16(sp) + 3bc06268: 40fc073b subw a4,s8,a5 + 3bc0626c: 02e6e263 bltu a3,a4,3bc06290 + 3bc06270: 000d3703 ld a4,0(s10) + 3bc06274: 417787bb subw a5,a5,s7 + 3bc06278: 7c07b78b extu a5,a5,31,0 + 3bc0627c: 973e add a4,a4,a5 + 3bc0627e: 00ed3023 sd a4,0(s10) + 3bc06282: 40fd8db3 sub s11,s11,a5 + 3bc06286: 00f90733 add a4,s2,a5 + 3bc0628a: 06042223 sw zero,100(s0) + 3bc0628e: bf99 j 3bc061e4 + 3bc06290: 44ad li s1,11 + 3bc06292: bd05 j 3bc060c2 + 3bc06294: 67a2 ld a5,8(sp) + 3bc06296: ec0787e3 beqz a5,3bc06164 + 3bc0629a: 4789 li a5,2 + 3bc0629c: 00f9a023 sw a5,0(s3) + 3bc062a0: b505 j 3bc060c0 + 3bc062a2: 67a2 ld a5,8(sp) + 3bc062a4: ec0780e3 beqz a5,3bc06164 + 3bc062a8: 4c85 li s9,1 + 3bc062aa: b5c1 j 3bc0616a + +000000003bc062ac : + 3bc062ac: 1141 addi sp,sp,-16 + 3bc062ae: e022 sd s0,0(sp) + 3bc062b0: 842a mv s0,a0 + 3bc062b2: 659c ld a5,8(a1) + 3bc062b4: 852e mv a0,a1 + 3bc062b6: 640c ld a1,8(s0) + 3bc062b8: e406 sd ra,8(sp) + 3bc062ba: 9782 jalr a5 + 3bc062bc: 60a2 ld ra,8(sp) + 3bc062be: 00043423 sd zero,8(s0) + 3bc062c2: 6402 ld s0,0(sp) + 3bc062c4: 0141 addi sp,sp,16 + 3bc062c6: 8082 ret + +000000003bc062c8 : + 3bc062c8: 1101 addi sp,sp,-32 + 3bc062ca: 6518 ld a4,8(a0) + 3bc062cc: e426 sd s1,8(sp) + 3bc062ce: 9db1 addw a1,a1,a2 + 3bc062d0: 30000493 li s1,768 + 3bc062d4: e822 sd s0,16(sp) + 3bc062d6: 00b494bb sllw s1,s1,a1 + 3bc062da: ec06 sd ra,24(sp) + 3bc062dc: e04a sd s2,0(sp) + 3bc062de: 842a mv s0,a0 + 3bc062e0: 7c04849b addiw s1,s1,1984 + 3bc062e4: c719 beqz a4,3bc062f2 + 3bc062e6: 5138 lw a4,96(a0) + 3bc062e8: 0004879b sext.w a5,s1 + 3bc062ec: 4501 li a0,0 + 3bc062ee: 02f70a63 beq a4,a5,3bc06322 + 3bc062f2: 85b6 mv a1,a3 + 3bc062f4: 8522 mv a0,s0 + 3bc062f6: 8936 mv s2,a3 + 3bc062f8: fb5ff0ef jal ra,3bc062ac + 3bc062fc: 00093783 ld a5,0(s2) + 3bc06300: 02049713 slli a4,s1,0x20 + 3bc06304: 01f75593 srli a1,a4,0x1f + 3bc06308: 854a mv a0,s2 + 3bc0630a: 9782 jalr a5 + 3bc0630c: 87aa mv a5,a0 + 3bc0630e: e408 sd a0,8(s0) + 3bc06310: 4509 li a0,2 + 3bc06312: cb81 beqz a5,3bc06322 + 3bc06314: 6505 lui a0,0x1 + 3bc06316: d0050513 addi a0,a0,-768 # d00 <__BSS_SIZE__-0x4f10> + 3bc0631a: 97aa add a5,a5,a0 + 3bc0631c: e81c sd a5,16(s0) + 3bc0631e: d024 sw s1,96(s0) + 3bc06320: 4501 li a0,0 + 3bc06322: 60e2 ld ra,24(sp) + 3bc06324: 6442 ld s0,16(sp) + 3bc06326: 64a2 ld s1,8(sp) + 3bc06328: 6902 ld s2,0(sp) + 3bc0632a: 6105 addi sp,sp,32 + 3bc0632c: 8082 ret + +000000003bc0632e : + 3bc0632e: 4791 li a5,4 + 3bc06330: 00c7e463 bltu a5,a2,3bc06338 + 3bc06334: 4511 li a0,4 + 3bc06336: 8082 ret + 3bc06338: 0015a703 lw a4,1(a1) + 3bc0633c: 6685 lui a3,0x1 + 3bc0633e: 87ba mv a5,a4 + 3bc06340: 00d77363 bgeu a4,a3,3bc06346 + 3bc06344: 6785 lui a5,0x1 + 3bc06346: c15c sw a5,4(a0) + 3bc06348: 0005c783 lbu a5,0(a1) + 3bc0634c: 0e000713 li a4,224 + 3bc06350: fef762e3 bltu a4,a5,3bc06334 + 3bc06354: 4725 li a4,9 + 3bc06356: 02e7f6bb remuw a3,a5,a4 + 3bc0635a: 02e7d7bb divuw a5,a5,a4 + 3bc0635e: 4715 li a4,5 + 3bc06360: 00d50023 sb a3,0(a0) + 3bc06364: 02e7d6bb divuw a3,a5,a4 + 3bc06368: 02e7f7bb remuw a5,a5,a4 + 3bc0636c: 00d50123 sb a3,2(a0) + 3bc06370: 00f500a3 sb a5,1(a0) + 3bc06374: 4501 li a0,0 + 3bc06376: 8082 ret + +000000003bc06378 : + 3bc06378: 7179 addi sp,sp,-48 + 3bc0637a: f022 sd s0,32(sp) + 3bc0637c: 842a mv s0,a0 + 3bc0637e: 0828 addi a0,sp,24 + 3bc06380: f406 sd ra,40(sp) + 3bc06382: e436 sd a3,8(sp) + 3bc06384: fabff0ef jal ra,3bc0632e + 3bc06388: ed01 bnez a0,3bc063a0 + 3bc0638a: 66a2 ld a3,8(sp) + 3bc0638c: 01914603 lbu a2,25(sp) + 3bc06390: 01814583 lbu a1,24(sp) + 3bc06394: 8522 mv a0,s0 + 3bc06396: f33ff0ef jal ra,3bc062c8 + 3bc0639a: e119 bnez a0,3bc063a0 + 3bc0639c: 67e2 ld a5,24(sp) + 3bc0639e: e01c sd a5,0(s0) + 3bc063a0: 70a2 ld ra,40(sp) + 3bc063a2: 7402 ld s0,32(sp) + 3bc063a4: 6145 addi sp,sp,48 + 3bc063a6: 8082 ret + +000000003bc063a8 : + 3bc063a8: 7155 addi sp,sp,-208 + 3bc063aa: e1a2 sd s0,192(sp) + 3bc063ac: f152 sd s4,160(sp) + 3bc063ae: ed56 sd s5,152(sp) + 3bc063b0: e586 sd ra,200(sp) + 3bc063b2: fd26 sd s1,184(sp) + 3bc063b4: f94a sd s2,176(sp) + 3bc063b6: f54e sd s3,168(sp) + 3bc063b8: e95a sd s6,144(sp) + 3bc063ba: e55e sd s7,136(sp) + 3bc063bc: e162 sd s8,128(sp) + 3bc063be: 0005ba03 ld s4,0(a1) + 3bc063c2: 0006ba83 ld s5,0(a3) # 1000 <__BSS_SIZE__-0x4c10> + 3bc063c6: 0006b023 sd zero,0(a3) + 3bc063ca: 0005b023 sd zero,0(a1) + 3bc063ce: 833a mv t1,a4 + 3bc063d0: 0008a023 sw zero,0(a7) + 3bc063d4: 4711 li a4,4 + 3bc063d6: 4419 li s0,6 + 3bc063d8: 07577063 bgeu a4,s5,3bc06438 + 3bc063dc: 84b6 mv s1,a3 + 3bc063de: 66ce ld a3,208(sp) + 3bc063e0: 8bb2 mv s7,a2 + 3bc063e2: 8c2e mv s8,a1 + 3bc063e4: 89aa mv s3,a0 + 3bc063e6: 863e mv a2,a5 + 3bc063e8: 859a mv a1,t1 + 3bc063ea: 850a mv a0,sp + 3bc063ec: 8946 mv s2,a7 + 3bc063ee: 8b42 mv s6,a6 + 3bc063f0: ec02 sd zero,24(sp) + 3bc063f2: e402 sd zero,8(sp) + 3bc063f4: f85ff0ef jal ra,3bc06378 + 3bc063f8: 842a mv s0,a0 + 3bc063fa: ed1d bnez a0,3bc06438 + 3bc063fc: 850a mv a0,sp + 3bc063fe: ec4e sd s3,24(sp) + 3bc06400: f052 sd s4,32(sp) + 3bc06402: c1bff0ef jal ra,3bc0601c + 3bc06406: 87ca mv a5,s2 + 3bc06408: 0154b023 sd s5,0(s1) + 3bc0640c: 875a mv a4,s6 + 3bc0640e: 86a6 mv a3,s1 + 3bc06410: 865e mv a2,s7 + 3bc06412: 85d2 mv a1,s4 + 3bc06414: 850a mv a0,sp + 3bc06416: c1bff0ef jal ra,3bc06030 + 3bc0641a: 77a2 ld a5,40(sp) + 3bc0641c: 842a mv s0,a0 + 3bc0641e: 00fc3023 sd a5,0(s8) + 3bc06422: e519 bnez a0,3bc06430 + 3bc06424: 00092703 lw a4,0(s2) + 3bc06428: 478d li a5,3 + 3bc0642a: 00f71363 bne a4,a5,3bc06430 + 3bc0642e: 4419 li s0,6 + 3bc06430: 65ce ld a1,208(sp) + 3bc06432: 850a mv a0,sp + 3bc06434: e79ff0ef jal ra,3bc062ac + 3bc06438: 60ae ld ra,200(sp) + 3bc0643a: 8522 mv a0,s0 + 3bc0643c: 640e ld s0,192(sp) + 3bc0643e: 74ea ld s1,184(sp) + 3bc06440: 794a ld s2,176(sp) + 3bc06442: 79aa ld s3,168(sp) + 3bc06444: 7a0a ld s4,160(sp) + 3bc06446: 6aea ld s5,152(sp) + 3bc06448: 6b4a ld s6,144(sp) + 3bc0644a: 6baa ld s7,136(sp) + 3bc0644c: 6c0a ld s8,128(sp) + 3bc0644e: 6169 addi sp,sp,208 + 3bc06450: 8082 ret + +000000003bc06452 : + 3bc06452: 00154783 lbu a5,1(a0) + 3bc06456: 00254703 lbu a4,2(a0) + 3bc0645a: 00054683 lbu a3,0(a0) + 3bc0645e: 00354503 lbu a0,3(a0) + 3bc06462: 0107171b slliw a4,a4,0x10 + 3bc06466: 0087979b slliw a5,a5,0x8 + 3bc0646a: 9fb9 addw a5,a5,a4 + 3bc0646c: 9fb5 addw a5,a5,a3 + 3bc0646e: 0185151b slliw a0,a0,0x18 + 3bc06472: 9d3d addw a0,a0,a5 + 3bc06474: 8082 ret + +000000003bc06476 : + 3bc06476: 40e58733 sub a4,a1,a4 + 3bc0647a: 26050763 beqz a0,3bc066e8 + 3bc0647e: 00c50e33 add t3,a0,a2 + 3bc06482: 7119 addi sp,sp,-128 + 3bc06484: ff0e0793 addi a5,t3,-16 # fffff0 <__BSS_SIZE__+0xffa3e0> + 3bc06488: ecce sd s3,88(sp) + 3bc0648a: 00d58eb3 add t4,a1,a3 + 3bc0648e: fc86 sd ra,120(sp) + 3bc06490: f8a2 sd s0,112(sp) + 3bc06492: f4a6 sd s1,104(sp) + 3bc06494: f0ca sd s2,96(sp) + 3bc06496: e8d2 sd s4,80(sp) + 3bc06498: e4d6 sd s5,72(sp) + 3bc0649a: e0da sd s6,64(sp) + 3bc0649c: fc5e sd s7,56(sp) + 3bc0649e: f862 sd s8,48(sp) + 3bc064a0: f466 sd s9,40(sp) + 3bc064a2: f06a sd s10,32(sp) + 3bc064a4: ec6e sd s11,24(sp) + 3bc064a6: e43e sd a5,8(sp) + 3bc064a8: 832a mv t1,a0 + 3bc064aa: fe0e8993 addi s3,t4,-32 + 3bc064ae: ea95 bnez a3,3bc064e2 + 3bc064b0: 4785 li a5,1 + 3bc064b2: 557d li a0,-1 + 3bc064b4: 00f61863 bne a2,a5,3bc064c4 + 3bc064b8: 00034503 lbu a0,0(t1) + 3bc064bc: 00a03533 snez a0,a0 + 3bc064c0: 0005250b ext a0,a0,0,0 + 3bc064c4: 70e6 ld ra,120(sp) + 3bc064c6: 7446 ld s0,112(sp) + 3bc064c8: 74a6 ld s1,104(sp) + 3bc064ca: 7906 ld s2,96(sp) + 3bc064cc: 69e6 ld s3,88(sp) + 3bc064ce: 6a46 ld s4,80(sp) + 3bc064d0: 6aa6 ld s5,72(sp) + 3bc064d2: 6b06 ld s6,64(sp) + 3bc064d4: 7be2 ld s7,56(sp) + 3bc064d6: 7c42 ld s8,48(sp) + 3bc064d8: 7ca2 ld s9,40(sp) + 3bc064da: 7d02 ld s10,32(sp) + 3bc064dc: 6de2 ld s11,24(sp) + 3bc064de: 6109 addi sp,sp,128 + 3bc064e0: 8082 ret + 3bc064e2: 557d li a0,-1 + 3bc064e4: d265 beqz a2,3bc064c4 + 3bc064e6: 879a mv a5,t1 + 3bc064e8: 882e mv a6,a1 + 3bc064ea: 4fbd li t6,15 + 3bc064ec: 429d li t0,7 + 3bc064ee: ff4e8393 addi t2,t4,-12 + 3bc064f2: 4a41 li s4,16 + 3bc064f4: ff9e8f13 addi t5,t4,-7 + 3bc064f8: ffbe8a93 addi s5,t4,-5 + 3bc064fc: 00005b17 auipc s6,0x5 + 3bc06500: c9cb0b13 addi s6,s6,-868 # 3bc0b198 + 3bc06504: 00005b97 auipc s7,0x5 + 3bc06508: c74b8b93 addi s7,s7,-908 # 3bc0b178 + 3bc0650c: ffce0c13 addi s8,t3,-4 + 3bc06510: 0ff00493 li s1,255 + 3bc06514: ff8e0c93 addi s9,t3,-8 + 3bc06518: ff1e0913 addi s2,t3,-15 + 3bc0651c: 5d7d li s10,-1 + 3bc0651e: 9817c50b lbuia a0,(a5),1,0 + 3bc06522: 00455693 srli a3,a0,0x4 + 3bc06526: 0045561b srliw a2,a0,0x4 + 3bc0652a: 07f68063 beq a3,t6,3bc0658a + 3bc0652e: 0109b8b3 sltu a7,s3,a6 + 3bc06532: 0018c893 xori a7,a7,1 + 3bc06536: 0ff8f893 andi a7,a7,255 + 3bc0653a: 00c80433 add s0,a6,a2 + 3bc0653e: 00c786b3 add a3,a5,a2 + 3bc06542: 06088d63 beqz a7,3bc065bc + 3bc06546: 68a2 ld a7,8(sp) + 3bc06548: 0717fa63 bgeu a5,a7,3bc065bc + 3bc0654c: 6390 ld a2,0(a5) + 3bc0654e: 893d andi a0,a0,15 + 3bc06550: 00c83023 sd a2,0(a6) + 3bc06554: 679c ld a5,8(a5) + 3bc06556: 862a mv a2,a0 + 3bc06558: 00f83423 sd a5,8(a6) + 3bc0655c: 87b6 mv a5,a3 + 3bc0655e: b827c88b lhuia a7,(a5),2,0 + 3bc06562: 411406b3 sub a3,s0,a7 + 3bc06566: 0bf50763 beq a0,t6,3bc06614 + 3bc0656a: 0d12f563 bgeu t0,a7,3bc06634 + 3bc0656e: 0ce6e363 bltu a3,a4,3bc06634 + 3bc06572: 6290 ld a2,0(a3) + 3bc06574: 0511 addi a0,a0,4 + 3bc06576: 00a40833 add a6,s0,a0 + 3bc0657a: e010 sd a2,0(s0) + 3bc0657c: 6690 ld a2,8(a3) + 3bc0657e: e410 sd a2,8(s0) + 3bc06580: 0106d683 lhu a3,16(a3) + 3bc06584: 00d41823 sh a3,16(s0) + 3bc06588: bf59 j 3bc0651e + 3bc0658a: 0527fd63 bgeu a5,s2,3bc065e4 + 3bc0658e: 4601 li a2,0 + 3bc06590: 9817c88b lbuia a7,(a5),1,0 + 3bc06594: 00c8863b addw a2,a7,a2 + 3bc06598: 0527f963 bgeu a5,s2,3bc065ea + 3bc0659c: fe988ae3 beq a7,s1,3bc06590 + 3bc065a0: 4681 li a3,0 + 3bc065a2: 7c06360b extu a2,a2,31,0 + 3bc065a6: 063d addi a2,a2,15 + 3bc065a8: 13a68a63 beq a3,s10,3bc066dc + 3bc065ac: 010606b3 add a3,a2,a6 + 3bc065b0: 1306e663 bltu a3,a6,3bc066dc + 3bc065b4: 00f606b3 add a3,a2,a5 + 3bc065b8: 12f6e263 bltu a3,a5,3bc066dc + 3bc065bc: 00c80433 add s0,a6,a2 + 3bc065c0: 00c788b3 add a7,a5,a2 + 3bc065c4: 0083e463 bltu t2,s0,3bc065cc + 3bc065c8: 031cf363 bgeu s9,a7,3bc065ee + 3bc065cc: 111e1863 bne t3,a7,3bc066dc + 3bc065d0: 108ee663 bltu t4,s0,3bc066dc + 3bc065d4: 84ae mv s1,a1 + 3bc065d6: 8542 mv a0,a6 + 3bc065d8: 85be mv a1,a5 + 3bc065da: cf2fa0ef jal ra,3bc00acc + 3bc065de: 4094053b subw a0,s0,s1 + 3bc065e2: b5cd j 3bc064c4 + 3bc065e4: 56fd li a3,-1 + 3bc065e6: 4601 li a2,0 + 3bc065e8: bf6d j 3bc065a2 + 3bc065ea: 56f9 li a3,-2 + 3bc065ec: bf5d j 3bc065a2 + 3bc065ee: 4681 li a3,0 + 3bc065f0: 60d7c60b lrd a2,a5,a3,0 + 3bc065f4: 60d8560b srd a2,a6,a3,0 + 3bc065f8: 06a1 addi a3,a3,8 + 3bc065fa: 00d80633 add a2,a6,a3 + 3bc065fe: fe8669e3 bltu a2,s0,3bc065f0 + 3bc06602: 87c6 mv a5,a7 + 3bc06604: b827c88b lhuia a7,(a5),2,0 + 3bc06608: 00f57613 andi a2,a0,15 + 3bc0660c: 411406b3 sub a3,s0,a7 + 3bc06610: 03f61263 bne a2,t6,3bc06634 + 3bc06614: 4601 li a2,0 + 3bc06616: 9817c80b lbuia a6,(a5),1,0 + 3bc0661a: 00c8063b addw a2,a6,a2 + 3bc0661e: 0b87ff63 bgeu a5,s8,3bc066dc + 3bc06622: fe980ae3 beq a6,s1,3bc06616 + 3bc06626: 7c06360b extu a2,a2,31,0 + 3bc0662a: 063d addi a2,a2,15 + 3bc0662c: 00860533 add a0,a2,s0 + 3bc06630: 0a856663 bltu a0,s0,3bc066dc + 3bc06634: 0611 addi a2,a2,4 + 3bc06636: 0ae6e363 bltu a3,a4,3bc066dc + 3bc0663a: 00c40833 add a6,s0,a2 + 3bc0663e: 0712e463 bltu t0,a7,3bc066a6 + 3bc06642: 00042023 sw zero,0(s0) + 3bc06646: 0006c503 lbu a0,0(a3) + 3bc0664a: 00a40023 sb a0,0(s0) + 3bc0664e: 0016c503 lbu a0,1(a3) + 3bc06652: 00a400a3 sb a0,1(s0) + 3bc06656: 0026c503 lbu a0,2(a3) + 3bc0665a: 00a40123 sb a0,2(s0) + 3bc0665e: 0036c503 lbu a0,3(a3) + 3bc06662: 00a401a3 sb a0,3(s0) + 3bc06666: c51b450b lrwu a0,s6,a7,2 + 3bc0666a: 00a68db3 add s11,a3,a0 + 3bc0666e: 40a6c68b lrw a3,a3,a0,0 + 3bc06672: c054 sw a3,4(s0) + 3bc06674: 451bc68b lrw a3,s7,a7,2 + 3bc06678: 40dd86b3 sub a3,s11,a3 + 3bc0667c: 0503f363 bgeu t2,a6,3bc066c2 + 3bc06680: 050aee63 bltu s5,a6,3bc066dc + 3bc06684: 0421 addi s0,s0,8 + 3bc06686: 01e47e63 bgeu s0,t5,3bc066a2 + 3bc0668a: 8536 mv a0,a3 + 3bc0668c: 8622 mv a2,s0 + 3bc0668e: 7885488b ldia a7,(a0),8,0 + 3bc06692: 7886588b sdia a7,(a2),8,0 + 3bc06696: ffe66ce3 bltu a2,t5,3bc0668e + 3bc0669a: 408f0433 sub s0,t5,s0 + 3bc0669e: 96a2 add a3,a3,s0 + 3bc066a0: 847a mv s0,t5 + 3bc066a2: 4601 li a2,0 + 3bc066a4: a811 j 3bc066b8 + 3bc066a6: 7886c50b ldia a0,(a3),8,0 + 3bc066aa: e008 sd a0,0(s0) + 3bc066ac: bfc1 j 3bc0667c + 3bc066ae: 80c6c50b lrbu a0,a3,a2,0 + 3bc066b2: 00c4550b srb a0,s0,a2,0 + 3bc066b6: 0605 addi a2,a2,1 + 3bc066b8: 00c40533 add a0,s0,a2 + 3bc066bc: ff0569e3 bltu a0,a6,3bc066ae + 3bc066c0: bdb9 j 3bc0651e + 3bc066c2: 6288 ld a0,0(a3) + 3bc066c4: e408 sd a0,8(s0) + 3bc066c6: e4ca7ce3 bgeu s4,a2,3bc0651e + 3bc066ca: 0441 addi s0,s0,16 + 3bc066cc: 06a1 addi a3,a3,8 + 3bc066ce: 7886c60b ldia a2,(a3),8,0 + 3bc066d2: 7884560b sdia a2,(s0),8,0 + 3bc066d6: ff046ce3 bltu s0,a6,3bc066ce + 3bc066da: b591 j 3bc0651e + 3bc066dc: 40678533 sub a0,a5,t1 + 3bc066e0: fff54513 not a0,a0 + 3bc066e4: 2501 sext.w a0,a0 + 3bc066e6: bbf9 j 3bc064c4 + 3bc066e8: 557d li a0,-1 + 3bc066ea: 8082 ret + +000000003bc066ec : + 3bc066ec: 06853803 ld a6,104(a0) + 3bc066f0: 7179 addi sp,sp,-48 + 3bc066f2: f022 sd s0,32(sp) + 3bc066f4: f406 sd ra,40(sp) + 3bc066f6: ec26 sd s1,24(sp) + 3bc066f8: e84a sd s2,16(sp) + 3bc066fa: e44e sd s3,8(sp) + 3bc066fc: 842a mv s0,a0 + 3bc066fe: 00081363 bnez a6,3bc06704 + 3bc06702: f12c sd a1,96(a0) + 3bc06704: 7028 ld a0,96(s0) + 3bc06706: 010507b3 add a5,a0,a6 + 3bc0670a: 00f59663 bne a1,a5,3bc06716 + 3bc0670e: 00c807b3 add a5,a6,a2 + 3bc06712: f43c sd a5,104(s0) + 3bc06714: a811 j 3bc06728 + 3bc06716: 40d588b3 sub a7,a1,a3 + 3bc0671a: 98b2 add a7,a7,a2 + 3bc0671c: 67c1 lui a5,0x10 + 3bc0671e: 00f8ec63 bltu a7,a5,3bc06736 + 3bc06722: f034 sd a3,96(s0) + 3bc06724: 07143423 sd a7,104(s0) + 3bc06728: 70a2 ld ra,40(sp) + 3bc0672a: 7402 ld s0,32(sp) + 3bc0672c: 64e2 ld s1,24(sp) + 3bc0672e: 6942 ld s2,16(sp) + 3bc06730: 69a2 ld s3,8(sp) + 3bc06732: 6145 addi sp,sp,48 + 3bc06734: 8082 ret + 3bc06736: 6c34 ld a3,88(s0) + 3bc06738: 84b2 mv s1,a2 + 3bc0673a: 89ae mv s3,a1 + 3bc0673c: cb29 beqz a4,3bc0678e + 3bc0673e: 00d51563 bne a0,a3,3bc06748 + 3bc06742: 00c807b3 add a5,a6,a2 + 3bc06746: b7f1 j 3bc06712 + 3bc06748: 07043903 ld s2,112(s0) + 3bc0674c: 604c ld a1,128(s0) + 3bc0674e: 7c38 ld a4,120(s0) + 3bc06750: 40d90933 sub s2,s2,a3 + 3bc06754: 40b805b3 sub a1,a6,a1 + 3bc06758: 4601 li a2,0 + 3bc0675a: 00e7ea63 bltu a5,a4,3bc0676e + 3bc0675e: 40e78633 sub a2,a5,a4 + 3bc06762: 00c937b3 sltu a5,s2,a2 + 3bc06766: 0017c793 xori a5,a5,1 + 3bc0676a: 40f9160b mveqz a2,s2,a5 + 3bc0676e: 40c907b3 sub a5,s2,a2 + 3bc06772: 8d91 sub a1,a1,a2 + 3bc06774: 95aa add a1,a1,a0 + 3bc06776: 00f68533 add a0,a3,a5 + 3bc0677a: af2fa0ef jal ra,3bc00a6c + 3bc0677e: 6050 ld a2,128(s0) + 3bc06780: 6c3c ld a5,88(s0) + 3bc06782: 94b2 add s1,s1,a2 + 3bc06784: 9926 add s2,s2,s1 + 3bc06786: f03c sd a5,96(s0) + 3bc06788: 07243423 sd s2,104(s0) + 3bc0678c: bf71 j 3bc06728 + 3bc0678e: 02d51e63 bne a0,a3,3bc067ca + 3bc06792: 7c14 ld a3,56(s0) + 3bc06794: 00c80733 add a4,a6,a2 + 3bc06798: 00e6fe63 bgeu a3,a4,3bc067b4 + 3bc0679c: 40c78933 sub s2,a5,a2 + 3bc067a0: 40f607b3 sub a5,a2,a5 + 3bc067a4: 97c2 add a5,a5,a6 + 3bc067a6: 864a mv a2,s2 + 3bc067a8: 00f505b3 add a1,a0,a5 + 3bc067ac: ac0fa0ef jal ra,3bc00a6c + 3bc067b0: 07243423 sd s2,104(s0) + 3bc067b4: 6c28 ld a0,88(s0) + 3bc067b6: 743c ld a5,104(s0) + 3bc067b8: 8626 mv a2,s1 + 3bc067ba: 85ce mv a1,s3 + 3bc067bc: 953e add a0,a0,a5 + 3bc067be: aaefa0ef jal ra,3bc00a6c + 3bc067c2: 7430 ld a2,104(s0) + 3bc067c4: 94b2 add s1,s1,a2 + 3bc067c6: f424 sd s1,104(s0) + 3bc067c8: b785 j 3bc06728 + 3bc067ca: 8f91 sub a5,a5,a2 + 3bc067cc: 0107b733 sltu a4,a5,a6 + 3bc067d0: 00174713 xori a4,a4,1 + 3bc067d4: 42e8178b mvnez a5,a6,a4 + 3bc067d8: 40f805b3 sub a1,a6,a5 + 3bc067dc: 863e mv a2,a5 + 3bc067de: 95aa add a1,a1,a0 + 3bc067e0: 8536 mv a0,a3 + 3bc067e2: 893e mv s2,a5 + 3bc067e4: a88fa0ef jal ra,3bc00a6c + 3bc067e8: 6c28 ld a0,88(s0) + 3bc067ea: 8626 mv a2,s1 + 3bc067ec: 85ce mv a1,s3 + 3bc067ee: 954a add a0,a0,s2 + 3bc067f0: a7cfa0ef jal ra,3bc00a6c + 3bc067f4: 6c3c ld a5,88(s0) + 3bc067f6: 94ca add s1,s1,s2 + 3bc067f8: f03c sd a5,96(s0) + 3bc067fa: b7f1 j 3bc067c6 + +000000003bc067fc : + 3bc067fc: 26050463 beqz a0,3bc06a64 + 3bc06800: 7159 addi sp,sp,-112 + 3bc06802: eca6 sd s1,88(sp) + 3bc06804: 00c50833 add a6,a0,a2 + 3bc06808: 00d588b3 add a7,a1,a3 + 3bc0680c: f486 sd ra,104(sp) + 3bc0680e: f0a2 sd s0,96(sp) + 3bc06810: e8ca sd s2,80(sp) + 3bc06812: e4ce sd s3,72(sp) + 3bc06814: e0d2 sd s4,64(sp) + 3bc06816: fc56 sd s5,56(sp) + 3bc06818: f85a sd s6,48(sp) + 3bc0681a: f45e sd s7,40(sp) + 3bc0681c: f062 sd s8,32(sp) + 3bc0681e: ec66 sd s9,24(sp) + 3bc06820: e86a sd s10,16(sp) + 3bc06822: e46e sd s11,8(sp) + 3bc06824: ff080393 addi t2,a6,-16 + 3bc06828: fe088493 addi s1,a7,-32 + 3bc0682c: ea9d bnez a3,3bc06862 + 3bc0682e: 4705 li a4,1 + 3bc06830: 57fd li a5,-1 + 3bc06832: 00e61863 bne a2,a4,3bc06842 + 3bc06836: 00054783 lbu a5,0(a0) + 3bc0683a: 00f037b3 snez a5,a5 + 3bc0683e: 0007a78b ext a5,a5,0,0 + 3bc06842: 70a6 ld ra,104(sp) + 3bc06844: 7406 ld s0,96(sp) + 3bc06846: 64e6 ld s1,88(sp) + 3bc06848: 6946 ld s2,80(sp) + 3bc0684a: 69a6 ld s3,72(sp) + 3bc0684c: 6a06 ld s4,64(sp) + 3bc0684e: 7ae2 ld s5,56(sp) + 3bc06850: 7b42 ld s6,48(sp) + 3bc06852: 7ba2 ld s7,40(sp) + 3bc06854: 7c02 ld s8,32(sp) + 3bc06856: 6ce2 ld s9,24(sp) + 3bc06858: 6d42 ld s10,16(sp) + 3bc0685a: 6da2 ld s11,8(sp) + 3bc0685c: 853e mv a0,a5 + 3bc0685e: 6165 addi sp,sp,112 + 3bc06860: 8082 ret + 3bc06862: 57fd li a5,-1 + 3bc06864: de79 beqz a2,3bc06842 + 3bc06866: 87aa mv a5,a0 + 3bc06868: 872e mv a4,a1 + 3bc0686a: 4e3d li t3,15 + 3bc0686c: 4e9d li t4,7 + 3bc0686e: ff488f13 addi t5,a7,-12 + 3bc06872: 4941 li s2,16 + 3bc06874: ff988313 addi t1,a7,-7 + 3bc06878: ffb88993 addi s3,a7,-5 + 3bc0687c: 00005a17 auipc s4,0x5 + 3bc06880: 91ca0a13 addi s4,s4,-1764 # 3bc0b198 + 3bc06884: 00005a97 auipc s5,0x5 + 3bc06888: 8f4a8a93 addi s5,s5,-1804 # 3bc0b178 + 3bc0688c: ffc80b13 addi s6,a6,-4 + 3bc06890: 0ff00f93 li t6,255 + 3bc06894: ff880b93 addi s7,a6,-8 + 3bc06898: ff180293 addi t0,a6,-15 + 3bc0689c: 5c7d li s8,-1 + 3bc0689e: 9817c68b lbuia a3,(a5),1,0 + 3bc068a2: 0046d413 srli s0,a3,0x4 + 3bc068a6: 0046d61b srliw a2,a3,0x4 + 3bc068aa: 05c40d63 beq s0,t3,3bc06904 + 3bc068ae: 00e4bd33 sltu s10,s1,a4 + 3bc068b2: 001d4d13 xori s10,s10,1 + 3bc068b6: 0ffd7d13 andi s10,s10,255 + 3bc068ba: 00c70433 add s0,a4,a2 + 3bc068be: 00c78cb3 add s9,a5,a2 + 3bc068c2: 060d0a63 beqz s10,3bc06936 + 3bc068c6: 0677f863 bgeu a5,t2,3bc06936 + 3bc068ca: 6390 ld a2,0(a5) + 3bc068cc: e310 sd a2,0(a4) + 3bc068ce: 679c ld a5,8(a5) + 3bc068d0: e71c sd a5,8(a4) + 3bc068d2: 87e6 mv a5,s9 + 3bc068d4: b827cc8b lhuia s9,(a5),2,0 + 3bc068d8: 00f6f713 andi a4,a3,15 + 3bc068dc: 86ba mv a3,a4 + 3bc068de: 41940633 sub a2,s0,s9 + 3bc068e2: 0bc70563 beq a4,t3,3bc0698c + 3bc068e6: 0d9ef363 bgeu t4,s9,3bc069ac + 3bc068ea: 0cb66163 bltu a2,a1,3bc069ac + 3bc068ee: 6214 ld a3,0(a2) + 3bc068f0: 0711 addi a4,a4,4 + 3bc068f2: 9722 add a4,a4,s0 + 3bc068f4: e014 sd a3,0(s0) + 3bc068f6: 6614 ld a3,8(a2) + 3bc068f8: e414 sd a3,8(s0) + 3bc068fa: 01065683 lhu a3,16(a2) + 3bc068fe: 00d41823 sh a3,16(s0) + 3bc06902: bf71 j 3bc0689e + 3bc06904: 0457fd63 bgeu a5,t0,3bc0695e + 3bc06908: 4601 li a2,0 + 3bc0690a: 9817cc8b lbuia s9,(a5),1,0 + 3bc0690e: 00cc863b addw a2,s9,a2 + 3bc06912: 0457f963 bgeu a5,t0,3bc06964 + 3bc06916: fffc8ae3 beq s9,t6,3bc0690a + 3bc0691a: 4401 li s0,0 + 3bc0691c: 7c06360b extu a2,a2,31,0 + 3bc06920: 063d addi a2,a2,15 + 3bc06922: 13840c63 beq s0,s8,3bc06a5a + 3bc06926: 00e60433 add s0,a2,a4 + 3bc0692a: 12e46863 bltu s0,a4,3bc06a5a + 3bc0692e: 00f60433 add s0,a2,a5 + 3bc06932: 12f46463 bltu s0,a5,3bc06a5a + 3bc06936: 00c70433 add s0,a4,a2 + 3bc0693a: 00c78cb3 add s9,a5,a2 + 3bc0693e: 008f6463 bltu t5,s0,3bc06946 + 3bc06942: 039bf363 bgeu s7,s9,3bc06968 + 3bc06946: 11981a63 bne a6,s9,3bc06a5a + 3bc0694a: 1088e863 bltu a7,s0,3bc06a5a + 3bc0694e: 84ae mv s1,a1 + 3bc06950: 853a mv a0,a4 + 3bc06952: 85be mv a1,a5 + 3bc06954: 978fa0ef jal ra,3bc00acc + 3bc06958: 409407bb subw a5,s0,s1 + 3bc0695c: b5dd j 3bc06842 + 3bc0695e: 547d li s0,-1 + 3bc06960: 4601 li a2,0 + 3bc06962: bf6d j 3bc0691c + 3bc06964: 5479 li s0,-2 + 3bc06966: bf5d j 3bc0691c + 3bc06968: 4601 li a2,0 + 3bc0696a: 60c7cd0b lrd s10,a5,a2,0 + 3bc0696e: 60c75d0b srd s10,a4,a2,0 + 3bc06972: 0621 addi a2,a2,8 + 3bc06974: 00c70d33 add s10,a4,a2 + 3bc06978: fe8d69e3 bltu s10,s0,3bc0696a + 3bc0697c: 87e6 mv a5,s9 + 3bc0697e: b827cc8b lhuia s9,(a5),2,0 + 3bc06982: 8abd andi a3,a3,15 + 3bc06984: 41940633 sub a2,s0,s9 + 3bc06988: 03c69263 bne a3,t3,3bc069ac + 3bc0698c: 4681 li a3,0 + 3bc0698e: 9817cd0b lbuia s10,(a5),1,0 + 3bc06992: 00dd06bb addw a3,s10,a3 + 3bc06996: 0d67f263 bgeu a5,s6,3bc06a5a + 3bc0699a: fffd0ae3 beq s10,t6,3bc0698e + 3bc0699e: 7c06b68b extu a3,a3,31,0 + 3bc069a2: 06bd addi a3,a3,15 + 3bc069a4: 00868733 add a4,a3,s0 + 3bc069a8: 0a876963 bltu a4,s0,3bc06a5a + 3bc069ac: 0691 addi a3,a3,4 + 3bc069ae: 0ab66663 bltu a2,a1,3bc06a5a + 3bc069b2: 00d40733 add a4,s0,a3 + 3bc069b6: 079ee463 bltu t4,s9,3bc06a1e + 3bc069ba: 00042023 sw zero,0(s0) + 3bc069be: 00064d03 lbu s10,0(a2) + 3bc069c2: 01a40023 sb s10,0(s0) + 3bc069c6: 00164d03 lbu s10,1(a2) + 3bc069ca: 01a400a3 sb s10,1(s0) + 3bc069ce: 00264d03 lbu s10,2(a2) + 3bc069d2: 01a40123 sb s10,2(s0) + 3bc069d6: 00364d03 lbu s10,3(a2) + 3bc069da: 01a401a3 sb s10,3(s0) + 3bc069de: c59a4d0b lrwu s10,s4,s9,2 + 3bc069e2: 01a60db3 add s11,a2,s10 + 3bc069e6: 41a6460b lrw a2,a2,s10,0 + 3bc069ea: c050 sw a2,4(s0) + 3bc069ec: 459ac60b lrw a2,s5,s9,2 + 3bc069f0: 40cd8633 sub a2,s11,a2 + 3bc069f4: 04ef7463 bgeu t5,a4,3bc06a3c + 3bc069f8: 06e9e163 bltu s3,a4,3bc06a5a + 3bc069fc: 0421 addi s0,s0,8 + 3bc069fe: 00647e63 bgeu s0,t1,3bc06a1a + 3bc06a02: 8cb2 mv s9,a2 + 3bc06a04: 86a2 mv a3,s0 + 3bc06a06: 788ccd0b ldia s10,(s9),8,0 + 3bc06a0a: 7886dd0b sdia s10,(a3),8,0 + 3bc06a0e: fe66ece3 bltu a3,t1,3bc06a06 + 3bc06a12: 40830433 sub s0,t1,s0 + 3bc06a16: 9622 add a2,a2,s0 + 3bc06a18: 841a mv s0,t1 + 3bc06a1a: 4681 li a3,0 + 3bc06a1c: a819 j 3bc06a32 + 3bc06a1e: 78864c8b ldia s9,(a2),8,0 + 3bc06a22: 01943023 sd s9,0(s0) + 3bc06a26: b7f9 j 3bc069f4 + 3bc06a28: 80d64c8b lrbu s9,a2,a3,0 + 3bc06a2c: 00d45c8b srb s9,s0,a3,0 + 3bc06a30: 0685 addi a3,a3,1 + 3bc06a32: 00d40cb3 add s9,s0,a3 + 3bc06a36: feece9e3 bltu s9,a4,3bc06a28 + 3bc06a3a: b595 j 3bc0689e + 3bc06a3c: 00063c83 ld s9,0(a2) + 3bc06a40: 01943423 sd s9,8(s0) + 3bc06a44: e4d97de3 bgeu s2,a3,3bc0689e + 3bc06a48: 0441 addi s0,s0,16 + 3bc06a4a: 0621 addi a2,a2,8 + 3bc06a4c: 7886468b ldia a3,(a2),8,0 + 3bc06a50: 7884568b sdia a3,(s0),8,0 + 3bc06a54: fee46ce3 bltu s0,a4,3bc06a4c + 3bc06a58: b599 j 3bc0689e + 3bc06a5a: 8f89 sub a5,a5,a0 + 3bc06a5c: fff7c793 not a5,a5 + 3bc06a60: 2781 sext.w a5,a5 + 3bc06a62: b3c5 j 3bc06842 + 3bc06a64: 57fd li a5,-1 + 3bc06a66: 853e mv a0,a5 + 3bc06a68: 8082 ret + +000000003bc06a6a : + 3bc06a6a: 77c1 lui a5,0xffff0 + 3bc06a6c: 7119 addi sp,sp,-128 + 3bc06a6e: 97ae add a5,a5,a1 + 3bc06a70: fc86 sd ra,120(sp) + 3bc06a72: f8a2 sd s0,112(sp) + 3bc06a74: f4a6 sd s1,104(sp) + 3bc06a76: f0ca sd s2,96(sp) + 3bc06a78: ecce sd s3,88(sp) + 3bc06a7a: e8d2 sd s4,80(sp) + 3bc06a7c: e4d6 sd s5,72(sp) + 3bc06a7e: e0da sd s6,64(sp) + 3bc06a80: fc5e sd s7,56(sp) + 3bc06a82: f862 sd s8,48(sp) + 3bc06a84: f466 sd s9,40(sp) + 3bc06a86: f06a sd s10,32(sp) + 3bc06a88: ec6e sd s11,24(sp) + 3bc06a8a: e43e sd a5,8(sp) + 3bc06a8c: 24050263 beqz a0,3bc06cd0 + 3bc06a90: 00c50333 add t1,a0,a2 + 3bc06a94: 00d58e33 add t3,a1,a3 + 3bc06a98: 88aa mv a7,a0 + 3bc06a9a: ff030913 addi s2,t1,-16 + 3bc06a9e: fe0e0993 addi s3,t3,-32 + 3bc06aa2: ea95 bnez a3,3bc06ad6 + 3bc06aa4: 4785 li a5,1 + 3bc06aa6: 557d li a0,-1 + 3bc06aa8: 00f61863 bne a2,a5,3bc06ab8 + 3bc06aac: 0008c503 lbu a0,0(a7) + 3bc06ab0: 00a03533 snez a0,a0 + 3bc06ab4: 0005250b ext a0,a0,0,0 + 3bc06ab8: 70e6 ld ra,120(sp) + 3bc06aba: 7446 ld s0,112(sp) + 3bc06abc: 74a6 ld s1,104(sp) + 3bc06abe: 7906 ld s2,96(sp) + 3bc06ac0: 69e6 ld s3,88(sp) + 3bc06ac2: 6a46 ld s4,80(sp) + 3bc06ac4: 6aa6 ld s5,72(sp) + 3bc06ac6: 6b06 ld s6,64(sp) + 3bc06ac8: 7be2 ld s7,56(sp) + 3bc06aca: 7c42 ld s8,48(sp) + 3bc06acc: 7ca2 ld s9,40(sp) + 3bc06ace: 7d02 ld s10,32(sp) + 3bc06ad0: 6de2 ld s11,24(sp) + 3bc06ad2: 6109 addi sp,sp,128 + 3bc06ad4: 8082 ret + 3bc06ad6: 557d li a0,-1 + 3bc06ad8: d265 beqz a2,3bc06ab8 + 3bc06ada: 87c6 mv a5,a7 + 3bc06adc: 882e mv a6,a1 + 3bc06ade: 4f3d li t5,15 + 3bc06ae0: 4f9d li t6,7 + 3bc06ae2: ff4e0293 addi t0,t3,-12 + 3bc06ae6: 4a41 li s4,16 + 3bc06ae8: ff9e0e93 addi t4,t3,-7 + 3bc06aec: ffbe0a93 addi s5,t3,-5 + 3bc06af0: 00004b17 auipc s6,0x4 + 3bc06af4: 6a8b0b13 addi s6,s6,1704 # 3bc0b198 + 3bc06af8: 00004b97 auipc s7,0x4 + 3bc06afc: 680b8b93 addi s7,s7,1664 # 3bc0b178 + 3bc06b00: ffc30c13 addi s8,t1,-4 + 3bc06b04: 0ff00393 li t2,255 + 3bc06b08: ff830c93 addi s9,t1,-8 + 3bc06b0c: ff130493 addi s1,t1,-15 + 3bc06b10: 5d7d li s10,-1 + 3bc06b12: 9817c68b lbuia a3,(a5),1,0 + 3bc06b16: 0046d713 srli a4,a3,0x4 + 3bc06b1a: 0046d61b srliw a2,a3,0x4 + 3bc06b1e: 05e70b63 beq a4,t5,3bc06b74 + 3bc06b22: 0109b533 sltu a0,s3,a6 + 3bc06b26: 00154513 xori a0,a0,1 + 3bc06b2a: 0ff57513 andi a0,a0,255 + 3bc06b2e: 00c80433 add s0,a6,a2 + 3bc06b32: 00c78733 add a4,a5,a2 + 3bc06b36: c53d beqz a0,3bc06ba4 + 3bc06b38: 0727f663 bgeu a5,s2,3bc06ba4 + 3bc06b3c: 6390 ld a2,0(a5) + 3bc06b3e: 8abd andi a3,a3,15 + 3bc06b40: 00c83023 sd a2,0(a6) + 3bc06b44: 679c ld a5,8(a5) + 3bc06b46: 00f83423 sd a5,8(a6) + 3bc06b4a: 87ba mv a5,a4 + 3bc06b4c: b827c60b lhuia a2,(a5),2,0 + 3bc06b50: 40c40733 sub a4,s0,a2 + 3bc06b54: 0be68363 beq a3,t5,3bc06bfa + 3bc06b58: 0ccff163 bgeu t6,a2,3bc06c1a + 3bc06b5c: 6310 ld a2,0(a4) + 3bc06b5e: 0691 addi a3,a3,4 + 3bc06b60: 00d40833 add a6,s0,a3 + 3bc06b64: e010 sd a2,0(s0) + 3bc06b66: 6710 ld a2,8(a4) + 3bc06b68: e410 sd a2,8(s0) + 3bc06b6a: 01075703 lhu a4,16(a4) # 1000010 <__BSS_SIZE__+0xffa400> + 3bc06b6e: 00e41823 sh a4,16(s0) + 3bc06b72: b745 j 3bc06b12 + 3bc06b74: 0497fc63 bgeu a5,s1,3bc06bcc + 3bc06b78: 4601 li a2,0 + 3bc06b7a: 9817c50b lbuia a0,(a5),1,0 + 3bc06b7e: 9e29 addw a2,a2,a0 + 3bc06b80: 0497f963 bgeu a5,s1,3bc06bd2 + 3bc06b84: fe750be3 beq a0,t2,3bc06b7a + 3bc06b88: 4701 li a4,0 + 3bc06b8a: 7c06360b extu a2,a2,31,0 + 3bc06b8e: 063d addi a2,a2,15 + 3bc06b90: 13a70a63 beq a4,s10,3bc06cc4 + 3bc06b94: 01060733 add a4,a2,a6 + 3bc06b98: 13076663 bltu a4,a6,3bc06cc4 + 3bc06b9c: 00f60733 add a4,a2,a5 + 3bc06ba0: 12f76263 bltu a4,a5,3bc06cc4 + 3bc06ba4: 00c80433 add s0,a6,a2 + 3bc06ba8: 00c78533 add a0,a5,a2 + 3bc06bac: 0082e463 bltu t0,s0,3bc06bb4 + 3bc06bb0: 02acf363 bgeu s9,a0,3bc06bd6 + 3bc06bb4: 10a31863 bne t1,a0,3bc06cc4 + 3bc06bb8: 108e6663 bltu t3,s0,3bc06cc4 + 3bc06bbc: 84ae mv s1,a1 + 3bc06bbe: 8542 mv a0,a6 + 3bc06bc0: 85be mv a1,a5 + 3bc06bc2: f0bf90ef jal ra,3bc00acc + 3bc06bc6: 4094053b subw a0,s0,s1 + 3bc06bca: b5fd j 3bc06ab8 + 3bc06bcc: 577d li a4,-1 + 3bc06bce: 4601 li a2,0 + 3bc06bd0: bf6d j 3bc06b8a + 3bc06bd2: 5779 li a4,-2 + 3bc06bd4: bf5d j 3bc06b8a + 3bc06bd6: 4701 li a4,0 + 3bc06bd8: 60e7c60b lrd a2,a5,a4,0 + 3bc06bdc: 60e8560b srd a2,a6,a4,0 + 3bc06be0: 0721 addi a4,a4,8 + 3bc06be2: 00e80633 add a2,a6,a4 + 3bc06be6: fe8669e3 bltu a2,s0,3bc06bd8 + 3bc06bea: 87aa mv a5,a0 + 3bc06bec: b827c60b lhuia a2,(a5),2,0 + 3bc06bf0: 8abd andi a3,a3,15 + 3bc06bf2: 40c40733 sub a4,s0,a2 + 3bc06bf6: 03e69263 bne a3,t5,3bc06c1a + 3bc06bfa: 4681 li a3,0 + 3bc06bfc: 9817c80b lbuia a6,(a5),1,0 + 3bc06c00: 00d806bb addw a3,a6,a3 + 3bc06c04: 0d87f063 bgeu a5,s8,3bc06cc4 + 3bc06c08: fe780ae3 beq a6,t2,3bc06bfc + 3bc06c0c: 7c06b68b extu a3,a3,31,0 + 3bc06c10: 06bd addi a3,a3,15 + 3bc06c12: 00868533 add a0,a3,s0 + 3bc06c16: 0a856763 bltu a0,s0,3bc06cc4 + 3bc06c1a: 6522 ld a0,8(sp) + 3bc06c1c: 0691 addi a3,a3,4 + 3bc06c1e: 0aa76363 bltu a4,a0,3bc06cc4 + 3bc06c22: 00d40833 add a6,s0,a3 + 3bc06c26: 06cfe463 bltu t6,a2,3bc06c8e + 3bc06c2a: 00042023 sw zero,0(s0) + 3bc06c2e: 00074503 lbu a0,0(a4) + 3bc06c32: 00a40023 sb a0,0(s0) + 3bc06c36: 00174503 lbu a0,1(a4) + 3bc06c3a: 00a400a3 sb a0,1(s0) + 3bc06c3e: 00274503 lbu a0,2(a4) + 3bc06c42: 00a40123 sb a0,2(s0) + 3bc06c46: 00374503 lbu a0,3(a4) + 3bc06c4a: 00a401a3 sb a0,3(s0) + 3bc06c4e: c4cb450b lrwu a0,s6,a2,2 + 3bc06c52: 00a70db3 add s11,a4,a0 + 3bc06c56: 40a7470b lrw a4,a4,a0,0 + 3bc06c5a: c058 sw a4,4(s0) + 3bc06c5c: 44cbc70b lrw a4,s7,a2,2 + 3bc06c60: 40ed8733 sub a4,s11,a4 + 3bc06c64: 0502f363 bgeu t0,a6,3bc06caa + 3bc06c68: 050aee63 bltu s5,a6,3bc06cc4 + 3bc06c6c: 0421 addi s0,s0,8 + 3bc06c6e: 01d47e63 bgeu s0,t4,3bc06c8a + 3bc06c72: 863a mv a2,a4 + 3bc06c74: 86a2 mv a3,s0 + 3bc06c76: 7886450b ldia a0,(a2),8,0 + 3bc06c7a: 7886d50b sdia a0,(a3),8,0 + 3bc06c7e: ffd6ece3 bltu a3,t4,3bc06c76 + 3bc06c82: 408e8433 sub s0,t4,s0 + 3bc06c86: 9722 add a4,a4,s0 + 3bc06c88: 8476 mv s0,t4 + 3bc06c8a: 4681 li a3,0 + 3bc06c8c: a811 j 3bc06ca0 + 3bc06c8e: 7887460b ldia a2,(a4),8,0 + 3bc06c92: e010 sd a2,0(s0) + 3bc06c94: bfc1 j 3bc06c64 + 3bc06c96: 80d7460b lrbu a2,a4,a3,0 + 3bc06c9a: 00d4560b srb a2,s0,a3,0 + 3bc06c9e: 0685 addi a3,a3,1 + 3bc06ca0: 00d40633 add a2,s0,a3 + 3bc06ca4: ff0669e3 bltu a2,a6,3bc06c96 + 3bc06ca8: b5ad j 3bc06b12 + 3bc06caa: 6310 ld a2,0(a4) + 3bc06cac: e410 sd a2,8(s0) + 3bc06cae: e6da72e3 bgeu s4,a3,3bc06b12 + 3bc06cb2: 0441 addi s0,s0,16 + 3bc06cb4: 0721 addi a4,a4,8 + 3bc06cb6: 7887468b ldia a3,(a4),8,0 + 3bc06cba: 7884568b sdia a3,(s0),8,0 + 3bc06cbe: ff046ce3 bltu s0,a6,3bc06cb6 + 3bc06cc2: bd81 j 3bc06b12 + 3bc06cc4: 41178533 sub a0,a5,a7 + 3bc06cc8: fff54513 not a0,a0 + 3bc06ccc: 2501 sext.w a0,a0 + 3bc06cce: b3ed j 3bc06ab8 + 3bc06cd0: 557d li a0,-1 + 3bc06cd2: b3dd j 3bc06ab8 + +000000003bc06cd4 : + 3bc06cd4: 30050963 beqz a0,3bc06fe6 + 3bc06cd8: 7135 addi sp,sp,-160 + 3bc06cda: e526 sd s1,136(sp) + 3bc06cdc: fcce sd s3,120(sp) + 3bc06cde: f0da sd s6,96(sp) + 3bc06ce0: ecde sd s7,88(sp) + 3bc06ce2: e8e2 sd s8,80(sp) + 3bc06ce4: e0ea sd s10,64(sp) + 3bc06ce6: ed06 sd ra,152(sp) + 3bc06ce8: e922 sd s0,144(sp) + 3bc06cea: e14a sd s2,128(sp) + 3bc06cec: f8d2 sd s4,112(sp) + 3bc06cee: f4d6 sd s5,104(sp) + 3bc06cf0: e4e6 sd s9,72(sp) + 3bc06cf2: fc6e sd s11,56(sp) + 3bc06cf4: 8b2a mv s6,a0 + 3bc06cf6: 8d2e mv s10,a1 + 3bc06cf8: 84ba mv s1,a4 + 3bc06cfa: 89be mv s3,a5 + 3bc06cfc: 00c50bb3 add s7,a0,a2 + 3bc06d00: 00d58c33 add s8,a1,a3 + 3bc06d04: c319 beqz a4,3bc06d0a + 3bc06d06: 00f704b3 add s1,a4,a5 + 3bc06d0a: ff0b8793 addi a5,s7,-16 + 3bc06d0e: e03e sd a5,0(sp) + 3bc06d10: fe0c0793 addi a5,s8,-32 + 3bc06d14: e43e sd a5,8(sp) + 3bc06d16: ea95 bnez a3,3bc06d4a + 3bc06d18: 4785 li a5,1 + 3bc06d1a: 557d li a0,-1 + 3bc06d1c: 00f61863 bne a2,a5,3bc06d2c + 3bc06d20: 000b4503 lbu a0,0(s6) + 3bc06d24: 00a03533 snez a0,a0 + 3bc06d28: 0005250b ext a0,a0,0,0 + 3bc06d2c: 60ea ld ra,152(sp) + 3bc06d2e: 644a ld s0,144(sp) + 3bc06d30: 64aa ld s1,136(sp) + 3bc06d32: 690a ld s2,128(sp) + 3bc06d34: 79e6 ld s3,120(sp) + 3bc06d36: 7a46 ld s4,112(sp) + 3bc06d38: 7aa6 ld s5,104(sp) + 3bc06d3a: 7b06 ld s6,96(sp) + 3bc06d3c: 6be6 ld s7,88(sp) + 3bc06d3e: 6c46 ld s8,80(sp) + 3bc06d40: 6ca6 ld s9,72(sp) + 3bc06d42: 6d06 ld s10,64(sp) + 3bc06d44: 7de2 ld s11,56(sp) + 3bc06d46: 610d addi sp,sp,160 + 3bc06d48: 8082 ret + 3bc06d4a: 557d li a0,-1 + 3bc06d4c: d265 beqz a2,3bc06d2c + 3bc06d4e: ffcb8793 addi a5,s7,-4 + 3bc06d52: e83e sd a5,16(sp) + 3bc06d54: ff8b8793 addi a5,s7,-8 + 3bc06d58: 845a mv s0,s6 + 3bc06d5a: 8cea mv s9,s10 + 3bc06d5c: ff4c0a13 addi s4,s8,-12 + 3bc06d60: ff9c0913 addi s2,s8,-7 + 3bc06d64: ffbc0a93 addi s5,s8,-5 + 3bc06d68: ec3e sd a5,24(sp) + 3bc06d6a: 9814468b lbuia a3,(s0),1,0 + 3bc06d6e: 4ebd li t4,15 + 3bc06d70: 0046d793 srli a5,a3,0x4 + 3bc06d74: 0046d61b srliw a2,a3,0x4 + 3bc06d78: 07d78363 beq a5,t4,3bc06dde + 3bc06d7c: 67a2 ld a5,8(sp) + 3bc06d7e: 00cc8db3 add s11,s9,a2 + 3bc06d82: 00c40533 add a0,s0,a2 + 3bc06d86: 0197b5b3 sltu a1,a5,s9 + 3bc06d8a: 0015c593 xori a1,a1,1 + 3bc06d8e: 0ff5f593 andi a1,a1,255 + 3bc06d92: c5c1 beqz a1,3bc06e1a + 3bc06d94: 6782 ld a5,0(sp) + 3bc06d96: 08f47263 bgeu s0,a5,3bc06e1a + 3bc06d9a: 6010 ld a2,0(s0) + 3bc06d9c: 8abd andi a3,a3,15 + 3bc06d9e: 00ccb023 sd a2,0(s9) + 3bc06da2: 6410 ld a2,8(s0) + 3bc06da4: 842a mv s0,a0 + 3bc06da6: 00ccb423 sd a2,8(s9) + 3bc06daa: b824458b lhuia a1,(s0),2,0 + 3bc06dae: 8636 mv a2,a3 + 3bc06db0: 40bd8533 sub a0,s11,a1 + 3bc06db4: 0dd68063 beq a3,t4,3bc06e74 + 3bc06db8: 471d li a4,7 + 3bc06dba: 0eb77063 bgeu a4,a1,3bc06e9a + 3bc06dbe: 0da56e63 bltu a0,s10,3bc06e9a + 3bc06dc2: 6118 ld a4,0(a0) + 3bc06dc4: 0691 addi a3,a3,4 + 3bc06dc6: 00dd8cb3 add s9,s11,a3 + 3bc06dca: 00edb023 sd a4,0(s11) + 3bc06dce: 6518 ld a4,8(a0) + 3bc06dd0: 00edb423 sd a4,8(s11) + 3bc06dd4: 01055703 lhu a4,16(a0) + 3bc06dd8: 00ed9823 sh a4,16(s11) + 3bc06ddc: b779 j 3bc06d6a + 3bc06dde: ff1b8793 addi a5,s7,-15 + 3bc06de2: 06f47063 bgeu s0,a5,3bc06e42 + 3bc06de6: 4601 li a2,0 + 3bc06de8: 0ff00513 li a0,255 + 3bc06dec: 98144e8b lbuia t4,(s0),1,0 + 3bc06df0: 00ce863b addw a2,t4,a2 + 3bc06df4: 04f47a63 bgeu s0,a5,3bc06e48 + 3bc06df8: feae8ae3 beq t4,a0,3bc06dec + 3bc06dfc: 4781 li a5,0 + 3bc06dfe: 7c06360b extu a2,a2,31,0 + 3bc06e02: 55fd li a1,-1 + 3bc06e04: 063d addi a2,a2,15 + 3bc06e06: 1cb78a63 beq a5,a1,3bc06fda + 3bc06e0a: 019607b3 add a5,a2,s9 + 3bc06e0e: 1d97e663 bltu a5,s9,3bc06fda + 3bc06e12: 008607b3 add a5,a2,s0 + 3bc06e16: 1c87e263 bltu a5,s0,3bc06fda + 3bc06e1a: 00cc8db3 add s11,s9,a2 + 3bc06e1e: 00c405b3 add a1,s0,a2 + 3bc06e22: 01ba6563 bltu s4,s11,3bc06e2c + 3bc06e26: 67e2 ld a5,24(sp) + 3bc06e28: 02b7f263 bgeu a5,a1,3bc06e4c + 3bc06e2c: 1abb9763 bne s7,a1,3bc06fda + 3bc06e30: 1bbc6563 bltu s8,s11,3bc06fda + 3bc06e34: 85a2 mv a1,s0 + 3bc06e36: 8566 mv a0,s9 + 3bc06e38: c95f90ef jal ra,3bc00acc + 3bc06e3c: 41ad853b subw a0,s11,s10 + 3bc06e40: b5f5 j 3bc06d2c + 3bc06e42: 57fd li a5,-1 + 3bc06e44: 4601 li a2,0 + 3bc06e46: bf65 j 3bc06dfe + 3bc06e48: 57f9 li a5,-2 + 3bc06e4a: bf55 j 3bc06dfe + 3bc06e4c: 4601 li a2,0 + 3bc06e4e: 60c4450b lrd a0,s0,a2,0 + 3bc06e52: 60ccd50b srd a0,s9,a2,0 + 3bc06e56: 0621 addi a2,a2,8 + 3bc06e58: 00cc8533 add a0,s9,a2 + 3bc06e5c: ffb569e3 bltu a0,s11,3bc06e4e + 3bc06e60: 842e mv s0,a1 + 3bc06e62: b824458b lhuia a1,(s0),2,0 + 3bc06e66: 00f6f613 andi a2,a3,15 + 3bc06e6a: 473d li a4,15 + 3bc06e6c: 40bd8533 sub a0,s11,a1 + 3bc06e70: 02e61563 bne a2,a4,3bc06e9a + 3bc06e74: 4601 li a2,0 + 3bc06e76: 0ff00693 li a3,255 + 3bc06e7a: 98144e8b lbuia t4,(s0),1,0 + 3bc06e7e: 67c2 ld a5,16(sp) + 3bc06e80: 00ce863b addw a2,t4,a2 + 3bc06e84: 14f47b63 bgeu s0,a5,3bc06fda + 3bc06e88: fede89e3 beq t4,a3,3bc06e7a + 3bc06e8c: 7c06360b extu a2,a2,31,0 + 3bc06e90: 063d addi a2,a2,15 + 3bc06e92: 01b60733 add a4,a2,s11 + 3bc06e96: 15b76263 bltu a4,s11,3bc06fda + 3bc06e9a: 6741 lui a4,0x10 + 3bc06e9c: 0611 addi a2,a2,4 + 3bc06e9e: 00e9f663 bgeu s3,a4,3bc06eaa + 3bc06ea2: 01350733 add a4,a0,s3 + 3bc06ea6: 13a76a63 bltu a4,s10,3bc06fda + 3bc06eaa: 00cd8cb3 add s9,s11,a2 + 3bc06eae: 07a57663 bgeu a0,s10,3bc06f1a + 3bc06eb2: 139ae463 bltu s5,s9,3bc06fda + 3bc06eb6: 40ad06b3 sub a3,s10,a0 + 3bc06eba: 40d485b3 sub a1,s1,a3 + 3bc06ebe: 00c6e663 bltu a3,a2,3bc06eca + 3bc06ec2: 856e mv a0,s11 + 3bc06ec4: c09f90ef jal ra,3bc00acc + 3bc06ec8: b54d j 3bc06d6a + 3bc06eca: 40d60eb3 sub t4,a2,a3 + 3bc06ece: 856e mv a0,s11 + 3bc06ed0: 8636 mv a2,a3 + 3bc06ed2: f476 sd t4,40(sp) + 3bc06ed4: f036 sd a3,32(sp) + 3bc06ed6: b97f90ef jal ra,3bc00a6c + 3bc06eda: 7682 ld a3,32(sp) + 3bc06edc: 7ea2 ld t4,40(sp) + 3bc06ede: 00dd8533 add a0,s11,a3 + 3bc06ee2: 41a507b3 sub a5,a0,s10 + 3bc06ee6: 03d7f563 bgeu a5,t4,3bc06f10 + 3bc06eea: 4781 li a5,0 + 3bc06eec: a031 j 3bc06ef8 + 3bc06eee: 80fd468b lrbu a3,s10,a5,0 + 3bc06ef2: 00f5568b srb a3,a0,a5,0 + 3bc06ef6: 0785 addi a5,a5,1 + 3bc06ef8: 00f506b3 add a3,a0,a5 + 3bc06efc: ff96e9e3 bltu a3,s9,3bc06eee + 3bc06f00: 00acb733 sltu a4,s9,a0 + 3bc06f04: 8676 mv a2,t4 + 3bc06f06: 42e0160b mvnez a2,zero,a4 + 3bc06f0a: 00c50cb3 add s9,a0,a2 + 3bc06f0e: bdb1 j 3bc06d6a + 3bc06f10: 8676 mv a2,t4 + 3bc06f12: 85ea mv a1,s10 + 3bc06f14: b59f90ef jal ra,3bc00a6c + 3bc06f18: bd89 j 3bc06d6a + 3bc06f1a: 469d li a3,7 + 3bc06f1c: 06b6ee63 bltu a3,a1,3bc06f98 + 3bc06f20: 000da023 sw zero,0(s11) + 3bc06f24: 00054683 lbu a3,0(a0) + 3bc06f28: 00004797 auipc a5,0x4 + 3bc06f2c: 27078793 addi a5,a5,624 # 3bc0b198 + 3bc06f30: c4b7ce8b lrwu t4,a5,a1,2 + 3bc06f34: 00dd8023 sb a3,0(s11) + 3bc06f38: 00154683 lbu a3,1(a0) + 3bc06f3c: 00004797 auipc a5,0x4 + 3bc06f40: 23c78793 addi a5,a5,572 # 3bc0b178 + 3bc06f44: 01d50f33 add t5,a0,t4 + 3bc06f48: 00dd80a3 sb a3,1(s11) + 3bc06f4c: 00254683 lbu a3,2(a0) + 3bc06f50: 00dd8123 sb a3,2(s11) + 3bc06f54: 00354683 lbu a3,3(a0) + 3bc06f58: 00dd81a3 sb a3,3(s11) + 3bc06f5c: 41d5468b lrw a3,a0,t4,0 + 3bc06f60: 00dda223 sw a3,4(s11) + 3bc06f64: 44b7c68b lrw a3,a5,a1,2 + 3bc06f68: 40df06b3 sub a3,t5,a3 + 3bc06f6c: 059a7663 bgeu s4,s9,3bc06fb8 + 3bc06f70: 079ae563 bltu s5,s9,3bc06fda + 3bc06f74: 008d8513 addi a0,s11,8 + 3bc06f78: 01257e63 bgeu a0,s2,3bc06f94 + 3bc06f7c: 8636 mv a2,a3 + 3bc06f7e: 87aa mv a5,a0 + 3bc06f80: 7886458b ldia a1,(a2),8,0 + 3bc06f84: 7887d58b sdia a1,(a5),8,0 + 3bc06f88: ff27ece3 bltu a5,s2,3bc06f80 + 3bc06f8c: 40a907b3 sub a5,s2,a0 + 3bc06f90: 96be add a3,a3,a5 + 3bc06f92: 854a mv a0,s2 + 3bc06f94: 4781 li a5,0 + 3bc06f96: a821 j 3bc06fae + 3bc06f98: 86aa mv a3,a0 + 3bc06f9a: 7886c58b ldia a1,(a3),8,0 + 3bc06f9e: 00bdb023 sd a1,0(s11) + 3bc06fa2: b7e9 j 3bc06f6c + 3bc06fa4: 80f6c60b lrbu a2,a3,a5,0 + 3bc06fa8: 00f5560b srb a2,a0,a5,0 + 3bc06fac: 0785 addi a5,a5,1 + 3bc06fae: 00f50633 add a2,a0,a5 + 3bc06fb2: ff9669e3 bltu a2,s9,3bc06fa4 + 3bc06fb6: bb55 j 3bc06d6a + 3bc06fb8: 628c ld a1,0(a3) + 3bc06fba: 00bdb423 sd a1,8(s11) + 3bc06fbe: 45c1 li a1,16 + 3bc06fc0: dac5f5e3 bgeu a1,a2,3bc06d6a + 3bc06fc4: 010d8513 addi a0,s11,16 + 3bc06fc8: 00868613 addi a2,a3,8 + 3bc06fcc: 7886478b ldia a5,(a2),8,0 + 3bc06fd0: 7885578b sdia a5,(a0),8,0 + 3bc06fd4: ff956ce3 bltu a0,s9,3bc06fcc + 3bc06fd8: bb49 j 3bc06d6a + 3bc06fda: 41640533 sub a0,s0,s6 + 3bc06fde: fff54513 not a0,a0 + 3bc06fe2: 2501 sext.w a0,a0 + 3bc06fe4: b3a1 j 3bc06d2c + 3bc06fe6: 557d li a0,-1 + 3bc06fe8: 8082 ret + +000000003bc06fea : + 3bc06fea: 883e mv a6,a5 + 3bc06fec: e399 bnez a5,3bc06ff2 + 3bc06fee: 80fff06f j 3bc067fc + 3bc06ff2: 00f708b3 add a7,a4,a5 + 3bc06ff6: 01159b63 bne a1,a7,3bc0700c + 3bc06ffa: 67c1 lui a5,0x10 + 3bc06ffc: 17f9 addi a5,a5,-2 + 3bc06ffe: 0107d463 bge a5,a6,3bc07006 + 3bc07002: a69ff06f j 3bc06a6a + 3bc07006: 8742 mv a4,a6 + 3bc07008: c6eff06f j 3bc06476 + 3bc0700c: cc9ff06f j 3bc06cd4 + +000000003bc07010 : + 3bc07010: fed53513 sltiu a0,a0,-19 + 3bc07014: 00154513 xori a0,a0,1 + 3bc07018: 2501 sext.w a0,a0 + 3bc0701a: 8082 ret + +000000003bc0701c : + 3bc0701c: e111 bnez a0,3bc07020 + 3bc0701e: 4511 li a0,4 + 3bc07020: ffc5069b addiw a3,a0,-4 + 3bc07024: 470d li a4,3 + 3bc07026: 5579 li a0,-2 + 3bc07028: 00d76863 bltu a4,a3,3bc07038 + 3bc0702c: 00004717 auipc a4,0x4 + 3bc07030: 12c70713 addi a4,a4,300 # 3bc0b158 + 3bc07034: 76d7450b lurd a0,a4,a3,3 + 3bc07038: 8082 ret + +000000003bc0703a : + 3bc0703a: 715d addi sp,sp,-80 + 3bc0703c: f84a sd s2,48(sp) + 3bc0703e: e486 sd ra,72(sp) + 3bc07040: e0a2 sd s0,64(sp) + 3bc07042: fc26 sd s1,56(sp) + 3bc07044: f44e sd s3,40(sp) + 3bc07046: f052 sd s4,32(sp) + 3bc07048: ec56 sd s5,24(sp) + 3bc0704a: e85a sd s6,16(sp) + 3bc0704c: e45e sd s7,8(sp) + 3bc0704e: e062 sd s8,0(sp) + 3bc07050: 4799 li a5,6 + 3bc07052: 5951 li s2,-12 + 3bc07054: 04c7f663 bgeu a5,a2,3bc070a0 + 3bc07058: 84ae mv s1,a1 + 3bc0705a: 8932 mv s2,a2 + 3bc0705c: 4581 li a1,0 + 3bc0705e: 02000613 li a2,32 + 3bc07062: 842a mv s0,a0 + 3bc07064: 9aff90ef jal ra,3bc00a12 + 3bc07068: 8526 mv a0,s1 + 3bc0706a: be8ff0ef jal ra,3bc06452 + 3bc0706e: 2501 sext.w a0,a0 + 3bc07070: 184d37b7 lui a5,0x184d3 + 3bc07074: ff057713 andi a4,a0,-16 + 3bc07078: a5078793 addi a5,a5,-1456 # 184d2a50 + 3bc0707c: 02f71f63 bne a4,a5,3bc070ba + 3bc07080: 4785 li a5,1 + 3bc07082: c45c sw a5,12(s0) + 3bc07084: 0e840793 addi a5,s0,232 + 3bc07088: 00f49963 bne s1,a5,3bc0709a + 3bc0708c: 47a1 li a5,8 + 3bc0708e: e83c sd a5,80(s0) + 3bc07090: 05243423 sd s2,72(s0) + 3bc07094: 47b5 li a5,13 + 3bc07096: d05c sw a5,36(s0) + 3bc07098: a021 j 3bc070a0 + 3bc0709a: 47b1 li a5,12 + 3bc0709c: d05c sw a5,36(s0) + 3bc0709e: 4911 li s2,4 + 3bc070a0: 60a6 ld ra,72(sp) + 3bc070a2: 6406 ld s0,64(sp) + 3bc070a4: 74e2 ld s1,56(sp) + 3bc070a6: 79a2 ld s3,40(sp) + 3bc070a8: 7a02 ld s4,32(sp) + 3bc070aa: 6ae2 ld s5,24(sp) + 3bc070ac: 6b42 ld s6,16(sp) + 3bc070ae: 6ba2 ld s7,8(sp) + 3bc070b0: 6c02 ld s8,0(sp) + 3bc070b2: 854a mv a0,s2 + 3bc070b4: 7942 ld s2,48(sp) + 3bc070b6: 6161 addi sp,sp,80 + 3bc070b8: 8082 ret + 3bc070ba: 184d27b7 lui a5,0x184d2 + 3bc070be: 20478793 addi a5,a5,516 # 184d2204 + 3bc070c2: 10f51863 bne a0,a5,3bc071d2 + 3bc070c6: 00042623 sw zero,12(s0) + 3bc070ca: 0044c783 lbu a5,4(s1) + 3bc070ce: 0417b70b extu a4,a5,1,1 + 3bc070d2: 00078b1b sext.w s6,a5 + 3bc070d6: 0067d693 srli a3,a5,0x6 + 3bc070da: 0e071e63 bnez a4,3bc071d6 + 3bc070de: 4705 li a4,1 + 3bc070e0: 0ee69d63 bne a3,a4,3bc071da + 3bc070e4: 0c3b3c0b extu s8,s6,3,3 + 3bc070e8: 49bd li s3,15 + 3bc070ea: 000c1363 bnez s8,3bc070f0 + 3bc070ee: 499d li s3,7 + 3bc070f0: 0017fa13 andi s4,a5,1 + 3bc070f4: 0549998b addsl s3,s3,s4,2 + 3bc070f8: 03397063 bgeu s2,s3,3bc07118 + 3bc070fc: 0e840513 addi a0,s0,232 + 3bc07100: 00a48663 beq s1,a0,3bc0710c + 3bc07104: 864a mv a2,s2 + 3bc07106: 85a6 mv a1,s1 + 3bc07108: 965f90ef jal ra,3bc00a6c + 3bc0710c: 05243423 sd s2,72(s0) + 3bc07110: 05343823 sd s3,80(s0) + 3bc07114: 4785 li a5,1 + 3bc07116: b741 j 3bc07096 + 3bc07118: 0054c783 lbu a5,5(s1) + 3bc0711c: 5961 li s2,-8 + 3bc0711e: fc77b70b extu a4,a5,63,7 + 3bc07122: 8c47bb8b extu s7,a5,35,4 + 3bc07126: ff2d bnez a4,3bc070a0 + 3bc07128: 004bf713 andi a4,s7,4 + 3bc0712c: 5979 li s2,-2 + 3bc0712e: db2d beqz a4,3bc070a0 + 3bc07130: 8bbd andi a5,a5,15 + 3bc07132: 5961 li s2,-8 + 3bc07134: f7b5 bnez a5,3bc070a0 + 3bc07136: ffb98a93 addi s5,s3,-5 + 3bc0713a: 4601 li a2,0 + 3bc0713c: 85d6 mv a1,s5 + 3bc0713e: 00448513 addi a0,s1,4 + 3bc07142: 425000ef jal ra,3bc07d66 + 3bc07146: 013487b3 add a5,s1,s3 + 3bc0714a: fff7c783 lbu a5,-1(a5) + 3bc0714e: 3c85350b extu a0,a0,15,8 + 3bc07152: 593d li s2,-17 + 3bc07154: f4a796e3 bne a5,a0,3bc070a0 + 3bc07158: 145b378b extu a5,s6,5,5 + 3bc0715c: 007bf513 andi a0,s7,7 + 3bc07160: c05c sw a5,4(s0) + 3bc07162: 104b378b extu a5,s6,4,4 + 3bc07166: 082b3b0b extu s6,s6,2,2 + 3bc0716a: cc5c sw a5,28(s0) + 3bc0716c: 01642423 sw s6,8(s0) + 3bc07170: c008 sw a0,0(s0) + 3bc07172: eabff0ef jal ra,3bc0701c + 3bc07176: f808 sd a0,48(s0) + 3bc07178: 040c0263 beqz s8,3bc071bc + 3bc0717c: 0074c783 lbu a5,7(s1) + 3bc07180: 0084c703 lbu a4,8(s1) + 3bc07184: 0064c683 lbu a3,6(s1) + 3bc07188: 07a2 slli a5,a5,0x8 + 3bc0718a: 0742 slli a4,a4,0x10 + 3bc0718c: 97ba add a5,a5,a4 + 3bc0718e: 0094c703 lbu a4,9(s1) + 3bc07192: 97b6 add a5,a5,a3 + 3bc07194: 0762 slli a4,a4,0x18 + 3bc07196: 97ba add a5,a5,a4 + 3bc07198: 00a4c703 lbu a4,10(s1) + 3bc0719c: 1702 slli a4,a4,0x20 + 3bc0719e: 97ba add a5,a5,a4 + 3bc071a0: 00b4c703 lbu a4,11(s1) + 3bc071a4: 1722 slli a4,a4,0x28 + 3bc071a6: 973e add a4,a4,a5 + 3bc071a8: 00c4c783 lbu a5,12(s1) + 3bc071ac: 17c2 slli a5,a5,0x30 + 3bc071ae: 973e add a4,a4,a5 + 3bc071b0: 00d4c783 lbu a5,13(s1) + 3bc071b4: 17e2 slli a5,a5,0x38 + 3bc071b6: 97ba add a5,a5,a4 + 3bc071b8: e81c sd a5,16(s0) + 3bc071ba: f41c sd a5,40(s0) + 3bc071bc: 000a0763 beqz s4,3bc071ca + 3bc071c0: 01548533 add a0,s1,s5 + 3bc071c4: a8eff0ef jal ra,3bc06452 + 3bc071c8: cc08 sw a0,24(s0) + 3bc071ca: 4789 li a5,2 + 3bc071cc: d05c sw a5,36(s0) + 3bc071ce: 894e mv s2,s3 + 3bc071d0: bdc1 j 3bc070a0 + 3bc071d2: 594d li s2,-13 + 3bc071d4: b5f1 j 3bc070a0 + 3bc071d6: 5961 li s2,-8 + 3bc071d8: b5e1 j 3bc070a0 + 3bc071da: 5969 li s2,-6 + 3bc071dc: b5d1 j 3bc070a0 + +000000003bc071de : + 3bc071de: 1101 addi sp,sp,-32 + 3bc071e0: e822 sd s0,16(sp) + 3bc071e2: e426 sd s1,8(sp) + 3bc071e4: 842a mv s0,a0 + 3bc071e6: 84ae mv s1,a1 + 3bc071e8: 4505 li a0,1 + 3bc071ea: 10000593 li a1,256 + 3bc071ee: ec06 sd ra,24(sp) + 3bc071f0: bf8fa0ef jal ra,3bc015e8 + 3bc071f4: e909 bnez a0,3bc07206 + 3bc071f6: 00043023 sd zero,0(s0) + 3bc071fa: 555d li a0,-9 + 3bc071fc: 60e2 ld ra,24(sp) + 3bc071fe: 6442 ld s0,16(sp) + 3bc07200: 64a2 ld s1,8(sp) + 3bc07202: 6105 addi sp,sp,32 + 3bc07204: 8082 ret + 3bc07206: d104 sw s1,32(a0) + 3bc07208: e008 sd a0,0(s0) + 3bc0720a: 4501 li a0,0 + 3bc0720c: bfc5 j 3bc071fc + +000000003bc0720e : + 3bc0720e: 7131 addi sp,sp,-192 + 3bc07210: ed4e sd s3,152(sp) + 3bc07212: 00073983 ld s3,0(a4) + 3bc07216: e556 sd s5,136(sp) + 3bc07218: e15a sd s6,128(sp) + 3bc0721a: f0ea sd s10,96(sp) + 3bc0721c: ecee sd s11,88(sp) + 3bc0721e: fd06 sd ra,184(sp) + 3bc07220: f922 sd s0,176(sp) + 3bc07222: f526 sd s1,168(sp) + 3bc07224: f14a sd s2,160(sp) + 3bc07226: e952 sd s4,144(sp) + 3bc07228: fcde sd s7,120(sp) + 3bc0722a: f8e2 sd s8,112(sp) + 3bc0722c: f4e6 sd s9,104(sp) + 3bc0722e: fad1560b sdd a2,a3,(sp),1,4 + 3bc07232: e43e sd a5,8(sp) + 3bc07234: 8d2a mv s10,a0 + 3bc07236: 8aae mv s5,a1 + 3bc07238: 8dba mv s11,a4 + 3bc0723a: 99b6 add s3,s3,a3 + 3bc0723c: 4b01 li s6,0 + 3bc0723e: c581 beqz a1,3bc07246 + 3bc07240: 00063b03 ld s6,0(a2) + 3bc07244: 9b2e add s6,s6,a1 + 3bc07246: 0080 addi s0,sp,64 + 3bc07248: 4641 li a2,16 + 3bc0724a: 4581 li a1,0 + 3bc0724c: 8522 mv a0,s0 + 3bc0724e: fc4f90ef jal ra,3bc00a12 + 3bc07252: 67a2 ld a5,8(sp) + 3bc07254: 000db023 sd zero,0(s11) + 3bc07258: 6ce2 ld s9,24(sp) + 3bc0725a: 40f4178b mveqz a5,s0,a5 + 3bc0725e: e43e sd a5,8(sp) + 3bc07260: 67c2 ld a5,16(sp) + 3bc07262: 8956 mv s2,s5 + 3bc07264: 4485 li s1,1 + 3bc07266: 0007b023 sd zero,0(a5) + 3bc0726a: 0ecd0793 addi a5,s10,236 + 3bc0726e: f43e sd a5,40(sp) + 3bc07270: 0b8d0793 addi a5,s10,184 + 3bc07274: 4a05 li s4,1 + 3bc07276: 0e8d0b93 addi s7,s10,232 + 3bc0727a: 088d0c13 addi s8,s10,136 + 3bc0727e: f03e sd a5,32(sp) + 3bc07280: 080a1b63 bnez s4,3bc07316 + 3bc07284: 004d2783 lw a5,4(s10) + 3bc07288: ebbd bnez a5,3bc072fe + 3bc0728a: 060d3583 ld a1,96(s10) + 3bc0728e: 058d3503 ld a0,88(s10) + 3bc07292: 06a58663 beq a1,a0,3bc072fe + 3bc07296: c5a5 beqz a1,3bc072fe + 3bc07298: 67a2 ld a5,8(sp) + 3bc0729a: 439c lw a5,0(a5) + 3bc0729c: e3ad bnez a5,3bc072fe + 3bc0729e: 024d2703 lw a4,36(s10) + 3bc072a2: 479d li a5,7 + 3bc072a4: ffe7069b addiw a3,a4,-2 + 3bc072a8: 04d7eb63 bltu a5,a3,3bc072fe + 3bc072ac: 46a5 li a3,9 + 3bc072ae: 068d3783 ld a5,104(s10) + 3bc072b2: 6ed71c63 bne a4,a3,3bc079aa + 3bc072b6: 080d3683 ld a3,128(s10) + 3bc072ba: 070d3403 ld s0,112(s10) + 3bc072be: 078d3703 ld a4,120(s10) + 3bc072c2: 8f95 sub a5,a5,a3 + 3bc072c4: 66c1 lui a3,0x10 + 3bc072c6: 8c09 sub s0,s0,a0 + 3bc072c8: 4601 li a2,0 + 3bc072ca: 00e6ea63 bltu a3,a4,3bc072de + 3bc072ce: 40e68633 sub a2,a3,a4 + 3bc072d2: 00c43733 sltu a4,s0,a2 + 3bc072d6: 00174713 xori a4,a4,1 + 3bc072da: 40e4160b mveqz a2,s0,a4 + 3bc072de: 8f91 sub a5,a5,a2 + 3bc072e0: 40c40733 sub a4,s0,a2 + 3bc072e4: 95be add a1,a1,a5 + 3bc072e6: 953a add a0,a0,a4 + 3bc072e8: f84f90ef jal ra,3bc00a6c + 3bc072ec: 058d3783 ld a5,88(s10) + 3bc072f0: 06fd3023 sd a5,96(s10) + 3bc072f4: 080d3783 ld a5,128(s10) + 3bc072f8: 943e add s0,s0,a5 + 3bc072fa: 068d3423 sd s0,104(s10) + 3bc072fe: 67e2 ld a5,24(sp) + 3bc07300: 41590933 sub s2,s2,s5 + 3bc07304: 8526 mv a0,s1 + 3bc07306: 40fc88b3 sub a7,s9,a5 + 3bc0730a: 67c2 ld a5,16(sp) + 3bc0730c: 011db023 sd a7,0(s11) + 3bc07310: 0127b023 sd s2,0(a5) + 3bc07314: a055 j 3bc073b8 + 3bc07316: 024d2783 lw a5,36(s10) + 3bc0731a: 4739 li a4,14 + 3bc0731c: f6f762e3 bltu a4,a5,3bc07280 + 3bc07320: 024d6783 lwu a5,36(s10) + 3bc07324: 00004717 auipc a4,0x4 + 3bc07328: df470713 addi a4,a4,-524 # 3bc0b118 + 3bc0732c: 44f7478b lrw a5,a4,a5,2 + 3bc07330: 97ba add a5,a5,a4 + 3bc07332: 8782 jr a5 + 3bc07334: 41998633 sub a2,s3,s9 + 3bc07338: 47c9 li a5,18 + 3bc0733a: 00c7fd63 bgeu a5,a2,3bc07354 + 3bc0733e: 85e6 mv a1,s9 + 3bc07340: 856a mv a0,s10 + 3bc07342: cf9ff0ef jal ra,3bc0703a + 3bc07346: 57b1 li a5,-20 + 3bc07348: 06a7e863 bltu a5,a0,3bc073b8 + 3bc0734c: 00ac8433 add s0,s9,a0 + 3bc07350: 8ca2 mv s9,s0 + 3bc07352: b73d j 3bc07280 + 3bc07354: 040d3423 sd zero,72(s10) + 3bc07358: 673c8d63 beq s9,s3,3bc079d2 + 3bc0735c: 479d li a5,7 + 3bc0735e: 04fd3823 sd a5,80(s10) + 3bc07362: 4785 li a5,1 + 3bc07364: 02fd2223 sw a5,36(s10) + 3bc07368: 048d3503 ld a0,72(s10) + 3bc0736c: 050d3403 ld s0,80(s10) + 3bc07370: 41998633 sub a2,s3,s9 + 3bc07374: 85e6 mv a1,s9 + 3bc07376: 8c09 sub s0,s0,a0 + 3bc07378: 008637b3 sltu a5,a2,s0 + 3bc0737c: 0017c793 xori a5,a5,1 + 3bc07380: 40f6140b mveqz s0,a2,a5 + 3bc07384: 8622 mv a2,s0 + 3bc07386: 955e add a0,a0,s7 + 3bc07388: ee4f90ef jal ra,3bc00a6c + 3bc0738c: 048d3783 ld a5,72(s10) + 3bc07390: 050d3603 ld a2,80(s10) + 3bc07394: 97a2 add a5,a5,s0 + 3bc07396: 04fd3423 sd a5,72(s10) + 3bc0739a: 9466 add s0,s0,s9 + 3bc0739c: 00c7f763 bgeu a5,a2,3bc073aa + 3bc073a0: 0611 addi a2,a2,4 + 3bc073a2: 40f604b3 sub s1,a2,a5 + 3bc073a6: 4a01 li s4,0 + 3bc073a8: b765 j 3bc07350 + 3bc073aa: 85de mv a1,s7 + 3bc073ac: 856a mv a0,s10 + 3bc073ae: c8dff0ef jal ra,3bc0703a + 3bc073b2: 57b1 li a5,-20 + 3bc073b4: f8a7fee3 bgeu a5,a0,3bc07350 + 3bc073b8: 70ea ld ra,184(sp) + 3bc073ba: 744a ld s0,176(sp) + 3bc073bc: 74aa ld s1,168(sp) + 3bc073be: 790a ld s2,160(sp) + 3bc073c0: 69ea ld s3,152(sp) + 3bc073c2: 6a4a ld s4,144(sp) + 3bc073c4: 6aaa ld s5,136(sp) + 3bc073c6: 6b0a ld s6,128(sp) + 3bc073c8: 7be6 ld s7,120(sp) + 3bc073ca: 7c46 ld s8,112(sp) + 3bc073cc: 7ca6 ld s9,104(sp) + 3bc073ce: 7d06 ld s10,96(sp) + 3bc073d0: 6de6 ld s11,88(sp) + 3bc073d2: 6129 addi sp,sp,192 + 3bc073d4: 8082 ret + 3bc073d6: 008d2783 lw a5,8(s10) + 3bc073da: c789 beqz a5,3bc073e4 + 3bc073dc: 4581 li a1,0 + 3bc073de: 8562 mv a0,s8 + 3bc073e0: 34d000ef jal ra,3bc07f2c + 3bc073e4: 004d2403 lw s0,4(s10) + 3bc073e8: 030d3783 ld a5,48(s10) + 3bc073ec: 00143413 seqz s0,s0 + 3bc073f0: 0446 slli s0,s0,0x11 + 3bc073f2: 943e add s0,s0,a5 + 3bc073f4: 038d3783 ld a5,56(s10) + 3bc073f8: 0287fe63 bgeu a5,s0,3bc07434 + 3bc073fc: 040d3503 ld a0,64(s10) + 3bc07400: 020d3c23 sd zero,56(s10) + 3bc07404: a0cfa0ef jal ra,3bc01610 + 3bc07408: 030d3503 ld a0,48(s10) + 3bc0740c: 0511 addi a0,a0,4 + 3bc0740e: 9d4fa0ef jal ra,3bc015e2 + 3bc07412: 04ad3023 sd a0,64(s10) + 3bc07416: e119 bnez a0,3bc0741c + 3bc07418: 555d li a0,-9 + 3bc0741a: bf79 j 3bc073b8 + 3bc0741c: 058d3503 ld a0,88(s10) + 3bc07420: 9f0fa0ef jal ra,3bc01610 + 3bc07424: 8522 mv a0,s0 + 3bc07426: 9bcfa0ef jal ra,3bc015e2 + 3bc0742a: 04ad3c23 sd a0,88(s10) + 3bc0742e: d56d beqz a0,3bc07418 + 3bc07430: 028d3c23 sd s0,56(s10) + 3bc07434: 058d3783 ld a5,88(s10) + 3bc07438: 040d3423 sd zero,72(s10) + 3bc0743c: 040d3823 sd zero,80(s10) + 3bc07440: 06fd3823 sd a5,112(s10) + 3bc07444: 478d li a5,3 + 3bc07446: 080d3023 sd zero,128(s10) + 3bc0744a: 060d3c23 sd zero,120(s10) + 3bc0744e: 02fd2223 sw a5,36(s10) + 3bc07452: 419987b3 sub a5,s3,s9 + 3bc07456: 470d li a4,3 + 3bc07458: 00f77b63 bgeu a4,a5,3bc0746e + 3bc0745c: 024d2703 lw a4,36(s10) + 3bc07460: 4791 li a5,4 + 3bc07462: 004c8413 addi s0,s9,4 + 3bc07466: 04f71e63 bne a4,a5,3bc074c2 + 3bc0746a: 8ca2 mv s9,s0 + 3bc0746c: a031 j 3bc07478 + 3bc0746e: 4791 li a5,4 + 3bc07470: 040d3423 sd zero,72(s10) + 3bc07474: 02fd2223 sw a5,36(s10) + 3bc07478: 048d3683 ld a3,72(s10) + 3bc0747c: 4711 li a4,4 + 3bc0747e: 040d3503 ld a0,64(s10) + 3bc07482: 40d705b3 sub a1,a4,a3 + 3bc07486: 41998633 sub a2,s3,s9 + 3bc0748a: 00c5b7b3 sltu a5,a1,a2 + 3bc0748e: 0017c793 xori a5,a5,1 + 3bc07492: 40f5960b mveqz a2,a1,a5 + 3bc07496: 9536 add a0,a0,a3 + 3bc07498: 85e6 mv a1,s9 + 3bc0749a: f832 sd a2,48(sp) + 3bc0749c: dd0f90ef jal ra,3bc00a6c + 3bc074a0: 048d3783 ld a5,72(s10) + 3bc074a4: 7642 ld a2,48(sp) + 3bc074a6: 00cc8433 add s0,s9,a2 + 3bc074aa: 963e add a2,a2,a5 + 3bc074ac: 04cd3423 sd a2,72(s10) + 3bc074b0: 478d li a5,3 + 3bc074b2: 00c7e663 bltu a5,a2,3bc074be + 3bc074b6: 4711 li a4,4 + 3bc074b8: 40c704b3 sub s1,a4,a2 + 3bc074bc: b5ed j 3bc073a6 + 3bc074be: 040d3c83 ld s9,64(s10) + 3bc074c2: 8566 mv a0,s9 + 3bc074c4: f8ffe0ef jal ra,3bc06452 + 3bc074c8: 2501 sext.w a0,a0 + 3bc074ca: 47a9 li a5,10 + 3bc074cc: c50d beqz a0,3bc074f6 + 3bc074ce: 030d3683 ld a3,48(s10) + 3bc074d2: 7805378b extu a5,a0,30,0 + 3bc074d6: 7c07b70b extu a4,a5,31,0 + 3bc074da: 4ef6ee63 bltu a3,a5,3bc079d6 + 3bc074de: 01cd2783 lw a5,28(s10) + 3bc074e2: 00055d63 bgez a0,3bc074fc + 3bc074e6: 04ed3823 sd a4,80(s10) + 3bc074ea: c789 beqz a5,3bc074f4 + 3bc074ec: 7502 ld a0,32(sp) + 3bc074ee: 4581 li a1,0 + 3bc074f0: 23d000ef jal ra,3bc07f2c + 3bc074f4: 4795 li a5,5 + 3bc074f6: 02fd2223 sw a5,36(s10) + 3bc074fa: bd99 j 3bc07350 + 3bc074fc: 02079693 slli a3,a5,0x20 + 3bc07500: 01e6d793 srli a5,a3,0x1e + 3bc07504: 97ba add a5,a5,a4 + 3bc07506: 471d li a4,7 + 3bc07508: 04fd3823 sd a5,80(s10) + 3bc0750c: 02ed2223 sw a4,36(s10) + 3bc07510: 01690463 beq s2,s6,3bc07518 + 3bc07514: e3341ee3 bne s0,s3,3bc07350 + 3bc07518: 00478493 addi s1,a5,4 + 3bc0751c: b569 j 3bc073a6 + 3bc0751e: 4601 li a2,0 + 3bc07520: 06090e63 beqz s2,3bc0759c + 3bc07524: 41998733 sub a4,s3,s9 + 3bc07528: 412b0633 sub a2,s6,s2 + 3bc0752c: 00c737b3 sltu a5,a4,a2 + 3bc07530: 0017c793 xori a5,a5,1 + 3bc07534: 40f7160b mveqz a2,a4,a5 + 3bc07538: 050d3703 ld a4,80(s10) + 3bc0753c: 85e6 mv a1,s9 + 3bc0753e: 854a mv a0,s2 + 3bc07540: 00c737b3 sltu a5,a4,a2 + 3bc07544: 0017c793 xori a5,a5,1 + 3bc07548: 40f7160b mveqz a2,a4,a5 + 3bc0754c: f832 sd a2,48(sp) + 3bc0754e: d1ef90ef jal ra,3bc00a6c + 3bc07552: 01cd2783 lw a5,28(s10) + 3bc07556: 7642 ld a2,48(sp) + 3bc07558: c791 beqz a5,3bc07564 + 3bc0755a: 7502 ld a0,32(sp) + 3bc0755c: 85e6 mv a1,s9 + 3bc0755e: 225000ef jal ra,3bc07f82 + 3bc07562: 7642 ld a2,48(sp) + 3bc07564: 008d2783 lw a5,8(s10) + 3bc07568: c799 beqz a5,3bc07576 + 3bc0756a: 85e6 mv a1,s9 + 3bc0756c: 8562 mv a0,s8 + 3bc0756e: f832 sd a2,48(sp) + 3bc07570: 213000ef jal ra,3bc07f82 + 3bc07574: 7642 ld a2,48(sp) + 3bc07576: 010d3783 ld a5,16(s10) + 3bc0757a: c791 beqz a5,3bc07586 + 3bc0757c: 028d3783 ld a5,40(s10) + 3bc07580: 8f91 sub a5,a5,a2 + 3bc07582: 02fd3423 sd a5,40(s10) + 3bc07586: 004d2783 lw a5,4(s10) + 3bc0758a: eb89 bnez a5,3bc0759c + 3bc0758c: 4701 li a4,0 + 3bc0758e: 86d6 mv a3,s5 + 3bc07590: 85ca mv a1,s2 + 3bc07592: 856a mv a0,s10 + 3bc07594: f832 sd a2,48(sp) + 3bc07596: 956ff0ef jal ra,3bc066ec + 3bc0759a: 7642 ld a2,48(sp) + 3bc0759c: 050d3783 ld a5,80(s10) + 3bc075a0: 01cd2703 lw a4,28(s10) + 3bc075a4: 00cc8433 add s0,s9,a2 + 3bc075a8: 9932 add s2,s2,a2 + 3bc075aa: 00c79863 bne a5,a2,3bc075ba + 3bc075ae: 28070d63 beqz a4,3bc07848 + 3bc075b2: 040d3423 sd zero,72(s10) + 3bc075b6: 4799 li a5,6 + 3bc075b8: bf3d j 3bc074f6 + 3bc075ba: 40c78633 sub a2,a5,a2 + 3bc075be: 04cd3823 sd a2,80(s10) + 3bc075c2: 00e03733 snez a4,a4 + 3bc075c6: 0611 addi a2,a2,4 + 3bc075c8: 04e6148b addsl s1,a2,a4,2 + 3bc075cc: bbe9 j 3bc073a6 + 3bc075ce: 419987b3 sub a5,s3,s9 + 3bc075d2: 470d li a4,3 + 3bc075d4: 048d3503 ld a0,72(s10) + 3bc075d8: 02f75363 bge a4,a5,3bc075fe + 3bc075dc: e10d bnez a0,3bc075fe + 3bc075de: 004c8413 addi s0,s9,4 + 3bc075e2: 8766 mv a4,s9 + 3bc075e4: 853a mv a0,a4 + 3bc075e6: e6dfe0ef jal ra,3bc06452 + 3bc075ea: 00050c9b sext.w s9,a0 + 3bc075ee: 7502 ld a0,32(sp) + 3bc075f0: 365000ef jal ra,3bc08154 + 3bc075f4: 2501 sext.w a0,a0 + 3bc075f6: 24ac8963 beq s9,a0,3bc07848 + 3bc075fa: 5565 li a0,-7 + 3bc075fc: bb75 j 3bc073b8 + 3bc075fe: 4411 li s0,4 + 3bc07600: 8c09 sub s0,s0,a0 + 3bc07602: 0087b733 sltu a4,a5,s0 + 3bc07606: 00174713 xori a4,a4,1 + 3bc0760a: 40e7940b mveqz s0,a5,a4 + 3bc0760e: 8622 mv a2,s0 + 3bc07610: 85e6 mv a1,s9 + 3bc07612: 955e add a0,a0,s7 + 3bc07614: f85e sd s7,48(sp) + 3bc07616: c56f90ef jal ra,3bc00a6c + 3bc0761a: 048d3783 ld a5,72(s10) + 3bc0761e: 468d li a3,3 + 3bc07620: 7742 ld a4,48(sp) + 3bc07622: 97a2 add a5,a5,s0 + 3bc07624: 04fd3423 sd a5,72(s10) + 3bc07628: 9466 add s0,s0,s9 + 3bc0762a: d6f6fee3 bgeu a3,a5,3bc073a6 + 3bc0762e: bf5d j 3bc075e4 + 3bc07630: 050d3403 ld s0,80(s10) + 3bc07634: 419987b3 sub a5,s3,s9 + 3bc07638: 0087f963 bgeu a5,s0,3bc0764a + 3bc0763c: 47a1 li a5,8 + 3bc0763e: 040d3423 sd zero,72(s10) + 3bc07642: 02fd2223 sw a5,36(s10) + 3bc07646: 8466 mv s0,s9 + 3bc07648: b321 j 3bc07350 + 3bc0764a: 9466 add s0,s0,s9 + 3bc0764c: 01cd2783 lw a5,28(s10) + 3bc07650: 16079563 bnez a5,3bc077ba + 3bc07654: 030d3683 ld a3,48(s10) + 3bc07658: 412b0633 sub a2,s6,s2 + 3bc0765c: 060d3703 ld a4,96(s10) + 3bc07660: 068d3783 ld a5,104(s10) + 3bc07664: 18d67263 bgeu a2,a3,3bc077e8 + 3bc07668: 004d2683 lw a3,4(s10) + 3bc0766c: ea95 bnez a3,3bc076a0 + 3bc0766e: 058d3683 ld a3,88(s10) + 3bc07672: 1cd71d63 bne a4,a3,3bc0784c + 3bc07676: 000206b7 lui a3,0x20 + 3bc0767a: 00f6fc63 bgeu a3,a5,3bc07692 + 3bc0767e: 75c1 lui a1,0xffff0 + 3bc07680: 95be add a1,a1,a5 + 3bc07682: 6641 lui a2,0x10 + 3bc07684: 95ba add a1,a1,a4 + 3bc07686: 853a mv a0,a4 + 3bc07688: be4f90ef jal ra,3bc00a6c + 3bc0768c: 67c1 lui a5,0x10 + 3bc0768e: 06fd3423 sd a5,104(s10) + 3bc07692: 058d3783 ld a5,88(s10) + 3bc07696: 068d3703 ld a4,104(s10) + 3bc0769a: 97ba add a5,a5,a4 + 3bc0769c: 06fd3823 sd a5,112(s10) + 3bc076a0: 060d3703 ld a4,96(s10) + 3bc076a4: 068d3783 ld a5,104(s10) + 3bc076a8: cb09 beqz a4,3bc076ba + 3bc076aa: 400006b7 lui a3,0x40000 + 3bc076ae: 00f6f663 bgeu a3,a5,3bc076ba + 3bc076b2: 76c1 lui a3,0xffff0 + 3bc076b4: 97b6 add a5,a5,a3 + 3bc076b6: 973e add a4,a4,a5 + 3bc076b8: 67c1 lui a5,0x10 + 3bc076ba: 030d2683 lw a3,48(s10) + 3bc076be: 050d2603 lw a2,80(s10) + 3bc076c2: 070d3583 ld a1,112(s10) + 3bc076c6: 8566 mv a0,s9 + 3bc076c8: 2781 sext.w a5,a5 + 3bc076ca: 921ff0ef jal ra,3bc06fea + 3bc076ce: 8caa mv s9,a0 + 3bc076d0: 30054763 bltz a0,3bc079de + 3bc076d4: 008d2783 lw a5,8(s10) + 3bc076d8: c799 beqz a5,3bc076e6 + 3bc076da: 070d3583 ld a1,112(s10) + 3bc076de: 862a mv a2,a0 + 3bc076e0: 8562 mv a0,s8 + 3bc076e2: 0a1000ef jal ra,3bc07f82 + 3bc076e6: 010d3783 ld a5,16(s10) + 3bc076ea: c799 beqz a5,3bc076f8 + 3bc076ec: 028d3783 ld a5,40(s10) + 3bc076f0: 419787b3 sub a5,a5,s9 + 3bc076f4: 02fd3423 sd a5,40(s10) + 3bc076f8: 47a5 li a5,9 + 3bc076fa: 079d3c23 sd s9,120(s10) + 3bc076fe: 080d3023 sd zero,128(s10) + 3bc07702: 02fd2223 sw a5,36(s10) + 3bc07706: 04090763 beqz s2,3bc07754 + 3bc0770a: 080d3703 ld a4,128(s10) + 3bc0770e: 078d3603 ld a2,120(s10) + 3bc07712: 412b06b3 sub a3,s6,s2 + 3bc07716: 070d3583 ld a1,112(s10) + 3bc0771a: 8e19 sub a2,a2,a4 + 3bc0771c: 00c6b7b3 sltu a5,a3,a2 + 3bc07720: 0017c793 xori a5,a5,1 + 3bc07724: 42f6168b mvnez a3,a2,a5 + 3bc07728: 8636 mv a2,a3 + 3bc0772a: 95ba add a1,a1,a4 + 3bc0772c: 854a mv a0,s2 + 3bc0772e: 8cb6 mv s9,a3 + 3bc07730: b3cf90ef jal ra,3bc00a6c + 3bc07734: 004d2783 lw a5,4(s10) + 3bc07738: eb81 bnez a5,3bc07748 + 3bc0773a: 4705 li a4,1 + 3bc0773c: 86d6 mv a3,s5 + 3bc0773e: 8666 mv a2,s9 + 3bc07740: 85ca mv a1,s2 + 3bc07742: 856a mv a0,s10 + 3bc07744: fa9fe0ef jal ra,3bc066ec + 3bc07748: 080d3783 ld a5,128(s10) + 3bc0774c: 9966 add s2,s2,s9 + 3bc0774e: 97e6 add a5,a5,s9 + 3bc07750: 08fd3023 sd a5,128(s10) + 3bc07754: 080d3703 ld a4,128(s10) + 3bc07758: 078d3783 ld a5,120(s10) + 3bc0775c: 0ef70663 beq a4,a5,3bc07848 + 3bc07760: 4491 li s1,4 + 3bc07762: b191 j 3bc073a6 + 3bc07764: 048d3703 ld a4,72(s10) + 3bc07768: 050d3403 ld s0,80(s10) + 3bc0776c: 41998633 sub a2,s3,s9 + 3bc07770: 040d3503 ld a0,64(s10) + 3bc07774: 8c19 sub s0,s0,a4 + 3bc07776: 008637b3 sltu a5,a2,s0 + 3bc0777a: 0017c793 xori a5,a5,1 + 3bc0777e: 40f6140b mveqz s0,a2,a5 + 3bc07782: 8622 mv a2,s0 + 3bc07784: 953a add a0,a0,a4 + 3bc07786: 85e6 mv a1,s9 + 3bc07788: ae4f90ef jal ra,3bc00a6c + 3bc0778c: 048d3783 ld a5,72(s10) + 3bc07790: 00f40733 add a4,s0,a5 + 3bc07794: 050d3783 ld a5,80(s10) + 3bc07798: 04ed3423 sd a4,72(s10) + 3bc0779c: 9466 add s0,s0,s9 + 3bc0779e: 00f77b63 bgeu a4,a5,3bc077b4 + 3bc077a2: 01cd2483 lw s1,28(s10) + 3bc077a6: 0791 addi a5,a5,4 + 3bc077a8: 8f99 sub a5,a5,a4 + 3bc077aa: 009034b3 snez s1,s1 + 3bc077ae: 0497948b addsl s1,a5,s1,2 + 3bc077b2: bed5 j 3bc073a6 + 3bc077b4: 040d3c83 ld s9,64(s10) + 3bc077b8: bd51 j 3bc0764c + 3bc077ba: 050d3583 ld a1,80(s10) + 3bc077be: 15f1 addi a1,a1,-4 + 3bc077c0: 04bd3823 sd a1,80(s10) + 3bc077c4: 00bc8533 add a0,s9,a1 + 3bc077c8: fc2e sd a1,56(sp) + 3bc077ca: c89fe0ef jal ra,3bc06452 + 3bc077ce: 75e2 ld a1,56(sp) + 3bc077d0: 0005079b sext.w a5,a0 + 3bc077d4: 4601 li a2,0 + 3bc077d6: 8566 mv a0,s9 + 3bc077d8: f83e sd a5,48(sp) + 3bc077da: 58c000ef jal ra,3bc07d66 + 3bc077de: 77c2 ld a5,48(sp) + 3bc077e0: 2501 sext.w a0,a0 + 3bc077e2: e6a789e3 beq a5,a0,3bc07654 + 3bc077e6: bd11 j 3bc075fa + 3bc077e8: cb09 beqz a4,3bc077fa + 3bc077ea: 40000637 lui a2,0x40000 + 3bc077ee: 00f67663 bgeu a2,a5,3bc077fa + 3bc077f2: 75c1 lui a1,0xffff0 + 3bc077f4: 97ae add a5,a5,a1 + 3bc077f6: 973e add a4,a4,a5 + 3bc077f8: 67c1 lui a5,0x10 + 3bc077fa: 050d2603 lw a2,80(s10) + 3bc077fe: 8566 mv a0,s9 + 3bc07800: 2781 sext.w a5,a5 + 3bc07802: 2681 sext.w a3,a3 + 3bc07804: 85ca mv a1,s2 + 3bc07806: fe4ff0ef jal ra,3bc06fea + 3bc0780a: 8caa mv s9,a0 + 3bc0780c: 1c054763 bltz a0,3bc079da + 3bc07810: 008d2783 lw a5,8(s10) + 3bc07814: c791 beqz a5,3bc07820 + 3bc07816: 862a mv a2,a0 + 3bc07818: 85ca mv a1,s2 + 3bc0781a: 8562 mv a0,s8 + 3bc0781c: 766000ef jal ra,3bc07f82 + 3bc07820: 010d3783 ld a5,16(s10) + 3bc07824: c799 beqz a5,3bc07832 + 3bc07826: 028d3783 ld a5,40(s10) + 3bc0782a: 419787b3 sub a5,a5,s9 + 3bc0782e: 02fd3423 sd a5,40(s10) + 3bc07832: 004d2783 lw a5,4(s10) + 3bc07836: eb81 bnez a5,3bc07846 + 3bc07838: 4701 li a4,0 + 3bc0783a: 86d6 mv a3,s5 + 3bc0783c: 8666 mv a2,s9 + 3bc0783e: 85ca mv a1,s2 + 3bc07840: 856a mv a0,s10 + 3bc07842: eabfe0ef jal ra,3bc066ec + 3bc07846: 9966 add s2,s2,s9 + 3bc07848: 478d li a5,3 + 3bc0784a: b175 j 3bc074f6 + 3bc0784c: 6741 lui a4,0x10 + 3bc0784e: 00f77363 bgeu a4,a5,3bc07854 + 3bc07852: 67c1 lui a5,0x10 + 3bc07854: 97b6 add a5,a5,a3 + 3bc07856: b599 j 3bc0769c + 3bc07858: 8466 mv s0,s9 + 3bc0785a: b575 j 3bc07706 + 3bc0785c: 028d3483 ld s1,40(s10) + 3bc07860: 18049163 bnez s1,3bc079e2 + 3bc07864: 008d2a03 lw s4,8(s10) + 3bc07868: 000a1963 bnez s4,3bc0787a + 3bc0786c: 020d2223 sw zero,36(s10) + 3bc07870: 060d3023 sd zero,96(s10) + 3bc07874: 060d3423 sd zero,104(s10) + 3bc07878: b3f9 j 3bc07646 + 3bc0787a: 419987b3 sub a5,s3,s9 + 3bc0787e: 470d li a4,3 + 3bc07880: 04f74a63 blt a4,a5,3bc078d4 + 3bc07884: 47ad li a5,11 + 3bc07886: 040d3423 sd zero,72(s10) + 3bc0788a: 02fd2223 sw a5,36(s10) + 3bc0788e: 048d3703 ld a4,72(s10) + 3bc07892: 4491 li s1,4 + 3bc07894: 41998a33 sub s4,s3,s9 + 3bc07898: 40e48633 sub a2,s1,a4 + 3bc0789c: 014637b3 sltu a5,a2,s4 + 3bc078a0: 040d3503 ld a0,64(s10) + 3bc078a4: 0017c793 xori a5,a5,1 + 3bc078a8: 40f61a0b mveqz s4,a2,a5 + 3bc078ac: 8652 mv a2,s4 + 3bc078ae: 85e6 mv a1,s9 + 3bc078b0: 953a add a0,a0,a4 + 3bc078b2: 9baf90ef jal ra,3bc00a6c + 3bc078b6: 048d3603 ld a2,72(s10) + 3bc078ba: 014c8433 add s0,s9,s4 + 3bc078be: 478d li a5,3 + 3bc078c0: 9a32 add s4,s4,a2 + 3bc078c2: 054d3423 sd s4,72(s10) + 3bc078c6: 414484b3 sub s1,s1,s4 + 3bc078ca: ad47fee3 bgeu a5,s4,3bc073a6 + 3bc078ce: 040d3c83 ld s9,64(s10) + 3bc078d2: a019 j 3bc078d8 + 3bc078d4: 004c8413 addi s0,s9,4 + 3bc078d8: 8566 mv a0,s9 + 3bc078da: b79fe0ef jal ra,3bc06452 + 3bc078de: 0005049b sext.w s1,a0 + 3bc078e2: 8562 mv a0,s8 + 3bc078e4: 071000ef jal ra,3bc08154 + 3bc078e8: 2501 sext.w a0,a0 + 3bc078ea: 0ea49e63 bne s1,a0,3bc079e6 + 3bc078ee: 020d2223 sw zero,36(s10) + 3bc078f2: 060d3023 sd zero,96(s10) + 3bc078f6: 060d3423 sd zero,104(s10) + 3bc078fa: 4481 li s1,0 + 3bc078fc: b46d j 3bc073a6 + 3bc078fe: 419987b3 sub a5,s3,s9 + 3bc07902: 470d li a4,3 + 3bc07904: 004c8413 addi s0,s9,4 + 3bc07908: 04f74d63 blt a4,a5,3bc07962 + 3bc0790c: 4791 li a5,4 + 3bc0790e: 04fd3423 sd a5,72(s10) + 3bc07912: 47a1 li a5,8 + 3bc07914: 04fd3823 sd a5,80(s10) + 3bc07918: 47b5 li a5,13 + 3bc0791a: 02fd2223 sw a5,36(s10) + 3bc0791e: 048d3503 ld a0,72(s10) + 3bc07922: 050d3603 ld a2,80(s10) + 3bc07926: 41998733 sub a4,s3,s9 + 3bc0792a: 85e6 mv a1,s9 + 3bc0792c: 8e09 sub a2,a2,a0 + 3bc0792e: 00c737b3 sltu a5,a4,a2 + 3bc07932: 0017c793 xori a5,a5,1 + 3bc07936: 40f7160b mveqz a2,a4,a5 + 3bc0793a: 955e add a0,a0,s7 + 3bc0793c: f832 sd a2,48(sp) + 3bc0793e: 92ef90ef jal ra,3bc00a6c + 3bc07942: 048d3783 ld a5,72(s10) + 3bc07946: 7642 ld a2,48(sp) + 3bc07948: 00cc8433 add s0,s9,a2 + 3bc0794c: 963e add a2,a2,a5 + 3bc0794e: 050d3783 ld a5,80(s10) + 3bc07952: 04cd3423 sd a2,72(s10) + 3bc07956: 00f67563 bgeu a2,a5,3bc07960 + 3bc0795a: 40c784b3 sub s1,a5,a2 + 3bc0795e: b4a1 j 3bc073a6 + 3bc07960: 7ca2 ld s9,40(sp) + 3bc07962: 8566 mv a0,s9 + 3bc07964: aeffe0ef jal ra,3bc06452 + 3bc07968: 7c05350b extu a0,a0,31,0 + 3bc0796c: 00ad3823 sd a0,16(s10) + 3bc07970: 04ad3823 sd a0,80(s10) + 3bc07974: 47b9 li a5,14 + 3bc07976: b641 j 3bc074f6 + 3bc07978: 050d3483 ld s1,80(s10) + 3bc0797c: 41998633 sub a2,s3,s9 + 3bc07980: 4a01 li s4,0 + 3bc07982: 00c4b7b3 sltu a5,s1,a2 + 3bc07986: 0017c793 xori a5,a5,1 + 3bc0798a: 40f4960b mveqz a2,s1,a5 + 3bc0798e: 8c91 sub s1,s1,a2 + 3bc07990: 049d3823 sd s1,80(s10) + 3bc07994: 00cc8433 add s0,s9,a2 + 3bc07998: 9a049ce3 bnez s1,3bc07350 + 3bc0799c: 020d2223 sw zero,36(s10) + 3bc079a0: 060d3023 sd zero,96(s10) + 3bc079a4: 060d3423 sd zero,104(s10) + 3bc079a8: b265 j 3bc07350 + 3bc079aa: 6741 lui a4,0x10 + 3bc079ac: 843e mv s0,a5 + 3bc079ae: 00f77363 bgeu a4,a5,3bc079b4 + 3bc079b2: 6441 lui s0,0x10 + 3bc079b4: 8f81 sub a5,a5,s0 + 3bc079b6: 95be add a1,a1,a5 + 3bc079b8: 8622 mv a2,s0 + 3bc079ba: 8b2f90ef jal ra,3bc00a6c + 3bc079be: 058d3783 ld a5,88(s10) + 3bc079c2: 068d3423 sd s0,104(s10) + 3bc079c6: 06fd3023 sd a5,96(s10) + 3bc079ca: 97a2 add a5,a5,s0 + 3bc079cc: 06fd3823 sd a5,112(s10) + 3bc079d0: b23d j 3bc072fe + 3bc079d2: 451d li a0,7 + 3bc079d4: b2d5 j 3bc073b8 + 3bc079d6: 5579 li a0,-2 + 3bc079d8: b2c5 j 3bc073b8 + 3bc079da: 557d li a0,-1 + 3bc079dc: baf1 j 3bc073b8 + 3bc079de: 5541 li a0,-16 + 3bc079e0: bae1 j 3bc073b8 + 3bc079e2: 5549 li a0,-14 + 3bc079e4: bad1 j 3bc073b8 + 3bc079e6: 5539 li a0,-18 + 3bc079e8: bac1 j 3bc073b8 + +000000003bc079ea : + 3bc079ea: 00f5579b srliw a5,a0,0xf + 3bc079ee: 8d3d xor a0,a0,a5 + 3bc079f0: 85ebd7b7 lui a5,0x85ebd + 3bc079f4: a777879b addiw a5,a5,-1417 + 3bc079f8: 02a7853b mulw a0,a5,a0 + 3bc079fc: 00d5579b srliw a5,a0,0xd + 3bc07a00: 8fa9 xor a5,a5,a0 + 3bc07a02: c2b2b537 lui a0,0xc2b2b + 3bc07a06: e3d5051b addiw a0,a0,-451 + 3bc07a0a: 02a787bb mulw a5,a5,a0 + 3bc07a0e: 0107d51b srliw a0,a5,0x10 + 3bc07a12: 8d3d xor a0,a0,a5 + 3bc07a14: 8082 ret + +000000003bc07a16 : + 3bc07a16: 1101 addi sp,sp,-32 + 3bc07a18: 85aa mv a1,a0 + 3bc07a1a: 4611 li a2,4 + 3bc07a1c: 0068 addi a0,sp,12 + 3bc07a1e: ec06 sd ra,24(sp) + 3bc07a20: 84cf90ef jal ra,3bc00a6c + 3bc07a24: 60e2 ld ra,24(sp) + 3bc07a26: 4532 lw a0,12(sp) + 3bc07a28: 6105 addi sp,sp,32 + 3bc07a2a: 8082 ret + +000000003bc07a2c : + 3bc07a2c: 1101 addi sp,sp,-32 + 3bc07a2e: 8a3d andi a2,a2,15 + 3bc07a30: e822 sd s0,16(sp) + 3bc07a32: ec06 sd ra,24(sp) + 3bc07a34: e426 sd s1,8(sp) + 3bc07a36: e04a sd s2,0(sp) + 3bc07a38: 167d addi a2,a2,-1 + 3bc07a3a: 47b9 li a5,14 + 3bc07a3c: 842a mv s0,a0 + 3bc07a3e: 30c7ec63 bltu a5,a2,3bc07d56 + 3bc07a42: 00003717 auipc a4,0x3 + 3bc07a46: 77670713 addi a4,a4,1910 # 3bc0b1b8 + 3bc07a4a: 44c7478b lrw a5,a4,a2,2 + 3bc07a4e: 84ae mv s1,a1 + 3bc07a50: 8936 mv s2,a3 + 3bc07a52: 97ba add a5,a5,a4 + 3bc07a54: 8782 jr a5 + 3bc07a56: 4785 li a5,1 + 3bc07a58: 08f69a63 bne a3,a5,3bc07aec + 3bc07a5c: 852e mv a0,a1 + 3bc07a5e: fb9ff0ef jal ra,3bc07a16 + 3bc07a62: 0005079b sext.w a5,a0 + 3bc07a66: c2b2b737 lui a4,0xc2b2b + 3bc07a6a: e3d7071b addiw a4,a4,-451 + 3bc07a6e: 24f7140b mulaw s0,a4,a5 + 3bc07a72: 27d4f7b7 lui a5,0x27d4f + 3bc07a76: b2f7879b addiw a5,a5,-1233 + 3bc07a7a: 0491 addi s1,s1,4 + 3bc07a7c: 14f4140b srriw s0,s0,15 + 3bc07a80: 02f4043b mulw s0,s0,a5 + 3bc07a84: 4785 li a5,1 + 3bc07a86: 06f91563 bne s2,a5,3bc07af0 + 3bc07a8a: 8526 mv a0,s1 + 3bc07a8c: f8bff0ef jal ra,3bc07a16 + 3bc07a90: 0005079b sext.w a5,a0 + 3bc07a94: c2b2b737 lui a4,0xc2b2b + 3bc07a98: e3d7071b addiw a4,a4,-451 + 3bc07a9c: 0491 addi s1,s1,4 + 3bc07a9e: 24f7140b mulaw s0,a4,a5 + 3bc07aa2: 27d4f7b7 lui a5,0x27d4f + 3bc07aa6: b2f7879b addiw a5,a5,-1233 + 3bc07aaa: 14f4140b srriw s0,s0,15 + 3bc07aae: 02f4043b mulw s0,s0,a5 + 3bc07ab2: 4785 li a5,1 + 3bc07ab4: 04f91063 bne s2,a5,3bc07af4 + 3bc07ab8: 8526 mv a0,s1 + 3bc07aba: f5dff0ef jal ra,3bc07a16 + 3bc07abe: 0005079b sext.w a5,a0 + 3bc07ac2: c2b2b737 lui a4,0xc2b2b + 3bc07ac6: e3d7071b addiw a4,a4,-451 + 3bc07aca: 24f7140b mulaw s0,a4,a5 + 3bc07ace: 27d4f7b7 lui a5,0x27d4f + 3bc07ad2: b2f7879b addiw a5,a5,-1233 + 3bc07ad6: 14f4150b srriw a0,s0,15 + 3bc07ada: 02a7853b mulw a0,a5,a0 + 3bc07ade: 6442 ld s0,16(sp) + 3bc07ae0: 60e2 ld ra,24(sp) + 3bc07ae2: 64a2 ld s1,8(sp) + 3bc07ae4: 6902 ld s2,0(sp) + 3bc07ae6: 6105 addi sp,sp,32 + 3bc07ae8: f03ff06f j 3bc079ea + 3bc07aec: 419c lw a5,0(a1) + 3bc07aee: bfa5 j 3bc07a66 + 3bc07af0: 409c lw a5,0(s1) + 3bc07af2: b74d j 3bc07a94 + 3bc07af4: 409c lw a5,0(s1) + 3bc07af6: b7f1 j 3bc07ac2 + 3bc07af8: 4785 li a5,1 + 3bc07afa: 0af69263 bne a3,a5,3bc07b9e + 3bc07afe: 852e mv a0,a1 + 3bc07b00: f17ff0ef jal ra,3bc07a16 + 3bc07b04: 0005079b sext.w a5,a0 + 3bc07b08: c2b2b737 lui a4,0xc2b2b + 3bc07b0c: e3d7071b addiw a4,a4,-451 + 3bc07b10: 24f7140b mulaw s0,a4,a5 + 3bc07b14: 27d4f7b7 lui a5,0x27d4f + 3bc07b18: b2f7879b addiw a5,a5,-1233 + 3bc07b1c: 0491 addi s1,s1,4 + 3bc07b1e: 14f4140b srriw s0,s0,15 + 3bc07b22: 02f4043b mulw s0,s0,a5 + 3bc07b26: 4785 li a5,1 + 3bc07b28: 06f91d63 bne s2,a5,3bc07ba2 + 3bc07b2c: 8526 mv a0,s1 + 3bc07b2e: ee9ff0ef jal ra,3bc07a16 + 3bc07b32: 0005079b sext.w a5,a0 + 3bc07b36: c2b2b737 lui a4,0xc2b2b + 3bc07b3a: e3d7071b addiw a4,a4,-451 + 3bc07b3e: 0491 addi s1,s1,4 + 3bc07b40: 24f7140b mulaw s0,a4,a5 + 3bc07b44: 27d4f7b7 lui a5,0x27d4f + 3bc07b48: b2f7879b addiw a5,a5,-1233 + 3bc07b4c: 14f4140b srriw s0,s0,15 + 3bc07b50: 02f4043b mulw s0,s0,a5 + 3bc07b54: 4785 li a5,1 + 3bc07b56: 04f91863 bne s2,a5,3bc07ba6 + 3bc07b5a: 8526 mv a0,s1 + 3bc07b5c: ebbff0ef jal ra,3bc07a16 + 3bc07b60: 0005079b sext.w a5,a0 + 3bc07b64: c2b2b737 lui a4,0xc2b2b + 3bc07b68: e3d7071b addiw a4,a4,-451 + 3bc07b6c: 16566537 lui a0,0x16566 + 3bc07b70: 7b15051b addiw a0,a0,1969 + 3bc07b74: 24f7140b mulaw s0,a4,a5 + 3bc07b78: 0044c783 lbu a5,4(s1) + 3bc07b7c: 27d4f737 lui a4,0x27d4f + 3bc07b80: b2f7071b addiw a4,a4,-1233 + 3bc07b84: 02a787bb mulw a5,a5,a0 + 3bc07b88: 14f4140b srriw s0,s0,15 + 3bc07b8c: 9e378537 lui a0,0x9e378 + 3bc07b90: 9b15051b addiw a0,a0,-1615 + 3bc07b94: 24e4178b mulaw a5,s0,a4 + 3bc07b98: 1557978b srriw a5,a5,21 + 3bc07b9c: bf3d j 3bc07ada + 3bc07b9e: 419c lw a5,0(a1) + 3bc07ba0: b7a5 j 3bc07b08 + 3bc07ba2: 409c lw a5,0(s1) + 3bc07ba4: bf49 j 3bc07b36 + 3bc07ba6: 409c lw a5,0(s1) + 3bc07ba8: bf75 j 3bc07b64 + 3bc07baa: 4785 li a5,1 + 3bc07bac: 0af69a63 bne a3,a5,3bc07c60 + 3bc07bb0: 852e mv a0,a1 + 3bc07bb2: e65ff0ef jal ra,3bc07a16 + 3bc07bb6: 0005079b sext.w a5,a0 + 3bc07bba: c2b2b737 lui a4,0xc2b2b + 3bc07bbe: e3d7071b addiw a4,a4,-451 + 3bc07bc2: 24f7140b mulaw s0,a4,a5 + 3bc07bc6: 27d4f7b7 lui a5,0x27d4f + 3bc07bca: b2f7879b addiw a5,a5,-1233 + 3bc07bce: 0491 addi s1,s1,4 + 3bc07bd0: 14f4140b srriw s0,s0,15 + 3bc07bd4: 02f4043b mulw s0,s0,a5 + 3bc07bd8: 4785 li a5,1 + 3bc07bda: 08f91563 bne s2,a5,3bc07c64 + 3bc07bde: 8526 mv a0,s1 + 3bc07be0: e37ff0ef jal ra,3bc07a16 + 3bc07be4: 0005079b sext.w a5,a0 + 3bc07be8: c2b2b737 lui a4,0xc2b2b + 3bc07bec: e3d7071b addiw a4,a4,-451 + 3bc07bf0: 0491 addi s1,s1,4 + 3bc07bf2: 24f7140b mulaw s0,a4,a5 + 3bc07bf6: 27d4f7b7 lui a5,0x27d4f + 3bc07bfa: b2f7879b addiw a5,a5,-1233 + 3bc07bfe: 14f4140b srriw s0,s0,15 + 3bc07c02: 02f4043b mulw s0,s0,a5 + 3bc07c06: 4785 li a5,1 + 3bc07c08: 06f91063 bne s2,a5,3bc07c68 + 3bc07c0c: 8526 mv a0,s1 + 3bc07c0e: e09ff0ef jal ra,3bc07a16 + 3bc07c12: 0005079b sext.w a5,a0 + 3bc07c16: c2b2b737 lui a4,0xc2b2b + 3bc07c1a: e3d7071b addiw a4,a4,-451 + 3bc07c1e: 9e378537 lui a0,0x9e378 + 3bc07c22: 9b15051b addiw a0,a0,-1615 + 3bc07c26: 24f7140b mulaw s0,a4,a5 + 3bc07c2a: 0044c703 lbu a4,4(s1) + 3bc07c2e: 165667b7 lui a5,0x16566 + 3bc07c32: 7b17869b addiw a3,a5,1969 + 3bc07c36: 27d4f7b7 lui a5,0x27d4f + 3bc07c3a: b2f7879b addiw a5,a5,-1233 + 3bc07c3e: 02d7073b mulw a4,a4,a3 + 3bc07c42: 14f4140b srriw s0,s0,15 + 3bc07c46: 24f4170b mulaw a4,s0,a5 + 3bc07c4a: 0054c783 lbu a5,5(s1) + 3bc07c4e: 02d787bb mulw a5,a5,a3 + 3bc07c52: 1557170b srriw a4,a4,21 + 3bc07c56: 24a7178b mulaw a5,a4,a0 + 3bc07c5a: 1557978b srriw a5,a5,21 + 3bc07c5e: bdb5 j 3bc07ada + 3bc07c60: 419c lw a5,0(a1) + 3bc07c62: bfa1 j 3bc07bba + 3bc07c64: 409c lw a5,0(s1) + 3bc07c66: b749 j 3bc07be8 + 3bc07c68: 409c lw a5,0(s1) + 3bc07c6a: b775 j 3bc07c16 + 3bc07c6c: 4785 li a5,1 + 3bc07c6e: 0ef69663 bne a3,a5,3bc07d5a + 3bc07c72: 852e mv a0,a1 + 3bc07c74: da3ff0ef jal ra,3bc07a16 + 3bc07c78: 0005079b sext.w a5,a0 + 3bc07c7c: c2b2b737 lui a4,0xc2b2b + 3bc07c80: e3d7071b addiw a4,a4,-451 + 3bc07c84: 24f7140b mulaw s0,a4,a5 + 3bc07c88: 27d4f7b7 lui a5,0x27d4f + 3bc07c8c: b2f7879b addiw a5,a5,-1233 + 3bc07c90: 0491 addi s1,s1,4 + 3bc07c92: 14f4140b srriw s0,s0,15 + 3bc07c96: 02f4043b mulw s0,s0,a5 + 3bc07c9a: 4785 li a5,1 + 3bc07c9c: 0cf91163 bne s2,a5,3bc07d5e + 3bc07ca0: 8526 mv a0,s1 + 3bc07ca2: d75ff0ef jal ra,3bc07a16 + 3bc07ca6: 0005079b sext.w a5,a0 + 3bc07caa: c2b2b737 lui a4,0xc2b2b + 3bc07cae: e3d7071b addiw a4,a4,-451 + 3bc07cb2: 0491 addi s1,s1,4 + 3bc07cb4: 24f7140b mulaw s0,a4,a5 + 3bc07cb8: 27d4f7b7 lui a5,0x27d4f + 3bc07cbc: b2f7879b addiw a5,a5,-1233 + 3bc07cc0: 14f4140b srriw s0,s0,15 + 3bc07cc4: 02f4043b mulw s0,s0,a5 + 3bc07cc8: 4785 li a5,1 + 3bc07cca: 08f91c63 bne s2,a5,3bc07d62 + 3bc07cce: 8526 mv a0,s1 + 3bc07cd0: d47ff0ef jal ra,3bc07a16 + 3bc07cd4: 0005079b sext.w a5,a0 + 3bc07cd8: c2b2b737 lui a4,0xc2b2b + 3bc07cdc: e3d7071b addiw a4,a4,-451 + 3bc07ce0: 0491 addi s1,s1,4 + 3bc07ce2: 24f7140b mulaw s0,a4,a5 + 3bc07ce6: 27d4f7b7 lui a5,0x27d4f + 3bc07cea: b2f7879b addiw a5,a5,-1233 + 3bc07cee: 14f4140b srriw s0,s0,15 + 3bc07cf2: 02f4043b mulw s0,s0,a5 + 3bc07cf6: 9814c70b lbuia a4,(s1),1,0 + 3bc07cfa: 165667b7 lui a5,0x16566 + 3bc07cfe: 7b17879b addiw a5,a5,1969 + 3bc07d02: 24f7140b mulaw s0,a4,a5 + 3bc07d06: 9e3787b7 lui a5,0x9e378 + 3bc07d0a: 9b17879b addiw a5,a5,-1615 + 3bc07d0e: 1554140b srriw s0,s0,21 + 3bc07d12: 02f4043b mulw s0,s0,a5 + 3bc07d16: 9814c70b lbuia a4,(s1),1,0 + 3bc07d1a: 165667b7 lui a5,0x16566 + 3bc07d1e: 7b17879b addiw a5,a5,1969 + 3bc07d22: 24f7140b mulaw s0,a4,a5 + 3bc07d26: 9e3787b7 lui a5,0x9e378 + 3bc07d2a: 9b17879b addiw a5,a5,-1615 + 3bc07d2e: 1554140b srriw s0,s0,21 + 3bc07d32: 02f4043b mulw s0,s0,a5 + 3bc07d36: 0004c703 lbu a4,0(s1) + 3bc07d3a: 165667b7 lui a5,0x16566 + 3bc07d3e: 7b17879b addiw a5,a5,1969 + 3bc07d42: 24f7140b mulaw s0,a4,a5 + 3bc07d46: 9e3787b7 lui a5,0x9e378 + 3bc07d4a: 9b17879b addiw a5,a5,-1615 + 3bc07d4e: 1554140b srriw s0,s0,21 + 3bc07d52: 02f4043b mulw s0,s0,a5 + 3bc07d56: 8522 mv a0,s0 + 3bc07d58: b359 j 3bc07ade + 3bc07d5a: 419c lw a5,0(a1) + 3bc07d5c: b705 j 3bc07c7c + 3bc07d5e: 409c lw a5,0(s1) + 3bc07d60: b7a9 j 3bc07caa + 3bc07d62: 409c lw a5,0(s1) + 3bc07d64: bf95 j 3bc07cd8 + +000000003bc07d66 : + 3bc07d66: 711d addi sp,sp,-96 + 3bc07d68: e8a2 sd s0,80(sp) + 3bc07d6a: e0ca sd s2,64(sp) + 3bc07d6c: fc4e sd s3,56(sp) + 3bc07d6e: ec86 sd ra,88(sp) + 3bc07d70: e4a6 sd s1,72(sp) + 3bc07d72: f852 sd s4,48(sp) + 3bc07d74: f456 sd s5,40(sp) + 3bc07d76: f05a sd s6,32(sp) + 3bc07d78: ec5e sd s7,24(sp) + 3bc07d7a: e862 sd s8,16(sp) + 3bc07d7c: e466 sd s9,8(sp) + 3bc07d7e: 00357793 andi a5,a0,3 + 3bc07d82: 892a mv s2,a0 + 3bc07d84: 89ae mv s3,a1 + 3bc07d86: 8432 mv s0,a2 + 3bc07d88: eff1 bnez a5,3bc07e64 + 3bc07d8a: 47bd li a5,15 + 3bc07d8c: 0cb7f663 bgeu a5,a1,3bc07e58 + 3bc07d90: 242347b7 lui a5,0x24234 + 3bc07d94: ff158813 addi a6,a1,-15 # fffffffffffefff1 <__BL2_END__+0xffffffffc43dcbe1> + 3bc07d98: 4287879b addiw a5,a5,1064 + 3bc07d9c: 982a add a6,a6,a0 + 3bc07d9e: 9fb1 addw a5,a5,a2 + 3bc07da0: 61c88537 lui a0,0x61c88 + 3bc07da4: 85ebd637 lui a2,0x85ebd + 3bc07da8: a776061b addiw a2,a2,-1417 + 3bc07dac: 64f5051b addiw a0,a0,1615 + 3bc07db0: 9e3785b7 lui a1,0x9e378 + 3bc07db4: 0086073b addw a4,a2,s0 + 3bc07db8: 9d21 addw a0,a0,s0 + 3bc07dba: 86ca mv a3,s2 + 3bc07dbc: 9b15859b addiw a1,a1,-1615 + 3bc07dc0: 0006a883 lw a7,0(a3) # ffffffffffff0000 <__BL2_END__+0xffffffffc43dcbf0> + 3bc07dc4: 24c8978b mulaw a5,a7,a2 + 3bc07dc8: 0046a883 lw a7,4(a3) + 3bc07dcc: 24c8970b mulaw a4,a7,a2 + 3bc07dd0: 0086a883 lw a7,8(a3) + 3bc07dd4: 1537978b srriw a5,a5,19 + 3bc07dd8: 24c8940b mulaw s0,a7,a2 + 3bc07ddc: 00c6a883 lw a7,12(a3) + 3bc07de0: 1537170b srriw a4,a4,19 + 3bc07de4: 06c1 addi a3,a3,16 + 3bc07de6: 24c8950b mulaw a0,a7,a2 + 3bc07dea: 1534140b srriw s0,s0,19 + 3bc07dee: 1535150b srriw a0,a0,19 + 3bc07df2: 02b787bb mulw a5,a5,a1 + 3bc07df6: 02b7073b mulw a4,a4,a1 + 3bc07dfa: 02b4043b mulw s0,s0,a1 + 3bc07dfe: 02b5053b mulw a0,a0,a1 + 3bc07e02: fb06efe3 bltu a3,a6,3bc07dc0 + 3bc07e06: 00190593 addi a1,s2,1 + 3bc07e0a: 46c1 li a3,16 + 3bc07e0c: 00b86663 bltu a6,a1,3bc07e18 + 3bc07e10: ff098693 addi a3,s3,-16 + 3bc07e14: 9ac1 andi a3,a3,-16 + 3bc07e16: 06c1 addi a3,a3,16 + 3bc07e18: 15f7978b srriw a5,a5,31 + 3bc07e1c: 1597170b srriw a4,a4,25 + 3bc07e20: 9fb9 addw a5,a5,a4 + 3bc07e22: 1544140b srriw s0,s0,20 + 3bc07e26: 9fa1 addw a5,a5,s0 + 3bc07e28: 14e5150b srriw a0,a0,14 + 3bc07e2c: 9936 add s2,s2,a3 + 3bc07e2e: 9d3d addw a0,a0,a5 + 3bc07e30: 4681 li a3,0 + 3bc07e32: 6446 ld s0,80(sp) + 3bc07e34: 60e6 ld ra,88(sp) + 3bc07e36: 64a6 ld s1,72(sp) + 3bc07e38: 7a42 ld s4,48(sp) + 3bc07e3a: 7aa2 ld s5,40(sp) + 3bc07e3c: 7b02 ld s6,32(sp) + 3bc07e3e: 6be2 ld s7,24(sp) + 3bc07e40: 6c42 ld s8,16(sp) + 3bc07e42: 6ca2 ld s9,8(sp) + 3bc07e44: 00f9f613 andi a2,s3,15 + 3bc07e48: 85ca mv a1,s2 + 3bc07e4a: 00a9853b addw a0,s3,a0 + 3bc07e4e: 6906 ld s2,64(sp) + 3bc07e50: 79e2 ld s3,56(sp) + 3bc07e52: 6125 addi sp,sp,96 + 3bc07e54: bd9ff06f j 3bc07a2c + 3bc07e58: 16566537 lui a0,0x16566 + 3bc07e5c: 7b15051b addiw a0,a0,1969 + 3bc07e60: 9d31 addw a0,a0,a2 + 3bc07e62: b7f9 j 3bc07e30 + 3bc07e64: 47bd li a5,15 + 3bc07e66: 0ab7fe63 bgeu a5,a1,3bc07f22 + 3bc07e6a: 242344b7 lui s1,0x24234 + 3bc07e6e: 85ebdab7 lui s5,0x85ebd + 3bc07e72: 61c887b7 lui a5,0x61c88 + 3bc07e76: ff158c93 addi s9,a1,-15 # ffffffff9e377ff1 <__BL2_END__+0xffffffff62764be1> + 3bc07e7a: 4284849b addiw s1,s1,1064 + 3bc07e7e: a77a8a9b addiw s5,s5,-1417 + 3bc07e82: 64f7879b addiw a5,a5,1615 + 3bc07e86: 9e378b37 lui s6,0x9e378 + 3bc07e8a: 9caa add s9,s9,a0 + 3bc07e8c: 9cb1 addw s1,s1,a2 + 3bc07e8e: 00ca8c3b addw s8,s5,a2 + 3bc07e92: 00c78bbb addw s7,a5,a2 + 3bc07e96: 8a2a mv s4,a0 + 3bc07e98: 9b1b0b1b addiw s6,s6,-1615 + 3bc07e9c: 8552 mv a0,s4 + 3bc07e9e: b79ff0ef jal ra,3bc07a16 + 3bc07ea2: 24aa948b mulaw s1,s5,a0 + 3bc07ea6: 004a0513 addi a0,s4,4 + 3bc07eaa: b6dff0ef jal ra,3bc07a16 + 3bc07eae: 8762 mv a4,s8 + 3bc07eb0: 24aa970b mulaw a4,s5,a0 + 3bc07eb4: 008a0513 addi a0,s4,8 + 3bc07eb8: 1534948b srriw s1,s1,19 + 3bc07ebc: 1537170b srriw a4,a4,19 + 3bc07ec0: 03670c3b mulw s8,a4,s6 + 3bc07ec4: b53ff0ef jal ra,3bc07a16 + 3bc07ec8: 24aa940b mulaw s0,s5,a0 + 3bc07ecc: 00ca0513 addi a0,s4,12 + 3bc07ed0: 0a41 addi s4,s4,16 + 3bc07ed2: 1534160b srriw a2,s0,19 + 3bc07ed6: 0366043b mulw s0,a2,s6 + 3bc07eda: b3dff0ef jal ra,3bc07a16 + 3bc07ede: 87de mv a5,s7 + 3bc07ee0: 24aa978b mulaw a5,s5,a0 + 3bc07ee4: 1537978b srriw a5,a5,19 + 3bc07ee8: 036484bb mulw s1,s1,s6 + 3bc07eec: 03678bbb mulw s7,a5,s6 + 3bc07ef0: fb9a66e3 bltu s4,s9,3bc07e9c + 3bc07ef4: 00190713 addi a4,s2,1 + 3bc07ef8: 47c1 li a5,16 + 3bc07efa: 00ece663 bltu s9,a4,3bc07f06 + 3bc07efe: ff098793 addi a5,s3,-16 + 3bc07f02: 9bc1 andi a5,a5,-16 + 3bc07f04: 07c1 addi a5,a5,16 + 3bc07f06: 159c150b srriw a0,s8,25 + 3bc07f0a: 15f4948b srriw s1,s1,31 + 3bc07f0e: 9ca9 addw s1,s1,a0 + 3bc07f10: 1544150b srriw a0,s0,20 + 3bc07f14: 993e add s2,s2,a5 + 3bc07f16: 9d25 addw a0,a0,s1 + 3bc07f18: 14eb940b srriw s0,s7,14 + 3bc07f1c: 9d21 addw a0,a0,s0 + 3bc07f1e: 4685 li a3,1 + 3bc07f20: bf09 j 3bc07e32 + 3bc07f22: 16566537 lui a0,0x16566 + 3bc07f26: 7b15051b addiw a0,a0,1969 + 3bc07f2a: bfcd j 3bc07f1c + +000000003bc07f2c : + 3bc07f2c: 715d addi sp,sp,-80 + 3bc07f2e: e0a2 sd s0,64(sp) + 3bc07f30: fc26 sd s1,56(sp) + 3bc07f32: 842e mv s0,a1 + 3bc07f34: 84aa mv s1,a0 + 3bc07f36: 03000613 li a2,48 + 3bc07f3a: 4581 li a1,0 + 3bc07f3c: 850a mv a0,sp + 3bc07f3e: e486 sd ra,72(sp) + 3bc07f40: ad3f80ef jal ra,3bc00a12 + 3bc07f44: 242347b7 lui a5,0x24234 + 3bc07f48: 4287879b addiw a5,a5,1064 + 3bc07f4c: 9fa1 addw a5,a5,s0 + 3bc07f4e: c43e sw a5,8(sp) + 3bc07f50: 85ebd7b7 lui a5,0x85ebd + 3bc07f54: a777879b addiw a5,a5,-1417 + 3bc07f58: 9fa1 addw a5,a5,s0 + 3bc07f5a: c63e sw a5,12(sp) + 3bc07f5c: 61c887b7 lui a5,0x61c88 + 3bc07f60: 64f7879b addiw a5,a5,1615 + 3bc07f64: c822 sw s0,16(sp) + 3bc07f66: 858a mv a1,sp + 3bc07f68: 9c3d addw s0,s0,a5 + 3bc07f6a: 8526 mv a0,s1 + 3bc07f6c: 02c00613 li a2,44 + 3bc07f70: ca22 sw s0,20(sp) + 3bc07f72: afbf80ef jal ra,3bc00a6c + 3bc07f76: 60a6 ld ra,72(sp) + 3bc07f78: 6406 ld s0,64(sp) + 3bc07f7a: 74e2 ld s1,56(sp) + 3bc07f7c: 4501 li a0,0 + 3bc07f7e: 6161 addi sp,sp,80 + 3bc07f80: 8082 ret + +000000003bc07f82 : + 3bc07f82: 711d addi sp,sp,-96 + 3bc07f84: e0ca sd s2,64(sp) + 3bc07f86: ec86 sd ra,88(sp) + 3bc07f88: e8a2 sd s0,80(sp) + 3bc07f8a: e4a6 sd s1,72(sp) + 3bc07f8c: fc4e sd s3,56(sp) + 3bc07f8e: f852 sd s4,48(sp) + 3bc07f90: f456 sd s5,40(sp) + 3bc07f92: f05a sd s6,32(sp) + 3bc07f94: ec5e sd s7,24(sp) + 3bc07f96: e862 sd s8,16(sp) + 3bc07f98: e466 sd s9,8(sp) + 3bc07f9a: e06a sd s10,0(sp) + 3bc07f9c: 4905 li s2,1 + 3bc07f9e: c5b9 beqz a1,3bc07fec + 3bc07fa0: 4114 lw a3,0(a0) + 3bc07fa2: 842a mv s0,a0 + 3bc07fa4: 01063713 sltiu a4,a2,16 + 3bc07fa8: 00c6853b addw a0,a3,a2 + 3bc07fac: 483d li a6,15 + 3bc07fae: 00a836b3 sltu a3,a6,a0 + 3bc07fb2: 00174713 xori a4,a4,1 + 3bc07fb6: 8f55 or a4,a4,a3 + 3bc07fb8: 4054 lw a3,4(s0) + 3bc07fba: c008 sw a0,0(s0) + 3bc07fbc: 84ae mv s1,a1 + 3bc07fbe: 8f55 or a4,a4,a3 + 3bc07fc0: c058 sw a4,4(s0) + 3bc07fc2: 5418 lw a4,40(s0) + 3bc07fc4: 00c58d33 add s10,a1,a2 + 3bc07fc8: 0006091b sext.w s2,a2 + 3bc07fcc: 7c07350b extu a0,a4,31,0 + 3bc07fd0: 00a607b3 add a5,a2,a0 + 3bc07fd4: 02f86b63 bltu a6,a5,3bc0800a + 3bc07fd8: 01840793 addi a5,s0,24 # 10018 <__BSS_SIZE__+0xa408> + 3bc07fdc: 953e add a0,a0,a5 + 3bc07fde: a8ff80ef jal ra,3bc00a6c + 3bc07fe2: 541c lw a5,40(s0) + 3bc07fe4: 012787bb addw a5,a5,s2 + 3bc07fe8: d41c sw a5,40(s0) + 3bc07fea: 4901 li s2,0 + 3bc07fec: 60e6 ld ra,88(sp) + 3bc07fee: 6446 ld s0,80(sp) + 3bc07ff0: 64a6 ld s1,72(sp) + 3bc07ff2: 79e2 ld s3,56(sp) + 3bc07ff4: 7a42 ld s4,48(sp) + 3bc07ff6: 7aa2 ld s5,40(sp) + 3bc07ff8: 7b02 ld s6,32(sp) + 3bc07ffa: 6be2 ld s7,24(sp) + 3bc07ffc: 6c42 ld s8,16(sp) + 3bc07ffe: 6ca2 ld s9,8(sp) + 3bc08000: 6d02 ld s10,0(sp) + 3bc08002: 854a mv a0,s2 + 3bc08004: 6906 ld s2,64(sp) + 3bc08006: 6125 addi sp,sp,96 + 3bc08008: 8082 ret + 3bc0800a: c355 beqz a4,3bc080ae + 3bc0800c: 4b41 li s6,16 + 3bc0800e: 40eb063b subw a2,s6,a4 + 3bc08012: 01840993 addi s3,s0,24 + 3bc08016: 7c06360b extu a2,a2,31,0 + 3bc0801a: 954e add a0,a0,s3 + 3bc0801c: a51f80ef jal ra,3bc00a6c + 3bc08020: 00842903 lw s2,8(s0) + 3bc08024: 854e mv a0,s3 + 3bc08026: 85ebdab7 lui s5,0x85ebd + 3bc0802a: 9edff0ef jal ra,3bc07a16 + 3bc0802e: a77a8a9b addiw s5,s5,-1417 + 3bc08032: 24aa990b mulaw s2,s5,a0 + 3bc08036: 9e378a37 lui s4,0x9e378 + 3bc0803a: 9b1a0a1b addiw s4,s4,-1615 + 3bc0803e: 00c42983 lw s3,12(s0) + 3bc08042: 01c40513 addi a0,s0,28 + 3bc08046: 1539190b srriw s2,s2,19 + 3bc0804a: 0349093b mulw s2,s2,s4 + 3bc0804e: 01242423 sw s2,8(s0) + 3bc08052: 9c5ff0ef jal ra,3bc07a16 + 3bc08056: 24aa998b mulaw s3,s5,a0 + 3bc0805a: 02040513 addi a0,s0,32 + 3bc0805e: 1539998b srriw s3,s3,19 + 3bc08062: 034989bb mulw s3,s3,s4 + 3bc08066: 01342623 sw s3,12(s0) + 3bc0806a: 01042983 lw s3,16(s0) + 3bc0806e: 9a9ff0ef jal ra,3bc07a16 + 3bc08072: 01442903 lw s2,20(s0) + 3bc08076: 24aa998b mulaw s3,s5,a0 + 3bc0807a: 02440513 addi a0,s0,36 + 3bc0807e: 1539998b srriw s3,s3,19 + 3bc08082: 034989bb mulw s3,s3,s4 + 3bc08086: 01342823 sw s3,16(s0) + 3bc0808a: 98dff0ef jal ra,3bc07a16 + 3bc0808e: 24aa990b mulaw s2,s5,a0 + 3bc08092: 541c lw a5,40(s0) + 3bc08094: 02042423 sw zero,40(s0) + 3bc08098: 40fb0b3b subw s6,s6,a5 + 3bc0809c: 7c0b3b0b extu s6,s6,31,0 + 3bc080a0: 94da add s1,s1,s6 + 3bc080a2: 1539190b srriw s2,s2,19 + 3bc080a6: 0349093b mulw s2,s2,s4 + 3bc080aa: 01242a23 sw s2,20(s0) + 3bc080ae: ff0d0913 addi s2,s10,-16 + 3bc080b2: 08996363 bltu s2,s1,3bc08138 + 3bc080b6: e3844c8b lwd s9,s8,(s0),1,3 + 3bc080ba: e5444a8b lwd s5,s4,(s0),2,3 + 3bc080be: 85ebdbb7 lui s7,0x85ebd + 3bc080c2: 9e378b37 lui s6,0x9e378 + 3bc080c6: 89a6 mv s3,s1 + 3bc080c8: a77b8b9b addiw s7,s7,-1417 + 3bc080cc: 9b1b0b1b addiw s6,s6,-1615 + 3bc080d0: 854e mv a0,s3 + 3bc080d2: 945ff0ef jal ra,3bc07a16 + 3bc080d6: 24ab9c8b mulaw s9,s7,a0 + 3bc080da: 00498513 addi a0,s3,4 + 3bc080de: 939ff0ef jal ra,3bc07a16 + 3bc080e2: 24ab9c0b mulaw s8,s7,a0 + 3bc080e6: 00898513 addi a0,s3,8 + 3bc080ea: 92dff0ef jal ra,3bc07a16 + 3bc080ee: 153c9c8b srriw s9,s9,19 + 3bc080f2: 24ab9a8b mulaw s5,s7,a0 + 3bc080f6: 00c98513 addi a0,s3,12 + 3bc080fa: 91dff0ef jal ra,3bc07a16 + 3bc080fe: 153c1c0b srriw s8,s8,19 + 3bc08102: 09c1 addi s3,s3,16 + 3bc08104: 24ab9a0b mulaw s4,s7,a0 + 3bc08108: 153a9a8b srriw s5,s5,19 + 3bc0810c: 153a1a0b srriw s4,s4,19 + 3bc08110: 036c8cbb mulw s9,s9,s6 + 3bc08114: 036c0c3b mulw s8,s8,s6 + 3bc08118: 036a8abb mulw s5,s5,s6 + 3bc0811c: 036a0a3b mulw s4,s4,s6 + 3bc08120: fb3978e3 bgeu s2,s3,3bc080d0 + 3bc08124: 40990933 sub s2,s2,s1 + 3bc08128: ff097913 andi s2,s2,-16 + 3bc0812c: 0941 addi s2,s2,16 + 3bc0812e: 94ca add s1,s1,s2 + 3bc08130: e3845c8b swd s9,s8,(s0),1,3 + 3bc08134: e5445a8b swd s5,s4,(s0),2,3 + 3bc08138: 4901 li s2,0 + 3bc0813a: eba4f9e3 bgeu s1,s10,3bc07fec + 3bc0813e: 409d0d33 sub s10,s10,s1 + 3bc08142: 866a mv a2,s10 + 3bc08144: 85a6 mv a1,s1 + 3bc08146: 01840513 addi a0,s0,24 + 3bc0814a: 923f80ef jal ra,3bc00a6c + 3bc0814e: 03a42423 sw s10,40(s0) + 3bc08152: bd69 j 3bc07fec + +000000003bc08154 : + 3bc08154: 415c lw a5,4(a0) + 3bc08156: 4918 lw a4,16(a0) + 3bc08158: cb8d beqz a5,3bc0818a + 3bc0815a: 451c lw a5,8(a0) + 3bc0815c: 4554 lw a3,12(a0) + 3bc0815e: 1547170b srriw a4,a4,20 + 3bc08162: 15f7978b srriw a5,a5,31 + 3bc08166: 1596968b srriw a3,a3,25 + 3bc0816a: 9fb5 addw a5,a5,a3 + 3bc0816c: 9fb9 addw a5,a5,a4 + 3bc0816e: 4958 lw a4,20(a0) + 3bc08170: 14e7170b srriw a4,a4,14 + 3bc08174: 85aa mv a1,a0 + 3bc08176: 9fb9 addw a5,a5,a4 + 3bc08178: 5ac5c70b lwia a4,(a1),12,1 + 3bc0817c: 02856603 lwu a2,40(a0) # 16566028 + 3bc08180: 4681 li a3,0 + 3bc08182: 00f7053b addw a0,a4,a5 + 3bc08186: 8a7ff06f j 3bc07a2c + 3bc0818a: 165667b7 lui a5,0x16566 + 3bc0818e: 7b17879b addiw a5,a5,1969 + 3bc08192: b7cd j 3bc08174 + +000000003bc08194 : + 3bc08194: 1141 addi sp,sp,-16 + 3bc08196: e022 sd s0,0(sp) + 3bc08198: 842a mv s0,a0 + 3bc0819a: 00003517 auipc a0,0x3 + 3bc0819e: 05e50513 addi a0,a0,94 # 3bc0b1f8 + 3bc081a2: e406 sd ra,8(sp) + 3bc081a4: 9b4f80ef jal ra,3bc00358 + 3bc081a8: 400c lw a1,0(s0) + 3bc081aa: 00003517 auipc a0,0x3 + 3bc081ae: 05e50513 addi a0,a0,94 # 3bc0b208 + 3bc081b2: 9a6f80ef jal ra,3bc00358 + 3bc081b6: 012000ef jal ra,3bc081c8 + 3bc081ba: 296000ef jal ra,3bc08450 + 3bc081be: 60a2 ld ra,8(sp) + 3bc081c0: 6402 ld s0,0(sp) + 3bc081c2: 4501 li a0,0 + 3bc081c4: 0141 addi sp,sp,16 + 3bc081c6: 8082 ret + +000000003bc081c8 : + 3bc081c8: 030007b7 lui a5,0x3000 + 3bc081cc: 43cc lw a1,4(a5) + 3bc081ce: 7139 addi sp,sp,-64 + 3bc081d0: 030507b7 lui a5,0x3050 + 3bc081d4: 79c5b58b extu a1,a1,30,28 + 3bc081d8: 00003517 auipc a0,0x3 + 3bc081dc: 04850513 addi a0,a0,72 # 3bc0b220 + 3bc081e0: f822 sd s0,48(sp) + 3bc081e2: f426 sd s1,40(sp) + 3bc081e4: f04a sd s2,32(sp) + 3bc081e6: ec4e sd s3,24(sp) + 3bc081e8: fc06 sd ra,56(sp) + 3bc081ea: 1087a983 lw s3,264(a5) # 3050108 <__BSS_SIZE__+0x304a4f8> + 3bc081ee: e42e sd a1,8(sp) + 3bc081f0: 968f80ef jal ra,3bc00358 + 3bc081f4: 65a2 ld a1,8(sp) + 3bc081f6: 00003717 auipc a4,0x3 + 3bc081fa: 10e70713 addi a4,a4,270 # 3bc0b304 + 3bc081fe: 0000b917 auipc s2,0xb + 3bc08202: 21090913 addi s2,s2,528 # 3bc1340e + 3bc08206: 44b7478b lrw a5,a4,a1,2 + 3bc0820a: 0000b497 auipc s1,0xb + 3bc0820e: 20248493 addi s1,s1,514 # 3bc1340c + 3bc08212: 0000b417 auipc s0,0xb + 3bc08216: 1fd40413 addi s0,s0,509 # 3bc1340f + 3bc0821a: 97ba add a5,a5,a4 + 3bc0821c: 8782 jr a5 + 3bc0821e: 478d li a5,3 + 3bc08220: 4709 li a4,2 + 3bc08222: 00f90023 sb a5,0(s2) + 3bc08226: 00e48023 sb a4,0(s1) + 3bc0822a: 00f40023 sb a5,0(s0) + 3bc0822e: a825 j 3bc08266 + 3bc08230: 4791 li a5,4 + 3bc08232: 00f90023 sb a5,0(s2) + 3bc08236: 4785 li a5,1 + 3bc08238: 00f48023 sb a5,0(s1) + 3bc0823c: 478d li a5,3 + 3bc0823e: b7f5 j 3bc0822a + 3bc08240: 00003517 auipc a0,0x3 + 3bc08244: ff050513 addi a0,a0,-16 # 3bc0b230 + 3bc08248: 910f80ef jal ra,3bc00358 + 3bc0824c: 2981 sext.w s3,s3 + 3bc0824e: 6559b78b extu a5,s3,25,21 + 3bc08252: 00f90023 sb a5,0(s2) + 3bc08256: 71a9b78b extu a5,s3,28,26 + 3bc0825a: 01d9d99b srliw s3,s3,0x1d + 3bc0825e: 00f48023 sb a5,0(s1) + 3bc08262: 01340023 sb s3,0(s0) + 3bc08266: 00044583 lbu a1,0(s0) + 3bc0826a: 00094683 lbu a3,0(s2) + 3bc0826e: 0004c603 lbu a2,0(s1) + 3bc08272: 00003517 auipc a0,0x3 + 3bc08276: fe650513 addi a0,a0,-26 # 3bc0b258 + 3bc0827a: 8def80ef jal ra,3bc00358 + 3bc0827e: 00094583 lbu a1,0(s2) + 3bc08282: 4725 li a4,9 + 3bc08284: fff5879b addiw a5,a1,-1 + 3bc08288: 0ff7f793 andi a5,a5,255 + 3bc0828c: 08f76963 bltu a4,a5,3bc0831e + 3bc08290: 00003717 auipc a4,0x3 + 3bc08294: 09470713 addi a4,a4,148 # 3bc0b324 + 3bc08298: 44f7478b lrw a5,a4,a5,2 + 3bc0829c: 0000b917 auipc s2,0xb + 3bc082a0: 17190913 addi s2,s2,369 # 3bc1340d + 3bc082a4: 97ba add a5,a5,a4 + 3bc082a6: 8782 jr a5 + 3bc082a8: 478d li a5,3 + 3bc082aa: 00f90023 sb a5,0(s2) + 3bc082ae: 4789 li a5,2 + 3bc082b0: 00f48023 sb a5,0(s1) + 3bc082b4: 4785 li a5,1 + 3bc082b6: bf95 j 3bc0822a + 3bc082b8: 4791 li a5,4 + 3bc082ba: 00f90023 sb a5,0(s2) + 3bc082be: 4785 li a5,1 + 3bc082c0: 00f48023 sb a5,0(s1) + 3bc082c4: b79d j 3bc0822a + 3bc082c6: 00003517 auipc a0,0x3 + 3bc082ca: f7250513 addi a0,a0,-142 # 3bc0b238 + 3bc082ce: 88af80ef jal ra,3bc00358 + 3bc082d2: bf51 j 3bc08266 + 3bc082d4: 00003517 auipc a0,0x3 + 3bc082d8: f9450513 addi a0,a0,-108 # 3bc0b268 + 3bc082dc: 87cf80ef jal ra,3bc00358 + 3bc082e0: 4785 li a5,1 + 3bc082e2: 00f90023 sb a5,0(s2) + 3bc082e6: 0004c583 lbu a1,0(s1) + 3bc082ea: 478d li a5,3 + 3bc082ec: 0cf58963 beq a1,a5,3bc083be + 3bc082f0: 04b7e263 bltu a5,a1,3bc08334 + 3bc082f4: 4485 li s1,1 + 3bc082f6: 04958a63 beq a1,s1,3bc0834a + 3bc082fa: 4789 li a5,2 + 3bc082fc: 0af58463 beq a1,a5,3bc083a4 + 3bc08300: 00003517 auipc a0,0x3 + 3bc08304: fb050513 addi a0,a0,-80 # 3bc0b2b0 + 3bc08308: 850f80ef jal ra,3bc00358 + 3bc0830c: a82d j 3bc08346 + 3bc0830e: 00003517 auipc a0,0x3 + 3bc08312: f6250513 addi a0,a0,-158 # 3bc0b270 + 3bc08316: 842f80ef jal ra,3bc00358 + 3bc0831a: 4789 li a5,2 + 3bc0831c: b7d9 j 3bc082e2 + 3bc0831e: 00003517 auipc a0,0x3 + 3bc08322: f5a50513 addi a0,a0,-166 # 3bc0b278 + 3bc08326: 832f80ef jal ra,3bc00358 + 3bc0832a: 0000b797 auipc a5,0xb + 3bc0832e: 0e0781a3 sb zero,227(a5) # 3bc1340d + 3bc08332: bf55 j 3bc082e6 + 3bc08334: 4791 li a5,4 + 3bc08336: 00003517 auipc a0,0x3 + 3bc0833a: f7250513 addi a0,a0,-142 # 3bc0b2a8 + 3bc0833e: fcf591e3 bne a1,a5,3bc08300 + 3bc08342: 816f80ef jal ra,3bc00358 + 3bc08346: 4781 li a5,0 + 3bc08348: a839 j 3bc08366 + 3bc0834a: 00003517 auipc a0,0x3 + 3bc0834e: f4650513 addi a0,a0,-186 # 3bc0b290 + 3bc08352: e42e sd a1,8(sp) + 3bc08354: 804f80ef jal ra,3bc00358 + 3bc08358: 00044783 lbu a5,0(s0) + 3bc0835c: 65a2 ld a1,8(sp) + 3bc0835e: 06b78563 beq a5,a1,3bc083c8 + 3bc08362: 67e1 lui a5,0x18 + 3bc08364: 07ad addi a5,a5,11 + 3bc08366: 03000737 lui a4,0x3000 + 3bc0836a: 08f72623 sw a5,140(a4) # 300008c <__BSS_SIZE__+0x2ffa47c> + 3bc0836e: 00044583 lbu a1,0(s0) + 3bc08372: 4789 li a5,2 + 3bc08374: 06f58c63 beq a1,a5,3bc083ec + 3bc08378: 478d li a5,3 + 3bc0837a: 04f58d63 beq a1,a5,3bc083d4 + 3bc0837e: 4785 li a5,1 + 3bc08380: 00003517 auipc a0,0x3 + 3bc08384: f4850513 addi a0,a0,-184 # 3bc0b2c8 + 3bc08388: 04f58a63 beq a1,a5,3bc083dc + 3bc0838c: 7442 ld s0,48(sp) + 3bc0838e: 70e2 ld ra,56(sp) + 3bc08390: 74a2 ld s1,40(sp) + 3bc08392: 7902 ld s2,32(sp) + 3bc08394: 69e2 ld s3,24(sp) + 3bc08396: 00003517 auipc a0,0x3 + 3bc0839a: f5a50513 addi a0,a0,-166 # 3bc0b2f0 + 3bc0839e: 6121 addi sp,sp,64 + 3bc083a0: fb9f706f j 3bc00358 + 3bc083a4: 00003517 auipc a0,0x3 + 3bc083a8: ef450513 addi a0,a0,-268 # 3bc0b298 + 3bc083ac: fadf70ef jal ra,3bc00358 + 3bc083b0: 00044783 lbu a5,0(s0) + 3bc083b4: 00978d63 beq a5,s1,3bc083ce + 3bc083b8: 67e1 lui a5,0x18 + 3bc083ba: 07ed addi a5,a5,27 + 3bc083bc: b76d j 3bc08366 + 3bc083be: 00003517 auipc a0,0x3 + 3bc083c2: ee250513 addi a0,a0,-286 # 3bc0b2a0 + 3bc083c6: bfb5 j 3bc08342 + 3bc083c8: 67e1 lui a5,0x18 + 3bc083ca: 07b1 addi a5,a5,12 + 3bc083cc: bf69 j 3bc08366 + 3bc083ce: 67e1 lui a5,0x18 + 3bc083d0: 07f1 addi a5,a5,28 + 3bc083d2: bf51 j 3bc08366 + 3bc083d4: 00003517 auipc a0,0x3 + 3bc083d8: f0450513 addi a0,a0,-252 # 3bc0b2d8 + 3bc083dc: 7442 ld s0,48(sp) + 3bc083de: 70e2 ld ra,56(sp) + 3bc083e0: 74a2 ld s1,40(sp) + 3bc083e2: 7902 ld s2,32(sp) + 3bc083e4: 69e2 ld s3,24(sp) + 3bc083e6: 6121 addi sp,sp,64 + 3bc083e8: f71f706f j 3bc00358 + 3bc083ec: 00003517 auipc a0,0x3 + 3bc083f0: efc50513 addi a0,a0,-260 # 3bc0b2e8 + 3bc083f4: b7e5 j 3bc083dc + +000000003bc083f6 : + 3bc083f6: 0000b517 auipc a0,0xb + 3bc083fa: 01854503 lbu a0,24(a0) # 3bc1340e + 3bc083fe: 8082 ret + +000000003bc08400 : + 3bc08400: 00030737 lui a4,0x30 + 3bc08404: 080087b7 lui a5,0x8008 + 3bc08408: 0705 addi a4,a4,1 + 3bc0840a: c398 sw a4,0(a5) + 3bc0840c: 08078693 addi a3,a5,128 # 8008080 + 3bc08410: c298 sw a4,0(a3) + 3bc08412: 10078693 addi a3,a5,256 + 3bc08416: c298 sw a4,0(a3) + 3bc08418: 18078693 addi a3,a5,384 + 3bc0841c: c298 sw a4,0(a3) + 3bc0841e: 20078693 addi a3,a5,512 + 3bc08422: c298 sw a4,0(a3) + 3bc08424: 28078693 addi a3,a5,640 + 3bc08428: c298 sw a4,0(a3) + 3bc0842a: 30078693 addi a3,a5,768 + 3bc0842e: c298 sw a4,0(a3) + 3bc08430: 38078693 addi a3,a5,896 + 3bc08434: c298 sw a4,0(a3) + 3bc08436: 40078693 addi a3,a5,1024 + 3bc0843a: c298 sw a4,0(a3) + 3bc0843c: 48078693 addi a3,a5,1152 + 3bc08440: c298 sw a4,0(a3) + 3bc08442: 50078693 addi a3,a5,1280 + 3bc08446: c298 sw a4,0(a3) + 3bc08448: 58078793 addi a5,a5,1408 + 3bc0844c: c398 sw a4,0(a5) + 3bc0844e: 8082 ret + +000000003bc08450 : + 3bc08450: 7179 addi sp,sp,-48 + 3bc08452: f406 sd ra,40(sp) + 3bc08454: 789000ef jal ra,3bc093dc + 3bc08458: 344010ef jal ra,3bc0979c + 3bc0845c: 0800a7b7 lui a5,0x800a + 3bc08460: 0207a023 sw zero,32(a5) # 800a020 + 3bc08464: 007797b7 lui a5,0x779 + 3bc08468: 03000737 lui a4,0x3000 + 3bc0846c: 8aa78793 addi a5,a5,-1878 # 7788aa <__BSS_SIZE__+0x772c9a> + 3bc08470: 1cf72c23 sw a5,472(a4) # 30001d8 <__BSS_SIZE__+0x2ffa5c8> + 3bc08474: 6789 lui a5,0x2 + 3bc08476: 29978793 addi a5,a5,665 # 2299 <__BSS_SIZE__-0x3977> + 3bc0847a: 1cf72e23 sw a5,476(a4) + 3bc0847e: 794010ef jal ra,3bc09c12 + 3bc08482: 1cb000ef jal ra,3bc08e4c + 3bc08486: 7db000ef jal ra,3bc09460 + 3bc0848a: 717000ef jal ra,3bc093a0 + 3bc0848e: 1df000ef jal ra,3bc08e6c + 3bc08492: 7c8000ef jal ra,3bc08c5a + 3bc08496: 0c3000ef jal ra,3bc08d58 + 3bc0849a: 101000ef jal ra,3bc08d9a + 3bc0849e: 049000ef jal ra,3bc08ce6 + 3bc084a2: 07f000ef jal ra,3bc08d20 + 3bc084a6: 121000ef jal ra,3bc08dc6 + 3bc084aa: 1ca000ef jal ra,3bc08674 + 3bc084ae: 0810 addi a2,sp,16 + 3bc084b0: 082c addi a1,sp,24 + 3bc084b2: 0068 addi a0,sp,12 + 3bc084b4: 4ae000ef jal ra,3bc08962 + 3bc084b8: 47b2 lw a5,12(sp) + 3bc084ba: e385 bnez a5,3bc084da + 3bc084bc: 00003517 auipc a0,0x3 + 3bc084c0: e9450513 addi a0,a0,-364 # 3bc0b350 + 3bc084c4: e95f70ef jal ra,3bc00358 + 3bc084c8: fac1468b ldd a3,a2,(sp),1,4 + 3bc084cc: 45b2 lw a1,12(sp) + 3bc084ce: 00003517 auipc a0,0x3 + 3bc084d2: e9a50513 addi a0,a0,-358 # 3bc0b368 + 3bc084d6: e83f70ef jal ra,3bc00358 + 3bc084da: 4ee010ef jal ra,3bc099c8 + 3bc084de: 16d000ef jal ra,3bc08e4a + 3bc084e2: 192000ef jal ra,3bc08674 + 3bc084e6: 0810 addi a2,sp,16 + 3bc084e8: 082c addi a1,sp,24 + 3bc084ea: 0068 addi a0,sp,12 + 3bc084ec: 476000ef jal ra,3bc08962 + 3bc084f0: 47b2 lw a5,12(sp) + 3bc084f2: e385 bnez a5,3bc08512 + 3bc084f4: 00003517 auipc a0,0x3 + 3bc084f8: e5c50513 addi a0,a0,-420 # 3bc0b350 + 3bc084fc: e5df70ef jal ra,3bc00358 + 3bc08500: fac1468b ldd a3,a2,(sp),1,4 + 3bc08504: 45b2 lw a1,12(sp) + 3bc08506: 00003517 auipc a0,0x3 + 3bc0850a: e6250513 addi a0,a0,-414 # 3bc0b368 + 3bc0850e: e4bf70ef jal ra,3bc00358 + 3bc08512: 2d7000ef jal ra,3bc08fe8 + 3bc08516: 15e000ef jal ra,3bc08674 + 3bc0851a: 0810 addi a2,sp,16 + 3bc0851c: 082c addi a1,sp,24 + 3bc0851e: 0068 addi a0,sp,12 + 3bc08520: 442000ef jal ra,3bc08962 + 3bc08524: 47b2 lw a5,12(sp) + 3bc08526: e385 bnez a5,3bc08546 + 3bc08528: 00003517 auipc a0,0x3 + 3bc0852c: e2850513 addi a0,a0,-472 # 3bc0b350 + 3bc08530: e29f70ef jal ra,3bc00358 + 3bc08534: fac1468b ldd a3,a2,(sp),1,4 + 3bc08538: 45b2 lw a1,12(sp) + 3bc0853a: 00003517 auipc a0,0x3 + 3bc0853e: e2e50513 addi a0,a0,-466 # 3bc0b368 + 3bc08542: e17f70ef jal ra,3bc00358 + 3bc08546: 4589 li a1,2 + 3bc08548: 4505 li a0,1 + 3bc0854a: 4d5000ef jal ra,3bc0921e + 3bc0854e: 4585 li a1,1 + 3bc08550: 4505 li a0,1 + 3bc08552: 4cd000ef jal ra,3bc0921e + 3bc08556: 4581 li a1,0 + 3bc08558: 4505 li a0,1 + 3bc0855a: 4c5000ef jal ra,3bc0921e + 3bc0855e: 116000ef jal ra,3bc08674 + 3bc08562: 0810 addi a2,sp,16 + 3bc08564: 082c addi a1,sp,24 + 3bc08566: 0068 addi a0,sp,12 + 3bc08568: 3fa000ef jal ra,3bc08962 + 3bc0856c: 08000737 lui a4,0x8000 + 3bc08570: 08c72783 lw a5,140(a4) # 800008c + 3bc08574: 4505 li a0,1 + 3bc08576: 2781 sext.w a5,a5 + 3bc08578: f0f7f793 andi a5,a5,-241 + 3bc0857c: 0107e793 ori a5,a5,16 + 3bc08580: 0000b697 auipc a3,0xb + 3bc08584: e6f6a823 sw a5,-400(a3) # 3bc133f0 + 3bc08588: 08f72623 sw a5,140(a4) + 3bc0858c: 323000ef jal ra,3bc090ae + 3bc08590: 0e4000ef jal ra,3bc08674 + 3bc08594: 0810 addi a2,sp,16 + 3bc08596: 082c addi a1,sp,24 + 3bc08598: 0068 addi a0,sp,12 + 3bc0859a: 3c8000ef jal ra,3bc08962 + 3bc0859e: 3fc010ef jal ra,3bc0999a + 3bc085a2: 00b10513 addi a0,sp,11 + 3bc085a6: 615000ef jal ra,3bc093ba + 3bc085aa: 00b14503 lbu a0,11(sp) + 3bc085ae: 448010ef jal ra,3bc099f6 + 3bc085b2: 00b14503 lbu a0,11(sp) + 3bc085b6: 1e4010ef jal ra,3bc0979a + 3bc085ba: 1bf000ef jal ra,3bc08f78 + 3bc085be: 0b6000ef jal ra,3bc08674 + 3bc085c2: 0810 addi a2,sp,16 + 3bc085c4: 082c addi a1,sp,24 + 3bc085c6: 0068 addi a0,sp,12 + 3bc085c8: 39a000ef jal ra,3bc08962 + 3bc085cc: 47b2 lw a5,12(sp) + 3bc085ce: eb81 bnez a5,3bc085de + 3bc085d0: 00003517 auipc a0,0x3 + 3bc085d4: dd850513 addi a0,a0,-552 # 3bc0b3a8 + 3bc085d8: d81f70ef jal ra,3bc00358 + 3bc085dc: a001 j 3bc085dc + 3bc085de: 0e4000ef jal ra,3bc086c2 + 3bc085e2: 0810 addi a2,sp,16 + 3bc085e4: 082c addi a1,sp,24 + 3bc085e6: 0068 addi a0,sp,12 + 3bc085e8: 37a000ef jal ra,3bc08962 + 3bc085ec: 47b2 lw a5,12(sp) + 3bc085ee: eb81 bnez a5,3bc085fe + 3bc085f0: 00003517 auipc a0,0x3 + 3bc085f4: db850513 addi a0,a0,-584 # 3bc0b3a8 + 3bc085f8: d61f70ef jal ra,3bc00358 + 3bc085fc: a001 j 3bc085fc + 3bc085fe: 00003517 auipc a0,0x3 + 3bc08602: dc250513 addi a0,a0,-574 # 3bc0b3c0 + 3bc08606: d53f70ef jal ra,3bc00358 + 3bc0860a: 080087b7 lui a5,0x8008 + 3bc0860e: 4595 li a1,5 + 3bc08610: cbac sw a1,80(a5) + 3bc08612: 08078613 addi a2,a5,128 # 8008080 + 3bc08616: 01000737 lui a4,0x1000 + 3bc0861a: ca2c sw a1,80(a2) + 3bc0861c: 10070713 addi a4,a4,256 # 1000100 <__BSS_SIZE__+0xffa4f0> + 3bc08620: c398 sw a4,0(a5) + 3bc08622: 43d4 lw a3,4(a5) + 3bc08624: 2681 sext.w a3,a3 + 3bc08626: c006f693 andi a3,a3,-1024 + 3bc0862a: c3d4 sw a3,4(a5) + 3bc0862c: c218 sw a4,0(a2) + 3bc0862e: 4254 lw a3,4(a2) + 3bc08630: 2681 sext.w a3,a3 + 3bc08632: c006f693 andi a3,a3,-1024 + 3bc08636: c254 sw a3,4(a2) + 3bc08638: 40078613 addi a2,a5,1024 + 3bc0863c: ca2c sw a1,80(a2) + 3bc0863e: 48078793 addi a5,a5,1152 + 3bc08642: cbac sw a1,80(a5) + 3bc08644: c218 sw a4,0(a2) + 3bc08646: 4254 lw a3,4(a2) + 3bc08648: 2681 sext.w a3,a3 + 3bc0864a: c006f693 andi a3,a3,-1024 + 3bc0864e: c254 sw a3,4(a2) + 3bc08650: c398 sw a4,0(a5) + 3bc08652: 43d8 lw a4,4(a5) + 3bc08654: 2701 sext.w a4,a4 + 3bc08656: c0077713 andi a4,a4,-1024 + 3bc0865a: c3d8 sw a4,4(a5) + 3bc0865c: 0800a737 lui a4,0x800a + 3bc08660: 4b5c lw a5,20(a4) + 3bc08662: 2781 sext.w a5,a5 + 3bc08664: 1007e793 ori a5,a5,256 + 3bc08668: cb5c sw a5,20(a4) + 3bc0866a: d97ff0ef jal ra,3bc08400 + 3bc0866e: 70a2 ld ra,40(sp) + 3bc08670: 6145 addi sp,sp,48 + 3bc08672: 8082 ret + +000000003bc08674 : + 3bc08674: 00060737 lui a4,0x60 + 3bc08678: 080107b7 lui a5,0x8010 + 3bc0867c: 0719 addi a4,a4,6 + 3bc0867e: c398 sw a4,0(a5) + 3bc08680: 80200737 lui a4,0x80200 + 3bc08684: 1101 addi sp,sp,-32 + 3bc08686: a0070713 addi a4,a4,-1536 # ffffffff801ffa00 <__BL2_END__+0xffffffff445ec5f0> + 3bc0868a: c63a sw a4,12(sp) + 3bc0868c: 40200737 lui a4,0x40200 + 3bc08690: e802 sd zero,16(sp) + 3bc08692: ec02 sd zero,24(sp) + 3bc08694: a0070713 addi a4,a4,-1536 # 401ffa00 <__BL2_END__+0x45ec5f0> + 3bc08698: c3b8 sw a4,64(a5) + 3bc0869a: 4732 lw a4,12(sp) + 3bc0869c: c3f8 sw a4,68(a5) + 3bc0869e: 4742 lw a4,16(sp) + 3bc086a0: c7b8 sw a4,72(a5) + 3bc086a2: 4752 lw a4,20(sp) + 3bc086a4: c7f8 sw a4,76(a5) + 3bc086a6: 4762 lw a4,24(sp) + 3bc086a8: cbb8 sw a4,80(a5) + 3bc086aa: 4772 lw a4,28(sp) + 3bc086ac: cbf8 sw a4,84(a5) + 3bc086ae: 00100737 lui a4,0x100 + 3bc086b2: 0007a823 sw zero,16(a5) # 8010010 + 3bc086b6: 177d addi a4,a4,-1 + 3bc086b8: cbd8 sw a4,20(a5) + 3bc086ba: 4711 li a4,4 + 3bc086bc: cf98 sw a4,24(a5) + 3bc086be: 6105 addi sp,sp,32 + 3bc086c0: 8082 ret + +000000003bc086c2 : + 3bc086c2: 000c0737 lui a4,0xc0 + 3bc086c6: 080107b7 lui a5,0x8010 + 3bc086ca: 0731 addi a4,a4,12 + 3bc086cc: c398 sw a4,0(a5) + 3bc086ce: 6705 lui a4,0x1 + 3bc086d0: f0570713 addi a4,a4,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc086d4: d3d8 sw a4,36(a5) + 3bc086d6: 80103737 lui a4,0x80103 + 3bc086da: 1101 addi sp,sp,-32 + 3bc086dc: c0f70713 addi a4,a4,-1009 # ffffffff80102c0f <__BL2_END__+0xffffffff444ef7ff> + 3bc086e0: c63a sw a4,12(sp) + 3bc086e2: c0000737 lui a4,0xc0000 + 3bc086e6: 0705 addi a4,a4,1 + 3bc086e8: 1702 slli a4,a4,0x20 + 3bc086ea: e83a sd a4,16(sp) + 3bc086ec: 40103737 lui a4,0x40103 + 3bc086f0: ec02 sd zero,24(sp) + 3bc086f2: c0f70713 addi a4,a4,-1009 # 40102c0f <__BL2_END__+0x44ef7ff> + 3bc086f6: c3b8 sw a4,64(a5) + 3bc086f8: 4732 lw a4,12(sp) + 3bc086fa: c3f8 sw a4,68(a5) + 3bc086fc: 4742 lw a4,16(sp) + 3bc086fe: c7b8 sw a4,72(a5) + 3bc08700: 4752 lw a4,20(sp) + 3bc08702: c7f8 sw a4,76(a5) + 3bc08704: 4762 lw a4,24(sp) + 3bc08706: cbb8 sw a4,80(a5) + 3bc08708: 4772 lw a4,28(sp) + 3bc0870a: cbf8 sw a4,84(a5) + 3bc0870c: 00100737 lui a4,0x100 + 3bc08710: 0007a823 sw zero,16(a5) # 8010010 + 3bc08714: 177d addi a4,a4,-1 + 3bc08716: cbd8 sw a4,20(a5) + 3bc08718: 02000713 li a4,32 + 3bc0871c: cf98 sw a4,24(a5) + 3bc0871e: 6105 addi sp,sp,32 + 3bc08720: 8082 ret + +000000003bc08722 : + 3bc08722: 00060737 lui a4,0x60 + 3bc08726: 080107b7 lui a5,0x8010 + 3bc0872a: 0719 addi a4,a4,6 + 3bc0872c: c398 sw a4,0(a5) + 3bc0872e: 1101 addi sp,sp,-32 + 3bc08730: 80004737 lui a4,0x80004 + 3bc08734: e802 sd zero,16(sp) + 3bc08736: ec02 sd zero,24(sp) + 3bc08738: c602 sw zero,12(sp) + 3bc0873a: a0070713 addi a4,a4,-1536 # ffffffff80003a00 <__BL2_END__+0xffffffff443f05f0> + 3bc0873e: c3b8 sw a4,64(a5) + 3bc08740: 4732 lw a4,12(sp) + 3bc08742: c3f8 sw a4,68(a5) + 3bc08744: 4742 lw a4,16(sp) + 3bc08746: c7b8 sw a4,72(a5) + 3bc08748: 4752 lw a4,20(sp) + 3bc0874a: c7f8 sw a4,76(a5) + 3bc0874c: 4762 lw a4,24(sp) + 3bc0874e: cbb8 sw a4,80(a5) + 3bc08750: 4772 lw a4,28(sp) + 3bc08752: cbf8 sw a4,84(a5) + 3bc08754: 00100737 lui a4,0x100 + 3bc08758: 0007a823 sw zero,16(a5) # 8010010 + 3bc0875c: 177d addi a4,a4,-1 + 3bc0875e: cbd8 sw a4,20(a5) + 3bc08760: 4711 li a4,4 + 3bc08762: cf98 sw a4,24(a5) + 3bc08764: 6105 addi sp,sp,32 + 3bc08766: 8082 ret + +000000003bc08768 : + 3bc08768: 000607b7 lui a5,0x60 + 3bc0876c: 08010737 lui a4,0x8010 + 3bc08770: 0799 addi a5,a5,6 + 3bc08772: c31c sw a5,0(a4) + 3bc08774: 1101 addi sp,sp,-32 + 3bc08776: e519 bnez a0,3bc08784 + 3bc08778: 200017b7 lui a5,0x20001 + 3bc0877c: 078a slli a5,a5,0x2 + 3bc0877e: a0078793 addi a5,a5,-1536 # 20000a00 + 3bc08782: a0ad j 3bc087ec + 3bc08784: 4785 li a5,1 + 3bc08786: 04f51c63 bne a0,a5,3bc087de + 3bc0878a: 6785 lui a5,0x1 + 3bc0878c: f0578793 addi a5,a5,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc08790: d35c sw a5,36(a4) + 3bc08792: 00003797 auipc a5,0x3 + 3bc08796: c467b783 ld a5,-954(a5) # 3bc0b3d8 + 3bc0879a: e43e sd a5,8(sp) + 3bc0879c: 00003797 auipc a5,0x3 + 3bc087a0: c447b783 ld a5,-956(a5) # 3bc0b3e0 + 3bc087a4: e83e sd a5,16(sp) + 3bc087a6: 478d li a5,3 + 3bc087a8: 07fa slli a5,a5,0x1e + 3bc087aa: 0785 addi a5,a5,1 + 3bc087ac: ec3e sd a5,24(sp) + 3bc087ae: 4722 lw a4,8(sp) + 3bc087b0: 080107b7 lui a5,0x8010 + 3bc087b4: c3b8 sw a4,64(a5) + 3bc087b6: 4732 lw a4,12(sp) + 3bc087b8: c3f8 sw a4,68(a5) + 3bc087ba: 4742 lw a4,16(sp) + 3bc087bc: c7b8 sw a4,72(a5) + 3bc087be: 4752 lw a4,20(sp) + 3bc087c0: c7f8 sw a4,76(a5) + 3bc087c2: 4762 lw a4,24(sp) + 3bc087c4: cbb8 sw a4,80(a5) + 3bc087c6: 4772 lw a4,28(sp) + 3bc087c8: cbf8 sw a4,84(a5) + 3bc087ca: 00100737 lui a4,0x100 + 3bc087ce: 0007a823 sw zero,16(a5) # 8010010 + 3bc087d2: 177d addi a4,a4,-1 + 3bc087d4: cbd8 sw a4,20(a5) + 3bc087d6: 4711 li a4,4 + 3bc087d8: cf98 sw a4,24(a5) + 3bc087da: 6105 addi sp,sp,32 + 3bc087dc: 8082 ret + 3bc087de: 4789 li a5,2 + 3bc087e0: 00f51a63 bne a0,a5,3bc087f4 + 3bc087e4: 00003797 auipc a5,0x3 + 3bc087e8: c047b783 ld a5,-1020(a5) # 3bc0b3e8 + 3bc087ec: e43e sd a5,8(sp) + 3bc087ee: e802 sd zero,16(sp) + 3bc087f0: ec02 sd zero,24(sp) + 3bc087f2: bf75 j 3bc087ae + 3bc087f4: 47c9 li a5,18 + 3bc087f6: 02f51563 bne a0,a5,3bc08820 + 3bc087fa: 080006b7 lui a3,0x8000 + 3bc087fe: 0846a783 lw a5,132(a3) # 8000084 + 3bc08802: 6709 lui a4,0x2 + 3bc08804: f0070713 addi a4,a4,-256 # 1f00 <__BSS_SIZE__-0x3d10> + 3bc08808: 2781 sext.w a5,a5 + 3bc0880a: 9b81 andi a5,a5,-32 + 3bc0880c: 01d7e793 ori a5,a5,29 + 3bc08810: 8fd9 or a5,a5,a4 + 3bc08812: 0000b717 auipc a4,0xb + 3bc08816: bcf72f23 sw a5,-1058(a4) # 3bc133f0 + 3bc0881a: 08f6a223 sw a5,132(a3) + 3bc0881e: b7d9 j 3bc087e4 + 3bc08820: 47c1 li a5,16 + 3bc08822: f8f516e3 bne a0,a5,3bc087ae + 3bc08826: 08000637 lui a2,0x8000 + 3bc0882a: 08462783 lw a5,132(a2) # 8000084 + 3bc0882e: 6689 lui a3,0x2 + 3bc08830: f0068693 addi a3,a3,-256 # 1f00 <__BSS_SIZE__-0x3d10> + 3bc08834: 2781 sext.w a5,a5 + 3bc08836: 9b81 andi a5,a5,-32 + 3bc08838: 0017e793 ori a5,a5,1 + 3bc0883c: 3007c713 xori a4,a5,768 + 3bc08840: 8f75 and a4,a4,a3 + 3bc08842: 8fb9 xor a5,a5,a4 + 3bc08844: 0000b717 auipc a4,0xb + 3bc08848: baf72623 sw a5,-1108(a4) # 3bc133f0 + 3bc0884c: 08f62223 sw a5,132(a2) + 3bc08850: b725 j 3bc08778 + +000000003bc08852 : + 3bc08852: 000607b7 lui a5,0x60 + 3bc08856: 08010737 lui a4,0x8010 + 3bc0885a: 0799 addi a5,a5,6 + 3bc0885c: c31c sw a5,0(a4) + 3bc0885e: 1101 addi sp,sp,-32 + 3bc08860: e909 bnez a0,3bc08872 + 3bc08862: 00003797 auipc a5,0x3 + 3bc08866: b8e7b783 ld a5,-1138(a5) # 3bc0b3f0 + 3bc0886a: e43e sd a5,8(sp) + 3bc0886c: e802 sd zero,16(sp) + 3bc0886e: ec02 sd zero,24(sp) + 3bc08870: a035 j 3bc0889c + 3bc08872: 4785 li a5,1 + 3bc08874: 04f51c63 bne a0,a5,3bc088cc + 3bc08878: 6785 lui a5,0x1 + 3bc0887a: f0578793 addi a5,a5,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc0887e: d35c sw a5,36(a4) + 3bc08880: 00003797 auipc a5,0x3 + 3bc08884: b587b783 ld a5,-1192(a5) # 3bc0b3d8 + 3bc08888: e43e sd a5,8(sp) + 3bc0888a: 00003797 auipc a5,0x3 + 3bc0888e: b567b783 ld a5,-1194(a5) # 3bc0b3e0 + 3bc08892: e83e sd a5,16(sp) + 3bc08894: 478d li a5,3 + 3bc08896: 07fa slli a5,a5,0x1e + 3bc08898: 0785 addi a5,a5,1 + 3bc0889a: ec3e sd a5,24(sp) + 3bc0889c: 4722 lw a4,8(sp) + 3bc0889e: 080107b7 lui a5,0x8010 + 3bc088a2: c3b8 sw a4,64(a5) + 3bc088a4: 4732 lw a4,12(sp) + 3bc088a6: c3f8 sw a4,68(a5) + 3bc088a8: 4742 lw a4,16(sp) + 3bc088aa: c7b8 sw a4,72(a5) + 3bc088ac: 4752 lw a4,20(sp) + 3bc088ae: c7f8 sw a4,76(a5) + 3bc088b0: 4762 lw a4,24(sp) + 3bc088b2: cbb8 sw a4,80(a5) + 3bc088b4: 4772 lw a4,28(sp) + 3bc088b6: cbf8 sw a4,84(a5) + 3bc088b8: 00100737 lui a4,0x100 + 3bc088bc: 0007a823 sw zero,16(a5) # 8010010 + 3bc088c0: 177d addi a4,a4,-1 + 3bc088c2: cbd8 sw a4,20(a5) + 3bc088c4: 4711 li a4,4 + 3bc088c6: cf98 sw a4,24(a5) + 3bc088c8: 6105 addi sp,sp,32 + 3bc088ca: 8082 ret + 3bc088cc: 47c5 li a5,17 + 3bc088ce: 00003717 auipc a4,0x3 + 3bc088d2: b2270713 addi a4,a4,-1246 # 3bc0b3f0 + 3bc088d6: 00f51f63 bne a0,a5,3bc088f4 + 3bc088da: 67c1 lui a5,0x10 + 3bc088dc: 30178793 addi a5,a5,769 # 10301 <__BSS_SIZE__+0xa6f1> + 3bc088e0: 0000b697 auipc a3,0xb + 3bc088e4: b0f6a823 sw a5,-1264(a3) # 3bc133f0 + 3bc088e8: 080006b7 lui a3,0x8000 + 3bc088ec: 18f6a823 sw a5,400(a3) # 8000190 + 3bc088f0: 631c ld a5,0(a4) + 3bc088f2: bfa5 j 3bc0886a + 3bc088f4: 47c9 li a5,18 + 3bc088f6: f6f516e3 bne a0,a5,3bc08862 + 3bc088fa: 67c9 lui a5,0x12 + 3bc088fc: f1d78793 addi a5,a5,-227 # 11f1d <__BSS_SIZE__+0xc30d> + 3bc08900: b7c5 j 3bc088e0 + +000000003bc08902 : + 3bc08902: 00060737 lui a4,0x60 + 3bc08906: 080107b7 lui a5,0x8010 + 3bc0890a: 0719 addi a4,a4,6 + 3bc0890c: c398 sw a4,0(a5) + 3bc0890e: 6705 lui a4,0x1 + 3bc08910: f0570713 addi a4,a4,-251 # f05 <__BSS_SIZE__-0x4d0b> + 3bc08914: d3d8 sw a4,36(a5) + 3bc08916: 40103737 lui a4,0x40103 + 3bc0891a: 1101 addi sp,sp,-32 + 3bc0891c: e0070713 addi a4,a4,-512 # 40102e00 <__BL2_END__+0x44ef9f0> + 3bc08920: c63a sw a4,12(sp) + 3bc08922: 00401737 lui a4,0x401 + 3bc08926: 81770713 addi a4,a4,-2025 # 400817 <__BSS_SIZE__+0x3fac07> + 3bc0892a: 0726 slli a4,a4,0x9 + 3bc0892c: e83a sd a4,16(sp) + 3bc0892e: 40102737 lui a4,0x40102 + 3bc08932: ec02 sd zero,24(sp) + 3bc08934: 60070713 addi a4,a4,1536 # 40102600 <__BL2_END__+0x44ef1f0> + 3bc08938: c3b8 sw a4,64(a5) + 3bc0893a: 4732 lw a4,12(sp) + 3bc0893c: c3f8 sw a4,68(a5) + 3bc0893e: 4742 lw a4,16(sp) + 3bc08940: c7b8 sw a4,72(a5) + 3bc08942: 4752 lw a4,20(sp) + 3bc08944: c7f8 sw a4,76(a5) + 3bc08946: 4762 lw a4,24(sp) + 3bc08948: cbb8 sw a4,80(a5) + 3bc0894a: 4772 lw a4,28(sp) + 3bc0894c: cbf8 sw a4,84(a5) + 3bc0894e: 00100737 lui a4,0x100 + 3bc08952: 0007a823 sw zero,16(a5) # 8010010 + 3bc08956: 177d addi a4,a4,-1 + 3bc08958: cbd8 sw a4,20(a5) + 3bc0895a: 4711 li a4,4 + 3bc0895c: cf98 sw a4,24(a5) + 3bc0895e: 6105 addi sp,sp,32 + 3bc08960: 8082 ret + +000000003bc08962 : + 3bc08962: 000307b7 lui a5,0x30 + 3bc08966: 08010737 lui a4,0x8010 + 3bc0896a: 078d addi a5,a5,3 + 3bc0896c: c31c sw a5,0(a4) + 3bc0896e: 0000b897 auipc a7,0xb + 3bc08972: a8288893 addi a7,a7,-1406 # 3bc133f0 + 3bc08976: 08072783 lw a5,128(a4) # 8010080 + 3bc0897a: 08070693 addi a3,a4,128 + 3bc0897e: 2781 sext.w a5,a5 + 3bc08980: 00f8a023 sw a5,0(a7) + 3bc08984: 0047f813 andi a6,a5,4 + 3bc08988: fe0807e3 beqz a6,3bc08976 + 3bc0898c: 0c37b78b extu a5,a5,3,3 + 3bc08990: c79d beqz a5,3bc089be + 3bc08992: 00052023 sw zero,0(a0) + 3bc08996: e2e6c80b lwd a6,a4,(a3),1,3 + 3bc0899a: e4f6c50b lwd a0,a5,(a3),2,3 + 3bc0899e: 1702 slli a4,a4,0x20 + 3bc089a0: 7c08368b extu a3,a6,31,0 + 3bc089a4: 8f55 or a4,a4,a3 + 3bc089a6: 1782 slli a5,a5,0x20 + 3bc089a8: 7c05350b extu a0,a0,31,0 + 3bc089ac: e198 sd a4,0(a1) + 3bc089ae: 8fc9 or a5,a5,a0 + 3bc089b0: e21c sd a5,0(a2) + 3bc089b2: 080107b7 lui a5,0x8010 + 3bc089b6: 00050737 lui a4,0x50 + 3bc089ba: c398 sw a4,0(a5) + 3bc089bc: 8082 ret + 3bc089be: 4785 li a5,1 + 3bc089c0: c11c sw a5,0(a0) + 3bc089c2: 0005b023 sd zero,0(a1) + 3bc089c6: 00063023 sd zero,0(a2) + 3bc089ca: b7e5 j 3bc089b2 + +000000003bc089cc : + 3bc089cc: 7159 addi sp,sp,-112 + 3bc089ce: f0a2 sd s0,96(sp) + 3bc089d0: eca6 sd s1,88(sp) + 3bc089d2: e8ca sd s2,80(sp) + 3bc089d4: e4ce sd s3,72(sp) + 3bc089d6: e0d2 sd s4,64(sp) + 3bc089d8: fc56 sd s5,56(sp) + 3bc089da: f486 sd ra,104(sp) + 3bc089dc: f85a sd s6,48(sp) + 3bc089de: f45e sd s7,40(sp) + 3bc089e0: f062 sd s8,32(sp) + 3bc089e2: c93ff0ef jal ra,3bc08674 + 3bc089e6: 080017b7 lui a5,0x8001 + 3bc089ea: b147a403 lw s0,-1260(a5) # 8000b14 + 3bc089ee: b447a783 lw a5,-1212(a5) + 3bc089f2: 4925 li s2,9 + 3bc089f4: 080007b7 lui a5,0x8000 + 3bc089f8: 0947a483 lw s1,148(a5) # 8000094 + 3bc089fc: 2401 sext.w s0,s0 + 3bc089fe: 001f0a37 lui s4,0x1f0 + 3bc08a02: 2481 sext.w s1,s1 + 3bc08a04: 080019b7 lui s3,0x8001 + 3bc08a08: 4a85 li s5,1 + 3bc08a0a: 0109171b slliw a4,s2,0x10 + 3bc08a0e: 8f21 xor a4,a4,s0 + 3bc08a10: 01477733 and a4,a4,s4 + 3bc08a14: 8c39 xor s0,s0,a4 + 3bc08a16: 2401 sext.w s0,s0 + 3bc08a18: b089aa23 sw s0,-1260(s3) # 8000b14 + 3bc08a1c: b489a223 sw s0,-1212(s3) + 3bc08a20: 0830 addi a2,sp,24 + 3bc08a22: 080c addi a1,sp,16 + 3bc08a24: 0068 addi a0,sp,12 + 3bc08a26: f3dff0ef jal ra,3bc08962 + 3bc08a2a: 47b2 lw a5,12(sp) + 3bc08a2c: 00090c1b sext.w s8,s2 + 3bc08a30: ef8d bnez a5,3bc08a6a + 3bc08a32: 00f4f793 andi a5,s1,15 + 3bc08a36: 2785 addiw a5,a5,1 + 3bc08a38: 018787bb addw a5,a5,s8 + 3bc08a3c: 0107979b slliw a5,a5,0x10 + 3bc08a40: 8fa1 xor a5,a5,s0 + 3bc08a42: 0147f7b3 and a5,a5,s4 + 3bc08a46: 8c3d xor s0,s0,a5 + 3bc08a48: 2401 sext.w s0,s0 + 3bc08a4a: b089aa23 sw s0,-1260(s3) + 3bc08a4e: b489a223 sw s0,-1212(s3) + 3bc08a52: 70a6 ld ra,104(sp) + 3bc08a54: 7406 ld s0,96(sp) + 3bc08a56: 64e6 ld s1,88(sp) + 3bc08a58: 6946 ld s2,80(sp) + 3bc08a5a: 69a6 ld s3,72(sp) + 3bc08a5c: 6a06 ld s4,64(sp) + 3bc08a5e: 7ae2 ld s5,56(sp) + 3bc08a60: 7b42 ld s6,48(sp) + 3bc08a62: 7ba2 ld s7,40(sp) + 3bc08a64: 7c02 ld s8,32(sp) + 3bc08a66: 6165 addi sp,sp,112 + 3bc08a68: 8082 ret + 3bc08a6a: 397d addiw s2,s2,-1 + 3bc08a6c: f9591fe3 bne s2,s5,3bc08a0a + 3bc08a70: b7cd j 3bc08a52 + +000000003bc08a72 : + 3bc08a72: 080067b7 lui a5,0x8006 + 3bc08a76: 47fc lw a5,76(a5) + 3bc08a78: 0000b717 auipc a4,0xb + 3bc08a7c: 97870713 addi a4,a4,-1672 # 3bc133f0 + 3bc08a80: 2781 sext.w a5,a5 + 3bc08a82: c31c sw a5,0(a4) + 3bc08a84: 1447b78b extu a5,a5,5,4 + 3bc08a88: cf9d beqz a5,3bc08ac6 + 3bc08a8a: 080006b7 lui a3,0x8000 + 3bc08a8e: 42bc lw a5,64(a3) + 3bc08a90: 7601 lui a2,0xfffe0 + 3bc08a92: 1675 addi a2,a2,-3 + 3bc08a94: 2781 sext.w a5,a5 + 3bc08a96: 8ff1 and a5,a5,a2 + 3bc08a98: c31c sw a5,0(a4) + 3bc08a9a: c2bc sw a5,64(a3) + 3bc08a9c: 42bc lw a5,64(a3) + 3bc08a9e: 00020637 lui a2,0x20 + 3bc08aa2: 0609 addi a2,a2,2 + 3bc08aa4: 2781 sext.w a5,a5 + 3bc08aa6: 8fd1 or a5,a5,a2 + 3bc08aa8: c2bc sw a5,64(a3) + 3bc08aaa: 0000b797 auipc a5,0xb + 3bc08aae: 9407a323 sw zero,-1722(a5) # 3bc133f0 + 3bc08ab2: 08003637 lui a2,0x8003 + 3bc08ab6: 66c1 lui a3,0x10 + 3bc08ab8: 4a5c lw a5,20(a2) + 3bc08aba: 2781 sext.w a5,a5 + 3bc08abc: c31c sw a5,0(a4) + 3bc08abe: 8ff5 and a5,a5,a3 + 3bc08ac0: 2781 sext.w a5,a5 + 3bc08ac2: dbfd beqz a5,3bc08ab8 + 3bc08ac4: 8082 ret + 3bc08ac6: 08000637 lui a2,0x8000 + 3bc08aca: 423c lw a5,64(a2) + 3bc08acc: 7681 lui a3,0xfffe0 + 3bc08ace: 16f5 addi a3,a3,-3 + 3bc08ad0: 2781 sext.w a5,a5 + 3bc08ad2: 8ff5 and a5,a5,a3 + 3bc08ad4: c31c sw a5,0(a4) + 3bc08ad6: c23c sw a5,64(a2) + 3bc08ad8: 8082 ret + +000000003bc08ada : + 3bc08ada: 080066b7 lui a3,0x8006 + 3bc08ade: 46dc lw a5,12(a3) + 3bc08ae0: 7769 lui a4,0xffffa + 3bc08ae2: 177d addi a4,a4,-1 + 3bc08ae4: 2781 sext.w a5,a5 + 3bc08ae6: 8ff9 and a5,a5,a4 + 3bc08ae8: 03003737 lui a4,0x3003 + 3bc08aec: c6dc sw a5,12(a3) + 3bc08aee: 90070713 addi a4,a4,-1792 # 3002900 <__BSS_SIZE__+0x2ffccf0> + 3bc08af2: 0000b797 auipc a5,0xb + 3bc08af6: 8d67a783 lw a5,-1834(a5) # 3bc133c8 + 3bc08afa: cb7c sw a5,84(a4) + 3bc08afc: 0000b797 auipc a5,0xb + 3bc08b00: 8d47d783 lhu a5,-1836(a5) # 3bc133d0 + 3bc08b04: cf3c sw a5,88(a4) + 3bc08b06: 0000b797 auipc a5,0xb + 3bc08b0a: 8d27b783 ld a5,-1838(a5) # 3bc133d8 + 3bc08b0e: 5c07b78b extu a5,a5,23,0 + 3bc08b12: 2781 sext.w a5,a5 + 3bc08b14: 0000b697 auipc a3,0xb + 3bc08b18: 8dc68693 addi a3,a3,-1828 # 3bc133f0 + 3bc08b1c: c29c sw a5,0(a3) + 3bc08b1e: cf7c sw a5,92(a4) + 3bc08b20: 4b3c lw a5,80(a4) + 3bc08b22: 2781 sext.w a5,a5 + 3bc08b24: 0017c793 xori a5,a5,1 + 3bc08b28: fa17f793 andi a5,a5,-95 + 3bc08b2c: 0207e793 ori a5,a5,32 + 3bc08b30: c29c sw a5,0(a3) + 3bc08b32: cb3c sw a5,80(a4) + 3bc08b34: 8082 ret + +000000003bc08b36 : + 3bc08b36: 08006737 lui a4,0x8006 + 3bc08b3a: 475c lw a5,12(a4) + 3bc08b3c: 6691 lui a3,0x4 + 3bc08b3e: 8fd5 or a5,a5,a3 + 3bc08b40: 0000b697 auipc a3,0xb + 3bc08b44: 8af6a823 sw a5,-1872(a3) # 3bc133f0 + 3bc08b48: c75c sw a5,12(a4) + 3bc08b4a: 8082 ret + +000000003bc08b4c : + 3bc08b4c: 08006737 lui a4,0x8006 + 3bc08b50: 475c lw a5,12(a4) + 3bc08b52: 6689 lui a3,0x2 + 3bc08b54: 8fd5 or a5,a5,a3 + 3bc08b56: 0000b697 auipc a3,0xb + 3bc08b5a: 88f6ad23 sw a5,-1894(a3) # 3bc133f0 + 3bc08b5e: c75c sw a5,12(a4) + 3bc08b60: 8082 ret + +000000003bc08b62 : + 3bc08b62: 1101 addi sp,sp,-32 + 3bc08b64: 0000b797 auipc a5,0xb + 3bc08b68: 8807a623 sw zero,-1908(a5) # 3bc133f0 + 3bc08b6c: 080066b7 lui a3,0x8006 + 3bc08b70: e822 sd s0,16(sp) + 3bc08b72: ec06 sd ra,24(sp) + 3bc08b74: e426 sd s1,8(sp) + 3bc08b76: e04a sd s2,0(sp) + 3bc08b78: 0006a223 sw zero,4(a3) # 8006004 + 3bc08b7c: 0006a423 sw zero,8(a3) + 3bc08b80: 46dc lw a5,12(a3) + 3bc08b82: 0000b417 auipc s0,0xb + 3bc08b86: 86e40413 addi s0,s0,-1938 # 3bc133f0 + 3bc08b8a: 2781 sext.w a5,a5 + 3bc08b8c: f7f7f793 andi a5,a5,-129 + 3bc08b90: c01c sw a5,0(s0) + 3bc08b92: c6dc sw a5,12(a3) + 3bc08b94: 46fc lw a5,76(a3) + 3bc08b96: c01c sw a5,0(s0) + 3bc08b98: 46fc lw a5,76(a3) + 3bc08b9a: c01c sw a5,0(s0) + 3bc08b9c: 46fc lw a5,76(a3) + 3bc08b9e: c01c sw a5,0(s0) + 3bc08ba0: 46fc lw a5,76(a3) + 3bc08ba2: c01c sw a5,0(s0) + 3bc08ba4: 46fc lw a5,76(a3) + 3bc08ba6: c01c sw a5,0(s0) + 3bc08ba8: 46f8 lw a4,76(a3) + 3bc08baa: 0007079b sext.w a5,a4 + 3bc08bae: 8b05 andi a4,a4,1 + 3bc08bb0: c315 beqz a4,3bc08bd4 + 3bc08bb2: 2487b60b extu a2,a5,9,8 + 3bc08bb6: 1447b70b extu a4,a5,5,4 + 3bc08bba: e629 bnez a2,3bc08c04 + 3bc08bbc: fcf7f793 andi a5,a5,-49 + 3bc08bc0: 0087171b slliw a4,a4,0x8 + 3bc08bc4: 8f3d xor a4,a4,a5 + 3bc08bc6: 30077713 andi a4,a4,768 + 3bc08bca: 8fb9 xor a5,a5,a4 + 3bc08bcc: c01c sw a5,0(s0) + 3bc08bce: c6fc sw a5,76(a3) + 3bc08bd0: f7dff0ef jal ra,3bc08b4c + 3bc08bd4: 4685 li a3,1 + 3bc08bd6: c014 sw a3,0(s0) + 3bc08bd8: 08006737 lui a4,0x8006 + 3bc08bdc: c354 sw a3,4(a4) + 3bc08bde: 475c lw a5,12(a4) + 3bc08be0: 64a1 lui s1,0x8 + 3bc08be2: 08006937 lui s2,0x8006 + 3bc08be6: 2781 sext.w a5,a5 + 3bc08be8: 0807e793 ori a5,a5,128 + 3bc08bec: c75c sw a5,12(a4) + 3bc08bee: c014 sw a3,0(s0) + 3bc08bf0: c714 sw a3,8(a4) + 3bc08bf2: 401c lw a5,0(s0) + 3bc08bf4: 8fe5 and a5,a5,s1 + 3bc08bf6: cbb9 beqz a5,3bc08c4c + 3bc08bf8: 60e2 ld ra,24(sp) + 3bc08bfa: 6442 ld s0,16(sp) + 3bc08bfc: 64a2 ld s1,8(sp) + 3bc08bfe: 6902 ld s2,0(sp) + 3bc08c00: 6105 addi sp,sp,32 + 3bc08c02: 8082 ret + 3bc08c04: 4589 li a1,2 + 3bc08c06: 02b61163 bne a2,a1,3bc08c28 + 3bc08c0a: fcf7f793 andi a5,a5,-49 + 3bc08c0e: 0207e793 ori a5,a5,32 + 3bc08c12: 0087171b slliw a4,a4,0x8 + 3bc08c16: 8f3d xor a4,a4,a5 + 3bc08c18: 30077713 andi a4,a4,768 + 3bc08c1c: 8fb9 xor a5,a5,a4 + 3bc08c1e: c01c sw a5,0(s0) + 3bc08c20: c6fc sw a5,76(a3) + 3bc08c22: eb9ff0ef jal ra,3bc08ada + 3bc08c26: b77d j 3bc08bd4 + 3bc08c28: 4585 li a1,1 + 3bc08c2a: fab615e3 bne a2,a1,3bc08bd4 + 3bc08c2e: fcf7f793 andi a5,a5,-49 + 3bc08c32: 0107e793 ori a5,a5,16 + 3bc08c36: 0087171b slliw a4,a4,0x8 + 3bc08c3a: 8f3d xor a4,a4,a5 + 3bc08c3c: 30077713 andi a4,a4,768 + 3bc08c40: 8fb9 xor a5,a5,a4 + 3bc08c42: c01c sw a5,0(s0) + 3bc08c44: c6fc sw a5,76(a3) + 3bc08c46: ef1ff0ef jal ra,3bc08b36 + 3bc08c4a: b769 j 3bc08bd4 + 3bc08c4c: 01092783 lw a5,16(s2) # 8006010 + 3bc08c50: 4501 li a0,0 + 3bc08c52: c01c sw a5,0(s0) + 3bc08c54: d36f70ef jal ra,3bc0018a + 3bc08c58: bf69 j 3bc08bf2 + +000000003bc08c5a : + 3bc08c5a: 080067b7 lui a5,0x8006 + 3bc08c5e: 43b4 lw a3,64(a5) + 3bc08c60: bf000737 lui a4,0xbf000 + 3bc08c64: 377d addiw a4,a4,-1 + 3bc08c66: 8f75 and a4,a4,a3 + 3bc08c68: 0000a697 auipc a3,0xa + 3bc08c6c: 78868693 addi a3,a3,1928 # 3bc133f0 + 3bc08c70: c298 sw a4,0(a3) + 3bc08c72: c3b8 sw a4,64(a5) + 3bc08c74: 43b8 lw a4,64(a5) + 3bc08c76: 0006a023 sw zero,0(a3) + 3bc08c7a: 0407a023 sw zero,64(a5) # 8006040 + 3bc08c7e: 4fd8 lw a4,28(a5) + 3bc08c80: 2701 sext.w a4,a4 + 3bc08c82: 08076713 ori a4,a4,128 + 3bc08c86: cfd8 sw a4,28(a5) + 3bc08c88: 0006a023 sw zero,0(a3) + 3bc08c8c: 0007a023 sw zero,0(a5) + 3bc08c90: 4fd8 lw a4,28(a5) + 3bc08c92: 2701 sext.w a4,a4 + 3bc08c94: f7f77713 andi a4,a4,-129 + 3bc08c98: c298 sw a4,0(a3) + 3bc08c9a: cfd8 sw a4,28(a5) + 3bc08c9c: 8082 ret + +000000003bc08c9e : + 3bc08c9e: 1141 addi sp,sp,-16 + 3bc08ca0: e406 sd ra,8(sp) + 3bc08ca2: e022 sd s0,0(sp) + 3bc08ca4: ebfff0ef jal ra,3bc08b62 + 3bc08ca8: 08000737 lui a4,0x8000 + 3bc08cac: 15472783 lw a5,340(a4) # 8000154 + 3bc08cb0: 0000a417 auipc s0,0xa + 3bc08cb4: 74040413 addi s0,s0,1856 # 3bc133f0 + 3bc08cb8: 2781 sext.w a5,a5 + 3bc08cba: 9bf9 andi a5,a5,-2 + 3bc08cbc: 14f72a23 sw a5,340(a4) + 3bc08cc0: 00042023 sw zero,0(s0) + 3bc08cc4: 12072823 sw zero,304(a4) + 3bc08cc8: dabff0ef jal ra,3bc08a72 + 3bc08ccc: 080067b7 lui a5,0x8006 + 3bc08cd0: 80000737 lui a4,0x80000 + 3bc08cd4: c3b8 sw a4,64(a5) + 3bc08cd6: 00042023 sw zero,0(s0) + 3bc08cda: 60a2 ld ra,8(sp) + 3bc08cdc: 6402 ld s0,0(sp) + 3bc08cde: 0007a023 sw zero,0(a5) # 8006000 + 3bc08ce2: 0141 addi sp,sp,16 + 3bc08ce4: 8082 ret + +000000003bc08ce6 : + 3bc08ce6: 080007b7 lui a5,0x8000 + 3bc08cea: 10078693 addi a3,a5,256 # 8000100 + 3bc08cee: 4af8 lw a4,84(a3) + 3bc08cf0: 0000a617 auipc a2,0xa + 3bc08cf4: 70060613 addi a2,a2,1792 # 3bc133f0 + 3bc08cf8: 20078793 addi a5,a5,512 + 3bc08cfc: 2701 sext.w a4,a4 + 3bc08cfe: 9b79 andi a4,a4,-2 + 3bc08d00: caf8 sw a4,84(a3) + 3bc08d02: 00062023 sw zero,0(a2) + 3bc08d06: f207a823 sw zero,-208(a5) + 3bc08d0a: 43d4 lw a3,4(a5) + 3bc08d0c: 000405b7 lui a1,0x40 + 3bc08d10: 8ecd or a3,a3,a1 + 3bc08d12: c214 sw a3,0(a2) + 3bc08d14: c3d4 sw a3,4(a5) + 3bc08d16: 53d8 lw a4,36(a5) + 3bc08d18: 8f4d or a4,a4,a1 + 3bc08d1a: c218 sw a4,0(a2) + 3bc08d1c: d3d8 sw a4,36(a5) + 3bc08d1e: 8082 ret + +000000003bc08d20 : + 3bc08d20: 08004737 lui a4,0x8004 + 3bc08d24: 0000a697 auipc a3,0xa + 3bc08d28: 6cc68693 addi a3,a3,1740 # 3bc133f0 + 3bc08d2c: 1bc72783 lw a5,444(a4) # 80041bc + 3bc08d30: 2781 sext.w a5,a5 + 3bc08d32: c29c sw a5,0(a3) + 3bc08d34: 8b85 andi a5,a5,1 + 3bc08d36: dbfd beqz a5,3bc08d2c + 3bc08d38: 32072023 sw zero,800(a4) + 3bc08d3c: 1b072783 lw a5,432(a4) + 3bc08d40: 2781 sext.w a5,a5 + 3bc08d42: fc07f793 andi a5,a5,-64 + 3bc08d46: 0057e793 ori a5,a5,5 + 3bc08d4a: c29c sw a5,0(a3) + 3bc08d4c: 1af72823 sw a5,432(a4) + 3bc08d50: 4785 li a5,1 + 3bc08d52: 32f72023 sw a5,800(a4) + 3bc08d56: 8082 ret + +000000003bc08d58 : + 3bc08d58: 080036b7 lui a3,0x8003 + 3bc08d5c: 0000a717 auipc a4,0xa + 3bc08d60: 69470713 addi a4,a4,1684 # 3bc133f0 + 3bc08d64: 569c lw a5,40(a3) + 3bc08d66: 2781 sext.w a5,a5 + 3bc08d68: c31c sw a5,0(a4) + 3bc08d6a: 1007f793 andi a5,a5,256 + 3bc08d6e: dbfd beqz a5,3bc08d64 + 3bc08d70: 8082 ret + +000000003bc08d72 : + 3bc08d72: 1141 addi sp,sp,-16 + 3bc08d74: 4551 li a0,20 + 3bc08d76: e406 sd ra,8(sp) + 3bc08d78: c12f70ef jal ra,3bc0018a + 3bc08d7c: 080007b7 lui a5,0x8000 + 3bc08d80: 4741 li a4,16 + 3bc08d82: 12e7a023 sw a4,288(a5) # 8000120 + 3bc08d86: 60a2 ld ra,8(sp) + 3bc08d88: 4705 li a4,1 + 3bc08d8a: 0000a697 auipc a3,0xa + 3bc08d8e: 66e6a323 sw a4,1638(a3) # 3bc133f0 + 3bc08d92: 10e7ac23 sw a4,280(a5) + 3bc08d96: 0141 addi sp,sp,16 + 3bc08d98: 8082 ret + +000000003bc08d9a : + 3bc08d9a: 1141 addi sp,sp,-16 + 3bc08d9c: e406 sd ra,8(sp) + 3bc08d9e: 0000a797 auipc a5,0xa + 3bc08da2: 65278793 addi a5,a5,1618 # 3bc133f0 + 3bc08da6: 0007a023 sw zero,0(a5) + 3bc08daa: 08000737 lui a4,0x8000 + 3bc08dae: 10072c23 sw zero,280(a4) # 8000118 + 3bc08db2: 08006737 lui a4,0x8006 + 3bc08db6: 4778 lw a4,76(a4) + 3bc08db8: c398 sw a4,0(a5) + 3bc08dba: ee5ff0ef jal ra,3bc08c9e + 3bc08dbe: 60a2 ld ra,8(sp) + 3bc08dc0: 0141 addi sp,sp,16 + 3bc08dc2: fb1ff06f j 3bc08d72 + +000000003bc08dc6 : + 3bc08dc6: 08004637 lui a2,0x8004 + 3bc08dca: 0000a697 auipc a3,0xa + 3bc08dce: 62668693 addi a3,a3,1574 # 3bc133f0 + 3bc08dd2: 4705 li a4,1 + 3bc08dd4: 425c lw a5,4(a2) + 3bc08dd6: 2781 sext.w a5,a5 + 3bc08dd8: c29c sw a5,0(a3) + 3bc08dda: 8b9d andi a5,a5,7 + 3bc08ddc: fee79ce3 bne a5,a4,3bc08dd4 + 3bc08de0: 8082 ret + +000000003bc08de2 : + 3bc08de2: 4785 li a5,1 + 3bc08de4: 0000a717 auipc a4,0xa + 3bc08de8: 60c70713 addi a4,a4,1548 # 3bc133f0 + 3bc08dec: 080006b7 lui a3,0x8000 + 3bc08df0: c31c sw a5,0(a4) + 3bc08df2: 16f6aa23 sw a5,372(a3) # 8000174 + 3bc08df6: 08003637 lui a2,0x8003 + 3bc08dfa: 468d li a3,3 + 3bc08dfc: 5a1c lw a5,48(a2) + 3bc08dfe: 2781 sext.w a5,a5 + 3bc08e00: c31c sw a5,0(a4) + 3bc08e02: 2487b78b extu a5,a5,9,8 + 3bc08e06: fed79be3 bne a5,a3,3bc08dfc + 3bc08e0a: 4785 li a5,1 + 3bc08e0c: 02f51a63 bne a0,a5,3bc08e40 + 3bc08e10: 0800a7b7 lui a5,0x800a + 3bc08e14: 46ed li a3,27 + 3bc08e16: c394 sw a3,0(a5) + 3bc08e18: 0800a7b7 lui a5,0x800a + 3bc08e1c: 4685 li a3,1 + 3bc08e1e: c3d4 sw a3,4(a5) + 3bc08e20: 020006b7 lui a3,0x2000 + 3bc08e24: fcb68693 addi a3,a3,-53 # 1ffffcb <__BSS_SIZE__+0x1ffa3bb> + 3bc08e28: c794 sw a3,8(a5) + 3bc08e2a: 400006b7 lui a3,0x40000 + 3bc08e2e: 16fd addi a3,a3,-1 + 3bc08e30: c7d4 sw a3,12(a5) + 3bc08e32: 47c1 li a5,16 + 3bc08e34: c31c sw a5,0(a4) + 3bc08e36: 08000737 lui a4,0x8000 + 3bc08e3a: 16f72a23 sw a5,372(a4) # 8000174 + 3bc08e3e: 8082 ret + 3bc08e40: 0800a7b7 lui a5,0x800a + 3bc08e44: 0007a023 sw zero,0(a5) # 800a000 + 3bc08e48: bfc1 j 3bc08e18 + +000000003bc08e4a : + 3bc08e4a: 8082 ret + +000000003bc08e4c : + 3bc08e4c: 08004737 lui a4,0x8004 + 3bc08e50: 080037b7 lui a5,0x8003 + 3bc08e54: 439c lw a5,0(a5) + 3bc08e56: 19072683 lw a3,400(a4) # 8004190 + 3bc08e5a: 0000a797 auipc a5,0xa + 3bc08e5e: 59678793 addi a5,a5,1430 # 3bc133f0 + 3bc08e62: c394 sw a3,0(a5) + 3bc08e64: 19472703 lw a4,404(a4) + 3bc08e68: c398 sw a4,0(a5) + 3bc08e6a: 8082 ret + +000000003bc08e6c : + 3bc08e6c: 08004737 lui a4,0x8004 + 3bc08e70: 32072023 sw zero,800(a4) # 8004320 + 3bc08e74: 1b072783 lw a5,432(a4) + 3bc08e78: 2781 sext.w a5,a5 + 3bc08e7a: 0207e793 ori a5,a5,32 + 3bc08e7e: 0000a697 auipc a3,0xa + 3bc08e82: 56f6a923 sw a5,1394(a3) # 3bc133f0 + 3bc08e86: 1af72823 sw a5,432(a4) + 3bc08e8a: 4785 li a5,1 + 3bc08e8c: 32f72023 sw a5,800(a4) + 3bc08e90: 8082 ret + +000000003bc08e92 : + 3bc08e92: 08006737 lui a4,0x8006 + 3bc08e96: 000807b7 lui a5,0x80 + 3bc08e9a: 02072423 sw zero,40(a4) # 8006028 + 3bc08e9e: 0785 addi a5,a5,1 + 3bc08ea0: 030036b7 lui a3,0x3003 + 3bc08ea4: cb7c sw a5,84(a4) + 3bc08ea6: 90068693 addi a3,a3,-1792 # 3002900 <__BSS_SIZE__+0x2ffccf0> + 3bc08eaa: 0000a797 auipc a5,0xa + 3bc08eae: 51e7a783 lw a5,1310(a5) # 3bc133c8 + 3bc08eb2: cafc sw a5,84(a3) + 3bc08eb4: 0000a797 auipc a5,0xa + 3bc08eb8: 51c7d783 lhu a5,1308(a5) # 3bc133d0 + 3bc08ebc: cebc sw a5,88(a3) + 3bc08ebe: 0000a797 auipc a5,0xa + 3bc08ec2: 51a7b783 ld a5,1306(a5) # 3bc133d8 + 3bc08ec6: 5c07b78b extu a5,a5,23,0 + 3bc08eca: 0000a617 auipc a2,0xa + 3bc08ece: 52660613 addi a2,a2,1318 # 3bc133f0 + 3bc08ed2: 2781 sext.w a5,a5 + 3bc08ed4: c21c sw a5,0(a2) + 3bc08ed6: cefc sw a5,92(a3) + 3bc08ed8: 4abc lw a5,80(a3) + 3bc08eda: 2781 sext.w a5,a5 + 3bc08edc: 0017c793 xori a5,a5,1 + 3bc08ee0: fa17f793 andi a5,a5,-95 + 3bc08ee4: 0207e793 ori a5,a5,32 + 3bc08ee8: c21c sw a5,0(a2) + 3bc08eea: cabc sw a5,80(a3) + 3bc08eec: 475c lw a5,12(a4) + 3bc08eee: 2781 sext.w a5,a5 + 3bc08ef0: 30b7c693 xori a3,a5,779 + 3bc08ef4: 3c06b68b extu a3,a3,15,0 + 3bc08ef8: 8fb5 xor a5,a5,a3 + 3bc08efa: c21c sw a5,0(a2) + 3bc08efc: c75c sw a5,12(a4) + 3bc08efe: 4b1c lw a5,16(a4) + 3bc08f00: 080066b7 lui a3,0x8006 + 3bc08f04: 2781 sext.w a5,a5 + 3bc08f06: f007f793 andi a5,a5,-256 + 3bc08f0a: cb1c sw a5,16(a4) + 3bc08f0c: 4785 li a5,1 + 3bc08f0e: c21c sw a5,0(a2) + 3bc08f10: c35c sw a5,4(a4) + 3bc08f12: 475c lw a5,12(a4) + 3bc08f14: 2781 sext.w a5,a5 + 3bc08f16: 0807e793 ori a5,a5,128 + 3bc08f1a: c21c sw a5,0(a2) + 3bc08f1c: c75c sw a5,12(a4) + 3bc08f1e: 6721 lui a4,0x8 + 3bc08f20: 4a9c lw a5,16(a3) + 3bc08f22: 2781 sext.w a5,a5 + 3bc08f24: c21c sw a5,0(a2) + 3bc08f26: 8ff9 and a5,a5,a4 + 3bc08f28: 2781 sext.w a5,a5 + 3bc08f2a: dbfd beqz a5,3bc08f20 + 3bc08f2c: 8082 ret + +000000003bc08f2e : + 3bc08f2e: 6785 lui a5,0x1 + 3bc08f30: 08006737 lui a4,0x8006 + 3bc08f34: 2f578793 addi a5,a5,757 # 12f5 <__BSS_SIZE__-0x491b> + 3bc08f38: c37c sw a5,68(a4) + 3bc08f3a: 0000a697 auipc a3,0xa + 3bc08f3e: 4b668693 addi a3,a3,1206 # 3bc133f0 + 3bc08f42: 0006a023 sw zero,0(a3) + 3bc08f46: 080007b7 lui a5,0x8000 + 3bc08f4a: 0e07aa23 sw zero,244(a5) # 80000f4 + 3bc08f4e: 080047b7 lui a5,0x8004 + 3bc08f52: 5b98 lw a4,48(a5) + 3bc08f54: 767d lui a2,0xfffff + 3bc08f56: 5ff60613 addi a2,a2,1535 # fffffffffffff5ff <__BL2_END__+0xffffffffc43ec1ef> + 3bc08f5a: 2701 sext.w a4,a4 + 3bc08f5c: 8f71 and a4,a4,a2 + 3bc08f5e: c298 sw a4,0(a3) + 3bc08f60: db98 sw a4,48(a5) + 3bc08f62: 10078793 addi a5,a5,256 # 8004100 + 3bc08f66: 47b8 lw a4,72(a5) + 3bc08f68: 7f800637 lui a2,0x7f800 + 3bc08f6c: 167d addi a2,a2,-1 + 3bc08f6e: 2701 sext.w a4,a4 + 3bc08f70: 8f71 and a4,a4,a2 + 3bc08f72: c298 sw a4,0(a3) + 3bc08f74: c7b8 sw a4,72(a5) + 3bc08f76: 8082 ret + +000000003bc08f78 : + 3bc08f78: 679d lui a5,0x7 + 3bc08f7a: 0000a617 auipc a2,0xa + 3bc08f7e: 47660613 addi a2,a2,1142 # 3bc133f0 + 3bc08f82: c8178793 addi a5,a5,-895 # 6c81 <__BSS_SIZE__+0x1071> + 3bc08f86: c21c sw a5,0(a2) + 3bc08f88: 08006737 lui a4,0x8006 + 3bc08f8c: c37c sw a5,68(a4) + 3bc08f8e: 08004737 lui a4,0x8004 + 3bc08f92: 18070593 addi a1,a4,384 # 8004180 + 3bc08f96: 499c lw a5,16(a1) + 3bc08f98: 060006b7 lui a3,0x6000 + 3bc08f9c: 1f000537 lui a0,0x1f000 + 3bc08fa0: 2781 sext.w a5,a5 + 3bc08fa2: 8ebd xor a3,a3,a5 + 3bc08fa4: 8ee9 and a3,a3,a0 + 3bc08fa6: 8fb5 xor a5,a5,a3 + 3bc08fa8: 2781 sext.w a5,a5 + 3bc08faa: c99c sw a5,16(a1) + 3bc08fac: 000307b7 lui a5,0x30 + 3bc08fb0: 03378793 addi a5,a5,51 # 30033 <__BSS_SIZE__+0x2a423> + 3bc08fb4: c21c sw a5,0(a2) + 3bc08fb6: 080006b7 lui a3,0x8000 + 3bc08fba: 0ef6aa23 sw a5,244(a3) # 80000f4 + 3bc08fbe: 5b1c lw a5,48(a4) + 3bc08fc0: 76fd lui a3,0xfffff + 3bc08fc2: bff68693 addi a3,a3,-1025 # ffffffffffffebff <__BL2_END__+0xffffffffc43eb7ef> + 3bc08fc6: 2781 sext.w a5,a5 + 3bc08fc8: 8ff5 and a5,a5,a3 + 3bc08fca: 6685 lui a3,0x1 + 3bc08fcc: a0068693 addi a3,a3,-1536 # a00 <__BSS_SIZE__-0x5210> + 3bc08fd0: 8fd5 or a5,a5,a3 + 3bc08fd2: c21c sw a5,0(a2) + 3bc08fd4: db1c sw a5,48(a4) + 3bc08fd6: 10070713 addi a4,a4,256 + 3bc08fda: 473c lw a5,72(a4) + 3bc08fdc: 808006b7 lui a3,0x80800 + 3bc08fe0: 8fd5 or a5,a5,a3 + 3bc08fe2: c21c sw a5,0(a2) + 3bc08fe4: c73c sw a5,72(a4) + 3bc08fe6: 8082 ret + +000000003bc08fe8 : + 3bc08fe8: 1101 addi sp,sp,-32 + 3bc08fea: e426 sd s1,8(sp) + 3bc08fec: ec06 sd ra,24(sp) + 3bc08fee: e822 sd s0,16(sp) + 3bc08ff0: e04a sd s2,0(sp) + 3bc08ff2: 080047b7 lui a5,0x8004 + 3bc08ff6: 5407a023 sw zero,1344(a5) # 8004540 + 3bc08ffa: 5e07a823 sw zero,1520(a5) + 3bc08ffe: 6a07a023 sw zero,1696(a5) + 3bc09002: 08004737 lui a4,0x8004 + 3bc09006: 0000a497 auipc s1,0xa + 3bc0900a: 3ea48493 addi s1,s1,1002 # 3bc133f0 + 3bc0900e: 3fc72783 lw a5,1020(a4) # 80043fc + 3bc09012: 2781 sext.w a5,a5 + 3bc09014: c09c sw a5,0(s1) + 3bc09016: ffe5 bnez a5,3bc0900e + 3bc09018: 5b1c lw a5,48(a4) + 3bc0901a: 0007841b sext.w s0,a5 + 3bc0901e: fd447693 andi a3,s0,-44 + 3bc09022: c094 sw a3,0(s1) + 3bc09024: db14 sw a3,48(a4) + 3bc09026: 0017f913 andi s2,a5,1 + 3bc0902a: f05ff0ef jal ra,3bc08f2e + 3bc0902e: ef4ff0ef jal ra,3bc08722 + 3bc09032: 080006b7 lui a3,0x8000 + 3bc09036: 1846a703 lw a4,388(a3) # 8000184 + 3bc0903a: 080037b7 lui a5,0x8003 + 3bc0903e: 2701 sext.w a4,a4 + 3bc09040: 00176713 ori a4,a4,1 + 3bc09044: c098 sw a4,0(s1) + 3bc09046: 18e6a223 sw a4,388(a3) + 3bc0904a: 4447a703 lw a4,1092(a5) # 8003444 + 3bc0904e: 2701 sext.w a4,a4 + 3bc09050: c098 sw a4,0(s1) + 3bc09052: 8b09 andi a4,a4,2 + 3bc09054: db7d beqz a4,3bc0904a + 3bc09056: 080107b7 lui a5,0x8010 + 3bc0905a: 00040737 lui a4,0x40 + 3bc0905e: c398 sw a4,0(a5) + 3bc09060: 080046b7 lui a3,0x8004 + 3bc09064: 5a98 lw a4,48(a3) + 3bc09066: 60e2 ld ra,24(sp) + 3bc09068: 2701 sext.w a4,a4 + 3bc0906a: 00874633 xor a2,a4,s0 + 3bc0906e: 02067613 andi a2,a2,32 + 3bc09072: 8f31 xor a4,a4,a2 + 3bc09074: 00874633 xor a2,a4,s0 + 3bc09078: 8a21 andi a2,a2,8 + 3bc0907a: 8f31 xor a4,a4,a2 + 3bc0907c: 008747b3 xor a5,a4,s0 + 3bc09080: 8b89 andi a5,a5,2 + 3bc09082: 8fb9 xor a5,a5,a4 + 3bc09084: 9bf9 andi a5,a5,-2 + 3bc09086: 0127e7b3 or a5,a5,s2 + 3bc0908a: c09c sw a5,0(s1) + 3bc0908c: da9c sw a5,48(a3) + 3bc0908e: 50068713 addi a4,a3,1280 # 8004500 + 3bc09092: 4785 li a5,1 + 3bc09094: c33c sw a5,64(a4) + 3bc09096: 6442 ld s0,16(sp) + 3bc09098: 58068713 addi a4,a3,1408 + 3bc0909c: 64a2 ld s1,8(sp) + 3bc0909e: 6902 ld s2,0(sp) + 3bc090a0: db3c sw a5,112(a4) + 3bc090a2: 68068693 addi a3,a3,1664 + 3bc090a6: d29c sw a5,32(a3) + 3bc090a8: 6105 addi sp,sp,32 + 3bc090aa: ecfff06f j 3bc08f78 + +000000003bc090ae : + 3bc090ae: 7139 addi sp,sp,-64 + 3bc090b0: f426 sd s1,40(sp) + 3bc090b2: e456 sd s5,8(sp) + 3bc090b4: fc06 sd ra,56(sp) + 3bc090b6: f822 sd s0,48(sp) + 3bc090b8: f04a sd s2,32(sp) + 3bc090ba: ec4e sd s3,24(sp) + 3bc090bc: e852 sd s4,16(sp) + 3bc090be: 080047b7 lui a5,0x8004 + 3bc090c2: 5407a023 sw zero,1344(a5) # 8004540 + 3bc090c6: 5e07a823 sw zero,1520(a5) + 3bc090ca: 8aaa mv s5,a0 + 3bc090cc: 6a07a023 sw zero,1696(a5) + 3bc090d0: 08004737 lui a4,0x8004 + 3bc090d4: 0000a497 auipc s1,0xa + 3bc090d8: 31c48493 addi s1,s1,796 # 3bc133f0 + 3bc090dc: 3fc72783 lw a5,1020(a4) # 80043fc + 3bc090e0: 2781 sext.w a5,a5 + 3bc090e2: c09c sw a5,0(s1) + 3bc090e4: ffe5 bnez a5,3bc090dc + 3bc090e6: 5b1c lw a5,48(a4) + 3bc090e8: 080009b7 lui s3,0x8000 + 3bc090ec: 0007891b sext.w s2,a5 + 3bc090f0: 0017f413 andi s0,a5,1 + 3bc090f4: fd497793 andi a5,s2,-44 + 3bc090f8: c09c sw a5,0(s1) + 3bc090fa: db1c sw a5,48(a4) + 3bc090fc: e33ff0ef jal ra,3bc08f2e + 3bc09100: 4505 li a0,1 + 3bc09102: ce1ff0ef jal ra,3bc08de2 + 3bc09106: 08098693 addi a3,s3,128 # 8000080 + 3bc0910a: 4298 lw a4,0(a3) + 3bc0910c: 002007b7 lui a5,0x200 + 3bc09110: 007f0637 lui a2,0x7f0 + 3bc09114: 2701 sext.w a4,a4 + 3bc09116: 8fb9 xor a5,a5,a4 + 3bc09118: 8ff1 and a5,a5,a2 + 3bc0911a: 8f3d xor a4,a4,a5 + 3bc0911c: 2701 sext.w a4,a4 + 3bc0911e: 1f0007b7 lui a5,0x1f000 + 3bc09122: 8fb9 xor a5,a5,a4 + 3bc09124: 7f000637 lui a2,0x7f000 + 3bc09128: 8ff1 and a5,a5,a2 + 3bc0912a: 8f3d xor a4,a4,a5 + 3bc0912c: 2701 sext.w a4,a4 + 3bc0912e: c098 sw a4,0(s1) + 3bc09130: c298 sw a4,0(a3) + 3bc09132: 46dc lw a5,12(a3) + 3bc09134: 8556 mv a0,s5 + 3bc09136: 0007871b sext.w a4,a5 + 3bc0913a: 0827ba0b extu s4,a5,2,2 + 3bc0913e: ff177793 andi a5,a4,-15 + 3bc09142: c09c sw a5,0(s1) + 3bc09144: c6dc sw a5,12(a3) + 3bc09146: e22ff0ef jal ra,3bc08768 + 3bc0914a: 1889a783 lw a5,392(s3) + 3bc0914e: 08003737 lui a4,0x8003 + 3bc09152: 2781 sext.w a5,a5 + 3bc09154: 0017e793 ori a5,a5,1 + 3bc09158: c09c sw a5,0(s1) + 3bc0915a: 18f9a423 sw a5,392(s3) + 3bc0915e: 44472783 lw a5,1092(a4) # 8003444 + 3bc09162: 2781 sext.w a5,a5 + 3bc09164: c09c sw a5,0(s1) + 3bc09166: 8b91 andi a5,a5,4 + 3bc09168: dbfd beqz a5,3bc0915e + 3bc0916a: 040a0563 beqz s4,3bc091b4 + 3bc0916e: 08000737 lui a4,0x8000 + 3bc09172: 08070693 addi a3,a4,128 # 8000080 + 3bc09176: 46dc lw a5,12(a3) + 3bc09178: 18070713 addi a4,a4,384 + 3bc0917c: 2781 sext.w a5,a5 + 3bc0917e: 9bed andi a5,a5,-5 + 3bc09180: c09c sw a5,0(s1) + 3bc09182: c6dc sw a5,12(a3) + 3bc09184: 471c lw a5,8(a4) + 3bc09186: 2781 sext.w a5,a5 + 3bc09188: 0017e793 ori a5,a5,1 + 3bc0918c: c09c sw a5,0(s1) + 3bc0918e: c71c sw a5,8(a4) + 3bc09190: 08003737 lui a4,0x8003 + 3bc09194: 44472783 lw a5,1092(a4) # 8003444 + 3bc09198: 2781 sext.w a5,a5 + 3bc0919a: c09c sw a5,0(s1) + 3bc0919c: 8b91 andi a5,a5,4 + 3bc0919e: dbfd beqz a5,3bc09194 + 3bc091a0: 08000737 lui a4,0x8000 + 3bc091a4: 08c72783 lw a5,140(a4) # 800008c + 3bc091a8: 2781 sext.w a5,a5 + 3bc091aa: 0047e793 ori a5,a5,4 + 3bc091ae: c09c sw a5,0(s1) + 3bc091b0: 08f72623 sw a5,140(a4) + 3bc091b4: 819ff0ef jal ra,3bc089cc + 3bc091b8: 080107b7 lui a5,0x8010 + 3bc091bc: 00040737 lui a4,0x40 + 3bc091c0: c398 sw a4,0(a5) + 3bc091c2: 4501 li a0,0 + 3bc091c4: c1fff0ef jal ra,3bc08de2 + 3bc091c8: 08004737 lui a4,0x8004 + 3bc091cc: 5b1c lw a5,48(a4) + 3bc091ce: 70e2 ld ra,56(sp) + 3bc091d0: 69e2 ld s3,24(sp) + 3bc091d2: 2781 sext.w a5,a5 + 3bc091d4: 0127c6b3 xor a3,a5,s2 + 3bc091d8: 0206f693 andi a3,a3,32 + 3bc091dc: 8fb5 xor a5,a5,a3 + 3bc091de: 0127c6b3 xor a3,a5,s2 + 3bc091e2: 8aa1 andi a3,a3,8 + 3bc091e4: 8fb5 xor a5,a5,a3 + 3bc091e6: 0127c933 xor s2,a5,s2 + 3bc091ea: 00297913 andi s2,s2,2 + 3bc091ee: 0127c7b3 xor a5,a5,s2 + 3bc091f2: 9bf9 andi a5,a5,-2 + 3bc091f4: 8fc1 or a5,a5,s0 + 3bc091f6: c09c sw a5,0(s1) + 3bc091f8: db1c sw a5,48(a4) + 3bc091fa: 50070693 addi a3,a4,1280 # 8004500 + 3bc091fe: 4785 li a5,1 + 3bc09200: c2bc sw a5,64(a3) + 3bc09202: 7442 ld s0,48(sp) + 3bc09204: 58070693 addi a3,a4,1408 + 3bc09208: 74a2 ld s1,40(sp) + 3bc0920a: 7902 ld s2,32(sp) + 3bc0920c: 6a42 ld s4,16(sp) + 3bc0920e: 6aa2 ld s5,8(sp) + 3bc09210: dabc sw a5,112(a3) + 3bc09212: 68070713 addi a4,a4,1664 + 3bc09216: d31c sw a5,32(a4) + 3bc09218: 6121 addi sp,sp,64 + 3bc0921a: d5fff06f j 3bc08f78 + +000000003bc0921e : + 3bc0921e: 7179 addi sp,sp,-48 + 3bc09220: e84a sd s2,16(sp) + 3bc09222: e44e sd s3,8(sp) + 3bc09224: e052 sd s4,0(sp) + 3bc09226: f406 sd ra,40(sp) + 3bc09228: f022 sd s0,32(sp) + 3bc0922a: ec26 sd s1,24(sp) + 3bc0922c: 080047b7 lui a5,0x8004 + 3bc09230: 5407a023 sw zero,1344(a5) # 8004540 + 3bc09234: 5e07a823 sw zero,1520(a5) + 3bc09238: 89aa mv s3,a0 + 3bc0923a: 8a2e mv s4,a1 + 3bc0923c: 6a07a023 sw zero,1696(a5) + 3bc09240: 08004737 lui a4,0x8004 + 3bc09244: 0000a917 auipc s2,0xa + 3bc09248: 1ac90913 addi s2,s2,428 # 3bc133f0 + 3bc0924c: 3fc72783 lw a5,1020(a4) # 80043fc + 3bc09250: 2781 sext.w a5,a5 + 3bc09252: 00f92023 sw a5,0(s2) + 3bc09256: fbfd bnez a5,3bc0924c + 3bc09258: 5b1c lw a5,48(a4) + 3bc0925a: 0007849b sext.w s1,a5 + 3bc0925e: 0017f413 andi s0,a5,1 + 3bc09262: fd44f793 andi a5,s1,-44 + 3bc09266: 00f92023 sw a5,0(s2) + 3bc0926a: db1c sw a5,48(a4) + 3bc0926c: cc3ff0ef jal ra,3bc08f2e + 3bc09270: 4505 li a0,1 + 3bc09272: b71ff0ef jal ra,3bc08de2 + 3bc09276: 080007b7 lui a5,0x8000 + 3bc0927a: 0bc7a703 lw a4,188(a5) # 80000bc + 3bc0927e: 2701 sext.w a4,a4 + 3bc09280: 000a1863 bnez s4,3bc09290 + 3bc09284: 77fd lui a5,0xfffff + 3bc09286: 17fd addi a5,a5,-1 + 3bc09288: 8f7d and a4,a4,a5 + 3bc0928a: 6789 lui a5,0x2 + 3bc0928c: 8f5d or a4,a4,a5 + 3bc0928e: a821 j 3bc092a6 + 3bc09290: 4785 li a5,1 + 3bc09292: 00fa1763 bne s4,a5,3bc092a0 + 3bc09296: 77f9 lui a5,0xffffe + 3bc09298: 17fd addi a5,a5,-1 + 3bc0929a: 8f7d and a4,a4,a5 + 3bc0929c: 6785 lui a5,0x1 + 3bc0929e: b7fd j 3bc0928c + 3bc092a0: 4789 li a5,2 + 3bc092a2: 0efa0963 beq s4,a5,3bc09394 + 3bc092a6: 00e92023 sw a4,0(s2) + 3bc092aa: 00092703 lw a4,0(s2) + 3bc092ae: 080007b7 lui a5,0x8000 + 3bc092b2: 0ae7ae23 sw a4,188(a5) # 80000bc + 3bc092b6: 0e0a1163 bnez s4,3bc09398 + 3bc092ba: 08004737 lui a4,0x8004 + 3bc092be: 475c lw a5,12(a4) + 3bc092c0: 2781 sext.w a5,a5 + 3bc092c2: 0807e793 ori a5,a5,128 + 3bc092c6: 00f92023 sw a5,0(s2) + 3bc092ca: c75c sw a5,12(a4) + 3bc092cc: e36ff0ef jal ra,3bc08902 + 3bc092d0: 080007b7 lui a5,0x8000 + 3bc092d4: 18c7a783 lw a5,396(a5) # 800018c + 3bc092d8: 2781 sext.w a5,a5 + 3bc092da: 4017e693 ori a3,a5,1025 + 3bc092de: 000a1663 bnez s4,3bc092ea + 3bc092e2: bff7f793 andi a5,a5,-1025 + 3bc092e6: 0017e693 ori a3,a5,1 + 3bc092ea: 4785 li a5,1 + 3bc092ec: 00f98763 beq s3,a5,3bc092fa + 3bc092f0: 39bd addiw s3,s3,-17 + 3bc092f2: fef6f713 andi a4,a3,-17 + 3bc092f6: 0137e463 bltu a5,s3,3bc092fe + 3bc092fa: 0106e713 ori a4,a3,16 + 3bc092fe: 00e92023 sw a4,0(s2) + 3bc09302: 080007b7 lui a5,0x8000 + 3bc09306: 18e7a623 sw a4,396(a5) # 800018c + 3bc0930a: 08003737 lui a4,0x8003 + 3bc0930e: 44472783 lw a5,1092(a4) # 8003444 + 3bc09312: 2781 sext.w a5,a5 + 3bc09314: 00f92023 sw a5,0(s2) + 3bc09318: 8ba1 andi a5,a5,8 + 3bc0931a: dbf5 beqz a5,3bc0930e + 3bc0931c: 080049b7 lui s3,0x8004 + 3bc09320: 00c9a783 lw a5,12(s3) # 800400c + 3bc09324: 00040737 lui a4,0x40 + 3bc09328: 4501 li a0,0 + 3bc0932a: 2781 sext.w a5,a5 + 3bc0932c: f7f7f793 andi a5,a5,-129 + 3bc09330: 00f92023 sw a5,0(s2) + 3bc09334: 00f9a623 sw a5,12(s3) + 3bc09338: 080107b7 lui a5,0x8010 + 3bc0933c: c398 sw a4,0(a5) + 3bc0933e: aa5ff0ef jal ra,3bc08de2 + 3bc09342: 0309a783 lw a5,48(s3) + 3bc09346: 70a2 ld ra,40(sp) + 3bc09348: 6a02 ld s4,0(sp) + 3bc0934a: 2781 sext.w a5,a5 + 3bc0934c: 0097c733 xor a4,a5,s1 + 3bc09350: 02077713 andi a4,a4,32 + 3bc09354: 8fb9 xor a5,a5,a4 + 3bc09356: 0097c733 xor a4,a5,s1 + 3bc0935a: 8b21 andi a4,a4,8 + 3bc0935c: 8fb9 xor a5,a5,a4 + 3bc0935e: 8cbd xor s1,s1,a5 + 3bc09360: 8889 andi s1,s1,2 + 3bc09362: 8fa5 xor a5,a5,s1 + 3bc09364: 9bf9 andi a5,a5,-2 + 3bc09366: 8fc1 or a5,a5,s0 + 3bc09368: 00f92023 sw a5,0(s2) + 3bc0936c: 02f9a823 sw a5,48(s3) + 3bc09370: 50098713 addi a4,s3,1280 + 3bc09374: 4785 li a5,1 + 3bc09376: c33c sw a5,64(a4) + 3bc09378: 58098713 addi a4,s3,1408 + 3bc0937c: 7402 ld s0,32(sp) + 3bc0937e: db3c sw a5,112(a4) + 3bc09380: 68098993 addi s3,s3,1664 + 3bc09384: 64e2 ld s1,24(sp) + 3bc09386: 6942 ld s2,16(sp) + 3bc09388: 02f9a023 sw a5,32(s3) + 3bc0938c: 69a2 ld s3,8(sp) + 3bc0938e: 6145 addi sp,sp,48 + 3bc09390: be9ff06f j 3bc08f78 + 3bc09394: 678d lui a5,0x3 + 3bc09396: bddd j 3bc0928c + 3bc09398: 854e mv a0,s3 + 3bc0939a: cb8ff0ef jal ra,3bc08852 + 3bc0939e: bf0d j 3bc092d0 + +000000003bc093a0 : + 3bc093a0: 6785 lui a5,0x1 + 3bc093a2: 0785 addi a5,a5,1 + 3bc093a4: 0000a717 auipc a4,0xa + 3bc093a8: 04f72623 sw a5,76(a4) # 3bc133f0 + 3bc093ac: 08000737 lui a4,0x8000 + 3bc093b0: 50f72023 sw a5,1280(a4) # 8000500 + 3bc093b4: 54f72023 sw a5,1344(a4) + 3bc093b8: 8082 ret + +000000003bc093ba : + 3bc093ba: 4799 li a5,6 + 3bc093bc: 00f50023 sb a5,0(a0) # 1f000000 + 3bc093c0: 0000a717 auipc a4,0xa + 3bc093c4: 02f72823 sw a5,48(a4) # 3bc133f0 + 3bc093c8: 08000737 lui a4,0x8000 + 3bc093cc: 20f72423 sw a5,520(a4) # 8000208 + 3bc093d0: 080107b7 lui a5,0x8010 + 3bc093d4: 00040737 lui a4,0x40 + 3bc093d8: c398 sw a4,0(a5) + 3bc093da: 8082 ret + +000000003bc093dc : + 3bc093dc: 2f000793 li a5,752 + 3bc093e0: 0000a717 auipc a4,0xa + 3bc093e4: 00f72c23 sw a5,24(a4) # 3bc133f8 + 3bc093e8: 06400793 li a5,100 + 3bc093ec: 0000a717 auipc a4,0xa + 3bc093f0: 00f72823 sw a5,16(a4) # 3bc133fc + 3bc093f4: 00002717 auipc a4,0x2 + 3bc093f8: 30872703 lw a4,776(a4) # 3bc0b6fc + 3bc093fc: 0047569b srliw a3,a4,0x4 + 3bc09400: 463d li a2,15 + 3bc09402: 0000a797 auipc a5,0xa + 3bc09406: fed7af23 sw a3,-2(a5) # 3bc13400 + 3bc0940a: 0000a797 auipc a5,0xa + 3bc0940e: fec7a523 sw a2,-22(a5) # 3bc133f4 + 3bc09412: 02f00713 li a4,47 + 3bc09416: 077a slli a4,a4,0x1e + 3bc09418: 7c06b78b extu a5,a3,31,0 + 3bc0941c: 02f757b3 divu a5,a4,a5 + 3bc09420: 0000a717 auipc a4,0xa + 3bc09424: faf73423 sd a5,-88(a4) # 3bc133c8 + 3bc09428: 0fa00713 li a4,250 + 3bc0942c: 02d7073b mulw a4,a4,a3 + 3bc09430: 06400693 li a3,100 + 3bc09434: 02d7573b divuw a4,a4,a3 + 3bc09438: 7c07370b extu a4,a4,31,0 + 3bc0943c: 0000a697 auipc a3,0xa + 3bc09440: f8e6ba23 sd a4,-108(a3) # 3bc133d0 + 3bc09444: 3e800693 li a3,1000 + 3bc09448: 02d70733 mul a4,a4,a3 + 3bc0944c: 02c787b3 mul a5,a5,a2 + 3bc09450: 02e7d7b3 divu a5,a5,a4 + 3bc09454: 0000a717 auipc a4,0xa + 3bc09458: f8f73223 sd a5,-124(a4) # 3bc133d8 + 3bc0945c: a37ff06f j 3bc08e92 + +000000003bc09460 : + 3bc09460: 1141 addi sp,sp,-16 + 3bc09462: e406 sd ra,8(sp) + 3bc09464: f93fe0ef jal ra,3bc083f6 + 3bc09468: 357d addiw a0,a0,-1 + 3bc0946a: 0ff57513 andi a0,a0,255 + 3bc0946e: 47a5 li a5,9 + 3bc09470: 12a7ef63 bltu a5,a0,3bc095ae + 3bc09474: 00002717 auipc a4,0x2 + 3bc09478: f8470713 addi a4,a4,-124 # 3bc0b3f8 + 3bc0947c: 44a7478b lrw a5,a4,a0,2 + 3bc09480: 97ba add a5,a5,a4 + 3bc09482: 8782 jr a5 + 3bc09484: 12141737 lui a4,0x12141 + 3bc09488: 080007b7 lui a5,0x8000 + 3bc0948c: 074d addi a4,a4,19 + 3bc0948e: c398 sw a4,0(a5) + 3bc09490: 0c041737 lui a4,0xc041 + 3bc09494: 50370713 addi a4,a4,1283 # c041503 + 3bc09498: c3d8 sw a4,4(a5) + 3bc0949a: 06050737 lui a4,0x6050 + 3bc0949e: 0705 addi a4,a4,1 + 3bc094a0: c798 sw a4,8(a5) + 3bc094a2: 08071737 lui a4,0x8071 + 3bc094a6: b0270713 addi a4,a4,-1278 # 8070b02 + 3bc094aa: c7d8 sw a4,12(a5) + 3bc094ac: 0a0f1737 lui a4,0xa0f1 + 3bc094b0: e0970713 addi a4,a4,-503 # a0f0e09 + 3bc094b4: cb98 sw a4,16(a5) + 3bc094b6: 00161737 lui a4,0x161 + 3bc094ba: 10d70713 addi a4,a4,269 # 16110d <__BSS_SIZE__+0x15b4fd> + 3bc094be: cbd8 sw a4,20(a5) + 3bc094c0: 0007ac23 sw zero,24(a5) # 8000018 + 3bc094c4: 10000713 li a4,256 + 3bc094c8: cfd8 sw a4,28(a5) + 3bc094ca: 02136737 lui a4,0x2136 + 3bc094ce: 57470713 addi a4,a4,1396 # 2136574 <__BSS_SIZE__+0x2130964> + 3bc094d2: d398 sw a4,32(a5) + 3bc094d4: 4721 li a4,8 + 3bc094d6: d3d8 sw a4,36(a5) + 3bc094d8: 76512737 lui a4,0x76512 + 3bc094dc: 30870713 addi a4,a4,776 # 76512308 <__BL2_END__+0x3a8feef8> + 3bc094e0: d798 sw a4,40(a5) + 3bc094e2: 4711 li a4,4 + 3bc094e4: d7d8 sw a4,44(a5) + 3bc094e6: a0e1 j 3bc095ae + 3bc094e8: 08071737 lui a4,0x8071 + 3bc094ec: 080007b7 lui a5,0x8000 + 3bc094f0: d0970713 addi a4,a4,-759 # 8070d09 + 3bc094f4: c398 sw a4,0(a5) + 3bc094f6: 06050737 lui a4,0x6050 + 3bc094fa: 20b70713 addi a4,a4,523 # 605020b + 3bc094fe: c3d8 sw a4,4(a5) + 3bc09500: 14040737 lui a4,0x14040 + 3bc09504: 10070713 addi a4,a4,256 # 14040100 + 3bc09508: c798 sw a4,8(a5) + 3bc0950a: 15031737 lui a4,0x15031 + 3bc0950e: e0c70713 addi a4,a4,-500 # 15030e0c + 3bc09512: c7d8 sw a4,12(a5) + 3bc09514: 0a0f1737 lui a4,0xa0f1 + 3bc09518: 21370713 addi a4,a4,531 # a0f1213 + 3bc0951c: cb98 sw a4,16(a5) + 3bc0951e: 00111737 lui a4,0x111 + 3bc09522: 0759 addi a4,a4,22 + 3bc09524: cbd8 sw a4,20(a5) + 3bc09526: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0952a: 10000713 li a4,256 + 3bc0952e: cfd8 sw a4,28(a5) + 3bc09530: 82135737 lui a4,0x82135 + 3bc09534: 76470713 addi a4,a4,1892 # ffffffff82135764 <__BL2_END__+0xffffffff46522354> + 3bc09538: d398 sw a4,32(a5) + 3bc0953a: 67513737 lui a4,0x67513 + 3bc0953e: 0207a223 sw zero,36(a5) + 3bc09542: 02870713 addi a4,a4,40 # 67513028 <__BL2_END__+0x2b8ffc18> + 3bc09546: bf69 j 3bc094e0 + 3bc09548: 08071737 lui a4,0x8071 + 3bc0954c: 080007b7 lui a5,0x8000 + 3bc09550: b0970713 addi a4,a4,-1271 # 8070b09 + 3bc09554: c398 sw a4,0(a5) + 3bc09556: 05000737 lui a4,0x5000 + 3bc0955a: 20670713 addi a4,a4,518 # 5000206 + 3bc0955e: c3d8 sw a4,4(a5) + 3bc09560: 0c040737 lui a4,0xc040 + 3bc09564: 10d70713 addi a4,a4,269 # c04010d + 3bc09568: c798 sw a4,8(a5) + 3bc0956a: 15031737 lui a4,0x15031 + 3bc0956e: a1470713 addi a4,a4,-1516 # 15030a14 + 3bc09572: c7d8 sw a4,12(a5) + 3bc09574: 10111737 lui a4,0x10111 + 3bc09578: 21370713 addi a4,a4,531 # 10111213 + 3bc0957c: cb98 sw a4,16(a5) + 3bc0957e: 000f1737 lui a4,0xf1 + 3bc09582: 60e70713 addi a4,a4,1550 # f160e <__BSS_SIZE__+0xeb9fe> + 3bc09586: cbd8 sw a4,20(a5) + 3bc09588: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0958c: 10000713 li a4,256 + 3bc09590: cfd8 sw a4,28(a5) + 3bc09592: 31756737 lui a4,0x31756 + 3bc09596: 02470713 addi a4,a4,36 # 31756024 + 3bc0959a: d398 sw a4,32(a5) + 3bc0959c: 4721 li a4,8 + 3bc0959e: d3d8 sw a4,36(a5) + 3bc095a0: 26473737 lui a4,0x26473 + 3bc095a4: 51870713 addi a4,a4,1304 # 26473518 + 3bc095a8: d798 sw a4,40(a5) + 3bc095aa: 0207a623 sw zero,44(a5) + 3bc095ae: 60a2 ld ra,8(sp) + 3bc095b0: 0141 addi sp,sp,16 + 3bc095b2: 8082 ret + 3bc095b4: 0c061737 lui a4,0xc061 + 3bc095b8: 080007b7 lui a5,0x8000 + 3bc095bc: 80b70713 addi a4,a4,-2037 # c06080b + 3bc095c0: c398 sw a4,0(a5) + 3bc095c2: 070d1737 lui a4,0x70d1 + 3bc095c6: 90470713 addi a4,a4,-1788 # 70d0904 + 3bc095ca: c3d8 sw a4,4(a5) + 3bc095cc: 6741 lui a4,0x10 + 3bc095ce: 50270713 addi a4,a4,1282 # 10502 <__BSS_SIZE__+0xa8f2> + 3bc095d2: c798 sw a4,8(a5) + 3bc095d4: 110a1737 lui a4,0x110a1 + 3bc095d8: e0370713 addi a4,a4,-509 # 110a0e03 + 3bc095dc: c7d8 sw a4,12(a5) + 3bc095de: 0f141737 lui a4,0xf141 + 3bc095e2: 61070713 addi a4,a4,1552 # f141610 + 3bc095e6: cb98 sw a4,16(a5) + 3bc095e8: 00151737 lui a4,0x151 + 3bc095ec: 31270713 addi a4,a4,786 # 151312 <__BSS_SIZE__+0x14b702> + 3bc095f0: cbd8 sw a4,20(a5) + 3bc095f2: 0007ac23 sw zero,24(a5) # 8000018 + 3bc095f6: 10000713 li a4,256 + 3bc095fa: cfd8 sw a4,28(a5) + 3bc095fc: 71840737 lui a4,0x71840 + 3bc09600: 53270713 addi a4,a4,1330 # 71840532 <__BL2_END__+0x35c2d122> + 3bc09604: d398 sw a4,32(a5) + 3bc09606: 4719 li a4,6 + 3bc09608: d3d8 sw a4,36(a5) + 3bc0960a: 76103737 lui a4,0x76103 + 3bc0960e: 42570713 addi a4,a4,1061 # 76103425 <__BL2_END__+0x3a4f0015> + 3bc09612: d798 sw a4,40(a5) + 3bc09614: 4721 li a4,8 + 3bc09616: b5f9 j 3bc094e4 + 3bc09618: 080b1737 lui a4,0x80b1 + 3bc0961c: 080007b7 lui a5,0x8000 + 3bc09620: d0670713 addi a4,a4,-762 # 80b0d06 + 3bc09624: c398 sw a4,0(a5) + 3bc09626: 09010737 lui a4,0x9010 + 3bc0962a: 40770713 addi a4,a4,1031 # 9010407 + 3bc0962e: c3d8 sw a4,4(a5) + 3bc09630: 14050737 lui a4,0x14050 + 3bc09634: 20c70713 addi a4,a4,524 # 1405020c + 3bc09638: c798 sw a4,8(a5) + 3bc0963a: 15001737 lui a4,0x15001 + 3bc0963e: e0370713 addi a4,a4,-509 # 15000e03 + 3bc09642: c7d8 sw a4,12(a5) + 3bc09644: 0a0f1737 lui a4,0xa0f1 + 3bc09648: 21370713 addi a4,a4,531 # a0f1213 + 3bc0964c: cb98 sw a4,16(a5) + 3bc0964e: 00111737 lui a4,0x111 + 3bc09652: 0759 addi a4,a4,22 + 3bc09654: cbd8 sw a4,20(a5) + 3bc09656: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0965a: 10000713 li a4,256 + 3bc0965e: cfd8 sw a4,28(a5) + 3bc09660: 82135737 lui a4,0x82135 + 3bc09664: 76470713 addi a4,a4,1892 # ffffffff82135764 <__BL2_END__+0xffffffff46522354> + 3bc09668: d398 sw a4,32(a5) + 3bc0966a: 67513737 lui a4,0x67513 + 3bc0966e: 0207a223 sw zero,36(a5) + 3bc09672: 20870713 addi a4,a4,520 # 67513208 <__BL2_END__+0x2b8ffdf8> + 3bc09676: b5ad j 3bc094e0 + 3bc09678: 0b061737 lui a4,0xb061 + 3bc0967c: 080007b7 lui a5,0x8000 + 3bc09680: 90870713 addi a4,a4,-1784 # b060908 + 3bc09684: c398 sw a4,0(a5) + 3bc09686: 02000737 lui a4,0x2000 + 3bc0968a: 10770713 addi a4,a4,263 # 2000107 <__BSS_SIZE__+0x1ffa4f7> + 3bc0968e: c3d8 sw a4,4(a5) + 3bc09690: 0c050737 lui a4,0xc050 + 3bc09694: 40d70713 addi a4,a4,1037 # c05040d + 3bc09698: c798 sw a4,8(a5) + 3bc0969a: 13141737 lui a4,0x13141 + 3bc0969e: 50370713 addi a4,a4,1283 # 13141503 + 3bc096a2: c7d8 sw a4,12(a5) + 3bc096a4: 160a1737 lui a4,0x160a1 + 3bc096a8: 11270713 addi a4,a4,274 # 160a1112 + 3bc096ac: cb98 sw a4,16(a5) + 3bc096ae: 000f1737 lui a4,0xf1 + 3bc096b2: 0739 addi a4,a4,14 + 3bc096b4: cbd8 sw a4,20(a5) + 3bc096b6: 0007ac23 sw zero,24(a5) # 8000018 + 3bc096ba: 10000713 li a4,256 + 3bc096be: cfd8 sw a4,28(a5) + 3bc096c0: 28137737 lui a4,0x28137 + 3bc096c4: 56470713 addi a4,a4,1380 # 28137564 + 3bc096c8: d398 sw a4,32(a5) + 3bc096ca: 76158737 lui a4,0x76158 + 3bc096ce: 0207a223 sw zero,36(a5) + 3bc096d2: 32070713 addi a4,a4,800 # 76158320 <__BL2_END__+0x3a544f10> + 3bc096d6: b529 j 3bc094e0 + 3bc096d8: 08061737 lui a4,0x8061 + 3bc096dc: 080007b7 lui a5,0x8000 + 3bc096e0: b0970713 addi a4,a4,-1271 # 8060b09 + 3bc096e4: c398 sw a4,0(a5) + 3bc096e6: 02040737 lui a4,0x2040 + 3bc096ea: 70170713 addi a4,a4,1793 # 2040701 <__BSS_SIZE__+0x203aaf1> + 3bc096ee: c3d8 sw a4,4(a5) + 3bc096f0: 0c000737 lui a4,0xc000 + 3bc096f4: 50d70713 addi a4,a4,1293 # c00050d + 3bc096f8: c798 sw a4,8(a5) + 3bc096fa: 13150737 lui a4,0x13150 + 3bc096fe: 31470713 addi a4,a4,788 # 13150314 + 3bc09702: c7d8 sw a4,12(a5) + 3bc09704: 10111737 lui a4,0x10111 + 3bc09708: 21670713 addi a4,a4,534 # 10111216 + 3bc0970c: cb98 sw a4,16(a5) + 3bc0970e: 000f1737 lui a4,0xf1 + 3bc09712: a0e70713 addi a4,a4,-1522 # f0a0e <__BSS_SIZE__+0xeadfe> + 3bc09716: cbd8 sw a4,20(a5) + 3bc09718: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0971c: 10000713 li a4,256 + 3bc09720: cfd8 sw a4,28(a5) + 3bc09722: 82135737 lui a4,0x82135 + 3bc09726: 67470713 addi a4,a4,1652 # ffffffff82135674 <__BL2_END__+0xffffffff46522264> + 3bc0972a: d398 sw a4,32(a5) + 3bc0972c: 76153737 lui a4,0x76153 + 3bc09730: 0207a223 sw zero,36(a5) + 3bc09734: 28070713 addi a4,a4,640 # 76153280 <__BL2_END__+0x3a53fe70> + 3bc09738: b365 j 3bc094e0 + 3bc0973a: 070b1737 lui a4,0x70b1 + 3bc0973e: 080007b7 lui a5,0x8000 + 3bc09742: 90c70713 addi a4,a4,-1780 # 70b090c + 3bc09746: c398 sw a4,0(a5) + 3bc09748: 04050737 lui a4,0x4050 + 3bc0974c: 60870713 addi a4,a4,1544 # 4050608 <__BSS_SIZE__+0x404a9f8> + 3bc09750: c3d8 sw a4,4(a5) + 3bc09752: 0e020737 lui a4,0xe020 + 3bc09756: 30d70713 addi a4,a4,781 # e02030d + 3bc0975a: c798 sw a4,8(a5) + 3bc0975c: 110a0737 lui a4,0x110a0 + 3bc09760: 10070713 addi a4,a4,256 # 110a0100 + 3bc09764: c7d8 sw a4,12(a5) + 3bc09766: 0f131737 lui a4,0xf131 + 3bc0976a: 61470713 addi a4,a4,1556 # f131614 + 3bc0976e: cb98 sw a4,16(a5) + 3bc09770: 00151737 lui a4,0x151 + 3bc09774: 0749 addi a4,a4,18 + 3bc09776: cbd8 sw a4,20(a5) + 3bc09778: 0007ac23 sw zero,24(a5) # 8000018 + 3bc0977c: 10000713 li a4,256 + 3bc09780: cfd8 sw a4,28(a5) + 3bc09782: 86014737 lui a4,0x86014 + 3bc09786: 53270713 addi a4,a4,1330 # ffffffff86014532 <__BL2_END__+0xffffffff4a401122> + 3bc0978a: d398 sw a4,32(a5) + 3bc0978c: 471d li a4,7 + 3bc0978e: d3d8 sw a4,36(a5) + 3bc09790: 76012737 lui a4,0x76012 + 3bc09794: 34570713 addi a4,a4,837 # 76012345 <__BL2_END__+0x3a3fef35> + 3bc09798: bdad j 3bc09612 + +000000003bc0979a : + 3bc0979a: 8082 ret + +000000003bc0979c : + 3bc0979c: 63746737 lui a4,0x63746 + 3bc097a0: 080047b7 lui a5,0x8004 + 3bc097a4: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32f61> + 3bc097a8: c7d8 sw a4,12(a5) + 3bc097aa: 14000737 lui a4,0x14000 + 3bc097ae: c3f8 sw a4,68(a5) + 3bc097b0: 470d li a4,3 + 3bc097b2: d7f8 sw a4,108(a5) + 3bc097b4: 979c06b7 lui a3,0x979c0 + 3bc097b8: 10078713 addi a4,a5,256 # 8004100 + 3bc097bc: c734 sw a3,72(a4) + 3bc097be: 810416b7 lui a3,0x81041 + 3bc097c2: 40068693 addi a3,a3,1024 # ffffffff81041400 <__BL2_END__+0xffffffff4542dff0> + 3bc097c6: c394 sw a3,0(a5) + 3bc097c8: 006a06b7 lui a3,0x6a0 + 3bc097cc: 0207a823 sw zero,48(a5) + 3bc097d0: 0685 addi a3,a3,1 + 3bc097d2: dbd4 sw a3,52(a5) + 3bc097d4: 000206b7 lui a3,0x20 + 3bc097d8: df94 sw a3,56(a5) + 3bc097da: 002016b7 lui a3,0x201 + 3bc097de: 07068693 addi a3,a3,112 # 201070 <__BSS_SIZE__+0x1fb460> + 3bc097e2: cbb4 sw a3,80(a5) + 3bc097e4: 005106b7 lui a3,0x510 + 3bc097e8: 0607a023 sw zero,96(a5) + 3bc097ec: 02c68693 addi a3,a3,44 # 51002c <__BSS_SIZE__+0x50a41c> + 3bc097f0: 6641 lui a2,0x10 + 3bc097f2: d3f4 sw a3,100(a5) + 3bc097f4: 04360613 addi a2,a2,67 # 10043 <__BSS_SIZE__+0xa433> + 3bc097f8: 08078693 addi a3,a5,128 + 3bc097fc: cab0 sw a2,80(a3) + 3bc097fe: 03730637 lui a2,0x3730 + 3bc09802: 0c07aa23 sw zero,212(a5) + 3bc09806: 04060613 addi a2,a2,64 # 3730040 <__BSS_SIZE__+0x372a430> + 3bc0980a: cef0 sw a2,92(a3) + 3bc0980c: 00800637 lui a2,0x800 + 3bc09810: d2b0 sw a2,96(a3) + 3bc09812: 0a0116b7 lui a3,0xa011 + 3bc09816: 61068693 addi a3,a3,1552 # a011610 + 3bc0981a: c314 sw a3,0(a4) + 3bc0981c: 000306b7 lui a3,0x30 + 3bc09820: 41468693 addi a3,a3,1044 # 30414 <__BSS_SIZE__+0x2a804> + 3bc09824: c354 sw a3,4(a4) + 3bc09826: 030406b7 lui a3,0x3040 + 3bc0982a: 40868693 addi a3,a3,1032 # 3040408 <__BSS_SIZE__+0x303a7f8> + 3bc0982e: c714 sw a3,8(a4) + 3bc09830: 668d lui a3,0x3 + 3bc09832: 0691 addi a3,a3,4 + 3bc09834: c754 sw a3,12(a4) + 3bc09836: 050206b7 lui a3,0x5020 + 3bc0983a: 40668693 addi a3,a3,1030 # 5020406 + 3bc0983e: cb14 sw a3,16(a4) + 3bc09840: 010106b7 lui a3,0x1010 + 3bc09844: 30368693 addi a3,a3,771 # 1010303 <__BSS_SIZE__+0x100a6f3> + 3bc09848: cb54 sw a3,20(a4) + 3bc0984a: 50300693 li a3,1283 + 3bc0984e: d314 sw a3,32(a4) + 3bc09850: 048586b7 lui a3,0x4858 + 3bc09854: 18078713 addi a4,a5,384 + 3bc09858: 30268693 addi a3,a3,770 # 4858302 + 3bc0985c: cb14 sw a3,16(a4) + 3bc0985e: 000706b7 lui a3,0x70 + 3bc09862: 10268693 addi a3,a3,258 # 70102 <__BSS_SIZE__+0x6a4f2> + 3bc09866: cb54 sw a3,20(a4) + 3bc09868: 07c136b7 lui a3,0x7c13 + 3bc0986c: 12168693 addi a3,a3,289 # 7c13121 + 3bc09870: cf14 sw a3,24(a4) + 3bc09872: 02100693 li a3,33 + 3bc09876: cf54 sw a3,28(a4) + 3bc09878: c04006b7 lui a3,0xc0400 + 3bc0987c: 06e1 addi a3,a3,24 + 3bc0987e: d314 sw a3,32(a4) + 3bc09880: 00fe06b7 lui a3,0xfe0 + 3bc09884: 0ff68693 addi a3,a3,255 # fe00ff <__BSS_SIZE__+0xfda4ef> + 3bc09888: d354 sw a3,36(a4) + 3bc0988a: 800006b7 lui a3,0x80000 + 3bc0988e: d714 sw a3,40(a4) + 3bc09890: 2c100693 li a3,705 + 3bc09894: db14 sw a3,48(a4) + 3bc09896: 4685 li a3,1 + 3bc09898: c334 sw a3,64(a4) + 3bc0989a: 6609 lui a2,0x2 + 3bc0989c: 001405b7 lui a1,0x140 + 3bc098a0: f1f60613 addi a2,a2,-225 # 1f1f <__BSS_SIZE__-0x3cf1> + 3bc098a4: c374 sw a3,68(a4) + 3bc098a6: 70758593 addi a1,a1,1799 # 140707 <__BSS_SIZE__+0x13aaf7> + 3bc098aa: 20078713 addi a4,a5,512 + 3bc098ae: c310 sw a2,0(a4) + 3bc098b0: c34c sw a1,4(a4) + 3bc098b2: 2007a423 sw zero,520(a5) + 3bc098b6: 1f0005b7 lui a1,0x1f000 + 3bc098ba: c74c sw a1,12(a4) + 3bc098bc: cb10 sw a2,16(a4) + 3bc098be: 050f0637 lui a2,0x50f0 + 3bc098c2: 50560613 addi a2,a2,1285 # 50f0505 + 3bc098c6: cb50 sw a2,20(a4) + 3bc098c8: 06060637 lui a2,0x6060 + 3bc098cc: 60560613 addi a2,a2,1541 # 6060605 + 3bc098d0: cf10 sw a2,24(a4) + 3bc098d2: 60600613 li a2,1542 + 3bc098d6: cf50 sw a2,28(a4) + 3bc098d8: 6611 lui a2,0x4 + 3bc098da: f3f60593 addi a1,a2,-193 # 3f3f <__BSS_SIZE__-0x1cd1> + 3bc098de: d30c sw a1,32(a4) + 3bc098e0: 050505b7 lui a1,0x5050 + 3bc098e4: 50558593 addi a1,a1,1285 # 5050505 + 3bc098e8: d34c sw a1,36(a4) + 3bc098ea: d70c sw a1,40(a4) + 3bc098ec: 001f25b7 lui a1,0x1f2 + 3bc098f0: f0558593 addi a1,a1,-251 # 1f1f05 <__BSS_SIZE__+0x1ec2f5> + 3bc098f4: d74c sw a1,44(a4) + 3bc098f6: 070105b7 lui a1,0x7010 + 3bc098fa: 70858593 addi a1,a1,1800 # 7010708 + 3bc098fe: c32c sw a1,64(a4) + 3bc09900: 2407a223 sw zero,580(a5) + 3bc09904: f8560613 addi a2,a2,-123 + 3bc09908: cb30 sw a2,80(a4) + 3bc0990a: 02000613 li a2,32 + 3bc0990e: cb70 sw a2,84(a4) + 3bc09910: 10000637 lui a2,0x10000 + 3bc09914: 0a860613 addi a2,a2,168 # 100000a8 + 3bc09918: cf70 sw a2,92(a4) + 3bc0991a: d370 sw a2,100(a4) + 3bc0991c: d770 sw a2,108(a4) + 3bc0991e: 3007a023 sw zero,768(a5) + 3bc09922: 3007a223 sw zero,772(a5) + 3bc09926: 3007a623 sw zero,780(a5) + 3bc0992a: 30078713 addi a4,a5,768 + 3bc0992e: d314 sw a3,32(a4) + 3bc09930: 3607a623 sw zero,876(a5) + 3bc09934: 40078713 addi a4,a5,1024 + 3bc09938: 4645 li a2,17 + 3bc0993a: c310 sw a2,0(a4) + 3bc0993c: 6619 lui a2,0x6 + 3bc0993e: c350 sw a2,4(a4) + 3bc09940: c710 sw a2,8(a4) + 3bc09942: 48078713 addi a4,a5,1152 + 3bc09946: cb14 sw a3,16(a4) + 3bc09948: 489d li a7,7 + 3bc0994a: 01172a23 sw a7,20(a4) # 14000014 + 3bc0994e: 06a00813 li a6,106 + 3bc09952: 6505 lui a0,0x1 + 3bc09954: 01072c23 sw a6,24(a4) + 3bc09958: e0750513 addi a0,a0,-505 # e07 <__BSS_SIZE__-0x4e09> + 3bc0995c: 01a805b7 lui a1,0x1a80 + 3bc09960: cf48 sw a0,28(a4) + 3bc09962: 1a858593 addi a1,a1,424 # 1a801a8 <__BSS_SIZE__+0x1a7a598> + 3bc09966: d30c sw a1,32(a4) + 3bc09968: db50 sw a2,52(a4) + 3bc0996a: df10 sw a2,56(a4) + 3bc0996c: 50078713 addi a4,a5,1280 + 3bc09970: c334 sw a3,64(a4) + 3bc09972: 05172223 sw a7,68(a4) + 3bc09976: 05072423 sw a6,72(a4) + 3bc0997a: c768 sw a0,76(a4) + 3bc0997c: cb2c sw a1,80(a4) + 3bc0997e: d370 sw a2,100(a4) + 3bc09980: d730 sw a2,104(a4) + 3bc09982: 58078713 addi a4,a5,1408 + 3bc09986: db34 sw a3,112(a4) + 3bc09988: 07172a23 sw a7,116(a4) + 3bc0998c: 07072c23 sw a6,120(a4) + 3bc09990: df68 sw a0,124(a4) + 3bc09992: 60078793 addi a5,a5,1536 + 3bc09996: c38c sw a1,0(a5) + 3bc09998: 8082 ret + +000000003bc0999a : + 3bc0999a: 080047b7 lui a5,0x8004 + 3bc0999e: 4709 li a4,2 + 3bc099a0: db98 sw a4,48(a5) + 3bc099a2: 00400737 lui a4,0x400 + 3bc099a6: 0761 addi a4,a4,24 + 3bc099a8: 18078693 addi a3,a5,384 # 8004180 + 3bc099ac: d298 sw a4,32(a3) + 3bc099ae: 0800a737 lui a4,0x800a + 3bc099b2: 00072a23 sw zero,20(a4) # 800a014 + 3bc099b6: 63746737 lui a4,0x63746 + 3bc099ba: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32f61> + 3bc099be: c7d8 sw a4,12(a5) + 3bc099c0: 08000737 lui a4,0x8000 + 3bc099c4: c3f8 sw a4,68(a5) + 3bc099c6: 8082 ret + +000000003bc099c8 : + 3bc099c8: 080047b7 lui a5,0x8004 + 3bc099cc: c0400737 lui a4,0xc0400 + 3bc099d0: 0207a823 sw zero,48(a5) # 8004030 + 3bc099d4: 0761 addi a4,a4,24 + 3bc099d6: 1ae7a023 sw a4,416(a5) + 3bc099da: 6705 lui a4,0x1 + 3bc099dc: 177d addi a4,a4,-1 + 3bc099de: 0800a6b7 lui a3,0x800a + 3bc099e2: cad8 sw a4,20(a3) + 3bc099e4: 63746737 lui a4,0x63746 + 3bc099e8: 37170713 addi a4,a4,881 # 63746371 <__BL2_END__+0x27b32f61> + 3bc099ec: c7d8 sw a4,12(a5) + 3bc099ee: 14000737 lui a4,0x14000 + 3bc099f2: c3f8 sw a4,68(a5) + 3bc099f4: 8082 ret + +000000003bc099f6 : + 3bc099f6: 080047b7 lui a5,0x8004 + 3bc099fa: 4398 lw a4,0(a5) + 3bc099fc: 0000a797 auipc a5,0xa + 3bc09a00: 9ee7aa23 sw a4,-1548(a5) # 3bc133f0 + 3bc09a04: 34c7368b extu a3,a4,13,12 + 3bc09a08: 4785 li a5,1 + 3bc09a0a: 9f95 subw a5,a5,a3 + 3bc09a0c: 40f557bb sraw a5,a0,a5 + 3bc09a10: 01e7571b srliw a4,a4,0x1e + 3bc09a14: 4689 li a3,2 + 3bc09a16: 40e6873b subw a4,a3,a4 + 3bc09a1a: 0ff7f793 andi a5,a5,255 + 3bc09a1e: 40e7d7bb sraw a5,a5,a4 + 3bc09a22: 0ff7f793 andi a5,a5,255 + 3bc09a26: ffb7861b addiw a2,a5,-5 + 3bc09a2a: 4711 li a4,4 + 3bc09a2c: 1ac76f63 bltu a4,a2,3bc09bea + 3bc09a30: 00002717 auipc a4,0x2 + 3bc09a34: 9f070713 addi a4,a4,-1552 # 3bc0b420 + 3bc09a38: 54c7478b lurw a5,a4,a2,2 + 3bc09a3c: 2781 sext.w a5,a5 + 3bc09a3e: 97ba add a5,a5,a4 + 3bc09a40: 8782 jr a5 + 3bc09a42: 00510737 lui a4,0x510 + 3bc09a46: 080047b7 lui a5,0x8004 + 3bc09a4a: 0765 addi a4,a4,25 + 3bc09a4c: d3f8 sw a4,100(a5) + 3bc09a4e: 0b011737 lui a4,0xb011 + 3bc09a52: 61070713 addi a4,a4,1552 # b011610 + 3bc09a56: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09a5a: 50200713 li a4,1282 + 3bc09a5e: 12e7a023 sw a4,288(a5) + 3bc09a62: 08004637 lui a2,0x8004 + 3bc09a66: 6709 lui a4,0x2 + 3bc09a68: 20060793 addi a5,a2,512 # 8004200 + 3bc09a6c: f1f70713 addi a4,a4,-225 # 1f1f <__BSS_SIZE__-0x3cf1> + 3bc09a70: 003f06b7 lui a3,0x3f0 + 3bc09a74: c398 sw a4,0(a5) + 3bc09a76: 60668693 addi a3,a3,1542 # 3f0606 <__BSS_SIZE__+0x3ea9f6> + 3bc09a7a: c3d4 sw a3,4(a5) + 3bc09a7c: 20062423 sw zero,520(a2) + 3bc09a80: 1f1f06b7 lui a3,0x1f1f0 + 3bc09a84: c7d4 sw a3,12(a5) + 3bc09a86: cb98 sw a4,16(a5) + 3bc09a88: 040f0737 lui a4,0x40f0 + 3bc09a8c: 40470713 addi a4,a4,1028 # 40f0404 <__BSS_SIZE__+0x40ea7f4> + 3bc09a90: cbd8 sw a4,20(a5) + 3bc09a92: 04040737 lui a4,0x4040 + 3bc09a96: 40470713 addi a4,a4,1028 # 4040404 <__BSS_SIZE__+0x403a7f4> + 3bc09a9a: cf98 sw a4,24(a5) + 3bc09a9c: 40400693 li a3,1028 + 3bc09aa0: cfd4 sw a3,28(a5) + 3bc09aa2: 6691 lui a3,0x4 + 3bc09aa4: f3f68693 addi a3,a3,-193 # 3f3f <__BSS_SIZE__-0x1cd1> + 3bc09aa8: d394 sw a3,32(a5) + 3bc09aaa: d3d8 sw a4,36(a5) + 3bc09aac: d798 sw a4,40(a5) + 3bc09aae: 001f2737 lui a4,0x1f2 + 3bc09ab2: f0470713 addi a4,a4,-252 # 1f1f04 <__BSS_SIZE__+0x1ec2f4> + 3bc09ab6: d7d8 sw a4,44(a5) + 3bc09ab8: a289 j 3bc09bfa + 3bc09aba: 00510737 lui a4,0x510 + 3bc09abe: 080047b7 lui a5,0x8004 + 3bc09ac2: 02c70713 addi a4,a4,44 # 51002c <__BSS_SIZE__+0x50a41c> + 3bc09ac6: d3f8 sw a4,100(a5) + 3bc09ac8: 0a011737 lui a4,0xa011 + 3bc09acc: 61070713 addi a4,a4,1552 # a011610 + 3bc09ad0: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09ad4: 50300713 li a4,1283 + 3bc09ad8: 12e7a023 sw a4,288(a5) + 3bc09adc: 08004637 lui a2,0x8004 + 3bc09ae0: 6709 lui a4,0x2 + 3bc09ae2: 20060793 addi a5,a2,512 # 8004200 + 3bc09ae6: f1f70713 addi a4,a4,-225 # 1f1f <__BSS_SIZE__-0x3cf1> + 3bc09aea: 003f06b7 lui a3,0x3f0 + 3bc09aee: c398 sw a4,0(a5) + 3bc09af0: 70768693 addi a3,a3,1799 # 3f0707 <__BSS_SIZE__+0x3eaaf7> + 3bc09af4: c3d4 sw a3,4(a5) + 3bc09af6: 20062423 sw zero,520(a2) + 3bc09afa: 1f0006b7 lui a3,0x1f000 + 3bc09afe: c7d4 sw a3,12(a5) + 3bc09b00: cb98 sw a4,16(a5) + 3bc09b02: 050f0737 lui a4,0x50f0 + 3bc09b06: 50570713 addi a4,a4,1285 # 50f0505 + 3bc09b0a: cbd8 sw a4,20(a5) + 3bc09b0c: 05050737 lui a4,0x5050 + 3bc09b10: 50570713 addi a4,a4,1285 # 5050505 + 3bc09b14: cf98 sw a4,24(a5) + 3bc09b16: 50500693 li a3,1285 + 3bc09b1a: cfd4 sw a3,28(a5) + 3bc09b1c: 6691 lui a3,0x4 + 3bc09b1e: f3f68693 addi a3,a3,-193 # 3f3f <__BSS_SIZE__-0x1cd1> + 3bc09b22: d394 sw a3,32(a5) + 3bc09b24: d3d8 sw a4,36(a5) + 3bc09b26: d798 sw a4,40(a5) + 3bc09b28: 001f2737 lui a4,0x1f2 + 3bc09b2c: f0570713 addi a4,a4,-251 # 1f1f05 <__BSS_SIZE__+0x1ec2f5> + 3bc09b30: b759 j 3bc09ab6 + 3bc09b32: 00510737 lui a4,0x510 + 3bc09b36: 080047b7 lui a5,0x8004 + 3bc09b3a: 02b70713 addi a4,a4,43 # 51002b <__BSS_SIZE__+0x50a41b> + 3bc09b3e: d3f8 sw a4,100(a5) + 3bc09b40: 0b0f1737 lui a4,0xb0f1 + 3bc09b44: 61070713 addi a4,a4,1552 # b0f1610 + 3bc09b48: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09b4c: 50300713 li a4,1283 + 3bc09b50: 12e7a023 sw a4,288(a5) + 3bc09b54: 08004637 lui a2,0x8004 + 3bc09b58: 6709 lui a4,0x2 + 3bc09b5a: 20060793 addi a5,a2,512 # 8004200 + 3bc09b5e: f1f70713 addi a4,a4,-225 # 1f1f <__BSS_SIZE__-0x3cf1> + 3bc09b62: 000706b7 lui a3,0x70 + 3bc09b66: c398 sw a4,0(a5) + 3bc09b68: 70768693 addi a3,a3,1799 # 70707 <__BSS_SIZE__+0x6aaf7> + 3bc09b6c: c3d4 sw a3,4(a5) + 3bc09b6e: 20062423 sw zero,520(a2) + 3bc09b72: 1f0006b7 lui a3,0x1f000 + 3bc09b76: c7d4 sw a3,12(a5) + 3bc09b78: cb98 sw a4,16(a5) + 3bc09b7a: 060f0737 lui a4,0x60f0 + 3bc09b7e: 60670713 addi a4,a4,1542 # 60f0606 + 3bc09b82: cbd8 sw a4,20(a5) + 3bc09b84: 06060737 lui a4,0x6060 + 3bc09b88: 60670713 addi a4,a4,1542 # 6060606 + 3bc09b8c: cf98 sw a4,24(a5) + 3bc09b8e: 60600693 li a3,1542 + 3bc09b92: cfd4 sw a3,28(a5) + 3bc09b94: 6691 lui a3,0x4 + 3bc09b96: f3f68693 addi a3,a3,-193 # 3f3f <__BSS_SIZE__-0x1cd1> + 3bc09b9a: d394 sw a3,32(a5) + 3bc09b9c: d3d8 sw a4,36(a5) + 3bc09b9e: d798 sw a4,40(a5) + 3bc09ba0: 001f2737 lui a4,0x1f2 + 3bc09ba4: f0670713 addi a4,a4,-250 # 1f1f06 <__BSS_SIZE__+0x1ec2f6> + 3bc09ba8: b739 j 3bc09ab6 + 3bc09baa: 00510737 lui a4,0x510 + 3bc09bae: 080047b7 lui a5,0x8004 + 3bc09bb2: 04170713 addi a4,a4,65 # 510041 <__BSS_SIZE__+0x50a431> + 3bc09bb6: d3f8 sw a4,100(a5) + 3bc09bb8: 0b0f1737 lui a4,0xb0f1 + 3bc09bbc: 61070713 addi a4,a4,1552 # b0f1610 + 3bc09bc0: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09bc4: 50400713 li a4,1284 + 3bc09bc8: b761 j 3bc09b50 + 3bc09bca: 00510737 lui a4,0x510 + 3bc09bce: 080047b7 lui a5,0x8004 + 3bc09bd2: 06e70713 addi a4,a4,110 # 51006e <__BSS_SIZE__+0x50a45e> + 3bc09bd6: d3f8 sw a4,100(a5) + 3bc09bd8: 0b0f1737 lui a4,0xb0f1 + 3bc09bdc: 61070713 addi a4,a4,1552 # b0f1610 + 3bc09be0: 10e7a023 sw a4,256(a5) # 8004100 + 3bc09be4: 50500713 li a4,1285 + 3bc09be8: b7a5 j 3bc09b50 + 3bc09bea: 4719 li a4,6 + 3bc09bec: eee788e3 beq a5,a4,3bc09adc + 3bc09bf0: 00f74c63 blt a4,a5,3bc09c08 + 3bc09bf4: 4715 li a4,5 + 3bc09bf6: e6e786e3 beq a5,a4,3bc09a62 + 3bc09bfa: 080047b7 lui a5,0x8004 + 3bc09bfe: 4709 li a4,2 + 3bc09c00: d3b8 sw a4,96(a5) + 3bc09c02: 0607a023 sw zero,96(a5) # 8004060 + 3bc09c06: 8082 ret + 3bc09c08: 37e5 addiw a5,a5,-7 + 3bc09c0a: 4709 li a4,2 + 3bc09c0c: fef767e3 bltu a4,a5,3bc09bfa + 3bc09c10: b791 j 3bc09b54 + +000000003bc09c12 : + 3bc09c12: 03020737 lui a4,0x3020 + 3bc09c16: 080007b7 lui a5,0x8000 + 3bc09c1a: 10070713 addi a4,a4,256 # 3020100 <__BSS_SIZE__+0x301a4f0> + 3bc09c1e: c398 sw a4,0(a5) + 3bc09c20: 07060737 lui a4,0x7060 + 3bc09c24: 50470713 addi a4,a4,1284 # 7060504 + 3bc09c28: c3d8 sw a4,4(a5) + 3bc09c2a: 0b0a1737 lui a4,0xb0a1 + 3bc09c2e: 90870713 addi a4,a4,-1784 # b0a0908 + 3bc09c32: c798 sw a4,8(a5) + 3bc09c34: 0f0e1737 lui a4,0xf0e1 + 3bc09c38: d0c70713 addi a4,a4,-756 # f0e0d0c + 3bc09c3c: c7d8 sw a4,12(a5) + 3bc09c3e: 13121737 lui a4,0x13121 + 3bc09c42: 11070713 addi a4,a4,272 # 13121110 + 3bc09c46: cb98 sw a4,16(a5) + 3bc09c48: 00161737 lui a4,0x161 + 3bc09c4c: 51470713 addi a4,a4,1300 # 161514 <__BSS_SIZE__+0x15b904> + 3bc09c50: cbd8 sw a4,20(a5) + 3bc09c52: 0007ac23 sw zero,24(a5) # 8000018 + 3bc09c56: 10000593 li a1,256 + 3bc09c5a: 76543737 lui a4,0x76543 + 3bc09c5e: cfcc sw a1,28(a5) + 3bc09c60: 21070713 addi a4,a4,528 # 76543210 <__BL2_END__+0x3a92fe00> + 3bc09c64: d398 sw a4,32(a5) + 3bc09c66: 46a1 li a3,8 + 3bc09c68: d3d4 sw a3,36(a5) + 3bc09c6a: d798 sw a4,40(a5) + 3bc09c6c: d7d4 sw a3,44(a5) + 3bc09c6e: 007f0737 lui a4,0x7f0 + 3bc09c72: 0407a023 sw zero,64(a5) + 3bc09c76: 0735 addi a4,a4,13 + 3bc09c78: c3f8 sw a4,68(a5) + 3bc09c7a: 0407a423 sw zero,72(a5) + 3bc09c7e: 4741 li a4,16 + 3bc09c80: c7f8 sw a4,76(a5) + 3bc09c82: 4611 li a2,4 + 3bc09c84: 0c001737 lui a4,0xc001 + 3bc09c88: cbb0 sw a2,80(a5) + 3bc09c8a: b0070713 addi a4,a4,-1280 # c000b00 + 3bc09c8e: cbf8 sw a4,84(a5) + 3bc09c90: 09160737 lui a4,0x9160 + 3bc09c94: 04f70713 addi a4,a4,79 # 916004f + 3bc09c98: cfb8 sw a4,88(a5) + 3bc09c9a: 040008b7 lui a7,0x4000 + 3bc09c9e: 0407ae23 sw zero,92(a5) + 3bc09ca2: 37088713 addi a4,a7,880 # 4000370 <__BSS_SIZE__+0x3ffa760> + 3bc09ca6: d3b8 sw a4,96(a5) + 3bc09ca8: 0e001737 lui a4,0xe001 + 3bc09cac: 94070713 addi a4,a4,-1728 # e000940 + 3bc09cb0: d3f8 sw a4,100(a5) + 3bc09cb2: 00800737 lui a4,0x800 + 3bc09cb6: d7b8 sw a4,104(a5) + 3bc09cb8: 10800713 li a4,264 + 3bc09cbc: dbb8 sw a4,112(a5) + 3bc09cbe: 00072737 lui a4,0x72 + 3bc09cc2: dbf8 sw a4,116(a5) + 3bc09cc4: 1f00e6b7 lui a3,0x1f00e + 3bc09cc8: 08078713 addi a4,a5,128 + 3bc09ccc: c314 sw a3,0(a4) + 3bc09cce: 010916b7 lui a3,0x1091 + 3bc09cd2: 06bd addi a3,a3,15 + 3bc09cd4: c354 sw a3,4(a4) + 3bc09cd6: 0a0106b7 lui a3,0xa010 + 3bc09cda: 11468693 addi a3,a3,276 # a010114 + 3bc09cde: c714 sw a3,8(a4) + 3bc09ce0: aaaa06b7 lui a3,0xaaaa0 + 3bc09ce4: 08f68693 addi a3,a3,143 # ffffffffaaaa008f <__BL2_END__+0xffffffff6ee8cc7f> + 3bc09ce8: c754 sw a3,12(a4) + 3bc09cea: 6691 lui a3,0x4 + 3bc09cec: 80068513 addi a0,a3,-2048 # 3800 <__BSS_SIZE__-0x2410> + 3bc09cf0: cb08 sw a0,16(a4) + 3bc09cf2: 6505 lui a0,0x1 + 3bc09cf4: 80150813 addi a6,a0,-2047 # 801 <__BSS_SIZE__-0x540f> + 3bc09cf8: 01072a23 sw a6,20(a4) # 72014 <__BSS_SIZE__+0x6c404> + 3bc09cfc: 07400837 lui a6,0x7400 + 3bc09d00: 54080813 addi a6,a6,1344 # 7400540 + 3bc09d04: 03072023 sw a6,32(a4) + 3bc09d08: 01420837 lui a6,0x1420 + 3bc09d0c: 50480813 addi a6,a6,1284 # 1420504 <__BSS_SIZE__+0x141a8f4> + 3bc09d10: 03072223 sw a6,36(a4) + 3bc09d14: 00550837 lui a6,0x550 + 3bc09d18: 0829 addi a6,a6,10 + 3bc09d1a: 03072423 sw a6,40(a4) + 3bc09d1e: 00554837 lui a6,0x554 + 3bc09d22: c5a80813 addi a6,a6,-934 # 553c5a <__BSS_SIZE__+0x54e04a> + 3bc09d26: 03072623 sw a6,44(a4) + 3bc09d2a: 00aaa837 lui a6,0xaaa + 3bc09d2e: 5c380813 addi a6,a6,1475 # aaa5c3 <__BSS_SIZE__+0xaa49b3> + 3bc09d32: 03072823 sw a6,48(a4) + 3bc09d36: 00aaf837 lui a6,0xaaf + 3bc09d3a: 0f080813 addi a6,a6,240 # aaf0f0 <__BSS_SIZE__+0xaa94e0> + 3bc09d3e: 03072a23 sw a6,52(a4) + 3bc09d42: 1e001837 lui a6,0x1e001 + 3bc09d46: f0f80813 addi a6,a6,-241 # 1e000f0f + 3bc09d4a: 03072c23 sw a6,56(a4) + 3bc09d4e: 00084837 lui a6,0x84 + 3bc09d52: e1380813 addi a6,a6,-493 # 83e13 <__BSS_SIZE__+0x7e203> + 3bc09d56: 03072e23 sw a6,60(a4) + 3bc09d5a: 00030837 lui a6,0x30 + 3bc09d5e: 0e07a823 sw zero,240(a5) + 3bc09d62: 03380813 addi a6,a6,51 # 30033 <__BSS_SIZE__+0x2a423> + 3bc09d66: 07072a23 sw a6,116(a4) + 3bc09d6a: 00210837 lui a6,0x210 + 3bc09d6e: 02c80813 addi a6,a6,44 # 21002c <__BSS_SIZE__+0x20a41c> + 3bc09d72: 07072c23 sw a6,120(a4) + 3bc09d76: 00370837 lui a6,0x370 + 3bc09d7a: 0859 addi a6,a6,22 + 3bc09d7c: 07072e23 sw a6,124(a4) + 3bc09d80: 10078713 addi a4,a5,256 + 3bc09d84: 01172023 sw a7,0(a4) + 3bc09d88: 1007a223 sw zero,260(a5) + 3bc09d8c: 1007a623 sw zero,268(a5) + 3bc09d90: 1007a823 sw zero,272(a5) + 3bc09d94: 1007aa23 sw zero,276(a5) + 3bc09d98: 681d lui a6,0x7 + 3bc09d9a: 1007ac23 sw zero,280(a5) + 3bc09d9e: a1080813 addi a6,a6,-1520 # 6a10 <__BSS_SIZE__+0xe00> + 3bc09da2: 01072e23 sw a6,28(a4) + 3bc09da6: 1207a023 sw zero,288(a5) + 3bc09daa: ef700813 li a6,-265 + 3bc09dae: 03072223 sw a6,36(a4) + 3bc09db2: 487d li a6,31 + 3bc09db4: 03072423 sw a6,40(a4) + 3bc09db8: 4805 li a6,1 + 3bc09dba: 03072623 sw a6,44(a4) + 3bc09dbe: 10100813 li a6,257 + 3bc09dc2: 03072823 sw a6,48(a4) + 3bc09dc6: db4c sw a1,52(a4) + 3bc09dc8: 48d1 li a7,20 + 3bc09dca: 03172c23 sw a7,56(a4) + 3bc09dce: 1407a023 sw zero,320(a5) + 3bc09dd2: 1407a223 sw zero,324(a5) + 3bc09dd6: 80850e13 addi t3,a0,-2040 + 3bc09dda: 05c72423 sw t3,72(a4) + 3bc09dde: 1407a623 sw zero,332(a5) + 3bc09de2: 4895 li a7,5 + 3bc09de4: 05172823 sw a7,80(a4) + 3bc09de8: 05072a23 sw a6,84(a4) + 3bc09dec: 1407ac23 sw zero,344(a5) + 3bc09df0: 00333837 lui a6,0x333 + 3bc09df4: 1407ae23 sw zero,348(a5) + 3bc09df8: 33180813 addi a6,a6,817 # 333331 <__BSS_SIZE__+0x32d721> + 3bc09dfc: 1607a223 sw zero,356(a5) + 3bc09e00: 07072423 sw a6,104(a4) + 3bc09e04: 1607a623 sw zero,364(a5) + 3bc09e08: 1607a823 sw zero,368(a5) + 3bc09e0c: db6c sw a1,116(a4) + 3bc09e0e: 000205b7 lui a1,0x20 + 3bc09e12: 18078713 addi a4,a5,384 + 3bc09e16: 05c1 addi a1,a1,16 + 3bc09e18: c30c sw a1,0(a4) + 3bc09e1a: 1807a223 sw zero,388(a5) + 3bc09e1e: 000505b7 lui a1,0x50 + 3bc09e22: 1807a423 sw zero,392(a5) + 3bc09e26: 40058593 addi a1,a1,1024 # 50400 <__BSS_SIZE__+0x4a7f0> + 3bc09e2a: c74c sw a1,12(a4) + 3bc09e2c: 000215b7 lui a1,0x21 + 3bc09e30: 20e58593 addi a1,a1,526 # 2120e <__BSS_SIZE__+0x1b5fe> + 3bc09e34: cb0c sw a1,16(a4) + 3bc09e36: 2007a023 sw zero,512(a5) + 3bc09e3a: 20078713 addi a4,a5,512 + 3bc09e3e: 44000593 li a1,1088 + 3bc09e42: c34c sw a1,4(a4) + 3bc09e44: 2007a423 sw zero,520(a5) + 3bc09e48: 2207a023 sw zero,544(a5) + 3bc09e4c: d34c sw a1,36(a4) + 3bc09e4e: 2207a423 sw zero,552(a5) + 3bc09e52: 4007a023 sw zero,1024(a5) + 3bc09e56: 4007a223 sw zero,1028(a5) + 3bc09e5a: 4007a423 sw zero,1032(a5) + 3bc09e5e: 4007a623 sw zero,1036(a5) + 3bc09e62: 001005b7 lui a1,0x100 + 3bc09e66: 40078713 addi a4,a5,1024 + 3bc09e6a: e4b7558b swd a1,a1,(a4),2,3 + 3bc09e6e: 4007ac23 sw zero,1048(a5) + 3bc09e72: 04068693 addi a3,a3,64 + 3bc09e76: cf54 sw a3,28(a4) + 3bc09e78: 000416b7 lui a3,0x41 + 3bc09e7c: 50078713 addi a4,a5,1280 + 3bc09e80: 0685 addi a3,a3,1 + 3bc09e82: e0b7568b swd a3,a1,(a4),0,3 + 3bc09e86: 5007a423 sw zero,1288(a5) + 3bc09e8a: 5007a623 sw zero,1292(a5) + 3bc09e8e: cb10 sw a2,16(a4) + 3bc09e90: 5007aa23 sw zero,1300(a5) + 3bc09e94: 5007ac23 sw zero,1304(a5) + 3bc09e98: 5007ae23 sw zero,1308(a5) + 3bc09e9c: 480d li a6,3 + 3bc09e9e: 03072023 sw a6,32(a4) + 3bc09ea2: c334 sw a3,64(a4) + 3bc09ea4: c36c sw a1,68(a4) + 3bc09ea6: 5407a423 sw zero,1352(a5) + 3bc09eaa: 5407a623 sw zero,1356(a5) + 3bc09eae: cb30 sw a2,80(a4) + 3bc09eb0: 5407aa23 sw zero,1364(a5) + 3bc09eb4: 5407ac23 sw zero,1368(a5) + 3bc09eb8: 5407ae23 sw zero,1372(a5) + 3bc09ebc: 07072023 sw a6,96(a4) + 3bc09ec0: 08001737 lui a4,0x8001 + 3bc09ec4: 90070793 addi a5,a4,-1792 # 8000900 + 3bc09ec8: 40000693 li a3,1024 + 3bc09ecc: c394 sw a3,0(a5) + 3bc09ece: d7d4 sw a3,44(a5) + 3bc09ed0: db94 sw a3,48(a5) + 3bc09ed2: dbd4 sw a3,52(a5) + 3bc09ed4: df94 sw a3,56(a5) + 3bc09ed6: 94072023 sw zero,-1728(a4) + 3bc09eda: 96072823 sw zero,-1680(a4) + 3bc09ede: 96072a23 sw zero,-1676(a4) + 3bc09ee2: 080806b7 lui a3,0x8080 + 3bc09ee6: 96072c23 sw zero,-1672(a4) + 3bc09eea: 40468693 addi a3,a3,1028 # 8080404 + 3bc09eee: 08081837 lui a6,0x8081 + 3bc09ef2: dff4 sw a3,124(a5) + 3bc09ef4: 80880813 addi a6,a6,-2040 # 8080808 + 3bc09ef8: 98070793 addi a5,a4,-1664 + 3bc09efc: 06400637 lui a2,0x6400 + 3bc09f00: 0107a023 sw a6,0(a5) + 3bc09f04: 64060613 addi a2,a2,1600 # 6400640 + 3bc09f08: a0070793 addi a5,a4,-1536 + 3bc09f0c: e0c7d60b swd a2,a2,(a5),0,3 + 3bc09f10: e2c7d60b swd a2,a2,(a5),1,3 + 3bc09f14: 64000f93 li t6,1600 + 3bc09f18: 01f7a823 sw t6,16(a5) + 3bc09f1c: 0d000f37 lui t5,0xd000 + 3bc09f20: 0a001337 lui t1,0xa001 + 3bc09f24: 01e7aa23 sw t5,20(a5) + 3bc09f28: b0030313 addi t1,t1,-1280 # a000b00 + 3bc09f2c: 000408b7 lui a7,0x40 + 3bc09f30: 0067ac23 sw t1,24(a5) + 3bc09f34: 40088893 addi a7,a7,1024 # 40400 <__BSS_SIZE__+0x3a7f0> + 3bc09f38: 004006b7 lui a3,0x400 + 3bc09f3c: 04068693 addi a3,a3,64 # 400040 <__BSS_SIZE__+0x3fa430> + 3bc09f40: 0117ae23 sw a7,28(a5) + 3bc09f44: d394 sw a3,32(a5) + 3bc09f46: d3d4 sw a3,36(a5) + 3bc09f48: d794 sw a3,40(a5) + 3bc09f4a: d7d4 sw a3,44(a5) + 3bc09f4c: 04000e93 li t4,64 + 3bc09f50: 03d7a823 sw t4,48(a5) + 3bc09f54: a2072a23 sw zero,-1484(a4) + 3bc09f58: 03c7ac23 sw t3,56(a5) + 3bc09f5c: 0307ae23 sw a6,60(a5) + 3bc09f60: c3b0 sw a2,64(a5) + 3bc09f62: c3f0 sw a2,68(a5) + 3bc09f64: c7b0 sw a2,72(a5) + 3bc09f66: c7f0 sw a2,76(a5) + 3bc09f68: 05f7a823 sw t6,80(a5) + 3bc09f6c: 05e7aa23 sw t5,84(a5) + 3bc09f70: 0467ac23 sw t1,88(a5) + 3bc09f74: 0517ae23 sw a7,92(a5) + 3bc09f78: d3b4 sw a3,96(a5) + 3bc09f7a: d3f4 sw a3,100(a5) + 3bc09f7c: d7b4 sw a3,104(a5) + 3bc09f7e: d7f4 sw a3,108(a5) + 3bc09f80: 07d7a823 sw t4,112(a5) + 3bc09f84: a6072a23 sw zero,-1420(a4) + 3bc09f88: 07c7ac23 sw t3,120(a5) + 3bc09f8c: 0707ae23 sw a6,124(a5) + 3bc09f90: b0072023 sw zero,-1280(a4) + 3bc09f94: b0072223 sw zero,-1276(a4) + 3bc09f98: b0070793 addi a5,a4,-1280 + 3bc09f9c: 00404837 lui a6,0x404 + 3bc09fa0: 0107a423 sw a6,8(a5) + 3bc09fa4: 90050513 addi a0,a0,-1792 + 3bc09fa8: c7c8 sw a0,12(a5) + 3bc09faa: 000716b7 lui a3,0x71 + 3bc09fae: b0072823 sw zero,-1264(a4) + 3bc09fb2: e0e68693 addi a3,a3,-498 # 70e0e <__BSS_SIZE__+0x6b1fe> + 3bc09fb6: cbd4 sw a3,20(a5) + 3bc09fb8: b0072c23 sw zero,-1256(a4) + 3bc09fbc: b0072e23 sw zero,-1252(a4) + 3bc09fc0: 40400637 lui a2,0x40400 + 3bc09fc4: d390 sw a2,32(a5) + 3bc09fc6: 05c1 addi a1,a1,16 + 3bc09fc8: d3cc sw a1,36(a5) + 3bc09fca: b2072823 sw zero,-1232(a4) + 3bc09fce: b2072a23 sw zero,-1228(a4) + 3bc09fd2: 0307ac23 sw a6,56(a5) + 3bc09fd6: dfc8 sw a0,60(a5) + 3bc09fd8: b4072023 sw zero,-1216(a4) + 3bc09fdc: c3f4 sw a3,68(a5) + 3bc09fde: b4072423 sw zero,-1208(a4) + 3bc09fe2: b4072623 sw zero,-1204(a4) + 3bc09fe6: cbb0 sw a2,80(a5) + 3bc09fe8: cbec sw a1,84(a5) + 3bc09fea: 8082 ret + 3bc09fec: 0000 unimp + ... + +000000003bc09ff0 : + 3bc09ff0: 3032 3232 312d 2d32 3032 3254 3a31 3935 2022-12-20T21:59 + 3bc0a000: 313a 2b36 3830 303a 0030 0000 0000 0000 :16+08:00....... + +000000003bc0a010 : + 3bc0a010: 624a 3832 3967 673a 6536 3835 6565 0031 Jb28g9:g6e58ee1. + 3bc0a020: 3201 504f 4e45 4253 3a49 6e20 7865 5f74 .2OPENSBI: next_ + 3bc0a030: 6461 7264 303d 2578 786c 6120 6772 3d31 addr=0x%lx arg1= + 3bc0a040: 7830 6c25 0078 0000 7830 0000 63c6 ffff 0x%lx...0x...c.. + 3bc0a050: 636c ffff 636c ffff 636c ffff 636c ffff lc..lc..lc..lc.. + 3bc0a060: 63c6 ffff 636c ffff 636c ffff 647a ffff .c..lc..lc..zd.. + 3bc0a070: 636c ffff 636c ffff 636c ffff 6422 ffff lc..lc..lc.."d.. + 3bc0a080: 636c ffff 636c ffff 6402 ffff 636c ffff lc..lc...d..lc.. + 3bc0a090: 6480 ffff 636c ffff 636c ffff 6456 ffff .d..lc..lc..Vd.. + 3bc0a0a0: 636c ffff 6474 ffff 3001 4520 523a 5345 lc..td...0 E:RES + 3bc0a0b0: 5445 253a 3a73 6425 000a 0000 0000 0000 ET:%s:%d........ + 3bc0a0c0: 3001 4520 723a 3d61 7830 6c25 0a78 0000 .0 E:ra=0x%lx... + 3bc0a0d0: 6170 696e 0063 0000 3201 5352 2e43 000a panic....2RSC... + 3bc0a0e0: 3201 4c50 534c 0a2e 0000 0000 0000 0000 .2PLLS.......... + 3bc0a0f0: 3201 4c50 454c 0a2e 0000 0000 0000 0000 .2PLLE.......... + 3bc0a100: 3201 7355 2065 6e69 6574 6e72 6c61 3320 .2Use internal 3 + 3bc0a110: 6b32 000a 0000 0000 3201 7473 6f5f 5f6e 2k.......2st_on_ + 3bc0a120: 6572 7361 6e6f 253d 0a78 0000 0000 0000 reason=%x....... + 3bc0a130: 3201 7473 6f5f 6666 725f 6165 6f73 3d6e .2st_off_reason= + 3bc0a140: 7825 000a 0000 0000 0000 249f 1746 245d %x.........$F.]$ + 3bc0a150: 1746 245d aaab 24aa 8201 0012 8101 0018 F.]$...$........ + 3bc0a160: 8201 0030 8101 0016 c906 a55a 0024 0000 ..0.......Z.$... + +000000003bc0a170 : + 3bc0a170: 3130 3332 3534 3736 3938 6261 6463 6665 0123456789abcdef + 3bc0a180: 6867 6a69 6c6b 6e6d 706f 7271 7473 7675 ghijklmnopqrstuv + 3bc0a190: 7877 7a79 0000 0000 0101 0101 0101 0101 wxyz............ + 3bc0a1a0: 3301 4920 4c3a 4549 252f 2f64 7025 302f .3 I:LIE/%d/%p/0 + 3bc0a1b0: 2578 2f78 6c25 2e75 000a 0000 0000 0000 x%x/%lu......... + 3bc0a1c0: 3201 3250 2f53 7830 6c25 2f78 7025 0a2e .2P2S/0x%lx/%p.. + ... + 3bc0a1d8: 3101 5720 4c3a 3250 4e5f 4d4f 4741 4349 .1 W:LP2_NOMAGIC + 3bc0a1e8: 000a 0000 0000 0000 3001 4520 703a 7261 .........0 E:par + 3bc0a1f8: 6d61 5f32 6b63 7573 206d 3028 2578 2f78 am2_cksum (0x%x/ + 3bc0a208: 7830 7825 0a29 0000 3201 3250 2e45 000a 0x%x)....2P2E... + 3bc0a218: 3201 5044 2f53 7830 7825 302f 2578 2e78 .2DPS/0x%x/0x%x. + 3bc0a228: 000a 0000 0000 0000 3001 4520 643a 7264 .........0 E:ddr + 3bc0a238: 705f 7261 6d61 635f 736b 6d75 2820 7830 _param_cksum (0x + 3bc0a248: 7825 302f 2578 2978 000a 0000 0000 0000 %x/0x%x)........ + 3bc0a258: 3201 5044 2e45 000a 3101 5720 443a 204c .2DPE....1 W:DL + 3bc0a268: 6163 636e 6c65 656c 2e64 4c20 616f 2064 cancelled. Load + 3bc0a278: 6c66 7361 2e68 2820 6425 2e29 000a 0000 flash. (%d)..... + 3bc0a288: 3001 4520 463a 6961 656c 2064 6f74 6c20 .0 E:Failed to l + 3bc0a298: 616f 2064 4444 2052 6170 6172 206d 2528 oad DDR param (% + 3bc0a2a8: 2964 0a2e 0000 0000 3201 3243 2f53 7830 d).......2C2S/0x + 3bc0a2b8: 7825 302f 2578 2f78 7830 7825 0a2e 0000 %x/0x%x/0x%x.... + 3bc0a2c8: 3201 6f4e 4320 3039 4c36 6920 616d 6567 .2No C906L image + 3bc0a2d8: 0a2e 0000 0000 0000 3001 4520 623a 636c .........0 E:blc + 3bc0a2e8: 5f70 6e32 5f64 7572 616e 6464 2072 3028 p_2nd_runaddr (0 + 3bc0a2f8: 2578 2978 6920 2073 6f6e 2074 6e69 4420 x%x) is not in D + 3bc0a308: 4152 2e4d 000a 0000 3001 4520 623a 636c RAM......0 E:blc + 3bc0a318: 5f70 6e32 5f64 6973 657a 2820 7830 7825 p_2nd_size (0x%x + 3bc0a328: 2029 7369 6e20 746f 6920 206e 5244 4d41 ) is not in DRAM + 3bc0a338: 0a2e 0000 0000 0000 3001 4520 623a 636c .........0 E:blc + 3bc0a348: 5f70 6e32 5f64 6b63 7573 206d 3028 2578 p_2nd_cksum (0x% + 3bc0a358: 2f78 7830 7825 0a29 0000 0000 0000 0000 x/0x%x)......... + 3bc0a368: 3001 4520 763a 7265 6669 2079 6c62 7063 .0 E:verify blcp + 3bc0a378: 3220 646e 2820 6425 0a29 0000 0000 0000 2nd (%d)....... + 3bc0a388: 3201 3243 2e45 000a 3201 534d 302f 2578 .2C2E....2MS/0x% + 3bc0a398: 2f78 7830 7825 302f 2578 2e78 000a 0000 x/0x%x/0x%x..... + 3bc0a3a8: 3201 6f4e 6d20 6e6f 7469 726f 0a2e 0000 .2No monitor.... + 3bc0a3b8: 3001 4520 6d3a 6e6f 7469 726f 725f 6e75 .0 E:monitor_run + 3bc0a3c8: 6461 7264 2820 7830 7825 2029 7369 6e20 addr (0x%x) is n + 3bc0a3d8: 746f 6920 206e 5244 4d41 0a2e 0000 0000 ot in DRAM...... + 3bc0a3e8: 3001 4520 6d3a 6e6f 7469 726f 735f 7a69 .0 E:monitor_siz + 3bc0a3f8: 2065 3028 2578 2978 6920 2073 6f6e 2074 e (0x%x) is not + 3bc0a408: 6e69 4420 4152 2e4d 000a 0000 0000 0000 in DRAM......... + 3bc0a418: 3001 4520 6d3a 6e6f 7469 726f 635f 736b .0 E:monitor_cks + 3bc0a428: 6d75 2820 7830 7825 302f 2578 2978 000a um (0x%x/0x%x).. + 3bc0a438: 3001 4520 763a 7265 6669 2079 6f6d 696e .0 E:verify moni + 3bc0a448: 6f74 2072 2528 2964 000a 0000 0000 0000 tor (%d)........ + 3bc0a458: 3201 454d 0a2e 0000 3201 324c 302f 2578 .2ME.....2L2/0x% + 3bc0a468: 2e78 000a 0000 0000 3201 324c 302f 2578 x........2L2/0x% + 3bc0a478: 2f78 7830 7825 302f 2578 786c 302f 2578 x/0x%x/0x%lx/0x% + 3bc0a488: 2f78 7830 7825 000a 3201 4f43 504d 252f x/0x%x...2COMP/% + 3bc0a498: 2e64 000a 0000 0000 3001 4520 6c3a 616f d........0 E:loa + 3bc0a4a8: 6564 5f72 6e32 5f64 6b63 7573 206d 3028 der_2nd_cksum (0 + 3bc0a4b8: 2578 2f78 7830 7825 0a29 0000 0000 0000 x%x/0x%x)....... + 3bc0a4c8: 3001 4520 763a 7265 6669 2079 6f6c 6461 .0 E:verify load + 3bc0a4d8: 7265 3220 646e 2820 6425 0a29 0000 0000 er 2nd (%d)..... + 3bc0a4e8: 3001 4520 463a 6961 656c 2064 6f74 6420 .0 E:Failed to d + 3bc0a4f8: 6365 6d6f 7270 7365 2073 6f6c 6461 7265 ecompress loader + 3bc0a508: 325f 646e 2820 6425 252f 756c 0a29 0000 _2nd (%d/%lu)... + 3bc0a518: 3201 6f4c 6461 7265 325f 646e 6c20 616f .2Loader_2nd loa + 3bc0a528: 6564 2e64 000a 0000 3001 4520 463a 6961 ded......0 E:Fai + 3bc0a538: 656c 2064 6f74 6c20 616f 2064 6572 7473 led to load rest + 3bc0a548: 2820 6425 2e29 000a 3201 754a 706d 7420 (%d)....2Jump t + 3bc0a558: 206f 6f6d 696e 6f74 2072 7461 3020 2578 o monitor at 0x% + 3bc0a568: 786c 0a2e 0000 0000 3201 754a 706d 7420 lx.......2Jump t + 3bc0a578: 206f 6f6c 6461 7265 325f 646e 6120 2074 o loader_2nd at + 3bc0a588: 7830 6c25 2e78 000a 3201 460a 4253 204c 0x%lx....2.FSBL + 3bc0a598: 7325 253a 0a73 0000 3301 4920 733a 5f77 %s:%s....3 I:sw_ + 3bc0a5a8: 6e69 6f66 303d 2578 0a78 0000 0000 0000 info=0x%x....... + 3bc0a5b8: 3301 4920 663a 7069 705f 7261 6d61 3a31 .3 I:fip_param1: + 3bc0a5c8: 7020 7261 6d61 635f 736b 6d75 303d 2578 param_cksum=0x% + 3bc0a5d8: 2078 6170 6172 326d 6c5f 616f 6164 6464 x param2_loadadd + 3bc0a5e8: 3d72 7830 7825 000a 3301 4920 433a 5f50 r=0x%x...3 I:CP_ + 3bc0a5f8: 5453 5441 5f45 4552 3d47 7830 7825 000a STATE_REG=0x%x.. + 3bc0a608: 3201 4c42 2032 6e65 2e64 000a 0000 0000 .2BL2 end....... + 3bc0a618: 5643 444c 3230 000a 3001 4520 253a 2073 CVLD02...0 E:%s + 3bc0a628: 6163 276e 2074 6c61 6f6c 2063 6c25 2075 can't alloc %lu + 3bc0a638: 7962 6574 0a73 0000 3001 4520 253a 3a73 bytes....0 E:%s: + 3bc0a648: 6420 7473 735f 7a69 2065 7369 4e20 4c55 dst_size is NUL + 3bc0a658: 2e4c 000a 0000 0000 3301 4920 4c3a 4d5a L........3 I:LZM + 3bc0a668: 3141 252f 2f70 7025 0a2e 0000 0000 0000 A1/%p/%p........ + 3bc0a678: 3301 4920 4c3a 4d5a 3241 752f 636e 6d6f .3 I:LZMA2/uncom + 3bc0a688: 5f70 6973 657a 303d 2578 786c 000a 0000 p_size=0x%lx.... + 3bc0a698: 3001 4520 4c3a 6d7a 4461 6365 646f 2065 .0 E:LzmaDecode + 3bc0a6a8: 5245 4f52 3a52 2520 2064 7328 6174 7574 ERROR: %d (statu + 3bc0a6b8: 3d73 6425 0a29 0000 3301 4920 4c3a 4d5a s=%d)....3 I:LZM + 3bc0a6c8: 3941 302f 2578 786c 000a 0000 0000 0000 A9/0x%lx........ + 3bc0a6d8: 3301 4920 4c3a 345a 252f 2f70 7025 0a2e .3 I:LZ4/%p/%p.. + ... + 3bc0a6f0: 3001 4520 643a 7463 5378 6174 7574 3d73 .0 E:dctxStatus= + 3bc0a700: 6c25 0a75 0000 0000 3301 4920 643a 7473 %lu......3 I:dst + 3bc0a710: 735f 7a69 3d65 6c25 2075 7273 5f63 6973 _size=%lu src_si + 3bc0a720: 657a 253d 756c 7220 7465 253d 647a 000a ze=%lu ret=%zd.. + 3bc0a730: 3001 4520 4c3a 345a 5f46 6564 6f63 706d .0 E:LZ4F_decomp + 3bc0a740: 6572 7373 253d 756c 000a 0000 0000 0000 ress=%lu........ + 3bc0a750: 3201 4344 2f50 7025 302f 2578 786c 252f .2DCP/%p/0x%lx/% + 3bc0a760: 2f70 7830 6c25 2f78 6425 0a2e 0000 0000 p/0x%lx/%d...... + 3bc0a770: 3201 4344 2f50 7830 6c25 2f78 6425 0a2e .2DCP/0x%lx/%d.. + ... + +000000003bc0a788 <__func__.0>: + 3bc0a788: 7a53 6c41 6f6c 0063 SzAlloc. + +000000003bc0a790 <__func__.1>: + 3bc0a790: 6564 6f63 706d 6572 7373 6c5f 6d7a 0061 decompress_lzma. + 3bc0a7a0: 3301 4920 413a 7070 696c 6163 6974 6e6f .3 I:Application + 3bc0a7b0: 203a 7325 000a 0000 3301 4920 753a 6273 : %s.....3 I:usb + 3bc0a7c0: 2520 0a73 0000 0000 3201 5355 4242 002e %s......2USBB.. + 3bc0a7d0: 3301 4920 433a 4956 555f 4253 425f 4552 .3 I:CVI_USB_BRE + 3bc0a7e0: 4b41 000a 0000 0000 3201 5355 4b42 002e AK.......2USBK.. + 3bc0a7f0: 3301 4920 663a 616c 4567 746e 7265 4c44 .3 I:flagEnterDL + 3bc0a800: 2520 0a64 0000 0000 3301 4920 4d3a 4741 %d......3 I:MAG + 3bc0a810: 4349 4e20 4d55 4e20 544f 4d20 5441 4843 IC NUM NOT MATCH + 3bc0a820: 000a 0000 0000 0000 3201 5355 4b42 2e46 .........2USBKF. + ... + 3bc0a838: 3301 4920 493a 204f 6241 726f 2074 2121 .3 I:IO Abort !! + 3bc0a848: 2121 0a21 0000 0000 3301 4920 723a 6365 !!!......3 I:rec + 3bc0a858: 7069 6569 746e 7420 7261 6567 2074 6163 ipient target ca + 3bc0a868: 6e6e 746f 6220 2065 6e69 6574 6672 6361 nnot be interfac + 3bc0a878: 2165 000a 0000 0000 3201 5355 5042 302f e!.......2USBP/0 + 3bc0a888: 2578 2e78 0000 0000 3301 4920 663a 7374 x%x......3 I:fts + 3bc0a898: 5b6e 6425 205d 203d 7825 000a 0000 0000 n[%d] = %x...... + 3bc0a8a8: 3301 4920 633a 6372 7620 6c61 3d20 2520 .3 I:crc val = % + 3bc0a8b8: 0a78 0000 0000 0000 3301 4920 743a 2073 x........3 I:ts + 3bc0a8c8: 6176 206c 203d 7825 000a 0000 0000 0000 val = %x........ + 3bc0a8d8: 3201 5355 5342 252f 2e73 0000 0000 0000 .2USBS/%s....... + 3bc0a8e8: 3231 3433 3635 3837 4139 4342 0000 0000 123456789ABC.... + 3bc0a8f8: 7065 6931 2d6e 7562 6b6c 0000 0000 0000 ep1in-bulk...... + 3bc0a908: 7065 6f32 7475 622d 6c75 006b 0000 0000 ep2out-bulk..... + 3bc0a918: 7065 6933 2d6e 6e69 0074 0000 737e ffff ep3in-int...~s.. + 3bc0a928: 7550 ffff 73e4 ffff 7416 ffff 7416 ffff Pu...s...t...t.. + 3bc0a938: 753c ffff 7550 ffff 7416 ffff 7416 ffff : + 3bc0ab80: 6962 646e 0000 0000 bind.... + +000000003bc0ab88 <__func__.1>: + 3bc0ab88: 6e75 6962 646e 0000 unbind.. + +000000003bc0ab90 <__func__.4>: + 3bc0ab90: 6964 6373 6e6f 656e 7463 0000 0000 0000 disconnect...... + +000000003bc0aba0 <__func__.5>: + 3bc0aba0: 6572 6573 0074 0000 6177 6e72 6e69 2167 reset...warning! + 3bc0abb0: 6620 6572 2065 6e75 6966 696e 6873 6465 free unfinished + 3bc0abc0: 7220 7165 6575 7473 0a21 0000 0000 0000 request!....... + 3bc0abd0: 7325 203a 4820 4e41 2147 4120 4248 4920 %s: HANG! AHB I + 3bc0abe0: 6c64 2065 5247 4353 4c54 000a 0000 0000 dle GRSCTL...... + 3bc0abf0: 7325 203a 6974 656d 756f 2074 6c66 7375 %s: timeout flus + 3bc0ac00: 6968 676e 6620 6669 206f 4728 5352 4354 hing fifo (GRSTC + 3bc0ac10: 4c54 253d 3830 2978 000a 0000 0000 0000 TL=%08x)........ + 3bc0ac20: 7325 203a 6974 656d 756f 2074 6c66 7375 %s: timeout flus + 3bc0ac30: 6968 676e 6620 6669 736f 2820 7267 7473 hing fifos (grst + 3bc0ac40: 7463 206c 203d 7830 7825 0a29 0000 0000 ctl = 0x%x)..... + 3bc0ac50: 7325 203a 6163 6c6c 6620 726f 6520 3070 %s: call for ep0 + 3bc0ac60: 6f2d 7475 000a 0000 7325 203a 6974 656d -out....%s: time + 3bc0ac70: 756f 2074 4944 5045 4e49 2e54 414e 454b out DIEPINT.NAKE + 3bc0ac80: 4646 000a 0000 0000 7325 203a 6974 656d FF......%s: time + 3bc0ac90: 756f 2074 4947 544e 5453 2e53 4f47 5455 out GINTSTS.GOUT + 3bc0aca0: 414e 454b 4646 000a 7325 203a 6974 656d NAKEFF..%s: time + 3bc0acb0: 756f 2074 4f44 5045 5443 2e4c 5045 6944 out DOEPCTL.EPDi + 3bc0acc0: 6173 6c62 0a65 0000 7325 2928 4820 4e41 sable...%s() HAN + 3bc0acd0: 2147 5320 666f 2074 6552 6573 2074 5247 G! Soft Reset GR + 3bc0ace0: 5453 5443 3d4c 3025 0a78 0000 0000 0000 STCTL=%0x....... + 3bc0acf0: 7325 2928 4820 4e41 2147 5320 666f 2074 %s() HANG! Soft + 3bc0ad00: 2e34 2032 6552 6573 2074 5247 5453 5443 4.2 Reset GRSTCT + 3bc0ad10: 3d4c 3025 0a78 0000 7325 2928 4820 4e41 L=%0x...%s() HAN + 3bc0ad20: 2147 4120 4248 4920 6c64 2065 5247 5453 G! AHB Idle GRST + 3bc0ad30: 5443 3d4c 3025 0a78 0000 0000 0000 0000 CTL=%0x......... + 3bc0ad40: 6973 657a 6620 726f 6820 6e61 6c64 7265 size for handler + 3bc0ad50: 6920 2073 6f74 206f 6173 6c6d 206c 2528 is too samll (% + 3bc0ad60: 646c 202c 6425 0a29 0000 0000 0000 0000 ld, %d)......... + 3bc0ad70: 6f4e 6d20 6d65 726f 2079 7661 6961 616c No memory availa + 3bc0ad80: 6c62 2065 6f66 2072 4455 2143 000a 0000 ble for UDC!.... + +000000003bc0ad90 <__func__.0>: + 3bc0ad90: 7764 3263 655f 5f70 7473 706f 785f 6566 dwc2_ep_stop_xfe + 3bc0ada0: 0072 0000 0000 0000 r....... + +000000003bc0ada8 <__func__.1>: + 3bc0ada8: 645f 6377 5f32 7065 645f 7369 6261 656c _dwc2_ep_disable + ... + +000000003bc0adc0 <__func__.2>: + 3bc0adc0: 7764 3263 725f 6365 6e6f 6966 5f67 7375 dwc2_reconfig_us + 3bc0add0: 6462 0000 0000 0000 bd...... + +000000003bc0add8 <__func__.3>: + 3bc0add8: 7764 3263 685f 6f73 6774 745f 6678 6669 dwc2_hsotg_txfif + 3bc0ade8: 5f6f 6c66 7375 0068 o_flush. + +000000003bc0adf0 <__func__.4>: + 3bc0adf0: 7764 3263 685f 6f73 6774 695f 696e 5f74 dwc2_hsotg_init_ + 3bc0ae00: 6966 6f66 0000 0000 fifo.... + +000000003bc0ae08 : + 3bc0ae08: 7764 3263 752d 6364 0000 0000 0000 0000 dwc2-udc........ + +000000003bc0ae18 : + ... + 3bc0ae20: 2ab4 3bc0 0000 0000 0000 0000 0000 0000 .*.;............ + ... + 3bc0ae40: 279e 3bc0 0000 0000 0000 0000 0000 0000 .'.;............ + ... + +000000003bc0ae60 : + 3bc0ae60: 7065 2d30 6f63 746e 6f72 006c 0000 0000 ep0-control..... + +000000003bc0ae70 : + 3bc0ae70: 7065 6931 2d6e 7562 6b6c 0000 0000 0000 ep1in-bulk...... + +000000003bc0ae80 : + 3bc0ae80: 7065 6f32 7475 622d 6c75 006b 0000 0000 ep2out-bulk..... + +000000003bc0ae90 : + 3bc0ae90: 7065 6933 2d6e 6e69 0074 0000 0000 0000 ep3in-int....... + 3bc0aea0: 7263 2d71 623e 6572 7571 7365 3a74 7830 crq->brequest:0x + 3bc0aeb0: 7825 000a 8f90 ffff 906c ffff 91be ffff %x......l....... + 3bc0aec0: 9110 ffff 91be ffff 8f24 ffff 8f72 ffff ........$...r... + 3bc0aed0: 91be ffff 8f86 ffff 8f5a ffff 91be ffff ........Z....... + 3bc0aee0: 8f7c ffff 0000 0000 7572 206e 6574 7473 |.......run test + 3bc0aef0: 6d20 646f 2065 6425 000a 0000 0000 0000 mode %d........ + 3bc0af00: 3301 4920 553a 4253 4956 2f44 7825 0a2e .3 I:USBVID/%x.. + ... + +000000003bc0af18 : + 3bc0af18: 0000 1021 2042 3063 4084 50a5 60c6 70e7 ..!.B c0.@.P.`.p + 3bc0af28: 8108 9129 a14a b16b c18c d1ad e1ce f1ef ..).J.k......... + 3bc0af38: 1231 0210 3273 2252 52b5 4294 72f7 62d6 1...s2R".R.B.r.b + 3bc0af48: 9339 8318 b37b a35a d3bd c39c f3ff e3de 9...{.Z......... + 3bc0af58: 2462 3443 0420 1401 64e6 74c7 44a4 5485 b$C4 ....d.t.D.T + 3bc0af68: a56a b54b 8528 9509 e5ee f5cf c5ac d58d j.K.(........... + 3bc0af78: 3653 2672 1611 0630 76d7 66f6 5695 46b4 S6r&..0..v.f.V.F + 3bc0af88: b75b a77a 9719 8738 f7df e7fe d79d c7bc [.z...8......... + 3bc0af98: 48c4 58e5 6886 78a7 0840 1861 2802 3823 .H.X.h.x@.a..(#8 + 3bc0afa8: c9cc d9ed e98e f9af 8948 9969 a90a b92b ........H.i...+. + 3bc0afb8: 5af5 4ad4 7ab7 6a96 1a71 0a50 3a33 2a12 .Z.J.z.jq.P.3:.* + 3bc0afc8: dbfd cbdc fbbf eb9e 9b79 8b58 bb3b ab1a ........y.X.;... + 3bc0afd8: 6ca6 7c87 4ce4 5cc5 2c22 3c03 0c60 1c41 .l.|.L.\",.<`.A. + 3bc0afe8: edae fd8f cdec ddcd ad2a bd0b 8d68 9d49 ........*...h.I. + 3bc0aff8: 7e97 6eb6 5ed5 4ef4 3e13 2e32 1e51 0e70 .~.n.^.N.>2.Q.p. + 3bc0b008: ff9f efbe dfdd cffc bf1b af3a 9f59 8f78 ..........:.Y.x. + 3bc0b018: 9188 81a9 b1ca a1eb d10c c12d f14e e16f ..........-.N.o. + 3bc0b028: 1080 00a1 30c2 20e3 5004 4025 7046 6067 .....0. .P%@Fpg` + 3bc0b038: 83b9 9398 a3fb b3da c33d d31c e37f f35e ........=.....^. + 3bc0b048: 02b1 1290 22f3 32d2 4235 5214 6277 7256 .....".25B.RwbVr + 3bc0b058: b5ea a5cb 95a8 8589 f56e e54f d52c c50d ........n.O.,... + 3bc0b068: 34e2 24c3 14a0 0481 7466 6447 5424 4405 .4.$....ftGd$T.D + 3bc0b078: a7db b7fa 8799 97b8 e75f f77e c71d d73c ........_.~...<. + 3bc0b088: 26d3 36f2 0691 16b0 6657 7676 4615 5634 .&.6....Wfvv.F4V + 3bc0b098: d94c c96d f90e e92f 99c8 89e9 b98a a9ab L.m.../......... + 3bc0b0a8: 5844 4865 7806 6827 18c0 08e1 3882 28a3 DXeH.x'h.....8.( + 3bc0b0b8: cb7d db5c eb3f fb1e 8bf9 9bd8 abbb bb9a }.\.?........... + 3bc0b0c8: 4a75 5a54 6a37 7a16 0af1 1ad0 2ab3 3a92 uJTZ7j.z.....*.: + 3bc0b0d8: fd2e ed0f dd6c cd4d bdaa ad8b 9de8 8dc9 ....l.M......... + 3bc0b0e8: 7c26 6c07 5c64 4c45 3ca2 2c83 1ce0 0cc1 &|.ld\EL.<.,.... + 3bc0b0f8: ef1f ff3e cf5d df7c af9b bfba 8fd9 9ff8 ..>.].|......... + 3bc0b108: 6e17 7e36 4e55 5e74 2e93 3eb2 0ed1 1ef0 .n6~UNt^...>.... + 3bc0b118: c21c ffff c250 ffff c2be ffff c33a ffff ....P.......:... + 3bc0b128: c360 ffff c406 ffff c4b6 ffff c518 ffff `............... + 3bc0b138: c64c ffff c740 ffff c744 ffff c776 ffff L...@...D...v... + 3bc0b148: c7e6 ffff c806 ffff c860 ffff 0000 0000 ........`....... + +000000003bc0b158 : + 3bc0b158: 0000 0001 0000 0000 0000 0004 0000 0000 ................ + 3bc0b168: 0000 0010 0000 0000 0000 0040 0000 0000 ..........@..... + +000000003bc0b178 : + ... + 3bc0b184: ffff ffff fffc ffff 0001 0000 0002 0000 ................ + 3bc0b194: 0003 0000 .... + +000000003bc0b198 : + 3bc0b198: 0000 0000 0001 0000 0002 0000 0001 0000 ................ + 3bc0b1a8: 0000 0000 0004 0000 0004 0000 0004 0000 ................ + 3bc0b1b8: cb7e ffff cb5e ffff cb3e ffff c8fa ffff ~...^...>....... + 3bc0b1c8: c99c ffff ca4e ffff cb10 ffff c8cc ffff ....N........... + 3bc0b1d8: c96e ffff ca20 ffff cae2 ffff c89e ffff n... ........... + 3bc0b1e8: c940 ffff c9f2 ffff cab4 ffff 0000 0000 @............... + 3bc0b1f8: 3201 4444 2052 6e69 7469 0a2e 0000 0000 .2DDR init...... + 3bc0b208: 3201 6464 5f72 6170 6172 5b6d 5d30 303d .2ddr_param[0]=0 + 3bc0b218: 2578 2e78 000a 0000 3201 6b70 5f67 7974 x%x......2pkg_ty + 3bc0b228: 6570 253d 0a78 0000 3201 6e32 0a64 0000 pe=%x....22nd... + 3bc0b238: 3201 6e75 6e6b 776f 206e 6b70 5f67 7974 .2unknown pkg_ty + 3bc0b248: 6570 303d 2578 0a78 0000 0000 0000 0000 pe=0x%x......... + 3bc0b258: 3201 2544 5f78 7825 255f 0a78 0000 0000 .2D%x_%x_%x..... + 3bc0b268: 3201 4444 3252 0000 3201 4444 3352 0000 .2DDR2...2DDR3.. + 3bc0b278: 3201 6e75 6e6b 776f 206e 6576 646e 726f .2unknown vendor + 3bc0b288: 253d 0064 0000 0000 3201 352d 3231 004d =%d......2-512M. + 3bc0b298: 3201 312d 0047 0000 3201 322d 0047 0000 .2-1G....2-2G... + 3bc0b2a8: 3201 342d 0047 0000 3201 752d 6b6e 6f6e .2-4G....2-unkno + 3bc0b2b8: 6e77 6320 7061 6361 7469 3d79 6425 0000 wn capacity=%d.. + 3bc0b2c8: 3201 512d 4e46 3838 000a 0000 0000 0000 .2-QFN88........ + 3bc0b2d8: 3201 512d 4e46 3836 000a 0000 0000 0000 .2-QFN68........ + 3bc0b2e8: 3201 422d 4147 000a 3201 752d 6b6e 6f6e .2-BGA...2-unkno + 3bc0b2f8: 6e77 7020 676b 253d 0064 0000 cf3c ffff wn pkg=%d...<... + 3bc0b308: cfc2 ffff cf1a ffff cf2c ffff cf3c ffff ........,...<... + 3bc0b318: cfc2 ffff cfa4 ffff cfb4 ffff cfea ffff ................ + 3bc0b328: cfea ffff cfea ffff cfb0 ffff cfea ffff ................ + 3bc0b338: cfea ffff cfea ffff cfea ffff cfb0 ffff ................ + 3bc0b348: cfea ffff 0000 0000 3001 4520 453a 5252 .........0 E:ERR + 3bc0b358: 524f 6220 7369 5f74 6166 6c69 000a 0000 OR bist_fail.... + 3bc0b368: 3001 4520 623a 7369 5f74 6572 7573 746c .0 E:bist_result + 3bc0b378: 3d20 2520 2c78 6520 7272 645f 7461 5f61 = %x, err_data_ + 3bc0b388: 646f 2064 203d 6c25 2c78 6520 7272 645f odd = %lx, err_d + 3bc0b398: 7461 5f61 7665 6e65 3d20 2520 786c 000a ata_even = %lx.. + 3bc0b3a8: 3201 4444 2052 4942 5453 4620 4941 0a4c .2DDR BIST FAIL. + ... + 3bc0b3c0: 3201 4444 2052 4942 5453 5020 5341 0a53 .2DDR BIST PASS. + ... + 3bc0b3d8: fa02 401f fa02 801f 2c02 4010 2c02 8010 ...@.....,.@.,.. + 3bc0b3e8: 7a00 4000 7a00 8000 3a00 4000 3a00 8000 .z.@.z...:.@.:.. + 3bc0b3f8: e08c ffff e0f0 ffff e150 ffff e1bc ffff ........P....... + 3bc0b408: e280 ffff e220 ffff e1b6 ffff e1b6 ffff .... ........... + 3bc0b418: e342 ffff e2e0 ffff e622 ffff e69a ffff B......."....... + 3bc0b428: e712 ffff e78a ffff e7aa ffff ............ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2.elf b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2.elf new file mode 100755 index 000000000..94662483d Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2.elf differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2.ld b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2.ld new file mode 100644 index 000000000..b7fbc239f --- /dev/null +++ b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2.ld @@ -0,0 +1,53 @@ +OUTPUT_FORMAT("elf64-littleriscv") +OUTPUT_ARCH(riscv) +ENTRY(bl2_entrypoint) +MEMORY { + RAM (rwx): ORIGIN = (0x3BC00000), LENGTH = (0x00019000) +} +SECTIONS +{ + . = (0x3BC00000); + ASSERT(. == ALIGN(4096), + "BL2_BASE address is not aligned on a page boundary.") + ro . : { + __RO_START__ = .; + *bl2_entrypoint.o(.text*) + *(.vectors) + *(.text*) + *(.rodata*) + __RO_END__ = .; + } >RAM + .data . : { + . = ALIGN(16); + __DATA_START__ = .; + *(.data*) + . = ALIGN(16); + __DATA_END__ = .; + } >RAM + stacks (NOLOAD) : { + . = ALIGN(64); + __STACKS_START__ = .; + . += 0x2000; + . = ALIGN(64); + __STACKS_END__ = .; + } >RAM + .bss : ALIGN(16) { + . = ALIGN(16); + __BSS_START__ = .; + *(SORT_BY_ALIGNMENT(.bss*)) + *(COMMON) + . = ALIGN(16); + __BSS_END__ = .; + } >RAM + __BL2_END__ = .; + __BSS_SIZE__ = SIZEOF(.bss); + ASSERT(. <= ((0x3BC00000) + (0x00019000)), "BL2 image has exceeded its limit.") +p_rom_api_cryptodma_aes_decrypt = 0x0000000004400100; +p_rom_api_flash_init = 0x0000000004400080; +p_rom_api_get_boot_src = 0x0000000004400020; +p_rom_api_get_number_of_retries = 0x00000000044000c0; +p_rom_api_image_crc = 0x00000000044000a0; +p_rom_api_load_image = 0x0000000004400060; +p_rom_api_set_boot_src = 0x0000000004400040; +p_rom_api_verify_rsa = 0x00000000044000e0; +} diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2.map b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2.map new file mode 100644 index 000000000..af930d703 --- /dev/null +++ b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2.map @@ -0,0 +1,3413 @@ + +Discarded input sections + + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .text.cpu_report_exception + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .text.enable_cache + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o + .text.memcpy16 + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o + .text.zeromem 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_info 0x0000000000000000 0x1ac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_abbrev 0x0000000000000000 0xdd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_loc 0x0000000000000000 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_aranges + 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_ranges 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_line 0x0000000000000000 0x102 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_str 0x0000000000000000 0x3a69 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o + .debug_frame 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .text.inv_dcache_range + 0x0000000000000000 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .text.clean_dcache_range + 0x0000000000000000 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .text.enable_dcache + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .text.disable_dcache + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .text.timer_init + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000000000 0x186b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .text.console_init + 0x0000000000000000 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .text.console_puts + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .text.console_getc + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .text.uart_tstc + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .text.console_tstc + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .rodata.tf_print_buffer.str1.8 + 0x0000000000000000 0x2d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .text.tf_print_buffer + 0x0000000000000000 0x96 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .text.config_core_power + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .text.apply_analog_trimming_data + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .text.bytes_reverse + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .rodata.__assert.str1.8 + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .text.__assert + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .debug_info 0x0000000000000000 0x153 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .debug_abbrev 0x0000000000000000 0xa4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .debug_loc 0x0000000000000000 0x109 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x112 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .debug_line 0x0000000000000000 0x21b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .debug_str 0x0000000000000000 0x6f9a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .debug_frame 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .text.memcmp 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .text.memchr 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .text._memcpy 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o + .text.strchr 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o + .debug_info 0x0000000000000000 0xe4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o + .debug_abbrev 0x0000000000000000 0x7f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o + .debug_loc 0x0000000000000000 0x6f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o + .debug_line 0x0000000000000000 0x14e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o + .debug_str 0x0000000000000000 0x3a7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o + .text.strcasecmp + 0x0000000000000000 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o + .text.strncmp 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o + .debug_info 0x0000000000000000 0x105 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o + .debug_abbrev 0x0000000000000000 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o + .debug_loc 0x0000000000000000 0x15f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o + .debug_line 0x0000000000000000 0x13f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o + .debug_str 0x0000000000000000 0x3a39 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o + .text.strnlen 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o + .debug_info 0x0000000000000000 0x105 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o + .debug_abbrev 0x0000000000000000 0x9f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o + .debug_loc 0x0000000000000000 0xa3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o + .debug_aranges + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o + .debug_ranges 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x47 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o + .debug_line 0x0000000000000000 0x123 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o + .debug_str 0x0000000000000000 0x3a40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o + .debug_frame 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .text.is_usb_dl_enabled + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .rodata.print_sram_log.str1.8 + 0x0000000000000000 0x6d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .text.print_sram_log + 0x0000000000000000 0x86 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_ReadReg32 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_WriteReg32 + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedRead8 + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedRead16 + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedWrite8 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_UncachedWrite16 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_WritePhysAddress32 + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_BufferCopy + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .text.DWC2_DelayNs + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.set_trigger_cnt + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dfu_usb_get_reset + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.otg_phy_init + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.otg_phy_off + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x517 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x0000000000000000 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .text.crc16_pacing + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .text.crc16_ccitt_with_tag + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_InitDicAndState + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_DecodeToBuf + 0x0000000000000000 0xd6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_Free + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_Allocate + 0x0000000000000000 0xbc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_renormDictT + 0x0000000000000000 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_rotatePattern + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_setExternalDict + 0x0000000000000000 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_reverseCountPattern + 0x0000000000000000 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_countPattern + 0x0000000000000000 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_init_internal + 0x0000000000000000 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_extDict + 0x0000000000000000 0x2aa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_compress_optimal + 0x0000000000000000 0x1d36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_compress_generic_noDictCtx + 0x0000000000000000 0x1b68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4HC_compress_generic + 0x0000000000000000 0x211a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_makeBlock + 0x0000000000000000 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_versionNumber + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.LZ4_versionString.str1.8 + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_versionString + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressBound + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofState + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast_extState_fastReset + 0x0000000000000000 0x1428 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_initStream + 0x0000000000000000 0x36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast_extState + 0x0000000000000000 0xd02 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_default + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_destSize + 0x0000000000000000 0x83c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_createStream + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStream + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStream_fast + 0x0000000000000000 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_freeStream + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_loadDict + 0x0000000000000000 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_attach_dictionary + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_fast_continue + 0x0000000000000000 0x1ca4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlock_continue + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_forceExtDict + 0x0000000000000000 0xa24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_saveDict + 0x0000000000000000 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe_partial + 0x0000000000000000 0x2a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast + 0x0000000000000000 0x1e6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_withPrefix64k + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_createStreamDecode + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_freeStreamDecode + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_setStreamDecode + 0x0000000000000000 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decoderRingBufferSize + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe_continue + 0x0000000000000000 0x3c6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_continue + 0x0000000000000000 0x316 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_fast_usingDict + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput_withState + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_withState + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_limitedOutput_continue + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_continue + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_uncompress + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_uncompress_unknownOutputSize + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofStreamState + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_create + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_slideInputBuffer + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_createStreamHC + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_freeStreamHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_initStreamHC + 0x0000000000000000 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_setCompressionLevel + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_destSize + 0x0000000000000000 0x6a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamHC + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamHC_fast + 0x0000000000000000 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_extStateHC_fastReset + 0x0000000000000000 0x64 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_extStateHC + 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC + 0x0000000000000000 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_initStream + 0x0000000000000000 0x5a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlock + 0x0000000000000000 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_favorDecompressionSpeed + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_loadDictHC + 0x0000000000000000 0xd6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_continue_generic + 0x0000000000000000 0xf0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_attach_HC_dictionary + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_continue + 0x0000000000000000 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlockHC_continue + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBlockHC + 0x0000000000000000 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compress_HC_continue_destSize + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_saveDictHC + 0x0000000000000000 0x96 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_localSaveDict + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC + 0x0000000000000000 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2 + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_withStateHC + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput_withStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_withStateHC + 0x0000000000000000 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput_withStateHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_continue + 0x0000000000000000 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC_limitedOutput_continue + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_sizeofStreamStateHC + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_resetStreamStateHC + 0x0000000000000000 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_createHC + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_freeHC + 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_continue + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_compressHC2_limitedOutput_continue + 0x0000000000000000 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_slideInputBufferHC + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.LZ4F_getErrorName.str1.8 + 0x0000000000000000 0x17 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_getErrorName + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_getErrorCode + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_getVersion + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressionLevel_max + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBound_internal + 0x0000000000000000 0x9c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressFrameBound + 0x0000000000000000 0x3e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_freeCDict + 0x0000000000000000 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_createCDict + 0x0000000000000000 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_createCompressionContext + 0x0000000000000000 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_freeCompressionContext + 0x0000000000000000 0x36 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBegin_usingCDict + 0x0000000000000000 0x20c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBegin + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressBound + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressUpdate + 0x0000000000000000 0x204 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_flush + 0x0000000000000000 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressEnd + 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressFrame_usingCDict + 0x0000000000000000 0x104 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_compressFrame + 0x0000000000000000 0x112 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_freeDecompressionContext + 0x0000000000000000 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_resetDecompressionContext + 0x0000000000000000 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_headerSize + 0x0000000000000000 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_getFrameInfo + 0x0000000000000000 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_decompress_usingDict + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.str1.8 + 0x0000000000000000 0x246 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.cst8 0x0000000000000000 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.LZ4F_errorStrings + 0x0000000000000000 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.clTable.2 + 0x0000000000000000 0x9c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x0000000000000000 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_mergeRound + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_avalanche + 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH_read64 + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_finalize.constprop.0 + 0x0000000000000000 0x7be /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .rodata.XXH64_finalize.constprop.0 + 0x0000000000000000 0x7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH_versionNumber + 0x0000000000000000 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH32_createState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH32_freeState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH32_copyState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH32_canonicalFromHash + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH32_hashFromCanonical + 0x0000000000000000 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64 0x0000000000000000 0x234 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_createState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_freeState + 0x0000000000000000 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_copyState + 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_reset + 0x0000000000000000 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_update + 0x0000000000000000 0x1fa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_digest + 0x0000000000000000 0x8a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_canonicalFromHash + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH64_hashFromCanonical + 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .rodata.cst8 0x0000000000000000 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000000000 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .text.get_ddr_capacity + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .text.get_pkg 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .text.get_ddr_type + 0x0000000000000000 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .rodata.dump_axi_mon_reg.str1.8 + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .text.dump_axi_mon_reg + 0x0000000000000000 0x6c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.ddr_debug_num_write + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_sub_resume2 + 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddrc_suspend + 0x0000000000000000 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_wrlvl_init + 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_synp_mrw + 0x0000000000000000 0x74 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_cal_phyd_hw + 0x0000000000000000 0x10a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_cal_phya_enautok + 0x0000000000000000 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ctrlupd_short + 0x0000000000000000 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_wrlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_rdglvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_rdlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_wdqlvl_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_cal_status + 0x0000000000000000 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_zqcal_status + 0x0000000000000000 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zqcal_isr8 + 0x0000000000000000 0x2d4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zqcal_hw_isr8 + 0x0000000000000000 0x15e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_training_status + 0x0000000000000000 0x134 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_set_dq_vref + 0x0000000000000000 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_phya_pd + 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_phyd_save + 0x0000000000000000 0xae6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.ddr_sys_suspend + 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_phyd_restore + 0x0000000000000000 0xaf4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_sub_resume3 + 0x0000000000000000 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_sw_upd + 0x0000000000000000 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_set_dq_trig_lvl + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_freq_change_ltoh + 0x0000000000000000 0x1ca /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_0_phase40 + 0x0000000000000000 0x16e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_0_external + 0x0000000000000000 0x1ce /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_1_dq_set_highlow + 0x0000000000000000 0x1b4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_2_mux_demux + 0x0000000000000000 0x19c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_3_ca_set_highlow + 0x0000000000000000 0x1e4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_lb_4_ca_clk_pat + 0x0000000000000000 0x132 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.ddr_sys_resume + 0x0000000000000000 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_rdlvl_sw_req + 0x0000000000000000 0x3c0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_wdqlvl_sw_req + 0x0000000000000000 0x1ee /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_freq_change_htol + 0x0000000000000000 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dfi_phyupd_req + 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_dll_sw_clr + 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_tx_shift_delay + 0x0000000000000000 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_rx_delay + 0x0000000000000000 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_rx_deskew_delay + 0x0000000000000000 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ca_shift_delay + 0x0000000000000000 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_cs_shift_delay + 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_bist_mask_shift_delay + 0x0000000000000000 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_reg_toggle + 0x0000000000000000 0x1514 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ana_test + 0x0000000000000000 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zq240 + 0x0000000000000000 0x1c4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zq240_ate + 0x0000000000000000 0x148 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .text.cvx16_ddr_zq240_cal + 0x0000000000000000 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000000000 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .debug_macro 0x0000000000000000 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .data.ddr_patch_regs + 0x0000000000000000 0x1c8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .data.ddr_patch_regs_count + 0x0000000000000000 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_info 0x0000000000000000 0x121 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_abbrev 0x0000000000000000 0xb5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_macro 0x0000000000000000 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_line 0x0000000000000000 0x160 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .debug_str 0x0000000000000000 0x53f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_entrypoint.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_entrypoint.o + .bss 0x0000000000000000 0x1000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_entrypoint.o + .rodata 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_entrypoint.o + +Memory Configuration + +Name Origin Length Attributes +RAM 0x000000003bc00000 0x0000000000019000 xrw +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + 0x000000003bc00000 . = 0x3bc00000 + 0x0000000000000001 ASSERT ((. == ALIGN (0x1000)), BL2_BASE address is not aligned on a page boundary.) + +ro 0x000000003bc00000 0xb434 + 0x000000003bc00000 __RO_START__ = . + *bl2_entrypoint.o(.text*) + .text.init 0x000000003bc00000 0x14c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_entrypoint.o + 0x000000003bc00000 bl2_entrypoint + *(.vectors) + *(.text*) + .text.sync_cache + 0x000000003bc0014c 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + 0x000000003bc0014c sync_cache + .text.flush_dcache_range + 0x000000003bc00156 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + 0x000000003bc00156 flush_dcache_range + .text.trig_simulation_timer + 0x000000003bc0017a 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc0017a trig_simulation_timer + .text.udelay 0x000000003bc0018a 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc0018a udelay + .text.mdelay 0x000000003bc001b4 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc001b4 mdelay + .text.get_timer + 0x000000003bc001be 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc001be get_timer + .text.get_random_from_timer + 0x000000003bc001e2 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc001e2 get_random_from_timer + .text.read_count_tick + 0x000000003bc0020c 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + 0x000000003bc0020c read_count_tick + .text.jump_to_monitor + 0x000000003bc0021a 0x78 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + 0x000000003bc0021a jump_to_monitor + .text.jump_to_loader_2nd + 0x000000003bc00292 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + 0x000000003bc00292 jump_to_loader_2nd + .text._uart_putc + 0x000000003bc00294 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + 0x000000003bc00294 _uart_putc + .text.console_putc + 0x000000003bc002a4 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + 0x000000003bc002a4 console_putc + .text.console_flush + 0x000000003bc002c2 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + 0x000000003bc002c2 console_flush + .text.unsigned_num_print + 0x000000003bc002d6 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .text.tf_printf + 0x000000003bc00358 0x19a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + 0x000000003bc00358 tf_printf + .text.__system_reset + 0x000000003bc004f2 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc004f2 __system_reset + .text.panic_handler + 0x000000003bc005ba 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc005ba panic_handler + .text.reset_c906l + 0x000000003bc005ec 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc005ec reset_c906l + .text.setup_dl_flag + 0x000000003bc00636 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc00636 setup_dl_flag + .text.sys_switch_all_to_pll + 0x000000003bc00680 0xe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc00680 sys_switch_all_to_pll + .text.sys_pll_nd + 0x000000003bc0068e 0x18e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc0068e sys_pll_nd + .text.sys_pll_init + 0x000000003bc0081c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc0081c sys_pll_init + .text.switch_rtc_mode_1st_stage + 0x000000003bc00832 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc00832 switch_rtc_mode_1st_stage + .text.switch_rtc_mode_2nd_stage + 0x000000003bc00834 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc00834 switch_rtc_mode_2nd_stage + .text.set_rtc_en_registers + 0x000000003bc00878 0xbc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc00878 set_rtc_en_registers + .text.init_comm_info + 0x000000003bc00934 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + 0x000000003bc00934 init_comm_info + .text.dec_verify_image + 0x000000003bc00994 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + 0x000000003bc00994 dec_verify_image + .text.ntostr 0x000000003bc00998 0x7a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + 0x000000003bc00998 ntostr + .text.memset 0x000000003bc00a12 0x5a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + 0x000000003bc00a12 memset + .text.memcpy 0x000000003bc00a6c 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + 0x000000003bc00a6c memcpy + .text.memmove 0x000000003bc00acc 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + 0x000000003bc00acc memmove + .text.putchar_l + 0x000000003bc00aec 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + 0x000000003bc00aec putchar_l + .text.strcmp 0x000000003bc00b3e 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o + 0x000000003bc00b3e strcmp + .text.strlen 0x000000003bc00b5a 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o + 0x000000003bc00b5a strlen + .text.gpio_in_value + 0x000000003bc00b6c 0x7c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + 0x000000003bc00b6c gpio_in_value + .text.usb_id_det + 0x000000003bc00be8 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + 0x000000003bc00be8 usb_id_det + .text.read_time_ms + 0x000000003bc00c06 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .text.load_image_by_usb + 0x000000003bc00c20 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00c20 load_image_by_usb + .text.load_param2 + 0x000000003bc00c60 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00c60 load_param2 + .text.load_ddr_param + 0x000000003bc00d30 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00d30 load_ddr_param + .text.load_ddr + 0x000000003bc00dde 0xc6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00dde load_ddr + .text.load_blcp_2nd + 0x000000003bc00ea4 0x166 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc00ea4 load_blcp_2nd + .text.load_monitor + 0x000000003bc0100a 0x126 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc0100a load_monitor + .text.load_loader_2nd + 0x000000003bc01130 0x208 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc01130 load_loader_2nd + .text.load_rest + 0x000000003bc01338 0xe6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc01338 load_rest + .text.bl2_main + 0x000000003bc0141e 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc0141e bl2_main + .text.SzFree 0x000000003bc014b6 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .text.SzAlloc 0x000000003bc014b8 0x42 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .text.decompress_lzma + 0x000000003bc014fa 0xe8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + 0x000000003bc014fa decompress_lzma + .text.LZ4_malloc + 0x000000003bc015e2 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + 0x000000003bc015e2 LZ4_malloc + .text.LZ4_calloc + 0x000000003bc015e8 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + 0x000000003bc015e8 LZ4_calloc + .text.LZ4_free + 0x000000003bc01610 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + 0x000000003bc01610 LZ4_free + .text.decompress_lz4 + 0x000000003bc01612 0xae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + 0x000000003bc01612 decompress_lz4 + .text.decompress + 0x000000003bc016c0 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + 0x000000003bc016c0 decompress + .text.DWC2_UncachedRead32 + 0x000000003bc0173e 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + 0x000000003bc0173e DWC2_UncachedRead32 + .text.DWC2_UncachedWrite32 + 0x000000003bc01744 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + 0x000000003bc01744 DWC2_UncachedWrite32 + .text.resume 0x000000003bc01748 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .text.requestMemAlloc + 0x000000003bc0174a 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .text.requestMemFree + 0x000000003bc01782 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .text.acm_complete_set_line_coding + 0x000000003bc01784 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .text.reset 0x000000003bc017a0 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .text.disconnect + 0x000000003bc017b4 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .text.unbind 0x000000003bc017e2 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .text.bind 0x000000003bc01808 0x42 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .text.get_unicode_string + 0x000000003bc0184a 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .text.bulkOutCmpl + 0x000000003bc0189c 0x234 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .text.getDescAcm + 0x000000003bc01ad0 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .text.reqComplete + 0x000000003bc01b2c 0x2a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .text.bulkInCmpl + 0x000000003bc01b56 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .text.setup 0x000000003bc01ba6 0x442 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .text.suspend 0x000000003bc01fe8 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .text.convert_buf_addr + 0x000000003bc01fea 0xa2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc01fea convert_buf_addr + .text.print_buf_addr + 0x000000003bc0208c 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc0208c print_buf_addr + .text.AcmIsr 0x000000003bc0215c 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc0215c AcmIsr + .text.acm_app_init + 0x000000003bc02162 0x138 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc02162 acm_app_init + .text.usb_vbus_det + 0x000000003bc0229a 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc0229a usb_vbus_det + .text.get_usb_polling_timeout_value + 0x000000003bc022a6 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc022a6 get_usb_polling_timeout_value + .text.AcmApp 0x000000003bc022d6 0x478 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc022d6 AcmApp + .text.dwc2_fifo_status + 0x000000003bc0274e 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_free_request + 0x000000003bc02764 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.pullup 0x000000003bc0279e 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_alloc_request + 0x000000003bc027e6 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_ep_enable + 0x000000003bc0281e 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_fifo_flush + 0x000000003bc028be 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_log_write + 0x000000003bc028c0 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc028c0 dwc2_log_write + .text.dwc2_get_ep0_name + 0x000000003bc028c2 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc028c2 dwc2_get_ep0_name + .text.udc_reinit + 0x000000003bc028cc 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc028cc udc_reinit + .text.dwc2_done + 0x000000003bc02912 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02912 dwc2_done + .text.dwc2_dequeue + 0x000000003bc02952 0x54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_nuke + 0x000000003bc029a6 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc029a6 dwc2_nuke + .text.usb_gadget_unregister_driver + 0x000000003bc029d4 0x9a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc029d4 usb_gadget_unregister_driver + .text.dwc2_hsotg_set_bit + 0x000000003bc02a6e 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02a6e dwc2_hsotg_set_bit + .text.dwc2_hsotg_clear_bit + 0x000000003bc02a90 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02a90 dwc2_hsotg_clear_bit + .text.wakeup 0x000000003bc02ab4 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_hsotg_wait_bit_set + 0x000000003bc02af0 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02af0 dwc2_hsotg_wait_bit_set + .text.dwc2_hsotg_txfifo_flush.constprop.0 + 0x000000003bc02b36 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.kill_all_requests.isra.0 + 0x000000003bc02bc6 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_disconnect + 0x000000003bc02c24 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02c24 dwc2_disconnect + .text.dwc2_hsotg_init_fifo.constprop.0 + 0x000000003bc02c7a 0xda /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text._dwc2_ep_disable.isra.0 + 0x000000003bc02d54 0x1a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_ep_disable + 0x000000003bc02efa 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .text.dwc2_reconfig_usbd + 0x000000003bc02f1a 0x28e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc02f1a dwc2_reconfig_usbd + .text.usb_gadget_register_driver + 0x000000003bc031a8 0x156 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc031a8 usb_gadget_register_driver + .text.dwc2_phy_to_log_ep + 0x000000003bc032fe 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc032fe dwc2_phy_to_log_ep + .text.dwc2_udc_probe + 0x000000003bc03310 0x150 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc03310 dwc2_udc_probe + .text.usb_gadget_handle_interrupts + 0x000000003bc03460 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc03460 usb_gadget_handle_interrupts + .text.set_max_pktsize + 0x000000003bc034ac 0x8e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep_clear_stall + 0x000000003bc0353a 0x5e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep_set_stall + 0x000000003bc03598 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_ep0_complete_out + 0x000000003bc035fa 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep0_zlp + 0x000000003bc0367a 0x7e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_ep0_set_stall.isra.0 + 0x000000003bc036f8 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.setdma_rx.isra.0 + 0x000000003bc03760 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.complete_rx + 0x000000003bc0380a 0xfc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_udc_pre_setup + 0x000000003bc03906 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03906 dwc2_udc_pre_setup + .text.dwc2_ep_fifo_write + 0x000000003bc0391c 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc0391c dwc2_ep_fifo_write + .text.setdma_tx + 0x000000003bc03960 0x15c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .text.dwc2_ep_fifo_read + 0x000000003bc03abc 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03abc dwc2_ep_fifo_read + .text.dwc2_write_fifo_ep0 + 0x000000003bc03b00 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03b00 dwc2_write_fifo_ep0 + .text.dwc2_set_address + 0x000000003bc03b4c 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03b4c dwc2_set_address + .text.dwc2_ep0_read + 0x000000003bc03b94 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03b94 dwc2_ep0_read + .text.dwc2_ep0_write + 0x000000003bc03bbc 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03bbc dwc2_ep0_write + .text.dwc2_udc_set_nak + 0x000000003bc03bfc 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03bfc dwc2_udc_set_nak + .text.dwc2_udc_set_halt + 0x000000003bc03c3c 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03c3c dwc2_udc_set_halt + .text.dwc2_udc_ep_activate + 0x000000003bc03c9e 0xb2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03c9e dwc2_udc_ep_activate + .text.dwc2_handle_ep0 + 0x000000003bc03d50 0x346 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc03d50 dwc2_handle_ep0 + .text.dwc2_udc_irq + 0x000000003bc04096 0x540 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc04096 dwc2_udc_irq + .text.dwc2_ep0_kick + 0x000000003bc045d6 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc045d6 dwc2_ep0_kick + .text.dwc2_queue + 0x000000003bc045ee 0xd8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0x000000003bc045ee dwc2_queue + .text.usb_polling + 0x000000003bc046c6 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + 0x000000003bc046c6 usb_polling + .text.crc16_ccitt + 0x000000003bc04706 0x32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + 0x000000003bc04706 crc16_ccitt + .text.LzmaDec_WriteRem + 0x000000003bc04738 0x72 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_DecodeReal2 + 0x000000003bc047aa 0x138a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_TryDummy + 0x000000003bc05b34 0x4e8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaDec_Init + 0x000000003bc0601c 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc0601c LzmaDec_Init + .text.LzmaDec_DecodeToDic + 0x000000003bc06030 0x27c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc06030 LzmaDec_DecodeToDic + .text.LzmaDec_FreeProbs + 0x000000003bc062ac 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc062ac LzmaDec_FreeProbs + .text.LzmaDec_AllocateProbs2.isra.0 + 0x000000003bc062c8 0x66 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .text.LzmaProps_Decode + 0x000000003bc0632e 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc0632e LzmaProps_Decode + .text.LzmaDec_AllocateProbs + 0x000000003bc06378 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc06378 LzmaDec_AllocateProbs + .text.LzmaDecode + 0x000000003bc063a8 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + 0x000000003bc063a8 LzmaDecode + .text.LZ4F_readLE32 + 0x000000003bc06452 0x24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe_withSmallPrefix + 0x000000003bc06476 0x276 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_updateDict + 0x000000003bc066ec 0x110 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4_decompress_safe + 0x000000003bc067fc 0x26e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc067fc LZ4_decompress_safe + .text.LZ4_decompress_safe_withPrefix64k + 0x000000003bc06a6a 0x26a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc06a6a LZ4_decompress_safe_withPrefix64k + .text.LZ4_decompress_safe_forceExtDict + 0x000000003bc06cd4 0x316 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc06cd4 LZ4_decompress_safe_forceExtDict + .text.LZ4_decompress_safe_usingDict + 0x000000003bc06fea 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc06fea LZ4_decompress_safe_usingDict + .text.LZ4F_isError + 0x000000003bc07010 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc07010 LZ4F_isError + .text.LZ4F_getBlockSize + 0x000000003bc0701c 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc0701c LZ4F_getBlockSize + .text.LZ4F_decodeHeader + 0x000000003bc0703a 0x1a4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .text.LZ4F_createDecompressionContext + 0x000000003bc071de 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc071de LZ4F_createDecompressionContext + .text.LZ4F_decompress + 0x000000003bc0720e 0x7dc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + 0x000000003bc0720e LZ4F_decompress + .text.XXH32_avalanche + 0x000000003bc079ea 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH_read32 + 0x000000003bc07a16 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH32_finalize.constprop.0 + 0x000000003bc07a2c 0x33a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .text.XXH32 0x000000003bc07d66 0x1c6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + 0x000000003bc07d66 XXH32 + .text.XXH32_reset + 0x000000003bc07f2c 0x56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + 0x000000003bc07f2c XXH32_reset + .text.XXH32_update + 0x000000003bc07f82 0x1d2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + 0x000000003bc07f82 XXH32_update + .text.XXH32_digest + 0x000000003bc08154 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + 0x000000003bc08154 XXH32_digest + .text.ddr_init + 0x000000003bc08194 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + 0x000000003bc08194 ddr_init + .text.read_ddr_pkg_info + 0x000000003bc081c8 0x22e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc081c8 read_ddr_pkg_info + .text.get_ddr_vendor + 0x000000003bc083f6 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc083f6 get_ddr_vendor + .text.axi_mon_start_all + 0x000000003bc08400 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + 0x000000003bc08400 axi_mon_start_all + .text.ddr_sys_bring_up + 0x000000003bc08450 0x224 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + 0x000000003bc08450 ddr_sys_bring_up + .text.cvx16_bist_wr_prbs_init + 0x000000003bc08674 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08674 cvx16_bist_wr_prbs_init + .text.cvx16_bist_wr_sram_init + 0x000000003bc086c2 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc086c2 cvx16_bist_wr_sram_init + .text.cvx16_bist_rdglvl_init + 0x000000003bc08722 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08722 cvx16_bist_rdglvl_init + .text.cvx16_bist_rdlvl_init + 0x000000003bc08768 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08768 cvx16_bist_rdlvl_init + .text.cvx16_bist_wdqlvl_init + 0x000000003bc08852 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08852 cvx16_bist_wdqlvl_init + .text.cvx16_bist_wdmlvl_init + 0x000000003bc08902 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08902 cvx16_bist_wdmlvl_init + .text.cvx16_bist_start_check + 0x000000003bc08962 0x6a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08962 cvx16_bist_start_check + .text.cvx16_rdvld_train + 0x000000003bc089cc 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc089cc cvx16_rdvld_train + .text.cvx16_dll_cal + 0x000000003bc08a72 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08a72 cvx16_dll_cal + .text.cvx16_clk_normal + 0x000000003bc08ada 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08ada cvx16_clk_normal + .text.cvx16_clk_div2 + 0x000000003bc08b36 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08b36 cvx16_clk_div2 + .text.cvx16_clk_div40 + 0x000000003bc08b4c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08b4c cvx16_clk_div40 + .text.cvx16_chg_pll_freq + 0x000000003bc08b62 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08b62 cvx16_chg_pll_freq + .text.cvx16_ddr_phy_power_on_seq1 + 0x000000003bc08c5a 0x44 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08c5a cvx16_ddr_phy_power_on_seq1 + .text.cvx16_ddr_phy_power_on_seq2 + 0x000000003bc08c9e 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08c9e cvx16_ddr_phy_power_on_seq2 + .text.cvx16_ddr_phy_power_on_seq3 + 0x000000003bc08ce6 0x3a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08ce6 cvx16_ddr_phy_power_on_seq3 + .text.cvx16_wait_for_dfi_init_complete + 0x000000003bc08d20 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08d20 cvx16_wait_for_dfi_init_complete + .text.cvx16_polling_dfi_init_start + 0x000000003bc08d58 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08d58 cvx16_polling_dfi_init_start + .text.cvx16_set_dfi_init_complete + 0x000000003bc08d72 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08d72 cvx16_set_dfi_init_complete + .text.cvx16_INT_ISR_08 + 0x000000003bc08d9a 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08d9a cvx16_INT_ISR_08 + .text.cvx16_polling_synp_normal_mode + 0x000000003bc08dc6 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08dc6 cvx16_polling_synp_normal_mode + .text.cvx16_dfi_ca_park_prbs + 0x000000003bc08de2 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08de2 cvx16_dfi_ca_park_prbs + .text.cvx16_wrlvl_req + 0x000000003bc08e4a 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08e4a cvx16_wrlvl_req + .text.cvx16_setting_check + 0x000000003bc08e4c 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08e4c cvx16_setting_check + .text.cvx16_set_dfi_init_start + 0x000000003bc08e6c 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08e6c cvx16_set_dfi_init_start + .text.cvx16_pll_init + 0x000000003bc08e92 0x9c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08e92 cvx16_pll_init + .text.cvx16_clk_gating_disable + 0x000000003bc08f2e 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08f2e cvx16_clk_gating_disable + .text.cvx16_clk_gating_enable + 0x000000003bc08f78 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08f78 cvx16_clk_gating_enable + .text.cvx16_rdglvl_req + 0x000000003bc08fe8 0xc6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc08fe8 cvx16_rdglvl_req + .text.cvx16_rdlvl_req + 0x000000003bc090ae 0x170 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc090ae cvx16_rdlvl_req + .text.cvx16_wdqlvl_req + 0x000000003bc0921e 0x182 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc0921e cvx16_wdqlvl_req + .text.cvx16_en_rec_vol_mode + 0x000000003bc093a0 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc093a0 cvx16_en_rec_vol_mode + .text.ctrl_init_detect_dram_size + 0x000000003bc093ba 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc093ba ctrl_init_detect_dram_size + .text.pll_init + 0x000000003bc093dc 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc093dc pll_init + .text.cvx16_pinmux + 0x000000003bc09460 0x33a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + 0x000000003bc09460 cvx16_pinmux + .text.cvx16_dram_cap_check + 0x000000003bc0979a 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + 0x000000003bc0979a cvx16_dram_cap_check + .text.ddrc_init + 0x000000003bc0979c 0x1fe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc0979c ddrc_init + .text.ctrl_init_high_patch + 0x000000003bc0999a 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc0999a ctrl_init_high_patch + .text.ctrl_init_low_patch + 0x000000003bc099c8 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc099c8 ctrl_init_low_patch + .text.ctrl_init_update_by_dram_size + 0x000000003bc099f6 0x21c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc099f6 ctrl_init_update_by_dram_size + .text.phy_init + 0x000000003bc09c12 0x3da /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + 0x000000003bc09c12 phy_init + *(.rodata*) + *fill* 0x000000003bc09fec 0x4 + .rodata.build_message + 0x000000003bc09ff0 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o + 0x000000003bc09ff0 build_message + *fill* 0x000000003bc0a00a 0x6 + .rodata.version_string + 0x000000003bc0a010 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o + 0x000000003bc0a010 version_string + .rodata.jump_to_monitor.str1.8 + 0x000000003bc0a020 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + *fill* 0x000000003bc0a046 0x2 + .rodata.tf_printf.str1.8 + 0x000000003bc0a048 0x3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + *fill* 0x000000003bc0a04b 0x1 + .rodata.tf_printf + 0x000000003bc0a04c 0x5c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .rodata.__system_reset.str1.8 + 0x000000003bc0a0a8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a0ba 0x6 + .rodata.panic_handler.str1.8 + 0x000000003bc0a0c0 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a0d6 0x2 + .rodata.reset_c906l.str1.8 + 0x000000003bc0a0d8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .rodata.sys_pll_nd.str1.8 + 0x000000003bc0a0e0 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a0e9 0x7 + .rodata.sys_pll_init.str1.8 + 0x000000003bc0a0f0 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a0f9 0x7 + .rodata.switch_rtc_mode_2nd_stage.str1.8 + 0x000000003bc0a100 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a114 0x4 + .rodata.set_rtc_en_registers.str1.8 + 0x000000003bc0a118 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + *fill* 0x000000003bc0a144 0x4 + .rodata.cst8 0x000000003bc0a148 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .rodata.hex2ascii_data + 0x000000003bc0a170 0x25 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + 0x000000003bc0a170 hex2ascii_data + *fill* 0x000000003bc0a195 0x3 + .rodata.cst8 0x000000003bc0a198 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .rodata.load_image_by_usb.str1.8 + 0x000000003bc0a1a0 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a1ba 0x6 + .rodata.load_param2.str1.8 + 0x000000003bc0a1c0 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .rodata.load_ddr_param.str1.8 + 0x000000003bc0a218 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .rodata.load_ddr.str1.8 + 0x000000003bc0a260 0x4d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a2ad 0x3 + .rodata.load_blcp_2nd.str1.8 + 0x000000003bc0a2b0 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .rodata.load_monitor.str1.8 + 0x000000003bc0a390 0xcf /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a45f 0x1 + .rodata.load_loader_2nd.str1.8 + 0x000000003bc0a460 0xce /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a52e 0x2 + .rodata.load_rest.str1.8 + 0x000000003bc0a530 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .rodata.bl2_main.str1.8 + 0x000000003bc0a590 0x84 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + *fill* 0x000000003bc0a614 0x4 + .rodata.cst8 0x000000003bc0a618 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .rodata.SzAlloc.str1.8 + 0x000000003bc0a620 0x1f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a63f 0x1 + .rodata.decompress_lzma.str1.8 + 0x000000003bc0a640 0x92 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a6d2 0x6 + .rodata.decompress_lz4.str1.8 + 0x000000003bc0a6d8 0x72 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a74a 0x6 + .rodata.decompress.str1.8 + 0x000000003bc0a750 0x31 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + *fill* 0x000000003bc0a781 0x7 + .rodata.__func__.0 + 0x000000003bc0a788 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .rodata.__func__.1 + 0x000000003bc0a790 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .rodata.reset.str1.8 + 0x000000003bc0a7a0 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a7b6 0x2 + .rodata.unbind.str1.8 + 0x000000003bc0a7b8 0xd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a7c5 0x3 + .rodata.bind.str1.8 + 0x000000003bc0a7c8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .rodata.bulkOutCmpl.str1.8 + 0x000000003bc0a7d0 0x61 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a831 0x7 + .rodata.reqComplete.str1.8 + 0x000000003bc0a838 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a84d 0x3 + .rodata.setup.str1.8 + 0x000000003bc0a850 0xd2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0a922 0x2 + .rodata.setup 0x000000003bc0a924 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .rodata.print_buf_addr.str1.8 + 0x000000003bc0a960 0xea /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aa4a 0x6 + .rodata.acm_app_init.str1.8 + 0x000000003bc0aa50 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aa65 0x3 + .rodata.AcmApp.str1.8 + 0x000000003bc0aa68 0x10b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab73 0x5 + .rodata.str1.8 + 0x000000003bc0ab78 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab7c 0x4 + .rodata.__func__.0 + 0x000000003bc0ab80 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab85 0x3 + .rodata.__func__.1 + 0x000000003bc0ab88 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab8f 0x1 + .rodata.__func__.4 + 0x000000003bc0ab90 0xb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0ab9b 0x5 + .rodata.__func__.5 + 0x000000003bc0aba0 0x6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0aba6 0x2 + .rodata.dwc2_free_request.str1.8 + 0x000000003bc0aba8 0x23 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0abcb 0x5 + .rodata.dwc2_hsotg_txfifo_flush.constprop.0.str1.8 + 0x000000003bc0abd0 0x4a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ac1a 0x6 + .rodata.dwc2_hsotg_init_fifo.constprop.0.str1.8 + 0x000000003bc0ac20 0x2d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ac4d 0x3 + .rodata._dwc2_ep_disable.isra.0.str1.8 + 0x000000003bc0ac50 0x77 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0acc7 0x1 + .rodata.dwc2_reconfig_usbd.str1.8 + 0x000000003bc0acc8 0x71 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ad39 0x7 + .rodata.dwc2_udc_probe.str1.8 + 0x000000003bc0ad40 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ad8e 0x2 + .rodata.__func__.0 + 0x000000003bc0ad90 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ada2 0x6 + .rodata.__func__.1 + 0x000000003bc0ada8 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0adb9 0x7 + .rodata.__func__.2 + 0x000000003bc0adc0 0x13 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0add3 0x5 + .rodata.__func__.3 + 0x000000003bc0add8 0x18 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .rodata.__func__.4 + 0x000000003bc0adf0 0x15 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae05 0x3 + .rodata.driver_name + 0x000000003bc0ae08 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae11 0x7 + .rodata.dwc2_udc_ops + 0x000000003bc0ae18 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .rodata.ep0name + 0x000000003bc0ae60 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae6c 0x4 + .rodata.ep1name + 0x000000003bc0ae70 0xb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae7b 0x5 + .rodata.ep2name + 0x000000003bc0ae80 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae8c 0x4 + .rodata.ep3name + 0x000000003bc0ae90 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + *fill* 0x000000003bc0ae9a 0x6 + .rodata.dwc2_handle_ep0.str1.8 + 0x000000003bc0aea0 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .rodata.dwc2_handle_ep0 + 0x000000003bc0aeb4 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + *fill* 0x000000003bc0aee4 0x4 + .rodata.dwc2_udc_irq.str1.8 + 0x000000003bc0aee8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + *fill* 0x000000003bc0aefa 0x6 + .rodata.usb_polling.str1.8 + 0x000000003bc0af00 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + *fill* 0x000000003bc0af11 0x7 + .rodata.crc16_tab + 0x000000003bc0af18 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .rodata.LZ4F_decompress + 0x000000003bc0b118 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + *fill* 0x000000003bc0b154 0x4 + .rodata.blockSizes.0 + 0x000000003bc0b158 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.dec64table + 0x000000003bc0b178 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.inc32table + 0x000000003bc0b198 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .rodata.XXH32_finalize.constprop.0 + 0x000000003bc0b1b8 0x3c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + *fill* 0x000000003bc0b1f4 0x4 + .rodata.ddr_init.str1.8 + 0x000000003bc0b1f8 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + *fill* 0x000000003bc0b21e 0x2 + .rodata.read_ddr_pkg_info.str1.8 + 0x000000003bc0b220 0xe2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + *fill* 0x000000003bc0b302 0x2 + .rodata.read_ddr_pkg_info + 0x000000003bc0b304 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + *fill* 0x000000003bc0b34c 0x4 + .rodata.ddr_sys_bring_up.str1.8 + 0x000000003bc0b350 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + 0x81 (size before relaxing) + .rodata.cst8 0x000000003bc0b3d8 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .rodata.cvx16_pinmux + 0x000000003bc0b3f8 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .rodata.ctrl_init_update_by_dram_size + 0x000000003bc0b420 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc0b434 __RO_END__ = . + +.rela.dyn 0x000000003bc0b438 0x0 + .rela.text.setup_dl_flag + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o + .rela.text.load_param2 + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o + .rela.text.load_ddr_param + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o + .rela.text.load_ddr + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o + .rela.text.load_blcp_2nd + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o + .rela.text.load_monitor + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o + .rela.text.load_loader_2nd + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o + .rela.text.load_rest + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o + .rela.text.init + 0x000000003bc0b438 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o + +.data 0x000000003bc0b434 0x2cc + 0x000000003bc0b440 . = ALIGN (0x10) + *fill* 0x000000003bc0b434 0xc + 0x000000003bc0b440 __DATA_START__ = . + *(.data*) + .data.time_records + 0x000000003bc0b440 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + 0x000000003bc0b440 time_records + .data.ConfDesc + 0x000000003bc0b448 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b451 0x7 + .data.acm_buf 0x000000003bc0b458 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .data.acm_call_mgmt_descriptor + 0x000000003bc0b460 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b465 0x3 + .data.acm_control_interface_desc + 0x000000003bc0b468 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b471 0x7 + .data.acm_data_interface_desc + 0x000000003bc0b478 0x9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b481 0x7 + .data.acm_descriptor + 0x000000003bc0b488 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b48c 0x4 + .data.acm_fs_in_desc + 0x000000003bc0b490 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b497 0x1 + .data.acm_fs_notify_desc + 0x000000003bc0b498 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b49f 0x1 + .data.acm_fs_out_desc + 0x000000003bc0b4a0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4a7 0x1 + .data.acm_header_desc + 0x000000003bc0b4a8 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4ad 0x3 + .data.acm_hs_in_desc + 0x000000003bc0b4b0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4b7 0x1 + .data.acm_hs_notify_desc + 0x000000003bc0b4b8 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4bf 0x1 + .data.acm_hs_out_desc + 0x000000003bc0b4c0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4c7 0x1 + .data.acm_union_desc + 0x000000003bc0b4c8 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4cd 0x3 + .data.bosDesc 0x000000003bc0b4d0 0x5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4d5 0x3 + .data.bulkBufAlloc + 0x000000003bc0b4d8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .data.capabilityExtDesc + 0x000000003bc0b4e0 0x7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b4e7 0x1 + .data.cb0_buf 0x000000003bc0b4e8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .data.cb1_buf 0x000000003bc0b4f0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .data.cb2_buf 0x000000003bc0b4f8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .data.cmdBufAlloc + 0x000000003bc0b500 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .data.descriptorsFs + 0x000000003bc0b508 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .data.descriptorsHs + 0x000000003bc0b558 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .data.devHsDesc + 0x000000003bc0b5a8 0x12 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b5ba 0x6 + .data.drv_obj 0x000000003bc0b5c0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .data.ep0BuffAlloc + 0x000000003bc0b610 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .data.g_driver + 0x000000003bc0b618 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .data.handler 0x000000003bc0b670 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .data.languageDesc + 0x000000003bc0b678 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b67c 0x4 + .data.qualifierDesc + 0x000000003bc0b680 0xa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc0b68a 0x6 + .data.rsp_buf 0x000000003bc0b690 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .data.setup_buf + 0x000000003bc0b698 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .data.dwc2_ep_ops + 0x000000003bc0b6a0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .data.ep0_fifo_size + 0x000000003bc0b6f0 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .data.ep_fifo_size + 0x000000003bc0b6f4 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .data.cv_usb_vid + 0x000000003bc0b6f8 0x2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + 0x000000003bc0b6f8 cv_usb_vid + *fill* 0x000000003bc0b6fa 0x2 + .data.ddr_data_rate + 0x000000003bc0b6fc 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + 0x000000003bc0b6fc ddr_data_rate + 0x000000003bc0b700 . = ALIGN (0x10) + 0x000000003bc0b700 __DATA_END__ = . + +stacks 0x000000003bc0b700 0x2000 + 0x000000003bc0b700 . = ALIGN (0x40) + *fill* 0x000000003bc0b700 0x0 + 0x000000003bc0b700 __STACKS_START__ = . + 0x000000003bc0d700 . = (. + 0x2000) + *fill* 0x000000003bc0b700 0x2000 + 0x000000003bc0d700 . = ALIGN (0x40) + 0x000000003bc0d700 __STACKS_END__ = . + +.bss 0x000000003bc0d800 0x5c10 + 0x000000003bc0d800 . = ALIGN (0x10) + 0x000000003bc0d800 __BSS_START__ = . + *(SORT_BY_ALIGNMENT(.bss*)) + .bss.fip_param2 + 0x000000003bc0d800 0x1000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .bss.sram_union_buf + 0x000000003bc0e800 0x4000 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .bss.acm_bufArr + 0x000000003bc12800 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12800 acm_bufArr + .bss.bulkBufAllocArr + 0x000000003bc12880 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12880 bulkBufAllocArr + .bss.cb0_bufArr + 0x000000003bc12a80 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12a80 cb0_bufArr + .bss.cb1_bufArr + 0x000000003bc12b00 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12b00 cb1_bufArr + .bss.cb2_bufArr + 0x000000003bc12b80 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12b80 cb2_bufArr + .bss.cmdBufAllocArr + 0x000000003bc12c00 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12c00 cmdBufAllocArr + .bss.ep0BuffAllocArr + 0x000000003bc12e00 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12e00 ep0BuffAllocArr + .bss.handlerArr + 0x000000003bc12e80 0x400 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc12e80 handlerArr + .bss.rsp_bufArr + 0x000000003bc13280 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc13280 rsp_bufArr + *fill* 0x000000003bc13290 0x30 + .bss.setup_bufArr + 0x000000003bc132c0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc132c0 setup_bufArr + .bss.fw_dynamic_info + 0x000000003bc132c8 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .bss.comp_alloc_buf + 0x000000003bc132f8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .bss.comp_alloc_size + 0x000000003bc13300 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .bss.acm 0x000000003bc13308 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc13308 acm + .bss.bulkBuf 0x000000003bc13310 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .bss.bulkInReq + 0x000000003bc13318 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .bss.bulkOutReq + 0x000000003bc13320 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .bss.cmdBuf 0x000000003bc13328 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .bss.ep0Buff 0x000000003bc13330 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .bss.ep0Req 0x000000003bc13338 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .bss.epIn 0x000000003bc13340 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .bss.epOut 0x000000003bc13348 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .bss.fip_buf 0x000000003bc13350 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .bss.productDesc + 0x000000003bc13358 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc13374 0x4 + .bss.serial.2 0x000000003bc13378 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .bss.serialDesc + 0x000000003bc13388 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + *fill* 0x000000003bc133a4 0x4 + .bss.vendorDesc + 0x000000003bc133a8 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .bss.reg 0x000000003bc133b8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc133b8 reg + .bss.the_controller + 0x000000003bc133c0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0x000000003bc133c0 the_controller + .bss.reg_set 0x000000003bc133c8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc133c8 reg_set + .bss.reg_span 0x000000003bc133d0 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc133d0 reg_span + .bss.reg_step 0x000000003bc133d8 0x8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc133d8 reg_step + .bss.fip_tx_offset + 0x000000003bc133e0 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .bss.fip_tx_size + 0x000000003bc133e4 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .bss.transfer_size + 0x000000003bc133e8 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .bss.ts 0x000000003bc133ec 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .bss.rddata 0x000000003bc133f0 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x000000003bc133f0 rddata + .bss.dev_freq 0x000000003bc133f4 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc133f4 dev_freq + .bss.freq_in 0x000000003bc133f8 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc133f8 freq_in + .bss.mod_freq 0x000000003bc133fc 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc133fc mod_freq + .bss.tar_freq 0x000000003bc13400 0x4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x000000003bc13400 tar_freq + .bss.ack_idx.6 + 0x000000003bc13404 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .bss.acm_configValue + 0x000000003bc13405 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + 0x000000003bc13405 acm_configValue + .bss.configBreak + 0x000000003bc13406 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .bss.configValue + 0x000000003bc13407 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .bss.flagEnterDL + 0x000000003bc13408 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .bss.flagReboot + 0x000000003bc13409 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .bss.is_serial_patched.3 + 0x000000003bc1340a 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .bss.mem_alloc_cnt + 0x000000003bc1340b 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .bss.ddr_capacity + 0x000000003bc1340c 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1340c ddr_capacity + .bss.ddr_type 0x000000003bc1340d 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1340d ddr_type + .bss.ddr_vendor + 0x000000003bc1340e 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1340e ddr_vendor + .bss.pkg 0x000000003bc1340f 0x1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + 0x000000003bc1340f pkg + *(COMMON) + 0x000000003bc13410 . = ALIGN (0x10) + 0x000000003bc13410 __BSS_END__ = . + 0x000000003bc13410 __BL2_END__ = . + 0x0000000000005c10 __BSS_SIZE__ = SIZEOF (.bss) + 0x0000000000000001 ASSERT ((. <= 0x3bc19000), BL2 image has exceeded its limit.) + 0x0000000004400100 p_rom_api_cryptodma_aes_decrypt = 0x4400100 + 0x0000000004400080 p_rom_api_flash_init = 0x4400080 + 0x0000000004400020 p_rom_api_get_boot_src = 0x4400020 + 0x00000000044000c0 p_rom_api_get_number_of_retries = 0x44000c0 + 0x00000000044000a0 p_rom_api_image_crc = 0x44000a0 + 0x0000000004400060 p_rom_api_load_image = 0x4400060 + 0x0000000004400040 p_rom_api_set_boot_src = 0x4400040 + 0x00000000044000e0 p_rom_api_verify_rsa = 0x44000e0 +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/assert.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_entrypoint.o +OUTPUT(/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2.elf elf64-littleriscv) + +.debug_info 0x0000000000000000 0x68732 + .debug_info 0x0000000000000000 0x89 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o + .debug_info 0x0000000000000089 0x1a1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_info 0x000000000000022a 0x1e4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .debug_info 0x000000000000040e 0x45f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .debug_info 0x000000000000086d 0x3d6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_info 0x0000000000000c43 0x33f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .debug_info 0x0000000000000f82 0x474 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_info 0x00000000000013f6 0x1a24 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_info 0x0000000000002e1a 0x622 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .debug_info 0x000000000000343c 0x22a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .debug_info 0x0000000000003666 0x41f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .debug_info 0x0000000000003a85 0x2d6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .debug_info 0x0000000000003d5b 0x13d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o + .debug_info 0x0000000000003e98 0xf6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o + .debug_info 0x0000000000003f8e 0x483 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_info 0x0000000000004411 0x1c6e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_info 0x000000000000607f 0x9df /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_info 0x0000000000006a5e 0x3a2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_info 0x0000000000006e00 0x2fa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_info 0x0000000000009da8 0x3221 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_info 0x000000000000cfc9 0x39b8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_info 0x0000000000010981 0x2b7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_info 0x0000000000010c38 0x279 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .debug_info 0x0000000000010eb1 0x17cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_info 0x000000000001267e 0x285e2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .debug_info 0x000000000003ac60 0x4039 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_info 0x000000000003ec99 0x1a7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .debug_info 0x000000000003ee40 0x516 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_info 0x000000000003f356 0x1135 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_info 0x000000000004048b 0x23242 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_info 0x00000000000636cd 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_info 0x00000000000638ad 0x11b2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_info 0x0000000000064a5f 0xc8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_info 0x0000000000064b27 0x1c32 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_info 0x0000000000066759 0x1fab /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .debug_info 0x0000000000068704 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_entrypoint.o + +.debug_abbrev 0x0000000000000000 0x4de5 + .debug_abbrev 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o + .debug_abbrev 0x0000000000000048 0xc1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_abbrev 0x0000000000000109 0xb0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .debug_abbrev 0x00000000000001b9 0x1ae /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .debug_abbrev 0x0000000000000367 0x197 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_abbrev 0x00000000000004fe 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .debug_abbrev 0x0000000000000685 0x1e5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_abbrev 0x000000000000086a 0x371 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_abbrev 0x0000000000000bdb 0x134 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .debug_abbrev 0x0000000000000d0f 0x11a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .debug_abbrev 0x0000000000000e29 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .debug_abbrev 0x0000000000000f49 0x15d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .debug_abbrev 0x00000000000010a6 0xac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o + .debug_abbrev 0x0000000000001152 0x8c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o + .debug_abbrev 0x00000000000011de 0x202 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_abbrev 0x00000000000013e0 0x42f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_abbrev 0x000000000000180f 0x305 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_abbrev 0x0000000000001b14 0x181 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_abbrev 0x0000000000001c95 0x6f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_abbrev 0x000000000000238b 0x657 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_abbrev 0x00000000000029e2 0x55c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_abbrev 0x0000000000002f3e 0x15a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_abbrev 0x0000000000003098 0x12f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .debug_abbrev 0x00000000000031c7 0x454 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_abbrev 0x000000000000361b 0x69b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .debug_abbrev 0x0000000000003cb6 0x4b9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_abbrev 0x000000000000416f 0xe9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .debug_abbrev 0x0000000000004258 0x17f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_abbrev 0x00000000000043d7 0x203 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_abbrev 0x00000000000045da 0x3e8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_abbrev 0x00000000000049c2 0x9e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_abbrev 0x0000000000004a60 0xd3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_abbrev 0x0000000000004b33 0x69 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_abbrev 0x0000000000004b9c 0x16b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_abbrev 0x0000000000004d07 0xca /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .debug_abbrev 0x0000000000004dd1 0x14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_entrypoint.o + +.debug_aranges 0x0000000000000000 0x1e80 + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o + .debug_aranges + 0x0000000000000020 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_aranges + 0x0000000000000070 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .debug_aranges + 0x00000000000000e0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .debug_aranges + 0x0000000000000170 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_aranges + 0x00000000000001b0 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .debug_aranges + 0x0000000000000250 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_aranges + 0x00000000000002a0 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_aranges + 0x0000000000000380 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .debug_aranges + 0x00000000000003b0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .debug_aranges + 0x00000000000003f0 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .debug_aranges + 0x0000000000000470 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .debug_aranges + 0x00000000000004a0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o + .debug_aranges + 0x00000000000004e0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o + .debug_aranges + 0x0000000000000510 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_aranges + 0x0000000000000560 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_aranges + 0x0000000000000630 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_aranges + 0x00000000000006d0 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_aranges + 0x0000000000000770 0x170 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_aranges + 0x00000000000008e0 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_aranges + 0x0000000000000ae0 0x190 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_aranges + 0x0000000000000c70 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_aranges + 0x0000000000000ca0 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .debug_aranges + 0x0000000000000cf0 0x100 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_aranges + 0x0000000000000df0 0x7c0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .debug_aranges + 0x00000000000015b0 0x1b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_aranges + 0x0000000000001760 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .debug_aranges + 0x0000000000001790 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_aranges + 0x0000000000001800 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_aranges + 0x0000000000001850 0x4e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_aranges + 0x0000000000001d30 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_aranges + 0x0000000000001d60 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_aranges + 0x0000000000001d90 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_aranges + 0x0000000000001dc0 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_aranges + 0x0000000000001e20 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .debug_aranges + 0x0000000000001e50 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_entrypoint.o + +.debug_macro 0x0000000000000000 0x9b13 + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o + .debug_macro 0x0000000000000011 0x86e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o + .debug_macro 0x000000000000087f 0x115 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000000994 0x874 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001208 0x26f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001477 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001488 0x187 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x000000000000160f 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001655 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x000000000000166b 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001693 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x00000000000016af 0x1af /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x000000000000185e 0xc5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001923 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x00000000000019a5 0x229 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001bce 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001c8c 0xfa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001d86 0x1e0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x0000000000001f66 0x186b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_macro 0x00000000000037d1 0x12c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .debug_macro 0x00000000000038fd 0x121 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .debug_macro 0x0000000000003a1e 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_macro 0x0000000000003b4e 0x178 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000003cc6 0xcc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000003d92 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .debug_macro 0x0000000000003da8 0x146 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000003eee 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x0000000000003f94 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x000000000000404c 0x2e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_macro 0x000000000000407a 0x14b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x00000000000041c5 0x277 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x000000000000443c 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x00000000000044d0 0xe2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_macro 0x00000000000045b2 0x125 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .debug_macro 0x00000000000046d7 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .debug_macro 0x0000000000004754 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .debug_macro 0x000000000000479a 0x9b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .debug_macro 0x0000000000004835 0x11b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004950 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004966 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004982 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .debug_macro 0x0000000000004a40 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o + .debug_macro 0x0000000000004a90 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o + .debug_macro 0x0000000000004ad6 0x1f9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000004ccf 0xa60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x000000000000572f 0x872 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000005fa1 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000005fe1 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000005ffd 0x22 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x000000000000601f 0x106 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_macro 0x0000000000006125 0x192 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x00000000000062b7 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x00000000000062cd 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_macro 0x00000000000062f5 0x13c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000006431 0x16b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x000000000000659c 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x00000000000065b2 0x61 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_macro 0x0000000000006613 0x9d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x00000000000066b0 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_macro 0x0000000000006702 0x200 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006902 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006918 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006928 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000693e 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000697e 0x51d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000006e9b 0x17a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000007015 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000703d 0x4fd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000753a 0x94 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x00000000000075ce 0x76 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x0000000000007644 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_macro 0x000000000000765a 0x207 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007861 0x16 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007877 0x4c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x00000000000078c3 0x517 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_macro 0x0000000000007dda 0x1cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_macro 0x0000000000007fa7 0x130 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_macro 0x00000000000080d7 0x4e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .debug_macro 0x0000000000008125 0x308 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_macro 0x000000000000842d 0x2ef /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x000000000000871c 0xa8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000087c4 0x27 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000087eb 0x62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x000000000000884d 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000088ca 0x2c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .debug_macro 0x00000000000088f6 0x1ac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000008aa2 0x52 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_macro 0x0000000000008af4 0x11b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .debug_macro 0x0000000000008c0f 0xfb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008d0a 0x1c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008d26 0x1d3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_macro 0x0000000000008ef9 0x1c4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x00000000000090bd 0xa6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x0000000000009163 0x499 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_macro 0x00000000000095fc 0xd7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_macro 0x00000000000096d3 0x110 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x00000000000097e3 0xac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_macro 0x000000000000988f 0xa1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_macro 0x0000000000009930 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_macro 0x00000000000099c8 0xaa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_macro 0x0000000000009a72 0xa1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + +.debug_line 0x0000000000000000 0x75d63 + .debug_line 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o + .debug_line 0x0000000000000028 0x231 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_line 0x0000000000000259 0x351 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .debug_line 0x00000000000005aa 0x4f5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .debug_line 0x0000000000000a9f 0x341 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_line 0x0000000000000de0 0x559 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .debug_line 0x0000000000001339 0x812 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_line 0x0000000000001b4b 0x1538 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_line 0x0000000000003083 0x21d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .debug_line 0x00000000000032a0 0x2db /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .debug_line 0x000000000000357b 0x5f0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .debug_line 0x0000000000003b6b 0x2f7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .debug_line 0x0000000000003e62 0x1f6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o + .debug_line 0x0000000000004058 0x117 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o + .debug_line 0x000000000000416f 0x589 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_line 0x00000000000046f8 0x14d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_line 0x0000000000005bd0 0x792 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_line 0x0000000000006362 0x282 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_line 0x00000000000065e4 0x265c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_line 0x0000000000008c40 0x27a7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_line 0x000000000000b3e7 0x3667 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_line 0x000000000000ea4e 0x2d9 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_line 0x000000000000ed27 0x2a4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .debug_line 0x000000000000efcb 0x4528 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_line 0x00000000000134f3 0x34953 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .debug_line 0x0000000000047e46 0x3d78 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_line 0x000000000004bbbe 0x260 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .debug_line 0x000000000004be1e 0x622 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_line 0x000000000004c440 0xcb5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_line 0x000000000004d0f5 0x251fe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_line 0x00000000000722f3 0x301 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_line 0x00000000000725f4 0xc73 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_line 0x0000000000073267 0x165 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_line 0x00000000000733cc 0x136a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_line 0x0000000000074736 0x145c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + .debug_line 0x0000000000075b92 0x1d1 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_entrypoint.o + +.debug_str 0x0000000000000000 0x2394c + .debug_str 0x0000000000000000 0x2979 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o + 0x29a6 (size before relaxing) + .debug_str 0x0000000000002979 0x94ac /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + 0xbeb1 (size before relaxing) + .debug_str 0x000000000000be25 0x217 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + 0x7166 (size before relaxing) + .debug_str 0x000000000000c03c 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + 0xbf4c (size before relaxing) + .debug_str 0x000000000000c134 0x243 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + 0x720d (size before relaxing) + .debug_str 0x000000000000c377 0x2ec /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + 0x67d1 (size before relaxing) + .debug_str 0x000000000000c663 0x7f0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + 0x7789 (size before relaxing) + .debug_str 0x000000000000ce53 0xf0b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + 0x7f4a (size before relaxing) + .debug_str 0x000000000000dd5e 0x30c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + 0x7793 (size before relaxing) + .debug_str 0x000000000000e06a 0x281 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + 0x4370 (size before relaxing) + .debug_str 0x000000000000e2eb 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + 0x46c2 (size before relaxing) + .debug_str 0x000000000000e36b 0x4b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + 0x709e (size before relaxing) + .debug_str 0x000000000000e3b6 0x26 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o + 0x3c13 (size before relaxing) + .debug_str 0x000000000000e3dc 0x1b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o + 0x3a8b (size before relaxing) + .debug_str 0x000000000000e3f7 0x5ca5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + 0xd1bf (size before relaxing) + .debug_str 0x000000000001409c 0x443 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + 0x81e5 (size before relaxing) + .debug_str 0x00000000000144df 0xc1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + 0x8108 (size before relaxing) + .debug_str 0x00000000000150f9 0x1cd /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + 0x437f (size before relaxing) + .debug_str 0x00000000000152c6 0x4ba0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + 0xca10 (size before relaxing) + .debug_str 0x0000000000019e66 0x6fa /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + 0xba4a (size before relaxing) + .debug_str 0x000000000001a560 0x314 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + 0xb7f6 (size before relaxing) + .debug_str 0x000000000001a874 0x19 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + 0x75af (size before relaxing) + .debug_str 0x000000000001a88d 0x46 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + 0x4115 (size before relaxing) + .debug_str 0x000000000001a8d3 0x12b6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + 0x903e (size before relaxing) + .debug_str 0x000000000001bb89 0x3a87 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + 0x85bd (size before relaxing) + .debug_str 0x000000000001f610 0x7f5 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + 0x7a5b (size before relaxing) + .debug_str 0x000000000001fe05 0x51 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + 0x71fd (size before relaxing) + .debug_str 0x000000000001fe56 0x7d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + 0x72aa (size before relaxing) + .debug_str 0x000000000001fed3 0x2ed3 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + 0x9ee5 (size before relaxing) + .debug_str 0x0000000000022da6 0xa62 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + 0x8793 (size before relaxing) + .debug_str 0x0000000000023808 0x50 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + 0x985d (size before relaxing) + .debug_str 0x0000000000023858 0x1f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + 0x5093 (size before relaxing) + .debug_str 0x0000000000023877 0x27 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + 0x4e2c (size before relaxing) + .debug_str 0x000000000002389e 0x4f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + 0x7579 (size before relaxing) + .debug_str 0x00000000000238ed 0x34 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + 0x743b (size before relaxing) + .debug_str 0x0000000000023921 0x2b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_entrypoint.o + 0x65 (size before relaxing) + +.comment 0x0000000000000000 0x1d + .comment 0x0000000000000000 0x1d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o + 0x1e (size before relaxing) + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .comment 0x000000000000001d 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + +.note.GNU-stack + 0x0000000000000000 0x0 + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + +.debug_ranges 0x0000000000000000 0x2f790 + .debug_ranges 0x0000000000000000 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_ranges 0x0000000000000040 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .debug_ranges 0x00000000000000a0 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .debug_ranges 0x00000000000001c0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_ranges 0x00000000000001f0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .debug_ranges 0x0000000000000280 0x80 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_ranges 0x0000000000000300 0x8d0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_ranges 0x0000000000000bd0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .debug_ranges 0x0000000000000bf0 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .debug_ranges 0x0000000000000c20 0x120 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .debug_ranges 0x0000000000000d40 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .debug_ranges 0x0000000000000d60 0x30 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o + .debug_ranges 0x0000000000000d90 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o + .debug_ranges 0x0000000000000db0 0xe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_ranges 0x0000000000000e90 0x100 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_ranges 0x0000000000000f90 0x160 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_ranges 0x00000000000010f0 0x90 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_ranges 0x0000000000001180 0x3d0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_ranges 0x0000000000001550 0x480 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_ranges 0x00000000000019d0 0x6b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_ranges 0x0000000000002080 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_ranges 0x00000000000020a0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .debug_ranges 0x00000000000020e0 0xbe0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_ranges 0x0000000000002cc0 0x1cf40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .debug_ranges 0x000000000001fc00 0x27b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_ranges 0x00000000000223b0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .debug_ranges 0x00000000000223d0 0xd0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_ranges 0x00000000000224a0 0x190 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_ranges 0x0000000000022630 0xc470 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_ranges 0x000000000002eaa0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_ranges 0x000000000002eac0 0x210 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_ranges 0x000000000002ecd0 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_ranges 0x000000000002ecf0 0x520 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_ranges 0x000000000002f210 0x580 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + +.debug_frame 0x0000000000000000 0x47b8 + .debug_frame 0x0000000000000000 0x58 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o + .debug_frame 0x0000000000000058 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .debug_frame 0x00000000000000e0 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .debug_frame 0x0000000000000198 0x60 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_frame 0x00000000000001f8 0xf8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .debug_frame 0x00000000000002f0 0xd8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_frame 0x00000000000003c8 0x1d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_frame 0x00000000000005a0 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .debug_frame 0x00000000000005c8 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .debug_frame 0x0000000000000608 0xa0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .debug_frame 0x00000000000006a8 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .debug_frame 0x00000000000006e0 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o + .debug_frame 0x0000000000000720 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o + .debug_frame 0x0000000000000748 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_frame 0x00000000000007d0 0x258 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_frame 0x0000000000000a28 0x158 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_frame 0x0000000000000b80 0x118 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_frame 0x0000000000000c98 0x3b0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_frame 0x0000000000001048 0x5a8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_frame 0x00000000000015f0 0x520 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_frame 0x0000000000001b10 0x40 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_frame 0x0000000000001b50 0x68 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .debug_frame 0x0000000000001bb8 0x2d8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_frame 0x0000000000001e90 0x1758 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .debug_frame 0x00000000000035e8 0x488 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_frame 0x0000000000003a70 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .debug_frame 0x0000000000003aa8 0xb8 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_frame 0x0000000000003b60 0x88 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_frame 0x0000000000003be8 0xab0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_frame 0x0000000000004698 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o + .debug_frame 0x00000000000046c0 0x38 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_frame 0x00000000000046f8 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o + .debug_frame 0x0000000000004720 0x70 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_frame 0x0000000000004790 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o + +.debug_loc 0x0000000000000000 0xc12a0 + .debug_loc 0x0000000000000000 0x18c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o + .debug_loc 0x000000000000018c 0x28a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o + .debug_loc 0x0000000000000416 0x143 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o + .debug_loc 0x0000000000000559 0x24e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o + .debug_loc 0x00000000000007a7 0x8b7 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o + .debug_loc 0x000000000000105e 0x1f54 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o + .debug_loc 0x0000000000002fb2 0x39 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o + .debug_loc 0x0000000000002feb 0x450 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o + .debug_loc 0x000000000000343b 0xc56 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o + .debug_loc 0x0000000000004091 0xbe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o + .debug_loc 0x000000000000414f 0x262 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o + .debug_loc 0x00000000000043b1 0x82 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o + .debug_loc 0x0000000000004433 0x38f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o + .debug_loc 0x00000000000047c2 0xe17 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o + .debug_loc 0x00000000000055d9 0x9d2 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o + .debug_loc 0x0000000000005fab 0x156 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o + .debug_loc 0x0000000000006101 0x1f8b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o + .debug_loc 0x000000000000808c 0x28fb /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o + .debug_loc 0x000000000000a987 0x4255 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o + .debug_loc 0x000000000000ebdc 0x11d /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o + .debug_loc 0x000000000000ecf9 0x33f /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o + .debug_loc 0x000000000000f038 0xa0cf /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/LzmaDec.o + .debug_loc 0x0000000000019107 0x5f2ef /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o + .debug_loc 0x00000000000783f6 0x8560 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o + .debug_loc 0x0000000000080956 0x98 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o + .debug_loc 0x00000000000809ee 0x22c /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o + .debug_loc 0x0000000000080c1a 0xdfe /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o + .debug_loc 0x0000000000081a18 0x37fb4 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o + .debug_loc 0x00000000000b99cc 0x1c14 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o + .debug_loc 0x00000000000bb5e0 0x2b75 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o + .debug_loc 0x00000000000be155 0x314b /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2.sym b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2.sym new file mode 100644 index 000000000..08b449c14 --- /dev/null +++ b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2.sym @@ -0,0 +1,400 @@ + 39: 000000003bc0e800 16384 OBJECT LOCAL DEFAULT 4 sram_union_buf + 167: 000000003bc047aa 5002 FUNC LOCAL DEFAULT 1 LzmaDec_DecodeReal2 + 38: 000000003bc0d800 4096 OBJECT LOCAL DEFAULT 4 fip_param2 + 279: 000000003bc0720e 2012 FUNC GLOBAL DEFAULT 1 LZ4F_decompress + 375: 000000003bc04096 1344 FUNC GLOBAL DEFAULT 1 dwc2_udc_irq + 168: 000000003bc05b34 1256 FUNC LOCAL DEFAULT 1 LzmaDec_TryDummy + 283: 000000003bc022d6 1144 FUNC GLOBAL DEFAULT 1 AcmApp + 62: 000000003bc01ba6 1090 FUNC LOCAL DEFAULT 1 setup + 373: 000000003bc12e80 1024 OBJECT GLOBAL DEFAULT 4 handlerArr + 394: 000000003bc09c12 986 FUNC GLOBAL DEFAULT 1 phy_init + 334: 000000003bc03d50 838 FUNC GLOBAL DEFAULT 1 dwc2_handle_ep0 + 280: 000000003bc09460 826 FUNC GLOBAL DEFAULT 1 cvx16_pinmux + 181: 000000003bc07a2c 826 FUNC LOCAL DEFAULT 1 XXH32_finalize.constprop. + 294: 000000003bc06cd4 790 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_force + 396: 000000003bc02f1a 654 FUNC GLOBAL DEFAULT 1 dwc2_reconfig_usbd + 222: 000000003bc06030 636 FUNC GLOBAL DEFAULT 1 LzmaDec_DecodeToDic + 172: 000000003bc06476 630 FUNC LOCAL DEFAULT 1 LZ4_decompress_safe_withS + 219: 000000003bc067fc 622 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe + 340: 000000003bc06a6a 618 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_withP + 58: 000000003bc0189c 564 FUNC LOCAL DEFAULT 1 bulkOutCmpl + 320: 000000003bc081c8 558 FUNC GLOBAL DEFAULT 1 read_ddr_pkg_info + 379: 000000003bc08450 548 FUNC GLOBAL DEFAULT 1 ddr_sys_bring_up + 333: 000000003bc099f6 540 FUNC GLOBAL DEFAULT 1 ctrl_init_update_by_dram_ + 312: 000000003bc01130 520 FUNC GLOBAL DEFAULT 1 load_loader_2nd + 376: 000000003bc12c00 512 OBJECT GLOBAL DEFAULT 4 cmdBufAllocArr + 218: 000000003bc12880 512 OBJECT GLOBAL DEFAULT 4 bulkBufAllocArr + 164: 000000003bc0af18 512 OBJECT LOCAL DEFAULT 1 crc16_tab + 339: 000000003bc0979c 510 FUNC GLOBAL DEFAULT 1 ddrc_init + 331: 000000003bc07f82 466 FUNC GLOBAL DEFAULT 1 XXH32_update + 337: 000000003bc07d66 454 FUNC GLOBAL DEFAULT 1 XXH32 + 136: 000000003bc02d54 422 FUNC LOCAL DEFAULT 1 _dwc2_ep_disable.isra.0 + 174: 000000003bc0703a 420 FUNC LOCAL DEFAULT 1 LZ4F_decodeHeader + 341: 000000003bc00358 410 FUNC GLOBAL DEFAULT 1 tf_printf + 275: 000000003bc0068e 398 FUNC GLOBAL DEFAULT 1 sys_pll_nd + 225: 000000003bc0921e 386 FUNC GLOBAL DEFAULT 1 cvx16_wdqlvl_req + 237: 000000003bc090ae 368 FUNC GLOBAL DEFAULT 1 cvx16_rdlvl_req + 325: 000000003bc00ea4 358 FUNC GLOBAL DEFAULT 1 load_blcp_2nd + 159: 000000003bc03960 348 FUNC LOCAL DEFAULT 1 setdma_tx + 268: 000000003bc031a8 342 FUNC GLOBAL DEFAULT 1 usb_gadget_register_drive + 314: 000000003bc03310 336 FUNC GLOBAL DEFAULT 1 dwc2_udc_probe + 282: 000000003bc02162 312 FUNC GLOBAL DEFAULT 1 acm_app_init + 248: 000000003bc0100a 294 FUNC GLOBAL DEFAULT 1 load_monitor + 173: 000000003bc066ec 272 FUNC LOCAL DEFAULT 1 LZ4F_updateDict + 158: 000000003bc0380a 252 FUNC LOCAL DEFAULT 1 complete_rx + 271: 000000003bc08b62 248 FUNC GLOBAL DEFAULT 1 cvx16_chg_pll_freq + 307: 000000003bc08768 234 FUNC GLOBAL DEFAULT 1 cvx16_bist_rdlvl_init + 301: 000000003bc014fa 232 FUNC GLOBAL DEFAULT 1 decompress_lzma + 229: 000000003bc01338 230 FUNC GLOBAL DEFAULT 1 load_rest + 135: 000000003bc02c7a 218 FUNC LOCAL DEFAULT 1 dwc2_hsotg_init_fifo.cons + 317: 000000003bc045ee 216 FUNC GLOBAL DEFAULT 1 dwc2_queue + 345: 000000003bc0208c 208 FUNC GLOBAL DEFAULT 1 print_buf_addr + 278: 000000003bc00c60 208 FUNC GLOBAL DEFAULT 1 load_param2 + 227: 000000003bc004f2 200 FUNC GLOBAL DEFAULT 1 __system_reset + 391: 000000003bc00dde 198 FUNC GLOBAL DEFAULT 1 load_ddr + 353: 000000003bc08fe8 198 FUNC GLOBAL DEFAULT 1 cvx16_rdglvl_req + 277: 000000003bc00878 188 FUNC GLOBAL DEFAULT 1 set_rtc_en_registers + 204: 000000003bc03c9e 178 FUNC GLOBAL DEFAULT 1 dwc2_udc_ep_activate + 239: 000000003bc08852 176 FUNC GLOBAL DEFAULT 1 cvx16_bist_wdqlvl_init + 383: 000000003bc01612 174 FUNC GLOBAL DEFAULT 1 decompress_lz4 + 200: 000000003bc00d30 174 FUNC GLOBAL DEFAULT 1 load_ddr_param + 366: 000000003bc063a8 170 FUNC GLOBAL DEFAULT 1 LzmaDecode + 157: 000000003bc03760 170 FUNC LOCAL DEFAULT 1 setdma_rx.isra.0 + 338: 000000003bc089cc 166 FUNC GLOBAL DEFAULT 1 cvx16_rdvld_train + 295: 000000003bc01fea 162 FUNC GLOBAL DEFAULT 1 convert_buf_addr + 129: 000000003bc0281e 160 FUNC LOCAL DEFAULT 1 dwc2_ep_enable + 297: 000000003bc08e92 156 FUNC GLOBAL DEFAULT 1 cvx16_pll_init + 342: 000000003bc029d4 154 FUNC GLOBAL DEFAULT 1 usb_gadget_unregister_dri + 298: 000000003bc0141e 152 FUNC GLOBAL DEFAULT 1 bl2_main + 133: 000000003bc02b36 144 FUNC LOCAL DEFAULT 1 dwc2_hsotg_txfifo_flush.c + 151: 000000003bc034ac 142 FUNC LOCAL DEFAULT 1 set_max_pktsize + 395: 000000003bc093dc 132 FUNC GLOBAL DEFAULT 1 pll_init + 27: 000000003bc002d6 130 FUNC LOCAL DEFAULT 1 unsigned_num_print + 347: 000000003bc12b80 128 OBJECT GLOBAL DEFAULT 4 cb2_bufArr + 321: 000000003bc12800 128 OBJECT GLOBAL DEFAULT 4 acm_bufArr + 289: 000000003bc12e00 128 OBJECT GLOBAL DEFAULT 4 ep0BuffAllocArr + 274: 000000003bc12a80 128 OBJECT GLOBAL DEFAULT 4 cb0_bufArr + 234: 000000003bc12b00 128 OBJECT GLOBAL DEFAULT 4 cb1_bufArr + 154: 000000003bc035fa 128 FUNC LOCAL DEFAULT 1 dwc2_ep0_complete_out + 263: 000000003bc016c0 126 FUNC GLOBAL DEFAULT 1 decompress + 155: 000000003bc0367a 126 FUNC LOCAL DEFAULT 1 dwc2_udc_ep0_zlp + 258: 000000003bc00b6c 124 FUNC GLOBAL DEFAULT 1 gpio_in_value + 355: 000000003bc00998 122 FUNC GLOBAL DEFAULT 1 ntostr + 211: 000000003bc0021a 120 FUNC GLOBAL DEFAULT 1 jump_to_monitor + 166: 000000003bc04738 114 FUNC LOCAL DEFAULT 1 LzmaDec_WriteRem + 262: 000000003bc08f78 112 FUNC GLOBAL DEFAULT 1 cvx16_clk_gating_enable + 256: 000000003bc08962 106 FUNC GLOBAL DEFAULT 1 cvx16_bist_start_check + 374: 000000003bc08de2 104 FUNC GLOBAL DEFAULT 1 cvx16_dfi_ca_park_prbs + 281: 000000003bc08a72 104 FUNC GLOBAL DEFAULT 1 cvx16_dll_cal + 156: 000000003bc036f8 104 FUNC LOCAL DEFAULT 1 dwc2_udc_ep0_set_stall.is + 169: 000000003bc062c8 102 FUNC LOCAL DEFAULT 1 LzmaDec_AllocateProbs2.is + 330: 000000003bc03c3c 98 FUNC GLOBAL DEFAULT 1 dwc2_udc_set_halt + 153: 000000003bc03598 98 FUNC LOCAL DEFAULT 1 dwc2_udc_ep_set_stall + 315: 000000003bc00934 96 FUNC GLOBAL DEFAULT 1 init_comm_info + 303: 000000003bc08902 96 FUNC GLOBAL DEFAULT 1 cvx16_bist_wdmlvl_init + 264: 000000003bc086c2 96 FUNC GLOBAL DEFAULT 1 cvx16_bist_wr_sram_init + 238: 000000003bc00a6c 96 FUNC GLOBAL DEFAULT 1 memcpy + 152: 000000003bc0353a 94 FUNC LOCAL DEFAULT 1 dwc2_udc_ep_clear_stall + 134: 000000003bc02bc6 94 FUNC LOCAL DEFAULT 1 kill_all_requests.isra.0 + 327: 000000003bc08ada 92 FUNC GLOBAL DEFAULT 1 cvx16_clk_normal + 60: 000000003bc01ad0 92 FUNC LOCAL DEFAULT 1 getDescAcm + 329: 000000003bc00a12 90 FUNC GLOBAL DEFAULT 1 memset + 114: 000000003bc0b618 88 OBJECT LOCAL DEFAULT 2 g_driver + 336: 000000003bc07f2c 86 FUNC GLOBAL DEFAULT 1 XXH32_reset + 313: 000000003bc02c24 86 FUNC GLOBAL DEFAULT 1 dwc2_disconnect + 131: 000000003bc02952 84 FUNC LOCAL DEFAULT 1 dwc2_dequeue + 205: 000000003bc00aec 82 FUNC GLOBAL DEFAULT 1 putchar_l + 57: 000000003bc0184a 82 FUNC LOCAL DEFAULT 1 get_unicode_string + 194: 000000003bc08400 80 FUNC GLOBAL DEFAULT 1 axi_mon_start_all + 138: 000000003bc0b6a0 80 OBJECT LOCAL DEFAULT 2 dwc2_ep_ops + 112: 000000003bc0b5c0 80 OBJECT LOCAL DEFAULT 2 drv_obj + 110: 000000003bc0b558 80 OBJECT LOCAL DEFAULT 2 descriptorsHs + 109: 000000003bc0b508 80 OBJECT LOCAL DEFAULT 2 descriptorsFs + 59: 000000003bc01b56 80 FUNC LOCAL DEFAULT 1 bulkInCmpl + 217: 000000003bc08674 78 FUNC GLOBAL DEFAULT 1 cvx16_bist_wr_prbs_init + 290: 000000003bc03460 76 FUNC GLOBAL DEFAULT 1 usb_gadget_handle_interru + 233: 000000003bc03b00 76 FUNC GLOBAL DEFAULT 1 dwc2_write_fifo_ep0 + 364: 000000003bc005ec 74 FUNC GLOBAL DEFAULT 1 reset_c906l + 363: 000000003bc00636 74 FUNC GLOBAL DEFAULT 1 setup_dl_flag + 323: 000000003bc0632e 74 FUNC GLOBAL DEFAULT 1 LzmaProps_Decode + 284: 000000003bc08f2e 74 FUNC GLOBAL DEFAULT 1 cvx16_clk_gating_disable + 292: 000000003bc08c9e 72 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 215: 000000003bc03b4c 72 FUNC GLOBAL DEFAULT 1 dwc2_set_address + 145: 000000003bc0ae18 72 OBJECT LOCAL DEFAULT 1 dwc2_udc_ops + 127: 000000003bc0279e 72 FUNC LOCAL DEFAULT 1 pullup + 392: 000000003bc028cc 70 FUNC GLOBAL DEFAULT 1 udc_reinit + 236: 000000003bc02af0 70 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_wait_bit_set + 223: 000000003bc08722 70 FUNC GLOBAL DEFAULT 1 cvx16_bist_rdglvl_init + 382: 000000003bc0391c 68 FUNC GLOBAL DEFAULT 1 dwc2_ep_fifo_write + 371: 000000003bc03abc 68 FUNC GLOBAL DEFAULT 1 dwc2_ep_fifo_read + 228: 000000003bc00834 68 FUNC GLOBAL DEFAULT 1 switch_rtc_mode_2nd_stage + 221: 000000003bc08c5a 68 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 56: 000000003bc01808 66 FUNC LOCAL DEFAULT 1 bind + 42: 000000003bc014b8 66 FUNC LOCAL DEFAULT 1 SzAlloc + 380: 000000003bc08154 64 FUNC GLOBAL DEFAULT 1 XXH32_digest + 356: 000000003bc046c6 64 FUNC GLOBAL DEFAULT 1 usb_polling + 351: 000000003bc03bfc 64 FUNC GLOBAL DEFAULT 1 dwc2_udc_set_nak + 310: 000000003bc00c20 64 FUNC GLOBAL DEFAULT 1 load_image_by_usb + 306: 000000003bc02912 64 FUNC GLOBAL DEFAULT 1 dwc2_done + 242: 000000003bc03bbc 64 FUNC GLOBAL DEFAULT 1 dwc2_ep0_write + 132: 000000003bc02ab4 60 FUNC LOCAL DEFAULT 1 wakeup + 267: 000000003bc08ce6 58 FUNC GLOBAL DEFAULT 1 cvx16_ddr_phy_power_on_se + 126: 000000003bc02764 58 FUNC LOCAL DEFAULT 1 dwc2_free_request + 232: 000000003bc08d20 56 FUNC GLOBAL DEFAULT 1 cvx16_wait_for_dfi_init_c + 128: 000000003bc027e6 56 FUNC LOCAL DEFAULT 1 dwc2_alloc_request + 50: 000000003bc0174a 56 FUNC LOCAL DEFAULT 1 requestMemAlloc + 381: 000000003bc08194 52 FUNC GLOBAL DEFAULT 1 ddr_init + 252: 000000003bc005ba 50 FUNC GLOBAL DEFAULT 1 panic_handler + 230: 000000003bc04706 50 FUNC GLOBAL DEFAULT 1 crc16_ccitt + 296: 000000003bc06378 48 FUNC GLOBAL DEFAULT 1 LzmaDec_AllocateProbs + 287: 000000003bc022a6 48 FUNC GLOBAL DEFAULT 1 get_usb_polling_timeout_v + 285: 000000003bc071de 48 FUNC GLOBAL DEFAULT 1 LZ4F_createDecompressionC + 24: 000000003bc132c8 48 OBJECT LOCAL DEFAULT 4 fw_dynamic_info + 390: 000000003bc0999a 46 FUNC GLOBAL DEFAULT 1 ctrl_init_high_patch + 253: 000000003bc029a6 46 FUNC GLOBAL DEFAULT 1 dwc2_nuke + 246: 000000003bc099c8 46 FUNC GLOBAL DEFAULT 1 ctrl_init_low_patch + 54: 000000003bc017b4 46 FUNC LOCAL DEFAULT 1 disconnect + 293: 000000003bc08d9a 44 FUNC GLOBAL DEFAULT 1 cvx16_INT_ISR_08 + 179: 000000003bc079ea 44 FUNC LOCAL DEFAULT 1 XXH32_avalanche + 304: 000000003bc0018a 42 FUNC GLOBAL DEFAULT 1 udelay + 254: 000000003bc001e2 42 FUNC GLOBAL DEFAULT 1 get_random_from_timer + 61: 000000003bc01b2c 42 FUNC LOCAL DEFAULT 1 reqComplete + 343: 000000003bc015e8 40 FUNC GLOBAL DEFAULT 1 LZ4_calloc + 288: 000000003bc03b94 40 FUNC GLOBAL DEFAULT 1 dwc2_ep0_read + 231: 000000003bc08d72 40 FUNC GLOBAL DEFAULT 1 cvx16_set_dfi_init_comple + 389: 000000003bc08e6c 38 FUNC GLOBAL DEFAULT 1 cvx16_set_dfi_init_start + 358: 000000003bc06fea 38 FUNC GLOBAL DEFAULT 1 LZ4_decompress_safe_using + 55: 000000003bc017e2 38 FUNC LOCAL DEFAULT 1 unbind + 332: 000000003bc0a170 37 OBJECT GLOBAL DEFAULT 1 hex2ascii_data + 273: 000000003bc00156 36 FUNC GLOBAL DEFAULT 1 flush_dcache_range + 266: 000000003bc001be 36 FUNC GLOBAL DEFAULT 1 get_timer + 241: 000000003bc02a90 36 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_clear_bit + 171: 000000003bc06452 36 FUNC LOCAL DEFAULT 1 LZ4F_readLE32 + 360: 000000003bc093ba 34 FUNC GLOBAL DEFAULT 1 ctrl_init_detect_dram_siz + 244: 000000003bc02a6e 34 FUNC GLOBAL DEFAULT 1 dwc2_hsotg_set_bit + 324: 000000003bc08e4c 32 FUNC GLOBAL DEFAULT 1 cvx16_setting_check + 216: 000000003bc00acc 32 FUNC GLOBAL DEFAULT 1 memmove + 177: 000000003bc0b198 32 OBJECT LOCAL DEFAULT 1 inc32table + 176: 000000003bc0b178 32 OBJECT LOCAL DEFAULT 1 dec64table + 175: 000000003bc0b158 32 OBJECT LOCAL DEFAULT 1 blockSizes.0 + 137: 000000003bc02efa 32 FUNC LOCAL DEFAULT 1 dwc2_ep_disable + 384: 000000003bc0701c 30 FUNC GLOBAL DEFAULT 1 LZ4F_getBlockSize + 367: 000000003bc00be8 30 FUNC GLOBAL DEFAULT 1 usb_id_det + 269: 000000003bc002a4 30 FUNC GLOBAL DEFAULT 1 console_putc + 357: 000000003bc08dc6 28 FUNC GLOBAL DEFAULT 1 cvx16_polling_synp_normal + 335: 000000003bc00b3e 28 FUNC GLOBAL DEFAULT 1 strcmp + 300: 000000003bc062ac 28 FUNC GLOBAL DEFAULT 1 LzmaDec_FreeProbs + 84: 000000003bc13388 28 OBJECT LOCAL DEFAULT 4 serialDesc + 82: 000000003bc13358 28 OBJECT LOCAL DEFAULT 4 productDesc + 52: 000000003bc01784 28 FUNC LOCAL DEFAULT 1 acm_complete_set_line_cod + 305: 000000003bc08d58 26 FUNC GLOBAL DEFAULT 1 cvx16_polling_dfi_init_st + 260: 000000003bc093a0 26 FUNC GLOBAL DEFAULT 1 cvx16_en_rec_vol_mode + 224: 000000003bc09ff0 26 OBJECT GLOBAL DEFAULT 1 build_message + 37: 000000003bc00c06 26 FUNC LOCAL DEFAULT 1 read_time_ms + 207: 000000003bc045d6 24 FUNC GLOBAL DEFAULT 1 dwc2_ep0_kick + 142: 000000003bc0add8 24 OBJECT LOCAL DEFAULT 1 __func__.3 + 393: 000000003bc08b36 22 FUNC GLOBAL DEFAULT 1 cvx16_clk_div2 + 370: 000000003bc0081c 22 FUNC GLOBAL DEFAULT 1 sys_pll_init + 251: 000000003bc08b4c 22 FUNC GLOBAL DEFAULT 1 cvx16_clk_div40 + 209: 000000003bc03906 22 FUNC GLOBAL DEFAULT 1 dwc2_udc_pre_setup + 180: 000000003bc07a16 22 FUNC LOCAL DEFAULT 1 XXH_read32 + 125: 000000003bc0274e 22 FUNC LOCAL DEFAULT 1 dwc2_fifo_status + 143: 000000003bc0adf0 21 OBJECT LOCAL DEFAULT 1 __func__.4 + 344: 000000003bc002c2 20 FUNC GLOBAL DEFAULT 1 console_flush + 247: 000000003bc0601c 20 FUNC GLOBAL DEFAULT 1 LzmaDec_Init + 53: 000000003bc017a0 20 FUNC LOCAL DEFAULT 1 reset + 141: 000000003bc0adc0 19 OBJECT LOCAL DEFAULT 1 __func__.2 + 377: 000000003bc00b5a 18 FUNC GLOBAL DEFAULT 1 strlen + 354: 000000003bc032fe 18 FUNC GLOBAL DEFAULT 1 dwc2_phy_to_log_ep + 139: 000000003bc0ad90 18 OBJECT LOCAL DEFAULT 1 __func__.0 + 111: 000000003bc0b5a8 18 OBJECT LOCAL DEFAULT 2 devHsDesc + 140: 000000003bc0ada8 17 OBJECT LOCAL DEFAULT 1 __func__.1 + 302: 000000003bc0017a 16 FUNC GLOBAL DEFAULT 1 trig_simulation_timer + 272: 000000003bc00294 16 FUNC GLOBAL DEFAULT 1 _uart_putc + 212: 000000003bc13280 16 OBJECT GLOBAL DEFAULT 4 rsp_bufArr + 201: 000000003bc0a010 16 OBJECT GLOBAL DEFAULT 1 version_string + 87: 000000003bc133a8 16 OBJECT LOCAL DEFAULT 4 vendorDesc + 83: 000000003bc13378 16 OBJECT LOCAL DEFAULT 4 serial.2 + 46: 000000003bc0a790 16 OBJECT LOCAL DEFAULT 1 __func__.1 + 318: 000000003bc00680 14 FUNC GLOBAL DEFAULT 1 sys_switch_all_to_pll + 261: 000000003bc0020c 14 FUNC GLOBAL DEFAULT 1 read_count_tick + 349: 000000003bc07010 12 FUNC GLOBAL DEFAULT 1 LZ4F_isError + 328: 000000003bc0229a 12 FUNC GLOBAL DEFAULT 1 usb_vbus_det + 148: 000000003bc0ae80 12 OBJECT LOCAL DEFAULT 1 ep2name + 146: 000000003bc0ae60 12 OBJECT LOCAL DEFAULT 1 ep0name + 147: 000000003bc0ae70 11 OBJECT LOCAL DEFAULT 1 ep1name + 122: 000000003bc0ab90 11 OBJECT LOCAL DEFAULT 1 __func__.4 + 362: 000000003bc0014c 10 FUNC GLOBAL DEFAULT 1 sync_cache + 240: 000000003bc028c2 10 FUNC GLOBAL DEFAULT 1 dwc2_get_ep0_name + 193: 000000003bc001b4 10 FUNC GLOBAL DEFAULT 1 mdelay + 192: 000000003bc083f6 10 FUNC GLOBAL DEFAULT 1 get_ddr_vendor + 149: 000000003bc0ae90 10 OBJECT LOCAL DEFAULT 1 ep3name + 117: 000000003bc0b680 10 OBJECT LOCAL DEFAULT 2 qualifierDesc + 144: 000000003bc0ae08 9 OBJECT LOCAL DEFAULT 1 driver_name + 92: 000000003bc0b478 9 OBJECT LOCAL DEFAULT 2 acm_data_interface_desc + 91: 000000003bc0b468 9 OBJECT LOCAL DEFAULT 2 acm_control_interface_des + 88: 000000003bc0b448 9 OBJECT LOCAL DEFAULT 2 ConfDesc + 388: 000000003bc133c0 8 OBJECT GLOBAL DEFAULT 4 the_controller + 386: 000000003bc13308 8 OBJECT GLOBAL DEFAULT 4 acm + 365: 000000003bc133c8 8 OBJECT GLOBAL DEFAULT 4 reg_set + 326: 000000003bc133d0 8 OBJECT GLOBAL DEFAULT 4 reg_span + 245: 000000003bc132c0 8 OBJECT GLOBAL DEFAULT 4 setup_bufArr + 214: 000000003bc133b8 8 OBJECT GLOBAL DEFAULT 4 reg + 213: 000000003bc133d8 8 OBJECT GLOBAL DEFAULT 4 reg_step + 197: 000000003bc0b440 8 OBJECT GLOBAL DEFAULT 2 time_records + 119: 000000003bc0b698 8 OBJECT LOCAL DEFAULT 2 setup_buf + 118: 000000003bc0b690 8 OBJECT LOCAL DEFAULT 2 rsp_buf + 115: 000000003bc0b670 8 OBJECT LOCAL DEFAULT 2 handler + 113: 000000003bc0b610 8 OBJECT LOCAL DEFAULT 2 ep0BuffAlloc + 108: 000000003bc0b500 8 OBJECT LOCAL DEFAULT 2 cmdBufAlloc + 107: 000000003bc0b4f8 8 OBJECT LOCAL DEFAULT 2 cb2_buf + 106: 000000003bc0b4f0 8 OBJECT LOCAL DEFAULT 2 cb1_buf + 105: 000000003bc0b4e8 8 OBJECT LOCAL DEFAULT 2 cb0_buf + 103: 000000003bc0b4d8 8 OBJECT LOCAL DEFAULT 2 bulkBufAlloc + 89: 000000003bc0b458 8 OBJECT LOCAL DEFAULT 2 acm_buf + 75: 000000003bc13350 8 OBJECT LOCAL DEFAULT 4 fip_buf + 74: 000000003bc13348 8 OBJECT LOCAL DEFAULT 4 epOut + 73: 000000003bc13340 8 OBJECT LOCAL DEFAULT 4 epIn + 72: 000000003bc13338 8 OBJECT LOCAL DEFAULT 4 ep0Req + 71: 000000003bc13330 8 OBJECT LOCAL DEFAULT 4 ep0Buff + 68: 000000003bc13328 8 OBJECT LOCAL DEFAULT 4 cmdBuf + 67: 000000003bc13320 8 OBJECT LOCAL DEFAULT 4 bulkOutReq + 66: 000000003bc13318 8 OBJECT LOCAL DEFAULT 4 bulkInReq + 65: 000000003bc13310 8 OBJECT LOCAL DEFAULT 4 bulkBuf + 45: 000000003bc0a788 8 OBJECT LOCAL DEFAULT 1 __func__.0 + 44: 000000003bc13300 8 OBJECT LOCAL DEFAULT 4 comp_alloc_size + 43: 000000003bc132f8 8 OBJECT LOCAL DEFAULT 4 comp_alloc_buf + 121: 000000003bc0ab88 7 OBJECT LOCAL DEFAULT 1 __func__.1 + 104: 000000003bc0b4e0 7 OBJECT LOCAL DEFAULT 2 capabilityExtDesc + 100: 000000003bc0b4c0 7 OBJECT LOCAL DEFAULT 2 acm_hs_out_desc + 99: 000000003bc0b4b8 7 OBJECT LOCAL DEFAULT 2 acm_hs_notify_desc + 98: 000000003bc0b4b0 7 OBJECT LOCAL DEFAULT 2 acm_hs_in_desc + 96: 000000003bc0b4a0 7 OBJECT LOCAL DEFAULT 2 acm_fs_out_desc + 95: 000000003bc0b498 7 OBJECT LOCAL DEFAULT 2 acm_fs_notify_desc + 94: 000000003bc0b490 7 OBJECT LOCAL DEFAULT 2 acm_fs_in_desc + 359: 000000003bc015e2 6 FUNC GLOBAL DEFAULT 1 LZ4_malloc + 286: 000000003bc0173e 6 FUNC GLOBAL DEFAULT 1 DWC2_UncachedRead32 + 195: 000000003bc0215c 6 FUNC GLOBAL DEFAULT 1 AcmIsr + 123: 000000003bc0aba0 6 OBJECT LOCAL DEFAULT 1 __func__.5 + 120: 000000003bc0ab80 5 OBJECT LOCAL DEFAULT 1 __func__.0 + 102: 000000003bc0b4d0 5 OBJECT LOCAL DEFAULT 2 bosDesc + 101: 000000003bc0b4c8 5 OBJECT LOCAL DEFAULT 2 acm_union_desc + 97: 000000003bc0b4a8 5 OBJECT LOCAL DEFAULT 2 acm_header_desc + 90: 000000003bc0b460 5 OBJECT LOCAL DEFAULT 2 acm_call_mgmt_descriptor + 387: 000000003bc01744 4 FUNC GLOBAL DEFAULT 1 DWC2_UncachedWrite32 + 372: 000000003bc0b6fc 4 OBJECT GLOBAL DEFAULT 2 ddr_data_rate + 316: 000000003bc133f4 4 OBJECT GLOBAL DEFAULT 4 dev_freq + 270: 000000003bc133f0 4 OBJECT GLOBAL DEFAULT 4 rddata + 257: 000000003bc133fc 4 OBJECT GLOBAL DEFAULT 4 mod_freq + 203: 000000003bc00994 4 FUNC GLOBAL DEFAULT 1 dec_verify_image + 199: 000000003bc133f8 4 OBJECT GLOBAL DEFAULT 4 freq_in + 196: 000000003bc13400 4 OBJECT GLOBAL DEFAULT 4 tar_freq + 161: 000000003bc0b6f4 4 OBJECT LOCAL DEFAULT 2 ep_fifo_size + 160: 000000003bc0b6f0 4 OBJECT LOCAL DEFAULT 2 ep0_fifo_size + 116: 000000003bc0b678 4 OBJECT LOCAL DEFAULT 2 languageDesc + 93: 000000003bc0b488 4 OBJECT LOCAL DEFAULT 2 acm_descriptor + 86: 000000003bc133ec 4 OBJECT LOCAL DEFAULT 4 ts + 85: 000000003bc133e8 4 OBJECT LOCAL DEFAULT 4 transfer_size + 77: 000000003bc133e4 4 OBJECT LOCAL DEFAULT 4 fip_tx_size + 76: 000000003bc133e0 4 OBJECT LOCAL DEFAULT 4 fip_tx_offset + 369: 000000003bc0b6f8 2 OBJECT GLOBAL DEFAULT 2 cv_usb_vid + 276: 000000003bc00832 2 FUNC GLOBAL DEFAULT 1 switch_rtc_mode_1st_stage + 255: 000000003bc0979a 2 FUNC GLOBAL DEFAULT 1 cvx16_dram_cap_check + 243: 000000003bc028c0 2 FUNC GLOBAL DEFAULT 1 dwc2_log_write + 235: 000000003bc08e4a 2 FUNC GLOBAL DEFAULT 1 cvx16_wrlvl_req + 210: 000000003bc00292 2 FUNC GLOBAL DEFAULT 1 jump_to_loader_2nd + 206: 000000003bc01610 2 FUNC GLOBAL DEFAULT 1 LZ4_free + 130: 000000003bc028be 2 FUNC LOCAL DEFAULT 1 dwc2_fifo_flush + 63: 000000003bc01fe8 2 FUNC LOCAL DEFAULT 1 suspend + 51: 000000003bc01782 2 FUNC LOCAL DEFAULT 1 requestMemFree + 49: 000000003bc01748 2 FUNC LOCAL DEFAULT 1 resume + 41: 000000003bc014b6 2 FUNC LOCAL DEFAULT 1 SzFree + 385: 000000003bc1340c 1 OBJECT GLOBAL DEFAULT 4 ddr_capacity + 378: 000000003bc1340d 1 OBJECT GLOBAL DEFAULT 4 ddr_type + 308: 000000003bc1340e 1 OBJECT GLOBAL DEFAULT 4 ddr_vendor + 249: 000000003bc1340f 1 OBJECT GLOBAL DEFAULT 4 pkg + 220: 000000003bc13405 1 OBJECT GLOBAL DEFAULT 4 acm_configValue + 81: 000000003bc1340b 1 OBJECT LOCAL DEFAULT 4 mem_alloc_cnt + 80: 000000003bc1340a 1 OBJECT LOCAL DEFAULT 4 is_serial_patched.3 + 79: 000000003bc13409 1 OBJECT LOCAL DEFAULT 4 flagReboot + 78: 000000003bc13408 1 OBJECT LOCAL DEFAULT 4 flagEnterDL + 70: 000000003bc13407 1 OBJECT LOCAL DEFAULT 4 configValue + 69: 000000003bc13406 1 OBJECT LOCAL DEFAULT 4 configBreak + 64: 000000003bc13404 1 OBJECT LOCAL DEFAULT 4 ack_idx.6 + 368: 000000003bc0b700 0 NOTYPE GLOBAL DEFAULT 3 __STACKS_START__ + 361: 00000000044000c0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_get_number_of_r + 352: 000000003bc00000 0 NOTYPE GLOBAL DEFAULT 1 __RO_START__ + 350: 000000003bc0d800 0 NOTYPE GLOBAL DEFAULT 4 __BSS_START__ + 348: 0000000004400060 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_load_image + 346: 000000003bc0b434 0 NOTYPE GLOBAL DEFAULT 1 __RO_END__ + 322: 0000000004400040 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_set_boot_src + 319: 000000003bc13410 0 NOTYPE GLOBAL DEFAULT 4 __BSS_END__ + 311: 000000003bc00000 0 NOTYPE GLOBAL DEFAULT 1 bl2_entrypoint + 309: 00000000044000a0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_image_crc + 299: 000000003bc0b700 0 NOTYPE GLOBAL DEFAULT 2 __DATA_END__ + 291: 000000003bc13410 0 NOTYPE GLOBAL DEFAULT 4 __BL2_END__ + 265: 0000000000005c10 0 NOTYPE GLOBAL DEFAULT ABS __BSS_SIZE__ + 259: 00000000044000e0 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_verify_rsa + 250: 000000003bc0d700 0 NOTYPE GLOBAL DEFAULT 3 __STACKS_END__ + 226: 000000003bc0b440 0 NOTYPE GLOBAL DEFAULT 2 __DATA_START__ + 208: 0000000004400020 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_get_boot_src + 202: 0000000004400080 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_flash_init + 198: 0000000004400100 0 NOTYPE GLOBAL DEFAULT ABS p_rom_api_cryptodma_aes_d + 191: 0000000000000000 0 FILE LOCAL DEFAULT ABS + 190: 0000000000000000 0 FILE LOCAL DEFAULT ABS phy_init.c + 189: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddrc_init.c + 188: 0000000000000000 0 FILE LOCAL DEFAULT ABS cvx16_dram_cap_check.c + 187: 0000000000000000 0 FILE LOCAL DEFAULT ABS cvx16_pinmux.c + 186: 0000000000000000 0 FILE LOCAL DEFAULT ABS phy_pll_init.c + 185: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_sys.c + 184: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_sys_bring_up.c + 183: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr_pkg_info.c + 182: 0000000000000000 0 FILE LOCAL DEFAULT ABS ddr.c + 178: 0000000000000000 0 FILE LOCAL DEFAULT ABS xxhash.c + 170: 0000000000000000 0 FILE LOCAL DEFAULT ABS lz4_all.c + 165: 0000000000000000 0 FILE LOCAL DEFAULT ABS LzmaDec.c + 163: 0000000000000000 0 FILE LOCAL DEFAULT ABS crc16.c + 162: 0000000000000000 0 FILE LOCAL DEFAULT ABS cv_usb.c + 150: 0000000000000000 0 FILE LOCAL DEFAULT ABS dwc2_udc_otg_xfer_dma.c + 124: 0000000000000000 0 FILE LOCAL DEFAULT ABS dwc2_udc_otg.c + 48: 0000000000000000 0 FILE LOCAL DEFAULT ABS usb_tty.c + 47: 0000000000000000 0 FILE LOCAL DEFAULT ABS cps_cvi.c + 40: 0000000000000000 0 FILE LOCAL DEFAULT ABS decompress.c + 36: 0000000000000000 0 FILE LOCAL DEFAULT ABS bl2_main.c + 35: 0000000000000000 0 FILE LOCAL DEFAULT ABS platform_device.c + 34: 0000000000000000 0 FILE LOCAL DEFAULT ABS strlen.c + 33: 0000000000000000 0 FILE LOCAL DEFAULT ABS strcmp.c + 32: 0000000000000000 0 FILE LOCAL DEFAULT ABS putchar.c + 31: 0000000000000000 0 FILE LOCAL DEFAULT ABS mem.c + 30: 0000000000000000 0 FILE LOCAL DEFAULT ABS misc.c + 29: 0000000000000000 0 FILE LOCAL DEFAULT ABS security.c + 28: 0000000000000000 0 FILE LOCAL DEFAULT ABS platform.c + 26: 0000000000000000 0 FILE LOCAL DEFAULT ABS tf_printf.c + 25: 0000000000000000 0 FILE LOCAL DEFAULT ABS uart_dw.c + 23: 0000000000000000 0 FILE LOCAL DEFAULT ABS bl2_helper.c + 22: 0000000000000000 0 FILE LOCAL DEFAULT ABS delay_timer.c + 21: 0000000000000000 0 FILE LOCAL DEFAULT ABS cache.c + 20: 0000000000000000 0 FILE LOCAL DEFAULT ABS cpu_helper.c + 19: 000000003bc00144 0 NOTYPE LOCAL DEFAULT 1 die + 18: 000000003bc0012c 0 NOTYPE LOCAL DEFAULT 1 bss_clear + 17: 000000003bc00144 0 NOTYPE LOCAL DEFAULT 1 trap_vector + 16: 000000003bc00020 0 NOTYPE LOCAL DEFAULT 1 bl2_entrypoint_real + 15: 0000000000000000 0 FILE LOCAL DEFAULT ABS /root/.jenkins/workspace/ + 14: 0000000000000000 0 SECTION LOCAL DEFAULT 14 + 13: 0000000000000000 0 SECTION LOCAL DEFAULT 13 + 12: 0000000000000000 0 SECTION LOCAL DEFAULT 12 + 11: 0000000000000000 0 SECTION LOCAL DEFAULT 11 + 10: 0000000000000000 0 SECTION LOCAL DEFAULT 10 + 9: 0000000000000000 0 SECTION LOCAL DEFAULT 9 + 8: 0000000000000000 0 SECTION LOCAL DEFAULT 8 + 7: 0000000000000000 0 SECTION LOCAL DEFAULT 7 + 6: 0000000000000000 0 SECTION LOCAL DEFAULT 6 + 5: 0000000000000000 0 SECTION LOCAL DEFAULT 5 + 4: 000000003bc0d800 0 SECTION LOCAL DEFAULT 4 + 3: 000000003bc0b700 0 SECTION LOCAL DEFAULT 3 + 2: 000000003bc0b434 0 SECTION LOCAL DEFAULT 2 + 1: 000000003bc00000 0 SECTION LOCAL DEFAULT 1 + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND +Symbol table '.symtab' contains 397 entries: + Num: Value Size Type Bind Vis Ndx Name + diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_entrypoint.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_entrypoint.o new file mode 100644 index 000000000..5b15c11ca Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_entrypoint.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o new file mode 100644 index 000000000..f119fd397 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_helper.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o new file mode 100644 index 000000000..24a6bdc84 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/bl2_main.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o new file mode 100644 index 000000000..9913b4fd1 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/build_message.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o new file mode 100644 index 000000000..db686484d Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cache.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o new file mode 100644 index 000000000..7c48d860c Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cps_cvi.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o new file mode 100644 index 000000000..a3888e5d3 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cpu_helper.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o new file mode 100644 index 000000000..c8f34d3a3 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/crc16.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o new file mode 100644 index 000000000..7e9363899 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cv_usb.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o new file mode 100644 index 000000000..469de3283 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_dram_cap_check.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o new file mode 100644 index 000000000..df60916d2 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/cvx16_pinmux.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o new file mode 100644 index 000000000..59f107e1c Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o new file mode 100644 index 000000000..72822eb6f Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_patch_regs.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o new file mode 100644 index 000000000..55f5e5c00 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_pkg_info.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o new file mode 100644 index 000000000..33a08bcbd Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o new file mode 100644 index 000000000..dc6e82571 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddr_sys_bring_up.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o new file mode 100644 index 000000000..92fda5ec5 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/ddrc_init.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o new file mode 100644 index 000000000..8ea332528 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/decompress.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o new file mode 100644 index 000000000..00c710785 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/delay_timer.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o new file mode 100644 index 000000000..3d7fdbc12 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o new file mode 100644 index 000000000..09a990487 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/dwc2_udc_otg_xfer_dma.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o new file mode 100644 index 000000000..7f34e7cf0 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/lz4_all.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o new file mode 100644 index 000000000..08e4f90b6 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/mem.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o new file mode 100644 index 000000000..030743c93 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o new file mode 100644 index 000000000..87e4f7b57 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/misc_helpers.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o new file mode 100644 index 000000000..9e9abcfe4 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_init.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o new file mode 100644 index 000000000..450034aae Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/phy_pll_init.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o new file mode 100644 index 000000000..391d437ee Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o new file mode 100644 index 000000000..1cbefe092 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/platform_device.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o new file mode 100644 index 000000000..095ffcdd9 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/putchar.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o new file mode 100644 index 000000000..a10782f10 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/security.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o new file mode 100644 index 000000000..dd8f41302 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strchr.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o new file mode 100644 index 000000000..1660fd445 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strcmp.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o new file mode 100644 index 000000000..260f95a40 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strlen.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o new file mode 100644 index 000000000..95435309e Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strncmp.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o new file mode 100644 index 000000000..d247c14da Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/strnlen.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o new file mode 100644 index 000000000..2bacf8a0b Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/tf_printf.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o new file mode 100644 index 000000000..34b2a16de Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/uart_dw.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o new file mode 100644 index 000000000..15c51942d Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/usb_tty.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o new file mode 100644 index 000000000..0c67e7da1 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/bl2/xxhash.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros.bin b/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros.bin new file mode 100755 index 000000000..c9902e4a9 --- /dev/null +++ b/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros.bin @@ -0,0 +1 @@ +ï¾­Þ \ No newline at end of file diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros.env b/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros.env new file mode 100644 index 000000000..cff9e1110 --- /dev/null +++ b/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros.env @@ -0,0 +1,2 @@ +MONITOR_RUNADDR=0x0000000080000000 +BLCP_2ND_RUNADDR=0x0000000083f40000 diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/blmacros.dis b/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/blmacros.dis new file mode 100644 index 000000000..56af22394 --- /dev/null +++ b/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/blmacros.dis @@ -0,0 +1,24 @@ + +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/blmacros.elf: file format elf64-littleriscv +/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/blmacros.elf +architecture: riscv:rv64, flags 0x00000112: +EXEC_P, HAS_SYMS, D_PAGED +start address 0x0000000000000000 + +Program Header: + LOAD off 0x0000000000001000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**12 + filesz 0x0000000000000004 memsz 0x0000000000000004 flags r-- + STACK off 0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**4 + filesz 0x0000000000000000 memsz 0x0000000000000000 flags rw- + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000004 0000000000000000 0000000000000000 00001000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA +SYMBOL TABLE: +0000000000000000 l d .text 0000000000000000 .text +0000000083f40000 g *ABS* 0000000000000000 DEF_BLCP_2ND_RUNADDR +0000000080000000 g *ABS* 0000000000000000 DEF_MONITOR_RUNADDR +0000000080000000 g *ABS* 0000000000000000 DEF_DRAM_BASE + + diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/blmacros.elf b/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/blmacros.elf new file mode 100755 index 000000000..e5027bece Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/blmacros.elf differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/blmacros.ld b/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/blmacros.ld new file mode 100644 index 000000000..44cdce7f4 --- /dev/null +++ b/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/blmacros.ld @@ -0,0 +1,10 @@ +SECTIONS +{ + .text : { + LONG(0xDEADBEEF); + *(*) + } + DEF_DRAM_BASE = 0x80000000; + DEF_MONITOR_RUNADDR = 0x80000000; + DEF_BLCP_2ND_RUNADDR = 0x83f40000; +} diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/blmacros.map b/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/blmacros.map new file mode 100644 index 000000000..84d273546 --- /dev/null +++ b/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/blmacros.map @@ -0,0 +1,39 @@ + +Discarded input sections + + .group 0x0000000000000000 0xc /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/build_message.o + .text 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/build_message.o + .data 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/build_message.o + .bss 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/build_message.o + .rodata.build_message + 0x0000000000000000 0x1a /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/build_message.o + .rodata.version_string + 0x0000000000000000 0x10 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/build_message.o + .debug_info 0x0000000000000000 0x89 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/build_message.o + .debug_abbrev 0x0000000000000000 0x48 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/build_message.o + .debug_aranges + 0x0000000000000000 0x20 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/build_message.o + .debug_macro 0x0000000000000000 0x11 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/build_message.o + .debug_macro 0x0000000000000000 0x86e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/build_message.o + .debug_line 0x0000000000000000 0x28 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/build_message.o + .debug_str 0x0000000000000000 0x29a6 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/build_message.o + .comment 0x0000000000000000 0x1e /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/build_message.o + .note.GNU-stack + 0x0000000000000000 0x0 /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/build_message.o + +Memory Configuration + +Name Origin Length Attributes +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + +.text 0x0000000000000000 0x4 + 0x0000000000000000 0x4 LONG 0xdeadbeef + *(*) + 0x0000000080000000 DEF_DRAM_BASE = 0x80000000 + 0x0000000080000000 DEF_MONITOR_RUNADDR = 0x80000000 + 0x0000000083f40000 DEF_BLCP_2ND_RUNADDR = 0x83f40000 +LOAD /root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/build_message.o +OUTPUT(/root/.jenkins/workspace/cv180x_v4.0.0_release_build/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/blmacros.elf elf64-littleriscv) diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/blmacros.sym b/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/blmacros.sym new file mode 100644 index 000000000..9cfdf8696 --- /dev/null +++ b/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/blmacros.sym @@ -0,0 +1,8 @@ + 4: 0000000080000000 0 NOTYPE GLOBAL DEFAULT ABS DEF_DRAM_BASE + 3: 0000000080000000 0 NOTYPE GLOBAL DEFAULT ABS DEF_MONITOR_RUNADDR + 2: 0000000083f40000 0 NOTYPE GLOBAL DEFAULT ABS DEF_BLCP_2ND_RUNADDR + 1: 0000000000000000 0 SECTION LOCAL DEFAULT 1 + 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND +Symbol table '.symtab' contains 5 entries: + Num: Value Size Type Bind Vis Ndx Name + diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/build_message.o b/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/build_message.o new file mode 100644 index 000000000..9913b4fd1 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/blmacros/build_message.o differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/chip_conf.bin b/fsbl/build/cv180zb_wevb_0008a_spinor/chip_conf.bin new file mode 100644 index 000000000..d2dabd686 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/chip_conf.bin differ diff --git a/fsbl/build/cv180zb_wevb_0008a_spinor/fip.bin b/fsbl/build/cv180zb_wevb_0008a_spinor/fip.bin new file mode 100644 index 000000000..9a6372627 Binary files /dev/null and b/fsbl/build/cv180zb_wevb_0008a_spinor/fip.bin differ diff --git a/fsbl/build/cvi_board_memmap.h b/fsbl/build/cvi_board_memmap.h new file mode 120000 index 000000000..888a0a8ea --- /dev/null +++ b/fsbl/build/cvi_board_memmap.h @@ -0,0 +1 @@ +../../build/output/cv180zb_wevb_0008a_spinor/cvi_board_memmap.h \ No newline at end of file diff --git a/fsbl/include/bl_common.h b/fsbl/include/bl_common.h new file mode 100644 index 000000000..fe0ced3ea --- /dev/null +++ b/fsbl/include/bl_common.h @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __BL_COMMON_H__ +#define __BL_COMMON_H__ + +/******************************************************************************* + * Constants to indicate type of exception to the common exception handler. + ******************************************************************************/ +#ifndef __ASSEMBLY__ +#include +#include +#include +#include /* To retain compatibility */ + +extern const char build_message[]; +extern const char version_string[]; + +extern unsigned char __XLAT_VARS_START__[]; +extern unsigned char __BSS_START__[]; +extern unsigned char __BSS_END__[]; +extern unsigned char __DATA_RAM_START__[]; +extern unsigned char __DATA_RAM_END__[]; +extern unsigned char __DATA_ROM_START__[]; + +void bl1_early_platform_setup(void); + +#endif /*__ASSEMBLY__*/ + +#endif /* __BL_COMMON_H__ */ diff --git a/fsbl/include/cassert.h b/fsbl/include/cassert.h new file mode 100644 index 000000000..40cb483a8 --- /dev/null +++ b/fsbl/include/cassert.h @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2014, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __CASSERT_H__ +#define __CASSERT_H__ + +/******************************************************************************* + * Macro to flag a compile time assertion. It uses the preprocessor to generate + * an invalid C construct if 'cond' evaluates to false. + * The following compilation error is triggered if the assertion fails: + * "error: size of array 'msg' is negative" + * The 'unused' attribute ensures that the unused typedef does not emit a + * compiler warning. + ******************************************************************************/ +#define CASSERT(cond, msg) \ + typedef char msg[(cond) ? 1 : -1] __unused + +#endif /* __CASSERT_H__ */ diff --git a/fsbl/include/console.h b/fsbl/include/console.h new file mode 100644 index 000000000..ed7ab0b45 --- /dev/null +++ b/fsbl/include/console.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __CONSOLE_H__ +#define __CONSOLE_H__ + +#include + +int console_init(uintptr_t not_used, unsigned int uart_clk, unsigned int baud_rate); +int console_putc(int c); +int console_getc(void); +int console_flush(void); +int console_tstc(void); + +#endif /* __CONSOLE_H__ */ diff --git a/fsbl/include/cpu/aarch64/arch.h b/fsbl/include/cpu/aarch64/arch.h new file mode 100644 index 000000000..c9d20d3ae --- /dev/null +++ b/fsbl/include/cpu/aarch64/arch.h @@ -0,0 +1,501 @@ +/* + * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __ARCH_H__ +#define __ARCH_H__ + +#include + +/******************************************************************************* + * MIDR bit definitions + ******************************************************************************/ +#define MIDR_IMPL_MASK U(0xff) +#define MIDR_IMPL_SHIFT U(0x18) +#define MIDR_VAR_SHIFT U(20) +#define MIDR_VAR_BITS U(4) +#define MIDR_VAR_MASK U(0xf) +#define MIDR_REV_SHIFT U(0) +#define MIDR_REV_BITS U(4) +#define MIDR_REV_MASK U(0xf) +#define MIDR_PN_MASK U(0xfff) +#define MIDR_PN_SHIFT U(0x4) + +/******************************************************************************* + * MPIDR macros + ******************************************************************************/ +#define MPIDR_MT_MASK (U(1) << 24) +#define MPIDR_CPU_MASK MPIDR_AFFLVL_MASK +#define MPIDR_CLUSTER_MASK (MPIDR_AFFLVL_MASK << MPIDR_AFFINITY_BITS) +#define MPIDR_AFFINITY_BITS U(8) +#define MPIDR_AFFLVL_MASK U(0xff) +#define MPIDR_AFF0_SHIFT U(0) +#define MPIDR_AFF1_SHIFT U(8) +#define MPIDR_AFF2_SHIFT U(16) +#define MPIDR_AFF3_SHIFT U(32) +#define MPIDR_AFFINITY_MASK U(0xff00ffffff) +#define MPIDR_AFFLVL_SHIFT U(3) +#define MPIDR_AFFLVL0 U(0) +#define MPIDR_AFFLVL1 U(1) +#define MPIDR_AFFLVL2 U(2) +#define MPIDR_AFFLVL3 U(3) +#define MPIDR_AFFLVL0_VAL(mpidr) \ + ((mpidr >> MPIDR_AFF0_SHIFT) & MPIDR_AFFLVL_MASK) +#define MPIDR_AFFLVL1_VAL(mpidr) \ + ((mpidr >> MPIDR_AFF1_SHIFT) & MPIDR_AFFLVL_MASK) +#define MPIDR_AFFLVL2_VAL(mpidr) \ + ((mpidr >> MPIDR_AFF2_SHIFT) & MPIDR_AFFLVL_MASK) +#define MPIDR_AFFLVL3_VAL(mpidr) \ + ((mpidr >> MPIDR_AFF3_SHIFT) & MPIDR_AFFLVL_MASK) +/* + * The MPIDR_MAX_AFFLVL count starts from 0. Take care to + * add one while using this macro to define array sizes. + * TODO: Support only the first 3 affinity levels for now. + */ +#define MPIDR_MAX_AFFLVL U(2) + +/* Constant to highlight the assumption that MPIDR allocation starts from 0 */ +#define FIRST_MPIDR U(0) + +/******************************************************************************* + * Definitions for CPU system register interface to GICv3 + ******************************************************************************/ +#define ICC_SRE_EL1 S3_0_C12_C12_5 +#define ICC_SRE_EL2 S3_4_C12_C9_5 +#define ICC_SRE_EL3 S3_6_C12_C12_5 +#define ICC_CTLR_EL1 S3_0_C12_C12_4 +#define ICC_CTLR_EL3 S3_6_C12_C12_4 +#define ICC_PMR_EL1 S3_0_C4_C6_0 +#define ICC_IGRPEN1_EL3 S3_6_c12_c12_7 +#define ICC_IGRPEN0_EL1 S3_0_c12_c12_6 +#define ICC_HPPIR0_EL1 S3_0_c12_c8_2 +#define ICC_HPPIR1_EL1 S3_0_c12_c12_2 +#define ICC_IAR0_EL1 S3_0_c12_c8_0 +#define ICC_IAR1_EL1 S3_0_c12_c12_0 +#define ICC_EOIR0_EL1 S3_0_c12_c8_1 +#define ICC_EOIR1_EL1 S3_0_c12_c12_1 + +/******************************************************************************* + * Generic timer memory mapped registers & offsets + ******************************************************************************/ +#define CNTCR_OFF U(0x000) +#define CNTFID_OFF U(0x020) + +#define CNTCR_EN (U(1) << 0) +#define CNTCR_HDBG (U(1) << 1) +#define CNTCR_FCREQ(x) ((x) << 8) + +/******************************************************************************* + * System register bit definitions + ******************************************************************************/ +/* CLIDR definitions */ +#define LOUIS_SHIFT U(21) +#define LOC_SHIFT U(24) +#define CLIDR_FIELD_WIDTH U(3) + +/* CSSELR definitions */ +#define LEVEL_SHIFT U(1) + +/* D$ set/way op type defines */ +#define DCISW U(0x0) +#define DCCISW U(0x1) +#define DCCSW U(0x2) + +/* ID_AA64PFR0_EL1 definitions */ +#define ID_AA64PFR0_EL0_SHIFT U(0) +#define ID_AA64PFR0_EL1_SHIFT U(4) +#define ID_AA64PFR0_EL2_SHIFT U(8) +#define ID_AA64PFR0_EL3_SHIFT U(12) +#define ID_AA64PFR0_ELX_MASK U(0xf) + +/* ID_AA64DFR0_EL1.PMS definitions (for ARMv8.2+) */ +#define ID_AA64DFR0_PMS_SHIFT U(32) +#define ID_AA64DFR0_PMS_LENGTH U(4) +#define ID_AA64DFR0_PMS_MASK U(0xf) + +#define EL_IMPL_NONE U(0) +#define EL_IMPL_A64ONLY U(1) +#define EL_IMPL_A64_A32 U(2) + +#define ID_AA64PFR0_GIC_SHIFT U(24) +#define ID_AA64PFR0_GIC_WIDTH U(4) +#define ID_AA64PFR0_GIC_MASK ((U(1) << ID_AA64PFR0_GIC_WIDTH) - 1) + +/* ID_AA64MMFR0_EL1 definitions */ +#define ID_AA64MMFR0_EL1_PARANGE_MASK U(0xf) + +#define PARANGE_0000 U(32) +#define PARANGE_0001 U(36) +#define PARANGE_0010 U(40) +#define PARANGE_0011 U(42) +#define PARANGE_0100 U(44) +#define PARANGE_0101 U(48) + +/* ID_PFR1_EL1 definitions */ +#define ID_PFR1_VIRTEXT_SHIFT U(12) +#define ID_PFR1_VIRTEXT_MASK U(0xf) +#define GET_VIRT_EXT(id) ((id >> ID_PFR1_VIRTEXT_SHIFT) \ + & ID_PFR1_VIRTEXT_MASK) + +/* SCTLR definitions */ +#define SCTLR_EL2_RES1 ((U(1) << 29) | (U(1) << 28) | (U(1) << 23) | \ + (U(1) << 22) | (U(1) << 18) | (U(1) << 16) | \ + (U(1) << 11) | (U(1) << 5) | (U(1) << 4)) + +#define SCTLR_EL1_RES1 ((U(1) << 29) | (U(1) << 28) | (U(1) << 23) | \ + (U(1) << 22) | (U(1) << 20) | (U(1) << 11)) +#define SCTLR_AARCH32_EL1_RES1 \ + ((U(1) << 23) | (U(1) << 22) | (U(1) << 11) | \ + (U(1) << 4) | (U(1) << 3)) + +#define SCTLR_EL3_RES1 ((U(1) << 29) | (U(1) << 28) | (U(1) << 23) | \ + (U(1) << 22) | (U(1) << 18) | (U(1) << 16) | \ + (U(1) << 11) | (U(1) << 5) | (U(1) << 4)) + +#define SCTLR_M_BIT (U(1) << 0) +#define SCTLR_A_BIT (U(1) << 1) +#define SCTLR_C_BIT (U(1) << 2) +#define SCTLR_SA_BIT (U(1) << 3) +#define SCTLR_CP15BEN_BIT (U(1) << 5) +#define SCTLR_I_BIT (U(1) << 12) +#define SCTLR_NTWI_BIT (U(1) << 16) +#define SCTLR_NTWE_BIT (U(1) << 18) +#define SCTLR_WXN_BIT (U(1) << 19) +#define SCTLR_EE_BIT (U(1) << 25) +#define SCTLR_RESET_VAL SCTLR_EL3_RES1 + +/* CPACR_El1 definitions */ +#define CPACR_EL1_FPEN(x) ((x) << 20) +#define CPACR_EL1_FP_TRAP_EL0 U(0x1) +#define CPACR_EL1_FP_TRAP_ALL U(0x2) +#define CPACR_EL1_FP_TRAP_NONE U(0x3) + +/* SCR definitions */ +#define SCR_RES1_BITS ((U(1) << 4) | (U(1) << 5)) +#define SCR_TWE_BIT (U(1) << 13) +#define SCR_TWI_BIT (U(1) << 12) +#define SCR_ST_BIT (U(1) << 11) +#define SCR_RW_BIT (U(1) << 10) +#define SCR_SIF_BIT (U(1) << 9) +#define SCR_HCE_BIT (U(1) << 8) +#define SCR_SMD_BIT (U(1) << 7) +#define SCR_EA_BIT (U(1) << 3) +#define SCR_FIQ_BIT (U(1) << 2) +#define SCR_IRQ_BIT (U(1) << 1) +#define SCR_NS_BIT (U(1) << 0) +#define SCR_VALID_BIT_MASK U(0x2f8f) +#define SCR_RESET_VAL SCR_RES1_BITS + +/* MDCR_EL3 definitions */ +#define MDCR_SPD32(x) ((x) << 14) +#define MDCR_SPD32_LEGACY U(0x0) +#define MDCR_SPD32_DISABLE U(0x2) +#define MDCR_SPD32_ENABLE U(0x3) +#define MDCR_SDD_BIT (U(1) << 16) +#define MDCR_NSPB(x) ((x) << 12) +#define MDCR_NSPB_EL1 U(0x3) +#define MDCR_TDOSA_BIT (U(1) << 10) +#define MDCR_TDA_BIT (U(1) << 9) +#define MDCR_TPM_BIT (U(1) << 6) +#define MDCR_EL3_RESET_VAL U(0x0) + +/* MDCR_EL2 definitions */ +#define MDCR_EL2_TPMS (U(1) << 14) +#define MDCR_EL2_E2PB(x) ((x) << 12) +#define MDCR_EL2_E2PB_EL1 U(0x3) +#define MDCR_EL2_TDRA_BIT (U(1) << 11) +#define MDCR_EL2_TDOSA_BIT (U(1) << 10) +#define MDCR_EL2_TDA_BIT (U(1) << 9) +#define MDCR_EL2_TDE_BIT (U(1) << 8) +#define MDCR_EL2_HPME_BIT (U(1) << 7) +#define MDCR_EL2_TPM_BIT (U(1) << 6) +#define MDCR_EL2_TPMCR_BIT (U(1) << 5) +#define MDCR_EL2_RESET_VAL U(0x0) + +/* HSTR_EL2 definitions */ +#define HSTR_EL2_RESET_VAL U(0x0) +#define HSTR_EL2_T_MASK U(0xff) + +/* CNTHP_CTL_EL2 definitions */ +#define CNTHP_CTL_ENABLE_BIT (U(1) << 0) +#define CNTHP_CTL_RESET_VAL U(0x0) + +/* VTTBR_EL2 definitions */ +#define VTTBR_RESET_VAL ULL(0x0) +#define VTTBR_VMID_MASK ULL(0xff) +#define VTTBR_VMID_SHIFT U(48) +#define VTTBR_BADDR_MASK ULL(0xffffffffffff) +#define VTTBR_BADDR_SHIFT U(0) + +/* HCR definitions */ +#define HCR_RW_SHIFT U(31) +#define HCR_RW_BIT (ULL(1) << HCR_RW_SHIFT) +#define HCR_AMO_BIT (U(1) << 5) +#define HCR_IMO_BIT (U(1) << 4) +#define HCR_FMO_BIT (U(1) << 3) + +/* ISR definitions */ +#define ISR_A_SHIFT U(8) +#define ISR_I_SHIFT U(7) +#define ISR_F_SHIFT U(6) + +/* CNTHCTL_EL2 definitions */ +#define CNTHCTL_RESET_VAL U(0x0) +#define EVNTEN_BIT (U(1) << 2) +#define EL1PCEN_BIT (U(1) << 1) +#define EL1PCTEN_BIT (U(1) << 0) + +/* CNTKCTL_EL1 definitions */ +#define EL0PTEN_BIT (U(1) << 9) +#define EL0VTEN_BIT (U(1) << 8) +#define EL0PCTEN_BIT (U(1) << 0) +#define EL0VCTEN_BIT (U(1) << 1) +#define EVNTEN_BIT (U(1) << 2) +#define EVNTDIR_BIT (U(1) << 3) +#define EVNTI_SHIFT U(4) +#define EVNTI_MASK U(0xf) + +/* CPTR_EL3 definitions */ +#define TCPAC_BIT (U(1) << 31) +#define TTA_BIT (U(1) << 20) +#define TFP_BIT (U(1) << 10) +#define CPTR_EL3_RESET_VAL U(0x0) + +/* CPTR_EL2 definitions */ +#define CPTR_EL2_RES1 ((U(1) << 13) | (U(1) << 12) | (U(0x3ff))) +#define CPTR_EL2_TCPAC_BIT (U(1) << 31) +#define CPTR_EL2_TTA_BIT (U(1) << 20) +#define CPTR_EL2_TFP_BIT (U(1) << 10) +#define CPTR_EL2_RESET_VAL CPTR_EL2_RES1 + +/* CPSR/SPSR definitions */ +#define DAIF_FIQ_BIT (U(1) << 0) +#define DAIF_IRQ_BIT (U(1) << 1) +#define DAIF_ABT_BIT (U(1) << 2) +#define DAIF_DBG_BIT (U(1) << 3) +#define SPSR_DAIF_SHIFT U(6) +#define SPSR_DAIF_MASK U(0xf) + +#define SPSR_AIF_SHIFT U(6) +#define SPSR_AIF_MASK U(0x7) + +#define SPSR_E_SHIFT U(9) +#define SPSR_E_MASK U(0x1) +#define SPSR_E_LITTLE U(0x0) +#define SPSR_E_BIG U(0x1) + +#define SPSR_T_SHIFT U(5) +#define SPSR_T_MASK U(0x1) +#define SPSR_T_ARM U(0x0) +#define SPSR_T_THUMB U(0x1) + +#define DISABLE_ALL_EXCEPTIONS \ + (DAIF_FIQ_BIT | DAIF_IRQ_BIT | DAIF_ABT_BIT | DAIF_DBG_BIT) + +/* + * RMR_EL3 definitions + */ +#define RMR_EL3_RR_BIT (U(1) << 1) +#define RMR_EL3_AA64_BIT (U(1) << 0) + +/* + * HI-VECTOR address for AArch32 state + */ +#define HI_VECTOR_BASE U(0xFFFF0000) + +/* + * TCR defintions + */ +#define TCR_EL3_RES1 ((1UL << 31) | (1UL << 23)) +#define TCR_EL1_IPS_SHIFT U(32) +#define TCR_EL3_PS_SHIFT U(16) + +#define TCR_TxSZ_MIN U(16) +#define TCR_TxSZ_MAX U(39) + +/* (internal) physical address size bits in EL3/EL1 */ +#define TCR_PS_BITS_4GB U(0x0) +#define TCR_PS_BITS_64GB U(0x1) +#define TCR_PS_BITS_1TB U(0x2) +#define TCR_PS_BITS_4TB U(0x3) +#define TCR_PS_BITS_16TB U(0x4) +#define TCR_PS_BITS_256TB U(0x5) + +#define ADDR_MASK_48_TO_63 ULL(0xFFFF000000000000) +#define ADDR_MASK_44_TO_47 ULL(0x0000F00000000000) +#define ADDR_MASK_42_TO_43 ULL(0x00000C0000000000) +#define ADDR_MASK_40_TO_41 ULL(0x0000030000000000) +#define ADDR_MASK_36_TO_39 ULL(0x000000F000000000) +#define ADDR_MASK_32_TO_35 ULL(0x0000000F00000000) + +#define TCR_RGN_INNER_NC (U(0x0) << 8) +#define TCR_RGN_INNER_WBA (U(0x1) << 8) +#define TCR_RGN_INNER_WT (U(0x2) << 8) +#define TCR_RGN_INNER_WBNA (U(0x3) << 8) + +#define TCR_RGN_OUTER_NC (U(0x0) << 10) +#define TCR_RGN_OUTER_WBA (U(0x1) << 10) +#define TCR_RGN_OUTER_WT (U(0x2) << 10) +#define TCR_RGN_OUTER_WBNA (U(0x3) << 10) + +#define TCR_SH_NON_SHAREABLE (U(0x0) << 12) +#define TCR_SH_OUTER_SHAREABLE (U(0x2) << 12) +#define TCR_SH_INNER_SHAREABLE (U(0x3) << 12) + +#define TCR_TG0_4KB (U(0x0) << 14) +#define TCR_TG0_64KB (U(0x1) << 14) + +#define MODE_SP_SHIFT U(0x0) +#define MODE_SP_MASK U(0x1) +#define MODE_SP_EL0 U(0x0) +#define MODE_SP_ELX U(0x1) + +#define MODE_RW_SHIFT U(0x4) +#define MODE_RW_MASK U(0x1) +#define MODE_RW_64 U(0x0) +#define MODE_RW_32 U(0x1) + +#define MODE_EL_SHIFT U(0x2) +#define MODE_EL_MASK U(0x3) +#define MODE_EL3 U(0x3) +#define MODE_EL2 U(0x2) +#define MODE_EL1 U(0x1) +#define MODE_EL0 U(0x0) + +#define MODE32_SHIFT U(0) +#define MODE32_MASK U(0xf) +#define MODE32_usr U(0x0) +#define MODE32_fiq U(0x1) +#define MODE32_irq U(0x2) +#define MODE32_svc U(0x3) +#define MODE32_mon U(0x6) +#define MODE32_abt U(0x7) +#define MODE32_hyp U(0xa) +#define MODE32_und U(0xb) +#define MODE32_sys U(0xf) + +#define GET_RW(mode) (((mode) >> MODE_RW_SHIFT) & MODE_RW_MASK) +#define GET_EL(mode) (((mode) >> MODE_EL_SHIFT) & MODE_EL_MASK) +#define GET_SP(mode) (((mode) >> MODE_SP_SHIFT) & MODE_SP_MASK) +#define GET_M32(mode) (((mode) >> MODE32_SHIFT) & MODE32_MASK) + +#define SPSR_64(el, sp, daif) \ + (MODE_RW_64 << MODE_RW_SHIFT | \ + ((el) & MODE_EL_MASK) << MODE_EL_SHIFT | \ + ((sp) & MODE_SP_MASK) << MODE_SP_SHIFT | \ + ((daif) & SPSR_DAIF_MASK) << SPSR_DAIF_SHIFT) + +#define SPSR_MODE32(mode, isa, endian, aif) \ + ((MODE_RW_32 << MODE_RW_SHIFT) | \ + (((mode) & MODE32_MASK) << MODE32_SHIFT) | \ + (((isa) & SPSR_T_MASK) << SPSR_T_SHIFT) | \ + (((endian) & SPSR_E_MASK) << SPSR_E_SHIFT) | \ + (((aif) & SPSR_AIF_MASK) << SPSR_AIF_SHIFT)) + +/* + * CTR_EL0 definitions + */ +#define CTR_CWG_SHIFT U(24) +#define CTR_CWG_MASK U(0xf) +#define CTR_ERG_SHIFT U(20) +#define CTR_ERG_MASK U(0xf) +#define CTR_DMINLINE_SHIFT U(16) +#define CTR_DMINLINE_MASK U(0xf) +#define CTR_L1IP_SHIFT U(14) +#define CTR_L1IP_MASK U(0x3) +#define CTR_IMINLINE_SHIFT U(0) +#define CTR_IMINLINE_MASK U(0xf) + +#define MAX_CACHE_LINE_SIZE U(0x800) /* 2KB */ + +/* Physical timer control register bit fields shifts and masks */ +#define CNTP_CTL_ENABLE_SHIFT U(0) +#define CNTP_CTL_IMASK_SHIFT U(1) +#define CNTP_CTL_ISTATUS_SHIFT U(2) + +#define CNTP_CTL_ENABLE_MASK U(1) +#define CNTP_CTL_IMASK_MASK U(1) +#define CNTP_CTL_ISTATUS_MASK U(1) + +#define get_cntp_ctl_enable(x) (((x) >> CNTP_CTL_ENABLE_SHIFT) & \ + CNTP_CTL_ENABLE_MASK) +#define get_cntp_ctl_imask(x) (((x) >> CNTP_CTL_IMASK_SHIFT) & \ + CNTP_CTL_IMASK_MASK) +#define get_cntp_ctl_istatus(x) (((x) >> CNTP_CTL_ISTATUS_SHIFT) & \ + CNTP_CTL_ISTATUS_MASK) + +#define set_cntp_ctl_enable(x) ((x) |= (U(1) << CNTP_CTL_ENABLE_SHIFT)) +#define set_cntp_ctl_imask(x) ((x) |= (U(1) << CNTP_CTL_IMASK_SHIFT)) + +#define clr_cntp_ctl_enable(x) ((x) &= ~(U(1) << CNTP_CTL_ENABLE_SHIFT)) +#define clr_cntp_ctl_imask(x) ((x) &= ~(U(1) << CNTP_CTL_IMASK_SHIFT)) + +/* Exception Syndrome register bits and bobs */ +#define ESR_EC_SHIFT U(26) +#define ESR_EC_MASK U(0x3f) +#define ESR_EC_LENGTH U(6) +#define EC_UNKNOWN U(0x0) +#define EC_WFE_WFI U(0x1) +#define EC_AARCH32_CP15_MRC_MCR U(0x3) +#define EC_AARCH32_CP15_MRRC_MCRR U(0x4) +#define EC_AARCH32_CP14_MRC_MCR U(0x5) +#define EC_AARCH32_CP14_LDC_STC U(0x6) +#define EC_FP_SIMD U(0x7) +#define EC_AARCH32_CP10_MRC U(0x8) +#define EC_AARCH32_CP14_MRRC_MCRR U(0xc) +#define EC_ILLEGAL U(0xe) +#define EC_AARCH32_SVC U(0x11) +#define EC_AARCH32_HVC U(0x12) +#define EC_AARCH32_SMC U(0x13) +#define EC_AARCH64_SVC U(0x15) +#define EC_AARCH64_HVC U(0x16) +#define EC_AARCH64_SMC U(0x17) +#define EC_AARCH64_SYS U(0x18) +#define EC_IABORT_LOWER_EL U(0x20) +#define EC_IABORT_CUR_EL U(0x21) +#define EC_PC_ALIGN U(0x22) +#define EC_DABORT_LOWER_EL U(0x24) +#define EC_DABORT_CUR_EL U(0x25) +#define EC_SP_ALIGN U(0x26) +#define EC_AARCH32_FP U(0x28) +#define EC_AARCH64_FP U(0x2c) +#define EC_SERROR U(0x2f) + +#define EC_BITS(x) (((x) >> ESR_EC_SHIFT) & ESR_EC_MASK) + +/* Reset bit inside the Reset management register for EL3 (RMR_EL3) */ +#define RMR_RESET_REQUEST_SHIFT U(0x1) +#define RMR_WARM_RESET_CPU (U(1) << RMR_RESET_REQUEST_SHIFT) + +/******************************************************************************* + * Definitions of register offsets, fields and macros for CPU system + * instructions. + ******************************************************************************/ + +#define TLBI_ADDR_SHIFT U(12) +#define TLBI_ADDR_MASK ULL(0x00000FFFFFFFFFFF) +#define TLBI_ADDR(x) (((x) >> TLBI_ADDR_SHIFT) & TLBI_ADDR_MASK) + +/******************************************************************************* + * Definitions of register offsets and fields in the CNTCTLBase Frame of the + * system level implementation of the Generic Timer. + ******************************************************************************/ +#define CNTNSAR U(0x4) +#define CNTNSAR_NS_SHIFT(x) (x) + +#define CNTACR_BASE(x) (U(0x40) + ((x) << 2)) +#define CNTACR_RPCT_SHIFT U(0x0) +#define CNTACR_RVCT_SHIFT U(0x1) +#define CNTACR_RFRQ_SHIFT U(0x2) +#define CNTACR_RVOFF_SHIFT U(0x3) +#define CNTACR_RWVT_SHIFT U(0x4) +#define CNTACR_RWPT_SHIFT U(0x5) + +/* PMCR_EL0 definitions */ +#define PMCR_EL0_N_SHIFT U(11) +#define PMCR_EL0_N_MASK U(0x1f) +#define PMCR_EL0_N_BITS (PMCR_EL0_N_MASK << PMCR_EL0_N_SHIFT) + +#endif /* __ARCH_H__ */ diff --git a/fsbl/include/cpu/aarch64/arch_helpers.h b/fsbl/include/cpu/aarch64/arch_helpers.h new file mode 100644 index 000000000..30bac5c23 --- /dev/null +++ b/fsbl/include/cpu/aarch64/arch_helpers.h @@ -0,0 +1,359 @@ +/* + * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __ARCH_HELPERS_H__ +#define __ARCH_HELPERS_H__ + +#include /* for additional register definitions */ +#include /* For __dead2 */ +#include +#include + +/********************************************************************** + * Macros which create inline functions to read or write CPU system + * registers + *********************************************************************/ + +#define _DEFINE_SYSREG_READ_FUNC(_name, _reg_name) \ +static inline uint64_t read_ ## _name(void) \ +{ \ + uint64_t v; \ + __asm__ volatile ("mrs %0, " #_reg_name : "=r" (v)); \ + return v; \ +} + +#define _DEFINE_SYSREG_WRITE_FUNC(_name, _reg_name) \ +static inline void write_ ## _name(uint64_t v) \ +{ \ + __asm__ volatile ("msr " #_reg_name ", %0" : : "r" (v)); \ +} + +#define _DEFINE_SYSREG_WRITE_CONST_FUNC(_name, _reg_name) \ +static inline void write_ ## _name(const uint64_t v) \ +{ \ + __asm__ volatile ("msr " #_reg_name ", %0" : : "i" (v)); \ +} + +/* Define read function for system register */ +#define DEFINE_SYSREG_READ_FUNC(_name) \ + _DEFINE_SYSREG_READ_FUNC(_name, _name) + +/* Define read & write function for system register */ +#define DEFINE_SYSREG_RW_FUNCS(_name) \ + _DEFINE_SYSREG_READ_FUNC(_name, _name) \ + _DEFINE_SYSREG_WRITE_FUNC(_name, _name) + +/* Define read & write function for renamed system register */ +#define DEFINE_RENAME_SYSREG_RW_FUNCS(_name, _reg_name) \ + _DEFINE_SYSREG_READ_FUNC(_name, _reg_name) \ + _DEFINE_SYSREG_WRITE_FUNC(_name, _reg_name) + +/* Define read function for renamed system register */ +#define DEFINE_RENAME_SYSREG_READ_FUNC(_name, _reg_name) \ + _DEFINE_SYSREG_READ_FUNC(_name, _reg_name) + +/* Define write function for renamed system register */ +#define DEFINE_RENAME_SYSREG_WRITE_FUNC(_name, _reg_name) \ + _DEFINE_SYSREG_WRITE_FUNC(_name, _reg_name) + +/* Define write function for special system registers */ +#define DEFINE_SYSREG_WRITE_CONST_FUNC(_name) \ + _DEFINE_SYSREG_WRITE_CONST_FUNC(_name, _name) + + +/********************************************************************** + * Macros to create inline functions for system instructions + *********************************************************************/ + +/* Define function for simple system instruction */ +#define DEFINE_SYSOP_FUNC(_op) \ +static inline void _op(void) \ +{ \ + __asm__ (#_op); \ +} + +/* Define function for system instruction with type specifier */ +#define DEFINE_SYSOP_TYPE_FUNC(_op, _type) \ +static inline void _op ## _type(void) \ +{ \ + __asm__ (#_op " " #_type); \ +} + +/* Define function for system instruction with register parameter */ +#define DEFINE_SYSOP_TYPE_PARAM_FUNC(_op, _type) \ +static inline void _op ## _type(uint64_t v) \ +{ \ + __asm__ (#_op " " #_type ", %0" : : "r" (v)); \ +} + +/******************************************************************************* + * TLB maintenance accessor prototypes + ******************************************************************************/ + +#if ERRATA_A57_813419 +/* + * Define function for TLBI instruction with type specifier that implements + * the workaround for errata 813419 of Cortex-A57. + */ +#define DEFINE_TLBIOP_ERRATA_A57_813419_TYPE_FUNC(_type)\ +static inline void tlbi ## _type(void) \ +{ \ + __asm__("tlbi " #_type "\n" \ + "dsb ish\n" \ + "tlbi " #_type); \ +} + +/* + * Define function for TLBI instruction with register parameter that implements + * the workaround for errata 813419 of Cortex-A57. + */ +#define DEFINE_TLBIOP_ERRATA_A57_813419_TYPE_PARAM_FUNC(_type) \ +static inline void tlbi ## _type(uint64_t v) \ +{ \ + __asm__("tlbi " #_type ", %0\n" \ + "dsb ish\n" \ + "tlbi " #_type ", %0" : : "r" (v)); \ +} +#endif /* ERRATA_A57_813419 */ + +DEFINE_SYSOP_TYPE_FUNC(tlbi, alle1) +DEFINE_SYSOP_TYPE_FUNC(tlbi, alle1is) +DEFINE_SYSOP_TYPE_FUNC(tlbi, alle2) +DEFINE_SYSOP_TYPE_FUNC(tlbi, alle2is) +#if ERRATA_A57_813419 +DEFINE_TLBIOP_ERRATA_A57_813419_TYPE_FUNC(alle3) +DEFINE_TLBIOP_ERRATA_A57_813419_TYPE_FUNC(alle3is) +#else +DEFINE_SYSOP_TYPE_FUNC(tlbi, alle3) +DEFINE_SYSOP_TYPE_FUNC(tlbi, alle3is) +#endif +DEFINE_SYSOP_TYPE_FUNC(tlbi, vmalle1) + +DEFINE_SYSOP_TYPE_PARAM_FUNC(tlbi, vaae1is) +DEFINE_SYSOP_TYPE_PARAM_FUNC(tlbi, vaale1is) +DEFINE_SYSOP_TYPE_PARAM_FUNC(tlbi, vae2is) +DEFINE_SYSOP_TYPE_PARAM_FUNC(tlbi, vale2is) +#if ERRATA_A57_813419 +DEFINE_TLBIOP_ERRATA_A57_813419_TYPE_PARAM_FUNC(vae3is) +DEFINE_TLBIOP_ERRATA_A57_813419_TYPE_PARAM_FUNC(vale3is) +#else +DEFINE_SYSOP_TYPE_PARAM_FUNC(tlbi, vae3is) +DEFINE_SYSOP_TYPE_PARAM_FUNC(tlbi, vale3is) +#endif + +/******************************************************************************* + * Cache maintenance accessor prototypes + ******************************************************************************/ +DEFINE_SYSOP_TYPE_PARAM_FUNC(dc, isw) +DEFINE_SYSOP_TYPE_PARAM_FUNC(dc, cisw) +DEFINE_SYSOP_TYPE_PARAM_FUNC(dc, csw) +DEFINE_SYSOP_TYPE_PARAM_FUNC(dc, cvac) +DEFINE_SYSOP_TYPE_PARAM_FUNC(dc, ivac) +DEFINE_SYSOP_TYPE_PARAM_FUNC(dc, civac) +DEFINE_SYSOP_TYPE_PARAM_FUNC(dc, cvau) +DEFINE_SYSOP_TYPE_PARAM_FUNC(dc, zva) + +/******************************************************************************* + * Address translation accessor prototypes + ******************************************************************************/ +DEFINE_SYSOP_TYPE_PARAM_FUNC(at, s12e1r) +DEFINE_SYSOP_TYPE_PARAM_FUNC(at, s12e1w) +DEFINE_SYSOP_TYPE_PARAM_FUNC(at, s12e0r) +DEFINE_SYSOP_TYPE_PARAM_FUNC(at, s12e0w) + +void flush_dcache_range(uintptr_t addr, size_t size); +void clean_dcache_range(uintptr_t addr, size_t size); +void inv_dcache_range(uintptr_t addr, size_t size); + +void dcsw_op_louis(u_register_t op_type); +void dcsw_op_all(u_register_t op_type); + +void disable_mmu_el3(void); +void disable_mmu_icache_el3(void); + +/******************************************************************************* + * Misc. accessor prototypes + ******************************************************************************/ + +DEFINE_SYSREG_WRITE_CONST_FUNC(daifset) +DEFINE_SYSREG_WRITE_CONST_FUNC(daifclr) + +DEFINE_SYSREG_READ_FUNC(par_el1) +DEFINE_SYSREG_READ_FUNC(id_pfr1_el1) +DEFINE_SYSREG_READ_FUNC(id_aa64pfr0_el1) +DEFINE_SYSREG_READ_FUNC(id_aa64dfr0_el1) +DEFINE_SYSREG_READ_FUNC(CurrentEl) +DEFINE_SYSREG_RW_FUNCS(daif) +DEFINE_SYSREG_RW_FUNCS(spsr_el1) +DEFINE_SYSREG_RW_FUNCS(spsr_el2) +DEFINE_SYSREG_RW_FUNCS(spsr_el3) +DEFINE_SYSREG_RW_FUNCS(elr_el1) +DEFINE_SYSREG_RW_FUNCS(elr_el2) +DEFINE_SYSREG_RW_FUNCS(elr_el3) + +DEFINE_SYSOP_FUNC(wfi) +DEFINE_SYSOP_FUNC(wfe) +DEFINE_SYSOP_FUNC(sev) +DEFINE_SYSOP_TYPE_FUNC(dsb, sy) +DEFINE_SYSOP_TYPE_FUNC(dmb, sy) +DEFINE_SYSOP_TYPE_FUNC(dmb, st) +DEFINE_SYSOP_TYPE_FUNC(dmb, ld) +DEFINE_SYSOP_TYPE_FUNC(dsb, ish) +DEFINE_SYSOP_TYPE_FUNC(dsb, ishst) +DEFINE_SYSOP_TYPE_FUNC(dmb, ish) +DEFINE_SYSOP_FUNC(isb) + +uint32_t get_afflvl_shift(uint32_t); +uint32_t mpidr_mask_lower_afflvls(uint64_t, uint32_t); + + +void __dead2 eret(uint64_t x0, uint64_t x1, uint64_t x2, uint64_t x3, + uint64_t x4, uint64_t x5, uint64_t x6, uint64_t x7); +void __dead2 smc(uint64_t x0, uint64_t x1, uint64_t x2, uint64_t x3, + uint64_t x4, uint64_t x5, uint64_t x6, uint64_t x7); + +/******************************************************************************* + * System register accessor prototypes + ******************************************************************************/ +DEFINE_SYSREG_READ_FUNC(midr_el1) +DEFINE_SYSREG_READ_FUNC(mpidr_el1) +DEFINE_SYSREG_READ_FUNC(id_aa64mmfr0_el1) + +DEFINE_SYSREG_RW_FUNCS(scr_el3) +DEFINE_SYSREG_RW_FUNCS(hcr_el2) + +DEFINE_SYSREG_RW_FUNCS(vbar_el1) +DEFINE_SYSREG_RW_FUNCS(vbar_el2) +DEFINE_SYSREG_RW_FUNCS(vbar_el3) + +DEFINE_SYSREG_RW_FUNCS(sctlr_el1) +DEFINE_SYSREG_RW_FUNCS(sctlr_el2) +DEFINE_SYSREG_RW_FUNCS(sctlr_el3) + +DEFINE_SYSREG_RW_FUNCS(actlr_el1) +DEFINE_SYSREG_RW_FUNCS(actlr_el2) +DEFINE_SYSREG_RW_FUNCS(actlr_el3) + +DEFINE_SYSREG_RW_FUNCS(esr_el1) +DEFINE_SYSREG_RW_FUNCS(esr_el2) +DEFINE_SYSREG_RW_FUNCS(esr_el3) + +DEFINE_SYSREG_RW_FUNCS(afsr0_el1) +DEFINE_SYSREG_RW_FUNCS(afsr0_el2) +DEFINE_SYSREG_RW_FUNCS(afsr0_el3) + +DEFINE_SYSREG_RW_FUNCS(afsr1_el1) +DEFINE_SYSREG_RW_FUNCS(afsr1_el2) +DEFINE_SYSREG_RW_FUNCS(afsr1_el3) + +DEFINE_SYSREG_RW_FUNCS(far_el1) +DEFINE_SYSREG_RW_FUNCS(far_el2) +DEFINE_SYSREG_RW_FUNCS(far_el3) + +DEFINE_SYSREG_RW_FUNCS(mair_el1) +DEFINE_SYSREG_RW_FUNCS(mair_el2) +DEFINE_SYSREG_RW_FUNCS(mair_el3) + +DEFINE_SYSREG_RW_FUNCS(amair_el1) +DEFINE_SYSREG_RW_FUNCS(amair_el2) +DEFINE_SYSREG_RW_FUNCS(amair_el3) + +DEFINE_SYSREG_READ_FUNC(rvbar_el1) +DEFINE_SYSREG_READ_FUNC(rvbar_el2) +DEFINE_SYSREG_READ_FUNC(rvbar_el3) + +DEFINE_SYSREG_RW_FUNCS(rmr_el1) +DEFINE_SYSREG_RW_FUNCS(rmr_el2) +DEFINE_SYSREG_RW_FUNCS(rmr_el3) + +DEFINE_SYSREG_RW_FUNCS(tcr_el1) +DEFINE_SYSREG_RW_FUNCS(tcr_el2) +DEFINE_SYSREG_RW_FUNCS(tcr_el3) + +DEFINE_SYSREG_RW_FUNCS(ttbr0_el1) +DEFINE_SYSREG_RW_FUNCS(ttbr0_el2) +DEFINE_SYSREG_RW_FUNCS(ttbr0_el3) + +DEFINE_SYSREG_RW_FUNCS(ttbr1_el1) + +DEFINE_SYSREG_RW_FUNCS(vttbr_el2) + +DEFINE_SYSREG_RW_FUNCS(cptr_el2) +DEFINE_SYSREG_RW_FUNCS(cptr_el3) + +DEFINE_SYSREG_RW_FUNCS(cpacr_el1) +DEFINE_SYSREG_RW_FUNCS(cntfrq_el0) +DEFINE_SYSREG_RW_FUNCS(cntps_ctl_el1) +DEFINE_SYSREG_RW_FUNCS(cntps_tval_el1) +DEFINE_SYSREG_RW_FUNCS(cntps_cval_el1) +DEFINE_SYSREG_READ_FUNC(cntpct_el0) +DEFINE_SYSREG_RW_FUNCS(cnthctl_el2) + +DEFINE_SYSREG_RW_FUNCS(tpidr_el3) + +DEFINE_SYSREG_RW_FUNCS(cntvoff_el2) + +DEFINE_SYSREG_RW_FUNCS(vpidr_el2) +DEFINE_SYSREG_RW_FUNCS(vmpidr_el2) +DEFINE_SYSREG_RW_FUNCS(cntp_ctl_el0) + +DEFINE_SYSREG_READ_FUNC(isr_el1) + +DEFINE_SYSREG_READ_FUNC(ctr_el0) + +DEFINE_SYSREG_RW_FUNCS(mdcr_el2) +DEFINE_SYSREG_RW_FUNCS(hstr_el2) +DEFINE_SYSREG_RW_FUNCS(cnthp_ctl_el2) +DEFINE_SYSREG_READ_FUNC(pmcr_el0) + +DEFINE_RENAME_SYSREG_RW_FUNCS(icc_sre_el1, ICC_SRE_EL1) +DEFINE_RENAME_SYSREG_RW_FUNCS(icc_sre_el2, ICC_SRE_EL2) +DEFINE_RENAME_SYSREG_RW_FUNCS(icc_sre_el3, ICC_SRE_EL3) +DEFINE_RENAME_SYSREG_RW_FUNCS(icc_pmr_el1, ICC_PMR_EL1) +DEFINE_RENAME_SYSREG_RW_FUNCS(icc_igrpen1_el3, ICC_IGRPEN1_EL3) +DEFINE_RENAME_SYSREG_RW_FUNCS(icc_igrpen0_el1, ICC_IGRPEN0_EL1) +DEFINE_RENAME_SYSREG_READ_FUNC(icc_hppir0_el1, ICC_HPPIR0_EL1) +DEFINE_RENAME_SYSREG_READ_FUNC(icc_hppir1_el1, ICC_HPPIR1_EL1) +DEFINE_RENAME_SYSREG_READ_FUNC(icc_iar0_el1, ICC_IAR0_EL1) +DEFINE_RENAME_SYSREG_READ_FUNC(icc_iar1_el1, ICC_IAR1_EL1) +DEFINE_RENAME_SYSREG_WRITE_FUNC(icc_eoir0_el1, ICC_EOIR0_EL1) +DEFINE_RENAME_SYSREG_WRITE_FUNC(icc_eoir1_el1, ICC_EOIR1_EL1) + + +#define IS_IN_EL(x) \ + (GET_EL(read_CurrentEl()) == MODE_EL##x) + +#define IS_IN_EL1() IS_IN_EL(1) +#define IS_IN_EL3() IS_IN_EL(3) + +/* + * Check if an EL is implemented from AA64PFR0 register fields. 'el' argument + * must be one of 1, 2 or 3. + */ +#define EL_IMPLEMENTED(el) \ + ((read_id_aa64pfr0_el1() >> ID_AA64PFR0_EL##el##_SHIFT) \ + & ID_AA64PFR0_ELX_MASK) + +/* Previously defined accesor functions with incomplete register names */ + +#define read_current_el() read_CurrentEl() + +#define dsb() dsbsy() + +#define read_midr() read_midr_el1() + +#define read_mpidr() read_mpidr_el1() + +#define read_scr() read_scr_el3() +#define write_scr(_v) write_scr_el3(_v) + +#define read_hcr() read_hcr_el2() +#define write_hcr(_v) write_hcr_el2(_v) + +#define read_cpacr() read_cpacr_el1() +#define write_cpacr(_v) write_cpacr_el1(_v) + +#endif /* __ARCH_HELPERS_H__ */ diff --git a/fsbl/include/cpu/aarch64/asm_macros.S b/fsbl/include/cpu/aarch64/asm_macros.S new file mode 100644 index 000000000..d81d3d75b --- /dev/null +++ b/fsbl/include/cpu/aarch64/asm_macros.S @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +#ifndef __ASM_MACROS_S__ +#define __ASM_MACROS_S__ + +#include +#include +#include + + .macro dcache_line_size reg, tmp + mrs \tmp, ctr_el0 + ubfx \tmp, \tmp, #16, #4 + mov \reg, #4 + lsl \reg, \reg, \tmp + .endm + + + .macro icache_line_size reg, tmp + mrs \tmp, ctr_el0 + and \tmp, \tmp, #0xf + mov \reg, #4 + lsl \reg, \reg, \tmp + .endm + + + .macro smc_check label + mrs x0, esr_el3 + ubfx x0, x0, #ESR_EC_SHIFT, #ESR_EC_LENGTH + cmp x0, #EC_AARCH64_SMC + b.ne $label + .endm + + /* + * Declare the exception vector table, enforcing it is aligned on a + * 2KB boundary, as required by the ARMv8 architecture. + * Use zero bytes as the fill value to be stored in the padding bytes + * so that it inserts illegal AArch64 instructions. This increases + * security, robustness and potentially facilitates debugging. + */ + .macro vector_base label + .section .vectors, "ax" + .align 11, 0 + \label: + .endm + + /* + * Create an entry in the exception vector table, enforcing it is + * aligned on a 128-byte boundary, as required by the ARMv8 architecture. + * Use zero bytes as the fill value to be stored in the padding bytes + * so that it inserts illegal AArch64 instructions. This increases + * security, robustness and potentially facilitates debugging. + */ + .macro vector_entry label + .section .vectors, "ax" + .align 7, 0 + \label: + .endm + + /* + * This macro verifies that the given vector doesn't exceed the + * architectural limit of 32 instructions. This is meant to be placed + * immediately after the last instruction in the vector. It takes the + * vector entry as the parameter + */ + .macro check_vector_size since + .if (. - \since) > (32 * 4) + .error "Vector exceeds 32 instructions" + .endif + .endm + + /* + * Helper macro to generate the best mov/movk combinations according + * the value to be moved. The 16 bits from '_shift' are tested and + * if not zero, they are moved into '_reg' without affecting + * other bits. + */ + .macro _mov_imm16 _reg, _val, _shift + .if (\_val >> \_shift) & 0xffff + .if (\_val & (1 << \_shift - 1)) + movk \_reg, (\_val >> \_shift) & 0xffff, LSL \_shift + .else + mov \_reg, \_val & (0xffff << \_shift) + .endif + .endif + .endm + + /* + * Helper macro to load arbitrary values into 32 or 64-bit registers + * which generates the best mov/movk combinations. Many base addresses + * are 64KB aligned the macro will eliminate updating bits 15:0 in + * that case + */ + .macro mov_imm _reg, _val + .if (\_val) == 0 + mov \_reg, #0 + .else + _mov_imm16 \_reg, (\_val), 0 + _mov_imm16 \_reg, (\_val), 16 + _mov_imm16 \_reg, (\_val), 32 + _mov_imm16 \_reg, (\_val), 48 + .endif + .endm + + .macro no_ret _func:req, skip_nop=0 + bl \_func + .endm + + .macro atf_state_set _regv, _rega, _val + mov_imm \_regv, \_val + mov_imm \_rega, ATF_STATE_REG + str \_regv, [\_rega] + .endm + + .macro atf_err_set _regv, _rega, _val + mov_imm \_regv, \_val + mov_imm \_rega, ATF_ERR_REG + str \_regv, [\_rega] + .endm + + .macro reg_write _regv, _rega, _addr, _val + mov_imm \_regv, \_val + mov_imm \_rega, \_addr + str \_regv, [\_rega] + .endm + +#endif /* __ASM_MACROS_S__ */ diff --git a/fsbl/include/cpu/aarch64/bl2_helper.h b/fsbl/include/cpu/aarch64/bl2_helper.h new file mode 100644 index 000000000..37782cd38 --- /dev/null +++ b/fsbl/include/cpu/aarch64/bl2_helper.h @@ -0,0 +1,8 @@ +#ifndef __BL2_HELPER_H__ +#define __BL2_HELPER_H__ + +void call_with_eret_to_next(void); +void call_with_eret(uintptr_t bl2_entry); +void jump_bl31(uintptr_t monitor_entry, void *bl31_params); + +#endif /* __BL2_HELPER_H__ */ diff --git a/fsbl/include/cpu/aarch64/cortex_a35.h b/fsbl/include/cpu/aarch64/cortex_a35.h new file mode 100644 index 000000000..ad0fedc73 --- /dev/null +++ b/fsbl/include/cpu/aarch64/cortex_a35.h @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __CORTEX_A35_H__ +#define __CORTEX_A35_H__ + +/* Cortex-A35 Main ID register for revision 0 */ +#define CORTEX_A35_MIDR 0x410FD040 + +/******************************************************************************* + * CPU Extended Control register specific definitions. + * CPUECTLR_EL1 is an implementation-specific register. + ******************************************************************************/ +#define CORTEX_A35_CPUECTLR_EL1 S3_1_C15_C2_1 +#define CORTEX_A35_CPUECTLR_SMPEN_BIT (1 << 6) + +#endif /* __CORTEX_A35_H__ */ diff --git a/fsbl/include/cpu/aarch64/cortex_a53.h b/fsbl/include/cpu/aarch64/cortex_a53.h new file mode 100644 index 000000000..6627dcfa6 --- /dev/null +++ b/fsbl/include/cpu/aarch64/cortex_a53.h @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2014-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __CORTEX_A53_H__ +#define __CORTEX_A53_H__ + +/* Cortex-A53 midr for revision 0 */ +#define CORTEX_A53_MIDR U(0x410FD030) + +/* Retention timer tick definitions */ +#define RETENTION_ENTRY_TICKS_2 U(0x1) +#define RETENTION_ENTRY_TICKS_8 U(0x2) +#define RETENTION_ENTRY_TICKS_32 U(0x3) +#define RETENTION_ENTRY_TICKS_64 U(0x4) +#define RETENTION_ENTRY_TICKS_128 U(0x5) +#define RETENTION_ENTRY_TICKS_256 U(0x6) +#define RETENTION_ENTRY_TICKS_512 U(0x7) + +/******************************************************************************* + * CPU Extended Control register specific definitions. + ******************************************************************************/ +#define CORTEX_A53_ECTLR_EL1 S3_1_C15_C2_1 + +#define CORTEX_A53_ECTLR_SMP_BIT (U(1) << 6) + +#define CORTEX_A53_ECTLR_CPU_RET_CTRL_SHIFT U(0) +#define CORTEX_A53_ECTLR_CPU_RET_CTRL_MASK (U(0x7) << CORTEX_A53_ECTLR_CPU_RET_CTRL_SHIFT) + +#define CORTEX_A53_ECTLR_FPU_RET_CTRL_SHIFT U(3) +#define CORTEX_A53_ECTLR_FPU_RET_CTRL_MASK (U(0x7) << CORTEX_A53_ECTLR_FPU_RET_CTRL_SHIFT) + +/******************************************************************************* + * CPU Memory Error Syndrome register specific definitions. + ******************************************************************************/ +#define CORTEX_A53_MERRSR_EL1 S3_1_C15_C2_2 + +/******************************************************************************* + * CPU Auxiliary Control register specific definitions. + ******************************************************************************/ +#define CORTEX_A53_ACTLR_EL1 S3_1_C15_C2_0 + +#define CORTEX_A53_ACTLR_ENDCCASCI_SHIFT U(44) +#define CORTEX_A53_ACTLR_ENDCCASCI (U(1) << CORTEX_A53_ACTLR_ENDCCASCI_SHIFT) +#define CORTEX_A53_ACTLR_RADIS_SHIFT U(27) +#define CORTEX_A53_ACTLR_RADIS (U(3) << CORTEX_A53_ACTLR_RADIS_SHIFT) +#define CORTEX_A53_ACTLR_L1RADIS_SHIFT U(25) +#define CORTEX_A53_ACTLR_L1RADIS (U(3) << CORTEX_A53_ACTLR_L1RADIS_SHIFT) +#define CORTEX_A53_ACTLR_DTAH_SHIFT U(24) +#define CORTEX_A53_ACTLR_DTAH (U(1) << CORTEX_A53_ACTLR_DTAH_SHIFT) + +/******************************************************************************* + * L2 Auxiliary Control register specific definitions. + ******************************************************************************/ +#define CORTEX_A53_L2ACTLR_EL1 S3_1_C15_C0_0 + +#define CORTEX_A53_L2ACTLR_ENABLE_UNIQUECLEAN (U(1) << 14) +#define CORTEX_A53_L2ACTLR_DISABLE_CLEAN_PUSH (U(1) << 3) +/******************************************************************************* + * L2 Extended Control register specific definitions. + ******************************************************************************/ +#define CORTEX_A53_L2ECTLR_EL1 S3_1_C11_C0_3 + +#define CORTEX_A53_L2ECTLR_RET_CTRL_SHIFT U(0) +#define CORTEX_A53_L2ECTLR_RET_CTRL_MASK (U(0x7) << L2ECTLR_RET_CTRL_SHIFT) + +/******************************************************************************* + * L2 Memory Error Syndrome register specific definitions. + ******************************************************************************/ +#define CORTEX_A53_L2MERRSR_EL1 S3_1_C15_C2_3 + +#endif /* __CORTEX_A53_H__ */ diff --git a/fsbl/include/cpu/aarch64/cortex_a55.h b/fsbl/include/cpu/aarch64/cortex_a55.h new file mode 100644 index 000000000..293f2b240 --- /dev/null +++ b/fsbl/include/cpu/aarch64/cortex_a55.h @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __CORTEX_A55_H__ +#define __CORTEX_A55_H__ + +/* Cortex-A55 MIDR for revision 0 */ +#define CORTEX_A55_MIDR 0x410fd050 + +/******************************************************************************* + * CPU Extended Control register specific definitions. + ******************************************************************************/ +#define CORTEX_A55_CPUPWRCTLR_EL1 S3_0_C15_C2_7 +#define CORTEX_A55_CPUECTLR_EL1 S3_0_C15_C1_4 + +/* Definitions of register field mask in CORTEX_A55_CPUPWRCTLR_EL1 */ +#define CORTEX_A55_CORE_PWRDN_EN_MASK 0x1 + +#endif /* __CORTEX_A55_H__ */ diff --git a/fsbl/include/cpu/aarch64/cortex_a57.h b/fsbl/include/cpu/aarch64/cortex_a57.h new file mode 100644 index 000000000..20d11e14d --- /dev/null +++ b/fsbl/include/cpu/aarch64/cortex_a57.h @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2014-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __CORTEX_A57_H__ +#define __CORTEX_A57_H__ + +/* Cortex-A57 midr for revision 0 */ +#define CORTEX_A57_MIDR U(0x410FD070) + +/* Retention timer tick definitions */ +#define RETENTION_ENTRY_TICKS_2 U(0x1) +#define RETENTION_ENTRY_TICKS_8 U(0x2) +#define RETENTION_ENTRY_TICKS_32 U(0x3) +#define RETENTION_ENTRY_TICKS_64 U(0x4) +#define RETENTION_ENTRY_TICKS_128 U(0x5) +#define RETENTION_ENTRY_TICKS_256 U(0x6) +#define RETENTION_ENTRY_TICKS_512 U(0x7) + +/******************************************************************************* + * CPU Extended Control register specific definitions. + ******************************************************************************/ +#define CORTEX_A57_ECTLR_EL1 S3_1_C15_C2_1 + +#define CORTEX_A57_ECTLR_SMP_BIT (U(1) << 6) +#define CORTEX_A57_ECTLR_DIS_TWD_ACC_PFTCH_BIT (U(1) << 38) +#define CORTEX_A57_ECTLR_L2_IPFTCH_DIST_MASK (U(0x3) << 35) +#define CORTEX_A57_ECTLR_L2_DPFTCH_DIST_MASK (U(0x3) << 32) + +#define CORTEX_A57_ECTLR_CPU_RET_CTRL_SHIFT U(0) +#define CORTEX_A57_ECTLR_CPU_RET_CTRL_MASK (U(0x7) << CORTEX_A57_ECTLR_CPU_RET_CTRL_SHIFT) + +/******************************************************************************* + * CPU Memory Error Syndrome register specific definitions. + ******************************************************************************/ +#define CORTEX_A57_MERRSR_EL1 S3_1_C15_C2_2 + +/******************************************************************************* + * CPU Auxiliary Control register specific definitions. + ******************************************************************************/ +#define CORTEX_A57_ACTLR_EL1 S3_1_C15_C2_0 + +#define CORTEX_A57_ACTLR_DIS_LOAD_PASS_DMB (ULL(1) << 59) +#define CORTEX_A57_ACTLR_GRE_NGRE_AS_NGNRE (ULL(1) << 54) +#define CORTEX_A57_ACTLR_DIS_OVERREAD (ULL(1) << 52) +#define CORTEX_A57_ACTLR_NO_ALLOC_WBWA (ULL(1) << 49) +#define CORTEX_A57_ACTLR_DCC_AS_DCCI (ULL(1) << 44) +#define CORTEX_A57_ACTLR_FORCE_FPSCR_FLUSH (ULL(1) << 38) +#define CORTEX_A57_ACTLR_DIS_STREAMING (ULL(3) << 27) +#define CORTEX_A57_ACTLR_DIS_L1_STREAMING (ULL(3) << 25) +#define CORTEX_A57_ACTLR_DIS_INDIRECT_PREDICTOR (ULL(1) << 4) + +/******************************************************************************* + * L2 Control register specific definitions. + ******************************************************************************/ +#define CORTEX_A57_L2CTLR_EL1 S3_1_C11_C0_2 + +#define CORTEX_A57_L2CTLR_DATA_RAM_LATENCY_SHIFT U(0) +#define CORTEX_A57_L2CTLR_TAG_RAM_LATENCY_SHIFT U(6) + +#define CORTEX_A57_L2_DATA_RAM_LATENCY_3_CYCLES U(0x2) +#define CORTEX_A57_L2_TAG_RAM_LATENCY_3_CYCLES U(0x2) + +#define CORTEX_A57_L2_ECC_PARITY_PROTECTION_BIT (U(1) << 21) + +/******************************************************************************* + * L2 Extended Control register specific definitions. + ******************************************************************************/ +#define CORTEX_A57_L2ECTLR_EL1 S3_1_C11_C0_3 + +#define CORTEX_A57_L2ECTLR_RET_CTRL_SHIFT U(0) +#define CORTEX_A57_L2ECTLR_RET_CTRL_MASK (U(0x7) << CORTEX_A57_L2ECTLR_RET_CTRL_SHIFT) + +/******************************************************************************* + * L2 Memory Error Syndrome register specific definitions. + ******************************************************************************/ +#define CORTEX_A57_L2MERRSR_EL1 S3_1_C15_C2_3 + +#endif /* __CORTEX_A57_H__ */ diff --git a/fsbl/include/cpu/aarch64/cortex_a72.h b/fsbl/include/cpu/aarch64/cortex_a72.h new file mode 100644 index 000000000..90f0abd96 --- /dev/null +++ b/fsbl/include/cpu/aarch64/cortex_a72.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2015-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __CORTEX_A72_H__ +#define __CORTEX_A72_H__ + +/* Cortex-A72 midr for revision 0 */ +#define CORTEX_A72_MIDR 0x410FD080 + +/******************************************************************************* + * CPU Extended Control register specific definitions. + ******************************************************************************/ +#define CORTEX_A72_ECTLR_EL1 S3_1_C15_C2_1 + +#define CORTEX_A72_ECTLR_SMP_BIT (1 << 6) +#define CORTEX_A72_ECTLR_DIS_TWD_ACC_PFTCH_BIT (1 << 38) +#define CORTEX_A72_ECTLR_L2_IPFTCH_DIST_MASK (0x3 << 35) +#define CORTEX_A72_ECTLR_L2_DPFTCH_DIST_MASK (0x3 << 32) + +/******************************************************************************* + * CPU Memory Error Syndrome register specific definitions. + ******************************************************************************/ +#define CORTEX_A72_MERRSR_EL1 S3_1_C15_C2_2 + +/******************************************************************************* + * CPU Auxiliary Control register specific definitions. + ******************************************************************************/ +#define CORTEX_A72_ACTLR_EL1 S3_1_C15_C2_0 + +#define CORTEX_A72_ACTLR_DISABLE_L1_DCACHE_HW_PFTCH (1 << 56) +#define CORTEX_A72_ACTLR_NO_ALLOC_WBWA (1 << 49) +#define CORTEX_A72_ACTLR_DCC_AS_DCCI (1 << 44) + +/******************************************************************************* + * L2 Control register specific definitions. + ******************************************************************************/ +#define CORTEX_A72_L2CTLR_EL1 S3_1_C11_C0_2 + +#define CORTEX_A72_L2CTLR_DATA_RAM_LATENCY_SHIFT 0 +#define CORTEX_A72_L2CTLR_TAG_RAM_LATENCY_SHIFT 6 + +#define CORTEX_A72_L2_DATA_RAM_LATENCY_3_CYCLES 0x2 +#define CORTEX_A72_L2_TAG_RAM_LATENCY_2_CYCLES 0x1 +#define CORTEX_A72_L2_TAG_RAM_LATENCY_3_CYCLES 0x2 + +/******************************************************************************* + * L2 Memory Error Syndrome register specific definitions. + ******************************************************************************/ +#define CORTEX_A72_L2MERRSR_EL1 S3_1_C15_C2_3 + +#endif /* __CORTEX_A72_H__ */ diff --git a/fsbl/include/cpu/aarch64/cortex_a73.h b/fsbl/include/cpu/aarch64/cortex_a73.h new file mode 100644 index 000000000..faff5fef6 --- /dev/null +++ b/fsbl/include/cpu/aarch64/cortex_a73.h @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __CORTEX_A73_H__ +#define __CORTEX_A73_H__ + +/* Cortex-A73 midr for revision 0 */ +#define CORTEX_A73_MIDR 0x410FD090 + +/******************************************************************************* + * CPU Extended Control register specific definitions. + ******************************************************************************/ +#define CORTEX_A73_CPUECTLR_EL1 S3_1_C15_C2_1 /* Instruction def. */ + +#define CORTEX_A73_CPUECTLR_SMP_BIT (1 << 6) + +/******************************************************************************* + * L2 Memory Error Syndrome register specific definitions. + ******************************************************************************/ +#define CORTEX_A73_L2MERRSR_EL1 S3_1_C15_C2_3 /* Instruction def. */ + +#endif /* __CORTEX_A73_H__ */ diff --git a/fsbl/include/cpu/aarch64/cortex_a75.h b/fsbl/include/cpu/aarch64/cortex_a75.h new file mode 100644 index 000000000..1ffe20bb3 --- /dev/null +++ b/fsbl/include/cpu/aarch64/cortex_a75.h @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __CORTEX_A75_H__ +#define __CORTEX_A75_H__ + +/* Cortex-A75 MIDR */ +#define CORTEX_A75_MIDR 0x410fd0a0 + +/******************************************************************************* + * CPU Extended Control register specific definitions. + ******************************************************************************/ +#define CORTEX_A75_CPUPWRCTLR_EL1 S3_0_C15_C2_7 +#define CORTEX_A75_CPUECTLR_EL1 S3_0_C15_C1_4 + +/* Definitions of register field mask in CORTEX_A75_CPUPWRCTLR_EL1 */ +#define CORTEX_A75_CORE_PWRDN_EN_MASK 0x1 + +#endif /* __CORTEX_A75_H__ */ diff --git a/fsbl/include/cpu/aarch64/cpu_helper.h b/fsbl/include/cpu/aarch64/cpu_helper.h new file mode 100644 index 000000000..83173fa30 --- /dev/null +++ b/fsbl/include/cpu/aarch64/cpu_helper.h @@ -0,0 +1,30 @@ +#ifndef __CPU_HELP_H__ +#define __CPU_HELP_H__ + +#include + +#define SYNC_EXCEPTION_SP_EL0 0x0 +#define IRQ_SP_EL0 0x1 +#define FIQ_SP_EL0 0x2 +#define SERROR_SP_EL0 0x3 +#define SYNC_EXCEPTION_SP_ELX 0x4 +#define IRQ_SP_ELX 0x5 +#define FIQ_SP_ELX 0x6 +#define SERROR_SP_ELX 0x7 +#define SYNC_EXCEPTION_AARCH64 0x8 +#define IRQ_AARCH64 0x9 +#define FIQ_AARCH64 0xa +#define SERROR_AARCH64 0xb +#define SYNC_EXCEPTION_AARCH32 0xc +#define IRQ_AARCH32 0xd +#define FIQ_AARCH32 0xe +#define SERROR_AARCH32 0xf + +#ifndef __ASSEMBLY__ + +#include +#include + +#endif /* __ASSEMBLY__ */ + +#endif /* __CPU_HELP_H__ */ diff --git a/fsbl/include/cpu/aarch64/el3_common_macros.S b/fsbl/include/cpu/aarch64/el3_common_macros.S new file mode 100644 index 000000000..51613d302 --- /dev/null +++ b/fsbl/include/cpu/aarch64/el3_common_macros.S @@ -0,0 +1,130 @@ +/* + * Copyright (c) 2015-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __EL3_COMMON_MACROS_S__ +#define __EL3_COMMON_MACROS_S__ + +#include +#include + + /* + * Helper macro to initialise EL3 registers we care about. + */ + .macro el3_arch_init_common _exception_vectors + /* --------------------------------------------------------------------- + * SCTLR_EL3 has already been initialised - read current value before + * modifying. + * + * SCTLR_EL3.I: Enable the instruction cache. + * + * SCTLR_EL3.SA: Enable Stack Aligment check. A SP alignment fault + * exception is generated if a load or store instruction executed at + * EL3 uses the SP as the base address and the SP is not aligned to a + * 16-byte boundary. + * + * SCTLR_EL3.A: Enable Alignment fault checking. All instructions that + * load or store one or more registers have an alignment check that the + * address being accessed is aligned to the size of the data element(s) + * being accessed. + * --------------------------------------------------------------------- + */ + mov x1, #(SCTLR_I_BIT | SCTLR_A_BIT | SCTLR_SA_BIT) + mrs x0, sctlr_el3 + orr x0, x0, x1 + msr sctlr_el3, x0 + isb + + /* --------------------------------------------------------------------- + * Set the exception vectors. + * --------------------------------------------------------------------- + */ + adr x0, \_exception_vectors + msr vbar_el3, x0 + isb + + /* --------------------------------------------------------------------- + * Initialise SCR_EL3, setting all fields rather than relying on hw. + * All fields are architecturally UNKNOWN on reset. The following fields + * do not change during the TF lifetime. The remaining fields are set to + * zero here but are updated ahead of transitioning to a lower EL in the + * function cm_init_context_common(). + * + * SCR_EL3.TWE: Set to zero so that execution of WFE instructions at + * EL2, EL1 and EL0 are not trapped to EL3. + * + * SCR_EL3.TWI: Set to zero so that execution of WFI instructions at + * EL2, EL1 and EL0 are not trapped to EL3. + * + * SCR_EL3.SIF: Set to one to disable instruction fetches from + * Non-secure memory. + * + * SCR_EL3.SMD: Set to zero to enable SMC calls at EL1 and above, from + * both Security states and both Execution states. + * + * SCR_EL3.EA: Set to one to route External Aborts and SError Interrupts + * to EL3 when executing at any EL. + * --------------------------------------------------------------------- + */ + mov x0, #((SCR_RESET_VAL | SCR_EA_BIT | SCR_SIF_BIT) \ + & ~(SCR_TWE_BIT | SCR_TWI_BIT | SCR_SMD_BIT)) + msr scr_el3, x0 + + /* --------------------------------------------------------------------- + * Initialise MDCR_EL3, setting all fields rather than relying on hw. + * Some fields are architecturally UNKNOWN on reset. + * + * MDCR_EL3.SDD: Set to one to disable AArch64 Secure self-hosted debug. + * Debug exceptions, other than Breakpoint Instruction exceptions, are + * disabled from all ELs in Secure state. + * + * MDCR_EL3.SPD32: Set to 0b10 to disable AArch32 Secure self-hosted + * privileged debug from S-EL1. + * + * MDCR_EL3.NSPB (ARM v8.2): SPE enabled in non-secure state and + * disabled in secure state. Accesses to SPE registers at SEL1 generate + * trap exceptions to EL3. + * + * MDCR_EL3.TDOSA: Set to zero so that EL2 and EL2 System register + * access to the powerdown debug registers do not trap to EL3. + * + * MDCR_EL3.TDA: Set to zero to allow EL0, EL1 and EL2 access to the + * debug registers, other than those registers that are controlled by + * MDCR_EL3.TDOSA. + * + * MDCR_EL3.TPM: Set to zero so that EL0, EL1, and EL2 System register + * accesses to all Performance Monitors registers do not trap to EL3. + * --------------------------------------------------------------------- + */ + mov_imm x0, ((MDCR_EL3_RESET_VAL | MDCR_SDD_BIT | MDCR_SPD32(MDCR_SPD32_DISABLE)) \ + & ~(MDCR_TDOSA_BIT | MDCR_TDA_BIT | MDCR_TPM_BIT)) + + msr mdcr_el3, x0 + + /* --------------------------------------------------------------------- + * Enable External Aborts and SError Interrupts now that the exception + * vectors have been setup. + * --------------------------------------------------------------------- + */ + msr daifclr, #DAIF_ABT_BIT + + /* --------------------------------------------------------------------- + * Initialise CPTR_EL3, setting all fields rather than relying on hw. + * All fields are architecturally UNKNOWN on reset. + * + * CPTR_EL3.TCPAC: Set to zero so that any accesses to CPACR_EL1, + * CPTR_EL2, CPACR, or HCPTR do not trap to EL3. + * + * CPTR_EL3.TTA: Set to zero so that System register accesses to the + * trace registers do not trap to EL3. + * + * CPTR_EL3.TFP: Set to zero so that accesses to Advanced SIMD and + * floating-point functionality do not trap to EL3. + * --------------------------------------------------------------------- + */ + mov_imm x0, (CPTR_EL3_RESET_VAL & ~(TCPAC_BIT | TTA_BIT | TFP_BIT)) + msr cptr_el3, x0 + .endm +#endif /* __EL3_COMMON_MACROS_S__ */ diff --git a/fsbl/include/cpu/aarch64/smcc_helpers.h b/fsbl/include/cpu/aarch64/smcc_helpers.h new file mode 100644 index 000000000..62294d049 --- /dev/null +++ b/fsbl/include/cpu/aarch64/smcc_helpers.h @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2015-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __SMCC_HELPERS_H__ +#define __SMCC_HELPERS_H__ + +#include + +#ifndef __ASSEMBLY__ +#include + +/* Convenience macros to return from SMC handler */ +#define SMC_RET0(_h) { \ + return (uint64_t) (_h); \ +} +#define SMC_RET1(_h, _x0) { \ + write_ctx_reg((get_gpregs_ctx(_h)), (CTX_GPREG_X0), (_x0)); \ + SMC_RET0(_h); \ +} +#define SMC_RET2(_h, _x0, _x1) { \ + write_ctx_reg((get_gpregs_ctx(_h)), (CTX_GPREG_X1), (_x1)); \ + SMC_RET1(_h, (_x0)); \ +} +#define SMC_RET3(_h, _x0, _x1, _x2) { \ + write_ctx_reg((get_gpregs_ctx(_h)), (CTX_GPREG_X2), (_x2)); \ + SMC_RET2(_h, (_x0), (_x1)); \ +} +#define SMC_RET4(_h, _x0, _x1, _x2, _x3) { \ + write_ctx_reg((get_gpregs_ctx(_h)), (CTX_GPREG_X3), (_x3)); \ + SMC_RET3(_h, (_x0), (_x1), (_x2)); \ +} +#define SMC_RET5(_h, _x0, _x1, _x2, _x3, _x4) { \ + write_ctx_reg((get_gpregs_ctx(_h)), (CTX_GPREG_X4), (_x4)); \ + SMC_RET4(_h, (_x0), (_x1), (_x2), (_x3)); \ +} +#define SMC_RET6(_h, _x0, _x1, _x2, _x3, _x4, _x5) { \ + write_ctx_reg((get_gpregs_ctx(_h)), (CTX_GPREG_X5), (_x5)); \ + SMC_RET5(_h, (_x0), (_x1), (_x2), (_x3), (_x4)); \ +} +#define SMC_RET7(_h, _x0, _x1, _x2, _x3, _x4, _x5, _x6) { \ + write_ctx_reg((get_gpregs_ctx(_h)), (CTX_GPREG_X6), (_x6)); \ + SMC_RET6(_h, (_x0), (_x1), (_x2), (_x3), (_x4), (_x5)); \ +} +#define SMC_RET8(_h, _x0, _x1, _x2, _x3, _x4, _x5, _x6, _x7) { \ + write_ctx_reg((get_gpregs_ctx(_h)), (CTX_GPREG_X7), (_x7)); \ + SMC_RET7(_h, (_x0), (_x1), (_x2), (_x3), (_x4), (_x5), (_x6)); \ +} + +/* + * Convenience macros to access general purpose registers using handle provided + * to SMC handler. These take the offset values defined in context.h + */ +#define SMC_GET_GP(_h, _g) \ + read_ctx_reg((get_gpregs_ctx(_h)), (_g)) +#define SMC_SET_GP(_h, _g, _v) \ + write_ctx_reg((get_gpregs_ctx(_h)), (_g), (_v)) + +/* + * Convenience macros to access EL3 context registers using handle provided to + * SMC handler. These take the offset values defined in context.h + */ +#define SMC_GET_EL3(_h, _e) \ + read_ctx_reg((get_el3state_ctx(_h)), (_e)) +#define SMC_SET_EL3(_h, _e, _v) \ + write_ctx_reg((get_el3state_ctx(_h)), (_e), (_v)) + +/* Return a UUID in the SMC return registers */ +#define SMC_UUID_RET(_h, _uuid) \ + SMC_RET4(handle, ((const uint32_t *) &(_uuid))[0], \ + ((const uint32_t *) &(_uuid))[1], \ + ((const uint32_t *) &(_uuid))[2], \ + ((const uint32_t *) &(_uuid))[3]) + +/* + * Helper macro to retrieve the SMC parameters from cpu_context_t. + */ +#define get_smc_params_from_ctx(_hdl, _x1, _x2, _x3, _x4) \ + do { \ + const gp_regs_t *regs = get_gpregs_ctx(_hdl); \ + _x1 = read_ctx_reg(regs, CTX_GPREG_X1); \ + _x2 = read_ctx_reg(regs, CTX_GPREG_X2); \ + _x3 = read_ctx_reg(regs, CTX_GPREG_X3); \ + _x4 = read_ctx_reg(regs, CTX_GPREG_X4); \ + } while (0) + +#endif /*__ASSEMBLY__*/ +#endif /* __SMCC_HELPERS_H__ */ diff --git a/fsbl/include/cpu/asm_macros_common.S b/fsbl/include/cpu/asm_macros_common.S new file mode 100644 index 000000000..8827e64f5 --- /dev/null +++ b/fsbl/include/cpu/asm_macros_common.S @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +#ifndef __ASM_MACROS_COMMON_S__ +#define __ASM_MACROS_COMMON_S__ + + /* + * This macro is used to create a function label and place the + * code into a separate text section based on the function name + * to enable elimination of unused code during linking. It also adds + * basic debug information to enable call stack printing most of the + * time. + */ + .macro func _name + /* + * Add Call Frame Information entry in the .debug_frame section for + * debugger consumption. This enables callstack printing in debuggers. + * This does not use any space in the final loaded binary, only in the + * ELF file. + * Note that a function manipulating the CFA pointer location (i.e. the + * x29 frame pointer on AArch64) should declare it using the + * appropriate .cfi* directives, or be prepared to have a degraded + * debugging experience. + */ + .cfi_sections .debug_frame + .section .text.\_name, "ax" + .type \_name, %function + .func \_name + /* + * .cfi_startproc and .cfi_endproc are needed to output entries in + * .debug_frame + */ + .cfi_startproc + \_name: + .endm + + /* + * This macro is used to mark the end of a function. + */ + .macro endfunc _name + .endfunc + .cfi_endproc + .size \_name, . - \_name + .endm + + /* + * Helper assembler macro to count trailing zeros. The output is + * populated in the `TZ_COUNT` symbol. + */ + .macro count_tz _value, _tz_count + .if \_value + count_tz "(\_value >> 1)", "(\_tz_count + 1)" + .else + .equ TZ_COUNT, (\_tz_count - 1) + .endif + .endm + +#endif /* __ASM_MACROS_COMMON_S__ */ diff --git a/fsbl/include/cpu/cpu.h b/fsbl/include/cpu/cpu.h new file mode 100644 index 000000000..72bb2ba33 --- /dev/null +++ b/fsbl/include/cpu/cpu.h @@ -0,0 +1,34 @@ +#ifndef __CPU_H__ +#define __CPU_H__ + +#if defined(AARCH64) +#include +#elif defined(RISCV) +#include +#else +#error "Unknown CPU type" +#endif + +#ifndef __ASSEMBLY__ + +struct cache_map { + uint64_t ro_start; + uint32_t ro_size; + + uint64_t rw_start; + uint32_t rw_size; + + uint64_t io_start; + uint32_t io_size; +}; + +void enable_cache(struct cache_map *map); +void sync_cache(void); +void cpu_report_exception(unsigned int exception_type); + +void jump_to_monitor(uintptr_t monitor_entry, uintptr_t next_addr); +void jump_to_loader_2nd(uintptr_t loader_2nd_entry); + +#endif /* __ASSEMBLY__ */ + +#endif /* __CPU_H__ */ diff --git a/fsbl/include/cpu/delay_timer.h b/fsbl/include/cpu/delay_timer.h new file mode 100644 index 000000000..2511ac414 --- /dev/null +++ b/fsbl/include/cpu/delay_timer.h @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __DELAY_TIMER_H__ +#define __DELAY_TIMER_H__ + +#include +#include + +void mdelay(uint32_t msec); +void udelay(uint32_t usec); +void timer_init(void); +uint32_t get_timer(uint32_t base); +uint32_t get_random_from_timer(uint32_t base); +uint32_t read_count_tick(void); +void trig_simulation_timer(uint32_t usec); + +static inline uint32_t read_time_ms(void) +{ + return DIV_ROUND_UP(read_count_tick(), 1000); +} + +#endif /* __DELAY_TIMER_H__ */ diff --git a/fsbl/include/cpu/riscv/arch_helpers.h b/fsbl/include/cpu/riscv/arch_helpers.h new file mode 100644 index 000000000..bef26ab55 --- /dev/null +++ b/fsbl/include/cpu/riscv/arch_helpers.h @@ -0,0 +1,14 @@ +#ifndef __ARCH_HELPERS_H__ +#define __ARCH_HELPERS_H__ +//#include /* for additional register definitions */ +#include /* For __dead2 */ +#include +#include + +void flush_dcache_range(uintptr_t addr, size_t size); +void clean_dcache_range(uintptr_t addr, size_t size); +void inv_dcache_range(uintptr_t addr, size_t size); +void enable_dcache(void); +void disable_dcache(void); + +#endif /* __ARCH_HELPERS_H__ */ diff --git a/fsbl/include/cpu/riscv/asm_macros.S b/fsbl/include/cpu/riscv/asm_macros.S new file mode 100644 index 000000000..0d7e9689f --- /dev/null +++ b/fsbl/include/cpu/riscv/asm_macros.S @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +#ifndef __ASM_MACROS_S__ +#define __ASM_MACROS_S__ + +#include +#include + + .macro atf_state_set _regv, _rega, _val + li \_regv, \_val + li \_rega, ATF_STATE_REG + sw \_regv, (\_rega) + .endm + + .macro atf_err_set _regv, _rega, _val + li \_regv, \_val + li \_rega, ATF_ERR_REG + sw \_regv, (\_rega) + .endm + + .macro reg_write _regv, _rega, _addr, _val + li \_regv, \_val + li \_rega, \_addr + sw \_regv, (\_rega) + .endm + +#endif /* __ASM_MACROS_S__ */ diff --git a/fsbl/include/cpu/riscv/cpu_helper.h b/fsbl/include/cpu/riscv/cpu_helper.h new file mode 100644 index 000000000..e20ac1315 --- /dev/null +++ b/fsbl/include/cpu/riscv/cpu_helper.h @@ -0,0 +1,11 @@ +#ifndef __CPU_HELP_H__ +#define __CPU_HELP_H__ + +#ifndef __ASSEMBLY__ + +#include +#include + +#endif /* __ASSEMBLY__ */ + +#endif /* __CPU_HELP_H__ */ diff --git a/fsbl/include/debug.h b/fsbl/include/debug.h new file mode 100644 index 000000000..b178363b1 --- /dev/null +++ b/fsbl/include/debug.h @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __DEBUG_H__ +#define __DEBUG_H__ + +/* The log output macros print output to the console. These macros produce + * compiled log output only if the LOG_LEVEL defined in the makefile (or the + * make command line) is greater or equal than the level required for that + * type of log output. + * The format expected is the same as for printf(). For example: + * INFO("Info %s.\n", "message") -> INFO: Info message. + * WARN("Warning %s.\n", "message") -> WARNING: Warning message. + */ + +#define LOG_LEVEL_ERROR 0 +#define LOG_LEVEL_WARNING 1 +#define LOG_LEVEL_NOTICE 2 +#define LOG_LEVEL_INFO 3 +#define LOG_LEVEL_VERBOSE 4 + +#ifndef __ASSEMBLY__ +#include + +int putchar_l(int c, int level); + +#define MSG_SOH "\001" +#define MSG_SOH_ASCII ('\001') + +#define MSG_ERROR MSG_SOH "0" +#define MSG_WARN MSG_SOH "1" +#define MSG_NOTICE MSG_SOH "2" +#define MSG_INFO MSG_SOH "3" +#define MSG_VERBOSE MSG_SOH "4" + +#define ERROR(...) tf_printf(MSG_ERROR " E:" __VA_ARGS__) +#define WARN(...) tf_printf(MSG_WARN " W:" __VA_ARGS__) +#define NOTICE(...) tf_printf(MSG_NOTICE __VA_ARGS__) +#define INFO(...) tf_printf(MSG_INFO " I:" __VA_ARGS__) + +#if LOG_LEVEL >= LOG_LEVEL_VERBOSE +#define VERBOSE(...) tf_printf(MSG_VERBOSE __VA_ARGS__) +#else +#define VERBOSE(...) +#endif + +void __dead2 do_panic(void); +#define panic() do_panic() + +/* Function called when stack protection check code detects a corrupted stack */ +void __dead2 __stack_chk_fail(void); + +void tf_printf(const char *fmt, ...) __printflike(1, 2); +int tf_snprintf(char *s, size_t n, const char *fmt, ...) __printflike(3, 4); +void tf_print_buffer(const void *buf, size_t size, const char *name); + +#endif /* __ASSEMBLY__ */ + +#define ATF_ERR_NONE 0xBEFFFFFF +#define ATF_ERR_BL1_RETURN 0xBE000001 + +#define ATF_ERR_PLAT_PANIC 0xBE00E002 +#define ATF_ERR_PLAT_SYSTEM_RESET 0xBE00E003 +#define ATF_ERR_PLAT_SYSTEM_PWR_CYC 0xBE00E004 + +#define ATF_STATE_RESET_WAIT 0xBE003001 +#define ATF_STATE_RESET_RTC_WAIT 0xBE003002 + +#define ATF_STATE_BL1_ENTRY_POINT 0xB1000000 +#define ATF_STATE_BL1_EARLY_PLATFORM_SETUP 0xB1001000 + +#define ATF_STATE_BL1_APPLY_EFUSE_PATCH 0xB1001020 +#define ATF_STATE_BL1_APPLY_SW_CONF 0xB1001022 + +#define ATF_STATE_BL1_BOOT_SPEED_1 0xB1002001 +#define ATF_STATE_BL1_BOOT_SPEED_2 0xB1002002 + +#define ATF_STATE_BL1_MAIN 0xB100F000 + +#define ATF_STATE_BL1_DEVICE_SETUP 0xB100F001 +#define ATF_STATE_BL1_SD_POW_EN 0xB100F002 +#define ATF_STATE_BL1_FLASH_INIT 0xB100F005 +#define ATF_STATE_BL1_FLASH_INIT_END 0xB100F006 +#define ATF_STATE_BL1_DEVICE_SETUP_END 0xB100F00F + +#define ATF_STATE_BL1_SPINOR_INFO 0xB100F100 + +#define ATF_STATE_BL1_LOAD_PARAM 0xB100F801 +#define ATF_STATE_BL1_LOAD_PARAM_END 0xB100F811 +#define ATF_STATE_BL1_LOAD_BLCP 0xB100F802 +#define ATF_STATE_BL1_LOAD_BLCP_PARAM 0xB100F803 +#define ATF_STATE_BL1_LOAD_BL2 0xB100F804 + +#define ATF_STATE_BL1_JUMP_BL2 0xB100FE00 + +#define ATF_STATE_BL2_ENTRY_POINT 0xB2000000 +#define ATF_STATE_BL2_MAIN 0xB200F000 + +#define ATF_STATE_WAIT_DEBUG 0xC0001002 +#define ATF_STATE_ENTER_DEBUG 0xC0001003 + +#define ATF_STATE_BOOTSRC_SPI_NAND 0xB3000001 +#define ATF_STATE_BOOTSRC_SPI_NOR 0xB3000002 +#define ATF_STATE_BOOTSRC_EMMC 0xB3000003 +#define ATF_STATE_BOOTSRC_SD 0xB3000004 +#define ATF_STATE_BOOTSRC_USB 0xB3000005 +#define ATF_STATE_BOOTSRC_UART 0xB3000006 + +#define ATF_STATE_USB_ENUM_DONE 0xC0001004 +#define ATF_STATE_USB_SEND_VID_DONE 0xC0001005 +#define ATF_STATE_FIP_HEADER_IS_VALID 0xC0002001 + +#define ATF_STATE_USB_WAIT_ENUM 0xC0003101 +#define ATF_STATE_USB_PHY_SETTING_DONE 0xC0003001 +#define ATF_STATE_USB_HW_INIT_DONE 0xC0003002 +#define ATF_STATE_USB_DL_BY_CONF_DONE 0xC0003003 +#define ATF_STATE_USB_ENUM_FAIL 0xC0003004 +#define ATF_STATE_USB_DATA_TIMEOUT 0xC0003005 +#define ATF_STATE_USB_TRANSFER_DONE 0xC0003006 +#define ATF_STATE_USB_ERR 0xC0003007 +#define ATF_STATE_USB_SECOND_STAGE 0xC0003008 +#define ATF_STATE_USB_SET_HSPERI_CLK_DONE 0xC0003009 +#define ATF_STATE_USB_UNSET_HSPERI_CLK_DONE 0xC000300A + +#define ATF_STATE_UART_WAIT_MAGIC 0xC0004004 + +#define ATF_STATE_SPINAND_INIT 0xD0001000 +#define ATF_STATE_SPINAND_SCAN_VECTOR 0xD0001002 +#define ATF_STATE_SPINAND_SCAN_FIP_BLKS 0xD0001003 +#define ATF_STATE_SPINAND_READ_FIP_BIN 0xD0001004 + +#define CP_STATE_ENTRY_POINT 0xB8000000 +#define CP_STATE_INIT_DONE 0xB800000F + +#endif /* __DEBUG_H__ */ diff --git a/fsbl/include/mmio.h b/fsbl/include/mmio.h new file mode 100644 index 000000000..dbe90287e --- /dev/null +++ b/fsbl/include/mmio.h @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __MMIO_H__ +#define __MMIO_H__ + +#include + +static inline void mmio_write_8(uintptr_t addr, uint8_t value) +{ + *(volatile uint8_t*)addr = value; +} + +static inline uint8_t mmio_read_8(uintptr_t addr) +{ + return *(volatile uint8_t*)addr; +} + +static inline void mmio_write_16(uintptr_t addr, uint16_t value) +{ + *(volatile uint16_t*)addr = value; +} + +static inline uint16_t mmio_read_16(uintptr_t addr) +{ + return *(volatile uint16_t*)addr; +} + +static inline void mmio_write_32(uintptr_t addr, uint32_t value) +{ + *(volatile uint32_t*)addr = value; +} + +static inline uint32_t mmio_read_32(uintptr_t addr) +{ + return *(volatile uint32_t*)addr; +} + +static inline void mmio_write_64(uintptr_t addr, uint64_t value) +{ + *(volatile uint64_t*)addr = value; +} + +static inline uint64_t mmio_read_64(uintptr_t addr) +{ + return *(volatile uint64_t*)addr; +} + +static inline void mmio_clrbits_16(uintptr_t addr, uint16_t clear) +{ + mmio_write_16(addr, mmio_read_16(addr) & ~clear); +} + +static inline void mmio_setbits_16(uintptr_t addr, uint16_t set) +{ + mmio_write_16(addr, mmio_read_16(addr) | set); +} + +static inline void mmio_clrbits_32(uintptr_t addr, uint32_t clear) +{ + mmio_write_32(addr, mmio_read_32(addr) & ~clear); +} + +static inline void mmio_setbits_32(uintptr_t addr, uint32_t set) +{ + mmio_write_32(addr, mmio_read_32(addr) | set); +} + +static inline void mmio_clrsetbits_32(uintptr_t addr, + uint32_t clear, + uint32_t set) +{ + mmio_write_32(addr, (mmio_read_32(addr) & ~clear) | set); +} + + +#endif /* __MMIO_H__ */ diff --git a/fsbl/include/stdlib/assert.h b/fsbl/include/stdlib/assert.h new file mode 100644 index 000000000..744aa0cba --- /dev/null +++ b/fsbl/include/stdlib/assert.h @@ -0,0 +1,53 @@ +/*- + * Copyright (c) 1992, 1993 + * The Regents of the University of California. All rights reserved. + * (c) UNIX System Laboratories, Inc. + * All or some portions of this file are derived from material licensed + * to the University of California by American Telephone and Telegraph + * Co. or Unix System Laboratories, Inc. and are reproduced herein with + * the permission of UNIX System Laboratories, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)assert.h 8.2 (Berkeley) 1/21/94 + * $FreeBSD$ + */ +/* + * Portions copyright (c) 2017, ARM Limited and Contributors. + * All rights reserved. + */ + +#ifndef _ASSERT_H_ +#define _ASSERT_H_ + +#include +#include +#include + +__BEGIN_DECLS + +__END_DECLS + +#endif /* !_ASSERT_H_ */ diff --git a/fsbl/include/stdlib/inttypes.h b/fsbl/include/stdlib/inttypes.h new file mode 100644 index 000000000..269f3e7c9 --- /dev/null +++ b/fsbl/include/stdlib/inttypes.h @@ -0,0 +1,52 @@ +/*- + * Copyright (c) 2001 Mike Barcroft + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _INTTYPES_H_ +#define _INTTYPES_H_ + +#include +#include + +typedef struct { + intmax_t quot; /* Quotient. */ + intmax_t rem; /* Remainder. */ +} imaxdiv_t; + +__BEGIN_DECLS +#ifdef _XLOCALE_H_ +#include +#endif +intmax_t imaxabs(intmax_t) __pure2; +imaxdiv_t imaxdiv(intmax_t, intmax_t) __pure2; + +intmax_t strtoimax(const char *__restrict, char **__restrict, int); +uintmax_t strtoumax(const char *__restrict, char **__restrict, int); + +__END_DECLS + +#endif /* !_INTTYPES_H_ */ diff --git a/fsbl/include/stdlib/machine/_inttypes.h b/fsbl/include/stdlib/machine/_inttypes.h new file mode 100644 index 000000000..7dfe9c3d5 --- /dev/null +++ b/fsbl/include/stdlib/machine/_inttypes.h @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _MACHINE_INTTYPES_H_ +#define _MACHINE_INTTYPES_H_ + +/* + * Trusted Firmware does not depend on any definitions in this file. Content + * will be added as needed. + */ + +#endif /* !_MACHINE_INTTYPES_H_ */ diff --git a/fsbl/include/stdlib/machine/_limits.h b/fsbl/include/stdlib/machine/_limits.h new file mode 100644 index 000000000..3bdc66f14 --- /dev/null +++ b/fsbl/include/stdlib/machine/_limits.h @@ -0,0 +1,105 @@ +/*- + * Copyright (c) 1988, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)limits.h 8.3 (Berkeley) 1/4/94 + * $FreeBSD$ + */ + +/* + * Portions copyright (c) 2017, ARM Limited and Contributors. + * All rights reserved. + */ + +#ifndef _MACHINE__LIMITS_H_ +#define _MACHINE__LIMITS_H_ + +/* + * According to ANSI (section 2.2.4.2), the values below must be usable by + * #if preprocessing directives. Additionally, the expression must have the + * same type as would an expression that is an object of the corresponding + * type converted according to the integral promotions. The subtraction for + * INT_MIN, etc., is so the value is not unsigned; e.g., 0x80000000 is an + * unsigned int for 32-bit two's complement ANSI compilers (section 3.1.3.2). + */ + +#define __CHAR_BIT 8 /* number of bits in a char */ + +#define __SCHAR_MAX 0x7f /* max value for a signed char */ +#define __SCHAR_MIN (-0x7f-1) /* min value for a signed char */ + +#define __UCHAR_MAX 0xff /* max value for an unsigned char */ + +#define __USHRT_MAX 0xffff /* max value for an unsigned short */ +#define __SHRT_MAX 0x7fff /* max value for a short */ +#define __SHRT_MIN (-0x7fff-1) /* min value for a short */ + +#define __UINT_MAX 0xffffffffU /* max value for an unsigned int */ +#define __INT_MAX 0x7fffffff /* max value for an int */ +#define __INT_MIN (-0x7fffffff-1) /* min value for an int */ + +#ifdef AARCH32 +#define __ULONG_MAX 0xffffffffUL /* max for an unsigned long */ +#define __LONG_MAX 0x7fffffffL /* max for a long */ +#define __LONG_MIN (-0x7fffffffL-1) /* min for a long */ +#else +#define __ULONG_MAX 0xffffffffffffffffUL /* max for an unsigned long */ +#define __LONG_MAX 0x7fffffffffffffffL /* max for a long */ +#define __LONG_MIN (-0x7fffffffffffffffL-1) /* min for a long */ +#endif + +#define __ULLONG_MAX 0xffffffffffffffffULL /* max for an unsigned long long */ +#define __LLONG_MAX 0x7fffffffffffffffLL /* max for a long long */ +#define __LLONG_MIN (-0x7fffffffffffffffLL-1) /* min for a long long */ + +#define __SSIZE_MAX __LONG_MAX /* max value for a ssize_t */ + +#define __SIZE_T_MAX __ULONG_MAX /* max value for a size_t */ + +#define __OFF_MAX __LONG_MAX /* max value for an off_t */ +#define __OFF_MIN __LONG_MIN /* min value for an off_t */ + +#ifdef AARCH32 +/* Quads and long longs are the same size. Ensure they stay in sync. */ +#define __UQUAD_MAX (__ULLONG_MAX) /* max value for a uquad_t */ +#define __QUAD_MAX (__LLONG_MAX) /* max value for a quad_t */ +#define __QUAD_MIN (__LLONG_MIN) /* min value for a quad_t */ +#else +/* Quads and longs are the same size. Ensure they stay in sync. */ +#define __UQUAD_MAX (__ULONG_MAX) /* max value for a uquad_t */ +#define __QUAD_MAX (__LONG_MAX) /* max value for a quad_t */ +#define __QUAD_MIN (__LONG_MIN) /* min value for a quad_t */ +#endif + +#ifdef AARCH32 +#define __LONG_BIT 32 +#else +#define __LONG_BIT 64 +#endif +#define __WORD_BIT 32 + +/* Minimum signal stack size. */ +#define __MINSIGSTKSZ (1024 * 4) + +#endif /* !_MACHINE__LIMITS_H_ */ diff --git a/fsbl/include/stdlib/machine/_stdint.h b/fsbl/include/stdlib/machine/_stdint.h new file mode 100644 index 000000000..ee5372d54 --- /dev/null +++ b/fsbl/include/stdlib/machine/_stdint.h @@ -0,0 +1,184 @@ +/*- + * Copyright (c) 2001, 2002 Mike Barcroft + * Copyright (c) 2001 The NetBSD Foundation, Inc. + * All rights reserved. + * + * This code is derived from software contributed to The NetBSD Foundation + * by Klaus Klein. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Portions copyright (c) 2016-2017, ARM Limited and Contributors. + * All rights reserved. + */ + +#ifndef _MACHINE__STDINT_H_ +#define _MACHINE__STDINT_H_ + +#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) + +#define INT8_C(c) (c) +#define INT16_C(c) (c) +#define INT32_C(c) (c) +#define INT64_C(c) (c ## LL) + +#define UINT8_C(c) (c) +#define UINT16_C(c) (c) +#define UINT32_C(c) (c ## U) +#define UINT64_C(c) (c ## ULL) + +#define INTMAX_C(c) INT64_C(c) +#define UINTMAX_C(c) UINT64_C(c) + +#endif /* !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) */ + +#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) + +/* + * ISO/IEC 9899:1999 + * 7.18.2.1 Limits of exact-width integer types + */ +/* Minimum values of exact-width signed integer types. */ +#define INT8_MIN (-0x7f-1) +#define INT16_MIN (-0x7fff-1) +#define INT32_MIN (-0x7fffffff-1) +#define INT64_MIN (-0x7fffffffffffffffLL-1) + +/* Maximum values of exact-width signed integer types. */ +#define INT8_MAX 0x7f +#define INT16_MAX 0x7fff +#define INT32_MAX 0x7fffffff +#define INT64_MAX 0x7fffffffffffffffLL + +/* Maximum values of exact-width unsigned integer types. */ +#define UINT8_MAX 0xff +#define UINT16_MAX 0xffff +#define UINT32_MAX 0xffffffffU +#define UINT64_MAX 0xffffffffffffffffULL + +/* + * ISO/IEC 9899:1999 + * 7.18.2.2 Limits of minimum-width integer types + */ +/* Minimum values of minimum-width signed integer types. */ +#define INT_LEAST8_MIN INT8_MIN +#define INT_LEAST16_MIN INT16_MIN +#define INT_LEAST32_MIN INT32_MIN +#define INT_LEAST64_MIN INT64_MIN + +/* Maximum values of minimum-width signed integer types. */ +#define INT_LEAST8_MAX INT8_MAX +#define INT_LEAST16_MAX INT16_MAX +#define INT_LEAST32_MAX INT32_MAX +#define INT_LEAST64_MAX INT64_MAX + +/* Maximum values of minimum-width unsigned integer types. */ +#define UINT_LEAST8_MAX UINT8_MAX +#define UINT_LEAST16_MAX UINT16_MAX +#define UINT_LEAST32_MAX UINT32_MAX +#define UINT_LEAST64_MAX UINT64_MAX + +/* + * ISO/IEC 9899:1999 + * 7.18.2.3 Limits of fastest minimum-width integer types + */ +/* Minimum values of fastest minimum-width signed integer types. */ +#define INT_FAST8_MIN INT32_MIN +#define INT_FAST16_MIN INT32_MIN +#define INT_FAST32_MIN INT32_MIN +#define INT_FAST64_MIN INT64_MIN + +/* Maximum values of fastest minimum-width signed integer types. */ +#define INT_FAST8_MAX INT32_MAX +#define INT_FAST16_MAX INT32_MAX +#define INT_FAST32_MAX INT32_MAX +#define INT_FAST64_MAX INT64_MAX + +/* Maximum values of fastest minimum-width unsigned integer types. */ +#define UINT_FAST8_MAX UINT32_MAX +#define UINT_FAST16_MAX UINT32_MAX +#define UINT_FAST32_MAX UINT32_MAX +#define UINT_FAST64_MAX UINT64_MAX + +/* + * ISO/IEC 9899:1999 + * 7.18.2.4 Limits of integer types capable of holding object pointers + */ +#ifdef AARCH32 +#define INTPTR_MIN INT32_MIN +#define INTPTR_MAX INT32_MAX +#define UINTPTR_MAX UINT32_MAX +#else +#define INTPTR_MIN INT64_MIN +#define INTPTR_MAX INT64_MAX +#define UINTPTR_MAX UINT64_MAX +#endif + +/* + * ISO/IEC 9899:1999 + * 7.18.2.5 Limits of greatest-width integer types + */ +#define INTMAX_MIN INT64_MIN +#define INTMAX_MAX INT64_MAX +#define UINTMAX_MAX UINT64_MAX + +/* + * ISO/IEC 9899:1999 + * 7.18.3 Limits of other integer types + */ +/* Limits of ptrdiff_t. */ +#ifdef AARCH32 +#define PTRDIFF_MIN INT32_MIN +#define PTRDIFF_MAX INT32_MAX +#else +#define PTRDIFF_MIN INT64_MIN +#define PTRDIFF_MAX INT64_MAX +#endif + +/* Limits of sig_atomic_t. */ +#define SIG_ATOMIC_MIN INT32_MIN +#define SIG_ATOMIC_MAX INT32_MAX + +/* Limit of size_t. */ +#ifdef AARCH32 +#define SIZE_MAX UINT32_MAX +#else +#define SIZE_MAX UINT64_MAX +#endif + +#ifndef WCHAR_MIN /* Also possibly defined in */ +/* Limits of wchar_t. */ +#define WCHAR_MIN INT32_MIN +#define WCHAR_MAX INT32_MAX +#endif + +/* Limits of wint_t. */ +#define WINT_MIN INT32_MIN +#define WINT_MAX INT32_MAX + +#endif /* !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) */ + +#endif /* !_MACHINE__STDINT_H_ */ diff --git a/fsbl/include/stdlib/machine/_types.h b/fsbl/include/stdlib/machine/_types.h new file mode 100644 index 000000000..803979b95 --- /dev/null +++ b/fsbl/include/stdlib/machine/_types.h @@ -0,0 +1,140 @@ +/*- + * Copyright (c) 2002 Mike Barcroft + * Copyright (c) 1990, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * From: @(#)ansi.h 8.2 (Berkeley) 1/4/94 + * From: @(#)types.h 8.3 (Berkeley) 1/5/94 + * $FreeBSD$ + */ +/* + * Portions copyright (c) 2016, ARM Limited and Contributors. + * All rights reserved. + */ + +#ifndef _MACHINE__TYPES_H_ +#define _MACHINE__TYPES_H_ + +#ifndef _SYS_CDEFS_H_ +#error this file needs sys/cdefs.h as a prerequisite +#endif + +/* + * Basic types upon which most other types are built. + */ +typedef __signed char __int8_t; +typedef unsigned char __uint8_t; +typedef short __int16_t; +typedef unsigned short __uint16_t; +typedef int __int32_t; +typedef unsigned int __uint32_t; + + +/* + * Standard type definitions which are different in AArch64 and AArch32 + */ +#ifdef AARCH32 +typedef long long __int64_t; +typedef unsigned long long __uint64_t; +typedef __int32_t __critical_t; +typedef __int32_t __intfptr_t; +typedef __int32_t __intptr_t; +typedef __int32_t __ptrdiff_t; /* ptr1 - ptr2 */ +typedef __int32_t __register_t; +typedef __int32_t __segsz_t; /* segment size (in pages) */ +typedef __uint32_t __size_t; /* sizeof() */ +typedef __int32_t __ssize_t; /* byte count or error */ +typedef __uint32_t __uintfptr_t; +typedef __uint32_t __uintptr_t; +typedef __uint32_t __u_register_t; +typedef __uint32_t __vm_offset_t; +typedef __uint32_t __vm_paddr_t; +typedef __uint32_t __vm_size_t; +#elif defined AARCH64 || defined __riscv +typedef long __int64_t; +typedef unsigned long __uint64_t; +typedef __int64_t __critical_t; +typedef __int64_t __intfptr_t; +typedef __int64_t __intptr_t; +typedef __int64_t __ptrdiff_t; /* ptr1 - ptr2 */ +typedef __int64_t __register_t; +typedef __int64_t __segsz_t; /* segment size (in pages) */ +typedef __uint64_t __size_t; /* sizeof() */ +typedef __int64_t __ssize_t; /* byte count or error */ +typedef __uint64_t __uintfptr_t; +typedef __uint64_t __uintptr_t; +typedef __uint64_t __u_register_t; +typedef __uint64_t __vm_offset_t; +typedef __uint64_t __vm_paddr_t; +typedef __uint64_t __vm_size_t; +#else +#error "Only AArch32 or AArch64 or Riscv64 supported" +#endif /* AARCH32 */ + +/* + * Standard type definitions. + */ +typedef __int32_t __clock_t; /* clock()... */ +typedef double __double_t; +typedef float __float_t; +typedef __int64_t __intmax_t; +typedef __int32_t __int_fast8_t; +typedef __int32_t __int_fast16_t; +typedef __int32_t __int_fast32_t; +typedef __int64_t __int_fast64_t; +typedef __int8_t __int_least8_t; +typedef __int16_t __int_least16_t; +typedef __int32_t __int_least32_t; +typedef __int64_t __int_least64_t; +typedef __int64_t __time_t; /* time()... */ +typedef __uint64_t __uintmax_t; +typedef __uint32_t __uint_fast8_t; +typedef __uint32_t __uint_fast16_t; +typedef __uint32_t __uint_fast32_t; +typedef __uint64_t __uint_fast64_t; +typedef __uint8_t __uint_least8_t; +typedef __uint16_t __uint_least16_t; +typedef __uint32_t __uint_least32_t; +typedef __uint64_t __uint_least64_t; +typedef __int64_t __vm_ooffset_t; +typedef __uint64_t __vm_pindex_t; + +/* + * Unusual type definitions. + */ +#ifdef __GNUCLIKE_BUILTIN_VARARGS +typedef __builtin_va_list __va_list; /* internally known to gcc */ +#else +typedef char * __va_list; +#endif /* __GNUCLIKE_BUILTIN_VARARGS */ +#if defined(__GNUCLIKE_BUILTIN_VAALIST) && !defined(__GNUC_VA_LIST) \ + && !defined(__NO_GNUC_VA_LIST) +#define __GNUC_VA_LIST +typedef __va_list __gnuc_va_list; /* compatibility w/GNU headers*/ +#endif + +#endif /* !_MACHINE__TYPES_H_ */ diff --git a/fsbl/include/stdlib/machine/endian.h b/fsbl/include/stdlib/machine/endian.h new file mode 100644 index 000000000..57e33b172 --- /dev/null +++ b/fsbl/include/stdlib/machine/endian.h @@ -0,0 +1,168 @@ +/*- + * Copyright (c) 2001 David E. O'Brien + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)endian.h 8.1 (Berkeley) 6/10/93 + * $NetBSD: endian.h,v 1.7 1999/08/21 05:53:51 simonb Exp $ + * $FreeBSD$ + */ +/* + * Portions copyright (c) 2017, ARM Limited and Contributors. + * All rights reserved. + */ + +#ifndef _MACHINE_ENDIAN_H_ +#define _MACHINE_ENDIAN_H_ + +#include + +/* + * Definitions for byte order, according to byte significance from low + * address to high. + */ +#define _LITTLE_ENDIAN 1234 /* LSB first: i386, vax */ +#define _BIG_ENDIAN 4321 /* MSB first: 68000, ibm, net */ +#define _PDP_ENDIAN 3412 /* LSB first in word, MSW first in long */ + +#define _BYTE_ORDER _LITTLE_ENDIAN + +#if __BSD_VISIBLE +#define LITTLE_ENDIAN _LITTLE_ENDIAN +#define BIG_ENDIAN _BIG_ENDIAN +#define PDP_ENDIAN _PDP_ENDIAN +#define BYTE_ORDER _BYTE_ORDER +#endif + +#define _QUAD_HIGHWORD 1 +#define _QUAD_LOWWORD 0 +#define __ntohl(x) (__bswap32(x)) +#define __ntohs(x) (__bswap16(x)) +#define __htonl(x) (__bswap32(x)) +#define __htons(x) (__bswap16(x)) + +#ifdef AARCH32 +static __inline __uint64_t +__bswap64(__uint64_t _x) +{ + + return ((_x >> 56) | ((_x >> 40) & 0xff00) | ((_x >> 24) & 0xff0000) | + ((_x >> 8) & 0xff000000) | ((_x << 8) & ((__uint64_t)0xff << 32)) | + ((_x << 24) & ((__uint64_t)0xff << 40)) | + ((_x << 40) & ((__uint64_t)0xff << 48)) | ((_x << 56))); +} + +static __inline __uint32_t +__bswap32_var(__uint32_t v) +{ + __uint32_t t1; + + __asm __volatile("eor %1, %0, %0, ror #16\n" + "bic %1, %1, #0x00ff0000\n" + "mov %0, %0, ror #8\n" + "eor %0, %0, %1, lsr #8\n" + : "+r" (v), "=r" (t1)); + + return (v); +} + +static __inline __uint16_t +__bswap16_var(__uint16_t v) +{ + __uint32_t ret = v & 0xffff; + + __asm __volatile( + "mov %0, %0, ror #8\n" + "orr %0, %0, %0, lsr #16\n" + "bic %0, %0, %0, lsl #16" + : "+r" (ret)); + + return ((__uint16_t)ret); +} +#elif defined AARCH64 +static __inline __uint64_t +__bswap64(__uint64_t x) +{ + __uint64_t ret; + + __asm __volatile("rev %0, %1\n" + : "=&r" (ret), "+r" (x)); + + return (ret); +} + +static __inline __uint32_t +__bswap32_var(__uint32_t v) +{ + __uint32_t ret; + + __asm __volatile("rev32 %x0, %x1\n" + : "=&r" (ret), "+r" (v)); + + return (ret); +} + +static __inline __uint16_t +__bswap16_var(__uint16_t v) +{ + __uint32_t ret; + + __asm __volatile("rev16 %w0, %w1\n" + : "=&r" (ret), "+r" (v)); + + return ((__uint16_t)ret); +} +#else +#error "Only AArch32 or AArch64 supported" +#endif /* AARCH32 */ + +#ifdef __OPTIMIZE__ + +#define __bswap32_constant(x) \ + ((((x) & 0xff000000U) >> 24) | \ + (((x) & 0x00ff0000U) >> 8) | \ + (((x) & 0x0000ff00U) << 8) | \ + (((x) & 0x000000ffU) << 24)) + +#define __bswap16_constant(x) \ + ((((x) & 0xff00) >> 8) | \ + (((x) & 0x00ff) << 8)) + +#define __bswap16(x) \ + ((__uint16_t)(__builtin_constant_p(x) ? \ + __bswap16_constant(x) : \ + __bswap16_var(x))) + +#define __bswap32(x) \ + ((__uint32_t)(__builtin_constant_p(x) ? \ + __bswap32_constant(x) : \ + __bswap32_var(x))) + +#else +#define __bswap16(x) __bswap16_var(x) +#define __bswap32(x) __bswap32_var(x) + +#endif /* __OPTIMIZE__ */ +#endif /* !_MACHINE_ENDIAN_H_ */ diff --git a/fsbl/include/stdlib/stdbool.h b/fsbl/include/stdlib/stdbool.h new file mode 100644 index 000000000..48070c18d --- /dev/null +++ b/fsbl/include/stdlib/stdbool.h @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2000 Jeroen Ruigrok van der Werven + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef __bool_true_false_are_defined +#define __bool_true_false_are_defined 1 + +#ifndef __cplusplus + +#define false 0 +#define true 1 + +#define bool _Bool +#if __STDC_VERSION__ < 199901L && __GNUC__ < 3 && !defined(__INTEL_COMPILER) +typedef int _Bool; +#endif + +#endif /* !__cplusplus */ +#endif /* __bool_true_false_are_defined */ diff --git a/fsbl/include/stdlib/stddef.h b/fsbl/include/stdlib/stddef.h new file mode 100644 index 000000000..ea88214f7 --- /dev/null +++ b/fsbl/include/stdlib/stddef.h @@ -0,0 +1,64 @@ +/*- + * Copyright (c) 1990, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)stddef.h 8.1 (Berkeley) 6/2/93 + * + * $FreeBSD$ + */ + +#ifndef _STDDEF_H_ +#define _STDDEF_H_ + +#include +#include +#include + +typedef __ptrdiff_t ptrdiff_t; + +#if __BSD_VISIBLE +#ifndef _RUNE_T_DECLARED +typedef __rune_t rune_t; +#define _RUNE_T_DECLARED +#endif +#endif + +#ifndef _SIZE_T_DECLARED +typedef __size_t size_t; +#define _SIZE_T_DECLARED +#endif + +#ifndef __cplusplus +#ifndef _WCHAR_T_DECLARED +typedef __wchar_t wchar_t; +#define _WCHAR_T_DECLARED +#endif +#endif + +#define offsetof(type, member) __offsetof(type, member) + +#endif /* _STDDEF_H_ */ diff --git a/fsbl/include/stdlib/stdio.h b/fsbl/include/stdlib/stdio.h new file mode 100644 index 000000000..57e5c7fa4 --- /dev/null +++ b/fsbl/include/stdlib/stdio.h @@ -0,0 +1,78 @@ +/*- + * Copyright (c) 1990, 1993 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Chris Torek. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)stdio.h 8.5 (Berkeley) 4/29/95 + * $FreeBSD$ + */ + +/* + * Portions copyright (c) 2013-2014, ARM Limited and Contributors. + * All rights reserved. + */ + + +#ifndef _STDIO_H_ +#define _STDIO_H_ + +#include +#include +#include + +#ifndef _SIZE_T_DECLARED +typedef __size_t size_t; +#define _SIZE_T_DECLARED +#endif + +#ifndef _SSIZE_T_DECLARED +#define _SSIZE_T_DECLARED +typedef __ssize_t ssize_t; +#endif + +#define EOF (-1) + +int printf(const char * __restrict, ...) __printflike(1, 2); +int putchar(int); +int puts(const char *); +int sprintf(char * __restrict, const char * __restrict, ...) + __printflike(2, 3); +int vsprintf(char * __restrict, const char * __restrict, + __va_list) __printflike(2, 0); + +int sscanf(const char *__restrict, char const *__restrict, ...); + +#if __ISO_C_VISIBLE >= 1999 +int snprintf(char * __restrict, size_t, const char * __restrict, + ...) __printflike(3, 4); +int vsnprintf(char * __restrict, size_t, const char * __restrict, + __va_list) __printflike(3, 0); +#endif + +#endif /* !_STDIO_H_ */ diff --git a/fsbl/include/stdlib/stdlib.h b/fsbl/include/stdlib/stdlib.h new file mode 100644 index 000000000..b1ac1bf94 --- /dev/null +++ b/fsbl/include/stdlib/stdlib.h @@ -0,0 +1,313 @@ +/*- + * Copyright (c) 1990, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)stdlib.h 8.5 (Berkeley) 5/19/95 + * $FreeBSD$ + */ + +#ifndef _STDLIB_H_ +#define _STDLIB_H_ + +#include +#include +#include + +#if __BSD_VISIBLE +#ifndef _RUNE_T_DECLARED +typedef __rune_t rune_t; +#define _RUNE_T_DECLARED +#endif +#endif + +#ifndef _SIZE_T_DECLARED +typedef __size_t size_t; +#define _SIZE_T_DECLARED +#endif + +typedef struct { + int quot; /* quotient */ + int rem; /* remainder */ +} div_t; + +typedef struct { + long quot; + long rem; +} ldiv_t; + +#define EXIT_FAILURE 1 +#define EXIT_SUCCESS 0 + +#define RAND_MAX 0x7ffffffd + +__BEGIN_DECLS +#ifdef _XLOCALE_H_ +#include +#endif +extern int __mb_cur_max; +extern int ___mb_cur_max(void); +#define MB_CUR_MAX (___mb_cur_max()) + +_Noreturn void abort(void); +int abs(int) __pure2; +int atexit(void (*)(void)); +double atof(const char *); +int atoi(const char *); +long atol(const char *); +void *bsearch(const void *, const void *, size_t, + size_t, int (*)(const void *, const void *)); +void *calloc(size_t, size_t) __malloc_like; +div_t div(int, int) __pure2; +_Noreturn void exit(int); +void free(void *); +char *getenv(const char *); +long labs(long) __pure2; +ldiv_t ldiv(long, long) __pure2; +void *malloc(size_t) __malloc_like; +int mblen(const char *, size_t); +void qsort(void *, size_t, size_t, + int (*)(const void *, const void *)); +int rand(void); +void *realloc(void *, size_t); +void srand(unsigned); +double strtod(const char *__restrict, char **__restrict); +float strtof(const char *__restrict, char **__restrict); +long strtol(const char *__restrict, char **__restrict, int); +long double + strtold(const char *__restrict, char **__restrict); +unsigned long + strtoul(const char *__restrict, char **__restrict, int); +int system(const char *); + +/* + * Functions added in C99 which we make conditionally available in the + * BSD^C89 namespace if the compiler supports `long long'. + * The #if test is more complicated than it ought to be because + * __BSD_VISIBLE implies __ISO_C_VISIBLE == 1999 *even if* `long long' + * is not supported in the compilation environment (which therefore means + * that it can't really be ISO C99). + * + * (The only other extension made by C99 in thie header is _Exit().) + */ +#if __ISO_C_VISIBLE >= 1999 +#ifdef __LONG_LONG_SUPPORTED +/* LONGLONG */ +typedef struct { + long long quot; + long long rem; +} lldiv_t; + +/* LONGLONG */ +long long + atoll(const char *); +/* LONGLONG */ +long long + llabs(long long) __pure2; +/* LONGLONG */ +lldiv_t lldiv(long long, long long) __pure2; +/* LONGLONG */ +long long + strtoll(const char *__restrict, char **__restrict, int); +/* LONGLONG */ +unsigned long long + strtoull(const char *__restrict, char **__restrict, int); +#endif /* __LONG_LONG_SUPPORTED */ + +_Noreturn void _Exit(int); +#endif /* __ISO_C_VISIBLE >= 1999 */ + +/* + * If we're in a mode greater than C99, expose C11 functions. + */ +#if __ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103L +void *aligned_alloc(size_t, size_t) __malloc_like; +int at_quick_exit(void (*)(void)); +_Noreturn void + quick_exit(int); +#endif /* __ISO_C_VISIBLE >= 2011 */ +/* + * Extensions made by POSIX relative to C. + */ +#if __POSIX_VISIBLE >= 199506 || __XSI_VISIBLE +char *realpath(const char *__restrict, char *__restrict); +#endif +#if __POSIX_VISIBLE >= 199506 +int rand_r(unsigned *); /* (TSF) */ +#endif +#if __POSIX_VISIBLE >= 200112 +int posix_memalign(void **, size_t, size_t); /* (ADV) */ +int setenv(const char *, const char *, int); +int unsetenv(const char *); +#endif + +#if __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE +int getsubopt(char **, char *const *, char **); +#ifndef _MKDTEMP_DECLARED +char *mkdtemp(char *); +#define _MKDTEMP_DECLARED +#endif +#ifndef _MKSTEMP_DECLARED +int mkstemp(char *); +#define _MKSTEMP_DECLARED +#endif +#endif /* __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE */ + +/* + * The only changes to the XSI namespace in revision 6 were the deletion + * of the ttyslot() and valloc() functions, which FreeBSD never declared + * in this header. For revision 7, ecvt(), fcvt(), and gcvt(), which + * FreeBSD also does not have, and mktemp(), are to be deleted. + */ +#if __XSI_VISIBLE +/* XXX XSI requires pollution from here. We'd rather not. */ +long a64l(const char *); +double drand48(void); +/* char *ecvt(double, int, int * __restrict, int * __restrict); */ +double erand48(unsigned short[3]); +/* char *fcvt(double, int, int * __restrict, int * __restrict); */ +/* char *gcvt(double, int, int * __restrict, int * __restrict); */ +int grantpt(int); +char *initstate(unsigned long /* XSI requires u_int */, char *, long); +long jrand48(unsigned short[3]); +char *l64a(long); +void lcong48(unsigned short[7]); +long lrand48(void); +#if !defined(_MKTEMP_DECLARED) && (__BSD_VISIBLE || __XSI_VISIBLE <= 600) +char *mktemp(char *); +#define _MKTEMP_DECLARED +#endif +long mrand48(void); +long nrand48(unsigned short[3]); +int posix_openpt(int); +char *ptsname(int); +int putenv(char *); +long random(void); +unsigned short + *seed48(unsigned short[3]); +#ifndef _SETKEY_DECLARED +int setkey(const char *); +#define _SETKEY_DECLARED +#endif +char *setstate(/* const */ char *); +void srand48(long); +void srandom(unsigned long); +int unlockpt(int); +#endif /* __XSI_VISIBLE */ + +#if __BSD_VISIBLE +extern const char *malloc_conf; +extern void (*malloc_message)(void *, const char *); + +/* + * The alloca() function can't be implemented in C, and on some + * platforms it can't be implemented at all as a callable function. + * The GNU C compiler provides a built-in alloca() which we can use; + * in all other cases, provide a prototype, mainly to pacify various + * incarnations of lint. On platforms where alloca() is not in libc, + * programs which use it will fail to link when compiled with non-GNU + * compilers. + */ +#if __GNUC__ >= 2 || defined(__INTEL_COMPILER) +#undef alloca /* some GNU bits try to get cute and define this on their own */ +#define alloca(sz) __builtin_alloca(sz) +#elif defined(lint) +void *alloca(size_t); +#endif + +void abort2(const char *, int, void **) __dead2; +__uint32_t + arc4random(void); +void arc4random_addrandom(unsigned char *, int); +void arc4random_buf(void *, size_t); +void arc4random_stir(void); +__uint32_t + arc4random_uniform(__uint32_t); +#ifdef __BLOCKS__ +int atexit_b(void (^)(void)); +void *bsearch_b(const void *, const void *, size_t, + size_t, int (^)(const void *, const void *)); +#endif +char *getbsize(int *, long *); + /* getcap(3) functions */ +char *cgetcap(char *, const char *, int); +int cgetclose(void); +int cgetent(char **, char **, const char *); +int cgetfirst(char **, char **); +int cgetmatch(const char *, const char *); +int cgetnext(char **, char **); +int cgetnum(char *, const char *, long *); +int cgetset(const char *); +int cgetstr(char *, const char *, char **); +int cgetustr(char *, const char *, char **); + +int daemon(int, int); +char *devname(__dev_t, __mode_t); +char *devname_r(__dev_t, __mode_t, char *, int); +char *fdevname(int); +char *fdevname_r(int, char *, int); +int getloadavg(double [], int); +const char * + getprogname(void); + +int heapsort(void *, size_t, size_t, int (*)(const void *, const void *)); +#ifdef __BLOCKS__ +int heapsort_b(void *, size_t, size_t, int (^)(const void *, const void *)); +void qsort_b(void *, size_t, size_t, + int (^)(const void *, const void *)); +#endif +int l64a_r(long, char *, int); +int mergesort(void *, size_t, size_t, int (*)(const void *, const void *)); +#ifdef __BLOCKS__ +int mergesort_b(void *, size_t, size_t, int (^)(const void *, const void *)); +#endif +int mkostemp(char *, int); +int mkostemps(char *, int, int); +void qsort_r(void *, size_t, size_t, void *, + int (*)(void *, const void *, const void *)); +int radixsort(const unsigned char **, int, const unsigned char *, + unsigned); +void *reallocf(void *, size_t); +int rpmatch(const char *); +void setprogname(const char *); +int sradixsort(const unsigned char **, int, const unsigned char *, + unsigned); +void sranddev(void); +void srandomdev(void); +long long + strtonum(const char *, long long, long long, const char **); + +/* Deprecated interfaces, to be removed in FreeBSD 6.0. */ +__int64_t + strtoq(const char *, char **, int); +__uint64_t + strtouq(const char *, char **, int); + +extern char *suboptarg; /* getsubopt(3) external variable */ +#endif /* __BSD_VISIBLE */ +__END_DECLS + +#endif /* !_STDLIB_H_ */ diff --git a/fsbl/include/stdlib/string.h b/fsbl/include/stdlib/string.h new file mode 100644 index 000000000..f4559356e --- /dev/null +++ b/fsbl/include/stdlib/string.h @@ -0,0 +1,70 @@ +/*- + * Copyright (c) 1990, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)string.h 8.1 (Berkeley) 6/2/93 + * $FreeBSD$ + */ + +/* + * Portions copyright (c) 2013-2017, ARM Limited and Contributors. + * All rights reserved. + */ + +#ifndef _STRING_H_ +#define _STRING_H_ + +#include +#include +#include + +#ifndef _SIZE_T_DECLARED +typedef __size_t size_t; +#define _SIZE_T_DECLARED +#endif + +__BEGIN_DECLS + +void *memchr(const void *, int, size_t) __pure; +int memcmp(const void *, const void *, size_t) __pure; +void *memcpy(void * __restrict, const void * __restrict, size_t); +void *memcpy16(void * __restrict, const void * __restrict, size_t); +void *memmove(void *, const void *, size_t); +void *memset(void *, int, size_t); +void *memset_gnuc(void *dest, int c, size_t n); + +char *strchr(const char *, int) __pure; +int strcmp(const char *, const char *) __pure; +size_t strlen(const char *) __pure; +int strncmp(const char *, const char *, size_t) __pure; +size_t strnlen(const char *, size_t) __pure; +int strcasecmp(const char *, const char *); +int timingsafe_bcmp(const void *, const void *, size_t); + +__END_DECLS + +#endif /* _STRING_H_ */ diff --git a/fsbl/include/stdlib/sys/_null.h b/fsbl/include/stdlib/sys/_null.h new file mode 100644 index 000000000..92706c6a0 --- /dev/null +++ b/fsbl/include/stdlib/sys/_null.h @@ -0,0 +1,47 @@ +/*- + * Copyright (c) 2003 Marcel Moolenaar + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef NULL + +#if !defined(__cplusplus) +#define NULL ((void *)0) +#else +#if __cplusplus >= 201103L +#define NULL nullptr +#elif defined(__GNUG__) && defined(__GNUC__) && __GNUC__ >= 4 +#define NULL __null +#else +#if defined(__LP64__) +#define NULL (0L) +#else +#define NULL 0 +#endif /* __LP64__ */ +#endif /* __GNUG__ */ +#endif /* !__cplusplus */ + +#endif diff --git a/fsbl/include/stdlib/sys/_stdint.h b/fsbl/include/stdlib/sys/_stdint.h new file mode 100644 index 000000000..d0f92493b --- /dev/null +++ b/fsbl/include/stdlib/sys/_stdint.h @@ -0,0 +1,82 @@ +/*- + * Copyright (c) 2011 David E. O'Brien + * Copyright (c) 2001 Mike Barcroft + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _SYS__STDINT_H_ +#define _SYS__STDINT_H_ + +#ifndef _INT8_T_DECLARED +typedef __int8_t int8_t; +#define _INT8_T_DECLARED +#endif + +#ifndef _INT16_T_DECLARED +typedef __int16_t int16_t; +#define _INT16_T_DECLARED +#endif + +#ifndef _INT32_T_DECLARED +typedef __int32_t int32_t; +#define _INT32_T_DECLARED +#endif + +#ifndef _INT64_T_DECLARED +typedef __int64_t int64_t; +#define _INT64_T_DECLARED +#endif + +#ifndef _UINT8_T_DECLARED +typedef __uint8_t uint8_t; +#define _UINT8_T_DECLARED +#endif + +#ifndef _UINT16_T_DECLARED +typedef __uint16_t uint16_t; +#define _UINT16_T_DECLARED +#endif + +#ifndef _UINT32_T_DECLARED +typedef __uint32_t uint32_t; +#define _UINT32_T_DECLARED +#endif + +#ifndef _UINT64_T_DECLARED +typedef __uint64_t uint64_t; +#define _UINT64_T_DECLARED +#endif + +#ifndef _INTPTR_T_DECLARED +typedef __intptr_t intptr_t; +#define _INTPTR_T_DECLARED +#endif +#ifndef _UINTPTR_T_DECLARED +typedef __uintptr_t uintptr_t; +#define _UINTPTR_T_DECLARED +#endif + +#endif /* !_SYS__STDINT_H_ */ diff --git a/fsbl/include/stdlib/sys/_timespec.h b/fsbl/include/stdlib/sys/_timespec.h new file mode 100644 index 000000000..d51559c2a --- /dev/null +++ b/fsbl/include/stdlib/sys/_timespec.h @@ -0,0 +1,49 @@ +/*- + * Copyright (c) 1982, 1986, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)time.h 8.5 (Berkeley) 5/4/95 + * from: FreeBSD: src/sys/sys/time.h,v 1.43 2000/03/20 14:09:05 phk Exp + * $FreeBSD$ + */ + +#ifndef _SYS__TIMESPEC_H_ +#define _SYS__TIMESPEC_H_ + +#include + +#ifndef _TIME_T_DECLARED +typedef __time_t time_t; +#define _TIME_T_DECLARED +#endif + +struct timespec { + time_t tv_sec; /* seconds */ + long tv_nsec; /* and nanoseconds */ +}; + +#endif /* !_SYS__TIMESPEC_H_ */ diff --git a/fsbl/include/stdlib/sys/_types.h b/fsbl/include/stdlib/sys/_types.h new file mode 100644 index 000000000..c59afd31c --- /dev/null +++ b/fsbl/include/stdlib/sys/_types.h @@ -0,0 +1,106 @@ +/*- + * Copyright (c) 2002 Mike Barcroft + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _SYS__TYPES_H_ +#define _SYS__TYPES_H_ + +#include +#include + +/* + * Standard type definitions. + */ +typedef __uint32_t __blksize_t; /* file block size */ +typedef __int64_t __blkcnt_t; /* file block count */ +typedef __int32_t __clockid_t; /* clock_gettime()... */ +typedef __uint64_t __cap_rights_t; /* capability rights */ +typedef __uint32_t __fflags_t; /* file flags */ +typedef __uint64_t __fsblkcnt_t; +typedef __uint64_t __fsfilcnt_t; +typedef __uint32_t __gid_t; +typedef __int64_t __id_t; /* can hold a gid_t, pid_t, or uid_t */ +typedef __uint32_t __ino_t; /* inode number */ +typedef long __key_t; /* IPC key (for Sys V IPC) */ +typedef __int32_t __lwpid_t; /* Thread ID (a.k.a. LWP) */ +typedef __uint16_t __mode_t; /* permissions */ +typedef int __accmode_t; /* access permissions */ +typedef int __nl_item; +typedef __uint16_t __nlink_t; /* link count */ +typedef __int64_t __off_t; /* file offset */ +typedef __int32_t __pid_t; /* process [group] */ +typedef __int64_t __rlim_t; /* resource limit - intentionally */ + /* signed, because of legacy code */ + /* that uses -1 for RLIM_INFINITY */ +typedef __uint8_t __sa_family_t; +typedef __uint32_t __socklen_t; +typedef long __suseconds_t; /* microseconds (signed) */ +typedef struct __timer *__timer_t; /* timer_gettime()... */ +typedef struct __mq *__mqd_t; /* mq_open()... */ +typedef __uint32_t __uid_t; +typedef unsigned int __useconds_t; /* microseconds (unsigned) */ +typedef int __cpuwhich_t; /* which parameter for cpuset. */ +typedef int __cpulevel_t; /* level parameter for cpuset. */ +typedef int __cpusetid_t; /* cpuset identifier. */ + +/* + * Unusual type definitions. + */ +/* + * rune_t is declared to be an ``int'' instead of the more natural + * ``unsigned long'' or ``long''. Two things are happening here. It is not + * unsigned so that EOF (-1) can be naturally assigned to it and used. Also, + * it looks like 10646 will be a 31 bit standard. This means that if your + * ints cannot hold 32 bits, you will be in trouble. The reason an int was + * chosen over a long is that the is*() and to*() routines take ints (says + * ANSI C), but they use __ct_rune_t instead of int. + * + * NOTE: rune_t is not covered by ANSI nor other standards, and should not + * be instantiated outside of lib/libc/locale. Use wchar_t. wchar_t and + * rune_t must be the same type. Also, wint_t must be no narrower than + * wchar_t, and should be able to hold all members of the largest + * character set plus one extra value (WEOF), and must be at least 16 bits. + */ +typedef int __ct_rune_t; /* arg type for ctype funcs */ +typedef __ct_rune_t __rune_t; /* rune_t (see above) */ +typedef __ct_rune_t __wchar_t; /* wchar_t (see above) */ +typedef __ct_rune_t __wint_t; /* wint_t (see above) */ + +typedef __uint32_t __dev_t; /* device number */ + +typedef __uint32_t __fixpt_t; /* fixed point number */ + +/* + * mbstate_t is an opaque object to keep conversion state during multibyte + * stream conversions. + */ +typedef union { + char __mbstate8[128]; + __int64_t _mbstateL; /* for alignment */ +} __mbstate_t; + +#endif /* !_SYS__TYPES_H_ */ diff --git a/fsbl/include/stdlib/sys/cdefs.h b/fsbl/include/stdlib/sys/cdefs.h new file mode 100644 index 000000000..70c09fdbb --- /dev/null +++ b/fsbl/include/stdlib/sys/cdefs.h @@ -0,0 +1,688 @@ +/*- + * Copyright (c) 1991, 1993 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Berkeley Software Design, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)cdefs.h 8.8 (Berkeley) 1/9/95 + * $FreeBSD$ + */ + +#ifndef _SYS_CDEFS_H_ +#define _SYS_CDEFS_H_ + +#if defined(__cplusplus) +#define __BEGIN_DECLS extern "C" { +#define __END_DECLS } +#else +#define __BEGIN_DECLS +#define __END_DECLS +#endif + +/* + * This code has been put in place to help reduce the addition of + * compiler specific defines in FreeBSD code. It helps to aid in + * having a compiler-agnostic source tree. + */ + +#if defined(__GNUC__) || defined(__INTEL_COMPILER) + +#if __GNUC__ >= 3 || defined(__INTEL_COMPILER) +#define __GNUCLIKE_ASM 3 +#define __GNUCLIKE_MATH_BUILTIN_CONSTANTS +#else +#define __GNUCLIKE_ASM 2 +#endif +#define __GNUCLIKE___TYPEOF 1 +#define __GNUCLIKE___OFFSETOF 1 +#define __GNUCLIKE___SECTION 1 + +#ifndef __INTEL_COMPILER +# define __GNUCLIKE_CTOR_SECTION_HANDLING 1 +#endif + +#define __GNUCLIKE_BUILTIN_CONSTANT_P 1 +# if defined(__INTEL_COMPILER) && defined(__cplusplus) \ + && __INTEL_COMPILER < 800 +# undef __GNUCLIKE_BUILTIN_CONSTANT_P +# endif + +#if (__GNUC_MINOR__ > 95 || __GNUC__ >= 3) && !defined(__INTEL_COMPILER) +# define __GNUCLIKE_BUILTIN_VARARGS 1 +# define __GNUCLIKE_BUILTIN_STDARG 1 +# define __GNUCLIKE_BUILTIN_VAALIST 1 +#endif + +#if defined(__GNUC__) +# define __GNUC_VA_LIST_COMPATIBILITY 1 +#endif + +#ifndef __INTEL_COMPILER +# define __GNUCLIKE_BUILTIN_NEXT_ARG 1 +# define __GNUCLIKE_MATH_BUILTIN_RELOPS +#endif + +#define __GNUCLIKE_BUILTIN_MEMCPY 1 + +/* XXX: if __GNUC__ >= 2: not tested everywhere originally, where replaced */ +#define __CC_SUPPORTS_INLINE 1 +#define __CC_SUPPORTS___INLINE 1 +#define __CC_SUPPORTS___INLINE__ 1 + +#define __CC_SUPPORTS___FUNC__ 1 +#define __CC_SUPPORTS_WARNING 1 + +#define __CC_SUPPORTS_VARADIC_XXX 1 /* see varargs.h */ + +#define __CC_SUPPORTS_DYNAMIC_ARRAY_INIT 1 + +#endif /* __GNUC__ || __INTEL_COMPILER */ + +/* + * Macro to test if we're using a specific version of gcc or later. + */ +#if defined(__GNUC__) && !defined(__INTEL_COMPILER) +#define __GNUC_PREREQ__(ma, mi) \ + (__GNUC__ > (ma) || __GNUC__ == (ma) && __GNUC_MINOR__ >= (mi)) +#else +#define __GNUC_PREREQ__(ma, mi) 0 +#endif + +/* + * The __CONCAT macro is used to concatenate parts of symbol names, e.g. + * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo. + * The __CONCAT macro is a bit tricky to use if it must work in non-ANSI + * mode -- there must be no spaces between its arguments, and for nested + * __CONCAT's, all the __CONCAT's must be at the left. __CONCAT can also + * concatenate double-quoted strings produced by the __STRING macro, but + * this only works with ANSI C. + * + * __XSTRING is like __STRING, but it expands any macros in its argument + * first. It is only available with ANSI C. + */ +#if defined(__STDC__) || defined(__cplusplus) +#define __P(protos) protos /* full-blown ANSI C */ +#define __CONCAT1(x,y) x ## y +#define __CONCAT(x,y) __CONCAT1(x,y) +#define __STRING(x) #x /* stringify without expanding x */ +#define __XSTRING(x) __STRING(x) /* expand x, then stringify */ + +#define __const const /* define reserved names to standard */ +#define __signed signed +#define __volatile volatile +#if defined(__cplusplus) +#define __inline inline /* convert to C++ keyword */ +#else +#if !(defined(__CC_SUPPORTS___INLINE)) +#define __inline /* delete GCC keyword */ +#endif /* ! __CC_SUPPORTS___INLINE */ +#endif /* !__cplusplus */ + +#else /* !(__STDC__ || __cplusplus) */ +#define __P(protos) () /* traditional C preprocessor */ +#define __CONCAT(x,y) x/**/y +#define __STRING(x) "x" + +#if !defined(__CC_SUPPORTS___INLINE) +#define __const /* delete pseudo-ANSI C keywords */ +#define __inline +#define __signed +#define __volatile +/* + * In non-ANSI C environments, new programs will want ANSI-only C keywords + * deleted from the program and old programs will want them left alone. + * When using a compiler other than gcc, programs using the ANSI C keywords + * const, inline etc. as normal identifiers should define -DNO_ANSI_KEYWORDS. + * When using "gcc -traditional", we assume that this is the intent; if + * __GNUC__ is defined but __STDC__ is not, we leave the new keywords alone. + */ +#ifndef NO_ANSI_KEYWORDS +#define const /* delete ANSI C keywords */ +#define inline +#define signed +#define volatile +#endif /* !NO_ANSI_KEYWORDS */ +#endif /* !__CC_SUPPORTS___INLINE */ +#endif /* !(__STDC__ || __cplusplus) */ + +/* + * Compiler-dependent macros to help declare dead (non-returning) and + * pure (no side effects) functions, and unused variables. They are + * null except for versions of gcc that are known to support the features + * properly (old versions of gcc-2 supported the dead and pure features + * in a different (wrong) way). If we do not provide an implementation + * for a given compiler, let the compile fail if it is told to use + * a feature that we cannot live without. + */ +#ifdef lint +#define __dead2 +#define __pure2 +#define __unused +#define __packed +#define __aligned(x) +#define __section(x) +#else +#if !__GNUC_PREREQ__(2, 5) && !defined(__INTEL_COMPILER) +#define __dead2 +#define __pure2 +#define __unused +#endif +#if __GNUC__ == 2 && __GNUC_MINOR__ >= 5 && __GNUC_MINOR__ < 7 && !defined(__INTEL_COMPILER) +#define __dead2 __attribute__((__noreturn__)) +#define __pure2 __attribute__((__const__)) +#define __unused +/* XXX Find out what to do for __packed, __aligned and __section */ +#endif +#if __GNUC_PREREQ__(2, 7) +#define __dead2 __attribute__((__noreturn__)) +#define __pure2 __attribute__((__const__)) +#define __unused __attribute__((__unused__)) +#define __used __attribute__((__used__)) +#define __packed __attribute__((__packed__)) +#define __aligned(x) __attribute__((__aligned__(x))) +#define __section(x) __attribute__((__section__(x))) +#endif +#if defined(__INTEL_COMPILER) +#define __dead2 __attribute__((__noreturn__)) +#define __pure2 __attribute__((__const__)) +#define __unused __attribute__((__unused__)) +#define __used __attribute__((__used__)) +#define __packed __attribute__((__packed__)) +#define __aligned(x) __attribute__((__aligned__(x))) +#define __section(x) __attribute__((__section__(x))) +#endif +#endif + +#if !__GNUC_PREREQ__(2, 95) +#define __alignof(x) __offsetof(struct { char __a; x __b; }, __b) +#endif + +/* + * Keywords added in C11. + */ +#if defined(__cplusplus) && __cplusplus >= 201103L +#define _Alignas(e) alignas(e) +#define _Alignof(e) alignof(e) +#define _Noreturn [[noreturn]] +#define _Static_assert(e, s) static_assert(e, s) +/* FIXME: change this to thread_local when clang in base supports it */ +#define _Thread_local __thread +#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L +/* Do nothing. They are language keywords. */ +#else +/* Not supported. Implement them using our versions. */ +#define _Alignas(x) __aligned(x) +#define _Alignof(x) __alignof(x) +#define _Noreturn __dead2 +#define _Thread_local __thread +#ifdef __COUNTER__ +#define _Static_assert(x, y) __Static_assert(x, __COUNTER__) +#define __Static_assert(x, y) ___Static_assert(x, y) +#define ___Static_assert(x, y) typedef char __assert_ ## y[(x) ? 1 : -1] +#else +#define _Static_assert(x, y) struct __hack +#endif +#endif + +/* + * Emulation of C11 _Generic(). Unlike the previously defined C11 + * keywords, it is not possible to implement this using exactly the same + * syntax. Therefore implement something similar under the name + * __generic(). Unlike _Generic(), this macro can only distinguish + * between a single type, so it requires nested invocations to + * distinguish multiple cases. + */ + +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L +#define __generic(expr, t, yes, no) \ + _Generic(expr, t: yes, default: no) +#elif __GNUC_PREREQ__(3, 1) && !defined(__cplusplus) +#define __generic(expr, t, yes, no) \ + __builtin_choose_expr( \ + __builtin_types_compatible_p(__typeof(expr), t), yes, no) +#endif + +#if __GNUC_PREREQ__(2, 96) +#define __malloc_like __attribute__((__malloc__)) +#define __pure __attribute__((__pure__)) +#else +#define __malloc_like +#define __pure +#endif + +#if __GNUC_PREREQ__(3, 1) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 800) +#define __always_inline __attribute__((__always_inline__)) +#else +#define __always_inline +#endif + +#if __GNUC_PREREQ__(3, 1) +#define __noinline __attribute__ ((__noinline__)) +#define __deprecated __attribute__ ((__deprecated__)) +#else +#define __noinline +#define __deprecated +#endif + +#if __GNUC_PREREQ__(3, 3) +#define __nonnull(x) __attribute__((__nonnull__(x))) +#else +#define __nonnull(x) +#endif + +#if __GNUC_PREREQ__(3, 4) +#define __fastcall __attribute__((__fastcall__)) +#else +#define __fastcall +#endif + +#if __GNUC_PREREQ__(4, 1) +#define __returns_twice __attribute__((__returns_twice__)) +#else +#define __returns_twice +#endif + +/* XXX: should use `#if __STDC_VERSION__ < 199901'. */ +#if !__GNUC_PREREQ__(2, 7) && !defined(__INTEL_COMPILER) +#define __func__ NULL +#endif + +#if (defined(__INTEL_COMPILER) || (defined(__GNUC__) && __GNUC__ >= 2)) && !defined(__STRICT_ANSI__) || __STDC_VERSION__ >= 199901 +#define __LONG_LONG_SUPPORTED +#endif + +/* C++11 exposes a load of C99 stuff */ +#if defined(__cplusplus) && __cplusplus >= 201103L +#define __LONG_LONG_SUPPORTED +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS +#endif +#ifndef __STDC_CONSTANT_MACROS +#define __STDC_CONSTANT_MACROS +#endif +#endif + +/* + * GCC 2.95 provides `__restrict' as an extension to C90 to support the + * C99-specific `restrict' type qualifier. We happen to use `__restrict' as + * a way to define the `restrict' type qualifier without disturbing older + * software that is unaware of C99 keywords. + */ +#if !(__GNUC__ == 2 && __GNUC_MINOR__ == 95) +#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901 || defined(lint) +#define __restrict +#else +#define __restrict restrict +#endif +#endif + +/* + * GNU C version 2.96 adds explicit branch prediction so that + * the CPU back-end can hint the processor and also so that + * code blocks can be reordered such that the predicted path + * sees a more linear flow, thus improving cache behavior, etc. + * + * The following two macros provide us with a way to utilize this + * compiler feature. Use __predict_true() if you expect the expression + * to evaluate to true, and __predict_false() if you expect the + * expression to evaluate to false. + * + * A few notes about usage: + * + * * Generally, __predict_false() error condition checks (unless + * you have some _strong_ reason to do otherwise, in which case + * document it), and/or __predict_true() `no-error' condition + * checks, assuming you want to optimize for the no-error case. + * + * * Other than that, if you don't know the likelihood of a test + * succeeding from empirical or other `hard' evidence, don't + * make predictions. + * + * * These are meant to be used in places that are run `a lot'. + * It is wasteful to make predictions in code that is run + * seldomly (e.g. at subsystem initialization time) as the + * basic block reordering that this affects can often generate + * larger code. + */ +#if __GNUC_PREREQ__(2, 96) +#define __predict_true(exp) __builtin_expect((exp), 1) +#define __predict_false(exp) __builtin_expect((exp), 0) +#else +#define __predict_true(exp) (exp) +#define __predict_false(exp) (exp) +#endif + +#if __GNUC_PREREQ__(4, 2) +#define __hidden __attribute__((__visibility__("hidden"))) +#define __exported __attribute__((__visibility__("default"))) +#else +#define __hidden +#define __exported +#endif + +/* + * We define this here since , , and + * require it. + */ +#if __GNUC_PREREQ__(4, 1) +#define __offsetof(type, field) __builtin_offsetof(type, field) +#else +#ifndef __cplusplus +#define __offsetof(type, field) \ + ((__size_t)(__uintptr_t)((const volatile void *)&((type *)0)->field)) +#else +#define __offsetof(type, field) \ + (__offsetof__ (reinterpret_cast <__size_t> \ + (&reinterpret_cast \ + (static_cast (0)->field)))) +#endif +#endif +#define __rangeof(type, start, end) \ + (__offsetof(type, end) - __offsetof(type, start)) + +/* + * Given the pointer x to the member m of the struct s, return + * a pointer to the containing structure. When using GCC, we first + * assign pointer x to a local variable, to check that its type is + * compatible with member m. + */ +#if __GNUC_PREREQ__(3, 1) +#define __containerof(x, s, m) ({ \ + const volatile __typeof(((s *)0)->m) *__x = (x); \ + __DEQUALIFY(s *, (const volatile char *)__x - __offsetof(s, m));\ +}) +#else +#define __containerof(x, s, m) \ + __DEQUALIFY(s *, (const volatile char *)(x) - __offsetof(s, m)) +#endif + +/* + * Compiler-dependent macros to declare that functions take printf-like + * or scanf-like arguments. They are null except for versions of gcc + * that are known to support the features properly (old versions of gcc-2 + * didn't permit keeping the keywords out of the application namespace). + */ +#if !__GNUC_PREREQ__(2, 7) && !defined(__INTEL_COMPILER) +#define __printflike(fmtarg, firstvararg) +#define __scanflike(fmtarg, firstvararg) +#define __format_arg(fmtarg) +#define __strfmonlike(fmtarg, firstvararg) +#define __strftimelike(fmtarg, firstvararg) +#else +#define __printflike(fmtarg, firstvararg) \ + __attribute__((__format__ (__printf__, fmtarg, firstvararg))) +#define __scanflike(fmtarg, firstvararg) \ + __attribute__((__format__ (__scanf__, fmtarg, firstvararg))) +#define __format_arg(fmtarg) __attribute__((__format_arg__ (fmtarg))) +#define __strfmonlike(fmtarg, firstvararg) \ + __attribute__((__format__ (__strfmon__, fmtarg, firstvararg))) +#define __strftimelike(fmtarg, firstvararg) \ + __attribute__((__format__ (__strftime__, fmtarg, firstvararg))) +#endif + +/* Compiler-dependent macros that rely on FreeBSD-specific extensions. */ +#if __FreeBSD_cc_version >= 300001 && defined(__GNUC__) && !defined(__INTEL_COMPILER) +#define __printf0like(fmtarg, firstvararg) \ + __attribute__((__format__ (__printf0__, fmtarg, firstvararg))) +#else +#define __printf0like(fmtarg, firstvararg) +#endif + +#if defined(__GNUC__) || defined(__INTEL_COMPILER) +#ifndef __INTEL_COMPILER +#define __strong_reference(sym,aliassym) \ + extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym))) +#endif +#ifdef __STDC__ +#define __weak_reference(sym,alias) \ + __asm__(".weak " #alias); \ + __asm__(".equ " #alias ", " #sym) +#define __warn_references(sym,msg) \ + __asm__(".section .gnu.warning." #sym); \ + __asm__(".asciz \"" msg "\""); \ + __asm__(".previous") +#define __sym_compat(sym,impl,verid) \ + __asm__(".symver " #impl ", " #sym "@" #verid) +#define __sym_default(sym,impl,verid) \ + __asm__(".symver " #impl ", " #sym "@@" #verid) +#else +#define __weak_reference(sym,alias) \ + __asm__(".weak alias"); \ + __asm__(".equ alias, sym") +#define __warn_references(sym,msg) \ + __asm__(".section .gnu.warning.sym"); \ + __asm__(".asciz \"msg\""); \ + __asm__(".previous") +#define __sym_compat(sym,impl,verid) \ + __asm__(".symver impl, sym@verid") +#define __sym_default(impl,sym,verid) \ + __asm__(".symver impl, sym@@verid") +#endif /* __STDC__ */ +#endif /* __GNUC__ || __INTEL_COMPILER */ + +#define __GLOBL1(sym) __asm__(".globl " #sym) +#define __GLOBL(sym) __GLOBL1(sym) + +#if defined(__GNUC__) || defined(__INTEL_COMPILER) +#define __IDSTRING(name,string) __asm__(".ident\t\"" string "\"") +#else +/* + * The following definition might not work well if used in header files, + * but it should be better than nothing. If you want a "do nothing" + * version, then it should generate some harmless declaration, such as: + * #define __IDSTRING(name,string) struct __hack + */ +#define __IDSTRING(name,string) static const char name[] __unused = string +#endif + +/* + * Embed the rcs id of a source file in the resulting library. Note that in + * more recent ELF binutils, we use .ident allowing the ID to be stripped. + * Usage: + * __FBSDID("$FreeBSD$"); + */ +#ifndef __FBSDID +#if !defined(lint) && !defined(STRIP_FBSDID) +#define __FBSDID(s) __IDSTRING(__CONCAT(__rcsid_,__LINE__),s) +#else +#define __FBSDID(s) struct __hack +#endif +#endif + +#ifndef __RCSID +#ifndef NO__RCSID +#define __RCSID(s) __IDSTRING(__CONCAT(__rcsid_,__LINE__),s) +#else +#define __RCSID(s) struct __hack +#endif +#endif + +#ifndef __RCSID_SOURCE +#ifndef NO__RCSID_SOURCE +#define __RCSID_SOURCE(s) __IDSTRING(__CONCAT(__rcsid_source_,__LINE__),s) +#else +#define __RCSID_SOURCE(s) struct __hack +#endif +#endif + +#ifndef __SCCSID +#ifndef NO__SCCSID +#define __SCCSID(s) __IDSTRING(__CONCAT(__sccsid_,__LINE__),s) +#else +#define __SCCSID(s) struct __hack +#endif +#endif + +#ifndef __COPYRIGHT +#ifndef NO__COPYRIGHT +#define __COPYRIGHT(s) __IDSTRING(__CONCAT(__copyright_,__LINE__),s) +#else +#define __COPYRIGHT(s) struct __hack +#endif +#endif + +#ifndef __DECONST +#define __DECONST(type, var) ((type)(__uintptr_t)(const void *)(var)) +#endif + +#ifndef __DEVOLATILE +#define __DEVOLATILE(type, var) ((type)(__uintptr_t)(volatile void *)(var)) +#endif + +#ifndef __DEQUALIFY +#define __DEQUALIFY(type, var) ((type)(__uintptr_t)(const volatile void *)(var)) +#endif + +/*- + * The following definitions are an extension of the behavior originally + * implemented in , but with a different level of granularity. + * POSIX.1 requires that the macros we test be defined before any standard + * header file is included. + * + * Here's a quick run-down of the versions: + * defined(_POSIX_SOURCE) 1003.1-1988 + * _POSIX_C_SOURCE == 1 1003.1-1990 + * _POSIX_C_SOURCE == 2 1003.2-1992 C Language Binding Option + * _POSIX_C_SOURCE == 199309 1003.1b-1993 + * _POSIX_C_SOURCE == 199506 1003.1c-1995, 1003.1i-1995, + * and the omnibus ISO/IEC 9945-1: 1996 + * _POSIX_C_SOURCE == 200112 1003.1-2001 + * _POSIX_C_SOURCE == 200809 1003.1-2008 + * + * In addition, the X/Open Portability Guide, which is now the Single UNIX + * Specification, defines a feature-test macro which indicates the version of + * that specification, and which subsumes _POSIX_C_SOURCE. + * + * Our macros begin with two underscores to avoid namespace screwage. + */ + +/* Deal with IEEE Std. 1003.1-1990, in which _POSIX_C_SOURCE == 1. */ +#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE == 1 +#undef _POSIX_C_SOURCE /* Probably illegal, but beyond caring now. */ +#define _POSIX_C_SOURCE 199009 +#endif + +/* Deal with IEEE Std. 1003.2-1992, in which _POSIX_C_SOURCE == 2. */ +#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE == 2 +#undef _POSIX_C_SOURCE +#define _POSIX_C_SOURCE 199209 +#endif + +/* Deal with various X/Open Portability Guides and Single UNIX Spec. */ +#ifdef _XOPEN_SOURCE +#if _XOPEN_SOURCE - 0 >= 700 +#define __XSI_VISIBLE 700 +#undef _POSIX_C_SOURCE +#define _POSIX_C_SOURCE 200809 +#elif _XOPEN_SOURCE - 0 >= 600 +#define __XSI_VISIBLE 600 +#undef _POSIX_C_SOURCE +#define _POSIX_C_SOURCE 200112 +#elif _XOPEN_SOURCE - 0 >= 500 +#define __XSI_VISIBLE 500 +#undef _POSIX_C_SOURCE +#define _POSIX_C_SOURCE 199506 +#endif +#endif + +/* + * Deal with all versions of POSIX. The ordering relative to the tests above is + * important. + */ +#if defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE) +#define _POSIX_C_SOURCE 198808 +#endif +#ifdef _POSIX_C_SOURCE +#if _POSIX_C_SOURCE >= 200809 +#define __POSIX_VISIBLE 200809 +#define __ISO_C_VISIBLE 1999 +#elif _POSIX_C_SOURCE >= 200112 +#define __POSIX_VISIBLE 200112 +#define __ISO_C_VISIBLE 1999 +#elif _POSIX_C_SOURCE >= 199506 +#define __POSIX_VISIBLE 199506 +#define __ISO_C_VISIBLE 1990 +#elif _POSIX_C_SOURCE >= 199309 +#define __POSIX_VISIBLE 199309 +#define __ISO_C_VISIBLE 1990 +#elif _POSIX_C_SOURCE >= 199209 +#define __POSIX_VISIBLE 199209 +#define __ISO_C_VISIBLE 1990 +#elif _POSIX_C_SOURCE >= 199009 +#define __POSIX_VISIBLE 199009 +#define __ISO_C_VISIBLE 1990 +#else +#define __POSIX_VISIBLE 198808 +#define __ISO_C_VISIBLE 0 +#endif /* _POSIX_C_SOURCE */ +#else +/*- + * Deal with _ANSI_SOURCE: + * If it is defined, and no other compilation environment is explicitly + * requested, then define our internal feature-test macros to zero. This + * makes no difference to the preprocessor (undefined symbols in preprocessing + * expressions are defined to have value zero), but makes it more convenient for + * a test program to print out the values. + * + * If a program mistakenly defines _ANSI_SOURCE and some other macro such as + * _POSIX_C_SOURCE, we will assume that it wants the broader compilation + * environment (and in fact we will never get here). + */ +#if defined(_ANSI_SOURCE) /* Hide almost everything. */ +#define __POSIX_VISIBLE 0 +#define __XSI_VISIBLE 0 +#define __BSD_VISIBLE 0 +#define __ISO_C_VISIBLE 1990 +#elif defined(_C99_SOURCE) /* Localism to specify strict C99 env. */ +#define __POSIX_VISIBLE 0 +#define __XSI_VISIBLE 0 +#define __BSD_VISIBLE 0 +#define __ISO_C_VISIBLE 1999 +#else /* Default environment: show everything. */ +#define __POSIX_VISIBLE 200809 +#define __XSI_VISIBLE 700 +#define __BSD_VISIBLE 1 +#define __ISO_C_VISIBLE 1999 +#endif +#endif + +#ifndef __has_feature +#define __has_feature(x) 0 +#endif +#ifndef __has_include +#define __has_include(x) 0 +#endif +#ifndef __has_builtin +#define __has_builtin(x) 0 +#endif + +#if defined(__mips) || defined(__powerpc64__) || defined(__arm__) +#define __NO_TLS 1 +#endif + +#endif /* !_SYS_CDEFS_H_ */ diff --git a/fsbl/include/stdlib/sys/ctype.h b/fsbl/include/stdlib/sys/ctype.h new file mode 100644 index 000000000..f2758b774 --- /dev/null +++ b/fsbl/include/stdlib/sys/ctype.h @@ -0,0 +1,59 @@ +/*- + * Copyright (c) 1982, 1988, 1991, 1993 + * The Regents of the University of California. All rights reserved. + * (c) UNIX System Laboratories, Inc. + * All or some portions of this file are derived from material licensed + * to the University of California by American Telephone and Telegraph + * Co. or Unix System Laboratories, Inc. and are reproduced herein with + * the permission of UNIX System Laboratories, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * Portions copyright (c) 2009-2014, ARM Limited and Contributors. + * All rights reserved. + */ + +#ifndef _SYS_CTYPE_H_ +#define _SYS_CTYPE_H_ + +#define isspace(c) ((c) == ' ' || ((c) >= '\t' && (c) <= '\r')) +#define isascii(c) (((c) & ~0x7f) == 0) +#define isupper(c) ((c) >= 'A' && (c) <= 'Z') +#define islower(c) ((c) >= 'a' && (c) <= 'z') +#define isalpha(c) (isupper(c) || islower(c)) +#define isdigit(c) ((c) >= '0' && (c) <= '9') +#define isxdigit(c) (isdigit(c) \ + || ((c) >= 'A' && (c) <= 'F') \ + || ((c) >= 'a' && (c) <= 'f')) +#define isprint(c) ((c) >= ' ' && (c) <= '~') + +#define toupper(c) ((c) - 0x20 * (((c) >= 'a') && ((c) <= 'z'))) +#define tolower(c) ((c) + 0x20 * (((c) >= 'A') && ((c) <= 'Z'))) + +#endif /* !_SYS_CTYPE_H_ */ diff --git a/fsbl/include/stdlib/sys/endian.h b/fsbl/include/stdlib/sys/endian.h new file mode 100644 index 000000000..d50110cab --- /dev/null +++ b/fsbl/include/stdlib/sys/endian.h @@ -0,0 +1,205 @@ +/*- + * Copyright (c) 2002 Thomas Moestl + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _SYS_ENDIAN_H_ +#define _SYS_ENDIAN_H_ + +#include +#include +#include + +#ifndef _UINT8_T_DECLARED +typedef __uint8_t uint8_t; +#define _UINT8_T_DECLARED +#endif + +#ifndef _UINT16_T_DECLARED +typedef __uint16_t uint16_t; +#define _UINT16_T_DECLARED +#endif + +#ifndef _UINT32_T_DECLARED +typedef __uint32_t uint32_t; +#define _UINT32_T_DECLARED +#endif + +#ifndef _UINT64_T_DECLARED +typedef __uint64_t uint64_t; +#define _UINT64_T_DECLARED +#endif + +/* + * General byte order swapping functions. + */ +#define bswap16(x) __bswap16(x) +#define bswap32(x) __bswap32(x) +#define bswap64(x) __bswap64(x) + +/* + * Host to big endian, host to little endian, big endian to host, and little + * endian to host byte order functions as detailed in byteorder(9). + */ +#if _BYTE_ORDER == _LITTLE_ENDIAN +#define htobe16(x) bswap16((x)) +#define htobe32(x) bswap32((x)) +#define htobe64(x) bswap64((x)) +#define htole16(x) ((uint16_t)(x)) +#define htole32(x) ((uint32_t)(x)) +#define htole64(x) ((uint64_t)(x)) + +#define be16toh(x) bswap16((x)) +#define be32toh(x) bswap32((x)) +#define be64toh(x) bswap64((x)) +#define le16toh(x) ((uint16_t)(x)) +#define le32toh(x) ((uint32_t)(x)) +#define le64toh(x) ((uint64_t)(x)) +#else /* _BYTE_ORDER != _LITTLE_ENDIAN */ +#define htobe16(x) ((uint16_t)(x)) +#define htobe32(x) ((uint32_t)(x)) +#define htobe64(x) ((uint64_t)(x)) +#define htole16(x) bswap16((x)) +#define htole32(x) bswap32((x)) +#define htole64(x) bswap64((x)) + +#define be16toh(x) ((uint16_t)(x)) +#define be32toh(x) ((uint32_t)(x)) +#define be64toh(x) ((uint64_t)(x)) +#define le16toh(x) bswap16((x)) +#define le32toh(x) bswap32((x)) +#define le64toh(x) bswap64((x)) +#endif /* _BYTE_ORDER == _LITTLE_ENDIAN */ + +/* Alignment-agnostic encode/decode bytestream to/from little/big endian. */ + +static __inline uint16_t +be16dec(const void *pp) +{ + uint8_t const *p = (uint8_t const *)pp; + + return ((p[0] << 8) | p[1]); +} + +static __inline uint32_t +be32dec(const void *pp) +{ + uint8_t const *p = (uint8_t const *)pp; + + return (((unsigned)p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3]); +} + +static __inline uint64_t +be64dec(const void *pp) +{ + uint8_t const *p = (uint8_t const *)pp; + + return (((uint64_t)be32dec(p) << 32) | be32dec(p + 4)); +} + +static __inline uint16_t +le16dec(const void *pp) +{ + uint8_t const *p = (uint8_t const *)pp; + + return ((p[1] << 8) | p[0]); +} + +static __inline uint32_t +le32dec(const void *pp) +{ + uint8_t const *p = (uint8_t const *)pp; + + return (((unsigned)p[3] << 24) | (p[2] << 16) | (p[1] << 8) | p[0]); +} + +static __inline uint64_t +le64dec(const void *pp) +{ + uint8_t const *p = (uint8_t const *)pp; + + return (((uint64_t)le32dec(p + 4) << 32) | le32dec(p)); +} + +static __inline void +be16enc(void *pp, uint16_t u) +{ + uint8_t *p = (uint8_t *)pp; + + p[0] = (u >> 8) & 0xff; + p[1] = u & 0xff; +} + +static __inline void +be32enc(void *pp, uint32_t u) +{ + uint8_t *p = (uint8_t *)pp; + + p[0] = (u >> 24) & 0xff; + p[1] = (u >> 16) & 0xff; + p[2] = (u >> 8) & 0xff; + p[3] = u & 0xff; +} + +static __inline void +be64enc(void *pp, uint64_t u) +{ + uint8_t *p = (uint8_t *)pp; + + be32enc(p, (uint32_t)(u >> 32)); + be32enc(p + 4, (uint32_t)(u & 0xffffffffU)); +} + +static __inline void +le16enc(void *pp, uint16_t u) +{ + uint8_t *p = (uint8_t *)pp; + + p[0] = u & 0xff; + p[1] = (u >> 8) & 0xff; +} + +static __inline void +le32enc(void *pp, uint32_t u) +{ + uint8_t *p = (uint8_t *)pp; + + p[0] = u & 0xff; + p[1] = (u >> 8) & 0xff; + p[2] = (u >> 16) & 0xff; + p[3] = (u >> 24) & 0xff; +} + +static __inline void +le64enc(void *pp, uint64_t u) +{ + uint8_t *p = (uint8_t *)pp; + + le32enc(p, (uint32_t)(u & 0xffffffffU)); + le32enc(p + 4, (uint32_t)(u >> 32)); +} + +#endif /* _SYS_ENDIAN_H_ */ diff --git a/fsbl/include/stdlib/sys/errno.h b/fsbl/include/stdlib/sys/errno.h new file mode 100644 index 000000000..f59551451 --- /dev/null +++ b/fsbl/include/stdlib/sys/errno.h @@ -0,0 +1,193 @@ +/*- + * Copyright (c) 1982, 1986, 1989, 1993 + * The Regents of the University of California. All rights reserved. + * (c) UNIX System Laboratories, Inc. + * All or some portions of this file are derived from material licensed + * to the University of California by American Telephone and Telegraph + * Co. or Unix System Laboratories, Inc. and are reproduced herein with + * the permission of UNIX System Laboratories, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)errno.h 8.5 (Berkeley) 1/21/94 + * $FreeBSD$ + */ + +#ifndef _SYS_ERRNO_H_ +#define _SYS_ERRNO_H_ + +#ifndef _KERNEL +#include +__BEGIN_DECLS +int * __error(void); +__END_DECLS +#define errno (* __error()) +#endif + +#define EPERM 1 /* Operation not permitted */ +#define ENOENT 2 /* No such file or directory */ +#define ESRCH 3 /* No such process */ +#define EINTR 4 /* Interrupted system call */ +#define EIO 5 /* Input/output error */ +#define ENXIO 6 /* Device not configured */ +#define E2BIG 7 /* Argument list too long */ +#define ENOEXEC 8 /* Exec format error */ +#define EBADF 9 /* Bad file descriptor */ +#define ECHILD 10 /* No child processes */ +#define EDEADLK 11 /* Resource deadlock avoided */ + /* 11 was EAGAIN */ +#define ENOMEM 12 /* Cannot allocate memory */ +#define EACCES 13 /* Permission denied */ +#define EFAULT 14 /* Bad address */ +#ifndef _POSIX_SOURCE +#define ENOTBLK 15 /* Block device required */ +#endif +#define EBUSY 16 /* Device busy */ +#define EEXIST 17 /* File exists */ +#define EXDEV 18 /* Cross-device link */ +#define ENODEV 19 /* Operation not supported by device */ +#define ENOTDIR 20 /* Not a directory */ +#define EISDIR 21 /* Is a directory */ +#define EINVAL 22 /* Invalid argument */ +#define ENFILE 23 /* Too many open files in system */ +#define EMFILE 24 /* Too many open files */ +#define ENOTTY 25 /* Inappropriate ioctl for device */ +#ifndef _POSIX_SOURCE +#define ETXTBSY 26 /* Text file busy */ +#endif +#define EFBIG 27 /* File too large */ +#define ENOSPC 28 /* No space left on device */ +#define ESPIPE 29 /* Illegal seek */ +#define EROFS 30 /* Read-only filesystem */ +#define EMLINK 31 /* Too many links */ +#define EPIPE 32 /* Broken pipe */ + +/* math software */ +#define EDOM 33 /* Numerical argument out of domain */ +#define ERANGE 34 /* Result too large */ + +/* non-blocking and interrupt i/o */ +#define EAGAIN 35 /* Resource temporarily unavailable */ +#ifndef _POSIX_SOURCE +#define EWOULDBLOCK EAGAIN /* Operation would block */ +#define EINPROGRESS 36 /* Operation now in progress */ +#define EALREADY 37 /* Operation already in progress */ + +/* ipc/network software -- argument errors */ +#define ENOTSOCK 38 /* Socket operation on non-socket */ +#define EDESTADDRREQ 39 /* Destination address required */ +#define EMSGSIZE 40 /* Message too long */ +#define EPROTOTYPE 41 /* Protocol wrong type for socket */ +#define ENOPROTOOPT 42 /* Protocol not available */ +#define EPROTONOSUPPORT 43 /* Protocol not supported */ +#define ESOCKTNOSUPPORT 44 /* Socket type not supported */ +#define EOPNOTSUPP 45 /* Operation not supported */ +#define ENOTSUP EOPNOTSUPP /* Operation not supported */ +#define EPFNOSUPPORT 46 /* Protocol family not supported */ +#define EAFNOSUPPORT 47 /* Address family not supported by protocol family */ +#define EADDRINUSE 48 /* Address already in use */ +#define EADDRNOTAVAIL 49 /* Can't assign requested address */ + +/* ipc/network software -- operational errors */ +#define ENETDOWN 50 /* Network is down */ +#define ENETUNREACH 51 /* Network is unreachable */ +#define ENETRESET 52 /* Network dropped connection on reset */ +#define ECONNABORTED 53 /* Software caused connection abort */ +#define ECONNRESET 54 /* Connection reset by peer */ +#define ENOBUFS 55 /* No buffer space available */ +#define EISCONN 56 /* Socket is already connected */ +#define ENOTCONN 57 /* Socket is not connected */ +#define ESHUTDOWN 58 /* Can't send after socket shutdown */ +#define ETOOMANYREFS 59 /* Too many references: can't splice */ +#define ETIMEDOUT 60 /* Operation timed out */ +#define ECONNREFUSED 61 /* Connection refused */ + +#define ELOOP 62 /* Too many levels of symbolic links */ +#endif /* _POSIX_SOURCE */ +#define ENAMETOOLONG 63 /* File name too long */ + +/* should be rearranged */ +#ifndef _POSIX_SOURCE +#define EHOSTDOWN 64 /* Host is down */ +#define EHOSTUNREACH 65 /* No route to host */ +#endif /* _POSIX_SOURCE */ +#define ENOTEMPTY 66 /* Directory not empty */ + +/* quotas & mush */ +#ifndef _POSIX_SOURCE +#define EPROCLIM 67 /* Too many processes */ +#define EUSERS 68 /* Too many users */ +#define EDQUOT 69 /* Disc quota exceeded */ + +/* Network File System */ +#define ESTALE 70 /* Stale NFS file handle */ +#define EREMOTE 71 /* Too many levels of remote in path */ +#define EBADRPC 72 /* RPC struct is bad */ +#define ERPCMISMATCH 73 /* RPC version wrong */ +#define EPROGUNAVAIL 74 /* RPC prog. not avail */ +#define EPROGMISMATCH 75 /* Program version wrong */ +#define EPROCUNAVAIL 76 /* Bad procedure for program */ +#endif /* _POSIX_SOURCE */ + +#define ENOLCK 77 /* No locks available */ +#define ENOSYS 78 /* Function not implemented */ + +#ifndef _POSIX_SOURCE +#define EFTYPE 79 /* Inappropriate file type or format */ +#define EAUTH 80 /* Authentication error */ +#define ENEEDAUTH 81 /* Need authenticator */ +#define EIDRM 82 /* Identifier removed */ +#define ENOMSG 83 /* No message of desired type */ +#define EOVERFLOW 84 /* Value too large to be stored in data type */ +#define ECANCELED 85 /* Operation canceled */ +#define EILSEQ 86 /* Illegal byte sequence */ +#define ENOATTR 87 /* Attribute not found */ + +#define EDOOFUS 88 /* Programming error */ +#endif /* _POSIX_SOURCE */ + +#define EBADMSG 89 /* Bad message */ +#define EMULTIHOP 90 /* Multihop attempted */ +#define ENOLINK 91 /* Link has been severed */ +#define EPROTO 92 /* Protocol error */ + +#ifndef _POSIX_SOURCE +#define ENOTCAPABLE 93 /* Capabilities insufficient */ +#define ECAPMODE 94 /* Not permitted in capability mode */ +#endif /* _POSIX_SOURCE */ + +#ifndef _POSIX_SOURCE +#define ELAST 94 /* Must be equal largest errno */ +#endif /* _POSIX_SOURCE */ + +#ifdef _KERNEL +/* pseudo-errors returned inside kernel to modify return to process */ +#define ERESTART (-1) /* restart syscall */ +#define EJUSTRETURN (-2) /* don't modify regs, just return */ +#define ENOIOCTL (-3) /* ioctl not handled by this layer */ +#define EDIRIOCTL (-4) /* do direct ioctl in GEOM */ +#endif + +#endif diff --git a/fsbl/include/stdlib/sys/limits.h b/fsbl/include/stdlib/sys/limits.h new file mode 100644 index 000000000..c56a337de --- /dev/null +++ b/fsbl/include/stdlib/sys/limits.h @@ -0,0 +1,100 @@ +/*- + * Copyright (c) 1988, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _SYS_LIMITS_H_ +#define _SYS_LIMITS_H_ + +#include +#include + +#define CHAR_BIT __CHAR_BIT /* number of bits in a char */ + +#define SCHAR_MAX __SCHAR_MAX /* max value for a signed char */ +#define SCHAR_MIN __SCHAR_MIN /* min value for a signed char */ + +#define UCHAR_MAX __UCHAR_MAX /* max value for an unsigned char */ + +#ifdef __CHAR_UNSIGNED__ +#define CHAR_MAX UCHAR_MAX /* max value for a char */ +#define CHAR_MIN 0 /* min value for a char */ +#else +#define CHAR_MAX SCHAR_MAX +#define CHAR_MIN SCHAR_MIN +#endif + +#define USHRT_MAX __USHRT_MAX /* max value for an unsigned short */ +#define SHRT_MAX __SHRT_MAX /* max value for a short */ +#define SHRT_MIN __SHRT_MIN /* min value for a short */ + +#define UINT_MAX __UINT_MAX /* max value for an unsigned int */ +#define INT_MAX __INT_MAX /* max value for an int */ +#define INT_MIN __INT_MIN /* min value for an int */ + +#define ULONG_MAX __ULONG_MAX /* max for an unsigned long */ +#define LONG_MAX __LONG_MAX /* max for a long */ +#define LONG_MIN __LONG_MIN /* min for a long */ + +#ifdef __LONG_LONG_SUPPORTED +#define ULLONG_MAX __ULLONG_MAX /* max for an unsigned long long */ +#define LLONG_MAX __LLONG_MAX /* max for a long long */ +#define LLONG_MIN __LLONG_MIN /* min for a long long */ +#endif + +#if __POSIX_VISIBLE || __XSI_VISIBLE +#define SSIZE_MAX __SSIZE_MAX /* max value for an ssize_t */ +#endif + +#if __POSIX_VISIBLE >= 200112 || __XSI_VISIBLE +#define SIZE_T_MAX __SIZE_T_MAX /* max value for a size_t */ + +#define OFF_MAX __OFF_MAX /* max value for an off_t */ +#define OFF_MIN __OFF_MIN /* min value for an off_t */ +#endif + +#if __BSD_VISIBLE +#define GID_MAX UINT_MAX /* max value for a gid_t */ +#define UID_MAX UINT_MAX /* max value for a uid_t */ + +#define UQUAD_MAX (__UQUAD_MAX) /* max value for a uquad_t */ +#define QUAD_MAX (__QUAD_MAX) /* max value for a quad_t */ +#define QUAD_MIN (__QUAD_MIN) /* min value for a quad_t */ +#endif + +#if __XSI_VISIBLE || __POSIX_VISIBLE >= 200809 +#define LONG_BIT __LONG_BIT +#define WORD_BIT __WORD_BIT +#endif + +#if __POSIX_VISIBLE +#define MQ_PRIO_MAX 64 +#endif + +#endif /* !_SYS_LIMITS_H_ */ diff --git a/fsbl/include/stdlib/sys/stdarg.h b/fsbl/include/stdlib/sys/stdarg.h new file mode 100644 index 000000000..c315dfcee --- /dev/null +++ b/fsbl/include/stdlib/sys/stdarg.h @@ -0,0 +1,75 @@ +/*- + * Copyright (c) 2002 David E. O'Brien. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _MACHINE_STDARG_H_ +#define _MACHINE_STDARG_H_ + +#include +#include + +#ifndef _VA_LIST_DECLARED +#define _VA_LIST_DECLARED +typedef __va_list va_list; +#endif + +#ifdef __GNUCLIKE_BUILTIN_STDARG + +#define va_start(ap, last) \ + __builtin_va_start((ap), (last)) + +#define va_arg(ap, type) \ + __builtin_va_arg((ap), type) + +#define __va_copy(dest, src) \ + __builtin_va_copy((dest), (src)) + +#if __ISO_C_VISIBLE >= 1999 +#define va_copy(dest, src) \ + __va_copy(dest, src) +#endif + +#define va_end(ap) \ + __builtin_va_end(ap) + +#elif defined(lint) +/* Provide a fake implementation for lint's benefit */ +#define __va_size(type) \ + (((sizeof(type) + sizeof(long) - 1) / sizeof(long)) * sizeof(long)) +#define va_start(ap, last) \ + ((ap) = (va_list)&(last) + __va_size(last)) +#define va_arg(ap, type) \ + (*(type *)((ap) += __va_size(type), (ap) - __va_size(type))) +#define va_end(ap) + +#else +#error this file needs to be ported to your compiler +#endif + +#endif /* !_MACHINE_STDARG_H_ */ diff --git a/fsbl/include/stdlib/sys/stdint.h b/fsbl/include/stdlib/sys/stdint.h new file mode 100644 index 000000000..aa5ac81d1 --- /dev/null +++ b/fsbl/include/stdlib/sys/stdint.h @@ -0,0 +1,74 @@ +/*- + * Copyright (c) 2001 Mike Barcroft + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _SYS_STDINT_H_ +#define _SYS_STDINT_H_ + +#include +#include + +#include +#include + +typedef __int_least8_t int_least8_t; +typedef __int_least16_t int_least16_t; +typedef __int_least32_t int_least32_t; +typedef __int_least64_t int_least64_t; + +typedef __uint_least8_t uint_least8_t; +typedef __uint_least16_t uint_least16_t; +typedef __uint_least32_t uint_least32_t; +typedef __uint_least64_t uint_least64_t; + +typedef __int_fast8_t int_fast8_t; +typedef __int_fast16_t int_fast16_t; +typedef __int_fast32_t int_fast32_t; +typedef __int_fast64_t int_fast64_t; + +typedef __uint_fast8_t uint_fast8_t; +typedef __uint_fast16_t uint_fast16_t; +typedef __uint_fast32_t uint_fast32_t; +typedef __uint_fast64_t uint_fast64_t; + +#ifndef _INTMAX_T_DECLARED +typedef __intmax_t intmax_t; +#define _INTMAX_T_DECLARED +#endif +#ifndef _UINTMAX_T_DECLARED +typedef __uintmax_t uintmax_t; +#define _UINTMAX_T_DECLARED +#endif + +/* GNU and Darwin define this and people seem to think it's portable */ +#if defined(UINTPTR_MAX) && defined(UINT64_MAX) && (UINTPTR_MAX == UINT64_MAX) +#define __WORDSIZE 64 +#else +#define __WORDSIZE 32 +#endif + +#endif /* !_SYS_STDINT_H_ */ diff --git a/fsbl/include/stdlib/sys/timespec.h b/fsbl/include/stdlib/sys/timespec.h new file mode 100644 index 000000000..2505cef89 --- /dev/null +++ b/fsbl/include/stdlib/sys/timespec.h @@ -0,0 +1,63 @@ +/*- + * Copyright (c) 1982, 1986, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)time.h 8.5 (Berkeley) 5/4/95 + * from: FreeBSD: src/sys/sys/time.h,v 1.43 2000/03/20 14:09:05 phk Exp + * $FreeBSD$ + */ + +#ifndef _SYS_TIMESPEC_H_ +#define _SYS_TIMESPEC_H_ + +#include +#include + +#if __BSD_VISIBLE +#define TIMEVAL_TO_TIMESPEC(tv, ts) \ + do { \ + (ts)->tv_sec = (tv)->tv_sec; \ + (ts)->tv_nsec = (tv)->tv_usec * 1000; \ + } while (0) +#define TIMESPEC_TO_TIMEVAL(tv, ts) \ + do { \ + (tv)->tv_sec = (ts)->tv_sec; \ + (tv)->tv_usec = (ts)->tv_nsec / 1000; \ + } while (0) + +#endif /* __BSD_VISIBLE */ + +/* + * Structure defined by POSIX.1b to be like a itimerval, but with + * timespecs. Used in the timer_*() system calls. + */ +struct itimerspec { + struct timespec it_interval; + struct timespec it_value; +}; + +#endif /* _SYS_TIMESPEC_H_ */ diff --git a/fsbl/include/stdlib/sys/types.h b/fsbl/include/stdlib/sys/types.h new file mode 100644 index 000000000..ae2ea33a5 --- /dev/null +++ b/fsbl/include/stdlib/sys/types.h @@ -0,0 +1,245 @@ +/*- + * Copyright (c) 1982, 1986, 1991, 1993, 1994 + * The Regents of the University of California. All rights reserved. + * (c) UNIX System Laboratories, Inc. + * All or some portions of this file are derived from material licensed + * to the University of California by American Telephone and Telegraph + * Co. or Unix System Laboratories, Inc. and are reproduced herein with + * the permission of UNIX System Laboratories, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)types.h 8.6 (Berkeley) 2/19/95 + * $FreeBSD$ + */ + +#ifndef _SYS_TYPES_H_ +#define _SYS_TYPES_H_ + +#include + +/* Machine type dependent parameters. */ +#include + +#if __BSD_VISIBLE +typedef unsigned char u_char; +typedef unsigned short u_short; +typedef unsigned int u_int; +typedef unsigned long u_long; +#ifndef _KERNEL +typedef unsigned short ushort; /* Sys V compatibility */ +typedef unsigned int uint; /* Sys V compatibility */ +#endif +#endif + +/* + * XXX POSIX sized integrals that should appear only in . + */ +#include + +typedef __uint8_t u_int8_t; /* unsigned integrals (deprecated) */ +typedef __uint16_t u_int16_t; +typedef __uint32_t u_int32_t; +typedef __uint64_t u_int64_t; + +typedef __uint64_t u_quad_t; /* quads (deprecated) */ +typedef __int64_t quad_t; +typedef quad_t *qaddr_t; + +typedef char *caddr_t; /* core address */ +typedef const char *c_caddr_t; /* core address, pointer to const */ + +#ifndef _BLKSIZE_T_DECLARED +typedef __blksize_t blksize_t; +#define _BLKSIZE_T_DECLARED +#endif + +typedef __cpuwhich_t cpuwhich_t; +typedef __cpulevel_t cpulevel_t; +typedef __cpusetid_t cpusetid_t; + +#ifndef _BLKCNT_T_DECLARED +typedef __blkcnt_t blkcnt_t; +#define _BLKCNT_T_DECLARED +#endif + +#ifndef _CLOCK_T_DECLARED +typedef __clock_t clock_t; +#define _CLOCK_T_DECLARED +#endif + +#ifndef _CLOCKID_T_DECLARED +typedef __clockid_t clockid_t; +#define _CLOCKID_T_DECLARED +#endif + +typedef __critical_t critical_t; /* Critical section value */ +typedef __int64_t daddr_t; /* disk address */ + +#ifndef _DEV_T_DECLARED +typedef __dev_t dev_t; /* device number or struct cdev */ +#define _DEV_T_DECLARED +#endif + +#ifndef _FFLAGS_T_DECLARED +typedef __fflags_t fflags_t; /* file flags */ +#define _FFLAGS_T_DECLARED +#endif + +typedef __fixpt_t fixpt_t; /* fixed point number */ + +#ifndef _FSBLKCNT_T_DECLARED /* for statvfs() */ +typedef __fsblkcnt_t fsblkcnt_t; +typedef __fsfilcnt_t fsfilcnt_t; +#define _FSBLKCNT_T_DECLARED +#endif + +#ifndef _GID_T_DECLARED +typedef __gid_t gid_t; /* group id */ +#define _GID_T_DECLARED +#endif + +#ifndef _IN_ADDR_T_DECLARED +typedef __uint32_t in_addr_t; /* base type for internet address */ +#define _IN_ADDR_T_DECLARED +#endif + +#ifndef _IN_PORT_T_DECLARED +typedef __uint16_t in_port_t; +#define _IN_PORT_T_DECLARED +#endif + +#ifndef _ID_T_DECLARED +typedef __id_t id_t; /* can hold a uid_t or pid_t */ +#define _ID_T_DECLARED +#endif + +#ifndef _INO_T_DECLARED +typedef __ino_t ino_t; /* inode number */ +#define _INO_T_DECLARED +#endif + +#ifndef _KEY_T_DECLARED +typedef __key_t key_t; /* IPC key (for Sys V IPC) */ +#define _KEY_T_DECLARED +#endif + +#ifndef _LWPID_T_DECLARED +typedef __lwpid_t lwpid_t; /* Thread ID (a.k.a. LWP) */ +#define _LWPID_T_DECLARED +#endif + +#ifndef _MODE_T_DECLARED +typedef __mode_t mode_t; /* permissions */ +#define _MODE_T_DECLARED +#endif + +#ifndef _ACCMODE_T_DECLARED +typedef __accmode_t accmode_t; /* access permissions */ +#define _ACCMODE_T_DECLARED +#endif + +#ifndef _NLINK_T_DECLARED +typedef __nlink_t nlink_t; /* link count */ +#define _NLINK_T_DECLARED +#endif + +#ifndef _OFF_T_DECLARED +typedef __off_t off_t; /* file offset */ +#define _OFF_T_DECLARED +#endif + +#ifndef _PID_T_DECLARED +typedef __pid_t pid_t; /* process id */ +#define _PID_T_DECLARED +#endif + +typedef __register_t register_t; + +#ifndef _RLIM_T_DECLARED +typedef __rlim_t rlim_t; /* resource limit */ +#define _RLIM_T_DECLARED +#endif + +typedef __int64_t sbintime_t; + +typedef __segsz_t segsz_t; /* segment size (in pages) */ + +#ifndef _SIZE_T_DECLARED +typedef __size_t size_t; +#define _SIZE_T_DECLARED +#endif + +#ifndef _SSIZE_T_DECLARED +typedef __ssize_t ssize_t; +#define _SSIZE_T_DECLARED +#endif + +#ifndef _SUSECONDS_T_DECLARED +typedef __suseconds_t suseconds_t; /* microseconds (signed) */ +#define _SUSECONDS_T_DECLARED +#endif + +#ifndef _TIME_T_DECLARED +typedef __time_t time_t; +#define _TIME_T_DECLARED +#endif + +#ifndef _TIMER_T_DECLARED +typedef __timer_t timer_t; +#define _TIMER_T_DECLARED +#endif + +#ifndef _MQD_T_DECLARED +typedef __mqd_t mqd_t; +#define _MQD_T_DECLARED +#endif + +typedef __u_register_t u_register_t; + +#ifndef _UID_T_DECLARED +typedef __uid_t uid_t; /* user id */ +#define _UID_T_DECLARED +#endif + +#ifndef _USECONDS_T_DECLARED +typedef __useconds_t useconds_t; /* microseconds (unsigned) */ +#define _USECONDS_T_DECLARED +#endif + +#ifndef _CAP_RIGHTS_T_DECLARED +#define _CAP_RIGHTS_T_DECLARED +struct cap_rights; + +typedef struct cap_rights cap_rights_t; +#endif + +typedef __vm_offset_t vm_offset_t; +typedef __vm_ooffset_t vm_ooffset_t; +typedef __vm_paddr_t vm_paddr_t; +typedef __vm_pindex_t vm_pindex_t; +typedef __vm_size_t vm_size_t; + +#endif /* !_SYS_TYPES_H_ */ diff --git a/fsbl/include/utils.h b/fsbl/include/utils.h new file mode 100644 index 000000000..585d723b3 --- /dev/null +++ b/fsbl/include/utils.h @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __UTILS_H__ +#define __UTILS_H__ + +#include + +/* + * C code should be put in this part of the header to avoid breaking ASM files + * or linker scripts including it. + */ +#if !(defined(__LINKER__) || defined(__ASSEMBLY__)) + +#include + +/* + * Fill a region of normal memory of size "length" in bytes with zero bytes. + * + * WARNING: This function can only operate on normal memory. This means that + * the MMU must be enabled when using this function. Otherwise, use + * zeromem. + */ +void zero_normalmem(void *mem, u_register_t length); + +/* + * Fill a region of memory of size "length" in bytes with null bytes. + * + * Unlike zero_normalmem, this function has no restriction on the type of + * memory targeted and can be used for any device memory as well as normal + * memory. This function must be used instead of zero_normalmem when MMU is + * disabled. + * + * NOTE: When data cache and MMU are enabled, prefer zero_normalmem for faster + * zeroing. + */ +void zeromem(void *mem, u_register_t length); + +char *ntostr(char *nbuf, uintmax_t num, int _base, int upper); + +void bytes_reverse(void *buf, size_t n); + +#endif /* !(defined(__LINKER__) || defined(__ASSEMBLY__)) */ + +#endif /* __UTILS_H__ */ diff --git a/fsbl/include/utils_def.h b/fsbl/include/utils_def.h new file mode 100644 index 000000000..a929663ee --- /dev/null +++ b/fsbl/include/utils_def.h @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __UTILS_DEF_H__ +#define __UTILS_DEF_H__ + +/* Compute the number of elements in the given array */ +#define ARRAY_SIZE(a) \ + (sizeof(a) / sizeof((a)[0])) + +#define IS_POWER_OF_TWO(x) \ + (((x) & ((x) - 1)) == 0) + +#define SIZE_FROM_LOG2_WORDS(n) (4 << (n)) + +#define BIT(nr) (1UL << (nr)) + +// Get a bit field from a value +#define GET_FIELD(Var, Mask, Shift) (((Var) >> (Shift)) & (Mask)) + +#define MIN(x, y) __extension__ ({ \ + __typeof__(x) _x = (x); \ + __typeof__(y) _y = (y); \ + (void)(&_x == &_y); \ + _x < _y ? _x : _y; \ +}) + +#define MAX(x, y) __extension__ ({ \ + __typeof__(x) _x = (x); \ + __typeof__(y) _y = (y); \ + (void)(&_x == &_y); \ + _x > _y ? _x : _y; \ +}) + +#define IN_RANGE(_addr, _start, _size) ({ \ + (_addr) >= (_start) && \ + (_addr) < ((_start) + (_size)); \ +}) + +#define PTR_INC(base, offset) (void *)((uint8_t *)(base) + (offset)) +#define PTR_DEC(base, offset) (void *)((uint8_t *)(base) - (offset)) +#define ROUND_UP(divident, divisor) ((((divident) + (divisor) - 1) / (divisor)) * (divisor)) +#define ROUND_DOWN(divident, divisor) (((divident) / (divisor)) * (divisor)) + +#define DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d)) +#define DIV_ROUND_CLOSEST(x, divisor)( \ +{ \ + typeof(x) __x = x; \ + typeof(divisor) __d = divisor; \ + (((typeof(x))-1) > 0 || \ + ((typeof(divisor))-1) > 0 || \ + (((__x) > 0) == ((__d) > 0))) ? \ + (((__x) + ((__d) / 2)) / (__d)) : \ + (((__x) - ((__d) / 2)) / (__d)); \ +} \ +) + +/* + * The round_up() macro rounds up a value to the given boundary in a + * type-agnostic yet type-safe manner. The boundary must be a power of two. + * In other words, it computes the smallest multiple of boundary which is + * greater than or equal to value. + * + * round_down() is similar but rounds the value down instead. + */ +#define round_boundary(value, boundary) \ + ((__typeof__(value))((boundary) - 1)) + +#define round_up(value, boundary) \ + ((((value) - 1) | round_boundary(value, boundary)) + 1) + +#define round_down(value, boundary) \ + ((value) & ~round_boundary(value, boundary)) + +/* + * Evaluates to 1 if (ptr + inc) overflows, 0 otherwise. + * Both arguments must be unsigned pointer values (i.e. uintptr_t). + */ +#define check_uptr_overflow(ptr, inc) \ + (((ptr) > UINTPTR_MAX - (inc)) ? 1 : 0) + +/* + * For those constants to be shared between C and other sources, apply a 'u' + * or 'ull' suffix to the argument only in C, to avoid undefined or unintended + * behaviour. + * + * The GNU assembler and linker do not support the 'u' and 'ull' suffix (it + * causes the build process to fail) therefore the suffix is omitted when used + * in linker scripts and assembler files. +*/ +#if defined(__LINKER__) || defined(__ASSEMBLY__) +# define U(_x) (_x) +# define ULL(_x) (_x) +#else +# define U(_x) (_x##u) +# define ULL(_x) (_x##ull) +#endif + +#endif /* __UTILS_DEF_H__ */ diff --git a/fsbl/lib/BigDigits/CHANGES.txt b/fsbl/lib/BigDigits/CHANGES.txt new file mode 100644 index 000000000..f690b83fc --- /dev/null +++ b/fsbl/lib/BigDigits/CHANGES.txt @@ -0,0 +1,110 @@ +# CHANGE LOG FOR BIGDIGITS + +## Changes in Version 2.6 + +_Version 2.6.1 (Released 31 March 2016)_ + +* Added new functions to perform modular arithmetic operations, particularly useful for doing computations in a prime field for elliptic curves: + * `mpModSquare`, `bdModSquare` to compute `a = x^2 (mod m)` + * `mpModSqrt`, `bdModSqrt` to compute a square root modulo a prime p + * `mpModHalve`, `bdModHalve` to compute `a = x / 2 (mod p)` + * `mpModAdd`, `bdModAdd` and `mpModSub`, `bdModSub` to compute `w = u ± v (mod m)` quickly for u and v in the range `[0, m-1]`. + * The function `mpModSpecial` to compute `u = v (mod m)` in the special case where v is known to be in the range `[0, km]` for k a small integer. This is faster than `mpModulo`. +* Added functions `mpToShort`, `bdToShort` to convert a multiprecision integer to a single digit. +* Added functions `mpShortIsEqual`, `bdmpShortIsEqual` to check if a multiprecision integer is equal to a single digit. +* Added the explicit constant-time comparison functions. + * `mpEqual_ct()`, `bdIsEqual_ct()` + * `mpIsZero_ct()`, `bdIsZero_ct()` + * `mpCompare_ct()`, `bdCompare_ct()` +* Reversed the change in v2.5 to make the comparison functions constant-time by default. The original comparison functions are now _not_ constant-time, as they were before v2.5\. The user must explicitly select the constant-time variant (ending **_ct**). To summarize: the functions `mpEqual`, `bdIsEqual`, `mpIsZero`, `bdIsZero`, `mpCompare` and `bdCompare` are _not_ constant-time in v2.6. + + > _Comment:_ We realised after we made the change in v2.5 that the majority of comparison operations in our own code were simple checks for special cases and were not comparing secret values, so they did not need the more expensive constant-time operations. There were only a few occasions where we did comparisons on secret values and these were easily found and explicitly changed to do a constant-time comparison. So, sorry, we shouldn't have changed the default behaviour in v2.5\. It's back now to how it was before. + +* Added the functions `mpCompileTime`, `bdCompileTime` to show the time and date of compilation. +* Added the function `mpPrintBits` to print the value in 0/1 bit format. +* Added the option to specify the global preprocessor definition, say, `MAX_FIXED_BIT_LENGTH=640` when using the `NO_ALLOCS` option for the "mp" functions. This allows you to change the maximum fixed length of arrays without editing the core source code. +* Increased the size of the fixed-length buffers in the `mpPrint*()` functions to avoid buffer overflows +* Fixed an issue with the `mpPrint*()` functions when displaying zero values. +* Added the `bdNewVars` and `bdFreeVars` functions to allow "bulk" creation and destruction of "bd" variables in a single line of code. + +## Changes in Version 2.5 + +_Version 2.5 (Released 22 October 2015)_ + +* Changed license conditions to Mozilla Public License, v. 2.0. +* Fixed `bdShortMult` to catch empty `u` parameter. +* Fixed `bdPrintBits` to print "0" if bit length is zero. +* Changed comparison functions to be constant-time by default. Retained the old, quicker functions as `_q` variants. + * `mpEqual` `bdIsEqual` `mpEqual_q` `bdIsEqual_q` + * `mpIsZero` `bdIsZero` `mpIsZero_q` `bdIsZero_q` + * `mpCompare` `bdCompare` `mpCompare_q` `bdCompare_q` +* Added constant-time modular exponentiation functions `bdModExp_ct` and `mpModExp_ct`. +* Added `mpPrintDecimalSigned` function to display negative numbers ("**mp**" only). + + +## Changes in Version 2.4 + +_Version 2.4 (Released 27 April 2013)_ + +* Added markup for Doxygen documentation to produce a manual in CHM and HTML formats. +* Updated the "pretty-good" internal RNG functions in `bigdRand` and `bigdigitsRand` to improve the seeding of the ANSI X9.31 PRNG algorithm. +* Fixed the `NO_ALLOCS` option so it does not use malloc with the `mpConv` functions (thanks to Kevin Kramb for pointing this out). +* Added the new functions `bdRandomOctets`, `bdRandomNumber` and `bdQuickRandBits`, which do various contortions you might want to do with random numbers. +* Updated the test source code modules. + + +## Changes in Version 2.3 + +_Version 2.3 (Released 11 November 2011)_ + +* Added new functions to compute the integer cube root: `bdCubeRoot` and `mpCubeRoot`. +* Updated and improved the integer square root functions: `bdSqrt` and `mpSqrt`. +* Added the more useful print functions with an optional prefix and suffix: + * `bdPrintHex` prints a bigdigit number in hex format. + * `bdPrintDecimal` prints a bigdigit number in decimal format.and the equivalent mp functions `mpPrintHex` and `mpPrintDecimal`. +* Added the new function `bdPower` to compute the n-th power of a number `y = g^n`. Use this with caution as you can quickly run out of memory. It's meant for small exponents like n=3. +* Improved the efficiency of the greatest common divisor functions, `bdGcd` and `mpGcd`. +* Fixed the bug in `mpChs` (thanks to Valery Blazhnov). +* Fixed the bug in `mpAlloc` which would fail if you called `bdSetDigit(b, 0)` (thanks to "Radistao"). + + +## Changes in Version 2.2 + +_Version 2.2 (Released 31 July 2008)_ + +* Added sliding-window exponentiation to speed up the ModExp functions. +* Added new bd functions: + * `bdJacobi` computes the Jacobi (Legendre) symbol. + * `bdGetBit` returns the value of a bit at a given position in a number. + * `bdSetBit` sets the bit at a given position in a number. + * `bdNotBits` computes bitwise a = NOT a. +* Added the new functions `mpIsNegative`, `mpChs` and `mpAbs` in anticipation of adding full signed integer functionality in a later version. +* Added the `NO_ALLOCS` option to compile the "mp" library without using any memory allocation. +* Added the `USE_64WITH32` option to use the 64-bit integer types (`long long`) if available on a 32-bit machine. +* Improved the zeroisation and destroy macros. +* Moved the type declarations for the exact-width types to a separate include file. +* Re-organised and re-named the ancillary source and include files (yet again!). +* Deprecated the `bd*Ex` functions in favour of re-named "safe" `bd*_s` functions. + + +## Changes in Version 2.1 + +_Version 2.1 (Released 23 August 2006)_ + +* Added support for 64-bit compilers. +* Added fudge so opaque pointers will work with C++ compilers. +* Added new functions: + * `bdSqrt` computes the `integer' square root, s = floor(sqrt(x)). + * `bdModPowerOf2` computes a = a (mod 2^L). + * `bdXorBits` computes bitwise a = b XOR c. + * `bdOrBits` computes bitwise a = b OR c. + * `bdAndBits` computes bitwise a = b AND c. + * `bdVersion` returns version number as an integer = major*1000+minor*100+release*10+uses_asm(0|1). + * `bdRandomBits` generates a random BIGD number up to n bits long (i.e. r = [0, 2^n]) using the internal RNG. +* Removed the shift limit on `bdShiftLeft` and `bdShiftRight`. This was previously limited to a maximum of 32 bits. It will now shift by any value - well, any value up to `SIZE_MAX`. +* Re-organised the source and include files for the internal random number generator functions to avoid having to include the `spRandom` modules when they are not needed. +* Fixed up inconsistencies in the documentation for the `bdConv*` functions. +* Made minor change to `mpIsPrime` to comply with ANSI X.42-2003 Annex F.1.1 "Range of bases in Miller-Rabin test". +* Made minor improvements to the `spBetterRand` function. +* Fixed bugs in `bdConvertHex`, `bdGetBit` and `bdSetBit`. +* Made various minor changes in the code to avoid warning messages when compiling with the `-Wall -pedantic` options. diff --git a/fsbl/lib/BigDigits/LICENSE.txt b/fsbl/lib/BigDigits/LICENSE.txt new file mode 100644 index 000000000..14e2f777f --- /dev/null +++ b/fsbl/lib/BigDigits/LICENSE.txt @@ -0,0 +1,373 @@ +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/fsbl/lib/BigDigits/Makefile b/fsbl/lib/BigDigits/Makefile new file mode 100644 index 000000000..26ccca4d0 --- /dev/null +++ b/fsbl/lib/BigDigits/Makefile @@ -0,0 +1,74 @@ +# Linux/Cygwin gcc Makefile for bigdigits tests +# $Date: 2015-10-21 20:07:00 $ +# $Revision: 2.5.0 $ +# $Author: dai $ +# + +OBJECTS= bigd.o bigdigits.o bigdigitsRand.o bigdRand.o +INCLUDES= bigd.h bigdigits.h bigdtypes.h bigdRand.h bigdigitsRand.h +CFLAGS= -std=c99 -pedantic -Wall -Wpointer-arith -Wstrict-prototypes -Wno-format -O2 +CC= gcc + +%.o: %.c $(INCLUDES) + $(CC) $(CFLAGS) -c $< + +# bigd "bd" tests + +t_bdTest: t_bdTest.o $(INCLUDES) $(OBJECTS) + $(CC) $(CFLAGS) -o $@ $@.o $(OBJECTS) $(LDFLAGS) + +t_bdSimple: t_bdSimple.o $(INCLUDES) $(OBJECTS) + $(CC) $(CFLAGS) -o $@ $@.o $(OBJECTS) $(LDFLAGS) + +t_bdRSA: t_bdRSA.o $(INCLUDES) $(OBJECTS) + $(CC) $(CFLAGS) -o $@ $@.o $(OBJECTS) $(LDFLAGS) + +t_bdRSA1: t_bdRSA1.o $(INCLUDES) $(OBJECTS) + $(CC) $(CFLAGS) -o $@ $@.o $(OBJECTS) $(LDFLAGS) + +t_bdDSA: t_bdDSA.o $(INCLUDES) $(OBJECTS) + $(CC) $(CFLAGS) -o $@ $@.o $(OBJECTS) $(LDFLAGS) + +t_bdRDSA: t_bdRDSA.o $(INCLUDES) $(OBJECTS) + $(CC) $(CFLAGS) -o $@ $@.o $(OBJECTS) $(LDFLAGS) + +t_bdRsaCrack: t_bdRsaCrack.o $(INCLUDES) $(OBJECTS) + $(CC) $(CFLAGS) -o $@ $@.o $(OBJECTS) $(LDFLAGS) + +t_bdRsaFactorN: t_bdRsaFactorN.o $(INCLUDES) $(OBJECTS) + $(CC) $(CFLAGS) -o $@ $@.o $(OBJECTS) $(LDFLAGS) + +t_bdRandomOctets: t_bdRandomOctets.o $(INCLUDES) $(OBJECTS) + $(CC) $(CFLAGS) -o $@ $@.o $(OBJECTS) $(LDFLAGS) -lm + +t_bdQuickRandBits: t_bdQuickRandBits.o $(INCLUDES) $(OBJECTS) + $(CC) $(CFLAGS) -o $@ $@.o $(OBJECTS) $(LDFLAGS) + +t_bdRSA_blinded: t_bdRSA_blinded.o $(INCLUDES) $(OBJECTS) + $(CC) $(CFLAGS) -o $@ $@.o $(OBJECTS) $(LDFLAGS) + +# bigdigits "mp" tests + +t_mpTest: t_mpTest.o $(INCLUDES) $(OBJECTS) + $(CC) $(CFLAGS) -o $@ $@.o $(OBJECTS) $(LDFLAGS) + +t_mpRSA508: t_mpRSA508.o $(INCLUDES) $(OBJECTS) + $(CC) $(CFLAGS) -o $@ $@.o $(OBJECTS) $(LDFLAGS) + +t_mpJacobi: t_mpJacobi.o $(INCLUDES) $(OBJECTS) + $(CC) $(CFLAGS) -o $@ $@.o $(OBJECTS) $(LDFLAGS) + + +# extra "sp" function tests + +t_spExtras: t_spExtras.o spExtras.o + $(CC) $(CFLAGS) -o $@ $@.o spExtras.o $(OBJECTS) $(LDFLAGS) + +spExtras.o: spExtras.c spExtras.h $(INCLUDES) + +# Call functions from a C++ program +t_bdCPP: t_bdCPP.o $(INCLUDES) $(OBJECTS) + g++ $(CFLAGS) -o $@ $@.o $(OBJECTS) $(LDFLAGS) + +clean: + -rm -f *.o diff --git a/fsbl/lib/BigDigits/README.txt b/fsbl/lib/BigDigits/README.txt new file mode 100644 index 000000000..9a328045c --- /dev/null +++ b/fsbl/lib/BigDigits/README.txt @@ -0,0 +1,57 @@ +BIGDIGITS LIBRARY + +Version 2.6.1 Released 2016-03-31. + +Core Source Code Files +---------------------- +bigd.c +bigd.h +bigdigits.c +bigdigits.h +bigdtypes.h + +Use these for "pretty-good" random number routines +-------------------------------------------------- +bigdRand.c +bigdRand.h +bigdigitsRand.c +bigdigitsRand.h + +Additional Source Code Files +---------------------------- +spExtras.c +spExtras.h + +Test Source Code Files +---------------------- +t_bdDSA.c +t_bdQuickRandBits.c +t_bdRandomOctets.c +t_bdRDSA.c +t_bdRSA.c +t_bdRSA1.c +t_bdRsaCrack.c +t_bdRsaFactorN.c +t_bdSimple.c +t_bdTest.c +t_mpJacobi.c +t_mpRSA508.c +t_mpTest.c +t_spExtras.c +t_bdCPP.cpp +t_bdRSA_blinded.c +t_mpModArith.c + +Manual +------ +BigDigits.chm + +For more details on how to compile and so forth, see + + +For the online manual, see + + +Please read the copyright notice and licence conditions in +LICENCE.txt. + diff --git a/fsbl/lib/BigDigits/bigd.c b/fsbl/lib/BigDigits/bigd.c new file mode 100644 index 000000000..6d777c8d5 --- /dev/null +++ b/fsbl/lib/BigDigits/bigd.c @@ -0,0 +1,1563 @@ +/* $Id: bigd.c $ */ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-16 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2016-03-31 09:51:00 $ + * $Revision: 2.6.1 $ + * $Author: dai $ + */ + +/* BIGD "bd" wrapper functions around BigDigits "mp" functions */ + +#include +#include +#include +#include +#include +#include "bigd.h" +#include "bigdigits.h" + +/* Required for opaque pointers */ +#define T BIGD +struct T +{ + DIGIT_T *digits; /* Ptr to array of digits, least sig. first */ + size_t ndigits; /* No of non-zero significant digits */ + size_t maxdigits; /* Max size allocated */ + /*int is_signed;*/ /* (for future use) */ +}; + +#define OCTETS_PER_DIGIT (sizeof(bdigit_t)) + +/* +All these functions MUST make sure that there are always +enough digits before doing anything, and SHOULD reset +afterwards to reflect the final significant size. +-- is the size allocated (at least one). +-- may be zero. +-- may be too long if MS digits compute to zero so + consider it an upper bound on significant digits, not gospel. + +It is an error to pass a NULL BIGD parameter except to bdFree. +*/ + +#ifdef _DEBUG +static int debug = 0; /* <= change this to > 0 for console debugging */ +#else +static int debug = 0; /* <= ALWAYS ZERO */ +#endif + +/* Useful definitions */ +#ifndef FALSE +#define FALSE 0 +#endif +#ifndef TRUE +#define TRUE 1 +#endif +#ifndef max +#define max(a,b) (((a) > (b)) ? (a) : (b)) +#endif +#ifndef min +#define min(a,b) (((a) < (b)) ? (a) : (b)) +#endif + + +T bdNew(void) +{ + struct T *p; + p = calloc(1, (long)sizeof(*p)); + if (!p) + { + mpFail("bdNew: Failed to calloc memory."); + } + copyright_notice(); + /* set up with single zero digit */ + p->digits = mpAlloc(1); + p->digits[0] = 0; + p->ndigits = 0; + p->maxdigits = 1; + //p->sign = 0; + return p; +} + +void bdFree(T *p) +/* Zeroise and free memory. Set ptr to NULL. */ +{ + T bd = *p; + if (*p) + { + /* Zeroise them all, just in case */ + if (bd->digits) + { + mpSetZero(bd->digits, bd->maxdigits); + free(bd->digits); + } + bd->maxdigits = 0; + bd->ndigits = 0; + free(*p); + } + *p = NULL; +} + +static int bd_resize(T b, size_t newsize) +{ +/* +Internal fn to re-size a BIGD structure before a calc. +Use carefully! +1. If growing, it allocs more digits and increases maxdigits +2. If shrinking, it decreases ndigits and zeroises the excess. +3. It does not increase b->ndigits; that's up to you later. +4. It does not release excess digits; use bdFree. + +In other words, it's like middle-aged spread: +you go from a 32" waist to a 38 but can never go backwards. + +Be careful doing the following:- + n = new_size_we_expect; + bd_resize(b, n); + mpFunctionOfSorts(b->digits, n); + b->ndigits = mpSizeof(b->digits, b->ndigits); // NO! + +b->ndigits may be set too short + +Better: + n = new_size_we_expect; + bd_resize(b, n); + mpFunctionOfSorts(b->digits, n); + b->ndigits = mpSizeof(b->digits, n); // Yes. + +*/ + + size_t i; + + /* Check just in case NULL */ + assert(b); + assert(b->digits); + + /* If we are shrinking, clear high digits */ + if (newsize < b->ndigits) + { + for (i = newsize; i < b->ndigits; i++) + b->digits[i] = 0; + b->ndigits = newsize; + return 0; + } + + /* We need more room */ + if (b->maxdigits < newsize) + { + DIGIT_T *newp, *oldp; + size_t oldsize = b->maxdigits; + /* Increase size of digit array */ + //b->digits = (DIGIT_T *)realloc(b->digits, newsize * sizeof(DIGIT_T)); + /* -- [v2.2] changed [2008-03-30] to avoid realloc */ + newp = (DIGIT_T *)malloc(newsize * sizeof(DIGIT_T)); + oldp = b->digits; + + /* Check for failure */ + if (!newp) + { + mpSetZero(oldp, oldsize); + free(oldp); + mpFail("bd_resize: Failed to realloc memory."); + } + + memcpy(newp, oldp, oldsize * sizeof(DIGIT_T)); + mpSetZero(oldp, oldsize); + free(oldp); + b->digits = newp; + + b->maxdigits = newsize; /* Remember new allocated size */ + } + + /* Make sure new digits are zero */ + for (i = b->ndigits; i < newsize; i++) + b->digits[i] = 0; + + return 0; +} + +/* New in [v2.6]: A more compact way to allocate and free BIGD variables */ + +void bdNewVars(BIGD *pb1, ...) +{ + BIGD *pbd; + va_list ap; + + va_start(ap, pb1); + while ((pbd = va_arg(ap, BIGD*))) { + *pbd = bdNew(); + } + va_end(ap); + /* Deal with the first argument */ + *pb1 = bdNew(); +} + +void bdFreeVars(BIGD *pb1, ...) +{ + BIGD *pbd; + va_list ap; + + /* NB the stdarg macros do not permit programmers to code a function with no fixed arguments + * So this skips the first argument */ + va_start(ap, pb1); + while ((pbd = va_arg(ap, BIGD*))) { + bdFree(pbd); + } + va_end(ap); + /* Deal with the first argument */ + bdFree(pb1); +} + +size_t bdConvFromOctets(T b, const unsigned char *c, size_t nbytes) +/* Converts nbytes octets into big digit b, resizing if necessary */ +{ + size_t ndigits, n; + + assert(b); + ndigits = (nbytes + OCTETS_PER_DIGIT - 1) / OCTETS_PER_DIGIT; + + bd_resize(b, ndigits); + + n = mpConvFromOctets(b->digits, ndigits, c, nbytes); + b->ndigits = mpSizeof(b->digits, n); + + return n; +} + +size_t bdConvToOctets(T b, unsigned char *c, size_t nbytes) +/* Convert big digit b into string of octets, in big-endian order, + padding to nbytes or truncating if necessary. + Returns # significant bytes. + If c is NULL or nbytes == 0 then just return required size. +*/ +{ + size_t noctets, nbits, n; + + assert(b); + + nbits = mpBitLength(b->digits, b->ndigits); + noctets = (nbits + 7) / 8; + /* [2008-05-23] always return at least 1 */ + if (0 == noctets) noctets = 1; + + if (!c || 0 == nbytes) + { + return noctets; + } + + n = mpConvToOctets(b->digits, b->ndigits, c, nbytes); + + return n; +} + +size_t bdConvFromHex(T b, const char *s) +/* Converts a hex string into big digit b */ +{ + size_t ndigits, n; + + assert(b); + + /* Revision [2006-02-21] */ + /* EDIT: ndigits = (strlen(s) / 2 + OCTETS_PER_DIGIT - 1) / OCTETS_PER_DIGIT; */ + ndigits = ((strlen(s) + 1) / 2 + OCTETS_PER_DIGIT - 1) / OCTETS_PER_DIGIT; + bd_resize(b, ndigits); + + n = mpConvFromHex(b->digits, ndigits, s); + b->ndigits = mpSizeof(b->digits, n); + + return n; +} + +size_t bdConvToHex(T b, char *s, size_t smax) +{ + assert(b); + return mpConvToHex(b->digits, b->ndigits, s, smax); +} + +size_t bdConvFromDecimal(BIGD b, const char *s) +{ + size_t ndigits, n; + + assert(b); + /* approx size but never too small */ + ndigits = (strlen(s) / 2 + OCTETS_PER_DIGIT) / OCTETS_PER_DIGIT; + bd_resize(b, ndigits); + + n = mpConvFromDecimal(b->digits, ndigits, s); + b->ndigits = n; + + return n; +} + +size_t bdConvToDecimal(BIGD b, char *s, size_t smax) +{ + assert(b); + return mpConvToDecimal(b->digits, b->ndigits, s, smax); +} + +int bdSetShort(T b, bdigit_t value) + /* Converts value into a (single-digit) big digit b */ +{ + assert(b); + bd_resize(b, 1); + b->digits[0] = (DIGIT_T)value; + b->ndigits = (value ? 1 : 0); + return 0; +} + +/** Returns the least significant digit in b */ +bdigit_t bdToShort(T b) +{ + assert(b); + return mpToShort(b->digits, b->ndigits); +} + + +size_t bdBitLength(T b) + /* Returns base-1 index to most significant bit in b */ +{ + assert(b); + return mpBitLength(b->digits, b->ndigits); +} + +size_t bdSizeof(T b) + /* Returns number of significant non-zero bytes in b */ +{ + assert(b); + return mpSizeof(b->digits, b->ndigits); +} + + +/* Print function for bigdigit_t structures [OBSOLETE] */ +void bdPrint(T p, size_t flags) +{ + size_t n; + + assert(p); + n = p->ndigits; + if (n == 0) { + bdSetZero(p); // Added [v2.6] + n = 1; + } + + if (flags & BD_PRINT_TRIM) /* Trim leading zeroes */ + { + if (flags & BD_PRINT_NL) /* add newlines */ + mpPrintTrimNL(p->digits, n); + else + mpPrintTrim(p->digits, n); + } + else + { + if (flags & BD_PRINT_NL) /* add newlines */ + mpPrintNL(p->digits, n); + else + mpPrint(p->digits, n); + } +} + +void bdPrintHex(const char *prefix, T p, const char *suffix) +{ + size_t n; + + assert(p); + n = p->ndigits; + if (n == 0) { + bdSetZero(p); // Added [v2.6] + n = 1; + } + mpPrintHex(prefix, p->digits, n, suffix); +} + +void bdPrintDecimal(const char *prefix, T p, const char *suffix) +{ + size_t n; + + assert(p); + n = p->ndigits; + if (n == 0) { + bdSetZero(p); // Added [v2.6] + n = 1; + } + mpPrintDecimal(prefix, p->digits, n, suffix); +} + +void bdPrintBits(const char *prefix, T p, const char *suffix) +{ + size_t n; + + assert(p); + n = p->ndigits; + if (n == 0) { + bdSetZero(p); // Added [v2.6] + n = 1; + } + mpPrintBits(prefix, p->digits, n, suffix); +} + +/** Returns true if a == 0, else false */ +int bdIsZero(T a) +{ + assert(a); + return mpIsZero(a->digits, a->ndigits); +} + +int bdIsZero_ct(T a) +{ + assert(a); + /* [v2.6] Use constant-time fn */ + return mpIsZero_ct(a->digits, a->ndigits); +} + +/** Returns true if a == b, else false */ +static int isequal_local(T a, T b, int ct) +{ + size_t n, na, nb; + + assert(a && b); + if (a->ndigits != b->ndigits) { + na = mpSizeof(a->digits, a->ndigits); + nb = mpSizeof(b->digits, b->ndigits); + + if (na != nb) + return FALSE; + if (na == 0 && nb == 0) + return TRUE; + n = na; + } else { + n = a->ndigits; + } + + /* [v2.5] Use constant-time fn if equal length */ + /* [v2.6] ... only if _ct function is called */ + if (ct) + return mpEqual_ct(a->digits, b->digits, n); + else + return mpEqual(a->digits, b->digits, n); +} + +/** Returns true if a == b, else false */ +int bdIsEqual(T a, T b) +{ + return isequal_local(a, b, 0); +} +int bdIsEqual_ct(T a, T b) +{ + return isequal_local(a, b, 1); +} + +/** Returns sign of (a-b) */ +static int compare_local(T a, T b, int ct) +{ + size_t n, na, nb; + + assert(a && b); + if (a->ndigits != b->ndigits) { + na = mpSizeof(a->digits, a->ndigits); + nb = mpSizeof(b->digits, b->ndigits); + if (na > nb) return 1; + if (na < nb) return -1; + n = na; + } else { + n = a->ndigits; + } + + /* [v2.5] Use constant-time fn if equal length */ + /* [v2.6] ... only if _ct function is called */ + if (ct) + return mpCompare_ct(a->digits, b->digits, n); + else + return mpCompare(a->digits, b->digits, n); + +} + +/** Returns sign of (a-b) */ +int bdCompare(T a, T b) +{ + return compare_local(a, b, 0); +} +int bdCompare_ct(T a, T b) +{ + return compare_local(a, b, 0); +} + +/** Returns sign of (a-d) */ +int bdShortCmp(T a, bdigit_t d) +{ + assert(a); + return mpShortCmp(a->digits, d, a->ndigits); +} + +/** Returns true if a == d, else false, where d is a single digit */ +int bdShortIsEqual(BIGD a, bdigit_t d) +{ + assert(a); + return mpShortIsEqual(a->digits, d, a->ndigits); +} + +int bdIsEven(T a) +{ + assert(a); + return ISEVEN(a->digits[0]); +} + +int bdIsOdd(T a) +{ + assert(a); + return ISODD(a->digits[0]); +} + + +int bdSetEqual(T a, T b) + /* Sets a = b */ +{ + assert(a && b); + bd_resize(a, b->ndigits); + mpSetEqual(a->digits, b->digits, b->ndigits); + a->ndigits = b->ndigits; + return 0; +} + +int bdSetZero(T a) + /* Sets a = 0 */ +{ + assert(a); + /* [v2.6] changed a->ndigits to a->maxdigits to make sure we clear any residual */ + mpSetZero(a->digits, a->maxdigits); + a->ndigits = 0; + return 0; +} + +int bdShortAdd(T w, T u, bdigit_t d) + /* Compute w = u + d, + returns 1 if we had a carry */ +{ + DIGIT_T carry; + size_t dig_size = max(u->ndigits, 1); + + assert(w && u); + bd_resize(w, dig_size + 1); + + carry = mpShortAdd(w->digits, u->digits, d, dig_size); + + /* Cope with overflow */ + if (carry) + { + w->digits[dig_size] = carry; + w->ndigits = dig_size + 1; + } + else + w->ndigits = dig_size; + + return carry; +} + +int bdAdd(T w, T u, T v) + /* Compute w = u + v, w#v */ +{ + size_t dig_size; + DIGIT_T carry; + + assert(w && u && v); + /* Check for cheaper option */ + if (v->ndigits == 1) + return bdShortAdd(w, u, v->digits[0]); + + /* Make sure u and v are the same size */ + dig_size = max(u->ndigits, v->ndigits); + bd_resize(v, dig_size); + bd_resize(u, dig_size); + /* Now make sure w is big enough for sum (incl carry) */ + bd_resize(w, dig_size + 1); + + /* Finally, do the business */ + carry = mpAdd(w->digits, u->digits, v->digits, dig_size); + + /* Make sure we've set the right size for w */ + if (carry) + { + w->digits[dig_size] = carry; + w->ndigits = dig_size + 1; + } + else + w->ndigits = mpSizeof(w->digits, dig_size); + + return carry; +} + +int bdAdd_s(T w, T u, T v) + /* Compute w = u + v (safe) */ +{ + DIGIT_T carry; + T ww; + + assert(w && u && v); + /* Use temp */ + ww = bdNew(); + bdSetEqual(ww, w); + + carry = bdAdd(ww, u, v); + + bdSetEqual(w, ww); + bdFree(&ww); + + return carry; +} + +int bdShortSub(T w, T u, bdigit_t d) + /* Compute w = u - d, return borrow */ +{ + DIGIT_T borrow; + size_t dig_size = max(u->ndigits, 1); + + assert(w && u); + bd_resize(w, dig_size); + + borrow = mpShortSub(w->digits, u->digits, d, dig_size); + + w->ndigits = dig_size; + + return borrow; +} + +int bdSubtract(T w, T u, T v) + /* Compute w = u - v, return borrow, w#v */ +{ + size_t dig_size; + DIGIT_T borrow; + + assert(w && u && v); + /* Check for cheaper option */ + if (v->ndigits == 1) + return bdShortSub(w, u, v->digits[0]); + + /* Make sure u and v are the same size */ + dig_size = max(u->ndigits, v->ndigits); + bd_resize(v, dig_size); + bd_resize(u, dig_size); + bd_resize(w, dig_size); + + /* Finally, do the business */ + borrow = mpSubtract(w->digits, u->digits, v->digits, dig_size); + + /* Make sure we've set the right size for w */ + w->ndigits = mpSizeof(w->digits, dig_size); + + return borrow; +} + +int bdSubtract_s(T w, T u, T v) + /* Compute w = u - v (safe) */ +{ + DIGIT_T carry; + T ww; + + assert(w && u && v); + /* Use temp */ + ww = bdNew(); + bdSetEqual(ww, w); + + carry = bdSubtract(ww, u, v); + + bdSetEqual(w, ww); + bdFree(&ww); + + return carry; +} + +int bdIncrement(T a) + /* Sets a = a + 1, returns carry */ +{ + assert(a); + return bdShortAdd(a, a, 1); +} + +int bdDecrement(T a) + /* Sets a = a - 1, returns borrow */ +{ + assert(a); + return bdShortSub(a, a, 1); +} + +int bdShortMult(T w, T u, bdigit_t d) + /* Compute w = u * d */ +{ + DIGIT_T overflow; + size_t dig_size = u->ndigits; + + assert(w && u); + /***************************************************/ + // [2013-06-05]: catch empty u; make sure w is empty + if (dig_size == 0 || d == 0) + { /* u == 0 */ + bd_resize(w, 0); + return 0; + } + /***************************************************/ + bd_resize(w, dig_size+1); + + overflow = mpShortMult(w->digits, u->digits, d, dig_size); + + /* Cope with overflow */ + if (overflow) + { + w->digits[dig_size] = overflow; + w->ndigits = dig_size + 1; + } + else + w->ndigits = mpSizeof(w->digits, dig_size); + + return 0; +} + +int bdMultiply(T w, T u, T v) + /* Compute w = u * v + -- no overlap permitted + */ +{ + size_t dig_size; + + assert(w && u && v); + /* Check for cheaper option */ + if (v->ndigits == 1) + return bdShortMult(w, u, v->digits[0]); + + /* Make sure u and v are the same size */ + dig_size = max(u->ndigits, v->ndigits); + bd_resize(v, dig_size); + bd_resize(u, dig_size); + /* Now make sure w is big enough for product */ + bd_resize(w, 2 * dig_size); + + /* Finally, do the business */ + mpMultiply(w->digits, u->digits, v->digits, dig_size); + + /* Make sure we've set the right size for w */ + w->ndigits = mpSizeof(w->digits, 2 * dig_size); + + return 0; +} + +int bdMultiply_s(T w, T u, T v) + /* Compute w = u * v (safe) */ +{ + T ww; + + assert(w && u && v); + /* Use temp */ + ww = bdNew(); + bdSetEqual(ww, w); + + bdMultiply(ww, u, v); + + bdSetEqual(w, ww); + bdFree(&ww); + + return 0; +} + +int bdSquare(T w, T x) + /* Computes w = x^2, w#x */ +{ + size_t dig_size; + + assert(w && x); + + dig_size = max(x->ndigits, 1); + /* Make sure w is big enough for product */ + bd_resize(w, 2 * dig_size); + + /* Finally, do the business */ + mpSquare(w->digits, x->digits, dig_size); + + /* Make sure we've set the right size for w */ + w->ndigits = mpSizeof(w->digits, 2 * dig_size); + + return 0; +} + +int bdSquare_s(T w, T x) + /* Compute w = x^2 (safe) */ +{ + T ww; + + assert(w && x); + /* Use temp */ + ww = bdNew(); + bdSetEqual(ww, w); + + bdSquare(ww, x); + + bdSetEqual(w, ww); + bdFree(&ww); + + return 0; +} + +int bdPower(BIGD y, BIGD g, unsigned short int n) +/* Computes y = g^n (up to available memory!) */ +{ + BIGD z; + z = bdNew(); + /* Use Right-Left Binary */ + /* 1. Set y <-- 1, z <-- g */ + bdSetShort(y, 1); + bdSetEqual(z, g); + /* If n = 0, output y and stop */ + while (n > 0) + { + /* 2. If n is odd, set y <-- z.y */ + if (n & 0x1) + bdMultiply_s(y, z, y); + /* 3. Set n <-- [n/2]. If n = 0, output y and stop */ + n >>= 1; + if (n > 0) + /* 3b. Otherwise set z <-- z.z and go to step 2 */ + bdSquare_s(z, z); + } + bdFree(&z); + /* Result is in y */ + return 0; +} + +int bdSqrt(BIGD s, BIGD x) + /* Computes integer square root s = floor(sqrt(x)) */ +{ + size_t dig_size; + int r; + + assert(s && x); + dig_size = x->ndigits; + bd_resize(s, dig_size); + r = mpSqrt(s->digits, x->digits, dig_size); + s->ndigits = mpSizeof(s->digits, dig_size); + + return r; +} + +int bdCubeRoot(BIGD s, BIGD x) + /* Computes integer cube root s = floor(cuberoot(x)) */ +{ + size_t dig_size; + int r; + + assert(s && x); + dig_size = x->ndigits; + bd_resize(s, dig_size); + r = mpCubeRoot(s->digits, x->digits, dig_size); + s->ndigits = mpSizeof(s->digits, dig_size); + + return r; +} + +int bdShortDiv(T q, T r, T u, bdigit_t d) + /* Computes quotient q = u / d and remainder r = u mod d */ +{ + DIGIT_T rem; + size_t dig_size; + + assert(q && r && u); + dig_size = u->ndigits; + bd_resize(q, dig_size); + + rem = mpShortDiv(q->digits, u->digits, d, dig_size); + bdSetShort(r, rem); + + q->ndigits = mpSizeof(q->digits, dig_size); + + return 0; +} + +int bdDivide(T q, T r, T u, T v) + /* Computes quotient q = u / v and remainder r = u mod v + trashes q and r first + */ +{ + size_t dig_size; + + assert(q && r && u && v); + dig_size = u->ndigits; + bd_resize(q, dig_size); + bd_resize(r, dig_size); + + /* Do the business */ + mpDivide(q->digits, r->digits, u->digits, dig_size, v->digits, v->ndigits); + + /* Set final sizes */ + q->ndigits = mpSizeof(q->digits, dig_size); + r->ndigits = mpSizeof(r->digits, dig_size); + + return 0; +} + +int bdDivide_s(T q, T r, T u, T v) + /* Computes quotient q = u / v and remainder r = u mod v (safe) */ +{ + size_t dig_size; + BIGD qq, rr; + + assert(q && r && u && v); + /* Use temps because mpDivide trashes q and r */ + qq = bdNew(); + rr = bdNew(); + + dig_size = u->ndigits; + bd_resize(qq, dig_size); + bd_resize(rr, dig_size); + + /* Do the business */ + mpDivide(qq->digits, rr->digits, u->digits, dig_size, v->digits, v->ndigits); + + /* Copy temps */ + qq->ndigits = dig_size; + rr->ndigits = dig_size; + bdSetEqual(q, qq); + bdSetEqual(r, rr); + + /* Set final sizes */ + q->ndigits = mpSizeof(q->digits, dig_size); + r->ndigits = mpSizeof(r->digits, dig_size); + + /* Free temps */ + bdFree(&qq); + bdFree(&rr); + + return 0; +} + +bdigit_t bdShortMod(T r, T u, bdigit_t d) + /* Returns r = u mod d */ +{ + DIGIT_T rr; + + assert(r && u); + rr = mpShortMod(u->digits, d, u->ndigits); + bdSetShort(r, rr); + + return rr; +} + +int bdModulo(T r, T u, T v) + /* Computes r = u mod v, r#u */ +{ + size_t nr; + + assert(r && u && v); + + /* NB r is only vdigits long at most */ + nr = v->ndigits; + bd_resize(r, nr); + + /* Do the business */ + mpModulo(r->digits, u->digits, u->ndigits, v->digits, v->ndigits); + + /* Set final size */ + r->ndigits = mpSizeof(r->digits, nr); + + return 0; +} + +int bdModulo_s(T r, T u, T v) + /* Computes r = u mod v (safe) */ +{ + T rr; + + assert(r && u && v); + /* Use temp */ + rr = bdNew(); + bdSetEqual(rr, r); + + bdModulo(rr, u, v); + + bdSetEqual(r, rr); + bdFree(&rr); + + return 0; +} + +int bdSetBit(T a, size_t ibit, int value) +/* Set bit ibit (0..nbits-1) with value 1 or 0 + -- increases size if a too small but does not shrink */ +{ + size_t idigit; + + assert(a); + /* Which digit? (0-based) */ + idigit = ibit / BITS_PER_DIGIT; + /* Check size */ + /* [EDIT v2.1:] change a->maxdigits to a->ndigits */ + if (idigit >= a->ndigits) + { + bd_resize(a, idigit+1); + a->ndigits = idigit+1; + } + + /* [v2.2] use mp function */ + mpSetBit(a->digits, a->ndigits, ibit, value); + + /* Set the right size */ + a->ndigits = mpSizeof(a->digits, a->ndigits); + + return 0; +} + +int bdGetBit(T a, size_t ibit) +/* Returns value 1 or 0 of bit ibit (0..nbits-1) */ +{ + size_t idigit; + + assert(a); + /* Which digit? (0-based) */ + idigit = ibit / BITS_PER_DIGIT; + /* Check size */ + if (idigit >= a->maxdigits) + return 0; + + /* [v2.2] use mp function */ + return mpGetBit(a->digits, a->ndigits, ibit); +} + +void bdShiftLeft(T a, T b, size_t s) + /* Computes a = b << s */ +{ + /* Increases the size of a if necessary. */ + /* [v2.1.0] modified to allow any size of shift */ + + size_t dig_size = b->ndigits; + + assert(a && b); + + if (s >= BITS_PER_DIGIT) + dig_size += (s / BITS_PER_DIGIT); + + /* Assume overflow */ + dig_size++; + /* Make sure both big enough */ + bd_resize(a, dig_size); + bd_resize(b, dig_size); + + /* Set the final size */ + mpShiftLeft(a->digits, b->digits, s, dig_size); + + a->ndigits = mpSizeof(a->digits, dig_size); + +} + +void bdShiftRight(T a, T b, size_t n) + /* Computes a = b >> n */ +{ + /* Throws away shifted bits */ + /* [v2.1.0] modified to allow any size of shift */ + + size_t dig_size = b->ndigits; + + assert(a && b); + + bd_resize(a, dig_size); + mpShiftRight(a->digits, b->digits, n, dig_size); + + /* Set the final size */ + a->ndigits = mpSizeof(a->digits, dig_size); + +} + +void bdXorBits(T a, T b, T c) + /* Computes bitwise operation a = b XOR c */ +{ + size_t n; + + assert(a && b && c); + /* Make sure all variables are the same size */ + n = max(b->ndigits, c->ndigits); + + bd_resize(a, n); + bd_resize(b, n); + bd_resize(c, n); + + /* Do the business */ + mpXorBits(a->digits, b->digits, c->digits, n); + + /* Set the final size */ + a->ndigits = mpSizeof(a->digits, n); + +} + +void bdOrBits(T a, T b, T c) + /* Computes bitwise operation a = b OR c */ +{ + size_t n; + + assert(a && b && c); + /* Make sure all variables are the same size */ + n = max(b->ndigits, c->ndigits); + + bd_resize(a, n); + bd_resize(b, n); + bd_resize(c, n); + + /* Do the business */ + mpOrBits(a->digits, b->digits, c->digits, n); + + /* Set the final size */ + a->ndigits = mpSizeof(a->digits, n); + +} + +void bdAndBits(T a, T b, T c) + /* Computes bitwise operation a = b AND c */ +{ + size_t n; + + assert(a && b && c); + /* Make sure all variables are the same size */ + n = max(b->ndigits, c->ndigits); + + bd_resize(a, n); + bd_resize(b, n); + bd_resize(c, n); + + /* Do the business */ + mpAndBits(a->digits, b->digits, c->digits, n); + + /* Set the final size */ + a->ndigits = mpSizeof(a->digits, n); +} + +void bdNotBits(BIGD a, BIGD b) + /* Computes bitwise a = NOT b */ +{ + size_t n; + + assert(a && b); + /* Make sure all variables are the same size */ + n = b->ndigits; + + bd_resize(a, n); + + /* Do the business */ + mpNotBits(a->digits, b->digits, n); + + /* Set the final size */ + a->ndigits = mpSizeof(a->digits, n); +} + +void bdModPowerOf2(BIGD a, size_t L) + /* Computes a = a mod 2^L */ +{ + size_t n; + + assert(a); + n = a->ndigits; + + /* Do the business */ + mpModPowerOf2(a->digits, n, L); + + /* Set the final size */ + a->ndigits = mpSizeof(a->digits, n); +} + +/** Compute y = x^e mod m, x,e < m */ +static int modexp_internal(T y, T x, T e, T m, int constant_time) +{ + size_t n; + int status; + + assert(y && x && e && m); + /* Make sure all variables are the same size */ + n = max(e->ndigits, m->ndigits); + n = max(x->ndigits, n); + + bd_resize(y, n); + bd_resize(x, n); + bd_resize(e, n); + bd_resize(m, n); + + /* Finally, do the business */ + if (constant_time) + status = mpModExp_ct(y->digits, x->digits, e->digits, m->digits, n); + else + status = mpModExp(y->digits, x->digits, e->digits, m->digits, n); + + y->ndigits = mpSizeof(y->digits, n); + + return status; +} + +/** Compute y = x^e mod m, x,e < m */ +int bdModExp(BIGD y, BIGD x, BIGD e, BIGD m) +{ + return modexp_internal(y, x, e, m, 0); +} + +/** Compute y = x^e mod m in constant time */ +int bdModExp_ct(BIGD y, BIGD x, BIGD e, BIGD m) +{ + return modexp_internal(y, x, e, m, 1); +} + +/** Compute a = (x * y) mod m */ +int bdModMult(T a, T x, T y, T m) +{ + size_t n; + int status; + + assert(a && x && y && m); + /* Make sure all variables are the same size */ + n = max(y->ndigits, m->ndigits); + n = max(x->ndigits, n); + + bd_resize(a, n); + bd_resize(y, n); + bd_resize(x, n); + bd_resize(m, n); + + /* Do the business */ + status = mpModMult(a->digits, x->digits, y->digits, m->digits, n); + + a->ndigits = mpSizeof(a->digits, n); + + return status; +} + +/** Computes a = x^2 mod m */ +int bdModSquare(BIGD a, BIGD x, BIGD m) +{ + size_t n; + int status; + + assert(a && x && m); + /* Make sure all variables are the same size */ + n = max(x->ndigits, m->ndigits); + + bd_resize(a, n); + bd_resize(x, n); + bd_resize(m, n); + + /* Do the business */ + status = mpModSquare(a->digits, x->digits, m->digits, n); + + a->ndigits = mpSizeof(a->digits, n); + + return status; +} + +/** Computes x = sqrt(a) mod p */ +int bdModSqrt(BIGD x, BIGD a, BIGD p) +{ + size_t n; + int status; + + assert(x && a && p); + /* Make sure all variables are the same size */ + n = max(a->ndigits, p->ndigits); + + bd_resize(x, n); + bd_resize(a, n); + bd_resize(p, n); + + /* Do the business */ + status = mpModSqrt(x->digits, a->digits, p->digits, n); + + x->ndigits = mpSizeof(x->digits, n); + + return status; +} + +/** Computes w = u/2 (mod p) for an odd prime p */ +void bdModHalve(BIGD w, const BIGD u, const BIGD p) +{ + size_t n; + + assert(w && u && p); + /* Make sure all variables are the same size */ + n = max(u->ndigits, p->ndigits); + + bd_resize(w, n); + bd_resize(u, n); + bd_resize(p, n); + + /* Do the business */ + mpModHalve(w->digits, u->digits, p->digits, n); + + w->ndigits = mpSizeof(w->digits, n); +} + + +/* Computes w = u + v (mod m) for 0 <= u,v < m*/ +void bdModAdd(BIGD w, BIGD u, BIGD v, BIGD m) +{ + size_t n; + + assert(w && u && v && m); + /* Make sure all variables are the same size */ + n = max(v->ndigits, m->ndigits); + n = max(u->ndigits, n); + + bd_resize(w, n); + bd_resize(u, n); + bd_resize(v, n); + bd_resize(m, n); + + /* Do the business */ + mpModAdd(w->digits, u->digits, v->digits, m->digits, n); + + w->ndigits = mpSizeof(w->digits, n); +} + +/* Computes w = u - v (mod m) for 0 <= u,v < m*/ +void bdModSub(BIGD w, BIGD u, BIGD v, BIGD m) +{ + size_t n; + + assert(w && u && v && m); + /* Make sure all variables are the same size */ + n = max(v->ndigits, m->ndigits); + n = max(u->ndigits, n); + + bd_resize(w, n); + bd_resize(u, n); + bd_resize(v, n); + bd_resize(m, n); + + /* Do the business */ + mpModSub(w->digits, u->digits, v->digits, m->digits, n); + + w->ndigits = mpSizeof(w->digits, n); +} + +/** Compute x = a^-1 mod m */ +int bdModInv(T x, T a, T m) +{ + size_t n; + int status; + + assert(x && a && m); + /* Make sure all variables are the same size */ + n = max(a->ndigits, m->ndigits); + + bd_resize(x, n); + bd_resize(a, n); + bd_resize(m, n); + + /* Do the business */ + status = mpModInv(x->digits, a->digits, m->digits, n); + + x->ndigits = mpSizeof(x->digits, n); + + return status; +} + +int bdGcd(T g, T x, T y) + /* Compute g = gcd(x, y) */ +{ + size_t n; + int status; + + assert(g && x && y); + n = max(x->ndigits, y->ndigits); + + bd_resize(g, n); + bd_resize(y, n); + bd_resize(x, n); + + /* Do the business */ + status = mpGcd(g->digits, x->digits, y->digits, n); + + g->ndigits = mpSizeof(g->digits, n); + + return status; +} + +int bdJacobi(T a, T m) + /* Returns Jacobi(a, m) = {0, +1, -1} */ +{ + size_t n; /* Careful with n and m here! */ + int status; + + assert(a && m); + n = max(a->ndigits, m->ndigits); + + bd_resize(a, n); + bd_resize(m, n); + + /* Do the business */ + status = mpJacobi(a->digits, m->digits, n); + + return status; +} + +int bdIsPrime(T b, size_t ntests) +/* Returns true if passes ntests x Miller-Rabin tests */ +{ + assert(b); + return (mpIsPrime(b->digits, b->ndigits, ntests)); +} + +int bdRabinMiller(T b, size_t ntests) +/* Returns true if passes ntests x Miller-Rabin tests without trial division */ +{ + assert(b); + return (mpRabinMiller(b->digits, b->ndigits, ntests)); +} + +/* [Version 2.1: bdRandDigit moved to bdRand.c] */ + + +/* Make a random BIGD of up to `ndigits` digits + -- NB just for doing tests + Return # digits actually set +*/ +size_t bdSetRandTest(T a, size_t ndigits) +{ + /* Re-written [v2.6] */ + size_t n; + size_t nbitstarget = ndigits * BITS_PER_DIGIT; + + /* Half the time, pick a shorter bitlength at random from [4,nbits] + so at least a >= 16 */ + if (spSimpleRand(0, 1)) { + n = (size_t)spSimpleRand(4, (DIGIT_T)nbitstarget); + } + else { + n = nbitstarget; + } + + bdQuickRandBits(a, n); + /* Make sure a > 1 */ + if (bdShortCmp(a, 2) < 0) + bdQuickRandBits(a, nbitstarget); + + return bdSizeof(a); + +} + +/** Generate a quick-and-dirty random number a <= 2^{nbits}-1 using plain-old-rand + * @return Number of digits actually set + * @remark Not crypto secure + */ /* Added [v2.4] */ +size_t bdQuickRandBits(T a, size_t nbits) +{ + size_t n; + + assert(a); + n = (nbits + BITS_PER_DIGIT - 1) / BITS_PER_DIGIT; + bd_resize(a, n); + n = mpQuickRandBits(a->digits, n, nbits); + a->ndigits = n; + + return n; +} + +int bdRandomSeeded(T a, size_t nbits, const unsigned char *seed, + size_t seedlen, BD_RANDFUNC RandFunc) +/* Create a random mp digit at most nbits long + -- high bit may or may not be set + -- Uses whatever RNG function the user specifies */ +{ + size_t i, hibit, ndigits, nbytes; + DIGIT_T chop; + + assert(a); + /* Make sure big enough */ + ndigits = (nbits + BITS_PER_DIGIT - 1) / BITS_PER_DIGIT; + bd_resize(a, ndigits); + nbytes = ndigits * sizeof(DIGIT_T); + + /* Generate random bytes using callback function */ + RandFunc((unsigned char *)a->digits, nbytes, seed, seedlen); + + /* Clear unwanted high bits */ + hibit = (nbits-1) % BITS_PER_DIGIT; + for (chop = 0x01, i = 0; i < hibit; i++) + chop = (chop << 1) | chop; + + a->digits[ndigits-1] &= chop; + + a->ndigits = ndigits; + + return 0; +} + + +int bdGeneratePrime(T b, size_t nbits, size_t ntests, + const unsigned char *seed, size_t seedlen, BD_RANDFUNC RandFunc) +{ + size_t i, hibit, ndigits, nbytes; + DIGIT_T mask, chop; + DIGIT_T *p; + int done; + size_t iloop, maxloops, j, maxodd; + + assert(b); + /* Make sure big enough */ + ndigits = (nbits + BITS_PER_DIGIT - 1) / BITS_PER_DIGIT; + bd_resize(b, ndigits); + nbytes = ndigits * sizeof(DIGIT_T); + + /* use a ptr */ + p = b->digits; + + maxloops = 5; + maxodd = 100 * nbits; + done = 0; + for (iloop = 0; !done && iloop < maxloops; iloop++) + { + /* Generate random digits using callback function */ + RandFunc((unsigned char *)p, nbytes, seed, seedlen); + + /* Set high and low bits */ + hibit = (nbits-1) % BITS_PER_DIGIT; + mask = 0x01 << hibit; + for (chop = 0x01, i = 0; i < hibit; i++) + chop = (chop << 1) | chop; + + p[ndigits-1] |= mask; + p[ndigits-1] &= chop; + p[0] |= 0x01; + + /* Try each odd number until success or too many tries */ + for (j = 0; !done && j < maxodd; j++, mpShortAdd(p, p, 2, ndigits)) + { + if (!(p[ndigits-1] & mask)) + break; /* Catch overflow */ + + if (debug) mpPrintNL(p, ndigits); + + if (mpIsPrime(p, ndigits, ntests)) + { + done = 1; + break; + } + } + } + + if (debug) mpPrintNL(p, ndigits); + + b->ndigits = ndigits; + + return (done ? 0 : 1); +} + +/* Version Info - added in [v2.0.2] */ +int bdVersion(void) +{ + return mpVersion(); +} + +/* Added [v2.6] */ +const char *bdCompileTime(void) +{ + return __DATE__" "__TIME__; +} + diff --git a/fsbl/lib/BigDigits/bigd.h b/fsbl/lib/BigDigits/bigd.h new file mode 100644 index 000000000..0325da9e1 --- /dev/null +++ b/fsbl/lib/BigDigits/bigd.h @@ -0,0 +1,669 @@ +/* $Id: bigd.h $ */ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-16 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2016-03-31 09:51:00 $ + * $Revision: 2.6.1 $ + * $Author: dai $ + */ + +/* ANNOTATION FOR DOXYGEN... */ + +/** @mainpage notitle + +@section intro_sec Introduction + +BigDigits is a free library of multiple-precision arithmetic routines written in ANSI C +to carry out calculations with the large natural numbers used in cryptography computations. + +You can download it from http://www.di-mgt.com.au/bigdigits.html. + +The BigDigits library is designed to work with the set of natural numbers \b N; +that is, the non-negative integers 0,1,2,... . + +The library has two interfaces: the "bd" library and the underlying "mp" library. +The "bd" functions use an opaque BIGD object and +handle memory allocation automatically. +The "mp" functions use fixed-length arrays and +require a bit more care to use but the "mp" library is faster and +has an option (`NO_ALLOCS`) to avoid all memory allocation calls completely. +The "bd" library is an easier-to-use wrapper around the "mp" library. + +The "bd" functions are described in bigd.h and the more elementary "mp" functions are in bigdigits.h. + +There are some optional functions that generate random numbers using a "pretty-good" internal RNG +in bigdRand.h and bigdigitsRand.h for the "bd" and "mp" libraries, respectively. + +*/ + +/** @file + Interface to the BigDigits "bd" functions using BIGD objects with automatic memory allocation + +@par PROGRAMMER'S NOTES +Where the function computes a new BIGD value, +the result is returned in the first argument. +Some functions do not allow variables to overlap. +Functions of type `int` generally return 0 to denote success +but some return True/False (1/0) or borrow (+1) or error (-1). +Functions of type `size_t` (an unsigned int) return a length. + +@par Memory allocation +Memory for each variable is allocated as required and is increased automatically if needed. +However, memory for a variable is only released when freed with bdFree(). +The standard code for a variable `b` should be as follows: +@code + BIGD b; + b = bdNew(); + // operations using b... + bdFree(&b); +@endcode*/ + + +#ifndef BIGD_H_ +#define BIGD_H_ 1 + +#include "bigdtypes.h" + +/**** USER CONFIGURABLE SECTION ****/ + +/* [v2.1] Changed to use exact width integer types. + [v2.2] Moved macros for exact-width types to "bigdtypes.h" +*/ + +/** A synonym for a single digit (DIGIT_T is not exposed) */ +typedef uint32_t bdigit_t; + +/**** END OF USER CONFIGURABLE SECTION ****/ +/** @cond */ +/**** OPTIONAL PREPROCESSOR DEFINITIONS ****/ +/* + Choose one of { USE_SPASM | USE_64WITH32 } + USE_SPASM: to use the faster x86 ASM routines (if __asm option is available with your compiler). + USE_64WITH32: to use the 64-bit integers if available (e.g. long long). + Default: use default internal routines spDivide and spMultiply. + The USE_SPASM option takes precedence over USE_64WITH32. +*/ + +#ifdef NO_ALLOCS +#error NO_ALLOCS is not permitted with bd functions +#endif + +/* +This interface uses opaque pointers of type BIGD using +the conventions in "C Interfaces and Implementions" by +David R. Hanson, Addison-Wesley, 1996, pp21-4. +Thanks to Ian Tree for the C++ fudge. +*/ +#define T BIGD +#ifdef __cplusplus + typedef struct T2 *T; +#else + typedef struct T *T; +#endif + +#ifdef __cplusplus +extern "C" { +#endif +/** @endcond */ + + +/******************************/ +/* CONSTRUCTOR AND DESTRUCTOR */ +/******************************/ +/** Create new BIGD object +@returns Handle to new object +*/ +BIGD bdNew(void); + +/** Destroy BIGD object: zeroise contents and free allocated memory. +@remark Pass a *pointer* to the handle +*/ +void bdFree(BIGD *bd); + +/** Create a set of BIGD objects +@code +BIGD a, b, c; +bdNewVars(&a, &b, &c, NULL); +// do stuff with variables a, b, c... +bdFreeVars(&a, &b, &c, NULL); +@endcode +The `bdNewVars` function call above is equivalent to +@code +a = bdNew(); +b = bdNew(); +c = bdNew(); +@endcode + +@warning The list *must* finish with `NULL` + */ +void bdNewVars(BIGD *pb1, ...); + + +/** Destroy a set of BIGD objects +@code +BIGD a, b, c; +bdNewVars(&a, &b, &c, NULL); +// do stuff with variables a, b, c... +bdFreeVars(&a, &b, &c, NULL); +@endcode +The `bdFreeVars` function call above is equivalent to +@code +bdFree(&a); +bdFree(&b); +bdFree(&c); +@endcode + +@warning The list *must* finish with `NULL` + */ +void bdFreeVars(BIGD *pb1, ...); + + +/*************************/ +/* ARITHMETIC OPERATIONS */ +/*************************/ + +/** Compute sum w = u + v +@return carry +@remark `w` and `v` must be separate variables. +Use bdAdd_s() to avoid overlap restriction. +*/ +int bdAdd(BIGD w, BIGD u, BIGD v); + +/** Compute difference w = u - v +@return borrow +@remark `w` and `v` must be separate variables. +Use bdSubtract_s() to avoid overlap restriction. +@warning Behaviour is undefined for negative numbers. +*/ +int bdSubtract(BIGD w, BIGD u, BIGD v); + +/** Compute product w = u * v +@remark `w` and `u` must be separate variables. +Use bdMultiply_s() to avoid overlap restriction. +*/ +int bdMultiply(BIGD w, BIGD u, BIGD v); + +/** Compute integer division of u by v such that u=qv+r +@param[out] q To receive quotient = u div v +@param[out] r To receive remainder = u mod v +@param[in] u Dividend +@param[in] v Divisor +@remark Trashes q and r first: `q` and `r` must be independent of `u` and `v`. +Use bdDivide_s() to avoid overlap restriction. +*/ +int bdDivide(BIGD q, BIGD r, BIGD u, BIGD v); + +/** Compute remainder r = u mod v +@remark `r` and `u` must be separate variables. +Use bdModulo_s() to avoid overlap restriction. +*/ +int bdModulo(BIGD r, BIGD u, BIGD v); + +/** Compute square w = x^2 +@remark `w` and `x` must be separate variables. +Use bdSquare_s() to avoid overlap restriction. +*/ +int bdSquare(BIGD w, BIGD x); + +/** Computes y = g^n (up to available memory!) +@remark Be very careful that `n` is not too large +*/ +int bdPower(BIGD y, BIGD g, unsigned short int n); + +/** Computes integer square root s = floor(sqrt(x)) */ +int bdSqrt(BIGD s, BIGD x); + +/** Computes integer cube root s = floor(cuberoot(x)) */ +int bdCubeRoot(BIGD s, BIGD x); + +/** Sets a = a + 1 +@return carry */ +int bdIncrement(BIGD a); + +/** Sets a = a - 1 +@return borrow +@warning Behaviour is undefined if a becomes negative. +*/ +int bdDecrement(BIGD a); + +/* 'Safe' versions with no restrictions on overlap */ +/* [v2.2] Changed name from ~Ex to ~_s */ + +/** Compute w = u + v without restrictions on overlap of bdAdd() */ +int bdAdd_s(BIGD w, BIGD u, BIGD v); +/** Compute w = u - v without restrictions on overlap of bdSubtract() */ +int bdSubtract_s(BIGD w, BIGD u, BIGD v); +/** Compute w = u * v without restrictions on overlap of bdMultiply() */ +int bdMultiply_s(BIGD w, BIGD u, BIGD v); +/** Compute u div v without restrictions on overlap of bdDivide() */ +int bdDivide_s(BIGD q, BIGD r, BIGD u, BIGD v); +/** Compute u mod v without restrictions on overlap of bdModulo() */ +int bdModulo_s(BIGD r, BIGD u, BIGD v); +/** Compute s = x * x without restrictions on overlap of bdSquare() */ +int bdSquare_s(BIGD s, BIGD x); + +/* Keep the faith with the deprecated ~Ex version names */ +#define bdAddEx(w, u, v) bdAdd_s((w), (u), (v)) +#define bdSubtractEx(w, u, v) bdSubtract_s((w), (u), (v)) +#define bdMultiplyEx(w, u, v) bdMultiply_s((w), (u), (v)) +#define bdDivideEx(q, r, u, v) bdDivide_s((q), (r), (u), (v)) +#define bdModuloEx(r, u, v) bdModulo_s((r), (u), (v)) +#define bdSquareEx(s, x) bdSquare_s((s), (x)) + + +/*************************/ +/* COMPARISON OPERATIONS */ +/*************************/ + +/** Returns true (1) if a == b, else false (0) + * @remark Not constant-time + */ +int bdIsEqual(BIGD a, BIGD b); + +/** Returns sign of `(a-b)` in `{0,1,-1}` + * @remark Not constant-time + */ +int bdCompare(BIGD a, BIGD b); + +/** Returns true (1) if a is zero, else false (0) + * @remark Not constant-time + */ +int bdIsZero(BIGD a); + +/** Returns true (1) if a is even, else false (0) */ +int bdIsEven(BIGD a); + +/** Returns true (1) if a is odd, else false (0) */ +int bdIsOdd(BIGD a); + +/***************************************/ +/* CONSTANT-TIME COMPARISON ALGORITHMS */ +/***************************************/ +/* -- added in [v2.6] */ + +/** Returns true if a == b, else false, using constant-time algorithm */ +int bdIsEqual_ct(BIGD a, BIGD b); + +/** Returns sign of `(a-b)` as `{-1,0,+1}` using constant-time algorithm */ +int bdCompare_ct(BIGD a, BIGD b); + +/** Returns true if a is zero, else false, using constant-time algorithm */ +int bdIsZero_ct(BIGD a); + +/*************************/ +/* ASSIGNMENT OPERATIONS */ +/*************************/ + +/** Sets a = b */ +int bdSetEqual(BIGD a, BIGD b); + +/** Sets a = 0 */ +int bdSetZero(BIGD a); + + +/****************************/ +/* NUMBER THEORY OPERATIONS */ +/****************************/ + +/** Computes y = x^e mod m */ +int bdModExp(BIGD y, BIGD x, BIGD e, BIGD m); + +/** Computes y = x^e mod m in constant time + * @remark Resistant to simple power analysis attack on private exponent. + * Slower than bdModExp(). + */ +int bdModExp_ct(BIGD y, BIGD x, BIGD e, BIGD m); + +/** Computes a = (x * y) mod m */ +int bdModMult(BIGD a, BIGD x, BIGD y, BIGD m); + +/** Computes a = x^2 mod m */ +int bdModSquare(BIGD a, BIGD x, BIGD m); + +/** Computes the inverse of `a` modulo `m`, `x = a^{-1} mod m` */ +int bdModInv(BIGD x, BIGD a, BIGD m); + +/** Computes g = gcd(x, y), the greatest common divisor of x and y */ +int bdGcd(BIGD g, BIGD x, BIGD y); + +/** Returns the Jacobi symbol (a/n) = {-1, 0, +1} +@remark If n is prime then the Jacobi symbol becomes the Legendre symbol (a/p) defined to be +- (a/p) = +1 if a is a quadratic residue modulo p +- (a/p) = -1 if a is a quadratic non-residue modulo p +- (a/p) = 0 if a is divisible by p +*/ +int bdJacobi(BIGD a, BIGD n); + + +/** Computes x = one square root of an integer `a` modulo an odd prime `p` +* @param x To receive the result +* @param a An integer expected to be a quadratic residue modulo p +* @param p An odd prime +* @return 0 if successful, or -1 if square root does not exist +* @remark More precisely, find an integer x such that x^2 mod p = a. +* Uses the Tonelli-Shanks algorithm. The other square root is `p - x`. +* @warning Check the return value before using the result `x`. +*/ +int bdModSqrt(BIGD x, BIGD a, BIGD p); + + +/** Computes w = u/2 (mod p) for an odd prime p + * @pre Require u to be in the range `[0,p-1]` + */ +void bdModHalve(BIGD w, const BIGD u, const BIGD p); + + +/** Computes w = u + v (mod m) +* @pre Require u and v to be in the range `[0, m-1]`. +* The variables `w` and `v` must not overlap. +* @remark Quicker than adding then using mpModulo() +*/ +void bdModAdd(BIGD w, BIGD u, BIGD v, BIGD m); + + +/** Computes w = u - v (mod m) +* @pre Require u and v to be in the range `[0, m-1]`. +* The variables `w` and `v` must not overlap. +* @remark Quicker than subtracting then using mpModulo() +*/ +void bdModSub(BIGD w, BIGD u, BIGD v, BIGD m); + + +/** Returns true (1) if `b` is probably prime +@param[in] b Number to test +@param[in] ntests The count of Rabin-Miller primality tests to carry out (recommended at least 80) +@returns true (1) if b is probably prime otherwise false (0) +@remark Uses FIPS-186-2/Rabin-Miller with trial division by small primes, +which is faster in most cases than bdRabinMiller(). +@see bdRabinMiller(). +*/ +int bdIsPrime(BIGD b, size_t ntests); + +/** Returns true (1) if `b` is probably prime using just the Rabin-Miller test +@param[in] b Number to test (b > 2) +@param[in] ntests The count of Rabin-Miller primality tests to carry out (recommended at least 80) +@returns true (1) if b is probably prime otherwise false (0) +@remark bdIsPrime() is the recommended function to test for primality. +Use this variant if, for some reason, +you do not want to do the quicker trial division tests first. +@see bdIsPrime() +*/ +int bdRabinMiller(BIGD b, size_t ntests); + + +/**********************************************/ +/* FUNCTIONS THAT OPERATE WITH A SINGLE DIGIT */ +/**********************************************/ +/* [v2.6] Added bdShortIsEqual() and bdToShort() */ + +/** Converts a single digit into a BIGD +@param[out] b To receive the result +@param[in] d A single digit +@remark Use this to set a BIGD variable to a small integer. +*/ +int bdSetShort(BIGD b, bdigit_t d); + +/** Computes w = u + d where d is a single digit +@return carry +*/ +int bdShortAdd(BIGD w, BIGD u, bdigit_t d); + +/** Computes w = u - d where d is a single digit +@return borrow +*/ +int bdShortSub(BIGD w, BIGD u, bdigit_t d); + +/** Computes w = u * d where d is a single digit */ +int bdShortMult(BIGD w, BIGD u, bdigit_t d); + +/** Computes integer division of u by single digit d +@param[out] q To receive quotient = u div d +@param[out] r To receive remainder = u mod d +@param[in] u Dividend, a BIGD object +@param[in] d Divisor, a single digit +@remark A separate BIGD object `r` must be provided to receive the remainder. +*/ +int bdShortDiv(BIGD q, BIGD r, BIGD u, bdigit_t d); + +/** Computes r = u mod d where d is a single digit */ +bdigit_t bdShortMod(BIGD r, BIGD u, bdigit_t d); + +/** Returns sign of (a-d) where d is a single digit */ +int bdShortCmp(BIGD a, bdigit_t d); + +/** Returns true if a == d, else false, where d is a single digit */ +int bdShortIsEqual(BIGD a, bdigit_t d); + +/** Returns the least significant digit in b + * @return A single digit equal to the least significant digit in b + * @remark Use this to convert (truncate) a BIGD object into a short integer + */ +bdigit_t bdToShort(BIGD b); + + +/***********************/ +/* BIT-WISE OPERATIONS */ +/***********************/ +/* [v2.1.0] Added ModPowerOf2, Xor, Or and AndBits functions */ +/* [v2.2.0] Added NotBits, GetBit, SetBit functions */ + +/** Returns number of significant bits in b */ +size_t bdBitLength(BIGD b); + +/** Set bit n of a (0..nbits-1) with value 1 or 0 */ +int bdSetBit(BIGD a, size_t n, int value); + +/** Returns value 1 or 0 of bit n of a (0..nbits-1) */ +int bdGetBit(BIGD a, size_t ibit); + +/** Computes a = b << n */ +void bdShiftLeft(BIGD a, BIGD b, size_t n); + +/** Computes a = b >> n */ +void bdShiftRight(BIGD a, BIGD b, size_t n); + +/** Computes a = a mod 2^L, ie clears all bits greater than L */ +void bdModPowerOf2(BIGD a, size_t L); + +/** Computes bitwise operation a = b XOR c */ +void bdXorBits(BIGD a, BIGD b, BIGD c); + +/** Computes bitwise operation a = b OR c */ +void bdOrBits(BIGD a, BIGD b, BIGD c); + +/** Computes bitwise operation a = b AND c */ +void bdAndBits(BIGD a, BIGD b, BIGD c); + +/** Computes bitwise a = NOT b +@remark This flips all the bits up to the most significant digit, which may not be exactly what you want. */ +void bdNotBits(BIGD a, BIGD b); + + +/*******************/ +/* MISC OPERATIONS */ +/*******************/ + +/** Returns number of significant digits in b */ +size_t bdSizeof(BIGD b); + +/** Print b in hex format with optional prefix and suffix strings */ +void bdPrintHex(const char *prefix, BIGD b, const char *suffix); + +/** Print b in decimal format with optional prefix and suffix strings */ +void bdPrintDecimal(const char *prefix, BIGD b, const char *suffix); + +/** Print b in bit (0/1) format with optional prefix and suffix strings */ +void bdPrintBits(const char *prefix, BIGD b, const char *suffix); + +/* Options for bdPrint */ +#define BD_PRINT_NL 0x1 /* append a newline after printing */ +#define BD_PRINT_TRIM 0x2 /* trim leading zero digits */ + +/** Print b in hex format to stdout +@param[in] b Number to print +@param[in] flags (see below) +@remark Flags are +- `0` default display leading zeros but no newline +- `BD_PRINT_NL` `0x1` append a newline after printing +- `BD_PRINT_TRIM` `0x2` trim leading zero digits +@deprecated Use bdPrintHex() or bdPrintDecimal(). +*/ +void bdPrint(BIGD b, size_t flags); + + +/***************/ +/* CONVERSIONS */ +/***************/ +/* All bdConv functions return 0 on error */ +/* "Octet" = an 8-bit byte */ + +/** Converts a byte array into a BIGD object +@param[out] b To receive the result +@param[in] octets Pointer to array of bytes (octets) +@param[in] nbytes Number of bytes in sequence +@returns Number of digits actually set, which may be larger than bdSizeof(BIGD b). +*/ +size_t bdConvFromOctets(BIGD b, const unsigned char *octets, size_t nbytes); + +/** Converts a BIGD into an array of bytes, in big-endian order +@param[in] b BIGD object to be converted +@param[out] octets Array of bytes (octets) to receive output +@param[in] nbytes Length of array to receive output +@returns Exact number of significant bytes in the result. + If `octets` is NULL or `nbytes` is zero then just returns required size (nsig). +@remark Will pad on the left with zeros if `nbytes` is larger than required, + or will truncate from the left if it is too short. +- if nbytes = nsig, octets <-- mmmnnn; +- if nbytes > nsig, octets <-- 000mmmnnn; +- if nbytes < nsig, octets <-- nnn. +*/ +size_t bdConvToOctets(BIGD b, unsigned char *octets, size_t nbytes); + + +/** Convert string of hexadecimal characters into a BIGD object +@param[out] b To receive the result +@param[in] s Null-terminated string of hex digits `[0-9A-Fa-f]` +@returns Number of significant digits actually set, which could be 0. +*/ +size_t bdConvFromHex(BIGD b, const char *s); + +/** Convert BIGD object into a string of hexadecimal characters +@param[in] b BIGD object to be converted +@param[out] s String buffer to receive output +@param[in] smax Size of buffer *including* the terminating zero +@returns Exact number of characters required *excluding* the terminating zero. + If `s` is NULL or `smax` is zero then just returns required number. +@code + char *s; + size_t nchars = bdConvToHex(b, NULL, 0); + s = malloc(nchars+1); // NB add one extra + nchars = bdConvToHex(b, s, nchars+1); +@endcode +@remark Always returns the length of the string it tried to create, + even if the actual output was truncated, so remember to check. +*/ +size_t bdConvToHex(BIGD b, char *s, size_t smax); + +/** Convert string of decimal characters into a BIGD object +@param[out] b To receive the result +@param[in] s Null-terminated string of decimal digits `[0-9]` +@returns Number of significant digits actually set, which could be 0. +*/ +size_t bdConvFromDecimal(BIGD b, const char *s); + +/** Convert BIGD object into a string of decimal characters +@param[in] b BIGD object to be converted +@param[out] s String buffer to receive output +@param[in] smax Size of buffer *including* the terminating zero +@returns Exact number of characters required *excluding* the terminating zero. + If `s` is NULL or `smax` is zero then just returns required number. +@code + char *s; + size_t nchars = bdConvToDecimal(b, NULL, 0); + s = malloc(nchars+1); // NB add one extra + nchars = bdConvToDecimal(b, s, nchars+1); +@endcode +@remark Always returns the length of the string it tried to create, + even if the actual output was truncated, so remember to check. +*/ +size_t bdConvToDecimal(BIGD b, char *s, size_t smax); + +/****************************/ +/* RANDOM NUMBER OPERATIONS */ +/****************************/ + +/* [Version 2.1: bdRandDigit and bdRandomBits moved to bigdRand.h] */ + +/** Set a with a "random" value of random length up to ndigits long suitable for quick tests + * @return Number of digits actually set + * @remark For testing purposes only. Not crypto secure. Not thread safe. + */ +size_t bdSetRandTest(BIGD a, size_t ndigits); + +/** Generate a quick-and-dirty random number a of bit length at most `nbits` using plain-old-rand + * @return Number of digits actually set + * @remark Not crypto secure. May give same value on repeated calls. + * @see bdRandomBits() or bdRandomSeeded(). + */ +size_t bdQuickRandBits(BIGD a, size_t nbits); + +/** TYPEDEF for user-defined random byte generator function */ +typedef int (* BD_RANDFUNC)(unsigned char *buf, size_t nbytes, const unsigned char *seed, size_t seedlen); + +/** Generate a random number nbits long using RandFunc + * @param[out] a To receive the result + * @param [in] nbits Maximum number of bits in number + * @param [in] seed Optional seed to add extra entropy + * @param [in] seedlen Number of bytes in seed + * @param [in] RandFunc User function to generate random bytes */ +int bdRandomSeeded(BIGD a, size_t nbits, const unsigned char *seed, + size_t seedlen, BD_RANDFUNC RandFunc); + +/** Generate a prime number + * @param[out] a To receive the result + * @param [in] nbits Maximum number of bits in number + * @param [in] ntests Number of primality tests to carry out (recommended at least 80) + * @param [in] seed Optional seed to add extra entropy + * @param [in] seedlen Number of bytes in seed + * @param [in] RandFunc User function to generate random bytes */ +int bdGeneratePrime(BIGD a, size_t nbits, size_t ntests, const unsigned char *seed, + size_t seedlen, BD_RANDFUNC RandFunc); + +/****************/ +/* VERSION INFO */ +/****************/ +/** Returns version number = major*1000+minor*100+release*10+PP_OPTIONS */ +int bdVersion(void); + /* Returns version number = major*1000+minor*100+release*10+uses_asm(0|1)+uses_64(0|2) + E.g. Version 2.3.0 will return 230x where x denotes the preprocessor options + x | USE_SPASM | USE_64WITH32 | NO_ALLOCS + --+-----------+--------------+---------- + 0 | No | No | N/A + 1 | Yes | No | N/A + 2 | No | Yes | N/A + 3 | Yes | Yes* | N/A + --+-----------+--------------+---------- + * USE_SPASM will take precedence over USE_64WITH32. + */ + +/** Returns a pointer to a static string containing the time of compilation */ +const char *bdCompileTime(void); + + +#undef T /* (for opaque BIGD pointer) */ + +#ifdef __cplusplus +} +#endif + +#endif /* BIGD_H_ */ diff --git a/fsbl/lib/BigDigits/bigdRand.c b/fsbl/lib/BigDigits/bigdRand.c new file mode 100644 index 000000000..23c9a4e55 --- /dev/null +++ b/fsbl/lib/BigDigits/bigdRand.c @@ -0,0 +1,78 @@ +/* $Id: bigdRand.c $ */ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-16 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2016-03-31 09:51:00 $ + * $Revision: 2.6.1 $ + * $Author: dai $ + */ + +/* Random number BIGD functions that rely on spBetterRand */ + +#include "bigdRand.h" +#include "bigdigitsRand.h" + +#include + +bdigit_t bdRandDigit(void) +/* Return a random digit. */ +{ + return spBetterRand(); +} + +size_t bdRandomBits(BIGD a, size_t nbits) +/* Generate a random BIGD number <= 2^{nbits}-1 using internal RNG */ +{ + const int bits_per_digit = sizeof(bdigit_t) * 8; + size_t i; + int j; + bdigit_t r; + + bdSetZero(a); + bdSetBit(a, nbits-1, 0); + r = bdRandDigit(); + j = bits_per_digit; + for (i = 0; i < nbits; i++) + { + if (j <= 0) + { + r = bdRandDigit(); + j = bits_per_digit; + } + bdSetBit(a, i, r & 0x1); + r >>= 1; + j--; + } + + return i; +} + +/** Generate array of random octets (bytes) using internal RNG. +This function is in the correct form for BD_RANDFUNC. +Seed is ignored here. +*/ +int bdRandomOctets(unsigned char *bytes, size_t nbytes, const unsigned char *seed, size_t seedlen) +{ + return mpRandomOctets(bytes, nbytes, seed, seedlen); +} + +size_t bdRandomNumber(BIGD a, BIGD n) +{ /* Generate a number in the range [0, n-1] */ + size_t nbits = bdBitLength(n); + bdSetZero(a); + do { + bdRandomBits(a, nbits); + } while (bdCompare(a, n) >= 0); + return bdSizeof(a); +} + diff --git a/fsbl/lib/BigDigits/bigdRand.h b/fsbl/lib/BigDigits/bigdRand.h new file mode 100644 index 000000000..a4e88c8f7 --- /dev/null +++ b/fsbl/lib/BigDigits/bigdRand.h @@ -0,0 +1,69 @@ +/* $Id: bigdRand.h $ */ + +/** @file + Interface for BigDigits "bd" random number functions using a "pretty-good" internal RNG + +@par The internal random number generator (RNG) +The internal RNG uses a variant of the random number generation algorithm +in Appendix A of ANSI X9.31-1998, but using the Tiny Encryption Algorithm (TEAX) +instead of the Data Encryption Algorithm (DEA). +It uses the current time and process ID as a seed. +Although not strictly crypto secure, it is "pretty good", and certainly much better than +anything using the built-in rand() function in C. Look at the source code and make your own call. + +@par +If you want proper cryptographic security, use the bdRandomSeeded() function with a call to a +secure RNG function that you trust. +*/ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-16 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2016-03-31 09:51:00 $ + * $Revision: 2.6.1 $ + * $Author: dai $ + */ + +#ifndef BIGDRAND_H_ +#define BIGDRAND_H_ 1 + +#include "bigd.h" +#include "bigdRand.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** Generate a single random digit using internal RNG. */ +bdigit_t bdRandDigit(void); + +/** Generate a random BIGD number of bit length at most \c nbits using internal RNG +@param[out] a to receive generated random number +@param[in] nbits maximum number of bits +@returns Number of digits actually set +*/ +size_t bdRandomBits(BIGD a, size_t nbits); + +/* Added in [v2.4] */ +/** Generate array of random octets (bytes) using internal RNG + * @remarks This function is in the correct form for BD_RANDFUNC. + */ +int bdRandomOctets(unsigned char *bytes, size_t nbytes, const unsigned char *seed, size_t seedlen); + +/** Generate a number at random from a uniform distribution in [0, n-1] */ +size_t bdRandomNumber(BIGD a, BIGD n); + +#ifdef __cplusplus +} +#endif + +#endif /* BIGDRAND_H_ */ diff --git a/fsbl/lib/BigDigits/bigdigits.c b/fsbl/lib/BigDigits/bigdigits.c new file mode 100644 index 000000000..6473681e5 --- /dev/null +++ b/fsbl/lib/BigDigits/bigdigits.c @@ -0,0 +1,3394 @@ +/* $Id: bigdigits.c $ */ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-16 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2016-03-31 09:51:00 $ + * $Revision: 2.6.1 $ + * $Author: dai $ + */ + +/* Core code for BigDigits library "mp" functions */ + +#include +#include +#include +#include +#include "bigdigits.h" + +#define _ignore_assert(x) + +/* For debugging - these are NOOPs */ +#define DPRINTF0(s) +#define DPRINTF1(s, a1) + +/***************************************/ +/* VERSION NUMBERS - USED IN MPVERSION */ +/***************************************/ +static const int kMajor = 2, kMinor = 6, kRelease = 1; + +/* Flags for preprocessor definitions used (=last digit of mpVersion) */ +#ifdef USE_SPASM +static const int kUseSpasm = 1; +#else +static const int kUseSpasm = 0; +#endif + +#ifdef USE_64WITH32 +static const int kUse64with32 = 2; +#else +static const int kUse64with32 = 0; +#endif + +#ifdef NO_ALLOCS +static const int kUseNoAllocs = 5; +#else +static const int kUseNoAllocs = 0; +#endif + +/* Useful definitions */ +#ifndef max +#define max(a,b) (((a) > (b)) ? (a) : (b)) +#endif +/* Internal macros */ +#define BITS_PER_HALF_DIGIT (BITS_PER_DIGIT / 2) +#define BYTES_PER_DIGIT (BITS_PER_DIGIT / 8) +#define LOHALF(x) ((DIGIT_T)((x) & MAX_HALF_DIGIT)) +#define HIHALF(x) ((DIGIT_T)((x) >> BITS_PER_HALF_DIGIT & MAX_HALF_DIGIT)) +#define TOHIGH(x) ((DIGIT_T)((x) << BITS_PER_HALF_DIGIT)) +#define mpNEXTBITMASK(mask, n) do{if(mask==1){mask=HIBITMASK;n--;}else{mask>>=1;}}while(0) + +/****************************/ +/* ERROR HANDLING FUNCTIONS */ +/****************************/ +/* Change these to suit your tastes and operating system. */ +#if defined(_WIN32) || defined(WIN32) +/* Win32 GUI alternative */ +#ifndef STRICT +#define STRICT +#endif +#define WIN32_LEAN_AND_MEAN +#include +void mpFail(char *msg) +{ + MessageBox(NULL, msg, "BigDigits Error", MB_ICONERROR); + exit(EXIT_FAILURE); +} +#else /* Ordinary console program */ +void mpFail(char *msg) +{ + ERROR("mp/%s\n", msg); +} +#endif /* _WIN32 */ + +/*******************************/ +/* MEMORY ALLOCATION FUNCTIONS */ +/*******************************/ +#ifndef NO_ALLOCS +DIGIT_T *mpAlloc(size_t ndigits) +{ + DIGIT_T *ptr; + + /* [v2.3] added check for zero digits. Thanks to "Radistao" */ + if (ndigits < 1) ndigits = 1; + + ptr = (DIGIT_T *)calloc(ndigits, sizeof(DIGIT_T)); + if (!ptr) + mpFail("mpAlloc: Unable to allocate memory."); + + return ptr; +} + +void mpFree(DIGIT_T **p) +{ + if (*p) + { + free(*p); + *p = NULL; + } +} +#endif /* NO_ALLOCS */ + +/* Added in [v2.4] for ALLOC_BYTES and FREE_BYTES */ +volatile uint8_t zeroise_bytes(volatile void *v, size_t n) +{ /* Zeroise byte array b and make sure optimiser does not ignore this */ + volatile uint8_t optdummy; + volatile uint8_t *b = (uint8_t*)v; + while(n--) + b[n] = 0; + optdummy = *b; + return optdummy; +} +/* [v2.4] Added explicit byte allocation functions with and without NO_ALLOCS */ +#ifndef NO_ALLOCS +#define ALLOC_BYTES(b,n) do{(b)=calloc(n,1);if(!(b))mpFail("ALLOC_BYTES: Unable to allocate memory.");}while(0) +#define FREE_BYTES(b,n) do{zeroise_bytes((b),(n));free((b));}while(0) +#else +#define MAX_ALLOC_SIZE (MAX_FIXED_DIGITS*BYTES_PER_DIGIT) +#define ALLOC_BYTES(b,n) do{_ignore_assert((n)<=sizeof((b)));zeroise_bytes((b),(n));}while(0) +#define FREE_BYTES(b,n) zeroise_bytes((b),(n)) +#endif + + +/* Force linker to include copyright notice in executable object image */ +volatile char *copyright_notice(void) +{ + return +"Contains multiple-precision arithmetic code originally written by David Ireland," +" copyright (c) 2001-16 by D.I. Management Services Pty Limited ."; +} + + +/* To use, include this statement somewhere in the final code: + + copyright_notice(); + +It has no real effect at run time. +Thanks to Phil Zimmerman for this idea. +*/ + +/****************/ +/* VERSION INFO */ +/****************/ +int mpVersion(void) +{ + return (kMajor * 1000 + kMinor * 100 + kRelease * 10 + kUseSpasm + kUse64with32 + kUseNoAllocs); +} + +/* Added [v2.6] */ +const char *mpCompileTime(void) +{ + return __DATE__" "__TIME__; +} + +/**************************************/ +/* CORE SINGLE PRECISION CALCULATIONS */ +/* (double where necessary) */ +/**************************************/ + +/* [v2.2] Moved these functions into main file + and added third option using 64-bit arithmetic if available. +OPTIONS: +1. define USE_64WITH32 to use 64-bit types on a 32-bit machine; or +2. define USE_SPASM to use Intel ASM (32-bit Intel compilers with __asm support); or +3. use default "long" calculations (any platform) +*/ + +#ifdef USE_64WITH32 +/* 1. We are on a 32-bit machine with a 64-bit type available. */ +#pragma message("USE_64WITH32 is set") + +/* Make sure we have a uint64_t available */ +#if defined (_WIN32) || defined(WIN32) +typedef unsigned __int64 uint64_t; +#elif !defined(HAVE_C99INCLUDES) && !defined(HAVE_SYS_TYPES) +typedef unsigned long long int uint64_t; +#endif + +int spMultiply(uint32_t p[2], uint32_t x, uint32_t y) +{ + /* Use a 64-bit temp for product */ + uint64_t t = (uint64_t)x * (uint64_t)y; + /* then split into two parts */ + p[1] = (uint32_t)(t >> 32); + p[0] = (uint32_t)(t & 0xFFFFFFFF); + + return 0; +} + +uint32_t spDivide(uint32_t *pq, uint32_t *pr, const uint32_t u[2], uint32_t v) +{ + uint64_t uu, q; + uu = (uint64_t)u[1] << 32 | (uint64_t)u[0]; + q = uu / (uint64_t)v; + //r = uu % (uint64_t)v; + *pr = (uint32_t)(uu - q * v); + *pq = (uint32_t)(q & 0xFFFFFFFF); + return (uint32_t)(q >> 32); +} + +#elif defined(USE_SPASM) +/* Use Intel MASM to compute sp products and divisions */ +#pragma message("Using MASM") + +int spMultiply(uint32_t p[2], uint32_t x, uint32_t y) +/* ASM version explicitly for 32-bit integers */ +{ +/* Computes p = (p1p0) = x * y. No restrictions on input. */ + __asm + { + mov eax, x + xor edx, edx + mul y + ; Product in edx:eax + mov ebx, p + mov dword ptr [ebx], eax + mov dword ptr [ebx+4], edx + } + return 0; +} + +uint32_t spDivide(uint32_t *pq, uint32_t *pr, const uint32_t u[2], uint32_t v) +/* ASM version explicitly for 32-bit integers */ +{ +/* Computes quotient q = u / v, remainder r = u mod v. + Returns overflow (1) if q > word size (b) otherwise returns 0. + CAUTION: Requires v >= [b/2] i.e. v to have its high bit set. + (q1q0) = (u1u0)/v0 + (r0) = (u1u0) mod v0 + Sets *pr = r0, *pq = q0 and returns "overflow" q1 (either 0 or 1). +*/ + uint32_t overflow = 0; + __asm + { + ; Dividend u in EDX:EAX, divisor in v + mov ebx, u + mov eax, dword ptr [ebx] + mov edx, dword ptr [ebx+4] + ; Catch overflow (edx >= divisor) + cmp edx, v + jb no_overflow + ; If so, set edx = edx - divisor and flag it + sub edx, v + mov overflow, 1 +no_overflow: + div v + ; Quotient in EAX, Remainder in EDX + mov ebx, pq + mov dword ptr [ebx], eax + mov ebx, pr + mov dword ptr [ebx], edx + } + return overflow; +} + +#else +/* Default routines the "long" way */ + +int spMultiply(DIGIT_T p[2], DIGIT_T x, DIGIT_T y) +{ /* Computes p = x * y */ + /* Ref: Arbitrary Precision Computation + http://numbers.computation.free.fr/Constants/constants.html + + high p1 p0 low + +--------+--------+--------+--------+ + | x1*y1 | x0*y0 | + +--------+--------+--------+--------+ + +-+--------+--------+ + |1| (x0*y1 + x1*y1) | + +-+--------+--------+ + ^carry from adding (x0*y1+x1*y1) together + +-+ + |1|< carry from adding LOHALF t + +-+ to high half of p0 + */ + DIGIT_T x0, y0, x1, y1; + DIGIT_T t, u, carry; + + /* Split each x,y into two halves + x = x0 + B*x1 + y = y0 + B*y1 + where B = 2^16, half the digit size + Product is + xy = x0y0 + B(x0y1 + x1y0) + B^2(x1y1) + */ + + x0 = LOHALF(x); + x1 = HIHALF(x); + y0 = LOHALF(y); + y1 = HIHALF(y); + + /* Calc low part - no carry */ + p[0] = x0 * y0; + + /* Calc middle part */ + t = x0 * y1; + u = x1 * y0; + t += u; + if (t < u) + carry = 1; + else + carry = 0; + + /* This carry will go to high half of p[1] + + high half of t into low half of p[1] */ + carry = TOHIGH(carry) + HIHALF(t); + + /* Add low half of t to high half of p[0] */ + t = TOHIGH(t); + p[0] += t; + if (p[0] < t) + carry++; + + p[1] = x1 * y1; + p[1] += carry; + + + return 0; +} + +/* spDivide */ + +#define B (MAX_HALF_DIGIT + 1) + +static void spMultSub(DIGIT_T uu[2], DIGIT_T qhat, DIGIT_T v1, DIGIT_T v0) +{ + /* Compute uu = uu - q(v1v0) + where uu = u3u2u1u0, u3 = 0 + and u_n, v_n are all half-digits + even though v1, v2 are passed as full digits. + */ + DIGIT_T p0, p1, t; + + p0 = qhat * v0; + p1 = qhat * v1; + t = p0 + TOHIGH(LOHALF(p1)); + uu[0] -= t; + if (uu[0] > MAX_DIGIT - t) + uu[1]--; /* Borrow */ + uu[1] -= HIHALF(p1); +} + +DIGIT_T spDivide(DIGIT_T *q, DIGIT_T *r, const DIGIT_T u[2], DIGIT_T v) +{ /* Computes quotient q = u / v, remainder r = u mod v + where u is a double digit + and q, v, r are single precision digits. + Returns high digit of quotient (max value is 1) + CAUTION: Assumes normalised such that v1 >= b/2 + where b is size of HALF_DIGIT + i.e. the most significant bit of v should be one + + In terms of half-digits in Knuth notation: + (q2q1q0) = (u4u3u2u1u0) / (v1v0) + (r1r0) = (u4u3u2u1u0) mod (v1v0) + for m = 2, n = 2 where u4 = 0 + q2 is either 0 or 1. + We set q = (q1q0) and return q2 as "overflow" + */ + DIGIT_T qhat, rhat, t, v0, v1, u0, u1, u2, u3; + DIGIT_T uu[2], q2; + + /* Check for normalisation */ + if (!(v & HIBITMASK)) + { /* Stop if _ignore_assert is working, else return error */ + _ignore_assert(v & HIBITMASK); + *q = *r = 0; + return MAX_DIGIT; + } + + /* Split up into half-digits */ + v0 = LOHALF(v); + v1 = HIHALF(v); + u0 = LOHALF(u[0]); + u1 = HIHALF(u[0]); + u2 = LOHALF(u[1]); + u3 = HIHALF(u[1]); + + /* Do three rounds of Knuth Algorithm D Vol 2 p272 */ + + /* ROUND 1. Set j = 2 and calculate q2 */ + /* Estimate qhat = (u4u3)/v1 = 0 or 1 + then set (u4u3u2) -= qhat(v1v0) + where u4 = 0. + */ +/* [Replaced in Version 2] --> + qhat = u3 / v1; + if (qhat > 0) + { + rhat = u3 - qhat * v1; + t = TOHIGH(rhat) | u2; + if (qhat * v0 > t) + qhat--; + } +<-- */ + qhat = (u3 < v1 ? 0 : 1); + if (qhat > 0) + { /* qhat is one, so no need to mult */ + rhat = u3 - v1; + /* t = r.b + u2 */ + t = TOHIGH(rhat) | u2; + if (v0 > t) + qhat--; + } + + uu[1] = 0; /* (u4) */ + uu[0] = u[1]; /* (u3u2) */ + if (qhat > 0) + { + /* (u4u3u2) -= qhat(v1v0) where u4 = 0 */ + spMultSub(uu, qhat, v1, v0); + if (HIHALF(uu[1]) != 0) + { /* Add back */ + qhat--; + uu[0] += v; + uu[1] = 0; + } + } + q2 = qhat; + + /* ROUND 2. Set j = 1 and calculate q1 */ + /* Estimate qhat = (u3u2) / v1 + then set (u3u2u1) -= qhat(v1v0) + */ + t = uu[0]; + qhat = t / v1; + rhat = t - qhat * v1; + /* Test on v0 */ + t = TOHIGH(rhat) | u1; + if ((qhat == B) || (qhat * v0 > t)) + { + qhat--; + rhat += v1; + t = TOHIGH(rhat) | u1; + if ((rhat < B) && (qhat * v0 > t)) + qhat--; + } + + /* Multiply and subtract + (u3u2u1)' = (u3u2u1) - qhat(v1v0) + */ + uu[1] = HIHALF(uu[0]); /* (0u3) */ + uu[0] = TOHIGH(LOHALF(uu[0])) | u1; /* (u2u1) */ + spMultSub(uu, qhat, v1, v0); + if (HIHALF(uu[1]) != 0) + { /* Add back */ + qhat--; + uu[0] += v; + uu[1] = 0; + } + + /* q1 = qhat */ + *q = TOHIGH(qhat); + + /* ROUND 3. Set j = 0 and calculate q0 */ + /* Estimate qhat = (u2u1) / v1 + then set (u2u1u0) -= qhat(v1v0) + */ + t = uu[0]; + qhat = t / v1; + rhat = t - qhat * v1; + /* Test on v0 */ + t = TOHIGH(rhat) | u0; + if ((qhat == B) || (qhat * v0 > t)) + { + qhat--; + rhat += v1; + t = TOHIGH(rhat) | u0; + if ((rhat < B) && (qhat * v0 > t)) + qhat--; + } + + /* Multiply and subtract + (u2u1u0)" = (u2u1u0)' - qhat(v1v0) + */ + uu[1] = HIHALF(uu[0]); /* (0u2) */ + uu[0] = TOHIGH(LOHALF(uu[0])) | u0; /* (u1u0) */ + spMultSub(uu, qhat, v1, v0); + if (HIHALF(uu[1]) != 0) + { /* Add back */ + qhat--; + uu[0] += v; + uu[1] = 0; + } + + /* q0 = qhat */ + *q |= LOHALF(qhat); + + /* Remainder is in (u1u0) i.e. uu[0] */ + *r = uu[0]; + return q2; +} + +#endif /* Conditional single-digit mult & div routines */ + +/************************/ +/* ARITHMETIC FUNCTIONS */ +/************************/ +DIGIT_T mpAdd(DIGIT_T w[], const DIGIT_T u[], const DIGIT_T v[], size_t ndigits) +{ + /* Calculates w = u + v + where w, u, v are multiprecision integers of ndigits each + Returns carry if overflow. Carry = 0 or 1. + + Ref: Knuth Vol 2 Ch 4.3.1 p 266 Algorithm A. + */ + + DIGIT_T k; + size_t j; + + _ignore_assert(w != v); + + /* Step A1. Initialise */ + k = 0; + + for (j = 0; j < ndigits; j++) + { + /* Step A2. Add digits w_j = (u_j + v_j + k) + Set k = 1 if carry (overflow) occurs + */ + w[j] = u[j] + k; + if (w[j] < k) + k = 1; + else + k = 0; + + w[j] += v[j]; + if (w[j] < v[j]) + k++; + + } /* Step A3. Loop on j */ + + return k; /* w_n = k */ +} + +DIGIT_T mpSubtract(DIGIT_T w[], const DIGIT_T u[], const DIGIT_T v[], size_t ndigits) +{ + /* Calculates w = u - v where u >= v + w, u, v are multiprecision integers of ndigits each + Returns 0 if OK, or 1 if v > u. + + Ref: Knuth Vol 2 Ch 4.3.1 p 267 Algorithm S. + */ + + DIGIT_T k; + size_t j; + + _ignore_assert(w != v); + + /* Step S1. Initialise */ + k = 0; + + for (j = 0; j < ndigits; j++) + { + /* Step S2. Subtract digits w_j = (u_j - v_j - k) + Set k = 1 if borrow occurs. + */ + w[j] = u[j] - k; + if (w[j] > MAX_DIGIT - k) + k = 1; + else + k = 0; + + w[j] -= v[j]; + if (w[j] > MAX_DIGIT - v[j]) + k++; + + } /* Step S3. Loop on j */ + + return k; /* Should be zero if u >= v */ +} + +int mpMultiply(DIGIT_T w[], const DIGIT_T u[], const DIGIT_T v[], size_t ndigits) +{ + /* Computes product w = u * v + where u, v are multiprecision integers of ndigits each + and w is a multiprecision integer of 2*ndigits + + Ref: Knuth Vol 2 Ch 4.3.1 p 268 Algorithm M. + */ + + DIGIT_T k, t[2]; + size_t i, j, m, n; + + _ignore_assert(w != u && w != v); + + m = n = ndigits; + + /* Step M1. Initialise */ + for (i = 0; i < 2 * m; i++) + w[i] = 0; + + for (j = 0; j < n; j++) + { + /* Step M2. Zero multiplier? */ + if (v[j] == 0) + { + w[j + m] = 0; + } + else + { + /* Step M3. Initialise i */ + k = 0; + for (i = 0; i < m; i++) + { + /* Step M4. Multiply and add */ + /* t = u_i * v_j + w_(i+j) + k */ + spMultiply(t, u[i], v[j]); + + t[0] += k; + if (t[0] < k) + t[1]++; + t[0] += w[i+j]; + if (t[0] < w[i+j]) + t[1]++; + + w[i+j] = t[0]; + k = t[1]; + } + /* Step M5. Loop on i, set w_(j+m) = k */ + w[j+m] = k; + } + } /* Step M6. Loop on j */ + + return 0; +} + +/* mpDivide */ + +static DIGIT_T mpMultSub(DIGIT_T wn, DIGIT_T w[], const DIGIT_T v[], + DIGIT_T q, size_t n) +{ /* Compute w = w - qv + where w = (WnW[n-1]...W[0]) + return modified Wn. + */ + DIGIT_T k, t[2]; + size_t i; + + if (q == 0) /* No change */ + return wn; + + k = 0; + + for (i = 0; i < n; i++) + { + spMultiply(t, q, v[i]); + w[i] -= k; + if (w[i] > MAX_DIGIT - k) + k = 1; + else + k = 0; + w[i] -= t[0]; + if (w[i] > MAX_DIGIT - t[0]) + k++; + k += t[1]; + } + + /* Cope with Wn not stored in array w[0..n-1] */ + wn -= k; + + return wn; +} + +static int QhatTooBig(DIGIT_T qhat, DIGIT_T rhat, + DIGIT_T vn2, DIGIT_T ujn2) +{ /* Returns true if Qhat is too big + i.e. if (Qhat * Vn-2) > (b.Rhat + Uj+n-2) + */ + DIGIT_T t[2]; + + spMultiply(t, qhat, vn2); + if (t[1] < rhat) + return 0; + else if (t[1] > rhat) + return 1; + else if (t[0] > ujn2) + return 1; + + return 0; +} + +int mpDivide(DIGIT_T q[], DIGIT_T r[], const DIGIT_T u[], + size_t udigits, DIGIT_T v[], size_t vdigits) +{ /* Computes quotient q = u / v and remainder r = u mod v + where q, r, u are multiple precision digits + all of udigits and the divisor v is vdigits. + + Ref: Knuth Vol 2 Ch 4.3.1 p 272 Algorithm D. + + Do without extra storage space, i.e. use r[] for + normalised u[], unnormalise v[] at end, and cope with + extra digit Uj+n added to u after normalisation. + + WARNING: this trashes q and r first, so cannot do + u = u / v or v = u mod v. + It also changes v temporarily so cannot make it const. + */ + size_t shift; + int n, m, j; + DIGIT_T bitmask, overflow; + DIGIT_T qhat, rhat, t[2]; + DIGIT_T *uu, *ww; + int qhatOK, cmp; + + /* Clear q and r */ + mpSetZero(q, udigits); + mpSetZero(r, udigits); + + /* Work out exact sizes of u and v */ + n = (int)mpSizeof(v, vdigits); + m = (int)mpSizeof(u, udigits); + m -= n; + + /* Catch special cases */ + if (n == 0) + return -1; /* Error: divide by zero */ + + if (n == 1) + { /* Use short division instead */ + r[0] = mpShortDiv(q, u, v[0], udigits); + return 0; + } + + if (m < 0) + { /* v > u, so just set q = 0 and r = u */ + mpSetEqual(r, u, udigits); + return 0; + } + + if (m == 0) + { /* u and v are the same length */ + cmp = mpCompare(u, v, (size_t)n); + if (cmp < 0) + { /* v > u, as above */ + mpSetEqual(r, u, udigits); + return 0; + } + else if (cmp == 0) + { /* v == u, so set q = 1 and r = 0 */ + mpSetDigit(q, 1, udigits); + return 0; + } + } + + /* In Knuth notation, we have: + Given + u = (Um+n-1 ... U1U0) + v = (Vn-1 ... V1V0) + Compute + q = u/v = (QmQm-1 ... Q0) + r = u mod v = (Rn-1 ... R1R0) + */ + + /* Step D1. Normalise */ + /* Requires high bit of Vn-1 + to be set, so find most signif. bit then shift left, + i.e. d = 2^shift, u' = u * d, v' = v * d. + */ + bitmask = HIBITMASK; + for (shift = 0; shift < BITS_PER_DIGIT; shift++) + { + if (v[n-1] & bitmask) + break; + bitmask >>= 1; + } + + /* Normalise v in situ - NB only shift non-zero digits */ + overflow = mpShiftLeft(v, v, shift, n); + + /* Copy normalised dividend u*d into r */ + overflow = mpShiftLeft(r, u, shift, n + m); + uu = r; /* Use ptr to keep notation constant */ + + t[0] = overflow; /* Extra digit Um+n */ + + /* Step D2. Initialise j. Set j = m */ + for (j = m; j >= 0; j--) + { + /* Step D3. Set Qhat = [(b.Uj+n + Uj+n-1)/Vn-1] + and Rhat = remainder */ + qhatOK = 0; + t[1] = t[0]; /* This is Uj+n */ + t[0] = uu[j+n-1]; + overflow = spDivide(&qhat, &rhat, t, v[n-1]); + + /* Test Qhat */ + if (overflow) + { /* Qhat == b so set Qhat = b - 1 */ + qhat = MAX_DIGIT; + rhat = uu[j+n-1]; + rhat += v[n-1]; + if (rhat < v[n-1]) /* Rhat >= b, so no re-test */ + qhatOK = 1; + } + /* [VERSION 2: Added extra test "qhat && "] */ + if (qhat && !qhatOK && QhatTooBig(qhat, rhat, v[n-2], uu[j+n-2])) + { /* If Qhat.Vn-2 > b.Rhat + Uj+n-2 + decrease Qhat by one, increase Rhat by Vn-1 + */ + qhat--; + rhat += v[n-1]; + /* Repeat this test if Rhat < b */ + if (!(rhat < v[n-1])) + if (QhatTooBig(qhat, rhat, v[n-2], uu[j+n-2])) + qhat--; + } + + + /* Step D4. Multiply and subtract */ + ww = &uu[j]; + overflow = mpMultSub(t[1], ww, v, qhat, (size_t)n); + + /* Step D5. Test remainder. Set Qj = Qhat */ + q[j] = qhat; + if (overflow) + { /* Step D6. Add back if D4 was negative */ + q[j]--; + overflow = mpAdd(ww, ww, v, (size_t)n); + } + + t[0] = uu[j+n-1]; /* Uj+n on next round */ + + } /* Step D7. Loop on j */ + + /* Clear high digits in uu */ + for (j = n; j < m+n; j++) + uu[j] = 0; + + /* Step D8. Unnormalise. */ + + mpShiftRight(r, r, shift, n); + mpShiftRight(v, v, shift, n); + + return 0; +} + + +int mpSquare(DIGIT_T w[], const DIGIT_T x[], size_t ndigits) +/* New in Version 2.0 */ +{ + /* Computes square w = x * x + where x is a multiprecision integer of ndigits + and w is a multiprecision integer of 2*ndigits + + Ref: Menezes p596 Algorithm 14.16 with errata. + */ + + DIGIT_T k, p[2], u[2], cbit, carry; + size_t i, j, t, i2, cpos; + + _ignore_assert(w != x); + + t = ndigits; + + /* 1. For i from 0 to (2t-1) do: w_i = 0 */ + i2 = t << 1; + for (i = 0; i < i2; i++) + w[i] = 0; + + carry = 0; + cpos = i2-1; + /* 2. For i from 0 to (t-1) do: */ + for (i = 0; i < t; i++) + { + /* 2.1 (uv) = w_2i + x_i * x_i, w_2i = v, c = u + Careful, w_2i may be double-prec + */ + i2 = i << 1; /* 2*i */ + spMultiply(p, x[i], x[i]); + p[0] += w[i2]; + if (p[0] < w[i2]) + p[1]++; + k = 0; /* p[1] < b, so no overflow here */ + if (i2 == cpos && carry) + { + p[1] += carry; + if (p[1] < carry) + k++; + carry = 0; + } + w[i2] = p[0]; + u[0] = p[1]; + u[1] = k; + + /* 2.2 for j from (i+1) to (t-1) do: + (uv) = w_{i+j} + 2x_j * x_i + c, + w_{i+j} = v, c = u, + u is double-prec + w_{i+j} is dbl if [i+j] == cpos + */ + k = 0; + for (j = i+1; j < t; j++) + { + /* p = x_j * x_i */ + spMultiply(p, x[j], x[i]); + /* p = 2p <=> p <<= 1 */ + cbit = (p[0] & HIBITMASK) != 0; + k = (p[1] & HIBITMASK) != 0; + p[0] <<= 1; + p[1] <<= 1; + p[1] |= cbit; + /* p = p + c */ + p[0] += u[0]; + if (p[0] < u[0]) + { + p[1]++; + if (p[1] == 0) + k++; + } + p[1] += u[1]; + if (p[1] < u[1]) + k++; + /* p = p + w_{i+j} */ + p[0] += w[i+j]; + if (p[0] < w[i+j]) + { + p[1]++; + if (p[1] == 0) + k++; + } + if ((i+j) == cpos && carry) + { /* catch overflow from last round */ + p[1] += carry; + if (p[1] < carry) + k++; + carry = 0; + } + /* w_{i+j} = v, c = u */ + w[i+j] = p[0]; + u[0] = p[1]; + u[1] = k; + } + /* 2.3 w_{i+t} = u */ + w[i+t] = u[0]; + /* remember overflow in w_{i+t} */ + carry = u[1]; + cpos = i+t; + } + + /* (NB original step 3 deleted in Menezes errata) */ + + /* Return w */ + + return 0; +} + +/** Returns true if a == b, else false. Not constant-time. */ +int mpEqual(const DIGIT_T a[], const DIGIT_T b[], size_t ndigits) +{ + + /* if (ndigits == 0) return -1; // deleted [v2.5] */ + + while (ndigits--) + { + if (a[ndigits] != b[ndigits]) + return 0; /* False */ + } + + return (!0); /* True */ +} + +/** Returns sign of (a - b) as 0, +1 or -1. Not constant-time. */ +int mpCompare(const DIGIT_T a[], const DIGIT_T b[], size_t ndigits) +{ + /* if (ndigits == 0) return 0; // deleted [v2.5] */ + + while (ndigits--) + { + if (a[ndigits] > b[ndigits]) + return 1; /* GT */ + if (a[ndigits] < b[ndigits]) + return -1; /* LT */ + } + + return 0; /* EQ */ +} + +/** Returns true if a == 0, else false. Not constant-time. */ +int mpIsZero(const DIGIT_T a[], size_t ndigits) +{ + size_t i; + + /* if (ndigits == 0) return -1; // deleted [v2.5] */ + + for (i = 0; i < ndigits; i++) /* Start at lsb */ + { + if (a[i] != 0) + return 0; /* False */ + } + + return (!0); /* True */ +} + +/* CONSTANT-TIME COMPARISONS */ +/* New in [v2.5] but renamed as _ct in [v.6] */ + +/* Constant-time comparisons of unsigned DIGIT_T's */ +#define IS_NONZERO_DIGIT(x) (((x)|(~(x)+1)) >> (BITS_PER_DIGIT-1)) +#define IS_ZER0_DIGIT(x) (1 ^ IS_NONZERO_DIGIT((x))) + +/** Returns 1 if a == b, else 0 (constant-time) */ +int mpEqual_ct(const DIGIT_T a[], const DIGIT_T b[], size_t ndigits) +{ + DIGIT_T dif = 0; + + while (ndigits--) { + dif |= a[ndigits] ^ b[ndigits]; + } + + return (IS_ZER0_DIGIT(dif)); +} + +/** Returns 1 if a == 0, else 0 (constant-time) */ +int mpIsZero_ct(const DIGIT_T a[], size_t ndigits) +{ + DIGIT_T dif = 0; + const DIGIT_T ZERO = 0; + + while (ndigits--) { + dif |= a[ndigits] ^ ZERO; + } + + return (IS_ZER0_DIGIT(dif)); +} + +/** Returns sign of (a - b) as 0, +1 or -1 (constant-time) */ +int mpCompare_ct(const DIGIT_T a[], const DIGIT_T b[], size_t ndigits) +{ + /* All these vars are either 0 or 1 */ + unsigned int gt = 0; + unsigned int lt = 0; + unsigned int mask = 1; /* Set to zero once first inequality found */ + unsigned int c; + + while (ndigits--) { + gt |= (a[ndigits] > b[ndigits]) & mask; + lt |= (a[ndigits] < b[ndigits]) & mask; + c = (gt | lt); + mask &= (c-1); /* Unchanged if c==0 or mask==0, else mask=0 */ + } + + return (int)gt - (int)lt; /* EQ=0 GT=+1 LT=-1 */ +} + +/** Returns number of significant digits in a */ +size_t mpSizeof(const DIGIT_T a[], size_t ndigits) +{ + while(ndigits--) + { + if (a[ndigits] != 0) + return (++ndigits); + } + return 0; +} + +size_t mpBitLength(const DIGIT_T d[], size_t ndigits) +/* Returns no of significant bits in d */ +{ + size_t n, i, bits; + DIGIT_T mask; + + if (!d || ndigits == 0) + return 0; + + n = mpSizeof(d, ndigits); + if (0 == n) return 0; + + for (i = 0, mask = HIBITMASK; mask > 0; mask >>= 1, i++) + { + if (d[n-1] & mask) + break; + } + + bits = n * BITS_PER_DIGIT - i; + + return bits; +} + +void mpSetEqual(DIGIT_T a[], const DIGIT_T b[], size_t ndigits) +{ /* Sets a = b */ + size_t i; + + for (i = 0; i < ndigits; i++) + { + a[i] = b[i]; + } +} + +volatile DIGIT_T mpSetZero(volatile DIGIT_T a[], size_t ndigits) +{ /* Sets a = 0 */ + + /* Prevent optimiser ignoring this */ + volatile DIGIT_T optdummy; + volatile DIGIT_T *p = a; + + while (ndigits--) + a[ndigits] = 0; + + optdummy = *p; + return optdummy; +} + +void mpSetDigit(DIGIT_T a[], DIGIT_T d, size_t ndigits) +{ /* Sets a = d where d is a single digit */ + size_t i; + + for (i = 1; i < ndigits; i++) + { + a[i] = 0; + } + a[0] = d; +} + +/**********************/ +/* BIT-WISE FUNCTIONS */ +/**********************/ +DIGIT_T mpShiftLeft(DIGIT_T a[], const DIGIT_T *b, + size_t shift, size_t ndigits) +{ /* Computes a = b << shift */ + /* [v2.1] Modified to cope with shift > BITS_PERDIGIT */ + size_t i, y, nw, bits; + DIGIT_T mask, carry, nextcarry; + + /* Do we shift whole digits? */ + if (shift >= BITS_PER_DIGIT) + { + nw = shift / BITS_PER_DIGIT; + i = ndigits; + while (i--) + { + if (i >= nw) + a[i] = b[i-nw]; + else + a[i] = 0; + } + /* Call again to shift bits inside digits */ + bits = shift % BITS_PER_DIGIT; + carry = b[ndigits-nw] << bits; + if (bits) + carry |= mpShiftLeft(a, a, bits, ndigits); + return carry; + } + else + { + bits = shift; + } + + /* Construct mask = high bits set */ + mask = ~(~(DIGIT_T)0 >> bits); + + y = BITS_PER_DIGIT - bits; + carry = 0; + for (i = 0; i < ndigits; i++) + { + nextcarry = (b[i] & mask) >> y; + a[i] = b[i] << bits | carry; + carry = nextcarry; + } + + return carry; +} + +DIGIT_T mpShiftRight(DIGIT_T a[], const DIGIT_T b[], size_t shift, size_t ndigits) +{ /* Computes a = b >> shift */ + /* [v2.1] Modified to cope with shift > BITS_PERDIGIT */ + size_t i, y, nw, bits; + DIGIT_T mask, carry, nextcarry; + + /* Do we shift whole digits? */ + if (shift >= BITS_PER_DIGIT) + { + nw = shift / BITS_PER_DIGIT; + for (i = 0; i < ndigits; i++) + { + if ((i+nw) < ndigits) + a[i] = b[i+nw]; + else + a[i] = 0; + } + /* Call again to shift bits inside digits */ + bits = shift % BITS_PER_DIGIT; + carry = b[nw-1] >> bits; + if (bits) + carry |= mpShiftRight(a, a, bits, ndigits); + return carry; + } + else + { + bits = shift; + } + + /* Construct mask to set low bits */ + /* (thanks to Jesse Chisholm for suggesting this improved technique) */ + mask = ~(~(DIGIT_T)0 << bits); + + y = BITS_PER_DIGIT - bits; + carry = 0; + i = ndigits; + while (i--) + { + nextcarry = (b[i] & mask) << y; + a[i] = b[i] >> bits | carry; + carry = nextcarry; + } + + return carry; +} + +int mpSetBit(DIGIT_T a[], size_t ndigits, size_t ibit, int value) + /* Set bit n (0..nbits-1) with value 1 or 0 */ +{ + size_t idigit, bit_to_set; + DIGIT_T mask; + + /* Which digit? (0-based) */ + idigit = ibit / BITS_PER_DIGIT; + if (idigit >= ndigits) + return -1; + + /* Set mask */ + bit_to_set = ibit % BITS_PER_DIGIT; + mask = 0x01 << bit_to_set; + + if (value) + a[idigit] |= mask; + else + a[idigit] &= (~mask); + + return 0; +} + +int mpGetBit(const DIGIT_T a[], size_t ndigits, size_t ibit) + /* Returns value 1 or 0 of bit n (0..nbits-1); or -1 if out of range */ +{ + size_t idigit, bit_to_get; + DIGIT_T mask; + + /* Which digit? (0-based) */ + idigit = ibit / BITS_PER_DIGIT; + if (idigit >= ndigits) + return -1; + + /* Set mask */ + bit_to_get = ibit % BITS_PER_DIGIT; + mask = 0x01 << bit_to_get; + + return ((a[idigit] & mask) ? 1 : 0); +} + +void mpModPowerOf2(DIGIT_T a[], size_t ndigits, size_t L) + /* Computes a = a mod 2^L */ + /* i.e. clears all bits >= L */ +{ + size_t i, nw, bits; + DIGIT_T mask; + + /* High digits to clear */ + nw = L / BITS_PER_DIGIT; + for (i = nw+1; i < ndigits; i++) + a[i] = 0; + /* Low bits to keep */ + bits = L % BITS_PER_DIGIT; + mask = ~(~0 << bits); + if (ndigits > nw) + a[nw] &= mask; +} + +void mpXorBits(DIGIT_T a[], const DIGIT_T b[], const DIGIT_T c[], size_t ndigits) + /* Computes bitwise a = b XOR c */ +{ + size_t i; + for (i = 0; i < ndigits; i++) + a[i] = b[i] ^ c[i]; +} + +void mpOrBits(DIGIT_T a[], const DIGIT_T b[], const DIGIT_T c[], size_t ndigits) + /* Computes bitwise a = b OR c */ +{ + size_t i; + for (i = 0; i < ndigits; i++) + a[i] = b[i] | c[i]; +} + +void mpAndBits(DIGIT_T a[], const DIGIT_T b[], const DIGIT_T c[], size_t ndigits) + /* Computes bitwise a = b AND c */ +{ + size_t i; + for (i = 0; i < ndigits; i++) + a[i] = b[i] & c[i]; +} + +void mpNotBits(DIGIT_T a[], const DIGIT_T b[], size_t ndigits) + /* Computes bitwise a = NOT b */ +{ + size_t i; + for (i = 0; i < ndigits; i++) + a[i] = ~b[i]; +} + +/*****************************************/ +/* FUNCTIONS WITH A SINGLE (SHORT) DIGIT */ +/*****************************************/ +DIGIT_T mpShortAdd(DIGIT_T w[], const DIGIT_T u[], DIGIT_T v, + size_t ndigits) +{ + /* Calculates w = u + v + where w, u are multiprecision integers of ndigits each + and v is a single precision digit. + Returns carry if overflow. + + Ref: Derived from Knuth Algorithm A. + */ + + DIGIT_T k; + size_t j; + + k = 0; + + /* Add v to first digit of u */ + w[0] = u[0] + v; + if (w[0] < v) + k = 1; + else + k = 0; + + /* Add carry to subsequent digits */ + for (j = 1; j < ndigits; j++) + { + w[j] = u[j] + k; + if (w[j] < k) + k = 1; + else + k = 0; + } + + return k; +} + +DIGIT_T mpShortSub(DIGIT_T w[], const DIGIT_T u[], DIGIT_T v, + size_t ndigits) +{ + /* Calculates w = u - v + where w, u are multiprecision integers of ndigits each + and v is a single precision digit. + Returns borrow: 0 if u >= v, or 1 if v > u. + + Ref: Derived from Knuth Algorithm S. + */ + + DIGIT_T k; + size_t j; + + k = 0; + + /* Subtract v from first digit of u */ + w[0] = u[0] - v; + if (w[0] > MAX_DIGIT - v) + k = 1; + else + k = 0; + + /* Subtract borrow from subsequent digits */ + for (j = 1; j < ndigits; j++) + { + w[j] = u[j] - k; + if (w[j] > MAX_DIGIT - k) + k = 1; + else + k = 0; + } + + return k; +} + +DIGIT_T mpShortMult(DIGIT_T w[], const DIGIT_T u[], DIGIT_T v, + size_t ndigits) +{ + /* Computes product w = u * v + Returns overflow k + where w, u are multiprecision integers of ndigits each + and v, k are single precision digits + + Ref: Knuth Algorithm M. + */ + + DIGIT_T k, t[2]; + size_t j; + + if (v == 0) + { /* [2005-08-29] Set w = 0 */ + for (j = 0; j < ndigits; j++) + w[j] = 0; + return 0; + } + + k = 0; + for (j = 0; j < ndigits; j++) + { + /* t = x_i * v */ + spMultiply(t, u[j], v); + /* w_i = LOHALF(t) + carry */ + w[j] = t[0] + k; + /* Overflow? */ + if (w[j] < k) + t[1]++; + /* Carry forward HIHALF(t) */ + k = t[1]; + } + + return k; +} + +DIGIT_T mpShortDiv(DIGIT_T q[], const DIGIT_T u[], DIGIT_T v, + size_t ndigits) +{ + /* Calculates quotient q = u div v + Returns remainder r = u mod v + where q, u are multiprecision integers of ndigits each + and r, v are single precision digits. + + Makes no assumptions about normalisation. + + Ref: Knuth Vol 2 Ch 4.3.1 Exercise 16 p625 + */ + size_t j; + DIGIT_T t[2], r; + size_t shift; + DIGIT_T bitmask, overflow, *uu; + + if (ndigits == 0) return 0; + if (v == 0) return 0; /* Divide by zero error */ + + /* Normalise first */ + /* Requires high bit of V + to be set, so find most signif. bit then shift left, + i.e. d = 2^shift, u' = u * d, v' = v * d. + */ + bitmask = HIBITMASK; + for (shift = 0; shift < BITS_PER_DIGIT; shift++) + { + if (v & bitmask) + break; + bitmask >>= 1; + } + + v <<= shift; + overflow = mpShiftLeft(q, u, shift, ndigits); + uu = q; + + /* Step S1 - modified for extra digit. */ + r = overflow; /* New digit Un */ + j = ndigits; + while (j--) + { + /* Step S2. */ + t[1] = r; + t[0] = uu[j]; + overflow = spDivide(&q[j], &r, t, v); + } + + /* Unnormalise */ + r >>= shift; + + return r; +} + +DIGIT_T mpShortMod(const DIGIT_T a[], DIGIT_T d, size_t ndigits) +{ + /* Calculates r = a mod d + where a is a multiprecision integer of ndigits + and r, d are single precision digits. + Use remainder from divide function. + */ + + DIGIT_T r = 0; +/* Allocate temp storage */ +#ifdef NO_ALLOCS + DIGIT_T q[MAX_FIXED_DIGITS * 2]; + _ignore_assert(ndigits <= MAX_FIXED_DIGITS); +#else + DIGIT_T *q; + q = mpAlloc(ndigits * 2); +#endif + + r = mpShortDiv(q, a, d, ndigits); + + mpDESTROY(q, ndigits); + + return r; +} + +/** Returns sign of (a - d) where d is a single digit */ +int mpShortCmp(const DIGIT_T a[], DIGIT_T d, size_t ndigits) +{ + size_t i; + int gt = 0; + int lt = 0; + + /* Zero-length a => a is zero */ + if (ndigits == 0) return (d ? -1 : 0); + + /* If |a| > 1 then a > d */ + for (i = 1; i < ndigits; i++) { + if (a[i] != 0) + return 1; /* GT */ + } + + lt = (a[0] < d); + gt = (a[0] > d); + + return gt - lt; /* EQ=0 GT=+1 LT=-1 */ +} + +/** Returns true if a == d, else false, where d is a single digit */ +int mpShortIsEqual(const DIGIT_T a[], DIGIT_T d, size_t ndigits) +{ + return (0 == mpShortCmp(a, d, ndigits)); +} + +/** Returns the least significant digit in a */ +DIGIT_T mpToShort(const DIGIT_T a[], size_t ndigits) +{ + return a[0]; +} + + + +/*********************************/ +/* FUNCTIONS FOR SIGNED INTEGERS */ +/*********************************/ +/* Added [v2.2] */ + +/** Returns TRUE (1) if x < 0, else FALSE (0) */ +int mpIsNegative(const DIGIT_T x[], size_t ndigits) +{ + return ((x[ndigits-1] & HIBITMASK) != 0); +} + +/** Sets x = -y */ +int mpChs(DIGIT_T x[], const DIGIT_T y[], size_t ndigits) +{ + int isneg = mpIsNegative(y, ndigits); + + if (isneg) + { /* negative to positive: x = ~(y-1) */ + mpShortSub(x, y, 1, ndigits); + mpNotBits(x, x, ndigits); + } + else + { /* positive to negative: x = ~(y)+1 */ + /* [v2.3] FIXED: thanks to Valery Blazhnov of www.lissi.ru */ + mpNotBits(x, y, ndigits); + mpShortAdd(x, x, 1, ndigits); + } + + return isneg; +} + +/** Sets x = |y| */ +int mpAbs(DIGIT_T x[], const DIGIT_T y[], size_t ndigits) +{ + int isneg = mpIsNegative(y, ndigits); + + if (isneg) + mpChs(x, y, ndigits); + else + mpSetEqual(x, y, ndigits); + + return isneg; +} + +/*******************/ +/* PRINT FUNCTIONS */ +/*******************/ +/* [v2.1] changed to use C99 format types */ +void mpPrint(const DIGIT_T *a, size_t len) +{ + while (len--) + { + printf("%08" PRIxBIGD " ", a[len]); + } +} + +void mpPrintNL(const DIGIT_T *a, size_t len) +{ + size_t i = 0; + + while (len--) + { + if ((i % 8) == 0 && i) + printf("\n"); + printf("%08" PRIxBIGD " ", a[len]); + i++; + } + printf("\n"); +} + +void mpPrintTrim(const DIGIT_T *a, size_t len) +{ + /* Trim leading digits which are zero */ + while (len--) + { + if (a[len] != 0) + break; + } + len++; + /* Catch empty len to show 0 */ + if (0 == len) len = 1; + + mpPrint(a, len); +} + +void mpPrintTrimNL(const DIGIT_T *a, size_t len) +{ + /* Trim leading zeroes */ + while (len--) + { + if (a[len] != 0) + break; + } + len++; + /* Catch empty len to show 0 */ + if (0 == len) len = 1; + + mpPrintNL(a, len); +} + +void mpPrintHex(const char *prefix, const DIGIT_T *a, size_t len, const char *suffix) +{ + if (prefix) printf("%s", prefix); + /* Trim leading digits which are zero */ + while (len--) + { + if (a[len] != 0) + break; + } + len++; + if (0 == len) len = 1; + /* print first digit without leading zeros */ + printf("%" PRIxBIGD, a[--len]); + while (len--) + { + printf("%08" PRIxBIGD, a[len]); + } + if (suffix) printf("%s", suffix); +} + +void mpPrintDecimal(const char *prefix, const DIGIT_T *a, size_t len, const char *suffix) +{ +#ifdef NO_ALLOCS + char s[MAX_ALLOC_SIZE*3]; // [v2.6] increased +#else + char *s; +#endif + size_t nc; + /* Put big digit into a string of decimal chars */ + nc = mpConvToDecimal(a, len, NULL, 0); + ALLOC_BYTES(s, nc + 1); + nc = mpConvToDecimal(a, len, s, nc + 1); + if (prefix) printf("%s", prefix); + printf("%s", s); + if (suffix) printf("%s", suffix); + FREE_BYTES(s, nc + 1); +} + +/* ADDED [v2.5] */ +void mpPrintDecimalSigned(const char *prefix, DIGIT_T *a, size_t len, const char *suffix) +{ +#ifdef NO_ALLOCS + char s[MAX_ALLOC_SIZE*3]; // [v2.6] increased +#else + char *s; +#endif + size_t nc; + int isneg = 0; + if (prefix) printf("%s", prefix); + if (mpIsNegative(a, len)) { + /* NB changes a in situ temporarily */ + mpChs(a, a, len); + printf("-"); + isneg = 1; + } + /* Put big digit into a string of decimal chars */ + nc = mpConvToDecimal(a, len, NULL, 0); + ALLOC_BYTES(s, nc + 1); + nc = mpConvToDecimal(a, len, s, nc + 1); + printf("%s", s); + if (suffix) printf("%s", suffix); + if (isneg) { + mpChs(a, a, len); + } + FREE_BYTES(s, nc + 1); +} + +/* ADDED [v2.6] */ +void mpPrintBits(const char *prefix, DIGIT_T *a, size_t ndigits, const char *suffix) +{ + int nbits, i, v; + if (prefix) printf("%s", prefix); + nbits = (int)mpBitLength(a, ndigits); + for (i = nbits; i > 0; i--) { + // Could use a mask here to avoid slightly more expensive calls to mpGetBit(), but hey! + v = mpGetBit(a, ndigits, i - 1); + printf("%c", (v ? '1' : '0')); + } + if (0 == nbits) printf("0"); + if (suffix) printf("%s", suffix); +} + +/************************/ +/* CONVERSION FUNCTIONS */ +/************************/ +size_t mpConvFromOctets(DIGIT_T a[], size_t ndigits, const unsigned char *c, size_t nbytes) +/* Converts nbytes octets into big digit a of max size ndigits + Returns actual number of digits set (may be larger than mpSizeof) +*/ +{ + size_t i; + int j, k; + DIGIT_T t; + + mpSetZero(a, ndigits); + + /* Read in octets, least significant first */ + /* i counts into big_d, j along c, and k is # bits to shift */ + for (i = 0, j = (int)nbytes - 1; i < ndigits && j >= 0; i++) + { + t = 0; + for (k = 0; j >= 0 && k < BITS_PER_DIGIT; j--, k += 8) + t |= ((DIGIT_T)c[j]) << k; + a[i] = t; + } + + return i; +} + +size_t mpConvToOctets(const DIGIT_T a[], size_t ndigits, unsigned char *c, size_t nbytes) +/* Convert big digit a into string of octets, in big-endian order, + padding on the left to nbytes or truncating if necessary. + Return number of octets required excluding leading zero bytes. +*/ +{ + int j, k, len; + DIGIT_T t; + size_t i, noctets, nbits; + + nbits = mpBitLength(a, ndigits); + noctets = (nbits + 7) / 8; + + len = (int)nbytes; + + for (i = 0, j = len - 1; i < ndigits && j >= 0; i++) + { + t = a[i]; + for (k = 0; j >= 0 && k < BITS_PER_DIGIT; j--, k += 8) + c[j] = (unsigned char)(t >> k); + } + + for ( ; j >= 0; j--) + c[j] = 0; + + return (size_t)noctets; +} + +static size_t uiceil(double x) +/* Returns ceil(x) as a non-negative integer or 0 if x < 0 */ +{ + size_t c; + + if (x < 0) return 0; + c = (size_t)x; + if ((x - c) > 0.0) + c++; + + return c; +} + +static size_t conv_to_base(const DIGIT_T a[], size_t ndigits, char *s, size_t smax, int base) +/* Convert big digit a into a string in given base format, + where s has max size smax. + Return number of chars set excluding leading zeroes. + smax can be 0 to find out the required length. +*/ +{ +#ifdef NO_ALLOCS + uint8_t bytes[MAX_ALLOC_SIZE], newdigits[MAX_ALLOC_SIZE*3]; // [v2.6] increased +#else + uint8_t *bytes, *newdigits; +#endif + const char DEC_DIGITS[] = "0123456789"; + const char HEX_DIGITS[] = "0123456789abcdef"; + size_t newlen, nbytes, nchars; + size_t n; + unsigned long t; + size_t i, j, isig; + const char *digits; + double factor; + + switch (base) + { + case 10: + digits = DEC_DIGITS; + factor = 2.40824; /* log(256)/log(10)=2.40824 */ + break; + case 16: + digits = HEX_DIGITS; + factor = 2.0; /* log(256)/log(16)=2.0 */ + break; + default: + _ignore_assert (10 == base || 16 == base); + return 0; + } + + /* Set up output string with null chars */ + if (smax > 0 && s) + { + memset(s, '0', smax-1); + s[smax-1] = '\0'; + } + + /* Catch zero input value (return 1 not zero) */ + if (mpIsZero(a, ndigits)) + { + if (smax > 0 && s) + s[1] = '\0'; + return 1; + } + + /* First, we convert to 8-bit octets (bytes), which are easier to handle */ + nbytes = ndigits * BITS_PER_DIGIT / 8; + ALLOC_BYTES(bytes, nbytes); + + n = mpConvToOctets(a, ndigits, bytes, nbytes); + + /* Create some temp storage for int values */ + newlen = uiceil(n * factor); + ALLOC_BYTES(newdigits, newlen); + + for (i = 0; i < nbytes; i++) + { + t = bytes[i]; + for (j = newlen; j > 0; j--) + { + t += (unsigned long)newdigits[j-1] * 256; + newdigits[j-1] = (unsigned char)(t % base); + t /= base; + } + } + + /* Find index of leading significant digit */ + for (isig = 0; isig < newlen; isig++) + if (newdigits[isig]) + break; + + nchars = newlen - isig; + + /* Convert to a null-terminated string of decimal chars */ + /* up to limit, unless user has specified null or size == 0 */ + if (smax > 0 && s) + { + for (i = 0; i < nchars && i < smax-1; i++) + { + s[i] = digits[newdigits[isig+i]]; + } + s[i] = '\0'; + } + + FREE_BYTES(bytes, nbytes); + FREE_BYTES(newdigits, newlen); + + return nchars; +} + +size_t mpConvToDecimal(const DIGIT_T a[], size_t ndigits, char *s, size_t smax) +/* Convert big digit a into a string in decimal format, + where s has max size smax. + Return number of chars set excluding leading zeroes. +*/ +{ + return conv_to_base(a, ndigits, s, smax, 10); +} + +size_t mpConvToHex(const DIGIT_T a[], size_t ndigits, char *s, size_t smax) +/* Convert big digit a into a string in hexadecimal format, + where s has max size smax. + Return number of chars set excluding leading zeroes. +*/ +{ + return conv_to_base(a, ndigits, s, smax, 16); +} + +size_t mpConvFromDecimal(DIGIT_T a[], size_t ndigits, const char *s) +/* Convert a string in decimal format to a big digit. + Return actual number of digits set (may be larger than mpSizeof). + Just ignores invalid characters in s. +*/ +{ +#ifdef NO_ALLOCS + uint8_t newdigits[MAX_ALLOC_SIZE*2]; // [v2.6] increased +#else + uint8_t *newdigits; +#endif + size_t newlen; + size_t n; + unsigned long t; + size_t i, j; + const int base = 10; + + mpSetZero(a, ndigits); + + /* Create some temp storage for int values */ + n = strlen(s); + if (0 == n) return 0; + newlen = uiceil(n * 0.41524); /* log(10)/log(256)=0.41524 */ + ALLOC_BYTES(newdigits, newlen); + + /* Work through zero-terminated string */ + for (i = 0; s[i]; i++) + { + t = s[i] - '0'; + if (t > 9 || t < 0) continue; + for (j = newlen; j > 0; j--) + { + t += (unsigned long)newdigits[j-1] * base; + newdigits[j-1] = (unsigned char)(t & 0xFF); + t >>= 8; + } + } + + /* Convert bytes to big digits */ + n = mpConvFromOctets(a, ndigits, newdigits, newlen); + + /* Clean up */ + FREE_BYTES(newdigits, newlen); + + return n; +} + +size_t mpConvFromHex(DIGIT_T a[], size_t ndigits, const char *s) +/* Convert a string in hexadecimal format to a big digit. + Return actual number of digits set (may be larger than mpSizeof). + Just ignores invalid characters in s. +*/ +{ +#ifdef NO_ALLOCS + uint8_t newdigits[MAX_ALLOC_SIZE*2]; // [v2.6] increased +#else + uint8_t *newdigits; +#endif + size_t newlen; + size_t n; + unsigned long t; + size_t i, j; + + mpSetZero(a, ndigits); + + /* Create some temp storage for int values */ + n = strlen(s); + if (0 == n) return 0; + newlen = uiceil(n * 0.5); /* log(16)/log(256)=0.5 */ + ALLOC_BYTES(newdigits, newlen); + + /* Work through zero-terminated string */ + for (i = 0; s[i]; i++) + { + t = s[i]; + if ((t >= '0') && (t <= '9')) t = (t - '0'); + else if ((t >= 'a') && (t <= 'f')) t = (t - 'a' + 10); + else if ((t >= 'A') && (t <= 'F')) t = (t - 'A' + 10); + else continue; + for (j = newlen; j > 0; j--) + { + t += (unsigned long)newdigits[j-1] << 4; + newdigits[j-1] = (unsigned char)(t & 0xFF); + t >>= 8; + } + } + + /* Convert bytes to big digits */ + n = mpConvFromOctets(a, ndigits, newdigits, newlen); + + /* Clean up */ + FREE_BYTES(newdigits, newlen); + + return n; +} + +/***************************/ +/* NUMBER THEORY FUNCTIONS */ +/***************************/ +int mpModulo(DIGIT_T r[], const DIGIT_T u[], size_t udigits, + DIGIT_T v[], size_t vdigits) +{ + /* Computes r = u mod v + where r, v are multiprecision integers of length vdigits + and u is a multiprecision integer of length udigits. + r may overlap v. + + Note that r here is only vdigits long, + whereas in mpDivide it is udigits long. + + Use remainder from mpDivide function. + */ + + // size_t nn = max(udigits, vdigits); +/* Allocate temp storage */ +#ifdef NO_ALLOCS + // [v2.6] increased to two times + DIGIT_T qq[MAX_FIXED_DIGITS*2]; + DIGIT_T rr[MAX_FIXED_DIGITS*2]; + _ignore_assert(nn <= (MAX_FIXED_DIGITS*2)); +#else + DIGIT_T *qq, *rr; + qq = mpAlloc(udigits); + rr = mpAlloc(nn); +#endif + + + /* rr[nn] = u mod v */ + mpDivide(qq, rr, u, udigits, v, vdigits); + + /* Final r is only vdigits long */ + mpSetEqual(r, rr, vdigits); + + mpDESTROY(rr, udigits); + mpDESTROY(qq, udigits); + + return 0; +} + +int mpModMult(DIGIT_T a[], const DIGIT_T x[], const DIGIT_T y[], + DIGIT_T m[], size_t ndigits) +{ /* Computes a = (x * y) mod m */ + +/* Double-length temp variable p */ +#ifdef NO_ALLOCS + DIGIT_T p[MAX_FIXED_DIGITS * 2]; + _ignore_assert(ndigits <= MAX_FIXED_DIGITS); +#else + DIGIT_T *p; + p = mpAlloc(ndigits * 2); +#endif + + /* Calc p[2n] = x * y */ + mpMultiply(p, x, y, ndigits); + + /* Then modulo (NOTE: a is OK at only ndigits long) */ + mpModulo(a, p, ndigits * 2, m, ndigits); + + mpDESTROY(p, ndigits * 2); + + return 0; +} + + +// [v2.6] new +/** Computes a = x^2 mod m */ +int mpModSquare(DIGIT_T a[], const DIGIT_T x[], DIGIT_T m[], size_t ndigits) +{ + +/* Double-length temp variable p */ +#ifdef NO_ALLOCS + DIGIT_T p[MAX_FIXED_DIGITS * 2]; + _ignore_assert(ndigits <= MAX_FIXED_DIGITS); +#else + DIGIT_T *p; + p = mpAlloc(ndigits * 2); +#endif + + /* Calc p[2n] = x^2 */ + mpSquare(p, x, ndigits); + + /* Then modulo (NOTE: a is OK at only ndigits long) */ + mpModulo(a, p, ndigits * 2, m, ndigits); + + mpDESTROY(p, ndigits * 2); + + return 0; +} + +/* Compute w = u + v (mod m) where 0 <= u,v < m and w != v */ +void mpModAdd(DIGIT_T w[], const DIGIT_T u[], const DIGIT_T v[], const DIGIT_T m[], size_t ndigits) +{ + int carry; + // w != v + carry = mpAdd(w, u, v, ndigits); + // NB This works even with overflow beyond ndigits + if (carry || mpCompare(w, m, ndigits) >= 0) { + mpSubtract(w, w, m, ndigits); + } +} + + +/* Compute w = u - v (mod m) where 0 <= u,v < m and w != v */ +void mpModSub(DIGIT_T w[], const DIGIT_T u[], const DIGIT_T v[], const DIGIT_T m[], size_t ndigits) +{ + /* We need a temp variable t [to allow mpModSub(w,w,v,...)] */ +#ifdef NO_ALLOCS + DIGIT_T t[MAX_FIXED_DIGITS]; + _ignore_assert(ndigits <= MAX_FIXED_DIGITS); +#else + DIGIT_T *t; + t = mpAlloc(ndigits); +#endif + /* w <-- m - v [always > 0] */ + mpSubtract(t, m, v, ndigits); + /* w <-- w + u (mod m) */ + mpModAdd(w, u, t, m, ndigits); + + mpDESTROY(t, ndigits); +} + +/** Set w = u/2 (mod p) - actually works modulo any odd integer p */ +void mpModHalve(DIGIT_T w[], const DIGIT_T u[], const DIGIT_T p[], size_t ndigits) +{ + int carry; + + if (mpISODD(u, ndigits)) { + /* If u is odd then add p and then right-shift by one bit */ + /* w <-- (u + p)/2 {do not reduce sum modulo p} */ + carry = mpAdd(w, u, p, ndigits); + mpShiftRight(w, w, 1, ndigits); + /* Cope with overflow {NB assumes exact number of digits} */ + if (carry) + mpSetBit(w, ndigits, (ndigits * BITS_PER_DIGIT) - 1, 1); + } + else { + /* If u is even then u/2 mod p is same as u/2 i.e. u right-shifted by one bit */ + mpShiftRight(w, u, 1, ndigits); + } +} + + +/* Compute u = v mod m where 0 <= v < km for small k */ +void mpModSpecial(DIGIT_T u[], const DIGIT_T v[], const DIGIT_T m[], size_t ndigits) +{ + mpSetEqual(u, v, ndigits); + // Use subtraction instead of full division - faster if k is small, say 2 or 3 + while (mpCompare(u, m, ndigits) >= 0) + mpSubtract(u, u, m, ndigits); +} + + +/* Compute x = one square root of a (mod p). Return -1 if root does not exist, 0 if successful. */ +int mpModSqrt(DIGIT_T x[], const DIGIT_T a[], DIGIT_T p[], size_t ndigits) +{ + DIGIT_T r, m; + int result; + + /* Allocate temp storage */ +#ifdef NO_ALLOCS + DIGIT_T q[MAX_FIXED_DIGITS]; + DIGIT_T n[MAX_FIXED_DIGITS]; + DIGIT_T y[MAX_FIXED_DIGITS]; + DIGIT_T b[MAX_FIXED_DIGITS]; + DIGIT_T k[MAX_FIXED_DIGITS]; + DIGIT_T e[MAX_FIXED_DIGITS]; + DIGIT_T t[MAX_FIXED_DIGITS]; + _ignore_assert(ndigits <= MAX_FIXED_DIGITS); +#else + DIGIT_T *q, *n, *y, *b, *k, *e, *t; + q = mpAlloc(ndigits); + n = mpAlloc(ndigits); + y = mpAlloc(ndigits); + b = mpAlloc(ndigits); + k = mpAlloc(ndigits); + e = mpAlloc(ndigits); + t = mpAlloc(ndigits); +#endif + + /* Shanks-Tonelli Algorithm from [BLAKE] Algorithm II.8 and [INF] */ + + /* 1. Let r, q be integers such that q is odd and p-1 = q*2^r */ + mpShortSub(q, p, 1, ndigits); + for (r = 0; mpISEVEN(q, ndigits); r++) { + mpShiftRight(q, q, 1, ndigits); + } + + /* Catch special case */ + if (1 == r) { + /* We have p == 3 (mod 4) so + * set x <-- a^((p+1)/4) mod p and return. + * { Note that in this case (p+1)/4 = (p>>2) + 1 } */ + mpShiftRight(k, p, 2, ndigits); + mpShortAdd(k, k, 1, ndigits); + mpModExp(x, a, k, p, ndigits); + goto do_check; + } + + /* 2. Choose (random) number n until one is found such that (n|p) = -1 */ + /* for n <-- 2 until (n|p)= -1 do n <-- n + 1 */ + mpSetDigit(n, 2, ndigits); + while (mpJacobi(n, p, ndigits) != -1) { + mpShortAdd(n, n, 1, ndigits); + } + + /* Initialize: { Steps 1 to 3 could be pre-computed }*/ + /* 3. y <-- n^q */ + mpModExp(y, n, q, p, ndigits); + + /* 4. b <-- a^((q-1)/2) */ + /* { (q-1)/2 = q >> 1 since q is odd } */ + mpShiftRight(k, q, 1, ndigits); + mpModExp(b, a, k, p, ndigits); + /* 5. x <-- a*b = a^((q+1)/2) */ + mpModMult(x, a, b, p, ndigits); + /* 6. b <-- b*x = a^q */ + mpModMult(b, b, x, p, ndigits); + /* 7. while b != 1 do: */ + while (!mpShortIsEqual(b, 1, ndigits)) { + /* 8. Find smallest m such that b^(2^m) == 1 mod p */ + mpSetEqual(t, b, ndigits); /* t = b^(2^0) = b */ + for (m = 0; m < r && !mpShortIsEqual(t, 1, ndigits); m++) { + /* t = t^2 = b^(2^(m-1))^2 = b^(2^m) */ + mpModSquare(t, t, p, ndigits); + } + /* 9. t <-- y^(2^(r-m-1)) */ + mpSetDigit(e, 1, ndigits); + mpShiftLeft(e, e, (r - m - 1), ndigits); /* = 2^(r-m-1) */ + mpModExp(t, y, e, p, ndigits); + /* 10. y <-- t^2 = y^(2^(r-m)) */ + mpModSquare(y, t, p, ndigits); + /* 11. r <-- m */ + r = m; + /* 12. x <-- x*t = x.y^(2^(r-m-1)) */ + mpModMult(x, x, t, p, ndigits); + /* 13. b <-- b*y = b.y^(2^(r-m)) */ + mpModMult(b, b, y, p, ndigits); + } + + /* 14. return x or NO_ROOT_EXISTS */ + +do_check: + /* Check that x^2 = a */ + mpModSquare(k, x, p, ndigits); + result = (mpEqual(k, a, ndigits) ? 0 : -1); /* 0 => OK, -1 => NO_ROOT_EXISTS */ + + /* Clear up */ + mpDESTROY(q, ndigits); + mpDESTROY(n, ndigits); + mpDESTROY(y, ndigits); + mpDESTROY(b, ndigits); + mpDESTROY(k, ndigits); + mpDESTROY(e, ndigits); + mpDESTROY(t, ndigits); + + return result; +} + + +int mpModInv(DIGIT_T inv[], const DIGIT_T u[], const DIGIT_T v[], size_t ndigits) +{ /* Computes inv = u^(-1) mod v */ + /* Ref: Knuth Algorithm X Vol 2 p 342 + ignoring u2, v2, t2 + and avoiding negative numbers. + Returns non-zero if inverse undefined. + */ + int bIterations; + int result; +/* Allocate temp storage */ +#ifdef NO_ALLOCS + DIGIT_T u1[MAX_FIXED_DIGITS]; + DIGIT_T u3[MAX_FIXED_DIGITS]; + DIGIT_T v1[MAX_FIXED_DIGITS]; + DIGIT_T v3[MAX_FIXED_DIGITS]; + DIGIT_T t1[MAX_FIXED_DIGITS]; + DIGIT_T t3[MAX_FIXED_DIGITS]; + DIGIT_T q[MAX_FIXED_DIGITS]; + DIGIT_T w[2*MAX_FIXED_DIGITS]; + _ignore_assert(ndigits <= MAX_FIXED_DIGITS); +#else + DIGIT_T *u1, *u3, *v1, *v3, *t1, *t3, *q, *w; + u1 = mpAlloc(ndigits); + u3 = mpAlloc(ndigits); + v1 = mpAlloc(ndigits); + v3 = mpAlloc(ndigits); + t1 = mpAlloc(ndigits); + t3 = mpAlloc(ndigits); + q = mpAlloc(ndigits); + w = mpAlloc(2 * ndigits); +#endif + + /* Step X1. Initialise */ + mpSetDigit(u1, 1, ndigits); /* u1 = 1 */ + mpSetEqual(u3, u, ndigits); /* u3 = u */ + mpSetZero(v1, ndigits); /* v1 = 0 */ + mpSetEqual(v3, v, ndigits); /* v3 = v */ + + bIterations = 1; /* Remember odd/even iterations */ + while (!mpIsZero(v3, ndigits)) /* Step X2. Loop while v3 != 0 */ + { /* Step X3. Divide and "Subtract" */ + mpDivide(q, t3, u3, ndigits, v3, ndigits); + /* q = u3 / v3, t3 = u3 % v3 */ + mpMultiply(w, q, v1, ndigits); /* w = q * v1 */ + mpAdd(t1, u1, w, ndigits); /* t1 = u1 + w */ + + /* Swap u1 = v1; v1 = t1; u3 = v3; v3 = t3 */ + mpSetEqual(u1, v1, ndigits); + mpSetEqual(v1, t1, ndigits); + mpSetEqual(u3, v3, ndigits); + mpSetEqual(v3, t3, ndigits); + + bIterations = -bIterations; + } + + if (bIterations < 0) + mpSubtract(inv, v, u1, ndigits); /* inv = v - u1 */ + else + mpSetEqual(inv, u1, ndigits); /* inv = u1 */ + + /* Make sure u3 = gcd(u,v) == 1 */ + if (mpShortCmp(u3, 1, ndigits) != 0) + { + result = 1; + mpSetZero(inv, ndigits); + } + else + result = 0; + + /* Clear up */ + mpDESTROY(u1, ndigits); + mpDESTROY(v1, ndigits); + mpDESTROY(t1, ndigits); + mpDESTROY(u3, ndigits); + mpDESTROY(v3, ndigits); + mpDESTROY(t3, ndigits); + mpDESTROY(q, ndigits); + mpDESTROY(w, 2*ndigits); + + return result; +} + +int mpGcd(DIGIT_T d[], const DIGIT_T aa[], const DIGIT_T bb[], size_t ndigits) +{ + /* Computes d = gcd(a, b) */ + /* Changed to Binary GCD in [v2.3] + * Ref: Menezes Algorithm 14.54 plus some of Cohen Algorithm 1.3.5. + */ + + unsigned int k; + +/* Allocate temp storage */ +#ifdef NO_ALLOCS + DIGIT_T a[MAX_FIXED_DIGITS]; + DIGIT_T b[MAX_FIXED_DIGITS]; + DIGIT_T r[MAX_FIXED_DIGITS]; + DIGIT_T t[MAX_FIXED_DIGITS]; + _ignore_assert(ndigits <= MAX_FIXED_DIGITS); +#else + DIGIT_T *a, *b, *r, *t; + a = mpAlloc(ndigits); + b = mpAlloc(ndigits); + r = mpAlloc(ndigits); + t = mpAlloc(ndigits); +#endif + + /* Copy input into temp vars */ + mpSetEqual(a, aa, ndigits); + mpSetEqual(b, bb, ndigits); + + /* 1. [Reduce size once] */ + if (mpCompare(a, b, ndigits) < 0) + { /* Exchange a and b */ + mpSetEqual(t, a, ndigits); + mpSetEqual(a, b, ndigits); + mpSetEqual(b, t, ndigits); + } + /* If b = 0 output a and stop */ + if (mpIsZero(b, ndigits)) + { + mpSetEqual(d, a, ndigits); + goto done; + } + /* Set r <-- a mod b, a <-- b, b <-- r */ + mpModulo(r, a, ndigits, b, ndigits); + mpSetEqual(a, b, ndigits); + mpSetEqual(b, r, ndigits); + /* If b = 0 output a and stop */ + if (mpIsZero(b, ndigits)) + { + mpSetEqual(d, a, ndigits); + goto done; + } + + /* 2. [Compute power of 2] */ + k = 0; /* g = 2^k <-- 1 */ + while (mpISEVEN(a, ndigits) && mpISEVEN(b, ndigits)) + { /* While a and b are even */ + mpShiftRight(a, a, 1, ndigits); /* a <-- a/2 */ + mpShiftRight(b, b, 1, ndigits); /* b <-- b/2 */ + k++; /* g <-- 2g */ + } + while (!mpIsZero(a, ndigits)) + { + /* 3. [Remove initial powers of 2] */ + while (mpISEVEN(a, ndigits)) + mpShiftRight(a, a, 1, ndigits); /* a <-- a/2 until a is odd */ + while (mpISEVEN(b, ndigits)) + mpShiftRight(b, b, 1, ndigits); /* b <-- b/2 until b is odd */ + /* 4. [Subtract] t = |a - b|/2 */ + if (mpCompare(b, a, ndigits) > 0) + mpSubtract(t, b, a, ndigits); + else + mpSubtract(t, a, b, ndigits); + mpShiftRight(t, t, 1, ndigits); + /* if a >= b then set a <-- t otherwise set b <-- t */ + if (mpCompare(a, b, ndigits) >= 0) + mpSetEqual(a, t, ndigits); + else + mpSetEqual(b, t, ndigits); + + /* 5. [Loop] */ + } + /* Output (2^k.b) and stop */ + mpShiftLeft(d, b, k, ndigits); +done: + + mpDESTROY(a, ndigits); + mpDESTROY(b, ndigits); + mpDESTROY(r, ndigits); + mpDESTROY(t, ndigits); + + return 0; /* gcd is in d */ +} + +int mpSqrt(DIGIT_T s[], const DIGIT_T n[], size_t ndigits) + /* Computes integer square root s = floor(sqrt(n)) i.e. + the largest integer whose square is less than or equal to n */ + /* [Added v2.1, updated v2.3] Ref: H. Cohen Alg 1.7.1 */ +{ +/* Allocate temp storage */ +#ifdef NO_ALLOCS + DIGIT_T x[MAX_FIXED_DIGITS]; + DIGIT_T y[MAX_FIXED_DIGITS]; + DIGIT_T q[MAX_FIXED_DIGITS]; + DIGIT_T r[MAX_FIXED_DIGITS]; + _ignore_assert(ndigits <= MAX_FIXED_DIGITS); +#else + DIGIT_T *x, *y, *q, *r; + x = mpAlloc(ndigits); + y = mpAlloc(ndigits); + q = mpAlloc(ndigits); + r = mpAlloc(ndigits); +#endif + + /* if (n <= 1) return n */ + if (mpShortCmp(n, 1, ndigits) <= 0) + { + mpSetEqual(s, n, ndigits); + goto done; + } + + /* 1. [Initialize] Set x = n */ + mpSetEqual(x, n, ndigits); + + while (1) + { + /* 2. [Newtonian step] Set y = [x + [n/x]]]/2 */ + mpDivide(q, r, n, ndigits, x, ndigits); + mpAdd(y, x, q, ndigits); + mpShiftRight(y, y, 1, ndigits); + + /* 3a. [Finished?] If y < x set x = y and go to step 2 */ + if (mpCompare(y, x, ndigits) >= 0) + break; + + mpSetEqual(x, y, ndigits); + } + + /* 3b. Otherwise output x and stop. */ + mpSetEqual(s, x, ndigits); + +done: + mpDESTROY(x, ndigits); + mpDESTROY(y, ndigits); + mpDESTROY(q, ndigits); + mpDESTROY(r, ndigits); + + return 0; +} + +int mpCubeRoot(DIGIT_T s[], const DIGIT_T n[], size_t ndigits) + /* Computes integer cube root s = floor(cuberoot(n)) i.e. + the largest integer whose cube is less than or equal to n */ + /* [Added v2.3] */ +{ +/* Allocate temp storage */ +#ifdef NO_ALLOCS + DIGIT_T x[MAX_FIXED_DIGITS]; + DIGIT_T y[MAX_FIXED_DIGITS]; + DIGIT_T q[MAX_FIXED_DIGITS]; + DIGIT_T r[MAX_FIXED_DIGITS]; + _ignore_assert(ndigits <= MAX_FIXED_DIGITS); +#else + DIGIT_T *x, *y, *q, *r; + x = mpAlloc(ndigits); + y = mpAlloc(ndigits); + q = mpAlloc(ndigits); + r = mpAlloc(ndigits); +#endif + + /* if (n <= 1) return n */ + if (mpShortCmp(n, 1, ndigits) <= 0) + { + mpSetEqual(s, n, ndigits); + goto done; + } + + /* 1. [Initialize] Set x = n */ + mpSetEqual(x, n, ndigits); + + while (1) + { + /* 2. [Newtonian step] Set y = [2x + [n/x^2]]/3 */ + mpDivide(y, r, n, ndigits, x, ndigits); + mpDivide(q, r, y, ndigits, x, ndigits); + mpAdd(y, q, x, ndigits); + mpAdd(q, y, x, ndigits); + mpShortDiv(y, q, 3, ndigits); + + /* 3a. [Finished?] If y < x set x = y and go to step 2 */ + if (mpCompare(y, x, ndigits) >= 0) + break; + + mpSetEqual(x, y, ndigits); + } + + /* 3b. Otherwise output x and stop. */ + mpSetEqual(s, x, ndigits); + +done: + mpDESTROY(x, ndigits); + mpDESTROY(y, ndigits); + mpDESTROY(q, ndigits); + mpDESTROY(r, ndigits); + + return 0; +} + +int mpJacobi(const DIGIT_T a[], const DIGIT_T n[], size_t ndigits) + /* Returns Jacobi(a, n) = {0, +1, -1} */ + /* [Added v2.2] */ +{ +/* Ref: Menezes. +Algorithm 2.149 Jacobi symbol (and Legendre symbol) computation +JACOBI(a,n) +INPUT: an odd integer n >= 3, and an integer a, 0 <= a < n. +OUTPUT: the Jacobi symbol (a/n) (and hence the Legendre symbol when n is prime). +1. If a = 0 then return(0). +2. If a = 1 then return(1). +3. Write a = 2^e.a_1, where a_1 is odd. +4. If e is even then set s <-- 1. Otherwise set s <-- 1 if n \equiv 1 or 7 (mod 8), +or set s <-- -1 if n \equiv 3 or 5 (mod 8). +5. If n \equiv 3 (mod 4) and a1 \equiv 3 (mod 4) then set s <-- -s. +6. Set n1 <-- n mod a1. +7. If a1 = 1 then return(s); otherwise return(s * JACOBI(n1,a1)). +*/ + + int s; + DIGIT_T nmod8; + unsigned e; + +/* Allocate temp storage */ +#ifdef NO_ALLOCS + DIGIT_T a1[MAX_FIXED_DIGITS]; + DIGIT_T n1[MAX_FIXED_DIGITS]; + _ignore_assert(ndigits <= MAX_FIXED_DIGITS); +#else + DIGIT_T *a1, *n1; + a1 = mpAlloc(ndigits); + n1 = mpAlloc(ndigits); +#endif + + + /* 1. If a = 0 then return(0). */ + if (mpIsZero(a, ndigits)) + { + s = 0; + goto done; + } + /* 2. If a = 1 then return(1). */ + if (mpShortCmp(a, 1, ndigits) == 0) + { + s = 1; + goto done; + } + /* 3. Write a = 2^e.a_1, where a_1 is odd. */ + mpSetEqual(a1, a, ndigits); + for (e = 0; mpISEVEN(a1, ndigits); e++) + { + mpShiftRight(a1, a1, 1, ndigits); + } + /* 4. + If e is even then set s <-- 1. Otherwise set s <-- 1 if n \equiv 1 or 7 (mod 8), + or set s <-- -1 if n \equiv 3 or 5 (mod 8). */ + if (ISEVEN(e)) + s = 1; + else + { + nmod8 = mpShortMod(n, 8, ndigits); + if (nmod8 == 1 || nmod8 == 7) + s = 1; + else + s = -1; + } + /* 5. If n \equiv 3 (mod 4) and a1 \equiv 3 (mod 4) then set s <-- -s. */ + if (mpShortMod(n, 4, ndigits) == 3 && mpShortMod(a1, 4, ndigits) == 3) + s = -s; + + /* + 6. Set n1 <-- n mod a1. + 7. If a1 = 1 then return(s); otherwise return(s * JACOBI(n1,a1)). + */ + if (mpShortCmp(a1, 1, ndigits) != 0) + { + mpModulo(n1, n, ndigits, a1, ndigits); + s = s * mpJacobi(n1, a1, ndigits); + } + +done: + mpDESTROY(a1, ndigits); + mpDESTROY(n1, ndigits); + + return s; +} + + +/* mpIsPrime: Changes in Version 2: + Added mpAlloc for dynamic allocation + Increased no of small primes + Broke out mpRabinMiller() as a separate function +*/ + +static DIGIT_T SMALL_PRIMES[] = { + 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, + 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, + 103, 107, 109, 113, + 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, + 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, + 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, + 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, + 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, + 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, + 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, + 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, + 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, + 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, + 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, + 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, + 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, + 947, 953, 967, 971, 977, 983, 991, 997, +}; +#define N_SMALL_PRIMES (sizeof(SMALL_PRIMES)/sizeof(SMALL_PRIMES[0])) + +int mpIsPrime(DIGIT_T w[], size_t ndigits, size_t t) +{ /* Returns true if w is a probable prime */ + /* Version 2: split out mpRabinMiller. */ + + size_t i; + + /* Check the obvious */ + if (mpShortCmp(w, 2, ndigits) <= 0) + { + if (mpShortCmp(w, 2, ndigits) < 0) + return 0; /* 0 and 1 are not primes */ + return 1; /* but 2 is a prime */ + } + /* Otherwise any even number > 2 is not a prime */ + if (mpISEVEN(w, ndigits)) + return 0; + + /* First check for small primes, unless we could be one ourself */ + if (mpShortCmp(w, SMALL_PRIMES[N_SMALL_PRIMES-1], ndigits) > 0) + { + for (i = 0; i < N_SMALL_PRIMES; i++) + { + if (mpShortMod(w, SMALL_PRIMES[i], ndigits) == 0) + return 0; /* Failed, so not a prime */ + } + } + else + { /* w is a small number, so check directly */ + for (i = 0; i < N_SMALL_PRIMES; i++) + { + if (mpShortCmp(w, SMALL_PRIMES[i], ndigits) == 0) + return 1; /* w is a small prime */ + } + return 0; /* w is not a small prime */ + } + + return mpRabinMiller(w, ndigits, t); +} + +/* Local, simple rng functions used in Rabin-Miller */ +static void rand_seed(void); +static DIGIT_T rand_between(DIGIT_T lower, DIGIT_T upper); + +int mpRabinMiller(DIGIT_T w[], size_t ndigits, size_t t) +{ +/* Returns true (1) if w is a probable prime using the + Rabin-Miller Probabilistic Primality Test. + Carries out t iterations specified by user. + Ref: FIPS-186-2 Appendix 2 Section 2.1. + Also Schneier 2nd ed p 260 & Knuth Vol 2, p 379 + and ANSI 9.42-2003 Annex B.1.1. + + DSS Standard and ANSI 9.42 recommend using t >= 50 + for probability of error less than or equal to 2^-100. + Ferguson & Schneier recommend t = 64 for prob error < 2^-128 + In practice, most random composites are caught in the first + round or two and so specifying a large t will only affect + the final check. + + [v2.1] Updated range of bases from [2, N-1] to [2, N-2] + See ANSI 9.42-2003 Annex F.1.1 `Range of bases in Miller-Rabin test' + (NB this does not impact existing implementations because N-1 + is unlikely to be chosen as a base). +*/ + + /* Temp big digits */ + DIGIT_T maxrand; + int failed, isprime; + size_t i; +/* Allocate temp storage */ +#ifdef NO_ALLOCS + DIGIT_T m[MAX_FIXED_DIGITS]; + DIGIT_T a[MAX_FIXED_DIGITS]; + DIGIT_T b[MAX_FIXED_DIGITS]; + DIGIT_T z[MAX_FIXED_DIGITS]; + DIGIT_T w1[MAX_FIXED_DIGITS]; + DIGIT_T j[MAX_FIXED_DIGITS]; + _ignore_assert(ndigits <= MAX_FIXED_DIGITS); +#else + DIGIT_T *m, *a, *b, *z, *w1, *j; + m = mpAlloc(ndigits); + a = mpAlloc(ndigits); + b = mpAlloc(ndigits); + z = mpAlloc(ndigits); + w1 = mpAlloc(ndigits); + j = mpAlloc(ndigits); +#endif + + /* Catch w <= 1 */ + if (mpShortCmp(w, 1, ndigits) <= 0) + { + isprime = 0; + goto done; + } + + /* Seed the simple RNG for later on */ + rand_seed(); + + /* Rabin-Miller from FIPS-186-2 Appendix 2. + Step 1. Set i = 1 [but do # tests requested by user]. + Step 2. Find a and m where w = 1 + (2^a)m + m is odd and 2^a is largest power of 2 dividing w - 1 + */ + mpShortSub(w1, w, 1, ndigits); /* Store w1 = w - 1 */ + mpSetEqual(m, w1, ndigits); /* Set m = w - 1 */ + /* for (a = 0; iseven(m); a++) */ + for (mpSetZero(a, ndigits); mpISEVEN(m, ndigits); + mpShortAdd(a, a, 1, ndigits)) + { /* Divide by 2 until m is odd */ + mpShiftRight(m, m, 1, ndigits); + } + + /* _ignore_assert((1 << a) * m + 1 == w); */ + + /* Catch a small w */ + if (mpSizeof(w, ndigits) == 1) + maxrand = w[0] - 2; /* [v2.1] changed 1 to 2 */ + else + maxrand = MAX_DIGIT; + + isprime = 1; + for (i = 0; i < t; i++) + { + failed = 1; /* Assume fail unless passed in loop */ + /* Step 3. Generate random integer b, 1 < b < w */ + /* [v2.1] changed to 1 < b < w-1 (see ANSI X9.42-2003 Annex B.1.1) */ + mpSetZero(b, ndigits); + do + { + b[0] = rand_between(2, maxrand); + } while (mpCompare(b, w, ndigits) >= 0); + + /* _ignore_assert(1 < b && b < w); */ + + /* Step 4. Set j = 0 and z = b^m mod w */ + mpSetZero(j, ndigits); + mpModExp(z, b, m, w, ndigits); + do + { + /* Step 5. If j = 0 and z = 1, or if z = w - 1 */ + /* i.e. if ((j == 0 && z == 1) || (z == w - 1)) */ + if ((mpIsZero(j, ndigits) + && mpShortCmp(z, 1, ndigits) == 0) + || (mpCompare(z, w1, ndigits) == 0)) + { /* Passes on this loop - go to Step 9 */ + failed = 0; + break; + } + + /* Step 6. If j > 0 and z = 1 */ + if (!mpIsZero(j, ndigits) + && (mpShortCmp(z, 1, ndigits) == 0)) + { /* Fails - go to Step 8 */ + failed = 1; + break; + } + + /* Step 7. j = j + 1. If j < a set z = z^2 mod w */ + mpShortAdd(j, j, 1, ndigits); + if (mpCompare(j, a, ndigits) < 0) + mpModMult(z, z, z, w, ndigits); + /* Loop: if j < a go to Step 5 */ + } while (mpCompare(j, a, ndigits) < 0); + + if (failed) + { /* Step 8. Not a prime - stop */ + isprime = 0; + break; + } + } /* Step 9. Go to Step 3 until i >= n */ + /* Else, if i = n, w is probably prime => success */ + + /* Clean up */ +done: + mpDESTROY(m, ndigits); + mpDESTROY(a, ndigits); + mpDESTROY(b, ndigits); + mpDESTROY(z, ndigits); + mpDESTROY(w1, ndigits); + mpDESTROY(j, ndigits); + + return isprime; +} + +/***************************/ +/* RANDOM NUMBER FUNCTIONS */ +/***************************/ + +/* New in [v2.4] */ +/** Generate a quick-and-dirty random mp number a <= 2^{nbits}-1 using plain-old-rand */ +size_t mpQuickRandBits(DIGIT_T a[], size_t ndigits, size_t nbits) +{ + size_t ndig, nodd, i; + DIGIT_T r; + + mpSetZero(a, ndigits); + + /* Catch too long nbits */ + if (nbits / BITS_PER_DIGIT > ndigits) + nbits = ndigits * BITS_PER_DIGIT; + + ndig = nbits / BITS_PER_DIGIT; /* # of complete digits */ + nodd = nbits % BITS_PER_DIGIT; /* # of odd bits, perhaps zero */ + + /* Fill each complete digit with random bits */ + for (i = 0; i < ndig; i++) + { + a[i] = spSimpleRand(0, MAX_DIGIT); + } + if (nodd) + { + r = spSimpleRand(0, MAX_DIGIT); + r >>= BITS_PER_DIGIT - nodd; + a[ndig] = r; + i++; + } + + return i; +} + +/* Internal functions used for "simple" random numbers */ + +static void rand_seed() +/* [v2.2] Moved seeding process inside this function. + Added clock() to time() to improve precision. + [v2.4] Extra fudge with time shifted left by 16 +*/ +{ + /* Seed with system time and clock */ + // unsigned int seed = (((unsigned int)time(NULL) & 0xFFFF) << 16) ^ (unsigned int)clock(); + // srand(seed); +} + +static DIGIT_T rand_between(DIGIT_T lower, DIGIT_T upper) +/* Returns a single pseudo-random digit between lower and upper. + Uses rand(). Assumes srand() already called. */ +{ + DIGIT_T d, range; + unsigned char *bp; + int i, nbits; + DIGIT_T mask; + + if (upper <= lower) return lower; + range = upper - lower; + + do + { + /* Generate a random DIGIT byte-by-byte using rand() */ + bp = (unsigned char *)&d; + for (i = 0; i < sizeof(DIGIT_T); i++) + { + bp[i] = (unsigned char)(rand() & 0xFF); + } + + /* Trim to next highest bit above required range */ + mask = HIBITMASK; + for (nbits = BITS_PER_DIGIT; nbits > 0; nbits--, mask >>= 1) + { + if (range & mask) + break; + } + if (nbits < BITS_PER_DIGIT) + { + mask <<= 1; + mask--; + } + else + mask = MAX_DIGIT; + + d &= mask; + + } while (d > range); + + return (lower + d); +} + +DIGIT_T spSimpleRand(DIGIT_T lower, DIGIT_T upper) +{ /* Returns a pseudo-random digit. + Handles own seeding using time. + NOT for cryptographically-secure random numbers. + NOT thread-safe because of static variable. + Changed in Version 2 to use internal funcs. + */ + static unsigned seeded = 0; + + if (!seeded) + { + rand_seed(); + seeded++; + } + return rand_between(lower, upper); +} + +/**************************/ +/* MODULAR EXPONENTIATION */ +/**************************/ +/* [v2.2] Modified to use sliding-window exponentiation. + mpModExp_1 is the earlier version [<2.2] now using macros for modular squaring & mult +*/ + +static int mpModExp_1(DIGIT_T y[], const DIGIT_T x[], const DIGIT_T n[], DIGIT_T d[], size_t ndigits); +// static int mpModExp_windowed(DIGIT_T y[], const DIGIT_T x[], const DIGIT_T n[], DIGIT_T d[], size_t ndigits); + +/** Computes y = x^n mod d */ +int mpModExp(DIGIT_T y[], const DIGIT_T x[], const DIGIT_T n[], DIGIT_T d[], size_t ndigits) +{ +#ifdef NO_ALLOCS + return mpModExp_1(y, x, n, d, ndigits); +#else + return mpModExp_windowed(y, x, n, d, ndigits); +#endif +} + +/* MACROS TO DO MODULAR SQUARING AND MULTIPLICATION USING PRE-ALLOCATED TEMPS */ +/* Required lengths |y|=|t1|=|t2|=2*n, |m|=n; but final |y|=n */ +/* Square: y = (y * y) mod m */ +#define mpMODSQUARETEMP(y,m,n,t1,t2) do{mpSquare(t1,y,n);mpDivide(t2,y,t1,n*2,m,n);}while(0) +/* Mult: y = (y * x) mod m */ +#define mpMODMULTTEMP(y,x,m,n,t1,t2) do{mpMultiply(t1,x,y,n);mpDivide(t2,y,t1,n*2,m,n);}while(0) +/* Mult: w = (y * x) mod m */ +#define mpMODMULTXYTEMP(w,y,x,m,n,t1,t2) do{mpMultiply(t1,x,y,(n));mpDivide(t2,w,t1,(n)*2,m,(n));}while(0) + +static int mpModExp_1(DIGIT_T yout[], const DIGIT_T x[], const DIGIT_T e[], DIGIT_T m[], size_t ndigits) +{ /* Computes y = x^e mod m */ + /* "Classic" binary left-to-right method */ + /* [v2.2] removed const restriction on m[] to avoid using an extra alloc'd var + (m is changed in-situ during the divide operation then restored) */ + DIGIT_T mask; + size_t n; + size_t nn = ndigits * 2; + /* Create some double-length temps */ +#ifdef NO_ALLOCS + DIGIT_T t1[MAX_FIXED_DIGITS * 2]; + DIGIT_T t2[MAX_FIXED_DIGITS * 2]; + DIGIT_T y[MAX_FIXED_DIGITS * 2]; + _ignore_assert(ndigits <= MAX_FIXED_DIGITS); +#else + DIGIT_T *t1, *t2, *y; + t1 = mpAlloc(nn); + t2 = mpAlloc(nn); + y = mpAlloc(nn); +#endif + + _ignore_assert(ndigits != 0); + + n = mpSizeof(e, ndigits); + /* Catch e==0 => x^0=1 */ + if (0 == n) + { + mpSetDigit(yout, 1, ndigits); + goto done; + } + /* Find second-most significant bit in e */ + for (mask = HIBITMASK; mask > 0; mask >>= 1) + { + if (e[n-1] & mask) + break; + } + mpNEXTBITMASK(mask, n); + + /* Set y = x */ + mpSetEqual(y, x, ndigits); + + /* For bit j = k-2 downto 0 */ + while (n) + { + /* Square y = y * y mod n */ + mpMODSQUARETEMP(y, m, ndigits, t1, t2); + if (e[n-1] & mask) + { /* if e(j) == 1 then multiply + y = y * x mod n */ + mpMODMULTTEMP(y, x, m, ndigits, t1, t2); + } + + /* Move to next bit */ + mpNEXTBITMASK(mask, n); + } + + /* Return y */ + mpSetEqual(yout, y, ndigits); + +done: + mpDESTROY(t1, nn); + mpDESTROY(t2, nn); + mpDESTROY(y, ndigits); + + return 0; +} + +/** Computes y = x^e mod m in constant time using Coron's algorithm */ +int mpModExp_ct(DIGIT_T yout[], const DIGIT_T x[], const DIGIT_T e[], DIGIT_T m[], size_t ndigits) +{ + /* Algorithm: Coron�s exponentiation (left-to-right) + * Square-and-multiply resistant against simple power attacks (SPA) + * Ref: Jean-Sebastian Coron, "Resistance Against Differential Power Analysis for + * Elliptic Curve Cryptosystems", August 1999. + * -- This version adapted from Coron's elliptic curve point scalar multiplication + * to RSA-style modular exponentiation. + * Input: base x, modulus m, and + * exponent e = (e_k, e_{k-1},...,e_0) with e_k = 1 + * Output: c = x^e mod m + * 1. c[0] = x + * 2. For i = k-2 downto 0 do: + * 3. c[0] = c[0]^2 mod m + * 4. c[1] = c[0] * x mod m + * 5. c[0] = c[d_i] + * 6. Return c[0] + */ + DIGIT_T mask; + size_t n; + size_t nn = ndigits * 2; + unsigned int ej; + + /* Create some double-length temps */ +#ifdef NO_ALLOCS + DIGIT_T t1[MAX_FIXED_DIGITS * 2]; + DIGIT_T t2[MAX_FIXED_DIGITS * 2]; + DIGIT_T c[2][MAX_FIXED_DIGITS * 2]; + _ignore_assert(ndigits <= MAX_FIXED_DIGITS); +#else + DIGIT_T *t1, *t2; + DIGIT_T *c[2]; + t1 = mpAlloc(nn); + t2 = mpAlloc(nn); + c[0] = mpAlloc(nn); + c[1] = mpAlloc(nn); +#endif + + _ignore_assert(ndigits != 0); + + n = mpSizeof(e, ndigits); + /* Catch e==0 => x^0=1 */ + if (0 == n) + { + mpSetDigit(yout, 1, ndigits); + goto done; + } + /* Find second-most significant bit in e */ + for (mask = HIBITMASK; mask > 0; mask >>= 1) + { + if (e[n-1] & mask) + break; + } + mpNEXTBITMASK(mask, n); + + /* Set c[0] = x */ + mpSetEqual(c[0], x, ndigits); + + /* For bit j = k-2 downto 0 */ + while (n) + { + /* Square c[0] = c[0]^2 mod n */ + mpMODSQUARETEMP(c[0], m, ndigits, t1, t2); + /* Multiply c[1] = c[0] * x mod n */ + mpMODMULTXYTEMP(c[1], c[0], x, m, ndigits, t1, t2); + /* c[0] = c[e(j)] */ + ej = (e[n-1] & mask) != 0; + _ignore_assert(ej <= 1); + mpSetEqual(c[0], c[ej], ndigits); + + /* Move to next bit */ + mpNEXTBITMASK(mask, n); + } + + /* Return c[0] */ + mpSetEqual(yout, c[0], ndigits); + +done: + mpDESTROY(t1, nn); + mpDESTROY(t2, nn); + mpDESTROY(c[0], ndigits); + mpDESTROY(c[1], ndigits); + + return 0; +} + + +/* Use sliding window alternative only if NO_ALLOCS not defined */ +#ifndef NO_ALLOCS + +/* +SLIDING-WINDOW EXPONENTIATION +Ref: Menezes, chap 14, p616. +k is called the window size. + +14.85 Algorithm Sliding-window exponentiation +INPUT: g, e = (e_t.e_{t-1}...e1.e0)_2 with e_t = 1, and an integer k >= 1. +OUTPUT: g^e. +1. Precomputation. + 1.1 g_1 <-- g, g_2 <-- g^2. + 1.2 For i from 1 to (2^{k-1} - 1) do: g_{2i+1} <-- g_{2i-1} * g_2. +2. A <-- 1, i <-- t. +3. While i >= 0 do the following: + 3.1 If e_i = 0 then do: A <-- A^2, i <-- i - 1. + 3.2 Otherwise (e_i != 0), find the longest bitstring e_i.e_{i-1}...e_l such that i-l+1 <= k +and e_l = 1, and do the following: + A <-- A^{2i-l+1} * g_{(e_i.e_{i-1}...e_l)_2} + i <-- l - 1. +4. Return(A). +*/ + +/* +Optimal values of k for various exponent sizes. + The references on this differ in their recommendations. + These values reflect experiments we've done on our systems. + You can adjust this to suit your own situation. +*/ +static size_t WindowLenTable[] = +{ +/* k=1 2 3 4 5 6 7 8 */ + 5, 16, 64, 240, 768, 1024, 2048, 4096 +}; +#define WINLENTBLMAX (sizeof(WindowLenTable)/sizeof(WindowLenTable[0])) + +/* The process used here to read bits into the lookahead buffer could be improved slightly as + some bits are read in more than once. But we think this function is tricky enough without + adding more complexity for marginal benefit. +*/ + +static int mpModExp_windowed(DIGIT_T yout[], const DIGIT_T g[], + const DIGIT_T e[], DIGIT_T m[], size_t ndigits) +/* Computes y = g^e mod m using sliding-window exponentiation */ +{ + size_t nbits; /* Number of significant bits in e */ + size_t winlen; /* Window size */ + DIGIT_T mask; /* Bit mask used for main loop */ + size_t nwd; /* Digit counter for main loop */ + DIGIT_T lkamask; /* Bit mask for lookahead */ + size_t lkanwd; /* Digit counter for lookahead */ + DIGIT_T lkabuf; /* One-digit lookahead buffer */ + size_t lkalen; /* Actual size of window for current lookahead buffer */ + int in_window; /* Flag for in-window state */ + DIGIT_T *gtable[(1 << (WINLENTBLMAX-1))]; /* Table of ptrs to g1, g3, g5,... */ + size_t ngt; /* No of elements in gtable */ + size_t idxmult; /* Index (in gtable) of next multiplier to use: 0=g1, 1=g3, 2=g5,... */ + DIGIT_T *g2; /* g2 = g^2 */ + DIGIT_T *temp1, *temp2; /* Temp big digits, needed for MULT and SQUARE macros */ + DIGIT_T *a; /* A */ + int aisone; /* Flag that A == 1 */ + size_t nn; /* 2 * ndigits */ + size_t i; /* Temp counter */ + + /* Get actual size of e */ + nbits = mpBitLength(e, ndigits); + DPRINTF1("nbits=%d\n", nbits); + + /* Catch easy ones */ + if (nbits == 0) + { /* g^0 = 1 */ + mpSetDigit(yout, 1, ndigits); + return 1; + } + if (nbits == 1) + { /* g^1 = g mod m */ + mpModulo(yout, g, ndigits, m, ndigits); + return 1; + } + + /* Lookup optimised window length for this size of e */ + for (winlen = 0; winlen < WINLENTBLMAX && winlen < BITS_PER_DIGIT; winlen++) + { + if (WindowLenTable[winlen] > nbits) + break; + } + DPRINTF1("winlen=%d\n", winlen); + + /* Default to simple L-R method for 1-bit window */ + if (winlen <= 1) + return mpModExp_1(yout, g, e, m, ndigits); + + /* Allocate temp vars - NOTE: all are 2n long */ + nn = 2 * ndigits; + temp1 = mpAlloc(nn); + temp2 = mpAlloc(nn); + g2 = mpAlloc(nn); + a = mpAlloc(nn); + + /* 1. PRECOMPUTATION */ + /* 1.1 g1 <-- g, (we already have g in the input, so just point to it) */ + gtable[0] = (DIGIT_T *)g; + /* g2 <-- g^2 */ + mpModMult(g2, gtable[0], gtable[0], m, ndigits); + + /* 1.2 For i from 1 to (2^{k-1} - 1) do: g_{2i+1} <-- g_{2i-1} * g_2. */ + /* i.e. we store (g1, g3, g5, g7,...) */ + ngt = ((size_t)1 << (winlen - 1)); + for (i = 1; i < ngt; i++) + { + /* NOTE: we need these elements to be 2n digits long for the mpMODMULTTEMP fn, + but the final result is only n digits long */ + gtable[i] = mpAlloc(nn); + //mpModMult(gtable[i], gtable[i-1], g2, m, ndigits); + mpSetEqual(gtable[i], gtable[i-1], ndigits); + mpMODMULTTEMP(gtable[i], g2, m, ndigits, temp1, temp2); + } + + /* 2. A <-- 1 (use flag) */ + //mpSetDigit(a, 1, ndigits); + aisone = 1; + + /* Find most significant bit in e */ + nwd = mpSizeof(e, ndigits); + for (mask = HIBITMASK; mask > 0; mask >>= 1) + { + if (e[nwd-1] & mask) + break; + } + + /* i <-- t; 3. While i >= 0 do the following: */ + /* i.e. look at high bit and every subsequent bit L->R in turn */ + lkalen = 0; + in_window = 0; + idxmult = 0; + while (nwd) + { + /* We always square each time around */ + /* A <-- A^2 */ + if (!aisone) /* 1^2 = 1! */ + { + mpMODSQUARETEMP(a, m, ndigits, temp1, temp2); + } + + if (!in_window) + { /* Do we start another window? */ + if ((e[nwd-1] & mask)) + { /* Yes, bit is '1', so setup this window */ + in_window = 1; + /* Read in look-ahead buffer (a single digit) */ + lkamask = mask; + lkanwd = nwd; + /* Read in this and the next winlen-1 bits into lkabuf */ + lkabuf = 0x1; + for (i = 0; i < winlen-1; i++) + { + mpNEXTBITMASK(lkamask, lkanwd); + lkabuf <<= 1; + /* if lkanwd==0 we have passed the end, so just append a zero bit */ + if (lkanwd && (e[lkanwd-1] & lkamask)) + { + lkabuf |= 0x1; + } + } + DPRINTF1("(%x)", lkabuf); + /* Compute this window's length */ + /* i.e. keep shifting right until we have a '1' bit at the end */ + for (lkalen = winlen - 1; lkalen > 0; lkalen--, lkabuf >>= 1) + { + if (ISODD(lkabuf)) + break; + } + /* Set next multipler to use */ + /* idx = (value(buf) - 1) / 2 */ + idxmult = lkabuf >> 1; + + DPRINTF0("1"); + + } + else + { /* No, bit is '0', so just loop */ + DPRINTF0("0 "); + } + } + else + { /* We are in a window... */ + DPRINTF1("%s", ((e[nwd-1] & mask) ? "1" : "0")); + /* Has it finished yet? */ + if (lkalen > 0) + { + lkalen--; + } + } + /* Are we at end of this window? */ + if (in_window && lkalen < 1) + { /* Yes, so compute A <-- A * g_l */ + if (aisone) + { + mpSetEqual(a, gtable[idxmult], ndigits); + aisone = 0; + } + else + { + mpMODMULTTEMP(a, gtable[idxmult], m, ndigits, temp1, temp2); + } + DPRINTF1("[%x]", idxmult); + DPRINTF0("/ "); + in_window = 0; + lkalen = 0; + } + mpNEXTBITMASK(mask, nwd); + } + /* Finally, cope with anything left in the final window */ + if (in_window) + { + if (aisone) + { + mpSetEqual(a, gtable[idxmult], ndigits); + aisone = 0; + } + else + { + mpMODMULTTEMP(a, gtable[idxmult], m, ndigits, temp1, temp2); + } + DPRINTF1("[%x]", idxmult); + DPRINTF0("//"); + } + DPRINTF0("\n"); + + /* 4. Return (A) */ + mpSetEqual(yout, a, ndigits); + + /* Clean up */ + mpDESTROY(a, nn); + mpDESTROY(g2, nn); + mpDESTROY(temp1, nn); + mpDESTROY(temp2, nn); + /* CAUTION: don't clean gtable[0] */ + for (i = 1; i < ngt; i++) + mpDESTROY(gtable[i], nn); + + return 0; +} + +#endif /* !NO_ALLOCS */ diff --git a/fsbl/lib/BigDigits/bigdigits.h b/fsbl/lib/BigDigits/bigdigits.h new file mode 100644 index 000000000..676c89292 --- /dev/null +++ b/fsbl/lib/BigDigits/bigdigits.h @@ -0,0 +1,577 @@ +/* $Id: bigdigits.h $ */ + +/** @file + Interface to core BigDigits "mp" functions using fixed-length arrays +*/ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-16 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2016-03-31 09:51:00 $ + * $Revision: 2.6.1 $ + * $Author: dai $ + */ + +#ifndef BIGDIGITS_H_ +#define BIGDIGITS_H_ 1 + +#include +#include "bigdtypes.h" + +/**** USER CONFIGURABLE SECTION ****/ + +/* Define type and size of DIGIT */ + +/* [v2.1] Changed to use C99 exact-width types. */ +/* [v2.2] Put macros for exact-width types in separate file "bigdtypes.h" */ + +/** The basic BigDigit element, an unsigned 32-bit integer */ +typedef uint32_t DIGIT_T; +/** @cond */ +typedef uint16_t HALF_DIGIT_T; + +/* Sizes to match */ +#define MAX_DIGIT 0xFFFFFFFFUL +#define MAX_HALF_DIGIT 0xFFFFUL /* NB 'L' */ +#define BITS_PER_DIGIT 32 +#define HIBITMASK 0x80000000UL + +/* [v2.2] added option to avoid allocating temp storage in the heap + and use (faster) fixed automatic arrays on the stack instead. + Define NO_ALLOCS to invoke this. + Only applicable to mp functions. Do not use with bd. +*/ +/* Specify the maximum number of digits allowed in a temp mp array + -- ignored unless NO_ALLOCS is defined + -- [v2.6] user may override MAX_FIXED_BIT_LENGTH with global definition + e.g. /D "MAX_FIXED_BIT_LENGTH=640" or -D MAX_FIXED_BIT_LENGTH=640 +*/ +#ifdef NO_ALLOCS +#ifndef MAX_FIXED_BIT_LENGTH +#define MAX_FIXED_BIT_LENGTH 8192 +#endif +#define MAX_FIXED_DIGITS ((MAX_FIXED_BIT_LENGTH + BITS_PER_DIGIT - 1) / BITS_PER_DIGIT) +#endif + +/**** END OF USER CONFIGURABLE SECTION ****/ + +/**** OPTIONAL PREPROCESSOR DEFINITIONS ****/ +/* + Choose one of {USE_SPASM | USE_64WITH32} + USE_SPASM: to use the faster x86 ASM routines (if __asm option is available with your compiler). + USE_64WITH32: to use the 64-bit integers if available (e.g. long long). + Default: use default internal routines spDivide and spMultiply. + The USE_SPASM option takes precedence over USE_64WITH32. +*/ + +/* Useful macros */ +#define ISODD(x) ((x) & 0x1) +#define ISEVEN(x) (!ISODD(x)) +#define mpISODD(x, n) (x[0] & 0x1) +#define mpISEVEN(x, n) (!(x[0] & 0x1)) + + +#ifdef __cplusplus +extern "C" { +#endif + +/* Forces linker to include copyright notice in executable */ + volatile char *copyright_notice(void); +/** @endcond */ + +/* + * Multiple precision calculations + * Using known, equal ndigits + * except where noted + */ + +/*************************/ +/* ARITHMETIC OPERATIONS */ +/*************************/ + +/** Computes w = u + v, returns carry +@pre `w` and `v` must not overlap. +*/ +DIGIT_T mpAdd(DIGIT_T w[], const DIGIT_T u[], const DIGIT_T v[], size_t ndigits); + +/** Computes w = u - v, returns borrow +@pre `w` and `v` must not overlap. +*/ +DIGIT_T mpSubtract(DIGIT_T w[], const DIGIT_T u[], const DIGIT_T v[], size_t ndigits); + +/** Computes product w = u * v +@param[out] w To receive the product, an array of size 2 x `ndigits` +@param[in] u An array of size `ndigits` +@param[in] v An array of size `ndigits` +@param[in] ndigits size of arrays `u` and `v` +@pre `w` and `u` must not overlap. +@warning The product must be of size 2 x `ndigits` +*/ +int mpMultiply(DIGIT_T w[], const DIGIT_T u[], const DIGIT_T v[], size_t ndigits); + +/** Computes integer division of u by v such that u=qv+r +@param[out] q to receive quotient = u div v, an array of size `udigits` +@param[out] r to receive divisor = u mod v, an array of size `udigits` +@param[in] u dividend of size `udigits` +@param[in] udigits size of arrays `q` `r` and `u` +@param[in] v divisor of size `vdigits` +@param[in] vdigits size of array `v` +@pre `q` and `r` must be independent of `u` and `v`. +@warning Trashes q and r first +*/ +int mpDivide(DIGIT_T q[], DIGIT_T r[], const DIGIT_T u[], + size_t udigits, DIGIT_T v[], size_t vdigits); + +/** Computes remainder r = u mod v +@param[out] r to receive divisor = u mod v, an array of size `vdigits` +@param[in] u dividend of size `udigits` +@param[in] udigits size of arrays `r` and `u` +@param[in] v divisor of size `vdigits` +@param[in] vdigits size of array `v` +@pre `r` and `u` must not overlap. +@remark Note that `r` is `vdigits` long here, but is `udigits` long in mpDivide(). +*/ +int mpModulo(DIGIT_T r[], const DIGIT_T u[], size_t udigits, DIGIT_T v[], size_t vdigits); + +/** Computes square w = x^2 +@param[out] w array of size 2 x `ndigits` to receive square +@param[in] x array of size `ndigits` +@param[in] ndigits size of array `x` +@pre `w` and `x` must not overlap. +@warning The product `w` must be of size 2 x `ndigits` +*/ +int mpSquare(DIGIT_T w[], const DIGIT_T x[], size_t ndigits); + +/** Computes integer square root s = floor(sqrt(x)) */ +int mpSqrt(DIGIT_T s[], const DIGIT_T x[], size_t ndigits); + +/** Computes integer cube root s = floor(cuberoot(x)) */ +int mpCubeRoot(DIGIT_T s[], const DIGIT_T x[], size_t ndigits); + +/*************************/ +/* COMPARISON OPERATIONS */ +/*************************/ +/** Returns true if a == b, else false + * @remark Not constant-time. + */ +int mpEqual(const DIGIT_T a[], const DIGIT_T b[], size_t ndigits); + +/** Returns sign of `(a-b)` as `{-1,0,+1}` + * @remark Not constant-time. + */ +int mpCompare(const DIGIT_T a[], const DIGIT_T b[], size_t ndigits); + +/** Returns true if a is zero, else false + * @remark Not constant-time. + */ +int mpIsZero(const DIGIT_T a[], size_t ndigits); + +/***************************************/ +/* CONSTANT-TIME COMPARISON ALGORITHMS */ +/***************************************/ +/* -- added [v2.5] to replace originals. Renamed as "_ct" in [v2.6] */ + +/** Returns true if a == b, else false, using constant-time algorithm */ +int mpEqual_ct(const DIGIT_T a[], const DIGIT_T b[], size_t ndigits); + +/** Returns sign of `(a-b)` as `{-1,0,+1}` using constant-time algorithm */ +int mpCompare_ct(const DIGIT_T a[], const DIGIT_T b[], size_t ndigits); + +/** Returns true if a is zero, else false, using constant-time algorithm */ +int mpIsZero_ct(const DIGIT_T a[], size_t ndigits); + +/* Keep the faith for [v2.5] users - DEPRECATED in [v2.6] */ +#define mpEqual_q(a,b,n) mpEqual((a),(b),(n)) +#define mpCompare_q(a,b,n) mpCompare((a),(b),(n)) +#define mpIsZero_q(a,n) mpIsZero((a),(n)) + + +/****************************/ +/* NUMBER THEORY OPERATIONS */ +/****************************/ +/* [v2.2] removed `const` restriction on m[] for mpModMult and mpModExp + * (to allow faster in-place manipulation instead of using a temp variable). + * [v2.5] added mpModExp_ct(), a constant-time variant of mpModExp(). + * [v2.6] added mpModSquare(), mpModAdd(), mpModSubtract() and mpModSqrt(). + */ + +/** Computes y = x^e mod m */ +int mpModExp(DIGIT_T y[], const DIGIT_T x[], const DIGIT_T e[], DIGIT_T m[], size_t ndigits); + +/** Computes y = x^e mod m in constant time + * @remark Resistant to simple power analysis attack on private exponent. + * Slower than mpModExp(). + */ +int mpModExp_ct(DIGIT_T yout[], const DIGIT_T x[], const DIGIT_T e[], DIGIT_T m[], size_t ndigits); + +/** Computes a = (x * y) mod m */ +int mpModMult(DIGIT_T a[], const DIGIT_T x[], const DIGIT_T y[], DIGIT_T m[], size_t ndigits); + +/** Computes a = x^2 mod m */ +int mpModSquare(DIGIT_T a[], const DIGIT_T x[], DIGIT_T m[], size_t ndigits); + +/** Computes the inverse of `u` modulo `m`, inv = u^{-1} mod m */ +int mpModInv(DIGIT_T inv[], const DIGIT_T u[], const DIGIT_T m[], size_t ndigits); + +/** Computes g = gcd(x, y), the greatest common divisor of x and y */ +int mpGcd(DIGIT_T g[], const DIGIT_T x[], const DIGIT_T y[], size_t ndigits); + +/** Returns the Jacobi symbol (a/n) in {-1, 0, +1} +@remark If n is prime then the Jacobi symbol becomes the Legendre symbol (a/p) defined to be +- (a/p) = +1 if a is a quadratic residue modulo p +- (a/p) = -1 if a is a quadratic non-residue modulo p +- (a/p) = 0 if a is divisible by p +*/ +int mpJacobi(const DIGIT_T a[], const DIGIT_T n[], size_t ndigits); + + +/** Computes x = one square root of an integer `a` modulo an odd prime `p` + * @param x To receive the result + * @param a An integer expected to be a quadratic residue modulo p + * @param p An odd prime + * @param ndigits The number of digits in each of the parameters + * @return 0 if successful, or -1 if square root does not exist + * @remark More precisely, find an integer x such that x^2 mod p = a. + * Uses the Tonelli-Shanks algorithm. The other square root is `p - x`. + * @warning Check the return value before using the result `x`. + */ +int mpModSqrt(DIGIT_T x[], const DIGIT_T a[], DIGIT_T p[], size_t ndigits); + +/** Computes w = u/2 (mod p) for an odd prime p + * @pre Require u to be in the range `[0,p-1]` */ +void mpModHalve(DIGIT_T w[], const DIGIT_T u[], const DIGIT_T p[], size_t ndigits); + +/** Computes w = u + v (mod m) +* @pre Require u and v to be in the range `[0, m-1]`. +* The variables `w` and `v` must not overlap. +* @remark Quicker than adding then using mpModulo() +*/ +void mpModAdd(DIGIT_T w[], const DIGIT_T u[], const DIGIT_T v[], const DIGIT_T m[], size_t ndigits); + +/** Computes w = u - v (mod m) +* @pre Require u and v to be in the range `[0, m-1]`. +* The variables `w` and `v` must not overlap. +* @remark Quicker than subtracting then using mpModulo() +*/ +void mpModSub(DIGIT_T w[], const DIGIT_T u[], const DIGIT_T v[], const DIGIT_T m[], size_t ndigits); + + +/** Computes u = v (mod m) in the special case where `0<=v> x */ +DIGIT_T mpShiftRight(DIGIT_T a[], const DIGIT_T b[], size_t x, size_t ndigits); + +/** Computes bitwise a = b XOR c */ +void mpXorBits(DIGIT_T a[], const DIGIT_T b[], const DIGIT_T c[], size_t ndigits); + +/** Computes bitwise a = b OR c */ +void mpOrBits(DIGIT_T a[], const DIGIT_T b[], const DIGIT_T c[], size_t ndigits); + +/** Computes bitwise a = b AND c */ +void mpAndBits(DIGIT_T a[], const DIGIT_T b[], const DIGIT_T c[], size_t ndigits); + +/** Computes bitwise a = NOT b */ +void mpNotBits(DIGIT_T a[], const DIGIT_T b[], size_t ndigits); + +/** Computes a = a mod 2^L, ie clears all bits greater than L */ +void mpModPowerOf2(DIGIT_T a[], size_t ndigits, size_t L); + +/** Sets bit n of a (0..nbits-1) with value 1 or 0 */ +int mpSetBit(DIGIT_T a[], size_t ndigits, size_t n, int value); + +/** Returns value 1 or 0 of bit n (0..nbits-1) */ +int mpGetBit(const DIGIT_T a[], size_t ndigits, size_t n); + + +/*************************/ +/* ASSIGNMENT OPERATIONS */ +/*************************/ + +/** Sets a = 0 */ +volatile DIGIT_T mpSetZero(volatile DIGIT_T a[], size_t ndigits); + +/** Sets a = d where d is a single digit */ +void mpSetDigit(DIGIT_T a[], DIGIT_T d, size_t ndigits); + +/** Sets a = b */ +void mpSetEqual(DIGIT_T a[], const DIGIT_T b[], size_t ndigits); + + +/**********************/ +/* OTHER MP UTILITIES */ +/**********************/ + +/** Returns number of significant non-zero digits in a */ +size_t mpSizeof(const DIGIT_T a[], size_t ndigits); + +/** Returns true (1) if `w` is probably prime +@param[in] w Number to test +@param[in] ndigits size of array `w` +@param[in] t The count of Rabin-Miller primality tests to carry out (recommended at least 80) +@returns true (1) if w is probably prime otherwise false (0) +@remark Uses FIPS-186-2/Rabin-Miller with trial division by small primes, +which is faster in most cases than mpRabinMiller(). +@see mpRabinMiller(). +*/ +int mpIsPrime(DIGIT_T w[], size_t ndigits, size_t t); + +/** Returns true (1) if `w` is probably prime using just the Rabin-Miller test +@see mpIsPrime() is preferred. +*/ +int mpRabinMiller(DIGIT_T w[], size_t ndigits, size_t t); + + +/**********************************************/ +/* FUNCTIONS THAT OPERATE WITH A SINGLE DIGIT */ +/**********************************************/ + +/** Computes w = u + d, returns carry */ +DIGIT_T mpShortAdd(DIGIT_T w[], const DIGIT_T u[], DIGIT_T d, size_t ndigits); + +/** Computes w = u - d, returns borrow */ +DIGIT_T mpShortSub(DIGIT_T w[], const DIGIT_T u[], DIGIT_T d, size_t ndigits); + +/** Computes product p = x * d */ +DIGIT_T mpShortMult(DIGIT_T p[], const DIGIT_T x[], DIGIT_T d, size_t ndigits); + +/** Computes quotient q = u div d, returns remainder */ +DIGIT_T mpShortDiv(DIGIT_T q[], const DIGIT_T u[], DIGIT_T d, size_t ndigits); + +/** Computes remainder r = a mod d */ +DIGIT_T mpShortMod(const DIGIT_T a[], DIGIT_T d, size_t ndigits); + +/** Returns sign of (a - d) where d is a single digit */ +int mpShortCmp(const DIGIT_T a[], DIGIT_T d, size_t ndigits); + +/** Returns true if a == d, else false, where d is a single digit */ +int mpShortIsEqual(const DIGIT_T a[], DIGIT_T d, size_t ndigits); + +/** Returns the least significant digit in a */ +DIGIT_T mpToShort(const DIGIT_T a[], size_t ndigits); + +/**************************************/ +/* CORE SINGLE PRECISION CALCULATIONS */ +/* (double where necessary) */ +/**************************************/ + +/* NOTE spMultiply and spDivide are used by almost all mp functions. + Using the Intel MASM alternatives gives significant speed improvements + -- to use, define USE_SPASM as a preprocessor directive. + [v2.2] Removed references to spasm* versions. +*/ + +/** Computes p = x * y, where x and y are single digits */ +int spMultiply(DIGIT_T p[2], DIGIT_T x, DIGIT_T y); + +/** Computes quotient q = u div v, remainder r = u mod v, where q, r and v are single digits */ +DIGIT_T spDivide(DIGIT_T *q, DIGIT_T *r, const DIGIT_T u[2], DIGIT_T v); + +/****************************/ +/* RANDOM NUMBER FUNCTIONS */ +/* CAUTION: NOT thread-safe */ +/****************************/ + +/** Returns a simple pseudo-random digit between lower and upper. +@remark Not crypto secure. +@see spBetterRand() +*/ +DIGIT_T spSimpleRand(DIGIT_T lower, DIGIT_T upper); + +/** Generate a quick-and-dirty random mp number a of bit length at most `nbits` using plain-old-rand +@remark Not crypto secure. +@see mpRandomBits() +*/ +size_t mpQuickRandBits(DIGIT_T a[], size_t ndigits, size_t nbits); + +/* [Version 2.1: spBetterRand moved to spRandom.h] */ + +/*******************/ +/* PRINT UTILITIES */ +/*******************/ + +/* [v2.3] Added these more convenient print functions */ + +/** Print in hex format with optional prefix and suffix strings */ +void mpPrintHex(const char *prefix, const DIGIT_T *a, size_t ndigits, const char *suffix); +/** Print in decimal format with optional prefix and suffix strings */ +void mpPrintDecimal(const char *prefix, const DIGIT_T *a, size_t ndigits, const char *suffix); + +/* See also mpPrintDecimalSigned() - new in [v2.5] */ + +/* New in [v2.6] */ +/** Print in bit (0/1) format with optional prefix and suffix strings */ +void mpPrintBits(const char *prefix, DIGIT_T *a, size_t ndigits, const char *suffix); + +/* OLDER PRINT FUNCTIONS, ALL PRINTING IN HEX */ +/** Print all digits in hex incl leading zero digits */ +void mpPrint(const DIGIT_T *a, size_t ndigits); +/** Print all digits in hex with newlines */ +void mpPrintNL(const DIGIT_T *a, size_t ndigits); +/** Print in hex but trim leading zero digits +@deprecated Use mpPrintHex() +*/ +void mpPrintTrim(const DIGIT_T *a, size_t ndigits); +/** Print in hex, trim leading zeroes, add newlines +@deprecated Use mpPrintHex() +*/ +void mpPrintTrimNL(const DIGIT_T *a, size_t ndigits); + +/************************/ +/* CONVERSION UTILITIES */ +/************************/ + +/** Converts nbytes octets into big digit a of max size ndigits +@returns actual number of digits set */ +size_t mpConvFromOctets(DIGIT_T a[], size_t ndigits, const unsigned char *c, size_t nbytes); +/** Converts big digit a into string of octets, in big-endian order, padding to nbytes or truncating if necessary. +@returns number of non-zero octets required. */ +size_t mpConvToOctets(const DIGIT_T a[], size_t ndigits, unsigned char *c, size_t nbytes); +/** Converts a string in decimal format to a big digit. +@returns actual number of (possibly zero) digits set. */ +size_t mpConvFromDecimal(DIGIT_T a[], size_t ndigits, const char *s); +/** Converts big digit a into a string in decimal format, where s has size smax including the terminating zero. +@returns number of chars required excluding leading zeroes. */ +size_t mpConvToDecimal(const DIGIT_T a[], size_t ndigits, char *s, size_t smax); +/** Converts a string in hexadecimal format to a big digit. +@return actual number of (possibly zero) digits set. */ +size_t mpConvFromHex(DIGIT_T a[], size_t ndigits, const char *s); +/** Converts big digit a into a string in hexadecimal format, + where s has size smax including the terminating zero. +@return number of chars required excluding leading zeroes. */ +size_t mpConvToHex(const DIGIT_T a[], size_t ndigits, char *s, size_t smax); + + +/****************************/ +/* SIGNED INTEGER FUNCTIONS */ +/****************************/ + +/* +NOTES ON SIGNED-INTEGER OPERATIONS +---------------------------------- +You can choose to treat BigDigits integers as "signed" with their values stored in two's-complement representation. +A negative number will be a BigDigit integer with its left-most bit set to one, i.e. + + mpGetBit(a, ndigits, (ndigits * BITS_PER_DIGIT - 1)) == 1 + +This works automatically for simple arithmetic operations like add, subtract and multiply (but not division). +For example, + + mpSetDigit(u, 2, NDIGITS); + mpSetDigit(v, 5, NDIGITS); + mpSubtract(w, u, v, NDIGITS); + mpPrintDecimalSigned("signed w=", w, NDIGITS, "\n"); + mpPrintHex("unsigned w=", w, NDIGITS, "\n"); + +will result in the output + + signed w=-3 + unsigned w=0xfffffffffffffffffffffffffffffffd + +It does *not* work for division or any number-theoretic function like mpModExp(), +all of which treat their parameters as "unsigned" integers and will not give the "signed" result you expect. + +To set a small negative number do: + + mpSetDigit(v, 5, NDIGITS); + mpChs(v, v, NDIGITS); + +-------------- +*/ + + +/** Returns true (1) if x < 0, else false (0) + * @remark Expects a negative number to be stored in two's-complement representation. + */ +int mpIsNegative(const DIGIT_T x[], size_t ndigits); + +/** Sets x = -y + * @remark Expects a negative number to be stored in two's-complement representation. + */ +int mpChs(DIGIT_T x[], const DIGIT_T y[], size_t ndigits); + +/** Sets x = |y|, the absolute value of y + * @remark Expects a negative number to be stored in two's-complement representation. + */ +int mpAbs(DIGIT_T x[], const DIGIT_T y[], size_t ndigits); + +/* New in [v2.5] - note that `a` is not `const` */ + +/** Print a signed integer in decimal format with optional prefix and suffix strings + * @remark Expects a negative number to be stored in two's-complement representation. + */ +void mpPrintDecimalSigned(const char *prefix, DIGIT_T *a, size_t ndigits, const char *suffix); + + +/****************/ +/* VERSION INFO */ +/****************/ +/** Returns version number = major*1000+minor*100+release*10+PP_OPTIONS */ +int mpVersion(void); + /* Version number = major*1000+minor*100+release*10+uses_asm(0|1)+uses_64(0|2)+uses_noalloc(0|5) + E.g. Version 2.3.0 will return 230x where x denotes the preprocessor options + x | USE_SPASM | USE_64WITH32 | NO_ALLOCS + ---------------------------------------- + 0 No No No + 1 Yes No No + 2 No Yes No + 3 Yes Yes* No + 5 No No Yes + 6 Yes No Yes + 7 No Yes Yes + 8 Yes Yes* Yes + ---------------------------------------- + * USE_SPASM will take precedence over USE_64WITH32. + */ + +/** Returns a pointer to a static string containing the time of compilation */ +const char *mpCompileTime(void); + +/** @cond */ +/*************************************************************/ +/* MEMORY ALLOCATION FUNCTIONS - USED INTERNALLY AND BY BIGD */ +/*************************************************************/ +/* [v2.2] added option to avoid memory allocation if NO_ALLOCS is defined */ +#ifndef NO_ALLOCS +DIGIT_T *mpAlloc(size_t ndigits); +void mpFree(DIGIT_T **p); +#endif +void mpFail(char *msg); + +/* Clean up by zeroising and freeing allocated memory */ +#ifdef NO_ALLOCS +#define mpDESTROY(b, n) do{if(b != NULL)mpSetZero(b,n);}while(0) +#else +#define mpDESTROY(b, n) do{if(b)mpSetZero(b,n);mpFree(&b);}while(0) +#endif +/** @endcond */ + +#ifdef __cplusplus +} +#endif + +#endif /* BIGDIGITS_H_ */ diff --git a/fsbl/lib/BigDigits/bigdigitsRand.c b/fsbl/lib/BigDigits/bigdigitsRand.c new file mode 100644 index 000000000..d50cc5b29 --- /dev/null +++ b/fsbl/lib/BigDigits/bigdigitsRand.c @@ -0,0 +1,318 @@ +/* $Id: bigdigitsRand.c $ */ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-16 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2016-03-31 09:51:00 $ + * $Revision: 2.6.1 $ + * $Author: dai $ + */ + +#include +#include +#include +#include "bigdigits.h" +#include "bigdigitsRand.h" + +static uint32_t btrrand(void); + +/**********************/ +/* EXPORTED FUNCTIONS */ +/**********************/ + +DIGIT_T spBetterRand(void) +{ /* Returns a "better" pseudo-random digit. */ + return (DIGIT_T)btrrand(); +} + +/* Added [v2.2] */ +size_t mpRandomBits(DIGIT_T a[], size_t ndigits, size_t nbits) + /* Generate a random mp number <= 2^{nbits}-1 using internal RNG */ +{ + const int bits_per_digit = BITS_PER_DIGIT; + size_t i; + int j; + DIGIT_T r; + + mpSetZero(a, ndigits); + r = spBetterRand(); + j = bits_per_digit; + for (i = 0; i < nbits; i++) + { + if (j <= 0) + { + r = spBetterRand(); + j = bits_per_digit; + } + mpSetBit(a, ndigits, i, r & 0x1); + r >>= 1; + j--; + } + + return i; +} + +/** Generate array of random octets (bytes) using internal RNG. +This function is in the correct form for BD_RANDFUNC. +Seed is ignored here. +*/ +int mpRandomOctets(unsigned char *bytes, size_t nbytes, const unsigned char *seed, size_t seedlen) +{ + const int octets_per_digit = sizeof(DIGIT_T); + size_t i; + int j; + DIGIT_T r; + + r = spBetterRand(); + j = octets_per_digit; + for (i = 0; i < nbytes; i++) + { + if (j <= 0) + { + r = spBetterRand(); + j = octets_per_digit; + } + bytes[i] = r & 0xFF; + r >>= 8; + j--; + } + return (int)i; +} + +/**********************/ +/* INTERNAL FUNCTIONS */ +/**********************/ + +/****************************************************************************** +Generates a pseudo-random DIGIT value using the generator algorithm from +ANSI X9.31 Appendix A.2.4 "Generating Pseudo Random Numbers Using the DEA" +(formerly ANSI X9.17, Appendix C) but with the `Tiny Encryption Algorithm` (TEAX) +replacing the `DES E-D-E two-key triple-encryption` algorithm (Double DES) +This variant has much less code, and is faster. + +CAUTION: not thread-safe as it uses a static variable. + +This is "pretty good", but not quite cryptographically secure since the seed is +only generated from the current time and process ID. +However, it is much better than just using the plain-old-rand() function. +The output should always pass the FIPS 140-2 statistical test. +Users can make their own call as to the security of this approach. +It's certainly sufficient for generating random digits for tests. +******************************************************************************/ + +/****************************************************************************** +ANSI X9.17/X9.31 ALGORITHM: +Given + + * D, a 64-bit representation of the current date-time + * S, a secret 64-bit seed that will be updated by this process + * K, a secret encryption key + +Step 1. Compute the 64-bit block X = G(S, K, D) as follows: + + 1. I = E(D, K) + 2. X = E(I XOR S, K) + 3. S' = E(X XOR I, K) + +where E(p, K) is the encryption of the 64-bit block p using key K. + +Step 2. Return X and set S = S' for the next cycle. + +****************************************************************************** +THIS VARIANT: +1. Replace `Double DES` algorithm with `TEAX`. +2. Replace effective 112-bit Double DES key with 128-bit TEAX key. +******************************************************************************/ + +#define KEY_WORDS 4 +static void encipher(uint32_t *const v,uint32_t *const w, const uint32_t *const k); + +/* CAUTION: We use a static structure to store our values in. */ +static struct { + int seeded; + uint32_t seed[2]; + uint32_t key[KEY_WORDS]; +} m_generator; + +#if !(defined(ONLY_ANSI)) && (defined(_WIN32) || defined(WIN32)) +#define WIN32_LEAN_AND_MEAN +#define STRICT +#include +#elif !(defined(ONLY_ANSI)) && (defined(unix) || defined (linux) || defined(__linux)) +#else +#endif +/* Cross-platform ways to get a 64-bit time value and the process ID */ +#if defined(unix) || defined(__unix__) || defined(linux) || defined(__linux__) +static void get_time64(uint32_t t[2]) +{ + #include + struct timeval tv; + gettimeofday(&tv, NULL); + memcpy(t, &tv, 2*sizeof(uint32_t)); +} +#include +#define processid getpid +#elif defined(_WIN32) || defined(WIN32) +#define WIN32_LEAN_AND_MEAN +#include +static void get_time64(uint32_t t[2]) +{ + FILETIME ft; + GetSystemTimeAsFileTime (&ft); + t[0] = ft.dwHighDateTime; + t[1] = ft.dwLowDateTime; +} +#define processid GetCurrentProcessId +#else /* ANSI FALLBACK */ +static void get_time64(uint32_t t[2]) +{ + /* Best we can do with strict ANSI */ + /* [v2.2] added clock() as well as time() to improve precision. + * OK, so this isn't actually the time, but it's an independent value accurate to + * one millisecond, which is what we want. + */ + + t[0] = (uint32_t)time(NULL); + t[1] = (uint32_t)clock(); +} +unsigned long processid(void) +{ return 0; } +#endif + +/* Given a 32-bit random seed, create a 64-bit seed S and 128-bit key K for the global generator */ +static void btrseed(uint32_t seed) +{ + int i; + uint32_t t[2]; + + /* Use plain old rand function to generate our global 64-bit seed S and initial 128-bit key K_0 */ + srand(seed); + /* Only trust the lowest 8 bits from rand()... */ + for (i = 0; i < 2; i++) + m_generator.seed[i] = (rand()&0xFF)<<24|(rand()&0xFF)<<16|(rand()&0xFF)<<8|(rand()&0xFF); + for (i = 0; i < KEY_WORDS; i++) + m_generator.key[i] = (rand()&0xFF)<<24|(rand()&0xFF)<<16|(rand()&0xFF)<<8|(rand()&0xFF); + + /* Set flag so we only do this once */ + m_generator.seeded = 1; + + /* [v2.4] Blend in the current 64-bit time and re-encrypt the key with itself */ + /* Note that the `block` in E(block, key) is 64 bits, but the `key` is 128 bits */ + + /* T = E(time, K_0) -- encrypt 64-bit time using K_0 */ + get_time64(t); + encipher(t, t, m_generator.key); + /* K_1[0..63] = E(T XOR K_0[0..63], K_0) + -- encrypt left 64 bits of K_0 using K_0 --> left 64 bits of K_1 + -- right 64 bits of K_0 --> right 64 bits of K_1 */ + m_generator.key[0] ^= t[0]; + m_generator.key[1] ^= t[1]; + encipher(&m_generator.key[0], &m_generator.key[0], m_generator.key); + /* K_2[64..127] = E(T XOR K_1[64..127], K_1) + -- encrypt right 64 bits of K_1 using K_1 --> right 64 bits of K_2 + -- left 64 bits of K_! --> left 64 bits of K_2 */ + m_generator.key[2] ^= t[0]; + m_generator.key[3] ^= t[1]; + encipher(&m_generator.key[2], &m_generator.key[2], m_generator.key); + /* Output global key K = K_2 */ +} + +static uint32_t btrrand(void) +/* Returns one 32-bit word */ +{ + uint32_t inter[2], x[2]; + + /* Set seed if not already seeded */ + if (!m_generator.seeded) + { /* [v2.4] added process ID so processes launched at same time should give different values */ + btrseed((uint32_t)time(NULL)<<16 ^ ((uint32_t)clock()<<8) ^ (uint32_t)processid()); + } + + /* I = E(D, K) */ + get_time64(inter); + encipher(inter, inter, m_generator.key); + + /* X = E(I XOR S, K) */ + x[0] = inter[0] ^ m_generator.seed[0]; + x[1] = inter[1] ^ m_generator.seed[1]; + encipher(x, x, m_generator.key); + + /* S' = E(X XOR I, K) */ + inter[0] ^= x[0]; + inter[1] ^= x[1]; + encipher(inter, m_generator.seed, m_generator.key); + + return x[0]; +} + +/************************************************ + +The Tiny Encryption Algorithm (TEA) by +David Wheeler and Roger Needham of the +Cambridge Computer Laboratory. + +Placed in the Public Domain by +David Wheeler and Roger Needham. + +**** ANSI C VERSION (New Variant) **** + +Notes: + +TEA is a Feistel cipher with XOR and +and addition as the non-linear mixing +functions. + +Takes 64 bits of data in v[0] and v[1]. +Returns 64 bits of data in w[0] and w[1]. +Takes 128 bits of key in k[0] - k[3]. + +TEA can be operated in any of the modes +of DES. Cipher Block Chaining is, for example, +simple to implement. + +n is the number of iterations. 32 is ample, +16 is sufficient, as few as eight may be OK. +The algorithm achieves good dispersion after +six iterations. The iteration count can be +made variable if required. + +Note this is optimised for 32-bit CPUs with +fast shift capabilities. It can very easily +be ported to assembly language on most CPUs. + +delta is chosen to be the real part of (the +golden ratio Sqrt(5/4) - 1/2 ~ 0.618034 +multiplied by 2^32). + +This version has been amended to foil two +weaknesses identified by David A. Wagner +(daw@cs.berkeley.edu): 1) effective key +length of old-variant TEA was 126 not 128 +bits 2) a related key attack was possible +although impractical. + +************************************************/ + +static void encipher(uint32_t *const v,uint32_t *const w, const uint32_t *const k) +{ + register uint32_t y=v[0],z=v[1],sum=0,delta=0x9E3779B9,n=32; + + while(n-->0) + { + y+= (((z<<4) ^ (z>>5)) + z) ^ (sum + k[sum & 3]); + sum += delta; + z+= (((y<<4) ^ (y>>5)) + y) ^ (sum + k[sum>>11 & 3]); + } + + w[0]=y; w[1]=z; +} + diff --git a/fsbl/lib/BigDigits/bigdigitsRand.h b/fsbl/lib/BigDigits/bigdigitsRand.h new file mode 100644 index 000000000..1d3be6ab8 --- /dev/null +++ b/fsbl/lib/BigDigits/bigdigitsRand.h @@ -0,0 +1,56 @@ +/* $Id: bigdigitsRand.h $ */ + +/** @file + Interface for BigDigits "mp" random number functions using a "pretty-good" internal RNG +*/ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-16 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2016-03-31 09:51:00 $ + * $Revision: 2.6.1 $ + * $Author: dai $ + */ + +/* [v2.2] changed name from spRandom to bigdigitsRand */ + +#ifndef BIGDIGITSRAND_H_ +#define BIGDIGITSRAND_H_ 1 + +#include "bigdigits.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** Returns a "better" pseudo-random digit using internal RNG. */ +DIGIT_T spBetterRand(void); + +/** Generate a random mp number of bit length at most \c nbits using internal RNG +@param[out] a to receive generated random number +@param[in] ndigits number of digits in a +@param[in] nbits maximum number of bits +@returns Number of digits actually set +*/ +size_t mpRandomBits(DIGIT_T a[], size_t ndigits, size_t nbits); + +/* Added in [v2.4] */ +/** Generate array of random octets (bytes) using internal RNG + * @remarks This function is in the correct form for BD_RANDFUNC to use in bdRandomSeeded(). + * \c seed is ignored. */ +int mpRandomOctets(unsigned char *bytes, size_t nbytes, const unsigned char *seed, size_t seedlen); + +#ifdef __cplusplus +} +#endif + +#endif /* BIGDIGITSRAND_H_ */ diff --git a/fsbl/lib/BigDigits/bigdtypes.h b/fsbl/lib/BigDigits/bigdtypes.h new file mode 100644 index 000000000..f4ace66a1 --- /dev/null +++ b/fsbl/lib/BigDigits/bigdtypes.h @@ -0,0 +1,73 @@ +/* Id: bigdtypes.h */ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-16 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * Date: 2016-03-31 09:51:00 + * Revision: 2.6.1 + * Author: dai + */ + +#ifndef BIGDTYPES_H_ +#define BIGDTYPES_H_ 1 + +#include + +/* + * The following PP instructions assume that all Linux systems have a C99-conforming + * ; that other Unix systems have the uint32_t definitions in ; + * and that MS et al don't have them at all. This version assumes that a long is 32 bits. + * Adjust if necessary to suit your system. + * You can override by defining HAVE_C99INCLUDES or HAVE_SYS_TYPES. + */ + +#ifndef EXACT_INTS_DEFINED_ +#define EXACT_INTS_DEFINED_ 1 +#ifndef HAVE_C99INCLUDES + #if (__STDC_VERSION__ >= 199901L) || defined(linux) || defined(__linux__) || defined(__APPLE__) + #define HAVE_C99INCLUDES + #endif +#endif +#ifndef HAVE_SYS_TYPES + #if defined(unix) || defined(__unix__) + #define HAVE_SYS_TYPES + #endif +#endif +#ifdef HAVE_C99INCLUDES + #include +#elif defined(HAVE_SYS_TYPES) + #include +#else + #define uint32_t unsigned long + #define uint16_t unsigned short + #define uint8_t unsigned char +#endif /* HAVE_C99INCLUDES */ +#endif /* EXACT_INTS_DEFINED_ */ + +/* Macros for format specifiers + * -- change to "u", "x" and "X" if necessary + */ +#ifdef HAVE_C99INCLUDES + #include +#else + #define PRIu32 "lu" + #define PRIx32 "lx" + #define PRIX32 "lX" +#endif +/* We define our own + * -- Example: ``printf("%" PRIxBIGD "\n", d);`` + */ +#define PRIuBIGD "u" +#define PRIxBIGD "x" +#define PRIXBIGD "X" + +#endif /* BIGDTYPES_H_ */ diff --git a/fsbl/lib/BigDigits/md5sums.txt b/fsbl/lib/BigDigits/md5sums.txt new file mode 100644 index 000000000..de9b497a4 --- /dev/null +++ b/fsbl/lib/BigDigits/md5sums.txt @@ -0,0 +1,32 @@ +cfd7d66d2864c38232ec1ef20b27c13a *LICENSE.txt +17f13e6f33c11d199a370877a73daab1 *README.txt +e0a4c0b86067519dce1c31eb47820d55 *CHANGES.txt +390455ee6fa27ae69ae4db230500dab6 *bigd.c +3b8bc17ffe358d88270f67d7e22652ea *bigdigits.c +6502876f806dab9fa7c936e8ec62007c *bigdigitsRand.c +4099fab5264b0cb60014fd926773150d *bigdRand.c +1e02b2d18f43def033befcb9099d0443 *bigd.h +19e879068a811517cd73caa5b23a8f62 *bigdigits.h +0bbcb5ea83be81a337369b9914488e42 *bigdigitsRand.h +e81a73abcf91800e711c1bb125d8f4f7 *bigdRand.h +539d22cab60882a54d24e70194589c80 *bigdtypes.h +b81d1bd091cfbcd84a56ee97fbb2c75e *spExtras.c +74823fc44d38c3dd05ea93fd72257f56 *spExtras.h +e55ca9faa07995d2c3f4f838aa10da82 *t_spExtras.c +cb27915885eab6d3e20a41a4aca6b584 *t_bdDSA.c +4359e4845303a7b9b331bb58049d207b *t_bdRDSA.c +8d112b9f2d0ef14c082fcc0e717a7c10 *t_bdRSA.c +2e42a107a8cb6d853402b374b1ea1a35 *t_bdRSA1.c +9f75098c53b4401c7cedb1b0287bf694 *t_bdSimple.c +9ec080ba4c01a5488bd91d8eb1fafedd *t_bdTest.c +109475a479054dda394c360d19069cdb *t_mpJacobi.c +cd9e1577d3d1edb05bfb17e6ca09e563 *t_mpRSA508.c +7c6b2ba66a85a2273e79dc7ec925d334 *t_mpTest.c +a7c9c27e0b805c3e9228b98525e381c3 *t_bdCPP.cpp +efd9aace575ca50680c1b0b3bc2ccc24 *t_bdRsaCrack.c +cd02be63809415859edf4473c98d515d *t_bdRsaFactorN.c +72e66d500a519e434c624d0634fa1bdc *t_bdQuickRandBits.c +bb5418c573a56685d15046e36da6a600 *t_bdRandomOctets.c +9dfab21d8660d178d44196f304316d30 *t_bdRSA_blinded.c +3ae57de5418c094099a5d0cef4a6b1c1 *t_mpModArith.c +d4bffb15795abda253198dab71332f98 *Makefile diff --git a/fsbl/lib/BigDigits/spExtras.c b/fsbl/lib/BigDigits/spExtras.c new file mode 100644 index 000000000..d03ca7a5b --- /dev/null +++ b/fsbl/lib/BigDigits/spExtras.c @@ -0,0 +1,303 @@ +/* spExtras.c */ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-15 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2015-10-22 10:23:00 $ + * $Revision: 2.5.0 $ + * $Author: dai $ + */ + + +#include +#include "bigdigits.h" +#include "spExtras.h" + +int spModMult(DIGIT_T *a, DIGIT_T x, DIGIT_T y, DIGIT_T m) +{ /* Computes a = (x * y) mod m */ + + /* Calc p[2] = x * y */ + DIGIT_T p[2]; + spMultiply(p, x, y); + + /* Then modulo */ + *a = mpShortMod(p, m, 2); + return 0; +} + +DIGIT_T spGcd_old(DIGIT_T x, DIGIT_T y) +{ /* Returns gcd(x, y) */ + + /* Ref: Schneier 2nd ed, p245 */ + + DIGIT_T g; + + if (x + y == 0) + return 0; /* Error */ + + g = y; + while (x > 0) + { + g = x; + x = y % x; + y = g; + } + return g; +} + +DIGIT_T spGcd(DIGIT_T a, DIGIT_T b) +{ /* Returns gcd(a, b) */ + + /* Ref: Cohen, Algorithm 1.3.5 (Binary GCD) + and Menezes, Algorithm 14.54 */ + + DIGIT_T r, t; + unsigned int k; + + /* 1. [Reduce size once] */ + if (a < b) + { /* exchange a and b */ + t = a; + a = b; + b = t; + } + if (0 == b) + { + return a; + } + r = a % b; + a = b; + b = r; + + if (0 == b) + { + return a; + } + /* 2. [Compute power of 2] */ + k = 0; + while (ISEVEN(a) && ISEVEN(b)) + { + a >>= 1; /* a <-- a/2 */ + b >>= 1; /* b <-- b/2 */ + k++; /* g <-- 2g */ + } + + while (a != 0) + { + while (ISEVEN(a)) + { + a >>= 1; /* a <-- a/2 until a is odd */ + } + while (ISEVEN(b)) + { + b >>= 1; /* b <-- a/2 until b is odd */ + } + /* t <-- |a-b|/2 */ + if (b > a) + t = (b - a) >> 1; + else + t = (a - b) >> 1; + /* If a >= b then a = t, otherwise b = t */ + if (a >= b) + a = t; + else + b = t; + } + /* Output (2^k.b) */ + return (b << k); +} + +/* spIsPrime */ + +static DIGIT_T SMALL_PRIMES[] = { 2, 3, 5, 7, 11, 13, 17, 19 }; +#define N_SMALL_PRIMES sizeof(SMALL_PRIMES)/sizeof(DIGIT_T) + +int spIsPrime(DIGIT_T w, size_t t) +{ /* Returns true if w is a probable prime + Carries out t iterations + (Use t = 50 for DSS Standard) + */ + /* Uses Rabin-Miller Probabilistic Primality Test, + Ref: FIPS-186-2 Appendix 2. + Also Schneier 2nd ed p 260 & Knuth Vol 2, p 379 + and ANSI 9.42-2003 Annex B.1.1. + */ + + unsigned int i, j; + DIGIT_T m, a, b, z; + int failed; + + /* First check for small primes */ + for (i = 0; i < N_SMALL_PRIMES; i++) + { + if (w % SMALL_PRIMES[i] == 0) + return 0; /* Failed */ + } + + /* Now do Rabin-Miller */ + /* Step 2. Find a and m where w = 1 + (2^a)m + m is odd and 2^a is largest power of 2 dividing w - 1 */ + + m = w - 1; + for (a = 0; ISEVEN(m); a++) + m >>= 1; /* Divide by 2 until m is odd */ + + /* + assert((1 << a) * m + 1 == w); + */ + + for (i = 0; i < t; i++) + { + failed = 1; /* Assume fail unless passed in loop */ + /* Step 3. Generate a random integer 1 < b < w */ + /* [v2.1] changed to 1 < b < w-1 */ + b = spSimpleRand(2, w - 2); + + /* + assert(1 < b && b < w-1); + */ + + /* Step 4. Set j = 0 and z = b^m mod w */ + j = 0; + spModExp(&z, b, m, w); + do + { + /* Step 5. If j = 0 and z = 1, or if z = w - 1 */ + if ((j == 0 && z == 1) || (z == w - 1)) + { /* Passes on this loop - go to Step 9 */ + failed = 0; + break; + } + + /* Step 6. If j > 0 and z = 1 */ + if (j > 0 && z == 1) + { /* Fails - go to Step 8 */ + failed = 1; + break; + } + + /* Step 7. j = j + 1. If j < a set z = z^2 mod w */ + j++; + if (j < a) + spModMult(&z, z, z, w); + /* Loop: if j < a go to Step 5 */ + } while (j < a); + + if (failed) + { /* Step 8. Not a prime - stop */ + return 0; + } + } /* Step 9. Go to Step 3 until i >= n */ + /* If got here, probably prime => success */ + return 1; +} + +/* spModExp */ + +/* Two alternative functions for spModExp */ + +int spModExpK(DIGIT_T *exp, DIGIT_T x, + DIGIT_T n, DIGIT_T d) +{ /* Computes exp = x^n mod d */ + /* Ref: Knuth Vol 2 Ch 4.6.3 p 462 Algorithm A + */ + DIGIT_T y = 1; /* Step A1. Initialise */ + + while (n > 0) + { /* Step A2. Halve N */ + if (n & 0x1) /* If odd */ + spModMult(&y, y, x, d); /* Step A3. Multiply Y by Z */ + + n >>= 1; /* Halve N */ + if (n > 0) /* Step A4. N = 0? Y is answer */ + spModMult(&x, x, x, d); /* Step A5. Square Z */ + } + + *exp = y; + return 0; +} + +int spModExpB(DIGIT_T *exp, DIGIT_T x, + DIGIT_T e, DIGIT_T m) +{ /* Computes exp = x^e mod m */ + /* Binary left-to-right method + */ + DIGIT_T mask; + DIGIT_T y; /* Temp variable */ + + /* Find most significant bit in e */ + for (mask = HIBITMASK; mask > 0; mask >>= 1) + { + if (e & mask) + break; + } + + y = x; + /* For j = k-2 downto 0 step -1 */ + for (mask >>= 1; mask > 0; mask >>= 1) + { + spModMult(&y, y, y, m); /* Square */ + if (e & mask) + spModMult(&y, y, x, m); /* Multiply */ + } + + *exp = y; + return 0; +} + +int spModInv(DIGIT_T *inv, DIGIT_T u, DIGIT_T v) +{ /* Computes inv = u^(-1) mod v */ + /* Ref: Knuth Algorithm X Vol 2 p 342 + ignoring u2, v2, t2 + and avoiding negative numbers + */ + DIGIT_T u1, u3, v1, v3, t1, t3, q, w; + int bIterations = 1; + int result; + + /* Step X1. Initialise */ + u1 = 1; + u3 = u; + v1 = 0; + v3 = v; + + while (v3 != 0) /* Step X2. */ + { /* Step X3. */ + q = u3 / v3; /* Divide and */ + t3 = u3 % v3; + w = q * v1; /* "Subtract" */ + t1 = u1 + w; + /* Swap */ + u1 = v1; + v1 = t1; + u3 = v3; + v3 = t3; + bIterations = -bIterations; + } + + if (bIterations < 0) + *inv = v - u1; + else + *inv = u1; + + /* Make sure u3 = gcd(u,v) == 1 */ + if (u3 != 1) + { + result = 1; + *inv = 0; + } + else + result = 0; + + return result; +} + diff --git a/fsbl/lib/BigDigits/spExtras.h b/fsbl/lib/BigDigits/spExtras.h new file mode 100644 index 000000000..b883a768e --- /dev/null +++ b/fsbl/lib/BigDigits/spExtras.h @@ -0,0 +1,55 @@ +/* spExtras.h */ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-15 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2015-10-22 10:23:00 $ + * $Revision: 2.5.0 $ + * $Author: dai $ + */ + +/* Interface to extra BigDigits "sp" functions that operate with single digits */ + +#ifndef SPEXTRAS_H_ +#define SPEXTRAS_H_ 1 + +#include "bigdigits.h" + +int spModMult(DIGIT_T *a, DIGIT_T x, DIGIT_T y, DIGIT_T m); + /* Computes a = (x * y) mod m */ + +int spModInv(DIGIT_T *inv, DIGIT_T u, DIGIT_T v); + /* Computes inv = u^-1 mod v */ + +DIGIT_T spGcd(DIGIT_T x, DIGIT_T y); + /* Returns gcd(x, y) */ + +int spIsPrime(DIGIT_T w, size_t t); + /* Returns true if w is a probable prime, else false; t tests */ + +/* int spModExp(DIGIT_T *exp, DIGIT_T x, DIGIT_T n, DIGIT_T d); */ + /* Computes exp = x^n mod d */ + +/* Two alternatives for spModExp: + define USE_KNUTH_MODEXP before to use Knuth method, + otherwise defaults to use Binary left-to-right method */ +#ifdef USE_KNUTH_MODEXP +#define spModExp spModExpK +#else +#define spModExp spModExpB +#endif /* USE_KNUTH_MODEXP */ + +int spModExpK(DIGIT_T *exp, DIGIT_T x, DIGIT_T n, DIGIT_T d); +int spModExpB(DIGIT_T *exp, DIGIT_T x, DIGIT_T n, DIGIT_T d); + +#endif /* SPEXTRAS_H_ */ + diff --git a/fsbl/lib/BigDigits/t_bdCPP.cpp b/fsbl/lib/BigDigits/t_bdCPP.cpp new file mode 100644 index 000000000..53d5fc3ad --- /dev/null +++ b/fsbl/lib/BigDigits/t_bdCPP.cpp @@ -0,0 +1,75 @@ +/* $Id: t_bdCPP.c $ */ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-15 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2015-10-22 10:23:00 $ + * $Revision: 2.5.0 $ + * $Author: dai $ + */ + +#include "bigd.h" +#include "bigdRand.h" + +#include +using namespace std; +int main() +{ + int ver; + ver = bdVersion(); + cout << "bdVersion = " << ver << "\n"; + + BIGD u, v, w; + + /* Create new BIGD objects */ + u = bdNew(); + v = bdNew(); + w = bdNew(); + + /* Compute 2 * 0xdeadbeefface */ + bdSetShort(u, 2); + bdConvFromHex(v, "deadbeefface"); + bdMultiply(w, u, v); + + /* Display the result */ + bdPrintHex("", u, " * "); + bdPrintHex("0x", v, " = "); + bdPrintHex("0x", w, "\n"); + /* and again in decimal format */ + bdPrintDecimal("", u, " * "); + bdPrintDecimal("", v, " = "); + bdPrintDecimal("", w, "\n"); + + + /* Add with digit overflow */ + /* ffffffff+ffffffff=00000001 fffffffe */ + bdSetShort(u, 0xffffffff); + bdSetShort(v, 0xffffffff); + bdAdd(w, u, v); + bdPrintHex("", u, "+"); + bdPrintHex("", v, "="); + bdPrintHex("", w, "\n"); + + /* Generate some random digits using internal RNG */ + cout << "Some random numbers:\n"; + bdSetShort(u, bdRandDigit()); + bdPrintHex("short: ", u, "\n"); + bdRandomBits(u, 512); + bdPrintHex("512 bits: ", u, "\n"); + + /* Free all objects we made */ + bdFree(&u); + bdFree(&v); + bdFree(&w); + + return 0; +} diff --git a/fsbl/lib/BigDigits/t_bdDSA.c b/fsbl/lib/BigDigits/t_bdDSA.c new file mode 100644 index 000000000..63f0f3724 --- /dev/null +++ b/fsbl/lib/BigDigits/t_bdDSA.c @@ -0,0 +1,182 @@ +/* $Id: t_bdDSA.c $ */ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-15 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2015-10-22 10:23:00 $ + * $Revision: 2.5.0 $ + * $Author: dai $ + */ + +/* EXAMPLE OF THE DSA from APPENDIX 5 FIPS PUB 186-2 + "DIGITAL SIGNATURE STANDARD (DSS)", 27 January 2000 */ + +#if _MSC_VER >= 1100 + /* Detect memory leaks in MSVC++ */ + #define _CRTDBG_MAP_ALLOC + #include + #include +#else + #include +#endif + +#include +#include +#include "bigd.h" + + +int main(void) +{ + BIGD p, q, g; + BIGD x, k; + BIGD hashm; + BIGD k1, y, tmp; + BIGD r, s; + BIGD w, u1, u2, v, gg, yy; + +/* MSVC memory leak checking stuff */ +#if _MSC_VER >= 1100 + _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); + _CrtSetReportMode( _CRT_WARN, _CRTDBG_MODE_FILE ); + _CrtSetReportFile( _CRT_WARN, _CRTDBG_FILE_STDOUT ); + _CrtSetReportMode( _CRT_ERROR, _CRTDBG_MODE_FILE ); + _CrtSetReportFile( _CRT_ERROR, _CRTDBG_FILE_STDOUT ); + _CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE ); + _CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDOUT ); +#endif + + printf("EXAMPLE OF THE DSA from APPENDIX 5 FIPS PUB 186-2 'DIGITAL SIGNATURE STANDARD'\n"); + + /* Initialise variables */ + p = bdNew(); + q = bdNew(); + g = bdNew(); + x = bdNew(); + k = bdNew(); + k1 = bdNew(); + y = bdNew(); + tmp = bdNew(); + hashm= bdNew(); + r= bdNew(); + s= bdNew(); + w = bdNew(); + u1 = bdNew(); + u2 = bdNew(); + v = bdNew(); + gg = bdNew(); + yy = bdNew(); + + /* INPUT */ + /* Convert integers from hex format to BIGD (spaces are ignored) */ + bdConvFromHex(p, "8df2a494 492276aa 3d25759b b06869cb eac0d83a fb8d0cf7" + "cbb8324f 0d7882e5 d0762fc5 b7210eaf c2e9adac 32ab7aac" + "49693dfb f83724c2 ec0736ee 31c80291"); + bdConvFromHex(q, "c773218c 737ec8ee 993b4f2d ed30f48e dace915f"); + bdConvFromHex(g, "626d0278 39ea0a13 413163a5 5b4cb500 299d5522 956cefcb" + "3bff10f3 99ce2c2e 71cb9de5 fa24babf 58e5b795 21925c9c" + "c42e9f6f 464b088c c572af53 e6d78802"); + bdConvFromHex(x, "2070b322 3dba372f de1c0ffc 7b2e3b49 8b260614"); + bdConvFromHex(k, "358dad57 1462710f 50e254cf 1a376b2b deaadfbf"); + /* M = ASCII form of "abc" (See FIPS PUB 180-1, Appendix A) + (SHA-1)(M) = */ + bdConvFromHex(hashm, "a9993e36 4706816a ba3e2571 7850c26c 9cd0d89d"); + + bdPrintHex("p=", p, "\n"); + bdPrintHex("q=", q, "\n"); + bdPrintHex("g=", g, "\n"); + bdPrintHex("x=", x, "\n"); + bdPrintHex("k=", k, "\n"); + bdPrintHex("SHA-1(M)=", hashm, "\n"); + + /* COMPUTATION BY SIGNER */ + /* (p, q, g) are public, common values + x is signer's private key + k is a random integer 0 < k < q + Keep (x, k) secret + */ + /* Compute k' = k^-1 mod q */ + bdModInv(k1, k, q); + bdPrintHex("k^-1=", k1, "\n"); + /* Compute y = g^x mod p */ + bdModExp(y, g, x, p); + bdPrintHex("y=", y, "\n"); + /* Compute r = (g^k mod p) mod q */ + bdModExp(tmp, g, k, p); + bdModulo(r, tmp, q); + bdPrintHex("r=", r, "\n"); + /* Compute s = (k^-1(SHA-1(M) + xr)) mod q */ + bdModMult(tmp, x, r, q); + bdAdd(tmp, tmp, hashm); + bdModMult(s, k1, tmp, q); + bdPrintHex("s=", s, "\n"); + + /* VERIFICATION BY RECEIVER */ + /* (p, q, g) are public, common values + y is signer's public key + (r,s) = signature(M) + Receiver receives (M', r', s'). + Receiver recomputes SHA-1(M') for received message M' + */ + + /* Check 0 < r' < q and 0 < s' < q */ + assert(bdCompare(q, r) > 0); + assert(bdCompare(q, s) > 0); + /* Compute w = s^-1 mod q */ + bdModInv(w, s, q); + bdPrintHex("w=", w, "\n"); + /* Compute u1 = ((SHA-1(M'))w) mod q */ + bdModMult(u1, hashm, w, q); + bdPrintHex("u1=", u1, "\n"); + /* Compute u2 = ((r')w) mod q */ + bdModMult(u2, r, w, q); + bdPrintHex("u2=", u2, "\n"); + /* Compute g^u1 mod p */ + bdModExp(gg, g, u1, p); + bdPrintHex("g^u1 mod p=\n", gg, "\n"); + /* Compute y^u2 mod p */ + bdModExp(yy, y, u2, p); + bdPrintHex("y^u2 mod p=\n", yy, "\n"); + /* Compute v = (((g^u1)(y^u2)) mod p) mod q */ + bdModMult(tmp, gg, yy, p); + bdModulo(v, tmp, q); + bdPrintHex("v=", v, "\n"); + /* Verify that v = r' */ + if (bdIsEqual(v, r)) + printf("Signature verified OK\n"); + else + printf("Signature verification FAILED!\n"); + + assert(bdIsEqual(v, r)); + + /* Clean up */ + bdFree(&p); + bdFree(&q); + bdFree(&g); + bdFree(&x); + bdFree(&k); + bdFree(&k1); + bdFree(&y); + bdFree(&tmp); + bdFree(&hashm); + bdFree(&r); + bdFree(&s); + bdFree(&w); + bdFree(&u1); + bdFree(&u2); + bdFree(&v); + bdFree(&gg); + bdFree(&yy); + + printf("OK, successfully completed tests.\n"); + + return 0; +} diff --git a/fsbl/lib/BigDigits/t_bdQuickRandBits.c b/fsbl/lib/BigDigits/t_bdQuickRandBits.c new file mode 100644 index 000000000..e8b88d073 --- /dev/null +++ b/fsbl/lib/BigDigits/t_bdQuickRandBits.c @@ -0,0 +1,65 @@ +/* $Id: t_bdQuickRandBits.c $ */ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-16 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2016-03-31 09:51:00 $ + * $Revision: 2.6.1 $ + * $Author: dai $ + */ + +/* +What is the difference between bdQuickRandBits and bdRandomBits? + +bdRandomBits() uses the "pretty-good" internal RNG and requires you to include bigdRand.h +and compile with bigdRand.c and bigdigitsRand.c. +You can be pretty sure that the numbers generated will pass all statistical tests for randomness. + +bdQuickRandBits() just needs the standard bigd.h include file and you do not need to +add the modules bigdRand.c and bigdigitsRand.c to your project. +It uses the stdlib rand() function, which is by no means secure, but it will quickly fill up a number +with the required number of random-looking bits. +It might repeat if you call twice in quick succession. It's quick and dirty, as advertised. + +If you *really* want a secure random number, then use bdRandomSeeded() and call your own super-secure +random number generator, throwing in your own bit of extra entropy with the seed. + +*/ + +#include +#include +#include "bigd.h" +#include "bigdRand.h" + +int main(void) +{ + BIGD a; + int i; + + a = bdNew(); + // Test bdQuickRandBits (quick-and-dirty) + printf("Testing bdQuickRandBits...\n"); + for (i = 0; i < 10; i++) + { + bdQuickRandBits(a, 128); + bdPrintHex("", a, "\n"); + } + // Test bdRandomBits (more secure) + printf("Testing bdRandomBits...\n"); + for (i = 0; i < 10; i++) + { + bdRandomBits(a, 128); + bdPrintHex("", a, "\n"); + } + + return 0; +} diff --git a/fsbl/lib/BigDigits/t_bdRDSA.c b/fsbl/lib/BigDigits/t_bdRDSA.c new file mode 100644 index 000000000..897d98108 --- /dev/null +++ b/fsbl/lib/BigDigits/t_bdRDSA.c @@ -0,0 +1,220 @@ +/* $Id: t_bdRDSA.c $ */ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-15 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2015-10-22 10:23:00 $ + * $Revision: 2.5.0 $ + * $Author: dai $ + */ + +/* EXAMPLE OF THE rDSA from ANSI X9.31 -1998 + Digital Signatures Using Reversible Public Key + Cryptography for the Financial Services Industry (rDSA), + September 9, 1998 + Appendix D.1 Odd e = 3 with 1024-bit n + and D.3 Odd e =3 with 2048-bit n +*/ + +#if _MSC_VER >= 1100 + /* Detect memory leaks in MSVC++ */ + #define _CRTDBG_MAP_ALLOC + #include + #include +#else + #include +#endif + +#include +#include +#include "bigd.h" + + +int rDSA_SignAndVerify(BIGD ir, BIGD n, BIGD e, BIGD d) +{ + BIGD s; + BIGD tmp; + BIGD rr, ir1, rr1; + int result; + + /* Initialise variables */ + s = bdNew(); + rr = bdNew(); + ir1 = bdNew(); + rr1 = bdNew(); + tmp = bdNew(); + + bdPrintHex("n=\n", n, "\n"); + bdPrintHex("e=", e, "\n"); + bdPrintHex("d=\n", d, "\n"); + bdPrintHex("IR=\n", ir, "\n"); + + /* COMPUTATION BY SIGNER */ + /* (n, e) is the public key + (n, d) is the private key + IR is the encoded message + Keep d secret + */ + + /* For odd e, RR = IR. The value RR^d mod n is now computed */ + bdModExp(tmp, ir, d, n); + bdPrintHex("RR^d mod n=\n", tmp, "\n"); + + /* S = min { RR^d mod n, n-(RR^d mod n) } */ + /* i.e. if this value > n/2, the signature S = n - (RR^d mod n) */ + bdSubtract(s, n, tmp); + if (bdCompare(s, tmp) > 0) + bdSetEqual(s, tmp); + bdPrintHex("S=\n", s, "\n"); + + /* D.1.3 Signature Verification */ + + /* The value (S')^e mod n is computed to yield RR'. */ + bdModExp(rr, s, e, n); + bdPrintHex("RR'=\n", rr, "\n"); + + /* If RR' = 12 mod 16, then IR' = RR'; + If n - RR' = 12 mod 16, then IR' = n - RR'; */ + + if (bdShortMod(tmp, rr, 16) == 12) + bdSetEqual(ir1, rr); + else + bdSubtract(ir1, n, rr); + + bdPrintHex("IR'=\n", ir1, "\n"); + + /* Since IR' is identical to the computed hash IR, and the signature verification is + successful. */ + result = bdIsEqual(ir1, ir); + if (result) + printf("Signature verified OK\n"); + else + printf("Signature verification FAILED!\n"); + + /* Clean up */ + bdFree(&s); + bdFree(&rr); + bdFree(&ir1); + bdFree(&rr1); + bdFree(&tmp); + + return result; /* TRUE = success */ +} + +int main(void) +{ + BIGD e, n, d; + BIGD ir; + int result; + +/* MSVC memory leak checking stuff */ +#if _MSC_VER >= 1100 + _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); + _CrtSetReportMode( _CRT_WARN, _CRTDBG_MODE_FILE ); + _CrtSetReportFile( _CRT_WARN, _CRTDBG_FILE_STDOUT ); + _CrtSetReportMode( _CRT_ERROR, _CRTDBG_MODE_FILE ); + _CrtSetReportFile( _CRT_ERROR, _CRTDBG_FILE_STDOUT ); + _CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE ); + _CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDOUT ); +#endif + + printf("EXAMPLE OF THE rDSA from ANSI X9.31-1998 Appendix D\n"); + + /* Initialise variables */ + e = bdNew(); + n = bdNew(); + d = bdNew(); + ir = bdNew(); + + /* INPUT */ + /* Convert integers from hex format to BIGD (spaces are ignored) */ + bdConvFromHex(n, "ACD1CC46 DFE54FE8 F9786672 664CA269 0D0AD7E5" + "003BC642 7954D939 EEE8B271 52E6A947 450D7FA9" + "80172DE0 64D6569A 28A83FE7 0FA840F5 E9802CB8" + "984AB34B D5C1E639 9EC21E4D 3A3A69BE 4E676F39" + "5AAFEF7C 4925FD4F AEE9F9E5 E48AF431 5DF0EC2D" + "B9AD7A35 0B3DF2F4 D15DC003 9846D1AC A3527B1A" + "75049E3F E34F43BD"); + bdConvFromHex(d, "1CCDA20B CFFB8D51 7EE96668 66621B11 822C7950" + "D55F4BB5 BEE37989 A7D17312 E326718B E0D79546" + "EAAE87A5 6623B919 B1715FFB D7F16028 FC400774" + "1961C88C 5D7B4DAA AC8D36A9 8C9EFBB2 6C8A4A0E" + "6BC15B35 8E528A1A C9D0F042 BEB93BCA 16B541B3" + "3F80C933 A3B76928 5C462ED5 677BFE89 DF07BED5" + "C127FD13 241D3C4B"); + bdConvFromHex(ir, "6BBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB" + "BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB" + "BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB" + "BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB" + "BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB" + "BBBBBBBB BBBAA999 3E364706 816ABA3E 25717850" + "C26C9CD0 D89D33CC"); + /* Set e = 3 directly */ + bdSetShort(e, 3); + + result = rDSA_SignAndVerify(ir, n, e, d); + assert(result); + + /* Repeat for D.3 Odd e =3 with 2048-bit n */ + bdConvFromHex(n, "BCCA30CA 5280BC51 E758DBAF FEDFE46A 5D2A78D8" + "3969E154 780F9B27 AD4E76E6 3E8FA960 29C04DE3" + "F2C4B01F ECBEBB44 FC2F5F8A C69BD0E3 278FF065" + "8A6F9AC2 3BCFB2C9 AAAF1AC4 D5571A55 D3B1EC35" + "50CF34D8 F789235D D3B5C4E2 F3DF1761 19D918F2" + "D35E805B 62FC35FE E5FD0785 4824B984 6DC1665E" + "35A31873 BF6A24FE 50842D0A A0305C35 D0F45B0D" + "7C2F1E94 32D850D6 7956D383 BBEF52FC 2ACBF7AE" + "6F7CA214 88A56456 BDF66726 96EE037C 3CAA2199" + "904E37AA 40134E10 155FC813 93A225BD 129C4B3B" + "C91AD3A5 FC958A6A BCABE355 0390B677 87625D78" + "F8D3172B 673C4482 CE354B89 51D7E8C4 DDCE5D4C" + "DFA6790C 6CE8C02C 8D807AE2 6F27FE33"); + bdConvFromHex(d, "7DDC2086 E1AB2836 9A3B3D1F FF3FED9C 3E1C5090" + "26469638 500A676F C8DEF9EE D45FC640 1BD58942" + "A1D8756A 9DD47CD8 A81F9507 2F128B42 1A5FF599" + "06F511D6 D28A7731 1C74BC83 38E4BC39 37CBF2CE" + "35DF7890 A5061793 E2792DEC A294BA40 BBE610A1" + "E23F003C ECA823FF 43FE0503 856DD102 F3D6443E" + "CE6CBAF7 D4F16DFD BAF7C2F8 CB4955E2 F2DF29FD" + "A7A4DD7B 93785252 E2CA4AAD 14E8B1A1 7881D381" + "DAD9061E C8AB50DD CBF8B56A FA464F01 D28DFDFF" + "0CAFF6B5 588E8F77 6FA128DE 7C102494 7D5D8067" + "3F545A5C 73FBC16B 609A33A1 1021DD8F 37A4E7C4" + "78AA19E3 BCB1BBD8 F4AA9232 65F1F1D5 5236753A" + "C8C10D60 F0FAB073 66439A90 5E2C63AB"); + bdConvFromHex(ir, "6BBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB" + "BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB" + "BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB" + "BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB" + "BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB" + "BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB" + "BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB" + "BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB" + "BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB" + "BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB" + "BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB BBBBBBBB" + "BBBBBBBB BBBBBBBB BBBBBBBB BBBAA999 3E364706" + "816ABA3E 25717850 C26C9CD0 D89D33CC"); + + result = rDSA_SignAndVerify(ir, n, e, d); + assert(result); + + /* Clean up */ + bdFree(&e); + bdFree(&n); + bdFree(&d); + bdFree(&ir); + + printf("OK, successfully completed tests.\n"); + + return 0; +} diff --git a/fsbl/lib/BigDigits/t_bdRSA.c b/fsbl/lib/BigDigits/t_bdRSA.c new file mode 100644 index 000000000..3d07e152c --- /dev/null +++ b/fsbl/lib/BigDigits/t_bdRSA.c @@ -0,0 +1,454 @@ +/* $Id: t_bdRSA.c $ */ + +/* Test BigDigits "bd" functions using a new RSA key and random data */ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-15 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2015-10-22 10:23:00 $ + * $Revision: 2.5.0 $ + * $Author: dai $ + */ + + +#if _MSC_VER >= 1100 + /* Detect memory leaks in MSVC++ */ + #define _CRTDBG_MAP_ALLOC + #include + #include +#else + #include +#endif + +#include +#include +#include +#include +#include "bigd.h" + +static int my_rand(unsigned char *bytes, size_t nbytes, const unsigned char *seed, size_t seedlen) +/* Our own (very insecure) random generator func using good old rand() + but in the required format for BD_RANDFUNC + -- replace this in practice with your own cryptographically-secure function + -- or use bdRandomOctets() in bigdRand.h +*/ +{ + unsigned int myseed; + size_t i; + int offset; + + /* Use time for 32-bit seed - then blend in user-supplied seed, if any */ + myseed = (unsigned)time(NULL) ^ (unsigned)clock(); + if (seed) + { + for (offset = 0, i = 0; i < seedlen; i++, offset = (offset + 1) % sizeof(unsigned)) + myseed ^= ((unsigned int)seed[i] << (offset * 8)); + } + + srand(myseed); + while (nbytes--) + { + *bytes++ = rand() & 0xFF; + } + + return 0; +} + + +#define give_a_sign(c) putchar((c)) + +static bdigit_t SMALL_PRIMES[] = { + 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, + 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, + 103, 107, 109, 113, + 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, + 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, + 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, + 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, + 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, + 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, + 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, + 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, + 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, + 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, + 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, + 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, + 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, + 947, 953, 967, 971, 977, 983, 991, 997, +}; +#define N_SMALL_PRIMES (sizeof(SMALL_PRIMES)/sizeof(bdigit_t)) + +int generateRSAPrime(BIGD p, size_t nbits, bdigit_t e, size_t ntests, + const unsigned char *seed, size_t seedlen, BD_RANDFUNC randFunc) +/* Create a prime p such that gcd(p-1, e) = 1. + Returns # prime tests carried out or -1 if failed. + Sets the TWO highest bits to ensure that the + product pq will always have its high bit set. + e MUST be a prime > 2. + This function assumes that e is prime so we can + do the less expensive test p mod e != 1 instead + of gcd(p-1, e) == 1. + Uses improvement in trial division from Menezes 4.51. + */ +{ + BIGD u; + size_t i, j, iloop, maxloops, maxodd; + int done, overflow, failedtrial; + int count = 0; + bdigit_t r[N_SMALL_PRIMES]; + + /* Create a temp */ + u = bdNew(); + + maxodd = nbits * 100; + maxloops = 5; + + done = 0; + for (iloop = 0; !done && iloop < maxloops; iloop++) + { + /* Set candidate n0 as random odd number */ + bdRandomSeeded(p, nbits, seed, seedlen, randFunc); + /* Set two highest and low bits */ + bdSetBit(p, nbits - 1, 1); + bdSetBit(p, nbits - 2, 1); + bdSetBit(p, 0, 1); + + /* To improve trial division, compute table R[q] = n0 mod q + for each odd prime q <= B + */ + for (i = 0; i < N_SMALL_PRIMES; i++) + { + r[i] = bdShortMod(u, p, SMALL_PRIMES[i]); + } + + done = overflow = 0; + /* Try every odd number n0, n0+2, n0+4,... until we succeed */ + for (j = 0; j < maxodd; j++, overflow = bdShortAdd(p, p, 2)) + { + /* Check for overflow */ + if (overflow) + break; + + give_a_sign('.'); + count++; + + /* Each time 2 is added to the current candidate + update table R[q] = (R[q] + 2) mod q */ + if (j > 0) + { + for (i = 0; i < N_SMALL_PRIMES; i++) + { + r[i] = (r[i] + 2) % SMALL_PRIMES[i]; + } + } + + /* Candidate passes the trial division stage if and only if + NONE of the R[q] values equal zero */ + for (failedtrial = 0, i = 0; i < N_SMALL_PRIMES; i++) + { + if (r[i] == 0) + { + failedtrial = 1; + break; + } + } + if (failedtrial) + continue; + + /* If p mod e = 1 then gcd(p, e) > 1, so try again */ + bdShortMod(u, p, e); + if (bdShortCmp(u, 1) == 0) + continue; + + /* Do expensive primality test */ + give_a_sign('*'); + if (bdRabinMiller(p, ntests)) + { /* Success! - we have a prime */ + done = 1; + break; + } + + } + } + + + /* Clear up */ + bdFree(&u); + printf("\n"); + + return (done ? count : -1); +} + +int generateRSAKey(BIGD n, BIGD e, BIGD d, BIGD p, BIGD q, BIGD dP, BIGD dQ, BIGD qInv, + size_t nbits, bdigit_t ee, size_t ntests, unsigned char *seed, size_t seedlen, + BD_RANDFUNC randFunc) +{ + BIGD g, p1, q1, phi; + size_t np, nq; + unsigned char *myseed = NULL; + clock_t start, finish; + double duration, tmake; + long ptests; + int res; + + /* Initialise */ + g = bdNew(); + p1 = bdNew(); + q1 = bdNew(); + phi = bdNew(); + + printf("Generating a %d-bit RSA key...\n", nbits); + + /* We add an extra byte to the user-supplied seed */ + myseed = malloc(seedlen + 1); + if (!myseed) return -1; + memcpy(myseed, seed, seedlen); + + /* Do (p, q) in two halves, approx equal */ + nq = nbits / 2 ; + np = nbits - nq; + + /* Make sure seeds are slightly different for p and q */ + myseed[seedlen] = 0x01; + start = clock(); + res = generateRSAPrime(p, np, ee, ntests, myseed, seedlen+1, randFunc); + finish = clock(); + bdPrintHex("p=", p, "\n"); + assert(res > 0); + duration = (double)(finish - start) / CLOCKS_PER_SEC; + printf("generateRSAPrime took %.3f secs and %d prime candidates (%.4f s/test)\n", duration, res, duration / res); + ptests = res; + tmake = duration; + printf("p is %d bits\n", bdBitLength(p)); + + myseed[seedlen] = 0xff; + start = clock(); + res = generateRSAPrime(q, nq, ee, ntests, myseed, seedlen+1, randFunc); + finish = clock(); + bdPrintHex("q=", q, "\n"); + assert(res > 0); + duration = (double)(finish - start) / CLOCKS_PER_SEC; + printf("generateRSAPrime took %.3f secs and %d prime candidates (%.4f s/test)\n", duration, res, duration / res); + ptests += res; + tmake += duration; + printf("q is %d bits\n", bdBitLength(q)); + /* Check that p != q (if so, RNG is faulty!) */ + assert(!bdIsEqual(p, q)); + + bdSetShort(e, ee); + bdPrintHex("e=", e, "\n"); + + /* If q > p swap p and q so p > q */ + if (bdCompare(p, q) < 1) + { + bdSetEqual(g, p); + bdSetEqual(p, q); + bdSetEqual(q, g); + } + + /* Calc p-1 and q-1 */ + bdSetEqual(p1, p); + bdDecrement(p1); + bdPrintHex("p-1=\n", p1, "\n"); + bdSetEqual(q1, q); + bdDecrement(q1); + bdPrintHex("q-1=\n", q1, "\n"); + + /* Check gcd(p-1, e) = 1 */ + bdGcd(g, p1, e); + bdPrintHex("gcd(p-1,e)=", g, "\n"); + assert(bdShortCmp(g, 1) == 0); + bdGcd(g, q1, e); + bdPrintHex("gcd(q-1,e)=", g, "\n"); + assert(bdShortCmp(g, 1) == 0); + + /* Compute n = pq */ + bdMultiply(n, p, q); + bdPrintHex("n=\n", n, "\n"); + + /* Compute d = e^-1 mod (p-1)(q-1) */ + bdMultiply(phi, p1, q1); + bdPrintHex("phi=\n", phi, "\n"); + res = bdModInv(d, e, phi); + assert(res == 0); + bdPrintHex("d=\n", d, "\n"); + + /* Check ed = 1 mod phi */ + bdModMult(g, e, d, phi); + bdPrintHex("ed mod phi=", g, "\n"); + assert(bdShortCmp(g, 1) == 0); + + /* Calculate CRT key values */ + printf("CRT values:\n"); + bdModInv(dP, e, p1); + bdModInv(dQ, e, q1); + bdModInv(qInv, q, p); + bdPrintHex("dP=", dP, "\n"); + bdPrintHex("dQ=", dQ, "\n"); + bdPrintHex("qInv=", qInv, "\n"); + + printf("\nTime to create key = %.3f secs with %ld prime candidates (%.4f s/test)\n\n", tmake, ptests, tmake / ptests); + printf("n is %d bits\n", bdBitLength(n)); + + /* Clean up */ + if (myseed) free(myseed); + bdFree(&g); + bdFree(&p1); + bdFree(&q1); + bdFree(&phi); + + return 0; +} + +static int debug = 0; + +int main(void) +{ + size_t nbits = 1025; /* (use an odd modulus size to see if it breaks anything!) */ + unsigned ee = 0x3; + size_t ntests = 50; + unsigned char *seed = NULL; + size_t seedlen = 0; + + BIGD n, e, d, p, q, dP, dQ, qInv; + BIGD m, c, s, hq, h, m1, m2; + int res; + clock_t start, finish; + double tinv, tcrt; + +/* MSVC memory leak checking stuff */ +#if _MSC_VER >= 1100 + _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); + _CrtSetReportMode( _CRT_WARN, _CRTDBG_MODE_FILE ); + _CrtSetReportFile( _CRT_WARN, _CRTDBG_FILE_STDOUT ); + _CrtSetReportMode( _CRT_ERROR, _CRTDBG_MODE_FILE ); + _CrtSetReportFile( _CRT_ERROR, _CRTDBG_FILE_STDOUT ); + _CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE ); + _CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDOUT ); +#endif + + printf("Test BIGDIGITS with a new %d-bit RSA key and random data.\n", nbits); + + /* Initialise */ + p = bdNew(); + q = bdNew(); + n = bdNew(); + e = bdNew(); + d = bdNew(); + dP= bdNew(); + dQ= bdNew(); + qInv= bdNew(); + m = bdNew(); + c = bdNew(); + s = bdNew(); + m1 = bdNew(); + m2 = bdNew(); + h = bdNew(); + hq = bdNew(); + + /* Create RSA key pair (n, e),(d, p, q, dP, dQ, qInv) */ + /* NB we use simple my_rand() here -- you should use a proper cryptographically-secure RNG */ + res = generateRSAKey(n, e, d, p, q, dP, dQ, qInv, nbits, ee, ntests, seed, seedlen, my_rand); + + if (res != 0) + { + printf("Failed to generate RSA key!\n"); + goto clean_up; + } + + /* Set a random message m < n */ + bdRandomSeeded(m, bdBitLength(n)-1, NULL, 0, my_rand); + bdPrintHex("m=\n", m, "\n"); + + /* Encrypt c = m^e mod n */ + bdModExp(c, m, e, n); + bdPrintHex("c=\n", c, "\n"); + + /* Check decrypt m1 = c^d mod n */ + start = clock(); + bdModExp(m1, c, d, n); + finish = clock(); + tinv = (double)(finish - start) / CLOCKS_PER_SEC; + bdPrintHex("m'=\n", m1, "\n"); + res = bdCompare(m1, m); + printf("Decryption %s\n", (res == 0 ? "OK" : "FAILED!")); + assert(res == 0); + printf("Decrypt by inversion took %.3f secs\n", tinv); + + /* Sign s = m^d mod n */ + bdModExp(s, m, d, n); + bdPrintHex("s=\n", s, "\n"); + + /* Check verify m1 = s^e mod n */ + bdModExp(m1, s, e, n); + bdPrintHex("m'=\n", m1, "\n"); + res = bdCompare(m1, m); + printf("Verification %s\n", (res == 0 ? "OK" : "FAILED!")); + assert(res == 0); + + /* Decrypt using CRT method - Ref: PKCS #1 */ + bdPrintHex("m=", m, "\n"); + bdPrintHex("c=", c, "\n"); + bdPrintHex("p=", p, "\n"); + bdPrintHex("q=", q, "\n"); + start = clock(); + /* Let m_1 = c^dP mod p. */ + bdModExp(m1, c, dP, p); + if(debug)bdPrintHex("m_1=c^dP mod p=", m1, "\n"); + /* Let m_2 = c^dQ mod q. */ + bdModExp(m2, c, dQ, q); + if(debug)bdPrintHex("m_2=c^dQ mod q=", m2, "\n"); + if (bdCompare(m1, m2) < 0) + bdAdd(m1, m1, p); + bdSubtract(m1, m1, m2); + if(debug)bdPrintHex("m_1 - m_2=", m1, "\n"); + /* Let h = qInv ( m_1 - m_2 ) mod p. */ + bdModMult(h, qInv, m1, p); + if(debug)bdPrintHex("h=qInv(m1-m2) mod p=", h, "\n"); + bdMultiply(hq, h, q); + if(debug)bdPrintHex("hq=", hq, "\n"); + /* Let m = m_2 + hq. */ + bdAdd(m1, m2, hq); + finish = clock(); + tcrt = (double)(finish - start) / CLOCKS_PER_SEC; + if(debug)bdPrintHex("m'=m_2 + hq=", m1, "\n"); + bdPrintHex("(CRT)m'=\n", m1, "\n"); + res = bdCompare(m1, m); + printf("CRT Decryption %s\n", (res == 0 ? "OK" : "FAILED!")); + assert(res == 0); + printf("Decrypt by CRT took %.3f secs\n", tcrt); + printf("c.f. Decrypt by inversion %.3f secs (factor = %.1f)\n", + tinv, (tcrt ? tinv / tcrt : 0)); + printf("n is %d bits\n", bdBitLength(n)); + + /* Clean up */ +clean_up: + bdFree(&n); + bdFree(&e); + bdFree(&d); + bdFree(&p); + bdFree(&q); + bdFree(&dP); + bdFree(&dQ); + bdFree(&qInv); + bdFree(&m); + bdFree(&c); + bdFree(&s); + bdFree(&m1); + bdFree(&m2); + bdFree(&h); + bdFree(&hq); + + printf("OK, successfully completed tests.\n"); + + return 0; +} diff --git a/fsbl/lib/BigDigits/t_bdRSA1.c b/fsbl/lib/BigDigits/t_bdRSA1.c new file mode 100644 index 000000000..ac26da5fe --- /dev/null +++ b/fsbl/lib/BigDigits/t_bdRSA1.c @@ -0,0 +1,402 @@ +/* $Id: t_bdRSA1.c $ */ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-15 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2015-10-22 10:23:00 $ + * $Revision: 2.5.0 $ + * $Author: dai $ + */ + +/* Test BigDigits "bd" functions using a new RSA key and user input plaintext + + NOTE: this uses a different algorithm to generate the random number (a better one, + still not quite cryptographically secure, but much better than using rand()). + It also uses a more convenient key length of 1024 which is an exact multiple of 8. + The "message" to be encrypted is accepted from the command-line or defaults to "abc". + The message length is restricted to 117 bytes by the size of the key (|n|-11). +*/ + +#if _MSC_VER >= 1100 + /* Detect memory leaks in MSVC++ */ + #define _CRTDBG_MAP_ALLOC + #include + #include +#else + #include +#endif + +#include +#include +#include +#include +#include "bigd.h" +#include "bigdRand.h" + + +static void pr_bytesmsg(char *msg, unsigned char *bytes, size_t len) +{ + size_t i; + printf("%s", msg); + for (i = 0; i < len; i++) + printf("%02x", bytes[i]); + printf("\n"); +} + +int generateRSAKey(BIGD n, BIGD e, BIGD d, BIGD p, BIGD q, BIGD dP, BIGD dQ, BIGD qInv, + size_t nbits, bdigit_t ee, size_t ntests, unsigned char *seed, size_t seedlen, + BD_RANDFUNC randFunc) +{ + BIGD g, p1, q1, phi; + size_t np, nq; + unsigned char *myseed = NULL; + clock_t start, finish; + double duration, tmake; + int res; + + /* Initialise */ + g = bdNew(); + p1 = bdNew(); + q1 = bdNew(); + phi = bdNew(); + + printf("Generating a %d-bit RSA key...\n", nbits); + + /* Set e as a BigDigit from short value ee */ + bdSetShort(e, ee); + bdPrintHex("e=", e, "\n"); + + /* We add an extra byte to the user-supplied seed */ + myseed = malloc(seedlen + 1); + if (!myseed) return -1; + memcpy(myseed, seed, seedlen); + /* Make sure seeds are slightly different for p and q */ + myseed[seedlen] = 0x01; + + /* Do (p, q) in two halves, approx equal */ + nq = nbits / 2 ; + np = nbits - nq; + + /* Compute two primes of required length with p mod e > 1 and *second* highest bit set */ + start = clock(); + do { + bdGeneratePrime(p, np, ntests, myseed, seedlen+1, randFunc); + bdPrintHex("Try p=", p, "\n"); + } while ((bdShortMod(g, p, ee) == 1) || bdGetBit(p, np-2) == 0); + finish = clock(); + duration = (double)(finish - start) / CLOCKS_PER_SEC; + tmake = duration; + printf("p is %d bits, bit(%d) is %d\n", bdBitLength(p), np-2, bdGetBit(p,np-2)); + + myseed[seedlen] = 0xff; + start = clock(); + do { + bdGeneratePrime(q, nq, ntests, myseed, seedlen+1, randFunc); + bdPrintHex("Try q=", q, "\n"); + } while ((bdShortMod(g, q, ee) == 1) || bdGetBit(q, nq-2) == 0); + finish = clock(); + duration = (double)(finish - start) / CLOCKS_PER_SEC; + tmake += duration; + printf("q is %d bits, bit(%d) is %d\n", bdBitLength(q), nq-2, bdGetBit(q,nq-2)); + printf("Prime generation took %.3f secs\n", duration); + + /* Compute n = pq */ + bdMultiply(n, p, q); + bdPrintHex("n=\n", n, "\n"); + printf("n is %d bits\n", bdBitLength(n)); + assert(bdBitLength(n) == nbits); + + /* Check that p != q (if so, RNG is faulty!) */ + assert(!bdIsEqual(p, q)); + + /* If q > p swap p and q so p > q */ + if (bdCompare(p, q) < 1) + { + printf("Swopping p and q so p > q...\n"); + bdSetEqual(g, p); + bdSetEqual(p, q); + bdSetEqual(q, g); + } + bdPrintHex("p=", p, "\n"); + bdPrintHex("q=", q, "\n"); + + /* Calc p-1 and q-1 */ + bdSetEqual(p1, p); + bdDecrement(p1); + bdPrintHex("p-1=\n", p1, "\n"); + bdSetEqual(q1, q); + bdDecrement(q1); + bdPrintHex("q-1=\n", q1, "\n"); + + /* Compute phi = (p-1)(q-1) */ + bdMultiply(phi, p1, q1); + bdPrintHex("phi=\n", phi, "\n"); + + /* Check gcd(phi, e) == 1 */ + bdGcd(g, phi, e); + bdPrintHex("gcd(phi,e)=", g, "\n"); + assert(bdShortCmp(g, 1) == 0); + + /* Compute inverse of e modulo phi: d = 1/e mod (p-1)(q-1) */ + res = bdModInv(d, e, phi); + assert(res == 0); + bdPrintHex("d=\n", d, "\n"); + + /* Check ed = 1 mod phi */ + bdModMult(g, e, d, phi); + bdPrintHex("ed mod phi=", g, "\n"); + assert(bdShortCmp(g, 1) == 0); + + /* Calculate CRT key values */ + printf("CRT values:\n"); + bdModInv(dP, e, p1); + bdModInv(dQ, e, q1); + bdModInv(qInv, q, p); + bdPrintHex("dP=", dP, "\n"); + bdPrintHex("dQ=", dQ, "\n"); + bdPrintHex("qInv=", qInv, "\n"); + + printf("n is %d bits\n", bdBitLength(n)); + + /* Clean up */ + if (myseed) free(myseed); + bdFree(&g); + bdFree(&p1); + bdFree(&q1); + bdFree(&phi); + + return 0; +} + +#define KEYSIZE 1024 + +static int debug = 0; + +int main(int argc, char *argv[]) +{ + size_t nbits = KEYSIZE; /* NB a multiple of 8 here */ + int klen, mlen; + int npad, i; + unsigned char rb; + unsigned char block[(KEYSIZE+7)/8]; + unsigned ee = 0x3; + size_t ntests = 50; + unsigned char *seed = NULL; + size_t seedlen = 0; + char msgstr[sizeof(block)]; + int nchars; + unsigned char *pmsg = "abc"; /* Default message */ + + BIGD n, e, d, p, q, dP, dQ, qInv; + BIGD m, c, s, hq, h, m1, m2; + int res; + clock_t start, finish; + double tinv, tcrt; + +/* MSVC memory leak checking stuff */ +#if _MSC_VER >= 1100 + _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); + _CrtSetReportMode( _CRT_WARN, _CRTDBG_MODE_FILE ); + _CrtSetReportFile( _CRT_WARN, _CRTDBG_FILE_STDOUT ); + _CrtSetReportMode( _CRT_ERROR, _CRTDBG_MODE_FILE ); + _CrtSetReportFile( _CRT_ERROR, _CRTDBG_FILE_STDOUT ); + _CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE ); + _CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDOUT ); +#endif + + if (argc > 1) + { /* Use message supplied in command line */ + pmsg = (unsigned char*)argv[1]; + } + + printf("Test BIGDIGITS with a new %d-bit RSA key and given message data.\n", nbits); + + /* Initialise */ + p = bdNew(); + q = bdNew(); + n = bdNew(); + e = bdNew(); + d = bdNew(); + dP= bdNew(); + dQ= bdNew(); + qInv= bdNew(); + m = bdNew(); + c = bdNew(); + s = bdNew(); + m1 = bdNew(); + m2 = bdNew(); + h = bdNew(); + hq = bdNew(); + + /* Create RSA key pair (n, e),(d, p, q, dP, dQ, qInv) */ + /* NB you should use a proper cryptographically-secure RNG */ + res = generateRSAKey(n, e, d, p, q, dP, dQ, qInv, nbits, ee, ntests, seed, seedlen, bdRandomOctets); + + if (res != 0) + { + printf("Failed to generate RSA key!\n"); + goto clean_up; + } + + /* Create a PKCS#1 v1.5 EME message block in octet format */ + /* + |<-----------------(klen bytes)--------------->| + +--+--+-------+--+-----------------------------+ + |00|02|PADDING|00| DATA TO ENCRYPT | + +--+--+-------+--+-----------------------------+ + The padding is made up of _at least_ eight non-zero random bytes. + */ + + /* How big is the key in octets (8-bit bytes)? */ + klen = (nbits + 7) / 8; + + /* CAUTION: make sure the block is at least klen bytes long */ + memset(block, 0, klen); + mlen = strlen(pmsg); + npad = klen - mlen - 3; + if (npad < 8) /* Note npad is a signed int, not a size_t */ + { + printf("Message is too long\n"); + exit(1); + } + /* Display */ + printf("Message='%s' ", pmsg); + pr_bytesmsg("0x", pmsg, strlen((char*)pmsg)); + + /* Create encryption block */ + block[0] = 0x00; + block[1] = 0x02; + /* Generate npad non-zero padding bytes - rand() is OK */ + srand((unsigned)time(NULL)); + for (i = 0; i < npad; i++) + { + while ((rb = (rand() & 0xFF)) == 0) + ;/* loop until non-zero*/ + block[i+2] = rb; + } + block[npad+2] = 0x00; + memcpy(&block[npad+3], pmsg, mlen); + + /* Convert to BIGD format */ + bdConvFromOctets(m, block, klen); + + + bdPrintHex("m=\n", m, "\n"); + + /* Encrypt c = m^e mod n */ + bdModExp(c, m, e, n); + bdPrintHex("c=\n", c, "\n"); + + /* Check decrypt m1 = c^d mod n */ + start = clock(); + bdModExp(m1, c, d, n); + finish = clock(); + tinv = (double)(finish - start) / CLOCKS_PER_SEC; + bdPrintHex("m'=\n", m1, "\n"); + res = bdCompare(m1, m); + printf("Decryption %s\n", (res == 0 ? "OK" : "FAILED!")); + assert(res == 0); + printf("Decrypt by inversion took %.3f secs\n", tinv); + + /* Extract the message bytes from the decrypted block */ + memset(block, 0, klen); + bdConvToOctets(m, block, klen); + assert(block[0] == 0x00); + assert(block[1] == 0x02); + for (i = 2; i < klen; i++) + { /* Look for zero separating byte */ + if (block[i] == 0x00) + break; + } + if (i >= klen) + printf("ERROR: failed to find message in decrypted block\n"); + else + { + nchars = klen - i - 1; + memcpy(msgstr, &block[i+1], nchars); + msgstr[nchars] = '\0'; + printf("Decrypted message is '%s'\n", msgstr); + } + + /* Sign s = m^d mod n (NB m is not a valid PKCS-v1_5 signature block) */ + bdModExp(s, m, d, n); + bdPrintHex("s=\n", s, "\n"); + + /* Continue as original t_bdRSA ... */ + + /* Check verify m1 = s^e mod n */ + bdModExp(m1, s, e, n); + bdPrintHex("m'=\n", m1, "\n"); + res = bdCompare(m1, m); + printf("Verification %s\n", (res == 0 ? "OK" : "FAILED!")); + assert(res == 0); + + /* Decrypt using CRT method - Ref: PKCS #1 */ + bdPrintHex("m=", m, "\n"); + bdPrintHex("c=", c, "\n"); + bdPrintHex("p=", p, "\n"); + bdPrintHex("q=", q, "\n"); + start = clock(); + /* Let m_1 = c^dP mod p. */ + bdModExp(m1, c, dP, p); + if(debug)bdPrintHex("m_1=c^dP mod p=", m1, "\n"); + /* Let m_2 = c^dQ mod q. */ + bdModExp(m2, c, dQ, q); + if(debug)bdPrintHex("m_2=c^dQ mod q=", m2, "\n"); + if (bdCompare(m1, m2) < 0) + bdAdd(m1, m1, p); + bdSubtract(m1, m1, m2); + if(debug)bdPrintHex("m_1 - m_2=", m1, "\n"); + /* Let h = qInv ( m_1 - m_2 ) mod p. */ + bdModMult(h, qInv, m1, p); + if(debug)bdPrintHex("h=qInv(m1-m2) mod p=", h, "\n"); + bdMultiply(hq, h, q); + if(debug)bdPrintHex("hq=", hq, "\n"); + /* Let m = m_2 + hq. */ + bdAdd(m1, m2, hq); + finish = clock(); + tcrt = (double)(finish - start) / CLOCKS_PER_SEC; + if(debug)bdPrintHex("m'=m_2 + hq=", m1, "\n"); + bdPrintHex("(CRT)m'=\n", m1, "\n"); + res = bdCompare(m1, m); + printf("CRT Decryption %s\n", (res == 0 ? "OK" : "FAILED!")); + assert(res == 0); + printf("Decrypt by CRT took %.3f secs\n", tcrt); + printf("c.f. Decrypt by inversion %.3f secs (factor = %.1f)\n", + tinv, (tcrt ? tinv / tcrt : 0)); + printf("n is %d bits\n", bdBitLength(n)); + + /* Clean up */ +clean_up: + bdFree(&n); + bdFree(&e); + bdFree(&d); + bdFree(&p); + bdFree(&q); + bdFree(&dP); + bdFree(&dQ); + bdFree(&qInv); + bdFree(&m); + bdFree(&c); + bdFree(&s); + bdFree(&m1); + bdFree(&m2); + bdFree(&h); + bdFree(&hq); + + /* Show the current version number */ + printf("Version=%d\n", bdVersion()); + + printf("OK, successfully completed tests.\n"); + + return 0; +} diff --git a/fsbl/lib/BigDigits/t_bdRSA_blinded.c b/fsbl/lib/BigDigits/t_bdRSA_blinded.c new file mode 100644 index 000000000..963ef7a70 --- /dev/null +++ b/fsbl/lib/BigDigits/t_bdRSA_blinded.c @@ -0,0 +1,245 @@ +/* $Id: t_bdRSA_blinded.c $ */ + +/* Carry out RSA calculations using constant-time exponentiation and blinding */ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-16 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2016-03-31 09:51:00 $ + * $Revision: 2.6.1 $ + * $Author: dai $ + */ + + +#if _MSC_VER >= 1100 + /* Detect memory leaks in MSVC++ */ + #define _CRTDBG_MAP_ALLOC + #include + #include +#else + #include +#endif + +#include +#include +#include +#include "bigd.h" +#include "bigdRand.h" + + +int main(void) +{ + size_t nbits; + BIGD N, e, d; + BIGD m, c, r, g, R, S, x, z, y; + int isequal; + size_t i; + clock_t start, finish; + double tinv, tinv_ct, tblind; + int b; + const size_t ntimes = 3; + +/* MSVC memory leak checking stuff */ +#if _MSC_VER >= 1100 + _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); + _CrtSetReportMode( _CRT_WARN, _CRTDBG_MODE_FILE ); + _CrtSetReportFile( _CRT_WARN, _CRTDBG_FILE_STDOUT ); + _CrtSetReportMode( _CRT_ERROR, _CRTDBG_MODE_FILE ); + _CrtSetReportFile( _CRT_ERROR, _CRTDBG_FILE_STDOUT ); + _CrtSetReportMode( _CRT_ASSERT, _CRTDBG_MODE_FILE ); + _CrtSetReportFile( _CRT_ASSERT, _CRTDBG_FILE_STDOUT ); +#endif + + printf("Carry out RSA calculation using constant-time exponentiation and blinding.\n"); + + /* Initialise */ + bdNewVars(&N, &e, &d, &m, &c, &y, &r, &g, &R, &S, &x, &z); + + /* Read in public and private keys as BIGDs */ + /* + Source: Alice's 1024-bit RSA key from [RFC4134]: + Hoffman, P., Ed., "Examples of S/MIME Messages", RFC 4134, July 2005. + */ + + bdConvFromHex(N, "E08973398DD8F5F5E88776397F4EB005BB5383DE0FB7ABDC7DC775290D052E6D12DFA68626D4D26FAA5829FC97ECFA82510F3080BEB1509E4644F12CBBD832CFC6686F07D9B060ACBEEE34096A13F5F7050593DF5EBA3556D961FF197FC981E6F86CEA874070EFAC6D2C749F2DFA553AB9997702A648528C4EF357385774575F"); + bdConvFromHex(e, "010001"); + bdConvFromHex(d, "A403C327477634346CA686B57949014B2E8AD2C862B2C7D748096A8B91F736F275D6E8CD15906027314735644D95CD6763CEB49F56AC2F376E1CEE0EBF282DF439906F34D86E085BD5656AD841F313D72D395EFE33CBFF29E4030B3D05A28FB7F18EA27637B07957D32F2BDE8706227D04665EC91BAF8B1AC3EC9144AB7F21"); + + printf("Public key:\n"); + bdPrintHex("N=", N, "\n"); + bdPrintHex("e=", e, "\n"); + printf("Private key:\n"); + bdPrintHex("d=", d, "\n"); + + nbits = bdBitLength(N); + printf("Key size = %d bits\n", nbits); + + /* Set a random message m < N */ + bdQuickRandBits(m, nbits-8); + bdPrintHex("Random plaintext m =\n", m, "\n"); + + /* Encrypt c = m^e mod N */ + /* NB no need to use constant-time modexp when using public exponent */ + bdModExp(c, m, e, N); + bdPrintHex("Ciphertext c=m^e mod N=\n", c, "\n"); + + printf("\nSIMPLE DECRYPTION USING PRIVATE EXPONENT...\n"); + /* Check decrypt m1 = c^d mod N */ + start = clock(); + /* Use standard non-constant-time modexp with private exponent + => faster but vulnerable to simple power attack (SPA) */ + bdModExp(y, c, d, N); + finish = clock(); + tinv = (double)(finish - start) / CLOCKS_PER_SEC; + bdPrintHex("y=c^d mod N (standard)\n", y, "\n"); + isequal = bdCompare_ct(y, m); + printf("Decryption %s\n", (isequal == 0 ? "OK" : "FAILED!")); + assert(isequal == 0); + printf("Decryption by standard modexp took %.3f secs\n", tinv); + + /* Now decrypt using constant-time modexp */ + start = clock(); + /* Resistant to simple power attack, but not differential power analysis (DPA) */ + bdModExp_ct(y, c, d, N); + finish = clock(); + tinv_ct = (double)(finish - start) / CLOCKS_PER_SEC; + bdPrintHex("y=c^d mod N (constant-time)\n", y, "\n"); + isequal = bdCompare_ct(y, m); + printf("Decryption %s\n", (isequal == 0 ? "OK" : "FAILED!")); + assert(isequal == 0); + printf("Decryption by constant-time modexp took %.3f secs\n", tinv_ct); + printf("Ratio constant-time/standard = %.3f\n", tinv_ct / tinv); + + /* + USE BLINDING TO DEFEAT DPA + Differential power analysis depends on the attacker knowing the base c of the exponentiation. + This can succeed even if constant-time exponentiation is used. + Ref: Jean-Sebastian Coron, "Resistance Against Differential Power Analysis for + Elliptic Curve Cryptosystems", August 1999. + -- This version adapted from Coron's elliptic curve point scalar multiplication + to RSA-style modular exponentiation. + */ + + /* Algorithm: Modular exponentiation with blinding. + Input: RSA ciphertext c, private exponent d, public exponent e, modulus N + Output: RSA plaintext c^d mod N + 1. Select a random integer r < N with gcd(r,N) = 1 + 2. Compute R = r^e mod N and S = r^-1 mod N + 3. Compute x = c.R mod N + 4. Compute z = x^d mod N + 5. Compute y = S.z mod N + 6. Return y + */ + + /* + You could store the values R and S initially and refresh on each execution by + R <-- R^{2(-1)^b} + S <-- S^{2(-1)^b} + where b is a random bit generated at each new execution. + */ + + printf("\nUSING BLINDING...\n"); + start = clock(); + printf("1. Select a random integer r < N with gcd(r,N) = 1 \n"); + do { + bdRandomBits(r, nbits); + bdModulo(r, r, N); + bdGcd(g, r, N); + } while (bdShortCmp(g, 1) != 0); + bdPrintHex("r=", r, "\n"); + bdPrintHex("[CHECK] gcd(r,n)=", g, "\n"); + + printf("2. Compute R = r^e mod N and S = r^-1 mod N \n"); + bdModExp(R, r, e, N); /* NB public exponent, so no need for CT */ + bdModInv(S, r, N); + bdPrintHex("R=r^e mod N=", R, "\n"); + bdPrintHex("S=r^-1 mod N=", S, "\n"); + + printf("3. Compute x = c.R mod N \n"); + bdModMult(x, c, R, N); + bdPrintHex("x = c.R mod N=", x, "\n"); + + printf("4. Compute z = x^d mod N \n"); + bdModExp_ct(z, x, d, N); + bdPrintHex("z = b^d mod N=", z, "\n"); + + printf("5. Compute y = S.z mod N \n"); + bdModMult(y, S, z, N); + bdPrintHex("y = S.z mod N=", y, "\n"); + + finish = clock(); /* Assume effect of printing is negligible (?) */ + tblind = (double)(finish - start) / CLOCKS_PER_SEC; + + printf("6. Return y = c^d mod N \n"); + + isequal = bdCompare_ct(y, m); + printf("Decryption %s\n", (isequal == 0 ? "OK" : "FAILED!")); + assert(isequal == 0); + printf("Decryption using blinding took %.3f secs\n", tblind); + printf("Ratio blinding/standard (with printing) = %.3f\n", tblind / tinv); + + printf("\nREPEAT WITH REFRESHED R AND S...\n"); + tblind = 0; + + for (i = 0; i < ntimes; i++) { + printf("Iteration number %d:\n", i+1); + + /* Generate a random bit */ + b = bdRandDigit() & 0x1; + printf("Random bit b=%d\n", b); + + start = clock(); + /* R <-- R^{2(-1)^b}, S <-- S^{2(-1)^b} */ + bdModMult(R, R, R, N); + bdModMult(S, S, S, N); + if (b) { + bdModInv(R, R, N); + bdModInv(S, S, N); + } + + /* 3. Compute x = c.R mod N */ + bdModMult(x, c, R, N); + + /* 4. Compute z = x^d mod N */ + bdModExp_ct(z, x, d, N); + + /* 5. Compute y = S.z mod N */ + bdModMult(y, S, z, N); + + finish = clock(); + tblind += (double)(finish - start) / CLOCKS_PER_SEC; + + bdPrintHex("R <-- R^{2(-1)^b}=\n", R, "\n"); + bdPrintHex("S <-- S^{2(-1)^b}=\n", S, "\n"); + + /* 6. Return y = c^d mod N */ + bdPrintHex("Output y=\n", y, "\n"); + + isequal = bdCompare_ct(y, m); + printf("Decryption %s\n", (isequal == 0 ? "OK" : "FAILED!")); + assert(isequal == 0); + + printf("\n"); + } + + tblind /= ntimes; + printf("Decryption using blinding took on average %.3f secs over %d repeats\n", tblind, ntimes); + printf("Ratio blinding/standard = %.3f\n", tblind / tinv); + + + /* Clean up */ + bdFreeVars(&N, &e, &d, &m, &c, &y, &r, &g, &R, &S, &x, &z); + + printf("\nOK, SUCCESSFULLY COMPLETED TESTS WITHOUT ERROR.\n"); + + return 0; +} diff --git a/fsbl/lib/BigDigits/t_bdRandomOctets.c b/fsbl/lib/BigDigits/t_bdRandomOctets.c new file mode 100644 index 000000000..3bf37f0e7 --- /dev/null +++ b/fsbl/lib/BigDigits/t_bdRandomOctets.c @@ -0,0 +1,124 @@ +/* $Id: t_bdRandomOctets.c $ */ + +/* Examples using the `bigdRand` functions: + bdRandomOctets() + bdRandomSeeded() + bdRandomNumber() +*/ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-16 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2016-03-31 09:51:00 $ + * $Revision: 2.6.1 $ + * $Author: dai $ + */ + +#include +#include +#include // For sqrt in statistics +#include "bigd.h" +#include "bigdRand.h" + +#define TEST_LEN 24 +#define TEST_N 32 +#define NTESTS (TEST_N * 10) + +static void pr_byteshex(const char *prefix, const unsigned char *bytes, size_t nbytes, const char *suffix) +{ + size_t i; + if (prefix) printf("%s", prefix); + for (i = 0; i < nbytes; i++) + { + printf("%02X", bytes[i]); + } + if (suffix) printf("%s", suffix); +} + +int main(void) +{ + unsigned char bytes[TEST_LEN]; + size_t nbytes; + int ntests, itest, i; + BIGD a, p, N; + int score[TEST_N] = { 0 }; + int t; + BIGD temp; + int themin, themax; + double mean, var, sd; + + ntests = TEST_LEN; + printf("Testing bdRandomOctets...\n"); + for (itest = 0; itest < ntests; itest++) + { + //printf("Test %d...\n", itest+1); + nbytes = TEST_LEN - itest; + bdRandomOctets(bytes, nbytes, NULL, 0); + pr_byteshex("", bytes, nbytes, "\n"); + } + + // Now test bdRandomSeeded calling internal fn bdRandomOctets + printf("Testing bdRandomSeeded with bdRandomOctets()...\n"); + a = bdNew(); + for (i = 0; i < 10; i++) + { + bdRandomSeeded(a, 128, NULL, 0, bdRandomOctets); + bdPrintHex("r=", a, "\n"); + } + + // And generate some primes + printf("Generating primes with bdGeneratePrime() calling bdRandomOctets()...\n"); + p = bdNew(); + for (i = 0; i < 4; i++) + { + bdGeneratePrime(p, 256, 128, NULL, 0, bdRandomOctets); + bdPrintHex("p=", p, "\n"); + } + + // Generate some random numbers in the range [0,N-1] where N = 32 + // (and keep score of count for each value) + temp = bdNew(); + N = bdNew(); + bdSetShort(N, TEST_N); + bdPrintDecimal("Random numbers in the range [0,N-1] computed by bdRandomNumber(N), N=", N, ":\n"); + for (i = 0; i < NTESTS; i++) + { + bdRandomNumber(a, N); + bdPrintDecimal("", a, " "); + /* Convert BIGD into an int */ + t = (int)bdShortMod(temp, a, 0xFFFFFFFF); + assert(0 <= t && t < TEST_N); + score[t] += 1; + } + printf("\n"); + printf("[Statistics] Distribution over %d tests (EV=%.1f):\n", NTESTS, (double)NTESTS / TEST_N); + mean = var = 0.0; + themin = 99999; + themax = 0; + for (i = 0; i < TEST_N; i++) + { + int v = score[i]; + printf("%d ", v); + if (v > themax) themax = v; + if (v < themin) themin = v; + mean += (double)v; + var += v * v; + } + printf("\n"); + mean /= TEST_N; + var = var / TEST_N - mean*mean; + sd = sqrt(var); + printf("mean=%.3f sd=%.3f min=%d (%.2f sd) max=%d (%+.2f sd)\n", + mean, sd, themin, (themin-mean)/sd, themax, (themax-mean)/sd); + + return 0; +} diff --git a/fsbl/lib/BigDigits/t_bdRsaCrack.c b/fsbl/lib/BigDigits/t_bdRsaCrack.c new file mode 100644 index 000000000..9ce07a4ec --- /dev/null +++ b/fsbl/lib/BigDigits/t_bdRsaCrack.c @@ -0,0 +1,156 @@ +/* $Id: t_bdRsaCrack.c $ */ + +/* + This code uses the free BIGDIGITS library version 2.3 available from + http://di-mgt.com.au/bigdigits.html + to show how the Chinese Remainder Theorem and Gauss's Method can be used + to find a message encrypted by the RSA algorithm without having to factor + the modulus. The same message must have been encrypted with public exponent + e = 3 to three different recipients without any random padding. + Ref: http://www.di-mgt.com.au/crt.html#crackingrsa + Copyright (C) 2011 DI Management Services Pty Ltd. All rights reserved. +*/ + +/* + Last updated: + $Date: 2011-11-11 11:11:11 $ + $Author: dai $ +*/ + +#include +#include "bigd.h" + +int debug = 0; + +int main(void) +{ + BIGD m, e, n1, n2, n3, c1, c2, c3, N, N1, N2, N3, d1, d2, d3, s, t, x; + m = bdNew(); + e = bdNew(); + n1 = bdNew(); + n2 = bdNew(); + n3 = bdNew(); + c1 = bdNew(); + c2 = bdNew(); + c3 = bdNew(); + N = bdNew(); + N1 = bdNew(); + N2 = bdNew(); + N3 = bdNew(); + d1 = bdNew(); + d2 = bdNew(); + d3 = bdNew(); + s = bdNew(); + t = bdNew(); + x = bdNew(); + + /* Read in modulus values for three 512-bit public keys */ + bdConvFromHex(n1, "A9C737DD808D02866FBF1ACF05DE2EB124137007A4965EC4DCBFA6D02F97E0123A8FD3691E414A1382F38AB39B09975705ECEAF1131A283C937B309F1C1417F9"); + bdConvFromHex(n2, "B7E9E114A08ADFF12F762D7F0E1F16202E1EB7A7F2852369BDF44865783D19111E6D61B31DE987BCB9775099E220A798D4F99CD3E5F04C64F87A35C0268A83E9"); + bdConvFromHex(n3, "C2BDBD4E36BA20D37D5D1E968F09F2FC7B41A97F3052274E4892D50D5FB337C923048AED7D393135EE55711E5C74975867F13D3845BAC9588B4BE170D08BAB57"); + //bdSetShort(n1, 87); + //bdSetShort(n2, 115); + //bdSetShort(n3, 187); + + printf("Three public modulus values, 512 bits each...\n"); + bdPrintHex("n1=", n1, "\n"); + bdPrintHex("n2=", n2, "\n"); + bdPrintHex("n3=", n3, "\n"); + + /* The three public keys all have public exponent e = 3 */ + bdSetShort(e, 3); + bdPrintHex("e=", e, "\n"); + + /* Set the common message m with no random padding (but large enough so m^3 > n_i) */ + bdConvFromHex(m, "02ffffffffffffffffffffffffffffffffffffffffff0000deadbeefcafe"); + //bdSetShort(m, 10); + printf("Message to be encrypted...\n"); + bdPrintHex("m=", m, "\n"); + + /* Create three ciphertexts, c_i = m^e mod n_i */ + bdModExp(c1, m, e, n1); + bdModExp(c2, m, e, n2); + bdModExp(c3, m, e, n3); + + printf("Three ciphertexts...\n"); + bdPrintHex("c1=", c1, "\n"); + bdPrintHex("c2=", c2, "\n"); + bdPrintHex("c3=", c3, "\n"); + + /* An eavedropper has the public values n1, n2, n3, c1, c2 and c3 */ + + /* Check that n1, n2, n3 are coprime in pairs */ + bdGcd(t, n1, n2); + bdPrintHex("gcd(n1,n2)=", t, "\n"); + bdGcd(t, n2, n3); + bdPrintHex("gcd(n2,n3)=", t, "\n"); + bdGcd(t, n3, n1); + bdPrintHex("gcd(n3,n1)=", t, "\n"); + + /* Compute N = n1 * n2 * n3 */ + bdMultiply(t, n1, n2); + bdMultiply(N, t, n3); + if (debug) bdPrintDecimal("N=", N, "\n"); + + /* Compute N_i = N/n_i for i = 1,2,3 */ + bdMultiply(N1, n2, n3); + bdMultiply(N2, n1, n3); + bdMultiply(N3, n1, n2); + if (debug) bdPrintDecimal("N1=", N1, "\n"); + if (debug) bdPrintDecimal("N2=", N2, "\n"); + if (debug) bdPrintDecimal("N3=", N3, "\n"); + + /* Compute d_i = N_i^{-1} mod n_i for i = 1,2,3 */ + bdModInv(d1, N1, n1); + bdModInv(d2, N2, n2); + bdModInv(d3, N3, n3); + if (debug) bdPrintDecimal("d1=", d1, "\n"); + if (debug) bdPrintDecimal("d2=", d2, "\n"); + if (debug) bdPrintDecimal("d3=", d3, "\n"); + + /* Compute x = c_1 N_1 d_1 + c_2 N_2 d_2 + c_3 N_3 d_3 (mod N) */ + bdModMult(s, c1, N1, N); + bdModMult(x, s, d1, N); + bdModMult(s, c2, N2, N); + bdModMult(t, s, d2, N); + bdAdd_s(x, x, t); + bdModMult(s, c3, N3, N); + bdModMult(t, s, d3, N); + bdAdd_s(s, x, t); + bdModulo(x, s, N); + printf("Computed value of x = c_1 N_1 d_1 + c_2 N_2 d_2 + c_3 N_3 d_3 (mod N)...\n"); + bdPrintHex("x=", x, "\n"); + + /* Compute the integer cube root of x */ + bdCubeRoot(t, x); + bdPrintHex("m'=cuberoot(x)=", t, "\n"); + + /* Do we have the correct answer? */ + if (bdCompare(t, m) == 0) + printf("HOORAY! We have found the correct answer, m' = m.\n"); + else + printf("OH BU**AR! We didn't find the correct answer.\n"); + + +//clean_up: + bdFree(&m); + bdFree(&e); + bdFree(&n1); + bdFree(&n2); + bdFree(&n3); + bdFree(&c1); + bdFree(&c2); + bdFree(&c3); + bdFree(&N); + bdFree(&N1); + bdFree(&N2); + bdFree(&N3); + bdFree(&d1); + bdFree(&d2); + bdFree(&d3); + bdFree(&s); + bdFree(&t); + bdFree(&x); + + return 0; +} diff --git a/fsbl/lib/BigDigits/t_bdRsaFactorN.c b/fsbl/lib/BigDigits/t_bdRsaFactorN.c new file mode 100644 index 000000000..0d3a364c3 --- /dev/null +++ b/fsbl/lib/BigDigits/t_bdRsaFactorN.c @@ -0,0 +1,226 @@ +/* $Id: t_bdRsaFactorN.c $ */ + +/* + This code uses the free BIGDIGITS library version 2.3 available from + http://di-mgt.com.au/bigdigits.html + to show how to factor the RSA modulus n given the secret exponent d + Copyright (C) 2012 DI Management Services Pty Ltd. All rights reserved. +*/ + +/* + Last updated: + $Date: 2012-12-24 16:13 $ + $Revision: 1.0.1 $ + $Author: dai $ +*/ + +#include +#include "bigd.h" + +int debug = 1; +#define DBDPRINT(pre, x, post) if(debug)bdPrintDecimal((pre),(x),(post)) + +const int primes[] = { + 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, + 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, + 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, + 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, + 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, + 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, +}; +#define NPRIMES (sizeof(primes)/sizeof(primes[0])) + +int find_factors_of_n(BIGD p, BIGD q, BIGD n, BIGD e, BIGD d) +{ + BIGD k, t, g, x, y, r; + int i, isdone; + k = bdNew(); + t = bdNew(); + g = bdNew(); + x = bdNew(); + y = bdNew(); + r = bdNew(); + + bdSetZero(p); + bdSetZero(q); + + /* 1. [Initialize] Set k <-- de - 1 */ + bdMultiply(k, d, e); + bdDecrement(k); + DBDPRINT("k=de-1=", k, "\n"); + + /* 2. [Try a random g] Choose g at random from {2, ..., N-1} */ + /* (we cheat a bit here and just try the first primes in order) */ + for (isdone = 0, i = 0; !isdone && i < NPRIMES; i++) + { + bdSetShort(g, primes[i]); + DBDPRINT("Trying g=", g, "\n"); + /* Set t <-- k */ + bdSetEqual(t, k); + /* 3. [Next t] If t is divisible by 2 ... */ + while (bdIsEven(t)) + { + /* Set t <-- t / 2 */ + bdShiftRight(t, t, 1); + DBDPRINT("t=", t, "\n"); + /* Set x = g^t mod N */ + bdModExp(x, g, t, n); + DBDPRINT("x=g^t mod N=", x, "\n"); + /* 4. [Finished?] If x > 1 and y = gcd(x-1, N) + then set p <-- y and q <-- N/y, output (p,q) and stop. + */ + if (bdShortCmp(x, 1) > 0) + { + bdDecrement(x); + bdGcd(y, x, n); + DBDPRINT("y=gcd(x-1,N)=", y, "\n"); + if (bdShortCmp(y, 1) > 0) + { /* We have it */ + bdSetEqual(p, y); + bdDivide(q, r, n, y); + isdone = 1; + break; + } + } + } /* 4a. ... otherwise go to step 3. */ + } /* 3a. ... otherwise go to step 2. */ + /* Finally, to be consistent with convention, we make sure p > q */ + if (isdone && bdCompare(p, q) < 0) + { + bdSetEqual(r, p); + bdSetEqual(p, q); + bdSetEqual(q, r); + } + + bdFree(&k); + bdFree(&t); + bdFree(&g); + bdFree(&x); + bdFree(&y); + bdFree(&r); + + return isdone; +} + +void test_simple(void) +{ + BIGD n, e, d, p, q; + n = bdNew(); + e = bdNew(); + d = bdNew(); + p = bdNew(); + q = bdNew(); + + bdSetShort(n, 25777); + bdSetShort(e, 3); + bdSetShort(d, 16971); + + printf("Input:\n"); + bdPrintDecimal("n=", n, "\n"); + bdPrintDecimal("e=", e, "\n"); + bdPrintDecimal("d=", d, "\n"); + + find_factors_of_n(p, q, n, e, d); + + printf("Output:\n"); + bdPrintDecimal("p=", p, "\n"); + bdPrintDecimal("q=", q, "\n"); + +//clean_up: + bdFree(&n); + bdFree(&e); + bdFree(&d); + bdFree(&p); + bdFree(&q); +} + +void test_508(void) +{ + BIGD n, e, d, p, q; + n = bdNew(); + e = bdNew(); + d = bdNew(); + p = bdNew(); + q = bdNew(); + /* + Using 508-bit RSA key from + "Some Examples of the PKCS Standards" + An RSA Laboratories Technical Note, + Burton S. Kaliski Jr., November 1, 1993 + + p = 33 d4 84 45 c8 59 e5 23 40 de 70 4b cd da 06 5f bb 40 58 + d7 40 bd 1d 67 d2 9e 9c 14 6c 11 cf 61 + q = 33 5e 84 08 86 6b 0f d3 8d c7 00 2d 3f 97 2c 67 38 9a 65 + d5 d8 30 65 66 d5 c4 f2 a5 aa 52 62 8b + */ + + bdConvFromHex(n, "0a66791dc6988168de7ab77419bb7fb0c001c62710270075142942e19a8d8c51d053b3e3782a1de5dc5af4ebe99468170114a1dfe67cdc9a9af55d655620bbab"); + bdConvFromHex(e, "010001"); + bdConvFromHex(d, "0123c5b61ba36edb1d3679904199a89ea80c09b9122e1400c09adcf7784676d01d23356a7d44d6bd8bd50e94bfc723fa87d8862b75177691c11d757692df8881"); + + printf("Input:\n"); + bdPrintHex("n=", n, "\n"); + bdPrintHex("e=", e, "\n"); + bdPrintHex("d=", d, "\n"); + + find_factors_of_n(p, q, n, e, d); + + printf("Output:\n"); + bdPrintHex("p=", p, "\n"); + bdPrintHex("q=", q, "\n"); + +//clean_up: + bdFree(&n); + bdFree(&e); + bdFree(&d); + bdFree(&p); + bdFree(&q); +} + +void test_alice1024(void) +{ + BIGD n, e, d, p, q; + n = bdNew(); + e = bdNew(); + d = bdNew(); + p = bdNew(); + q = bdNew(); + /* + Using Alice's 1024-bit RSA key from [RFC4134]: + Hoffman, P., Ed., "Examples of S/MIME Messages", RFC 4134, July 2005. + */ + + bdConvFromHex(n, "E08973398DD8F5F5E88776397F4EB005BB5383DE0FB7ABDC7DC775290D052E6D12DFA68626D4D26FAA5829FC97ECFA82510F3080BEB1509E4644F12CBBD832CFC6686F07D9B060ACBEEE34096A13F5F7050593DF5EBA3556D961FF197FC981E6F86CEA874070EFAC6D2C749F2DFA553AB9997702A648528C4EF357385774575F"); + bdConvFromHex(e, "010001"); + bdConvFromHex(d, "A403C327477634346CA686B57949014B2E8AD2C862B2C7D748096A8B91F736F275D6E8CD15906027314735644D95CD6763CEB49F56AC2F376E1CEE0EBF282DF439906F34D86E085BD5656AD841F313D72D395EFE33CBFF29E4030B3D05A28FB7F18EA27637B07957D32F2BDE8706227D04665EC91BAF8B1AC3EC9144AB7F21"); + // p = F6D6E022214C5F0A70FF27FCE5B3506A9DE50FB58596C640FAA80AB49B9B0C55C2011DF937828A14C8F2930E92CDA56621B93CD206BFB45531C9DCADCA982DD1 + // q = E8DEB0112509D2025101DE8AE89850F5777761A445936B085596735DF4C85B129322738B7FD3707FF5A4AABB74FD3C226ADA38912A865B6C14E8AE4C9EFA8E2F + printf("Input:\n"); + bdPrintHex("n=", n, "\n"); + bdPrintHex("e=", e, "\n"); + bdPrintHex("d=", d, "\n"); + + find_factors_of_n(p, q, n, e, d); + + printf("Output:\n"); + bdPrintHex("p=", p, "\n"); + bdPrintHex("q=", q, "\n"); + +//clean_up: + bdFree(&n); + bdFree(&e); + bdFree(&d); + bdFree(&p); + bdFree(&q); +} + + + +int main(void) +{ + test_simple(); + test_508(); + //test_alice1024(); + + return 0; +} diff --git a/fsbl/lib/BigDigits/t_bdSimple.c b/fsbl/lib/BigDigits/t_bdSimple.c new file mode 100644 index 000000000..ceefe698b --- /dev/null +++ b/fsbl/lib/BigDigits/t_bdSimple.c @@ -0,0 +1,58 @@ +/* $Id: t_bdSimple.c $ */ + +/* A very simple test of some "bd" functions */ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-15 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2015-10-22 10:23:00 $ + * $Revision: 2.5.0 $ + * $Author: dai $ + */ + + +#include +#include "bigd.h" + +int main(void) +{ + BIGD u, v, w; + + /* Display the BigDigits version number */ + printf("BigDigits version=%d\n", bdVersion()); + + /* Create new BIGD objects */ + u = bdNew(); + v = bdNew(); + w = bdNew(); + + /* Compute 2 * 0xdeadbeefface */ + bdSetShort(u, 2); + bdConvFromHex(v, "deadbeefface"); + bdMultiply(w, u, v); + + /* Display the result */ + bdPrintHex("", u, " * "); + bdPrintHex("0x", v, " = "); + bdPrintHex("0x", w, "\n"); + /* and again in decimal format */ + bdPrintDecimal("", u, " * "); + bdPrintDecimal("", v, " = "); + bdPrintDecimal("", w, "\n"); + + /* Free all objects we made */ + bdFree(&u); + bdFree(&v); + bdFree(&w); + + return 0; +} diff --git a/fsbl/lib/BigDigits/t_bdTest.c b/fsbl/lib/BigDigits/t_bdTest.c new file mode 100644 index 000000000..05891fefb --- /dev/null +++ b/fsbl/lib/BigDigits/t_bdTest.c @@ -0,0 +1,1057 @@ +/* $Id: t_bdTest.c $ */ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-16 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2016-03-31 09:51:00 $ + * $Revision: 2.6.1 $ + * $Author: dai $ + */ + +/* Various tests of "bd" functions, not exhaustive */ + +#if _MSC_VER >= 1100 + /* Detect memory leaks in MSVC++ */ + #define _CRTDBG_MAP_ALLOC + #include + #include +#else + #include +#endif + +#ifdef NDEBUG +#undef NDEBUG +#endif +#include +#include +#include +#include +#include "bigd.h" +#include "bigdRand.h" + +static void pr_bytesmsg(const char *msg, unsigned char *bytes, size_t nbytes) +/* Display a message followed by the hex values of a byte array */ +{ + size_t i; + printf("%s", msg); + for (i = 0; i < nbytes; i++) + printf("%02x", bytes[i]); + printf("\n"); +} + +int my_rand(unsigned char *bytes, size_t nbytes, const unsigned char *seed, size_t seedlen) +/* Our own (very insecure) random generator call-back function using good old rand() + This demonstrates the required format for BD_RANDFUNC + -- replace this in practice with your own cryptographically-secure function. +*/ +{ + unsigned int myseed; + size_t i; + int offset; + + /* Use time - then blend in seed, if any */ + myseed = (unsigned)time(NULL); + if (seed) + { + for (offset = 0, i = 0; i < seedlen; i++, offset = (offset + 1) % sizeof(unsigned)) + myseed ^= ((unsigned int)seed[i] << (offset * 8)); + } + + srand(myseed); + while (nbytes--) + { + *bytes++ = rand() & 0xFF; + } + + return 0; +} + +int fermat_test(BIGD n) +{ +/* Carries out a quick Fermat primality test on n > 4. + Returns 1 if n is prime and 0 if composite or -1 if n < 5. + This is not foolproof but we use it as a + check on our main bdIsPrime function. + It will return a false positive for Fermat Liars, which + are very rare. +*/ + BIGD a, e, r; + int isprime = 1; + + /* For any integer a, 1<=a<=n-1, if a^(n-1) mod n != 1 + then n is composite. */ + + if (bdShortCmp(n, 5) < 0) return -1; + + a = bdNew(); + e = bdNew(); + r = bdNew(); + /* e = n -1 */ + bdSetEqual(e, n); + bdDecrement(e); + + /* Set a = 2 and compute a^(n-1) mod n */ + bdSetShort(a, 2); + bdModExp(r, a, e, n); + if (bdShortCmp(r, 1) != 0) + isprime = 0; + + /* a = 3 */ + bdSetShort(a, 3); + bdModExp(r, a, e, n); + if (bdShortCmp(r, 1) != 0) + isprime = 0; + + /* a = 5 */ + bdSetShort(a, 5); + bdModExp(r, a, e, n); + if (bdShortCmp(r, 1) != 0) + isprime = 0; + + bdFree(&a); + bdFree(&e); + bdFree(&r); + + return isprime; +} + +/** Compute w = u - v using cutoff subtraction so `w >= 0` always. + * @return 1 if subtraction underflowed or 0 for normal result + */ +int cutoff_subtraction(BIGD w, BIGD u, BIGD v) +{ + int carry = 0; + if (bdCompare(u, v) < 0) { + bdSetZero(w); + carry = 1; + } + else { + bdSubtract(w, u, v); + } + return carry; +} + +int main(void) +{ + BIGD u, v, w, q, r, p, b, a; + BIGD n, e, m, c, z, mz, cz, t; + BIGD x, y; + bdigit_t overflow, d; + int cmp, res; + unsigned char ff[64], bytes[16]; + int i, mc, jac; + size_t nbytes, nbits; + char s[128]; + +/* MSVC memory leak checking stuff */ +#if _MSC_VER >= 1100 + _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF); + _CrtSetReportMode( _CRT_WARN, _CRTDBG_MODE_FILE ); + _CrtSetReportFile( _CRT_WARN, _CRTDBG_FILE_STDOUT ); + _CrtSetReportMode( _CRT_ERROR, _CRTDBG_MODE_FILE ); + _CrtSetReportFile( _CRT_ERROR, _CRTDBG_FILE_STDOUT ); +#endif + + printf("Tests for BIGD functions\n"); + + /* Initialize - new way in [v2.6]*/ + bdNewVars(&u, &v, &w, &p, &q, &r, &x, &y); + //u = bdNew(); + //v = bdNew(); + //w = bdNew(); + //p = bdNew(); + //q = bdNew(); + //r = bdNew(); + //x = bdNew(); + //y = bdNew(); + + printf("\nSIMPLE ARITHMETIC OPERATIONS...\n"); + bdPrintDecimal("At start w=", w, "\n"); + assert(bdIsZero(w)); + + /* Addition */ + /* 1 + 1 = 2 */ + bdSetShort(u, 1); + bdSetShort(v, 1); + bdAdd(w, u, v); + bdPrintDecimal("1+1=", w, "\n"); + assert(bdShortCmp(w, 2) == 0); + + /* Add with digit overflow */ + bdSetShort(u, 0xffffffff); + bdSetShort(v, 0xffffffff); + bdAdd(w, u, v); + bdPrintHex("ffffffff+ffffffff=", w, "\n"); + /* ffffffff+ffffffff=00000001 fffffffe */ + assert(bdSizeof(w) == 2); + + /* Bigger random digits */ + bdSetRandTest(u, 10); + bdSetRandTest(v, 10); + bdAdd(w, u, v); + bdPrintHex("u=\n", u, "\n"); + bdPrintHex("v=\n", v, "\n"); + bdPrintHex("w=u+v=\n", w, "\n"); + + /* Subtract */ + bdSubtract(r, w, v); + bdPrintHex("w-v=\n", r, "\n"); + assert(bdCompare(r, u) == 0); + + /* Multiplication */ + /* 2 * 3 = 6 */ + bdSetShort(u, 2); + bdSetShort(v, 3); + bdMultiply(w, u, v); + bdPrintDecimal("2 * 3=", w, "\n"); + assert(bdShortCmp(w, 6) == 0); + + bdSetShort(u, 0xffffffff); + bdSetShort(v, 0xffffffff); + bdMultiply(w, u, v); + bdPrintHex("ffffffff*ffffffff=", w, "\n"); + /* ffffffff*ffffffff=fffffffe 00000001 */ + assert(bdGetBit(w, 0) == 1); + + /* Use ShortMult */ + bdShortMult(p, u, 0xffffffff); + bdPrintHex("(Short)ffffffff*ffffffff=", p, "\n"); + assert(bdCompare(p, w) == 0); + + /* Use larger random u, v */ + bdSetRandTest(u, 10); + bdSetRandTest(v, 20); + bdPrintHex("u=\n", u, "\n"); + bdPrintHex("v=\n", v, "\n"); + + /* Use ShortMult by one: w = v * 1 */ + bdShortMult(w, v, 1); + bdPrintHex("(Short)v*1=\n", w, "\n"); + assert(bdCompare(w, v) == 0); + + /* Use ShortMult by two */ + bdShortMult(w, u, 2); + bdPrintHex("(Short)u*2=\n", w, "\n"); + assert(bdIsEven(w)); + + /* Big multiplication */ + bdMultiply(w, u, v); + bdPrintHex("w=u*v=\n", w, "\n"); + + /* Divide expecting q = w/v == u and r = w%v == 0 */ + bdDivide(q, r, w, v); + bdPrintHex("w/v=\n", q, "\n"); + bdPrintHex("w%v=", r, "\n"); + assert(bdIsEqual(q, u)); + assert(bdShortCmp(r, 0) == 0); + + /* Modulo */ + bdIncrement(w); + bdModulo(r, w, v); + bdPrintHex("w+1 mod v=", r, "\n"); + assert(bdShortCmp(r, 1) == 0); + + bdDecrement(w); + bdModulo(r, w, u); + bdPrintHex("w+1-1 mod u=", r, "\n"); + assert(bdShortCmp(r, 0) == 0); + + /* Use a short divisor q=w/2 */ + bdShortDiv(q, r, w, 2); + bdPrintHex("(ShortDiv)w/2=\n", q, "\n"); + bdPrintHex("(ShortDiv)w%2=", r, "\n"); + + printf("w is %s\n", bdIsOdd(w) ? "ODD" : "EVEN"); + bdShortMod(r, w, 2); + bdPrintHex("w mod 2=", r, "\n"); + bdIncrement(w); + printf("w+1 is %s\n", bdIsOdd(w) ? "ODD" : "EVEN"); + bdShortMod(r, w, 2); + bdPrintHex("++w mod 2=", r, "\n"); + bdDecrement(w); + + /* Check with short mult u = q*2 */ + bdShortMult(u, q, 2); + bdPrintHex("(ShortMult) (w/2) * 2=\n", u, "\n"); + + printf("\nSQUARE AND SQUARE ROOT...\n"); + /* Square a random number w = u^2 */ + bdSetRandTest(u, 10); + bdPrintHex("random u=\n", u, "\n"); + bdSquare(w, u); + bdPrintHex("(Square) u^2=", w, "\n"); + /* check against product p = u * u */ + bdMultiply(p, u, u); + bdPrintHex("u*u=", p, "\n"); + assert(bdIsEqual(p, w)); + /* Compute integer square root [new in v2.1] */ + bdSqrt(p, w); + bdPrintHex("sqrt(w)=", p, "\n"); + assert(bdIsEqual(p, u)); + + printf("\nMODULAR ARITHMETIC...\n"); + /* Check that (u mod n + v mod n) mod n == (u+v) mod n */ + bdSetRandTest(u, 10); + bdSetRandTest(v, 10); + bdSetRandTest(w, 10); + bdPrintHex("(Modulo)\nNew random u=", u, "\n"); + bdPrintHex("v=", v, "\n"); + bdPrintHex("w=", w, "\n"); + /* r = u mod w */ + bdModulo(r, u, w); + /* q = v mod w */ + bdModulo(q, v, w); + /* q = u mod n + v mod n */ + bdAdd(q, q, r); + /* r = (u mod w + v mod w) mod w */ + bdModulo(r, q, w); + bdPrintHex("(u mod w + v mod w) mod w=\n", r, "\n"); + /* q = (u+v) mod w */ + bdSetEqual(p, u); + bdAdd(p, p, v); + bdModulo(q, p, w); + bdPrintHex("(u+v) mod w=\n", q, "\n"); + assert(bdIsEqual(r, q)); + + /* ModMult and ModSquare */ + bdModMult(p, u, v, w); + bdPrintHex("u * v mod w=\n", p, "\n"); + bdModMult(p, u, u, w); + bdPrintHex("u * u mod w=\n", p, "\n"); + bdModSquare(q, u, w); + bdPrintHex("u^2 mod w=\n", q, "\n"); + assert(bdIsEqual(p, q)); + + + /* Clear and start again */ + bdSetZero(u); + bdSetZero(v); + bdSetZero(w); + + printf("\nARITHMETIC BOUNDARY CONDITIONS...\n"); + /* This causes Divide algorithm to `Add Back' with 32-bit digits + See Knuth 4.3.1 Algorithm D Step D6 */ + printf("Check `Add Back' in Divide algorithm\n"); + bdConvFromHex(u, "7fffffff 80000001 00000000 00000000"); + bdConvFromHex(v, "00000000 80000000 80000002 00000005"); + bdDivide(q, r, u, v); + bdPrintHex("u=", u, "\n"); + bdPrintHex("v=", v, "\n"); + bdPrintHex("q=u/v=", q, "\n"); + bdPrintHex("r=u mod v=", r, "\n"); + /* check that qv + r = u */ + bdMultiply(w, q, v); + bdAdd(w, w, r); + bdPrintHex("qv+r=", w, "\n"); + assert(bdIsEqual(w, u)); + /* And check that r = u mod v >= (1-2/b)v + See Knuth 4.3.1 Exercise 21 */ + bdConvFromHex(p, "1 00000000"); + bdSetEqual(w, p); + bdShortSub(w, w, 2); + bdMultiply(u, w, v); + bdDivide(q, w, u, p); + bdPrintHex("(1-2/b)=", q, "\n"); + cmp = bdCompare(r, q); + printf("u mod v %s (1-2/b)v\n", (cmp >= 0 ? ">=" : "<")); + + + printf("\nCope, sort of, with `negative` numbers...\n"); + bdSetZero(u); + overflow = bdShortSub(w, u, 2); + bdPrintHex("w=0-2=", w, "\n"); + printf("overflow=%" PRIuBIGD "\n", overflow); + overflow = bdIncrement(w); + bdPrintHex("w+1=", w, "\n"); + printf("overflow=%" PRIuBIGD "\n", overflow); + overflow = bdIncrement(w); + bdPrintHex("(Note error!) w+1=", w, "\n"); + printf("overflow=%" PRIuBIGD "\n", overflow); + + printf("\nUse cut-off subtraction...\n"); + bdSetShort(u, 3); + bdSetShort(v, 7); + cutoff_subtraction(w, u, v); + bdPrintDecimal("3-7=", w, "\n"); + // But OK if no underflow + cutoff_subtraction(w, v, u); + bdPrintDecimal("7-3=", w, "\n"); + + printf("\nCatch problems working close to zero...\n"); + bdSetZero(u); + overflow = bdShortAdd(u, u, 1); + bdPrintHex("u=0+1=", u, "\n"); + printf("overflow=%" PRIuBIGD " (expected 0)\n", overflow); + + printf("Compute w = 0 + 0...\n"); + bdSetZero(u); + bdSetZero(v); + bdAdd(w, u, v); + printf("bdPrint(w)="); + bdPrint(w, 0x1); + bdPrintDecimal("w=0+0=", w, "\n"); + bdPrintHex("w=0+0=0x", w, "\n"); + bdPrintBits("w=0+0='", w, "'b\n"); + assert(bdIsZero(w)); + + bdAdd(u, w, v); + bdPrintHex("w+0=", u, "\n"); + bdAdd(w, w, v); + bdPrintHex("w+=0=", w, "\n"); + + + /* Set u = v = ffff...ffff */ + for (i = 0; i < sizeof(ff); i++) + ff[i] = 0xff; + bdConvFromOctets(u, ff, sizeof(ff)); + bdConvFromOctets(v, ff, sizeof(ff)); + bdPrintHex("u=", u,"\n"); + bdPrintHex("v=", v,"\n"); + + /* Compute u * v */ + bdMultiply(w, u, v); + bdPrintHex("w = u * v =\n", w,"\n"); + /* Set v = w / u */ + bdDivide(v, r, w, u); + bdPrintHex("v = w / u =\n", v,"\n"); + bdPrintHex("rem=", r,"\n"); + assert(bdIsEqual(u, v)); + assert(bdShortCmp(r, 0) == 0); + + bdIncrement(u); + bdDecrement(v); + bdMultiply(w, u, v); + bdPrintHex("w = ++u * --v =\n", w,"\n"); + bdDivide(w, r, u, v); + bdPrintHex("q = u / v =", w,"\n"); + bdPrintHex("rem=", r,"\n"); + assert(bdShortCmp(w, 1) == 0); + assert(bdShortCmp(r, 2) == 0); + + + /* Clear and start again */ + bdSetZero(u); + bdSetZero(v); + bdSetZero(w); + + bdSetShort(u, 0); /* Fixed [v2.3]: This used to cause an error */ + bdPrintDecimal("bdSetShort(u, 0)=> u=", u, "\n"); + bdSetShort(v, 3); + bdModulo(w, u, v); + bdPrintDecimal("0 mod 3=", w, "\n"); + + /* Set a new random value for v */ + bdSetRandTest(v, 10); + bdPrintHex("Random v=\n", v,"\n"); + bdShortAdd(u, v, 1); + bdPrintHex("u = v + 1 =\n", u,"\n"); + cmp = bdCompare(u, v); + printf("bdCompare(u-v) = %d\n", cmp); + assert(cmp > 0); + cmp = bdCompare(v, u); + printf("bdCompare(v-u) = %d\n", cmp); + assert(cmp < 0); + cmp = bdCompare(u, u); + printf("bdCompare(u-u) = %d\n", cmp); + assert(cmp == 0); + + /* Compare with short */ + bdSetShort(w, 0xfffffffe); + bdPrintHex("w=", w,"\n"); + cmp = bdShortCmp(w, 1); + assert(cmp > 0); + printf("bdShortCmp(w-1) = %d\n", cmp); + cmp = bdShortCmp(w, 0xffffffff); + assert(cmp < 0); + printf("bdShortCmp(w-0xffffffff) = %d\n", cmp); + cmp = bdShortCmp(w, 0xfffffffd); + printf("bdShortCmp(w-0xfffffffd) = %d\n", cmp); + assert(cmp > 0); + /* Convert w back to a short and compare */ + d = bdToShort(w); /* NB This will truncate if w is too big */ + printf("d=bdToShort(w)=%" PRIxBIGD "\n", d); + cmp = bdShortIsEqual(w, d); + printf("bdShortIsEqual(w, d)=%d\n", cmp); + assert(cmp == 1); + + printf("\nBIT SHIFT OPERATIONS...\n"); + /* Try shifting bits */ + bdPrintHex("w = ", w,"\n"); + bdFree(&u); + u = bdNew(); + bdShiftLeft(u, w, 2); + bdPrintHex("w << 2 = ", u,"\n"); + assert(bdGetBit(u, 33) == 1); + bdShiftRight(v, u, 3); + bdPrintHex("(w << 2) >> 3 = ", v,"\n"); + assert(bdGetBit(v, 31) == 0); + + /* Bigger shift */ + bdShiftLeft(u, w, 128); + bdPrintHex("w << 128 = ", u,"\n"); + assert(bdGetBit(u, 159) == 1); + bdShiftRight(v, u, 129); + bdPrintHex("(w << 128) >> 129 = ", v,"\n"); + assert(bdGetBit(v, 31) == 0); + + /* Use a new variable */ + b = bdNew(); + bdSetZero(b); /* overkill */ + bdSetBit(b, 510, 1); + bdSetBit(b, 477, 1); + bdSetBit(b, 31, 1); + bdSetBit(b, 0, 1); + bdPrintHex("b=\n", b,"\n"); + + bdSetBit(b, 512, 1); + bdSetBit(b, 31, 0); + bdPrintHex("b'=\n", b,"\n"); + printf("Bit 512 is %d\n", bdGetBit(b, 512)); + assert(bdGetBit(b, 512) == 1); + printf("Bit 511 is %d\n", bdGetBit(b, 511)); + assert(bdGetBit(b, 511) == 0); + assert(bdGetBit(b, 477) == 1); + /* NB one-based bit lengths so expecting 513 */ + printf("Bit Length = %u\n", bdBitLength(b)); + assert(bdBitLength(b) == 513); + bdPrintHex("b'=\n", b,"\n"); + /* Destroy b */ + bdFree(&b); + + printf("\nRANDOM NUMBER GENERATION...\n"); + /* Create a random number using `my_rand' callback function */ + bdRandomSeeded(r, 508, (const unsigned char*)"", 0, my_rand); + bdPrintHex("random=\n", r,"\n"); + /* NB bit length may be less than 508 */ + printf("%u bits\n", bdBitLength(r)); + assert(bdBitLength(r) <= 508); + + /* Create a random number using the internal RNG */ + bdRandomBits(r, 509); + bdPrintHex("random=\n", r,"\n"); + printf("%u bits\n", bdBitLength(r)); + assert(bdBitLength(r) <= 509); + + printf("\nPRIME NUMBERS...\n"); + /* Generate two random primes */ + printf("Generating two primes...\n"); + bdGeneratePrime(p, 128, 5, (const unsigned char*)"1", 1, my_rand); + bdPrintHex("prime p=\n", p,"\n"); + bdGeneratePrime(q, 128, 5, (const unsigned char*)"abcdef", 6, my_rand); + bdPrintHex("prime q=\n", q,"\n"); + + /* Check primality with more tests (64 vs 5) */ + /* NB vv small chance this could fail */ + printf("Checking prime: p "); + res = bdIsPrime(p, 64); + printf("%s\n", (res ? "is OK" : "is NOT prime!!")); + /* And again using Fermat test */ + res = fermat_test(p); + if (res == 0) printf("WARNING: p failed Fermat test.\n"); + + /* w = product pq */ + bdMultiply(w, p, q); + bdPrintHex("pq=\n", w,"\n"); + + /* Product pq should not be prime */ + res = bdIsPrime(w, 5); + printf("Composite pq %s\n", (res ? "IS prime" : "is NOT prime")); + assert(res == 0); + + /* Check GCD: gcd(pq, p) == p */ + bdGcd(r, w, p); + bdPrintHex("gcd(pq, p) =\n", r,"\n"); + assert(bdIsEqual(r, p)); + + /* --Modular inversion-- */ + printf("\nMODULAR INVERSION...\n"); + /* set v to be a small random multiplier */ + bdSetRandTest(v, 1); + bdIncrement(v); /* Make sure not zero */ + bdPrintHex("multiplier, v=", v,"\n"); + /* set u = vp - 1 */ + bdMultiply(u, v, p); + bdDecrement(u); + bdPrintHex("p=\n", p,"\n"); + bdPrintHex("u = vp - 1 =\n", u,"\n"); + + /* compute w = u^-1 mod p */ + res = bdModInv(w, u, p); + bdPrintHex("w = u^-1 mod p=\n", w,"\n"); + assert(res == 0); + + /* check that wu mod p == 1 */ + bdModMult(r, w, u, p); + bdPrintHex("wu mod p = ", r,"\n"); + assert(bdShortCmp(r, 1) == 0); + + /* Try mod inversion that should fail */ + /* Set u = pq so that gcd(u, p) != 1 */ + bdMultiply(u, p, q); + res = bdModInv(w, u, p); + printf("w = (pq)^-1 mod p returns (expected) error %d\n", res); + assert(res != 0); + bdPrintHex("output, w=", w,"\n"); + + /* Do some bit string operations */ + printf("\nBIT STRING OPERATIONS...\n"); + + /* Use XOR to swop two variables without a temp variable, i.e. + a = a XOR b; b = a XOR b; a = a XOR b; */ + printf("Swop u and w:\n"); + /* Generate 2 random numbers (u,w) each 144 bits long */ + bdRandomBits(u, 144); + bdRandomBits(w, 144); + bdPrintHex("u= ", u,"\n"); + bdPrintHex("w= ", w,"\n"); + /* remember these for later (p=u, q=w) */ + bdSetEqual(p, u); + bdSetEqual(q, w); + /* Swop using XOR */ + bdXorBits(u, u, w); + bdXorBits(w, u, w); + bdXorBits(u, u, w); + bdPrintHex("u'=", u,"\n"); + bdPrintHex("w'=", w,"\n"); + /* check they have swopped accurately */ + assert(bdIsEqual(u, q)); + assert(bdIsEqual(w, p)); + + /* Try some simple AND and OR ops */ + printf("AND and OR ops:\n"); + /* Set every even bit in u and every odd bit in v */ + bdSetZero(u); + bdSetZero(v); + for (i = 0; i < 144 / 2; i++) + { + bdSetBit(u, (i * 2), 1); + bdSetBit(v, (i * 2) + 1, 1); + } + bdPrintHex("u= ", u,"\n"); + bdPrintHex("v= ", v,"\n"); + bdAndBits(w, u, v); + bdPrintHex("u AND v=", w,"\n"); + /* expected answer = zero */ + assert(bdIsZero(w)); + bdOrBits(w, u, v); + bdPrintHex("u OR v= ", w,"\n"); + /* expected answer p = 2^144 - 1 */ + bdSetZero(p); + bdSetBit(p, 144, 1); + bdDecrement(p); + bdPrintHex("2^144-1=", p,"\n"); + assert(bdIsEqual(p, w)); + + /* Invert all bits */ + bdSetZero(p); + bdSetZero(q); + bdSetShort(p, 0xfffe); + bdShiftLeft(p, p, 32); + bdShortAdd(p, p, 0xfffe); + bdPrintHex("p= ", p,"\n"); + bdNotBits(q, p); + bdPrintHex("NOT p=", q,"\n"); + /* check p AND (NOT p) == 0 */ + bdAndBits(w, p, q); + bdPrintHex("p AND (NOT p)=", w,"\n"); + assert(bdIsZero(w)); + + /* Compose a 400-bit string by concatenating random 160-bit sections + and then truncating the result */ + printf("\nBit string concatenation and truncation:\n"); + /* + ALGORITHM: (based on a similar one in RFC 2631/ANSI X.42) + Set m' = m/160 where / represents integer division with rounding upwards + Set U = 0 + For i = 0 to m' - 1 + Set R = FUNC_160 and V = FUNC_160 where FUNC_160 generates a unique 160-bit value + U = U + (R XOR V) * 2^(160 * i) + Form q from U by computing U mod (2^m) and setting the most + significant bit (the 2^(m-1) bit) and the least significant bit to 1. + In terms of boolean operations, q = U OR 2^(m-1) OR 1. + Note that 2^(m-1) < q < 2^m + */ + /* In this example, m=400 and m'=3, and we just generate 160-bit random values */ + mc = 3; + bdSetZero(u); /* Set U = 0 */ + for (i = 0; i < mc; i++) + { + bdRandomBits(r, 160); /* R = FUNC_160 */ + bdRandomBits(v, 160); /* V = FUNC_160 */ + bdXorBits(p, r, v); /* p = (R XOR V) */ + /* w = p * 2^160i, i.e. shift p left by 160i bits */ + bdShiftLeft(w, p, (160 * i)); + bdOrBits(u, u, w); /* q = q + w */ + printf("w(%d)=", i); + bdPrintHex("", w,"\n"); + } + bdPrintHex("u = w(0)+w(1)+w(2) =\n", u,"\n"); + bdModPowerOf2(u, 400); /* U = U mod (2^m) */ + bdPrintHex("u = u mod (2^m) = // `ModPowerOf2' \n", u,"\n"); + /* q = U OR 2^(m-1) OR 1 */ + bdSetEqual(q, u); /* q = U */ + bdSetBit(q, 400-1, 1); /* q = q OR 2^(m-1) */ + bdSetBit(q, 0, 1); /* q = q OR 1 */ + bdPrintHex("q = u OR 2^(m-1) OR 1 =\n", q,"\n"); + /* Check that 2^(m-1) < q < 2^m */ + printf("BitLength(q)=%d\n", bdBitLength(q)); + bdSetZero(p); + bdSetBit(p, 400-1, 1); /* p = 2^(m-1) */ + assert(bdCompare(p, q) < 1); /* p < q */ + bdSetZero(r); + bdSetBit(r, 400, 1); /* r = 2^m */ + assert(bdCompare(q, r) < 1); /* q < r */ + printf("OK, checked that 2^(m-1) < q < 2^m\n"); + + + /* Create a new set for Modular exponentiation test */ + printf("\nMODULAR EXPONENTIATION...\n"); + n = bdNew(); + e = bdNew(); + m = bdNew(); + c = bdNew(); + z = bdNew(); + mz = bdNew(); + cz = bdNew(); + t = bdNew(); + + /* n is a prime modulus */ + printf("Generating a prime...\n"); + bdGeneratePrime(n, 513, 5, NULL, 0, my_rand); + bdPrintHex("prime n=\n", n,"\n"); + printf("bdBitLength(n)=%u bdSizeof(n)=%u\n", bdBitLength(n), bdSizeof(n)); + /* Check primality using Fermat test (NB could fail!) */ + res = fermat_test(n); + if (res == 0) printf("WARNING: n failed Fermat test (this can happen!).\n"); + + /* exponent e and base m are some random numbers < n */ + bdSetRandTest(e, bdSizeof(n) - 1); + bdPrintHex("e=", e,"\n"); + bdSetRandTest(m, bdSizeof(n) - 1); + bdPrintHex("random m=\n", m,"\n"); + + /* Compute c = m^e mod n */ + bdModExp(c, m, e, n); + bdPrintHex("c = m^e mod n =\n", c,"\n"); + + /* Now use a random z and check that + c.z^e == (m.z)^e (mod n) */ + bdSetRandTest(z, bdSizeof(n)); + bdPrintHex("random z=\n", z,"\n"); + + /* Compute cz = c.z^e mod n (Note use of temp t) */ + bdModExp(t, z, e, n); + bdModMult(cz, c, t, n); + bdPrintHex("c.z^e mod n=\n", cz,"\n"); + /* Compute mz = (m.z)^e mod n */ + bdModMult(t, m, z, n); + bdModExp(mz, t, e, n); + bdPrintHex("(m.z)^e mod n==\n", mz,"\n"); + if (!bdIsEqual(mz, cz)) + printf("ERROR: (c.z^e == (m.z)^e (mod n) DOES NOT MATCH m'\n"); + else + printf("c.z^e == (m.z)^e (mod n) checks OK\n"); + assert(bdIsEqual(mz, cz)); + + /* Repeat using constant-time exponentiation */ + + printf("Using constant-time exponentiation...\n"); + /* Compute cz = c.z^e mod n (Note use of temp t) */ + bdModExp_ct(t, z, e, n); + bdModMult(cz, c, t, n); + bdPrintHex("c.z^e mod n=\n", cz,"\n"); + /* Compute mz = (m.z)^e mod n */ + bdModMult(t, m, z, n); + bdModExp_ct(mz, t, e, n); + bdPrintHex("(m.z)^e mod n==\n", mz,"\n"); + if (!bdIsEqual(mz, cz)) + printf("ERROR: (c.z^e == (m.z)^e (mod n) DOES NOT MATCH m'\n"); + else + printf("c.z^e == (m.z)^e (mod n) checks OK\n"); + assert(bdIsEqual(mz, cz)); + + + printf("\nCONVERSIONS WITH HEX AND DECIMAL...\n"); + /* Do some conversions with hex and decimal strings */ + bdSetZero(u); + bdConvFromHex(u, "DeadBeefCafeBabeBeddedDefacedDeafBeadFacade"); + bdPrintHex("From Hex: ", u,"\n"); + bdConvToHex(u, s, sizeof(s)); + printf("To Hex: %s\n", s); + bdConvFromDecimal(u, "1234567890123456789012345678901234567890"); + bdPrintHex("From Decimal: ", u,"\n"); + bdConvToDecimal(u, s, sizeof(s)); + printf("To Decimal: %s\n", s); + cmp = strcmp(s, "1234567890123456789012345678901234567890"); + assert(cmp == 0); + + /* 987654321 x 81 = 80000000001 */ + bdConvFromDecimal(u, "987654321"); + bdShortMult(v, u, 81); + bdConvToDecimal(v, s, sizeof(s)); + printf("987654321 x 81 = %s\n", s); + cmp = strcmp(s, "80000000001"); + assert(cmp == 0); + + /* 123456789 x 9 + 10 = 1111111111 */ + bdConvFromDecimal(u, "123456789"); + bdShortMult(v, u, 9); + bdShortAdd(w, v, 10); + bdConvToDecimal(w, s, sizeof(s)); + printf("123456789 x 9 + 10 = %s\n", s); + cmp = strcmp(s, "1111111111"); + assert(cmp == 0); + + /* Convert an empty decimal string to a BIGD */ + bdSetShort(u, 0xfdfdfdfd); + bdConvFromDecimal(u, ""); + bdPrintHex("bdConvFromDecimal(u, '')=", u,"\n"); + assert(bdIsZero(u)); + /* ditto an empty hex string */ + bdSetShort(u, 0xfdfdfdfd); + bdConvFromHex(u, ""); + bdPrintHex("bdConvFromHex(u, '')=", u,"\n"); + assert(bdIsZero(u)); + /* Convert zero BIGD value to a decimal string */ + bdSetZero(u); + bdConvToDecimal(u, s, sizeof(s)); + printf("Decimal zero = '%s'\n", s); + cmp = strcmp(s, "0"); + assert(cmp == 0); + /* ditto to a hex string */ + bdConvToHex(u, s, sizeof(s)); + printf("Hex zero = '%s'\n", s); + cmp = strcmp(s, "0"); + assert(cmp == 0); + /* Convert a zero BIGD to an array of octets */ + memset(bytes, 0xdf, sizeof(bytes)); + bdSetZero(u); + nbytes = bdConvToOctets(u, bytes, sizeof(bytes)); + printf("bdConvToOctets returns %d: ", nbytes); + /* show that all bytes are zero */ + pr_bytesmsg("", bytes, sizeof(bytes)); + assert(0 == bytes[sizeof(bytes)-1] && 0 == bytes[0]); + /* Convert an zero-length array of octets to a BIGD */ + bdSetShort(u, 0xfdfdfdfd); + bdConvFromOctets(u, bytes, 0); + bdPrintHex("bdConvFromOctets(nbytes=0)=", u,"\n"); + assert(bdIsZero(u)); + + bdFree(&n); + printf("\nJACOBI AND LEGENDRE SYMBOLS...\n"); + /* Try computing some Jacobi and Legendre symbol values */ + a = bdNew(); + n = bdNew(); + bdSetShort(a, 158); + bdSetShort(n, 235); + jac = bdJacobi(a, n); + printf("Jacobi(158, 235)=%d\n", jac); + assert(-1 == jac); + bdSetShort(a, 2183); + bdSetShort(n, 9907); + jac = bdJacobi(a, n); + printf("Jacobi(2183, 9907)=%d\n", jac); + assert(1 == jac); + bdSetShort(a, 1001); + jac = bdJacobi(a, n); + printf("Jacobi(1001, 9907)=%d\n", jac); + assert(-1 == jac); + bdShortMult(a, n, 10000); + jac = bdJacobi(a, n); + printf("Jacobi(10000 * 9907, 9907)=%d\n", jac); + assert(0 == jac); + + printf("\nSQUARE AND SQUARE ROOT...\n"); + /* Square a random number w = u^2 */ + bdSetRandTest(u, 10); + bdPrintHex("random u=\n", u, "\n"); + bdSquare(w, u); + bdPrintHex("(Square) u^2=", w, "\n"); + /* check against product p = u * u */ + bdMultiply(p, u, u); + bdPrintHex("u*u=", p, "\n"); + assert(bdIsEqual(p, w)); + /* and check against power function */ + bdPower(p, u, 2); + bdPrintHex("u power 2=", p, "\n"); + assert(bdIsEqual(p, w)); + /* Compute integer square root [new in v2.1] */ + bdSqrt(p, w); + bdPrintHex("sqrt(u^2)=", p, "\n"); + assert(bdIsEqual(p, u)); + /* Now test sqrt(u^2 - 1) */ + bdDecrement(w); + bdPrintHex("u^2-1=", w, "\n"); + bdSqrt(r, w); + bdPrintHex("sqrt(u^2-1)=", r, "\n"); + /* Check difference is 1 */ + bdSubtract(q, p, r); + bdPrintHex("difference=", q, " (expected 1)\n"); + assert(bdShortCmp(q, 1) == 0); + + printf("\nCUBE AND CUBE ROOT...\n"); + /* Cube a random number w = u^2 */ + bdPrintHex("u=", u, "\n"); + bdSquare(v, u); + bdMultiply(w, v, u); + bdPrintHex("(Cube) u^3=", w, "\n"); + /* Check that power function works */ + bdPower(v, u, 0); + bdPrintHex("u^0=", v, "\n"); + bdPower(v, u, 1); + bdPrintHex("u^1=", v, "\n"); + bdPower(v, u, 3); + bdPrintHex("(Power) u^3=", v, "\n"); + assert(bdIsEqual(v, w)); + /* Compute integer cube root (new in [v2.3]) */ + bdCubeRoot(p, w); + bdPrintHex("cuberoot(u^3)=", p, "\n"); + assert(bdIsEqual(p, u)); + /* Now test cuberoot(u^2 - 1) */ + bdDecrement(w); + bdPrintHex("u^3-1=", w, "\n"); + bdCubeRoot(r, w); + bdPrintHex("cuberoot(u^3-1)=", r, "\n"); + /* Check difference is 1 */ + bdSubtract(q, p, r); + bdPrintHex("difference=", q, " (expected 1)\n"); + assert(bdShortCmp(q, 1) == 0); + + printf("\nQUICK-AND-DIRTY RANDOM NUMBERS (bitlen <= nbits)...\n"); + for (i = 0; i < 5; i++) + { + int nbits = 128 + i; + bdQuickRandBits(a, nbits); + printf("q-rand(%d)=", nbits); + bdPrintHex("", a, ""); + printf("\t%d bits\n", bdBitLength(a)); + } + + printf("\nPRINT BITS...\n"); + bdSetShort(u, 0xdeadbeef); + bdPrintHex("u=0x", u, " => "); + bdPrintBits("'", u, "'b\n"); + printf("(correct)= %s\n", "11011110101011011011111011101111"); + bdSetShort(u, 0); + bdPrintHex("u=0x", u, " => "); + bdPrintBits("'", u, "'b\n"); + bdSetShort(u, 1); + bdPrintHex("u=0x", u, " => "); + bdPrintBits("'", u, "'b\n"); + + printf("\nMODULAR SQUARE ROOT...\n"); + printf("Select a 192-bit prime number...\n"); + bdConvFromHex(p, "fffffffffffffffffffffffffffffffeffffffffffffffff"); + bdPrintHex("p=0x", p, "\n"); + bdPrintDecimal("p=", p, "\n"); + res = bdIsPrime(p, 50); + printf("bdIsPrime(p)=%d\n", res); + assert(r != 0); + nbits = bdBitLength(p); + printf("p is %d bits\n", nbits); + // Pick a number just smaller than p + bdQuickRandBits(u, nbits - 1); + bdPrintDecimal("u= ", u, "\n"); + // Square it + bdModSquare(w, u, p); + bdPrintDecimal("w=u^2(mod p)= ", w, "\n"); + /* Check we have a quadratic residue */ + jac = bdJacobi(w, p); + printf("Legendre symbol (w|p)=%d (expected 1)\n", jac); + assert(jac == 1); + /* Compute one modular square root */ + bdModSqrt(x, w, p); + bdPrintDecimal("x=sqrt(w)(mod p)=", x, "\n"); + /* and the other */ + bdSubtract(y, p, x); + bdPrintDecimal("other root y=p-x=", y, "\n"); + assert(bdIsEqual(x, u) || bdIsEqual(y, u)); + if (bdIsEqual(x, u)) { + printf("u == x => OK\n"); + } + else { + printf("u == p-x => OK\n"); + } + + printf("\nFind a number that is not a quadratic residue mod p...\n"); + do { + bdQuickRandBits(v, nbits - 1); + } while (bdJacobi(v, p) != -1); + bdPrintDecimal("v=", v, "\n"); + printf("Legendre symbol (v|p)=%d (expected -1)\n", bdJacobi(v, p)); + res = bdModSqrt(x, v, p); + printf("bdModSqrt(v) returns %d (-1 => square root does not exist)\n", res); + assert(res != 0); + + printf("\nADD AND SUBTRACT MODULO M ...\n"); + /* Add two random numbers w = u + v mod p */ + bdQuickRandBits(u, nbits - 1); + bdQuickRandBits(v, nbits - 1); + bdPrintDecimal("u= ", u, "\n"); + bdPrintDecimal("v= ", v, "\n"); + bdModAdd(w, u, v, p); + bdPrintDecimal("w=u+v(mod p)=", w, "\n"); + + /* y = w - v */ + bdModSub(y, w, v, p); + bdPrintDecimal("y=w-v(mod p)=", y, "\n"); + /* Check y == u */ + printf("y == u => %s\n", (bdIsEqual(y, u) ? "OK" : "ERROR")); + assert(bdIsEqual(y, u)); + + printf("\nDivide an integer by 2 modulo p using bdModHalve()...\n"); + bdSetEqual(w, u); + bdPrintDecimal("w= ", u, "\n"); + bdModHalve(w, w, p); + bdPrintDecimal("w=w/2(mod p)=", w, "\n"); + // Check result + bdModAdd(v, w, w, p); + bdPrintDecimal("v=w+w(mod p)=", v, "\n"); + printf("v == u => %s\n", (bdIsEqual(v, u) ? "OK" : "ERROR")); + assert(bdIsEqual(v, u)); + + + /* Finally, show the current version number */ + printf("\nVERSION=%d\n", bdVersion()); + printf("Compiled on [%s]\n", bdCompileTime()); + + + /* Clear up */ + + bdFree(&a); + bdFree(&n); + bdFree(&e); + bdFree(&m); + bdFree(&c); + bdFree(&z); + bdFree(&mz); + bdFree(&cz); + bdFree(&t); + + + /* Old method... */ + //bdFree(&u); + //bdFree(&v); + //bdFree(&w); + //bdFree(&q); + //bdFree(&r); + //bdFree(&p); + //bdFree(&x); + //bdFree(&y); + + /* New way in [v2.6] */ + bdFreeVars(&u, &v, &w, &p, &q, &r, &x, &y); + printf("OK, successfully completed tests.\n"); + + return 0; +} + diff --git a/fsbl/lib/BigDigits/t_mpJacobi.c b/fsbl/lib/BigDigits/t_mpJacobi.c new file mode 100644 index 000000000..2d9667b75 --- /dev/null +++ b/fsbl/lib/BigDigits/t_mpJacobi.c @@ -0,0 +1,77 @@ +/* $Id: t_mpJacobi.c $ */ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-15 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2015-10-22 10:23:00 $ + * $Revision: 2.5.0 $ + * $Author: dai $ + */ + +#include +#include +#include "bigdigits.h" + +#define TEST_LEN (1024/8) + +char *strA = + "6BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" + "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" + "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" + "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" + "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" + "BBBBBBBBBBBAA9993E364706816ABA3E25717850" + "C26C9CD0D89D33CC"; + +const char *strN = + "CCD34C2F4D95FFAD1420E666C07E39D1450A1330" + "4C3F5891EDE57595C772A3691AB51D2BECE1476B" + "8F22AE223365F183BC3EE2D4CACDBA3AD0C4D478" + "1C523A10EFE6203D6F3BC226BF9A459727B8F122" + "C482D8C86019F9A869329187096430A6C67CB103" + "742BCBC66906AD23836EBABB511D5D80AB8CB599" + "74E9AAC62D785C45"; + +int main(void) +{ + size_t ndigits = TEST_LEN; + DIGIT_T a[TEST_LEN]; + DIGIT_T n[TEST_LEN]; + int j; + + /* Use example from X9.31 Appendix D.5.2 */ + mpConvFromHex(a, ndigits, strA); + mpConvFromHex(n, ndigits, strN); + mpPrintHex("n=\n", n, ndigits, "\n"); + mpPrintHex("a=\n", a, ndigits, "\n"); + j= mpJacobi(a, n, ndigits); + printf("Jacobi(a/n)=%d\n", j); + assert(j == -1); + + /* Divide a by 2 */ + mpShiftRight(a, a, 1, ndigits); + mpPrintHex("a=a/2=\n", a, ndigits, "\n"); + j= mpJacobi(a, n, ndigits); + printf("Jacobi(a/n)=%d\n", j); + assert(j == +1); + + /* Make n|a */ + mpShortMult(a, n, 7, ndigits); + mpPrintHex("a=n*7=\n", a, ndigits, "\n"); + j= mpJacobi(a, n, ndigits); + printf("Jacobi(a/n)=%d\n", j); + assert(j == 0); + + printf("Jacobi tests completed OK\n"); + + return 0; +} diff --git a/fsbl/lib/BigDigits/t_mpModArith.c b/fsbl/lib/BigDigits/t_mpModArith.c new file mode 100644 index 000000000..97858dbac --- /dev/null +++ b/fsbl/lib/BigDigits/t_mpModArith.c @@ -0,0 +1,260 @@ +/* $Id: t_mpModArith.c $ */ + +/* Some more tests of the BigDigits "mp" functions. */ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-16 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2016-03-31 09:51:00 $ + * $Revision: 2.6.1 $ + * $Author: dai $ + */ + + +#ifdef NDEBUG +#undef NDEBUG +#endif +#include +#include +#include "bigdigits.h" + + + +/** Hard-coded maximum number of bits we choose to handle */ +#define EC_MAXBITS 640 +/** Number of digits needed to represent an integer of EC_MAXBITS bits */ +#define EC_NDIGITS (EC_MAXBITS/BITS_PER_DIGIT) + +/** Unsigned integer of EC_MAXBITS bits */ +typedef DIGIT_T EC_INT[EC_NDIGITS]; + +/* This module can be compiled with the global preprocessor definitions + MSVC: /D "NO_ALLOCS" /D "MAX_FIXED_BIT_LENGTH=640" + GCC: -D NO_ALLOCS -D MAX_FIXED_BIT_LENGTH=640 +*/ + + +/** Make a random number of up to `nbits` bits */ +size_t make_random(EC_INT a, size_t nbits) +{ + + size_t n; + + /* Half the time, pick a shorter bitlength at random from [6,nbits] */ + if (spSimpleRand(0, 1)) { + n = (size_t)spSimpleRand(6, (DIGIT_T)nbits); + } + else { + n = nbits; + } + + mpQuickRandBits(a, EC_NDIGITS, n); + + return n; +} + + +int main(void) +{ + /* Note the neat way to declare variables of EC_NDIGITS */ + EC_INT u, v, w, m, p, x, y; + size_t nbits; + int r; + + /* Force linker to include copyright notice in + executable object image + */ + copyright_notice(); + + + printf("Testing BIGDIGITS 'mp' modular arithmetic functions.\n"); + + // First show it works for small numbers... + mpSetDigit(u, 17, EC_NDIGITS); + mpSetDigit(v, 13, EC_NDIGITS); + mpSetDigit(m, 25, EC_NDIGITS); + mpPrintDecimal("u=", u, EC_NDIGITS, ", "); + mpPrintDecimal("v=", v, EC_NDIGITS, ", "); + mpPrintDecimal("m=", m, EC_NDIGITS, "\n"); + mpModAdd(w, u, v, m, EC_NDIGITS); + mpPrintDecimal("w=u+v(mod m)=", w, EC_NDIGITS, "\n"); + /* Check that w == 5 */ + assert(mpShortCmp(w, 5, EC_NDIGITS) == 0); + + // Add assign w+=u [NB (w,w,u) not (w,u,w)] + mpModAdd(w, w, u, m, EC_NDIGITS); + mpPrintDecimal("w+=u(mod m)=", w, EC_NDIGITS, "\n"); + // Subtract assign w-=u + mpModSub(w, w, u, m, EC_NDIGITS); + mpPrintDecimal("w-=u(mod m)=", w, EC_NDIGITS, "\n"); + + // Subtract modulo m + mpModSub(w, v, u, m, EC_NDIGITS); + mpPrintDecimal("w=v-u(mod m)=", w, EC_NDIGITS, "\n"); + mpModSub(w, u, v, m, EC_NDIGITS); + mpPrintDecimal("w=u-v(mod m)=", w, EC_NDIGITS, "\n"); + + // Add then subtract modulo m + mpModAdd(w, u, v, m, EC_NDIGITS); + mpPrintDecimal("w=u+v(mod m)=", w, EC_NDIGITS, "\n"); + /* y = w - v */ + mpModSub(y, w, v, m, EC_NDIGITS); + mpPrintDecimal("y=w-v(mod m)=", y, EC_NDIGITS, "\n"); + /* Check y == u */ + printf("y == u => %s\n", (mpEqual(y, u, EC_NDIGITS) ? "OK" : "ERROR")); + assert(mpEqual(y, u, EC_NDIGITS)); + + + + printf("Select a 192-bit prime number...\n"); + mpConvFromHex(p, EC_NDIGITS, "fffffffffffffffffffffffffffffffeffffffffffffffff"); + mpPrintHex("p=0x", p, EC_NDIGITS, "\n"); + mpPrintDecimal("p=", p, EC_NDIGITS, "\n"); + r = mpIsPrime(p, EC_NDIGITS, 50); + printf("mpIsPrime(p)=%d\n", r); + assert(r != 0); + + printf("Find the square root of a quadratic residue modulo p ...\n"); + /* Pick a number, any number, less than p */ + nbits = mpBitLength(p, EC_NDIGITS); + make_random(u, nbits - 1); + mpPrintDecimal("u=", u, EC_NDIGITS, "\n"); + /* Square it modulo p => a quadratic residue modulo p */ + mpModSquare(w, u, p, EC_NDIGITS); + mpPrintDecimal("w=u^2(mod p)=", w, EC_NDIGITS, "\n"); + /* Check we have a quadratic residue */ + r = mpJacobi(w, p, EC_NDIGITS); + printf("Legendre symbol (w|p)=%d (expected 1)\n", r); + assert(r == 1); + /* Compute one modular square root */ + mpModSqrt(x, w, p, EC_NDIGITS); + mpPrintDecimal("x=sqrt(w)(mod p)=", x, EC_NDIGITS, "\n"); + /* and the other */ + mpSubtract(y, p, x, EC_NDIGITS); + mpPrintDecimal("y=p-x=", y, EC_NDIGITS, "\n"); + /* One of x or y is the same as u */ + assert(mpEqual(x, u, EC_NDIGITS) || mpEqual(y, u, EC_NDIGITS)); + if (mpEqual(x, u, EC_NDIGITS)) { + printf("u == x\n"); + } + else { + printf("u == p-x\n"); + } + + printf("Find a number that is not a quadratic residue mod p...\n"); + do { + make_random(v, nbits); + } while (mpJacobi(v, p, EC_NDIGITS) != -1); + mpPrintDecimal("v=", v, EC_NDIGITS, "\n"); + printf("Legendre symbol (v|p)=%d (expected -1)\n", mpJacobi(v, p, EC_NDIGITS)); + r = mpModSqrt(x, v, p, EC_NDIGITS); + printf("mpModSqrt(v) returns %d (-1 => square root does not exist)\n", r); + assert(r != 0); + + + printf("\nAdd and subtract modulo p...\n"); + /* Add two random numbers w = u + v (mod p) */ + make_random(u, nbits - 1); + make_random(v, nbits - 1); + mpPrintDecimal("u=", u, EC_NDIGITS, "\n"); + mpPrintDecimal("v=", v, EC_NDIGITS, "\n"); + mpModAdd(w, u, v, p, EC_NDIGITS); + mpPrintDecimal("w=u+v(mod p)=", w, EC_NDIGITS, "\n"); + /* y = w - v (mod p) */ + mpModSub(y, w, v, p, EC_NDIGITS); + mpPrintDecimal("y=w-v(mod p)=", y, EC_NDIGITS, "\n"); + /* Check y == u */ + printf("y == u => %s\n", (mpEqual(y, u, EC_NDIGITS) ? "OK" : "ERROR")); + assert(mpEqual(y, u, EC_NDIGITS)); + + printf("Do 'add assign' and 'subtract assign'...\n"); + mpSetEqual(w, u, EC_NDIGITS); + mpPrintDecimal("y= ", w, EC_NDIGITS, "\n"); + mpPrintDecimal("w=y= ", w, EC_NDIGITS, "\n"); + mpPrintDecimal("v= ", v, EC_NDIGITS, "\n"); + /* Now "add assign" w += v (mod p) */ + mpModAdd(w, w, v, p, EC_NDIGITS); + mpPrintDecimal("w+=v(mod p)=", w, EC_NDIGITS, "\n"); + /* and "subtract assign" w -= v (mod p) */ + mpModSub(w, w, v, p, EC_NDIGITS); + mpPrintDecimal("w-=v(mod p)=", w, EC_NDIGITS, "\n"); + /* Check w == y */ + printf("w == y => %s\n", (mpEqual(w, y, EC_NDIGITS) ? "OK" : "ERROR")); + assert(mpEqual(w, y, EC_NDIGITS)); + + printf("\nDivide an integer by 2 modulo p - quick method...\n"); + mpPrintDecimal("u= ", u, EC_NDIGITS, "\n"); + mpModHalve(w, u, p, EC_NDIGITS); + mpPrintDecimal("w=u/2(mod p)=", w, EC_NDIGITS, "\n"); + // Check result + mpModAdd(v, w, w, p, EC_NDIGITS); + mpPrintDecimal("v=w*2(mod p)=", v, EC_NDIGITS, "\n"); + printf("v == u => %s\n", (mpEqual(v, u, EC_NDIGITS) ? "OK" : "ERROR")); + assert(mpEqual(v, u, EC_NDIGITS)); + + + /* DEMONSTRATE "QUICK" MODULO REDUCTION FOR SPECIAL CASE */ + printf("\nSpecial case modulo reduction...\n"); + /* Compute v = u mod p for u in range 0 <= u < 4p */ + mpPrintHex("p=", p, EC_NDIGITS, "\n"); + nbits = mpBitLength(p, EC_NDIGITS); + printf("p is %d bits\n", nbits); + // Generate a random number approx 2-4x bigger than p + mpQuickRandBits(u, EC_NDIGITS, nbits + 2); + mpPrintHex("u=", u, EC_NDIGITS, "\n"); + printf("u is %d bits\n", mpBitLength(u, EC_NDIGITS)); + // Compute v = u mod p for this special case + mpModSpecial(v, u, p, EC_NDIGITS); + mpPrintHex("v=u(mod p)=", v, EC_NDIGITS, "\n"); + // Check that result v < p + assert(mpCompare(v, p, EC_NDIGITS) < 0); + // And check again using the more expensive mpModulo fn + mpModulo(w, u, EC_NDIGITS, p, EC_NDIGITS); + mpPrintHex("mpModulo()=", w, EC_NDIGITS, "\n"); + assert(mpEqual(v, w, EC_NDIGITS)); + + + printf("\nDemonstrate mpPrintBits():\n"); + mpSetDigit(u, 0xef, EC_NDIGITS); + mpPrintHex("u=0x", u, EC_NDIGITS, " => "); + mpPrintBits("'", u, EC_NDIGITS, "'b\n"); + + mpSetDigit(u, 0x28, EC_NDIGITS); + mpPrintHex("u=0x", u, EC_NDIGITS, " => "); + mpPrintBits("'", u, EC_NDIGITS, "'b\n"); + + mpSetDigit(u, 0, EC_NDIGITS); + mpPrintHex("u=0x", u, EC_NDIGITS, " => "); + mpPrintBits("'", u, EC_NDIGITS, "'b\n"); + + mpSetDigit(u, 0xdeadbeef, EC_NDIGITS); + mpPrintHex("u=0x", u, EC_NDIGITS, " => "); + mpPrintBits("'", u, EC_NDIGITS, "'b\n"); + printf("(correct)= %s\n", "11011110101011011011111011101111"); + + mpConvFromHex(u, EC_NDIGITS, "04deadbeefcafebabe1"); + mpPrintHex("u=0x", u, EC_NDIGITS, " => "); + mpPrintBits("\n'", u, EC_NDIGITS, "'b\n"); + + mpPrintHex("p=0x", p, EC_NDIGITS, " => "); + mpPrintBits("\n'", p, EC_NDIGITS, "'b\n"); + + + /* Display version number */ + printf("\nVERSION=%d\n", mpVersion()); + printf("Compiled on [%s]\n", mpCompileTime()); + + printf("OK, successfully completed tests.\n"); + + return 0; +} + diff --git a/fsbl/lib/BigDigits/t_mpRSA508.c b/fsbl/lib/BigDigits/t_mpRSA508.c new file mode 100644 index 000000000..3223723a4 --- /dev/null +++ b/fsbl/lib/BigDigits/t_mpRSA508.c @@ -0,0 +1,226 @@ +/* $Id: t_mpRSA508.c $ */ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-15 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2015-10-22 10:23:00 $ + * $Revision: 2.5.0 $ + * $Author: dai $ + */ + +/* Test vector using BIGDIGITS to show RSA digital signature using 508-bit test vectors from +"Some Examples of the PKCS Standards" +An RSA Laboratories Technical Note +Burton S. Kaliski Jr. +Revised November 1, 1993 +*/ + +/* --- +From the document:- +In the example, the modulus n is the following 508-bit +integer: + +n = 0a 66 79 1d c6 98 81 68 de 7a b7 74 19 bb 7f b0 c0 01 c6 +27 10 27 00 75 14 29 42 e1 9a 8d 8c 51 d0 53 b3 e3 78 2a 1d +e5 dc 5a f4 eb e9 94 68 17 01 14 a1 df e6 7c dc 9a 9a f5 5d +65 56 20 bb ab + +The public exponent e is F4 (65537): + +e = 01 00 01 + +The private exponent d: + +d = 01 23 c5 b6 1b a3 6e db 1d 36 79 90 41 99 a8 9e a8 0c 09 +b9 12 2e 14 00 c0 9a dc f7 78 46 76 d0 1d 23 35 6a 7d 44 d6 +bd 8b d5 0e 94 bf c7 23 fa 87 d8 86 2b 75 17 76 91 c1 1d 75 +76 92 df 88 81 + +RSA signing according to PKCS #1 has two general steps: +An encryption block is constructed from a block type, a +padding string, and the prefixed message digest; then the +encryption block is exponentiated with Test User 1's private +exponent. + +The encryption block EB is the following 64-octet string: + +00 +01 block type +ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff padding string +ff ff ff ff ff ff ff ff ff ff ff +00 00 separator +30 20 + 30 0c digestAlgorithm + 06 08 2a 86 48 86 f7 0d 02 02 algorithm = md2 + 05 00 parameters = NULL + 04 10 digest + dc a9 ec f1 c1 5c 1b d2 66 af f9 c8 79 93 65 cd + +i.e. the 64-octet string: +00 01 ff ff ff ff ff ff ff ff ff ff ff ff ff ff +ff ff ff ff ff ff ff ff ff ff ff ff ff 00 30 20 +30 0c 06 08 2a 86 48 86 f7 0d 02 02 05 00 04 10 +dc a9 ec f1 c1 5c 1b d2 66 af f9 c8 79 93 65 cd + +The resulting encrypted message digest (the signature) is +the following 64-octet string: + +06 db 36 cb 18 d3 47 5b 9c 01 db 3c 78 95 28 08 +02 79 bb ae ff 2b 7d 55 8e d6 61 59 87 c8 51 86 +3f 8a 6c 2c ff bc 89 c3 f7 5a 18 d9 6b 12 7c 71 +7d 54 d0 d8 04 8d a8 a0 54 46 26 d1 7a 2a 8f be + +CAUTION: Note that this example is for a digital signature, not encryption +to keep a secret. To use RSA to encrypt a message, you should use *random* +padding in the encryption block, different each time, not the fixed block +of FF padding bytes used here, and you exponentiate with the recipient's +*public* exponent. The recipient then deciphers using his private exponent. + +*/ + +#include +#include +#include +#include "bigdigits.h" + +#define MOD_SIZE 16 /* max 512-bits */ + + +void pr_bytes(unsigned char *b, size_t nbytes) +{ + size_t i; + + for (i = 0; i < nbytes; i++) + { + if (i && (i % 16 == 0)) printf("\n"); + printf("%02x ", b[i]); + } + printf("\n"); +} + +int main(void) +{ + DIGIT_T n[MOD_SIZE], e[MOD_SIZE], d[MOD_SIZE]; + DIGIT_T s[MOD_SIZE], m[MOD_SIZE], m1[MOD_SIZE], s1[MOD_SIZE]; + size_t nbytes; + char decimal[MOD_SIZE*4]; + + /* Data in big-endian byte format:- + */ + unsigned char nn[] = { + 0x0A, 0x66, 0x79, 0x1D, 0xC6, 0x98, 0x81, 0x68, + 0xDE, 0x7A, 0xB7, 0x74, 0x19, 0xBB, 0x7F, 0xB0, + 0xC0, 0x01, 0xC6, 0x27, 0x10, 0x27, 0x00, 0x75, + 0x14, 0x29, 0x42, 0xE1, 0x9A, 0x8D, 0x8C, 0x51, + 0xD0, 0x53, 0xB3, 0xE3, 0x78, 0x2A, 0x1D, 0xE5, + 0xDC, 0x5A, 0xF4, 0xEB, 0xE9, 0x94, 0x68, 0x17, + 0x01, 0x14, 0xA1, 0xDF, 0xE6, 0x7C, 0xDC, 0x9A, + 0x9A, 0xF5, 0x5D, 0x65, 0x56, 0x20, 0xBB, 0xAB, + }; + + unsigned char ee[] = { 0x01, 0x00, 0x01 }; + + unsigned char dd[] = { + 0x01, 0x23, 0xC5, 0xB6, 0x1B, 0xA3, 0x6E, 0xDB, + 0x1D, 0x36, 0x79, 0x90, 0x41, 0x99, 0xA8, 0x9E, + 0xA8, 0x0C, 0x09, 0xB9, 0x12, 0x2E, 0x14, 0x00, + 0xC0, 0x9A, 0xDC, 0xF7, 0x78, 0x46, 0x76, 0xD0, + 0x1D, 0x23, 0x35, 0x6A, 0x7D, 0x44, 0xD6, 0xBD, + 0x8B, 0xD5, 0x0E, 0x94, 0xBF, 0xC7, 0x23, 0xFA, + 0x87, 0xD8, 0x86, 0x2B, 0x75, 0x17, 0x76, 0x91, + 0xC1, 0x1D, 0x75, 0x76, 0x92, 0xDF, 0x88, 0x81, + }; + + unsigned char mm[] = { + 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x30, 0x20, + 0x30, 0x0C, 0x06, 0x08, 0x2A, 0x86, 0x48, 0x86, + 0xF7, 0x0D, 0x02, 0x02, 0x05, 0x00, 0x04, 0x10, + 0xDC, 0xA9, 0xEC, 0xF1, 0xC1, 0x5C, 0x1B, 0xD2, + 0x66, 0xAF, 0xF9, 0xC8, 0x79, 0x93, 0x65, 0xCD, + }; + + unsigned char ss[] = { + 0x06, 0xDB, 0x36, 0xCB, 0x18, 0xD3, 0x47, 0x5B, + 0x9C, 0x01, 0xDB, 0x3C, 0x78, 0x95, 0x28, 0x08, + 0x02, 0x79, 0xBB, 0xAE, 0xFF, 0x2B, 0x7D, 0x55, + 0x8E, 0xD6, 0x61, 0x59, 0x87, 0xC8, 0x51, 0x86, + 0x3F, 0x8A, 0x6C, 0x2C, 0xFF, 0xBC, 0x89, 0xC3, + 0xF7, 0x5A, 0x18, 0xD9, 0x6B, 0x12, 0x7C, 0x71, + 0x7D, 0x54, 0xD0, 0xD8, 0x04, 0x8D, 0xA8, 0xA0, + 0x54, 0x46, 0x26, 0xD1, 0x7A, 0x2A, 0x8F, 0xBE, + }; + + printf("Test BIGDIGITS using 508-bit RSA key from 'Some Examples of the PKCS Standards'\n"); + + /* Convert bytes to BIGDIGITS */ + mpConvFromOctets(n, MOD_SIZE, nn, sizeof(nn)); + mpConvFromOctets(e, MOD_SIZE, ee, sizeof(ee)); + mpConvFromOctets(d, MOD_SIZE, dd, sizeof(dd)); + mpConvFromOctets(m, MOD_SIZE, mm, sizeof(mm)); + mpConvFromOctets(s1, MOD_SIZE, ss, sizeof(ss)); + + + mpPrintHex("n =", n, MOD_SIZE, "\n"); + mpPrintHex("e =", e, MOD_SIZE, "\n"); + mpPrintHex("d =", d, MOD_SIZE, "\n"); + mpPrintHex("m =", m, MOD_SIZE, "\n"); + + /* Sign, i.e. Encrypt with private key, s = m^d mod n */ + mpModExp(s, m, d, n, MOD_SIZE); + + mpPrintHex("s =", s, MOD_SIZE, " "); + + /* Did we get the same answer as expected? */ + if (!mpEqual(s1, s, MOD_SIZE)) + printf("<= ERROR - no match\n"); + else + printf("<= OK\n"); + assert(mpEqual(s1, s, MOD_SIZE)); + + /* Verify, i.e. Decrypt with public key m' = s^e mod n */ + mpModExp(m1, s, e, n, MOD_SIZE); + + mpPrintHex("m'=", m1, MOD_SIZE, " "); + + /* Check that we got back where we started */ + if (!mpEqual(m1, m, MOD_SIZE)) + printf("<= ERROR - no match\n"); + else + printf("<= OK\n"); + assert(mpEqual(m1, m, MOD_SIZE)); + + /* Now convert back to octets (bytes) */ + printf("Convert BIGDIGITS back to octets (bytes)...\n"); + memset(mm, 0, sizeof(mm)); + nbytes = mpConvToOctets(m, MOD_SIZE, mm, sizeof(mm)); + printf("%d non-zero bytes converted from m:\n", nbytes); + pr_bytes(mm, sizeof(mm)); + + memset(ee, 0, sizeof(ee)); + nbytes = mpConvToOctets(e, MOD_SIZE, ee, sizeof(ee)); + printf("%d non-zero bytes converted from e:\n", nbytes); + pr_bytes(ee, sizeof(ee)); + + /* Do a conversion to decimal */ + nbytes = mpConvToDecimal(e, MOD_SIZE, decimal, sizeof(decimal)); + printf("%d non-zero decimal digits converted from e:\n", nbytes); + printf("%s\n", decimal); + assert(strcmp(decimal, "65537") == 0); + + printf("OK, successfully completed tests.\n"); + + return 0; +} + diff --git a/fsbl/lib/BigDigits/t_mpTest.c b/fsbl/lib/BigDigits/t_mpTest.c new file mode 100644 index 000000000..e9ce444a0 --- /dev/null +++ b/fsbl/lib/BigDigits/t_mpTest.c @@ -0,0 +1,339 @@ +/* $Id: t_mpTest.c $ */ + +/* Some tests of the BigDigits "mp" functions. Not exhaustive. */ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-16 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2016-03-31 09:51:00 $ + * $Revision: 2.6.1 $ + * $Author: dai $ + */ + + +#ifdef NDEBUG +#undef NDEBUG +#endif +#include +#include +#include "bigdigits.h" +#include "bigdigitsRand.h" + +#define TEST_LEN 32 + +static int debug = 1; + +DIGIT_T u[TEST_LEN]; +DIGIT_T v[TEST_LEN]; +DIGIT_T w[TEST_LEN]; +DIGIT_T q[TEST_LEN]; +DIGIT_T r[TEST_LEN]; +DIGIT_T p1[TEST_LEN]; +DIGIT_T p2[TEST_LEN]; +DIGIT_T p3[TEST_LEN]; +DIGIT_T g[TEST_LEN]; +DIGIT_T a[TEST_LEN]; +DIGIT_T n[TEST_LEN]; + +void ClearAll(void) +{ + mpSetZero(u, TEST_LEN); + mpSetZero(v, TEST_LEN); + mpSetZero(w, TEST_LEN); + mpSetZero(q, TEST_LEN); + mpSetZero(r, TEST_LEN); + mpSetZero(g, TEST_LEN); + mpSetZero(p1, TEST_LEN); + mpSetZero(p2, TEST_LEN); + mpSetZero(p3, TEST_LEN); + mpSetZero(a, TEST_LEN); + mpSetZero(n, TEST_LEN); +} + +static int MakeMultiplePrime(DIGIT_T p[], size_t ndigits) +{ /* Returns a random prime number of ndigits */ + /* WARNING: This is not cryptographically secure + because the random number generator isn't */ + size_t i; + + for (i = 0; i < ndigits; i++) + p[i] = spBetterRand(); + + /* Make sure the highest and low bits are set */ + p[ndigits - 1] |= HIBITMASK; + p[0] |= 0x1; + + //printf("p="); mpPrintNL(p, ndigits); + + /* Check if prime */ + while (!mpIsPrime(p, ndigits, 10)) + { + /* Keep adding 2 until find a prime */ + mpShortAdd(p, p, 2, ndigits); + + //printf("p="); mpPrintNL(p, ndigits); + printf("."); + + /* Check for overflow */ + if (!(p[ndigits - 1] & HIBITMASK)) + return -1; /* Failed to find a prime */ + } + + return 0; +} + +size_t MakeMultipleRandom(DIGIT_T a[], size_t ndigits) +{ + /* Make a random number of up to ndigits digits */ + size_t i, n, bits; + DIGIT_T mask; + + n = (size_t)spSimpleRand(1, ndigits); + for (i = 0; i < n; i++) + a[i] = spBetterRand(); + for (i = n; i < ndigits; i++) + a[i] = 0; + + /* Zero out a random number of bits in leading digit + about half the time */ + bits = (size_t)spSimpleRand(0, 2*BITS_PER_DIGIT); + if (bits != 0 && bits < BITS_PER_DIGIT) + { + mask = HIBITMASK; + for (i = 1; i < bits; i++) + { + mask |= (mask >> 1); + } + mask = ~mask; + a[n-1] &= mask; + } + return n; +} + +void ShowAdd(DIGIT_T w[], DIGIT_T u[], DIGIT_T v[], + DIGIT_T carry, size_t ndigits) +{ + mpPrintHex("mpAdd: ", u, ndigits, " + "); + mpPrintHex("", v, ndigits, " = "); + mpPrintHex("", w, ndigits, ", "); + printf("carry = %" PRIxBIGD "\n", carry); +} + +void ShowMult(DIGIT_T w[], DIGIT_T u[], DIGIT_T v[], size_t ndigits) +{ + mpPrintHex("mpMultiply: ", u, ndigits, " x "); + mpPrintHex("", v, ndigits, " = "); + mpPrintHex("", w, ndigits*2, "\n"); +} + +void ShowDiv(DIGIT_T q[], DIGIT_T r[], DIGIT_T u[], DIGIT_T v[], size_t ndigits) +{ + mpPrintHex("mpDivide: ", u, ndigits, " / "); + mpPrintHex("", v, ndigits, " = "); + mpPrintHex("", q, ndigits, " "); + mpPrintHex("rem ", r, ndigits, "\n"); +} + +int main(void) +{ + DIGIT_T carry, m; + int jac; + size_t len; + size_t NDIGITS; + + /* Force linker to include copyright notice in + executable object image + */ + copyright_notice(); + + ClearAll(); + + printf("Testing BIGDIGITS 'mp' functions.\n"); + + /* Start easy: 1 + 1 = 2 */ + mpSetDigit(u, 1, TEST_LEN); /* u = 1 */ + carry = mpAdd(w, u, u, TEST_LEN); /* w = u + u */ + ShowAdd(w, u, u, carry, TEST_LEN); + /* Check that w == 2 */ + assert(mpShortCmp(w, 2, TEST_LEN) == 0); + + /* ---- Add and subtract ---- */ + /* Add two random numbers w = u + v */ + MakeMultipleRandom(u, TEST_LEN-1); + MakeMultipleRandom(v, TEST_LEN-1); + carry = mpAdd(w, u, v, TEST_LEN); + + /* r = w - v */ + carry = mpSubtract(r, w, v, TEST_LEN); + + /* Check r == u */ + assert(mpEqual(r, u, TEST_LEN)); + printf("Add and subtract worked OK\n"); + ClearAll(); + + /* ---- Multiply and divide ---- */ + /* Multiply two random numbers w = u * v */ + MakeMultipleRandom(u, TEST_LEN / 2); + MakeMultipleRandom(v, TEST_LEN / 2); + mpMultiply(w, u, v, TEST_LEN / 2); + if (debug) ShowMult(w, u, v, TEST_LEN / 2); + + /* q = w / v, r = w % v */ + mpDivide(q, r, w, TEST_LEN, v, TEST_LEN / 2); + /* Check q == u and r == 0 */ + if (debug) mpPrintHex("q=", q, TEST_LEN / 2, "\n"); + assert(mpEqual(q, u, TEST_LEN / 2)); + assert(mpIsZero(r, TEST_LEN / 2)); + + ClearAll(); + + mpSetDigit(a, 0, TEST_LEN); + mpSetZero(n, TEST_LEN); + assert(mpEqual(a, n, TEST_LEN)); + + ClearAll(); + + /* Pick two random numbers u, v */ + MakeMultipleRandom(u, TEST_LEN/2); + MakeMultipleRandom(v, TEST_LEN/2); + /* Divide one by the other: q = u / v, r = u % v */ + mpDivide(q, r, u, TEST_LEN/2, v, TEST_LEN/2); + if (debug) ShowDiv(q, r, u, v, TEST_LEN/2); + /* Check w = q * v + r == u */ + mpMultiply(g, q, v, TEST_LEN/2); + mpAdd(w, g, r, TEST_LEN/2); + assert(mpEqual(w, u, TEST_LEN/2)); + printf("Multiply and divide worked OK\n"); + + /* ---- Greatest Common Divisor ---- */ + /* Pick 3x random primes p1, p2, p3 */ + printf("Creating 3 prime numbers (be patient):\n"); + MakeMultiplePrime(p1, TEST_LEN / 2); + printf("(1)\n"); + MakeMultiplePrime(p2, TEST_LEN / 2); + printf("(2)\n"); + MakeMultiplePrime(p3, TEST_LEN / 2); + printf("(3)\n"); + + /* Calculate two products from these primes */ + /* u = p1 * p2 */ + mpMultiply(u, p1, p2, TEST_LEN / 2); + /* v = p1 * p3 */ + mpMultiply(v, p1, p3, TEST_LEN / 2); + /* Now calculate g = gcd(u, v) */ + mpGcd(g, u, v, TEST_LEN); + /* And check that g == p1 */ + assert(mpEqual(g, p1, TEST_LEN)); + printf("Greatest Common Divisor worked OK\n"); + + /* ---- Modular Inverse ---- */ + /* Use previous prime as modulus, v */ + mpSetEqual(v, p1, TEST_LEN); + + /* Pick a small multiplier, m */ + m = spSimpleRand(1, MAX_DIGIT); + + /* Set u = (vm - 1) */ + mpShortMult(u, v, m, TEST_LEN); + mpShortSub(u, u, 1, TEST_LEN); + + mpModInv(w, u, v, TEST_LEN); + /* Check that g = (w * u) mod v = 1 */ + mpModMult(g, w, u, v, TEST_LEN); + assert((mpShortCmp(g, 1, TEST_LEN) == 0)); + printf("Modular inverse worked OK\n"); + + /* Compute some Jacobi and Legendre symbol values */ + mpSetDigit(a, 158, TEST_LEN); + mpSetDigit(n, 235, TEST_LEN); + jac = mpJacobi(a, n, TEST_LEN); + //printf("Jacobi(158, 235)=%d\n", jac); + assert(-1 == jac); + mpSetDigit(a, 2183, TEST_LEN); + mpSetDigit(n, 9907, TEST_LEN); + jac = mpJacobi(a, n, TEST_LEN); + //printf("Jacobi(2183, 9907)=%d\n", jac); + assert(1 == jac); + mpSetDigit(a, 1001, TEST_LEN); + jac = mpJacobi(a, n, TEST_LEN); + //printf("Jacobi(1001, 9907)=%d\n", jac); + assert(-1 == jac); + mpShortMult(a, n, 10000, TEST_LEN); + jac = mpJacobi(a, n, TEST_LEN); + //printf("Jacobi(10000 * 9907, 9907)=%d\n", jac); + assert(0 == jac); + printf("Jacobi symbol tests worked OK\n"); + + /* ---- Square, square root and cube root ---- */ + printf("\nSquare roots, etc...\n"); + /* Pick a random number u */ + MakeMultipleRandom(u, TEST_LEN/2); + mpPrintHex("u=", u, TEST_LEN/2, "\n"); + /* Compute square */ + mpSquare(v, u, TEST_LEN/2); + mpPrintHex("u^2=", v, TEST_LEN, "\n"); + /* Compute square root */ + mpSqrt(r, v, TEST_LEN); + mpPrintHex("sqrt(u^2)=", r, TEST_LEN, "\n"); + /* Now compute square root of v - 1 */ + mpShortSub(v, v, 1, TEST_LEN); + mpSqrt(w, v, TEST_LEN); + mpPrintHex("sqrt(u^2-1)=", w, TEST_LEN, "\n"); + /* This should be one less than before */ + mpSubtract(g, r, w, TEST_LEN); + mpPrintHex("difference=", g, TEST_LEN, " (expecting 1)\n"); + assert(mpShortCmp(g, 1, TEST_LEN) == 0); + + /* Compute cube */ + ClearAll(); + /* Pick another random number u */ + len = TEST_LEN/4; + MakeMultipleRandom(u, len); + mpPrintHex("u=", u, len, "\n"); + /* Compute cube (NB we use LEN/4 to avoid overflow on 2nd multiplication) */ + mpSquare(w, u, len); + len = 2 * len; + mpMultiply(v, w, u, len); + mpPrintHex("u^3=", v, TEST_LEN, "\n"); + /* Compute cube root */ + mpCubeRoot(r, v, TEST_LEN); + mpPrintHex("cuberoot(u^3)=", r, TEST_LEN, "\n"); + assert(mpCompare(r, u, TEST_LEN) == 0); + + /* Now compute cube root of v - 1 */ + mpShortSub(v, v, 1, TEST_LEN); + mpCubeRoot(w, v, TEST_LEN); + mpPrintHex("cuberoot(u^3-1)=", w, TEST_LEN, "\n"); + /* This should be one less than before */ + mpSubtract(g, r, w, TEST_LEN); + mpPrintHex("difference=", g, TEST_LEN, " (expecting 1)\n"); + assert(mpShortCmp(g, 1, TEST_LEN) == 0); + + + printf("Testing signed arithmetic...\n"); + NDIGITS = 4; + mpSetDigit(u, 2, NDIGITS); + mpSetDigit(v, 5, NDIGITS); + mpSubtract(w, u, v, NDIGITS); + mpPrintDecimalSigned("signed w=", w, NDIGITS, "\n"); + mpPrintHex("unsigned w=0x", w, NDIGITS, "\n"); + + + /* Display version number */ + printf("\nVersion=%d\n", mpVersion()); + + /* For further checks do RSA calculation - see t_mpRSA.c */ + printf("OK, successfully completed tests.\n"); + + return 0; +} + diff --git a/fsbl/lib/BigDigits/t_spExtras.c b/fsbl/lib/BigDigits/t_spExtras.c new file mode 100644 index 000000000..262ba0ddb --- /dev/null +++ b/fsbl/lib/BigDigits/t_spExtras.c @@ -0,0 +1,208 @@ +/* $Id: t_spExtras.c $ */ + +/***** BEGIN LICENSE BLOCK ***** + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * Copyright (c) 2001-15 David Ireland, D.I. Management Services Pty Limited + * . All rights reserved. + * + ***** END LICENSE BLOCK *****/ +/* + * Last updated: + * $Date: 2015-10-22 10:23:00 $ + * $Revision: 2.5.0 $ + * $Author: dai $ + */ + +/* Some tests for `extra' single-precision functions + -- some tests assume word size >= 32 bits +*/ + +#include +#include +#include "bigdigits.h" +#include "spExtras.h" + +#ifndef NELEMS +#define NELEMS(x) ((sizeof(x)) / (sizeof((x)[0]))) +#endif /* NELEMS */ + +static int is_in_list(DIGIT_T a, DIGIT_T *list, size_t n) +/* Returns true (1) if a is in list of n elements; else false (0) */ +{ + size_t i; + int result = 0; + + for (i = 0; i < n; i++) + { + if (a == list[i]) + { + result = 1; + break; + } + } + return result; +} + +int main(void) +{ + DIGIT_T x, y, g; + DIGIT_T m, e, n, c, z, t; + DIGIT_T p, v, u, w, a, q; + int res, i, ntries; + DIGIT_T primes32[] = { 5, 17, 65, 99 }; + DIGIT_T primes16[] = { 15, 17, 39 }; + + /* Test greatest common divisor (gcd) */ + printf("Test spGcd:\n"); + /* simple one */ + x = 15; y = 27; + g = spGcd(x, y); + printf("gcd(%" PRIuBIGD ", %" PRIuBIGD ") = %" PRIuBIGD "\n", x, y, g); + assert(g == 3); + + /* contrived using small primes */ + x = 53 * 37; y = 53 * 83; + g = spGcd(x, y); + printf("gcd(%" PRIuBIGD ", %" PRIuBIGD ") = %" PRIuBIGD "\n", x, y, g); + assert(g == 53); + + /* contrived using bigger primes */ + x = 0x0345 * 0xfedc; y = 0xfedc * 0x0871; + g = spGcd(x, y); + printf("gcd(0x%" PRIxBIGD ", 0x%" PRIxBIGD ") = 0x%" PRIxBIGD "\n", x, y, g); + assert(g == 0xfedc); + + /* Known primes: 2^16-15, 2^32-5 */ + y = 0x10000 - 15; + x = spSimpleRand(1, y); + g = spGcd(x, y); + printf("gcd(0x%" PRIxBIGD ", 0x%" PRIxBIGD ") = %" PRIxBIGD "\n", x, y, g); + assert(g == 1); + + y = 0xffffffff - 5 + 1; + x = spSimpleRand(1, y); + g = spGcd(x, y); + printf("gcd(0x%" PRIxBIGD ", 0x%" PRIxBIGD ") = %" PRIxBIGD "\n", x, y, g); + assert(g == 1); + + /* Test spModExp */ + printf("Test spModExp:\n"); + /* Verify that (m^e mod n).(z^e mod n) == (m.z)^e mod n + for random m, e, n, z */ + /* Generate some random numbers */ + n = spSimpleRand(MAX_DIGIT / 2, MAX_DIGIT); + m = spSimpleRand(1, n -1); + e = spSimpleRand(1, n -1); + z = spSimpleRand(1, n -1); + /* Compute c = m^e mod n */ + spModExp(&c, m, e, n); + printf("c=m^e mod n=%" PRIxBIGD "^%" PRIxBIGD " mod %" PRIxBIGD "=%" PRIxBIGD "\n", m, e, n, c); + /* Compute x = c.z^e mod n */ + printf("z=%" PRIxBIGD "\n", z); + spModExp(&t, z, e, n); + spModMult(&x, c, t, n); + printf("x = c.z^e mod n = %" PRIxBIGD "\n", x); + /* Compute y = (m.z)^e mod n */ + spModMult(&t, m, z, n); + spModExp(&y, t, e, n); + printf("y = (m.z)^e mod n = %" PRIxBIGD "\n", x); + /* Check they are equal */ + assert(x == y); + + /* Test spModInv */ + printf("Test spModInv:\n"); + /* Use identity that (vp-1)^-1 mod p = p-1 + for prime p and integer v */ + /* known prime */ + p = 0x10000 - 15; + /* small multiplier */ + v = spSimpleRand(2, 10); + u = v * p - 1; + printf("u = vp-1 = %" PRIuBIGD " * %" PRIuBIGD " - 1 = %" PRIuBIGD "\n", v, p, u); + /* compute w = u^-1 mod p */ + spModInv(&w, u, p); + printf("w = u^-1 mod p = %" PRIuBIGD "\n", w); + /* check wu mod p == 1 */ + spModMult(&c, w, u, p); + printf("Check 1 == wu mod p = %" PRIuBIGD "\n", c); + assert(c == 1); + /* Try mod inversion that should fail */ + /* Set u = pq so that gcd(u, p) != 1 */ + q = 31; + u = p * q; + printf("p=%" PRIuBIGD " q=%" PRIuBIGD " pq=%" PRIuBIGD "\n", p, q, u); + printf("gcd(pq, p) = %" PRIuBIGD " (i.e. not 1)\n", spGcd(u, p)); + res = spModInv(&w, u, p); + printf("w = (pq)^-1 mod p returns error %d (expected 1)\n", res); + assert(res != 0); + + /* Test spIsPrime */ + printf("Test spIsPrime:\n"); + /* Find primes just less than 2^32. Ref: Knuth p408 */ + for (n = 0xffffffff, a = 1; a < 100; a++, n--) + { + if (spIsPrime(n, 50)) + { + printf("2^32-%" PRIuBIGD " is prime\n", a); + assert(is_in_list(a, primes32, NELEMS(primes32))); + } + } + /* And just less than 2^16 */ + for (n = 0xffff, a = 1; a < 50; a++, n--) + { + if (spIsPrime(n, 50)) + { + printf("2^16-%" PRIuBIGD " is prime\n", a); + assert(is_in_list(a, primes16, NELEMS(primes16))); + } + } + /* Generate a random prime < MAX_DIGIT */ + n = spSimpleRand(0, MAX_DIGIT); + /* make sure odd */ + n |= 0x01; + /* expect to find a prime approx every lg(n) numbers, + so for sure within 100 times that */ + ntries = BITS_PER_DIGIT * 100; + for (i = 0; i < ntries; i++) + { + if (spIsPrime(n, 50)) + break; + n += 2; + } + printf("Random prime, n = %" PRIuBIGD " (0x%" PRIxBIGD ")\n", n, n); + printf("found after %d candidates\n", i+1); + if (i >= ntries) + printf("Didn't manage to find a prime in %d tries!\n", ntries); + else + assert(spIsPrime(n, 50)); + + res = spIsPrime(n, 50); + printf("spIsPrime(%" PRIuBIGD ") is %s\n", n, (res ? "TRUE" : "FALSE")); + + /* Check using (less accurate) Fermat test (these could fail) */ + w = 2; + spModExp(&x, w, n-1, n); + printf("Fermat test: %" PRIxBIGD "^(n-1) mod n = %" PRIxBIGD " (%s)\n", w, x, (x == 1 ? "PASSED" : "FAILED!")); + w = 3; + spModExp(&x, w, n-1, n); + printf("Fermat test: %" PRIxBIGD "^(n-1) mod n = %" PRIxBIGD " (%s)\n", w, x, (x == 1 ? "PASSED" : "FAILED!")); + w = 5; + spModExp(&x, w, n-1, n); + printf("Fermat test: %" PRIxBIGD "^(n-1) mod n = %" PRIxBIGD " (%s)\n", w, x, (x == 1 ? "PASSED" : "FAILED!")); + + /* Try a known Fermat liar (Carmichael number) */ + n = 561; + printf("Try n = 561 = 3*11*17 (a 'Fermat liar')\n"); + w = 5; + spModExp(&x, w, n-1, n); + printf("Fermat test: %" PRIxBIGD "^(n-1) mod n = %" PRIxBIGD " (%s)\n", w, x, (x == 1 ? "PASSED" : "FAILED!")); + res = spIsPrime(n, 50); + printf("spIsPrime(%" PRIuBIGD ") is %s\n", n, (res ? "TRUE" : "FALSE")); + assert(!res); + + return 0; +} diff --git a/fsbl/lib/cpu/aarch64/bl1_entrypoint.S b/fsbl/lib/cpu/aarch64/bl1_entrypoint.S new file mode 100644 index 000000000..2e54609f3 --- /dev/null +++ b/fsbl/lib/cpu/aarch64/bl1_entrypoint.S @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include +#include +#include +#include + + + .globl bl1_entrypoint + .globl bl1_entrypoint_end + .globl bl1_entrypoint_rel + + /* ----------------------------------------------------- + * bl1_entrypoint() is the entry point into the trusted + * firmware code when a cpu is released from warm or + * cold reset. + * ----------------------------------------------------- + */ + .pushsection .entry, "ax" +bl1_entrypoint: + # Relocate from 0x04400000 to mirrored ROM address 0x40000000 + ldr x0, =bl1_entrypoint_rel + br x0 +bl1_entrypoint_end: + .popsection + +func bl1_entrypoint_rel + atf_state_set w14, x15, ATF_STATE_BL1_ENTRY_POINT + atf_err_set w14, x15, ATF_ERR_NONE + + /* + * Initialise the register file as a safeguard against + * spurious X propagation in EDA verfication platform. + */ + mov x0, xzr + mov x1, xzr + mov x2, xzr + mov x3, xzr + mov x4, xzr + mov x5, xzr + mov x6, xzr + mov x7, xzr + mov x8, xzr + mov x9, xzr + mov x10, xzr + mov x11, xzr + mov x12, xzr + mov x13, xzr + mov x14, xzr + mov x15, xzr + mov x16, xzr + mov x17, xzr + mov x18, xzr + mov x19, xzr + mov x20, xzr + mov x21, xzr + mov x22, xzr + mov x23, xzr + mov x24, xzr + mov x25, xzr + mov x26, xzr + mov x27, xzr + mov x28, xzr + mov x29, xzr + mov x30, xzr + + /* --------------------------------------------------------------------- + * Use SP_EL0 for the C runtime stack. + * --------------------------------------------------------------------- + */ + msr spsel, #0 + ldr x0, =__STACKS_END__ + mov sp, x0 + + /* ------------------------------------------------------------- + * This is the initialisation of SCTLR_EL3 and so must ensure + * that all fields are explicitly set rather than relying on hw. + * Some fields reset to an IMPLEMENTATION DEFINED value and + * others are architecturally UNKNOWN on reset. + * + * SCTLR.EE: Set the CPU endianness before doing anything that + * might involve memory reads or writes. Set to zero to select + * Little Endian. + * + * SCTLR_EL3.WXN: For the EL3 translation regime, this field can + * force all memory regions that are writeable to be treated as + * XN (Execute-never). Set to zero so that this control has no + * effect on memory access permissions. + * + * SCTLR_EL3.SA: Set to zero to disable Stack Aligment check. + * + * SCTLR_EL3.A: Set to zero to disable Alignment fault checking. + * ------------------------------------------------------------- + */ + mov_imm x0, (SCTLR_RESET_VAL & ~(SCTLR_EE_BIT | SCTLR_WXN_BIT \ + | SCTLR_SA_BIT | SCTLR_A_BIT)) + msr sctlr_el3, x0 + isb + + /* --------------------------------------------------------------------- + * It is a cold boot. + * --------------------------------------------------------------------- + */ + el3_arch_init_common bl1_exceptions + + /* NO C runtime environment. stack only. no .bss and .data */ + bl bl1_early_platform_setup + + + /* -------------------------------------------------- + * Initialize platform and jump to our c-entry point + * for this type of reset. + * -------------------------------------------------- + */ + bl bl1_main + + /* -------------------------------------------------- + * Do the transition to next boot image. + * -------------------------------------------------- + */ +1: + atf_err_set w14, x15, ATF_ERR_BL1_RETURN + b 1b + +endfunc bl1_entrypoint_rel diff --git a/fsbl/lib/cpu/aarch64/bl1_exceptions.S b/fsbl/lib/cpu/aarch64/bl1_exceptions.S new file mode 100644 index 000000000..7bc5108bf --- /dev/null +++ b/fsbl/lib/cpu/aarch64/bl1_exceptions.S @@ -0,0 +1,129 @@ +/* + * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include +#include +#include + +/* ----------------------------------------------------------------------------- + * Very simple stackless exception handlers used by BL1. + * ----------------------------------------------------------------------------- + */ + .globl bl1_exceptions + +vector_base bl1_exceptions + + /* ----------------------------------------------------- + * Current EL with SP0 : 0x0 - 0x200 + * ----------------------------------------------------- + */ +vector_entry SynchronousExceptionSP0 + mov x0, #SYNC_EXCEPTION_SP_EL0 + bl cpu_report_exception + no_ret panic_handler + check_vector_size SynchronousExceptionSP0 + +vector_entry IrqSP0 + mov x0, #IRQ_SP_EL0 + bl cpu_report_exception + no_ret panic_handler + check_vector_size IrqSP0 + +vector_entry FiqSP0 + mov x0, #FIQ_SP_EL0 + bl cpu_report_exception + no_ret panic_handler + check_vector_size FiqSP0 + +vector_entry SErrorSP0 + mov x0, #SERROR_SP_EL0 + bl cpu_report_exception + no_ret panic_handler + check_vector_size SErrorSP0 + + /* ----------------------------------------------------- + * Current EL with SPx: 0x200 - 0x400 + * ----------------------------------------------------- + */ +vector_entry SynchronousExceptionSPx + mov x0, #SYNC_EXCEPTION_SP_ELX + bl cpu_report_exception + no_ret panic_handler + check_vector_size SynchronousExceptionSPx + +vector_entry IrqSPx + mov x0, #IRQ_SP_ELX + bl cpu_report_exception + no_ret panic_handler + check_vector_size IrqSPx + +vector_entry FiqSPx + mov x0, #FIQ_SP_ELX + bl cpu_report_exception + no_ret panic_handler + check_vector_size FiqSPx + +vector_entry SErrorSPx + mov x0, #SERROR_SP_ELX + bl cpu_report_exception + no_ret panic_handler + check_vector_size SErrorSPx + + /* ----------------------------------------------------- + * Lower EL using AArch64 : 0x400 - 0x600 + * ----------------------------------------------------- + */ +vector_entry SynchronousExceptionA64 + mov x0, #SYNC_EXCEPTION_AARCH64 + bl cpu_report_exception + no_ret panic_handler + check_vector_size SynchronousExceptionA64 + +vector_entry IrqA64 + mov x0, #IRQ_AARCH64 + bl cpu_report_exception + no_ret panic_handler + check_vector_size IrqA64 + +vector_entry FiqA64 + mov x0, #FIQ_AARCH64 + bl cpu_report_exception + no_ret panic_handler + check_vector_size FiqA64 + +vector_entry SErrorA64 + mov x0, #SERROR_AARCH64 + bl cpu_report_exception + no_ret panic_handler + check_vector_size SErrorA64 + + /* ----------------------------------------------------- + * Lower EL using AArch32 : 0x600 - 0x800 + * ----------------------------------------------------- + */ +vector_entry SynchronousExceptionA32 + mov x0, #SYNC_EXCEPTION_AARCH32 + bl cpu_report_exception + no_ret panic_handler + check_vector_size SynchronousExceptionA32 + +vector_entry IrqA32 + mov x0, #IRQ_AARCH32 + bl cpu_report_exception + no_ret panic_handler + check_vector_size IrqA32 + +vector_entry FiqA32 + mov x0, #FIQ_AARCH32 + bl cpu_report_exception + no_ret panic_handler + check_vector_size FiqA32 + +vector_entry SErrorA32 + mov x0, #SERROR_AARCH32 + bl cpu_report_exception + no_ret panic_handler + check_vector_size SErrorA32 diff --git a/fsbl/lib/cpu/aarch64/bl2_entrypoint.S b/fsbl/lib/cpu/aarch64/bl2_entrypoint.S new file mode 100644 index 000000000..d1d1a3ef7 --- /dev/null +++ b/fsbl/lib/cpu/aarch64/bl2_entrypoint.S @@ -0,0 +1,136 @@ +/* + * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include +#include +#include +#include + + + .globl bl2_entrypoint + .globl bl2_entrypoint_real + +func bl2_entrypoint + b bl2_entrypoint_real + .word 0 // resvered + .word 0 // BL2 MSID + .word 0 // BL2 version + .word 0 // + .word 0 + .word 0 + .word 0 + +bl2_entrypoint_real: + atf_state_set w14, x15, ATF_STATE_BL2_ENTRY_POINT + + /* --------------------------------------------- + * Sync instruction cache + * --------------------------------------------- + */ + ic iallu + isb + + /* --------------------------------------------- + * Set the exception vector to something sane. + * --------------------------------------------- + */ + adr x0, bl2_exceptions + msr vbar_el3, x0 + isb + + /* --------------------------------------------- + * Enable the SError interrupt now that the + * exception vectors have been setup. + * --------------------------------------------- + */ + msr daifclr, #DAIF_ABT_BIT + + /* --------------------------------------------- + * Zero out NOBITS sections. There are 2 of them: + * - the .bss section; + * - the coherent memory section. + * --------------------------------------------- + */ + ldr x0, =__BSS_START__ + ldr x1, =__BSS_SIZE__ + bl zeromem + + /* -------------------------------------------- + * Allocate a stack whose memory will be marked + * as Normal-IS-WBWA when the MMU is enabled. + * There is no risk of reading stale stack + * memory after enabling the MMU as only the + * primary cpu is running at the moment. + * -------------------------------------------- + */ + ldr x0, =__STACKS_END__ + mov sp, x0 + + /* --------------------------------------------- + * Jump to main function. + * --------------------------------------------- + */ + bl bl2_main + + /* --------------------------------------------- + * Should never reach this point. + * --------------------------------------------- + */ + no_ret panic_handler + +endfunc bl2_entrypoint + + + .global call_with_eret_to_next + .type call_with_eret_to_next, %function + + .global call_with_eret + .type call_with_eret, %function + +call_with_eret_to_next: + mov x9, x30 + b 1f +call_with_eret: + mov x9, x0 +1: + msr elr_el3, x9 + + /* Same exception vector */ + mrs x9, vbar_el3 + msr vbar_el2, x9 + + eret + b . + +func disable_mmu_el3 + mov x1, #(SCTLR_M_BIT | SCTLR_C_BIT) +do_disable_mmu: + mrs x0, sctlr_el3 + bic x0, x0, x1 + msr sctlr_el3, x0 + isb // ensure MMU is off + dsb sy + ret +endfunc disable_mmu_el3 + +func disable_mmu_icache_el3 + mov x1, #(SCTLR_M_BIT | SCTLR_C_BIT | SCTLR_I_BIT) + b do_disable_mmu +endfunc disable_mmu_icache_el3 + + .global jump_bl31 +func jump_bl31 + mov x20, x0 // bl31_entry + mov x21, x1 // bl31_params + + bl disable_mmu_icache_el3 + tlbi alle3 + + mov x0, x21 // bl31_params + mov x1, xzr + blr x20 + +endfunc jump_bl31 diff --git a/fsbl/lib/cpu/aarch64/bl2_exceptions.S b/fsbl/lib/cpu/aarch64/bl2_exceptions.S new file mode 100644 index 000000000..96dace259 --- /dev/null +++ b/fsbl/lib/cpu/aarch64/bl2_exceptions.S @@ -0,0 +1,150 @@ +/* + * Copyright (c) 2013-2016, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include +#include +#include + +/* ----------------------------------------------------------------------------- + * Very simple stackless exception handlers used by BL2. + * ----------------------------------------------------------------------------- + */ + .globl bl2_exceptions + +vector_base bl2_exceptions + + /* ----------------------------------------------------- + * Current EL with SP0 : 0x0 - 0x200 + * ----------------------------------------------------- + */ +vector_entry SynchronousExceptionSP0 + mov x0, #SYNC_EXCEPTION_SP_EL0 + bl cpu_report_exception + no_ret panic_handler + check_vector_size SynchronousExceptionSP0 + +vector_entry IrqSP0 + mov x0, #IRQ_SP_EL0 + bl cpu_report_exception + no_ret panic_handler + check_vector_size IrqSP0 + +vector_entry FiqSP0 + mov x0, #FIQ_SP_EL0 + bl cpu_report_exception + no_ret panic_handler + check_vector_size FiqSP0 + +vector_entry SErrorSP0 + mov x0, #SERROR_SP_EL0 + bl cpu_report_exception + no_ret panic_handler + check_vector_size SErrorSP0 + + /* ----------------------------------------------------- + * Current EL with SPx: 0x200 - 0x400 + * ----------------------------------------------------- + */ +vector_entry SynchronousExceptionSPx + mov x0, #SYNC_EXCEPTION_SP_ELX + bl cpu_report_exception + no_ret panic_handler + check_vector_size SynchronousExceptionSPx + +vector_entry IrqSPx + mov x0, #IRQ_SP_ELX + bl cpu_report_exception + no_ret panic_handler + check_vector_size IrqSPx + +vector_entry FiqSPx + mov x0, #FIQ_SP_ELX + bl cpu_report_exception + no_ret panic_handler + check_vector_size FiqSPx + +vector_entry SErrorSPx + mov x0, #SERROR_SP_ELX + bl cpu_report_exception + no_ret panic_handler + check_vector_size SErrorSPx + + /* ----------------------------------------------------- + * Lower EL using AArch64 : 0x400 - 0x600 + * ----------------------------------------------------- + */ +vector_entry SynchronousExceptionA64 + /* Enable the SError interrupt */ + msr daifclr, #DAIF_ABT_BIT + + /* Expect only SMC exceptions */ + mrs x30, esr_el3 + ubfx x30, x30, #ESR_EC_SHIFT, #ESR_EC_LENGTH + cmp x30, #EC_AARCH64_SMC + b.ne unexpected_sync_exception + + b smc_handler64 + check_vector_size SynchronousExceptionA64 + +vector_entry IrqA64 + mov x0, #IRQ_AARCH64 + bl cpu_report_exception + no_ret panic_handler + check_vector_size IrqA64 + +vector_entry FiqA64 + mov x0, #FIQ_AARCH64 + bl cpu_report_exception + no_ret panic_handler + check_vector_size FiqA64 + +vector_entry SErrorA64 + mov x0, #SERROR_AARCH64 + bl cpu_report_exception + no_ret panic_handler + check_vector_size SErrorA64 + + /* ----------------------------------------------------- + * Lower EL using AArch32 : 0x600 - 0x800 + * ----------------------------------------------------- + */ +vector_entry SynchronousExceptionA32 + mov x0, #SYNC_EXCEPTION_AARCH32 + bl cpu_report_exception + no_ret panic_handler + check_vector_size SynchronousExceptionA32 + +vector_entry IrqA32 + mov x0, #IRQ_AARCH32 + bl cpu_report_exception + no_ret panic_handler + check_vector_size IrqA32 + +vector_entry FiqA32 + mov x0, #FIQ_AARCH32 + bl cpu_report_exception + no_ret panic_handler + check_vector_size FiqA32 + +vector_entry SErrorA32 + mov x0, #SERROR_AARCH32 + bl cpu_report_exception + no_ret panic_handler + check_vector_size SErrorA32 + +unexpected_sync_exception: + mov x0, #SYNC_EXCEPTION_AARCH64 + bl cpu_report_exception + no_ret panic_handler + +func smc_handler64 + # Reset exception stack + ldr x30, =__STACKS_END__ + msr spsel, #0 + mov sp, x30 + bl bl2_smc_handler + b . +endfunc smc_handler64 diff --git a/fsbl/lib/cpu/aarch64/bl2_helper.c b/fsbl/lib/cpu/aarch64/bl2_helper.c new file mode 100644 index 000000000..9ecb7fda9 --- /dev/null +++ b/fsbl/lib/cpu/aarch64/bl2_helper.c @@ -0,0 +1,260 @@ +#include +#include +#include +#include +#include +#include +#include + +void switch_el3_to_el2_ns(uintptr_t bl2_entry) +{ + uint64_t spsr, mdcr_el2; + + NOTICE("Switch to EL2-NS at 0x%lx\n", bl2_entry); + + spsr = SPSR_64(MODE_EL2, 0, DISABLE_ALL_EXCEPTIONS); + write_spsr_el3(spsr); + + /* + * Set the next EL to be AArch64. + * Switch to non-secure state. + */ + write_scr_el3(read_scr_el3() | SCR_RW_BIT | SCR_NS_BIT); + + /* + * EL2 present but unused, need to disable safely. + * SCTLR_EL2 can be ignored in this case. + * + * Initialise all fields in HCR_EL2, except HCR_EL2.RW, + * to zero so that Non-secure operations do not trap to + * EL2. + * + * HCR_EL2.RW: Set this field to match SCR_EL3.RW + */ + write_hcr_el2(read_hcr_el2() | HCR_RW_BIT); + + /* + * Initialise CPTR_EL2 setting all fields rather than + * relying on the hw. All fields have architecturally + * UNKNOWN reset values. + * + * CPTR_EL2.TCPAC: Set to zero so that Non-secure EL1 + * accesses to the CPACR_EL1 or CPACR from both + * Execution states do not trap to EL2. + * + * CPTR_EL2.TTA: Set to zero so that Non-secure System + * register accesses to the trace registers from both + * Execution states do not trap to EL2. + * + * CPTR_EL2.TFP: Set to zero so that Non-secure accesses + * to SIMD and floating-point functionality from both + * Execution states do not trap to EL2. + */ + write_cptr_el2(CPTR_EL2_RESET_VAL & ~(CPTR_EL2_TCPAC_BIT | CPTR_EL2_TTA_BIT | CPTR_EL2_TFP_BIT)); + + /* + * Initiliase CNTHCTL_EL2. All fields are + * architecturally UNKNOWN on reset and are set to zero + * except for field(s) listed below. + * + * CNTHCTL_EL2.EL1PCEN: Set to one to disable traps to + * Hyp mode of Non-secure EL0 and EL1 accesses to the + * physical timer registers. + * + * CNTHCTL_EL2.EL1PCTEN: Set to one to disable traps to + * Hyp mode of Non-secure EL0 and EL1 accesses to the + * physical counter registers. + */ + write_cnthctl_el2(CNTHCTL_RESET_VAL | EL1PCEN_BIT | EL1PCTEN_BIT); + + /* + * Initialise CNTVOFF_EL2 to zero as it resets to an + * architecturally UNKNOWN value. + */ + write_cntvoff_el2(0); + + /* + * Set VPIDR_EL2 and VMPIDR_EL2 to match MIDR_EL1 and + * MPIDR_EL1 respectively. + */ + write_vpidr_el2(read_midr_el1()); + write_vmpidr_el2(read_mpidr_el1()); + + /* + * Initialise VTTBR_EL2. All fields are architecturally + * UNKNOWN on reset. + * + * VTTBR_EL2.VMID: Set to zero. Even though EL1&0 stage + * 2 address translation is disabled, cache maintenance + * operations depend on the VMID. + * + * VTTBR_EL2.BADDR: Set to zero as EL1&0 stage 2 address + * translation is disabled. + */ + write_vttbr_el2(VTTBR_RESET_VAL & + ~((VTTBR_VMID_MASK << VTTBR_VMID_SHIFT) | (VTTBR_BADDR_MASK << VTTBR_BADDR_SHIFT))); + + /* + * Initialise MDCR_EL2, setting all fields rather than + * relying on hw. Some fields are architecturally + * UNKNOWN on reset. + * + * MDCR_EL2.TPMS (ARM v8.2): Do not trap statistical + * profiling controls to EL2. + * + * MDCR_EL2.E2PB (ARM v8.2): SPE enabled in non-secure + * state. Accesses to profiling buffer controls at + * non-secure EL1 are not trapped to EL2. + * + * MDCR_EL2.TDRA: Set to zero so that Non-secure EL0 and + * EL1 System register accesses to the Debug ROM + * registers are not trapped to EL2. + * + * MDCR_EL2.TDOSA: Set to zero so that Non-secure EL1 + * System register accesses to the powerdown debug + * registers are not trapped to EL2. + * + * MDCR_EL2.TDA: Set to zero so that System register + * accesses to the debug registers do not trap to EL2. + * + * MDCR_EL2.TDE: Set to zero so that debug exceptions + * are not routed to EL2. + * + * MDCR_EL2.HPME: Set to zero to disable EL2 Performance + * Monitors. + * + * MDCR_EL2.TPM: Set to zero so that Non-secure EL0 and + * EL1 accesses to all Performance Monitors registers + * are not trapped to EL2. + * + * MDCR_EL2.TPMCR: Set to zero so that Non-secure EL0 + * and EL1 accesses to the PMCR_EL0 or PMCR are not + * trapped to EL2. + * + * MDCR_EL2.HPMN: Set to value of PMCR_EL0.N which is the + * architecturally-defined reset value. + */ + mdcr_el2 = ((MDCR_EL2_RESET_VAL | ((read_pmcr_el0() & PMCR_EL0_N_BITS) >> PMCR_EL0_N_SHIFT)) & + ~(MDCR_EL2_TDRA_BIT | MDCR_EL2_TDOSA_BIT | MDCR_EL2_TDA_BIT | MDCR_EL2_TDE_BIT | MDCR_EL2_HPME_BIT | + MDCR_EL2_TPM_BIT | MDCR_EL2_TPMCR_BIT)); + + write_mdcr_el2(mdcr_el2); + + /* + * Initialise HSTR_EL2. All fields are architecturally + * UNKNOWN on reset. + * + * HSTR_EL2.T: Set all these fields to zero so that + * Non-secure EL0 or EL1 accesses to System registers + * do not trap to EL2. + */ + write_hstr_el2(HSTR_EL2_RESET_VAL & ~(HSTR_EL2_T_MASK)); + /* + * Initialise CNTHP_CTL_EL2. All fields are + * architecturally UNKNOWN on reset. + * + * CNTHP_CTL_EL2:ENABLE: Set to zero to disable the EL2 + * physical timer and prevent timer interrupts. + */ + write_cnthp_ctl_el2(CNTHP_CTL_RESET_VAL & ~(CNTHP_CTL_ENABLE_BIT)); + + ATF_STATE = ATF_STATE_BL2_MAIN + 1; + time_records->fsbl_exit = read_time_ms(); + + call_with_eret(bl2_entry); + + ATF_STATE = ATF_STATE_BL2_MAIN + 2; +} + +typedef struct param_header { + uint8_t type; /* type of the structure */ + uint8_t version; /* version of this structure */ + uint16_t size; /* size of this structure in bytes */ + uint32_t attr; /* attributes: unused bits SBZ */ +} param_header_t; + +typedef struct image_info { + param_header_t h; + uintptr_t image_base; /* physical address of base of image */ + uint32_t image_size; /* bytes read from image file */ +} image_info_t; + +typedef struct aapcs64_params { + u_register_t arg0; + u_register_t arg1; + u_register_t arg2; + u_register_t arg3; + u_register_t arg4; + u_register_t arg5; + u_register_t arg6; + u_register_t arg7; +} aapcs64_params_t; + +typedef struct entry_point_info { + param_header_t h; + uintptr_t pc; + uint32_t spsr; + aapcs64_params_t args; +} entry_point_info_t; + +typedef struct bl31_params { + param_header_t h; + image_info_t *bl31_image_info; + entry_point_info_t *bl32_ep_info; + image_info_t *bl32_image_info; + entry_point_info_t *bl33_ep_info; + image_info_t *bl33_image_info; +} bl31_params_t; + +#define PARAM_BL31 0x03 +#define VERSION_1 0x01 + +#define MODE_EL2 U(0x2) +#define MODE_EL1 U(0x1) +#define NON_SECURE U(0x1) + +#define PARAM_EP_SECURITY_MASK U(0x1) + +#define SET_SECURITY_STATE(x, security) ((x) = ((x) & ~PARAM_EP_SECURITY_MASK) | (security)) + +struct { + bl31_params_t bl31_params; + entry_point_info_t bl33_ep_info; +} static next_info; + +void jump_to_monitor(uintptr_t monitor_entry, uintptr_t next_addr) +{ + const char skip[] = "SKIP_LICENSE_CHECK\0"; + bl31_params_t *from_bl2 = &next_info.bl31_params; + + memcpy((void *)LICENSE_FILE_ADDR, skip, sizeof(skip)); + + from_bl2->h.type = PARAM_BL31; + from_bl2->h.version = VERSION_1; + from_bl2->bl33_ep_info = &next_info.bl33_ep_info; + + SET_SECURITY_STATE(from_bl2->bl33_ep_info->h.attr, NON_SECURE); + from_bl2->bl33_ep_info->pc = next_addr; + from_bl2->bl33_ep_info->args.arg0 = 0; + from_bl2->bl33_ep_info->spsr = SPSR_64(MODE_EL2, MODE_SP_ELX, DISABLE_ALL_EXCEPTIONS); + + flush_dcache_range(LICENSE_FILE_ADDR, 64); + flush_dcache_range((uintptr_t)&next_info, sizeof(next_info)); + + time_records->fsbl_exit = read_time_ms(); + jump_bl31(monitor_entry, from_bl2); +} + +void jump_to_loader_2nd(uintptr_t loader_2nd_entry) +{ + switch_el3_to_el2_ns(loader_2nd_entry); +} + +void bl2_smc_handler(void) +{ + NOTICE("%s:%d\n", __func__, __LINE__); + + while (1) + ; + __builtin_unreachable(); +} diff --git a/fsbl/lib/cpu/aarch64/cache_helpers.S b/fsbl/lib/cpu/aarch64/cache_helpers.S new file mode 100644 index 000000000..14c4386c9 --- /dev/null +++ b/fsbl/lib/cpu/aarch64/cache_helpers.S @@ -0,0 +1,203 @@ +/* + * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include +#include + + .globl flush_dcache_range + .globl clean_dcache_range + .globl inv_dcache_range + .globl dcsw_op_louis + .globl dcsw_op_all + .globl dcsw_op_level1 + .globl dcsw_op_level2 + .globl dcsw_op_level3 + +/* + * This macro can be used for implementing various data cache operations `op` + */ +.macro do_dcache_maintenance_by_mva op + /* Exit early if size is zero */ + cbz x1, exit_loop_\op + dcache_line_size x2, x3 + add x1, x0, x1 + sub x3, x2, #1 + bic x0, x0, x3 +loop_\op: + dc \op, x0 + add x0, x0, x2 + cmp x0, x1 + b.lo loop_\op + dsb sy +exit_loop_\op: + ret +.endm + /* ------------------------------------------ + * Clean+Invalidate from base address till + * size. 'x0' = addr, 'x1' = size + * ------------------------------------------ + */ +func flush_dcache_range + do_dcache_maintenance_by_mva civac +endfunc flush_dcache_range + + /* ------------------------------------------ + * Clean from base address till size. + * 'x0' = addr, 'x1' = size + * ------------------------------------------ + */ +func clean_dcache_range + do_dcache_maintenance_by_mva cvac +endfunc clean_dcache_range + + /* ------------------------------------------ + * Invalidate from base address till + * size. 'x0' = addr, 'x1' = size + * ------------------------------------------ + */ +func inv_dcache_range + do_dcache_maintenance_by_mva ivac +endfunc inv_dcache_range + + + /* --------------------------------------------------------------- + * Data cache operations by set/way to the level specified + * + * The main function, do_dcsw_op requires: + * x0: The operation type (0-2), as defined in cpu.h + * x3: The last cache level to operate on + * x9: clidr_el1 + * x10: The cache level to begin operation from + * and will carry out the operation on each data cache from level 0 + * to the level in x3 in sequence + * + * The dcsw_op macro sets up the x3 and x9 parameters based on + * clidr_el1 cache information before invoking the main function + * --------------------------------------------------------------- + */ + + .macro dcsw_op shift, fw, ls + mrs x9, clidr_el1 + ubfx x3, x9, \shift, \fw + lsl x3, x3, \ls + mov x10, xzr + b do_dcsw_op + .endm + +func do_dcsw_op + cbz x3, exit + adr x14, dcsw_loop_table // compute inner loop address + add x14, x14, x0, lsl #5 // inner loop is 8x32-bit instructions + mov x0, x9 + mov w8, #1 +loop1: + add x2, x10, x10, lsr #1 // work out 3x current cache level + lsr x1, x0, x2 // extract cache type bits from clidr + and x1, x1, #7 // mask the bits for current cache only + cmp x1, #2 // see what cache we have at this level + b.lo level_done // nothing to do if no cache or icache + + msr csselr_el1, x10 // select current cache level in csselr + isb // isb to sych the new cssr&csidr + mrs x1, ccsidr_el1 // read the new ccsidr + and x2, x1, #7 // extract the length of the cache lines + add x2, x2, #4 // add 4 (line length offset) + ubfx x4, x1, #3, #10 // maximum way number + clz w5, w4 // bit position of way size increment + lsl w9, w4, w5 // w9 = aligned max way number + lsl w16, w8, w5 // w16 = way number loop decrement + orr w9, w10, w9 // w9 = combine way and cache number + ubfx w6, w1, #13, #15 // w6 = max set number + lsl w17, w8, w2 // w17 = set number loop decrement + dsb sy // barrier before we start this level + br x14 // jump to DC operation specific loop + + .macro dcsw_loop _op +loop2_\_op: + lsl w7, w6, w2 // w7 = aligned max set number + +loop3_\_op: + orr w11, w9, w7 // combine cache, way and set number + dc \_op, x11 + subs w7, w7, w17 // decrement set number + b.hs loop3_\_op + + subs x9, x9, x16 // decrement way number + b.hs loop2_\_op + + b level_done + .endm + +level_done: + add x10, x10, #2 // increment cache number + cmp x3, x10 + b.hi loop1 + msr csselr_el1, xzr // select cache level 0 in csselr + dsb sy // barrier to complete final cache operation + isb +exit: + ret +endfunc do_dcsw_op + +dcsw_loop_table: + dcsw_loop isw + dcsw_loop cisw + dcsw_loop csw + + +func dcsw_op_louis + dcsw_op #LOUIS_SHIFT, #CLIDR_FIELD_WIDTH, #LEVEL_SHIFT +endfunc dcsw_op_louis + + +func dcsw_op_all + dcsw_op #LOC_SHIFT, #CLIDR_FIELD_WIDTH, #LEVEL_SHIFT +endfunc dcsw_op_all + + /* --------------------------------------------------------------- + * Helper macro for data cache operations by set/way for the + * level specified + * --------------------------------------------------------------- + */ + .macro dcsw_op_level level + mrs x9, clidr_el1 + mov x3, \level + sub x10, x3, #2 + b do_dcsw_op + .endm + + /* --------------------------------------------------------------- + * Data cache operations by set/way for level 1 cache + * + * The main function, do_dcsw_op requires: + * x0: The operation type (0-2), as defined in cpu.h + * --------------------------------------------------------------- + */ +func dcsw_op_level1 + dcsw_op_level #(1 << LEVEL_SHIFT) +endfunc dcsw_op_level1 + + /* --------------------------------------------------------------- + * Data cache operations by set/way for level 2 cache + * + * The main function, do_dcsw_op requires: + * x0: The operation type (0-2), as defined in cpu.h + * --------------------------------------------------------------- + */ +func dcsw_op_level2 + dcsw_op_level #(2 << LEVEL_SHIFT) +endfunc dcsw_op_level2 + + /* --------------------------------------------------------------- + * Data cache operations by set/way for level 3 cache + * + * The main function, do_dcsw_op requires: + * x0: The operation type (0-2), as defined in cpu.h + * --------------------------------------------------------------- + */ +func dcsw_op_level3 + dcsw_op_level #(3 << LEVEL_SHIFT) +endfunc dcsw_op_level3 diff --git a/fsbl/lib/cpu/aarch64/console.S b/fsbl/lib/cpu/aarch64/console.S new file mode 100644 index 000000000..891e563e1 --- /dev/null +++ b/fsbl/lib/cpu/aarch64/console.S @@ -0,0 +1,80 @@ +/* + * Copyright (c) 2015-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +#include +#include +#include + + .globl console_init + .globl console_putc + .globl console_getc + .globl console_flush + .globl console_tstc + + /* ----------------------------------------------- + * int console_init(uintptr_t not_used, + * unsigned int uart_clk, unsigned int baud_rate) + * Function to initialize the console without a + * C Runtime to print debug information. It saves + * the console base to the data section. + * In: x0 - not used + * w1 - Uart clock in Hz + * w2 - Baud rate + * out: return 1 on success else 0 on error + * Clobber list : x1 - x4 + * ----------------------------------------------- + */ +func console_init + mov_imm x0, PLAT_BOOT_UART_BASE + b console_core_init + ret +endfunc console_init + + /* --------------------------------------------- + * int console_putc(int c) + * Function to output a character over the + * console. It returns the character printed on + * success or -1 on error. + * In : x0 - character to be printed + * Out : return -1 on error else return character. + * Clobber list : x1, x2 + * --------------------------------------------- + */ +func console_putc + mov_imm x1, PLAT_BOOT_UART_BASE + b console_core_putc +endfunc console_putc + + /* --------------------------------------------- + * int console_getc(void) + * Function to get a character from the console. + * It returns the character grabbed on success + * or -1 on error. + * Clobber list : x0, x1 + * --------------------------------------------- + */ +func console_getc + mov_imm x0, PLAT_BOOT_UART_BASE + b console_core_getc +endfunc console_getc + +func console_tstc + mov_imm x0, PLAT_BOOT_UART_BASE + b console_core_tstc +endfunc console_tstc + + /* --------------------------------------------- + * int console_flush(void) + * Function to force a write of all buffered + * data that hasn't been output. It returns 0 + * upon successful completion, otherwise it + * returns -1. + * Clobber list : x0, x1 + * --------------------------------------------- + */ +func console_flush + mov_imm x0, PLAT_BOOT_UART_BASE + b console_core_flush +endfunc console_flush diff --git a/fsbl/lib/cpu/aarch64/cpu-ops.mk b/fsbl/lib/cpu/aarch64/cpu-ops.mk new file mode 100644 index 000000000..ad3297196 --- /dev/null +++ b/fsbl/lib/cpu/aarch64/cpu-ops.mk @@ -0,0 +1,154 @@ +# +# Copyright (c) 2014-2017, ARM Limited and Contributors. All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause +# + +# Cortex A57 specific optimisation to skip L1 cache flush when +# cluster is powered down. +SKIP_A57_L1_FLUSH_PWR_DWN ?=0 + +# Flag to disable the cache non-temporal hint. +# It is enabled by default. +A53_DISABLE_NON_TEMPORAL_HINT ?=1 + +# Flag to disable the cache non-temporal hint. +# It is enabled by default. +A57_DISABLE_NON_TEMPORAL_HINT ?=1 + +# Process SKIP_A57_L1_FLUSH_PWR_DWN flag +$(eval $(call assert_boolean,SKIP_A57_L1_FLUSH_PWR_DWN)) +$(eval $(call add_define,SKIP_A57_L1_FLUSH_PWR_DWN)) + +# Process A53_DISABLE_NON_TEMPORAL_HINT flag +$(eval $(call assert_boolean,A53_DISABLE_NON_TEMPORAL_HINT)) +$(eval $(call add_define,A53_DISABLE_NON_TEMPORAL_HINT)) + +# Process A57_DISABLE_NON_TEMPORAL_HINT flag +$(eval $(call assert_boolean,A57_DISABLE_NON_TEMPORAL_HINT)) +$(eval $(call add_define,A57_DISABLE_NON_TEMPORAL_HINT)) + + +# CPU Errata Build flags. +# These should be enabled by the platform if the erratum workaround needs to be +# applied. + +# Flag to apply erratum 826319 workaround during reset. This erratum applies +# only to revision <= r0p2 of the Cortex A53 cpu. +ERRATA_A53_826319 ?=0 + +# Flag to apply erratum 835769 workaround at compile and link time. This +# erratum applies to revision <= r0p4 of the Cortex A53 cpu. Enabling this +# workaround can lead the linker to create "*.stub" sections. +ERRATA_A53_835769 ?=0 + +# Flag to apply erratum 836870 workaround during reset. This erratum applies +# only to revision <= r0p3 of the Cortex A53 cpu. From r0p4 and onwards, this +# erratum workaround is enabled by default in hardware. +ERRATA_A53_836870 ?=0 + +# Flag to apply erratum 843419 workaround at link time. +# This erratum applies to revision <= r0p4 of the Cortex A53 cpu. Enabling this +# workaround could lead the linker to emit "*.stub" sections which are 4kB +# aligned. +ERRATA_A53_843419 ?=0 + +# Flag to apply errata 855873 during reset. This errata applies to all +# revisions of the Cortex A53 CPU, but this firmware workaround only works +# for revisions r0p3 and higher. Earlier revisions are taken care +# of by the rich OS. +ERRATA_A53_855873 ?=0 + +# Flag to apply erratum 806969 workaround during reset. This erratum applies +# only to revision r0p0 of the Cortex A57 cpu. +ERRATA_A57_806969 ?=0 + +# Flag to apply erratum 813419 workaround during reset. This erratum applies +# only to revision r0p0 of the Cortex A57 cpu. +ERRATA_A57_813419 ?=0 + +# Flag to apply erratum 813420 workaround during reset. This erratum applies +# only to revision r0p0 of the Cortex A57 cpu. +ERRATA_A57_813420 ?=0 + +# Flag to apply erratum 826974 workaround during reset. This erratum applies +# only to revision <= r1p1 of the Cortex A57 cpu. +ERRATA_A57_826974 ?=0 + +# Flag to apply erratum 826977 workaround during reset. This erratum applies +# only to revision <= r1p1 of the Cortex A57 cpu. +ERRATA_A57_826977 ?=0 + +# Flag to apply erratum 828024 workaround during reset. This erratum applies +# only to revision <= r1p1 of the Cortex A57 cpu. +ERRATA_A57_828024 ?=0 + +# Flag to apply erratum 829520 workaround during reset. This erratum applies +# only to revision <= r1p2 of the Cortex A57 cpu. +ERRATA_A57_829520 ?=0 + +# Flag to apply erratum 833471 workaround during reset. This erratum applies +# only to revision <= r1p2 of the Cortex A57 cpu. +ERRATA_A57_833471 ?=0 + +# Process ERRATA_A53_826319 flag +$(eval $(call assert_boolean,ERRATA_A53_826319)) +$(eval $(call add_define,ERRATA_A53_826319)) + +# Process ERRATA_A53_835769 flag +$(eval $(call assert_boolean,ERRATA_A53_835769)) +$(eval $(call add_define,ERRATA_A53_835769)) + +# Process ERRATA_A53_836870 flag +$(eval $(call assert_boolean,ERRATA_A53_836870)) +$(eval $(call add_define,ERRATA_A53_836870)) + +# Process ERRATA_A53_843419 flag +$(eval $(call assert_boolean,ERRATA_A53_843419)) +$(eval $(call add_define,ERRATA_A53_843419)) + +# Process ERRATA_A53_855873 flag +$(eval $(call assert_boolean,ERRATA_A53_855873)) +$(eval $(call add_define,ERRATA_A53_855873)) + +# Process ERRATA_A57_806969 flag +$(eval $(call assert_boolean,ERRATA_A57_806969)) +$(eval $(call add_define,ERRATA_A57_806969)) + +# Process ERRATA_A57_813419 flag +$(eval $(call assert_boolean,ERRATA_A57_813419)) +$(eval $(call add_define,ERRATA_A57_813419)) + +# Process ERRATA_A57_813420 flag +$(eval $(call assert_boolean,ERRATA_A57_813420)) +$(eval $(call add_define,ERRATA_A57_813420)) + +# Process ERRATA_A57_826974 flag +$(eval $(call assert_boolean,ERRATA_A57_826974)) +$(eval $(call add_define,ERRATA_A57_826974)) + +# Process ERRATA_A57_826977 flag +$(eval $(call assert_boolean,ERRATA_A57_826977)) +$(eval $(call add_define,ERRATA_A57_826977)) + +# Process ERRATA_A57_828024 flag +$(eval $(call assert_boolean,ERRATA_A57_828024)) +$(eval $(call add_define,ERRATA_A57_828024)) + +# Process ERRATA_A57_829520 flag +$(eval $(call assert_boolean,ERRATA_A57_829520)) +$(eval $(call add_define,ERRATA_A57_829520)) + +# Process ERRATA_A57_833471 flag +$(eval $(call assert_boolean,ERRATA_A57_833471)) +$(eval $(call add_define,ERRATA_A57_833471)) + +# Errata build flags +ifneq (${ERRATA_A53_843419},0) +TF_LDFLAGS_aarch64 += --fix-cortex-a53-843419 +endif + +ifneq (${ERRATA_A53_835769},0) +TF_CFLAGS_aarch64 += -mfix-cortex-a53-835769 +TF_LDFLAGS_aarch64 += --fix-cortex-a53-835769 +endif diff --git a/fsbl/lib/cpu/aarch64/cpu.mk b/fsbl/lib/cpu/aarch64/cpu.mk new file mode 100644 index 000000000..77e3d15df --- /dev/null +++ b/fsbl/lib/cpu/aarch64/cpu.mk @@ -0,0 +1,39 @@ +include lib/cpu/${BOOT_CPU}/cpu-ops.mk + +ASFLAGS +=\ + $(CPPFLAGS) \ + -D__ASSEMBLY__ \ + -march=armv8-a \ + -ffreestanding \ + -Wa,--fatal-warnings + +TF_CFLAGS += \ + $(CPPFLAGS) \ + -march=armv8-a -mstrict-align \ + -ffreestanding -fno-builtin -Wall -std=gnu99 \ + -Os -ffunction-sections -fdata-sections \ + -fno-delete-null-pointer-checks + +TF_LDFLAGS += \ + --fatal-warnings -Os \ + --gc-sections \ + ${TF_LDFLAGS_aarch64} + +CPU_INCLUDES := + +CPU_SOURCES := \ + lib/cpu/${BOOT_CPU}/cpu_helper.c \ + lib/cpu/${BOOT_CPU}/cache_helpers.S \ + lib/cpu/${BOOT_CPU}/misc_helpers.S \ + lib/cpu/${BOOT_CPU}/delay_timer.c \ + lib/cpu/${BOOT_CPU}/console.S \ + lib/cpu/${BOOT_CPU}/bl2_helper.c \ + plat/${CHIP_ARCH}/uart/16550_console_aarch64.S + +BL1_CPU_SOURCES := \ + lib/cpu/${BOOT_CPU}/bl1_entrypoint.S \ + lib/cpu/${BOOT_CPU}/bl1_exceptions.S + +BL2_CPU_SOURCES := \ + lib/cpu/${BOOT_CPU}/bl2_entrypoint.S \ + lib/cpu/${BOOT_CPU}/bl2_exceptions.S diff --git a/fsbl/lib/cpu/aarch64/cpu_helper.c b/fsbl/lib/cpu/aarch64/cpu_helper.c new file mode 100644 index 000000000..69f5eead3 --- /dev/null +++ b/fsbl/lib/cpu/aarch64/cpu_helper.c @@ -0,0 +1,20 @@ +#include +#include +#include +#include +#include +#include +#include + +void sync_cache(void) +{ + asm volatile("ic iallu\n" + "isb\n" + : + : + : "memory"); +} + +void cpu_report_exception(unsigned int exception_type) +{ +} diff --git a/fsbl/lib/cpu/aarch64/cpu_macros.S b/fsbl/lib/cpu/aarch64/cpu_macros.S new file mode 100644 index 000000000..6d7933ece --- /dev/null +++ b/fsbl/lib/cpu/aarch64/cpu_macros.S @@ -0,0 +1,226 @@ +/* + * Copyright (c) 2014-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +#ifndef __CPU_MACROS_S__ +#define __CPU_MACROS_S__ + +#include + +#define CPU_IMPL_PN_MASK (MIDR_IMPL_MASK << MIDR_IMPL_SHIFT) | \ + (MIDR_PN_MASK << MIDR_PN_SHIFT) + +/* The number of CPU operations allowed */ +#define CPU_MAX_PWR_DWN_OPS 2 + +/* Special constant to specify that CPU has no reset function */ +#define CPU_NO_RESET_FUNC 0 + +/* Word size for 64-bit CPUs */ +#define CPU_WORD_SIZE 8 + +/* + * Whether errata status needs reporting. Errata status is printed in debug + * builds for both BL1 and BL31 images. + */ +#if (defined(IMAGE_BL1) || defined(IMAGE_BL31)) && DEBUG +# define REPORT_ERRATA 1 +#else +# define REPORT_ERRATA 0 +#endif + + /* + * Define the offsets to the fields in cpu_ops structure. + */ + .struct 0 +CPU_MIDR: /* cpu_ops midr */ + .space 8 +/* Reset fn is needed in BL at reset vector */ +#if defined(IMAGE_BL1) || defined(IMAGE_BL31) +CPU_RESET_FUNC: /* cpu_ops reset_func */ + .space 8 +#endif +#ifdef IMAGE_BL31 /* The power down core and cluster is needed only in BL31 */ +CPU_PWR_DWN_OPS: /* cpu_ops power down functions */ + .space (8 * CPU_MAX_PWR_DWN_OPS) +#endif + +/* + * Fields required to print errata status. Only in BL31 that the printing + * require mutual exclusion and printed flag. + */ +#if REPORT_ERRATA +CPU_ERRATA_FUNC: + .space 8 +#ifdef IMAGE_BL31 +CPU_ERRATA_LOCK: + .space 8 +CPU_ERRATA_PRINTED: + .space 8 +#endif +#endif + +#if defined(IMAGE_BL31) && CRASH_REPORTING +CPU_REG_DUMP: /* cpu specific register dump for crash reporting */ + .space 8 +#endif +CPU_OPS_SIZE = . + + /* + * Write given expressions as quad words + * + * _count: + * Write at least _count quad words. If the given number of + * expressions is less than _count, repeat the last expression to + * fill _count quad words in total + * _rest: + * Optional list of expressions. _this is for parameter extraction + * only, and has no significance to the caller + * + * Invoked as: + * fill_constants 2, foo, bar, blah, ... + */ + .macro fill_constants _count:req, _this, _rest:vararg + .ifgt \_count + /* Write the current expression */ + .ifb \_this + .error "Nothing to fill" + .endif + .quad \_this + + /* Invoke recursively for remaining expressions */ + .ifnb \_rest + fill_constants \_count-1, \_rest + .else + fill_constants \_count-1, \_this + .endif + .endif + .endm + + /* + * Declare CPU operations + * + * _name: + * Name of the CPU for which operations are being specified + * _midr: + * Numeric value expected to read from CPU's MIDR + * _resetfunc: + * Reset function for the CPU. If there's no CPU reset function, + * specify CPU_NO_RESET_FUNC + * _power_down_ops: + * Comma-separated list of functions to perform power-down + * operatios on the CPU. At least one, and up to + * CPU_MAX_PWR_DWN_OPS number of functions may be specified. + * Starting at power level 0, these functions shall handle power + * down at subsequent power levels. If there aren't exactly + * CPU_MAX_PWR_DWN_OPS functions, the last specified one will be + * used to handle power down at subsequent levels + */ + .macro declare_cpu_ops _name:req, _midr:req, _resetfunc:req, \ + _power_down_ops:vararg + .section cpu_ops, "a" + .align 3 + .type cpu_ops_\_name, %object + .quad \_midr +#if defined(IMAGE_BL1) || defined(IMAGE_BL31) + .quad \_resetfunc +#endif +#ifdef IMAGE_BL31 +1: + /* Insert list of functions */ + fill_constants CPU_MAX_PWR_DWN_OPS, \_power_down_ops +2: + /* + * Error if no or more than CPU_MAX_PWR_DWN_OPS were specified in the + * list + */ + .ifeq 2b - 1b + .error "At least one power down function must be specified" + .else + .iflt 2b - 1b - (CPU_MAX_PWR_DWN_OPS * CPU_WORD_SIZE) + .error "More than CPU_MAX_PWR_DWN_OPS functions specified" + .endif + .endif +#endif + +#if REPORT_ERRATA + .ifndef \_name\()_cpu_str + /* + * Place errata reported flag, and the spinlock to arbitrate access to + * it in the data section. + */ + .pushsection .data + define_asm_spinlock \_name\()_errata_lock + \_name\()_errata_reported: + .word 0 + .popsection + + /* Place CPU string in rodata */ + .pushsection .rodata + \_name\()_cpu_str: + .asciz "\_name" + .popsection + .endif + + /* + * Weakly-bound, optional errata status printing function for CPUs of + * this class. + */ + .weak \_name\()_errata_report + .quad \_name\()_errata_report + +#ifdef IMAGE_BL31 + /* Pointers to errata lock and reported flag */ + .quad \_name\()_errata_lock + .quad \_name\()_errata_reported +#endif +#endif + +#if defined(IMAGE_BL31) && CRASH_REPORTING + .quad \_name\()_cpu_reg_dump +#endif + .endm + +#if REPORT_ERRATA + /* + * Print status of a CPU errata + * + * _chosen: + * Identifier indicating whether or not a CPU errata has been + * compiled in. + * _cpu: + * Name of the CPU + * _id: + * Errata identifier + * _rev_var: + * Register containing the combined value CPU revision and variant + * - typically the return value of cpu_get_rev_var + */ + .macro report_errata _chosen, _cpu, _id, _rev_var=x8 + /* Stash a string with errata ID */ + .pushsection .rodata + \_cpu\()_errata_\_id\()_str: + .asciz "\_id" + .popsection + + /* Check whether errata applies */ + mov x0, \_rev_var + bl check_errata_\_id + + .ifeq \_chosen + /* + * Errata workaround has not been compiled in. If the errata would have + * applied had it been compiled in, print its status as missing. + */ + cbz x0, 900f + mov x0, #ERRATA_MISSING + .endif +900: + adr x1, \_cpu\()_cpu_str + adr x2, \_cpu\()_errata_\_id\()_str + bl errata_print_msg + .endm +#endif + +#endif /* __CPU_MACROS_S__ */ diff --git a/fsbl/lib/cpu/aarch64/delay_timer.c b/fsbl/lib/cpu/aarch64/delay_timer.c new file mode 100644 index 000000000..a0e299671 --- /dev/null +++ b/fsbl/lib/cpu/aarch64/delay_timer.c @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include +#include +#include +#include + +#define SYS_COUNTER_FREQ_IN_US (SYS_COUNTER_FREQ_IN_SECOND / 1000000) + +static uint32_t get_timer_value(void) +{ + /* + * Generic delay timer implementation expects the timer to be a down + * counter. We apply bitwise NOT operator to the tick values returned + * by read_cntpct_el0() to simulate the down counter. The value is + * clipped from 64 to 32 bits. + */ + return (uint32_t)(~read_cntpct_el0()); +} + +void trig_simulation_timer(uint32_t usec) +{ + uint32_t total_delta = (usec * SYS_COUNTER_FREQ_IN_US); + + // Trig simulation bench to increse cntpct_el0 + mmio_write_32(REG_GP_REG2, total_delta); +} + +/*********************************************************** + * Delay for the given number of microseconds. The driver must + * be initialized before calling this function. + ***********************************************************/ +void udelay(uint32_t usec) +{ + uint32_t start, delta, total_delta; + + start = get_timer_value(); + + total_delta = (usec * SYS_COUNTER_FREQ_IN_US); + + // Trig simulation bench to increse cntpct_el0 + mmio_write_32(REG_GP_REG2, total_delta); + + do { + /* + * If the timer value wraps around, the subtraction will + * overflow and it will still give the correct result. + */ + delta = start - get_timer_value(); /* Decreasing counter */ + + } while (delta < total_delta); +} + +/*********************************************************** + * Delay for the given number of milliseconds. The driver must + * be initialized before calling this function. + ***********************************************************/ +void mdelay(uint32_t msec) +{ + udelay(msec * 1000); +} + +uint32_t get_timer(uint32_t base) +{ + if (base == 0) + return get_timer_value(); + else + return (base - get_timer_value()) / SYS_COUNTER_FREQ_IN_US / 1000; // ms +} + +uint32_t get_random_from_timer(uint32_t base) +{ + if (base == 0) + return get_timer_value(); + else + return (base - get_timer_value()) / SYS_COUNTER_FREQ_IN_US % 100000; +} + +void timer_init(void) +{ + write_cntfrq_el0(SYS_COUNTER_FREQ_IN_SECOND); +} + +uint32_t read_count_tick(void) +{ + return read_cntpct_el0() / SYS_COUNTER_FREQ_IN_US; +} diff --git a/fsbl/lib/cpu/aarch64/misc_helpers.S b/fsbl/lib/cpu/aarch64/misc_helpers.S new file mode 100644 index 000000000..9bce1da44 --- /dev/null +++ b/fsbl/lib/cpu/aarch64/misc_helpers.S @@ -0,0 +1,399 @@ +/* + * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include +#include +#include + + .globl eret + .globl smc + + .globl zero_normalmem + .globl zeromem + .globl memcpy16 + +func eret + eret +endfunc eret + + +func smc + smc #0 +endfunc smc + +/* ----------------------------------------------------------------------- + * void zero_normalmem(void *mem, unsigned int length); + * + * Initialise a region in normal memory to 0. This functions complies with the + * AAPCS and can be called from C code. + * + * NOTE: MMU must be enabled when using this function as it can only operate on + * normal memory. It is intended to be mainly used from C code when MMU + * is usually enabled. + * ----------------------------------------------------------------------- + */ +.equ zero_normalmem, zeromem_dczva + +/* ----------------------------------------------------------------------- + * void zeromem(void *mem, unsigned int length); + * + * Initialise a region of device memory to 0. This functions complies with the + * AAPCS and can be called from C code. + * + * NOTE: When data caches and MMU are enabled, zero_normalmem can usually be + * used instead for faster zeroing. + * + * ----------------------------------------------------------------------- + */ +func zeromem + /* x2 is the address past the last zeroed address */ + add x2, x0, x1 + /* + * Uses the fallback path that does not use DC ZVA instruction and + * therefore does not need enabled MMU + */ + b .Lzeromem_dczva_fallback_entry +endfunc zeromem + +/* ----------------------------------------------------------------------- + * void zeromem_dczva(void *mem, unsigned int length); + * + * Fill a region of normal memory of size "length" in bytes with null bytes. + * MMU must be enabled and the memory be of + * normal type. This is because this function internally uses the DC ZVA + * instruction, which generates an Alignment fault if used on any type of + * Device memory (see section D3.4.9 of the ARMv8 ARM, issue k). When the MMU + * is disabled, all memory behaves like Device-nGnRnE memory (see section + * D4.2.8), hence the requirement on the MMU being enabled. + * NOTE: The code assumes that the block size as defined in DCZID_EL0 + * register is at least 16 bytes. + * + * ----------------------------------------------------------------------- + */ +func zeromem_dczva + + /* + * The function consists of a series of loops that zero memory one byte + * at a time, 16 bytes at a time or using the DC ZVA instruction to + * zero aligned block of bytes, which is assumed to be more than 16. + * In the case where the DC ZVA instruction cannot be used or if the + * first 16 bytes loop would overflow, there is fallback path that does + * not use DC ZVA. + * Note: The fallback path is also used by the zeromem function that + * branches to it directly. + * + * +---------+ zeromem_dczva + * | entry | + * +----+----+ + * | + * v + * +---------+ + * | checks |>o-------+ (If any check fails, fallback) + * +----+----+ | + * | |---------------+ + * v | Fallback path | + * +------+------+ |---------------+ + * | 1 byte loop | | + * +------+------+ .Lzeromem_dczva_initial_1byte_aligned_end + * | | + * v | + * +-------+-------+ | + * | 16 bytes loop | | + * +-------+-------+ | + * | | + * v | + * +------+------+ .Lzeromem_dczva_blocksize_aligned + * | DC ZVA loop | | + * +------+------+ | + * +--------+ | | + * | | | | + * | v v | + * | +-------+-------+ .Lzeromem_dczva_final_16bytes_aligned + * | | 16 bytes loop | | + * | +-------+-------+ | + * | | | + * | v | + * | +------+------+ .Lzeromem_dczva_final_1byte_aligned + * | | 1 byte loop | | + * | +-------------+ | + * | | | + * | v | + * | +---+--+ | + * | | exit | | + * | +------+ | + * | | + * | +--------------+ +------------------+ zeromem + * | | +----------------| zeromem function | + * | | | +------------------+ + * | v v + * | +-------------+ .Lzeromem_dczva_fallback_entry + * | | 1 byte loop | + * | +------+------+ + * | | + * +-----------+ + */ + + /* + * Readable names for registers + * + * Registers x0, x1 and x2 are also set by zeromem which + * branches into the fallback path directly, so cursor, length and + * stop_address should not be retargeted to other registers. + */ + cursor .req x0 /* Start address and then current address */ + length .req x1 /* Length in bytes of the region to zero out */ + /* Reusing x1 as length is never used after block_mask is set */ + block_mask .req x1 /* Bitmask of the block size read in DCZID_EL0 */ + stop_address .req x2 /* Address past the last zeroed byte */ + block_size .req x3 /* Size of a block in bytes as read in DCZID_EL0 */ + tmp1 .req x4 + tmp2 .req x5 + +#if ENABLE_ASSERTIONS + /* + * Check for M bit (MMU enabled) of the current SCTLR_EL(1|3) + * register value and panic if the MMU is disabled. + */ +#if defined(IMAGE_BL1) || defined(IMAGE_BL31) + mrs tmp1, sctlr_el3 +#else + mrs tmp1, sctlr_el1 +#endif + + tst tmp1, #SCTLR_M_BIT +#endif /* ENABLE_ASSERTIONS */ + + /* stop_address is the address past the last to zero */ + add stop_address, cursor, length + + /* + * Get block_size = (log2() >> 2) (see encoding of + * dczid_el0 reg) + */ + mrs block_size, dczid_el0 + + /* + * Select the 4 lowest bits and convert the extracted log2() to + */ + ubfx block_size, block_size, #0, #4 + mov tmp2, #(1 << 2) + lsl block_size, tmp2, block_size + +#if ENABLE_ASSERTIONS + /* + * Assumes block size is at least 16 bytes to avoid manual realignment + * of the cursor at the end of the DCZVA loop. + */ + cmp block_size, #16 +#endif + /* + * Not worth doing all the setup for a region less than a block and + * protects against zeroing a whole block when the area to zero is + * smaller than that. Also, as it is assumed that the block size is at + * least 16 bytes, this also protects the initial aligning loops from + * trying to zero 16 bytes when length is less than 16. + */ + cmp length, block_size + b.lo .Lzeromem_dczva_fallback_entry + + /* + * Calculate the bitmask of the block alignment. It will never + * underflow as the block size is between 4 bytes and 2kB. + * block_mask = block_size - 1 + */ + sub block_mask, block_size, #1 + + /* + * length alias should not be used after this point unless it is + * defined as a register other than block_mask's. + */ + .unreq length + + /* + * If the start address is already aligned to zero block size, go + * straight to the cache zeroing loop. This is safe because at this + * point, the length cannot be smaller than a block size. + */ + tst cursor, block_mask + b.eq .Lzeromem_dczva_blocksize_aligned + + /* + * Calculate the first block-size-aligned address. It is assumed that + * the zero block size is at least 16 bytes. This address is the last + * address of this initial loop. + */ + orr tmp1, cursor, block_mask + add tmp1, tmp1, #1 + + /* + * If the addition overflows, skip the cache zeroing loops. This is + * quite unlikely however. + */ + cbz tmp1, .Lzeromem_dczva_fallback_entry + + /* + * If the first block-size-aligned address is past the last address, + * fallback to the simpler code. + */ + cmp tmp1, stop_address + b.hi .Lzeromem_dczva_fallback_entry + + /* + * If the start address is already aligned to 16 bytes, skip this loop. + * It is safe to do this because tmp1 (the stop address of the initial + * 16 bytes loop) will never be greater than the final stop address. + */ + tst cursor, #0xf + b.eq .Lzeromem_dczva_initial_1byte_aligned_end + + /* Calculate the next address aligned to 16 bytes */ + orr tmp2, cursor, #0xf + add tmp2, tmp2, #1 + /* If it overflows, fallback to the simple path (unlikely) */ + cbz tmp2, .Lzeromem_dczva_fallback_entry + /* + * Next aligned address cannot be after the stop address because the + * length cannot be smaller than 16 at this point. + */ + + /* First loop: zero byte per byte */ +1: + strb wzr, [cursor], #1 + cmp cursor, tmp2 + b.ne 1b +.Lzeromem_dczva_initial_1byte_aligned_end: + + /* + * Second loop: we need to zero 16 bytes at a time from cursor to tmp1 + * before being able to use the code that deals with block-size-aligned + * addresses. + */ + cmp cursor, tmp1 + b.hs 2f +1: + stp xzr, xzr, [cursor], #16 + cmp cursor, tmp1 + b.lo 1b +2: + + /* + * Third loop: zero a block at a time using DC ZVA cache block zeroing + * instruction. + */ +.Lzeromem_dczva_blocksize_aligned: + /* + * Calculate the last block-size-aligned address. If the result equals + * to the start address, the loop will exit immediately. + */ + bic tmp1, stop_address, block_mask + + cmp cursor, tmp1 + b.hs 2f +1: + /* Zero the block containing the cursor */ + dc zva, cursor + /* Increment the cursor by the size of a block */ + add cursor, cursor, block_size + cmp cursor, tmp1 + b.lo 1b +2: + + /* + * Fourth loop: zero 16 bytes at a time and then byte per byte the + * remaining area + */ +.Lzeromem_dczva_final_16bytes_aligned: + /* + * Calculate the last 16 bytes aligned address. It is assumed that the + * block size will never be smaller than 16 bytes so that the current + * cursor is aligned to at least 16 bytes boundary. + */ + bic tmp1, stop_address, #15 + + cmp cursor, tmp1 + b.hs 2f +1: + stp xzr, xzr, [cursor], #16 + cmp cursor, tmp1 + b.lo 1b +2: + + /* Fifth and final loop: zero byte per byte */ +.Lzeromem_dczva_final_1byte_aligned: + cmp cursor, stop_address + b.eq 2f +1: + strb wzr, [cursor], #1 + cmp cursor, stop_address + b.ne 1b +2: + ret + + /* Fallback for unaligned start addresses */ +.Lzeromem_dczva_fallback_entry: + /* + * If the start address is already aligned to 16 bytes, skip this loop. + */ + tst cursor, #0xf + b.eq .Lzeromem_dczva_final_16bytes_aligned + + /* Calculate the next address aligned to 16 bytes */ + orr tmp1, cursor, #15 + add tmp1, tmp1, #1 + /* If it overflows, fallback to byte per byte zeroing */ + cbz tmp1, .Lzeromem_dczva_final_1byte_aligned + /* If the next aligned address is after the stop address, fall back */ + cmp tmp1, stop_address + b.hs .Lzeromem_dczva_final_1byte_aligned + + /* Fallback entry loop: zero byte per byte */ +1: + strb wzr, [cursor], #1 + cmp cursor, tmp1 + b.ne 1b + + b .Lzeromem_dczva_final_16bytes_aligned + + .unreq cursor + /* + * length is already unreq'ed to reuse the register for another + * variable. + */ + .unreq stop_address + .unreq block_size + .unreq block_mask + .unreq tmp1 + .unreq tmp2 +endfunc zeromem_dczva + +/* -------------------------------------------------------------------------- + * void memcpy16(void *dest, const void *src, unsigned int length) + * + * Copy length bytes from memory area src to memory area dest. + * The memory areas should not overlap. + * Destination and source addresses must be 16-byte aligned. + * -------------------------------------------------------------------------- + */ +func memcpy16 +/* copy 16 bytes at a time */ +m_loop16: + cmp x2, #16 + b.lo m_loop1 + ldp x3, x4, [x1], #16 + stp x3, x4, [x0], #16 + sub x2, x2, #16 + b m_loop16 +/* copy byte per byte */ +m_loop1: + cbz x2, m_end + ldrb w3, [x1], #1 + strb w3, [x0], #1 + subs x2, x2, #1 + b.ne m_loop1 +m_end: + ret +endfunc memcpy16 diff --git a/fsbl/lib/cpu/riscv/bits.h b/fsbl/lib/cpu/riscv/bits.h new file mode 100644 index 000000000..e57890359 --- /dev/null +++ b/fsbl/lib/cpu/riscv/bits.h @@ -0,0 +1,35 @@ +#ifndef _RISCV_BITS_H +#define _RISCV_BITS_H + +#define likely(x) __builtin_expect((x), 1) +#define unlikely(x) __builtin_expect((x), 0) + +#define ROUNDUP(a, b) ((((a)-1)/(b)+1)*(b)) +#define ROUNDDOWN(a, b) ((a)/(b)*(b)) + +#define MAX(a, b) ((a) > (b) ? (a) : (b)) +#define MIN(a, b) ((a) < (b) ? (a) : (b)) +#define CLAMP(a, lo, hi) MIN(MAX(a, lo), hi) + +#define EXTRACT_FIELD(val, which) (((val) & (which)) / ((which) & ~((which)-1))) +#define INSERT_FIELD(val, which, fieldval) (((val) & ~(which)) | ((fieldval) * ((which) & ~((which)-1)))) + +#define STR(x) XSTR(x) +#define XSTR(x) #x + +#if __riscv_xlen == 64 +# define SLL32 sllw +# define STORE sd +# define LOAD ld +# define LWU lwu +# define LOG_REGBYTES 3 +#else +# define SLL32 sll +# define STORE sw +# define LOAD lw +# define LWU lw +# define LOG_REGBYTES 2 +#endif +#define REGBYTES (1 << LOG_REGBYTES) + +#endif diff --git a/fsbl/lib/cpu/riscv/bl1_entrypoint.S b/fsbl/lib/cpu/riscv/bl1_entrypoint.S new file mode 100644 index 000000000..dd85be946 --- /dev/null +++ b/fsbl/lib/cpu/riscv/bl1_entrypoint.S @@ -0,0 +1,110 @@ +#include "bits.h" +#include "csr.h" +#include +#include + + .globl bl1_entrypoint + .globl bl1_entrypoint_end + .globl bl1_entrypoint_rel + + /* ----------------------------------------------------- + * bl1_entrypoint() is the entry point into the trusted + * firmware code when a cpu is released from warm or + * cold reset. + * ----------------------------------------------------- + */ + .pushsection .entry, "ax" +bl1_entrypoint: + la x1, bl1_entrypoint_rel + jr x1 +bl1_entrypoint_end: + .popsection + + .option norvc + .section .text.init,"ax",@progbits + .globl bl1_entrypoint_rel +bl1_entrypoint_rel: + atf_state_set x28, x29, ATF_STATE_BL1_ENTRY_POINT + atf_err_set x28, x29, ATF_ERR_NONE + + li x1, 0 + li x2, 0 + li x3, 0 + li x4, 0 + li x5, 0 + li x6, 0 + li x7, 0 + li x8, 0 + li x9, 0 + li x10, 0 + li x11, 0 + li x12, 0 + li x13, 0 + li x14, 0 + li x15, 0 + li x16, 0 + li x17, 0 + li x18, 0 + li x19, 0 + li x20, 0 + li x21, 0 + li x22, 0 + li x23, 0 + li x24, 0 + li x25, 0 + li x26, 0 + li x27, 0 + li x28, 0 + li x29, 0 + li x30, 0 + li x31, 0 + + csrw mscratch, x0 + + # write mtvec and make sure it sticks + la t0, trap_vector + csrw mtvec, t0 + + # set mxstatus to init value + li x3, 0xc0638000 + csrw mxstatus, x3 + + # set plic_ctrl = 1 for linux plic + li x3, 0x701FFFFC # plic_base + 0x1FFFFC + li x4, 1 + sw x4 , 0(x3) + + // invalidate all memory for BTB,BHT,DCACHE,ICACHE + li x3, 0x30013 + csrs mcor, x3 + // enable ICACHE,DCACHE,BHT,BTB,RAS,WA + li x3, 0x7f + csrs mhcr, x3 + // enable data_cache_prefetch, amr + li x3, 0x610c + csrs mhint, x3 #mhint + + # enable fp + li x3, 0x1 << 13 + csrs mstatus, x3 + + la sp, __STACKS_END__ + + call bl1_early_platform_setup + + call bl1_main + j die + + .balign 4 +trap_vector: +die: + j panic_handler + j die + + .bss + .align RISCV_PGSHIFT +stacks: + .skip RISCV_PGSIZE + + .section .rodata + diff --git a/fsbl/lib/cpu/riscv/bl2_entrypoint.S b/fsbl/lib/cpu/riscv/bl2_entrypoint.S new file mode 100644 index 000000000..73443871e --- /dev/null +++ b/fsbl/lib/cpu/riscv/bl2_entrypoint.S @@ -0,0 +1,111 @@ +#include "bits.h" +#include "csr.h" +#include + + .option norvc + .section .text.init,"ax",@progbits + .globl bl2_entrypoint +bl2_entrypoint: + j bl2_entrypoint_real + .word 0 // resvered + .word 0 // BL2 MSID + .word 0 // BL2 version + .word 0 // + .word 0 + .word 0 + .word 0 + +bl2_entrypoint_real: + atf_state_set x28, x29, ATF_STATE_BL2_ENTRY_POINT + li x1, 0 + li x2, 0 + li x3, 0 + li x4, 0 + li x5, 0 + li x6, 0 + li x7, 0 + li x8, 0 + li x9, 0 + li x10, 0 + li x11, 0 + li x12, 0 + li x13, 0 + li x14, 0 + li x15, 0 + li x16, 0 + li x17, 0 + li x18, 0 + li x19, 0 + li x20, 0 + li x21, 0 + li x22, 0 + li x23, 0 + li x24, 0 + li x25, 0 + li x26, 0 + li x27, 0 + li x28, 0 + li x29, 0 + li x30, 0 + li x31, 0 + + csrw mscratch, x0 + + # write mtvec and make sure it sticks + la t0, trap_vector + csrw mtvec, t0 + + # set mxstatus to init value + li x3, 0xc0638000 + csrw mxstatus, x3 + + # set plic_ctrl = 1 + li x3, 0x701FFFFC # plic_base + 0x1FFFFC + li x4, 1 + sw x4 , 0(x3) + + # invalid I-cache + li x3, 0x33 + csrc mcor, x3 + li x3, 0x11 + csrs mcor, x3 + # enable I-cache + li x3, 0x1 + csrs mhcr, x3 + # invalid D-cache + li x3, 0x33 + csrc mcor, x3 + li x3, 0x12 + csrs mcor, x3 + # enable D-cache + li x3, 0x2 + csrs mhcr, x3 + + la sp, __STACKS_END__ + + la a3, __BSS_START__ + la a4, __BSS_END__ + sub a4, a4, a3 + +bss_clear: + sd x0, 0(a3) + addi a3, a3, 8 + addi a4, a4, -8 + bnez a4, bss_clear + + call bl2_main + j die + + .balign 4 +trap_vector: +die: + j panic_handler + j die + + .bss + .align RISCV_PGSHIFT +stacks: + .skip RISCV_PGSIZE + + .section .rodata + diff --git a/fsbl/lib/cpu/riscv/bl2_helper.c b/fsbl/lib/cpu/riscv/bl2_helper.c new file mode 100644 index 000000000..ad72cd87d --- /dev/null +++ b/fsbl/lib/cpu/riscv/bl2_helper.c @@ -0,0 +1,69 @@ +#include +#include +#include +#include + +struct fw_dynamic_info { + /** Info magic */ + unsigned long magic; + /** Info version */ + unsigned long version; + /** Next booting stage address */ + unsigned long next_addr; + /** Next booting stage mode */ + unsigned long next_mode; + /** Options for OpenSBI library */ + unsigned long options; + /** + * Preferred boot HART id + * + * It is possible that the previous booting stage uses same link + * address as the FW_DYNAMIC firmware. In this case, the relocation + * lottery mechanism can potentially overwrite the previous booting + * stage while other HARTs are still running in the previous booting + * stage leading to boot-time crash. To avoid this boot-time crash, + * the previous booting stage can specify last HART that will jump + * to the FW_DYNAMIC firmware as the preferred boot HART. + * + * To avoid specifying a preferred boot HART, the previous booting + * stage can set it to -1UL which will force the FW_DYNAMIC firmware + * to use the relocation lottery mechanism. + */ + unsigned long boot_hart; +} __packed; + +/** Expected value of info magic ('OSBI' ascii string in hex) */ +#define FW_DYNAMIC_INFO_MAGIC_VALUE 0x4942534f + +/** Maximum supported info version */ +#define FW_DYNAMIC_INFO_VERSION_MAX 0x2 + +/** Possible next mode values */ +#define FW_DYNAMIC_INFO_NEXT_MODE_U 0x0 +#define FW_DYNAMIC_INFO_NEXT_MODE_S 0x1 +#define FW_DYNAMIC_INFO_NEXT_MODE_M 0x3 + +static struct fw_dynamic_info fw_dynamic_info; + +void jump_to_monitor(uintptr_t monitor_entry, uintptr_t next_addr) +{ + void (*entry)(unsigned long arg0, unsigned long arg1, struct fw_dynamic_info *) = (void *)monitor_entry; + + unsigned long arg0 = 0, arg1 = OPENSBI_FDT_ADDR; + + fw_dynamic_info.magic = FW_DYNAMIC_INFO_MAGIC_VALUE; + fw_dynamic_info.next_addr = next_addr; + fw_dynamic_info.next_mode = FW_DYNAMIC_INFO_NEXT_MODE_S; + fw_dynamic_info.boot_hart = -1; + + NOTICE("OPENSBI: next_addr=0x%lx arg1=0x%lx", next_addr, arg1); + + flush_dcache_range((uintptr_t)&fw_dynamic_info, sizeof(struct fw_dynamic_info)); + + time_records->fsbl_exit = read_time_ms(); + entry(arg0, arg1, &fw_dynamic_info); +} + +void jump_to_loader_2nd(uintptr_t loader_2nd_entry) +{ +} diff --git a/fsbl/lib/cpu/riscv/cache.c b/fsbl/lib/cpu/riscv/cache.c new file mode 100644 index 000000000..54828f833 --- /dev/null +++ b/fsbl/lib/cpu/riscv/cache.c @@ -0,0 +1,70 @@ +#include +#include + +//typedef uint64_t phys_addr_t; +//typedef uintptr_t size_t; + +#define L1_CACHE_BYTES 64 +#define ALIGN(x, a) (((x) + (a) - 1) & ~((a) - 1)) + +/* + * dcache.ipa rs1 (invalidate) + * | 31 - 25 | 24 - 20 | 19 - 15 | 14 - 12 | 11 - 7 | 6 - 0 | + * 0000001 01010 rs1 000 00000 0001011 + * + * dcache.cpa rs1 (clean) + * | 31 - 25 | 24 - 20 | 19 - 15 | 14 - 12 | 11 - 7 | 6 - 0 | + * 0000001 01001 rs1 000 00000 0001011 + * + * dcache.cipa rs1 (clean then invalidate) + * | 31 - 25 | 24 - 20 | 19 - 15 | 14 - 12 | 11 - 7 | 6 - 0 | + * 0000001 01011 rs1 000 00000 0001011 + * + * sync.s + * | 31 - 25 | 24 - 20 | 19 - 15 | 14 - 12 | 11 - 7 | 6 - 0 | + * 0000000 11001 00000 000 00000 0001011 + */ +#define DCACHE_IPA_A0 ".long 0x02a5000b" +#define DCACHE_CPA_A0 ".long 0x0295000b" +#define DCACHE_CIPA_A0 ".long 0x02b5000b" + +#define SYNC_S ".long 0x0190000b" + +#define CACHE_OP_RANGE(OP, start, size) \ + register unsigned long i asm("a0") = start & ~(L1_CACHE_BYTES - 1); \ + for (; i < ALIGN(start + size, L1_CACHE_BYTES); i += L1_CACHE_BYTES) \ + __asm__ __volatile__(OP); \ + __asm__ __volatile__(SYNC_S) + +//void c900_cache_invalidate(phys_addr_t start, size_t size) +void inv_dcache_range(uintptr_t start, size_t size) +{ + CACHE_OP_RANGE(DCACHE_IPA_A0, start, size); +} + +//void c900_cache_clean(phys_addr_t start, size_t size) +void clean_dcache_range(uintptr_t start, size_t size) +{ + CACHE_OP_RANGE(DCACHE_CPA_A0, start, size); +} + +//void c900_cache_flush(phys_addr_t start, size_t size) +void flush_dcache_range(uintptr_t start, size_t size) +{ + CACHE_OP_RANGE(DCACHE_CIPA_A0, start, size); +} + +void enable_dcache(void) +{ + asm volatile( + "csrs mhcr, %0;" ::"rI"(0x2) + ); +} + +void disable_dcache(void) +{ + asm volatile( + "csrc mhcr, %0;" ::"rI"(0x2) + ); +} + diff --git a/fsbl/lib/cpu/riscv/cpu.mk b/fsbl/lib/cpu/riscv/cpu.mk new file mode 100644 index 000000000..bffa5f82a --- /dev/null +++ b/fsbl/lib/cpu/riscv/cpu.mk @@ -0,0 +1,46 @@ +#include lib/cpu/${BOOT_CPU}/cpu-ops.mk + +ASFLAGS +=\ + $(CPPFLAGS) \ + -DRISCV \ + -D__ASSEMBLY__ \ + -march=rv64imafdcvxthead -mstrict-align \ + -mcmodel=medany \ + -mabi=lp64d \ + -ffreestanding \ + -Wa,--fatal-warnings + +TF_CFLAGS += \ + $(CPPFLAGS) \ + -DRISCV \ + -march=rv64imafdcvxthead \ + -mcmodel=medany \ + -mabi=lp64d \ + -ffreestanding -fno-builtin -Wall -std=gnu99 \ + -Os -ffunction-sections -fdata-sections \ + -fno-delete-null-pointer-checks + +TF_LDFLAGS += \ + --fatal-warnings -Os \ + --gc-sections \ + ${TF_LDFLAGS_aarch64} + +CPU_INCLUDES := \ + -Iinclude/cpu/${BOOT_CPU} \ + +CPU_SOURCES := \ + lib/cpu/${BOOT_CPU}/cpu_helper.c \ + lib/cpu/${BOOT_CPU}/misc_helpers.c \ + lib/cpu/${BOOT_CPU}/cache.c \ + lib/cpu/${BOOT_CPU}/delay_timer.c \ + lib/cpu/${BOOT_CPU}/bl2_helper.c \ + plat/${CHIP_ARCH}/uart/uart_dw.c + + +BL1_CPU_SOURCES := \ + lib/cpu/${BOOT_CPU}/bl1_entrypoint.S \ +# lib/cpu/${BOOT_CPU}/bl1_exceptions.S + +BL2_CPU_SOURCES := \ + lib/cpu/${BOOT_CPU}/bl2_entrypoint.S \ +# lib/cpu/${BOOT_CPU}/bl2_exceptions.S diff --git a/fsbl/lib/cpu/riscv/cpu_helper.c b/fsbl/lib/cpu/riscv/cpu_helper.c new file mode 100644 index 000000000..7e093fa0b --- /dev/null +++ b/fsbl/lib/cpu/riscv/cpu_helper.c @@ -0,0 +1,27 @@ +#include +#include +#include +#include +#include +#include +#include "csr.h" + +#include + +void sync_cache(void) +{ + asm volatile( + "icache.iall\n" + "sync.i\n" + : + : + : "memory"); +} + +void cpu_report_exception(unsigned int exception_type) +{ +} + +void enable_cache(struct cache_map *map) +{ +} diff --git a/fsbl/lib/cpu/riscv/csr.h b/fsbl/lib/cpu/riscv/csr.h new file mode 100644 index 000000000..6f05d3912 --- /dev/null +++ b/fsbl/lib/cpu/riscv/csr.h @@ -0,0 +1,1468 @@ +// See LICENSE for license details. + +#ifndef RISCV_CSR_ENCODING_H +#define RISCV_CSR_ENCODING_H + +#define MSTATUS_UIE 0x00000001 +#define MSTATUS_SIE 0x00000002 +#define MSTATUS_HIE 0x00000004 +#define MSTATUS_MIE 0x00000008 +#define MSTATUS_UPIE 0x00000010 +#define MSTATUS_SPIE 0x00000020 +#define MSTATUS_HPIE 0x00000040 +#define MSTATUS_MPIE 0x00000080 +#define MSTATUS_SPP 0x00000100 +#define MSTATUS_HPP 0x00000600 +#define MSTATUS_MPP 0x00001800 +#define MSTATUS_FS 0x00006000 +#define MSTATUS_XS 0x00018000 +#define MSTATUS_MPRV 0x00020000 +#define MSTATUS_SUM 0x00040000 +#define MSTATUS_MXR 0x00080000 +#define MSTATUS_TVM 0x00100000 +#define MSTATUS_TW 0x00200000 +#define MSTATUS_TSR 0x00400000 +#define MSTATUS32_SD 0x80000000 +#define MSTATUS64_SD 0x8000000000000000 + +#define SSTATUS_UIE 0x00000001 +#define SSTATUS_SIE 0x00000002 +#define SSTATUS_UPIE 0x00000010 +#define SSTATUS_SPIE 0x00000020 +#define SSTATUS_SPP 0x00000100 +#define SSTATUS_FS 0x00006000 +#define SSTATUS_XS 0x00018000 +#define SSTATUS_SUM 0x00040000 +#define SSTATUS_MXR 0x00080000 +#define SSTATUS32_SD 0x80000000 +#define SSTATUS64_SD 0x8000000000000000 + +#define DCSR_XDEBUGVER (3U<<30) +#define DCSR_NDRESET (1<<29) +#define DCSR_FULLRESET (1<<28) +#define DCSR_EBREAKM (1<<15) +#define DCSR_EBREAKH (1<<14) +#define DCSR_EBREAKS (1<<13) +#define DCSR_EBREAKU (1<<12) +#define DCSR_STOPCYCLE (1<<10) +#define DCSR_STOPTIME (1<<9) +#define DCSR_CAUSE (7<<6) +#define DCSR_DEBUGINT (1<<5) +#define DCSR_HALT (1<<3) +#define DCSR_STEP (1<<2) +#define DCSR_PRV (3<<0) + +#define DCSR_CAUSE_NONE 0 +#define DCSR_CAUSE_SWBP 1 +#define DCSR_CAUSE_HWBP 2 +#define DCSR_CAUSE_DEBUGINT 3 +#define DCSR_CAUSE_STEP 4 +#define DCSR_CAUSE_HALT 5 + +#define MCONTROL_TYPE(xlen) (0xfULL<<((xlen)-4)) +#define MCONTROL_DMODE(xlen) (1ULL<<((xlen)-5)) +#define MCONTROL_MASKMAX(xlen) (0x3fULL<<((xlen)-11)) + +#define MCONTROL_SELECT (1<<19) +#define MCONTROL_TIMING (1<<18) +#define MCONTROL_ACTION (0x3f<<12) +#define MCONTROL_CHAIN (1<<11) +#define MCONTROL_MATCH (0xf<<7) +#define MCONTROL_M (1<<6) +#define MCONTROL_H (1<<5) +#define MCONTROL_S (1<<4) +#define MCONTROL_U (1<<3) +#define MCONTROL_EXECUTE (1<<2) +#define MCONTROL_STORE (1<<1) +#define MCONTROL_LOAD (1<<0) + +#define MCONTROL_TYPE_NONE 0 +#define MCONTROL_TYPE_MATCH 2 + +#define MCONTROL_ACTION_DEBUG_EXCEPTION 0 +#define MCONTROL_ACTION_DEBUG_MODE 1 +#define MCONTROL_ACTION_TRACE_START 2 +#define MCONTROL_ACTION_TRACE_STOP 3 +#define MCONTROL_ACTION_TRACE_EMIT 4 + +#define MCONTROL_MATCH_EQUAL 0 +#define MCONTROL_MATCH_NAPOT 1 +#define MCONTROL_MATCH_GE 2 +#define MCONTROL_MATCH_LT 3 +#define MCONTROL_MATCH_MASK_LOW 4 +#define MCONTROL_MATCH_MASK_HIGH 5 + +#define MIP_SSIE (1 << IRQ_S_SOFT) +#define MIP_HSIE (1 << IRQ_H_SOFT) +#define MIP_MSIE (1 << IRQ_M_SOFT) +#define MIP_STIE (1 << IRQ_S_TIMER) +#define MIP_HTIE (1 << IRQ_H_TIMER) +#define MIP_MTIE (1 << IRQ_M_TIMER) +#define MIP_SEIE (1 << IRQ_S_EXT) +#define MIP_HEIE (1 << IRQ_H_EXT) +#define MIP_MEIE (1 << IRQ_M_EXT) + +#define SIP_SSIP MIP_SSIP +#define SIP_STIP MIP_STIP + +#define PRV_U 0 +#define PRV_S 1 +#define PRV_H 2 +#define PRV_M 3 + +#define SPTBR32_MODE 0x80000000 +#define SPTBR32_ASID 0x7FC00000 +#define SPTBR32_PPN 0x003FFFFF +#define SPTBR64_MODE 0xF000000000000000 +#define SPTBR64_ASID 0x0FFFF00000000000 +#define SPTBR64_PPN 0x00000FFFFFFFFFFF + +#define SPTBR_MODE_OFF 0 +#define SPTBR_MODE_SV32 1 +#define SPTBR_MODE_SV39 8 +#define SPTBR_MODE_SV48 9 +#define SPTBR_MODE_SV57 10 +#define SPTBR_MODE_SV64 11 + +#define PMP_R 0x01 +#define PMP_W 0x02 +#define PMP_X 0x04 +#define PMP_A 0x18 +#define PMP_L 0x80 +#define PMP_SHIFT 2 + +#define PMP_TOR 0x08 +#define PMP_NA4 0x10 +#define PMP_NAPOT 0x18 + +#define IRQ_S_SOFT 1 +#define IRQ_H_SOFT 2 +#define IRQ_M_SOFT 3 +#define IRQ_S_TIMER 5 +#define IRQ_H_TIMER 6 +#define IRQ_M_TIMER 7 +#define IRQ_S_EXT 9 +#define IRQ_H_EXT 10 +#define IRQ_M_EXT 11 +#define IRQ_COP 12 +#define IRQ_HOST 13 + +#define DEFAULT_RSTVEC 0x00001000 +#define CLINT_SIZE 0x000c0000 +#define EXT_IO_BASE 0x40000000 + +// page table entry (PTE) fields +#define PTE_V 0x001 // Valid +#define PTE_R 0x002 // Read +#define PTE_W 0x004 // Write +#define PTE_X 0x008 // Execute +#define PTE_U 0x010 // User +#define PTE_G 0x020 // Global +#define PTE_A 0x040 // Accessed +#define PTE_D 0x080 // Dirty +#define PTE_SOFT 0x300 // Reserved for Software + +#define PTE_PPN_SHIFT 10 + +#define PTE_TABLE(PTE) (((PTE) & (PTE_V | PTE_R | PTE_W | PTE_X)) == PTE_V) + +#ifdef __riscv + +# define MAX_HARTS 1 + +#if __riscv_xlen == 64 +# define MSTATUS_SD MSTATUS64_SD +# define SSTATUS_SD SSTATUS64_SD +# define RISCV_PGLEVEL_BITS 9 +# define SPTBR_MODE SPTBR64_MODE +#else +# define MSTATUS_SD MSTATUS32_SD +# define SSTATUS_SD SSTATUS32_SD +# define RISCV_PGLEVEL_BITS 10 +# define SPTBR_MODE SPTBR32_MODE +#endif +#define RISCV_PGSHIFT 12 +#define RISCV_PGSIZE (1 << RISCV_PGSHIFT) + +#ifndef __ASSEMBLER__ + +#ifdef __GNUC__ + +#define read_csr(reg) ({ unsigned long __tmp; \ + asm volatile ("csrr %0, " #reg : "=r"(__tmp)); \ + __tmp; }) + +#define write_csr(reg, val) ({ \ + asm volatile ("csrw " #reg ", %0" :: "rK"(val)); }) + +#define swap_csr(reg, val) ({ unsigned long __tmp; \ + asm volatile ("csrrw %0, " #reg ", %1" : "=r"(__tmp) : "rK"(val)); \ + __tmp; }) + +#define set_csr(reg, bit) ({ unsigned long __tmp; \ + asm volatile ("csrrs %0, " #reg ", %1" : "=r"(__tmp) : "rK"(bit)); \ + __tmp; }) + +#define clear_csr(reg, bit) ({ unsigned long __tmp; \ + asm volatile ("csrrc %0, " #reg ", %1" : "=r"(__tmp) : "rK"(bit)); \ + __tmp; }) + +#define rdtime() read_csr(time) +#define rdcycle() read_csr(cycle) +#define rdinstret() read_csr(instret) + +#endif + +#endif + +#endif + +#endif +/* Automatically generated by parse-opcodes. */ +#ifndef RISCV_ENCODING_H +#define RISCV_ENCODING_H +#define MATCH_BEQ 0x63 +#define MASK_BEQ 0x707f +#define MATCH_BNE 0x1063 +#define MASK_BNE 0x707f +#define MATCH_BLT 0x4063 +#define MASK_BLT 0x707f +#define MATCH_BGE 0x5063 +#define MASK_BGE 0x707f +#define MATCH_BLTU 0x6063 +#define MASK_BLTU 0x707f +#define MATCH_BGEU 0x7063 +#define MASK_BGEU 0x707f +#define MATCH_JALR 0x67 +#define MASK_JALR 0x707f +#define MATCH_JAL 0x6f +#define MASK_JAL 0x7f +#define MATCH_LUI 0x37 +#define MASK_LUI 0x7f +#define MATCH_AUIPC 0x17 +#define MASK_AUIPC 0x7f +#define MATCH_ADDI 0x13 +#define MASK_ADDI 0x707f +#define MATCH_SLLI 0x1013 +#define MASK_SLLI 0xfc00707f +#define MATCH_SLTI 0x2013 +#define MASK_SLTI 0x707f +#define MATCH_SLTIU 0x3013 +#define MASK_SLTIU 0x707f +#define MATCH_XORI 0x4013 +#define MASK_XORI 0x707f +#define MATCH_SRLI 0x5013 +#define MASK_SRLI 0xfc00707f +#define MATCH_SRAI 0x40005013 +#define MASK_SRAI 0xfc00707f +#define MATCH_ORI 0x6013 +#define MASK_ORI 0x707f +#define MATCH_ANDI 0x7013 +#define MASK_ANDI 0x707f +#define MATCH_ADD 0x33 +#define MASK_ADD 0xfe00707f +#define MATCH_SUB 0x40000033 +#define MASK_SUB 0xfe00707f +#define MATCH_SLL 0x1033 +#define MASK_SLL 0xfe00707f +#define MATCH_SLT 0x2033 +#define MASK_SLT 0xfe00707f +#define MATCH_SLTU 0x3033 +#define MASK_SLTU 0xfe00707f +#define MATCH_XOR 0x4033 +#define MASK_XOR 0xfe00707f +#define MATCH_SRL 0x5033 +#define MASK_SRL 0xfe00707f +#define MATCH_SRA 0x40005033 +#define MASK_SRA 0xfe00707f +#define MATCH_OR 0x6033 +#define MASK_OR 0xfe00707f +#define MATCH_AND 0x7033 +#define MASK_AND 0xfe00707f +#define MATCH_ADDIW 0x1b +#define MASK_ADDIW 0x707f +#define MATCH_SLLIW 0x101b +#define MASK_SLLIW 0xfe00707f +#define MATCH_SRLIW 0x501b +#define MASK_SRLIW 0xfe00707f +#define MATCH_SRAIW 0x4000501b +#define MASK_SRAIW 0xfe00707f +#define MATCH_ADDW 0x3b +#define MASK_ADDW 0xfe00707f +#define MATCH_SUBW 0x4000003b +#define MASK_SUBW 0xfe00707f +#define MATCH_SLLW 0x103b +#define MASK_SLLW 0xfe00707f +#define MATCH_SRLW 0x503b +#define MASK_SRLW 0xfe00707f +#define MATCH_SRAW 0x4000503b +#define MASK_SRAW 0xfe00707f +#define MATCH_LB 0x3 +#define MASK_LB 0x707f +#define MATCH_LH 0x1003 +#define MASK_LH 0x707f +#define MATCH_LW 0x2003 +#define MASK_LW 0x707f +#define MATCH_LD 0x3003 +#define MASK_LD 0x707f +#define MATCH_LBU 0x4003 +#define MASK_LBU 0x707f +#define MATCH_LHU 0x5003 +#define MASK_LHU 0x707f +#define MATCH_LWU 0x6003 +#define MASK_LWU 0x707f +#define MATCH_SB 0x23 +#define MASK_SB 0x707f +#define MATCH_SH 0x1023 +#define MASK_SH 0x707f +#define MATCH_SW 0x2023 +#define MASK_SW 0x707f +#define MATCH_SD 0x3023 +#define MASK_SD 0x707f +#define MATCH_FENCE 0xf +#define MASK_FENCE 0x707f +#define MATCH_FENCE_I 0x100f +#define MASK_FENCE_I 0x707f +#define MATCH_MUL 0x2000033 +#define MASK_MUL 0xfe00707f +#define MATCH_MULH 0x2001033 +#define MASK_MULH 0xfe00707f +#define MATCH_MULHSU 0x2002033 +#define MASK_MULHSU 0xfe00707f +#define MATCH_MULHU 0x2003033 +#define MASK_MULHU 0xfe00707f +#define MATCH_DIV 0x2004033 +#define MASK_DIV 0xfe00707f +#define MATCH_DIVU 0x2005033 +#define MASK_DIVU 0xfe00707f +#define MATCH_REM 0x2006033 +#define MASK_REM 0xfe00707f +#define MATCH_REMU 0x2007033 +#define MASK_REMU 0xfe00707f +#define MATCH_MULW 0x200003b +#define MASK_MULW 0xfe00707f +#define MATCH_DIVW 0x200403b +#define MASK_DIVW 0xfe00707f +#define MATCH_DIVUW 0x200503b +#define MASK_DIVUW 0xfe00707f +#define MATCH_REMW 0x200603b +#define MASK_REMW 0xfe00707f +#define MATCH_REMUW 0x200703b +#define MASK_REMUW 0xfe00707f +#define MATCH_AMOADD_W 0x202f +#define MASK_AMOADD_W 0xf800707f +#define MATCH_AMOXOR_W 0x2000202f +#define MASK_AMOXOR_W 0xf800707f +#define MATCH_AMOOR_W 0x4000202f +#define MASK_AMOOR_W 0xf800707f +#define MATCH_AMOAND_W 0x6000202f +#define MASK_AMOAND_W 0xf800707f +#define MATCH_AMOMIN_W 0x8000202f +#define MASK_AMOMIN_W 0xf800707f +#define MATCH_AMOMAX_W 0xa000202f +#define MASK_AMOMAX_W 0xf800707f +#define MATCH_AMOMINU_W 0xc000202f +#define MASK_AMOMINU_W 0xf800707f +#define MATCH_AMOMAXU_W 0xe000202f +#define MASK_AMOMAXU_W 0xf800707f +#define MATCH_AMOSWAP_W 0x800202f +#define MASK_AMOSWAP_W 0xf800707f +#define MATCH_LR_W 0x1000202f +#define MASK_LR_W 0xf9f0707f +#define MATCH_SC_W 0x1800202f +#define MASK_SC_W 0xf800707f +#define MATCH_AMOADD_D 0x302f +#define MASK_AMOADD_D 0xf800707f +#define MATCH_AMOXOR_D 0x2000302f +#define MASK_AMOXOR_D 0xf800707f +#define MATCH_AMOOR_D 0x4000302f +#define MASK_AMOOR_D 0xf800707f +#define MATCH_AMOAND_D 0x6000302f +#define MASK_AMOAND_D 0xf800707f +#define MATCH_AMOMIN_D 0x8000302f +#define MASK_AMOMIN_D 0xf800707f +#define MATCH_AMOMAX_D 0xa000302f +#define MASK_AMOMAX_D 0xf800707f +#define MATCH_AMOMINU_D 0xc000302f +#define MASK_AMOMINU_D 0xf800707f +#define MATCH_AMOMAXU_D 0xe000302f +#define MASK_AMOMAXU_D 0xf800707f +#define MATCH_AMOSWAP_D 0x800302f +#define MASK_AMOSWAP_D 0xf800707f +#define MATCH_LR_D 0x1000302f +#define MASK_LR_D 0xf9f0707f +#define MATCH_SC_D 0x1800302f +#define MASK_SC_D 0xf800707f +#define MATCH_ECALL 0x73 +#define MASK_ECALL 0xffffffff +#define MATCH_EBREAK 0x100073 +#define MASK_EBREAK 0xffffffff +#define MATCH_URET 0x200073 +#define MASK_URET 0xffffffff +#define MATCH_SRET 0x10200073 +#define MASK_SRET 0xffffffff +#define MATCH_MRET 0x30200073 +#define MASK_MRET 0xffffffff +#define MATCH_DRET 0x7b200073 +#define MASK_DRET 0xffffffff +#define MATCH_SFENCE_VMA 0x12000073 +#define MASK_SFENCE_VMA 0xfe007fff +#define MATCH_WFI 0x10500073 +#define MASK_WFI 0xffffffff +#define MATCH_CSRRW 0x1073 +#define MASK_CSRRW 0x707f +#define MATCH_CSRRS 0x2073 +#define MASK_CSRRS 0x707f +#define MATCH_CSRRC 0x3073 +#define MASK_CSRRC 0x707f +#define MATCH_CSRRWI 0x5073 +#define MASK_CSRRWI 0x707f +#define MATCH_CSRRSI 0x6073 +#define MASK_CSRRSI 0x707f +#define MATCH_CSRRCI 0x7073 +#define MASK_CSRRCI 0x707f +#define MATCH_FADD_S 0x53 +#define MASK_FADD_S 0xfe00007f +#define MATCH_FSUB_S 0x8000053 +#define MASK_FSUB_S 0xfe00007f +#define MATCH_FMUL_S 0x10000053 +#define MASK_FMUL_S 0xfe00007f +#define MATCH_FDIV_S 0x18000053 +#define MASK_FDIV_S 0xfe00007f +#define MATCH_FSGNJ_S 0x20000053 +#define MASK_FSGNJ_S 0xfe00707f +#define MATCH_FSGNJN_S 0x20001053 +#define MASK_FSGNJN_S 0xfe00707f +#define MATCH_FSGNJX_S 0x20002053 +#define MASK_FSGNJX_S 0xfe00707f +#define MATCH_FMIN_S 0x28000053 +#define MASK_FMIN_S 0xfe00707f +#define MATCH_FMAX_S 0x28001053 +#define MASK_FMAX_S 0xfe00707f +#define MATCH_FSQRT_S 0x58000053 +#define MASK_FSQRT_S 0xfff0007f +#define MATCH_FADD_D 0x2000053 +#define MASK_FADD_D 0xfe00007f +#define MATCH_FSUB_D 0xa000053 +#define MASK_FSUB_D 0xfe00007f +#define MATCH_FMUL_D 0x12000053 +#define MASK_FMUL_D 0xfe00007f +#define MATCH_FDIV_D 0x1a000053 +#define MASK_FDIV_D 0xfe00007f +#define MATCH_FSGNJ_D 0x22000053 +#define MASK_FSGNJ_D 0xfe00707f +#define MATCH_FSGNJN_D 0x22001053 +#define MASK_FSGNJN_D 0xfe00707f +#define MATCH_FSGNJX_D 0x22002053 +#define MASK_FSGNJX_D 0xfe00707f +#define MATCH_FMIN_D 0x2a000053 +#define MASK_FMIN_D 0xfe00707f +#define MATCH_FMAX_D 0x2a001053 +#define MASK_FMAX_D 0xfe00707f +#define MATCH_FCVT_S_D 0x40100053 +#define MASK_FCVT_S_D 0xfff0007f +#define MATCH_FCVT_D_S 0x42000053 +#define MASK_FCVT_D_S 0xfff0007f +#define MATCH_FSQRT_D 0x5a000053 +#define MASK_FSQRT_D 0xfff0007f +#define MATCH_FADD_Q 0x6000053 +#define MASK_FADD_Q 0xfe00007f +#define MATCH_FSUB_Q 0xe000053 +#define MASK_FSUB_Q 0xfe00007f +#define MATCH_FMUL_Q 0x16000053 +#define MASK_FMUL_Q 0xfe00007f +#define MATCH_FDIV_Q 0x1e000053 +#define MASK_FDIV_Q 0xfe00007f +#define MATCH_FSGNJ_Q 0x26000053 +#define MASK_FSGNJ_Q 0xfe00707f +#define MATCH_FSGNJN_Q 0x26001053 +#define MASK_FSGNJN_Q 0xfe00707f +#define MATCH_FSGNJX_Q 0x26002053 +#define MASK_FSGNJX_Q 0xfe00707f +#define MATCH_FMIN_Q 0x2e000053 +#define MASK_FMIN_Q 0xfe00707f +#define MATCH_FMAX_Q 0x2e001053 +#define MASK_FMAX_Q 0xfe00707f +#define MATCH_FCVT_S_Q 0x40300053 +#define MASK_FCVT_S_Q 0xfff0007f +#define MATCH_FCVT_Q_S 0x46000053 +#define MASK_FCVT_Q_S 0xfff0007f +#define MATCH_FCVT_D_Q 0x42300053 +#define MASK_FCVT_D_Q 0xfff0007f +#define MATCH_FCVT_Q_D 0x46100053 +#define MASK_FCVT_Q_D 0xfff0007f +#define MATCH_FSQRT_Q 0x5e000053 +#define MASK_FSQRT_Q 0xfff0007f +#define MATCH_FLE_S 0xa0000053 +#define MASK_FLE_S 0xfe00707f +#define MATCH_FLT_S 0xa0001053 +#define MASK_FLT_S 0xfe00707f +#define MATCH_FEQ_S 0xa0002053 +#define MASK_FEQ_S 0xfe00707f +#define MATCH_FLE_D 0xa2000053 +#define MASK_FLE_D 0xfe00707f +#define MATCH_FLT_D 0xa2001053 +#define MASK_FLT_D 0xfe00707f +#define MATCH_FEQ_D 0xa2002053 +#define MASK_FEQ_D 0xfe00707f +#define MATCH_FLE_Q 0xa6000053 +#define MASK_FLE_Q 0xfe00707f +#define MATCH_FLT_Q 0xa6001053 +#define MASK_FLT_Q 0xfe00707f +#define MATCH_FEQ_Q 0xa6002053 +#define MASK_FEQ_Q 0xfe00707f +#define MATCH_FCVT_W_S 0xc0000053 +#define MASK_FCVT_W_S 0xfff0007f +#define MATCH_FCVT_WU_S 0xc0100053 +#define MASK_FCVT_WU_S 0xfff0007f +#define MATCH_FCVT_L_S 0xc0200053 +#define MASK_FCVT_L_S 0xfff0007f +#define MATCH_FCVT_LU_S 0xc0300053 +#define MASK_FCVT_LU_S 0xfff0007f +#define MATCH_FMV_X_W 0xe0000053 +#define MASK_FMV_X_W 0xfff0707f +#define MATCH_FCLASS_S 0xe0001053 +#define MASK_FCLASS_S 0xfff0707f +#define MATCH_FCVT_W_D 0xc2000053 +#define MASK_FCVT_W_D 0xfff0007f +#define MATCH_FCVT_WU_D 0xc2100053 +#define MASK_FCVT_WU_D 0xfff0007f +#define MATCH_FCVT_L_D 0xc2200053 +#define MASK_FCVT_L_D 0xfff0007f +#define MATCH_FCVT_LU_D 0xc2300053 +#define MASK_FCVT_LU_D 0xfff0007f +#define MATCH_FMV_X_D 0xe2000053 +#define MASK_FMV_X_D 0xfff0707f +#define MATCH_FCLASS_D 0xe2001053 +#define MASK_FCLASS_D 0xfff0707f +#define MATCH_FCVT_W_Q 0xc6000053 +#define MASK_FCVT_W_Q 0xfff0007f +#define MATCH_FCVT_WU_Q 0xc6100053 +#define MASK_FCVT_WU_Q 0xfff0007f +#define MATCH_FCVT_L_Q 0xc6200053 +#define MASK_FCVT_L_Q 0xfff0007f +#define MATCH_FCVT_LU_Q 0xc6300053 +#define MASK_FCVT_LU_Q 0xfff0007f +#define MATCH_FMV_X_Q 0xe6000053 +#define MASK_FMV_X_Q 0xfff0707f +#define MATCH_FCLASS_Q 0xe6001053 +#define MASK_FCLASS_Q 0xfff0707f +#define MATCH_FCVT_S_W 0xd0000053 +#define MASK_FCVT_S_W 0xfff0007f +#define MATCH_FCVT_S_WU 0xd0100053 +#define MASK_FCVT_S_WU 0xfff0007f +#define MATCH_FCVT_S_L 0xd0200053 +#define MASK_FCVT_S_L 0xfff0007f +#define MATCH_FCVT_S_LU 0xd0300053 +#define MASK_FCVT_S_LU 0xfff0007f +#define MATCH_FMV_W_X 0xf0000053 +#define MASK_FMV_W_X 0xfff0707f +#define MATCH_FCVT_D_W 0xd2000053 +#define MASK_FCVT_D_W 0xfff0007f +#define MATCH_FCVT_D_WU 0xd2100053 +#define MASK_FCVT_D_WU 0xfff0007f +#define MATCH_FCVT_D_L 0xd2200053 +#define MASK_FCVT_D_L 0xfff0007f +#define MATCH_FCVT_D_LU 0xd2300053 +#define MASK_FCVT_D_LU 0xfff0007f +#define MATCH_FMV_D_X 0xf2000053 +#define MASK_FMV_D_X 0xfff0707f +#define MATCH_FCVT_Q_W 0xd6000053 +#define MASK_FCVT_Q_W 0xfff0007f +#define MATCH_FCVT_Q_WU 0xd6100053 +#define MASK_FCVT_Q_WU 0xfff0007f +#define MATCH_FCVT_Q_L 0xd6200053 +#define MASK_FCVT_Q_L 0xfff0007f +#define MATCH_FCVT_Q_LU 0xd6300053 +#define MASK_FCVT_Q_LU 0xfff0007f +#define MATCH_FMV_Q_X 0xf6000053 +#define MASK_FMV_Q_X 0xfff0707f +#define MATCH_FLW 0x2007 +#define MASK_FLW 0x707f +#define MATCH_FLD 0x3007 +#define MASK_FLD 0x707f +#define MATCH_FLQ 0x4007 +#define MASK_FLQ 0x707f +#define MATCH_FSW 0x2027 +#define MASK_FSW 0x707f +#define MATCH_FSD 0x3027 +#define MASK_FSD 0x707f +#define MATCH_FSQ 0x4027 +#define MASK_FSQ 0x707f +#define MATCH_FMADD_S 0x43 +#define MASK_FMADD_S 0x600007f +#define MATCH_FMSUB_S 0x47 +#define MASK_FMSUB_S 0x600007f +#define MATCH_FNMSUB_S 0x4b +#define MASK_FNMSUB_S 0x600007f +#define MATCH_FNMADD_S 0x4f +#define MASK_FNMADD_S 0x600007f +#define MATCH_FMADD_D 0x2000043 +#define MASK_FMADD_D 0x600007f +#define MATCH_FMSUB_D 0x2000047 +#define MASK_FMSUB_D 0x600007f +#define MATCH_FNMSUB_D 0x200004b +#define MASK_FNMSUB_D 0x600007f +#define MATCH_FNMADD_D 0x200004f +#define MASK_FNMADD_D 0x600007f +#define MATCH_FMADD_Q 0x6000043 +#define MASK_FMADD_Q 0x600007f +#define MATCH_FMSUB_Q 0x6000047 +#define MASK_FMSUB_Q 0x600007f +#define MATCH_FNMSUB_Q 0x600004b +#define MASK_FNMSUB_Q 0x600007f +#define MATCH_FNMADD_Q 0x600004f +#define MASK_FNMADD_Q 0x600007f +#define MATCH_C_NOP 0x1 +#define MASK_C_NOP 0xffff +#define MATCH_C_ADDI16SP 0x6101 +#define MASK_C_ADDI16SP 0xef83 +#define MATCH_C_JR 0x8002 +#define MASK_C_JR 0xf07f +#define MATCH_C_JALR 0x9002 +#define MASK_C_JALR 0xf07f +#define MATCH_C_EBREAK 0x9002 +#define MASK_C_EBREAK 0xffff +#define MATCH_C_LD 0x6000 +#define MASK_C_LD 0xe003 +#define MATCH_C_SD 0xe000 +#define MASK_C_SD 0xe003 +#define MATCH_C_ADDIW 0x2001 +#define MASK_C_ADDIW 0xe003 +#define MATCH_C_LDSP 0x6002 +#define MASK_C_LDSP 0xe003 +#define MATCH_C_SDSP 0xe002 +#define MASK_C_SDSP 0xe003 +#define MATCH_C_ADDI4SPN 0x0 +#define MASK_C_ADDI4SPN 0xe003 +#define MATCH_C_FLD 0x2000 +#define MASK_C_FLD 0xe003 +#define MATCH_C_LW 0x4000 +#define MASK_C_LW 0xe003 +#define MATCH_C_FLW 0x6000 +#define MASK_C_FLW 0xe003 +#define MATCH_C_FSD 0xa000 +#define MASK_C_FSD 0xe003 +#define MATCH_C_SW 0xc000 +#define MASK_C_SW 0xe003 +#define MATCH_C_FSW 0xe000 +#define MASK_C_FSW 0xe003 +#define MATCH_C_ADDI 0x1 +#define MASK_C_ADDI 0xe003 +#define MATCH_C_JAL 0x2001 +#define MASK_C_JAL 0xe003 +#define MATCH_C_LI 0x4001 +#define MASK_C_LI 0xe003 +#define MATCH_C_LUI 0x6001 +#define MASK_C_LUI 0xe003 +#define MATCH_C_SRLI 0x8001 +#define MASK_C_SRLI 0xec03 +#define MATCH_C_SRAI 0x8401 +#define MASK_C_SRAI 0xec03 +#define MATCH_C_ANDI 0x8801 +#define MASK_C_ANDI 0xec03 +#define MATCH_C_SUB 0x8c01 +#define MASK_C_SUB 0xfc63 +#define MATCH_C_XOR 0x8c21 +#define MASK_C_XOR 0xfc63 +#define MATCH_C_OR 0x8c41 +#define MASK_C_OR 0xfc63 +#define MATCH_C_AND 0x8c61 +#define MASK_C_AND 0xfc63 +#define MATCH_C_SUBW 0x9c01 +#define MASK_C_SUBW 0xfc63 +#define MATCH_C_ADDW 0x9c21 +#define MASK_C_ADDW 0xfc63 +#define MATCH_C_J 0xa001 +#define MASK_C_J 0xe003 +#define MATCH_C_BEQZ 0xc001 +#define MASK_C_BEQZ 0xe003 +#define MATCH_C_BNEZ 0xe001 +#define MASK_C_BNEZ 0xe003 +#define MATCH_C_SLLI 0x2 +#define MASK_C_SLLI 0xe003 +#define MATCH_C_FLDSP 0x2002 +#define MASK_C_FLDSP 0xe003 +#define MATCH_C_LWSP 0x4002 +#define MASK_C_LWSP 0xe003 +#define MATCH_C_FLWSP 0x6002 +#define MASK_C_FLWSP 0xe003 +#define MATCH_C_MV 0x8002 +#define MASK_C_MV 0xf003 +#define MATCH_C_ADD 0x9002 +#define MASK_C_ADD 0xf003 +#define MATCH_C_FSDSP 0xa002 +#define MASK_C_FSDSP 0xe003 +#define MATCH_C_SWSP 0xc002 +#define MASK_C_SWSP 0xe003 +#define MATCH_C_FSWSP 0xe002 +#define MASK_C_FSWSP 0xe003 +#define MATCH_CUSTOM0 0xb +#define MASK_CUSTOM0 0x707f +#define MATCH_CUSTOM0_RS1 0x200b +#define MASK_CUSTOM0_RS1 0x707f +#define MATCH_CUSTOM0_RS1_RS2 0x300b +#define MASK_CUSTOM0_RS1_RS2 0x707f +#define MATCH_CUSTOM0_RD 0x400b +#define MASK_CUSTOM0_RD 0x707f +#define MATCH_CUSTOM0_RD_RS1 0x600b +#define MASK_CUSTOM0_RD_RS1 0x707f +#define MATCH_CUSTOM0_RD_RS1_RS2 0x700b +#define MASK_CUSTOM0_RD_RS1_RS2 0x707f +#define MATCH_CUSTOM1 0x2b +#define MASK_CUSTOM1 0x707f +#define MATCH_CUSTOM1_RS1 0x202b +#define MASK_CUSTOM1_RS1 0x707f +#define MATCH_CUSTOM1_RS1_RS2 0x302b +#define MASK_CUSTOM1_RS1_RS2 0x707f +#define MATCH_CUSTOM1_RD 0x402b +#define MASK_CUSTOM1_RD 0x707f +#define MATCH_CUSTOM1_RD_RS1 0x602b +#define MASK_CUSTOM1_RD_RS1 0x707f +#define MATCH_CUSTOM1_RD_RS1_RS2 0x702b +#define MASK_CUSTOM1_RD_RS1_RS2 0x707f +#define MATCH_CUSTOM2 0x5b +#define MASK_CUSTOM2 0x707f +#define MATCH_CUSTOM2_RS1 0x205b +#define MASK_CUSTOM2_RS1 0x707f +#define MATCH_CUSTOM2_RS1_RS2 0x305b +#define MASK_CUSTOM2_RS1_RS2 0x707f +#define MATCH_CUSTOM2_RD 0x405b +#define MASK_CUSTOM2_RD 0x707f +#define MATCH_CUSTOM2_RD_RS1 0x605b +#define MASK_CUSTOM2_RD_RS1 0x707f +#define MATCH_CUSTOM2_RD_RS1_RS2 0x705b +#define MASK_CUSTOM2_RD_RS1_RS2 0x707f +#define MATCH_CUSTOM3 0x7b +#define MASK_CUSTOM3 0x707f +#define MATCH_CUSTOM3_RS1 0x207b +#define MASK_CUSTOM3_RS1 0x707f +#define MATCH_CUSTOM3_RS1_RS2 0x307b +#define MASK_CUSTOM3_RS1_RS2 0x707f +#define MATCH_CUSTOM3_RD 0x407b +#define MASK_CUSTOM3_RD 0x707f +#define MATCH_CUSTOM3_RD_RS1 0x607b +#define MASK_CUSTOM3_RD_RS1 0x707f +#define MATCH_CUSTOM3_RD_RS1_RS2 0x707b +#define MASK_CUSTOM3_RD_RS1_RS2 0x707f +#define CSR_FFLAGS 0x1 +#define CSR_FRM 0x2 +#define CSR_FCSR 0x3 +#define CSR_CYCLE 0xc00 +#define CSR_TIME 0xc01 +#define CSR_INSTRET 0xc02 +#define CSR_HPMCOUNTER3 0xc03 +#define CSR_HPMCOUNTER4 0xc04 +#define CSR_HPMCOUNTER5 0xc05 +#define CSR_HPMCOUNTER6 0xc06 +#define CSR_HPMCOUNTER7 0xc07 +#define CSR_HPMCOUNTER8 0xc08 +#define CSR_HPMCOUNTER9 0xc09 +#define CSR_HPMCOUNTER10 0xc0a +#define CSR_HPMCOUNTER11 0xc0b +#define CSR_HPMCOUNTER12 0xc0c +#define CSR_HPMCOUNTER13 0xc0d +#define CSR_HPMCOUNTER14 0xc0e +#define CSR_HPMCOUNTER15 0xc0f +#define CSR_HPMCOUNTER16 0xc10 +#define CSR_HPMCOUNTER17 0xc11 +#define CSR_HPMCOUNTER18 0xc12 +#define CSR_HPMCOUNTER19 0xc13 +#define CSR_HPMCOUNTER20 0xc14 +#define CSR_HPMCOUNTER21 0xc15 +#define CSR_HPMCOUNTER22 0xc16 +#define CSR_HPMCOUNTER23 0xc17 +#define CSR_HPMCOUNTER24 0xc18 +#define CSR_HPMCOUNTER25 0xc19 +#define CSR_HPMCOUNTER26 0xc1a +#define CSR_HPMCOUNTER27 0xc1b +#define CSR_HPMCOUNTER28 0xc1c +#define CSR_HPMCOUNTER29 0xc1d +#define CSR_HPMCOUNTER30 0xc1e +#define CSR_HPMCOUNTER31 0xc1f +#define CSR_SSTATUS 0x100 +#define CSR_SIE 0x104 +#define CSR_STVEC 0x105 +#define CSR_SCOUNTEREN 0x106 +#define CSR_SSCRATCH 0x140 +#define CSR_SEPC 0x141 +#define CSR_SCAUSE 0x142 +#define CSR_SBADADDR 0x143 +#define CSR_SIP 0x144 +#define CSR_SPTBR 0x180 +#define CSR_MSTATUS 0x300 +#define CSR_MISA 0x301 +#define CSR_MEDELEG 0x302 +#define CSR_MIDELEG 0x303 +#define CSR_MIE 0x304 +#define CSR_MTVEC 0x305 +#define CSR_MCOUNTEREN 0x306 +#define CSR_MSCRATCH 0x340 +#define CSR_MEPC 0x341 +#define CSR_MCAUSE 0x342 +#define CSR_MBADADDR 0x343 +#define CSR_MIP 0x344 +#define CSR_PMPCFG0 0x3a0 +#define CSR_PMPCFG1 0x3a1 +#define CSR_PMPCFG2 0x3a2 +#define CSR_PMPCFG3 0x3a3 +#define CSR_PMPADDR0 0x3b0 +#define CSR_PMPADDR1 0x3b1 +#define CSR_PMPADDR2 0x3b2 +#define CSR_PMPADDR3 0x3b3 +#define CSR_PMPADDR4 0x3b4 +#define CSR_PMPADDR5 0x3b5 +#define CSR_PMPADDR6 0x3b6 +#define CSR_PMPADDR7 0x3b7 +#define CSR_PMPADDR8 0x3b8 +#define CSR_PMPADDR9 0x3b9 +#define CSR_PMPADDR10 0x3ba +#define CSR_PMPADDR11 0x3bb +#define CSR_PMPADDR12 0x3bc +#define CSR_PMPADDR13 0x3bd +#define CSR_PMPADDR14 0x3be +#define CSR_PMPADDR15 0x3bf +#define CSR_TSELECT 0x7a0 +#define CSR_TDATA1 0x7a1 +#define CSR_TDATA2 0x7a2 +#define CSR_TDATA3 0x7a3 +#define CSR_DCSR 0x7b0 +#define CSR_DPC 0x7b1 +#define CSR_DSCRATCH 0x7b2 +#define CSR_MCYCLE 0xb00 +#define CSR_MINSTRET 0xb02 +#define CSR_MHPMCOUNTER3 0xb03 +#define CSR_MHPMCOUNTER4 0xb04 +#define CSR_MHPMCOUNTER5 0xb05 +#define CSR_MHPMCOUNTER6 0xb06 +#define CSR_MHPMCOUNTER7 0xb07 +#define CSR_MHPMCOUNTER8 0xb08 +#define CSR_MHPMCOUNTER9 0xb09 +#define CSR_MHPMCOUNTER10 0xb0a +#define CSR_MHPMCOUNTER11 0xb0b +#define CSR_MHPMCOUNTER12 0xb0c +#define CSR_MHPMCOUNTER13 0xb0d +#define CSR_MHPMCOUNTER14 0xb0e +#define CSR_MHPMCOUNTER15 0xb0f +#define CSR_MHPMCOUNTER16 0xb10 +#define CSR_MHPMCOUNTER17 0xb11 +#define CSR_MHPMCOUNTER18 0xb12 +#define CSR_MHPMCOUNTER19 0xb13 +#define CSR_MHPMCOUNTER20 0xb14 +#define CSR_MHPMCOUNTER21 0xb15 +#define CSR_MHPMCOUNTER22 0xb16 +#define CSR_MHPMCOUNTER23 0xb17 +#define CSR_MHPMCOUNTER24 0xb18 +#define CSR_MHPMCOUNTER25 0xb19 +#define CSR_MHPMCOUNTER26 0xb1a +#define CSR_MHPMCOUNTER27 0xb1b +#define CSR_MHPMCOUNTER28 0xb1c +#define CSR_MHPMCOUNTER29 0xb1d +#define CSR_MHPMCOUNTER30 0xb1e +#define CSR_MHPMCOUNTER31 0xb1f +#define CSR_MHPMEVENT3 0x323 +#define CSR_MHPMEVENT4 0x324 +#define CSR_MHPMEVENT5 0x325 +#define CSR_MHPMEVENT6 0x326 +#define CSR_MHPMEVENT7 0x327 +#define CSR_MHPMEVENT8 0x328 +#define CSR_MHPMEVENT9 0x329 +#define CSR_MHPMEVENT10 0x32a +#define CSR_MHPMEVENT11 0x32b +#define CSR_MHPMEVENT12 0x32c +#define CSR_MHPMEVENT13 0x32d +#define CSR_MHPMEVENT14 0x32e +#define CSR_MHPMEVENT15 0x32f +#define CSR_MHPMEVENT16 0x330 +#define CSR_MHPMEVENT17 0x331 +#define CSR_MHPMEVENT18 0x332 +#define CSR_MHPMEVENT19 0x333 +#define CSR_MHPMEVENT20 0x334 +#define CSR_MHPMEVENT21 0x335 +#define CSR_MHPMEVENT22 0x336 +#define CSR_MHPMEVENT23 0x337 +#define CSR_MHPMEVENT24 0x338 +#define CSR_MHPMEVENT25 0x339 +#define CSR_MHPMEVENT26 0x33a +#define CSR_MHPMEVENT27 0x33b +#define CSR_MHPMEVENT28 0x33c +#define CSR_MHPMEVENT29 0x33d +#define CSR_MHPMEVENT30 0x33e +#define CSR_MHPMEVENT31 0x33f +#define CSR_MVENDORID 0xf11 +#define CSR_MARCHID 0xf12 +#define CSR_MIMPID 0xf13 +#define CSR_MHARTID 0xf14 +#define CSR_CYCLEH 0xc80 +#define CSR_TIMEH 0xc81 +#define CSR_INSTRETH 0xc82 +#define CSR_HPMCOUNTER3H 0xc83 +#define CSR_HPMCOUNTER4H 0xc84 +#define CSR_HPMCOUNTER5H 0xc85 +#define CSR_HPMCOUNTER6H 0xc86 +#define CSR_HPMCOUNTER7H 0xc87 +#define CSR_HPMCOUNTER8H 0xc88 +#define CSR_HPMCOUNTER9H 0xc89 +#define CSR_HPMCOUNTER10H 0xc8a +#define CSR_HPMCOUNTER11H 0xc8b +#define CSR_HPMCOUNTER12H 0xc8c +#define CSR_HPMCOUNTER13H 0xc8d +#define CSR_HPMCOUNTER14H 0xc8e +#define CSR_HPMCOUNTER15H 0xc8f +#define CSR_HPMCOUNTER16H 0xc90 +#define CSR_HPMCOUNTER17H 0xc91 +#define CSR_HPMCOUNTER18H 0xc92 +#define CSR_HPMCOUNTER19H 0xc93 +#define CSR_HPMCOUNTER20H 0xc94 +#define CSR_HPMCOUNTER21H 0xc95 +#define CSR_HPMCOUNTER22H 0xc96 +#define CSR_HPMCOUNTER23H 0xc97 +#define CSR_HPMCOUNTER24H 0xc98 +#define CSR_HPMCOUNTER25H 0xc99 +#define CSR_HPMCOUNTER26H 0xc9a +#define CSR_HPMCOUNTER27H 0xc9b +#define CSR_HPMCOUNTER28H 0xc9c +#define CSR_HPMCOUNTER29H 0xc9d +#define CSR_HPMCOUNTER30H 0xc9e +#define CSR_HPMCOUNTER31H 0xc9f +#define CSR_MCYCLEH 0xb80 +#define CSR_MINSTRETH 0xb82 +#define CSR_MHPMCOUNTER3H 0xb83 +#define CSR_MHPMCOUNTER4H 0xb84 +#define CSR_MHPMCOUNTER5H 0xb85 +#define CSR_MHPMCOUNTER6H 0xb86 +#define CSR_MHPMCOUNTER7H 0xb87 +#define CSR_MHPMCOUNTER8H 0xb88 +#define CSR_MHPMCOUNTER9H 0xb89 +#define CSR_MHPMCOUNTER10H 0xb8a +#define CSR_MHPMCOUNTER11H 0xb8b +#define CSR_MHPMCOUNTER12H 0xb8c +#define CSR_MHPMCOUNTER13H 0xb8d +#define CSR_MHPMCOUNTER14H 0xb8e +#define CSR_MHPMCOUNTER15H 0xb8f +#define CSR_MHPMCOUNTER16H 0xb90 +#define CSR_MHPMCOUNTER17H 0xb91 +#define CSR_MHPMCOUNTER18H 0xb92 +#define CSR_MHPMCOUNTER19H 0xb93 +#define CSR_MHPMCOUNTER20H 0xb94 +#define CSR_MHPMCOUNTER21H 0xb95 +#define CSR_MHPMCOUNTER22H 0xb96 +#define CSR_MHPMCOUNTER23H 0xb97 +#define CSR_MHPMCOUNTER24H 0xb98 +#define CSR_MHPMCOUNTER25H 0xb99 +#define CSR_MHPMCOUNTER26H 0xb9a +#define CSR_MHPMCOUNTER27H 0xb9b +#define CSR_MHPMCOUNTER28H 0xb9c +#define CSR_MHPMCOUNTER29H 0xb9d +#define CSR_MHPMCOUNTER30H 0xb9e +#define CSR_MHPMCOUNTER31H 0xb9f +#define CAUSE_MISALIGNED_FETCH 0x0 +#define CAUSE_FETCH_ACCESS 0x1 +#define CAUSE_ILLEGAL_INSTRUCTION 0x2 +#define CAUSE_BREAKPOINT 0x3 +#define CAUSE_MISALIGNED_LOAD 0x4 +#define CAUSE_LOAD_ACCESS 0x5 +#define CAUSE_MISALIGNED_STORE 0x6 +#define CAUSE_STORE_ACCESS 0x7 +#define CAUSE_USER_ECALL 0x8 +#define CAUSE_SUPERVISOR_ECALL 0x9 +#define CAUSE_HYPERVISOR_ECALL 0xa +#define CAUSE_MACHINE_ECALL 0xb +#define CAUSE_FETCH_PAGE_FAULT 0xc +#define CAUSE_LOAD_PAGE_FAULT 0xd +#define CAUSE_STORE_PAGE_FAULT 0xf +#endif +#ifdef DECLARE_INSN +DECLARE_INSN(beq, MATCH_BEQ, MASK_BEQ) +DECLARE_INSN(bne, MATCH_BNE, MASK_BNE) +DECLARE_INSN(blt, MATCH_BLT, MASK_BLT) +DECLARE_INSN(bge, MATCH_BGE, MASK_BGE) +DECLARE_INSN(bltu, MATCH_BLTU, MASK_BLTU) +DECLARE_INSN(bgeu, MATCH_BGEU, MASK_BGEU) +DECLARE_INSN(jalr, MATCH_JALR, MASK_JALR) +DECLARE_INSN(jal, MATCH_JAL, MASK_JAL) +DECLARE_INSN(lui, MATCH_LUI, MASK_LUI) +DECLARE_INSN(auipc, MATCH_AUIPC, MASK_AUIPC) +DECLARE_INSN(addi, MATCH_ADDI, MASK_ADDI) +DECLARE_INSN(slli, MATCH_SLLI, MASK_SLLI) +DECLARE_INSN(slti, MATCH_SLTI, MASK_SLTI) +DECLARE_INSN(sltiu, MATCH_SLTIU, MASK_SLTIU) +DECLARE_INSN(xori, MATCH_XORI, MASK_XORI) +DECLARE_INSN(srli, MATCH_SRLI, MASK_SRLI) +DECLARE_INSN(srai, MATCH_SRAI, MASK_SRAI) +DECLARE_INSN(ori, MATCH_ORI, MASK_ORI) +DECLARE_INSN(andi, MATCH_ANDI, MASK_ANDI) +DECLARE_INSN(add, MATCH_ADD, MASK_ADD) +DECLARE_INSN(sub, MATCH_SUB, MASK_SUB) +DECLARE_INSN(sll, MATCH_SLL, MASK_SLL) +DECLARE_INSN(slt, MATCH_SLT, MASK_SLT) +DECLARE_INSN(sltu, MATCH_SLTU, MASK_SLTU) +DECLARE_INSN(xor, MATCH_XOR, MASK_XOR) +DECLARE_INSN(srl, MATCH_SRL, MASK_SRL) +DECLARE_INSN(sra, MATCH_SRA, MASK_SRA) +DECLARE_INSN(or, MATCH_OR, MASK_OR) +DECLARE_INSN(and, MATCH_AND, MASK_AND) +DECLARE_INSN(addiw, MATCH_ADDIW, MASK_ADDIW) +DECLARE_INSN(slliw, MATCH_SLLIW, MASK_SLLIW) +DECLARE_INSN(srliw, MATCH_SRLIW, MASK_SRLIW) +DECLARE_INSN(sraiw, MATCH_SRAIW, MASK_SRAIW) +DECLARE_INSN(addw, MATCH_ADDW, MASK_ADDW) +DECLARE_INSN(subw, MATCH_SUBW, MASK_SUBW) +DECLARE_INSN(sllw, MATCH_SLLW, MASK_SLLW) +DECLARE_INSN(srlw, MATCH_SRLW, MASK_SRLW) +DECLARE_INSN(sraw, MATCH_SRAW, MASK_SRAW) +DECLARE_INSN(lb, MATCH_LB, MASK_LB) +DECLARE_INSN(lh, MATCH_LH, MASK_LH) +DECLARE_INSN(lw, MATCH_LW, MASK_LW) +DECLARE_INSN(ld, MATCH_LD, MASK_LD) +DECLARE_INSN(lbu, MATCH_LBU, MASK_LBU) +DECLARE_INSN(lhu, MATCH_LHU, MASK_LHU) +DECLARE_INSN(lwu, MATCH_LWU, MASK_LWU) +DECLARE_INSN(sb, MATCH_SB, MASK_SB) +DECLARE_INSN(sh, MATCH_SH, MASK_SH) +DECLARE_INSN(sw, MATCH_SW, MASK_SW) +DECLARE_INSN(sd, MATCH_SD, MASK_SD) +DECLARE_INSN(fence, MATCH_FENCE, MASK_FENCE) +DECLARE_INSN(fence_i, MATCH_FENCE_I, MASK_FENCE_I) +DECLARE_INSN(mul, MATCH_MUL, MASK_MUL) +DECLARE_INSN(mulh, MATCH_MULH, MASK_MULH) +DECLARE_INSN(mulhsu, MATCH_MULHSU, MASK_MULHSU) +DECLARE_INSN(mulhu, MATCH_MULHU, MASK_MULHU) +DECLARE_INSN(div, MATCH_DIV, MASK_DIV) +DECLARE_INSN(divu, MATCH_DIVU, MASK_DIVU) +DECLARE_INSN(rem, MATCH_REM, MASK_REM) +DECLARE_INSN(remu, MATCH_REMU, MASK_REMU) +DECLARE_INSN(mulw, MATCH_MULW, MASK_MULW) +DECLARE_INSN(divw, MATCH_DIVW, MASK_DIVW) +DECLARE_INSN(divuw, MATCH_DIVUW, MASK_DIVUW) +DECLARE_INSN(remw, MATCH_REMW, MASK_REMW) +DECLARE_INSN(remuw, MATCH_REMUW, MASK_REMUW) +DECLARE_INSN(amoadd_w, MATCH_AMOADD_W, MASK_AMOADD_W) +DECLARE_INSN(amoxor_w, MATCH_AMOXOR_W, MASK_AMOXOR_W) +DECLARE_INSN(amoor_w, MATCH_AMOOR_W, MASK_AMOOR_W) +DECLARE_INSN(amoand_w, MATCH_AMOAND_W, MASK_AMOAND_W) +DECLARE_INSN(amomin_w, MATCH_AMOMIN_W, MASK_AMOMIN_W) +DECLARE_INSN(amomax_w, MATCH_AMOMAX_W, MASK_AMOMAX_W) +DECLARE_INSN(amominu_w, MATCH_AMOMINU_W, MASK_AMOMINU_W) +DECLARE_INSN(amomaxu_w, MATCH_AMOMAXU_W, MASK_AMOMAXU_W) +DECLARE_INSN(amoswap_w, MATCH_AMOSWAP_W, MASK_AMOSWAP_W) +DECLARE_INSN(lr_w, MATCH_LR_W, MASK_LR_W) +DECLARE_INSN(sc_w, MATCH_SC_W, MASK_SC_W) +DECLARE_INSN(amoadd_d, MATCH_AMOADD_D, MASK_AMOADD_D) +DECLARE_INSN(amoxor_d, MATCH_AMOXOR_D, MASK_AMOXOR_D) +DECLARE_INSN(amoor_d, MATCH_AMOOR_D, MASK_AMOOR_D) +DECLARE_INSN(amoand_d, MATCH_AMOAND_D, MASK_AMOAND_D) +DECLARE_INSN(amomin_d, MATCH_AMOMIN_D, MASK_AMOMIN_D) +DECLARE_INSN(amomax_d, MATCH_AMOMAX_D, MASK_AMOMAX_D) +DECLARE_INSN(amominu_d, MATCH_AMOMINU_D, MASK_AMOMINU_D) +DECLARE_INSN(amomaxu_d, MATCH_AMOMAXU_D, MASK_AMOMAXU_D) +DECLARE_INSN(amoswap_d, MATCH_AMOSWAP_D, MASK_AMOSWAP_D) +DECLARE_INSN(lr_d, MATCH_LR_D, MASK_LR_D) +DECLARE_INSN(sc_d, MATCH_SC_D, MASK_SC_D) +DECLARE_INSN(ecall, MATCH_ECALL, MASK_ECALL) +DECLARE_INSN(ebreak, MATCH_EBREAK, MASK_EBREAK) +DECLARE_INSN(uret, MATCH_URET, MASK_URET) +DECLARE_INSN(sret, MATCH_SRET, MASK_SRET) +DECLARE_INSN(mret, MATCH_MRET, MASK_MRET) +DECLARE_INSN(dret, MATCH_DRET, MASK_DRET) +DECLARE_INSN(sfence_vma, MATCH_SFENCE_VMA, MASK_SFENCE_VMA) +DECLARE_INSN(wfi, MATCH_WFI, MASK_WFI) +DECLARE_INSN(csrrw, MATCH_CSRRW, MASK_CSRRW) +DECLARE_INSN(csrrs, MATCH_CSRRS, MASK_CSRRS) +DECLARE_INSN(csrrc, MATCH_CSRRC, MASK_CSRRC) +DECLARE_INSN(csrrwi, MATCH_CSRRWI, MASK_CSRRWI) +DECLARE_INSN(csrrsi, MATCH_CSRRSI, MASK_CSRRSI) +DECLARE_INSN(csrrci, MATCH_CSRRCI, MASK_CSRRCI) +DECLARE_INSN(fadd_s, MATCH_FADD_S, MASK_FADD_S) +DECLARE_INSN(fsub_s, MATCH_FSUB_S, MASK_FSUB_S) +DECLARE_INSN(fmul_s, MATCH_FMUL_S, MASK_FMUL_S) +DECLARE_INSN(fdiv_s, MATCH_FDIV_S, MASK_FDIV_S) +DECLARE_INSN(fsgnj_s, MATCH_FSGNJ_S, MASK_FSGNJ_S) +DECLARE_INSN(fsgnjn_s, MATCH_FSGNJN_S, MASK_FSGNJN_S) +DECLARE_INSN(fsgnjx_s, MATCH_FSGNJX_S, MASK_FSGNJX_S) +DECLARE_INSN(fmin_s, MATCH_FMIN_S, MASK_FMIN_S) +DECLARE_INSN(fmax_s, MATCH_FMAX_S, MASK_FMAX_S) +DECLARE_INSN(fsqrt_s, MATCH_FSQRT_S, MASK_FSQRT_S) +DECLARE_INSN(fadd_d, MATCH_FADD_D, MASK_FADD_D) +DECLARE_INSN(fsub_d, MATCH_FSUB_D, MASK_FSUB_D) +DECLARE_INSN(fmul_d, MATCH_FMUL_D, MASK_FMUL_D) +DECLARE_INSN(fdiv_d, MATCH_FDIV_D, MASK_FDIV_D) +DECLARE_INSN(fsgnj_d, MATCH_FSGNJ_D, MASK_FSGNJ_D) +DECLARE_INSN(fsgnjn_d, MATCH_FSGNJN_D, MASK_FSGNJN_D) +DECLARE_INSN(fsgnjx_d, MATCH_FSGNJX_D, MASK_FSGNJX_D) +DECLARE_INSN(fmin_d, MATCH_FMIN_D, MASK_FMIN_D) +DECLARE_INSN(fmax_d, MATCH_FMAX_D, MASK_FMAX_D) +DECLARE_INSN(fcvt_s_d, MATCH_FCVT_S_D, MASK_FCVT_S_D) +DECLARE_INSN(fcvt_d_s, MATCH_FCVT_D_S, MASK_FCVT_D_S) +DECLARE_INSN(fsqrt_d, MATCH_FSQRT_D, MASK_FSQRT_D) +DECLARE_INSN(fadd_q, MATCH_FADD_Q, MASK_FADD_Q) +DECLARE_INSN(fsub_q, MATCH_FSUB_Q, MASK_FSUB_Q) +DECLARE_INSN(fmul_q, MATCH_FMUL_Q, MASK_FMUL_Q) +DECLARE_INSN(fdiv_q, MATCH_FDIV_Q, MASK_FDIV_Q) +DECLARE_INSN(fsgnj_q, MATCH_FSGNJ_Q, MASK_FSGNJ_Q) +DECLARE_INSN(fsgnjn_q, MATCH_FSGNJN_Q, MASK_FSGNJN_Q) +DECLARE_INSN(fsgnjx_q, MATCH_FSGNJX_Q, MASK_FSGNJX_Q) +DECLARE_INSN(fmin_q, MATCH_FMIN_Q, MASK_FMIN_Q) +DECLARE_INSN(fmax_q, MATCH_FMAX_Q, MASK_FMAX_Q) +DECLARE_INSN(fcvt_s_q, MATCH_FCVT_S_Q, MASK_FCVT_S_Q) +DECLARE_INSN(fcvt_q_s, MATCH_FCVT_Q_S, MASK_FCVT_Q_S) +DECLARE_INSN(fcvt_d_q, MATCH_FCVT_D_Q, MASK_FCVT_D_Q) +DECLARE_INSN(fcvt_q_d, MATCH_FCVT_Q_D, MASK_FCVT_Q_D) +DECLARE_INSN(fsqrt_q, MATCH_FSQRT_Q, MASK_FSQRT_Q) +DECLARE_INSN(fle_s, MATCH_FLE_S, MASK_FLE_S) +DECLARE_INSN(flt_s, MATCH_FLT_S, MASK_FLT_S) +DECLARE_INSN(feq_s, MATCH_FEQ_S, MASK_FEQ_S) +DECLARE_INSN(fle_d, MATCH_FLE_D, MASK_FLE_D) +DECLARE_INSN(flt_d, MATCH_FLT_D, MASK_FLT_D) +DECLARE_INSN(feq_d, MATCH_FEQ_D, MASK_FEQ_D) +DECLARE_INSN(fle_q, MATCH_FLE_Q, MASK_FLE_Q) +DECLARE_INSN(flt_q, MATCH_FLT_Q, MASK_FLT_Q) +DECLARE_INSN(feq_q, MATCH_FEQ_Q, MASK_FEQ_Q) +DECLARE_INSN(fcvt_w_s, MATCH_FCVT_W_S, MASK_FCVT_W_S) +DECLARE_INSN(fcvt_wu_s, MATCH_FCVT_WU_S, MASK_FCVT_WU_S) +DECLARE_INSN(fcvt_l_s, MATCH_FCVT_L_S, MASK_FCVT_L_S) +DECLARE_INSN(fcvt_lu_s, MATCH_FCVT_LU_S, MASK_FCVT_LU_S) +DECLARE_INSN(fmv_x_w, MATCH_FMV_X_W, MASK_FMV_X_W) +DECLARE_INSN(fclass_s, MATCH_FCLASS_S, MASK_FCLASS_S) +DECLARE_INSN(fcvt_w_d, MATCH_FCVT_W_D, MASK_FCVT_W_D) +DECLARE_INSN(fcvt_wu_d, MATCH_FCVT_WU_D, MASK_FCVT_WU_D) +DECLARE_INSN(fcvt_l_d, MATCH_FCVT_L_D, MASK_FCVT_L_D) +DECLARE_INSN(fcvt_lu_d, MATCH_FCVT_LU_D, MASK_FCVT_LU_D) +DECLARE_INSN(fmv_x_d, MATCH_FMV_X_D, MASK_FMV_X_D) +DECLARE_INSN(fclass_d, MATCH_FCLASS_D, MASK_FCLASS_D) +DECLARE_INSN(fcvt_w_q, MATCH_FCVT_W_Q, MASK_FCVT_W_Q) +DECLARE_INSN(fcvt_wu_q, MATCH_FCVT_WU_Q, MASK_FCVT_WU_Q) +DECLARE_INSN(fcvt_l_q, MATCH_FCVT_L_Q, MASK_FCVT_L_Q) +DECLARE_INSN(fcvt_lu_q, MATCH_FCVT_LU_Q, MASK_FCVT_LU_Q) +DECLARE_INSN(fmv_x_q, MATCH_FMV_X_Q, MASK_FMV_X_Q) +DECLARE_INSN(fclass_q, MATCH_FCLASS_Q, MASK_FCLASS_Q) +DECLARE_INSN(fcvt_s_w, MATCH_FCVT_S_W, MASK_FCVT_S_W) +DECLARE_INSN(fcvt_s_wu, MATCH_FCVT_S_WU, MASK_FCVT_S_WU) +DECLARE_INSN(fcvt_s_l, MATCH_FCVT_S_L, MASK_FCVT_S_L) +DECLARE_INSN(fcvt_s_lu, MATCH_FCVT_S_LU, MASK_FCVT_S_LU) +DECLARE_INSN(fmv_w_x, MATCH_FMV_W_X, MASK_FMV_W_X) +DECLARE_INSN(fcvt_d_w, MATCH_FCVT_D_W, MASK_FCVT_D_W) +DECLARE_INSN(fcvt_d_wu, MATCH_FCVT_D_WU, MASK_FCVT_D_WU) +DECLARE_INSN(fcvt_d_l, MATCH_FCVT_D_L, MASK_FCVT_D_L) +DECLARE_INSN(fcvt_d_lu, MATCH_FCVT_D_LU, MASK_FCVT_D_LU) +DECLARE_INSN(fmv_d_x, MATCH_FMV_D_X, MASK_FMV_D_X) +DECLARE_INSN(fcvt_q_w, MATCH_FCVT_Q_W, MASK_FCVT_Q_W) +DECLARE_INSN(fcvt_q_wu, MATCH_FCVT_Q_WU, MASK_FCVT_Q_WU) +DECLARE_INSN(fcvt_q_l, MATCH_FCVT_Q_L, MASK_FCVT_Q_L) +DECLARE_INSN(fcvt_q_lu, MATCH_FCVT_Q_LU, MASK_FCVT_Q_LU) +DECLARE_INSN(fmv_q_x, MATCH_FMV_Q_X, MASK_FMV_Q_X) +DECLARE_INSN(flw, MATCH_FLW, MASK_FLW) +DECLARE_INSN(fld, MATCH_FLD, MASK_FLD) +DECLARE_INSN(flq, MATCH_FLQ, MASK_FLQ) +DECLARE_INSN(fsw, MATCH_FSW, MASK_FSW) +DECLARE_INSN(fsd, MATCH_FSD, MASK_FSD) +DECLARE_INSN(fsq, MATCH_FSQ, MASK_FSQ) +DECLARE_INSN(fmadd_s, MATCH_FMADD_S, MASK_FMADD_S) +DECLARE_INSN(fmsub_s, MATCH_FMSUB_S, MASK_FMSUB_S) +DECLARE_INSN(fnmsub_s, MATCH_FNMSUB_S, MASK_FNMSUB_S) +DECLARE_INSN(fnmadd_s, MATCH_FNMADD_S, MASK_FNMADD_S) +DECLARE_INSN(fmadd_d, MATCH_FMADD_D, MASK_FMADD_D) +DECLARE_INSN(fmsub_d, MATCH_FMSUB_D, MASK_FMSUB_D) +DECLARE_INSN(fnmsub_d, MATCH_FNMSUB_D, MASK_FNMSUB_D) +DECLARE_INSN(fnmadd_d, MATCH_FNMADD_D, MASK_FNMADD_D) +DECLARE_INSN(fmadd_q, MATCH_FMADD_Q, MASK_FMADD_Q) +DECLARE_INSN(fmsub_q, MATCH_FMSUB_Q, MASK_FMSUB_Q) +DECLARE_INSN(fnmsub_q, MATCH_FNMSUB_Q, MASK_FNMSUB_Q) +DECLARE_INSN(fnmadd_q, MATCH_FNMADD_Q, MASK_FNMADD_Q) +DECLARE_INSN(c_nop, MATCH_C_NOP, MASK_C_NOP) +DECLARE_INSN(c_addi16sp, MATCH_C_ADDI16SP, MASK_C_ADDI16SP) +DECLARE_INSN(c_jr, MATCH_C_JR, MASK_C_JR) +DECLARE_INSN(c_jalr, MATCH_C_JALR, MASK_C_JALR) +DECLARE_INSN(c_ebreak, MATCH_C_EBREAK, MASK_C_EBREAK) +DECLARE_INSN(c_ld, MATCH_C_LD, MASK_C_LD) +DECLARE_INSN(c_sd, MATCH_C_SD, MASK_C_SD) +DECLARE_INSN(c_addiw, MATCH_C_ADDIW, MASK_C_ADDIW) +DECLARE_INSN(c_ldsp, MATCH_C_LDSP, MASK_C_LDSP) +DECLARE_INSN(c_sdsp, MATCH_C_SDSP, MASK_C_SDSP) +DECLARE_INSN(c_addi4spn, MATCH_C_ADDI4SPN, MASK_C_ADDI4SPN) +DECLARE_INSN(c_fld, MATCH_C_FLD, MASK_C_FLD) +DECLARE_INSN(c_lw, MATCH_C_LW, MASK_C_LW) +DECLARE_INSN(c_flw, MATCH_C_FLW, MASK_C_FLW) +DECLARE_INSN(c_fsd, MATCH_C_FSD, MASK_C_FSD) +DECLARE_INSN(c_sw, MATCH_C_SW, MASK_C_SW) +DECLARE_INSN(c_fsw, MATCH_C_FSW, MASK_C_FSW) +DECLARE_INSN(c_addi, MATCH_C_ADDI, MASK_C_ADDI) +DECLARE_INSN(c_jal, MATCH_C_JAL, MASK_C_JAL) +DECLARE_INSN(c_li, MATCH_C_LI, MASK_C_LI) +DECLARE_INSN(c_lui, MATCH_C_LUI, MASK_C_LUI) +DECLARE_INSN(c_srli, MATCH_C_SRLI, MASK_C_SRLI) +DECLARE_INSN(c_srai, MATCH_C_SRAI, MASK_C_SRAI) +DECLARE_INSN(c_andi, MATCH_C_ANDI, MASK_C_ANDI) +DECLARE_INSN(c_sub, MATCH_C_SUB, MASK_C_SUB) +DECLARE_INSN(c_xor, MATCH_C_XOR, MASK_C_XOR) +DECLARE_INSN(c_or, MATCH_C_OR, MASK_C_OR) +DECLARE_INSN(c_and, MATCH_C_AND, MASK_C_AND) +DECLARE_INSN(c_subw, MATCH_C_SUBW, MASK_C_SUBW) +DECLARE_INSN(c_addw, MATCH_C_ADDW, MASK_C_ADDW) +DECLARE_INSN(c_j, MATCH_C_J, MASK_C_J) +DECLARE_INSN(c_beqz, MATCH_C_BEQZ, MASK_C_BEQZ) +DECLARE_INSN(c_bnez, MATCH_C_BNEZ, MASK_C_BNEZ) +DECLARE_INSN(c_slli, MATCH_C_SLLI, MASK_C_SLLI) +DECLARE_INSN(c_fldsp, MATCH_C_FLDSP, MASK_C_FLDSP) +DECLARE_INSN(c_lwsp, MATCH_C_LWSP, MASK_C_LWSP) +DECLARE_INSN(c_flwsp, MATCH_C_FLWSP, MASK_C_FLWSP) +DECLARE_INSN(c_mv, MATCH_C_MV, MASK_C_MV) +DECLARE_INSN(c_add, MATCH_C_ADD, MASK_C_ADD) +DECLARE_INSN(c_fsdsp, MATCH_C_FSDSP, MASK_C_FSDSP) +DECLARE_INSN(c_swsp, MATCH_C_SWSP, MASK_C_SWSP) +DECLARE_INSN(c_fswsp, MATCH_C_FSWSP, MASK_C_FSWSP) +DECLARE_INSN(custom0, MATCH_CUSTOM0, MASK_CUSTOM0) +DECLARE_INSN(custom0_rs1, MATCH_CUSTOM0_RS1, MASK_CUSTOM0_RS1) +DECLARE_INSN(custom0_rs1_rs2, MATCH_CUSTOM0_RS1_RS2, MASK_CUSTOM0_RS1_RS2) +DECLARE_INSN(custom0_rd, MATCH_CUSTOM0_RD, MASK_CUSTOM0_RD) +DECLARE_INSN(custom0_rd_rs1, MATCH_CUSTOM0_RD_RS1, MASK_CUSTOM0_RD_RS1) +DECLARE_INSN(custom0_rd_rs1_rs2, MATCH_CUSTOM0_RD_RS1_RS2, MASK_CUSTOM0_RD_RS1_RS2) +DECLARE_INSN(custom1, MATCH_CUSTOM1, MASK_CUSTOM1) +DECLARE_INSN(custom1_rs1, MATCH_CUSTOM1_RS1, MASK_CUSTOM1_RS1) +DECLARE_INSN(custom1_rs1_rs2, MATCH_CUSTOM1_RS1_RS2, MASK_CUSTOM1_RS1_RS2) +DECLARE_INSN(custom1_rd, MATCH_CUSTOM1_RD, MASK_CUSTOM1_RD) +DECLARE_INSN(custom1_rd_rs1, MATCH_CUSTOM1_RD_RS1, MASK_CUSTOM1_RD_RS1) +DECLARE_INSN(custom1_rd_rs1_rs2, MATCH_CUSTOM1_RD_RS1_RS2, MASK_CUSTOM1_RD_RS1_RS2) +DECLARE_INSN(custom2, MATCH_CUSTOM2, MASK_CUSTOM2) +DECLARE_INSN(custom2_rs1, MATCH_CUSTOM2_RS1, MASK_CUSTOM2_RS1) +DECLARE_INSN(custom2_rs1_rs2, MATCH_CUSTOM2_RS1_RS2, MASK_CUSTOM2_RS1_RS2) +DECLARE_INSN(custom2_rd, MATCH_CUSTOM2_RD, MASK_CUSTOM2_RD) +DECLARE_INSN(custom2_rd_rs1, MATCH_CUSTOM2_RD_RS1, MASK_CUSTOM2_RD_RS1) +DECLARE_INSN(custom2_rd_rs1_rs2, MATCH_CUSTOM2_RD_RS1_RS2, MASK_CUSTOM2_RD_RS1_RS2) +DECLARE_INSN(custom3, MATCH_CUSTOM3, MASK_CUSTOM3) +DECLARE_INSN(custom3_rs1, MATCH_CUSTOM3_RS1, MASK_CUSTOM3_RS1) +DECLARE_INSN(custom3_rs1_rs2, MATCH_CUSTOM3_RS1_RS2, MASK_CUSTOM3_RS1_RS2) +DECLARE_INSN(custom3_rd, MATCH_CUSTOM3_RD, MASK_CUSTOM3_RD) +DECLARE_INSN(custom3_rd_rs1, MATCH_CUSTOM3_RD_RS1, MASK_CUSTOM3_RD_RS1) +DECLARE_INSN(custom3_rd_rs1_rs2, MATCH_CUSTOM3_RD_RS1_RS2, MASK_CUSTOM3_RD_RS1_RS2) +#endif +#ifdef DECLARE_CSR +DECLARE_CSR(fflags, CSR_FFLAGS) +DECLARE_CSR(frm, CSR_FRM) +DECLARE_CSR(fcsr, CSR_FCSR) +DECLARE_CSR(cycle, CSR_CYCLE) +DECLARE_CSR(time, CSR_TIME) +DECLARE_CSR(instret, CSR_INSTRET) +DECLARE_CSR(hpmcounter3, CSR_HPMCOUNTER3) +DECLARE_CSR(hpmcounter4, CSR_HPMCOUNTER4) +DECLARE_CSR(hpmcounter5, CSR_HPMCOUNTER5) +DECLARE_CSR(hpmcounter6, CSR_HPMCOUNTER6) +DECLARE_CSR(hpmcounter7, CSR_HPMCOUNTER7) +DECLARE_CSR(hpmcounter8, CSR_HPMCOUNTER8) +DECLARE_CSR(hpmcounter9, CSR_HPMCOUNTER9) +DECLARE_CSR(hpmcounter10, CSR_HPMCOUNTER10) +DECLARE_CSR(hpmcounter11, CSR_HPMCOUNTER11) +DECLARE_CSR(hpmcounter12, CSR_HPMCOUNTER12) +DECLARE_CSR(hpmcounter13, CSR_HPMCOUNTER13) +DECLARE_CSR(hpmcounter14, CSR_HPMCOUNTER14) +DECLARE_CSR(hpmcounter15, CSR_HPMCOUNTER15) +DECLARE_CSR(hpmcounter16, CSR_HPMCOUNTER16) +DECLARE_CSR(hpmcounter17, CSR_HPMCOUNTER17) +DECLARE_CSR(hpmcounter18, CSR_HPMCOUNTER18) +DECLARE_CSR(hpmcounter19, CSR_HPMCOUNTER19) +DECLARE_CSR(hpmcounter20, CSR_HPMCOUNTER20) +DECLARE_CSR(hpmcounter21, CSR_HPMCOUNTER21) +DECLARE_CSR(hpmcounter22, CSR_HPMCOUNTER22) +DECLARE_CSR(hpmcounter23, CSR_HPMCOUNTER23) +DECLARE_CSR(hpmcounter24, CSR_HPMCOUNTER24) +DECLARE_CSR(hpmcounter25, CSR_HPMCOUNTER25) +DECLARE_CSR(hpmcounter26, CSR_HPMCOUNTER26) +DECLARE_CSR(hpmcounter27, CSR_HPMCOUNTER27) +DECLARE_CSR(hpmcounter28, CSR_HPMCOUNTER28) +DECLARE_CSR(hpmcounter29, CSR_HPMCOUNTER29) +DECLARE_CSR(hpmcounter30, CSR_HPMCOUNTER30) +DECLARE_CSR(hpmcounter31, CSR_HPMCOUNTER31) +DECLARE_CSR(sstatus, CSR_SSTATUS) +DECLARE_CSR(sie, CSR_SIE) +DECLARE_CSR(stvec, CSR_STVEC) +DECLARE_CSR(scounteren, CSR_SCOUNTEREN) +DECLARE_CSR(sscratch, CSR_SSCRATCH) +DECLARE_CSR(sepc, CSR_SEPC) +DECLARE_CSR(scause, CSR_SCAUSE) +DECLARE_CSR(sbadaddr, CSR_SBADADDR) +DECLARE_CSR(sip, CSR_SIP) +DECLARE_CSR(sptbr, CSR_SPTBR) +DECLARE_CSR(mstatus, CSR_MSTATUS) +DECLARE_CSR(misa, CSR_MISA) +DECLARE_CSR(medeleg, CSR_MEDELEG) +DECLARE_CSR(mideleg, CSR_MIDELEG) +DECLARE_CSR(mie, CSR_MIE) +DECLARE_CSR(mtvec, CSR_MTVEC) +DECLARE_CSR(mcounteren, CSR_MCOUNTEREN) +DECLARE_CSR(mscratch, CSR_MSCRATCH) +DECLARE_CSR(mepc, CSR_MEPC) +DECLARE_CSR(mcause, CSR_MCAUSE) +DECLARE_CSR(mbadaddr, CSR_MBADADDR) +DECLARE_CSR(mip, CSR_MIP) +DECLARE_CSR(pmpcfg0, CSR_PMPCFG0) +DECLARE_CSR(pmpcfg1, CSR_PMPCFG1) +DECLARE_CSR(pmpcfg2, CSR_PMPCFG2) +DECLARE_CSR(pmpcfg3, CSR_PMPCFG3) +DECLARE_CSR(pmpaddr0, CSR_PMPADDR0) +DECLARE_CSR(pmpaddr1, CSR_PMPADDR1) +DECLARE_CSR(pmpaddr2, CSR_PMPADDR2) +DECLARE_CSR(pmpaddr3, CSR_PMPADDR3) +DECLARE_CSR(pmpaddr4, CSR_PMPADDR4) +DECLARE_CSR(pmpaddr5, CSR_PMPADDR5) +DECLARE_CSR(pmpaddr6, CSR_PMPADDR6) +DECLARE_CSR(pmpaddr7, CSR_PMPADDR7) +DECLARE_CSR(pmpaddr8, CSR_PMPADDR8) +DECLARE_CSR(pmpaddr9, CSR_PMPADDR9) +DECLARE_CSR(pmpaddr10, CSR_PMPADDR10) +DECLARE_CSR(pmpaddr11, CSR_PMPADDR11) +DECLARE_CSR(pmpaddr12, CSR_PMPADDR12) +DECLARE_CSR(pmpaddr13, CSR_PMPADDR13) +DECLARE_CSR(pmpaddr14, CSR_PMPADDR14) +DECLARE_CSR(pmpaddr15, CSR_PMPADDR15) +DECLARE_CSR(tselect, CSR_TSELECT) +DECLARE_CSR(tdata1, CSR_TDATA1) +DECLARE_CSR(tdata2, CSR_TDATA2) +DECLARE_CSR(tdata3, CSR_TDATA3) +DECLARE_CSR(dcsr, CSR_DCSR) +DECLARE_CSR(dpc, CSR_DPC) +DECLARE_CSR(dscratch, CSR_DSCRATCH) +DECLARE_CSR(mcycle, CSR_MCYCLE) +DECLARE_CSR(minstret, CSR_MINSTRET) +DECLARE_CSR(mhpmcounter3, CSR_MHPMCOUNTER3) +DECLARE_CSR(mhpmcounter4, CSR_MHPMCOUNTER4) +DECLARE_CSR(mhpmcounter5, CSR_MHPMCOUNTER5) +DECLARE_CSR(mhpmcounter6, CSR_MHPMCOUNTER6) +DECLARE_CSR(mhpmcounter7, CSR_MHPMCOUNTER7) +DECLARE_CSR(mhpmcounter8, CSR_MHPMCOUNTER8) +DECLARE_CSR(mhpmcounter9, CSR_MHPMCOUNTER9) +DECLARE_CSR(mhpmcounter10, CSR_MHPMCOUNTER10) +DECLARE_CSR(mhpmcounter11, CSR_MHPMCOUNTER11) +DECLARE_CSR(mhpmcounter12, CSR_MHPMCOUNTER12) +DECLARE_CSR(mhpmcounter13, CSR_MHPMCOUNTER13) +DECLARE_CSR(mhpmcounter14, CSR_MHPMCOUNTER14) +DECLARE_CSR(mhpmcounter15, CSR_MHPMCOUNTER15) +DECLARE_CSR(mhpmcounter16, CSR_MHPMCOUNTER16) +DECLARE_CSR(mhpmcounter17, CSR_MHPMCOUNTER17) +DECLARE_CSR(mhpmcounter18, CSR_MHPMCOUNTER18) +DECLARE_CSR(mhpmcounter19, CSR_MHPMCOUNTER19) +DECLARE_CSR(mhpmcounter20, CSR_MHPMCOUNTER20) +DECLARE_CSR(mhpmcounter21, CSR_MHPMCOUNTER21) +DECLARE_CSR(mhpmcounter22, CSR_MHPMCOUNTER22) +DECLARE_CSR(mhpmcounter23, CSR_MHPMCOUNTER23) +DECLARE_CSR(mhpmcounter24, CSR_MHPMCOUNTER24) +DECLARE_CSR(mhpmcounter25, CSR_MHPMCOUNTER25) +DECLARE_CSR(mhpmcounter26, CSR_MHPMCOUNTER26) +DECLARE_CSR(mhpmcounter27, CSR_MHPMCOUNTER27) +DECLARE_CSR(mhpmcounter28, CSR_MHPMCOUNTER28) +DECLARE_CSR(mhpmcounter29, CSR_MHPMCOUNTER29) +DECLARE_CSR(mhpmcounter30, CSR_MHPMCOUNTER30) +DECLARE_CSR(mhpmcounter31, CSR_MHPMCOUNTER31) +DECLARE_CSR(mhpmevent3, CSR_MHPMEVENT3) +DECLARE_CSR(mhpmevent4, CSR_MHPMEVENT4) +DECLARE_CSR(mhpmevent5, CSR_MHPMEVENT5) +DECLARE_CSR(mhpmevent6, CSR_MHPMEVENT6) +DECLARE_CSR(mhpmevent7, CSR_MHPMEVENT7) +DECLARE_CSR(mhpmevent8, CSR_MHPMEVENT8) +DECLARE_CSR(mhpmevent9, CSR_MHPMEVENT9) +DECLARE_CSR(mhpmevent10, CSR_MHPMEVENT10) +DECLARE_CSR(mhpmevent11, CSR_MHPMEVENT11) +DECLARE_CSR(mhpmevent12, CSR_MHPMEVENT12) +DECLARE_CSR(mhpmevent13, CSR_MHPMEVENT13) +DECLARE_CSR(mhpmevent14, CSR_MHPMEVENT14) +DECLARE_CSR(mhpmevent15, CSR_MHPMEVENT15) +DECLARE_CSR(mhpmevent16, CSR_MHPMEVENT16) +DECLARE_CSR(mhpmevent17, CSR_MHPMEVENT17) +DECLARE_CSR(mhpmevent18, CSR_MHPMEVENT18) +DECLARE_CSR(mhpmevent19, CSR_MHPMEVENT19) +DECLARE_CSR(mhpmevent20, CSR_MHPMEVENT20) +DECLARE_CSR(mhpmevent21, CSR_MHPMEVENT21) +DECLARE_CSR(mhpmevent22, CSR_MHPMEVENT22) +DECLARE_CSR(mhpmevent23, CSR_MHPMEVENT23) +DECLARE_CSR(mhpmevent24, CSR_MHPMEVENT24) +DECLARE_CSR(mhpmevent25, CSR_MHPMEVENT25) +DECLARE_CSR(mhpmevent26, CSR_MHPMEVENT26) +DECLARE_CSR(mhpmevent27, CSR_MHPMEVENT27) +DECLARE_CSR(mhpmevent28, CSR_MHPMEVENT28) +DECLARE_CSR(mhpmevent29, CSR_MHPMEVENT29) +DECLARE_CSR(mhpmevent30, CSR_MHPMEVENT30) +DECLARE_CSR(mhpmevent31, CSR_MHPMEVENT31) +DECLARE_CSR(mvendorid, CSR_MVENDORID) +DECLARE_CSR(marchid, CSR_MARCHID) +DECLARE_CSR(mimpid, CSR_MIMPID) +DECLARE_CSR(mhartid, CSR_MHARTID) +DECLARE_CSR(cycleh, CSR_CYCLEH) +DECLARE_CSR(timeh, CSR_TIMEH) +DECLARE_CSR(instreth, CSR_INSTRETH) +DECLARE_CSR(hpmcounter3h, CSR_HPMCOUNTER3H) +DECLARE_CSR(hpmcounter4h, CSR_HPMCOUNTER4H) +DECLARE_CSR(hpmcounter5h, CSR_HPMCOUNTER5H) +DECLARE_CSR(hpmcounter6h, CSR_HPMCOUNTER6H) +DECLARE_CSR(hpmcounter7h, CSR_HPMCOUNTER7H) +DECLARE_CSR(hpmcounter8h, CSR_HPMCOUNTER8H) +DECLARE_CSR(hpmcounter9h, CSR_HPMCOUNTER9H) +DECLARE_CSR(hpmcounter10h, CSR_HPMCOUNTER10H) +DECLARE_CSR(hpmcounter11h, CSR_HPMCOUNTER11H) +DECLARE_CSR(hpmcounter12h, CSR_HPMCOUNTER12H) +DECLARE_CSR(hpmcounter13h, CSR_HPMCOUNTER13H) +DECLARE_CSR(hpmcounter14h, CSR_HPMCOUNTER14H) +DECLARE_CSR(hpmcounter15h, CSR_HPMCOUNTER15H) +DECLARE_CSR(hpmcounter16h, CSR_HPMCOUNTER16H) +DECLARE_CSR(hpmcounter17h, CSR_HPMCOUNTER17H) +DECLARE_CSR(hpmcounter18h, CSR_HPMCOUNTER18H) +DECLARE_CSR(hpmcounter19h, CSR_HPMCOUNTER19H) +DECLARE_CSR(hpmcounter20h, CSR_HPMCOUNTER20H) +DECLARE_CSR(hpmcounter21h, CSR_HPMCOUNTER21H) +DECLARE_CSR(hpmcounter22h, CSR_HPMCOUNTER22H) +DECLARE_CSR(hpmcounter23h, CSR_HPMCOUNTER23H) +DECLARE_CSR(hpmcounter24h, CSR_HPMCOUNTER24H) +DECLARE_CSR(hpmcounter25h, CSR_HPMCOUNTER25H) +DECLARE_CSR(hpmcounter26h, CSR_HPMCOUNTER26H) +DECLARE_CSR(hpmcounter27h, CSR_HPMCOUNTER27H) +DECLARE_CSR(hpmcounter28h, CSR_HPMCOUNTER28H) +DECLARE_CSR(hpmcounter29h, CSR_HPMCOUNTER29H) +DECLARE_CSR(hpmcounter30h, CSR_HPMCOUNTER30H) +DECLARE_CSR(hpmcounter31h, CSR_HPMCOUNTER31H) +DECLARE_CSR(mcycleh, CSR_MCYCLEH) +DECLARE_CSR(minstreth, CSR_MINSTRETH) +DECLARE_CSR(mhpmcounter3h, CSR_MHPMCOUNTER3H) +DECLARE_CSR(mhpmcounter4h, CSR_MHPMCOUNTER4H) +DECLARE_CSR(mhpmcounter5h, CSR_MHPMCOUNTER5H) +DECLARE_CSR(mhpmcounter6h, CSR_MHPMCOUNTER6H) +DECLARE_CSR(mhpmcounter7h, CSR_MHPMCOUNTER7H) +DECLARE_CSR(mhpmcounter8h, CSR_MHPMCOUNTER8H) +DECLARE_CSR(mhpmcounter9h, CSR_MHPMCOUNTER9H) +DECLARE_CSR(mhpmcounter10h, CSR_MHPMCOUNTER10H) +DECLARE_CSR(mhpmcounter11h, CSR_MHPMCOUNTER11H) +DECLARE_CSR(mhpmcounter12h, CSR_MHPMCOUNTER12H) +DECLARE_CSR(mhpmcounter13h, CSR_MHPMCOUNTER13H) +DECLARE_CSR(mhpmcounter14h, CSR_MHPMCOUNTER14H) +DECLARE_CSR(mhpmcounter15h, CSR_MHPMCOUNTER15H) +DECLARE_CSR(mhpmcounter16h, CSR_MHPMCOUNTER16H) +DECLARE_CSR(mhpmcounter17h, CSR_MHPMCOUNTER17H) +DECLARE_CSR(mhpmcounter18h, CSR_MHPMCOUNTER18H) +DECLARE_CSR(mhpmcounter19h, CSR_MHPMCOUNTER19H) +DECLARE_CSR(mhpmcounter20h, CSR_MHPMCOUNTER20H) +DECLARE_CSR(mhpmcounter21h, CSR_MHPMCOUNTER21H) +DECLARE_CSR(mhpmcounter22h, CSR_MHPMCOUNTER22H) +DECLARE_CSR(mhpmcounter23h, CSR_MHPMCOUNTER23H) +DECLARE_CSR(mhpmcounter24h, CSR_MHPMCOUNTER24H) +DECLARE_CSR(mhpmcounter25h, CSR_MHPMCOUNTER25H) +DECLARE_CSR(mhpmcounter26h, CSR_MHPMCOUNTER26H) +DECLARE_CSR(mhpmcounter27h, CSR_MHPMCOUNTER27H) +DECLARE_CSR(mhpmcounter28h, CSR_MHPMCOUNTER28H) +DECLARE_CSR(mhpmcounter29h, CSR_MHPMCOUNTER29H) +DECLARE_CSR(mhpmcounter30h, CSR_MHPMCOUNTER30H) +DECLARE_CSR(mhpmcounter31h, CSR_MHPMCOUNTER31H) +#endif +#ifdef DECLARE_CAUSE +DECLARE_CAUSE("misaligned fetch", CAUSE_MISALIGNED_FETCH) +DECLARE_CAUSE("fetch access", CAUSE_FETCH_ACCESS) +DECLARE_CAUSE("illegal instruction", CAUSE_ILLEGAL_INSTRUCTION) +DECLARE_CAUSE("breakpoint", CAUSE_BREAKPOINT) +DECLARE_CAUSE("misaligned load", CAUSE_MISALIGNED_LOAD) +DECLARE_CAUSE("load access", CAUSE_LOAD_ACCESS) +DECLARE_CAUSE("misaligned store", CAUSE_MISALIGNED_STORE) +DECLARE_CAUSE("store access", CAUSE_STORE_ACCESS) +DECLARE_CAUSE("user_ecall", CAUSE_USER_ECALL) +DECLARE_CAUSE("supervisor_ecall", CAUSE_SUPERVISOR_ECALL) +DECLARE_CAUSE("hypervisor_ecall", CAUSE_HYPERVISOR_ECALL) +DECLARE_CAUSE("machine_ecall", CAUSE_MACHINE_ECALL) +DECLARE_CAUSE("fetch page fault", CAUSE_FETCH_PAGE_FAULT) +DECLARE_CAUSE("load page fault", CAUSE_LOAD_PAGE_FAULT) +DECLARE_CAUSE("store page fault", CAUSE_STORE_PAGE_FAULT) +#endif diff --git a/fsbl/lib/cpu/riscv/delay_timer.c b/fsbl/lib/cpu/riscv/delay_timer.c new file mode 100644 index 000000000..a1d62bc36 --- /dev/null +++ b/fsbl/lib/cpu/riscv/delay_timer.c @@ -0,0 +1,93 @@ +/* + * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include +#include +#include +#include +#include "csr.h" + +#define SYS_COUNTER_FREQ_IN_US (SYS_COUNTER_FREQ_IN_SECOND / 1000000) + +static uint32_t get_timer_value(void) +{ + /* + * Generic delay timer implementation expects the timer to be a down + * counter. We apply bitwise NOT operator to the tick values returned + * by read_cntpct_el0() to simulate the down counter. The value is + * clipped from 64 to 32 bits. + */ + return (uint32_t)(~read_csr(time)); +} + +void trig_simulation_timer(uint32_t usec) +{ + uint32_t total_delta = (usec * SYS_COUNTER_FREQ_IN_US); + + // Trig simulation bench to increse cntpct_el0 + mmio_write_32(REG_GP_REG2, total_delta); +} + +/*********************************************************** + * Delay for the given number of microseconds. The driver must + * be initialized before calling this function. + ***********************************************************/ +void udelay(uint32_t usec) +{ + uint32_t start, delta, total_delta; + + start = get_timer_value(); + + total_delta = (usec * SYS_COUNTER_FREQ_IN_US); + + // Trig simulation bench to increse cntpct_el0 + mmio_write_32(REG_GP_REG2, total_delta); + + do { + /* + * If the timer value wraps around, the subtraction will + * overflow and it will still give the correct result. + */ + delta = start - get_timer_value(); /* Decreasing counter */ + + } while (delta < total_delta); +} + +/*********************************************************** + * Delay for the given number of milliseconds. The driver must + * be initialized before calling this function. + ***********************************************************/ +void mdelay(uint32_t msec) +{ + udelay(msec * 1000); +} + +uint32_t get_timer(uint32_t base) +{ + if (base == 0) + return get_timer_value(); + else + return (base - get_timer_value()) / SYS_COUNTER_FREQ_IN_US / 1000; // ms +} + +uint32_t get_random_from_timer(uint32_t base) +{ + if (base == 0) + return get_timer_value(); + else + return (base - get_timer_value()) / SYS_COUNTER_FREQ_IN_US % 100000; +} + +void timer_init(void) +{ +// write_cntfrq_el0(SYS_COUNTER_FREQ_IN_SECOND); +} + +uint32_t read_count_tick(void) +{ + return read_csr(time) / SYS_COUNTER_FREQ_IN_US; +// return read_cntpct_el0() / SYS_COUNTER_FREQ_IN_US; +} diff --git a/fsbl/lib/cpu/riscv/misc_helpers.c b/fsbl/lib/cpu/riscv/misc_helpers.c new file mode 100644 index 000000000..55d11c008 --- /dev/null +++ b/fsbl/lib/cpu/riscv/misc_helpers.c @@ -0,0 +1,11 @@ +#include + +void *memcpy16(void *dest, const void *src, size_t length) +{ + return memcpy(dest, src, length); +} +void zeromem(void *dst, size_t size) +{ + memset(dst, 0, size); +} + diff --git a/fsbl/lib/crc/crc.h b/fsbl/lib/crc/crc.h new file mode 100644 index 000000000..182a3164e --- /dev/null +++ b/fsbl/lib/crc/crc.h @@ -0,0 +1,6 @@ +#ifndef __CRC_H__ +#define __CRC_H__ + +uint32_t armv8_crc32_little(unsigned long crc, const unsigned char *buf, size_t len); + +#endif /* __CRC_H__ */ diff --git a/fsbl/lib/crc/crc16.c b/fsbl/lib/crc/crc16.c new file mode 100644 index 000000000..d45c0886e --- /dev/null +++ b/fsbl/lib/crc/crc16.c @@ -0,0 +1,84 @@ +/* + *========================================================================== + * + * crc16.c + * + * 16 bit CRC with polynomial x^16+x^12+x^5+1 + * + *========================================================================== + * SPDX-License-Identifier: eCos-2.0 + *========================================================================== + *#####DESCRIPTIONBEGIN#### + * + * Author(s): gthomas + * Contributors: gthomas,asl + * Date: 2001-01-31 + * Purpose: + * Description: + * + * This code is part of eCos (tm). + * + *####DESCRIPTIONEND#### + * + *========================================================================== + */ + +#include + +/* Table of CRC constants - implements x^16+x^12+x^5+1 */ +static const uint16_t crc16_tab[] = { + 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, + 0xe1ce, 0xf1ef, 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, 0x9339, 0x8318, 0xb37b, 0xa35a, + 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, 0xa56a, 0xb54b, + 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, + 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, + 0x2802, 0x3823, 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, + 0x1a71, 0x0a50, 0x3a33, 0x2a12, 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, 0x6ca6, 0x7c87, + 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, + 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, + 0x9f59, 0x8f78, 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, 0x1080, 0x00a1, 0x30c2, 0x20e3, + 0x5004, 0x4025, 0x7046, 0x6067, 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, 0x02b1, 0x1290, + 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, + 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, + 0xc71d, 0xd73c, 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, 0xd94c, 0xc96d, 0xf90e, 0xe92f, + 0x99c8, 0x89e9, 0xb98a, 0xa9ab, 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, 0xcb7d, 0xdb5c, + 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, + 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, + 0x1ce0, 0x0cc1, 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, 0x6e17, 0x7e36, 0x4e55, 0x5e74, + 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0, +}; + +uint16_t crc16_ccitt(uint16_t crc_start, const void *_buf, int len) +{ + const uint8_t *buf = _buf; + int i; + uint16_t cksum; + + cksum = crc_start; + for (i = 0; i < len; i++) + cksum = crc16_tab[((cksum >> 8) ^ *buf++) & 0xff] ^ (cksum << 8); + + return cksum; +} + +uint16_t crc16_pacing(uint16_t crc_start, uint32_t *buf, int len) +{ + int i; + uint16_t cksum; + + cksum = crc_start; + for (i = 0; i < len; i++) + cksum = crc16_tab[((cksum >> 8) ^ ((*buf++) & 0xff)) & 0xff] ^ (cksum << 8); + + return cksum; +} + +uint32_t crc16_ccitt_with_tag(const void *buf, int len) +{ + uint32_t crc = 0; + + crc = crc16_ccitt(0, buf, len); + crc |= 0xCAFE0000; + + return crc; +} \ No newline at end of file diff --git a/fsbl/lib/crc/crc16.h b/fsbl/lib/crc/crc16.h new file mode 100644 index 000000000..5207eabbf --- /dev/null +++ b/fsbl/lib/crc/crc16.h @@ -0,0 +1,10 @@ +#ifndef _CRC16_H_ +#define _CRC16_H_ + +/* 16 bit CRC with polynomial x^16+x^12+x^5+1 (CRC-CCITT) */ +uint16_t crc16_ccitt(uint16_t crc_start, const void *s, int len); +uint16_t crc16_pacing(uint16_t crc_start, uint32_t *buf, int len); + +uint32_t crc16_ccitt_with_tag(const void *buf, int len); + +#endif /* _CRC16_H_ */ diff --git a/fsbl/lib/crc/crc32.c b/fsbl/lib/crc/crc32.c new file mode 100644 index 000000000..25f442d85 --- /dev/null +++ b/fsbl/lib/crc/crc32.c @@ -0,0 +1,71 @@ +#include +#include + +#pragma GCC push_options +#pragma GCC target("+nothing+crc") + +#if !defined(__ARM_FEATURE_CRC32) +#error "__ARM_FEATURE_CRC32" +#endif + +static inline uint32_t __extension__ __attribute__((__always_inline__)) __crc32b(uint32_t __a, uint8_t __b) +{ + return __builtin_aarch64_crc32b(__a, __b); +} + +static inline uint32_t __extension__ __attribute__((__always_inline__)) __crc32d(uint32_t __a, uint64_t __b) +{ + return __builtin_aarch64_crc32x(__a, __b); +} + +/** + * crc-32 + * Width 32 + * Poly 0x04c11db7 + * Reflect In True + * XOR In 0xffffffff + * Reflect Out True + * XOR Out 0xffffffff + * Short command pycrc.py --model crc-32 + * Extended command pycrc.py --width 32 --poly 0x04c11db7 + * --reflect-in True --xor-in 0xffffffff --reflect-out True --xor-out 0xffffffff + * Check 0xcbf43926 + */ +uint32_t armv8_crc32_little(unsigned long crc, const unsigned char *buf, size_t len) +{ + uint32_t c = (uint32_t)~crc; + + while (len && ((uintptr_t)buf & 7)) { + c = __crc32b(c, *buf++); + --len; + } + + const uint64_t *buf8 = (const uint64_t *)buf; + + while (len >= 64) { + c = __crc32d(c, *buf8++); + c = __crc32d(c, *buf8++); + c = __crc32d(c, *buf8++); + c = __crc32d(c, *buf8++); + + c = __crc32d(c, *buf8++); + c = __crc32d(c, *buf8++); + c = __crc32d(c, *buf8++); + c = __crc32d(c, *buf8++); + len -= 64; + } + + while (len >= 8) { + c = __crc32d(c, *buf8++); + len -= 8; + } + + buf = (const unsigned char *)buf8; + + while (len--) { + c = __crc32b(c, *buf++); + } + + return ~c; +} +#pragma GCC pop_options \ No newline at end of file diff --git a/fsbl/lib/libtomcrypt/LICENSE b/fsbl/lib/libtomcrypt/LICENSE new file mode 100644 index 000000000..c4afbc6b5 --- /dev/null +++ b/fsbl/lib/libtomcrypt/LICENSE @@ -0,0 +1,29 @@ +LibTomCrypt is licensed under DUAL licensing terms. + +Choose and use the license of your needs. + +[LICENSE #1] + +LibTomCrypt is public domain. As should all quality software be. + +Tom St Denis + +[/LICENSE #1] + +[LICENSE #2] + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. + +[/LICENSE #2] diff --git a/fsbl/lib/libtomcrypt/README.md b/fsbl/lib/libtomcrypt/README.md new file mode 100644 index 000000000..d8bf01314 --- /dev/null +++ b/fsbl/lib/libtomcrypt/README.md @@ -0,0 +1,173 @@ +# libtomcrypt + +Previously the git repository contained `doc/crypt.pdf` for detailed documentation. +This was changed and the file is now only available from the tarball of the appropriate version +or from the page https://github.com/libtom/libtomcrypt/releases . + +## Project Status + +master: [![Build Status](https://api.travis-ci.org/libtom/libtomcrypt.png?branch=master)](https://travis-ci.org/libtom/libtomcrypt) [![Coverage Status](https://coveralls.io/repos/libtom/libtomcrypt/badge.png?branch=master)](https://coveralls.io/r/libtom/libtomcrypt) + +develop: [![Build Status](https://api.travis-ci.org/libtom/libtomcrypt.png?branch=develop)](https://travis-ci.org/libtom/libtomcrypt) [![Coverage Status](https://coveralls.io/repos/libtom/libtomcrypt/badge.png?branch=develop)](https://coveralls.io/r/libtom/libtomcrypt) + +[![Coverity Scan Build Status](https://scan.coverity.com/projects/487/badge.svg)](https://scan.coverity.com/projects/487) + +API/ABI changes: [check here](https://abi-laboratory.pro/tracker/timeline/libtomcrypt/) + +## Submitting patches + +Please branch off from develop if you want to submit a patch. + +Patch integration will be faster if tests and documentation are included. + +Please update the makefiles in a separate commit. To update them simply run the `updatemakes.sh` script. + +If you have something bigger to submit, feel free to contact us beforehand. +Then we can give you write access to this repo, so you can open your PR based on this repo +and we can easier follow the rebase-before-merge approach we're using (or even do the rebase ourself). + +### Reviews + +We're using Pull Request reviews to make sure that the code is in line with the existing code base. + +Please have a look [here](https://help.github.com/articles/approving-a-pull-request-with-required-reviews/) to get an idea of the approach. + +## Branches + +Please be aware, that all branches besides _master_ and _develop_ __can__ and __will be__ force-pushed, rebased and/or removed! + +If you want to rely on such an _unstable_ branch, create your own fork of this repository to make sure nothing breaks for you. + +## Configuration options + +By default the library builds its entire feature set (besides `katja`) in a (depending on your needs more or less) optimal way. + +There are numerous configuration options available if you want to trim down the functionality of the library. + +Please have a look at `src/headers/tomcrypt_custom.h` for all available configuration options. + +The following list is a small part of the available, but the most often required, configuration switches. + +| Flag | Behavior | +| ---- | -------- | +| `LTC_NO_TEST` | Remove all algorithm self-tests from the library | +| `LTC_NO_FILE` | Remove all API functions requiring a pre-defined `FILE` data-type (mostly useful for embedded targets) | +| `GMP_DESC` | enable [gmp](https://gmplib.org/) as MPI provider *\*1* | +| `LTM_DESC` | enable [libtommath](http://www.libtom.net/) as MPI provider *\*1* | +| `TFM_DESC` | enable [tomsfastmath](http://www.libtom.net/) as MPI provider *\*1* *\*2* | +| `USE_GMP` | use `gmp` as MPI provider when building the binaries *\*3* | +| `USE_LTM` | use `libtommath` as MPI provider when building the binaries *\*3* | +| `USE_TFM` | use `tomsfastmath` as MPI provider when building the binaries *\*3* | + +*\*1* It is possible to build the library against all MPI providers in parallel and choose at startup-time which math library should be used. + +*\*2* Please be aware that `tomsfastmath` has the limitation of a fixed max size of MPI's. + +*\*3* Only one is supported at the time & this is only required when building the binaries, not when building the library itself. + +## Building the library + +There are several `makefile`s provided. Please choose the one that fits best for you. + +| makefile | use-case | +| -------- | -------- | +| `makefile` | builds a static library (GNU Make required) | +| `makefile.shared` | builds a shared (and static) library (GNU Make required) | +| `makefile.unix` | for unusual UNIX platforms, or if you do not have GNU Make | +| `makefile.mingw` | for usage with the mingw compiler on MS Windows | +| `makefile.msvc` | for usage with the MSVC compiler on MS Windows | +| `libtomcrypt_VS2008.sln` | A VisualStudio 2008 project for MS Windows | + +### Make targets + +The `makefile`s provide several targets to build (VS project excluded). +The following list does not claim to be complete resp. to be available across all `makefile` variants. + +| target | application | +| ------ | ----------- | +| *empty target*/none given | c.f. `library` +| `library` | builds only the library | +| `hashsum` | builds the `hashsum` binary, similar to [`shasum`](https://linux.die.net/man/1/shasum), but with support for all hash-algorithms included in the library *\*4* | +| `ltcrypt` | builds the `ltcrypt` binary, implementing something similar to [`crypt`](https://linux.die.net/man/3/crypt) *\*4* | +| `sizes` | builds the `sizes` binary, printing all internal data sizes on invocation *\*4* | +| `constants` | builds the `constants` binary, printing all internal constants on invocation *\*4* | +| `openssl-enc` | builds the `openssl-enc` binary, which is more or less compatible to [`openssl enc`](https://linux.die.net/man/1/enc) *\*4* *\*5* | +| `test` | builds the `test` binary, which runs all algorithm self-tests + some extended tests *\*4* | +| `timing` | builds the `timing` binary, which can be used to measure timings for algorithms and modes *\*4* | +| `bins` | builds `hashsum` *\*4* | +| `all_test` | builds `test`, `hashsum`, `ltcrypt`, `small`, `tv_gen`, `sizes` & `constants` *\*4* | +| `docs` | builds the developer documentation `doc/crypt.pdf` | +| `install` | installs the `library` and header files *\*7* *\*8* | +| `install_bins` | installs the binaries created by the `bins` target *\*7* *\*8* | +| `install_docs` | installs the documentation created by the `docs` target *\*7* *\*8* | +| `install_test` | installs the test-app created by the `test` target *\*7* *\*8* | +| `install_all` | installs everything (i.e. `library`, `bins`, `docs` and `test`) *\*8* | +| `uninstall` | uninstalls the `library` and header files | + +*\*4* also builds `library` + +*\*5* broken build in some configurations, therefore not built by default + +*\*7* also builds the necessary artifact(s) before installing it + +*\*8* also have a look at the 'Installation' section of this file + +### Examples + +You want to build the library as static library + + make + +You want to build the library as shared library + + make -f makefile.shared + +You have `libtommath` installed on your system and want to build a static library and the `test` binary to run the self-tests. + + make CFLAGS="-DUSE_LTM -DLTM_DESC" EXTRALIBS="-ltommath" test + +You have `tomsfastmath` installed on your system and want to build a shared library and all binaries + + make -f makefile.shared CFLAGS="-DUSE_TFM -DTFM_DESC" EXTRALIBS="-ltfm" all demos + +You have `gmp`, `libtommath` and `tomsfastmath` installed on your system and want to build a static library and the `timing` binary to measure timings against `gmp`. + + make CFLAGS="-DUSE_GMP -DGMP_DESC -DLTM_DESC -DTFM_DESC" EXTRALIBS="-lgmp" timing + +If you have `libtommath` in a non-standard location: + + make CFLAGS="-DUSE_LTM -DLTM_DESC -I/opt/devel/ltm" EXTRALIBS="/opt/devel/ltm/libtommath.a" all + +## Installation + +There exist several _install_ make-targets which are described in the table above. + +These targets support the standard ways (c.f. [[GNU]], [[FreeBSD]]) +to modify the installation path via the following set of variables: + + DESTDIR + PREFIX + LIBPATH + INCPATH + DATAPATH + BINPATH + +The entire set of the variables is only supported in `makefile`, `makefile.shared` and `makefile.unix`. + +In case you have to use one of the other makefiles, check in the file which variables are supported. + +### Examples + +You want to install the static library to the default paths + + make install + +You want to install the shared library to a special path and use it from this path + + make -f makefile.shared PREFIX=/opt/special/path + +Have a look at the developer documentation, [[GNU]] or [[FreeBSD]] to get a detailed explanation of all the variables. + +[GNU]: https://www.gnu.org/prep/standards/html_node/DESTDIR.html + +[FreeBSD]: https://www.freebsd.org/doc/en/books/porters-handbook/porting-prefix.html diff --git a/fsbl/lib/libtomcrypt/src/ciphers/aes/aes.c b/fsbl/lib/libtomcrypt/src/ciphers/aes/aes.c new file mode 100644 index 000000000..5c1dcd1f0 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/ciphers/aes/aes.c @@ -0,0 +1,743 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* AES implementation by Tom St Denis + * + * Derived from the Public Domain source code by + +--- + * rijndael-alg-fst.c + * + * @version 3.0 (December 2000) + * + * Optimised ANSI C code for the Rijndael cipher (now AES) + * + * @author Vincent Rijmen + * @author Antoon Bosselaers + * @author Paulo Barreto +--- + */ +/** + @file aes.c + Implementation of AES +*/ + +#include "tomcrypt.h" + +#ifdef LTC_RIJNDAEL + +#ifndef ENCRYPT_ONLY + +#define SETUP rijndael_setup +#define ECB_ENC rijndael_ecb_encrypt +#define ECB_DEC rijndael_ecb_decrypt +#define ECB_DONE rijndael_done +#define ECB_TEST rijndael_test +#define ECB_KS rijndael_keysize + +const struct ltc_cipher_descriptor rijndael_desc = +{ + "rijndael", + 6, + 16, 32, 16, 10, + SETUP, ECB_ENC, ECB_DEC, ECB_TEST, ECB_DONE, ECB_KS, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + +const struct ltc_cipher_descriptor aes_desc = +{ + "aes", + 6, + 16, 32, 16, 10, + SETUP, ECB_ENC, ECB_DEC, ECB_TEST, ECB_DONE, ECB_KS, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + +#else + +#define SETUP rijndael_enc_setup +#define ECB_ENC rijndael_enc_ecb_encrypt +#define ECB_KS rijndael_enc_keysize +#define ECB_DONE rijndael_enc_done + +const struct ltc_cipher_descriptor rijndael_enc_desc = +{ + "rijndael", + 6, + 16, 32, 16, 10, + SETUP, ECB_ENC, NULL, NULL, ECB_DONE, ECB_KS, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + +const struct ltc_cipher_descriptor aes_enc_desc = +{ + "aes", + 6, + 16, 32, 16, 10, + SETUP, ECB_ENC, NULL, NULL, ECB_DONE, ECB_KS, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + +#endif + +#define __LTC_AES_TAB_C__ +#include "aes_tab.c" + +static ulong32 setup_mix(ulong32 temp) +{ + return (Te4_3[byte(temp, 2)]) ^ + (Te4_2[byte(temp, 1)]) ^ + (Te4_1[byte(temp, 0)]) ^ + (Te4_0[byte(temp, 3)]); +} + +#ifndef ENCRYPT_ONLY +#ifdef LTC_SMALL_CODE +static ulong32 setup_mix2(ulong32 temp) +{ + return Td0(255 & Te4[byte(temp, 3)]) ^ + Td1(255 & Te4[byte(temp, 2)]) ^ + Td2(255 & Te4[byte(temp, 1)]) ^ + Td3(255 & Te4[byte(temp, 0)]); +} +#endif +#endif + + /** + Initialize the AES (Rijndael) block cipher + @param key The symmetric key you wish to pass + @param keylen The key length in bytes + @param num_rounds The number of rounds desired (0 for default) + @param skey The key in as scheduled by this function. + @return CRYPT_OK if successful + */ +int SETUP(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +{ + int i; + ulong32 temp, *rk; +#ifndef ENCRYPT_ONLY + ulong32 *rrk; +#endif + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(skey != NULL); + + if (keylen != 16 && keylen != 24 && keylen != 32) { + return CRYPT_INVALID_KEYSIZE; + } + + if (num_rounds != 0 && num_rounds != (10 + ((keylen/8)-2)*2)) { + return CRYPT_INVALID_ROUNDS; + } + + skey->rijndael.Nr = 10 + ((keylen/8)-2)*2; + + /* setup the forward key */ + i = 0; + rk = skey->rijndael.eK; + LOAD32H(rk[0], key ); + LOAD32H(rk[1], key + 4); + LOAD32H(rk[2], key + 8); + LOAD32H(rk[3], key + 12); + if (keylen == 16) { + for (;;) { + temp = rk[3]; + rk[4] = rk[0] ^ setup_mix(temp) ^ rcon[i]; + rk[5] = rk[1] ^ rk[4]; + rk[6] = rk[2] ^ rk[5]; + rk[7] = rk[3] ^ rk[6]; + if (++i == 10) { + break; + } + rk += 4; + } + } else if (keylen == 24) { + LOAD32H(rk[4], key + 16); + LOAD32H(rk[5], key + 20); + for (;;) { + #ifdef _MSC_VER + temp = skey->rijndael.eK[rk - skey->rijndael.eK + 5]; + #else + temp = rk[5]; + #endif + rk[ 6] = rk[ 0] ^ setup_mix(temp) ^ rcon[i]; + rk[ 7] = rk[ 1] ^ rk[ 6]; + rk[ 8] = rk[ 2] ^ rk[ 7]; + rk[ 9] = rk[ 3] ^ rk[ 8]; + if (++i == 8) { + break; + } + rk[10] = rk[ 4] ^ rk[ 9]; + rk[11] = rk[ 5] ^ rk[10]; + rk += 6; + } + } else if (keylen == 32) { + LOAD32H(rk[4], key + 16); + LOAD32H(rk[5], key + 20); + LOAD32H(rk[6], key + 24); + LOAD32H(rk[7], key + 28); + for (;;) { + #ifdef _MSC_VER + temp = skey->rijndael.eK[rk - skey->rijndael.eK + 7]; + #else + temp = rk[7]; + #endif + rk[ 8] = rk[ 0] ^ setup_mix(temp) ^ rcon[i]; + rk[ 9] = rk[ 1] ^ rk[ 8]; + rk[10] = rk[ 2] ^ rk[ 9]; + rk[11] = rk[ 3] ^ rk[10]; + if (++i == 7) { + break; + } + temp = rk[11]; + rk[12] = rk[ 4] ^ setup_mix(RORc(temp, 8)); + rk[13] = rk[ 5] ^ rk[12]; + rk[14] = rk[ 6] ^ rk[13]; + rk[15] = rk[ 7] ^ rk[14]; + rk += 8; + } + } else { + /* this can't happen */ + /* coverity[dead_error_line] */ + return CRYPT_ERROR; + } + +#ifndef ENCRYPT_ONLY + /* setup the inverse key now */ + rk = skey->rijndael.dK; + rrk = skey->rijndael.eK + (28 + keylen) - 4; + + /* apply the inverse MixColumn transform to all round keys but the first and the last: */ + /* copy first */ + *rk++ = *rrk++; + *rk++ = *rrk++; + *rk++ = *rrk++; + *rk = *rrk; + rk -= 3; rrk -= 3; + + for (i = 1; i < skey->rijndael.Nr; i++) { + rrk -= 4; + rk += 4; + #ifdef LTC_SMALL_CODE + temp = rrk[0]; + rk[0] = setup_mix2(temp); + temp = rrk[1]; + rk[1] = setup_mix2(temp); + temp = rrk[2]; + rk[2] = setup_mix2(temp); + temp = rrk[3]; + rk[3] = setup_mix2(temp); + #else + temp = rrk[0]; + rk[0] = + Tks0[byte(temp, 3)] ^ + Tks1[byte(temp, 2)] ^ + Tks2[byte(temp, 1)] ^ + Tks3[byte(temp, 0)]; + temp = rrk[1]; + rk[1] = + Tks0[byte(temp, 3)] ^ + Tks1[byte(temp, 2)] ^ + Tks2[byte(temp, 1)] ^ + Tks3[byte(temp, 0)]; + temp = rrk[2]; + rk[2] = + Tks0[byte(temp, 3)] ^ + Tks1[byte(temp, 2)] ^ + Tks2[byte(temp, 1)] ^ + Tks3[byte(temp, 0)]; + temp = rrk[3]; + rk[3] = + Tks0[byte(temp, 3)] ^ + Tks1[byte(temp, 2)] ^ + Tks2[byte(temp, 1)] ^ + Tks3[byte(temp, 0)]; + #endif + + } + + /* copy last */ + rrk -= 4; + rk += 4; + *rk++ = *rrk++; + *rk++ = *rrk++; + *rk++ = *rrk++; + *rk = *rrk; +#endif /* ENCRYPT_ONLY */ + + return CRYPT_OK; +} + +/** + Encrypts a block of text with AES + @param pt The input plaintext (16 bytes) + @param ct The output ciphertext (16 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +#ifdef LTC_CLEAN_STACK +static int _rijndael_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +#else +int ECB_ENC(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +#endif +{ + ulong32 s0, s1, s2, s3, t0, t1, t2, t3, *rk; + int Nr, r; + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + + Nr = skey->rijndael.Nr; + rk = skey->rijndael.eK; + + /* + * map byte array block to cipher state + * and add initial round key: + */ + LOAD32H(s0, pt ); s0 ^= rk[0]; + LOAD32H(s1, pt + 4); s1 ^= rk[1]; + LOAD32H(s2, pt + 8); s2 ^= rk[2]; + LOAD32H(s3, pt + 12); s3 ^= rk[3]; + +#ifdef LTC_SMALL_CODE + + for (r = 0; ; r++) { + rk += 4; + t0 = + Te0(byte(s0, 3)) ^ + Te1(byte(s1, 2)) ^ + Te2(byte(s2, 1)) ^ + Te3(byte(s3, 0)) ^ + rk[0]; + t1 = + Te0(byte(s1, 3)) ^ + Te1(byte(s2, 2)) ^ + Te2(byte(s3, 1)) ^ + Te3(byte(s0, 0)) ^ + rk[1]; + t2 = + Te0(byte(s2, 3)) ^ + Te1(byte(s3, 2)) ^ + Te2(byte(s0, 1)) ^ + Te3(byte(s1, 0)) ^ + rk[2]; + t3 = + Te0(byte(s3, 3)) ^ + Te1(byte(s0, 2)) ^ + Te2(byte(s1, 1)) ^ + Te3(byte(s2, 0)) ^ + rk[3]; + if (r == Nr-2) { + break; + } + s0 = t0; s1 = t1; s2 = t2; s3 = t3; + } + rk += 4; + +#else + + /* + * Nr - 1 full rounds: + */ + r = Nr >> 1; + for (;;) { + t0 = + Te0(byte(s0, 3)) ^ + Te1(byte(s1, 2)) ^ + Te2(byte(s2, 1)) ^ + Te3(byte(s3, 0)) ^ + rk[4]; + t1 = + Te0(byte(s1, 3)) ^ + Te1(byte(s2, 2)) ^ + Te2(byte(s3, 1)) ^ + Te3(byte(s0, 0)) ^ + rk[5]; + t2 = + Te0(byte(s2, 3)) ^ + Te1(byte(s3, 2)) ^ + Te2(byte(s0, 1)) ^ + Te3(byte(s1, 0)) ^ + rk[6]; + t3 = + Te0(byte(s3, 3)) ^ + Te1(byte(s0, 2)) ^ + Te2(byte(s1, 1)) ^ + Te3(byte(s2, 0)) ^ + rk[7]; + + rk += 8; + if (--r == 0) { + break; + } + + s0 = + Te0(byte(t0, 3)) ^ + Te1(byte(t1, 2)) ^ + Te2(byte(t2, 1)) ^ + Te3(byte(t3, 0)) ^ + rk[0]; + s1 = + Te0(byte(t1, 3)) ^ + Te1(byte(t2, 2)) ^ + Te2(byte(t3, 1)) ^ + Te3(byte(t0, 0)) ^ + rk[1]; + s2 = + Te0(byte(t2, 3)) ^ + Te1(byte(t3, 2)) ^ + Te2(byte(t0, 1)) ^ + Te3(byte(t1, 0)) ^ + rk[2]; + s3 = + Te0(byte(t3, 3)) ^ + Te1(byte(t0, 2)) ^ + Te2(byte(t1, 1)) ^ + Te3(byte(t2, 0)) ^ + rk[3]; + } + +#endif + + /* + * apply last round and + * map cipher state to byte array block: + */ + s0 = + (Te4_3[byte(t0, 3)]) ^ + (Te4_2[byte(t1, 2)]) ^ + (Te4_1[byte(t2, 1)]) ^ + (Te4_0[byte(t3, 0)]) ^ + rk[0]; + STORE32H(s0, ct); + s1 = + (Te4_3[byte(t1, 3)]) ^ + (Te4_2[byte(t2, 2)]) ^ + (Te4_1[byte(t3, 1)]) ^ + (Te4_0[byte(t0, 0)]) ^ + rk[1]; + STORE32H(s1, ct+4); + s2 = + (Te4_3[byte(t2, 3)]) ^ + (Te4_2[byte(t3, 2)]) ^ + (Te4_1[byte(t0, 1)]) ^ + (Te4_0[byte(t1, 0)]) ^ + rk[2]; + STORE32H(s2, ct+8); + s3 = + (Te4_3[byte(t3, 3)]) ^ + (Te4_2[byte(t0, 2)]) ^ + (Te4_1[byte(t1, 1)]) ^ + (Te4_0[byte(t2, 0)]) ^ + rk[3]; + STORE32H(s3, ct+12); + + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +int ECB_ENC(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +{ + int err = _rijndael_ecb_encrypt(pt, ct, skey); + burn_stack(sizeof(unsigned long)*8 + sizeof(unsigned long*) + sizeof(int)*2); + return err; +} +#endif + +#ifndef ENCRYPT_ONLY + +/** + Decrypts a block of text with AES + @param ct The input ciphertext (16 bytes) + @param pt The output plaintext (16 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +#ifdef LTC_CLEAN_STACK +static int _rijndael_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +#else +int ECB_DEC(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +#endif +{ + ulong32 s0, s1, s2, s3, t0, t1, t2, t3, *rk; + int Nr, r; + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + + Nr = skey->rijndael.Nr; + rk = skey->rijndael.dK; + + /* + * map byte array block to cipher state + * and add initial round key: + */ + LOAD32H(s0, ct ); s0 ^= rk[0]; + LOAD32H(s1, ct + 4); s1 ^= rk[1]; + LOAD32H(s2, ct + 8); s2 ^= rk[2]; + LOAD32H(s3, ct + 12); s3 ^= rk[3]; + +#ifdef LTC_SMALL_CODE + for (r = 0; ; r++) { + rk += 4; + t0 = + Td0(byte(s0, 3)) ^ + Td1(byte(s3, 2)) ^ + Td2(byte(s2, 1)) ^ + Td3(byte(s1, 0)) ^ + rk[0]; + t1 = + Td0(byte(s1, 3)) ^ + Td1(byte(s0, 2)) ^ + Td2(byte(s3, 1)) ^ + Td3(byte(s2, 0)) ^ + rk[1]; + t2 = + Td0(byte(s2, 3)) ^ + Td1(byte(s1, 2)) ^ + Td2(byte(s0, 1)) ^ + Td3(byte(s3, 0)) ^ + rk[2]; + t3 = + Td0(byte(s3, 3)) ^ + Td1(byte(s2, 2)) ^ + Td2(byte(s1, 1)) ^ + Td3(byte(s0, 0)) ^ + rk[3]; + if (r == Nr-2) { + break; + } + s0 = t0; s1 = t1; s2 = t2; s3 = t3; + } + rk += 4; + +#else + + /* + * Nr - 1 full rounds: + */ + r = Nr >> 1; + for (;;) { + + t0 = + Td0(byte(s0, 3)) ^ + Td1(byte(s3, 2)) ^ + Td2(byte(s2, 1)) ^ + Td3(byte(s1, 0)) ^ + rk[4]; + t1 = + Td0(byte(s1, 3)) ^ + Td1(byte(s0, 2)) ^ + Td2(byte(s3, 1)) ^ + Td3(byte(s2, 0)) ^ + rk[5]; + t2 = + Td0(byte(s2, 3)) ^ + Td1(byte(s1, 2)) ^ + Td2(byte(s0, 1)) ^ + Td3(byte(s3, 0)) ^ + rk[6]; + t3 = + Td0(byte(s3, 3)) ^ + Td1(byte(s2, 2)) ^ + Td2(byte(s1, 1)) ^ + Td3(byte(s0, 0)) ^ + rk[7]; + + rk += 8; + if (--r == 0) { + break; + } + + + s0 = + Td0(byte(t0, 3)) ^ + Td1(byte(t3, 2)) ^ + Td2(byte(t2, 1)) ^ + Td3(byte(t1, 0)) ^ + rk[0]; + s1 = + Td0(byte(t1, 3)) ^ + Td1(byte(t0, 2)) ^ + Td2(byte(t3, 1)) ^ + Td3(byte(t2, 0)) ^ + rk[1]; + s2 = + Td0(byte(t2, 3)) ^ + Td1(byte(t1, 2)) ^ + Td2(byte(t0, 1)) ^ + Td3(byte(t3, 0)) ^ + rk[2]; + s3 = + Td0(byte(t3, 3)) ^ + Td1(byte(t2, 2)) ^ + Td2(byte(t1, 1)) ^ + Td3(byte(t0, 0)) ^ + rk[3]; + } +#endif + + /* + * apply last round and + * map cipher state to byte array block: + */ + s0 = + (Td4[byte(t0, 3)] & 0xff000000) ^ + (Td4[byte(t3, 2)] & 0x00ff0000) ^ + (Td4[byte(t2, 1)] & 0x0000ff00) ^ + (Td4[byte(t1, 0)] & 0x000000ff) ^ + rk[0]; + STORE32H(s0, pt); + s1 = + (Td4[byte(t1, 3)] & 0xff000000) ^ + (Td4[byte(t0, 2)] & 0x00ff0000) ^ + (Td4[byte(t3, 1)] & 0x0000ff00) ^ + (Td4[byte(t2, 0)] & 0x000000ff) ^ + rk[1]; + STORE32H(s1, pt+4); + s2 = + (Td4[byte(t2, 3)] & 0xff000000) ^ + (Td4[byte(t1, 2)] & 0x00ff0000) ^ + (Td4[byte(t0, 1)] & 0x0000ff00) ^ + (Td4[byte(t3, 0)] & 0x000000ff) ^ + rk[2]; + STORE32H(s2, pt+8); + s3 = + (Td4[byte(t3, 3)] & 0xff000000) ^ + (Td4[byte(t2, 2)] & 0x00ff0000) ^ + (Td4[byte(t1, 1)] & 0x0000ff00) ^ + (Td4[byte(t0, 0)] & 0x000000ff) ^ + rk[3]; + STORE32H(s3, pt+12); + + return CRYPT_OK; +} + + +#ifdef LTC_CLEAN_STACK +int ECB_DEC(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +{ + int err = _rijndael_ecb_decrypt(ct, pt, skey); + burn_stack(sizeof(unsigned long)*8 + sizeof(unsigned long*) + sizeof(int)*2); + return err; +} +#endif + +/** + Performs a self-test of the AES block cipher + @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled +*/ +int ECB_TEST(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + int err; + static const struct { + int keylen; + unsigned char key[32], pt[16], ct[16]; + } tests[] = { + { 16, + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, + 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, + { 0x69, 0xc4, 0xe0, 0xd8, 0x6a, 0x7b, 0x04, 0x30, + 0xd8, 0xcd, 0xb7, 0x80, 0x70, 0xb4, 0xc5, 0x5a } + }, { + 24, + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 }, + { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, + 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, + { 0xdd, 0xa9, 0x7c, 0xa4, 0x86, 0x4c, 0xdf, 0xe0, + 0x6e, 0xaf, 0x70, 0xa0, 0xec, 0x0d, 0x71, 0x91 } + }, { + 32, + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, + { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, + 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, + { 0x8e, 0xa2, 0xb7, 0xca, 0x51, 0x67, 0x45, 0xbf, + 0xea, 0xfc, 0x49, 0x90, 0x4b, 0x49, 0x60, 0x89 } + } + }; + + symmetric_key key; + unsigned char tmp[2][16]; + int i, y; + + for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) { + zeromem(&key, sizeof(key)); + if ((err = rijndael_setup(tests[i].key, tests[i].keylen, 0, &key)) != CRYPT_OK) { + return err; + } + + rijndael_ecb_encrypt(tests[i].pt, tmp[0], &key); + rijndael_ecb_decrypt(tmp[0], tmp[1], &key); + if (compare_testvector(tmp[0], 16, tests[i].ct, 16, "AES Encrypt", i) || + compare_testvector(tmp[1], 16, tests[i].pt, 16, "AES Decrypt", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 16; y++) tmp[0][y] = 0; + for (y = 0; y < 1000; y++) rijndael_ecb_encrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 1000; y++) rijndael_ecb_decrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 16; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; + } + return CRYPT_OK; + #endif +} + +#endif /* ENCRYPT_ONLY */ + + +/** Terminate the context + @param skey The scheduled key +*/ +void ECB_DONE(symmetric_key *skey) +{ + LTC_UNUSED_PARAM(skey); +} + + +/** + Gets suitable key size + @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. + @return CRYPT_OK if the input key size is acceptable. +*/ +int ECB_KS(int *keysize) +{ + LTC_ARGCHK(keysize != NULL); + + if (*keysize < 16) + return CRYPT_INVALID_KEYSIZE; + if (*keysize < 24) { + *keysize = 16; + return CRYPT_OK; + } else if (*keysize < 32) { + *keysize = 24; + return CRYPT_OK; + } else { + *keysize = 32; + return CRYPT_OK; + } +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/ciphers/aes/aes_tab.c b/fsbl/lib/libtomcrypt/src/ciphers/aes/aes_tab.c new file mode 100644 index 000000000..b15596e09 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/ciphers/aes/aes_tab.c @@ -0,0 +1,1032 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +/* The precomputed tables for AES */ +/* +Te0[x] = S [x].[02, 01, 01, 03]; +Te1[x] = S [x].[03, 02, 01, 01]; +Te2[x] = S [x].[01, 03, 02, 01]; +Te3[x] = S [x].[01, 01, 03, 02]; +Te4[x] = S [x].[01, 01, 01, 01]; + +Td0[x] = Si[x].[0e, 09, 0d, 0b]; +Td1[x] = Si[x].[0b, 0e, 09, 0d]; +Td2[x] = Si[x].[0d, 0b, 0e, 09]; +Td3[x] = Si[x].[09, 0d, 0b, 0e]; +Td4[x] = Si[x].[01, 01, 01, 01]; +*/ + +#ifdef __LTC_AES_TAB_C__ + +/** + @file aes_tab.c + AES tables +*/ +static const ulong32 TE0[256] = { + 0xc66363a5UL, 0xf87c7c84UL, 0xee777799UL, 0xf67b7b8dUL, + 0xfff2f20dUL, 0xd66b6bbdUL, 0xde6f6fb1UL, 0x91c5c554UL, + 0x60303050UL, 0x02010103UL, 0xce6767a9UL, 0x562b2b7dUL, + 0xe7fefe19UL, 0xb5d7d762UL, 0x4dababe6UL, 0xec76769aUL, + 0x8fcaca45UL, 0x1f82829dUL, 0x89c9c940UL, 0xfa7d7d87UL, + 0xeffafa15UL, 0xb25959ebUL, 0x8e4747c9UL, 0xfbf0f00bUL, + 0x41adadecUL, 0xb3d4d467UL, 0x5fa2a2fdUL, 0x45afafeaUL, + 0x239c9cbfUL, 0x53a4a4f7UL, 0xe4727296UL, 0x9bc0c05bUL, + 0x75b7b7c2UL, 0xe1fdfd1cUL, 0x3d9393aeUL, 0x4c26266aUL, + 0x6c36365aUL, 0x7e3f3f41UL, 0xf5f7f702UL, 0x83cccc4fUL, + 0x6834345cUL, 0x51a5a5f4UL, 0xd1e5e534UL, 0xf9f1f108UL, + 0xe2717193UL, 0xabd8d873UL, 0x62313153UL, 0x2a15153fUL, + 0x0804040cUL, 0x95c7c752UL, 0x46232365UL, 0x9dc3c35eUL, + 0x30181828UL, 0x379696a1UL, 0x0a05050fUL, 0x2f9a9ab5UL, + 0x0e070709UL, 0x24121236UL, 0x1b80809bUL, 0xdfe2e23dUL, + 0xcdebeb26UL, 0x4e272769UL, 0x7fb2b2cdUL, 0xea75759fUL, + 0x1209091bUL, 0x1d83839eUL, 0x582c2c74UL, 0x341a1a2eUL, + 0x361b1b2dUL, 0xdc6e6eb2UL, 0xb45a5aeeUL, 0x5ba0a0fbUL, + 0xa45252f6UL, 0x763b3b4dUL, 0xb7d6d661UL, 0x7db3b3ceUL, + 0x5229297bUL, 0xdde3e33eUL, 0x5e2f2f71UL, 0x13848497UL, + 0xa65353f5UL, 0xb9d1d168UL, 0x00000000UL, 0xc1eded2cUL, + 0x40202060UL, 0xe3fcfc1fUL, 0x79b1b1c8UL, 0xb65b5bedUL, + 0xd46a6abeUL, 0x8dcbcb46UL, 0x67bebed9UL, 0x7239394bUL, + 0x944a4adeUL, 0x984c4cd4UL, 0xb05858e8UL, 0x85cfcf4aUL, + 0xbbd0d06bUL, 0xc5efef2aUL, 0x4faaaae5UL, 0xedfbfb16UL, + 0x864343c5UL, 0x9a4d4dd7UL, 0x66333355UL, 0x11858594UL, + 0x8a4545cfUL, 0xe9f9f910UL, 0x04020206UL, 0xfe7f7f81UL, + 0xa05050f0UL, 0x783c3c44UL, 0x259f9fbaUL, 0x4ba8a8e3UL, + 0xa25151f3UL, 0x5da3a3feUL, 0x804040c0UL, 0x058f8f8aUL, + 0x3f9292adUL, 0x219d9dbcUL, 0x70383848UL, 0xf1f5f504UL, + 0x63bcbcdfUL, 0x77b6b6c1UL, 0xafdada75UL, 0x42212163UL, + 0x20101030UL, 0xe5ffff1aUL, 0xfdf3f30eUL, 0xbfd2d26dUL, + 0x81cdcd4cUL, 0x180c0c14UL, 0x26131335UL, 0xc3ecec2fUL, + 0xbe5f5fe1UL, 0x359797a2UL, 0x884444ccUL, 0x2e171739UL, + 0x93c4c457UL, 0x55a7a7f2UL, 0xfc7e7e82UL, 0x7a3d3d47UL, + 0xc86464acUL, 0xba5d5de7UL, 0x3219192bUL, 0xe6737395UL, + 0xc06060a0UL, 0x19818198UL, 0x9e4f4fd1UL, 0xa3dcdc7fUL, + 0x44222266UL, 0x542a2a7eUL, 0x3b9090abUL, 0x0b888883UL, + 0x8c4646caUL, 0xc7eeee29UL, 0x6bb8b8d3UL, 0x2814143cUL, + 0xa7dede79UL, 0xbc5e5ee2UL, 0x160b0b1dUL, 0xaddbdb76UL, + 0xdbe0e03bUL, 0x64323256UL, 0x743a3a4eUL, 0x140a0a1eUL, + 0x924949dbUL, 0x0c06060aUL, 0x4824246cUL, 0xb85c5ce4UL, + 0x9fc2c25dUL, 0xbdd3d36eUL, 0x43acacefUL, 0xc46262a6UL, + 0x399191a8UL, 0x319595a4UL, 0xd3e4e437UL, 0xf279798bUL, + 0xd5e7e732UL, 0x8bc8c843UL, 0x6e373759UL, 0xda6d6db7UL, + 0x018d8d8cUL, 0xb1d5d564UL, 0x9c4e4ed2UL, 0x49a9a9e0UL, + 0xd86c6cb4UL, 0xac5656faUL, 0xf3f4f407UL, 0xcfeaea25UL, + 0xca6565afUL, 0xf47a7a8eUL, 0x47aeaee9UL, 0x10080818UL, + 0x6fbabad5UL, 0xf0787888UL, 0x4a25256fUL, 0x5c2e2e72UL, + 0x381c1c24UL, 0x57a6a6f1UL, 0x73b4b4c7UL, 0x97c6c651UL, + 0xcbe8e823UL, 0xa1dddd7cUL, 0xe874749cUL, 0x3e1f1f21UL, + 0x964b4bddUL, 0x61bdbddcUL, 0x0d8b8b86UL, 0x0f8a8a85UL, + 0xe0707090UL, 0x7c3e3e42UL, 0x71b5b5c4UL, 0xcc6666aaUL, + 0x904848d8UL, 0x06030305UL, 0xf7f6f601UL, 0x1c0e0e12UL, + 0xc26161a3UL, 0x6a35355fUL, 0xae5757f9UL, 0x69b9b9d0UL, + 0x17868691UL, 0x99c1c158UL, 0x3a1d1d27UL, 0x279e9eb9UL, + 0xd9e1e138UL, 0xebf8f813UL, 0x2b9898b3UL, 0x22111133UL, + 0xd26969bbUL, 0xa9d9d970UL, 0x078e8e89UL, 0x339494a7UL, + 0x2d9b9bb6UL, 0x3c1e1e22UL, 0x15878792UL, 0xc9e9e920UL, + 0x87cece49UL, 0xaa5555ffUL, 0x50282878UL, 0xa5dfdf7aUL, + 0x038c8c8fUL, 0x59a1a1f8UL, 0x09898980UL, 0x1a0d0d17UL, + 0x65bfbfdaUL, 0xd7e6e631UL, 0x844242c6UL, 0xd06868b8UL, + 0x824141c3UL, 0x299999b0UL, 0x5a2d2d77UL, 0x1e0f0f11UL, + 0x7bb0b0cbUL, 0xa85454fcUL, 0x6dbbbbd6UL, 0x2c16163aUL, +}; + +#if !defined(PELI_TAB) && defined(LTC_SMALL_CODE) +static const ulong32 Te4[256] = { + 0x63636363UL, 0x7c7c7c7cUL, 0x77777777UL, 0x7b7b7b7bUL, + 0xf2f2f2f2UL, 0x6b6b6b6bUL, 0x6f6f6f6fUL, 0xc5c5c5c5UL, + 0x30303030UL, 0x01010101UL, 0x67676767UL, 0x2b2b2b2bUL, + 0xfefefefeUL, 0xd7d7d7d7UL, 0xababababUL, 0x76767676UL, + 0xcacacacaUL, 0x82828282UL, 0xc9c9c9c9UL, 0x7d7d7d7dUL, + 0xfafafafaUL, 0x59595959UL, 0x47474747UL, 0xf0f0f0f0UL, + 0xadadadadUL, 0xd4d4d4d4UL, 0xa2a2a2a2UL, 0xafafafafUL, + 0x9c9c9c9cUL, 0xa4a4a4a4UL, 0x72727272UL, 0xc0c0c0c0UL, + 0xb7b7b7b7UL, 0xfdfdfdfdUL, 0x93939393UL, 0x26262626UL, + 0x36363636UL, 0x3f3f3f3fUL, 0xf7f7f7f7UL, 0xccccccccUL, + 0x34343434UL, 0xa5a5a5a5UL, 0xe5e5e5e5UL, 0xf1f1f1f1UL, + 0x71717171UL, 0xd8d8d8d8UL, 0x31313131UL, 0x15151515UL, + 0x04040404UL, 0xc7c7c7c7UL, 0x23232323UL, 0xc3c3c3c3UL, + 0x18181818UL, 0x96969696UL, 0x05050505UL, 0x9a9a9a9aUL, + 0x07070707UL, 0x12121212UL, 0x80808080UL, 0xe2e2e2e2UL, + 0xebebebebUL, 0x27272727UL, 0xb2b2b2b2UL, 0x75757575UL, + 0x09090909UL, 0x83838383UL, 0x2c2c2c2cUL, 0x1a1a1a1aUL, + 0x1b1b1b1bUL, 0x6e6e6e6eUL, 0x5a5a5a5aUL, 0xa0a0a0a0UL, + 0x52525252UL, 0x3b3b3b3bUL, 0xd6d6d6d6UL, 0xb3b3b3b3UL, + 0x29292929UL, 0xe3e3e3e3UL, 0x2f2f2f2fUL, 0x84848484UL, + 0x53535353UL, 0xd1d1d1d1UL, 0x00000000UL, 0xededededUL, + 0x20202020UL, 0xfcfcfcfcUL, 0xb1b1b1b1UL, 0x5b5b5b5bUL, + 0x6a6a6a6aUL, 0xcbcbcbcbUL, 0xbebebebeUL, 0x39393939UL, + 0x4a4a4a4aUL, 0x4c4c4c4cUL, 0x58585858UL, 0xcfcfcfcfUL, + 0xd0d0d0d0UL, 0xefefefefUL, 0xaaaaaaaaUL, 0xfbfbfbfbUL, + 0x43434343UL, 0x4d4d4d4dUL, 0x33333333UL, 0x85858585UL, + 0x45454545UL, 0xf9f9f9f9UL, 0x02020202UL, 0x7f7f7f7fUL, + 0x50505050UL, 0x3c3c3c3cUL, 0x9f9f9f9fUL, 0xa8a8a8a8UL, + 0x51515151UL, 0xa3a3a3a3UL, 0x40404040UL, 0x8f8f8f8fUL, + 0x92929292UL, 0x9d9d9d9dUL, 0x38383838UL, 0xf5f5f5f5UL, + 0xbcbcbcbcUL, 0xb6b6b6b6UL, 0xdadadadaUL, 0x21212121UL, + 0x10101010UL, 0xffffffffUL, 0xf3f3f3f3UL, 0xd2d2d2d2UL, + 0xcdcdcdcdUL, 0x0c0c0c0cUL, 0x13131313UL, 0xececececUL, + 0x5f5f5f5fUL, 0x97979797UL, 0x44444444UL, 0x17171717UL, + 0xc4c4c4c4UL, 0xa7a7a7a7UL, 0x7e7e7e7eUL, 0x3d3d3d3dUL, + 0x64646464UL, 0x5d5d5d5dUL, 0x19191919UL, 0x73737373UL, + 0x60606060UL, 0x81818181UL, 0x4f4f4f4fUL, 0xdcdcdcdcUL, + 0x22222222UL, 0x2a2a2a2aUL, 0x90909090UL, 0x88888888UL, + 0x46464646UL, 0xeeeeeeeeUL, 0xb8b8b8b8UL, 0x14141414UL, + 0xdedededeUL, 0x5e5e5e5eUL, 0x0b0b0b0bUL, 0xdbdbdbdbUL, + 0xe0e0e0e0UL, 0x32323232UL, 0x3a3a3a3aUL, 0x0a0a0a0aUL, + 0x49494949UL, 0x06060606UL, 0x24242424UL, 0x5c5c5c5cUL, + 0xc2c2c2c2UL, 0xd3d3d3d3UL, 0xacacacacUL, 0x62626262UL, + 0x91919191UL, 0x95959595UL, 0xe4e4e4e4UL, 0x79797979UL, + 0xe7e7e7e7UL, 0xc8c8c8c8UL, 0x37373737UL, 0x6d6d6d6dUL, + 0x8d8d8d8dUL, 0xd5d5d5d5UL, 0x4e4e4e4eUL, 0xa9a9a9a9UL, + 0x6c6c6c6cUL, 0x56565656UL, 0xf4f4f4f4UL, 0xeaeaeaeaUL, + 0x65656565UL, 0x7a7a7a7aUL, 0xaeaeaeaeUL, 0x08080808UL, + 0xbabababaUL, 0x78787878UL, 0x25252525UL, 0x2e2e2e2eUL, + 0x1c1c1c1cUL, 0xa6a6a6a6UL, 0xb4b4b4b4UL, 0xc6c6c6c6UL, + 0xe8e8e8e8UL, 0xddddddddUL, 0x74747474UL, 0x1f1f1f1fUL, + 0x4b4b4b4bUL, 0xbdbdbdbdUL, 0x8b8b8b8bUL, 0x8a8a8a8aUL, + 0x70707070UL, 0x3e3e3e3eUL, 0xb5b5b5b5UL, 0x66666666UL, + 0x48484848UL, 0x03030303UL, 0xf6f6f6f6UL, 0x0e0e0e0eUL, + 0x61616161UL, 0x35353535UL, 0x57575757UL, 0xb9b9b9b9UL, + 0x86868686UL, 0xc1c1c1c1UL, 0x1d1d1d1dUL, 0x9e9e9e9eUL, + 0xe1e1e1e1UL, 0xf8f8f8f8UL, 0x98989898UL, 0x11111111UL, + 0x69696969UL, 0xd9d9d9d9UL, 0x8e8e8e8eUL, 0x94949494UL, + 0x9b9b9b9bUL, 0x1e1e1e1eUL, 0x87878787UL, 0xe9e9e9e9UL, + 0xcecececeUL, 0x55555555UL, 0x28282828UL, 0xdfdfdfdfUL, + 0x8c8c8c8cUL, 0xa1a1a1a1UL, 0x89898989UL, 0x0d0d0d0dUL, + 0xbfbfbfbfUL, 0xe6e6e6e6UL, 0x42424242UL, 0x68686868UL, + 0x41414141UL, 0x99999999UL, 0x2d2d2d2dUL, 0x0f0f0f0fUL, + 0xb0b0b0b0UL, 0x54545454UL, 0xbbbbbbbbUL, 0x16161616UL, +}; +#endif + +#ifndef ENCRYPT_ONLY + +static const ulong32 TD0[256] = { + 0x51f4a750UL, 0x7e416553UL, 0x1a17a4c3UL, 0x3a275e96UL, + 0x3bab6bcbUL, 0x1f9d45f1UL, 0xacfa58abUL, 0x4be30393UL, + 0x2030fa55UL, 0xad766df6UL, 0x88cc7691UL, 0xf5024c25UL, + 0x4fe5d7fcUL, 0xc52acbd7UL, 0x26354480UL, 0xb562a38fUL, + 0xdeb15a49UL, 0x25ba1b67UL, 0x45ea0e98UL, 0x5dfec0e1UL, + 0xc32f7502UL, 0x814cf012UL, 0x8d4697a3UL, 0x6bd3f9c6UL, + 0x038f5fe7UL, 0x15929c95UL, 0xbf6d7aebUL, 0x955259daUL, + 0xd4be832dUL, 0x587421d3UL, 0x49e06929UL, 0x8ec9c844UL, + 0x75c2896aUL, 0xf48e7978UL, 0x99583e6bUL, 0x27b971ddUL, + 0xbee14fb6UL, 0xf088ad17UL, 0xc920ac66UL, 0x7dce3ab4UL, + 0x63df4a18UL, 0xe51a3182UL, 0x97513360UL, 0x62537f45UL, + 0xb16477e0UL, 0xbb6bae84UL, 0xfe81a01cUL, 0xf9082b94UL, + 0x70486858UL, 0x8f45fd19UL, 0x94de6c87UL, 0x527bf8b7UL, + 0xab73d323UL, 0x724b02e2UL, 0xe31f8f57UL, 0x6655ab2aUL, + 0xb2eb2807UL, 0x2fb5c203UL, 0x86c57b9aUL, 0xd33708a5UL, + 0x302887f2UL, 0x23bfa5b2UL, 0x02036abaUL, 0xed16825cUL, + 0x8acf1c2bUL, 0xa779b492UL, 0xf307f2f0UL, 0x4e69e2a1UL, + 0x65daf4cdUL, 0x0605bed5UL, 0xd134621fUL, 0xc4a6fe8aUL, + 0x342e539dUL, 0xa2f355a0UL, 0x058ae132UL, 0xa4f6eb75UL, + 0x0b83ec39UL, 0x4060efaaUL, 0x5e719f06UL, 0xbd6e1051UL, + 0x3e218af9UL, 0x96dd063dUL, 0xdd3e05aeUL, 0x4de6bd46UL, + 0x91548db5UL, 0x71c45d05UL, 0x0406d46fUL, 0x605015ffUL, + 0x1998fb24UL, 0xd6bde997UL, 0x894043ccUL, 0x67d99e77UL, + 0xb0e842bdUL, 0x07898b88UL, 0xe7195b38UL, 0x79c8eedbUL, + 0xa17c0a47UL, 0x7c420fe9UL, 0xf8841ec9UL, 0x00000000UL, + 0x09808683UL, 0x322bed48UL, 0x1e1170acUL, 0x6c5a724eUL, + 0xfd0efffbUL, 0x0f853856UL, 0x3daed51eUL, 0x362d3927UL, + 0x0a0fd964UL, 0x685ca621UL, 0x9b5b54d1UL, 0x24362e3aUL, + 0x0c0a67b1UL, 0x9357e70fUL, 0xb4ee96d2UL, 0x1b9b919eUL, + 0x80c0c54fUL, 0x61dc20a2UL, 0x5a774b69UL, 0x1c121a16UL, + 0xe293ba0aUL, 0xc0a02ae5UL, 0x3c22e043UL, 0x121b171dUL, + 0x0e090d0bUL, 0xf28bc7adUL, 0x2db6a8b9UL, 0x141ea9c8UL, + 0x57f11985UL, 0xaf75074cUL, 0xee99ddbbUL, 0xa37f60fdUL, + 0xf701269fUL, 0x5c72f5bcUL, 0x44663bc5UL, 0x5bfb7e34UL, + 0x8b432976UL, 0xcb23c6dcUL, 0xb6edfc68UL, 0xb8e4f163UL, + 0xd731dccaUL, 0x42638510UL, 0x13972240UL, 0x84c61120UL, + 0x854a247dUL, 0xd2bb3df8UL, 0xaef93211UL, 0xc729a16dUL, + 0x1d9e2f4bUL, 0xdcb230f3UL, 0x0d8652ecUL, 0x77c1e3d0UL, + 0x2bb3166cUL, 0xa970b999UL, 0x119448faUL, 0x47e96422UL, + 0xa8fc8cc4UL, 0xa0f03f1aUL, 0x567d2cd8UL, 0x223390efUL, + 0x87494ec7UL, 0xd938d1c1UL, 0x8ccaa2feUL, 0x98d40b36UL, + 0xa6f581cfUL, 0xa57ade28UL, 0xdab78e26UL, 0x3fadbfa4UL, + 0x2c3a9de4UL, 0x5078920dUL, 0x6a5fcc9bUL, 0x547e4662UL, + 0xf68d13c2UL, 0x90d8b8e8UL, 0x2e39f75eUL, 0x82c3aff5UL, + 0x9f5d80beUL, 0x69d0937cUL, 0x6fd52da9UL, 0xcf2512b3UL, + 0xc8ac993bUL, 0x10187da7UL, 0xe89c636eUL, 0xdb3bbb7bUL, + 0xcd267809UL, 0x6e5918f4UL, 0xec9ab701UL, 0x834f9aa8UL, + 0xe6956e65UL, 0xaaffe67eUL, 0x21bccf08UL, 0xef15e8e6UL, + 0xbae79bd9UL, 0x4a6f36ceUL, 0xea9f09d4UL, 0x29b07cd6UL, + 0x31a4b2afUL, 0x2a3f2331UL, 0xc6a59430UL, 0x35a266c0UL, + 0x744ebc37UL, 0xfc82caa6UL, 0xe090d0b0UL, 0x33a7d815UL, + 0xf104984aUL, 0x41ecdaf7UL, 0x7fcd500eUL, 0x1791f62fUL, + 0x764dd68dUL, 0x43efb04dUL, 0xccaa4d54UL, 0xe49604dfUL, + 0x9ed1b5e3UL, 0x4c6a881bUL, 0xc12c1fb8UL, 0x4665517fUL, + 0x9d5eea04UL, 0x018c355dUL, 0xfa877473UL, 0xfb0b412eUL, + 0xb3671d5aUL, 0x92dbd252UL, 0xe9105633UL, 0x6dd64713UL, + 0x9ad7618cUL, 0x37a10c7aUL, 0x59f8148eUL, 0xeb133c89UL, + 0xcea927eeUL, 0xb761c935UL, 0xe11ce5edUL, 0x7a47b13cUL, + 0x9cd2df59UL, 0x55f2733fUL, 0x1814ce79UL, 0x73c737bfUL, + 0x53f7cdeaUL, 0x5ffdaa5bUL, 0xdf3d6f14UL, 0x7844db86UL, + 0xcaaff381UL, 0xb968c43eUL, 0x3824342cUL, 0xc2a3405fUL, + 0x161dc372UL, 0xbce2250cUL, 0x283c498bUL, 0xff0d9541UL, + 0x39a80171UL, 0x080cb3deUL, 0xd8b4e49cUL, 0x6456c190UL, + 0x7bcb8461UL, 0xd532b670UL, 0x486c5c74UL, 0xd0b85742UL, +}; + +static const ulong32 Td4[256] = { + 0x52525252UL, 0x09090909UL, 0x6a6a6a6aUL, 0xd5d5d5d5UL, + 0x30303030UL, 0x36363636UL, 0xa5a5a5a5UL, 0x38383838UL, + 0xbfbfbfbfUL, 0x40404040UL, 0xa3a3a3a3UL, 0x9e9e9e9eUL, + 0x81818181UL, 0xf3f3f3f3UL, 0xd7d7d7d7UL, 0xfbfbfbfbUL, + 0x7c7c7c7cUL, 0xe3e3e3e3UL, 0x39393939UL, 0x82828282UL, + 0x9b9b9b9bUL, 0x2f2f2f2fUL, 0xffffffffUL, 0x87878787UL, + 0x34343434UL, 0x8e8e8e8eUL, 0x43434343UL, 0x44444444UL, + 0xc4c4c4c4UL, 0xdedededeUL, 0xe9e9e9e9UL, 0xcbcbcbcbUL, + 0x54545454UL, 0x7b7b7b7bUL, 0x94949494UL, 0x32323232UL, + 0xa6a6a6a6UL, 0xc2c2c2c2UL, 0x23232323UL, 0x3d3d3d3dUL, + 0xeeeeeeeeUL, 0x4c4c4c4cUL, 0x95959595UL, 0x0b0b0b0bUL, + 0x42424242UL, 0xfafafafaUL, 0xc3c3c3c3UL, 0x4e4e4e4eUL, + 0x08080808UL, 0x2e2e2e2eUL, 0xa1a1a1a1UL, 0x66666666UL, + 0x28282828UL, 0xd9d9d9d9UL, 0x24242424UL, 0xb2b2b2b2UL, + 0x76767676UL, 0x5b5b5b5bUL, 0xa2a2a2a2UL, 0x49494949UL, + 0x6d6d6d6dUL, 0x8b8b8b8bUL, 0xd1d1d1d1UL, 0x25252525UL, + 0x72727272UL, 0xf8f8f8f8UL, 0xf6f6f6f6UL, 0x64646464UL, + 0x86868686UL, 0x68686868UL, 0x98989898UL, 0x16161616UL, + 0xd4d4d4d4UL, 0xa4a4a4a4UL, 0x5c5c5c5cUL, 0xccccccccUL, + 0x5d5d5d5dUL, 0x65656565UL, 0xb6b6b6b6UL, 0x92929292UL, + 0x6c6c6c6cUL, 0x70707070UL, 0x48484848UL, 0x50505050UL, + 0xfdfdfdfdUL, 0xededededUL, 0xb9b9b9b9UL, 0xdadadadaUL, + 0x5e5e5e5eUL, 0x15151515UL, 0x46464646UL, 0x57575757UL, + 0xa7a7a7a7UL, 0x8d8d8d8dUL, 0x9d9d9d9dUL, 0x84848484UL, + 0x90909090UL, 0xd8d8d8d8UL, 0xababababUL, 0x00000000UL, + 0x8c8c8c8cUL, 0xbcbcbcbcUL, 0xd3d3d3d3UL, 0x0a0a0a0aUL, + 0xf7f7f7f7UL, 0xe4e4e4e4UL, 0x58585858UL, 0x05050505UL, + 0xb8b8b8b8UL, 0xb3b3b3b3UL, 0x45454545UL, 0x06060606UL, + 0xd0d0d0d0UL, 0x2c2c2c2cUL, 0x1e1e1e1eUL, 0x8f8f8f8fUL, + 0xcacacacaUL, 0x3f3f3f3fUL, 0x0f0f0f0fUL, 0x02020202UL, + 0xc1c1c1c1UL, 0xafafafafUL, 0xbdbdbdbdUL, 0x03030303UL, + 0x01010101UL, 0x13131313UL, 0x8a8a8a8aUL, 0x6b6b6b6bUL, + 0x3a3a3a3aUL, 0x91919191UL, 0x11111111UL, 0x41414141UL, + 0x4f4f4f4fUL, 0x67676767UL, 0xdcdcdcdcUL, 0xeaeaeaeaUL, + 0x97979797UL, 0xf2f2f2f2UL, 0xcfcfcfcfUL, 0xcecececeUL, + 0xf0f0f0f0UL, 0xb4b4b4b4UL, 0xe6e6e6e6UL, 0x73737373UL, + 0x96969696UL, 0xacacacacUL, 0x74747474UL, 0x22222222UL, + 0xe7e7e7e7UL, 0xadadadadUL, 0x35353535UL, 0x85858585UL, + 0xe2e2e2e2UL, 0xf9f9f9f9UL, 0x37373737UL, 0xe8e8e8e8UL, + 0x1c1c1c1cUL, 0x75757575UL, 0xdfdfdfdfUL, 0x6e6e6e6eUL, + 0x47474747UL, 0xf1f1f1f1UL, 0x1a1a1a1aUL, 0x71717171UL, + 0x1d1d1d1dUL, 0x29292929UL, 0xc5c5c5c5UL, 0x89898989UL, + 0x6f6f6f6fUL, 0xb7b7b7b7UL, 0x62626262UL, 0x0e0e0e0eUL, + 0xaaaaaaaaUL, 0x18181818UL, 0xbebebebeUL, 0x1b1b1b1bUL, + 0xfcfcfcfcUL, 0x56565656UL, 0x3e3e3e3eUL, 0x4b4b4b4bUL, + 0xc6c6c6c6UL, 0xd2d2d2d2UL, 0x79797979UL, 0x20202020UL, + 0x9a9a9a9aUL, 0xdbdbdbdbUL, 0xc0c0c0c0UL, 0xfefefefeUL, + 0x78787878UL, 0xcdcdcdcdUL, 0x5a5a5a5aUL, 0xf4f4f4f4UL, + 0x1f1f1f1fUL, 0xddddddddUL, 0xa8a8a8a8UL, 0x33333333UL, + 0x88888888UL, 0x07070707UL, 0xc7c7c7c7UL, 0x31313131UL, + 0xb1b1b1b1UL, 0x12121212UL, 0x10101010UL, 0x59595959UL, + 0x27272727UL, 0x80808080UL, 0xececececUL, 0x5f5f5f5fUL, + 0x60606060UL, 0x51515151UL, 0x7f7f7f7fUL, 0xa9a9a9a9UL, + 0x19191919UL, 0xb5b5b5b5UL, 0x4a4a4a4aUL, 0x0d0d0d0dUL, + 0x2d2d2d2dUL, 0xe5e5e5e5UL, 0x7a7a7a7aUL, 0x9f9f9f9fUL, + 0x93939393UL, 0xc9c9c9c9UL, 0x9c9c9c9cUL, 0xefefefefUL, + 0xa0a0a0a0UL, 0xe0e0e0e0UL, 0x3b3b3b3bUL, 0x4d4d4d4dUL, + 0xaeaeaeaeUL, 0x2a2a2a2aUL, 0xf5f5f5f5UL, 0xb0b0b0b0UL, + 0xc8c8c8c8UL, 0xebebebebUL, 0xbbbbbbbbUL, 0x3c3c3c3cUL, + 0x83838383UL, 0x53535353UL, 0x99999999UL, 0x61616161UL, + 0x17171717UL, 0x2b2b2b2bUL, 0x04040404UL, 0x7e7e7e7eUL, + 0xbabababaUL, 0x77777777UL, 0xd6d6d6d6UL, 0x26262626UL, + 0xe1e1e1e1UL, 0x69696969UL, 0x14141414UL, 0x63636363UL, + 0x55555555UL, 0x21212121UL, 0x0c0c0c0cUL, 0x7d7d7d7dUL, +}; + +#endif /* ENCRYPT_ONLY */ + +#ifdef LTC_SMALL_CODE + +#define Te0(x) TE0[x] +#define Te1(x) RORc(TE0[x], 8) +#define Te2(x) RORc(TE0[x], 16) +#define Te3(x) RORc(TE0[x], 24) + +#define Td0(x) TD0[x] +#define Td1(x) RORc(TD0[x], 8) +#define Td2(x) RORc(TD0[x], 16) +#define Td3(x) RORc(TD0[x], 24) + +#define Te4_0 0x000000FF & Te4 +#define Te4_1 0x0000FF00 & Te4 +#define Te4_2 0x00FF0000 & Te4 +#define Te4_3 0xFF000000 & Te4 + +#else + +#define Te0(x) TE0[x] +#define Te1(x) TE1[x] +#define Te2(x) TE2[x] +#define Te3(x) TE3[x] + +#define Td0(x) TD0[x] +#define Td1(x) TD1[x] +#define Td2(x) TD2[x] +#define Td3(x) TD3[x] + +static const ulong32 TE1[256] = { + 0xa5c66363UL, 0x84f87c7cUL, 0x99ee7777UL, 0x8df67b7bUL, + 0x0dfff2f2UL, 0xbdd66b6bUL, 0xb1de6f6fUL, 0x5491c5c5UL, + 0x50603030UL, 0x03020101UL, 0xa9ce6767UL, 0x7d562b2bUL, + 0x19e7fefeUL, 0x62b5d7d7UL, 0xe64dababUL, 0x9aec7676UL, + 0x458fcacaUL, 0x9d1f8282UL, 0x4089c9c9UL, 0x87fa7d7dUL, + 0x15effafaUL, 0xebb25959UL, 0xc98e4747UL, 0x0bfbf0f0UL, + 0xec41adadUL, 0x67b3d4d4UL, 0xfd5fa2a2UL, 0xea45afafUL, + 0xbf239c9cUL, 0xf753a4a4UL, 0x96e47272UL, 0x5b9bc0c0UL, + 0xc275b7b7UL, 0x1ce1fdfdUL, 0xae3d9393UL, 0x6a4c2626UL, + 0x5a6c3636UL, 0x417e3f3fUL, 0x02f5f7f7UL, 0x4f83ccccUL, + 0x5c683434UL, 0xf451a5a5UL, 0x34d1e5e5UL, 0x08f9f1f1UL, + 0x93e27171UL, 0x73abd8d8UL, 0x53623131UL, 0x3f2a1515UL, + 0x0c080404UL, 0x5295c7c7UL, 0x65462323UL, 0x5e9dc3c3UL, + 0x28301818UL, 0xa1379696UL, 0x0f0a0505UL, 0xb52f9a9aUL, + 0x090e0707UL, 0x36241212UL, 0x9b1b8080UL, 0x3ddfe2e2UL, + 0x26cdebebUL, 0x694e2727UL, 0xcd7fb2b2UL, 0x9fea7575UL, + 0x1b120909UL, 0x9e1d8383UL, 0x74582c2cUL, 0x2e341a1aUL, + 0x2d361b1bUL, 0xb2dc6e6eUL, 0xeeb45a5aUL, 0xfb5ba0a0UL, + 0xf6a45252UL, 0x4d763b3bUL, 0x61b7d6d6UL, 0xce7db3b3UL, + 0x7b522929UL, 0x3edde3e3UL, 0x715e2f2fUL, 0x97138484UL, + 0xf5a65353UL, 0x68b9d1d1UL, 0x00000000UL, 0x2cc1ededUL, + 0x60402020UL, 0x1fe3fcfcUL, 0xc879b1b1UL, 0xedb65b5bUL, + 0xbed46a6aUL, 0x468dcbcbUL, 0xd967bebeUL, 0x4b723939UL, + 0xde944a4aUL, 0xd4984c4cUL, 0xe8b05858UL, 0x4a85cfcfUL, + 0x6bbbd0d0UL, 0x2ac5efefUL, 0xe54faaaaUL, 0x16edfbfbUL, + 0xc5864343UL, 0xd79a4d4dUL, 0x55663333UL, 0x94118585UL, + 0xcf8a4545UL, 0x10e9f9f9UL, 0x06040202UL, 0x81fe7f7fUL, + 0xf0a05050UL, 0x44783c3cUL, 0xba259f9fUL, 0xe34ba8a8UL, + 0xf3a25151UL, 0xfe5da3a3UL, 0xc0804040UL, 0x8a058f8fUL, + 0xad3f9292UL, 0xbc219d9dUL, 0x48703838UL, 0x04f1f5f5UL, + 0xdf63bcbcUL, 0xc177b6b6UL, 0x75afdadaUL, 0x63422121UL, + 0x30201010UL, 0x1ae5ffffUL, 0x0efdf3f3UL, 0x6dbfd2d2UL, + 0x4c81cdcdUL, 0x14180c0cUL, 0x35261313UL, 0x2fc3ececUL, + 0xe1be5f5fUL, 0xa2359797UL, 0xcc884444UL, 0x392e1717UL, + 0x5793c4c4UL, 0xf255a7a7UL, 0x82fc7e7eUL, 0x477a3d3dUL, + 0xacc86464UL, 0xe7ba5d5dUL, 0x2b321919UL, 0x95e67373UL, + 0xa0c06060UL, 0x98198181UL, 0xd19e4f4fUL, 0x7fa3dcdcUL, + 0x66442222UL, 0x7e542a2aUL, 0xab3b9090UL, 0x830b8888UL, + 0xca8c4646UL, 0x29c7eeeeUL, 0xd36bb8b8UL, 0x3c281414UL, + 0x79a7dedeUL, 0xe2bc5e5eUL, 0x1d160b0bUL, 0x76addbdbUL, + 0x3bdbe0e0UL, 0x56643232UL, 0x4e743a3aUL, 0x1e140a0aUL, + 0xdb924949UL, 0x0a0c0606UL, 0x6c482424UL, 0xe4b85c5cUL, + 0x5d9fc2c2UL, 0x6ebdd3d3UL, 0xef43acacUL, 0xa6c46262UL, + 0xa8399191UL, 0xa4319595UL, 0x37d3e4e4UL, 0x8bf27979UL, + 0x32d5e7e7UL, 0x438bc8c8UL, 0x596e3737UL, 0xb7da6d6dUL, + 0x8c018d8dUL, 0x64b1d5d5UL, 0xd29c4e4eUL, 0xe049a9a9UL, + 0xb4d86c6cUL, 0xfaac5656UL, 0x07f3f4f4UL, 0x25cfeaeaUL, + 0xafca6565UL, 0x8ef47a7aUL, 0xe947aeaeUL, 0x18100808UL, + 0xd56fbabaUL, 0x88f07878UL, 0x6f4a2525UL, 0x725c2e2eUL, + 0x24381c1cUL, 0xf157a6a6UL, 0xc773b4b4UL, 0x5197c6c6UL, + 0x23cbe8e8UL, 0x7ca1ddddUL, 0x9ce87474UL, 0x213e1f1fUL, + 0xdd964b4bUL, 0xdc61bdbdUL, 0x860d8b8bUL, 0x850f8a8aUL, + 0x90e07070UL, 0x427c3e3eUL, 0xc471b5b5UL, 0xaacc6666UL, + 0xd8904848UL, 0x05060303UL, 0x01f7f6f6UL, 0x121c0e0eUL, + 0xa3c26161UL, 0x5f6a3535UL, 0xf9ae5757UL, 0xd069b9b9UL, + 0x91178686UL, 0x5899c1c1UL, 0x273a1d1dUL, 0xb9279e9eUL, + 0x38d9e1e1UL, 0x13ebf8f8UL, 0xb32b9898UL, 0x33221111UL, + 0xbbd26969UL, 0x70a9d9d9UL, 0x89078e8eUL, 0xa7339494UL, + 0xb62d9b9bUL, 0x223c1e1eUL, 0x92158787UL, 0x20c9e9e9UL, + 0x4987ceceUL, 0xffaa5555UL, 0x78502828UL, 0x7aa5dfdfUL, + 0x8f038c8cUL, 0xf859a1a1UL, 0x80098989UL, 0x171a0d0dUL, + 0xda65bfbfUL, 0x31d7e6e6UL, 0xc6844242UL, 0xb8d06868UL, + 0xc3824141UL, 0xb0299999UL, 0x775a2d2dUL, 0x111e0f0fUL, + 0xcb7bb0b0UL, 0xfca85454UL, 0xd66dbbbbUL, 0x3a2c1616UL, +}; +static const ulong32 TE2[256] = { + 0x63a5c663UL, 0x7c84f87cUL, 0x7799ee77UL, 0x7b8df67bUL, + 0xf20dfff2UL, 0x6bbdd66bUL, 0x6fb1de6fUL, 0xc55491c5UL, + 0x30506030UL, 0x01030201UL, 0x67a9ce67UL, 0x2b7d562bUL, + 0xfe19e7feUL, 0xd762b5d7UL, 0xabe64dabUL, 0x769aec76UL, + 0xca458fcaUL, 0x829d1f82UL, 0xc94089c9UL, 0x7d87fa7dUL, + 0xfa15effaUL, 0x59ebb259UL, 0x47c98e47UL, 0xf00bfbf0UL, + 0xadec41adUL, 0xd467b3d4UL, 0xa2fd5fa2UL, 0xafea45afUL, + 0x9cbf239cUL, 0xa4f753a4UL, 0x7296e472UL, 0xc05b9bc0UL, + 0xb7c275b7UL, 0xfd1ce1fdUL, 0x93ae3d93UL, 0x266a4c26UL, + 0x365a6c36UL, 0x3f417e3fUL, 0xf702f5f7UL, 0xcc4f83ccUL, + 0x345c6834UL, 0xa5f451a5UL, 0xe534d1e5UL, 0xf108f9f1UL, + 0x7193e271UL, 0xd873abd8UL, 0x31536231UL, 0x153f2a15UL, + 0x040c0804UL, 0xc75295c7UL, 0x23654623UL, 0xc35e9dc3UL, + 0x18283018UL, 0x96a13796UL, 0x050f0a05UL, 0x9ab52f9aUL, + 0x07090e07UL, 0x12362412UL, 0x809b1b80UL, 0xe23ddfe2UL, + 0xeb26cdebUL, 0x27694e27UL, 0xb2cd7fb2UL, 0x759fea75UL, + 0x091b1209UL, 0x839e1d83UL, 0x2c74582cUL, 0x1a2e341aUL, + 0x1b2d361bUL, 0x6eb2dc6eUL, 0x5aeeb45aUL, 0xa0fb5ba0UL, + 0x52f6a452UL, 0x3b4d763bUL, 0xd661b7d6UL, 0xb3ce7db3UL, + 0x297b5229UL, 0xe33edde3UL, 0x2f715e2fUL, 0x84971384UL, + 0x53f5a653UL, 0xd168b9d1UL, 0x00000000UL, 0xed2cc1edUL, + 0x20604020UL, 0xfc1fe3fcUL, 0xb1c879b1UL, 0x5bedb65bUL, + 0x6abed46aUL, 0xcb468dcbUL, 0xbed967beUL, 0x394b7239UL, + 0x4ade944aUL, 0x4cd4984cUL, 0x58e8b058UL, 0xcf4a85cfUL, + 0xd06bbbd0UL, 0xef2ac5efUL, 0xaae54faaUL, 0xfb16edfbUL, + 0x43c58643UL, 0x4dd79a4dUL, 0x33556633UL, 0x85941185UL, + 0x45cf8a45UL, 0xf910e9f9UL, 0x02060402UL, 0x7f81fe7fUL, + 0x50f0a050UL, 0x3c44783cUL, 0x9fba259fUL, 0xa8e34ba8UL, + 0x51f3a251UL, 0xa3fe5da3UL, 0x40c08040UL, 0x8f8a058fUL, + 0x92ad3f92UL, 0x9dbc219dUL, 0x38487038UL, 0xf504f1f5UL, + 0xbcdf63bcUL, 0xb6c177b6UL, 0xda75afdaUL, 0x21634221UL, + 0x10302010UL, 0xff1ae5ffUL, 0xf30efdf3UL, 0xd26dbfd2UL, + 0xcd4c81cdUL, 0x0c14180cUL, 0x13352613UL, 0xec2fc3ecUL, + 0x5fe1be5fUL, 0x97a23597UL, 0x44cc8844UL, 0x17392e17UL, + 0xc45793c4UL, 0xa7f255a7UL, 0x7e82fc7eUL, 0x3d477a3dUL, + 0x64acc864UL, 0x5de7ba5dUL, 0x192b3219UL, 0x7395e673UL, + 0x60a0c060UL, 0x81981981UL, 0x4fd19e4fUL, 0xdc7fa3dcUL, + 0x22664422UL, 0x2a7e542aUL, 0x90ab3b90UL, 0x88830b88UL, + 0x46ca8c46UL, 0xee29c7eeUL, 0xb8d36bb8UL, 0x143c2814UL, + 0xde79a7deUL, 0x5ee2bc5eUL, 0x0b1d160bUL, 0xdb76addbUL, + 0xe03bdbe0UL, 0x32566432UL, 0x3a4e743aUL, 0x0a1e140aUL, + 0x49db9249UL, 0x060a0c06UL, 0x246c4824UL, 0x5ce4b85cUL, + 0xc25d9fc2UL, 0xd36ebdd3UL, 0xacef43acUL, 0x62a6c462UL, + 0x91a83991UL, 0x95a43195UL, 0xe437d3e4UL, 0x798bf279UL, + 0xe732d5e7UL, 0xc8438bc8UL, 0x37596e37UL, 0x6db7da6dUL, + 0x8d8c018dUL, 0xd564b1d5UL, 0x4ed29c4eUL, 0xa9e049a9UL, + 0x6cb4d86cUL, 0x56faac56UL, 0xf407f3f4UL, 0xea25cfeaUL, + 0x65afca65UL, 0x7a8ef47aUL, 0xaee947aeUL, 0x08181008UL, + 0xbad56fbaUL, 0x7888f078UL, 0x256f4a25UL, 0x2e725c2eUL, + 0x1c24381cUL, 0xa6f157a6UL, 0xb4c773b4UL, 0xc65197c6UL, + 0xe823cbe8UL, 0xdd7ca1ddUL, 0x749ce874UL, 0x1f213e1fUL, + 0x4bdd964bUL, 0xbddc61bdUL, 0x8b860d8bUL, 0x8a850f8aUL, + 0x7090e070UL, 0x3e427c3eUL, 0xb5c471b5UL, 0x66aacc66UL, + 0x48d89048UL, 0x03050603UL, 0xf601f7f6UL, 0x0e121c0eUL, + 0x61a3c261UL, 0x355f6a35UL, 0x57f9ae57UL, 0xb9d069b9UL, + 0x86911786UL, 0xc15899c1UL, 0x1d273a1dUL, 0x9eb9279eUL, + 0xe138d9e1UL, 0xf813ebf8UL, 0x98b32b98UL, 0x11332211UL, + 0x69bbd269UL, 0xd970a9d9UL, 0x8e89078eUL, 0x94a73394UL, + 0x9bb62d9bUL, 0x1e223c1eUL, 0x87921587UL, 0xe920c9e9UL, + 0xce4987ceUL, 0x55ffaa55UL, 0x28785028UL, 0xdf7aa5dfUL, + 0x8c8f038cUL, 0xa1f859a1UL, 0x89800989UL, 0x0d171a0dUL, + 0xbfda65bfUL, 0xe631d7e6UL, 0x42c68442UL, 0x68b8d068UL, + 0x41c38241UL, 0x99b02999UL, 0x2d775a2dUL, 0x0f111e0fUL, + 0xb0cb7bb0UL, 0x54fca854UL, 0xbbd66dbbUL, 0x163a2c16UL, +}; +static const ulong32 TE3[256] = { + + 0x6363a5c6UL, 0x7c7c84f8UL, 0x777799eeUL, 0x7b7b8df6UL, + 0xf2f20dffUL, 0x6b6bbdd6UL, 0x6f6fb1deUL, 0xc5c55491UL, + 0x30305060UL, 0x01010302UL, 0x6767a9ceUL, 0x2b2b7d56UL, + 0xfefe19e7UL, 0xd7d762b5UL, 0xababe64dUL, 0x76769aecUL, + 0xcaca458fUL, 0x82829d1fUL, 0xc9c94089UL, 0x7d7d87faUL, + 0xfafa15efUL, 0x5959ebb2UL, 0x4747c98eUL, 0xf0f00bfbUL, + 0xadadec41UL, 0xd4d467b3UL, 0xa2a2fd5fUL, 0xafafea45UL, + 0x9c9cbf23UL, 0xa4a4f753UL, 0x727296e4UL, 0xc0c05b9bUL, + 0xb7b7c275UL, 0xfdfd1ce1UL, 0x9393ae3dUL, 0x26266a4cUL, + 0x36365a6cUL, 0x3f3f417eUL, 0xf7f702f5UL, 0xcccc4f83UL, + 0x34345c68UL, 0xa5a5f451UL, 0xe5e534d1UL, 0xf1f108f9UL, + 0x717193e2UL, 0xd8d873abUL, 0x31315362UL, 0x15153f2aUL, + 0x04040c08UL, 0xc7c75295UL, 0x23236546UL, 0xc3c35e9dUL, + 0x18182830UL, 0x9696a137UL, 0x05050f0aUL, 0x9a9ab52fUL, + 0x0707090eUL, 0x12123624UL, 0x80809b1bUL, 0xe2e23ddfUL, + 0xebeb26cdUL, 0x2727694eUL, 0xb2b2cd7fUL, 0x75759feaUL, + 0x09091b12UL, 0x83839e1dUL, 0x2c2c7458UL, 0x1a1a2e34UL, + 0x1b1b2d36UL, 0x6e6eb2dcUL, 0x5a5aeeb4UL, 0xa0a0fb5bUL, + 0x5252f6a4UL, 0x3b3b4d76UL, 0xd6d661b7UL, 0xb3b3ce7dUL, + 0x29297b52UL, 0xe3e33eddUL, 0x2f2f715eUL, 0x84849713UL, + 0x5353f5a6UL, 0xd1d168b9UL, 0x00000000UL, 0xeded2cc1UL, + 0x20206040UL, 0xfcfc1fe3UL, 0xb1b1c879UL, 0x5b5bedb6UL, + 0x6a6abed4UL, 0xcbcb468dUL, 0xbebed967UL, 0x39394b72UL, + 0x4a4ade94UL, 0x4c4cd498UL, 0x5858e8b0UL, 0xcfcf4a85UL, + 0xd0d06bbbUL, 0xefef2ac5UL, 0xaaaae54fUL, 0xfbfb16edUL, + 0x4343c586UL, 0x4d4dd79aUL, 0x33335566UL, 0x85859411UL, + 0x4545cf8aUL, 0xf9f910e9UL, 0x02020604UL, 0x7f7f81feUL, + 0x5050f0a0UL, 0x3c3c4478UL, 0x9f9fba25UL, 0xa8a8e34bUL, + 0x5151f3a2UL, 0xa3a3fe5dUL, 0x4040c080UL, 0x8f8f8a05UL, + 0x9292ad3fUL, 0x9d9dbc21UL, 0x38384870UL, 0xf5f504f1UL, + 0xbcbcdf63UL, 0xb6b6c177UL, 0xdada75afUL, 0x21216342UL, + 0x10103020UL, 0xffff1ae5UL, 0xf3f30efdUL, 0xd2d26dbfUL, + 0xcdcd4c81UL, 0x0c0c1418UL, 0x13133526UL, 0xecec2fc3UL, + 0x5f5fe1beUL, 0x9797a235UL, 0x4444cc88UL, 0x1717392eUL, + 0xc4c45793UL, 0xa7a7f255UL, 0x7e7e82fcUL, 0x3d3d477aUL, + 0x6464acc8UL, 0x5d5de7baUL, 0x19192b32UL, 0x737395e6UL, + 0x6060a0c0UL, 0x81819819UL, 0x4f4fd19eUL, 0xdcdc7fa3UL, + 0x22226644UL, 0x2a2a7e54UL, 0x9090ab3bUL, 0x8888830bUL, + 0x4646ca8cUL, 0xeeee29c7UL, 0xb8b8d36bUL, 0x14143c28UL, + 0xdede79a7UL, 0x5e5ee2bcUL, 0x0b0b1d16UL, 0xdbdb76adUL, + 0xe0e03bdbUL, 0x32325664UL, 0x3a3a4e74UL, 0x0a0a1e14UL, + 0x4949db92UL, 0x06060a0cUL, 0x24246c48UL, 0x5c5ce4b8UL, + 0xc2c25d9fUL, 0xd3d36ebdUL, 0xacacef43UL, 0x6262a6c4UL, + 0x9191a839UL, 0x9595a431UL, 0xe4e437d3UL, 0x79798bf2UL, + 0xe7e732d5UL, 0xc8c8438bUL, 0x3737596eUL, 0x6d6db7daUL, + 0x8d8d8c01UL, 0xd5d564b1UL, 0x4e4ed29cUL, 0xa9a9e049UL, + 0x6c6cb4d8UL, 0x5656faacUL, 0xf4f407f3UL, 0xeaea25cfUL, + 0x6565afcaUL, 0x7a7a8ef4UL, 0xaeaee947UL, 0x08081810UL, + 0xbabad56fUL, 0x787888f0UL, 0x25256f4aUL, 0x2e2e725cUL, + 0x1c1c2438UL, 0xa6a6f157UL, 0xb4b4c773UL, 0xc6c65197UL, + 0xe8e823cbUL, 0xdddd7ca1UL, 0x74749ce8UL, 0x1f1f213eUL, + 0x4b4bdd96UL, 0xbdbddc61UL, 0x8b8b860dUL, 0x8a8a850fUL, + 0x707090e0UL, 0x3e3e427cUL, 0xb5b5c471UL, 0x6666aaccUL, + 0x4848d890UL, 0x03030506UL, 0xf6f601f7UL, 0x0e0e121cUL, + 0x6161a3c2UL, 0x35355f6aUL, 0x5757f9aeUL, 0xb9b9d069UL, + 0x86869117UL, 0xc1c15899UL, 0x1d1d273aUL, 0x9e9eb927UL, + 0xe1e138d9UL, 0xf8f813ebUL, 0x9898b32bUL, 0x11113322UL, + 0x6969bbd2UL, 0xd9d970a9UL, 0x8e8e8907UL, 0x9494a733UL, + 0x9b9bb62dUL, 0x1e1e223cUL, 0x87879215UL, 0xe9e920c9UL, + 0xcece4987UL, 0x5555ffaaUL, 0x28287850UL, 0xdfdf7aa5UL, + 0x8c8c8f03UL, 0xa1a1f859UL, 0x89898009UL, 0x0d0d171aUL, + 0xbfbfda65UL, 0xe6e631d7UL, 0x4242c684UL, 0x6868b8d0UL, + 0x4141c382UL, 0x9999b029UL, 0x2d2d775aUL, 0x0f0f111eUL, + 0xb0b0cb7bUL, 0x5454fca8UL, 0xbbbbd66dUL, 0x16163a2cUL, +}; + +#ifndef PELI_TAB +static const ulong32 Te4_0[] = { +0x00000063UL, 0x0000007cUL, 0x00000077UL, 0x0000007bUL, 0x000000f2UL, 0x0000006bUL, 0x0000006fUL, 0x000000c5UL, +0x00000030UL, 0x00000001UL, 0x00000067UL, 0x0000002bUL, 0x000000feUL, 0x000000d7UL, 0x000000abUL, 0x00000076UL, +0x000000caUL, 0x00000082UL, 0x000000c9UL, 0x0000007dUL, 0x000000faUL, 0x00000059UL, 0x00000047UL, 0x000000f0UL, +0x000000adUL, 0x000000d4UL, 0x000000a2UL, 0x000000afUL, 0x0000009cUL, 0x000000a4UL, 0x00000072UL, 0x000000c0UL, +0x000000b7UL, 0x000000fdUL, 0x00000093UL, 0x00000026UL, 0x00000036UL, 0x0000003fUL, 0x000000f7UL, 0x000000ccUL, +0x00000034UL, 0x000000a5UL, 0x000000e5UL, 0x000000f1UL, 0x00000071UL, 0x000000d8UL, 0x00000031UL, 0x00000015UL, +0x00000004UL, 0x000000c7UL, 0x00000023UL, 0x000000c3UL, 0x00000018UL, 0x00000096UL, 0x00000005UL, 0x0000009aUL, +0x00000007UL, 0x00000012UL, 0x00000080UL, 0x000000e2UL, 0x000000ebUL, 0x00000027UL, 0x000000b2UL, 0x00000075UL, +0x00000009UL, 0x00000083UL, 0x0000002cUL, 0x0000001aUL, 0x0000001bUL, 0x0000006eUL, 0x0000005aUL, 0x000000a0UL, +0x00000052UL, 0x0000003bUL, 0x000000d6UL, 0x000000b3UL, 0x00000029UL, 0x000000e3UL, 0x0000002fUL, 0x00000084UL, +0x00000053UL, 0x000000d1UL, 0x00000000UL, 0x000000edUL, 0x00000020UL, 0x000000fcUL, 0x000000b1UL, 0x0000005bUL, +0x0000006aUL, 0x000000cbUL, 0x000000beUL, 0x00000039UL, 0x0000004aUL, 0x0000004cUL, 0x00000058UL, 0x000000cfUL, +0x000000d0UL, 0x000000efUL, 0x000000aaUL, 0x000000fbUL, 0x00000043UL, 0x0000004dUL, 0x00000033UL, 0x00000085UL, +0x00000045UL, 0x000000f9UL, 0x00000002UL, 0x0000007fUL, 0x00000050UL, 0x0000003cUL, 0x0000009fUL, 0x000000a8UL, +0x00000051UL, 0x000000a3UL, 0x00000040UL, 0x0000008fUL, 0x00000092UL, 0x0000009dUL, 0x00000038UL, 0x000000f5UL, +0x000000bcUL, 0x000000b6UL, 0x000000daUL, 0x00000021UL, 0x00000010UL, 0x000000ffUL, 0x000000f3UL, 0x000000d2UL, +0x000000cdUL, 0x0000000cUL, 0x00000013UL, 0x000000ecUL, 0x0000005fUL, 0x00000097UL, 0x00000044UL, 0x00000017UL, +0x000000c4UL, 0x000000a7UL, 0x0000007eUL, 0x0000003dUL, 0x00000064UL, 0x0000005dUL, 0x00000019UL, 0x00000073UL, +0x00000060UL, 0x00000081UL, 0x0000004fUL, 0x000000dcUL, 0x00000022UL, 0x0000002aUL, 0x00000090UL, 0x00000088UL, +0x00000046UL, 0x000000eeUL, 0x000000b8UL, 0x00000014UL, 0x000000deUL, 0x0000005eUL, 0x0000000bUL, 0x000000dbUL, +0x000000e0UL, 0x00000032UL, 0x0000003aUL, 0x0000000aUL, 0x00000049UL, 0x00000006UL, 0x00000024UL, 0x0000005cUL, +0x000000c2UL, 0x000000d3UL, 0x000000acUL, 0x00000062UL, 0x00000091UL, 0x00000095UL, 0x000000e4UL, 0x00000079UL, +0x000000e7UL, 0x000000c8UL, 0x00000037UL, 0x0000006dUL, 0x0000008dUL, 0x000000d5UL, 0x0000004eUL, 0x000000a9UL, +0x0000006cUL, 0x00000056UL, 0x000000f4UL, 0x000000eaUL, 0x00000065UL, 0x0000007aUL, 0x000000aeUL, 0x00000008UL, +0x000000baUL, 0x00000078UL, 0x00000025UL, 0x0000002eUL, 0x0000001cUL, 0x000000a6UL, 0x000000b4UL, 0x000000c6UL, +0x000000e8UL, 0x000000ddUL, 0x00000074UL, 0x0000001fUL, 0x0000004bUL, 0x000000bdUL, 0x0000008bUL, 0x0000008aUL, +0x00000070UL, 0x0000003eUL, 0x000000b5UL, 0x00000066UL, 0x00000048UL, 0x00000003UL, 0x000000f6UL, 0x0000000eUL, +0x00000061UL, 0x00000035UL, 0x00000057UL, 0x000000b9UL, 0x00000086UL, 0x000000c1UL, 0x0000001dUL, 0x0000009eUL, +0x000000e1UL, 0x000000f8UL, 0x00000098UL, 0x00000011UL, 0x00000069UL, 0x000000d9UL, 0x0000008eUL, 0x00000094UL, +0x0000009bUL, 0x0000001eUL, 0x00000087UL, 0x000000e9UL, 0x000000ceUL, 0x00000055UL, 0x00000028UL, 0x000000dfUL, +0x0000008cUL, 0x000000a1UL, 0x00000089UL, 0x0000000dUL, 0x000000bfUL, 0x000000e6UL, 0x00000042UL, 0x00000068UL, +0x00000041UL, 0x00000099UL, 0x0000002dUL, 0x0000000fUL, 0x000000b0UL, 0x00000054UL, 0x000000bbUL, 0x00000016UL +}; + +static const ulong32 Te4_1[] = { +0x00006300UL, 0x00007c00UL, 0x00007700UL, 0x00007b00UL, 0x0000f200UL, 0x00006b00UL, 0x00006f00UL, 0x0000c500UL, +0x00003000UL, 0x00000100UL, 0x00006700UL, 0x00002b00UL, 0x0000fe00UL, 0x0000d700UL, 0x0000ab00UL, 0x00007600UL, +0x0000ca00UL, 0x00008200UL, 0x0000c900UL, 0x00007d00UL, 0x0000fa00UL, 0x00005900UL, 0x00004700UL, 0x0000f000UL, +0x0000ad00UL, 0x0000d400UL, 0x0000a200UL, 0x0000af00UL, 0x00009c00UL, 0x0000a400UL, 0x00007200UL, 0x0000c000UL, +0x0000b700UL, 0x0000fd00UL, 0x00009300UL, 0x00002600UL, 0x00003600UL, 0x00003f00UL, 0x0000f700UL, 0x0000cc00UL, +0x00003400UL, 0x0000a500UL, 0x0000e500UL, 0x0000f100UL, 0x00007100UL, 0x0000d800UL, 0x00003100UL, 0x00001500UL, +0x00000400UL, 0x0000c700UL, 0x00002300UL, 0x0000c300UL, 0x00001800UL, 0x00009600UL, 0x00000500UL, 0x00009a00UL, +0x00000700UL, 0x00001200UL, 0x00008000UL, 0x0000e200UL, 0x0000eb00UL, 0x00002700UL, 0x0000b200UL, 0x00007500UL, +0x00000900UL, 0x00008300UL, 0x00002c00UL, 0x00001a00UL, 0x00001b00UL, 0x00006e00UL, 0x00005a00UL, 0x0000a000UL, +0x00005200UL, 0x00003b00UL, 0x0000d600UL, 0x0000b300UL, 0x00002900UL, 0x0000e300UL, 0x00002f00UL, 0x00008400UL, +0x00005300UL, 0x0000d100UL, 0x00000000UL, 0x0000ed00UL, 0x00002000UL, 0x0000fc00UL, 0x0000b100UL, 0x00005b00UL, +0x00006a00UL, 0x0000cb00UL, 0x0000be00UL, 0x00003900UL, 0x00004a00UL, 0x00004c00UL, 0x00005800UL, 0x0000cf00UL, +0x0000d000UL, 0x0000ef00UL, 0x0000aa00UL, 0x0000fb00UL, 0x00004300UL, 0x00004d00UL, 0x00003300UL, 0x00008500UL, +0x00004500UL, 0x0000f900UL, 0x00000200UL, 0x00007f00UL, 0x00005000UL, 0x00003c00UL, 0x00009f00UL, 0x0000a800UL, +0x00005100UL, 0x0000a300UL, 0x00004000UL, 0x00008f00UL, 0x00009200UL, 0x00009d00UL, 0x00003800UL, 0x0000f500UL, +0x0000bc00UL, 0x0000b600UL, 0x0000da00UL, 0x00002100UL, 0x00001000UL, 0x0000ff00UL, 0x0000f300UL, 0x0000d200UL, +0x0000cd00UL, 0x00000c00UL, 0x00001300UL, 0x0000ec00UL, 0x00005f00UL, 0x00009700UL, 0x00004400UL, 0x00001700UL, +0x0000c400UL, 0x0000a700UL, 0x00007e00UL, 0x00003d00UL, 0x00006400UL, 0x00005d00UL, 0x00001900UL, 0x00007300UL, +0x00006000UL, 0x00008100UL, 0x00004f00UL, 0x0000dc00UL, 0x00002200UL, 0x00002a00UL, 0x00009000UL, 0x00008800UL, +0x00004600UL, 0x0000ee00UL, 0x0000b800UL, 0x00001400UL, 0x0000de00UL, 0x00005e00UL, 0x00000b00UL, 0x0000db00UL, +0x0000e000UL, 0x00003200UL, 0x00003a00UL, 0x00000a00UL, 0x00004900UL, 0x00000600UL, 0x00002400UL, 0x00005c00UL, +0x0000c200UL, 0x0000d300UL, 0x0000ac00UL, 0x00006200UL, 0x00009100UL, 0x00009500UL, 0x0000e400UL, 0x00007900UL, +0x0000e700UL, 0x0000c800UL, 0x00003700UL, 0x00006d00UL, 0x00008d00UL, 0x0000d500UL, 0x00004e00UL, 0x0000a900UL, +0x00006c00UL, 0x00005600UL, 0x0000f400UL, 0x0000ea00UL, 0x00006500UL, 0x00007a00UL, 0x0000ae00UL, 0x00000800UL, +0x0000ba00UL, 0x00007800UL, 0x00002500UL, 0x00002e00UL, 0x00001c00UL, 0x0000a600UL, 0x0000b400UL, 0x0000c600UL, +0x0000e800UL, 0x0000dd00UL, 0x00007400UL, 0x00001f00UL, 0x00004b00UL, 0x0000bd00UL, 0x00008b00UL, 0x00008a00UL, +0x00007000UL, 0x00003e00UL, 0x0000b500UL, 0x00006600UL, 0x00004800UL, 0x00000300UL, 0x0000f600UL, 0x00000e00UL, +0x00006100UL, 0x00003500UL, 0x00005700UL, 0x0000b900UL, 0x00008600UL, 0x0000c100UL, 0x00001d00UL, 0x00009e00UL, +0x0000e100UL, 0x0000f800UL, 0x00009800UL, 0x00001100UL, 0x00006900UL, 0x0000d900UL, 0x00008e00UL, 0x00009400UL, +0x00009b00UL, 0x00001e00UL, 0x00008700UL, 0x0000e900UL, 0x0000ce00UL, 0x00005500UL, 0x00002800UL, 0x0000df00UL, +0x00008c00UL, 0x0000a100UL, 0x00008900UL, 0x00000d00UL, 0x0000bf00UL, 0x0000e600UL, 0x00004200UL, 0x00006800UL, +0x00004100UL, 0x00009900UL, 0x00002d00UL, 0x00000f00UL, 0x0000b000UL, 0x00005400UL, 0x0000bb00UL, 0x00001600UL +}; + +static const ulong32 Te4_2[] = { +0x00630000UL, 0x007c0000UL, 0x00770000UL, 0x007b0000UL, 0x00f20000UL, 0x006b0000UL, 0x006f0000UL, 0x00c50000UL, +0x00300000UL, 0x00010000UL, 0x00670000UL, 0x002b0000UL, 0x00fe0000UL, 0x00d70000UL, 0x00ab0000UL, 0x00760000UL, +0x00ca0000UL, 0x00820000UL, 0x00c90000UL, 0x007d0000UL, 0x00fa0000UL, 0x00590000UL, 0x00470000UL, 0x00f00000UL, +0x00ad0000UL, 0x00d40000UL, 0x00a20000UL, 0x00af0000UL, 0x009c0000UL, 0x00a40000UL, 0x00720000UL, 0x00c00000UL, +0x00b70000UL, 0x00fd0000UL, 0x00930000UL, 0x00260000UL, 0x00360000UL, 0x003f0000UL, 0x00f70000UL, 0x00cc0000UL, +0x00340000UL, 0x00a50000UL, 0x00e50000UL, 0x00f10000UL, 0x00710000UL, 0x00d80000UL, 0x00310000UL, 0x00150000UL, +0x00040000UL, 0x00c70000UL, 0x00230000UL, 0x00c30000UL, 0x00180000UL, 0x00960000UL, 0x00050000UL, 0x009a0000UL, +0x00070000UL, 0x00120000UL, 0x00800000UL, 0x00e20000UL, 0x00eb0000UL, 0x00270000UL, 0x00b20000UL, 0x00750000UL, +0x00090000UL, 0x00830000UL, 0x002c0000UL, 0x001a0000UL, 0x001b0000UL, 0x006e0000UL, 0x005a0000UL, 0x00a00000UL, +0x00520000UL, 0x003b0000UL, 0x00d60000UL, 0x00b30000UL, 0x00290000UL, 0x00e30000UL, 0x002f0000UL, 0x00840000UL, +0x00530000UL, 0x00d10000UL, 0x00000000UL, 0x00ed0000UL, 0x00200000UL, 0x00fc0000UL, 0x00b10000UL, 0x005b0000UL, +0x006a0000UL, 0x00cb0000UL, 0x00be0000UL, 0x00390000UL, 0x004a0000UL, 0x004c0000UL, 0x00580000UL, 0x00cf0000UL, +0x00d00000UL, 0x00ef0000UL, 0x00aa0000UL, 0x00fb0000UL, 0x00430000UL, 0x004d0000UL, 0x00330000UL, 0x00850000UL, +0x00450000UL, 0x00f90000UL, 0x00020000UL, 0x007f0000UL, 0x00500000UL, 0x003c0000UL, 0x009f0000UL, 0x00a80000UL, +0x00510000UL, 0x00a30000UL, 0x00400000UL, 0x008f0000UL, 0x00920000UL, 0x009d0000UL, 0x00380000UL, 0x00f50000UL, +0x00bc0000UL, 0x00b60000UL, 0x00da0000UL, 0x00210000UL, 0x00100000UL, 0x00ff0000UL, 0x00f30000UL, 0x00d20000UL, +0x00cd0000UL, 0x000c0000UL, 0x00130000UL, 0x00ec0000UL, 0x005f0000UL, 0x00970000UL, 0x00440000UL, 0x00170000UL, +0x00c40000UL, 0x00a70000UL, 0x007e0000UL, 0x003d0000UL, 0x00640000UL, 0x005d0000UL, 0x00190000UL, 0x00730000UL, +0x00600000UL, 0x00810000UL, 0x004f0000UL, 0x00dc0000UL, 0x00220000UL, 0x002a0000UL, 0x00900000UL, 0x00880000UL, +0x00460000UL, 0x00ee0000UL, 0x00b80000UL, 0x00140000UL, 0x00de0000UL, 0x005e0000UL, 0x000b0000UL, 0x00db0000UL, +0x00e00000UL, 0x00320000UL, 0x003a0000UL, 0x000a0000UL, 0x00490000UL, 0x00060000UL, 0x00240000UL, 0x005c0000UL, +0x00c20000UL, 0x00d30000UL, 0x00ac0000UL, 0x00620000UL, 0x00910000UL, 0x00950000UL, 0x00e40000UL, 0x00790000UL, +0x00e70000UL, 0x00c80000UL, 0x00370000UL, 0x006d0000UL, 0x008d0000UL, 0x00d50000UL, 0x004e0000UL, 0x00a90000UL, +0x006c0000UL, 0x00560000UL, 0x00f40000UL, 0x00ea0000UL, 0x00650000UL, 0x007a0000UL, 0x00ae0000UL, 0x00080000UL, +0x00ba0000UL, 0x00780000UL, 0x00250000UL, 0x002e0000UL, 0x001c0000UL, 0x00a60000UL, 0x00b40000UL, 0x00c60000UL, +0x00e80000UL, 0x00dd0000UL, 0x00740000UL, 0x001f0000UL, 0x004b0000UL, 0x00bd0000UL, 0x008b0000UL, 0x008a0000UL, +0x00700000UL, 0x003e0000UL, 0x00b50000UL, 0x00660000UL, 0x00480000UL, 0x00030000UL, 0x00f60000UL, 0x000e0000UL, +0x00610000UL, 0x00350000UL, 0x00570000UL, 0x00b90000UL, 0x00860000UL, 0x00c10000UL, 0x001d0000UL, 0x009e0000UL, +0x00e10000UL, 0x00f80000UL, 0x00980000UL, 0x00110000UL, 0x00690000UL, 0x00d90000UL, 0x008e0000UL, 0x00940000UL, +0x009b0000UL, 0x001e0000UL, 0x00870000UL, 0x00e90000UL, 0x00ce0000UL, 0x00550000UL, 0x00280000UL, 0x00df0000UL, +0x008c0000UL, 0x00a10000UL, 0x00890000UL, 0x000d0000UL, 0x00bf0000UL, 0x00e60000UL, 0x00420000UL, 0x00680000UL, +0x00410000UL, 0x00990000UL, 0x002d0000UL, 0x000f0000UL, 0x00b00000UL, 0x00540000UL, 0x00bb0000UL, 0x00160000UL +}; + +static const ulong32 Te4_3[] = { +0x63000000UL, 0x7c000000UL, 0x77000000UL, 0x7b000000UL, 0xf2000000UL, 0x6b000000UL, 0x6f000000UL, 0xc5000000UL, +0x30000000UL, 0x01000000UL, 0x67000000UL, 0x2b000000UL, 0xfe000000UL, 0xd7000000UL, 0xab000000UL, 0x76000000UL, +0xca000000UL, 0x82000000UL, 0xc9000000UL, 0x7d000000UL, 0xfa000000UL, 0x59000000UL, 0x47000000UL, 0xf0000000UL, +0xad000000UL, 0xd4000000UL, 0xa2000000UL, 0xaf000000UL, 0x9c000000UL, 0xa4000000UL, 0x72000000UL, 0xc0000000UL, +0xb7000000UL, 0xfd000000UL, 0x93000000UL, 0x26000000UL, 0x36000000UL, 0x3f000000UL, 0xf7000000UL, 0xcc000000UL, +0x34000000UL, 0xa5000000UL, 0xe5000000UL, 0xf1000000UL, 0x71000000UL, 0xd8000000UL, 0x31000000UL, 0x15000000UL, +0x04000000UL, 0xc7000000UL, 0x23000000UL, 0xc3000000UL, 0x18000000UL, 0x96000000UL, 0x05000000UL, 0x9a000000UL, +0x07000000UL, 0x12000000UL, 0x80000000UL, 0xe2000000UL, 0xeb000000UL, 0x27000000UL, 0xb2000000UL, 0x75000000UL, +0x09000000UL, 0x83000000UL, 0x2c000000UL, 0x1a000000UL, 0x1b000000UL, 0x6e000000UL, 0x5a000000UL, 0xa0000000UL, +0x52000000UL, 0x3b000000UL, 0xd6000000UL, 0xb3000000UL, 0x29000000UL, 0xe3000000UL, 0x2f000000UL, 0x84000000UL, +0x53000000UL, 0xd1000000UL, 0x00000000UL, 0xed000000UL, 0x20000000UL, 0xfc000000UL, 0xb1000000UL, 0x5b000000UL, +0x6a000000UL, 0xcb000000UL, 0xbe000000UL, 0x39000000UL, 0x4a000000UL, 0x4c000000UL, 0x58000000UL, 0xcf000000UL, +0xd0000000UL, 0xef000000UL, 0xaa000000UL, 0xfb000000UL, 0x43000000UL, 0x4d000000UL, 0x33000000UL, 0x85000000UL, +0x45000000UL, 0xf9000000UL, 0x02000000UL, 0x7f000000UL, 0x50000000UL, 0x3c000000UL, 0x9f000000UL, 0xa8000000UL, +0x51000000UL, 0xa3000000UL, 0x40000000UL, 0x8f000000UL, 0x92000000UL, 0x9d000000UL, 0x38000000UL, 0xf5000000UL, +0xbc000000UL, 0xb6000000UL, 0xda000000UL, 0x21000000UL, 0x10000000UL, 0xff000000UL, 0xf3000000UL, 0xd2000000UL, +0xcd000000UL, 0x0c000000UL, 0x13000000UL, 0xec000000UL, 0x5f000000UL, 0x97000000UL, 0x44000000UL, 0x17000000UL, +0xc4000000UL, 0xa7000000UL, 0x7e000000UL, 0x3d000000UL, 0x64000000UL, 0x5d000000UL, 0x19000000UL, 0x73000000UL, +0x60000000UL, 0x81000000UL, 0x4f000000UL, 0xdc000000UL, 0x22000000UL, 0x2a000000UL, 0x90000000UL, 0x88000000UL, +0x46000000UL, 0xee000000UL, 0xb8000000UL, 0x14000000UL, 0xde000000UL, 0x5e000000UL, 0x0b000000UL, 0xdb000000UL, +0xe0000000UL, 0x32000000UL, 0x3a000000UL, 0x0a000000UL, 0x49000000UL, 0x06000000UL, 0x24000000UL, 0x5c000000UL, +0xc2000000UL, 0xd3000000UL, 0xac000000UL, 0x62000000UL, 0x91000000UL, 0x95000000UL, 0xe4000000UL, 0x79000000UL, +0xe7000000UL, 0xc8000000UL, 0x37000000UL, 0x6d000000UL, 0x8d000000UL, 0xd5000000UL, 0x4e000000UL, 0xa9000000UL, +0x6c000000UL, 0x56000000UL, 0xf4000000UL, 0xea000000UL, 0x65000000UL, 0x7a000000UL, 0xae000000UL, 0x08000000UL, +0xba000000UL, 0x78000000UL, 0x25000000UL, 0x2e000000UL, 0x1c000000UL, 0xa6000000UL, 0xb4000000UL, 0xc6000000UL, +0xe8000000UL, 0xdd000000UL, 0x74000000UL, 0x1f000000UL, 0x4b000000UL, 0xbd000000UL, 0x8b000000UL, 0x8a000000UL, +0x70000000UL, 0x3e000000UL, 0xb5000000UL, 0x66000000UL, 0x48000000UL, 0x03000000UL, 0xf6000000UL, 0x0e000000UL, +0x61000000UL, 0x35000000UL, 0x57000000UL, 0xb9000000UL, 0x86000000UL, 0xc1000000UL, 0x1d000000UL, 0x9e000000UL, +0xe1000000UL, 0xf8000000UL, 0x98000000UL, 0x11000000UL, 0x69000000UL, 0xd9000000UL, 0x8e000000UL, 0x94000000UL, +0x9b000000UL, 0x1e000000UL, 0x87000000UL, 0xe9000000UL, 0xce000000UL, 0x55000000UL, 0x28000000UL, 0xdf000000UL, +0x8c000000UL, 0xa1000000UL, 0x89000000UL, 0x0d000000UL, 0xbf000000UL, 0xe6000000UL, 0x42000000UL, 0x68000000UL, +0x41000000UL, 0x99000000UL, 0x2d000000UL, 0x0f000000UL, 0xb0000000UL, 0x54000000UL, 0xbb000000UL, 0x16000000UL +}; +#endif /* pelimac */ + +#ifndef ENCRYPT_ONLY + +static const ulong32 TD1[256] = { + 0x5051f4a7UL, 0x537e4165UL, 0xc31a17a4UL, 0x963a275eUL, + 0xcb3bab6bUL, 0xf11f9d45UL, 0xabacfa58UL, 0x934be303UL, + 0x552030faUL, 0xf6ad766dUL, 0x9188cc76UL, 0x25f5024cUL, + 0xfc4fe5d7UL, 0xd7c52acbUL, 0x80263544UL, 0x8fb562a3UL, + 0x49deb15aUL, 0x6725ba1bUL, 0x9845ea0eUL, 0xe15dfec0UL, + 0x02c32f75UL, 0x12814cf0UL, 0xa38d4697UL, 0xc66bd3f9UL, + 0xe7038f5fUL, 0x9515929cUL, 0xebbf6d7aUL, 0xda955259UL, + 0x2dd4be83UL, 0xd3587421UL, 0x2949e069UL, 0x448ec9c8UL, + 0x6a75c289UL, 0x78f48e79UL, 0x6b99583eUL, 0xdd27b971UL, + 0xb6bee14fUL, 0x17f088adUL, 0x66c920acUL, 0xb47dce3aUL, + 0x1863df4aUL, 0x82e51a31UL, 0x60975133UL, 0x4562537fUL, + 0xe0b16477UL, 0x84bb6baeUL, 0x1cfe81a0UL, 0x94f9082bUL, + 0x58704868UL, 0x198f45fdUL, 0x8794de6cUL, 0xb7527bf8UL, + 0x23ab73d3UL, 0xe2724b02UL, 0x57e31f8fUL, 0x2a6655abUL, + 0x07b2eb28UL, 0x032fb5c2UL, 0x9a86c57bUL, 0xa5d33708UL, + 0xf2302887UL, 0xb223bfa5UL, 0xba02036aUL, 0x5ced1682UL, + 0x2b8acf1cUL, 0x92a779b4UL, 0xf0f307f2UL, 0xa14e69e2UL, + 0xcd65daf4UL, 0xd50605beUL, 0x1fd13462UL, 0x8ac4a6feUL, + 0x9d342e53UL, 0xa0a2f355UL, 0x32058ae1UL, 0x75a4f6ebUL, + 0x390b83ecUL, 0xaa4060efUL, 0x065e719fUL, 0x51bd6e10UL, + 0xf93e218aUL, 0x3d96dd06UL, 0xaedd3e05UL, 0x464de6bdUL, + 0xb591548dUL, 0x0571c45dUL, 0x6f0406d4UL, 0xff605015UL, + 0x241998fbUL, 0x97d6bde9UL, 0xcc894043UL, 0x7767d99eUL, + 0xbdb0e842UL, 0x8807898bUL, 0x38e7195bUL, 0xdb79c8eeUL, + 0x47a17c0aUL, 0xe97c420fUL, 0xc9f8841eUL, 0x00000000UL, + 0x83098086UL, 0x48322bedUL, 0xac1e1170UL, 0x4e6c5a72UL, + 0xfbfd0effUL, 0x560f8538UL, 0x1e3daed5UL, 0x27362d39UL, + 0x640a0fd9UL, 0x21685ca6UL, 0xd19b5b54UL, 0x3a24362eUL, + 0xb10c0a67UL, 0x0f9357e7UL, 0xd2b4ee96UL, 0x9e1b9b91UL, + 0x4f80c0c5UL, 0xa261dc20UL, 0x695a774bUL, 0x161c121aUL, + 0x0ae293baUL, 0xe5c0a02aUL, 0x433c22e0UL, 0x1d121b17UL, + 0x0b0e090dUL, 0xadf28bc7UL, 0xb92db6a8UL, 0xc8141ea9UL, + 0x8557f119UL, 0x4caf7507UL, 0xbbee99ddUL, 0xfda37f60UL, + 0x9ff70126UL, 0xbc5c72f5UL, 0xc544663bUL, 0x345bfb7eUL, + 0x768b4329UL, 0xdccb23c6UL, 0x68b6edfcUL, 0x63b8e4f1UL, + 0xcad731dcUL, 0x10426385UL, 0x40139722UL, 0x2084c611UL, + 0x7d854a24UL, 0xf8d2bb3dUL, 0x11aef932UL, 0x6dc729a1UL, + 0x4b1d9e2fUL, 0xf3dcb230UL, 0xec0d8652UL, 0xd077c1e3UL, + 0x6c2bb316UL, 0x99a970b9UL, 0xfa119448UL, 0x2247e964UL, + 0xc4a8fc8cUL, 0x1aa0f03fUL, 0xd8567d2cUL, 0xef223390UL, + 0xc787494eUL, 0xc1d938d1UL, 0xfe8ccaa2UL, 0x3698d40bUL, + 0xcfa6f581UL, 0x28a57adeUL, 0x26dab78eUL, 0xa43fadbfUL, + 0xe42c3a9dUL, 0x0d507892UL, 0x9b6a5fccUL, 0x62547e46UL, + 0xc2f68d13UL, 0xe890d8b8UL, 0x5e2e39f7UL, 0xf582c3afUL, + 0xbe9f5d80UL, 0x7c69d093UL, 0xa96fd52dUL, 0xb3cf2512UL, + 0x3bc8ac99UL, 0xa710187dUL, 0x6ee89c63UL, 0x7bdb3bbbUL, + 0x09cd2678UL, 0xf46e5918UL, 0x01ec9ab7UL, 0xa8834f9aUL, + 0x65e6956eUL, 0x7eaaffe6UL, 0x0821bccfUL, 0xe6ef15e8UL, + 0xd9bae79bUL, 0xce4a6f36UL, 0xd4ea9f09UL, 0xd629b07cUL, + 0xaf31a4b2UL, 0x312a3f23UL, 0x30c6a594UL, 0xc035a266UL, + 0x37744ebcUL, 0xa6fc82caUL, 0xb0e090d0UL, 0x1533a7d8UL, + 0x4af10498UL, 0xf741ecdaUL, 0x0e7fcd50UL, 0x2f1791f6UL, + 0x8d764dd6UL, 0x4d43efb0UL, 0x54ccaa4dUL, 0xdfe49604UL, + 0xe39ed1b5UL, 0x1b4c6a88UL, 0xb8c12c1fUL, 0x7f466551UL, + 0x049d5eeaUL, 0x5d018c35UL, 0x73fa8774UL, 0x2efb0b41UL, + 0x5ab3671dUL, 0x5292dbd2UL, 0x33e91056UL, 0x136dd647UL, + 0x8c9ad761UL, 0x7a37a10cUL, 0x8e59f814UL, 0x89eb133cUL, + 0xeecea927UL, 0x35b761c9UL, 0xede11ce5UL, 0x3c7a47b1UL, + 0x599cd2dfUL, 0x3f55f273UL, 0x791814ceUL, 0xbf73c737UL, + 0xea53f7cdUL, 0x5b5ffdaaUL, 0x14df3d6fUL, 0x867844dbUL, + 0x81caaff3UL, 0x3eb968c4UL, 0x2c382434UL, 0x5fc2a340UL, + 0x72161dc3UL, 0x0cbce225UL, 0x8b283c49UL, 0x41ff0d95UL, + 0x7139a801UL, 0xde080cb3UL, 0x9cd8b4e4UL, 0x906456c1UL, + 0x617bcb84UL, 0x70d532b6UL, 0x74486c5cUL, 0x42d0b857UL, +}; +static const ulong32 TD2[256] = { + 0xa75051f4UL, 0x65537e41UL, 0xa4c31a17UL, 0x5e963a27UL, + 0x6bcb3babUL, 0x45f11f9dUL, 0x58abacfaUL, 0x03934be3UL, + 0xfa552030UL, 0x6df6ad76UL, 0x769188ccUL, 0x4c25f502UL, + 0xd7fc4fe5UL, 0xcbd7c52aUL, 0x44802635UL, 0xa38fb562UL, + 0x5a49deb1UL, 0x1b6725baUL, 0x0e9845eaUL, 0xc0e15dfeUL, + 0x7502c32fUL, 0xf012814cUL, 0x97a38d46UL, 0xf9c66bd3UL, + 0x5fe7038fUL, 0x9c951592UL, 0x7aebbf6dUL, 0x59da9552UL, + 0x832dd4beUL, 0x21d35874UL, 0x692949e0UL, 0xc8448ec9UL, + 0x896a75c2UL, 0x7978f48eUL, 0x3e6b9958UL, 0x71dd27b9UL, + 0x4fb6bee1UL, 0xad17f088UL, 0xac66c920UL, 0x3ab47dceUL, + 0x4a1863dfUL, 0x3182e51aUL, 0x33609751UL, 0x7f456253UL, + 0x77e0b164UL, 0xae84bb6bUL, 0xa01cfe81UL, 0x2b94f908UL, + 0x68587048UL, 0xfd198f45UL, 0x6c8794deUL, 0xf8b7527bUL, + 0xd323ab73UL, 0x02e2724bUL, 0x8f57e31fUL, 0xab2a6655UL, + 0x2807b2ebUL, 0xc2032fb5UL, 0x7b9a86c5UL, 0x08a5d337UL, + 0x87f23028UL, 0xa5b223bfUL, 0x6aba0203UL, 0x825ced16UL, + 0x1c2b8acfUL, 0xb492a779UL, 0xf2f0f307UL, 0xe2a14e69UL, + 0xf4cd65daUL, 0xbed50605UL, 0x621fd134UL, 0xfe8ac4a6UL, + 0x539d342eUL, 0x55a0a2f3UL, 0xe132058aUL, 0xeb75a4f6UL, + 0xec390b83UL, 0xefaa4060UL, 0x9f065e71UL, 0x1051bd6eUL, + 0x8af93e21UL, 0x063d96ddUL, 0x05aedd3eUL, 0xbd464de6UL, + 0x8db59154UL, 0x5d0571c4UL, 0xd46f0406UL, 0x15ff6050UL, + 0xfb241998UL, 0xe997d6bdUL, 0x43cc8940UL, 0x9e7767d9UL, + 0x42bdb0e8UL, 0x8b880789UL, 0x5b38e719UL, 0xeedb79c8UL, + 0x0a47a17cUL, 0x0fe97c42UL, 0x1ec9f884UL, 0x00000000UL, + 0x86830980UL, 0xed48322bUL, 0x70ac1e11UL, 0x724e6c5aUL, + 0xfffbfd0eUL, 0x38560f85UL, 0xd51e3daeUL, 0x3927362dUL, + 0xd9640a0fUL, 0xa621685cUL, 0x54d19b5bUL, 0x2e3a2436UL, + 0x67b10c0aUL, 0xe70f9357UL, 0x96d2b4eeUL, 0x919e1b9bUL, + 0xc54f80c0UL, 0x20a261dcUL, 0x4b695a77UL, 0x1a161c12UL, + 0xba0ae293UL, 0x2ae5c0a0UL, 0xe0433c22UL, 0x171d121bUL, + 0x0d0b0e09UL, 0xc7adf28bUL, 0xa8b92db6UL, 0xa9c8141eUL, + 0x198557f1UL, 0x074caf75UL, 0xddbbee99UL, 0x60fda37fUL, + 0x269ff701UL, 0xf5bc5c72UL, 0x3bc54466UL, 0x7e345bfbUL, + 0x29768b43UL, 0xc6dccb23UL, 0xfc68b6edUL, 0xf163b8e4UL, + 0xdccad731UL, 0x85104263UL, 0x22401397UL, 0x112084c6UL, + 0x247d854aUL, 0x3df8d2bbUL, 0x3211aef9UL, 0xa16dc729UL, + 0x2f4b1d9eUL, 0x30f3dcb2UL, 0x52ec0d86UL, 0xe3d077c1UL, + 0x166c2bb3UL, 0xb999a970UL, 0x48fa1194UL, 0x642247e9UL, + 0x8cc4a8fcUL, 0x3f1aa0f0UL, 0x2cd8567dUL, 0x90ef2233UL, + 0x4ec78749UL, 0xd1c1d938UL, 0xa2fe8ccaUL, 0x0b3698d4UL, + 0x81cfa6f5UL, 0xde28a57aUL, 0x8e26dab7UL, 0xbfa43fadUL, + 0x9de42c3aUL, 0x920d5078UL, 0xcc9b6a5fUL, 0x4662547eUL, + 0x13c2f68dUL, 0xb8e890d8UL, 0xf75e2e39UL, 0xaff582c3UL, + 0x80be9f5dUL, 0x937c69d0UL, 0x2da96fd5UL, 0x12b3cf25UL, + 0x993bc8acUL, 0x7da71018UL, 0x636ee89cUL, 0xbb7bdb3bUL, + 0x7809cd26UL, 0x18f46e59UL, 0xb701ec9aUL, 0x9aa8834fUL, + 0x6e65e695UL, 0xe67eaaffUL, 0xcf0821bcUL, 0xe8e6ef15UL, + 0x9bd9bae7UL, 0x36ce4a6fUL, 0x09d4ea9fUL, 0x7cd629b0UL, + 0xb2af31a4UL, 0x23312a3fUL, 0x9430c6a5UL, 0x66c035a2UL, + 0xbc37744eUL, 0xcaa6fc82UL, 0xd0b0e090UL, 0xd81533a7UL, + 0x984af104UL, 0xdaf741ecUL, 0x500e7fcdUL, 0xf62f1791UL, + 0xd68d764dUL, 0xb04d43efUL, 0x4d54ccaaUL, 0x04dfe496UL, + 0xb5e39ed1UL, 0x881b4c6aUL, 0x1fb8c12cUL, 0x517f4665UL, + 0xea049d5eUL, 0x355d018cUL, 0x7473fa87UL, 0x412efb0bUL, + 0x1d5ab367UL, 0xd25292dbUL, 0x5633e910UL, 0x47136dd6UL, + 0x618c9ad7UL, 0x0c7a37a1UL, 0x148e59f8UL, 0x3c89eb13UL, + 0x27eecea9UL, 0xc935b761UL, 0xe5ede11cUL, 0xb13c7a47UL, + 0xdf599cd2UL, 0x733f55f2UL, 0xce791814UL, 0x37bf73c7UL, + 0xcdea53f7UL, 0xaa5b5ffdUL, 0x6f14df3dUL, 0xdb867844UL, + 0xf381caafUL, 0xc43eb968UL, 0x342c3824UL, 0x405fc2a3UL, + 0xc372161dUL, 0x250cbce2UL, 0x498b283cUL, 0x9541ff0dUL, + 0x017139a8UL, 0xb3de080cUL, 0xe49cd8b4UL, 0xc1906456UL, + 0x84617bcbUL, 0xb670d532UL, 0x5c74486cUL, 0x5742d0b8UL, +}; +static const ulong32 TD3[256] = { + 0xf4a75051UL, 0x4165537eUL, 0x17a4c31aUL, 0x275e963aUL, + 0xab6bcb3bUL, 0x9d45f11fUL, 0xfa58abacUL, 0xe303934bUL, + 0x30fa5520UL, 0x766df6adUL, 0xcc769188UL, 0x024c25f5UL, + 0xe5d7fc4fUL, 0x2acbd7c5UL, 0x35448026UL, 0x62a38fb5UL, + 0xb15a49deUL, 0xba1b6725UL, 0xea0e9845UL, 0xfec0e15dUL, + 0x2f7502c3UL, 0x4cf01281UL, 0x4697a38dUL, 0xd3f9c66bUL, + 0x8f5fe703UL, 0x929c9515UL, 0x6d7aebbfUL, 0x5259da95UL, + 0xbe832dd4UL, 0x7421d358UL, 0xe0692949UL, 0xc9c8448eUL, + 0xc2896a75UL, 0x8e7978f4UL, 0x583e6b99UL, 0xb971dd27UL, + 0xe14fb6beUL, 0x88ad17f0UL, 0x20ac66c9UL, 0xce3ab47dUL, + 0xdf4a1863UL, 0x1a3182e5UL, 0x51336097UL, 0x537f4562UL, + 0x6477e0b1UL, 0x6bae84bbUL, 0x81a01cfeUL, 0x082b94f9UL, + 0x48685870UL, 0x45fd198fUL, 0xde6c8794UL, 0x7bf8b752UL, + 0x73d323abUL, 0x4b02e272UL, 0x1f8f57e3UL, 0x55ab2a66UL, + 0xeb2807b2UL, 0xb5c2032fUL, 0xc57b9a86UL, 0x3708a5d3UL, + 0x2887f230UL, 0xbfa5b223UL, 0x036aba02UL, 0x16825cedUL, + 0xcf1c2b8aUL, 0x79b492a7UL, 0x07f2f0f3UL, 0x69e2a14eUL, + 0xdaf4cd65UL, 0x05bed506UL, 0x34621fd1UL, 0xa6fe8ac4UL, + 0x2e539d34UL, 0xf355a0a2UL, 0x8ae13205UL, 0xf6eb75a4UL, + 0x83ec390bUL, 0x60efaa40UL, 0x719f065eUL, 0x6e1051bdUL, + 0x218af93eUL, 0xdd063d96UL, 0x3e05aeddUL, 0xe6bd464dUL, + 0x548db591UL, 0xc45d0571UL, 0x06d46f04UL, 0x5015ff60UL, + 0x98fb2419UL, 0xbde997d6UL, 0x4043cc89UL, 0xd99e7767UL, + 0xe842bdb0UL, 0x898b8807UL, 0x195b38e7UL, 0xc8eedb79UL, + 0x7c0a47a1UL, 0x420fe97cUL, 0x841ec9f8UL, 0x00000000UL, + 0x80868309UL, 0x2bed4832UL, 0x1170ac1eUL, 0x5a724e6cUL, + 0x0efffbfdUL, 0x8538560fUL, 0xaed51e3dUL, 0x2d392736UL, + 0x0fd9640aUL, 0x5ca62168UL, 0x5b54d19bUL, 0x362e3a24UL, + 0x0a67b10cUL, 0x57e70f93UL, 0xee96d2b4UL, 0x9b919e1bUL, + 0xc0c54f80UL, 0xdc20a261UL, 0x774b695aUL, 0x121a161cUL, + 0x93ba0ae2UL, 0xa02ae5c0UL, 0x22e0433cUL, 0x1b171d12UL, + 0x090d0b0eUL, 0x8bc7adf2UL, 0xb6a8b92dUL, 0x1ea9c814UL, + 0xf1198557UL, 0x75074cafUL, 0x99ddbbeeUL, 0x7f60fda3UL, + 0x01269ff7UL, 0x72f5bc5cUL, 0x663bc544UL, 0xfb7e345bUL, + 0x4329768bUL, 0x23c6dccbUL, 0xedfc68b6UL, 0xe4f163b8UL, + 0x31dccad7UL, 0x63851042UL, 0x97224013UL, 0xc6112084UL, + 0x4a247d85UL, 0xbb3df8d2UL, 0xf93211aeUL, 0x29a16dc7UL, + 0x9e2f4b1dUL, 0xb230f3dcUL, 0x8652ec0dUL, 0xc1e3d077UL, + 0xb3166c2bUL, 0x70b999a9UL, 0x9448fa11UL, 0xe9642247UL, + 0xfc8cc4a8UL, 0xf03f1aa0UL, 0x7d2cd856UL, 0x3390ef22UL, + 0x494ec787UL, 0x38d1c1d9UL, 0xcaa2fe8cUL, 0xd40b3698UL, + 0xf581cfa6UL, 0x7ade28a5UL, 0xb78e26daUL, 0xadbfa43fUL, + 0x3a9de42cUL, 0x78920d50UL, 0x5fcc9b6aUL, 0x7e466254UL, + 0x8d13c2f6UL, 0xd8b8e890UL, 0x39f75e2eUL, 0xc3aff582UL, + 0x5d80be9fUL, 0xd0937c69UL, 0xd52da96fUL, 0x2512b3cfUL, + 0xac993bc8UL, 0x187da710UL, 0x9c636ee8UL, 0x3bbb7bdbUL, + 0x267809cdUL, 0x5918f46eUL, 0x9ab701ecUL, 0x4f9aa883UL, + 0x956e65e6UL, 0xffe67eaaUL, 0xbccf0821UL, 0x15e8e6efUL, + 0xe79bd9baUL, 0x6f36ce4aUL, 0x9f09d4eaUL, 0xb07cd629UL, + 0xa4b2af31UL, 0x3f23312aUL, 0xa59430c6UL, 0xa266c035UL, + 0x4ebc3774UL, 0x82caa6fcUL, 0x90d0b0e0UL, 0xa7d81533UL, + 0x04984af1UL, 0xecdaf741UL, 0xcd500e7fUL, 0x91f62f17UL, + 0x4dd68d76UL, 0xefb04d43UL, 0xaa4d54ccUL, 0x9604dfe4UL, + 0xd1b5e39eUL, 0x6a881b4cUL, 0x2c1fb8c1UL, 0x65517f46UL, + 0x5eea049dUL, 0x8c355d01UL, 0x877473faUL, 0x0b412efbUL, + 0x671d5ab3UL, 0xdbd25292UL, 0x105633e9UL, 0xd647136dUL, + 0xd7618c9aUL, 0xa10c7a37UL, 0xf8148e59UL, 0x133c89ebUL, + 0xa927eeceUL, 0x61c935b7UL, 0x1ce5ede1UL, 0x47b13c7aUL, + 0xd2df599cUL, 0xf2733f55UL, 0x14ce7918UL, 0xc737bf73UL, + 0xf7cdea53UL, 0xfdaa5b5fUL, 0x3d6f14dfUL, 0x44db8678UL, + 0xaff381caUL, 0x68c43eb9UL, 0x24342c38UL, 0xa3405fc2UL, + 0x1dc37216UL, 0xe2250cbcUL, 0x3c498b28UL, 0x0d9541ffUL, + 0xa8017139UL, 0x0cb3de08UL, 0xb4e49cd8UL, 0x56c19064UL, + 0xcb84617bUL, 0x32b670d5UL, 0x6c5c7448UL, 0xb85742d0UL, +}; + +static const ulong32 Tks0[] = { +0x00000000UL, 0x0e090d0bUL, 0x1c121a16UL, 0x121b171dUL, 0x3824342cUL, 0x362d3927UL, 0x24362e3aUL, 0x2a3f2331UL, +0x70486858UL, 0x7e416553UL, 0x6c5a724eUL, 0x62537f45UL, 0x486c5c74UL, 0x4665517fUL, 0x547e4662UL, 0x5a774b69UL, +0xe090d0b0UL, 0xee99ddbbUL, 0xfc82caa6UL, 0xf28bc7adUL, 0xd8b4e49cUL, 0xd6bde997UL, 0xc4a6fe8aUL, 0xcaaff381UL, +0x90d8b8e8UL, 0x9ed1b5e3UL, 0x8ccaa2feUL, 0x82c3aff5UL, 0xa8fc8cc4UL, 0xa6f581cfUL, 0xb4ee96d2UL, 0xbae79bd9UL, +0xdb3bbb7bUL, 0xd532b670UL, 0xc729a16dUL, 0xc920ac66UL, 0xe31f8f57UL, 0xed16825cUL, 0xff0d9541UL, 0xf104984aUL, +0xab73d323UL, 0xa57ade28UL, 0xb761c935UL, 0xb968c43eUL, 0x9357e70fUL, 0x9d5eea04UL, 0x8f45fd19UL, 0x814cf012UL, +0x3bab6bcbUL, 0x35a266c0UL, 0x27b971ddUL, 0x29b07cd6UL, 0x038f5fe7UL, 0x0d8652ecUL, 0x1f9d45f1UL, 0x119448faUL, +0x4be30393UL, 0x45ea0e98UL, 0x57f11985UL, 0x59f8148eUL, 0x73c737bfUL, 0x7dce3ab4UL, 0x6fd52da9UL, 0x61dc20a2UL, +0xad766df6UL, 0xa37f60fdUL, 0xb16477e0UL, 0xbf6d7aebUL, 0x955259daUL, 0x9b5b54d1UL, 0x894043ccUL, 0x87494ec7UL, +0xdd3e05aeUL, 0xd33708a5UL, 0xc12c1fb8UL, 0xcf2512b3UL, 0xe51a3182UL, 0xeb133c89UL, 0xf9082b94UL, 0xf701269fUL, +0x4de6bd46UL, 0x43efb04dUL, 0x51f4a750UL, 0x5ffdaa5bUL, 0x75c2896aUL, 0x7bcb8461UL, 0x69d0937cUL, 0x67d99e77UL, +0x3daed51eUL, 0x33a7d815UL, 0x21bccf08UL, 0x2fb5c203UL, 0x058ae132UL, 0x0b83ec39UL, 0x1998fb24UL, 0x1791f62fUL, +0x764dd68dUL, 0x7844db86UL, 0x6a5fcc9bUL, 0x6456c190UL, 0x4e69e2a1UL, 0x4060efaaUL, 0x527bf8b7UL, 0x5c72f5bcUL, +0x0605bed5UL, 0x080cb3deUL, 0x1a17a4c3UL, 0x141ea9c8UL, 0x3e218af9UL, 0x302887f2UL, 0x223390efUL, 0x2c3a9de4UL, +0x96dd063dUL, 0x98d40b36UL, 0x8acf1c2bUL, 0x84c61120UL, 0xaef93211UL, 0xa0f03f1aUL, 0xb2eb2807UL, 0xbce2250cUL, +0xe6956e65UL, 0xe89c636eUL, 0xfa877473UL, 0xf48e7978UL, 0xdeb15a49UL, 0xd0b85742UL, 0xc2a3405fUL, 0xccaa4d54UL, +0x41ecdaf7UL, 0x4fe5d7fcUL, 0x5dfec0e1UL, 0x53f7cdeaUL, 0x79c8eedbUL, 0x77c1e3d0UL, 0x65daf4cdUL, 0x6bd3f9c6UL, +0x31a4b2afUL, 0x3fadbfa4UL, 0x2db6a8b9UL, 0x23bfa5b2UL, 0x09808683UL, 0x07898b88UL, 0x15929c95UL, 0x1b9b919eUL, +0xa17c0a47UL, 0xaf75074cUL, 0xbd6e1051UL, 0xb3671d5aUL, 0x99583e6bUL, 0x97513360UL, 0x854a247dUL, 0x8b432976UL, +0xd134621fUL, 0xdf3d6f14UL, 0xcd267809UL, 0xc32f7502UL, 0xe9105633UL, 0xe7195b38UL, 0xf5024c25UL, 0xfb0b412eUL, +0x9ad7618cUL, 0x94de6c87UL, 0x86c57b9aUL, 0x88cc7691UL, 0xa2f355a0UL, 0xacfa58abUL, 0xbee14fb6UL, 0xb0e842bdUL, +0xea9f09d4UL, 0xe49604dfUL, 0xf68d13c2UL, 0xf8841ec9UL, 0xd2bb3df8UL, 0xdcb230f3UL, 0xcea927eeUL, 0xc0a02ae5UL, +0x7a47b13cUL, 0x744ebc37UL, 0x6655ab2aUL, 0x685ca621UL, 0x42638510UL, 0x4c6a881bUL, 0x5e719f06UL, 0x5078920dUL, +0x0a0fd964UL, 0x0406d46fUL, 0x161dc372UL, 0x1814ce79UL, 0x322bed48UL, 0x3c22e043UL, 0x2e39f75eUL, 0x2030fa55UL, +0xec9ab701UL, 0xe293ba0aUL, 0xf088ad17UL, 0xfe81a01cUL, 0xd4be832dUL, 0xdab78e26UL, 0xc8ac993bUL, 0xc6a59430UL, +0x9cd2df59UL, 0x92dbd252UL, 0x80c0c54fUL, 0x8ec9c844UL, 0xa4f6eb75UL, 0xaaffe67eUL, 0xb8e4f163UL, 0xb6edfc68UL, +0x0c0a67b1UL, 0x02036abaUL, 0x10187da7UL, 0x1e1170acUL, 0x342e539dUL, 0x3a275e96UL, 0x283c498bUL, 0x26354480UL, +0x7c420fe9UL, 0x724b02e2UL, 0x605015ffUL, 0x6e5918f4UL, 0x44663bc5UL, 0x4a6f36ceUL, 0x587421d3UL, 0x567d2cd8UL, +0x37a10c7aUL, 0x39a80171UL, 0x2bb3166cUL, 0x25ba1b67UL, 0x0f853856UL, 0x018c355dUL, 0x13972240UL, 0x1d9e2f4bUL, +0x47e96422UL, 0x49e06929UL, 0x5bfb7e34UL, 0x55f2733fUL, 0x7fcd500eUL, 0x71c45d05UL, 0x63df4a18UL, 0x6dd64713UL, +0xd731dccaUL, 0xd938d1c1UL, 0xcb23c6dcUL, 0xc52acbd7UL, 0xef15e8e6UL, 0xe11ce5edUL, 0xf307f2f0UL, 0xfd0efffbUL, +0xa779b492UL, 0xa970b999UL, 0xbb6bae84UL, 0xb562a38fUL, 0x9f5d80beUL, 0x91548db5UL, 0x834f9aa8UL, 0x8d4697a3UL +}; + +static const ulong32 Tks1[] = { +0x00000000UL, 0x0b0e090dUL, 0x161c121aUL, 0x1d121b17UL, 0x2c382434UL, 0x27362d39UL, 0x3a24362eUL, 0x312a3f23UL, +0x58704868UL, 0x537e4165UL, 0x4e6c5a72UL, 0x4562537fUL, 0x74486c5cUL, 0x7f466551UL, 0x62547e46UL, 0x695a774bUL, +0xb0e090d0UL, 0xbbee99ddUL, 0xa6fc82caUL, 0xadf28bc7UL, 0x9cd8b4e4UL, 0x97d6bde9UL, 0x8ac4a6feUL, 0x81caaff3UL, +0xe890d8b8UL, 0xe39ed1b5UL, 0xfe8ccaa2UL, 0xf582c3afUL, 0xc4a8fc8cUL, 0xcfa6f581UL, 0xd2b4ee96UL, 0xd9bae79bUL, +0x7bdb3bbbUL, 0x70d532b6UL, 0x6dc729a1UL, 0x66c920acUL, 0x57e31f8fUL, 0x5ced1682UL, 0x41ff0d95UL, 0x4af10498UL, +0x23ab73d3UL, 0x28a57adeUL, 0x35b761c9UL, 0x3eb968c4UL, 0x0f9357e7UL, 0x049d5eeaUL, 0x198f45fdUL, 0x12814cf0UL, +0xcb3bab6bUL, 0xc035a266UL, 0xdd27b971UL, 0xd629b07cUL, 0xe7038f5fUL, 0xec0d8652UL, 0xf11f9d45UL, 0xfa119448UL, +0x934be303UL, 0x9845ea0eUL, 0x8557f119UL, 0x8e59f814UL, 0xbf73c737UL, 0xb47dce3aUL, 0xa96fd52dUL, 0xa261dc20UL, +0xf6ad766dUL, 0xfda37f60UL, 0xe0b16477UL, 0xebbf6d7aUL, 0xda955259UL, 0xd19b5b54UL, 0xcc894043UL, 0xc787494eUL, +0xaedd3e05UL, 0xa5d33708UL, 0xb8c12c1fUL, 0xb3cf2512UL, 0x82e51a31UL, 0x89eb133cUL, 0x94f9082bUL, 0x9ff70126UL, +0x464de6bdUL, 0x4d43efb0UL, 0x5051f4a7UL, 0x5b5ffdaaUL, 0x6a75c289UL, 0x617bcb84UL, 0x7c69d093UL, 0x7767d99eUL, +0x1e3daed5UL, 0x1533a7d8UL, 0x0821bccfUL, 0x032fb5c2UL, 0x32058ae1UL, 0x390b83ecUL, 0x241998fbUL, 0x2f1791f6UL, +0x8d764dd6UL, 0x867844dbUL, 0x9b6a5fccUL, 0x906456c1UL, 0xa14e69e2UL, 0xaa4060efUL, 0xb7527bf8UL, 0xbc5c72f5UL, +0xd50605beUL, 0xde080cb3UL, 0xc31a17a4UL, 0xc8141ea9UL, 0xf93e218aUL, 0xf2302887UL, 0xef223390UL, 0xe42c3a9dUL, +0x3d96dd06UL, 0x3698d40bUL, 0x2b8acf1cUL, 0x2084c611UL, 0x11aef932UL, 0x1aa0f03fUL, 0x07b2eb28UL, 0x0cbce225UL, +0x65e6956eUL, 0x6ee89c63UL, 0x73fa8774UL, 0x78f48e79UL, 0x49deb15aUL, 0x42d0b857UL, 0x5fc2a340UL, 0x54ccaa4dUL, +0xf741ecdaUL, 0xfc4fe5d7UL, 0xe15dfec0UL, 0xea53f7cdUL, 0xdb79c8eeUL, 0xd077c1e3UL, 0xcd65daf4UL, 0xc66bd3f9UL, +0xaf31a4b2UL, 0xa43fadbfUL, 0xb92db6a8UL, 0xb223bfa5UL, 0x83098086UL, 0x8807898bUL, 0x9515929cUL, 0x9e1b9b91UL, +0x47a17c0aUL, 0x4caf7507UL, 0x51bd6e10UL, 0x5ab3671dUL, 0x6b99583eUL, 0x60975133UL, 0x7d854a24UL, 0x768b4329UL, +0x1fd13462UL, 0x14df3d6fUL, 0x09cd2678UL, 0x02c32f75UL, 0x33e91056UL, 0x38e7195bUL, 0x25f5024cUL, 0x2efb0b41UL, +0x8c9ad761UL, 0x8794de6cUL, 0x9a86c57bUL, 0x9188cc76UL, 0xa0a2f355UL, 0xabacfa58UL, 0xb6bee14fUL, 0xbdb0e842UL, +0xd4ea9f09UL, 0xdfe49604UL, 0xc2f68d13UL, 0xc9f8841eUL, 0xf8d2bb3dUL, 0xf3dcb230UL, 0xeecea927UL, 0xe5c0a02aUL, +0x3c7a47b1UL, 0x37744ebcUL, 0x2a6655abUL, 0x21685ca6UL, 0x10426385UL, 0x1b4c6a88UL, 0x065e719fUL, 0x0d507892UL, +0x640a0fd9UL, 0x6f0406d4UL, 0x72161dc3UL, 0x791814ceUL, 0x48322bedUL, 0x433c22e0UL, 0x5e2e39f7UL, 0x552030faUL, +0x01ec9ab7UL, 0x0ae293baUL, 0x17f088adUL, 0x1cfe81a0UL, 0x2dd4be83UL, 0x26dab78eUL, 0x3bc8ac99UL, 0x30c6a594UL, +0x599cd2dfUL, 0x5292dbd2UL, 0x4f80c0c5UL, 0x448ec9c8UL, 0x75a4f6ebUL, 0x7eaaffe6UL, 0x63b8e4f1UL, 0x68b6edfcUL, +0xb10c0a67UL, 0xba02036aUL, 0xa710187dUL, 0xac1e1170UL, 0x9d342e53UL, 0x963a275eUL, 0x8b283c49UL, 0x80263544UL, +0xe97c420fUL, 0xe2724b02UL, 0xff605015UL, 0xf46e5918UL, 0xc544663bUL, 0xce4a6f36UL, 0xd3587421UL, 0xd8567d2cUL, +0x7a37a10cUL, 0x7139a801UL, 0x6c2bb316UL, 0x6725ba1bUL, 0x560f8538UL, 0x5d018c35UL, 0x40139722UL, 0x4b1d9e2fUL, +0x2247e964UL, 0x2949e069UL, 0x345bfb7eUL, 0x3f55f273UL, 0x0e7fcd50UL, 0x0571c45dUL, 0x1863df4aUL, 0x136dd647UL, +0xcad731dcUL, 0xc1d938d1UL, 0xdccb23c6UL, 0xd7c52acbUL, 0xe6ef15e8UL, 0xede11ce5UL, 0xf0f307f2UL, 0xfbfd0effUL, +0x92a779b4UL, 0x99a970b9UL, 0x84bb6baeUL, 0x8fb562a3UL, 0xbe9f5d80UL, 0xb591548dUL, 0xa8834f9aUL, 0xa38d4697UL +}; + +static const ulong32 Tks2[] = { +0x00000000UL, 0x0d0b0e09UL, 0x1a161c12UL, 0x171d121bUL, 0x342c3824UL, 0x3927362dUL, 0x2e3a2436UL, 0x23312a3fUL, +0x68587048UL, 0x65537e41UL, 0x724e6c5aUL, 0x7f456253UL, 0x5c74486cUL, 0x517f4665UL, 0x4662547eUL, 0x4b695a77UL, +0xd0b0e090UL, 0xddbbee99UL, 0xcaa6fc82UL, 0xc7adf28bUL, 0xe49cd8b4UL, 0xe997d6bdUL, 0xfe8ac4a6UL, 0xf381caafUL, +0xb8e890d8UL, 0xb5e39ed1UL, 0xa2fe8ccaUL, 0xaff582c3UL, 0x8cc4a8fcUL, 0x81cfa6f5UL, 0x96d2b4eeUL, 0x9bd9bae7UL, +0xbb7bdb3bUL, 0xb670d532UL, 0xa16dc729UL, 0xac66c920UL, 0x8f57e31fUL, 0x825ced16UL, 0x9541ff0dUL, 0x984af104UL, +0xd323ab73UL, 0xde28a57aUL, 0xc935b761UL, 0xc43eb968UL, 0xe70f9357UL, 0xea049d5eUL, 0xfd198f45UL, 0xf012814cUL, +0x6bcb3babUL, 0x66c035a2UL, 0x71dd27b9UL, 0x7cd629b0UL, 0x5fe7038fUL, 0x52ec0d86UL, 0x45f11f9dUL, 0x48fa1194UL, +0x03934be3UL, 0x0e9845eaUL, 0x198557f1UL, 0x148e59f8UL, 0x37bf73c7UL, 0x3ab47dceUL, 0x2da96fd5UL, 0x20a261dcUL, +0x6df6ad76UL, 0x60fda37fUL, 0x77e0b164UL, 0x7aebbf6dUL, 0x59da9552UL, 0x54d19b5bUL, 0x43cc8940UL, 0x4ec78749UL, +0x05aedd3eUL, 0x08a5d337UL, 0x1fb8c12cUL, 0x12b3cf25UL, 0x3182e51aUL, 0x3c89eb13UL, 0x2b94f908UL, 0x269ff701UL, +0xbd464de6UL, 0xb04d43efUL, 0xa75051f4UL, 0xaa5b5ffdUL, 0x896a75c2UL, 0x84617bcbUL, 0x937c69d0UL, 0x9e7767d9UL, +0xd51e3daeUL, 0xd81533a7UL, 0xcf0821bcUL, 0xc2032fb5UL, 0xe132058aUL, 0xec390b83UL, 0xfb241998UL, 0xf62f1791UL, +0xd68d764dUL, 0xdb867844UL, 0xcc9b6a5fUL, 0xc1906456UL, 0xe2a14e69UL, 0xefaa4060UL, 0xf8b7527bUL, 0xf5bc5c72UL, +0xbed50605UL, 0xb3de080cUL, 0xa4c31a17UL, 0xa9c8141eUL, 0x8af93e21UL, 0x87f23028UL, 0x90ef2233UL, 0x9de42c3aUL, +0x063d96ddUL, 0x0b3698d4UL, 0x1c2b8acfUL, 0x112084c6UL, 0x3211aef9UL, 0x3f1aa0f0UL, 0x2807b2ebUL, 0x250cbce2UL, +0x6e65e695UL, 0x636ee89cUL, 0x7473fa87UL, 0x7978f48eUL, 0x5a49deb1UL, 0x5742d0b8UL, 0x405fc2a3UL, 0x4d54ccaaUL, +0xdaf741ecUL, 0xd7fc4fe5UL, 0xc0e15dfeUL, 0xcdea53f7UL, 0xeedb79c8UL, 0xe3d077c1UL, 0xf4cd65daUL, 0xf9c66bd3UL, +0xb2af31a4UL, 0xbfa43fadUL, 0xa8b92db6UL, 0xa5b223bfUL, 0x86830980UL, 0x8b880789UL, 0x9c951592UL, 0x919e1b9bUL, +0x0a47a17cUL, 0x074caf75UL, 0x1051bd6eUL, 0x1d5ab367UL, 0x3e6b9958UL, 0x33609751UL, 0x247d854aUL, 0x29768b43UL, +0x621fd134UL, 0x6f14df3dUL, 0x7809cd26UL, 0x7502c32fUL, 0x5633e910UL, 0x5b38e719UL, 0x4c25f502UL, 0x412efb0bUL, +0x618c9ad7UL, 0x6c8794deUL, 0x7b9a86c5UL, 0x769188ccUL, 0x55a0a2f3UL, 0x58abacfaUL, 0x4fb6bee1UL, 0x42bdb0e8UL, +0x09d4ea9fUL, 0x04dfe496UL, 0x13c2f68dUL, 0x1ec9f884UL, 0x3df8d2bbUL, 0x30f3dcb2UL, 0x27eecea9UL, 0x2ae5c0a0UL, +0xb13c7a47UL, 0xbc37744eUL, 0xab2a6655UL, 0xa621685cUL, 0x85104263UL, 0x881b4c6aUL, 0x9f065e71UL, 0x920d5078UL, +0xd9640a0fUL, 0xd46f0406UL, 0xc372161dUL, 0xce791814UL, 0xed48322bUL, 0xe0433c22UL, 0xf75e2e39UL, 0xfa552030UL, +0xb701ec9aUL, 0xba0ae293UL, 0xad17f088UL, 0xa01cfe81UL, 0x832dd4beUL, 0x8e26dab7UL, 0x993bc8acUL, 0x9430c6a5UL, +0xdf599cd2UL, 0xd25292dbUL, 0xc54f80c0UL, 0xc8448ec9UL, 0xeb75a4f6UL, 0xe67eaaffUL, 0xf163b8e4UL, 0xfc68b6edUL, +0x67b10c0aUL, 0x6aba0203UL, 0x7da71018UL, 0x70ac1e11UL, 0x539d342eUL, 0x5e963a27UL, 0x498b283cUL, 0x44802635UL, +0x0fe97c42UL, 0x02e2724bUL, 0x15ff6050UL, 0x18f46e59UL, 0x3bc54466UL, 0x36ce4a6fUL, 0x21d35874UL, 0x2cd8567dUL, +0x0c7a37a1UL, 0x017139a8UL, 0x166c2bb3UL, 0x1b6725baUL, 0x38560f85UL, 0x355d018cUL, 0x22401397UL, 0x2f4b1d9eUL, +0x642247e9UL, 0x692949e0UL, 0x7e345bfbUL, 0x733f55f2UL, 0x500e7fcdUL, 0x5d0571c4UL, 0x4a1863dfUL, 0x47136dd6UL, +0xdccad731UL, 0xd1c1d938UL, 0xc6dccb23UL, 0xcbd7c52aUL, 0xe8e6ef15UL, 0xe5ede11cUL, 0xf2f0f307UL, 0xfffbfd0eUL, +0xb492a779UL, 0xb999a970UL, 0xae84bb6bUL, 0xa38fb562UL, 0x80be9f5dUL, 0x8db59154UL, 0x9aa8834fUL, 0x97a38d46UL +}; + +static const ulong32 Tks3[] = { +0x00000000UL, 0x090d0b0eUL, 0x121a161cUL, 0x1b171d12UL, 0x24342c38UL, 0x2d392736UL, 0x362e3a24UL, 0x3f23312aUL, +0x48685870UL, 0x4165537eUL, 0x5a724e6cUL, 0x537f4562UL, 0x6c5c7448UL, 0x65517f46UL, 0x7e466254UL, 0x774b695aUL, +0x90d0b0e0UL, 0x99ddbbeeUL, 0x82caa6fcUL, 0x8bc7adf2UL, 0xb4e49cd8UL, 0xbde997d6UL, 0xa6fe8ac4UL, 0xaff381caUL, +0xd8b8e890UL, 0xd1b5e39eUL, 0xcaa2fe8cUL, 0xc3aff582UL, 0xfc8cc4a8UL, 0xf581cfa6UL, 0xee96d2b4UL, 0xe79bd9baUL, +0x3bbb7bdbUL, 0x32b670d5UL, 0x29a16dc7UL, 0x20ac66c9UL, 0x1f8f57e3UL, 0x16825cedUL, 0x0d9541ffUL, 0x04984af1UL, +0x73d323abUL, 0x7ade28a5UL, 0x61c935b7UL, 0x68c43eb9UL, 0x57e70f93UL, 0x5eea049dUL, 0x45fd198fUL, 0x4cf01281UL, +0xab6bcb3bUL, 0xa266c035UL, 0xb971dd27UL, 0xb07cd629UL, 0x8f5fe703UL, 0x8652ec0dUL, 0x9d45f11fUL, 0x9448fa11UL, +0xe303934bUL, 0xea0e9845UL, 0xf1198557UL, 0xf8148e59UL, 0xc737bf73UL, 0xce3ab47dUL, 0xd52da96fUL, 0xdc20a261UL, +0x766df6adUL, 0x7f60fda3UL, 0x6477e0b1UL, 0x6d7aebbfUL, 0x5259da95UL, 0x5b54d19bUL, 0x4043cc89UL, 0x494ec787UL, +0x3e05aeddUL, 0x3708a5d3UL, 0x2c1fb8c1UL, 0x2512b3cfUL, 0x1a3182e5UL, 0x133c89ebUL, 0x082b94f9UL, 0x01269ff7UL, +0xe6bd464dUL, 0xefb04d43UL, 0xf4a75051UL, 0xfdaa5b5fUL, 0xc2896a75UL, 0xcb84617bUL, 0xd0937c69UL, 0xd99e7767UL, +0xaed51e3dUL, 0xa7d81533UL, 0xbccf0821UL, 0xb5c2032fUL, 0x8ae13205UL, 0x83ec390bUL, 0x98fb2419UL, 0x91f62f17UL, +0x4dd68d76UL, 0x44db8678UL, 0x5fcc9b6aUL, 0x56c19064UL, 0x69e2a14eUL, 0x60efaa40UL, 0x7bf8b752UL, 0x72f5bc5cUL, +0x05bed506UL, 0x0cb3de08UL, 0x17a4c31aUL, 0x1ea9c814UL, 0x218af93eUL, 0x2887f230UL, 0x3390ef22UL, 0x3a9de42cUL, +0xdd063d96UL, 0xd40b3698UL, 0xcf1c2b8aUL, 0xc6112084UL, 0xf93211aeUL, 0xf03f1aa0UL, 0xeb2807b2UL, 0xe2250cbcUL, +0x956e65e6UL, 0x9c636ee8UL, 0x877473faUL, 0x8e7978f4UL, 0xb15a49deUL, 0xb85742d0UL, 0xa3405fc2UL, 0xaa4d54ccUL, +0xecdaf741UL, 0xe5d7fc4fUL, 0xfec0e15dUL, 0xf7cdea53UL, 0xc8eedb79UL, 0xc1e3d077UL, 0xdaf4cd65UL, 0xd3f9c66bUL, +0xa4b2af31UL, 0xadbfa43fUL, 0xb6a8b92dUL, 0xbfa5b223UL, 0x80868309UL, 0x898b8807UL, 0x929c9515UL, 0x9b919e1bUL, +0x7c0a47a1UL, 0x75074cafUL, 0x6e1051bdUL, 0x671d5ab3UL, 0x583e6b99UL, 0x51336097UL, 0x4a247d85UL, 0x4329768bUL, +0x34621fd1UL, 0x3d6f14dfUL, 0x267809cdUL, 0x2f7502c3UL, 0x105633e9UL, 0x195b38e7UL, 0x024c25f5UL, 0x0b412efbUL, +0xd7618c9aUL, 0xde6c8794UL, 0xc57b9a86UL, 0xcc769188UL, 0xf355a0a2UL, 0xfa58abacUL, 0xe14fb6beUL, 0xe842bdb0UL, +0x9f09d4eaUL, 0x9604dfe4UL, 0x8d13c2f6UL, 0x841ec9f8UL, 0xbb3df8d2UL, 0xb230f3dcUL, 0xa927eeceUL, 0xa02ae5c0UL, +0x47b13c7aUL, 0x4ebc3774UL, 0x55ab2a66UL, 0x5ca62168UL, 0x63851042UL, 0x6a881b4cUL, 0x719f065eUL, 0x78920d50UL, +0x0fd9640aUL, 0x06d46f04UL, 0x1dc37216UL, 0x14ce7918UL, 0x2bed4832UL, 0x22e0433cUL, 0x39f75e2eUL, 0x30fa5520UL, +0x9ab701ecUL, 0x93ba0ae2UL, 0x88ad17f0UL, 0x81a01cfeUL, 0xbe832dd4UL, 0xb78e26daUL, 0xac993bc8UL, 0xa59430c6UL, +0xd2df599cUL, 0xdbd25292UL, 0xc0c54f80UL, 0xc9c8448eUL, 0xf6eb75a4UL, 0xffe67eaaUL, 0xe4f163b8UL, 0xedfc68b6UL, +0x0a67b10cUL, 0x036aba02UL, 0x187da710UL, 0x1170ac1eUL, 0x2e539d34UL, 0x275e963aUL, 0x3c498b28UL, 0x35448026UL, +0x420fe97cUL, 0x4b02e272UL, 0x5015ff60UL, 0x5918f46eUL, 0x663bc544UL, 0x6f36ce4aUL, 0x7421d358UL, 0x7d2cd856UL, +0xa10c7a37UL, 0xa8017139UL, 0xb3166c2bUL, 0xba1b6725UL, 0x8538560fUL, 0x8c355d01UL, 0x97224013UL, 0x9e2f4b1dUL, +0xe9642247UL, 0xe0692949UL, 0xfb7e345bUL, 0xf2733f55UL, 0xcd500e7fUL, 0xc45d0571UL, 0xdf4a1863UL, 0xd647136dUL, +0x31dccad7UL, 0x38d1c1d9UL, 0x23c6dccbUL, 0x2acbd7c5UL, 0x15e8e6efUL, 0x1ce5ede1UL, 0x07f2f0f3UL, 0x0efffbfdUL, +0x79b492a7UL, 0x70b999a9UL, 0x6bae84bbUL, 0x62a38fb5UL, 0x5d80be9fUL, 0x548db591UL, 0x4f9aa883UL, 0x4697a38dUL +}; + +#endif /* ENCRYPT_ONLY */ + +#endif /* SMALL CODE */ + +#ifndef PELI_TAB +static const ulong32 rcon[] = { + 0x01000000UL, 0x02000000UL, 0x04000000UL, 0x08000000UL, + 0x10000000UL, 0x20000000UL, 0x40000000UL, 0x80000000UL, + 0x1B000000UL, 0x36000000UL, /* for 128-bit blocks, Rijndael never uses more than 10 rcon values */ +}; +#endif + +#endif /* __LTC_AES_TAB_C__ */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/ciphers/anubis.c b/fsbl/lib/libtomcrypt/src/ciphers/anubis.c new file mode 100644 index 000000000..a28c7e1b3 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/ciphers/anubis.c @@ -0,0 +1,1558 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file anubis.c + Anubis implementation derived from public domain source + Authors: Paulo S.L.M. Barreto and Vincent Rijmen. +*/ + +#include "tomcrypt.h" + +#ifdef LTC_ANUBIS + +const struct ltc_cipher_descriptor anubis_desc = { + "anubis", + 19, + 16, 40, 16, 12, + &anubis_setup, + &anubis_ecb_encrypt, + &anubis_ecb_decrypt, + &anubis_test, + &anubis_done, + &anubis_keysize, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + +#define MIN_N 4 +#define MAX_N 10 +#define MIN_ROUNDS (8 + MIN_N) +#define MAX_ROUNDS (8 + MAX_N) +#define MIN_KEYSIZEB (4*MIN_N) +#define MAX_KEYSIZEB (4*MAX_N) +#define BLOCKSIZE 128 +#define BLOCKSIZEB (BLOCKSIZE/8) + + +/* + * Though Anubis is endianness-neutral, the encryption tables are listed + * in BIG-ENDIAN format, which is adopted throughout this implementation + * (but little-endian notation would be equally suitable if consistently + * employed). + */ +#if defined(LTC_ANUBIS_TWEAK) + +static const ulong32 T0[256] = { + 0xba69d2bbU, 0x54a84de5U, 0x2f5ebce2U, 0x74e8cd25U, + 0x53a651f7U, 0xd3bb6bd0U, 0xd2b96fd6U, 0x4d9a29b3U, + 0x50a05dfdU, 0xac458acfU, 0x8d070e09U, 0xbf63c6a5U, + 0x70e0dd3dU, 0x52a455f1U, 0x9a29527bU, 0x4c982db5U, + 0xeac98f46U, 0xd5b773c4U, 0x97336655U, 0xd1bf63dcU, + 0x3366ccaaU, 0x51a259fbU, 0x5bb671c7U, 0xa651a2f3U, + 0xdea15ffeU, 0x48903dadU, 0xa84d9ad7U, 0x992f5e71U, + 0xdbab4be0U, 0x3264c8acU, 0xb773e695U, 0xfce5d732U, + 0xe3dbab70U, 0x9e214263U, 0x913f7e41U, 0x9b2b567dU, + 0xe2d9af76U, 0xbb6bd6bdU, 0x4182199bU, 0x6edca579U, + 0xa557aef9U, 0xcb8b0b80U, 0x6bd6b167U, 0x95376e59U, + 0xa15fbee1U, 0xf3fbeb10U, 0xb17ffe81U, 0x0204080cU, + 0xcc851792U, 0xc49537a2U, 0x1d3a744eU, 0x14285078U, + 0xc39b2bb0U, 0x63c69157U, 0xdaa94fe6U, 0x5dba69d3U, + 0x5fbe61dfU, 0xdca557f2U, 0x7dfae913U, 0xcd871394U, + 0x7ffee11fU, 0x5ab475c1U, 0x6cd8ad75U, 0x5cb86dd5U, + 0xf7f3fb08U, 0x264c98d4U, 0xffe3db38U, 0xedc79354U, + 0xe8cd874aU, 0x9d274e69U, 0x6fdea17fU, 0x8e010203U, + 0x19326456U, 0xa05dbae7U, 0xf0fde71aU, 0x890f1e11U, + 0x0f1e3c22U, 0x070e1c12U, 0xaf4386c5U, 0xfbebcb20U, + 0x08102030U, 0x152a547eU, 0x0d1a342eU, 0x04081018U, + 0x01020406U, 0x64c88d45U, 0xdfa35bf8U, 0x76ecc529U, + 0x79f2f90bU, 0xdda753f4U, 0x3d7af48eU, 0x162c5874U, + 0x3f7efc82U, 0x376edcb2U, 0x6ddaa973U, 0x3870e090U, + 0xb96fdeb1U, 0x73e6d137U, 0xe9cf834cU, 0x356ad4beU, + 0x55aa49e3U, 0x71e2d93bU, 0x7bf6f107U, 0x8c050a0fU, + 0x72e4d531U, 0x880d1a17U, 0xf6f1ff0eU, 0x2a54a8fcU, + 0x3e7cf884U, 0x5ebc65d9U, 0x274e9cd2U, 0x468c0589U, + 0x0c183028U, 0x65ca8943U, 0x68d0bd6dU, 0x61c2995bU, + 0x03060c0aU, 0xc19f23bcU, 0x57ae41efU, 0xd6b17fceU, + 0xd9af43ecU, 0x58b07dcdU, 0xd8ad47eaU, 0x66cc8549U, + 0xd7b37bc8U, 0x3a74e89cU, 0xc88d078aU, 0x3c78f088U, + 0xfae9cf26U, 0x96316253U, 0xa753a6f5U, 0x982d5a77U, + 0xecc59752U, 0xb86ddab7U, 0xc7933ba8U, 0xae4182c3U, + 0x69d2b96bU, 0x4b9631a7U, 0xab4b96ddU, 0xa94f9ed1U, + 0x67ce814fU, 0x0a14283cU, 0x478e018fU, 0xf2f9ef16U, + 0xb577ee99U, 0x224488ccU, 0xe5d7b364U, 0xeec19f5eU, + 0xbe61c2a3U, 0x2b56acfaU, 0x811f3e21U, 0x1224486cU, + 0x831b362dU, 0x1b366c5aU, 0x0e1c3824U, 0x23468ccaU, + 0xf5f7f304U, 0x458a0983U, 0x214284c6U, 0xce811f9eU, + 0x499239abU, 0x2c58b0e8U, 0xf9efc32cU, 0xe6d1bf6eU, + 0xb671e293U, 0x2850a0f0U, 0x172e5c72U, 0x8219322bU, + 0x1a34685cU, 0x8b0b161dU, 0xfee1df3eU, 0x8a09121bU, + 0x09122436U, 0xc98f038cU, 0x87132635U, 0x4e9c25b9U, + 0xe1dfa37cU, 0x2e5cb8e4U, 0xe4d5b762U, 0xe0dda77aU, + 0xebcb8b40U, 0x903d7a47U, 0xa455aaffU, 0x1e3c7844U, + 0x85172e39U, 0x60c09d5dU, 0x00000000U, 0x254a94deU, + 0xf4f5f702U, 0xf1ffe31cU, 0x94356a5fU, 0x0b162c3aU, + 0xe7d3bb68U, 0x75eac923U, 0xefc39b58U, 0x3468d0b8U, + 0x3162c4a6U, 0xd4b577c2U, 0xd0bd67daU, 0x86112233U, + 0x7efce519U, 0xad478ec9U, 0xfde7d334U, 0x2952a4f6U, + 0x3060c0a0U, 0x3b76ec9aU, 0x9f234665U, 0xf8edc72aU, + 0xc6913faeU, 0x13264c6aU, 0x060c1814U, 0x050a141eU, + 0xc59733a4U, 0x11224466U, 0x77eec12fU, 0x7cf8ed15U, + 0x7af4f501U, 0x78f0fd0dU, 0x366cd8b4U, 0x1c387048U, + 0x3972e496U, 0x59b279cbU, 0x18306050U, 0x56ac45e9U, + 0xb37bf68dU, 0xb07dfa87U, 0x244890d8U, 0x204080c0U, + 0xb279f28bU, 0x9239724bU, 0xa35bb6edU, 0xc09d27baU, + 0x44880d85U, 0x62c49551U, 0x10204060U, 0xb475ea9fU, + 0x84152a3fU, 0x43861197U, 0x933b764dU, 0xc2992fb6U, + 0x4a9435a1U, 0xbd67cea9U, 0x8f030605U, 0x2d5ab4eeU, + 0xbc65caafU, 0x9c254a6fU, 0x6ad4b561U, 0x40801d9dU, + 0xcf831b98U, 0xa259b2ebU, 0x801d3a27U, 0x4f9e21bfU, + 0x1f3e7c42U, 0xca890f86U, 0xaa4992dbU, 0x42841591U, +}; + +static const ulong32 T1[256] = { + 0x69babbd2U, 0xa854e54dU, 0x5e2fe2bcU, 0xe87425cdU, + 0xa653f751U, 0xbbd3d06bU, 0xb9d2d66fU, 0x9a4db329U, + 0xa050fd5dU, 0x45accf8aU, 0x078d090eU, 0x63bfa5c6U, + 0xe0703dddU, 0xa452f155U, 0x299a7b52U, 0x984cb52dU, + 0xc9ea468fU, 0xb7d5c473U, 0x33975566U, 0xbfd1dc63U, + 0x6633aaccU, 0xa251fb59U, 0xb65bc771U, 0x51a6f3a2U, + 0xa1defe5fU, 0x9048ad3dU, 0x4da8d79aU, 0x2f99715eU, + 0xabdbe04bU, 0x6432acc8U, 0x73b795e6U, 0xe5fc32d7U, + 0xdbe370abU, 0x219e6342U, 0x3f91417eU, 0x2b9b7d56U, + 0xd9e276afU, 0x6bbbbdd6U, 0x82419b19U, 0xdc6e79a5U, + 0x57a5f9aeU, 0x8bcb800bU, 0xd66b67b1U, 0x3795596eU, + 0x5fa1e1beU, 0xfbf310ebU, 0x7fb181feU, 0x04020c08U, + 0x85cc9217U, 0x95c4a237U, 0x3a1d4e74U, 0x28147850U, + 0x9bc3b02bU, 0xc6635791U, 0xa9dae64fU, 0xba5dd369U, + 0xbe5fdf61U, 0xa5dcf257U, 0xfa7d13e9U, 0x87cd9413U, + 0xfe7f1fe1U, 0xb45ac175U, 0xd86c75adU, 0xb85cd56dU, + 0xf3f708fbU, 0x4c26d498U, 0xe3ff38dbU, 0xc7ed5493U, + 0xcde84a87U, 0x279d694eU, 0xde6f7fa1U, 0x018e0302U, + 0x32195664U, 0x5da0e7baU, 0xfdf01ae7U, 0x0f89111eU, + 0x1e0f223cU, 0x0e07121cU, 0x43afc586U, 0xebfb20cbU, + 0x10083020U, 0x2a157e54U, 0x1a0d2e34U, 0x08041810U, + 0x02010604U, 0xc864458dU, 0xa3dff85bU, 0xec7629c5U, + 0xf2790bf9U, 0xa7ddf453U, 0x7a3d8ef4U, 0x2c167458U, + 0x7e3f82fcU, 0x6e37b2dcU, 0xda6d73a9U, 0x703890e0U, + 0x6fb9b1deU, 0xe67337d1U, 0xcfe94c83U, 0x6a35bed4U, + 0xaa55e349U, 0xe2713bd9U, 0xf67b07f1U, 0x058c0f0aU, + 0xe47231d5U, 0x0d88171aU, 0xf1f60effU, 0x542afca8U, + 0x7c3e84f8U, 0xbc5ed965U, 0x4e27d29cU, 0x8c468905U, + 0x180c2830U, 0xca654389U, 0xd0686dbdU, 0xc2615b99U, + 0x06030a0cU, 0x9fc1bc23U, 0xae57ef41U, 0xb1d6ce7fU, + 0xafd9ec43U, 0xb058cd7dU, 0xadd8ea47U, 0xcc664985U, + 0xb3d7c87bU, 0x743a9ce8U, 0x8dc88a07U, 0x783c88f0U, + 0xe9fa26cfU, 0x31965362U, 0x53a7f5a6U, 0x2d98775aU, + 0xc5ec5297U, 0x6db8b7daU, 0x93c7a83bU, 0x41aec382U, + 0xd2696bb9U, 0x964ba731U, 0x4babdd96U, 0x4fa9d19eU, + 0xce674f81U, 0x140a3c28U, 0x8e478f01U, 0xf9f216efU, + 0x77b599eeU, 0x4422cc88U, 0xd7e564b3U, 0xc1ee5e9fU, + 0x61bea3c2U, 0x562bfaacU, 0x1f81213eU, 0x24126c48U, + 0x1b832d36U, 0x361b5a6cU, 0x1c0e2438U, 0x4623ca8cU, + 0xf7f504f3U, 0x8a458309U, 0x4221c684U, 0x81ce9e1fU, + 0x9249ab39U, 0x582ce8b0U, 0xeff92cc3U, 0xd1e66ebfU, + 0x71b693e2U, 0x5028f0a0U, 0x2e17725cU, 0x19822b32U, + 0x341a5c68U, 0x0b8b1d16U, 0xe1fe3edfU, 0x098a1b12U, + 0x12093624U, 0x8fc98c03U, 0x13873526U, 0x9c4eb925U, + 0xdfe17ca3U, 0x5c2ee4b8U, 0xd5e462b7U, 0xdde07aa7U, + 0xcbeb408bU, 0x3d90477aU, 0x55a4ffaaU, 0x3c1e4478U, + 0x1785392eU, 0xc0605d9dU, 0x00000000U, 0x4a25de94U, + 0xf5f402f7U, 0xfff11ce3U, 0x35945f6aU, 0x160b3a2cU, + 0xd3e768bbU, 0xea7523c9U, 0xc3ef589bU, 0x6834b8d0U, + 0x6231a6c4U, 0xb5d4c277U, 0xbdd0da67U, 0x11863322U, + 0xfc7e19e5U, 0x47adc98eU, 0xe7fd34d3U, 0x5229f6a4U, + 0x6030a0c0U, 0x763b9aecU, 0x239f6546U, 0xedf82ac7U, + 0x91c6ae3fU, 0x26136a4cU, 0x0c061418U, 0x0a051e14U, + 0x97c5a433U, 0x22116644U, 0xee772fc1U, 0xf87c15edU, + 0xf47a01f5U, 0xf0780dfdU, 0x6c36b4d8U, 0x381c4870U, + 0x723996e4U, 0xb259cb79U, 0x30185060U, 0xac56e945U, + 0x7bb38df6U, 0x7db087faU, 0x4824d890U, 0x4020c080U, + 0x79b28bf2U, 0x39924b72U, 0x5ba3edb6U, 0x9dc0ba27U, + 0x8844850dU, 0xc4625195U, 0x20106040U, 0x75b49feaU, + 0x15843f2aU, 0x86439711U, 0x3b934d76U, 0x99c2b62fU, + 0x944aa135U, 0x67bda9ceU, 0x038f0506U, 0x5a2deeb4U, + 0x65bcafcaU, 0x259c6f4aU, 0xd46a61b5U, 0x80409d1dU, + 0x83cf981bU, 0x59a2ebb2U, 0x1d80273aU, 0x9e4fbf21U, + 0x3e1f427cU, 0x89ca860fU, 0x49aadb92U, 0x84429115U, +}; + +static const ulong32 T2[256] = { + 0xd2bbba69U, 0x4de554a8U, 0xbce22f5eU, 0xcd2574e8U, + 0x51f753a6U, 0x6bd0d3bbU, 0x6fd6d2b9U, 0x29b34d9aU, + 0x5dfd50a0U, 0x8acfac45U, 0x0e098d07U, 0xc6a5bf63U, + 0xdd3d70e0U, 0x55f152a4U, 0x527b9a29U, 0x2db54c98U, + 0x8f46eac9U, 0x73c4d5b7U, 0x66559733U, 0x63dcd1bfU, + 0xccaa3366U, 0x59fb51a2U, 0x71c75bb6U, 0xa2f3a651U, + 0x5ffedea1U, 0x3dad4890U, 0x9ad7a84dU, 0x5e71992fU, + 0x4be0dbabU, 0xc8ac3264U, 0xe695b773U, 0xd732fce5U, + 0xab70e3dbU, 0x42639e21U, 0x7e41913fU, 0x567d9b2bU, + 0xaf76e2d9U, 0xd6bdbb6bU, 0x199b4182U, 0xa5796edcU, + 0xaef9a557U, 0x0b80cb8bU, 0xb1676bd6U, 0x6e599537U, + 0xbee1a15fU, 0xeb10f3fbU, 0xfe81b17fU, 0x080c0204U, + 0x1792cc85U, 0x37a2c495U, 0x744e1d3aU, 0x50781428U, + 0x2bb0c39bU, 0x915763c6U, 0x4fe6daa9U, 0x69d35dbaU, + 0x61df5fbeU, 0x57f2dca5U, 0xe9137dfaU, 0x1394cd87U, + 0xe11f7ffeU, 0x75c15ab4U, 0xad756cd8U, 0x6dd55cb8U, + 0xfb08f7f3U, 0x98d4264cU, 0xdb38ffe3U, 0x9354edc7U, + 0x874ae8cdU, 0x4e699d27U, 0xa17f6fdeU, 0x02038e01U, + 0x64561932U, 0xbae7a05dU, 0xe71af0fdU, 0x1e11890fU, + 0x3c220f1eU, 0x1c12070eU, 0x86c5af43U, 0xcb20fbebU, + 0x20300810U, 0x547e152aU, 0x342e0d1aU, 0x10180408U, + 0x04060102U, 0x8d4564c8U, 0x5bf8dfa3U, 0xc52976ecU, + 0xf90b79f2U, 0x53f4dda7U, 0xf48e3d7aU, 0x5874162cU, + 0xfc823f7eU, 0xdcb2376eU, 0xa9736ddaU, 0xe0903870U, + 0xdeb1b96fU, 0xd13773e6U, 0x834ce9cfU, 0xd4be356aU, + 0x49e355aaU, 0xd93b71e2U, 0xf1077bf6U, 0x0a0f8c05U, + 0xd53172e4U, 0x1a17880dU, 0xff0ef6f1U, 0xa8fc2a54U, + 0xf8843e7cU, 0x65d95ebcU, 0x9cd2274eU, 0x0589468cU, + 0x30280c18U, 0x894365caU, 0xbd6d68d0U, 0x995b61c2U, + 0x0c0a0306U, 0x23bcc19fU, 0x41ef57aeU, 0x7fced6b1U, + 0x43ecd9afU, 0x7dcd58b0U, 0x47ead8adU, 0x854966ccU, + 0x7bc8d7b3U, 0xe89c3a74U, 0x078ac88dU, 0xf0883c78U, + 0xcf26fae9U, 0x62539631U, 0xa6f5a753U, 0x5a77982dU, + 0x9752ecc5U, 0xdab7b86dU, 0x3ba8c793U, 0x82c3ae41U, + 0xb96b69d2U, 0x31a74b96U, 0x96ddab4bU, 0x9ed1a94fU, + 0x814f67ceU, 0x283c0a14U, 0x018f478eU, 0xef16f2f9U, + 0xee99b577U, 0x88cc2244U, 0xb364e5d7U, 0x9f5eeec1U, + 0xc2a3be61U, 0xacfa2b56U, 0x3e21811fU, 0x486c1224U, + 0x362d831bU, 0x6c5a1b36U, 0x38240e1cU, 0x8cca2346U, + 0xf304f5f7U, 0x0983458aU, 0x84c62142U, 0x1f9ece81U, + 0x39ab4992U, 0xb0e82c58U, 0xc32cf9efU, 0xbf6ee6d1U, + 0xe293b671U, 0xa0f02850U, 0x5c72172eU, 0x322b8219U, + 0x685c1a34U, 0x161d8b0bU, 0xdf3efee1U, 0x121b8a09U, + 0x24360912U, 0x038cc98fU, 0x26358713U, 0x25b94e9cU, + 0xa37ce1dfU, 0xb8e42e5cU, 0xb762e4d5U, 0xa77ae0ddU, + 0x8b40ebcbU, 0x7a47903dU, 0xaaffa455U, 0x78441e3cU, + 0x2e398517U, 0x9d5d60c0U, 0x00000000U, 0x94de254aU, + 0xf702f4f5U, 0xe31cf1ffU, 0x6a5f9435U, 0x2c3a0b16U, + 0xbb68e7d3U, 0xc92375eaU, 0x9b58efc3U, 0xd0b83468U, + 0xc4a63162U, 0x77c2d4b5U, 0x67dad0bdU, 0x22338611U, + 0xe5197efcU, 0x8ec9ad47U, 0xd334fde7U, 0xa4f62952U, + 0xc0a03060U, 0xec9a3b76U, 0x46659f23U, 0xc72af8edU, + 0x3faec691U, 0x4c6a1326U, 0x1814060cU, 0x141e050aU, + 0x33a4c597U, 0x44661122U, 0xc12f77eeU, 0xed157cf8U, + 0xf5017af4U, 0xfd0d78f0U, 0xd8b4366cU, 0x70481c38U, + 0xe4963972U, 0x79cb59b2U, 0x60501830U, 0x45e956acU, + 0xf68db37bU, 0xfa87b07dU, 0x90d82448U, 0x80c02040U, + 0xf28bb279U, 0x724b9239U, 0xb6eda35bU, 0x27bac09dU, + 0x0d854488U, 0x955162c4U, 0x40601020U, 0xea9fb475U, + 0x2a3f8415U, 0x11974386U, 0x764d933bU, 0x2fb6c299U, + 0x35a14a94U, 0xcea9bd67U, 0x06058f03U, 0xb4ee2d5aU, + 0xcaafbc65U, 0x4a6f9c25U, 0xb5616ad4U, 0x1d9d4080U, + 0x1b98cf83U, 0xb2eba259U, 0x3a27801dU, 0x21bf4f9eU, + 0x7c421f3eU, 0x0f86ca89U, 0x92dbaa49U, 0x15914284U, +}; + +static const ulong32 T3[256] = { + 0xbbd269baU, 0xe54da854U, 0xe2bc5e2fU, 0x25cde874U, + 0xf751a653U, 0xd06bbbd3U, 0xd66fb9d2U, 0xb3299a4dU, + 0xfd5da050U, 0xcf8a45acU, 0x090e078dU, 0xa5c663bfU, + 0x3ddde070U, 0xf155a452U, 0x7b52299aU, 0xb52d984cU, + 0x468fc9eaU, 0xc473b7d5U, 0x55663397U, 0xdc63bfd1U, + 0xaacc6633U, 0xfb59a251U, 0xc771b65bU, 0xf3a251a6U, + 0xfe5fa1deU, 0xad3d9048U, 0xd79a4da8U, 0x715e2f99U, + 0xe04babdbU, 0xacc86432U, 0x95e673b7U, 0x32d7e5fcU, + 0x70abdbe3U, 0x6342219eU, 0x417e3f91U, 0x7d562b9bU, + 0x76afd9e2U, 0xbdd66bbbU, 0x9b198241U, 0x79a5dc6eU, + 0xf9ae57a5U, 0x800b8bcbU, 0x67b1d66bU, 0x596e3795U, + 0xe1be5fa1U, 0x10ebfbf3U, 0x81fe7fb1U, 0x0c080402U, + 0x921785ccU, 0xa23795c4U, 0x4e743a1dU, 0x78502814U, + 0xb02b9bc3U, 0x5791c663U, 0xe64fa9daU, 0xd369ba5dU, + 0xdf61be5fU, 0xf257a5dcU, 0x13e9fa7dU, 0x941387cdU, + 0x1fe1fe7fU, 0xc175b45aU, 0x75add86cU, 0xd56db85cU, + 0x08fbf3f7U, 0xd4984c26U, 0x38dbe3ffU, 0x5493c7edU, + 0x4a87cde8U, 0x694e279dU, 0x7fa1de6fU, 0x0302018eU, + 0x56643219U, 0xe7ba5da0U, 0x1ae7fdf0U, 0x111e0f89U, + 0x223c1e0fU, 0x121c0e07U, 0xc58643afU, 0x20cbebfbU, + 0x30201008U, 0x7e542a15U, 0x2e341a0dU, 0x18100804U, + 0x06040201U, 0x458dc864U, 0xf85ba3dfU, 0x29c5ec76U, + 0x0bf9f279U, 0xf453a7ddU, 0x8ef47a3dU, 0x74582c16U, + 0x82fc7e3fU, 0xb2dc6e37U, 0x73a9da6dU, 0x90e07038U, + 0xb1de6fb9U, 0x37d1e673U, 0x4c83cfe9U, 0xbed46a35U, + 0xe349aa55U, 0x3bd9e271U, 0x07f1f67bU, 0x0f0a058cU, + 0x31d5e472U, 0x171a0d88U, 0x0efff1f6U, 0xfca8542aU, + 0x84f87c3eU, 0xd965bc5eU, 0xd29c4e27U, 0x89058c46U, + 0x2830180cU, 0x4389ca65U, 0x6dbdd068U, 0x5b99c261U, + 0x0a0c0603U, 0xbc239fc1U, 0xef41ae57U, 0xce7fb1d6U, + 0xec43afd9U, 0xcd7db058U, 0xea47add8U, 0x4985cc66U, + 0xc87bb3d7U, 0x9ce8743aU, 0x8a078dc8U, 0x88f0783cU, + 0x26cfe9faU, 0x53623196U, 0xf5a653a7U, 0x775a2d98U, + 0x5297c5ecU, 0xb7da6db8U, 0xa83b93c7U, 0xc38241aeU, + 0x6bb9d269U, 0xa731964bU, 0xdd964babU, 0xd19e4fa9U, + 0x4f81ce67U, 0x3c28140aU, 0x8f018e47U, 0x16eff9f2U, + 0x99ee77b5U, 0xcc884422U, 0x64b3d7e5U, 0x5e9fc1eeU, + 0xa3c261beU, 0xfaac562bU, 0x213e1f81U, 0x6c482412U, + 0x2d361b83U, 0x5a6c361bU, 0x24381c0eU, 0xca8c4623U, + 0x04f3f7f5U, 0x83098a45U, 0xc6844221U, 0x9e1f81ceU, + 0xab399249U, 0xe8b0582cU, 0x2cc3eff9U, 0x6ebfd1e6U, + 0x93e271b6U, 0xf0a05028U, 0x725c2e17U, 0x2b321982U, + 0x5c68341aU, 0x1d160b8bU, 0x3edfe1feU, 0x1b12098aU, + 0x36241209U, 0x8c038fc9U, 0x35261387U, 0xb9259c4eU, + 0x7ca3dfe1U, 0xe4b85c2eU, 0x62b7d5e4U, 0x7aa7dde0U, + 0x408bcbebU, 0x477a3d90U, 0xffaa55a4U, 0x44783c1eU, + 0x392e1785U, 0x5d9dc060U, 0x00000000U, 0xde944a25U, + 0x02f7f5f4U, 0x1ce3fff1U, 0x5f6a3594U, 0x3a2c160bU, + 0x68bbd3e7U, 0x23c9ea75U, 0x589bc3efU, 0xb8d06834U, + 0xa6c46231U, 0xc277b5d4U, 0xda67bdd0U, 0x33221186U, + 0x19e5fc7eU, 0xc98e47adU, 0x34d3e7fdU, 0xf6a45229U, + 0xa0c06030U, 0x9aec763bU, 0x6546239fU, 0x2ac7edf8U, + 0xae3f91c6U, 0x6a4c2613U, 0x14180c06U, 0x1e140a05U, + 0xa43397c5U, 0x66442211U, 0x2fc1ee77U, 0x15edf87cU, + 0x01f5f47aU, 0x0dfdf078U, 0xb4d86c36U, 0x4870381cU, + 0x96e47239U, 0xcb79b259U, 0x50603018U, 0xe945ac56U, + 0x8df67bb3U, 0x87fa7db0U, 0xd8904824U, 0xc0804020U, + 0x8bf279b2U, 0x4b723992U, 0xedb65ba3U, 0xba279dc0U, + 0x850d8844U, 0x5195c462U, 0x60402010U, 0x9fea75b4U, + 0x3f2a1584U, 0x97118643U, 0x4d763b93U, 0xb62f99c2U, + 0xa135944aU, 0xa9ce67bdU, 0x0506038fU, 0xeeb45a2dU, + 0xafca65bcU, 0x6f4a259cU, 0x61b5d46aU, 0x9d1d8040U, + 0x981b83cfU, 0xebb259a2U, 0x273a1d80U, 0xbf219e4fU, + 0x427c3e1fU, 0x860f89caU, 0xdb9249aaU, 0x91158442U, +}; + +static const ulong32 T4[256] = { + 0xbabababaU, 0x54545454U, 0x2f2f2f2fU, 0x74747474U, + 0x53535353U, 0xd3d3d3d3U, 0xd2d2d2d2U, 0x4d4d4d4dU, + 0x50505050U, 0xacacacacU, 0x8d8d8d8dU, 0xbfbfbfbfU, + 0x70707070U, 0x52525252U, 0x9a9a9a9aU, 0x4c4c4c4cU, + 0xeaeaeaeaU, 0xd5d5d5d5U, 0x97979797U, 0xd1d1d1d1U, + 0x33333333U, 0x51515151U, 0x5b5b5b5bU, 0xa6a6a6a6U, + 0xdedededeU, 0x48484848U, 0xa8a8a8a8U, 0x99999999U, + 0xdbdbdbdbU, 0x32323232U, 0xb7b7b7b7U, 0xfcfcfcfcU, + 0xe3e3e3e3U, 0x9e9e9e9eU, 0x91919191U, 0x9b9b9b9bU, + 0xe2e2e2e2U, 0xbbbbbbbbU, 0x41414141U, 0x6e6e6e6eU, + 0xa5a5a5a5U, 0xcbcbcbcbU, 0x6b6b6b6bU, 0x95959595U, + 0xa1a1a1a1U, 0xf3f3f3f3U, 0xb1b1b1b1U, 0x02020202U, + 0xccccccccU, 0xc4c4c4c4U, 0x1d1d1d1dU, 0x14141414U, + 0xc3c3c3c3U, 0x63636363U, 0xdadadadaU, 0x5d5d5d5dU, + 0x5f5f5f5fU, 0xdcdcdcdcU, 0x7d7d7d7dU, 0xcdcdcdcdU, + 0x7f7f7f7fU, 0x5a5a5a5aU, 0x6c6c6c6cU, 0x5c5c5c5cU, + 0xf7f7f7f7U, 0x26262626U, 0xffffffffU, 0xededededU, + 0xe8e8e8e8U, 0x9d9d9d9dU, 0x6f6f6f6fU, 0x8e8e8e8eU, + 0x19191919U, 0xa0a0a0a0U, 0xf0f0f0f0U, 0x89898989U, + 0x0f0f0f0fU, 0x07070707U, 0xafafafafU, 0xfbfbfbfbU, + 0x08080808U, 0x15151515U, 0x0d0d0d0dU, 0x04040404U, + 0x01010101U, 0x64646464U, 0xdfdfdfdfU, 0x76767676U, + 0x79797979U, 0xddddddddU, 0x3d3d3d3dU, 0x16161616U, + 0x3f3f3f3fU, 0x37373737U, 0x6d6d6d6dU, 0x38383838U, + 0xb9b9b9b9U, 0x73737373U, 0xe9e9e9e9U, 0x35353535U, + 0x55555555U, 0x71717171U, 0x7b7b7b7bU, 0x8c8c8c8cU, + 0x72727272U, 0x88888888U, 0xf6f6f6f6U, 0x2a2a2a2aU, + 0x3e3e3e3eU, 0x5e5e5e5eU, 0x27272727U, 0x46464646U, + 0x0c0c0c0cU, 0x65656565U, 0x68686868U, 0x61616161U, + 0x03030303U, 0xc1c1c1c1U, 0x57575757U, 0xd6d6d6d6U, + 0xd9d9d9d9U, 0x58585858U, 0xd8d8d8d8U, 0x66666666U, + 0xd7d7d7d7U, 0x3a3a3a3aU, 0xc8c8c8c8U, 0x3c3c3c3cU, + 0xfafafafaU, 0x96969696U, 0xa7a7a7a7U, 0x98989898U, + 0xececececU, 0xb8b8b8b8U, 0xc7c7c7c7U, 0xaeaeaeaeU, + 0x69696969U, 0x4b4b4b4bU, 0xababababU, 0xa9a9a9a9U, + 0x67676767U, 0x0a0a0a0aU, 0x47474747U, 0xf2f2f2f2U, + 0xb5b5b5b5U, 0x22222222U, 0xe5e5e5e5U, 0xeeeeeeeeU, + 0xbebebebeU, 0x2b2b2b2bU, 0x81818181U, 0x12121212U, + 0x83838383U, 0x1b1b1b1bU, 0x0e0e0e0eU, 0x23232323U, + 0xf5f5f5f5U, 0x45454545U, 0x21212121U, 0xcecececeU, + 0x49494949U, 0x2c2c2c2cU, 0xf9f9f9f9U, 0xe6e6e6e6U, + 0xb6b6b6b6U, 0x28282828U, 0x17171717U, 0x82828282U, + 0x1a1a1a1aU, 0x8b8b8b8bU, 0xfefefefeU, 0x8a8a8a8aU, + 0x09090909U, 0xc9c9c9c9U, 0x87878787U, 0x4e4e4e4eU, + 0xe1e1e1e1U, 0x2e2e2e2eU, 0xe4e4e4e4U, 0xe0e0e0e0U, + 0xebebebebU, 0x90909090U, 0xa4a4a4a4U, 0x1e1e1e1eU, + 0x85858585U, 0x60606060U, 0x00000000U, 0x25252525U, + 0xf4f4f4f4U, 0xf1f1f1f1U, 0x94949494U, 0x0b0b0b0bU, + 0xe7e7e7e7U, 0x75757575U, 0xefefefefU, 0x34343434U, + 0x31313131U, 0xd4d4d4d4U, 0xd0d0d0d0U, 0x86868686U, + 0x7e7e7e7eU, 0xadadadadU, 0xfdfdfdfdU, 0x29292929U, + 0x30303030U, 0x3b3b3b3bU, 0x9f9f9f9fU, 0xf8f8f8f8U, + 0xc6c6c6c6U, 0x13131313U, 0x06060606U, 0x05050505U, + 0xc5c5c5c5U, 0x11111111U, 0x77777777U, 0x7c7c7c7cU, + 0x7a7a7a7aU, 0x78787878U, 0x36363636U, 0x1c1c1c1cU, + 0x39393939U, 0x59595959U, 0x18181818U, 0x56565656U, + 0xb3b3b3b3U, 0xb0b0b0b0U, 0x24242424U, 0x20202020U, + 0xb2b2b2b2U, 0x92929292U, 0xa3a3a3a3U, 0xc0c0c0c0U, + 0x44444444U, 0x62626262U, 0x10101010U, 0xb4b4b4b4U, + 0x84848484U, 0x43434343U, 0x93939393U, 0xc2c2c2c2U, + 0x4a4a4a4aU, 0xbdbdbdbdU, 0x8f8f8f8fU, 0x2d2d2d2dU, + 0xbcbcbcbcU, 0x9c9c9c9cU, 0x6a6a6a6aU, 0x40404040U, + 0xcfcfcfcfU, 0xa2a2a2a2U, 0x80808080U, 0x4f4f4f4fU, + 0x1f1f1f1fU, 0xcacacacaU, 0xaaaaaaaaU, 0x42424242U, +}; + +static const ulong32 T5[256] = { + 0x00000000U, 0x01020608U, 0x02040c10U, 0x03060a18U, + 0x04081820U, 0x050a1e28U, 0x060c1430U, 0x070e1238U, + 0x08103040U, 0x09123648U, 0x0a143c50U, 0x0b163a58U, + 0x0c182860U, 0x0d1a2e68U, 0x0e1c2470U, 0x0f1e2278U, + 0x10206080U, 0x11226688U, 0x12246c90U, 0x13266a98U, + 0x142878a0U, 0x152a7ea8U, 0x162c74b0U, 0x172e72b8U, + 0x183050c0U, 0x193256c8U, 0x1a345cd0U, 0x1b365ad8U, + 0x1c3848e0U, 0x1d3a4ee8U, 0x1e3c44f0U, 0x1f3e42f8U, + 0x2040c01dU, 0x2142c615U, 0x2244cc0dU, 0x2346ca05U, + 0x2448d83dU, 0x254ade35U, 0x264cd42dU, 0x274ed225U, + 0x2850f05dU, 0x2952f655U, 0x2a54fc4dU, 0x2b56fa45U, + 0x2c58e87dU, 0x2d5aee75U, 0x2e5ce46dU, 0x2f5ee265U, + 0x3060a09dU, 0x3162a695U, 0x3264ac8dU, 0x3366aa85U, + 0x3468b8bdU, 0x356abeb5U, 0x366cb4adU, 0x376eb2a5U, + 0x387090ddU, 0x397296d5U, 0x3a749ccdU, 0x3b769ac5U, + 0x3c7888fdU, 0x3d7a8ef5U, 0x3e7c84edU, 0x3f7e82e5U, + 0x40809d3aU, 0x41829b32U, 0x4284912aU, 0x43869722U, + 0x4488851aU, 0x458a8312U, 0x468c890aU, 0x478e8f02U, + 0x4890ad7aU, 0x4992ab72U, 0x4a94a16aU, 0x4b96a762U, + 0x4c98b55aU, 0x4d9ab352U, 0x4e9cb94aU, 0x4f9ebf42U, + 0x50a0fdbaU, 0x51a2fbb2U, 0x52a4f1aaU, 0x53a6f7a2U, + 0x54a8e59aU, 0x55aae392U, 0x56ace98aU, 0x57aeef82U, + 0x58b0cdfaU, 0x59b2cbf2U, 0x5ab4c1eaU, 0x5bb6c7e2U, + 0x5cb8d5daU, 0x5dbad3d2U, 0x5ebcd9caU, 0x5fbedfc2U, + 0x60c05d27U, 0x61c25b2fU, 0x62c45137U, 0x63c6573fU, + 0x64c84507U, 0x65ca430fU, 0x66cc4917U, 0x67ce4f1fU, + 0x68d06d67U, 0x69d26b6fU, 0x6ad46177U, 0x6bd6677fU, + 0x6cd87547U, 0x6dda734fU, 0x6edc7957U, 0x6fde7f5fU, + 0x70e03da7U, 0x71e23bafU, 0x72e431b7U, 0x73e637bfU, + 0x74e82587U, 0x75ea238fU, 0x76ec2997U, 0x77ee2f9fU, + 0x78f00de7U, 0x79f20befU, 0x7af401f7U, 0x7bf607ffU, + 0x7cf815c7U, 0x7dfa13cfU, 0x7efc19d7U, 0x7ffe1fdfU, + 0x801d2774U, 0x811f217cU, 0x82192b64U, 0x831b2d6cU, + 0x84153f54U, 0x8517395cU, 0x86113344U, 0x8713354cU, + 0x880d1734U, 0x890f113cU, 0x8a091b24U, 0x8b0b1d2cU, + 0x8c050f14U, 0x8d07091cU, 0x8e010304U, 0x8f03050cU, + 0x903d47f4U, 0x913f41fcU, 0x92394be4U, 0x933b4decU, + 0x94355fd4U, 0x953759dcU, 0x963153c4U, 0x973355ccU, + 0x982d77b4U, 0x992f71bcU, 0x9a297ba4U, 0x9b2b7dacU, + 0x9c256f94U, 0x9d27699cU, 0x9e216384U, 0x9f23658cU, + 0xa05de769U, 0xa15fe161U, 0xa259eb79U, 0xa35bed71U, + 0xa455ff49U, 0xa557f941U, 0xa651f359U, 0xa753f551U, + 0xa84dd729U, 0xa94fd121U, 0xaa49db39U, 0xab4bdd31U, + 0xac45cf09U, 0xad47c901U, 0xae41c319U, 0xaf43c511U, + 0xb07d87e9U, 0xb17f81e1U, 0xb2798bf9U, 0xb37b8df1U, + 0xb4759fc9U, 0xb57799c1U, 0xb67193d9U, 0xb77395d1U, + 0xb86db7a9U, 0xb96fb1a1U, 0xba69bbb9U, 0xbb6bbdb1U, + 0xbc65af89U, 0xbd67a981U, 0xbe61a399U, 0xbf63a591U, + 0xc09dba4eU, 0xc19fbc46U, 0xc299b65eU, 0xc39bb056U, + 0xc495a26eU, 0xc597a466U, 0xc691ae7eU, 0xc793a876U, + 0xc88d8a0eU, 0xc98f8c06U, 0xca89861eU, 0xcb8b8016U, + 0xcc85922eU, 0xcd879426U, 0xce819e3eU, 0xcf839836U, + 0xd0bddaceU, 0xd1bfdcc6U, 0xd2b9d6deU, 0xd3bbd0d6U, + 0xd4b5c2eeU, 0xd5b7c4e6U, 0xd6b1cefeU, 0xd7b3c8f6U, + 0xd8adea8eU, 0xd9afec86U, 0xdaa9e69eU, 0xdbabe096U, + 0xdca5f2aeU, 0xdda7f4a6U, 0xdea1febeU, 0xdfa3f8b6U, + 0xe0dd7a53U, 0xe1df7c5bU, 0xe2d97643U, 0xe3db704bU, + 0xe4d56273U, 0xe5d7647bU, 0xe6d16e63U, 0xe7d3686bU, + 0xe8cd4a13U, 0xe9cf4c1bU, 0xeac94603U, 0xebcb400bU, + 0xecc55233U, 0xedc7543bU, 0xeec15e23U, 0xefc3582bU, + 0xf0fd1ad3U, 0xf1ff1cdbU, 0xf2f916c3U, 0xf3fb10cbU, + 0xf4f502f3U, 0xf5f704fbU, 0xf6f10ee3U, 0xf7f308ebU, + 0xf8ed2a93U, 0xf9ef2c9bU, 0xfae92683U, 0xfbeb208bU, + 0xfce532b3U, 0xfde734bbU, 0xfee13ea3U, 0xffe338abU, +}; + +/** + * The round constants. + */ +static const ulong32 rc[] = { + 0xba542f74U, 0x53d3d24dU, 0x50ac8dbfU, 0x70529a4cU, + 0xead597d1U, 0x33515ba6U, 0xde48a899U, 0xdb32b7fcU, + 0xe39e919bU, 0xe2bb416eU, 0xa5cb6b95U, 0xa1f3b102U, + 0xccc41d14U, 0xc363da5dU, 0x5fdc7dcdU, 0x7f5a6c5cU, + 0xf726ffedU, 0xe89d6f8eU, 0x19a0f089U, +}; + + + +#else + + +static const ulong32 T0[256] = { + 0xa753a6f5U, 0xd3bb6bd0U, 0xe6d1bf6eU, 0x71e2d93bU, + 0xd0bd67daU, 0xac458acfU, 0x4d9a29b3U, 0x79f2f90bU, + 0x3a74e89cU, 0xc98f038cU, 0x913f7e41U, 0xfce5d732U, + 0x1e3c7844U, 0x478e018fU, 0x54a84de5U, 0xbd67cea9U, + 0x8c050a0fU, 0xa557aef9U, 0x7af4f501U, 0xfbebcb20U, + 0x63c69157U, 0xb86ddab7U, 0xdda753f4U, 0xd4b577c2U, + 0xe5d7b364U, 0xb37bf68dU, 0xc59733a4U, 0xbe61c2a3U, + 0xa94f9ed1U, 0x880d1a17U, 0x0c183028U, 0xa259b2ebU, + 0x3972e496U, 0xdfa35bf8U, 0x2952a4f6U, 0xdaa94fe6U, + 0x2b56acfaU, 0xa84d9ad7U, 0xcb8b0b80U, 0x4c982db5U, + 0x4b9631a7U, 0x224488ccU, 0xaa4992dbU, 0x244890d8U, + 0x4182199bU, 0x70e0dd3dU, 0xa651a2f3U, 0xf9efc32cU, + 0x5ab475c1U, 0xe2d9af76U, 0xb07dfa87U, 0x366cd8b4U, + 0x7dfae913U, 0xe4d5b762U, 0x3366ccaaU, 0xffe3db38U, + 0x60c09d5dU, 0x204080c0U, 0x08102030U, 0x8b0b161dU, + 0x5ebc65d9U, 0xab4b96ddU, 0x7ffee11fU, 0x78f0fd0dU, + 0x7cf8ed15U, 0x2c58b0e8U, 0x57ae41efU, 0xd2b96fd6U, + 0xdca557f2U, 0x6ddaa973U, 0x7efce519U, 0x0d1a342eU, + 0x53a651f7U, 0x94356a5fU, 0xc39b2bb0U, 0x2850a0f0U, + 0x274e9cd2U, 0x060c1814U, 0x5fbe61dfU, 0xad478ec9U, + 0x67ce814fU, 0x5cb86dd5U, 0x55aa49e3U, 0x48903dadU, + 0x0e1c3824U, 0x52a455f1U, 0xeac98f46U, 0x42841591U, + 0x5bb671c7U, 0x5dba69d3U, 0x3060c0a0U, 0x58b07dcdU, + 0x51a259fbU, 0x59b279cbU, 0x3c78f088U, 0x4e9c25b9U, + 0x3870e090U, 0x8a09121bU, 0x72e4d531U, 0x14285078U, + 0xe7d3bb68U, 0xc6913faeU, 0xdea15ffeU, 0x50a05dfdU, + 0x8e010203U, 0x9239724bU, 0xd1bf63dcU, 0x77eec12fU, + 0x933b764dU, 0x458a0983U, 0x9a29527bU, 0xce811f9eU, + 0x2d5ab4eeU, 0x03060c0aU, 0x62c49551U, 0xb671e293U, + 0xb96fdeb1U, 0xbf63c6a5U, 0x96316253U, 0x6bd6b167U, + 0x3f7efc82U, 0x070e1c12U, 0x1224486cU, 0xae4182c3U, + 0x40801d9dU, 0x3468d0b8U, 0x468c0589U, 0x3e7cf884U, + 0xdbab4be0U, 0xcf831b98U, 0xecc59752U, 0xcc851792U, + 0xc19f23bcU, 0xa15fbee1U, 0xc09d27baU, 0xd6b17fceU, + 0x1d3a744eU, 0xf4f5f702U, 0x61c2995bU, 0x3b76ec9aU, + 0x10204060U, 0xd8ad47eaU, 0x68d0bd6dU, 0xa05dbae7U, + 0xb17ffe81U, 0x0a14283cU, 0x69d2b96bU, 0x6cd8ad75U, + 0x499239abU, 0xfae9cf26U, 0x76ecc529U, 0xc49537a2U, + 0x9e214263U, 0x9b2b567dU, 0x6edca579U, 0x992f5e71U, + 0xc2992fb6U, 0xb773e695U, 0x982d5a77U, 0xbc65caafU, + 0x8f030605U, 0x85172e39U, 0x1f3e7c42U, 0xb475ea9fU, + 0xf8edc72aU, 0x11224466U, 0x2e5cb8e4U, 0x00000000U, + 0x254a94deU, 0x1c387048U, 0x2a54a8fcU, 0x3d7af48eU, + 0x050a141eU, 0x4f9e21bfU, 0x7bf6f107U, 0xb279f28bU, + 0x3264c8acU, 0x903d7a47U, 0xaf4386c5U, 0x19326456U, + 0xa35bb6edU, 0xf7f3fb08U, 0x73e6d137U, 0x9d274e69U, + 0x152a547eU, 0x74e8cd25U, 0xeec19f5eU, 0xca890f86U, + 0x9f234665U, 0x0f1e3c22U, 0x1b366c5aU, 0x75eac923U, + 0x86112233U, 0x84152a3fU, 0x9c254a6fU, 0x4a9435a1U, + 0x97336655U, 0x1a34685cU, 0x65ca8943U, 0xf6f1ff0eU, + 0xedc79354U, 0x09122436U, 0xbb6bd6bdU, 0x264c98d4U, + 0x831b362dU, 0xebcb8b40U, 0x6fdea17fU, 0x811f3e21U, + 0x04081018U, 0x6ad4b561U, 0x43861197U, 0x01020406U, + 0x172e5c72U, 0xe1dfa37cU, 0x87132635U, 0xf5f7f304U, + 0x8d070e09U, 0xe3dbab70U, 0x23468ccaU, 0x801d3a27U, + 0x44880d85U, 0x162c5874U, 0x66cc8549U, 0x214284c6U, + 0xfee1df3eU, 0xd5b773c4U, 0x3162c4a6U, 0xd9af43ecU, + 0x356ad4beU, 0x18306050U, 0x0204080cU, 0x64c88d45U, + 0xf2f9ef16U, 0xf1ffe31cU, 0x56ac45e9U, 0xcd871394U, + 0x8219322bU, 0xc88d078aU, 0xba69d2bbU, 0xf0fde71aU, + 0xefc39b58U, 0xe9cf834cU, 0xe8cd874aU, 0xfde7d334U, + 0x890f1e11U, 0xd7b37bc8U, 0xc7933ba8U, 0xb577ee99U, + 0xa455aaffU, 0x2f5ebce2U, 0x95376e59U, 0x13264c6aU, + 0x0b162c3aU, 0xf3fbeb10U, 0xe0dda77aU, 0x376edcb2U, +}; + +static const ulong32 T1[256] = { + 0x53a7f5a6U, 0xbbd3d06bU, 0xd1e66ebfU, 0xe2713bd9U, + 0xbdd0da67U, 0x45accf8aU, 0x9a4db329U, 0xf2790bf9U, + 0x743a9ce8U, 0x8fc98c03U, 0x3f91417eU, 0xe5fc32d7U, + 0x3c1e4478U, 0x8e478f01U, 0xa854e54dU, 0x67bda9ceU, + 0x058c0f0aU, 0x57a5f9aeU, 0xf47a01f5U, 0xebfb20cbU, + 0xc6635791U, 0x6db8b7daU, 0xa7ddf453U, 0xb5d4c277U, + 0xd7e564b3U, 0x7bb38df6U, 0x97c5a433U, 0x61bea3c2U, + 0x4fa9d19eU, 0x0d88171aU, 0x180c2830U, 0x59a2ebb2U, + 0x723996e4U, 0xa3dff85bU, 0x5229f6a4U, 0xa9dae64fU, + 0x562bfaacU, 0x4da8d79aU, 0x8bcb800bU, 0x984cb52dU, + 0x964ba731U, 0x4422cc88U, 0x49aadb92U, 0x4824d890U, + 0x82419b19U, 0xe0703dddU, 0x51a6f3a2U, 0xeff92cc3U, + 0xb45ac175U, 0xd9e276afU, 0x7db087faU, 0x6c36b4d8U, + 0xfa7d13e9U, 0xd5e462b7U, 0x6633aaccU, 0xe3ff38dbU, + 0xc0605d9dU, 0x4020c080U, 0x10083020U, 0x0b8b1d16U, + 0xbc5ed965U, 0x4babdd96U, 0xfe7f1fe1U, 0xf0780dfdU, + 0xf87c15edU, 0x582ce8b0U, 0xae57ef41U, 0xb9d2d66fU, + 0xa5dcf257U, 0xda6d73a9U, 0xfc7e19e5U, 0x1a0d2e34U, + 0xa653f751U, 0x35945f6aU, 0x9bc3b02bU, 0x5028f0a0U, + 0x4e27d29cU, 0x0c061418U, 0xbe5fdf61U, 0x47adc98eU, + 0xce674f81U, 0xb85cd56dU, 0xaa55e349U, 0x9048ad3dU, + 0x1c0e2438U, 0xa452f155U, 0xc9ea468fU, 0x84429115U, + 0xb65bc771U, 0xba5dd369U, 0x6030a0c0U, 0xb058cd7dU, + 0xa251fb59U, 0xb259cb79U, 0x783c88f0U, 0x9c4eb925U, + 0x703890e0U, 0x098a1b12U, 0xe47231d5U, 0x28147850U, + 0xd3e768bbU, 0x91c6ae3fU, 0xa1defe5fU, 0xa050fd5dU, + 0x018e0302U, 0x39924b72U, 0xbfd1dc63U, 0xee772fc1U, + 0x3b934d76U, 0x8a458309U, 0x299a7b52U, 0x81ce9e1fU, + 0x5a2deeb4U, 0x06030a0cU, 0xc4625195U, 0x71b693e2U, + 0x6fb9b1deU, 0x63bfa5c6U, 0x31965362U, 0xd66b67b1U, + 0x7e3f82fcU, 0x0e07121cU, 0x24126c48U, 0x41aec382U, + 0x80409d1dU, 0x6834b8d0U, 0x8c468905U, 0x7c3e84f8U, + 0xabdbe04bU, 0x83cf981bU, 0xc5ec5297U, 0x85cc9217U, + 0x9fc1bc23U, 0x5fa1e1beU, 0x9dc0ba27U, 0xb1d6ce7fU, + 0x3a1d4e74U, 0xf5f402f7U, 0xc2615b99U, 0x763b9aecU, + 0x20106040U, 0xadd8ea47U, 0xd0686dbdU, 0x5da0e7baU, + 0x7fb181feU, 0x140a3c28U, 0xd2696bb9U, 0xd86c75adU, + 0x9249ab39U, 0xe9fa26cfU, 0xec7629c5U, 0x95c4a237U, + 0x219e6342U, 0x2b9b7d56U, 0xdc6e79a5U, 0x2f99715eU, + 0x99c2b62fU, 0x73b795e6U, 0x2d98775aU, 0x65bcafcaU, + 0x038f0506U, 0x1785392eU, 0x3e1f427cU, 0x75b49feaU, + 0xedf82ac7U, 0x22116644U, 0x5c2ee4b8U, 0x00000000U, + 0x4a25de94U, 0x381c4870U, 0x542afca8U, 0x7a3d8ef4U, + 0x0a051e14U, 0x9e4fbf21U, 0xf67b07f1U, 0x79b28bf2U, + 0x6432acc8U, 0x3d90477aU, 0x43afc586U, 0x32195664U, + 0x5ba3edb6U, 0xf3f708fbU, 0xe67337d1U, 0x279d694eU, + 0x2a157e54U, 0xe87425cdU, 0xc1ee5e9fU, 0x89ca860fU, + 0x239f6546U, 0x1e0f223cU, 0x361b5a6cU, 0xea7523c9U, + 0x11863322U, 0x15843f2aU, 0x259c6f4aU, 0x944aa135U, + 0x33975566U, 0x341a5c68U, 0xca654389U, 0xf1f60effU, + 0xc7ed5493U, 0x12093624U, 0x6bbbbdd6U, 0x4c26d498U, + 0x1b832d36U, 0xcbeb408bU, 0xde6f7fa1U, 0x1f81213eU, + 0x08041810U, 0xd46a61b5U, 0x86439711U, 0x02010604U, + 0x2e17725cU, 0xdfe17ca3U, 0x13873526U, 0xf7f504f3U, + 0x078d090eU, 0xdbe370abU, 0x4623ca8cU, 0x1d80273aU, + 0x8844850dU, 0x2c167458U, 0xcc664985U, 0x4221c684U, + 0xe1fe3edfU, 0xb7d5c473U, 0x6231a6c4U, 0xafd9ec43U, + 0x6a35bed4U, 0x30185060U, 0x04020c08U, 0xc864458dU, + 0xf9f216efU, 0xfff11ce3U, 0xac56e945U, 0x87cd9413U, + 0x19822b32U, 0x8dc88a07U, 0x69babbd2U, 0xfdf01ae7U, + 0xc3ef589bU, 0xcfe94c83U, 0xcde84a87U, 0xe7fd34d3U, + 0x0f89111eU, 0xb3d7c87bU, 0x93c7a83bU, 0x77b599eeU, + 0x55a4ffaaU, 0x5e2fe2bcU, 0x3795596eU, 0x26136a4cU, + 0x160b3a2cU, 0xfbf310ebU, 0xdde07aa7U, 0x6e37b2dcU, +}; + +static const ulong32 T2[256] = { + 0xa6f5a753U, 0x6bd0d3bbU, 0xbf6ee6d1U, 0xd93b71e2U, + 0x67dad0bdU, 0x8acfac45U, 0x29b34d9aU, 0xf90b79f2U, + 0xe89c3a74U, 0x038cc98fU, 0x7e41913fU, 0xd732fce5U, + 0x78441e3cU, 0x018f478eU, 0x4de554a8U, 0xcea9bd67U, + 0x0a0f8c05U, 0xaef9a557U, 0xf5017af4U, 0xcb20fbebU, + 0x915763c6U, 0xdab7b86dU, 0x53f4dda7U, 0x77c2d4b5U, + 0xb364e5d7U, 0xf68db37bU, 0x33a4c597U, 0xc2a3be61U, + 0x9ed1a94fU, 0x1a17880dU, 0x30280c18U, 0xb2eba259U, + 0xe4963972U, 0x5bf8dfa3U, 0xa4f62952U, 0x4fe6daa9U, + 0xacfa2b56U, 0x9ad7a84dU, 0x0b80cb8bU, 0x2db54c98U, + 0x31a74b96U, 0x88cc2244U, 0x92dbaa49U, 0x90d82448U, + 0x199b4182U, 0xdd3d70e0U, 0xa2f3a651U, 0xc32cf9efU, + 0x75c15ab4U, 0xaf76e2d9U, 0xfa87b07dU, 0xd8b4366cU, + 0xe9137dfaU, 0xb762e4d5U, 0xccaa3366U, 0xdb38ffe3U, + 0x9d5d60c0U, 0x80c02040U, 0x20300810U, 0x161d8b0bU, + 0x65d95ebcU, 0x96ddab4bU, 0xe11f7ffeU, 0xfd0d78f0U, + 0xed157cf8U, 0xb0e82c58U, 0x41ef57aeU, 0x6fd6d2b9U, + 0x57f2dca5U, 0xa9736ddaU, 0xe5197efcU, 0x342e0d1aU, + 0x51f753a6U, 0x6a5f9435U, 0x2bb0c39bU, 0xa0f02850U, + 0x9cd2274eU, 0x1814060cU, 0x61df5fbeU, 0x8ec9ad47U, + 0x814f67ceU, 0x6dd55cb8U, 0x49e355aaU, 0x3dad4890U, + 0x38240e1cU, 0x55f152a4U, 0x8f46eac9U, 0x15914284U, + 0x71c75bb6U, 0x69d35dbaU, 0xc0a03060U, 0x7dcd58b0U, + 0x59fb51a2U, 0x79cb59b2U, 0xf0883c78U, 0x25b94e9cU, + 0xe0903870U, 0x121b8a09U, 0xd53172e4U, 0x50781428U, + 0xbb68e7d3U, 0x3faec691U, 0x5ffedea1U, 0x5dfd50a0U, + 0x02038e01U, 0x724b9239U, 0x63dcd1bfU, 0xc12f77eeU, + 0x764d933bU, 0x0983458aU, 0x527b9a29U, 0x1f9ece81U, + 0xb4ee2d5aU, 0x0c0a0306U, 0x955162c4U, 0xe293b671U, + 0xdeb1b96fU, 0xc6a5bf63U, 0x62539631U, 0xb1676bd6U, + 0xfc823f7eU, 0x1c12070eU, 0x486c1224U, 0x82c3ae41U, + 0x1d9d4080U, 0xd0b83468U, 0x0589468cU, 0xf8843e7cU, + 0x4be0dbabU, 0x1b98cf83U, 0x9752ecc5U, 0x1792cc85U, + 0x23bcc19fU, 0xbee1a15fU, 0x27bac09dU, 0x7fced6b1U, + 0x744e1d3aU, 0xf702f4f5U, 0x995b61c2U, 0xec9a3b76U, + 0x40601020U, 0x47ead8adU, 0xbd6d68d0U, 0xbae7a05dU, + 0xfe81b17fU, 0x283c0a14U, 0xb96b69d2U, 0xad756cd8U, + 0x39ab4992U, 0xcf26fae9U, 0xc52976ecU, 0x37a2c495U, + 0x42639e21U, 0x567d9b2bU, 0xa5796edcU, 0x5e71992fU, + 0x2fb6c299U, 0xe695b773U, 0x5a77982dU, 0xcaafbc65U, + 0x06058f03U, 0x2e398517U, 0x7c421f3eU, 0xea9fb475U, + 0xc72af8edU, 0x44661122U, 0xb8e42e5cU, 0x00000000U, + 0x94de254aU, 0x70481c38U, 0xa8fc2a54U, 0xf48e3d7aU, + 0x141e050aU, 0x21bf4f9eU, 0xf1077bf6U, 0xf28bb279U, + 0xc8ac3264U, 0x7a47903dU, 0x86c5af43U, 0x64561932U, + 0xb6eda35bU, 0xfb08f7f3U, 0xd13773e6U, 0x4e699d27U, + 0x547e152aU, 0xcd2574e8U, 0x9f5eeec1U, 0x0f86ca89U, + 0x46659f23U, 0x3c220f1eU, 0x6c5a1b36U, 0xc92375eaU, + 0x22338611U, 0x2a3f8415U, 0x4a6f9c25U, 0x35a14a94U, + 0x66559733U, 0x685c1a34U, 0x894365caU, 0xff0ef6f1U, + 0x9354edc7U, 0x24360912U, 0xd6bdbb6bU, 0x98d4264cU, + 0x362d831bU, 0x8b40ebcbU, 0xa17f6fdeU, 0x3e21811fU, + 0x10180408U, 0xb5616ad4U, 0x11974386U, 0x04060102U, + 0x5c72172eU, 0xa37ce1dfU, 0x26358713U, 0xf304f5f7U, + 0x0e098d07U, 0xab70e3dbU, 0x8cca2346U, 0x3a27801dU, + 0x0d854488U, 0x5874162cU, 0x854966ccU, 0x84c62142U, + 0xdf3efee1U, 0x73c4d5b7U, 0xc4a63162U, 0x43ecd9afU, + 0xd4be356aU, 0x60501830U, 0x080c0204U, 0x8d4564c8U, + 0xef16f2f9U, 0xe31cf1ffU, 0x45e956acU, 0x1394cd87U, + 0x322b8219U, 0x078ac88dU, 0xd2bbba69U, 0xe71af0fdU, + 0x9b58efc3U, 0x834ce9cfU, 0x874ae8cdU, 0xd334fde7U, + 0x1e11890fU, 0x7bc8d7b3U, 0x3ba8c793U, 0xee99b577U, + 0xaaffa455U, 0xbce22f5eU, 0x6e599537U, 0x4c6a1326U, + 0x2c3a0b16U, 0xeb10f3fbU, 0xa77ae0ddU, 0xdcb2376eU, +}; + +static const ulong32 T3[256] = { + 0xf5a653a7U, 0xd06bbbd3U, 0x6ebfd1e6U, 0x3bd9e271U, + 0xda67bdd0U, 0xcf8a45acU, 0xb3299a4dU, 0x0bf9f279U, + 0x9ce8743aU, 0x8c038fc9U, 0x417e3f91U, 0x32d7e5fcU, + 0x44783c1eU, 0x8f018e47U, 0xe54da854U, 0xa9ce67bdU, + 0x0f0a058cU, 0xf9ae57a5U, 0x01f5f47aU, 0x20cbebfbU, + 0x5791c663U, 0xb7da6db8U, 0xf453a7ddU, 0xc277b5d4U, + 0x64b3d7e5U, 0x8df67bb3U, 0xa43397c5U, 0xa3c261beU, + 0xd19e4fa9U, 0x171a0d88U, 0x2830180cU, 0xebb259a2U, + 0x96e47239U, 0xf85ba3dfU, 0xf6a45229U, 0xe64fa9daU, + 0xfaac562bU, 0xd79a4da8U, 0x800b8bcbU, 0xb52d984cU, + 0xa731964bU, 0xcc884422U, 0xdb9249aaU, 0xd8904824U, + 0x9b198241U, 0x3ddde070U, 0xf3a251a6U, 0x2cc3eff9U, + 0xc175b45aU, 0x76afd9e2U, 0x87fa7db0U, 0xb4d86c36U, + 0x13e9fa7dU, 0x62b7d5e4U, 0xaacc6633U, 0x38dbe3ffU, + 0x5d9dc060U, 0xc0804020U, 0x30201008U, 0x1d160b8bU, + 0xd965bc5eU, 0xdd964babU, 0x1fe1fe7fU, 0x0dfdf078U, + 0x15edf87cU, 0xe8b0582cU, 0xef41ae57U, 0xd66fb9d2U, + 0xf257a5dcU, 0x73a9da6dU, 0x19e5fc7eU, 0x2e341a0dU, + 0xf751a653U, 0x5f6a3594U, 0xb02b9bc3U, 0xf0a05028U, + 0xd29c4e27U, 0x14180c06U, 0xdf61be5fU, 0xc98e47adU, + 0x4f81ce67U, 0xd56db85cU, 0xe349aa55U, 0xad3d9048U, + 0x24381c0eU, 0xf155a452U, 0x468fc9eaU, 0x91158442U, + 0xc771b65bU, 0xd369ba5dU, 0xa0c06030U, 0xcd7db058U, + 0xfb59a251U, 0xcb79b259U, 0x88f0783cU, 0xb9259c4eU, + 0x90e07038U, 0x1b12098aU, 0x31d5e472U, 0x78502814U, + 0x68bbd3e7U, 0xae3f91c6U, 0xfe5fa1deU, 0xfd5da050U, + 0x0302018eU, 0x4b723992U, 0xdc63bfd1U, 0x2fc1ee77U, + 0x4d763b93U, 0x83098a45U, 0x7b52299aU, 0x9e1f81ceU, + 0xeeb45a2dU, 0x0a0c0603U, 0x5195c462U, 0x93e271b6U, + 0xb1de6fb9U, 0xa5c663bfU, 0x53623196U, 0x67b1d66bU, + 0x82fc7e3fU, 0x121c0e07U, 0x6c482412U, 0xc38241aeU, + 0x9d1d8040U, 0xb8d06834U, 0x89058c46U, 0x84f87c3eU, + 0xe04babdbU, 0x981b83cfU, 0x5297c5ecU, 0x921785ccU, + 0xbc239fc1U, 0xe1be5fa1U, 0xba279dc0U, 0xce7fb1d6U, + 0x4e743a1dU, 0x02f7f5f4U, 0x5b99c261U, 0x9aec763bU, + 0x60402010U, 0xea47add8U, 0x6dbdd068U, 0xe7ba5da0U, + 0x81fe7fb1U, 0x3c28140aU, 0x6bb9d269U, 0x75add86cU, + 0xab399249U, 0x26cfe9faU, 0x29c5ec76U, 0xa23795c4U, + 0x6342219eU, 0x7d562b9bU, 0x79a5dc6eU, 0x715e2f99U, + 0xb62f99c2U, 0x95e673b7U, 0x775a2d98U, 0xafca65bcU, + 0x0506038fU, 0x392e1785U, 0x427c3e1fU, 0x9fea75b4U, + 0x2ac7edf8U, 0x66442211U, 0xe4b85c2eU, 0x00000000U, + 0xde944a25U, 0x4870381cU, 0xfca8542aU, 0x8ef47a3dU, + 0x1e140a05U, 0xbf219e4fU, 0x07f1f67bU, 0x8bf279b2U, + 0xacc86432U, 0x477a3d90U, 0xc58643afU, 0x56643219U, + 0xedb65ba3U, 0x08fbf3f7U, 0x37d1e673U, 0x694e279dU, + 0x7e542a15U, 0x25cde874U, 0x5e9fc1eeU, 0x860f89caU, + 0x6546239fU, 0x223c1e0fU, 0x5a6c361bU, 0x23c9ea75U, + 0x33221186U, 0x3f2a1584U, 0x6f4a259cU, 0xa135944aU, + 0x55663397U, 0x5c68341aU, 0x4389ca65U, 0x0efff1f6U, + 0x5493c7edU, 0x36241209U, 0xbdd66bbbU, 0xd4984c26U, + 0x2d361b83U, 0x408bcbebU, 0x7fa1de6fU, 0x213e1f81U, + 0x18100804U, 0x61b5d46aU, 0x97118643U, 0x06040201U, + 0x725c2e17U, 0x7ca3dfe1U, 0x35261387U, 0x04f3f7f5U, + 0x090e078dU, 0x70abdbe3U, 0xca8c4623U, 0x273a1d80U, + 0x850d8844U, 0x74582c16U, 0x4985cc66U, 0xc6844221U, + 0x3edfe1feU, 0xc473b7d5U, 0xa6c46231U, 0xec43afd9U, + 0xbed46a35U, 0x50603018U, 0x0c080402U, 0x458dc864U, + 0x16eff9f2U, 0x1ce3fff1U, 0xe945ac56U, 0x941387cdU, + 0x2b321982U, 0x8a078dc8U, 0xbbd269baU, 0x1ae7fdf0U, + 0x589bc3efU, 0x4c83cfe9U, 0x4a87cde8U, 0x34d3e7fdU, + 0x111e0f89U, 0xc87bb3d7U, 0xa83b93c7U, 0x99ee77b5U, + 0xffaa55a4U, 0xe2bc5e2fU, 0x596e3795U, 0x6a4c2613U, + 0x3a2c160bU, 0x10ebfbf3U, 0x7aa7dde0U, 0xb2dc6e37U, +}; + +static const ulong32 T4[256] = { + 0xa7a7a7a7U, 0xd3d3d3d3U, 0xe6e6e6e6U, 0x71717171U, + 0xd0d0d0d0U, 0xacacacacU, 0x4d4d4d4dU, 0x79797979U, + 0x3a3a3a3aU, 0xc9c9c9c9U, 0x91919191U, 0xfcfcfcfcU, + 0x1e1e1e1eU, 0x47474747U, 0x54545454U, 0xbdbdbdbdU, + 0x8c8c8c8cU, 0xa5a5a5a5U, 0x7a7a7a7aU, 0xfbfbfbfbU, + 0x63636363U, 0xb8b8b8b8U, 0xddddddddU, 0xd4d4d4d4U, + 0xe5e5e5e5U, 0xb3b3b3b3U, 0xc5c5c5c5U, 0xbebebebeU, + 0xa9a9a9a9U, 0x88888888U, 0x0c0c0c0cU, 0xa2a2a2a2U, + 0x39393939U, 0xdfdfdfdfU, 0x29292929U, 0xdadadadaU, + 0x2b2b2b2bU, 0xa8a8a8a8U, 0xcbcbcbcbU, 0x4c4c4c4cU, + 0x4b4b4b4bU, 0x22222222U, 0xaaaaaaaaU, 0x24242424U, + 0x41414141U, 0x70707070U, 0xa6a6a6a6U, 0xf9f9f9f9U, + 0x5a5a5a5aU, 0xe2e2e2e2U, 0xb0b0b0b0U, 0x36363636U, + 0x7d7d7d7dU, 0xe4e4e4e4U, 0x33333333U, 0xffffffffU, + 0x60606060U, 0x20202020U, 0x08080808U, 0x8b8b8b8bU, + 0x5e5e5e5eU, 0xababababU, 0x7f7f7f7fU, 0x78787878U, + 0x7c7c7c7cU, 0x2c2c2c2cU, 0x57575757U, 0xd2d2d2d2U, + 0xdcdcdcdcU, 0x6d6d6d6dU, 0x7e7e7e7eU, 0x0d0d0d0dU, + 0x53535353U, 0x94949494U, 0xc3c3c3c3U, 0x28282828U, + 0x27272727U, 0x06060606U, 0x5f5f5f5fU, 0xadadadadU, + 0x67676767U, 0x5c5c5c5cU, 0x55555555U, 0x48484848U, + 0x0e0e0e0eU, 0x52525252U, 0xeaeaeaeaU, 0x42424242U, + 0x5b5b5b5bU, 0x5d5d5d5dU, 0x30303030U, 0x58585858U, + 0x51515151U, 0x59595959U, 0x3c3c3c3cU, 0x4e4e4e4eU, + 0x38383838U, 0x8a8a8a8aU, 0x72727272U, 0x14141414U, + 0xe7e7e7e7U, 0xc6c6c6c6U, 0xdedededeU, 0x50505050U, + 0x8e8e8e8eU, 0x92929292U, 0xd1d1d1d1U, 0x77777777U, + 0x93939393U, 0x45454545U, 0x9a9a9a9aU, 0xcecececeU, + 0x2d2d2d2dU, 0x03030303U, 0x62626262U, 0xb6b6b6b6U, + 0xb9b9b9b9U, 0xbfbfbfbfU, 0x96969696U, 0x6b6b6b6bU, + 0x3f3f3f3fU, 0x07070707U, 0x12121212U, 0xaeaeaeaeU, + 0x40404040U, 0x34343434U, 0x46464646U, 0x3e3e3e3eU, + 0xdbdbdbdbU, 0xcfcfcfcfU, 0xececececU, 0xccccccccU, + 0xc1c1c1c1U, 0xa1a1a1a1U, 0xc0c0c0c0U, 0xd6d6d6d6U, + 0x1d1d1d1dU, 0xf4f4f4f4U, 0x61616161U, 0x3b3b3b3bU, + 0x10101010U, 0xd8d8d8d8U, 0x68686868U, 0xa0a0a0a0U, + 0xb1b1b1b1U, 0x0a0a0a0aU, 0x69696969U, 0x6c6c6c6cU, + 0x49494949U, 0xfafafafaU, 0x76767676U, 0xc4c4c4c4U, + 0x9e9e9e9eU, 0x9b9b9b9bU, 0x6e6e6e6eU, 0x99999999U, + 0xc2c2c2c2U, 0xb7b7b7b7U, 0x98989898U, 0xbcbcbcbcU, + 0x8f8f8f8fU, 0x85858585U, 0x1f1f1f1fU, 0xb4b4b4b4U, + 0xf8f8f8f8U, 0x11111111U, 0x2e2e2e2eU, 0x00000000U, + 0x25252525U, 0x1c1c1c1cU, 0x2a2a2a2aU, 0x3d3d3d3dU, + 0x05050505U, 0x4f4f4f4fU, 0x7b7b7b7bU, 0xb2b2b2b2U, + 0x32323232U, 0x90909090U, 0xafafafafU, 0x19191919U, + 0xa3a3a3a3U, 0xf7f7f7f7U, 0x73737373U, 0x9d9d9d9dU, + 0x15151515U, 0x74747474U, 0xeeeeeeeeU, 0xcacacacaU, + 0x9f9f9f9fU, 0x0f0f0f0fU, 0x1b1b1b1bU, 0x75757575U, + 0x86868686U, 0x84848484U, 0x9c9c9c9cU, 0x4a4a4a4aU, + 0x97979797U, 0x1a1a1a1aU, 0x65656565U, 0xf6f6f6f6U, + 0xededededU, 0x09090909U, 0xbbbbbbbbU, 0x26262626U, + 0x83838383U, 0xebebebebU, 0x6f6f6f6fU, 0x81818181U, + 0x04040404U, 0x6a6a6a6aU, 0x43434343U, 0x01010101U, + 0x17171717U, 0xe1e1e1e1U, 0x87878787U, 0xf5f5f5f5U, + 0x8d8d8d8dU, 0xe3e3e3e3U, 0x23232323U, 0x80808080U, + 0x44444444U, 0x16161616U, 0x66666666U, 0x21212121U, + 0xfefefefeU, 0xd5d5d5d5U, 0x31313131U, 0xd9d9d9d9U, + 0x35353535U, 0x18181818U, 0x02020202U, 0x64646464U, + 0xf2f2f2f2U, 0xf1f1f1f1U, 0x56565656U, 0xcdcdcdcdU, + 0x82828282U, 0xc8c8c8c8U, 0xbabababaU, 0xf0f0f0f0U, + 0xefefefefU, 0xe9e9e9e9U, 0xe8e8e8e8U, 0xfdfdfdfdU, + 0x89898989U, 0xd7d7d7d7U, 0xc7c7c7c7U, 0xb5b5b5b5U, + 0xa4a4a4a4U, 0x2f2f2f2fU, 0x95959595U, 0x13131313U, + 0x0b0b0b0bU, 0xf3f3f3f3U, 0xe0e0e0e0U, 0x37373737U, +}; + +static const ulong32 T5[256] = { + 0x00000000U, 0x01020608U, 0x02040c10U, 0x03060a18U, + 0x04081820U, 0x050a1e28U, 0x060c1430U, 0x070e1238U, + 0x08103040U, 0x09123648U, 0x0a143c50U, 0x0b163a58U, + 0x0c182860U, 0x0d1a2e68U, 0x0e1c2470U, 0x0f1e2278U, + 0x10206080U, 0x11226688U, 0x12246c90U, 0x13266a98U, + 0x142878a0U, 0x152a7ea8U, 0x162c74b0U, 0x172e72b8U, + 0x183050c0U, 0x193256c8U, 0x1a345cd0U, 0x1b365ad8U, + 0x1c3848e0U, 0x1d3a4ee8U, 0x1e3c44f0U, 0x1f3e42f8U, + 0x2040c01dU, 0x2142c615U, 0x2244cc0dU, 0x2346ca05U, + 0x2448d83dU, 0x254ade35U, 0x264cd42dU, 0x274ed225U, + 0x2850f05dU, 0x2952f655U, 0x2a54fc4dU, 0x2b56fa45U, + 0x2c58e87dU, 0x2d5aee75U, 0x2e5ce46dU, 0x2f5ee265U, + 0x3060a09dU, 0x3162a695U, 0x3264ac8dU, 0x3366aa85U, + 0x3468b8bdU, 0x356abeb5U, 0x366cb4adU, 0x376eb2a5U, + 0x387090ddU, 0x397296d5U, 0x3a749ccdU, 0x3b769ac5U, + 0x3c7888fdU, 0x3d7a8ef5U, 0x3e7c84edU, 0x3f7e82e5U, + 0x40809d3aU, 0x41829b32U, 0x4284912aU, 0x43869722U, + 0x4488851aU, 0x458a8312U, 0x468c890aU, 0x478e8f02U, + 0x4890ad7aU, 0x4992ab72U, 0x4a94a16aU, 0x4b96a762U, + 0x4c98b55aU, 0x4d9ab352U, 0x4e9cb94aU, 0x4f9ebf42U, + 0x50a0fdbaU, 0x51a2fbb2U, 0x52a4f1aaU, 0x53a6f7a2U, + 0x54a8e59aU, 0x55aae392U, 0x56ace98aU, 0x57aeef82U, + 0x58b0cdfaU, 0x59b2cbf2U, 0x5ab4c1eaU, 0x5bb6c7e2U, + 0x5cb8d5daU, 0x5dbad3d2U, 0x5ebcd9caU, 0x5fbedfc2U, + 0x60c05d27U, 0x61c25b2fU, 0x62c45137U, 0x63c6573fU, + 0x64c84507U, 0x65ca430fU, 0x66cc4917U, 0x67ce4f1fU, + 0x68d06d67U, 0x69d26b6fU, 0x6ad46177U, 0x6bd6677fU, + 0x6cd87547U, 0x6dda734fU, 0x6edc7957U, 0x6fde7f5fU, + 0x70e03da7U, 0x71e23bafU, 0x72e431b7U, 0x73e637bfU, + 0x74e82587U, 0x75ea238fU, 0x76ec2997U, 0x77ee2f9fU, + 0x78f00de7U, 0x79f20befU, 0x7af401f7U, 0x7bf607ffU, + 0x7cf815c7U, 0x7dfa13cfU, 0x7efc19d7U, 0x7ffe1fdfU, + 0x801d2774U, 0x811f217cU, 0x82192b64U, 0x831b2d6cU, + 0x84153f54U, 0x8517395cU, 0x86113344U, 0x8713354cU, + 0x880d1734U, 0x890f113cU, 0x8a091b24U, 0x8b0b1d2cU, + 0x8c050f14U, 0x8d07091cU, 0x8e010304U, 0x8f03050cU, + 0x903d47f4U, 0x913f41fcU, 0x92394be4U, 0x933b4decU, + 0x94355fd4U, 0x953759dcU, 0x963153c4U, 0x973355ccU, + 0x982d77b4U, 0x992f71bcU, 0x9a297ba4U, 0x9b2b7dacU, + 0x9c256f94U, 0x9d27699cU, 0x9e216384U, 0x9f23658cU, + 0xa05de769U, 0xa15fe161U, 0xa259eb79U, 0xa35bed71U, + 0xa455ff49U, 0xa557f941U, 0xa651f359U, 0xa753f551U, + 0xa84dd729U, 0xa94fd121U, 0xaa49db39U, 0xab4bdd31U, + 0xac45cf09U, 0xad47c901U, 0xae41c319U, 0xaf43c511U, + 0xb07d87e9U, 0xb17f81e1U, 0xb2798bf9U, 0xb37b8df1U, + 0xb4759fc9U, 0xb57799c1U, 0xb67193d9U, 0xb77395d1U, + 0xb86db7a9U, 0xb96fb1a1U, 0xba69bbb9U, 0xbb6bbdb1U, + 0xbc65af89U, 0xbd67a981U, 0xbe61a399U, 0xbf63a591U, + 0xc09dba4eU, 0xc19fbc46U, 0xc299b65eU, 0xc39bb056U, + 0xc495a26eU, 0xc597a466U, 0xc691ae7eU, 0xc793a876U, + 0xc88d8a0eU, 0xc98f8c06U, 0xca89861eU, 0xcb8b8016U, + 0xcc85922eU, 0xcd879426U, 0xce819e3eU, 0xcf839836U, + 0xd0bddaceU, 0xd1bfdcc6U, 0xd2b9d6deU, 0xd3bbd0d6U, + 0xd4b5c2eeU, 0xd5b7c4e6U, 0xd6b1cefeU, 0xd7b3c8f6U, + 0xd8adea8eU, 0xd9afec86U, 0xdaa9e69eU, 0xdbabe096U, + 0xdca5f2aeU, 0xdda7f4a6U, 0xdea1febeU, 0xdfa3f8b6U, + 0xe0dd7a53U, 0xe1df7c5bU, 0xe2d97643U, 0xe3db704bU, + 0xe4d56273U, 0xe5d7647bU, 0xe6d16e63U, 0xe7d3686bU, + 0xe8cd4a13U, 0xe9cf4c1bU, 0xeac94603U, 0xebcb400bU, + 0xecc55233U, 0xedc7543bU, 0xeec15e23U, 0xefc3582bU, + 0xf0fd1ad3U, 0xf1ff1cdbU, 0xf2f916c3U, 0xf3fb10cbU, + 0xf4f502f3U, 0xf5f704fbU, 0xf6f10ee3U, 0xf7f308ebU, + 0xf8ed2a93U, 0xf9ef2c9bU, 0xfae92683U, 0xfbeb208bU, + 0xfce532b3U, 0xfde734bbU, 0xfee13ea3U, 0xffe338abU, +}; + +/** + * The round constants. + */ +static const ulong32 rc[] = { + 0xa7d3e671U, 0xd0ac4d79U, 0x3ac991fcU, 0x1e4754bdU, + 0x8ca57afbU, 0x63b8ddd4U, 0xe5b3c5beU, 0xa9880ca2U, + 0x39df29daU, 0x2ba8cb4cU, 0x4b22aa24U, 0x4170a6f9U, + 0x5ae2b036U, 0x7de433ffU, 0x6020088bU, 0x5eab7f78U, + 0x7c2c57d2U, 0xdc6d7e0dU, 0x5394c328U, +}; + +#endif + + /** + Initialize the Anubis block cipher + @param key The symmetric key you wish to pass + @param keylen The key length in bytes + @param num_rounds The number of rounds desired (0 for default) + @param skey The key in as scheduled by this function. + @return CRYPT_OK if successful + */ +#ifdef LTC_CLEAN_STACK +static int _anubis_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +#else +int anubis_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +#endif +{ + int N, R, i, pos, r; + ulong32 kappa[MAX_N]; + ulong32 inter[MAX_N] = { 0 }; /* initialize as all zeroes */ + ulong32 v, K0, K1, K2, K3; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(skey != NULL); + + /* Valid sizes (in bytes) are 16, 20, 24, 28, 32, 36, and 40. */ + if ((keylen & 3) || (keylen < 16) || (keylen > 40)) { + return CRYPT_INVALID_KEYSIZE; + } + skey->anubis.keyBits = keylen*8; + + /* + * determine the N length parameter: + * (N.B. it is assumed that the key length is valid!) + */ + N = skey->anubis.keyBits >> 5; + + /* + * determine number of rounds from key size: + */ + skey->anubis.R = R = 8 + N; + + if (num_rounds != 0 && num_rounds != skey->anubis.R) { + return CRYPT_INVALID_ROUNDS; + } + + /* + * map cipher key to initial key state (mu): + */ + for (i = 0, pos = 0; i < N; i++, pos += 4) { + kappa[i] = + (((ulong32)key[pos ]) << 24) ^ + (((ulong32)key[pos + 1]) << 16) ^ + (((ulong32)key[pos + 2]) << 8) ^ + (((ulong32)key[pos + 3]) ); + } + + /* + * generate R + 1 round keys: + */ + for (r = 0; r <= R; r++) { + /* + * generate r-th round key K^r: + */ + K0 = T4[(kappa[N - 1] >> 24) & 0xff]; + K1 = T4[(kappa[N - 1] >> 16) & 0xff]; + K2 = T4[(kappa[N - 1] >> 8) & 0xff]; + K3 = T4[(kappa[N - 1] ) & 0xff]; + for (i = N - 2; i >= 0; i--) { + K0 = T4[(kappa[i] >> 24) & 0xff] ^ + (T5[(K0 >> 24) & 0xff] & 0xff000000U) ^ + (T5[(K0 >> 16) & 0xff] & 0x00ff0000U) ^ + (T5[(K0 >> 8) & 0xff] & 0x0000ff00U) ^ + (T5[(K0 ) & 0xff] & 0x000000ffU); + K1 = T4[(kappa[i] >> 16) & 0xff] ^ + (T5[(K1 >> 24) & 0xff] & 0xff000000U) ^ + (T5[(K1 >> 16) & 0xff] & 0x00ff0000U) ^ + (T5[(K1 >> 8) & 0xff] & 0x0000ff00U) ^ + (T5[(K1 ) & 0xff] & 0x000000ffU); + K2 = T4[(kappa[i] >> 8) & 0xff] ^ + (T5[(K2 >> 24) & 0xff] & 0xff000000U) ^ + (T5[(K2 >> 16) & 0xff] & 0x00ff0000U) ^ + (T5[(K2 >> 8) & 0xff] & 0x0000ff00U) ^ + (T5[(K2 ) & 0xff] & 0x000000ffU); + K3 = T4[(kappa[i] ) & 0xff] ^ + (T5[(K3 >> 24) & 0xff] & 0xff000000U) ^ + (T5[(K3 >> 16) & 0xff] & 0x00ff0000U) ^ + (T5[(K3 >> 8) & 0xff] & 0x0000ff00U) ^ + (T5[(K3 ) & 0xff] & 0x000000ffU); + } + /* + -- this is the code to use with the large U tables: + K0 = K1 = K2 = K3 = 0; + for (i = 0; i < N; i++) { + K0 ^= U[i][(kappa[i] >> 24) & 0xff]; + K1 ^= U[i][(kappa[i] >> 16) & 0xff]; + K2 ^= U[i][(kappa[i] >> 8) & 0xff]; + K3 ^= U[i][(kappa[i] ) & 0xff]; + } + */ + skey->anubis.roundKeyEnc[r][0] = K0; + skey->anubis.roundKeyEnc[r][1] = K1; + skey->anubis.roundKeyEnc[r][2] = K2; + skey->anubis.roundKeyEnc[r][3] = K3; + + /* + * compute kappa^{r+1} from kappa^r: + */ + if (r == R) { + break; + } + for (i = 0; i < N; i++) { + int j = i; + inter[i] = T0[(kappa[j--] >> 24) & 0xff]; if (j < 0) j = N - 1; + inter[i] ^= T1[(kappa[j--] >> 16) & 0xff]; if (j < 0) j = N - 1; + inter[i] ^= T2[(kappa[j--] >> 8) & 0xff]; if (j < 0) j = N - 1; + inter[i] ^= T3[(kappa[j ] ) & 0xff]; + } + kappa[0] = inter[0] ^ rc[r]; + for (i = 1; i < N; i++) { + kappa[i] = inter[i]; + } + } + + /* + * generate inverse key schedule: K'^0 = K^R, K'^R = K^0, K'^r = theta(K^{R-r}): + */ + for (i = 0; i < 4; i++) { + skey->anubis.roundKeyDec[0][i] = skey->anubis.roundKeyEnc[R][i]; + skey->anubis.roundKeyDec[R][i] = skey->anubis.roundKeyEnc[0][i]; + } + for (r = 1; r < R; r++) { + for (i = 0; i < 4; i++) { + v = skey->anubis.roundKeyEnc[R - r][i]; + skey->anubis.roundKeyDec[r][i] = + T0[T4[(v >> 24) & 0xff] & 0xff] ^ + T1[T4[(v >> 16) & 0xff] & 0xff] ^ + T2[T4[(v >> 8) & 0xff] & 0xff] ^ + T3[T4[(v ) & 0xff] & 0xff]; + } + } + + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +int anubis_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +{ + int err; + err = _anubis_setup(key, keylen, num_rounds, skey); + burn_stack(sizeof(int) * 5 + sizeof(ulong32) * (MAX_N + MAX_N + 5)); + return err; +} +#endif + + +static void anubis_crypt(const unsigned char *plaintext, unsigned char *ciphertext, + ulong32 roundKey[18 + 1][4], int R) { + int i, pos, r; + ulong32 state[4]; + ulong32 inter[4]; + + /* + * map plaintext block to cipher state (mu) + * and add initial round key (sigma[K^0]): + */ + for (i = 0, pos = 0; i < 4; i++, pos += 4) { + state[i] = + (((ulong32)plaintext[pos ]) << 24) ^ + (((ulong32)plaintext[pos + 1]) << 16) ^ + (((ulong32)plaintext[pos + 2]) << 8) ^ + (((ulong32)plaintext[pos + 3]) ) ^ + roundKey[0][i]; + } + + /* + * R - 1 full rounds: + */ + for (r = 1; r < R; r++) { + inter[0] = + T0[(state[0] >> 24) & 0xff] ^ + T1[(state[1] >> 24) & 0xff] ^ + T2[(state[2] >> 24) & 0xff] ^ + T3[(state[3] >> 24) & 0xff] ^ + roundKey[r][0]; + inter[1] = + T0[(state[0] >> 16) & 0xff] ^ + T1[(state[1] >> 16) & 0xff] ^ + T2[(state[2] >> 16) & 0xff] ^ + T3[(state[3] >> 16) & 0xff] ^ + roundKey[r][1]; + inter[2] = + T0[(state[0] >> 8) & 0xff] ^ + T1[(state[1] >> 8) & 0xff] ^ + T2[(state[2] >> 8) & 0xff] ^ + T3[(state[3] >> 8) & 0xff] ^ + roundKey[r][2]; + inter[3] = + T0[(state[0] ) & 0xff] ^ + T1[(state[1] ) & 0xff] ^ + T2[(state[2] ) & 0xff] ^ + T3[(state[3] ) & 0xff] ^ + roundKey[r][3]; + state[0] = inter[0]; + state[1] = inter[1]; + state[2] = inter[2]; + state[3] = inter[3]; + } + + /* + * last round: + */ + inter[0] = + (T0[(state[0] >> 24) & 0xff] & 0xff000000U) ^ + (T1[(state[1] >> 24) & 0xff] & 0x00ff0000U) ^ + (T2[(state[2] >> 24) & 0xff] & 0x0000ff00U) ^ + (T3[(state[3] >> 24) & 0xff] & 0x000000ffU) ^ + roundKey[R][0]; + inter[1] = + (T0[(state[0] >> 16) & 0xff] & 0xff000000U) ^ + (T1[(state[1] >> 16) & 0xff] & 0x00ff0000U) ^ + (T2[(state[2] >> 16) & 0xff] & 0x0000ff00U) ^ + (T3[(state[3] >> 16) & 0xff] & 0x000000ffU) ^ + roundKey[R][1]; + inter[2] = + (T0[(state[0] >> 8) & 0xff] & 0xff000000U) ^ + (T1[(state[1] >> 8) & 0xff] & 0x00ff0000U) ^ + (T2[(state[2] >> 8) & 0xff] & 0x0000ff00U) ^ + (T3[(state[3] >> 8) & 0xff] & 0x000000ffU) ^ + roundKey[R][2]; + inter[3] = + (T0[(state[0] ) & 0xff] & 0xff000000U) ^ + (T1[(state[1] ) & 0xff] & 0x00ff0000U) ^ + (T2[(state[2] ) & 0xff] & 0x0000ff00U) ^ + (T3[(state[3] ) & 0xff] & 0x000000ffU) ^ + roundKey[R][3]; + + /* + * map cipher state to ciphertext block (mu^{-1}): + */ + for (i = 0, pos = 0; i < 4; i++, pos += 4) { + ulong32 w = inter[i]; + ciphertext[pos ] = (unsigned char)(w >> 24); + ciphertext[pos + 1] = (unsigned char)(w >> 16); + ciphertext[pos + 2] = (unsigned char)(w >> 8); + ciphertext[pos + 3] = (unsigned char)(w ); + } +} + +/** + Encrypts a block of text with Anubis + @param pt The input plaintext (16 bytes) + @param ct The output ciphertext (16 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +int anubis_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +{ + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + anubis_crypt(pt, ct, skey->anubis.roundKeyEnc, skey->anubis.R); + return CRYPT_OK; +} + +/** + Decrypts a block of text with Anubis + @param ct The input ciphertext (16 bytes) + @param pt The output plaintext (16 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +int anubis_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +{ + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + anubis_crypt(ct, pt, skey->anubis.roundKeyDec, skey->anubis.R); + return CRYPT_OK; +} + +/** + Performs a self-test of the Anubis block cipher + @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled +*/ +int anubis_test(void) +{ +#if !defined(LTC_TEST) + return CRYPT_NOP; +#else + static const struct test { + int keylen; + unsigned char pt[16], ct[16], key[40]; + } tests[] = { +#ifndef LTC_ANUBIS_TWEAK + /**** ORIGINAL LTC_ANUBIS ****/ + /* 128 bit keys */ +{ + 16, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xF0, 0x68, 0x60, 0xFC, 0x67, 0x30, 0xE8, 0x18, + 0xF1, 0x32, 0xC7, 0x8A, 0xF4, 0x13, 0x2A, 0xFE }, + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } +}, { + 16, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xA8, 0x66, 0x84, 0x80, 0x07, 0x74, 0x5C, 0x89, + 0xFC, 0x5E, 0xB5, 0xBA, 0xD4, 0xFE, 0x32, 0x6D }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } +}, + + /* 160-bit keys */ +{ + 20, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xBD, 0x5E, 0x32, 0xBE, 0x51, 0x67, 0xA8, 0xE2, + 0x72, 0xD7, 0x95, 0x0F, 0x83, 0xC6, 0x8C, 0x31 }, + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 } +}, { + 20, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x4C, 0x1F, 0x86, 0x2E, 0x11, 0xEB, 0xCE, 0xEB, + 0xFE, 0xB9, 0x73, 0xC9, 0xDF, 0xEF, 0x7A, 0xDB }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01 } +}, + + /* 192-bit keys */ +{ + 24, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x17, 0xAC, 0x57, 0x44, 0x9D, 0x59, 0x61, 0x66, + 0xD0, 0xC7, 0x9E, 0x04, 0x7C, 0xC7, 0x58, 0xF0 }, + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } +}, { + 24, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x71, 0x52, 0xB4, 0xEB, 0x1D, 0xAA, 0x36, 0xFD, + 0x57, 0x14, 0x5F, 0x57, 0x04, 0x9F, 0x70, 0x74 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } +}, + + /* 224-bit keys */ +{ + 28, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xA2, 0xF0, 0xA6, 0xB9, 0x17, 0x93, 0x2A, 0x3B, + 0xEF, 0x08, 0xE8, 0x7A, 0x58, 0xD6, 0xF8, 0x53 }, + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 } +}, { + 28, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xF0, 0xCA, 0xFC, 0x78, 0x8B, 0x4B, 0x4E, 0x53, + 0x8B, 0xC4, 0x32, 0x6A, 0xF5, 0xB9, 0x1B, 0x5F }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01 } +}, + + /* 256-bit keys */ +{ + 32, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xE0, 0x86, 0xAC, 0x45, 0x6B, 0x3C, 0xE5, 0x13, + 0xED, 0xF5, 0xDF, 0xDD, 0xD6, 0x3B, 0x71, 0x93 }, + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } +}, { + 32, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x50, 0x01, 0xB9, 0xF5, 0x21, 0xC1, 0xC1, 0x29, + 0x00, 0xD5, 0xEC, 0x98, 0x2B, 0x9E, 0xE8, 0x21 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } +}, + + /* 288-bit keys */ +{ + 36, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xE8, 0xF4, 0xAF, 0x2B, 0x21, 0xA0, 0x87, 0x9B, + 0x41, 0x95, 0xB9, 0x71, 0x75, 0x79, 0x04, 0x7C }, + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 } +}, { + 36, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xE6, 0xA6, 0xA5, 0xBC, 0x8B, 0x63, 0x6F, 0xE2, + 0xBD, 0xA7, 0xA7, 0x53, 0xAB, 0x40, 0x22, 0xE0 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01 } +}, + + /* 320-bit keys */ +{ + 40, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x17, 0x04, 0xD7, 0x2C, 0xC6, 0x85, 0x76, 0x02, + 0x4B, 0xCC, 0x39, 0x80, 0xD8, 0x22, 0xEA, 0xA4 }, + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } +}, { + 40, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x7A, 0x41, 0xE6, 0x7D, 0x4F, 0xD8, 0x64, 0xF0, + 0x44, 0xA8, 0x3C, 0x73, 0x81, 0x7E, 0x53, 0xD8 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } +} +#else + /**** Tweaked LTC_ANUBIS ****/ + /* 128 bit keys */ +{ + 16, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xB8, 0x35, 0xBD, 0xC3, 0x34, 0x82, 0x9D, 0x83, + 0x71, 0xBF, 0xA3, 0x71, 0xE4, 0xB3, 0xC4, 0xFD }, + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } +}, { + 16, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xE6, 0x14, 0x1E, 0xAF, 0xEB, 0xE0, 0x59, 0x3C, + 0x48, 0xE1, 0xCD, 0xF2, 0x1B, 0xBA, 0xA1, 0x89 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } +}, + + /* 160-bit keys */ +{ + 20, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x97, 0x59, 0x79, 0x4B, 0x5C, 0xA0, 0x70, 0x73, + 0x24, 0xEF, 0xB3, 0x58, 0x67, 0xCA, 0xD4, 0xB3 }, + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 } +}, { + 20, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xB8, 0x0D, 0xFB, 0x9B, 0xE4, 0xA1, 0x58, 0x87, + 0xB3, 0x76, 0xD5, 0x02, 0x18, 0x95, 0xC1, 0x2E }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01 } +}, + + /* 192-bit keys */ +{ + 24, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x7D, 0x62, 0x3B, 0x52, 0xC7, 0x4C, 0x64, 0xD8, + 0xEB, 0xC7, 0x2D, 0x57, 0x97, 0x85, 0x43, 0x8F }, + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } +}, { + 24, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xB1, 0x0A, 0x59, 0xDD, 0x5D, 0x5D, 0x8D, 0x67, + 0xEC, 0xEE, 0x4A, 0xC4, 0xBE, 0x4F, 0xA8, 0x4F }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } +}, + + /* 224-bit keys */ +{ + 28, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x68, 0x9E, 0x05, 0x94, 0x6A, 0x94, 0x43, 0x8F, + 0xE7, 0x8E, 0x37, 0x3D, 0x24, 0x97, 0x92, 0xF5 }, + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 } +}, { + 28, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xDD, 0xB7, 0xB0, 0xB4, 0xE9, 0xB4, 0x9B, 0x9C, + 0x38, 0x20, 0x25, 0x0B, 0x47, 0xC2, 0x1F, 0x89 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01 } +}, + + /* 256-bit keys */ +{ + 32, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x96, 0x00, 0xF0, 0x76, 0x91, 0x69, 0x29, 0x87, + 0xF5, 0xE5, 0x97, 0xDB, 0xDB, 0xAF, 0x1B, 0x0A }, + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } +}, { + 32, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x69, 0x9C, 0xAF, 0xDD, 0x94, 0xC7, 0xBC, 0x60, + 0x44, 0xFE, 0x02, 0x05, 0x8A, 0x6E, 0xEF, 0xBD }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } +}, + + /* 288-bit keys */ +{ + 36, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x0F, 0xC7, 0xA2, 0xC0, 0x11, 0x17, 0xAC, 0x43, + 0x52, 0x5E, 0xDF, 0x6C, 0xF3, 0x96, 0x33, 0x6C }, + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 } +}, { + 36, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xAD, 0x08, 0x4F, 0xED, 0x55, 0xA6, 0x94, 0x3E, + 0x7E, 0x5E, 0xED, 0x05, 0xA1, 0x9D, 0x41, 0xB4 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01 } +}, + + /* 320-bit keys */ +{ + 40, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xFE, 0xE2, 0x0E, 0x2A, 0x9D, 0xC5, 0x83, 0xBA, + 0xA3, 0xA6, 0xD6, 0xA6, 0xF2, 0xE8, 0x06, 0xA5 }, + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } +}, { + 40, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x86, 0x3D, 0xCC, 0x4A, 0x60, 0x34, 0x9C, 0x28, + 0xA7, 0xDA, 0xA4, 0x3B, 0x0A, 0xD7, 0xFD, 0xC7 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } +} +#endif +}; + int x, y; + unsigned char buf[2][16]; + symmetric_key skey; + + for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { + anubis_setup(tests[x].key, tests[x].keylen, 0, &skey); + anubis_ecb_encrypt(tests[x].pt, buf[0], &skey); + anubis_ecb_decrypt(buf[0], buf[1], &skey); + if (compare_testvector(buf[0], 16, tests[x].ct, 16, "Anubis Encrypt", x) || + compare_testvector(buf[1], 16, tests[x].pt, 16, "Anubis Decrypt", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + + for (y = 0; y < 1000; y++) anubis_ecb_encrypt(buf[0], buf[0], &skey); + for (y = 0; y < 1000; y++) anubis_ecb_decrypt(buf[0], buf[0], &skey); + if (compare_testvector(buf[0], 16, tests[x].ct, 16, "Anubis 1000", 1000)) { + return CRYPT_FAIL_TESTVECTOR; + } + + } + return CRYPT_OK; +#endif +} + +/** Terminate the context + @param skey The scheduled key +*/ +void anubis_done(symmetric_key *skey) +{ + LTC_UNUSED_PARAM(skey); +} + +/** + Gets suitable key size + @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. + @return CRYPT_OK if the input key size is acceptable. +*/ +int anubis_keysize(int *keysize) +{ + LTC_ARGCHK(keysize != NULL); + if (*keysize >= 40) { + *keysize = 40; + } else if (*keysize >= 36) { + *keysize = 36; + } else if (*keysize >= 32) { + *keysize = 32; + } else if (*keysize >= 28) { + *keysize = 28; + } else if (*keysize >= 24) { + *keysize = 24; + } else if (*keysize >= 20) { + *keysize = 20; + } else if (*keysize >= 16) { + *keysize = 16; + } else { + return CRYPT_INVALID_KEYSIZE; + } + return CRYPT_OK; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/ciphers/blowfish.c b/fsbl/lib/libtomcrypt/src/ciphers/blowfish.c new file mode 100644 index 000000000..a1945ae96 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/ciphers/blowfish.c @@ -0,0 +1,594 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +/** + @file blowfish.c + Implementation of the Blowfish block cipher, Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_BLOWFISH + +const struct ltc_cipher_descriptor blowfish_desc = +{ + "blowfish", + 0, + 8, 56, 8, 16, + &blowfish_setup, + &blowfish_ecb_encrypt, + &blowfish_ecb_decrypt, + &blowfish_test, + &blowfish_done, + &blowfish_keysize, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + +static const ulong32 ORIG_P[16 + 2] = { + 0x243F6A88UL, 0x85A308D3UL, 0x13198A2EUL, 0x03707344UL, + 0xA4093822UL, 0x299F31D0UL, 0x082EFA98UL, 0xEC4E6C89UL, + 0x452821E6UL, 0x38D01377UL, 0xBE5466CFUL, 0x34E90C6CUL, + 0xC0AC29B7UL, 0xC97C50DDUL, 0x3F84D5B5UL, 0xB5470917UL, + 0x9216D5D9UL, 0x8979FB1BUL +}; + +static const ulong32 ORIG_S[4][256] = { + { 0xD1310BA6UL, 0x98DFB5ACUL, 0x2FFD72DBUL, 0xD01ADFB7UL, + 0xB8E1AFEDUL, 0x6A267E96UL, 0xBA7C9045UL, 0xF12C7F99UL, + 0x24A19947UL, 0xB3916CF7UL, 0x0801F2E2UL, 0x858EFC16UL, + 0x636920D8UL, 0x71574E69UL, 0xA458FEA3UL, 0xF4933D7EUL, + 0x0D95748FUL, 0x728EB658UL, 0x718BCD58UL, 0x82154AEEUL, + 0x7B54A41DUL, 0xC25A59B5UL, 0x9C30D539UL, 0x2AF26013UL, + 0xC5D1B023UL, 0x286085F0UL, 0xCA417918UL, 0xB8DB38EFUL, + 0x8E79DCB0UL, 0x603A180EUL, 0x6C9E0E8BUL, 0xB01E8A3EUL, + 0xD71577C1UL, 0xBD314B27UL, 0x78AF2FDAUL, 0x55605C60UL, + 0xE65525F3UL, 0xAA55AB94UL, 0x57489862UL, 0x63E81440UL, + 0x55CA396AUL, 0x2AAB10B6UL, 0xB4CC5C34UL, 0x1141E8CEUL, + 0xA15486AFUL, 0x7C72E993UL, 0xB3EE1411UL, 0x636FBC2AUL, + 0x2BA9C55DUL, 0x741831F6UL, 0xCE5C3E16UL, 0x9B87931EUL, + 0xAFD6BA33UL, 0x6C24CF5CUL, 0x7A325381UL, 0x28958677UL, + 0x3B8F4898UL, 0x6B4BB9AFUL, 0xC4BFE81BUL, 0x66282193UL, + 0x61D809CCUL, 0xFB21A991UL, 0x487CAC60UL, 0x5DEC8032UL, + 0xEF845D5DUL, 0xE98575B1UL, 0xDC262302UL, 0xEB651B88UL, + 0x23893E81UL, 0xD396ACC5UL, 0x0F6D6FF3UL, 0x83F44239UL, + 0x2E0B4482UL, 0xA4842004UL, 0x69C8F04AUL, 0x9E1F9B5EUL, + 0x21C66842UL, 0xF6E96C9AUL, 0x670C9C61UL, 0xABD388F0UL, + 0x6A51A0D2UL, 0xD8542F68UL, 0x960FA728UL, 0xAB5133A3UL, + 0x6EEF0B6CUL, 0x137A3BE4UL, 0xBA3BF050UL, 0x7EFB2A98UL, + 0xA1F1651DUL, 0x39AF0176UL, 0x66CA593EUL, 0x82430E88UL, + 0x8CEE8619UL, 0x456F9FB4UL, 0x7D84A5C3UL, 0x3B8B5EBEUL, + 0xE06F75D8UL, 0x85C12073UL, 0x401A449FUL, 0x56C16AA6UL, + 0x4ED3AA62UL, 0x363F7706UL, 0x1BFEDF72UL, 0x429B023DUL, + 0x37D0D724UL, 0xD00A1248UL, 0xDB0FEAD3UL, 0x49F1C09BUL, + 0x075372C9UL, 0x80991B7BUL, 0x25D479D8UL, 0xF6E8DEF7UL, + 0xE3FE501AUL, 0xB6794C3BUL, 0x976CE0BDUL, 0x04C006BAUL, + 0xC1A94FB6UL, 0x409F60C4UL, 0x5E5C9EC2UL, 0x196A2463UL, + 0x68FB6FAFUL, 0x3E6C53B5UL, 0x1339B2EBUL, 0x3B52EC6FUL, + 0x6DFC511FUL, 0x9B30952CUL, 0xCC814544UL, 0xAF5EBD09UL, + 0xBEE3D004UL, 0xDE334AFDUL, 0x660F2807UL, 0x192E4BB3UL, + 0xC0CBA857UL, 0x45C8740FUL, 0xD20B5F39UL, 0xB9D3FBDBUL, + 0x5579C0BDUL, 0x1A60320AUL, 0xD6A100C6UL, 0x402C7279UL, + 0x679F25FEUL, 0xFB1FA3CCUL, 0x8EA5E9F8UL, 0xDB3222F8UL, + 0x3C7516DFUL, 0xFD616B15UL, 0x2F501EC8UL, 0xAD0552ABUL, + 0x323DB5FAUL, 0xFD238760UL, 0x53317B48UL, 0x3E00DF82UL, + 0x9E5C57BBUL, 0xCA6F8CA0UL, 0x1A87562EUL, 0xDF1769DBUL, + 0xD542A8F6UL, 0x287EFFC3UL, 0xAC6732C6UL, 0x8C4F5573UL, + 0x695B27B0UL, 0xBBCA58C8UL, 0xE1FFA35DUL, 0xB8F011A0UL, + 0x10FA3D98UL, 0xFD2183B8UL, 0x4AFCB56CUL, 0x2DD1D35BUL, + 0x9A53E479UL, 0xB6F84565UL, 0xD28E49BCUL, 0x4BFB9790UL, + 0xE1DDF2DAUL, 0xA4CB7E33UL, 0x62FB1341UL, 0xCEE4C6E8UL, + 0xEF20CADAUL, 0x36774C01UL, 0xD07E9EFEUL, 0x2BF11FB4UL, + 0x95DBDA4DUL, 0xAE909198UL, 0xEAAD8E71UL, 0x6B93D5A0UL, + 0xD08ED1D0UL, 0xAFC725E0UL, 0x8E3C5B2FUL, 0x8E7594B7UL, + 0x8FF6E2FBUL, 0xF2122B64UL, 0x8888B812UL, 0x900DF01CUL, + 0x4FAD5EA0UL, 0x688FC31CUL, 0xD1CFF191UL, 0xB3A8C1ADUL, + 0x2F2F2218UL, 0xBE0E1777UL, 0xEA752DFEUL, 0x8B021FA1UL, + 0xE5A0CC0FUL, 0xB56F74E8UL, 0x18ACF3D6UL, 0xCE89E299UL, + 0xB4A84FE0UL, 0xFD13E0B7UL, 0x7CC43B81UL, 0xD2ADA8D9UL, + 0x165FA266UL, 0x80957705UL, 0x93CC7314UL, 0x211A1477UL, + 0xE6AD2065UL, 0x77B5FA86UL, 0xC75442F5UL, 0xFB9D35CFUL, + 0xEBCDAF0CUL, 0x7B3E89A0UL, 0xD6411BD3UL, 0xAE1E7E49UL, + 0x00250E2DUL, 0x2071B35EUL, 0x226800BBUL, 0x57B8E0AFUL, + 0x2464369BUL, 0xF009B91EUL, 0x5563911DUL, 0x59DFA6AAUL, + 0x78C14389UL, 0xD95A537FUL, 0x207D5BA2UL, 0x02E5B9C5UL, + 0x83260376UL, 0x6295CFA9UL, 0x11C81968UL, 0x4E734A41UL, + 0xB3472DCAUL, 0x7B14A94AUL, 0x1B510052UL, 0x9A532915UL, + 0xD60F573FUL, 0xBC9BC6E4UL, 0x2B60A476UL, 0x81E67400UL, + 0x08BA6FB5UL, 0x571BE91FUL, 0xF296EC6BUL, 0x2A0DD915UL, + 0xB6636521UL, 0xE7B9F9B6UL, 0xFF34052EUL, 0xC5855664UL, + 0x53B02D5DUL, 0xA99F8FA1UL, 0x08BA4799UL, 0x6E85076AUL }, + { 0x4B7A70E9UL, 0xB5B32944UL, 0xDB75092EUL, 0xC4192623UL, + 0xAD6EA6B0UL, 0x49A7DF7DUL, 0x9CEE60B8UL, 0x8FEDB266UL, + 0xECAA8C71UL, 0x699A17FFUL, 0x5664526CUL, 0xC2B19EE1UL, + 0x193602A5UL, 0x75094C29UL, 0xA0591340UL, 0xE4183A3EUL, + 0x3F54989AUL, 0x5B429D65UL, 0x6B8FE4D6UL, 0x99F73FD6UL, + 0xA1D29C07UL, 0xEFE830F5UL, 0x4D2D38E6UL, 0xF0255DC1UL, + 0x4CDD2086UL, 0x8470EB26UL, 0x6382E9C6UL, 0x021ECC5EUL, + 0x09686B3FUL, 0x3EBAEFC9UL, 0x3C971814UL, 0x6B6A70A1UL, + 0x687F3584UL, 0x52A0E286UL, 0xB79C5305UL, 0xAA500737UL, + 0x3E07841CUL, 0x7FDEAE5CUL, 0x8E7D44ECUL, 0x5716F2B8UL, + 0xB03ADA37UL, 0xF0500C0DUL, 0xF01C1F04UL, 0x0200B3FFUL, + 0xAE0CF51AUL, 0x3CB574B2UL, 0x25837A58UL, 0xDC0921BDUL, + 0xD19113F9UL, 0x7CA92FF6UL, 0x94324773UL, 0x22F54701UL, + 0x3AE5E581UL, 0x37C2DADCUL, 0xC8B57634UL, 0x9AF3DDA7UL, + 0xA9446146UL, 0x0FD0030EUL, 0xECC8C73EUL, 0xA4751E41UL, + 0xE238CD99UL, 0x3BEA0E2FUL, 0x3280BBA1UL, 0x183EB331UL, + 0x4E548B38UL, 0x4F6DB908UL, 0x6F420D03UL, 0xF60A04BFUL, + 0x2CB81290UL, 0x24977C79UL, 0x5679B072UL, 0xBCAF89AFUL, + 0xDE9A771FUL, 0xD9930810UL, 0xB38BAE12UL, 0xDCCF3F2EUL, + 0x5512721FUL, 0x2E6B7124UL, 0x501ADDE6UL, 0x9F84CD87UL, + 0x7A584718UL, 0x7408DA17UL, 0xBC9F9ABCUL, 0xE94B7D8CUL, + 0xEC7AEC3AUL, 0xDB851DFAUL, 0x63094366UL, 0xC464C3D2UL, + 0xEF1C1847UL, 0x3215D908UL, 0xDD433B37UL, 0x24C2BA16UL, + 0x12A14D43UL, 0x2A65C451UL, 0x50940002UL, 0x133AE4DDUL, + 0x71DFF89EUL, 0x10314E55UL, 0x81AC77D6UL, 0x5F11199BUL, + 0x043556F1UL, 0xD7A3C76BUL, 0x3C11183BUL, 0x5924A509UL, + 0xF28FE6EDUL, 0x97F1FBFAUL, 0x9EBABF2CUL, 0x1E153C6EUL, + 0x86E34570UL, 0xEAE96FB1UL, 0x860E5E0AUL, 0x5A3E2AB3UL, + 0x771FE71CUL, 0x4E3D06FAUL, 0x2965DCB9UL, 0x99E71D0FUL, + 0x803E89D6UL, 0x5266C825UL, 0x2E4CC978UL, 0x9C10B36AUL, + 0xC6150EBAUL, 0x94E2EA78UL, 0xA5FC3C53UL, 0x1E0A2DF4UL, + 0xF2F74EA7UL, 0x361D2B3DUL, 0x1939260FUL, 0x19C27960UL, + 0x5223A708UL, 0xF71312B6UL, 0xEBADFE6EUL, 0xEAC31F66UL, + 0xE3BC4595UL, 0xA67BC883UL, 0xB17F37D1UL, 0x018CFF28UL, + 0xC332DDEFUL, 0xBE6C5AA5UL, 0x65582185UL, 0x68AB9802UL, + 0xEECEA50FUL, 0xDB2F953BUL, 0x2AEF7DADUL, 0x5B6E2F84UL, + 0x1521B628UL, 0x29076170UL, 0xECDD4775UL, 0x619F1510UL, + 0x13CCA830UL, 0xEB61BD96UL, 0x0334FE1EUL, 0xAA0363CFUL, + 0xB5735C90UL, 0x4C70A239UL, 0xD59E9E0BUL, 0xCBAADE14UL, + 0xEECC86BCUL, 0x60622CA7UL, 0x9CAB5CABUL, 0xB2F3846EUL, + 0x648B1EAFUL, 0x19BDF0CAUL, 0xA02369B9UL, 0x655ABB50UL, + 0x40685A32UL, 0x3C2AB4B3UL, 0x319EE9D5UL, 0xC021B8F7UL, + 0x9B540B19UL, 0x875FA099UL, 0x95F7997EUL, 0x623D7DA8UL, + 0xF837889AUL, 0x97E32D77UL, 0x11ED935FUL, 0x16681281UL, + 0x0E358829UL, 0xC7E61FD6UL, 0x96DEDFA1UL, 0x7858BA99UL, + 0x57F584A5UL, 0x1B227263UL, 0x9B83C3FFUL, 0x1AC24696UL, + 0xCDB30AEBUL, 0x532E3054UL, 0x8FD948E4UL, 0x6DBC3128UL, + 0x58EBF2EFUL, 0x34C6FFEAUL, 0xFE28ED61UL, 0xEE7C3C73UL, + 0x5D4A14D9UL, 0xE864B7E3UL, 0x42105D14UL, 0x203E13E0UL, + 0x45EEE2B6UL, 0xA3AAABEAUL, 0xDB6C4F15UL, 0xFACB4FD0UL, + 0xC742F442UL, 0xEF6ABBB5UL, 0x654F3B1DUL, 0x41CD2105UL, + 0xD81E799EUL, 0x86854DC7UL, 0xE44B476AUL, 0x3D816250UL, + 0xCF62A1F2UL, 0x5B8D2646UL, 0xFC8883A0UL, 0xC1C7B6A3UL, + 0x7F1524C3UL, 0x69CB7492UL, 0x47848A0BUL, 0x5692B285UL, + 0x095BBF00UL, 0xAD19489DUL, 0x1462B174UL, 0x23820E00UL, + 0x58428D2AUL, 0x0C55F5EAUL, 0x1DADF43EUL, 0x233F7061UL, + 0x3372F092UL, 0x8D937E41UL, 0xD65FECF1UL, 0x6C223BDBUL, + 0x7CDE3759UL, 0xCBEE7460UL, 0x4085F2A7UL, 0xCE77326EUL, + 0xA6078084UL, 0x19F8509EUL, 0xE8EFD855UL, 0x61D99735UL, + 0xA969A7AAUL, 0xC50C06C2UL, 0x5A04ABFCUL, 0x800BCADCUL, + 0x9E447A2EUL, 0xC3453484UL, 0xFDD56705UL, 0x0E1E9EC9UL, + 0xDB73DBD3UL, 0x105588CDUL, 0x675FDA79UL, 0xE3674340UL, + 0xC5C43465UL, 0x713E38D8UL, 0x3D28F89EUL, 0xF16DFF20UL, + 0x153E21E7UL, 0x8FB03D4AUL, 0xE6E39F2BUL, 0xDB83ADF7UL }, + { 0xE93D5A68UL, 0x948140F7UL, 0xF64C261CUL, 0x94692934UL, + 0x411520F7UL, 0x7602D4F7UL, 0xBCF46B2EUL, 0xD4A20068UL, + 0xD4082471UL, 0x3320F46AUL, 0x43B7D4B7UL, 0x500061AFUL, + 0x1E39F62EUL, 0x97244546UL, 0x14214F74UL, 0xBF8B8840UL, + 0x4D95FC1DUL, 0x96B591AFUL, 0x70F4DDD3UL, 0x66A02F45UL, + 0xBFBC09ECUL, 0x03BD9785UL, 0x7FAC6DD0UL, 0x31CB8504UL, + 0x96EB27B3UL, 0x55FD3941UL, 0xDA2547E6UL, 0xABCA0A9AUL, + 0x28507825UL, 0x530429F4UL, 0x0A2C86DAUL, 0xE9B66DFBUL, + 0x68DC1462UL, 0xD7486900UL, 0x680EC0A4UL, 0x27A18DEEUL, + 0x4F3FFEA2UL, 0xE887AD8CUL, 0xB58CE006UL, 0x7AF4D6B6UL, + 0xAACE1E7CUL, 0xD3375FECUL, 0xCE78A399UL, 0x406B2A42UL, + 0x20FE9E35UL, 0xD9F385B9UL, 0xEE39D7ABUL, 0x3B124E8BUL, + 0x1DC9FAF7UL, 0x4B6D1856UL, 0x26A36631UL, 0xEAE397B2UL, + 0x3A6EFA74UL, 0xDD5B4332UL, 0x6841E7F7UL, 0xCA7820FBUL, + 0xFB0AF54EUL, 0xD8FEB397UL, 0x454056ACUL, 0xBA489527UL, + 0x55533A3AUL, 0x20838D87UL, 0xFE6BA9B7UL, 0xD096954BUL, + 0x55A867BCUL, 0xA1159A58UL, 0xCCA92963UL, 0x99E1DB33UL, + 0xA62A4A56UL, 0x3F3125F9UL, 0x5EF47E1CUL, 0x9029317CUL, + 0xFDF8E802UL, 0x04272F70UL, 0x80BB155CUL, 0x05282CE3UL, + 0x95C11548UL, 0xE4C66D22UL, 0x48C1133FUL, 0xC70F86DCUL, + 0x07F9C9EEUL, 0x41041F0FUL, 0x404779A4UL, 0x5D886E17UL, + 0x325F51EBUL, 0xD59BC0D1UL, 0xF2BCC18FUL, 0x41113564UL, + 0x257B7834UL, 0x602A9C60UL, 0xDFF8E8A3UL, 0x1F636C1BUL, + 0x0E12B4C2UL, 0x02E1329EUL, 0xAF664FD1UL, 0xCAD18115UL, + 0x6B2395E0UL, 0x333E92E1UL, 0x3B240B62UL, 0xEEBEB922UL, + 0x85B2A20EUL, 0xE6BA0D99UL, 0xDE720C8CUL, 0x2DA2F728UL, + 0xD0127845UL, 0x95B794FDUL, 0x647D0862UL, 0xE7CCF5F0UL, + 0x5449A36FUL, 0x877D48FAUL, 0xC39DFD27UL, 0xF33E8D1EUL, + 0x0A476341UL, 0x992EFF74UL, 0x3A6F6EABUL, 0xF4F8FD37UL, + 0xA812DC60UL, 0xA1EBDDF8UL, 0x991BE14CUL, 0xDB6E6B0DUL, + 0xC67B5510UL, 0x6D672C37UL, 0x2765D43BUL, 0xDCD0E804UL, + 0xF1290DC7UL, 0xCC00FFA3UL, 0xB5390F92UL, 0x690FED0BUL, + 0x667B9FFBUL, 0xCEDB7D9CUL, 0xA091CF0BUL, 0xD9155EA3UL, + 0xBB132F88UL, 0x515BAD24UL, 0x7B9479BFUL, 0x763BD6EBUL, + 0x37392EB3UL, 0xCC115979UL, 0x8026E297UL, 0xF42E312DUL, + 0x6842ADA7UL, 0xC66A2B3BUL, 0x12754CCCUL, 0x782EF11CUL, + 0x6A124237UL, 0xB79251E7UL, 0x06A1BBE6UL, 0x4BFB6350UL, + 0x1A6B1018UL, 0x11CAEDFAUL, 0x3D25BDD8UL, 0xE2E1C3C9UL, + 0x44421659UL, 0x0A121386UL, 0xD90CEC6EUL, 0xD5ABEA2AUL, + 0x64AF674EUL, 0xDA86A85FUL, 0xBEBFE988UL, 0x64E4C3FEUL, + 0x9DBC8057UL, 0xF0F7C086UL, 0x60787BF8UL, 0x6003604DUL, + 0xD1FD8346UL, 0xF6381FB0UL, 0x7745AE04UL, 0xD736FCCCUL, + 0x83426B33UL, 0xF01EAB71UL, 0xB0804187UL, 0x3C005E5FUL, + 0x77A057BEUL, 0xBDE8AE24UL, 0x55464299UL, 0xBF582E61UL, + 0x4E58F48FUL, 0xF2DDFDA2UL, 0xF474EF38UL, 0x8789BDC2UL, + 0x5366F9C3UL, 0xC8B38E74UL, 0xB475F255UL, 0x46FCD9B9UL, + 0x7AEB2661UL, 0x8B1DDF84UL, 0x846A0E79UL, 0x915F95E2UL, + 0x466E598EUL, 0x20B45770UL, 0x8CD55591UL, 0xC902DE4CUL, + 0xB90BACE1UL, 0xBB8205D0UL, 0x11A86248UL, 0x7574A99EUL, + 0xB77F19B6UL, 0xE0A9DC09UL, 0x662D09A1UL, 0xC4324633UL, + 0xE85A1F02UL, 0x09F0BE8CUL, 0x4A99A025UL, 0x1D6EFE10UL, + 0x1AB93D1DUL, 0x0BA5A4DFUL, 0xA186F20FUL, 0x2868F169UL, + 0xDCB7DA83UL, 0x573906FEUL, 0xA1E2CE9BUL, 0x4FCD7F52UL, + 0x50115E01UL, 0xA70683FAUL, 0xA002B5C4UL, 0x0DE6D027UL, + 0x9AF88C27UL, 0x773F8641UL, 0xC3604C06UL, 0x61A806B5UL, + 0xF0177A28UL, 0xC0F586E0UL, 0x006058AAUL, 0x30DC7D62UL, + 0x11E69ED7UL, 0x2338EA63UL, 0x53C2DD94UL, 0xC2C21634UL, + 0xBBCBEE56UL, 0x90BCB6DEUL, 0xEBFC7DA1UL, 0xCE591D76UL, + 0x6F05E409UL, 0x4B7C0188UL, 0x39720A3DUL, 0x7C927C24UL, + 0x86E3725FUL, 0x724D9DB9UL, 0x1AC15BB4UL, 0xD39EB8FCUL, + 0xED545578UL, 0x08FCA5B5UL, 0xD83D7CD3UL, 0x4DAD0FC4UL, + 0x1E50EF5EUL, 0xB161E6F8UL, 0xA28514D9UL, 0x6C51133CUL, + 0x6FD5C7E7UL, 0x56E14EC4UL, 0x362ABFCEUL, 0xDDC6C837UL, + 0xD79A3234UL, 0x92638212UL, 0x670EFA8EUL, 0x406000E0UL }, + { 0x3A39CE37UL, 0xD3FAF5CFUL, 0xABC27737UL, 0x5AC52D1BUL, + 0x5CB0679EUL, 0x4FA33742UL, 0xD3822740UL, 0x99BC9BBEUL, + 0xD5118E9DUL, 0xBF0F7315UL, 0xD62D1C7EUL, 0xC700C47BUL, + 0xB78C1B6BUL, 0x21A19045UL, 0xB26EB1BEUL, 0x6A366EB4UL, + 0x5748AB2FUL, 0xBC946E79UL, 0xC6A376D2UL, 0x6549C2C8UL, + 0x530FF8EEUL, 0x468DDE7DUL, 0xD5730A1DUL, 0x4CD04DC6UL, + 0x2939BBDBUL, 0xA9BA4650UL, 0xAC9526E8UL, 0xBE5EE304UL, + 0xA1FAD5F0UL, 0x6A2D519AUL, 0x63EF8CE2UL, 0x9A86EE22UL, + 0xC089C2B8UL, 0x43242EF6UL, 0xA51E03AAUL, 0x9CF2D0A4UL, + 0x83C061BAUL, 0x9BE96A4DUL, 0x8FE51550UL, 0xBA645BD6UL, + 0x2826A2F9UL, 0xA73A3AE1UL, 0x4BA99586UL, 0xEF5562E9UL, + 0xC72FEFD3UL, 0xF752F7DAUL, 0x3F046F69UL, 0x77FA0A59UL, + 0x80E4A915UL, 0x87B08601UL, 0x9B09E6ADUL, 0x3B3EE593UL, + 0xE990FD5AUL, 0x9E34D797UL, 0x2CF0B7D9UL, 0x022B8B51UL, + 0x96D5AC3AUL, 0x017DA67DUL, 0xD1CF3ED6UL, 0x7C7D2D28UL, + 0x1F9F25CFUL, 0xADF2B89BUL, 0x5AD6B472UL, 0x5A88F54CUL, + 0xE029AC71UL, 0xE019A5E6UL, 0x47B0ACFDUL, 0xED93FA9BUL, + 0xE8D3C48DUL, 0x283B57CCUL, 0xF8D56629UL, 0x79132E28UL, + 0x785F0191UL, 0xED756055UL, 0xF7960E44UL, 0xE3D35E8CUL, + 0x15056DD4UL, 0x88F46DBAUL, 0x03A16125UL, 0x0564F0BDUL, + 0xC3EB9E15UL, 0x3C9057A2UL, 0x97271AECUL, 0xA93A072AUL, + 0x1B3F6D9BUL, 0x1E6321F5UL, 0xF59C66FBUL, 0x26DCF319UL, + 0x7533D928UL, 0xB155FDF5UL, 0x03563482UL, 0x8ABA3CBBUL, + 0x28517711UL, 0xC20AD9F8UL, 0xABCC5167UL, 0xCCAD925FUL, + 0x4DE81751UL, 0x3830DC8EUL, 0x379D5862UL, 0x9320F991UL, + 0xEA7A90C2UL, 0xFB3E7BCEUL, 0x5121CE64UL, 0x774FBE32UL, + 0xA8B6E37EUL, 0xC3293D46UL, 0x48DE5369UL, 0x6413E680UL, + 0xA2AE0810UL, 0xDD6DB224UL, 0x69852DFDUL, 0x09072166UL, + 0xB39A460AUL, 0x6445C0DDUL, 0x586CDECFUL, 0x1C20C8AEUL, + 0x5BBEF7DDUL, 0x1B588D40UL, 0xCCD2017FUL, 0x6BB4E3BBUL, + 0xDDA26A7EUL, 0x3A59FF45UL, 0x3E350A44UL, 0xBCB4CDD5UL, + 0x72EACEA8UL, 0xFA6484BBUL, 0x8D6612AEUL, 0xBF3C6F47UL, + 0xD29BE463UL, 0x542F5D9EUL, 0xAEC2771BUL, 0xF64E6370UL, + 0x740E0D8DUL, 0xE75B1357UL, 0xF8721671UL, 0xAF537D5DUL, + 0x4040CB08UL, 0x4EB4E2CCUL, 0x34D2466AUL, 0x0115AF84UL, + 0xE1B00428UL, 0x95983A1DUL, 0x06B89FB4UL, 0xCE6EA048UL, + 0x6F3F3B82UL, 0x3520AB82UL, 0x011A1D4BUL, 0x277227F8UL, + 0x611560B1UL, 0xE7933FDCUL, 0xBB3A792BUL, 0x344525BDUL, + 0xA08839E1UL, 0x51CE794BUL, 0x2F32C9B7UL, 0xA01FBAC9UL, + 0xE01CC87EUL, 0xBCC7D1F6UL, 0xCF0111C3UL, 0xA1E8AAC7UL, + 0x1A908749UL, 0xD44FBD9AUL, 0xD0DADECBUL, 0xD50ADA38UL, + 0x0339C32AUL, 0xC6913667UL, 0x8DF9317CUL, 0xE0B12B4FUL, + 0xF79E59B7UL, 0x43F5BB3AUL, 0xF2D519FFUL, 0x27D9459CUL, + 0xBF97222CUL, 0x15E6FC2AUL, 0x0F91FC71UL, 0x9B941525UL, + 0xFAE59361UL, 0xCEB69CEBUL, 0xC2A86459UL, 0x12BAA8D1UL, + 0xB6C1075EUL, 0xE3056A0CUL, 0x10D25065UL, 0xCB03A442UL, + 0xE0EC6E0EUL, 0x1698DB3BUL, 0x4C98A0BEUL, 0x3278E964UL, + 0x9F1F9532UL, 0xE0D392DFUL, 0xD3A0342BUL, 0x8971F21EUL, + 0x1B0A7441UL, 0x4BA3348CUL, 0xC5BE7120UL, 0xC37632D8UL, + 0xDF359F8DUL, 0x9B992F2EUL, 0xE60B6F47UL, 0x0FE3F11DUL, + 0xE54CDA54UL, 0x1EDAD891UL, 0xCE6279CFUL, 0xCD3E7E6FUL, + 0x1618B166UL, 0xFD2C1D05UL, 0x848FD2C5UL, 0xF6FB2299UL, + 0xF523F357UL, 0xA6327623UL, 0x93A83531UL, 0x56CCCD02UL, + 0xACF08162UL, 0x5A75EBB5UL, 0x6E163697UL, 0x88D273CCUL, + 0xDE966292UL, 0x81B949D0UL, 0x4C50901BUL, 0x71C65614UL, + 0xE6C6C7BDUL, 0x327A140AUL, 0x45E1D006UL, 0xC3F27B9AUL, + 0xC9AA53FDUL, 0x62A80F00UL, 0xBB25BFE2UL, 0x35BDD2F6UL, + 0x71126905UL, 0xB2040222UL, 0xB6CBCF7CUL, 0xCD769C2BUL, + 0x53113EC0UL, 0x1640E3D3UL, 0x38ABBD60UL, 0x2547ADF0UL, + 0xBA38209CUL, 0xF746CE76UL, 0x77AFA1C5UL, 0x20756060UL, + 0x85CBFE4EUL, 0x8AE88DD8UL, 0x7AAAF9B0UL, 0x4CF9AA7EUL, + 0x1948C25CUL, 0x02FB8A8CUL, 0x01C36AE4UL, 0xD6EBE1F9UL, + 0x90D4F869UL, 0xA65CDEA0UL, 0x3F09252DUL, 0xC208E69FUL, + 0xB74E6132UL, 0xCE77E25BUL, 0x578FDFE3UL, 0x3AC372E6UL } +}; + + /** + Initialize the Blowfish block cipher + @param key The symmetric key you wish to pass + @param keylen The key length in bytes + @param num_rounds The number of rounds desired (0 for default) + @param skey The key in as scheduled by this function. + @return CRYPT_OK if successful + */ +int blowfish_setup(const unsigned char *key, int keylen, int num_rounds, + symmetric_key *skey) +{ + ulong32 x, y, z, A; + unsigned char B[8]; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(skey != NULL); + + /* check key length */ + if (keylen < 8 || keylen > 56) { + return CRYPT_INVALID_KEYSIZE; + } + + /* check rounds */ + if (num_rounds != 0 && num_rounds != 16) { + return CRYPT_INVALID_ROUNDS; + } + + /* load in key bytes (Supplied by David Hopwood) */ + for (x = y = 0; x < 18; x++) { + A = 0; + for (z = 0; z < 4; z++) { + A = (A << 8) | ((ulong32)key[y++] & 255); + if (y == (ulong32)keylen) { + y = 0; + } + } + skey->blowfish.K[x] = ORIG_P[x] ^ A; + } + + /* copy sboxes */ + for (x = 0; x < 4; x++) { + for (y = 0; y < 256; y++) { + skey->blowfish.S[x][y] = ORIG_S[x][y]; + } + } + + /* encrypt K array */ + for (x = 0; x < 8; x++) { + B[x] = 0; + } + + for (x = 0; x < 18; x += 2) { + /* encrypt it */ + blowfish_ecb_encrypt(B, B, skey); + /* copy it */ + LOAD32H(skey->blowfish.K[x], &B[0]); + LOAD32H(skey->blowfish.K[x+1], &B[4]); + } + + /* encrypt S array */ + for (x = 0; x < 4; x++) { + for (y = 0; y < 256; y += 2) { + /* encrypt it */ + blowfish_ecb_encrypt(B, B, skey); + /* copy it */ + LOAD32H(skey->blowfish.S[x][y], &B[0]); + LOAD32H(skey->blowfish.S[x][y+1], &B[4]); + } + } + +#ifdef LTC_CLEAN_STACK + zeromem(B, sizeof(B)); +#endif + + return CRYPT_OK; +} + +#ifndef __GNUC__ +#define F(x) ((S1[byte(x,3)] + S2[byte(x,2)]) ^ S3[byte(x,1)]) + S4[byte(x,0)] +#else +#define F(x) ((skey->blowfish.S[0][byte(x,3)] + skey->blowfish.S[1][byte(x,2)]) ^ skey->blowfish.S[2][byte(x,1)]) + skey->blowfish.S[3][byte(x,0)] +#endif + +/** + Encrypts a block of text with Blowfish + @param pt The input plaintext (8 bytes) + @param ct The output ciphertext (8 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +#ifdef LTC_CLEAN_STACK +static int _blowfish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +#else +int blowfish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +#endif +{ + ulong32 L, R; + int r; +#ifndef __GNUC__ + ulong32 *S1, *S2, *S3, *S4; +#endif + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + +#ifndef __GNUC__ + S1 = skey->blowfish.S[0]; + S2 = skey->blowfish.S[1]; + S3 = skey->blowfish.S[2]; + S4 = skey->blowfish.S[3]; +#endif + + /* load it */ + LOAD32H(L, &pt[0]); + LOAD32H(R, &pt[4]); + + /* do 16 rounds */ + for (r = 0; r < 16; ) { + L ^= skey->blowfish.K[r++]; R ^= F(L); + R ^= skey->blowfish.K[r++]; L ^= F(R); + L ^= skey->blowfish.K[r++]; R ^= F(L); + R ^= skey->blowfish.K[r++]; L ^= F(R); + } + + /* last keying */ + R ^= skey->blowfish.K[17]; + L ^= skey->blowfish.K[16]; + + /* store */ + STORE32H(R, &ct[0]); + STORE32H(L, &ct[4]); + + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +int blowfish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +{ + int err = _blowfish_ecb_encrypt(pt, ct, skey); + burn_stack(sizeof(ulong32) * 2 + sizeof(int)); + return err; +} +#endif + +/** + Decrypts a block of text with Blowfish + @param ct The input ciphertext (8 bytes) + @param pt The output plaintext (8 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +#ifdef LTC_CLEAN_STACK +static int _blowfish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +#else +int blowfish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +#endif +{ + ulong32 L, R; + int r; +#ifndef __GNUC__ + ulong32 *S1, *S2, *S3, *S4; +#endif + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + +#ifndef __GNUC__ + S1 = skey->blowfish.S[0]; + S2 = skey->blowfish.S[1]; + S3 = skey->blowfish.S[2]; + S4 = skey->blowfish.S[3]; +#endif + + /* load it */ + LOAD32H(R, &ct[0]); + LOAD32H(L, &ct[4]); + + /* undo last keying */ + R ^= skey->blowfish.K[17]; + L ^= skey->blowfish.K[16]; + + /* do 16 rounds */ + for (r = 15; r > 0; ) { + L ^= F(R); R ^= skey->blowfish.K[r--]; + R ^= F(L); L ^= skey->blowfish.K[r--]; + L ^= F(R); R ^= skey->blowfish.K[r--]; + R ^= F(L); L ^= skey->blowfish.K[r--]; + } + + /* store */ + STORE32H(L, &pt[0]); + STORE32H(R, &pt[4]); + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +int blowfish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +{ + int err = _blowfish_ecb_decrypt(ct, pt, skey); + burn_stack(sizeof(ulong32) * 2 + sizeof(int)); + return err; +} +#endif + + +/** + Performs a self-test of the Blowfish block cipher + @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled +*/ +int blowfish_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + int err; + symmetric_key key; + static const struct { + unsigned char key[8], pt[8], ct[8]; + } tests[] = { + { + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + { 0x4E, 0xF9, 0x97, 0x45, 0x61, 0x98, 0xDD, 0x78} + }, + { + { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, + { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, + { 0x51, 0x86, 0x6F, 0xD5, 0xB8, 0x5E, 0xCB, 0x8A} + }, + { + { 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}, + { 0x7D, 0x85, 0x6F, 0x9A, 0x61, 0x30, 0x63, 0xF2} + } + }; + unsigned char tmp[2][8]; + int x, y; + + for (x = 0; x < (int)(sizeof(tests) / sizeof(tests[0])); x++) { + /* setup key */ + if ((err = blowfish_setup(tests[x].key, 8, 16, &key)) != CRYPT_OK) { + return err; + } + + /* encrypt and decrypt */ + blowfish_ecb_encrypt(tests[x].pt, tmp[0], &key); + blowfish_ecb_decrypt(tmp[0], tmp[1], &key); + + /* compare */ + if ((compare_testvector(tmp[0], 8, tests[x].ct, 8, "Blowfish Encrypt", x) != 0) || + (compare_testvector(tmp[1], 8, tests[x].pt, 8, "Blowfish Decrypt", x) != 0)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 8; y++) tmp[0][y] = 0; + for (y = 0; y < 1000; y++) blowfish_ecb_encrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 1000; y++) blowfish_ecb_decrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 8; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; + } + return CRYPT_OK; + #endif +} + +/** Terminate the context + @param skey The scheduled key +*/ +void blowfish_done(symmetric_key *skey) +{ + LTC_UNUSED_PARAM(skey); +} + +/** + Gets suitable key size + @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. + @return CRYPT_OK if the input key size is acceptable. +*/ +int blowfish_keysize(int *keysize) +{ + LTC_ARGCHK(keysize != NULL); + + if (*keysize < 8) { + return CRYPT_INVALID_KEYSIZE; + } else if (*keysize > 56) { + *keysize = 56; + } + return CRYPT_OK; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/ciphers/camellia.c b/fsbl/lib/libtomcrypt/src/ciphers/camellia.c new file mode 100644 index 000000000..0a75087b4 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/ciphers/camellia.c @@ -0,0 +1,726 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file camellia.c + Implementation by Tom St Denis of Elliptic Semiconductor +*/ + +#include "tomcrypt.h" + +#ifdef LTC_CAMELLIA + +const struct ltc_cipher_descriptor camellia_desc = { + "camellia", + 23, + 16, 32, 16, 18, + &camellia_setup, + &camellia_ecb_encrypt, + &camellia_ecb_decrypt, + &camellia_test, + &camellia_done, + &camellia_keysize, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + +static const ulong32 SP1110[] = { +0x70707000, 0x82828200, 0x2c2c2c00, 0xececec00, 0xb3b3b300, 0x27272700, 0xc0c0c000, 0xe5e5e500, +0xe4e4e400, 0x85858500, 0x57575700, 0x35353500, 0xeaeaea00, 0x0c0c0c00, 0xaeaeae00, 0x41414100, +0x23232300, 0xefefef00, 0x6b6b6b00, 0x93939300, 0x45454500, 0x19191900, 0xa5a5a500, 0x21212100, +0xededed00, 0x0e0e0e00, 0x4f4f4f00, 0x4e4e4e00, 0x1d1d1d00, 0x65656500, 0x92929200, 0xbdbdbd00, +0x86868600, 0xb8b8b800, 0xafafaf00, 0x8f8f8f00, 0x7c7c7c00, 0xebebeb00, 0x1f1f1f00, 0xcecece00, +0x3e3e3e00, 0x30303000, 0xdcdcdc00, 0x5f5f5f00, 0x5e5e5e00, 0xc5c5c500, 0x0b0b0b00, 0x1a1a1a00, +0xa6a6a600, 0xe1e1e100, 0x39393900, 0xcacaca00, 0xd5d5d500, 0x47474700, 0x5d5d5d00, 0x3d3d3d00, +0xd9d9d900, 0x01010100, 0x5a5a5a00, 0xd6d6d600, 0x51515100, 0x56565600, 0x6c6c6c00, 0x4d4d4d00, +0x8b8b8b00, 0x0d0d0d00, 0x9a9a9a00, 0x66666600, 0xfbfbfb00, 0xcccccc00, 0xb0b0b000, 0x2d2d2d00, +0x74747400, 0x12121200, 0x2b2b2b00, 0x20202000, 0xf0f0f000, 0xb1b1b100, 0x84848400, 0x99999900, +0xdfdfdf00, 0x4c4c4c00, 0xcbcbcb00, 0xc2c2c200, 0x34343400, 0x7e7e7e00, 0x76767600, 0x05050500, +0x6d6d6d00, 0xb7b7b700, 0xa9a9a900, 0x31313100, 0xd1d1d100, 0x17171700, 0x04040400, 0xd7d7d700, +0x14141400, 0x58585800, 0x3a3a3a00, 0x61616100, 0xdedede00, 0x1b1b1b00, 0x11111100, 0x1c1c1c00, +0x32323200, 0x0f0f0f00, 0x9c9c9c00, 0x16161600, 0x53535300, 0x18181800, 0xf2f2f200, 0x22222200, +0xfefefe00, 0x44444400, 0xcfcfcf00, 0xb2b2b200, 0xc3c3c300, 0xb5b5b500, 0x7a7a7a00, 0x91919100, +0x24242400, 0x08080800, 0xe8e8e800, 0xa8a8a800, 0x60606000, 0xfcfcfc00, 0x69696900, 0x50505000, +0xaaaaaa00, 0xd0d0d000, 0xa0a0a000, 0x7d7d7d00, 0xa1a1a100, 0x89898900, 0x62626200, 0x97979700, +0x54545400, 0x5b5b5b00, 0x1e1e1e00, 0x95959500, 0xe0e0e000, 0xffffff00, 0x64646400, 0xd2d2d200, +0x10101000, 0xc4c4c400, 0x00000000, 0x48484800, 0xa3a3a300, 0xf7f7f700, 0x75757500, 0xdbdbdb00, +0x8a8a8a00, 0x03030300, 0xe6e6e600, 0xdadada00, 0x09090900, 0x3f3f3f00, 0xdddddd00, 0x94949400, +0x87878700, 0x5c5c5c00, 0x83838300, 0x02020200, 0xcdcdcd00, 0x4a4a4a00, 0x90909000, 0x33333300, +0x73737300, 0x67676700, 0xf6f6f600, 0xf3f3f300, 0x9d9d9d00, 0x7f7f7f00, 0xbfbfbf00, 0xe2e2e200, +0x52525200, 0x9b9b9b00, 0xd8d8d800, 0x26262600, 0xc8c8c800, 0x37373700, 0xc6c6c600, 0x3b3b3b00, +0x81818100, 0x96969600, 0x6f6f6f00, 0x4b4b4b00, 0x13131300, 0xbebebe00, 0x63636300, 0x2e2e2e00, +0xe9e9e900, 0x79797900, 0xa7a7a700, 0x8c8c8c00, 0x9f9f9f00, 0x6e6e6e00, 0xbcbcbc00, 0x8e8e8e00, +0x29292900, 0xf5f5f500, 0xf9f9f900, 0xb6b6b600, 0x2f2f2f00, 0xfdfdfd00, 0xb4b4b400, 0x59595900, +0x78787800, 0x98989800, 0x06060600, 0x6a6a6a00, 0xe7e7e700, 0x46464600, 0x71717100, 0xbababa00, +0xd4d4d400, 0x25252500, 0xababab00, 0x42424200, 0x88888800, 0xa2a2a200, 0x8d8d8d00, 0xfafafa00, +0x72727200, 0x07070700, 0xb9b9b900, 0x55555500, 0xf8f8f800, 0xeeeeee00, 0xacacac00, 0x0a0a0a00, +0x36363600, 0x49494900, 0x2a2a2a00, 0x68686800, 0x3c3c3c00, 0x38383800, 0xf1f1f100, 0xa4a4a400, +0x40404000, 0x28282800, 0xd3d3d300, 0x7b7b7b00, 0xbbbbbb00, 0xc9c9c900, 0x43434300, 0xc1c1c100, +0x15151500, 0xe3e3e300, 0xadadad00, 0xf4f4f400, 0x77777700, 0xc7c7c700, 0x80808000, 0x9e9e9e00, +}; + +static const ulong32 SP0222[] = { +0x00e0e0e0, 0x00050505, 0x00585858, 0x00d9d9d9, 0x00676767, 0x004e4e4e, 0x00818181, 0x00cbcbcb, +0x00c9c9c9, 0x000b0b0b, 0x00aeaeae, 0x006a6a6a, 0x00d5d5d5, 0x00181818, 0x005d5d5d, 0x00828282, +0x00464646, 0x00dfdfdf, 0x00d6d6d6, 0x00272727, 0x008a8a8a, 0x00323232, 0x004b4b4b, 0x00424242, +0x00dbdbdb, 0x001c1c1c, 0x009e9e9e, 0x009c9c9c, 0x003a3a3a, 0x00cacaca, 0x00252525, 0x007b7b7b, +0x000d0d0d, 0x00717171, 0x005f5f5f, 0x001f1f1f, 0x00f8f8f8, 0x00d7d7d7, 0x003e3e3e, 0x009d9d9d, +0x007c7c7c, 0x00606060, 0x00b9b9b9, 0x00bebebe, 0x00bcbcbc, 0x008b8b8b, 0x00161616, 0x00343434, +0x004d4d4d, 0x00c3c3c3, 0x00727272, 0x00959595, 0x00ababab, 0x008e8e8e, 0x00bababa, 0x007a7a7a, +0x00b3b3b3, 0x00020202, 0x00b4b4b4, 0x00adadad, 0x00a2a2a2, 0x00acacac, 0x00d8d8d8, 0x009a9a9a, +0x00171717, 0x001a1a1a, 0x00353535, 0x00cccccc, 0x00f7f7f7, 0x00999999, 0x00616161, 0x005a5a5a, +0x00e8e8e8, 0x00242424, 0x00565656, 0x00404040, 0x00e1e1e1, 0x00636363, 0x00090909, 0x00333333, +0x00bfbfbf, 0x00989898, 0x00979797, 0x00858585, 0x00686868, 0x00fcfcfc, 0x00ececec, 0x000a0a0a, +0x00dadada, 0x006f6f6f, 0x00535353, 0x00626262, 0x00a3a3a3, 0x002e2e2e, 0x00080808, 0x00afafaf, +0x00282828, 0x00b0b0b0, 0x00747474, 0x00c2c2c2, 0x00bdbdbd, 0x00363636, 0x00222222, 0x00383838, +0x00646464, 0x001e1e1e, 0x00393939, 0x002c2c2c, 0x00a6a6a6, 0x00303030, 0x00e5e5e5, 0x00444444, +0x00fdfdfd, 0x00888888, 0x009f9f9f, 0x00656565, 0x00878787, 0x006b6b6b, 0x00f4f4f4, 0x00232323, +0x00484848, 0x00101010, 0x00d1d1d1, 0x00515151, 0x00c0c0c0, 0x00f9f9f9, 0x00d2d2d2, 0x00a0a0a0, +0x00555555, 0x00a1a1a1, 0x00414141, 0x00fafafa, 0x00434343, 0x00131313, 0x00c4c4c4, 0x002f2f2f, +0x00a8a8a8, 0x00b6b6b6, 0x003c3c3c, 0x002b2b2b, 0x00c1c1c1, 0x00ffffff, 0x00c8c8c8, 0x00a5a5a5, +0x00202020, 0x00898989, 0x00000000, 0x00909090, 0x00474747, 0x00efefef, 0x00eaeaea, 0x00b7b7b7, +0x00151515, 0x00060606, 0x00cdcdcd, 0x00b5b5b5, 0x00121212, 0x007e7e7e, 0x00bbbbbb, 0x00292929, +0x000f0f0f, 0x00b8b8b8, 0x00070707, 0x00040404, 0x009b9b9b, 0x00949494, 0x00212121, 0x00666666, +0x00e6e6e6, 0x00cecece, 0x00ededed, 0x00e7e7e7, 0x003b3b3b, 0x00fefefe, 0x007f7f7f, 0x00c5c5c5, +0x00a4a4a4, 0x00373737, 0x00b1b1b1, 0x004c4c4c, 0x00919191, 0x006e6e6e, 0x008d8d8d, 0x00767676, +0x00030303, 0x002d2d2d, 0x00dedede, 0x00969696, 0x00262626, 0x007d7d7d, 0x00c6c6c6, 0x005c5c5c, +0x00d3d3d3, 0x00f2f2f2, 0x004f4f4f, 0x00191919, 0x003f3f3f, 0x00dcdcdc, 0x00797979, 0x001d1d1d, +0x00525252, 0x00ebebeb, 0x00f3f3f3, 0x006d6d6d, 0x005e5e5e, 0x00fbfbfb, 0x00696969, 0x00b2b2b2, +0x00f0f0f0, 0x00313131, 0x000c0c0c, 0x00d4d4d4, 0x00cfcfcf, 0x008c8c8c, 0x00e2e2e2, 0x00757575, +0x00a9a9a9, 0x004a4a4a, 0x00575757, 0x00848484, 0x00111111, 0x00454545, 0x001b1b1b, 0x00f5f5f5, +0x00e4e4e4, 0x000e0e0e, 0x00737373, 0x00aaaaaa, 0x00f1f1f1, 0x00dddddd, 0x00595959, 0x00141414, +0x006c6c6c, 0x00929292, 0x00545454, 0x00d0d0d0, 0x00787878, 0x00707070, 0x00e3e3e3, 0x00494949, +0x00808080, 0x00505050, 0x00a7a7a7, 0x00f6f6f6, 0x00777777, 0x00939393, 0x00868686, 0x00838383, +0x002a2a2a, 0x00c7c7c7, 0x005b5b5b, 0x00e9e9e9, 0x00eeeeee, 0x008f8f8f, 0x00010101, 0x003d3d3d, +}; + +static const ulong32 SP3033[] = { +0x38003838, 0x41004141, 0x16001616, 0x76007676, 0xd900d9d9, 0x93009393, 0x60006060, 0xf200f2f2, +0x72007272, 0xc200c2c2, 0xab00abab, 0x9a009a9a, 0x75007575, 0x06000606, 0x57005757, 0xa000a0a0, +0x91009191, 0xf700f7f7, 0xb500b5b5, 0xc900c9c9, 0xa200a2a2, 0x8c008c8c, 0xd200d2d2, 0x90009090, +0xf600f6f6, 0x07000707, 0xa700a7a7, 0x27002727, 0x8e008e8e, 0xb200b2b2, 0x49004949, 0xde00dede, +0x43004343, 0x5c005c5c, 0xd700d7d7, 0xc700c7c7, 0x3e003e3e, 0xf500f5f5, 0x8f008f8f, 0x67006767, +0x1f001f1f, 0x18001818, 0x6e006e6e, 0xaf00afaf, 0x2f002f2f, 0xe200e2e2, 0x85008585, 0x0d000d0d, +0x53005353, 0xf000f0f0, 0x9c009c9c, 0x65006565, 0xea00eaea, 0xa300a3a3, 0xae00aeae, 0x9e009e9e, +0xec00ecec, 0x80008080, 0x2d002d2d, 0x6b006b6b, 0xa800a8a8, 0x2b002b2b, 0x36003636, 0xa600a6a6, +0xc500c5c5, 0x86008686, 0x4d004d4d, 0x33003333, 0xfd00fdfd, 0x66006666, 0x58005858, 0x96009696, +0x3a003a3a, 0x09000909, 0x95009595, 0x10001010, 0x78007878, 0xd800d8d8, 0x42004242, 0xcc00cccc, +0xef00efef, 0x26002626, 0xe500e5e5, 0x61006161, 0x1a001a1a, 0x3f003f3f, 0x3b003b3b, 0x82008282, +0xb600b6b6, 0xdb00dbdb, 0xd400d4d4, 0x98009898, 0xe800e8e8, 0x8b008b8b, 0x02000202, 0xeb00ebeb, +0x0a000a0a, 0x2c002c2c, 0x1d001d1d, 0xb000b0b0, 0x6f006f6f, 0x8d008d8d, 0x88008888, 0x0e000e0e, +0x19001919, 0x87008787, 0x4e004e4e, 0x0b000b0b, 0xa900a9a9, 0x0c000c0c, 0x79007979, 0x11001111, +0x7f007f7f, 0x22002222, 0xe700e7e7, 0x59005959, 0xe100e1e1, 0xda00dada, 0x3d003d3d, 0xc800c8c8, +0x12001212, 0x04000404, 0x74007474, 0x54005454, 0x30003030, 0x7e007e7e, 0xb400b4b4, 0x28002828, +0x55005555, 0x68006868, 0x50005050, 0xbe00bebe, 0xd000d0d0, 0xc400c4c4, 0x31003131, 0xcb00cbcb, +0x2a002a2a, 0xad00adad, 0x0f000f0f, 0xca00caca, 0x70007070, 0xff00ffff, 0x32003232, 0x69006969, +0x08000808, 0x62006262, 0x00000000, 0x24002424, 0xd100d1d1, 0xfb00fbfb, 0xba00baba, 0xed00eded, +0x45004545, 0x81008181, 0x73007373, 0x6d006d6d, 0x84008484, 0x9f009f9f, 0xee00eeee, 0x4a004a4a, +0xc300c3c3, 0x2e002e2e, 0xc100c1c1, 0x01000101, 0xe600e6e6, 0x25002525, 0x48004848, 0x99009999, +0xb900b9b9, 0xb300b3b3, 0x7b007b7b, 0xf900f9f9, 0xce00cece, 0xbf00bfbf, 0xdf00dfdf, 0x71007171, +0x29002929, 0xcd00cdcd, 0x6c006c6c, 0x13001313, 0x64006464, 0x9b009b9b, 0x63006363, 0x9d009d9d, +0xc000c0c0, 0x4b004b4b, 0xb700b7b7, 0xa500a5a5, 0x89008989, 0x5f005f5f, 0xb100b1b1, 0x17001717, +0xf400f4f4, 0xbc00bcbc, 0xd300d3d3, 0x46004646, 0xcf00cfcf, 0x37003737, 0x5e005e5e, 0x47004747, +0x94009494, 0xfa00fafa, 0xfc00fcfc, 0x5b005b5b, 0x97009797, 0xfe00fefe, 0x5a005a5a, 0xac00acac, +0x3c003c3c, 0x4c004c4c, 0x03000303, 0x35003535, 0xf300f3f3, 0x23002323, 0xb800b8b8, 0x5d005d5d, +0x6a006a6a, 0x92009292, 0xd500d5d5, 0x21002121, 0x44004444, 0x51005151, 0xc600c6c6, 0x7d007d7d, +0x39003939, 0x83008383, 0xdc00dcdc, 0xaa00aaaa, 0x7c007c7c, 0x77007777, 0x56005656, 0x05000505, +0x1b001b1b, 0xa400a4a4, 0x15001515, 0x34003434, 0x1e001e1e, 0x1c001c1c, 0xf800f8f8, 0x52005252, +0x20002020, 0x14001414, 0xe900e9e9, 0xbd00bdbd, 0xdd00dddd, 0xe400e4e4, 0xa100a1a1, 0xe000e0e0, +0x8a008a8a, 0xf100f1f1, 0xd600d6d6, 0x7a007a7a, 0xbb00bbbb, 0xe300e3e3, 0x40004040, 0x4f004f4f, +}; + +static const ulong32 SP4404[] = { +0x70700070, 0x2c2c002c, 0xb3b300b3, 0xc0c000c0, 0xe4e400e4, 0x57570057, 0xeaea00ea, 0xaeae00ae, +0x23230023, 0x6b6b006b, 0x45450045, 0xa5a500a5, 0xeded00ed, 0x4f4f004f, 0x1d1d001d, 0x92920092, +0x86860086, 0xafaf00af, 0x7c7c007c, 0x1f1f001f, 0x3e3e003e, 0xdcdc00dc, 0x5e5e005e, 0x0b0b000b, +0xa6a600a6, 0x39390039, 0xd5d500d5, 0x5d5d005d, 0xd9d900d9, 0x5a5a005a, 0x51510051, 0x6c6c006c, +0x8b8b008b, 0x9a9a009a, 0xfbfb00fb, 0xb0b000b0, 0x74740074, 0x2b2b002b, 0xf0f000f0, 0x84840084, +0xdfdf00df, 0xcbcb00cb, 0x34340034, 0x76760076, 0x6d6d006d, 0xa9a900a9, 0xd1d100d1, 0x04040004, +0x14140014, 0x3a3a003a, 0xdede00de, 0x11110011, 0x32320032, 0x9c9c009c, 0x53530053, 0xf2f200f2, +0xfefe00fe, 0xcfcf00cf, 0xc3c300c3, 0x7a7a007a, 0x24240024, 0xe8e800e8, 0x60600060, 0x69690069, +0xaaaa00aa, 0xa0a000a0, 0xa1a100a1, 0x62620062, 0x54540054, 0x1e1e001e, 0xe0e000e0, 0x64640064, +0x10100010, 0x00000000, 0xa3a300a3, 0x75750075, 0x8a8a008a, 0xe6e600e6, 0x09090009, 0xdddd00dd, +0x87870087, 0x83830083, 0xcdcd00cd, 0x90900090, 0x73730073, 0xf6f600f6, 0x9d9d009d, 0xbfbf00bf, +0x52520052, 0xd8d800d8, 0xc8c800c8, 0xc6c600c6, 0x81810081, 0x6f6f006f, 0x13130013, 0x63630063, +0xe9e900e9, 0xa7a700a7, 0x9f9f009f, 0xbcbc00bc, 0x29290029, 0xf9f900f9, 0x2f2f002f, 0xb4b400b4, +0x78780078, 0x06060006, 0xe7e700e7, 0x71710071, 0xd4d400d4, 0xabab00ab, 0x88880088, 0x8d8d008d, +0x72720072, 0xb9b900b9, 0xf8f800f8, 0xacac00ac, 0x36360036, 0x2a2a002a, 0x3c3c003c, 0xf1f100f1, +0x40400040, 0xd3d300d3, 0xbbbb00bb, 0x43430043, 0x15150015, 0xadad00ad, 0x77770077, 0x80800080, +0x82820082, 0xecec00ec, 0x27270027, 0xe5e500e5, 0x85850085, 0x35350035, 0x0c0c000c, 0x41410041, +0xefef00ef, 0x93930093, 0x19190019, 0x21210021, 0x0e0e000e, 0x4e4e004e, 0x65650065, 0xbdbd00bd, +0xb8b800b8, 0x8f8f008f, 0xebeb00eb, 0xcece00ce, 0x30300030, 0x5f5f005f, 0xc5c500c5, 0x1a1a001a, +0xe1e100e1, 0xcaca00ca, 0x47470047, 0x3d3d003d, 0x01010001, 0xd6d600d6, 0x56560056, 0x4d4d004d, +0x0d0d000d, 0x66660066, 0xcccc00cc, 0x2d2d002d, 0x12120012, 0x20200020, 0xb1b100b1, 0x99990099, +0x4c4c004c, 0xc2c200c2, 0x7e7e007e, 0x05050005, 0xb7b700b7, 0x31310031, 0x17170017, 0xd7d700d7, +0x58580058, 0x61610061, 0x1b1b001b, 0x1c1c001c, 0x0f0f000f, 0x16160016, 0x18180018, 0x22220022, +0x44440044, 0xb2b200b2, 0xb5b500b5, 0x91910091, 0x08080008, 0xa8a800a8, 0xfcfc00fc, 0x50500050, +0xd0d000d0, 0x7d7d007d, 0x89890089, 0x97970097, 0x5b5b005b, 0x95950095, 0xffff00ff, 0xd2d200d2, +0xc4c400c4, 0x48480048, 0xf7f700f7, 0xdbdb00db, 0x03030003, 0xdada00da, 0x3f3f003f, 0x94940094, +0x5c5c005c, 0x02020002, 0x4a4a004a, 0x33330033, 0x67670067, 0xf3f300f3, 0x7f7f007f, 0xe2e200e2, +0x9b9b009b, 0x26260026, 0x37370037, 0x3b3b003b, 0x96960096, 0x4b4b004b, 0xbebe00be, 0x2e2e002e, +0x79790079, 0x8c8c008c, 0x6e6e006e, 0x8e8e008e, 0xf5f500f5, 0xb6b600b6, 0xfdfd00fd, 0x59590059, +0x98980098, 0x6a6a006a, 0x46460046, 0xbaba00ba, 0x25250025, 0x42420042, 0xa2a200a2, 0xfafa00fa, +0x07070007, 0x55550055, 0xeeee00ee, 0x0a0a000a, 0x49490049, 0x68680068, 0x38380038, 0xa4a400a4, +0x28280028, 0x7b7b007b, 0xc9c900c9, 0xc1c100c1, 0xe3e300e3, 0xf4f400f4, 0xc7c700c7, 0x9e9e009e, +}; + +static const ulong64 key_sigma[] = { + CONST64(0xA09E667F3BCC908B), + CONST64(0xB67AE8584CAA73B2), + CONST64(0xC6EF372FE94F82BE), + CONST64(0x54FF53A5F1D36F1C), + CONST64(0x10E527FADE682D1D), + CONST64(0xB05688C2B3E6C1FD) +}; + +static ulong64 F(ulong64 x) +{ + ulong32 D, U; + +#define loc(i) ((8-i)*8) + + D = SP1110[(x >> loc(8)) & 0xFF] ^ SP0222[(x >> loc(5)) & 0xFF] ^ SP3033[(x >> loc(6)) & 0xFF] ^ SP4404[(x >> loc(7)) & 0xFF]; + U = SP1110[(x >> loc(1)) & 0xFF] ^ SP0222[(x >> loc(2)) & 0xFF] ^ SP3033[(x >> loc(3)) & 0xFF] ^ SP4404[(x >> loc(4)) & 0xFF]; + + D ^= U; + U = D ^ RORc(U, 8); + + return ((ulong64)U) | (((ulong64)D) << CONST64(32)); +} + +static void rot_128(unsigned char *in, unsigned count, unsigned char *out) +{ + unsigned x, w, b; + + w = count >> 3; + b = count & 7; + + for (x = 0; x < 16; x++) { + out[x] = (in[(x+w)&15] << b) | (in[(x+w+1)&15] >> (8 - b)); + } +} + +int camellia_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +{ + unsigned char T[48], kA[16], kB[16], kR[16], kL[16]; + int x; + ulong64 A, B; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(skey != NULL); + + /* Valid sizes (in bytes) are 16, 24, 32 */ + if (keylen != 16 && keylen != 24 && keylen != 32) { + return CRYPT_INVALID_KEYSIZE; + } + + /* number of rounds */ + skey->camellia.R = (keylen == 16) ? 18 : 24; + + if (num_rounds != 0 && num_rounds != skey->camellia.R) { + return CRYPT_INVALID_ROUNDS; + } + + /* expand key */ + if (keylen == 16) { + for (x = 0; x < 16; x++) { + T[x] = key[x]; + T[x + 16] = 0; + } + } else if (keylen == 24) { + for (x = 0; x < 24; x++) { + T[x] = key[x]; + } + for (x = 24; x < 32; x++) { + T[x] = key[x-8] ^ 0xFF; + } + } else { + for (x = 0; x < 32; x++) { + T[x] = key[x]; + } + } + + for (x = 0; x < 16; x++) { + kL[x] = T[x]; + kR[x] = T[x + 16]; + } + + for (x = 32; x < 48; x++) { + T[x] = T[x - 32] ^ T[x - 16]; + } + + /* first two rounds */ + LOAD64H(A, T+32); LOAD64H(B, T+40); + B ^= F(A ^ key_sigma[0]); + A ^= F(B ^ key_sigma[1]); + STORE64H(A, T+32); STORE64H(B, T+40); + + /* xor kL in */ + for (x = 0; x < 16; x++) { T[x+32] ^= kL[x]; } + + /* next two rounds */ + LOAD64H(A, T+32); LOAD64H(B, T+40); + B ^= F(A ^ key_sigma[2]); + A ^= F(B ^ key_sigma[3]); + STORE64H(A, T+32); STORE64H(B, T+40); + + /* grab KA */ + for (x = 0; x < 16; x++) { kA[x] = T[x+32]; } + + /* xor kR in */ + for (x = 0; x < 16; x++) { T[x+32] ^= kR[x]; } + + if (keylen == 16) { + /* grab whitening keys kw1 and kw2 */ + LOAD64H(skey->camellia.kw[0], kL); + LOAD64H(skey->camellia.kw[1], kL+8); + + /* k1-k2 */ + LOAD64H(skey->camellia.k[0], kA); + LOAD64H(skey->camellia.k[1], kA+8); + + /* rotate kL by 15, k3/k4 */ + rot_128(kL, 15, T+32); + LOAD64H(skey->camellia.k[2], T+32); + LOAD64H(skey->camellia.k[3], T+40); + + /* rotate kA by 15, k5/k6 */ + rot_128(kA, 15, T+32); + LOAD64H(skey->camellia.k[4], T+32); + LOAD64H(skey->camellia.k[5], T+40); + + /* rotate kA by 30, kl1, kl2 */ + rot_128(kA, 30, T+32); + LOAD64H(skey->camellia.kl[0], T+32); + LOAD64H(skey->camellia.kl[1], T+40); + + /* rotate kL by 45, k7/k8 */ + rot_128(kL, 45, T+32); + LOAD64H(skey->camellia.k[6], T+32); + LOAD64H(skey->camellia.k[7], T+40); + + /* rotate kA by 45, k9/k10 */ + rot_128(kA, 45, T+32); + LOAD64H(skey->camellia.k[8], T+32); + rot_128(kL, 60, T+32); + LOAD64H(skey->camellia.k[9], T+40); + + /* rotate kA by 60, k11/k12 */ + rot_128(kA, 60, T+32); + LOAD64H(skey->camellia.k[10], T+32); + LOAD64H(skey->camellia.k[11], T+40); + + /* rotate kL by 77, kl3, kl4 */ + rot_128(kL, 77, T+32); + LOAD64H(skey->camellia.kl[2], T+32); + LOAD64H(skey->camellia.kl[3], T+40); + + /* rotate kL by 94, k13/k14 */ + rot_128(kL, 94, T+32); + LOAD64H(skey->camellia.k[12], T+32); + LOAD64H(skey->camellia.k[13], T+40); + + /* rotate kA by 94, k15/k16 */ + rot_128(kA, 94, T+32); + LOAD64H(skey->camellia.k[14], T+32); + LOAD64H(skey->camellia.k[15], T+40); + + /* rotate kL by 111, k17/k18 */ + rot_128(kL, 111, T+32); + LOAD64H(skey->camellia.k[16], T+32); + LOAD64H(skey->camellia.k[17], T+40); + + /* rotate kA by 111, kw3/kw4 */ + rot_128(kA, 111, T+32); + LOAD64H(skey->camellia.kw[2], T+32); + LOAD64H(skey->camellia.kw[3], T+40); + } else { + /* last two rounds */ + LOAD64H(A, T+32); LOAD64H(B, T+40); + B ^= F(A ^ key_sigma[4]); + A ^= F(B ^ key_sigma[5]); + STORE64H(A, T+32); STORE64H(B, T+40); + + /* grab kB */ + for (x = 0; x < 16; x++) { kB[x] = T[x+32]; } + + /* kw1/2 from kL*/ + LOAD64H(skey->camellia.kw[0], kL); + LOAD64H(skey->camellia.kw[1], kL+8); + + /* k1/k2 = kB */ + LOAD64H(skey->camellia.k[0], kB); + LOAD64H(skey->camellia.k[1], kB+8); + + /* k3/k4 = kR by 15 */ + rot_128(kR, 15, T+32); + LOAD64H(skey->camellia.k[2], T+32); + LOAD64H(skey->camellia.k[3], T+40); + + /* k5/k7 = kA by 15 */ + rot_128(kA, 15, T+32); + LOAD64H(skey->camellia.k[4], T+32); + LOAD64H(skey->camellia.k[5], T+40); + + /* kl1/2 = kR by 30 */ + rot_128(kR, 30, T+32); + LOAD64H(skey->camellia.kl[0], T+32); + LOAD64H(skey->camellia.kl[1], T+40); + + /* k7/k8 = kB by 30 */ + rot_128(kB, 30, T+32); + LOAD64H(skey->camellia.k[6], T+32); + LOAD64H(skey->camellia.k[7], T+40); + + /* k9/k10 = kL by 45 */ + rot_128(kL, 45, T+32); + LOAD64H(skey->camellia.k[8], T+32); + LOAD64H(skey->camellia.k[9], T+40); + + /* k11/k12 = kA by 45 */ + rot_128(kA, 45, T+32); + LOAD64H(skey->camellia.k[10], T+32); + LOAD64H(skey->camellia.k[11], T+40); + + /* kl3/4 = kL by 60 */ + rot_128(kL, 60, T+32); + LOAD64H(skey->camellia.kl[2], T+32); + LOAD64H(skey->camellia.kl[3], T+40); + + /* k13/k14 = kR by 60 */ + rot_128(kR, 60, T+32); + LOAD64H(skey->camellia.k[12], T+32); + LOAD64H(skey->camellia.k[13], T+40); + + /* k15/k16 = kB by 15 */ + rot_128(kB, 60, T+32); + LOAD64H(skey->camellia.k[14], T+32); + LOAD64H(skey->camellia.k[15], T+40); + + /* k17/k18 = kL by 77 */ + rot_128(kL, 77, T+32); + LOAD64H(skey->camellia.k[16], T+32); + LOAD64H(skey->camellia.k[17], T+40); + + /* kl5/6 = kA by 77 */ + rot_128(kA, 77, T+32); + LOAD64H(skey->camellia.kl[4], T+32); + LOAD64H(skey->camellia.kl[5], T+40); + + /* k19/k20 = kR by 94 */ + rot_128(kR, 94, T+32); + LOAD64H(skey->camellia.k[18], T+32); + LOAD64H(skey->camellia.k[19], T+40); + + /* k21/k22 = kA by 94 */ + rot_128(kA, 94, T+32); + LOAD64H(skey->camellia.k[20], T+32); + LOAD64H(skey->camellia.k[21], T+40); + + /* k23/k24 = kL by 111 */ + rot_128(kL, 111, T+32); + LOAD64H(skey->camellia.k[22], T+32); + LOAD64H(skey->camellia.k[23], T+40); + + /* kw2/kw3 = kB by 111 */ + rot_128(kB, 111, T+32); + LOAD64H(skey->camellia.kw[2], T+32); + LOAD64H(skey->camellia.kw[3], T+40); + } + + return CRYPT_OK; +} + +int camellia_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +{ + ulong64 L, R; + ulong32 a, b; + + LOAD64H(L, pt+0); LOAD64H(R, pt+8); + L ^= skey->camellia.kw[0]; + R ^= skey->camellia.kw[1]; + + /* first 6 rounds */ + R ^= F(L ^ skey->camellia.k[0]); + L ^= F(R ^ skey->camellia.k[1]); + R ^= F(L ^ skey->camellia.k[2]); + L ^= F(R ^ skey->camellia.k[3]); + R ^= F(L ^ skey->camellia.k[4]); + L ^= F(R ^ skey->camellia.k[5]); + + /* FL */ + a = (ulong32)(L >> 32); + b = (ulong32)(L & 0xFFFFFFFFUL); + b ^= ROL((a & (ulong32)(skey->camellia.kl[0] >> 32)), 1); + a ^= b | (skey->camellia.kl[0] & 0xFFFFFFFFU); + L = (((ulong64)a) << 32) | b; + + /* FL^-1 */ + a = (ulong32)(R >> 32); + b = (ulong32)(R & 0xFFFFFFFFUL); + a ^= b | (skey->camellia.kl[1] & 0xFFFFFFFFU); + b ^= ROL((a & (ulong32)(skey->camellia.kl[1] >> 32)), 1); + R = (((ulong64)a) << 32) | b; + + /* second 6 rounds */ + R ^= F(L ^ skey->camellia.k[6]); + L ^= F(R ^ skey->camellia.k[7]); + R ^= F(L ^ skey->camellia.k[8]); + L ^= F(R ^ skey->camellia.k[9]); + R ^= F(L ^ skey->camellia.k[10]); + L ^= F(R ^ skey->camellia.k[11]); + + /* FL */ + a = (ulong32)(L >> 32); + b = (ulong32)(L & 0xFFFFFFFFUL); + b ^= ROL((a & (ulong32)(skey->camellia.kl[2] >> 32)), 1); + a ^= b | (skey->camellia.kl[2] & 0xFFFFFFFFU); + L = (((ulong64)a) << 32) | b; + + /* FL^-1 */ + a = (ulong32)(R >> 32); + b = (ulong32)(R & 0xFFFFFFFFUL); + a ^= b | (skey->camellia.kl[3] & 0xFFFFFFFFU); + b ^= ROL((a & (ulong32)(skey->camellia.kl[3] >> 32)), 1); + R = (((ulong64)a) << 32) | b; + + /* third 6 rounds */ + R ^= F(L ^ skey->camellia.k[12]); + L ^= F(R ^ skey->camellia.k[13]); + R ^= F(L ^ skey->camellia.k[14]); + L ^= F(R ^ skey->camellia.k[15]); + R ^= F(L ^ skey->camellia.k[16]); + L ^= F(R ^ skey->camellia.k[17]); + + /* next FL */ + if (skey->camellia.R == 24) { + /* FL */ + a = (ulong32)(L >> 32); + b = (ulong32)(L & 0xFFFFFFFFUL); + b ^= ROL((a & (ulong32)(skey->camellia.kl[4] >> 32)), 1); + a ^= b | (skey->camellia.kl[4] & 0xFFFFFFFFU); + L = (((ulong64)a) << 32) | b; + + /* FL^-1 */ + a = (ulong32)(R >> 32); + b = (ulong32)(R & 0xFFFFFFFFUL); + a ^= b | (skey->camellia.kl[5] & 0xFFFFFFFFU); + b ^= ROL((a & (ulong32)(skey->camellia.kl[5] >> 32)), 1); + R = (((ulong64)a) << 32) | b; + + /* fourth 6 rounds */ + R ^= F(L ^ skey->camellia.k[18]); + L ^= F(R ^ skey->camellia.k[19]); + R ^= F(L ^ skey->camellia.k[20]); + L ^= F(R ^ skey->camellia.k[21]); + R ^= F(L ^ skey->camellia.k[22]); + L ^= F(R ^ skey->camellia.k[23]); + } + + L ^= skey->camellia.kw[3]; + R ^= skey->camellia.kw[2]; + + STORE64H(R, ct+0); STORE64H(L, ct+8); + + return CRYPT_OK; +} + +int camellia_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +{ + ulong64 L, R; + ulong32 a, b; + + LOAD64H(R, ct+0); LOAD64H(L, ct+8); + L ^= skey->camellia.kw[3]; + R ^= skey->camellia.kw[2]; + + /* next FL */ + if (skey->camellia.R == 24) { + /* fourth 6 rounds */ + L ^= F(R ^ skey->camellia.k[23]); + R ^= F(L ^ skey->camellia.k[22]); + L ^= F(R ^ skey->camellia.k[21]); + R ^= F(L ^ skey->camellia.k[20]); + L ^= F(R ^ skey->camellia.k[19]); + R ^= F(L ^ skey->camellia.k[18]); + + /* FL */ + a = (ulong32)(L >> 32); + b = (ulong32)(L & 0xFFFFFFFFUL); + a ^= b | (skey->camellia.kl[4] & 0xFFFFFFFFU); + b ^= ROL((a & (ulong32)(skey->camellia.kl[4] >> 32)), 1); + L = (((ulong64)a) << 32) | b; + + /* FL^-1 */ + a = (ulong32)(R >> 32); + b = (ulong32)(R & 0xFFFFFFFFUL); + b ^= ROL((a & (ulong32)(skey->camellia.kl[5] >> 32)), 1); + a ^= b | (skey->camellia.kl[5] & 0xFFFFFFFFU); + R = (((ulong64)a) << 32) | b; + + } + + /* third 6 rounds */ + L ^= F(R ^ skey->camellia.k[17]); + R ^= F(L ^ skey->camellia.k[16]); + L ^= F(R ^ skey->camellia.k[15]); + R ^= F(L ^ skey->camellia.k[14]); + L ^= F(R ^ skey->camellia.k[13]); + R ^= F(L ^ skey->camellia.k[12]); + + /* FL */ + a = (ulong32)(L >> 32); + b = (ulong32)(L & 0xFFFFFFFFUL); + a ^= b | (skey->camellia.kl[2] & 0xFFFFFFFFU); + b ^= ROL((a & (ulong32)(skey->camellia.kl[2] >> 32)), 1); + L = (((ulong64)a) << 32) | b; + + /* FL^-1 */ + a = (ulong32)(R >> 32); + b = (ulong32)(R & 0xFFFFFFFFUL); + b ^= ROL((a & (ulong32)(skey->camellia.kl[3] >> 32)), 1); + a ^= b | (skey->camellia.kl[3] & 0xFFFFFFFFU); + R = (((ulong64)a) << 32) | b; + + /* second 6 rounds */ + L ^= F(R ^ skey->camellia.k[11]); + R ^= F(L ^ skey->camellia.k[10]); + L ^= F(R ^ skey->camellia.k[9]); + R ^= F(L ^ skey->camellia.k[8]); + L ^= F(R ^ skey->camellia.k[7]); + R ^= F(L ^ skey->camellia.k[6]); + + /* FL */ + a = (ulong32)(L >> 32); + b = (ulong32)(L & 0xFFFFFFFFUL); + a ^= b | (skey->camellia.kl[0] & 0xFFFFFFFFU); + b ^= ROL((a & (ulong32)(skey->camellia.kl[0] >> 32)), 1); + L = (((ulong64)a) << 32) | b; + + /* FL^-1 */ + a = (ulong32)(R >> 32); + b = (ulong32)(R & 0xFFFFFFFFUL); + b ^= ROL((a & (ulong32)(skey->camellia.kl[1] >> 32)), 1); + a ^= b | (skey->camellia.kl[1] & 0xFFFFFFFFU); + R = (((ulong64)a) << 32) | b; + + /* first 6 rounds */ + L ^= F(R ^ skey->camellia.k[5]); + R ^= F(L ^ skey->camellia.k[4]); + L ^= F(R ^ skey->camellia.k[3]); + R ^= F(L ^ skey->camellia.k[2]); + L ^= F(R ^ skey->camellia.k[1]); + R ^= F(L ^ skey->camellia.k[0]); + + R ^= skey->camellia.kw[1]; + L ^= skey->camellia.kw[0]; + + STORE64H(R, pt+8); STORE64H(L, pt+0); + + return CRYPT_OK; +} + +int camellia_test(void) +{ + static const struct { + int keylen; + unsigned char key[32], pt[16], ct[16]; + } tests[] = { + +{ + 16, + { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, + 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, + { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, + 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, + { 0x67, 0x67, 0x31, 0x38, 0x54, 0x96, 0x69, 0x73, + 0x08, 0x57, 0x06, 0x56, 0x48, 0xea, 0xbe, 0x43 } +}, + +{ + 24, + { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, + 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, + 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77 }, + { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, + 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, + { 0xb4, 0x99, 0x34, 0x01, 0xb3, 0xe9, 0x96, 0xf8, + 0x4e, 0xe5, 0xce, 0xe7, 0xd7, 0x9b, 0x09, 0xb9 } +}, + + +{ + 32, + { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, + 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10, + 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, + 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }, + { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, + 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10 }, + { 0x9a, 0xcc, 0x23, 0x7d, 0xff, 0x16, 0xd7, 0x6c, + 0x20, 0xef, 0x7c, 0x91, 0x9e, 0x3a, 0x75, 0x09 } +}, + +{ + 32, + { 0x60, 0x3D, 0xEB, 0x10, 0x15, 0xCA, 0x71, 0xBE, + 0x2B, 0x73, 0xAE, 0xF0, 0x85, 0x7D, 0x77, 0x81, + 0x1F, 0x35, 0x2C, 0x07, 0x3B, 0x61, 0x08, 0xD7, + 0x2D, 0x98, 0x10, 0xA3, 0x09, 0x14, 0xDF, 0xF4 }, + { 0xF6, 0x9F, 0x24, 0x45, 0xDF, 0x4F, 0x9B, 0x17, + 0xAD, 0x2B, 0x41, 0x7B, 0xE6, 0x6C, 0x37, 0x10 }, + { 0x79, 0x60, 0x10, 0x9F, 0xB6, 0xDC, 0x42, 0x94, + 0x7F, 0xCF, 0xE5, 0x9E, 0xA3, 0xC5, 0xEB, 0x6B } +} +}; + unsigned char buf[2][16]; + symmetric_key skey; + int err; + unsigned int x; + + for (x = 0; x < sizeof(tests)/sizeof(tests[0]); x++) { + zeromem(&skey, sizeof(skey)); + if ((err = camellia_setup(tests[x].key, tests[x].keylen, 0, &skey)) != CRYPT_OK) { + return err; + } + if ((err = camellia_ecb_encrypt(tests[x].pt, buf[0], &skey)) != CRYPT_OK) { + camellia_done(&skey); + return err; + } + if ((err = camellia_ecb_decrypt(tests[x].ct, buf[1], &skey)) != CRYPT_OK) { + camellia_done(&skey); + return err; + } + camellia_done(&skey); + if (compare_testvector(tests[x].ct, 16, buf[0], 16, "Camellia Encrypt", x) || + compare_testvector(tests[x].pt, 16, buf[1], 16, "Camellia Decrypt", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; +} + +void camellia_done(symmetric_key *skey) +{ + LTC_UNUSED_PARAM(skey); +} + +int camellia_keysize(int *keysize) +{ + if (*keysize >= 32) { *keysize = 32; } + else if (*keysize >= 24) { *keysize = 24; } + else if (*keysize >= 16) { *keysize = 16; } + else return CRYPT_INVALID_KEYSIZE; + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/ciphers/cast5.c b/fsbl/lib/libtomcrypt/src/ciphers/cast5.c new file mode 100644 index 000000000..43ca58080 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/ciphers/cast5.c @@ -0,0 +1,720 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + + /** + @file cast5.c + Implementation of LTC_CAST5 (RFC 2144) by Tom St Denis + */ +#include "tomcrypt.h" + +#ifdef LTC_CAST5 + +const struct ltc_cipher_descriptor cast5_desc = { + "cast5", + 15, + 5, 16, 8, 16, + &cast5_setup, + &cast5_ecb_encrypt, + &cast5_ecb_decrypt, + &cast5_test, + &cast5_done, + &cast5_keysize, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + +static const ulong32 S1[256] = { +0x30fb40d4UL, 0x9fa0ff0bUL, 0x6beccd2fUL, 0x3f258c7aUL, 0x1e213f2fUL, 0x9c004dd3UL, +0x6003e540UL, 0xcf9fc949UL, 0xbfd4af27UL, 0x88bbbdb5UL, 0xe2034090UL, 0x98d09675UL, +0x6e63a0e0UL, 0x15c361d2UL, 0xc2e7661dUL, 0x22d4ff8eUL, 0x28683b6fUL, 0xc07fd059UL, +0xff2379c8UL, 0x775f50e2UL, 0x43c340d3UL, 0xdf2f8656UL, 0x887ca41aUL, 0xa2d2bd2dUL, +0xa1c9e0d6UL, 0x346c4819UL, 0x61b76d87UL, 0x22540f2fUL, 0x2abe32e1UL, 0xaa54166bUL, +0x22568e3aUL, 0xa2d341d0UL, 0x66db40c8UL, 0xa784392fUL, 0x004dff2fUL, 0x2db9d2deUL, +0x97943facUL, 0x4a97c1d8UL, 0x527644b7UL, 0xb5f437a7UL, 0xb82cbaefUL, 0xd751d159UL, +0x6ff7f0edUL, 0x5a097a1fUL, 0x827b68d0UL, 0x90ecf52eUL, 0x22b0c054UL, 0xbc8e5935UL, +0x4b6d2f7fUL, 0x50bb64a2UL, 0xd2664910UL, 0xbee5812dUL, 0xb7332290UL, 0xe93b159fUL, +0xb48ee411UL, 0x4bff345dUL, 0xfd45c240UL, 0xad31973fUL, 0xc4f6d02eUL, 0x55fc8165UL, +0xd5b1caadUL, 0xa1ac2daeUL, 0xa2d4b76dUL, 0xc19b0c50UL, 0x882240f2UL, 0x0c6e4f38UL, +0xa4e4bfd7UL, 0x4f5ba272UL, 0x564c1d2fUL, 0xc59c5319UL, 0xb949e354UL, 0xb04669feUL, +0xb1b6ab8aUL, 0xc71358ddUL, 0x6385c545UL, 0x110f935dUL, 0x57538ad5UL, 0x6a390493UL, +0xe63d37e0UL, 0x2a54f6b3UL, 0x3a787d5fUL, 0x6276a0b5UL, 0x19a6fcdfUL, 0x7a42206aUL, +0x29f9d4d5UL, 0xf61b1891UL, 0xbb72275eUL, 0xaa508167UL, 0x38901091UL, 0xc6b505ebUL, +0x84c7cb8cUL, 0x2ad75a0fUL, 0x874a1427UL, 0xa2d1936bUL, 0x2ad286afUL, 0xaa56d291UL, +0xd7894360UL, 0x425c750dUL, 0x93b39e26UL, 0x187184c9UL, 0x6c00b32dUL, 0x73e2bb14UL, +0xa0bebc3cUL, 0x54623779UL, 0x64459eabUL, 0x3f328b82UL, 0x7718cf82UL, 0x59a2cea6UL, +0x04ee002eUL, 0x89fe78e6UL, 0x3fab0950UL, 0x325ff6c2UL, 0x81383f05UL, 0x6963c5c8UL, +0x76cb5ad6UL, 0xd49974c9UL, 0xca180dcfUL, 0x380782d5UL, 0xc7fa5cf6UL, 0x8ac31511UL, +0x35e79e13UL, 0x47da91d0UL, 0xf40f9086UL, 0xa7e2419eUL, 0x31366241UL, 0x051ef495UL, +0xaa573b04UL, 0x4a805d8dUL, 0x548300d0UL, 0x00322a3cUL, 0xbf64cddfUL, 0xba57a68eUL, +0x75c6372bUL, 0x50afd341UL, 0xa7c13275UL, 0x915a0bf5UL, 0x6b54bfabUL, 0x2b0b1426UL, +0xab4cc9d7UL, 0x449ccd82UL, 0xf7fbf265UL, 0xab85c5f3UL, 0x1b55db94UL, 0xaad4e324UL, +0xcfa4bd3fUL, 0x2deaa3e2UL, 0x9e204d02UL, 0xc8bd25acUL, 0xeadf55b3UL, 0xd5bd9e98UL, +0xe31231b2UL, 0x2ad5ad6cUL, 0x954329deUL, 0xadbe4528UL, 0xd8710f69UL, 0xaa51c90fUL, +0xaa786bf6UL, 0x22513f1eUL, 0xaa51a79bUL, 0x2ad344ccUL, 0x7b5a41f0UL, 0xd37cfbadUL, +0x1b069505UL, 0x41ece491UL, 0xb4c332e6UL, 0x032268d4UL, 0xc9600accUL, 0xce387e6dUL, +0xbf6bb16cUL, 0x6a70fb78UL, 0x0d03d9c9UL, 0xd4df39deUL, 0xe01063daUL, 0x4736f464UL, +0x5ad328d8UL, 0xb347cc96UL, 0x75bb0fc3UL, 0x98511bfbUL, 0x4ffbcc35UL, 0xb58bcf6aUL, +0xe11f0abcUL, 0xbfc5fe4aUL, 0xa70aec10UL, 0xac39570aUL, 0x3f04442fUL, 0x6188b153UL, +0xe0397a2eUL, 0x5727cb79UL, 0x9ceb418fUL, 0x1cacd68dUL, 0x2ad37c96UL, 0x0175cb9dUL, +0xc69dff09UL, 0xc75b65f0UL, 0xd9db40d8UL, 0xec0e7779UL, 0x4744ead4UL, 0xb11c3274UL, +0xdd24cb9eUL, 0x7e1c54bdUL, 0xf01144f9UL, 0xd2240eb1UL, 0x9675b3fdUL, 0xa3ac3755UL, +0xd47c27afUL, 0x51c85f4dUL, 0x56907596UL, 0xa5bb15e6UL, 0x580304f0UL, 0xca042cf1UL, +0x011a37eaUL, 0x8dbfaadbUL, 0x35ba3e4aUL, 0x3526ffa0UL, 0xc37b4d09UL, 0xbc306ed9UL, +0x98a52666UL, 0x5648f725UL, 0xff5e569dUL, 0x0ced63d0UL, 0x7c63b2cfUL, 0x700b45e1UL, +0xd5ea50f1UL, 0x85a92872UL, 0xaf1fbda7UL, 0xd4234870UL, 0xa7870bf3UL, 0x2d3b4d79UL, +0x42e04198UL, 0x0cd0ede7UL, 0x26470db8UL, 0xf881814cUL, 0x474d6ad7UL, 0x7c0c5e5cUL, +0xd1231959UL, 0x381b7298UL, 0xf5d2f4dbUL, 0xab838653UL, 0x6e2f1e23UL, 0x83719c9eUL, +0xbd91e046UL, 0x9a56456eUL, 0xdc39200cUL, 0x20c8c571UL, 0x962bda1cUL, 0xe1e696ffUL, +0xb141ab08UL, 0x7cca89b9UL, 0x1a69e783UL, 0x02cc4843UL, 0xa2f7c579UL, 0x429ef47dUL, +0x427b169cUL, 0x5ac9f049UL, 0xdd8f0f00UL, 0x5c8165bfUL}; + +static const ulong32 S2[256] = { +0x1f201094UL, 0xef0ba75bUL, 0x69e3cf7eUL, 0x393f4380UL, 0xfe61cf7aUL, 0xeec5207aUL, +0x55889c94UL, 0x72fc0651UL, 0xada7ef79UL, 0x4e1d7235UL, 0xd55a63ceUL, 0xde0436baUL, +0x99c430efUL, 0x5f0c0794UL, 0x18dcdb7dUL, 0xa1d6eff3UL, 0xa0b52f7bUL, 0x59e83605UL, +0xee15b094UL, 0xe9ffd909UL, 0xdc440086UL, 0xef944459UL, 0xba83ccb3UL, 0xe0c3cdfbUL, +0xd1da4181UL, 0x3b092ab1UL, 0xf997f1c1UL, 0xa5e6cf7bUL, 0x01420ddbUL, 0xe4e7ef5bUL, +0x25a1ff41UL, 0xe180f806UL, 0x1fc41080UL, 0x179bee7aUL, 0xd37ac6a9UL, 0xfe5830a4UL, +0x98de8b7fUL, 0x77e83f4eUL, 0x79929269UL, 0x24fa9f7bUL, 0xe113c85bUL, 0xacc40083UL, +0xd7503525UL, 0xf7ea615fUL, 0x62143154UL, 0x0d554b63UL, 0x5d681121UL, 0xc866c359UL, +0x3d63cf73UL, 0xcee234c0UL, 0xd4d87e87UL, 0x5c672b21UL, 0x071f6181UL, 0x39f7627fUL, +0x361e3084UL, 0xe4eb573bUL, 0x602f64a4UL, 0xd63acd9cUL, 0x1bbc4635UL, 0x9e81032dUL, +0x2701f50cUL, 0x99847ab4UL, 0xa0e3df79UL, 0xba6cf38cUL, 0x10843094UL, 0x2537a95eUL, +0xf46f6ffeUL, 0xa1ff3b1fUL, 0x208cfb6aUL, 0x8f458c74UL, 0xd9e0a227UL, 0x4ec73a34UL, +0xfc884f69UL, 0x3e4de8dfUL, 0xef0e0088UL, 0x3559648dUL, 0x8a45388cUL, 0x1d804366UL, +0x721d9bfdUL, 0xa58684bbUL, 0xe8256333UL, 0x844e8212UL, 0x128d8098UL, 0xfed33fb4UL, +0xce280ae1UL, 0x27e19ba5UL, 0xd5a6c252UL, 0xe49754bdUL, 0xc5d655ddUL, 0xeb667064UL, +0x77840b4dUL, 0xa1b6a801UL, 0x84db26a9UL, 0xe0b56714UL, 0x21f043b7UL, 0xe5d05860UL, +0x54f03084UL, 0x066ff472UL, 0xa31aa153UL, 0xdadc4755UL, 0xb5625dbfUL, 0x68561be6UL, +0x83ca6b94UL, 0x2d6ed23bUL, 0xeccf01dbUL, 0xa6d3d0baUL, 0xb6803d5cUL, 0xaf77a709UL, +0x33b4a34cUL, 0x397bc8d6UL, 0x5ee22b95UL, 0x5f0e5304UL, 0x81ed6f61UL, 0x20e74364UL, +0xb45e1378UL, 0xde18639bUL, 0x881ca122UL, 0xb96726d1UL, 0x8049a7e8UL, 0x22b7da7bUL, +0x5e552d25UL, 0x5272d237UL, 0x79d2951cUL, 0xc60d894cUL, 0x488cb402UL, 0x1ba4fe5bUL, +0xa4b09f6bUL, 0x1ca815cfUL, 0xa20c3005UL, 0x8871df63UL, 0xb9de2fcbUL, 0x0cc6c9e9UL, +0x0beeff53UL, 0xe3214517UL, 0xb4542835UL, 0x9f63293cUL, 0xee41e729UL, 0x6e1d2d7cUL, +0x50045286UL, 0x1e6685f3UL, 0xf33401c6UL, 0x30a22c95UL, 0x31a70850UL, 0x60930f13UL, +0x73f98417UL, 0xa1269859UL, 0xec645c44UL, 0x52c877a9UL, 0xcdff33a6UL, 0xa02b1741UL, +0x7cbad9a2UL, 0x2180036fUL, 0x50d99c08UL, 0xcb3f4861UL, 0xc26bd765UL, 0x64a3f6abUL, +0x80342676UL, 0x25a75e7bUL, 0xe4e6d1fcUL, 0x20c710e6UL, 0xcdf0b680UL, 0x17844d3bUL, +0x31eef84dUL, 0x7e0824e4UL, 0x2ccb49ebUL, 0x846a3baeUL, 0x8ff77888UL, 0xee5d60f6UL, +0x7af75673UL, 0x2fdd5cdbUL, 0xa11631c1UL, 0x30f66f43UL, 0xb3faec54UL, 0x157fd7faUL, +0xef8579ccUL, 0xd152de58UL, 0xdb2ffd5eUL, 0x8f32ce19UL, 0x306af97aUL, 0x02f03ef8UL, +0x99319ad5UL, 0xc242fa0fUL, 0xa7e3ebb0UL, 0xc68e4906UL, 0xb8da230cUL, 0x80823028UL, +0xdcdef3c8UL, 0xd35fb171UL, 0x088a1bc8UL, 0xbec0c560UL, 0x61a3c9e8UL, 0xbca8f54dUL, +0xc72feffaUL, 0x22822e99UL, 0x82c570b4UL, 0xd8d94e89UL, 0x8b1c34bcUL, 0x301e16e6UL, +0x273be979UL, 0xb0ffeaa6UL, 0x61d9b8c6UL, 0x00b24869UL, 0xb7ffce3fUL, 0x08dc283bUL, +0x43daf65aUL, 0xf7e19798UL, 0x7619b72fUL, 0x8f1c9ba4UL, 0xdc8637a0UL, 0x16a7d3b1UL, +0x9fc393b7UL, 0xa7136eebUL, 0xc6bcc63eUL, 0x1a513742UL, 0xef6828bcUL, 0x520365d6UL, +0x2d6a77abUL, 0x3527ed4bUL, 0x821fd216UL, 0x095c6e2eUL, 0xdb92f2fbUL, 0x5eea29cbUL, +0x145892f5UL, 0x91584f7fUL, 0x5483697bUL, 0x2667a8ccUL, 0x85196048UL, 0x8c4baceaUL, +0x833860d4UL, 0x0d23e0f9UL, 0x6c387e8aUL, 0x0ae6d249UL, 0xb284600cUL, 0xd835731dUL, +0xdcb1c647UL, 0xac4c56eaUL, 0x3ebd81b3UL, 0x230eabb0UL, 0x6438bc87UL, 0xf0b5b1faUL, +0x8f5ea2b3UL, 0xfc184642UL, 0x0a036b7aUL, 0x4fb089bdUL, 0x649da589UL, 0xa345415eUL, +0x5c038323UL, 0x3e5d3bb9UL, 0x43d79572UL, 0x7e6dd07cUL, 0x06dfdf1eUL, 0x6c6cc4efUL, +0x7160a539UL, 0x73bfbe70UL, 0x83877605UL, 0x4523ecf1UL}; + +static const ulong32 S3[256] = { +0x8defc240UL, 0x25fa5d9fUL, 0xeb903dbfUL, 0xe810c907UL, 0x47607fffUL, 0x369fe44bUL, +0x8c1fc644UL, 0xaececa90UL, 0xbeb1f9bfUL, 0xeefbcaeaUL, 0xe8cf1950UL, 0x51df07aeUL, +0x920e8806UL, 0xf0ad0548UL, 0xe13c8d83UL, 0x927010d5UL, 0x11107d9fUL, 0x07647db9UL, +0xb2e3e4d4UL, 0x3d4f285eUL, 0xb9afa820UL, 0xfade82e0UL, 0xa067268bUL, 0x8272792eUL, +0x553fb2c0UL, 0x489ae22bUL, 0xd4ef9794UL, 0x125e3fbcUL, 0x21fffceeUL, 0x825b1bfdUL, +0x9255c5edUL, 0x1257a240UL, 0x4e1a8302UL, 0xbae07fffUL, 0x528246e7UL, 0x8e57140eUL, +0x3373f7bfUL, 0x8c9f8188UL, 0xa6fc4ee8UL, 0xc982b5a5UL, 0xa8c01db7UL, 0x579fc264UL, +0x67094f31UL, 0xf2bd3f5fUL, 0x40fff7c1UL, 0x1fb78dfcUL, 0x8e6bd2c1UL, 0x437be59bUL, +0x99b03dbfUL, 0xb5dbc64bUL, 0x638dc0e6UL, 0x55819d99UL, 0xa197c81cUL, 0x4a012d6eUL, +0xc5884a28UL, 0xccc36f71UL, 0xb843c213UL, 0x6c0743f1UL, 0x8309893cUL, 0x0feddd5fUL, +0x2f7fe850UL, 0xd7c07f7eUL, 0x02507fbfUL, 0x5afb9a04UL, 0xa747d2d0UL, 0x1651192eUL, +0xaf70bf3eUL, 0x58c31380UL, 0x5f98302eUL, 0x727cc3c4UL, 0x0a0fb402UL, 0x0f7fef82UL, +0x8c96fdadUL, 0x5d2c2aaeUL, 0x8ee99a49UL, 0x50da88b8UL, 0x8427f4a0UL, 0x1eac5790UL, +0x796fb449UL, 0x8252dc15UL, 0xefbd7d9bUL, 0xa672597dUL, 0xada840d8UL, 0x45f54504UL, +0xfa5d7403UL, 0xe83ec305UL, 0x4f91751aUL, 0x925669c2UL, 0x23efe941UL, 0xa903f12eUL, +0x60270df2UL, 0x0276e4b6UL, 0x94fd6574UL, 0x927985b2UL, 0x8276dbcbUL, 0x02778176UL, +0xf8af918dUL, 0x4e48f79eUL, 0x8f616ddfUL, 0xe29d840eUL, 0x842f7d83UL, 0x340ce5c8UL, +0x96bbb682UL, 0x93b4b148UL, 0xef303cabUL, 0x984faf28UL, 0x779faf9bUL, 0x92dc560dUL, +0x224d1e20UL, 0x8437aa88UL, 0x7d29dc96UL, 0x2756d3dcUL, 0x8b907ceeUL, 0xb51fd240UL, +0xe7c07ce3UL, 0xe566b4a1UL, 0xc3e9615eUL, 0x3cf8209dUL, 0x6094d1e3UL, 0xcd9ca341UL, +0x5c76460eUL, 0x00ea983bUL, 0xd4d67881UL, 0xfd47572cUL, 0xf76cedd9UL, 0xbda8229cUL, +0x127dadaaUL, 0x438a074eUL, 0x1f97c090UL, 0x081bdb8aUL, 0x93a07ebeUL, 0xb938ca15UL, +0x97b03cffUL, 0x3dc2c0f8UL, 0x8d1ab2ecUL, 0x64380e51UL, 0x68cc7bfbUL, 0xd90f2788UL, +0x12490181UL, 0x5de5ffd4UL, 0xdd7ef86aUL, 0x76a2e214UL, 0xb9a40368UL, 0x925d958fUL, +0x4b39fffaUL, 0xba39aee9UL, 0xa4ffd30bUL, 0xfaf7933bUL, 0x6d498623UL, 0x193cbcfaUL, +0x27627545UL, 0x825cf47aUL, 0x61bd8ba0UL, 0xd11e42d1UL, 0xcead04f4UL, 0x127ea392UL, +0x10428db7UL, 0x8272a972UL, 0x9270c4a8UL, 0x127de50bUL, 0x285ba1c8UL, 0x3c62f44fUL, +0x35c0eaa5UL, 0xe805d231UL, 0x428929fbUL, 0xb4fcdf82UL, 0x4fb66a53UL, 0x0e7dc15bUL, +0x1f081fabUL, 0x108618aeUL, 0xfcfd086dUL, 0xf9ff2889UL, 0x694bcc11UL, 0x236a5caeUL, +0x12deca4dUL, 0x2c3f8cc5UL, 0xd2d02dfeUL, 0xf8ef5896UL, 0xe4cf52daUL, 0x95155b67UL, +0x494a488cUL, 0xb9b6a80cUL, 0x5c8f82bcUL, 0x89d36b45UL, 0x3a609437UL, 0xec00c9a9UL, +0x44715253UL, 0x0a874b49UL, 0xd773bc40UL, 0x7c34671cUL, 0x02717ef6UL, 0x4feb5536UL, +0xa2d02fffUL, 0xd2bf60c4UL, 0xd43f03c0UL, 0x50b4ef6dUL, 0x07478cd1UL, 0x006e1888UL, +0xa2e53f55UL, 0xb9e6d4bcUL, 0xa2048016UL, 0x97573833UL, 0xd7207d67UL, 0xde0f8f3dUL, +0x72f87b33UL, 0xabcc4f33UL, 0x7688c55dUL, 0x7b00a6b0UL, 0x947b0001UL, 0x570075d2UL, +0xf9bb88f8UL, 0x8942019eUL, 0x4264a5ffUL, 0x856302e0UL, 0x72dbd92bUL, 0xee971b69UL, +0x6ea22fdeUL, 0x5f08ae2bUL, 0xaf7a616dUL, 0xe5c98767UL, 0xcf1febd2UL, 0x61efc8c2UL, +0xf1ac2571UL, 0xcc8239c2UL, 0x67214cb8UL, 0xb1e583d1UL, 0xb7dc3e62UL, 0x7f10bdceUL, +0xf90a5c38UL, 0x0ff0443dUL, 0x606e6dc6UL, 0x60543a49UL, 0x5727c148UL, 0x2be98a1dUL, +0x8ab41738UL, 0x20e1be24UL, 0xaf96da0fUL, 0x68458425UL, 0x99833be5UL, 0x600d457dUL, +0x282f9350UL, 0x8334b362UL, 0xd91d1120UL, 0x2b6d8da0UL, 0x642b1e31UL, 0x9c305a00UL, +0x52bce688UL, 0x1b03588aUL, 0xf7baefd5UL, 0x4142ed9cUL, 0xa4315c11UL, 0x83323ec5UL, +0xdfef4636UL, 0xa133c501UL, 0xe9d3531cUL, 0xee353783UL}; + +static const ulong32 S4[256] = { +0x9db30420UL, 0x1fb6e9deUL, 0xa7be7befUL, 0xd273a298UL, 0x4a4f7bdbUL, 0x64ad8c57UL, +0x85510443UL, 0xfa020ed1UL, 0x7e287affUL, 0xe60fb663UL, 0x095f35a1UL, 0x79ebf120UL, +0xfd059d43UL, 0x6497b7b1UL, 0xf3641f63UL, 0x241e4adfUL, 0x28147f5fUL, 0x4fa2b8cdUL, +0xc9430040UL, 0x0cc32220UL, 0xfdd30b30UL, 0xc0a5374fUL, 0x1d2d00d9UL, 0x24147b15UL, +0xee4d111aUL, 0x0fca5167UL, 0x71ff904cUL, 0x2d195ffeUL, 0x1a05645fUL, 0x0c13fefeUL, +0x081b08caUL, 0x05170121UL, 0x80530100UL, 0xe83e5efeUL, 0xac9af4f8UL, 0x7fe72701UL, +0xd2b8ee5fUL, 0x06df4261UL, 0xbb9e9b8aUL, 0x7293ea25UL, 0xce84ffdfUL, 0xf5718801UL, +0x3dd64b04UL, 0xa26f263bUL, 0x7ed48400UL, 0x547eebe6UL, 0x446d4ca0UL, 0x6cf3d6f5UL, +0x2649abdfUL, 0xaea0c7f5UL, 0x36338cc1UL, 0x503f7e93UL, 0xd3772061UL, 0x11b638e1UL, +0x72500e03UL, 0xf80eb2bbUL, 0xabe0502eUL, 0xec8d77deUL, 0x57971e81UL, 0xe14f6746UL, +0xc9335400UL, 0x6920318fUL, 0x081dbb99UL, 0xffc304a5UL, 0x4d351805UL, 0x7f3d5ce3UL, +0xa6c866c6UL, 0x5d5bcca9UL, 0xdaec6feaUL, 0x9f926f91UL, 0x9f46222fUL, 0x3991467dUL, +0xa5bf6d8eUL, 0x1143c44fUL, 0x43958302UL, 0xd0214eebUL, 0x022083b8UL, 0x3fb6180cUL, +0x18f8931eUL, 0x281658e6UL, 0x26486e3eUL, 0x8bd78a70UL, 0x7477e4c1UL, 0xb506e07cUL, +0xf32d0a25UL, 0x79098b02UL, 0xe4eabb81UL, 0x28123b23UL, 0x69dead38UL, 0x1574ca16UL, +0xdf871b62UL, 0x211c40b7UL, 0xa51a9ef9UL, 0x0014377bUL, 0x041e8ac8UL, 0x09114003UL, +0xbd59e4d2UL, 0xe3d156d5UL, 0x4fe876d5UL, 0x2f91a340UL, 0x557be8deUL, 0x00eae4a7UL, +0x0ce5c2ecUL, 0x4db4bba6UL, 0xe756bdffUL, 0xdd3369acUL, 0xec17b035UL, 0x06572327UL, +0x99afc8b0UL, 0x56c8c391UL, 0x6b65811cUL, 0x5e146119UL, 0x6e85cb75UL, 0xbe07c002UL, +0xc2325577UL, 0x893ff4ecUL, 0x5bbfc92dUL, 0xd0ec3b25UL, 0xb7801ab7UL, 0x8d6d3b24UL, +0x20c763efUL, 0xc366a5fcUL, 0x9c382880UL, 0x0ace3205UL, 0xaac9548aUL, 0xeca1d7c7UL, +0x041afa32UL, 0x1d16625aUL, 0x6701902cUL, 0x9b757a54UL, 0x31d477f7UL, 0x9126b031UL, +0x36cc6fdbUL, 0xc70b8b46UL, 0xd9e66a48UL, 0x56e55a79UL, 0x026a4cebUL, 0x52437effUL, +0x2f8f76b4UL, 0x0df980a5UL, 0x8674cde3UL, 0xedda04ebUL, 0x17a9be04UL, 0x2c18f4dfUL, +0xb7747f9dUL, 0xab2af7b4UL, 0xefc34d20UL, 0x2e096b7cUL, 0x1741a254UL, 0xe5b6a035UL, +0x213d42f6UL, 0x2c1c7c26UL, 0x61c2f50fUL, 0x6552daf9UL, 0xd2c231f8UL, 0x25130f69UL, +0xd8167fa2UL, 0x0418f2c8UL, 0x001a96a6UL, 0x0d1526abUL, 0x63315c21UL, 0x5e0a72ecUL, +0x49bafefdUL, 0x187908d9UL, 0x8d0dbd86UL, 0x311170a7UL, 0x3e9b640cUL, 0xcc3e10d7UL, +0xd5cad3b6UL, 0x0caec388UL, 0xf73001e1UL, 0x6c728affUL, 0x71eae2a1UL, 0x1f9af36eUL, +0xcfcbd12fUL, 0xc1de8417UL, 0xac07be6bUL, 0xcb44a1d8UL, 0x8b9b0f56UL, 0x013988c3UL, +0xb1c52fcaUL, 0xb4be31cdUL, 0xd8782806UL, 0x12a3a4e2UL, 0x6f7de532UL, 0x58fd7eb6UL, +0xd01ee900UL, 0x24adffc2UL, 0xf4990fc5UL, 0x9711aac5UL, 0x001d7b95UL, 0x82e5e7d2UL, +0x109873f6UL, 0x00613096UL, 0xc32d9521UL, 0xada121ffUL, 0x29908415UL, 0x7fbb977fUL, +0xaf9eb3dbUL, 0x29c9ed2aUL, 0x5ce2a465UL, 0xa730f32cUL, 0xd0aa3fe8UL, 0x8a5cc091UL, +0xd49e2ce7UL, 0x0ce454a9UL, 0xd60acd86UL, 0x015f1919UL, 0x77079103UL, 0xdea03af6UL, +0x78a8565eUL, 0xdee356dfUL, 0x21f05cbeUL, 0x8b75e387UL, 0xb3c50651UL, 0xb8a5c3efUL, +0xd8eeb6d2UL, 0xe523be77UL, 0xc2154529UL, 0x2f69efdfUL, 0xafe67afbUL, 0xf470c4b2UL, +0xf3e0eb5bUL, 0xd6cc9876UL, 0x39e4460cUL, 0x1fda8538UL, 0x1987832fUL, 0xca007367UL, +0xa99144f8UL, 0x296b299eUL, 0x492fc295UL, 0x9266beabUL, 0xb5676e69UL, 0x9bd3dddaUL, +0xdf7e052fUL, 0xdb25701cUL, 0x1b5e51eeUL, 0xf65324e6UL, 0x6afce36cUL, 0x0316cc04UL, +0x8644213eUL, 0xb7dc59d0UL, 0x7965291fUL, 0xccd6fd43UL, 0x41823979UL, 0x932bcdf6UL, +0xb657c34dUL, 0x4edfd282UL, 0x7ae5290cUL, 0x3cb9536bUL, 0x851e20feUL, 0x9833557eUL, +0x13ecf0b0UL, 0xd3ffb372UL, 0x3f85c5c1UL, 0x0aef7ed2UL}; + +static const ulong32 S5[256] = { +0x7ec90c04UL, 0x2c6e74b9UL, 0x9b0e66dfUL, 0xa6337911UL, 0xb86a7fffUL, 0x1dd358f5UL, +0x44dd9d44UL, 0x1731167fUL, 0x08fbf1faUL, 0xe7f511ccUL, 0xd2051b00UL, 0x735aba00UL, +0x2ab722d8UL, 0x386381cbUL, 0xacf6243aUL, 0x69befd7aUL, 0xe6a2e77fUL, 0xf0c720cdUL, +0xc4494816UL, 0xccf5c180UL, 0x38851640UL, 0x15b0a848UL, 0xe68b18cbUL, 0x4caadeffUL, +0x5f480a01UL, 0x0412b2aaUL, 0x259814fcUL, 0x41d0efe2UL, 0x4e40b48dUL, 0x248eb6fbUL, +0x8dba1cfeUL, 0x41a99b02UL, 0x1a550a04UL, 0xba8f65cbUL, 0x7251f4e7UL, 0x95a51725UL, +0xc106ecd7UL, 0x97a5980aUL, 0xc539b9aaUL, 0x4d79fe6aUL, 0xf2f3f763UL, 0x68af8040UL, +0xed0c9e56UL, 0x11b4958bUL, 0xe1eb5a88UL, 0x8709e6b0UL, 0xd7e07156UL, 0x4e29fea7UL, +0x6366e52dUL, 0x02d1c000UL, 0xc4ac8e05UL, 0x9377f571UL, 0x0c05372aUL, 0x578535f2UL, +0x2261be02UL, 0xd642a0c9UL, 0xdf13a280UL, 0x74b55bd2UL, 0x682199c0UL, 0xd421e5ecUL, +0x53fb3ce8UL, 0xc8adedb3UL, 0x28a87fc9UL, 0x3d959981UL, 0x5c1ff900UL, 0xfe38d399UL, +0x0c4eff0bUL, 0x062407eaUL, 0xaa2f4fb1UL, 0x4fb96976UL, 0x90c79505UL, 0xb0a8a774UL, +0xef55a1ffUL, 0xe59ca2c2UL, 0xa6b62d27UL, 0xe66a4263UL, 0xdf65001fUL, 0x0ec50966UL, +0xdfdd55bcUL, 0x29de0655UL, 0x911e739aUL, 0x17af8975UL, 0x32c7911cUL, 0x89f89468UL, +0x0d01e980UL, 0x524755f4UL, 0x03b63cc9UL, 0x0cc844b2UL, 0xbcf3f0aaUL, 0x87ac36e9UL, +0xe53a7426UL, 0x01b3d82bUL, 0x1a9e7449UL, 0x64ee2d7eUL, 0xcddbb1daUL, 0x01c94910UL, +0xb868bf80UL, 0x0d26f3fdUL, 0x9342ede7UL, 0x04a5c284UL, 0x636737b6UL, 0x50f5b616UL, +0xf24766e3UL, 0x8eca36c1UL, 0x136e05dbUL, 0xfef18391UL, 0xfb887a37UL, 0xd6e7f7d4UL, +0xc7fb7dc9UL, 0x3063fcdfUL, 0xb6f589deUL, 0xec2941daUL, 0x26e46695UL, 0xb7566419UL, +0xf654efc5UL, 0xd08d58b7UL, 0x48925401UL, 0xc1bacb7fUL, 0xe5ff550fUL, 0xb6083049UL, +0x5bb5d0e8UL, 0x87d72e5aUL, 0xab6a6ee1UL, 0x223a66ceUL, 0xc62bf3cdUL, 0x9e0885f9UL, +0x68cb3e47UL, 0x086c010fUL, 0xa21de820UL, 0xd18b69deUL, 0xf3f65777UL, 0xfa02c3f6UL, +0x407edac3UL, 0xcbb3d550UL, 0x1793084dUL, 0xb0d70ebaUL, 0x0ab378d5UL, 0xd951fb0cUL, +0xded7da56UL, 0x4124bbe4UL, 0x94ca0b56UL, 0x0f5755d1UL, 0xe0e1e56eUL, 0x6184b5beUL, +0x580a249fUL, 0x94f74bc0UL, 0xe327888eUL, 0x9f7b5561UL, 0xc3dc0280UL, 0x05687715UL, +0x646c6bd7UL, 0x44904db3UL, 0x66b4f0a3UL, 0xc0f1648aUL, 0x697ed5afUL, 0x49e92ff6UL, +0x309e374fUL, 0x2cb6356aUL, 0x85808573UL, 0x4991f840UL, 0x76f0ae02UL, 0x083be84dUL, +0x28421c9aUL, 0x44489406UL, 0x736e4cb8UL, 0xc1092910UL, 0x8bc95fc6UL, 0x7d869cf4UL, +0x134f616fUL, 0x2e77118dUL, 0xb31b2be1UL, 0xaa90b472UL, 0x3ca5d717UL, 0x7d161bbaUL, +0x9cad9010UL, 0xaf462ba2UL, 0x9fe459d2UL, 0x45d34559UL, 0xd9f2da13UL, 0xdbc65487UL, +0xf3e4f94eUL, 0x176d486fUL, 0x097c13eaUL, 0x631da5c7UL, 0x445f7382UL, 0x175683f4UL, +0xcdc66a97UL, 0x70be0288UL, 0xb3cdcf72UL, 0x6e5dd2f3UL, 0x20936079UL, 0x459b80a5UL, +0xbe60e2dbUL, 0xa9c23101UL, 0xeba5315cUL, 0x224e42f2UL, 0x1c5c1572UL, 0xf6721b2cUL, +0x1ad2fff3UL, 0x8c25404eUL, 0x324ed72fUL, 0x4067b7fdUL, 0x0523138eUL, 0x5ca3bc78UL, +0xdc0fd66eUL, 0x75922283UL, 0x784d6b17UL, 0x58ebb16eUL, 0x44094f85UL, 0x3f481d87UL, +0xfcfeae7bUL, 0x77b5ff76UL, 0x8c2302bfUL, 0xaaf47556UL, 0x5f46b02aUL, 0x2b092801UL, +0x3d38f5f7UL, 0x0ca81f36UL, 0x52af4a8aUL, 0x66d5e7c0UL, 0xdf3b0874UL, 0x95055110UL, +0x1b5ad7a8UL, 0xf61ed5adUL, 0x6cf6e479UL, 0x20758184UL, 0xd0cefa65UL, 0x88f7be58UL, +0x4a046826UL, 0x0ff6f8f3UL, 0xa09c7f70UL, 0x5346aba0UL, 0x5ce96c28UL, 0xe176eda3UL, +0x6bac307fUL, 0x376829d2UL, 0x85360fa9UL, 0x17e3fe2aUL, 0x24b79767UL, 0xf5a96b20UL, +0xd6cd2595UL, 0x68ff1ebfUL, 0x7555442cUL, 0xf19f06beUL, 0xf9e0659aUL, 0xeeb9491dUL, +0x34010718UL, 0xbb30cab8UL, 0xe822fe15UL, 0x88570983UL, 0x750e6249UL, 0xda627e55UL, +0x5e76ffa8UL, 0xb1534546UL, 0x6d47de08UL, 0xefe9e7d4UL}; + +static const ulong32 S6[256] = { +0xf6fa8f9dUL, 0x2cac6ce1UL, 0x4ca34867UL, 0xe2337f7cUL, 0x95db08e7UL, 0x016843b4UL, +0xeced5cbcUL, 0x325553acUL, 0xbf9f0960UL, 0xdfa1e2edUL, 0x83f0579dUL, 0x63ed86b9UL, +0x1ab6a6b8UL, 0xde5ebe39UL, 0xf38ff732UL, 0x8989b138UL, 0x33f14961UL, 0xc01937bdUL, +0xf506c6daUL, 0xe4625e7eUL, 0xa308ea99UL, 0x4e23e33cUL, 0x79cbd7ccUL, 0x48a14367UL, +0xa3149619UL, 0xfec94bd5UL, 0xa114174aUL, 0xeaa01866UL, 0xa084db2dUL, 0x09a8486fUL, +0xa888614aUL, 0x2900af98UL, 0x01665991UL, 0xe1992863UL, 0xc8f30c60UL, 0x2e78ef3cUL, +0xd0d51932UL, 0xcf0fec14UL, 0xf7ca07d2UL, 0xd0a82072UL, 0xfd41197eUL, 0x9305a6b0UL, +0xe86be3daUL, 0x74bed3cdUL, 0x372da53cUL, 0x4c7f4448UL, 0xdab5d440UL, 0x6dba0ec3UL, +0x083919a7UL, 0x9fbaeed9UL, 0x49dbcfb0UL, 0x4e670c53UL, 0x5c3d9c01UL, 0x64bdb941UL, +0x2c0e636aUL, 0xba7dd9cdUL, 0xea6f7388UL, 0xe70bc762UL, 0x35f29adbUL, 0x5c4cdd8dUL, +0xf0d48d8cUL, 0xb88153e2UL, 0x08a19866UL, 0x1ae2eac8UL, 0x284caf89UL, 0xaa928223UL, +0x9334be53UL, 0x3b3a21bfUL, 0x16434be3UL, 0x9aea3906UL, 0xefe8c36eUL, 0xf890cdd9UL, +0x80226daeUL, 0xc340a4a3UL, 0xdf7e9c09UL, 0xa694a807UL, 0x5b7c5eccUL, 0x221db3a6UL, +0x9a69a02fUL, 0x68818a54UL, 0xceb2296fUL, 0x53c0843aUL, 0xfe893655UL, 0x25bfe68aUL, +0xb4628abcUL, 0xcf222ebfUL, 0x25ac6f48UL, 0xa9a99387UL, 0x53bddb65UL, 0xe76ffbe7UL, +0xe967fd78UL, 0x0ba93563UL, 0x8e342bc1UL, 0xe8a11be9UL, 0x4980740dUL, 0xc8087dfcUL, +0x8de4bf99UL, 0xa11101a0UL, 0x7fd37975UL, 0xda5a26c0UL, 0xe81f994fUL, 0x9528cd89UL, +0xfd339fedUL, 0xb87834bfUL, 0x5f04456dUL, 0x22258698UL, 0xc9c4c83bUL, 0x2dc156beUL, +0x4f628daaUL, 0x57f55ec5UL, 0xe2220abeUL, 0xd2916ebfUL, 0x4ec75b95UL, 0x24f2c3c0UL, +0x42d15d99UL, 0xcd0d7fa0UL, 0x7b6e27ffUL, 0xa8dc8af0UL, 0x7345c106UL, 0xf41e232fUL, +0x35162386UL, 0xe6ea8926UL, 0x3333b094UL, 0x157ec6f2UL, 0x372b74afUL, 0x692573e4UL, +0xe9a9d848UL, 0xf3160289UL, 0x3a62ef1dUL, 0xa787e238UL, 0xf3a5f676UL, 0x74364853UL, +0x20951063UL, 0x4576698dUL, 0xb6fad407UL, 0x592af950UL, 0x36f73523UL, 0x4cfb6e87UL, +0x7da4cec0UL, 0x6c152daaUL, 0xcb0396a8UL, 0xc50dfe5dUL, 0xfcd707abUL, 0x0921c42fUL, +0x89dff0bbUL, 0x5fe2be78UL, 0x448f4f33UL, 0x754613c9UL, 0x2b05d08dUL, 0x48b9d585UL, +0xdc049441UL, 0xc8098f9bUL, 0x7dede786UL, 0xc39a3373UL, 0x42410005UL, 0x6a091751UL, +0x0ef3c8a6UL, 0x890072d6UL, 0x28207682UL, 0xa9a9f7beUL, 0xbf32679dUL, 0xd45b5b75UL, +0xb353fd00UL, 0xcbb0e358UL, 0x830f220aUL, 0x1f8fb214UL, 0xd372cf08UL, 0xcc3c4a13UL, +0x8cf63166UL, 0x061c87beUL, 0x88c98f88UL, 0x6062e397UL, 0x47cf8e7aUL, 0xb6c85283UL, +0x3cc2acfbUL, 0x3fc06976UL, 0x4e8f0252UL, 0x64d8314dUL, 0xda3870e3UL, 0x1e665459UL, +0xc10908f0UL, 0x513021a5UL, 0x6c5b68b7UL, 0x822f8aa0UL, 0x3007cd3eUL, 0x74719eefUL, +0xdc872681UL, 0x073340d4UL, 0x7e432fd9UL, 0x0c5ec241UL, 0x8809286cUL, 0xf592d891UL, +0x08a930f6UL, 0x957ef305UL, 0xb7fbffbdUL, 0xc266e96fUL, 0x6fe4ac98UL, 0xb173ecc0UL, +0xbc60b42aUL, 0x953498daUL, 0xfba1ae12UL, 0x2d4bd736UL, 0x0f25faabUL, 0xa4f3fcebUL, +0xe2969123UL, 0x257f0c3dUL, 0x9348af49UL, 0x361400bcUL, 0xe8816f4aUL, 0x3814f200UL, +0xa3f94043UL, 0x9c7a54c2UL, 0xbc704f57UL, 0xda41e7f9UL, 0xc25ad33aUL, 0x54f4a084UL, +0xb17f5505UL, 0x59357cbeUL, 0xedbd15c8UL, 0x7f97c5abUL, 0xba5ac7b5UL, 0xb6f6deafUL, +0x3a479c3aUL, 0x5302da25UL, 0x653d7e6aUL, 0x54268d49UL, 0x51a477eaUL, 0x5017d55bUL, +0xd7d25d88UL, 0x44136c76UL, 0x0404a8c8UL, 0xb8e5a121UL, 0xb81a928aUL, 0x60ed5869UL, +0x97c55b96UL, 0xeaec991bUL, 0x29935913UL, 0x01fdb7f1UL, 0x088e8dfaUL, 0x9ab6f6f5UL, +0x3b4cbf9fUL, 0x4a5de3abUL, 0xe6051d35UL, 0xa0e1d855UL, 0xd36b4cf1UL, 0xf544edebUL, +0xb0e93524UL, 0xbebb8fbdUL, 0xa2d762cfUL, 0x49c92f54UL, 0x38b5f331UL, 0x7128a454UL, +0x48392905UL, 0xa65b1db8UL, 0x851c97bdUL, 0xd675cf2fUL}; + +static const ulong32 S7[256] = { +0x85e04019UL, 0x332bf567UL, 0x662dbfffUL, 0xcfc65693UL, 0x2a8d7f6fUL, 0xab9bc912UL, +0xde6008a1UL, 0x2028da1fUL, 0x0227bce7UL, 0x4d642916UL, 0x18fac300UL, 0x50f18b82UL, +0x2cb2cb11UL, 0xb232e75cUL, 0x4b3695f2UL, 0xb28707deUL, 0xa05fbcf6UL, 0xcd4181e9UL, +0xe150210cUL, 0xe24ef1bdUL, 0xb168c381UL, 0xfde4e789UL, 0x5c79b0d8UL, 0x1e8bfd43UL, +0x4d495001UL, 0x38be4341UL, 0x913cee1dUL, 0x92a79c3fUL, 0x089766beUL, 0xbaeeadf4UL, +0x1286becfUL, 0xb6eacb19UL, 0x2660c200UL, 0x7565bde4UL, 0x64241f7aUL, 0x8248dca9UL, +0xc3b3ad66UL, 0x28136086UL, 0x0bd8dfa8UL, 0x356d1cf2UL, 0x107789beUL, 0xb3b2e9ceUL, +0x0502aa8fUL, 0x0bc0351eUL, 0x166bf52aUL, 0xeb12ff82UL, 0xe3486911UL, 0xd34d7516UL, +0x4e7b3affUL, 0x5f43671bUL, 0x9cf6e037UL, 0x4981ac83UL, 0x334266ceUL, 0x8c9341b7UL, +0xd0d854c0UL, 0xcb3a6c88UL, 0x47bc2829UL, 0x4725ba37UL, 0xa66ad22bUL, 0x7ad61f1eUL, +0x0c5cbafaUL, 0x4437f107UL, 0xb6e79962UL, 0x42d2d816UL, 0x0a961288UL, 0xe1a5c06eUL, +0x13749e67UL, 0x72fc081aUL, 0xb1d139f7UL, 0xf9583745UL, 0xcf19df58UL, 0xbec3f756UL, +0xc06eba30UL, 0x07211b24UL, 0x45c28829UL, 0xc95e317fUL, 0xbc8ec511UL, 0x38bc46e9UL, +0xc6e6fa14UL, 0xbae8584aUL, 0xad4ebc46UL, 0x468f508bUL, 0x7829435fUL, 0xf124183bUL, +0x821dba9fUL, 0xaff60ff4UL, 0xea2c4e6dUL, 0x16e39264UL, 0x92544a8bUL, 0x009b4fc3UL, +0xaba68cedUL, 0x9ac96f78UL, 0x06a5b79aUL, 0xb2856e6eUL, 0x1aec3ca9UL, 0xbe838688UL, +0x0e0804e9UL, 0x55f1be56UL, 0xe7e5363bUL, 0xb3a1f25dUL, 0xf7debb85UL, 0x61fe033cUL, +0x16746233UL, 0x3c034c28UL, 0xda6d0c74UL, 0x79aac56cUL, 0x3ce4e1adUL, 0x51f0c802UL, +0x98f8f35aUL, 0x1626a49fUL, 0xeed82b29UL, 0x1d382fe3UL, 0x0c4fb99aUL, 0xbb325778UL, +0x3ec6d97bUL, 0x6e77a6a9UL, 0xcb658b5cUL, 0xd45230c7UL, 0x2bd1408bUL, 0x60c03eb7UL, +0xb9068d78UL, 0xa33754f4UL, 0xf430c87dUL, 0xc8a71302UL, 0xb96d8c32UL, 0xebd4e7beUL, +0xbe8b9d2dUL, 0x7979fb06UL, 0xe7225308UL, 0x8b75cf77UL, 0x11ef8da4UL, 0xe083c858UL, +0x8d6b786fUL, 0x5a6317a6UL, 0xfa5cf7a0UL, 0x5dda0033UL, 0xf28ebfb0UL, 0xf5b9c310UL, +0xa0eac280UL, 0x08b9767aUL, 0xa3d9d2b0UL, 0x79d34217UL, 0x021a718dUL, 0x9ac6336aUL, +0x2711fd60UL, 0x438050e3UL, 0x069908a8UL, 0x3d7fedc4UL, 0x826d2befUL, 0x4eeb8476UL, +0x488dcf25UL, 0x36c9d566UL, 0x28e74e41UL, 0xc2610acaUL, 0x3d49a9cfUL, 0xbae3b9dfUL, +0xb65f8de6UL, 0x92aeaf64UL, 0x3ac7d5e6UL, 0x9ea80509UL, 0xf22b017dUL, 0xa4173f70UL, +0xdd1e16c3UL, 0x15e0d7f9UL, 0x50b1b887UL, 0x2b9f4fd5UL, 0x625aba82UL, 0x6a017962UL, +0x2ec01b9cUL, 0x15488aa9UL, 0xd716e740UL, 0x40055a2cUL, 0x93d29a22UL, 0xe32dbf9aUL, +0x058745b9UL, 0x3453dc1eUL, 0xd699296eUL, 0x496cff6fUL, 0x1c9f4986UL, 0xdfe2ed07UL, +0xb87242d1UL, 0x19de7eaeUL, 0x053e561aUL, 0x15ad6f8cUL, 0x66626c1cUL, 0x7154c24cUL, +0xea082b2aUL, 0x93eb2939UL, 0x17dcb0f0UL, 0x58d4f2aeUL, 0x9ea294fbUL, 0x52cf564cUL, +0x9883fe66UL, 0x2ec40581UL, 0x763953c3UL, 0x01d6692eUL, 0xd3a0c108UL, 0xa1e7160eUL, +0xe4f2dfa6UL, 0x693ed285UL, 0x74904698UL, 0x4c2b0eddUL, 0x4f757656UL, 0x5d393378UL, +0xa132234fUL, 0x3d321c5dUL, 0xc3f5e194UL, 0x4b269301UL, 0xc79f022fUL, 0x3c997e7eUL, +0x5e4f9504UL, 0x3ffafbbdUL, 0x76f7ad0eUL, 0x296693f4UL, 0x3d1fce6fUL, 0xc61e45beUL, +0xd3b5ab34UL, 0xf72bf9b7UL, 0x1b0434c0UL, 0x4e72b567UL, 0x5592a33dUL, 0xb5229301UL, +0xcfd2a87fUL, 0x60aeb767UL, 0x1814386bUL, 0x30bcc33dUL, 0x38a0c07dUL, 0xfd1606f2UL, +0xc363519bUL, 0x589dd390UL, 0x5479f8e6UL, 0x1cb8d647UL, 0x97fd61a9UL, 0xea7759f4UL, +0x2d57539dUL, 0x569a58cfUL, 0xe84e63adUL, 0x462e1b78UL, 0x6580f87eUL, 0xf3817914UL, +0x91da55f4UL, 0x40a230f3UL, 0xd1988f35UL, 0xb6e318d2UL, 0x3ffa50bcUL, 0x3d40f021UL, +0xc3c0bdaeUL, 0x4958c24cUL, 0x518f36b2UL, 0x84b1d370UL, 0x0fedce83UL, 0x878ddadaUL, +0xf2a279c7UL, 0x94e01be8UL, 0x90716f4bUL, 0x954b8aa3UL}; + +static const ulong32 S8[256] = { +0xe216300dUL, 0xbbddfffcUL, 0xa7ebdabdUL, 0x35648095UL, 0x7789f8b7UL, 0xe6c1121bUL, +0x0e241600UL, 0x052ce8b5UL, 0x11a9cfb0UL, 0xe5952f11UL, 0xece7990aUL, 0x9386d174UL, +0x2a42931cUL, 0x76e38111UL, 0xb12def3aUL, 0x37ddddfcUL, 0xde9adeb1UL, 0x0a0cc32cUL, +0xbe197029UL, 0x84a00940UL, 0xbb243a0fUL, 0xb4d137cfUL, 0xb44e79f0UL, 0x049eedfdUL, +0x0b15a15dUL, 0x480d3168UL, 0x8bbbde5aUL, 0x669ded42UL, 0xc7ece831UL, 0x3f8f95e7UL, +0x72df191bUL, 0x7580330dUL, 0x94074251UL, 0x5c7dcdfaUL, 0xabbe6d63UL, 0xaa402164UL, +0xb301d40aUL, 0x02e7d1caUL, 0x53571daeUL, 0x7a3182a2UL, 0x12a8ddecUL, 0xfdaa335dUL, +0x176f43e8UL, 0x71fb46d4UL, 0x38129022UL, 0xce949ad4UL, 0xb84769adUL, 0x965bd862UL, +0x82f3d055UL, 0x66fb9767UL, 0x15b80b4eUL, 0x1d5b47a0UL, 0x4cfde06fUL, 0xc28ec4b8UL, +0x57e8726eUL, 0x647a78fcUL, 0x99865d44UL, 0x608bd593UL, 0x6c200e03UL, 0x39dc5ff6UL, +0x5d0b00a3UL, 0xae63aff2UL, 0x7e8bd632UL, 0x70108c0cUL, 0xbbd35049UL, 0x2998df04UL, +0x980cf42aUL, 0x9b6df491UL, 0x9e7edd53UL, 0x06918548UL, 0x58cb7e07UL, 0x3b74ef2eUL, +0x522fffb1UL, 0xd24708ccUL, 0x1c7e27cdUL, 0xa4eb215bUL, 0x3cf1d2e2UL, 0x19b47a38UL, +0x424f7618UL, 0x35856039UL, 0x9d17dee7UL, 0x27eb35e6UL, 0xc9aff67bUL, 0x36baf5b8UL, +0x09c467cdUL, 0xc18910b1UL, 0xe11dbf7bUL, 0x06cd1af8UL, 0x7170c608UL, 0x2d5e3354UL, +0xd4de495aUL, 0x64c6d006UL, 0xbcc0c62cUL, 0x3dd00db3UL, 0x708f8f34UL, 0x77d51b42UL, +0x264f620fUL, 0x24b8d2bfUL, 0x15c1b79eUL, 0x46a52564UL, 0xf8d7e54eUL, 0x3e378160UL, +0x7895cda5UL, 0x859c15a5UL, 0xe6459788UL, 0xc37bc75fUL, 0xdb07ba0cUL, 0x0676a3abUL, +0x7f229b1eUL, 0x31842e7bUL, 0x24259fd7UL, 0xf8bef472UL, 0x835ffcb8UL, 0x6df4c1f2UL, +0x96f5b195UL, 0xfd0af0fcUL, 0xb0fe134cUL, 0xe2506d3dUL, 0x4f9b12eaUL, 0xf215f225UL, +0xa223736fUL, 0x9fb4c428UL, 0x25d04979UL, 0x34c713f8UL, 0xc4618187UL, 0xea7a6e98UL, +0x7cd16efcUL, 0x1436876cUL, 0xf1544107UL, 0xbedeee14UL, 0x56e9af27UL, 0xa04aa441UL, +0x3cf7c899UL, 0x92ecbae6UL, 0xdd67016dUL, 0x151682ebUL, 0xa842eedfUL, 0xfdba60b4UL, +0xf1907b75UL, 0x20e3030fUL, 0x24d8c29eUL, 0xe139673bUL, 0xefa63fb8UL, 0x71873054UL, +0xb6f2cf3bUL, 0x9f326442UL, 0xcb15a4ccUL, 0xb01a4504UL, 0xf1e47d8dUL, 0x844a1be5UL, +0xbae7dfdcUL, 0x42cbda70UL, 0xcd7dae0aUL, 0x57e85b7aUL, 0xd53f5af6UL, 0x20cf4d8cUL, +0xcea4d428UL, 0x79d130a4UL, 0x3486ebfbUL, 0x33d3cddcUL, 0x77853b53UL, 0x37effcb5UL, +0xc5068778UL, 0xe580b3e6UL, 0x4e68b8f4UL, 0xc5c8b37eUL, 0x0d809ea2UL, 0x398feb7cUL, +0x132a4f94UL, 0x43b7950eUL, 0x2fee7d1cUL, 0x223613bdUL, 0xdd06caa2UL, 0x37df932bUL, +0xc4248289UL, 0xacf3ebc3UL, 0x5715f6b7UL, 0xef3478ddUL, 0xf267616fUL, 0xc148cbe4UL, +0x9052815eUL, 0x5e410fabUL, 0xb48a2465UL, 0x2eda7fa4UL, 0xe87b40e4UL, 0xe98ea084UL, +0x5889e9e1UL, 0xefd390fcUL, 0xdd07d35bUL, 0xdb485694UL, 0x38d7e5b2UL, 0x57720101UL, +0x730edebcUL, 0x5b643113UL, 0x94917e4fUL, 0x503c2fbaUL, 0x646f1282UL, 0x7523d24aUL, +0xe0779695UL, 0xf9c17a8fUL, 0x7a5b2121UL, 0xd187b896UL, 0x29263a4dUL, 0xba510cdfUL, +0x81f47c9fUL, 0xad1163edUL, 0xea7b5965UL, 0x1a00726eUL, 0x11403092UL, 0x00da6d77UL, +0x4a0cdd61UL, 0xad1f4603UL, 0x605bdfb0UL, 0x9eedc364UL, 0x22ebe6a8UL, 0xcee7d28aUL, +0xa0e736a0UL, 0x5564a6b9UL, 0x10853209UL, 0xc7eb8f37UL, 0x2de705caUL, 0x8951570fUL, +0xdf09822bUL, 0xbd691a6cUL, 0xaa12e4f2UL, 0x87451c0fUL, 0xe0f6a27aUL, 0x3ada4819UL, +0x4cf1764fUL, 0x0d771c2bUL, 0x67cdb156UL, 0x350d8384UL, 0x5938fa0fUL, 0x42399ef3UL, +0x36997b07UL, 0x0e84093dUL, 0x4aa93e61UL, 0x8360d87bUL, 0x1fa98b0cUL, 0x1149382cUL, +0xe97625a5UL, 0x0614d1b7UL, 0x0e25244bUL, 0x0c768347UL, 0x589e8d82UL, 0x0d2059d1UL, +0xa466bb1eUL, 0xf8da0a82UL, 0x04f19130UL, 0xba6e4ec0UL, 0x99265164UL, 0x1ee7230dUL, +0x50b2ad80UL, 0xeaee6801UL, 0x8db2a283UL, 0xea8bf59eUL}; + +/* returns the i'th byte of a variable */ +#ifdef _MSC_VER + #define GB(x, i) ((unsigned char)((x[(15-i)>>2])>>(unsigned)(8*((15-i)&3)))) +#else + #define GB(x, i) (((x[(15-i)>>2])>>(unsigned)(8*((15-i)&3)))&255) +#endif + + /** + Initialize the LTC_CAST5 block cipher + @param key The symmetric key you wish to pass + @param keylen The key length in bytes + @param num_rounds The number of rounds desired (0 for default) + @param skey The key in as scheduled by this function. + @return CRYPT_OK if successful + */ +#ifdef LTC_CLEAN_STACK +static int _cast5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +#else +int cast5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +#endif +{ + ulong32 x[4], z[4]; + unsigned char buf[16]; + int y, i; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(skey != NULL); + + if (num_rounds != 12 && num_rounds != 16 && num_rounds != 0) { + return CRYPT_INVALID_ROUNDS; + } + + if (num_rounds == 12 && keylen > 10) { + return CRYPT_INVALID_ROUNDS; + } + + if (keylen < 5 || keylen > 16) { + return CRYPT_INVALID_KEYSIZE; + } + + /* extend the key as required */ + zeromem(buf, sizeof(buf)); + XMEMCPY(buf, key, (size_t)keylen); + + /* load and start the awful looking network */ + for (y = 0; y < 4; y++) { + LOAD32H(x[3-y],buf+4*y); + } + + for (i = y = 0; y < 2; y++) { + z[3] = x[3] ^ S5[GB(x, 0xD)] ^ S6[GB(x, 0xF)] ^ S7[GB(x, 0xC)] ^ S8[GB(x, 0xE)] ^ S7[GB(x, 0x8)]; + z[2] = x[1] ^ S5[GB(z, 0x0)] ^ S6[GB(z, 0x2)] ^ S7[GB(z, 0x1)] ^ S8[GB(z, 0x3)] ^ S8[GB(x, 0xA)]; + z[1] = x[0] ^ S5[GB(z, 0x7)] ^ S6[GB(z, 0x6)] ^ S7[GB(z, 0x5)] ^ S8[GB(z, 0x4)] ^ S5[GB(x, 0x9)]; + z[0] = x[2] ^ S5[GB(z, 0xA)] ^ S6[GB(z, 0x9)] ^ S7[GB(z, 0xb)] ^ S8[GB(z, 0x8)] ^ S6[GB(x, 0xB)]; + skey->cast5.K[i++] = S5[GB(z, 0x8)] ^ S6[GB(z, 0x9)] ^ S7[GB(z, 0x7)] ^ S8[GB(z, 0x6)] ^ S5[GB(z, 0x2)]; + skey->cast5.K[i++] = S5[GB(z, 0xA)] ^ S6[GB(z, 0xB)] ^ S7[GB(z, 0x5)] ^ S8[GB(z, 0x4)] ^ S6[GB(z, 0x6)]; + skey->cast5.K[i++] = S5[GB(z, 0xC)] ^ S6[GB(z, 0xd)] ^ S7[GB(z, 0x3)] ^ S8[GB(z, 0x2)] ^ S7[GB(z, 0x9)]; + skey->cast5.K[i++] = S5[GB(z, 0xE)] ^ S6[GB(z, 0xF)] ^ S7[GB(z, 0x1)] ^ S8[GB(z, 0x0)] ^ S8[GB(z, 0xc)]; + + x[3] = z[1] ^ S5[GB(z, 0x5)] ^ S6[GB(z, 0x7)] ^ S7[GB(z, 0x4)] ^ S8[GB(z, 0x6)] ^ S7[GB(z, 0x0)]; + x[2] = z[3] ^ S5[GB(x, 0x0)] ^ S6[GB(x, 0x2)] ^ S7[GB(x, 0x1)] ^ S8[GB(x, 0x3)] ^ S8[GB(z, 0x2)]; + x[1] = z[2] ^ S5[GB(x, 0x7)] ^ S6[GB(x, 0x6)] ^ S7[GB(x, 0x5)] ^ S8[GB(x, 0x4)] ^ S5[GB(z, 0x1)]; + x[0] = z[0] ^ S5[GB(x, 0xA)] ^ S6[GB(x, 0x9)] ^ S7[GB(x, 0xb)] ^ S8[GB(x, 0x8)] ^ S6[GB(z, 0x3)]; + skey->cast5.K[i++] = S5[GB(x, 0x3)] ^ S6[GB(x, 0x2)] ^ S7[GB(x, 0xc)] ^ S8[GB(x, 0xd)] ^ S5[GB(x, 0x8)]; + skey->cast5.K[i++] = S5[GB(x, 0x1)] ^ S6[GB(x, 0x0)] ^ S7[GB(x, 0xe)] ^ S8[GB(x, 0xf)] ^ S6[GB(x, 0xd)]; + skey->cast5.K[i++] = S5[GB(x, 0x7)] ^ S6[GB(x, 0x6)] ^ S7[GB(x, 0x8)] ^ S8[GB(x, 0x9)] ^ S7[GB(x, 0x3)]; + skey->cast5.K[i++] = S5[GB(x, 0x5)] ^ S6[GB(x, 0x4)] ^ S7[GB(x, 0xa)] ^ S8[GB(x, 0xb)] ^ S8[GB(x, 0x7)]; + + /* second half */ + z[3] = x[3] ^ S5[GB(x, 0xD)] ^ S6[GB(x, 0xF)] ^ S7[GB(x, 0xC)] ^ S8[GB(x, 0xE)] ^ S7[GB(x, 0x8)]; + z[2] = x[1] ^ S5[GB(z, 0x0)] ^ S6[GB(z, 0x2)] ^ S7[GB(z, 0x1)] ^ S8[GB(z, 0x3)] ^ S8[GB(x, 0xA)]; + z[1] = x[0] ^ S5[GB(z, 0x7)] ^ S6[GB(z, 0x6)] ^ S7[GB(z, 0x5)] ^ S8[GB(z, 0x4)] ^ S5[GB(x, 0x9)]; + z[0] = x[2] ^ S5[GB(z, 0xA)] ^ S6[GB(z, 0x9)] ^ S7[GB(z, 0xb)] ^ S8[GB(z, 0x8)] ^ S6[GB(x, 0xB)]; + skey->cast5.K[i++] = S5[GB(z, 0x3)] ^ S6[GB(z, 0x2)] ^ S7[GB(z, 0xc)] ^ S8[GB(z, 0xd)] ^ S5[GB(z, 0x9)]; + skey->cast5.K[i++] = S5[GB(z, 0x1)] ^ S6[GB(z, 0x0)] ^ S7[GB(z, 0xe)] ^ S8[GB(z, 0xf)] ^ S6[GB(z, 0xc)]; + skey->cast5.K[i++] = S5[GB(z, 0x7)] ^ S6[GB(z, 0x6)] ^ S7[GB(z, 0x8)] ^ S8[GB(z, 0x9)] ^ S7[GB(z, 0x2)]; + skey->cast5.K[i++] = S5[GB(z, 0x5)] ^ S6[GB(z, 0x4)] ^ S7[GB(z, 0xa)] ^ S8[GB(z, 0xb)] ^ S8[GB(z, 0x6)]; + + x[3] = z[1] ^ S5[GB(z, 0x5)] ^ S6[GB(z, 0x7)] ^ S7[GB(z, 0x4)] ^ S8[GB(z, 0x6)] ^ S7[GB(z, 0x0)]; + x[2] = z[3] ^ S5[GB(x, 0x0)] ^ S6[GB(x, 0x2)] ^ S7[GB(x, 0x1)] ^ S8[GB(x, 0x3)] ^ S8[GB(z, 0x2)]; + x[1] = z[2] ^ S5[GB(x, 0x7)] ^ S6[GB(x, 0x6)] ^ S7[GB(x, 0x5)] ^ S8[GB(x, 0x4)] ^ S5[GB(z, 0x1)]; + x[0] = z[0] ^ S5[GB(x, 0xA)] ^ S6[GB(x, 0x9)] ^ S7[GB(x, 0xb)] ^ S8[GB(x, 0x8)] ^ S6[GB(z, 0x3)]; + skey->cast5.K[i++] = S5[GB(x, 0x8)] ^ S6[GB(x, 0x9)] ^ S7[GB(x, 0x7)] ^ S8[GB(x, 0x6)] ^ S5[GB(x, 0x3)]; + skey->cast5.K[i++] = S5[GB(x, 0xa)] ^ S6[GB(x, 0xb)] ^ S7[GB(x, 0x5)] ^ S8[GB(x, 0x4)] ^ S6[GB(x, 0x7)]; + skey->cast5.K[i++] = S5[GB(x, 0xc)] ^ S6[GB(x, 0xd)] ^ S7[GB(x, 0x3)] ^ S8[GB(x, 0x2)] ^ S7[GB(x, 0x8)]; + skey->cast5.K[i++] = S5[GB(x, 0xe)] ^ S6[GB(x, 0xf)] ^ S7[GB(x, 0x1)] ^ S8[GB(x, 0x0)] ^ S8[GB(x, 0xd)]; + } + + skey->cast5.keylen = keylen; + +#ifdef LTC_CLEAN_STACK + zeromem(buf, sizeof(buf)); + zeromem(x, sizeof(x)); + zeromem(z, sizeof(z)); +#endif + + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +int cast5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +{ + int z; + z = _cast5_setup(key, keylen, num_rounds, skey); + burn_stack(sizeof(ulong32)*8 + 16 + sizeof(int)*2); + return z; +} +#endif + +#ifdef _MSC_VER + #define INLINE __inline +#else + #define INLINE +#endif + +INLINE static ulong32 FI(ulong32 R, ulong32 Km, ulong32 Kr) +{ + ulong32 I; + I = (Km + R); + I = ROL(I, Kr); + return ((S1[byte(I, 3)] ^ S2[byte(I,2)]) - S3[byte(I,1)]) + S4[byte(I,0)]; +} + +INLINE static ulong32 FII(ulong32 R, ulong32 Km, ulong32 Kr) +{ + ulong32 I; + I = (Km ^ R); + I = ROL(I, Kr); + return ((S1[byte(I, 3)] - S2[byte(I,2)]) + S3[byte(I,1)]) ^ S4[byte(I,0)]; +} + +INLINE static ulong32 FIII(ulong32 R, ulong32 Km, ulong32 Kr) +{ + ulong32 I; + I = (Km - R); + I = ROL(I, Kr); + return ((S1[byte(I, 3)] + S2[byte(I,2)]) ^ S3[byte(I,1)]) - S4[byte(I,0)]; +} + +/** + Encrypts a block of text with LTC_CAST5 + @param pt The input plaintext (8 bytes) + @param ct The output ciphertext (8 bytes) + @param skey The key as scheduled +*/ +#ifdef LTC_CLEAN_STACK +static int _cast5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +#else +int cast5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +#endif +{ + ulong32 R, L; + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + + LOAD32H(L,&pt[0]); + LOAD32H(R,&pt[4]); + L ^= FI(R, skey->cast5.K[0], skey->cast5.K[16]); + R ^= FII(L, skey->cast5.K[1], skey->cast5.K[17]); + L ^= FIII(R, skey->cast5.K[2], skey->cast5.K[18]); + R ^= FI(L, skey->cast5.K[3], skey->cast5.K[19]); + L ^= FII(R, skey->cast5.K[4], skey->cast5.K[20]); + R ^= FIII(L, skey->cast5.K[5], skey->cast5.K[21]); + L ^= FI(R, skey->cast5.K[6], skey->cast5.K[22]); + R ^= FII(L, skey->cast5.K[7], skey->cast5.K[23]); + L ^= FIII(R, skey->cast5.K[8], skey->cast5.K[24]); + R ^= FI(L, skey->cast5.K[9], skey->cast5.K[25]); + L ^= FII(R, skey->cast5.K[10], skey->cast5.K[26]); + R ^= FIII(L, skey->cast5.K[11], skey->cast5.K[27]); + if (skey->cast5.keylen > 10) { + L ^= FI(R, skey->cast5.K[12], skey->cast5.K[28]); + R ^= FII(L, skey->cast5.K[13], skey->cast5.K[29]); + L ^= FIII(R, skey->cast5.K[14], skey->cast5.K[30]); + R ^= FI(L, skey->cast5.K[15], skey->cast5.K[31]); + } + STORE32H(R,&ct[0]); + STORE32H(L,&ct[4]); + return CRYPT_OK; +} + + +#ifdef LTC_CLEAN_STACK +int cast5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +{ + int err =_cast5_ecb_encrypt(pt,ct,skey); + burn_stack(sizeof(ulong32)*3); + return err; +} +#endif + +/** + Decrypts a block of text with LTC_CAST5 + @param ct The input ciphertext (8 bytes) + @param pt The output plaintext (8 bytes) + @param skey The key as scheduled +*/ +#ifdef LTC_CLEAN_STACK +static int _cast5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +#else +int cast5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +#endif +{ + ulong32 R, L; + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + + LOAD32H(R,&ct[0]); + LOAD32H(L,&ct[4]); + if (skey->cast5.keylen > 10) { + R ^= FI(L, skey->cast5.K[15], skey->cast5.K[31]); + L ^= FIII(R, skey->cast5.K[14], skey->cast5.K[30]); + R ^= FII(L, skey->cast5.K[13], skey->cast5.K[29]); + L ^= FI(R, skey->cast5.K[12], skey->cast5.K[28]); + } + R ^= FIII(L, skey->cast5.K[11], skey->cast5.K[27]); + L ^= FII(R, skey->cast5.K[10], skey->cast5.K[26]); + R ^= FI(L, skey->cast5.K[9], skey->cast5.K[25]); + L ^= FIII(R, skey->cast5.K[8], skey->cast5.K[24]); + R ^= FII(L, skey->cast5.K[7], skey->cast5.K[23]); + L ^= FI(R, skey->cast5.K[6], skey->cast5.K[22]); + R ^= FIII(L, skey->cast5.K[5], skey->cast5.K[21]); + L ^= FII(R, skey->cast5.K[4], skey->cast5.K[20]); + R ^= FI(L, skey->cast5.K[3], skey->cast5.K[19]); + L ^= FIII(R, skey->cast5.K[2], skey->cast5.K[18]); + R ^= FII(L, skey->cast5.K[1], skey->cast5.K[17]); + L ^= FI(R, skey->cast5.K[0], skey->cast5.K[16]); + STORE32H(L,&pt[0]); + STORE32H(R,&pt[4]); + + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +int cast5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +{ + int err = _cast5_ecb_decrypt(ct,pt,skey); + burn_stack(sizeof(ulong32)*3); + return err; +} +#endif + +/** + Performs a self-test of the LTC_CAST5 block cipher + @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled +*/ +int cast5_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const struct { + int keylen; + unsigned char key[16]; + unsigned char pt[8]; + unsigned char ct[8]; + } tests[] = { + { 16, + {0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78, 0x23, 0x45, 0x67, 0x89, 0x34, 0x56, 0x78, 0x9A}, + {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF}, + {0x23, 0x8B, 0x4F, 0xE5, 0x84, 0x7E, 0x44, 0xB2} + }, + { 10, + {0x01, 0x23, 0x45, 0x67, 0x12, 0x34, 0x56, 0x78, 0x23, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF}, + {0xEB, 0x6A, 0x71, 0x1A, 0x2C, 0x02, 0x27, 0x1B}, + }, + { 5, + {0x01, 0x23, 0x45, 0x67, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF}, + {0x7A, 0xC8, 0x16, 0xD1, 0x6E, 0x9B, 0x30, 0x2E} + } + }; + int i, y, err; + symmetric_key key; + unsigned char tmp[2][8]; + + for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { + if ((err = cast5_setup(tests[i].key, tests[i].keylen, 0, &key)) != CRYPT_OK) { + return err; + } + cast5_ecb_encrypt(tests[i].pt, tmp[0], &key); + cast5_ecb_decrypt(tmp[0], tmp[1], &key); + if ((compare_testvector(tmp[0], 8, tests[i].ct, 8, "CAST5 Encrypt", i) != 0) || + (compare_testvector(tmp[1], 8, tests[i].pt, 8, "CAST5 Decrypt", i) != 0)) { + return CRYPT_FAIL_TESTVECTOR; + } + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 8; y++) tmp[0][y] = 0; + for (y = 0; y < 1000; y++) cast5_ecb_encrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 1000; y++) cast5_ecb_decrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 8; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; + + } + return CRYPT_OK; + #endif +} + +/** Terminate the context + @param skey The scheduled key +*/ +void cast5_done(symmetric_key *skey) +{ + LTC_UNUSED_PARAM(skey); +} + +/** + Gets suitable key size + @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. + @return CRYPT_OK if the input key size is acceptable. +*/ +int cast5_keysize(int *keysize) +{ + LTC_ARGCHK(keysize != NULL); + if (*keysize < 5) { + return CRYPT_INVALID_KEYSIZE; + } else if (*keysize > 16) { + *keysize = 16; + } + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/ciphers/des.c b/fsbl/lib/libtomcrypt/src/ciphers/des.c new file mode 100644 index 000000000..f83c0108f --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/ciphers/des.c @@ -0,0 +1,2086 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file des.c + DES code submitted by Dobes Vandermeer +*/ + +#ifdef LTC_DES + +#define EN0 0 +#define DE1 1 + +const struct ltc_cipher_descriptor des_desc = +{ + "des", + 13, + 8, 8, 8, 16, + &des_setup, + &des_ecb_encrypt, + &des_ecb_decrypt, + &des_test, + &des_done, + &des_keysize, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + +const struct ltc_cipher_descriptor des3_desc = +{ + "3des", + 14, + 16, 24, 8, 16, + &des3_setup, + &des3_ecb_encrypt, + &des3_ecb_decrypt, + &des3_test, + &des3_done, + &des3_keysize, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + +static const ulong32 bytebit[8] = +{ + 0200, 0100, 040, 020, 010, 04, 02, 01 +}; + +static const ulong32 bigbyte[24] = +{ + 0x800000UL, 0x400000UL, 0x200000UL, 0x100000UL, + 0x80000UL, 0x40000UL, 0x20000UL, 0x10000UL, + 0x8000UL, 0x4000UL, 0x2000UL, 0x1000UL, + 0x800UL, 0x400UL, 0x200UL, 0x100UL, + 0x80UL, 0x40UL, 0x20UL, 0x10UL, + 0x8UL, 0x4UL, 0x2UL, 0x1L +}; + +/* Use the key schedule specific in the standard (ANSI X3.92-1981) */ + +static const unsigned char pc1[56] = { + 56, 48, 40, 32, 24, 16, 8, 0, 57, 49, 41, 33, 25, 17, + 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, + 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, + 13, 5, 60, 52, 44, 36, 28, 20, 12, 4, 27, 19, 11, 3 +}; + +static const unsigned char totrot[16] = { + 1, 2, 4, 6, + 8, 10, 12, 14, + 15, 17, 19, 21, + 23, 25, 27, 28 +}; + +static const unsigned char pc2[48] = { + 13, 16, 10, 23, 0, 4, 2, 27, 14, 5, 20, 9, + 22, 18, 11, 3, 25, 7, 15, 6, 26, 19, 12, 1, + 40, 51, 30, 36, 46, 54, 29, 39, 50, 44, 32, 47, + 43, 48, 38, 55, 33, 52, 45, 41, 49, 35, 28, 31 +}; + + +static const ulong32 SP1[64] = +{ + 0x01010400UL, 0x00000000UL, 0x00010000UL, 0x01010404UL, + 0x01010004UL, 0x00010404UL, 0x00000004UL, 0x00010000UL, + 0x00000400UL, 0x01010400UL, 0x01010404UL, 0x00000400UL, + 0x01000404UL, 0x01010004UL, 0x01000000UL, 0x00000004UL, + 0x00000404UL, 0x01000400UL, 0x01000400UL, 0x00010400UL, + 0x00010400UL, 0x01010000UL, 0x01010000UL, 0x01000404UL, + 0x00010004UL, 0x01000004UL, 0x01000004UL, 0x00010004UL, + 0x00000000UL, 0x00000404UL, 0x00010404UL, 0x01000000UL, + 0x00010000UL, 0x01010404UL, 0x00000004UL, 0x01010000UL, + 0x01010400UL, 0x01000000UL, 0x01000000UL, 0x00000400UL, + 0x01010004UL, 0x00010000UL, 0x00010400UL, 0x01000004UL, + 0x00000400UL, 0x00000004UL, 0x01000404UL, 0x00010404UL, + 0x01010404UL, 0x00010004UL, 0x01010000UL, 0x01000404UL, + 0x01000004UL, 0x00000404UL, 0x00010404UL, 0x01010400UL, + 0x00000404UL, 0x01000400UL, 0x01000400UL, 0x00000000UL, + 0x00010004UL, 0x00010400UL, 0x00000000UL, 0x01010004UL +}; + +static const ulong32 SP2[64] = +{ + 0x80108020UL, 0x80008000UL, 0x00008000UL, 0x00108020UL, + 0x00100000UL, 0x00000020UL, 0x80100020UL, 0x80008020UL, + 0x80000020UL, 0x80108020UL, 0x80108000UL, 0x80000000UL, + 0x80008000UL, 0x00100000UL, 0x00000020UL, 0x80100020UL, + 0x00108000UL, 0x00100020UL, 0x80008020UL, 0x00000000UL, + 0x80000000UL, 0x00008000UL, 0x00108020UL, 0x80100000UL, + 0x00100020UL, 0x80000020UL, 0x00000000UL, 0x00108000UL, + 0x00008020UL, 0x80108000UL, 0x80100000UL, 0x00008020UL, + 0x00000000UL, 0x00108020UL, 0x80100020UL, 0x00100000UL, + 0x80008020UL, 0x80100000UL, 0x80108000UL, 0x00008000UL, + 0x80100000UL, 0x80008000UL, 0x00000020UL, 0x80108020UL, + 0x00108020UL, 0x00000020UL, 0x00008000UL, 0x80000000UL, + 0x00008020UL, 0x80108000UL, 0x00100000UL, 0x80000020UL, + 0x00100020UL, 0x80008020UL, 0x80000020UL, 0x00100020UL, + 0x00108000UL, 0x00000000UL, 0x80008000UL, 0x00008020UL, + 0x80000000UL, 0x80100020UL, 0x80108020UL, 0x00108000UL +}; + +static const ulong32 SP3[64] = +{ + 0x00000208UL, 0x08020200UL, 0x00000000UL, 0x08020008UL, + 0x08000200UL, 0x00000000UL, 0x00020208UL, 0x08000200UL, + 0x00020008UL, 0x08000008UL, 0x08000008UL, 0x00020000UL, + 0x08020208UL, 0x00020008UL, 0x08020000UL, 0x00000208UL, + 0x08000000UL, 0x00000008UL, 0x08020200UL, 0x00000200UL, + 0x00020200UL, 0x08020000UL, 0x08020008UL, 0x00020208UL, + 0x08000208UL, 0x00020200UL, 0x00020000UL, 0x08000208UL, + 0x00000008UL, 0x08020208UL, 0x00000200UL, 0x08000000UL, + 0x08020200UL, 0x08000000UL, 0x00020008UL, 0x00000208UL, + 0x00020000UL, 0x08020200UL, 0x08000200UL, 0x00000000UL, + 0x00000200UL, 0x00020008UL, 0x08020208UL, 0x08000200UL, + 0x08000008UL, 0x00000200UL, 0x00000000UL, 0x08020008UL, + 0x08000208UL, 0x00020000UL, 0x08000000UL, 0x08020208UL, + 0x00000008UL, 0x00020208UL, 0x00020200UL, 0x08000008UL, + 0x08020000UL, 0x08000208UL, 0x00000208UL, 0x08020000UL, + 0x00020208UL, 0x00000008UL, 0x08020008UL, 0x00020200UL +}; + +static const ulong32 SP4[64] = +{ + 0x00802001UL, 0x00002081UL, 0x00002081UL, 0x00000080UL, + 0x00802080UL, 0x00800081UL, 0x00800001UL, 0x00002001UL, + 0x00000000UL, 0x00802000UL, 0x00802000UL, 0x00802081UL, + 0x00000081UL, 0x00000000UL, 0x00800080UL, 0x00800001UL, + 0x00000001UL, 0x00002000UL, 0x00800000UL, 0x00802001UL, + 0x00000080UL, 0x00800000UL, 0x00002001UL, 0x00002080UL, + 0x00800081UL, 0x00000001UL, 0x00002080UL, 0x00800080UL, + 0x00002000UL, 0x00802080UL, 0x00802081UL, 0x00000081UL, + 0x00800080UL, 0x00800001UL, 0x00802000UL, 0x00802081UL, + 0x00000081UL, 0x00000000UL, 0x00000000UL, 0x00802000UL, + 0x00002080UL, 0x00800080UL, 0x00800081UL, 0x00000001UL, + 0x00802001UL, 0x00002081UL, 0x00002081UL, 0x00000080UL, + 0x00802081UL, 0x00000081UL, 0x00000001UL, 0x00002000UL, + 0x00800001UL, 0x00002001UL, 0x00802080UL, 0x00800081UL, + 0x00002001UL, 0x00002080UL, 0x00800000UL, 0x00802001UL, + 0x00000080UL, 0x00800000UL, 0x00002000UL, 0x00802080UL +}; + +static const ulong32 SP5[64] = +{ + 0x00000100UL, 0x02080100UL, 0x02080000UL, 0x42000100UL, + 0x00080000UL, 0x00000100UL, 0x40000000UL, 0x02080000UL, + 0x40080100UL, 0x00080000UL, 0x02000100UL, 0x40080100UL, + 0x42000100UL, 0x42080000UL, 0x00080100UL, 0x40000000UL, + 0x02000000UL, 0x40080000UL, 0x40080000UL, 0x00000000UL, + 0x40000100UL, 0x42080100UL, 0x42080100UL, 0x02000100UL, + 0x42080000UL, 0x40000100UL, 0x00000000UL, 0x42000000UL, + 0x02080100UL, 0x02000000UL, 0x42000000UL, 0x00080100UL, + 0x00080000UL, 0x42000100UL, 0x00000100UL, 0x02000000UL, + 0x40000000UL, 0x02080000UL, 0x42000100UL, 0x40080100UL, + 0x02000100UL, 0x40000000UL, 0x42080000UL, 0x02080100UL, + 0x40080100UL, 0x00000100UL, 0x02000000UL, 0x42080000UL, + 0x42080100UL, 0x00080100UL, 0x42000000UL, 0x42080100UL, + 0x02080000UL, 0x00000000UL, 0x40080000UL, 0x42000000UL, + 0x00080100UL, 0x02000100UL, 0x40000100UL, 0x00080000UL, + 0x00000000UL, 0x40080000UL, 0x02080100UL, 0x40000100UL +}; + +static const ulong32 SP6[64] = +{ + 0x20000010UL, 0x20400000UL, 0x00004000UL, 0x20404010UL, + 0x20400000UL, 0x00000010UL, 0x20404010UL, 0x00400000UL, + 0x20004000UL, 0x00404010UL, 0x00400000UL, 0x20000010UL, + 0x00400010UL, 0x20004000UL, 0x20000000UL, 0x00004010UL, + 0x00000000UL, 0x00400010UL, 0x20004010UL, 0x00004000UL, + 0x00404000UL, 0x20004010UL, 0x00000010UL, 0x20400010UL, + 0x20400010UL, 0x00000000UL, 0x00404010UL, 0x20404000UL, + 0x00004010UL, 0x00404000UL, 0x20404000UL, 0x20000000UL, + 0x20004000UL, 0x00000010UL, 0x20400010UL, 0x00404000UL, + 0x20404010UL, 0x00400000UL, 0x00004010UL, 0x20000010UL, + 0x00400000UL, 0x20004000UL, 0x20000000UL, 0x00004010UL, + 0x20000010UL, 0x20404010UL, 0x00404000UL, 0x20400000UL, + 0x00404010UL, 0x20404000UL, 0x00000000UL, 0x20400010UL, + 0x00000010UL, 0x00004000UL, 0x20400000UL, 0x00404010UL, + 0x00004000UL, 0x00400010UL, 0x20004010UL, 0x00000000UL, + 0x20404000UL, 0x20000000UL, 0x00400010UL, 0x20004010UL +}; + +static const ulong32 SP7[64] = +{ + 0x00200000UL, 0x04200002UL, 0x04000802UL, 0x00000000UL, + 0x00000800UL, 0x04000802UL, 0x00200802UL, 0x04200800UL, + 0x04200802UL, 0x00200000UL, 0x00000000UL, 0x04000002UL, + 0x00000002UL, 0x04000000UL, 0x04200002UL, 0x00000802UL, + 0x04000800UL, 0x00200802UL, 0x00200002UL, 0x04000800UL, + 0x04000002UL, 0x04200000UL, 0x04200800UL, 0x00200002UL, + 0x04200000UL, 0x00000800UL, 0x00000802UL, 0x04200802UL, + 0x00200800UL, 0x00000002UL, 0x04000000UL, 0x00200800UL, + 0x04000000UL, 0x00200800UL, 0x00200000UL, 0x04000802UL, + 0x04000802UL, 0x04200002UL, 0x04200002UL, 0x00000002UL, + 0x00200002UL, 0x04000000UL, 0x04000800UL, 0x00200000UL, + 0x04200800UL, 0x00000802UL, 0x00200802UL, 0x04200800UL, + 0x00000802UL, 0x04000002UL, 0x04200802UL, 0x04200000UL, + 0x00200800UL, 0x00000000UL, 0x00000002UL, 0x04200802UL, + 0x00000000UL, 0x00200802UL, 0x04200000UL, 0x00000800UL, + 0x04000002UL, 0x04000800UL, 0x00000800UL, 0x00200002UL +}; + +static const ulong32 SP8[64] = +{ + 0x10001040UL, 0x00001000UL, 0x00040000UL, 0x10041040UL, + 0x10000000UL, 0x10001040UL, 0x00000040UL, 0x10000000UL, + 0x00040040UL, 0x10040000UL, 0x10041040UL, 0x00041000UL, + 0x10041000UL, 0x00041040UL, 0x00001000UL, 0x00000040UL, + 0x10040000UL, 0x10000040UL, 0x10001000UL, 0x00001040UL, + 0x00041000UL, 0x00040040UL, 0x10040040UL, 0x10041000UL, + 0x00001040UL, 0x00000000UL, 0x00000000UL, 0x10040040UL, + 0x10000040UL, 0x10001000UL, 0x00041040UL, 0x00040000UL, + 0x00041040UL, 0x00040000UL, 0x10041000UL, 0x00001000UL, + 0x00000040UL, 0x10040040UL, 0x00001000UL, 0x00041040UL, + 0x10001000UL, 0x00000040UL, 0x10000040UL, 0x10040000UL, + 0x10040040UL, 0x10000000UL, 0x00040000UL, 0x10001040UL, + 0x00000000UL, 0x10041040UL, 0x00040040UL, 0x10000040UL, + 0x10040000UL, 0x10001000UL, 0x10001040UL, 0x00000000UL, + 0x10041040UL, 0x00041000UL, 0x00041000UL, 0x00001040UL, + 0x00001040UL, 0x00040040UL, 0x10000000UL, 0x10041000UL +}; + +#ifndef LTC_SMALL_CODE + +static const ulong64 des_ip[8][256] = { + +{ CONST64(0x0000000000000000), CONST64(0x0000001000000000), CONST64(0x0000000000000010), CONST64(0x0000001000000010), + CONST64(0x0000100000000000), CONST64(0x0000101000000000), CONST64(0x0000100000000010), CONST64(0x0000101000000010), + CONST64(0x0000000000001000), CONST64(0x0000001000001000), CONST64(0x0000000000001010), CONST64(0x0000001000001010), + CONST64(0x0000100000001000), CONST64(0x0000101000001000), CONST64(0x0000100000001010), CONST64(0x0000101000001010), + CONST64(0x0010000000000000), CONST64(0x0010001000000000), CONST64(0x0010000000000010), CONST64(0x0010001000000010), + CONST64(0x0010100000000000), CONST64(0x0010101000000000), CONST64(0x0010100000000010), CONST64(0x0010101000000010), + CONST64(0x0010000000001000), CONST64(0x0010001000001000), CONST64(0x0010000000001010), CONST64(0x0010001000001010), + CONST64(0x0010100000001000), CONST64(0x0010101000001000), CONST64(0x0010100000001010), CONST64(0x0010101000001010), + CONST64(0x0000000000100000), CONST64(0x0000001000100000), CONST64(0x0000000000100010), CONST64(0x0000001000100010), + CONST64(0x0000100000100000), CONST64(0x0000101000100000), CONST64(0x0000100000100010), CONST64(0x0000101000100010), + CONST64(0x0000000000101000), CONST64(0x0000001000101000), CONST64(0x0000000000101010), CONST64(0x0000001000101010), + CONST64(0x0000100000101000), CONST64(0x0000101000101000), CONST64(0x0000100000101010), CONST64(0x0000101000101010), + CONST64(0x0010000000100000), CONST64(0x0010001000100000), CONST64(0x0010000000100010), CONST64(0x0010001000100010), + CONST64(0x0010100000100000), CONST64(0x0010101000100000), CONST64(0x0010100000100010), CONST64(0x0010101000100010), + CONST64(0x0010000000101000), CONST64(0x0010001000101000), CONST64(0x0010000000101010), CONST64(0x0010001000101010), + CONST64(0x0010100000101000), CONST64(0x0010101000101000), CONST64(0x0010100000101010), CONST64(0x0010101000101010), + CONST64(0x1000000000000000), CONST64(0x1000001000000000), CONST64(0x1000000000000010), CONST64(0x1000001000000010), + CONST64(0x1000100000000000), CONST64(0x1000101000000000), CONST64(0x1000100000000010), CONST64(0x1000101000000010), + CONST64(0x1000000000001000), CONST64(0x1000001000001000), CONST64(0x1000000000001010), CONST64(0x1000001000001010), + CONST64(0x1000100000001000), CONST64(0x1000101000001000), CONST64(0x1000100000001010), CONST64(0x1000101000001010), + CONST64(0x1010000000000000), CONST64(0x1010001000000000), CONST64(0x1010000000000010), CONST64(0x1010001000000010), + CONST64(0x1010100000000000), CONST64(0x1010101000000000), CONST64(0x1010100000000010), CONST64(0x1010101000000010), + CONST64(0x1010000000001000), CONST64(0x1010001000001000), CONST64(0x1010000000001010), CONST64(0x1010001000001010), + CONST64(0x1010100000001000), CONST64(0x1010101000001000), CONST64(0x1010100000001010), CONST64(0x1010101000001010), + CONST64(0x1000000000100000), CONST64(0x1000001000100000), CONST64(0x1000000000100010), CONST64(0x1000001000100010), + CONST64(0x1000100000100000), CONST64(0x1000101000100000), CONST64(0x1000100000100010), CONST64(0x1000101000100010), + CONST64(0x1000000000101000), CONST64(0x1000001000101000), CONST64(0x1000000000101010), CONST64(0x1000001000101010), + CONST64(0x1000100000101000), CONST64(0x1000101000101000), CONST64(0x1000100000101010), CONST64(0x1000101000101010), + CONST64(0x1010000000100000), CONST64(0x1010001000100000), CONST64(0x1010000000100010), CONST64(0x1010001000100010), + CONST64(0x1010100000100000), CONST64(0x1010101000100000), CONST64(0x1010100000100010), CONST64(0x1010101000100010), + CONST64(0x1010000000101000), CONST64(0x1010001000101000), CONST64(0x1010000000101010), CONST64(0x1010001000101010), + CONST64(0x1010100000101000), CONST64(0x1010101000101000), CONST64(0x1010100000101010), CONST64(0x1010101000101010), + CONST64(0x0000000010000000), CONST64(0x0000001010000000), CONST64(0x0000000010000010), CONST64(0x0000001010000010), + CONST64(0x0000100010000000), CONST64(0x0000101010000000), CONST64(0x0000100010000010), CONST64(0x0000101010000010), + CONST64(0x0000000010001000), CONST64(0x0000001010001000), CONST64(0x0000000010001010), CONST64(0x0000001010001010), + CONST64(0x0000100010001000), CONST64(0x0000101010001000), CONST64(0x0000100010001010), CONST64(0x0000101010001010), + CONST64(0x0010000010000000), CONST64(0x0010001010000000), CONST64(0x0010000010000010), CONST64(0x0010001010000010), + CONST64(0x0010100010000000), CONST64(0x0010101010000000), CONST64(0x0010100010000010), CONST64(0x0010101010000010), + CONST64(0x0010000010001000), CONST64(0x0010001010001000), CONST64(0x0010000010001010), CONST64(0x0010001010001010), + CONST64(0x0010100010001000), CONST64(0x0010101010001000), CONST64(0x0010100010001010), CONST64(0x0010101010001010), + CONST64(0x0000000010100000), CONST64(0x0000001010100000), CONST64(0x0000000010100010), CONST64(0x0000001010100010), + CONST64(0x0000100010100000), CONST64(0x0000101010100000), CONST64(0x0000100010100010), CONST64(0x0000101010100010), + CONST64(0x0000000010101000), CONST64(0x0000001010101000), CONST64(0x0000000010101010), CONST64(0x0000001010101010), + CONST64(0x0000100010101000), CONST64(0x0000101010101000), CONST64(0x0000100010101010), CONST64(0x0000101010101010), + CONST64(0x0010000010100000), CONST64(0x0010001010100000), CONST64(0x0010000010100010), CONST64(0x0010001010100010), + CONST64(0x0010100010100000), CONST64(0x0010101010100000), CONST64(0x0010100010100010), CONST64(0x0010101010100010), + CONST64(0x0010000010101000), CONST64(0x0010001010101000), CONST64(0x0010000010101010), CONST64(0x0010001010101010), + CONST64(0x0010100010101000), CONST64(0x0010101010101000), CONST64(0x0010100010101010), CONST64(0x0010101010101010), + CONST64(0x1000000010000000), CONST64(0x1000001010000000), CONST64(0x1000000010000010), CONST64(0x1000001010000010), + CONST64(0x1000100010000000), CONST64(0x1000101010000000), CONST64(0x1000100010000010), CONST64(0x1000101010000010), + CONST64(0x1000000010001000), CONST64(0x1000001010001000), CONST64(0x1000000010001010), CONST64(0x1000001010001010), + CONST64(0x1000100010001000), CONST64(0x1000101010001000), CONST64(0x1000100010001010), CONST64(0x1000101010001010), + CONST64(0x1010000010000000), CONST64(0x1010001010000000), CONST64(0x1010000010000010), CONST64(0x1010001010000010), + CONST64(0x1010100010000000), CONST64(0x1010101010000000), CONST64(0x1010100010000010), CONST64(0x1010101010000010), + CONST64(0x1010000010001000), CONST64(0x1010001010001000), CONST64(0x1010000010001010), CONST64(0x1010001010001010), + CONST64(0x1010100010001000), CONST64(0x1010101010001000), CONST64(0x1010100010001010), CONST64(0x1010101010001010), + CONST64(0x1000000010100000), CONST64(0x1000001010100000), CONST64(0x1000000010100010), CONST64(0x1000001010100010), + CONST64(0x1000100010100000), CONST64(0x1000101010100000), CONST64(0x1000100010100010), CONST64(0x1000101010100010), + CONST64(0x1000000010101000), CONST64(0x1000001010101000), CONST64(0x1000000010101010), CONST64(0x1000001010101010), + CONST64(0x1000100010101000), CONST64(0x1000101010101000), CONST64(0x1000100010101010), CONST64(0x1000101010101010), + CONST64(0x1010000010100000), CONST64(0x1010001010100000), CONST64(0x1010000010100010), CONST64(0x1010001010100010), + CONST64(0x1010100010100000), CONST64(0x1010101010100000), CONST64(0x1010100010100010), CONST64(0x1010101010100010), + CONST64(0x1010000010101000), CONST64(0x1010001010101000), CONST64(0x1010000010101010), CONST64(0x1010001010101010), + CONST64(0x1010100010101000), CONST64(0x1010101010101000), CONST64(0x1010100010101010), CONST64(0x1010101010101010) + }, +{ CONST64(0x0000000000000000), CONST64(0x0000000800000000), CONST64(0x0000000000000008), CONST64(0x0000000800000008), + CONST64(0x0000080000000000), CONST64(0x0000080800000000), CONST64(0x0000080000000008), CONST64(0x0000080800000008), + CONST64(0x0000000000000800), CONST64(0x0000000800000800), CONST64(0x0000000000000808), CONST64(0x0000000800000808), + CONST64(0x0000080000000800), CONST64(0x0000080800000800), CONST64(0x0000080000000808), CONST64(0x0000080800000808), + CONST64(0x0008000000000000), CONST64(0x0008000800000000), CONST64(0x0008000000000008), CONST64(0x0008000800000008), + CONST64(0x0008080000000000), CONST64(0x0008080800000000), CONST64(0x0008080000000008), CONST64(0x0008080800000008), + CONST64(0x0008000000000800), CONST64(0x0008000800000800), CONST64(0x0008000000000808), CONST64(0x0008000800000808), + CONST64(0x0008080000000800), CONST64(0x0008080800000800), CONST64(0x0008080000000808), CONST64(0x0008080800000808), + CONST64(0x0000000000080000), CONST64(0x0000000800080000), CONST64(0x0000000000080008), CONST64(0x0000000800080008), + CONST64(0x0000080000080000), CONST64(0x0000080800080000), CONST64(0x0000080000080008), CONST64(0x0000080800080008), + CONST64(0x0000000000080800), CONST64(0x0000000800080800), CONST64(0x0000000000080808), CONST64(0x0000000800080808), + CONST64(0x0000080000080800), CONST64(0x0000080800080800), CONST64(0x0000080000080808), CONST64(0x0000080800080808), + CONST64(0x0008000000080000), CONST64(0x0008000800080000), CONST64(0x0008000000080008), CONST64(0x0008000800080008), + CONST64(0x0008080000080000), CONST64(0x0008080800080000), CONST64(0x0008080000080008), CONST64(0x0008080800080008), + CONST64(0x0008000000080800), CONST64(0x0008000800080800), CONST64(0x0008000000080808), CONST64(0x0008000800080808), + CONST64(0x0008080000080800), CONST64(0x0008080800080800), CONST64(0x0008080000080808), CONST64(0x0008080800080808), + CONST64(0x0800000000000000), CONST64(0x0800000800000000), CONST64(0x0800000000000008), CONST64(0x0800000800000008), + CONST64(0x0800080000000000), CONST64(0x0800080800000000), CONST64(0x0800080000000008), CONST64(0x0800080800000008), + CONST64(0x0800000000000800), CONST64(0x0800000800000800), CONST64(0x0800000000000808), CONST64(0x0800000800000808), + CONST64(0x0800080000000800), CONST64(0x0800080800000800), CONST64(0x0800080000000808), CONST64(0x0800080800000808), + CONST64(0x0808000000000000), CONST64(0x0808000800000000), CONST64(0x0808000000000008), CONST64(0x0808000800000008), + CONST64(0x0808080000000000), CONST64(0x0808080800000000), CONST64(0x0808080000000008), CONST64(0x0808080800000008), + CONST64(0x0808000000000800), CONST64(0x0808000800000800), CONST64(0x0808000000000808), CONST64(0x0808000800000808), + CONST64(0x0808080000000800), CONST64(0x0808080800000800), CONST64(0x0808080000000808), CONST64(0x0808080800000808), + CONST64(0x0800000000080000), CONST64(0x0800000800080000), CONST64(0x0800000000080008), CONST64(0x0800000800080008), + CONST64(0x0800080000080000), CONST64(0x0800080800080000), CONST64(0x0800080000080008), CONST64(0x0800080800080008), + CONST64(0x0800000000080800), CONST64(0x0800000800080800), CONST64(0x0800000000080808), CONST64(0x0800000800080808), + CONST64(0x0800080000080800), CONST64(0x0800080800080800), CONST64(0x0800080000080808), CONST64(0x0800080800080808), + CONST64(0x0808000000080000), CONST64(0x0808000800080000), CONST64(0x0808000000080008), CONST64(0x0808000800080008), + CONST64(0x0808080000080000), CONST64(0x0808080800080000), CONST64(0x0808080000080008), CONST64(0x0808080800080008), + CONST64(0x0808000000080800), CONST64(0x0808000800080800), CONST64(0x0808000000080808), CONST64(0x0808000800080808), + CONST64(0x0808080000080800), CONST64(0x0808080800080800), CONST64(0x0808080000080808), CONST64(0x0808080800080808), + CONST64(0x0000000008000000), CONST64(0x0000000808000000), CONST64(0x0000000008000008), CONST64(0x0000000808000008), + CONST64(0x0000080008000000), CONST64(0x0000080808000000), CONST64(0x0000080008000008), CONST64(0x0000080808000008), + CONST64(0x0000000008000800), CONST64(0x0000000808000800), CONST64(0x0000000008000808), CONST64(0x0000000808000808), + CONST64(0x0000080008000800), CONST64(0x0000080808000800), CONST64(0x0000080008000808), CONST64(0x0000080808000808), + CONST64(0x0008000008000000), CONST64(0x0008000808000000), CONST64(0x0008000008000008), CONST64(0x0008000808000008), + CONST64(0x0008080008000000), CONST64(0x0008080808000000), CONST64(0x0008080008000008), CONST64(0x0008080808000008), + CONST64(0x0008000008000800), CONST64(0x0008000808000800), CONST64(0x0008000008000808), CONST64(0x0008000808000808), + CONST64(0x0008080008000800), CONST64(0x0008080808000800), CONST64(0x0008080008000808), CONST64(0x0008080808000808), + CONST64(0x0000000008080000), CONST64(0x0000000808080000), CONST64(0x0000000008080008), CONST64(0x0000000808080008), + CONST64(0x0000080008080000), CONST64(0x0000080808080000), CONST64(0x0000080008080008), CONST64(0x0000080808080008), + CONST64(0x0000000008080800), CONST64(0x0000000808080800), CONST64(0x0000000008080808), CONST64(0x0000000808080808), + CONST64(0x0000080008080800), CONST64(0x0000080808080800), CONST64(0x0000080008080808), CONST64(0x0000080808080808), + CONST64(0x0008000008080000), CONST64(0x0008000808080000), CONST64(0x0008000008080008), CONST64(0x0008000808080008), + CONST64(0x0008080008080000), CONST64(0x0008080808080000), CONST64(0x0008080008080008), CONST64(0x0008080808080008), + CONST64(0x0008000008080800), CONST64(0x0008000808080800), CONST64(0x0008000008080808), CONST64(0x0008000808080808), + CONST64(0x0008080008080800), CONST64(0x0008080808080800), CONST64(0x0008080008080808), CONST64(0x0008080808080808), + CONST64(0x0800000008000000), CONST64(0x0800000808000000), CONST64(0x0800000008000008), CONST64(0x0800000808000008), + CONST64(0x0800080008000000), CONST64(0x0800080808000000), CONST64(0x0800080008000008), CONST64(0x0800080808000008), + CONST64(0x0800000008000800), CONST64(0x0800000808000800), CONST64(0x0800000008000808), CONST64(0x0800000808000808), + CONST64(0x0800080008000800), CONST64(0x0800080808000800), CONST64(0x0800080008000808), CONST64(0x0800080808000808), + CONST64(0x0808000008000000), CONST64(0x0808000808000000), CONST64(0x0808000008000008), CONST64(0x0808000808000008), + CONST64(0x0808080008000000), CONST64(0x0808080808000000), CONST64(0x0808080008000008), CONST64(0x0808080808000008), + CONST64(0x0808000008000800), CONST64(0x0808000808000800), CONST64(0x0808000008000808), CONST64(0x0808000808000808), + CONST64(0x0808080008000800), CONST64(0x0808080808000800), CONST64(0x0808080008000808), CONST64(0x0808080808000808), + CONST64(0x0800000008080000), CONST64(0x0800000808080000), CONST64(0x0800000008080008), CONST64(0x0800000808080008), + CONST64(0x0800080008080000), CONST64(0x0800080808080000), CONST64(0x0800080008080008), CONST64(0x0800080808080008), + CONST64(0x0800000008080800), CONST64(0x0800000808080800), CONST64(0x0800000008080808), CONST64(0x0800000808080808), + CONST64(0x0800080008080800), CONST64(0x0800080808080800), CONST64(0x0800080008080808), CONST64(0x0800080808080808), + CONST64(0x0808000008080000), CONST64(0x0808000808080000), CONST64(0x0808000008080008), CONST64(0x0808000808080008), + CONST64(0x0808080008080000), CONST64(0x0808080808080000), CONST64(0x0808080008080008), CONST64(0x0808080808080008), + CONST64(0x0808000008080800), CONST64(0x0808000808080800), CONST64(0x0808000008080808), CONST64(0x0808000808080808), + CONST64(0x0808080008080800), CONST64(0x0808080808080800), CONST64(0x0808080008080808), CONST64(0x0808080808080808) + }, +{ CONST64(0x0000000000000000), CONST64(0x0000000400000000), CONST64(0x0000000000000004), CONST64(0x0000000400000004), + CONST64(0x0000040000000000), CONST64(0x0000040400000000), CONST64(0x0000040000000004), CONST64(0x0000040400000004), + CONST64(0x0000000000000400), CONST64(0x0000000400000400), CONST64(0x0000000000000404), CONST64(0x0000000400000404), + CONST64(0x0000040000000400), CONST64(0x0000040400000400), CONST64(0x0000040000000404), CONST64(0x0000040400000404), + CONST64(0x0004000000000000), CONST64(0x0004000400000000), CONST64(0x0004000000000004), CONST64(0x0004000400000004), + CONST64(0x0004040000000000), CONST64(0x0004040400000000), CONST64(0x0004040000000004), CONST64(0x0004040400000004), + CONST64(0x0004000000000400), CONST64(0x0004000400000400), CONST64(0x0004000000000404), CONST64(0x0004000400000404), + CONST64(0x0004040000000400), CONST64(0x0004040400000400), CONST64(0x0004040000000404), CONST64(0x0004040400000404), + CONST64(0x0000000000040000), CONST64(0x0000000400040000), CONST64(0x0000000000040004), CONST64(0x0000000400040004), + CONST64(0x0000040000040000), CONST64(0x0000040400040000), CONST64(0x0000040000040004), CONST64(0x0000040400040004), + CONST64(0x0000000000040400), CONST64(0x0000000400040400), CONST64(0x0000000000040404), CONST64(0x0000000400040404), + CONST64(0x0000040000040400), CONST64(0x0000040400040400), CONST64(0x0000040000040404), CONST64(0x0000040400040404), + CONST64(0x0004000000040000), CONST64(0x0004000400040000), CONST64(0x0004000000040004), CONST64(0x0004000400040004), + CONST64(0x0004040000040000), CONST64(0x0004040400040000), CONST64(0x0004040000040004), CONST64(0x0004040400040004), + CONST64(0x0004000000040400), CONST64(0x0004000400040400), CONST64(0x0004000000040404), CONST64(0x0004000400040404), + CONST64(0x0004040000040400), CONST64(0x0004040400040400), CONST64(0x0004040000040404), CONST64(0x0004040400040404), + CONST64(0x0400000000000000), CONST64(0x0400000400000000), CONST64(0x0400000000000004), CONST64(0x0400000400000004), + CONST64(0x0400040000000000), CONST64(0x0400040400000000), CONST64(0x0400040000000004), CONST64(0x0400040400000004), + CONST64(0x0400000000000400), CONST64(0x0400000400000400), CONST64(0x0400000000000404), CONST64(0x0400000400000404), + CONST64(0x0400040000000400), CONST64(0x0400040400000400), CONST64(0x0400040000000404), CONST64(0x0400040400000404), + CONST64(0x0404000000000000), CONST64(0x0404000400000000), CONST64(0x0404000000000004), CONST64(0x0404000400000004), + CONST64(0x0404040000000000), CONST64(0x0404040400000000), CONST64(0x0404040000000004), CONST64(0x0404040400000004), + CONST64(0x0404000000000400), CONST64(0x0404000400000400), CONST64(0x0404000000000404), CONST64(0x0404000400000404), + CONST64(0x0404040000000400), CONST64(0x0404040400000400), CONST64(0x0404040000000404), CONST64(0x0404040400000404), + CONST64(0x0400000000040000), CONST64(0x0400000400040000), CONST64(0x0400000000040004), CONST64(0x0400000400040004), + CONST64(0x0400040000040000), CONST64(0x0400040400040000), CONST64(0x0400040000040004), CONST64(0x0400040400040004), + CONST64(0x0400000000040400), CONST64(0x0400000400040400), CONST64(0x0400000000040404), CONST64(0x0400000400040404), + CONST64(0x0400040000040400), CONST64(0x0400040400040400), CONST64(0x0400040000040404), CONST64(0x0400040400040404), + CONST64(0x0404000000040000), CONST64(0x0404000400040000), CONST64(0x0404000000040004), CONST64(0x0404000400040004), + CONST64(0x0404040000040000), CONST64(0x0404040400040000), CONST64(0x0404040000040004), CONST64(0x0404040400040004), + CONST64(0x0404000000040400), CONST64(0x0404000400040400), CONST64(0x0404000000040404), CONST64(0x0404000400040404), + CONST64(0x0404040000040400), CONST64(0x0404040400040400), CONST64(0x0404040000040404), CONST64(0x0404040400040404), + CONST64(0x0000000004000000), CONST64(0x0000000404000000), CONST64(0x0000000004000004), CONST64(0x0000000404000004), + CONST64(0x0000040004000000), CONST64(0x0000040404000000), CONST64(0x0000040004000004), CONST64(0x0000040404000004), + CONST64(0x0000000004000400), CONST64(0x0000000404000400), CONST64(0x0000000004000404), CONST64(0x0000000404000404), + CONST64(0x0000040004000400), CONST64(0x0000040404000400), CONST64(0x0000040004000404), CONST64(0x0000040404000404), + CONST64(0x0004000004000000), CONST64(0x0004000404000000), CONST64(0x0004000004000004), CONST64(0x0004000404000004), + CONST64(0x0004040004000000), CONST64(0x0004040404000000), CONST64(0x0004040004000004), CONST64(0x0004040404000004), + CONST64(0x0004000004000400), CONST64(0x0004000404000400), CONST64(0x0004000004000404), CONST64(0x0004000404000404), + CONST64(0x0004040004000400), CONST64(0x0004040404000400), CONST64(0x0004040004000404), CONST64(0x0004040404000404), + CONST64(0x0000000004040000), CONST64(0x0000000404040000), CONST64(0x0000000004040004), CONST64(0x0000000404040004), + CONST64(0x0000040004040000), CONST64(0x0000040404040000), CONST64(0x0000040004040004), CONST64(0x0000040404040004), + CONST64(0x0000000004040400), CONST64(0x0000000404040400), CONST64(0x0000000004040404), CONST64(0x0000000404040404), + CONST64(0x0000040004040400), CONST64(0x0000040404040400), CONST64(0x0000040004040404), CONST64(0x0000040404040404), + CONST64(0x0004000004040000), CONST64(0x0004000404040000), CONST64(0x0004000004040004), CONST64(0x0004000404040004), + CONST64(0x0004040004040000), CONST64(0x0004040404040000), CONST64(0x0004040004040004), CONST64(0x0004040404040004), + CONST64(0x0004000004040400), CONST64(0x0004000404040400), CONST64(0x0004000004040404), CONST64(0x0004000404040404), + CONST64(0x0004040004040400), CONST64(0x0004040404040400), CONST64(0x0004040004040404), CONST64(0x0004040404040404), + CONST64(0x0400000004000000), CONST64(0x0400000404000000), CONST64(0x0400000004000004), CONST64(0x0400000404000004), + CONST64(0x0400040004000000), CONST64(0x0400040404000000), CONST64(0x0400040004000004), CONST64(0x0400040404000004), + CONST64(0x0400000004000400), CONST64(0x0400000404000400), CONST64(0x0400000004000404), CONST64(0x0400000404000404), + CONST64(0x0400040004000400), CONST64(0x0400040404000400), CONST64(0x0400040004000404), CONST64(0x0400040404000404), + CONST64(0x0404000004000000), CONST64(0x0404000404000000), CONST64(0x0404000004000004), CONST64(0x0404000404000004), + CONST64(0x0404040004000000), CONST64(0x0404040404000000), CONST64(0x0404040004000004), CONST64(0x0404040404000004), + CONST64(0x0404000004000400), CONST64(0x0404000404000400), CONST64(0x0404000004000404), CONST64(0x0404000404000404), + CONST64(0x0404040004000400), CONST64(0x0404040404000400), CONST64(0x0404040004000404), CONST64(0x0404040404000404), + CONST64(0x0400000004040000), CONST64(0x0400000404040000), CONST64(0x0400000004040004), CONST64(0x0400000404040004), + CONST64(0x0400040004040000), CONST64(0x0400040404040000), CONST64(0x0400040004040004), CONST64(0x0400040404040004), + CONST64(0x0400000004040400), CONST64(0x0400000404040400), CONST64(0x0400000004040404), CONST64(0x0400000404040404), + CONST64(0x0400040004040400), CONST64(0x0400040404040400), CONST64(0x0400040004040404), CONST64(0x0400040404040404), + CONST64(0x0404000004040000), CONST64(0x0404000404040000), CONST64(0x0404000004040004), CONST64(0x0404000404040004), + CONST64(0x0404040004040000), CONST64(0x0404040404040000), CONST64(0x0404040004040004), CONST64(0x0404040404040004), + CONST64(0x0404000004040400), CONST64(0x0404000404040400), CONST64(0x0404000004040404), CONST64(0x0404000404040404), + CONST64(0x0404040004040400), CONST64(0x0404040404040400), CONST64(0x0404040004040404), CONST64(0x0404040404040404) + }, +{ CONST64(0x0000000000000000), CONST64(0x0000000200000000), CONST64(0x0000000000000002), CONST64(0x0000000200000002), + CONST64(0x0000020000000000), CONST64(0x0000020200000000), CONST64(0x0000020000000002), CONST64(0x0000020200000002), + CONST64(0x0000000000000200), CONST64(0x0000000200000200), CONST64(0x0000000000000202), CONST64(0x0000000200000202), + CONST64(0x0000020000000200), CONST64(0x0000020200000200), CONST64(0x0000020000000202), CONST64(0x0000020200000202), + CONST64(0x0002000000000000), CONST64(0x0002000200000000), CONST64(0x0002000000000002), CONST64(0x0002000200000002), + CONST64(0x0002020000000000), CONST64(0x0002020200000000), CONST64(0x0002020000000002), CONST64(0x0002020200000002), + CONST64(0x0002000000000200), CONST64(0x0002000200000200), CONST64(0x0002000000000202), CONST64(0x0002000200000202), + CONST64(0x0002020000000200), CONST64(0x0002020200000200), CONST64(0x0002020000000202), CONST64(0x0002020200000202), + CONST64(0x0000000000020000), CONST64(0x0000000200020000), CONST64(0x0000000000020002), CONST64(0x0000000200020002), + CONST64(0x0000020000020000), CONST64(0x0000020200020000), CONST64(0x0000020000020002), CONST64(0x0000020200020002), + CONST64(0x0000000000020200), CONST64(0x0000000200020200), CONST64(0x0000000000020202), CONST64(0x0000000200020202), + CONST64(0x0000020000020200), CONST64(0x0000020200020200), CONST64(0x0000020000020202), CONST64(0x0000020200020202), + CONST64(0x0002000000020000), CONST64(0x0002000200020000), CONST64(0x0002000000020002), CONST64(0x0002000200020002), + CONST64(0x0002020000020000), CONST64(0x0002020200020000), CONST64(0x0002020000020002), CONST64(0x0002020200020002), + CONST64(0x0002000000020200), CONST64(0x0002000200020200), CONST64(0x0002000000020202), CONST64(0x0002000200020202), + CONST64(0x0002020000020200), CONST64(0x0002020200020200), CONST64(0x0002020000020202), CONST64(0x0002020200020202), + CONST64(0x0200000000000000), CONST64(0x0200000200000000), CONST64(0x0200000000000002), CONST64(0x0200000200000002), + CONST64(0x0200020000000000), CONST64(0x0200020200000000), CONST64(0x0200020000000002), CONST64(0x0200020200000002), + CONST64(0x0200000000000200), CONST64(0x0200000200000200), CONST64(0x0200000000000202), CONST64(0x0200000200000202), + CONST64(0x0200020000000200), CONST64(0x0200020200000200), CONST64(0x0200020000000202), CONST64(0x0200020200000202), + CONST64(0x0202000000000000), CONST64(0x0202000200000000), CONST64(0x0202000000000002), CONST64(0x0202000200000002), + CONST64(0x0202020000000000), CONST64(0x0202020200000000), CONST64(0x0202020000000002), CONST64(0x0202020200000002), + CONST64(0x0202000000000200), CONST64(0x0202000200000200), CONST64(0x0202000000000202), CONST64(0x0202000200000202), + CONST64(0x0202020000000200), CONST64(0x0202020200000200), CONST64(0x0202020000000202), CONST64(0x0202020200000202), + CONST64(0x0200000000020000), CONST64(0x0200000200020000), CONST64(0x0200000000020002), CONST64(0x0200000200020002), + CONST64(0x0200020000020000), CONST64(0x0200020200020000), CONST64(0x0200020000020002), CONST64(0x0200020200020002), + CONST64(0x0200000000020200), CONST64(0x0200000200020200), CONST64(0x0200000000020202), CONST64(0x0200000200020202), + CONST64(0x0200020000020200), CONST64(0x0200020200020200), CONST64(0x0200020000020202), CONST64(0x0200020200020202), + CONST64(0x0202000000020000), CONST64(0x0202000200020000), CONST64(0x0202000000020002), CONST64(0x0202000200020002), + CONST64(0x0202020000020000), CONST64(0x0202020200020000), CONST64(0x0202020000020002), CONST64(0x0202020200020002), + CONST64(0x0202000000020200), CONST64(0x0202000200020200), CONST64(0x0202000000020202), CONST64(0x0202000200020202), + CONST64(0x0202020000020200), CONST64(0x0202020200020200), CONST64(0x0202020000020202), CONST64(0x0202020200020202), + CONST64(0x0000000002000000), CONST64(0x0000000202000000), CONST64(0x0000000002000002), CONST64(0x0000000202000002), + CONST64(0x0000020002000000), CONST64(0x0000020202000000), CONST64(0x0000020002000002), CONST64(0x0000020202000002), + CONST64(0x0000000002000200), CONST64(0x0000000202000200), CONST64(0x0000000002000202), CONST64(0x0000000202000202), + CONST64(0x0000020002000200), CONST64(0x0000020202000200), CONST64(0x0000020002000202), CONST64(0x0000020202000202), + CONST64(0x0002000002000000), CONST64(0x0002000202000000), CONST64(0x0002000002000002), CONST64(0x0002000202000002), + CONST64(0x0002020002000000), CONST64(0x0002020202000000), CONST64(0x0002020002000002), CONST64(0x0002020202000002), + CONST64(0x0002000002000200), CONST64(0x0002000202000200), CONST64(0x0002000002000202), CONST64(0x0002000202000202), + CONST64(0x0002020002000200), CONST64(0x0002020202000200), CONST64(0x0002020002000202), CONST64(0x0002020202000202), + CONST64(0x0000000002020000), CONST64(0x0000000202020000), CONST64(0x0000000002020002), CONST64(0x0000000202020002), + CONST64(0x0000020002020000), CONST64(0x0000020202020000), CONST64(0x0000020002020002), CONST64(0x0000020202020002), + CONST64(0x0000000002020200), CONST64(0x0000000202020200), CONST64(0x0000000002020202), CONST64(0x0000000202020202), + CONST64(0x0000020002020200), CONST64(0x0000020202020200), CONST64(0x0000020002020202), CONST64(0x0000020202020202), + CONST64(0x0002000002020000), CONST64(0x0002000202020000), CONST64(0x0002000002020002), CONST64(0x0002000202020002), + CONST64(0x0002020002020000), CONST64(0x0002020202020000), CONST64(0x0002020002020002), CONST64(0x0002020202020002), + CONST64(0x0002000002020200), CONST64(0x0002000202020200), CONST64(0x0002000002020202), CONST64(0x0002000202020202), + CONST64(0x0002020002020200), CONST64(0x0002020202020200), CONST64(0x0002020002020202), CONST64(0x0002020202020202), + CONST64(0x0200000002000000), CONST64(0x0200000202000000), CONST64(0x0200000002000002), CONST64(0x0200000202000002), + CONST64(0x0200020002000000), CONST64(0x0200020202000000), CONST64(0x0200020002000002), CONST64(0x0200020202000002), + CONST64(0x0200000002000200), CONST64(0x0200000202000200), CONST64(0x0200000002000202), CONST64(0x0200000202000202), + CONST64(0x0200020002000200), CONST64(0x0200020202000200), CONST64(0x0200020002000202), CONST64(0x0200020202000202), + CONST64(0x0202000002000000), CONST64(0x0202000202000000), CONST64(0x0202000002000002), CONST64(0x0202000202000002), + CONST64(0x0202020002000000), CONST64(0x0202020202000000), CONST64(0x0202020002000002), CONST64(0x0202020202000002), + CONST64(0x0202000002000200), CONST64(0x0202000202000200), CONST64(0x0202000002000202), CONST64(0x0202000202000202), + CONST64(0x0202020002000200), CONST64(0x0202020202000200), CONST64(0x0202020002000202), CONST64(0x0202020202000202), + CONST64(0x0200000002020000), CONST64(0x0200000202020000), CONST64(0x0200000002020002), CONST64(0x0200000202020002), + CONST64(0x0200020002020000), CONST64(0x0200020202020000), CONST64(0x0200020002020002), CONST64(0x0200020202020002), + CONST64(0x0200000002020200), CONST64(0x0200000202020200), CONST64(0x0200000002020202), CONST64(0x0200000202020202), + CONST64(0x0200020002020200), CONST64(0x0200020202020200), CONST64(0x0200020002020202), CONST64(0x0200020202020202), + CONST64(0x0202000002020000), CONST64(0x0202000202020000), CONST64(0x0202000002020002), CONST64(0x0202000202020002), + CONST64(0x0202020002020000), CONST64(0x0202020202020000), CONST64(0x0202020002020002), CONST64(0x0202020202020002), + CONST64(0x0202000002020200), CONST64(0x0202000202020200), CONST64(0x0202000002020202), CONST64(0x0202000202020202), + CONST64(0x0202020002020200), CONST64(0x0202020202020200), CONST64(0x0202020002020202), CONST64(0x0202020202020202) + }, +{ CONST64(0x0000000000000000), CONST64(0x0000010000000000), CONST64(0x0000000000000100), CONST64(0x0000010000000100), + CONST64(0x0001000000000000), CONST64(0x0001010000000000), CONST64(0x0001000000000100), CONST64(0x0001010000000100), + CONST64(0x0000000000010000), CONST64(0x0000010000010000), CONST64(0x0000000000010100), CONST64(0x0000010000010100), + CONST64(0x0001000000010000), CONST64(0x0001010000010000), CONST64(0x0001000000010100), CONST64(0x0001010000010100), + CONST64(0x0100000000000000), CONST64(0x0100010000000000), CONST64(0x0100000000000100), CONST64(0x0100010000000100), + CONST64(0x0101000000000000), CONST64(0x0101010000000000), CONST64(0x0101000000000100), CONST64(0x0101010000000100), + CONST64(0x0100000000010000), CONST64(0x0100010000010000), CONST64(0x0100000000010100), CONST64(0x0100010000010100), + CONST64(0x0101000000010000), CONST64(0x0101010000010000), CONST64(0x0101000000010100), CONST64(0x0101010000010100), + CONST64(0x0000000001000000), CONST64(0x0000010001000000), CONST64(0x0000000001000100), CONST64(0x0000010001000100), + CONST64(0x0001000001000000), CONST64(0x0001010001000000), CONST64(0x0001000001000100), CONST64(0x0001010001000100), + CONST64(0x0000000001010000), CONST64(0x0000010001010000), CONST64(0x0000000001010100), CONST64(0x0000010001010100), + CONST64(0x0001000001010000), CONST64(0x0001010001010000), CONST64(0x0001000001010100), CONST64(0x0001010001010100), + CONST64(0x0100000001000000), CONST64(0x0100010001000000), CONST64(0x0100000001000100), CONST64(0x0100010001000100), + CONST64(0x0101000001000000), CONST64(0x0101010001000000), CONST64(0x0101000001000100), CONST64(0x0101010001000100), + CONST64(0x0100000001010000), CONST64(0x0100010001010000), CONST64(0x0100000001010100), CONST64(0x0100010001010100), + CONST64(0x0101000001010000), CONST64(0x0101010001010000), CONST64(0x0101000001010100), CONST64(0x0101010001010100), + CONST64(0x0000000100000000), CONST64(0x0000010100000000), CONST64(0x0000000100000100), CONST64(0x0000010100000100), + CONST64(0x0001000100000000), CONST64(0x0001010100000000), CONST64(0x0001000100000100), CONST64(0x0001010100000100), + CONST64(0x0000000100010000), CONST64(0x0000010100010000), CONST64(0x0000000100010100), CONST64(0x0000010100010100), + CONST64(0x0001000100010000), CONST64(0x0001010100010000), CONST64(0x0001000100010100), CONST64(0x0001010100010100), + CONST64(0x0100000100000000), CONST64(0x0100010100000000), CONST64(0x0100000100000100), CONST64(0x0100010100000100), + CONST64(0x0101000100000000), CONST64(0x0101010100000000), CONST64(0x0101000100000100), CONST64(0x0101010100000100), + CONST64(0x0100000100010000), CONST64(0x0100010100010000), CONST64(0x0100000100010100), CONST64(0x0100010100010100), + CONST64(0x0101000100010000), CONST64(0x0101010100010000), CONST64(0x0101000100010100), CONST64(0x0101010100010100), + CONST64(0x0000000101000000), CONST64(0x0000010101000000), CONST64(0x0000000101000100), CONST64(0x0000010101000100), + CONST64(0x0001000101000000), CONST64(0x0001010101000000), CONST64(0x0001000101000100), CONST64(0x0001010101000100), + CONST64(0x0000000101010000), CONST64(0x0000010101010000), CONST64(0x0000000101010100), CONST64(0x0000010101010100), + CONST64(0x0001000101010000), CONST64(0x0001010101010000), CONST64(0x0001000101010100), CONST64(0x0001010101010100), + CONST64(0x0100000101000000), CONST64(0x0100010101000000), CONST64(0x0100000101000100), CONST64(0x0100010101000100), + CONST64(0x0101000101000000), CONST64(0x0101010101000000), CONST64(0x0101000101000100), CONST64(0x0101010101000100), + CONST64(0x0100000101010000), CONST64(0x0100010101010000), CONST64(0x0100000101010100), CONST64(0x0100010101010100), + CONST64(0x0101000101010000), CONST64(0x0101010101010000), CONST64(0x0101000101010100), CONST64(0x0101010101010100), + CONST64(0x0000000000000001), CONST64(0x0000010000000001), CONST64(0x0000000000000101), CONST64(0x0000010000000101), + CONST64(0x0001000000000001), CONST64(0x0001010000000001), CONST64(0x0001000000000101), CONST64(0x0001010000000101), + CONST64(0x0000000000010001), CONST64(0x0000010000010001), CONST64(0x0000000000010101), CONST64(0x0000010000010101), + CONST64(0x0001000000010001), CONST64(0x0001010000010001), CONST64(0x0001000000010101), CONST64(0x0001010000010101), + CONST64(0x0100000000000001), CONST64(0x0100010000000001), CONST64(0x0100000000000101), CONST64(0x0100010000000101), + CONST64(0x0101000000000001), CONST64(0x0101010000000001), CONST64(0x0101000000000101), CONST64(0x0101010000000101), + CONST64(0x0100000000010001), CONST64(0x0100010000010001), CONST64(0x0100000000010101), CONST64(0x0100010000010101), + CONST64(0x0101000000010001), CONST64(0x0101010000010001), CONST64(0x0101000000010101), CONST64(0x0101010000010101), + CONST64(0x0000000001000001), CONST64(0x0000010001000001), CONST64(0x0000000001000101), CONST64(0x0000010001000101), + CONST64(0x0001000001000001), CONST64(0x0001010001000001), CONST64(0x0001000001000101), CONST64(0x0001010001000101), + CONST64(0x0000000001010001), CONST64(0x0000010001010001), CONST64(0x0000000001010101), CONST64(0x0000010001010101), + CONST64(0x0001000001010001), CONST64(0x0001010001010001), CONST64(0x0001000001010101), CONST64(0x0001010001010101), + CONST64(0x0100000001000001), CONST64(0x0100010001000001), CONST64(0x0100000001000101), CONST64(0x0100010001000101), + CONST64(0x0101000001000001), CONST64(0x0101010001000001), CONST64(0x0101000001000101), CONST64(0x0101010001000101), + CONST64(0x0100000001010001), CONST64(0x0100010001010001), CONST64(0x0100000001010101), CONST64(0x0100010001010101), + CONST64(0x0101000001010001), CONST64(0x0101010001010001), CONST64(0x0101000001010101), CONST64(0x0101010001010101), + CONST64(0x0000000100000001), CONST64(0x0000010100000001), CONST64(0x0000000100000101), CONST64(0x0000010100000101), + CONST64(0x0001000100000001), CONST64(0x0001010100000001), CONST64(0x0001000100000101), CONST64(0x0001010100000101), + CONST64(0x0000000100010001), CONST64(0x0000010100010001), CONST64(0x0000000100010101), CONST64(0x0000010100010101), + CONST64(0x0001000100010001), CONST64(0x0001010100010001), CONST64(0x0001000100010101), CONST64(0x0001010100010101), + CONST64(0x0100000100000001), CONST64(0x0100010100000001), CONST64(0x0100000100000101), CONST64(0x0100010100000101), + CONST64(0x0101000100000001), CONST64(0x0101010100000001), CONST64(0x0101000100000101), CONST64(0x0101010100000101), + CONST64(0x0100000100010001), CONST64(0x0100010100010001), CONST64(0x0100000100010101), CONST64(0x0100010100010101), + CONST64(0x0101000100010001), CONST64(0x0101010100010001), CONST64(0x0101000100010101), CONST64(0x0101010100010101), + CONST64(0x0000000101000001), CONST64(0x0000010101000001), CONST64(0x0000000101000101), CONST64(0x0000010101000101), + CONST64(0x0001000101000001), CONST64(0x0001010101000001), CONST64(0x0001000101000101), CONST64(0x0001010101000101), + CONST64(0x0000000101010001), CONST64(0x0000010101010001), CONST64(0x0000000101010101), CONST64(0x0000010101010101), + CONST64(0x0001000101010001), CONST64(0x0001010101010001), CONST64(0x0001000101010101), CONST64(0x0001010101010101), + CONST64(0x0100000101000001), CONST64(0x0100010101000001), CONST64(0x0100000101000101), CONST64(0x0100010101000101), + CONST64(0x0101000101000001), CONST64(0x0101010101000001), CONST64(0x0101000101000101), CONST64(0x0101010101000101), + CONST64(0x0100000101010001), CONST64(0x0100010101010001), CONST64(0x0100000101010101), CONST64(0x0100010101010101), + CONST64(0x0101000101010001), CONST64(0x0101010101010001), CONST64(0x0101000101010101), CONST64(0x0101010101010101) + }, +{ CONST64(0x0000000000000000), CONST64(0x0000008000000000), CONST64(0x0000000000000080), CONST64(0x0000008000000080), + CONST64(0x0000800000000000), CONST64(0x0000808000000000), CONST64(0x0000800000000080), CONST64(0x0000808000000080), + CONST64(0x0000000000008000), CONST64(0x0000008000008000), CONST64(0x0000000000008080), CONST64(0x0000008000008080), + CONST64(0x0000800000008000), CONST64(0x0000808000008000), CONST64(0x0000800000008080), CONST64(0x0000808000008080), + CONST64(0x0080000000000000), CONST64(0x0080008000000000), CONST64(0x0080000000000080), CONST64(0x0080008000000080), + CONST64(0x0080800000000000), CONST64(0x0080808000000000), CONST64(0x0080800000000080), CONST64(0x0080808000000080), + CONST64(0x0080000000008000), CONST64(0x0080008000008000), CONST64(0x0080000000008080), CONST64(0x0080008000008080), + CONST64(0x0080800000008000), CONST64(0x0080808000008000), CONST64(0x0080800000008080), CONST64(0x0080808000008080), + CONST64(0x0000000000800000), CONST64(0x0000008000800000), CONST64(0x0000000000800080), CONST64(0x0000008000800080), + CONST64(0x0000800000800000), CONST64(0x0000808000800000), CONST64(0x0000800000800080), CONST64(0x0000808000800080), + CONST64(0x0000000000808000), CONST64(0x0000008000808000), CONST64(0x0000000000808080), CONST64(0x0000008000808080), + CONST64(0x0000800000808000), CONST64(0x0000808000808000), CONST64(0x0000800000808080), CONST64(0x0000808000808080), + CONST64(0x0080000000800000), CONST64(0x0080008000800000), CONST64(0x0080000000800080), CONST64(0x0080008000800080), + CONST64(0x0080800000800000), CONST64(0x0080808000800000), CONST64(0x0080800000800080), CONST64(0x0080808000800080), + CONST64(0x0080000000808000), CONST64(0x0080008000808000), CONST64(0x0080000000808080), CONST64(0x0080008000808080), + CONST64(0x0080800000808000), CONST64(0x0080808000808000), CONST64(0x0080800000808080), CONST64(0x0080808000808080), + CONST64(0x8000000000000000), CONST64(0x8000008000000000), CONST64(0x8000000000000080), CONST64(0x8000008000000080), + CONST64(0x8000800000000000), CONST64(0x8000808000000000), CONST64(0x8000800000000080), CONST64(0x8000808000000080), + CONST64(0x8000000000008000), CONST64(0x8000008000008000), CONST64(0x8000000000008080), CONST64(0x8000008000008080), + CONST64(0x8000800000008000), CONST64(0x8000808000008000), CONST64(0x8000800000008080), CONST64(0x8000808000008080), + CONST64(0x8080000000000000), CONST64(0x8080008000000000), CONST64(0x8080000000000080), CONST64(0x8080008000000080), + CONST64(0x8080800000000000), CONST64(0x8080808000000000), CONST64(0x8080800000000080), CONST64(0x8080808000000080), + CONST64(0x8080000000008000), CONST64(0x8080008000008000), CONST64(0x8080000000008080), CONST64(0x8080008000008080), + CONST64(0x8080800000008000), CONST64(0x8080808000008000), CONST64(0x8080800000008080), CONST64(0x8080808000008080), + CONST64(0x8000000000800000), CONST64(0x8000008000800000), CONST64(0x8000000000800080), CONST64(0x8000008000800080), + CONST64(0x8000800000800000), CONST64(0x8000808000800000), CONST64(0x8000800000800080), CONST64(0x8000808000800080), + CONST64(0x8000000000808000), CONST64(0x8000008000808000), CONST64(0x8000000000808080), CONST64(0x8000008000808080), + CONST64(0x8000800000808000), CONST64(0x8000808000808000), CONST64(0x8000800000808080), CONST64(0x8000808000808080), + CONST64(0x8080000000800000), CONST64(0x8080008000800000), CONST64(0x8080000000800080), CONST64(0x8080008000800080), + CONST64(0x8080800000800000), CONST64(0x8080808000800000), CONST64(0x8080800000800080), CONST64(0x8080808000800080), + CONST64(0x8080000000808000), CONST64(0x8080008000808000), CONST64(0x8080000000808080), CONST64(0x8080008000808080), + CONST64(0x8080800000808000), CONST64(0x8080808000808000), CONST64(0x8080800000808080), CONST64(0x8080808000808080), + CONST64(0x0000000080000000), CONST64(0x0000008080000000), CONST64(0x0000000080000080), CONST64(0x0000008080000080), + CONST64(0x0000800080000000), CONST64(0x0000808080000000), CONST64(0x0000800080000080), CONST64(0x0000808080000080), + CONST64(0x0000000080008000), CONST64(0x0000008080008000), CONST64(0x0000000080008080), CONST64(0x0000008080008080), + CONST64(0x0000800080008000), CONST64(0x0000808080008000), CONST64(0x0000800080008080), CONST64(0x0000808080008080), + CONST64(0x0080000080000000), CONST64(0x0080008080000000), CONST64(0x0080000080000080), CONST64(0x0080008080000080), + CONST64(0x0080800080000000), CONST64(0x0080808080000000), CONST64(0x0080800080000080), CONST64(0x0080808080000080), + CONST64(0x0080000080008000), CONST64(0x0080008080008000), CONST64(0x0080000080008080), CONST64(0x0080008080008080), + CONST64(0x0080800080008000), CONST64(0x0080808080008000), CONST64(0x0080800080008080), CONST64(0x0080808080008080), + CONST64(0x0000000080800000), CONST64(0x0000008080800000), CONST64(0x0000000080800080), CONST64(0x0000008080800080), + CONST64(0x0000800080800000), CONST64(0x0000808080800000), CONST64(0x0000800080800080), CONST64(0x0000808080800080), + CONST64(0x0000000080808000), CONST64(0x0000008080808000), CONST64(0x0000000080808080), CONST64(0x0000008080808080), + CONST64(0x0000800080808000), CONST64(0x0000808080808000), CONST64(0x0000800080808080), CONST64(0x0000808080808080), + CONST64(0x0080000080800000), CONST64(0x0080008080800000), CONST64(0x0080000080800080), CONST64(0x0080008080800080), + CONST64(0x0080800080800000), CONST64(0x0080808080800000), CONST64(0x0080800080800080), CONST64(0x0080808080800080), + CONST64(0x0080000080808000), CONST64(0x0080008080808000), CONST64(0x0080000080808080), CONST64(0x0080008080808080), + CONST64(0x0080800080808000), CONST64(0x0080808080808000), CONST64(0x0080800080808080), CONST64(0x0080808080808080), + CONST64(0x8000000080000000), CONST64(0x8000008080000000), CONST64(0x8000000080000080), CONST64(0x8000008080000080), + CONST64(0x8000800080000000), CONST64(0x8000808080000000), CONST64(0x8000800080000080), CONST64(0x8000808080000080), + CONST64(0x8000000080008000), CONST64(0x8000008080008000), CONST64(0x8000000080008080), CONST64(0x8000008080008080), + CONST64(0x8000800080008000), CONST64(0x8000808080008000), CONST64(0x8000800080008080), CONST64(0x8000808080008080), + CONST64(0x8080000080000000), CONST64(0x8080008080000000), CONST64(0x8080000080000080), CONST64(0x8080008080000080), + CONST64(0x8080800080000000), CONST64(0x8080808080000000), CONST64(0x8080800080000080), CONST64(0x8080808080000080), + CONST64(0x8080000080008000), CONST64(0x8080008080008000), CONST64(0x8080000080008080), CONST64(0x8080008080008080), + CONST64(0x8080800080008000), CONST64(0x8080808080008000), CONST64(0x8080800080008080), CONST64(0x8080808080008080), + CONST64(0x8000000080800000), CONST64(0x8000008080800000), CONST64(0x8000000080800080), CONST64(0x8000008080800080), + CONST64(0x8000800080800000), CONST64(0x8000808080800000), CONST64(0x8000800080800080), CONST64(0x8000808080800080), + CONST64(0x8000000080808000), CONST64(0x8000008080808000), CONST64(0x8000000080808080), CONST64(0x8000008080808080), + CONST64(0x8000800080808000), CONST64(0x8000808080808000), CONST64(0x8000800080808080), CONST64(0x8000808080808080), + CONST64(0x8080000080800000), CONST64(0x8080008080800000), CONST64(0x8080000080800080), CONST64(0x8080008080800080), + CONST64(0x8080800080800000), CONST64(0x8080808080800000), CONST64(0x8080800080800080), CONST64(0x8080808080800080), + CONST64(0x8080000080808000), CONST64(0x8080008080808000), CONST64(0x8080000080808080), CONST64(0x8080008080808080), + CONST64(0x8080800080808000), CONST64(0x8080808080808000), CONST64(0x8080800080808080), CONST64(0x8080808080808080) + }, +{ CONST64(0x0000000000000000), CONST64(0x0000004000000000), CONST64(0x0000000000000040), CONST64(0x0000004000000040), + CONST64(0x0000400000000000), CONST64(0x0000404000000000), CONST64(0x0000400000000040), CONST64(0x0000404000000040), + CONST64(0x0000000000004000), CONST64(0x0000004000004000), CONST64(0x0000000000004040), CONST64(0x0000004000004040), + CONST64(0x0000400000004000), CONST64(0x0000404000004000), CONST64(0x0000400000004040), CONST64(0x0000404000004040), + CONST64(0x0040000000000000), CONST64(0x0040004000000000), CONST64(0x0040000000000040), CONST64(0x0040004000000040), + CONST64(0x0040400000000000), CONST64(0x0040404000000000), CONST64(0x0040400000000040), CONST64(0x0040404000000040), + CONST64(0x0040000000004000), CONST64(0x0040004000004000), CONST64(0x0040000000004040), CONST64(0x0040004000004040), + CONST64(0x0040400000004000), CONST64(0x0040404000004000), CONST64(0x0040400000004040), CONST64(0x0040404000004040), + CONST64(0x0000000000400000), CONST64(0x0000004000400000), CONST64(0x0000000000400040), CONST64(0x0000004000400040), + CONST64(0x0000400000400000), CONST64(0x0000404000400000), CONST64(0x0000400000400040), CONST64(0x0000404000400040), + CONST64(0x0000000000404000), CONST64(0x0000004000404000), CONST64(0x0000000000404040), CONST64(0x0000004000404040), + CONST64(0x0000400000404000), CONST64(0x0000404000404000), CONST64(0x0000400000404040), CONST64(0x0000404000404040), + CONST64(0x0040000000400000), CONST64(0x0040004000400000), CONST64(0x0040000000400040), CONST64(0x0040004000400040), + CONST64(0x0040400000400000), CONST64(0x0040404000400000), CONST64(0x0040400000400040), CONST64(0x0040404000400040), + CONST64(0x0040000000404000), CONST64(0x0040004000404000), CONST64(0x0040000000404040), CONST64(0x0040004000404040), + CONST64(0x0040400000404000), CONST64(0x0040404000404000), CONST64(0x0040400000404040), CONST64(0x0040404000404040), + CONST64(0x4000000000000000), CONST64(0x4000004000000000), CONST64(0x4000000000000040), CONST64(0x4000004000000040), + CONST64(0x4000400000000000), CONST64(0x4000404000000000), CONST64(0x4000400000000040), CONST64(0x4000404000000040), + CONST64(0x4000000000004000), CONST64(0x4000004000004000), CONST64(0x4000000000004040), CONST64(0x4000004000004040), + CONST64(0x4000400000004000), CONST64(0x4000404000004000), CONST64(0x4000400000004040), CONST64(0x4000404000004040), + CONST64(0x4040000000000000), CONST64(0x4040004000000000), CONST64(0x4040000000000040), CONST64(0x4040004000000040), + CONST64(0x4040400000000000), CONST64(0x4040404000000000), CONST64(0x4040400000000040), CONST64(0x4040404000000040), + CONST64(0x4040000000004000), CONST64(0x4040004000004000), CONST64(0x4040000000004040), CONST64(0x4040004000004040), + CONST64(0x4040400000004000), CONST64(0x4040404000004000), CONST64(0x4040400000004040), CONST64(0x4040404000004040), + CONST64(0x4000000000400000), CONST64(0x4000004000400000), CONST64(0x4000000000400040), CONST64(0x4000004000400040), + CONST64(0x4000400000400000), CONST64(0x4000404000400000), CONST64(0x4000400000400040), CONST64(0x4000404000400040), + CONST64(0x4000000000404000), CONST64(0x4000004000404000), CONST64(0x4000000000404040), CONST64(0x4000004000404040), + CONST64(0x4000400000404000), CONST64(0x4000404000404000), CONST64(0x4000400000404040), CONST64(0x4000404000404040), + CONST64(0x4040000000400000), CONST64(0x4040004000400000), CONST64(0x4040000000400040), CONST64(0x4040004000400040), + CONST64(0x4040400000400000), CONST64(0x4040404000400000), CONST64(0x4040400000400040), CONST64(0x4040404000400040), + CONST64(0x4040000000404000), CONST64(0x4040004000404000), CONST64(0x4040000000404040), CONST64(0x4040004000404040), + CONST64(0x4040400000404000), CONST64(0x4040404000404000), CONST64(0x4040400000404040), CONST64(0x4040404000404040), + CONST64(0x0000000040000000), CONST64(0x0000004040000000), CONST64(0x0000000040000040), CONST64(0x0000004040000040), + CONST64(0x0000400040000000), CONST64(0x0000404040000000), CONST64(0x0000400040000040), CONST64(0x0000404040000040), + CONST64(0x0000000040004000), CONST64(0x0000004040004000), CONST64(0x0000000040004040), CONST64(0x0000004040004040), + CONST64(0x0000400040004000), CONST64(0x0000404040004000), CONST64(0x0000400040004040), CONST64(0x0000404040004040), + CONST64(0x0040000040000000), CONST64(0x0040004040000000), CONST64(0x0040000040000040), CONST64(0x0040004040000040), + CONST64(0x0040400040000000), CONST64(0x0040404040000000), CONST64(0x0040400040000040), CONST64(0x0040404040000040), + CONST64(0x0040000040004000), CONST64(0x0040004040004000), CONST64(0x0040000040004040), CONST64(0x0040004040004040), + CONST64(0x0040400040004000), CONST64(0x0040404040004000), CONST64(0x0040400040004040), CONST64(0x0040404040004040), + CONST64(0x0000000040400000), CONST64(0x0000004040400000), CONST64(0x0000000040400040), CONST64(0x0000004040400040), + CONST64(0x0000400040400000), CONST64(0x0000404040400000), CONST64(0x0000400040400040), CONST64(0x0000404040400040), + CONST64(0x0000000040404000), CONST64(0x0000004040404000), CONST64(0x0000000040404040), CONST64(0x0000004040404040), + CONST64(0x0000400040404000), CONST64(0x0000404040404000), CONST64(0x0000400040404040), CONST64(0x0000404040404040), + CONST64(0x0040000040400000), CONST64(0x0040004040400000), CONST64(0x0040000040400040), CONST64(0x0040004040400040), + CONST64(0x0040400040400000), CONST64(0x0040404040400000), CONST64(0x0040400040400040), CONST64(0x0040404040400040), + CONST64(0x0040000040404000), CONST64(0x0040004040404000), CONST64(0x0040000040404040), CONST64(0x0040004040404040), + CONST64(0x0040400040404000), CONST64(0x0040404040404000), CONST64(0x0040400040404040), CONST64(0x0040404040404040), + CONST64(0x4000000040000000), CONST64(0x4000004040000000), CONST64(0x4000000040000040), CONST64(0x4000004040000040), + CONST64(0x4000400040000000), CONST64(0x4000404040000000), CONST64(0x4000400040000040), CONST64(0x4000404040000040), + CONST64(0x4000000040004000), CONST64(0x4000004040004000), CONST64(0x4000000040004040), CONST64(0x4000004040004040), + CONST64(0x4000400040004000), CONST64(0x4000404040004000), CONST64(0x4000400040004040), CONST64(0x4000404040004040), + CONST64(0x4040000040000000), CONST64(0x4040004040000000), CONST64(0x4040000040000040), CONST64(0x4040004040000040), + CONST64(0x4040400040000000), CONST64(0x4040404040000000), CONST64(0x4040400040000040), CONST64(0x4040404040000040), + CONST64(0x4040000040004000), CONST64(0x4040004040004000), CONST64(0x4040000040004040), CONST64(0x4040004040004040), + CONST64(0x4040400040004000), CONST64(0x4040404040004000), CONST64(0x4040400040004040), CONST64(0x4040404040004040), + CONST64(0x4000000040400000), CONST64(0x4000004040400000), CONST64(0x4000000040400040), CONST64(0x4000004040400040), + CONST64(0x4000400040400000), CONST64(0x4000404040400000), CONST64(0x4000400040400040), CONST64(0x4000404040400040), + CONST64(0x4000000040404000), CONST64(0x4000004040404000), CONST64(0x4000000040404040), CONST64(0x4000004040404040), + CONST64(0x4000400040404000), CONST64(0x4000404040404000), CONST64(0x4000400040404040), CONST64(0x4000404040404040), + CONST64(0x4040000040400000), CONST64(0x4040004040400000), CONST64(0x4040000040400040), CONST64(0x4040004040400040), + CONST64(0x4040400040400000), CONST64(0x4040404040400000), CONST64(0x4040400040400040), CONST64(0x4040404040400040), + CONST64(0x4040000040404000), CONST64(0x4040004040404000), CONST64(0x4040000040404040), CONST64(0x4040004040404040), + CONST64(0x4040400040404000), CONST64(0x4040404040404000), CONST64(0x4040400040404040), CONST64(0x4040404040404040) + }, +{ CONST64(0x0000000000000000), CONST64(0x0000002000000000), CONST64(0x0000000000000020), CONST64(0x0000002000000020), + CONST64(0x0000200000000000), CONST64(0x0000202000000000), CONST64(0x0000200000000020), CONST64(0x0000202000000020), + CONST64(0x0000000000002000), CONST64(0x0000002000002000), CONST64(0x0000000000002020), CONST64(0x0000002000002020), + CONST64(0x0000200000002000), CONST64(0x0000202000002000), CONST64(0x0000200000002020), CONST64(0x0000202000002020), + CONST64(0x0020000000000000), CONST64(0x0020002000000000), CONST64(0x0020000000000020), CONST64(0x0020002000000020), + CONST64(0x0020200000000000), CONST64(0x0020202000000000), CONST64(0x0020200000000020), CONST64(0x0020202000000020), + CONST64(0x0020000000002000), CONST64(0x0020002000002000), CONST64(0x0020000000002020), CONST64(0x0020002000002020), + CONST64(0x0020200000002000), CONST64(0x0020202000002000), CONST64(0x0020200000002020), CONST64(0x0020202000002020), + CONST64(0x0000000000200000), CONST64(0x0000002000200000), CONST64(0x0000000000200020), CONST64(0x0000002000200020), + CONST64(0x0000200000200000), CONST64(0x0000202000200000), CONST64(0x0000200000200020), CONST64(0x0000202000200020), + CONST64(0x0000000000202000), CONST64(0x0000002000202000), CONST64(0x0000000000202020), CONST64(0x0000002000202020), + CONST64(0x0000200000202000), CONST64(0x0000202000202000), CONST64(0x0000200000202020), CONST64(0x0000202000202020), + CONST64(0x0020000000200000), CONST64(0x0020002000200000), CONST64(0x0020000000200020), CONST64(0x0020002000200020), + CONST64(0x0020200000200000), CONST64(0x0020202000200000), CONST64(0x0020200000200020), CONST64(0x0020202000200020), + CONST64(0x0020000000202000), CONST64(0x0020002000202000), CONST64(0x0020000000202020), CONST64(0x0020002000202020), + CONST64(0x0020200000202000), CONST64(0x0020202000202000), CONST64(0x0020200000202020), CONST64(0x0020202000202020), + CONST64(0x2000000000000000), CONST64(0x2000002000000000), CONST64(0x2000000000000020), CONST64(0x2000002000000020), + CONST64(0x2000200000000000), CONST64(0x2000202000000000), CONST64(0x2000200000000020), CONST64(0x2000202000000020), + CONST64(0x2000000000002000), CONST64(0x2000002000002000), CONST64(0x2000000000002020), CONST64(0x2000002000002020), + CONST64(0x2000200000002000), CONST64(0x2000202000002000), CONST64(0x2000200000002020), CONST64(0x2000202000002020), + CONST64(0x2020000000000000), CONST64(0x2020002000000000), CONST64(0x2020000000000020), CONST64(0x2020002000000020), + CONST64(0x2020200000000000), CONST64(0x2020202000000000), CONST64(0x2020200000000020), CONST64(0x2020202000000020), + CONST64(0x2020000000002000), CONST64(0x2020002000002000), CONST64(0x2020000000002020), CONST64(0x2020002000002020), + CONST64(0x2020200000002000), CONST64(0x2020202000002000), CONST64(0x2020200000002020), CONST64(0x2020202000002020), + CONST64(0x2000000000200000), CONST64(0x2000002000200000), CONST64(0x2000000000200020), CONST64(0x2000002000200020), + CONST64(0x2000200000200000), CONST64(0x2000202000200000), CONST64(0x2000200000200020), CONST64(0x2000202000200020), + CONST64(0x2000000000202000), CONST64(0x2000002000202000), CONST64(0x2000000000202020), CONST64(0x2000002000202020), + CONST64(0x2000200000202000), CONST64(0x2000202000202000), CONST64(0x2000200000202020), CONST64(0x2000202000202020), + CONST64(0x2020000000200000), CONST64(0x2020002000200000), CONST64(0x2020000000200020), CONST64(0x2020002000200020), + CONST64(0x2020200000200000), CONST64(0x2020202000200000), CONST64(0x2020200000200020), CONST64(0x2020202000200020), + CONST64(0x2020000000202000), CONST64(0x2020002000202000), CONST64(0x2020000000202020), CONST64(0x2020002000202020), + CONST64(0x2020200000202000), CONST64(0x2020202000202000), CONST64(0x2020200000202020), CONST64(0x2020202000202020), + CONST64(0x0000000020000000), CONST64(0x0000002020000000), CONST64(0x0000000020000020), CONST64(0x0000002020000020), + CONST64(0x0000200020000000), CONST64(0x0000202020000000), CONST64(0x0000200020000020), CONST64(0x0000202020000020), + CONST64(0x0000000020002000), CONST64(0x0000002020002000), CONST64(0x0000000020002020), CONST64(0x0000002020002020), + CONST64(0x0000200020002000), CONST64(0x0000202020002000), CONST64(0x0000200020002020), CONST64(0x0000202020002020), + CONST64(0x0020000020000000), CONST64(0x0020002020000000), CONST64(0x0020000020000020), CONST64(0x0020002020000020), + CONST64(0x0020200020000000), CONST64(0x0020202020000000), CONST64(0x0020200020000020), CONST64(0x0020202020000020), + CONST64(0x0020000020002000), CONST64(0x0020002020002000), CONST64(0x0020000020002020), CONST64(0x0020002020002020), + CONST64(0x0020200020002000), CONST64(0x0020202020002000), CONST64(0x0020200020002020), CONST64(0x0020202020002020), + CONST64(0x0000000020200000), CONST64(0x0000002020200000), CONST64(0x0000000020200020), CONST64(0x0000002020200020), + CONST64(0x0000200020200000), CONST64(0x0000202020200000), CONST64(0x0000200020200020), CONST64(0x0000202020200020), + CONST64(0x0000000020202000), CONST64(0x0000002020202000), CONST64(0x0000000020202020), CONST64(0x0000002020202020), + CONST64(0x0000200020202000), CONST64(0x0000202020202000), CONST64(0x0000200020202020), CONST64(0x0000202020202020), + CONST64(0x0020000020200000), CONST64(0x0020002020200000), CONST64(0x0020000020200020), CONST64(0x0020002020200020), + CONST64(0x0020200020200000), CONST64(0x0020202020200000), CONST64(0x0020200020200020), CONST64(0x0020202020200020), + CONST64(0x0020000020202000), CONST64(0x0020002020202000), CONST64(0x0020000020202020), CONST64(0x0020002020202020), + CONST64(0x0020200020202000), CONST64(0x0020202020202000), CONST64(0x0020200020202020), CONST64(0x0020202020202020), + CONST64(0x2000000020000000), CONST64(0x2000002020000000), CONST64(0x2000000020000020), CONST64(0x2000002020000020), + CONST64(0x2000200020000000), CONST64(0x2000202020000000), CONST64(0x2000200020000020), CONST64(0x2000202020000020), + CONST64(0x2000000020002000), CONST64(0x2000002020002000), CONST64(0x2000000020002020), CONST64(0x2000002020002020), + CONST64(0x2000200020002000), CONST64(0x2000202020002000), CONST64(0x2000200020002020), CONST64(0x2000202020002020), + CONST64(0x2020000020000000), CONST64(0x2020002020000000), CONST64(0x2020000020000020), CONST64(0x2020002020000020), + CONST64(0x2020200020000000), CONST64(0x2020202020000000), CONST64(0x2020200020000020), CONST64(0x2020202020000020), + CONST64(0x2020000020002000), CONST64(0x2020002020002000), CONST64(0x2020000020002020), CONST64(0x2020002020002020), + CONST64(0x2020200020002000), CONST64(0x2020202020002000), CONST64(0x2020200020002020), CONST64(0x2020202020002020), + CONST64(0x2000000020200000), CONST64(0x2000002020200000), CONST64(0x2000000020200020), CONST64(0x2000002020200020), + CONST64(0x2000200020200000), CONST64(0x2000202020200000), CONST64(0x2000200020200020), CONST64(0x2000202020200020), + CONST64(0x2000000020202000), CONST64(0x2000002020202000), CONST64(0x2000000020202020), CONST64(0x2000002020202020), + CONST64(0x2000200020202000), CONST64(0x2000202020202000), CONST64(0x2000200020202020), CONST64(0x2000202020202020), + CONST64(0x2020000020200000), CONST64(0x2020002020200000), CONST64(0x2020000020200020), CONST64(0x2020002020200020), + CONST64(0x2020200020200000), CONST64(0x2020202020200000), CONST64(0x2020200020200020), CONST64(0x2020202020200020), + CONST64(0x2020000020202000), CONST64(0x2020002020202000), CONST64(0x2020000020202020), CONST64(0x2020002020202020), + CONST64(0x2020200020202000), CONST64(0x2020202020202000), CONST64(0x2020200020202020), CONST64(0x2020202020202020) + }}; + +static const ulong64 des_fp[8][256] = { + +{ CONST64(0x0000000000000000), CONST64(0x0000008000000000), CONST64(0x0000000002000000), CONST64(0x0000008002000000), + CONST64(0x0000000000020000), CONST64(0x0000008000020000), CONST64(0x0000000002020000), CONST64(0x0000008002020000), + CONST64(0x0000000000000200), CONST64(0x0000008000000200), CONST64(0x0000000002000200), CONST64(0x0000008002000200), + CONST64(0x0000000000020200), CONST64(0x0000008000020200), CONST64(0x0000000002020200), CONST64(0x0000008002020200), + CONST64(0x0000000000000002), CONST64(0x0000008000000002), CONST64(0x0000000002000002), CONST64(0x0000008002000002), + CONST64(0x0000000000020002), CONST64(0x0000008000020002), CONST64(0x0000000002020002), CONST64(0x0000008002020002), + CONST64(0x0000000000000202), CONST64(0x0000008000000202), CONST64(0x0000000002000202), CONST64(0x0000008002000202), + CONST64(0x0000000000020202), CONST64(0x0000008000020202), CONST64(0x0000000002020202), CONST64(0x0000008002020202), + CONST64(0x0200000000000000), CONST64(0x0200008000000000), CONST64(0x0200000002000000), CONST64(0x0200008002000000), + CONST64(0x0200000000020000), CONST64(0x0200008000020000), CONST64(0x0200000002020000), CONST64(0x0200008002020000), + CONST64(0x0200000000000200), CONST64(0x0200008000000200), CONST64(0x0200000002000200), CONST64(0x0200008002000200), + CONST64(0x0200000000020200), CONST64(0x0200008000020200), CONST64(0x0200000002020200), CONST64(0x0200008002020200), + CONST64(0x0200000000000002), CONST64(0x0200008000000002), CONST64(0x0200000002000002), CONST64(0x0200008002000002), + CONST64(0x0200000000020002), CONST64(0x0200008000020002), CONST64(0x0200000002020002), CONST64(0x0200008002020002), + CONST64(0x0200000000000202), CONST64(0x0200008000000202), CONST64(0x0200000002000202), CONST64(0x0200008002000202), + CONST64(0x0200000000020202), CONST64(0x0200008000020202), CONST64(0x0200000002020202), CONST64(0x0200008002020202), + CONST64(0x0002000000000000), CONST64(0x0002008000000000), CONST64(0x0002000002000000), CONST64(0x0002008002000000), + CONST64(0x0002000000020000), CONST64(0x0002008000020000), CONST64(0x0002000002020000), CONST64(0x0002008002020000), + CONST64(0x0002000000000200), CONST64(0x0002008000000200), CONST64(0x0002000002000200), CONST64(0x0002008002000200), + CONST64(0x0002000000020200), CONST64(0x0002008000020200), CONST64(0x0002000002020200), CONST64(0x0002008002020200), + CONST64(0x0002000000000002), CONST64(0x0002008000000002), CONST64(0x0002000002000002), CONST64(0x0002008002000002), + CONST64(0x0002000000020002), CONST64(0x0002008000020002), CONST64(0x0002000002020002), CONST64(0x0002008002020002), + CONST64(0x0002000000000202), CONST64(0x0002008000000202), CONST64(0x0002000002000202), CONST64(0x0002008002000202), + CONST64(0x0002000000020202), CONST64(0x0002008000020202), CONST64(0x0002000002020202), CONST64(0x0002008002020202), + CONST64(0x0202000000000000), CONST64(0x0202008000000000), CONST64(0x0202000002000000), CONST64(0x0202008002000000), + CONST64(0x0202000000020000), CONST64(0x0202008000020000), CONST64(0x0202000002020000), CONST64(0x0202008002020000), + CONST64(0x0202000000000200), CONST64(0x0202008000000200), CONST64(0x0202000002000200), CONST64(0x0202008002000200), + CONST64(0x0202000000020200), CONST64(0x0202008000020200), CONST64(0x0202000002020200), CONST64(0x0202008002020200), + CONST64(0x0202000000000002), CONST64(0x0202008000000002), CONST64(0x0202000002000002), CONST64(0x0202008002000002), + CONST64(0x0202000000020002), CONST64(0x0202008000020002), CONST64(0x0202000002020002), CONST64(0x0202008002020002), + CONST64(0x0202000000000202), CONST64(0x0202008000000202), CONST64(0x0202000002000202), CONST64(0x0202008002000202), + CONST64(0x0202000000020202), CONST64(0x0202008000020202), CONST64(0x0202000002020202), CONST64(0x0202008002020202), + CONST64(0x0000020000000000), CONST64(0x0000028000000000), CONST64(0x0000020002000000), CONST64(0x0000028002000000), + CONST64(0x0000020000020000), CONST64(0x0000028000020000), CONST64(0x0000020002020000), CONST64(0x0000028002020000), + CONST64(0x0000020000000200), CONST64(0x0000028000000200), CONST64(0x0000020002000200), CONST64(0x0000028002000200), + CONST64(0x0000020000020200), CONST64(0x0000028000020200), CONST64(0x0000020002020200), CONST64(0x0000028002020200), + CONST64(0x0000020000000002), CONST64(0x0000028000000002), CONST64(0x0000020002000002), CONST64(0x0000028002000002), + CONST64(0x0000020000020002), CONST64(0x0000028000020002), CONST64(0x0000020002020002), CONST64(0x0000028002020002), + CONST64(0x0000020000000202), CONST64(0x0000028000000202), CONST64(0x0000020002000202), CONST64(0x0000028002000202), + CONST64(0x0000020000020202), CONST64(0x0000028000020202), CONST64(0x0000020002020202), CONST64(0x0000028002020202), + CONST64(0x0200020000000000), CONST64(0x0200028000000000), CONST64(0x0200020002000000), CONST64(0x0200028002000000), + CONST64(0x0200020000020000), CONST64(0x0200028000020000), CONST64(0x0200020002020000), CONST64(0x0200028002020000), + CONST64(0x0200020000000200), CONST64(0x0200028000000200), CONST64(0x0200020002000200), CONST64(0x0200028002000200), + CONST64(0x0200020000020200), CONST64(0x0200028000020200), CONST64(0x0200020002020200), CONST64(0x0200028002020200), + CONST64(0x0200020000000002), CONST64(0x0200028000000002), CONST64(0x0200020002000002), CONST64(0x0200028002000002), + CONST64(0x0200020000020002), CONST64(0x0200028000020002), CONST64(0x0200020002020002), CONST64(0x0200028002020002), + CONST64(0x0200020000000202), CONST64(0x0200028000000202), CONST64(0x0200020002000202), CONST64(0x0200028002000202), + CONST64(0x0200020000020202), CONST64(0x0200028000020202), CONST64(0x0200020002020202), CONST64(0x0200028002020202), + CONST64(0x0002020000000000), CONST64(0x0002028000000000), CONST64(0x0002020002000000), CONST64(0x0002028002000000), + CONST64(0x0002020000020000), CONST64(0x0002028000020000), CONST64(0x0002020002020000), CONST64(0x0002028002020000), + CONST64(0x0002020000000200), CONST64(0x0002028000000200), CONST64(0x0002020002000200), CONST64(0x0002028002000200), + CONST64(0x0002020000020200), CONST64(0x0002028000020200), CONST64(0x0002020002020200), CONST64(0x0002028002020200), + CONST64(0x0002020000000002), CONST64(0x0002028000000002), CONST64(0x0002020002000002), CONST64(0x0002028002000002), + CONST64(0x0002020000020002), CONST64(0x0002028000020002), CONST64(0x0002020002020002), CONST64(0x0002028002020002), + CONST64(0x0002020000000202), CONST64(0x0002028000000202), CONST64(0x0002020002000202), CONST64(0x0002028002000202), + CONST64(0x0002020000020202), CONST64(0x0002028000020202), CONST64(0x0002020002020202), CONST64(0x0002028002020202), + CONST64(0x0202020000000000), CONST64(0x0202028000000000), CONST64(0x0202020002000000), CONST64(0x0202028002000000), + CONST64(0x0202020000020000), CONST64(0x0202028000020000), CONST64(0x0202020002020000), CONST64(0x0202028002020000), + CONST64(0x0202020000000200), CONST64(0x0202028000000200), CONST64(0x0202020002000200), CONST64(0x0202028002000200), + CONST64(0x0202020000020200), CONST64(0x0202028000020200), CONST64(0x0202020002020200), CONST64(0x0202028002020200), + CONST64(0x0202020000000002), CONST64(0x0202028000000002), CONST64(0x0202020002000002), CONST64(0x0202028002000002), + CONST64(0x0202020000020002), CONST64(0x0202028000020002), CONST64(0x0202020002020002), CONST64(0x0202028002020002), + CONST64(0x0202020000000202), CONST64(0x0202028000000202), CONST64(0x0202020002000202), CONST64(0x0202028002000202), + CONST64(0x0202020000020202), CONST64(0x0202028000020202), CONST64(0x0202020002020202), CONST64(0x0202028002020202) + }, +{ CONST64(0x0000000000000000), CONST64(0x0000000200000000), CONST64(0x0000000008000000), CONST64(0x0000000208000000), + CONST64(0x0000000000080000), CONST64(0x0000000200080000), CONST64(0x0000000008080000), CONST64(0x0000000208080000), + CONST64(0x0000000000000800), CONST64(0x0000000200000800), CONST64(0x0000000008000800), CONST64(0x0000000208000800), + CONST64(0x0000000000080800), CONST64(0x0000000200080800), CONST64(0x0000000008080800), CONST64(0x0000000208080800), + CONST64(0x0000000000000008), CONST64(0x0000000200000008), CONST64(0x0000000008000008), CONST64(0x0000000208000008), + CONST64(0x0000000000080008), CONST64(0x0000000200080008), CONST64(0x0000000008080008), CONST64(0x0000000208080008), + CONST64(0x0000000000000808), CONST64(0x0000000200000808), CONST64(0x0000000008000808), CONST64(0x0000000208000808), + CONST64(0x0000000000080808), CONST64(0x0000000200080808), CONST64(0x0000000008080808), CONST64(0x0000000208080808), + CONST64(0x0800000000000000), CONST64(0x0800000200000000), CONST64(0x0800000008000000), CONST64(0x0800000208000000), + CONST64(0x0800000000080000), CONST64(0x0800000200080000), CONST64(0x0800000008080000), CONST64(0x0800000208080000), + CONST64(0x0800000000000800), CONST64(0x0800000200000800), CONST64(0x0800000008000800), CONST64(0x0800000208000800), + CONST64(0x0800000000080800), CONST64(0x0800000200080800), CONST64(0x0800000008080800), CONST64(0x0800000208080800), + CONST64(0x0800000000000008), CONST64(0x0800000200000008), CONST64(0x0800000008000008), CONST64(0x0800000208000008), + CONST64(0x0800000000080008), CONST64(0x0800000200080008), CONST64(0x0800000008080008), CONST64(0x0800000208080008), + CONST64(0x0800000000000808), CONST64(0x0800000200000808), CONST64(0x0800000008000808), CONST64(0x0800000208000808), + CONST64(0x0800000000080808), CONST64(0x0800000200080808), CONST64(0x0800000008080808), CONST64(0x0800000208080808), + CONST64(0x0008000000000000), CONST64(0x0008000200000000), CONST64(0x0008000008000000), CONST64(0x0008000208000000), + CONST64(0x0008000000080000), CONST64(0x0008000200080000), CONST64(0x0008000008080000), CONST64(0x0008000208080000), + CONST64(0x0008000000000800), CONST64(0x0008000200000800), CONST64(0x0008000008000800), CONST64(0x0008000208000800), + CONST64(0x0008000000080800), CONST64(0x0008000200080800), CONST64(0x0008000008080800), CONST64(0x0008000208080800), + CONST64(0x0008000000000008), CONST64(0x0008000200000008), CONST64(0x0008000008000008), CONST64(0x0008000208000008), + CONST64(0x0008000000080008), CONST64(0x0008000200080008), CONST64(0x0008000008080008), CONST64(0x0008000208080008), + CONST64(0x0008000000000808), CONST64(0x0008000200000808), CONST64(0x0008000008000808), CONST64(0x0008000208000808), + CONST64(0x0008000000080808), CONST64(0x0008000200080808), CONST64(0x0008000008080808), CONST64(0x0008000208080808), + CONST64(0x0808000000000000), CONST64(0x0808000200000000), CONST64(0x0808000008000000), CONST64(0x0808000208000000), + CONST64(0x0808000000080000), CONST64(0x0808000200080000), CONST64(0x0808000008080000), CONST64(0x0808000208080000), + CONST64(0x0808000000000800), CONST64(0x0808000200000800), CONST64(0x0808000008000800), CONST64(0x0808000208000800), + CONST64(0x0808000000080800), CONST64(0x0808000200080800), CONST64(0x0808000008080800), CONST64(0x0808000208080800), + CONST64(0x0808000000000008), CONST64(0x0808000200000008), CONST64(0x0808000008000008), CONST64(0x0808000208000008), + CONST64(0x0808000000080008), CONST64(0x0808000200080008), CONST64(0x0808000008080008), CONST64(0x0808000208080008), + CONST64(0x0808000000000808), CONST64(0x0808000200000808), CONST64(0x0808000008000808), CONST64(0x0808000208000808), + CONST64(0x0808000000080808), CONST64(0x0808000200080808), CONST64(0x0808000008080808), CONST64(0x0808000208080808), + CONST64(0x0000080000000000), CONST64(0x0000080200000000), CONST64(0x0000080008000000), CONST64(0x0000080208000000), + CONST64(0x0000080000080000), CONST64(0x0000080200080000), CONST64(0x0000080008080000), CONST64(0x0000080208080000), + CONST64(0x0000080000000800), CONST64(0x0000080200000800), CONST64(0x0000080008000800), CONST64(0x0000080208000800), + CONST64(0x0000080000080800), CONST64(0x0000080200080800), CONST64(0x0000080008080800), CONST64(0x0000080208080800), + CONST64(0x0000080000000008), CONST64(0x0000080200000008), CONST64(0x0000080008000008), CONST64(0x0000080208000008), + CONST64(0x0000080000080008), CONST64(0x0000080200080008), CONST64(0x0000080008080008), CONST64(0x0000080208080008), + CONST64(0x0000080000000808), CONST64(0x0000080200000808), CONST64(0x0000080008000808), CONST64(0x0000080208000808), + CONST64(0x0000080000080808), CONST64(0x0000080200080808), CONST64(0x0000080008080808), CONST64(0x0000080208080808), + CONST64(0x0800080000000000), CONST64(0x0800080200000000), CONST64(0x0800080008000000), CONST64(0x0800080208000000), + CONST64(0x0800080000080000), CONST64(0x0800080200080000), CONST64(0x0800080008080000), CONST64(0x0800080208080000), + CONST64(0x0800080000000800), CONST64(0x0800080200000800), CONST64(0x0800080008000800), CONST64(0x0800080208000800), + CONST64(0x0800080000080800), CONST64(0x0800080200080800), CONST64(0x0800080008080800), CONST64(0x0800080208080800), + CONST64(0x0800080000000008), CONST64(0x0800080200000008), CONST64(0x0800080008000008), CONST64(0x0800080208000008), + CONST64(0x0800080000080008), CONST64(0x0800080200080008), CONST64(0x0800080008080008), CONST64(0x0800080208080008), + CONST64(0x0800080000000808), CONST64(0x0800080200000808), CONST64(0x0800080008000808), CONST64(0x0800080208000808), + CONST64(0x0800080000080808), CONST64(0x0800080200080808), CONST64(0x0800080008080808), CONST64(0x0800080208080808), + CONST64(0x0008080000000000), CONST64(0x0008080200000000), CONST64(0x0008080008000000), CONST64(0x0008080208000000), + CONST64(0x0008080000080000), CONST64(0x0008080200080000), CONST64(0x0008080008080000), CONST64(0x0008080208080000), + CONST64(0x0008080000000800), CONST64(0x0008080200000800), CONST64(0x0008080008000800), CONST64(0x0008080208000800), + CONST64(0x0008080000080800), CONST64(0x0008080200080800), CONST64(0x0008080008080800), CONST64(0x0008080208080800), + CONST64(0x0008080000000008), CONST64(0x0008080200000008), CONST64(0x0008080008000008), CONST64(0x0008080208000008), + CONST64(0x0008080000080008), CONST64(0x0008080200080008), CONST64(0x0008080008080008), CONST64(0x0008080208080008), + CONST64(0x0008080000000808), CONST64(0x0008080200000808), CONST64(0x0008080008000808), CONST64(0x0008080208000808), + CONST64(0x0008080000080808), CONST64(0x0008080200080808), CONST64(0x0008080008080808), CONST64(0x0008080208080808), + CONST64(0x0808080000000000), CONST64(0x0808080200000000), CONST64(0x0808080008000000), CONST64(0x0808080208000000), + CONST64(0x0808080000080000), CONST64(0x0808080200080000), CONST64(0x0808080008080000), CONST64(0x0808080208080000), + CONST64(0x0808080000000800), CONST64(0x0808080200000800), CONST64(0x0808080008000800), CONST64(0x0808080208000800), + CONST64(0x0808080000080800), CONST64(0x0808080200080800), CONST64(0x0808080008080800), CONST64(0x0808080208080800), + CONST64(0x0808080000000008), CONST64(0x0808080200000008), CONST64(0x0808080008000008), CONST64(0x0808080208000008), + CONST64(0x0808080000080008), CONST64(0x0808080200080008), CONST64(0x0808080008080008), CONST64(0x0808080208080008), + CONST64(0x0808080000000808), CONST64(0x0808080200000808), CONST64(0x0808080008000808), CONST64(0x0808080208000808), + CONST64(0x0808080000080808), CONST64(0x0808080200080808), CONST64(0x0808080008080808), CONST64(0x0808080208080808) + }, +{ CONST64(0x0000000000000000), CONST64(0x0000000800000000), CONST64(0x0000000020000000), CONST64(0x0000000820000000), + CONST64(0x0000000000200000), CONST64(0x0000000800200000), CONST64(0x0000000020200000), CONST64(0x0000000820200000), + CONST64(0x0000000000002000), CONST64(0x0000000800002000), CONST64(0x0000000020002000), CONST64(0x0000000820002000), + CONST64(0x0000000000202000), CONST64(0x0000000800202000), CONST64(0x0000000020202000), CONST64(0x0000000820202000), + CONST64(0x0000000000000020), CONST64(0x0000000800000020), CONST64(0x0000000020000020), CONST64(0x0000000820000020), + CONST64(0x0000000000200020), CONST64(0x0000000800200020), CONST64(0x0000000020200020), CONST64(0x0000000820200020), + CONST64(0x0000000000002020), CONST64(0x0000000800002020), CONST64(0x0000000020002020), CONST64(0x0000000820002020), + CONST64(0x0000000000202020), CONST64(0x0000000800202020), CONST64(0x0000000020202020), CONST64(0x0000000820202020), + CONST64(0x2000000000000000), CONST64(0x2000000800000000), CONST64(0x2000000020000000), CONST64(0x2000000820000000), + CONST64(0x2000000000200000), CONST64(0x2000000800200000), CONST64(0x2000000020200000), CONST64(0x2000000820200000), + CONST64(0x2000000000002000), CONST64(0x2000000800002000), CONST64(0x2000000020002000), CONST64(0x2000000820002000), + CONST64(0x2000000000202000), CONST64(0x2000000800202000), CONST64(0x2000000020202000), CONST64(0x2000000820202000), + CONST64(0x2000000000000020), CONST64(0x2000000800000020), CONST64(0x2000000020000020), CONST64(0x2000000820000020), + CONST64(0x2000000000200020), CONST64(0x2000000800200020), CONST64(0x2000000020200020), CONST64(0x2000000820200020), + CONST64(0x2000000000002020), CONST64(0x2000000800002020), CONST64(0x2000000020002020), CONST64(0x2000000820002020), + CONST64(0x2000000000202020), CONST64(0x2000000800202020), CONST64(0x2000000020202020), CONST64(0x2000000820202020), + CONST64(0x0020000000000000), CONST64(0x0020000800000000), CONST64(0x0020000020000000), CONST64(0x0020000820000000), + CONST64(0x0020000000200000), CONST64(0x0020000800200000), CONST64(0x0020000020200000), CONST64(0x0020000820200000), + CONST64(0x0020000000002000), CONST64(0x0020000800002000), CONST64(0x0020000020002000), CONST64(0x0020000820002000), + CONST64(0x0020000000202000), CONST64(0x0020000800202000), CONST64(0x0020000020202000), CONST64(0x0020000820202000), + CONST64(0x0020000000000020), CONST64(0x0020000800000020), CONST64(0x0020000020000020), CONST64(0x0020000820000020), + CONST64(0x0020000000200020), CONST64(0x0020000800200020), CONST64(0x0020000020200020), CONST64(0x0020000820200020), + CONST64(0x0020000000002020), CONST64(0x0020000800002020), CONST64(0x0020000020002020), CONST64(0x0020000820002020), + CONST64(0x0020000000202020), CONST64(0x0020000800202020), CONST64(0x0020000020202020), CONST64(0x0020000820202020), + CONST64(0x2020000000000000), CONST64(0x2020000800000000), CONST64(0x2020000020000000), CONST64(0x2020000820000000), + CONST64(0x2020000000200000), CONST64(0x2020000800200000), CONST64(0x2020000020200000), CONST64(0x2020000820200000), + CONST64(0x2020000000002000), CONST64(0x2020000800002000), CONST64(0x2020000020002000), CONST64(0x2020000820002000), + CONST64(0x2020000000202000), CONST64(0x2020000800202000), CONST64(0x2020000020202000), CONST64(0x2020000820202000), + CONST64(0x2020000000000020), CONST64(0x2020000800000020), CONST64(0x2020000020000020), CONST64(0x2020000820000020), + CONST64(0x2020000000200020), CONST64(0x2020000800200020), CONST64(0x2020000020200020), CONST64(0x2020000820200020), + CONST64(0x2020000000002020), CONST64(0x2020000800002020), CONST64(0x2020000020002020), CONST64(0x2020000820002020), + CONST64(0x2020000000202020), CONST64(0x2020000800202020), CONST64(0x2020000020202020), CONST64(0x2020000820202020), + CONST64(0x0000200000000000), CONST64(0x0000200800000000), CONST64(0x0000200020000000), CONST64(0x0000200820000000), + CONST64(0x0000200000200000), CONST64(0x0000200800200000), CONST64(0x0000200020200000), CONST64(0x0000200820200000), + CONST64(0x0000200000002000), CONST64(0x0000200800002000), CONST64(0x0000200020002000), CONST64(0x0000200820002000), + CONST64(0x0000200000202000), CONST64(0x0000200800202000), CONST64(0x0000200020202000), CONST64(0x0000200820202000), + CONST64(0x0000200000000020), CONST64(0x0000200800000020), CONST64(0x0000200020000020), CONST64(0x0000200820000020), + CONST64(0x0000200000200020), CONST64(0x0000200800200020), CONST64(0x0000200020200020), CONST64(0x0000200820200020), + CONST64(0x0000200000002020), CONST64(0x0000200800002020), CONST64(0x0000200020002020), CONST64(0x0000200820002020), + CONST64(0x0000200000202020), CONST64(0x0000200800202020), CONST64(0x0000200020202020), CONST64(0x0000200820202020), + CONST64(0x2000200000000000), CONST64(0x2000200800000000), CONST64(0x2000200020000000), CONST64(0x2000200820000000), + CONST64(0x2000200000200000), CONST64(0x2000200800200000), CONST64(0x2000200020200000), CONST64(0x2000200820200000), + CONST64(0x2000200000002000), CONST64(0x2000200800002000), CONST64(0x2000200020002000), CONST64(0x2000200820002000), + CONST64(0x2000200000202000), CONST64(0x2000200800202000), CONST64(0x2000200020202000), CONST64(0x2000200820202000), + CONST64(0x2000200000000020), CONST64(0x2000200800000020), CONST64(0x2000200020000020), CONST64(0x2000200820000020), + CONST64(0x2000200000200020), CONST64(0x2000200800200020), CONST64(0x2000200020200020), CONST64(0x2000200820200020), + CONST64(0x2000200000002020), CONST64(0x2000200800002020), CONST64(0x2000200020002020), CONST64(0x2000200820002020), + CONST64(0x2000200000202020), CONST64(0x2000200800202020), CONST64(0x2000200020202020), CONST64(0x2000200820202020), + CONST64(0x0020200000000000), CONST64(0x0020200800000000), CONST64(0x0020200020000000), CONST64(0x0020200820000000), + CONST64(0x0020200000200000), CONST64(0x0020200800200000), CONST64(0x0020200020200000), CONST64(0x0020200820200000), + CONST64(0x0020200000002000), CONST64(0x0020200800002000), CONST64(0x0020200020002000), CONST64(0x0020200820002000), + CONST64(0x0020200000202000), CONST64(0x0020200800202000), CONST64(0x0020200020202000), CONST64(0x0020200820202000), + CONST64(0x0020200000000020), CONST64(0x0020200800000020), CONST64(0x0020200020000020), CONST64(0x0020200820000020), + CONST64(0x0020200000200020), CONST64(0x0020200800200020), CONST64(0x0020200020200020), CONST64(0x0020200820200020), + CONST64(0x0020200000002020), CONST64(0x0020200800002020), CONST64(0x0020200020002020), CONST64(0x0020200820002020), + CONST64(0x0020200000202020), CONST64(0x0020200800202020), CONST64(0x0020200020202020), CONST64(0x0020200820202020), + CONST64(0x2020200000000000), CONST64(0x2020200800000000), CONST64(0x2020200020000000), CONST64(0x2020200820000000), + CONST64(0x2020200000200000), CONST64(0x2020200800200000), CONST64(0x2020200020200000), CONST64(0x2020200820200000), + CONST64(0x2020200000002000), CONST64(0x2020200800002000), CONST64(0x2020200020002000), CONST64(0x2020200820002000), + CONST64(0x2020200000202000), CONST64(0x2020200800202000), CONST64(0x2020200020202000), CONST64(0x2020200820202000), + CONST64(0x2020200000000020), CONST64(0x2020200800000020), CONST64(0x2020200020000020), CONST64(0x2020200820000020), + CONST64(0x2020200000200020), CONST64(0x2020200800200020), CONST64(0x2020200020200020), CONST64(0x2020200820200020), + CONST64(0x2020200000002020), CONST64(0x2020200800002020), CONST64(0x2020200020002020), CONST64(0x2020200820002020), + CONST64(0x2020200000202020), CONST64(0x2020200800202020), CONST64(0x2020200020202020), CONST64(0x2020200820202020) + }, +{ CONST64(0x0000000000000000), CONST64(0x0000002000000000), CONST64(0x0000000080000000), CONST64(0x0000002080000000), + CONST64(0x0000000000800000), CONST64(0x0000002000800000), CONST64(0x0000000080800000), CONST64(0x0000002080800000), + CONST64(0x0000000000008000), CONST64(0x0000002000008000), CONST64(0x0000000080008000), CONST64(0x0000002080008000), + CONST64(0x0000000000808000), CONST64(0x0000002000808000), CONST64(0x0000000080808000), CONST64(0x0000002080808000), + CONST64(0x0000000000000080), CONST64(0x0000002000000080), CONST64(0x0000000080000080), CONST64(0x0000002080000080), + CONST64(0x0000000000800080), CONST64(0x0000002000800080), CONST64(0x0000000080800080), CONST64(0x0000002080800080), + CONST64(0x0000000000008080), CONST64(0x0000002000008080), CONST64(0x0000000080008080), CONST64(0x0000002080008080), + CONST64(0x0000000000808080), CONST64(0x0000002000808080), CONST64(0x0000000080808080), CONST64(0x0000002080808080), + CONST64(0x8000000000000000), CONST64(0x8000002000000000), CONST64(0x8000000080000000), CONST64(0x8000002080000000), + CONST64(0x8000000000800000), CONST64(0x8000002000800000), CONST64(0x8000000080800000), CONST64(0x8000002080800000), + CONST64(0x8000000000008000), CONST64(0x8000002000008000), CONST64(0x8000000080008000), CONST64(0x8000002080008000), + CONST64(0x8000000000808000), CONST64(0x8000002000808000), CONST64(0x8000000080808000), CONST64(0x8000002080808000), + CONST64(0x8000000000000080), CONST64(0x8000002000000080), CONST64(0x8000000080000080), CONST64(0x8000002080000080), + CONST64(0x8000000000800080), CONST64(0x8000002000800080), CONST64(0x8000000080800080), CONST64(0x8000002080800080), + CONST64(0x8000000000008080), CONST64(0x8000002000008080), CONST64(0x8000000080008080), CONST64(0x8000002080008080), + CONST64(0x8000000000808080), CONST64(0x8000002000808080), CONST64(0x8000000080808080), CONST64(0x8000002080808080), + CONST64(0x0080000000000000), CONST64(0x0080002000000000), CONST64(0x0080000080000000), CONST64(0x0080002080000000), + CONST64(0x0080000000800000), CONST64(0x0080002000800000), CONST64(0x0080000080800000), CONST64(0x0080002080800000), + CONST64(0x0080000000008000), CONST64(0x0080002000008000), CONST64(0x0080000080008000), CONST64(0x0080002080008000), + CONST64(0x0080000000808000), CONST64(0x0080002000808000), CONST64(0x0080000080808000), CONST64(0x0080002080808000), + CONST64(0x0080000000000080), CONST64(0x0080002000000080), CONST64(0x0080000080000080), CONST64(0x0080002080000080), + CONST64(0x0080000000800080), CONST64(0x0080002000800080), CONST64(0x0080000080800080), CONST64(0x0080002080800080), + CONST64(0x0080000000008080), CONST64(0x0080002000008080), CONST64(0x0080000080008080), CONST64(0x0080002080008080), + CONST64(0x0080000000808080), CONST64(0x0080002000808080), CONST64(0x0080000080808080), CONST64(0x0080002080808080), + CONST64(0x8080000000000000), CONST64(0x8080002000000000), CONST64(0x8080000080000000), CONST64(0x8080002080000000), + CONST64(0x8080000000800000), CONST64(0x8080002000800000), CONST64(0x8080000080800000), CONST64(0x8080002080800000), + CONST64(0x8080000000008000), CONST64(0x8080002000008000), CONST64(0x8080000080008000), CONST64(0x8080002080008000), + CONST64(0x8080000000808000), CONST64(0x8080002000808000), CONST64(0x8080000080808000), CONST64(0x8080002080808000), + CONST64(0x8080000000000080), CONST64(0x8080002000000080), CONST64(0x8080000080000080), CONST64(0x8080002080000080), + CONST64(0x8080000000800080), CONST64(0x8080002000800080), CONST64(0x8080000080800080), CONST64(0x8080002080800080), + CONST64(0x8080000000008080), CONST64(0x8080002000008080), CONST64(0x8080000080008080), CONST64(0x8080002080008080), + CONST64(0x8080000000808080), CONST64(0x8080002000808080), CONST64(0x8080000080808080), CONST64(0x8080002080808080), + CONST64(0x0000800000000000), CONST64(0x0000802000000000), CONST64(0x0000800080000000), CONST64(0x0000802080000000), + CONST64(0x0000800000800000), CONST64(0x0000802000800000), CONST64(0x0000800080800000), CONST64(0x0000802080800000), + CONST64(0x0000800000008000), CONST64(0x0000802000008000), CONST64(0x0000800080008000), CONST64(0x0000802080008000), + CONST64(0x0000800000808000), CONST64(0x0000802000808000), CONST64(0x0000800080808000), CONST64(0x0000802080808000), + CONST64(0x0000800000000080), CONST64(0x0000802000000080), CONST64(0x0000800080000080), CONST64(0x0000802080000080), + CONST64(0x0000800000800080), CONST64(0x0000802000800080), CONST64(0x0000800080800080), CONST64(0x0000802080800080), + CONST64(0x0000800000008080), CONST64(0x0000802000008080), CONST64(0x0000800080008080), CONST64(0x0000802080008080), + CONST64(0x0000800000808080), CONST64(0x0000802000808080), CONST64(0x0000800080808080), CONST64(0x0000802080808080), + CONST64(0x8000800000000000), CONST64(0x8000802000000000), CONST64(0x8000800080000000), CONST64(0x8000802080000000), + CONST64(0x8000800000800000), CONST64(0x8000802000800000), CONST64(0x8000800080800000), CONST64(0x8000802080800000), + CONST64(0x8000800000008000), CONST64(0x8000802000008000), CONST64(0x8000800080008000), CONST64(0x8000802080008000), + CONST64(0x8000800000808000), CONST64(0x8000802000808000), CONST64(0x8000800080808000), CONST64(0x8000802080808000), + CONST64(0x8000800000000080), CONST64(0x8000802000000080), CONST64(0x8000800080000080), CONST64(0x8000802080000080), + CONST64(0x8000800000800080), CONST64(0x8000802000800080), CONST64(0x8000800080800080), CONST64(0x8000802080800080), + CONST64(0x8000800000008080), CONST64(0x8000802000008080), CONST64(0x8000800080008080), CONST64(0x8000802080008080), + CONST64(0x8000800000808080), CONST64(0x8000802000808080), CONST64(0x8000800080808080), CONST64(0x8000802080808080), + CONST64(0x0080800000000000), CONST64(0x0080802000000000), CONST64(0x0080800080000000), CONST64(0x0080802080000000), + CONST64(0x0080800000800000), CONST64(0x0080802000800000), CONST64(0x0080800080800000), CONST64(0x0080802080800000), + CONST64(0x0080800000008000), CONST64(0x0080802000008000), CONST64(0x0080800080008000), CONST64(0x0080802080008000), + CONST64(0x0080800000808000), CONST64(0x0080802000808000), CONST64(0x0080800080808000), CONST64(0x0080802080808000), + CONST64(0x0080800000000080), CONST64(0x0080802000000080), CONST64(0x0080800080000080), CONST64(0x0080802080000080), + CONST64(0x0080800000800080), CONST64(0x0080802000800080), CONST64(0x0080800080800080), CONST64(0x0080802080800080), + CONST64(0x0080800000008080), CONST64(0x0080802000008080), CONST64(0x0080800080008080), CONST64(0x0080802080008080), + CONST64(0x0080800000808080), CONST64(0x0080802000808080), CONST64(0x0080800080808080), CONST64(0x0080802080808080), + CONST64(0x8080800000000000), CONST64(0x8080802000000000), CONST64(0x8080800080000000), CONST64(0x8080802080000000), + CONST64(0x8080800000800000), CONST64(0x8080802000800000), CONST64(0x8080800080800000), CONST64(0x8080802080800000), + CONST64(0x8080800000008000), CONST64(0x8080802000008000), CONST64(0x8080800080008000), CONST64(0x8080802080008000), + CONST64(0x8080800000808000), CONST64(0x8080802000808000), CONST64(0x8080800080808000), CONST64(0x8080802080808000), + CONST64(0x8080800000000080), CONST64(0x8080802000000080), CONST64(0x8080800080000080), CONST64(0x8080802080000080), + CONST64(0x8080800000800080), CONST64(0x8080802000800080), CONST64(0x8080800080800080), CONST64(0x8080802080800080), + CONST64(0x8080800000008080), CONST64(0x8080802000008080), CONST64(0x8080800080008080), CONST64(0x8080802080008080), + CONST64(0x8080800000808080), CONST64(0x8080802000808080), CONST64(0x8080800080808080), CONST64(0x8080802080808080) + }, +{ CONST64(0x0000000000000000), CONST64(0x0000004000000000), CONST64(0x0000000001000000), CONST64(0x0000004001000000), + CONST64(0x0000000000010000), CONST64(0x0000004000010000), CONST64(0x0000000001010000), CONST64(0x0000004001010000), + CONST64(0x0000000000000100), CONST64(0x0000004000000100), CONST64(0x0000000001000100), CONST64(0x0000004001000100), + CONST64(0x0000000000010100), CONST64(0x0000004000010100), CONST64(0x0000000001010100), CONST64(0x0000004001010100), + CONST64(0x0000000000000001), CONST64(0x0000004000000001), CONST64(0x0000000001000001), CONST64(0x0000004001000001), + CONST64(0x0000000000010001), CONST64(0x0000004000010001), CONST64(0x0000000001010001), CONST64(0x0000004001010001), + CONST64(0x0000000000000101), CONST64(0x0000004000000101), CONST64(0x0000000001000101), CONST64(0x0000004001000101), + CONST64(0x0000000000010101), CONST64(0x0000004000010101), CONST64(0x0000000001010101), CONST64(0x0000004001010101), + CONST64(0x0100000000000000), CONST64(0x0100004000000000), CONST64(0x0100000001000000), CONST64(0x0100004001000000), + CONST64(0x0100000000010000), CONST64(0x0100004000010000), CONST64(0x0100000001010000), CONST64(0x0100004001010000), + CONST64(0x0100000000000100), CONST64(0x0100004000000100), CONST64(0x0100000001000100), CONST64(0x0100004001000100), + CONST64(0x0100000000010100), CONST64(0x0100004000010100), CONST64(0x0100000001010100), CONST64(0x0100004001010100), + CONST64(0x0100000000000001), CONST64(0x0100004000000001), CONST64(0x0100000001000001), CONST64(0x0100004001000001), + CONST64(0x0100000000010001), CONST64(0x0100004000010001), CONST64(0x0100000001010001), CONST64(0x0100004001010001), + CONST64(0x0100000000000101), CONST64(0x0100004000000101), CONST64(0x0100000001000101), CONST64(0x0100004001000101), + CONST64(0x0100000000010101), CONST64(0x0100004000010101), CONST64(0x0100000001010101), CONST64(0x0100004001010101), + CONST64(0x0001000000000000), CONST64(0x0001004000000000), CONST64(0x0001000001000000), CONST64(0x0001004001000000), + CONST64(0x0001000000010000), CONST64(0x0001004000010000), CONST64(0x0001000001010000), CONST64(0x0001004001010000), + CONST64(0x0001000000000100), CONST64(0x0001004000000100), CONST64(0x0001000001000100), CONST64(0x0001004001000100), + CONST64(0x0001000000010100), CONST64(0x0001004000010100), CONST64(0x0001000001010100), CONST64(0x0001004001010100), + CONST64(0x0001000000000001), CONST64(0x0001004000000001), CONST64(0x0001000001000001), CONST64(0x0001004001000001), + CONST64(0x0001000000010001), CONST64(0x0001004000010001), CONST64(0x0001000001010001), CONST64(0x0001004001010001), + CONST64(0x0001000000000101), CONST64(0x0001004000000101), CONST64(0x0001000001000101), CONST64(0x0001004001000101), + CONST64(0x0001000000010101), CONST64(0x0001004000010101), CONST64(0x0001000001010101), CONST64(0x0001004001010101), + CONST64(0x0101000000000000), CONST64(0x0101004000000000), CONST64(0x0101000001000000), CONST64(0x0101004001000000), + CONST64(0x0101000000010000), CONST64(0x0101004000010000), CONST64(0x0101000001010000), CONST64(0x0101004001010000), + CONST64(0x0101000000000100), CONST64(0x0101004000000100), CONST64(0x0101000001000100), CONST64(0x0101004001000100), + CONST64(0x0101000000010100), CONST64(0x0101004000010100), CONST64(0x0101000001010100), CONST64(0x0101004001010100), + CONST64(0x0101000000000001), CONST64(0x0101004000000001), CONST64(0x0101000001000001), CONST64(0x0101004001000001), + CONST64(0x0101000000010001), CONST64(0x0101004000010001), CONST64(0x0101000001010001), CONST64(0x0101004001010001), + CONST64(0x0101000000000101), CONST64(0x0101004000000101), CONST64(0x0101000001000101), CONST64(0x0101004001000101), + CONST64(0x0101000000010101), CONST64(0x0101004000010101), CONST64(0x0101000001010101), CONST64(0x0101004001010101), + CONST64(0x0000010000000000), CONST64(0x0000014000000000), CONST64(0x0000010001000000), CONST64(0x0000014001000000), + CONST64(0x0000010000010000), CONST64(0x0000014000010000), CONST64(0x0000010001010000), CONST64(0x0000014001010000), + CONST64(0x0000010000000100), CONST64(0x0000014000000100), CONST64(0x0000010001000100), CONST64(0x0000014001000100), + CONST64(0x0000010000010100), CONST64(0x0000014000010100), CONST64(0x0000010001010100), CONST64(0x0000014001010100), + CONST64(0x0000010000000001), CONST64(0x0000014000000001), CONST64(0x0000010001000001), CONST64(0x0000014001000001), + CONST64(0x0000010000010001), CONST64(0x0000014000010001), CONST64(0x0000010001010001), CONST64(0x0000014001010001), + CONST64(0x0000010000000101), CONST64(0x0000014000000101), CONST64(0x0000010001000101), CONST64(0x0000014001000101), + CONST64(0x0000010000010101), CONST64(0x0000014000010101), CONST64(0x0000010001010101), CONST64(0x0000014001010101), + CONST64(0x0100010000000000), CONST64(0x0100014000000000), CONST64(0x0100010001000000), CONST64(0x0100014001000000), + CONST64(0x0100010000010000), CONST64(0x0100014000010000), CONST64(0x0100010001010000), CONST64(0x0100014001010000), + CONST64(0x0100010000000100), CONST64(0x0100014000000100), CONST64(0x0100010001000100), CONST64(0x0100014001000100), + CONST64(0x0100010000010100), CONST64(0x0100014000010100), CONST64(0x0100010001010100), CONST64(0x0100014001010100), + CONST64(0x0100010000000001), CONST64(0x0100014000000001), CONST64(0x0100010001000001), CONST64(0x0100014001000001), + CONST64(0x0100010000010001), CONST64(0x0100014000010001), CONST64(0x0100010001010001), CONST64(0x0100014001010001), + CONST64(0x0100010000000101), CONST64(0x0100014000000101), CONST64(0x0100010001000101), CONST64(0x0100014001000101), + CONST64(0x0100010000010101), CONST64(0x0100014000010101), CONST64(0x0100010001010101), CONST64(0x0100014001010101), + CONST64(0x0001010000000000), CONST64(0x0001014000000000), CONST64(0x0001010001000000), CONST64(0x0001014001000000), + CONST64(0x0001010000010000), CONST64(0x0001014000010000), CONST64(0x0001010001010000), CONST64(0x0001014001010000), + CONST64(0x0001010000000100), CONST64(0x0001014000000100), CONST64(0x0001010001000100), CONST64(0x0001014001000100), + CONST64(0x0001010000010100), CONST64(0x0001014000010100), CONST64(0x0001010001010100), CONST64(0x0001014001010100), + CONST64(0x0001010000000001), CONST64(0x0001014000000001), CONST64(0x0001010001000001), CONST64(0x0001014001000001), + CONST64(0x0001010000010001), CONST64(0x0001014000010001), CONST64(0x0001010001010001), CONST64(0x0001014001010001), + CONST64(0x0001010000000101), CONST64(0x0001014000000101), CONST64(0x0001010001000101), CONST64(0x0001014001000101), + CONST64(0x0001010000010101), CONST64(0x0001014000010101), CONST64(0x0001010001010101), CONST64(0x0001014001010101), + CONST64(0x0101010000000000), CONST64(0x0101014000000000), CONST64(0x0101010001000000), CONST64(0x0101014001000000), + CONST64(0x0101010000010000), CONST64(0x0101014000010000), CONST64(0x0101010001010000), CONST64(0x0101014001010000), + CONST64(0x0101010000000100), CONST64(0x0101014000000100), CONST64(0x0101010001000100), CONST64(0x0101014001000100), + CONST64(0x0101010000010100), CONST64(0x0101014000010100), CONST64(0x0101010001010100), CONST64(0x0101014001010100), + CONST64(0x0101010000000001), CONST64(0x0101014000000001), CONST64(0x0101010001000001), CONST64(0x0101014001000001), + CONST64(0x0101010000010001), CONST64(0x0101014000010001), CONST64(0x0101010001010001), CONST64(0x0101014001010001), + CONST64(0x0101010000000101), CONST64(0x0101014000000101), CONST64(0x0101010001000101), CONST64(0x0101014001000101), + CONST64(0x0101010000010101), CONST64(0x0101014000010101), CONST64(0x0101010001010101), CONST64(0x0101014001010101) + }, +{ CONST64(0x0000000000000000), CONST64(0x0000000100000000), CONST64(0x0000000004000000), CONST64(0x0000000104000000), + CONST64(0x0000000000040000), CONST64(0x0000000100040000), CONST64(0x0000000004040000), CONST64(0x0000000104040000), + CONST64(0x0000000000000400), CONST64(0x0000000100000400), CONST64(0x0000000004000400), CONST64(0x0000000104000400), + CONST64(0x0000000000040400), CONST64(0x0000000100040400), CONST64(0x0000000004040400), CONST64(0x0000000104040400), + CONST64(0x0000000000000004), CONST64(0x0000000100000004), CONST64(0x0000000004000004), CONST64(0x0000000104000004), + CONST64(0x0000000000040004), CONST64(0x0000000100040004), CONST64(0x0000000004040004), CONST64(0x0000000104040004), + CONST64(0x0000000000000404), CONST64(0x0000000100000404), CONST64(0x0000000004000404), CONST64(0x0000000104000404), + CONST64(0x0000000000040404), CONST64(0x0000000100040404), CONST64(0x0000000004040404), CONST64(0x0000000104040404), + CONST64(0x0400000000000000), CONST64(0x0400000100000000), CONST64(0x0400000004000000), CONST64(0x0400000104000000), + CONST64(0x0400000000040000), CONST64(0x0400000100040000), CONST64(0x0400000004040000), CONST64(0x0400000104040000), + CONST64(0x0400000000000400), CONST64(0x0400000100000400), CONST64(0x0400000004000400), CONST64(0x0400000104000400), + CONST64(0x0400000000040400), CONST64(0x0400000100040400), CONST64(0x0400000004040400), CONST64(0x0400000104040400), + CONST64(0x0400000000000004), CONST64(0x0400000100000004), CONST64(0x0400000004000004), CONST64(0x0400000104000004), + CONST64(0x0400000000040004), CONST64(0x0400000100040004), CONST64(0x0400000004040004), CONST64(0x0400000104040004), + CONST64(0x0400000000000404), CONST64(0x0400000100000404), CONST64(0x0400000004000404), CONST64(0x0400000104000404), + CONST64(0x0400000000040404), CONST64(0x0400000100040404), CONST64(0x0400000004040404), CONST64(0x0400000104040404), + CONST64(0x0004000000000000), CONST64(0x0004000100000000), CONST64(0x0004000004000000), CONST64(0x0004000104000000), + CONST64(0x0004000000040000), CONST64(0x0004000100040000), CONST64(0x0004000004040000), CONST64(0x0004000104040000), + CONST64(0x0004000000000400), CONST64(0x0004000100000400), CONST64(0x0004000004000400), CONST64(0x0004000104000400), + CONST64(0x0004000000040400), CONST64(0x0004000100040400), CONST64(0x0004000004040400), CONST64(0x0004000104040400), + CONST64(0x0004000000000004), CONST64(0x0004000100000004), CONST64(0x0004000004000004), CONST64(0x0004000104000004), + CONST64(0x0004000000040004), CONST64(0x0004000100040004), CONST64(0x0004000004040004), CONST64(0x0004000104040004), + CONST64(0x0004000000000404), CONST64(0x0004000100000404), CONST64(0x0004000004000404), CONST64(0x0004000104000404), + CONST64(0x0004000000040404), CONST64(0x0004000100040404), CONST64(0x0004000004040404), CONST64(0x0004000104040404), + CONST64(0x0404000000000000), CONST64(0x0404000100000000), CONST64(0x0404000004000000), CONST64(0x0404000104000000), + CONST64(0x0404000000040000), CONST64(0x0404000100040000), CONST64(0x0404000004040000), CONST64(0x0404000104040000), + CONST64(0x0404000000000400), CONST64(0x0404000100000400), CONST64(0x0404000004000400), CONST64(0x0404000104000400), + CONST64(0x0404000000040400), CONST64(0x0404000100040400), CONST64(0x0404000004040400), CONST64(0x0404000104040400), + CONST64(0x0404000000000004), CONST64(0x0404000100000004), CONST64(0x0404000004000004), CONST64(0x0404000104000004), + CONST64(0x0404000000040004), CONST64(0x0404000100040004), CONST64(0x0404000004040004), CONST64(0x0404000104040004), + CONST64(0x0404000000000404), CONST64(0x0404000100000404), CONST64(0x0404000004000404), CONST64(0x0404000104000404), + CONST64(0x0404000000040404), CONST64(0x0404000100040404), CONST64(0x0404000004040404), CONST64(0x0404000104040404), + CONST64(0x0000040000000000), CONST64(0x0000040100000000), CONST64(0x0000040004000000), CONST64(0x0000040104000000), + CONST64(0x0000040000040000), CONST64(0x0000040100040000), CONST64(0x0000040004040000), CONST64(0x0000040104040000), + CONST64(0x0000040000000400), CONST64(0x0000040100000400), CONST64(0x0000040004000400), CONST64(0x0000040104000400), + CONST64(0x0000040000040400), CONST64(0x0000040100040400), CONST64(0x0000040004040400), CONST64(0x0000040104040400), + CONST64(0x0000040000000004), CONST64(0x0000040100000004), CONST64(0x0000040004000004), CONST64(0x0000040104000004), + CONST64(0x0000040000040004), CONST64(0x0000040100040004), CONST64(0x0000040004040004), CONST64(0x0000040104040004), + CONST64(0x0000040000000404), CONST64(0x0000040100000404), CONST64(0x0000040004000404), CONST64(0x0000040104000404), + CONST64(0x0000040000040404), CONST64(0x0000040100040404), CONST64(0x0000040004040404), CONST64(0x0000040104040404), + CONST64(0x0400040000000000), CONST64(0x0400040100000000), CONST64(0x0400040004000000), CONST64(0x0400040104000000), + CONST64(0x0400040000040000), CONST64(0x0400040100040000), CONST64(0x0400040004040000), CONST64(0x0400040104040000), + CONST64(0x0400040000000400), CONST64(0x0400040100000400), CONST64(0x0400040004000400), CONST64(0x0400040104000400), + CONST64(0x0400040000040400), CONST64(0x0400040100040400), CONST64(0x0400040004040400), CONST64(0x0400040104040400), + CONST64(0x0400040000000004), CONST64(0x0400040100000004), CONST64(0x0400040004000004), CONST64(0x0400040104000004), + CONST64(0x0400040000040004), CONST64(0x0400040100040004), CONST64(0x0400040004040004), CONST64(0x0400040104040004), + CONST64(0x0400040000000404), CONST64(0x0400040100000404), CONST64(0x0400040004000404), CONST64(0x0400040104000404), + CONST64(0x0400040000040404), CONST64(0x0400040100040404), CONST64(0x0400040004040404), CONST64(0x0400040104040404), + CONST64(0x0004040000000000), CONST64(0x0004040100000000), CONST64(0x0004040004000000), CONST64(0x0004040104000000), + CONST64(0x0004040000040000), CONST64(0x0004040100040000), CONST64(0x0004040004040000), CONST64(0x0004040104040000), + CONST64(0x0004040000000400), CONST64(0x0004040100000400), CONST64(0x0004040004000400), CONST64(0x0004040104000400), + CONST64(0x0004040000040400), CONST64(0x0004040100040400), CONST64(0x0004040004040400), CONST64(0x0004040104040400), + CONST64(0x0004040000000004), CONST64(0x0004040100000004), CONST64(0x0004040004000004), CONST64(0x0004040104000004), + CONST64(0x0004040000040004), CONST64(0x0004040100040004), CONST64(0x0004040004040004), CONST64(0x0004040104040004), + CONST64(0x0004040000000404), CONST64(0x0004040100000404), CONST64(0x0004040004000404), CONST64(0x0004040104000404), + CONST64(0x0004040000040404), CONST64(0x0004040100040404), CONST64(0x0004040004040404), CONST64(0x0004040104040404), + CONST64(0x0404040000000000), CONST64(0x0404040100000000), CONST64(0x0404040004000000), CONST64(0x0404040104000000), + CONST64(0x0404040000040000), CONST64(0x0404040100040000), CONST64(0x0404040004040000), CONST64(0x0404040104040000), + CONST64(0x0404040000000400), CONST64(0x0404040100000400), CONST64(0x0404040004000400), CONST64(0x0404040104000400), + CONST64(0x0404040000040400), CONST64(0x0404040100040400), CONST64(0x0404040004040400), CONST64(0x0404040104040400), + CONST64(0x0404040000000004), CONST64(0x0404040100000004), CONST64(0x0404040004000004), CONST64(0x0404040104000004), + CONST64(0x0404040000040004), CONST64(0x0404040100040004), CONST64(0x0404040004040004), CONST64(0x0404040104040004), + CONST64(0x0404040000000404), CONST64(0x0404040100000404), CONST64(0x0404040004000404), CONST64(0x0404040104000404), + CONST64(0x0404040000040404), CONST64(0x0404040100040404), CONST64(0x0404040004040404), CONST64(0x0404040104040404) + }, +{ CONST64(0x0000000000000000), CONST64(0x0000000400000000), CONST64(0x0000000010000000), CONST64(0x0000000410000000), + CONST64(0x0000000000100000), CONST64(0x0000000400100000), CONST64(0x0000000010100000), CONST64(0x0000000410100000), + CONST64(0x0000000000001000), CONST64(0x0000000400001000), CONST64(0x0000000010001000), CONST64(0x0000000410001000), + CONST64(0x0000000000101000), CONST64(0x0000000400101000), CONST64(0x0000000010101000), CONST64(0x0000000410101000), + CONST64(0x0000000000000010), CONST64(0x0000000400000010), CONST64(0x0000000010000010), CONST64(0x0000000410000010), + CONST64(0x0000000000100010), CONST64(0x0000000400100010), CONST64(0x0000000010100010), CONST64(0x0000000410100010), + CONST64(0x0000000000001010), CONST64(0x0000000400001010), CONST64(0x0000000010001010), CONST64(0x0000000410001010), + CONST64(0x0000000000101010), CONST64(0x0000000400101010), CONST64(0x0000000010101010), CONST64(0x0000000410101010), + CONST64(0x1000000000000000), CONST64(0x1000000400000000), CONST64(0x1000000010000000), CONST64(0x1000000410000000), + CONST64(0x1000000000100000), CONST64(0x1000000400100000), CONST64(0x1000000010100000), CONST64(0x1000000410100000), + CONST64(0x1000000000001000), CONST64(0x1000000400001000), CONST64(0x1000000010001000), CONST64(0x1000000410001000), + CONST64(0x1000000000101000), CONST64(0x1000000400101000), CONST64(0x1000000010101000), CONST64(0x1000000410101000), + CONST64(0x1000000000000010), CONST64(0x1000000400000010), CONST64(0x1000000010000010), CONST64(0x1000000410000010), + CONST64(0x1000000000100010), CONST64(0x1000000400100010), CONST64(0x1000000010100010), CONST64(0x1000000410100010), + CONST64(0x1000000000001010), CONST64(0x1000000400001010), CONST64(0x1000000010001010), CONST64(0x1000000410001010), + CONST64(0x1000000000101010), CONST64(0x1000000400101010), CONST64(0x1000000010101010), CONST64(0x1000000410101010), + CONST64(0x0010000000000000), CONST64(0x0010000400000000), CONST64(0x0010000010000000), CONST64(0x0010000410000000), + CONST64(0x0010000000100000), CONST64(0x0010000400100000), CONST64(0x0010000010100000), CONST64(0x0010000410100000), + CONST64(0x0010000000001000), CONST64(0x0010000400001000), CONST64(0x0010000010001000), CONST64(0x0010000410001000), + CONST64(0x0010000000101000), CONST64(0x0010000400101000), CONST64(0x0010000010101000), CONST64(0x0010000410101000), + CONST64(0x0010000000000010), CONST64(0x0010000400000010), CONST64(0x0010000010000010), CONST64(0x0010000410000010), + CONST64(0x0010000000100010), CONST64(0x0010000400100010), CONST64(0x0010000010100010), CONST64(0x0010000410100010), + CONST64(0x0010000000001010), CONST64(0x0010000400001010), CONST64(0x0010000010001010), CONST64(0x0010000410001010), + CONST64(0x0010000000101010), CONST64(0x0010000400101010), CONST64(0x0010000010101010), CONST64(0x0010000410101010), + CONST64(0x1010000000000000), CONST64(0x1010000400000000), CONST64(0x1010000010000000), CONST64(0x1010000410000000), + CONST64(0x1010000000100000), CONST64(0x1010000400100000), CONST64(0x1010000010100000), CONST64(0x1010000410100000), + CONST64(0x1010000000001000), CONST64(0x1010000400001000), CONST64(0x1010000010001000), CONST64(0x1010000410001000), + CONST64(0x1010000000101000), CONST64(0x1010000400101000), CONST64(0x1010000010101000), CONST64(0x1010000410101000), + CONST64(0x1010000000000010), CONST64(0x1010000400000010), CONST64(0x1010000010000010), CONST64(0x1010000410000010), + CONST64(0x1010000000100010), CONST64(0x1010000400100010), CONST64(0x1010000010100010), CONST64(0x1010000410100010), + CONST64(0x1010000000001010), CONST64(0x1010000400001010), CONST64(0x1010000010001010), CONST64(0x1010000410001010), + CONST64(0x1010000000101010), CONST64(0x1010000400101010), CONST64(0x1010000010101010), CONST64(0x1010000410101010), + CONST64(0x0000100000000000), CONST64(0x0000100400000000), CONST64(0x0000100010000000), CONST64(0x0000100410000000), + CONST64(0x0000100000100000), CONST64(0x0000100400100000), CONST64(0x0000100010100000), CONST64(0x0000100410100000), + CONST64(0x0000100000001000), CONST64(0x0000100400001000), CONST64(0x0000100010001000), CONST64(0x0000100410001000), + CONST64(0x0000100000101000), CONST64(0x0000100400101000), CONST64(0x0000100010101000), CONST64(0x0000100410101000), + CONST64(0x0000100000000010), CONST64(0x0000100400000010), CONST64(0x0000100010000010), CONST64(0x0000100410000010), + CONST64(0x0000100000100010), CONST64(0x0000100400100010), CONST64(0x0000100010100010), CONST64(0x0000100410100010), + CONST64(0x0000100000001010), CONST64(0x0000100400001010), CONST64(0x0000100010001010), CONST64(0x0000100410001010), + CONST64(0x0000100000101010), CONST64(0x0000100400101010), CONST64(0x0000100010101010), CONST64(0x0000100410101010), + CONST64(0x1000100000000000), CONST64(0x1000100400000000), CONST64(0x1000100010000000), CONST64(0x1000100410000000), + CONST64(0x1000100000100000), CONST64(0x1000100400100000), CONST64(0x1000100010100000), CONST64(0x1000100410100000), + CONST64(0x1000100000001000), CONST64(0x1000100400001000), CONST64(0x1000100010001000), CONST64(0x1000100410001000), + CONST64(0x1000100000101000), CONST64(0x1000100400101000), CONST64(0x1000100010101000), CONST64(0x1000100410101000), + CONST64(0x1000100000000010), CONST64(0x1000100400000010), CONST64(0x1000100010000010), CONST64(0x1000100410000010), + CONST64(0x1000100000100010), CONST64(0x1000100400100010), CONST64(0x1000100010100010), CONST64(0x1000100410100010), + CONST64(0x1000100000001010), CONST64(0x1000100400001010), CONST64(0x1000100010001010), CONST64(0x1000100410001010), + CONST64(0x1000100000101010), CONST64(0x1000100400101010), CONST64(0x1000100010101010), CONST64(0x1000100410101010), + CONST64(0x0010100000000000), CONST64(0x0010100400000000), CONST64(0x0010100010000000), CONST64(0x0010100410000000), + CONST64(0x0010100000100000), CONST64(0x0010100400100000), CONST64(0x0010100010100000), CONST64(0x0010100410100000), + CONST64(0x0010100000001000), CONST64(0x0010100400001000), CONST64(0x0010100010001000), CONST64(0x0010100410001000), + CONST64(0x0010100000101000), CONST64(0x0010100400101000), CONST64(0x0010100010101000), CONST64(0x0010100410101000), + CONST64(0x0010100000000010), CONST64(0x0010100400000010), CONST64(0x0010100010000010), CONST64(0x0010100410000010), + CONST64(0x0010100000100010), CONST64(0x0010100400100010), CONST64(0x0010100010100010), CONST64(0x0010100410100010), + CONST64(0x0010100000001010), CONST64(0x0010100400001010), CONST64(0x0010100010001010), CONST64(0x0010100410001010), + CONST64(0x0010100000101010), CONST64(0x0010100400101010), CONST64(0x0010100010101010), CONST64(0x0010100410101010), + CONST64(0x1010100000000000), CONST64(0x1010100400000000), CONST64(0x1010100010000000), CONST64(0x1010100410000000), + CONST64(0x1010100000100000), CONST64(0x1010100400100000), CONST64(0x1010100010100000), CONST64(0x1010100410100000), + CONST64(0x1010100000001000), CONST64(0x1010100400001000), CONST64(0x1010100010001000), CONST64(0x1010100410001000), + CONST64(0x1010100000101000), CONST64(0x1010100400101000), CONST64(0x1010100010101000), CONST64(0x1010100410101000), + CONST64(0x1010100000000010), CONST64(0x1010100400000010), CONST64(0x1010100010000010), CONST64(0x1010100410000010), + CONST64(0x1010100000100010), CONST64(0x1010100400100010), CONST64(0x1010100010100010), CONST64(0x1010100410100010), + CONST64(0x1010100000001010), CONST64(0x1010100400001010), CONST64(0x1010100010001010), CONST64(0x1010100410001010), + CONST64(0x1010100000101010), CONST64(0x1010100400101010), CONST64(0x1010100010101010), CONST64(0x1010100410101010) + }, +{ CONST64(0x0000000000000000), CONST64(0x0000001000000000), CONST64(0x0000000040000000), CONST64(0x0000001040000000), + CONST64(0x0000000000400000), CONST64(0x0000001000400000), CONST64(0x0000000040400000), CONST64(0x0000001040400000), + CONST64(0x0000000000004000), CONST64(0x0000001000004000), CONST64(0x0000000040004000), CONST64(0x0000001040004000), + CONST64(0x0000000000404000), CONST64(0x0000001000404000), CONST64(0x0000000040404000), CONST64(0x0000001040404000), + CONST64(0x0000000000000040), CONST64(0x0000001000000040), CONST64(0x0000000040000040), CONST64(0x0000001040000040), + CONST64(0x0000000000400040), CONST64(0x0000001000400040), CONST64(0x0000000040400040), CONST64(0x0000001040400040), + CONST64(0x0000000000004040), CONST64(0x0000001000004040), CONST64(0x0000000040004040), CONST64(0x0000001040004040), + CONST64(0x0000000000404040), CONST64(0x0000001000404040), CONST64(0x0000000040404040), CONST64(0x0000001040404040), + CONST64(0x4000000000000000), CONST64(0x4000001000000000), CONST64(0x4000000040000000), CONST64(0x4000001040000000), + CONST64(0x4000000000400000), CONST64(0x4000001000400000), CONST64(0x4000000040400000), CONST64(0x4000001040400000), + CONST64(0x4000000000004000), CONST64(0x4000001000004000), CONST64(0x4000000040004000), CONST64(0x4000001040004000), + CONST64(0x4000000000404000), CONST64(0x4000001000404000), CONST64(0x4000000040404000), CONST64(0x4000001040404000), + CONST64(0x4000000000000040), CONST64(0x4000001000000040), CONST64(0x4000000040000040), CONST64(0x4000001040000040), + CONST64(0x4000000000400040), CONST64(0x4000001000400040), CONST64(0x4000000040400040), CONST64(0x4000001040400040), + CONST64(0x4000000000004040), CONST64(0x4000001000004040), CONST64(0x4000000040004040), CONST64(0x4000001040004040), + CONST64(0x4000000000404040), CONST64(0x4000001000404040), CONST64(0x4000000040404040), CONST64(0x4000001040404040), + CONST64(0x0040000000000000), CONST64(0x0040001000000000), CONST64(0x0040000040000000), CONST64(0x0040001040000000), + CONST64(0x0040000000400000), CONST64(0x0040001000400000), CONST64(0x0040000040400000), CONST64(0x0040001040400000), + CONST64(0x0040000000004000), CONST64(0x0040001000004000), CONST64(0x0040000040004000), CONST64(0x0040001040004000), + CONST64(0x0040000000404000), CONST64(0x0040001000404000), CONST64(0x0040000040404000), CONST64(0x0040001040404000), + CONST64(0x0040000000000040), CONST64(0x0040001000000040), CONST64(0x0040000040000040), CONST64(0x0040001040000040), + CONST64(0x0040000000400040), CONST64(0x0040001000400040), CONST64(0x0040000040400040), CONST64(0x0040001040400040), + CONST64(0x0040000000004040), CONST64(0x0040001000004040), CONST64(0x0040000040004040), CONST64(0x0040001040004040), + CONST64(0x0040000000404040), CONST64(0x0040001000404040), CONST64(0x0040000040404040), CONST64(0x0040001040404040), + CONST64(0x4040000000000000), CONST64(0x4040001000000000), CONST64(0x4040000040000000), CONST64(0x4040001040000000), + CONST64(0x4040000000400000), CONST64(0x4040001000400000), CONST64(0x4040000040400000), CONST64(0x4040001040400000), + CONST64(0x4040000000004000), CONST64(0x4040001000004000), CONST64(0x4040000040004000), CONST64(0x4040001040004000), + CONST64(0x4040000000404000), CONST64(0x4040001000404000), CONST64(0x4040000040404000), CONST64(0x4040001040404000), + CONST64(0x4040000000000040), CONST64(0x4040001000000040), CONST64(0x4040000040000040), CONST64(0x4040001040000040), + CONST64(0x4040000000400040), CONST64(0x4040001000400040), CONST64(0x4040000040400040), CONST64(0x4040001040400040), + CONST64(0x4040000000004040), CONST64(0x4040001000004040), CONST64(0x4040000040004040), CONST64(0x4040001040004040), + CONST64(0x4040000000404040), CONST64(0x4040001000404040), CONST64(0x4040000040404040), CONST64(0x4040001040404040), + CONST64(0x0000400000000000), CONST64(0x0000401000000000), CONST64(0x0000400040000000), CONST64(0x0000401040000000), + CONST64(0x0000400000400000), CONST64(0x0000401000400000), CONST64(0x0000400040400000), CONST64(0x0000401040400000), + CONST64(0x0000400000004000), CONST64(0x0000401000004000), CONST64(0x0000400040004000), CONST64(0x0000401040004000), + CONST64(0x0000400000404000), CONST64(0x0000401000404000), CONST64(0x0000400040404000), CONST64(0x0000401040404000), + CONST64(0x0000400000000040), CONST64(0x0000401000000040), CONST64(0x0000400040000040), CONST64(0x0000401040000040), + CONST64(0x0000400000400040), CONST64(0x0000401000400040), CONST64(0x0000400040400040), CONST64(0x0000401040400040), + CONST64(0x0000400000004040), CONST64(0x0000401000004040), CONST64(0x0000400040004040), CONST64(0x0000401040004040), + CONST64(0x0000400000404040), CONST64(0x0000401000404040), CONST64(0x0000400040404040), CONST64(0x0000401040404040), + CONST64(0x4000400000000000), CONST64(0x4000401000000000), CONST64(0x4000400040000000), CONST64(0x4000401040000000), + CONST64(0x4000400000400000), CONST64(0x4000401000400000), CONST64(0x4000400040400000), CONST64(0x4000401040400000), + CONST64(0x4000400000004000), CONST64(0x4000401000004000), CONST64(0x4000400040004000), CONST64(0x4000401040004000), + CONST64(0x4000400000404000), CONST64(0x4000401000404000), CONST64(0x4000400040404000), CONST64(0x4000401040404000), + CONST64(0x4000400000000040), CONST64(0x4000401000000040), CONST64(0x4000400040000040), CONST64(0x4000401040000040), + CONST64(0x4000400000400040), CONST64(0x4000401000400040), CONST64(0x4000400040400040), CONST64(0x4000401040400040), + CONST64(0x4000400000004040), CONST64(0x4000401000004040), CONST64(0x4000400040004040), CONST64(0x4000401040004040), + CONST64(0x4000400000404040), CONST64(0x4000401000404040), CONST64(0x4000400040404040), CONST64(0x4000401040404040), + CONST64(0x0040400000000000), CONST64(0x0040401000000000), CONST64(0x0040400040000000), CONST64(0x0040401040000000), + CONST64(0x0040400000400000), CONST64(0x0040401000400000), CONST64(0x0040400040400000), CONST64(0x0040401040400000), + CONST64(0x0040400000004000), CONST64(0x0040401000004000), CONST64(0x0040400040004000), CONST64(0x0040401040004000), + CONST64(0x0040400000404000), CONST64(0x0040401000404000), CONST64(0x0040400040404000), CONST64(0x0040401040404000), + CONST64(0x0040400000000040), CONST64(0x0040401000000040), CONST64(0x0040400040000040), CONST64(0x0040401040000040), + CONST64(0x0040400000400040), CONST64(0x0040401000400040), CONST64(0x0040400040400040), CONST64(0x0040401040400040), + CONST64(0x0040400000004040), CONST64(0x0040401000004040), CONST64(0x0040400040004040), CONST64(0x0040401040004040), + CONST64(0x0040400000404040), CONST64(0x0040401000404040), CONST64(0x0040400040404040), CONST64(0x0040401040404040), + CONST64(0x4040400000000000), CONST64(0x4040401000000000), CONST64(0x4040400040000000), CONST64(0x4040401040000000), + CONST64(0x4040400000400000), CONST64(0x4040401000400000), CONST64(0x4040400040400000), CONST64(0x4040401040400000), + CONST64(0x4040400000004000), CONST64(0x4040401000004000), CONST64(0x4040400040004000), CONST64(0x4040401040004000), + CONST64(0x4040400000404000), CONST64(0x4040401000404000), CONST64(0x4040400040404000), CONST64(0x4040401040404000), + CONST64(0x4040400000000040), CONST64(0x4040401000000040), CONST64(0x4040400040000040), CONST64(0x4040401040000040), + CONST64(0x4040400000400040), CONST64(0x4040401000400040), CONST64(0x4040400040400040), CONST64(0x4040401040400040), + CONST64(0x4040400000004040), CONST64(0x4040401000004040), CONST64(0x4040400040004040), CONST64(0x4040401040004040), + CONST64(0x4040400000404040), CONST64(0x4040401000404040), CONST64(0x4040400040404040), CONST64(0x4040401040404040) + }}; + +#endif + + +static void cookey(const ulong32 *raw1, ulong32 *keyout); + +#ifdef LTC_CLEAN_STACK +static void _deskey(const unsigned char *key, short edf, ulong32 *keyout) +#else +static void deskey(const unsigned char *key, short edf, ulong32 *keyout) +#endif +{ + ulong32 i, j, l, m, n, kn[32]; + unsigned char pc1m[56], pcr[56]; + + for (j=0; j < 56; j++) { + l = (ulong32)pc1[j]; + m = l & 7; + pc1m[j] = (unsigned char)((key[l >> 3U] & bytebit[m]) == bytebit[m] ? 1 : 0); + } + + for (i=0; i < 16; i++) { + if (edf == DE1) { + m = (15 - i) << 1; + } else { + m = i << 1; + } + n = m + 1; + kn[m] = kn[n] = 0L; + for (j=0; j < 28; j++) { + l = j + (ulong32)totrot[i]; + if (l < 28) { + pcr[j] = pc1m[l]; + } else { + pcr[j] = pc1m[l - 28]; + } + } + for (/*j = 28*/; j < 56; j++) { + l = j + (ulong32)totrot[i]; + if (l < 56) { + pcr[j] = pc1m[l]; + } else { + pcr[j] = pc1m[l - 28]; + } + } + for (j=0; j < 24; j++) { + if ((int)pcr[(int)pc2[j]] != 0) { + kn[m] |= bigbyte[j]; + } + if ((int)pcr[(int)pc2[j+24]] != 0) { + kn[n] |= bigbyte[j]; + } + } + } + + cookey(kn, keyout); +} + +#ifdef LTC_CLEAN_STACK +static void deskey(const unsigned char *key, short edf, ulong32 *keyout) +{ + _deskey(key, edf, keyout); + burn_stack(sizeof(int)*5 + sizeof(ulong32)*32 + sizeof(unsigned char)*112); +} +#endif + +#ifdef LTC_CLEAN_STACK +static void _cookey(const ulong32 *raw1, ulong32 *keyout) +#else +static void cookey(const ulong32 *raw1, ulong32 *keyout) +#endif +{ + ulong32 *cook; + const ulong32 *raw0; + ulong32 dough[32]; + int i; + + cook = dough; + for(i=0; i < 16; i++, raw1++) + { + raw0 = raw1++; + *cook = (*raw0 & 0x00fc0000L) << 6; + *cook |= (*raw0 & 0x00000fc0L) << 10; + *cook |= (*raw1 & 0x00fc0000L) >> 10; + *cook++ |= (*raw1 & 0x00000fc0L) >> 6; + *cook = (*raw0 & 0x0003f000L) << 12; + *cook |= (*raw0 & 0x0000003fL) << 16; + *cook |= (*raw1 & 0x0003f000L) >> 4; + *cook++ |= (*raw1 & 0x0000003fL); + } + + XMEMCPY(keyout, dough, sizeof(dough)); +} + +#ifdef LTC_CLEAN_STACK +static void cookey(const ulong32 *raw1, ulong32 *keyout) +{ + _cookey(raw1, keyout); + burn_stack(sizeof(ulong32 *) * 2 + sizeof(ulong32)*32 + sizeof(int)); +} +#endif + +#ifndef LTC_CLEAN_STACK +static void desfunc(ulong32 *block, const ulong32 *keys) +#else +static void _desfunc(ulong32 *block, const ulong32 *keys) +#endif +{ + ulong32 work, right, leftt; + int cur_round; + + leftt = block[0]; + right = block[1]; + +#ifdef LTC_SMALL_CODE + work = ((leftt >> 4) ^ right) & 0x0f0f0f0fL; + right ^= work; + leftt ^= (work << 4); + + work = ((leftt >> 16) ^ right) & 0x0000ffffL; + right ^= work; + leftt ^= (work << 16); + + work = ((right >> 2) ^ leftt) & 0x33333333L; + leftt ^= work; + right ^= (work << 2); + + work = ((right >> 8) ^ leftt) & 0x00ff00ffL; + leftt ^= work; + right ^= (work << 8); + + right = ROLc(right, 1); + work = (leftt ^ right) & 0xaaaaaaaaL; + + leftt ^= work; + right ^= work; + leftt = ROLc(leftt, 1); +#else + { + ulong64 tmp; + tmp = des_ip[0][byte(leftt, 0)] ^ + des_ip[1][byte(leftt, 1)] ^ + des_ip[2][byte(leftt, 2)] ^ + des_ip[3][byte(leftt, 3)] ^ + des_ip[4][byte(right, 0)] ^ + des_ip[5][byte(right, 1)] ^ + des_ip[6][byte(right, 2)] ^ + des_ip[7][byte(right, 3)]; + leftt = (ulong32)(tmp >> 32); + right = (ulong32)(tmp & 0xFFFFFFFFUL); + } +#endif + + for (cur_round = 0; cur_round < 8; cur_round++) { + work = RORc(right, 4) ^ *keys++; + leftt ^= SP7[work & 0x3fL] + ^ SP5[(work >> 8) & 0x3fL] + ^ SP3[(work >> 16) & 0x3fL] + ^ SP1[(work >> 24) & 0x3fL]; + work = right ^ *keys++; + leftt ^= SP8[ work & 0x3fL] + ^ SP6[(work >> 8) & 0x3fL] + ^ SP4[(work >> 16) & 0x3fL] + ^ SP2[(work >> 24) & 0x3fL]; + + work = RORc(leftt, 4) ^ *keys++; + right ^= SP7[ work & 0x3fL] + ^ SP5[(work >> 8) & 0x3fL] + ^ SP3[(work >> 16) & 0x3fL] + ^ SP1[(work >> 24) & 0x3fL]; + work = leftt ^ *keys++; + right ^= SP8[ work & 0x3fL] + ^ SP6[(work >> 8) & 0x3fL] + ^ SP4[(work >> 16) & 0x3fL] + ^ SP2[(work >> 24) & 0x3fL]; + } + +#ifdef LTC_SMALL_CODE + right = RORc(right, 1); + work = (leftt ^ right) & 0xaaaaaaaaL; + leftt ^= work; + right ^= work; + leftt = RORc(leftt, 1); + work = ((leftt >> 8) ^ right) & 0x00ff00ffL; + right ^= work; + leftt ^= (work << 8); + /* -- */ + work = ((leftt >> 2) ^ right) & 0x33333333L; + right ^= work; + leftt ^= (work << 2); + work = ((right >> 16) ^ leftt) & 0x0000ffffL; + leftt ^= work; + right ^= (work << 16); + work = ((right >> 4) ^ leftt) & 0x0f0f0f0fL; + leftt ^= work; + right ^= (work << 4); +#else + { + ulong64 tmp; + tmp = des_fp[0][byte(leftt, 0)] ^ + des_fp[1][byte(leftt, 1)] ^ + des_fp[2][byte(leftt, 2)] ^ + des_fp[3][byte(leftt, 3)] ^ + des_fp[4][byte(right, 0)] ^ + des_fp[5][byte(right, 1)] ^ + des_fp[6][byte(right, 2)] ^ + des_fp[7][byte(right, 3)]; + leftt = (ulong32)(tmp >> 32); + right = (ulong32)(tmp & 0xFFFFFFFFUL); + } +#endif + + block[0] = right; + block[1] = leftt; +} + +#ifdef LTC_CLEAN_STACK +static void desfunc(ulong32 *block, const ulong32 *keys) +{ + _desfunc(block, keys); + burn_stack(sizeof(ulong32) * 4 + sizeof(int)); +} +#endif + + /** + Initialize the LTC_DES block cipher + @param key The symmetric key you wish to pass + @param keylen The key length in bytes + @param num_rounds The number of rounds desired (0 for default) + @param skey The key in as scheduled by this function. + @return CRYPT_OK if successful + */ +int des_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +{ + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(skey != NULL); + + if (num_rounds != 0 && num_rounds != 16) { + return CRYPT_INVALID_ROUNDS; + } + + if (keylen != 8) { + return CRYPT_INVALID_KEYSIZE; + } + + deskey(key, EN0, skey->des.ek); + deskey(key, DE1, skey->des.dk); + + return CRYPT_OK; +} + + /** + Initialize the 3LTC_DES-EDE block cipher + @param key The symmetric key you wish to pass + @param keylen The key length in bytes + @param num_rounds The number of rounds desired (0 for default) + @param skey The key in as scheduled by this function. + @return CRYPT_OK if successful + */ +int des3_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +{ + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(skey != NULL); + + if(num_rounds != 0 && num_rounds != 16) { + return CRYPT_INVALID_ROUNDS; + } + + if (keylen != 24 && keylen != 16) { + return CRYPT_INVALID_KEYSIZE; + } + + deskey(key, EN0, skey->des3.ek[0]); + deskey(key+8, DE1, skey->des3.ek[1]); + if (keylen == 24) { + deskey(key+16, EN0, skey->des3.ek[2]); + } else { + /* two-key 3DES: K3=K1 */ + deskey(key, EN0, skey->des3.ek[2]); + } + + deskey(key, DE1, skey->des3.dk[2]); + deskey(key+8, EN0, skey->des3.dk[1]); + if (keylen == 24) { + deskey(key+16, DE1, skey->des3.dk[0]); + } else { + /* two-key 3DES: K3=K1 */ + deskey(key, DE1, skey->des3.dk[0]); + } + + return CRYPT_OK; +} + +/** + Encrypts a block of text with LTC_DES + @param pt The input plaintext (8 bytes) + @param ct The output ciphertext (8 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +int des_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +{ + ulong32 work[2]; + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + LOAD32H(work[0], pt+0); + LOAD32H(work[1], pt+4); + desfunc(work, skey->des.ek); + STORE32H(work[0],ct+0); + STORE32H(work[1],ct+4); + return CRYPT_OK; +} + +/** + Decrypts a block of text with LTC_DES + @param ct The input ciphertext (8 bytes) + @param pt The output plaintext (8 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +int des_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +{ + ulong32 work[2]; + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + LOAD32H(work[0], ct+0); + LOAD32H(work[1], ct+4); + desfunc(work, skey->des.dk); + STORE32H(work[0],pt+0); + STORE32H(work[1],pt+4); + return CRYPT_OK; +} + +/** + Encrypts a block of text with 3LTC_DES-EDE + @param pt The input plaintext (8 bytes) + @param ct The output ciphertext (8 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +int des3_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +{ + ulong32 work[2]; + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + LOAD32H(work[0], pt+0); + LOAD32H(work[1], pt+4); + desfunc(work, skey->des3.ek[0]); + desfunc(work, skey->des3.ek[1]); + desfunc(work, skey->des3.ek[2]); + STORE32H(work[0],ct+0); + STORE32H(work[1],ct+4); + return CRYPT_OK; +} + +/** + Decrypts a block of text with 3LTC_DES-EDE + @param ct The input ciphertext (8 bytes) + @param pt The output plaintext (8 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +int des3_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +{ + ulong32 work[2]; + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + LOAD32H(work[0], ct+0); + LOAD32H(work[1], ct+4); + desfunc(work, skey->des3.dk[0]); + desfunc(work, skey->des3.dk[1]); + desfunc(work, skey->des3.dk[2]); + STORE32H(work[0],pt+0); + STORE32H(work[1],pt+4); + return CRYPT_OK; +} + +/** + Performs a self-test of the LTC_DES block cipher + @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled +*/ +int des_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + int err; + static const struct des_test_case { + int num, mode; /* mode 1 = encrypt */ + unsigned char key[8], txt[8], out[8]; + } cases[] = { + { 1, 1, { 0x10, 0x31, 0x6E, 0x02, 0x8C, 0x8F, 0x3B, 0x4A }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x82, 0xDC, 0xBA, 0xFB, 0xDE, 0xAB, 0x66, 0x02 } }, + { 2, 1, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x95, 0xF8, 0xA5, 0xE5, 0xDD, 0x31, 0xD9, 0x00 }, + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, + { 3, 1, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0xDD, 0x7F, 0x12, 0x1C, 0xA5, 0x01, 0x56, 0x19 }, + { 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, + { 4, 1, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x2E, 0x86, 0x53, 0x10, 0x4F, 0x38, 0x34, 0xEA }, + { 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, + { 5, 1, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x4B, 0xD3, 0x88, 0xFF, 0x6C, 0xD8, 0x1D, 0x4F }, + { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, + { 6, 1, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x20, 0xB9, 0xE7, 0x67, 0xB2, 0xFB, 0x14, 0x56 }, + { 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, + { 7, 1, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x55, 0x57, 0x93, 0x80, 0xD7, 0x71, 0x38, 0xEF }, + { 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, + { 8, 1, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x6C, 0xC5, 0xDE, 0xFA, 0xAF, 0x04, 0x51, 0x2F }, + { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, + { 9, 1, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x0D, 0x9F, 0x27, 0x9B, 0xA5, 0xD8, 0x72, 0x60 }, + { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, + {10, 1, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0xD9, 0x03, 0x1B, 0x02, 0x71, 0xBD, 0x5A, 0x0A }, + { 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, + + { 1, 0, { 0x10, 0x31, 0x6E, 0x02, 0x8C, 0x8F, 0x3B, 0x4A }, + { 0x82, 0xDC, 0xBA, 0xFB, 0xDE, 0xAB, 0x66, 0x02 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } }, + { 2, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x95, 0xF8, 0xA5, 0xE5, 0xDD, 0x31, 0xD9, 0x00 } }, + { 3, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xDD, 0x7F, 0x12, 0x1C, 0xA5, 0x01, 0x56, 0x19 } }, + { 4, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x2E, 0x86, 0x53, 0x10, 0x4F, 0x38, 0x34, 0xEA } }, + { 5, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x4B, 0xD3, 0x88, 0xFF, 0x6C, 0xD8, 0x1D, 0x4F } }, + { 6, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x20, 0xB9, 0xE7, 0x67, 0xB2, 0xFB, 0x14, 0x56 } }, + { 7, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x55, 0x57, 0x93, 0x80, 0xD7, 0x71, 0x38, 0xEF } }, + { 8, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x6C, 0xC5, 0xDE, 0xFA, 0xAF, 0x04, 0x51, 0x2F } }, + { 9, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x0D, 0x9F, 0x27, 0x9B, 0xA5, 0xD8, 0x72, 0x60 } }, + {10, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xD9, 0x03, 0x1B, 0x02, 0x71, 0xBD, 0x5A, 0x0A } }, + +#ifdef LTC_TEST_EXT + { 0+11, 0, { 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x95, 0xA8, 0xD7, 0x28, 0x13, 0xDA, 0xA9, 0x4D } }, + { 1+11, 0, { 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x0E, 0xEC, 0x14, 0x87, 0xDD, 0x8C, 0x26, 0xD5 } }, + { 2+11, 0, { 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x7A, 0xD1, 0x6F, 0xFB, 0x79, 0xC4, 0x59, 0x26 } }, + { 3+11, 0, { 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xD3, 0x74, 0x62, 0x94, 0xCA, 0x6A, 0x6C, 0xF3 } }, + { 4+11, 0, { 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x80, 0x9F, 0x5F, 0x87, 0x3C, 0x1F, 0xD7, 0x61 } }, + { 5+11, 0, { 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xC0, 0x2F, 0xAF, 0xFE, 0xC9, 0x89, 0xD1, 0xFC } }, + { 6+11, 0, { 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x46, 0x15, 0xAA, 0x1D, 0x33, 0xE7, 0x2F, 0x10 } }, + { 7+11, 0, { 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x20, 0x55, 0x12, 0x33, 0x50, 0xC0, 0x08, 0x58 } }, + { 8+11, 0, { 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xDF, 0x3B, 0x99, 0xD6, 0x57, 0x73, 0x97, 0xC8 } }, + { 9+11, 0, { 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x31, 0xFE, 0x17, 0x36, 0x9B, 0x52, 0x88, 0xC9 } }, + {10+11, 0, { 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xDF, 0xDD, 0x3C, 0xC6, 0x4D, 0xAE, 0x16, 0x42 } }, + {11+11, 0, { 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x17, 0x8C, 0x83, 0xCE, 0x2B, 0x39, 0x9D, 0x94 } }, + {12+11, 0, { 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x50, 0xF6, 0x36, 0x32, 0x4A, 0x9B, 0x7F, 0x80 } }, + {13+11, 0, { 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xA8, 0x46, 0x8E, 0xE3, 0xBC, 0x18, 0xF0, 0x6D } }, + {14+11, 0, { 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xA2, 0xDC, 0x9E, 0x92, 0xFD, 0x3C, 0xDE, 0x92 } }, + {15+11, 0, { 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xCA, 0xC0, 0x9F, 0x79, 0x7D, 0x03, 0x12, 0x87 } }, + {16+11, 0, { 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x90, 0xBA, 0x68, 0x0B, 0x22, 0xAE, 0xB5, 0x25 } }, + {17+11, 0, { 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xCE, 0x7A, 0x24, 0xF3, 0x50, 0xE2, 0x80, 0xB6 } }, + {18+11, 0, { 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x88, 0x2B, 0xFF, 0x0A, 0xA0, 0x1A, 0x0B, 0x87 } }, + {19+11, 0, { 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x25, 0x61, 0x02, 0x88, 0x92, 0x45, 0x11, 0xC2 } }, + {20+11, 0, { 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xC7, 0x15, 0x16, 0xC2, 0x9C, 0x75, 0xD1, 0x70 } }, + {21+11, 0, { 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x51, 0x99, 0xC2, 0x9A, 0x52, 0xC9, 0xF0, 0x59 } }, + {22+11, 0, { 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xC2, 0x2F, 0x0A, 0x29, 0x4A, 0x71, 0xF2, 0x9F } }, + {23+11, 0, { 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xEE, 0x37, 0x14, 0x83, 0x71, 0x4C, 0x02, 0xEA } }, + {24+11, 0, { 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xA8, 0x1F, 0xBD, 0x44, 0x8F, 0x9E, 0x52, 0x2F } }, + {25+11, 0, { 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x4F, 0x64, 0x4C, 0x92, 0xE1, 0x92, 0xDF, 0xED } }, + {26+11, 0, { 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x1A, 0xFA, 0x9A, 0x66, 0xA6, 0xDF, 0x92, 0xAE } }, + {27+11, 0, { 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xB3, 0xC1, 0xCC, 0x71, 0x5C, 0xB8, 0x79, 0xD8 } }, + {28+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x19, 0xD0, 0x32, 0xE6, 0x4A, 0xB0, 0xBD, 0x8B } }, + {29+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x3C, 0xFA, 0xA7, 0xA7, 0xDC, 0x87, 0x20, 0xDC } }, + {30+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xB7, 0x26, 0x5F, 0x7F, 0x44, 0x7A, 0xC6, 0xF3 } }, + {31+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x9D, 0xB7, 0x3B, 0x3C, 0x0D, 0x16, 0x3F, 0x54 } }, + {32+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x81, 0x81, 0xB6, 0x5B, 0xAB, 0xF4, 0xA9, 0x75 } }, + {33+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x93, 0xC9, 0xB6, 0x40, 0x42, 0xEA, 0xA2, 0x40 } }, + {34+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x55, 0x70, 0x53, 0x08, 0x29, 0x70, 0x55, 0x92 } }, + {35+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x86, 0x38, 0x80, 0x9E, 0x87, 0x87, 0x87, 0xA0 } }, + {36+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x41, 0xB9, 0xA7, 0x9A, 0xF7, 0x9A, 0xC2, 0x08 } }, + {37+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x7A, 0x9B, 0xE4, 0x2F, 0x20, 0x09, 0xA8, 0x92 } }, + {38+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x29, 0x03, 0x8D, 0x56, 0xBA, 0x6D, 0x27, 0x45 } }, + {39+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x54, 0x95, 0xC6, 0xAB, 0xF1, 0xE5, 0xDF, 0x51 } }, + {40+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xAE, 0x13, 0xDB, 0xD5, 0x61, 0x48, 0x89, 0x33 } }, + {41+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x02, 0x4D, 0x1F, 0xFA, 0x89, 0x04, 0xE3, 0x89 } }, + {42+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xD1, 0x39, 0x97, 0x12, 0xF9, 0x9B, 0xF0, 0x2E } }, + {43+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x14, 0xC1, 0xD7, 0xC1, 0xCF, 0xFE, 0xC7, 0x9E } }, + {44+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x1D, 0xE5, 0x27, 0x9D, 0xAE, 0x3B, 0xED, 0x6F } }, + {45+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xE9, 0x41, 0xA3, 0x3F, 0x85, 0x50, 0x13, 0x03 } }, + {46+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xDA, 0x99, 0xDB, 0xBC, 0x9A, 0x03, 0xF3, 0x79 } }, + {47+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xB7, 0xFC, 0x92, 0xF9, 0x1D, 0x8E, 0x92, 0xE9 } }, + {48+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xAE, 0x8E, 0x5C, 0xAA, 0x3C, 0xA0, 0x4E, 0x85 } }, + {49+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x80 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x9C, 0xC6, 0x2D, 0xF4, 0x3B, 0x6E, 0xED, 0x74 } }, + {50+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x40 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xD8, 0x63, 0xDB, 0xB5, 0xC5, 0x9A, 0x91, 0xA0 } }, + {51+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xA1, 0xAB, 0x21, 0x90, 0x54, 0x5B, 0x91, 0xD7 } }, + {52+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x10 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x08, 0x75, 0x04, 0x1E, 0x64, 0xC5, 0x70, 0xF7 } }, + {53+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x08 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x5A, 0x59, 0x45, 0x28, 0xBE, 0xBE, 0xF1, 0xCC } }, + {54+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xFC, 0xDB, 0x32, 0x91, 0xDE, 0x21, 0xF0, 0xC0 } }, + {55+11, 0, { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x86, 0x9E, 0xFD, 0x7F, 0x9F, 0x26, 0x5A, 0x09 } }, +#endif /* LTC_TEST_EXT */ + + /*** more test cases you could add if you are not convinced (the above test cases aren't really too good): + + key plaintext ciphertext + 0000000000000000 0000000000000000 8CA64DE9C1B123A7 + FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFF 7359B2163E4EDC58 + 3000000000000000 1000000000000001 958E6E627A05557B + 1111111111111111 1111111111111111 F40379AB9E0EC533 + 0123456789ABCDEF 1111111111111111 17668DFC7292532D + 1111111111111111 0123456789ABCDEF 8A5AE1F81AB8F2DD + 0000000000000000 0000000000000000 8CA64DE9C1B123A7 + FEDCBA9876543210 0123456789ABCDEF ED39D950FA74BCC4 + 7CA110454A1A6E57 01A1D6D039776742 690F5B0D9A26939B + 0131D9619DC1376E 5CD54CA83DEF57DA 7A389D10354BD271 + 07A1133E4A0B2686 0248D43806F67172 868EBB51CAB4599A + 3849674C2602319E 51454B582DDF440A 7178876E01F19B2A + 04B915BA43FEB5B6 42FD443059577FA2 AF37FB421F8C4095 + 0113B970FD34F2CE 059B5E0851CF143A 86A560F10EC6D85B + 0170F175468FB5E6 0756D8E0774761D2 0CD3DA020021DC09 + 43297FAD38E373FE 762514B829BF486A EA676B2CB7DB2B7A + 07A7137045DA2A16 3BDD119049372802 DFD64A815CAF1A0F + 04689104C2FD3B2F 26955F6835AF609A 5C513C9C4886C088 + 37D06BB516CB7546 164D5E404F275232 0A2AEEAE3FF4AB77 + 1F08260D1AC2465E 6B056E18759F5CCA EF1BF03E5DFA575A + 584023641ABA6176 004BD6EF09176062 88BF0DB6D70DEE56 + 025816164629B007 480D39006EE762F2 A1F9915541020B56 + 49793EBC79B3258F 437540C8698F3CFA 6FBF1CAFCFFD0556 + 4FB05E1515AB73A7 072D43A077075292 2F22E49BAB7CA1AC + 49E95D6D4CA229BF 02FE55778117F12A 5A6B612CC26CCE4A + 018310DC409B26D6 1D9D5C5018F728C2 5F4C038ED12B2E41 + 1C587F1C13924FEF 305532286D6F295A 63FAC0D034D9F793 + 0101010101010101 0123456789ABCDEF 617B3A0CE8F07100 + 1F1F1F1F0E0E0E0E 0123456789ABCDEF DB958605F8C8C606 + E0FEE0FEF1FEF1FE 0123456789ABCDEF EDBFD1C66C29CCC7 + 0000000000000000 FFFFFFFFFFFFFFFF 355550B2150E2451 + FFFFFFFFFFFFFFFF 0000000000000000 CAAAAF4DEAF1DBAE + 0123456789ABCDEF 0000000000000000 D5D44FF720683D0D + FEDCBA9876543210 FFFFFFFFFFFFFFFF 2A2BB008DF97C2F2 + + http://www.ecs.soton.ac.uk/~prw99r/ez438/vectors.txt + ***/ + }; + int i, y; + unsigned char tmp[8]; + symmetric_key des; + + for(i=0; i < (int)(sizeof(cases)/sizeof(cases[0])); i++) + { + if ((err = des_setup(cases[i].key, 8, 0, &des)) != CRYPT_OK) { + return err; + } + if (cases[i].mode != 0) { + des_ecb_encrypt(cases[i].txt, tmp, &des); + } else { + des_ecb_decrypt(cases[i].txt, tmp, &des); + } + + if (compare_testvector(cases[i].out, sizeof(tmp), tmp, sizeof(tmp), "DES", i) != 0) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 8; y++) tmp[y] = 0; + for (y = 0; y < 1000; y++) des_ecb_encrypt(tmp, tmp, &des); + for (y = 0; y < 1000; y++) des_ecb_decrypt(tmp, tmp, &des); + for (y = 0; y < 8; y++) if (tmp[y] != 0) return CRYPT_FAIL_TESTVECTOR; + } + + return CRYPT_OK; + #endif +} + +int des3_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + unsigned char key[24], pt[8], ct[8], tmp[8]; + symmetric_key skey; + int x, err; + + if ((err = des_test()) != CRYPT_OK) { + return err; + } + + for (x = 0; x < 8; x++) { + pt[x] = x; + } + + for (x = 0; x < 24; x++) { + key[x] = x; + } + + if ((err = des3_setup(key, 24, 0, &skey)) != CRYPT_OK) { + return err; + } + + des3_ecb_encrypt(pt, ct, &skey); + des3_ecb_decrypt(ct, tmp, &skey); + + if (compare_testvector(pt, 8, tmp, 8, "3DES", 0) != 0) { + return CRYPT_FAIL_TESTVECTOR; + } + + return CRYPT_OK; + #endif +} + +/** Terminate the context + @param skey The scheduled key +*/ +void des_done(symmetric_key *skey) +{ + LTC_UNUSED_PARAM(skey); +} + +/** Terminate the context + @param skey The scheduled key +*/ +void des3_done(symmetric_key *skey) +{ + LTC_UNUSED_PARAM(skey); +} + + +/** + Gets suitable key size + @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. + @return CRYPT_OK if the input key size is acceptable. +*/ +int des_keysize(int *keysize) +{ + LTC_ARGCHK(keysize != NULL); + if(*keysize < 8) { + return CRYPT_INVALID_KEYSIZE; + } + *keysize = 8; + return CRYPT_OK; +} + +/** + Gets suitable key size + @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. + @return CRYPT_OK if the input key size is acceptable. +*/ +int des3_keysize(int *keysize) +{ + LTC_ARGCHK(keysize != NULL); + if (*keysize < 16) + return CRYPT_INVALID_KEYSIZE; + if (*keysize < 24) { + *keysize = 16; + return CRYPT_OK; + } + *keysize = 24; + return CRYPT_OK; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/ciphers/kasumi.c b/fsbl/lib/libtomcrypt/src/ciphers/kasumi.c new file mode 100644 index 000000000..7c2add524 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/ciphers/kasumi.c @@ -0,0 +1,318 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file kasumi.c + Implementation of the 3GPP Kasumi block cipher + Derived from the 3GPP standard source code +*/ + +#include "tomcrypt.h" + +#ifdef LTC_KASUMI + +typedef unsigned u16; + +#define ROL16(x, y) ((((x)<<(y)) | ((x)>>(16-(y)))) & 0xFFFF) + +const struct ltc_cipher_descriptor kasumi_desc = { + "kasumi", + 21, + 16, 16, 8, 8, + &kasumi_setup, + &kasumi_ecb_encrypt, + &kasumi_ecb_decrypt, + &kasumi_test, + &kasumi_done, + &kasumi_keysize, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + +static u16 FI( u16 in, u16 subkey ) +{ + u16 nine, seven; + static const u16 S7[128] = { + 54, 50, 62, 56, 22, 34, 94, 96, 38, 6, 63, 93, 2, 18,123, 33, + 55,113, 39,114, 21, 67, 65, 12, 47, 73, 46, 27, 25,111,124, 81, + 53, 9,121, 79, 52, 60, 58, 48,101,127, 40,120,104, 70, 71, 43, + 20,122, 72, 61, 23,109, 13,100, 77, 1, 16, 7, 82, 10,105, 98, + 117,116, 76, 11, 89,106, 0,125,118, 99, 86, 69, 30, 57,126, 87, + 112, 51, 17, 5, 95, 14, 90, 84, 91, 8, 35,103, 32, 97, 28, 66, + 102, 31, 26, 45, 75, 4, 85, 92, 37, 74, 80, 49, 68, 29,115, 44, + 64,107,108, 24,110, 83, 36, 78, 42, 19, 15, 41, 88,119, 59, 3 }; + static const u16 S9[512] = { + 167,239,161,379,391,334, 9,338, 38,226, 48,358,452,385, 90,397, + 183,253,147,331,415,340, 51,362,306,500,262, 82,216,159,356,177, + 175,241,489, 37,206, 17, 0,333, 44,254,378, 58,143,220, 81,400, + 95, 3,315,245, 54,235,218,405,472,264,172,494,371,290,399, 76, + 165,197,395,121,257,480,423,212,240, 28,462,176,406,507,288,223, + 501,407,249,265, 89,186,221,428,164, 74,440,196,458,421,350,163, + 232,158,134,354, 13,250,491,142,191, 69,193,425,152,227,366,135, + 344,300,276,242,437,320,113,278, 11,243, 87,317, 36, 93,496, 27, + 487,446,482, 41, 68,156,457,131,326,403,339, 20, 39,115,442,124, + 475,384,508, 53,112,170,479,151,126,169, 73,268,279,321,168,364, + 363,292, 46,499,393,327,324, 24,456,267,157,460,488,426,309,229, + 439,506,208,271,349,401,434,236, 16,209,359, 52, 56,120,199,277, + 465,416,252,287,246, 6, 83,305,420,345,153,502, 65, 61,244,282, + 173,222,418, 67,386,368,261,101,476,291,195,430, 49, 79,166,330, + 280,383,373,128,382,408,155,495,367,388,274,107,459,417, 62,454, + 132,225,203,316,234, 14,301, 91,503,286,424,211,347,307,140,374, + 35,103,125,427, 19,214,453,146,498,314,444,230,256,329,198,285, + 50,116, 78,410, 10,205,510,171,231, 45,139,467, 29, 86,505, 32, + 72, 26,342,150,313,490,431,238,411,325,149,473, 40,119,174,355, + 185,233,389, 71,448,273,372, 55,110,178,322, 12,469,392,369,190, + 1,109,375,137,181, 88, 75,308,260,484, 98,272,370,275,412,111, + 336,318, 4,504,492,259,304, 77,337,435, 21,357,303,332,483, 18, + 47, 85, 25,497,474,289,100,269,296,478,270,106, 31,104,433, 84, + 414,486,394, 96, 99,154,511,148,413,361,409,255,162,215,302,201, + 266,351,343,144,441,365,108,298,251, 34,182,509,138,210,335,133, + 311,352,328,141,396,346,123,319,450,281,429,228,443,481, 92,404, + 485,422,248,297, 23,213,130,466, 22,217,283, 70,294,360,419,127, + 312,377, 7,468,194, 2,117,295,463,258,224,447,247,187, 80,398, + 284,353,105,390,299,471,470,184, 57,200,348, 63,204,188, 33,451, + 97, 30,310,219, 94,160,129,493, 64,179,263,102,189,207,114,402, + 438,477,387,122,192, 42,381, 5,145,118,180,449,293,323,136,380, + 43, 66, 60,455,341,445,202,432, 8,237, 15,376,436,464, 59,461}; + + /* The sixteen bit input is split into two unequal halves, * + * nine bits and seven bits - as is the subkey */ + + nine = (u16)(in>>7)&0x1FF; + seven = (u16)(in&0x7F); + + /* Now run the various operations */ + nine = (u16)(S9[nine] ^ seven); + seven = (u16)(S7[seven] ^ (nine & 0x7F)); + seven ^= (subkey>>9); + nine ^= (subkey&0x1FF); + nine = (u16)(S9[nine] ^ seven); + seven = (u16)(S7[seven] ^ (nine & 0x7F)); + return (u16)(seven<<9) + nine; +} + +static ulong32 FO( ulong32 in, int round_no, symmetric_key *key) +{ + u16 left, right; + + /* Split the input into two 16-bit words */ + left = (u16)(in>>16); + right = (u16) in&0xFFFF; + + /* Now apply the same basic transformation three times */ + left ^= key->kasumi.KOi1[round_no]; + left = FI( left, key->kasumi.KIi1[round_no] ); + left ^= right; + + right ^= key->kasumi.KOi2[round_no]; + right = FI( right, key->kasumi.KIi2[round_no] ); + right ^= left; + + left ^= key->kasumi.KOi3[round_no]; + left = FI( left, key->kasumi.KIi3[round_no] ); + left ^= right; + + return (((ulong32)right)<<16)+left; +} + +static ulong32 FL( ulong32 in, int round_no, symmetric_key *key ) +{ + u16 l, r, a, b; + /* split out the left and right halves */ + l = (u16)(in>>16); + r = (u16)(in)&0xFFFF; + /* do the FL() operations */ + a = (u16) (l & key->kasumi.KLi1[round_no]); + r ^= ROL16(a,1); + b = (u16)(r | key->kasumi.KLi2[round_no]); + l ^= ROL16(b,1); + /* put the two halves back together */ + + return (((ulong32)l)<<16) + r; +} + +int kasumi_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +{ + ulong32 left, right, temp; + int n; + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + + LOAD32H(left, pt); + LOAD32H(right, pt+4); + + for (n = 0; n <= 7; ) { + temp = FL(left, n, skey); + temp = FO(temp, n++, skey); + right ^= temp; + temp = FO(right, n, skey); + temp = FL(temp, n++, skey); + left ^= temp; + } + + STORE32H(left, ct); + STORE32H(right, ct+4); + + return CRYPT_OK; +} + +int kasumi_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +{ + ulong32 left, right, temp; + int n; + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + + LOAD32H(left, ct); + LOAD32H(right, ct+4); + + for (n = 7; n >= 0; ) { + temp = FO(right, n, skey); + temp = FL(temp, n--, skey); + left ^= temp; + temp = FL(left, n, skey); + temp = FO(temp, n--, skey); + right ^= temp; + } + + STORE32H(left, pt); + STORE32H(right, pt+4); + + return CRYPT_OK; +} + +int kasumi_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +{ + static const u16 C[8] = { 0x0123,0x4567,0x89AB,0xCDEF, 0xFEDC,0xBA98,0x7654,0x3210 }; + u16 ukey[8], Kprime[8]; + int n; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(skey != NULL); + + if (keylen != 16) { + return CRYPT_INVALID_KEYSIZE; + } + + if (num_rounds != 0 && num_rounds != 8) { + return CRYPT_INVALID_ROUNDS; + } + + /* Start by ensuring the subkeys are endian correct on a 16-bit basis */ + for (n = 0; n < 8; n++ ) { + ukey[n] = (((u16)key[2*n]) << 8) | key[2*n+1]; + } + + /* Now build the K'[] keys */ + for (n = 0; n < 8; n++) { + Kprime[n] = ukey[n] ^ C[n]; + } + + /* Finally construct the various sub keys */ + for(n = 0; n < 8; n++) { + skey->kasumi.KLi1[n] = ROL16(ukey[n],1); + skey->kasumi.KLi2[n] = Kprime[(n+2)&0x7]; + skey->kasumi.KOi1[n] = ROL16(ukey[(n+1)&0x7],5); + skey->kasumi.KOi2[n] = ROL16(ukey[(n+5)&0x7],8); + skey->kasumi.KOi3[n] = ROL16(ukey[(n+6)&0x7],13); + skey->kasumi.KIi1[n] = Kprime[(n+4)&0x7]; + skey->kasumi.KIi2[n] = Kprime[(n+3)&0x7]; + skey->kasumi.KIi3[n] = Kprime[(n+7)&0x7]; + } + + return CRYPT_OK; +} + +void kasumi_done(symmetric_key *skey) +{ + LTC_UNUSED_PARAM(skey); +} + +int kasumi_keysize(int *keysize) +{ + LTC_ARGCHK(keysize != NULL); + if (*keysize >= 16) { + *keysize = 16; + return CRYPT_OK; + } else { + return CRYPT_INVALID_KEYSIZE; + } +} + +int kasumi_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct { + unsigned char key[16], pt[8], ct[8]; + } tests[] = { + +{ + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x4B, 0x58, 0xA7, 0x71, 0xAF, 0xC7, 0xE5, 0xE8 } +}, + +{ + { 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x7E, 0xEF, 0x11, 0x3C, 0x95, 0xBB, 0x5A, 0x77 } +}, + +{ + { 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x5F, 0x14, 0x06, 0x86, 0xD7, 0xAD, 0x5A, 0x39 }, +}, + +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x2E, 0x14, 0x91, 0xCF, 0x70, 0xAA, 0x46, 0x5D } +}, + +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xB5, 0x45, 0x86, 0xF4, 0xAB, 0x9A, 0xE5, 0x46 } +}, + +}; + unsigned char buf[2][8]; + symmetric_key key; + int err, x; + + for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { + if ((err = kasumi_setup(tests[x].key, 16, 0, &key)) != CRYPT_OK) { + return err; + } + if ((err = kasumi_ecb_encrypt(tests[x].pt, buf[0], &key)) != CRYPT_OK) { + return err; + } + if ((err = kasumi_ecb_decrypt(tests[x].ct, buf[1], &key)) != CRYPT_OK) { + return err; + } + if (compare_testvector(buf[1], 8, tests[x].pt, 8, "Kasumi Decrypt", x) || + compare_testvector(buf[0], 8, tests[x].ct, 8, "Kasumi Encrypt", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/ciphers/khazad.c b/fsbl/lib/libtomcrypt/src/ciphers/khazad.c new file mode 100644 index 000000000..4d1f2cec9 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/ciphers/khazad.c @@ -0,0 +1,855 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file khazad.c + Khazad implementation derived from public domain source + Authors: Paulo S.L.M. Barreto and Vincent Rijmen. +*/ + +#ifdef LTC_KHAZAD + +const struct ltc_cipher_descriptor khazad_desc = { + "khazad", + 18, + 16, 16, 8, 8, + &khazad_setup, + &khazad_ecb_encrypt, + &khazad_ecb_decrypt, + &khazad_test, + &khazad_done, + &khazad_keysize, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + +#define R 8 +#define KEYSIZE 128 +#define KEYSIZEB (KEYSIZE/8) +#define BLOCKSIZE 64 +#define BLOCKSIZEB (BLOCKSIZE/8) + +static const ulong64 T0[256] = { + CONST64(0xbad3d268bbb96a01), CONST64(0x54fc4d19e59a66b1), CONST64(0x2f71bc93e26514cd), CONST64(0x749ccdb925871b51), + CONST64(0x53f55102f7a257a4), CONST64(0xd3686bb8d0d6be03), CONST64(0xd26b6fbdd6deb504), CONST64(0x4dd72964b35285fe), + CONST64(0x50f05d0dfdba4aad), CONST64(0xace98a26cf09e063), CONST64(0x8d8a0e83091c9684), CONST64(0xbfdcc679a5914d1a), + CONST64(0x7090ddad3da7374d), CONST64(0x52f65507f1aa5ca3), CONST64(0x9ab352c87ba417e1), CONST64(0x4cd42d61b55a8ef9), + CONST64(0xea238f65460320ac), CONST64(0xd56273a6c4e68411), CONST64(0x97a466f155cc68c2), CONST64(0xd16e63b2dcc6a80d), + CONST64(0x3355ccffaa85d099), CONST64(0x51f35908fbb241aa), CONST64(0x5bed712ac7e20f9c), CONST64(0xa6f7a204f359ae55), + CONST64(0xde7f5f81febec120), CONST64(0x48d83d75ad7aa2e5), CONST64(0xa8e59a32d729cc7f), CONST64(0x99b65ec771bc0ae8), + CONST64(0xdb704b90e096e63b), CONST64(0x3256c8faac8ddb9e), CONST64(0xb7c4e65195d11522), CONST64(0xfc19d72b32b3aace), + CONST64(0xe338ab48704b7393), CONST64(0x9ebf42dc63843bfd), CONST64(0x91ae7eef41fc52d0), CONST64(0x9bb056cd7dac1ce6), + CONST64(0xe23baf4d76437894), CONST64(0xbbd0d66dbdb16106), CONST64(0x41c319589b32f1da), CONST64(0x6eb2a5cb7957e517), + CONST64(0xa5f2ae0bf941b35c), CONST64(0xcb400bc08016564b), CONST64(0x6bbdb1da677fc20c), CONST64(0x95a26efb59dc7ecc), + CONST64(0xa1febe1fe1619f40), CONST64(0xf308eb1810cbc3e3), CONST64(0xb1cefe4f81e12f30), CONST64(0x0206080a0c10160e), + CONST64(0xcc4917db922e675e), CONST64(0xc45137f3a26e3f66), CONST64(0x1d2774694ee8cf53), CONST64(0x143c504478a09c6c), + CONST64(0xc3582be8b0560e73), CONST64(0x63a591f2573f9a34), CONST64(0xda734f95e69eed3c), CONST64(0x5de76934d3d2358e), + CONST64(0x5fe1613edfc22380), CONST64(0xdc79578bf2aed72e), CONST64(0x7d87e99413cf486e), CONST64(0xcd4a13de94266c59), + CONST64(0x7f81e19e1fdf5e60), CONST64(0x5aee752fc1ea049b), CONST64(0x6cb4adc17547f319), CONST64(0x5ce46d31d5da3e89), + CONST64(0xf704fb0c08ebefff), CONST64(0x266a98bed42d47f2), CONST64(0xff1cdb2438abb7c7), CONST64(0xed2a937e543b11b9), + CONST64(0xe825876f4a1336a2), CONST64(0x9dba4ed3699c26f4), CONST64(0x6fb1a1ce7f5fee10), CONST64(0x8e8f028c03048b8d), + CONST64(0x192b647d56c8e34f), CONST64(0xa0fdba1ae7699447), CONST64(0xf00de7171ad3deea), CONST64(0x89861e97113cba98), + CONST64(0x0f113c332278692d), CONST64(0x07091c1b12383115), CONST64(0xafec8629c511fd6a), CONST64(0xfb10cb30208b9bdb), + CONST64(0x0818202830405838), CONST64(0x153f54417ea8976b), CONST64(0x0d1734392e687f23), CONST64(0x040c101418202c1c), + CONST64(0x0103040506080b07), CONST64(0x64ac8de94507ab21), CONST64(0xdf7c5b84f8b6ca27), CONST64(0x769ac5b329970d5f), + CONST64(0x798bf9800bef6472), CONST64(0xdd7a538ef4a6dc29), CONST64(0x3d47f4c98ef5b2b3), CONST64(0x163a584e74b08a62), + CONST64(0x3f41fcc382e5a4bd), CONST64(0x3759dcebb2a5fc85), CONST64(0x6db7a9c4734ff81e), CONST64(0x3848e0d890dd95a8), + CONST64(0xb9d6de67b1a17708), CONST64(0x7395d1a237bf2a44), CONST64(0xe926836a4c1b3da5), CONST64(0x355fd4e1beb5ea8b), + CONST64(0x55ff491ce3926db6), CONST64(0x7193d9a83baf3c4a), CONST64(0x7b8df18a07ff727c), CONST64(0x8c890a860f149d83), + CONST64(0x7296d5a731b72143), CONST64(0x88851a921734b19f), CONST64(0xf607ff090ee3e4f8), CONST64(0x2a7ea882fc4d33d6), + CONST64(0x3e42f8c684edafba), CONST64(0x5ee2653bd9ca2887), CONST64(0x27699cbbd2254cf5), CONST64(0x46ca0543890ac0cf), + CONST64(0x0c14303c28607424), CONST64(0x65af89ec430fa026), CONST64(0x68b8bdd56d67df05), CONST64(0x61a399f85b2f8c3a), + CONST64(0x03050c0f0a181d09), CONST64(0xc15e23e2bc46187d), CONST64(0x57f94116ef827bb8), CONST64(0xd6677fa9cefe9918), + CONST64(0xd976439aec86f035), CONST64(0x58e87d25cdfa1295), CONST64(0xd875479fea8efb32), CONST64(0x66aa85e34917bd2f), + CONST64(0xd7647bacc8f6921f), CONST64(0x3a4ee8d29ccd83a6), CONST64(0xc84507cf8a0e4b42), CONST64(0x3c44f0cc88fdb9b4), + CONST64(0xfa13cf35268390dc), CONST64(0x96a762f453c463c5), CONST64(0xa7f4a601f551a552), CONST64(0x98b55ac277b401ef), + CONST64(0xec29977b52331abe), CONST64(0xb8d5da62b7a97c0f), CONST64(0xc7543bfca876226f), CONST64(0xaeef822cc319f66d), + CONST64(0x69bbb9d06b6fd402), CONST64(0x4bdd317aa762bfec), CONST64(0xabe0963ddd31d176), CONST64(0xa9e69e37d121c778), + CONST64(0x67a981e64f1fb628), CONST64(0x0a1e28223c504e36), CONST64(0x47c901468f02cbc8), CONST64(0xf20bef1d16c3c8e4), + CONST64(0xb5c2ee5b99c1032c), CONST64(0x226688aacc0d6bee), CONST64(0xe532b356647b4981), CONST64(0xee2f9f715e230cb0), + CONST64(0xbedfc27ca399461d), CONST64(0x2b7dac87fa4538d1), CONST64(0x819e3ebf217ce2a0), CONST64(0x1236485a6c90a67e), + CONST64(0x839836b52d6cf4ae), CONST64(0x1b2d6c775ad8f541), CONST64(0x0e1238362470622a), CONST64(0x23658cafca0560e9), + CONST64(0xf502f30604fbf9f1), CONST64(0x45cf094c8312ddc6), CONST64(0x216384a5c61576e7), CONST64(0xce4f1fd19e3e7150), + CONST64(0x49db3970ab72a9e2), CONST64(0x2c74b09ce87d09c4), CONST64(0xf916c33a2c9b8dd5), CONST64(0xe637bf596e635488), + CONST64(0xb6c7e25493d91e25), CONST64(0x2878a088f05d25d8), CONST64(0x17395c4b72b88165), CONST64(0x829b32b02b64ffa9), + CONST64(0x1a2e68725cd0fe46), CONST64(0x8b80169d1d2cac96), CONST64(0xfe1fdf213ea3bcc0), CONST64(0x8a8312981b24a791), + CONST64(0x091b242d3648533f), CONST64(0xc94603ca8c064045), CONST64(0x879426a1354cd8b2), CONST64(0x4ed2256bb94a98f7), + CONST64(0xe13ea3427c5b659d), CONST64(0x2e72b896e46d1fca), CONST64(0xe431b75362734286), CONST64(0xe03da7477a536e9a), + CONST64(0xeb208b60400b2bab), CONST64(0x90ad7aea47f459d7), CONST64(0xa4f1aa0eff49b85b), CONST64(0x1e22786644f0d25a), + CONST64(0x85922eab395ccebc), CONST64(0x60a09dfd5d27873d), CONST64(0x0000000000000000), CONST64(0x256f94b1de355afb), + CONST64(0xf401f70302f3f2f6), CONST64(0xf10ee3121cdbd5ed), CONST64(0x94a16afe5fd475cb), CONST64(0x0b1d2c273a584531), + CONST64(0xe734bb5c686b5f8f), CONST64(0x759fc9bc238f1056), CONST64(0xef2c9b74582b07b7), CONST64(0x345cd0e4b8bde18c), + CONST64(0x3153c4f5a695c697), CONST64(0xd46177a3c2ee8f16), CONST64(0xd06d67b7dacea30a), CONST64(0x869722a43344d3b5), + CONST64(0x7e82e59b19d75567), CONST64(0xadea8e23c901eb64), CONST64(0xfd1ad32e34bba1c9), CONST64(0x297ba48df6552edf), + CONST64(0x3050c0f0a09dcd90), CONST64(0x3b4decd79ac588a1), CONST64(0x9fbc46d9658c30fa), CONST64(0xf815c73f2a9386d2), + CONST64(0xc6573ff9ae7e2968), CONST64(0x13354c5f6a98ad79), CONST64(0x060a181e14303a12), CONST64(0x050f14111e28271b), + CONST64(0xc55233f6a4663461), CONST64(0x113344556688bb77), CONST64(0x7799c1b62f9f0658), CONST64(0x7c84ed9115c74369), + CONST64(0x7a8ef58f01f7797b), CONST64(0x7888fd850de76f75), CONST64(0x365ad8eeb4adf782), CONST64(0x1c24706c48e0c454), + CONST64(0x394be4dd96d59eaf), CONST64(0x59eb7920cbf21992), CONST64(0x1828607850c0e848), CONST64(0x56fa4513e98a70bf), + CONST64(0xb3c8f6458df1393e), CONST64(0xb0cdfa4a87e92437), CONST64(0x246c90b4d83d51fc), CONST64(0x206080a0c01d7de0), + CONST64(0xb2cbf2408bf93239), CONST64(0x92ab72e04be44fd9), CONST64(0xa3f8b615ed71894e), CONST64(0xc05d27e7ba4e137a), + CONST64(0x44cc0d49851ad6c1), CONST64(0x62a695f751379133), CONST64(0x103040506080b070), CONST64(0xb4c1ea5e9fc9082b), + CONST64(0x84912aae3f54c5bb), CONST64(0x43c511529722e7d4), CONST64(0x93a876e54dec44de), CONST64(0xc25b2fedb65e0574), + CONST64(0x4ade357fa16ab4eb), CONST64(0xbddace73a9815b14), CONST64(0x8f8c0689050c808a), CONST64(0x2d77b499ee7502c3), + CONST64(0xbcd9ca76af895013), CONST64(0x9cb94ad66f942df3), CONST64(0x6abeb5df6177c90b), CONST64(0x40c01d5d9d3afadd), + CONST64(0xcf4c1bd498367a57), CONST64(0xa2fbb210eb798249), CONST64(0x809d3aba2774e9a7), CONST64(0x4fd1216ebf4293f0), + CONST64(0x1f217c6342f8d95d), CONST64(0xca430fc5861e5d4c), CONST64(0xaae39238db39da71), CONST64(0x42c61557912aecd3), +}; + +static const ulong64 T1[256] = { + CONST64(0xd3ba68d2b9bb016a), CONST64(0xfc54194d9ae5b166), CONST64(0x712f93bc65e2cd14), CONST64(0x9c74b9cd8725511b), + CONST64(0xf5530251a2f7a457), CONST64(0x68d3b86bd6d003be), CONST64(0x6bd2bd6fded604b5), CONST64(0xd74d642952b3fe85), + CONST64(0xf0500d5dbafdad4a), CONST64(0xe9ac268a09cf63e0), CONST64(0x8a8d830e1c098496), CONST64(0xdcbf79c691a51a4d), + CONST64(0x9070addda73d4d37), CONST64(0xf6520755aaf1a35c), CONST64(0xb39ac852a47be117), CONST64(0xd44c612d5ab5f98e), + CONST64(0x23ea658f0346ac20), CONST64(0x62d5a673e6c41184), CONST64(0xa497f166cc55c268), CONST64(0x6ed1b263c6dc0da8), + CONST64(0x5533ffcc85aa99d0), CONST64(0xf3510859b2fbaa41), CONST64(0xed5b2a71e2c79c0f), CONST64(0xf7a604a259f355ae), + CONST64(0x7fde815fbefe20c1), CONST64(0xd848753d7aade5a2), CONST64(0xe5a8329a29d77fcc), CONST64(0xb699c75ebc71e80a), + CONST64(0x70db904b96e03be6), CONST64(0x5632fac88dac9edb), CONST64(0xc4b751e6d1952215), CONST64(0x19fc2bd7b332ceaa), + CONST64(0x38e348ab4b709373), CONST64(0xbf9edc428463fd3b), CONST64(0xae91ef7efc41d052), CONST64(0xb09bcd56ac7de61c), + CONST64(0x3be24daf43769478), CONST64(0xd0bb6dd6b1bd0661), CONST64(0xc3415819329bdaf1), CONST64(0xb26ecba5577917e5), + CONST64(0xf2a50bae41f95cb3), CONST64(0x40cbc00b16804b56), CONST64(0xbd6bdab17f670cc2), CONST64(0xa295fb6edc59cc7e), + CONST64(0xfea11fbe61e1409f), CONST64(0x08f318ebcb10e3c3), CONST64(0xceb14ffee181302f), CONST64(0x06020a08100c0e16), + CONST64(0x49ccdb172e925e67), CONST64(0x51c4f3376ea2663f), CONST64(0x271d6974e84e53cf), CONST64(0x3c144450a0786c9c), + CONST64(0x58c3e82b56b0730e), CONST64(0xa563f2913f57349a), CONST64(0x73da954f9ee63ced), CONST64(0xe75d3469d2d38e35), + CONST64(0xe15f3e61c2df8023), CONST64(0x79dc8b57aef22ed7), CONST64(0x877d94e9cf136e48), CONST64(0x4acdde132694596c), + CONST64(0x817f9ee1df1f605e), CONST64(0xee5a2f75eac19b04), CONST64(0xb46cc1ad477519f3), CONST64(0xe45c316ddad5893e), + CONST64(0x04f70cfbeb08ffef), CONST64(0x6a26be982dd4f247), CONST64(0x1cff24dbab38c7b7), CONST64(0x2aed7e933b54b911), + CONST64(0x25e86f87134aa236), CONST64(0xba9dd34e9c69f426), CONST64(0xb16fcea15f7f10ee), CONST64(0x8f8e8c0204038d8b), + CONST64(0x2b197d64c8564fe3), CONST64(0xfda01aba69e74794), CONST64(0x0df017e7d31aeade), CONST64(0x8689971e3c1198ba), + CONST64(0x110f333c78222d69), CONST64(0x09071b1c38121531), CONST64(0xecaf298611c56afd), CONST64(0x10fb30cb8b20db9b), + CONST64(0x1808282040303858), CONST64(0x3f154154a87e6b97), CONST64(0x170d3934682e237f), CONST64(0x0c04141020181c2c), + CONST64(0x030105040806070b), CONST64(0xac64e98d074521ab), CONST64(0x7cdf845bb6f827ca), CONST64(0x9a76b3c597295f0d), + CONST64(0x8b7980f9ef0b7264), CONST64(0x7add8e53a6f429dc), CONST64(0x473dc9f4f58eb3b2), CONST64(0x3a164e58b074628a), + CONST64(0x413fc3fce582bda4), CONST64(0x5937ebdca5b285fc), CONST64(0xb76dc4a94f731ef8), CONST64(0x4838d8e0dd90a895), + CONST64(0xd6b967dea1b10877), CONST64(0x9573a2d1bf37442a), CONST64(0x26e96a831b4ca53d), CONST64(0x5f35e1d4b5be8bea), + CONST64(0xff551c4992e3b66d), CONST64(0x9371a8d9af3b4a3c), CONST64(0x8d7b8af1ff077c72), CONST64(0x898c860a140f839d), + CONST64(0x9672a7d5b7314321), CONST64(0x8588921a34179fb1), CONST64(0x07f609ffe30ef8e4), CONST64(0x7e2a82a84dfcd633), + CONST64(0x423ec6f8ed84baaf), CONST64(0xe25e3b65cad98728), CONST64(0x6927bb9c25d2f54c), CONST64(0xca4643050a89cfc0), + CONST64(0x140c3c3060282474), CONST64(0xaf65ec890f4326a0), CONST64(0xb868d5bd676d05df), CONST64(0xa361f8992f5b3a8c), + CONST64(0x05030f0c180a091d), CONST64(0x5ec1e22346bc7d18), CONST64(0xf957164182efb87b), CONST64(0x67d6a97ffece1899), + CONST64(0x76d99a4386ec35f0), CONST64(0xe858257dfacd9512), CONST64(0x75d89f478eea32fb), CONST64(0xaa66e38517492fbd), + CONST64(0x64d7ac7bf6c81f92), CONST64(0x4e3ad2e8cd9ca683), CONST64(0x45c8cf070e8a424b), CONST64(0x443cccf0fd88b4b9), + CONST64(0x13fa35cf8326dc90), CONST64(0xa796f462c453c563), CONST64(0xf4a701a651f552a5), CONST64(0xb598c25ab477ef01), + CONST64(0x29ec7b973352be1a), CONST64(0xd5b862daa9b70f7c), CONST64(0x54c7fc3b76a86f22), CONST64(0xefae2c8219c36df6), + CONST64(0xbb69d0b96f6b02d4), CONST64(0xdd4b7a3162a7ecbf), CONST64(0xe0ab3d9631dd76d1), CONST64(0xe6a9379e21d178c7), + CONST64(0xa967e6811f4f28b6), CONST64(0x1e0a2228503c364e), CONST64(0xc9474601028fc8cb), CONST64(0x0bf21defc316e4c8), + CONST64(0xc2b55beec1992c03), CONST64(0x6622aa880dccee6b), CONST64(0x32e556b37b648149), CONST64(0x2fee719f235eb00c), + CONST64(0xdfbe7cc299a31d46), CONST64(0x7d2b87ac45fad138), CONST64(0x9e81bf3e7c21a0e2), CONST64(0x36125a48906c7ea6), + CONST64(0x9883b5366c2daef4), CONST64(0x2d1b776cd85a41f5), CONST64(0x120e363870242a62), CONST64(0x6523af8c05cae960), + CONST64(0x02f506f3fb04f1f9), CONST64(0xcf454c091283c6dd), CONST64(0x6321a58415c6e776), CONST64(0x4fced11f3e9e5071), + CONST64(0xdb49703972abe2a9), CONST64(0x742c9cb07de8c409), CONST64(0x16f93ac39b2cd58d), CONST64(0x37e659bf636e8854), + CONST64(0xc7b654e2d993251e), CONST64(0x782888a05df0d825), CONST64(0x39174b5cb8726581), CONST64(0x9b82b032642ba9ff), + CONST64(0x2e1a7268d05c46fe), CONST64(0x808b9d162c1d96ac), CONST64(0x1ffe21dfa33ec0bc), CONST64(0x838a9812241b91a7), + CONST64(0x1b092d2448363f53), CONST64(0x46c9ca03068c4540), CONST64(0x9487a1264c35b2d8), CONST64(0xd24e6b254ab9f798), + CONST64(0x3ee142a35b7c9d65), CONST64(0x722e96b86de4ca1f), CONST64(0x31e453b773628642), CONST64(0x3de047a7537a9a6e), + CONST64(0x20eb608b0b40ab2b), CONST64(0xad90ea7af447d759), CONST64(0xf1a40eaa49ff5bb8), CONST64(0x221e6678f0445ad2), + CONST64(0x9285ab2e5c39bcce), CONST64(0xa060fd9d275d3d87), CONST64(0x0000000000000000), CONST64(0x6f25b19435defb5a), + CONST64(0x01f403f7f302f6f2), CONST64(0x0ef112e3db1cedd5), CONST64(0xa194fe6ad45fcb75), CONST64(0x1d0b272c583a3145), + CONST64(0x34e75cbb6b688f5f), CONST64(0x9f75bcc98f235610), CONST64(0x2cef749b2b58b707), CONST64(0x5c34e4d0bdb88ce1), + CONST64(0x5331f5c495a697c6), CONST64(0x61d4a377eec2168f), CONST64(0x6dd0b767ceda0aa3), CONST64(0x9786a4224433b5d3), + CONST64(0x827e9be5d7196755), CONST64(0xeaad238e01c964eb), CONST64(0x1afd2ed3bb34c9a1), CONST64(0x7b298da455f6df2e), + CONST64(0x5030f0c09da090cd), CONST64(0x4d3bd7ecc59aa188), CONST64(0xbc9fd9468c65fa30), CONST64(0x15f83fc7932ad286), + CONST64(0x57c6f93f7eae6829), CONST64(0x35135f4c986a79ad), CONST64(0x0a061e183014123a), CONST64(0x0f051114281e1b27), + CONST64(0x52c5f63366a46134), CONST64(0x33115544886677bb), CONST64(0x9977b6c19f2f5806), CONST64(0x847c91edc7156943), + CONST64(0x8e7a8ff5f7017b79), CONST64(0x887885fde70d756f), CONST64(0x5a36eed8adb482f7), CONST64(0x241c6c70e04854c4), + CONST64(0x4b39dde4d596af9e), CONST64(0xeb592079f2cb9219), CONST64(0x28187860c05048e8), CONST64(0xfa5613458ae9bf70), + CONST64(0xc8b345f6f18d3e39), CONST64(0xcdb04afae9873724), CONST64(0x6c24b4903dd8fc51), CONST64(0x6020a0801dc0e07d), + CONST64(0xcbb240f2f98b3932), CONST64(0xab92e072e44bd94f), CONST64(0xf8a315b671ed4e89), CONST64(0x5dc0e7274eba7a13), + CONST64(0xcc44490d1a85c1d6), CONST64(0xa662f79537513391), CONST64(0x30105040806070b0), CONST64(0xc1b45eeac99f2b08), + CONST64(0x9184ae2a543fbbc5), CONST64(0xc54352112297d4e7), CONST64(0xa893e576ec4dde44), CONST64(0x5bc2ed2f5eb67405), + CONST64(0xde4a7f356aa1ebb4), CONST64(0xdabd73ce81a9145b), CONST64(0x8c8f89060c058a80), CONST64(0x772d99b475eec302), + CONST64(0xd9bc76ca89af1350), CONST64(0xb99cd64a946ff32d), CONST64(0xbe6adfb577610bc9), CONST64(0xc0405d1d3a9dddfa), + CONST64(0x4ccfd41b3698577a), CONST64(0xfba210b279eb4982), CONST64(0x9d80ba3a7427a7e9), CONST64(0xd14f6e2142bff093), + CONST64(0x211f637cf8425dd9), CONST64(0x43cac50f1e864c5d), CONST64(0xe3aa389239db71da), CONST64(0xc64257152a91d3ec), +}; + +static const ulong64 T2[256] = { + CONST64(0xd268bad36a01bbb9), CONST64(0x4d1954fc66b1e59a), CONST64(0xbc932f7114cde265), CONST64(0xcdb9749c1b512587), + CONST64(0x510253f557a4f7a2), CONST64(0x6bb8d368be03d0d6), CONST64(0x6fbdd26bb504d6de), CONST64(0x29644dd785feb352), + CONST64(0x5d0d50f04aadfdba), CONST64(0x8a26ace9e063cf09), CONST64(0x0e838d8a9684091c), CONST64(0xc679bfdc4d1aa591), + CONST64(0xddad7090374d3da7), CONST64(0x550752f65ca3f1aa), CONST64(0x52c89ab317e17ba4), CONST64(0x2d614cd48ef9b55a), + CONST64(0x8f65ea2320ac4603), CONST64(0x73a6d5628411c4e6), CONST64(0x66f197a468c255cc), CONST64(0x63b2d16ea80ddcc6), + CONST64(0xccff3355d099aa85), CONST64(0x590851f341aafbb2), CONST64(0x712a5bed0f9cc7e2), CONST64(0xa204a6f7ae55f359), + CONST64(0x5f81de7fc120febe), CONST64(0x3d7548d8a2e5ad7a), CONST64(0x9a32a8e5cc7fd729), CONST64(0x5ec799b60ae871bc), + CONST64(0x4b90db70e63be096), CONST64(0xc8fa3256db9eac8d), CONST64(0xe651b7c4152295d1), CONST64(0xd72bfc19aace32b3), + CONST64(0xab48e3387393704b), CONST64(0x42dc9ebf3bfd6384), CONST64(0x7eef91ae52d041fc), CONST64(0x56cd9bb01ce67dac), + CONST64(0xaf4de23b78947643), CONST64(0xd66dbbd06106bdb1), CONST64(0x195841c3f1da9b32), CONST64(0xa5cb6eb2e5177957), + CONST64(0xae0ba5f2b35cf941), CONST64(0x0bc0cb40564b8016), CONST64(0xb1da6bbdc20c677f), CONST64(0x6efb95a27ecc59dc), + CONST64(0xbe1fa1fe9f40e161), CONST64(0xeb18f308c3e310cb), CONST64(0xfe4fb1ce2f3081e1), CONST64(0x080a0206160e0c10), + CONST64(0x17dbcc49675e922e), CONST64(0x37f3c4513f66a26e), CONST64(0x74691d27cf534ee8), CONST64(0x5044143c9c6c78a0), + CONST64(0x2be8c3580e73b056), CONST64(0x91f263a59a34573f), CONST64(0x4f95da73ed3ce69e), CONST64(0x69345de7358ed3d2), + CONST64(0x613e5fe12380dfc2), CONST64(0x578bdc79d72ef2ae), CONST64(0xe9947d87486e13cf), CONST64(0x13decd4a6c599426), + CONST64(0xe19e7f815e601fdf), CONST64(0x752f5aee049bc1ea), CONST64(0xadc16cb4f3197547), CONST64(0x6d315ce43e89d5da), + CONST64(0xfb0cf704efff08eb), CONST64(0x98be266a47f2d42d), CONST64(0xdb24ff1cb7c738ab), CONST64(0x937eed2a11b9543b), + CONST64(0x876fe82536a24a13), CONST64(0x4ed39dba26f4699c), CONST64(0xa1ce6fb1ee107f5f), CONST64(0x028c8e8f8b8d0304), + CONST64(0x647d192be34f56c8), CONST64(0xba1aa0fd9447e769), CONST64(0xe717f00ddeea1ad3), CONST64(0x1e978986ba98113c), + CONST64(0x3c330f11692d2278), CONST64(0x1c1b070931151238), CONST64(0x8629afecfd6ac511), CONST64(0xcb30fb109bdb208b), + CONST64(0x2028081858383040), CONST64(0x5441153f976b7ea8), CONST64(0x34390d177f232e68), CONST64(0x1014040c2c1c1820), + CONST64(0x040501030b070608), CONST64(0x8de964acab214507), CONST64(0x5b84df7cca27f8b6), CONST64(0xc5b3769a0d5f2997), + CONST64(0xf980798b64720bef), CONST64(0x538edd7adc29f4a6), CONST64(0xf4c93d47b2b38ef5), CONST64(0x584e163a8a6274b0), + CONST64(0xfcc33f41a4bd82e5), CONST64(0xdceb3759fc85b2a5), CONST64(0xa9c46db7f81e734f), CONST64(0xe0d8384895a890dd), + CONST64(0xde67b9d67708b1a1), CONST64(0xd1a273952a4437bf), CONST64(0x836ae9263da54c1b), CONST64(0xd4e1355fea8bbeb5), + CONST64(0x491c55ff6db6e392), CONST64(0xd9a871933c4a3baf), CONST64(0xf18a7b8d727c07ff), CONST64(0x0a868c899d830f14), + CONST64(0xd5a77296214331b7), CONST64(0x1a928885b19f1734), CONST64(0xff09f607e4f80ee3), CONST64(0xa8822a7e33d6fc4d), + CONST64(0xf8c63e42afba84ed), CONST64(0x653b5ee22887d9ca), CONST64(0x9cbb27694cf5d225), CONST64(0x054346cac0cf890a), + CONST64(0x303c0c1474242860), CONST64(0x89ec65afa026430f), CONST64(0xbdd568b8df056d67), CONST64(0x99f861a38c3a5b2f), + CONST64(0x0c0f03051d090a18), CONST64(0x23e2c15e187dbc46), CONST64(0x411657f97bb8ef82), CONST64(0x7fa9d6679918cefe), + CONST64(0x439ad976f035ec86), CONST64(0x7d2558e81295cdfa), CONST64(0x479fd875fb32ea8e), CONST64(0x85e366aabd2f4917), + CONST64(0x7bacd764921fc8f6), CONST64(0xe8d23a4e83a69ccd), CONST64(0x07cfc8454b428a0e), CONST64(0xf0cc3c44b9b488fd), + CONST64(0xcf35fa1390dc2683), CONST64(0x62f496a763c553c4), CONST64(0xa601a7f4a552f551), CONST64(0x5ac298b501ef77b4), + CONST64(0x977bec291abe5233), CONST64(0xda62b8d57c0fb7a9), CONST64(0x3bfcc754226fa876), CONST64(0x822caeeff66dc319), + CONST64(0xb9d069bbd4026b6f), CONST64(0x317a4bddbfeca762), CONST64(0x963dabe0d176dd31), CONST64(0x9e37a9e6c778d121), + CONST64(0x81e667a9b6284f1f), CONST64(0x28220a1e4e363c50), CONST64(0x014647c9cbc88f02), CONST64(0xef1df20bc8e416c3), + CONST64(0xee5bb5c2032c99c1), CONST64(0x88aa22666beecc0d), CONST64(0xb356e5324981647b), CONST64(0x9f71ee2f0cb05e23), + CONST64(0xc27cbedf461da399), CONST64(0xac872b7d38d1fa45), CONST64(0x3ebf819ee2a0217c), CONST64(0x485a1236a67e6c90), + CONST64(0x36b58398f4ae2d6c), CONST64(0x6c771b2df5415ad8), CONST64(0x38360e12622a2470), CONST64(0x8caf236560e9ca05), + CONST64(0xf306f502f9f104fb), CONST64(0x094c45cfddc68312), CONST64(0x84a5216376e7c615), CONST64(0x1fd1ce4f71509e3e), + CONST64(0x397049dba9e2ab72), CONST64(0xb09c2c7409c4e87d), CONST64(0xc33af9168dd52c9b), CONST64(0xbf59e63754886e63), + CONST64(0xe254b6c71e2593d9), CONST64(0xa088287825d8f05d), CONST64(0x5c4b1739816572b8), CONST64(0x32b0829bffa92b64), + CONST64(0x68721a2efe465cd0), CONST64(0x169d8b80ac961d2c), CONST64(0xdf21fe1fbcc03ea3), CONST64(0x12988a83a7911b24), + CONST64(0x242d091b533f3648), CONST64(0x03cac94640458c06), CONST64(0x26a18794d8b2354c), CONST64(0x256b4ed298f7b94a), + CONST64(0xa342e13e659d7c5b), CONST64(0xb8962e721fcae46d), CONST64(0xb753e43142866273), CONST64(0xa747e03d6e9a7a53), + CONST64(0x8b60eb202bab400b), CONST64(0x7aea90ad59d747f4), CONST64(0xaa0ea4f1b85bff49), CONST64(0x78661e22d25a44f0), + CONST64(0x2eab8592cebc395c), CONST64(0x9dfd60a0873d5d27), CONST64(0x0000000000000000), CONST64(0x94b1256f5afbde35), + CONST64(0xf703f401f2f602f3), CONST64(0xe312f10ed5ed1cdb), CONST64(0x6afe94a175cb5fd4), CONST64(0x2c270b1d45313a58), + CONST64(0xbb5ce7345f8f686b), CONST64(0xc9bc759f1056238f), CONST64(0x9b74ef2c07b7582b), CONST64(0xd0e4345ce18cb8bd), + CONST64(0xc4f53153c697a695), CONST64(0x77a3d4618f16c2ee), CONST64(0x67b7d06da30adace), CONST64(0x22a48697d3b53344), + CONST64(0xe59b7e82556719d7), CONST64(0x8e23adeaeb64c901), CONST64(0xd32efd1aa1c934bb), CONST64(0xa48d297b2edff655), + CONST64(0xc0f03050cd90a09d), CONST64(0xecd73b4d88a19ac5), CONST64(0x46d99fbc30fa658c), CONST64(0xc73ff81586d22a93), + CONST64(0x3ff9c6572968ae7e), CONST64(0x4c5f1335ad796a98), CONST64(0x181e060a3a121430), CONST64(0x1411050f271b1e28), + CONST64(0x33f6c5523461a466), CONST64(0x44551133bb776688), CONST64(0xc1b6779906582f9f), CONST64(0xed917c84436915c7), + CONST64(0xf58f7a8e797b01f7), CONST64(0xfd8578886f750de7), CONST64(0xd8ee365af782b4ad), CONST64(0x706c1c24c45448e0), + CONST64(0xe4dd394b9eaf96d5), CONST64(0x792059eb1992cbf2), CONST64(0x60781828e84850c0), CONST64(0x451356fa70bfe98a), + CONST64(0xf645b3c8393e8df1), CONST64(0xfa4ab0cd243787e9), CONST64(0x90b4246c51fcd83d), CONST64(0x80a020607de0c01d), + CONST64(0xf240b2cb32398bf9), CONST64(0x72e092ab4fd94be4), CONST64(0xb615a3f8894eed71), CONST64(0x27e7c05d137aba4e), + CONST64(0x0d4944ccd6c1851a), CONST64(0x95f762a691335137), CONST64(0x40501030b0706080), CONST64(0xea5eb4c1082b9fc9), + CONST64(0x2aae8491c5bb3f54), CONST64(0x115243c5e7d49722), CONST64(0x76e593a844de4dec), CONST64(0x2fedc25b0574b65e), + CONST64(0x357f4adeb4eba16a), CONST64(0xce73bdda5b14a981), CONST64(0x06898f8c808a050c), CONST64(0xb4992d7702c3ee75), + CONST64(0xca76bcd95013af89), CONST64(0x4ad69cb92df36f94), CONST64(0xb5df6abec90b6177), CONST64(0x1d5d40c0fadd9d3a), + CONST64(0x1bd4cf4c7a579836), CONST64(0xb210a2fb8249eb79), CONST64(0x3aba809de9a72774), CONST64(0x216e4fd193f0bf42), + CONST64(0x7c631f21d95d42f8), CONST64(0x0fc5ca435d4c861e), CONST64(0x9238aae3da71db39), CONST64(0x155742c6ecd3912a), +}; + +static const ulong64 T3[256] = { + CONST64(0x68d2d3ba016ab9bb), CONST64(0x194dfc54b1669ae5), CONST64(0x93bc712fcd1465e2), CONST64(0xb9cd9c74511b8725), + CONST64(0x0251f553a457a2f7), CONST64(0xb86b68d303bed6d0), CONST64(0xbd6f6bd204b5ded6), CONST64(0x6429d74dfe8552b3), + CONST64(0x0d5df050ad4abafd), CONST64(0x268ae9ac63e009cf), CONST64(0x830e8a8d84961c09), CONST64(0x79c6dcbf1a4d91a5), + CONST64(0xaddd90704d37a73d), CONST64(0x0755f652a35caaf1), CONST64(0xc852b39ae117a47b), CONST64(0x612dd44cf98e5ab5), + CONST64(0x658f23eaac200346), CONST64(0xa67362d51184e6c4), CONST64(0xf166a497c268cc55), CONST64(0xb2636ed10da8c6dc), + CONST64(0xffcc553399d085aa), CONST64(0x0859f351aa41b2fb), CONST64(0x2a71ed5b9c0fe2c7), CONST64(0x04a2f7a655ae59f3), + CONST64(0x815f7fde20c1befe), CONST64(0x753dd848e5a27aad), CONST64(0x329ae5a87fcc29d7), CONST64(0xc75eb699e80abc71), + CONST64(0x904b70db3be696e0), CONST64(0xfac856329edb8dac), CONST64(0x51e6c4b72215d195), CONST64(0x2bd719fcceaab332), + CONST64(0x48ab38e393734b70), CONST64(0xdc42bf9efd3b8463), CONST64(0xef7eae91d052fc41), CONST64(0xcd56b09be61cac7d), + CONST64(0x4daf3be294784376), CONST64(0x6dd6d0bb0661b1bd), CONST64(0x5819c341daf1329b), CONST64(0xcba5b26e17e55779), + CONST64(0x0baef2a55cb341f9), CONST64(0xc00b40cb4b561680), CONST64(0xdab1bd6b0cc27f67), CONST64(0xfb6ea295cc7edc59), + CONST64(0x1fbefea1409f61e1), CONST64(0x18eb08f3e3c3cb10), CONST64(0x4ffeceb1302fe181), CONST64(0x0a0806020e16100c), + CONST64(0xdb1749cc5e672e92), CONST64(0xf33751c4663f6ea2), CONST64(0x6974271d53cfe84e), CONST64(0x44503c146c9ca078), + CONST64(0xe82b58c3730e56b0), CONST64(0xf291a563349a3f57), CONST64(0x954f73da3ced9ee6), CONST64(0x3469e75d8e35d2d3), + CONST64(0x3e61e15f8023c2df), CONST64(0x8b5779dc2ed7aef2), CONST64(0x94e9877d6e48cf13), CONST64(0xde134acd596c2694), + CONST64(0x9ee1817f605edf1f), CONST64(0x2f75ee5a9b04eac1), CONST64(0xc1adb46c19f34775), CONST64(0x316de45c893edad5), + CONST64(0x0cfb04f7ffefeb08), CONST64(0xbe986a26f2472dd4), CONST64(0x24db1cffc7b7ab38), CONST64(0x7e932aedb9113b54), + CONST64(0x6f8725e8a236134a), CONST64(0xd34eba9df4269c69), CONST64(0xcea1b16f10ee5f7f), CONST64(0x8c028f8e8d8b0403), + CONST64(0x7d642b194fe3c856), CONST64(0x1abafda0479469e7), CONST64(0x17e70df0eaded31a), CONST64(0x971e868998ba3c11), + CONST64(0x333c110f2d697822), CONST64(0x1b1c090715313812), CONST64(0x2986ecaf6afd11c5), CONST64(0x30cb10fbdb9b8b20), + CONST64(0x2820180838584030), CONST64(0x41543f156b97a87e), CONST64(0x3934170d237f682e), CONST64(0x14100c041c2c2018), + CONST64(0x05040301070b0806), CONST64(0xe98dac6421ab0745), CONST64(0x845b7cdf27cab6f8), CONST64(0xb3c59a765f0d9729), + CONST64(0x80f98b797264ef0b), CONST64(0x8e537add29dca6f4), CONST64(0xc9f4473db3b2f58e), CONST64(0x4e583a16628ab074), + CONST64(0xc3fc413fbda4e582), CONST64(0xebdc593785fca5b2), CONST64(0xc4a9b76d1ef84f73), CONST64(0xd8e04838a895dd90), + CONST64(0x67ded6b90877a1b1), CONST64(0xa2d19573442abf37), CONST64(0x6a8326e9a53d1b4c), CONST64(0xe1d45f358beab5be), + CONST64(0x1c49ff55b66d92e3), CONST64(0xa8d993714a3caf3b), CONST64(0x8af18d7b7c72ff07), CONST64(0x860a898c839d140f), + CONST64(0xa7d596724321b731), CONST64(0x921a85889fb13417), CONST64(0x09ff07f6f8e4e30e), CONST64(0x82a87e2ad6334dfc), + CONST64(0xc6f8423ebaafed84), CONST64(0x3b65e25e8728cad9), CONST64(0xbb9c6927f54c25d2), CONST64(0x4305ca46cfc00a89), + CONST64(0x3c30140c24746028), CONST64(0xec89af6526a00f43), CONST64(0xd5bdb86805df676d), CONST64(0xf899a3613a8c2f5b), + CONST64(0x0f0c0503091d180a), CONST64(0xe2235ec17d1846bc), CONST64(0x1641f957b87b82ef), CONST64(0xa97f67d61899fece), + CONST64(0x9a4376d935f086ec), CONST64(0x257de8589512facd), CONST64(0x9f4775d832fb8eea), CONST64(0xe385aa662fbd1749), + CONST64(0xac7b64d71f92f6c8), CONST64(0xd2e84e3aa683cd9c), CONST64(0xcf0745c8424b0e8a), CONST64(0xccf0443cb4b9fd88), + CONST64(0x35cf13fadc908326), CONST64(0xf462a796c563c453), CONST64(0x01a6f4a752a551f5), CONST64(0xc25ab598ef01b477), + CONST64(0x7b9729ecbe1a3352), CONST64(0x62dad5b80f7ca9b7), CONST64(0xfc3b54c76f2276a8), CONST64(0x2c82efae6df619c3), + CONST64(0xd0b9bb6902d46f6b), CONST64(0x7a31dd4becbf62a7), CONST64(0x3d96e0ab76d131dd), CONST64(0x379ee6a978c721d1), + CONST64(0xe681a96728b61f4f), CONST64(0x22281e0a364e503c), CONST64(0x4601c947c8cb028f), CONST64(0x1def0bf2e4c8c316), + CONST64(0x5beec2b52c03c199), CONST64(0xaa886622ee6b0dcc), CONST64(0x56b332e581497b64), CONST64(0x719f2feeb00c235e), + CONST64(0x7cc2dfbe1d4699a3), CONST64(0x87ac7d2bd13845fa), CONST64(0xbf3e9e81a0e27c21), CONST64(0x5a4836127ea6906c), + CONST64(0xb5369883aef46c2d), CONST64(0x776c2d1b41f5d85a), CONST64(0x3638120e2a627024), CONST64(0xaf8c6523e96005ca), + CONST64(0x06f302f5f1f9fb04), CONST64(0x4c09cf45c6dd1283), CONST64(0xa5846321e77615c6), CONST64(0xd11f4fce50713e9e), + CONST64(0x7039db49e2a972ab), CONST64(0x9cb0742cc4097de8), CONST64(0x3ac316f9d58d9b2c), CONST64(0x59bf37e68854636e), + CONST64(0x54e2c7b6251ed993), CONST64(0x88a07828d8255df0), CONST64(0x4b5c39176581b872), CONST64(0xb0329b82a9ff642b), + CONST64(0x72682e1a46fed05c), CONST64(0x9d16808b96ac2c1d), CONST64(0x21df1ffec0bca33e), CONST64(0x9812838a91a7241b), + CONST64(0x2d241b093f534836), CONST64(0xca0346c94540068c), CONST64(0xa1269487b2d84c35), CONST64(0x6b25d24ef7984ab9), + CONST64(0x42a33ee19d655b7c), CONST64(0x96b8722eca1f6de4), CONST64(0x53b731e486427362), CONST64(0x47a73de09a6e537a), + CONST64(0x608b20ebab2b0b40), CONST64(0xea7aad90d759f447), CONST64(0x0eaaf1a45bb849ff), CONST64(0x6678221e5ad2f044), + CONST64(0xab2e9285bcce5c39), CONST64(0xfd9da0603d87275d), CONST64(0x0000000000000000), CONST64(0xb1946f25fb5a35de), + CONST64(0x03f701f4f6f2f302), CONST64(0x12e30ef1edd5db1c), CONST64(0xfe6aa194cb75d45f), CONST64(0x272c1d0b3145583a), + CONST64(0x5cbb34e78f5f6b68), CONST64(0xbcc99f7556108f23), CONST64(0x749b2cefb7072b58), CONST64(0xe4d05c348ce1bdb8), + CONST64(0xf5c4533197c695a6), CONST64(0xa37761d4168feec2), CONST64(0xb7676dd00aa3ceda), CONST64(0xa4229786b5d34433), + CONST64(0x9be5827e6755d719), CONST64(0x238eeaad64eb01c9), CONST64(0x2ed31afdc9a1bb34), CONST64(0x8da47b29df2e55f6), + CONST64(0xf0c0503090cd9da0), CONST64(0xd7ec4d3ba188c59a), CONST64(0xd946bc9ffa308c65), CONST64(0x3fc715f8d286932a), + CONST64(0xf93f57c668297eae), CONST64(0x5f4c351379ad986a), CONST64(0x1e180a06123a3014), CONST64(0x11140f051b27281e), + CONST64(0xf63352c5613466a4), CONST64(0x5544331177bb8866), CONST64(0xb6c1997758069f2f), CONST64(0x91ed847c6943c715), + CONST64(0x8ff58e7a7b79f701), CONST64(0x85fd8878756fe70d), CONST64(0xeed85a3682f7adb4), CONST64(0x6c70241c54c4e048), + CONST64(0xdde44b39af9ed596), CONST64(0x2079eb599219f2cb), CONST64(0x7860281848e8c050), CONST64(0x1345fa56bf708ae9), + CONST64(0x45f6c8b33e39f18d), CONST64(0x4afacdb03724e987), CONST64(0xb4906c24fc513dd8), CONST64(0xa0806020e07d1dc0), + CONST64(0x40f2cbb23932f98b), CONST64(0xe072ab92d94fe44b), CONST64(0x15b6f8a34e8971ed), CONST64(0xe7275dc07a134eba), + CONST64(0x490dcc44c1d61a85), CONST64(0xf795a66233913751), CONST64(0x5040301070b08060), CONST64(0x5eeac1b42b08c99f), + CONST64(0xae2a9184bbc5543f), CONST64(0x5211c543d4e72297), CONST64(0xe576a893de44ec4d), CONST64(0xed2f5bc274055eb6), + CONST64(0x7f35de4aebb46aa1), CONST64(0x73cedabd145b81a9), CONST64(0x89068c8f8a800c05), CONST64(0x99b4772dc30275ee), + CONST64(0x76cad9bc135089af), CONST64(0xd64ab99cf32d946f), CONST64(0xdfb5be6a0bc97761), CONST64(0x5d1dc040ddfa3a9d), + CONST64(0xd41b4ccf577a3698), CONST64(0x10b2fba2498279eb), CONST64(0xba3a9d80a7e97427), CONST64(0x6e21d14ff09342bf), + CONST64(0x637c211f5dd9f842), CONST64(0xc50f43ca4c5d1e86), CONST64(0x3892e3aa71da39db), CONST64(0x5715c642d3ec2a91), +}; + +static const ulong64 T4[256] = { + CONST64(0xbbb96a01bad3d268), CONST64(0xe59a66b154fc4d19), CONST64(0xe26514cd2f71bc93), CONST64(0x25871b51749ccdb9), + CONST64(0xf7a257a453f55102), CONST64(0xd0d6be03d3686bb8), CONST64(0xd6deb504d26b6fbd), CONST64(0xb35285fe4dd72964), + CONST64(0xfdba4aad50f05d0d), CONST64(0xcf09e063ace98a26), CONST64(0x091c96848d8a0e83), CONST64(0xa5914d1abfdcc679), + CONST64(0x3da7374d7090ddad), CONST64(0xf1aa5ca352f65507), CONST64(0x7ba417e19ab352c8), CONST64(0xb55a8ef94cd42d61), + CONST64(0x460320acea238f65), CONST64(0xc4e68411d56273a6), CONST64(0x55cc68c297a466f1), CONST64(0xdcc6a80dd16e63b2), + CONST64(0xaa85d0993355ccff), CONST64(0xfbb241aa51f35908), CONST64(0xc7e20f9c5bed712a), CONST64(0xf359ae55a6f7a204), + CONST64(0xfebec120de7f5f81), CONST64(0xad7aa2e548d83d75), CONST64(0xd729cc7fa8e59a32), CONST64(0x71bc0ae899b65ec7), + CONST64(0xe096e63bdb704b90), CONST64(0xac8ddb9e3256c8fa), CONST64(0x95d11522b7c4e651), CONST64(0x32b3aacefc19d72b), + CONST64(0x704b7393e338ab48), CONST64(0x63843bfd9ebf42dc), CONST64(0x41fc52d091ae7eef), CONST64(0x7dac1ce69bb056cd), + CONST64(0x76437894e23baf4d), CONST64(0xbdb16106bbd0d66d), CONST64(0x9b32f1da41c31958), CONST64(0x7957e5176eb2a5cb), + CONST64(0xf941b35ca5f2ae0b), CONST64(0x8016564bcb400bc0), CONST64(0x677fc20c6bbdb1da), CONST64(0x59dc7ecc95a26efb), + CONST64(0xe1619f40a1febe1f), CONST64(0x10cbc3e3f308eb18), CONST64(0x81e12f30b1cefe4f), CONST64(0x0c10160e0206080a), + CONST64(0x922e675ecc4917db), CONST64(0xa26e3f66c45137f3), CONST64(0x4ee8cf531d277469), CONST64(0x78a09c6c143c5044), + CONST64(0xb0560e73c3582be8), CONST64(0x573f9a3463a591f2), CONST64(0xe69eed3cda734f95), CONST64(0xd3d2358e5de76934), + CONST64(0xdfc223805fe1613e), CONST64(0xf2aed72edc79578b), CONST64(0x13cf486e7d87e994), CONST64(0x94266c59cd4a13de), + CONST64(0x1fdf5e607f81e19e), CONST64(0xc1ea049b5aee752f), CONST64(0x7547f3196cb4adc1), CONST64(0xd5da3e895ce46d31), + CONST64(0x08ebeffff704fb0c), CONST64(0xd42d47f2266a98be), CONST64(0x38abb7c7ff1cdb24), CONST64(0x543b11b9ed2a937e), + CONST64(0x4a1336a2e825876f), CONST64(0x699c26f49dba4ed3), CONST64(0x7f5fee106fb1a1ce), CONST64(0x03048b8d8e8f028c), + CONST64(0x56c8e34f192b647d), CONST64(0xe7699447a0fdba1a), CONST64(0x1ad3deeaf00de717), CONST64(0x113cba9889861e97), + CONST64(0x2278692d0f113c33), CONST64(0x1238311507091c1b), CONST64(0xc511fd6aafec8629), CONST64(0x208b9bdbfb10cb30), + CONST64(0x3040583808182028), CONST64(0x7ea8976b153f5441), CONST64(0x2e687f230d173439), CONST64(0x18202c1c040c1014), + CONST64(0x06080b0701030405), CONST64(0x4507ab2164ac8de9), CONST64(0xf8b6ca27df7c5b84), CONST64(0x29970d5f769ac5b3), + CONST64(0x0bef6472798bf980), CONST64(0xf4a6dc29dd7a538e), CONST64(0x8ef5b2b33d47f4c9), CONST64(0x74b08a62163a584e), + CONST64(0x82e5a4bd3f41fcc3), CONST64(0xb2a5fc853759dceb), CONST64(0x734ff81e6db7a9c4), CONST64(0x90dd95a83848e0d8), + CONST64(0xb1a17708b9d6de67), CONST64(0x37bf2a447395d1a2), CONST64(0x4c1b3da5e926836a), CONST64(0xbeb5ea8b355fd4e1), + CONST64(0xe3926db655ff491c), CONST64(0x3baf3c4a7193d9a8), CONST64(0x07ff727c7b8df18a), CONST64(0x0f149d838c890a86), + CONST64(0x31b721437296d5a7), CONST64(0x1734b19f88851a92), CONST64(0x0ee3e4f8f607ff09), CONST64(0xfc4d33d62a7ea882), + CONST64(0x84edafba3e42f8c6), CONST64(0xd9ca28875ee2653b), CONST64(0xd2254cf527699cbb), CONST64(0x890ac0cf46ca0543), + CONST64(0x286074240c14303c), CONST64(0x430fa02665af89ec), CONST64(0x6d67df0568b8bdd5), CONST64(0x5b2f8c3a61a399f8), + CONST64(0x0a181d0903050c0f), CONST64(0xbc46187dc15e23e2), CONST64(0xef827bb857f94116), CONST64(0xcefe9918d6677fa9), + CONST64(0xec86f035d976439a), CONST64(0xcdfa129558e87d25), CONST64(0xea8efb32d875479f), CONST64(0x4917bd2f66aa85e3), + CONST64(0xc8f6921fd7647bac), CONST64(0x9ccd83a63a4ee8d2), CONST64(0x8a0e4b42c84507cf), CONST64(0x88fdb9b43c44f0cc), + CONST64(0x268390dcfa13cf35), CONST64(0x53c463c596a762f4), CONST64(0xf551a552a7f4a601), CONST64(0x77b401ef98b55ac2), + CONST64(0x52331abeec29977b), CONST64(0xb7a97c0fb8d5da62), CONST64(0xa876226fc7543bfc), CONST64(0xc319f66daeef822c), + CONST64(0x6b6fd40269bbb9d0), CONST64(0xa762bfec4bdd317a), CONST64(0xdd31d176abe0963d), CONST64(0xd121c778a9e69e37), + CONST64(0x4f1fb62867a981e6), CONST64(0x3c504e360a1e2822), CONST64(0x8f02cbc847c90146), CONST64(0x16c3c8e4f20bef1d), + CONST64(0x99c1032cb5c2ee5b), CONST64(0xcc0d6bee226688aa), CONST64(0x647b4981e532b356), CONST64(0x5e230cb0ee2f9f71), + CONST64(0xa399461dbedfc27c), CONST64(0xfa4538d12b7dac87), CONST64(0x217ce2a0819e3ebf), CONST64(0x6c90a67e1236485a), + CONST64(0x2d6cf4ae839836b5), CONST64(0x5ad8f5411b2d6c77), CONST64(0x2470622a0e123836), CONST64(0xca0560e923658caf), + CONST64(0x04fbf9f1f502f306), CONST64(0x8312ddc645cf094c), CONST64(0xc61576e7216384a5), CONST64(0x9e3e7150ce4f1fd1), + CONST64(0xab72a9e249db3970), CONST64(0xe87d09c42c74b09c), CONST64(0x2c9b8dd5f916c33a), CONST64(0x6e635488e637bf59), + CONST64(0x93d91e25b6c7e254), CONST64(0xf05d25d82878a088), CONST64(0x72b8816517395c4b), CONST64(0x2b64ffa9829b32b0), + CONST64(0x5cd0fe461a2e6872), CONST64(0x1d2cac968b80169d), CONST64(0x3ea3bcc0fe1fdf21), CONST64(0x1b24a7918a831298), + CONST64(0x3648533f091b242d), CONST64(0x8c064045c94603ca), CONST64(0x354cd8b2879426a1), CONST64(0xb94a98f74ed2256b), + CONST64(0x7c5b659de13ea342), CONST64(0xe46d1fca2e72b896), CONST64(0x62734286e431b753), CONST64(0x7a536e9ae03da747), + CONST64(0x400b2babeb208b60), CONST64(0x47f459d790ad7aea), CONST64(0xff49b85ba4f1aa0e), CONST64(0x44f0d25a1e227866), + CONST64(0x395ccebc85922eab), CONST64(0x5d27873d60a09dfd), CONST64(0x0000000000000000), CONST64(0xde355afb256f94b1), + CONST64(0x02f3f2f6f401f703), CONST64(0x1cdbd5edf10ee312), CONST64(0x5fd475cb94a16afe), CONST64(0x3a5845310b1d2c27), + CONST64(0x686b5f8fe734bb5c), CONST64(0x238f1056759fc9bc), CONST64(0x582b07b7ef2c9b74), CONST64(0xb8bde18c345cd0e4), + CONST64(0xa695c6973153c4f5), CONST64(0xc2ee8f16d46177a3), CONST64(0xdacea30ad06d67b7), CONST64(0x3344d3b5869722a4), + CONST64(0x19d755677e82e59b), CONST64(0xc901eb64adea8e23), CONST64(0x34bba1c9fd1ad32e), CONST64(0xf6552edf297ba48d), + CONST64(0xa09dcd903050c0f0), CONST64(0x9ac588a13b4decd7), CONST64(0x658c30fa9fbc46d9), CONST64(0x2a9386d2f815c73f), + CONST64(0xae7e2968c6573ff9), CONST64(0x6a98ad7913354c5f), CONST64(0x14303a12060a181e), CONST64(0x1e28271b050f1411), + CONST64(0xa4663461c55233f6), CONST64(0x6688bb7711334455), CONST64(0x2f9f06587799c1b6), CONST64(0x15c743697c84ed91), + CONST64(0x01f7797b7a8ef58f), CONST64(0x0de76f757888fd85), CONST64(0xb4adf782365ad8ee), CONST64(0x48e0c4541c24706c), + CONST64(0x96d59eaf394be4dd), CONST64(0xcbf2199259eb7920), CONST64(0x50c0e84818286078), CONST64(0xe98a70bf56fa4513), + CONST64(0x8df1393eb3c8f645), CONST64(0x87e92437b0cdfa4a), CONST64(0xd83d51fc246c90b4), CONST64(0xc01d7de0206080a0), + CONST64(0x8bf93239b2cbf240), CONST64(0x4be44fd992ab72e0), CONST64(0xed71894ea3f8b615), CONST64(0xba4e137ac05d27e7), + CONST64(0x851ad6c144cc0d49), CONST64(0x5137913362a695f7), CONST64(0x6080b07010304050), CONST64(0x9fc9082bb4c1ea5e), + CONST64(0x3f54c5bb84912aae), CONST64(0x9722e7d443c51152), CONST64(0x4dec44de93a876e5), CONST64(0xb65e0574c25b2fed), + CONST64(0xa16ab4eb4ade357f), CONST64(0xa9815b14bddace73), CONST64(0x050c808a8f8c0689), CONST64(0xee7502c32d77b499), + CONST64(0xaf895013bcd9ca76), CONST64(0x6f942df39cb94ad6), CONST64(0x6177c90b6abeb5df), CONST64(0x9d3afadd40c01d5d), + CONST64(0x98367a57cf4c1bd4), CONST64(0xeb798249a2fbb210), CONST64(0x2774e9a7809d3aba), CONST64(0xbf4293f04fd1216e), + CONST64(0x42f8d95d1f217c63), CONST64(0x861e5d4cca430fc5), CONST64(0xdb39da71aae39238), CONST64(0x912aecd342c61557), +}; + +static const ulong64 T5[256] = { + CONST64(0xb9bb016ad3ba68d2), CONST64(0x9ae5b166fc54194d), CONST64(0x65e2cd14712f93bc), CONST64(0x8725511b9c74b9cd), + CONST64(0xa2f7a457f5530251), CONST64(0xd6d003be68d3b86b), CONST64(0xded604b56bd2bd6f), CONST64(0x52b3fe85d74d6429), + CONST64(0xbafdad4af0500d5d), CONST64(0x09cf63e0e9ac268a), CONST64(0x1c0984968a8d830e), CONST64(0x91a51a4ddcbf79c6), + CONST64(0xa73d4d379070addd), CONST64(0xaaf1a35cf6520755), CONST64(0xa47be117b39ac852), CONST64(0x5ab5f98ed44c612d), + CONST64(0x0346ac2023ea658f), CONST64(0xe6c4118462d5a673), CONST64(0xcc55c268a497f166), CONST64(0xc6dc0da86ed1b263), + CONST64(0x85aa99d05533ffcc), CONST64(0xb2fbaa41f3510859), CONST64(0xe2c79c0fed5b2a71), CONST64(0x59f355aef7a604a2), + CONST64(0xbefe20c17fde815f), CONST64(0x7aade5a2d848753d), CONST64(0x29d77fcce5a8329a), CONST64(0xbc71e80ab699c75e), + CONST64(0x96e03be670db904b), CONST64(0x8dac9edb5632fac8), CONST64(0xd1952215c4b751e6), CONST64(0xb332ceaa19fc2bd7), + CONST64(0x4b70937338e348ab), CONST64(0x8463fd3bbf9edc42), CONST64(0xfc41d052ae91ef7e), CONST64(0xac7de61cb09bcd56), + CONST64(0x437694783be24daf), CONST64(0xb1bd0661d0bb6dd6), CONST64(0x329bdaf1c3415819), CONST64(0x577917e5b26ecba5), + CONST64(0x41f95cb3f2a50bae), CONST64(0x16804b5640cbc00b), CONST64(0x7f670cc2bd6bdab1), CONST64(0xdc59cc7ea295fb6e), + CONST64(0x61e1409ffea11fbe), CONST64(0xcb10e3c308f318eb), CONST64(0xe181302fceb14ffe), CONST64(0x100c0e1606020a08), + CONST64(0x2e925e6749ccdb17), CONST64(0x6ea2663f51c4f337), CONST64(0xe84e53cf271d6974), CONST64(0xa0786c9c3c144450), + CONST64(0x56b0730e58c3e82b), CONST64(0x3f57349aa563f291), CONST64(0x9ee63ced73da954f), CONST64(0xd2d38e35e75d3469), + CONST64(0xc2df8023e15f3e61), CONST64(0xaef22ed779dc8b57), CONST64(0xcf136e48877d94e9), CONST64(0x2694596c4acdde13), + CONST64(0xdf1f605e817f9ee1), CONST64(0xeac19b04ee5a2f75), CONST64(0x477519f3b46cc1ad), CONST64(0xdad5893ee45c316d), + CONST64(0xeb08ffef04f70cfb), CONST64(0x2dd4f2476a26be98), CONST64(0xab38c7b71cff24db), CONST64(0x3b54b9112aed7e93), + CONST64(0x134aa23625e86f87), CONST64(0x9c69f426ba9dd34e), CONST64(0x5f7f10eeb16fcea1), CONST64(0x04038d8b8f8e8c02), + CONST64(0xc8564fe32b197d64), CONST64(0x69e74794fda01aba), CONST64(0xd31aeade0df017e7), CONST64(0x3c1198ba8689971e), + CONST64(0x78222d69110f333c), CONST64(0x3812153109071b1c), CONST64(0x11c56afdecaf2986), CONST64(0x8b20db9b10fb30cb), + CONST64(0x4030385818082820), CONST64(0xa87e6b973f154154), CONST64(0x682e237f170d3934), CONST64(0x20181c2c0c041410), + CONST64(0x0806070b03010504), CONST64(0x074521abac64e98d), CONST64(0xb6f827ca7cdf845b), CONST64(0x97295f0d9a76b3c5), + CONST64(0xef0b72648b7980f9), CONST64(0xa6f429dc7add8e53), CONST64(0xf58eb3b2473dc9f4), CONST64(0xb074628a3a164e58), + CONST64(0xe582bda4413fc3fc), CONST64(0xa5b285fc5937ebdc), CONST64(0x4f731ef8b76dc4a9), CONST64(0xdd90a8954838d8e0), + CONST64(0xa1b10877d6b967de), CONST64(0xbf37442a9573a2d1), CONST64(0x1b4ca53d26e96a83), CONST64(0xb5be8bea5f35e1d4), + CONST64(0x92e3b66dff551c49), CONST64(0xaf3b4a3c9371a8d9), CONST64(0xff077c728d7b8af1), CONST64(0x140f839d898c860a), + CONST64(0xb73143219672a7d5), CONST64(0x34179fb18588921a), CONST64(0xe30ef8e407f609ff), CONST64(0x4dfcd6337e2a82a8), + CONST64(0xed84baaf423ec6f8), CONST64(0xcad98728e25e3b65), CONST64(0x25d2f54c6927bb9c), CONST64(0x0a89cfc0ca464305), + CONST64(0x60282474140c3c30), CONST64(0x0f4326a0af65ec89), CONST64(0x676d05dfb868d5bd), CONST64(0x2f5b3a8ca361f899), + CONST64(0x180a091d05030f0c), CONST64(0x46bc7d185ec1e223), CONST64(0x82efb87bf9571641), CONST64(0xfece189967d6a97f), + CONST64(0x86ec35f076d99a43), CONST64(0xfacd9512e858257d), CONST64(0x8eea32fb75d89f47), CONST64(0x17492fbdaa66e385), + CONST64(0xf6c81f9264d7ac7b), CONST64(0xcd9ca6834e3ad2e8), CONST64(0x0e8a424b45c8cf07), CONST64(0xfd88b4b9443cccf0), + CONST64(0x8326dc9013fa35cf), CONST64(0xc453c563a796f462), CONST64(0x51f552a5f4a701a6), CONST64(0xb477ef01b598c25a), + CONST64(0x3352be1a29ec7b97), CONST64(0xa9b70f7cd5b862da), CONST64(0x76a86f2254c7fc3b), CONST64(0x19c36df6efae2c82), + CONST64(0x6f6b02d4bb69d0b9), CONST64(0x62a7ecbfdd4b7a31), CONST64(0x31dd76d1e0ab3d96), CONST64(0x21d178c7e6a9379e), + CONST64(0x1f4f28b6a967e681), CONST64(0x503c364e1e0a2228), CONST64(0x028fc8cbc9474601), CONST64(0xc316e4c80bf21def), + CONST64(0xc1992c03c2b55bee), CONST64(0x0dccee6b6622aa88), CONST64(0x7b64814932e556b3), CONST64(0x235eb00c2fee719f), + CONST64(0x99a31d46dfbe7cc2), CONST64(0x45fad1387d2b87ac), CONST64(0x7c21a0e29e81bf3e), CONST64(0x906c7ea636125a48), + CONST64(0x6c2daef49883b536), CONST64(0xd85a41f52d1b776c), CONST64(0x70242a62120e3638), CONST64(0x05cae9606523af8c), + CONST64(0xfb04f1f902f506f3), CONST64(0x1283c6ddcf454c09), CONST64(0x15c6e7766321a584), CONST64(0x3e9e50714fced11f), + CONST64(0x72abe2a9db497039), CONST64(0x7de8c409742c9cb0), CONST64(0x9b2cd58d16f93ac3), CONST64(0x636e885437e659bf), + CONST64(0xd993251ec7b654e2), CONST64(0x5df0d825782888a0), CONST64(0xb872658139174b5c), CONST64(0x642ba9ff9b82b032), + CONST64(0xd05c46fe2e1a7268), CONST64(0x2c1d96ac808b9d16), CONST64(0xa33ec0bc1ffe21df), CONST64(0x241b91a7838a9812), + CONST64(0x48363f531b092d24), CONST64(0x068c454046c9ca03), CONST64(0x4c35b2d89487a126), CONST64(0x4ab9f798d24e6b25), + CONST64(0x5b7c9d653ee142a3), CONST64(0x6de4ca1f722e96b8), CONST64(0x7362864231e453b7), CONST64(0x537a9a6e3de047a7), + CONST64(0x0b40ab2b20eb608b), CONST64(0xf447d759ad90ea7a), CONST64(0x49ff5bb8f1a40eaa), CONST64(0xf0445ad2221e6678), + CONST64(0x5c39bcce9285ab2e), CONST64(0x275d3d87a060fd9d), CONST64(0x0000000000000000), CONST64(0x35defb5a6f25b194), + CONST64(0xf302f6f201f403f7), CONST64(0xdb1cedd50ef112e3), CONST64(0xd45fcb75a194fe6a), CONST64(0x583a31451d0b272c), + CONST64(0x6b688f5f34e75cbb), CONST64(0x8f2356109f75bcc9), CONST64(0x2b58b7072cef749b), CONST64(0xbdb88ce15c34e4d0), + CONST64(0x95a697c65331f5c4), CONST64(0xeec2168f61d4a377), CONST64(0xceda0aa36dd0b767), CONST64(0x4433b5d39786a422), + CONST64(0xd7196755827e9be5), CONST64(0x01c964ebeaad238e), CONST64(0xbb34c9a11afd2ed3), CONST64(0x55f6df2e7b298da4), + CONST64(0x9da090cd5030f0c0), CONST64(0xc59aa1884d3bd7ec), CONST64(0x8c65fa30bc9fd946), CONST64(0x932ad28615f83fc7), + CONST64(0x7eae682957c6f93f), CONST64(0x986a79ad35135f4c), CONST64(0x3014123a0a061e18), CONST64(0x281e1b270f051114), + CONST64(0x66a4613452c5f633), CONST64(0x886677bb33115544), CONST64(0x9f2f58069977b6c1), CONST64(0xc7156943847c91ed), + CONST64(0xf7017b798e7a8ff5), CONST64(0xe70d756f887885fd), CONST64(0xadb482f75a36eed8), CONST64(0xe04854c4241c6c70), + CONST64(0xd596af9e4b39dde4), CONST64(0xf2cb9219eb592079), CONST64(0xc05048e828187860), CONST64(0x8ae9bf70fa561345), + CONST64(0xf18d3e39c8b345f6), CONST64(0xe9873724cdb04afa), CONST64(0x3dd8fc516c24b490), CONST64(0x1dc0e07d6020a080), + CONST64(0xf98b3932cbb240f2), CONST64(0xe44bd94fab92e072), CONST64(0x71ed4e89f8a315b6), CONST64(0x4eba7a135dc0e727), + CONST64(0x1a85c1d6cc44490d), CONST64(0x37513391a662f795), CONST64(0x806070b030105040), CONST64(0xc99f2b08c1b45eea), + CONST64(0x543fbbc59184ae2a), CONST64(0x2297d4e7c5435211), CONST64(0xec4dde44a893e576), CONST64(0x5eb674055bc2ed2f), + CONST64(0x6aa1ebb4de4a7f35), CONST64(0x81a9145bdabd73ce), CONST64(0x0c058a808c8f8906), CONST64(0x75eec302772d99b4), + CONST64(0x89af1350d9bc76ca), CONST64(0x946ff32db99cd64a), CONST64(0x77610bc9be6adfb5), CONST64(0x3a9dddfac0405d1d), + CONST64(0x3698577a4ccfd41b), CONST64(0x79eb4982fba210b2), CONST64(0x7427a7e99d80ba3a), CONST64(0x42bff093d14f6e21), + CONST64(0xf8425dd9211f637c), CONST64(0x1e864c5d43cac50f), CONST64(0x39db71dae3aa3892), CONST64(0x2a91d3ecc6425715), +}; + +static const ulong64 T6[256] = { + CONST64(0x6a01bbb9d268bad3), CONST64(0x66b1e59a4d1954fc), CONST64(0x14cde265bc932f71), CONST64(0x1b512587cdb9749c), + CONST64(0x57a4f7a2510253f5), CONST64(0xbe03d0d66bb8d368), CONST64(0xb504d6de6fbdd26b), CONST64(0x85feb35229644dd7), + CONST64(0x4aadfdba5d0d50f0), CONST64(0xe063cf098a26ace9), CONST64(0x9684091c0e838d8a), CONST64(0x4d1aa591c679bfdc), + CONST64(0x374d3da7ddad7090), CONST64(0x5ca3f1aa550752f6), CONST64(0x17e17ba452c89ab3), CONST64(0x8ef9b55a2d614cd4), + CONST64(0x20ac46038f65ea23), CONST64(0x8411c4e673a6d562), CONST64(0x68c255cc66f197a4), CONST64(0xa80ddcc663b2d16e), + CONST64(0xd099aa85ccff3355), CONST64(0x41aafbb2590851f3), CONST64(0x0f9cc7e2712a5bed), CONST64(0xae55f359a204a6f7), + CONST64(0xc120febe5f81de7f), CONST64(0xa2e5ad7a3d7548d8), CONST64(0xcc7fd7299a32a8e5), CONST64(0x0ae871bc5ec799b6), + CONST64(0xe63be0964b90db70), CONST64(0xdb9eac8dc8fa3256), CONST64(0x152295d1e651b7c4), CONST64(0xaace32b3d72bfc19), + CONST64(0x7393704bab48e338), CONST64(0x3bfd638442dc9ebf), CONST64(0x52d041fc7eef91ae), CONST64(0x1ce67dac56cd9bb0), + CONST64(0x78947643af4de23b), CONST64(0x6106bdb1d66dbbd0), CONST64(0xf1da9b32195841c3), CONST64(0xe5177957a5cb6eb2), + CONST64(0xb35cf941ae0ba5f2), CONST64(0x564b80160bc0cb40), CONST64(0xc20c677fb1da6bbd), CONST64(0x7ecc59dc6efb95a2), + CONST64(0x9f40e161be1fa1fe), CONST64(0xc3e310cbeb18f308), CONST64(0x2f3081e1fe4fb1ce), CONST64(0x160e0c10080a0206), + CONST64(0x675e922e17dbcc49), CONST64(0x3f66a26e37f3c451), CONST64(0xcf534ee874691d27), CONST64(0x9c6c78a05044143c), + CONST64(0x0e73b0562be8c358), CONST64(0x9a34573f91f263a5), CONST64(0xed3ce69e4f95da73), CONST64(0x358ed3d269345de7), + CONST64(0x2380dfc2613e5fe1), CONST64(0xd72ef2ae578bdc79), CONST64(0x486e13cfe9947d87), CONST64(0x6c59942613decd4a), + CONST64(0x5e601fdfe19e7f81), CONST64(0x049bc1ea752f5aee), CONST64(0xf3197547adc16cb4), CONST64(0x3e89d5da6d315ce4), + CONST64(0xefff08ebfb0cf704), CONST64(0x47f2d42d98be266a), CONST64(0xb7c738abdb24ff1c), CONST64(0x11b9543b937eed2a), + CONST64(0x36a24a13876fe825), CONST64(0x26f4699c4ed39dba), CONST64(0xee107f5fa1ce6fb1), CONST64(0x8b8d0304028c8e8f), + CONST64(0xe34f56c8647d192b), CONST64(0x9447e769ba1aa0fd), CONST64(0xdeea1ad3e717f00d), CONST64(0xba98113c1e978986), + CONST64(0x692d22783c330f11), CONST64(0x311512381c1b0709), CONST64(0xfd6ac5118629afec), CONST64(0x9bdb208bcb30fb10), + CONST64(0x5838304020280818), CONST64(0x976b7ea85441153f), CONST64(0x7f232e6834390d17), CONST64(0x2c1c18201014040c), + CONST64(0x0b07060804050103), CONST64(0xab2145078de964ac), CONST64(0xca27f8b65b84df7c), CONST64(0x0d5f2997c5b3769a), + CONST64(0x64720beff980798b), CONST64(0xdc29f4a6538edd7a), CONST64(0xb2b38ef5f4c93d47), CONST64(0x8a6274b0584e163a), + CONST64(0xa4bd82e5fcc33f41), CONST64(0xfc85b2a5dceb3759), CONST64(0xf81e734fa9c46db7), CONST64(0x95a890dde0d83848), + CONST64(0x7708b1a1de67b9d6), CONST64(0x2a4437bfd1a27395), CONST64(0x3da54c1b836ae926), CONST64(0xea8bbeb5d4e1355f), + CONST64(0x6db6e392491c55ff), CONST64(0x3c4a3bafd9a87193), CONST64(0x727c07fff18a7b8d), CONST64(0x9d830f140a868c89), + CONST64(0x214331b7d5a77296), CONST64(0xb19f17341a928885), CONST64(0xe4f80ee3ff09f607), CONST64(0x33d6fc4da8822a7e), + CONST64(0xafba84edf8c63e42), CONST64(0x2887d9ca653b5ee2), CONST64(0x4cf5d2259cbb2769), CONST64(0xc0cf890a054346ca), + CONST64(0x74242860303c0c14), CONST64(0xa026430f89ec65af), CONST64(0xdf056d67bdd568b8), CONST64(0x8c3a5b2f99f861a3), + CONST64(0x1d090a180c0f0305), CONST64(0x187dbc4623e2c15e), CONST64(0x7bb8ef82411657f9), CONST64(0x9918cefe7fa9d667), + CONST64(0xf035ec86439ad976), CONST64(0x1295cdfa7d2558e8), CONST64(0xfb32ea8e479fd875), CONST64(0xbd2f491785e366aa), + CONST64(0x921fc8f67bacd764), CONST64(0x83a69ccde8d23a4e), CONST64(0x4b428a0e07cfc845), CONST64(0xb9b488fdf0cc3c44), + CONST64(0x90dc2683cf35fa13), CONST64(0x63c553c462f496a7), CONST64(0xa552f551a601a7f4), CONST64(0x01ef77b45ac298b5), + CONST64(0x1abe5233977bec29), CONST64(0x7c0fb7a9da62b8d5), CONST64(0x226fa8763bfcc754), CONST64(0xf66dc319822caeef), + CONST64(0xd4026b6fb9d069bb), CONST64(0xbfeca762317a4bdd), CONST64(0xd176dd31963dabe0), CONST64(0xc778d1219e37a9e6), + CONST64(0xb6284f1f81e667a9), CONST64(0x4e363c5028220a1e), CONST64(0xcbc88f02014647c9), CONST64(0xc8e416c3ef1df20b), + CONST64(0x032c99c1ee5bb5c2), CONST64(0x6beecc0d88aa2266), CONST64(0x4981647bb356e532), CONST64(0x0cb05e239f71ee2f), + CONST64(0x461da399c27cbedf), CONST64(0x38d1fa45ac872b7d), CONST64(0xe2a0217c3ebf819e), CONST64(0xa67e6c90485a1236), + CONST64(0xf4ae2d6c36b58398), CONST64(0xf5415ad86c771b2d), CONST64(0x622a247038360e12), CONST64(0x60e9ca058caf2365), + CONST64(0xf9f104fbf306f502), CONST64(0xddc68312094c45cf), CONST64(0x76e7c61584a52163), CONST64(0x71509e3e1fd1ce4f), + CONST64(0xa9e2ab72397049db), CONST64(0x09c4e87db09c2c74), CONST64(0x8dd52c9bc33af916), CONST64(0x54886e63bf59e637), + CONST64(0x1e2593d9e254b6c7), CONST64(0x25d8f05da0882878), CONST64(0x816572b85c4b1739), CONST64(0xffa92b6432b0829b), + CONST64(0xfe465cd068721a2e), CONST64(0xac961d2c169d8b80), CONST64(0xbcc03ea3df21fe1f), CONST64(0xa7911b2412988a83), + CONST64(0x533f3648242d091b), CONST64(0x40458c0603cac946), CONST64(0xd8b2354c26a18794), CONST64(0x98f7b94a256b4ed2), + CONST64(0x659d7c5ba342e13e), CONST64(0x1fcae46db8962e72), CONST64(0x42866273b753e431), CONST64(0x6e9a7a53a747e03d), + CONST64(0x2bab400b8b60eb20), CONST64(0x59d747f47aea90ad), CONST64(0xb85bff49aa0ea4f1), CONST64(0xd25a44f078661e22), + CONST64(0xcebc395c2eab8592), CONST64(0x873d5d279dfd60a0), CONST64(0x0000000000000000), CONST64(0x5afbde3594b1256f), + CONST64(0xf2f602f3f703f401), CONST64(0xd5ed1cdbe312f10e), CONST64(0x75cb5fd46afe94a1), CONST64(0x45313a582c270b1d), + CONST64(0x5f8f686bbb5ce734), CONST64(0x1056238fc9bc759f), CONST64(0x07b7582b9b74ef2c), CONST64(0xe18cb8bdd0e4345c), + CONST64(0xc697a695c4f53153), CONST64(0x8f16c2ee77a3d461), CONST64(0xa30adace67b7d06d), CONST64(0xd3b5334422a48697), + CONST64(0x556719d7e59b7e82), CONST64(0xeb64c9018e23adea), CONST64(0xa1c934bbd32efd1a), CONST64(0x2edff655a48d297b), + CONST64(0xcd90a09dc0f03050), CONST64(0x88a19ac5ecd73b4d), CONST64(0x30fa658c46d99fbc), CONST64(0x86d22a93c73ff815), + CONST64(0x2968ae7e3ff9c657), CONST64(0xad796a984c5f1335), CONST64(0x3a121430181e060a), CONST64(0x271b1e281411050f), + CONST64(0x3461a46633f6c552), CONST64(0xbb77668844551133), CONST64(0x06582f9fc1b67799), CONST64(0x436915c7ed917c84), + CONST64(0x797b01f7f58f7a8e), CONST64(0x6f750de7fd857888), CONST64(0xf782b4add8ee365a), CONST64(0xc45448e0706c1c24), + CONST64(0x9eaf96d5e4dd394b), CONST64(0x1992cbf2792059eb), CONST64(0xe84850c060781828), CONST64(0x70bfe98a451356fa), + CONST64(0x393e8df1f645b3c8), CONST64(0x243787e9fa4ab0cd), CONST64(0x51fcd83d90b4246c), CONST64(0x7de0c01d80a02060), + CONST64(0x32398bf9f240b2cb), CONST64(0x4fd94be472e092ab), CONST64(0x894eed71b615a3f8), CONST64(0x137aba4e27e7c05d), + CONST64(0xd6c1851a0d4944cc), CONST64(0x9133513795f762a6), CONST64(0xb070608040501030), CONST64(0x082b9fc9ea5eb4c1), + CONST64(0xc5bb3f542aae8491), CONST64(0xe7d49722115243c5), CONST64(0x44de4dec76e593a8), CONST64(0x0574b65e2fedc25b), + CONST64(0xb4eba16a357f4ade), CONST64(0x5b14a981ce73bdda), CONST64(0x808a050c06898f8c), CONST64(0x02c3ee75b4992d77), + CONST64(0x5013af89ca76bcd9), CONST64(0x2df36f944ad69cb9), CONST64(0xc90b6177b5df6abe), CONST64(0xfadd9d3a1d5d40c0), + CONST64(0x7a5798361bd4cf4c), CONST64(0x8249eb79b210a2fb), CONST64(0xe9a727743aba809d), CONST64(0x93f0bf42216e4fd1), + CONST64(0xd95d42f87c631f21), CONST64(0x5d4c861e0fc5ca43), CONST64(0xda71db399238aae3), CONST64(0xecd3912a155742c6), +}; + +static const ulong64 T7[256] = { + CONST64(0x016ab9bb68d2d3ba), CONST64(0xb1669ae5194dfc54), CONST64(0xcd1465e293bc712f), CONST64(0x511b8725b9cd9c74), + CONST64(0xa457a2f70251f553), CONST64(0x03bed6d0b86b68d3), CONST64(0x04b5ded6bd6f6bd2), CONST64(0xfe8552b36429d74d), + CONST64(0xad4abafd0d5df050), CONST64(0x63e009cf268ae9ac), CONST64(0x84961c09830e8a8d), CONST64(0x1a4d91a579c6dcbf), + CONST64(0x4d37a73daddd9070), CONST64(0xa35caaf10755f652), CONST64(0xe117a47bc852b39a), CONST64(0xf98e5ab5612dd44c), + CONST64(0xac200346658f23ea), CONST64(0x1184e6c4a67362d5), CONST64(0xc268cc55f166a497), CONST64(0x0da8c6dcb2636ed1), + CONST64(0x99d085aaffcc5533), CONST64(0xaa41b2fb0859f351), CONST64(0x9c0fe2c72a71ed5b), CONST64(0x55ae59f304a2f7a6), + CONST64(0x20c1befe815f7fde), CONST64(0xe5a27aad753dd848), CONST64(0x7fcc29d7329ae5a8), CONST64(0xe80abc71c75eb699), + CONST64(0x3be696e0904b70db), CONST64(0x9edb8dacfac85632), CONST64(0x2215d19551e6c4b7), CONST64(0xceaab3322bd719fc), + CONST64(0x93734b7048ab38e3), CONST64(0xfd3b8463dc42bf9e), CONST64(0xd052fc41ef7eae91), CONST64(0xe61cac7dcd56b09b), + CONST64(0x947843764daf3be2), CONST64(0x0661b1bd6dd6d0bb), CONST64(0xdaf1329b5819c341), CONST64(0x17e55779cba5b26e), + CONST64(0x5cb341f90baef2a5), CONST64(0x4b561680c00b40cb), CONST64(0x0cc27f67dab1bd6b), CONST64(0xcc7edc59fb6ea295), + CONST64(0x409f61e11fbefea1), CONST64(0xe3c3cb1018eb08f3), CONST64(0x302fe1814ffeceb1), CONST64(0x0e16100c0a080602), + CONST64(0x5e672e92db1749cc), CONST64(0x663f6ea2f33751c4), CONST64(0x53cfe84e6974271d), CONST64(0x6c9ca07844503c14), + CONST64(0x730e56b0e82b58c3), CONST64(0x349a3f57f291a563), CONST64(0x3ced9ee6954f73da), CONST64(0x8e35d2d33469e75d), + CONST64(0x8023c2df3e61e15f), CONST64(0x2ed7aef28b5779dc), CONST64(0x6e48cf1394e9877d), CONST64(0x596c2694de134acd), + CONST64(0x605edf1f9ee1817f), CONST64(0x9b04eac12f75ee5a), CONST64(0x19f34775c1adb46c), CONST64(0x893edad5316de45c), + CONST64(0xffefeb080cfb04f7), CONST64(0xf2472dd4be986a26), CONST64(0xc7b7ab3824db1cff), CONST64(0xb9113b547e932aed), + CONST64(0xa236134a6f8725e8), CONST64(0xf4269c69d34eba9d), CONST64(0x10ee5f7fcea1b16f), CONST64(0x8d8b04038c028f8e), + CONST64(0x4fe3c8567d642b19), CONST64(0x479469e71abafda0), CONST64(0xeaded31a17e70df0), CONST64(0x98ba3c11971e8689), + CONST64(0x2d697822333c110f), CONST64(0x153138121b1c0907), CONST64(0x6afd11c52986ecaf), CONST64(0xdb9b8b2030cb10fb), + CONST64(0x3858403028201808), CONST64(0x6b97a87e41543f15), CONST64(0x237f682e3934170d), CONST64(0x1c2c201814100c04), + CONST64(0x070b080605040301), CONST64(0x21ab0745e98dac64), CONST64(0x27cab6f8845b7cdf), CONST64(0x5f0d9729b3c59a76), + CONST64(0x7264ef0b80f98b79), CONST64(0x29dca6f48e537add), CONST64(0xb3b2f58ec9f4473d), CONST64(0x628ab0744e583a16), + CONST64(0xbda4e582c3fc413f), CONST64(0x85fca5b2ebdc5937), CONST64(0x1ef84f73c4a9b76d), CONST64(0xa895dd90d8e04838), + CONST64(0x0877a1b167ded6b9), CONST64(0x442abf37a2d19573), CONST64(0xa53d1b4c6a8326e9), CONST64(0x8beab5bee1d45f35), + CONST64(0xb66d92e31c49ff55), CONST64(0x4a3caf3ba8d99371), CONST64(0x7c72ff078af18d7b), CONST64(0x839d140f860a898c), + CONST64(0x4321b731a7d59672), CONST64(0x9fb13417921a8588), CONST64(0xf8e4e30e09ff07f6), CONST64(0xd6334dfc82a87e2a), + CONST64(0xbaafed84c6f8423e), CONST64(0x8728cad93b65e25e), CONST64(0xf54c25d2bb9c6927), CONST64(0xcfc00a894305ca46), + CONST64(0x247460283c30140c), CONST64(0x26a00f43ec89af65), CONST64(0x05df676dd5bdb868), CONST64(0x3a8c2f5bf899a361), + CONST64(0x091d180a0f0c0503), CONST64(0x7d1846bce2235ec1), CONST64(0xb87b82ef1641f957), CONST64(0x1899fecea97f67d6), + CONST64(0x35f086ec9a4376d9), CONST64(0x9512facd257de858), CONST64(0x32fb8eea9f4775d8), CONST64(0x2fbd1749e385aa66), + CONST64(0x1f92f6c8ac7b64d7), CONST64(0xa683cd9cd2e84e3a), CONST64(0x424b0e8acf0745c8), CONST64(0xb4b9fd88ccf0443c), + CONST64(0xdc90832635cf13fa), CONST64(0xc563c453f462a796), CONST64(0x52a551f501a6f4a7), CONST64(0xef01b477c25ab598), + CONST64(0xbe1a33527b9729ec), CONST64(0x0f7ca9b762dad5b8), CONST64(0x6f2276a8fc3b54c7), CONST64(0x6df619c32c82efae), + CONST64(0x02d46f6bd0b9bb69), CONST64(0xecbf62a77a31dd4b), CONST64(0x76d131dd3d96e0ab), CONST64(0x78c721d1379ee6a9), + CONST64(0x28b61f4fe681a967), CONST64(0x364e503c22281e0a), CONST64(0xc8cb028f4601c947), CONST64(0xe4c8c3161def0bf2), + CONST64(0x2c03c1995beec2b5), CONST64(0xee6b0dccaa886622), CONST64(0x81497b6456b332e5), CONST64(0xb00c235e719f2fee), + CONST64(0x1d4699a37cc2dfbe), CONST64(0xd13845fa87ac7d2b), CONST64(0xa0e27c21bf3e9e81), CONST64(0x7ea6906c5a483612), + CONST64(0xaef46c2db5369883), CONST64(0x41f5d85a776c2d1b), CONST64(0x2a6270243638120e), CONST64(0xe96005caaf8c6523), + CONST64(0xf1f9fb0406f302f5), CONST64(0xc6dd12834c09cf45), CONST64(0xe77615c6a5846321), CONST64(0x50713e9ed11f4fce), + CONST64(0xe2a972ab7039db49), CONST64(0xc4097de89cb0742c), CONST64(0xd58d9b2c3ac316f9), CONST64(0x8854636e59bf37e6), + CONST64(0x251ed99354e2c7b6), CONST64(0xd8255df088a07828), CONST64(0x6581b8724b5c3917), CONST64(0xa9ff642bb0329b82), + CONST64(0x46fed05c72682e1a), CONST64(0x96ac2c1d9d16808b), CONST64(0xc0bca33e21df1ffe), CONST64(0x91a7241b9812838a), + CONST64(0x3f5348362d241b09), CONST64(0x4540068cca0346c9), CONST64(0xb2d84c35a1269487), CONST64(0xf7984ab96b25d24e), + CONST64(0x9d655b7c42a33ee1), CONST64(0xca1f6de496b8722e), CONST64(0x8642736253b731e4), CONST64(0x9a6e537a47a73de0), + CONST64(0xab2b0b40608b20eb), CONST64(0xd759f447ea7aad90), CONST64(0x5bb849ff0eaaf1a4), CONST64(0x5ad2f0446678221e), + CONST64(0xbcce5c39ab2e9285), CONST64(0x3d87275dfd9da060), CONST64(0x0000000000000000), CONST64(0xfb5a35deb1946f25), + CONST64(0xf6f2f30203f701f4), CONST64(0xedd5db1c12e30ef1), CONST64(0xcb75d45ffe6aa194), CONST64(0x3145583a272c1d0b), + CONST64(0x8f5f6b685cbb34e7), CONST64(0x56108f23bcc99f75), CONST64(0xb7072b58749b2cef), CONST64(0x8ce1bdb8e4d05c34), + CONST64(0x97c695a6f5c45331), CONST64(0x168feec2a37761d4), CONST64(0x0aa3cedab7676dd0), CONST64(0xb5d34433a4229786), + CONST64(0x6755d7199be5827e), CONST64(0x64eb01c9238eeaad), CONST64(0xc9a1bb342ed31afd), CONST64(0xdf2e55f68da47b29), + CONST64(0x90cd9da0f0c05030), CONST64(0xa188c59ad7ec4d3b), CONST64(0xfa308c65d946bc9f), CONST64(0xd286932a3fc715f8), + CONST64(0x68297eaef93f57c6), CONST64(0x79ad986a5f4c3513), CONST64(0x123a30141e180a06), CONST64(0x1b27281e11140f05), + CONST64(0x613466a4f63352c5), CONST64(0x77bb886655443311), CONST64(0x58069f2fb6c19977), CONST64(0x6943c71591ed847c), + CONST64(0x7b79f7018ff58e7a), CONST64(0x756fe70d85fd8878), CONST64(0x82f7adb4eed85a36), CONST64(0x54c4e0486c70241c), + CONST64(0xaf9ed596dde44b39), CONST64(0x9219f2cb2079eb59), CONST64(0x48e8c05078602818), CONST64(0xbf708ae91345fa56), + CONST64(0x3e39f18d45f6c8b3), CONST64(0x3724e9874afacdb0), CONST64(0xfc513dd8b4906c24), CONST64(0xe07d1dc0a0806020), + CONST64(0x3932f98b40f2cbb2), CONST64(0xd94fe44be072ab92), CONST64(0x4e8971ed15b6f8a3), CONST64(0x7a134ebae7275dc0), + CONST64(0xc1d61a85490dcc44), CONST64(0x33913751f795a662), CONST64(0x70b0806050403010), CONST64(0x2b08c99f5eeac1b4), + CONST64(0xbbc5543fae2a9184), CONST64(0xd4e722975211c543), CONST64(0xde44ec4de576a893), CONST64(0x74055eb6ed2f5bc2), + CONST64(0xebb46aa17f35de4a), CONST64(0x145b81a973cedabd), CONST64(0x8a800c0589068c8f), CONST64(0xc30275ee99b4772d), + CONST64(0x135089af76cad9bc), CONST64(0xf32d946fd64ab99c), CONST64(0x0bc97761dfb5be6a), CONST64(0xddfa3a9d5d1dc040), + CONST64(0x577a3698d41b4ccf), CONST64(0x498279eb10b2fba2), CONST64(0xa7e97427ba3a9d80), CONST64(0xf09342bf6e21d14f), + CONST64(0x5dd9f842637c211f), CONST64(0x4c5d1e86c50f43ca), CONST64(0x71da39db3892e3aa), CONST64(0xd3ec2a915715c642), +}; + +static const ulong64 c[R + 1] = { + CONST64(0xba542f7453d3d24d), + CONST64(0x50ac8dbf70529a4c), + CONST64(0xead597d133515ba6), + CONST64(0xde48a899db32b7fc), + CONST64(0xe39e919be2bb416e), + CONST64(0xa5cb6b95a1f3b102), + CONST64(0xccc41d14c363da5d), + CONST64(0x5fdc7dcd7f5a6c5c), + CONST64(0xf726ffede89d6f8e), +}; + + /** + Initialize the Khazad block cipher + @param key The symmetric key you wish to pass + @param keylen The key length in bytes + @param num_rounds The number of rounds desired (0 for default) + @param skey The key in as scheduled by this function. + @return CRYPT_OK if successful + */ +int khazad_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +{ + int r; + const ulong64 *S; + ulong64 K2, K1; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(skey != NULL); + if (keylen != 16) { + return CRYPT_INVALID_KEYSIZE; + } + if (num_rounds != 8 && num_rounds != 0) { + return CRYPT_INVALID_ROUNDS; + } + + /* use 7th table */ + S = T7; + + /* + * map unsigned char array cipher key to initial key state (mu): + */ + K2 = + ((ulong64)key[ 0] << 56) ^ + ((ulong64)key[ 1] << 48) ^ + ((ulong64)key[ 2] << 40) ^ + ((ulong64)key[ 3] << 32) ^ + ((ulong64)key[ 4] << 24) ^ + ((ulong64)key[ 5] << 16) ^ + ((ulong64)key[ 6] << 8) ^ + ((ulong64)key[ 7] ); + K1 = + ((ulong64)key[ 8] << 56) ^ + ((ulong64)key[ 9] << 48) ^ + ((ulong64)key[10] << 40) ^ + ((ulong64)key[11] << 32) ^ + ((ulong64)key[12] << 24) ^ + ((ulong64)key[13] << 16) ^ + ((ulong64)key[14] << 8) ^ + ((ulong64)key[15] ); + + /* + * compute the round keys: + */ + for (r = 0; r <= R; r++) { + /* + * K[r] = rho(c[r], K1) ^ K2; + */ + skey->khazad.roundKeyEnc[r] = + T0[(int)(K1 >> 56) ] ^ + T1[(int)(K1 >> 48) & 0xff] ^ + T2[(int)(K1 >> 40) & 0xff] ^ + T3[(int)(K1 >> 32) & 0xff] ^ + T4[(int)(K1 >> 24) & 0xff] ^ + T5[(int)(K1 >> 16) & 0xff] ^ + T6[(int)(K1 >> 8) & 0xff] ^ + T7[(int)(K1 ) & 0xff] ^ + c[r] ^ K2; + K2 = K1; K1 = skey->khazad.roundKeyEnc[r]; + } + /* + * compute the inverse key schedule: + * K'^0 = K^R, K'^R = K^0, K'^r = theta(K^{R-r}) + */ + skey->khazad.roundKeyDec[0] = skey->khazad.roundKeyEnc[R]; + for (r = 1; r < R; r++) { + K1 = skey->khazad.roundKeyEnc[R - r]; + skey->khazad.roundKeyDec[r] = + T0[(int)S[(int)(K1 >> 56) ] & 0xff] ^ + T1[(int)S[(int)(K1 >> 48) & 0xff] & 0xff] ^ + T2[(int)S[(int)(K1 >> 40) & 0xff] & 0xff] ^ + T3[(int)S[(int)(K1 >> 32) & 0xff] & 0xff] ^ + T4[(int)S[(int)(K1 >> 24) & 0xff] & 0xff] ^ + T5[(int)S[(int)(K1 >> 16) & 0xff] & 0xff] ^ + T6[(int)S[(int)(K1 >> 8) & 0xff] & 0xff] ^ + T7[(int)S[(int)(K1 ) & 0xff] & 0xff]; + } + skey->khazad.roundKeyDec[R] = skey->khazad.roundKeyEnc[0]; + + return CRYPT_OK; +} + +static void khazad_crypt(const unsigned char *plaintext, unsigned char *ciphertext, + const ulong64 *roundKey) { + int r; + ulong64 state; + /* + * map plaintext block to cipher state (mu) + * and add initial round key (sigma[K^0]): + */ + state = + ((ulong64)plaintext[0] << 56) ^ + ((ulong64)plaintext[1] << 48) ^ + ((ulong64)plaintext[2] << 40) ^ + ((ulong64)plaintext[3] << 32) ^ + ((ulong64)plaintext[4] << 24) ^ + ((ulong64)plaintext[5] << 16) ^ + ((ulong64)plaintext[6] << 8) ^ + ((ulong64)plaintext[7] ) ^ + roundKey[0]; + + /* + * R - 1 full rounds: + */ + for (r = 1; r < R; r++) { + state = + T0[(int)(state >> 56) ] ^ + T1[(int)(state >> 48) & 0xff] ^ + T2[(int)(state >> 40) & 0xff] ^ + T3[(int)(state >> 32) & 0xff] ^ + T4[(int)(state >> 24) & 0xff] ^ + T5[(int)(state >> 16) & 0xff] ^ + T6[(int)(state >> 8) & 0xff] ^ + T7[(int)(state ) & 0xff] ^ + roundKey[r]; + } + + /* + * last round: + */ + state = + (T0[(int)(state >> 56) ] & CONST64(0xff00000000000000)) ^ + (T1[(int)(state >> 48) & 0xff] & CONST64(0x00ff000000000000)) ^ + (T2[(int)(state >> 40) & 0xff] & CONST64(0x0000ff0000000000)) ^ + (T3[(int)(state >> 32) & 0xff] & CONST64(0x000000ff00000000)) ^ + (T4[(int)(state >> 24) & 0xff] & CONST64(0x00000000ff000000)) ^ + (T5[(int)(state >> 16) & 0xff] & CONST64(0x0000000000ff0000)) ^ + (T6[(int)(state >> 8) & 0xff] & CONST64(0x000000000000ff00)) ^ + (T7[(int)(state ) & 0xff] & CONST64(0x00000000000000ff)) ^ + roundKey[R]; + + /* + * map cipher state to ciphertext block (mu^{-1}): + */ + ciphertext[0] = (unsigned char)(state >> 56); + ciphertext[1] = (unsigned char)(state >> 48); + ciphertext[2] = (unsigned char)(state >> 40); + ciphertext[3] = (unsigned char)(state >> 32); + ciphertext[4] = (unsigned char)(state >> 24); + ciphertext[5] = (unsigned char)(state >> 16); + ciphertext[6] = (unsigned char)(state >> 8); + ciphertext[7] = (unsigned char)(state ); +} + +/** + Encrypts a block of text with Khazad + @param pt The input plaintext (8 bytes) + @param ct The output ciphertext (8 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +int khazad_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +{ + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + khazad_crypt(pt, ct, skey->khazad.roundKeyEnc); + return CRYPT_OK; +} + +/** + Decrypts a block of text with Khazad + @param ct The input ciphertext (8 bytes) + @param pt The output plaintext (8 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +int khazad_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +{ + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + khazad_crypt(ct, pt, skey->khazad.roundKeyDec); + return CRYPT_OK; +} + +/** + Performs a self-test of the Khazad block cipher + @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled +*/ +int khazad_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct test { + unsigned char pt[8], ct[8], key[16]; + } tests[] = { +{ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x49, 0xA4, 0xCE, 0x32, 0xAC, 0x19, 0x0E, 0x3F }, + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } +}, { + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x64, 0x5D, 0x77, 0x3E, 0x40, 0xAB, 0xDD, 0x53 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 } +}, { + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x9E, 0x39, 0x98, 0x64, 0xF7, 0x8E, 0xCA, 0x02 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } +}, { + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, + { 0xA9, 0xDF, 0x3D, 0x2C, 0x64, 0xD3, 0xEA, 0x28 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } +} +}; + int x, y; + unsigned char buf[2][8]; + symmetric_key skey; + + for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { + khazad_setup(tests[x].key, 16, 0, &skey); + khazad_ecb_encrypt(tests[x].pt, buf[0], &skey); + khazad_ecb_decrypt(buf[0], buf[1], &skey); + if (compare_testvector(buf[0], 8, tests[x].ct, 8, "Khazad Encrypt", x) || + compare_testvector(buf[1], 8, tests[x].pt, 8, "Khazad Decrypt", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + + for (y = 0; y < 1000; y++) khazad_ecb_encrypt(buf[0], buf[0], &skey); + for (y = 0; y < 1000; y++) khazad_ecb_decrypt(buf[0], buf[0], &skey); + if (compare_testvector(buf[0], 8, tests[x].ct, 8, "Khazad 1000", 1000)) { + return CRYPT_FAIL_TESTVECTOR; + } + + } + return CRYPT_OK; +#endif +} + +/** Terminate the context + @param skey The scheduled key +*/ +void khazad_done(symmetric_key *skey) +{ + LTC_UNUSED_PARAM(skey); +} + +/** + Gets suitable key size + @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. + @return CRYPT_OK if the input key size is acceptable. +*/ +int khazad_keysize(int *keysize) +{ + LTC_ARGCHK(keysize != NULL); + if (*keysize >= 16) { + *keysize = 16; + return CRYPT_OK; + } else { + return CRYPT_INVALID_KEYSIZE; + } +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/ciphers/kseed.c b/fsbl/lib/libtomcrypt/src/ciphers/kseed.c new file mode 100644 index 000000000..e12fdc7f5 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/ciphers/kseed.c @@ -0,0 +1,376 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file kseed.c + seed implementation of SEED derived from RFC4269 + Tom St Denis +*/ + +#include "tomcrypt.h" + +#ifdef LTC_KSEED + +const struct ltc_cipher_descriptor kseed_desc = { + "seed", + 20, + 16, 16, 16, 16, + &kseed_setup, + &kseed_ecb_encrypt, + &kseed_ecb_decrypt, + &kseed_test, + &kseed_done, + &kseed_keysize, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + +static const ulong32 SS0[256] = { +0x2989A1A8UL,0x05858184UL,0x16C6D2D4UL,0x13C3D3D0UL,0x14445054UL,0x1D0D111CUL,0x2C8CA0ACUL,0x25052124UL, +0x1D4D515CUL,0x03434340UL,0x18081018UL,0x1E0E121CUL,0x11415150UL,0x3CCCF0FCUL,0x0ACAC2C8UL,0x23436360UL, +0x28082028UL,0x04444044UL,0x20002020UL,0x1D8D919CUL,0x20C0E0E0UL,0x22C2E2E0UL,0x08C8C0C8UL,0x17071314UL, +0x2585A1A4UL,0x0F8F838CUL,0x03030300UL,0x3B4B7378UL,0x3B8BB3B8UL,0x13031310UL,0x12C2D2D0UL,0x2ECEE2ECUL, +0x30407070UL,0x0C8C808CUL,0x3F0F333CUL,0x2888A0A8UL,0x32023230UL,0x1DCDD1DCUL,0x36C6F2F4UL,0x34447074UL, +0x2CCCE0ECUL,0x15859194UL,0x0B0B0308UL,0x17475354UL,0x1C4C505CUL,0x1B4B5358UL,0x3D8DB1BCUL,0x01010100UL, +0x24042024UL,0x1C0C101CUL,0x33437370UL,0x18889098UL,0x10001010UL,0x0CCCC0CCUL,0x32C2F2F0UL,0x19C9D1D8UL, +0x2C0C202CUL,0x27C7E3E4UL,0x32427270UL,0x03838380UL,0x1B8B9398UL,0x11C1D1D0UL,0x06868284UL,0x09C9C1C8UL, +0x20406060UL,0x10405050UL,0x2383A3A0UL,0x2BCBE3E8UL,0x0D0D010CUL,0x3686B2B4UL,0x1E8E929CUL,0x0F4F434CUL, +0x3787B3B4UL,0x1A4A5258UL,0x06C6C2C4UL,0x38487078UL,0x2686A2A4UL,0x12021210UL,0x2F8FA3ACUL,0x15C5D1D4UL, +0x21416160UL,0x03C3C3C0UL,0x3484B0B4UL,0x01414140UL,0x12425250UL,0x3D4D717CUL,0x0D8D818CUL,0x08080008UL, +0x1F0F131CUL,0x19899198UL,0x00000000UL,0x19091118UL,0x04040004UL,0x13435350UL,0x37C7F3F4UL,0x21C1E1E0UL, +0x3DCDF1FCUL,0x36467274UL,0x2F0F232CUL,0x27072324UL,0x3080B0B0UL,0x0B8B8388UL,0x0E0E020CUL,0x2B8BA3A8UL, +0x2282A2A0UL,0x2E4E626CUL,0x13839390UL,0x0D4D414CUL,0x29496168UL,0x3C4C707CUL,0x09090108UL,0x0A0A0208UL, +0x3F8FB3BCUL,0x2FCFE3ECUL,0x33C3F3F0UL,0x05C5C1C4UL,0x07878384UL,0x14041014UL,0x3ECEF2FCUL,0x24446064UL, +0x1ECED2DCUL,0x2E0E222CUL,0x0B4B4348UL,0x1A0A1218UL,0x06060204UL,0x21012120UL,0x2B4B6368UL,0x26466264UL, +0x02020200UL,0x35C5F1F4UL,0x12829290UL,0x0A8A8288UL,0x0C0C000CUL,0x3383B3B0UL,0x3E4E727CUL,0x10C0D0D0UL, +0x3A4A7278UL,0x07474344UL,0x16869294UL,0x25C5E1E4UL,0x26062224UL,0x00808080UL,0x2D8DA1ACUL,0x1FCFD3DCUL, +0x2181A1A0UL,0x30003030UL,0x37073334UL,0x2E8EA2ACUL,0x36063234UL,0x15051114UL,0x22022220UL,0x38083038UL, +0x34C4F0F4UL,0x2787A3A4UL,0x05454144UL,0x0C4C404CUL,0x01818180UL,0x29C9E1E8UL,0x04848084UL,0x17879394UL, +0x35053134UL,0x0BCBC3C8UL,0x0ECEC2CCUL,0x3C0C303CUL,0x31417170UL,0x11011110UL,0x07C7C3C4UL,0x09898188UL, +0x35457174UL,0x3BCBF3F8UL,0x1ACAD2D8UL,0x38C8F0F8UL,0x14849094UL,0x19495158UL,0x02828280UL,0x04C4C0C4UL, +0x3FCFF3FCUL,0x09494148UL,0x39093138UL,0x27476364UL,0x00C0C0C0UL,0x0FCFC3CCUL,0x17C7D3D4UL,0x3888B0B8UL, +0x0F0F030CUL,0x0E8E828CUL,0x02424240UL,0x23032320UL,0x11819190UL,0x2C4C606CUL,0x1BCBD3D8UL,0x2484A0A4UL, +0x34043034UL,0x31C1F1F0UL,0x08484048UL,0x02C2C2C0UL,0x2F4F636CUL,0x3D0D313CUL,0x2D0D212CUL,0x00404040UL, +0x3E8EB2BCUL,0x3E0E323CUL,0x3C8CB0BCUL,0x01C1C1C0UL,0x2A8AA2A8UL,0x3A8AB2B8UL,0x0E4E424CUL,0x15455154UL, +0x3B0B3338UL,0x1CCCD0DCUL,0x28486068UL,0x3F4F737CUL,0x1C8C909CUL,0x18C8D0D8UL,0x0A4A4248UL,0x16465254UL, +0x37477374UL,0x2080A0A0UL,0x2DCDE1ECUL,0x06464244UL,0x3585B1B4UL,0x2B0B2328UL,0x25456164UL,0x3ACAF2F8UL, +0x23C3E3E0UL,0x3989B1B8UL,0x3181B1B0UL,0x1F8F939CUL,0x1E4E525CUL,0x39C9F1F8UL,0x26C6E2E4UL,0x3282B2B0UL, +0x31013130UL,0x2ACAE2E8UL,0x2D4D616CUL,0x1F4F535CUL,0x24C4E0E4UL,0x30C0F0F0UL,0x0DCDC1CCUL,0x08888088UL, +0x16061214UL,0x3A0A3238UL,0x18485058UL,0x14C4D0D4UL,0x22426260UL,0x29092128UL,0x07070304UL,0x33033330UL, +0x28C8E0E8UL,0x1B0B1318UL,0x05050104UL,0x39497178UL,0x10809090UL,0x2A4A6268UL,0x2A0A2228UL,0x1A8A9298UL +}; + +static const ulong32 SS1[256] = { +0x38380830UL,0xE828C8E0UL,0x2C2D0D21UL,0xA42686A2UL,0xCC0FCFC3UL,0xDC1ECED2UL,0xB03383B3UL,0xB83888B0UL, +0xAC2F8FA3UL,0x60204060UL,0x54154551UL,0xC407C7C3UL,0x44044440UL,0x6C2F4F63UL,0x682B4B63UL,0x581B4B53UL, +0xC003C3C3UL,0x60224262UL,0x30330333UL,0xB43585B1UL,0x28290921UL,0xA02080A0UL,0xE022C2E2UL,0xA42787A3UL, +0xD013C3D3UL,0x90118191UL,0x10110111UL,0x04060602UL,0x1C1C0C10UL,0xBC3C8CB0UL,0x34360632UL,0x480B4B43UL, +0xEC2FCFE3UL,0x88088880UL,0x6C2C4C60UL,0xA82888A0UL,0x14170713UL,0xC404C4C0UL,0x14160612UL,0xF434C4F0UL, +0xC002C2C2UL,0x44054541UL,0xE021C1E1UL,0xD416C6D2UL,0x3C3F0F33UL,0x3C3D0D31UL,0x8C0E8E82UL,0x98188890UL, +0x28280820UL,0x4C0E4E42UL,0xF436C6F2UL,0x3C3E0E32UL,0xA42585A1UL,0xF839C9F1UL,0x0C0D0D01UL,0xDC1FCFD3UL, +0xD818C8D0UL,0x282B0B23UL,0x64264662UL,0x783A4A72UL,0x24270723UL,0x2C2F0F23UL,0xF031C1F1UL,0x70324272UL, +0x40024242UL,0xD414C4D0UL,0x40014141UL,0xC000C0C0UL,0x70334373UL,0x64274763UL,0xAC2C8CA0UL,0x880B8B83UL, +0xF437C7F3UL,0xAC2D8DA1UL,0x80008080UL,0x1C1F0F13UL,0xC80ACAC2UL,0x2C2C0C20UL,0xA82A8AA2UL,0x34340430UL, +0xD012C2D2UL,0x080B0B03UL,0xEC2ECEE2UL,0xE829C9E1UL,0x5C1D4D51UL,0x94148490UL,0x18180810UL,0xF838C8F0UL, +0x54174753UL,0xAC2E8EA2UL,0x08080800UL,0xC405C5C1UL,0x10130313UL,0xCC0DCDC1UL,0x84068682UL,0xB83989B1UL, +0xFC3FCFF3UL,0x7C3D4D71UL,0xC001C1C1UL,0x30310131UL,0xF435C5F1UL,0x880A8A82UL,0x682A4A62UL,0xB03181B1UL, +0xD011C1D1UL,0x20200020UL,0xD417C7D3UL,0x00020202UL,0x20220222UL,0x04040400UL,0x68284860UL,0x70314171UL, +0x04070703UL,0xD81BCBD3UL,0x9C1D8D91UL,0x98198991UL,0x60214161UL,0xBC3E8EB2UL,0xE426C6E2UL,0x58194951UL, +0xDC1DCDD1UL,0x50114151UL,0x90108090UL,0xDC1CCCD0UL,0x981A8A92UL,0xA02383A3UL,0xA82B8BA3UL,0xD010C0D0UL, +0x80018181UL,0x0C0F0F03UL,0x44074743UL,0x181A0A12UL,0xE023C3E3UL,0xEC2CCCE0UL,0x8C0D8D81UL,0xBC3F8FB3UL, +0x94168692UL,0x783B4B73UL,0x5C1C4C50UL,0xA02282A2UL,0xA02181A1UL,0x60234363UL,0x20230323UL,0x4C0D4D41UL, +0xC808C8C0UL,0x9C1E8E92UL,0x9C1C8C90UL,0x383A0A32UL,0x0C0C0C00UL,0x2C2E0E22UL,0xB83A8AB2UL,0x6C2E4E62UL, +0x9C1F8F93UL,0x581A4A52UL,0xF032C2F2UL,0x90128292UL,0xF033C3F3UL,0x48094941UL,0x78384870UL,0xCC0CCCC0UL, +0x14150511UL,0xF83BCBF3UL,0x70304070UL,0x74354571UL,0x7C3F4F73UL,0x34350531UL,0x10100010UL,0x00030303UL, +0x64244460UL,0x6C2D4D61UL,0xC406C6C2UL,0x74344470UL,0xD415C5D1UL,0xB43484B0UL,0xE82ACAE2UL,0x08090901UL, +0x74364672UL,0x18190911UL,0xFC3ECEF2UL,0x40004040UL,0x10120212UL,0xE020C0E0UL,0xBC3D8DB1UL,0x04050501UL, +0xF83ACAF2UL,0x00010101UL,0xF030C0F0UL,0x282A0A22UL,0x5C1E4E52UL,0xA82989A1UL,0x54164652UL,0x40034343UL, +0x84058581UL,0x14140410UL,0x88098981UL,0x981B8B93UL,0xB03080B0UL,0xE425C5E1UL,0x48084840UL,0x78394971UL, +0x94178793UL,0xFC3CCCF0UL,0x1C1E0E12UL,0x80028282UL,0x20210121UL,0x8C0C8C80UL,0x181B0B13UL,0x5C1F4F53UL, +0x74374773UL,0x54144450UL,0xB03282B2UL,0x1C1D0D11UL,0x24250521UL,0x4C0F4F43UL,0x00000000UL,0x44064642UL, +0xEC2DCDE1UL,0x58184850UL,0x50124252UL,0xE82BCBE3UL,0x7C3E4E72UL,0xD81ACAD2UL,0xC809C9C1UL,0xFC3DCDF1UL, +0x30300030UL,0x94158591UL,0x64254561UL,0x3C3C0C30UL,0xB43686B2UL,0xE424C4E0UL,0xB83B8BB3UL,0x7C3C4C70UL, +0x0C0E0E02UL,0x50104050UL,0x38390931UL,0x24260622UL,0x30320232UL,0x84048480UL,0x68294961UL,0x90138393UL, +0x34370733UL,0xE427C7E3UL,0x24240420UL,0xA42484A0UL,0xC80BCBC3UL,0x50134353UL,0x080A0A02UL,0x84078783UL, +0xD819C9D1UL,0x4C0C4C40UL,0x80038383UL,0x8C0F8F83UL,0xCC0ECEC2UL,0x383B0B33UL,0x480A4A42UL,0xB43787B3UL +}; + +static const ulong32 SS2[256] = { +0xA1A82989UL,0x81840585UL,0xD2D416C6UL,0xD3D013C3UL,0x50541444UL,0x111C1D0DUL,0xA0AC2C8CUL,0x21242505UL, +0x515C1D4DUL,0x43400343UL,0x10181808UL,0x121C1E0EUL,0x51501141UL,0xF0FC3CCCUL,0xC2C80ACAUL,0x63602343UL, +0x20282808UL,0x40440444UL,0x20202000UL,0x919C1D8DUL,0xE0E020C0UL,0xE2E022C2UL,0xC0C808C8UL,0x13141707UL, +0xA1A42585UL,0x838C0F8FUL,0x03000303UL,0x73783B4BUL,0xB3B83B8BUL,0x13101303UL,0xD2D012C2UL,0xE2EC2ECEUL, +0x70703040UL,0x808C0C8CUL,0x333C3F0FUL,0xA0A82888UL,0x32303202UL,0xD1DC1DCDUL,0xF2F436C6UL,0x70743444UL, +0xE0EC2CCCUL,0x91941585UL,0x03080B0BUL,0x53541747UL,0x505C1C4CUL,0x53581B4BUL,0xB1BC3D8DUL,0x01000101UL, +0x20242404UL,0x101C1C0CUL,0x73703343UL,0x90981888UL,0x10101000UL,0xC0CC0CCCUL,0xF2F032C2UL,0xD1D819C9UL, +0x202C2C0CUL,0xE3E427C7UL,0x72703242UL,0x83800383UL,0x93981B8BUL,0xD1D011C1UL,0x82840686UL,0xC1C809C9UL, +0x60602040UL,0x50501040UL,0xA3A02383UL,0xE3E82BCBUL,0x010C0D0DUL,0xB2B43686UL,0x929C1E8EUL,0x434C0F4FUL, +0xB3B43787UL,0x52581A4AUL,0xC2C406C6UL,0x70783848UL,0xA2A42686UL,0x12101202UL,0xA3AC2F8FUL,0xD1D415C5UL, +0x61602141UL,0xC3C003C3UL,0xB0B43484UL,0x41400141UL,0x52501242UL,0x717C3D4DUL,0x818C0D8DUL,0x00080808UL, +0x131C1F0FUL,0x91981989UL,0x00000000UL,0x11181909UL,0x00040404UL,0x53501343UL,0xF3F437C7UL,0xE1E021C1UL, +0xF1FC3DCDUL,0x72743646UL,0x232C2F0FUL,0x23242707UL,0xB0B03080UL,0x83880B8BUL,0x020C0E0EUL,0xA3A82B8BUL, +0xA2A02282UL,0x626C2E4EUL,0x93901383UL,0x414C0D4DUL,0x61682949UL,0x707C3C4CUL,0x01080909UL,0x02080A0AUL, +0xB3BC3F8FUL,0xE3EC2FCFUL,0xF3F033C3UL,0xC1C405C5UL,0x83840787UL,0x10141404UL,0xF2FC3ECEUL,0x60642444UL, +0xD2DC1ECEUL,0x222C2E0EUL,0x43480B4BUL,0x12181A0AUL,0x02040606UL,0x21202101UL,0x63682B4BUL,0x62642646UL, +0x02000202UL,0xF1F435C5UL,0x92901282UL,0x82880A8AUL,0x000C0C0CUL,0xB3B03383UL,0x727C3E4EUL,0xD0D010C0UL, +0x72783A4AUL,0x43440747UL,0x92941686UL,0xE1E425C5UL,0x22242606UL,0x80800080UL,0xA1AC2D8DUL,0xD3DC1FCFUL, +0xA1A02181UL,0x30303000UL,0x33343707UL,0xA2AC2E8EUL,0x32343606UL,0x11141505UL,0x22202202UL,0x30383808UL, +0xF0F434C4UL,0xA3A42787UL,0x41440545UL,0x404C0C4CUL,0x81800181UL,0xE1E829C9UL,0x80840484UL,0x93941787UL, +0x31343505UL,0xC3C80BCBUL,0xC2CC0ECEUL,0x303C3C0CUL,0x71703141UL,0x11101101UL,0xC3C407C7UL,0x81880989UL, +0x71743545UL,0xF3F83BCBUL,0xD2D81ACAUL,0xF0F838C8UL,0x90941484UL,0x51581949UL,0x82800282UL,0xC0C404C4UL, +0xF3FC3FCFUL,0x41480949UL,0x31383909UL,0x63642747UL,0xC0C000C0UL,0xC3CC0FCFUL,0xD3D417C7UL,0xB0B83888UL, +0x030C0F0FUL,0x828C0E8EUL,0x42400242UL,0x23202303UL,0x91901181UL,0x606C2C4CUL,0xD3D81BCBUL,0xA0A42484UL, +0x30343404UL,0xF1F031C1UL,0x40480848UL,0xC2C002C2UL,0x636C2F4FUL,0x313C3D0DUL,0x212C2D0DUL,0x40400040UL, +0xB2BC3E8EUL,0x323C3E0EUL,0xB0BC3C8CUL,0xC1C001C1UL,0xA2A82A8AUL,0xB2B83A8AUL,0x424C0E4EUL,0x51541545UL, +0x33383B0BUL,0xD0DC1CCCUL,0x60682848UL,0x737C3F4FUL,0x909C1C8CUL,0xD0D818C8UL,0x42480A4AUL,0x52541646UL, +0x73743747UL,0xA0A02080UL,0xE1EC2DCDUL,0x42440646UL,0xB1B43585UL,0x23282B0BUL,0x61642545UL,0xF2F83ACAUL, +0xE3E023C3UL,0xB1B83989UL,0xB1B03181UL,0x939C1F8FUL,0x525C1E4EUL,0xF1F839C9UL,0xE2E426C6UL,0xB2B03282UL, +0x31303101UL,0xE2E82ACAUL,0x616C2D4DUL,0x535C1F4FUL,0xE0E424C4UL,0xF0F030C0UL,0xC1CC0DCDUL,0x80880888UL, +0x12141606UL,0x32383A0AUL,0x50581848UL,0xD0D414C4UL,0x62602242UL,0x21282909UL,0x03040707UL,0x33303303UL, +0xE0E828C8UL,0x13181B0BUL,0x01040505UL,0x71783949UL,0x90901080UL,0x62682A4AUL,0x22282A0AUL,0x92981A8AUL +}; + +static const ulong32 SS3[256] = { +0x08303838UL,0xC8E0E828UL,0x0D212C2DUL,0x86A2A426UL,0xCFC3CC0FUL,0xCED2DC1EUL,0x83B3B033UL,0x88B0B838UL, +0x8FA3AC2FUL,0x40606020UL,0x45515415UL,0xC7C3C407UL,0x44404404UL,0x4F636C2FUL,0x4B63682BUL,0x4B53581BUL, +0xC3C3C003UL,0x42626022UL,0x03333033UL,0x85B1B435UL,0x09212829UL,0x80A0A020UL,0xC2E2E022UL,0x87A3A427UL, +0xC3D3D013UL,0x81919011UL,0x01111011UL,0x06020406UL,0x0C101C1CUL,0x8CB0BC3CUL,0x06323436UL,0x4B43480BUL, +0xCFE3EC2FUL,0x88808808UL,0x4C606C2CUL,0x88A0A828UL,0x07131417UL,0xC4C0C404UL,0x06121416UL,0xC4F0F434UL, +0xC2C2C002UL,0x45414405UL,0xC1E1E021UL,0xC6D2D416UL,0x0F333C3FUL,0x0D313C3DUL,0x8E828C0EUL,0x88909818UL, +0x08202828UL,0x4E424C0EUL,0xC6F2F436UL,0x0E323C3EUL,0x85A1A425UL,0xC9F1F839UL,0x0D010C0DUL,0xCFD3DC1FUL, +0xC8D0D818UL,0x0B23282BUL,0x46626426UL,0x4A72783AUL,0x07232427UL,0x0F232C2FUL,0xC1F1F031UL,0x42727032UL, +0x42424002UL,0xC4D0D414UL,0x41414001UL,0xC0C0C000UL,0x43737033UL,0x47636427UL,0x8CA0AC2CUL,0x8B83880BUL, +0xC7F3F437UL,0x8DA1AC2DUL,0x80808000UL,0x0F131C1FUL,0xCAC2C80AUL,0x0C202C2CUL,0x8AA2A82AUL,0x04303434UL, +0xC2D2D012UL,0x0B03080BUL,0xCEE2EC2EUL,0xC9E1E829UL,0x4D515C1DUL,0x84909414UL,0x08101818UL,0xC8F0F838UL, +0x47535417UL,0x8EA2AC2EUL,0x08000808UL,0xC5C1C405UL,0x03131013UL,0xCDC1CC0DUL,0x86828406UL,0x89B1B839UL, +0xCFF3FC3FUL,0x4D717C3DUL,0xC1C1C001UL,0x01313031UL,0xC5F1F435UL,0x8A82880AUL,0x4A62682AUL,0x81B1B031UL, +0xC1D1D011UL,0x00202020UL,0xC7D3D417UL,0x02020002UL,0x02222022UL,0x04000404UL,0x48606828UL,0x41717031UL, +0x07030407UL,0xCBD3D81BUL,0x8D919C1DUL,0x89919819UL,0x41616021UL,0x8EB2BC3EUL,0xC6E2E426UL,0x49515819UL, +0xCDD1DC1DUL,0x41515011UL,0x80909010UL,0xCCD0DC1CUL,0x8A92981AUL,0x83A3A023UL,0x8BA3A82BUL,0xC0D0D010UL, +0x81818001UL,0x0F030C0FUL,0x47434407UL,0x0A12181AUL,0xC3E3E023UL,0xCCE0EC2CUL,0x8D818C0DUL,0x8FB3BC3FUL, +0x86929416UL,0x4B73783BUL,0x4C505C1CUL,0x82A2A022UL,0x81A1A021UL,0x43636023UL,0x03232023UL,0x4D414C0DUL, +0xC8C0C808UL,0x8E929C1EUL,0x8C909C1CUL,0x0A32383AUL,0x0C000C0CUL,0x0E222C2EUL,0x8AB2B83AUL,0x4E626C2EUL, +0x8F939C1FUL,0x4A52581AUL,0xC2F2F032UL,0x82929012UL,0xC3F3F033UL,0x49414809UL,0x48707838UL,0xCCC0CC0CUL, +0x05111415UL,0xCBF3F83BUL,0x40707030UL,0x45717435UL,0x4F737C3FUL,0x05313435UL,0x00101010UL,0x03030003UL, +0x44606424UL,0x4D616C2DUL,0xC6C2C406UL,0x44707434UL,0xC5D1D415UL,0x84B0B434UL,0xCAE2E82AUL,0x09010809UL, +0x46727436UL,0x09111819UL,0xCEF2FC3EUL,0x40404000UL,0x02121012UL,0xC0E0E020UL,0x8DB1BC3DUL,0x05010405UL, +0xCAF2F83AUL,0x01010001UL,0xC0F0F030UL,0x0A22282AUL,0x4E525C1EUL,0x89A1A829UL,0x46525416UL,0x43434003UL, +0x85818405UL,0x04101414UL,0x89818809UL,0x8B93981BUL,0x80B0B030UL,0xC5E1E425UL,0x48404808UL,0x49717839UL, +0x87939417UL,0xCCF0FC3CUL,0x0E121C1EUL,0x82828002UL,0x01212021UL,0x8C808C0CUL,0x0B13181BUL,0x4F535C1FUL, +0x47737437UL,0x44505414UL,0x82B2B032UL,0x0D111C1DUL,0x05212425UL,0x4F434C0FUL,0x00000000UL,0x46424406UL, +0xCDE1EC2DUL,0x48505818UL,0x42525012UL,0xCBE3E82BUL,0x4E727C3EUL,0xCAD2D81AUL,0xC9C1C809UL,0xCDF1FC3DUL, +0x00303030UL,0x85919415UL,0x45616425UL,0x0C303C3CUL,0x86B2B436UL,0xC4E0E424UL,0x8BB3B83BUL,0x4C707C3CUL, +0x0E020C0EUL,0x40505010UL,0x09313839UL,0x06222426UL,0x02323032UL,0x84808404UL,0x49616829UL,0x83939013UL, +0x07333437UL,0xC7E3E427UL,0x04202424UL,0x84A0A424UL,0xCBC3C80BUL,0x43535013UL,0x0A02080AUL,0x87838407UL, +0xC9D1D819UL,0x4C404C0CUL,0x83838003UL,0x8F838C0FUL,0xCEC2CC0EUL,0x0B33383BUL,0x4A42480AUL,0x87B3B437UL +}; + +static const ulong32 KCi[16] = { +0x9E3779B9,0x3C6EF373, +0x78DDE6E6,0xF1BBCDCC, +0xE3779B99,0xC6EF3733, +0x8DDE6E67,0x1BBCDCCF, +0x3779B99E,0x6EF3733C, +0xDDE6E678,0xBBCDCCF1, +0x779B99E3,0xEF3733C6, +0xDE6E678D,0xBCDCCF1B +}; + +#define G(x) (SS3[((x)>>24)&255] ^ SS2[((x)>>16)&255] ^ SS1[((x)>>8)&255] ^ SS0[(x)&255]) + +#define F(L1, L2, R1, R2, K1, K2) \ + T2 = G((R1 ^ K1) ^ (R2 ^ K2)); \ + T = G( G(T2 + (R1 ^ K1)) + T2); \ + L2 ^= T; \ + L1 ^= (T + G(T2 + (R1 ^ K1))); \ + + /** + Initialize the SEED block cipher + @param key The symmetric key you wish to pass + @param keylen The key length in bytes + @param num_rounds The number of rounds desired (0 for default) + @param skey The key in as scheduled by this function. + @return CRYPT_OK if successful + */ +int kseed_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +{ + int i; + ulong32 tmp, k1, k2, k3, k4; + + if (keylen != 16) { + return CRYPT_INVALID_KEYSIZE; + } + + if (num_rounds != 16 && num_rounds != 0) { + return CRYPT_INVALID_ROUNDS; + } + + /* load key */ + LOAD32H(k1, key); + LOAD32H(k2, key+4); + LOAD32H(k3, key+8); + LOAD32H(k4, key+12); + + for (i = 0; i < 16; i++) { + skey->kseed.K[2*i+0] = G(k1 + k3 - KCi[i]); + skey->kseed.K[2*i+1] = G(k2 - k4 + KCi[i]); + if (i&1) { + tmp = k3; + k3 = ((k3 << 8) | (k4 >> 24)) & 0xFFFFFFFF; + k4 = ((k4 << 8) | (tmp >> 24)) & 0xFFFFFFFF; + } else { + tmp = k1; + k1 = ((k1 >> 8) | (k2 << 24)) & 0xFFFFFFFF; + k2 = ((k2 >> 8) | (tmp << 24)) & 0xFFFFFFFF; + } + /* reverse keys for decrypt */ + skey->kseed.dK[2*(15-i)+0] = skey->kseed.K[2*i+0]; + skey->kseed.dK[2*(15-i)+1] = skey->kseed.K[2*i+1]; + } + + return CRYPT_OK; +} + +static void rounds(ulong32 *P, ulong32 *K) +{ + ulong32 T, T2; + int i; + for (i = 0; i < 16; i += 2) { + F(P[0], P[1], P[2], P[3], K[0], K[1]); + F(P[2], P[3], P[0], P[1], K[2], K[3]); + K += 4; + } +} + +/** + Encrypts a block of text with SEED + @param pt The input plaintext (16 bytes) + @param ct The output ciphertext (16 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +int kseed_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +{ + ulong32 P[4]; + LOAD32H(P[0], pt); + LOAD32H(P[1], pt+4); + LOAD32H(P[2], pt+8); + LOAD32H(P[3], pt+12); + rounds(P, skey->kseed.K); + STORE32H(P[2], ct); + STORE32H(P[3], ct+4); + STORE32H(P[0], ct+8); + STORE32H(P[1], ct+12); + return CRYPT_OK; +} + +/** + Decrypts a block of text with SEED + @param ct The input ciphertext (16 bytes) + @param pt The output plaintext (16 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +int kseed_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +{ + ulong32 P[4]; + LOAD32H(P[0], ct); + LOAD32H(P[1], ct+4); + LOAD32H(P[2], ct+8); + LOAD32H(P[3], ct+12); + rounds(P, skey->kseed.dK); + STORE32H(P[2], pt); + STORE32H(P[3], pt+4); + STORE32H(P[0], pt+8); + STORE32H(P[1], pt+12); + return CRYPT_OK; +} + +/** Terminate the context + @param skey The scheduled key +*/ +void kseed_done(symmetric_key *skey) +{ + LTC_UNUSED_PARAM(skey); +} + +/** + Performs a self-test of the SEED block cipher + @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled +*/ +int kseed_test(void) +{ +#if !defined(LTC_TEST) + return CRYPT_NOP; +#else + static const struct test { + unsigned char pt[16], ct[16], key[16]; + } tests[] = { + +{ + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F }, + { 0x5E,0xBA,0xC6,0xE0,0x05,0x4E,0x16,0x68,0x19,0xAF,0xF1,0xCC,0x6D,0x34,0x6C,0xDB }, + { 0 }, +}, + +{ + { 0 }, + { 0xC1,0x1F,0x22,0xF2,0x01,0x40,0x50,0x50,0x84,0x48,0x35,0x97,0xE4,0x37,0x0F,0x43 }, + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F }, +}, + +{ + { 0x83,0xA2,0xF8,0xA2,0x88,0x64,0x1F,0xB9,0xA4,0xE9,0xA5,0xCC,0x2F,0x13,0x1C,0x7D }, + { 0xEE,0x54,0xD1,0x3E,0xBC,0xAE,0x70,0x6D,0x22,0x6B,0xC3,0x14,0x2C,0xD4,0x0D,0x4A }, + { 0x47,0x06,0x48,0x08,0x51,0xE6,0x1B,0xE8,0x5D,0x74,0xBF,0xB3,0xFD,0x95,0x61,0x85 }, +}, + +{ + { 0xB4,0x1E,0x6B,0xE2,0xEB,0xA8,0x4A,0x14,0x8E,0x2E,0xED,0x84,0x59,0x3C,0x5E,0xC7 }, + { 0x9B,0x9B,0x7B,0xFC,0xD1,0x81,0x3C,0xB9,0x5D,0x0B,0x36,0x18,0xF4,0x0F,0x51,0x22 }, + { 0x28,0xDB,0xC3,0xBC,0x49,0xFF,0xD8,0x7D,0xCF,0xA5,0x09,0xB1,0x1D,0x42,0x2B,0xE7 }, +} +}; + int x; + unsigned char buf[2][16]; + symmetric_key skey; + + for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { + kseed_setup(tests[x].key, 16, 0, &skey); + kseed_ecb_encrypt(tests[x].pt, buf[0], &skey); + kseed_ecb_decrypt(buf[0], buf[1], &skey); + if (compare_testvector(buf[0], 16, tests[x].ct, 16, "KSEED Encrypt", x) || + compare_testvector(buf[1], 16, tests[x].pt, 16, "KSEED Decrypt", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; +#endif +} + +/** + Gets suitable key size + @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. + @return CRYPT_OK if the input key size is acceptable. +*/ +int kseed_keysize(int *keysize) +{ + LTC_ARGCHK(keysize != NULL); + if (*keysize >= 16) { + *keysize = 16; + } else { + return CRYPT_INVALID_KEYSIZE; + } + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/ciphers/multi2.c b/fsbl/lib/libtomcrypt/src/ciphers/multi2.c new file mode 100644 index 000000000..86c181204 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/ciphers/multi2.c @@ -0,0 +1,319 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file multi2.c + Multi-2 implementation (not public domain, hence the default disable) +*/ +#include "tomcrypt.h" + +#ifdef LTC_MULTI2 + +static void pi1(ulong32 *p) +{ + p[1] ^= p[0]; +} + +static void pi2(ulong32 *p, ulong32 *k) +{ + ulong32 t; + t = (p[1] + k[0]) & 0xFFFFFFFFUL; + t = (ROL(t, 1) + t - 1) & 0xFFFFFFFFUL; + t = (ROL(t, 4) ^ t) & 0xFFFFFFFFUL; + p[0] ^= t; +} + +static void pi3(ulong32 *p, ulong32 *k) +{ + ulong32 t; + t = p[0] + k[1]; + t = (ROL(t, 2) + t + 1) & 0xFFFFFFFFUL; + t = (ROL(t, 8) ^ t) & 0xFFFFFFFFUL; + t = (t + k[2]) & 0xFFFFFFFFUL; + t = (ROL(t, 1) - t) & 0xFFFFFFFFUL; + t = ROL(t, 16) ^ (p[0] | t); + p[1] ^= t; +} + +static void pi4(ulong32 *p, ulong32 *k) +{ + ulong32 t; + t = (p[1] + k[3]) & 0xFFFFFFFFUL; + t = (ROL(t, 2) + t + 1) & 0xFFFFFFFFUL; + p[0] ^= t; +} + +static void setup(ulong32 *dk, ulong32 *k, ulong32 *uk) +{ + int n, t; + ulong32 p[2]; + + p[0] = dk[0]; p[1] = dk[1]; + + t = 4; + n = 0; + pi1(p); + pi2(p, k); + uk[n++] = p[0]; + pi3(p, k); + uk[n++] = p[1]; + pi4(p, k); + uk[n++] = p[0]; + pi1(p); + uk[n++] = p[1]; + pi2(p, k+t); + uk[n++] = p[0]; + pi3(p, k+t); + uk[n++] = p[1]; + pi4(p, k+t); + uk[n++] = p[0]; + pi1(p); + uk[n++] = p[1]; +} + +static void encrypt(ulong32 *p, int N, ulong32 *uk) +{ + int n, t; + for (t = n = 0; ; ) { + pi1(p); if (++n == N) break; + pi2(p, uk+t); if (++n == N) break; + pi3(p, uk+t); if (++n == N) break; + pi4(p, uk+t); if (++n == N) break; + t ^= 4; + } +} + +static void decrypt(ulong32 *p, int N, ulong32 *uk) +{ + int n, t; + for (t = 4*(((N-1)>>2)&1), n = N; ; ) { + switch (n<=4 ? n : ((n-1)%4)+1) { + case 4: pi4(p, uk+t); --n; /* FALLTHROUGH */ + case 3: pi3(p, uk+t); --n; /* FALLTHROUGH */ + case 2: pi2(p, uk+t); --n; /* FALLTHROUGH */ + case 1: pi1(p); --n; break; + case 0: return; + } + t ^= 4; + } +} + +const struct ltc_cipher_descriptor multi2_desc = { + "multi2", + 22, + 40, 40, 8, 128, + &multi2_setup, + &multi2_ecb_encrypt, + &multi2_ecb_decrypt, + &multi2_test, + &multi2_done, + &multi2_keysize, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + +int multi2_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +{ + ulong32 sk[8], dk[2]; + int x; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(skey != NULL); + + if (keylen != 40) return CRYPT_INVALID_KEYSIZE; + if (num_rounds == 0) num_rounds = 128; + + skey->multi2.N = num_rounds; + for (x = 0; x < 8; x++) { + LOAD32H(sk[x], key + x*4); + } + LOAD32H(dk[0], key + 32); + LOAD32H(dk[1], key + 36); + setup(dk, sk, skey->multi2.uk); + + zeromem(sk, sizeof(sk)); + zeromem(dk, sizeof(dk)); + return CRYPT_OK; +} + +/** + Encrypts a block of text with multi2 + @param pt The input plaintext (8 bytes) + @param ct The output ciphertext (8 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +int multi2_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +{ + ulong32 p[2]; + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + LOAD32H(p[0], pt); + LOAD32H(p[1], pt+4); + encrypt(p, skey->multi2.N, skey->multi2.uk); + STORE32H(p[0], ct); + STORE32H(p[1], ct+4); + return CRYPT_OK; +} + +/** + Decrypts a block of text with multi2 + @param ct The input ciphertext (8 bytes) + @param pt The output plaintext (8 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +int multi2_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +{ + ulong32 p[2]; + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + LOAD32H(p[0], ct); + LOAD32H(p[1], ct+4); + decrypt(p, skey->multi2.N, skey->multi2.uk); + STORE32H(p[0], pt); + STORE32H(p[1], pt+4); + return CRYPT_OK; +} + +/** + Performs a self-test of the multi2 block cipher + @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled +*/ +int multi2_test(void) +{ + static const struct { + unsigned char key[40]; + unsigned char pt[8], ct[8]; + int rounds; + } tests[] = { +{ + { + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + + 0x01, 0x23, 0x45, 0x67, + 0x89, 0xAB, 0xCD, 0xEF + }, + { + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, + }, + { + 0xf8, 0x94, 0x40, 0x84, + 0x5e, 0x11, 0xcf, 0x89 + }, + 128, +}, +{ + { + 0x35, 0x91, 0x9d, 0x96, + 0x07, 0x02, 0xe2, 0xce, + 0x8d, 0x0b, 0x58, 0x3c, + 0xc9, 0xc8, 0x9d, 0x59, + 0xa2, 0xae, 0x96, 0x4e, + 0x87, 0x82, 0x45, 0xed, + 0x3f, 0x2e, 0x62, 0xd6, + 0x36, 0x35, 0xd0, 0x67, + + 0xb1, 0x27, 0xb9, 0x06, + 0xe7, 0x56, 0x22, 0x38, + }, + { + 0x1f, 0xb4, 0x60, 0x60, + 0xd0, 0xb3, 0x4f, 0xa5 + }, + { + 0xca, 0x84, 0xa9, 0x34, + 0x75, 0xc8, 0x60, 0xe5 + }, + 216, +} +}; + unsigned char buf[8]; + symmetric_key skey; + int err, x; + + for (x = 1; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { + if ((err = multi2_setup(tests[x].key, 40, tests[x].rounds, &skey)) != CRYPT_OK) { + return err; + } + if ((err = multi2_ecb_encrypt(tests[x].pt, buf, &skey)) != CRYPT_OK) { + return err; + } + + if (compare_testvector(buf, 8, tests[x].ct, 8, "Multi2 Encrypt", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + + if ((err = multi2_ecb_decrypt(buf, buf, &skey)) != CRYPT_OK) { + return err; + } + if (compare_testvector(buf, 8, tests[x].pt, 8, "Multi2 Decrypt", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + + for (x = 128; x < 256; ++x) { + unsigned char ct[8]; + + if ((err = multi2_setup(tests[0].key, 40, x, &skey)) != CRYPT_OK) { + return err; + } + if ((err = multi2_ecb_encrypt(tests[0].pt, ct, &skey)) != CRYPT_OK) { + return err; + } + if ((err = multi2_ecb_decrypt(ct, buf, &skey)) != CRYPT_OK) { + return err; + } + if (compare_testvector(buf, 8, tests[0].pt, 8, "Multi2 Rounds", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + + return CRYPT_OK; +} + +/** Terminate the context + @param skey The scheduled key +*/ +void multi2_done(symmetric_key *skey) +{ + LTC_UNUSED_PARAM(skey); +} + +/** + Gets suitable key size + @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. + @return CRYPT_OK if the input key size is acceptable. +*/ +int multi2_keysize(int *keysize) +{ + LTC_ARGCHK(keysize != NULL); + if (*keysize >= 40) { + *keysize = 40; + } else { + return CRYPT_INVALID_KEYSIZE; + } + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/ciphers/noekeon.c b/fsbl/lib/libtomcrypt/src/ciphers/noekeon.c new file mode 100644 index 000000000..13720d118 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/ciphers/noekeon.c @@ -0,0 +1,328 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +/** + @file noekeon.c + Implementation of the Noekeon block cipher by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_NOEKEON + +const struct ltc_cipher_descriptor noekeon_desc = +{ + "noekeon", + 16, + 16, 16, 16, 16, + &noekeon_setup, + &noekeon_ecb_encrypt, + &noekeon_ecb_decrypt, + &noekeon_test, + &noekeon_done, + &noekeon_keysize, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + +static const ulong32 RC[] = { + 0x00000080UL, 0x0000001bUL, 0x00000036UL, 0x0000006cUL, + 0x000000d8UL, 0x000000abUL, 0x0000004dUL, 0x0000009aUL, + 0x0000002fUL, 0x0000005eUL, 0x000000bcUL, 0x00000063UL, + 0x000000c6UL, 0x00000097UL, 0x00000035UL, 0x0000006aUL, + 0x000000d4UL +}; + +#define kTHETA(a, b, c, d) \ + temp = a^c; temp = temp ^ ROLc(temp, 8) ^ RORc(temp, 8); \ + b ^= temp; d ^= temp; \ + temp = b^d; temp = temp ^ ROLc(temp, 8) ^ RORc(temp, 8); \ + a ^= temp; c ^= temp; + +#define THETA(k, a, b, c, d) \ + temp = a^c; temp = temp ^ ROLc(temp, 8) ^ RORc(temp, 8); \ + b ^= temp ^ k[1]; d ^= temp ^ k[3]; \ + temp = b^d; temp = temp ^ ROLc(temp, 8) ^ RORc(temp, 8); \ + a ^= temp ^ k[0]; c ^= temp ^ k[2]; + +#define GAMMA(a, b, c, d) \ + b ^= ~(d|c); \ + a ^= c&b; \ + temp = d; d = a; a = temp;\ + c ^= a ^ b ^ d; \ + b ^= ~(d|c); \ + a ^= c&b; + +#define PI1(a, b, c, d) \ + b = ROLc(b, 1); c = ROLc(c, 5); d = ROLc(d, 2); + +#define PI2(a, b, c, d) \ + b = RORc(b, 1); c = RORc(c, 5); d = RORc(d, 2); + + /** + Initialize the Noekeon block cipher + @param key The symmetric key you wish to pass + @param keylen The key length in bytes + @param num_rounds The number of rounds desired (0 for default) + @param skey The key in as scheduled by this function. + @return CRYPT_OK if successful + */ +int noekeon_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +{ + ulong32 temp; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(skey != NULL); + + if (keylen != 16) { + return CRYPT_INVALID_KEYSIZE; + } + + if (num_rounds != 16 && num_rounds != 0) { + return CRYPT_INVALID_ROUNDS; + } + + LOAD32H(skey->noekeon.K[0],&key[0]); + LOAD32H(skey->noekeon.K[1],&key[4]); + LOAD32H(skey->noekeon.K[2],&key[8]); + LOAD32H(skey->noekeon.K[3],&key[12]); + + LOAD32H(skey->noekeon.dK[0],&key[0]); + LOAD32H(skey->noekeon.dK[1],&key[4]); + LOAD32H(skey->noekeon.dK[2],&key[8]); + LOAD32H(skey->noekeon.dK[3],&key[12]); + + kTHETA(skey->noekeon.dK[0], skey->noekeon.dK[1], skey->noekeon.dK[2], skey->noekeon.dK[3]); + + return CRYPT_OK; +} + +/** + Encrypts a block of text with Noekeon + @param pt The input plaintext (16 bytes) + @param ct The output ciphertext (16 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +#ifdef LTC_CLEAN_STACK +static int _noekeon_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +#else +int noekeon_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +#endif +{ + ulong32 a,b,c,d,temp; + int r; + + LTC_ARGCHK(skey != NULL); + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + + LOAD32H(a,&pt[0]); LOAD32H(b,&pt[4]); + LOAD32H(c,&pt[8]); LOAD32H(d,&pt[12]); + +#define ROUND(i) \ + a ^= RC[i]; \ + THETA(skey->noekeon.K, a,b,c,d); \ + PI1(a,b,c,d); \ + GAMMA(a,b,c,d); \ + PI2(a,b,c,d); + + for (r = 0; r < 16; ++r) { + ROUND(r); + } + +#undef ROUND + + a ^= RC[16]; + THETA(skey->noekeon.K, a, b, c, d); + + STORE32H(a,&ct[0]); STORE32H(b,&ct[4]); + STORE32H(c,&ct[8]); STORE32H(d,&ct[12]); + + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +int noekeon_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +{ + int err = _noekeon_ecb_encrypt(pt, ct, skey); + burn_stack(sizeof(ulong32) * 5 + sizeof(int)); + return err; +} +#endif + +/** + Decrypts a block of text with Noekeon + @param ct The input ciphertext (16 bytes) + @param pt The output plaintext (16 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +#ifdef LTC_CLEAN_STACK +static int _noekeon_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +#else +int noekeon_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +#endif +{ + ulong32 a,b,c,d, temp; + int r; + + LTC_ARGCHK(skey != NULL); + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + + LOAD32H(a,&ct[0]); LOAD32H(b,&ct[4]); + LOAD32H(c,&ct[8]); LOAD32H(d,&ct[12]); + + +#define ROUND(i) \ + THETA(skey->noekeon.dK, a,b,c,d); \ + a ^= RC[i]; \ + PI1(a,b,c,d); \ + GAMMA(a,b,c,d); \ + PI2(a,b,c,d); + + for (r = 16; r > 0; --r) { + ROUND(r); + } + +#undef ROUND + + THETA(skey->noekeon.dK, a,b,c,d); + a ^= RC[0]; + STORE32H(a,&pt[0]); STORE32H(b, &pt[4]); + STORE32H(c,&pt[8]); STORE32H(d, &pt[12]); + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +int noekeon_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +{ + int err = _noekeon_ecb_decrypt(ct, pt, skey); + burn_stack(sizeof(ulong32) * 5 + sizeof(int)); + return err; +} +#endif + +/** + Performs a self-test of the Noekeon block cipher + @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled +*/ +int noekeon_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const struct { + int keylen; + unsigned char key[16], pt[16], ct[16]; + } tests[] = { + { + 16, + { 0xAA, 0x3C, 0x8C, 0x86, 0xD9, 0x8B, 0xF8, 0xBE, 0x21, 0xE0, 0x36, 0x09, 0x78, 0xFB, 0xE4, 0x90 }, + { 0xE4, 0x96, 0x6C, 0xD3, 0x13, 0xA0, 0x6C, 0xAF, 0xD0, 0x23, 0xC9, 0xFD, 0x45, 0x32, 0x23, 0x16 }, + { 0xA6, 0xEC, 0xB8, 0xA8, 0x61, 0xFD, 0x62, 0xD9, 0x13, 0x02, 0xFE, 0x9E, 0x47, 0x01, 0x3F, 0xC3 } + }, + { + 16, + { 0xED, 0x43, 0xD1, 0x87, 0x21, 0x7E, 0xE0, 0x97, 0x3D, 0x76, 0xC3, 0x37, 0x2E, 0x7D, 0xAE, 0xD3 }, + { 0xE3, 0x38, 0x32, 0xCC, 0xF2, 0x2F, 0x2F, 0x0A, 0x4A, 0x8B, 0x8F, 0x18, 0x12, 0x20, 0x17, 0xD3 }, + { 0x94, 0xA5, 0xDF, 0xF5, 0xAE, 0x1C, 0xBB, 0x22, 0xAD, 0xEB, 0xA7, 0x0D, 0xB7, 0x82, 0x90, 0xA0 } + }, + { + 16, + { 0x6F, 0xDC, 0x23, 0x38, 0xF2, 0x10, 0xFB, 0xD3, 0xC1, 0x8C, 0x02, 0xF6, 0xB4, 0x6A, 0xD5, 0xA8 }, + { 0xDB, 0x29, 0xED, 0xB5, 0x5F, 0xB3, 0x60, 0x3A, 0x92, 0xA8, 0xEB, 0x9C, 0x6D, 0x9D, 0x3E, 0x8F }, + { 0x78, 0xF3, 0x6F, 0xF8, 0x9E, 0xBB, 0x8C, 0x6A, 0xE8, 0x10, 0xF7, 0x00, 0x22, 0x15, 0x30, 0x3D } + }, + { + 16, + { 0x2C, 0x0C, 0x02, 0xEF, 0x6B, 0xC4, 0xF2, 0x0B, 0x2E, 0xB9, 0xE0, 0xBF, 0xD9, 0x36, 0xC2, 0x4E }, + { 0x84, 0xE2, 0xFE, 0x64, 0xB1, 0xB9, 0xFE, 0x76, 0xA8, 0x3F, 0x45, 0xC7, 0x40, 0x7A, 0xAF, 0xEE }, + { 0x2A, 0x08, 0xD6, 0xA2, 0x1C, 0x63, 0x08, 0xB0, 0xF8, 0xBC, 0xB3, 0xA1, 0x66, 0xF7, 0xAE, 0xCF } + }, + { + 16, + { 0x6F, 0x30, 0xF8, 0x9F, 0xDA, 0x6E, 0xA0, 0x91, 0x04, 0x0F, 0x6C, 0x8B, 0x7D, 0xF7, 0x2A, 0x4B }, + { 0x65, 0xB6, 0xA6, 0xD0, 0x42, 0x14, 0x08, 0x60, 0x34, 0x8D, 0x37, 0x2F, 0x01, 0xF0, 0x46, 0xBE }, + { 0x66, 0xAC, 0x0B, 0x62, 0x1D, 0x68, 0x11, 0xF5, 0x27, 0xB1, 0x13, 0x5D, 0xF3, 0x2A, 0xE9, 0x18 } + }, + { + 16, + { 0xCA, 0xA4, 0x16, 0xB7, 0x1C, 0x92, 0x2E, 0xAD, 0xEB, 0xA7, 0xDB, 0x69, 0x92, 0xCB, 0x35, 0xEF }, + { 0x81, 0x6F, 0x8E, 0x4D, 0x96, 0xC6, 0xB3, 0x67, 0x83, 0xF5, 0x63, 0xC7, 0x20, 0x6D, 0x40, 0x23 }, + { 0x44, 0xF7, 0x63, 0x62, 0xF0, 0x43, 0xBB, 0x67, 0x4A, 0x75, 0x12, 0x42, 0x46, 0x29, 0x28, 0x19 } + }, + { + 16, + { 0x6B, 0xCF, 0x22, 0x2F, 0xE0, 0x1B, 0xB0, 0xAA, 0xD8, 0x3C, 0x91, 0x99, 0x18, 0xB2, 0x28, 0xE8 }, + { 0x7C, 0x37, 0xC7, 0xD0, 0xAC, 0x92, 0x29, 0xF1, 0x60, 0x82, 0x93, 0x89, 0xAA, 0x61, 0xAA, 0xA9 }, + { 0xE5, 0x89, 0x1B, 0xB3, 0xFE, 0x8B, 0x0C, 0xA1, 0xA6, 0xC7, 0xBE, 0x12, 0x73, 0x0F, 0xC1, 0x19 } + }, + { + 16, + { 0xE6, 0xD0, 0xF1, 0x03, 0x2E, 0xDE, 0x70, 0x8D, 0xD8, 0x9E, 0x36, 0x5C, 0x05, 0x52, 0xE7, 0x0D }, + { 0xE2, 0x42, 0xE7, 0x92, 0x0E, 0xF7, 0x82, 0xA2, 0xB8, 0x21, 0x8D, 0x26, 0xBA, 0x2D, 0xE6, 0x32 }, + { 0x1E, 0xDD, 0x75, 0x22, 0xB9, 0x36, 0x8A, 0x0F, 0x32, 0xFD, 0xD4, 0x48, 0x65, 0x12, 0x5A, 0x2F } + } + }; + symmetric_key key; + unsigned char tmp[2][16]; + int err, i, y; + + for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) { + zeromem(&key, sizeof(key)); + if ((err = noekeon_setup(tests[i].key, tests[i].keylen, 0, &key)) != CRYPT_OK) { + return err; + } + + noekeon_ecb_encrypt(tests[i].pt, tmp[0], &key); + noekeon_ecb_decrypt(tmp[0], tmp[1], &key); + if (compare_testvector(tmp[0], 16, tests[i].ct, 16, "Noekeon Encrypt", i) || + compare_testvector(tmp[1], 16, tests[i].pt, 16, "Noekeon Decrypt", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 16; y++) tmp[0][y] = 0; + for (y = 0; y < 1000; y++) noekeon_ecb_encrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 1000; y++) noekeon_ecb_decrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 16; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; + } + return CRYPT_OK; + #endif +} + +/** Terminate the context + @param skey The scheduled key +*/ +void noekeon_done(symmetric_key *skey) +{ + LTC_UNUSED_PARAM(skey); +} + +/** + Gets suitable key size + @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. + @return CRYPT_OK if the input key size is acceptable. +*/ +int noekeon_keysize(int *keysize) +{ + LTC_ARGCHK(keysize != NULL); + if (*keysize < 16) { + return CRYPT_INVALID_KEYSIZE; + } else { + *keysize = 16; + return CRYPT_OK; + } +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/ciphers/rc2.c b/fsbl/lib/libtomcrypt/src/ciphers/rc2.c new file mode 100644 index 000000000..ebd8f882f --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/ciphers/rc2.c @@ -0,0 +1,417 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +/**********************************************************************\ +* To commemorate the 1996 RSA Data Security Conference, the following * +* code is released into the public domain by its author. Prost! * +* * +* This cipher uses 16-bit words and little-endian byte ordering. * +* I wonder which processor it was optimized for? * +* * +* Thanks to CodeView, SoftIce, and D86 for helping bring this code to * +* the public. * +\**********************************************************************/ +#include "tomcrypt.h" + +/** + @file rc2.c + Implementation of RC2 with fixed effective key length of 64bits +*/ + +#ifdef LTC_RC2 + +const struct ltc_cipher_descriptor rc2_desc = { + "rc2", + 12, 8, 128, 8, 16, + &rc2_setup, + &rc2_ecb_encrypt, + &rc2_ecb_decrypt, + &rc2_test, + &rc2_done, + &rc2_keysize, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + +/* 256-entry permutation table, probably derived somehow from pi */ +static const unsigned char permute[256] = { + 217,120,249,196, 25,221,181,237, 40,233,253,121, 74,160,216,157, + 198,126, 55,131, 43,118, 83,142, 98, 76,100,136, 68,139,251,162, + 23,154, 89,245,135,179, 79, 19, 97, 69,109,141, 9,129,125, 50, + 189,143, 64,235,134,183,123, 11,240,149, 33, 34, 92,107, 78,130, + 84,214,101,147,206, 96,178, 28,115, 86,192, 20,167,140,241,220, + 18,117,202, 31, 59,190,228,209, 66, 61,212, 48,163, 60,182, 38, + 111,191, 14,218, 70,105, 7, 87, 39,242, 29,155,188,148, 67, 3, + 248, 17,199,246,144,239, 62,231, 6,195,213, 47,200,102, 30,215, + 8,232,234,222,128, 82,238,247,132,170,114,172, 53, 77,106, 42, + 150, 26,210,113, 90, 21, 73,116, 75,159,208, 94, 4, 24,164,236, + 194,224, 65,110, 15, 81,203,204, 36,145,175, 80,161,244,112, 57, + 153,124, 58,133, 35,184,180,122,252, 2, 54, 91, 37, 85,151, 49, + 45, 93,250,152,227,138,146,174, 5,223, 41, 16,103,108,186,201, + 211, 0,230,207,225,158,168, 44, 99, 22, 1, 63, 88,226,137,169, + 13, 56, 52, 27,171, 51,255,176,187, 72, 12, 95,185,177,205, 46, + 197,243,219, 71,229,165,156,119, 10,166, 32,104,254,127,193,173 +}; + + /** + Initialize the RC2 block cipher + @param key The symmetric key you wish to pass + @param keylen The key length in bytes + @param bits The effective key length in bits + @param num_rounds The number of rounds desired (0 for default) + @param skey The key in as scheduled by this function. + @return CRYPT_OK if successful + */ +int rc2_setup_ex(const unsigned char *key, int keylen, int bits, int num_rounds, symmetric_key *skey) +{ + unsigned *xkey = skey->rc2.xkey; + unsigned char tmp[128]; + unsigned T8, TM; + int i; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(skey != NULL); + + if (keylen == 0 || keylen > 128 || bits > 1024) { + return CRYPT_INVALID_KEYSIZE; + } + if (bits == 0) { + bits = 1024; + } + + if (num_rounds != 0 && num_rounds != 16) { + return CRYPT_INVALID_ROUNDS; + } + + for (i = 0; i < keylen; i++) { + tmp[i] = key[i] & 255; + } + + /* Phase 1: Expand input key to 128 bytes */ + if (keylen < 128) { + for (i = keylen; i < 128; i++) { + tmp[i] = permute[(tmp[i - 1] + tmp[i - keylen]) & 255]; + } + } + + /* Phase 2 - reduce effective key size to "bits" */ + T8 = (unsigned)(bits+7)>>3; + TM = (255 >> (unsigned)(7 & -bits)); + tmp[128 - T8] = permute[tmp[128 - T8] & TM]; + for (i = 127 - T8; i >= 0; i--) { + tmp[i] = permute[tmp[i + 1] ^ tmp[i + T8]]; + } + + /* Phase 3 - copy to xkey in little-endian order */ + for (i = 0; i < 64; i++) { + xkey[i] = (unsigned)tmp[2*i] + ((unsigned)tmp[2*i+1] << 8); + } + +#ifdef LTC_CLEAN_STACK + zeromem(tmp, sizeof(tmp)); +#endif + + return CRYPT_OK; +} + +/** + Initialize the RC2 block cipher + + The effective key length is here always keylen * 8 + + @param key The symmetric key you wish to pass + @param keylen The key length in bytes + @param num_rounds The number of rounds desired (0 for default) + @param skey The key in as scheduled by this function. + @return CRYPT_OK if successful +*/ +int rc2_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +{ + return rc2_setup_ex(key, keylen, keylen * 8, num_rounds, skey); +} + +/**********************************************************************\ +* Encrypt an 8-byte block of plaintext using the given key. * +\**********************************************************************/ +/** + Encrypts a block of text with RC2 + @param pt The input plaintext (8 bytes) + @param ct The output ciphertext (8 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +#ifdef LTC_CLEAN_STACK +static int _rc2_ecb_encrypt( const unsigned char *pt, + unsigned char *ct, + symmetric_key *skey) +#else +int rc2_ecb_encrypt( const unsigned char *pt, + unsigned char *ct, + symmetric_key *skey) +#endif +{ + unsigned *xkey; + unsigned x76, x54, x32, x10, i; + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + + xkey = skey->rc2.xkey; + + x76 = ((unsigned)pt[7] << 8) + (unsigned)pt[6]; + x54 = ((unsigned)pt[5] << 8) + (unsigned)pt[4]; + x32 = ((unsigned)pt[3] << 8) + (unsigned)pt[2]; + x10 = ((unsigned)pt[1] << 8) + (unsigned)pt[0]; + + for (i = 0; i < 16; i++) { + x10 = (x10 + (x32 & ~x76) + (x54 & x76) + xkey[4*i+0]) & 0xFFFF; + x10 = ((x10 << 1) | (x10 >> 15)); + + x32 = (x32 + (x54 & ~x10) + (x76 & x10) + xkey[4*i+1]) & 0xFFFF; + x32 = ((x32 << 2) | (x32 >> 14)); + + x54 = (x54 + (x76 & ~x32) + (x10 & x32) + xkey[4*i+2]) & 0xFFFF; + x54 = ((x54 << 3) | (x54 >> 13)); + + x76 = (x76 + (x10 & ~x54) + (x32 & x54) + xkey[4*i+3]) & 0xFFFF; + x76 = ((x76 << 5) | (x76 >> 11)); + + if (i == 4 || i == 10) { + x10 = (x10 + xkey[x76 & 63]) & 0xFFFF; + x32 = (x32 + xkey[x10 & 63]) & 0xFFFF; + x54 = (x54 + xkey[x32 & 63]) & 0xFFFF; + x76 = (x76 + xkey[x54 & 63]) & 0xFFFF; + } + } + + ct[0] = (unsigned char)x10; + ct[1] = (unsigned char)(x10 >> 8); + ct[2] = (unsigned char)x32; + ct[3] = (unsigned char)(x32 >> 8); + ct[4] = (unsigned char)x54; + ct[5] = (unsigned char)(x54 >> 8); + ct[6] = (unsigned char)x76; + ct[7] = (unsigned char)(x76 >> 8); + + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +int rc2_ecb_encrypt( const unsigned char *pt, + unsigned char *ct, + symmetric_key *skey) +{ + int err = _rc2_ecb_encrypt(pt, ct, skey); + burn_stack(sizeof(unsigned *) + sizeof(unsigned) * 5); + return err; +} +#endif + +/**********************************************************************\ +* Decrypt an 8-byte block of ciphertext using the given key. * +\**********************************************************************/ +/** + Decrypts a block of text with RC2 + @param ct The input ciphertext (8 bytes) + @param pt The output plaintext (8 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +#ifdef LTC_CLEAN_STACK +static int _rc2_ecb_decrypt( const unsigned char *ct, + unsigned char *pt, + symmetric_key *skey) +#else +int rc2_ecb_decrypt( const unsigned char *ct, + unsigned char *pt, + symmetric_key *skey) +#endif +{ + unsigned x76, x54, x32, x10; + unsigned *xkey; + int i; + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + + xkey = skey->rc2.xkey; + + x76 = ((unsigned)ct[7] << 8) + (unsigned)ct[6]; + x54 = ((unsigned)ct[5] << 8) + (unsigned)ct[4]; + x32 = ((unsigned)ct[3] << 8) + (unsigned)ct[2]; + x10 = ((unsigned)ct[1] << 8) + (unsigned)ct[0]; + + for (i = 15; i >= 0; i--) { + if (i == 4 || i == 10) { + x76 = (x76 - xkey[x54 & 63]) & 0xFFFF; + x54 = (x54 - xkey[x32 & 63]) & 0xFFFF; + x32 = (x32 - xkey[x10 & 63]) & 0xFFFF; + x10 = (x10 - xkey[x76 & 63]) & 0xFFFF; + } + + x76 = ((x76 << 11) | (x76 >> 5)); + x76 = (x76 - ((x10 & ~x54) + (x32 & x54) + xkey[4*i+3])) & 0xFFFF; + + x54 = ((x54 << 13) | (x54 >> 3)); + x54 = (x54 - ((x76 & ~x32) + (x10 & x32) + xkey[4*i+2])) & 0xFFFF; + + x32 = ((x32 << 14) | (x32 >> 2)); + x32 = (x32 - ((x54 & ~x10) + (x76 & x10) + xkey[4*i+1])) & 0xFFFF; + + x10 = ((x10 << 15) | (x10 >> 1)); + x10 = (x10 - ((x32 & ~x76) + (x54 & x76) + xkey[4*i+0])) & 0xFFFF; + } + + pt[0] = (unsigned char)x10; + pt[1] = (unsigned char)(x10 >> 8); + pt[2] = (unsigned char)x32; + pt[3] = (unsigned char)(x32 >> 8); + pt[4] = (unsigned char)x54; + pt[5] = (unsigned char)(x54 >> 8); + pt[6] = (unsigned char)x76; + pt[7] = (unsigned char)(x76 >> 8); + + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +int rc2_ecb_decrypt( const unsigned char *ct, + unsigned char *pt, + symmetric_key *skey) +{ + int err = _rc2_ecb_decrypt(ct, pt, skey); + burn_stack(sizeof(unsigned *) + sizeof(unsigned) * 4 + sizeof(int)); + return err; +} +#endif + +/** + Performs a self-test of the RC2 block cipher + @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled +*/ +int rc2_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const struct { + int keylen, bits; + unsigned char key[16], pt[8], ct[8]; + } tests[] = { + + { 8, 63, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xeb, 0xb7, 0x73, 0xf9, 0x93, 0x27, 0x8e, 0xff } + }, + { 8, 64, + { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }, + { 0x27, 0x8b, 0x27, 0xe4, 0x2e, 0x2f, 0x0d, 0x49 } + }, + { 8, 64, + { 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, + { 0x30, 0x64, 0x9e, 0xdf, 0x9b, 0xe7, 0xd2, 0xc2 } + }, + { 1, 64, + { 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x61, 0xa8, 0xa2, 0x44, 0xad, 0xac, 0xcc, 0xf0 } + }, + { 7, 64, + { 0x88, 0xbc, 0xa9, 0x0e, 0x90, 0x87, 0x5a, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x6c, 0xcf, 0x43, 0x08, 0x97, 0x4c, 0x26, 0x7f } + }, + { 16, 64, + { 0x88, 0xbc, 0xa9, 0x0e, 0x90, 0x87, 0x5a, 0x7f, + 0x0f, 0x79, 0xc3, 0x84, 0x62, 0x7b, 0xaf, 0xb2 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x1a, 0x80, 0x7d, 0x27, 0x2b, 0xbe, 0x5d, 0xb1 } + }, + { 16, 128, + { 0x88, 0xbc, 0xa9, 0x0e, 0x90, 0x87, 0x5a, 0x7f, + 0x0f, 0x79, 0xc3, 0x84, 0x62, 0x7b, 0xaf, 0xb2 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x22, 0x69, 0x55, 0x2a, 0xb0, 0xf8, 0x5c, 0xa6 } + } + }; + int x, y, err; + symmetric_key skey; + unsigned char tmp[2][8]; + + for (x = 0; x < (int)(sizeof(tests) / sizeof(tests[0])); x++) { + zeromem(tmp, sizeof(tmp)); + if (tests[x].bits == (tests[x].keylen * 8)) { + if ((err = rc2_setup(tests[x].key, tests[x].keylen, 0, &skey)) != CRYPT_OK) { + return err; + } + } + else { + if ((err = rc2_setup_ex(tests[x].key, tests[x].keylen, tests[x].bits, 0, &skey)) != CRYPT_OK) { + return err; + } + } + + rc2_ecb_encrypt(tests[x].pt, tmp[0], &skey); + rc2_ecb_decrypt(tmp[0], tmp[1], &skey); + + if (compare_testvector(tmp[0], 8, tests[x].ct, 8, "RC2 CT", x) || + compare_testvector(tmp[1], 8, tests[x].pt, 8, "RC2 PT", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 8; y++) tmp[0][y] = 0; + for (y = 0; y < 1000; y++) rc2_ecb_encrypt(tmp[0], tmp[0], &skey); + for (y = 0; y < 1000; y++) rc2_ecb_decrypt(tmp[0], tmp[0], &skey); + for (y = 0; y < 8; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; + } + return CRYPT_OK; + #endif +} + +/** Terminate the context + @param skey The scheduled key +*/ +void rc2_done(symmetric_key *skey) +{ + LTC_UNUSED_PARAM(skey); +} + +/** + Gets suitable key size + @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. + @return CRYPT_OK if the input key size is acceptable. +*/ +int rc2_keysize(int *keysize) +{ + LTC_ARGCHK(keysize != NULL); + if (*keysize < 1) { + return CRYPT_INVALID_KEYSIZE; + } else if (*keysize > 128) { + *keysize = 128; + } + return CRYPT_OK; +} + +#endif + + + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/ciphers/rc5.c b/fsbl/lib/libtomcrypt/src/ciphers/rc5.c new file mode 100644 index 000000000..bda537f15 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/ciphers/rc5.c @@ -0,0 +1,322 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file rc5.c + LTC_RC5 code by Tom St Denis +*/ + +#include "tomcrypt.h" + +#ifdef LTC_RC5 + +const struct ltc_cipher_descriptor rc5_desc = +{ + "rc5", + 2, + 8, 128, 8, 12, + &rc5_setup, + &rc5_ecb_encrypt, + &rc5_ecb_decrypt, + &rc5_test, + &rc5_done, + &rc5_keysize, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + +static const ulong32 stab[50] = { +0xb7e15163UL, 0x5618cb1cUL, 0xf45044d5UL, 0x9287be8eUL, 0x30bf3847UL, 0xcef6b200UL, 0x6d2e2bb9UL, 0x0b65a572UL, +0xa99d1f2bUL, 0x47d498e4UL, 0xe60c129dUL, 0x84438c56UL, 0x227b060fUL, 0xc0b27fc8UL, 0x5ee9f981UL, 0xfd21733aUL, +0x9b58ecf3UL, 0x399066acUL, 0xd7c7e065UL, 0x75ff5a1eUL, 0x1436d3d7UL, 0xb26e4d90UL, 0x50a5c749UL, 0xeedd4102UL, +0x8d14babbUL, 0x2b4c3474UL, 0xc983ae2dUL, 0x67bb27e6UL, 0x05f2a19fUL, 0xa42a1b58UL, 0x42619511UL, 0xe0990ecaUL, +0x7ed08883UL, 0x1d08023cUL, 0xbb3f7bf5UL, 0x5976f5aeUL, 0xf7ae6f67UL, 0x95e5e920UL, 0x341d62d9UL, 0xd254dc92UL, +0x708c564bUL, 0x0ec3d004UL, 0xacfb49bdUL, 0x4b32c376UL, 0xe96a3d2fUL, 0x87a1b6e8UL, 0x25d930a1UL, 0xc410aa5aUL, +0x62482413UL, 0x007f9dccUL +}; + + /** + Initialize the LTC_RC5 block cipher + @param key The symmetric key you wish to pass + @param keylen The key length in bytes + @param num_rounds The number of rounds desired (0 for default) + @param skey The key in as scheduled by this function. + @return CRYPT_OK if successful + */ +#ifdef LTC_CLEAN_STACK +static int _rc5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +#else +int rc5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +#endif +{ + ulong32 L[64], *S, A, B, i, j, v, s, t, l; + + LTC_ARGCHK(skey != NULL); + LTC_ARGCHK(key != NULL); + + /* test parameters */ + if (num_rounds == 0) { + num_rounds = rc5_desc.default_rounds; + } + + if (num_rounds < 12 || num_rounds > 24) { + return CRYPT_INVALID_ROUNDS; + } + + /* key must be between 64 and 1024 bits */ + if (keylen < 8 || keylen > 128) { + return CRYPT_INVALID_KEYSIZE; + } + + skey->rc5.rounds = num_rounds; + S = skey->rc5.K; + + /* copy the key into the L array */ + for (A = i = j = 0; i < (ulong32)keylen; ) { + A = (A << 8) | ((ulong32)(key[i++] & 255)); + if ((i & 3) == 0) { + L[j++] = BSWAP(A); + A = 0; + } + } + + if ((keylen & 3) != 0) { + A <<= (ulong32)((8 * (4 - (keylen&3)))); + L[j++] = BSWAP(A); + } + + /* setup the S array */ + t = (ulong32)(2 * (num_rounds + 1)); + XMEMCPY(S, stab, t * sizeof(*S)); + + /* mix buffer */ + s = 3 * MAX(t, j); + l = j; + for (A = B = i = j = v = 0; v < s; v++) { + A = S[i] = ROLc(S[i] + A + B, 3); + B = L[j] = ROL(L[j] + A + B, (A+B)); + if (++i == t) { i = 0; } + if (++j == l) { j = 0; } + } + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +int rc5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +{ + int x; + x = _rc5_setup(key, keylen, num_rounds, skey); + burn_stack(sizeof(ulong32) * 122 + sizeof(int)); + return x; +} +#endif + +/** + Encrypts a block of text with LTC_RC5 + @param pt The input plaintext (8 bytes) + @param ct The output ciphertext (8 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +#ifdef LTC_CLEAN_STACK +static int _rc5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +#else +int rc5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +#endif +{ + ulong32 A, B, *K; + int r; + LTC_ARGCHK(skey != NULL); + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + + LOAD32L(A, &pt[0]); + LOAD32L(B, &pt[4]); + A += skey->rc5.K[0]; + B += skey->rc5.K[1]; + K = skey->rc5.K + 2; + + if ((skey->rc5.rounds & 1) == 0) { + for (r = 0; r < skey->rc5.rounds; r += 2) { + A = ROL(A ^ B, B) + K[0]; + B = ROL(B ^ A, A) + K[1]; + A = ROL(A ^ B, B) + K[2]; + B = ROL(B ^ A, A) + K[3]; + K += 4; + } + } else { + for (r = 0; r < skey->rc5.rounds; r++) { + A = ROL(A ^ B, B) + K[0]; + B = ROL(B ^ A, A) + K[1]; + K += 2; + } + } + STORE32L(A, &ct[0]); + STORE32L(B, &ct[4]); + + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +int rc5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +{ + int err = _rc5_ecb_encrypt(pt, ct, skey); + burn_stack(sizeof(ulong32) * 2 + sizeof(int)); + return err; +} +#endif + +/** + Decrypts a block of text with LTC_RC5 + @param ct The input ciphertext (8 bytes) + @param pt The output plaintext (8 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +#ifdef LTC_CLEAN_STACK +static int _rc5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +#else +int rc5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +#endif +{ + ulong32 A, B, *K; + int r; + LTC_ARGCHK(skey != NULL); + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + + LOAD32L(A, &ct[0]); + LOAD32L(B, &ct[4]); + K = skey->rc5.K + (skey->rc5.rounds << 1); + + if ((skey->rc5.rounds & 1) == 0) { + K -= 2; + for (r = skey->rc5.rounds - 1; r >= 0; r -= 2) { + B = ROR(B - K[3], A) ^ A; + A = ROR(A - K[2], B) ^ B; + B = ROR(B - K[1], A) ^ A; + A = ROR(A - K[0], B) ^ B; + K -= 4; + } + } else { + for (r = skey->rc5.rounds - 1; r >= 0; r--) { + B = ROR(B - K[1], A) ^ A; + A = ROR(A - K[0], B) ^ B; + K -= 2; + } + } + A -= skey->rc5.K[0]; + B -= skey->rc5.K[1]; + STORE32L(A, &pt[0]); + STORE32L(B, &pt[4]); + + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +int rc5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +{ + int err = _rc5_ecb_decrypt(ct, pt, skey); + burn_stack(sizeof(ulong32) * 2 + sizeof(int)); + return err; +} +#endif + +/** + Performs a self-test of the LTC_RC5 block cipher + @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled +*/ +int rc5_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const struct { + unsigned char key[16], pt[8], ct[8]; + } tests[] = { + { + { 0x91, 0x5f, 0x46, 0x19, 0xbe, 0x41, 0xb2, 0x51, + 0x63, 0x55, 0xa5, 0x01, 0x10, 0xa9, 0xce, 0x91 }, + { 0x21, 0xa5, 0xdb, 0xee, 0x15, 0x4b, 0x8f, 0x6d }, + { 0xf7, 0xc0, 0x13, 0xac, 0x5b, 0x2b, 0x89, 0x52 } + }, + { + { 0x78, 0x33, 0x48, 0xe7, 0x5a, 0xeb, 0x0f, 0x2f, + 0xd7, 0xb1, 0x69, 0xbb, 0x8d, 0xc1, 0x67, 0x87 }, + { 0xF7, 0xC0, 0x13, 0xAC, 0x5B, 0x2B, 0x89, 0x52 }, + { 0x2F, 0x42, 0xB3, 0xB7, 0x03, 0x69, 0xFC, 0x92 } + }, + { + { 0xDC, 0x49, 0xdb, 0x13, 0x75, 0xa5, 0x58, 0x4f, + 0x64, 0x85, 0xb4, 0x13, 0xb5, 0xf1, 0x2b, 0xaf }, + { 0x2F, 0x42, 0xB3, 0xB7, 0x03, 0x69, 0xFC, 0x92 }, + { 0x65, 0xc1, 0x78, 0xb2, 0x84, 0xd1, 0x97, 0xcc } + } + }; + unsigned char tmp[2][8]; + int x, y, err; + symmetric_key key; + + for (x = 0; x < (int)(sizeof(tests) / sizeof(tests[0])); x++) { + /* setup key */ + if ((err = rc5_setup(tests[x].key, 16, 12, &key)) != CRYPT_OK) { + return err; + } + + /* encrypt and decrypt */ + rc5_ecb_encrypt(tests[x].pt, tmp[0], &key); + rc5_ecb_decrypt(tmp[0], tmp[1], &key); + + /* compare */ + if (compare_testvector(tmp[0], 8, tests[x].ct, 8, "RC5 Encrypt", x) != 0 || + compare_testvector(tmp[1], 8, tests[x].pt, 8, "RC5 Decrypt", x) != 0) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 8; y++) tmp[0][y] = 0; + for (y = 0; y < 1000; y++) rc5_ecb_encrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 1000; y++) rc5_ecb_decrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 8; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; + } + return CRYPT_OK; + #endif +} + +/** Terminate the context + @param skey The scheduled key +*/ +void rc5_done(symmetric_key *skey) +{ + LTC_UNUSED_PARAM(skey); +} + +/** + Gets suitable key size + @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. + @return CRYPT_OK if the input key size is acceptable. +*/ +int rc5_keysize(int *keysize) +{ + LTC_ARGCHK(keysize != NULL); + if (*keysize < 8) { + return CRYPT_INVALID_KEYSIZE; + } else if (*keysize > 128) { + *keysize = 128; + } + return CRYPT_OK; +} + +#endif + + + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/ciphers/rc6.c b/fsbl/lib/libtomcrypt/src/ciphers/rc6.c new file mode 100644 index 000000000..56ca705b6 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/ciphers/rc6.c @@ -0,0 +1,331 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file rc6.c + LTC_RC6 code by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_RC6 + +const struct ltc_cipher_descriptor rc6_desc = +{ + "rc6", + 3, + 8, 128, 16, 20, + &rc6_setup, + &rc6_ecb_encrypt, + &rc6_ecb_decrypt, + &rc6_test, + &rc6_done, + &rc6_keysize, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + +static const ulong32 stab[44] = { +0xb7e15163UL, 0x5618cb1cUL, 0xf45044d5UL, 0x9287be8eUL, 0x30bf3847UL, 0xcef6b200UL, 0x6d2e2bb9UL, 0x0b65a572UL, +0xa99d1f2bUL, 0x47d498e4UL, 0xe60c129dUL, 0x84438c56UL, 0x227b060fUL, 0xc0b27fc8UL, 0x5ee9f981UL, 0xfd21733aUL, +0x9b58ecf3UL, 0x399066acUL, 0xd7c7e065UL, 0x75ff5a1eUL, 0x1436d3d7UL, 0xb26e4d90UL, 0x50a5c749UL, 0xeedd4102UL, +0x8d14babbUL, 0x2b4c3474UL, 0xc983ae2dUL, 0x67bb27e6UL, 0x05f2a19fUL, 0xa42a1b58UL, 0x42619511UL, 0xe0990ecaUL, +0x7ed08883UL, 0x1d08023cUL, 0xbb3f7bf5UL, 0x5976f5aeUL, 0xf7ae6f67UL, 0x95e5e920UL, 0x341d62d9UL, 0xd254dc92UL, +0x708c564bUL, 0x0ec3d004UL, 0xacfb49bdUL, 0x4b32c376UL }; + + /** + Initialize the LTC_RC6 block cipher + @param key The symmetric key you wish to pass + @param keylen The key length in bytes + @param num_rounds The number of rounds desired (0 for default) + @param skey The key in as scheduled by this function. + @return CRYPT_OK if successful + */ +#ifdef LTC_CLEAN_STACK +static int _rc6_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +#else +int rc6_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +#endif +{ + ulong32 L[64], S[50], A, B, i, j, v, s, l; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(skey != NULL); + + /* test parameters */ + if (num_rounds != 0 && num_rounds != 20) { + return CRYPT_INVALID_ROUNDS; + } + + /* key must be between 64 and 1024 bits */ + if (keylen < 8 || keylen > 128) { + return CRYPT_INVALID_KEYSIZE; + } + + /* copy the key into the L array */ + for (A = i = j = 0; i < (ulong32)keylen; ) { + A = (A << 8) | ((ulong32)(key[i++] & 255)); + if (!(i & 3)) { + L[j++] = BSWAP(A); + A = 0; + } + } + + /* handle odd sized keys */ + if (keylen & 3) { + A <<= (8 * (4 - (keylen&3))); + L[j++] = BSWAP(A); + } + + /* setup the S array */ + XMEMCPY(S, stab, 44 * sizeof(stab[0])); + + /* mix buffer */ + s = 3 * MAX(44, j); + l = j; + for (A = B = i = j = v = 0; v < s; v++) { + A = S[i] = ROLc(S[i] + A + B, 3); + B = L[j] = ROL(L[j] + A + B, (A+B)); + if (++i == 44) { i = 0; } + if (++j == l) { j = 0; } + } + + /* copy to key */ + for (i = 0; i < 44; i++) { + skey->rc6.K[i] = S[i]; + } + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +int rc6_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +{ + int x; + x = _rc6_setup(key, keylen, num_rounds, skey); + burn_stack(sizeof(ulong32) * 122); + return x; +} +#endif + +/** + Encrypts a block of text with LTC_RC6 + @param pt The input plaintext (16 bytes) + @param ct The output ciphertext (16 bytes) + @param skey The key as scheduled +*/ +#ifdef LTC_CLEAN_STACK +static int _rc6_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +#else +int rc6_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +#endif +{ + ulong32 a,b,c,d,t,u, *K; + int r; + + LTC_ARGCHK(skey != NULL); + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LOAD32L(a,&pt[0]);LOAD32L(b,&pt[4]);LOAD32L(c,&pt[8]);LOAD32L(d,&pt[12]); + + b += skey->rc6.K[0]; + d += skey->rc6.K[1]; + +#define RND(a,b,c,d) \ + t = (b * (b + b + 1)); t = ROLc(t, 5); \ + u = (d * (d + d + 1)); u = ROLc(u, 5); \ + a = ROL(a^t,u) + K[0]; \ + c = ROL(c^u,t) + K[1]; K += 2; + + K = skey->rc6.K + 2; + for (r = 0; r < 20; r += 4) { + RND(a,b,c,d); + RND(b,c,d,a); + RND(c,d,a,b); + RND(d,a,b,c); + } + +#undef RND + + a += skey->rc6.K[42]; + c += skey->rc6.K[43]; + STORE32L(a,&ct[0]);STORE32L(b,&ct[4]);STORE32L(c,&ct[8]);STORE32L(d,&ct[12]); + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +int rc6_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +{ + int err = _rc6_ecb_encrypt(pt, ct, skey); + burn_stack(sizeof(ulong32) * 6 + sizeof(int)); + return err; +} +#endif + +/** + Decrypts a block of text with LTC_RC6 + @param ct The input ciphertext (16 bytes) + @param pt The output plaintext (16 bytes) + @param skey The key as scheduled +*/ +#ifdef LTC_CLEAN_STACK +static int _rc6_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +#else +int rc6_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +#endif +{ + ulong32 a,b,c,d,t,u, *K; + int r; + + LTC_ARGCHK(skey != NULL); + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + + LOAD32L(a,&ct[0]);LOAD32L(b,&ct[4]);LOAD32L(c,&ct[8]);LOAD32L(d,&ct[12]); + a -= skey->rc6.K[42]; + c -= skey->rc6.K[43]; + +#define RND(a,b,c,d) \ + t = (b * (b + b + 1)); t = ROLc(t, 5); \ + u = (d * (d + d + 1)); u = ROLc(u, 5); \ + c = ROR(c - K[1], t) ^ u; \ + a = ROR(a - K[0], u) ^ t; K -= 2; + + K = skey->rc6.K + 40; + + for (r = 0; r < 20; r += 4) { + RND(d,a,b,c); + RND(c,d,a,b); + RND(b,c,d,a); + RND(a,b,c,d); + } + +#undef RND + + b -= skey->rc6.K[0]; + d -= skey->rc6.K[1]; + STORE32L(a,&pt[0]);STORE32L(b,&pt[4]);STORE32L(c,&pt[8]);STORE32L(d,&pt[12]); + + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +int rc6_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +{ + int err = _rc6_ecb_decrypt(ct, pt, skey); + burn_stack(sizeof(ulong32) * 6 + sizeof(int)); + return err; +} +#endif + +/** + Performs a self-test of the LTC_RC6 block cipher + @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled +*/ +int rc6_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const struct { + int keylen; + unsigned char key[32], pt[16], ct[16]; + } tests[] = { + { + 16, + { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, + 0x01, 0x12, 0x23, 0x34, 0x45, 0x56, 0x67, 0x78, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x02, 0x13, 0x24, 0x35, 0x46, 0x57, 0x68, 0x79, + 0x8a, 0x9b, 0xac, 0xbd, 0xce, 0xdf, 0xe0, 0xf1 }, + { 0x52, 0x4e, 0x19, 0x2f, 0x47, 0x15, 0xc6, 0x23, + 0x1f, 0x51, 0xf6, 0x36, 0x7e, 0xa4, 0x3f, 0x18 } + }, + { + 24, + { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, + 0x01, 0x12, 0x23, 0x34, 0x45, 0x56, 0x67, 0x78, + 0x89, 0x9a, 0xab, 0xbc, 0xcd, 0xde, 0xef, 0xf0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x02, 0x13, 0x24, 0x35, 0x46, 0x57, 0x68, 0x79, + 0x8a, 0x9b, 0xac, 0xbd, 0xce, 0xdf, 0xe0, 0xf1 }, + { 0x68, 0x83, 0x29, 0xd0, 0x19, 0xe5, 0x05, 0x04, + 0x1e, 0x52, 0xe9, 0x2a, 0xf9, 0x52, 0x91, 0xd4 } + }, + { + 32, + { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, + 0x01, 0x12, 0x23, 0x34, 0x45, 0x56, 0x67, 0x78, + 0x89, 0x9a, 0xab, 0xbc, 0xcd, 0xde, 0xef, 0xf0, + 0x10, 0x32, 0x54, 0x76, 0x98, 0xba, 0xdc, 0xfe }, + { 0x02, 0x13, 0x24, 0x35, 0x46, 0x57, 0x68, 0x79, + 0x8a, 0x9b, 0xac, 0xbd, 0xce, 0xdf, 0xe0, 0xf1 }, + { 0xc8, 0x24, 0x18, 0x16, 0xf0, 0xd7, 0xe4, 0x89, + 0x20, 0xad, 0x16, 0xa1, 0x67, 0x4e, 0x5d, 0x48 } + } + }; + unsigned char tmp[2][16]; + int x, y, err; + symmetric_key key; + + for (x = 0; x < (int)(sizeof(tests) / sizeof(tests[0])); x++) { + /* setup key */ + if ((err = rc6_setup(tests[x].key, tests[x].keylen, 0, &key)) != CRYPT_OK) { + return err; + } + + /* encrypt and decrypt */ + rc6_ecb_encrypt(tests[x].pt, tmp[0], &key); + rc6_ecb_decrypt(tmp[0], tmp[1], &key); + + /* compare */ + if (compare_testvector(tmp[0], 16, tests[x].ct, 16, "RC6 Encrypt", x) || + compare_testvector(tmp[1], 16, tests[x].pt, 16, "RC6 Decrypt", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 16; y++) tmp[0][y] = 0; + for (y = 0; y < 1000; y++) rc6_ecb_encrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 1000; y++) rc6_ecb_decrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 16; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; + } + return CRYPT_OK; + #endif +} + +/** Terminate the context + @param skey The scheduled key +*/ +void rc6_done(symmetric_key *skey) +{ + LTC_UNUSED_PARAM(skey); +} + +/** + Gets suitable key size + @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. + @return CRYPT_OK if the input key size is acceptable. +*/ +int rc6_keysize(int *keysize) +{ + LTC_ARGCHK(keysize != NULL); + if (*keysize < 8) { + return CRYPT_INVALID_KEYSIZE; + } else if (*keysize > 128) { + *keysize = 128; + } + return CRYPT_OK; +} + +#endif /*LTC_RC6*/ + + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/ciphers/safer/safer.c b/fsbl/lib/libtomcrypt/src/ciphers/safer/safer.c new file mode 100644 index 000000000..9eefcfb9e --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/ciphers/safer/safer.c @@ -0,0 +1,495 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/******************************************************************************* +* +* FILE: safer.c +* +* LTC_DESCRIPTION: block-cipher algorithm LTC_SAFER (Secure And Fast Encryption +* Routine) in its four versions: LTC_SAFER K-64, LTC_SAFER K-128, +* LTC_SAFER SK-64 and LTC_SAFER SK-128. +* +* AUTHOR: Richard De Moliner (demoliner@isi.ee.ethz.ch) +* Signal and Information Processing Laboratory +* Swiss Federal Institute of Technology +* CH-8092 Zuerich, Switzerland +* +* DATE: September 9, 1995 +* +* CHANGE HISTORY: +* +*******************************************************************************/ + +#include "tomcrypt.h" + +#ifdef LTC_SAFER + +#define __LTC_SAFER_TAB_C__ +#include "safer_tab.c" + +const struct ltc_cipher_descriptor safer_k64_desc = { + "safer-k64", + 8, 8, 8, 8, LTC_SAFER_K64_DEFAULT_NOF_ROUNDS, + &safer_k64_setup, + &safer_ecb_encrypt, + &safer_ecb_decrypt, + &safer_k64_test, + &safer_done, + &safer_64_keysize, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + }, + + safer_sk64_desc = { + "safer-sk64", + 9, 8, 8, 8, LTC_SAFER_SK64_DEFAULT_NOF_ROUNDS, + &safer_sk64_setup, + &safer_ecb_encrypt, + &safer_ecb_decrypt, + &safer_sk64_test, + &safer_done, + &safer_64_keysize, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + }, + + safer_k128_desc = { + "safer-k128", + 10, 16, 16, 8, LTC_SAFER_K128_DEFAULT_NOF_ROUNDS, + &safer_k128_setup, + &safer_ecb_encrypt, + &safer_ecb_decrypt, + &safer_sk128_test, + &safer_done, + &safer_128_keysize, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + }, + + safer_sk128_desc = { + "safer-sk128", + 11, 16, 16, 8, LTC_SAFER_SK128_DEFAULT_NOF_ROUNDS, + &safer_sk128_setup, + &safer_ecb_encrypt, + &safer_ecb_decrypt, + &safer_sk128_test, + &safer_done, + &safer_128_keysize, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL + }; + +/******************* Constants ************************************************/ +/* #define TAB_LEN 256 */ + +/******************* Assertions ***********************************************/ + +/******************* Macros ***************************************************/ +#define ROL8(x, n) ((unsigned char)((unsigned int)(x) << (n)\ + |(unsigned int)((x) & 0xFF) >> (8 - (n)))) +#define EXP(x) safer_ebox[(x) & 0xFF] +#define LOG(x) safer_lbox[(x) & 0xFF] +#define PHT(x, y) { y += x; x += y; } +#define IPHT(x, y) { x -= y; y -= x; } + +/******************* Types ****************************************************/ + +#ifdef LTC_CLEAN_STACK +static void _Safer_Expand_Userkey(const unsigned char *userkey_1, + const unsigned char *userkey_2, + unsigned int nof_rounds, + int strengthened, + safer_key_t key) +#else +static void Safer_Expand_Userkey(const unsigned char *userkey_1, + const unsigned char *userkey_2, + unsigned int nof_rounds, + int strengthened, + safer_key_t key) +#endif +{ unsigned int i, j, k; + unsigned char ka[LTC_SAFER_BLOCK_LEN + 1]; + unsigned char kb[LTC_SAFER_BLOCK_LEN + 1]; + + if (LTC_SAFER_MAX_NOF_ROUNDS < nof_rounds) + nof_rounds = LTC_SAFER_MAX_NOF_ROUNDS; + *key++ = (unsigned char)nof_rounds; + ka[LTC_SAFER_BLOCK_LEN] = (unsigned char)0; + kb[LTC_SAFER_BLOCK_LEN] = (unsigned char)0; + k = 0; + for (j = 0; j < LTC_SAFER_BLOCK_LEN; j++) { + ka[j] = ROL8(userkey_1[j], 5); + ka[LTC_SAFER_BLOCK_LEN] ^= ka[j]; + kb[j] = *key++ = userkey_2[j]; + kb[LTC_SAFER_BLOCK_LEN] ^= kb[j]; + } + for (i = 1; i <= nof_rounds; i++) { + for (j = 0; j < LTC_SAFER_BLOCK_LEN + 1; j++) { + ka[j] = ROL8(ka[j], 6); + kb[j] = ROL8(kb[j], 6); + } + if (strengthened) { + k = 2 * i - 1; + while (k >= (LTC_SAFER_BLOCK_LEN + 1)) { k -= LTC_SAFER_BLOCK_LEN + 1; } + } + for (j = 0; j < LTC_SAFER_BLOCK_LEN; j++) { + if (strengthened) { + *key++ = (ka[k] + + safer_ebox[(int)safer_ebox[(int)((18 * i + j + 1)&0xFF)]]) & 0xFF; + if (++k == (LTC_SAFER_BLOCK_LEN + 1)) { k = 0; } + } else { + *key++ = (ka[j] + safer_ebox[(int)safer_ebox[(int)((18 * i + j + 1)&0xFF)]]) & 0xFF; + } + } + if (strengthened) { + k = 2 * i; + while (k >= (LTC_SAFER_BLOCK_LEN + 1)) { k -= LTC_SAFER_BLOCK_LEN + 1; } + } + for (j = 0; j < LTC_SAFER_BLOCK_LEN; j++) { + if (strengthened) { + *key++ = (kb[k] + + safer_ebox[(int)safer_ebox[(int)((18 * i + j + 10)&0xFF)]]) & 0xFF; + if (++k == (LTC_SAFER_BLOCK_LEN + 1)) { k = 0; } + } else { + *key++ = (kb[j] + safer_ebox[(int)safer_ebox[(int)((18 * i + j + 10)&0xFF)]]) & 0xFF; + } + } + } + +#ifdef LTC_CLEAN_STACK + zeromem(ka, sizeof(ka)); + zeromem(kb, sizeof(kb)); +#endif +} + +#ifdef LTC_CLEAN_STACK +static void Safer_Expand_Userkey(const unsigned char *userkey_1, + const unsigned char *userkey_2, + unsigned int nof_rounds, + int strengthened, + safer_key_t key) +{ + _Safer_Expand_Userkey(userkey_1, userkey_2, nof_rounds, strengthened, key); + burn_stack(sizeof(unsigned char) * (2 * (LTC_SAFER_BLOCK_LEN + 1)) + sizeof(unsigned int)*2); +} +#endif + +int safer_k64_setup(const unsigned char *key, int keylen, int numrounds, symmetric_key *skey) +{ + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(skey != NULL); + + if (numrounds != 0 && (numrounds < 6 || numrounds > LTC_SAFER_MAX_NOF_ROUNDS)) { + return CRYPT_INVALID_ROUNDS; + } + + if (keylen != 8) { + return CRYPT_INVALID_KEYSIZE; + } + + Safer_Expand_Userkey(key, key, (unsigned int)(numrounds != 0 ?numrounds:LTC_SAFER_K64_DEFAULT_NOF_ROUNDS), 0, skey->safer.key); + return CRYPT_OK; +} + +int safer_sk64_setup(const unsigned char *key, int keylen, int numrounds, symmetric_key *skey) +{ + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(skey != NULL); + + if (numrounds != 0 && (numrounds < 6 || numrounds > LTC_SAFER_MAX_NOF_ROUNDS)) { + return CRYPT_INVALID_ROUNDS; + } + + if (keylen != 8) { + return CRYPT_INVALID_KEYSIZE; + } + + Safer_Expand_Userkey(key, key, (unsigned int)(numrounds != 0 ?numrounds:LTC_SAFER_SK64_DEFAULT_NOF_ROUNDS), 1, skey->safer.key); + return CRYPT_OK; +} + +int safer_k128_setup(const unsigned char *key, int keylen, int numrounds, symmetric_key *skey) +{ + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(skey != NULL); + + if (numrounds != 0 && (numrounds < 6 || numrounds > LTC_SAFER_MAX_NOF_ROUNDS)) { + return CRYPT_INVALID_ROUNDS; + } + + if (keylen != 16) { + return CRYPT_INVALID_KEYSIZE; + } + + Safer_Expand_Userkey(key, key+8, (unsigned int)(numrounds != 0 ?numrounds:LTC_SAFER_K128_DEFAULT_NOF_ROUNDS), 0, skey->safer.key); + return CRYPT_OK; +} + +int safer_sk128_setup(const unsigned char *key, int keylen, int numrounds, symmetric_key *skey) +{ + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(skey != NULL); + + if (numrounds != 0 && (numrounds < 6 || numrounds > LTC_SAFER_MAX_NOF_ROUNDS)) { + return CRYPT_INVALID_ROUNDS; + } + + if (keylen != 16) { + return CRYPT_INVALID_KEYSIZE; + } + + Safer_Expand_Userkey(key, key+8, (unsigned int)(numrounds != 0?numrounds:LTC_SAFER_SK128_DEFAULT_NOF_ROUNDS), 1, skey->safer.key); + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +static int _safer_ecb_encrypt(const unsigned char *block_in, + unsigned char *block_out, + symmetric_key *skey) +#else +int safer_ecb_encrypt(const unsigned char *block_in, + unsigned char *block_out, + symmetric_key *skey) +#endif +{ unsigned char a, b, c, d, e, f, g, h, t; + unsigned int round; + unsigned char *key; + + LTC_ARGCHK(block_in != NULL); + LTC_ARGCHK(block_out != NULL); + LTC_ARGCHK(skey != NULL); + + key = skey->safer.key; + a = block_in[0]; b = block_in[1]; c = block_in[2]; d = block_in[3]; + e = block_in[4]; f = block_in[5]; g = block_in[6]; h = block_in[7]; + if (LTC_SAFER_MAX_NOF_ROUNDS < (round = *key)) round = LTC_SAFER_MAX_NOF_ROUNDS; + while(round-- > 0) + { + a ^= *++key; b += *++key; c += *++key; d ^= *++key; + e ^= *++key; f += *++key; g += *++key; h ^= *++key; + a = EXP(a) + *++key; b = LOG(b) ^ *++key; + c = LOG(c) ^ *++key; d = EXP(d) + *++key; + e = EXP(e) + *++key; f = LOG(f) ^ *++key; + g = LOG(g) ^ *++key; h = EXP(h) + *++key; + PHT(a, b); PHT(c, d); PHT(e, f); PHT(g, h); + PHT(a, c); PHT(e, g); PHT(b, d); PHT(f, h); + PHT(a, e); PHT(b, f); PHT(c, g); PHT(d, h); + t = b; b = e; e = c; c = t; t = d; d = f; f = g; g = t; + } + a ^= *++key; b += *++key; c += *++key; d ^= *++key; + e ^= *++key; f += *++key; g += *++key; h ^= *++key; + block_out[0] = a & 0xFF; block_out[1] = b & 0xFF; + block_out[2] = c & 0xFF; block_out[3] = d & 0xFF; + block_out[4] = e & 0xFF; block_out[5] = f & 0xFF; + block_out[6] = g & 0xFF; block_out[7] = h & 0xFF; + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +int safer_ecb_encrypt(const unsigned char *block_in, + unsigned char *block_out, + symmetric_key *skey) +{ + int err = _safer_ecb_encrypt(block_in, block_out, skey); + burn_stack(sizeof(unsigned char) * 9 + sizeof(unsigned int) + sizeof(unsigned char *)); + return err; +} +#endif + +#ifdef LTC_CLEAN_STACK +static int _safer_ecb_decrypt(const unsigned char *block_in, + unsigned char *block_out, + symmetric_key *skey) +#else +int safer_ecb_decrypt(const unsigned char *block_in, + unsigned char *block_out, + symmetric_key *skey) +#endif +{ unsigned char a, b, c, d, e, f, g, h, t; + unsigned int round; + unsigned char *key; + + LTC_ARGCHK(block_in != NULL); + LTC_ARGCHK(block_out != NULL); + LTC_ARGCHK(skey != NULL); + + key = skey->safer.key; + a = block_in[0]; b = block_in[1]; c = block_in[2]; d = block_in[3]; + e = block_in[4]; f = block_in[5]; g = block_in[6]; h = block_in[7]; + if (LTC_SAFER_MAX_NOF_ROUNDS < (round = *key)) round = LTC_SAFER_MAX_NOF_ROUNDS; + key += LTC_SAFER_BLOCK_LEN * (1 + 2 * round); + h ^= *key; g -= *--key; f -= *--key; e ^= *--key; + d ^= *--key; c -= *--key; b -= *--key; a ^= *--key; + while (round--) + { + t = e; e = b; b = c; c = t; t = f; f = d; d = g; g = t; + IPHT(a, e); IPHT(b, f); IPHT(c, g); IPHT(d, h); + IPHT(a, c); IPHT(e, g); IPHT(b, d); IPHT(f, h); + IPHT(a, b); IPHT(c, d); IPHT(e, f); IPHT(g, h); + h -= *--key; g ^= *--key; f ^= *--key; e -= *--key; + d -= *--key; c ^= *--key; b ^= *--key; a -= *--key; + h = LOG(h) ^ *--key; g = EXP(g) - *--key; + f = EXP(f) - *--key; e = LOG(e) ^ *--key; + d = LOG(d) ^ *--key; c = EXP(c) - *--key; + b = EXP(b) - *--key; a = LOG(a) ^ *--key; + } + block_out[0] = a & 0xFF; block_out[1] = b & 0xFF; + block_out[2] = c & 0xFF; block_out[3] = d & 0xFF; + block_out[4] = e & 0xFF; block_out[5] = f & 0xFF; + block_out[6] = g & 0xFF; block_out[7] = h & 0xFF; + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +int safer_ecb_decrypt(const unsigned char *block_in, + unsigned char *block_out, + symmetric_key *skey) +{ + int err = _safer_ecb_decrypt(block_in, block_out, skey); + burn_stack(sizeof(unsigned char) * 9 + sizeof(unsigned int) + sizeof(unsigned char *)); + return err; +} +#endif + +int safer_64_keysize(int *keysize) +{ + LTC_ARGCHK(keysize != NULL); + if (*keysize < 8) { + return CRYPT_INVALID_KEYSIZE; + } else { + *keysize = 8; + return CRYPT_OK; + } +} + +int safer_128_keysize(int *keysize) +{ + LTC_ARGCHK(keysize != NULL); + if (*keysize < 16) { + return CRYPT_INVALID_KEYSIZE; + } else { + *keysize = 16; + return CRYPT_OK; + } +} + +int safer_k64_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const unsigned char k64_pt[] = { 1, 2, 3, 4, 5, 6, 7, 8 }, + k64_key[] = { 8, 7, 6, 5, 4, 3, 2, 1 }, + k64_ct[] = { 200, 242, 156, 221, 135, 120, 62, 217 }; + + symmetric_key skey; + unsigned char buf[2][8]; + int err; + + /* test K64 */ + if ((err = safer_k64_setup(k64_key, 8, 6, &skey)) != CRYPT_OK) { + return err; + } + safer_ecb_encrypt(k64_pt, buf[0], &skey); + safer_ecb_decrypt(buf[0], buf[1], &skey); + + if (compare_testvector(buf[0], 8, k64_ct, 8, "Safer K64 Encrypt", 0) != 0 || + compare_testvector(buf[1], 8, k64_pt, 8, "Safer K64 Decrypt", 0) != 0) { + return CRYPT_FAIL_TESTVECTOR; + } + + return CRYPT_OK; + #endif +} + + +int safer_sk64_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const unsigned char sk64_pt[] = { 1, 2, 3, 4, 5, 6, 7, 8 }, + sk64_key[] = { 1, 2, 3, 4, 5, 6, 7, 8 }, + sk64_ct[] = { 95, 206, 155, 162, 5, 132, 56, 199 }; + + symmetric_key skey; + unsigned char buf[2][8]; + int err, y; + + /* test SK64 */ + if ((err = safer_sk64_setup(sk64_key, 8, 6, &skey)) != CRYPT_OK) { + return err; + } + + safer_ecb_encrypt(sk64_pt, buf[0], &skey); + safer_ecb_decrypt(buf[0], buf[1], &skey); + + if (compare_testvector(buf[0], 8, sk64_ct, 8, "Safer SK64 Encrypt", 0) != 0 || + compare_testvector(buf[1], 8, sk64_pt, 8, "Safer SK64 Decrypt", 0) != 0) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 8; y++) buf[0][y] = 0; + for (y = 0; y < 1000; y++) safer_ecb_encrypt(buf[0], buf[0], &skey); + for (y = 0; y < 1000; y++) safer_ecb_decrypt(buf[0], buf[0], &skey); + for (y = 0; y < 8; y++) if (buf[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; + + return CRYPT_OK; + #endif +} + +/** Terminate the context + @param skey The scheduled key +*/ +void safer_done(symmetric_key *skey) +{ + LTC_UNUSED_PARAM(skey); +} + +int safer_sk128_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const unsigned char sk128_pt[] = { 1, 2, 3, 4, 5, 6, 7, 8 }, + sk128_key[] = { 1, 2, 3, 4, 5, 6, 7, 8, + 0, 0, 0, 0, 0, 0, 0, 0 }, + sk128_ct[] = { 255, 120, 17, 228, 179, 167, 46, 113 }; + + symmetric_key skey; + unsigned char buf[2][8]; + int err, y; + + /* test SK128 */ + if ((err = safer_sk128_setup(sk128_key, 16, 0, &skey)) != CRYPT_OK) { + return err; + } + safer_ecb_encrypt(sk128_pt, buf[0], &skey); + safer_ecb_decrypt(buf[0], buf[1], &skey); + + if (compare_testvector(buf[0], 8, sk128_ct, 8, "Safer SK128 Encrypt", 0) != 0 || + compare_testvector(buf[1], 8, sk128_pt, 8, "Safer SK128 Decrypt", 0) != 0) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 8; y++) buf[0][y] = 0; + for (y = 0; y < 1000; y++) safer_ecb_encrypt(buf[0], buf[0], &skey); + for (y = 0; y < 1000; y++) safer_ecb_decrypt(buf[0], buf[0], &skey); + for (y = 0; y < 8; y++) if (buf[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; + + return CRYPT_OK; + #endif +} + +#endif + + + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/ciphers/safer/safer_tab.c b/fsbl/lib/libtomcrypt/src/ciphers/safer/safer_tab.c new file mode 100644 index 000000000..99962a029 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/ciphers/safer/safer_tab.c @@ -0,0 +1,64 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file safer_tab.c + Tables for LTC_SAFER block ciphers +*/ + +#ifdef __LTC_SAFER_TAB_C__ + +/* This is the box defined by ebox[x] = 45^x mod 257. + * Its assumed that the value "256" corresponds to zero. */ +static const unsigned char safer_ebox[256] = { + 1, 45, 226, 147, 190, 69, 21, 174, 120, 3, 135, 164, 184, 56, 207, 63, + 8, 103, 9, 148, 235, 38, 168, 107, 189, 24, 52, 27, 187, 191, 114, 247, + 64, 53, 72, 156, 81, 47, 59, 85, 227, 192, 159, 216, 211, 243, 141, 177, +255, 167, 62, 220, 134, 119, 215, 166, 17, 251, 244, 186, 146, 145, 100, 131, +241, 51, 239, 218, 44, 181, 178, 43, 136, 209, 153, 203, 140, 132, 29, 20, +129, 151, 113, 202, 95, 163, 139, 87, 60, 130, 196, 82, 92, 28, 232, 160, + 4, 180, 133, 74, 246, 19, 84, 182, 223, 12, 26, 142, 222, 224, 57, 252, + 32, 155, 36, 78, 169, 152, 158, 171, 242, 96, 208, 108, 234, 250, 199, 217, + 0, 212, 31, 110, 67, 188, 236, 83, 137, 254, 122, 93, 73, 201, 50, 194, +249, 154, 248, 109, 22, 219, 89, 150, 68, 233, 205, 230, 70, 66, 143, 10, +193, 204, 185, 101, 176, 210, 198, 172, 30, 65, 98, 41, 46, 14, 116, 80, + 2, 90, 195, 37, 123, 138, 42, 91, 240, 6, 13, 71, 111, 112, 157, 126, + 16, 206, 18, 39, 213, 76, 79, 214, 121, 48, 104, 54, 117, 125, 228, 237, +128, 106, 144, 55, 162, 94, 118, 170, 197, 127, 61, 175, 165, 229, 25, 97, +253, 77, 124, 183, 11, 238, 173, 75, 34, 245, 231, 115, 35, 33, 200, 5, +225, 102, 221, 179, 88, 105, 99, 86, 15, 161, 49, 149, 23, 7, 58, 40 +}; + +/* This is the inverse of ebox or the base 45 logarithm */ +static const unsigned char safer_lbox[256] = { +128, 0, 176, 9, 96, 239, 185, 253, 16, 18, 159, 228, 105, 186, 173, 248, +192, 56, 194, 101, 79, 6, 148, 252, 25, 222, 106, 27, 93, 78, 168, 130, +112, 237, 232, 236, 114, 179, 21, 195, 255, 171, 182, 71, 68, 1, 172, 37, +201, 250, 142, 65, 26, 33, 203, 211, 13, 110, 254, 38, 88, 218, 50, 15, + 32, 169, 157, 132, 152, 5, 156, 187, 34, 140, 99, 231, 197, 225, 115, 198, +175, 36, 91, 135, 102, 39, 247, 87, 244, 150, 177, 183, 92, 139, 213, 84, +121, 223, 170, 246, 62, 163, 241, 17, 202, 245, 209, 23, 123, 147, 131, 188, +189, 82, 30, 235, 174, 204, 214, 53, 8, 200, 138, 180, 226, 205, 191, 217, +208, 80, 89, 63, 77, 98, 52, 10, 72, 136, 181, 86, 76, 46, 107, 158, +210, 61, 60, 3, 19, 251, 151, 81, 117, 74, 145, 113, 35, 190, 118, 42, + 95, 249, 212, 85, 11, 220, 55, 49, 22, 116, 215, 119, 167, 230, 7, 219, +164, 47, 70, 243, 97, 69, 103, 227, 12, 162, 59, 28, 133, 24, 4, 29, + 41, 160, 143, 178, 90, 216, 166, 126, 238, 141, 83, 75, 161, 154, 193, 14, +122, 73, 165, 44, 129, 196, 199, 54, 43, 127, 67, 149, 51, 242, 108, 104, +109, 240, 2, 40, 206, 221, 155, 234, 94, 153, 124, 20, 134, 207, 229, 66, +184, 64, 120, 45, 58, 233, 100, 31, 146, 144, 125, 57, 111, 224, 137, 48 +}; + +#endif /* __LTC_SAFER_TAB_C__ */ + + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/ciphers/safer/saferp.c b/fsbl/lib/libtomcrypt/src/ciphers/safer/saferp.c new file mode 100644 index 000000000..116590ff6 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/ciphers/safer/saferp.c @@ -0,0 +1,568 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file saferp.c + LTC_SAFER+ Implementation by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_SAFERP + +#define __LTC_SAFER_TAB_C__ +#include "safer_tab.c" + +const struct ltc_cipher_descriptor saferp_desc = +{ + "safer+", + 4, + 16, 32, 16, 8, + &saferp_setup, + &saferp_ecb_encrypt, + &saferp_ecb_decrypt, + &saferp_test, + &saferp_done, + &saferp_keysize, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + +/* ROUND(b,i) + * + * This is one forward key application. Note the basic form is + * key addition, substitution, key addition. The safer_ebox and safer_lbox + * are the exponentiation box and logarithm boxes respectively. + * The value of 'i' is the current round number which allows this + * function to be unrolled massively. Most of LTC_SAFER+'s speed + * comes from not having to compute indirect accesses into the + * array of 16 bytes b[0..15] which is the block of data +*/ + +#define ROUND(b, i) do { \ + b[0] = (safer_ebox[(b[0] ^ skey->saferp.K[i][0]) & 255] + skey->saferp.K[i+1][0]) & 255; \ + b[1] = safer_lbox[(b[1] + skey->saferp.K[i][1]) & 255] ^ skey->saferp.K[i+1][1]; \ + b[2] = safer_lbox[(b[2] + skey->saferp.K[i][2]) & 255] ^ skey->saferp.K[i+1][2]; \ + b[3] = (safer_ebox[(b[3] ^ skey->saferp.K[i][3]) & 255] + skey->saferp.K[i+1][3]) & 255; \ + b[4] = (safer_ebox[(b[4] ^ skey->saferp.K[i][4]) & 255] + skey->saferp.K[i+1][4]) & 255; \ + b[5] = safer_lbox[(b[5] + skey->saferp.K[i][5]) & 255] ^ skey->saferp.K[i+1][5]; \ + b[6] = safer_lbox[(b[6] + skey->saferp.K[i][6]) & 255] ^ skey->saferp.K[i+1][6]; \ + b[7] = (safer_ebox[(b[7] ^ skey->saferp.K[i][7]) & 255] + skey->saferp.K[i+1][7]) & 255; \ + b[8] = (safer_ebox[(b[8] ^ skey->saferp.K[i][8]) & 255] + skey->saferp.K[i+1][8]) & 255; \ + b[9] = safer_lbox[(b[9] + skey->saferp.K[i][9]) & 255] ^ skey->saferp.K[i+1][9]; \ + b[10] = safer_lbox[(b[10] + skey->saferp.K[i][10]) & 255] ^ skey->saferp.K[i+1][10]; \ + b[11] = (safer_ebox[(b[11] ^ skey->saferp.K[i][11]) & 255] + skey->saferp.K[i+1][11]) & 255; \ + b[12] = (safer_ebox[(b[12] ^ skey->saferp.K[i][12]) & 255] + skey->saferp.K[i+1][12]) & 255; \ + b[13] = safer_lbox[(b[13] + skey->saferp.K[i][13]) & 255] ^ skey->saferp.K[i+1][13]; \ + b[14] = safer_lbox[(b[14] + skey->saferp.K[i][14]) & 255] ^ skey->saferp.K[i+1][14]; \ + b[15] = (safer_ebox[(b[15] ^ skey->saferp.K[i][15]) & 255] + skey->saferp.K[i+1][15]) & 255; \ +} while (0) + +/* This is one inverse key application */ +#define iROUND(b, i) do { \ + b[0] = safer_lbox[(b[0] - skey->saferp.K[i+1][0]) & 255] ^ skey->saferp.K[i][0]; \ + b[1] = (safer_ebox[(b[1] ^ skey->saferp.K[i+1][1]) & 255] - skey->saferp.K[i][1]) & 255; \ + b[2] = (safer_ebox[(b[2] ^ skey->saferp.K[i+1][2]) & 255] - skey->saferp.K[i][2]) & 255; \ + b[3] = safer_lbox[(b[3] - skey->saferp.K[i+1][3]) & 255] ^ skey->saferp.K[i][3]; \ + b[4] = safer_lbox[(b[4] - skey->saferp.K[i+1][4]) & 255] ^ skey->saferp.K[i][4]; \ + b[5] = (safer_ebox[(b[5] ^ skey->saferp.K[i+1][5]) & 255] - skey->saferp.K[i][5]) & 255; \ + b[6] = (safer_ebox[(b[6] ^ skey->saferp.K[i+1][6]) & 255] - skey->saferp.K[i][6]) & 255; \ + b[7] = safer_lbox[(b[7] - skey->saferp.K[i+1][7]) & 255] ^ skey->saferp.K[i][7]; \ + b[8] = safer_lbox[(b[8] - skey->saferp.K[i+1][8]) & 255] ^ skey->saferp.K[i][8]; \ + b[9] = (safer_ebox[(b[9] ^ skey->saferp.K[i+1][9]) & 255] - skey->saferp.K[i][9]) & 255; \ + b[10] = (safer_ebox[(b[10] ^ skey->saferp.K[i+1][10]) & 255] - skey->saferp.K[i][10]) & 255; \ + b[11] = safer_lbox[(b[11] - skey->saferp.K[i+1][11]) & 255] ^ skey->saferp.K[i][11]; \ + b[12] = safer_lbox[(b[12] - skey->saferp.K[i+1][12]) & 255] ^ skey->saferp.K[i][12]; \ + b[13] = (safer_ebox[(b[13] ^ skey->saferp.K[i+1][13]) & 255] - skey->saferp.K[i][13]) & 255; \ + b[14] = (safer_ebox[(b[14] ^ skey->saferp.K[i+1][14]) & 255] - skey->saferp.K[i][14]) & 255; \ + b[15] = safer_lbox[(b[15] - skey->saferp.K[i+1][15]) & 255] ^ skey->saferp.K[i][15]; \ +} while (0) + +/* This is a forward single layer PHT transform. */ +#define PHT(b) do { \ + b[0] = (b[0] + (b[1] = (b[0] + b[1]) & 255)) & 255; \ + b[2] = (b[2] + (b[3] = (b[3] + b[2]) & 255)) & 255; \ + b[4] = (b[4] + (b[5] = (b[5] + b[4]) & 255)) & 255; \ + b[6] = (b[6] + (b[7] = (b[7] + b[6]) & 255)) & 255; \ + b[8] = (b[8] + (b[9] = (b[9] + b[8]) & 255)) & 255; \ + b[10] = (b[10] + (b[11] = (b[11] + b[10]) & 255)) & 255; \ + b[12] = (b[12] + (b[13] = (b[13] + b[12]) & 255)) & 255; \ + b[14] = (b[14] + (b[15] = (b[15] + b[14]) & 255)) & 255; \ +} while (0) + +/* This is an inverse single layer PHT transform */ +#define iPHT(b) do { \ + b[15] = (b[15] - (b[14] = (b[14] - b[15]) & 255)) & 255; \ + b[13] = (b[13] - (b[12] = (b[12] - b[13]) & 255)) & 255; \ + b[11] = (b[11] - (b[10] = (b[10] - b[11]) & 255)) & 255; \ + b[9] = (b[9] - (b[8] = (b[8] - b[9]) & 255)) & 255; \ + b[7] = (b[7] - (b[6] = (b[6] - b[7]) & 255)) & 255; \ + b[5] = (b[5] - (b[4] = (b[4] - b[5]) & 255)) & 255; \ + b[3] = (b[3] - (b[2] = (b[2] - b[3]) & 255)) & 255; \ + b[1] = (b[1] - (b[0] = (b[0] - b[1]) & 255)) & 255; \ + } while (0) + +/* This is the "Armenian" Shuffle. It takes the input from b and stores it in b2 */ +#define SHUF(b, b2) do { \ + b2[0] = b[8]; b2[1] = b[11]; b2[2] = b[12]; b2[3] = b[15]; \ + b2[4] = b[2]; b2[5] = b[1]; b2[6] = b[6]; b2[7] = b[5]; \ + b2[8] = b[10]; b2[9] = b[9]; b2[10] = b[14]; b2[11] = b[13]; \ + b2[12] = b[0]; b2[13] = b[7]; b2[14] = b[4]; b2[15] = b[3]; \ +} while (0) + +/* This is the inverse shuffle. It takes from b and gives to b2 */ +#define iSHUF(b, b2) do { \ + b2[0] = b[12]; b2[1] = b[5]; b2[2] = b[4]; b2[3] = b[15]; \ + b2[4] = b[14]; b2[5] = b[7]; b2[6] = b[6]; b2[7] = b[13]; \ + b2[8] = b[0]; b2[9] = b[9]; b2[10] = b[8]; b2[11] = b[1]; \ + b2[12] = b[2]; b2[13] = b[11]; b2[14] = b[10]; b2[15] = b[3]; \ +} while (0) + +/* The complete forward Linear Transform layer. + * Note that alternating usage of b and b2. + * Each round of LT starts in 'b' and ends in 'b2'. + */ +#define LT(b, b2) do { \ + PHT(b); SHUF(b, b2); \ + PHT(b2); SHUF(b2, b); \ + PHT(b); SHUF(b, b2); \ + PHT(b2); \ +} while (0) + +/* This is the inverse linear transform layer. */ +#define iLT(b, b2) do { \ + iPHT(b); \ + iSHUF(b, b2); iPHT(b2); \ + iSHUF(b2, b); iPHT(b); \ + iSHUF(b, b2); iPHT(b2); \ +} while (0) + +#ifdef LTC_SMALL_CODE + +static void _round(unsigned char *b, int i, symmetric_key *skey) +{ + ROUND(b, i); +} + +static void _iround(unsigned char *b, int i, symmetric_key *skey) +{ + iROUND(b, i); +} + +static void _lt(unsigned char *b, unsigned char *b2) +{ + LT(b, b2); +} + +static void _ilt(unsigned char *b, unsigned char *b2) +{ + iLT(b, b2); +} + +#undef ROUND +#define ROUND(b, i) _round(b, i, skey) + +#undef iROUND +#define iROUND(b, i) _iround(b, i, skey) + +#undef LT +#define LT(b, b2) _lt(b, b2) + +#undef iLT +#define iLT(b, b2) _ilt(b, b2) + +#endif + +/* These are the 33, 128-bit bias words for the key schedule */ +static const unsigned char safer_bias[33][16] = { +{ 70, 151, 177, 186, 163, 183, 16, 10, 197, 55, 179, 201, 90, 40, 172, 100}, +{ 236, 171, 170, 198, 103, 149, 88, 13, 248, 154, 246, 110, 102, 220, 5, 61}, +{ 138, 195, 216, 137, 106, 233, 54, 73, 67, 191, 235, 212, 150, 155, 104, 160}, +{ 93, 87, 146, 31, 213, 113, 92, 187, 34, 193, 190, 123, 188, 153, 99, 148}, +{ 42, 97, 184, 52, 50, 25, 253, 251, 23, 64, 230, 81, 29, 65, 68, 143}, +{ 221, 4, 128, 222, 231, 49, 214, 127, 1, 162, 247, 57, 218, 111, 35, 202}, +{ 58, 208, 28, 209, 48, 62, 18, 161, 205, 15, 224, 168, 175, 130, 89, 44}, +{ 125, 173, 178, 239, 194, 135, 206, 117, 6, 19, 2, 144, 79, 46, 114, 51}, +{ 192, 141, 207, 169, 129, 226, 196, 39, 47, 108, 122, 159, 82, 225, 21, 56}, +{ 252, 32, 66, 199, 8, 228, 9, 85, 94, 140, 20, 118, 96, 255, 223, 215}, +{ 250, 11, 33, 0, 26, 249, 166, 185, 232, 158, 98, 76, 217, 145, 80, 210}, +{ 24, 180, 7, 132, 234, 91, 164, 200, 14, 203, 72, 105, 75, 78, 156, 53}, +{ 69, 77, 84, 229, 37, 60, 12, 74, 139, 63, 204, 167, 219, 107, 174, 244}, +{ 45, 243, 124, 109, 157, 181, 38, 116, 242, 147, 83, 176, 240, 17, 237, 131}, +{ 182, 3, 22, 115, 59, 30, 142, 112, 189, 134, 27, 71, 126, 36, 86, 241}, +{ 136, 70, 151, 177, 186, 163, 183, 16, 10, 197, 55, 179, 201, 90, 40, 172}, +{ 220, 134, 119, 215, 166, 17, 251, 244, 186, 146, 145, 100, 131, 241, 51, 239}, +{ 44, 181, 178, 43, 136, 209, 153, 203, 140, 132, 29, 20, 129, 151, 113, 202}, +{ 163, 139, 87, 60, 130, 196, 82, 92, 28, 232, 160, 4, 180, 133, 74, 246}, +{ 84, 182, 223, 12, 26, 142, 222, 224, 57, 252, 32, 155, 36, 78, 169, 152}, +{ 171, 242, 96, 208, 108, 234, 250, 199, 217, 0, 212, 31, 110, 67, 188, 236}, +{ 137, 254, 122, 93, 73, 201, 50, 194, 249, 154, 248, 109, 22, 219, 89, 150}, +{ 233, 205, 230, 70, 66, 143, 10, 193, 204, 185, 101, 176, 210, 198, 172, 30}, +{ 98, 41, 46, 14, 116, 80, 2, 90, 195, 37, 123, 138, 42, 91, 240, 6}, +{ 71, 111, 112, 157, 126, 16, 206, 18, 39, 213, 76, 79, 214, 121, 48, 104}, +{ 117, 125, 228, 237, 128, 106, 144, 55, 162, 94, 118, 170, 197, 127, 61, 175}, +{ 229, 25, 97, 253, 77, 124, 183, 11, 238, 173, 75, 34, 245, 231, 115, 35}, +{ 200, 5, 225, 102, 221, 179, 88, 105, 99, 86, 15, 161, 49, 149, 23, 7}, +{ 40, 1, 45, 226, 147, 190, 69, 21, 174, 120, 3, 135, 164, 184, 56, 207}, +{ 8, 103, 9, 148, 235, 38, 168, 107, 189, 24, 52, 27, 187, 191, 114, 247}, +{ 53, 72, 156, 81, 47, 59, 85, 227, 192, 159, 216, 211, 243, 141, 177, 255}, +{ 62, 220, 134, 119, 215, 166, 17, 251, 244, 186, 146, 145, 100, 131, 241, 51}}; + + /** + Initialize the LTC_SAFER+ block cipher + @param key The symmetric key you wish to pass + @param keylen The key length in bytes + @param num_rounds The number of rounds desired (0 for default) + @param skey The key in as scheduled by this function. + @return CRYPT_OK if successful + */ +int saferp_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +{ + unsigned x, y, z; + unsigned char t[33]; + static const int rounds[3] = { 8, 12, 16 }; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(skey != NULL); + + /* check arguments */ + if (keylen != 16 && keylen != 24 && keylen != 32) { + return CRYPT_INVALID_KEYSIZE; + } + + /* Is the number of rounds valid? Either use zero for default or + * 8,12,16 rounds for 16,24,32 byte keys + */ + if (num_rounds != 0 && num_rounds != rounds[(keylen/8)-2]) { + return CRYPT_INVALID_ROUNDS; + } + + /* 128 bit key version */ + if (keylen == 16) { + /* copy key into t */ + for (x = y = 0; x < 16; x++) { + t[x] = key[x]; + y ^= key[x]; + } + t[16] = y; + + /* make round keys */ + for (x = 0; x < 16; x++) { + skey->saferp.K[0][x] = t[x]; + } + + /* make the 16 other keys as a transformation of the first key */ + for (x = 1; x < 17; x++) { + /* rotate 3 bits each */ + for (y = 0; y < 17; y++) { + t[y] = ((t[y]<<3)|(t[y]>>5)) & 255; + } + + /* select and add */ + z = x; + for (y = 0; y < 16; y++) { + skey->saferp.K[x][y] = (t[z] + safer_bias[x-1][y]) & 255; + if (++z == 17) { z = 0; } + } + } + skey->saferp.rounds = 8; + } else if (keylen == 24) { + /* copy key into t */ + for (x = y = 0; x < 24; x++) { + t[x] = key[x]; + y ^= key[x]; + } + t[24] = y; + + /* make round keys */ + for (x = 0; x < 16; x++) { + skey->saferp.K[0][x] = t[x]; + } + + for (x = 1; x < 25; x++) { + /* rotate 3 bits each */ + for (y = 0; y < 25; y++) { + t[y] = ((t[y]<<3)|(t[y]>>5)) & 255; + } + + /* select and add */ + z = x; + for (y = 0; y < 16; y++) { + skey->saferp.K[x][y] = (t[z] + safer_bias[x-1][y]) & 255; + if (++z == 25) { z = 0; } + } + } + skey->saferp.rounds = 12; + } else { + /* copy key into t */ + for (x = y = 0; x < 32; x++) { + t[x] = key[x]; + y ^= key[x]; + } + t[32] = y; + + /* make round keys */ + for (x = 0; x < 16; x++) { + skey->saferp.K[0][x] = t[x]; + } + + for (x = 1; x < 33; x++) { + /* rotate 3 bits each */ + for (y = 0; y < 33; y++) { + t[y] = ((t[y]<<3)|(t[y]>>5)) & 255; + } + + /* select and add */ + z = x; + for (y = 0; y < 16; y++) { + skey->saferp.K[x][y] = (t[z] + safer_bias[x-1][y]) & 255; + if (++z == 33) { z = 0; } + } + } + skey->saferp.rounds = 16; + } +#ifdef LTC_CLEAN_STACK + zeromem(t, sizeof(t)); +#endif + return CRYPT_OK; +} + +/** + Encrypts a block of text with LTC_SAFER+ + @param pt The input plaintext (16 bytes) + @param ct The output ciphertext (16 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +int saferp_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +{ + unsigned char b[16]; + int x; + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + + /* do eight rounds */ + for (x = 0; x < 16; x++) { + b[x] = pt[x]; + } + ROUND(b, 0); LT(b, ct); + ROUND(ct, 2); LT(ct, b); + ROUND(b, 4); LT(b, ct); + ROUND(ct, 6); LT(ct, b); + ROUND(b, 8); LT(b, ct); + ROUND(ct, 10); LT(ct, b); + ROUND(b, 12); LT(b, ct); + ROUND(ct, 14); LT(ct, b); + /* 192-bit key? */ + if (skey->saferp.rounds > 8) { + ROUND(b, 16); LT(b, ct); + ROUND(ct, 18); LT(ct, b); + ROUND(b, 20); LT(b, ct); + ROUND(ct, 22); LT(ct, b); + } + /* 256-bit key? */ + if (skey->saferp.rounds > 12) { + ROUND(b, 24); LT(b, ct); + ROUND(ct, 26); LT(ct, b); + ROUND(b, 28); LT(b, ct); + ROUND(ct, 30); LT(ct, b); + } + ct[0] = b[0] ^ skey->saferp.K[skey->saferp.rounds*2][0]; + ct[1] = (b[1] + skey->saferp.K[skey->saferp.rounds*2][1]) & 255; + ct[2] = (b[2] + skey->saferp.K[skey->saferp.rounds*2][2]) & 255; + ct[3] = b[3] ^ skey->saferp.K[skey->saferp.rounds*2][3]; + ct[4] = b[4] ^ skey->saferp.K[skey->saferp.rounds*2][4]; + ct[5] = (b[5] + skey->saferp.K[skey->saferp.rounds*2][5]) & 255; + ct[6] = (b[6] + skey->saferp.K[skey->saferp.rounds*2][6]) & 255; + ct[7] = b[7] ^ skey->saferp.K[skey->saferp.rounds*2][7]; + ct[8] = b[8] ^ skey->saferp.K[skey->saferp.rounds*2][8]; + ct[9] = (b[9] + skey->saferp.K[skey->saferp.rounds*2][9]) & 255; + ct[10] = (b[10] + skey->saferp.K[skey->saferp.rounds*2][10]) & 255; + ct[11] = b[11] ^ skey->saferp.K[skey->saferp.rounds*2][11]; + ct[12] = b[12] ^ skey->saferp.K[skey->saferp.rounds*2][12]; + ct[13] = (b[13] + skey->saferp.K[skey->saferp.rounds*2][13]) & 255; + ct[14] = (b[14] + skey->saferp.K[skey->saferp.rounds*2][14]) & 255; + ct[15] = b[15] ^ skey->saferp.K[skey->saferp.rounds*2][15]; +#ifdef LTC_CLEAN_STACK + zeromem(b, sizeof(b)); +#endif + return CRYPT_OK; +} + +/** + Decrypts a block of text with LTC_SAFER+ + @param ct The input ciphertext (16 bytes) + @param pt The output plaintext (16 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +int saferp_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +{ + unsigned char b[16]; + int x; + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + + /* do eight rounds */ + b[0] = ct[0] ^ skey->saferp.K[skey->saferp.rounds*2][0]; + b[1] = (ct[1] - skey->saferp.K[skey->saferp.rounds*2][1]) & 255; + b[2] = (ct[2] - skey->saferp.K[skey->saferp.rounds*2][2]) & 255; + b[3] = ct[3] ^ skey->saferp.K[skey->saferp.rounds*2][3]; + b[4] = ct[4] ^ skey->saferp.K[skey->saferp.rounds*2][4]; + b[5] = (ct[5] - skey->saferp.K[skey->saferp.rounds*2][5]) & 255; + b[6] = (ct[6] - skey->saferp.K[skey->saferp.rounds*2][6]) & 255; + b[7] = ct[7] ^ skey->saferp.K[skey->saferp.rounds*2][7]; + b[8] = ct[8] ^ skey->saferp.K[skey->saferp.rounds*2][8]; + b[9] = (ct[9] - skey->saferp.K[skey->saferp.rounds*2][9]) & 255; + b[10] = (ct[10] - skey->saferp.K[skey->saferp.rounds*2][10]) & 255; + b[11] = ct[11] ^ skey->saferp.K[skey->saferp.rounds*2][11]; + b[12] = ct[12] ^ skey->saferp.K[skey->saferp.rounds*2][12]; + b[13] = (ct[13] - skey->saferp.K[skey->saferp.rounds*2][13]) & 255; + b[14] = (ct[14] - skey->saferp.K[skey->saferp.rounds*2][14]) & 255; + b[15] = ct[15] ^ skey->saferp.K[skey->saferp.rounds*2][15]; + /* 256-bit key? */ + if (skey->saferp.rounds > 12) { + iLT(b, pt); iROUND(pt, 30); + iLT(pt, b); iROUND(b, 28); + iLT(b, pt); iROUND(pt, 26); + iLT(pt, b); iROUND(b, 24); + } + /* 192-bit key? */ + if (skey->saferp.rounds > 8) { + iLT(b, pt); iROUND(pt, 22); + iLT(pt, b); iROUND(b, 20); + iLT(b, pt); iROUND(pt, 18); + iLT(pt, b); iROUND(b, 16); + } + iLT(b, pt); iROUND(pt, 14); + iLT(pt, b); iROUND(b, 12); + iLT(b, pt); iROUND(pt,10); + iLT(pt, b); iROUND(b, 8); + iLT(b, pt); iROUND(pt,6); + iLT(pt, b); iROUND(b, 4); + iLT(b, pt); iROUND(pt,2); + iLT(pt, b); iROUND(b, 0); + for (x = 0; x < 16; x++) { + pt[x] = b[x]; + } +#ifdef LTC_CLEAN_STACK + zeromem(b, sizeof(b)); +#endif + return CRYPT_OK; +} + +/** + Performs a self-test of the LTC_SAFER+ block cipher + @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled +*/ +int saferp_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const struct { + int keylen; + unsigned char key[32], pt[16], ct[16]; + } tests[] = { + { + 16, + { 41, 35, 190, 132, 225, 108, 214, 174, + 82, 144, 73, 241, 241, 187, 233, 235 }, + { 179, 166, 219, 60, 135, 12, 62, 153, + 36, 94, 13, 28, 6, 183, 71, 222 }, + { 224, 31, 182, 10, 12, 255, 84, 70, + 127, 13, 89, 249, 9, 57, 165, 220 } + }, { + 24, + { 72, 211, 143, 117, 230, 217, 29, 42, + 229, 192, 247, 43, 120, 129, 135, 68, + 14, 95, 80, 0, 212, 97, 141, 190 }, + { 123, 5, 21, 7, 59, 51, 130, 31, + 24, 112, 146, 218, 100, 84, 206, 177 }, + { 92, 136, 4, 63, 57, 95, 100, 0, + 150, 130, 130, 16, 193, 111, 219, 133 } + }, { + 32, + { 243, 168, 141, 254, 190, 242, 235, 113, + 255, 160, 208, 59, 117, 6, 140, 126, + 135, 120, 115, 77, 208, 190, 130, 190, + 219, 194, 70, 65, 43, 140, 250, 48 }, + { 127, 112, 240, 167, 84, 134, 50, 149, + 170, 91, 104, 19, 11, 230, 252, 245 }, + { 88, 11, 25, 36, 172, 229, 202, 213, + 170, 65, 105, 153, 220, 104, 153, 138 } + } + }; + + unsigned char tmp[2][16]; + symmetric_key skey; + int err, i, y; + + for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { + if ((err = saferp_setup(tests[i].key, tests[i].keylen, 0, &skey)) != CRYPT_OK) { + return err; + } + saferp_ecb_encrypt(tests[i].pt, tmp[0], &skey); + saferp_ecb_decrypt(tmp[0], tmp[1], &skey); + + /* compare */ + if (compare_testvector(tmp[0], 16, tests[i].ct, 16, "Safer+ Encrypt", i) || + compare_testvector(tmp[1], 16, tests[i].pt, 16, "Safer+ Decrypt", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 16; y++) tmp[0][y] = 0; + for (y = 0; y < 1000; y++) saferp_ecb_encrypt(tmp[0], tmp[0], &skey); + for (y = 0; y < 1000; y++) saferp_ecb_decrypt(tmp[0], tmp[0], &skey); + for (y = 0; y < 16; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; + } + + return CRYPT_OK; + #endif +} + +/** Terminate the context + @param skey The scheduled key +*/ +void saferp_done(symmetric_key *skey) +{ + LTC_UNUSED_PARAM(skey); +} + +/** + Gets suitable key size + @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. + @return CRYPT_OK if the input key size is acceptable. +*/ +int saferp_keysize(int *keysize) +{ + LTC_ARGCHK(keysize != NULL); + + if (*keysize < 16) + return CRYPT_INVALID_KEYSIZE; + if (*keysize < 24) { + *keysize = 16; + } else if (*keysize < 32) { + *keysize = 24; + } else { + *keysize = 32; + } + return CRYPT_OK; +} + +#endif + + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/ciphers/skipjack.c b/fsbl/lib/libtomcrypt/src/ciphers/skipjack.c new file mode 100644 index 000000000..d47f2d304 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/ciphers/skipjack.c @@ -0,0 +1,343 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file skipjack.c + Skipjack Implementation by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_SKIPJACK + +const struct ltc_cipher_descriptor skipjack_desc = +{ + "skipjack", + 17, + 10, 10, 8, 32, + &skipjack_setup, + &skipjack_ecb_encrypt, + &skipjack_ecb_decrypt, + &skipjack_test, + &skipjack_done, + &skipjack_keysize, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + +static const unsigned char sbox[256] = { + 0xa3,0xd7,0x09,0x83,0xf8,0x48,0xf6,0xf4,0xb3,0x21,0x15,0x78,0x99,0xb1,0xaf,0xf9, + 0xe7,0x2d,0x4d,0x8a,0xce,0x4c,0xca,0x2e,0x52,0x95,0xd9,0x1e,0x4e,0x38,0x44,0x28, + 0x0a,0xdf,0x02,0xa0,0x17,0xf1,0x60,0x68,0x12,0xb7,0x7a,0xc3,0xe9,0xfa,0x3d,0x53, + 0x96,0x84,0x6b,0xba,0xf2,0x63,0x9a,0x19,0x7c,0xae,0xe5,0xf5,0xf7,0x16,0x6a,0xa2, + 0x39,0xb6,0x7b,0x0f,0xc1,0x93,0x81,0x1b,0xee,0xb4,0x1a,0xea,0xd0,0x91,0x2f,0xb8, + 0x55,0xb9,0xda,0x85,0x3f,0x41,0xbf,0xe0,0x5a,0x58,0x80,0x5f,0x66,0x0b,0xd8,0x90, + 0x35,0xd5,0xc0,0xa7,0x33,0x06,0x65,0x69,0x45,0x00,0x94,0x56,0x6d,0x98,0x9b,0x76, + 0x97,0xfc,0xb2,0xc2,0xb0,0xfe,0xdb,0x20,0xe1,0xeb,0xd6,0xe4,0xdd,0x47,0x4a,0x1d, + 0x42,0xed,0x9e,0x6e,0x49,0x3c,0xcd,0x43,0x27,0xd2,0x07,0xd4,0xde,0xc7,0x67,0x18, + 0x89,0xcb,0x30,0x1f,0x8d,0xc6,0x8f,0xaa,0xc8,0x74,0xdc,0xc9,0x5d,0x5c,0x31,0xa4, + 0x70,0x88,0x61,0x2c,0x9f,0x0d,0x2b,0x87,0x50,0x82,0x54,0x64,0x26,0x7d,0x03,0x40, + 0x34,0x4b,0x1c,0x73,0xd1,0xc4,0xfd,0x3b,0xcc,0xfb,0x7f,0xab,0xe6,0x3e,0x5b,0xa5, + 0xad,0x04,0x23,0x9c,0x14,0x51,0x22,0xf0,0x29,0x79,0x71,0x7e,0xff,0x8c,0x0e,0xe2, + 0x0c,0xef,0xbc,0x72,0x75,0x6f,0x37,0xa1,0xec,0xd3,0x8e,0x62,0x8b,0x86,0x10,0xe8, + 0x08,0x77,0x11,0xbe,0x92,0x4f,0x24,0xc5,0x32,0x36,0x9d,0xcf,0xf3,0xa6,0xbb,0xac, + 0x5e,0x6c,0xa9,0x13,0x57,0x25,0xb5,0xe3,0xbd,0xa8,0x3a,0x01,0x05,0x59,0x2a,0x46 +}; + +/* simple x + 1 (mod 10) in one step. */ +static const int keystep[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 }; + +/* simple x - 1 (mod 10) in one step */ +static const int ikeystep[] = { 9, 0, 1, 2, 3, 4, 5, 6, 7, 8 }; + + /** + Initialize the Skipjack block cipher + @param key The symmetric key you wish to pass + @param keylen The key length in bytes + @param num_rounds The number of rounds desired (0 for default) + @param skey The key in as scheduled by this function. + @return CRYPT_OK if successful + */ +int skipjack_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +{ + int x; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(skey != NULL); + + if (keylen != 10) { + return CRYPT_INVALID_KEYSIZE; + } + + if (num_rounds != 32 && num_rounds != 0) { + return CRYPT_INVALID_ROUNDS; + } + + /* make sure the key is in range for platforms where CHAR_BIT != 8 */ + for (x = 0; x < 10; x++) { + skey->skipjack.key[x] = key[x] & 255; + } + + return CRYPT_OK; +} + +#define RULE_A \ + tmp = g_func(w1, &kp, skey->skipjack.key); \ + w1 = tmp ^ w4 ^ x; \ + w4 = w3; w3 = w2; \ + w2 = tmp; + +#define RULE_B \ + tmp = g_func(w1, &kp, skey->skipjack.key); \ + tmp1 = w4; w4 = w3; \ + w3 = w1 ^ w2 ^ x; \ + w1 = tmp1; w2 = tmp; + +#define RULE_A1 \ + tmp = w1 ^ w2 ^ x; \ + w1 = ig_func(w2, &kp, skey->skipjack.key); \ + w2 = w3; w3 = w4; w4 = tmp; + +#define RULE_B1 \ + tmp = ig_func(w2, &kp, skey->skipjack.key); \ + w2 = tmp ^ w3 ^ x; \ + w3 = w4; w4 = w1; w1 = tmp; + +static unsigned g_func(unsigned w, int *kp, unsigned char *key) +{ + unsigned char g1,g2; + + g1 = (w >> 8) & 255; g2 = w & 255; + g1 ^= sbox[g2^key[*kp]]; *kp = keystep[*kp]; + g2 ^= sbox[g1^key[*kp]]; *kp = keystep[*kp]; + g1 ^= sbox[g2^key[*kp]]; *kp = keystep[*kp]; + g2 ^= sbox[g1^key[*kp]]; *kp = keystep[*kp]; + return ((unsigned)g1<<8)|(unsigned)g2; +} + +static unsigned ig_func(unsigned w, int *kp, unsigned char *key) +{ + unsigned char g1,g2; + + g1 = (w >> 8) & 255; g2 = w & 255; + *kp = ikeystep[*kp]; g2 ^= sbox[g1^key[*kp]]; + *kp = ikeystep[*kp]; g1 ^= sbox[g2^key[*kp]]; + *kp = ikeystep[*kp]; g2 ^= sbox[g1^key[*kp]]; + *kp = ikeystep[*kp]; g1 ^= sbox[g2^key[*kp]]; + return ((unsigned)g1<<8)|(unsigned)g2; +} + +/** + Encrypts a block of text with Skipjack + @param pt The input plaintext (8 bytes) + @param ct The output ciphertext (8 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +#ifdef LTC_CLEAN_STACK +static int _skipjack_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +#else +int skipjack_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +#endif +{ + unsigned w1,w2,w3,w4,tmp,tmp1; + int x, kp; + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + + /* load block */ + w1 = ((unsigned)pt[0]<<8)|pt[1]; + w2 = ((unsigned)pt[2]<<8)|pt[3]; + w3 = ((unsigned)pt[4]<<8)|pt[5]; + w4 = ((unsigned)pt[6]<<8)|pt[7]; + + /* 8 rounds of RULE A */ + for (x = 1, kp = 0; x < 9; x++) { + RULE_A; + } + + /* 8 rounds of RULE B */ + for (; x < 17; x++) { + RULE_B; + } + + /* 8 rounds of RULE A */ + for (; x < 25; x++) { + RULE_A; + } + + /* 8 rounds of RULE B */ + for (; x < 33; x++) { + RULE_B; + } + + /* store block */ + ct[0] = (w1>>8)&255; ct[1] = w1&255; + ct[2] = (w2>>8)&255; ct[3] = w2&255; + ct[4] = (w3>>8)&255; ct[5] = w3&255; + ct[6] = (w4>>8)&255; ct[7] = w4&255; + + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +int skipjack_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +{ + int err = _skipjack_ecb_encrypt(pt, ct, skey); + burn_stack(sizeof(unsigned) * 8 + sizeof(int) * 2); + return err; +} +#endif + +/** + Decrypts a block of text with Skipjack + @param ct The input ciphertext (8 bytes) + @param pt The output plaintext (8 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +#ifdef LTC_CLEAN_STACK +static int _skipjack_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +#else +int skipjack_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +#endif +{ + unsigned w1,w2,w3,w4,tmp; + int x, kp; + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + + /* load block */ + w1 = ((unsigned)ct[0]<<8)|ct[1]; + w2 = ((unsigned)ct[2]<<8)|ct[3]; + w3 = ((unsigned)ct[4]<<8)|ct[5]; + w4 = ((unsigned)ct[6]<<8)|ct[7]; + + /* 8 rounds of RULE B^-1 + + Note the value "kp = 8" comes from "kp = (32 * 4) mod 10" where 32*4 is 128 which mod 10 is 8 + */ + for (x = 32, kp = 8; x > 24; x--) { + RULE_B1; + } + + /* 8 rounds of RULE A^-1 */ + for (; x > 16; x--) { + RULE_A1; + } + + + /* 8 rounds of RULE B^-1 */ + for (; x > 8; x--) { + RULE_B1; + } + + /* 8 rounds of RULE A^-1 */ + for (; x > 0; x--) { + RULE_A1; + } + + /* store block */ + pt[0] = (w1>>8)&255; pt[1] = w1&255; + pt[2] = (w2>>8)&255; pt[3] = w2&255; + pt[4] = (w3>>8)&255; pt[5] = w3&255; + pt[6] = (w4>>8)&255; pt[7] = w4&255; + + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +int skipjack_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +{ + int err = _skipjack_ecb_decrypt(ct, pt, skey); + burn_stack(sizeof(unsigned) * 7 + sizeof(int) * 2); + return err; +} +#endif + +/** + Performs a self-test of the Skipjack block cipher + @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled +*/ +int skipjack_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const struct { + unsigned char key[10], pt[8], ct[8]; + } tests[] = { + { + { 0x00, 0x99, 0x88, 0x77, 0x66, 0x55, 0x44, 0x33, 0x22, 0x11 }, + { 0x33, 0x22, 0x11, 0x00, 0xdd, 0xcc, 0xbb, 0xaa }, + { 0x25, 0x87, 0xca, 0xe2, 0x7a, 0x12, 0xd3, 0x00 } + } + }; + unsigned char buf[2][8]; + int x, y, err; + symmetric_key key; + + for (x = 0; x < (int)(sizeof(tests) / sizeof(tests[0])); x++) { + /* setup key */ + if ((err = skipjack_setup(tests[x].key, 10, 0, &key)) != CRYPT_OK) { + return err; + } + + /* encrypt and decrypt */ + skipjack_ecb_encrypt(tests[x].pt, buf[0], &key); + skipjack_ecb_decrypt(buf[0], buf[1], &key); + + /* compare */ + if (compare_testvector(buf[0], 8, tests[x].ct, 8, "Skipjack Encrypt", x) != 0 || + compare_testvector(buf[1], 8, tests[x].pt, 8, "Skipjack Decrypt", x) != 0) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 8; y++) buf[0][y] = 0; + for (y = 0; y < 1000; y++) skipjack_ecb_encrypt(buf[0], buf[0], &key); + for (y = 0; y < 1000; y++) skipjack_ecb_decrypt(buf[0], buf[0], &key); + for (y = 0; y < 8; y++) if (buf[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; + } + + return CRYPT_OK; + #endif +} + +/** Terminate the context + @param skey The scheduled key +*/ +void skipjack_done(symmetric_key *skey) +{ + LTC_UNUSED_PARAM(skey); +} + +/** + Gets suitable key size + @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. + @return CRYPT_OK if the input key size is acceptable. +*/ +int skipjack_keysize(int *keysize) +{ + LTC_ARGCHK(keysize != NULL); + if (*keysize < 10) { + return CRYPT_INVALID_KEYSIZE; + } else if (*keysize > 10) { + *keysize = 10; + } + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/ciphers/twofish/twofish.c b/fsbl/lib/libtomcrypt/src/ciphers/twofish/twofish.c new file mode 100644 index 000000000..b1584d195 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/ciphers/twofish/twofish.c @@ -0,0 +1,711 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + + /** + @file twofish.c + Implementation of Twofish by Tom St Denis + */ +#include "tomcrypt.h" + +#ifdef LTC_TWOFISH + +/* first LTC_TWOFISH_ALL_TABLES must ensure LTC_TWOFISH_TABLES is defined */ +#ifdef LTC_TWOFISH_ALL_TABLES +#ifndef LTC_TWOFISH_TABLES +#define LTC_TWOFISH_TABLES +#endif +#endif + +const struct ltc_cipher_descriptor twofish_desc = +{ + "twofish", + 7, + 16, 32, 16, 16, + &twofish_setup, + &twofish_ecb_encrypt, + &twofish_ecb_decrypt, + &twofish_test, + &twofish_done, + &twofish_keysize, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + +/* the two polynomials */ +#define MDS_POLY 0x169 +#define RS_POLY 0x14D + +/* The 4x8 RS Linear Transform */ +static const unsigned char RS[4][8] = { + { 0x01, 0xA4, 0x55, 0x87, 0x5A, 0x58, 0xDB, 0x9E }, + { 0xA4, 0x56, 0x82, 0xF3, 0X1E, 0XC6, 0X68, 0XE5 }, + { 0X02, 0XA1, 0XFC, 0XC1, 0X47, 0XAE, 0X3D, 0X19 }, + { 0XA4, 0X55, 0X87, 0X5A, 0X58, 0XDB, 0X9E, 0X03 } +}; + +#ifdef LTC_TWOFISH_SMALL +/* sbox usage orderings */ +static const unsigned char qord[4][5] = { + { 1, 1, 0, 0, 1 }, + { 0, 1, 1, 0, 0 }, + { 0, 0, 0, 1, 1 }, + { 1, 0, 1, 1, 0 } +}; +#endif /* LTC_TWOFISH_SMALL */ + +#ifdef LTC_TWOFISH_TABLES + +#define __LTC_TWOFISH_TAB_C__ +#include "twofish_tab.c" + +#define sbox(i, x) ((ulong32)SBOX[i][(x)&255]) + +#else + +/* The Q-box tables */ +static const unsigned char qbox[2][4][16] = { +{ + { 0x8, 0x1, 0x7, 0xD, 0x6, 0xF, 0x3, 0x2, 0x0, 0xB, 0x5, 0x9, 0xE, 0xC, 0xA, 0x4 }, + { 0xE, 0XC, 0XB, 0X8, 0X1, 0X2, 0X3, 0X5, 0XF, 0X4, 0XA, 0X6, 0X7, 0X0, 0X9, 0XD }, + { 0XB, 0XA, 0X5, 0XE, 0X6, 0XD, 0X9, 0X0, 0XC, 0X8, 0XF, 0X3, 0X2, 0X4, 0X7, 0X1 }, + { 0XD, 0X7, 0XF, 0X4, 0X1, 0X2, 0X6, 0XE, 0X9, 0XB, 0X3, 0X0, 0X8, 0X5, 0XC, 0XA } +}, +{ + { 0X2, 0X8, 0XB, 0XD, 0XF, 0X7, 0X6, 0XE, 0X3, 0X1, 0X9, 0X4, 0X0, 0XA, 0XC, 0X5 }, + { 0X1, 0XE, 0X2, 0XB, 0X4, 0XC, 0X3, 0X7, 0X6, 0XD, 0XA, 0X5, 0XF, 0X9, 0X0, 0X8 }, + { 0X4, 0XC, 0X7, 0X5, 0X1, 0X6, 0X9, 0XA, 0X0, 0XE, 0XD, 0X8, 0X2, 0XB, 0X3, 0XF }, + { 0xB, 0X9, 0X5, 0X1, 0XC, 0X3, 0XD, 0XE, 0X6, 0X4, 0X7, 0XF, 0X2, 0X0, 0X8, 0XA } +} +}; + +/* computes S_i[x] */ +#ifdef LTC_CLEAN_STACK +static ulong32 _sbox(int i, ulong32 x) +#else +static ulong32 sbox(int i, ulong32 x) +#endif +{ + unsigned char a0,b0,a1,b1,a2,b2,a3,b3,a4,b4,y; + + /* a0,b0 = [x/16], x mod 16 */ + a0 = (unsigned char)((x>>4)&15); + b0 = (unsigned char)((x)&15); + + /* a1 = a0 ^ b0 */ + a1 = a0 ^ b0; + + /* b1 = a0 ^ ROR(b0, 1) ^ 8a0 */ + b1 = (a0 ^ ((b0<<3)|(b0>>1)) ^ (a0<<3)) & 15; + + /* a2,b2 = t0[a1], t1[b1] */ + a2 = qbox[i][0][(int)a1]; + b2 = qbox[i][1][(int)b1]; + + /* a3 = a2 ^ b2 */ + a3 = a2 ^ b2; + + /* b3 = a2 ^ ROR(b2, 1) ^ 8a2 */ + b3 = (a2 ^ ((b2<<3)|(b2>>1)) ^ (a2<<3)) & 15; + + /* a4,b4 = t2[a3], t3[b3] */ + a4 = qbox[i][2][(int)a3]; + b4 = qbox[i][3][(int)b3]; + + /* y = 16b4 + a4 */ + y = (b4 << 4) + a4; + + /* return result */ + return (ulong32)y; +} + +#ifdef LTC_CLEAN_STACK +static ulong32 sbox(int i, ulong32 x) +{ + ulong32 y; + y = _sbox(i, x); + burn_stack(sizeof(unsigned char) * 11); + return y; +} +#endif /* LTC_CLEAN_STACK */ + +#endif /* LTC_TWOFISH_TABLES */ + +/* computes ab mod p */ +static ulong32 gf_mult(ulong32 a, ulong32 b, ulong32 p) +{ + ulong32 result, B[2], P[2]; + + P[1] = p; + B[1] = b; + result = P[0] = B[0] = 0; + + /* unrolled branchless GF multiplier */ + result ^= B[a&1]; a >>= 1; B[1] = P[B[1]>>7] ^ (B[1] << 1); + result ^= B[a&1]; a >>= 1; B[1] = P[B[1]>>7] ^ (B[1] << 1); + result ^= B[a&1]; a >>= 1; B[1] = P[B[1]>>7] ^ (B[1] << 1); + result ^= B[a&1]; a >>= 1; B[1] = P[B[1]>>7] ^ (B[1] << 1); + result ^= B[a&1]; a >>= 1; B[1] = P[B[1]>>7] ^ (B[1] << 1); + result ^= B[a&1]; a >>= 1; B[1] = P[B[1]>>7] ^ (B[1] << 1); + result ^= B[a&1]; a >>= 1; B[1] = P[B[1]>>7] ^ (B[1] << 1); + result ^= B[a&1]; + + return result; +} + +/* computes [y0 y1 y2 y3] = MDS . [x0] */ +#ifndef LTC_TWOFISH_TABLES +static ulong32 mds_column_mult(unsigned char in, int col) +{ + ulong32 x01, x5B, xEF; + + x01 = in; + x5B = gf_mult(in, 0x5B, MDS_POLY); + xEF = gf_mult(in, 0xEF, MDS_POLY); + + switch (col) { + case 0: + return (x01 << 0 ) | + (x5B << 8 ) | + (xEF << 16) | + (xEF << 24); + case 1: + return (xEF << 0 ) | + (xEF << 8 ) | + (x5B << 16) | + (x01 << 24); + case 2: + return (x5B << 0 ) | + (xEF << 8 ) | + (x01 << 16) | + (xEF << 24); + case 3: + return (x5B << 0 ) | + (x01 << 8 ) | + (xEF << 16) | + (x5B << 24); + } + /* avoid warnings, we'd never get here normally but just to calm compiler warnings... */ + return 0; +} + +#else /* !LTC_TWOFISH_TABLES */ + +#define mds_column_mult(x, i) mds_tab[i][x] + +#endif /* LTC_TWOFISH_TABLES */ + +/* Computes [y0 y1 y2 y3] = MDS . [x0 x1 x2 x3] */ +static void mds_mult(const unsigned char *in, unsigned char *out) +{ + int x; + ulong32 tmp; + for (tmp = x = 0; x < 4; x++) { + tmp ^= mds_column_mult(in[x], x); + } + STORE32L(tmp, out); +} + +#ifdef LTC_TWOFISH_ALL_TABLES +/* computes [y0 y1 y2 y3] = RS . [x0 x1 x2 x3 x4 x5 x6 x7] */ +static void rs_mult(const unsigned char *in, unsigned char *out) +{ + ulong32 tmp; + tmp = rs_tab0[in[0]] ^ rs_tab1[in[1]] ^ rs_tab2[in[2]] ^ rs_tab3[in[3]] ^ + rs_tab4[in[4]] ^ rs_tab5[in[5]] ^ rs_tab6[in[6]] ^ rs_tab7[in[7]]; + STORE32L(tmp, out); +} + +#else /* !LTC_TWOFISH_ALL_TABLES */ + +/* computes [y0 y1 y2 y3] = RS . [x0 x1 x2 x3 x4 x5 x6 x7] */ +static void rs_mult(const unsigned char *in, unsigned char *out) +{ + int x, y; + for (x = 0; x < 4; x++) { + out[x] = 0; + for (y = 0; y < 8; y++) { + out[x] ^= gf_mult(in[y], RS[x][y], RS_POLY); + } + } +} + +#endif + +/* computes h(x) */ +static void h_func(const unsigned char *in, unsigned char *out, unsigned char *M, int k, int offset) +{ + int x; + unsigned char y[4]; + for (x = 0; x < 4; x++) { + y[x] = in[x]; + } + switch (k) { + case 4: + y[0] = (unsigned char)(sbox(1, (ulong32)y[0]) ^ M[4 * (6 + offset) + 0]); + y[1] = (unsigned char)(sbox(0, (ulong32)y[1]) ^ M[4 * (6 + offset) + 1]); + y[2] = (unsigned char)(sbox(0, (ulong32)y[2]) ^ M[4 * (6 + offset) + 2]); + y[3] = (unsigned char)(sbox(1, (ulong32)y[3]) ^ M[4 * (6 + offset) + 3]); + /* FALLTHROUGH */ + case 3: + y[0] = (unsigned char)(sbox(1, (ulong32)y[0]) ^ M[4 * (4 + offset) + 0]); + y[1] = (unsigned char)(sbox(1, (ulong32)y[1]) ^ M[4 * (4 + offset) + 1]); + y[2] = (unsigned char)(sbox(0, (ulong32)y[2]) ^ M[4 * (4 + offset) + 2]); + y[3] = (unsigned char)(sbox(0, (ulong32)y[3]) ^ M[4 * (4 + offset) + 3]); + /* FALLTHROUGH */ + case 2: + y[0] = (unsigned char)(sbox(1, sbox(0, sbox(0, (ulong32)y[0]) ^ M[4 * (2 + offset) + 0]) ^ M[4 * (0 + offset) + 0])); + y[1] = (unsigned char)(sbox(0, sbox(0, sbox(1, (ulong32)y[1]) ^ M[4 * (2 + offset) + 1]) ^ M[4 * (0 + offset) + 1])); + y[2] = (unsigned char)(sbox(1, sbox(1, sbox(0, (ulong32)y[2]) ^ M[4 * (2 + offset) + 2]) ^ M[4 * (0 + offset) + 2])); + y[3] = (unsigned char)(sbox(0, sbox(1, sbox(1, (ulong32)y[3]) ^ M[4 * (2 + offset) + 3]) ^ M[4 * (0 + offset) + 3])); + /* FALLTHROUGH */ + } + mds_mult(y, out); +} + +#ifndef LTC_TWOFISH_SMALL + +/* for GCC we don't use pointer aliases */ +#if defined(__GNUC__) + #define S1 skey->twofish.S[0] + #define S2 skey->twofish.S[1] + #define S3 skey->twofish.S[2] + #define S4 skey->twofish.S[3] +#endif + +/* the G function */ +#define g_func(x, dum) (S1[byte(x,0)] ^ S2[byte(x,1)] ^ S3[byte(x,2)] ^ S4[byte(x,3)]) +#define g1_func(x, dum) (S2[byte(x,0)] ^ S3[byte(x,1)] ^ S4[byte(x,2)] ^ S1[byte(x,3)]) + +#else + +#ifdef LTC_CLEAN_STACK +static ulong32 _g_func(ulong32 x, symmetric_key *key) +#else +static ulong32 g_func(ulong32 x, symmetric_key *key) +#endif +{ + unsigned char g, i, y, z; + ulong32 res; + + res = 0; + for (y = 0; y < 4; y++) { + z = key->twofish.start; + + /* do unkeyed substitution */ + g = sbox(qord[y][z++], (x >> (8*y)) & 255); + + /* first subkey */ + i = 0; + + /* do key mixing+sbox until z==5 */ + while (z != 5) { + g = g ^ key->twofish.S[4*i++ + y]; + g = sbox(qord[y][z++], g); + } + + /* multiply g by a column of the MDS */ + res ^= mds_column_mult(g, y); + } + return res; +} + +#define g1_func(x, key) g_func(ROLc(x, 8), key) + +#ifdef LTC_CLEAN_STACK +static ulong32 g_func(ulong32 x, symmetric_key *key) +{ + ulong32 y; + y = _g_func(x, key); + burn_stack(sizeof(unsigned char) * 4 + sizeof(ulong32)); + return y; +} +#endif /* LTC_CLEAN_STACK */ + +#endif /* LTC_TWOFISH_SMALL */ + + /** + Initialize the Twofish block cipher + @param key The symmetric key you wish to pass + @param keylen The key length in bytes + @param num_rounds The number of rounds desired (0 for default) + @param skey The key in as scheduled by this function. + @return CRYPT_OK if successful + */ +#ifdef LTC_CLEAN_STACK +static int _twofish_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +#else +int twofish_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +#endif +{ +#ifndef LTC_TWOFISH_SMALL + unsigned char S[4*4], tmpx0, tmpx1; +#endif + int k, x, y; + unsigned char tmp[4], tmp2[4], M[8*4]; + ulong32 A, B; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(skey != NULL); + + /* invalid arguments? */ + if (num_rounds != 16 && num_rounds != 0) { + return CRYPT_INVALID_ROUNDS; + } + + if (keylen != 16 && keylen != 24 && keylen != 32) { + return CRYPT_INVALID_KEYSIZE; + } + + /* k = keysize/64 [but since our keysize is in bytes...] */ + k = keylen / 8; + + /* copy the key into M */ + for (x = 0; x < keylen; x++) { + M[x] = key[x] & 255; + } + + /* create the S[..] words */ +#ifndef LTC_TWOFISH_SMALL + for (x = 0; x < k; x++) { + rs_mult(M+(x*8), S+(x*4)); + } +#else + for (x = 0; x < k; x++) { + rs_mult(M+(x*8), skey->twofish.S+(x*4)); + } +#endif + + /* make subkeys */ + for (x = 0; x < 20; x++) { + /* A = h(p * 2x, Me) */ + for (y = 0; y < 4; y++) { + tmp[y] = x+x; + } + h_func(tmp, tmp2, M, k, 0); + LOAD32L(A, tmp2); + + /* B = ROL(h(p * (2x + 1), Mo), 8) */ + for (y = 0; y < 4; y++) { + tmp[y] = (unsigned char)(x+x+1); + } + h_func(tmp, tmp2, M, k, 1); + LOAD32L(B, tmp2); + B = ROLc(B, 8); + + /* K[2i] = A + B */ + skey->twofish.K[x+x] = (A + B) & 0xFFFFFFFFUL; + + /* K[2i+1] = (A + 2B) <<< 9 */ + skey->twofish.K[x+x+1] = ROLc(B + B + A, 9); + } + +#ifndef LTC_TWOFISH_SMALL + /* make the sboxes (large ram variant) */ + if (k == 2) { + for (x = 0; x < 256; x++) { + tmpx0 = (unsigned char)sbox(0, x); + tmpx1 = (unsigned char)sbox(1, x); + skey->twofish.S[0][x] = mds_column_mult(sbox(1, (sbox(0, tmpx0 ^ S[0]) ^ S[4])),0); + skey->twofish.S[1][x] = mds_column_mult(sbox(0, (sbox(0, tmpx1 ^ S[1]) ^ S[5])),1); + skey->twofish.S[2][x] = mds_column_mult(sbox(1, (sbox(1, tmpx0 ^ S[2]) ^ S[6])),2); + skey->twofish.S[3][x] = mds_column_mult(sbox(0, (sbox(1, tmpx1 ^ S[3]) ^ S[7])),3); + } + } else if (k == 3) { + for (x = 0; x < 256; x++) { + tmpx0 = (unsigned char)sbox(0, x); + tmpx1 = (unsigned char)sbox(1, x); + skey->twofish.S[0][x] = mds_column_mult(sbox(1, (sbox(0, sbox(0, tmpx1 ^ S[0]) ^ S[4]) ^ S[8])),0); + skey->twofish.S[1][x] = mds_column_mult(sbox(0, (sbox(0, sbox(1, tmpx1 ^ S[1]) ^ S[5]) ^ S[9])),1); + skey->twofish.S[2][x] = mds_column_mult(sbox(1, (sbox(1, sbox(0, tmpx0 ^ S[2]) ^ S[6]) ^ S[10])),2); + skey->twofish.S[3][x] = mds_column_mult(sbox(0, (sbox(1, sbox(1, tmpx0 ^ S[3]) ^ S[7]) ^ S[11])),3); + } + } else { + for (x = 0; x < 256; x++) { + tmpx0 = (unsigned char)sbox(0, x); + tmpx1 = (unsigned char)sbox(1, x); + skey->twofish.S[0][x] = mds_column_mult(sbox(1, (sbox(0, sbox(0, sbox(1, tmpx1 ^ S[0]) ^ S[4]) ^ S[8]) ^ S[12])),0); + skey->twofish.S[1][x] = mds_column_mult(sbox(0, (sbox(0, sbox(1, sbox(1, tmpx0 ^ S[1]) ^ S[5]) ^ S[9]) ^ S[13])),1); + skey->twofish.S[2][x] = mds_column_mult(sbox(1, (sbox(1, sbox(0, sbox(0, tmpx0 ^ S[2]) ^ S[6]) ^ S[10]) ^ S[14])),2); + skey->twofish.S[3][x] = mds_column_mult(sbox(0, (sbox(1, sbox(1, sbox(0, tmpx1 ^ S[3]) ^ S[7]) ^ S[11]) ^ S[15])),3); + } + } +#else + /* where to start in the sbox layers */ + /* small ram variant */ + switch (k) { + case 4 : skey->twofish.start = 0; break; + case 3 : skey->twofish.start = 1; break; + default: skey->twofish.start = 2; break; + } +#endif + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +int twofish_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +{ + int x; + x = _twofish_setup(key, keylen, num_rounds, skey); + burn_stack(sizeof(int) * 7 + sizeof(unsigned char) * 56 + sizeof(ulong32) * 2); + return x; +} +#endif + +/** + Encrypts a block of text with Twofish + @param pt The input plaintext (16 bytes) + @param ct The output ciphertext (16 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +#ifdef LTC_CLEAN_STACK +static int _twofish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +#else +int twofish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +#endif +{ + ulong32 a,b,c,d,ta,tb,tc,td,t1,t2, *k; + int r; +#if !defined(LTC_TWOFISH_SMALL) && !defined(__GNUC__) + ulong32 *S1, *S2, *S3, *S4; +#endif + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + +#if !defined(LTC_TWOFISH_SMALL) && !defined(__GNUC__) + S1 = skey->twofish.S[0]; + S2 = skey->twofish.S[1]; + S3 = skey->twofish.S[2]; + S4 = skey->twofish.S[3]; +#endif + + LOAD32L(a,&pt[0]); LOAD32L(b,&pt[4]); + LOAD32L(c,&pt[8]); LOAD32L(d,&pt[12]); + a ^= skey->twofish.K[0]; + b ^= skey->twofish.K[1]; + c ^= skey->twofish.K[2]; + d ^= skey->twofish.K[3]; + + k = skey->twofish.K + 8; + for (r = 8; r != 0; --r) { + t2 = g1_func(b, skey); + t1 = g_func(a, skey) + t2; + c = RORc(c ^ (t1 + k[0]), 1); + d = ROLc(d, 1) ^ (t2 + t1 + k[1]); + + t2 = g1_func(d, skey); + t1 = g_func(c, skey) + t2; + a = RORc(a ^ (t1 + k[2]), 1); + b = ROLc(b, 1) ^ (t2 + t1 + k[3]); + k += 4; + } + + /* output with "undo last swap" */ + ta = c ^ skey->twofish.K[4]; + tb = d ^ skey->twofish.K[5]; + tc = a ^ skey->twofish.K[6]; + td = b ^ skey->twofish.K[7]; + + /* store output */ + STORE32L(ta,&ct[0]); STORE32L(tb,&ct[4]); + STORE32L(tc,&ct[8]); STORE32L(td,&ct[12]); + + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +int twofish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +{ + int err = _twofish_ecb_encrypt(pt, ct, skey); + burn_stack(sizeof(ulong32) * 10 + sizeof(int)); + return err; +} +#endif + +/** + Decrypts a block of text with Twofish + @param ct The input ciphertext (16 bytes) + @param pt The output plaintext (16 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +#ifdef LTC_CLEAN_STACK +static int _twofish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +#else +int twofish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +#endif +{ + ulong32 a,b,c,d,ta,tb,tc,td,t1,t2, *k; + int r; +#if !defined(LTC_TWOFISH_SMALL) && !defined(__GNUC__) + ulong32 *S1, *S2, *S3, *S4; +#endif + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + +#if !defined(LTC_TWOFISH_SMALL) && !defined(__GNUC__) + S1 = skey->twofish.S[0]; + S2 = skey->twofish.S[1]; + S3 = skey->twofish.S[2]; + S4 = skey->twofish.S[3]; +#endif + + /* load input */ + LOAD32L(ta,&ct[0]); LOAD32L(tb,&ct[4]); + LOAD32L(tc,&ct[8]); LOAD32L(td,&ct[12]); + + /* undo undo final swap */ + a = tc ^ skey->twofish.K[6]; + b = td ^ skey->twofish.K[7]; + c = ta ^ skey->twofish.K[4]; + d = tb ^ skey->twofish.K[5]; + + k = skey->twofish.K + 36; + for (r = 8; r != 0; --r) { + t2 = g1_func(d, skey); + t1 = g_func(c, skey) + t2; + a = ROLc(a, 1) ^ (t1 + k[2]); + b = RORc(b ^ (t2 + t1 + k[3]), 1); + + t2 = g1_func(b, skey); + t1 = g_func(a, skey) + t2; + c = ROLc(c, 1) ^ (t1 + k[0]); + d = RORc(d ^ (t2 + t1 + k[1]), 1); + k -= 4; + } + + /* pre-white */ + a ^= skey->twofish.K[0]; + b ^= skey->twofish.K[1]; + c ^= skey->twofish.K[2]; + d ^= skey->twofish.K[3]; + + /* store */ + STORE32L(a, &pt[0]); STORE32L(b, &pt[4]); + STORE32L(c, &pt[8]); STORE32L(d, &pt[12]); + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +int twofish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +{ + int err =_twofish_ecb_decrypt(ct, pt, skey); + burn_stack(sizeof(ulong32) * 10 + sizeof(int)); + return err; +} +#endif + +/** + Performs a self-test of the Twofish block cipher + @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled +*/ +int twofish_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const struct { + int keylen; + unsigned char key[32], pt[16], ct[16]; + } tests[] = { + { 16, + { 0x9F, 0x58, 0x9F, 0x5C, 0xF6, 0x12, 0x2C, 0x32, + 0xB6, 0xBF, 0xEC, 0x2F, 0x2A, 0xE8, 0xC3, 0x5A }, + { 0xD4, 0x91, 0xDB, 0x16, 0xE7, 0xB1, 0xC3, 0x9E, + 0x86, 0xCB, 0x08, 0x6B, 0x78, 0x9F, 0x54, 0x19 }, + { 0x01, 0x9F, 0x98, 0x09, 0xDE, 0x17, 0x11, 0x85, + 0x8F, 0xAA, 0xC3, 0xA3, 0xBA, 0x20, 0xFB, 0xC3 } + }, { + 24, + { 0x88, 0xB2, 0xB2, 0x70, 0x6B, 0x10, 0x5E, 0x36, + 0xB4, 0x46, 0xBB, 0x6D, 0x73, 0x1A, 0x1E, 0x88, + 0xEF, 0xA7, 0x1F, 0x78, 0x89, 0x65, 0xBD, 0x44 }, + { 0x39, 0xDA, 0x69, 0xD6, 0xBA, 0x49, 0x97, 0xD5, + 0x85, 0xB6, 0xDC, 0x07, 0x3C, 0xA3, 0x41, 0xB2 }, + { 0x18, 0x2B, 0x02, 0xD8, 0x14, 0x97, 0xEA, 0x45, + 0xF9, 0xDA, 0xAC, 0xDC, 0x29, 0x19, 0x3A, 0x65 } + }, { + 32, + { 0xD4, 0x3B, 0xB7, 0x55, 0x6E, 0xA3, 0x2E, 0x46, + 0xF2, 0xA2, 0x82, 0xB7, 0xD4, 0x5B, 0x4E, 0x0D, + 0x57, 0xFF, 0x73, 0x9D, 0x4D, 0xC9, 0x2C, 0x1B, + 0xD7, 0xFC, 0x01, 0x70, 0x0C, 0xC8, 0x21, 0x6F }, + { 0x90, 0xAF, 0xE9, 0x1B, 0xB2, 0x88, 0x54, 0x4F, + 0x2C, 0x32, 0xDC, 0x23, 0x9B, 0x26, 0x35, 0xE6 }, + { 0x6C, 0xB4, 0x56, 0x1C, 0x40, 0xBF, 0x0A, 0x97, + 0x05, 0x93, 0x1C, 0xB6, 0xD4, 0x08, 0xE7, 0xFA } + } +}; + + + symmetric_key key; + unsigned char tmp[2][16]; + int err, i, y; + + for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) { + if ((err = twofish_setup(tests[i].key, tests[i].keylen, 0, &key)) != CRYPT_OK) { + return err; + } + twofish_ecb_encrypt(tests[i].pt, tmp[0], &key); + twofish_ecb_decrypt(tmp[0], tmp[1], &key); + if (compare_testvector(tmp[0], 16, tests[i].ct, 16, "Twofish Encrypt", i) != 0 || + compare_testvector(tmp[1], 16, tests[i].pt, 16, "Twofish Decrypt", i) != 0) { + return CRYPT_FAIL_TESTVECTOR; + } + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 16; y++) tmp[0][y] = 0; + for (y = 0; y < 1000; y++) twofish_ecb_encrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 1000; y++) twofish_ecb_decrypt(tmp[0], tmp[0], &key); + for (y = 0; y < 16; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; + } + return CRYPT_OK; +#endif +} + +/** Terminate the context + @param skey The scheduled key +*/ +void twofish_done(symmetric_key *skey) +{ + LTC_UNUSED_PARAM(skey); +} + +/** + Gets suitable key size + @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. + @return CRYPT_OK if the input key size is acceptable. +*/ +int twofish_keysize(int *keysize) +{ + LTC_ARGCHK(keysize); + if (*keysize < 16) + return CRYPT_INVALID_KEYSIZE; + if (*keysize < 24) { + *keysize = 16; + return CRYPT_OK; + } else if (*keysize < 32) { + *keysize = 24; + return CRYPT_OK; + } else { + *keysize = 32; + return CRYPT_OK; + } +} + +#endif + + + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/ciphers/twofish/twofish_tab.c b/fsbl/lib/libtomcrypt/src/ciphers/twofish/twofish_tab.c new file mode 100644 index 000000000..b4135ab73 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/ciphers/twofish/twofish_tab.c @@ -0,0 +1,496 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + + /** + @file twofish_tab.c + Twofish tables, Tom St Denis + */ +#ifdef LTC_TWOFISH_TABLES +#ifdef __LTC_TWOFISH_TAB_C__ + +/* pre generated 8x8 tables from the four 4x4s */ +static const unsigned char SBOX[2][256] = { +{ + 0xa9, 0x67, 0xb3, 0xe8, 0x04, 0xfd, 0xa3, 0x76, 0x9a, 0x92, + 0x80, 0x78, 0xe4, 0xdd, 0xd1, 0x38, 0x0d, 0xc6, 0x35, 0x98, + 0x18, 0xf7, 0xec, 0x6c, 0x43, 0x75, 0x37, 0x26, 0xfa, 0x13, + 0x94, 0x48, 0xf2, 0xd0, 0x8b, 0x30, 0x84, 0x54, 0xdf, 0x23, + 0x19, 0x5b, 0x3d, 0x59, 0xf3, 0xae, 0xa2, 0x82, 0x63, 0x01, + 0x83, 0x2e, 0xd9, 0x51, 0x9b, 0x7c, 0xa6, 0xeb, 0xa5, 0xbe, + 0x16, 0x0c, 0xe3, 0x61, 0xc0, 0x8c, 0x3a, 0xf5, 0x73, 0x2c, + 0x25, 0x0b, 0xbb, 0x4e, 0x89, 0x6b, 0x53, 0x6a, 0xb4, 0xf1, + 0xe1, 0xe6, 0xbd, 0x45, 0xe2, 0xf4, 0xb6, 0x66, 0xcc, 0x95, + 0x03, 0x56, 0xd4, 0x1c, 0x1e, 0xd7, 0xfb, 0xc3, 0x8e, 0xb5, + 0xe9, 0xcf, 0xbf, 0xba, 0xea, 0x77, 0x39, 0xaf, 0x33, 0xc9, + 0x62, 0x71, 0x81, 0x79, 0x09, 0xad, 0x24, 0xcd, 0xf9, 0xd8, + 0xe5, 0xc5, 0xb9, 0x4d, 0x44, 0x08, 0x86, 0xe7, 0xa1, 0x1d, + 0xaa, 0xed, 0x06, 0x70, 0xb2, 0xd2, 0x41, 0x7b, 0xa0, 0x11, + 0x31, 0xc2, 0x27, 0x90, 0x20, 0xf6, 0x60, 0xff, 0x96, 0x5c, + 0xb1, 0xab, 0x9e, 0x9c, 0x52, 0x1b, 0x5f, 0x93, 0x0a, 0xef, + 0x91, 0x85, 0x49, 0xee, 0x2d, 0x4f, 0x8f, 0x3b, 0x47, 0x87, + 0x6d, 0x46, 0xd6, 0x3e, 0x69, 0x64, 0x2a, 0xce, 0xcb, 0x2f, + 0xfc, 0x97, 0x05, 0x7a, 0xac, 0x7f, 0xd5, 0x1a, 0x4b, 0x0e, + 0xa7, 0x5a, 0x28, 0x14, 0x3f, 0x29, 0x88, 0x3c, 0x4c, 0x02, + 0xb8, 0xda, 0xb0, 0x17, 0x55, 0x1f, 0x8a, 0x7d, 0x57, 0xc7, + 0x8d, 0x74, 0xb7, 0xc4, 0x9f, 0x72, 0x7e, 0x15, 0x22, 0x12, + 0x58, 0x07, 0x99, 0x34, 0x6e, 0x50, 0xde, 0x68, 0x65, 0xbc, + 0xdb, 0xf8, 0xc8, 0xa8, 0x2b, 0x40, 0xdc, 0xfe, 0x32, 0xa4, + 0xca, 0x10, 0x21, 0xf0, 0xd3, 0x5d, 0x0f, 0x00, 0x6f, 0x9d, + 0x36, 0x42, 0x4a, 0x5e, 0xc1, 0xe0}, +{ + 0x75, 0xf3, 0xc6, 0xf4, 0xdb, 0x7b, 0xfb, 0xc8, 0x4a, 0xd3, + 0xe6, 0x6b, 0x45, 0x7d, 0xe8, 0x4b, 0xd6, 0x32, 0xd8, 0xfd, + 0x37, 0x71, 0xf1, 0xe1, 0x30, 0x0f, 0xf8, 0x1b, 0x87, 0xfa, + 0x06, 0x3f, 0x5e, 0xba, 0xae, 0x5b, 0x8a, 0x00, 0xbc, 0x9d, + 0x6d, 0xc1, 0xb1, 0x0e, 0x80, 0x5d, 0xd2, 0xd5, 0xa0, 0x84, + 0x07, 0x14, 0xb5, 0x90, 0x2c, 0xa3, 0xb2, 0x73, 0x4c, 0x54, + 0x92, 0x74, 0x36, 0x51, 0x38, 0xb0, 0xbd, 0x5a, 0xfc, 0x60, + 0x62, 0x96, 0x6c, 0x42, 0xf7, 0x10, 0x7c, 0x28, 0x27, 0x8c, + 0x13, 0x95, 0x9c, 0xc7, 0x24, 0x46, 0x3b, 0x70, 0xca, 0xe3, + 0x85, 0xcb, 0x11, 0xd0, 0x93, 0xb8, 0xa6, 0x83, 0x20, 0xff, + 0x9f, 0x77, 0xc3, 0xcc, 0x03, 0x6f, 0x08, 0xbf, 0x40, 0xe7, + 0x2b, 0xe2, 0x79, 0x0c, 0xaa, 0x82, 0x41, 0x3a, 0xea, 0xb9, + 0xe4, 0x9a, 0xa4, 0x97, 0x7e, 0xda, 0x7a, 0x17, 0x66, 0x94, + 0xa1, 0x1d, 0x3d, 0xf0, 0xde, 0xb3, 0x0b, 0x72, 0xa7, 0x1c, + 0xef, 0xd1, 0x53, 0x3e, 0x8f, 0x33, 0x26, 0x5f, 0xec, 0x76, + 0x2a, 0x49, 0x81, 0x88, 0xee, 0x21, 0xc4, 0x1a, 0xeb, 0xd9, + 0xc5, 0x39, 0x99, 0xcd, 0xad, 0x31, 0x8b, 0x01, 0x18, 0x23, + 0xdd, 0x1f, 0x4e, 0x2d, 0xf9, 0x48, 0x4f, 0xf2, 0x65, 0x8e, + 0x78, 0x5c, 0x58, 0x19, 0x8d, 0xe5, 0x98, 0x57, 0x67, 0x7f, + 0x05, 0x64, 0xaf, 0x63, 0xb6, 0xfe, 0xf5, 0xb7, 0x3c, 0xa5, + 0xce, 0xe9, 0x68, 0x44, 0xe0, 0x4d, 0x43, 0x69, 0x29, 0x2e, + 0xac, 0x15, 0x59, 0xa8, 0x0a, 0x9e, 0x6e, 0x47, 0xdf, 0x34, + 0x35, 0x6a, 0xcf, 0xdc, 0x22, 0xc9, 0xc0, 0x9b, 0x89, 0xd4, + 0xed, 0xab, 0x12, 0xa2, 0x0d, 0x52, 0xbb, 0x02, 0x2f, 0xa9, + 0xd7, 0x61, 0x1e, 0xb4, 0x50, 0x04, 0xf6, 0xc2, 0x16, 0x25, + 0x86, 0x56, 0x55, 0x09, 0xbe, 0x91} +}; + +/* the 4x4 MDS in a nicer format */ +static const ulong32 mds_tab[4][256] = { +{ +0x00000000UL, 0xefef5b01UL, 0xb7b7b602UL, 0x5858ed03UL, 0x07070504UL, 0xe8e85e05UL, 0xb0b0b306UL, 0x5f5fe807UL, +0x0e0e0a08UL, 0xe1e15109UL, 0xb9b9bc0aUL, 0x5656e70bUL, 0x09090f0cUL, 0xe6e6540dUL, 0xbebeb90eUL, 0x5151e20fUL, +0x1c1c1410UL, 0xf3f34f11UL, 0xababa212UL, 0x4444f913UL, 0x1b1b1114UL, 0xf4f44a15UL, 0xacaca716UL, 0x4343fc17UL, +0x12121e18UL, 0xfdfd4519UL, 0xa5a5a81aUL, 0x4a4af31bUL, 0x15151b1cUL, 0xfafa401dUL, 0xa2a2ad1eUL, 0x4d4df61fUL, +0x38382820UL, 0xd7d77321UL, 0x8f8f9e22UL, 0x6060c523UL, 0x3f3f2d24UL, 0xd0d07625UL, 0x88889b26UL, 0x6767c027UL, +0x36362228UL, 0xd9d97929UL, 0x8181942aUL, 0x6e6ecf2bUL, 0x3131272cUL, 0xdede7c2dUL, 0x8686912eUL, 0x6969ca2fUL, +0x24243c30UL, 0xcbcb6731UL, 0x93938a32UL, 0x7c7cd133UL, 0x23233934UL, 0xcccc6235UL, 0x94948f36UL, 0x7b7bd437UL, +0x2a2a3638UL, 0xc5c56d39UL, 0x9d9d803aUL, 0x7272db3bUL, 0x2d2d333cUL, 0xc2c2683dUL, 0x9a9a853eUL, 0x7575de3fUL, +0x70705040UL, 0x9f9f0b41UL, 0xc7c7e642UL, 0x2828bd43UL, 0x77775544UL, 0x98980e45UL, 0xc0c0e346UL, 0x2f2fb847UL, +0x7e7e5a48UL, 0x91910149UL, 0xc9c9ec4aUL, 0x2626b74bUL, 0x79795f4cUL, 0x9696044dUL, 0xcecee94eUL, 0x2121b24fUL, +0x6c6c4450UL, 0x83831f51UL, 0xdbdbf252UL, 0x3434a953UL, 0x6b6b4154UL, 0x84841a55UL, 0xdcdcf756UL, 0x3333ac57UL, +0x62624e58UL, 0x8d8d1559UL, 0xd5d5f85aUL, 0x3a3aa35bUL, 0x65654b5cUL, 0x8a8a105dUL, 0xd2d2fd5eUL, 0x3d3da65fUL, +0x48487860UL, 0xa7a72361UL, 0xffffce62UL, 0x10109563UL, 0x4f4f7d64UL, 0xa0a02665UL, 0xf8f8cb66UL, 0x17179067UL, +0x46467268UL, 0xa9a92969UL, 0xf1f1c46aUL, 0x1e1e9f6bUL, 0x4141776cUL, 0xaeae2c6dUL, 0xf6f6c16eUL, 0x19199a6fUL, +0x54546c70UL, 0xbbbb3771UL, 0xe3e3da72UL, 0x0c0c8173UL, 0x53536974UL, 0xbcbc3275UL, 0xe4e4df76UL, 0x0b0b8477UL, +0x5a5a6678UL, 0xb5b53d79UL, 0xededd07aUL, 0x02028b7bUL, 0x5d5d637cUL, 0xb2b2387dUL, 0xeaead57eUL, 0x05058e7fUL, +0xe0e0a080UL, 0x0f0ffb81UL, 0x57571682UL, 0xb8b84d83UL, 0xe7e7a584UL, 0x0808fe85UL, 0x50501386UL, 0xbfbf4887UL, +0xeeeeaa88UL, 0x0101f189UL, 0x59591c8aUL, 0xb6b6478bUL, 0xe9e9af8cUL, 0x0606f48dUL, 0x5e5e198eUL, 0xb1b1428fUL, +0xfcfcb490UL, 0x1313ef91UL, 0x4b4b0292UL, 0xa4a45993UL, 0xfbfbb194UL, 0x1414ea95UL, 0x4c4c0796UL, 0xa3a35c97UL, +0xf2f2be98UL, 0x1d1de599UL, 0x4545089aUL, 0xaaaa539bUL, 0xf5f5bb9cUL, 0x1a1ae09dUL, 0x42420d9eUL, 0xadad569fUL, +0xd8d888a0UL, 0x3737d3a1UL, 0x6f6f3ea2UL, 0x808065a3UL, 0xdfdf8da4UL, 0x3030d6a5UL, 0x68683ba6UL, 0x878760a7UL, +0xd6d682a8UL, 0x3939d9a9UL, 0x616134aaUL, 0x8e8e6fabUL, 0xd1d187acUL, 0x3e3edcadUL, 0x666631aeUL, 0x89896aafUL, +0xc4c49cb0UL, 0x2b2bc7b1UL, 0x73732ab2UL, 0x9c9c71b3UL, 0xc3c399b4UL, 0x2c2cc2b5UL, 0x74742fb6UL, 0x9b9b74b7UL, +0xcaca96b8UL, 0x2525cdb9UL, 0x7d7d20baUL, 0x92927bbbUL, 0xcdcd93bcUL, 0x2222c8bdUL, 0x7a7a25beUL, 0x95957ebfUL, +0x9090f0c0UL, 0x7f7fabc1UL, 0x272746c2UL, 0xc8c81dc3UL, 0x9797f5c4UL, 0x7878aec5UL, 0x202043c6UL, 0xcfcf18c7UL, +0x9e9efac8UL, 0x7171a1c9UL, 0x29294ccaUL, 0xc6c617cbUL, 0x9999ffccUL, 0x7676a4cdUL, 0x2e2e49ceUL, 0xc1c112cfUL, +0x8c8ce4d0UL, 0x6363bfd1UL, 0x3b3b52d2UL, 0xd4d409d3UL, 0x8b8be1d4UL, 0x6464bad5UL, 0x3c3c57d6UL, 0xd3d30cd7UL, +0x8282eed8UL, 0x6d6db5d9UL, 0x353558daUL, 0xdada03dbUL, 0x8585ebdcUL, 0x6a6ab0ddUL, 0x32325ddeUL, 0xdddd06dfUL, +0xa8a8d8e0UL, 0x474783e1UL, 0x1f1f6ee2UL, 0xf0f035e3UL, 0xafafdde4UL, 0x404086e5UL, 0x18186be6UL, 0xf7f730e7UL, +0xa6a6d2e8UL, 0x494989e9UL, 0x111164eaUL, 0xfefe3febUL, 0xa1a1d7ecUL, 0x4e4e8cedUL, 0x161661eeUL, 0xf9f93aefUL, +0xb4b4ccf0UL, 0x5b5b97f1UL, 0x03037af2UL, 0xecec21f3UL, 0xb3b3c9f4UL, 0x5c5c92f5UL, 0x04047ff6UL, 0xebeb24f7UL, +0xbabac6f8UL, 0x55559df9UL, 0x0d0d70faUL, 0xe2e22bfbUL, 0xbdbdc3fcUL, 0x525298fdUL, 0x0a0a75feUL, 0xe5e52effUL +}, +{ +0x00000000UL, 0x015befefUL, 0x02b6b7b7UL, 0x03ed5858UL, 0x04050707UL, 0x055ee8e8UL, 0x06b3b0b0UL, 0x07e85f5fUL, +0x080a0e0eUL, 0x0951e1e1UL, 0x0abcb9b9UL, 0x0be75656UL, 0x0c0f0909UL, 0x0d54e6e6UL, 0x0eb9bebeUL, 0x0fe25151UL, +0x10141c1cUL, 0x114ff3f3UL, 0x12a2ababUL, 0x13f94444UL, 0x14111b1bUL, 0x154af4f4UL, 0x16a7acacUL, 0x17fc4343UL, +0x181e1212UL, 0x1945fdfdUL, 0x1aa8a5a5UL, 0x1bf34a4aUL, 0x1c1b1515UL, 0x1d40fafaUL, 0x1eada2a2UL, 0x1ff64d4dUL, +0x20283838UL, 0x2173d7d7UL, 0x229e8f8fUL, 0x23c56060UL, 0x242d3f3fUL, 0x2576d0d0UL, 0x269b8888UL, 0x27c06767UL, +0x28223636UL, 0x2979d9d9UL, 0x2a948181UL, 0x2bcf6e6eUL, 0x2c273131UL, 0x2d7cdedeUL, 0x2e918686UL, 0x2fca6969UL, +0x303c2424UL, 0x3167cbcbUL, 0x328a9393UL, 0x33d17c7cUL, 0x34392323UL, 0x3562ccccUL, 0x368f9494UL, 0x37d47b7bUL, +0x38362a2aUL, 0x396dc5c5UL, 0x3a809d9dUL, 0x3bdb7272UL, 0x3c332d2dUL, 0x3d68c2c2UL, 0x3e859a9aUL, 0x3fde7575UL, +0x40507070UL, 0x410b9f9fUL, 0x42e6c7c7UL, 0x43bd2828UL, 0x44557777UL, 0x450e9898UL, 0x46e3c0c0UL, 0x47b82f2fUL, +0x485a7e7eUL, 0x49019191UL, 0x4aecc9c9UL, 0x4bb72626UL, 0x4c5f7979UL, 0x4d049696UL, 0x4ee9ceceUL, 0x4fb22121UL, +0x50446c6cUL, 0x511f8383UL, 0x52f2dbdbUL, 0x53a93434UL, 0x54416b6bUL, 0x551a8484UL, 0x56f7dcdcUL, 0x57ac3333UL, +0x584e6262UL, 0x59158d8dUL, 0x5af8d5d5UL, 0x5ba33a3aUL, 0x5c4b6565UL, 0x5d108a8aUL, 0x5efdd2d2UL, 0x5fa63d3dUL, +0x60784848UL, 0x6123a7a7UL, 0x62ceffffUL, 0x63951010UL, 0x647d4f4fUL, 0x6526a0a0UL, 0x66cbf8f8UL, 0x67901717UL, +0x68724646UL, 0x6929a9a9UL, 0x6ac4f1f1UL, 0x6b9f1e1eUL, 0x6c774141UL, 0x6d2caeaeUL, 0x6ec1f6f6UL, 0x6f9a1919UL, +0x706c5454UL, 0x7137bbbbUL, 0x72dae3e3UL, 0x73810c0cUL, 0x74695353UL, 0x7532bcbcUL, 0x76dfe4e4UL, 0x77840b0bUL, +0x78665a5aUL, 0x793db5b5UL, 0x7ad0ededUL, 0x7b8b0202UL, 0x7c635d5dUL, 0x7d38b2b2UL, 0x7ed5eaeaUL, 0x7f8e0505UL, +0x80a0e0e0UL, 0x81fb0f0fUL, 0x82165757UL, 0x834db8b8UL, 0x84a5e7e7UL, 0x85fe0808UL, 0x86135050UL, 0x8748bfbfUL, +0x88aaeeeeUL, 0x89f10101UL, 0x8a1c5959UL, 0x8b47b6b6UL, 0x8cafe9e9UL, 0x8df40606UL, 0x8e195e5eUL, 0x8f42b1b1UL, +0x90b4fcfcUL, 0x91ef1313UL, 0x92024b4bUL, 0x9359a4a4UL, 0x94b1fbfbUL, 0x95ea1414UL, 0x96074c4cUL, 0x975ca3a3UL, +0x98bef2f2UL, 0x99e51d1dUL, 0x9a084545UL, 0x9b53aaaaUL, 0x9cbbf5f5UL, 0x9de01a1aUL, 0x9e0d4242UL, 0x9f56adadUL, +0xa088d8d8UL, 0xa1d33737UL, 0xa23e6f6fUL, 0xa3658080UL, 0xa48ddfdfUL, 0xa5d63030UL, 0xa63b6868UL, 0xa7608787UL, +0xa882d6d6UL, 0xa9d93939UL, 0xaa346161UL, 0xab6f8e8eUL, 0xac87d1d1UL, 0xaddc3e3eUL, 0xae316666UL, 0xaf6a8989UL, +0xb09cc4c4UL, 0xb1c72b2bUL, 0xb22a7373UL, 0xb3719c9cUL, 0xb499c3c3UL, 0xb5c22c2cUL, 0xb62f7474UL, 0xb7749b9bUL, +0xb896cacaUL, 0xb9cd2525UL, 0xba207d7dUL, 0xbb7b9292UL, 0xbc93cdcdUL, 0xbdc82222UL, 0xbe257a7aUL, 0xbf7e9595UL, +0xc0f09090UL, 0xc1ab7f7fUL, 0xc2462727UL, 0xc31dc8c8UL, 0xc4f59797UL, 0xc5ae7878UL, 0xc6432020UL, 0xc718cfcfUL, +0xc8fa9e9eUL, 0xc9a17171UL, 0xca4c2929UL, 0xcb17c6c6UL, 0xccff9999UL, 0xcda47676UL, 0xce492e2eUL, 0xcf12c1c1UL, +0xd0e48c8cUL, 0xd1bf6363UL, 0xd2523b3bUL, 0xd309d4d4UL, 0xd4e18b8bUL, 0xd5ba6464UL, 0xd6573c3cUL, 0xd70cd3d3UL, +0xd8ee8282UL, 0xd9b56d6dUL, 0xda583535UL, 0xdb03dadaUL, 0xdceb8585UL, 0xddb06a6aUL, 0xde5d3232UL, 0xdf06ddddUL, +0xe0d8a8a8UL, 0xe1834747UL, 0xe26e1f1fUL, 0xe335f0f0UL, 0xe4ddafafUL, 0xe5864040UL, 0xe66b1818UL, 0xe730f7f7UL, +0xe8d2a6a6UL, 0xe9894949UL, 0xea641111UL, 0xeb3ffefeUL, 0xecd7a1a1UL, 0xed8c4e4eUL, 0xee611616UL, 0xef3af9f9UL, +0xf0ccb4b4UL, 0xf1975b5bUL, 0xf27a0303UL, 0xf321ececUL, 0xf4c9b3b3UL, 0xf5925c5cUL, 0xf67f0404UL, 0xf724ebebUL, +0xf8c6babaUL, 0xf99d5555UL, 0xfa700d0dUL, 0xfb2be2e2UL, 0xfcc3bdbdUL, 0xfd985252UL, 0xfe750a0aUL, 0xff2ee5e5UL +}, +{ +0x00000000UL, 0xef01ef5bUL, 0xb702b7b6UL, 0x580358edUL, 0x07040705UL, 0xe805e85eUL, 0xb006b0b3UL, 0x5f075fe8UL, +0x0e080e0aUL, 0xe109e151UL, 0xb90ab9bcUL, 0x560b56e7UL, 0x090c090fUL, 0xe60de654UL, 0xbe0ebeb9UL, 0x510f51e2UL, +0x1c101c14UL, 0xf311f34fUL, 0xab12aba2UL, 0x441344f9UL, 0x1b141b11UL, 0xf415f44aUL, 0xac16aca7UL, 0x431743fcUL, +0x1218121eUL, 0xfd19fd45UL, 0xa51aa5a8UL, 0x4a1b4af3UL, 0x151c151bUL, 0xfa1dfa40UL, 0xa21ea2adUL, 0x4d1f4df6UL, +0x38203828UL, 0xd721d773UL, 0x8f228f9eUL, 0x602360c5UL, 0x3f243f2dUL, 0xd025d076UL, 0x8826889bUL, 0x672767c0UL, +0x36283622UL, 0xd929d979UL, 0x812a8194UL, 0x6e2b6ecfUL, 0x312c3127UL, 0xde2dde7cUL, 0x862e8691UL, 0x692f69caUL, +0x2430243cUL, 0xcb31cb67UL, 0x9332938aUL, 0x7c337cd1UL, 0x23342339UL, 0xcc35cc62UL, 0x9436948fUL, 0x7b377bd4UL, +0x2a382a36UL, 0xc539c56dUL, 0x9d3a9d80UL, 0x723b72dbUL, 0x2d3c2d33UL, 0xc23dc268UL, 0x9a3e9a85UL, 0x753f75deUL, +0x70407050UL, 0x9f419f0bUL, 0xc742c7e6UL, 0x284328bdUL, 0x77447755UL, 0x9845980eUL, 0xc046c0e3UL, 0x2f472fb8UL, +0x7e487e5aUL, 0x91499101UL, 0xc94ac9ecUL, 0x264b26b7UL, 0x794c795fUL, 0x964d9604UL, 0xce4ecee9UL, 0x214f21b2UL, +0x6c506c44UL, 0x8351831fUL, 0xdb52dbf2UL, 0x345334a9UL, 0x6b546b41UL, 0x8455841aUL, 0xdc56dcf7UL, 0x335733acUL, +0x6258624eUL, 0x8d598d15UL, 0xd55ad5f8UL, 0x3a5b3aa3UL, 0x655c654bUL, 0x8a5d8a10UL, 0xd25ed2fdUL, 0x3d5f3da6UL, +0x48604878UL, 0xa761a723UL, 0xff62ffceUL, 0x10631095UL, 0x4f644f7dUL, 0xa065a026UL, 0xf866f8cbUL, 0x17671790UL, +0x46684672UL, 0xa969a929UL, 0xf16af1c4UL, 0x1e6b1e9fUL, 0x416c4177UL, 0xae6dae2cUL, 0xf66ef6c1UL, 0x196f199aUL, +0x5470546cUL, 0xbb71bb37UL, 0xe372e3daUL, 0x0c730c81UL, 0x53745369UL, 0xbc75bc32UL, 0xe476e4dfUL, 0x0b770b84UL, +0x5a785a66UL, 0xb579b53dUL, 0xed7aedd0UL, 0x027b028bUL, 0x5d7c5d63UL, 0xb27db238UL, 0xea7eead5UL, 0x057f058eUL, +0xe080e0a0UL, 0x0f810ffbUL, 0x57825716UL, 0xb883b84dUL, 0xe784e7a5UL, 0x088508feUL, 0x50865013UL, 0xbf87bf48UL, +0xee88eeaaUL, 0x018901f1UL, 0x598a591cUL, 0xb68bb647UL, 0xe98ce9afUL, 0x068d06f4UL, 0x5e8e5e19UL, 0xb18fb142UL, +0xfc90fcb4UL, 0x139113efUL, 0x4b924b02UL, 0xa493a459UL, 0xfb94fbb1UL, 0x149514eaUL, 0x4c964c07UL, 0xa397a35cUL, +0xf298f2beUL, 0x1d991de5UL, 0x459a4508UL, 0xaa9baa53UL, 0xf59cf5bbUL, 0x1a9d1ae0UL, 0x429e420dUL, 0xad9fad56UL, +0xd8a0d888UL, 0x37a137d3UL, 0x6fa26f3eUL, 0x80a38065UL, 0xdfa4df8dUL, 0x30a530d6UL, 0x68a6683bUL, 0x87a78760UL, +0xd6a8d682UL, 0x39a939d9UL, 0x61aa6134UL, 0x8eab8e6fUL, 0xd1acd187UL, 0x3ead3edcUL, 0x66ae6631UL, 0x89af896aUL, +0xc4b0c49cUL, 0x2bb12bc7UL, 0x73b2732aUL, 0x9cb39c71UL, 0xc3b4c399UL, 0x2cb52cc2UL, 0x74b6742fUL, 0x9bb79b74UL, +0xcab8ca96UL, 0x25b925cdUL, 0x7dba7d20UL, 0x92bb927bUL, 0xcdbccd93UL, 0x22bd22c8UL, 0x7abe7a25UL, 0x95bf957eUL, +0x90c090f0UL, 0x7fc17fabUL, 0x27c22746UL, 0xc8c3c81dUL, 0x97c497f5UL, 0x78c578aeUL, 0x20c62043UL, 0xcfc7cf18UL, +0x9ec89efaUL, 0x71c971a1UL, 0x29ca294cUL, 0xc6cbc617UL, 0x99cc99ffUL, 0x76cd76a4UL, 0x2ece2e49UL, 0xc1cfc112UL, +0x8cd08ce4UL, 0x63d163bfUL, 0x3bd23b52UL, 0xd4d3d409UL, 0x8bd48be1UL, 0x64d564baUL, 0x3cd63c57UL, 0xd3d7d30cUL, +0x82d882eeUL, 0x6dd96db5UL, 0x35da3558UL, 0xdadbda03UL, 0x85dc85ebUL, 0x6add6ab0UL, 0x32de325dUL, 0xdddfdd06UL, +0xa8e0a8d8UL, 0x47e14783UL, 0x1fe21f6eUL, 0xf0e3f035UL, 0xafe4afddUL, 0x40e54086UL, 0x18e6186bUL, 0xf7e7f730UL, +0xa6e8a6d2UL, 0x49e94989UL, 0x11ea1164UL, 0xfeebfe3fUL, 0xa1eca1d7UL, 0x4eed4e8cUL, 0x16ee1661UL, 0xf9eff93aUL, +0xb4f0b4ccUL, 0x5bf15b97UL, 0x03f2037aUL, 0xecf3ec21UL, 0xb3f4b3c9UL, 0x5cf55c92UL, 0x04f6047fUL, 0xebf7eb24UL, +0xbaf8bac6UL, 0x55f9559dUL, 0x0dfa0d70UL, 0xe2fbe22bUL, 0xbdfcbdc3UL, 0x52fd5298UL, 0x0afe0a75UL, 0xe5ffe52eUL +}, +{ +0x00000000UL, 0x5bef015bUL, 0xb6b702b6UL, 0xed5803edUL, 0x05070405UL, 0x5ee8055eUL, 0xb3b006b3UL, 0xe85f07e8UL, +0x0a0e080aUL, 0x51e10951UL, 0xbcb90abcUL, 0xe7560be7UL, 0x0f090c0fUL, 0x54e60d54UL, 0xb9be0eb9UL, 0xe2510fe2UL, +0x141c1014UL, 0x4ff3114fUL, 0xa2ab12a2UL, 0xf94413f9UL, 0x111b1411UL, 0x4af4154aUL, 0xa7ac16a7UL, 0xfc4317fcUL, +0x1e12181eUL, 0x45fd1945UL, 0xa8a51aa8UL, 0xf34a1bf3UL, 0x1b151c1bUL, 0x40fa1d40UL, 0xada21eadUL, 0xf64d1ff6UL, +0x28382028UL, 0x73d72173UL, 0x9e8f229eUL, 0xc56023c5UL, 0x2d3f242dUL, 0x76d02576UL, 0x9b88269bUL, 0xc06727c0UL, +0x22362822UL, 0x79d92979UL, 0x94812a94UL, 0xcf6e2bcfUL, 0x27312c27UL, 0x7cde2d7cUL, 0x91862e91UL, 0xca692fcaUL, +0x3c24303cUL, 0x67cb3167UL, 0x8a93328aUL, 0xd17c33d1UL, 0x39233439UL, 0x62cc3562UL, 0x8f94368fUL, 0xd47b37d4UL, +0x362a3836UL, 0x6dc5396dUL, 0x809d3a80UL, 0xdb723bdbUL, 0x332d3c33UL, 0x68c23d68UL, 0x859a3e85UL, 0xde753fdeUL, +0x50704050UL, 0x0b9f410bUL, 0xe6c742e6UL, 0xbd2843bdUL, 0x55774455UL, 0x0e98450eUL, 0xe3c046e3UL, 0xb82f47b8UL, +0x5a7e485aUL, 0x01914901UL, 0xecc94aecUL, 0xb7264bb7UL, 0x5f794c5fUL, 0x04964d04UL, 0xe9ce4ee9UL, 0xb2214fb2UL, +0x446c5044UL, 0x1f83511fUL, 0xf2db52f2UL, 0xa93453a9UL, 0x416b5441UL, 0x1a84551aUL, 0xf7dc56f7UL, 0xac3357acUL, +0x4e62584eUL, 0x158d5915UL, 0xf8d55af8UL, 0xa33a5ba3UL, 0x4b655c4bUL, 0x108a5d10UL, 0xfdd25efdUL, 0xa63d5fa6UL, +0x78486078UL, 0x23a76123UL, 0xceff62ceUL, 0x95106395UL, 0x7d4f647dUL, 0x26a06526UL, 0xcbf866cbUL, 0x90176790UL, +0x72466872UL, 0x29a96929UL, 0xc4f16ac4UL, 0x9f1e6b9fUL, 0x77416c77UL, 0x2cae6d2cUL, 0xc1f66ec1UL, 0x9a196f9aUL, +0x6c54706cUL, 0x37bb7137UL, 0xdae372daUL, 0x810c7381UL, 0x69537469UL, 0x32bc7532UL, 0xdfe476dfUL, 0x840b7784UL, +0x665a7866UL, 0x3db5793dUL, 0xd0ed7ad0UL, 0x8b027b8bUL, 0x635d7c63UL, 0x38b27d38UL, 0xd5ea7ed5UL, 0x8e057f8eUL, +0xa0e080a0UL, 0xfb0f81fbUL, 0x16578216UL, 0x4db8834dUL, 0xa5e784a5UL, 0xfe0885feUL, 0x13508613UL, 0x48bf8748UL, +0xaaee88aaUL, 0xf10189f1UL, 0x1c598a1cUL, 0x47b68b47UL, 0xafe98cafUL, 0xf4068df4UL, 0x195e8e19UL, 0x42b18f42UL, +0xb4fc90b4UL, 0xef1391efUL, 0x024b9202UL, 0x59a49359UL, 0xb1fb94b1UL, 0xea1495eaUL, 0x074c9607UL, 0x5ca3975cUL, +0xbef298beUL, 0xe51d99e5UL, 0x08459a08UL, 0x53aa9b53UL, 0xbbf59cbbUL, 0xe01a9de0UL, 0x0d429e0dUL, 0x56ad9f56UL, +0x88d8a088UL, 0xd337a1d3UL, 0x3e6fa23eUL, 0x6580a365UL, 0x8ddfa48dUL, 0xd630a5d6UL, 0x3b68a63bUL, 0x6087a760UL, +0x82d6a882UL, 0xd939a9d9UL, 0x3461aa34UL, 0x6f8eab6fUL, 0x87d1ac87UL, 0xdc3eaddcUL, 0x3166ae31UL, 0x6a89af6aUL, +0x9cc4b09cUL, 0xc72bb1c7UL, 0x2a73b22aUL, 0x719cb371UL, 0x99c3b499UL, 0xc22cb5c2UL, 0x2f74b62fUL, 0x749bb774UL, +0x96cab896UL, 0xcd25b9cdUL, 0x207dba20UL, 0x7b92bb7bUL, 0x93cdbc93UL, 0xc822bdc8UL, 0x257abe25UL, 0x7e95bf7eUL, +0xf090c0f0UL, 0xab7fc1abUL, 0x4627c246UL, 0x1dc8c31dUL, 0xf597c4f5UL, 0xae78c5aeUL, 0x4320c643UL, 0x18cfc718UL, +0xfa9ec8faUL, 0xa171c9a1UL, 0x4c29ca4cUL, 0x17c6cb17UL, 0xff99ccffUL, 0xa476cda4UL, 0x492ece49UL, 0x12c1cf12UL, +0xe48cd0e4UL, 0xbf63d1bfUL, 0x523bd252UL, 0x09d4d309UL, 0xe18bd4e1UL, 0xba64d5baUL, 0x573cd657UL, 0x0cd3d70cUL, +0xee82d8eeUL, 0xb56dd9b5UL, 0x5835da58UL, 0x03dadb03UL, 0xeb85dcebUL, 0xb06addb0UL, 0x5d32de5dUL, 0x06dddf06UL, +0xd8a8e0d8UL, 0x8347e183UL, 0x6e1fe26eUL, 0x35f0e335UL, 0xddafe4ddUL, 0x8640e586UL, 0x6b18e66bUL, 0x30f7e730UL, +0xd2a6e8d2UL, 0x8949e989UL, 0x6411ea64UL, 0x3ffeeb3fUL, 0xd7a1ecd7UL, 0x8c4eed8cUL, 0x6116ee61UL, 0x3af9ef3aUL, +0xccb4f0ccUL, 0x975bf197UL, 0x7a03f27aUL, 0x21ecf321UL, 0xc9b3f4c9UL, 0x925cf592UL, 0x7f04f67fUL, 0x24ebf724UL, +0xc6baf8c6UL, 0x9d55f99dUL, 0x700dfa70UL, 0x2be2fb2bUL, 0xc3bdfcc3UL, 0x9852fd98UL, 0x750afe75UL, 0x2ee5ff2eUL +}}; + +#ifdef LTC_TWOFISH_ALL_TABLES + +/* the 4x8 RS transform */ +static const ulong32 rs_tab0[256] = { +0x00000000LU, 0xa402a401LU, 0x05040502LU, 0xa106a103LU, 0x0a080a04LU, 0xae0aae05LU, 0x0f0c0f06LU, 0xab0eab07LU, +0x14101408LU, 0xb012b009LU, 0x1114110aLU, 0xb516b50bLU, 0x1e181e0cLU, 0xba1aba0dLU, 0x1b1c1b0eLU, 0xbf1ebf0fLU, +0x28202810LU, 0x8c228c11LU, 0x2d242d12LU, 0x89268913LU, 0x22282214LU, 0x862a8615LU, 0x272c2716LU, 0x832e8317LU, +0x3c303c18LU, 0x98329819LU, 0x3934391aLU, 0x9d369d1bLU, 0x3638361cLU, 0x923a921dLU, 0x333c331eLU, 0x973e971fLU, +0x50405020LU, 0xf442f421LU, 0x55445522LU, 0xf146f123LU, 0x5a485a24LU, 0xfe4afe25LU, 0x5f4c5f26LU, 0xfb4efb27LU, +0x44504428LU, 0xe052e029LU, 0x4154412aLU, 0xe556e52bLU, 0x4e584e2cLU, 0xea5aea2dLU, 0x4b5c4b2eLU, 0xef5eef2fLU, +0x78607830LU, 0xdc62dc31LU, 0x7d647d32LU, 0xd966d933LU, 0x72687234LU, 0xd66ad635LU, 0x776c7736LU, 0xd36ed337LU, +0x6c706c38LU, 0xc872c839LU, 0x6974693aLU, 0xcd76cd3bLU, 0x6678663cLU, 0xc27ac23dLU, 0x637c633eLU, 0xc77ec73fLU, +0xa080a040LU, 0x04820441LU, 0xa584a542LU, 0x01860143LU, 0xaa88aa44LU, 0x0e8a0e45LU, 0xaf8caf46LU, 0x0b8e0b47LU, +0xb490b448LU, 0x10921049LU, 0xb194b14aLU, 0x1596154bLU, 0xbe98be4cLU, 0x1a9a1a4dLU, 0xbb9cbb4eLU, 0x1f9e1f4fLU, +0x88a08850LU, 0x2ca22c51LU, 0x8da48d52LU, 0x29a62953LU, 0x82a88254LU, 0x26aa2655LU, 0x87ac8756LU, 0x23ae2357LU, +0x9cb09c58LU, 0x38b23859LU, 0x99b4995aLU, 0x3db63d5bLU, 0x96b8965cLU, 0x32ba325dLU, 0x93bc935eLU, 0x37be375fLU, +0xf0c0f060LU, 0x54c25461LU, 0xf5c4f562LU, 0x51c65163LU, 0xfac8fa64LU, 0x5eca5e65LU, 0xffccff66LU, 0x5bce5b67LU, +0xe4d0e468LU, 0x40d24069LU, 0xe1d4e16aLU, 0x45d6456bLU, 0xeed8ee6cLU, 0x4ada4a6dLU, 0xebdceb6eLU, 0x4fde4f6fLU, +0xd8e0d870LU, 0x7ce27c71LU, 0xdde4dd72LU, 0x79e67973LU, 0xd2e8d274LU, 0x76ea7675LU, 0xd7ecd776LU, 0x73ee7377LU, +0xccf0cc78LU, 0x68f26879LU, 0xc9f4c97aLU, 0x6df66d7bLU, 0xc6f8c67cLU, 0x62fa627dLU, 0xc3fcc37eLU, 0x67fe677fLU, +0x0d4d0d80LU, 0xa94fa981LU, 0x08490882LU, 0xac4bac83LU, 0x07450784LU, 0xa347a385LU, 0x02410286LU, 0xa643a687LU, +0x195d1988LU, 0xbd5fbd89LU, 0x1c591c8aLU, 0xb85bb88bLU, 0x1355138cLU, 0xb757b78dLU, 0x1651168eLU, 0xb253b28fLU, +0x256d2590LU, 0x816f8191LU, 0x20692092LU, 0x846b8493LU, 0x2f652f94LU, 0x8b678b95LU, 0x2a612a96LU, 0x8e638e97LU, +0x317d3198LU, 0x957f9599LU, 0x3479349aLU, 0x907b909bLU, 0x3b753b9cLU, 0x9f779f9dLU, 0x3e713e9eLU, 0x9a739a9fLU, +0x5d0d5da0LU, 0xf90ff9a1LU, 0x580958a2LU, 0xfc0bfca3LU, 0x570557a4LU, 0xf307f3a5LU, 0x520152a6LU, 0xf603f6a7LU, +0x491d49a8LU, 0xed1feda9LU, 0x4c194caaLU, 0xe81be8abLU, 0x431543acLU, 0xe717e7adLU, 0x461146aeLU, 0xe213e2afLU, +0x752d75b0LU, 0xd12fd1b1LU, 0x702970b2LU, 0xd42bd4b3LU, 0x7f257fb4LU, 0xdb27dbb5LU, 0x7a217ab6LU, 0xde23deb7LU, +0x613d61b8LU, 0xc53fc5b9LU, 0x643964baLU, 0xc03bc0bbLU, 0x6b356bbcLU, 0xcf37cfbdLU, 0x6e316ebeLU, 0xca33cabfLU, +0xadcdadc0LU, 0x09cf09c1LU, 0xa8c9a8c2LU, 0x0ccb0cc3LU, 0xa7c5a7c4LU, 0x03c703c5LU, 0xa2c1a2c6LU, 0x06c306c7LU, +0xb9ddb9c8LU, 0x1ddf1dc9LU, 0xbcd9bccaLU, 0x18db18cbLU, 0xb3d5b3ccLU, 0x17d717cdLU, 0xb6d1b6ceLU, 0x12d312cfLU, +0x85ed85d0LU, 0x21ef21d1LU, 0x80e980d2LU, 0x24eb24d3LU, 0x8fe58fd4LU, 0x2be72bd5LU, 0x8ae18ad6LU, 0x2ee32ed7LU, +0x91fd91d8LU, 0x35ff35d9LU, 0x94f994daLU, 0x30fb30dbLU, 0x9bf59bdcLU, 0x3ff73fddLU, 0x9ef19edeLU, 0x3af33adfLU, +0xfd8dfde0LU, 0x598f59e1LU, 0xf889f8e2LU, 0x5c8b5ce3LU, 0xf785f7e4LU, 0x538753e5LU, 0xf281f2e6LU, 0x568356e7LU, +0xe99de9e8LU, 0x4d9f4de9LU, 0xec99eceaLU, 0x489b48ebLU, 0xe395e3ecLU, 0x479747edLU, 0xe691e6eeLU, 0x429342efLU, +0xd5add5f0LU, 0x71af71f1LU, 0xd0a9d0f2LU, 0x74ab74f3LU, 0xdfa5dff4LU, 0x7ba77bf5LU, 0xdaa1daf6LU, 0x7ea37ef7LU, +0xc1bdc1f8LU, 0x65bf65f9LU, 0xc4b9c4faLU, 0x60bb60fbLU, 0xcbb5cbfcLU, 0x6fb76ffdLU, 0xceb1cefeLU, 0x6ab36affLU }; + +static const ulong32 rs_tab1[256] = { +0x00000000LU, 0x55a156a4LU, 0xaa0fac05LU, 0xffaefaa1LU, 0x191e150aLU, 0x4cbf43aeLU, 0xb311b90fLU, 0xe6b0efabLU, +0x323c2a14LU, 0x679d7cb0LU, 0x98338611LU, 0xcd92d0b5LU, 0x2b223f1eLU, 0x7e8369baLU, 0x812d931bLU, 0xd48cc5bfLU, +0x64785428LU, 0x31d9028cLU, 0xce77f82dLU, 0x9bd6ae89LU, 0x7d664122LU, 0x28c71786LU, 0xd769ed27LU, 0x82c8bb83LU, +0x56447e3cLU, 0x03e52898LU, 0xfc4bd239LU, 0xa9ea849dLU, 0x4f5a6b36LU, 0x1afb3d92LU, 0xe555c733LU, 0xb0f49197LU, +0xc8f0a850LU, 0x9d51fef4LU, 0x62ff0455LU, 0x375e52f1LU, 0xd1eebd5aLU, 0x844febfeLU, 0x7be1115fLU, 0x2e4047fbLU, +0xfacc8244LU, 0xaf6dd4e0LU, 0x50c32e41LU, 0x056278e5LU, 0xe3d2974eLU, 0xb673c1eaLU, 0x49dd3b4bLU, 0x1c7c6defLU, +0xac88fc78LU, 0xf929aadcLU, 0x0687507dLU, 0x532606d9LU, 0xb596e972LU, 0xe037bfd6LU, 0x1f994577LU, 0x4a3813d3LU, +0x9eb4d66cLU, 0xcb1580c8LU, 0x34bb7a69LU, 0x611a2ccdLU, 0x87aac366LU, 0xd20b95c2LU, 0x2da56f63LU, 0x780439c7LU, +0xddad1da0LU, 0x880c4b04LU, 0x77a2b1a5LU, 0x2203e701LU, 0xc4b308aaLU, 0x91125e0eLU, 0x6ebca4afLU, 0x3b1df20bLU, +0xef9137b4LU, 0xba306110LU, 0x459e9bb1LU, 0x103fcd15LU, 0xf68f22beLU, 0xa32e741aLU, 0x5c808ebbLU, 0x0921d81fLU, +0xb9d54988LU, 0xec741f2cLU, 0x13dae58dLU, 0x467bb329LU, 0xa0cb5c82LU, 0xf56a0a26LU, 0x0ac4f087LU, 0x5f65a623LU, +0x8be9639cLU, 0xde483538LU, 0x21e6cf99LU, 0x7447993dLU, 0x92f77696LU, 0xc7562032LU, 0x38f8da93LU, 0x6d598c37LU, +0x155db5f0LU, 0x40fce354LU, 0xbf5219f5LU, 0xeaf34f51LU, 0x0c43a0faLU, 0x59e2f65eLU, 0xa64c0cffLU, 0xf3ed5a5bLU, +0x27619fe4LU, 0x72c0c940LU, 0x8d6e33e1LU, 0xd8cf6545LU, 0x3e7f8aeeLU, 0x6bdedc4aLU, 0x947026ebLU, 0xc1d1704fLU, +0x7125e1d8LU, 0x2484b77cLU, 0xdb2a4dddLU, 0x8e8b1b79LU, 0x683bf4d2LU, 0x3d9aa276LU, 0xc23458d7LU, 0x97950e73LU, +0x4319cbccLU, 0x16b89d68LU, 0xe91667c9LU, 0xbcb7316dLU, 0x5a07dec6LU, 0x0fa68862LU, 0xf00872c3LU, 0xa5a92467LU, +0xf7173a0dLU, 0xa2b66ca9LU, 0x5d189608LU, 0x08b9c0acLU, 0xee092f07LU, 0xbba879a3LU, 0x44068302LU, 0x11a7d5a6LU, +0xc52b1019LU, 0x908a46bdLU, 0x6f24bc1cLU, 0x3a85eab8LU, 0xdc350513LU, 0x899453b7LU, 0x763aa916LU, 0x239bffb2LU, +0x936f6e25LU, 0xc6ce3881LU, 0x3960c220LU, 0x6cc19484LU, 0x8a717b2fLU, 0xdfd02d8bLU, 0x207ed72aLU, 0x75df818eLU, +0xa1534431LU, 0xf4f21295LU, 0x0b5ce834LU, 0x5efdbe90LU, 0xb84d513bLU, 0xedec079fLU, 0x1242fd3eLU, 0x47e3ab9aLU, +0x3fe7925dLU, 0x6a46c4f9LU, 0x95e83e58LU, 0xc04968fcLU, 0x26f98757LU, 0x7358d1f3LU, 0x8cf62b52LU, 0xd9577df6LU, +0x0ddbb849LU, 0x587aeeedLU, 0xa7d4144cLU, 0xf27542e8LU, 0x14c5ad43LU, 0x4164fbe7LU, 0xbeca0146LU, 0xeb6b57e2LU, +0x5b9fc675LU, 0x0e3e90d1LU, 0xf1906a70LU, 0xa4313cd4LU, 0x4281d37fLU, 0x172085dbLU, 0xe88e7f7aLU, 0xbd2f29deLU, +0x69a3ec61LU, 0x3c02bac5LU, 0xc3ac4064LU, 0x960d16c0LU, 0x70bdf96bLU, 0x251cafcfLU, 0xdab2556eLU, 0x8f1303caLU, +0x2aba27adLU, 0x7f1b7109LU, 0x80b58ba8LU, 0xd514dd0cLU, 0x33a432a7LU, 0x66056403LU, 0x99ab9ea2LU, 0xcc0ac806LU, +0x18860db9LU, 0x4d275b1dLU, 0xb289a1bcLU, 0xe728f718LU, 0x019818b3LU, 0x54394e17LU, 0xab97b4b6LU, 0xfe36e212LU, +0x4ec27385LU, 0x1b632521LU, 0xe4cddf80LU, 0xb16c8924LU, 0x57dc668fLU, 0x027d302bLU, 0xfdd3ca8aLU, 0xa8729c2eLU, +0x7cfe5991LU, 0x295f0f35LU, 0xd6f1f594LU, 0x8350a330LU, 0x65e04c9bLU, 0x30411a3fLU, 0xcfefe09eLU, 0x9a4eb63aLU, +0xe24a8ffdLU, 0xb7ebd959LU, 0x484523f8LU, 0x1de4755cLU, 0xfb549af7LU, 0xaef5cc53LU, 0x515b36f2LU, 0x04fa6056LU, +0xd076a5e9LU, 0x85d7f34dLU, 0x7a7909ecLU, 0x2fd85f48LU, 0xc968b0e3LU, 0x9cc9e647LU, 0x63671ce6LU, 0x36c64a42LU, +0x8632dbd5LU, 0xd3938d71LU, 0x2c3d77d0LU, 0x799c2174LU, 0x9f2ccedfLU, 0xca8d987bLU, 0x352362daLU, 0x6082347eLU, +0xb40ef1c1LU, 0xe1afa765LU, 0x1e015dc4LU, 0x4ba00b60LU, 0xad10e4cbLU, 0xf8b1b26fLU, 0x071f48ceLU, 0x52be1e6aLU }; + +static const ulong32 rs_tab2[256] = { +0x00000000LU, 0x87fc8255LU, 0x43b549aaLU, 0xc449cbffLU, 0x86279219LU, 0x01db104cLU, 0xc592dbb3LU, 0x426e59e6LU, +0x414e6932LU, 0xc6b2eb67LU, 0x02fb2098LU, 0x8507a2cdLU, 0xc769fb2bLU, 0x4095797eLU, 0x84dcb281LU, 0x032030d4LU, +0x829cd264LU, 0x05605031LU, 0xc1299bceLU, 0x46d5199bLU, 0x04bb407dLU, 0x8347c228LU, 0x470e09d7LU, 0xc0f28b82LU, +0xc3d2bb56LU, 0x442e3903LU, 0x8067f2fcLU, 0x079b70a9LU, 0x45f5294fLU, 0xc209ab1aLU, 0x064060e5LU, 0x81bce2b0LU, +0x4975e9c8LU, 0xce896b9dLU, 0x0ac0a062LU, 0x8d3c2237LU, 0xcf527bd1LU, 0x48aef984LU, 0x8ce7327bLU, 0x0b1bb02eLU, +0x083b80faLU, 0x8fc702afLU, 0x4b8ec950LU, 0xcc724b05LU, 0x8e1c12e3LU, 0x09e090b6LU, 0xcda95b49LU, 0x4a55d91cLU, +0xcbe93bacLU, 0x4c15b9f9LU, 0x885c7206LU, 0x0fa0f053LU, 0x4dcea9b5LU, 0xca322be0LU, 0x0e7be01fLU, 0x8987624aLU, +0x8aa7529eLU, 0x0d5bd0cbLU, 0xc9121b34LU, 0x4eee9961LU, 0x0c80c087LU, 0x8b7c42d2LU, 0x4f35892dLU, 0xc8c90b78LU, +0x92ea9fddLU, 0x15161d88LU, 0xd15fd677LU, 0x56a35422LU, 0x14cd0dc4LU, 0x93318f91LU, 0x5778446eLU, 0xd084c63bLU, +0xd3a4f6efLU, 0x545874baLU, 0x9011bf45LU, 0x17ed3d10LU, 0x558364f6LU, 0xd27fe6a3LU, 0x16362d5cLU, 0x91caaf09LU, +0x10764db9LU, 0x978acfecLU, 0x53c30413LU, 0xd43f8646LU, 0x9651dfa0LU, 0x11ad5df5LU, 0xd5e4960aLU, 0x5218145fLU, +0x5138248bLU, 0xd6c4a6deLU, 0x128d6d21LU, 0x9571ef74LU, 0xd71fb692LU, 0x50e334c7LU, 0x94aaff38LU, 0x13567d6dLU, +0xdb9f7615LU, 0x5c63f440LU, 0x982a3fbfLU, 0x1fd6bdeaLU, 0x5db8e40cLU, 0xda446659LU, 0x1e0dada6LU, 0x99f12ff3LU, +0x9ad11f27LU, 0x1d2d9d72LU, 0xd964568dLU, 0x5e98d4d8LU, 0x1cf68d3eLU, 0x9b0a0f6bLU, 0x5f43c494LU, 0xd8bf46c1LU, +0x5903a471LU, 0xdeff2624LU, 0x1ab6eddbLU, 0x9d4a6f8eLU, 0xdf243668LU, 0x58d8b43dLU, 0x9c917fc2LU, 0x1b6dfd97LU, +0x184dcd43LU, 0x9fb14f16LU, 0x5bf884e9LU, 0xdc0406bcLU, 0x9e6a5f5aLU, 0x1996dd0fLU, 0xdddf16f0LU, 0x5a2394a5LU, +0x699973f7LU, 0xee65f1a2LU, 0x2a2c3a5dLU, 0xadd0b808LU, 0xefbee1eeLU, 0x684263bbLU, 0xac0ba844LU, 0x2bf72a11LU, +0x28d71ac5LU, 0xaf2b9890LU, 0x6b62536fLU, 0xec9ed13aLU, 0xaef088dcLU, 0x290c0a89LU, 0xed45c176LU, 0x6ab94323LU, +0xeb05a193LU, 0x6cf923c6LU, 0xa8b0e839LU, 0x2f4c6a6cLU, 0x6d22338aLU, 0xeadeb1dfLU, 0x2e977a20LU, 0xa96bf875LU, +0xaa4bc8a1LU, 0x2db74af4LU, 0xe9fe810bLU, 0x6e02035eLU, 0x2c6c5ab8LU, 0xab90d8edLU, 0x6fd91312LU, 0xe8259147LU, +0x20ec9a3fLU, 0xa710186aLU, 0x6359d395LU, 0xe4a551c0LU, 0xa6cb0826LU, 0x21378a73LU, 0xe57e418cLU, 0x6282c3d9LU, +0x61a2f30dLU, 0xe65e7158LU, 0x2217baa7LU, 0xa5eb38f2LU, 0xe7856114LU, 0x6079e341LU, 0xa43028beLU, 0x23ccaaebLU, +0xa270485bLU, 0x258cca0eLU, 0xe1c501f1LU, 0x663983a4LU, 0x2457da42LU, 0xa3ab5817LU, 0x67e293e8LU, 0xe01e11bdLU, +0xe33e2169LU, 0x64c2a33cLU, 0xa08b68c3LU, 0x2777ea96LU, 0x6519b370LU, 0xe2e53125LU, 0x26acfadaLU, 0xa150788fLU, +0xfb73ec2aLU, 0x7c8f6e7fLU, 0xb8c6a580LU, 0x3f3a27d5LU, 0x7d547e33LU, 0xfaa8fc66LU, 0x3ee13799LU, 0xb91db5ccLU, +0xba3d8518LU, 0x3dc1074dLU, 0xf988ccb2LU, 0x7e744ee7LU, 0x3c1a1701LU, 0xbbe69554LU, 0x7faf5eabLU, 0xf853dcfeLU, +0x79ef3e4eLU, 0xfe13bc1bLU, 0x3a5a77e4LU, 0xbda6f5b1LU, 0xffc8ac57LU, 0x78342e02LU, 0xbc7de5fdLU, 0x3b8167a8LU, +0x38a1577cLU, 0xbf5dd529LU, 0x7b141ed6LU, 0xfce89c83LU, 0xbe86c565LU, 0x397a4730LU, 0xfd338ccfLU, 0x7acf0e9aLU, +0xb20605e2LU, 0x35fa87b7LU, 0xf1b34c48LU, 0x764fce1dLU, 0x342197fbLU, 0xb3dd15aeLU, 0x7794de51LU, 0xf0685c04LU, +0xf3486cd0LU, 0x74b4ee85LU, 0xb0fd257aLU, 0x3701a72fLU, 0x756ffec9LU, 0xf2937c9cLU, 0x36dab763LU, 0xb1263536LU, +0x309ad786LU, 0xb76655d3LU, 0x732f9e2cLU, 0xf4d31c79LU, 0xb6bd459fLU, 0x3141c7caLU, 0xf5080c35LU, 0x72f48e60LU, +0x71d4beb4LU, 0xf6283ce1LU, 0x3261f71eLU, 0xb59d754bLU, 0xf7f32cadLU, 0x700faef8LU, 0xb4466507LU, 0x33bae752LU }; + +static const ulong32 rs_tab3[256] = { +0x00000000LU, 0x5ac1f387LU, 0xb4cfab43LU, 0xee0e58c4LU, 0x25d31b86LU, 0x7f12e801LU, 0x911cb0c5LU, 0xcbdd4342LU, +0x4aeb3641LU, 0x102ac5c6LU, 0xfe249d02LU, 0xa4e56e85LU, 0x6f382dc7LU, 0x35f9de40LU, 0xdbf78684LU, 0x81367503LU, +0x949b6c82LU, 0xce5a9f05LU, 0x2054c7c1LU, 0x7a953446LU, 0xb1487704LU, 0xeb898483LU, 0x0587dc47LU, 0x5f462fc0LU, +0xde705ac3LU, 0x84b1a944LU, 0x6abff180LU, 0x307e0207LU, 0xfba34145LU, 0xa162b2c2LU, 0x4f6cea06LU, 0x15ad1981LU, +0x657bd849LU, 0x3fba2bceLU, 0xd1b4730aLU, 0x8b75808dLU, 0x40a8c3cfLU, 0x1a693048LU, 0xf467688cLU, 0xaea69b0bLU, +0x2f90ee08LU, 0x75511d8fLU, 0x9b5f454bLU, 0xc19eb6ccLU, 0x0a43f58eLU, 0x50820609LU, 0xbe8c5ecdLU, 0xe44dad4aLU, +0xf1e0b4cbLU, 0xab21474cLU, 0x452f1f88LU, 0x1feeec0fLU, 0xd433af4dLU, 0x8ef25ccaLU, 0x60fc040eLU, 0x3a3df789LU, +0xbb0b828aLU, 0xe1ca710dLU, 0x0fc429c9LU, 0x5505da4eLU, 0x9ed8990cLU, 0xc4196a8bLU, 0x2a17324fLU, 0x70d6c1c8LU, +0xcaf6fd92LU, 0x90370e15LU, 0x7e3956d1LU, 0x24f8a556LU, 0xef25e614LU, 0xb5e41593LU, 0x5bea4d57LU, 0x012bbed0LU, +0x801dcbd3LU, 0xdadc3854LU, 0x34d26090LU, 0x6e139317LU, 0xa5ced055LU, 0xff0f23d2LU, 0x11017b16LU, 0x4bc08891LU, +0x5e6d9110LU, 0x04ac6297LU, 0xeaa23a53LU, 0xb063c9d4LU, 0x7bbe8a96LU, 0x217f7911LU, 0xcf7121d5LU, 0x95b0d252LU, +0x1486a751LU, 0x4e4754d6LU, 0xa0490c12LU, 0xfa88ff95LU, 0x3155bcd7LU, 0x6b944f50LU, 0x859a1794LU, 0xdf5be413LU, +0xaf8d25dbLU, 0xf54cd65cLU, 0x1b428e98LU, 0x41837d1fLU, 0x8a5e3e5dLU, 0xd09fcddaLU, 0x3e91951eLU, 0x64506699LU, +0xe566139aLU, 0xbfa7e01dLU, 0x51a9b8d9LU, 0x0b684b5eLU, 0xc0b5081cLU, 0x9a74fb9bLU, 0x747aa35fLU, 0x2ebb50d8LU, +0x3b164959LU, 0x61d7badeLU, 0x8fd9e21aLU, 0xd518119dLU, 0x1ec552dfLU, 0x4404a158LU, 0xaa0af99cLU, 0xf0cb0a1bLU, +0x71fd7f18LU, 0x2b3c8c9fLU, 0xc532d45bLU, 0x9ff327dcLU, 0x542e649eLU, 0x0eef9719LU, 0xe0e1cfddLU, 0xba203c5aLU, +0xd9a1b769LU, 0x836044eeLU, 0x6d6e1c2aLU, 0x37afefadLU, 0xfc72acefLU, 0xa6b35f68LU, 0x48bd07acLU, 0x127cf42bLU, +0x934a8128LU, 0xc98b72afLU, 0x27852a6bLU, 0x7d44d9ecLU, 0xb6999aaeLU, 0xec586929LU, 0x025631edLU, 0x5897c26aLU, +0x4d3adbebLU, 0x17fb286cLU, 0xf9f570a8LU, 0xa334832fLU, 0x68e9c06dLU, 0x322833eaLU, 0xdc266b2eLU, 0x86e798a9LU, +0x07d1edaaLU, 0x5d101e2dLU, 0xb31e46e9LU, 0xe9dfb56eLU, 0x2202f62cLU, 0x78c305abLU, 0x96cd5d6fLU, 0xcc0caee8LU, +0xbcda6f20LU, 0xe61b9ca7LU, 0x0815c463LU, 0x52d437e4LU, 0x990974a6LU, 0xc3c88721LU, 0x2dc6dfe5LU, 0x77072c62LU, +0xf6315961LU, 0xacf0aae6LU, 0x42fef222LU, 0x183f01a5LU, 0xd3e242e7LU, 0x8923b160LU, 0x672de9a4LU, 0x3dec1a23LU, +0x284103a2LU, 0x7280f025LU, 0x9c8ea8e1LU, 0xc64f5b66LU, 0x0d921824LU, 0x5753eba3LU, 0xb95db367LU, 0xe39c40e0LU, +0x62aa35e3LU, 0x386bc664LU, 0xd6659ea0LU, 0x8ca46d27LU, 0x47792e65LU, 0x1db8dde2LU, 0xf3b68526LU, 0xa97776a1LU, +0x13574afbLU, 0x4996b97cLU, 0xa798e1b8LU, 0xfd59123fLU, 0x3684517dLU, 0x6c45a2faLU, 0x824bfa3eLU, 0xd88a09b9LU, +0x59bc7cbaLU, 0x037d8f3dLU, 0xed73d7f9LU, 0xb7b2247eLU, 0x7c6f673cLU, 0x26ae94bbLU, 0xc8a0cc7fLU, 0x92613ff8LU, +0x87cc2679LU, 0xdd0dd5feLU, 0x33038d3aLU, 0x69c27ebdLU, 0xa21f3dffLU, 0xf8dece78LU, 0x16d096bcLU, 0x4c11653bLU, +0xcd271038LU, 0x97e6e3bfLU, 0x79e8bb7bLU, 0x232948fcLU, 0xe8f40bbeLU, 0xb235f839LU, 0x5c3ba0fdLU, 0x06fa537aLU, +0x762c92b2LU, 0x2ced6135LU, 0xc2e339f1LU, 0x9822ca76LU, 0x53ff8934LU, 0x093e7ab3LU, 0xe7302277LU, 0xbdf1d1f0LU, +0x3cc7a4f3LU, 0x66065774LU, 0x88080fb0LU, 0xd2c9fc37LU, 0x1914bf75LU, 0x43d54cf2LU, 0xaddb1436LU, 0xf71ae7b1LU, +0xe2b7fe30LU, 0xb8760db7LU, 0x56785573LU, 0x0cb9a6f4LU, 0xc764e5b6LU, 0x9da51631LU, 0x73ab4ef5LU, 0x296abd72LU, +0xa85cc871LU, 0xf29d3bf6LU, 0x1c936332LU, 0x465290b5LU, 0x8d8fd3f7LU, 0xd74e2070LU, 0x394078b4LU, 0x63818b33LU }; + +static const ulong32 rs_tab4[256] = { +0x00000000LU, 0x58471e5aLU, 0xb08e3cb4LU, 0xe8c922eeLU, 0x2d517825LU, 0x7516667fLU, 0x9ddf4491LU, 0xc5985acbLU, +0x5aa2f04aLU, 0x02e5ee10LU, 0xea2cccfeLU, 0xb26bd2a4LU, 0x77f3886fLU, 0x2fb49635LU, 0xc77db4dbLU, 0x9f3aaa81LU, +0xb409ad94LU, 0xec4eb3ceLU, 0x04879120LU, 0x5cc08f7aLU, 0x9958d5b1LU, 0xc11fcbebLU, 0x29d6e905LU, 0x7191f75fLU, +0xeeab5ddeLU, 0xb6ec4384LU, 0x5e25616aLU, 0x06627f30LU, 0xc3fa25fbLU, 0x9bbd3ba1LU, 0x7374194fLU, 0x2b330715LU, +0x25121765LU, 0x7d55093fLU, 0x959c2bd1LU, 0xcddb358bLU, 0x08436f40LU, 0x5004711aLU, 0xb8cd53f4LU, 0xe08a4daeLU, +0x7fb0e72fLU, 0x27f7f975LU, 0xcf3edb9bLU, 0x9779c5c1LU, 0x52e19f0aLU, 0x0aa68150LU, 0xe26fa3beLU, 0xba28bde4LU, +0x911bbaf1LU, 0xc95ca4abLU, 0x21958645LU, 0x79d2981fLU, 0xbc4ac2d4LU, 0xe40ddc8eLU, 0x0cc4fe60LU, 0x5483e03aLU, +0xcbb94abbLU, 0x93fe54e1LU, 0x7b37760fLU, 0x23706855LU, 0xe6e8329eLU, 0xbeaf2cc4LU, 0x56660e2aLU, 0x0e211070LU, +0x4a242ecaLU, 0x12633090LU, 0xfaaa127eLU, 0xa2ed0c24LU, 0x677556efLU, 0x3f3248b5LU, 0xd7fb6a5bLU, 0x8fbc7401LU, +0x1086de80LU, 0x48c1c0daLU, 0xa008e234LU, 0xf84ffc6eLU, 0x3dd7a6a5LU, 0x6590b8ffLU, 0x8d599a11LU, 0xd51e844bLU, +0xfe2d835eLU, 0xa66a9d04LU, 0x4ea3bfeaLU, 0x16e4a1b0LU, 0xd37cfb7bLU, 0x8b3be521LU, 0x63f2c7cfLU, 0x3bb5d995LU, +0xa48f7314LU, 0xfcc86d4eLU, 0x14014fa0LU, 0x4c4651faLU, 0x89de0b31LU, 0xd199156bLU, 0x39503785LU, 0x611729dfLU, +0x6f3639afLU, 0x377127f5LU, 0xdfb8051bLU, 0x87ff1b41LU, 0x4267418aLU, 0x1a205fd0LU, 0xf2e97d3eLU, 0xaaae6364LU, +0x3594c9e5LU, 0x6dd3d7bfLU, 0x851af551LU, 0xdd5deb0bLU, 0x18c5b1c0LU, 0x4082af9aLU, 0xa84b8d74LU, 0xf00c932eLU, +0xdb3f943bLU, 0x83788a61LU, 0x6bb1a88fLU, 0x33f6b6d5LU, 0xf66eec1eLU, 0xae29f244LU, 0x46e0d0aaLU, 0x1ea7cef0LU, +0x819d6471LU, 0xd9da7a2bLU, 0x311358c5LU, 0x6954469fLU, 0xaccc1c54LU, 0xf48b020eLU, 0x1c4220e0LU, 0x44053ebaLU, +0x94485cd9LU, 0xcc0f4283LU, 0x24c6606dLU, 0x7c817e37LU, 0xb91924fcLU, 0xe15e3aa6LU, 0x09971848LU, 0x51d00612LU, +0xceeaac93LU, 0x96adb2c9LU, 0x7e649027LU, 0x26238e7dLU, 0xe3bbd4b6LU, 0xbbfccaecLU, 0x5335e802LU, 0x0b72f658LU, +0x2041f14dLU, 0x7806ef17LU, 0x90cfcdf9LU, 0xc888d3a3LU, 0x0d108968LU, 0x55579732LU, 0xbd9eb5dcLU, 0xe5d9ab86LU, +0x7ae30107LU, 0x22a41f5dLU, 0xca6d3db3LU, 0x922a23e9LU, 0x57b27922LU, 0x0ff56778LU, 0xe73c4596LU, 0xbf7b5bccLU, +0xb15a4bbcLU, 0xe91d55e6LU, 0x01d47708LU, 0x59936952LU, 0x9c0b3399LU, 0xc44c2dc3LU, 0x2c850f2dLU, 0x74c21177LU, +0xebf8bbf6LU, 0xb3bfa5acLU, 0x5b768742LU, 0x03319918LU, 0xc6a9c3d3LU, 0x9eeedd89LU, 0x7627ff67LU, 0x2e60e13dLU, +0x0553e628LU, 0x5d14f872LU, 0xb5ddda9cLU, 0xed9ac4c6LU, 0x28029e0dLU, 0x70458057LU, 0x988ca2b9LU, 0xc0cbbce3LU, +0x5ff11662LU, 0x07b60838LU, 0xef7f2ad6LU, 0xb738348cLU, 0x72a06e47LU, 0x2ae7701dLU, 0xc22e52f3LU, 0x9a694ca9LU, +0xde6c7213LU, 0x862b6c49LU, 0x6ee24ea7LU, 0x36a550fdLU, 0xf33d0a36LU, 0xab7a146cLU, 0x43b33682LU, 0x1bf428d8LU, +0x84ce8259LU, 0xdc899c03LU, 0x3440beedLU, 0x6c07a0b7LU, 0xa99ffa7cLU, 0xf1d8e426LU, 0x1911c6c8LU, 0x4156d892LU, +0x6a65df87LU, 0x3222c1ddLU, 0xdaebe333LU, 0x82acfd69LU, 0x4734a7a2LU, 0x1f73b9f8LU, 0xf7ba9b16LU, 0xaffd854cLU, +0x30c72fcdLU, 0x68803197LU, 0x80491379LU, 0xd80e0d23LU, 0x1d9657e8LU, 0x45d149b2LU, 0xad186b5cLU, 0xf55f7506LU, +0xfb7e6576LU, 0xa3397b2cLU, 0x4bf059c2LU, 0x13b74798LU, 0xd62f1d53LU, 0x8e680309LU, 0x66a121e7LU, 0x3ee63fbdLU, +0xa1dc953cLU, 0xf99b8b66LU, 0x1152a988LU, 0x4915b7d2LU, 0x8c8ded19LU, 0xd4caf343LU, 0x3c03d1adLU, 0x6444cff7LU, +0x4f77c8e2LU, 0x1730d6b8LU, 0xfff9f456LU, 0xa7beea0cLU, 0x6226b0c7LU, 0x3a61ae9dLU, 0xd2a88c73LU, 0x8aef9229LU, +0x15d538a8LU, 0x4d9226f2LU, 0xa55b041cLU, 0xfd1c1a46LU, 0x3884408dLU, 0x60c35ed7LU, 0x880a7c39LU, 0xd04d6263LU }; + +static const ulong32 rs_tab5[256] = { +0x00000000LU, 0xdbaec658LU, 0xfb11c1b0LU, 0x20bf07e8LU, 0xbb22cf2dLU, 0x608c0975LU, 0x40330e9dLU, 0x9b9dc8c5LU, +0x3b44d35aLU, 0xe0ea1502LU, 0xc05512eaLU, 0x1bfbd4b2LU, 0x80661c77LU, 0x5bc8da2fLU, 0x7b77ddc7LU, 0xa0d91b9fLU, +0x7688ebb4LU, 0xad262decLU, 0x8d992a04LU, 0x5637ec5cLU, 0xcdaa2499LU, 0x1604e2c1LU, 0x36bbe529LU, 0xed152371LU, +0x4dcc38eeLU, 0x9662feb6LU, 0xb6ddf95eLU, 0x6d733f06LU, 0xf6eef7c3LU, 0x2d40319bLU, 0x0dff3673LU, 0xd651f02bLU, +0xec5d9b25LU, 0x37f35d7dLU, 0x174c5a95LU, 0xcce29ccdLU, 0x577f5408LU, 0x8cd19250LU, 0xac6e95b8LU, 0x77c053e0LU, +0xd719487fLU, 0x0cb78e27LU, 0x2c0889cfLU, 0xf7a64f97LU, 0x6c3b8752LU, 0xb795410aLU, 0x972a46e2LU, 0x4c8480baLU, +0x9ad57091LU, 0x417bb6c9LU, 0x61c4b121LU, 0xba6a7779LU, 0x21f7bfbcLU, 0xfa5979e4LU, 0xdae67e0cLU, 0x0148b854LU, +0xa191a3cbLU, 0x7a3f6593LU, 0x5a80627bLU, 0x812ea423LU, 0x1ab36ce6LU, 0xc11daabeLU, 0xe1a2ad56LU, 0x3a0c6b0eLU, +0x95ba7b4aLU, 0x4e14bd12LU, 0x6eabbafaLU, 0xb5057ca2LU, 0x2e98b467LU, 0xf536723fLU, 0xd58975d7LU, 0x0e27b38fLU, +0xaefea810LU, 0x75506e48LU, 0x55ef69a0LU, 0x8e41aff8LU, 0x15dc673dLU, 0xce72a165LU, 0xeecda68dLU, 0x356360d5LU, +0xe33290feLU, 0x389c56a6LU, 0x1823514eLU, 0xc38d9716LU, 0x58105fd3LU, 0x83be998bLU, 0xa3019e63LU, 0x78af583bLU, +0xd87643a4LU, 0x03d885fcLU, 0x23678214LU, 0xf8c9444cLU, 0x63548c89LU, 0xb8fa4ad1LU, 0x98454d39LU, 0x43eb8b61LU, +0x79e7e06fLU, 0xa2492637LU, 0x82f621dfLU, 0x5958e787LU, 0xc2c52f42LU, 0x196be91aLU, 0x39d4eef2LU, 0xe27a28aaLU, +0x42a33335LU, 0x990df56dLU, 0xb9b2f285LU, 0x621c34ddLU, 0xf981fc18LU, 0x222f3a40LU, 0x02903da8LU, 0xd93efbf0LU, +0x0f6f0bdbLU, 0xd4c1cd83LU, 0xf47eca6bLU, 0x2fd00c33LU, 0xb44dc4f6LU, 0x6fe302aeLU, 0x4f5c0546LU, 0x94f2c31eLU, +0x342bd881LU, 0xef851ed9LU, 0xcf3a1931LU, 0x1494df69LU, 0x8f0917acLU, 0x54a7d1f4LU, 0x7418d61cLU, 0xafb61044LU, +0x6739f694LU, 0xbc9730ccLU, 0x9c283724LU, 0x4786f17cLU, 0xdc1b39b9LU, 0x07b5ffe1LU, 0x270af809LU, 0xfca43e51LU, +0x5c7d25ceLU, 0x87d3e396LU, 0xa76ce47eLU, 0x7cc22226LU, 0xe75feae3LU, 0x3cf12cbbLU, 0x1c4e2b53LU, 0xc7e0ed0bLU, +0x11b11d20LU, 0xca1fdb78LU, 0xeaa0dc90LU, 0x310e1ac8LU, 0xaa93d20dLU, 0x713d1455LU, 0x518213bdLU, 0x8a2cd5e5LU, +0x2af5ce7aLU, 0xf15b0822LU, 0xd1e40fcaLU, 0x0a4ac992LU, 0x91d70157LU, 0x4a79c70fLU, 0x6ac6c0e7LU, 0xb16806bfLU, +0x8b646db1LU, 0x50caabe9LU, 0x7075ac01LU, 0xabdb6a59LU, 0x3046a29cLU, 0xebe864c4LU, 0xcb57632cLU, 0x10f9a574LU, +0xb020beebLU, 0x6b8e78b3LU, 0x4b317f5bLU, 0x909fb903LU, 0x0b0271c6LU, 0xd0acb79eLU, 0xf013b076LU, 0x2bbd762eLU, +0xfdec8605LU, 0x2642405dLU, 0x06fd47b5LU, 0xdd5381edLU, 0x46ce4928LU, 0x9d608f70LU, 0xbddf8898LU, 0x66714ec0LU, +0xc6a8555fLU, 0x1d069307LU, 0x3db994efLU, 0xe61752b7LU, 0x7d8a9a72LU, 0xa6245c2aLU, 0x869b5bc2LU, 0x5d359d9aLU, +0xf2838ddeLU, 0x292d4b86LU, 0x09924c6eLU, 0xd23c8a36LU, 0x49a142f3LU, 0x920f84abLU, 0xb2b08343LU, 0x691e451bLU, +0xc9c75e84LU, 0x126998dcLU, 0x32d69f34LU, 0xe978596cLU, 0x72e591a9LU, 0xa94b57f1LU, 0x89f45019LU, 0x525a9641LU, +0x840b666aLU, 0x5fa5a032LU, 0x7f1aa7daLU, 0xa4b46182LU, 0x3f29a947LU, 0xe4876f1fLU, 0xc43868f7LU, 0x1f96aeafLU, +0xbf4fb530LU, 0x64e17368LU, 0x445e7480LU, 0x9ff0b2d8LU, 0x046d7a1dLU, 0xdfc3bc45LU, 0xff7cbbadLU, 0x24d27df5LU, +0x1ede16fbLU, 0xc570d0a3LU, 0xe5cfd74bLU, 0x3e611113LU, 0xa5fcd9d6LU, 0x7e521f8eLU, 0x5eed1866LU, 0x8543de3eLU, +0x259ac5a1LU, 0xfe3403f9LU, 0xde8b0411LU, 0x0525c249LU, 0x9eb80a8cLU, 0x4516ccd4LU, 0x65a9cb3cLU, 0xbe070d64LU, +0x6856fd4fLU, 0xb3f83b17LU, 0x93473cffLU, 0x48e9faa7LU, 0xd3743262LU, 0x08daf43aLU, 0x2865f3d2LU, 0xf3cb358aLU, +0x53122e15LU, 0x88bce84dLU, 0xa803efa5LU, 0x73ad29fdLU, 0xe830e138LU, 0x339e2760LU, 0x13212088LU, 0xc88fe6d0LU }; + +static const ulong32 rs_tab6[256] = { +0x00000000LU, 0x9e3d68dbLU, 0x717ad0fbLU, 0xef47b820LU, 0xe2f4edbbLU, 0x7cc98560LU, 0x938e3d40LU, 0x0db3559bLU, +0x89a5973bLU, 0x1798ffe0LU, 0xf8df47c0LU, 0x66e22f1bLU, 0x6b517a80LU, 0xf56c125bLU, 0x1a2baa7bLU, 0x8416c2a0LU, +0x5f076376LU, 0xc13a0badLU, 0x2e7db38dLU, 0xb040db56LU, 0xbdf38ecdLU, 0x23cee616LU, 0xcc895e36LU, 0x52b436edLU, +0xd6a2f44dLU, 0x489f9c96LU, 0xa7d824b6LU, 0x39e54c6dLU, 0x345619f6LU, 0xaa6b712dLU, 0x452cc90dLU, 0xdb11a1d6LU, +0xbe0ec6ecLU, 0x2033ae37LU, 0xcf741617LU, 0x51497eccLU, 0x5cfa2b57LU, 0xc2c7438cLU, 0x2d80fbacLU, 0xb3bd9377LU, +0x37ab51d7LU, 0xa996390cLU, 0x46d1812cLU, 0xd8ece9f7LU, 0xd55fbc6cLU, 0x4b62d4b7LU, 0xa4256c97LU, 0x3a18044cLU, +0xe109a59aLU, 0x7f34cd41LU, 0x90737561LU, 0x0e4e1dbaLU, 0x03fd4821LU, 0x9dc020faLU, 0x728798daLU, 0xecbaf001LU, +0x68ac32a1LU, 0xf6915a7aLU, 0x19d6e25aLU, 0x87eb8a81LU, 0x8a58df1aLU, 0x1465b7c1LU, 0xfb220fe1LU, 0x651f673aLU, +0x311cc195LU, 0xaf21a94eLU, 0x4066116eLU, 0xde5b79b5LU, 0xd3e82c2eLU, 0x4dd544f5LU, 0xa292fcd5LU, 0x3caf940eLU, +0xb8b956aeLU, 0x26843e75LU, 0xc9c38655LU, 0x57feee8eLU, 0x5a4dbb15LU, 0xc470d3ceLU, 0x2b376beeLU, 0xb50a0335LU, +0x6e1ba2e3LU, 0xf026ca38LU, 0x1f617218LU, 0x815c1ac3LU, 0x8cef4f58LU, 0x12d22783LU, 0xfd959fa3LU, 0x63a8f778LU, +0xe7be35d8LU, 0x79835d03LU, 0x96c4e523LU, 0x08f98df8LU, 0x054ad863LU, 0x9b77b0b8LU, 0x74300898LU, 0xea0d6043LU, +0x8f120779LU, 0x112f6fa2LU, 0xfe68d782LU, 0x6055bf59LU, 0x6de6eac2LU, 0xf3db8219LU, 0x1c9c3a39LU, 0x82a152e2LU, +0x06b79042LU, 0x988af899LU, 0x77cd40b9LU, 0xe9f02862LU, 0xe4437df9LU, 0x7a7e1522LU, 0x9539ad02LU, 0x0b04c5d9LU, +0xd015640fLU, 0x4e280cd4LU, 0xa16fb4f4LU, 0x3f52dc2fLU, 0x32e189b4LU, 0xacdce16fLU, 0x439b594fLU, 0xdda63194LU, +0x59b0f334LU, 0xc78d9befLU, 0x28ca23cfLU, 0xb6f74b14LU, 0xbb441e8fLU, 0x25797654LU, 0xca3ece74LU, 0x5403a6afLU, +0x6238cf67LU, 0xfc05a7bcLU, 0x13421f9cLU, 0x8d7f7747LU, 0x80cc22dcLU, 0x1ef14a07LU, 0xf1b6f227LU, 0x6f8b9afcLU, +0xeb9d585cLU, 0x75a03087LU, 0x9ae788a7LU, 0x04dae07cLU, 0x0969b5e7LU, 0x9754dd3cLU, 0x7813651cLU, 0xe62e0dc7LU, +0x3d3fac11LU, 0xa302c4caLU, 0x4c457ceaLU, 0xd2781431LU, 0xdfcb41aaLU, 0x41f62971LU, 0xaeb19151LU, 0x308cf98aLU, +0xb49a3b2aLU, 0x2aa753f1LU, 0xc5e0ebd1LU, 0x5bdd830aLU, 0x566ed691LU, 0xc853be4aLU, 0x2714066aLU, 0xb9296eb1LU, +0xdc36098bLU, 0x420b6150LU, 0xad4cd970LU, 0x3371b1abLU, 0x3ec2e430LU, 0xa0ff8cebLU, 0x4fb834cbLU, 0xd1855c10LU, +0x55939eb0LU, 0xcbaef66bLU, 0x24e94e4bLU, 0xbad42690LU, 0xb767730bLU, 0x295a1bd0LU, 0xc61da3f0LU, 0x5820cb2bLU, +0x83316afdLU, 0x1d0c0226LU, 0xf24bba06LU, 0x6c76d2ddLU, 0x61c58746LU, 0xfff8ef9dLU, 0x10bf57bdLU, 0x8e823f66LU, +0x0a94fdc6LU, 0x94a9951dLU, 0x7bee2d3dLU, 0xe5d345e6LU, 0xe860107dLU, 0x765d78a6LU, 0x991ac086LU, 0x0727a85dLU, +0x53240ef2LU, 0xcd196629LU, 0x225ede09LU, 0xbc63b6d2LU, 0xb1d0e349LU, 0x2fed8b92LU, 0xc0aa33b2LU, 0x5e975b69LU, +0xda8199c9LU, 0x44bcf112LU, 0xabfb4932LU, 0x35c621e9LU, 0x38757472LU, 0xa6481ca9LU, 0x490fa489LU, 0xd732cc52LU, +0x0c236d84LU, 0x921e055fLU, 0x7d59bd7fLU, 0xe364d5a4LU, 0xeed7803fLU, 0x70eae8e4LU, 0x9fad50c4LU, 0x0190381fLU, +0x8586fabfLU, 0x1bbb9264LU, 0xf4fc2a44LU, 0x6ac1429fLU, 0x67721704LU, 0xf94f7fdfLU, 0x1608c7ffLU, 0x8835af24LU, +0xed2ac81eLU, 0x7317a0c5LU, 0x9c5018e5LU, 0x026d703eLU, 0x0fde25a5LU, 0x91e34d7eLU, 0x7ea4f55eLU, 0xe0999d85LU, +0x648f5f25LU, 0xfab237feLU, 0x15f58fdeLU, 0x8bc8e705LU, 0x867bb29eLU, 0x1846da45LU, 0xf7016265LU, 0x693c0abeLU, +0xb22dab68LU, 0x2c10c3b3LU, 0xc3577b93LU, 0x5d6a1348LU, 0x50d946d3LU, 0xcee42e08LU, 0x21a39628LU, 0xbf9efef3LU, +0x3b883c53LU, 0xa5b55488LU, 0x4af2eca8LU, 0xd4cf8473LU, 0xd97cd1e8LU, 0x4741b933LU, 0xa8060113LU, 0x363b69c8LU }; + +static const ulong32 rs_tab7[256] = { +0x00000000LU, 0x0319e59eLU, 0x06328771LU, 0x052b62efLU, 0x0c6443e2LU, 0x0f7da67cLU, 0x0a56c493LU, 0x094f210dLU, +0x18c88689LU, 0x1bd16317LU, 0x1efa01f8LU, 0x1de3e466LU, 0x14acc56bLU, 0x17b520f5LU, 0x129e421aLU, 0x1187a784LU, +0x30dd415fLU, 0x33c4a4c1LU, 0x36efc62eLU, 0x35f623b0LU, 0x3cb902bdLU, 0x3fa0e723LU, 0x3a8b85ccLU, 0x39926052LU, +0x2815c7d6LU, 0x2b0c2248LU, 0x2e2740a7LU, 0x2d3ea539LU, 0x24718434LU, 0x276861aaLU, 0x22430345LU, 0x215ae6dbLU, +0x60f782beLU, 0x63ee6720LU, 0x66c505cfLU, 0x65dce051LU, 0x6c93c15cLU, 0x6f8a24c2LU, 0x6aa1462dLU, 0x69b8a3b3LU, +0x783f0437LU, 0x7b26e1a9LU, 0x7e0d8346LU, 0x7d1466d8LU, 0x745b47d5LU, 0x7742a24bLU, 0x7269c0a4LU, 0x7170253aLU, +0x502ac3e1LU, 0x5333267fLU, 0x56184490LU, 0x5501a10eLU, 0x5c4e8003LU, 0x5f57659dLU, 0x5a7c0772LU, 0x5965e2ecLU, +0x48e24568LU, 0x4bfba0f6LU, 0x4ed0c219LU, 0x4dc92787LU, 0x4486068aLU, 0x479fe314LU, 0x42b481fbLU, 0x41ad6465LU, +0xc0a34931LU, 0xc3baacafLU, 0xc691ce40LU, 0xc5882bdeLU, 0xccc70ad3LU, 0xcfdeef4dLU, 0xcaf58da2LU, 0xc9ec683cLU, +0xd86bcfb8LU, 0xdb722a26LU, 0xde5948c9LU, 0xdd40ad57LU, 0xd40f8c5aLU, 0xd71669c4LU, 0xd23d0b2bLU, 0xd124eeb5LU, +0xf07e086eLU, 0xf367edf0LU, 0xf64c8f1fLU, 0xf5556a81LU, 0xfc1a4b8cLU, 0xff03ae12LU, 0xfa28ccfdLU, 0xf9312963LU, +0xe8b68ee7LU, 0xebaf6b79LU, 0xee840996LU, 0xed9dec08LU, 0xe4d2cd05LU, 0xe7cb289bLU, 0xe2e04a74LU, 0xe1f9afeaLU, +0xa054cb8fLU, 0xa34d2e11LU, 0xa6664cfeLU, 0xa57fa960LU, 0xac30886dLU, 0xaf296df3LU, 0xaa020f1cLU, 0xa91bea82LU, +0xb89c4d06LU, 0xbb85a898LU, 0xbeaeca77LU, 0xbdb72fe9LU, 0xb4f80ee4LU, 0xb7e1eb7aLU, 0xb2ca8995LU, 0xb1d36c0bLU, +0x90898ad0LU, 0x93906f4eLU, 0x96bb0da1LU, 0x95a2e83fLU, 0x9cedc932LU, 0x9ff42cacLU, 0x9adf4e43LU, 0x99c6abddLU, +0x88410c59LU, 0x8b58e9c7LU, 0x8e738b28LU, 0x8d6a6eb6LU, 0x84254fbbLU, 0x873caa25LU, 0x8217c8caLU, 0x810e2d54LU, +0xcd0b9262LU, 0xce1277fcLU, 0xcb391513LU, 0xc820f08dLU, 0xc16fd180LU, 0xc276341eLU, 0xc75d56f1LU, 0xc444b36fLU, +0xd5c314ebLU, 0xd6daf175LU, 0xd3f1939aLU, 0xd0e87604LU, 0xd9a75709LU, 0xdabeb297LU, 0xdf95d078LU, 0xdc8c35e6LU, +0xfdd6d33dLU, 0xfecf36a3LU, 0xfbe4544cLU, 0xf8fdb1d2LU, 0xf1b290dfLU, 0xf2ab7541LU, 0xf78017aeLU, 0xf499f230LU, +0xe51e55b4LU, 0xe607b02aLU, 0xe32cd2c5LU, 0xe035375bLU, 0xe97a1656LU, 0xea63f3c8LU, 0xef489127LU, 0xec5174b9LU, +0xadfc10dcLU, 0xaee5f542LU, 0xabce97adLU, 0xa8d77233LU, 0xa198533eLU, 0xa281b6a0LU, 0xa7aad44fLU, 0xa4b331d1LU, +0xb5349655LU, 0xb62d73cbLU, 0xb3061124LU, 0xb01ff4baLU, 0xb950d5b7LU, 0xba493029LU, 0xbf6252c6LU, 0xbc7bb758LU, +0x9d215183LU, 0x9e38b41dLU, 0x9b13d6f2LU, 0x980a336cLU, 0x91451261LU, 0x925cf7ffLU, 0x97779510LU, 0x946e708eLU, +0x85e9d70aLU, 0x86f03294LU, 0x83db507bLU, 0x80c2b5e5LU, 0x898d94e8LU, 0x8a947176LU, 0x8fbf1399LU, 0x8ca6f607LU, +0x0da8db53LU, 0x0eb13ecdLU, 0x0b9a5c22LU, 0x0883b9bcLU, 0x01cc98b1LU, 0x02d57d2fLU, 0x07fe1fc0LU, 0x04e7fa5eLU, +0x15605ddaLU, 0x1679b844LU, 0x1352daabLU, 0x104b3f35LU, 0x19041e38LU, 0x1a1dfba6LU, 0x1f369949LU, 0x1c2f7cd7LU, +0x3d759a0cLU, 0x3e6c7f92LU, 0x3b471d7dLU, 0x385ef8e3LU, 0x3111d9eeLU, 0x32083c70LU, 0x37235e9fLU, 0x343abb01LU, +0x25bd1c85LU, 0x26a4f91bLU, 0x238f9bf4LU, 0x20967e6aLU, 0x29d95f67LU, 0x2ac0baf9LU, 0x2febd816LU, 0x2cf23d88LU, +0x6d5f59edLU, 0x6e46bc73LU, 0x6b6dde9cLU, 0x68743b02LU, 0x613b1a0fLU, 0x6222ff91LU, 0x67099d7eLU, 0x641078e0LU, +0x7597df64LU, 0x768e3afaLU, 0x73a55815LU, 0x70bcbd8bLU, 0x79f39c86LU, 0x7aea7918LU, 0x7fc11bf7LU, 0x7cd8fe69LU, +0x5d8218b2LU, 0x5e9bfd2cLU, 0x5bb09fc3LU, 0x58a97a5dLU, 0x51e65b50LU, 0x52ffbeceLU, 0x57d4dc21LU, 0x54cd39bfLU, +0x454a9e3bLU, 0x46537ba5LU, 0x4378194aLU, 0x4061fcd4LU, 0x492eddd9LU, 0x4a373847LU, 0x4f1c5aa8LU, 0x4c05bf36LU }; + +#endif /* LTC_TWOFISH_ALL_TABLES */ + +#endif /* __LTC_TWOFISH_TAB_C__ */ +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/ciphers/xtea.c b/fsbl/lib/libtomcrypt/src/ciphers/xtea.c new file mode 100644 index 000000000..fe26f9803 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/ciphers/xtea.c @@ -0,0 +1,261 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file xtea.c + Implementation of LTC_XTEA, Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_XTEA + +const struct ltc_cipher_descriptor xtea_desc = +{ + "xtea", + 1, + 16, 16, 8, 32, + &xtea_setup, + &xtea_ecb_encrypt, + &xtea_ecb_decrypt, + &xtea_test, + &xtea_done, + &xtea_keysize, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL +}; + +int xtea_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey) +{ + ulong32 x, sum, K[4]; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(skey != NULL); + + /* check arguments */ + if (keylen != 16) { + return CRYPT_INVALID_KEYSIZE; + } + + if (num_rounds != 0 && num_rounds != 32) { + return CRYPT_INVALID_ROUNDS; + } + + /* load key */ + LOAD32H(K[0], key+0); + LOAD32H(K[1], key+4); + LOAD32H(K[2], key+8); + LOAD32H(K[3], key+12); + + for (x = sum = 0; x < 32; x++) { + skey->xtea.A[x] = (sum + K[sum&3]) & 0xFFFFFFFFUL; + sum = (sum + 0x9E3779B9UL) & 0xFFFFFFFFUL; + skey->xtea.B[x] = (sum + K[(sum>>11)&3]) & 0xFFFFFFFFUL; + } + +#ifdef LTC_CLEAN_STACK + zeromem(&K, sizeof(K)); +#endif + + return CRYPT_OK; +} + +/** + Encrypts a block of text with LTC_XTEA + @param pt The input plaintext (8 bytes) + @param ct The output ciphertext (8 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +int xtea_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) +{ + ulong32 y, z; + int r; + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + + LOAD32H(y, &pt[0]); + LOAD32H(z, &pt[4]); + for (r = 0; r < 32; r += 4) { + y = (y + ((((z<<4)^(z>>5)) + z) ^ skey->xtea.A[r])) & 0xFFFFFFFFUL; + z = (z + ((((y<<4)^(y>>5)) + y) ^ skey->xtea.B[r])) & 0xFFFFFFFFUL; + + y = (y + ((((z<<4)^(z>>5)) + z) ^ skey->xtea.A[r+1])) & 0xFFFFFFFFUL; + z = (z + ((((y<<4)^(y>>5)) + y) ^ skey->xtea.B[r+1])) & 0xFFFFFFFFUL; + + y = (y + ((((z<<4)^(z>>5)) + z) ^ skey->xtea.A[r+2])) & 0xFFFFFFFFUL; + z = (z + ((((y<<4)^(y>>5)) + y) ^ skey->xtea.B[r+2])) & 0xFFFFFFFFUL; + + y = (y + ((((z<<4)^(z>>5)) + z) ^ skey->xtea.A[r+3])) & 0xFFFFFFFFUL; + z = (z + ((((y<<4)^(y>>5)) + y) ^ skey->xtea.B[r+3])) & 0xFFFFFFFFUL; + } + STORE32H(y, &ct[0]); + STORE32H(z, &ct[4]); + return CRYPT_OK; +} + +/** + Decrypts a block of text with LTC_XTEA + @param ct The input ciphertext (8 bytes) + @param pt The output plaintext (8 bytes) + @param skey The key as scheduled + @return CRYPT_OK if successful +*/ +int xtea_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey) +{ + ulong32 y, z; + int r; + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(skey != NULL); + + LOAD32H(y, &ct[0]); + LOAD32H(z, &ct[4]); + for (r = 31; r >= 0; r -= 4) { + z = (z - ((((y<<4)^(y>>5)) + y) ^ skey->xtea.B[r])) & 0xFFFFFFFFUL; + y = (y - ((((z<<4)^(z>>5)) + z) ^ skey->xtea.A[r])) & 0xFFFFFFFFUL; + + z = (z - ((((y<<4)^(y>>5)) + y) ^ skey->xtea.B[r-1])) & 0xFFFFFFFFUL; + y = (y - ((((z<<4)^(z>>5)) + z) ^ skey->xtea.A[r-1])) & 0xFFFFFFFFUL; + + z = (z - ((((y<<4)^(y>>5)) + y) ^ skey->xtea.B[r-2])) & 0xFFFFFFFFUL; + y = (y - ((((z<<4)^(z>>5)) + z) ^ skey->xtea.A[r-2])) & 0xFFFFFFFFUL; + + z = (z - ((((y<<4)^(y>>5)) + y) ^ skey->xtea.B[r-3])) & 0xFFFFFFFFUL; + y = (y - ((((z<<4)^(z>>5)) + z) ^ skey->xtea.A[r-3])) & 0xFFFFFFFFUL; + } + STORE32H(y, &pt[0]); + STORE32H(z, &pt[4]); + return CRYPT_OK; +} + +/** + Performs a self-test of the LTC_XTEA block cipher + @return CRYPT_OK if functional, CRYPT_NOP if self-test has been disabled +*/ +int xtea_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const struct { + unsigned char key[16], pt[8], ct[8]; + } tests[] = { + { + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xde, 0xe9, 0xd4, 0xd8, 0xf7, 0x13, 0x1e, 0xd9 } + }, { + { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0xa5, 0x97, 0xab, 0x41, 0x76, 0x01, 0x4d, 0x72 } + }, { + { 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x06 }, + { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02 }, + { 0xb1, 0xfd, 0x5d, 0xa9, 0xcc, 0x6d, 0xc9, 0xdc } + }, { + { 0x78, 0x69, 0x5a, 0x4b, 0x3c, 0x2d, 0x1e, 0x0f, + 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 }, + { 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87 }, + { 0x70, 0x4b, 0x31, 0x34, 0x47, 0x44, 0xdf, 0xab } + }, { + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + { 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48 }, + { 0x49, 0x7d, 0xf3, 0xd0, 0x72, 0x61, 0x2c, 0xb5 } + }, { + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + { 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41 }, + { 0xe7, 0x8f, 0x2d, 0x13, 0x74, 0x43, 0x41, 0xd8 } + }, { + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + { 0x5a, 0x5b, 0x6e, 0x27, 0x89, 0x48, 0xd7, 0x7f }, + { 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41 } + }, { + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48 }, + { 0xa0, 0x39, 0x05, 0x89, 0xf8, 0xb8, 0xef, 0xa5 } + }, { + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41 }, + { 0xed, 0x23, 0x37, 0x5a, 0x82, 0x1a, 0x8c, 0x2d } + }, { + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x70, 0xe1, 0x22, 0x5d, 0x6e, 0x4e, 0x76, 0x55 }, + { 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41 } + } + }; + unsigned char tmp[2][8]; + symmetric_key skey; + int i, err, y; + for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) { + zeromem(&skey, sizeof(skey)); + if ((err = xtea_setup(tests[i].key, 16, 0, &skey)) != CRYPT_OK) { + return err; + } + xtea_ecb_encrypt(tests[i].pt, tmp[0], &skey); + xtea_ecb_decrypt(tmp[0], tmp[1], &skey); + + if (compare_testvector(tmp[0], 8, tests[i].ct, 8, "XTEA Encrypt", i) != 0 || + compare_testvector(tmp[1], 8, tests[i].pt, 8, "XTEA Decrypt", i) != 0) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* now see if we can encrypt all zero bytes 1000 times, decrypt and come back where we started */ + for (y = 0; y < 8; y++) tmp[0][y] = 0; + for (y = 0; y < 1000; y++) xtea_ecb_encrypt(tmp[0], tmp[0], &skey); + for (y = 0; y < 1000; y++) xtea_ecb_decrypt(tmp[0], tmp[0], &skey); + for (y = 0; y < 8; y++) if (tmp[0][y] != 0) return CRYPT_FAIL_TESTVECTOR; + } /* for */ + + return CRYPT_OK; + #endif +} + +/** Terminate the context + @param skey The scheduled key +*/ +void xtea_done(symmetric_key *skey) +{ + LTC_UNUSED_PARAM(skey); +} + +/** + Gets suitable key size + @param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable. + @return CRYPT_OK if the input key size is acceptable. +*/ +int xtea_keysize(int *keysize) +{ + LTC_ARGCHK(keysize != NULL); + if (*keysize < 16) { + return CRYPT_INVALID_KEYSIZE; + } + *keysize = 16; + return CRYPT_OK; +} + + +#endif + + + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ccm/ccm_add_aad.c b/fsbl/lib/libtomcrypt/src/encauth/ccm/ccm_add_aad.c new file mode 100644 index 000000000..9744c5702 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ccm/ccm_add_aad.c @@ -0,0 +1,63 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +#ifdef LTC_CCM_MODE + +/** + Add AAD to the CCM state + @param ccm The CCM state + @param adata The additional authentication data to add to the CCM state + @param adatalen The length of the AAD data. + @return CRYPT_OK on success + */ +int ccm_add_aad(ccm_state *ccm, + const unsigned char *adata, unsigned long adatalen) +{ + unsigned long y; + int err; + + LTC_ARGCHK(ccm != NULL); + LTC_ARGCHK(adata != NULL); + + if (ccm->aadlen < ccm->current_aadlen + adatalen) { + return CRYPT_INVALID_ARG; + } + ccm->current_aadlen += adatalen; + + /* now add the data */ + for (y = 0; y < adatalen; y++) { + if (ccm->x == 16) { + /* full block so let's encrypt it */ + if ((err = cipher_descriptor[ccm->cipher].ecb_encrypt(ccm->PAD, ccm->PAD, &ccm->K)) != CRYPT_OK) { + return err; + } + ccm->x = 0; + } + ccm->PAD[ccm->x++] ^= adata[y]; + } + + /* remainder? */ + if (ccm->aadlen == ccm->current_aadlen) { + if (ccm->x != 0) { + if ((err = cipher_descriptor[ccm->cipher].ecb_encrypt(ccm->PAD, ccm->PAD, &ccm->K)) != CRYPT_OK) { + return err; + } + } + ccm->x = 0; + } + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ccm/ccm_add_nonce.c b/fsbl/lib/libtomcrypt/src/encauth/ccm/ccm_add_nonce.c new file mode 100644 index 000000000..ceffb8e45 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ccm/ccm_add_nonce.c @@ -0,0 +1,113 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +#ifdef LTC_CCM_MODE + +/** + Add nonce data to the CCM state + @param ccm The CCM state + @param nonce The nonce data to add + @param noncelen The length of the nonce + @return CRYPT_OK on success + */ +int ccm_add_nonce(ccm_state *ccm, + const unsigned char *nonce, unsigned long noncelen) +{ + unsigned long x, y, len; + int err; + + LTC_ARGCHK(ccm != NULL); + LTC_ARGCHK(nonce != NULL); + + /* increase L to match the nonce len */ + ccm->noncelen = (noncelen > 13) ? 13 : noncelen; + if ((15 - ccm->noncelen) > ccm->L) { + ccm->L = 15 - ccm->noncelen; + } + + /* decrease noncelen to match L */ + if ((ccm->noncelen + ccm->L) > 15) { + ccm->noncelen = 15 - ccm->L; + } + + /* form B_0 == flags | Nonce N | l(m) */ + x = 0; + ccm->PAD[x++] = (unsigned char)(((ccm->aadlen > 0) ? (1<<6) : 0) | + (((ccm->taglen - 2)>>1)<<3) | + (ccm->L-1)); + + /* nonce */ + for (y = 0; y < (16 - (ccm->L + 1)); y++) { + ccm->PAD[x++] = nonce[y]; + } + + /* store len */ + len = ccm->ptlen; + + /* shift len so the upper bytes of len are the contents of the length */ + for (y = ccm->L; y < 4; y++) { + len <<= 8; + } + + /* store l(m) (only store 32-bits) */ + for (y = 0; ccm->L > 4 && (ccm->L-y)>4; y++) { + ccm->PAD[x++] = 0; + } + for (; y < ccm->L; y++) { + ccm->PAD[x++] = (unsigned char)((len >> 24) & 255); + len <<= 8; + } + + /* encrypt PAD */ + if ((err = cipher_descriptor[ccm->cipher].ecb_encrypt(ccm->PAD, ccm->PAD, &ccm->K)) != CRYPT_OK) { + return err; + } + + /* handle header */ + ccm->x = 0; + if (ccm->aadlen > 0) { + /* store length */ + if (ccm->aadlen < ((1UL<<16) - (1UL<<8))) { + ccm->PAD[ccm->x++] ^= (ccm->aadlen>>8) & 255; + ccm->PAD[ccm->x++] ^= ccm->aadlen & 255; + } else { + ccm->PAD[ccm->x++] ^= 0xFF; + ccm->PAD[ccm->x++] ^= 0xFE; + ccm->PAD[ccm->x++] ^= (ccm->aadlen>>24) & 255; + ccm->PAD[ccm->x++] ^= (ccm->aadlen>>16) & 255; + ccm->PAD[ccm->x++] ^= (ccm->aadlen>>8) & 255; + ccm->PAD[ccm->x++] ^= ccm->aadlen & 255; + } + } + + /* setup the ctr counter */ + x = 0; + + /* flags */ + ccm->ctr[x++] = (unsigned char)ccm->L-1; + + /* nonce */ + for (y = 0; y < (16 - (ccm->L+1)); ++y) { + ccm->ctr[x++] = nonce[y]; + } + /* offset */ + while (x < 16) { + ccm->ctr[x++] = 0; + } + + ccm->CTRlen = 16; + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ccm/ccm_done.c b/fsbl/lib/libtomcrypt/src/encauth/ccm/ccm_done.c new file mode 100644 index 000000000..797b7d984 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ccm/ccm_done.c @@ -0,0 +1,65 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +#ifdef LTC_CCM_MODE + +/** + Terminate a CCM stream + @param ccm The CCM state + @param tag [out] The destination for the MAC tag + @param taglen [in/out] The length of the MAC tag + @return CRYPT_OK on success + */ +int ccm_done(ccm_state *ccm, + unsigned char *tag, unsigned long *taglen) +{ + unsigned long x, y; + int err; + + LTC_ARGCHK(ccm != NULL); + + /* Check all data have been processed */ + if (ccm->ptlen != ccm->current_ptlen) { + return CRYPT_ERROR; + } + + LTC_ARGCHK(tag != NULL); + LTC_ARGCHK(taglen != NULL); + + if (ccm->x != 0) { + if ((err = cipher_descriptor[ccm->cipher].ecb_encrypt(ccm->PAD, ccm->PAD, &ccm->K)) != CRYPT_OK) { + return err; + } + } + + /* setup CTR for the TAG (zero the count) */ + for (y = 15; y > 15 - ccm->L; y--) { + ccm->ctr[y] = 0x00; + } + if ((err = cipher_descriptor[ccm->cipher].ecb_encrypt(ccm->ctr, ccm->CTRPAD, &ccm->K)) != CRYPT_OK) { + return err; + } + + cipher_descriptor[ccm->cipher].done(&ccm->K); + + /* store the TAG */ + for (x = 0; x < 16 && x < *taglen; x++) { + tag[x] = ccm->PAD[x] ^ ccm->CTRPAD[x]; + } + *taglen = x; + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ccm/ccm_init.c b/fsbl/lib/libtomcrypt/src/encauth/ccm/ccm_init.c new file mode 100644 index 000000000..b24e33e41 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ccm/ccm_init.c @@ -0,0 +1,81 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +#ifdef LTC_CCM_MODE + +/** + Initialize a CCM state + @param ccm The CCM state to initialize + @param cipher The index of the cipher to use + @param key The secret key + @param keylen The length of the secret key + @param ptlen The length of the plain/cipher text that will be processed + @param taglen The max length of the MAC tag + @param aadlen The length of the AAD + + @return CRYPT_OK on success + */ +int ccm_init(ccm_state *ccm, int cipher, + const unsigned char *key, int keylen, int ptlen, int taglen, int aadlen) +{ + int err; + + LTC_ARGCHK(ccm != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(taglen != 0); + + XMEMSET(ccm, 0, sizeof(ccm_state)); + + /* check cipher input */ + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + if (cipher_descriptor[cipher].block_length != 16) { + return CRYPT_INVALID_CIPHER; + } + + /* make sure the taglen is even and <= 16 */ + ccm->taglen = taglen; + ccm->taglen &= ~1; + if (ccm->taglen > 16) { + ccm->taglen = 16; + } + + /* can't use < 4 */ + if (ccm->taglen < 4) { + return CRYPT_INVALID_ARG; + } + + /* schedule key */ + if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, &ccm->K)) != CRYPT_OK) { + return err; + } + ccm->cipher = cipher; + + /* let's get the L value */ + ccm->ptlen = ptlen; + ccm->L = 0; + while (ptlen) { + ++ccm->L; + ptlen >>= 8; + } + if (ccm->L <= 1) { + ccm->L = 2; + } + + ccm->aadlen = aadlen; + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ccm/ccm_memory.c b/fsbl/lib/libtomcrypt/src/encauth/ccm/ccm_memory.c new file mode 100644 index 000000000..631219e60 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ccm/ccm_memory.c @@ -0,0 +1,407 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file ccm_memory.c + CCM support, process a block of memory, Tom St Denis +*/ + +#ifdef LTC_CCM_MODE + +/** + CCM encrypt/decrypt and produce an authentication tag + + *1 'pt', 'ct' and 'tag' can both be 'in' or 'out', depending on 'direction' + + @param cipher The index of the cipher desired + @param key The secret key to use + @param keylen The length of the secret key (octets) + @param uskey A previously scheduled key [optional can be NULL] + @param nonce The session nonce [use once] + @param noncelen The length of the nonce + @param header The header for the session + @param headerlen The length of the header (octets) + @param pt [*1] The plaintext + @param ptlen The length of the plaintext (octets) + @param ct [*1] The ciphertext + @param tag [*1] The destination tag + @param taglen The max size and resulting size of the authentication tag + @param direction Encrypt or Decrypt direction (0 or 1) + @return CRYPT_OK if successful +*/ +int ccm_memory(int cipher, + const unsigned char *key, unsigned long keylen, + symmetric_key *uskey, + const unsigned char *nonce, unsigned long noncelen, + const unsigned char *header, unsigned long headerlen, + unsigned char *pt, unsigned long ptlen, + unsigned char *ct, + unsigned char *tag, unsigned long *taglen, + int direction) +{ + unsigned char PAD[16], ctr[16], CTRPAD[16], ptTag[16], b, *pt_real; + unsigned char *pt_work = NULL; + symmetric_key *skey; + int err; + unsigned long len, L, x, y, z, CTRlen; +#ifdef LTC_FAST + LTC_FAST_TYPE fastMask = ~(LTC_FAST_TYPE)0; /* initialize fastMask at all zeroes */ +#endif + unsigned char mask = 0xff; /* initialize mask at all zeroes */ + + if (uskey == NULL) { + LTC_ARGCHK(key != NULL); + } + LTC_ARGCHK(nonce != NULL); + if (headerlen > 0) { + LTC_ARGCHK(header != NULL); + } + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(tag != NULL); + LTC_ARGCHK(taglen != NULL); + + pt_real = pt; + +#ifdef LTC_FAST + if (16 % sizeof(LTC_FAST_TYPE)) { + return CRYPT_INVALID_ARG; + } +#endif + + /* check cipher input */ + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + if (cipher_descriptor[cipher].block_length != 16) { + return CRYPT_INVALID_CIPHER; + } + + /* make sure the taglen is even and <= 16 */ + *taglen &= ~1; + if (*taglen > 16) { + *taglen = 16; + } + + /* can't use < 4 */ + if (*taglen < 4) { + return CRYPT_INVALID_ARG; + } + + /* is there an accelerator? */ + if (cipher_descriptor[cipher].accel_ccm_memory != NULL) { + return cipher_descriptor[cipher].accel_ccm_memory( + key, keylen, + uskey, + nonce, noncelen, + header, headerlen, + pt, ptlen, + ct, + tag, taglen, + direction); + } + + /* let's get the L value */ + len = ptlen; + L = 0; + while (len) { + ++L; + len >>= 8; + } + if (L <= 1) { + L = 2; + } + + /* increase L to match the nonce len */ + noncelen = (noncelen > 13) ? 13 : noncelen; + if ((15 - noncelen) > L) { + L = 15 - noncelen; + } + + /* allocate mem for the symmetric key */ + if (uskey == NULL) { + skey = XMALLOC(sizeof(*skey)); + if (skey == NULL) { + return CRYPT_MEM; + } + + /* initialize the cipher */ + if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, skey)) != CRYPT_OK) { + XFREE(skey); + return err; + } + } else { + skey = uskey; + } + + /* initialize buffer for pt */ + if (direction == CCM_DECRYPT && ptlen > 0) { + pt_work = XMALLOC(ptlen); + if (pt_work == NULL) { + goto error; + } + pt = pt_work; + } + + /* form B_0 == flags | Nonce N | l(m) */ + x = 0; + PAD[x++] = (unsigned char)(((headerlen > 0) ? (1<<6) : 0) | + (((*taglen - 2)>>1)<<3) | + (L-1)); + + /* nonce */ + for (y = 0; y < (16 - (L + 1)); y++) { + PAD[x++] = nonce[y]; + } + + /* store len */ + len = ptlen; + + /* shift len so the upper bytes of len are the contents of the length */ + for (y = L; y < 4; y++) { + len <<= 8; + } + + /* store l(m) (only store 32-bits) */ + for (y = 0; L > 4 && (L-y)>4; y++) { + PAD[x++] = 0; + } + for (; y < L; y++) { + PAD[x++] = (unsigned char)((len >> 24) & 255); + len <<= 8; + } + + /* encrypt PAD */ + if ((err = cipher_descriptor[cipher].ecb_encrypt(PAD, PAD, skey)) != CRYPT_OK) { + goto error; + } + + /* handle header */ + if (headerlen > 0) { + x = 0; + + /* store length */ + if (headerlen < ((1UL<<16) - (1UL<<8))) { + PAD[x++] ^= (headerlen>>8) & 255; + PAD[x++] ^= headerlen & 255; + } else { + PAD[x++] ^= 0xFF; + PAD[x++] ^= 0xFE; + PAD[x++] ^= (headerlen>>24) & 255; + PAD[x++] ^= (headerlen>>16) & 255; + PAD[x++] ^= (headerlen>>8) & 255; + PAD[x++] ^= headerlen & 255; + } + + /* now add the data */ + for (y = 0; y < headerlen; y++) { + if (x == 16) { + /* full block so let's encrypt it */ + if ((err = cipher_descriptor[cipher].ecb_encrypt(PAD, PAD, skey)) != CRYPT_OK) { + goto error; + } + x = 0; + } + PAD[x++] ^= header[y]; + } + + /* remainder */ + if ((err = cipher_descriptor[cipher].ecb_encrypt(PAD, PAD, skey)) != CRYPT_OK) { + goto error; + } + } + + /* setup the ctr counter */ + x = 0; + + /* flags */ + ctr[x++] = (unsigned char)L-1; + + /* nonce */ + for (y = 0; y < (16 - (L+1)); ++y) { + ctr[x++] = nonce[y]; + } + /* offset */ + while (x < 16) { + ctr[x++] = 0; + } + + x = 0; + CTRlen = 16; + + /* now handle the PT */ + if (ptlen > 0) { + y = 0; +#ifdef LTC_FAST + if (ptlen & ~15) { + if (direction == CCM_ENCRYPT) { + for (; y < (ptlen & ~15); y += 16) { + /* increment the ctr? */ + for (z = 15; z > 15-L; z--) { + ctr[z] = (ctr[z] + 1) & 255; + if (ctr[z]) break; + } + if ((err = cipher_descriptor[cipher].ecb_encrypt(ctr, CTRPAD, skey)) != CRYPT_OK) { + goto error; + } + + /* xor the PT against the pad first */ + for (z = 0; z < 16; z += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST(&PAD[z])) ^= *(LTC_FAST_TYPE_PTR_CAST(&pt[y+z])); + *(LTC_FAST_TYPE_PTR_CAST(&ct[y+z])) = *(LTC_FAST_TYPE_PTR_CAST(&pt[y+z])) ^ *(LTC_FAST_TYPE_PTR_CAST(&CTRPAD[z])); + } + if ((err = cipher_descriptor[cipher].ecb_encrypt(PAD, PAD, skey)) != CRYPT_OK) { + goto error; + } + } + } else { /* direction == CCM_DECRYPT */ + for (; y < (ptlen & ~15); y += 16) { + /* increment the ctr? */ + for (z = 15; z > 15-L; z--) { + ctr[z] = (ctr[z] + 1) & 255; + if (ctr[z]) break; + } + if ((err = cipher_descriptor[cipher].ecb_encrypt(ctr, CTRPAD, skey)) != CRYPT_OK) { + goto error; + } + + /* xor the PT against the pad last */ + for (z = 0; z < 16; z += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST(&pt[y+z])) = *(LTC_FAST_TYPE_PTR_CAST(&ct[y+z])) ^ *(LTC_FAST_TYPE_PTR_CAST(&CTRPAD[z])); + *(LTC_FAST_TYPE_PTR_CAST(&PAD[z])) ^= *(LTC_FAST_TYPE_PTR_CAST(&pt[y+z])); + } + if ((err = cipher_descriptor[cipher].ecb_encrypt(PAD, PAD, skey)) != CRYPT_OK) { + goto error; + } + } + } + } +#endif + + for (; y < ptlen; y++) { + /* increment the ctr? */ + if (CTRlen == 16) { + for (z = 15; z > 15-L; z--) { + ctr[z] = (ctr[z] + 1) & 255; + if (ctr[z]) break; + } + if ((err = cipher_descriptor[cipher].ecb_encrypt(ctr, CTRPAD, skey)) != CRYPT_OK) { + goto error; + } + CTRlen = 0; + } + + /* if we encrypt we add the bytes to the MAC first */ + if (direction == CCM_ENCRYPT) { + b = pt[y]; + ct[y] = b ^ CTRPAD[CTRlen++]; + } else { + b = ct[y] ^ CTRPAD[CTRlen++]; + pt[y] = b; + } + + if (x == 16) { + if ((err = cipher_descriptor[cipher].ecb_encrypt(PAD, PAD, skey)) != CRYPT_OK) { + goto error; + } + x = 0; + } + PAD[x++] ^= b; + } + + if (x != 0) { + if ((err = cipher_descriptor[cipher].ecb_encrypt(PAD, PAD, skey)) != CRYPT_OK) { + goto error; + } + } + } + + /* setup CTR for the TAG (zero the count) */ + for (y = 15; y > 15 - L; y--) { + ctr[y] = 0x00; + } + if ((err = cipher_descriptor[cipher].ecb_encrypt(ctr, CTRPAD, skey)) != CRYPT_OK) { + goto error; + } + + if (skey != uskey) { + cipher_descriptor[cipher].done(skey); +#ifdef LTC_CLEAN_STACK + zeromem(skey, sizeof(*skey)); +#endif + } + + if (direction == CCM_ENCRYPT) { + /* store the TAG */ + for (x = 0; x < 16 && x < *taglen; x++) { + tag[x] = PAD[x] ^ CTRPAD[x]; + } + *taglen = x; + } else { /* direction == CCM_DECRYPT */ + /* decrypt the tag */ + for (x = 0; x < 16 && x < *taglen; x++) { + ptTag[x] = tag[x] ^ CTRPAD[x]; + } + *taglen = x; + + /* check validity of the decrypted tag against the computed PAD (in constant time) */ + /* HACK: the boolean value of XMEM_NEQ becomes either 0 (CRYPT_OK) or 1 (CRYPT_ERR). + * there should be a better way of setting the correct error code in constant + * time. + */ + err = XMEM_NEQ(ptTag, PAD, *taglen); + + /* Zero the plaintext if the tag was invalid (in constant time) */ + if (ptlen > 0) { + y = 0; + mask *= 1 - err; /* mask = ( err ? 0 : 0xff ) */ +#ifdef LTC_FAST + fastMask *= 1 - err; + if (ptlen & ~15) { + for (; y < (ptlen & ~15); y += 16) { + for (z = 0; z < 16; z += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST(&pt_real[y+z])) = *(LTC_FAST_TYPE_PTR_CAST(&pt[y+z])) & fastMask; + } + } + } +#endif + for (; y < ptlen; y++) { + pt_real[y] = pt[y] & mask; + } + } + } + +#ifdef LTC_CLEAN_STACK +#ifdef LTC_FAST + fastMask = 0; +#endif + mask = 0; + zeromem(PAD, sizeof(PAD)); + zeromem(CTRPAD, sizeof(CTRPAD)); + if (pt_work != NULL) { + zeromem(pt_work, ptlen); + } +#endif +error: + if (pt_work) { + XFREE(pt_work); + } + if (skey != uskey) { + XFREE(skey); + } + + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ccm/ccm_process.c b/fsbl/lib/libtomcrypt/src/encauth/ccm/ccm_process.c new file mode 100644 index 000000000..8346d2259 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ccm/ccm_process.c @@ -0,0 +1,88 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +#ifdef LTC_CCM_MODE + +/** + Process plaintext/ciphertext through CCM + @param ccm The CCM state + @param pt The plaintext + @param ptlen The plaintext length (ciphertext length is the same) + @param ct The ciphertext + @param direction Encrypt or Decrypt mode (CCM_ENCRYPT or CCM_DECRYPT) + @return CRYPT_OK on success + */ +int ccm_process(ccm_state *ccm, + unsigned char *pt, unsigned long ptlen, + unsigned char *ct, + int direction) +{ + unsigned char z, b; + unsigned long y; + int err; + + LTC_ARGCHK(ccm != NULL); + + /* Check aad has been correctly added */ + if (ccm->aadlen != ccm->current_aadlen) { + return CRYPT_ERROR; + } + + /* Check we do not process too much data */ + if (ccm->ptlen < ccm->current_ptlen + ptlen) { + return CRYPT_ERROR; + } + ccm->current_ptlen += ptlen; + + /* now handle the PT */ + if (ptlen > 0) { + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + + for (y = 0; y < ptlen; y++) { + /* increment the ctr? */ + if (ccm->CTRlen == 16) { + for (z = 15; z > 15-ccm->L; z--) { + ccm->ctr[z] = (ccm->ctr[z] + 1) & 255; + if (ccm->ctr[z]) break; + } + if ((err = cipher_descriptor[ccm->cipher].ecb_encrypt(ccm->ctr, ccm->CTRPAD, &ccm->K)) != CRYPT_OK) { + return err; + } + ccm->CTRlen = 0; + } + + /* if we encrypt we add the bytes to the MAC first */ + if (direction == CCM_ENCRYPT) { + b = pt[y]; + ct[y] = b ^ ccm->CTRPAD[ccm->CTRlen++]; + } else { + b = ct[y] ^ ccm->CTRPAD[ccm->CTRlen++]; + pt[y] = b; + } + + if (ccm->x == 16) { + if ((err = cipher_descriptor[ccm->cipher].ecb_encrypt(ccm->PAD, ccm->PAD, &ccm->K)) != CRYPT_OK) { + return err; + } + ccm->x = 0; + } + ccm->PAD[ccm->x++] ^= b; + } + } + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ccm/ccm_reset.c b/fsbl/lib/libtomcrypt/src/encauth/ccm/ccm_reset.c new file mode 100644 index 000000000..c2d0cae87 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ccm/ccm_reset.c @@ -0,0 +1,35 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +#ifdef LTC_CCM_MODE + +/** + Reset a CCM state to as if you just called ccm_init(). This saves the initialization time. + @param ccm The CCM state to reset + @return CRYPT_OK on success +*/ +int ccm_reset(ccm_state *ccm) +{ + LTC_ARGCHK(ccm != NULL); + zeromem(ccm->PAD, sizeof(ccm->PAD)); + zeromem(ccm->ctr, sizeof(ccm->ctr)); + zeromem(ccm->CTRPAD, sizeof(ccm->CTRPAD)); + ccm->CTRlen = 0; + ccm->current_ptlen = 0; + ccm->current_aadlen = 0; + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ccm/ccm_test.c b/fsbl/lib/libtomcrypt/src/encauth/ccm/ccm_test.c new file mode 100644 index 000000000..6d1e1e66f --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ccm/ccm_test.c @@ -0,0 +1,257 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file ccm_test.c + CCM support, process a block of memory, Tom St Denis +*/ + +#ifdef LTC_CCM_MODE + +int ccm_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct { + unsigned char key[16]; + unsigned char nonce[16]; + int noncelen; + unsigned char header[64]; + int headerlen; + unsigned char pt[64]; + int ptlen; + unsigned char ct[64]; + unsigned char tag[16]; + unsigned long taglen; + } tests[] = { + +/* 13 byte nonce, 8 byte auth, 23 byte pt */ +{ + { 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, + 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF }, + { 0x00, 0x00, 0x00, 0x03, 0x02, 0x01, 0x00, 0xA0, + 0xA1, 0xA2, 0xA3, 0xA4, 0xA5 }, + 13, + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 }, + 8, + { 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E }, + 23, + { 0x58, 0x8C, 0x97, 0x9A, 0x61, 0xC6, 0x63, 0xD2, + 0xF0, 0x66, 0xD0, 0xC2, 0xC0, 0xF9, 0x89, 0x80, + 0x6D, 0x5F, 0x6B, 0x61, 0xDA, 0xC3, 0x84 }, + { 0x17, 0xe8, 0xd1, 0x2c, 0xfd, 0xf9, 0x26, 0xe0 }, + 8 +}, + +/* 13 byte nonce, 12 byte header, 19 byte pt */ +{ + { 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, + 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF }, + { 0x00, 0x00, 0x00, 0x06, 0x05, 0x04, 0x03, 0xA0, + 0xA1, 0xA2, 0xA3, 0xA4, 0xA5 }, + 13, + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B }, + 12, + { 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, + 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, + 0x1C, 0x1D, 0x1E }, + 19, + { 0xA2, 0x8C, 0x68, 0x65, 0x93, 0x9A, 0x9A, 0x79, + 0xFA, 0xAA, 0x5C, 0x4C, 0x2A, 0x9D, 0x4A, 0x91, + 0xCD, 0xAC, 0x8C }, + { 0x96, 0xC8, 0x61, 0xB9, 0xC9, 0xE6, 0x1E, 0xF1 }, + 8 +}, + +/* supplied by Brian Gladman */ +{ + { 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f }, + { 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16 }, + 7, + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 }, + 8, + { 0x20, 0x21, 0x22, 0x23 }, + 4, + { 0x71, 0x62, 0x01, 0x5b }, + { 0x4d, 0xac, 0x25, 0x5d }, + 4 +}, + +{ + { 0xc9, 0x7c, 0x1f, 0x67, 0xce, 0x37, 0x11, 0x85, + 0x51, 0x4a, 0x8a, 0x19, 0xf2, 0xbd, 0xd5, 0x2f }, + { 0x00, 0x50, 0x30, 0xf1, 0x84, 0x44, 0x08, 0xb5, + 0x03, 0x97, 0x76, 0xe7, 0x0c }, + 13, + { 0x08, 0x40, 0x0f, 0xd2, 0xe1, 0x28, 0xa5, 0x7c, + 0x50, 0x30, 0xf1, 0x84, 0x44, 0x08, 0xab, 0xae, + 0xa5, 0xb8, 0xfc, 0xba, 0x00, 0x00 }, + 22, + { 0xf8, 0xba, 0x1a, 0x55, 0xd0, 0x2f, 0x85, 0xae, + 0x96, 0x7b, 0xb6, 0x2f, 0xb6, 0xcd, 0xa8, 0xeb, + 0x7e, 0x78, 0xa0, 0x50 }, + 20, + { 0xf3, 0xd0, 0xa2, 0xfe, 0x9a, 0x3d, 0xbf, 0x23, + 0x42, 0xa6, 0x43, 0xe4, 0x32, 0x46, 0xe8, 0x0c, + 0x3c, 0x04, 0xd0, 0x19 }, + { 0x78, 0x45, 0xce, 0x0b, 0x16, 0xf9, 0x76, 0x23 }, + 8 +}, + +}; + unsigned long taglen, x, y; + unsigned char buf[64], buf2[64], tag[16], tag2[16], tag3[16], zero[64]; + int err, idx; + symmetric_key skey; + ccm_state ccm; + + zeromem(zero, 64); + + idx = find_cipher("aes"); + if (idx == -1) { + idx = find_cipher("rijndael"); + if (idx == -1) { + return CRYPT_NOP; + } + } + + for (x = 0; x < (sizeof(tests)/sizeof(tests[0])); x++) { + for (y = 0; y < 2; y++) { + taglen = tests[x].taglen; + if (y == 0) { + if ((err = cipher_descriptor[idx].setup(tests[x].key, 16, 0, &skey)) != CRYPT_OK) { + return err; + } + + if ((err = ccm_memory(idx, + tests[x].key, 16, + &skey, + tests[x].nonce, tests[x].noncelen, + tests[x].header, tests[x].headerlen, + (unsigned char*)tests[x].pt, tests[x].ptlen, + buf, + tag, &taglen, 0)) != CRYPT_OK) { + return err; + } + /* run a second time to make sure skey is not touched */ + if ((err = ccm_memory(idx, + tests[x].key, 16, + &skey, + tests[x].nonce, tests[x].noncelen, + tests[x].header, tests[x].headerlen, + (unsigned char*)tests[x].pt, tests[x].ptlen, + buf, + tag, &taglen, 0)) != CRYPT_OK) { + return err; + } + } else { + if ((err = ccm_init(&ccm, idx, tests[x].key, 16, tests[x].ptlen, tests[x].taglen, tests[x].headerlen)) != CRYPT_OK) { + return err; + } + if ((err = ccm_add_nonce(&ccm, tests[x].nonce, tests[x].noncelen)) != CRYPT_OK) { + return err; + } + if ((err = ccm_add_aad(&ccm, tests[x].header, tests[x].headerlen)) != CRYPT_OK) { + return err; + } + if ((err = ccm_process(&ccm, (unsigned char*)tests[x].pt, tests[x].ptlen, buf, CCM_ENCRYPT)) != CRYPT_OK) { + return err; + } + if ((err = ccm_done(&ccm, tag, &taglen)) != CRYPT_OK) { + return err; + } + } + + if (compare_testvector(buf, tests[x].ptlen, tests[x].ct, tests[x].ptlen, "CCM encrypt data", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + if (compare_testvector(tag, taglen, tests[x].tag, tests[x].taglen, "CCM encrypt tag", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + + if (y == 0) { + XMEMCPY(tag3, tests[x].tag, tests[x].taglen); + taglen = tests[x].taglen; + if ((err = ccm_memory(idx, + tests[x].key, 16, + NULL, + tests[x].nonce, tests[x].noncelen, + tests[x].header, tests[x].headerlen, + buf2, tests[x].ptlen, + buf, + tag3, &taglen, 1 )) != CRYPT_OK) { + return err; + } + } else { + if ((err = ccm_init(&ccm, idx, tests[x].key, 16, tests[x].ptlen, tests[x].taglen, tests[x].headerlen)) != CRYPT_OK) { + return err; + } + if ((err = ccm_add_nonce(&ccm, tests[x].nonce, tests[x].noncelen)) != CRYPT_OK) { + return err; + } + if ((err = ccm_add_aad(&ccm, tests[x].header, tests[x].headerlen)) != CRYPT_OK) { + return err; + } + if ((err = ccm_process(&ccm, buf2, tests[x].ptlen, buf, CCM_DECRYPT)) != CRYPT_OK) { + return err; + } + if ((err = ccm_done(&ccm, tag2, &taglen)) != CRYPT_OK) { + return err; + } + } + + + if (compare_testvector(buf2, tests[x].ptlen, tests[x].pt, tests[x].ptlen, "CCM decrypt data", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + if (y == 0) { + /* check if decryption with the wrong tag does not reveal the plaintext */ + XMEMCPY(tag3, tests[x].tag, tests[x].taglen); + tag3[0] ^= 0xff; /* set the tag to the wrong value */ + taglen = tests[x].taglen; + if ((err = ccm_memory(idx, + tests[x].key, 16, + NULL, + tests[x].nonce, tests[x].noncelen, + tests[x].header, tests[x].headerlen, + buf2, tests[x].ptlen, + buf, + tag3, &taglen, 1 )) != CRYPT_ERROR) { + return CRYPT_FAIL_TESTVECTOR; + } + if (compare_testvector(buf2, tests[x].ptlen, zero, tests[x].ptlen, "CCM decrypt wrong tag", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + } else { + if (compare_testvector(tag2, taglen, tests[x].tag, tests[x].taglen, "CCM decrypt tag", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + + if (y == 0) { + cipher_descriptor[idx].done(&skey); + } + } + } + + return CRYPT_OK; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_add_aad.c b/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_add_aad.c new file mode 100644 index 000000000..0c0cf9d58 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_add_aad.c @@ -0,0 +1,38 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_CHACHA20POLY1305_MODE + +/** + Add AAD to the ChaCha20Poly1305 state + @param st The ChaCha20Poly1305 state + @param in The additional authentication data to add to the ChaCha20Poly1305 state + @param inlen The length of the ChaCha20Poly1305 data. + @return CRYPT_OK on success + */ +int chacha20poly1305_add_aad(chacha20poly1305_state *st, const unsigned char *in, unsigned long inlen) +{ + int err; + + if (inlen == 0) return CRYPT_OK; /* nothing to do */ + LTC_ARGCHK(st != NULL); + + if (st->aadflg == 0) return CRYPT_ERROR; + if ((err = poly1305_process(&st->poly, in, inlen)) != CRYPT_OK) return err; + st->aadlen += (ulong64)inlen; + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_decrypt.c b/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_decrypt.c new file mode 100644 index 000000000..179793227 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_decrypt.c @@ -0,0 +1,49 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_CHACHA20POLY1305_MODE + +/** + Decrypt bytes of ciphertext with ChaCha20Poly1305 + @param st The ChaCha20Poly1305 state + @param in The ciphertext + @param inlen The length of the input (octets) + @param out [out] The plaintext (length inlen) + @return CRYPT_OK if successful +*/ +int chacha20poly1305_decrypt(chacha20poly1305_state *st, const unsigned char *in, unsigned long inlen, unsigned char *out) +{ + unsigned char padzero[16] = { 0 }; + unsigned long padlen; + int err; + + if (inlen == 0) return CRYPT_OK; /* nothing to do */ + LTC_ARGCHK(st != NULL); + + if (st->aadflg) { + padlen = 16 - (unsigned long)(st->aadlen % 16); + if (padlen < 16) { + if ((err = poly1305_process(&st->poly, padzero, padlen)) != CRYPT_OK) return err; + } + st->aadflg = 0; /* no more AAD */ + } + if (st->aadflg) st->aadflg = 0; /* no more AAD */ + if ((err = poly1305_process(&st->poly, in, inlen)) != CRYPT_OK) return err; + if ((err = chacha_crypt(&st->chacha, in, inlen, out)) != CRYPT_OK) return err; + st->ctlen += (ulong64)inlen; + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_done.c b/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_done.c new file mode 100644 index 000000000..127a7f046 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_done.c @@ -0,0 +1,46 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_CHACHA20POLY1305_MODE + +/** + Terminate a ChaCha20Poly1305 stream + @param st The ChaCha20Poly1305 state + @param tag [out] The destination for the MAC tag + @param taglen [in/out] The length of the MAC tag + @return CRYPT_OK on success + */ +int chacha20poly1305_done(chacha20poly1305_state *st, unsigned char *tag, unsigned long *taglen) +{ + unsigned char padzero[16] = { 0 }; + unsigned long padlen; + unsigned char buf[16]; + int err; + + LTC_ARGCHK(st != NULL); + + padlen = 16 - (unsigned long)(st->ctlen % 16); + if (padlen < 16) { + if ((err = poly1305_process(&st->poly, padzero, padlen)) != CRYPT_OK) return err; + } + STORE64L(st->aadlen, buf); + STORE64L(st->ctlen, buf + 8); + if ((err = poly1305_process(&st->poly, buf, 16)) != CRYPT_OK) return err; + if ((err = poly1305_done(&st->poly, tag, taglen)) != CRYPT_OK) return err; + if ((err = chacha_done(&st->chacha)) != CRYPT_OK) return err; + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_encrypt.c b/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_encrypt.c new file mode 100644 index 000000000..c53c4a657 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_encrypt.c @@ -0,0 +1,48 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_CHACHA20POLY1305_MODE + +/** + Encrypt bytes of ciphertext with ChaCha20Poly1305 + @param st The ChaCha20Poly1305 state + @param in The plaintext + @param inlen The length of the input (octets) + @param out [out] The ciphertext (length inlen) + @return CRYPT_OK if successful +*/ +int chacha20poly1305_encrypt(chacha20poly1305_state *st, const unsigned char *in, unsigned long inlen, unsigned char *out) +{ + unsigned char padzero[16] = { 0 }; + unsigned long padlen; + int err; + + if (inlen == 0) return CRYPT_OK; /* nothing to do */ + LTC_ARGCHK(st != NULL); + + if ((err = chacha_crypt(&st->chacha, in, inlen, out)) != CRYPT_OK) return err; + if (st->aadflg) { + padlen = 16 - (unsigned long)(st->aadlen % 16); + if (padlen < 16) { + if ((err = poly1305_process(&st->poly, padzero, padlen)) != CRYPT_OK) return err; + } + st->aadflg = 0; /* no more AAD */ + } + if ((err = poly1305_process(&st->poly, out, inlen)) != CRYPT_OK) return err; + st->ctlen += (ulong64)inlen; + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_init.c b/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_init.c new file mode 100644 index 000000000..2799e98a2 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_init.c @@ -0,0 +1,30 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_CHACHA20POLY1305_MODE + +/** + Initialize an ChaCha20Poly1305 context (only the key) + @param st [out] The destination of the ChaCha20Poly1305 state + @param key The secret key + @param keylen The length of the secret key (octets) + @return CRYPT_OK if successful +*/ +int chacha20poly1305_init(chacha20poly1305_state *st, const unsigned char *key, unsigned long keylen) +{ + return chacha_setup(&st->chacha, key, keylen, 20); +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_memory.c b/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_memory.c new file mode 100644 index 000000000..54e2011d8 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_memory.c @@ -0,0 +1,74 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_CHACHA20POLY1305_MODE + +/** + Process an entire GCM packet in one call. + @param key The secret key + @param keylen The length of the secret key + @param iv The initialization vector + @param ivlen The length of the initialization vector + @param aad The additional authentication data (header) + @param aadlen The length of the aad + @param in The plaintext + @param inlen The length of the plaintext (ciphertext length is the same) + @param out The ciphertext + @param tag [out] The MAC tag + @param taglen [in/out] The MAC tag length + @param direction Encrypt or Decrypt mode (CHACHA20POLY1305_ENCRYPT or CHACHA20POLY1305_DECRYPT) + @return CRYPT_OK on success + */ +int chacha20poly1305_memory(const unsigned char *key, unsigned long keylen, + const unsigned char *iv, unsigned long ivlen, + const unsigned char *aad, unsigned long aadlen, + const unsigned char *in, unsigned long inlen, + unsigned char *out, + unsigned char *tag, unsigned long *taglen, + int direction) +{ + chacha20poly1305_state st; + int err; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(iv != NULL); + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(tag != NULL); + + if ((err = chacha20poly1305_init(&st, key, keylen)) != CRYPT_OK) { goto LBL_ERR; } + if ((err = chacha20poly1305_setiv(&st, iv, ivlen)) != CRYPT_OK) { goto LBL_ERR; } + if (aad && aadlen > 0) { + if ((err = chacha20poly1305_add_aad(&st, aad, aadlen)) != CRYPT_OK) { goto LBL_ERR; } + } + if (direction == CHACHA20POLY1305_ENCRYPT) { + if ((err = chacha20poly1305_encrypt(&st, in, inlen, out)) != CRYPT_OK) { goto LBL_ERR; } + } + else if (direction == CHACHA20POLY1305_DECRYPT) { + if ((err = chacha20poly1305_decrypt(&st, in, inlen, out)) != CRYPT_OK) { goto LBL_ERR; } + } + else { + err = CRYPT_INVALID_ARG; + goto LBL_ERR; + } + err = chacha20poly1305_done(&st, tag, taglen); +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(&st, sizeof(chacha20poly1305_state)); +#endif + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_setiv.c b/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_setiv.c new file mode 100644 index 000000000..b87666e24 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_setiv.c @@ -0,0 +1,68 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_CHACHA20POLY1305_MODE + +/** + Set IV + counter data to the ChaCha20Poly1305 state and reset the context + @param st The ChaCha20Poly1305 state + @param iv The IV data to add + @param ivlen The length of the IV (must be 12 or 8) + @return CRYPT_OK on success + */ +int chacha20poly1305_setiv(chacha20poly1305_state *st, const unsigned char *iv, unsigned long ivlen) +{ + chacha_state tmp_st; + int i, err; + unsigned char polykey[32]; + + LTC_ARGCHK(st != NULL); + LTC_ARGCHK(iv != NULL); + LTC_ARGCHK(ivlen == 12 || ivlen == 8); + + /* set IV for chacha20 */ + if (ivlen == 12) { + /* IV 96bit */ + if ((err = chacha_ivctr32(&st->chacha, iv, ivlen, 1)) != CRYPT_OK) return err; + } + else { + /* IV 64bit */ + if ((err = chacha_ivctr64(&st->chacha, iv, ivlen, 1)) != CRYPT_OK) return err; + } + + /* copy chacha20 key to temporary state */ + for(i = 0; i < 12; i++) tmp_st.input[i] = st->chacha.input[i]; + tmp_st.rounds = 20; + /* set IV */ + if (ivlen == 12) { + /* IV 32bit */ + if ((err = chacha_ivctr32(&tmp_st, iv, ivlen, 0)) != CRYPT_OK) return err; + } + else { + /* IV 64bit */ + if ((err = chacha_ivctr64(&tmp_st, iv, ivlen, 0)) != CRYPT_OK) return err; + } + /* (re)generate new poly1305 key */ + if ((err = chacha_keystream(&tmp_st, polykey, 32)) != CRYPT_OK) return err; + /* (re)initialise poly1305 */ + if ((err = poly1305_init(&st->poly, polykey, 32)) != CRYPT_OK) return err; + st->ctlen = 0; + st->aadlen = 0; + st->aadflg = 1; + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_setiv_rfc7905.c b/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_setiv_rfc7905.c new file mode 100644 index 000000000..7136a1ee7 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_setiv_rfc7905.c @@ -0,0 +1,40 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_CHACHA20POLY1305_MODE + +/** + Set IV + counter data (with RFC7905-magic) to the ChaCha20Poly1305 state and reset the context + @param st The ChaCha20Poly1305 state + @param iv The IV data to add + @param ivlen The length of the IV (must be 12 or 8) + @param sequence_number 64bit sequence number which is incorporated into IV as described in RFC7905 + @return CRYPT_OK on success + */ +int chacha20poly1305_setiv_rfc7905(chacha20poly1305_state *st, const unsigned char *iv, unsigned long ivlen, ulong64 sequence_number) +{ + int i; + unsigned char combined_iv[12] = { 0 }; + + LTC_ARGCHK(st != NULL); + LTC_ARGCHK(iv != NULL); + LTC_ARGCHK(ivlen == 12); + + STORE64L(sequence_number, combined_iv + 4); + for (i = 0; i < 12; i++) combined_iv[i] = iv[i] ^ combined_iv[i]; + return chacha20poly1305_setiv(st, combined_iv, 12); +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_test.c b/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_test.c new file mode 100644 index 000000000..2ba88dd75 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/chachapoly/chacha20poly1305_test.c @@ -0,0 +1,134 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_CHACHA20POLY1305_MODE + +int chacha20poly1305_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + chacha20poly1305_state st1, st2; + unsigned char k[] = { 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f }; + unsigned char i12[] = { 0x07, 0x00, 0x00, 0x00, 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47 }; + unsigned char i8[] = { 0x07, 0x00, 0x00, 0x00, 0x40, 0x41, 0x42, 0x43 }; + unsigned char aad[] = { 0x50, 0x51, 0x52, 0x53, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7 }; + unsigned char enc[] = { 0xD3, 0x1A, 0x8D, 0x34, 0x64, 0x8E, 0x60, 0xDB, 0x7B, 0x86, 0xAF, 0xBC, 0x53, 0xEF, 0x7E, 0xC2, + 0xA4, 0xAD, 0xED, 0x51, 0x29, 0x6E, 0x08, 0xFE, 0xA9, 0xE2, 0xB5, 0xA7, 0x36, 0xEE, 0x62, 0xD6, + 0x3D, 0xBE, 0xA4, 0x5E, 0x8C, 0xA9, 0x67, 0x12, 0x82, 0xFA, 0xFB, 0x69, 0xDA, 0x92, 0x72, 0x8B, + 0x1A, 0x71, 0xDE, 0x0A, 0x9E, 0x06, 0x0B, 0x29, 0x05, 0xD6, 0xA5, 0xB6, 0x7E, 0xCD, 0x3B, 0x36, + 0x92, 0xDD, 0xBD, 0x7F, 0x2D, 0x77, 0x8B, 0x8C, 0x98, 0x03, 0xAE, 0xE3, 0x28, 0x09, 0x1B, 0x58, + 0xFA, 0xB3, 0x24, 0xE4, 0xFA, 0xD6, 0x75, 0x94, 0x55, 0x85, 0x80, 0x8B, 0x48, 0x31, 0xD7, 0xBC, + 0x3F, 0xF4, 0xDE, 0xF0, 0x8E, 0x4B, 0x7A, 0x9D, 0xE5, 0x76, 0xD2, 0x65, 0x86, 0xCE, 0xC6, 0x4B, + 0x61, 0x16 }; + unsigned char tag[] = { 0x1A, 0xE1, 0x0B, 0x59, 0x4F, 0x09, 0xE2, 0x6A, 0x7E, 0x90, 0x2E, 0xCB, 0xD0, 0x60, 0x06, 0x91 }; + char m[] = "Ladies and Gentlemen of the class of '99: If I could offer you only one tip for the future, sunscreen would be it."; + unsigned long mlen = strlen(m); + unsigned long len; + unsigned char rfc7905_pt[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }; + unsigned char rfc7905_enc[] = { 0xE4, 0x62, 0x85, 0xB4, 0x29, 0x95, 0x34, 0x96, 0xAB, 0xFB, 0x67, 0xCD, 0xAE, 0xAC, 0x94, 0x1E }; + unsigned char rfc7905_tag[] = { 0x16, 0x2C, 0x92, 0x48, 0x2A, 0xDB, 0xD3, 0x5D, 0x48, 0xBE, 0xC6, 0xFF, 0x10, 0x9C, 0xBA, 0xE4 }; + unsigned char ct[1000], pt[1000], emac[16], dmac[16]; + int err; + + /* encrypt IV 96bit */ + if ((err = chacha20poly1305_init(&st1, k, sizeof(k))) != CRYPT_OK) return err; + if ((err = chacha20poly1305_setiv(&st1, i12, sizeof(i12))) != CRYPT_OK) return err; + if ((err = chacha20poly1305_add_aad(&st1, aad, sizeof(aad))) != CRYPT_OK) return err; + /* encrypt piece by piece */ + if ((err = chacha20poly1305_encrypt(&st1, (unsigned char *)m, 25, ct)) != CRYPT_OK) return err; + if ((err = chacha20poly1305_encrypt(&st1, (unsigned char *)m + 25, 10, ct + 25)) != CRYPT_OK) return err; + if ((err = chacha20poly1305_encrypt(&st1, (unsigned char *)m + 35, 35, ct + 35)) != CRYPT_OK) return err; + if ((err = chacha20poly1305_encrypt(&st1, (unsigned char *)m + 70, 5, ct + 70)) != CRYPT_OK) return err; + if ((err = chacha20poly1305_encrypt(&st1, (unsigned char *)m + 75, 5, ct + 75)) != CRYPT_OK) return err; + if ((err = chacha20poly1305_encrypt(&st1, (unsigned char *)m + 80, mlen - 80, ct + 80)) != CRYPT_OK) return err; + len = sizeof(emac); + if ((err = chacha20poly1305_done(&st1, emac, &len)) != CRYPT_OK) return err; + + if (compare_testvector(ct, mlen, enc, sizeof(enc), "ENC-CT", 1) != 0) return CRYPT_FAIL_TESTVECTOR; + if (compare_testvector(emac, len, tag, sizeof(tag), "ENC-TAG", 2) != 0) return CRYPT_FAIL_TESTVECTOR; + + /* decrypt IV 96bit */ + if ((err = chacha20poly1305_init(&st2, k, sizeof(k))) != CRYPT_OK) return err; + if ((err = chacha20poly1305_setiv(&st2, i12, sizeof(i12))) != CRYPT_OK) return err; + if ((err = chacha20poly1305_add_aad(&st2, aad, sizeof(aad))) != CRYPT_OK) return err; + if ((err = chacha20poly1305_decrypt(&st2, ct, 21, pt)) != CRYPT_OK) return err; + if ((err = chacha20poly1305_decrypt(&st2, ct + 21, mlen - 21, pt + 21)) != CRYPT_OK) return err; + len = sizeof(dmac); + if ((err = chacha20poly1305_done(&st2, dmac, &len)) != CRYPT_OK) return err; + + if (compare_testvector(pt, mlen, m, mlen, "DEC-PT", 3) != 0) return CRYPT_FAIL_TESTVECTOR; + if (compare_testvector(dmac, len, tag, sizeof(tag), "DEC-TAG", 4) != 0) return CRYPT_FAIL_TESTVECTOR; + + /* chacha20poly1305_memory - encrypt */ + len = sizeof(emac); + if ((err = chacha20poly1305_memory(k, sizeof(k), i12, sizeof(i12), aad, sizeof(aad), (unsigned char *)m, + mlen, ct, emac, &len, CHACHA20POLY1305_ENCRYPT)) != CRYPT_OK) return err; + if (compare_testvector(ct, mlen, enc, sizeof(enc), "ENC-CT2", 1) != 0) return CRYPT_FAIL_TESTVECTOR; + if (compare_testvector(emac, len, tag, sizeof(tag), "ENC-TAG2", 2) != 0) return CRYPT_FAIL_TESTVECTOR; + + /* chacha20poly1305_memory - decrypt */ + len = sizeof(dmac); + if ((err = chacha20poly1305_memory(k, sizeof(k), i12, sizeof(i12), aad, sizeof(aad), + ct, mlen, pt, dmac, &len, CHACHA20POLY1305_DECRYPT)) != CRYPT_OK) return err; + if (compare_testvector(pt, mlen, m, mlen, "DEC-PT2", 3) != 0) return CRYPT_FAIL_TESTVECTOR; + if (compare_testvector(dmac, len, tag, sizeof(tag), "DEC-TAG2", 4) != 0) return CRYPT_FAIL_TESTVECTOR; + + /* encrypt - rfc7905 */ + if ((err = chacha20poly1305_init(&st1, k, sizeof(k))) != CRYPT_OK) return err; + if ((err = chacha20poly1305_setiv_rfc7905(&st1, i12, sizeof(i12), CONST64(0x1122334455667788))) != CRYPT_OK) return err; + if ((err = chacha20poly1305_add_aad(&st1, aad, sizeof(aad))) != CRYPT_OK) return err; + if ((err = chacha20poly1305_encrypt(&st1, rfc7905_pt, 16, ct)) != CRYPT_OK) return err; + len = sizeof(emac); + if ((err = chacha20poly1305_done(&st1, emac, &len)) != CRYPT_OK) return err; + + if (compare_testvector(ct, 16, rfc7905_enc, 16, "ENC-CT3", 1) != 0) return CRYPT_FAIL_TESTVECTOR; + if (compare_testvector(emac, len, rfc7905_tag, 16, "ENC-TAG3", 2) != 0) return CRYPT_FAIL_TESTVECTOR; + + /* decrypt - rfc7905 */ + if ((err = chacha20poly1305_init(&st1, k, sizeof(k))) != CRYPT_OK) return err; + if ((err = chacha20poly1305_setiv_rfc7905(&st1, i12, sizeof(i12), CONST64(0x1122334455667788))) != CRYPT_OK) return err; + if ((err = chacha20poly1305_add_aad(&st1, aad, sizeof(aad))) != CRYPT_OK) return err; + if ((err = chacha20poly1305_decrypt(&st1, ct, 16, pt)) != CRYPT_OK) return err; + len = sizeof(dmac); + if ((err = chacha20poly1305_done(&st1, dmac, &len)) != CRYPT_OK) return err; + + if (compare_testvector(pt, 16, rfc7905_pt, 16, "DEC-CT3", 1) != 0) return CRYPT_FAIL_TESTVECTOR; + if (compare_testvector(dmac, len, rfc7905_tag, 16, "DEC-TAG3", 2) != 0) return CRYPT_FAIL_TESTVECTOR; + + /* encrypt IV 64bit */ + if ((err = chacha20poly1305_init(&st1, k, sizeof(k))) != CRYPT_OK) return err; + if ((err = chacha20poly1305_setiv(&st1, i8, sizeof(i8))) != CRYPT_OK) return err; + if ((err = chacha20poly1305_add_aad(&st1, aad, sizeof(aad))) != CRYPT_OK) return err; + if ((err = chacha20poly1305_encrypt(&st1, (unsigned char *)m, mlen, ct)) != CRYPT_OK) return err; + len = sizeof(emac); + if ((err = chacha20poly1305_done(&st1, emac, &len)) != CRYPT_OK) return err; + + /* decrypt IV 64bit */ + if ((err = chacha20poly1305_init(&st2, k, sizeof(k))) != CRYPT_OK) return err; + if ((err = chacha20poly1305_setiv(&st2, i8, sizeof(i8))) != CRYPT_OK) return err; + if ((err = chacha20poly1305_add_aad(&st2, aad, sizeof(aad))) != CRYPT_OK) return err; + if ((err = chacha20poly1305_decrypt(&st2, ct, mlen, pt)) != CRYPT_OK) return err; + len = sizeof(dmac); + if ((err = chacha20poly1305_done(&st2, dmac, &len)) != CRYPT_OK) return err; + + if (compare_testvector(pt, mlen, m, mlen, "DEC-PT4", 1) != 0) return CRYPT_FAIL_TESTVECTOR; + if (compare_testvector(dmac, len, emac, len, "DEC-TAG4", 2) != 0) return CRYPT_FAIL_TESTVECTOR; + + return CRYPT_OK; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/eax/eax_addheader.c b/fsbl/lib/libtomcrypt/src/encauth/eax/eax_addheader.c new file mode 100644 index 000000000..5545336f1 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/eax/eax_addheader.c @@ -0,0 +1,36 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +/** + @file eax_addheader.c + EAX implementation, add meta-data, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_EAX_MODE + +/** + add header (metadata) to the stream + @param eax The current EAX state + @param header The header (meta-data) data you wish to add to the state + @param length The length of the header data + @return CRYPT_OK if successful +*/ +int eax_addheader(eax_state *eax, const unsigned char *header, + unsigned long length) +{ + LTC_ARGCHK(eax != NULL); + LTC_ARGCHK(header != NULL); + return omac_process(&eax->headeromac, header, length); +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/eax/eax_decrypt.c b/fsbl/lib/libtomcrypt/src/encauth/eax/eax_decrypt.c new file mode 100644 index 000000000..b1407163c --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/eax/eax_decrypt.c @@ -0,0 +1,48 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file eax_decrypt.c + EAX implementation, decrypt block, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_EAX_MODE + +/** + Decrypt data with the EAX protocol + @param eax The EAX state + @param ct The ciphertext + @param pt [out] The plaintext + @param length The length (octets) of the ciphertext + @return CRYPT_OK if successful +*/ +int eax_decrypt(eax_state *eax, const unsigned char *ct, unsigned char *pt, + unsigned long length) +{ + int err; + + LTC_ARGCHK(eax != NULL); + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + + /* omac ciphertext */ + if ((err = omac_process(&eax->ctomac, ct, length)) != CRYPT_OK) { + return err; + } + + /* decrypt */ + return ctr_decrypt(ct, pt, length, &eax->ctr); +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/eax/eax_decrypt_verify_memory.c b/fsbl/lib/libtomcrypt/src/encauth/eax/eax_decrypt_verify_memory.c new file mode 100644 index 000000000..8c6540fe3 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/eax/eax_decrypt_verify_memory.c @@ -0,0 +1,109 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file eax_decrypt_verify_memory.c + EAX implementation, decrypt block of memory, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_EAX_MODE + +/** + Decrypt a block of memory and verify the provided MAC tag with EAX + @param cipher The index of the cipher desired + @param key The secret key + @param keylen The length of the key (octets) + @param nonce The nonce data (use once) for the session + @param noncelen The length of the nonce data. + @param header The session header data + @param headerlen The length of the header (octets) + @param ct The ciphertext + @param ctlen The length of the ciphertext (octets) + @param pt [out] The plaintext + @param tag The authentication tag provided by the encoder + @param taglen [in/out] The length of the tag (octets) + @param stat [out] The result of the decryption (1==valid tag, 0==invalid) + @return CRYPT_OK if successful regardless of the resulting tag comparison +*/ +int eax_decrypt_verify_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, unsigned long noncelen, + const unsigned char *header, unsigned long headerlen, + const unsigned char *ct, unsigned long ctlen, + unsigned char *pt, + unsigned char *tag, unsigned long taglen, + int *stat) +{ + int err; + eax_state *eax; + unsigned char *buf; + unsigned long buflen; + + LTC_ARGCHK(stat != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(tag != NULL); + + /* default to zero */ + *stat = 0; + + /* limit taglen */ + taglen = MIN(taglen, MAXBLOCKSIZE); + + /* allocate ram */ + buf = XMALLOC(taglen); + eax = XMALLOC(sizeof(*eax)); + if (eax == NULL || buf == NULL) { + if (eax != NULL) { + XFREE(eax); + } + if (buf != NULL) { + XFREE(buf); + } + return CRYPT_MEM; + } + + if ((err = eax_init(eax, cipher, key, keylen, nonce, noncelen, header, headerlen)) != CRYPT_OK) { + goto LBL_ERR; + } + + if ((err = eax_decrypt(eax, ct, pt, ctlen)) != CRYPT_OK) { + goto LBL_ERR; + } + + buflen = taglen; + if ((err = eax_done(eax, buf, &buflen)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* compare tags */ + if (buflen >= taglen && XMEM_NEQ(buf, tag, taglen) == 0) { + *stat = 1; + } + + err = CRYPT_OK; +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(buf, taglen); + zeromem(eax, sizeof(*eax)); +#endif + + XFREE(eax); + XFREE(buf); + + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/eax/eax_done.c b/fsbl/lib/libtomcrypt/src/encauth/eax/eax_done.c new file mode 100644 index 000000000..b00bfe084 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/eax/eax_done.c @@ -0,0 +1,92 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file eax_done.c + EAX implementation, terminate session, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_EAX_MODE + +/** + Terminate an EAX session and get the tag. + @param eax The EAX state + @param tag [out] The destination of the authentication tag + @param taglen [in/out] The max length and resulting length of the authentication tag + @return CRYPT_OK if successful +*/ +int eax_done(eax_state *eax, unsigned char *tag, unsigned long *taglen) +{ + int err; + unsigned char *headermac, *ctmac; + unsigned long x, len; + + LTC_ARGCHK(eax != NULL); + LTC_ARGCHK(tag != NULL); + LTC_ARGCHK(taglen != NULL); + + /* allocate ram */ + headermac = XMALLOC(MAXBLOCKSIZE); + ctmac = XMALLOC(MAXBLOCKSIZE); + + if (headermac == NULL || ctmac == NULL) { + if (headermac != NULL) { + XFREE(headermac); + } + if (ctmac != NULL) { + XFREE(ctmac); + } + return CRYPT_MEM; + } + + /* finish ctomac */ + len = MAXBLOCKSIZE; + if ((err = omac_done(&eax->ctomac, ctmac, &len)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* finish headeromac */ + + /* note we specifically don't reset len so the two lens are minimal */ + + if ((err = omac_done(&eax->headeromac, headermac, &len)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* terminate the CTR chain */ + if ((err = ctr_done(&eax->ctr)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* compute N xor H xor C */ + for (x = 0; x < len && x < *taglen; x++) { + tag[x] = eax->N[x] ^ headermac[x] ^ ctmac[x]; + } + *taglen = x; + + err = CRYPT_OK; +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(ctmac, MAXBLOCKSIZE); + zeromem(headermac, MAXBLOCKSIZE); + zeromem(eax, sizeof(*eax)); +#endif + + XFREE(ctmac); + XFREE(headermac); + + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/eax/eax_encrypt.c b/fsbl/lib/libtomcrypt/src/encauth/eax/eax_encrypt.c new file mode 100644 index 000000000..174f263d8 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/eax/eax_encrypt.c @@ -0,0 +1,49 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file eax_encrypt.c + EAX implementation, encrypt block by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_EAX_MODE + +/** + Encrypt with EAX a block of data. + @param eax The EAX state + @param pt The plaintext to encrypt + @param ct [out] The ciphertext as encrypted + @param length The length of the plaintext (octets) + @return CRYPT_OK if successful +*/ +int eax_encrypt(eax_state *eax, const unsigned char *pt, unsigned char *ct, + unsigned long length) +{ + int err; + + LTC_ARGCHK(eax != NULL); + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + + /* encrypt */ + if ((err = ctr_encrypt(pt, ct, length, &eax->ctr)) != CRYPT_OK) { + return err; + } + + /* omac ciphertext */ + return omac_process(&eax->ctomac, ct, length); +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/eax/eax_encrypt_authenticate_memory.c b/fsbl/lib/libtomcrypt/src/encauth/eax/eax_encrypt_authenticate_memory.c new file mode 100644 index 000000000..9980fc0b3 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/eax/eax_encrypt_authenticate_memory.c @@ -0,0 +1,80 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file eax_encrypt_authenticate_memory.c + EAX implementation, encrypt a block of memory, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_EAX_MODE + +/** + EAX encrypt and produce an authentication tag + @param cipher The index of the cipher desired + @param key The secret key to use + @param keylen The length of the secret key (octets) + @param nonce The session nonce [use once] + @param noncelen The length of the nonce + @param header The header for the session + @param headerlen The length of the header (octets) + @param pt The plaintext + @param ptlen The length of the plaintext (octets) + @param ct [out] The ciphertext + @param tag [out] The destination tag + @param taglen [in/out] The max size and resulting size of the authentication tag + @return CRYPT_OK if successful +*/ +int eax_encrypt_authenticate_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, unsigned long noncelen, + const unsigned char *header, unsigned long headerlen, + const unsigned char *pt, unsigned long ptlen, + unsigned char *ct, + unsigned char *tag, unsigned long *taglen) +{ + int err; + eax_state *eax; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(tag != NULL); + LTC_ARGCHK(taglen != NULL); + + eax = XMALLOC(sizeof(*eax)); + + if ((err = eax_init(eax, cipher, key, keylen, nonce, noncelen, header, headerlen)) != CRYPT_OK) { + goto LBL_ERR; + } + + if ((err = eax_encrypt(eax, pt, ct, ptlen)) != CRYPT_OK) { + goto LBL_ERR; + } + + if ((err = eax_done(eax, tag, taglen)) != CRYPT_OK) { + goto LBL_ERR; + } + + err = CRYPT_OK; +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(eax, sizeof(*eax)); +#endif + + XFREE(eax); + + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/eax/eax_init.c b/fsbl/lib/libtomcrypt/src/encauth/eax/eax_init.c new file mode 100644 index 000000000..154d7a9ac --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/eax/eax_init.c @@ -0,0 +1,142 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file eax_init.c + EAX implementation, initialized EAX state, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_EAX_MODE + +/** + Initialized an EAX state + @param eax [out] The EAX state to initialize + @param cipher The index of the desired cipher + @param key The secret key + @param keylen The length of the secret key (octets) + @param nonce The use-once nonce for the session + @param noncelen The length of the nonce (octets) + @param header The header for the EAX state + @param headerlen The header length (octets) + @return CRYPT_OK if successful +*/ +int eax_init(eax_state *eax, int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, unsigned long noncelen, + const unsigned char *header, unsigned long headerlen) +{ + unsigned char *buf; + int err, blklen; + omac_state *omac; + unsigned long len; + + + LTC_ARGCHK(eax != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(nonce != NULL); + if (headerlen > 0) { + LTC_ARGCHK(header != NULL); + } + + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + blklen = cipher_descriptor[cipher].block_length; + + /* allocate ram */ + buf = XMALLOC(MAXBLOCKSIZE); + omac = XMALLOC(sizeof(*omac)); + + if (buf == NULL || omac == NULL) { + if (buf != NULL) { + XFREE(buf); + } + if (omac != NULL) { + XFREE(omac); + } + return CRYPT_MEM; + } + + /* N = LTC_OMAC_0K(nonce) */ + zeromem(buf, MAXBLOCKSIZE); + if ((err = omac_init(omac, cipher, key, keylen)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* omac the [0]_n */ + if ((err = omac_process(omac, buf, blklen)) != CRYPT_OK) { + goto LBL_ERR; + } + /* omac the nonce */ + if ((err = omac_process(omac, nonce, noncelen)) != CRYPT_OK) { + goto LBL_ERR; + } + /* store result */ + len = sizeof(eax->N); + if ((err = omac_done(omac, eax->N, &len)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* H = LTC_OMAC_1K(header) */ + zeromem(buf, MAXBLOCKSIZE); + buf[blklen - 1] = 1; + + if ((err = omac_init(&eax->headeromac, cipher, key, keylen)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* omac the [1]_n */ + if ((err = omac_process(&eax->headeromac, buf, blklen)) != CRYPT_OK) { + goto LBL_ERR; + } + /* omac the header */ + if (headerlen != 0) { + if ((err = omac_process(&eax->headeromac, header, headerlen)) != CRYPT_OK) { + goto LBL_ERR; + } + } + + /* note we don't finish the headeromac, this allows us to add more header later */ + + /* setup the CTR mode */ + if ((err = ctr_start(cipher, eax->N, key, keylen, 0, CTR_COUNTER_BIG_ENDIAN, &eax->ctr)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* setup the LTC_OMAC for the ciphertext */ + if ((err = omac_init(&eax->ctomac, cipher, key, keylen)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* omac [2]_n */ + zeromem(buf, MAXBLOCKSIZE); + buf[blklen-1] = 2; + if ((err = omac_process(&eax->ctomac, buf, blklen)) != CRYPT_OK) { + goto LBL_ERR; + } + + err = CRYPT_OK; +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(buf, MAXBLOCKSIZE); + zeromem(omac, sizeof(*omac)); +#endif + + XFREE(omac); + XFREE(buf); + + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/eax/eax_test.c b/fsbl/lib/libtomcrypt/src/encauth/eax/eax_test.c new file mode 100644 index 000000000..7d29ee76b --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/eax/eax_test.c @@ -0,0 +1,259 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file eax_test.c + EAX implementation, self-test, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_EAX_MODE + +/** + Test the EAX implementation + @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled +*/ +int eax_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct { + int keylen, + noncelen, + headerlen, + msglen; + + unsigned char key[MAXBLOCKSIZE], + nonce[MAXBLOCKSIZE], + header[MAXBLOCKSIZE], + plaintext[MAXBLOCKSIZE], + ciphertext[MAXBLOCKSIZE], + tag[MAXBLOCKSIZE]; + } tests[] = { + +/* NULL message */ +{ + 16, 0, 0, 0, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* nonce */ + { 0 }, + /* header */ + { 0 }, + /* plaintext */ + { 0 }, + /* ciphertext */ + { 0 }, + /* tag */ + { 0x9a, 0xd0, 0x7e, 0x7d, 0xbf, 0xf3, 0x01, 0xf5, + 0x05, 0xde, 0x59, 0x6b, 0x96, 0x15, 0xdf, 0xff } +}, + +/* test with nonce */ +{ + 16, 16, 0, 0, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* nonce */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* header */ + { 0 }, + /* plaintext */ + { 0 }, + /* ciphertext */ + { 0 }, + /* tag */ + { 0x1c, 0xe1, 0x0d, 0x3e, 0xff, 0xd4, 0xca, 0xdb, + 0xe2, 0xe4, 0x4b, 0x58, 0xd6, 0x0a, 0xb9, 0xec } +}, + +/* test with header [no nonce] */ +{ + 16, 0, 16, 0, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* nonce */ + { 0 }, + /* header */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* plaintext */ + { 0 }, + /* ciphertext */ + { 0 }, + /* tag */ + { 0x3a, 0x69, 0x8f, 0x7a, 0x27, 0x0e, 0x51, 0xb0, + 0xf6, 0x5b, 0x3d, 0x3e, 0x47, 0x19, 0x3c, 0xff } +}, + +/* test with header + nonce + plaintext */ +{ + 16, 16, 16, 32, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* nonce */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* header */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* plaintext */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, + /* ciphertext */ + { 0x29, 0xd8, 0x78, 0xd1, 0xa3, 0xbe, 0x85, 0x7b, + 0x6f, 0xb8, 0xc8, 0xea, 0x59, 0x50, 0xa7, 0x78, + 0x33, 0x1f, 0xbf, 0x2c, 0xcf, 0x33, 0x98, 0x6f, + 0x35, 0xe8, 0xcf, 0x12, 0x1d, 0xcb, 0x30, 0xbc }, + /* tag */ + { 0x4f, 0xbe, 0x03, 0x38, 0xbe, 0x1c, 0x8c, 0x7e, + 0x1d, 0x7a, 0xe7, 0xe4, 0x5b, 0x92, 0xc5, 0x87 } +}, + +/* test with header + nonce + plaintext [not even sizes!] */ +{ + 16, 15, 14, 29, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* nonce */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e }, + /* header */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d }, + /* plaintext */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c }, + /* ciphertext */ + { 0xdd, 0x25, 0xc7, 0x54, 0xc5, 0xb1, 0x7c, 0x59, + 0x28, 0xb6, 0x9b, 0x73, 0x15, 0x5f, 0x7b, 0xb8, + 0x88, 0x8f, 0xaf, 0x37, 0x09, 0x1a, 0xd9, 0x2c, + 0x8a, 0x24, 0xdb, 0x86, 0x8b }, + /* tag */ + { 0x0d, 0x1a, 0x14, 0xe5, 0x22, 0x24, 0xff, 0xd2, + 0x3a, 0x05, 0xfa, 0x02, 0xcd, 0xef, 0x52, 0xda } +}, + +/* Vectors from Brian Gladman */ + +{ + 16, 16, 8, 0, + /* key */ + { 0x23, 0x39, 0x52, 0xde, 0xe4, 0xd5, 0xed, 0x5f, + 0x9b, 0x9c, 0x6d, 0x6f, 0xf8, 0x0f, 0xf4, 0x78 }, + /* nonce */ + { 0x62, 0xec, 0x67, 0xf9, 0xc3, 0xa4, 0xa4, 0x07, + 0xfc, 0xb2, 0xa8, 0xc4, 0x90, 0x31, 0xa8, 0xb3 }, + /* header */ + { 0x6b, 0xfb, 0x91, 0x4f, 0xd0, 0x7e, 0xae, 0x6b }, + /* PT */ + { 0x00 }, + /* CT */ + { 0x00 }, + /* tag */ + { 0xe0, 0x37, 0x83, 0x0e, 0x83, 0x89, 0xf2, 0x7b, + 0x02, 0x5a, 0x2d, 0x65, 0x27, 0xe7, 0x9d, 0x01 } +}, + +{ + 16, 16, 8, 2, + /* key */ + { 0x91, 0x94, 0x5d, 0x3f, 0x4d, 0xcb, 0xee, 0x0b, + 0xf4, 0x5e, 0xf5, 0x22, 0x55, 0xf0, 0x95, 0xa4 }, + /* nonce */ + { 0xbe, 0xca, 0xf0, 0x43, 0xb0, 0xa2, 0x3d, 0x84, + 0x31, 0x94, 0xba, 0x97, 0x2c, 0x66, 0xde, 0xbd }, + /* header */ + { 0xfa, 0x3b, 0xfd, 0x48, 0x06, 0xeb, 0x53, 0xfa }, + /* PT */ + { 0xf7, 0xfb }, + /* CT */ + { 0x19, 0xdd }, + /* tag */ + { 0x5c, 0x4c, 0x93, 0x31, 0x04, 0x9d, 0x0b, 0xda, + 0xb0, 0x27, 0x74, 0x08, 0xf6, 0x79, 0x67, 0xe5 } +}, + +{ + 16, 16, 8, 5, + /* key */ + { 0x01, 0xf7, 0x4a, 0xd6, 0x40, 0x77, 0xf2, 0xe7, + 0x04, 0xc0, 0xf6, 0x0a, 0xda, 0x3d, 0xd5, 0x23 }, + /* nonce */ + { 0x70, 0xc3, 0xdb, 0x4f, 0x0d, 0x26, 0x36, 0x84, + 0x00, 0xa1, 0x0e, 0xd0, 0x5d, 0x2b, 0xff, 0x5e }, + /* header */ + { 0x23, 0x4a, 0x34, 0x63, 0xc1, 0x26, 0x4a, 0xc6 }, + /* PT */ + { 0x1a, 0x47, 0xcb, 0x49, 0x33 }, + /* CT */ + { 0xd8, 0x51, 0xd5, 0xba, 0xe0 }, + /* Tag */ + { 0x3a, 0x59, 0xf2, 0x38, 0xa2, 0x3e, 0x39, 0x19, + 0x9d, 0xc9, 0x26, 0x66, 0x26, 0xc4, 0x0f, 0x80 } +} + +}; + int err, x, idx, res; + unsigned long len; + unsigned char outct[MAXBLOCKSIZE], outtag[MAXBLOCKSIZE]; + + /* AES can be under rijndael or aes... try to find it */ + if ((idx = find_cipher("aes")) == -1) { + if ((idx = find_cipher("rijndael")) == -1) { + return CRYPT_NOP; + } + } + + for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { + len = sizeof(outtag); + if ((err = eax_encrypt_authenticate_memory(idx, tests[x].key, tests[x].keylen, + tests[x].nonce, tests[x].noncelen, tests[x].header, tests[x].headerlen, + tests[x].plaintext, tests[x].msglen, outct, outtag, &len)) != CRYPT_OK) { + return err; + } + if (compare_testvector(outtag, len, tests[x].tag, len, "EAX Tag", x) || + compare_testvector(outct, tests[x].msglen, tests[x].ciphertext, tests[x].msglen, "EAX CT", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* test decrypt */ + if ((err = eax_decrypt_verify_memory(idx, tests[x].key, tests[x].keylen, + tests[x].nonce, tests[x].noncelen, tests[x].header, tests[x].headerlen, + outct, tests[x].msglen, outct, outtag, len, &res)) != CRYPT_OK) { + return err; + } + if ((res != 1) || compare_testvector(outct, tests[x].msglen, tests[x].plaintext, tests[x].msglen, "EAX", x)) { +#ifdef LTC_TEST_DBG + printf("\n\nEAX: Failure-decrypt - res = %d\n", res); +#endif + return CRYPT_FAIL_TESTVECTOR; + } + + } + return CRYPT_OK; +#endif /* LTC_TEST */ +} + +#endif /* LTC_EAX_MODE */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_add_aad.c b/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_add_aad.c new file mode 100644 index 000000000..cacc15ba2 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_add_aad.c @@ -0,0 +1,124 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file gcm_add_aad.c + GCM implementation, Add AAD data to the stream, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_GCM_MODE + +/** + Add AAD to the GCM state + @param gcm The GCM state + @param adata The additional authentication data to add to the GCM state + @param adatalen The length of the AAD data. + @return CRYPT_OK on success + */ +int gcm_add_aad(gcm_state *gcm, + const unsigned char *adata, unsigned long adatalen) +{ + unsigned long x; + int err; +#ifdef LTC_FAST + unsigned long y; +#endif + + LTC_ARGCHK(gcm != NULL); + if (adatalen > 0) { + LTC_ARGCHK(adata != NULL); + } + + if (gcm->buflen > 16 || gcm->buflen < 0) { + return CRYPT_INVALID_ARG; + } + + if ((err = cipher_is_valid(gcm->cipher)) != CRYPT_OK) { + return err; + } + + /* in IV mode? */ + if (gcm->mode == LTC_GCM_MODE_IV) { + /* IV length must be > 0 */ + if (gcm->buflen == 0 && gcm->totlen == 0) return CRYPT_ERROR; + /* let's process the IV */ + if (gcm->ivmode || gcm->buflen != 12) { + for (x = 0; x < (unsigned long)gcm->buflen; x++) { + gcm->X[x] ^= gcm->buf[x]; + } + if (gcm->buflen) { + gcm->totlen += gcm->buflen * CONST64(8); + gcm_mult_h(gcm, gcm->X); + } + + /* mix in the length */ + zeromem(gcm->buf, 8); + STORE64H(gcm->totlen, gcm->buf+8); + for (x = 0; x < 16; x++) { + gcm->X[x] ^= gcm->buf[x]; + } + gcm_mult_h(gcm, gcm->X); + + /* copy counter out */ + XMEMCPY(gcm->Y, gcm->X, 16); + zeromem(gcm->X, 16); + } else { + XMEMCPY(gcm->Y, gcm->buf, 12); + gcm->Y[12] = 0; + gcm->Y[13] = 0; + gcm->Y[14] = 0; + gcm->Y[15] = 1; + } + XMEMCPY(gcm->Y_0, gcm->Y, 16); + zeromem(gcm->buf, 16); + gcm->buflen = 0; + gcm->totlen = 0; + gcm->mode = LTC_GCM_MODE_AAD; + } + + if (gcm->mode != LTC_GCM_MODE_AAD || gcm->buflen >= 16) { + return CRYPT_INVALID_ARG; + } + + x = 0; +#ifdef LTC_FAST + if (gcm->buflen == 0) { + for (x = 0; x < (adatalen & ~15); x += 16) { + for (y = 0; y < 16; y += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST(&gcm->X[y])) ^= *(LTC_FAST_TYPE_PTR_CAST(&adata[x + y])); + } + gcm_mult_h(gcm, gcm->X); + gcm->totlen += 128; + } + adata += x; + } +#endif + + + /* start adding AAD data to the state */ + for (; x < adatalen; x++) { + gcm->X[gcm->buflen++] ^= *adata++; + + if (gcm->buflen == 16) { + /* GF mult it */ + gcm_mult_h(gcm, gcm->X); + gcm->buflen = 0; + gcm->totlen += 128; + } + } + + return CRYPT_OK; +} +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_add_iv.c b/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_add_iv.c new file mode 100644 index 000000000..3fd386147 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_add_iv.c @@ -0,0 +1,92 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file gcm_add_iv.c + GCM implementation, add IV data to the state, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_GCM_MODE + +/** + Add IV data to the GCM state + @param gcm The GCM state + @param IV The initial value data to add + @param IVlen The length of the IV + @return CRYPT_OK on success + */ +int gcm_add_iv(gcm_state *gcm, + const unsigned char *IV, unsigned long IVlen) +{ + unsigned long x, y; + int err; + + LTC_ARGCHK(gcm != NULL); + if (IVlen > 0) { + LTC_ARGCHK(IV != NULL); + } + + /* must be in IV mode */ + if (gcm->mode != LTC_GCM_MODE_IV) { + return CRYPT_INVALID_ARG; + } + + if (gcm->buflen >= 16 || gcm->buflen < 0) { + return CRYPT_INVALID_ARG; + } + + if ((err = cipher_is_valid(gcm->cipher)) != CRYPT_OK) { + return err; + } + + + /* trip the ivmode flag */ + if (IVlen + gcm->buflen > 12) { + gcm->ivmode |= 1; + } + + x = 0; +#ifdef LTC_FAST + if (gcm->buflen == 0) { + for (x = 0; x < (IVlen & ~15); x += 16) { + for (y = 0; y < 16; y += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST(&gcm->X[y])) ^= *(LTC_FAST_TYPE_PTR_CAST(&IV[x + y])); + } + gcm_mult_h(gcm, gcm->X); + gcm->totlen += 128; + } + IV += x; + } +#endif + + /* start adding IV data to the state */ + for (; x < IVlen; x++) { + gcm->buf[gcm->buflen++] = *IV++; + + if (gcm->buflen == 16) { + /* GF mult it */ + for (y = 0; y < 16; y++) { + gcm->X[y] ^= gcm->buf[y]; + } + gcm_mult_h(gcm, gcm->X); + gcm->buflen = 0; + gcm->totlen += 128; + } + } + + return CRYPT_OK; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_done.c b/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_done.c new file mode 100644 index 000000000..ffd551e83 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_done.c @@ -0,0 +1,90 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file gcm_done.c + GCM implementation, Terminate the stream, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_GCM_MODE + +/** + Terminate a GCM stream + @param gcm The GCM state + @param tag [out] The destination for the MAC tag + @param taglen [in/out] The length of the MAC tag + @return CRYPT_OK on success + */ +int gcm_done(gcm_state *gcm, + unsigned char *tag, unsigned long *taglen) +{ + unsigned long x; + int err; + + LTC_ARGCHK(gcm != NULL); + LTC_ARGCHK(tag != NULL); + LTC_ARGCHK(taglen != NULL); + + if (gcm->buflen > 16 || gcm->buflen < 0) { + return CRYPT_INVALID_ARG; + } + + if ((err = cipher_is_valid(gcm->cipher)) != CRYPT_OK) { + return err; + } + + if (gcm->mode == LTC_GCM_MODE_IV) { + /* let's process the IV */ + if ((err = gcm_add_aad(gcm, NULL, 0)) != CRYPT_OK) return err; + } + + if (gcm->mode == LTC_GCM_MODE_AAD) { + /* let's process the AAD */ + if ((err = gcm_process(gcm, NULL, 0, NULL, 0)) != CRYPT_OK) return err; + } + + if (gcm->mode != LTC_GCM_MODE_TEXT) { + return CRYPT_INVALID_ARG; + } + + /* handle remaining ciphertext */ + if (gcm->buflen) { + gcm->pttotlen += gcm->buflen * CONST64(8); + gcm_mult_h(gcm, gcm->X); + } + + /* length */ + STORE64H(gcm->totlen, gcm->buf); + STORE64H(gcm->pttotlen, gcm->buf+8); + for (x = 0; x < 16; x++) { + gcm->X[x] ^= gcm->buf[x]; + } + gcm_mult_h(gcm, gcm->X); + + /* encrypt original counter */ + if ((err = cipher_descriptor[gcm->cipher].ecb_encrypt(gcm->Y_0, gcm->buf, &gcm->K)) != CRYPT_OK) { + return err; + } + for (x = 0; x < 16 && x < *taglen; x++) { + tag[x] = gcm->buf[x] ^ gcm->X[x]; + } + *taglen = x; + + cipher_descriptor[gcm->cipher].done(&gcm->K); + + return CRYPT_OK; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_gf_mult.c b/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_gf_mult.c new file mode 100644 index 000000000..2e7a9060f --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_gf_mult.c @@ -0,0 +1,219 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file gcm_gf_mult.c + GCM implementation, do the GF mult, by Tom St Denis +*/ +#include "tomcrypt.h" + +#if defined(LTC_GCM_TABLES) || defined(LTC_LRW_TABLES) || ((defined(LTC_GCM_MODE) || defined(LTC_GCM_MODE)) && defined(LTC_FAST)) + +/* this is x*2^128 mod p(x) ... the results are 16 bytes each stored in a packed format. Since only the + * lower 16 bits are not zero'ed I removed the upper 14 bytes */ +const unsigned char gcm_shift_table[256*2] = { +0x00, 0x00, 0x01, 0xc2, 0x03, 0x84, 0x02, 0x46, 0x07, 0x08, 0x06, 0xca, 0x04, 0x8c, 0x05, 0x4e, +0x0e, 0x10, 0x0f, 0xd2, 0x0d, 0x94, 0x0c, 0x56, 0x09, 0x18, 0x08, 0xda, 0x0a, 0x9c, 0x0b, 0x5e, +0x1c, 0x20, 0x1d, 0xe2, 0x1f, 0xa4, 0x1e, 0x66, 0x1b, 0x28, 0x1a, 0xea, 0x18, 0xac, 0x19, 0x6e, +0x12, 0x30, 0x13, 0xf2, 0x11, 0xb4, 0x10, 0x76, 0x15, 0x38, 0x14, 0xfa, 0x16, 0xbc, 0x17, 0x7e, +0x38, 0x40, 0x39, 0x82, 0x3b, 0xc4, 0x3a, 0x06, 0x3f, 0x48, 0x3e, 0x8a, 0x3c, 0xcc, 0x3d, 0x0e, +0x36, 0x50, 0x37, 0x92, 0x35, 0xd4, 0x34, 0x16, 0x31, 0x58, 0x30, 0x9a, 0x32, 0xdc, 0x33, 0x1e, +0x24, 0x60, 0x25, 0xa2, 0x27, 0xe4, 0x26, 0x26, 0x23, 0x68, 0x22, 0xaa, 0x20, 0xec, 0x21, 0x2e, +0x2a, 0x70, 0x2b, 0xb2, 0x29, 0xf4, 0x28, 0x36, 0x2d, 0x78, 0x2c, 0xba, 0x2e, 0xfc, 0x2f, 0x3e, +0x70, 0x80, 0x71, 0x42, 0x73, 0x04, 0x72, 0xc6, 0x77, 0x88, 0x76, 0x4a, 0x74, 0x0c, 0x75, 0xce, +0x7e, 0x90, 0x7f, 0x52, 0x7d, 0x14, 0x7c, 0xd6, 0x79, 0x98, 0x78, 0x5a, 0x7a, 0x1c, 0x7b, 0xde, +0x6c, 0xa0, 0x6d, 0x62, 0x6f, 0x24, 0x6e, 0xe6, 0x6b, 0xa8, 0x6a, 0x6a, 0x68, 0x2c, 0x69, 0xee, +0x62, 0xb0, 0x63, 0x72, 0x61, 0x34, 0x60, 0xf6, 0x65, 0xb8, 0x64, 0x7a, 0x66, 0x3c, 0x67, 0xfe, +0x48, 0xc0, 0x49, 0x02, 0x4b, 0x44, 0x4a, 0x86, 0x4f, 0xc8, 0x4e, 0x0a, 0x4c, 0x4c, 0x4d, 0x8e, +0x46, 0xd0, 0x47, 0x12, 0x45, 0x54, 0x44, 0x96, 0x41, 0xd8, 0x40, 0x1a, 0x42, 0x5c, 0x43, 0x9e, +0x54, 0xe0, 0x55, 0x22, 0x57, 0x64, 0x56, 0xa6, 0x53, 0xe8, 0x52, 0x2a, 0x50, 0x6c, 0x51, 0xae, +0x5a, 0xf0, 0x5b, 0x32, 0x59, 0x74, 0x58, 0xb6, 0x5d, 0xf8, 0x5c, 0x3a, 0x5e, 0x7c, 0x5f, 0xbe, +0xe1, 0x00, 0xe0, 0xc2, 0xe2, 0x84, 0xe3, 0x46, 0xe6, 0x08, 0xe7, 0xca, 0xe5, 0x8c, 0xe4, 0x4e, +0xef, 0x10, 0xee, 0xd2, 0xec, 0x94, 0xed, 0x56, 0xe8, 0x18, 0xe9, 0xda, 0xeb, 0x9c, 0xea, 0x5e, +0xfd, 0x20, 0xfc, 0xe2, 0xfe, 0xa4, 0xff, 0x66, 0xfa, 0x28, 0xfb, 0xea, 0xf9, 0xac, 0xf8, 0x6e, +0xf3, 0x30, 0xf2, 0xf2, 0xf0, 0xb4, 0xf1, 0x76, 0xf4, 0x38, 0xf5, 0xfa, 0xf7, 0xbc, 0xf6, 0x7e, +0xd9, 0x40, 0xd8, 0x82, 0xda, 0xc4, 0xdb, 0x06, 0xde, 0x48, 0xdf, 0x8a, 0xdd, 0xcc, 0xdc, 0x0e, +0xd7, 0x50, 0xd6, 0x92, 0xd4, 0xd4, 0xd5, 0x16, 0xd0, 0x58, 0xd1, 0x9a, 0xd3, 0xdc, 0xd2, 0x1e, +0xc5, 0x60, 0xc4, 0xa2, 0xc6, 0xe4, 0xc7, 0x26, 0xc2, 0x68, 0xc3, 0xaa, 0xc1, 0xec, 0xc0, 0x2e, +0xcb, 0x70, 0xca, 0xb2, 0xc8, 0xf4, 0xc9, 0x36, 0xcc, 0x78, 0xcd, 0xba, 0xcf, 0xfc, 0xce, 0x3e, +0x91, 0x80, 0x90, 0x42, 0x92, 0x04, 0x93, 0xc6, 0x96, 0x88, 0x97, 0x4a, 0x95, 0x0c, 0x94, 0xce, +0x9f, 0x90, 0x9e, 0x52, 0x9c, 0x14, 0x9d, 0xd6, 0x98, 0x98, 0x99, 0x5a, 0x9b, 0x1c, 0x9a, 0xde, +0x8d, 0xa0, 0x8c, 0x62, 0x8e, 0x24, 0x8f, 0xe6, 0x8a, 0xa8, 0x8b, 0x6a, 0x89, 0x2c, 0x88, 0xee, +0x83, 0xb0, 0x82, 0x72, 0x80, 0x34, 0x81, 0xf6, 0x84, 0xb8, 0x85, 0x7a, 0x87, 0x3c, 0x86, 0xfe, +0xa9, 0xc0, 0xa8, 0x02, 0xaa, 0x44, 0xab, 0x86, 0xae, 0xc8, 0xaf, 0x0a, 0xad, 0x4c, 0xac, 0x8e, +0xa7, 0xd0, 0xa6, 0x12, 0xa4, 0x54, 0xa5, 0x96, 0xa0, 0xd8, 0xa1, 0x1a, 0xa3, 0x5c, 0xa2, 0x9e, +0xb5, 0xe0, 0xb4, 0x22, 0xb6, 0x64, 0xb7, 0xa6, 0xb2, 0xe8, 0xb3, 0x2a, 0xb1, 0x6c, 0xb0, 0xae, +0xbb, 0xf0, 0xba, 0x32, 0xb8, 0x74, 0xb9, 0xb6, 0xbc, 0xf8, 0xbd, 0x3a, 0xbf, 0x7c, 0xbe, 0xbe }; + +#endif + + +#if defined(LTC_GCM_MODE) || defined(LRW_MODE) + +#ifndef LTC_FAST +/* right shift */ +static void _gcm_rightshift(unsigned char *a) +{ + int x; + for (x = 15; x > 0; x--) { + a[x] = (a[x]>>1) | ((a[x-1]<<7)&0x80); + } + a[0] >>= 1; +} + +/* c = b*a */ +static const unsigned char mask[] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 }; +static const unsigned char poly[] = { 0x00, 0xE1 }; + + +/** + GCM GF multiplier (internal use only) bitserial + @param a First value + @param b Second value + @param c Destination for a * b + */ +void gcm_gf_mult(const unsigned char *a, const unsigned char *b, unsigned char *c) +{ + unsigned char Z[16], V[16]; + unsigned char x, y, z; + + zeromem(Z, 16); + XMEMCPY(V, a, 16); + for (x = 0; x < 128; x++) { + if (b[x>>3] & mask[x&7]) { + for (y = 0; y < 16; y++) { + Z[y] ^= V[y]; + } + } + z = V[15] & 0x01; + _gcm_rightshift(V); + V[0] ^= poly[z]; + } + XMEMCPY(c, Z, 16); +} + +#else + +/* map normal numbers to "ieee" way ... e.g. bit reversed */ +#define M(x) ( ((x&8)>>3) | ((x&4)>>1) | ((x&2)<<1) | ((x&1)<<3) ) + +#define BPD (sizeof(LTC_FAST_TYPE) * 8) +#define WPV (1 + (16 / sizeof(LTC_FAST_TYPE))) + +/** + GCM GF multiplier (internal use only) word oriented + @param a First value + @param b Second value + @param c Destination for a * b + */ +void gcm_gf_mult(const unsigned char *a, const unsigned char *b, unsigned char *c) +{ + int i, j, k, u; + LTC_FAST_TYPE B[16][WPV], tmp[32 / sizeof(LTC_FAST_TYPE)], pB[16 / sizeof(LTC_FAST_TYPE)], zz, z; + unsigned char pTmp[32]; + + /* create simple tables */ + zeromem(B[0], sizeof(B[0])); + zeromem(B[M(1)], sizeof(B[M(1)])); + +#ifdef ENDIAN_32BITWORD + for (i = 0; i < 4; i++) { + LOAD32H(B[M(1)][i], a + (i<<2)); + LOAD32L(pB[i], b + (i<<2)); + } +#else + for (i = 0; i < 2; i++) { + LOAD64H(B[M(1)][i], a + (i<<3)); + LOAD64L(pB[i], b + (i<<3)); + } +#endif + + /* now create 2, 4 and 8 */ + B[M(2)][0] = B[M(1)][0] >> 1; + B[M(4)][0] = B[M(1)][0] >> 2; + B[M(8)][0] = B[M(1)][0] >> 3; + for (i = 1; i < (int)WPV; i++) { + B[M(2)][i] = (B[M(1)][i-1] << (BPD-1)) | (B[M(1)][i] >> 1); + B[M(4)][i] = (B[M(1)][i-1] << (BPD-2)) | (B[M(1)][i] >> 2); + B[M(8)][i] = (B[M(1)][i-1] << (BPD-3)) | (B[M(1)][i] >> 3); + } + + /* now all values with two bits which are 3, 5, 6, 9, 10, 12 */ + for (i = 0; i < (int)WPV; i++) { + B[M(3)][i] = B[M(1)][i] ^ B[M(2)][i]; + B[M(5)][i] = B[M(1)][i] ^ B[M(4)][i]; + B[M(6)][i] = B[M(2)][i] ^ B[M(4)][i]; + B[M(9)][i] = B[M(1)][i] ^ B[M(8)][i]; + B[M(10)][i] = B[M(2)][i] ^ B[M(8)][i]; + B[M(12)][i] = B[M(8)][i] ^ B[M(4)][i]; + + /* now all 3 bit values and the only 4 bit value: 7, 11, 13, 14, 15 */ + B[M(7)][i] = B[M(3)][i] ^ B[M(4)][i]; + B[M(11)][i] = B[M(3)][i] ^ B[M(8)][i]; + B[M(13)][i] = B[M(1)][i] ^ B[M(12)][i]; + B[M(14)][i] = B[M(6)][i] ^ B[M(8)][i]; + B[M(15)][i] = B[M(7)][i] ^ B[M(8)][i]; + } + + zeromem(tmp, sizeof(tmp)); + + /* compute product four bits of each word at a time */ + /* for each nibble */ + for (i = (BPD/4)-1; i >= 0; i--) { + /* for each word */ + for (j = 0; j < (int)(WPV-1); j++) { + /* grab the 4 bits recall the nibbles are backwards so it's a shift by (i^1)*4 */ + u = (pB[j] >> ((i^1)<<2)) & 15; + + /* add offset by the word count the table looked up value to the result */ + for (k = 0; k < (int)WPV; k++) { + tmp[k+j] ^= B[u][k]; + } + } + /* shift result up by 4 bits */ + if (i != 0) { + for (z = j = 0; j < (int)(32 / sizeof(LTC_FAST_TYPE)); j++) { + zz = tmp[j] << (BPD-4); + tmp[j] = (tmp[j] >> 4) | z; + z = zz; + } + } + } + + /* store product */ +#ifdef ENDIAN_32BITWORD + for (i = 0; i < 8; i++) { + STORE32H(tmp[i], pTmp + (i<<2)); + } +#else + for (i = 0; i < 4; i++) { + STORE64H(tmp[i], pTmp + (i<<3)); + } +#endif + + /* reduce by taking most significant byte and adding the appropriate two byte sequence 16 bytes down */ + for (i = 31; i >= 16; i--) { + pTmp[i-16] ^= gcm_shift_table[((unsigned)pTmp[i]<<1)]; + pTmp[i-15] ^= gcm_shift_table[((unsigned)pTmp[i]<<1)+1]; + } + + for (i = 0; i < 16; i++) { + c[i] = pTmp[i]; + } + +} + +#endif + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_init.c b/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_init.c new file mode 100644 index 000000000..072870d01 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_init.c @@ -0,0 +1,105 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file gcm_init.c + GCM implementation, initialize state, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_GCM_MODE + +/** + Initialize a GCM state + @param gcm The GCM state to initialize + @param cipher The index of the cipher to use + @param key The secret key + @param keylen The length of the secret key + @return CRYPT_OK on success + */ +int gcm_init(gcm_state *gcm, int cipher, + const unsigned char *key, int keylen) +{ + int err; + unsigned char B[16]; +#ifdef LTC_GCM_TABLES + int x, y, z, t; +#endif + + LTC_ARGCHK(gcm != NULL); + LTC_ARGCHK(key != NULL); + +#ifdef LTC_FAST + if (16 % sizeof(LTC_FAST_TYPE)) { + return CRYPT_INVALID_ARG; + } +#endif + + /* is cipher valid? */ + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + if (cipher_descriptor[cipher].block_length != 16) { + return CRYPT_INVALID_CIPHER; + } + + /* schedule key */ + if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, &gcm->K)) != CRYPT_OK) { + return err; + } + + /* H = E(0) */ + zeromem(B, 16); + if ((err = cipher_descriptor[cipher].ecb_encrypt(B, gcm->H, &gcm->K)) != CRYPT_OK) { + return err; + } + + /* setup state */ + zeromem(gcm->buf, sizeof(gcm->buf)); + zeromem(gcm->X, sizeof(gcm->X)); + gcm->cipher = cipher; + gcm->mode = LTC_GCM_MODE_IV; + gcm->ivmode = 0; + gcm->buflen = 0; + gcm->totlen = 0; + gcm->pttotlen = 0; + +#ifdef LTC_GCM_TABLES + /* setup tables */ + + /* generate the first table as it has no shifting (from which we make the other tables) */ + zeromem(B, 16); + for (y = 0; y < 256; y++) { + B[0] = y; + gcm_gf_mult(gcm->H, B, &gcm->PC[0][y][0]); + } + + /* now generate the rest of the tables based the previous table */ + for (x = 1; x < 16; x++) { + for (y = 0; y < 256; y++) { + /* now shift it right by 8 bits */ + t = gcm->PC[x-1][y][15]; + for (z = 15; z > 0; z--) { + gcm->PC[x][y][z] = gcm->PC[x-1][y][z-1]; + } + gcm->PC[x][y][0] = gcm_shift_table[t<<1]; + gcm->PC[x][y][1] ^= gcm_shift_table[(t<<1)+1]; + } + } + +#endif + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_memory.c b/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_memory.c new file mode 100644 index 000000000..7b59960f8 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_memory.c @@ -0,0 +1,106 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file gcm_memory.c + GCM implementation, process a packet, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_GCM_MODE + +/** + Process an entire GCM packet in one call. + @param cipher Index of cipher to use + @param key The secret key + @param keylen The length of the secret key + @param IV The initialization vector + @param IVlen The length of the initialization vector + @param adata The additional authentication data (header) + @param adatalen The length of the adata + @param pt The plaintext + @param ptlen The length of the plaintext (ciphertext length is the same) + @param ct The ciphertext + @param tag [out] The MAC tag + @param taglen [in/out] The MAC tag length + @param direction Encrypt or Decrypt mode (GCM_ENCRYPT or GCM_DECRYPT) + @return CRYPT_OK on success + */ +int gcm_memory( int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *IV, unsigned long IVlen, + const unsigned char *adata, unsigned long adatalen, + unsigned char *pt, unsigned long ptlen, + unsigned char *ct, + unsigned char *tag, unsigned long *taglen, + int direction) +{ + void *orig; + gcm_state *gcm; + int err; + + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + + if (cipher_descriptor[cipher].accel_gcm_memory != NULL) { + return cipher_descriptor[cipher].accel_gcm_memory + (key, keylen, + IV, IVlen, + adata, adatalen, + pt, ptlen, + ct, + tag, taglen, + direction); + } + + + +#ifndef LTC_GCM_TABLES_SSE2 + orig = gcm = XMALLOC(sizeof(*gcm)); +#else + orig = gcm = XMALLOC(sizeof(*gcm) + 16); +#endif + if (gcm == NULL) { + return CRYPT_MEM; + } + + /* Force GCM to be on a multiple of 16 so we can use 128-bit aligned operations + * note that we only modify gcm and keep orig intact. This code is not portable + * but again it's only for SSE2 anyways, so who cares? + */ +#ifdef LTC_GCM_TABLES_SSE2 + if ((unsigned long)gcm & 15) { + gcm = (gcm_state *)((unsigned long)gcm + (16 - ((unsigned long)gcm & 15))); + } +#endif + + if ((err = gcm_init(gcm, cipher, key, keylen)) != CRYPT_OK) { + goto LTC_ERR; + } + if ((err = gcm_add_iv(gcm, IV, IVlen)) != CRYPT_OK) { + goto LTC_ERR; + } + if ((err = gcm_add_aad(gcm, adata, adatalen)) != CRYPT_OK) { + goto LTC_ERR; + } + if ((err = gcm_process(gcm, pt, ptlen, ct, direction)) != CRYPT_OK) { + goto LTC_ERR; + } + err = gcm_done(gcm, tag, taglen); +LTC_ERR: + XFREE(orig); + return err; +} +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_mult_h.c b/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_mult_h.c new file mode 100644 index 000000000..181d1d133 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_mult_h.c @@ -0,0 +1,57 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file gcm_mult_h.c + GCM implementation, do the GF mult, by Tom St Denis +*/ +#include "tomcrypt.h" + +#if defined(LTC_GCM_MODE) +/** + GCM multiply by H + @param gcm The GCM state which holds the H value + @param I The value to multiply H by + */ +void gcm_mult_h(gcm_state *gcm, unsigned char *I) +{ + unsigned char T[16]; +#ifdef LTC_GCM_TABLES + int x; +#ifdef LTC_GCM_TABLES_SSE2 + asm("movdqa (%0),%%xmm0"::"r"(&gcm->PC[0][I[0]][0])); + for (x = 1; x < 16; x++) { + asm("pxor (%0),%%xmm0"::"r"(&gcm->PC[x][I[x]][0])); + } + asm("movdqa %%xmm0,(%0)"::"r"(&T)); +#else + int y; + XMEMCPY(T, &gcm->PC[0][I[0]][0], 16); + for (x = 1; x < 16; x++) { +#ifdef LTC_FAST + for (y = 0; y < 16; y += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST(T + y)) ^= *(LTC_FAST_TYPE_PTR_CAST(&gcm->PC[x][I[x]][y])); + } +#else + for (y = 0; y < 16; y++) { + T[y] ^= gcm->PC[x][I[x]][y]; + } +#endif /* LTC_FAST */ + } +#endif /* LTC_GCM_TABLES_SSE2 */ +#else + gcm_gf_mult(gcm->H, I, T); +#endif + XMEMCPY(I, T, 16); +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_process.c b/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_process.c new file mode 100644 index 000000000..b1ec20cf2 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_process.c @@ -0,0 +1,160 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file gcm_process.c + GCM implementation, process message data, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_GCM_MODE + +/** + Process plaintext/ciphertext through GCM + @param gcm The GCM state + @param pt The plaintext + @param ptlen The plaintext length (ciphertext length is the same) + @param ct The ciphertext + @param direction Encrypt or Decrypt mode (GCM_ENCRYPT or GCM_DECRYPT) + @return CRYPT_OK on success + */ +int gcm_process(gcm_state *gcm, + unsigned char *pt, unsigned long ptlen, + unsigned char *ct, + int direction) +{ + unsigned long x; + int y, err; + unsigned char b; + + LTC_ARGCHK(gcm != NULL); + if (ptlen > 0) { + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + } + + if (gcm->buflen > 16 || gcm->buflen < 0) { + return CRYPT_INVALID_ARG; + } + + if ((err = cipher_is_valid(gcm->cipher)) != CRYPT_OK) { + return err; + } + + /* 0xFFFFFFFE0 = ((2^39)-256)/8 */ + if (gcm->pttotlen / 8 + (ulong64)gcm->buflen + (ulong64)ptlen >= CONST64(0xFFFFFFFE0)) { + return CRYPT_INVALID_ARG; + } + + if (gcm->mode == LTC_GCM_MODE_IV) { + /* let's process the IV */ + if ((err = gcm_add_aad(gcm, NULL, 0)) != CRYPT_OK) return err; + } + + /* in AAD mode? */ + if (gcm->mode == LTC_GCM_MODE_AAD) { + /* let's process the AAD */ + if (gcm->buflen) { + gcm->totlen += gcm->buflen * CONST64(8); + gcm_mult_h(gcm, gcm->X); + } + + /* increment counter */ + for (y = 15; y >= 12; y--) { + if (++gcm->Y[y] & 255) { break; } + } + /* encrypt the counter */ + if ((err = cipher_descriptor[gcm->cipher].ecb_encrypt(gcm->Y, gcm->buf, &gcm->K)) != CRYPT_OK) { + return err; + } + + gcm->buflen = 0; + gcm->mode = LTC_GCM_MODE_TEXT; + } + + if (gcm->mode != LTC_GCM_MODE_TEXT) { + return CRYPT_INVALID_ARG; + } + + x = 0; +#ifdef LTC_FAST + if (gcm->buflen == 0) { + if (direction == GCM_ENCRYPT) { + for (x = 0; x < (ptlen & ~15); x += 16) { + /* ctr encrypt */ + for (y = 0; y < 16; y += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST(&ct[x + y])) = *(LTC_FAST_TYPE_PTR_CAST(&pt[x+y])) ^ *(LTC_FAST_TYPE_PTR_CAST(&gcm->buf[y])); + *(LTC_FAST_TYPE_PTR_CAST(&gcm->X[y])) ^= *(LTC_FAST_TYPE_PTR_CAST(&ct[x+y])); + } + /* GMAC it */ + gcm->pttotlen += 128; + gcm_mult_h(gcm, gcm->X); + /* increment counter */ + for (y = 15; y >= 12; y--) { + if (++gcm->Y[y] & 255) { break; } + } + if ((err = cipher_descriptor[gcm->cipher].ecb_encrypt(gcm->Y, gcm->buf, &gcm->K)) != CRYPT_OK) { + return err; + } + } + } else { + for (x = 0; x < (ptlen & ~15); x += 16) { + /* ctr encrypt */ + for (y = 0; y < 16; y += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST(&gcm->X[y])) ^= *(LTC_FAST_TYPE_PTR_CAST(&ct[x+y])); + *(LTC_FAST_TYPE_PTR_CAST(&pt[x + y])) = *(LTC_FAST_TYPE_PTR_CAST(&ct[x+y])) ^ *(LTC_FAST_TYPE_PTR_CAST(&gcm->buf[y])); + } + /* GMAC it */ + gcm->pttotlen += 128; + gcm_mult_h(gcm, gcm->X); + /* increment counter */ + for (y = 15; y >= 12; y--) { + if (++gcm->Y[y] & 255) { break; } + } + if ((err = cipher_descriptor[gcm->cipher].ecb_encrypt(gcm->Y, gcm->buf, &gcm->K)) != CRYPT_OK) { + return err; + } + } + } + } +#endif + + /* process text */ + for (; x < ptlen; x++) { + if (gcm->buflen == 16) { + gcm->pttotlen += 128; + gcm_mult_h(gcm, gcm->X); + + /* increment counter */ + for (y = 15; y >= 12; y--) { + if (++gcm->Y[y] & 255) { break; } + } + if ((err = cipher_descriptor[gcm->cipher].ecb_encrypt(gcm->Y, gcm->buf, &gcm->K)) != CRYPT_OK) { + return err; + } + gcm->buflen = 0; + } + + if (direction == GCM_ENCRYPT) { + b = ct[x] = pt[x] ^ gcm->buf[gcm->buflen]; + } else { + b = ct[x]; + pt[x] = ct[x] ^ gcm->buf[gcm->buflen]; + } + gcm->X[gcm->buflen++] ^= b; + } + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_reset.c b/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_reset.c new file mode 100644 index 000000000..3bd108853 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_reset.c @@ -0,0 +1,42 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file gcm_reset.c + GCM implementation, reset a used state so it can accept IV data, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_GCM_MODE + +/** + Reset a GCM state to as if you just called gcm_init(). This saves the initialization time. + @param gcm The GCM state to reset + @return CRYPT_OK on success +*/ +int gcm_reset(gcm_state *gcm) +{ + LTC_ARGCHK(gcm != NULL); + + zeromem(gcm->buf, sizeof(gcm->buf)); + zeromem(gcm->X, sizeof(gcm->X)); + gcm->mode = LTC_GCM_MODE_IV; + gcm->ivmode = 0; + gcm->buflen = 0; + gcm->totlen = 0; + gcm->pttotlen = 0; + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_test.c b/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_test.c new file mode 100644 index 000000000..5f68b30e0 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/gcm/gcm_test.c @@ -0,0 +1,392 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file gcm_test.c + GCM implementation, testing, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_GCM_MODE + +/** + Test the GCM code + @return CRYPT_OK on success + */ +int gcm_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct { + unsigned char K[32]; + int keylen; + unsigned char P[128]; + unsigned long ptlen; + unsigned char A[128]; + unsigned long alen; + unsigned char IV[128]; + unsigned long IVlen; + unsigned char C[128]; + unsigned char T[16]; + } tests[] = { + +/* test case #1 */ +{ + /* key */ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + 16, + + /* plaintext */ + { 0 }, + 0, + + /* AAD data */ + { 0 }, + 0, + + /* IV */ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 }, + 12, + + /* ciphertext */ + { 0 }, + + /* tag */ + { 0x58, 0xe2, 0xfc, 0xce, 0xfa, 0x7e, 0x30, 0x61, + 0x36, 0x7f, 0x1d, 0x57, 0xa4, 0xe7, 0x45, 0x5a } +}, + +/* test case #2 */ +{ + /* key */ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + 16, + + /* PT */ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + 16, + + /* ADATA */ + { 0 }, + 0, + + /* IV */ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 }, + 12, + + /* CT */ + { 0x03, 0x88, 0xda, 0xce, 0x60, 0xb6, 0xa3, 0x92, + 0xf3, 0x28, 0xc2, 0xb9, 0x71, 0xb2, 0xfe, 0x78 }, + + /* TAG */ + { 0xab, 0x6e, 0x47, 0xd4, 0x2c, 0xec, 0x13, 0xbd, + 0xf5, 0x3a, 0x67, 0xb2, 0x12, 0x57, 0xbd, 0xdf } +}, + +/* test case #3 */ +{ + /* key */ + { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, + 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, }, + 16, + + /* PT */ + { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, + 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, + 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, + 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, + 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, + 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, + 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, + 0xba, 0x63, 0x7b, 0x39, 0x1a, 0xaf, 0xd2, 0x55, }, + 64, + + /* ADATA */ + { 0 }, + 0, + + /* IV */ + { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad, + 0xde, 0xca, 0xf8, 0x88, }, + 12, + + /* CT */ + { 0x42, 0x83, 0x1e, 0xc2, 0x21, 0x77, 0x74, 0x24, + 0x4b, 0x72, 0x21, 0xb7, 0x84, 0xd0, 0xd4, 0x9c, + 0xe3, 0xaa, 0x21, 0x2f, 0x2c, 0x02, 0xa4, 0xe0, + 0x35, 0xc1, 0x7e, 0x23, 0x29, 0xac, 0xa1, 0x2e, + 0x21, 0xd5, 0x14, 0xb2, 0x54, 0x66, 0x93, 0x1c, + 0x7d, 0x8f, 0x6a, 0x5a, 0xac, 0x84, 0xaa, 0x05, + 0x1b, 0xa3, 0x0b, 0x39, 0x6a, 0x0a, 0xac, 0x97, + 0x3d, 0x58, 0xe0, 0x91, 0x47, 0x3f, 0x59, 0x85, }, + + /* TAG */ + { 0x4d, 0x5c, 0x2a, 0xf3, 0x27, 0xcd, 0x64, 0xa6, + 0x2c, 0xf3, 0x5a, 0xbd, 0x2b, 0xa6, 0xfa, 0xb4, } +}, + +/* test case #4 */ +{ + /* key */ + { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, + 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, }, + 16, + + /* PT */ + { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, + 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, + 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, + 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, + 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, + 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, + 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, + 0xba, 0x63, 0x7b, 0x39, }, + 60, + + /* ADATA */ + { 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, + 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, + 0xab, 0xad, 0xda, 0xd2, }, + 20, + + /* IV */ + { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad, + 0xde, 0xca, 0xf8, 0x88, }, + 12, + + /* CT */ + { 0x42, 0x83, 0x1e, 0xc2, 0x21, 0x77, 0x74, 0x24, + 0x4b, 0x72, 0x21, 0xb7, 0x84, 0xd0, 0xd4, 0x9c, + 0xe3, 0xaa, 0x21, 0x2f, 0x2c, 0x02, 0xa4, 0xe0, + 0x35, 0xc1, 0x7e, 0x23, 0x29, 0xac, 0xa1, 0x2e, + 0x21, 0xd5, 0x14, 0xb2, 0x54, 0x66, 0x93, 0x1c, + 0x7d, 0x8f, 0x6a, 0x5a, 0xac, 0x84, 0xaa, 0x05, + 0x1b, 0xa3, 0x0b, 0x39, 0x6a, 0x0a, 0xac, 0x97, + 0x3d, 0x58, 0xe0, 0x91, }, + + /* TAG */ + { 0x5b, 0xc9, 0x4f, 0xbc, 0x32, 0x21, 0xa5, 0xdb, + 0x94, 0xfa, 0xe9, 0x5a, 0xe7, 0x12, 0x1a, 0x47, } + +}, + +/* test case #5 */ +{ + /* key */ + { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, + 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, }, + 16, + + /* PT */ + { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, + 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, + 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, + 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, + 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, + 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, + 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, + 0xba, 0x63, 0x7b, 0x39, }, + 60, + + /* ADATA */ + { 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, + 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, + 0xab, 0xad, 0xda, 0xd2, }, + 20, + + /* IV */ + { 0xca, 0xfe, 0xba, 0xbe, 0xfa, 0xce, 0xdb, 0xad, }, + 8, + + /* CT */ + { 0x61, 0x35, 0x3b, 0x4c, 0x28, 0x06, 0x93, 0x4a, + 0x77, 0x7f, 0xf5, 0x1f, 0xa2, 0x2a, 0x47, 0x55, + 0x69, 0x9b, 0x2a, 0x71, 0x4f, 0xcd, 0xc6, 0xf8, + 0x37, 0x66, 0xe5, 0xf9, 0x7b, 0x6c, 0x74, 0x23, + 0x73, 0x80, 0x69, 0x00, 0xe4, 0x9f, 0x24, 0xb2, + 0x2b, 0x09, 0x75, 0x44, 0xd4, 0x89, 0x6b, 0x42, + 0x49, 0x89, 0xb5, 0xe1, 0xeb, 0xac, 0x0f, 0x07, + 0xc2, 0x3f, 0x45, 0x98, }, + + /* TAG */ + { 0x36, 0x12, 0xd2, 0xe7, 0x9e, 0x3b, 0x07, 0x85, + 0x56, 0x1b, 0xe1, 0x4a, 0xac, 0xa2, 0xfc, 0xcb, } +}, + +/* test case #6 */ +{ + /* key */ + { 0xfe, 0xff, 0xe9, 0x92, 0x86, 0x65, 0x73, 0x1c, + 0x6d, 0x6a, 0x8f, 0x94, 0x67, 0x30, 0x83, 0x08, }, + 16, + + /* PT */ + { 0xd9, 0x31, 0x32, 0x25, 0xf8, 0x84, 0x06, 0xe5, + 0xa5, 0x59, 0x09, 0xc5, 0xaf, 0xf5, 0x26, 0x9a, + 0x86, 0xa7, 0xa9, 0x53, 0x15, 0x34, 0xf7, 0xda, + 0x2e, 0x4c, 0x30, 0x3d, 0x8a, 0x31, 0x8a, 0x72, + 0x1c, 0x3c, 0x0c, 0x95, 0x95, 0x68, 0x09, 0x53, + 0x2f, 0xcf, 0x0e, 0x24, 0x49, 0xa6, 0xb5, 0x25, + 0xb1, 0x6a, 0xed, 0xf5, 0xaa, 0x0d, 0xe6, 0x57, + 0xba, 0x63, 0x7b, 0x39, }, + 60, + + /* ADATA */ + { 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, + 0xfe, 0xed, 0xfa, 0xce, 0xde, 0xad, 0xbe, 0xef, + 0xab, 0xad, 0xda, 0xd2, }, + 20, + + /* IV */ + { 0x93, 0x13, 0x22, 0x5d, 0xf8, 0x84, 0x06, 0xe5, + 0x55, 0x90, 0x9c, 0x5a, 0xff, 0x52, 0x69, 0xaa, + 0x6a, 0x7a, 0x95, 0x38, 0x53, 0x4f, 0x7d, 0xa1, + 0xe4, 0xc3, 0x03, 0xd2, 0xa3, 0x18, 0xa7, 0x28, + 0xc3, 0xc0, 0xc9, 0x51, 0x56, 0x80, 0x95, 0x39, + 0xfc, 0xf0, 0xe2, 0x42, 0x9a, 0x6b, 0x52, 0x54, + 0x16, 0xae, 0xdb, 0xf5, 0xa0, 0xde, 0x6a, 0x57, + 0xa6, 0x37, 0xb3, 0x9b, }, + 60, + + /* CT */ + { 0x8c, 0xe2, 0x49, 0x98, 0x62, 0x56, 0x15, 0xb6, + 0x03, 0xa0, 0x33, 0xac, 0xa1, 0x3f, 0xb8, 0x94, + 0xbe, 0x91, 0x12, 0xa5, 0xc3, 0xa2, 0x11, 0xa8, + 0xba, 0x26, 0x2a, 0x3c, 0xca, 0x7e, 0x2c, 0xa7, + 0x01, 0xe4, 0xa9, 0xa4, 0xfb, 0xa4, 0x3c, 0x90, + 0xcc, 0xdc, 0xb2, 0x81, 0xd4, 0x8c, 0x7c, 0x6f, + 0xd6, 0x28, 0x75, 0xd2, 0xac, 0xa4, 0x17, 0x03, + 0x4c, 0x34, 0xae, 0xe5, }, + + /* TAG */ + { 0x61, 0x9c, 0xc5, 0xae, 0xff, 0xfe, 0x0b, 0xfa, + 0x46, 0x2a, 0xf4, 0x3c, 0x16, 0x99, 0xd0, 0x50, } +}, + +/* test case #46 from BG (catches the LTC bug of v1.15) */ +{ + /* key */ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + 16, + + /* PT */ + { 0xa2, 0xaa, 0xb3, 0xad, 0x8b, 0x17, 0xac, 0xdd, + 0xa2, 0x88, 0x42, 0x6c, 0xd7, 0xc4, 0x29, 0xb7, + 0xca, 0x86, 0xb7, 0xac, 0xa0, 0x58, 0x09, 0xc7, + 0x0c, 0xe8, 0x2d, 0xb2, 0x57, 0x11, 0xcb, 0x53, + 0x02, 0xeb, 0x27, 0x43, 0xb0, 0x36, 0xf3, 0xd7, + 0x50, 0xd6, 0xcf, 0x0d, 0xc0, 0xac, 0xb9, 0x29, + 0x50, 0xd5, 0x46, 0xdb, 0x30, 0x8f, 0x93, 0xb4, + 0xff, 0x24, 0x4a, 0xfa, 0x9d, 0xc7, 0x2b, 0xcd, + 0x75, 0x8d, 0x2c }, + 67, + + /* ADATA */ + { 0x68, 0x8e, 0x1a, 0xa9, 0x84, 0xde, 0x92, 0x6d, + 0xc7, 0xb4, 0xc4, 0x7f, 0x44 }, + 13, + + /* IV */ + { 0xb7, 0x21, 0x38, 0xb5, 0xa0, 0x5f, 0xf5, 0x07, + 0x0e, 0x8c, 0xd9, 0x41, 0x83, 0xf7, 0x61, 0xd8 }, + 16, + + /* CT */ + { 0xcb, 0xc8, 0xd2, 0xf1, 0x54, 0x81, 0xa4, 0xcc, + 0x7d, 0xd1, 0xe1, 0x9a, 0xaa, 0x83, 0xde, 0x56, + 0x78, 0x48, 0x3e, 0xc3, 0x59, 0xae, 0x7d, 0xec, + 0x2a, 0xb8, 0xd5, 0x34, 0xe0, 0x90, 0x6f, 0x4b, + 0x46, 0x63, 0xfa, 0xff, 0x58, 0xa8, 0xb2, 0xd7, + 0x33, 0xb8, 0x45, 0xee, 0xf7, 0xc9, 0xb3, 0x31, + 0xe9, 0xe1, 0x0e, 0xb2, 0x61, 0x2c, 0x99, 0x5f, + 0xeb, 0x1a, 0xc1, 0x5a, 0x62, 0x86, 0xcc, 0xe8, + 0xb2, 0x97, 0xa8 }, + + /* TAG */ + { 0x8d, 0x2d, 0x2a, 0x93, 0x72, 0x62, 0x6f, 0x6b, + 0xee, 0x85, 0x80, 0x27, 0x6a, 0x63, 0x66, 0xbf } +} + +/* rest of test cases are the same except AES key size changes... ignored... */ +}; + int idx, err; + unsigned long x, y; + unsigned char out[2][128], T[2][16]; + gcm_state gcm; + + /* find aes */ + idx = find_cipher("aes"); + if (idx == -1) { + idx = find_cipher("rijndael"); + if (idx == -1) { + return CRYPT_NOP; + } + } + + /* Special test case for empty AAD + empty PT */ + y = sizeof(T[0]); + if ((err = gcm_init(&gcm, idx, tests[0].K, tests[0].keylen)) != CRYPT_OK) return err; + if ((err = gcm_add_iv(&gcm, tests[0].IV, tests[0].IVlen)) != CRYPT_OK) return err; + /* intentionally skip gcm_add_aad + gcm_process */ + if ((err = gcm_done(&gcm, T[0], &y)) != CRYPT_OK) return err; + if (compare_testvector(T[0], y, tests[0].T, 16, "GCM Encrypt Tag-special", 0)) return CRYPT_FAIL_TESTVECTOR; + + for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { + y = sizeof(T[0]); + if ((err = gcm_memory(idx, tests[x].K, tests[x].keylen, + tests[x].IV, tests[x].IVlen, + tests[x].A, tests[x].alen, + (unsigned char*)tests[x].P, tests[x].ptlen, + out[0], T[0], &y, GCM_ENCRYPT)) != CRYPT_OK) { + return err; + } + + if (compare_testvector(out[0], tests[x].ptlen, tests[x].C, tests[x].ptlen, "GCM CT", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + + if (compare_testvector(T[0], y, tests[x].T, 16, "GCM Encrypt Tag", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + + y = sizeof(T[1]); + if ((err = gcm_memory(idx, tests[x].K, tests[x].keylen, + tests[x].IV, tests[x].IVlen, + tests[x].A, tests[x].alen, + out[1], tests[x].ptlen, + out[0], T[1], &y, GCM_DECRYPT)) != CRYPT_OK) { + return err; + } + + if (compare_testvector(out[1], tests[x].ptlen, tests[x].P, tests[x].ptlen, "GCM PT", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + + if (compare_testvector(T[1], y, tests[x].T, 16, "GCM Decrypt Tag", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + + } + return CRYPT_OK; +#endif +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_decrypt.c b/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_decrypt.c new file mode 100644 index 000000000..5dc8dade6 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_decrypt.c @@ -0,0 +1,77 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file ocb_decrypt.c + OCB implementation, decrypt data, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_OCB_MODE + +/** + Decrypt a block with OCB. + @param ocb The OCB state + @param ct The ciphertext (length of the block size of the block cipher) + @param pt [out] The plaintext (length of ct) + @return CRYPT_OK if successful +*/ +int ocb_decrypt(ocb_state *ocb, const unsigned char *ct, unsigned char *pt) +{ + unsigned char Z[MAXBLOCKSIZE], tmp[MAXBLOCKSIZE]; + int err, x; + + LTC_ARGCHK(ocb != NULL); + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + + /* check if valid cipher */ + if ((err = cipher_is_valid(ocb->cipher)) != CRYPT_OK) { + return err; + } + LTC_ARGCHK(cipher_descriptor[ocb->cipher].ecb_decrypt != NULL); + + /* check length */ + if (ocb->block_len != cipher_descriptor[ocb->cipher].block_length) { + return CRYPT_INVALID_ARG; + } + + /* Get Z[i] value */ + ocb_shift_xor(ocb, Z); + + /* xor ct in, encrypt, xor Z out */ + for (x = 0; x < ocb->block_len; x++) { + tmp[x] = ct[x] ^ Z[x]; + } + if ((err = cipher_descriptor[ocb->cipher].ecb_decrypt(tmp, pt, &ocb->key)) != CRYPT_OK) { + return err; + } + for (x = 0; x < ocb->block_len; x++) { + pt[x] ^= Z[x]; + } + + /* compute checksum */ + for (x = 0; x < ocb->block_len; x++) { + ocb->checksum[x] ^= pt[x]; + } + + +#ifdef LTC_CLEAN_STACK + zeromem(Z, sizeof(Z)); + zeromem(tmp, sizeof(tmp)); +#endif + return CRYPT_OK; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_decrypt_verify_memory.c b/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_decrypt_verify_memory.c new file mode 100644 index 000000000..a7a47f06b --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_decrypt_verify_memory.c @@ -0,0 +1,84 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file ocb_decrypt_verify_memory.c + OCB implementation, helper to decrypt block of memory, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_OCB_MODE + +/** + Decrypt and compare the tag with OCB. + @param cipher The index of the cipher desired + @param key The secret key + @param keylen The length of the secret key (octets) + @param nonce The session nonce (length of the block size of the block cipher) + @param ct The ciphertext + @param ctlen The length of the ciphertext (octets) + @param pt [out] The plaintext + @param tag The tag to compare against + @param taglen The length of the tag (octets) + @param stat [out] The result of the tag comparison (1==valid, 0==invalid) + @return CRYPT_OK if successful regardless of the tag comparison +*/ +int ocb_decrypt_verify_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, + const unsigned char *ct, unsigned long ctlen, + unsigned char *pt, + const unsigned char *tag, unsigned long taglen, + int *stat) +{ + int err; + ocb_state *ocb; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(nonce != NULL); + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(tag != NULL); + LTC_ARGCHK(stat != NULL); + + /* allocate memory */ + ocb = XMALLOC(sizeof(ocb_state)); + if (ocb == NULL) { + return CRYPT_MEM; + } + + if ((err = ocb_init(ocb, cipher, key, keylen, nonce)) != CRYPT_OK) { + goto LBL_ERR; + } + + while (ctlen > (unsigned long)ocb->block_len) { + if ((err = ocb_decrypt(ocb, ct, pt)) != CRYPT_OK) { + goto LBL_ERR; + } + ctlen -= ocb->block_len; + pt += ocb->block_len; + ct += ocb->block_len; + } + + err = ocb_done_decrypt(ocb, ct, ctlen, pt, tag, taglen, stat); +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(ocb, sizeof(ocb_state)); +#endif + + XFREE(ocb); + + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_done_decrypt.c b/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_done_decrypt.c new file mode 100644 index 000000000..357bd847a --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_done_decrypt.c @@ -0,0 +1,78 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file ocb_done_decrypt.c + OCB implementation, terminate decryption, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_OCB_MODE + +/** + Terminate a decrypting OCB state + @param ocb The OCB state + @param ct The ciphertext (if any) + @param ctlen The length of the ciphertext (octets) + @param pt [out] The plaintext + @param tag The authentication tag (to compare against) + @param taglen The length of the authentication tag provided + @param stat [out] The result of the tag comparison + @return CRYPT_OK if the process was successful regardless if the tag is valid +*/ +int ocb_done_decrypt(ocb_state *ocb, + const unsigned char *ct, unsigned long ctlen, + unsigned char *pt, + const unsigned char *tag, unsigned long taglen, int *stat) +{ + int err; + unsigned char *tagbuf; + unsigned long tagbuflen; + + LTC_ARGCHK(ocb != NULL); + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(tag != NULL); + LTC_ARGCHK(stat != NULL); + + /* default to failed */ + *stat = 0; + + /* allocate memory */ + tagbuf = XMALLOC(MAXBLOCKSIZE); + if (tagbuf == NULL) { + return CRYPT_MEM; + } + + tagbuflen = MAXBLOCKSIZE; + if ((err = s_ocb_done(ocb, ct, ctlen, pt, tagbuf, &tagbuflen, 1)) != CRYPT_OK) { + goto LBL_ERR; + } + + if (taglen <= tagbuflen && XMEM_NEQ(tagbuf, tag, taglen) == 0) { + *stat = 1; + } + + err = CRYPT_OK; +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(tagbuf, MAXBLOCKSIZE); +#endif + + XFREE(tagbuf); + + return err; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_done_encrypt.c b/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_done_encrypt.c new file mode 100644 index 000000000..12ea68f4c --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_done_encrypt.c @@ -0,0 +1,44 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file ocb_done_encrypt.c + OCB implementation, terminate encryption, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_OCB_MODE + +/** + Terminate an encryption OCB state + @param ocb The OCB state + @param pt Remaining plaintext (if any) + @param ptlen The length of the plaintext (octets) + @param ct [out] The ciphertext (if any) + @param tag [out] The tag for the OCB stream + @param taglen [in/out] The max size and resulting size of the tag + @return CRYPT_OK if successful +*/ +int ocb_done_encrypt(ocb_state *ocb, const unsigned char *pt, unsigned long ptlen, + unsigned char *ct, unsigned char *tag, unsigned long *taglen) +{ + LTC_ARGCHK(ocb != NULL); + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(tag != NULL); + LTC_ARGCHK(taglen != NULL); + return s_ocb_done(ocb, pt, ptlen, ct, tag, taglen, 0); +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_encrypt.c b/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_encrypt.c new file mode 100644 index 000000000..aad76a08b --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_encrypt.c @@ -0,0 +1,70 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file ocb_encrypt.c + OCB implementation, encrypt data, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_OCB_MODE + +/** + Encrypt a block of data with OCB. + @param ocb The OCB state + @param pt The plaintext (length of the block size of the block cipher) + @param ct [out] The ciphertext (same size as the pt) + @return CRYPT_OK if successful +*/ +int ocb_encrypt(ocb_state *ocb, const unsigned char *pt, unsigned char *ct) +{ + unsigned char Z[MAXBLOCKSIZE], tmp[MAXBLOCKSIZE]; + int err, x; + + LTC_ARGCHK(ocb != NULL); + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + if ((err = cipher_is_valid(ocb->cipher)) != CRYPT_OK) { + return err; + } + if (ocb->block_len != cipher_descriptor[ocb->cipher].block_length) { + return CRYPT_INVALID_ARG; + } + + /* compute checksum */ + for (x = 0; x < ocb->block_len; x++) { + ocb->checksum[x] ^= pt[x]; + } + + /* Get Z[i] value */ + ocb_shift_xor(ocb, Z); + + /* xor pt in, encrypt, xor Z out */ + for (x = 0; x < ocb->block_len; x++) { + tmp[x] = pt[x] ^ Z[x]; + } + if ((err = cipher_descriptor[ocb->cipher].ecb_encrypt(tmp, ct, &ocb->key)) != CRYPT_OK) { + return err; + } + for (x = 0; x < ocb->block_len; x++) { + ct[x] ^= Z[x]; + } + +#ifdef LTC_CLEAN_STACK + zeromem(Z, sizeof(Z)); + zeromem(tmp, sizeof(tmp)); +#endif + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_encrypt_authenticate_memory.c b/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_encrypt_authenticate_memory.c new file mode 100644 index 000000000..1793a6489 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_encrypt_authenticate_memory.c @@ -0,0 +1,82 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file ocb_encrypt_authenticate_memory.c + OCB implementation, encrypt block of memory, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_OCB_MODE + +/** + Encrypt and generate an authentication code for a buffer of memory + @param cipher The index of the cipher desired + @param key The secret key + @param keylen The length of the secret key (octets) + @param nonce The session nonce (length of the block ciphers block size) + @param pt The plaintext + @param ptlen The length of the plaintext (octets) + @param ct [out] The ciphertext + @param tag [out] The authentication tag + @param taglen [in/out] The max size and resulting size of the authentication tag + @return CRYPT_OK if successful +*/ +int ocb_encrypt_authenticate_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, + const unsigned char *pt, unsigned long ptlen, + unsigned char *ct, + unsigned char *tag, unsigned long *taglen) +{ + int err; + ocb_state *ocb; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(nonce != NULL); + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(tag != NULL); + LTC_ARGCHK(taglen != NULL); + + /* allocate ram */ + ocb = XMALLOC(sizeof(ocb_state)); + if (ocb == NULL) { + return CRYPT_MEM; + } + + if ((err = ocb_init(ocb, cipher, key, keylen, nonce)) != CRYPT_OK) { + goto LBL_ERR; + } + + while (ptlen > (unsigned long)ocb->block_len) { + if ((err = ocb_encrypt(ocb, pt, ct)) != CRYPT_OK) { + goto LBL_ERR; + } + ptlen -= ocb->block_len; + pt += ocb->block_len; + ct += ocb->block_len; + } + + err = ocb_done_encrypt(ocb, pt, ptlen, ct, tag, taglen); +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(ocb, sizeof(ocb_state)); +#endif + + XFREE(ocb); + + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_init.c b/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_init.c new file mode 100644 index 000000000..e008a44fb --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_init.c @@ -0,0 +1,139 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file ocb_init.c + OCB implementation, initialize state, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_OCB_MODE + +static const struct { + int len; + unsigned char poly_div[MAXBLOCKSIZE], + poly_mul[MAXBLOCKSIZE]; +} polys[] = { +{ + 8, + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B } +}, { + 16, + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87 } +} +}; + +/** + Initialize an OCB context. + @param ocb [out] The destination of the OCB state + @param cipher The index of the desired cipher + @param key The secret key + @param keylen The length of the secret key (octets) + @param nonce The session nonce (length of the block size of the cipher) + @return CRYPT_OK if successful +*/ +int ocb_init(ocb_state *ocb, int cipher, + const unsigned char *key, unsigned long keylen, const unsigned char *nonce) +{ + int poly, x, y, m, err; + + LTC_ARGCHK(ocb != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(nonce != NULL); + + /* valid cipher? */ + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + + /* determine which polys to use */ + ocb->block_len = cipher_descriptor[cipher].block_length; + x = (int)(sizeof(polys)/sizeof(polys[0])); + for (poly = 0; poly < x; poly++) { + if (polys[poly].len == ocb->block_len) { + break; + } + } + if (poly == x) { + return CRYPT_INVALID_ARG; /* block_len not found in polys */ + } + if (polys[poly].len != ocb->block_len) { + return CRYPT_INVALID_ARG; + } + + /* schedule the key */ + if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, &ocb->key)) != CRYPT_OK) { + return err; + } + + /* find L = E[0] */ + zeromem(ocb->L, ocb->block_len); + if ((err = cipher_descriptor[cipher].ecb_encrypt(ocb->L, ocb->L, &ocb->key)) != CRYPT_OK) { + return err; + } + + /* find R = E[N xor L] */ + for (x = 0; x < ocb->block_len; x++) { + ocb->R[x] = ocb->L[x] ^ nonce[x]; + } + if ((err = cipher_descriptor[cipher].ecb_encrypt(ocb->R, ocb->R, &ocb->key)) != CRYPT_OK) { + return err; + } + + /* find Ls[i] = L << i for i == 0..31 */ + XMEMCPY(ocb->Ls[0], ocb->L, ocb->block_len); + for (x = 1; x < 32; x++) { + m = ocb->Ls[x-1][0] >> 7; + for (y = 0; y < ocb->block_len-1; y++) { + ocb->Ls[x][y] = ((ocb->Ls[x-1][y] << 1) | (ocb->Ls[x-1][y+1] >> 7)) & 255; + } + ocb->Ls[x][ocb->block_len-1] = (ocb->Ls[x-1][ocb->block_len-1] << 1) & 255; + + if (m == 1) { + for (y = 0; y < ocb->block_len; y++) { + ocb->Ls[x][y] ^= polys[poly].poly_mul[y]; + } + } + } + + /* find Lr = L / x */ + m = ocb->L[ocb->block_len-1] & 1; + + /* shift right */ + for (x = ocb->block_len - 1; x > 0; x--) { + ocb->Lr[x] = ((ocb->L[x] >> 1) | (ocb->L[x-1] << 7)) & 255; + } + ocb->Lr[0] = ocb->L[0] >> 1; + + if (m == 1) { + for (x = 0; x < ocb->block_len; x++) { + ocb->Lr[x] ^= polys[poly].poly_div[x]; + } + } + + /* set Li, checksum */ + zeromem(ocb->Li, ocb->block_len); + zeromem(ocb->checksum, ocb->block_len); + + /* set other params */ + ocb->block_index = 1; + ocb->cipher = cipher; + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_ntz.c b/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_ntz.c new file mode 100644 index 000000000..cfdc66702 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_ntz.c @@ -0,0 +1,40 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file ocb_ntz.c + OCB implementation, internal function, by Tom St Denis +*/ + +#include "tomcrypt.h" + +#ifdef LTC_OCB_MODE + +/** + Returns the number of leading zero bits [from lsb up] + @param x The 32-bit value to observe + @return The number of bits [from the lsb up] that are zero +*/ +int ocb_ntz(unsigned long x) +{ + int c; + x &= 0xFFFFFFFFUL; + c = 0; + while ((x & 1) == 0) { + ++c; + x >>= 1; + } + return c; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_shift_xor.c b/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_shift_xor.c new file mode 100644 index 000000000..8a8ad2ddd --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_shift_xor.c @@ -0,0 +1,37 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file ocb_shift_xor.c + OCB implementation, internal function, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_OCB_MODE + +/** + Compute the shift/xor for OCB (internal function) + @param ocb The OCB state + @param Z The destination of the shift +*/ +void ocb_shift_xor(ocb_state *ocb, unsigned char *Z) +{ + int x, y; + y = ocb_ntz(ocb->block_index++); + for (x = 0; x < ocb->block_len; x++) { + ocb->Li[x] ^= ocb->Ls[y][x]; + Z[x] = ocb->Li[x] ^ ocb->R[x]; + } +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_test.c b/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_test.c new file mode 100644 index 000000000..74431f7d7 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ocb/ocb_test.c @@ -0,0 +1,215 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file ocb_test.c + OCB implementation, self-test by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_OCB_MODE + +/** + Test the OCB protocol + @return CRYPT_OK if successful +*/ +int ocb_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct { + int ptlen; + unsigned char key[16], nonce[16], pt[34], ct[34], tag[16]; + } tests[] = { + + /* OCB-AES-128-0B */ +{ + 0, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* nonce */ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, + /* pt */ + { 0 }, + /* ct */ + { 0 }, + /* tag */ + { 0x15, 0xd3, 0x7d, 0xd7, 0xc8, 0x90, 0xd5, 0xd6, + 0xac, 0xab, 0x92, 0x7b, 0xc0, 0xdc, 0x60, 0xee }, +}, + + + /* OCB-AES-128-3B */ +{ + 3, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* nonce */ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, + /* pt */ + { 0x00, 0x01, 0x02 }, + /* ct */ + { 0xfc, 0xd3, 0x7d }, + /* tag */ + { 0x02, 0x25, 0x47, 0x39, 0xa5, 0xe3, 0x56, 0x5a, + 0xe2, 0xdc, 0xd6, 0x2c, 0x65, 0x97, 0x46, 0xba }, +}, + + /* OCB-AES-128-16B */ +{ + 16, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* nonce */ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, + /* pt */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* ct */ + { 0x37, 0xdf, 0x8c, 0xe1, 0x5b, 0x48, 0x9b, 0xf3, + 0x1d, 0x0f, 0xc4, 0x4d, 0xa1, 0xfa, 0xf6, 0xd6 }, + /* tag */ + { 0xdf, 0xb7, 0x63, 0xeb, 0xdb, 0x5f, 0x0e, 0x71, + 0x9c, 0x7b, 0x41, 0x61, 0x80, 0x80, 0x04, 0xdf }, +}, + + /* OCB-AES-128-20B */ +{ + 20, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* nonce */ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, + /* pt */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13 }, + /* ct */ + { 0x01, 0xa0, 0x75, 0xf0, 0xd8, 0x15, 0xb1, 0xa4, + 0xe9, 0xc8, 0x81, 0xa1, 0xbc, 0xff, 0xc3, 0xeb, + 0x70, 0x03, 0xeb, 0x55}, + /* tag */ + { 0x75, 0x30, 0x84, 0x14, 0x4e, 0xb6, 0x3b, 0x77, + 0x0b, 0x06, 0x3c, 0x2e, 0x23, 0xcd, 0xa0, 0xbb }, +}, + + /* OCB-AES-128-32B */ +{ + 32, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* nonce */ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, + /* pt */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, + /* ct */ + { 0x01, 0xa0, 0x75, 0xf0, 0xd8, 0x15, 0xb1, 0xa4, + 0xe9, 0xc8, 0x81, 0xa1, 0xbc, 0xff, 0xc3, 0xeb, + 0x4a, 0xfc, 0xbb, 0x7f, 0xed, 0xc0, 0x8c, 0xa8, + 0x65, 0x4c, 0x6d, 0x30, 0x4d, 0x16, 0x12, 0xfa }, + + /* tag */ + { 0xc1, 0x4c, 0xbf, 0x2c, 0x1a, 0x1f, 0x1c, 0x3c, + 0x13, 0x7e, 0xad, 0xea, 0x1f, 0x2f, 0x2f, 0xcf }, +}, + + /* OCB-AES-128-34B */ +{ + 34, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* nonce */ + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }, + /* pt */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21 }, + /* ct */ + { 0x01, 0xa0, 0x75, 0xf0, 0xd8, 0x15, 0xb1, 0xa4, + 0xe9, 0xc8, 0x81, 0xa1, 0xbc, 0xff, 0xc3, 0xeb, + 0xd4, 0x90, 0x3d, 0xd0, 0x02, 0x5b, 0xa4, 0xaa, + 0x83, 0x7c, 0x74, 0xf1, 0x21, 0xb0, 0x26, 0x0f, + 0xa9, 0x5d }, + + /* tag */ + { 0xcf, 0x83, 0x41, 0xbb, 0x10, 0x82, 0x0c, 0xcf, + 0x14, 0xbd, 0xec, 0x56, 0xb8, 0xd7, 0xd6, 0xab }, +}, + +}; + + int err, x, idx, res; + unsigned long len; + unsigned char outct[MAXBLOCKSIZE], outtag[MAXBLOCKSIZE]; + + /* AES can be under rijndael or aes... try to find it */ + if ((idx = find_cipher("aes")) == -1) { + if ((idx = find_cipher("rijndael")) == -1) { + return CRYPT_NOP; + } + } + + for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { + len = sizeof(outtag); + if ((err = ocb_encrypt_authenticate_memory(idx, tests[x].key, 16, + tests[x].nonce, tests[x].pt, tests[x].ptlen, outct, outtag, &len)) != CRYPT_OK) { + return err; + } + + if (compare_testvector(outtag, len, tests[x].tag, sizeof(tests[x].tag), "OCB Tag", x) || + compare_testvector(outct, tests[x].ptlen, tests[x].ct, tests[x].ptlen, "OCB CT", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + + if ((err = ocb_decrypt_verify_memory(idx, tests[x].key, 16, tests[x].nonce, outct, tests[x].ptlen, + outct, tests[x].tag, len, &res)) != CRYPT_OK) { + return err; + } + if ((res != 1) || compare_testvector(outct, tests[x].ptlen, tests[x].pt, tests[x].ptlen, "OCB", x)) { +#ifdef LTC_TEST_DBG + printf("\n\nOCB: Failure-decrypt - res = %d\n", res); +#endif + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; +#endif /* LTC_TEST */ +} + +#endif /* LTC_OCB_MODE */ + + +/* some comments + + -- it's hard to seek + -- hard to stream [you can't emit ciphertext until full block] + -- The setup is somewhat complicated... +*/ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ocb/s_ocb_done.c b/fsbl/lib/libtomcrypt/src/encauth/ocb/s_ocb_done.c new file mode 100644 index 000000000..e0501ede2 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ocb/s_ocb_done.c @@ -0,0 +1,146 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file s_ocb_done.c + OCB implementation, internal helper, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_OCB_MODE + +/* Since the last block is encrypted in CTR mode the same code can + * be used to finish a decrypt or encrypt stream. The only difference + * is we XOR the final ciphertext into the checksum so we have to xor it + * before we CTR [decrypt] or after [encrypt] + * + * the names pt/ptlen/ct really just mean in/inlen/out but this is the way I wrote it... + */ + +/** + Shared code to finish an OCB stream + @param ocb The OCB state + @param pt The remaining plaintext [or input] + @param ptlen The length of the input (octets) + @param ct [out] The output buffer + @param tag [out] The destination for the authentication tag + @param taglen [in/out] The max size and resulting size of the authentication tag + @param mode The mode we are terminating, 0==encrypt, 1==decrypt + @return CRYPT_OK if successful +*/ +int s_ocb_done(ocb_state *ocb, const unsigned char *pt, unsigned long ptlen, + unsigned char *ct, unsigned char *tag, unsigned long *taglen, int mode) + +{ + unsigned char *Z, *Y, *X; + int err, x; + + LTC_ARGCHK(ocb != NULL); + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(tag != NULL); + LTC_ARGCHK(taglen != NULL); + if ((err = cipher_is_valid(ocb->cipher)) != CRYPT_OK) { + return err; + } + if (ocb->block_len != cipher_descriptor[ocb->cipher].block_length || + (int)ptlen > ocb->block_len || (int)ptlen < 0) { + return CRYPT_INVALID_ARG; + } + + /* allocate ram */ + Z = XMALLOC(MAXBLOCKSIZE); + Y = XMALLOC(MAXBLOCKSIZE); + X = XMALLOC(MAXBLOCKSIZE); + if (X == NULL || Y == NULL || Z == NULL) { + if (X != NULL) { + XFREE(X); + } + if (Y != NULL) { + XFREE(Y); + } + if (Z != NULL) { + XFREE(Z); + } + return CRYPT_MEM; + } + + /* compute X[m] = len(pt[m]) XOR Lr XOR Z[m] */ + ocb_shift_xor(ocb, X); + XMEMCPY(Z, X, ocb->block_len); + + X[ocb->block_len-1] ^= (ptlen*8)&255; + X[ocb->block_len-2] ^= ((ptlen*8)>>8)&255; + for (x = 0; x < ocb->block_len; x++) { + X[x] ^= ocb->Lr[x]; + } + + /* Y[m] = E(X[m])) */ + if ((err = cipher_descriptor[ocb->cipher].ecb_encrypt(X, Y, &ocb->key)) != CRYPT_OK) { + goto error; + } + + if (mode == 1) { + /* decrypt mode, so let's xor it first */ + /* xor C[m] into checksum */ + for (x = 0; x < (int)ptlen; x++) { + ocb->checksum[x] ^= ct[x]; + } + } + + /* C[m] = P[m] xor Y[m] */ + for (x = 0; x < (int)ptlen; x++) { + ct[x] = pt[x] ^ Y[x]; + } + + if (mode == 0) { + /* encrypt mode */ + /* xor C[m] into checksum */ + for (x = 0; x < (int)ptlen; x++) { + ocb->checksum[x] ^= ct[x]; + } + } + + /* xor Y[m] and Z[m] into checksum */ + for (x = 0; x < ocb->block_len; x++) { + ocb->checksum[x] ^= Y[x] ^ Z[x]; + } + + /* encrypt checksum, er... tag!! */ + if ((err = cipher_descriptor[ocb->cipher].ecb_encrypt(ocb->checksum, X, &ocb->key)) != CRYPT_OK) { + goto error; + } + cipher_descriptor[ocb->cipher].done(&ocb->key); + + /* now store it */ + for (x = 0; x < ocb->block_len && x < (int)*taglen; x++) { + tag[x] = X[x]; + } + *taglen = x; + +#ifdef LTC_CLEAN_STACK + zeromem(X, MAXBLOCKSIZE); + zeromem(Y, MAXBLOCKSIZE); + zeromem(Z, MAXBLOCKSIZE); + zeromem(ocb, sizeof(*ocb)); +#endif +error: + XFREE(X); + XFREE(Y); + XFREE(Z); + + return err; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_add_aad.c b/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_add_aad.c new file mode 100644 index 000000000..70e3211a9 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_add_aad.c @@ -0,0 +1,106 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file ocb3_add_aad.c + OCB implementation, add AAD data, by Karel Miko +*/ +#include "tomcrypt.h" + +#ifdef LTC_OCB3_MODE + +/** + Add one block of AAD data (internal function) + @param ocb The OCB state + @param aad_block [in] AAD data (block_len size) + @return CRYPT_OK if successful +*/ +static int _ocb3_int_aad_add_block(ocb3_state *ocb, const unsigned char *aad_block) +{ + unsigned char tmp[MAXBLOCKSIZE]; + int err; + + /* Offset_i = Offset_{i-1} xor L_{ntz(i)} */ + ocb3_int_xor_blocks(ocb->aOffset_current, ocb->aOffset_current, ocb->L_[ocb3_int_ntz(ocb->ablock_index)], ocb->block_len); + + /* Sum_i = Sum_{i-1} xor ENCIPHER(K, A_i xor Offset_i) */ + ocb3_int_xor_blocks(tmp, aad_block, ocb->aOffset_current, ocb->block_len); + if ((err = cipher_descriptor[ocb->cipher].ecb_encrypt(tmp, tmp, &ocb->key)) != CRYPT_OK) { + return err; + } + ocb3_int_xor_blocks(ocb->aSum_current, ocb->aSum_current, tmp, ocb->block_len); + + ocb->ablock_index++; + + return CRYPT_OK; +} + +/** + Add AAD - additional associated data + @param ocb The OCB state + @param aad The AAD data + @param aadlen The size of AAD data (octets) + @return CRYPT_OK if successful +*/ +int ocb3_add_aad(ocb3_state *ocb, const unsigned char *aad, unsigned long aadlen) +{ + int err, x, full_blocks, full_blocks_len, last_block_len; + unsigned char *data; + unsigned long datalen, l; + + LTC_ARGCHK(ocb != NULL); + if (aadlen == 0) return CRYPT_OK; + LTC_ARGCHK(aad != NULL); + + if (ocb->adata_buffer_bytes > 0) { + l = ocb->block_len - ocb->adata_buffer_bytes; + if (l > aadlen) l = aadlen; + XMEMCPY(ocb->adata_buffer+ocb->adata_buffer_bytes, aad, l); + ocb->adata_buffer_bytes += l; + + if (ocb->adata_buffer_bytes == ocb->block_len) { + if ((err = _ocb3_int_aad_add_block(ocb, ocb->adata_buffer)) != CRYPT_OK) { + return err; + } + ocb->adata_buffer_bytes = 0; + } + + data = (unsigned char *)aad + l; + datalen = aadlen - l; + } + else { + data = (unsigned char *)aad; + datalen = aadlen; + } + + if (datalen == 0) return CRYPT_OK; + + full_blocks = datalen/ocb->block_len; + full_blocks_len = full_blocks * ocb->block_len; + last_block_len = datalen - full_blocks_len; + + for (x=0; xblock_len)) != CRYPT_OK) { + return err; + } + } + + if (last_block_len>0) { + XMEMCPY(ocb->adata_buffer, data+full_blocks_len, last_block_len); + ocb->adata_buffer_bytes = last_block_len; + } + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_decrypt.c b/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_decrypt.c new file mode 100644 index 000000000..4973bd2fa --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_decrypt.c @@ -0,0 +1,86 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file ocb3_decrypt.c + OCB implementation, decrypt data, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_OCB3_MODE + +/** + Decrypt blocks of ciphertext with OCB + @param ocb The OCB state + @param ct The ciphertext (length multiple of the block size of the block cipher) + @param ctlen The length of the input (octets) + @param pt [out] The plaintext (length of ct) + @return CRYPT_OK if successful +*/ +int ocb3_decrypt(ocb3_state *ocb, const unsigned char *ct, unsigned long ctlen, unsigned char *pt) +{ + unsigned char tmp[MAXBLOCKSIZE]; + int err, i, full_blocks; + unsigned char *pt_b, *ct_b; + + LTC_ARGCHK(ocb != NULL); + if (ctlen == 0) return CRYPT_OK; /* no data, nothing to do */ + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(pt != NULL); + + if ((err = cipher_is_valid(ocb->cipher)) != CRYPT_OK) { + return err; + } + if (ocb->block_len != cipher_descriptor[ocb->cipher].block_length) { + return CRYPT_INVALID_ARG; + } + + if (ctlen % ocb->block_len) { /* ctlen has to bu multiple of block_len */ + return CRYPT_INVALID_ARG; + } + + full_blocks = ctlen/ocb->block_len; + for(i=0; iblock_len; + ct_b = (unsigned char *)ct+i*ocb->block_len; + + /* ocb->Offset_current[] = ocb->Offset_current[] ^ Offset_{ntz(block_index)} */ + ocb3_int_xor_blocks(ocb->Offset_current, ocb->Offset_current, ocb->L_[ocb3_int_ntz(ocb->block_index)], ocb->block_len); + + /* tmp[] = ct[] XOR ocb->Offset_current[] */ + ocb3_int_xor_blocks(tmp, ct_b, ocb->Offset_current, ocb->block_len); + + /* decrypt */ + if ((err = cipher_descriptor[ocb->cipher].ecb_decrypt(tmp, tmp, &ocb->key)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* pt[] = tmp[] XOR ocb->Offset_current[] */ + ocb3_int_xor_blocks(pt_b, tmp, ocb->Offset_current, ocb->block_len); + + /* ocb->checksum[] = ocb->checksum[] XOR pt[] */ + ocb3_int_xor_blocks(ocb->checksum, ocb->checksum, pt_b, ocb->block_len); + + ocb->block_index++; + } + + err = CRYPT_OK; + +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(tmp, sizeof(tmp)); +#endif + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_decrypt_last.c b/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_decrypt_last.c new file mode 100644 index 000000000..70608dc76 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_decrypt_last.c @@ -0,0 +1,110 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file ocb3_decrypt_last.c + OCB implementation, internal helper, by Karel Miko +*/ +#include "tomcrypt.h" + +#ifdef LTC_OCB3_MODE + +/** + Finish an OCB (decryption) stream + @param ocb The OCB state + @param ct The remaining ciphertext + @param ctlen The length of the ciphertext (octets) + @param pt [out] The output buffer + @return CRYPT_OK if successful +*/ +int ocb3_decrypt_last(ocb3_state *ocb, const unsigned char *ct, unsigned long ctlen, unsigned char *pt) +{ + unsigned char iOffset_star[MAXBLOCKSIZE]; + unsigned char iPad[MAXBLOCKSIZE]; + int err, x, full_blocks, full_blocks_len, last_block_len; + + LTC_ARGCHK(ocb != NULL); + if (ct == NULL) LTC_ARGCHK(ctlen == 0); + if (ctlen != 0) { + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(pt != NULL); + } + + if ((err = cipher_is_valid(ocb->cipher)) != CRYPT_OK) { + goto LBL_ERR; + } + + full_blocks = ctlen/ocb->block_len; + full_blocks_len = full_blocks * ocb->block_len; + last_block_len = ctlen - full_blocks_len; + + /* process full blocks first */ + if (full_blocks>0) { + if ((err = ocb3_decrypt(ocb, ct, full_blocks_len, pt)) != CRYPT_OK) { + goto LBL_ERR; + } + } + + if (last_block_len>0) { + /* Offset_* = Offset_m xor L_* */ + ocb3_int_xor_blocks(iOffset_star, ocb->Offset_current, ocb->L_star, ocb->block_len); + + /* Pad = ENCIPHER(K, Offset_*) */ + if ((err = cipher_descriptor[ocb->cipher].ecb_encrypt(iOffset_star, iPad, &ocb->key)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* P_* = C_* xor Pad[1..bitlen(C_*)] */ + ocb3_int_xor_blocks(pt+full_blocks_len, (unsigned char *)ct+full_blocks_len, iPad, last_block_len); + + /* Checksum_* = Checksum_m xor (P_* || 1 || zeros(127-bitlen(P_*))) */ + ocb3_int_xor_blocks(ocb->checksum, ocb->checksum, pt+full_blocks_len, last_block_len); + for(x=last_block_len; xblock_len; x++) { + if (x == last_block_len) + ocb->checksum[x] ^= 0x80; + else + ocb->checksum[x] ^= 0x00; + } + + /* Tag = ENCIPHER(K, Checksum_* xor Offset_* xor L_$) xor HASH(K,A) */ + /* at this point we calculate only: Tag_part = ENCIPHER(K, Checksum_* xor Offset_* xor L_$) */ + for(x=0; xblock_len; x++) { + ocb->tag_part[x] = (ocb->checksum[x] ^ iOffset_star[x]) ^ ocb->L_dollar[x]; + } + if ((err = cipher_descriptor[ocb->cipher].ecb_encrypt(ocb->tag_part, ocb->tag_part, &ocb->key)) != CRYPT_OK) { + goto LBL_ERR; + } + } + else { + /* Tag = ENCIPHER(K, Checksum_m xor Offset_m xor L_$) xor HASH(K,A) */ + /* at this point we calculate only: Tag_part = ENCIPHER(K, Checksum_m xor Offset_m xor L_$) */ + for(x=0; xblock_len; x++) { + ocb->tag_part[x] = (ocb->checksum[x] ^ ocb->Offset_current[x]) ^ ocb->L_dollar[x]; + } + if ((err = cipher_descriptor[ocb->cipher].ecb_encrypt(ocb->tag_part, ocb->tag_part, &ocb->key)) != CRYPT_OK) { + goto LBL_ERR; + } + } + + err = CRYPT_OK; + +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(iOffset_star, MAXBLOCKSIZE); + zeromem(iPad, MAXBLOCKSIZE); +#endif + + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_decrypt_verify_memory.c b/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_decrypt_verify_memory.c new file mode 100644 index 000000000..066b62cb6 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_decrypt_verify_memory.c @@ -0,0 +1,110 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file ocb3_decrypt_verify_memory.c + OCB implementation, helper to decrypt block of memory, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_OCB3_MODE + +/** + Decrypt and compare the tag with OCB + @param cipher The index of the cipher desired + @param key The secret key + @param keylen The length of the secret key (octets) + @param nonce The session nonce (length of the block size of the block cipher) + @param noncelen The length of the nonce (octets) + @param adata The AAD - additional associated data + @param adatalen The length of AAD (octets) + @param ct The ciphertext + @param ctlen The length of the ciphertext (octets) + @param pt [out] The plaintext + @param tag The tag to compare against + @param taglen The length of the tag (octets) + @param stat [out] The result of the tag comparison (1==valid, 0==invalid) + @return CRYPT_OK if successful regardless of the tag comparison +*/ +int ocb3_decrypt_verify_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, unsigned long noncelen, + const unsigned char *adata, unsigned long adatalen, + const unsigned char *ct, unsigned long ctlen, + unsigned char *pt, + const unsigned char *tag, unsigned long taglen, + int *stat) +{ + int err; + ocb3_state *ocb; + unsigned char *buf; + unsigned long buflen; + + LTC_ARGCHK(stat != NULL); + + /* default to zero */ + *stat = 0; + + /* limit taglen */ + taglen = MIN(taglen, MAXBLOCKSIZE); + + /* allocate memory */ + buf = XMALLOC(taglen); + ocb = XMALLOC(sizeof(ocb3_state)); + if (ocb == NULL || buf == NULL) { + if (ocb != NULL) { + XFREE(ocb); + } + if (buf != NULL) { + XFREE(buf); + } + return CRYPT_MEM; + } + + if ((err = ocb3_init(ocb, cipher, key, keylen, nonce, noncelen, taglen)) != CRYPT_OK) { + goto LBL_ERR; + } + + if (adata != NULL || adatalen != 0) { + if ((err = ocb3_add_aad(ocb, adata, adatalen)) != CRYPT_OK) { + goto LBL_ERR; + } + } + + if ((err = ocb3_decrypt_last(ocb, ct, ctlen, pt)) != CRYPT_OK) { + goto LBL_ERR; + } + + buflen = taglen; + if ((err = ocb3_done(ocb, buf, &buflen)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* compare tags */ + if (buflen >= taglen && XMEM_NEQ(buf, tag, taglen) == 0) { + *stat = 1; + } + + err = CRYPT_OK; + +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(ocb, sizeof(ocb3_state)); +#endif + + XFREE(ocb); + XFREE(buf); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_done.c b/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_done.c new file mode 100644 index 000000000..b913d3a43 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_done.c @@ -0,0 +1,92 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file ocb3_done.c + OCB implementation, INTERNAL ONLY helper, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_OCB3_MODE + +/** + Finish OCB processing and compute the tag + @param ocb The OCB state + @param tag [out] The destination for the authentication tag + @param taglen [in/out] The max size and resulting size of the authentication tag + @return CRYPT_OK if successful +*/ +int ocb3_done(ocb3_state *ocb, unsigned char *tag, unsigned long *taglen) +{ + unsigned char tmp[MAXBLOCKSIZE]; + int err, x; + + LTC_ARGCHK(ocb != NULL); + LTC_ARGCHK(tag != NULL); + LTC_ARGCHK(taglen != NULL); + if ((err = cipher_is_valid(ocb->cipher)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* check taglen */ + if ((int)*taglen < ocb->tag_len) { + *taglen = (unsigned long)ocb->tag_len; + return CRYPT_BUFFER_OVERFLOW; + } + + /* finalize AAD processing */ + + if (ocb->adata_buffer_bytes>0) { + /* Offset_* = Offset_m xor L_* */ + ocb3_int_xor_blocks(ocb->aOffset_current, ocb->aOffset_current, ocb->L_star, ocb->block_len); + + /* CipherInput = (A_* || 1 || zeros(127-bitlen(A_*))) xor Offset_* */ + ocb3_int_xor_blocks(tmp, ocb->adata_buffer, ocb->aOffset_current, ocb->adata_buffer_bytes); + for(x=ocb->adata_buffer_bytes; xblock_len; x++) { + if (x == ocb->adata_buffer_bytes) { + tmp[x] = 0x80 ^ ocb->aOffset_current[x]; + } + else { + tmp[x] = 0x00 ^ ocb->aOffset_current[x]; + } + } + + /* Sum = Sum_m xor ENCIPHER(K, CipherInput) */ + if ((err = cipher_descriptor[ocb->cipher].ecb_encrypt(tmp, tmp, &ocb->key)) != CRYPT_OK) { + goto LBL_ERR; + } + ocb3_int_xor_blocks(ocb->aSum_current, ocb->aSum_current, tmp, ocb->block_len); + } + + /* finalize TAG computing */ + + /* at this point ocb->aSum_current = HASH(K, A) */ + /* tag = tag ^ HASH(K, A) */ + ocb3_int_xor_blocks(tmp, ocb->tag_part, ocb->aSum_current, ocb->block_len); + + /* copy tag bytes */ + for(x = 0; x < ocb->tag_len; x++) tag[x] = tmp[x]; + *taglen = (unsigned long)ocb->tag_len; + + err = CRYPT_OK; + +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(tmp, MAXBLOCKSIZE); + zeromem(ocb, sizeof(*ocb)); +#endif + + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_encrypt.c b/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_encrypt.c new file mode 100644 index 000000000..337b02530 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_encrypt.c @@ -0,0 +1,86 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file ocb3_encrypt.c + OCB implementation, encrypt data, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_OCB3_MODE + +/** + Encrypt blocks of data with OCB + @param ocb The OCB state + @param pt The plaintext (length multiple of the block size of the block cipher) + @param ptlen The length of the input (octets) + @param ct [out] The ciphertext (same size as the pt) + @return CRYPT_OK if successful +*/ +int ocb3_encrypt(ocb3_state *ocb, const unsigned char *pt, unsigned long ptlen, unsigned char *ct) +{ + unsigned char tmp[MAXBLOCKSIZE]; + int err, i, full_blocks; + unsigned char *pt_b, *ct_b; + + LTC_ARGCHK(ocb != NULL); + if (ptlen == 0) return CRYPT_OK; /* no data, nothing to do */ + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + + if ((err = cipher_is_valid(ocb->cipher)) != CRYPT_OK) { + return err; + } + if (ocb->block_len != cipher_descriptor[ocb->cipher].block_length) { + return CRYPT_INVALID_ARG; + } + + if (ptlen % ocb->block_len) { /* ptlen has to bu multiple of block_len */ + return CRYPT_INVALID_ARG; + } + + full_blocks = ptlen/ocb->block_len; + for(i=0; iblock_len; + ct_b = (unsigned char *)ct+i*ocb->block_len; + + /* ocb->Offset_current[] = ocb->Offset_current[] ^ Offset_{ntz(block_index)} */ + ocb3_int_xor_blocks(ocb->Offset_current, ocb->Offset_current, ocb->L_[ocb3_int_ntz(ocb->block_index)], ocb->block_len); + + /* tmp[] = pt[] XOR ocb->Offset_current[] */ + ocb3_int_xor_blocks(tmp, pt_b, ocb->Offset_current, ocb->block_len); + + /* encrypt */ + if ((err = cipher_descriptor[ocb->cipher].ecb_encrypt(tmp, tmp, &ocb->key)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* ct[] = tmp[] XOR ocb->Offset_current[] */ + ocb3_int_xor_blocks(ct_b, tmp, ocb->Offset_current, ocb->block_len); + + /* ocb->checksum[] = ocb->checksum[] XOR pt[] */ + ocb3_int_xor_blocks(ocb->checksum, ocb->checksum, pt_b, ocb->block_len); + + ocb->block_index++; + } + + err = CRYPT_OK; + +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(tmp, sizeof(tmp)); +#endif + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_encrypt_authenticate_memory.c b/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_encrypt_authenticate_memory.c new file mode 100644 index 000000000..efc1a8fb2 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_encrypt_authenticate_memory.c @@ -0,0 +1,82 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file ocb3_encrypt_authenticate_memory.c + OCB implementation, encrypt block of memory, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_OCB3_MODE + +/** + Encrypt and generate an authentication code for a buffer of memory + @param cipher The index of the cipher desired + @param key The secret key + @param keylen The length of the secret key (octets) + @param nonce The session nonce (length of the block ciphers block size) + @param noncelen The length of the nonce (octets) + @param adata The AAD - additional associated data + @param adatalen The length of AAD (octets) + @param pt The plaintext + @param ptlen The length of the plaintext (octets) + @param ct [out] The ciphertext + @param tag [out] The authentication tag + @param taglen [in/out] The max size and resulting size of the authentication tag + @return CRYPT_OK if successful +*/ +int ocb3_encrypt_authenticate_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, unsigned long noncelen, + const unsigned char *adata, unsigned long adatalen, + const unsigned char *pt, unsigned long ptlen, + unsigned char *ct, + unsigned char *tag, unsigned long *taglen) +{ + int err; + ocb3_state *ocb; + + LTC_ARGCHK(taglen != NULL); + + /* allocate memory */ + ocb = XMALLOC(sizeof(ocb3_state)); + if (ocb == NULL) { + return CRYPT_MEM; + } + + if ((err = ocb3_init(ocb, cipher, key, keylen, nonce, noncelen, *taglen)) != CRYPT_OK) { + goto LBL_ERR; + } + + if (adata != NULL || adatalen != 0) { + if ((err = ocb3_add_aad(ocb, adata, adatalen)) != CRYPT_OK) { + goto LBL_ERR; + } + } + + if ((err = ocb3_encrypt_last(ocb, pt, ptlen, ct)) != CRYPT_OK) { + goto LBL_ERR; + } + + err = ocb3_done(ocb, tag, taglen); + +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(ocb, sizeof(ocb3_state)); +#endif + + XFREE(ocb); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_encrypt_last.c b/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_encrypt_last.c new file mode 100644 index 000000000..8110a3c05 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_encrypt_last.c @@ -0,0 +1,112 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file ocb3_encrypt_last.c + OCB implementation, internal helper, by Karel Miko +*/ +#include "tomcrypt.h" + +#ifdef LTC_OCB3_MODE + +/** + Finish an OCB (encryption) stream + @param ocb The OCB state + @param pt The remaining plaintext + @param ptlen The length of the plaintext (octets) + @param ct [out] The output buffer + @return CRYPT_OK if successful +*/ +int ocb3_encrypt_last(ocb3_state *ocb, const unsigned char *pt, unsigned long ptlen, unsigned char *ct) +{ + unsigned char iOffset_star[MAXBLOCKSIZE]; + unsigned char iPad[MAXBLOCKSIZE]; + int err, x, full_blocks, full_blocks_len, last_block_len; + + LTC_ARGCHK(ocb != NULL); + if (pt == NULL) LTC_ARGCHK(ptlen == 0); + if (ptlen != 0) { + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + } + + if ((err = cipher_is_valid(ocb->cipher)) != CRYPT_OK) { + goto LBL_ERR; + } + + full_blocks = ptlen/ocb->block_len; + full_blocks_len = full_blocks * ocb->block_len; + last_block_len = ptlen - full_blocks_len; + + /* process full blocks first */ + if (full_blocks>0) { + if ((err = ocb3_encrypt(ocb, pt, full_blocks_len, ct)) != CRYPT_OK) { + goto LBL_ERR; + } + } + + /* at this point: m = ocb->block_index (last block index), Offset_m = ocb->Offset_current */ + + if (last_block_len>0) { + /* Offset_* = Offset_m xor L_* */ + ocb3_int_xor_blocks(iOffset_star, ocb->Offset_current, ocb->L_star, ocb->block_len); + + /* Pad = ENCIPHER(K, Offset_*) */ + if ((err = cipher_descriptor[ocb->cipher].ecb_encrypt(iOffset_star, iPad, &ocb->key)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* C_* = P_* xor Pad[1..bitlen(P_*)] */ + ocb3_int_xor_blocks(ct+full_blocks_len, pt+full_blocks_len, iPad, last_block_len); + + /* Checksum_* = Checksum_m xor (P_* || 1 || zeros(127-bitlen(P_*))) */ + ocb3_int_xor_blocks(ocb->checksum, ocb->checksum, pt+full_blocks_len, last_block_len); + for(x=last_block_len; xblock_len; x++) { + if (x == last_block_len) + ocb->checksum[x] ^= 0x80; + else + ocb->checksum[x] ^= 0x00; + } + + /* Tag = ENCIPHER(K, Checksum_* xor Offset_* xor L_$) xor HASH(K,A) */ + /* at this point we calculate only: Tag_part = ENCIPHER(K, Checksum_* xor Offset_* xor L_$) */ + for(x=0; xblock_len; x++) { + ocb->tag_part[x] = (ocb->checksum[x] ^ iOffset_star[x]) ^ ocb->L_dollar[x]; + } + if ((err = cipher_descriptor[ocb->cipher].ecb_encrypt(ocb->tag_part, ocb->tag_part, &ocb->key)) != CRYPT_OK) { + goto LBL_ERR; + } + } + else { + /* Tag = ENCIPHER(K, Checksum_m xor Offset_m xor L_$) xor HASH(K,A) */ + /* at this point we calculate only: Tag_part = ENCIPHER(K, Checksum_m xor Offset_m xor L_$) */ + for(x=0; xblock_len; x++) { + ocb->tag_part[x] = (ocb->checksum[x] ^ ocb->Offset_current[x]) ^ ocb->L_dollar[x]; + } + if ((err = cipher_descriptor[ocb->cipher].ecb_encrypt(ocb->tag_part, ocb->tag_part, &ocb->key)) != CRYPT_OK) { + goto LBL_ERR; + } + } + + err = CRYPT_OK; + +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(iOffset_star, MAXBLOCKSIZE); + zeromem(iPad, MAXBLOCKSIZE); +#endif + + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_init.c b/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_init.c new file mode 100644 index 000000000..a3cabae8b --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_init.c @@ -0,0 +1,196 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file ocb3_init.c + OCB implementation, initialize state, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_OCB3_MODE + +static void _ocb3_int_calc_offset_zero(ocb3_state *ocb, const unsigned char *nonce, unsigned long noncelen, unsigned long taglen) +{ + int x, y, bottom; + int idx, shift; + unsigned char iNonce[MAXBLOCKSIZE]; + unsigned char iKtop[MAXBLOCKSIZE]; + unsigned char iStretch[MAXBLOCKSIZE+8]; + + /* Nonce = zeros(127-bitlen(N)) || 1 || N */ + zeromem(iNonce, sizeof(iNonce)); + for (x = ocb->block_len-1, y=0; y<(int)noncelen; x--, y++) { + iNonce[x] = nonce[noncelen-y-1]; + } + iNonce[x] = 0x01; + iNonce[0] |= ((taglen*8) % 128) << 1; + + /* bottom = str2num(Nonce[123..128]) */ + bottom = iNonce[ocb->block_len-1] & 0x3F; + + /* Ktop = ENCIPHER(K, Nonce[1..122] || zeros(6)) */ + iNonce[ocb->block_len-1] = iNonce[ocb->block_len-1] & 0xC0; + if ((cipher_descriptor[ocb->cipher].ecb_encrypt(iNonce, iKtop, &ocb->key)) != CRYPT_OK) { + zeromem(ocb->Offset_current, ocb->block_len); + return; + } + + /* Stretch = Ktop || (Ktop[1..64] xor Ktop[9..72]) */ + for (x = 0; x < ocb->block_len; x++) { + iStretch[x] = iKtop[x]; + } + for (y = 0; y < 8; y++) { + iStretch[x+y] = iKtop[y] ^ iKtop[y+1]; + } + + /* Offset_0 = Stretch[1+bottom..128+bottom] */ + idx = bottom / 8; + shift = (bottom % 8); + for (x = 0; x < ocb->block_len; x++) { + ocb->Offset_current[x] = iStretch[idx+x] << shift; + if (shift > 0) { + ocb->Offset_current[x] |= iStretch[idx+x+1] >> (8-shift); + } + } +} + +static const struct { + int len; + unsigned char poly_mul[MAXBLOCKSIZE]; +} polys[] = { +{ + 8, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B } +}, { + 16, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87 } +} +}; + +/** + Initialize an OCB context + @param ocb [out] The destination of the OCB state + @param cipher The index of the desired cipher + @param key The secret key + @param keylen The length of the secret key (octets) + @param nonce The session nonce + @param noncelen The length of the session nonce (octets, up to 15) + @param taglen The length of the tag (octets, up to 16) + @return CRYPT_OK if successful +*/ +int ocb3_init(ocb3_state *ocb, int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, unsigned long noncelen, + unsigned long taglen) +{ + int poly, x, y, m, err; + unsigned char *previous, *current; + + LTC_ARGCHK(ocb != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(nonce != NULL); + + /* valid cipher? */ + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + ocb->cipher = cipher; + + /* Valid Nonce? + * As of RFC7253: "string of no more than 120 bits" */ + if (noncelen > (120/8)) { + return CRYPT_INVALID_ARG; + } + + /* The blockcipher must have a 128-bit blocksize */ + if (cipher_descriptor[cipher].block_length != 16) { + return CRYPT_INVALID_ARG; + } + + /* The TAGLEN may be any value up to 128 (bits) */ + if (taglen > 16) { + return CRYPT_INVALID_ARG; + } + ocb->tag_len = taglen; + + /* determine which polys to use */ + ocb->block_len = cipher_descriptor[cipher].block_length; + x = (int)(sizeof(polys)/sizeof(polys[0])); + for (poly = 0; poly < x; poly++) { + if (polys[poly].len == ocb->block_len) { + break; + } + } + if (poly == x) { + return CRYPT_INVALID_ARG; /* block_len not found in polys */ + } + if (polys[poly].len != ocb->block_len) { + return CRYPT_INVALID_ARG; + } + + /* schedule the key */ + if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, &ocb->key)) != CRYPT_OK) { + return err; + } + + /* L_* = ENCIPHER(K, zeros(128)) */ + zeromem(ocb->L_star, ocb->block_len); + if ((err = cipher_descriptor[cipher].ecb_encrypt(ocb->L_star, ocb->L_star, &ocb->key)) != CRYPT_OK) { + return err; + } + + /* compute L_$, L_0, L_1, ... */ + for (x = -1; x < 32; x++) { + if (x == -1) { /* gonna compute: L_$ = double(L_*) */ + current = ocb->L_dollar; + previous = ocb->L_star; + } + else if (x == 0) { /* gonna compute: L_0 = double(L_$) */ + current = ocb->L_[0]; + previous = ocb->L_dollar; + } + else { /* gonna compute: L_i = double(L_{i-1}) for every integer i > 0 */ + current = ocb->L_[x]; + previous = ocb->L_[x-1]; + } + m = previous[0] >> 7; + for (y = 0; y < ocb->block_len-1; y++) { + current[y] = ((previous[y] << 1) | (previous[y+1] >> 7)) & 255; + } + current[ocb->block_len-1] = (previous[ocb->block_len-1] << 1) & 255; + if (m == 1) { + /* current[] = current[] XOR polys[poly].poly_mul[]*/ + ocb3_int_xor_blocks(current, current, polys[poly].poly_mul, ocb->block_len); + } + } + + /* initialize ocb->Offset_current = Offset_0 */ + _ocb3_int_calc_offset_zero(ocb, nonce, noncelen, taglen); + + /* initialize checksum to all zeros */ + zeromem(ocb->checksum, ocb->block_len); + + /* set block index */ + ocb->block_index = 1; + + /* initialize AAD related stuff */ + ocb->ablock_index = 1; + ocb->adata_buffer_bytes = 0; + zeromem(ocb->aOffset_current, ocb->block_len); + zeromem(ocb->aSum_current, ocb->block_len); + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_int_ntz.c b/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_int_ntz.c new file mode 100644 index 000000000..3c5b18d0a --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_int_ntz.c @@ -0,0 +1,39 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file ocb3_int_ntz.c + OCB implementation, INTERNAL ONLY helper, by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_OCB3_MODE + +/** + Returns the number of leading zero bits [from lsb up] (internal function) + @param x The 32-bit value to observe + @return The number of bits [from the lsb up] that are zero +*/ +int ocb3_int_ntz(unsigned long x) +{ + int c; + x &= 0xFFFFFFFFUL; + c = 0; + while ((x & 1) == 0) { + ++c; + x >>= 1; + } + return c; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_int_xor_blocks.c b/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_int_xor_blocks.c new file mode 100644 index 000000000..798bddcd6 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_int_xor_blocks.c @@ -0,0 +1,40 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file ocb3_int_xor_blocks.c + OCB implementation, INTERNAL ONLY helper, by Karel Miko +*/ +#include "tomcrypt.h" + +#ifdef LTC_OCB3_MODE + +/** + Compute xor for two blocks of bytes 'out = block_a XOR block_b' (internal function) + @param out The block of bytes (output) + @param block_a The block of bytes (input) + @param block_b The block of bytes (input) + @param block_len The size of block_a, block_b, out +*/ +void ocb3_int_xor_blocks(unsigned char *out, const unsigned char *block_a, const unsigned char *block_b, unsigned long block_len) +{ + int x; + if (out == block_a) { + for (x = 0; x < (int)block_len; x++) out[x] ^= block_b[x]; + } + else { + for (x = 0; x < (int)block_len; x++) out[x] = block_a[x] ^ block_b[x]; + } +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_test.c b/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_test.c new file mode 100644 index 000000000..a3e5062bb --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/encauth/ocb3/ocb3_test.c @@ -0,0 +1,309 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file ocb3_test.c + OCB implementation, self-test by Tom St Denis +*/ +#include "tomcrypt.h" + +#ifdef LTC_OCB3_MODE + +/** + Test the OCB protocol + @return CRYPT_OK if successful +*/ +int ocb3_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + /* test vectors from: http://tools.ietf.org/html/draft-krovetz-ocb-03 */ + unsigned char key[16] = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F }; + unsigned char nonce[12] = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B }; + const struct { + int ptlen; + int aadlen; + unsigned char pt[64], aad[64], ct[64], tag[16]; + } tests[] = { + + { /* index:0 */ + 0, /* PLAINTEXT length */ + 0, /* AAD length */ + { 0 }, /* PLAINTEXT */ + { 0 }, /* AAD */ + { 0 }, /* CIPHERTEXT */ + { 0x19,0x7b,0x9c,0x3c,0x44,0x1d,0x3c,0x83,0xea,0xfb,0x2b,0xef,0x63,0x3b,0x91,0x82 }, /* TAG */ + }, + { /* index:1 */ + 8, /* PLAINTEXT length */ + 8, /* AAD length */ + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07 }, /* PLAINTEXT */ + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07 }, /* AAD */ + { 0x92,0xb6,0x57,0x13,0x0a,0x74,0xb8,0x5a }, /* CIPHERTEXT */ + { 0x16,0xdc,0x76,0xa4,0x6d,0x47,0xe1,0xea,0xd5,0x37,0x20,0x9e,0x8a,0x96,0xd1,0x4e }, /* TAG */ + }, + { /* index:2 */ + 0, /* PLAINTEXT length */ + 8, /* AAD length */ + { 0 }, /* PLAINTEXT */ + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07 }, /* AAD */ + { 0 }, /* CIPHERTEXT */ + { 0x98,0xb9,0x15,0x52,0xc8,0xc0,0x09,0x18,0x50,0x44,0xe3,0x0a,0x6e,0xb2,0xfe,0x21 }, /* TAG */ + }, + { /* index:3 */ + 8, /* PLAINTEXT length */ + 0, /* AAD length */ + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07 }, /* PLAINTEXT */ + { 0 }, /* AAD */ + { 0x92,0xb6,0x57,0x13,0x0a,0x74,0xb8,0x5a }, /* CIPHERTEXT */ + { 0x97,0x1e,0xff,0xca,0xe1,0x9a,0xd4,0x71,0x6f,0x88,0xe8,0x7b,0x87,0x1f,0xbe,0xed }, /* TAG */ + }, + { /* index:4 */ + 16, /* PLAINTEXT length */ + 16, /* AAD length */ + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f }, /* PLAINTEXT */ + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f }, /* AAD */ + { 0xbe,0xa5,0xe8,0x79,0x8d,0xbe,0x71,0x10,0x03,0x1c,0x14,0x4d,0xa0,0xb2,0x61,0x22 }, /* CIPHERTEXT */ + { 0x77,0x6c,0x99,0x24,0xd6,0x72,0x3a,0x1f,0xc4,0x52,0x45,0x32,0xac,0x3e,0x5b,0xeb }, /* TAG */ + }, + { /* index:5 */ + 0, /* PLAINTEXT length */ + 16, /* AAD length */ + { 0 }, /* PLAINTEXT */ + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f }, /* AAD */ + { 0 }, /* CIPHERTEXT */ + { 0x7d,0xdb,0x8e,0x6c,0xea,0x68,0x14,0x86,0x62,0x12,0x50,0x96,0x19,0xb1,0x9c,0xc6 }, /* TAG */ + }, + { /* index:6 */ + 16, /* PLAINTEXT length */ + 0, /* AAD length */ + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f }, /* PLAINTEXT */ + { 0 }, /* AAD */ + { 0xbe,0xa5,0xe8,0x79,0x8d,0xbe,0x71,0x10,0x03,0x1c,0x14,0x4d,0xa0,0xb2,0x61,0x22 }, /* CIPHERTEXT */ + { 0x13,0xcc,0x8b,0x74,0x78,0x07,0x12,0x1a,0x4c,0xbb,0x3e,0x4b,0xd6,0xb4,0x56,0xaf }, /* TAG */ + }, + { /* index:7 */ + 24, /* PLAINTEXT length */ + 24, /* AAD length */ + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17 }, /* PLAINTEXT */ + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17 }, /* AAD */ + { 0xbe,0xa5,0xe8,0x79,0x8d,0xbe,0x71,0x10,0x03,0x1c,0x14,0x4d,0xa0,0xb2,0x61,0x22,0xfc,0xfc,0xee,0x7a,0x2a,0x8d,0x4d,0x48 }, /* CIPHERTEXT */ + { 0x5f,0xa9,0x4f,0xc3,0xf3,0x88,0x20,0xf1,0xdc,0x3f,0x3d,0x1f,0xd4,0xe5,0x5e,0x1c }, /* TAG */ + }, + { /* index:8 */ + 0, /* PLAINTEXT length */ + 24, /* AAD length */ + { 0 }, /* PLAINTEXT */ + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17 }, /* AAD */ + { 0 }, /* CIPHERTEXT */ + { 0x28,0x20,0x26,0xda,0x30,0x68,0xbc,0x9f,0xa1,0x18,0x68,0x1d,0x55,0x9f,0x10,0xf6 }, /* TAG */ + }, + { /* index:9 */ + 24, /* PLAINTEXT length */ + 0, /* AAD length */ + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17 }, /* PLAINTEXT */ + { 0 }, /* AAD */ + { 0xbe,0xa5,0xe8,0x79,0x8d,0xbe,0x71,0x10,0x03,0x1c,0x14,0x4d,0xa0,0xb2,0x61,0x22,0xfc,0xfc,0xee,0x7a,0x2a,0x8d,0x4d,0x48 }, /* CIPHERTEXT */ + { 0x6e,0xf2,0xf5,0x25,0x87,0xfd,0xa0,0xed,0x97,0xdc,0x7e,0xed,0xe2,0x41,0xdf,0x68 }, /* TAG */ + }, + { /* index:10 */ + 32, /* PLAINTEXT length */ + 32, /* AAD length */ + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f }, /* PLAINTEXT */ + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f }, /* AAD */ + { 0xbe,0xa5,0xe8,0x79,0x8d,0xbe,0x71,0x10,0x03,0x1c,0x14,0x4d,0xa0,0xb2,0x61,0x22,0xce,0xaa,0xb9,0xb0,0x5d,0xf7,0x71,0xa6,0x57,0x14,0x9d,0x53,0x77,0x34,0x63,0xcb }, /* CIPHERTEXT */ + { 0xb2,0xa0,0x40,0xdd,0x3b,0xd5,0x16,0x43,0x72,0xd7,0x6d,0x7b,0xb6,0x82,0x42,0x40 }, /* TAG */ + }, + { /* index:11 */ + 0, /* PLAINTEXT length */ + 32, /* AAD length */ + { 0 }, /* PLAINTEXT */ + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f }, /* AAD */ + { 0 }, /* CIPHERTEXT */ + { 0xe1,0xe0,0x72,0x63,0x3b,0xad,0xe5,0x1a,0x60,0xe8,0x59,0x51,0xd9,0xc4,0x2a,0x1b }, /* TAG */ + }, + { /* index:12 */ + 32, /* PLAINTEXT length */ + 0, /* AAD length */ + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f }, /* PLAINTEXT */ + { 0 }, /* AAD */ + { 0xbe,0xa5,0xe8,0x79,0x8d,0xbe,0x71,0x10,0x03,0x1c,0x14,0x4d,0xa0,0xb2,0x61,0x22,0xce,0xaa,0xb9,0xb0,0x5d,0xf7,0x71,0xa6,0x57,0x14,0x9d,0x53,0x77,0x34,0x63,0xcb }, /* CIPHERTEXT */ + { 0x4a,0x3b,0xae,0x82,0x44,0x65,0xcf,0xda,0xf8,0xc4,0x1f,0xc5,0x0c,0x7d,0xf9,0xd9 }, /* TAG */ + }, + { /* index:13 */ + 40, /* PLAINTEXT length */ + 40, /* AAD length */ + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27 }, /* PLAINTEXT */ + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27 }, /* AAD */ + { 0xbe,0xa5,0xe8,0x79,0x8d,0xbe,0x71,0x10,0x03,0x1c,0x14,0x4d,0xa0,0xb2,0x61,0x22,0xce,0xaa,0xb9,0xb0,0x5d,0xf7,0x71,0xa6,0x57,0x14,0x9d,0x53,0x77,0x34,0x63,0xcb,0x68,0xc6,0x57,0x78,0xb0,0x58,0xa6,0x35 }, /* CIPHERTEXT */ + { 0x65,0x9c,0x62,0x32,0x11,0xde,0xea,0x0d,0xe3,0x0d,0x2c,0x38,0x18,0x79,0xf4,0xc8 }, /* TAG */ + }, + { /* index:14 */ + 0, /* PLAINTEXT length */ + 40, /* AAD length */ + { 0 }, /* PLAINTEXT */ + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27 }, /* AAD */ + { 0 }, /* CIPHERTEXT */ + { 0x7a,0xeb,0x7a,0x69,0xa1,0x68,0x7d,0xd0,0x82,0xca,0x27,0xb0,0xd9,0xa3,0x70,0x96 }, /* TAG */ + }, + { /* index:15 */ + 40, /* PLAINTEXT length */ + 0, /* AAD length */ + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27 }, /* PLAINTEXT */ + { 0 }, /* AAD */ + { 0xbe,0xa5,0xe8,0x79,0x8d,0xbe,0x71,0x10,0x03,0x1c,0x14,0x4d,0xa0,0xb2,0x61,0x22,0xce,0xaa,0xb9,0xb0,0x5d,0xf7,0x71,0xa6,0x57,0x14,0x9d,0x53,0x77,0x34,0x63,0xcb,0x68,0xc6,0x57,0x78,0xb0,0x58,0xa6,0x35 }, /* CIPHERTEXT */ + { 0x06,0x0c,0x84,0x67,0xf4,0xab,0xab,0x5e,0x8b,0x3c,0x20,0x67,0xa2,0xe1,0x15,0xdc }, /* TAG */ + }, + +}; + /* As of RFC 7253 - 'Appendix A. Sample Results' + * The next tuple shows a result with a tag length of 96 bits and a + different key. + + K: 0F0E0D0C0B0A09080706050403020100 + + N: BBAA9988776655443322110D + A: 000102030405060708090A0B0C0D0E0F1011121314151617 + 18191A1B1C1D1E1F2021222324252627 + P: 000102030405060708090A0B0C0D0E0F1011121314151617 + 18191A1B1C1D1E1F2021222324252627 + C: 1792A4E31E0755FB03E31B22116E6C2DDF9EFD6E33D536F1 + A0124B0A55BAE884ED93481529C76B6AD0C515F4D1CDD4FD + AC4F02AA + + The C has been split up in C and T (tag) + */ + const unsigned char K[] = { 0x0F,0x0E,0x0D,0x0C,0x0B,0x0A,0x09,0x08, + 0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00 }; + const unsigned char N[] = { 0xBB,0xAA,0x99,0x88,0x77,0x66,0x55,0x44, + 0x33,0x22,0x11,0x0D }; + const unsigned char A[] = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, + 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, + 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, + 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, + 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27 }; + const unsigned char P[] = { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07, + 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, + 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, + 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, + 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27 }; + const unsigned char C[] = { 0x17,0x92,0xA4,0xE3,0x1E,0x07,0x55,0xFB, + 0x03,0xE3,0x1B,0x22,0x11,0x6E,0x6C,0x2D, + 0xDF,0x9E,0xFD,0x6E,0x33,0xD5,0x36,0xF1, + 0xA0,0x12,0x4B,0x0A,0x55,0xBA,0xE8,0x84, + 0xED,0x93,0x48,0x15,0x29,0xC7,0x6B,0x6A }; + const unsigned char T[] = { 0xD0,0xC5,0x15,0xF4,0xD1,0xCD,0xD4,0xFD, + 0xAC,0x4F,0x02,0xAA }; + + int err, x, idx, res; + unsigned long len; + unsigned char outct[MAXBLOCKSIZE] = { 0 }; + unsigned char outtag[MAXBLOCKSIZE] = { 0 }; + ocb3_state ocb; + + /* AES can be under rijndael or aes... try to find it */ + if ((idx = find_cipher("aes")) == -1) { + if ((idx = find_cipher("rijndael")) == -1) { + return CRYPT_NOP; + } + } + + for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { + len = 16; /* must be the same as the required taglen */ + if ((err = ocb3_encrypt_authenticate_memory(idx, + key, sizeof(key), + nonce, sizeof(nonce), + tests[x].aadlen != 0 ? tests[x].aad : NULL, tests[x].aadlen, + tests[x].ptlen != 0 ? tests[x].pt : NULL, tests[x].ptlen, + tests[x].ptlen != 0 ? outct : NULL, outtag, &len)) != CRYPT_OK) { + return err; + } + + if (compare_testvector(outtag, len, tests[x].tag, sizeof(tests[x].tag), "OCB3 Tag", x) || + compare_testvector(outct, tests[x].ptlen, tests[x].ct, tests[x].ptlen, "OCB3 CT", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + + if ((err = ocb3_decrypt_verify_memory(idx, + key, sizeof(key), + nonce, sizeof(nonce), + tests[x].aadlen != 0 ? tests[x].aad : NULL, tests[x].aadlen, + tests[x].ptlen != 0 ? outct : NULL, tests[x].ptlen, + tests[x].ptlen != 0 ? outct : NULL, tests[x].tag, len, &res)) != CRYPT_OK) { + return err; + } + if ((res != 1) || compare_testvector(outct, tests[x].ptlen, tests[x].pt, tests[x].ptlen, "OCB3", x)) { +#ifdef LTC_TEST_DBG + printf("\n\nOCB3: Failure-decrypt - res = %d\n", res); +#endif + return CRYPT_FAIL_TESTVECTOR; + } + } + + /* RFC 7253 - test vector with a tag length of 96 bits - part 1 */ + x = 99; + len = 12; + if ((err = ocb3_encrypt_authenticate_memory(idx, + K, sizeof(K), + N, sizeof(N), + A, sizeof(A), + P, sizeof(P), + outct, outtag, &len)) != CRYPT_OK) { + return err; + } + + if (compare_testvector(outtag, len, T, sizeof(T), "OCB3 Tag", x) || + compare_testvector(outct, sizeof(P), C, sizeof(C), "OCB3 CT", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + + if ((err = ocb3_decrypt_verify_memory(idx, + K, sizeof(K), + N, sizeof(N), + A, sizeof(A), + C, sizeof(C), + outct, T, sizeof(T), &res)) != CRYPT_OK) { + return err; + } + if ((res != 1) || compare_testvector(outct, sizeof(C), P, sizeof(P), "OCB3", x)) { +#ifdef LTC_TEST_DBG + printf("\n\nOCB3: Failure-decrypt - res = %d\n", res); +#endif + return CRYPT_FAIL_TESTVECTOR; + } + + /* RFC 7253 - test vector with a tag length of 96 bits - part 2 */ + x = 100; + if ((err = ocb3_init(&ocb, idx, K, sizeof(K), N, sizeof(N), 12)) != CRYPT_OK) return err; + if ((err = ocb3_add_aad(&ocb, A, sizeof(A))) != CRYPT_OK) return err; + if ((err = ocb3_encrypt(&ocb, P, 32, outct)) != CRYPT_OK) return err; + if ((err = ocb3_encrypt_last(&ocb, P+32, sizeof(P)-32, outct+32)) != CRYPT_OK) return err; + len = sizeof(outtag); /* intentionally more than 12 */ + if ((err = ocb3_done(&ocb, outtag, &len)) != CRYPT_OK) return err; + if (compare_testvector(outct, sizeof(P), C, sizeof(C), "OCB3 CT", x)) return CRYPT_FAIL_TESTVECTOR; + if (compare_testvector(outtag, len, T, sizeof(T), "OCB3 Tag.enc", x)) return CRYPT_FAIL_TESTVECTOR; + if ((err = ocb3_init(&ocb, idx, K, sizeof(K), N, sizeof(N), 12)) != CRYPT_OK) return err; + if ((err = ocb3_add_aad(&ocb, A, sizeof(A))) != CRYPT_OK) return err; + if ((err = ocb3_decrypt(&ocb, C, 32, outct)) != CRYPT_OK) return err; + if ((err = ocb3_decrypt_last(&ocb, C+32, sizeof(C)-32, outct+32)) != CRYPT_OK) return err; + len = sizeof(outtag); /* intentionally more than 12 */ + if ((err = ocb3_done(&ocb, outtag, &len)) != CRYPT_OK) return err; + if (compare_testvector(outct, sizeof(C), P, sizeof(P), "OCB3 PT", x)) return CRYPT_FAIL_TESTVECTOR; + if (compare_testvector(outtag, len, T, sizeof(T), "OCB3 Tag.dec", x)) return CRYPT_FAIL_TESTVECTOR; + + return CRYPT_OK; +#endif /* LTC_TEST */ +} + +#endif /* LTC_OCB3_MODE */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/blake2b.c b/fsbl/lib/libtomcrypt/src/hashes/blake2b.c new file mode 100644 index 000000000..cd5115ca9 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/blake2b.c @@ -0,0 +1,588 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* + BLAKE2 reference source code package - reference C implementations + + Copyright 2012, Samuel Neves . You may use this under the + terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at + your option. The terms of these licenses can be found at: + + - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + - OpenSSL license : https://www.openssl.org/source/license.html + - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + + More information about the BLAKE2 hash function can be found at + https://blake2.net. +*/ +/* see also https://www.ietf.org/rfc/rfc7693.txt */ + +#include "tomcrypt.h" + +#ifdef LTC_BLAKE2B + +enum blake2b_constant { + BLAKE2B_BLOCKBYTES = 128, + BLAKE2B_OUTBYTES = 64, + BLAKE2B_KEYBYTES = 64, + BLAKE2B_SALTBYTES = 16, + BLAKE2B_PERSONALBYTES = 16, + BLAKE2B_PARAM_SIZE = 64 +}; + +/* param offsets */ +enum { + O_DIGEST_LENGTH = 0, + O_KEY_LENGTH = 1, + O_FANOUT = 2, + O_DEPTH = 3, + O_LEAF_LENGTH = 4, + O_NODE_OFFSET = 8, + O_XOF_LENGTH = 12, + O_NODE_DEPTH = 16, + O_INNER_LENGTH = 17, + O_RESERVED = 18, + O_SALT = 32, + O_PERSONAL = 48 +}; + +/* +struct blake2b_param { + unsigned char digest_length; + unsigned char key_length; + unsigned char fanout; + unsigned char depth; + ulong32 leaf_length; + ulong32 node_offset; + ulong32 xof_length; + unsigned char node_depth; + unsigned char inner_length; + unsigned char reserved[14]; + unsigned char salt[BLAKE2B_SALTBYTES]; + unsigned char personal[BLAKE2B_PERSONALBYTES]; +}; +*/ + +const struct ltc_hash_descriptor blake2b_160_desc = +{ + "blake2b-160", + 25, + 20, + 128, + { 1, 3, 6, 1, 4, 1, 1722, 12, 2, 1, 5 }, + 11, + &blake2b_160_init, + &blake2b_process, + &blake2b_done, + &blake2b_160_test, + NULL +}; + +const struct ltc_hash_descriptor blake2b_256_desc = +{ + "blake2b-256", + 26, + 32, + 128, + { 1, 3, 6, 1, 4, 1, 1722, 12, 2, 1, 8 }, + 11, + &blake2b_256_init, + &blake2b_process, + &blake2b_done, + &blake2b_256_test, + NULL +}; + +const struct ltc_hash_descriptor blake2b_384_desc = +{ + "blake2b-384", + 27, + 48, + 128, + { 1, 3, 6, 1, 4, 1, 1722, 12, 2, 1, 12 }, + 11, + &blake2b_384_init, + &blake2b_process, + &blake2b_done, + &blake2b_384_test, + NULL +}; + +const struct ltc_hash_descriptor blake2b_512_desc = +{ + "blake2b-512", + 28, + 64, + 128, + { 1, 3, 6, 1, 4, 1, 1722, 12, 2, 1, 16 }, + 11, + &blake2b_512_init, + &blake2b_process, + &blake2b_done, + &blake2b_512_test, + NULL +}; + +static const ulong64 blake2b_IV[8] = +{ + CONST64(0x6a09e667f3bcc908), CONST64(0xbb67ae8584caa73b), + CONST64(0x3c6ef372fe94f82b), CONST64(0xa54ff53a5f1d36f1), + CONST64(0x510e527fade682d1), CONST64(0x9b05688c2b3e6c1f), + CONST64(0x1f83d9abfb41bd6b), CONST64(0x5be0cd19137e2179) +}; + +static const unsigned char blake2b_sigma[12][16] = +{ + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } , + { 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 } , + { 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4 } , + { 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8 } , + { 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13 } , + { 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9 } , + { 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11 } , + { 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10 } , + { 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5 } , + { 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13 , 0 } , + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } , + { 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 } +}; + +static void blake2b_set_lastnode(hash_state *md) { md->blake2b.f[1] = CONST64(0xffffffffffffffff); } + +/* Some helper functions, not necessarily useful */ +static int blake2b_is_lastblock(const hash_state *md) { return md->blake2b.f[0] != 0; } + +static void blake2b_set_lastblock(hash_state *md) +{ + if (md->blake2b.last_node) + blake2b_set_lastnode(md); + + md->blake2b.f[0] = CONST64(0xffffffffffffffff); +} + +static void blake2b_increment_counter(hash_state *md, ulong64 inc) +{ + md->blake2b.t[0] += inc; + if (md->blake2b.t[0] < inc) md->blake2b.t[1]++; +} + +static void blake2b_init0(hash_state *md) +{ + unsigned long i; + XMEMSET(&md->blake2b, 0, sizeof(md->blake2b)); + + for (i = 0; i < 8; ++i) + md->blake2b.h[i] = blake2b_IV[i]; +} + +/* init xors IV with input parameter block */ +static int blake2b_init_param(hash_state *md, const unsigned char *P) +{ + unsigned long i; + + blake2b_init0(md); + + /* IV XOR ParamBlock */ + for (i = 0; i < 8; ++i) { + ulong64 tmp; + LOAD64L(tmp, P + i * 8); + md->blake2b.h[i] ^= tmp; + } + + md->blake2b.outlen = P[O_DIGEST_LENGTH]; + return CRYPT_OK; +} + +int blake2b_init(hash_state *md, unsigned long outlen, const unsigned char *key, unsigned long keylen) +{ + unsigned char P[BLAKE2B_PARAM_SIZE]; + int err; + + LTC_ARGCHK(md != NULL); + + if ((!outlen) || (outlen > BLAKE2B_OUTBYTES)) + return CRYPT_INVALID_ARG; + + if ((key && !keylen) || (keylen && !key) || (keylen > BLAKE2B_KEYBYTES)) + return CRYPT_INVALID_ARG; + + XMEMSET(P, 0, sizeof(P)); + + P[O_DIGEST_LENGTH] = (unsigned char)outlen; + P[O_KEY_LENGTH] = (unsigned char)keylen; + P[O_FANOUT] = 1; + P[O_DEPTH] = 1; + + err = blake2b_init_param(md, P); + if (err != CRYPT_OK) return err; + + if (key) { + unsigned char block[BLAKE2B_BLOCKBYTES]; + + XMEMSET(block, 0, BLAKE2B_BLOCKBYTES); + XMEMCPY(block, key, keylen); + blake2b_process(md, block, BLAKE2B_BLOCKBYTES); + +#ifdef LTC_CLEAN_STACK + zeromem(block, sizeof(block)); +#endif + } + + return CRYPT_OK; +} + +int blake2b_160_init(hash_state *md) { return blake2b_init(md, 20, NULL, 0); } + +int blake2b_256_init(hash_state *md) { return blake2b_init(md, 32, NULL, 0); } + +int blake2b_384_init(hash_state *md) { return blake2b_init(md, 48, NULL, 0); } + +int blake2b_512_init(hash_state *md) { return blake2b_init(md, 64, NULL, 0); } + +#define G(r, i, a, b, c, d) \ + do { \ + a = a + b + m[blake2b_sigma[r][2 * i + 0]]; \ + d = ROR64(d ^ a, 32); \ + c = c + d; \ + b = ROR64(b ^ c, 24); \ + a = a + b + m[blake2b_sigma[r][2 * i + 1]]; \ + d = ROR64(d ^ a, 16); \ + c = c + d; \ + b = ROR64(b ^ c, 63); \ + } while (0) + +#define ROUND(r) \ + do { \ + G(r, 0, v[0], v[4], v[8], v[12]); \ + G(r, 1, v[1], v[5], v[9], v[13]); \ + G(r, 2, v[2], v[6], v[10], v[14]); \ + G(r, 3, v[3], v[7], v[11], v[15]); \ + G(r, 4, v[0], v[5], v[10], v[15]); \ + G(r, 5, v[1], v[6], v[11], v[12]); \ + G(r, 6, v[2], v[7], v[8], v[13]); \ + G(r, 7, v[3], v[4], v[9], v[14]); \ + } while (0) + +#ifdef LTC_CLEAN_STACK +static int _blake2b_compress(hash_state *md, const unsigned char *buf) +#else +static int blake2b_compress(hash_state *md, const unsigned char *buf) +#endif +{ + ulong64 m[16]; + ulong64 v[16]; + unsigned long i; + + for (i = 0; i < 16; ++i) { + LOAD64L(m[i], buf + i * sizeof(m[i])); + } + + for (i = 0; i < 8; ++i) { + v[i] = md->blake2b.h[i]; + } + + v[8] = blake2b_IV[0]; + v[9] = blake2b_IV[1]; + v[10] = blake2b_IV[2]; + v[11] = blake2b_IV[3]; + v[12] = blake2b_IV[4] ^ md->blake2b.t[0]; + v[13] = blake2b_IV[5] ^ md->blake2b.t[1]; + v[14] = blake2b_IV[6] ^ md->blake2b.f[0]; + v[15] = blake2b_IV[7] ^ md->blake2b.f[1]; + + ROUND(0); + ROUND(1); + ROUND(2); + ROUND(3); + ROUND(4); + ROUND(5); + ROUND(6); + ROUND(7); + ROUND(8); + ROUND(9); + ROUND(10); + ROUND(11); + + for (i = 0; i < 8; ++i) { + md->blake2b.h[i] = md->blake2b.h[i] ^ v[i] ^ v[i + 8]; + } + return CRYPT_OK; +} + +#undef G +#undef ROUND + +#ifdef LTC_CLEAN_STACK +static int blake2b_compress(hash_state *md, const unsigned char *buf) +{ + int err; + err = _blake2b_compress(md, buf); + burn_stack(sizeof(ulong64) * 32 + sizeof(unsigned long)); + return err; +} +#endif + +int blake2b_process(hash_state *md, const unsigned char *in, unsigned long inlen) +{ + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(in != NULL); + + if (md->blake2b.curlen > sizeof(md->blake2b.buf)) { + return CRYPT_INVALID_ARG; + } + + if (inlen > 0) { + unsigned long left = md->blake2b.curlen; + unsigned long fill = BLAKE2B_BLOCKBYTES - left; + if (inlen > fill) { + md->blake2b.curlen = 0; + XMEMCPY(md->blake2b.buf + (left % sizeof(md->blake2b.buf)), in, fill); /* Fill buffer */ + blake2b_increment_counter(md, BLAKE2B_BLOCKBYTES); + blake2b_compress(md, md->blake2b.buf); /* Compress */ + in += fill; + inlen -= fill; + while (inlen > BLAKE2B_BLOCKBYTES) { + blake2b_increment_counter(md, BLAKE2B_BLOCKBYTES); + blake2b_compress(md, in); + in += BLAKE2B_BLOCKBYTES; + inlen -= BLAKE2B_BLOCKBYTES; + } + } + XMEMCPY(md->blake2b.buf + md->blake2b.curlen, in, inlen); + md->blake2b.curlen += inlen; + } + return CRYPT_OK; +} + +int blake2b_done(hash_state *md, unsigned char *out) +{ + unsigned char buffer[BLAKE2B_OUTBYTES] = { 0 }; + unsigned long i; + + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(out != NULL); + + /* if(md->blakebs.outlen != outlen) return CRYPT_INVALID_ARG; */ + + if (blake2b_is_lastblock(md)) + return CRYPT_ERROR; + + blake2b_increment_counter(md, md->blake2b.curlen); + blake2b_set_lastblock(md); + XMEMSET(md->blake2b.buf + md->blake2b.curlen, 0, BLAKE2B_BLOCKBYTES - md->blake2b.curlen); /* Padding */ + blake2b_compress(md, md->blake2b.buf); + + for (i = 0; i < 8; ++i) /* Output full hash to temp buffer */ + STORE64L(md->blake2b.h[i], buffer + i * 8); + + XMEMCPY(out, buffer, md->blake2b.outlen); + zeromem(md, sizeof(hash_state)); +#ifdef LTC_CLEAN_STACK + zeromem(buffer, sizeof(buffer)); +#endif + return CRYPT_OK; +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int blake2b_512_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct { + const char *msg; + unsigned char hash[64]; + } tests[] = { + { "", + { 0x78, 0x6a, 0x02, 0xf7, 0x42, 0x01, 0x59, 0x03, + 0xc6, 0xc6, 0xfd, 0x85, 0x25, 0x52, 0xd2, 0x72, + 0x91, 0x2f, 0x47, 0x40, 0xe1, 0x58, 0x47, 0x61, + 0x8a, 0x86, 0xe2, 0x17, 0xf7, 0x1f, 0x54, 0x19, + 0xd2, 0x5e, 0x10, 0x31, 0xaf, 0xee, 0x58, 0x53, + 0x13, 0x89, 0x64, 0x44, 0x93, 0x4e, 0xb0, 0x4b, + 0x90, 0x3a, 0x68, 0x5b, 0x14, 0x48, 0xb7, 0x55, + 0xd5, 0x6f, 0x70, 0x1a, 0xfe, 0x9b, 0xe2, 0xce } }, + { "abc", + { 0xba, 0x80, 0xa5, 0x3f, 0x98, 0x1c, 0x4d, 0x0d, + 0x6a, 0x27, 0x97, 0xb6, 0x9f, 0x12, 0xf6, 0xe9, + 0x4c, 0x21, 0x2f, 0x14, 0x68, 0x5a, 0xc4, 0xb7, + 0x4b, 0x12, 0xbb, 0x6f, 0xdb, 0xff, 0xa2, 0xd1, + 0x7d, 0x87, 0xc5, 0x39, 0x2a, 0xab, 0x79, 0x2d, + 0xc2, 0x52, 0xd5, 0xde, 0x45, 0x33, 0xcc, 0x95, + 0x18, 0xd3, 0x8a, 0xa8, 0xdb, 0xf1, 0x92, 0x5a, + 0xb9, 0x23, 0x86, 0xed, 0xd4, 0x00, 0x99, 0x23 } }, + + { NULL, { 0 } } + }; + + int i; + unsigned char tmp[64]; + hash_state md; + + for (i = 0; tests[i].msg != NULL; i++) { + blake2b_512_init(&md); + blake2b_process(&md, (unsigned char *)tests[i].msg, (unsigned long)strlen(tests[i].msg)); + blake2b_done(&md, tmp); + if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "BLAKE2B_512", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; +#endif +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int blake2b_384_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct { + const char *msg; + unsigned char hash[48]; + } tests[] = { + { "", + { 0xb3, 0x28, 0x11, 0x42, 0x33, 0x77, 0xf5, 0x2d, + 0x78, 0x62, 0x28, 0x6e, 0xe1, 0xa7, 0x2e, 0xe5, + 0x40, 0x52, 0x43, 0x80, 0xfd, 0xa1, 0x72, 0x4a, + 0x6f, 0x25, 0xd7, 0x97, 0x8c, 0x6f, 0xd3, 0x24, + 0x4a, 0x6c, 0xaf, 0x04, 0x98, 0x81, 0x26, 0x73, + 0xc5, 0xe0, 0x5e, 0xf5, 0x83, 0x82, 0x51, 0x00 } }, + { "abc", + { 0x6f, 0x56, 0xa8, 0x2c, 0x8e, 0x7e, 0xf5, 0x26, + 0xdf, 0xe1, 0x82, 0xeb, 0x52, 0x12, 0xf7, 0xdb, + 0x9d, 0xf1, 0x31, 0x7e, 0x57, 0x81, 0x5d, 0xbd, + 0xa4, 0x60, 0x83, 0xfc, 0x30, 0xf5, 0x4e, 0xe6, + 0xc6, 0x6b, 0xa8, 0x3b, 0xe6, 0x4b, 0x30, 0x2d, + 0x7c, 0xba, 0x6c, 0xe1, 0x5b, 0xb5, 0x56, 0xf4 } }, + + { NULL, { 0 } } + }; + + int i; + unsigned char tmp[48]; + hash_state md; + + for (i = 0; tests[i].msg != NULL; i++) { + blake2b_384_init(&md); + blake2b_process(&md, (unsigned char *)tests[i].msg, (unsigned long)strlen(tests[i].msg)); + blake2b_done(&md, tmp); + if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "BLAKE2B_384", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; +#endif +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int blake2b_256_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct { + const char *msg; + unsigned char hash[32]; + } tests[] = { + { "", + { 0x0e, 0x57, 0x51, 0xc0, 0x26, 0xe5, 0x43, 0xb2, + 0xe8, 0xab, 0x2e, 0xb0, 0x60, 0x99, 0xda, 0xa1, + 0xd1, 0xe5, 0xdf, 0x47, 0x77, 0x8f, 0x77, 0x87, + 0xfa, 0xab, 0x45, 0xcd, 0xf1, 0x2f, 0xe3, 0xa8 } }, + { "abc", + { 0xbd, 0xdd, 0x81, 0x3c, 0x63, 0x42, 0x39, 0x72, + 0x31, 0x71, 0xef, 0x3f, 0xee, 0x98, 0x57, 0x9b, + 0x94, 0x96, 0x4e, 0x3b, 0xb1, 0xcb, 0x3e, 0x42, + 0x72, 0x62, 0xc8, 0xc0, 0x68, 0xd5, 0x23, 0x19 } }, + { "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890", + { 0x0f, 0x6e, 0x01, 0x8d, 0x38, 0xd6, 0x3f, 0x08, + 0x4d, 0x58, 0xe3, 0x0c, 0x90, 0xfb, 0xa2, 0x41, + 0x5f, 0xca, 0x17, 0xfa, 0x66, 0x26, 0x49, 0xf3, + 0x8a, 0x30, 0x41, 0x7c, 0x57, 0xcd, 0xa8, 0x14 } }, + + { NULL, { 0 } } + }; + + int i; + unsigned char tmp[32]; + hash_state md; + + for (i = 0; tests[i].msg != NULL; i++) { + blake2b_256_init(&md); + blake2b_process(&md, (unsigned char *)tests[i].msg, (unsigned long)strlen(tests[i].msg)); + blake2b_done(&md, tmp); + if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "BLAKE2B_256", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; +#endif +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int blake2b_160_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct { + const char *msg; + unsigned char hash[20]; + } tests[] = { + { "", + { 0x33, 0x45, 0x52, 0x4a, 0xbf, 0x6b, 0xbe, 0x18, + 0x09, 0x44, 0x92, 0x24, 0xb5, 0x97, 0x2c, 0x41, + 0x79, 0x0b, 0x6c, 0xf2 } }, + { "abc", + { 0x38, 0x42, 0x64, 0xf6, 0x76, 0xf3, 0x95, 0x36, + 0x84, 0x05, 0x23, 0xf2, 0x84, 0x92, 0x1c, 0xdc, + 0x68, 0xb6, 0x84, 0x6b } }, + + { NULL, { 0 } } + }; + + int i; + unsigned char tmp[20]; + hash_state md; + + for (i = 0; tests[i].msg != NULL; i++) { + blake2b_160_init(&md); + blake2b_process(&md, (unsigned char *)tests[i].msg, (unsigned long)strlen(tests[i].msg)); + blake2b_done(&md, tmp); + if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "BLAKE2B_160", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/blake2s.c b/fsbl/lib/libtomcrypt/src/hashes/blake2s.c new file mode 100644 index 000000000..e3e90f86b --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/blake2s.c @@ -0,0 +1,563 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* + BLAKE2 reference source code package - reference C implementations + + Copyright 2012, Samuel Neves . You may use this under the + terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at + your option. The terms of these licenses can be found at: + + - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0 + - OpenSSL license : https://www.openssl.org/source/license.html + - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0 + + More information about the BLAKE2 hash function can be found at + https://blake2.net. +*/ +/* see also https://www.ietf.org/rfc/rfc7693.txt */ + +#include "tomcrypt.h" + +#ifdef LTC_BLAKE2S + +enum blake2s_constant { + BLAKE2S_BLOCKBYTES = 64, + BLAKE2S_OUTBYTES = 32, + BLAKE2S_KEYBYTES = 32, + BLAKE2S_SALTBYTES = 8, + BLAKE2S_PERSONALBYTES = 8, + BLAKE2S_PARAM_SIZE = 32 +}; + +/* param offsets */ +enum { + O_DIGEST_LENGTH = 0, + O_KEY_LENGTH = 1, + O_FANOUT = 2, + O_DEPTH = 3, + O_LEAF_LENGTH = 4, + O_NODE_OFFSET = 8, + O_XOF_LENGTH = 12, + O_NODE_DEPTH = 14, + O_INNER_LENGTH = 15, + O_SALT = 16, + O_PERSONAL = 24 +}; + +/* +struct blake2s_param { + unsigned char digest_length; + unsigned char key_length; + unsigned char fanout; + unsigned char depth; + ulong32 leaf_length; + ulong32 node_offset; + ushort16 xof_length; + unsigned char node_depth; + unsigned char inner_length; + unsigned char salt[BLAKE2S_SALTBYTES]; + unsigned char personal[BLAKE2S_PERSONALBYTES]; +}; +*/ + +const struct ltc_hash_descriptor blake2s_128_desc = +{ + "blake2s-128", + 21, + 16, + 64, + { 1, 3, 6, 1, 4, 1, 1722, 12, 2, 2, 4 }, + 11, + &blake2s_128_init, + &blake2s_process, + &blake2s_done, + &blake2s_128_test, + NULL +}; + +const struct ltc_hash_descriptor blake2s_160_desc = +{ + "blake2s-160", + 22, + 20, + 64, + { 1, 3, 6, 1, 4, 1, 1722, 12, 2, 2, 5 }, + 11, + &blake2s_160_init, + &blake2s_process, + &blake2s_done, + &blake2s_160_test, + NULL +}; + +const struct ltc_hash_descriptor blake2s_224_desc = +{ + "blake2s-224", + 23, + 28, + 64, + { 1, 3, 6, 1, 4, 1, 1722, 12, 2, 2, 7 }, + 11, + &blake2s_224_init, + &blake2s_process, + &blake2s_done, + &blake2s_224_test, + NULL +}; + +const struct ltc_hash_descriptor blake2s_256_desc = +{ + "blake2s-256", + 24, + 32, + 64, + { 1, 3, 6, 1, 4, 1, 1722, 12, 2, 2, 8 }, + 11, + &blake2s_256_init, + &blake2s_process, + &blake2s_done, + &blake2s_256_test, + NULL +}; + +static const ulong32 blake2s_IV[8] = { + 0x6A09E667UL, 0xBB67AE85UL, 0x3C6EF372UL, 0xA54FF53AUL, + 0x510E527FUL, 0x9B05688CUL, 0x1F83D9ABUL, 0x5BE0CD19UL +}; + +static const unsigned char blake2s_sigma[10][16] = { + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, + { 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 }, + { 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4 }, + { 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8 }, + { 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13 }, + { 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9 }, + { 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11 }, + { 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10 }, + { 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5 }, + { 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0 }, +}; + +static void blake2s_set_lastnode(hash_state *md) { md->blake2s.f[1] = 0xffffffffUL; } + +/* Some helper functions, not necessarily useful */ +static int blake2s_is_lastblock(const hash_state *md) { return md->blake2s.f[0] != 0; } + +static void blake2s_set_lastblock(hash_state *md) +{ + if (md->blake2s.last_node) + blake2s_set_lastnode(md); + + md->blake2s.f[0] = 0xffffffffUL; +} + +static void blake2s_increment_counter(hash_state *md, const ulong32 inc) +{ + md->blake2s.t[0] += inc; + if (md->blake2s.t[0] < inc) md->blake2s.t[1]++; +} + +static int blake2s_init0(hash_state *md) +{ + int i; + XMEMSET(&md->blake2s, 0, sizeof(struct blake2s_state)); + + for (i = 0; i < 8; ++i) + md->blake2s.h[i] = blake2s_IV[i]; + + return CRYPT_OK; +} + +/* init2 xors IV with input parameter block */ +static int blake2s_init_param(hash_state *md, const unsigned char *P) +{ + unsigned long i; + + blake2s_init0(md); + + /* IV XOR ParamBlock */ + for (i = 0; i < 8; ++i) { + ulong32 tmp; + LOAD32L(tmp, P + i * 4); + md->blake2s.h[i] ^= tmp; + } + + md->blake2s.outlen = P[O_DIGEST_LENGTH]; + return CRYPT_OK; +} + +int blake2s_init(hash_state *md, unsigned long outlen, const unsigned char *key, unsigned long keylen) +{ + unsigned char P[BLAKE2S_PARAM_SIZE]; + int err; + + LTC_ARGCHK(md != NULL); + + if ((!outlen) || (outlen > BLAKE2S_OUTBYTES)) + return CRYPT_INVALID_ARG; + + if ((key && !keylen) || (keylen && !key) || (keylen > BLAKE2S_KEYBYTES)) + return CRYPT_INVALID_ARG; + + XMEMSET(P, 0, sizeof(P)); + + P[O_DIGEST_LENGTH] = (unsigned char)outlen; + P[O_KEY_LENGTH] = (unsigned char)keylen; + P[O_FANOUT] = 1; + P[O_DEPTH] = 1; + + err = blake2s_init_param(md, P); + if (err != CRYPT_OK) return err; + + if (key) { + unsigned char block[BLAKE2S_BLOCKBYTES]; + + XMEMSET(block, 0, BLAKE2S_BLOCKBYTES); + XMEMCPY(block, key, keylen); + blake2s_process(md, block, BLAKE2S_BLOCKBYTES); + +#ifdef LTC_CLEAN_STACK + zeromem(block, sizeof(block)); +#endif + } + return CRYPT_OK; +} + +int blake2s_128_init(hash_state *md) { return blake2s_init(md, 16, NULL, 0); } + +int blake2s_160_init(hash_state *md) { return blake2s_init(md, 20, NULL, 0); } + +int blake2s_224_init(hash_state *md) { return blake2s_init(md, 28, NULL, 0); } + +int blake2s_256_init(hash_state *md) { return blake2s_init(md, 32, NULL, 0); } + +#define G(r, i, a, b, c, d) \ + do { \ + a = a + b + m[blake2s_sigma[r][2 * i + 0]]; \ + d = ROR(d ^ a, 16); \ + c = c + d; \ + b = ROR(b ^ c, 12); \ + a = a + b + m[blake2s_sigma[r][2 * i + 1]]; \ + d = ROR(d ^ a, 8); \ + c = c + d; \ + b = ROR(b ^ c, 7); \ + } while (0) +#define ROUND(r) \ + do { \ + G(r, 0, v[0], v[4], v[8], v[12]); \ + G(r, 1, v[1], v[5], v[9], v[13]); \ + G(r, 2, v[2], v[6], v[10], v[14]); \ + G(r, 3, v[3], v[7], v[11], v[15]); \ + G(r, 4, v[0], v[5], v[10], v[15]); \ + G(r, 5, v[1], v[6], v[11], v[12]); \ + G(r, 6, v[2], v[7], v[8], v[13]); \ + G(r, 7, v[3], v[4], v[9], v[14]); \ + } while (0) + +#ifdef LTC_CLEAN_STACK +static int _blake2s_compress(hash_state *md, const unsigned char *buf) +#else +static int blake2s_compress(hash_state *md, const unsigned char *buf) +#endif +{ + unsigned long i; + ulong32 m[16]; + ulong32 v[16]; + + for (i = 0; i < 16; ++i) { + LOAD32L(m[i], buf + i * sizeof(m[i])); + } + + for (i = 0; i < 8; ++i) + v[i] = md->blake2s.h[i]; + + v[8] = blake2s_IV[0]; + v[9] = blake2s_IV[1]; + v[10] = blake2s_IV[2]; + v[11] = blake2s_IV[3]; + v[12] = md->blake2s.t[0] ^ blake2s_IV[4]; + v[13] = md->blake2s.t[1] ^ blake2s_IV[5]; + v[14] = md->blake2s.f[0] ^ blake2s_IV[6]; + v[15] = md->blake2s.f[1] ^ blake2s_IV[7]; + + ROUND(0); + ROUND(1); + ROUND(2); + ROUND(3); + ROUND(4); + ROUND(5); + ROUND(6); + ROUND(7); + ROUND(8); + ROUND(9); + + for (i = 0; i < 8; ++i) + md->blake2s.h[i] = md->blake2s.h[i] ^ v[i] ^ v[i + 8]; + + return CRYPT_OK; +} +#undef G +#undef ROUND + +#ifdef LTC_CLEAN_STACK +static int blake2s_compress(hash_state *md, const unsigned char *buf) +{ + int err; + err = _blake2s_compress(md, buf); + burn_stack(sizeof(ulong32) * (32) + sizeof(unsigned long)); + return err; +} +#endif + +int blake2s_process(hash_state *md, const unsigned char *in, unsigned long inlen) +{ + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(in != NULL); + + if (md->blake2s.curlen > sizeof(md->blake2s.buf)) { + return CRYPT_INVALID_ARG; + } + + if (inlen > 0) { + unsigned long left = md->blake2s.curlen; + unsigned long fill = BLAKE2S_BLOCKBYTES - left; + if (inlen > fill) { + md->blake2s.curlen = 0; + XMEMCPY(md->blake2s.buf + (left % sizeof(md->blake2s.buf)), in, fill); /* Fill buffer */ + blake2s_increment_counter(md, BLAKE2S_BLOCKBYTES); + blake2s_compress(md, md->blake2s.buf); /* Compress */ + in += fill; + inlen -= fill; + while (inlen > BLAKE2S_BLOCKBYTES) { + blake2s_increment_counter(md, BLAKE2S_BLOCKBYTES); + blake2s_compress(md, in); + in += BLAKE2S_BLOCKBYTES; + inlen -= BLAKE2S_BLOCKBYTES; + } + } + XMEMCPY(md->blake2s.buf + md->blake2s.curlen, in, inlen); + md->blake2s.curlen += inlen; + } + return CRYPT_OK; +} + +int blake2s_done(hash_state *md, unsigned char *out) +{ + unsigned char buffer[BLAKE2S_OUTBYTES] = { 0 }; + unsigned long i; + + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(out != NULL); + + /* if(md->blake2s.outlen != outlen) return CRYPT_INVALID_ARG; */ + + if (blake2s_is_lastblock(md)) + return CRYPT_ERROR; + + blake2s_increment_counter(md, md->blake2s.curlen); + blake2s_set_lastblock(md); + XMEMSET(md->blake2s.buf + md->blake2s.curlen, 0, BLAKE2S_BLOCKBYTES - md->blake2s.curlen); /* Padding */ + blake2s_compress(md, md->blake2s.buf); + + for (i = 0; i < 8; ++i) /* Output full hash to temp buffer */ + STORE32L(md->blake2s.h[i], buffer + i * 4); + + XMEMCPY(out, buffer, md->blake2s.outlen); + zeromem(md, sizeof(hash_state)); +#ifdef LTC_CLEAN_STACK + zeromem(buffer, sizeof(buffer)); +#endif + return CRYPT_OK; +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int blake2s_256_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct { + const char *msg; + unsigned char hash[32]; + } tests[] = { + { "", + { 0x69, 0x21, 0x7a, 0x30, 0x79, 0x90, 0x80, 0x94, + 0xe1, 0x11, 0x21, 0xd0, 0x42, 0x35, 0x4a, 0x7c, + 0x1f, 0x55, 0xb6, 0x48, 0x2c, 0xa1, 0xa5, 0x1e, + 0x1b, 0x25, 0x0d, 0xfd, 0x1e, 0xd0, 0xee, 0xf9 } }, + { "abc", + { 0x50, 0x8c, 0x5e, 0x8c, 0x32, 0x7c, 0x14, 0xe2, + 0xe1, 0xa7, 0x2b, 0xa3, 0x4e, 0xeb, 0x45, 0x2f, + 0x37, 0x45, 0x8b, 0x20, 0x9e, 0xd6, 0x3a, 0x29, + 0x4d, 0x99, 0x9b, 0x4c, 0x86, 0x67, 0x59, 0x82 } }, + { "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890" + "12345678901234567890123456789012345678901234567890", + { 0xa3, 0x78, 0x8b, 0x5b, 0x59, 0xee, 0xe4, 0x41, + 0x95, 0x23, 0x58, 0x00, 0xa4, 0xf9, 0xfa, 0x41, + 0x86, 0x0c, 0x7b, 0x1c, 0x35, 0xa2, 0x42, 0x70, + 0x50, 0x80, 0x79, 0x56, 0xe3, 0xbe, 0x31, 0x74 } }, + + { NULL, { 0 } } + }; + + int i; + unsigned char tmp[32]; + hash_state md; + + for (i = 0; tests[i].msg != NULL; i++) { + blake2s_256_init(&md); + blake2s_process(&md, (unsigned char *)tests[i].msg, (unsigned long)strlen(tests[i].msg)); + blake2s_done(&md, tmp); + if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "BLAKE2S_256", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + + } + return CRYPT_OK; +#endif +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int blake2s_224_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct { + const char *msg; + unsigned char hash[28]; + } tests[] = { + { "", + { 0x1f, 0xa1, 0x29, 0x1e, 0x65, 0x24, 0x8b, 0x37, + 0xb3, 0x43, 0x34, 0x75, 0xb2, 0xa0, 0xdd, 0x63, + 0xd5, 0x4a, 0x11, 0xec, 0xc4, 0xe3, 0xe0, 0x34, + 0xe7, 0xbc, 0x1e, 0xf4 } }, + { "abc", + { 0x0b, 0x03, 0x3f, 0xc2, 0x26, 0xdf, 0x7a, 0xbd, + 0xe2, 0x9f, 0x67, 0xa0, 0x5d, 0x3d, 0xc6, 0x2c, + 0xf2, 0x71, 0xef, 0x3d, 0xfe, 0xa4, 0xd3, 0x87, + 0x40, 0x7f, 0xbd, 0x55 } }, + + { NULL, { 0 } } + }; + + int i; + unsigned char tmp[28]; + hash_state md; + + for (i = 0; tests[i].msg != NULL; i++) { + blake2s_224_init(&md); + blake2s_process(&md, (unsigned char *)tests[i].msg, (unsigned long)strlen(tests[i].msg)); + blake2s_done(&md, tmp); + if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "BLAKE2S_224", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + + } + return CRYPT_OK; +#endif +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int blake2s_160_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct { + const char *msg; + unsigned char hash[20]; + } tests[] = { + { "", + { 0x35, 0x4c, 0x9c, 0x33, 0xf7, 0x35, 0x96, 0x24, + 0x18, 0xbd, 0xac, 0xb9, 0x47, 0x98, 0x73, 0x42, + 0x9c, 0x34, 0x91, 0x6f} }, + { "abc", + { 0x5a, 0xe3, 0xb9, 0x9b, 0xe2, 0x9b, 0x01, 0x83, + 0x4c, 0x3b, 0x50, 0x85, 0x21, 0xed, 0xe6, 0x04, + 0x38, 0xf8, 0xde, 0x17 } }, + + { NULL, { 0 } } + }; + + int i; + unsigned char tmp[20]; + hash_state md; + + for (i = 0; tests[i].msg != NULL; i++) { + blake2s_160_init(&md); + blake2s_process(&md, (unsigned char *)tests[i].msg, (unsigned long)strlen(tests[i].msg)); + blake2s_done(&md, tmp); + if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "BLAKE2S_160", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + + } + return CRYPT_OK; +#endif +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int blake2s_128_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct { + const char *msg; + unsigned char hash[16]; + } tests[] = { + { "", + { 0x64, 0x55, 0x0d, 0x6f, 0xfe, 0x2c, 0x0a, 0x01, + 0xa1, 0x4a, 0xba, 0x1e, 0xad, 0xe0, 0x20, 0x0c } }, + { "abc", + { 0xaa, 0x49, 0x38, 0x11, 0x9b, 0x1d, 0xc7, 0xb8, + 0x7c, 0xba, 0xd0, 0xff, 0xd2, 0x00, 0xd0, 0xae } }, + + { NULL, { 0 } } + }; + + int i; + unsigned char tmp[16]; + hash_state md; + + for (i = 0; tests[i].msg != NULL; i++) { + blake2s_128_init(&md); + blake2s_process(&md, (unsigned char *)tests[i].msg, (unsigned long)strlen(tests[i].msg)); + blake2s_done(&md, tmp); + if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "BLAKE2S_128", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/chc/chc.c b/fsbl/lib/libtomcrypt/src/hashes/chc/chc.c new file mode 100644 index 000000000..0861a88a3 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/chc/chc.c @@ -0,0 +1,306 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +/** + @file chc.c + CHC support. (Tom St Denis) +*/ + +#ifdef LTC_CHC_HASH + +#define UNDEFED_HASH -17 + +/* chc settings */ +static int cipher_idx=UNDEFED_HASH, /* which cipher */ + cipher_blocksize; /* blocksize of cipher */ + + +const struct ltc_hash_descriptor chc_desc = { + "chc_hash", 12, 0, 0, { 0 }, 0, + &chc_init, + &chc_process, + &chc_done, + &chc_test, + NULL +}; + +/** + Initialize the CHC state with a given cipher + @param cipher The index of the cipher you wish to bind + @return CRYPT_OK if successful +*/ +int chc_register(int cipher) +{ + int err, kl, idx; + + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + + /* will it be valid? */ + kl = cipher_descriptor[cipher].block_length; + + /* must be >64 bit block */ + if (kl <= 8) { + return CRYPT_INVALID_CIPHER; + } + + /* can we use the ideal keysize? */ + if ((err = cipher_descriptor[cipher].keysize(&kl)) != CRYPT_OK) { + return err; + } + /* we require that key size == block size be a valid choice */ + if (kl != cipher_descriptor[cipher].block_length) { + return CRYPT_INVALID_CIPHER; + } + + /* determine if chc_hash has been register_hash'ed already */ + if ((err = hash_is_valid(idx = find_hash("chc_hash"))) != CRYPT_OK) { + return err; + } + + /* store into descriptor */ + hash_descriptor[idx].hashsize = + hash_descriptor[idx].blocksize = cipher_descriptor[cipher].block_length; + + /* store the idx and block size */ + cipher_idx = cipher; + cipher_blocksize = cipher_descriptor[cipher].block_length; + return CRYPT_OK; +} + +/** + Initialize the hash state + @param md The hash state you wish to initialize + @return CRYPT_OK if successful +*/ +int chc_init(hash_state *md) +{ + symmetric_key *key; + unsigned char buf[MAXBLOCKSIZE]; + int err; + + LTC_ARGCHK(md != NULL); + + /* is the cipher valid? */ + if ((err = cipher_is_valid(cipher_idx)) != CRYPT_OK) { + return err; + } + + if (cipher_blocksize != cipher_descriptor[cipher_idx].block_length) { + return CRYPT_INVALID_CIPHER; + } + + if ((key = XMALLOC(sizeof(*key))) == NULL) { + return CRYPT_MEM; + } + + /* zero key and what not */ + zeromem(buf, cipher_blocksize); + if ((err = cipher_descriptor[cipher_idx].setup(buf, cipher_blocksize, 0, key)) != CRYPT_OK) { + XFREE(key); + return err; + } + + /* encrypt zero block */ + cipher_descriptor[cipher_idx].ecb_encrypt(buf, md->chc.state, key); + + /* zero other members */ + md->chc.length = 0; + md->chc.curlen = 0; + zeromem(md->chc.buf, sizeof(md->chc.buf)); + XFREE(key); + return CRYPT_OK; +} + +/* + key <= state + T0,T1 <= block + T0 <= encrypt T0 + state <= state xor T0 xor T1 +*/ +static int chc_compress(hash_state *md, unsigned char *buf) +{ + unsigned char T[2][MAXBLOCKSIZE]; + symmetric_key *key; + int err, x; + + if ((key = XMALLOC(sizeof(*key))) == NULL) { + return CRYPT_MEM; + } + if ((err = cipher_descriptor[cipher_idx].setup(md->chc.state, cipher_blocksize, 0, key)) != CRYPT_OK) { + XFREE(key); + return err; + } + XMEMCPY(T[1], buf, cipher_blocksize); + cipher_descriptor[cipher_idx].ecb_encrypt(buf, T[0], key); + for (x = 0; x < cipher_blocksize; x++) { + md->chc.state[x] ^= T[0][x] ^ T[1][x]; + } +#ifdef LTC_CLEAN_STACK + zeromem(T, sizeof(T)); + zeromem(key, sizeof(*key)); +#endif + XFREE(key); + return CRYPT_OK; +} + +/** + Function for processing blocks + @param md The hash state + @param buf The data to hash + @param len The length of the data (octets) + @return CRYPT_OK if successful +*/ +static int _chc_process(hash_state * md, const unsigned char *buf, unsigned long len); +static HASH_PROCESS(_chc_process, chc_compress, chc, (unsigned long)cipher_blocksize) + +/** + Process a block of memory though the hash + @param md The hash state + @param in The data to hash + @param inlen The length of the data (octets) + @return CRYPT_OK if successful +*/ +int chc_process(hash_state * md, const unsigned char *in, unsigned long inlen) +{ + int err; + + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(in != NULL); + + /* is the cipher valid? */ + if ((err = cipher_is_valid(cipher_idx)) != CRYPT_OK) { + return err; + } + if (cipher_blocksize != cipher_descriptor[cipher_idx].block_length) { + return CRYPT_INVALID_CIPHER; + } + + return _chc_process(md, in, inlen); +} + +/** + Terminate the hash to get the digest + @param md The hash state + @param out [out] The destination of the hash (length of the block size of the block cipher) + @return CRYPT_OK if successful +*/ +int chc_done(hash_state *md, unsigned char *out) +{ + int err; + + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(out != NULL); + + /* is the cipher valid? */ + if ((err = cipher_is_valid(cipher_idx)) != CRYPT_OK) { + return err; + } + if (cipher_blocksize != cipher_descriptor[cipher_idx].block_length) { + return CRYPT_INVALID_CIPHER; + } + + if (md->chc.curlen >= sizeof(md->chc.buf)) { + return CRYPT_INVALID_ARG; + } + + /* increase the length of the message */ + md->chc.length += md->chc.curlen * 8; + + /* append the '1' bit */ + md->chc.buf[md->chc.curlen++] = (unsigned char)0x80; + + /* if the length is currently above l-8 bytes we append zeros + * then compress. Then we can fall back to padding zeros and length + * encoding like normal. + */ + if (md->chc.curlen > (unsigned long)(cipher_blocksize - 8)) { + while (md->chc.curlen < (unsigned long)cipher_blocksize) { + md->chc.buf[md->chc.curlen++] = (unsigned char)0; + } + chc_compress(md, md->chc.buf); + md->chc.curlen = 0; + } + + /* pad upto l-8 bytes of zeroes */ + while (md->chc.curlen < (unsigned long)(cipher_blocksize - 8)) { + md->chc.buf[md->chc.curlen++] = (unsigned char)0; + } + + /* store length */ + STORE64L(md->chc.length, md->chc.buf+(cipher_blocksize-8)); + chc_compress(md, md->chc.buf); + + /* copy output */ + XMEMCPY(out, md->chc.state, cipher_blocksize); + +#ifdef LTC_CLEAN_STACK + zeromem(md, sizeof(hash_state)); +#endif + return CRYPT_OK; +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int chc_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct { + unsigned char *msg, + hash[MAXBLOCKSIZE]; + int len; + } tests[] = { +{ + (unsigned char *)"hello world", + { 0xcf, 0x57, 0x9d, 0xc3, 0x0a, 0x0e, 0xea, 0x61, + 0x0d, 0x54, 0x47, 0xc4, 0x3c, 0x06, 0xf5, 0x4e }, + 16 +} +}; + int i, oldhashidx, idx; + unsigned char tmp[MAXBLOCKSIZE]; + hash_state md; + + /* AES can be under rijndael or aes... try to find it */ + if ((idx = find_cipher("aes")) == -1) { + if ((idx = find_cipher("rijndael")) == -1) { + return CRYPT_NOP; + } + } + oldhashidx = cipher_idx; + chc_register(idx); + + for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) { + chc_init(&md); + chc_process(&md, tests[i].msg, strlen((char *)tests[i].msg)); + chc_done(&md, tmp); + if (compare_testvector(tmp, tests[i].len, tests[i].hash, tests[i].len, "CHC", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + if (oldhashidx != UNDEFED_HASH) { + chc_register(oldhashidx); + } + + return CRYPT_OK; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/helper/hash_file.c b/fsbl/lib/libtomcrypt/src/hashes/helper/hash_file.c new file mode 100644 index 000000000..0b96eaee5 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/helper/hash_file.c @@ -0,0 +1,53 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +#ifndef LTC_NO_FILE +/** + @file hash_file.c + Hash a file, Tom St Denis +*/ + +/** + @param hash The index of the hash desired + @param fname The name of the file you wish to hash + @param out [out] The destination of the digest + @param outlen [in/out] The max size and resulting size of the message digest + @result CRYPT_OK if successful +*/ +int hash_file(int hash, const char *fname, unsigned char *out, unsigned long *outlen) +{ + FILE *in; + int err; + LTC_ARGCHK(fname != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + if ((err = hash_is_valid(hash)) != CRYPT_OK) { + return err; + } + + in = fopen(fname, "rb"); + if (in == NULL) { + return CRYPT_FILE_NOTFOUND; + } + + err = hash_filehandle(hash, in, out, outlen); + if (fclose(in) != 0) { + return CRYPT_ERROR; + } + + return err; +} +#endif /* #ifndef LTC_NO_FILE */ + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/helper/hash_filehandle.c b/fsbl/lib/libtomcrypt/src/hashes/helper/hash_filehandle.c new file mode 100644 index 000000000..0e4d7a64c --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/helper/hash_filehandle.c @@ -0,0 +1,74 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +#ifndef LTC_NO_FILE +/** + @file hash_filehandle.c + Hash open files, Tom St Denis +*/ + +/** + Hash data from an open file handle. + @param hash The index of the hash you want to use + @param in The FILE* handle of the file you want to hash + @param out [out] The destination of the digest + @param outlen [in/out] The max size and resulting size of the digest + @result CRYPT_OK if successful +*/ +int hash_filehandle(int hash, FILE *in, unsigned char *out, unsigned long *outlen) +{ + hash_state md; + unsigned char *buf; + size_t x; + int err; + + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(in != NULL); + + if ((buf = XMALLOC(LTC_FILE_READ_BUFSIZE)) == NULL) { + return CRYPT_MEM; + } + + if ((err = hash_is_valid(hash)) != CRYPT_OK) { + goto LBL_ERR; + } + + if (*outlen < hash_descriptor[hash].hashsize) { + *outlen = hash_descriptor[hash].hashsize; + err = CRYPT_BUFFER_OVERFLOW; + goto LBL_ERR; + } + if ((err = hash_descriptor[hash].init(&md)) != CRYPT_OK) { + goto LBL_ERR; + } + + do { + x = fread(buf, 1, LTC_FILE_READ_BUFSIZE, in); + if ((err = hash_descriptor[hash].process(&md, buf, (unsigned long)x)) != CRYPT_OK) { + goto LBL_CLEANBUF; + } + } while (x == LTC_FILE_READ_BUFSIZE); + if ((err = hash_descriptor[hash].done(&md, out)) == CRYPT_OK) { + *outlen = hash_descriptor[hash].hashsize; + } + +LBL_CLEANBUF: + zeromem(buf, LTC_FILE_READ_BUFSIZE); +LBL_ERR: + XFREE(buf); + return err; +} +#endif /* #ifndef LTC_NO_FILE */ + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/helper/hash_memory.c b/fsbl/lib/libtomcrypt/src/hashes/helper/hash_memory.c new file mode 100644 index 000000000..e8471acf0 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/helper/hash_memory.c @@ -0,0 +1,69 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +#ifdef LTC_HASH_HELPERS +/** + @file hash_memory.c + Hash memory helper, Tom St Denis +*/ + +/** + Hash a block of memory and store the digest. + @param hash The index of the hash you wish to use + @param in The data you wish to hash + @param inlen The length of the data to hash (octets) + @param out [out] Where to store the digest + @param outlen [in/out] Max size and resulting size of the digest + @return CRYPT_OK if successful +*/ +int hash_memory(int hash, const unsigned char *in, unsigned long inlen, unsigned char *out, unsigned long *outlen) +{ + hash_state *md; + int err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + if ((err = hash_is_valid(hash)) != CRYPT_OK) { + return err; + } + + if (*outlen < hash_descriptor[hash].hashsize) { + *outlen = hash_descriptor[hash].hashsize; + return CRYPT_BUFFER_OVERFLOW; + } + + md = XMALLOC(sizeof(hash_state)); + if (md == NULL) { + return CRYPT_MEM; + } + + if ((err = hash_descriptor[hash].init(md)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = hash_descriptor[hash].process(md, in, inlen)) != CRYPT_OK) { + goto LBL_ERR; + } + err = hash_descriptor[hash].done(md, out); + *outlen = hash_descriptor[hash].hashsize; +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(md, sizeof(hash_state)); +#endif + XFREE(md); + + return err; +} +#endif /* #ifdef LTC_HASH_HELPERS */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/helper/hash_memory_multi.c b/fsbl/lib/libtomcrypt/src/hashes/helper/hash_memory_multi.c new file mode 100644 index 000000000..d10b4582d --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/helper/hash_memory_multi.c @@ -0,0 +1,88 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" +#include + +#ifdef LTC_HASH_HELPERS +/** + @file hash_memory_multi.c + Hash (multiple buffers) memory helper, Tom St Denis +*/ + +/** + Hash multiple (non-adjacent) blocks of memory at once. + @param hash The index of the hash you wish to use + @param out [out] Where to store the digest + @param outlen [in/out] Max size and resulting size of the digest + @param in The data you wish to hash + @param inlen The length of the data to hash (octets) + @param ... tuples of (data,len) pairs to hash, terminated with a (NULL,x) (x=don't care) + @return CRYPT_OK if successful +*/ +int hash_memory_multi(int hash, unsigned char *out, unsigned long *outlen, + const unsigned char *in, unsigned long inlen, ...) +{ + hash_state *md; + int err; + va_list args; + const unsigned char *curptr; + unsigned long curlen; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + if ((err = hash_is_valid(hash)) != CRYPT_OK) { + return err; + } + + if (*outlen < hash_descriptor[hash].hashsize) { + *outlen = hash_descriptor[hash].hashsize; + return CRYPT_BUFFER_OVERFLOW; + } + + md = XMALLOC(sizeof(hash_state)); + if (md == NULL) { + return CRYPT_MEM; + } + + if ((err = hash_descriptor[hash].init(md)) != CRYPT_OK) { + goto LBL_ERR; + } + + va_start(args, inlen); + curptr = in; + curlen = inlen; + for (;;) { + /* process buf */ + if ((err = hash_descriptor[hash].process(md, curptr, curlen)) != CRYPT_OK) { + goto LBL_ERR; + } + /* step to next */ + curptr = va_arg(args, const unsigned char*); + if (curptr == NULL) { + break; + } + curlen = va_arg(args, unsigned long); + } + err = hash_descriptor[hash].done(md, out); + *outlen = hash_descriptor[hash].hashsize; +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(md, sizeof(hash_state)); +#endif + XFREE(md); + va_end(args); + return err; +} +#endif /* #ifdef LTC_HASH_HELPERS */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/md2.c b/fsbl/lib/libtomcrypt/src/hashes/md2.c new file mode 100644 index 000000000..36cc8aeca --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/md2.c @@ -0,0 +1,250 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @param md2.c + LTC_MD2 (RFC 1319) hash function implementation by Tom St Denis +*/ + +#ifdef LTC_MD2 + +const struct ltc_hash_descriptor md2_desc = +{ + "md2", + 7, + 16, + 16, + + /* OID */ + { 1, 2, 840, 113549, 2, 2, }, + 6, + + &md2_init, + &md2_process, + &md2_done, + &md2_test, + NULL +}; + +static const unsigned char PI_SUBST[256] = { + 41, 46, 67, 201, 162, 216, 124, 1, 61, 54, 84, 161, 236, 240, 6, + 19, 98, 167, 5, 243, 192, 199, 115, 140, 152, 147, 43, 217, 188, + 76, 130, 202, 30, 155, 87, 60, 253, 212, 224, 22, 103, 66, 111, 24, + 138, 23, 229, 18, 190, 78, 196, 214, 218, 158, 222, 73, 160, 251, + 245, 142, 187, 47, 238, 122, 169, 104, 121, 145, 21, 178, 7, 63, + 148, 194, 16, 137, 11, 34, 95, 33, 128, 127, 93, 154, 90, 144, 50, + 39, 53, 62, 204, 231, 191, 247, 151, 3, 255, 25, 48, 179, 72, 165, + 181, 209, 215, 94, 146, 42, 172, 86, 170, 198, 79, 184, 56, 210, + 150, 164, 125, 182, 118, 252, 107, 226, 156, 116, 4, 241, 69, 157, + 112, 89, 100, 113, 135, 32, 134, 91, 207, 101, 230, 45, 168, 2, 27, + 96, 37, 173, 174, 176, 185, 246, 28, 70, 97, 105, 52, 64, 126, 15, + 85, 71, 163, 35, 221, 81, 175, 58, 195, 92, 249, 206, 186, 197, + 234, 38, 44, 83, 13, 110, 133, 40, 132, 9, 211, 223, 205, 244, 65, + 129, 77, 82, 106, 220, 55, 200, 108, 193, 171, 250, 36, 225, 123, + 8, 12, 189, 177, 74, 120, 136, 149, 139, 227, 99, 232, 109, 233, + 203, 213, 254, 59, 0, 29, 57, 242, 239, 183, 14, 102, 88, 208, 228, + 166, 119, 114, 248, 235, 117, 75, 10, 49, 68, 80, 180, 143, 237, + 31, 26, 219, 153, 141, 51, 159, 17, 131, 20 +}; + +/* adds 16 bytes to the checksum */ +static void md2_update_chksum(hash_state *md) +{ + int j; + unsigned char L; + L = md->md2.chksum[15]; + for (j = 0; j < 16; j++) { + +/* caution, the RFC says its "C[j] = S[M[i*16+j] xor L]" but the reference source code [and test vectors] say + otherwise. +*/ + L = (md->md2.chksum[j] ^= PI_SUBST[(int)(md->md2.buf[j] ^ L)] & 255); + } +} + +static void md2_compress(hash_state *md) +{ + int j, k; + unsigned char t; + + /* copy block */ + for (j = 0; j < 16; j++) { + md->md2.X[16+j] = md->md2.buf[j]; + md->md2.X[32+j] = md->md2.X[j] ^ md->md2.X[16+j]; + } + + t = (unsigned char)0; + + /* do 18 rounds */ + for (j = 0; j < 18; j++) { + for (k = 0; k < 48; k++) { + t = (md->md2.X[k] ^= PI_SUBST[(int)(t & 255)]); + } + t = (t + (unsigned char)j) & 255; + } +} + +/** + Initialize the hash state + @param md The hash state you wish to initialize + @return CRYPT_OK if successful +*/ +int md2_init(hash_state *md) +{ + LTC_ARGCHK(md != NULL); + + /* LTC_MD2 uses a zero'ed state... */ + zeromem(md->md2.X, sizeof(md->md2.X)); + zeromem(md->md2.chksum, sizeof(md->md2.chksum)); + zeromem(md->md2.buf, sizeof(md->md2.buf)); + md->md2.curlen = 0; + return CRYPT_OK; +} + +/** + Process a block of memory though the hash + @param md The hash state + @param in The data to hash + @param inlen The length of the data (octets) + @return CRYPT_OK if successful +*/ +int md2_process(hash_state *md, const unsigned char *in, unsigned long inlen) +{ + unsigned long n; + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(in != NULL); + if (md-> md2 .curlen > sizeof(md-> md2 .buf)) { + return CRYPT_INVALID_ARG; + } + while (inlen > 0) { + n = MIN(inlen, (16 - md->md2.curlen)); + XMEMCPY(md->md2.buf + md->md2.curlen, in, (size_t)n); + md->md2.curlen += n; + in += n; + inlen -= n; + + /* is 16 bytes full? */ + if (md->md2.curlen == 16) { + md2_compress(md); + md2_update_chksum(md); + md->md2.curlen = 0; + } + } + return CRYPT_OK; +} + +/** + Terminate the hash to get the digest + @param md The hash state + @param out [out] The destination of the hash (16 bytes) + @return CRYPT_OK if successful +*/ +int md2_done(hash_state * md, unsigned char *out) +{ + unsigned long i, k; + + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(out != NULL); + + if (md->md2.curlen >= sizeof(md->md2.buf)) { + return CRYPT_INVALID_ARG; + } + + + /* pad the message */ + k = 16 - md->md2.curlen; + for (i = md->md2.curlen; i < 16; i++) { + md->md2.buf[i] = (unsigned char)k; + } + + /* hash and update */ + md2_compress(md); + md2_update_chksum(md); + + /* hash checksum */ + XMEMCPY(md->md2.buf, md->md2.chksum, 16); + md2_compress(md); + + /* output is lower 16 bytes of X */ + XMEMCPY(out, md->md2.X, 16); + +#ifdef LTC_CLEAN_STACK + zeromem(md, sizeof(hash_state)); +#endif + return CRYPT_OK; +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int md2_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const struct { + const char *msg; + unsigned char hash[16]; + } tests[] = { + { "", + {0x83,0x50,0xe5,0xa3,0xe2,0x4c,0x15,0x3d, + 0xf2,0x27,0x5c,0x9f,0x80,0x69,0x27,0x73 + } + }, + { "a", + {0x32,0xec,0x01,0xec,0x4a,0x6d,0xac,0x72, + 0xc0,0xab,0x96,0xfb,0x34,0xc0,0xb5,0xd1 + } + }, + { "message digest", + {0xab,0x4f,0x49,0x6b,0xfb,0x2a,0x53,0x0b, + 0x21,0x9f,0xf3,0x30,0x31,0xfe,0x06,0xb0 + } + }, + { "abcdefghijklmnopqrstuvwxyz", + {0x4e,0x8d,0xdf,0xf3,0x65,0x02,0x92,0xab, + 0x5a,0x41,0x08,0xc3,0xaa,0x47,0x94,0x0b + } + }, + { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", + {0xda,0x33,0xde,0xf2,0xa4,0x2d,0xf1,0x39, + 0x75,0x35,0x28,0x46,0xc3,0x03,0x38,0xcd + } + }, + { "12345678901234567890123456789012345678901234567890123456789012345678901234567890", + {0xd5,0x97,0x6f,0x79,0xd8,0x3d,0x3a,0x0d, + 0xc9,0x80,0x6c,0x3c,0x66,0xf3,0xef,0xd8 + } + } + }; + + int i; + unsigned char tmp[16]; + hash_state md; + + for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { + md2_init(&md); + md2_process(&md, (unsigned char*)tests[i].msg, (unsigned long)strlen(tests[i].msg)); + md2_done(&md, tmp); + if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "MD2", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; + #endif +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/md4.c b/fsbl/lib/libtomcrypt/src/hashes/md4.c new file mode 100644 index 000000000..09b6e31fc --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/md4.c @@ -0,0 +1,306 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @param md4.c + Submitted by Dobes Vandermeer (dobes@smartt.com) +*/ + +#ifdef LTC_MD4 + +const struct ltc_hash_descriptor md4_desc = +{ + "md4", + 6, + 16, + 64, + + /* OID */ + { 1, 2, 840, 113549, 2, 4, }, + 6, + + &md4_init, + &md4_process, + &md4_done, + &md4_test, + NULL +}; + +#define S11 3 +#define S12 7 +#define S13 11 +#define S14 19 +#define S21 3 +#define S22 5 +#define S23 9 +#define S24 13 +#define S31 3 +#define S32 9 +#define S33 11 +#define S34 15 + +/* F, G and H are basic LTC_MD4 functions. */ +#define F(x, y, z) (z ^ (x & (y ^ z))) +#define G(x, y, z) ((x & y) | (z & (x | y))) +#define H(x, y, z) ((x) ^ (y) ^ (z)) + +/* ROTATE_LEFT rotates x left n bits. */ +#define ROTATE_LEFT(x, n) ROLc(x, n) + +/* FF, GG and HH are transformations for rounds 1, 2 and 3 */ +/* Rotation is separate from addition to prevent recomputation */ + +#define FF(a, b, c, d, x, s) { \ + (a) += F ((b), (c), (d)) + (x); \ + (a) = ROTATE_LEFT ((a), (s)); \ + } +#define GG(a, b, c, d, x, s) { \ + (a) += G ((b), (c), (d)) + (x) + 0x5a827999UL; \ + (a) = ROTATE_LEFT ((a), (s)); \ + } +#define HH(a, b, c, d, x, s) { \ + (a) += H ((b), (c), (d)) + (x) + 0x6ed9eba1UL; \ + (a) = ROTATE_LEFT ((a), (s)); \ + } + +#ifdef LTC_CLEAN_STACK +static int _md4_compress(hash_state *md, unsigned char *buf) +#else +static int md4_compress(hash_state *md, unsigned char *buf) +#endif +{ + ulong32 x[16], a, b, c, d; + int i; + + /* copy state */ + a = md->md4.state[0]; + b = md->md4.state[1]; + c = md->md4.state[2]; + d = md->md4.state[3]; + + /* copy the state into 512-bits into W[0..15] */ + for (i = 0; i < 16; i++) { + LOAD32L(x[i], buf + (4*i)); + } + + /* Round 1 */ + FF (a, b, c, d, x[ 0], S11); /* 1 */ + FF (d, a, b, c, x[ 1], S12); /* 2 */ + FF (c, d, a, b, x[ 2], S13); /* 3 */ + FF (b, c, d, a, x[ 3], S14); /* 4 */ + FF (a, b, c, d, x[ 4], S11); /* 5 */ + FF (d, a, b, c, x[ 5], S12); /* 6 */ + FF (c, d, a, b, x[ 6], S13); /* 7 */ + FF (b, c, d, a, x[ 7], S14); /* 8 */ + FF (a, b, c, d, x[ 8], S11); /* 9 */ + FF (d, a, b, c, x[ 9], S12); /* 10 */ + FF (c, d, a, b, x[10], S13); /* 11 */ + FF (b, c, d, a, x[11], S14); /* 12 */ + FF (a, b, c, d, x[12], S11); /* 13 */ + FF (d, a, b, c, x[13], S12); /* 14 */ + FF (c, d, a, b, x[14], S13); /* 15 */ + FF (b, c, d, a, x[15], S14); /* 16 */ + + /* Round 2 */ + GG (a, b, c, d, x[ 0], S21); /* 17 */ + GG (d, a, b, c, x[ 4], S22); /* 18 */ + GG (c, d, a, b, x[ 8], S23); /* 19 */ + GG (b, c, d, a, x[12], S24); /* 20 */ + GG (a, b, c, d, x[ 1], S21); /* 21 */ + GG (d, a, b, c, x[ 5], S22); /* 22 */ + GG (c, d, a, b, x[ 9], S23); /* 23 */ + GG (b, c, d, a, x[13], S24); /* 24 */ + GG (a, b, c, d, x[ 2], S21); /* 25 */ + GG (d, a, b, c, x[ 6], S22); /* 26 */ + GG (c, d, a, b, x[10], S23); /* 27 */ + GG (b, c, d, a, x[14], S24); /* 28 */ + GG (a, b, c, d, x[ 3], S21); /* 29 */ + GG (d, a, b, c, x[ 7], S22); /* 30 */ + GG (c, d, a, b, x[11], S23); /* 31 */ + GG (b, c, d, a, x[15], S24); /* 32 */ + + /* Round 3 */ + HH (a, b, c, d, x[ 0], S31); /* 33 */ + HH (d, a, b, c, x[ 8], S32); /* 34 */ + HH (c, d, a, b, x[ 4], S33); /* 35 */ + HH (b, c, d, a, x[12], S34); /* 36 */ + HH (a, b, c, d, x[ 2], S31); /* 37 */ + HH (d, a, b, c, x[10], S32); /* 38 */ + HH (c, d, a, b, x[ 6], S33); /* 39 */ + HH (b, c, d, a, x[14], S34); /* 40 */ + HH (a, b, c, d, x[ 1], S31); /* 41 */ + HH (d, a, b, c, x[ 9], S32); /* 42 */ + HH (c, d, a, b, x[ 5], S33); /* 43 */ + HH (b, c, d, a, x[13], S34); /* 44 */ + HH (a, b, c, d, x[ 3], S31); /* 45 */ + HH (d, a, b, c, x[11], S32); /* 46 */ + HH (c, d, a, b, x[ 7], S33); /* 47 */ + HH (b, c, d, a, x[15], S34); /* 48 */ + + + /* Update our state */ + md->md4.state[0] = md->md4.state[0] + a; + md->md4.state[1] = md->md4.state[1] + b; + md->md4.state[2] = md->md4.state[2] + c; + md->md4.state[3] = md->md4.state[3] + d; + + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +static int md4_compress(hash_state *md, unsigned char *buf) +{ + int err; + err = _md4_compress(md, buf); + burn_stack(sizeof(ulong32) * 20 + sizeof(int)); + return err; +} +#endif + +/** + Initialize the hash state + @param md The hash state you wish to initialize + @return CRYPT_OK if successful +*/ +int md4_init(hash_state * md) +{ + LTC_ARGCHK(md != NULL); + md->md4.state[0] = 0x67452301UL; + md->md4.state[1] = 0xefcdab89UL; + md->md4.state[2] = 0x98badcfeUL; + md->md4.state[3] = 0x10325476UL; + md->md4.length = 0; + md->md4.curlen = 0; + return CRYPT_OK; +} + +/** + Process a block of memory though the hash + @param md The hash state + @param in The data to hash + @param inlen The length of the data (octets) + @return CRYPT_OK if successful +*/ +HASH_PROCESS(md4_process, md4_compress, md4, 64) + +/** + Terminate the hash to get the digest + @param md The hash state + @param out [out] The destination of the hash (16 bytes) + @return CRYPT_OK if successful +*/ +int md4_done(hash_state * md, unsigned char *out) +{ + int i; + + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(out != NULL); + + if (md->md4.curlen >= sizeof(md->md4.buf)) { + return CRYPT_INVALID_ARG; + } + + /* increase the length of the message */ + md->md4.length += md->md4.curlen * 8; + + /* append the '1' bit */ + md->md4.buf[md->md4.curlen++] = (unsigned char)0x80; + + /* if the length is currently above 56 bytes we append zeros + * then compress. Then we can fall back to padding zeros and length + * encoding like normal. + */ + if (md->md4.curlen > 56) { + while (md->md4.curlen < 64) { + md->md4.buf[md->md4.curlen++] = (unsigned char)0; + } + md4_compress(md, md->md4.buf); + md->md4.curlen = 0; + } + + /* pad upto 56 bytes of zeroes */ + while (md->md4.curlen < 56) { + md->md4.buf[md->md4.curlen++] = (unsigned char)0; + } + + /* store length */ + STORE64L(md->md4.length, md->md4.buf+56); + md4_compress(md, md->md4.buf); + + /* copy output */ + for (i = 0; i < 4; i++) { + STORE32L(md->md4.state[i], out+(4*i)); + } +#ifdef LTC_CLEAN_STACK + zeromem(md, sizeof(hash_state)); +#endif + return CRYPT_OK; +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int md4_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const struct md4_test_case { + const char *input; + unsigned char hash[16]; + } tests[] = { + { "", + {0x31, 0xd6, 0xcf, 0xe0, 0xd1, 0x6a, 0xe9, 0x31, + 0xb7, 0x3c, 0x59, 0xd7, 0xe0, 0xc0, 0x89, 0xc0} }, + { "a", + {0xbd, 0xe5, 0x2c, 0xb3, 0x1d, 0xe3, 0x3e, 0x46, + 0x24, 0x5e, 0x05, 0xfb, 0xdb, 0xd6, 0xfb, 0x24} }, + { "abc", + {0xa4, 0x48, 0x01, 0x7a, 0xaf, 0x21, 0xd8, 0x52, + 0x5f, 0xc1, 0x0a, 0xe8, 0x7a, 0xa6, 0x72, 0x9d} }, + { "message digest", + {0xd9, 0x13, 0x0a, 0x81, 0x64, 0x54, 0x9f, 0xe8, + 0x18, 0x87, 0x48, 0x06, 0xe1, 0xc7, 0x01, 0x4b} }, + { "abcdefghijklmnopqrstuvwxyz", + {0xd7, 0x9e, 0x1c, 0x30, 0x8a, 0xa5, 0xbb, 0xcd, + 0xee, 0xa8, 0xed, 0x63, 0xdf, 0x41, 0x2d, 0xa9} }, + { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", + {0x04, 0x3f, 0x85, 0x82, 0xf2, 0x41, 0xdb, 0x35, + 0x1c, 0xe6, 0x27, 0xe1, 0x53, 0xe7, 0xf0, 0xe4} }, + { "12345678901234567890123456789012345678901234567890123456789012345678901234567890", + {0xe3, 0x3b, 0x4d, 0xdc, 0x9c, 0x38, 0xf2, 0x19, + 0x9c, 0x3e, 0x7b, 0x16, 0x4f, 0xcc, 0x05, 0x36} }, + }; + + int i; + unsigned char tmp[16]; + hash_state md; + + for(i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { + md4_init(&md); + md4_process(&md, (unsigned char *)tests[i].input, (unsigned long)strlen(tests[i].input)); + md4_done(&md, tmp); + if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "MD4", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + + } + return CRYPT_OK; + #endif +} + +#endif + + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/md5.c b/fsbl/lib/libtomcrypt/src/hashes/md5.c new file mode 100644 index 000000000..511329a9a --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/md5.c @@ -0,0 +1,366 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + + +/** + @file md5.c + LTC_MD5 hash function by Tom St Denis +*/ + +#ifdef LTC_MD5 + +const struct ltc_hash_descriptor md5_desc = +{ + "md5", + 3, + 16, + 64, + + /* OID */ + { 1, 2, 840, 113549, 2, 5, }, + 6, + + &md5_init, + &md5_process, + &md5_done, + &md5_test, + NULL +}; + +#define F(x,y,z) (z ^ (x & (y ^ z))) +#define G(x,y,z) (y ^ (z & (y ^ x))) +#define H(x,y,z) (x^y^z) +#define I(x,y,z) (y^(x|(~z))) + +#ifdef LTC_SMALL_CODE + +#define FF(a,b,c,d,M,s,t) \ + a = (a + F(b,c,d) + M + t); a = ROL(a, s) + b; + +#define GG(a,b,c,d,M,s,t) \ + a = (a + G(b,c,d) + M + t); a = ROL(a, s) + b; + +#define HH(a,b,c,d,M,s,t) \ + a = (a + H(b,c,d) + M + t); a = ROL(a, s) + b; + +#define II(a,b,c,d,M,s,t) \ + a = (a + I(b,c,d) + M + t); a = ROL(a, s) + b; + +static const unsigned char Worder[64] = { + 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15, + 1,6,11,0,5,10,15,4,9,14,3,8,13,2,7,12, + 5,8,11,14,1,4,7,10,13,0,3,6,9,12,15,2, + 0,7,14,5,12,3,10,1,8,15,6,13,4,11,2,9 +}; + +static const unsigned char Rorder[64] = { + 7,12,17,22,7,12,17,22,7,12,17,22,7,12,17,22, + 5,9,14,20,5,9,14,20,5,9,14,20,5,9,14,20, + 4,11,16,23,4,11,16,23,4,11,16,23,4,11,16,23, + 6,10,15,21,6,10,15,21,6,10,15,21,6,10,15,21 +}; + +static const ulong32 Korder[64] = { +0xd76aa478UL, 0xe8c7b756UL, 0x242070dbUL, 0xc1bdceeeUL, 0xf57c0fafUL, 0x4787c62aUL, 0xa8304613UL, 0xfd469501UL, +0x698098d8UL, 0x8b44f7afUL, 0xffff5bb1UL, 0x895cd7beUL, 0x6b901122UL, 0xfd987193UL, 0xa679438eUL, 0x49b40821UL, +0xf61e2562UL, 0xc040b340UL, 0x265e5a51UL, 0xe9b6c7aaUL, 0xd62f105dUL, 0x02441453UL, 0xd8a1e681UL, 0xe7d3fbc8UL, +0x21e1cde6UL, 0xc33707d6UL, 0xf4d50d87UL, 0x455a14edUL, 0xa9e3e905UL, 0xfcefa3f8UL, 0x676f02d9UL, 0x8d2a4c8aUL, +0xfffa3942UL, 0x8771f681UL, 0x6d9d6122UL, 0xfde5380cUL, 0xa4beea44UL, 0x4bdecfa9UL, 0xf6bb4b60UL, 0xbebfbc70UL, +0x289b7ec6UL, 0xeaa127faUL, 0xd4ef3085UL, 0x04881d05UL, 0xd9d4d039UL, 0xe6db99e5UL, 0x1fa27cf8UL, 0xc4ac5665UL, +0xf4292244UL, 0x432aff97UL, 0xab9423a7UL, 0xfc93a039UL, 0x655b59c3UL, 0x8f0ccc92UL, 0xffeff47dUL, 0x85845dd1UL, +0x6fa87e4fUL, 0xfe2ce6e0UL, 0xa3014314UL, 0x4e0811a1UL, 0xf7537e82UL, 0xbd3af235UL, 0x2ad7d2bbUL, 0xeb86d391UL +}; + +#else + +#define FF(a,b,c,d,M,s,t) \ + a = (a + F(b,c,d) + M + t); a = ROLc(a, s) + b; + +#define GG(a,b,c,d,M,s,t) \ + a = (a + G(b,c,d) + M + t); a = ROLc(a, s) + b; + +#define HH(a,b,c,d,M,s,t) \ + a = (a + H(b,c,d) + M + t); a = ROLc(a, s) + b; + +#define II(a,b,c,d,M,s,t) \ + a = (a + I(b,c,d) + M + t); a = ROLc(a, s) + b; + + +#endif + +#ifdef LTC_CLEAN_STACK +static int _md5_compress(hash_state *md, unsigned char *buf) +#else +static int md5_compress(hash_state *md, unsigned char *buf) +#endif +{ + ulong32 i, W[16], a, b, c, d; +#ifdef LTC_SMALL_CODE + ulong32 t; +#endif + + /* copy the state into 512-bits into W[0..15] */ + for (i = 0; i < 16; i++) { + LOAD32L(W[i], buf + (4*i)); + } + + /* copy state */ + a = md->md5.state[0]; + b = md->md5.state[1]; + c = md->md5.state[2]; + d = md->md5.state[3]; + +#ifdef LTC_SMALL_CODE + for (i = 0; i < 16; ++i) { + FF(a,b,c,d,W[Worder[i]],Rorder[i],Korder[i]); + t = d; d = c; c = b; b = a; a = t; + } + + for (; i < 32; ++i) { + GG(a,b,c,d,W[Worder[i]],Rorder[i],Korder[i]); + t = d; d = c; c = b; b = a; a = t; + } + + for (; i < 48; ++i) { + HH(a,b,c,d,W[Worder[i]],Rorder[i],Korder[i]); + t = d; d = c; c = b; b = a; a = t; + } + + for (; i < 64; ++i) { + II(a,b,c,d,W[Worder[i]],Rorder[i],Korder[i]); + t = d; d = c; c = b; b = a; a = t; + } + +#else + FF(a,b,c,d,W[0],7,0xd76aa478UL) + FF(d,a,b,c,W[1],12,0xe8c7b756UL) + FF(c,d,a,b,W[2],17,0x242070dbUL) + FF(b,c,d,a,W[3],22,0xc1bdceeeUL) + FF(a,b,c,d,W[4],7,0xf57c0fafUL) + FF(d,a,b,c,W[5],12,0x4787c62aUL) + FF(c,d,a,b,W[6],17,0xa8304613UL) + FF(b,c,d,a,W[7],22,0xfd469501UL) + FF(a,b,c,d,W[8],7,0x698098d8UL) + FF(d,a,b,c,W[9],12,0x8b44f7afUL) + FF(c,d,a,b,W[10],17,0xffff5bb1UL) + FF(b,c,d,a,W[11],22,0x895cd7beUL) + FF(a,b,c,d,W[12],7,0x6b901122UL) + FF(d,a,b,c,W[13],12,0xfd987193UL) + FF(c,d,a,b,W[14],17,0xa679438eUL) + FF(b,c,d,a,W[15],22,0x49b40821UL) + GG(a,b,c,d,W[1],5,0xf61e2562UL) + GG(d,a,b,c,W[6],9,0xc040b340UL) + GG(c,d,a,b,W[11],14,0x265e5a51UL) + GG(b,c,d,a,W[0],20,0xe9b6c7aaUL) + GG(a,b,c,d,W[5],5,0xd62f105dUL) + GG(d,a,b,c,W[10],9,0x02441453UL) + GG(c,d,a,b,W[15],14,0xd8a1e681UL) + GG(b,c,d,a,W[4],20,0xe7d3fbc8UL) + GG(a,b,c,d,W[9],5,0x21e1cde6UL) + GG(d,a,b,c,W[14],9,0xc33707d6UL) + GG(c,d,a,b,W[3],14,0xf4d50d87UL) + GG(b,c,d,a,W[8],20,0x455a14edUL) + GG(a,b,c,d,W[13],5,0xa9e3e905UL) + GG(d,a,b,c,W[2],9,0xfcefa3f8UL) + GG(c,d,a,b,W[7],14,0x676f02d9UL) + GG(b,c,d,a,W[12],20,0x8d2a4c8aUL) + HH(a,b,c,d,W[5],4,0xfffa3942UL) + HH(d,a,b,c,W[8],11,0x8771f681UL) + HH(c,d,a,b,W[11],16,0x6d9d6122UL) + HH(b,c,d,a,W[14],23,0xfde5380cUL) + HH(a,b,c,d,W[1],4,0xa4beea44UL) + HH(d,a,b,c,W[4],11,0x4bdecfa9UL) + HH(c,d,a,b,W[7],16,0xf6bb4b60UL) + HH(b,c,d,a,W[10],23,0xbebfbc70UL) + HH(a,b,c,d,W[13],4,0x289b7ec6UL) + HH(d,a,b,c,W[0],11,0xeaa127faUL) + HH(c,d,a,b,W[3],16,0xd4ef3085UL) + HH(b,c,d,a,W[6],23,0x04881d05UL) + HH(a,b,c,d,W[9],4,0xd9d4d039UL) + HH(d,a,b,c,W[12],11,0xe6db99e5UL) + HH(c,d,a,b,W[15],16,0x1fa27cf8UL) + HH(b,c,d,a,W[2],23,0xc4ac5665UL) + II(a,b,c,d,W[0],6,0xf4292244UL) + II(d,a,b,c,W[7],10,0x432aff97UL) + II(c,d,a,b,W[14],15,0xab9423a7UL) + II(b,c,d,a,W[5],21,0xfc93a039UL) + II(a,b,c,d,W[12],6,0x655b59c3UL) + II(d,a,b,c,W[3],10,0x8f0ccc92UL) + II(c,d,a,b,W[10],15,0xffeff47dUL) + II(b,c,d,a,W[1],21,0x85845dd1UL) + II(a,b,c,d,W[8],6,0x6fa87e4fUL) + II(d,a,b,c,W[15],10,0xfe2ce6e0UL) + II(c,d,a,b,W[6],15,0xa3014314UL) + II(b,c,d,a,W[13],21,0x4e0811a1UL) + II(a,b,c,d,W[4],6,0xf7537e82UL) + II(d,a,b,c,W[11],10,0xbd3af235UL) + II(c,d,a,b,W[2],15,0x2ad7d2bbUL) + II(b,c,d,a,W[9],21,0xeb86d391UL) +#endif + + md->md5.state[0] = md->md5.state[0] + a; + md->md5.state[1] = md->md5.state[1] + b; + md->md5.state[2] = md->md5.state[2] + c; + md->md5.state[3] = md->md5.state[3] + d; + + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +static int md5_compress(hash_state *md, unsigned char *buf) +{ + int err; + err = _md5_compress(md, buf); + burn_stack(sizeof(ulong32) * 21); + return err; +} +#endif + +/** + Initialize the hash state + @param md The hash state you wish to initialize + @return CRYPT_OK if successful +*/ +int md5_init(hash_state * md) +{ + LTC_ARGCHK(md != NULL); + md->md5.state[0] = 0x67452301UL; + md->md5.state[1] = 0xefcdab89UL; + md->md5.state[2] = 0x98badcfeUL; + md->md5.state[3] = 0x10325476UL; + md->md5.curlen = 0; + md->md5.length = 0; + return CRYPT_OK; +} + +/** + Process a block of memory though the hash + @param md The hash state + @param in The data to hash + @param inlen The length of the data (octets) + @return CRYPT_OK if successful +*/ +HASH_PROCESS(md5_process, md5_compress, md5, 64) + +/** + Terminate the hash to get the digest + @param md The hash state + @param out [out] The destination of the hash (16 bytes) + @return CRYPT_OK if successful +*/ +int md5_done(hash_state * md, unsigned char *out) +{ + int i; + + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(out != NULL); + + if (md->md5.curlen >= sizeof(md->md5.buf)) { + return CRYPT_INVALID_ARG; + } + + + /* increase the length of the message */ + md->md5.length += md->md5.curlen * 8; + + /* append the '1' bit */ + md->md5.buf[md->md5.curlen++] = (unsigned char)0x80; + + /* if the length is currently above 56 bytes we append zeros + * then compress. Then we can fall back to padding zeros and length + * encoding like normal. + */ + if (md->md5.curlen > 56) { + while (md->md5.curlen < 64) { + md->md5.buf[md->md5.curlen++] = (unsigned char)0; + } + md5_compress(md, md->md5.buf); + md->md5.curlen = 0; + } + + /* pad upto 56 bytes of zeroes */ + while (md->md5.curlen < 56) { + md->md5.buf[md->md5.curlen++] = (unsigned char)0; + } + + /* store length */ + STORE64L(md->md5.length, md->md5.buf+56); + md5_compress(md, md->md5.buf); + + /* copy output */ + for (i = 0; i < 4; i++) { + STORE32L(md->md5.state[i], out+(4*i)); + } +#ifdef LTC_CLEAN_STACK + zeromem(md, sizeof(hash_state)); +#endif + return CRYPT_OK; +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int md5_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const struct { + const char *msg; + unsigned char hash[16]; + } tests[] = { + { "", + { 0xd4, 0x1d, 0x8c, 0xd9, 0x8f, 0x00, 0xb2, 0x04, + 0xe9, 0x80, 0x09, 0x98, 0xec, 0xf8, 0x42, 0x7e } }, + { "a", + {0x0c, 0xc1, 0x75, 0xb9, 0xc0, 0xf1, 0xb6, 0xa8, + 0x31, 0xc3, 0x99, 0xe2, 0x69, 0x77, 0x26, 0x61 } }, + { "abc", + { 0x90, 0x01, 0x50, 0x98, 0x3c, 0xd2, 0x4f, 0xb0, + 0xd6, 0x96, 0x3f, 0x7d, 0x28, 0xe1, 0x7f, 0x72 } }, + { "message digest", + { 0xf9, 0x6b, 0x69, 0x7d, 0x7c, 0xb7, 0x93, 0x8d, + 0x52, 0x5a, 0x2f, 0x31, 0xaa, 0xf1, 0x61, 0xd0 } }, + { "abcdefghijklmnopqrstuvwxyz", + { 0xc3, 0xfc, 0xd3, 0xd7, 0x61, 0x92, 0xe4, 0x00, + 0x7d, 0xfb, 0x49, 0x6c, 0xca, 0x67, 0xe1, 0x3b } }, + { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", + { 0xd1, 0x74, 0xab, 0x98, 0xd2, 0x77, 0xd9, 0xf5, + 0xa5, 0x61, 0x1c, 0x2c, 0x9f, 0x41, 0x9d, 0x9f } }, + { "12345678901234567890123456789012345678901234567890123456789012345678901234567890", + { 0x57, 0xed, 0xf4, 0xa2, 0x2b, 0xe3, 0xc9, 0x55, + 0xac, 0x49, 0xda, 0x2e, 0x21, 0x07, 0xb6, 0x7a } }, + { NULL, { 0 } } + }; + + int i; + unsigned char tmp[16]; + hash_state md; + + for (i = 0; tests[i].msg != NULL; i++) { + md5_init(&md); + md5_process(&md, (unsigned char *)tests[i].msg, (unsigned long)strlen(tests[i].msg)); + md5_done(&md, tmp); + if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "MD5", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; + #endif +} + +#endif + + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/rmd128.c b/fsbl/lib/libtomcrypt/src/hashes/rmd128.c new file mode 100644 index 000000000..df1af1ad5 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/rmd128.c @@ -0,0 +1,406 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @param rmd128.c + RMD128 Hash function +*/ + +/* Implementation of LTC_RIPEMD-128 based on the source by Antoon Bosselaers, ESAT-COSIC + * + * This source has been radically overhauled to be portable and work within + * the LibTomCrypt API by Tom St Denis + */ + +#ifdef LTC_RIPEMD128 + +const struct ltc_hash_descriptor rmd128_desc = +{ + "rmd128", + 8, + 16, + 64, + + /* OID */ + { 1, 0, 10118, 3, 0, 50 }, + 6, + + &rmd128_init, + &rmd128_process, + &rmd128_done, + &rmd128_test, + NULL +}; + +/* the four basic functions F(), G() and H() */ +#define F(x, y, z) ((x) ^ (y) ^ (z)) +#define G(x, y, z) (((x) & (y)) | (~(x) & (z))) +#define H(x, y, z) (((x) | ~(y)) ^ (z)) +#define I(x, y, z) (((x) & (z)) | ((y) & ~(z))) + +/* the eight basic operations FF() through III() */ +#define FF(a, b, c, d, x, s) \ + (a) += F((b), (c), (d)) + (x);\ + (a) = ROLc((a), (s)); + +#define GG(a, b, c, d, x, s) \ + (a) += G((b), (c), (d)) + (x) + 0x5a827999UL;\ + (a) = ROLc((a), (s)); + +#define HH(a, b, c, d, x, s) \ + (a) += H((b), (c), (d)) + (x) + 0x6ed9eba1UL;\ + (a) = ROLc((a), (s)); + +#define II(a, b, c, d, x, s) \ + (a) += I((b), (c), (d)) + (x) + 0x8f1bbcdcUL;\ + (a) = ROLc((a), (s)); + +#define FFF(a, b, c, d, x, s) \ + (a) += F((b), (c), (d)) + (x);\ + (a) = ROLc((a), (s)); + +#define GGG(a, b, c, d, x, s) \ + (a) += G((b), (c), (d)) + (x) + 0x6d703ef3UL;\ + (a) = ROLc((a), (s)); + +#define HHH(a, b, c, d, x, s) \ + (a) += H((b), (c), (d)) + (x) + 0x5c4dd124UL;\ + (a) = ROLc((a), (s)); + +#define III(a, b, c, d, x, s) \ + (a) += I((b), (c), (d)) + (x) + 0x50a28be6UL;\ + (a) = ROLc((a), (s)); + +#ifdef LTC_CLEAN_STACK +static int _rmd128_compress(hash_state *md, unsigned char *buf) +#else +static int rmd128_compress(hash_state *md, unsigned char *buf) +#endif +{ + ulong32 aa,bb,cc,dd,aaa,bbb,ccc,ddd,X[16]; + int i; + + /* load words X */ + for (i = 0; i < 16; i++){ + LOAD32L(X[i], buf + (4 * i)); + } + + /* load state */ + aa = aaa = md->rmd128.state[0]; + bb = bbb = md->rmd128.state[1]; + cc = ccc = md->rmd128.state[2]; + dd = ddd = md->rmd128.state[3]; + + /* round 1 */ + FF(aa, bb, cc, dd, X[ 0], 11); + FF(dd, aa, bb, cc, X[ 1], 14); + FF(cc, dd, aa, bb, X[ 2], 15); + FF(bb, cc, dd, aa, X[ 3], 12); + FF(aa, bb, cc, dd, X[ 4], 5); + FF(dd, aa, bb, cc, X[ 5], 8); + FF(cc, dd, aa, bb, X[ 6], 7); + FF(bb, cc, dd, aa, X[ 7], 9); + FF(aa, bb, cc, dd, X[ 8], 11); + FF(dd, aa, bb, cc, X[ 9], 13); + FF(cc, dd, aa, bb, X[10], 14); + FF(bb, cc, dd, aa, X[11], 15); + FF(aa, bb, cc, dd, X[12], 6); + FF(dd, aa, bb, cc, X[13], 7); + FF(cc, dd, aa, bb, X[14], 9); + FF(bb, cc, dd, aa, X[15], 8); + + /* round 2 */ + GG(aa, bb, cc, dd, X[ 7], 7); + GG(dd, aa, bb, cc, X[ 4], 6); + GG(cc, dd, aa, bb, X[13], 8); + GG(bb, cc, dd, aa, X[ 1], 13); + GG(aa, bb, cc, dd, X[10], 11); + GG(dd, aa, bb, cc, X[ 6], 9); + GG(cc, dd, aa, bb, X[15], 7); + GG(bb, cc, dd, aa, X[ 3], 15); + GG(aa, bb, cc, dd, X[12], 7); + GG(dd, aa, bb, cc, X[ 0], 12); + GG(cc, dd, aa, bb, X[ 9], 15); + GG(bb, cc, dd, aa, X[ 5], 9); + GG(aa, bb, cc, dd, X[ 2], 11); + GG(dd, aa, bb, cc, X[14], 7); + GG(cc, dd, aa, bb, X[11], 13); + GG(bb, cc, dd, aa, X[ 8], 12); + + /* round 3 */ + HH(aa, bb, cc, dd, X[ 3], 11); + HH(dd, aa, bb, cc, X[10], 13); + HH(cc, dd, aa, bb, X[14], 6); + HH(bb, cc, dd, aa, X[ 4], 7); + HH(aa, bb, cc, dd, X[ 9], 14); + HH(dd, aa, bb, cc, X[15], 9); + HH(cc, dd, aa, bb, X[ 8], 13); + HH(bb, cc, dd, aa, X[ 1], 15); + HH(aa, bb, cc, dd, X[ 2], 14); + HH(dd, aa, bb, cc, X[ 7], 8); + HH(cc, dd, aa, bb, X[ 0], 13); + HH(bb, cc, dd, aa, X[ 6], 6); + HH(aa, bb, cc, dd, X[13], 5); + HH(dd, aa, bb, cc, X[11], 12); + HH(cc, dd, aa, bb, X[ 5], 7); + HH(bb, cc, dd, aa, X[12], 5); + + /* round 4 */ + II(aa, bb, cc, dd, X[ 1], 11); + II(dd, aa, bb, cc, X[ 9], 12); + II(cc, dd, aa, bb, X[11], 14); + II(bb, cc, dd, aa, X[10], 15); + II(aa, bb, cc, dd, X[ 0], 14); + II(dd, aa, bb, cc, X[ 8], 15); + II(cc, dd, aa, bb, X[12], 9); + II(bb, cc, dd, aa, X[ 4], 8); + II(aa, bb, cc, dd, X[13], 9); + II(dd, aa, bb, cc, X[ 3], 14); + II(cc, dd, aa, bb, X[ 7], 5); + II(bb, cc, dd, aa, X[15], 6); + II(aa, bb, cc, dd, X[14], 8); + II(dd, aa, bb, cc, X[ 5], 6); + II(cc, dd, aa, bb, X[ 6], 5); + II(bb, cc, dd, aa, X[ 2], 12); + + /* parallel round 1 */ + III(aaa, bbb, ccc, ddd, X[ 5], 8); + III(ddd, aaa, bbb, ccc, X[14], 9); + III(ccc, ddd, aaa, bbb, X[ 7], 9); + III(bbb, ccc, ddd, aaa, X[ 0], 11); + III(aaa, bbb, ccc, ddd, X[ 9], 13); + III(ddd, aaa, bbb, ccc, X[ 2], 15); + III(ccc, ddd, aaa, bbb, X[11], 15); + III(bbb, ccc, ddd, aaa, X[ 4], 5); + III(aaa, bbb, ccc, ddd, X[13], 7); + III(ddd, aaa, bbb, ccc, X[ 6], 7); + III(ccc, ddd, aaa, bbb, X[15], 8); + III(bbb, ccc, ddd, aaa, X[ 8], 11); + III(aaa, bbb, ccc, ddd, X[ 1], 14); + III(ddd, aaa, bbb, ccc, X[10], 14); + III(ccc, ddd, aaa, bbb, X[ 3], 12); + III(bbb, ccc, ddd, aaa, X[12], 6); + + /* parallel round 2 */ + HHH(aaa, bbb, ccc, ddd, X[ 6], 9); + HHH(ddd, aaa, bbb, ccc, X[11], 13); + HHH(ccc, ddd, aaa, bbb, X[ 3], 15); + HHH(bbb, ccc, ddd, aaa, X[ 7], 7); + HHH(aaa, bbb, ccc, ddd, X[ 0], 12); + HHH(ddd, aaa, bbb, ccc, X[13], 8); + HHH(ccc, ddd, aaa, bbb, X[ 5], 9); + HHH(bbb, ccc, ddd, aaa, X[10], 11); + HHH(aaa, bbb, ccc, ddd, X[14], 7); + HHH(ddd, aaa, bbb, ccc, X[15], 7); + HHH(ccc, ddd, aaa, bbb, X[ 8], 12); + HHH(bbb, ccc, ddd, aaa, X[12], 7); + HHH(aaa, bbb, ccc, ddd, X[ 4], 6); + HHH(ddd, aaa, bbb, ccc, X[ 9], 15); + HHH(ccc, ddd, aaa, bbb, X[ 1], 13); + HHH(bbb, ccc, ddd, aaa, X[ 2], 11); + + /* parallel round 3 */ + GGG(aaa, bbb, ccc, ddd, X[15], 9); + GGG(ddd, aaa, bbb, ccc, X[ 5], 7); + GGG(ccc, ddd, aaa, bbb, X[ 1], 15); + GGG(bbb, ccc, ddd, aaa, X[ 3], 11); + GGG(aaa, bbb, ccc, ddd, X[ 7], 8); + GGG(ddd, aaa, bbb, ccc, X[14], 6); + GGG(ccc, ddd, aaa, bbb, X[ 6], 6); + GGG(bbb, ccc, ddd, aaa, X[ 9], 14); + GGG(aaa, bbb, ccc, ddd, X[11], 12); + GGG(ddd, aaa, bbb, ccc, X[ 8], 13); + GGG(ccc, ddd, aaa, bbb, X[12], 5); + GGG(bbb, ccc, ddd, aaa, X[ 2], 14); + GGG(aaa, bbb, ccc, ddd, X[10], 13); + GGG(ddd, aaa, bbb, ccc, X[ 0], 13); + GGG(ccc, ddd, aaa, bbb, X[ 4], 7); + GGG(bbb, ccc, ddd, aaa, X[13], 5); + + /* parallel round 4 */ + FFF(aaa, bbb, ccc, ddd, X[ 8], 15); + FFF(ddd, aaa, bbb, ccc, X[ 6], 5); + FFF(ccc, ddd, aaa, bbb, X[ 4], 8); + FFF(bbb, ccc, ddd, aaa, X[ 1], 11); + FFF(aaa, bbb, ccc, ddd, X[ 3], 14); + FFF(ddd, aaa, bbb, ccc, X[11], 14); + FFF(ccc, ddd, aaa, bbb, X[15], 6); + FFF(bbb, ccc, ddd, aaa, X[ 0], 14); + FFF(aaa, bbb, ccc, ddd, X[ 5], 6); + FFF(ddd, aaa, bbb, ccc, X[12], 9); + FFF(ccc, ddd, aaa, bbb, X[ 2], 12); + FFF(bbb, ccc, ddd, aaa, X[13], 9); + FFF(aaa, bbb, ccc, ddd, X[ 9], 12); + FFF(ddd, aaa, bbb, ccc, X[ 7], 5); + FFF(ccc, ddd, aaa, bbb, X[10], 15); + FFF(bbb, ccc, ddd, aaa, X[14], 8); + + /* combine results */ + ddd += cc + md->rmd128.state[1]; /* final result for MDbuf[0] */ + md->rmd128.state[1] = md->rmd128.state[2] + dd + aaa; + md->rmd128.state[2] = md->rmd128.state[3] + aa + bbb; + md->rmd128.state[3] = md->rmd128.state[0] + bb + ccc; + md->rmd128.state[0] = ddd; + + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +static int rmd128_compress(hash_state *md, unsigned char *buf) +{ + int err; + err = _rmd128_compress(md, buf); + burn_stack(sizeof(ulong32) * 24 + sizeof(int)); + return err; +} +#endif + +/** + Initialize the hash state + @param md The hash state you wish to initialize + @return CRYPT_OK if successful +*/ +int rmd128_init(hash_state * md) +{ + LTC_ARGCHK(md != NULL); + md->rmd128.state[0] = 0x67452301UL; + md->rmd128.state[1] = 0xefcdab89UL; + md->rmd128.state[2] = 0x98badcfeUL; + md->rmd128.state[3] = 0x10325476UL; + md->rmd128.curlen = 0; + md->rmd128.length = 0; + return CRYPT_OK; +} + +/** + Process a block of memory though the hash + @param md The hash state + @param in The data to hash + @param inlen The length of the data (octets) + @return CRYPT_OK if successful +*/ +HASH_PROCESS(rmd128_process, rmd128_compress, rmd128, 64) + +/** + Terminate the hash to get the digest + @param md The hash state + @param out [out] The destination of the hash (16 bytes) + @return CRYPT_OK if successful +*/ +int rmd128_done(hash_state * md, unsigned char *out) +{ + int i; + + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(out != NULL); + + if (md->rmd128.curlen >= sizeof(md->rmd128.buf)) { + return CRYPT_INVALID_ARG; + } + + + /* increase the length of the message */ + md->rmd128.length += md->rmd128.curlen * 8; + + /* append the '1' bit */ + md->rmd128.buf[md->rmd128.curlen++] = (unsigned char)0x80; + + /* if the length is currently above 56 bytes we append zeros + * then compress. Then we can fall back to padding zeros and length + * encoding like normal. + */ + if (md->rmd128.curlen > 56) { + while (md->rmd128.curlen < 64) { + md->rmd128.buf[md->rmd128.curlen++] = (unsigned char)0; + } + rmd128_compress(md, md->rmd128.buf); + md->rmd128.curlen = 0; + } + + /* pad upto 56 bytes of zeroes */ + while (md->rmd128.curlen < 56) { + md->rmd128.buf[md->rmd128.curlen++] = (unsigned char)0; + } + + /* store length */ + STORE64L(md->rmd128.length, md->rmd128.buf+56); + rmd128_compress(md, md->rmd128.buf); + + /* copy output */ + for (i = 0; i < 4; i++) { + STORE32L(md->rmd128.state[i], out+(4*i)); + } +#ifdef LTC_CLEAN_STACK + zeromem(md, sizeof(hash_state)); +#endif + return CRYPT_OK; +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int rmd128_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct { + const char *msg; + unsigned char hash[16]; + } tests[] = { + { "", + { 0xcd, 0xf2, 0x62, 0x13, 0xa1, 0x50, 0xdc, 0x3e, + 0xcb, 0x61, 0x0f, 0x18, 0xf6, 0xb3, 0x8b, 0x46 } + }, + { "a", + { 0x86, 0xbe, 0x7a, 0xfa, 0x33, 0x9d, 0x0f, 0xc7, + 0xcf, 0xc7, 0x85, 0xe7, 0x2f, 0x57, 0x8d, 0x33 } + }, + { "abc", + { 0xc1, 0x4a, 0x12, 0x19, 0x9c, 0x66, 0xe4, 0xba, + 0x84, 0x63, 0x6b, 0x0f, 0x69, 0x14, 0x4c, 0x77 } + }, + { "message digest", + { 0x9e, 0x32, 0x7b, 0x3d, 0x6e, 0x52, 0x30, 0x62, + 0xaf, 0xc1, 0x13, 0x2d, 0x7d, 0xf9, 0xd1, 0xb8 } + }, + { "abcdefghijklmnopqrstuvwxyz", + { 0xfd, 0x2a, 0xa6, 0x07, 0xf7, 0x1d, 0xc8, 0xf5, + 0x10, 0x71, 0x49, 0x22, 0xb3, 0x71, 0x83, 0x4e } + }, + { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", + { 0xd1, 0xe9, 0x59, 0xeb, 0x17, 0x9c, 0x91, 0x1f, + 0xae, 0xa4, 0x62, 0x4c, 0x60, 0xc5, 0xc7, 0x02 } + } + }; + + int i; + unsigned char tmp[16]; + hash_state md; + + for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) { + rmd128_init(&md); + rmd128_process(&md, (unsigned char *)tests[i].msg, strlen(tests[i].msg)); + rmd128_done(&md, tmp); + if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "RIPEMD128", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; +#endif +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/rmd160.c b/fsbl/lib/libtomcrypt/src/hashes/rmd160.c new file mode 100644 index 000000000..8add41e3c --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/rmd160.c @@ -0,0 +1,465 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file rmd160.c + RMD160 hash function +*/ + +/* Implementation of LTC_RIPEMD-160 based on the source by Antoon Bosselaers, ESAT-COSIC + * + * This source has been radically overhauled to be portable and work within + * the LibTomCrypt API by Tom St Denis + */ + +#ifdef LTC_RIPEMD160 + +const struct ltc_hash_descriptor rmd160_desc = +{ + "rmd160", + 9, + 20, + 64, + + /* OID */ + { 1, 3, 36, 3, 2, 1, }, + 6, + + &rmd160_init, + &rmd160_process, + &rmd160_done, + &rmd160_test, + NULL +}; + +/* the five basic functions F(), G() and H() */ +#define F(x, y, z) ((x) ^ (y) ^ (z)) +#define G(x, y, z) (((x) & (y)) | (~(x) & (z))) +#define H(x, y, z) (((x) | ~(y)) ^ (z)) +#define I(x, y, z) (((x) & (z)) | ((y) & ~(z))) +#define J(x, y, z) ((x) ^ ((y) | ~(z))) + +/* the ten basic operations FF() through III() */ +#define FF(a, b, c, d, e, x, s) \ + (a) += F((b), (c), (d)) + (x);\ + (a) = ROLc((a), (s)) + (e);\ + (c) = ROLc((c), 10); + +#define GG(a, b, c, d, e, x, s) \ + (a) += G((b), (c), (d)) + (x) + 0x5a827999UL;\ + (a) = ROLc((a), (s)) + (e);\ + (c) = ROLc((c), 10); + +#define HH(a, b, c, d, e, x, s) \ + (a) += H((b), (c), (d)) + (x) + 0x6ed9eba1UL;\ + (a) = ROLc((a), (s)) + (e);\ + (c) = ROLc((c), 10); + +#define II(a, b, c, d, e, x, s) \ + (a) += I((b), (c), (d)) + (x) + 0x8f1bbcdcUL;\ + (a) = ROLc((a), (s)) + (e);\ + (c) = ROLc((c), 10); + +#define JJ(a, b, c, d, e, x, s) \ + (a) += J((b), (c), (d)) + (x) + 0xa953fd4eUL;\ + (a) = ROLc((a), (s)) + (e);\ + (c) = ROLc((c), 10); + +#define FFF(a, b, c, d, e, x, s) \ + (a) += F((b), (c), (d)) + (x);\ + (a) = ROLc((a), (s)) + (e);\ + (c) = ROLc((c), 10); + +#define GGG(a, b, c, d, e, x, s) \ + (a) += G((b), (c), (d)) + (x) + 0x7a6d76e9UL;\ + (a) = ROLc((a), (s)) + (e);\ + (c) = ROLc((c), 10); + +#define HHH(a, b, c, d, e, x, s) \ + (a) += H((b), (c), (d)) + (x) + 0x6d703ef3UL;\ + (a) = ROLc((a), (s)) + (e);\ + (c) = ROLc((c), 10); + +#define III(a, b, c, d, e, x, s) \ + (a) += I((b), (c), (d)) + (x) + 0x5c4dd124UL;\ + (a) = ROLc((a), (s)) + (e);\ + (c) = ROLc((c), 10); + +#define JJJ(a, b, c, d, e, x, s) \ + (a) += J((b), (c), (d)) + (x) + 0x50a28be6UL;\ + (a) = ROLc((a), (s)) + (e);\ + (c) = ROLc((c), 10); + + +#ifdef LTC_CLEAN_STACK +static int _rmd160_compress(hash_state *md, unsigned char *buf) +#else +static int rmd160_compress(hash_state *md, unsigned char *buf) +#endif +{ + ulong32 aa,bb,cc,dd,ee,aaa,bbb,ccc,ddd,eee,X[16]; + int i; + + /* load words X */ + for (i = 0; i < 16; i++){ + LOAD32L(X[i], buf + (4 * i)); + } + + /* load state */ + aa = aaa = md->rmd160.state[0]; + bb = bbb = md->rmd160.state[1]; + cc = ccc = md->rmd160.state[2]; + dd = ddd = md->rmd160.state[3]; + ee = eee = md->rmd160.state[4]; + + /* round 1 */ + FF(aa, bb, cc, dd, ee, X[ 0], 11); + FF(ee, aa, bb, cc, dd, X[ 1], 14); + FF(dd, ee, aa, bb, cc, X[ 2], 15); + FF(cc, dd, ee, aa, bb, X[ 3], 12); + FF(bb, cc, dd, ee, aa, X[ 4], 5); + FF(aa, bb, cc, dd, ee, X[ 5], 8); + FF(ee, aa, bb, cc, dd, X[ 6], 7); + FF(dd, ee, aa, bb, cc, X[ 7], 9); + FF(cc, dd, ee, aa, bb, X[ 8], 11); + FF(bb, cc, dd, ee, aa, X[ 9], 13); + FF(aa, bb, cc, dd, ee, X[10], 14); + FF(ee, aa, bb, cc, dd, X[11], 15); + FF(dd, ee, aa, bb, cc, X[12], 6); + FF(cc, dd, ee, aa, bb, X[13], 7); + FF(bb, cc, dd, ee, aa, X[14], 9); + FF(aa, bb, cc, dd, ee, X[15], 8); + + /* round 2 */ + GG(ee, aa, bb, cc, dd, X[ 7], 7); + GG(dd, ee, aa, bb, cc, X[ 4], 6); + GG(cc, dd, ee, aa, bb, X[13], 8); + GG(bb, cc, dd, ee, aa, X[ 1], 13); + GG(aa, bb, cc, dd, ee, X[10], 11); + GG(ee, aa, bb, cc, dd, X[ 6], 9); + GG(dd, ee, aa, bb, cc, X[15], 7); + GG(cc, dd, ee, aa, bb, X[ 3], 15); + GG(bb, cc, dd, ee, aa, X[12], 7); + GG(aa, bb, cc, dd, ee, X[ 0], 12); + GG(ee, aa, bb, cc, dd, X[ 9], 15); + GG(dd, ee, aa, bb, cc, X[ 5], 9); + GG(cc, dd, ee, aa, bb, X[ 2], 11); + GG(bb, cc, dd, ee, aa, X[14], 7); + GG(aa, bb, cc, dd, ee, X[11], 13); + GG(ee, aa, bb, cc, dd, X[ 8], 12); + + /* round 3 */ + HH(dd, ee, aa, bb, cc, X[ 3], 11); + HH(cc, dd, ee, aa, bb, X[10], 13); + HH(bb, cc, dd, ee, aa, X[14], 6); + HH(aa, bb, cc, dd, ee, X[ 4], 7); + HH(ee, aa, bb, cc, dd, X[ 9], 14); + HH(dd, ee, aa, bb, cc, X[15], 9); + HH(cc, dd, ee, aa, bb, X[ 8], 13); + HH(bb, cc, dd, ee, aa, X[ 1], 15); + HH(aa, bb, cc, dd, ee, X[ 2], 14); + HH(ee, aa, bb, cc, dd, X[ 7], 8); + HH(dd, ee, aa, bb, cc, X[ 0], 13); + HH(cc, dd, ee, aa, bb, X[ 6], 6); + HH(bb, cc, dd, ee, aa, X[13], 5); + HH(aa, bb, cc, dd, ee, X[11], 12); + HH(ee, aa, bb, cc, dd, X[ 5], 7); + HH(dd, ee, aa, bb, cc, X[12], 5); + + /* round 4 */ + II(cc, dd, ee, aa, bb, X[ 1], 11); + II(bb, cc, dd, ee, aa, X[ 9], 12); + II(aa, bb, cc, dd, ee, X[11], 14); + II(ee, aa, bb, cc, dd, X[10], 15); + II(dd, ee, aa, bb, cc, X[ 0], 14); + II(cc, dd, ee, aa, bb, X[ 8], 15); + II(bb, cc, dd, ee, aa, X[12], 9); + II(aa, bb, cc, dd, ee, X[ 4], 8); + II(ee, aa, bb, cc, dd, X[13], 9); + II(dd, ee, aa, bb, cc, X[ 3], 14); + II(cc, dd, ee, aa, bb, X[ 7], 5); + II(bb, cc, dd, ee, aa, X[15], 6); + II(aa, bb, cc, dd, ee, X[14], 8); + II(ee, aa, bb, cc, dd, X[ 5], 6); + II(dd, ee, aa, bb, cc, X[ 6], 5); + II(cc, dd, ee, aa, bb, X[ 2], 12); + + /* round 5 */ + JJ(bb, cc, dd, ee, aa, X[ 4], 9); + JJ(aa, bb, cc, dd, ee, X[ 0], 15); + JJ(ee, aa, bb, cc, dd, X[ 5], 5); + JJ(dd, ee, aa, bb, cc, X[ 9], 11); + JJ(cc, dd, ee, aa, bb, X[ 7], 6); + JJ(bb, cc, dd, ee, aa, X[12], 8); + JJ(aa, bb, cc, dd, ee, X[ 2], 13); + JJ(ee, aa, bb, cc, dd, X[10], 12); + JJ(dd, ee, aa, bb, cc, X[14], 5); + JJ(cc, dd, ee, aa, bb, X[ 1], 12); + JJ(bb, cc, dd, ee, aa, X[ 3], 13); + JJ(aa, bb, cc, dd, ee, X[ 8], 14); + JJ(ee, aa, bb, cc, dd, X[11], 11); + JJ(dd, ee, aa, bb, cc, X[ 6], 8); + JJ(cc, dd, ee, aa, bb, X[15], 5); + JJ(bb, cc, dd, ee, aa, X[13], 6); + + /* parallel round 1 */ + JJJ(aaa, bbb, ccc, ddd, eee, X[ 5], 8); + JJJ(eee, aaa, bbb, ccc, ddd, X[14], 9); + JJJ(ddd, eee, aaa, bbb, ccc, X[ 7], 9); + JJJ(ccc, ddd, eee, aaa, bbb, X[ 0], 11); + JJJ(bbb, ccc, ddd, eee, aaa, X[ 9], 13); + JJJ(aaa, bbb, ccc, ddd, eee, X[ 2], 15); + JJJ(eee, aaa, bbb, ccc, ddd, X[11], 15); + JJJ(ddd, eee, aaa, bbb, ccc, X[ 4], 5); + JJJ(ccc, ddd, eee, aaa, bbb, X[13], 7); + JJJ(bbb, ccc, ddd, eee, aaa, X[ 6], 7); + JJJ(aaa, bbb, ccc, ddd, eee, X[15], 8); + JJJ(eee, aaa, bbb, ccc, ddd, X[ 8], 11); + JJJ(ddd, eee, aaa, bbb, ccc, X[ 1], 14); + JJJ(ccc, ddd, eee, aaa, bbb, X[10], 14); + JJJ(bbb, ccc, ddd, eee, aaa, X[ 3], 12); + JJJ(aaa, bbb, ccc, ddd, eee, X[12], 6); + + /* parallel round 2 */ + III(eee, aaa, bbb, ccc, ddd, X[ 6], 9); + III(ddd, eee, aaa, bbb, ccc, X[11], 13); + III(ccc, ddd, eee, aaa, bbb, X[ 3], 15); + III(bbb, ccc, ddd, eee, aaa, X[ 7], 7); + III(aaa, bbb, ccc, ddd, eee, X[ 0], 12); + III(eee, aaa, bbb, ccc, ddd, X[13], 8); + III(ddd, eee, aaa, bbb, ccc, X[ 5], 9); + III(ccc, ddd, eee, aaa, bbb, X[10], 11); + III(bbb, ccc, ddd, eee, aaa, X[14], 7); + III(aaa, bbb, ccc, ddd, eee, X[15], 7); + III(eee, aaa, bbb, ccc, ddd, X[ 8], 12); + III(ddd, eee, aaa, bbb, ccc, X[12], 7); + III(ccc, ddd, eee, aaa, bbb, X[ 4], 6); + III(bbb, ccc, ddd, eee, aaa, X[ 9], 15); + III(aaa, bbb, ccc, ddd, eee, X[ 1], 13); + III(eee, aaa, bbb, ccc, ddd, X[ 2], 11); + + /* parallel round 3 */ + HHH(ddd, eee, aaa, bbb, ccc, X[15], 9); + HHH(ccc, ddd, eee, aaa, bbb, X[ 5], 7); + HHH(bbb, ccc, ddd, eee, aaa, X[ 1], 15); + HHH(aaa, bbb, ccc, ddd, eee, X[ 3], 11); + HHH(eee, aaa, bbb, ccc, ddd, X[ 7], 8); + HHH(ddd, eee, aaa, bbb, ccc, X[14], 6); + HHH(ccc, ddd, eee, aaa, bbb, X[ 6], 6); + HHH(bbb, ccc, ddd, eee, aaa, X[ 9], 14); + HHH(aaa, bbb, ccc, ddd, eee, X[11], 12); + HHH(eee, aaa, bbb, ccc, ddd, X[ 8], 13); + HHH(ddd, eee, aaa, bbb, ccc, X[12], 5); + HHH(ccc, ddd, eee, aaa, bbb, X[ 2], 14); + HHH(bbb, ccc, ddd, eee, aaa, X[10], 13); + HHH(aaa, bbb, ccc, ddd, eee, X[ 0], 13); + HHH(eee, aaa, bbb, ccc, ddd, X[ 4], 7); + HHH(ddd, eee, aaa, bbb, ccc, X[13], 5); + + /* parallel round 4 */ + GGG(ccc, ddd, eee, aaa, bbb, X[ 8], 15); + GGG(bbb, ccc, ddd, eee, aaa, X[ 6], 5); + GGG(aaa, bbb, ccc, ddd, eee, X[ 4], 8); + GGG(eee, aaa, bbb, ccc, ddd, X[ 1], 11); + GGG(ddd, eee, aaa, bbb, ccc, X[ 3], 14); + GGG(ccc, ddd, eee, aaa, bbb, X[11], 14); + GGG(bbb, ccc, ddd, eee, aaa, X[15], 6); + GGG(aaa, bbb, ccc, ddd, eee, X[ 0], 14); + GGG(eee, aaa, bbb, ccc, ddd, X[ 5], 6); + GGG(ddd, eee, aaa, bbb, ccc, X[12], 9); + GGG(ccc, ddd, eee, aaa, bbb, X[ 2], 12); + GGG(bbb, ccc, ddd, eee, aaa, X[13], 9); + GGG(aaa, bbb, ccc, ddd, eee, X[ 9], 12); + GGG(eee, aaa, bbb, ccc, ddd, X[ 7], 5); + GGG(ddd, eee, aaa, bbb, ccc, X[10], 15); + GGG(ccc, ddd, eee, aaa, bbb, X[14], 8); + + /* parallel round 5 */ + FFF(bbb, ccc, ddd, eee, aaa, X[12] , 8); + FFF(aaa, bbb, ccc, ddd, eee, X[15] , 5); + FFF(eee, aaa, bbb, ccc, ddd, X[10] , 12); + FFF(ddd, eee, aaa, bbb, ccc, X[ 4] , 9); + FFF(ccc, ddd, eee, aaa, bbb, X[ 1] , 12); + FFF(bbb, ccc, ddd, eee, aaa, X[ 5] , 5); + FFF(aaa, bbb, ccc, ddd, eee, X[ 8] , 14); + FFF(eee, aaa, bbb, ccc, ddd, X[ 7] , 6); + FFF(ddd, eee, aaa, bbb, ccc, X[ 6] , 8); + FFF(ccc, ddd, eee, aaa, bbb, X[ 2] , 13); + FFF(bbb, ccc, ddd, eee, aaa, X[13] , 6); + FFF(aaa, bbb, ccc, ddd, eee, X[14] , 5); + FFF(eee, aaa, bbb, ccc, ddd, X[ 0] , 15); + FFF(ddd, eee, aaa, bbb, ccc, X[ 3] , 13); + FFF(ccc, ddd, eee, aaa, bbb, X[ 9] , 11); + FFF(bbb, ccc, ddd, eee, aaa, X[11] , 11); + + /* combine results */ + ddd += cc + md->rmd160.state[1]; /* final result for md->rmd160.state[0] */ + md->rmd160.state[1] = md->rmd160.state[2] + dd + eee; + md->rmd160.state[2] = md->rmd160.state[3] + ee + aaa; + md->rmd160.state[3] = md->rmd160.state[4] + aa + bbb; + md->rmd160.state[4] = md->rmd160.state[0] + bb + ccc; + md->rmd160.state[0] = ddd; + + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +static int rmd160_compress(hash_state *md, unsigned char *buf) +{ + int err; + err = _rmd160_compress(md, buf); + burn_stack(sizeof(ulong32) * 26 + sizeof(int)); + return err; +} +#endif + +/** + Initialize the hash state + @param md The hash state you wish to initialize + @return CRYPT_OK if successful +*/ +int rmd160_init(hash_state * md) +{ + LTC_ARGCHK(md != NULL); + md->rmd160.state[0] = 0x67452301UL; + md->rmd160.state[1] = 0xefcdab89UL; + md->rmd160.state[2] = 0x98badcfeUL; + md->rmd160.state[3] = 0x10325476UL; + md->rmd160.state[4] = 0xc3d2e1f0UL; + md->rmd160.curlen = 0; + md->rmd160.length = 0; + return CRYPT_OK; +} + +/** + Process a block of memory though the hash + @param md The hash state + @param in The data to hash + @param inlen The length of the data (octets) + @return CRYPT_OK if successful +*/ +HASH_PROCESS(rmd160_process, rmd160_compress, rmd160, 64) + +/** + Terminate the hash to get the digest + @param md The hash state + @param out [out] The destination of the hash (20 bytes) + @return CRYPT_OK if successful +*/ +int rmd160_done(hash_state * md, unsigned char *out) +{ + int i; + + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(out != NULL); + + if (md->rmd160.curlen >= sizeof(md->rmd160.buf)) { + return CRYPT_INVALID_ARG; + } + + + /* increase the length of the message */ + md->rmd160.length += md->rmd160.curlen * 8; + + /* append the '1' bit */ + md->rmd160.buf[md->rmd160.curlen++] = (unsigned char)0x80; + + /* if the length is currently above 56 bytes we append zeros + * then compress. Then we can fall back to padding zeros and length + * encoding like normal. + */ + if (md->rmd160.curlen > 56) { + while (md->rmd160.curlen < 64) { + md->rmd160.buf[md->rmd160.curlen++] = (unsigned char)0; + } + rmd160_compress(md, md->rmd160.buf); + md->rmd160.curlen = 0; + } + + /* pad upto 56 bytes of zeroes */ + while (md->rmd160.curlen < 56) { + md->rmd160.buf[md->rmd160.curlen++] = (unsigned char)0; + } + + /* store length */ + STORE64L(md->rmd160.length, md->rmd160.buf+56); + rmd160_compress(md, md->rmd160.buf); + + /* copy output */ + for (i = 0; i < 5; i++) { + STORE32L(md->rmd160.state[i], out+(4*i)); + } +#ifdef LTC_CLEAN_STACK + zeromem(md, sizeof(hash_state)); +#endif + return CRYPT_OK; +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int rmd160_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct { + const char *msg; + unsigned char hash[20]; + } tests[] = { + { "", + { 0x9c, 0x11, 0x85, 0xa5, 0xc5, 0xe9, 0xfc, 0x54, 0x61, 0x28, + 0x08, 0x97, 0x7e, 0xe8, 0xf5, 0x48, 0xb2, 0x25, 0x8d, 0x31 } + }, + { "a", + { 0x0b, 0xdc, 0x9d, 0x2d, 0x25, 0x6b, 0x3e, 0xe9, 0xda, 0xae, + 0x34, 0x7b, 0xe6, 0xf4, 0xdc, 0x83, 0x5a, 0x46, 0x7f, 0xfe } + }, + { "abc", + { 0x8e, 0xb2, 0x08, 0xf7, 0xe0, 0x5d, 0x98, 0x7a, 0x9b, 0x04, + 0x4a, 0x8e, 0x98, 0xc6, 0xb0, 0x87, 0xf1, 0x5a, 0x0b, 0xfc } + }, + { "message digest", + { 0x5d, 0x06, 0x89, 0xef, 0x49, 0xd2, 0xfa, 0xe5, 0x72, 0xb8, + 0x81, 0xb1, 0x23, 0xa8, 0x5f, 0xfa, 0x21, 0x59, 0x5f, 0x36 } + }, + { "abcdefghijklmnopqrstuvwxyz", + { 0xf7, 0x1c, 0x27, 0x10, 0x9c, 0x69, 0x2c, 0x1b, 0x56, 0xbb, + 0xdc, 0xeb, 0x5b, 0x9d, 0x28, 0x65, 0xb3, 0x70, 0x8d, 0xbc } + }, + { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", + { 0x12, 0xa0, 0x53, 0x38, 0x4a, 0x9c, 0x0c, 0x88, 0xe4, 0x05, + 0xa0, 0x6c, 0x27, 0xdc, 0xf4, 0x9a, 0xda, 0x62, 0xeb, 0x2b } + } + }; + + int i; + unsigned char tmp[20]; + hash_state md; + + for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) { + rmd160_init(&md); + rmd160_process(&md, (unsigned char *)tests[i].msg, strlen(tests[i].msg)); + rmd160_done(&md, tmp); + if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "RIPEMD160", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; +#endif +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/rmd256.c b/fsbl/lib/libtomcrypt/src/hashes/rmd256.c new file mode 100644 index 000000000..5fade8213 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/rmd256.c @@ -0,0 +1,430 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @param rmd256.c + RLTC_MD256 Hash function +*/ + +#ifdef LTC_RIPEMD256 + +const struct ltc_hash_descriptor rmd256_desc = +{ + "rmd256", + 13, + 32, + 64, + + /* OID */ + { 1, 3, 36, 3, 2, 3 }, + 6, + + &rmd256_init, + &rmd256_process, + &rmd256_done, + &rmd256_test, + NULL +}; + +/* the four basic functions F(), G() and H() */ +#define F(x, y, z) ((x) ^ (y) ^ (z)) +#define G(x, y, z) (((x) & (y)) | (~(x) & (z))) +#define H(x, y, z) (((x) | ~(y)) ^ (z)) +#define I(x, y, z) (((x) & (z)) | ((y) & ~(z))) + +/* the eight basic operations FF() through III() */ +#define FF(a, b, c, d, x, s) \ + (a) += F((b), (c), (d)) + (x);\ + (a) = ROLc((a), (s)); + +#define GG(a, b, c, d, x, s) \ + (a) += G((b), (c), (d)) + (x) + 0x5a827999UL;\ + (a) = ROLc((a), (s)); + +#define HH(a, b, c, d, x, s) \ + (a) += H((b), (c), (d)) + (x) + 0x6ed9eba1UL;\ + (a) = ROLc((a), (s)); + +#define II(a, b, c, d, x, s) \ + (a) += I((b), (c), (d)) + (x) + 0x8f1bbcdcUL;\ + (a) = ROLc((a), (s)); + +#define FFF(a, b, c, d, x, s) \ + (a) += F((b), (c), (d)) + (x);\ + (a) = ROLc((a), (s)); + +#define GGG(a, b, c, d, x, s) \ + (a) += G((b), (c), (d)) + (x) + 0x6d703ef3UL;\ + (a) = ROLc((a), (s)); + +#define HHH(a, b, c, d, x, s) \ + (a) += H((b), (c), (d)) + (x) + 0x5c4dd124UL;\ + (a) = ROLc((a), (s)); + +#define III(a, b, c, d, x, s) \ + (a) += I((b), (c), (d)) + (x) + 0x50a28be6UL;\ + (a) = ROLc((a), (s)); + +#ifdef LTC_CLEAN_STACK +static int _rmd256_compress(hash_state *md, unsigned char *buf) +#else +static int rmd256_compress(hash_state *md, unsigned char *buf) +#endif +{ + ulong32 aa,bb,cc,dd,aaa,bbb,ccc,ddd,tmp,X[16]; + int i; + + /* load words X */ + for (i = 0; i < 16; i++){ + LOAD32L(X[i], buf + (4 * i)); + } + + /* load state */ + aa = md->rmd256.state[0]; + bb = md->rmd256.state[1]; + cc = md->rmd256.state[2]; + dd = md->rmd256.state[3]; + aaa = md->rmd256.state[4]; + bbb = md->rmd256.state[5]; + ccc = md->rmd256.state[6]; + ddd = md->rmd256.state[7]; + + /* round 1 */ + FF(aa, bb, cc, dd, X[ 0], 11); + FF(dd, aa, bb, cc, X[ 1], 14); + FF(cc, dd, aa, bb, X[ 2], 15); + FF(bb, cc, dd, aa, X[ 3], 12); + FF(aa, bb, cc, dd, X[ 4], 5); + FF(dd, aa, bb, cc, X[ 5], 8); + FF(cc, dd, aa, bb, X[ 6], 7); + FF(bb, cc, dd, aa, X[ 7], 9); + FF(aa, bb, cc, dd, X[ 8], 11); + FF(dd, aa, bb, cc, X[ 9], 13); + FF(cc, dd, aa, bb, X[10], 14); + FF(bb, cc, dd, aa, X[11], 15); + FF(aa, bb, cc, dd, X[12], 6); + FF(dd, aa, bb, cc, X[13], 7); + FF(cc, dd, aa, bb, X[14], 9); + FF(bb, cc, dd, aa, X[15], 8); + + /* parallel round 1 */ + III(aaa, bbb, ccc, ddd, X[ 5], 8); + III(ddd, aaa, bbb, ccc, X[14], 9); + III(ccc, ddd, aaa, bbb, X[ 7], 9); + III(bbb, ccc, ddd, aaa, X[ 0], 11); + III(aaa, bbb, ccc, ddd, X[ 9], 13); + III(ddd, aaa, bbb, ccc, X[ 2], 15); + III(ccc, ddd, aaa, bbb, X[11], 15); + III(bbb, ccc, ddd, aaa, X[ 4], 5); + III(aaa, bbb, ccc, ddd, X[13], 7); + III(ddd, aaa, bbb, ccc, X[ 6], 7); + III(ccc, ddd, aaa, bbb, X[15], 8); + III(bbb, ccc, ddd, aaa, X[ 8], 11); + III(aaa, bbb, ccc, ddd, X[ 1], 14); + III(ddd, aaa, bbb, ccc, X[10], 14); + III(ccc, ddd, aaa, bbb, X[ 3], 12); + III(bbb, ccc, ddd, aaa, X[12], 6); + + tmp = aa; aa = aaa; aaa = tmp; + + /* round 2 */ + GG(aa, bb, cc, dd, X[ 7], 7); + GG(dd, aa, bb, cc, X[ 4], 6); + GG(cc, dd, aa, bb, X[13], 8); + GG(bb, cc, dd, aa, X[ 1], 13); + GG(aa, bb, cc, dd, X[10], 11); + GG(dd, aa, bb, cc, X[ 6], 9); + GG(cc, dd, aa, bb, X[15], 7); + GG(bb, cc, dd, aa, X[ 3], 15); + GG(aa, bb, cc, dd, X[12], 7); + GG(dd, aa, bb, cc, X[ 0], 12); + GG(cc, dd, aa, bb, X[ 9], 15); + GG(bb, cc, dd, aa, X[ 5], 9); + GG(aa, bb, cc, dd, X[ 2], 11); + GG(dd, aa, bb, cc, X[14], 7); + GG(cc, dd, aa, bb, X[11], 13); + GG(bb, cc, dd, aa, X[ 8], 12); + + /* parallel round 2 */ + HHH(aaa, bbb, ccc, ddd, X[ 6], 9); + HHH(ddd, aaa, bbb, ccc, X[11], 13); + HHH(ccc, ddd, aaa, bbb, X[ 3], 15); + HHH(bbb, ccc, ddd, aaa, X[ 7], 7); + HHH(aaa, bbb, ccc, ddd, X[ 0], 12); + HHH(ddd, aaa, bbb, ccc, X[13], 8); + HHH(ccc, ddd, aaa, bbb, X[ 5], 9); + HHH(bbb, ccc, ddd, aaa, X[10], 11); + HHH(aaa, bbb, ccc, ddd, X[14], 7); + HHH(ddd, aaa, bbb, ccc, X[15], 7); + HHH(ccc, ddd, aaa, bbb, X[ 8], 12); + HHH(bbb, ccc, ddd, aaa, X[12], 7); + HHH(aaa, bbb, ccc, ddd, X[ 4], 6); + HHH(ddd, aaa, bbb, ccc, X[ 9], 15); + HHH(ccc, ddd, aaa, bbb, X[ 1], 13); + HHH(bbb, ccc, ddd, aaa, X[ 2], 11); + + tmp = bb; bb = bbb; bbb = tmp; + + /* round 3 */ + HH(aa, bb, cc, dd, X[ 3], 11); + HH(dd, aa, bb, cc, X[10], 13); + HH(cc, dd, aa, bb, X[14], 6); + HH(bb, cc, dd, aa, X[ 4], 7); + HH(aa, bb, cc, dd, X[ 9], 14); + HH(dd, aa, bb, cc, X[15], 9); + HH(cc, dd, aa, bb, X[ 8], 13); + HH(bb, cc, dd, aa, X[ 1], 15); + HH(aa, bb, cc, dd, X[ 2], 14); + HH(dd, aa, bb, cc, X[ 7], 8); + HH(cc, dd, aa, bb, X[ 0], 13); + HH(bb, cc, dd, aa, X[ 6], 6); + HH(aa, bb, cc, dd, X[13], 5); + HH(dd, aa, bb, cc, X[11], 12); + HH(cc, dd, aa, bb, X[ 5], 7); + HH(bb, cc, dd, aa, X[12], 5); + + /* parallel round 3 */ + GGG(aaa, bbb, ccc, ddd, X[15], 9); + GGG(ddd, aaa, bbb, ccc, X[ 5], 7); + GGG(ccc, ddd, aaa, bbb, X[ 1], 15); + GGG(bbb, ccc, ddd, aaa, X[ 3], 11); + GGG(aaa, bbb, ccc, ddd, X[ 7], 8); + GGG(ddd, aaa, bbb, ccc, X[14], 6); + GGG(ccc, ddd, aaa, bbb, X[ 6], 6); + GGG(bbb, ccc, ddd, aaa, X[ 9], 14); + GGG(aaa, bbb, ccc, ddd, X[11], 12); + GGG(ddd, aaa, bbb, ccc, X[ 8], 13); + GGG(ccc, ddd, aaa, bbb, X[12], 5); + GGG(bbb, ccc, ddd, aaa, X[ 2], 14); + GGG(aaa, bbb, ccc, ddd, X[10], 13); + GGG(ddd, aaa, bbb, ccc, X[ 0], 13); + GGG(ccc, ddd, aaa, bbb, X[ 4], 7); + GGG(bbb, ccc, ddd, aaa, X[13], 5); + + tmp = cc; cc = ccc; ccc = tmp; + + /* round 4 */ + II(aa, bb, cc, dd, X[ 1], 11); + II(dd, aa, bb, cc, X[ 9], 12); + II(cc, dd, aa, bb, X[11], 14); + II(bb, cc, dd, aa, X[10], 15); + II(aa, bb, cc, dd, X[ 0], 14); + II(dd, aa, bb, cc, X[ 8], 15); + II(cc, dd, aa, bb, X[12], 9); + II(bb, cc, dd, aa, X[ 4], 8); + II(aa, bb, cc, dd, X[13], 9); + II(dd, aa, bb, cc, X[ 3], 14); + II(cc, dd, aa, bb, X[ 7], 5); + II(bb, cc, dd, aa, X[15], 6); + II(aa, bb, cc, dd, X[14], 8); + II(dd, aa, bb, cc, X[ 5], 6); + II(cc, dd, aa, bb, X[ 6], 5); + II(bb, cc, dd, aa, X[ 2], 12); + + /* parallel round 4 */ + FFF(aaa, bbb, ccc, ddd, X[ 8], 15); + FFF(ddd, aaa, bbb, ccc, X[ 6], 5); + FFF(ccc, ddd, aaa, bbb, X[ 4], 8); + FFF(bbb, ccc, ddd, aaa, X[ 1], 11); + FFF(aaa, bbb, ccc, ddd, X[ 3], 14); + FFF(ddd, aaa, bbb, ccc, X[11], 14); + FFF(ccc, ddd, aaa, bbb, X[15], 6); + FFF(bbb, ccc, ddd, aaa, X[ 0], 14); + FFF(aaa, bbb, ccc, ddd, X[ 5], 6); + FFF(ddd, aaa, bbb, ccc, X[12], 9); + FFF(ccc, ddd, aaa, bbb, X[ 2], 12); + FFF(bbb, ccc, ddd, aaa, X[13], 9); + FFF(aaa, bbb, ccc, ddd, X[ 9], 12); + FFF(ddd, aaa, bbb, ccc, X[ 7], 5); + FFF(ccc, ddd, aaa, bbb, X[10], 15); + FFF(bbb, ccc, ddd, aaa, X[14], 8); + + tmp = dd; dd = ddd; ddd = tmp; + + /* combine results */ + md->rmd256.state[0] += aa; + md->rmd256.state[1] += bb; + md->rmd256.state[2] += cc; + md->rmd256.state[3] += dd; + md->rmd256.state[4] += aaa; + md->rmd256.state[5] += bbb; + md->rmd256.state[6] += ccc; + md->rmd256.state[7] += ddd; + + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +static int rmd256_compress(hash_state *md, unsigned char *buf) +{ + int err; + err = _rmd256_compress(md, buf); + burn_stack(sizeof(ulong32) * 25 + sizeof(int)); + return err; +} +#endif + +/** + Initialize the hash state + @param md The hash state you wish to initialize + @return CRYPT_OK if successful +*/ +int rmd256_init(hash_state * md) +{ + LTC_ARGCHK(md != NULL); + md->rmd256.state[0] = 0x67452301UL; + md->rmd256.state[1] = 0xefcdab89UL; + md->rmd256.state[2] = 0x98badcfeUL; + md->rmd256.state[3] = 0x10325476UL; + md->rmd256.state[4] = 0x76543210UL; + md->rmd256.state[5] = 0xfedcba98UL; + md->rmd256.state[6] = 0x89abcdefUL; + md->rmd256.state[7] = 0x01234567UL; + md->rmd256.curlen = 0; + md->rmd256.length = 0; + return CRYPT_OK; +} + +/** + Process a block of memory though the hash + @param md The hash state + @param in The data to hash + @param inlen The length of the data (octets) + @return CRYPT_OK if successful +*/ +HASH_PROCESS(rmd256_process, rmd256_compress, rmd256, 64) + +/** + Terminate the hash to get the digest + @param md The hash state + @param out [out] The destination of the hash (16 bytes) + @return CRYPT_OK if successful +*/ +int rmd256_done(hash_state * md, unsigned char *out) +{ + int i; + + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(out != NULL); + + if (md->rmd256.curlen >= sizeof(md->rmd256.buf)) { + return CRYPT_INVALID_ARG; + } + + + /* increase the length of the message */ + md->rmd256.length += md->rmd256.curlen * 8; + + /* append the '1' bit */ + md->rmd256.buf[md->rmd256.curlen++] = (unsigned char)0x80; + + /* if the length is currently above 56 bytes we append zeros + * then compress. Then we can fall back to padding zeros and length + * encoding like normal. + */ + if (md->rmd256.curlen > 56) { + while (md->rmd256.curlen < 64) { + md->rmd256.buf[md->rmd256.curlen++] = (unsigned char)0; + } + rmd256_compress(md, md->rmd256.buf); + md->rmd256.curlen = 0; + } + + /* pad upto 56 bytes of zeroes */ + while (md->rmd256.curlen < 56) { + md->rmd256.buf[md->rmd256.curlen++] = (unsigned char)0; + } + + /* store length */ + STORE64L(md->rmd256.length, md->rmd256.buf+56); + rmd256_compress(md, md->rmd256.buf); + + /* copy output */ + for (i = 0; i < 8; i++) { + STORE32L(md->rmd256.state[i], out+(4*i)); + } +#ifdef LTC_CLEAN_STACK + zeromem(md, sizeof(hash_state)); +#endif + return CRYPT_OK; +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int rmd256_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct { + const char *msg; + unsigned char hash[32]; + } tests[] = { + { "", + { 0x02, 0xba, 0x4c, 0x4e, 0x5f, 0x8e, 0xcd, 0x18, + 0x77, 0xfc, 0x52, 0xd6, 0x4d, 0x30, 0xe3, 0x7a, + 0x2d, 0x97, 0x74, 0xfb, 0x1e, 0x5d, 0x02, 0x63, + 0x80, 0xae, 0x01, 0x68, 0xe3, 0xc5, 0x52, 0x2d } + }, + { "a", + { 0xf9, 0x33, 0x3e, 0x45, 0xd8, 0x57, 0xf5, 0xd9, + 0x0a, 0x91, 0xba, 0xb7, 0x0a, 0x1e, 0xba, 0x0c, + 0xfb, 0x1b, 0xe4, 0xb0, 0x78, 0x3c, 0x9a, 0xcf, + 0xcd, 0x88, 0x3a, 0x91, 0x34, 0x69, 0x29, 0x25 } + }, + { "abc", + { 0xaf, 0xbd, 0x6e, 0x22, 0x8b, 0x9d, 0x8c, 0xbb, + 0xce, 0xf5, 0xca, 0x2d, 0x03, 0xe6, 0xdb, 0xa1, + 0x0a, 0xc0, 0xbc, 0x7d, 0xcb, 0xe4, 0x68, 0x0e, + 0x1e, 0x42, 0xd2, 0xe9, 0x75, 0x45, 0x9b, 0x65 } + }, + { "message digest", + { 0x87, 0xe9, 0x71, 0x75, 0x9a, 0x1c, 0xe4, 0x7a, + 0x51, 0x4d, 0x5c, 0x91, 0x4c, 0x39, 0x2c, 0x90, + 0x18, 0xc7, 0xc4, 0x6b, 0xc1, 0x44, 0x65, 0x55, + 0x4a, 0xfc, 0xdf, 0x54, 0xa5, 0x07, 0x0c, 0x0e } + }, + { "abcdefghijklmnopqrstuvwxyz", + { 0x64, 0x9d, 0x30, 0x34, 0x75, 0x1e, 0xa2, 0x16, + 0x77, 0x6b, 0xf9, 0xa1, 0x8a, 0xcc, 0x81, 0xbc, + 0x78, 0x96, 0x11, 0x8a, 0x51, 0x97, 0x96, 0x87, + 0x82, 0xdd, 0x1f, 0xd9, 0x7d, 0x8d, 0x51, 0x33 } + }, + { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", + { 0x57, 0x40, 0xa4, 0x08, 0xac, 0x16, 0xb7, 0x20, + 0xb8, 0x44, 0x24, 0xae, 0x93, 0x1c, 0xbb, 0x1f, + 0xe3, 0x63, 0xd1, 0xd0, 0xbf, 0x40, 0x17, 0xf1, + 0xa8, 0x9f, 0x7e, 0xa6, 0xde, 0x77, 0xa0, 0xb8 } + } + }; + + int i; + unsigned char tmp[32]; + hash_state md; + + for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) { + rmd256_init(&md); + rmd256_process(&md, (unsigned char *)tests[i].msg, strlen(tests[i].msg)); + rmd256_done(&md, tmp); + if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "RIPEMD256", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/rmd320.c b/fsbl/lib/libtomcrypt/src/hashes/rmd320.c new file mode 100644 index 000000000..a4356c4c3 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/rmd320.c @@ -0,0 +1,495 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file rmd320.c + RMD320 hash function +*/ + +#ifdef LTC_RIPEMD320 + +const struct ltc_hash_descriptor rmd320_desc = +{ + "rmd320", + 14, + 40, + 64, + + /* OID ... does not exist + * http://oid-info.com/get/1.3.36.3.2 */ + { 0 }, + 0, + + &rmd320_init, + &rmd320_process, + &rmd320_done, + &rmd320_test, + NULL +}; + +/* the five basic functions F(), G() and H() */ +#define F(x, y, z) ((x) ^ (y) ^ (z)) +#define G(x, y, z) (((x) & (y)) | (~(x) & (z))) +#define H(x, y, z) (((x) | ~(y)) ^ (z)) +#define I(x, y, z) (((x) & (z)) | ((y) & ~(z))) +#define J(x, y, z) ((x) ^ ((y) | ~(z))) + +/* the ten basic operations FF() through III() */ +#define FF(a, b, c, d, e, x, s) \ + (a) += F((b), (c), (d)) + (x);\ + (a) = ROLc((a), (s)) + (e);\ + (c) = ROLc((c), 10); + +#define GG(a, b, c, d, e, x, s) \ + (a) += G((b), (c), (d)) + (x) + 0x5a827999UL;\ + (a) = ROLc((a), (s)) + (e);\ + (c) = ROLc((c), 10); + +#define HH(a, b, c, d, e, x, s) \ + (a) += H((b), (c), (d)) + (x) + 0x6ed9eba1UL;\ + (a) = ROLc((a), (s)) + (e);\ + (c) = ROLc((c), 10); + +#define II(a, b, c, d, e, x, s) \ + (a) += I((b), (c), (d)) + (x) + 0x8f1bbcdcUL;\ + (a) = ROLc((a), (s)) + (e);\ + (c) = ROLc((c), 10); + +#define JJ(a, b, c, d, e, x, s) \ + (a) += J((b), (c), (d)) + (x) + 0xa953fd4eUL;\ + (a) = ROLc((a), (s)) + (e);\ + (c) = ROLc((c), 10); + +#define FFF(a, b, c, d, e, x, s) \ + (a) += F((b), (c), (d)) + (x);\ + (a) = ROLc((a), (s)) + (e);\ + (c) = ROLc((c), 10); + +#define GGG(a, b, c, d, e, x, s) \ + (a) += G((b), (c), (d)) + (x) + 0x7a6d76e9UL;\ + (a) = ROLc((a), (s)) + (e);\ + (c) = ROLc((c), 10); + +#define HHH(a, b, c, d, e, x, s) \ + (a) += H((b), (c), (d)) + (x) + 0x6d703ef3UL;\ + (a) = ROLc((a), (s)) + (e);\ + (c) = ROLc((c), 10); + +#define III(a, b, c, d, e, x, s) \ + (a) += I((b), (c), (d)) + (x) + 0x5c4dd124UL;\ + (a) = ROLc((a), (s)) + (e);\ + (c) = ROLc((c), 10); + +#define JJJ(a, b, c, d, e, x, s) \ + (a) += J((b), (c), (d)) + (x) + 0x50a28be6UL;\ + (a) = ROLc((a), (s)) + (e);\ + (c) = ROLc((c), 10); + + +#ifdef LTC_CLEAN_STACK +static int _rmd320_compress(hash_state *md, unsigned char *buf) +#else +static int rmd320_compress(hash_state *md, unsigned char *buf) +#endif +{ + ulong32 aa,bb,cc,dd,ee,aaa,bbb,ccc,ddd,eee,tmp,X[16]; + int i; + + /* load words X */ + for (i = 0; i < 16; i++){ + LOAD32L(X[i], buf + (4 * i)); + } + + /* load state */ + aa = md->rmd320.state[0]; + bb = md->rmd320.state[1]; + cc = md->rmd320.state[2]; + dd = md->rmd320.state[3]; + ee = md->rmd320.state[4]; + aaa = md->rmd320.state[5]; + bbb = md->rmd320.state[6]; + ccc = md->rmd320.state[7]; + ddd = md->rmd320.state[8]; + eee = md->rmd320.state[9]; + + /* round 1 */ + FF(aa, bb, cc, dd, ee, X[ 0], 11); + FF(ee, aa, bb, cc, dd, X[ 1], 14); + FF(dd, ee, aa, bb, cc, X[ 2], 15); + FF(cc, dd, ee, aa, bb, X[ 3], 12); + FF(bb, cc, dd, ee, aa, X[ 4], 5); + FF(aa, bb, cc, dd, ee, X[ 5], 8); + FF(ee, aa, bb, cc, dd, X[ 6], 7); + FF(dd, ee, aa, bb, cc, X[ 7], 9); + FF(cc, dd, ee, aa, bb, X[ 8], 11); + FF(bb, cc, dd, ee, aa, X[ 9], 13); + FF(aa, bb, cc, dd, ee, X[10], 14); + FF(ee, aa, bb, cc, dd, X[11], 15); + FF(dd, ee, aa, bb, cc, X[12], 6); + FF(cc, dd, ee, aa, bb, X[13], 7); + FF(bb, cc, dd, ee, aa, X[14], 9); + FF(aa, bb, cc, dd, ee, X[15], 8); + + /* parallel round 1 */ + JJJ(aaa, bbb, ccc, ddd, eee, X[ 5], 8); + JJJ(eee, aaa, bbb, ccc, ddd, X[14], 9); + JJJ(ddd, eee, aaa, bbb, ccc, X[ 7], 9); + JJJ(ccc, ddd, eee, aaa, bbb, X[ 0], 11); + JJJ(bbb, ccc, ddd, eee, aaa, X[ 9], 13); + JJJ(aaa, bbb, ccc, ddd, eee, X[ 2], 15); + JJJ(eee, aaa, bbb, ccc, ddd, X[11], 15); + JJJ(ddd, eee, aaa, bbb, ccc, X[ 4], 5); + JJJ(ccc, ddd, eee, aaa, bbb, X[13], 7); + JJJ(bbb, ccc, ddd, eee, aaa, X[ 6], 7); + JJJ(aaa, bbb, ccc, ddd, eee, X[15], 8); + JJJ(eee, aaa, bbb, ccc, ddd, X[ 8], 11); + JJJ(ddd, eee, aaa, bbb, ccc, X[ 1], 14); + JJJ(ccc, ddd, eee, aaa, bbb, X[10], 14); + JJJ(bbb, ccc, ddd, eee, aaa, X[ 3], 12); + JJJ(aaa, bbb, ccc, ddd, eee, X[12], 6); + + tmp = aa; aa = aaa; aaa = tmp; + + /* round 2 */ + GG(ee, aa, bb, cc, dd, X[ 7], 7); + GG(dd, ee, aa, bb, cc, X[ 4], 6); + GG(cc, dd, ee, aa, bb, X[13], 8); + GG(bb, cc, dd, ee, aa, X[ 1], 13); + GG(aa, bb, cc, dd, ee, X[10], 11); + GG(ee, aa, bb, cc, dd, X[ 6], 9); + GG(dd, ee, aa, bb, cc, X[15], 7); + GG(cc, dd, ee, aa, bb, X[ 3], 15); + GG(bb, cc, dd, ee, aa, X[12], 7); + GG(aa, bb, cc, dd, ee, X[ 0], 12); + GG(ee, aa, bb, cc, dd, X[ 9], 15); + GG(dd, ee, aa, bb, cc, X[ 5], 9); + GG(cc, dd, ee, aa, bb, X[ 2], 11); + GG(bb, cc, dd, ee, aa, X[14], 7); + GG(aa, bb, cc, dd, ee, X[11], 13); + GG(ee, aa, bb, cc, dd, X[ 8], 12); + + /* parallel round 2 */ + III(eee, aaa, bbb, ccc, ddd, X[ 6], 9); + III(ddd, eee, aaa, bbb, ccc, X[11], 13); + III(ccc, ddd, eee, aaa, bbb, X[ 3], 15); + III(bbb, ccc, ddd, eee, aaa, X[ 7], 7); + III(aaa, bbb, ccc, ddd, eee, X[ 0], 12); + III(eee, aaa, bbb, ccc, ddd, X[13], 8); + III(ddd, eee, aaa, bbb, ccc, X[ 5], 9); + III(ccc, ddd, eee, aaa, bbb, X[10], 11); + III(bbb, ccc, ddd, eee, aaa, X[14], 7); + III(aaa, bbb, ccc, ddd, eee, X[15], 7); + III(eee, aaa, bbb, ccc, ddd, X[ 8], 12); + III(ddd, eee, aaa, bbb, ccc, X[12], 7); + III(ccc, ddd, eee, aaa, bbb, X[ 4], 6); + III(bbb, ccc, ddd, eee, aaa, X[ 9], 15); + III(aaa, bbb, ccc, ddd, eee, X[ 1], 13); + III(eee, aaa, bbb, ccc, ddd, X[ 2], 11); + + tmp = bb; bb = bbb; bbb = tmp; + + /* round 3 */ + HH(dd, ee, aa, bb, cc, X[ 3], 11); + HH(cc, dd, ee, aa, bb, X[10], 13); + HH(bb, cc, dd, ee, aa, X[14], 6); + HH(aa, bb, cc, dd, ee, X[ 4], 7); + HH(ee, aa, bb, cc, dd, X[ 9], 14); + HH(dd, ee, aa, bb, cc, X[15], 9); + HH(cc, dd, ee, aa, bb, X[ 8], 13); + HH(bb, cc, dd, ee, aa, X[ 1], 15); + HH(aa, bb, cc, dd, ee, X[ 2], 14); + HH(ee, aa, bb, cc, dd, X[ 7], 8); + HH(dd, ee, aa, bb, cc, X[ 0], 13); + HH(cc, dd, ee, aa, bb, X[ 6], 6); + HH(bb, cc, dd, ee, aa, X[13], 5); + HH(aa, bb, cc, dd, ee, X[11], 12); + HH(ee, aa, bb, cc, dd, X[ 5], 7); + HH(dd, ee, aa, bb, cc, X[12], 5); + + /* parallel round 3 */ + HHH(ddd, eee, aaa, bbb, ccc, X[15], 9); + HHH(ccc, ddd, eee, aaa, bbb, X[ 5], 7); + HHH(bbb, ccc, ddd, eee, aaa, X[ 1], 15); + HHH(aaa, bbb, ccc, ddd, eee, X[ 3], 11); + HHH(eee, aaa, bbb, ccc, ddd, X[ 7], 8); + HHH(ddd, eee, aaa, bbb, ccc, X[14], 6); + HHH(ccc, ddd, eee, aaa, bbb, X[ 6], 6); + HHH(bbb, ccc, ddd, eee, aaa, X[ 9], 14); + HHH(aaa, bbb, ccc, ddd, eee, X[11], 12); + HHH(eee, aaa, bbb, ccc, ddd, X[ 8], 13); + HHH(ddd, eee, aaa, bbb, ccc, X[12], 5); + HHH(ccc, ddd, eee, aaa, bbb, X[ 2], 14); + HHH(bbb, ccc, ddd, eee, aaa, X[10], 13); + HHH(aaa, bbb, ccc, ddd, eee, X[ 0], 13); + HHH(eee, aaa, bbb, ccc, ddd, X[ 4], 7); + HHH(ddd, eee, aaa, bbb, ccc, X[13], 5); + + tmp = cc; cc = ccc; ccc = tmp; + + /* round 4 */ + II(cc, dd, ee, aa, bb, X[ 1], 11); + II(bb, cc, dd, ee, aa, X[ 9], 12); + II(aa, bb, cc, dd, ee, X[11], 14); + II(ee, aa, bb, cc, dd, X[10], 15); + II(dd, ee, aa, bb, cc, X[ 0], 14); + II(cc, dd, ee, aa, bb, X[ 8], 15); + II(bb, cc, dd, ee, aa, X[12], 9); + II(aa, bb, cc, dd, ee, X[ 4], 8); + II(ee, aa, bb, cc, dd, X[13], 9); + II(dd, ee, aa, bb, cc, X[ 3], 14); + II(cc, dd, ee, aa, bb, X[ 7], 5); + II(bb, cc, dd, ee, aa, X[15], 6); + II(aa, bb, cc, dd, ee, X[14], 8); + II(ee, aa, bb, cc, dd, X[ 5], 6); + II(dd, ee, aa, bb, cc, X[ 6], 5); + II(cc, dd, ee, aa, bb, X[ 2], 12); + + /* parallel round 4 */ + GGG(ccc, ddd, eee, aaa, bbb, X[ 8], 15); + GGG(bbb, ccc, ddd, eee, aaa, X[ 6], 5); + GGG(aaa, bbb, ccc, ddd, eee, X[ 4], 8); + GGG(eee, aaa, bbb, ccc, ddd, X[ 1], 11); + GGG(ddd, eee, aaa, bbb, ccc, X[ 3], 14); + GGG(ccc, ddd, eee, aaa, bbb, X[11], 14); + GGG(bbb, ccc, ddd, eee, aaa, X[15], 6); + GGG(aaa, bbb, ccc, ddd, eee, X[ 0], 14); + GGG(eee, aaa, bbb, ccc, ddd, X[ 5], 6); + GGG(ddd, eee, aaa, bbb, ccc, X[12], 9); + GGG(ccc, ddd, eee, aaa, bbb, X[ 2], 12); + GGG(bbb, ccc, ddd, eee, aaa, X[13], 9); + GGG(aaa, bbb, ccc, ddd, eee, X[ 9], 12); + GGG(eee, aaa, bbb, ccc, ddd, X[ 7], 5); + GGG(ddd, eee, aaa, bbb, ccc, X[10], 15); + GGG(ccc, ddd, eee, aaa, bbb, X[14], 8); + + tmp = dd; dd = ddd; ddd = tmp; + + /* round 5 */ + JJ(bb, cc, dd, ee, aa, X[ 4], 9); + JJ(aa, bb, cc, dd, ee, X[ 0], 15); + JJ(ee, aa, bb, cc, dd, X[ 5], 5); + JJ(dd, ee, aa, bb, cc, X[ 9], 11); + JJ(cc, dd, ee, aa, bb, X[ 7], 6); + JJ(bb, cc, dd, ee, aa, X[12], 8); + JJ(aa, bb, cc, dd, ee, X[ 2], 13); + JJ(ee, aa, bb, cc, dd, X[10], 12); + JJ(dd, ee, aa, bb, cc, X[14], 5); + JJ(cc, dd, ee, aa, bb, X[ 1], 12); + JJ(bb, cc, dd, ee, aa, X[ 3], 13); + JJ(aa, bb, cc, dd, ee, X[ 8], 14); + JJ(ee, aa, bb, cc, dd, X[11], 11); + JJ(dd, ee, aa, bb, cc, X[ 6], 8); + JJ(cc, dd, ee, aa, bb, X[15], 5); + JJ(bb, cc, dd, ee, aa, X[13], 6); + + /* parallel round 5 */ + FFF(bbb, ccc, ddd, eee, aaa, X[12] , 8); + FFF(aaa, bbb, ccc, ddd, eee, X[15] , 5); + FFF(eee, aaa, bbb, ccc, ddd, X[10] , 12); + FFF(ddd, eee, aaa, bbb, ccc, X[ 4] , 9); + FFF(ccc, ddd, eee, aaa, bbb, X[ 1] , 12); + FFF(bbb, ccc, ddd, eee, aaa, X[ 5] , 5); + FFF(aaa, bbb, ccc, ddd, eee, X[ 8] , 14); + FFF(eee, aaa, bbb, ccc, ddd, X[ 7] , 6); + FFF(ddd, eee, aaa, bbb, ccc, X[ 6] , 8); + FFF(ccc, ddd, eee, aaa, bbb, X[ 2] , 13); + FFF(bbb, ccc, ddd, eee, aaa, X[13] , 6); + FFF(aaa, bbb, ccc, ddd, eee, X[14] , 5); + FFF(eee, aaa, bbb, ccc, ddd, X[ 0] , 15); + FFF(ddd, eee, aaa, bbb, ccc, X[ 3] , 13); + FFF(ccc, ddd, eee, aaa, bbb, X[ 9] , 11); + FFF(bbb, ccc, ddd, eee, aaa, X[11] , 11); + + tmp = ee; ee = eee; eee = tmp; + + /* combine results */ + md->rmd320.state[0] += aa; + md->rmd320.state[1] += bb; + md->rmd320.state[2] += cc; + md->rmd320.state[3] += dd; + md->rmd320.state[4] += ee; + md->rmd320.state[5] += aaa; + md->rmd320.state[6] += bbb; + md->rmd320.state[7] += ccc; + md->rmd320.state[8] += ddd; + md->rmd320.state[9] += eee; + + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +static int rmd320_compress(hash_state *md, unsigned char *buf) +{ + int err; + err = _rmd320_compress(md, buf); + burn_stack(sizeof(ulong32) * 27 + sizeof(int)); + return err; +} +#endif + +/** + Initialize the hash state + @param md The hash state you wish to initialize + @return CRYPT_OK if successful +*/ +int rmd320_init(hash_state * md) +{ + LTC_ARGCHK(md != NULL); + md->rmd320.state[0] = 0x67452301UL; + md->rmd320.state[1] = 0xefcdab89UL; + md->rmd320.state[2] = 0x98badcfeUL; + md->rmd320.state[3] = 0x10325476UL; + md->rmd320.state[4] = 0xc3d2e1f0UL; + md->rmd320.state[5] = 0x76543210UL; + md->rmd320.state[6] = 0xfedcba98UL; + md->rmd320.state[7] = 0x89abcdefUL; + md->rmd320.state[8] = 0x01234567UL; + md->rmd320.state[9] = 0x3c2d1e0fUL; + md->rmd320.curlen = 0; + md->rmd320.length = 0; + return CRYPT_OK; +} + +/** + Process a block of memory though the hash + @param md The hash state + @param in The data to hash + @param inlen The length of the data (octets) + @return CRYPT_OK if successful +*/ +HASH_PROCESS(rmd320_process, rmd320_compress, rmd320, 64) + +/** + Terminate the hash to get the digest + @param md The hash state + @param out [out] The destination of the hash (20 bytes) + @return CRYPT_OK if successful +*/ +int rmd320_done(hash_state * md, unsigned char *out) +{ + int i; + + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(out != NULL); + + if (md->rmd320.curlen >= sizeof(md->rmd320.buf)) { + return CRYPT_INVALID_ARG; + } + + + /* increase the length of the message */ + md->rmd320.length += md->rmd320.curlen * 8; + + /* append the '1' bit */ + md->rmd320.buf[md->rmd320.curlen++] = (unsigned char)0x80; + + /* if the length is currently above 56 bytes we append zeros + * then compress. Then we can fall back to padding zeros and length + * encoding like normal. + */ + if (md->rmd320.curlen > 56) { + while (md->rmd320.curlen < 64) { + md->rmd320.buf[md->rmd320.curlen++] = (unsigned char)0; + } + rmd320_compress(md, md->rmd320.buf); + md->rmd320.curlen = 0; + } + + /* pad upto 56 bytes of zeroes */ + while (md->rmd320.curlen < 56) { + md->rmd320.buf[md->rmd320.curlen++] = (unsigned char)0; + } + + /* store length */ + STORE64L(md->rmd320.length, md->rmd320.buf+56); + rmd320_compress(md, md->rmd320.buf); + + /* copy output */ + for (i = 0; i < 10; i++) { + STORE32L(md->rmd320.state[i], out+(4*i)); + } +#ifdef LTC_CLEAN_STACK + zeromem(md, sizeof(hash_state)); +#endif + return CRYPT_OK; +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int rmd320_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct { + const char *msg; + unsigned char hash[40]; + } tests[] = { + { "", + { 0x22, 0xd6, 0x5d, 0x56, 0x61, 0x53, 0x6c, 0xdc, 0x75, 0xc1, + 0xfd, 0xf5, 0xc6, 0xde, 0x7b, 0x41, 0xb9, 0xf2, 0x73, 0x25, + 0xeb, 0xc6, 0x1e, 0x85, 0x57, 0x17, 0x7d, 0x70, 0x5a, 0x0e, + 0xc8, 0x80, 0x15, 0x1c, 0x3a, 0x32, 0xa0, 0x08, 0x99, 0xb8 } + }, + { "a", + { 0xce, 0x78, 0x85, 0x06, 0x38, 0xf9, 0x26, 0x58, 0xa5, 0xa5, + 0x85, 0x09, 0x75, 0x79, 0x92, 0x6d, 0xda, 0x66, 0x7a, 0x57, + 0x16, 0x56, 0x2c, 0xfc, 0xf6, 0xfb, 0xe7, 0x7f, 0x63, 0x54, + 0x2f, 0x99, 0xb0, 0x47, 0x05, 0xd6, 0x97, 0x0d, 0xff, 0x5d } + }, + { "abc", + { 0xde, 0x4c, 0x01, 0xb3, 0x05, 0x4f, 0x89, 0x30, 0xa7, 0x9d, + 0x09, 0xae, 0x73, 0x8e, 0x92, 0x30, 0x1e, 0x5a, 0x17, 0x08, + 0x5b, 0xef, 0xfd, 0xc1, 0xb8, 0xd1, 0x16, 0x71, 0x3e, 0x74, + 0xf8, 0x2f, 0xa9, 0x42, 0xd6, 0x4c, 0xdb, 0xc4, 0x68, 0x2d } + }, + { "message digest", + { 0x3a, 0x8e, 0x28, 0x50, 0x2e, 0xd4, 0x5d, 0x42, 0x2f, 0x68, + 0x84, 0x4f, 0x9d, 0xd3, 0x16, 0xe7, 0xb9, 0x85, 0x33, 0xfa, + 0x3f, 0x2a, 0x91, 0xd2, 0x9f, 0x84, 0xd4, 0x25, 0xc8, 0x8d, + 0x6b, 0x4e, 0xff, 0x72, 0x7d, 0xf6, 0x6a, 0x7c, 0x01, 0x97 } + }, + { "abcdefghijklmnopqrstuvwxyz", + { 0xca, 0xbd, 0xb1, 0x81, 0x0b, 0x92, 0x47, 0x0a, 0x20, 0x93, + 0xaa, 0x6b, 0xce, 0x05, 0x95, 0x2c, 0x28, 0x34, 0x8c, 0xf4, + 0x3f, 0xf6, 0x08, 0x41, 0x97, 0x51, 0x66, 0xbb, 0x40, 0xed, + 0x23, 0x40, 0x04, 0xb8, 0x82, 0x44, 0x63, 0xe6, 0xb0, 0x09 } + }, + { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", + { 0xd0, 0x34, 0xa7, 0x95, 0x0c, 0xf7, 0x22, 0x02, 0x1b, 0xa4, + 0xb8, 0x4d, 0xf7, 0x69, 0xa5, 0xde, 0x20, 0x60, 0xe2, 0x59, + 0xdf, 0x4c, 0x9b, 0xb4, 0xa4, 0x26, 0x8c, 0x0e, 0x93, 0x5b, + 0xbc, 0x74, 0x70, 0xa9, 0x69, 0xc9, 0xd0, 0x72, 0xa1, 0xac } + } + }; + + int i; + unsigned char tmp[40]; + hash_state md; + + for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) { + rmd320_init(&md); + rmd320_process(&md, (unsigned char *)tests[i].msg, strlen(tests[i].msg)); + rmd320_done(&md, tmp); + if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "RIPEMD320", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/sha1.c b/fsbl/lib/libtomcrypt/src/hashes/sha1.c new file mode 100644 index 000000000..40f0175a6 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/sha1.c @@ -0,0 +1,286 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file sha1.c + LTC_SHA1 code by Tom St Denis +*/ + + +#ifdef LTC_SHA1 + +const struct ltc_hash_descriptor sha1_desc = +{ + "sha1", + 2, + 20, + 64, + + /* OID */ + { 1, 3, 14, 3, 2, 26, }, + 6, + + &sha1_init, + &sha1_process, + &sha1_done, + &sha1_test, + NULL +}; + +#define F0(x,y,z) (z ^ (x & (y ^ z))) +#define F1(x,y,z) (x ^ y ^ z) +#define F2(x,y,z) ((x & y) | (z & (x | y))) +#define F3(x,y,z) (x ^ y ^ z) + +#ifdef LTC_CLEAN_STACK +static int _sha1_compress(hash_state *md, unsigned char *buf) +#else +static int sha1_compress(hash_state *md, unsigned char *buf) +#endif +{ + ulong32 a,b,c,d,e,W[80],i; +#ifdef LTC_SMALL_CODE + ulong32 t; +#endif + + /* copy the state into 512-bits into W[0..15] */ + for (i = 0; i < 16; i++) { + LOAD32H(W[i], buf + (4*i)); + } + + /* copy state */ + a = md->sha1.state[0]; + b = md->sha1.state[1]; + c = md->sha1.state[2]; + d = md->sha1.state[3]; + e = md->sha1.state[4]; + + /* expand it */ + for (i = 16; i < 80; i++) { + W[i] = ROL(W[i-3] ^ W[i-8] ^ W[i-14] ^ W[i-16], 1); + } + + /* compress */ + /* round one */ + #define FF0(a,b,c,d,e,i) e = (ROLc(a, 5) + F0(b,c,d) + e + W[i] + 0x5a827999UL); b = ROLc(b, 30); + #define FF1(a,b,c,d,e,i) e = (ROLc(a, 5) + F1(b,c,d) + e + W[i] + 0x6ed9eba1UL); b = ROLc(b, 30); + #define FF2(a,b,c,d,e,i) e = (ROLc(a, 5) + F2(b,c,d) + e + W[i] + 0x8f1bbcdcUL); b = ROLc(b, 30); + #define FF3(a,b,c,d,e,i) e = (ROLc(a, 5) + F3(b,c,d) + e + W[i] + 0xca62c1d6UL); b = ROLc(b, 30); + +#ifdef LTC_SMALL_CODE + + for (i = 0; i < 20; ) { + FF0(a,b,c,d,e,i++); t = e; e = d; d = c; c = b; b = a; a = t; + } + + for (; i < 40; ) { + FF1(a,b,c,d,e,i++); t = e; e = d; d = c; c = b; b = a; a = t; + } + + for (; i < 60; ) { + FF2(a,b,c,d,e,i++); t = e; e = d; d = c; c = b; b = a; a = t; + } + + for (; i < 80; ) { + FF3(a,b,c,d,e,i++); t = e; e = d; d = c; c = b; b = a; a = t; + } + +#else + + for (i = 0; i < 20; ) { + FF0(a,b,c,d,e,i++); + FF0(e,a,b,c,d,i++); + FF0(d,e,a,b,c,i++); + FF0(c,d,e,a,b,i++); + FF0(b,c,d,e,a,i++); + } + + /* round two */ + for (; i < 40; ) { + FF1(a,b,c,d,e,i++); + FF1(e,a,b,c,d,i++); + FF1(d,e,a,b,c,i++); + FF1(c,d,e,a,b,i++); + FF1(b,c,d,e,a,i++); + } + + /* round three */ + for (; i < 60; ) { + FF2(a,b,c,d,e,i++); + FF2(e,a,b,c,d,i++); + FF2(d,e,a,b,c,i++); + FF2(c,d,e,a,b,i++); + FF2(b,c,d,e,a,i++); + } + + /* round four */ + for (; i < 80; ) { + FF3(a,b,c,d,e,i++); + FF3(e,a,b,c,d,i++); + FF3(d,e,a,b,c,i++); + FF3(c,d,e,a,b,i++); + FF3(b,c,d,e,a,i++); + } +#endif + + #undef FF0 + #undef FF1 + #undef FF2 + #undef FF3 + + /* store */ + md->sha1.state[0] = md->sha1.state[0] + a; + md->sha1.state[1] = md->sha1.state[1] + b; + md->sha1.state[2] = md->sha1.state[2] + c; + md->sha1.state[3] = md->sha1.state[3] + d; + md->sha1.state[4] = md->sha1.state[4] + e; + + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +static int sha1_compress(hash_state *md, unsigned char *buf) +{ + int err; + err = _sha1_compress(md, buf); + burn_stack(sizeof(ulong32) * 87); + return err; +} +#endif + +/** + Initialize the hash state + @param md The hash state you wish to initialize + @return CRYPT_OK if successful +*/ +int sha1_init(hash_state * md) +{ + LTC_ARGCHK(md != NULL); + md->sha1.state[0] = 0x67452301UL; + md->sha1.state[1] = 0xefcdab89UL; + md->sha1.state[2] = 0x98badcfeUL; + md->sha1.state[3] = 0x10325476UL; + md->sha1.state[4] = 0xc3d2e1f0UL; + md->sha1.curlen = 0; + md->sha1.length = 0; + return CRYPT_OK; +} + +/** + Process a block of memory though the hash + @param md The hash state + @param in The data to hash + @param inlen The length of the data (octets) + @return CRYPT_OK if successful +*/ +HASH_PROCESS(sha1_process, sha1_compress, sha1, 64) + +/** + Terminate the hash to get the digest + @param md The hash state + @param out [out] The destination of the hash (20 bytes) + @return CRYPT_OK if successful +*/ +int sha1_done(hash_state * md, unsigned char *out) +{ + int i; + + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(out != NULL); + + if (md->sha1.curlen >= sizeof(md->sha1.buf)) { + return CRYPT_INVALID_ARG; + } + + /* increase the length of the message */ + md->sha1.length += md->sha1.curlen * 8; + + /* append the '1' bit */ + md->sha1.buf[md->sha1.curlen++] = (unsigned char)0x80; + + /* if the length is currently above 56 bytes we append zeros + * then compress. Then we can fall back to padding zeros and length + * encoding like normal. + */ + if (md->sha1.curlen > 56) { + while (md->sha1.curlen < 64) { + md->sha1.buf[md->sha1.curlen++] = (unsigned char)0; + } + sha1_compress(md, md->sha1.buf); + md->sha1.curlen = 0; + } + + /* pad upto 56 bytes of zeroes */ + while (md->sha1.curlen < 56) { + md->sha1.buf[md->sha1.curlen++] = (unsigned char)0; + } + + /* store length */ + STORE64H(md->sha1.length, md->sha1.buf+56); + sha1_compress(md, md->sha1.buf); + + /* copy output */ + for (i = 0; i < 5; i++) { + STORE32H(md->sha1.state[i], out+(4*i)); + } +#ifdef LTC_CLEAN_STACK + zeromem(md, sizeof(hash_state)); +#endif + return CRYPT_OK; +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int sha1_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const struct { + const char *msg; + unsigned char hash[20]; + } tests[] = { + { "abc", + { 0xa9, 0x99, 0x3e, 0x36, 0x47, 0x06, 0x81, 0x6a, + 0xba, 0x3e, 0x25, 0x71, 0x78, 0x50, 0xc2, 0x6c, + 0x9c, 0xd0, 0xd8, 0x9d } + }, + { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", + { 0x84, 0x98, 0x3E, 0x44, 0x1C, 0x3B, 0xD2, 0x6E, + 0xBA, 0xAE, 0x4A, 0xA1, 0xF9, 0x51, 0x29, 0xE5, + 0xE5, 0x46, 0x70, 0xF1 } + } + }; + + int i; + unsigned char tmp[20]; + hash_state md; + + for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { + sha1_init(&md); + sha1_process(&md, (unsigned char*)tests[i].msg, (unsigned long)strlen(tests[i].msg)); + sha1_done(&md, tmp); + if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "SHA1", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; + #endif +} + +#endif + + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/sha2/sha224.c b/fsbl/lib/libtomcrypt/src/hashes/sha2/sha224.c new file mode 100644 index 000000000..773a2c521 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/sha2/sha224.c @@ -0,0 +1,129 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +/** + @param sha224.c + LTC_SHA-224 new NIST standard based off of LTC_SHA-256 truncated to 224 bits (Tom St Denis) +*/ + +#include "tomcrypt.h" + +#if defined(LTC_SHA224) && defined(LTC_SHA256) + +const struct ltc_hash_descriptor sha224_desc = +{ + "sha224", + 10, + 28, + 64, + + /* OID */ + { 2, 16, 840, 1, 101, 3, 4, 2, 4, }, + 9, + + &sha224_init, + &sha256_process, + &sha224_done, + &sha224_test, + NULL +}; + +/* init the sha256 er... sha224 state ;-) */ +/** + Initialize the hash state + @param md The hash state you wish to initialize + @return CRYPT_OK if successful +*/ +int sha224_init(hash_state * md) +{ + LTC_ARGCHK(md != NULL); + + md->sha256.curlen = 0; + md->sha256.length = 0; + md->sha256.state[0] = 0xc1059ed8UL; + md->sha256.state[1] = 0x367cd507UL; + md->sha256.state[2] = 0x3070dd17UL; + md->sha256.state[3] = 0xf70e5939UL; + md->sha256.state[4] = 0xffc00b31UL; + md->sha256.state[5] = 0x68581511UL; + md->sha256.state[6] = 0x64f98fa7UL; + md->sha256.state[7] = 0xbefa4fa4UL; + return CRYPT_OK; +} + +/** + Terminate the hash to get the digest + @param md The hash state + @param out [out] The destination of the hash (28 bytes) + @return CRYPT_OK if successful +*/ +int sha224_done(hash_state * md, unsigned char *out) +{ + unsigned char buf[32]; + int err; + + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(out != NULL); + + err = sha256_done(md, buf); + XMEMCPY(out, buf, 28); +#ifdef LTC_CLEAN_STACK + zeromem(buf, sizeof(buf)); +#endif + return err; +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int sha224_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const struct { + const char *msg; + unsigned char hash[28]; + } tests[] = { + { "abc", + { 0x23, 0x09, 0x7d, 0x22, 0x34, 0x05, 0xd8, + 0x22, 0x86, 0x42, 0xa4, 0x77, 0xbd, 0xa2, + 0x55, 0xb3, 0x2a, 0xad, 0xbc, 0xe4, 0xbd, + 0xa0, 0xb3, 0xf7, 0xe3, 0x6c, 0x9d, 0xa7 } + }, + { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", + { 0x75, 0x38, 0x8b, 0x16, 0x51, 0x27, 0x76, + 0xcc, 0x5d, 0xba, 0x5d, 0xa1, 0xfd, 0x89, + 0x01, 0x50, 0xb0, 0xc6, 0x45, 0x5c, 0xb4, + 0xf5, 0x8b, 0x19, 0x52, 0x52, 0x25, 0x25 } + }, + }; + + int i; + unsigned char tmp[28]; + hash_state md; + + for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { + sha224_init(&md); + sha224_process(&md, (unsigned char*)tests[i].msg, (unsigned long)strlen(tests[i].msg)); + sha224_done(&md, tmp); + if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "SHA224", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; + #endif +} + +#endif /* defined(LTC_SHA224) && defined(LTC_SHA256) */ + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/sha2/sha256.c b/fsbl/lib/libtomcrypt/src/hashes/sha2/sha256.c new file mode 100644 index 000000000..f1dc4232e --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/sha2/sha256.c @@ -0,0 +1,334 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file sha256.c + LTC_SHA256 by Tom St Denis +*/ + +#ifdef LTC_SHA256 + +const struct ltc_hash_descriptor sha256_desc = +{ + "sha256", + 0, + 32, + 64, + + /* OID */ + { 2, 16, 840, 1, 101, 3, 4, 2, 1, }, + 9, + + &sha256_init, + &sha256_process, + &sha256_done, + &sha256_test, + NULL +}; + +#ifdef LTC_SMALL_CODE +/* the K array */ +static const ulong32 K[64] = { + 0x428a2f98UL, 0x71374491UL, 0xb5c0fbcfUL, 0xe9b5dba5UL, 0x3956c25bUL, + 0x59f111f1UL, 0x923f82a4UL, 0xab1c5ed5UL, 0xd807aa98UL, 0x12835b01UL, + 0x243185beUL, 0x550c7dc3UL, 0x72be5d74UL, 0x80deb1feUL, 0x9bdc06a7UL, + 0xc19bf174UL, 0xe49b69c1UL, 0xefbe4786UL, 0x0fc19dc6UL, 0x240ca1ccUL, + 0x2de92c6fUL, 0x4a7484aaUL, 0x5cb0a9dcUL, 0x76f988daUL, 0x983e5152UL, + 0xa831c66dUL, 0xb00327c8UL, 0xbf597fc7UL, 0xc6e00bf3UL, 0xd5a79147UL, + 0x06ca6351UL, 0x14292967UL, 0x27b70a85UL, 0x2e1b2138UL, 0x4d2c6dfcUL, + 0x53380d13UL, 0x650a7354UL, 0x766a0abbUL, 0x81c2c92eUL, 0x92722c85UL, + 0xa2bfe8a1UL, 0xa81a664bUL, 0xc24b8b70UL, 0xc76c51a3UL, 0xd192e819UL, + 0xd6990624UL, 0xf40e3585UL, 0x106aa070UL, 0x19a4c116UL, 0x1e376c08UL, + 0x2748774cUL, 0x34b0bcb5UL, 0x391c0cb3UL, 0x4ed8aa4aUL, 0x5b9cca4fUL, + 0x682e6ff3UL, 0x748f82eeUL, 0x78a5636fUL, 0x84c87814UL, 0x8cc70208UL, + 0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL +}; +#endif + +/* Various logical functions */ +#define Ch(x,y,z) (z ^ (x & (y ^ z))) +#define Maj(x,y,z) (((x | y) & z) | (x & y)) +#define S(x, n) RORc((x),(n)) +#define R(x, n) (((x)&0xFFFFFFFFUL)>>(n)) +#define Sigma0(x) (S(x, 2) ^ S(x, 13) ^ S(x, 22)) +#define Sigma1(x) (S(x, 6) ^ S(x, 11) ^ S(x, 25)) +#define Gamma0(x) (S(x, 7) ^ S(x, 18) ^ R(x, 3)) +#define Gamma1(x) (S(x, 17) ^ S(x, 19) ^ R(x, 10)) + +/* compress 512-bits */ +#ifdef LTC_CLEAN_STACK +static int _sha256_compress(hash_state * md, unsigned char *buf) +#else +static int sha256_compress(hash_state * md, unsigned char *buf) +#endif +{ + ulong32 S[8], W[64], t0, t1; +#ifdef LTC_SMALL_CODE + ulong32 t; +#endif + int i; + + /* copy state into S */ + for (i = 0; i < 8; i++) { + S[i] = md->sha256.state[i]; + } + + /* copy the state into 512-bits into W[0..15] */ + for (i = 0; i < 16; i++) { + LOAD32H(W[i], buf + (4*i)); + } + + /* fill W[16..63] */ + for (i = 16; i < 64; i++) { + W[i] = Gamma1(W[i - 2]) + W[i - 7] + Gamma0(W[i - 15]) + W[i - 16]; + } + + /* Compress */ +#ifdef LTC_SMALL_CODE +#define RND(a,b,c,d,e,f,g,h,i) \ + t0 = h + Sigma1(e) + Ch(e, f, g) + K[i] + W[i]; \ + t1 = Sigma0(a) + Maj(a, b, c); \ + d += t0; \ + h = t0 + t1; + + for (i = 0; i < 64; ++i) { + RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],i); + t = S[7]; S[7] = S[6]; S[6] = S[5]; S[5] = S[4]; + S[4] = S[3]; S[3] = S[2]; S[2] = S[1]; S[1] = S[0]; S[0] = t; + } +#else +#define RND(a,b,c,d,e,f,g,h,i,ki) \ + t0 = h + Sigma1(e) + Ch(e, f, g) + ki + W[i]; \ + t1 = Sigma0(a) + Maj(a, b, c); \ + d += t0; \ + h = t0 + t1; + + RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],0,0x428a2f98); + RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],1,0x71374491); + RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],2,0xb5c0fbcf); + RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],3,0xe9b5dba5); + RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],4,0x3956c25b); + RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],5,0x59f111f1); + RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],6,0x923f82a4); + RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],7,0xab1c5ed5); + RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],8,0xd807aa98); + RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],9,0x12835b01); + RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],10,0x243185be); + RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],11,0x550c7dc3); + RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],12,0x72be5d74); + RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],13,0x80deb1fe); + RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],14,0x9bdc06a7); + RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],15,0xc19bf174); + RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],16,0xe49b69c1); + RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],17,0xefbe4786); + RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],18,0x0fc19dc6); + RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],19,0x240ca1cc); + RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],20,0x2de92c6f); + RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],21,0x4a7484aa); + RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],22,0x5cb0a9dc); + RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],23,0x76f988da); + RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],24,0x983e5152); + RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],25,0xa831c66d); + RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],26,0xb00327c8); + RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],27,0xbf597fc7); + RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],28,0xc6e00bf3); + RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],29,0xd5a79147); + RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],30,0x06ca6351); + RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],31,0x14292967); + RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],32,0x27b70a85); + RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],33,0x2e1b2138); + RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],34,0x4d2c6dfc); + RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],35,0x53380d13); + RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],36,0x650a7354); + RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],37,0x766a0abb); + RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],38,0x81c2c92e); + RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],39,0x92722c85); + RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],40,0xa2bfe8a1); + RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],41,0xa81a664b); + RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],42,0xc24b8b70); + RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],43,0xc76c51a3); + RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],44,0xd192e819); + RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],45,0xd6990624); + RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],46,0xf40e3585); + RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],47,0x106aa070); + RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],48,0x19a4c116); + RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],49,0x1e376c08); + RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],50,0x2748774c); + RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],51,0x34b0bcb5); + RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],52,0x391c0cb3); + RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],53,0x4ed8aa4a); + RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],54,0x5b9cca4f); + RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],55,0x682e6ff3); + RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],56,0x748f82ee); + RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],57,0x78a5636f); + RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],58,0x84c87814); + RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],59,0x8cc70208); + RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],60,0x90befffa); + RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],61,0xa4506ceb); + RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],62,0xbef9a3f7); + RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],63,0xc67178f2); + +#undef RND + +#endif + + /* feedback */ + for (i = 0; i < 8; i++) { + md->sha256.state[i] = md->sha256.state[i] + S[i]; + } + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +static int sha256_compress(hash_state * md, unsigned char *buf) +{ + int err; + err = _sha256_compress(md, buf); + burn_stack(sizeof(ulong32) * 74); + return err; +} +#endif + +/** + Initialize the hash state + @param md The hash state you wish to initialize + @return CRYPT_OK if successful +*/ +int sha256_init(hash_state * md) +{ + LTC_ARGCHK(md != NULL); + + md->sha256.curlen = 0; + md->sha256.length = 0; + md->sha256.state[0] = 0x6A09E667UL; + md->sha256.state[1] = 0xBB67AE85UL; + md->sha256.state[2] = 0x3C6EF372UL; + md->sha256.state[3] = 0xA54FF53AUL; + md->sha256.state[4] = 0x510E527FUL; + md->sha256.state[5] = 0x9B05688CUL; + md->sha256.state[6] = 0x1F83D9ABUL; + md->sha256.state[7] = 0x5BE0CD19UL; + return CRYPT_OK; +} + +/** + Process a block of memory though the hash + @param md The hash state + @param in The data to hash + @param inlen The length of the data (octets) + @return CRYPT_OK if successful +*/ +HASH_PROCESS(sha256_process, sha256_compress, sha256, 64) + +/** + Terminate the hash to get the digest + @param md The hash state + @param out [out] The destination of the hash (32 bytes) + @return CRYPT_OK if successful +*/ +int sha256_done(hash_state * md, unsigned char *out) +{ + int i; + + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(out != NULL); + + if (md->sha256.curlen >= sizeof(md->sha256.buf)) { + return CRYPT_INVALID_ARG; + } + + + /* increase the length of the message */ + md->sha256.length += md->sha256.curlen * 8; + + /* append the '1' bit */ + md->sha256.buf[md->sha256.curlen++] = (unsigned char)0x80; + + /* if the length is currently above 56 bytes we append zeros + * then compress. Then we can fall back to padding zeros and length + * encoding like normal. + */ + if (md->sha256.curlen > 56) { + while (md->sha256.curlen < 64) { + md->sha256.buf[md->sha256.curlen++] = (unsigned char)0; + } + sha256_compress(md, md->sha256.buf); + md->sha256.curlen = 0; + } + + /* pad upto 56 bytes of zeroes */ + while (md->sha256.curlen < 56) { + md->sha256.buf[md->sha256.curlen++] = (unsigned char)0; + } + + /* store length */ + STORE64H(md->sha256.length, md->sha256.buf+56); + sha256_compress(md, md->sha256.buf); + + /* copy output */ + for (i = 0; i < 8; i++) { + STORE32H(md->sha256.state[i], out+(4*i)); + } +#ifdef LTC_CLEAN_STACK + zeromem(md, sizeof(hash_state)); +#endif + return CRYPT_OK; +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int sha256_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const struct { + const char *msg; + unsigned char hash[32]; + } tests[] = { + { "abc", + { 0xba, 0x78, 0x16, 0xbf, 0x8f, 0x01, 0xcf, 0xea, + 0x41, 0x41, 0x40, 0xde, 0x5d, 0xae, 0x22, 0x23, + 0xb0, 0x03, 0x61, 0xa3, 0x96, 0x17, 0x7a, 0x9c, + 0xb4, 0x10, 0xff, 0x61, 0xf2, 0x00, 0x15, 0xad } + }, + { "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", + { 0x24, 0x8d, 0x6a, 0x61, 0xd2, 0x06, 0x38, 0xb8, + 0xe5, 0xc0, 0x26, 0x93, 0x0c, 0x3e, 0x60, 0x39, + 0xa3, 0x3c, 0xe4, 0x59, 0x64, 0xff, 0x21, 0x67, + 0xf6, 0xec, 0xed, 0xd4, 0x19, 0xdb, 0x06, 0xc1 } + }, + }; + + int i; + unsigned char tmp[32]; + hash_state md; + + for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { + sha256_init(&md); + sha256_process(&md, (unsigned char*)tests[i].msg, (unsigned long)strlen(tests[i].msg)); + sha256_done(&md, tmp); + if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "SHA256", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; + #endif +} + +#endif + + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/sha2/sha384.c b/fsbl/lib/libtomcrypt/src/hashes/sha2/sha384.c new file mode 100644 index 000000000..16238127b --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/sha2/sha384.c @@ -0,0 +1,134 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +/** + @param sha384.c + LTC_SHA384 hash included in sha512.c, Tom St Denis +*/ + +#include "tomcrypt.h" + +#if defined(LTC_SHA384) && defined(LTC_SHA512) + +const struct ltc_hash_descriptor sha384_desc = +{ + "sha384", + 4, + 48, + 128, + + /* OID */ + { 2, 16, 840, 1, 101, 3, 4, 2, 2, }, + 9, + + &sha384_init, + &sha512_process, + &sha384_done, + &sha384_test, + NULL +}; + +/** + Initialize the hash state + @param md The hash state you wish to initialize + @return CRYPT_OK if successful +*/ +int sha384_init(hash_state * md) +{ + LTC_ARGCHK(md != NULL); + + md->sha512.curlen = 0; + md->sha512.length = 0; + md->sha512.state[0] = CONST64(0xcbbb9d5dc1059ed8); + md->sha512.state[1] = CONST64(0x629a292a367cd507); + md->sha512.state[2] = CONST64(0x9159015a3070dd17); + md->sha512.state[3] = CONST64(0x152fecd8f70e5939); + md->sha512.state[4] = CONST64(0x67332667ffc00b31); + md->sha512.state[5] = CONST64(0x8eb44a8768581511); + md->sha512.state[6] = CONST64(0xdb0c2e0d64f98fa7); + md->sha512.state[7] = CONST64(0x47b5481dbefa4fa4); + return CRYPT_OK; +} + +/** + Terminate the hash to get the digest + @param md The hash state + @param out [out] The destination of the hash (48 bytes) + @return CRYPT_OK if successful +*/ +int sha384_done(hash_state * md, unsigned char *out) +{ + unsigned char buf[64]; + + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(out != NULL); + + if (md->sha512.curlen >= sizeof(md->sha512.buf)) { + return CRYPT_INVALID_ARG; + } + + sha512_done(md, buf); + XMEMCPY(out, buf, 48); +#ifdef LTC_CLEAN_STACK + zeromem(buf, sizeof(buf)); +#endif + return CRYPT_OK; +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int sha384_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const struct { + const char *msg; + unsigned char hash[48]; + } tests[] = { + { "abc", + { 0xcb, 0x00, 0x75, 0x3f, 0x45, 0xa3, 0x5e, 0x8b, + 0xb5, 0xa0, 0x3d, 0x69, 0x9a, 0xc6, 0x50, 0x07, + 0x27, 0x2c, 0x32, 0xab, 0x0e, 0xde, 0xd1, 0x63, + 0x1a, 0x8b, 0x60, 0x5a, 0x43, 0xff, 0x5b, 0xed, + 0x80, 0x86, 0x07, 0x2b, 0xa1, 0xe7, 0xcc, 0x23, + 0x58, 0xba, 0xec, 0xa1, 0x34, 0xc8, 0x25, 0xa7 } + }, + { "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", + { 0x09, 0x33, 0x0c, 0x33, 0xf7, 0x11, 0x47, 0xe8, + 0x3d, 0x19, 0x2f, 0xc7, 0x82, 0xcd, 0x1b, 0x47, + 0x53, 0x11, 0x1b, 0x17, 0x3b, 0x3b, 0x05, 0xd2, + 0x2f, 0xa0, 0x80, 0x86, 0xe3, 0xb0, 0xf7, 0x12, + 0xfc, 0xc7, 0xc7, 0x1a, 0x55, 0x7e, 0x2d, 0xb9, + 0x66, 0xc3, 0xe9, 0xfa, 0x91, 0x74, 0x60, 0x39 } + }, + }; + + int i; + unsigned char tmp[48]; + hash_state md; + + for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { + sha384_init(&md); + sha384_process(&md, (unsigned char*)tests[i].msg, (unsigned long)strlen(tests[i].msg)); + sha384_done(&md, tmp); + if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "SHA384", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; + #endif +} + +#endif /* defined(LTC_SHA384) && defined(LTC_SHA512) */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/sha2/sha512.c b/fsbl/lib/libtomcrypt/src/hashes/sha2/sha512.c new file mode 100644 index 000000000..110203a6f --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/sha2/sha512.c @@ -0,0 +1,313 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @param sha512.c + LTC_SHA512 by Tom St Denis +*/ + +#ifdef LTC_SHA512 + +const struct ltc_hash_descriptor sha512_desc = +{ + "sha512", + 5, + 64, + 128, + + /* OID */ + { 2, 16, 840, 1, 101, 3, 4, 2, 3, }, + 9, + + &sha512_init, + &sha512_process, + &sha512_done, + &sha512_test, + NULL +}; + +/* the K array */ +static const ulong64 K[80] = { +CONST64(0x428a2f98d728ae22), CONST64(0x7137449123ef65cd), +CONST64(0xb5c0fbcfec4d3b2f), CONST64(0xe9b5dba58189dbbc), +CONST64(0x3956c25bf348b538), CONST64(0x59f111f1b605d019), +CONST64(0x923f82a4af194f9b), CONST64(0xab1c5ed5da6d8118), +CONST64(0xd807aa98a3030242), CONST64(0x12835b0145706fbe), +CONST64(0x243185be4ee4b28c), CONST64(0x550c7dc3d5ffb4e2), +CONST64(0x72be5d74f27b896f), CONST64(0x80deb1fe3b1696b1), +CONST64(0x9bdc06a725c71235), CONST64(0xc19bf174cf692694), +CONST64(0xe49b69c19ef14ad2), CONST64(0xefbe4786384f25e3), +CONST64(0x0fc19dc68b8cd5b5), CONST64(0x240ca1cc77ac9c65), +CONST64(0x2de92c6f592b0275), CONST64(0x4a7484aa6ea6e483), +CONST64(0x5cb0a9dcbd41fbd4), CONST64(0x76f988da831153b5), +CONST64(0x983e5152ee66dfab), CONST64(0xa831c66d2db43210), +CONST64(0xb00327c898fb213f), CONST64(0xbf597fc7beef0ee4), +CONST64(0xc6e00bf33da88fc2), CONST64(0xd5a79147930aa725), +CONST64(0x06ca6351e003826f), CONST64(0x142929670a0e6e70), +CONST64(0x27b70a8546d22ffc), CONST64(0x2e1b21385c26c926), +CONST64(0x4d2c6dfc5ac42aed), CONST64(0x53380d139d95b3df), +CONST64(0x650a73548baf63de), CONST64(0x766a0abb3c77b2a8), +CONST64(0x81c2c92e47edaee6), CONST64(0x92722c851482353b), +CONST64(0xa2bfe8a14cf10364), CONST64(0xa81a664bbc423001), +CONST64(0xc24b8b70d0f89791), CONST64(0xc76c51a30654be30), +CONST64(0xd192e819d6ef5218), CONST64(0xd69906245565a910), +CONST64(0xf40e35855771202a), CONST64(0x106aa07032bbd1b8), +CONST64(0x19a4c116b8d2d0c8), CONST64(0x1e376c085141ab53), +CONST64(0x2748774cdf8eeb99), CONST64(0x34b0bcb5e19b48a8), +CONST64(0x391c0cb3c5c95a63), CONST64(0x4ed8aa4ae3418acb), +CONST64(0x5b9cca4f7763e373), CONST64(0x682e6ff3d6b2b8a3), +CONST64(0x748f82ee5defb2fc), CONST64(0x78a5636f43172f60), +CONST64(0x84c87814a1f0ab72), CONST64(0x8cc702081a6439ec), +CONST64(0x90befffa23631e28), CONST64(0xa4506cebde82bde9), +CONST64(0xbef9a3f7b2c67915), CONST64(0xc67178f2e372532b), +CONST64(0xca273eceea26619c), CONST64(0xd186b8c721c0c207), +CONST64(0xeada7dd6cde0eb1e), CONST64(0xf57d4f7fee6ed178), +CONST64(0x06f067aa72176fba), CONST64(0x0a637dc5a2c898a6), +CONST64(0x113f9804bef90dae), CONST64(0x1b710b35131c471b), +CONST64(0x28db77f523047d84), CONST64(0x32caab7b40c72493), +CONST64(0x3c9ebe0a15c9bebc), CONST64(0x431d67c49c100d4c), +CONST64(0x4cc5d4becb3e42b6), CONST64(0x597f299cfc657e2a), +CONST64(0x5fcb6fab3ad6faec), CONST64(0x6c44198c4a475817) +}; + +/* Various logical functions */ +#define Ch(x,y,z) (z ^ (x & (y ^ z))) +#define Maj(x,y,z) (((x | y) & z) | (x & y)) +#define S(x, n) ROR64c(x, n) +#define R(x, n) (((x)&CONST64(0xFFFFFFFFFFFFFFFF))>>((ulong64)n)) +#define Sigma0(x) (S(x, 28) ^ S(x, 34) ^ S(x, 39)) +#define Sigma1(x) (S(x, 14) ^ S(x, 18) ^ S(x, 41)) +#define Gamma0(x) (S(x, 1) ^ S(x, 8) ^ R(x, 7)) +#define Gamma1(x) (S(x, 19) ^ S(x, 61) ^ R(x, 6)) + +/* compress 1024-bits */ +#ifdef LTC_CLEAN_STACK +static int _sha512_compress(hash_state * md, unsigned char *buf) +#else +static int sha512_compress(hash_state * md, unsigned char *buf) +#endif +{ + ulong64 S[8], W[80], t0, t1; + int i; + + /* copy state into S */ + for (i = 0; i < 8; i++) { + S[i] = md->sha512.state[i]; + } + + /* copy the state into 1024-bits into W[0..15] */ + for (i = 0; i < 16; i++) { + LOAD64H(W[i], buf + (8*i)); + } + + /* fill W[16..79] */ + for (i = 16; i < 80; i++) { + W[i] = Gamma1(W[i - 2]) + W[i - 7] + Gamma0(W[i - 15]) + W[i - 16]; + } + + /* Compress */ +#ifdef LTC_SMALL_CODE + for (i = 0; i < 80; i++) { + t0 = S[7] + Sigma1(S[4]) + Ch(S[4], S[5], S[6]) + K[i] + W[i]; + t1 = Sigma0(S[0]) + Maj(S[0], S[1], S[2]); + S[7] = S[6]; + S[6] = S[5]; + S[5] = S[4]; + S[4] = S[3] + t0; + S[3] = S[2]; + S[2] = S[1]; + S[1] = S[0]; + S[0] = t0 + t1; + } +#else +#define RND(a,b,c,d,e,f,g,h,i) \ + t0 = h + Sigma1(e) + Ch(e, f, g) + K[i] + W[i]; \ + t1 = Sigma0(a) + Maj(a, b, c); \ + d += t0; \ + h = t0 + t1; + + for (i = 0; i < 80; i += 8) { + RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],i+0); + RND(S[7],S[0],S[1],S[2],S[3],S[4],S[5],S[6],i+1); + RND(S[6],S[7],S[0],S[1],S[2],S[3],S[4],S[5],i+2); + RND(S[5],S[6],S[7],S[0],S[1],S[2],S[3],S[4],i+3); + RND(S[4],S[5],S[6],S[7],S[0],S[1],S[2],S[3],i+4); + RND(S[3],S[4],S[5],S[6],S[7],S[0],S[1],S[2],i+5); + RND(S[2],S[3],S[4],S[5],S[6],S[7],S[0],S[1],i+6); + RND(S[1],S[2],S[3],S[4],S[5],S[6],S[7],S[0],i+7); + } +#endif + + + /* feedback */ + for (i = 0; i < 8; i++) { + md->sha512.state[i] = md->sha512.state[i] + S[i]; + } + + return CRYPT_OK; +} + +/* compress 1024-bits */ +#ifdef LTC_CLEAN_STACK +static int sha512_compress(hash_state * md, unsigned char *buf) +{ + int err; + err = _sha512_compress(md, buf); + burn_stack(sizeof(ulong64) * 90 + sizeof(int)); + return err; +} +#endif + +/** + Initialize the hash state + @param md The hash state you wish to initialize + @return CRYPT_OK if successful +*/ +int sha512_init(hash_state * md) +{ + LTC_ARGCHK(md != NULL); + md->sha512.curlen = 0; + md->sha512.length = 0; + md->sha512.state[0] = CONST64(0x6a09e667f3bcc908); + md->sha512.state[1] = CONST64(0xbb67ae8584caa73b); + md->sha512.state[2] = CONST64(0x3c6ef372fe94f82b); + md->sha512.state[3] = CONST64(0xa54ff53a5f1d36f1); + md->sha512.state[4] = CONST64(0x510e527fade682d1); + md->sha512.state[5] = CONST64(0x9b05688c2b3e6c1f); + md->sha512.state[6] = CONST64(0x1f83d9abfb41bd6b); + md->sha512.state[7] = CONST64(0x5be0cd19137e2179); + return CRYPT_OK; +} + +/** + Process a block of memory though the hash + @param md The hash state + @param in The data to hash + @param inlen The length of the data (octets) + @return CRYPT_OK if successful +*/ +HASH_PROCESS(sha512_process, sha512_compress, sha512, 128) + +/** + Terminate the hash to get the digest + @param md The hash state + @param out [out] The destination of the hash (64 bytes) + @return CRYPT_OK if successful +*/ +int sha512_done(hash_state * md, unsigned char *out) +{ + int i; + + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(out != NULL); + + if (md->sha512.curlen >= sizeof(md->sha512.buf)) { + return CRYPT_INVALID_ARG; + } + + /* increase the length of the message */ + md->sha512.length += md->sha512.curlen * CONST64(8); + + /* append the '1' bit */ + md->sha512.buf[md->sha512.curlen++] = (unsigned char)0x80; + + /* if the length is currently above 112 bytes we append zeros + * then compress. Then we can fall back to padding zeros and length + * encoding like normal. + */ + if (md->sha512.curlen > 112) { + while (md->sha512.curlen < 128) { + md->sha512.buf[md->sha512.curlen++] = (unsigned char)0; + } + sha512_compress(md, md->sha512.buf); + md->sha512.curlen = 0; + } + + /* pad upto 120 bytes of zeroes + * note: that from 112 to 120 is the 64 MSB of the length. We assume that you won't hash + * > 2^64 bits of data... :-) + */ + while (md->sha512.curlen < 120) { + md->sha512.buf[md->sha512.curlen++] = (unsigned char)0; + } + + /* store length */ + STORE64H(md->sha512.length, md->sha512.buf+120); + sha512_compress(md, md->sha512.buf); + + /* copy output */ + for (i = 0; i < 8; i++) { + STORE64H(md->sha512.state[i], out+(8*i)); + } +#ifdef LTC_CLEAN_STACK + zeromem(md, sizeof(hash_state)); +#endif + return CRYPT_OK; +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int sha512_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const struct { + const char *msg; + unsigned char hash[64]; + } tests[] = { + { "abc", + { 0xdd, 0xaf, 0x35, 0xa1, 0x93, 0x61, 0x7a, 0xba, + 0xcc, 0x41, 0x73, 0x49, 0xae, 0x20, 0x41, 0x31, + 0x12, 0xe6, 0xfa, 0x4e, 0x89, 0xa9, 0x7e, 0xa2, + 0x0a, 0x9e, 0xee, 0xe6, 0x4b, 0x55, 0xd3, 0x9a, + 0x21, 0x92, 0x99, 0x2a, 0x27, 0x4f, 0xc1, 0xa8, + 0x36, 0xba, 0x3c, 0x23, 0xa3, 0xfe, 0xeb, 0xbd, + 0x45, 0x4d, 0x44, 0x23, 0x64, 0x3c, 0xe8, 0x0e, + 0x2a, 0x9a, 0xc9, 0x4f, 0xa5, 0x4c, 0xa4, 0x9f } + }, + { "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", + { 0x8e, 0x95, 0x9b, 0x75, 0xda, 0xe3, 0x13, 0xda, + 0x8c, 0xf4, 0xf7, 0x28, 0x14, 0xfc, 0x14, 0x3f, + 0x8f, 0x77, 0x79, 0xc6, 0xeb, 0x9f, 0x7f, 0xa1, + 0x72, 0x99, 0xae, 0xad, 0xb6, 0x88, 0x90, 0x18, + 0x50, 0x1d, 0x28, 0x9e, 0x49, 0x00, 0xf7, 0xe4, + 0x33, 0x1b, 0x99, 0xde, 0xc4, 0xb5, 0x43, 0x3a, + 0xc7, 0xd3, 0x29, 0xee, 0xb6, 0xdd, 0x26, 0x54, + 0x5e, 0x96, 0xe5, 0x5b, 0x87, 0x4b, 0xe9, 0x09 } + }, + }; + + int i; + unsigned char tmp[64]; + hash_state md; + + for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { + sha512_init(&md); + sha512_process(&md, (unsigned char *)tests[i].msg, (unsigned long)strlen(tests[i].msg)); + sha512_done(&md, tmp); + if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "SHA512", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; + #endif +} + +#endif + + + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/sha2/sha512_224.c b/fsbl/lib/libtomcrypt/src/hashes/sha2/sha512_224.c new file mode 100644 index 000000000..48bb93845 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/sha2/sha512_224.c @@ -0,0 +1,130 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +/** + @param sha512_224.c + SHA512/224 hash included in sha512.c +*/ + +#include "tomcrypt.h" + +#if defined(LTC_SHA512_224) && defined(LTC_SHA512) + +const struct ltc_hash_descriptor sha512_224_desc = +{ + "sha512-224", + 15, + 28, + 128, + + /* OID */ + { 2, 16, 840, 1, 101, 3, 4, 2, 5, }, + 9, + + &sha512_224_init, + &sha512_process, + &sha512_224_done, + &sha512_224_test, + NULL +}; + +/** + Initialize the hash state + @param md The hash state you wish to initialize + @return CRYPT_OK if successful +*/ +int sha512_224_init(hash_state * md) +{ + LTC_ARGCHK(md != NULL); + + md->sha512.curlen = 0; + md->sha512.length = 0; + md->sha512.state[0] = CONST64(0x8C3D37C819544DA2); + md->sha512.state[1] = CONST64(0x73E1996689DCD4D6); + md->sha512.state[2] = CONST64(0x1DFAB7AE32FF9C82); + md->sha512.state[3] = CONST64(0x679DD514582F9FCF); + md->sha512.state[4] = CONST64(0x0F6D2B697BD44DA8); + md->sha512.state[5] = CONST64(0x77E36F7304C48942); + md->sha512.state[6] = CONST64(0x3F9D85A86A1D36C8); + md->sha512.state[7] = CONST64(0x1112E6AD91D692A1); + return CRYPT_OK; +} + +/** + Terminate the hash to get the digest + @param md The hash state + @param out [out] The destination of the hash (48 bytes) + @return CRYPT_OK if successful +*/ +int sha512_224_done(hash_state * md, unsigned char *out) +{ + unsigned char buf[64]; + + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(out != NULL); + + if (md->sha512.curlen >= sizeof(md->sha512.buf)) { + return CRYPT_INVALID_ARG; + } + + sha512_done(md, buf); + XMEMCPY(out, buf, 28); +#ifdef LTC_CLEAN_STACK + zeromem(buf, sizeof(buf)); +#endif + return CRYPT_OK; +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int sha512_224_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const struct { + const char *msg; + unsigned char hash[28]; + } tests[] = { + { "abc", + { 0x46, 0x34, 0x27, 0x0F, 0x70, 0x7B, 0x6A, 0x54, + 0xDA, 0xAE, 0x75, 0x30, 0x46, 0x08, 0x42, 0xE2, + 0x0E, 0x37, 0xED, 0x26, 0x5C, 0xEE, 0xE9, 0xA4, + 0x3E, 0x89, 0x24, 0xAA } + }, + { "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", + { 0x23, 0xFE, 0xC5, 0xBB, 0x94, 0xD6, 0x0B, 0x23, + 0x30, 0x81, 0x92, 0x64, 0x0B, 0x0C, 0x45, 0x33, + 0x35, 0xD6, 0x64, 0x73, 0x4F, 0xE4, 0x0E, 0x72, + 0x68, 0x67, 0x4A, 0xF9 } + }, + }; + + int i; + unsigned char tmp[28]; + hash_state md; + + for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { + sha512_224_init(&md); + sha512_224_process(&md, (unsigned char*)tests[i].msg, (unsigned long)strlen(tests[i].msg)); + sha512_224_done(&md, tmp); + if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "SHA512-224", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; + #endif +} + +#endif /* defined(LTC_SHA384) && defined(LTC_SHA512) */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/sha2/sha512_256.c b/fsbl/lib/libtomcrypt/src/hashes/sha2/sha512_256.c new file mode 100644 index 000000000..943adaa6f --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/sha2/sha512_256.c @@ -0,0 +1,130 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +/** + @param sha512_256.c + SHA512/256 hash included in sha512.c +*/ + +#include "tomcrypt.h" + +#if defined(LTC_SHA512_256) && defined(LTC_SHA512) + +const struct ltc_hash_descriptor sha512_256_desc = +{ + "sha512-256", + 16, + 32, + 128, + + /* OID */ + { 2, 16, 840, 1, 101, 3, 4, 2, 6, }, + 9, + + &sha512_256_init, + &sha512_process, + &sha512_256_done, + &sha512_256_test, + NULL +}; + +/** + Initialize the hash state + @param md The hash state you wish to initialize + @return CRYPT_OK if successful +*/ +int sha512_256_init(hash_state * md) +{ + LTC_ARGCHK(md != NULL); + + md->sha512.curlen = 0; + md->sha512.length = 0; + md->sha512.state[0] = CONST64(0x22312194FC2BF72C); + md->sha512.state[1] = CONST64(0x9F555FA3C84C64C2); + md->sha512.state[2] = CONST64(0x2393B86B6F53B151); + md->sha512.state[3] = CONST64(0x963877195940EABD); + md->sha512.state[4] = CONST64(0x96283EE2A88EFFE3); + md->sha512.state[5] = CONST64(0xBE5E1E2553863992); + md->sha512.state[6] = CONST64(0x2B0199FC2C85B8AA); + md->sha512.state[7] = CONST64(0x0EB72DDC81C52CA2); + return CRYPT_OK; +} + +/** + Terminate the hash to get the digest + @param md The hash state + @param out [out] The destination of the hash (48 bytes) + @return CRYPT_OK if successful +*/ +int sha512_256_done(hash_state * md, unsigned char *out) +{ + unsigned char buf[64]; + + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(out != NULL); + + if (md->sha512.curlen >= sizeof(md->sha512.buf)) { + return CRYPT_INVALID_ARG; + } + + sha512_done(md, buf); + XMEMCPY(out, buf, 32); +#ifdef LTC_CLEAN_STACK + zeromem(buf, sizeof(buf)); +#endif + return CRYPT_OK; +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int sha512_256_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const struct { + const char *msg; + unsigned char hash[32]; + } tests[] = { + { "abc", + { 0x53, 0x04, 0x8E, 0x26, 0x81, 0x94, 0x1E, 0xF9, + 0x9B, 0x2E, 0x29, 0xB7, 0x6B, 0x4C, 0x7D, 0xAB, + 0xE4, 0xC2, 0xD0, 0xC6, 0x34, 0xFC, 0x6D, 0x46, + 0xE0, 0xE2, 0xF1, 0x31, 0x07, 0xE7, 0xAF, 0x23 } + }, + { "abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", + { 0x39, 0x28, 0xE1, 0x84, 0xFB, 0x86, 0x90, 0xF8, + 0x40, 0xDA, 0x39, 0x88, 0x12, 0x1D, 0x31, 0xBE, + 0x65, 0xCB, 0x9D, 0x3E, 0xF8, 0x3E, 0xE6, 0x14, + 0x6F, 0xEA, 0xC8, 0x61, 0xE1, 0x9B, 0x56, 0x3A } + }, + }; + + int i; + unsigned char tmp[32]; + hash_state md; + + for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { + sha512_256_init(&md); + sha512_256_process(&md, (unsigned char*)tests[i].msg, (unsigned long)strlen(tests[i].msg)); + sha512_256_done(&md, tmp); + if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "SHA512-265", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; + #endif +} + +#endif /* defined(LTC_SHA384) && defined(LTC_SHA512) */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/sha3.c b/fsbl/lib/libtomcrypt/src/hashes/sha3.c new file mode 100644 index 000000000..c6faa0b98 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/sha3.c @@ -0,0 +1,306 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* based on https://github.com/brainhub/SHA3IUF (public domain) */ + +#include "tomcrypt.h" + +#ifdef LTC_SHA3 + +const struct ltc_hash_descriptor sha3_224_desc = +{ + "sha3-224", /* name of hash */ + 17, /* internal ID */ + 28, /* Size of digest in octets */ + 144, /* Input block size in octets */ + { 2,16,840,1,101,3,4,2,7 }, /* ASN.1 OID */ + 9, /* Length OID */ + &sha3_224_init, + &sha3_process, + &sha3_done, + &sha3_224_test, + NULL +}; + +const struct ltc_hash_descriptor sha3_256_desc = +{ + "sha3-256", /* name of hash */ + 18, /* internal ID */ + 32, /* Size of digest in octets */ + 136, /* Input block size in octets */ + { 2,16,840,1,101,3,4,2,8 }, /* ASN.1 OID */ + 9, /* Length OID */ + &sha3_256_init, + &sha3_process, + &sha3_done, + &sha3_256_test, + NULL +}; + +const struct ltc_hash_descriptor sha3_384_desc = +{ + "sha3-384", /* name of hash */ + 19, /* internal ID */ + 48, /* Size of digest in octets */ + 104, /* Input block size in octets */ + { 2,16,840,1,101,3,4,2,9 }, /* ASN.1 OID */ + 9, /* Length OID */ + &sha3_384_init, + &sha3_process, + &sha3_done, + &sha3_384_test, + NULL +}; + +const struct ltc_hash_descriptor sha3_512_desc = +{ + "sha3-512", /* name of hash */ + 20, /* internal ID */ + 64, /* Size of digest in octets */ + 72, /* Input block size in octets */ + { 2,16,840,1,101,3,4,2,10 }, /* ASN.1 OID */ + 9, /* Length OID */ + &sha3_512_init, + &sha3_process, + &sha3_done, + &sha3_512_test, + NULL +}; + +#define SHA3_KECCAK_SPONGE_WORDS 25 /* 1600 bits > 200 bytes > 25 x ulong64 */ +#define SHA3_KECCAK_ROUNDS 24 + +static const ulong64 keccakf_rndc[24] = { + CONST64(0x0000000000000001), CONST64(0x0000000000008082), + CONST64(0x800000000000808a), CONST64(0x8000000080008000), + CONST64(0x000000000000808b), CONST64(0x0000000080000001), + CONST64(0x8000000080008081), CONST64(0x8000000000008009), + CONST64(0x000000000000008a), CONST64(0x0000000000000088), + CONST64(0x0000000080008009), CONST64(0x000000008000000a), + CONST64(0x000000008000808b), CONST64(0x800000000000008b), + CONST64(0x8000000000008089), CONST64(0x8000000000008003), + CONST64(0x8000000000008002), CONST64(0x8000000000000080), + CONST64(0x000000000000800a), CONST64(0x800000008000000a), + CONST64(0x8000000080008081), CONST64(0x8000000000008080), + CONST64(0x0000000080000001), CONST64(0x8000000080008008) +}; + +static const unsigned keccakf_rotc[24] = { + 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 2, 14, 27, 41, 56, 8, 25, 43, 62, 18, 39, 61, 20, 44 +}; + +static const unsigned keccakf_piln[24] = { + 10, 7, 11, 17, 18, 3, 5, 16, 8, 21, 24, 4, 15, 23, 19, 13, 12, 2, 20, 14, 22, 9, 6, 1 +}; + +static void keccakf(ulong64 s[25]) +{ + int i, j, round; + ulong64 t, bc[5]; + + for(round = 0; round < SHA3_KECCAK_ROUNDS; round++) { + /* Theta */ + for(i = 0; i < 5; i++) + bc[i] = s[i] ^ s[i + 5] ^ s[i + 10] ^ s[i + 15] ^ s[i + 20]; + + for(i = 0; i < 5; i++) { + t = bc[(i + 4) % 5] ^ ROL64(bc[(i + 1) % 5], 1); + for(j = 0; j < 25; j += 5) + s[j + i] ^= t; + } + /* Rho Pi */ + t = s[1]; + for(i = 0; i < 24; i++) { + j = keccakf_piln[i]; + bc[0] = s[j]; + s[j] = ROL64(t, keccakf_rotc[i]); + t = bc[0]; + } + /* Chi */ + for(j = 0; j < 25; j += 5) { + for(i = 0; i < 5; i++) + bc[i] = s[j + i]; + for(i = 0; i < 5; i++) + s[j + i] ^= (~bc[(i + 1) % 5]) & bc[(i + 2) % 5]; + } + /* Iota */ + s[0] ^= keccakf_rndc[round]; + } +} + +/* Public Inteface */ + +int sha3_224_init(hash_state *md) +{ + LTC_ARGCHK(md != NULL); + XMEMSET(&md->sha3, 0, sizeof(md->sha3)); + md->sha3.capacity_words = 2 * 224 / (8 * sizeof(ulong64)); + return CRYPT_OK; +} + +int sha3_256_init(hash_state *md) +{ + LTC_ARGCHK(md != NULL); + XMEMSET(&md->sha3, 0, sizeof(md->sha3)); + md->sha3.capacity_words = 2 * 256 / (8 * sizeof(ulong64)); + return CRYPT_OK; +} + +int sha3_384_init(hash_state *md) +{ + LTC_ARGCHK(md != NULL); + XMEMSET(&md->sha3, 0, sizeof(md->sha3)); + md->sha3.capacity_words = 2 * 384 / (8 * sizeof(ulong64)); + return CRYPT_OK; +} + +int sha3_512_init(hash_state *md) +{ + LTC_ARGCHK(md != NULL); + XMEMSET(&md->sha3, 0, sizeof(md->sha3)); + md->sha3.capacity_words = 2 * 512 / (8 * sizeof(ulong64)); + return CRYPT_OK; +} + +int sha3_shake_init(hash_state *md, int num) +{ + LTC_ARGCHK(md != NULL); + if (num != 128 && num != 256) return CRYPT_INVALID_ARG; + XMEMSET(&md->sha3, 0, sizeof(md->sha3)); + md->sha3.capacity_words = (unsigned short)(2 * num / (8 * sizeof(ulong64))); + return CRYPT_OK; +} + +int sha3_process(hash_state *md, const unsigned char *in, unsigned long inlen) +{ + /* 0...7 -- how much is needed to have a word */ + unsigned old_tail = (8 - md->sha3.byte_index) & 7; + + unsigned long words; + unsigned tail; + unsigned long i; + + if (inlen == 0) return CRYPT_OK; /* nothing to do */ + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(in != NULL); + + if(inlen < old_tail) { /* have no complete word or haven't started the word yet */ + while (inlen--) md->sha3.saved |= (ulong64) (*(in++)) << ((md->sha3.byte_index++) * 8); + return CRYPT_OK; + } + + if(old_tail) { /* will have one word to process */ + inlen -= old_tail; + while (old_tail--) md->sha3.saved |= (ulong64) (*(in++)) << ((md->sha3.byte_index++) * 8); + /* now ready to add saved to the sponge */ + md->sha3.s[md->sha3.word_index] ^= md->sha3.saved; + md->sha3.byte_index = 0; + md->sha3.saved = 0; + if(++md->sha3.word_index == (SHA3_KECCAK_SPONGE_WORDS - md->sha3.capacity_words)) { + keccakf(md->sha3.s); + md->sha3.word_index = 0; + } + } + + /* now work in full words directly from input */ + words = inlen / sizeof(ulong64); + tail = inlen - words * sizeof(ulong64); + + for(i = 0; i < words; i++, in += sizeof(ulong64)) { + ulong64 t; + LOAD64L(t, in); + md->sha3.s[md->sha3.word_index] ^= t; + if(++md->sha3.word_index == (SHA3_KECCAK_SPONGE_WORDS - md->sha3.capacity_words)) { + keccakf(md->sha3.s); + md->sha3.word_index = 0; + } + } + + /* finally, save the partial word */ + while (tail--) { + md->sha3.saved |= (ulong64) (*(in++)) << ((md->sha3.byte_index++) * 8); + } + return CRYPT_OK; +} + +int sha3_done(hash_state *md, unsigned char *hash) +{ + unsigned i; + + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(hash != NULL); + + md->sha3.s[md->sha3.word_index] ^= (md->sha3.saved ^ (CONST64(0x06) << (md->sha3.byte_index * 8))); + md->sha3.s[SHA3_KECCAK_SPONGE_WORDS - md->sha3.capacity_words - 1] ^= CONST64(0x8000000000000000); + keccakf(md->sha3.s); + + /* store sha3.s[] as little-endian bytes into sha3.sb */ + for(i = 0; i < SHA3_KECCAK_SPONGE_WORDS; i++) { + STORE64L(md->sha3.s[i], md->sha3.sb + i * 8); + } + + XMEMCPY(hash, md->sha3.sb, md->sha3.capacity_words * 4); + return CRYPT_OK; +} + +int sha3_shake_done(hash_state *md, unsigned char *out, unsigned long outlen) +{ + /* IMPORTANT NOTE: sha3_shake_done can be called many times */ + unsigned long idx; + unsigned i; + + if (outlen == 0) return CRYPT_OK; /* nothing to do */ + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(out != NULL); + + if (!md->sha3.xof_flag) { + /* shake_xof operation must be done only once */ + md->sha3.s[md->sha3.word_index] ^= (md->sha3.saved ^ (CONST64(0x1F) << (md->sha3.byte_index * 8))); + md->sha3.s[SHA3_KECCAK_SPONGE_WORDS - md->sha3.capacity_words - 1] ^= CONST64(0x8000000000000000); + keccakf(md->sha3.s); + /* store sha3.s[] as little-endian bytes into sha3.sb */ + for(i = 0; i < SHA3_KECCAK_SPONGE_WORDS; i++) { + STORE64L(md->sha3.s[i], md->sha3.sb + i * 8); + } + md->sha3.byte_index = 0; + md->sha3.xof_flag = 1; + } + + for (idx = 0; idx < outlen; idx++) { + if(md->sha3.byte_index >= (SHA3_KECCAK_SPONGE_WORDS - md->sha3.capacity_words) * 8) { + keccakf(md->sha3.s); + /* store sha3.s[] as little-endian bytes into sha3.sb */ + for(i = 0; i < SHA3_KECCAK_SPONGE_WORDS; i++) { + STORE64L(md->sha3.s[i], md->sha3.sb + i * 8); + } + md->sha3.byte_index = 0; + } + out[idx] = md->sha3.sb[md->sha3.byte_index++]; + } + return CRYPT_OK; +} + +int sha3_shake_memory(int num, const unsigned char *in, unsigned long inlen, unsigned char *out, unsigned long *outlen) +{ + hash_state md; + int err; + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + if ((err = sha3_shake_init(&md, num)) != CRYPT_OK) return err; + if ((err = sha3_shake_process(&md, in, inlen)) != CRYPT_OK) return err; + if ((err = sha3_shake_done(&md, out, *outlen)) != CRYPT_OK) return err; + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/sha3_test.c b/fsbl/lib/libtomcrypt/src/hashes/sha3_test.c new file mode 100644 index 000000000..5ae86506a --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/sha3_test.c @@ -0,0 +1,401 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* based on https://github.com/brainhub/SHA3IUF (public domain) */ + +#include "tomcrypt.h" + +#ifdef LTC_SHA3 + +int sha3_224_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + unsigned char buf[200], hash[224 / 8]; + int i; + hash_state c; + const unsigned char c1 = 0xa3; + + const unsigned char sha3_224_empty[224 / 8] = { + 0x6b, 0x4e, 0x03, 0x42, 0x36, 0x67, 0xdb, 0xb7, + 0x3b, 0x6e, 0x15, 0x45, 0x4f, 0x0e, 0xb1, 0xab, + 0xd4, 0x59, 0x7f, 0x9a, 0x1b, 0x07, 0x8e, 0x3f, + 0x5b, 0x5a, 0x6b, 0xc7 + }; + + const unsigned char sha3_224_0xa3_200_times[224 / 8] = { + 0x93, 0x76, 0x81, 0x6a, 0xba, 0x50, 0x3f, 0x72, + 0xf9, 0x6c, 0xe7, 0xeb, 0x65, 0xac, 0x09, 0x5d, + 0xee, 0xe3, 0xbe, 0x4b, 0xf9, 0xbb, 0xc2, 0xa1, + 0xcb, 0x7e, 0x11, 0xe0 + }; + + XMEMSET(buf, c1, sizeof(buf)); + + /* SHA3-224 on an empty buffer */ + sha3_224_init(&c); + sha3_done(&c, hash); + if (compare_testvector(hash, sizeof(hash), sha3_224_empty, sizeof(sha3_224_empty), "SHA3-224", 0)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* SHA3-224 in two steps. [FIPS 202] */ + sha3_224_init(&c); + sha3_process(&c, buf, sizeof(buf) / 2); + sha3_process(&c, buf + sizeof(buf) / 2, sizeof(buf) / 2); + sha3_done(&c, hash); + if (compare_testvector(hash, sizeof(hash), sha3_224_0xa3_200_times, sizeof(sha3_224_0xa3_200_times), "SHA3-224", 1)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* SHA3-224 byte-by-byte: 200 steps. [FIPS 202] */ + i = 200; + sha3_224_init(&c); + while (i--) { + sha3_process(&c, &c1, 1); + } + sha3_done(&c, hash); + if (compare_testvector(hash, sizeof(hash), sha3_224_0xa3_200_times, sizeof(sha3_224_0xa3_200_times), "SHA3-224", 2)) { + return CRYPT_FAIL_TESTVECTOR; + } + + return CRYPT_OK; +#endif +} + +int sha3_256_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + unsigned char buf[200], hash[256 / 8]; + int i; + hash_state c; + const unsigned char c1 = 0xa3; + + const unsigned char sha3_256_empty[256 / 8] = { + 0xa7, 0xff, 0xc6, 0xf8, 0xbf, 0x1e, 0xd7, 0x66, + 0x51, 0xc1, 0x47, 0x56, 0xa0, 0x61, 0xd6, 0x62, + 0xf5, 0x80, 0xff, 0x4d, 0xe4, 0x3b, 0x49, 0xfa, + 0x82, 0xd8, 0x0a, 0x4b, 0x80, 0xf8, 0x43, 0x4a + }; + const unsigned char sha3_256_0xa3_200_times[256 / 8] = { + 0x79, 0xf3, 0x8a, 0xde, 0xc5, 0xc2, 0x03, 0x07, + 0xa9, 0x8e, 0xf7, 0x6e, 0x83, 0x24, 0xaf, 0xbf, + 0xd4, 0x6c, 0xfd, 0x81, 0xb2, 0x2e, 0x39, 0x73, + 0xc6, 0x5f, 0xa1, 0xbd, 0x9d, 0xe3, 0x17, 0x87 + }; + + XMEMSET(buf, c1, sizeof(buf)); + + /* SHA3-256 on an empty buffer */ + sha3_256_init(&c); + sha3_done(&c, hash); + if (compare_testvector(hash, sizeof(hash), sha3_256_empty, sizeof(sha3_256_empty), "SHA3-256", 0)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* SHA3-256 as a single buffer. [FIPS 202] */ + sha3_256_init(&c); + sha3_process(&c, buf, sizeof(buf)); + sha3_done(&c, hash); + if (compare_testvector(hash, sizeof(hash), sha3_256_0xa3_200_times, sizeof(sha3_256_0xa3_200_times), "SHA3-256", 1)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* SHA3-256 in two steps. [FIPS 202] */ + sha3_256_init(&c); + sha3_process(&c, buf, sizeof(buf) / 2); + sha3_process(&c, buf + sizeof(buf) / 2, sizeof(buf) / 2); + sha3_done(&c, hash); + if (compare_testvector(hash, sizeof(hash), sha3_256_0xa3_200_times, sizeof(sha3_256_0xa3_200_times), "SHA3-256", 2)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* SHA3-256 byte-by-byte: 200 steps. [FIPS 202] */ + i = 200; + sha3_256_init(&c); + while (i--) { + sha3_process(&c, &c1, 1); + } + sha3_done(&c, hash); + if (compare_testvector(hash, sizeof(hash), sha3_256_0xa3_200_times, sizeof(sha3_256_0xa3_200_times), "SHA3-256", 3)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* SHA3-256 byte-by-byte: 135 bytes. Input from [Keccak]. Output + * matched with sha3sum. */ + sha3_256_init(&c); + sha3_process(&c, (unsigned char*) + "\xb7\x71\xd5\xce\xf5\xd1\xa4\x1a" + "\x93\xd1\x56\x43\xd7\x18\x1d\x2a" + "\x2e\xf0\xa8\xe8\x4d\x91\x81\x2f" + "\x20\xed\x21\xf1\x47\xbe\xf7\x32" + "\xbf\x3a\x60\xef\x40\x67\xc3\x73" + "\x4b\x85\xbc\x8c\xd4\x71\x78\x0f" + "\x10\xdc\x9e\x82\x91\xb5\x83\x39" + "\xa6\x77\xb9\x60\x21\x8f\x71\xe7" + "\x93\xf2\x79\x7a\xea\x34\x94\x06" + "\x51\x28\x29\x06\x5d\x37\xbb\x55" + "\xea\x79\x6f\xa4\xf5\x6f\xd8\x89" + "\x6b\x49\xb2\xcd\x19\xb4\x32\x15" + "\xad\x96\x7c\x71\x2b\x24\xe5\x03" + "\x2d\x06\x52\x32\xe0\x2c\x12\x74" + "\x09\xd2\xed\x41\x46\xb9\xd7\x5d" + "\x76\x3d\x52\xdb\x98\xd9\x49\xd3" + "\xb0\xfe\xd6\xa8\x05\x2f\xbb", 1080 / 8); + sha3_done(&c, hash); + if(compare_testvector(hash, sizeof(hash), + "\xa1\x9e\xee\x92\xbb\x20\x97\xb6" + "\x4e\x82\x3d\x59\x77\x98\xaa\x18" + "\xbe\x9b\x7c\x73\x6b\x80\x59\xab" + "\xfd\x67\x79\xac\x35\xac\x81\xb5", 256 / 8, "SHA3-256", 4)) { + return CRYPT_FAIL_TESTVECTOR; + } + + return CRYPT_OK; +#endif +} + +int sha3_384_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + unsigned char buf[200], hash[384 / 8]; + int i; + hash_state c; + const unsigned char c1 = 0xa3; + + const unsigned char sha3_384_0xa3_200_times[384 / 8] = { + 0x18, 0x81, 0xde, 0x2c, 0xa7, 0xe4, 0x1e, 0xf9, + 0x5d, 0xc4, 0x73, 0x2b, 0x8f, 0x5f, 0x00, 0x2b, + 0x18, 0x9c, 0xc1, 0xe4, 0x2b, 0x74, 0x16, 0x8e, + 0xd1, 0x73, 0x26, 0x49, 0xce, 0x1d, 0xbc, 0xdd, + 0x76, 0x19, 0x7a, 0x31, 0xfd, 0x55, 0xee, 0x98, + 0x9f, 0x2d, 0x70, 0x50, 0xdd, 0x47, 0x3e, 0x8f + }; + + XMEMSET(buf, c1, sizeof(buf)); + + /* SHA3-384 as a single buffer. [FIPS 202] */ + sha3_384_init(&c); + sha3_process(&c, buf, sizeof(buf)); + sha3_done(&c, hash); + if (compare_testvector(hash, sizeof(hash), sha3_384_0xa3_200_times, sizeof(sha3_384_0xa3_200_times), "SHA3-384", 0)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* SHA3-384 in two steps. [FIPS 202] */ + sha3_384_init(&c); + sha3_process(&c, buf, sizeof(buf) / 2); + sha3_process(&c, buf + sizeof(buf) / 2, sizeof(buf) / 2); + sha3_done(&c, hash); + if (compare_testvector(hash, sizeof(hash), sha3_384_0xa3_200_times, sizeof(sha3_384_0xa3_200_times), "SHA3-384", 1)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* SHA3-384 byte-by-byte: 200 steps. [FIPS 202] */ + i = 200; + sha3_384_init(&c); + while (i--) { + sha3_process(&c, &c1, 1); + } + sha3_done(&c, hash); + if (compare_testvector(hash, sizeof(hash), sha3_384_0xa3_200_times, sizeof(sha3_384_0xa3_200_times), "SHA3-384", 2)) { + return CRYPT_FAIL_TESTVECTOR; + } + + return CRYPT_OK; +#endif +} + +int sha3_512_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + unsigned char buf[200], hash[512 / 8]; + int i; + hash_state c; + const unsigned char c1 = 0xa3; + + const unsigned char sha3_512_0xa3_200_times[512 / 8] = { + 0xe7, 0x6d, 0xfa, 0xd2, 0x20, 0x84, 0xa8, 0xb1, + 0x46, 0x7f, 0xcf, 0x2f, 0xfa, 0x58, 0x36, 0x1b, + 0xec, 0x76, 0x28, 0xed, 0xf5, 0xf3, 0xfd, 0xc0, + 0xe4, 0x80, 0x5d, 0xc4, 0x8c, 0xae, 0xec, 0xa8, + 0x1b, 0x7c, 0x13, 0xc3, 0x0a, 0xdf, 0x52, 0xa3, + 0x65, 0x95, 0x84, 0x73, 0x9a, 0x2d, 0xf4, 0x6b, + 0xe5, 0x89, 0xc5, 0x1c, 0xa1, 0xa4, 0xa8, 0x41, + 0x6d, 0xf6, 0x54, 0x5a, 0x1c, 0xe8, 0xba, 0x00 + }; + + XMEMSET(buf, c1, sizeof(buf)); + + /* SHA3-512 as a single buffer. [FIPS 202] */ + sha3_512_init(&c); + sha3_process(&c, buf, sizeof(buf)); + sha3_done(&c, hash); + if (compare_testvector(hash, sizeof(hash), sha3_512_0xa3_200_times, sizeof(sha3_512_0xa3_200_times), "SHA3-512", 0)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* SHA3-512 in two steps. [FIPS 202] */ + sha3_512_init(&c); + sha3_process(&c, buf, sizeof(buf) / 2); + sha3_process(&c, buf + sizeof(buf) / 2, sizeof(buf) / 2); + sha3_done(&c, hash); + if (compare_testvector(hash, sizeof(hash), sha3_512_0xa3_200_times, sizeof(sha3_512_0xa3_200_times), "SHA3-512", 1)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* SHA3-512 byte-by-byte: 200 steps. [FIPS 202] */ + i = 200; + sha3_512_init(&c); + while (i--) { + sha3_process(&c, &c1, 1); + } + sha3_done(&c, hash); + if (compare_testvector(hash, sizeof(hash), sha3_512_0xa3_200_times, sizeof(sha3_512_0xa3_200_times), "SHA3-512", 2)) { + return CRYPT_FAIL_TESTVECTOR; + } + + return CRYPT_OK; +#endif +} + +int sha3_shake_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + unsigned char buf[200], hash[512]; + int i; + hash_state c; + const unsigned char c1 = 0xa3; + unsigned long len; + + const unsigned char shake256_empty[32] = { + 0xab, 0x0b, 0xae, 0x31, 0x63, 0x39, 0x89, 0x43, + 0x04, 0xe3, 0x58, 0x77, 0xb0, 0xc2, 0x8a, 0x9b, + 0x1f, 0xd1, 0x66, 0xc7, 0x96, 0xb9, 0xcc, 0x25, + 0x8a, 0x06, 0x4a, 0x8f, 0x57, 0xe2, 0x7f, 0x2a + }; + const unsigned char shake256_0xa3_200_times[32] = { + 0x6a, 0x1a, 0x9d, 0x78, 0x46, 0x43, 0x6e, 0x4d, + 0xca, 0x57, 0x28, 0xb6, 0xf7, 0x60, 0xee, 0xf0, + 0xca, 0x92, 0xbf, 0x0b, 0xe5, 0x61, 0x5e, 0x96, + 0x95, 0x9d, 0x76, 0x71, 0x97, 0xa0, 0xbe, 0xeb + }; + const unsigned char shake128_empty[32] = { + 0x43, 0xe4, 0x1b, 0x45, 0xa6, 0x53, 0xf2, 0xa5, + 0xc4, 0x49, 0x2c, 0x1a, 0xdd, 0x54, 0x45, 0x12, + 0xdd, 0xa2, 0x52, 0x98, 0x33, 0x46, 0x2b, 0x71, + 0xa4, 0x1a, 0x45, 0xbe, 0x97, 0x29, 0x0b, 0x6f + }; + const unsigned char shake128_0xa3_200_times[32] = { + 0x44, 0xc9, 0xfb, 0x35, 0x9f, 0xd5, 0x6a, 0xc0, + 0xa9, 0xa7, 0x5a, 0x74, 0x3c, 0xff, 0x68, 0x62, + 0xf1, 0x7d, 0x72, 0x59, 0xab, 0x07, 0x52, 0x16, + 0xc0, 0x69, 0x95, 0x11, 0x64, 0x3b, 0x64, 0x39 + }; + + XMEMSET(buf, c1, sizeof(buf)); + + /* SHAKE256 on an empty buffer */ + sha3_shake_init(&c, 256); + for (i = 0; i < 16; i++) sha3_shake_done(&c, hash, 32); /* get 512 bytes, keep in hash the last 32 */ + if (compare_testvector(hash, sizeof(shake256_empty), shake256_empty, sizeof(shake256_empty), "SHAKE256", 0)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* SHAKE256 via sha3_shake_memory [FIPS 202] */ + len = 512; + sha3_shake_memory(256, buf, sizeof(buf), hash, &len); + if (compare_testvector(hash + 480, sizeof(shake256_0xa3_200_times), shake256_0xa3_200_times, sizeof(shake256_0xa3_200_times), "SHAKE256", 1)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* SHAKE256 as a single buffer. [FIPS 202] */ + sha3_shake_init(&c, 256); + sha3_shake_process(&c, buf, sizeof(buf)); + for (i = 0; i < 16; i++) sha3_shake_done(&c, hash, 32); /* get 512 bytes, keep in hash the last 32 */ + if (compare_testvector(hash, sizeof(shake256_0xa3_200_times), shake256_0xa3_200_times, sizeof(shake256_0xa3_200_times), "SHAKE256", 2)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* SHAKE256 in two steps. [FIPS 202] */ + sha3_shake_init(&c, 256); + sha3_shake_process(&c, buf, sizeof(buf) / 2); + sha3_shake_process(&c, buf + sizeof(buf) / 2, sizeof(buf) / 2); + for (i = 0; i < 16; i++) sha3_shake_done(&c, hash, 32); /* get 512 bytes, keep in hash the last 32 */ + if (compare_testvector(hash, sizeof(shake256_0xa3_200_times), shake256_0xa3_200_times, sizeof(shake256_0xa3_200_times), "SHAKE256", 3)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* SHAKE256 byte-by-byte: 200 steps. [FIPS 202] */ + i = 200; + sha3_shake_init(&c, 256); + while (i--) sha3_shake_process(&c, &c1, 1); + for (i = 0; i < 16; i++) sha3_shake_done(&c, hash, 32); /* get 512 bytes, keep in hash the last 32 */ + if (compare_testvector(hash, sizeof(shake256_0xa3_200_times), shake256_0xa3_200_times, sizeof(shake256_0xa3_200_times), "SHAKE256", 4)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* SHAKE128 on an empty buffer */ + sha3_shake_init(&c, 128); + for (i = 0; i < 16; i++) sha3_shake_done(&c, hash, 32); /* get 512 bytes, keep in hash the last 32 */ + if (compare_testvector(hash, sizeof(shake128_empty), shake128_empty, sizeof(shake128_empty), "SHAKE128", 0)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* SHAKE128 via sha3_shake_memory [FIPS 202] */ + len = 512; + sha3_shake_memory(128, buf, sizeof(buf), hash, &len); + if (compare_testvector(hash + 480, sizeof(shake128_0xa3_200_times), shake128_0xa3_200_times, sizeof(shake128_0xa3_200_times), "SHAKE128", 1)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* SHAKE128 as a single buffer. [FIPS 202] */ + sha3_shake_init(&c, 128); + sha3_shake_process(&c, buf, sizeof(buf)); + for (i = 0; i < 16; i++) sha3_shake_done(&c, hash, 32); /* get 512 bytes, keep in hash the last 32 */ + if (compare_testvector(hash, sizeof(shake128_0xa3_200_times), shake128_0xa3_200_times, sizeof(shake128_0xa3_200_times), "SHAKE128", 2)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* SHAKE128 in two steps. [FIPS 202] */ + sha3_shake_init(&c, 128); + sha3_shake_process(&c, buf, sizeof(buf) / 2); + sha3_shake_process(&c, buf + sizeof(buf) / 2, sizeof(buf) / 2); + for (i = 0; i < 16; i++) sha3_shake_done(&c, hash, 32); /* get 512 bytes, keep in hash the last 32 */ + if (compare_testvector(hash, sizeof(shake128_0xa3_200_times), shake128_0xa3_200_times, sizeof(shake128_0xa3_200_times), "SHAKE128", 3)) { + return CRYPT_FAIL_TESTVECTOR; + } + + /* SHAKE128 byte-by-byte: 200 steps. [FIPS 202] */ + i = 200; + sha3_shake_init(&c, 128); + while (i--) sha3_shake_process(&c, &c1, 1); + for (i = 0; i < 16; i++) sha3_shake_done(&c, hash, 32); /* get 512 bytes, keep in hash the last 32 */ + if (compare_testvector(hash, sizeof(shake128_0xa3_200_times), shake128_0xa3_200_times, sizeof(shake128_0xa3_200_times), "SHAKE128", 4)) { + return CRYPT_FAIL_TESTVECTOR; + } + + return CRYPT_OK; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/tiger.c b/fsbl/lib/libtomcrypt/src/hashes/tiger.c new file mode 100644 index 000000000..863f7fa24 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/tiger.c @@ -0,0 +1,812 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +/** + @file tiger.c + Tiger hash function, Tom St Denis +*/ + +#ifdef LTC_TIGER + +const struct ltc_hash_descriptor tiger_desc = +{ + "tiger", + 1, + 24, + 64, + + /* OID */ + { 1, 3, 6, 1, 4, 1, 11591, 12, 2, }, + 9, + + &tiger_init, + &tiger_process, + &tiger_done, + &tiger_test, + NULL +}; + +#define t1 (table) +#define t2 (table+256) +#define t3 (table+256*2) +#define t4 (table+256*3) + +static const ulong64 table[4*256] = { + CONST64(0x02AAB17CF7E90C5E) /* 0 */, CONST64(0xAC424B03E243A8EC) /* 1 */, + CONST64(0x72CD5BE30DD5FCD3) /* 2 */, CONST64(0x6D019B93F6F97F3A) /* 3 */, + CONST64(0xCD9978FFD21F9193) /* 4 */, CONST64(0x7573A1C9708029E2) /* 5 */, + CONST64(0xB164326B922A83C3) /* 6 */, CONST64(0x46883EEE04915870) /* 7 */, + CONST64(0xEAACE3057103ECE6) /* 8 */, CONST64(0xC54169B808A3535C) /* 9 */, + CONST64(0x4CE754918DDEC47C) /* 10 */, CONST64(0x0AA2F4DFDC0DF40C) /* 11 */, + CONST64(0x10B76F18A74DBEFA) /* 12 */, CONST64(0xC6CCB6235AD1AB6A) /* 13 */, + CONST64(0x13726121572FE2FF) /* 14 */, CONST64(0x1A488C6F199D921E) /* 15 */, + CONST64(0x4BC9F9F4DA0007CA) /* 16 */, CONST64(0x26F5E6F6E85241C7) /* 17 */, + CONST64(0x859079DBEA5947B6) /* 18 */, CONST64(0x4F1885C5C99E8C92) /* 19 */, + CONST64(0xD78E761EA96F864B) /* 20 */, CONST64(0x8E36428C52B5C17D) /* 21 */, + CONST64(0x69CF6827373063C1) /* 22 */, CONST64(0xB607C93D9BB4C56E) /* 23 */, + CONST64(0x7D820E760E76B5EA) /* 24 */, CONST64(0x645C9CC6F07FDC42) /* 25 */, + CONST64(0xBF38A078243342E0) /* 26 */, CONST64(0x5F6B343C9D2E7D04) /* 27 */, + CONST64(0xF2C28AEB600B0EC6) /* 28 */, CONST64(0x6C0ED85F7254BCAC) /* 29 */, + CONST64(0x71592281A4DB4FE5) /* 30 */, CONST64(0x1967FA69CE0FED9F) /* 31 */, + CONST64(0xFD5293F8B96545DB) /* 32 */, CONST64(0xC879E9D7F2A7600B) /* 33 */, + CONST64(0x860248920193194E) /* 34 */, CONST64(0xA4F9533B2D9CC0B3) /* 35 */, + CONST64(0x9053836C15957613) /* 36 */, CONST64(0xDB6DCF8AFC357BF1) /* 37 */, + CONST64(0x18BEEA7A7A370F57) /* 38 */, CONST64(0x037117CA50B99066) /* 39 */, + CONST64(0x6AB30A9774424A35) /* 40 */, CONST64(0xF4E92F02E325249B) /* 41 */, + CONST64(0x7739DB07061CCAE1) /* 42 */, CONST64(0xD8F3B49CECA42A05) /* 43 */, + CONST64(0xBD56BE3F51382F73) /* 44 */, CONST64(0x45FAED5843B0BB28) /* 45 */, + CONST64(0x1C813D5C11BF1F83) /* 46 */, CONST64(0x8AF0E4B6D75FA169) /* 47 */, + CONST64(0x33EE18A487AD9999) /* 48 */, CONST64(0x3C26E8EAB1C94410) /* 49 */, + CONST64(0xB510102BC0A822F9) /* 50 */, CONST64(0x141EEF310CE6123B) /* 51 */, + CONST64(0xFC65B90059DDB154) /* 52 */, CONST64(0xE0158640C5E0E607) /* 53 */, + CONST64(0x884E079826C3A3CF) /* 54 */, CONST64(0x930D0D9523C535FD) /* 55 */, + CONST64(0x35638D754E9A2B00) /* 56 */, CONST64(0x4085FCCF40469DD5) /* 57 */, + CONST64(0xC4B17AD28BE23A4C) /* 58 */, CONST64(0xCAB2F0FC6A3E6A2E) /* 59 */, + CONST64(0x2860971A6B943FCD) /* 60 */, CONST64(0x3DDE6EE212E30446) /* 61 */, + CONST64(0x6222F32AE01765AE) /* 62 */, CONST64(0x5D550BB5478308FE) /* 63 */, + CONST64(0xA9EFA98DA0EDA22A) /* 64 */, CONST64(0xC351A71686C40DA7) /* 65 */, + CONST64(0x1105586D9C867C84) /* 66 */, CONST64(0xDCFFEE85FDA22853) /* 67 */, + CONST64(0xCCFBD0262C5EEF76) /* 68 */, CONST64(0xBAF294CB8990D201) /* 69 */, + CONST64(0xE69464F52AFAD975) /* 70 */, CONST64(0x94B013AFDF133E14) /* 71 */, + CONST64(0x06A7D1A32823C958) /* 72 */, CONST64(0x6F95FE5130F61119) /* 73 */, + CONST64(0xD92AB34E462C06C0) /* 74 */, CONST64(0xED7BDE33887C71D2) /* 75 */, + CONST64(0x79746D6E6518393E) /* 76 */, CONST64(0x5BA419385D713329) /* 77 */, + CONST64(0x7C1BA6B948A97564) /* 78 */, CONST64(0x31987C197BFDAC67) /* 79 */, + CONST64(0xDE6C23C44B053D02) /* 80 */, CONST64(0x581C49FED002D64D) /* 81 */, + CONST64(0xDD474D6338261571) /* 82 */, CONST64(0xAA4546C3E473D062) /* 83 */, + CONST64(0x928FCE349455F860) /* 84 */, CONST64(0x48161BBACAAB94D9) /* 85 */, + CONST64(0x63912430770E6F68) /* 86 */, CONST64(0x6EC8A5E602C6641C) /* 87 */, + CONST64(0x87282515337DDD2B) /* 88 */, CONST64(0x2CDA6B42034B701B) /* 89 */, + CONST64(0xB03D37C181CB096D) /* 90 */, CONST64(0xE108438266C71C6F) /* 91 */, + CONST64(0x2B3180C7EB51B255) /* 92 */, CONST64(0xDF92B82F96C08BBC) /* 93 */, + CONST64(0x5C68C8C0A632F3BA) /* 94 */, CONST64(0x5504CC861C3D0556) /* 95 */, + CONST64(0xABBFA4E55FB26B8F) /* 96 */, CONST64(0x41848B0AB3BACEB4) /* 97 */, + CONST64(0xB334A273AA445D32) /* 98 */, CONST64(0xBCA696F0A85AD881) /* 99 */, + CONST64(0x24F6EC65B528D56C) /* 100 */, CONST64(0x0CE1512E90F4524A) /* 101 */, + CONST64(0x4E9DD79D5506D35A) /* 102 */, CONST64(0x258905FAC6CE9779) /* 103 */, + CONST64(0x2019295B3E109B33) /* 104 */, CONST64(0xF8A9478B73A054CC) /* 105 */, + CONST64(0x2924F2F934417EB0) /* 106 */, CONST64(0x3993357D536D1BC4) /* 107 */, + CONST64(0x38A81AC21DB6FF8B) /* 108 */, CONST64(0x47C4FBF17D6016BF) /* 109 */, + CONST64(0x1E0FAADD7667E3F5) /* 110 */, CONST64(0x7ABCFF62938BEB96) /* 111 */, + CONST64(0xA78DAD948FC179C9) /* 112 */, CONST64(0x8F1F98B72911E50D) /* 113 */, + CONST64(0x61E48EAE27121A91) /* 114 */, CONST64(0x4D62F7AD31859808) /* 115 */, + CONST64(0xECEBA345EF5CEAEB) /* 116 */, CONST64(0xF5CEB25EBC9684CE) /* 117 */, + CONST64(0xF633E20CB7F76221) /* 118 */, CONST64(0xA32CDF06AB8293E4) /* 119 */, + CONST64(0x985A202CA5EE2CA4) /* 120 */, CONST64(0xCF0B8447CC8A8FB1) /* 121 */, + CONST64(0x9F765244979859A3) /* 122 */, CONST64(0xA8D516B1A1240017) /* 123 */, + CONST64(0x0BD7BA3EBB5DC726) /* 124 */, CONST64(0xE54BCA55B86ADB39) /* 125 */, + CONST64(0x1D7A3AFD6C478063) /* 126 */, CONST64(0x519EC608E7669EDD) /* 127 */, + CONST64(0x0E5715A2D149AA23) /* 128 */, CONST64(0x177D4571848FF194) /* 129 */, + CONST64(0xEEB55F3241014C22) /* 130 */, CONST64(0x0F5E5CA13A6E2EC2) /* 131 */, + CONST64(0x8029927B75F5C361) /* 132 */, CONST64(0xAD139FABC3D6E436) /* 133 */, + CONST64(0x0D5DF1A94CCF402F) /* 134 */, CONST64(0x3E8BD948BEA5DFC8) /* 135 */, + CONST64(0xA5A0D357BD3FF77E) /* 136 */, CONST64(0xA2D12E251F74F645) /* 137 */, + CONST64(0x66FD9E525E81A082) /* 138 */, CONST64(0x2E0C90CE7F687A49) /* 139 */, + CONST64(0xC2E8BCBEBA973BC5) /* 140 */, CONST64(0x000001BCE509745F) /* 141 */, + CONST64(0x423777BBE6DAB3D6) /* 142 */, CONST64(0xD1661C7EAEF06EB5) /* 143 */, + CONST64(0xA1781F354DAACFD8) /* 144 */, CONST64(0x2D11284A2B16AFFC) /* 145 */, + CONST64(0xF1FC4F67FA891D1F) /* 146 */, CONST64(0x73ECC25DCB920ADA) /* 147 */, + CONST64(0xAE610C22C2A12651) /* 148 */, CONST64(0x96E0A810D356B78A) /* 149 */, + CONST64(0x5A9A381F2FE7870F) /* 150 */, CONST64(0xD5AD62EDE94E5530) /* 151 */, + CONST64(0xD225E5E8368D1427) /* 152 */, CONST64(0x65977B70C7AF4631) /* 153 */, + CONST64(0x99F889B2DE39D74F) /* 154 */, CONST64(0x233F30BF54E1D143) /* 155 */, + CONST64(0x9A9675D3D9A63C97) /* 156 */, CONST64(0x5470554FF334F9A8) /* 157 */, + CONST64(0x166ACB744A4F5688) /* 158 */, CONST64(0x70C74CAAB2E4AEAD) /* 159 */, + CONST64(0xF0D091646F294D12) /* 160 */, CONST64(0x57B82A89684031D1) /* 161 */, + CONST64(0xEFD95A5A61BE0B6B) /* 162 */, CONST64(0x2FBD12E969F2F29A) /* 163 */, + CONST64(0x9BD37013FEFF9FE8) /* 164 */, CONST64(0x3F9B0404D6085A06) /* 165 */, + CONST64(0x4940C1F3166CFE15) /* 166 */, CONST64(0x09542C4DCDF3DEFB) /* 167 */, + CONST64(0xB4C5218385CD5CE3) /* 168 */, CONST64(0xC935B7DC4462A641) /* 169 */, + CONST64(0x3417F8A68ED3B63F) /* 170 */, CONST64(0xB80959295B215B40) /* 171 */, + CONST64(0xF99CDAEF3B8C8572) /* 172 */, CONST64(0x018C0614F8FCB95D) /* 173 */, + CONST64(0x1B14ACCD1A3ACDF3) /* 174 */, CONST64(0x84D471F200BB732D) /* 175 */, + CONST64(0xC1A3110E95E8DA16) /* 176 */, CONST64(0x430A7220BF1A82B8) /* 177 */, + CONST64(0xB77E090D39DF210E) /* 178 */, CONST64(0x5EF4BD9F3CD05E9D) /* 179 */, + CONST64(0x9D4FF6DA7E57A444) /* 180 */, CONST64(0xDA1D60E183D4A5F8) /* 181 */, + CONST64(0xB287C38417998E47) /* 182 */, CONST64(0xFE3EDC121BB31886) /* 183 */, + CONST64(0xC7FE3CCC980CCBEF) /* 184 */, CONST64(0xE46FB590189BFD03) /* 185 */, + CONST64(0x3732FD469A4C57DC) /* 186 */, CONST64(0x7EF700A07CF1AD65) /* 187 */, + CONST64(0x59C64468A31D8859) /* 188 */, CONST64(0x762FB0B4D45B61F6) /* 189 */, + CONST64(0x155BAED099047718) /* 190 */, CONST64(0x68755E4C3D50BAA6) /* 191 */, + CONST64(0xE9214E7F22D8B4DF) /* 192 */, CONST64(0x2ADDBF532EAC95F4) /* 193 */, + CONST64(0x32AE3909B4BD0109) /* 194 */, CONST64(0x834DF537B08E3450) /* 195 */, + CONST64(0xFA209DA84220728D) /* 196 */, CONST64(0x9E691D9B9EFE23F7) /* 197 */, + CONST64(0x0446D288C4AE8D7F) /* 198 */, CONST64(0x7B4CC524E169785B) /* 199 */, + CONST64(0x21D87F0135CA1385) /* 200 */, CONST64(0xCEBB400F137B8AA5) /* 201 */, + CONST64(0x272E2B66580796BE) /* 202 */, CONST64(0x3612264125C2B0DE) /* 203 */, + CONST64(0x057702BDAD1EFBB2) /* 204 */, CONST64(0xD4BABB8EACF84BE9) /* 205 */, + CONST64(0x91583139641BC67B) /* 206 */, CONST64(0x8BDC2DE08036E024) /* 207 */, + CONST64(0x603C8156F49F68ED) /* 208 */, CONST64(0xF7D236F7DBEF5111) /* 209 */, + CONST64(0x9727C4598AD21E80) /* 210 */, CONST64(0xA08A0896670A5FD7) /* 211 */, + CONST64(0xCB4A8F4309EBA9CB) /* 212 */, CONST64(0x81AF564B0F7036A1) /* 213 */, + CONST64(0xC0B99AA778199ABD) /* 214 */, CONST64(0x959F1EC83FC8E952) /* 215 */, + CONST64(0x8C505077794A81B9) /* 216 */, CONST64(0x3ACAAF8F056338F0) /* 217 */, + CONST64(0x07B43F50627A6778) /* 218 */, CONST64(0x4A44AB49F5ECCC77) /* 219 */, + CONST64(0x3BC3D6E4B679EE98) /* 220 */, CONST64(0x9CC0D4D1CF14108C) /* 221 */, + CONST64(0x4406C00B206BC8A0) /* 222 */, CONST64(0x82A18854C8D72D89) /* 223 */, + CONST64(0x67E366B35C3C432C) /* 224 */, CONST64(0xB923DD61102B37F2) /* 225 */, + CONST64(0x56AB2779D884271D) /* 226 */, CONST64(0xBE83E1B0FF1525AF) /* 227 */, + CONST64(0xFB7C65D4217E49A9) /* 228 */, CONST64(0x6BDBE0E76D48E7D4) /* 229 */, + CONST64(0x08DF828745D9179E) /* 230 */, CONST64(0x22EA6A9ADD53BD34) /* 231 */, + CONST64(0xE36E141C5622200A) /* 232 */, CONST64(0x7F805D1B8CB750EE) /* 233 */, + CONST64(0xAFE5C7A59F58E837) /* 234 */, CONST64(0xE27F996A4FB1C23C) /* 235 */, + CONST64(0xD3867DFB0775F0D0) /* 236 */, CONST64(0xD0E673DE6E88891A) /* 237 */, + CONST64(0x123AEB9EAFB86C25) /* 238 */, CONST64(0x30F1D5D5C145B895) /* 239 */, + CONST64(0xBB434A2DEE7269E7) /* 240 */, CONST64(0x78CB67ECF931FA38) /* 241 */, + CONST64(0xF33B0372323BBF9C) /* 242 */, CONST64(0x52D66336FB279C74) /* 243 */, + CONST64(0x505F33AC0AFB4EAA) /* 244 */, CONST64(0xE8A5CD99A2CCE187) /* 245 */, + CONST64(0x534974801E2D30BB) /* 246 */, CONST64(0x8D2D5711D5876D90) /* 247 */, + CONST64(0x1F1A412891BC038E) /* 248 */, CONST64(0xD6E2E71D82E56648) /* 249 */, + CONST64(0x74036C3A497732B7) /* 250 */, CONST64(0x89B67ED96361F5AB) /* 251 */, + CONST64(0xFFED95D8F1EA02A2) /* 252 */, CONST64(0xE72B3BD61464D43D) /* 253 */, + CONST64(0xA6300F170BDC4820) /* 254 */, CONST64(0xEBC18760ED78A77A) /* 255 */, + CONST64(0xE6A6BE5A05A12138) /* 256 */, CONST64(0xB5A122A5B4F87C98) /* 257 */, + CONST64(0x563C6089140B6990) /* 258 */, CONST64(0x4C46CB2E391F5DD5) /* 259 */, + CONST64(0xD932ADDBC9B79434) /* 260 */, CONST64(0x08EA70E42015AFF5) /* 261 */, + CONST64(0xD765A6673E478CF1) /* 262 */, CONST64(0xC4FB757EAB278D99) /* 263 */, + CONST64(0xDF11C6862D6E0692) /* 264 */, CONST64(0xDDEB84F10D7F3B16) /* 265 */, + CONST64(0x6F2EF604A665EA04) /* 266 */, CONST64(0x4A8E0F0FF0E0DFB3) /* 267 */, + CONST64(0xA5EDEEF83DBCBA51) /* 268 */, CONST64(0xFC4F0A2A0EA4371E) /* 269 */, + CONST64(0xE83E1DA85CB38429) /* 270 */, CONST64(0xDC8FF882BA1B1CE2) /* 271 */, + CONST64(0xCD45505E8353E80D) /* 272 */, CONST64(0x18D19A00D4DB0717) /* 273 */, + CONST64(0x34A0CFEDA5F38101) /* 274 */, CONST64(0x0BE77E518887CAF2) /* 275 */, + CONST64(0x1E341438B3C45136) /* 276 */, CONST64(0xE05797F49089CCF9) /* 277 */, + CONST64(0xFFD23F9DF2591D14) /* 278 */, CONST64(0x543DDA228595C5CD) /* 279 */, + CONST64(0x661F81FD99052A33) /* 280 */, CONST64(0x8736E641DB0F7B76) /* 281 */, + CONST64(0x15227725418E5307) /* 282 */, CONST64(0xE25F7F46162EB2FA) /* 283 */, + CONST64(0x48A8B2126C13D9FE) /* 284 */, CONST64(0xAFDC541792E76EEA) /* 285 */, + CONST64(0x03D912BFC6D1898F) /* 286 */, CONST64(0x31B1AAFA1B83F51B) /* 287 */, + CONST64(0xF1AC2796E42AB7D9) /* 288 */, CONST64(0x40A3A7D7FCD2EBAC) /* 289 */, + CONST64(0x1056136D0AFBBCC5) /* 290 */, CONST64(0x7889E1DD9A6D0C85) /* 291 */, + CONST64(0xD33525782A7974AA) /* 292 */, CONST64(0xA7E25D09078AC09B) /* 293 */, + CONST64(0xBD4138B3EAC6EDD0) /* 294 */, CONST64(0x920ABFBE71EB9E70) /* 295 */, + CONST64(0xA2A5D0F54FC2625C) /* 296 */, CONST64(0xC054E36B0B1290A3) /* 297 */, + CONST64(0xF6DD59FF62FE932B) /* 298 */, CONST64(0x3537354511A8AC7D) /* 299 */, + CONST64(0xCA845E9172FADCD4) /* 300 */, CONST64(0x84F82B60329D20DC) /* 301 */, + CONST64(0x79C62CE1CD672F18) /* 302 */, CONST64(0x8B09A2ADD124642C) /* 303 */, + CONST64(0xD0C1E96A19D9E726) /* 304 */, CONST64(0x5A786A9B4BA9500C) /* 305 */, + CONST64(0x0E020336634C43F3) /* 306 */, CONST64(0xC17B474AEB66D822) /* 307 */, + CONST64(0x6A731AE3EC9BAAC2) /* 308 */, CONST64(0x8226667AE0840258) /* 309 */, + CONST64(0x67D4567691CAECA5) /* 310 */, CONST64(0x1D94155C4875ADB5) /* 311 */, + CONST64(0x6D00FD985B813FDF) /* 312 */, CONST64(0x51286EFCB774CD06) /* 313 */, + CONST64(0x5E8834471FA744AF) /* 314 */, CONST64(0xF72CA0AEE761AE2E) /* 315 */, + CONST64(0xBE40E4CDAEE8E09A) /* 316 */, CONST64(0xE9970BBB5118F665) /* 317 */, + CONST64(0x726E4BEB33DF1964) /* 318 */, CONST64(0x703B000729199762) /* 319 */, + CONST64(0x4631D816F5EF30A7) /* 320 */, CONST64(0xB880B5B51504A6BE) /* 321 */, + CONST64(0x641793C37ED84B6C) /* 322 */, CONST64(0x7B21ED77F6E97D96) /* 323 */, + CONST64(0x776306312EF96B73) /* 324 */, CONST64(0xAE528948E86FF3F4) /* 325 */, + CONST64(0x53DBD7F286A3F8F8) /* 326 */, CONST64(0x16CADCE74CFC1063) /* 327 */, + CONST64(0x005C19BDFA52C6DD) /* 328 */, CONST64(0x68868F5D64D46AD3) /* 329 */, + CONST64(0x3A9D512CCF1E186A) /* 330 */, CONST64(0x367E62C2385660AE) /* 331 */, + CONST64(0xE359E7EA77DCB1D7) /* 332 */, CONST64(0x526C0773749ABE6E) /* 333 */, + CONST64(0x735AE5F9D09F734B) /* 334 */, CONST64(0x493FC7CC8A558BA8) /* 335 */, + CONST64(0xB0B9C1533041AB45) /* 336 */, CONST64(0x321958BA470A59BD) /* 337 */, + CONST64(0x852DB00B5F46C393) /* 338 */, CONST64(0x91209B2BD336B0E5) /* 339 */, + CONST64(0x6E604F7D659EF19F) /* 340 */, CONST64(0xB99A8AE2782CCB24) /* 341 */, + CONST64(0xCCF52AB6C814C4C7) /* 342 */, CONST64(0x4727D9AFBE11727B) /* 343 */, + CONST64(0x7E950D0C0121B34D) /* 344 */, CONST64(0x756F435670AD471F) /* 345 */, + CONST64(0xF5ADD442615A6849) /* 346 */, CONST64(0x4E87E09980B9957A) /* 347 */, + CONST64(0x2ACFA1DF50AEE355) /* 348 */, CONST64(0xD898263AFD2FD556) /* 349 */, + CONST64(0xC8F4924DD80C8FD6) /* 350 */, CONST64(0xCF99CA3D754A173A) /* 351 */, + CONST64(0xFE477BACAF91BF3C) /* 352 */, CONST64(0xED5371F6D690C12D) /* 353 */, + CONST64(0x831A5C285E687094) /* 354 */, CONST64(0xC5D3C90A3708A0A4) /* 355 */, + CONST64(0x0F7F903717D06580) /* 356 */, CONST64(0x19F9BB13B8FDF27F) /* 357 */, + CONST64(0xB1BD6F1B4D502843) /* 358 */, CONST64(0x1C761BA38FFF4012) /* 359 */, + CONST64(0x0D1530C4E2E21F3B) /* 360 */, CONST64(0x8943CE69A7372C8A) /* 361 */, + CONST64(0xE5184E11FEB5CE66) /* 362 */, CONST64(0x618BDB80BD736621) /* 363 */, + CONST64(0x7D29BAD68B574D0B) /* 364 */, CONST64(0x81BB613E25E6FE5B) /* 365 */, + CONST64(0x071C9C10BC07913F) /* 366 */, CONST64(0xC7BEEB7909AC2D97) /* 367 */, + CONST64(0xC3E58D353BC5D757) /* 368 */, CONST64(0xEB017892F38F61E8) /* 369 */, + CONST64(0xD4EFFB9C9B1CC21A) /* 370 */, CONST64(0x99727D26F494F7AB) /* 371 */, + CONST64(0xA3E063A2956B3E03) /* 372 */, CONST64(0x9D4A8B9A4AA09C30) /* 373 */, + CONST64(0x3F6AB7D500090FB4) /* 374 */, CONST64(0x9CC0F2A057268AC0) /* 375 */, + CONST64(0x3DEE9D2DEDBF42D1) /* 376 */, CONST64(0x330F49C87960A972) /* 377 */, + CONST64(0xC6B2720287421B41) /* 378 */, CONST64(0x0AC59EC07C00369C) /* 379 */, + CONST64(0xEF4EAC49CB353425) /* 380 */, CONST64(0xF450244EEF0129D8) /* 381 */, + CONST64(0x8ACC46E5CAF4DEB6) /* 382 */, CONST64(0x2FFEAB63989263F7) /* 383 */, + CONST64(0x8F7CB9FE5D7A4578) /* 384 */, CONST64(0x5BD8F7644E634635) /* 385 */, + CONST64(0x427A7315BF2DC900) /* 386 */, CONST64(0x17D0C4AA2125261C) /* 387 */, + CONST64(0x3992486C93518E50) /* 388 */, CONST64(0xB4CBFEE0A2D7D4C3) /* 389 */, + CONST64(0x7C75D6202C5DDD8D) /* 390 */, CONST64(0xDBC295D8E35B6C61) /* 391 */, + CONST64(0x60B369D302032B19) /* 392 */, CONST64(0xCE42685FDCE44132) /* 393 */, + CONST64(0x06F3DDB9DDF65610) /* 394 */, CONST64(0x8EA4D21DB5E148F0) /* 395 */, + CONST64(0x20B0FCE62FCD496F) /* 396 */, CONST64(0x2C1B912358B0EE31) /* 397 */, + CONST64(0xB28317B818F5A308) /* 398 */, CONST64(0xA89C1E189CA6D2CF) /* 399 */, + CONST64(0x0C6B18576AAADBC8) /* 400 */, CONST64(0xB65DEAA91299FAE3) /* 401 */, + CONST64(0xFB2B794B7F1027E7) /* 402 */, CONST64(0x04E4317F443B5BEB) /* 403 */, + CONST64(0x4B852D325939D0A6) /* 404 */, CONST64(0xD5AE6BEEFB207FFC) /* 405 */, + CONST64(0x309682B281C7D374) /* 406 */, CONST64(0xBAE309A194C3B475) /* 407 */, + CONST64(0x8CC3F97B13B49F05) /* 408 */, CONST64(0x98A9422FF8293967) /* 409 */, + CONST64(0x244B16B01076FF7C) /* 410 */, CONST64(0xF8BF571C663D67EE) /* 411 */, + CONST64(0x1F0D6758EEE30DA1) /* 412 */, CONST64(0xC9B611D97ADEB9B7) /* 413 */, + CONST64(0xB7AFD5887B6C57A2) /* 414 */, CONST64(0x6290AE846B984FE1) /* 415 */, + CONST64(0x94DF4CDEACC1A5FD) /* 416 */, CONST64(0x058A5BD1C5483AFF) /* 417 */, + CONST64(0x63166CC142BA3C37) /* 418 */, CONST64(0x8DB8526EB2F76F40) /* 419 */, + CONST64(0xE10880036F0D6D4E) /* 420 */, CONST64(0x9E0523C9971D311D) /* 421 */, + CONST64(0x45EC2824CC7CD691) /* 422 */, CONST64(0x575B8359E62382C9) /* 423 */, + CONST64(0xFA9E400DC4889995) /* 424 */, CONST64(0xD1823ECB45721568) /* 425 */, + CONST64(0xDAFD983B8206082F) /* 426 */, CONST64(0xAA7D29082386A8CB) /* 427 */, + CONST64(0x269FCD4403B87588) /* 428 */, CONST64(0x1B91F5F728BDD1E0) /* 429 */, + CONST64(0xE4669F39040201F6) /* 430 */, CONST64(0x7A1D7C218CF04ADE) /* 431 */, + CONST64(0x65623C29D79CE5CE) /* 432 */, CONST64(0x2368449096C00BB1) /* 433 */, + CONST64(0xAB9BF1879DA503BA) /* 434 */, CONST64(0xBC23ECB1A458058E) /* 435 */, + CONST64(0x9A58DF01BB401ECC) /* 436 */, CONST64(0xA070E868A85F143D) /* 437 */, + CONST64(0x4FF188307DF2239E) /* 438 */, CONST64(0x14D565B41A641183) /* 439 */, + CONST64(0xEE13337452701602) /* 440 */, CONST64(0x950E3DCF3F285E09) /* 441 */, + CONST64(0x59930254B9C80953) /* 442 */, CONST64(0x3BF299408930DA6D) /* 443 */, + CONST64(0xA955943F53691387) /* 444 */, CONST64(0xA15EDECAA9CB8784) /* 445 */, + CONST64(0x29142127352BE9A0) /* 446 */, CONST64(0x76F0371FFF4E7AFB) /* 447 */, + CONST64(0x0239F450274F2228) /* 448 */, CONST64(0xBB073AF01D5E868B) /* 449 */, + CONST64(0xBFC80571C10E96C1) /* 450 */, CONST64(0xD267088568222E23) /* 451 */, + CONST64(0x9671A3D48E80B5B0) /* 452 */, CONST64(0x55B5D38AE193BB81) /* 453 */, + CONST64(0x693AE2D0A18B04B8) /* 454 */, CONST64(0x5C48B4ECADD5335F) /* 455 */, + CONST64(0xFD743B194916A1CA) /* 456 */, CONST64(0x2577018134BE98C4) /* 457 */, + CONST64(0xE77987E83C54A4AD) /* 458 */, CONST64(0x28E11014DA33E1B9) /* 459 */, + CONST64(0x270CC59E226AA213) /* 460 */, CONST64(0x71495F756D1A5F60) /* 461 */, + CONST64(0x9BE853FB60AFEF77) /* 462 */, CONST64(0xADC786A7F7443DBF) /* 463 */, + CONST64(0x0904456173B29A82) /* 464 */, CONST64(0x58BC7A66C232BD5E) /* 465 */, + CONST64(0xF306558C673AC8B2) /* 466 */, CONST64(0x41F639C6B6C9772A) /* 467 */, + CONST64(0x216DEFE99FDA35DA) /* 468 */, CONST64(0x11640CC71C7BE615) /* 469 */, + CONST64(0x93C43694565C5527) /* 470 */, CONST64(0xEA038E6246777839) /* 471 */, + CONST64(0xF9ABF3CE5A3E2469) /* 472 */, CONST64(0x741E768D0FD312D2) /* 473 */, + CONST64(0x0144B883CED652C6) /* 474 */, CONST64(0xC20B5A5BA33F8552) /* 475 */, + CONST64(0x1AE69633C3435A9D) /* 476 */, CONST64(0x97A28CA4088CFDEC) /* 477 */, + CONST64(0x8824A43C1E96F420) /* 478 */, CONST64(0x37612FA66EEEA746) /* 479 */, + CONST64(0x6B4CB165F9CF0E5A) /* 480 */, CONST64(0x43AA1C06A0ABFB4A) /* 481 */, + CONST64(0x7F4DC26FF162796B) /* 482 */, CONST64(0x6CBACC8E54ED9B0F) /* 483 */, + CONST64(0xA6B7FFEFD2BB253E) /* 484 */, CONST64(0x2E25BC95B0A29D4F) /* 485 */, + CONST64(0x86D6A58BDEF1388C) /* 486 */, CONST64(0xDED74AC576B6F054) /* 487 */, + CONST64(0x8030BDBC2B45805D) /* 488 */, CONST64(0x3C81AF70E94D9289) /* 489 */, + CONST64(0x3EFF6DDA9E3100DB) /* 490 */, CONST64(0xB38DC39FDFCC8847) /* 491 */, + CONST64(0x123885528D17B87E) /* 492 */, CONST64(0xF2DA0ED240B1B642) /* 493 */, + CONST64(0x44CEFADCD54BF9A9) /* 494 */, CONST64(0x1312200E433C7EE6) /* 495 */, + CONST64(0x9FFCC84F3A78C748) /* 496 */, CONST64(0xF0CD1F72248576BB) /* 497 */, + CONST64(0xEC6974053638CFE4) /* 498 */, CONST64(0x2BA7B67C0CEC4E4C) /* 499 */, + CONST64(0xAC2F4DF3E5CE32ED) /* 500 */, CONST64(0xCB33D14326EA4C11) /* 501 */, + CONST64(0xA4E9044CC77E58BC) /* 502 */, CONST64(0x5F513293D934FCEF) /* 503 */, + CONST64(0x5DC9645506E55444) /* 504 */, CONST64(0x50DE418F317DE40A) /* 505 */, + CONST64(0x388CB31A69DDE259) /* 506 */, CONST64(0x2DB4A83455820A86) /* 507 */, + CONST64(0x9010A91E84711AE9) /* 508 */, CONST64(0x4DF7F0B7B1498371) /* 509 */, + CONST64(0xD62A2EABC0977179) /* 510 */, CONST64(0x22FAC097AA8D5C0E) /* 511 */, + CONST64(0xF49FCC2FF1DAF39B) /* 512 */, CONST64(0x487FD5C66FF29281) /* 513 */, + CONST64(0xE8A30667FCDCA83F) /* 514 */, CONST64(0x2C9B4BE3D2FCCE63) /* 515 */, + CONST64(0xDA3FF74B93FBBBC2) /* 516 */, CONST64(0x2FA165D2FE70BA66) /* 517 */, + CONST64(0xA103E279970E93D4) /* 518 */, CONST64(0xBECDEC77B0E45E71) /* 519 */, + CONST64(0xCFB41E723985E497) /* 520 */, CONST64(0xB70AAA025EF75017) /* 521 */, + CONST64(0xD42309F03840B8E0) /* 522 */, CONST64(0x8EFC1AD035898579) /* 523 */, + CONST64(0x96C6920BE2B2ABC5) /* 524 */, CONST64(0x66AF4163375A9172) /* 525 */, + CONST64(0x2174ABDCCA7127FB) /* 526 */, CONST64(0xB33CCEA64A72FF41) /* 527 */, + CONST64(0xF04A4933083066A5) /* 528 */, CONST64(0x8D970ACDD7289AF5) /* 529 */, + CONST64(0x8F96E8E031C8C25E) /* 530 */, CONST64(0xF3FEC02276875D47) /* 531 */, + CONST64(0xEC7BF310056190DD) /* 532 */, CONST64(0xF5ADB0AEBB0F1491) /* 533 */, + CONST64(0x9B50F8850FD58892) /* 534 */, CONST64(0x4975488358B74DE8) /* 535 */, + CONST64(0xA3354FF691531C61) /* 536 */, CONST64(0x0702BBE481D2C6EE) /* 537 */, + CONST64(0x89FB24057DEDED98) /* 538 */, CONST64(0xAC3075138596E902) /* 539 */, + CONST64(0x1D2D3580172772ED) /* 540 */, CONST64(0xEB738FC28E6BC30D) /* 541 */, + CONST64(0x5854EF8F63044326) /* 542 */, CONST64(0x9E5C52325ADD3BBE) /* 543 */, + CONST64(0x90AA53CF325C4623) /* 544 */, CONST64(0xC1D24D51349DD067) /* 545 */, + CONST64(0x2051CFEEA69EA624) /* 546 */, CONST64(0x13220F0A862E7E4F) /* 547 */, + CONST64(0xCE39399404E04864) /* 548 */, CONST64(0xD9C42CA47086FCB7) /* 549 */, + CONST64(0x685AD2238A03E7CC) /* 550 */, CONST64(0x066484B2AB2FF1DB) /* 551 */, + CONST64(0xFE9D5D70EFBF79EC) /* 552 */, CONST64(0x5B13B9DD9C481854) /* 553 */, + CONST64(0x15F0D475ED1509AD) /* 554 */, CONST64(0x0BEBCD060EC79851) /* 555 */, + CONST64(0xD58C6791183AB7F8) /* 556 */, CONST64(0xD1187C5052F3EEE4) /* 557 */, + CONST64(0xC95D1192E54E82FF) /* 558 */, CONST64(0x86EEA14CB9AC6CA2) /* 559 */, + CONST64(0x3485BEB153677D5D) /* 560 */, CONST64(0xDD191D781F8C492A) /* 561 */, + CONST64(0xF60866BAA784EBF9) /* 562 */, CONST64(0x518F643BA2D08C74) /* 563 */, + CONST64(0x8852E956E1087C22) /* 564 */, CONST64(0xA768CB8DC410AE8D) /* 565 */, + CONST64(0x38047726BFEC8E1A) /* 566 */, CONST64(0xA67738B4CD3B45AA) /* 567 */, + CONST64(0xAD16691CEC0DDE19) /* 568 */, CONST64(0xC6D4319380462E07) /* 569 */, + CONST64(0xC5A5876D0BA61938) /* 570 */, CONST64(0x16B9FA1FA58FD840) /* 571 */, + CONST64(0x188AB1173CA74F18) /* 572 */, CONST64(0xABDA2F98C99C021F) /* 573 */, + CONST64(0x3E0580AB134AE816) /* 574 */, CONST64(0x5F3B05B773645ABB) /* 575 */, + CONST64(0x2501A2BE5575F2F6) /* 576 */, CONST64(0x1B2F74004E7E8BA9) /* 577 */, + CONST64(0x1CD7580371E8D953) /* 578 */, CONST64(0x7F6ED89562764E30) /* 579 */, + CONST64(0xB15926FF596F003D) /* 580 */, CONST64(0x9F65293DA8C5D6B9) /* 581 */, + CONST64(0x6ECEF04DD690F84C) /* 582 */, CONST64(0x4782275FFF33AF88) /* 583 */, + CONST64(0xE41433083F820801) /* 584 */, CONST64(0xFD0DFE409A1AF9B5) /* 585 */, + CONST64(0x4325A3342CDB396B) /* 586 */, CONST64(0x8AE77E62B301B252) /* 587 */, + CONST64(0xC36F9E9F6655615A) /* 588 */, CONST64(0x85455A2D92D32C09) /* 589 */, + CONST64(0xF2C7DEA949477485) /* 590 */, CONST64(0x63CFB4C133A39EBA) /* 591 */, + CONST64(0x83B040CC6EBC5462) /* 592 */, CONST64(0x3B9454C8FDB326B0) /* 593 */, + CONST64(0x56F56A9E87FFD78C) /* 594 */, CONST64(0x2DC2940D99F42BC6) /* 595 */, + CONST64(0x98F7DF096B096E2D) /* 596 */, CONST64(0x19A6E01E3AD852BF) /* 597 */, + CONST64(0x42A99CCBDBD4B40B) /* 598 */, CONST64(0xA59998AF45E9C559) /* 599 */, + CONST64(0x366295E807D93186) /* 600 */, CONST64(0x6B48181BFAA1F773) /* 601 */, + CONST64(0x1FEC57E2157A0A1D) /* 602 */, CONST64(0x4667446AF6201AD5) /* 603 */, + CONST64(0xE615EBCACFB0F075) /* 604 */, CONST64(0xB8F31F4F68290778) /* 605 */, + CONST64(0x22713ED6CE22D11E) /* 606 */, CONST64(0x3057C1A72EC3C93B) /* 607 */, + CONST64(0xCB46ACC37C3F1F2F) /* 608 */, CONST64(0xDBB893FD02AAF50E) /* 609 */, + CONST64(0x331FD92E600B9FCF) /* 610 */, CONST64(0xA498F96148EA3AD6) /* 611 */, + CONST64(0xA8D8426E8B6A83EA) /* 612 */, CONST64(0xA089B274B7735CDC) /* 613 */, + CONST64(0x87F6B3731E524A11) /* 614 */, CONST64(0x118808E5CBC96749) /* 615 */, + CONST64(0x9906E4C7B19BD394) /* 616 */, CONST64(0xAFED7F7E9B24A20C) /* 617 */, + CONST64(0x6509EADEEB3644A7) /* 618 */, CONST64(0x6C1EF1D3E8EF0EDE) /* 619 */, + CONST64(0xB9C97D43E9798FB4) /* 620 */, CONST64(0xA2F2D784740C28A3) /* 621 */, + CONST64(0x7B8496476197566F) /* 622 */, CONST64(0x7A5BE3E6B65F069D) /* 623 */, + CONST64(0xF96330ED78BE6F10) /* 624 */, CONST64(0xEEE60DE77A076A15) /* 625 */, + CONST64(0x2B4BEE4AA08B9BD0) /* 626 */, CONST64(0x6A56A63EC7B8894E) /* 627 */, + CONST64(0x02121359BA34FEF4) /* 628 */, CONST64(0x4CBF99F8283703FC) /* 629 */, + CONST64(0x398071350CAF30C8) /* 630 */, CONST64(0xD0A77A89F017687A) /* 631 */, + CONST64(0xF1C1A9EB9E423569) /* 632 */, CONST64(0x8C7976282DEE8199) /* 633 */, + CONST64(0x5D1737A5DD1F7ABD) /* 634 */, CONST64(0x4F53433C09A9FA80) /* 635 */, + CONST64(0xFA8B0C53DF7CA1D9) /* 636 */, CONST64(0x3FD9DCBC886CCB77) /* 637 */, + CONST64(0xC040917CA91B4720) /* 638 */, CONST64(0x7DD00142F9D1DCDF) /* 639 */, + CONST64(0x8476FC1D4F387B58) /* 640 */, CONST64(0x23F8E7C5F3316503) /* 641 */, + CONST64(0x032A2244E7E37339) /* 642 */, CONST64(0x5C87A5D750F5A74B) /* 643 */, + CONST64(0x082B4CC43698992E) /* 644 */, CONST64(0xDF917BECB858F63C) /* 645 */, + CONST64(0x3270B8FC5BF86DDA) /* 646 */, CONST64(0x10AE72BB29B5DD76) /* 647 */, + CONST64(0x576AC94E7700362B) /* 648 */, CONST64(0x1AD112DAC61EFB8F) /* 649 */, + CONST64(0x691BC30EC5FAA427) /* 650 */, CONST64(0xFF246311CC327143) /* 651 */, + CONST64(0x3142368E30E53206) /* 652 */, CONST64(0x71380E31E02CA396) /* 653 */, + CONST64(0x958D5C960AAD76F1) /* 654 */, CONST64(0xF8D6F430C16DA536) /* 655 */, + CONST64(0xC8FFD13F1BE7E1D2) /* 656 */, CONST64(0x7578AE66004DDBE1) /* 657 */, + CONST64(0x05833F01067BE646) /* 658 */, CONST64(0xBB34B5AD3BFE586D) /* 659 */, + CONST64(0x095F34C9A12B97F0) /* 660 */, CONST64(0x247AB64525D60CA8) /* 661 */, + CONST64(0xDCDBC6F3017477D1) /* 662 */, CONST64(0x4A2E14D4DECAD24D) /* 663 */, + CONST64(0xBDB5E6D9BE0A1EEB) /* 664 */, CONST64(0x2A7E70F7794301AB) /* 665 */, + CONST64(0xDEF42D8A270540FD) /* 666 */, CONST64(0x01078EC0A34C22C1) /* 667 */, + CONST64(0xE5DE511AF4C16387) /* 668 */, CONST64(0x7EBB3A52BD9A330A) /* 669 */, + CONST64(0x77697857AA7D6435) /* 670 */, CONST64(0x004E831603AE4C32) /* 671 */, + CONST64(0xE7A21020AD78E312) /* 672 */, CONST64(0x9D41A70C6AB420F2) /* 673 */, + CONST64(0x28E06C18EA1141E6) /* 674 */, CONST64(0xD2B28CBD984F6B28) /* 675 */, + CONST64(0x26B75F6C446E9D83) /* 676 */, CONST64(0xBA47568C4D418D7F) /* 677 */, + CONST64(0xD80BADBFE6183D8E) /* 678 */, CONST64(0x0E206D7F5F166044) /* 679 */, + CONST64(0xE258A43911CBCA3E) /* 680 */, CONST64(0x723A1746B21DC0BC) /* 681 */, + CONST64(0xC7CAA854F5D7CDD3) /* 682 */, CONST64(0x7CAC32883D261D9C) /* 683 */, + CONST64(0x7690C26423BA942C) /* 684 */, CONST64(0x17E55524478042B8) /* 685 */, + CONST64(0xE0BE477656A2389F) /* 686 */, CONST64(0x4D289B5E67AB2DA0) /* 687 */, + CONST64(0x44862B9C8FBBFD31) /* 688 */, CONST64(0xB47CC8049D141365) /* 689 */, + CONST64(0x822C1B362B91C793) /* 690 */, CONST64(0x4EB14655FB13DFD8) /* 691 */, + CONST64(0x1ECBBA0714E2A97B) /* 692 */, CONST64(0x6143459D5CDE5F14) /* 693 */, + CONST64(0x53A8FBF1D5F0AC89) /* 694 */, CONST64(0x97EA04D81C5E5B00) /* 695 */, + CONST64(0x622181A8D4FDB3F3) /* 696 */, CONST64(0xE9BCD341572A1208) /* 697 */, + CONST64(0x1411258643CCE58A) /* 698 */, CONST64(0x9144C5FEA4C6E0A4) /* 699 */, + CONST64(0x0D33D06565CF620F) /* 700 */, CONST64(0x54A48D489F219CA1) /* 701 */, + CONST64(0xC43E5EAC6D63C821) /* 702 */, CONST64(0xA9728B3A72770DAF) /* 703 */, + CONST64(0xD7934E7B20DF87EF) /* 704 */, CONST64(0xE35503B61A3E86E5) /* 705 */, + CONST64(0xCAE321FBC819D504) /* 706 */, CONST64(0x129A50B3AC60BFA6) /* 707 */, + CONST64(0xCD5E68EA7E9FB6C3) /* 708 */, CONST64(0xB01C90199483B1C7) /* 709 */, + CONST64(0x3DE93CD5C295376C) /* 710 */, CONST64(0xAED52EDF2AB9AD13) /* 711 */, + CONST64(0x2E60F512C0A07884) /* 712 */, CONST64(0xBC3D86A3E36210C9) /* 713 */, + CONST64(0x35269D9B163951CE) /* 714 */, CONST64(0x0C7D6E2AD0CDB5FA) /* 715 */, + CONST64(0x59E86297D87F5733) /* 716 */, CONST64(0x298EF221898DB0E7) /* 717 */, + CONST64(0x55000029D1A5AA7E) /* 718 */, CONST64(0x8BC08AE1B5061B45) /* 719 */, + CONST64(0xC2C31C2B6C92703A) /* 720 */, CONST64(0x94CC596BAF25EF42) /* 721 */, + CONST64(0x0A1D73DB22540456) /* 722 */, CONST64(0x04B6A0F9D9C4179A) /* 723 */, + CONST64(0xEFFDAFA2AE3D3C60) /* 724 */, CONST64(0xF7C8075BB49496C4) /* 725 */, + CONST64(0x9CC5C7141D1CD4E3) /* 726 */, CONST64(0x78BD1638218E5534) /* 727 */, + CONST64(0xB2F11568F850246A) /* 728 */, CONST64(0xEDFABCFA9502BC29) /* 729 */, + CONST64(0x796CE5F2DA23051B) /* 730 */, CONST64(0xAAE128B0DC93537C) /* 731 */, + CONST64(0x3A493DA0EE4B29AE) /* 732 */, CONST64(0xB5DF6B2C416895D7) /* 733 */, + CONST64(0xFCABBD25122D7F37) /* 734 */, CONST64(0x70810B58105DC4B1) /* 735 */, + CONST64(0xE10FDD37F7882A90) /* 736 */, CONST64(0x524DCAB5518A3F5C) /* 737 */, + CONST64(0x3C9E85878451255B) /* 738 */, CONST64(0x4029828119BD34E2) /* 739 */, + CONST64(0x74A05B6F5D3CECCB) /* 740 */, CONST64(0xB610021542E13ECA) /* 741 */, + CONST64(0x0FF979D12F59E2AC) /* 742 */, CONST64(0x6037DA27E4F9CC50) /* 743 */, + CONST64(0x5E92975A0DF1847D) /* 744 */, CONST64(0xD66DE190D3E623FE) /* 745 */, + CONST64(0x5032D6B87B568048) /* 746 */, CONST64(0x9A36B7CE8235216E) /* 747 */, + CONST64(0x80272A7A24F64B4A) /* 748 */, CONST64(0x93EFED8B8C6916F7) /* 749 */, + CONST64(0x37DDBFF44CCE1555) /* 750 */, CONST64(0x4B95DB5D4B99BD25) /* 751 */, + CONST64(0x92D3FDA169812FC0) /* 752 */, CONST64(0xFB1A4A9A90660BB6) /* 753 */, + CONST64(0x730C196946A4B9B2) /* 754 */, CONST64(0x81E289AA7F49DA68) /* 755 */, + CONST64(0x64669A0F83B1A05F) /* 756 */, CONST64(0x27B3FF7D9644F48B) /* 757 */, + CONST64(0xCC6B615C8DB675B3) /* 758 */, CONST64(0x674F20B9BCEBBE95) /* 759 */, + CONST64(0x6F31238275655982) /* 760 */, CONST64(0x5AE488713E45CF05) /* 761 */, + CONST64(0xBF619F9954C21157) /* 762 */, CONST64(0xEABAC46040A8EAE9) /* 763 */, + CONST64(0x454C6FE9F2C0C1CD) /* 764 */, CONST64(0x419CF6496412691C) /* 765 */, + CONST64(0xD3DC3BEF265B0F70) /* 766 */, CONST64(0x6D0E60F5C3578A9E) /* 767 */, + CONST64(0x5B0E608526323C55) /* 768 */, CONST64(0x1A46C1A9FA1B59F5) /* 769 */, + CONST64(0xA9E245A17C4C8FFA) /* 770 */, CONST64(0x65CA5159DB2955D7) /* 771 */, + CONST64(0x05DB0A76CE35AFC2) /* 772 */, CONST64(0x81EAC77EA9113D45) /* 773 */, + CONST64(0x528EF88AB6AC0A0D) /* 774 */, CONST64(0xA09EA253597BE3FF) /* 775 */, + CONST64(0x430DDFB3AC48CD56) /* 776 */, CONST64(0xC4B3A67AF45CE46F) /* 777 */, + CONST64(0x4ECECFD8FBE2D05E) /* 778 */, CONST64(0x3EF56F10B39935F0) /* 779 */, + CONST64(0x0B22D6829CD619C6) /* 780 */, CONST64(0x17FD460A74DF2069) /* 781 */, + CONST64(0x6CF8CC8E8510ED40) /* 782 */, CONST64(0xD6C824BF3A6ECAA7) /* 783 */, + CONST64(0x61243D581A817049) /* 784 */, CONST64(0x048BACB6BBC163A2) /* 785 */, + CONST64(0xD9A38AC27D44CC32) /* 786 */, CONST64(0x7FDDFF5BAAF410AB) /* 787 */, + CONST64(0xAD6D495AA804824B) /* 788 */, CONST64(0xE1A6A74F2D8C9F94) /* 789 */, + CONST64(0xD4F7851235DEE8E3) /* 790 */, CONST64(0xFD4B7F886540D893) /* 791 */, + CONST64(0x247C20042AA4BFDA) /* 792 */, CONST64(0x096EA1C517D1327C) /* 793 */, + CONST64(0xD56966B4361A6685) /* 794 */, CONST64(0x277DA5C31221057D) /* 795 */, + CONST64(0x94D59893A43ACFF7) /* 796 */, CONST64(0x64F0C51CCDC02281) /* 797 */, + CONST64(0x3D33BCC4FF6189DB) /* 798 */, CONST64(0xE005CB184CE66AF1) /* 799 */, + CONST64(0xFF5CCD1D1DB99BEA) /* 800 */, CONST64(0xB0B854A7FE42980F) /* 801 */, + CONST64(0x7BD46A6A718D4B9F) /* 802 */, CONST64(0xD10FA8CC22A5FD8C) /* 803 */, + CONST64(0xD31484952BE4BD31) /* 804 */, CONST64(0xC7FA975FCB243847) /* 805 */, + CONST64(0x4886ED1E5846C407) /* 806 */, CONST64(0x28CDDB791EB70B04) /* 807 */, + CONST64(0xC2B00BE2F573417F) /* 808 */, CONST64(0x5C9590452180F877) /* 809 */, + CONST64(0x7A6BDDFFF370EB00) /* 810 */, CONST64(0xCE509E38D6D9D6A4) /* 811 */, + CONST64(0xEBEB0F00647FA702) /* 812 */, CONST64(0x1DCC06CF76606F06) /* 813 */, + CONST64(0xE4D9F28BA286FF0A) /* 814 */, CONST64(0xD85A305DC918C262) /* 815 */, + CONST64(0x475B1D8732225F54) /* 816 */, CONST64(0x2D4FB51668CCB5FE) /* 817 */, + CONST64(0xA679B9D9D72BBA20) /* 818 */, CONST64(0x53841C0D912D43A5) /* 819 */, + CONST64(0x3B7EAA48BF12A4E8) /* 820 */, CONST64(0x781E0E47F22F1DDF) /* 821 */, + CONST64(0xEFF20CE60AB50973) /* 822 */, CONST64(0x20D261D19DFFB742) /* 823 */, + CONST64(0x16A12B03062A2E39) /* 824 */, CONST64(0x1960EB2239650495) /* 825 */, + CONST64(0x251C16FED50EB8B8) /* 826 */, CONST64(0x9AC0C330F826016E) /* 827 */, + CONST64(0xED152665953E7671) /* 828 */, CONST64(0x02D63194A6369570) /* 829 */, + CONST64(0x5074F08394B1C987) /* 830 */, CONST64(0x70BA598C90B25CE1) /* 831 */, + CONST64(0x794A15810B9742F6) /* 832 */, CONST64(0x0D5925E9FCAF8C6C) /* 833 */, + CONST64(0x3067716CD868744E) /* 834 */, CONST64(0x910AB077E8D7731B) /* 835 */, + CONST64(0x6A61BBDB5AC42F61) /* 836 */, CONST64(0x93513EFBF0851567) /* 837 */, + CONST64(0xF494724B9E83E9D5) /* 838 */, CONST64(0xE887E1985C09648D) /* 839 */, + CONST64(0x34B1D3C675370CFD) /* 840 */, CONST64(0xDC35E433BC0D255D) /* 841 */, + CONST64(0xD0AAB84234131BE0) /* 842 */, CONST64(0x08042A50B48B7EAF) /* 843 */, + CONST64(0x9997C4EE44A3AB35) /* 844 */, CONST64(0x829A7B49201799D0) /* 845 */, + CONST64(0x263B8307B7C54441) /* 846 */, CONST64(0x752F95F4FD6A6CA6) /* 847 */, + CONST64(0x927217402C08C6E5) /* 848 */, CONST64(0x2A8AB754A795D9EE) /* 849 */, + CONST64(0xA442F7552F72943D) /* 850 */, CONST64(0x2C31334E19781208) /* 851 */, + CONST64(0x4FA98D7CEAEE6291) /* 852 */, CONST64(0x55C3862F665DB309) /* 853 */, + CONST64(0xBD0610175D53B1F3) /* 854 */, CONST64(0x46FE6CB840413F27) /* 855 */, + CONST64(0x3FE03792DF0CFA59) /* 856 */, CONST64(0xCFE700372EB85E8F) /* 857 */, + CONST64(0xA7BE29E7ADBCE118) /* 858 */, CONST64(0xE544EE5CDE8431DD) /* 859 */, + CONST64(0x8A781B1B41F1873E) /* 860 */, CONST64(0xA5C94C78A0D2F0E7) /* 861 */, + CONST64(0x39412E2877B60728) /* 862 */, CONST64(0xA1265EF3AFC9A62C) /* 863 */, + CONST64(0xBCC2770C6A2506C5) /* 864 */, CONST64(0x3AB66DD5DCE1CE12) /* 865 */, + CONST64(0xE65499D04A675B37) /* 866 */, CONST64(0x7D8F523481BFD216) /* 867 */, + CONST64(0x0F6F64FCEC15F389) /* 868 */, CONST64(0x74EFBE618B5B13C8) /* 869 */, + CONST64(0xACDC82B714273E1D) /* 870 */, CONST64(0xDD40BFE003199D17) /* 871 */, + CONST64(0x37E99257E7E061F8) /* 872 */, CONST64(0xFA52626904775AAA) /* 873 */, + CONST64(0x8BBBF63A463D56F9) /* 874 */, CONST64(0xF0013F1543A26E64) /* 875 */, + CONST64(0xA8307E9F879EC898) /* 876 */, CONST64(0xCC4C27A4150177CC) /* 877 */, + CONST64(0x1B432F2CCA1D3348) /* 878 */, CONST64(0xDE1D1F8F9F6FA013) /* 879 */, + CONST64(0x606602A047A7DDD6) /* 880 */, CONST64(0xD237AB64CC1CB2C7) /* 881 */, + CONST64(0x9B938E7225FCD1D3) /* 882 */, CONST64(0xEC4E03708E0FF476) /* 883 */, + CONST64(0xFEB2FBDA3D03C12D) /* 884 */, CONST64(0xAE0BCED2EE43889A) /* 885 */, + CONST64(0x22CB8923EBFB4F43) /* 886 */, CONST64(0x69360D013CF7396D) /* 887 */, + CONST64(0x855E3602D2D4E022) /* 888 */, CONST64(0x073805BAD01F784C) /* 889 */, + CONST64(0x33E17A133852F546) /* 890 */, CONST64(0xDF4874058AC7B638) /* 891 */, + CONST64(0xBA92B29C678AA14A) /* 892 */, CONST64(0x0CE89FC76CFAADCD) /* 893 */, + CONST64(0x5F9D4E0908339E34) /* 894 */, CONST64(0xF1AFE9291F5923B9) /* 895 */, + CONST64(0x6E3480F60F4A265F) /* 896 */, CONST64(0xEEBF3A2AB29B841C) /* 897 */, + CONST64(0xE21938A88F91B4AD) /* 898 */, CONST64(0x57DFEFF845C6D3C3) /* 899 */, + CONST64(0x2F006B0BF62CAAF2) /* 900 */, CONST64(0x62F479EF6F75EE78) /* 901 */, + CONST64(0x11A55AD41C8916A9) /* 902 */, CONST64(0xF229D29084FED453) /* 903 */, + CONST64(0x42F1C27B16B000E6) /* 904 */, CONST64(0x2B1F76749823C074) /* 905 */, + CONST64(0x4B76ECA3C2745360) /* 906 */, CONST64(0x8C98F463B91691BD) /* 907 */, + CONST64(0x14BCC93CF1ADE66A) /* 908 */, CONST64(0x8885213E6D458397) /* 909 */, + CONST64(0x8E177DF0274D4711) /* 910 */, CONST64(0xB49B73B5503F2951) /* 911 */, + CONST64(0x10168168C3F96B6B) /* 912 */, CONST64(0x0E3D963B63CAB0AE) /* 913 */, + CONST64(0x8DFC4B5655A1DB14) /* 914 */, CONST64(0xF789F1356E14DE5C) /* 915 */, + CONST64(0x683E68AF4E51DAC1) /* 916 */, CONST64(0xC9A84F9D8D4B0FD9) /* 917 */, + CONST64(0x3691E03F52A0F9D1) /* 918 */, CONST64(0x5ED86E46E1878E80) /* 919 */, + CONST64(0x3C711A0E99D07150) /* 920 */, CONST64(0x5A0865B20C4E9310) /* 921 */, + CONST64(0x56FBFC1FE4F0682E) /* 922 */, CONST64(0xEA8D5DE3105EDF9B) /* 923 */, + CONST64(0x71ABFDB12379187A) /* 924 */, CONST64(0x2EB99DE1BEE77B9C) /* 925 */, + CONST64(0x21ECC0EA33CF4523) /* 926 */, CONST64(0x59A4D7521805C7A1) /* 927 */, + CONST64(0x3896F5EB56AE7C72) /* 928 */, CONST64(0xAA638F3DB18F75DC) /* 929 */, + CONST64(0x9F39358DABE9808E) /* 930 */, CONST64(0xB7DEFA91C00B72AC) /* 931 */, + CONST64(0x6B5541FD62492D92) /* 932 */, CONST64(0x6DC6DEE8F92E4D5B) /* 933 */, + CONST64(0x353F57ABC4BEEA7E) /* 934 */, CONST64(0x735769D6DA5690CE) /* 935 */, + CONST64(0x0A234AA642391484) /* 936 */, CONST64(0xF6F9508028F80D9D) /* 937 */, + CONST64(0xB8E319A27AB3F215) /* 938 */, CONST64(0x31AD9C1151341A4D) /* 939 */, + CONST64(0x773C22A57BEF5805) /* 940 */, CONST64(0x45C7561A07968633) /* 941 */, + CONST64(0xF913DA9E249DBE36) /* 942 */, CONST64(0xDA652D9B78A64C68) /* 943 */, + CONST64(0x4C27A97F3BC334EF) /* 944 */, CONST64(0x76621220E66B17F4) /* 945 */, + CONST64(0x967743899ACD7D0B) /* 946 */, CONST64(0xF3EE5BCAE0ED6782) /* 947 */, + CONST64(0x409F753600C879FC) /* 948 */, CONST64(0x06D09A39B5926DB6) /* 949 */, + CONST64(0x6F83AEB0317AC588) /* 950 */, CONST64(0x01E6CA4A86381F21) /* 951 */, + CONST64(0x66FF3462D19F3025) /* 952 */, CONST64(0x72207C24DDFD3BFB) /* 953 */, + CONST64(0x4AF6B6D3E2ECE2EB) /* 954 */, CONST64(0x9C994DBEC7EA08DE) /* 955 */, + CONST64(0x49ACE597B09A8BC4) /* 956 */, CONST64(0xB38C4766CF0797BA) /* 957 */, + CONST64(0x131B9373C57C2A75) /* 958 */, CONST64(0xB1822CCE61931E58) /* 959 */, + CONST64(0x9D7555B909BA1C0C) /* 960 */, CONST64(0x127FAFDD937D11D2) /* 961 */, + CONST64(0x29DA3BADC66D92E4) /* 962 */, CONST64(0xA2C1D57154C2ECBC) /* 963 */, + CONST64(0x58C5134D82F6FE24) /* 964 */, CONST64(0x1C3AE3515B62274F) /* 965 */, + CONST64(0xE907C82E01CB8126) /* 966 */, CONST64(0xF8ED091913E37FCB) /* 967 */, + CONST64(0x3249D8F9C80046C9) /* 968 */, CONST64(0x80CF9BEDE388FB63) /* 969 */, + CONST64(0x1881539A116CF19E) /* 970 */, CONST64(0x5103F3F76BD52457) /* 971 */, + CONST64(0x15B7E6F5AE47F7A8) /* 972 */, CONST64(0xDBD7C6DED47E9CCF) /* 973 */, + CONST64(0x44E55C410228BB1A) /* 974 */, CONST64(0xB647D4255EDB4E99) /* 975 */, + CONST64(0x5D11882BB8AAFC30) /* 976 */, CONST64(0xF5098BBB29D3212A) /* 977 */, + CONST64(0x8FB5EA14E90296B3) /* 978 */, CONST64(0x677B942157DD025A) /* 979 */, + CONST64(0xFB58E7C0A390ACB5) /* 980 */, CONST64(0x89D3674C83BD4A01) /* 981 */, + CONST64(0x9E2DA4DF4BF3B93B) /* 982 */, CONST64(0xFCC41E328CAB4829) /* 983 */, + CONST64(0x03F38C96BA582C52) /* 984 */, CONST64(0xCAD1BDBD7FD85DB2) /* 985 */, + CONST64(0xBBB442C16082AE83) /* 986 */, CONST64(0xB95FE86BA5DA9AB0) /* 987 */, + CONST64(0xB22E04673771A93F) /* 988 */, CONST64(0x845358C9493152D8) /* 989 */, + CONST64(0xBE2A488697B4541E) /* 990 */, CONST64(0x95A2DC2DD38E6966) /* 991 */, + CONST64(0xC02C11AC923C852B) /* 992 */, CONST64(0x2388B1990DF2A87B) /* 993 */, + CONST64(0x7C8008FA1B4F37BE) /* 994 */, CONST64(0x1F70D0C84D54E503) /* 995 */, + CONST64(0x5490ADEC7ECE57D4) /* 996 */, CONST64(0x002B3C27D9063A3A) /* 997 */, + CONST64(0x7EAEA3848030A2BF) /* 998 */, CONST64(0xC602326DED2003C0) /* 999 */, + CONST64(0x83A7287D69A94086) /* 1000 */, CONST64(0xC57A5FCB30F57A8A) /* 1001 */, + CONST64(0xB56844E479EBE779) /* 1002 */, CONST64(0xA373B40F05DCBCE9) /* 1003 */, + CONST64(0xD71A786E88570EE2) /* 1004 */, CONST64(0x879CBACDBDE8F6A0) /* 1005 */, + CONST64(0x976AD1BCC164A32F) /* 1006 */, CONST64(0xAB21E25E9666D78B) /* 1007 */, + CONST64(0x901063AAE5E5C33C) /* 1008 */, CONST64(0x9818B34448698D90) /* 1009 */, + CONST64(0xE36487AE3E1E8ABB) /* 1010 */, CONST64(0xAFBDF931893BDCB4) /* 1011 */, + CONST64(0x6345A0DC5FBBD519) /* 1012 */, CONST64(0x8628FE269B9465CA) /* 1013 */, + CONST64(0x1E5D01603F9C51EC) /* 1014 */, CONST64(0x4DE44006A15049B7) /* 1015 */, + CONST64(0xBF6C70E5F776CBB1) /* 1016 */, CONST64(0x411218F2EF552BED) /* 1017 */, + CONST64(0xCB0C0708705A36A3) /* 1018 */, CONST64(0xE74D14754F986044) /* 1019 */, + CONST64(0xCD56D9430EA8280E) /* 1020 */, CONST64(0xC12591D7535F5065) /* 1021 */, + CONST64(0xC83223F1720AEF96) /* 1022 */, CONST64(0xC3A0396F7363A51F) /* 1023 */}; + +#ifdef _MSC_VER + #define INLINE __inline +#else + #define INLINE +#endif + +/* one round of the hash function */ +INLINE static void tiger_round(ulong64 *a, ulong64 *b, ulong64 *c, ulong64 x, int mul) +{ + ulong64 tmp; + tmp = (*c ^= x); + *a -= t1[byte(tmp, 0)] ^ t2[byte(tmp, 2)] ^ t3[byte(tmp, 4)] ^ t4[byte(tmp, 6)]; + tmp = (*b += t4[byte(tmp, 1)] ^ t3[byte(tmp, 3)] ^ t2[byte(tmp,5)] ^ t1[byte(tmp,7)]); + switch (mul) { + case 5: *b = (tmp << 2) + tmp; break; + case 7: *b = (tmp << 3) - tmp; break; + case 9: *b = (tmp << 3) + tmp; break; + } +} + +/* one complete pass */ +static void pass(ulong64 *a, ulong64 *b, ulong64 *c, ulong64 *x, int mul) +{ + tiger_round(a,b,c,x[0],mul); + tiger_round(b,c,a,x[1],mul); + tiger_round(c,a,b,x[2],mul); + tiger_round(a,b,c,x[3],mul); + tiger_round(b,c,a,x[4],mul); + tiger_round(c,a,b,x[5],mul); + tiger_round(a,b,c,x[6],mul); + tiger_round(b,c,a,x[7],mul); +} + +/* The key mixing schedule */ +static void key_schedule(ulong64 *x) +{ + x[0] -= x[7] ^ CONST64(0xA5A5A5A5A5A5A5A5); + x[1] ^= x[0]; + x[2] += x[1]; + x[3] -= x[2] ^ ((~x[1])<<19); + x[4] ^= x[3]; + x[5] += x[4]; + x[6] -= x[5] ^ ((~x[4])>>23); + x[7] ^= x[6]; + x[0] += x[7]; + x[1] -= x[0] ^ ((~x[7])<<19); + x[2] ^= x[1]; + x[3] += x[2]; + x[4] -= x[3] ^ ((~x[2])>>23); + x[5] ^= x[4]; + x[6] += x[5]; + x[7] -= x[6] ^ CONST64(0x0123456789ABCDEF); +} + +#ifdef LTC_CLEAN_STACK +static int _tiger_compress(hash_state *md, unsigned char *buf) +#else +static int tiger_compress(hash_state *md, unsigned char *buf) +#endif +{ + ulong64 a, b, c, x[8]; + unsigned long i; + + /* load words */ + for (i = 0; i < 8; i++) { + LOAD64L(x[i],&buf[8*i]); + } + a = md->tiger.state[0]; + b = md->tiger.state[1]; + c = md->tiger.state[2]; + + pass(&a,&b,&c,x,5); + key_schedule(x); + pass(&c,&a,&b,x,7); + key_schedule(x); + pass(&b,&c,&a,x,9); + + /* store state */ + md->tiger.state[0] = a ^ md->tiger.state[0]; + md->tiger.state[1] = b - md->tiger.state[1]; + md->tiger.state[2] = c + md->tiger.state[2]; + + return CRYPT_OK; +} + +#ifdef LTC_CLEAN_STACK +static int tiger_compress(hash_state *md, unsigned char *buf) +{ + int err; + err = _tiger_compress(md, buf); + burn_stack(sizeof(ulong64) * 11 + sizeof(unsigned long)); + return err; +} +#endif + +/** + Initialize the hash state + @param md The hash state you wish to initialize + @return CRYPT_OK if successful +*/ +int tiger_init(hash_state *md) +{ + LTC_ARGCHK(md != NULL); + md->tiger.state[0] = CONST64(0x0123456789ABCDEF); + md->tiger.state[1] = CONST64(0xFEDCBA9876543210); + md->tiger.state[2] = CONST64(0xF096A5B4C3B2E187); + md->tiger.curlen = 0; + md->tiger.length = 0; + return CRYPT_OK; +} + +/** + Process a block of memory though the hash + @param md The hash state + @param in The data to hash + @param inlen The length of the data (octets) + @return CRYPT_OK if successful +*/ +HASH_PROCESS(tiger_process, tiger_compress, tiger, 64) + +/** + Terminate the hash to get the digest + @param md The hash state + @param out [out] The destination of the hash (24 bytes) + @return CRYPT_OK if successful +*/ +int tiger_done(hash_state * md, unsigned char *out) +{ + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(out != NULL); + + if (md->tiger.curlen >= sizeof(md->tiger.buf)) { + return CRYPT_INVALID_ARG; + } + + /* increase the length of the message */ + md->tiger.length += md->tiger.curlen * 8; + + /* append the '1' bit */ + md->tiger.buf[md->tiger.curlen++] = (unsigned char)0x01; + + /* if the length is currently above 56 bytes we append zeros + * then compress. Then we can fall back to padding zeros and length + * encoding like normal. */ + if (md->tiger.curlen > 56) { + while (md->tiger.curlen < 64) { + md->tiger.buf[md->tiger.curlen++] = (unsigned char)0; + } + tiger_compress(md, md->tiger.buf); + md->tiger.curlen = 0; + } + + /* pad upto 56 bytes of zeroes */ + while (md->tiger.curlen < 56) { + md->tiger.buf[md->tiger.curlen++] = (unsigned char)0; + } + + /* store length */ + STORE64L(md->tiger.length, md->tiger.buf+56); + tiger_compress(md, md->tiger.buf); + + /* copy output */ + STORE64L(md->tiger.state[0], &out[0]); + STORE64L(md->tiger.state[1], &out[8]); + STORE64L(md->tiger.state[2], &out[16]); +#ifdef LTC_CLEAN_STACK + zeromem(md, sizeof(hash_state)); +#endif + + return CRYPT_OK; +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int tiger_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const struct { + const char *msg; + unsigned char hash[24]; + } tests[] = { + { "", + { 0x32, 0x93, 0xac, 0x63, 0x0c, 0x13, 0xf0, 0x24, + 0x5f, 0x92, 0xbb, 0xb1, 0x76, 0x6e, 0x16, 0x16, + 0x7a, 0x4e, 0x58, 0x49, 0x2d, 0xde, 0x73, 0xf3 } + }, + { "abc", + { 0x2a, 0xab, 0x14, 0x84, 0xe8, 0xc1, 0x58, 0xf2, + 0xbf, 0xb8, 0xc5, 0xff, 0x41, 0xb5, 0x7a, 0x52, + 0x51, 0x29, 0x13, 0x1c, 0x95, 0x7b, 0x5f, 0x93 } + }, + { "Tiger", + { 0xdd, 0x00, 0x23, 0x07, 0x99, 0xf5, 0x00, 0x9f, + 0xec, 0x6d, 0xeb, 0xc8, 0x38, 0xbb, 0x6a, 0x27, + 0xdf, 0x2b, 0x9d, 0x6f, 0x11, 0x0c, 0x79, 0x37 } + }, + { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-", + { 0xf7, 0x1c, 0x85, 0x83, 0x90, 0x2a, 0xfb, 0x87, + 0x9e, 0xdf, 0xe6, 0x10, 0xf8, 0x2c, 0x0d, 0x47, + 0x86, 0xa3, 0xa5, 0x34, 0x50, 0x44, 0x86, 0xb5 } + }, + { "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-", + { 0xc5, 0x40, 0x34, 0xe5, 0xb4, 0x3e, 0xb8, 0x00, + 0x58, 0x48, 0xa7, 0xe0, 0xae, 0x6a, 0xac, 0x76, + 0xe4, 0xff, 0x59, 0x0a, 0xe7, 0x15, 0xfd, 0x25 } + }, + }; + + int i; + unsigned char tmp[24]; + hash_state md; + + for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { + tiger_init(&md); + tiger_process(&md, (unsigned char *)tests[i].msg, (unsigned long)strlen(tests[i].msg)); + tiger_done(&md, tmp); + if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "TIGER", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; + #endif +} + +#endif + +/* +Hash of "": + 24F0130C63AC9332 16166E76B1BB925F F373DE2D49584E7A +Hash of "abc": + F258C1E88414AB2A 527AB541FFC5B8BF 935F7B951C132951 +Hash of "Tiger": + 9F00F599072300DD 276ABB38C8EB6DEC 37790C116F9D2BDF +Hash of "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-": + 87FB2A9083851CF7 470D2CF810E6DF9E B586445034A5A386 +Hash of "ABCDEFGHIJKLMNOPQRSTUVWXYZ=abcdefghijklmnopqrstuvwxyz+0123456789": + 467DB80863EBCE48 8DF1CD1261655DE9 57896565975F9197 +Hash of "Tiger - A Fast New Hash Function, by Ross Anderson and Eli Biham": + 0C410A042968868A 1671DA5A3FD29A72 5EC1E457D3CDB303 +Hash of "Tiger - A Fast New Hash Function, by Ross Anderson and Eli Biham, proceedings of Fast Software Encryption 3, Cambridge.": + EBF591D5AFA655CE 7F22894FF87F54AC 89C811B6B0DA3193 +Hash of "Tiger - A Fast New Hash Function, by Ross Anderson and Eli Biham, proceedings of Fast Software Encryption 3, Cambridge, 1996.": + 3D9AEB03D1BD1A63 57B2774DFD6D5B24 DD68151D503974FC +Hash of "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-": + 00B83EB4E53440C5 76AC6AAEE0A74858 25FD15E70A59FFE4 +*/ + + + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/whirl/whirl.c b/fsbl/lib/libtomcrypt/src/hashes/whirl/whirl.c new file mode 100644 index 000000000..fe152cd22 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/whirl/whirl.c @@ -0,0 +1,306 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file whirl.c + LTC_WHIRLPOOL (using their new sbox) hash function by Tom St Denis +*/ + +#include "tomcrypt.h" + +#ifdef LTC_WHIRLPOOL + +const struct ltc_hash_descriptor whirlpool_desc = +{ + "whirlpool", + 11, + 64, + 64, + + /* OID */ + { 1, 0, 10118, 3, 0, 55 }, + 6, + + &whirlpool_init, + &whirlpool_process, + &whirlpool_done, + &whirlpool_test, + NULL +}; + +/* the sboxes */ +#define __LTC_WHIRLTAB_C__ +#include "whirltab.c" + +/* get a_{i,j} */ +#define GB(a,i,j) ((a[(i) & 7] >> (8 * (j))) & 255) + +/* shortcut macro to perform three functions at once */ +#define theta_pi_gamma(a, i) \ + (SB0(GB(a, i-0, 7)) ^ \ + SB1(GB(a, i-1, 6)) ^ \ + SB2(GB(a, i-2, 5)) ^ \ + SB3(GB(a, i-3, 4)) ^ \ + SB4(GB(a, i-4, 3)) ^ \ + SB5(GB(a, i-5, 2)) ^ \ + SB6(GB(a, i-6, 1)) ^ \ + SB7(GB(a, i-7, 0))) + +#ifdef LTC_CLEAN_STACK +static int _whirlpool_compress(hash_state *md, unsigned char *buf) +#else +static int whirlpool_compress(hash_state *md, unsigned char *buf) +#endif +{ + ulong64 K[2][8], T[3][8]; + int x, y; + + /* load the block/state */ + for (x = 0; x < 8; x++) { + K[0][x] = md->whirlpool.state[x]; + + LOAD64H(T[0][x], buf + (8 * x)); + T[2][x] = T[0][x]; + T[0][x] ^= K[0][x]; + } + + /* do rounds 1..10 */ + for (x = 0; x < 10; x += 2) { + /* odd round */ + /* apply main transform to K[0] into K[1] */ + for (y = 0; y < 8; y++) { + K[1][y] = theta_pi_gamma(K[0], y); + } + /* xor the constant */ + K[1][0] ^= cont[x]; + + /* apply main transform to T[0] into T[1] */ + for (y = 0; y < 8; y++) { + T[1][y] = theta_pi_gamma(T[0], y) ^ K[1][y]; + } + + /* even round */ + /* apply main transform to K[1] into K[0] */ + for (y = 0; y < 8; y++) { + K[0][y] = theta_pi_gamma(K[1], y); + } + /* xor the constant */ + K[0][0] ^= cont[x+1]; + + /* apply main transform to T[1] into T[0] */ + for (y = 0; y < 8; y++) { + T[0][y] = theta_pi_gamma(T[1], y) ^ K[0][y]; + } + } + + /* store state */ + for (x = 0; x < 8; x++) { + md->whirlpool.state[x] ^= T[0][x] ^ T[2][x]; + } + + return CRYPT_OK; +} + + +#ifdef LTC_CLEAN_STACK +static int whirlpool_compress(hash_state *md, unsigned char *buf) +{ + int err; + err = _whirlpool_compress(md, buf); + burn_stack((5 * 8 * sizeof(ulong64)) + (2 * sizeof(int))); + return err; +} +#endif + + +/** + Initialize the hash state + @param md The hash state you wish to initialize + @return CRYPT_OK if successful +*/ +int whirlpool_init(hash_state * md) +{ + LTC_ARGCHK(md != NULL); + zeromem(&md->whirlpool, sizeof(md->whirlpool)); + return CRYPT_OK; +} + +/** + Process a block of memory though the hash + @param md The hash state + @param in The data to hash + @param inlen The length of the data (octets) + @return CRYPT_OK if successful +*/ +HASH_PROCESS(whirlpool_process, whirlpool_compress, whirlpool, 64) + +/** + Terminate the hash to get the digest + @param md The hash state + @param out [out] The destination of the hash (64 bytes) + @return CRYPT_OK if successful +*/ +int whirlpool_done(hash_state * md, unsigned char *out) +{ + int i; + + LTC_ARGCHK(md != NULL); + LTC_ARGCHK(out != NULL); + + if (md->whirlpool.curlen >= sizeof(md->whirlpool.buf)) { + return CRYPT_INVALID_ARG; + } + + /* increase the length of the message */ + md->whirlpool.length += md->whirlpool.curlen * 8; + + /* append the '1' bit */ + md->whirlpool.buf[md->whirlpool.curlen++] = (unsigned char)0x80; + + /* if the length is currently above 32 bytes we append zeros + * then compress. Then we can fall back to padding zeros and length + * encoding like normal. + */ + if (md->whirlpool.curlen > 32) { + while (md->whirlpool.curlen < 64) { + md->whirlpool.buf[md->whirlpool.curlen++] = (unsigned char)0; + } + whirlpool_compress(md, md->whirlpool.buf); + md->whirlpool.curlen = 0; + } + + /* pad upto 56 bytes of zeroes (should be 32 but we only support 64-bit lengths) */ + while (md->whirlpool.curlen < 56) { + md->whirlpool.buf[md->whirlpool.curlen++] = (unsigned char)0; + } + + /* store length */ + STORE64H(md->whirlpool.length, md->whirlpool.buf+56); + whirlpool_compress(md, md->whirlpool.buf); + + /* copy output */ + for (i = 0; i < 8; i++) { + STORE64H(md->whirlpool.state[i], out+(8*i)); + } +#ifdef LTC_CLEAN_STACK + zeromem(md, sizeof(*md)); +#endif + return CRYPT_OK; +} + +/** + Self-test the hash + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled +*/ +int whirlpool_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + static const struct { + int len; + unsigned char msg[128], hash[64]; + } tests[] = { + + /* NULL Message */ +{ + 0, + { 0x00 }, + { 0x19, 0xFA, 0x61, 0xD7, 0x55, 0x22, 0xA4, 0x66, 0x9B, 0x44, 0xE3, 0x9C, 0x1D, 0x2E, 0x17, 0x26, + 0xC5, 0x30, 0x23, 0x21, 0x30, 0xD4, 0x07, 0xF8, 0x9A, 0xFE, 0xE0, 0x96, 0x49, 0x97, 0xF7, 0xA7, + 0x3E, 0x83, 0xBE, 0x69, 0x8B, 0x28, 0x8F, 0xEB, 0xCF, 0x88, 0xE3, 0xE0, 0x3C, 0x4F, 0x07, 0x57, + 0xEA, 0x89, 0x64, 0xE5, 0x9B, 0x63, 0xD9, 0x37, 0x08, 0xB1, 0x38, 0xCC, 0x42, 0xA6, 0x6E, 0xB3 } +}, + + + /* 448-bits of 0 bits */ +{ + + 56, + { 0x00 }, + { 0x0B, 0x3F, 0x53, 0x78, 0xEB, 0xED, 0x2B, 0xF4, 0xD7, 0xBE, 0x3C, 0xFD, 0x81, 0x8C, 0x1B, 0x03, + 0xB6, 0xBB, 0x03, 0xD3, 0x46, 0x94, 0x8B, 0x04, 0xF4, 0xF4, 0x0C, 0x72, 0x6F, 0x07, 0x58, 0x70, + 0x2A, 0x0F, 0x1E, 0x22, 0x58, 0x80, 0xE3, 0x8D, 0xD5, 0xF6, 0xED, 0x6D, 0xE9, 0xB1, 0xE9, 0x61, + 0xE4, 0x9F, 0xC1, 0x31, 0x8D, 0x7C, 0xB7, 0x48, 0x22, 0xF3, 0xD0, 0xE2, 0xE9, 0xA7, 0xE7, 0xB0 } +}, + + /* 520-bits of 0 bits */ +{ + 65, + { 0x00 }, + { 0x85, 0xE1, 0x24, 0xC4, 0x41, 0x5B, 0xCF, 0x43, 0x19, 0x54, 0x3E, 0x3A, 0x63, 0xFF, 0x57, 0x1D, + 0x09, 0x35, 0x4C, 0xEE, 0xBE, 0xE1, 0xE3, 0x25, 0x30, 0x8C, 0x90, 0x69, 0xF4, 0x3E, 0x2A, 0xE4, + 0xD0, 0xE5, 0x1D, 0x4E, 0xB1, 0xE8, 0x64, 0x28, 0x70, 0x19, 0x4E, 0x95, 0x30, 0xD8, 0xD8, 0xAF, + 0x65, 0x89, 0xD1, 0xBF, 0x69, 0x49, 0xDD, 0xF9, 0x0A, 0x7F, 0x12, 0x08, 0x62, 0x37, 0x95, 0xB9 } +}, + + /* 512-bits, leading set */ +{ + 64, + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x10, 0x3E, 0x00, 0x55, 0xA9, 0xB0, 0x90, 0xE1, 0x1C, 0x8F, 0xDD, 0xEB, 0xBA, 0x06, 0xC0, 0x5A, + 0xCE, 0x8B, 0x64, 0xB8, 0x96, 0x12, 0x8F, 0x6E, 0xED, 0x30, 0x71, 0xFC, 0xF3, 0xDC, 0x16, 0x94, + 0x67, 0x78, 0xE0, 0x72, 0x23, 0x23, 0x3F, 0xD1, 0x80, 0xFC, 0x40, 0xCC, 0xDB, 0x84, 0x30, 0xA6, + 0x40, 0xE3, 0x76, 0x34, 0x27, 0x1E, 0x65, 0x5C, 0xA1, 0x67, 0x4E, 0xBF, 0xF5, 0x07, 0xF8, 0xCB } +}, + + /* 512-bits, leading set of second byte */ +{ + 64, + { 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, + { 0x35, 0x7B, 0x42, 0xEA, 0x79, 0xBC, 0x97, 0x86, 0x97, 0x5A, 0x3C, 0x44, 0x70, 0xAA, 0xB2, 0x3E, + 0x62, 0x29, 0x79, 0x7B, 0xAD, 0xBD, 0x54, 0x36, 0x5B, 0x54, 0x96, 0xE5, 0x5D, 0x9D, 0xD7, 0x9F, + 0xE9, 0x62, 0x4F, 0xB4, 0x22, 0x66, 0x93, 0x0A, 0x62, 0x8E, 0xD4, 0xDB, 0x08, 0xF9, 0xDD, 0x35, + 0xEF, 0x1B, 0xE1, 0x04, 0x53, 0xFC, 0x18, 0xF4, 0x2C, 0x7F, 0x5E, 0x1F, 0x9B, 0xAE, 0x55, 0xE0 } +}, + + /* 512-bits, leading set of last byte */ +{ + 64, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80 }, + { 0x8B, 0x39, 0x04, 0xDD, 0x19, 0x81, 0x41, 0x26, 0xFD, 0x02, 0x74, 0xAB, 0x49, 0xC5, 0x97, 0xF6, + 0xD7, 0x75, 0x33, 0x52, 0xA2, 0xDD, 0x91, 0xFD, 0x8F, 0x9F, 0x54, 0x05, 0x4C, 0x54, 0xBF, 0x0F, + 0x06, 0xDB, 0x4F, 0xF7, 0x08, 0xA3, 0xA2, 0x8B, 0xC3, 0x7A, 0x92, 0x1E, 0xEE, 0x11, 0xED, 0x7B, + 0x6A, 0x53, 0x79, 0x32, 0xCC, 0x5E, 0x94, 0xEE, 0x1E, 0xA6, 0x57, 0x60, 0x7E, 0x36, 0xC9, 0xF7 } +}, + +}; + + int i; + unsigned char tmp[64]; + hash_state md; + + for (i = 0; i < (int)(sizeof(tests)/sizeof(tests[0])); i++) { + whirlpool_init(&md); + whirlpool_process(&md, (unsigned char *)tests[i].msg, tests[i].len); + whirlpool_done(&md, tmp); + if (compare_testvector(tmp, sizeof(tmp), tests[i].hash, sizeof(tests[i].hash), "WHIRLPOOL", i)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; + #endif +} + + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/hashes/whirl/whirltab.c b/fsbl/lib/libtomcrypt/src/hashes/whirl/whirltab.c new file mode 100644 index 000000000..4fde89b24 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/hashes/whirl/whirltab.c @@ -0,0 +1,596 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file whirltab.c + LTC_WHIRLPOOL tables, Tom St Denis +*/ + +#ifdef __LTC_WHIRLTAB_C__ + +static const ulong64 sbox0[] = { +CONST64(0x18186018c07830d8), CONST64(0x23238c2305af4626), CONST64(0xc6c63fc67ef991b8), CONST64(0xe8e887e8136fcdfb), +CONST64(0x878726874ca113cb), CONST64(0xb8b8dab8a9626d11), CONST64(0x0101040108050209), CONST64(0x4f4f214f426e9e0d), +CONST64(0x3636d836adee6c9b), CONST64(0xa6a6a2a6590451ff), CONST64(0xd2d26fd2debdb90c), CONST64(0xf5f5f3f5fb06f70e), +CONST64(0x7979f979ef80f296), CONST64(0x6f6fa16f5fcede30), CONST64(0x91917e91fcef3f6d), CONST64(0x52525552aa07a4f8), +CONST64(0x60609d6027fdc047), CONST64(0xbcbccabc89766535), CONST64(0x9b9b569baccd2b37), CONST64(0x8e8e028e048c018a), +CONST64(0xa3a3b6a371155bd2), CONST64(0x0c0c300c603c186c), CONST64(0x7b7bf17bff8af684), CONST64(0x3535d435b5e16a80), +CONST64(0x1d1d741de8693af5), CONST64(0xe0e0a7e05347ddb3), CONST64(0xd7d77bd7f6acb321), CONST64(0xc2c22fc25eed999c), +CONST64(0x2e2eb82e6d965c43), CONST64(0x4b4b314b627a9629), CONST64(0xfefedffea321e15d), CONST64(0x575741578216aed5), +CONST64(0x15155415a8412abd), CONST64(0x7777c1779fb6eee8), CONST64(0x3737dc37a5eb6e92), CONST64(0xe5e5b3e57b56d79e), +CONST64(0x9f9f469f8cd92313), CONST64(0xf0f0e7f0d317fd23), CONST64(0x4a4a354a6a7f9420), CONST64(0xdada4fda9e95a944), +CONST64(0x58587d58fa25b0a2), CONST64(0xc9c903c906ca8fcf), CONST64(0x2929a429558d527c), CONST64(0x0a0a280a5022145a), +CONST64(0xb1b1feb1e14f7f50), CONST64(0xa0a0baa0691a5dc9), CONST64(0x6b6bb16b7fdad614), CONST64(0x85852e855cab17d9), +CONST64(0xbdbdcebd8173673c), CONST64(0x5d5d695dd234ba8f), CONST64(0x1010401080502090), CONST64(0xf4f4f7f4f303f507), +CONST64(0xcbcb0bcb16c08bdd), CONST64(0x3e3ef83eedc67cd3), CONST64(0x0505140528110a2d), CONST64(0x676781671fe6ce78), +CONST64(0xe4e4b7e47353d597), CONST64(0x27279c2725bb4e02), CONST64(0x4141194132588273), CONST64(0x8b8b168b2c9d0ba7), +CONST64(0xa7a7a6a7510153f6), CONST64(0x7d7de97dcf94fab2), CONST64(0x95956e95dcfb3749), CONST64(0xd8d847d88e9fad56), +CONST64(0xfbfbcbfb8b30eb70), CONST64(0xeeee9fee2371c1cd), CONST64(0x7c7ced7cc791f8bb), CONST64(0x6666856617e3cc71), +CONST64(0xdddd53dda68ea77b), CONST64(0x17175c17b84b2eaf), CONST64(0x4747014702468e45), CONST64(0x9e9e429e84dc211a), +CONST64(0xcaca0fca1ec589d4), CONST64(0x2d2db42d75995a58), CONST64(0xbfbfc6bf9179632e), CONST64(0x07071c07381b0e3f), +CONST64(0xadad8ead012347ac), CONST64(0x5a5a755aea2fb4b0), CONST64(0x838336836cb51bef), CONST64(0x3333cc3385ff66b6), +CONST64(0x636391633ff2c65c), CONST64(0x02020802100a0412), CONST64(0xaaaa92aa39384993), CONST64(0x7171d971afa8e2de), +CONST64(0xc8c807c80ecf8dc6), CONST64(0x19196419c87d32d1), CONST64(0x494939497270923b), CONST64(0xd9d943d9869aaf5f), +CONST64(0xf2f2eff2c31df931), CONST64(0xe3e3abe34b48dba8), CONST64(0x5b5b715be22ab6b9), CONST64(0x88881a8834920dbc), +CONST64(0x9a9a529aa4c8293e), CONST64(0x262698262dbe4c0b), CONST64(0x3232c8328dfa64bf), CONST64(0xb0b0fab0e94a7d59), +CONST64(0xe9e983e91b6acff2), CONST64(0x0f0f3c0f78331e77), CONST64(0xd5d573d5e6a6b733), CONST64(0x80803a8074ba1df4), +CONST64(0xbebec2be997c6127), CONST64(0xcdcd13cd26de87eb), CONST64(0x3434d034bde46889), CONST64(0x48483d487a759032), +CONST64(0xffffdbffab24e354), CONST64(0x7a7af57af78ff48d), CONST64(0x90907a90f4ea3d64), CONST64(0x5f5f615fc23ebe9d), +CONST64(0x202080201da0403d), CONST64(0x6868bd6867d5d00f), CONST64(0x1a1a681ad07234ca), CONST64(0xaeae82ae192c41b7), +CONST64(0xb4b4eab4c95e757d), CONST64(0x54544d549a19a8ce), CONST64(0x93937693ece53b7f), CONST64(0x222288220daa442f), +CONST64(0x64648d6407e9c863), CONST64(0xf1f1e3f1db12ff2a), CONST64(0x7373d173bfa2e6cc), CONST64(0x12124812905a2482), +CONST64(0x40401d403a5d807a), CONST64(0x0808200840281048), CONST64(0xc3c32bc356e89b95), CONST64(0xecec97ec337bc5df), +CONST64(0xdbdb4bdb9690ab4d), CONST64(0xa1a1bea1611f5fc0), CONST64(0x8d8d0e8d1c830791), CONST64(0x3d3df43df5c97ac8), +CONST64(0x97976697ccf1335b), CONST64(0x0000000000000000), CONST64(0xcfcf1bcf36d483f9), CONST64(0x2b2bac2b4587566e), +CONST64(0x7676c57697b3ece1), CONST64(0x8282328264b019e6), CONST64(0xd6d67fd6fea9b128), CONST64(0x1b1b6c1bd87736c3), +CONST64(0xb5b5eeb5c15b7774), CONST64(0xafaf86af112943be), CONST64(0x6a6ab56a77dfd41d), CONST64(0x50505d50ba0da0ea), +CONST64(0x45450945124c8a57), CONST64(0xf3f3ebf3cb18fb38), CONST64(0x3030c0309df060ad), CONST64(0xefef9bef2b74c3c4), +CONST64(0x3f3ffc3fe5c37eda), CONST64(0x55554955921caac7), CONST64(0xa2a2b2a2791059db), CONST64(0xeaea8fea0365c9e9), +CONST64(0x656589650fecca6a), CONST64(0xbabad2bab9686903), CONST64(0x2f2fbc2f65935e4a), CONST64(0xc0c027c04ee79d8e), +CONST64(0xdede5fdebe81a160), CONST64(0x1c1c701ce06c38fc), CONST64(0xfdfdd3fdbb2ee746), CONST64(0x4d4d294d52649a1f), +CONST64(0x92927292e4e03976), CONST64(0x7575c9758fbceafa), CONST64(0x06061806301e0c36), CONST64(0x8a8a128a249809ae), +CONST64(0xb2b2f2b2f940794b), CONST64(0xe6e6bfe66359d185), CONST64(0x0e0e380e70361c7e), CONST64(0x1f1f7c1ff8633ee7), +CONST64(0x6262956237f7c455), CONST64(0xd4d477d4eea3b53a), CONST64(0xa8a89aa829324d81), CONST64(0x96966296c4f43152), +CONST64(0xf9f9c3f99b3aef62), CONST64(0xc5c533c566f697a3), CONST64(0x2525942535b14a10), CONST64(0x59597959f220b2ab), +CONST64(0x84842a8454ae15d0), CONST64(0x7272d572b7a7e4c5), CONST64(0x3939e439d5dd72ec), CONST64(0x4c4c2d4c5a619816), +CONST64(0x5e5e655eca3bbc94), CONST64(0x7878fd78e785f09f), CONST64(0x3838e038ddd870e5), CONST64(0x8c8c0a8c14860598), +CONST64(0xd1d163d1c6b2bf17), CONST64(0xa5a5aea5410b57e4), CONST64(0xe2e2afe2434dd9a1), CONST64(0x616199612ff8c24e), +CONST64(0xb3b3f6b3f1457b42), CONST64(0x2121842115a54234), CONST64(0x9c9c4a9c94d62508), CONST64(0x1e1e781ef0663cee), +CONST64(0x4343114322528661), CONST64(0xc7c73bc776fc93b1), CONST64(0xfcfcd7fcb32be54f), CONST64(0x0404100420140824), +CONST64(0x51515951b208a2e3), CONST64(0x99995e99bcc72f25), CONST64(0x6d6da96d4fc4da22), CONST64(0x0d0d340d68391a65), +CONST64(0xfafacffa8335e979), CONST64(0xdfdf5bdfb684a369), CONST64(0x7e7ee57ed79bfca9), CONST64(0x242490243db44819), +CONST64(0x3b3bec3bc5d776fe), CONST64(0xabab96ab313d4b9a), CONST64(0xcece1fce3ed181f0), CONST64(0x1111441188552299), +CONST64(0x8f8f068f0c890383), CONST64(0x4e4e254e4a6b9c04), CONST64(0xb7b7e6b7d1517366), CONST64(0xebeb8beb0b60cbe0), +CONST64(0x3c3cf03cfdcc78c1), CONST64(0x81813e817cbf1ffd), CONST64(0x94946a94d4fe3540), CONST64(0xf7f7fbf7eb0cf31c), +CONST64(0xb9b9deb9a1676f18), CONST64(0x13134c13985f268b), CONST64(0x2c2cb02c7d9c5851), CONST64(0xd3d36bd3d6b8bb05), +CONST64(0xe7e7bbe76b5cd38c), CONST64(0x6e6ea56e57cbdc39), CONST64(0xc4c437c46ef395aa), CONST64(0x03030c03180f061b), +CONST64(0x565645568a13acdc), CONST64(0x44440d441a49885e), CONST64(0x7f7fe17fdf9efea0), CONST64(0xa9a99ea921374f88), +CONST64(0x2a2aa82a4d825467), CONST64(0xbbbbd6bbb16d6b0a), CONST64(0xc1c123c146e29f87), CONST64(0x53535153a202a6f1), +CONST64(0xdcdc57dcae8ba572), CONST64(0x0b0b2c0b58271653), CONST64(0x9d9d4e9d9cd32701), CONST64(0x6c6cad6c47c1d82b), +CONST64(0x3131c43195f562a4), CONST64(0x7474cd7487b9e8f3), CONST64(0xf6f6fff6e309f115), CONST64(0x464605460a438c4c), +CONST64(0xacac8aac092645a5), CONST64(0x89891e893c970fb5), CONST64(0x14145014a04428b4), CONST64(0xe1e1a3e15b42dfba), +CONST64(0x16165816b04e2ca6), CONST64(0x3a3ae83acdd274f7), CONST64(0x6969b9696fd0d206), CONST64(0x09092409482d1241), +CONST64(0x7070dd70a7ade0d7), CONST64(0xb6b6e2b6d954716f), CONST64(0xd0d067d0ceb7bd1e), CONST64(0xeded93ed3b7ec7d6), +CONST64(0xcccc17cc2edb85e2), CONST64(0x424215422a578468), CONST64(0x98985a98b4c22d2c), CONST64(0xa4a4aaa4490e55ed), +CONST64(0x2828a0285d885075), CONST64(0x5c5c6d5cda31b886), CONST64(0xf8f8c7f8933fed6b), CONST64(0x8686228644a411c2) +}; + +#ifdef LTC_SMALL_CODE + +#define SB0(x) sbox0[x] +#define SB1(x) ROR64c(sbox0[x], 8) +#define SB2(x) ROR64c(sbox0[x], 16) +#define SB3(x) ROR64c(sbox0[x], 24) +#define SB4(x) ROR64c(sbox0[x], 32) +#define SB5(x) ROR64c(sbox0[x], 40) +#define SB6(x) ROR64c(sbox0[x], 48) +#define SB7(x) ROR64c(sbox0[x], 56) + +#else + +#define SB0(x) sbox0[x] +#define SB1(x) sbox1[x] +#define SB2(x) sbox2[x] +#define SB3(x) sbox3[x] +#define SB4(x) sbox4[x] +#define SB5(x) sbox5[x] +#define SB6(x) sbox6[x] +#define SB7(x) sbox7[x] + + +static const ulong64 sbox1[] = { +CONST64(0xd818186018c07830), CONST64(0x2623238c2305af46), CONST64(0xb8c6c63fc67ef991), CONST64(0xfbe8e887e8136fcd), +CONST64(0xcb878726874ca113), CONST64(0x11b8b8dab8a9626d), CONST64(0x0901010401080502), CONST64(0x0d4f4f214f426e9e), +CONST64(0x9b3636d836adee6c), CONST64(0xffa6a6a2a6590451), CONST64(0x0cd2d26fd2debdb9), CONST64(0x0ef5f5f3f5fb06f7), +CONST64(0x967979f979ef80f2), CONST64(0x306f6fa16f5fcede), CONST64(0x6d91917e91fcef3f), CONST64(0xf852525552aa07a4), +CONST64(0x4760609d6027fdc0), CONST64(0x35bcbccabc897665), CONST64(0x379b9b569baccd2b), CONST64(0x8a8e8e028e048c01), +CONST64(0xd2a3a3b6a371155b), CONST64(0x6c0c0c300c603c18), CONST64(0x847b7bf17bff8af6), CONST64(0x803535d435b5e16a), +CONST64(0xf51d1d741de8693a), CONST64(0xb3e0e0a7e05347dd), CONST64(0x21d7d77bd7f6acb3), CONST64(0x9cc2c22fc25eed99), +CONST64(0x432e2eb82e6d965c), CONST64(0x294b4b314b627a96), CONST64(0x5dfefedffea321e1), CONST64(0xd5575741578216ae), +CONST64(0xbd15155415a8412a), CONST64(0xe87777c1779fb6ee), CONST64(0x923737dc37a5eb6e), CONST64(0x9ee5e5b3e57b56d7), +CONST64(0x139f9f469f8cd923), CONST64(0x23f0f0e7f0d317fd), CONST64(0x204a4a354a6a7f94), CONST64(0x44dada4fda9e95a9), +CONST64(0xa258587d58fa25b0), CONST64(0xcfc9c903c906ca8f), CONST64(0x7c2929a429558d52), CONST64(0x5a0a0a280a502214), +CONST64(0x50b1b1feb1e14f7f), CONST64(0xc9a0a0baa0691a5d), CONST64(0x146b6bb16b7fdad6), CONST64(0xd985852e855cab17), +CONST64(0x3cbdbdcebd817367), CONST64(0x8f5d5d695dd234ba), CONST64(0x9010104010805020), CONST64(0x07f4f4f7f4f303f5), +CONST64(0xddcbcb0bcb16c08b), CONST64(0xd33e3ef83eedc67c), CONST64(0x2d0505140528110a), CONST64(0x78676781671fe6ce), +CONST64(0x97e4e4b7e47353d5), CONST64(0x0227279c2725bb4e), CONST64(0x7341411941325882), CONST64(0xa78b8b168b2c9d0b), +CONST64(0xf6a7a7a6a7510153), CONST64(0xb27d7de97dcf94fa), CONST64(0x4995956e95dcfb37), CONST64(0x56d8d847d88e9fad), +CONST64(0x70fbfbcbfb8b30eb), CONST64(0xcdeeee9fee2371c1), CONST64(0xbb7c7ced7cc791f8), CONST64(0x716666856617e3cc), +CONST64(0x7bdddd53dda68ea7), CONST64(0xaf17175c17b84b2e), CONST64(0x454747014702468e), CONST64(0x1a9e9e429e84dc21), +CONST64(0xd4caca0fca1ec589), CONST64(0x582d2db42d75995a), CONST64(0x2ebfbfc6bf917963), CONST64(0x3f07071c07381b0e), +CONST64(0xacadad8ead012347), CONST64(0xb05a5a755aea2fb4), CONST64(0xef838336836cb51b), CONST64(0xb63333cc3385ff66), +CONST64(0x5c636391633ff2c6), CONST64(0x1202020802100a04), CONST64(0x93aaaa92aa393849), CONST64(0xde7171d971afa8e2), +CONST64(0xc6c8c807c80ecf8d), CONST64(0xd119196419c87d32), CONST64(0x3b49493949727092), CONST64(0x5fd9d943d9869aaf), +CONST64(0x31f2f2eff2c31df9), CONST64(0xa8e3e3abe34b48db), CONST64(0xb95b5b715be22ab6), CONST64(0xbc88881a8834920d), +CONST64(0x3e9a9a529aa4c829), CONST64(0x0b262698262dbe4c), CONST64(0xbf3232c8328dfa64), CONST64(0x59b0b0fab0e94a7d), +CONST64(0xf2e9e983e91b6acf), CONST64(0x770f0f3c0f78331e), CONST64(0x33d5d573d5e6a6b7), CONST64(0xf480803a8074ba1d), +CONST64(0x27bebec2be997c61), CONST64(0xebcdcd13cd26de87), CONST64(0x893434d034bde468), CONST64(0x3248483d487a7590), +CONST64(0x54ffffdbffab24e3), CONST64(0x8d7a7af57af78ff4), CONST64(0x6490907a90f4ea3d), CONST64(0x9d5f5f615fc23ebe), +CONST64(0x3d202080201da040), CONST64(0x0f6868bd6867d5d0), CONST64(0xca1a1a681ad07234), CONST64(0xb7aeae82ae192c41), +CONST64(0x7db4b4eab4c95e75), CONST64(0xce54544d549a19a8), CONST64(0x7f93937693ece53b), CONST64(0x2f222288220daa44), +CONST64(0x6364648d6407e9c8), CONST64(0x2af1f1e3f1db12ff), CONST64(0xcc7373d173bfa2e6), CONST64(0x8212124812905a24), +CONST64(0x7a40401d403a5d80), CONST64(0x4808082008402810), CONST64(0x95c3c32bc356e89b), CONST64(0xdfecec97ec337bc5), +CONST64(0x4ddbdb4bdb9690ab), CONST64(0xc0a1a1bea1611f5f), CONST64(0x918d8d0e8d1c8307), CONST64(0xc83d3df43df5c97a), +CONST64(0x5b97976697ccf133), CONST64(0x0000000000000000), CONST64(0xf9cfcf1bcf36d483), CONST64(0x6e2b2bac2b458756), +CONST64(0xe17676c57697b3ec), CONST64(0xe68282328264b019), CONST64(0x28d6d67fd6fea9b1), CONST64(0xc31b1b6c1bd87736), +CONST64(0x74b5b5eeb5c15b77), CONST64(0xbeafaf86af112943), CONST64(0x1d6a6ab56a77dfd4), CONST64(0xea50505d50ba0da0), +CONST64(0x5745450945124c8a), CONST64(0x38f3f3ebf3cb18fb), CONST64(0xad3030c0309df060), CONST64(0xc4efef9bef2b74c3), +CONST64(0xda3f3ffc3fe5c37e), CONST64(0xc755554955921caa), CONST64(0xdba2a2b2a2791059), CONST64(0xe9eaea8fea0365c9), +CONST64(0x6a656589650fecca), CONST64(0x03babad2bab96869), CONST64(0x4a2f2fbc2f65935e), CONST64(0x8ec0c027c04ee79d), +CONST64(0x60dede5fdebe81a1), CONST64(0xfc1c1c701ce06c38), CONST64(0x46fdfdd3fdbb2ee7), CONST64(0x1f4d4d294d52649a), +CONST64(0x7692927292e4e039), CONST64(0xfa7575c9758fbcea), CONST64(0x3606061806301e0c), CONST64(0xae8a8a128a249809), +CONST64(0x4bb2b2f2b2f94079), CONST64(0x85e6e6bfe66359d1), CONST64(0x7e0e0e380e70361c), CONST64(0xe71f1f7c1ff8633e), +CONST64(0x556262956237f7c4), CONST64(0x3ad4d477d4eea3b5), CONST64(0x81a8a89aa829324d), CONST64(0x5296966296c4f431), +CONST64(0x62f9f9c3f99b3aef), CONST64(0xa3c5c533c566f697), CONST64(0x102525942535b14a), CONST64(0xab59597959f220b2), +CONST64(0xd084842a8454ae15), CONST64(0xc57272d572b7a7e4), CONST64(0xec3939e439d5dd72), CONST64(0x164c4c2d4c5a6198), +CONST64(0x945e5e655eca3bbc), CONST64(0x9f7878fd78e785f0), CONST64(0xe53838e038ddd870), CONST64(0x988c8c0a8c148605), +CONST64(0x17d1d163d1c6b2bf), CONST64(0xe4a5a5aea5410b57), CONST64(0xa1e2e2afe2434dd9), CONST64(0x4e616199612ff8c2), +CONST64(0x42b3b3f6b3f1457b), CONST64(0x342121842115a542), CONST64(0x089c9c4a9c94d625), CONST64(0xee1e1e781ef0663c), +CONST64(0x6143431143225286), CONST64(0xb1c7c73bc776fc93), CONST64(0x4ffcfcd7fcb32be5), CONST64(0x2404041004201408), +CONST64(0xe351515951b208a2), CONST64(0x2599995e99bcc72f), CONST64(0x226d6da96d4fc4da), CONST64(0x650d0d340d68391a), +CONST64(0x79fafacffa8335e9), CONST64(0x69dfdf5bdfb684a3), CONST64(0xa97e7ee57ed79bfc), CONST64(0x19242490243db448), +CONST64(0xfe3b3bec3bc5d776), CONST64(0x9aabab96ab313d4b), CONST64(0xf0cece1fce3ed181), CONST64(0x9911114411885522), +CONST64(0x838f8f068f0c8903), CONST64(0x044e4e254e4a6b9c), CONST64(0x66b7b7e6b7d15173), CONST64(0xe0ebeb8beb0b60cb), +CONST64(0xc13c3cf03cfdcc78), CONST64(0xfd81813e817cbf1f), CONST64(0x4094946a94d4fe35), CONST64(0x1cf7f7fbf7eb0cf3), +CONST64(0x18b9b9deb9a1676f), CONST64(0x8b13134c13985f26), CONST64(0x512c2cb02c7d9c58), CONST64(0x05d3d36bd3d6b8bb), +CONST64(0x8ce7e7bbe76b5cd3), CONST64(0x396e6ea56e57cbdc), CONST64(0xaac4c437c46ef395), CONST64(0x1b03030c03180f06), +CONST64(0xdc565645568a13ac), CONST64(0x5e44440d441a4988), CONST64(0xa07f7fe17fdf9efe), CONST64(0x88a9a99ea921374f), +CONST64(0x672a2aa82a4d8254), CONST64(0x0abbbbd6bbb16d6b), CONST64(0x87c1c123c146e29f), CONST64(0xf153535153a202a6), +CONST64(0x72dcdc57dcae8ba5), CONST64(0x530b0b2c0b582716), CONST64(0x019d9d4e9d9cd327), CONST64(0x2b6c6cad6c47c1d8), +CONST64(0xa43131c43195f562), CONST64(0xf37474cd7487b9e8), CONST64(0x15f6f6fff6e309f1), CONST64(0x4c464605460a438c), +CONST64(0xa5acac8aac092645), CONST64(0xb589891e893c970f), CONST64(0xb414145014a04428), CONST64(0xbae1e1a3e15b42df), +CONST64(0xa616165816b04e2c), CONST64(0xf73a3ae83acdd274), CONST64(0x066969b9696fd0d2), CONST64(0x4109092409482d12), +CONST64(0xd77070dd70a7ade0), CONST64(0x6fb6b6e2b6d95471), CONST64(0x1ed0d067d0ceb7bd), CONST64(0xd6eded93ed3b7ec7), +CONST64(0xe2cccc17cc2edb85), CONST64(0x68424215422a5784), CONST64(0x2c98985a98b4c22d), CONST64(0xeda4a4aaa4490e55), +CONST64(0x752828a0285d8850), CONST64(0x865c5c6d5cda31b8), CONST64(0x6bf8f8c7f8933fed), CONST64(0xc28686228644a411) +}; + +static const ulong64 sbox2[] = { +CONST64(0x30d818186018c078), CONST64(0x462623238c2305af), CONST64(0x91b8c6c63fc67ef9), CONST64(0xcdfbe8e887e8136f), +CONST64(0x13cb878726874ca1), CONST64(0x6d11b8b8dab8a962), CONST64(0x0209010104010805), CONST64(0x9e0d4f4f214f426e), +CONST64(0x6c9b3636d836adee), CONST64(0x51ffa6a6a2a65904), CONST64(0xb90cd2d26fd2debd), CONST64(0xf70ef5f5f3f5fb06), +CONST64(0xf2967979f979ef80), CONST64(0xde306f6fa16f5fce), CONST64(0x3f6d91917e91fcef), CONST64(0xa4f852525552aa07), +CONST64(0xc04760609d6027fd), CONST64(0x6535bcbccabc8976), CONST64(0x2b379b9b569baccd), CONST64(0x018a8e8e028e048c), +CONST64(0x5bd2a3a3b6a37115), CONST64(0x186c0c0c300c603c), CONST64(0xf6847b7bf17bff8a), CONST64(0x6a803535d435b5e1), +CONST64(0x3af51d1d741de869), CONST64(0xddb3e0e0a7e05347), CONST64(0xb321d7d77bd7f6ac), CONST64(0x999cc2c22fc25eed), +CONST64(0x5c432e2eb82e6d96), CONST64(0x96294b4b314b627a), CONST64(0xe15dfefedffea321), CONST64(0xaed5575741578216), +CONST64(0x2abd15155415a841), CONST64(0xeee87777c1779fb6), CONST64(0x6e923737dc37a5eb), CONST64(0xd79ee5e5b3e57b56), +CONST64(0x23139f9f469f8cd9), CONST64(0xfd23f0f0e7f0d317), CONST64(0x94204a4a354a6a7f), CONST64(0xa944dada4fda9e95), +CONST64(0xb0a258587d58fa25), CONST64(0x8fcfc9c903c906ca), CONST64(0x527c2929a429558d), CONST64(0x145a0a0a280a5022), +CONST64(0x7f50b1b1feb1e14f), CONST64(0x5dc9a0a0baa0691a), CONST64(0xd6146b6bb16b7fda), CONST64(0x17d985852e855cab), +CONST64(0x673cbdbdcebd8173), CONST64(0xba8f5d5d695dd234), CONST64(0x2090101040108050), CONST64(0xf507f4f4f7f4f303), +CONST64(0x8bddcbcb0bcb16c0), CONST64(0x7cd33e3ef83eedc6), CONST64(0x0a2d050514052811), CONST64(0xce78676781671fe6), +CONST64(0xd597e4e4b7e47353), CONST64(0x4e0227279c2725bb), CONST64(0x8273414119413258), CONST64(0x0ba78b8b168b2c9d), +CONST64(0x53f6a7a7a6a75101), CONST64(0xfab27d7de97dcf94), CONST64(0x374995956e95dcfb), CONST64(0xad56d8d847d88e9f), +CONST64(0xeb70fbfbcbfb8b30), CONST64(0xc1cdeeee9fee2371), CONST64(0xf8bb7c7ced7cc791), CONST64(0xcc716666856617e3), +CONST64(0xa77bdddd53dda68e), CONST64(0x2eaf17175c17b84b), CONST64(0x8e45474701470246), CONST64(0x211a9e9e429e84dc), +CONST64(0x89d4caca0fca1ec5), CONST64(0x5a582d2db42d7599), CONST64(0x632ebfbfc6bf9179), CONST64(0x0e3f07071c07381b), +CONST64(0x47acadad8ead0123), CONST64(0xb4b05a5a755aea2f), CONST64(0x1bef838336836cb5), CONST64(0x66b63333cc3385ff), +CONST64(0xc65c636391633ff2), CONST64(0x041202020802100a), CONST64(0x4993aaaa92aa3938), CONST64(0xe2de7171d971afa8), +CONST64(0x8dc6c8c807c80ecf), CONST64(0x32d119196419c87d), CONST64(0x923b494939497270), CONST64(0xaf5fd9d943d9869a), +CONST64(0xf931f2f2eff2c31d), CONST64(0xdba8e3e3abe34b48), CONST64(0xb6b95b5b715be22a), CONST64(0x0dbc88881a883492), +CONST64(0x293e9a9a529aa4c8), CONST64(0x4c0b262698262dbe), CONST64(0x64bf3232c8328dfa), CONST64(0x7d59b0b0fab0e94a), +CONST64(0xcff2e9e983e91b6a), CONST64(0x1e770f0f3c0f7833), CONST64(0xb733d5d573d5e6a6), CONST64(0x1df480803a8074ba), +CONST64(0x6127bebec2be997c), CONST64(0x87ebcdcd13cd26de), CONST64(0x68893434d034bde4), CONST64(0x903248483d487a75), +CONST64(0xe354ffffdbffab24), CONST64(0xf48d7a7af57af78f), CONST64(0x3d6490907a90f4ea), CONST64(0xbe9d5f5f615fc23e), +CONST64(0x403d202080201da0), CONST64(0xd00f6868bd6867d5), CONST64(0x34ca1a1a681ad072), CONST64(0x41b7aeae82ae192c), +CONST64(0x757db4b4eab4c95e), CONST64(0xa8ce54544d549a19), CONST64(0x3b7f93937693ece5), CONST64(0x442f222288220daa), +CONST64(0xc86364648d6407e9), CONST64(0xff2af1f1e3f1db12), CONST64(0xe6cc7373d173bfa2), CONST64(0x248212124812905a), +CONST64(0x807a40401d403a5d), CONST64(0x1048080820084028), CONST64(0x9b95c3c32bc356e8), CONST64(0xc5dfecec97ec337b), +CONST64(0xab4ddbdb4bdb9690), CONST64(0x5fc0a1a1bea1611f), CONST64(0x07918d8d0e8d1c83), CONST64(0x7ac83d3df43df5c9), +CONST64(0x335b97976697ccf1), CONST64(0x0000000000000000), CONST64(0x83f9cfcf1bcf36d4), CONST64(0x566e2b2bac2b4587), +CONST64(0xece17676c57697b3), CONST64(0x19e68282328264b0), CONST64(0xb128d6d67fd6fea9), CONST64(0x36c31b1b6c1bd877), +CONST64(0x7774b5b5eeb5c15b), CONST64(0x43beafaf86af1129), CONST64(0xd41d6a6ab56a77df), CONST64(0xa0ea50505d50ba0d), +CONST64(0x8a5745450945124c), CONST64(0xfb38f3f3ebf3cb18), CONST64(0x60ad3030c0309df0), CONST64(0xc3c4efef9bef2b74), +CONST64(0x7eda3f3ffc3fe5c3), CONST64(0xaac755554955921c), CONST64(0x59dba2a2b2a27910), CONST64(0xc9e9eaea8fea0365), +CONST64(0xca6a656589650fec), CONST64(0x6903babad2bab968), CONST64(0x5e4a2f2fbc2f6593), CONST64(0x9d8ec0c027c04ee7), +CONST64(0xa160dede5fdebe81), CONST64(0x38fc1c1c701ce06c), CONST64(0xe746fdfdd3fdbb2e), CONST64(0x9a1f4d4d294d5264), +CONST64(0x397692927292e4e0), CONST64(0xeafa7575c9758fbc), CONST64(0x0c3606061806301e), CONST64(0x09ae8a8a128a2498), +CONST64(0x794bb2b2f2b2f940), CONST64(0xd185e6e6bfe66359), CONST64(0x1c7e0e0e380e7036), CONST64(0x3ee71f1f7c1ff863), +CONST64(0xc4556262956237f7), CONST64(0xb53ad4d477d4eea3), CONST64(0x4d81a8a89aa82932), CONST64(0x315296966296c4f4), +CONST64(0xef62f9f9c3f99b3a), CONST64(0x97a3c5c533c566f6), CONST64(0x4a102525942535b1), CONST64(0xb2ab59597959f220), +CONST64(0x15d084842a8454ae), CONST64(0xe4c57272d572b7a7), CONST64(0x72ec3939e439d5dd), CONST64(0x98164c4c2d4c5a61), +CONST64(0xbc945e5e655eca3b), CONST64(0xf09f7878fd78e785), CONST64(0x70e53838e038ddd8), CONST64(0x05988c8c0a8c1486), +CONST64(0xbf17d1d163d1c6b2), CONST64(0x57e4a5a5aea5410b), CONST64(0xd9a1e2e2afe2434d), CONST64(0xc24e616199612ff8), +CONST64(0x7b42b3b3f6b3f145), CONST64(0x42342121842115a5), CONST64(0x25089c9c4a9c94d6), CONST64(0x3cee1e1e781ef066), +CONST64(0x8661434311432252), CONST64(0x93b1c7c73bc776fc), CONST64(0xe54ffcfcd7fcb32b), CONST64(0x0824040410042014), +CONST64(0xa2e351515951b208), CONST64(0x2f2599995e99bcc7), CONST64(0xda226d6da96d4fc4), CONST64(0x1a650d0d340d6839), +CONST64(0xe979fafacffa8335), CONST64(0xa369dfdf5bdfb684), CONST64(0xfca97e7ee57ed79b), CONST64(0x4819242490243db4), +CONST64(0x76fe3b3bec3bc5d7), CONST64(0x4b9aabab96ab313d), CONST64(0x81f0cece1fce3ed1), CONST64(0x2299111144118855), +CONST64(0x03838f8f068f0c89), CONST64(0x9c044e4e254e4a6b), CONST64(0x7366b7b7e6b7d151), CONST64(0xcbe0ebeb8beb0b60), +CONST64(0x78c13c3cf03cfdcc), CONST64(0x1ffd81813e817cbf), CONST64(0x354094946a94d4fe), CONST64(0xf31cf7f7fbf7eb0c), +CONST64(0x6f18b9b9deb9a167), CONST64(0x268b13134c13985f), CONST64(0x58512c2cb02c7d9c), CONST64(0xbb05d3d36bd3d6b8), +CONST64(0xd38ce7e7bbe76b5c), CONST64(0xdc396e6ea56e57cb), CONST64(0x95aac4c437c46ef3), CONST64(0x061b03030c03180f), +CONST64(0xacdc565645568a13), CONST64(0x885e44440d441a49), CONST64(0xfea07f7fe17fdf9e), CONST64(0x4f88a9a99ea92137), +CONST64(0x54672a2aa82a4d82), CONST64(0x6b0abbbbd6bbb16d), CONST64(0x9f87c1c123c146e2), CONST64(0xa6f153535153a202), +CONST64(0xa572dcdc57dcae8b), CONST64(0x16530b0b2c0b5827), CONST64(0x27019d9d4e9d9cd3), CONST64(0xd82b6c6cad6c47c1), +CONST64(0x62a43131c43195f5), CONST64(0xe8f37474cd7487b9), CONST64(0xf115f6f6fff6e309), CONST64(0x8c4c464605460a43), +CONST64(0x45a5acac8aac0926), CONST64(0x0fb589891e893c97), CONST64(0x28b414145014a044), CONST64(0xdfbae1e1a3e15b42), +CONST64(0x2ca616165816b04e), CONST64(0x74f73a3ae83acdd2), CONST64(0xd2066969b9696fd0), CONST64(0x124109092409482d), +CONST64(0xe0d77070dd70a7ad), CONST64(0x716fb6b6e2b6d954), CONST64(0xbd1ed0d067d0ceb7), CONST64(0xc7d6eded93ed3b7e), +CONST64(0x85e2cccc17cc2edb), CONST64(0x8468424215422a57), CONST64(0x2d2c98985a98b4c2), CONST64(0x55eda4a4aaa4490e), +CONST64(0x50752828a0285d88), CONST64(0xb8865c5c6d5cda31), CONST64(0xed6bf8f8c7f8933f), CONST64(0x11c28686228644a4) +}; + +static const ulong64 sbox3[] = { +CONST64(0x7830d818186018c0), CONST64(0xaf462623238c2305), CONST64(0xf991b8c6c63fc67e), CONST64(0x6fcdfbe8e887e813), +CONST64(0xa113cb878726874c), CONST64(0x626d11b8b8dab8a9), CONST64(0x0502090101040108), CONST64(0x6e9e0d4f4f214f42), +CONST64(0xee6c9b3636d836ad), CONST64(0x0451ffa6a6a2a659), CONST64(0xbdb90cd2d26fd2de), CONST64(0x06f70ef5f5f3f5fb), +CONST64(0x80f2967979f979ef), CONST64(0xcede306f6fa16f5f), CONST64(0xef3f6d91917e91fc), CONST64(0x07a4f852525552aa), +CONST64(0xfdc04760609d6027), CONST64(0x766535bcbccabc89), CONST64(0xcd2b379b9b569bac), CONST64(0x8c018a8e8e028e04), +CONST64(0x155bd2a3a3b6a371), CONST64(0x3c186c0c0c300c60), CONST64(0x8af6847b7bf17bff), CONST64(0xe16a803535d435b5), +CONST64(0x693af51d1d741de8), CONST64(0x47ddb3e0e0a7e053), CONST64(0xacb321d7d77bd7f6), CONST64(0xed999cc2c22fc25e), +CONST64(0x965c432e2eb82e6d), CONST64(0x7a96294b4b314b62), CONST64(0x21e15dfefedffea3), CONST64(0x16aed55757415782), +CONST64(0x412abd15155415a8), CONST64(0xb6eee87777c1779f), CONST64(0xeb6e923737dc37a5), CONST64(0x56d79ee5e5b3e57b), +CONST64(0xd923139f9f469f8c), CONST64(0x17fd23f0f0e7f0d3), CONST64(0x7f94204a4a354a6a), CONST64(0x95a944dada4fda9e), +CONST64(0x25b0a258587d58fa), CONST64(0xca8fcfc9c903c906), CONST64(0x8d527c2929a42955), CONST64(0x22145a0a0a280a50), +CONST64(0x4f7f50b1b1feb1e1), CONST64(0x1a5dc9a0a0baa069), CONST64(0xdad6146b6bb16b7f), CONST64(0xab17d985852e855c), +CONST64(0x73673cbdbdcebd81), CONST64(0x34ba8f5d5d695dd2), CONST64(0x5020901010401080), CONST64(0x03f507f4f4f7f4f3), +CONST64(0xc08bddcbcb0bcb16), CONST64(0xc67cd33e3ef83eed), CONST64(0x110a2d0505140528), CONST64(0xe6ce78676781671f), +CONST64(0x53d597e4e4b7e473), CONST64(0xbb4e0227279c2725), CONST64(0x5882734141194132), CONST64(0x9d0ba78b8b168b2c), +CONST64(0x0153f6a7a7a6a751), CONST64(0x94fab27d7de97dcf), CONST64(0xfb374995956e95dc), CONST64(0x9fad56d8d847d88e), +CONST64(0x30eb70fbfbcbfb8b), CONST64(0x71c1cdeeee9fee23), CONST64(0x91f8bb7c7ced7cc7), CONST64(0xe3cc716666856617), +CONST64(0x8ea77bdddd53dda6), CONST64(0x4b2eaf17175c17b8), CONST64(0x468e454747014702), CONST64(0xdc211a9e9e429e84), +CONST64(0xc589d4caca0fca1e), CONST64(0x995a582d2db42d75), CONST64(0x79632ebfbfc6bf91), CONST64(0x1b0e3f07071c0738), +CONST64(0x2347acadad8ead01), CONST64(0x2fb4b05a5a755aea), CONST64(0xb51bef838336836c), CONST64(0xff66b63333cc3385), +CONST64(0xf2c65c636391633f), CONST64(0x0a04120202080210), CONST64(0x384993aaaa92aa39), CONST64(0xa8e2de7171d971af), +CONST64(0xcf8dc6c8c807c80e), CONST64(0x7d32d119196419c8), CONST64(0x70923b4949394972), CONST64(0x9aaf5fd9d943d986), +CONST64(0x1df931f2f2eff2c3), CONST64(0x48dba8e3e3abe34b), CONST64(0x2ab6b95b5b715be2), CONST64(0x920dbc88881a8834), +CONST64(0xc8293e9a9a529aa4), CONST64(0xbe4c0b262698262d), CONST64(0xfa64bf3232c8328d), CONST64(0x4a7d59b0b0fab0e9), +CONST64(0x6acff2e9e983e91b), CONST64(0x331e770f0f3c0f78), CONST64(0xa6b733d5d573d5e6), CONST64(0xba1df480803a8074), +CONST64(0x7c6127bebec2be99), CONST64(0xde87ebcdcd13cd26), CONST64(0xe468893434d034bd), CONST64(0x75903248483d487a), +CONST64(0x24e354ffffdbffab), CONST64(0x8ff48d7a7af57af7), CONST64(0xea3d6490907a90f4), CONST64(0x3ebe9d5f5f615fc2), +CONST64(0xa0403d202080201d), CONST64(0xd5d00f6868bd6867), CONST64(0x7234ca1a1a681ad0), CONST64(0x2c41b7aeae82ae19), +CONST64(0x5e757db4b4eab4c9), CONST64(0x19a8ce54544d549a), CONST64(0xe53b7f93937693ec), CONST64(0xaa442f222288220d), +CONST64(0xe9c86364648d6407), CONST64(0x12ff2af1f1e3f1db), CONST64(0xa2e6cc7373d173bf), CONST64(0x5a24821212481290), +CONST64(0x5d807a40401d403a), CONST64(0x2810480808200840), CONST64(0xe89b95c3c32bc356), CONST64(0x7bc5dfecec97ec33), +CONST64(0x90ab4ddbdb4bdb96), CONST64(0x1f5fc0a1a1bea161), CONST64(0x8307918d8d0e8d1c), CONST64(0xc97ac83d3df43df5), +CONST64(0xf1335b97976697cc), CONST64(0x0000000000000000), CONST64(0xd483f9cfcf1bcf36), CONST64(0x87566e2b2bac2b45), +CONST64(0xb3ece17676c57697), CONST64(0xb019e68282328264), CONST64(0xa9b128d6d67fd6fe), CONST64(0x7736c31b1b6c1bd8), +CONST64(0x5b7774b5b5eeb5c1), CONST64(0x2943beafaf86af11), CONST64(0xdfd41d6a6ab56a77), CONST64(0x0da0ea50505d50ba), +CONST64(0x4c8a574545094512), CONST64(0x18fb38f3f3ebf3cb), CONST64(0xf060ad3030c0309d), CONST64(0x74c3c4efef9bef2b), +CONST64(0xc37eda3f3ffc3fe5), CONST64(0x1caac75555495592), CONST64(0x1059dba2a2b2a279), CONST64(0x65c9e9eaea8fea03), +CONST64(0xecca6a656589650f), CONST64(0x686903babad2bab9), CONST64(0x935e4a2f2fbc2f65), CONST64(0xe79d8ec0c027c04e), +CONST64(0x81a160dede5fdebe), CONST64(0x6c38fc1c1c701ce0), CONST64(0x2ee746fdfdd3fdbb), CONST64(0x649a1f4d4d294d52), +CONST64(0xe0397692927292e4), CONST64(0xbceafa7575c9758f), CONST64(0x1e0c360606180630), CONST64(0x9809ae8a8a128a24), +CONST64(0x40794bb2b2f2b2f9), CONST64(0x59d185e6e6bfe663), CONST64(0x361c7e0e0e380e70), CONST64(0x633ee71f1f7c1ff8), +CONST64(0xf7c4556262956237), CONST64(0xa3b53ad4d477d4ee), CONST64(0x324d81a8a89aa829), CONST64(0xf4315296966296c4), +CONST64(0x3aef62f9f9c3f99b), CONST64(0xf697a3c5c533c566), CONST64(0xb14a102525942535), CONST64(0x20b2ab59597959f2), +CONST64(0xae15d084842a8454), CONST64(0xa7e4c57272d572b7), CONST64(0xdd72ec3939e439d5), CONST64(0x6198164c4c2d4c5a), +CONST64(0x3bbc945e5e655eca), CONST64(0x85f09f7878fd78e7), CONST64(0xd870e53838e038dd), CONST64(0x8605988c8c0a8c14), +CONST64(0xb2bf17d1d163d1c6), CONST64(0x0b57e4a5a5aea541), CONST64(0x4dd9a1e2e2afe243), CONST64(0xf8c24e616199612f), +CONST64(0x457b42b3b3f6b3f1), CONST64(0xa542342121842115), CONST64(0xd625089c9c4a9c94), CONST64(0x663cee1e1e781ef0), +CONST64(0x5286614343114322), CONST64(0xfc93b1c7c73bc776), CONST64(0x2be54ffcfcd7fcb3), CONST64(0x1408240404100420), +CONST64(0x08a2e351515951b2), CONST64(0xc72f2599995e99bc), CONST64(0xc4da226d6da96d4f), CONST64(0x391a650d0d340d68), +CONST64(0x35e979fafacffa83), CONST64(0x84a369dfdf5bdfb6), CONST64(0x9bfca97e7ee57ed7), CONST64(0xb44819242490243d), +CONST64(0xd776fe3b3bec3bc5), CONST64(0x3d4b9aabab96ab31), CONST64(0xd181f0cece1fce3e), CONST64(0x5522991111441188), +CONST64(0x8903838f8f068f0c), CONST64(0x6b9c044e4e254e4a), CONST64(0x517366b7b7e6b7d1), CONST64(0x60cbe0ebeb8beb0b), +CONST64(0xcc78c13c3cf03cfd), CONST64(0xbf1ffd81813e817c), CONST64(0xfe354094946a94d4), CONST64(0x0cf31cf7f7fbf7eb), +CONST64(0x676f18b9b9deb9a1), CONST64(0x5f268b13134c1398), CONST64(0x9c58512c2cb02c7d), CONST64(0xb8bb05d3d36bd3d6), +CONST64(0x5cd38ce7e7bbe76b), CONST64(0xcbdc396e6ea56e57), CONST64(0xf395aac4c437c46e), CONST64(0x0f061b03030c0318), +CONST64(0x13acdc565645568a), CONST64(0x49885e44440d441a), CONST64(0x9efea07f7fe17fdf), CONST64(0x374f88a9a99ea921), +CONST64(0x8254672a2aa82a4d), CONST64(0x6d6b0abbbbd6bbb1), CONST64(0xe29f87c1c123c146), CONST64(0x02a6f153535153a2), +CONST64(0x8ba572dcdc57dcae), CONST64(0x2716530b0b2c0b58), CONST64(0xd327019d9d4e9d9c), CONST64(0xc1d82b6c6cad6c47), +CONST64(0xf562a43131c43195), CONST64(0xb9e8f37474cd7487), CONST64(0x09f115f6f6fff6e3), CONST64(0x438c4c464605460a), +CONST64(0x2645a5acac8aac09), CONST64(0x970fb589891e893c), CONST64(0x4428b414145014a0), CONST64(0x42dfbae1e1a3e15b), +CONST64(0x4e2ca616165816b0), CONST64(0xd274f73a3ae83acd), CONST64(0xd0d2066969b9696f), CONST64(0x2d12410909240948), +CONST64(0xade0d77070dd70a7), CONST64(0x54716fb6b6e2b6d9), CONST64(0xb7bd1ed0d067d0ce), CONST64(0x7ec7d6eded93ed3b), +CONST64(0xdb85e2cccc17cc2e), CONST64(0x578468424215422a), CONST64(0xc22d2c98985a98b4), CONST64(0x0e55eda4a4aaa449), +CONST64(0x8850752828a0285d), CONST64(0x31b8865c5c6d5cda), CONST64(0x3fed6bf8f8c7f893), CONST64(0xa411c28686228644) +}; + +static const ulong64 sbox4[] = { +CONST64(0xc07830d818186018), CONST64(0x05af462623238c23), CONST64(0x7ef991b8c6c63fc6), CONST64(0x136fcdfbe8e887e8), +CONST64(0x4ca113cb87872687), CONST64(0xa9626d11b8b8dab8), CONST64(0x0805020901010401), CONST64(0x426e9e0d4f4f214f), +CONST64(0xadee6c9b3636d836), CONST64(0x590451ffa6a6a2a6), CONST64(0xdebdb90cd2d26fd2), CONST64(0xfb06f70ef5f5f3f5), +CONST64(0xef80f2967979f979), CONST64(0x5fcede306f6fa16f), CONST64(0xfcef3f6d91917e91), CONST64(0xaa07a4f852525552), +CONST64(0x27fdc04760609d60), CONST64(0x89766535bcbccabc), CONST64(0xaccd2b379b9b569b), CONST64(0x048c018a8e8e028e), +CONST64(0x71155bd2a3a3b6a3), CONST64(0x603c186c0c0c300c), CONST64(0xff8af6847b7bf17b), CONST64(0xb5e16a803535d435), +CONST64(0xe8693af51d1d741d), CONST64(0x5347ddb3e0e0a7e0), CONST64(0xf6acb321d7d77bd7), CONST64(0x5eed999cc2c22fc2), +CONST64(0x6d965c432e2eb82e), CONST64(0x627a96294b4b314b), CONST64(0xa321e15dfefedffe), CONST64(0x8216aed557574157), +CONST64(0xa8412abd15155415), CONST64(0x9fb6eee87777c177), CONST64(0xa5eb6e923737dc37), CONST64(0x7b56d79ee5e5b3e5), +CONST64(0x8cd923139f9f469f), CONST64(0xd317fd23f0f0e7f0), CONST64(0x6a7f94204a4a354a), CONST64(0x9e95a944dada4fda), +CONST64(0xfa25b0a258587d58), CONST64(0x06ca8fcfc9c903c9), CONST64(0x558d527c2929a429), CONST64(0x5022145a0a0a280a), +CONST64(0xe14f7f50b1b1feb1), CONST64(0x691a5dc9a0a0baa0), CONST64(0x7fdad6146b6bb16b), CONST64(0x5cab17d985852e85), +CONST64(0x8173673cbdbdcebd), CONST64(0xd234ba8f5d5d695d), CONST64(0x8050209010104010), CONST64(0xf303f507f4f4f7f4), +CONST64(0x16c08bddcbcb0bcb), CONST64(0xedc67cd33e3ef83e), CONST64(0x28110a2d05051405), CONST64(0x1fe6ce7867678167), +CONST64(0x7353d597e4e4b7e4), CONST64(0x25bb4e0227279c27), CONST64(0x3258827341411941), CONST64(0x2c9d0ba78b8b168b), +CONST64(0x510153f6a7a7a6a7), CONST64(0xcf94fab27d7de97d), CONST64(0xdcfb374995956e95), CONST64(0x8e9fad56d8d847d8), +CONST64(0x8b30eb70fbfbcbfb), CONST64(0x2371c1cdeeee9fee), CONST64(0xc791f8bb7c7ced7c), CONST64(0x17e3cc7166668566), +CONST64(0xa68ea77bdddd53dd), CONST64(0xb84b2eaf17175c17), CONST64(0x02468e4547470147), CONST64(0x84dc211a9e9e429e), +CONST64(0x1ec589d4caca0fca), CONST64(0x75995a582d2db42d), CONST64(0x9179632ebfbfc6bf), CONST64(0x381b0e3f07071c07), +CONST64(0x012347acadad8ead), CONST64(0xea2fb4b05a5a755a), CONST64(0x6cb51bef83833683), CONST64(0x85ff66b63333cc33), +CONST64(0x3ff2c65c63639163), CONST64(0x100a041202020802), CONST64(0x39384993aaaa92aa), CONST64(0xafa8e2de7171d971), +CONST64(0x0ecf8dc6c8c807c8), CONST64(0xc87d32d119196419), CONST64(0x7270923b49493949), CONST64(0x869aaf5fd9d943d9), +CONST64(0xc31df931f2f2eff2), CONST64(0x4b48dba8e3e3abe3), CONST64(0xe22ab6b95b5b715b), CONST64(0x34920dbc88881a88), +CONST64(0xa4c8293e9a9a529a), CONST64(0x2dbe4c0b26269826), CONST64(0x8dfa64bf3232c832), CONST64(0xe94a7d59b0b0fab0), +CONST64(0x1b6acff2e9e983e9), CONST64(0x78331e770f0f3c0f), CONST64(0xe6a6b733d5d573d5), CONST64(0x74ba1df480803a80), +CONST64(0x997c6127bebec2be), CONST64(0x26de87ebcdcd13cd), CONST64(0xbde468893434d034), CONST64(0x7a75903248483d48), +CONST64(0xab24e354ffffdbff), CONST64(0xf78ff48d7a7af57a), CONST64(0xf4ea3d6490907a90), CONST64(0xc23ebe9d5f5f615f), +CONST64(0x1da0403d20208020), CONST64(0x67d5d00f6868bd68), CONST64(0xd07234ca1a1a681a), CONST64(0x192c41b7aeae82ae), +CONST64(0xc95e757db4b4eab4), CONST64(0x9a19a8ce54544d54), CONST64(0xece53b7f93937693), CONST64(0x0daa442f22228822), +CONST64(0x07e9c86364648d64), CONST64(0xdb12ff2af1f1e3f1), CONST64(0xbfa2e6cc7373d173), CONST64(0x905a248212124812), +CONST64(0x3a5d807a40401d40), CONST64(0x4028104808082008), CONST64(0x56e89b95c3c32bc3), CONST64(0x337bc5dfecec97ec), +CONST64(0x9690ab4ddbdb4bdb), CONST64(0x611f5fc0a1a1bea1), CONST64(0x1c8307918d8d0e8d), CONST64(0xf5c97ac83d3df43d), +CONST64(0xccf1335b97976697), CONST64(0x0000000000000000), CONST64(0x36d483f9cfcf1bcf), CONST64(0x4587566e2b2bac2b), +CONST64(0x97b3ece17676c576), CONST64(0x64b019e682823282), CONST64(0xfea9b128d6d67fd6), CONST64(0xd87736c31b1b6c1b), +CONST64(0xc15b7774b5b5eeb5), CONST64(0x112943beafaf86af), CONST64(0x77dfd41d6a6ab56a), CONST64(0xba0da0ea50505d50), +CONST64(0x124c8a5745450945), CONST64(0xcb18fb38f3f3ebf3), CONST64(0x9df060ad3030c030), CONST64(0x2b74c3c4efef9bef), +CONST64(0xe5c37eda3f3ffc3f), CONST64(0x921caac755554955), CONST64(0x791059dba2a2b2a2), CONST64(0x0365c9e9eaea8fea), +CONST64(0x0fecca6a65658965), CONST64(0xb9686903babad2ba), CONST64(0x65935e4a2f2fbc2f), CONST64(0x4ee79d8ec0c027c0), +CONST64(0xbe81a160dede5fde), CONST64(0xe06c38fc1c1c701c), CONST64(0xbb2ee746fdfdd3fd), CONST64(0x52649a1f4d4d294d), +CONST64(0xe4e0397692927292), CONST64(0x8fbceafa7575c975), CONST64(0x301e0c3606061806), CONST64(0x249809ae8a8a128a), +CONST64(0xf940794bb2b2f2b2), CONST64(0x6359d185e6e6bfe6), CONST64(0x70361c7e0e0e380e), CONST64(0xf8633ee71f1f7c1f), +CONST64(0x37f7c45562629562), CONST64(0xeea3b53ad4d477d4), CONST64(0x29324d81a8a89aa8), CONST64(0xc4f4315296966296), +CONST64(0x9b3aef62f9f9c3f9), CONST64(0x66f697a3c5c533c5), CONST64(0x35b14a1025259425), CONST64(0xf220b2ab59597959), +CONST64(0x54ae15d084842a84), CONST64(0xb7a7e4c57272d572), CONST64(0xd5dd72ec3939e439), CONST64(0x5a6198164c4c2d4c), +CONST64(0xca3bbc945e5e655e), CONST64(0xe785f09f7878fd78), CONST64(0xddd870e53838e038), CONST64(0x148605988c8c0a8c), +CONST64(0xc6b2bf17d1d163d1), CONST64(0x410b57e4a5a5aea5), CONST64(0x434dd9a1e2e2afe2), CONST64(0x2ff8c24e61619961), +CONST64(0xf1457b42b3b3f6b3), CONST64(0x15a5423421218421), CONST64(0x94d625089c9c4a9c), CONST64(0xf0663cee1e1e781e), +CONST64(0x2252866143431143), CONST64(0x76fc93b1c7c73bc7), CONST64(0xb32be54ffcfcd7fc), CONST64(0x2014082404041004), +CONST64(0xb208a2e351515951), CONST64(0xbcc72f2599995e99), CONST64(0x4fc4da226d6da96d), CONST64(0x68391a650d0d340d), +CONST64(0x8335e979fafacffa), CONST64(0xb684a369dfdf5bdf), CONST64(0xd79bfca97e7ee57e), CONST64(0x3db4481924249024), +CONST64(0xc5d776fe3b3bec3b), CONST64(0x313d4b9aabab96ab), CONST64(0x3ed181f0cece1fce), CONST64(0x8855229911114411), +CONST64(0x0c8903838f8f068f), CONST64(0x4a6b9c044e4e254e), CONST64(0xd1517366b7b7e6b7), CONST64(0x0b60cbe0ebeb8beb), +CONST64(0xfdcc78c13c3cf03c), CONST64(0x7cbf1ffd81813e81), CONST64(0xd4fe354094946a94), CONST64(0xeb0cf31cf7f7fbf7), +CONST64(0xa1676f18b9b9deb9), CONST64(0x985f268b13134c13), CONST64(0x7d9c58512c2cb02c), CONST64(0xd6b8bb05d3d36bd3), +CONST64(0x6b5cd38ce7e7bbe7), CONST64(0x57cbdc396e6ea56e), CONST64(0x6ef395aac4c437c4), CONST64(0x180f061b03030c03), +CONST64(0x8a13acdc56564556), CONST64(0x1a49885e44440d44), CONST64(0xdf9efea07f7fe17f), CONST64(0x21374f88a9a99ea9), +CONST64(0x4d8254672a2aa82a), CONST64(0xb16d6b0abbbbd6bb), CONST64(0x46e29f87c1c123c1), CONST64(0xa202a6f153535153), +CONST64(0xae8ba572dcdc57dc), CONST64(0x582716530b0b2c0b), CONST64(0x9cd327019d9d4e9d), CONST64(0x47c1d82b6c6cad6c), +CONST64(0x95f562a43131c431), CONST64(0x87b9e8f37474cd74), CONST64(0xe309f115f6f6fff6), CONST64(0x0a438c4c46460546), +CONST64(0x092645a5acac8aac), CONST64(0x3c970fb589891e89), CONST64(0xa04428b414145014), CONST64(0x5b42dfbae1e1a3e1), +CONST64(0xb04e2ca616165816), CONST64(0xcdd274f73a3ae83a), CONST64(0x6fd0d2066969b969), CONST64(0x482d124109092409), +CONST64(0xa7ade0d77070dd70), CONST64(0xd954716fb6b6e2b6), CONST64(0xceb7bd1ed0d067d0), CONST64(0x3b7ec7d6eded93ed), +CONST64(0x2edb85e2cccc17cc), CONST64(0x2a57846842421542), CONST64(0xb4c22d2c98985a98), CONST64(0x490e55eda4a4aaa4), +CONST64(0x5d8850752828a028), CONST64(0xda31b8865c5c6d5c), CONST64(0x933fed6bf8f8c7f8), CONST64(0x44a411c286862286) +}; + +static const ulong64 sbox5[] = { +CONST64(0x18c07830d8181860), CONST64(0x2305af462623238c), CONST64(0xc67ef991b8c6c63f), CONST64(0xe8136fcdfbe8e887), +CONST64(0x874ca113cb878726), CONST64(0xb8a9626d11b8b8da), CONST64(0x0108050209010104), CONST64(0x4f426e9e0d4f4f21), +CONST64(0x36adee6c9b3636d8), CONST64(0xa6590451ffa6a6a2), CONST64(0xd2debdb90cd2d26f), CONST64(0xf5fb06f70ef5f5f3), +CONST64(0x79ef80f2967979f9), CONST64(0x6f5fcede306f6fa1), CONST64(0x91fcef3f6d91917e), CONST64(0x52aa07a4f8525255), +CONST64(0x6027fdc04760609d), CONST64(0xbc89766535bcbcca), CONST64(0x9baccd2b379b9b56), CONST64(0x8e048c018a8e8e02), +CONST64(0xa371155bd2a3a3b6), CONST64(0x0c603c186c0c0c30), CONST64(0x7bff8af6847b7bf1), CONST64(0x35b5e16a803535d4), +CONST64(0x1de8693af51d1d74), CONST64(0xe05347ddb3e0e0a7), CONST64(0xd7f6acb321d7d77b), CONST64(0xc25eed999cc2c22f), +CONST64(0x2e6d965c432e2eb8), CONST64(0x4b627a96294b4b31), CONST64(0xfea321e15dfefedf), CONST64(0x578216aed5575741), +CONST64(0x15a8412abd151554), CONST64(0x779fb6eee87777c1), CONST64(0x37a5eb6e923737dc), CONST64(0xe57b56d79ee5e5b3), +CONST64(0x9f8cd923139f9f46), CONST64(0xf0d317fd23f0f0e7), CONST64(0x4a6a7f94204a4a35), CONST64(0xda9e95a944dada4f), +CONST64(0x58fa25b0a258587d), CONST64(0xc906ca8fcfc9c903), CONST64(0x29558d527c2929a4), CONST64(0x0a5022145a0a0a28), +CONST64(0xb1e14f7f50b1b1fe), CONST64(0xa0691a5dc9a0a0ba), CONST64(0x6b7fdad6146b6bb1), CONST64(0x855cab17d985852e), +CONST64(0xbd8173673cbdbdce), CONST64(0x5dd234ba8f5d5d69), CONST64(0x1080502090101040), CONST64(0xf4f303f507f4f4f7), +CONST64(0xcb16c08bddcbcb0b), CONST64(0x3eedc67cd33e3ef8), CONST64(0x0528110a2d050514), CONST64(0x671fe6ce78676781), +CONST64(0xe47353d597e4e4b7), CONST64(0x2725bb4e0227279c), CONST64(0x4132588273414119), CONST64(0x8b2c9d0ba78b8b16), +CONST64(0xa7510153f6a7a7a6), CONST64(0x7dcf94fab27d7de9), CONST64(0x95dcfb374995956e), CONST64(0xd88e9fad56d8d847), +CONST64(0xfb8b30eb70fbfbcb), CONST64(0xee2371c1cdeeee9f), CONST64(0x7cc791f8bb7c7ced), CONST64(0x6617e3cc71666685), +CONST64(0xdda68ea77bdddd53), CONST64(0x17b84b2eaf17175c), CONST64(0x4702468e45474701), CONST64(0x9e84dc211a9e9e42), +CONST64(0xca1ec589d4caca0f), CONST64(0x2d75995a582d2db4), CONST64(0xbf9179632ebfbfc6), CONST64(0x07381b0e3f07071c), +CONST64(0xad012347acadad8e), CONST64(0x5aea2fb4b05a5a75), CONST64(0x836cb51bef838336), CONST64(0x3385ff66b63333cc), +CONST64(0x633ff2c65c636391), CONST64(0x02100a0412020208), CONST64(0xaa39384993aaaa92), CONST64(0x71afa8e2de7171d9), +CONST64(0xc80ecf8dc6c8c807), CONST64(0x19c87d32d1191964), CONST64(0x497270923b494939), CONST64(0xd9869aaf5fd9d943), +CONST64(0xf2c31df931f2f2ef), CONST64(0xe34b48dba8e3e3ab), CONST64(0x5be22ab6b95b5b71), CONST64(0x8834920dbc88881a), +CONST64(0x9aa4c8293e9a9a52), CONST64(0x262dbe4c0b262698), CONST64(0x328dfa64bf3232c8), CONST64(0xb0e94a7d59b0b0fa), +CONST64(0xe91b6acff2e9e983), CONST64(0x0f78331e770f0f3c), CONST64(0xd5e6a6b733d5d573), CONST64(0x8074ba1df480803a), +CONST64(0xbe997c6127bebec2), CONST64(0xcd26de87ebcdcd13), CONST64(0x34bde468893434d0), CONST64(0x487a75903248483d), +CONST64(0xffab24e354ffffdb), CONST64(0x7af78ff48d7a7af5), CONST64(0x90f4ea3d6490907a), CONST64(0x5fc23ebe9d5f5f61), +CONST64(0x201da0403d202080), CONST64(0x6867d5d00f6868bd), CONST64(0x1ad07234ca1a1a68), CONST64(0xae192c41b7aeae82), +CONST64(0xb4c95e757db4b4ea), CONST64(0x549a19a8ce54544d), CONST64(0x93ece53b7f939376), CONST64(0x220daa442f222288), +CONST64(0x6407e9c86364648d), CONST64(0xf1db12ff2af1f1e3), CONST64(0x73bfa2e6cc7373d1), CONST64(0x12905a2482121248), +CONST64(0x403a5d807a40401d), CONST64(0x0840281048080820), CONST64(0xc356e89b95c3c32b), CONST64(0xec337bc5dfecec97), +CONST64(0xdb9690ab4ddbdb4b), CONST64(0xa1611f5fc0a1a1be), CONST64(0x8d1c8307918d8d0e), CONST64(0x3df5c97ac83d3df4), +CONST64(0x97ccf1335b979766), CONST64(0x0000000000000000), CONST64(0xcf36d483f9cfcf1b), CONST64(0x2b4587566e2b2bac), +CONST64(0x7697b3ece17676c5), CONST64(0x8264b019e6828232), CONST64(0xd6fea9b128d6d67f), CONST64(0x1bd87736c31b1b6c), +CONST64(0xb5c15b7774b5b5ee), CONST64(0xaf112943beafaf86), CONST64(0x6a77dfd41d6a6ab5), CONST64(0x50ba0da0ea50505d), +CONST64(0x45124c8a57454509), CONST64(0xf3cb18fb38f3f3eb), CONST64(0x309df060ad3030c0), CONST64(0xef2b74c3c4efef9b), +CONST64(0x3fe5c37eda3f3ffc), CONST64(0x55921caac7555549), CONST64(0xa2791059dba2a2b2), CONST64(0xea0365c9e9eaea8f), +CONST64(0x650fecca6a656589), CONST64(0xbab9686903babad2), CONST64(0x2f65935e4a2f2fbc), CONST64(0xc04ee79d8ec0c027), +CONST64(0xdebe81a160dede5f), CONST64(0x1ce06c38fc1c1c70), CONST64(0xfdbb2ee746fdfdd3), CONST64(0x4d52649a1f4d4d29), +CONST64(0x92e4e03976929272), CONST64(0x758fbceafa7575c9), CONST64(0x06301e0c36060618), CONST64(0x8a249809ae8a8a12), +CONST64(0xb2f940794bb2b2f2), CONST64(0xe66359d185e6e6bf), CONST64(0x0e70361c7e0e0e38), CONST64(0x1ff8633ee71f1f7c), +CONST64(0x6237f7c455626295), CONST64(0xd4eea3b53ad4d477), CONST64(0xa829324d81a8a89a), CONST64(0x96c4f43152969662), +CONST64(0xf99b3aef62f9f9c3), CONST64(0xc566f697a3c5c533), CONST64(0x2535b14a10252594), CONST64(0x59f220b2ab595979), +CONST64(0x8454ae15d084842a), CONST64(0x72b7a7e4c57272d5), CONST64(0x39d5dd72ec3939e4), CONST64(0x4c5a6198164c4c2d), +CONST64(0x5eca3bbc945e5e65), CONST64(0x78e785f09f7878fd), CONST64(0x38ddd870e53838e0), CONST64(0x8c148605988c8c0a), +CONST64(0xd1c6b2bf17d1d163), CONST64(0xa5410b57e4a5a5ae), CONST64(0xe2434dd9a1e2e2af), CONST64(0x612ff8c24e616199), +CONST64(0xb3f1457b42b3b3f6), CONST64(0x2115a54234212184), CONST64(0x9c94d625089c9c4a), CONST64(0x1ef0663cee1e1e78), +CONST64(0x4322528661434311), CONST64(0xc776fc93b1c7c73b), CONST64(0xfcb32be54ffcfcd7), CONST64(0x0420140824040410), +CONST64(0x51b208a2e3515159), CONST64(0x99bcc72f2599995e), CONST64(0x6d4fc4da226d6da9), CONST64(0x0d68391a650d0d34), +CONST64(0xfa8335e979fafacf), CONST64(0xdfb684a369dfdf5b), CONST64(0x7ed79bfca97e7ee5), CONST64(0x243db44819242490), +CONST64(0x3bc5d776fe3b3bec), CONST64(0xab313d4b9aabab96), CONST64(0xce3ed181f0cece1f), CONST64(0x1188552299111144), +CONST64(0x8f0c8903838f8f06), CONST64(0x4e4a6b9c044e4e25), CONST64(0xb7d1517366b7b7e6), CONST64(0xeb0b60cbe0ebeb8b), +CONST64(0x3cfdcc78c13c3cf0), CONST64(0x817cbf1ffd81813e), CONST64(0x94d4fe354094946a), CONST64(0xf7eb0cf31cf7f7fb), +CONST64(0xb9a1676f18b9b9de), CONST64(0x13985f268b13134c), CONST64(0x2c7d9c58512c2cb0), CONST64(0xd3d6b8bb05d3d36b), +CONST64(0xe76b5cd38ce7e7bb), CONST64(0x6e57cbdc396e6ea5), CONST64(0xc46ef395aac4c437), CONST64(0x03180f061b03030c), +CONST64(0x568a13acdc565645), CONST64(0x441a49885e44440d), CONST64(0x7fdf9efea07f7fe1), CONST64(0xa921374f88a9a99e), +CONST64(0x2a4d8254672a2aa8), CONST64(0xbbb16d6b0abbbbd6), CONST64(0xc146e29f87c1c123), CONST64(0x53a202a6f1535351), +CONST64(0xdcae8ba572dcdc57), CONST64(0x0b582716530b0b2c), CONST64(0x9d9cd327019d9d4e), CONST64(0x6c47c1d82b6c6cad), +CONST64(0x3195f562a43131c4), CONST64(0x7487b9e8f37474cd), CONST64(0xf6e309f115f6f6ff), CONST64(0x460a438c4c464605), +CONST64(0xac092645a5acac8a), CONST64(0x893c970fb589891e), CONST64(0x14a04428b4141450), CONST64(0xe15b42dfbae1e1a3), +CONST64(0x16b04e2ca6161658), CONST64(0x3acdd274f73a3ae8), CONST64(0x696fd0d2066969b9), CONST64(0x09482d1241090924), +CONST64(0x70a7ade0d77070dd), CONST64(0xb6d954716fb6b6e2), CONST64(0xd0ceb7bd1ed0d067), CONST64(0xed3b7ec7d6eded93), +CONST64(0xcc2edb85e2cccc17), CONST64(0x422a578468424215), CONST64(0x98b4c22d2c98985a), CONST64(0xa4490e55eda4a4aa), +CONST64(0x285d8850752828a0), CONST64(0x5cda31b8865c5c6d), CONST64(0xf8933fed6bf8f8c7), CONST64(0x8644a411c2868622) +}; + +static const ulong64 sbox6[] = { +CONST64(0x6018c07830d81818), CONST64(0x8c2305af46262323), CONST64(0x3fc67ef991b8c6c6), CONST64(0x87e8136fcdfbe8e8), +CONST64(0x26874ca113cb8787), CONST64(0xdab8a9626d11b8b8), CONST64(0x0401080502090101), CONST64(0x214f426e9e0d4f4f), +CONST64(0xd836adee6c9b3636), CONST64(0xa2a6590451ffa6a6), CONST64(0x6fd2debdb90cd2d2), CONST64(0xf3f5fb06f70ef5f5), +CONST64(0xf979ef80f2967979), CONST64(0xa16f5fcede306f6f), CONST64(0x7e91fcef3f6d9191), CONST64(0x5552aa07a4f85252), +CONST64(0x9d6027fdc0476060), CONST64(0xcabc89766535bcbc), CONST64(0x569baccd2b379b9b), CONST64(0x028e048c018a8e8e), +CONST64(0xb6a371155bd2a3a3), CONST64(0x300c603c186c0c0c), CONST64(0xf17bff8af6847b7b), CONST64(0xd435b5e16a803535), +CONST64(0x741de8693af51d1d), CONST64(0xa7e05347ddb3e0e0), CONST64(0x7bd7f6acb321d7d7), CONST64(0x2fc25eed999cc2c2), +CONST64(0xb82e6d965c432e2e), CONST64(0x314b627a96294b4b), CONST64(0xdffea321e15dfefe), CONST64(0x41578216aed55757), +CONST64(0x5415a8412abd1515), CONST64(0xc1779fb6eee87777), CONST64(0xdc37a5eb6e923737), CONST64(0xb3e57b56d79ee5e5), +CONST64(0x469f8cd923139f9f), CONST64(0xe7f0d317fd23f0f0), CONST64(0x354a6a7f94204a4a), CONST64(0x4fda9e95a944dada), +CONST64(0x7d58fa25b0a25858), CONST64(0x03c906ca8fcfc9c9), CONST64(0xa429558d527c2929), CONST64(0x280a5022145a0a0a), +CONST64(0xfeb1e14f7f50b1b1), CONST64(0xbaa0691a5dc9a0a0), CONST64(0xb16b7fdad6146b6b), CONST64(0x2e855cab17d98585), +CONST64(0xcebd8173673cbdbd), CONST64(0x695dd234ba8f5d5d), CONST64(0x4010805020901010), CONST64(0xf7f4f303f507f4f4), +CONST64(0x0bcb16c08bddcbcb), CONST64(0xf83eedc67cd33e3e), CONST64(0x140528110a2d0505), CONST64(0x81671fe6ce786767), +CONST64(0xb7e47353d597e4e4), CONST64(0x9c2725bb4e022727), CONST64(0x1941325882734141), CONST64(0x168b2c9d0ba78b8b), +CONST64(0xa6a7510153f6a7a7), CONST64(0xe97dcf94fab27d7d), CONST64(0x6e95dcfb37499595), CONST64(0x47d88e9fad56d8d8), +CONST64(0xcbfb8b30eb70fbfb), CONST64(0x9fee2371c1cdeeee), CONST64(0xed7cc791f8bb7c7c), CONST64(0x856617e3cc716666), +CONST64(0x53dda68ea77bdddd), CONST64(0x5c17b84b2eaf1717), CONST64(0x014702468e454747), CONST64(0x429e84dc211a9e9e), +CONST64(0x0fca1ec589d4caca), CONST64(0xb42d75995a582d2d), CONST64(0xc6bf9179632ebfbf), CONST64(0x1c07381b0e3f0707), +CONST64(0x8ead012347acadad), CONST64(0x755aea2fb4b05a5a), CONST64(0x36836cb51bef8383), CONST64(0xcc3385ff66b63333), +CONST64(0x91633ff2c65c6363), CONST64(0x0802100a04120202), CONST64(0x92aa39384993aaaa), CONST64(0xd971afa8e2de7171), +CONST64(0x07c80ecf8dc6c8c8), CONST64(0x6419c87d32d11919), CONST64(0x39497270923b4949), CONST64(0x43d9869aaf5fd9d9), +CONST64(0xeff2c31df931f2f2), CONST64(0xabe34b48dba8e3e3), CONST64(0x715be22ab6b95b5b), CONST64(0x1a8834920dbc8888), +CONST64(0x529aa4c8293e9a9a), CONST64(0x98262dbe4c0b2626), CONST64(0xc8328dfa64bf3232), CONST64(0xfab0e94a7d59b0b0), +CONST64(0x83e91b6acff2e9e9), CONST64(0x3c0f78331e770f0f), CONST64(0x73d5e6a6b733d5d5), CONST64(0x3a8074ba1df48080), +CONST64(0xc2be997c6127bebe), CONST64(0x13cd26de87ebcdcd), CONST64(0xd034bde468893434), CONST64(0x3d487a7590324848), +CONST64(0xdbffab24e354ffff), CONST64(0xf57af78ff48d7a7a), CONST64(0x7a90f4ea3d649090), CONST64(0x615fc23ebe9d5f5f), +CONST64(0x80201da0403d2020), CONST64(0xbd6867d5d00f6868), CONST64(0x681ad07234ca1a1a), CONST64(0x82ae192c41b7aeae), +CONST64(0xeab4c95e757db4b4), CONST64(0x4d549a19a8ce5454), CONST64(0x7693ece53b7f9393), CONST64(0x88220daa442f2222), +CONST64(0x8d6407e9c8636464), CONST64(0xe3f1db12ff2af1f1), CONST64(0xd173bfa2e6cc7373), CONST64(0x4812905a24821212), +CONST64(0x1d403a5d807a4040), CONST64(0x2008402810480808), CONST64(0x2bc356e89b95c3c3), CONST64(0x97ec337bc5dfecec), +CONST64(0x4bdb9690ab4ddbdb), CONST64(0xbea1611f5fc0a1a1), CONST64(0x0e8d1c8307918d8d), CONST64(0xf43df5c97ac83d3d), +CONST64(0x6697ccf1335b9797), CONST64(0x0000000000000000), CONST64(0x1bcf36d483f9cfcf), CONST64(0xac2b4587566e2b2b), +CONST64(0xc57697b3ece17676), CONST64(0x328264b019e68282), CONST64(0x7fd6fea9b128d6d6), CONST64(0x6c1bd87736c31b1b), +CONST64(0xeeb5c15b7774b5b5), CONST64(0x86af112943beafaf), CONST64(0xb56a77dfd41d6a6a), CONST64(0x5d50ba0da0ea5050), +CONST64(0x0945124c8a574545), CONST64(0xebf3cb18fb38f3f3), CONST64(0xc0309df060ad3030), CONST64(0x9bef2b74c3c4efef), +CONST64(0xfc3fe5c37eda3f3f), CONST64(0x4955921caac75555), CONST64(0xb2a2791059dba2a2), CONST64(0x8fea0365c9e9eaea), +CONST64(0x89650fecca6a6565), CONST64(0xd2bab9686903baba), CONST64(0xbc2f65935e4a2f2f), CONST64(0x27c04ee79d8ec0c0), +CONST64(0x5fdebe81a160dede), CONST64(0x701ce06c38fc1c1c), CONST64(0xd3fdbb2ee746fdfd), CONST64(0x294d52649a1f4d4d), +CONST64(0x7292e4e039769292), CONST64(0xc9758fbceafa7575), CONST64(0x1806301e0c360606), CONST64(0x128a249809ae8a8a), +CONST64(0xf2b2f940794bb2b2), CONST64(0xbfe66359d185e6e6), CONST64(0x380e70361c7e0e0e), CONST64(0x7c1ff8633ee71f1f), +CONST64(0x956237f7c4556262), CONST64(0x77d4eea3b53ad4d4), CONST64(0x9aa829324d81a8a8), CONST64(0x6296c4f431529696), +CONST64(0xc3f99b3aef62f9f9), CONST64(0x33c566f697a3c5c5), CONST64(0x942535b14a102525), CONST64(0x7959f220b2ab5959), +CONST64(0x2a8454ae15d08484), CONST64(0xd572b7a7e4c57272), CONST64(0xe439d5dd72ec3939), CONST64(0x2d4c5a6198164c4c), +CONST64(0x655eca3bbc945e5e), CONST64(0xfd78e785f09f7878), CONST64(0xe038ddd870e53838), CONST64(0x0a8c148605988c8c), +CONST64(0x63d1c6b2bf17d1d1), CONST64(0xaea5410b57e4a5a5), CONST64(0xafe2434dd9a1e2e2), CONST64(0x99612ff8c24e6161), +CONST64(0xf6b3f1457b42b3b3), CONST64(0x842115a542342121), CONST64(0x4a9c94d625089c9c), CONST64(0x781ef0663cee1e1e), +CONST64(0x1143225286614343), CONST64(0x3bc776fc93b1c7c7), CONST64(0xd7fcb32be54ffcfc), CONST64(0x1004201408240404), +CONST64(0x5951b208a2e35151), CONST64(0x5e99bcc72f259999), CONST64(0xa96d4fc4da226d6d), CONST64(0x340d68391a650d0d), +CONST64(0xcffa8335e979fafa), CONST64(0x5bdfb684a369dfdf), CONST64(0xe57ed79bfca97e7e), CONST64(0x90243db448192424), +CONST64(0xec3bc5d776fe3b3b), CONST64(0x96ab313d4b9aabab), CONST64(0x1fce3ed181f0cece), CONST64(0x4411885522991111), +CONST64(0x068f0c8903838f8f), CONST64(0x254e4a6b9c044e4e), CONST64(0xe6b7d1517366b7b7), CONST64(0x8beb0b60cbe0ebeb), +CONST64(0xf03cfdcc78c13c3c), CONST64(0x3e817cbf1ffd8181), CONST64(0x6a94d4fe35409494), CONST64(0xfbf7eb0cf31cf7f7), +CONST64(0xdeb9a1676f18b9b9), CONST64(0x4c13985f268b1313), CONST64(0xb02c7d9c58512c2c), CONST64(0x6bd3d6b8bb05d3d3), +CONST64(0xbbe76b5cd38ce7e7), CONST64(0xa56e57cbdc396e6e), CONST64(0x37c46ef395aac4c4), CONST64(0x0c03180f061b0303), +CONST64(0x45568a13acdc5656), CONST64(0x0d441a49885e4444), CONST64(0xe17fdf9efea07f7f), CONST64(0x9ea921374f88a9a9), +CONST64(0xa82a4d8254672a2a), CONST64(0xd6bbb16d6b0abbbb), CONST64(0x23c146e29f87c1c1), CONST64(0x5153a202a6f15353), +CONST64(0x57dcae8ba572dcdc), CONST64(0x2c0b582716530b0b), CONST64(0x4e9d9cd327019d9d), CONST64(0xad6c47c1d82b6c6c), +CONST64(0xc43195f562a43131), CONST64(0xcd7487b9e8f37474), CONST64(0xfff6e309f115f6f6), CONST64(0x05460a438c4c4646), +CONST64(0x8aac092645a5acac), CONST64(0x1e893c970fb58989), CONST64(0x5014a04428b41414), CONST64(0xa3e15b42dfbae1e1), +CONST64(0x5816b04e2ca61616), CONST64(0xe83acdd274f73a3a), CONST64(0xb9696fd0d2066969), CONST64(0x2409482d12410909), +CONST64(0xdd70a7ade0d77070), CONST64(0xe2b6d954716fb6b6), CONST64(0x67d0ceb7bd1ed0d0), CONST64(0x93ed3b7ec7d6eded), +CONST64(0x17cc2edb85e2cccc), CONST64(0x15422a5784684242), CONST64(0x5a98b4c22d2c9898), CONST64(0xaaa4490e55eda4a4), +CONST64(0xa0285d8850752828), CONST64(0x6d5cda31b8865c5c), CONST64(0xc7f8933fed6bf8f8), CONST64(0x228644a411c28686) +}; + +static const ulong64 sbox7[] = { +CONST64(0x186018c07830d818), CONST64(0x238c2305af462623), CONST64(0xc63fc67ef991b8c6), CONST64(0xe887e8136fcdfbe8), +CONST64(0x8726874ca113cb87), CONST64(0xb8dab8a9626d11b8), CONST64(0x0104010805020901), CONST64(0x4f214f426e9e0d4f), +CONST64(0x36d836adee6c9b36), CONST64(0xa6a2a6590451ffa6), CONST64(0xd26fd2debdb90cd2), CONST64(0xf5f3f5fb06f70ef5), +CONST64(0x79f979ef80f29679), CONST64(0x6fa16f5fcede306f), CONST64(0x917e91fcef3f6d91), CONST64(0x525552aa07a4f852), +CONST64(0x609d6027fdc04760), CONST64(0xbccabc89766535bc), CONST64(0x9b569baccd2b379b), CONST64(0x8e028e048c018a8e), +CONST64(0xa3b6a371155bd2a3), CONST64(0x0c300c603c186c0c), CONST64(0x7bf17bff8af6847b), CONST64(0x35d435b5e16a8035), +CONST64(0x1d741de8693af51d), CONST64(0xe0a7e05347ddb3e0), CONST64(0xd77bd7f6acb321d7), CONST64(0xc22fc25eed999cc2), +CONST64(0x2eb82e6d965c432e), CONST64(0x4b314b627a96294b), CONST64(0xfedffea321e15dfe), CONST64(0x5741578216aed557), +CONST64(0x155415a8412abd15), CONST64(0x77c1779fb6eee877), CONST64(0x37dc37a5eb6e9237), CONST64(0xe5b3e57b56d79ee5), +CONST64(0x9f469f8cd923139f), CONST64(0xf0e7f0d317fd23f0), CONST64(0x4a354a6a7f94204a), CONST64(0xda4fda9e95a944da), +CONST64(0x587d58fa25b0a258), CONST64(0xc903c906ca8fcfc9), CONST64(0x29a429558d527c29), CONST64(0x0a280a5022145a0a), +CONST64(0xb1feb1e14f7f50b1), CONST64(0xa0baa0691a5dc9a0), CONST64(0x6bb16b7fdad6146b), CONST64(0x852e855cab17d985), +CONST64(0xbdcebd8173673cbd), CONST64(0x5d695dd234ba8f5d), CONST64(0x1040108050209010), CONST64(0xf4f7f4f303f507f4), +CONST64(0xcb0bcb16c08bddcb), CONST64(0x3ef83eedc67cd33e), CONST64(0x05140528110a2d05), CONST64(0x6781671fe6ce7867), +CONST64(0xe4b7e47353d597e4), CONST64(0x279c2725bb4e0227), CONST64(0x4119413258827341), CONST64(0x8b168b2c9d0ba78b), +CONST64(0xa7a6a7510153f6a7), CONST64(0x7de97dcf94fab27d), CONST64(0x956e95dcfb374995), CONST64(0xd847d88e9fad56d8), +CONST64(0xfbcbfb8b30eb70fb), CONST64(0xee9fee2371c1cdee), CONST64(0x7ced7cc791f8bb7c), CONST64(0x66856617e3cc7166), +CONST64(0xdd53dda68ea77bdd), CONST64(0x175c17b84b2eaf17), CONST64(0x47014702468e4547), CONST64(0x9e429e84dc211a9e), +CONST64(0xca0fca1ec589d4ca), CONST64(0x2db42d75995a582d), CONST64(0xbfc6bf9179632ebf), CONST64(0x071c07381b0e3f07), +CONST64(0xad8ead012347acad), CONST64(0x5a755aea2fb4b05a), CONST64(0x8336836cb51bef83), CONST64(0x33cc3385ff66b633), +CONST64(0x6391633ff2c65c63), CONST64(0x020802100a041202), CONST64(0xaa92aa39384993aa), CONST64(0x71d971afa8e2de71), +CONST64(0xc807c80ecf8dc6c8), CONST64(0x196419c87d32d119), CONST64(0x4939497270923b49), CONST64(0xd943d9869aaf5fd9), +CONST64(0xf2eff2c31df931f2), CONST64(0xe3abe34b48dba8e3), CONST64(0x5b715be22ab6b95b), CONST64(0x881a8834920dbc88), +CONST64(0x9a529aa4c8293e9a), CONST64(0x2698262dbe4c0b26), CONST64(0x32c8328dfa64bf32), CONST64(0xb0fab0e94a7d59b0), +CONST64(0xe983e91b6acff2e9), CONST64(0x0f3c0f78331e770f), CONST64(0xd573d5e6a6b733d5), CONST64(0x803a8074ba1df480), +CONST64(0xbec2be997c6127be), CONST64(0xcd13cd26de87ebcd), CONST64(0x34d034bde4688934), CONST64(0x483d487a75903248), +CONST64(0xffdbffab24e354ff), CONST64(0x7af57af78ff48d7a), CONST64(0x907a90f4ea3d6490), CONST64(0x5f615fc23ebe9d5f), +CONST64(0x2080201da0403d20), CONST64(0x68bd6867d5d00f68), CONST64(0x1a681ad07234ca1a), CONST64(0xae82ae192c41b7ae), +CONST64(0xb4eab4c95e757db4), CONST64(0x544d549a19a8ce54), CONST64(0x937693ece53b7f93), CONST64(0x2288220daa442f22), +CONST64(0x648d6407e9c86364), CONST64(0xf1e3f1db12ff2af1), CONST64(0x73d173bfa2e6cc73), CONST64(0x124812905a248212), +CONST64(0x401d403a5d807a40), CONST64(0x0820084028104808), CONST64(0xc32bc356e89b95c3), CONST64(0xec97ec337bc5dfec), +CONST64(0xdb4bdb9690ab4ddb), CONST64(0xa1bea1611f5fc0a1), CONST64(0x8d0e8d1c8307918d), CONST64(0x3df43df5c97ac83d), +CONST64(0x976697ccf1335b97), CONST64(0x0000000000000000), CONST64(0xcf1bcf36d483f9cf), CONST64(0x2bac2b4587566e2b), +CONST64(0x76c57697b3ece176), CONST64(0x82328264b019e682), CONST64(0xd67fd6fea9b128d6), CONST64(0x1b6c1bd87736c31b), +CONST64(0xb5eeb5c15b7774b5), CONST64(0xaf86af112943beaf), CONST64(0x6ab56a77dfd41d6a), CONST64(0x505d50ba0da0ea50), +CONST64(0x450945124c8a5745), CONST64(0xf3ebf3cb18fb38f3), CONST64(0x30c0309df060ad30), CONST64(0xef9bef2b74c3c4ef), +CONST64(0x3ffc3fe5c37eda3f), CONST64(0x554955921caac755), CONST64(0xa2b2a2791059dba2), CONST64(0xea8fea0365c9e9ea), +CONST64(0x6589650fecca6a65), CONST64(0xbad2bab9686903ba), CONST64(0x2fbc2f65935e4a2f), CONST64(0xc027c04ee79d8ec0), +CONST64(0xde5fdebe81a160de), CONST64(0x1c701ce06c38fc1c), CONST64(0xfdd3fdbb2ee746fd), CONST64(0x4d294d52649a1f4d), +CONST64(0x927292e4e0397692), CONST64(0x75c9758fbceafa75), CONST64(0x061806301e0c3606), CONST64(0x8a128a249809ae8a), +CONST64(0xb2f2b2f940794bb2), CONST64(0xe6bfe66359d185e6), CONST64(0x0e380e70361c7e0e), CONST64(0x1f7c1ff8633ee71f), +CONST64(0x62956237f7c45562), CONST64(0xd477d4eea3b53ad4), CONST64(0xa89aa829324d81a8), CONST64(0x966296c4f4315296), +CONST64(0xf9c3f99b3aef62f9), CONST64(0xc533c566f697a3c5), CONST64(0x25942535b14a1025), CONST64(0x597959f220b2ab59), +CONST64(0x842a8454ae15d084), CONST64(0x72d572b7a7e4c572), CONST64(0x39e439d5dd72ec39), CONST64(0x4c2d4c5a6198164c), +CONST64(0x5e655eca3bbc945e), CONST64(0x78fd78e785f09f78), CONST64(0x38e038ddd870e538), CONST64(0x8c0a8c148605988c), +CONST64(0xd163d1c6b2bf17d1), CONST64(0xa5aea5410b57e4a5), CONST64(0xe2afe2434dd9a1e2), CONST64(0x6199612ff8c24e61), +CONST64(0xb3f6b3f1457b42b3), CONST64(0x21842115a5423421), CONST64(0x9c4a9c94d625089c), CONST64(0x1e781ef0663cee1e), +CONST64(0x4311432252866143), CONST64(0xc73bc776fc93b1c7), CONST64(0xfcd7fcb32be54ffc), CONST64(0x0410042014082404), +CONST64(0x515951b208a2e351), CONST64(0x995e99bcc72f2599), CONST64(0x6da96d4fc4da226d), CONST64(0x0d340d68391a650d), +CONST64(0xfacffa8335e979fa), CONST64(0xdf5bdfb684a369df), CONST64(0x7ee57ed79bfca97e), CONST64(0x2490243db4481924), +CONST64(0x3bec3bc5d776fe3b), CONST64(0xab96ab313d4b9aab), CONST64(0xce1fce3ed181f0ce), CONST64(0x1144118855229911), +CONST64(0x8f068f0c8903838f), CONST64(0x4e254e4a6b9c044e), CONST64(0xb7e6b7d1517366b7), CONST64(0xeb8beb0b60cbe0eb), +CONST64(0x3cf03cfdcc78c13c), CONST64(0x813e817cbf1ffd81), CONST64(0x946a94d4fe354094), CONST64(0xf7fbf7eb0cf31cf7), +CONST64(0xb9deb9a1676f18b9), CONST64(0x134c13985f268b13), CONST64(0x2cb02c7d9c58512c), CONST64(0xd36bd3d6b8bb05d3), +CONST64(0xe7bbe76b5cd38ce7), CONST64(0x6ea56e57cbdc396e), CONST64(0xc437c46ef395aac4), CONST64(0x030c03180f061b03), +CONST64(0x5645568a13acdc56), CONST64(0x440d441a49885e44), CONST64(0x7fe17fdf9efea07f), CONST64(0xa99ea921374f88a9), +CONST64(0x2aa82a4d8254672a), CONST64(0xbbd6bbb16d6b0abb), CONST64(0xc123c146e29f87c1), CONST64(0x535153a202a6f153), +CONST64(0xdc57dcae8ba572dc), CONST64(0x0b2c0b582716530b), CONST64(0x9d4e9d9cd327019d), CONST64(0x6cad6c47c1d82b6c), +CONST64(0x31c43195f562a431), CONST64(0x74cd7487b9e8f374), CONST64(0xf6fff6e309f115f6), CONST64(0x4605460a438c4c46), +CONST64(0xac8aac092645a5ac), CONST64(0x891e893c970fb589), CONST64(0x145014a04428b414), CONST64(0xe1a3e15b42dfbae1), +CONST64(0x165816b04e2ca616), CONST64(0x3ae83acdd274f73a), CONST64(0x69b9696fd0d20669), CONST64(0x092409482d124109), +CONST64(0x70dd70a7ade0d770), CONST64(0xb6e2b6d954716fb6), CONST64(0xd067d0ceb7bd1ed0), CONST64(0xed93ed3b7ec7d6ed), +CONST64(0xcc17cc2edb85e2cc), CONST64(0x4215422a57846842), CONST64(0x985a98b4c22d2c98), CONST64(0xa4aaa4490e55eda4), +CONST64(0x28a0285d88507528), CONST64(0x5c6d5cda31b8865c), CONST64(0xf8c7f8933fed6bf8), CONST64(0x86228644a411c286) +}; + +#endif + +static const ulong64 cont[] = { +CONST64(0x1823c6e887b8014f), +CONST64(0x36a6d2f5796f9152), +CONST64(0x60bc9b8ea30c7b35), +CONST64(0x1de0d7c22e4bfe57), +CONST64(0x157737e59ff04ada), +CONST64(0x58c9290ab1a06b85), +CONST64(0xbd5d10f4cb3e0567), +CONST64(0xe427418ba77d95d8), +CONST64(0xfbee7c66dd17479e), +CONST64(0xca2dbf07ad5a8333), +CONST64(0x6302aa71c81949d9), +}; + +#endif /* __LTC_WHIRLTAB_C__ */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/headers/tomcrypt.h b/fsbl/lib/libtomcrypt/src/headers/tomcrypt.h new file mode 100644 index 000000000..700e29b12 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/headers/tomcrypt.h @@ -0,0 +1,104 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#ifndef TOMCRYPT_H_ +#define TOMCRYPT_H_ +#include +#include +#include +#include +#include +#include +#include + +/* use configuration data */ +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* version */ +#define CRYPT 0x0118 +#define SCRYPT "1.18.2" + +/* max size of either a cipher/hash block or symmetric key [largest of the two] */ +#define MAXBLOCKSIZE 128 + +#ifndef TAB_SIZE +/* descriptor table size */ +#define TAB_SIZE 32 +#endif + +/* error codes [will be expanded in future releases] */ +enum { + CRYPT_OK=0, /* Result OK */ + CRYPT_ERROR, /* Generic Error */ + CRYPT_NOP, /* Not a failure but no operation was performed */ + + CRYPT_INVALID_KEYSIZE, /* Invalid key size given */ + CRYPT_INVALID_ROUNDS, /* Invalid number of rounds */ + CRYPT_FAIL_TESTVECTOR, /* Algorithm failed test vectors */ + + CRYPT_BUFFER_OVERFLOW, /* Not enough space for output */ + CRYPT_INVALID_PACKET, /* Invalid input packet given */ + + CRYPT_INVALID_PRNGSIZE, /* Invalid number of bits for a PRNG */ + CRYPT_ERROR_READPRNG, /* Could not read enough from PRNG */ + + CRYPT_INVALID_CIPHER, /* Invalid cipher specified */ + CRYPT_INVALID_HASH, /* Invalid hash specified */ + CRYPT_INVALID_PRNG, /* Invalid PRNG specified */ + + CRYPT_MEM, /* Out of memory */ + + CRYPT_PK_TYPE_MISMATCH, /* Not equivalent types of PK keys */ + CRYPT_PK_NOT_PRIVATE, /* Requires a private PK key */ + + CRYPT_INVALID_ARG, /* Generic invalid argument */ + CRYPT_FILE_NOTFOUND, /* File Not Found */ + + CRYPT_PK_INVALID_TYPE, /* Invalid type of PK key */ + + CRYPT_OVERFLOW, /* An overflow of a value was detected/prevented */ + + CRYPT_UNUSED1, /* UNUSED1 */ + + CRYPT_INPUT_TOO_LONG, /* The input was longer than expected. */ + + CRYPT_PK_INVALID_SIZE, /* Invalid size input for PK parameters */ + + CRYPT_INVALID_PRIME_SIZE,/* Invalid size of prime requested */ + CRYPT_PK_INVALID_PADDING, /* Invalid padding on input */ + + CRYPT_HASH_OVERFLOW /* Hash applied to too many bits */ +}; + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef __cplusplus + } +#endif + +#endif /* TOMCRYPT_H_ */ + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/headers/tomcrypt_argchk.h b/fsbl/lib/libtomcrypt/src/headers/tomcrypt_argchk.h new file mode 100644 index 000000000..be9ef0f52 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/headers/tomcrypt_argchk.h @@ -0,0 +1,53 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* Defines the LTC_ARGCHK macro used within the library */ +/* ARGTYPE is defined in tomcrypt_cfg.h */ +#if ARGTYPE == 0 + +#include + +/* this is the default LibTomCrypt macro */ +#if defined(__clang__) || defined(__GNUC_MINOR__) +#define NORETURN __attribute__ ((noreturn)) +#else +#define NORETURN +#endif + +void crypt_argchk(const char *v, const char *s, int d) NORETURN; +#define LTC_ARGCHK(x) do { if (!(x)) { crypt_argchk(#x, __FILE__, __LINE__); } }while(0) +#define LTC_ARGCHKVD(x) do { if (!(x)) { crypt_argchk(#x, __FILE__, __LINE__); } }while(0) + +#elif ARGTYPE == 1 + +/* fatal type of error */ +#define LTC_ARGCHK(x) assert((x)) +#define LTC_ARGCHKVD(x) LTC_ARGCHK(x) + +#elif ARGTYPE == 2 + +#define LTC_ARGCHK(x) if (!(x)) { fprintf(stderr, "\nwarning: ARGCHK failed at %s:%d\n", __FILE__, __LINE__); } +#define LTC_ARGCHKVD(x) LTC_ARGCHK(x) + +#elif ARGTYPE == 3 + +#define LTC_ARGCHK(x) +#define LTC_ARGCHKVD(x) LTC_ARGCHK(x) + +#elif ARGTYPE == 4 + +#define LTC_ARGCHK(x) if (!(x)) return CRYPT_INVALID_ARG; +#define LTC_ARGCHKVD(x) if (!(x)) return; + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/headers/tomcrypt_cfg.h b/fsbl/lib/libtomcrypt/src/headers/tomcrypt_cfg.h new file mode 100644 index 000000000..af2a0957e --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/headers/tomcrypt_cfg.h @@ -0,0 +1,283 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* This is the build config file. + * + * With this you can setup what to inlcude/exclude automatically during any build. Just comment + * out the line that #define's the word for the thing you want to remove. phew! + */ + +#ifndef TOMCRYPT_CFG_H +#define TOMCRYPT_CFG_H + +#if defined(_WIN32) || defined(_MSC_VER) + #define LTC_CALL __cdecl +#elif !defined(LTC_CALL) + #define LTC_CALL +#endif + +#ifndef LTC_EXPORT + #define LTC_EXPORT +#endif + +/* certain platforms use macros for these, making the prototypes broken */ +#ifndef LTC_NO_PROTOTYPES + +/* you can change how memory allocation works ... */ +LTC_EXPORT void * LTC_CALL XMALLOC(size_t n); +LTC_EXPORT void * LTC_CALL XREALLOC(void *p, size_t n); +LTC_EXPORT void * LTC_CALL XCALLOC(size_t n, size_t s); +LTC_EXPORT void LTC_CALL XFREE(void *p); + +LTC_EXPORT void LTC_CALL XQSORT(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *)); + + +/* change the clock function too */ +LTC_EXPORT clock_t LTC_CALL XCLOCK(void); + +/* various other functions */ +LTC_EXPORT void * LTC_CALL XMEMCPY(void *dest, const void *src, size_t n); +LTC_EXPORT int LTC_CALL XMEMCMP(const void *s1, const void *s2, size_t n); +LTC_EXPORT void * LTC_CALL XMEMSET(void *s, int c, size_t n); + +LTC_EXPORT int LTC_CALL XSTRCMP(const char *s1, const char *s2); + +#endif + +/* some compilers do not like "inline" (or maybe "static inline"), namely: HP cc, IBM xlc */ +#if defined(__HP_cc) || defined(__xlc__) + #define LTC_INLINE +#elif defined(_MSC_VER) + #define LTC_INLINE __inline +#else + #define LTC_INLINE inline +#endif + +/* type of argument checking, 0=default, 1=fatal and 2=error+continue, 3=nothing */ +#ifndef ARGTYPE + #define ARGTYPE 0 +#endif + +#undef LTC_ENCRYPT +#define LTC_ENCRYPT 0 +#undef LTC_DECRYPT +#define LTC_DECRYPT 1 + +/* Controls endianess and size of registers. Leave uncommented to get platform neutral [slower] code + * + * Note: in order to use the optimized macros your platform must support unaligned 32 and 64 bit read/writes. + * The x86 platforms allow this but some others [ARM for instance] do not. On those platforms you **MUST** + * use the portable [slower] macros. + */ +/* detect x86/i386 32bit */ +#if defined(__i386__) || defined(__i386) || defined(_M_IX86) + #define ENDIAN_LITTLE + #define ENDIAN_32BITWORD + #define LTC_FAST +#endif + +/* detect amd64/x64 */ +#if defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64) + #define ENDIAN_LITTLE + #define ENDIAN_64BITWORD + #define LTC_FAST +#endif + +/* detect PPC32 */ +#if defined(LTC_PPC32) + #define ENDIAN_BIG + #define ENDIAN_32BITWORD + #define LTC_FAST +#endif + +/* detects MIPS R5900 processors (PS2) */ +#if (defined(__R5900) || defined(R5900) || defined(__R5900__)) && (defined(_mips) || defined(__mips__) || defined(mips)) + #define ENDIAN_64BITWORD + #if defined(_MIPSEB) || defined(__MIPSEB) || defined(__MIPSEB__) + #define ENDIAN_BIG + #endif + #define ENDIAN_LITTLE + #endif +#endif + +/* detect AIX */ +#if defined(_AIX) && defined(_BIG_ENDIAN) + #define ENDIAN_BIG + #if defined(__LP64__) || defined(_ARCH_PPC64) + #define ENDIAN_64BITWORD + #else + #define ENDIAN_32BITWORD + #endif +#endif + +/* detect HP-UX */ +#if defined(__hpux) || defined(__hpux__) + #define ENDIAN_BIG + #if defined(__ia64) || defined(__ia64__) || defined(__LP64__) + #define ENDIAN_64BITWORD + #else + #define ENDIAN_32BITWORD + #endif +#endif + +/* detect Apple OS X */ +#if defined(__APPLE__) && defined(__MACH__) + #if defined(__LITTLE_ENDIAN__) || defined(__x86_64__) + #define ENDIAN_LITTLE + #else + #define ENDIAN_BIG + #endif + #if defined(__LP64__) || defined(__x86_64__) + #define ENDIAN_64BITWORD + #else + #define ENDIAN_32BITWORD + #endif +#endif + +/* detect SPARC and SPARC64 */ +#if defined(__sparc__) || defined(__sparc) + #define ENDIAN_BIG + #if defined(__arch64__) || defined(__sparcv9) || defined(__sparc_v9__) + #define ENDIAN_64BITWORD + #else + #define ENDIAN_32BITWORD + #endif +#endif + +/* detect IBM S390(x) */ +#if defined(__s390x__) || defined(__s390__) + #define ENDIAN_BIG + #if defined(__s390x__) + #define ENDIAN_64BITWORD + #else + #define ENDIAN_32BITWORD + #endif +#endif + +/* detect PPC64 */ +#if defined(__powerpc64__) || defined(__ppc64__) || defined(__PPC64__) + #define ENDIAN_64BITWORD + #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ + #define ENDIAN_BIG + #elif __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ + #define ENDIAN_LITTLE + #endif + #define LTC_FAST +#endif + +/* endianness fallback */ +#if !defined(ENDIAN_BIG) && !defined(ENDIAN_LITTLE) + #if defined(_BYTE_ORDER) && _BYTE_ORDER == _BIG_ENDIAN || \ + defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN || \ + defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ || \ + defined(__BIG_ENDIAN__) || \ + defined(__ARMEB__) || defined(__THUMBEB__) || defined(__AARCH64EB__) || \ + defined(_MIPSEB) || defined(__MIPSEB) || defined(__MIPSEB__) + #define ENDIAN_BIG + #elif defined(_BYTE_ORDER) && _BYTE_ORDER == _LITTLE_ENDIAN || \ + defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN || \ + defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ || \ + defined(__LITTLE_ENDIAN__) || \ + defined(__ARMEL__) || defined(__THUMBEL__) || defined(__AARCH64EL__) || \ + defined(_MIPSEL) || defined(__MIPSEL) || defined(__MIPSEL__) + #define ENDIAN_LITTLE + #else + #error Cannot detect endianness + #endif +#endif + +/* ulong64: 64-bit data type */ +#ifdef _MSC_VER + #define CONST64(n) n ## ui64 + typedef unsigned __int64 ulong64; +#else + #define CONST64(n) n ## ULL + typedef unsigned long long ulong64; +#endif + +/* ulong32: "32-bit at least" data type */ +#if defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64) || \ + defined(__powerpc64__) || defined(__ppc64__) || defined(__PPC64__) || \ + defined(__s390x__) || defined(__arch64__) || defined(__aarch64__) || \ + defined(__sparcv9) || defined(__sparc_v9__) || defined(__sparc64__) || \ + defined(__ia64) || defined(__ia64__) || defined(__itanium__) || defined(_M_IA64) || \ + defined(__LP64__) || defined(_LP64) || defined(__64BIT__) + typedef unsigned ulong32; + #if !defined(ENDIAN_64BITWORD) && !defined(ENDIAN_32BITWORD) + #define ENDIAN_64BITWORD + #endif +#else + typedef unsigned long ulong32; + #if !defined(ENDIAN_64BITWORD) && !defined(ENDIAN_32BITWORD) + #define ENDIAN_32BITWORD + #endif +#endif + +#if defined(ENDIAN_64BITWORD) && !defined(_MSC_VER) +typedef unsigned long long ltc_mp_digit; +#else +typedef unsigned long ltc_mp_digit; +#endif + +/* No asm is a quick way to disable anything "not portable" */ +#ifdef LTC_NO_ASM + #define ENDIAN_NEUTRAL + #undef ENDIAN_32BITWORD + #undef ENDIAN_64BITWORD + #undef LTC_FAST + #define LTC_NO_ROLC + #define LTC_NO_BSWAP +#endif + +/* No LTC_FAST if: explicitly disabled OR non-gcc/non-clang compiler OR old gcc OR using -ansi -std=c99 */ +#if defined(LTC_NO_FAST) || (__GNUC__ < 4) || defined(__STRICT_ANSI__) + #undef LTC_FAST +#endif + +#ifdef LTC_FAST + #define LTC_FAST_TYPE_PTR_CAST(x) ((LTC_FAST_TYPE*)(void*)(x)) + #ifdef ENDIAN_64BITWORD + typedef ulong64 __attribute__((__may_alias__)) LTC_FAST_TYPE; + #else + typedef ulong32 __attribute__((__may_alias__)) LTC_FAST_TYPE; + #endif +#endif + +#if !defined(ENDIAN_NEUTRAL) && (defined(ENDIAN_BIG) || defined(ENDIAN_LITTLE)) && !(defined(ENDIAN_32BITWORD) || defined(ENDIAN_64BITWORD)) + #error You must specify a word size as well as endianess in tomcrypt_cfg.h +#endif + +#if !(defined(ENDIAN_BIG) || defined(ENDIAN_LITTLE)) + #define ENDIAN_NEUTRAL +#endif + +#if (defined(ENDIAN_32BITWORD) && defined(ENDIAN_64BITWORD)) + #error Cannot be 32 and 64 bit words... +#endif + +/* gcc 4.3 and up has a bswap builtin; detect it by gcc version. + * clang also supports the bswap builtin, and although clang pretends + * to be gcc (macro-wise, anyway), clang pretends to be a version + * prior to gcc 4.3, so we can't detect bswap that way. Instead, + * clang has a __has_builtin mechanism that can be used to check + * for builtins: + * http://clang.llvm.org/docs/LanguageExtensions.html#feature_check */ +#ifndef __has_builtin + #define __has_builtin(x) 0 +#endif +#if !defined(LTC_NO_BSWAP) && defined(__GNUC__) && \ + ((__GNUC__ * 100 + __GNUC_MINOR__ >= 403) || \ + (__has_builtin(__builtin_bswap32) && __has_builtin(__builtin_bswap64))) + #define LTC_HAVE_BSWAP_BUILTIN +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/headers/tomcrypt_cipher.h b/fsbl/lib/libtomcrypt/src/headers/tomcrypt_cipher.h new file mode 100644 index 000000000..2ed201df4 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/headers/tomcrypt_cipher.h @@ -0,0 +1,1008 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* ---- SYMMETRIC KEY STUFF ----- + * + * We put each of the ciphers scheduled keys in their own structs then we put all of + * the key formats in one union. This makes the function prototypes easier to use. + */ +#ifdef LTC_BLOWFISH +struct blowfish_key { + ulong32 S[4][256]; + ulong32 K[18]; +}; +#endif + +#ifdef LTC_RC5 +struct rc5_key { + int rounds; + ulong32 K[50]; +}; +#endif + +#ifdef LTC_RC6 +struct rc6_key { + ulong32 K[44]; +}; +#endif + +#ifdef LTC_SAFERP +struct saferp_key { + unsigned char K[33][16]; + long rounds; +}; +#endif + +#ifdef LTC_RIJNDAEL +struct rijndael_key { + ulong32 eK[60], dK[60]; + int Nr; +}; +#endif + +#ifdef LTC_KSEED +struct kseed_key { + ulong32 K[32], dK[32]; +}; +#endif + +#ifdef LTC_KASUMI +struct kasumi_key { + ulong32 KLi1[8], KLi2[8], + KOi1[8], KOi2[8], KOi3[8], + KIi1[8], KIi2[8], KIi3[8]; +}; +#endif + +#ifdef LTC_XTEA +struct xtea_key { + unsigned long A[32], B[32]; +}; +#endif + +#ifdef LTC_TWOFISH +#ifndef LTC_TWOFISH_SMALL + struct twofish_key { + ulong32 S[4][256], K[40]; + }; +#else + struct twofish_key { + ulong32 K[40]; + unsigned char S[32], start; + }; +#endif +#endif + +#ifdef LTC_SAFER +#define LTC_SAFER_K64_DEFAULT_NOF_ROUNDS 6 +#define LTC_SAFER_K128_DEFAULT_NOF_ROUNDS 10 +#define LTC_SAFER_SK64_DEFAULT_NOF_ROUNDS 8 +#define LTC_SAFER_SK128_DEFAULT_NOF_ROUNDS 10 +#define LTC_SAFER_MAX_NOF_ROUNDS 13 +#define LTC_SAFER_BLOCK_LEN 8 +#define LTC_SAFER_KEY_LEN (1 + LTC_SAFER_BLOCK_LEN * (1 + 2 * LTC_SAFER_MAX_NOF_ROUNDS)) +typedef unsigned char safer_block_t[LTC_SAFER_BLOCK_LEN]; +typedef unsigned char safer_key_t[LTC_SAFER_KEY_LEN]; +struct safer_key { safer_key_t key; }; +#endif + +#ifdef LTC_RC2 +struct rc2_key { unsigned xkey[64]; }; +#endif + +#ifdef LTC_DES +struct des_key { + ulong32 ek[32], dk[32]; +}; + +struct des3_key { + ulong32 ek[3][32], dk[3][32]; +}; +#endif + +#ifdef LTC_CAST5 +struct cast5_key { + ulong32 K[32], keylen; +}; +#endif + +#ifdef LTC_NOEKEON +struct noekeon_key { + ulong32 K[4], dK[4]; +}; +#endif + +#ifdef LTC_SKIPJACK +struct skipjack_key { + unsigned char key[10]; +}; +#endif + +#ifdef LTC_KHAZAD +struct khazad_key { + ulong64 roundKeyEnc[8 + 1]; + ulong64 roundKeyDec[8 + 1]; +}; +#endif + +#ifdef LTC_ANUBIS +struct anubis_key { + int keyBits; + int R; + ulong32 roundKeyEnc[18 + 1][4]; + ulong32 roundKeyDec[18 + 1][4]; +}; +#endif + +#ifdef LTC_MULTI2 +struct multi2_key { + int N; + ulong32 uk[8]; +}; +#endif + +#ifdef LTC_CAMELLIA +struct camellia_key { + int R; + ulong64 kw[4], k[24], kl[6]; +}; +#endif + +typedef union Symmetric_key { +#ifdef LTC_DES + struct des_key des; + struct des3_key des3; +#endif +#ifdef LTC_RC2 + struct rc2_key rc2; +#endif +#ifdef LTC_SAFER + struct safer_key safer; +#endif +#ifdef LTC_TWOFISH + struct twofish_key twofish; +#endif +#ifdef LTC_BLOWFISH + struct blowfish_key blowfish; +#endif +#ifdef LTC_RC5 + struct rc5_key rc5; +#endif +#ifdef LTC_RC6 + struct rc6_key rc6; +#endif +#ifdef LTC_SAFERP + struct saferp_key saferp; +#endif +#ifdef LTC_RIJNDAEL + struct rijndael_key rijndael; +#endif +#ifdef LTC_XTEA + struct xtea_key xtea; +#endif +#ifdef LTC_CAST5 + struct cast5_key cast5; +#endif +#ifdef LTC_NOEKEON + struct noekeon_key noekeon; +#endif +#ifdef LTC_SKIPJACK + struct skipjack_key skipjack; +#endif +#ifdef LTC_KHAZAD + struct khazad_key khazad; +#endif +#ifdef LTC_ANUBIS + struct anubis_key anubis; +#endif +#ifdef LTC_KSEED + struct kseed_key kseed; +#endif +#ifdef LTC_KASUMI + struct kasumi_key kasumi; +#endif +#ifdef LTC_MULTI2 + struct multi2_key multi2; +#endif +#ifdef LTC_CAMELLIA + struct camellia_key camellia; +#endif + void *data; +} symmetric_key; + +#ifdef LTC_ECB_MODE +/** A block cipher ECB structure */ +typedef struct { + /** The index of the cipher chosen */ + int cipher, + /** The block size of the given cipher */ + blocklen; + /** The scheduled key */ + symmetric_key key; +} symmetric_ECB; +#endif + +#ifdef LTC_CFB_MODE +/** A block cipher CFB structure */ +typedef struct { + /** The index of the cipher chosen */ + int cipher, + /** The block size of the given cipher */ + blocklen, + /** The padding offset */ + padlen; + /** The current IV */ + unsigned char IV[MAXBLOCKSIZE], + /** The pad used to encrypt/decrypt */ + pad[MAXBLOCKSIZE]; + /** The scheduled key */ + symmetric_key key; +} symmetric_CFB; +#endif + +#ifdef LTC_OFB_MODE +/** A block cipher OFB structure */ +typedef struct { + /** The index of the cipher chosen */ + int cipher, + /** The block size of the given cipher */ + blocklen, + /** The padding offset */ + padlen; + /** The current IV */ + unsigned char IV[MAXBLOCKSIZE]; + /** The scheduled key */ + symmetric_key key; +} symmetric_OFB; +#endif + +#ifdef LTC_CBC_MODE +/** A block cipher CBC structure */ +typedef struct { + /** The index of the cipher chosen */ + int cipher, + /** The block size of the given cipher */ + blocklen; + /** The current IV */ + unsigned char IV[MAXBLOCKSIZE]; + /** The scheduled key */ + symmetric_key key; +} symmetric_CBC; +#endif + + +#ifdef LTC_CTR_MODE +/** A block cipher CTR structure */ +typedef struct { + /** The index of the cipher chosen */ + int cipher, + /** The block size of the given cipher */ + blocklen, + /** The padding offset */ + padlen, + /** The mode (endianess) of the CTR, 0==little, 1==big */ + mode, + /** counter width */ + ctrlen; + + /** The counter */ + unsigned char ctr[MAXBLOCKSIZE], + /** The pad used to encrypt/decrypt */ + pad[MAXBLOCKSIZE]; + /** The scheduled key */ + symmetric_key key; +} symmetric_CTR; +#endif + + +#ifdef LTC_LRW_MODE +/** A LRW structure */ +typedef struct { + /** The index of the cipher chosen (must be a 128-bit block cipher) */ + int cipher; + + /** The current IV */ + unsigned char IV[16], + + /** the tweak key */ + tweak[16], + + /** The current pad, it's the product of the first 15 bytes against the tweak key */ + pad[16]; + + /** The scheduled symmetric key */ + symmetric_key key; + +#ifdef LTC_LRW_TABLES + /** The pre-computed multiplication table */ + unsigned char PC[16][256][16]; +#endif +} symmetric_LRW; +#endif + +#ifdef LTC_F8_MODE +/** A block cipher F8 structure */ +typedef struct { + /** The index of the cipher chosen */ + int cipher, + /** The block size of the given cipher */ + blocklen, + /** The padding offset */ + padlen; + /** The current IV */ + unsigned char IV[MAXBLOCKSIZE], + MIV[MAXBLOCKSIZE]; + /** Current block count */ + ulong32 blockcnt; + /** The scheduled key */ + symmetric_key key; +} symmetric_F8; +#endif + + +/** cipher descriptor table, last entry has "name == NULL" to mark the end of table */ +extern struct ltc_cipher_descriptor { + /** name of cipher */ + const char *name; + /** internal ID */ + unsigned char ID; + /** min keysize (octets) */ + int min_key_length, + /** max keysize (octets) */ + max_key_length, + /** block size (octets) */ + block_length, + /** default number of rounds */ + default_rounds; + /** Setup the cipher + @param key The input symmetric key + @param keylen The length of the input key (octets) + @param num_rounds The requested number of rounds (0==default) + @param skey [out] The destination of the scheduled key + @return CRYPT_OK if successful + */ + int (*setup)(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); + /** Encrypt a block + @param pt The plaintext + @param ct [out] The ciphertext + @param skey The scheduled key + @return CRYPT_OK if successful + */ + int (*ecb_encrypt)(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); + /** Decrypt a block + @param ct The ciphertext + @param pt [out] The plaintext + @param skey The scheduled key + @return CRYPT_OK if successful + */ + int (*ecb_decrypt)(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); + /** Test the block cipher + @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled + */ + int (*test)(void); + + /** Terminate the context + @param skey The scheduled key + */ + void (*done)(symmetric_key *skey); + + /** Determine a key size + @param keysize [in/out] The size of the key desired and the suggested size + @return CRYPT_OK if successful + */ + int (*keysize)(int *keysize); + +/** Accelerators **/ + /** Accelerated ECB encryption + @param pt Plaintext + @param ct Ciphertext + @param blocks The number of complete blocks to process + @param skey The scheduled key context + @return CRYPT_OK if successful + */ + int (*accel_ecb_encrypt)(const unsigned char *pt, unsigned char *ct, unsigned long blocks, symmetric_key *skey); + + /** Accelerated ECB decryption + @param pt Plaintext + @param ct Ciphertext + @param blocks The number of complete blocks to process + @param skey The scheduled key context + @return CRYPT_OK if successful + */ + int (*accel_ecb_decrypt)(const unsigned char *ct, unsigned char *pt, unsigned long blocks, symmetric_key *skey); + + /** Accelerated CBC encryption + @param pt Plaintext + @param ct Ciphertext + @param blocks The number of complete blocks to process + @param IV The initial value (input/output) + @param skey The scheduled key context + @return CRYPT_OK if successful + */ + int (*accel_cbc_encrypt)(const unsigned char *pt, unsigned char *ct, unsigned long blocks, unsigned char *IV, symmetric_key *skey); + + /** Accelerated CBC decryption + @param pt Plaintext + @param ct Ciphertext + @param blocks The number of complete blocks to process + @param IV The initial value (input/output) + @param skey The scheduled key context + @return CRYPT_OK if successful + */ + int (*accel_cbc_decrypt)(const unsigned char *ct, unsigned char *pt, unsigned long blocks, unsigned char *IV, symmetric_key *skey); + + /** Accelerated CTR encryption + @param pt Plaintext + @param ct Ciphertext + @param blocks The number of complete blocks to process + @param IV The initial value (input/output) + @param mode little or big endian counter (mode=0 or mode=1) + @param skey The scheduled key context + @return CRYPT_OK if successful + */ + int (*accel_ctr_encrypt)(const unsigned char *pt, unsigned char *ct, unsigned long blocks, unsigned char *IV, int mode, symmetric_key *skey); + + /** Accelerated LRW + @param pt Plaintext + @param ct Ciphertext + @param blocks The number of complete blocks to process + @param IV The initial value (input/output) + @param tweak The LRW tweak + @param skey The scheduled key context + @return CRYPT_OK if successful + */ + int (*accel_lrw_encrypt)(const unsigned char *pt, unsigned char *ct, unsigned long blocks, unsigned char *IV, const unsigned char *tweak, symmetric_key *skey); + + /** Accelerated LRW + @param ct Ciphertext + @param pt Plaintext + @param blocks The number of complete blocks to process + @param IV The initial value (input/output) + @param tweak The LRW tweak + @param skey The scheduled key context + @return CRYPT_OK if successful + */ + int (*accel_lrw_decrypt)(const unsigned char *ct, unsigned char *pt, unsigned long blocks, unsigned char *IV, const unsigned char *tweak, symmetric_key *skey); + + /** Accelerated CCM packet (one-shot) + @param key The secret key to use + @param keylen The length of the secret key (octets) + @param uskey A previously scheduled key [optional can be NULL] + @param nonce The session nonce [use once] + @param noncelen The length of the nonce + @param header The header for the session + @param headerlen The length of the header (octets) + @param pt [out] The plaintext + @param ptlen The length of the plaintext (octets) + @param ct [out] The ciphertext + @param tag [out] The destination tag + @param taglen [in/out] The max size and resulting size of the authentication tag + @param direction Encrypt or Decrypt direction (0 or 1) + @return CRYPT_OK if successful + */ + int (*accel_ccm_memory)( + const unsigned char *key, unsigned long keylen, + symmetric_key *uskey, + const unsigned char *nonce, unsigned long noncelen, + const unsigned char *header, unsigned long headerlen, + unsigned char *pt, unsigned long ptlen, + unsigned char *ct, + unsigned char *tag, unsigned long *taglen, + int direction); + + /** Accelerated GCM packet (one shot) + @param key The secret key + @param keylen The length of the secret key + @param IV The initialization vector + @param IVlen The length of the initialization vector + @param adata The additional authentication data (header) + @param adatalen The length of the adata + @param pt The plaintext + @param ptlen The length of the plaintext (ciphertext length is the same) + @param ct The ciphertext + @param tag [out] The MAC tag + @param taglen [in/out] The MAC tag length + @param direction Encrypt or Decrypt mode (GCM_ENCRYPT or GCM_DECRYPT) + @return CRYPT_OK on success + */ + int (*accel_gcm_memory)( + const unsigned char *key, unsigned long keylen, + const unsigned char *IV, unsigned long IVlen, + const unsigned char *adata, unsigned long adatalen, + unsigned char *pt, unsigned long ptlen, + unsigned char *ct, + unsigned char *tag, unsigned long *taglen, + int direction); + + /** Accelerated one shot LTC_OMAC + @param key The secret key + @param keylen The key length (octets) + @param in The message + @param inlen Length of message (octets) + @param out [out] Destination for tag + @param outlen [in/out] Initial and final size of out + @return CRYPT_OK on success + */ + int (*omac_memory)( + const unsigned char *key, unsigned long keylen, + const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); + + /** Accelerated one shot XCBC + @param key The secret key + @param keylen The key length (octets) + @param in The message + @param inlen Length of message (octets) + @param out [out] Destination for tag + @param outlen [in/out] Initial and final size of out + @return CRYPT_OK on success + */ + int (*xcbc_memory)( + const unsigned char *key, unsigned long keylen, + const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); + + /** Accelerated one shot F9 + @param key The secret key + @param keylen The key length (octets) + @param in The message + @param inlen Length of message (octets) + @param out [out] Destination for tag + @param outlen [in/out] Initial and final size of out + @return CRYPT_OK on success + @remark Requires manual padding + */ + int (*f9_memory)( + const unsigned char *key, unsigned long keylen, + const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); + + /** Accelerated XTS encryption + @param pt Plaintext + @param ct Ciphertext + @param blocks The number of complete blocks to process + @param tweak The 128-bit encryption tweak (input/output). + The tweak should not be encrypted on input, but + next tweak will be copied encrypted on output. + @param skey1 The first scheduled key context + @param skey2 The second scheduled key context + @return CRYPT_OK if successful + */ + int (*accel_xts_encrypt)(const unsigned char *pt, unsigned char *ct, + unsigned long blocks, unsigned char *tweak, symmetric_key *skey1, + symmetric_key *skey2); + + /** Accelerated XTS decryption + @param ct Ciphertext + @param pt Plaintext + @param blocks The number of complete blocks to process + @param tweak The 128-bit encryption tweak (input/output). + The tweak should not be encrypted on input, but + next tweak will be copied encrypted on output. + @param skey1 The first scheduled key context + @param skey2 The second scheduled key context + @return CRYPT_OK if successful + */ + int (*accel_xts_decrypt)(const unsigned char *ct, unsigned char *pt, + unsigned long blocks, unsigned char *tweak, symmetric_key *skey1, + symmetric_key *skey2); +} cipher_descriptor[]; + +#ifdef LTC_BLOWFISH +int blowfish_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +int blowfish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); +int blowfish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); +int blowfish_test(void); +void blowfish_done(symmetric_key *skey); +int blowfish_keysize(int *keysize); +extern const struct ltc_cipher_descriptor blowfish_desc; +#endif + +#ifdef LTC_RC5 +int rc5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +int rc5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); +int rc5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); +int rc5_test(void); +void rc5_done(symmetric_key *skey); +int rc5_keysize(int *keysize); +extern const struct ltc_cipher_descriptor rc5_desc; +#endif + +#ifdef LTC_RC6 +int rc6_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +int rc6_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); +int rc6_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); +int rc6_test(void); +void rc6_done(symmetric_key *skey); +int rc6_keysize(int *keysize); +extern const struct ltc_cipher_descriptor rc6_desc; +#endif + +#ifdef LTC_RC2 +int rc2_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +int rc2_setup_ex(const unsigned char *key, int keylen, int bits, int num_rounds, symmetric_key *skey); +int rc2_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); +int rc2_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); +int rc2_test(void); +void rc2_done(symmetric_key *skey); +int rc2_keysize(int *keysize); +extern const struct ltc_cipher_descriptor rc2_desc; +#endif + +#ifdef LTC_SAFERP +int saferp_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +int saferp_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); +int saferp_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); +int saferp_test(void); +void saferp_done(symmetric_key *skey); +int saferp_keysize(int *keysize); +extern const struct ltc_cipher_descriptor saferp_desc; +#endif + +#ifdef LTC_SAFER +int safer_k64_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +int safer_sk64_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +int safer_k128_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +int safer_sk128_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +int safer_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); +int safer_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); +int safer_k64_test(void); +int safer_sk64_test(void); +int safer_sk128_test(void); +void safer_done(symmetric_key *skey); +int safer_64_keysize(int *keysize); +int safer_128_keysize(int *keysize); +extern const struct ltc_cipher_descriptor safer_k64_desc, safer_k128_desc, safer_sk64_desc, safer_sk128_desc; +#endif + +#ifdef LTC_RIJNDAEL + +/* make aes an alias */ +#define aes_setup rijndael_setup +#define aes_ecb_encrypt rijndael_ecb_encrypt +#define aes_ecb_decrypt rijndael_ecb_decrypt +#define aes_test rijndael_test +#define aes_done rijndael_done +#define aes_keysize rijndael_keysize + +#define aes_enc_setup rijndael_enc_setup +#define aes_enc_ecb_encrypt rijndael_enc_ecb_encrypt +#define aes_enc_keysize rijndael_enc_keysize + +int rijndael_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +int rijndael_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); +int rijndael_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); +int rijndael_test(void); +void rijndael_done(symmetric_key *skey); +int rijndael_keysize(int *keysize); +int rijndael_enc_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +int rijndael_enc_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); +void rijndael_enc_done(symmetric_key *skey); +int rijndael_enc_keysize(int *keysize); +extern const struct ltc_cipher_descriptor rijndael_desc, aes_desc; +extern const struct ltc_cipher_descriptor rijndael_enc_desc, aes_enc_desc; +#endif + +#ifdef LTC_XTEA +int xtea_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +int xtea_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); +int xtea_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); +int xtea_test(void); +void xtea_done(symmetric_key *skey); +int xtea_keysize(int *keysize); +extern const struct ltc_cipher_descriptor xtea_desc; +#endif + +#ifdef LTC_TWOFISH +int twofish_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +int twofish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); +int twofish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); +int twofish_test(void); +void twofish_done(symmetric_key *skey); +int twofish_keysize(int *keysize); +extern const struct ltc_cipher_descriptor twofish_desc; +#endif + +#ifdef LTC_DES +int des_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +int des_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); +int des_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); +int des_test(void); +void des_done(symmetric_key *skey); +int des_keysize(int *keysize); +int des3_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +int des3_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); +int des3_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); +int des3_test(void); +void des3_done(symmetric_key *skey); +int des3_keysize(int *keysize); +extern const struct ltc_cipher_descriptor des_desc, des3_desc; +#endif + +#ifdef LTC_CAST5 +int cast5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +int cast5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); +int cast5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); +int cast5_test(void); +void cast5_done(symmetric_key *skey); +int cast5_keysize(int *keysize); +extern const struct ltc_cipher_descriptor cast5_desc; +#endif + +#ifdef LTC_NOEKEON +int noekeon_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +int noekeon_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); +int noekeon_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); +int noekeon_test(void); +void noekeon_done(symmetric_key *skey); +int noekeon_keysize(int *keysize); +extern const struct ltc_cipher_descriptor noekeon_desc; +#endif + +#ifdef LTC_SKIPJACK +int skipjack_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +int skipjack_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); +int skipjack_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); +int skipjack_test(void); +void skipjack_done(symmetric_key *skey); +int skipjack_keysize(int *keysize); +extern const struct ltc_cipher_descriptor skipjack_desc; +#endif + +#ifdef LTC_KHAZAD +int khazad_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +int khazad_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); +int khazad_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); +int khazad_test(void); +void khazad_done(symmetric_key *skey); +int khazad_keysize(int *keysize); +extern const struct ltc_cipher_descriptor khazad_desc; +#endif + +#ifdef LTC_ANUBIS +int anubis_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +int anubis_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); +int anubis_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); +int anubis_test(void); +void anubis_done(symmetric_key *skey); +int anubis_keysize(int *keysize); +extern const struct ltc_cipher_descriptor anubis_desc; +#endif + +#ifdef LTC_KSEED +int kseed_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +int kseed_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); +int kseed_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); +int kseed_test(void); +void kseed_done(symmetric_key *skey); +int kseed_keysize(int *keysize); +extern const struct ltc_cipher_descriptor kseed_desc; +#endif + +#ifdef LTC_KASUMI +int kasumi_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +int kasumi_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); +int kasumi_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); +int kasumi_test(void); +void kasumi_done(symmetric_key *skey); +int kasumi_keysize(int *keysize); +extern const struct ltc_cipher_descriptor kasumi_desc; +#endif + + +#ifdef LTC_MULTI2 +int multi2_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +int multi2_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); +int multi2_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); +int multi2_test(void); +void multi2_done(symmetric_key *skey); +int multi2_keysize(int *keysize); +extern const struct ltc_cipher_descriptor multi2_desc; +#endif + +#ifdef LTC_CAMELLIA +int camellia_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); +int camellia_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *skey); +int camellia_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *skey); +int camellia_test(void); +void camellia_done(symmetric_key *skey); +int camellia_keysize(int *keysize); +extern const struct ltc_cipher_descriptor camellia_desc; +#endif + +#ifdef LTC_ECB_MODE +int ecb_start(int cipher, const unsigned char *key, + int keylen, int num_rounds, symmetric_ECB *ecb); +int ecb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_ECB *ecb); +int ecb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_ECB *ecb); +int ecb_done(symmetric_ECB *ecb); +#endif + +#ifdef LTC_CFB_MODE +int cfb_start(int cipher, const unsigned char *IV, const unsigned char *key, + int keylen, int num_rounds, symmetric_CFB *cfb); +int cfb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CFB *cfb); +int cfb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_CFB *cfb); +int cfb_getiv(unsigned char *IV, unsigned long *len, symmetric_CFB *cfb); +int cfb_setiv(const unsigned char *IV, unsigned long len, symmetric_CFB *cfb); +int cfb_done(symmetric_CFB *cfb); +#endif + +#ifdef LTC_OFB_MODE +int ofb_start(int cipher, const unsigned char *IV, const unsigned char *key, + int keylen, int num_rounds, symmetric_OFB *ofb); +int ofb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_OFB *ofb); +int ofb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_OFB *ofb); +int ofb_getiv(unsigned char *IV, unsigned long *len, symmetric_OFB *ofb); +int ofb_setiv(const unsigned char *IV, unsigned long len, symmetric_OFB *ofb); +int ofb_done(symmetric_OFB *ofb); +#endif + +#ifdef LTC_CBC_MODE +int cbc_start(int cipher, const unsigned char *IV, const unsigned char *key, + int keylen, int num_rounds, symmetric_CBC *cbc); +int cbc_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CBC *cbc); +int cbc_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_CBC *cbc); +int cbc_getiv(unsigned char *IV, unsigned long *len, symmetric_CBC *cbc); +int cbc_setiv(const unsigned char *IV, unsigned long len, symmetric_CBC *cbc); +int cbc_done(symmetric_CBC *cbc); +#endif + +#ifdef LTC_CTR_MODE + +#define CTR_COUNTER_LITTLE_ENDIAN 0x0000 +#define CTR_COUNTER_BIG_ENDIAN 0x1000 +#define LTC_CTR_RFC3686 0x2000 + +int ctr_start( int cipher, + const unsigned char *IV, + const unsigned char *key, int keylen, + int num_rounds, int ctr_mode, + symmetric_CTR *ctr); +int ctr_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CTR *ctr); +int ctr_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_CTR *ctr); +int ctr_getiv(unsigned char *IV, unsigned long *len, symmetric_CTR *ctr); +int ctr_setiv(const unsigned char *IV, unsigned long len, symmetric_CTR *ctr); +int ctr_done(symmetric_CTR *ctr); +int ctr_test(void); +#endif + +#ifdef LTC_LRW_MODE + +#define LRW_ENCRYPT LTC_ENCRYPT +#define LRW_DECRYPT LTC_DECRYPT + +int lrw_start( int cipher, + const unsigned char *IV, + const unsigned char *key, int keylen, + const unsigned char *tweak, + int num_rounds, + symmetric_LRW *lrw); +int lrw_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_LRW *lrw); +int lrw_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_LRW *lrw); +int lrw_getiv(unsigned char *IV, unsigned long *len, symmetric_LRW *lrw); +int lrw_setiv(const unsigned char *IV, unsigned long len, symmetric_LRW *lrw); +int lrw_done(symmetric_LRW *lrw); +int lrw_test(void); + +/* don't call */ +int lrw_process(const unsigned char *pt, unsigned char *ct, unsigned long len, int mode, symmetric_LRW *lrw); +#endif + +#ifdef LTC_F8_MODE +int f8_start( int cipher, const unsigned char *IV, + const unsigned char *key, int keylen, + const unsigned char *salt_key, int skeylen, + int num_rounds, symmetric_F8 *f8); +int f8_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_F8 *f8); +int f8_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_F8 *f8); +int f8_getiv(unsigned char *IV, unsigned long *len, symmetric_F8 *f8); +int f8_setiv(const unsigned char *IV, unsigned long len, symmetric_F8 *f8); +int f8_done(symmetric_F8 *f8); +int f8_test_mode(void); +#endif + +#ifdef LTC_XTS_MODE +typedef struct { + symmetric_key key1, key2; + int cipher; +} symmetric_xts; + +int xts_start( int cipher, + const unsigned char *key1, + const unsigned char *key2, + unsigned long keylen, + int num_rounds, + symmetric_xts *xts); + +int xts_encrypt( + const unsigned char *pt, unsigned long ptlen, + unsigned char *ct, + unsigned char *tweak, + symmetric_xts *xts); +int xts_decrypt( + const unsigned char *ct, unsigned long ptlen, + unsigned char *pt, + unsigned char *tweak, + symmetric_xts *xts); + +void xts_done(symmetric_xts *xts); +int xts_test(void); +void xts_mult_x(unsigned char *I); +#endif + +int find_cipher(const char *name); +int find_cipher_any(const char *name, int blocklen, int keylen); +int find_cipher_id(unsigned char ID); +int register_cipher(const struct ltc_cipher_descriptor *cipher); +int unregister_cipher(const struct ltc_cipher_descriptor *cipher); +int register_all_ciphers(void); +int cipher_is_valid(int idx); + +LTC_MUTEX_PROTO(ltc_cipher_mutex) + +/* ---- stream ciphers ---- */ + +#ifdef LTC_CHACHA + +typedef struct { + ulong32 input[16]; + unsigned char kstream[64]; + unsigned long ksleft; + unsigned long ivlen; + int rounds; +} chacha_state; + +int chacha_setup(chacha_state *st, const unsigned char *key, unsigned long keylen, int rounds); +int chacha_ivctr32(chacha_state *st, const unsigned char *iv, unsigned long ivlen, ulong32 counter); +int chacha_ivctr64(chacha_state *st, const unsigned char *iv, unsigned long ivlen, ulong64 counter); +int chacha_crypt(chacha_state *st, const unsigned char *in, unsigned long inlen, unsigned char *out); +int chacha_keystream(chacha_state *st, unsigned char *out, unsigned long outlen); +int chacha_done(chacha_state *st); +int chacha_test(void); + +#endif /* LTC_CHACHA */ + +#ifdef LTC_RC4_STREAM + +typedef struct { + unsigned int x, y; + unsigned char buf[256]; +} rc4_state; + +int rc4_stream_setup(rc4_state *st, const unsigned char *key, unsigned long keylen); +int rc4_stream_crypt(rc4_state *st, const unsigned char *in, unsigned long inlen, unsigned char *out); +int rc4_stream_keystream(rc4_state *st, unsigned char *out, unsigned long outlen); +int rc4_stream_done(rc4_state *st); +int rc4_stream_test(void); + +#endif /* LTC_RC4_STREAM */ + +#ifdef LTC_SOBER128_STREAM + +typedef struct { + ulong32 R[17], /* Working storage for the shift register */ + initR[17], /* saved register contents */ + konst, /* key dependent constant */ + sbuf; /* partial word encryption buffer */ + int nbuf; /* number of part-word stream bits buffered */ +} sober128_state; + +int sober128_stream_setup(sober128_state *st, const unsigned char *key, unsigned long keylen); +int sober128_stream_setiv(sober128_state *st, const unsigned char *iv, unsigned long ivlen); +int sober128_stream_crypt(sober128_state *st, const unsigned char *in, unsigned long inlen, unsigned char *out); +int sober128_stream_keystream(sober128_state *st, unsigned char *out, unsigned long outlen); +int sober128_stream_done(sober128_state *st); +int sober128_stream_test(void); + +#endif /* LTC_SOBER128_STREAM */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/headers/tomcrypt_custom.h b/fsbl/lib/libtomcrypt/src/headers/tomcrypt_custom.h new file mode 100644 index 000000000..2d5cfec8e --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/headers/tomcrypt_custom.h @@ -0,0 +1,590 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#ifndef TOMCRYPT_CUSTOM_H_ +#define TOMCRYPT_CUSTOM_H_ + +/* macros for various libc functions you can change for embedded targets */ +#ifndef XMALLOC +#define XMALLOC malloc +#endif +#ifndef XREALLOC +#define XREALLOC realloc +#endif +#ifndef XCALLOC +#define XCALLOC calloc +#endif +#ifndef XFREE +#define XFREE free +#endif + +#ifndef XMEMSET +#define XMEMSET memset +#endif +#ifndef XMEMCPY +#define XMEMCPY memcpy +#endif +#ifndef XMEMMOVE +#define XMEMMOVE memmove +#endif +#ifndef XMEMCMP +#define XMEMCMP memcmp +#endif +/* A memory compare function that has to run in constant time, + * c.f. mem_neq() API summary. + */ +#ifndef XMEM_NEQ +#define XMEM_NEQ mem_neq +#endif +#ifndef XSTRCMP +#define XSTRCMP strcmp +#endif + +#ifndef XCLOCK +#define XCLOCK clock +#endif + +#ifndef XQSORT +#define XQSORT qsort +#endif + +#if ( defined(malloc) || defined(realloc) || defined(calloc) || defined(free) || \ + defined(memset) || defined(memcpy) || defined(memcmp) || defined(strcmp) || \ + defined(clock) || defined(qsort) ) && !defined(LTC_NO_PROTOTYPES) +#define LTC_NO_PROTOTYPES +#endif + +/* shortcut to disable automatic inclusion */ +#if defined LTC_NOTHING && !defined LTC_EASY + #define LTC_NO_CIPHERS + #define LTC_NO_MODES + #define LTC_NO_HASHES + #define LTC_NO_MACS + #define LTC_NO_PRNGS + #define LTC_NO_PK + #define LTC_NO_PKCS + #define LTC_NO_MISC +#endif /* LTC_NOTHING */ + +/* Easy button? */ +#ifdef LTC_EASY + #define LTC_NO_CIPHERS + #define LTC_RIJNDAEL + #define LTC_BLOWFISH + #define LTC_DES + #define LTC_CAST5 + + #define LTC_NO_MODES + #define LTC_ECB_MODE + #define LTC_CBC_MODE + #define LTC_CTR_MODE + + #define LTC_NO_HASHES + #define LTC_SHA1 + #define LTC_SHA3 + #define LTC_SHA512 + #define LTC_SHA384 + #define LTC_SHA256 + #define LTC_SHA224 + #define LTC_HASH_HELPERS + + #define LTC_NO_MACS + #define LTC_HMAC + #define LTC_OMAC + #define LTC_CCM_MODE + + #define LTC_NO_PRNGS + #define LTC_SPRNG + #define LTC_YARROW + #define LTC_DEVRANDOM + #define LTC_TRY_URANDOM_FIRST + #define LTC_RNG_GET_BYTES + #define LTC_RNG_MAKE_PRNG + + #define LTC_NO_PK + #define LTC_MRSA + #define LTC_MECC + + #define LTC_NO_MISC + #define LTC_BASE64 +#endif + +/* The minimal set of functionality to run the tests */ +#ifdef LTC_MINIMAL + #define LTC_RIJNDAEL + #define LTC_SHA256 + #define LTC_YARROW + #define LTC_CTR_MODE + + #define LTC_RNG_MAKE_PRNG + #define LTC_RNG_GET_BYTES + #define LTC_DEVRANDOM + #define LTC_TRY_URANDOM_FIRST + + #undef LTC_NO_FILE +#endif + +/* Enable self-test test vector checking */ +#ifndef LTC_NO_TEST + #define LTC_TEST +#endif +/* Enable extended self-tests */ +/* #define LTC_TEST_EXT */ + +/* Use small code where possible */ +/* #define LTC_SMALL_CODE */ + +/* clean the stack of functions which put private information on stack */ +/* #define LTC_CLEAN_STACK */ + +/* disable all file related functions */ +/* #define LTC_NO_FILE */ + +/* disable all forms of ASM */ +/* #define LTC_NO_ASM */ + +/* disable FAST mode */ +/* #define LTC_NO_FAST */ + +/* disable BSWAP on x86 */ +/* #define LTC_NO_BSWAP */ + +/* ---> math provider? <--- */ +#ifndef LTC_NO_MATH + +/* LibTomMath */ +/* #define LTM_DESC */ + +/* TomsFastMath */ +/* #define TFM_DESC */ + +/* GNU Multiple Precision Arithmetic Library */ +/* #define GMP_DESC */ + +#endif /* LTC_NO_MATH */ + +/* ---> Symmetric Block Ciphers <--- */ +#ifndef LTC_NO_CIPHERS + +#define LTC_BLOWFISH +#define LTC_RC2 +#define LTC_RC5 +#define LTC_RC6 +#define LTC_SAFERP +#define LTC_RIJNDAEL +#define LTC_XTEA +/* _TABLES tells it to use tables during setup, _SMALL means to use the smaller scheduled key format + * (saves 4KB of ram), _ALL_TABLES enables all tables during setup */ +#define LTC_TWOFISH +#ifndef LTC_NO_TABLES + #define LTC_TWOFISH_TABLES + /* #define LTC_TWOFISH_ALL_TABLES */ +#else + #define LTC_TWOFISH_SMALL +#endif +/* #define LTC_TWOFISH_SMALL */ +/* LTC_DES includes EDE triple-DES */ +#define LTC_DES +#define LTC_CAST5 +#define LTC_NOEKEON +#define LTC_SKIPJACK +#define LTC_SAFER +#define LTC_KHAZAD +#define LTC_ANUBIS +#define LTC_ANUBIS_TWEAK +#define LTC_KSEED +#define LTC_KASUMI +#define LTC_MULTI2 +#define LTC_CAMELLIA + +/* stream ciphers */ +#define LTC_CHACHA +#define LTC_RC4_STREAM +#define LTC_SOBER128_STREAM + +#endif /* LTC_NO_CIPHERS */ + + +/* ---> Block Cipher Modes of Operation <--- */ +#ifndef LTC_NO_MODES + +#define LTC_CFB_MODE +#define LTC_OFB_MODE +#define LTC_ECB_MODE +#define LTC_CBC_MODE +#define LTC_CTR_MODE + +/* F8 chaining mode */ +#define LTC_F8_MODE + +/* LRW mode */ +#define LTC_LRW_MODE +#ifndef LTC_NO_TABLES + /* like GCM mode this will enable 16 8x128 tables [64KB] that make + * seeking very fast. + */ + #define LTC_LRW_TABLES +#endif + +/* XTS mode */ +#define LTC_XTS_MODE + +#endif /* LTC_NO_MODES */ + +/* ---> One-Way Hash Functions <--- */ +#ifndef LTC_NO_HASHES + +#define LTC_CHC_HASH +#define LTC_WHIRLPOOL +#define LTC_SHA3 +#define LTC_SHA512 +#define LTC_SHA512_256 +#define LTC_SHA512_224 +#define LTC_SHA384 +#define LTC_SHA256 +#define LTC_SHA224 +#define LTC_TIGER +#define LTC_SHA1 +#define LTC_MD5 +#define LTC_MD4 +#define LTC_MD2 +#define LTC_RIPEMD128 +#define LTC_RIPEMD160 +#define LTC_RIPEMD256 +#define LTC_RIPEMD320 +#define LTC_BLAKE2S +#define LTC_BLAKE2B + +#define LTC_HASH_HELPERS + +#endif /* LTC_NO_HASHES */ + + +/* ---> MAC functions <--- */ +#ifndef LTC_NO_MACS + +#define LTC_HMAC +#define LTC_OMAC +#define LTC_PMAC +#define LTC_XCBC +#define LTC_F9_MODE +#define LTC_PELICAN +#define LTC_POLY1305 +#define LTC_BLAKE2SMAC +#define LTC_BLAKE2BMAC + +/* ---> Encrypt + Authenticate Modes <--- */ + +#define LTC_EAX_MODE + +#define LTC_OCB_MODE +#define LTC_OCB3_MODE +#define LTC_CCM_MODE +#define LTC_GCM_MODE +#define LTC_CHACHA20POLY1305_MODE + +/* Use 64KiB tables */ +#ifndef LTC_NO_TABLES + #define LTC_GCM_TABLES +#endif + +/* USE SSE2? requires GCC works on x86_32 and x86_64*/ +#ifdef LTC_GCM_TABLES +/* #define LTC_GCM_TABLES_SSE2 */ +#endif + +#endif /* LTC_NO_MACS */ + + +/* --> Pseudo Random Number Generators <--- */ +#ifndef LTC_NO_PRNGS + +/* Yarrow */ +#define LTC_YARROW + +/* a PRNG that simply reads from an available system source */ +#define LTC_SPRNG + +/* The RC4 stream cipher based PRNG */ +#define LTC_RC4 + +/* The ChaCha20 stream cipher based PRNG */ +#define LTC_CHACHA20_PRNG + +/* Fortuna PRNG */ +#define LTC_FORTUNA + +/* Greg's SOBER128 stream cipher based PRNG */ +#define LTC_SOBER128 + +/* the *nix style /dev/random device */ +#define LTC_DEVRANDOM +/* try /dev/urandom before trying /dev/random + * are you sure you want to disable this? http://www.2uo.de/myths-about-urandom/ */ +#define LTC_TRY_URANDOM_FIRST +/* rng_get_bytes() */ +#define LTC_RNG_GET_BYTES +/* rng_make_prng() */ +#define LTC_RNG_MAKE_PRNG + +/* enable the ltc_rng hook to integrate e.g. embedded hardware RNG's easily */ +/* #define LTC_PRNG_ENABLE_LTC_RNG */ + +#endif /* LTC_NO_PRNGS */ + +#ifdef LTC_YARROW + +/* which descriptor of AES to use? */ +/* 0 = rijndael_enc 1 = aes_enc, 2 = rijndael [full], 3 = aes [full] */ +#ifdef ENCRYPT_ONLY + #define LTC_YARROW_AES 0 +#else + #define LTC_YARROW_AES 2 +#endif + +#endif + +#ifdef LTC_FORTUNA + +#ifndef LTC_FORTUNA_WD +/* reseed every N calls to the read function */ +#define LTC_FORTUNA_WD 10 +#endif + +#ifndef LTC_FORTUNA_POOLS +/* number of pools (4..32) can save a bit of ram by lowering the count */ +#define LTC_FORTUNA_POOLS 32 +#endif + +#endif /* LTC_FORTUNA */ + + +/* ---> Public Key Crypto <--- */ +#ifndef LTC_NO_PK + +/* Include RSA support */ +#define LTC_MRSA + +/* Include Diffie-Hellman support */ +/* is_prime fails for GMP */ +#define LTC_MDH +/* Supported Key Sizes */ +#define LTC_DH768 +#define LTC_DH1024 +#define LTC_DH1536 +#define LTC_DH2048 + +#ifndef TFM_DESC +/* tfm has a problem in fp_isprime for larger key sizes */ +#define LTC_DH3072 +#define LTC_DH4096 +#define LTC_DH6144 +#define LTC_DH8192 +#endif + +/* Include Katja (a Rabin variant like RSA) */ +/* #define LTC_MKAT */ + +/* Digital Signature Algorithm */ +#define LTC_MDSA + +/* ECC */ +#define LTC_MECC + +/* use Shamir's trick for point mul (speeds up signature verification) */ +#define LTC_ECC_SHAMIR + +#if defined(TFM_DESC) && defined(LTC_MECC) + #define LTC_MECC_ACCEL +#endif + +/* do we want fixed point ECC */ +/* #define LTC_MECC_FP */ + +#endif /* LTC_NO_PK */ + +#if defined(LTC_MRSA) && !defined(LTC_NO_RSA_BLINDING) +/* Enable RSA blinding when doing private key operations by default */ +#define LTC_RSA_BLINDING +#endif /* LTC_NO_RSA_BLINDING */ + +#if defined(LTC_MRSA) && !defined(LTC_NO_RSA_CRT_HARDENING) +/* Enable RSA CRT hardening when doing private key operations by default */ +#define LTC_RSA_CRT_HARDENING +#endif /* LTC_NO_RSA_CRT_HARDENING */ + +#if defined(LTC_MECC) && !defined(LTC_NO_ECC_TIMING_RESISTANT) +/* Enable ECC timing resistant version by default */ +#define LTC_ECC_TIMING_RESISTANT +#endif + +/* PKCS #1 (RSA) and #5 (Password Handling) stuff */ +#ifndef LTC_NO_PKCS + +#define LTC_PKCS_1 +#define LTC_PKCS_5 + +/* Include ASN.1 DER (required by DSA/RSA) */ +#define LTC_DER + +#endif /* LTC_NO_PKCS */ + +/* misc stuff */ +#ifndef LTC_NO_MISC + +/* Various tidbits of modern neatoness */ +#define LTC_BASE64 +/* ... and it's URL safe version */ +#define LTC_BASE64_URL + +/* Keep LTC_NO_HKDF for compatibility reasons + * superseeded by LTC_NO_MISC*/ +#ifndef LTC_NO_HKDF +/* HKDF Key Derivation/Expansion stuff */ +#define LTC_HKDF +#endif /* LTC_NO_HKDF */ + +#define LTC_ADLER32 + +#define LTC_CRC32 + +#endif /* LTC_NO_MISC */ + +/* cleanup */ + +#ifdef LTC_MECC +/* Supported ECC Key Sizes */ +#ifndef LTC_NO_CURVES + #define LTC_ECC112 + #define LTC_ECC128 + #define LTC_ECC160 + #define LTC_ECC192 + #define LTC_ECC224 + #define LTC_ECC256 + #define LTC_ECC384 + #define LTC_ECC521 +#endif +#endif + +#if defined(LTC_DER) + #ifndef LTC_DER_MAX_RECURSION + /* Maximum recursion limit when processing nested ASN.1 types. */ + #define LTC_DER_MAX_RECURSION 30 + #endif +#endif + +#if defined(LTC_MECC) || defined(LTC_MRSA) || defined(LTC_MDSA) || defined(LTC_MKAT) + /* Include the MPI functionality? (required by the PK algorithms) */ + #define LTC_MPI + + #ifndef LTC_PK_MAX_RETRIES + /* iterations limit for retry-loops */ + #define LTC_PK_MAX_RETRIES 20 + #endif +#endif + +#ifdef LTC_MRSA + #define LTC_PKCS_1 +#endif + +#if defined(LTC_PELICAN) && !defined(LTC_RIJNDAEL) + #error Pelican-MAC requires LTC_RIJNDAEL +#endif + +#if defined(LTC_EAX_MODE) && !(defined(LTC_CTR_MODE) && defined(LTC_OMAC)) + #error LTC_EAX_MODE requires CTR and LTC_OMAC mode +#endif + +#if defined(LTC_YARROW) && !defined(LTC_CTR_MODE) + #error LTC_YARROW requires LTC_CTR_MODE chaining mode to be defined! +#endif + +#if defined(LTC_DER) && !defined(LTC_MPI) + #error ASN.1 DER requires MPI functionality +#endif + +#if (defined(LTC_MDSA) || defined(LTC_MRSA) || defined(LTC_MECC) || defined(LTC_MKAT)) && !defined(LTC_DER) + #error PK requires ASN.1 DER functionality, make sure LTC_DER is enabled +#endif + +#if defined(LTC_CHACHA20POLY1305_MODE) && (!defined(LTC_CHACHA) || !defined(LTC_POLY1305)) + #error LTC_CHACHA20POLY1305_MODE requires LTC_CHACHA + LTC_POLY1305 +#endif + +#if defined(LTC_CHACHA20_PRNG) && !defined(LTC_CHACHA) + #error LTC_CHACHA20_PRNG requires LTC_CHACHA +#endif + +#if defined(LTC_RC4) && !defined(LTC_RC4_STREAM) + #error LTC_RC4 requires LTC_RC4_STREAM +#endif + +#if defined(LTC_SOBER128) && !defined(LTC_SOBER128_STREAM) + #error LTC_SOBER128 requires LTC_SOBER128_STREAM +#endif + +#if defined(LTC_BLAKE2SMAC) && !defined(LTC_BLAKE2S) + #error LTC_BLAKE2SMAC requires LTC_BLAKE2S +#endif + +#if defined(LTC_BLAKE2BMAC) && !defined(LTC_BLAKE2B) + #error LTC_BLAKE2BMAC requires LTC_BLAKE2B +#endif + +#if defined(LTC_SPRNG) && !defined(LTC_RNG_GET_BYTES) + #error LTC_SPRNG requires LTC_RNG_GET_BYTES +#endif + +#if defined(LTC_NO_MATH) && (defined(LTM_DESC) || defined(TFM_DESC) || defined(GMP_DESC)) + #error LTC_NO_MATH defined, but also a math descriptor +#endif + +/* THREAD management */ +#ifdef LTC_PTHREAD + +#include + +#define LTC_MUTEX_GLOBAL(x) pthread_mutex_t x = PTHREAD_MUTEX_INITIALIZER; +#define LTC_MUTEX_PROTO(x) extern pthread_mutex_t x; +#define LTC_MUTEX_TYPE(x) pthread_mutex_t x; +#define LTC_MUTEX_INIT(x) LTC_ARGCHK(pthread_mutex_init(x, NULL) == 0); +#define LTC_MUTEX_LOCK(x) LTC_ARGCHK(pthread_mutex_lock(x) == 0); +#define LTC_MUTEX_UNLOCK(x) LTC_ARGCHK(pthread_mutex_unlock(x) == 0); +#define LTC_MUTEX_DESTROY(x) LTC_ARGCHK(pthread_mutex_destroy(x) == 0); + +#else + +/* default no functions */ +#define LTC_MUTEX_GLOBAL(x) +#define LTC_MUTEX_PROTO(x) +#define LTC_MUTEX_TYPE(x) +#define LTC_MUTEX_INIT(x) +#define LTC_MUTEX_LOCK(x) +#define LTC_MUTEX_UNLOCK(x) +#define LTC_MUTEX_DESTROY(x) + +#endif + +/* Debuggers */ + +/* define this if you use Valgrind, note: it CHANGES the way SOBER-128 and RC4 work (see the code) */ +/* #define LTC_VALGRIND */ + +#endif + +#ifndef LTC_NO_FILE + /* buffer size for reading from a file via fread(..) */ + #ifndef LTC_FILE_READ_BUFSIZE + #define LTC_FILE_READ_BUFSIZE 8192 + #endif +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/headers/tomcrypt_hash.h b/fsbl/lib/libtomcrypt/src/headers/tomcrypt_hash.h new file mode 100644 index 000000000..d06ceb1ba --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/headers/tomcrypt_hash.h @@ -0,0 +1,531 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* ---- HASH FUNCTIONS ---- */ +#ifdef LTC_SHA3 +struct sha3_state { + ulong64 saved; /* the portion of the input message that we didn't consume yet */ + ulong64 s[25]; + unsigned char sb[25 * 8]; /* used for storing `ulong64 s[25]` as little-endian bytes */ + unsigned short byte_index; /* 0..7--the next byte after the set one (starts from 0; 0--none are buffered) */ + unsigned short word_index; /* 0..24--the next word to integrate input (starts from 0) */ + unsigned short capacity_words; /* the double size of the hash output in words (e.g. 16 for Keccak 512) */ + unsigned short xof_flag; +}; +#endif + +#ifdef LTC_SHA512 +struct sha512_state { + ulong64 length, state[8]; + unsigned long curlen; + unsigned char buf[128]; +}; +#endif + +#ifdef LTC_SHA256 +struct sha256_state { + ulong64 length; + ulong32 state[8], curlen; + unsigned char buf[64]; +}; +#endif + +#ifdef LTC_SHA1 +struct sha1_state { + ulong64 length; + ulong32 state[5], curlen; + unsigned char buf[64]; +}; +#endif + +#ifdef LTC_MD5 +struct md5_state { + ulong64 length; + ulong32 state[4], curlen; + unsigned char buf[64]; +}; +#endif + +#ifdef LTC_MD4 +struct md4_state { + ulong64 length; + ulong32 state[4], curlen; + unsigned char buf[64]; +}; +#endif + +#ifdef LTC_TIGER +struct tiger_state { + ulong64 state[3], length; + unsigned long curlen; + unsigned char buf[64]; +}; +#endif + +#ifdef LTC_MD2 +struct md2_state { + unsigned char chksum[16], X[48], buf[16]; + unsigned long curlen; +}; +#endif + +#ifdef LTC_RIPEMD128 +struct rmd128_state { + ulong64 length; + unsigned char buf[64]; + ulong32 curlen, state[4]; +}; +#endif + +#ifdef LTC_RIPEMD160 +struct rmd160_state { + ulong64 length; + unsigned char buf[64]; + ulong32 curlen, state[5]; +}; +#endif + +#ifdef LTC_RIPEMD256 +struct rmd256_state { + ulong64 length; + unsigned char buf[64]; + ulong32 curlen, state[8]; +}; +#endif + +#ifdef LTC_RIPEMD320 +struct rmd320_state { + ulong64 length; + unsigned char buf[64]; + ulong32 curlen, state[10]; +}; +#endif + +#ifdef LTC_WHIRLPOOL +struct whirlpool_state { + ulong64 length, state[8]; + unsigned char buf[64]; + ulong32 curlen; +}; +#endif + +#ifdef LTC_CHC_HASH +struct chc_state { + ulong64 length; + unsigned char state[MAXBLOCKSIZE], buf[MAXBLOCKSIZE]; + ulong32 curlen; +}; +#endif + +#ifdef LTC_BLAKE2S +struct blake2s_state { + ulong32 h[8]; + ulong32 t[2]; + ulong32 f[2]; + unsigned char buf[64]; + unsigned long curlen; + unsigned long outlen; + unsigned char last_node; +}; +#endif + +#ifdef LTC_BLAKE2B +struct blake2b_state { + ulong64 h[8]; + ulong64 t[2]; + ulong64 f[2]; + unsigned char buf[128]; + unsigned long curlen; + unsigned long outlen; + unsigned char last_node; +}; +#endif + +typedef union Hash_state { + char dummy[1]; +#ifdef LTC_CHC_HASH + struct chc_state chc; +#endif +#ifdef LTC_WHIRLPOOL + struct whirlpool_state whirlpool; +#endif +#ifdef LTC_SHA3 + struct sha3_state sha3; +#endif +#ifdef LTC_SHA512 + struct sha512_state sha512; +#endif +#ifdef LTC_SHA256 + struct sha256_state sha256; +#endif +#ifdef LTC_SHA1 + struct sha1_state sha1; +#endif +#ifdef LTC_MD5 + struct md5_state md5; +#endif +#ifdef LTC_MD4 + struct md4_state md4; +#endif +#ifdef LTC_MD2 + struct md2_state md2; +#endif +#ifdef LTC_TIGER + struct tiger_state tiger; +#endif +#ifdef LTC_RIPEMD128 + struct rmd128_state rmd128; +#endif +#ifdef LTC_RIPEMD160 + struct rmd160_state rmd160; +#endif +#ifdef LTC_RIPEMD256 + struct rmd256_state rmd256; +#endif +#ifdef LTC_RIPEMD320 + struct rmd320_state rmd320; +#endif +#ifdef LTC_BLAKE2S + struct blake2s_state blake2s; +#endif +#ifdef LTC_BLAKE2B + struct blake2b_state blake2b; +#endif + + void *data; +} hash_state; + +/** hash descriptor */ +extern struct ltc_hash_descriptor { + /** name of hash */ + const char *name; + /** internal ID */ + unsigned char ID; + /** Size of digest in octets */ + unsigned long hashsize; + /** Input block size in octets */ + unsigned long blocksize; + /** ASN.1 OID */ + unsigned long OID[16]; + /** Length of DER encoding */ + unsigned long OIDlen; + + /** Init a hash state + @param hash The hash to initialize + @return CRYPT_OK if successful + */ + int (*init)(hash_state *hash); + /** Process a block of data + @param hash The hash state + @param in The data to hash + @param inlen The length of the data (octets) + @return CRYPT_OK if successful + */ + int (*process)(hash_state *hash, const unsigned char *in, unsigned long inlen); + /** Produce the digest and store it + @param hash The hash state + @param out [out] The destination of the digest + @return CRYPT_OK if successful + */ + int (*done)(hash_state *hash, unsigned char *out); + /** Self-test + @return CRYPT_OK if successful, CRYPT_NOP if self-tests have been disabled + */ + int (*test)(void); + + /* accelerated hmac callback: if you need to-do multiple packets just use the generic hmac_memory and provide a hash callback */ + int (*hmac_block)(const unsigned char *key, unsigned long keylen, + const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); + +} hash_descriptor[]; + +#ifdef LTC_CHC_HASH +int chc_register(int cipher); +int chc_init(hash_state * md); +int chc_process(hash_state * md, const unsigned char *in, unsigned long inlen); +int chc_done(hash_state * md, unsigned char *hash); +int chc_test(void); +extern const struct ltc_hash_descriptor chc_desc; +#endif + +#ifdef LTC_WHIRLPOOL +int whirlpool_init(hash_state * md); +int whirlpool_process(hash_state * md, const unsigned char *in, unsigned long inlen); +int whirlpool_done(hash_state * md, unsigned char *hash); +int whirlpool_test(void); +extern const struct ltc_hash_descriptor whirlpool_desc; +#endif + +#ifdef LTC_SHA3 +int sha3_512_init(hash_state * md); +int sha3_512_test(void); +extern const struct ltc_hash_descriptor sha3_512_desc; +int sha3_384_init(hash_state * md); +int sha3_384_test(void); +extern const struct ltc_hash_descriptor sha3_384_desc; +int sha3_256_init(hash_state * md); +int sha3_256_test(void); +extern const struct ltc_hash_descriptor sha3_256_desc; +int sha3_224_init(hash_state * md); +int sha3_224_test(void); +extern const struct ltc_hash_descriptor sha3_224_desc; +/* process + done are the same for all variants */ +int sha3_process(hash_state * md, const unsigned char *in, unsigned long inlen); +int sha3_done(hash_state *md, unsigned char *hash); +/* SHAKE128 + SHAKE256 */ +int sha3_shake_init(hash_state *md, int num); +#define sha3_shake_process(a,b,c) sha3_process(a,b,c) +int sha3_shake_done(hash_state *md, unsigned char *out, unsigned long outlen); +int sha3_shake_test(void); +int sha3_shake_memory(int num, const unsigned char *in, unsigned long inlen, unsigned char *out, unsigned long *outlen); +#endif + +#ifdef LTC_SHA512 +int sha512_init(hash_state * md); +int sha512_process(hash_state * md, const unsigned char *in, unsigned long inlen); +int sha512_done(hash_state * md, unsigned char *hash); +int sha512_test(void); +extern const struct ltc_hash_descriptor sha512_desc; +#endif + +#ifdef LTC_SHA384 +#ifndef LTC_SHA512 + #error LTC_SHA512 is required for LTC_SHA384 +#endif +int sha384_init(hash_state * md); +#define sha384_process sha512_process +int sha384_done(hash_state * md, unsigned char *hash); +int sha384_test(void); +extern const struct ltc_hash_descriptor sha384_desc; +#endif + +#ifdef LTC_SHA512_256 +#ifndef LTC_SHA512 + #error LTC_SHA512 is required for LTC_SHA512_256 +#endif +int sha512_256_init(hash_state * md); +#define sha512_256_process sha512_process +int sha512_256_done(hash_state * md, unsigned char *hash); +int sha512_256_test(void); +extern const struct ltc_hash_descriptor sha512_256_desc; +#endif + +#ifdef LTC_SHA512_224 +#ifndef LTC_SHA512 + #error LTC_SHA512 is required for LTC_SHA512_224 +#endif +int sha512_224_init(hash_state * md); +#define sha512_224_process sha512_process +int sha512_224_done(hash_state * md, unsigned char *hash); +int sha512_224_test(void); +extern const struct ltc_hash_descriptor sha512_224_desc; +#endif + +#ifdef LTC_SHA256 +int sha256_init(hash_state * md); +int sha256_process(hash_state * md, const unsigned char *in, unsigned long inlen); +int sha256_done(hash_state * md, unsigned char *hash); +int sha256_test(void); +extern const struct ltc_hash_descriptor sha256_desc; + +#ifdef LTC_SHA224 +#ifndef LTC_SHA256 + #error LTC_SHA256 is required for LTC_SHA224 +#endif +int sha224_init(hash_state * md); +#define sha224_process sha256_process +int sha224_done(hash_state * md, unsigned char *hash); +int sha224_test(void); +extern const struct ltc_hash_descriptor sha224_desc; +#endif +#endif + +#ifdef LTC_SHA1 +int sha1_init(hash_state * md); +int sha1_process(hash_state * md, const unsigned char *in, unsigned long inlen); +int sha1_done(hash_state * md, unsigned char *hash); +int sha1_test(void); +extern const struct ltc_hash_descriptor sha1_desc; +#endif + +#ifdef LTC_BLAKE2S +extern const struct ltc_hash_descriptor blake2s_256_desc; +int blake2s_256_init(hash_state * md); +int blake2s_256_test(void); + +extern const struct ltc_hash_descriptor blake2s_224_desc; +int blake2s_224_init(hash_state * md); +int blake2s_224_test(void); + +extern const struct ltc_hash_descriptor blake2s_160_desc; +int blake2s_160_init(hash_state * md); +int blake2s_160_test(void); + +extern const struct ltc_hash_descriptor blake2s_128_desc; +int blake2s_128_init(hash_state * md); +int blake2s_128_test(void); + +int blake2s_init(hash_state * md, unsigned long outlen, const unsigned char *key, unsigned long keylen); +int blake2s_process(hash_state * md, const unsigned char *in, unsigned long inlen); +int blake2s_done(hash_state * md, unsigned char *hash); +#endif + +#ifdef LTC_BLAKE2B +extern const struct ltc_hash_descriptor blake2b_512_desc; +int blake2b_512_init(hash_state * md); +int blake2b_512_test(void); + +extern const struct ltc_hash_descriptor blake2b_384_desc; +int blake2b_384_init(hash_state * md); +int blake2b_384_test(void); + +extern const struct ltc_hash_descriptor blake2b_256_desc; +int blake2b_256_init(hash_state * md); +int blake2b_256_test(void); + +extern const struct ltc_hash_descriptor blake2b_160_desc; +int blake2b_160_init(hash_state * md); +int blake2b_160_test(void); + +int blake2b_init(hash_state * md, unsigned long outlen, const unsigned char *key, unsigned long keylen); +int blake2b_process(hash_state * md, const unsigned char *in, unsigned long inlen); +int blake2b_done(hash_state * md, unsigned char *hash); +#endif + +#ifdef LTC_MD5 +int md5_init(hash_state * md); +int md5_process(hash_state * md, const unsigned char *in, unsigned long inlen); +int md5_done(hash_state * md, unsigned char *hash); +int md5_test(void); +extern const struct ltc_hash_descriptor md5_desc; +#endif + +#ifdef LTC_MD4 +int md4_init(hash_state * md); +int md4_process(hash_state * md, const unsigned char *in, unsigned long inlen); +int md4_done(hash_state * md, unsigned char *hash); +int md4_test(void); +extern const struct ltc_hash_descriptor md4_desc; +#endif + +#ifdef LTC_MD2 +int md2_init(hash_state * md); +int md2_process(hash_state * md, const unsigned char *in, unsigned long inlen); +int md2_done(hash_state * md, unsigned char *hash); +int md2_test(void); +extern const struct ltc_hash_descriptor md2_desc; +#endif + +#ifdef LTC_TIGER +int tiger_init(hash_state * md); +int tiger_process(hash_state * md, const unsigned char *in, unsigned long inlen); +int tiger_done(hash_state * md, unsigned char *hash); +int tiger_test(void); +extern const struct ltc_hash_descriptor tiger_desc; +#endif + +#ifdef LTC_RIPEMD128 +int rmd128_init(hash_state * md); +int rmd128_process(hash_state * md, const unsigned char *in, unsigned long inlen); +int rmd128_done(hash_state * md, unsigned char *hash); +int rmd128_test(void); +extern const struct ltc_hash_descriptor rmd128_desc; +#endif + +#ifdef LTC_RIPEMD160 +int rmd160_init(hash_state * md); +int rmd160_process(hash_state * md, const unsigned char *in, unsigned long inlen); +int rmd160_done(hash_state * md, unsigned char *hash); +int rmd160_test(void); +extern const struct ltc_hash_descriptor rmd160_desc; +#endif + +#ifdef LTC_RIPEMD256 +int rmd256_init(hash_state * md); +int rmd256_process(hash_state * md, const unsigned char *in, unsigned long inlen); +int rmd256_done(hash_state * md, unsigned char *hash); +int rmd256_test(void); +extern const struct ltc_hash_descriptor rmd256_desc; +#endif + +#ifdef LTC_RIPEMD320 +int rmd320_init(hash_state * md); +int rmd320_process(hash_state * md, const unsigned char *in, unsigned long inlen); +int rmd320_done(hash_state * md, unsigned char *hash); +int rmd320_test(void); +extern const struct ltc_hash_descriptor rmd320_desc; +#endif + + +int find_hash(const char *name); +int find_hash_id(unsigned char ID); +int find_hash_oid(const unsigned long *ID, unsigned long IDlen); +int find_hash_any(const char *name, int digestlen); +int register_hash(const struct ltc_hash_descriptor *hash); +int unregister_hash(const struct ltc_hash_descriptor *hash); +int register_all_hashes(void); +int hash_is_valid(int idx); + +LTC_MUTEX_PROTO(ltc_hash_mutex) + +int hash_memory(int hash, + const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +int hash_memory_multi(int hash, unsigned char *out, unsigned long *outlen, + const unsigned char *in, unsigned long inlen, ...); + +#ifndef LTC_NO_FILE +int hash_filehandle(int hash, FILE *in, unsigned char *out, unsigned long *outlen); +int hash_file(int hash, const char *fname, unsigned char *out, unsigned long *outlen); +#endif +#define XMIN(x, y) ( ((x)<(y))?(x):(y) ) +/* a simple macro for making hash "process" functions */ +#define HASH_PROCESS(func_name, compress_name, state_var, block_size) \ +int func_name (hash_state * md, const unsigned char *in, unsigned long inlen) \ +{ \ + unsigned long n; \ + int err; \ + LTC_ARGCHK(md != NULL); \ + LTC_ARGCHK(in != NULL); \ + if (md-> state_var .curlen > sizeof(md-> state_var .buf)) { \ + return CRYPT_INVALID_ARG; \ + } \ + if ((md-> state_var .length + inlen) < md-> state_var .length) { \ + return CRYPT_HASH_OVERFLOW; \ + } \ + while (inlen > 0) { \ + if (md-> state_var .curlen == 0 && inlen >= block_size) { \ + if ((err = compress_name (md, (unsigned char *)in)) != CRYPT_OK) { \ + return err; \ + } \ + md-> state_var .length += block_size * 8; \ + in += block_size; \ + inlen -= block_size; \ + } else { \ + n = XMIN(inlen, (block_size - md-> state_var .curlen)); \ + XMEMCPY(md-> state_var .buf + md-> state_var.curlen, in, (size_t)n); \ + md-> state_var .curlen += n; \ + in += n; \ + inlen -= n; \ + if (md-> state_var .curlen == block_size) { \ + if ((err = compress_name (md, md-> state_var .buf)) != CRYPT_OK) { \ + return err; \ + } \ + md-> state_var .length += 8*block_size; \ + md-> state_var .curlen = 0; \ + } \ + } \ + } \ + return CRYPT_OK; \ +} + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/headers/tomcrypt_mac.h b/fsbl/lib/libtomcrypt/src/headers/tomcrypt_mac.h new file mode 100644 index 000000000..04f825d9b --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/headers/tomcrypt_mac.h @@ -0,0 +1,565 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#ifdef LTC_HMAC +typedef struct Hmac_state { + hash_state md; + int hash; + hash_state hashstate; + unsigned char *key; +} hmac_state; + +int hmac_init(hmac_state *hmac, int hash, const unsigned char *key, unsigned long keylen); +int hmac_process(hmac_state *hmac, const unsigned char *in, unsigned long inlen); +int hmac_done(hmac_state *hmac, unsigned char *out, unsigned long *outlen); +int hmac_test(void); +int hmac_memory(int hash, + const unsigned char *key, unsigned long keylen, + const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +int hmac_memory_multi(int hash, + const unsigned char *key, unsigned long keylen, + unsigned char *out, unsigned long *outlen, + const unsigned char *in, unsigned long inlen, ...); +int hmac_file(int hash, const char *fname, const unsigned char *key, + unsigned long keylen, + unsigned char *dst, unsigned long *dstlen); +#endif + +#ifdef LTC_OMAC + +typedef struct { + int cipher_idx, + buflen, + blklen; + unsigned char block[MAXBLOCKSIZE], + prev[MAXBLOCKSIZE], + Lu[2][MAXBLOCKSIZE]; + symmetric_key key; +} omac_state; + +int omac_init(omac_state *omac, int cipher, const unsigned char *key, unsigned long keylen); +int omac_process(omac_state *omac, const unsigned char *in, unsigned long inlen); +int omac_done(omac_state *omac, unsigned char *out, unsigned long *outlen); +int omac_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +int omac_memory_multi(int cipher, + const unsigned char *key, unsigned long keylen, + unsigned char *out, unsigned long *outlen, + const unsigned char *in, unsigned long inlen, ...); +int omac_file(int cipher, + const unsigned char *key, unsigned long keylen, + const char *filename, + unsigned char *out, unsigned long *outlen); +int omac_test(void); +#endif /* LTC_OMAC */ + +#ifdef LTC_PMAC + +typedef struct { + unsigned char Ls[32][MAXBLOCKSIZE], /* L shifted by i bits to the left */ + Li[MAXBLOCKSIZE], /* value of Li [current value, we calc from previous recall] */ + Lr[MAXBLOCKSIZE], /* L * x^-1 */ + block[MAXBLOCKSIZE], /* currently accumulated block */ + checksum[MAXBLOCKSIZE]; /* current checksum */ + + symmetric_key key; /* scheduled key for cipher */ + unsigned long block_index; /* index # for current block */ + int cipher_idx, /* cipher idx */ + block_len, /* length of block */ + buflen; /* number of bytes in the buffer */ +} pmac_state; + +int pmac_init(pmac_state *pmac, int cipher, const unsigned char *key, unsigned long keylen); +int pmac_process(pmac_state *pmac, const unsigned char *in, unsigned long inlen); +int pmac_done(pmac_state *pmac, unsigned char *out, unsigned long *outlen); + +int pmac_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *msg, unsigned long msglen, + unsigned char *out, unsigned long *outlen); + +int pmac_memory_multi(int cipher, + const unsigned char *key, unsigned long keylen, + unsigned char *out, unsigned long *outlen, + const unsigned char *in, unsigned long inlen, ...); + +int pmac_file(int cipher, + const unsigned char *key, unsigned long keylen, + const char *filename, + unsigned char *out, unsigned long *outlen); + +int pmac_test(void); + +/* internal functions */ +int pmac_ntz(unsigned long x); +void pmac_shift_xor(pmac_state *pmac); + +#endif /* PMAC */ + +#ifdef LTC_POLY1305 +typedef struct { + ulong32 r[5]; + ulong32 h[5]; + ulong32 pad[4]; + unsigned long leftover; + unsigned char buffer[16]; + int final; +} poly1305_state; + +int poly1305_init(poly1305_state *st, const unsigned char *key, unsigned long keylen); +int poly1305_process(poly1305_state *st, const unsigned char *in, unsigned long inlen); +int poly1305_done(poly1305_state *st, unsigned char *mac, unsigned long *maclen); +int poly1305_memory(const unsigned char *key, unsigned long keylen, const unsigned char *in, unsigned long inlen, unsigned char *mac, unsigned long *maclen); +int poly1305_memory_multi(const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen, const unsigned char *in, unsigned long inlen, ...); +int poly1305_file(const char *fname, const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen); +int poly1305_test(void); +#endif /* LTC_POLY1305 */ + +#ifdef LTC_BLAKE2SMAC +typedef hash_state blake2smac_state; +int blake2smac_init(blake2smac_state *st, unsigned long outlen, const unsigned char *key, unsigned long keylen); +int blake2smac_process(blake2smac_state *st, const unsigned char *in, unsigned long inlen); +int blake2smac_done(blake2smac_state *st, unsigned char *mac, unsigned long *maclen); +int blake2smac_memory(const unsigned char *key, unsigned long keylen, const unsigned char *in, unsigned long inlen, unsigned char *mac, unsigned long *maclen); +int blake2smac_memory_multi(const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen, const unsigned char *in, unsigned long inlen, ...); +int blake2smac_file(const char *fname, const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen); +int blake2smac_test(void); +#endif /* LTC_BLAKE2SMAC */ + +#ifdef LTC_BLAKE2BMAC +typedef hash_state blake2bmac_state; +int blake2bmac_init(blake2bmac_state *st, unsigned long outlen, const unsigned char *key, unsigned long keylen); +int blake2bmac_process(blake2bmac_state *st, const unsigned char *in, unsigned long inlen); +int blake2bmac_done(blake2bmac_state *st, unsigned char *mac, unsigned long *maclen); +int blake2bmac_memory(const unsigned char *key, unsigned long keylen, const unsigned char *in, unsigned long inlen, unsigned char *mac, unsigned long *maclen); +int blake2bmac_memory_multi(const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen, const unsigned char *in, unsigned long inlen, ...); +int blake2bmac_file(const char *fname, const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen); +int blake2bmac_test(void); +#endif /* LTC_BLAKE2BMAC */ + +#ifdef LTC_EAX_MODE + +#if !(defined(LTC_OMAC) && defined(LTC_CTR_MODE)) + #error LTC_EAX_MODE requires LTC_OMAC and CTR +#endif + +typedef struct { + unsigned char N[MAXBLOCKSIZE]; + symmetric_CTR ctr; + omac_state headeromac, ctomac; +} eax_state; + +int eax_init(eax_state *eax, int cipher, const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, unsigned long noncelen, + const unsigned char *header, unsigned long headerlen); + +int eax_encrypt(eax_state *eax, const unsigned char *pt, unsigned char *ct, unsigned long length); +int eax_decrypt(eax_state *eax, const unsigned char *ct, unsigned char *pt, unsigned long length); +int eax_addheader(eax_state *eax, const unsigned char *header, unsigned long length); +int eax_done(eax_state *eax, unsigned char *tag, unsigned long *taglen); + +int eax_encrypt_authenticate_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, unsigned long noncelen, + const unsigned char *header, unsigned long headerlen, + const unsigned char *pt, unsigned long ptlen, + unsigned char *ct, + unsigned char *tag, unsigned long *taglen); + +int eax_decrypt_verify_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, unsigned long noncelen, + const unsigned char *header, unsigned long headerlen, + const unsigned char *ct, unsigned long ctlen, + unsigned char *pt, + unsigned char *tag, unsigned long taglen, + int *stat); + + int eax_test(void); +#endif /* EAX MODE */ + +#ifdef LTC_OCB_MODE +typedef struct { + unsigned char L[MAXBLOCKSIZE], /* L value */ + Ls[32][MAXBLOCKSIZE], /* L shifted by i bits to the left */ + Li[MAXBLOCKSIZE], /* value of Li [current value, we calc from previous recall] */ + Lr[MAXBLOCKSIZE], /* L * x^-1 */ + R[MAXBLOCKSIZE], /* R value */ + checksum[MAXBLOCKSIZE]; /* current checksum */ + + symmetric_key key; /* scheduled key for cipher */ + unsigned long block_index; /* index # for current block */ + int cipher, /* cipher idx */ + block_len; /* length of block */ +} ocb_state; + +int ocb_init(ocb_state *ocb, int cipher, + const unsigned char *key, unsigned long keylen, const unsigned char *nonce); + +int ocb_encrypt(ocb_state *ocb, const unsigned char *pt, unsigned char *ct); +int ocb_decrypt(ocb_state *ocb, const unsigned char *ct, unsigned char *pt); + +int ocb_done_encrypt(ocb_state *ocb, + const unsigned char *pt, unsigned long ptlen, + unsigned char *ct, + unsigned char *tag, unsigned long *taglen); + +int ocb_done_decrypt(ocb_state *ocb, + const unsigned char *ct, unsigned long ctlen, + unsigned char *pt, + const unsigned char *tag, unsigned long taglen, int *stat); + +int ocb_encrypt_authenticate_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, + const unsigned char *pt, unsigned long ptlen, + unsigned char *ct, + unsigned char *tag, unsigned long *taglen); + +int ocb_decrypt_verify_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, + const unsigned char *ct, unsigned long ctlen, + unsigned char *pt, + const unsigned char *tag, unsigned long taglen, + int *stat); + +int ocb_test(void); + +/* internal functions */ +void ocb_shift_xor(ocb_state *ocb, unsigned char *Z); +int ocb_ntz(unsigned long x); +int s_ocb_done(ocb_state *ocb, const unsigned char *pt, unsigned long ptlen, + unsigned char *ct, unsigned char *tag, unsigned long *taglen, int mode); + +#endif /* LTC_OCB_MODE */ + +#ifdef LTC_OCB3_MODE +typedef struct { + unsigned char Offset_0[MAXBLOCKSIZE], /* Offset_0 value */ + Offset_current[MAXBLOCKSIZE], /* Offset_{current_block_index} value */ + L_dollar[MAXBLOCKSIZE], /* L_$ value */ + L_star[MAXBLOCKSIZE], /* L_* value */ + L_[32][MAXBLOCKSIZE], /* L_{i} values */ + tag_part[MAXBLOCKSIZE], /* intermediate result of tag calculation */ + checksum[MAXBLOCKSIZE]; /* current checksum */ + + /* AAD related members */ + unsigned char aSum_current[MAXBLOCKSIZE], /* AAD related helper variable */ + aOffset_current[MAXBLOCKSIZE], /* AAD related helper variable */ + adata_buffer[MAXBLOCKSIZE]; /* AAD buffer */ + int adata_buffer_bytes; /* bytes in AAD buffer */ + unsigned long ablock_index; /* index # for current adata (AAD) block */ + + symmetric_key key; /* scheduled key for cipher */ + unsigned long block_index; /* index # for current data block */ + int cipher, /* cipher idx */ + tag_len, /* length of tag */ + block_len; /* length of block */ +} ocb3_state; + +int ocb3_init(ocb3_state *ocb, int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, unsigned long noncelen, + unsigned long taglen); + +int ocb3_encrypt(ocb3_state *ocb, const unsigned char *pt, unsigned long ptlen, unsigned char *ct); +int ocb3_decrypt(ocb3_state *ocb, const unsigned char *ct, unsigned long ctlen, unsigned char *pt); +int ocb3_encrypt_last(ocb3_state *ocb, const unsigned char *pt, unsigned long ptlen, unsigned char *ct); +int ocb3_decrypt_last(ocb3_state *ocb, const unsigned char *ct, unsigned long ctlen, unsigned char *pt); +int ocb3_add_aad(ocb3_state *ocb, const unsigned char *aad, unsigned long aadlen); +int ocb3_done(ocb3_state *ocb, unsigned char *tag, unsigned long *taglen); + +int ocb3_encrypt_authenticate_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, unsigned long noncelen, + const unsigned char *adata, unsigned long adatalen, + const unsigned char *pt, unsigned long ptlen, + unsigned char *ct, + unsigned char *tag, unsigned long *taglen); + +int ocb3_decrypt_verify_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *nonce, unsigned long noncelen, + const unsigned char *adata, unsigned long adatalen, + const unsigned char *ct, unsigned long ctlen, + unsigned char *pt, + const unsigned char *tag, unsigned long taglen, + int *stat); + +int ocb3_test(void); + +#ifdef LTC_SOURCE +/* internal helper functions */ +int ocb3_int_ntz(unsigned long x); +void ocb3_int_xor_blocks(unsigned char *out, const unsigned char *block_a, const unsigned char *block_b, unsigned long block_len); +#endif /* LTC_SOURCE */ + +#endif /* LTC_OCB3_MODE */ + +#ifdef LTC_CCM_MODE + +#define CCM_ENCRYPT LTC_ENCRYPT +#define CCM_DECRYPT LTC_DECRYPT + +typedef struct { + symmetric_key K; + int cipher, /* which cipher */ + taglen, /* length of the tag */ + x; /* index in PAD */ + + unsigned long L, /* L value */ + ptlen, /* length that will be enc / dec */ + current_ptlen, /* current processed length */ + aadlen, /* length of the aad */ + current_aadlen, /* length of the currently provided add */ + noncelen; /* length of the nonce */ + + unsigned char PAD[16], + ctr[16], + CTRPAD[16], + CTRlen; +} ccm_state; + +int ccm_init(ccm_state *ccm, int cipher, + const unsigned char *key, int keylen, int ptlen, int taglen, int aad_len); + +int ccm_reset(ccm_state *ccm); + +int ccm_add_nonce(ccm_state *ccm, + const unsigned char *nonce, unsigned long noncelen); + +int ccm_add_aad(ccm_state *ccm, + const unsigned char *adata, unsigned long adatalen); + +int ccm_process(ccm_state *ccm, + unsigned char *pt, unsigned long ptlen, + unsigned char *ct, + int direction); + +int ccm_done(ccm_state *ccm, + unsigned char *tag, unsigned long *taglen); + +int ccm_memory(int cipher, + const unsigned char *key, unsigned long keylen, + symmetric_key *uskey, + const unsigned char *nonce, unsigned long noncelen, + const unsigned char *header, unsigned long headerlen, + unsigned char *pt, unsigned long ptlen, + unsigned char *ct, + unsigned char *tag, unsigned long *taglen, + int direction); + +int ccm_test(void); + +#endif /* LTC_CCM_MODE */ + +#if defined(LRW_MODE) || defined(LTC_GCM_MODE) +void gcm_gf_mult(const unsigned char *a, const unsigned char *b, unsigned char *c); +#endif + + +/* table shared between GCM and LRW */ +#if defined(LTC_GCM_TABLES) || defined(LTC_LRW_TABLES) || ((defined(LTC_GCM_MODE) || defined(LTC_GCM_MODE)) && defined(LTC_FAST)) +extern const unsigned char gcm_shift_table[]; +#endif + +#ifdef LTC_GCM_MODE + +#define GCM_ENCRYPT LTC_ENCRYPT +#define GCM_DECRYPT LTC_DECRYPT + +#define LTC_GCM_MODE_IV 0 +#define LTC_GCM_MODE_AAD 1 +#define LTC_GCM_MODE_TEXT 2 + +typedef struct { + symmetric_key K; + unsigned char H[16], /* multiplier */ + X[16], /* accumulator */ + Y[16], /* counter */ + Y_0[16], /* initial counter */ + buf[16]; /* buffer for stuff */ + + int cipher, /* which cipher */ + ivmode, /* Which mode is the IV in? */ + mode, /* mode the GCM code is in */ + buflen; /* length of data in buf */ + + ulong64 totlen, /* 64-bit counter used for IV and AAD */ + pttotlen; /* 64-bit counter for the PT */ + +#ifdef LTC_GCM_TABLES + unsigned char PC[16][256][16] /* 16 tables of 8x128 */ +#ifdef LTC_GCM_TABLES_SSE2 +__attribute__ ((aligned (16))) +#endif +; +#endif +} gcm_state; + +void gcm_mult_h(gcm_state *gcm, unsigned char *I); + +int gcm_init(gcm_state *gcm, int cipher, + const unsigned char *key, int keylen); + +int gcm_reset(gcm_state *gcm); + +int gcm_add_iv(gcm_state *gcm, + const unsigned char *IV, unsigned long IVlen); + +int gcm_add_aad(gcm_state *gcm, + const unsigned char *adata, unsigned long adatalen); + +int gcm_process(gcm_state *gcm, + unsigned char *pt, unsigned long ptlen, + unsigned char *ct, + int direction); + +int gcm_done(gcm_state *gcm, + unsigned char *tag, unsigned long *taglen); + +int gcm_memory( int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *IV, unsigned long IVlen, + const unsigned char *adata, unsigned long adatalen, + unsigned char *pt, unsigned long ptlen, + unsigned char *ct, + unsigned char *tag, unsigned long *taglen, + int direction); +int gcm_test(void); + +#endif /* LTC_GCM_MODE */ + +#ifdef LTC_PELICAN + +typedef struct pelican_state +{ + symmetric_key K; + unsigned char state[16]; + int buflen; +} pelican_state; + +int pelican_init(pelican_state *pelmac, const unsigned char *key, unsigned long keylen); +int pelican_process(pelican_state *pelmac, const unsigned char *in, unsigned long inlen); +int pelican_done(pelican_state *pelmac, unsigned char *out); +int pelican_test(void); + +int pelican_memory(const unsigned char *key, unsigned long keylen, + const unsigned char *in, unsigned long inlen, + unsigned char *out); + +#endif + +#ifdef LTC_XCBC + +/* add this to "keylen" to xcbc_init to use a pure three-key XCBC MAC */ +#define LTC_XCBC_PURE 0x8000UL + +typedef struct { + unsigned char K[3][MAXBLOCKSIZE], + IV[MAXBLOCKSIZE]; + + symmetric_key key; + + int cipher, + buflen, + blocksize; +} xcbc_state; + +int xcbc_init(xcbc_state *xcbc, int cipher, const unsigned char *key, unsigned long keylen); +int xcbc_process(xcbc_state *xcbc, const unsigned char *in, unsigned long inlen); +int xcbc_done(xcbc_state *xcbc, unsigned char *out, unsigned long *outlen); +int xcbc_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +int xcbc_memory_multi(int cipher, + const unsigned char *key, unsigned long keylen, + unsigned char *out, unsigned long *outlen, + const unsigned char *in, unsigned long inlen, ...); +int xcbc_file(int cipher, + const unsigned char *key, unsigned long keylen, + const char *filename, + unsigned char *out, unsigned long *outlen); +int xcbc_test(void); + +#endif + +#ifdef LTC_F9_MODE + +typedef struct { + unsigned char akey[MAXBLOCKSIZE], + ACC[MAXBLOCKSIZE], + IV[MAXBLOCKSIZE]; + + symmetric_key key; + + int cipher, + buflen, + keylen, + blocksize; +} f9_state; + +int f9_init(f9_state *f9, int cipher, const unsigned char *key, unsigned long keylen); +int f9_process(f9_state *f9, const unsigned char *in, unsigned long inlen); +int f9_done(f9_state *f9, unsigned char *out, unsigned long *outlen); +int f9_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +int f9_memory_multi(int cipher, + const unsigned char *key, unsigned long keylen, + unsigned char *out, unsigned long *outlen, + const unsigned char *in, unsigned long inlen, ...); +int f9_file(int cipher, + const unsigned char *key, unsigned long keylen, + const char *filename, + unsigned char *out, unsigned long *outlen); +int f9_test(void); + +#endif + +#ifdef LTC_CHACHA20POLY1305_MODE + +typedef struct { + poly1305_state poly; + chacha_state chacha; + ulong64 aadlen; + ulong64 ctlen; + int aadflg; +} chacha20poly1305_state; + +#define CHACHA20POLY1305_ENCRYPT LTC_ENCRYPT +#define CHACHA20POLY1305_DECRYPT LTC_DECRYPT + +int chacha20poly1305_init(chacha20poly1305_state *st, const unsigned char *key, unsigned long keylen); +int chacha20poly1305_setiv(chacha20poly1305_state *st, const unsigned char *iv, unsigned long ivlen); +int chacha20poly1305_setiv_rfc7905(chacha20poly1305_state *st, const unsigned char *iv, unsigned long ivlen, ulong64 sequence_number); +int chacha20poly1305_add_aad(chacha20poly1305_state *st, const unsigned char *in, unsigned long inlen); +int chacha20poly1305_encrypt(chacha20poly1305_state *st, const unsigned char *in, unsigned long inlen, unsigned char *out); +int chacha20poly1305_decrypt(chacha20poly1305_state *st, const unsigned char *in, unsigned long inlen, unsigned char *out); +int chacha20poly1305_done(chacha20poly1305_state *st, unsigned char *tag, unsigned long *taglen); +int chacha20poly1305_memory(const unsigned char *key, unsigned long keylen, + const unsigned char *iv, unsigned long ivlen, + const unsigned char *aad, unsigned long aadlen, + const unsigned char *in, unsigned long inlen, + unsigned char *out, + unsigned char *tag, unsigned long *taglen, + int direction); +int chacha20poly1305_test(void); + +#endif /* LTC_CHACHA20POLY1305_MODE */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/headers/tomcrypt_macros.h b/fsbl/lib/libtomcrypt/src/headers/tomcrypt_macros.h new file mode 100644 index 000000000..94e368f89 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/headers/tomcrypt_macros.h @@ -0,0 +1,446 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* ---- HELPER MACROS ---- */ +#ifdef ENDIAN_NEUTRAL + +#define STORE32L(x, y) \ + do { (y)[3] = (unsigned char)(((x)>>24)&255); (y)[2] = (unsigned char)(((x)>>16)&255); \ + (y)[1] = (unsigned char)(((x)>>8)&255); (y)[0] = (unsigned char)((x)&255); } while(0) + +#define LOAD32L(x, y) \ + do { x = ((ulong32)((y)[3] & 255)<<24) | \ + ((ulong32)((y)[2] & 255)<<16) | \ + ((ulong32)((y)[1] & 255)<<8) | \ + ((ulong32)((y)[0] & 255)); } while(0) + +#define STORE64L(x, y) \ + do { (y)[7] = (unsigned char)(((x)>>56)&255); (y)[6] = (unsigned char)(((x)>>48)&255); \ + (y)[5] = (unsigned char)(((x)>>40)&255); (y)[4] = (unsigned char)(((x)>>32)&255); \ + (y)[3] = (unsigned char)(((x)>>24)&255); (y)[2] = (unsigned char)(((x)>>16)&255); \ + (y)[1] = (unsigned char)(((x)>>8)&255); (y)[0] = (unsigned char)((x)&255); } while(0) + +#define LOAD64L(x, y) \ + do { x = (((ulong64)((y)[7] & 255))<<56)|(((ulong64)((y)[6] & 255))<<48)| \ + (((ulong64)((y)[5] & 255))<<40)|(((ulong64)((y)[4] & 255))<<32)| \ + (((ulong64)((y)[3] & 255))<<24)|(((ulong64)((y)[2] & 255))<<16)| \ + (((ulong64)((y)[1] & 255))<<8)|(((ulong64)((y)[0] & 255))); } while(0) + +#define STORE32H(x, y) \ + do { (y)[0] = (unsigned char)(((x)>>24)&255); (y)[1] = (unsigned char)(((x)>>16)&255); \ + (y)[2] = (unsigned char)(((x)>>8)&255); (y)[3] = (unsigned char)((x)&255); } while(0) + +#define LOAD32H(x, y) \ + do { x = ((ulong32)((y)[0] & 255)<<24) | \ + ((ulong32)((y)[1] & 255)<<16) | \ + ((ulong32)((y)[2] & 255)<<8) | \ + ((ulong32)((y)[3] & 255)); } while(0) + +#define STORE64H(x, y) \ +do { (y)[0] = (unsigned char)(((x)>>56)&255); (y)[1] = (unsigned char)(((x)>>48)&255); \ + (y)[2] = (unsigned char)(((x)>>40)&255); (y)[3] = (unsigned char)(((x)>>32)&255); \ + (y)[4] = (unsigned char)(((x)>>24)&255); (y)[5] = (unsigned char)(((x)>>16)&255); \ + (y)[6] = (unsigned char)(((x)>>8)&255); (y)[7] = (unsigned char)((x)&255); } while(0) + +#define LOAD64H(x, y) \ +do { x = (((ulong64)((y)[0] & 255))<<56)|(((ulong64)((y)[1] & 255))<<48) | \ + (((ulong64)((y)[2] & 255))<<40)|(((ulong64)((y)[3] & 255))<<32) | \ + (((ulong64)((y)[4] & 255))<<24)|(((ulong64)((y)[5] & 255))<<16) | \ + (((ulong64)((y)[6] & 255))<<8)|(((ulong64)((y)[7] & 255))); } while(0) + + +#elif defined(ENDIAN_LITTLE) + +#ifdef LTC_HAVE_BSWAP_BUILTIN + +#define STORE32H(x, y) \ +do { ulong32 __t = __builtin_bswap32 ((x)); \ + XMEMCPY ((y), &__t, 4); } while(0) + +#define LOAD32H(x, y) \ +do { XMEMCPY (&(x), (y), 4); \ + (x) = __builtin_bswap32 ((x)); } while(0) + +#elif !defined(LTC_NO_BSWAP) && (defined(INTEL_CC) || (defined(__GNUC__) && (defined(__DJGPP__) || defined(__CYGWIN__) || defined(__MINGW32__) || defined(__i386__) || defined(__x86_64__)))) + +#define STORE32H(x, y) \ +asm __volatile__ ( \ + "bswapl %0 \n\t" \ + "movl %0,(%1)\n\t" \ + "bswapl %0 \n\t" \ + ::"r"(x), "r"(y)); + +#define LOAD32H(x, y) \ +asm __volatile__ ( \ + "movl (%1),%0\n\t" \ + "bswapl %0\n\t" \ + :"=r"(x): "r"(y)); + +#else + +#define STORE32H(x, y) \ + do { (y)[0] = (unsigned char)(((x)>>24)&255); (y)[1] = (unsigned char)(((x)>>16)&255); \ + (y)[2] = (unsigned char)(((x)>>8)&255); (y)[3] = (unsigned char)((x)&255); } while(0) + +#define LOAD32H(x, y) \ + do { x = ((ulong32)((y)[0] & 255)<<24) | \ + ((ulong32)((y)[1] & 255)<<16) | \ + ((ulong32)((y)[2] & 255)<<8) | \ + ((ulong32)((y)[3] & 255)); } while(0) + +#endif + +#ifdef LTC_HAVE_BSWAP_BUILTIN + +#define STORE64H(x, y) \ +do { ulong64 __t = __builtin_bswap64 ((x)); \ + XMEMCPY ((y), &__t, 8); } while(0) + +#define LOAD64H(x, y) \ +do { XMEMCPY (&(x), (y), 8); \ + (x) = __builtin_bswap64 ((x)); } while(0) + +/* x86_64 processor */ +#elif !defined(LTC_NO_BSWAP) && (defined(__GNUC__) && defined(__x86_64__)) + +#define STORE64H(x, y) \ +asm __volatile__ ( \ + "bswapq %0 \n\t" \ + "movq %0,(%1)\n\t" \ + "bswapq %0 \n\t" \ + ::"r"(x), "r"(y): "memory"); + +#define LOAD64H(x, y) \ +asm __volatile__ ( \ + "movq (%1),%0\n\t" \ + "bswapq %0\n\t" \ + :"=r"(x): "r"(y): "memory"); + +#else + +#define STORE64H(x, y) \ +do { (y)[0] = (unsigned char)(((x)>>56)&255); (y)[1] = (unsigned char)(((x)>>48)&255); \ + (y)[2] = (unsigned char)(((x)>>40)&255); (y)[3] = (unsigned char)(((x)>>32)&255); \ + (y)[4] = (unsigned char)(((x)>>24)&255); (y)[5] = (unsigned char)(((x)>>16)&255); \ + (y)[6] = (unsigned char)(((x)>>8)&255); (y)[7] = (unsigned char)((x)&255); } while(0) + +#define LOAD64H(x, y) \ +do { x = (((ulong64)((y)[0] & 255))<<56)|(((ulong64)((y)[1] & 255))<<48) | \ + (((ulong64)((y)[2] & 255))<<40)|(((ulong64)((y)[3] & 255))<<32) | \ + (((ulong64)((y)[4] & 255))<<24)|(((ulong64)((y)[5] & 255))<<16) | \ + (((ulong64)((y)[6] & 255))<<8)|(((ulong64)((y)[7] & 255))); } while(0) + +#endif + +#ifdef ENDIAN_32BITWORD + +#define STORE32L(x, y) \ + do { ulong32 __t = (x); XMEMCPY(y, &__t, 4); } while(0) + +#define LOAD32L(x, y) \ + do { XMEMCPY(&(x), y, 4); } while(0) + +#define STORE64L(x, y) \ + do { (y)[7] = (unsigned char)(((x)>>56)&255); (y)[6] = (unsigned char)(((x)>>48)&255); \ + (y)[5] = (unsigned char)(((x)>>40)&255); (y)[4] = (unsigned char)(((x)>>32)&255); \ + (y)[3] = (unsigned char)(((x)>>24)&255); (y)[2] = (unsigned char)(((x)>>16)&255); \ + (y)[1] = (unsigned char)(((x)>>8)&255); (y)[0] = (unsigned char)((x)&255); } while(0) + +#define LOAD64L(x, y) \ + do { x = (((ulong64)((y)[7] & 255))<<56)|(((ulong64)((y)[6] & 255))<<48)| \ + (((ulong64)((y)[5] & 255))<<40)|(((ulong64)((y)[4] & 255))<<32)| \ + (((ulong64)((y)[3] & 255))<<24)|(((ulong64)((y)[2] & 255))<<16)| \ + (((ulong64)((y)[1] & 255))<<8)|(((ulong64)((y)[0] & 255))); } while(0) + +#else /* 64-bit words then */ + +#define STORE32L(x, y) \ + do { ulong32 __t = (x); XMEMCPY(y, &__t, 4); } while(0) + +#define LOAD32L(x, y) \ + do { XMEMCPY(&(x), y, 4); x &= 0xFFFFFFFF; } while(0) + +#define STORE64L(x, y) \ + do { ulong64 __t = (x); XMEMCPY(y, &__t, 8); } while(0) + +#define LOAD64L(x, y) \ + do { XMEMCPY(&(x), y, 8); } while(0) + +#endif /* ENDIAN_64BITWORD */ + +#elif defined(ENDIAN_BIG) + +#define STORE32L(x, y) \ + do { (y)[3] = (unsigned char)(((x)>>24)&255); (y)[2] = (unsigned char)(((x)>>16)&255); \ + (y)[1] = (unsigned char)(((x)>>8)&255); (y)[0] = (unsigned char)((x)&255); } while(0) + +#define LOAD32L(x, y) \ + do { x = ((ulong32)((y)[3] & 255)<<24) | \ + ((ulong32)((y)[2] & 255)<<16) | \ + ((ulong32)((y)[1] & 255)<<8) | \ + ((ulong32)((y)[0] & 255)); } while(0) + +#define STORE64L(x, y) \ +do { (y)[7] = (unsigned char)(((x)>>56)&255); (y)[6] = (unsigned char)(((x)>>48)&255); \ + (y)[5] = (unsigned char)(((x)>>40)&255); (y)[4] = (unsigned char)(((x)>>32)&255); \ + (y)[3] = (unsigned char)(((x)>>24)&255); (y)[2] = (unsigned char)(((x)>>16)&255); \ + (y)[1] = (unsigned char)(((x)>>8)&255); (y)[0] = (unsigned char)((x)&255); } while(0) + +#define LOAD64L(x, y) \ +do { x = (((ulong64)((y)[7] & 255))<<56)|(((ulong64)((y)[6] & 255))<<48) | \ + (((ulong64)((y)[5] & 255))<<40)|(((ulong64)((y)[4] & 255))<<32) | \ + (((ulong64)((y)[3] & 255))<<24)|(((ulong64)((y)[2] & 255))<<16) | \ + (((ulong64)((y)[1] & 255))<<8)|(((ulong64)((y)[0] & 255))); } while(0) + +#ifdef ENDIAN_32BITWORD + +#define STORE32H(x, y) \ + do { ulong32 __t = (x); XMEMCPY(y, &__t, 4); } while(0) + +#define LOAD32H(x, y) \ + do { XMEMCPY(&(x), y, 4); } while(0) + +#define STORE64H(x, y) \ + do { (y)[0] = (unsigned char)(((x)>>56)&255); (y)[1] = (unsigned char)(((x)>>48)&255); \ + (y)[2] = (unsigned char)(((x)>>40)&255); (y)[3] = (unsigned char)(((x)>>32)&255); \ + (y)[4] = (unsigned char)(((x)>>24)&255); (y)[5] = (unsigned char)(((x)>>16)&255); \ + (y)[6] = (unsigned char)(((x)>>8)&255); (y)[7] = (unsigned char)((x)&255); } while(0) + +#define LOAD64H(x, y) \ + do { x = (((ulong64)((y)[0] & 255))<<56)|(((ulong64)((y)[1] & 255))<<48)| \ + (((ulong64)((y)[2] & 255))<<40)|(((ulong64)((y)[3] & 255))<<32)| \ + (((ulong64)((y)[4] & 255))<<24)|(((ulong64)((y)[5] & 255))<<16)| \ + (((ulong64)((y)[6] & 255))<<8)| (((ulong64)((y)[7] & 255))); } while(0) + +#else /* 64-bit words then */ + +#define STORE32H(x, y) \ + do { ulong32 __t = (x); XMEMCPY(y, &__t, 4); } while(0) + +#define LOAD32H(x, y) \ + do { XMEMCPY(&(x), y, 4); x &= 0xFFFFFFFF; } while(0) + +#define STORE64H(x, y) \ + do { ulong64 __t = (x); XMEMCPY(y, &__t, 8); } while(0) + +#define LOAD64H(x, y) \ + do { XMEMCPY(&(x), y, 8); } while(0) + +#endif /* ENDIAN_64BITWORD */ +#endif /* ENDIAN_BIG */ + +#define BSWAP(x) ( ((x>>24)&0x000000FFUL) | ((x<<24)&0xFF000000UL) | \ + ((x>>8)&0x0000FF00UL) | ((x<<8)&0x00FF0000UL) ) + + +/* 32-bit Rotates */ +#if defined(_MSC_VER) +#define LTC_ROx_ASM + +/* instrinsic rotate */ +#include +#pragma intrinsic(_lrotr,_lrotl) +#define ROR(x,n) _lrotr(x,n) +#define ROL(x,n) _lrotl(x,n) +#define RORc(x,n) _lrotr(x,n) +#define ROLc(x,n) _lrotl(x,n) + +#elif !defined(__STRICT_ANSI__) && defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__)) && !defined(INTEL_CC) && !defined(LTC_NO_ASM) +#define LTC_ROx_ASM + +static inline ulong32 ROL(ulong32 word, int i) +{ + asm ("roll %%cl,%0" + :"=r" (word) + :"0" (word),"c" (i)); + return word; +} + +static inline ulong32 ROR(ulong32 word, int i) +{ + asm ("rorl %%cl,%0" + :"=r" (word) + :"0" (word),"c" (i)); + return word; +} + +#ifndef LTC_NO_ROLC + +#define ROLc(word,i) ({ \ + ulong32 __ROLc_tmp = (word); \ + __asm__ ("roll %2, %0" : \ + "=r" (__ROLc_tmp) : \ + "0" (__ROLc_tmp), \ + "I" (i)); \ + __ROLc_tmp; \ + }) +#define RORc(word,i) ({ \ + ulong32 __RORc_tmp = (word); \ + __asm__ ("rorl %2, %0" : \ + "=r" (__RORc_tmp) : \ + "0" (__RORc_tmp), \ + "I" (i)); \ + __RORc_tmp; \ + }) + +#else + +#define ROLc ROL +#define RORc ROR + +#endif + +#elif !defined(__STRICT_ANSI__) && defined(LTC_PPC32) +#define LTC_ROx_ASM + +static inline ulong32 ROL(ulong32 word, int i) +{ + asm ("rotlw %0,%0,%2" + :"=r" (word) + :"0" (word),"r" (i)); + return word; +} + +static inline ulong32 ROR(ulong32 word, int i) +{ + asm ("rotlw %0,%0,%2" + :"=r" (word) + :"0" (word),"r" (32-i)); + return word; +} + +#ifndef LTC_NO_ROLC + +static inline ulong32 ROLc(ulong32 word, const int i) +{ + asm ("rotlwi %0,%0,%2" + :"=r" (word) + :"0" (word),"I" (i)); + return word; +} + +static inline ulong32 RORc(ulong32 word, const int i) +{ + asm ("rotrwi %0,%0,%2" + :"=r" (word) + :"0" (word),"I" (i)); + return word; +} + +#else + +#define ROLc ROL +#define RORc ROR + +#endif + + +#else + +/* rotates the hard way */ +#define ROL(x, y) ( (((ulong32)(x)<<(ulong32)((y)&31)) | (((ulong32)(x)&0xFFFFFFFFUL)>>(ulong32)((32-((y)&31))&31))) & 0xFFFFFFFFUL) +#define ROR(x, y) ( ((((ulong32)(x)&0xFFFFFFFFUL)>>(ulong32)((y)&31)) | ((ulong32)(x)<<(ulong32)((32-((y)&31))&31))) & 0xFFFFFFFFUL) +#define ROLc(x, y) ( (((ulong32)(x)<<(ulong32)((y)&31)) | (((ulong32)(x)&0xFFFFFFFFUL)>>(ulong32)((32-((y)&31))&31))) & 0xFFFFFFFFUL) +#define RORc(x, y) ( ((((ulong32)(x)&0xFFFFFFFFUL)>>(ulong32)((y)&31)) | ((ulong32)(x)<<(ulong32)((32-((y)&31))&31))) & 0xFFFFFFFFUL) + +#endif + + +/* 64-bit Rotates */ +#if !defined(__STRICT_ANSI__) && defined(__GNUC__) && defined(__x86_64__) && !defined(_WIN64) && !defined(LTC_NO_ASM) + +static inline ulong64 ROL64(ulong64 word, int i) +{ + asm("rolq %%cl,%0" + :"=r" (word) + :"0" (word),"c" (i)); + return word; +} + +static inline ulong64 ROR64(ulong64 word, int i) +{ + asm("rorq %%cl,%0" + :"=r" (word) + :"0" (word),"c" (i)); + return word; +} + +#ifndef LTC_NO_ROLC + +#define ROL64c(word,i) ({ \ + ulong64 __ROL64c_tmp = word; \ + __asm__ ("rolq %2, %0" : \ + "=r" (__ROL64c_tmp) : \ + "0" (__ROL64c_tmp), \ + "J" (i)); \ + __ROL64c_tmp; \ + }) +#define ROR64c(word,i) ({ \ + ulong64 __ROR64c_tmp = word; \ + __asm__ ("rorq %2, %0" : \ + "=r" (__ROR64c_tmp) : \ + "0" (__ROR64c_tmp), \ + "J" (i)); \ + __ROR64c_tmp; \ + }) + +#else /* LTC_NO_ROLC */ + +#define ROL64c ROL64 +#define ROR64c ROR64 + +#endif + +#else /* Not x86_64 */ + +#define ROL64(x, y) \ + ( (((x)<<((ulong64)(y)&63)) | \ + (((x)&CONST64(0xFFFFFFFFFFFFFFFF))>>(((ulong64)64-((y)&63))&63))) & CONST64(0xFFFFFFFFFFFFFFFF)) + +#define ROR64(x, y) \ + ( ((((x)&CONST64(0xFFFFFFFFFFFFFFFF))>>((ulong64)(y)&CONST64(63))) | \ + ((x)<<(((ulong64)64-((y)&63))&63))) & CONST64(0xFFFFFFFFFFFFFFFF)) + +#define ROL64c(x, y) \ + ( (((x)<<((ulong64)(y)&63)) | \ + (((x)&CONST64(0xFFFFFFFFFFFFFFFF))>>(((ulong64)64-((y)&63))&63))) & CONST64(0xFFFFFFFFFFFFFFFF)) + +#define ROR64c(x, y) \ + ( ((((x)&CONST64(0xFFFFFFFFFFFFFFFF))>>((ulong64)(y)&CONST64(63))) | \ + ((x)<<(((ulong64)64-((y)&63))&63))) & CONST64(0xFFFFFFFFFFFFFFFF)) + +#endif + +#ifndef MAX + #define MAX(x, y) ( ((x)>(y))?(x):(y) ) +#endif + +#ifndef MIN + #define MIN(x, y) ( ((x)<(y))?(x):(y) ) +#endif + +#ifndef LTC_UNUSED_PARAM + #define LTC_UNUSED_PARAM(x) (void)(x) +#endif + +/* extract a byte portably */ +#ifdef _MSC_VER + #define byte(x, n) ((unsigned char)((x) >> (8 * (n)))) +#else + #define byte(x, n) (((x) >> (8 * (n))) & 255) +#endif + +/* there is no snprintf before Visual C++ 2015 */ +#if defined(_MSC_VER) && _MSC_VER < 1900 +#define snprintf _snprintf +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/headers/tomcrypt_math.h b/fsbl/lib/libtomcrypt/src/headers/tomcrypt_math.h new file mode 100644 index 000000000..d8e7e36bb --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/headers/tomcrypt_math.h @@ -0,0 +1,583 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** math functions **/ + +#define LTC_MP_LT -1 +#define LTC_MP_EQ 0 +#define LTC_MP_GT 1 + +#define LTC_MP_NO 0 +#define LTC_MP_YES 1 + +#ifndef LTC_MECC + typedef void ecc_point; +#endif + +#ifndef LTC_MRSA + typedef void rsa_key; +#endif + +#ifndef LTC_MILLER_RABIN_REPS + /* Number of rounds of the Miller-Rabin test + * "Reasonable values of reps are between 15 and 50." c.f. gmp doc of mpz_probab_prime_p() + * As of https://security.stackexchange.com/a/4546 we should use 40 rounds */ + #define LTC_MILLER_RABIN_REPS 40 +#endif + +int radix_to_bin(const void *in, int radix, void *out, unsigned long *len); + +/** math descriptor */ +typedef struct { + /** Name of the math provider */ + const char *name; + + /** Bits per digit, amount of bits must fit in an unsigned long */ + int bits_per_digit; + +/* ---- init/deinit functions ---- */ + + /** initialize a bignum + @param a The number to initialize + @return CRYPT_OK on success + */ + int (*init)(void **a); + + /** init copy + @param dst The number to initialize and write to + @param src The number to copy from + @return CRYPT_OK on success + */ + int (*init_copy)(void **dst, void *src); + + /** deinit + @param a The number to free + @return CRYPT_OK on success + */ + void (*deinit)(void *a); + +/* ---- data movement ---- */ + + /** negate + @param src The number to negate + @param dst The destination + @return CRYPT_OK on success + */ + int (*neg)(void *src, void *dst); + + /** copy + @param src The number to copy from + @param dst The number to write to + @return CRYPT_OK on success + */ + int (*copy)(void *src, void *dst); + +/* ---- trivial low level functions ---- */ + + /** set small constant + @param a Number to write to + @param n Source upto bits_per_digit (actually meant for very small constants) + @return CRYPT_OK on success + */ + int (*set_int)(void *a, ltc_mp_digit n); + + /** get small constant + @param a Small number to read, + only fetches up to bits_per_digit from the number + @return The lower bits_per_digit of the integer (unsigned) + */ + unsigned long (*get_int)(void *a); + + /** get digit n + @param a The number to read from + @param n The number of the digit to fetch + @return The bits_per_digit sized n'th digit of a + */ + ltc_mp_digit (*get_digit)(void *a, int n); + + /** Get the number of digits that represent the number + @param a The number to count + @return The number of digits used to represent the number + */ + int (*get_digit_count)(void *a); + + /** compare two integers + @param a The left side integer + @param b The right side integer + @return LTC_MP_LT if a < b, + LTC_MP_GT if a > b and + LTC_MP_EQ otherwise. (signed comparison) + */ + int (*compare)(void *a, void *b); + + /** compare against int + @param a The left side integer + @param b The right side integer (upto bits_per_digit) + @return LTC_MP_LT if a < b, + LTC_MP_GT if a > b and + LTC_MP_EQ otherwise. (signed comparison) + */ + int (*compare_d)(void *a, ltc_mp_digit n); + + /** Count the number of bits used to represent the integer + @param a The integer to count + @return The number of bits required to represent the integer + */ + int (*count_bits)(void * a); + + /** Count the number of LSB bits which are zero + @param a The integer to count + @return The number of contiguous zero LSB bits + */ + int (*count_lsb_bits)(void *a); + + /** Compute a power of two + @param a The integer to store the power in + @param n The power of two you want to store (a = 2^n) + @return CRYPT_OK on success + */ + int (*twoexpt)(void *a , int n); + +/* ---- radix conversions ---- */ + + /** read ascii string + @param a The integer to store into + @param str The string to read + @param radix The radix the integer has been represented in (2-64) + @return CRYPT_OK on success + */ + int (*read_radix)(void *a, const char *str, int radix); + + /** write number to string + @param a The integer to store + @param str The destination for the string + @param radix The radix the integer is to be represented in (2-64) + @return CRYPT_OK on success + */ + int (*write_radix)(void *a, char *str, int radix); + + /** get size as unsigned char string + @param a The integer to get the size (when stored in array of octets) + @return The length of the integer in octets + */ + unsigned long (*unsigned_size)(void *a); + + /** store an integer as an array of octets + @param src The integer to store + @param dst The buffer to store the integer in + @return CRYPT_OK on success + */ + int (*unsigned_write)(void *src, unsigned char *dst); + + /** read an array of octets and store as integer + @param dst The integer to load + @param src The array of octets + @param len The number of octets + @return CRYPT_OK on success + */ + int (*unsigned_read)( void *dst, + unsigned char *src, + unsigned long len); + +/* ---- basic math ---- */ + + /** add two integers + @param a The first source integer + @param b The second source integer + @param c The destination of "a + b" + @return CRYPT_OK on success + */ + int (*add)(void *a, void *b, void *c); + + /** add two integers + @param a The first source integer + @param b The second source integer + (single digit of upto bits_per_digit in length) + @param c The destination of "a + b" + @return CRYPT_OK on success + */ + int (*addi)(void *a, ltc_mp_digit b, void *c); + + /** subtract two integers + @param a The first source integer + @param b The second source integer + @param c The destination of "a - b" + @return CRYPT_OK on success + */ + int (*sub)(void *a, void *b, void *c); + + /** subtract two integers + @param a The first source integer + @param b The second source integer + (single digit of upto bits_per_digit in length) + @param c The destination of "a - b" + @return CRYPT_OK on success + */ + int (*subi)(void *a, ltc_mp_digit b, void *c); + + /** multiply two integers + @param a The first source integer + @param b The second source integer + (single digit of upto bits_per_digit in length) + @param c The destination of "a * b" + @return CRYPT_OK on success + */ + int (*mul)(void *a, void *b, void *c); + + /** multiply two integers + @param a The first source integer + @param b The second source integer + (single digit of upto bits_per_digit in length) + @param c The destination of "a * b" + @return CRYPT_OK on success + */ + int (*muli)(void *a, ltc_mp_digit b, void *c); + + /** Square an integer + @param a The integer to square + @param b The destination + @return CRYPT_OK on success + */ + int (*sqr)(void *a, void *b); + + /** Divide an integer + @param a The dividend + @param b The divisor + @param c The quotient (can be NULL to signify don't care) + @param d The remainder (can be NULL to signify don't care) + @return CRYPT_OK on success + */ + int (*mpdiv)(void *a, void *b, void *c, void *d); + + /** divide by two + @param a The integer to divide (shift right) + @param b The destination + @return CRYPT_OK on success + */ + int (*div_2)(void *a, void *b); + + /** Get remainder (small value) + @param a The integer to reduce + @param b The modulus (upto bits_per_digit in length) + @param c The destination for the residue + @return CRYPT_OK on success + */ + int (*modi)(void *a, ltc_mp_digit b, ltc_mp_digit *c); + + /** gcd + @param a The first integer + @param b The second integer + @param c The destination for (a, b) + @return CRYPT_OK on success + */ + int (*gcd)(void *a, void *b, void *c); + + /** lcm + @param a The first integer + @param b The second integer + @param c The destination for [a, b] + @return CRYPT_OK on success + */ + int (*lcm)(void *a, void *b, void *c); + + /** Modular multiplication + @param a The first source + @param b The second source + @param c The modulus + @param d The destination (a*b mod c) + @return CRYPT_OK on success + */ + int (*mulmod)(void *a, void *b, void *c, void *d); + + /** Modular squaring + @param a The first source + @param b The modulus + @param c The destination (a*a mod b) + @return CRYPT_OK on success + */ + int (*sqrmod)(void *a, void *b, void *c); + + /** Modular inversion + @param a The value to invert + @param b The modulus + @param c The destination (1/a mod b) + @return CRYPT_OK on success + */ + int (*invmod)(void *, void *, void *); + +/* ---- reduction ---- */ + + /** setup Montgomery + @param a The modulus + @param b The destination for the reduction digit + @return CRYPT_OK on success + */ + int (*montgomery_setup)(void *a, void **b); + + /** get normalization value + @param a The destination for the normalization value + @param b The modulus + @return CRYPT_OK on success + */ + int (*montgomery_normalization)(void *a, void *b); + + /** reduce a number + @param a The number [and dest] to reduce + @param b The modulus + @param c The value "b" from montgomery_setup() + @return CRYPT_OK on success + */ + int (*montgomery_reduce)(void *a, void *b, void *c); + + /** clean up (frees memory) + @param a The value "b" from montgomery_setup() + @return CRYPT_OK on success + */ + void (*montgomery_deinit)(void *a); + +/* ---- exponentiation ---- */ + + /** Modular exponentiation + @param a The base integer + @param b The power (can be negative) integer + @param c The modulus integer + @param d The destination + @return CRYPT_OK on success + */ + int (*exptmod)(void *a, void *b, void *c, void *d); + + /** Primality testing + @param a The integer to test + @param b The number of Miller-Rabin tests that shall be executed + @param c The destination of the result (FP_YES if prime) + @return CRYPT_OK on success + */ + int (*isprime)(void *a, int b, int *c); + +/* ---- (optional) ecc point math ---- */ + + /** ECC GF(p) point multiplication (from the NIST curves) + @param k The integer to multiply the point by + @param G The point to multiply + @param R The destination for kG + @param modulus The modulus for the field + @param map Boolean indicated whether to map back to affine or not + (can be ignored if you work in affine only) + @return CRYPT_OK on success + */ + int (*ecc_ptmul)( void *k, + ecc_point *G, + ecc_point *R, + void *modulus, + int map); + + /** ECC GF(p) point addition + @param P The first point + @param Q The second point + @param R The destination of P + Q + @param modulus The modulus + @param mp The "b" value from montgomery_setup() + @return CRYPT_OK on success + */ + int (*ecc_ptadd)(ecc_point *P, + ecc_point *Q, + ecc_point *R, + void *modulus, + void *mp); + + /** ECC GF(p) point double + @param P The first point + @param R The destination of 2P + @param modulus The modulus + @param mp The "b" value from montgomery_setup() + @return CRYPT_OK on success + */ + int (*ecc_ptdbl)(ecc_point *P, + ecc_point *R, + void *modulus, + void *mp); + + /** ECC mapping from projective to affine, + currently uses (x,y,z) => (x/z^2, y/z^3, 1) + @param P The point to map + @param modulus The modulus + @param mp The "b" value from montgomery_setup() + @return CRYPT_OK on success + @remark The mapping can be different but keep in mind a + ecc_point only has three integers (x,y,z) so if + you use a different mapping you have to make it fit. + */ + int (*ecc_map)(ecc_point *P, void *modulus, void *mp); + + /** Computes kA*A + kB*B = C using Shamir's Trick + @param A First point to multiply + @param kA What to multiple A by + @param B Second point to multiply + @param kB What to multiple B by + @param C [out] Destination point (can overlap with A or B) + @param modulus Modulus for curve + @return CRYPT_OK on success + */ + int (*ecc_mul2add)(ecc_point *A, void *kA, + ecc_point *B, void *kB, + ecc_point *C, + void *modulus); + +/* ---- (optional) rsa optimized math (for internal CRT) ---- */ + + /** RSA Key Generation + @param prng An active PRNG state + @param wprng The index of the PRNG desired + @param size The size of the key in octets + @param e The "e" value (public key). + e==65537 is a good choice + @param key [out] Destination of a newly created private key pair + @return CRYPT_OK if successful, upon error all allocated ram is freed + */ + int (*rsa_keygen)(prng_state *prng, + int wprng, + int size, + long e, + rsa_key *key); + + /** RSA exponentiation + @param in The octet array representing the base + @param inlen The length of the input + @param out The destination (to be stored in an octet array format) + @param outlen The length of the output buffer and the resulting size + (zero padded to the size of the modulus) + @param which PK_PUBLIC for public RSA and PK_PRIVATE for private RSA + @param key The RSA key to use + @return CRYPT_OK on success + */ + int (*rsa_me)(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, int which, + rsa_key *key); + +/* ---- basic math continued ---- */ + + /** Modular addition + @param a The first source + @param b The second source + @param c The modulus + @param d The destination (a + b mod c) + @return CRYPT_OK on success + */ + int (*addmod)(void *a, void *b, void *c, void *d); + + /** Modular substraction + @param a The first source + @param b The second source + @param c The modulus + @param d The destination (a - b mod c) + @return CRYPT_OK on success + */ + int (*submod)(void *a, void *b, void *c, void *d); + +/* ---- misc stuff ---- */ + + /** Make a pseudo-random mpi + @param a The mpi to make random + @param size The desired length + @return CRYPT_OK on success + */ + int (*rand)(void *a, int size); +} ltc_math_descriptor; + +extern ltc_math_descriptor ltc_mp; + +int ltc_init_multi(void **a, ...); +void ltc_deinit_multi(void *a, ...); +void ltc_cleanup_multi(void **a, ...); + +#ifdef LTM_DESC +extern const ltc_math_descriptor ltm_desc; +#endif + +#ifdef TFM_DESC +extern const ltc_math_descriptor tfm_desc; +#endif + +#ifdef GMP_DESC +extern const ltc_math_descriptor gmp_desc; +#endif + +#if !defined(DESC_DEF_ONLY) && defined(LTC_SOURCE) + +#define MP_DIGIT_BIT ltc_mp.bits_per_digit + +/* some handy macros */ +#define mp_init(a) ltc_mp.init(a) +#define mp_init_multi ltc_init_multi +#define mp_clear(a) ltc_mp.deinit(a) +#define mp_clear_multi ltc_deinit_multi +#define mp_cleanup_multi ltc_cleanup_multi +#define mp_init_copy(a, b) ltc_mp.init_copy(a, b) + +#define mp_neg(a, b) ltc_mp.neg(a, b) +#define mp_copy(a, b) ltc_mp.copy(a, b) + +#define mp_set(a, b) ltc_mp.set_int(a, b) +#define mp_set_int(a, b) ltc_mp.set_int(a, b) +#define mp_get_int(a) ltc_mp.get_int(a) +#define mp_get_digit(a, n) ltc_mp.get_digit(a, n) +#define mp_get_digit_count(a) ltc_mp.get_digit_count(a) +#define mp_cmp(a, b) ltc_mp.compare(a, b) +#define mp_cmp_d(a, b) ltc_mp.compare_d(a, b) +#define mp_count_bits(a) ltc_mp.count_bits(a) +#define mp_cnt_lsb(a) ltc_mp.count_lsb_bits(a) +#define mp_2expt(a, b) ltc_mp.twoexpt(a, b) + +#define mp_read_radix(a, b, c) ltc_mp.read_radix(a, b, c) +#define mp_toradix(a, b, c) ltc_mp.write_radix(a, b, c) +#define mp_unsigned_bin_size(a) ltc_mp.unsigned_size(a) +#define mp_to_unsigned_bin(a, b) ltc_mp.unsigned_write(a, b) +#define mp_read_unsigned_bin(a, b, c) ltc_mp.unsigned_read(a, b, c) + +#define mp_add(a, b, c) ltc_mp.add(a, b, c) +#define mp_add_d(a, b, c) ltc_mp.addi(a, b, c) +#define mp_sub(a, b, c) ltc_mp.sub(a, b, c) +#define mp_sub_d(a, b, c) ltc_mp.subi(a, b, c) +#define mp_mul(a, b, c) ltc_mp.mul(a, b, c) +#define mp_mul_d(a, b, c) ltc_mp.muli(a, b, c) +#define mp_sqr(a, b) ltc_mp.sqr(a, b) +#define mp_div(a, b, c, d) ltc_mp.mpdiv(a, b, c, d) +#define mp_div_2(a, b) ltc_mp.div_2(a, b) +#define mp_mod(a, b, c) ltc_mp.mpdiv(a, b, NULL, c) +#define mp_mod_d(a, b, c) ltc_mp.modi(a, b, c) +#define mp_gcd(a, b, c) ltc_mp.gcd(a, b, c) +#define mp_lcm(a, b, c) ltc_mp.lcm(a, b, c) + +#define mp_addmod(a, b, c, d) ltc_mp.addmod(a, b, c, d) +#define mp_submod(a, b, c, d) ltc_mp.submod(a, b, c, d) +#define mp_mulmod(a, b, c, d) ltc_mp.mulmod(a, b, c, d) +#define mp_sqrmod(a, b, c) ltc_mp.sqrmod(a, b, c) +#define mp_invmod(a, b, c) ltc_mp.invmod(a, b, c) + +#define mp_montgomery_setup(a, b) ltc_mp.montgomery_setup(a, b) +#define mp_montgomery_normalization(a, b) ltc_mp.montgomery_normalization(a, b) +#define mp_montgomery_reduce(a, b, c) ltc_mp.montgomery_reduce(a, b, c) +#define mp_montgomery_free(a) ltc_mp.montgomery_deinit(a) + +#define mp_exptmod(a,b,c,d) ltc_mp.exptmod(a,b,c,d) +#define mp_prime_is_prime(a, b, c) ltc_mp.isprime(a, b, c) + +#define mp_iszero(a) (mp_cmp_d(a, 0) == LTC_MP_EQ ? LTC_MP_YES : LTC_MP_NO) +#define mp_isodd(a) (mp_get_digit_count(a) > 0 ? (mp_get_digit(a, 0) & 1 ? LTC_MP_YES : LTC_MP_NO) : LTC_MP_NO) +#define mp_exch(a, b) do { void *ABC__tmp = a; a = b; b = ABC__tmp; } while(0) + +#define mp_tohex(a, b) mp_toradix(a, b, 16) + +#define mp_rand(a, b) ltc_mp.rand(a, b) + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/headers/tomcrypt_misc.h b/fsbl/lib/libtomcrypt/src/headers/tomcrypt_misc.h new file mode 100644 index 000000000..21540fe72 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/headers/tomcrypt_misc.h @@ -0,0 +1,112 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* ---- LTC_BASE64 Routines ---- */ +#ifdef LTC_BASE64 +int base64_encode(const unsigned char *in, unsigned long len, + unsigned char *out, unsigned long *outlen); + +int base64_decode(const unsigned char *in, unsigned long len, + unsigned char *out, unsigned long *outlen); +int base64_strict_decode(const unsigned char *in, unsigned long len, + unsigned char *out, unsigned long *outlen); +#endif + +#ifdef LTC_BASE64_URL +int base64url_encode(const unsigned char *in, unsigned long len, + unsigned char *out, unsigned long *outlen); +int base64url_strict_encode(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); + +int base64url_decode(const unsigned char *in, unsigned long len, + unsigned char *out, unsigned long *outlen); +int base64url_strict_decode(const unsigned char *in, unsigned long len, + unsigned char *out, unsigned long *outlen); +#endif + +/* ===> LTC_HKDF -- RFC5869 HMAC-based Key Derivation Function <=== */ +#ifdef LTC_HKDF + +int hkdf_test(void); + +int hkdf_extract(int hash_idx, + const unsigned char *salt, unsigned long saltlen, + const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); + +int hkdf_expand(int hash_idx, + const unsigned char *info, unsigned long infolen, + const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long outlen); + +int hkdf(int hash_idx, + const unsigned char *salt, unsigned long saltlen, + const unsigned char *info, unsigned long infolen, + const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long outlen); + +#endif /* LTC_HKDF */ + +/* ---- MEM routines ---- */ +int mem_neq(const void *a, const void *b, size_t len); +void burn_stack(unsigned long len); + +const char *error_to_string(int err); + +extern const char *crypt_build_settings; + +/* ---- HMM ---- */ +int crypt_fsa(void *mp, ...); + +/* ---- Dynamic language support ---- */ +int crypt_get_constant(const char* namein, int *valueout); +int crypt_list_all_constants(char *names_list, unsigned int *names_list_size); + +int crypt_get_size(const char* namein, unsigned int *sizeout); +int crypt_list_all_sizes(char *names_list, unsigned int *names_list_size); + +#ifdef LTM_DESC +void init_LTM(void); +#endif +#ifdef TFM_DESC +void init_TFM(void); +#endif +#ifdef GMP_DESC +void init_GMP(void); +#endif + +#ifdef LTC_ADLER32 +typedef struct adler32_state_s +{ + unsigned short s[2]; +} adler32_state; + +void adler32_init(adler32_state *ctx); +void adler32_update(adler32_state *ctx, const unsigned char *input, unsigned long length); +void adler32_finish(adler32_state *ctx, void *hash, unsigned long size); +int adler32_test(void); +#endif + +#ifdef LTC_CRC32 +typedef struct crc32_state_s +{ + ulong32 crc; +} crc32_state; + +void crc32_init(crc32_state *ctx); +void crc32_update(crc32_state *ctx, const unsigned char *input, unsigned long length); +void crc32_finish(crc32_state *ctx, void *hash, unsigned long size); +int crc32_test(void); +#endif + +int compare_testvector(const void* is, const unsigned long is_len, const void* should, const unsigned long should_len, const char* what, int which); + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/headers/tomcrypt_pk.h b/fsbl/lib/libtomcrypt/src/headers/tomcrypt_pk.h new file mode 100644 index 000000000..fb9b07c86 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/headers/tomcrypt_pk.h @@ -0,0 +1,747 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* ---- NUMBER THEORY ---- */ + +enum { + PK_PUBLIC=0, + PK_PRIVATE=1 +}; + +/* Indicates standard output formats that can be read e.g. by OpenSSL or GnuTLS */ +#define PK_STD 0x1000 + +int rand_prime(void *N, long len, prng_state *prng, int wprng); + +#ifdef LTC_SOURCE +/* internal helper functions */ +int rand_bn_bits(void *N, int bits, prng_state *prng, int wprng); +int rand_bn_upto(void *N, void *limit, prng_state *prng, int wprng); + +enum public_key_algorithms { + PKA_RSA, + PKA_DSA +}; + +typedef struct Oid { + unsigned long OID[16]; + /** Number of OID digits in use */ + unsigned long OIDlen; +} oid_st; + +int pk_get_oid(int pk, oid_st *st); +#endif /* LTC_SOURCE */ + +/* ---- RSA ---- */ +#ifdef LTC_MRSA + +/** RSA PKCS style key */ +typedef struct Rsa_key { + /** Type of key, PK_PRIVATE or PK_PUBLIC */ + int type; + /** The public exponent */ + void *e; + /** The private exponent */ + void *d; + /** The modulus */ + void *N; + /** The p factor of N */ + void *p; + /** The q factor of N */ + void *q; + /** The 1/q mod p CRT param */ + void *qP; + /** The d mod (p - 1) CRT param */ + void *dP; + /** The d mod (q - 1) CRT param */ + void *dQ; +} rsa_key; + +int rsa_make_key(prng_state *prng, int wprng, int size, long e, rsa_key *key); + +int rsa_get_size(rsa_key *key); + +int rsa_exptmod(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, int which, + rsa_key *key); + +void rsa_free(rsa_key *key); + +/* These use PKCS #1 v2.0 padding */ +#define rsa_encrypt_key(_in, _inlen, _out, _outlen, _lparam, _lparamlen, _prng, _prng_idx, _hash_idx, _key) \ + rsa_encrypt_key_ex(_in, _inlen, _out, _outlen, _lparam, _lparamlen, _prng, _prng_idx, _hash_idx, LTC_PKCS_1_OAEP, _key) + +#define rsa_decrypt_key(_in, _inlen, _out, _outlen, _lparam, _lparamlen, _hash_idx, _stat, _key) \ + rsa_decrypt_key_ex(_in, _inlen, _out, _outlen, _lparam, _lparamlen, _hash_idx, LTC_PKCS_1_OAEP, _stat, _key) + +#define rsa_sign_hash(_in, _inlen, _out, _outlen, _prng, _prng_idx, _hash_idx, _saltlen, _key) \ + rsa_sign_hash_ex(_in, _inlen, _out, _outlen, LTC_PKCS_1_PSS, _prng, _prng_idx, _hash_idx, _saltlen, _key) + +#define rsa_verify_hash(_sig, _siglen, _hash, _hashlen, _hash_idx, _saltlen, _stat, _key) \ + rsa_verify_hash_ex(_sig, _siglen, _hash, _hashlen, LTC_PKCS_1_PSS, _hash_idx, _saltlen, _stat, _key) + +#define rsa_sign_saltlen_get_max(_hash_idx, _key) \ + rsa_sign_saltlen_get_max_ex(LTC_PKCS_1_PSS, _hash_idx, _key) + +/* These can be switched between PKCS #1 v2.x and PKCS #1 v1.5 paddings */ +int rsa_encrypt_key_ex(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + const unsigned char *lparam, unsigned long lparamlen, + prng_state *prng, int prng_idx, int hash_idx, int padding, rsa_key *key); + +int rsa_decrypt_key_ex(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + const unsigned char *lparam, unsigned long lparamlen, + int hash_idx, int padding, + int *stat, rsa_key *key); + +int rsa_sign_hash_ex(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + int padding, + prng_state *prng, int prng_idx, + int hash_idx, unsigned long saltlen, + rsa_key *key); + +int rsa_verify_hash_ex(const unsigned char *sig, unsigned long siglen, + const unsigned char *hash, unsigned long hashlen, + int padding, + int hash_idx, unsigned long saltlen, + int *stat, rsa_key *key); + +int rsa_sign_saltlen_get_max_ex(int padding, int hash_idx, rsa_key *key); + +/* PKCS #1 import/export */ +int rsa_export(unsigned char *out, unsigned long *outlen, int type, rsa_key *key); +int rsa_import(const unsigned char *in, unsigned long inlen, rsa_key *key); + +int rsa_import_x509(const unsigned char *in, unsigned long inlen, rsa_key *key); +int rsa_import_pkcs8(const unsigned char *in, unsigned long inlen, + const void *passwd, unsigned long passwdlen, rsa_key *key); + +int rsa_set_key(const unsigned char *N, unsigned long Nlen, + const unsigned char *e, unsigned long elen, + const unsigned char *d, unsigned long dlen, + rsa_key *key); +int rsa_set_factors(const unsigned char *p, unsigned long plen, + const unsigned char *q, unsigned long qlen, + rsa_key *key); +int rsa_set_crt_params(const unsigned char *dP, unsigned long dPlen, + const unsigned char *dQ, unsigned long dQlen, + const unsigned char *qP, unsigned long qPlen, + rsa_key *key); +#endif + +/* ---- Katja ---- */ +#ifdef LTC_MKAT + +/* Min and Max KAT key sizes (in bits) */ +#define MIN_KAT_SIZE 1024 +#define MAX_KAT_SIZE 4096 + +/** Katja PKCS style key */ +typedef struct KAT_key { + /** Type of key, PK_PRIVATE or PK_PUBLIC */ + int type; + /** The private exponent */ + void *d; + /** The modulus */ + void *N; + /** The p factor of N */ + void *p; + /** The q factor of N */ + void *q; + /** The 1/q mod p CRT param */ + void *qP; + /** The d mod (p - 1) CRT param */ + void *dP; + /** The d mod (q - 1) CRT param */ + void *dQ; + /** The pq param */ + void *pq; +} katja_key; + +int katja_make_key(prng_state *prng, int wprng, int size, katja_key *key); + +int katja_exptmod(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, int which, + katja_key *key); + +void katja_free(katja_key *key); + +/* These use PKCS #1 v2.0 padding */ +int katja_encrypt_key(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + const unsigned char *lparam, unsigned long lparamlen, + prng_state *prng, int prng_idx, int hash_idx, katja_key *key); + +int katja_decrypt_key(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + const unsigned char *lparam, unsigned long lparamlen, + int hash_idx, int *stat, + katja_key *key); + +/* PKCS #1 import/export */ +int katja_export(unsigned char *out, unsigned long *outlen, int type, katja_key *key); +int katja_import(const unsigned char *in, unsigned long inlen, katja_key *key); + +#endif + +/* ---- DH Routines ---- */ +#ifdef LTC_MDH + +typedef struct { + int type; + void *x; + void *y; + void *base; + void *prime; +} dh_key; + +int dh_get_groupsize(dh_key *key); + +int dh_export(unsigned char *out, unsigned long *outlen, int type, dh_key *key); +int dh_import(const unsigned char *in, unsigned long inlen, dh_key *key); + +int dh_set_pg(const unsigned char *p, unsigned long plen, + const unsigned char *g, unsigned long glen, + dh_key *key); +int dh_set_pg_dhparam(const unsigned char *dhparam, unsigned long dhparamlen, dh_key *key); +int dh_set_pg_groupsize(int groupsize, dh_key *key); + +int dh_set_key(const unsigned char *in, unsigned long inlen, int type, dh_key *key); +int dh_generate_key(prng_state *prng, int wprng, dh_key *key); + +int dh_shared_secret(dh_key *private_key, dh_key *public_key, + unsigned char *out, unsigned long *outlen); + +void dh_free(dh_key *key); + +int dh_export_key(void *out, unsigned long *outlen, int type, dh_key *key); + +#ifdef LTC_SOURCE +typedef struct { + int size; + const char *name, *base, *prime; +} ltc_dh_set_type; + +extern const ltc_dh_set_type ltc_dh_sets[]; + +/* internal helper functions */ +int dh_check_pubkey(dh_key *key); +#endif + +#endif /* LTC_MDH */ + + +/* ---- ECC Routines ---- */ +#ifdef LTC_MECC + +/* size of our temp buffers for exported keys */ +#define ECC_BUF_SIZE 256 + +/* max private key size */ +#define ECC_MAXSIZE 66 + +/** Structure defines a NIST GF(p) curve */ +typedef struct { + /** The size of the curve in octets */ + int size; + + /** name of curve */ + const char *name; + + /** The prime that defines the field the curve is in (encoded in hex) */ + const char *prime; + + /** The fields B param (hex) */ + const char *B; + + /** The order of the curve (hex) */ + const char *order; + + /** The x co-ordinate of the base point on the curve (hex) */ + const char *Gx; + + /** The y co-ordinate of the base point on the curve (hex) */ + const char *Gy; +} ltc_ecc_set_type; + +/** A point on a ECC curve, stored in Jacbobian format such that (x,y,z) => (x/z^2, y/z^3, 1) when interpretted as affine */ +typedef struct { + /** The x co-ordinate */ + void *x; + + /** The y co-ordinate */ + void *y; + + /** The z co-ordinate */ + void *z; +} ecc_point; + +/** An ECC key */ +typedef struct { + /** Type of key, PK_PRIVATE or PK_PUBLIC */ + int type; + + /** Index into the ltc_ecc_sets[] for the parameters of this curve; if -1, then this key is using user supplied curve in dp */ + int idx; + + /** pointer to domain parameters; either points to NIST curves (identified by idx >= 0) or user supplied curve */ + const ltc_ecc_set_type *dp; + + /** The public key */ + ecc_point pubkey; + + /** The private key */ + void *k; +} ecc_key; + +/** the ECC params provided */ +extern const ltc_ecc_set_type ltc_ecc_sets[]; + +int ecc_test(void); +void ecc_sizes(int *low, int *high); +int ecc_get_size(ecc_key *key); + +int ecc_make_key(prng_state *prng, int wprng, int keysize, ecc_key *key); +int ecc_make_key_ex(prng_state *prng, int wprng, ecc_key *key, const ltc_ecc_set_type *dp); +void ecc_free(ecc_key *key); + +int ecc_export(unsigned char *out, unsigned long *outlen, int type, ecc_key *key); +int ecc_import(const unsigned char *in, unsigned long inlen, ecc_key *key); +int ecc_import_ex(const unsigned char *in, unsigned long inlen, ecc_key *key, const ltc_ecc_set_type *dp); + +int ecc_ansi_x963_export(ecc_key *key, unsigned char *out, unsigned long *outlen); +int ecc_ansi_x963_import(const unsigned char *in, unsigned long inlen, ecc_key *key); +int ecc_ansi_x963_import_ex(const unsigned char *in, unsigned long inlen, ecc_key *key, ltc_ecc_set_type *dp); + +int ecc_shared_secret(ecc_key *private_key, ecc_key *public_key, + unsigned char *out, unsigned long *outlen); + +int ecc_encrypt_key(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + prng_state *prng, int wprng, int hash, + ecc_key *key); + +int ecc_decrypt_key(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + ecc_key *key); + +int ecc_sign_hash_rfc7518(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + prng_state *prng, int wprng, ecc_key *key); + +int ecc_sign_hash(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + prng_state *prng, int wprng, ecc_key *key); + +int ecc_verify_hash_rfc7518(const unsigned char *sig, unsigned long siglen, + const unsigned char *hash, unsigned long hashlen, + int *stat, ecc_key *key); + +int ecc_verify_hash(const unsigned char *sig, unsigned long siglen, + const unsigned char *hash, unsigned long hashlen, + int *stat, ecc_key *key); + +/* low level functions */ +ecc_point *ltc_ecc_new_point(void); +void ltc_ecc_del_point(ecc_point *p); +int ltc_ecc_is_valid_idx(int n); + +/* point ops (mp == montgomery digit) */ +#if !defined(LTC_MECC_ACCEL) || defined(LTM_DESC) || defined(GMP_DESC) +/* R = 2P */ +int ltc_ecc_projective_dbl_point(ecc_point *P, ecc_point *R, void *modulus, void *mp); + +/* R = P + Q */ +int ltc_ecc_projective_add_point(ecc_point *P, ecc_point *Q, ecc_point *R, void *modulus, void *mp); +#endif + +#if defined(LTC_MECC_FP) +/* optimized point multiplication using fixed point cache (HAC algorithm 14.117) */ +int ltc_ecc_fp_mulmod(void *k, ecc_point *G, ecc_point *R, void *modulus, int map); + +/* functions for saving/loading/freeing/adding to fixed point cache */ +int ltc_ecc_fp_save_state(unsigned char **out, unsigned long *outlen); +int ltc_ecc_fp_restore_state(unsigned char *in, unsigned long inlen); +void ltc_ecc_fp_free(void); +int ltc_ecc_fp_add_point(ecc_point *g, void *modulus, int lock); + +/* lock/unlock all points currently in fixed point cache */ +void ltc_ecc_fp_tablelock(int lock); +#endif + +/* R = kG */ +int ltc_ecc_mulmod(void *k, ecc_point *G, ecc_point *R, void *modulus, int map); + +#ifdef LTC_ECC_SHAMIR +/* kA*A + kB*B = C */ +int ltc_ecc_mul2add(ecc_point *A, void *kA, + ecc_point *B, void *kB, + ecc_point *C, + void *modulus); + +#ifdef LTC_MECC_FP +/* Shamir's trick with optimized point multiplication using fixed point cache */ +int ltc_ecc_fp_mul2add(ecc_point *A, void *kA, + ecc_point *B, void *kB, + ecc_point *C, void *modulus); +#endif + +#endif + + +/* map P to affine from projective */ +int ltc_ecc_map(ecc_point *P, void *modulus, void *mp); + +#endif + +#ifdef LTC_MDSA + +/* Max diff between group and modulus size in bytes */ +#define LTC_MDSA_DELTA 512 + +/* Max DSA group size in bytes (default allows 4k-bit groups) */ +#define LTC_MDSA_MAX_GROUP 512 + +/** DSA key structure */ +typedef struct { + /** The key type, PK_PRIVATE or PK_PUBLIC */ + int type; + + /** The order of the sub-group used in octets */ + int qord; + + /** The generator */ + void *g; + + /** The prime used to generate the sub-group */ + void *q; + + /** The large prime that generats the field the contains the sub-group */ + void *p; + + /** The private key */ + void *x; + + /** The public key */ + void *y; +} dsa_key; + +int dsa_make_key(prng_state *prng, int wprng, int group_size, int modulus_size, dsa_key *key); + +int dsa_set_pqg(const unsigned char *p, unsigned long plen, + const unsigned char *q, unsigned long qlen, + const unsigned char *g, unsigned long glen, + dsa_key *key); +int dsa_set_pqg_dsaparam(const unsigned char *dsaparam, unsigned long dsaparamlen, dsa_key *key); +int dsa_generate_pqg(prng_state *prng, int wprng, int group_size, int modulus_size, dsa_key *key); + +int dsa_set_key(const unsigned char *in, unsigned long inlen, int type, dsa_key *key); +int dsa_generate_key(prng_state *prng, int wprng, dsa_key *key); + +void dsa_free(dsa_key *key); + +int dsa_sign_hash_raw(const unsigned char *in, unsigned long inlen, + void *r, void *s, + prng_state *prng, int wprng, dsa_key *key); + +int dsa_sign_hash(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + prng_state *prng, int wprng, dsa_key *key); + +int dsa_verify_hash_raw( void *r, void *s, + const unsigned char *hash, unsigned long hashlen, + int *stat, dsa_key *key); + +int dsa_verify_hash(const unsigned char *sig, unsigned long siglen, + const unsigned char *hash, unsigned long hashlen, + int *stat, dsa_key *key); + +int dsa_encrypt_key(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + prng_state *prng, int wprng, int hash, + dsa_key *key); + +int dsa_decrypt_key(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + dsa_key *key); + +int dsa_import(const unsigned char *in, unsigned long inlen, dsa_key *key); +int dsa_export(unsigned char *out, unsigned long *outlen, int type, dsa_key *key); +int dsa_verify_key(dsa_key *key, int *stat); +#ifdef LTC_SOURCE +/* internal helper functions */ +int dsa_int_validate_xy(dsa_key *key, int *stat); +int dsa_int_validate_pqg(dsa_key *key, int *stat); +int dsa_int_validate_primes(dsa_key *key, int *stat); +#endif +int dsa_shared_secret(void *private_key, void *base, + dsa_key *public_key, + unsigned char *out, unsigned long *outlen); +#endif + +#ifdef LTC_DER +/* DER handling */ + +typedef enum ltc_asn1_type_ { + /* 0 */ + LTC_ASN1_EOL, + LTC_ASN1_BOOLEAN, + LTC_ASN1_INTEGER, + LTC_ASN1_SHORT_INTEGER, + LTC_ASN1_BIT_STRING, + /* 5 */ + LTC_ASN1_OCTET_STRING, + LTC_ASN1_NULL, + LTC_ASN1_OBJECT_IDENTIFIER, + LTC_ASN1_IA5_STRING, + LTC_ASN1_PRINTABLE_STRING, + /* 10 */ + LTC_ASN1_UTF8_STRING, + LTC_ASN1_UTCTIME, + LTC_ASN1_CHOICE, + LTC_ASN1_SEQUENCE, + LTC_ASN1_SET, + /* 15 */ + LTC_ASN1_SETOF, + LTC_ASN1_RAW_BIT_STRING, + LTC_ASN1_TELETEX_STRING, + LTC_ASN1_CONSTRUCTED, + LTC_ASN1_CONTEXT_SPECIFIC, + /* 20 */ + LTC_ASN1_GENERALIZEDTIME, +} ltc_asn1_type; + +/** A LTC ASN.1 list type */ +typedef struct ltc_asn1_list_ { + /** The LTC ASN.1 enumerated type identifier */ + ltc_asn1_type type; + /** The data to encode or place for decoding */ + void *data; + /** The size of the input or resulting output */ + unsigned long size; + /** The used flag, this is used by the CHOICE ASN.1 type to indicate which choice was made */ + int used; + /** prev/next entry in the list */ + struct ltc_asn1_list_ *prev, *next, *child, *parent; +} ltc_asn1_list; + +#define LTC_SET_ASN1(list, index, Type, Data, Size) \ + do { \ + int LTC_MACRO_temp = (index); \ + ltc_asn1_list *LTC_MACRO_list = (list); \ + LTC_MACRO_list[LTC_MACRO_temp].type = (Type); \ + LTC_MACRO_list[LTC_MACRO_temp].data = (void*)(Data); \ + LTC_MACRO_list[LTC_MACRO_temp].size = (Size); \ + LTC_MACRO_list[LTC_MACRO_temp].used = 0; \ + } while (0) + +/* SEQUENCE */ +int der_encode_sequence_ex(ltc_asn1_list *list, unsigned long inlen, + unsigned char *out, unsigned long *outlen, int type_of); + +#define der_encode_sequence(list, inlen, out, outlen) der_encode_sequence_ex(list, inlen, out, outlen, LTC_ASN1_SEQUENCE) + +int der_decode_sequence_ex(const unsigned char *in, unsigned long inlen, + ltc_asn1_list *list, unsigned long outlen, int ordered); + +#define der_decode_sequence(in, inlen, list, outlen) der_decode_sequence_ex(in, inlen, list, outlen, 1) + +int der_length_sequence(ltc_asn1_list *list, unsigned long inlen, + unsigned long *outlen); + + +#ifdef LTC_SOURCE +/* internal helper functions */ +int der_length_sequence_ex(ltc_asn1_list *list, unsigned long inlen, + unsigned long *outlen, unsigned long *payloadlen); +/* SUBJECT PUBLIC KEY INFO */ +int der_encode_subject_public_key_info(unsigned char *out, unsigned long *outlen, + unsigned int algorithm, void* public_key, unsigned long public_key_len, + unsigned long parameters_type, void* parameters, unsigned long parameters_len); + +int der_decode_subject_public_key_info(const unsigned char *in, unsigned long inlen, + unsigned int algorithm, void* public_key, unsigned long* public_key_len, + unsigned long parameters_type, ltc_asn1_list* parameters, unsigned long parameters_len); +#endif /* LTC_SOURCE */ + +/* SET */ +#define der_decode_set(in, inlen, list, outlen) der_decode_sequence_ex(in, inlen, list, outlen, 0) +#define der_length_set der_length_sequence +int der_encode_set(ltc_asn1_list *list, unsigned long inlen, + unsigned char *out, unsigned long *outlen); + +int der_encode_setof(ltc_asn1_list *list, unsigned long inlen, + unsigned char *out, unsigned long *outlen); + +/* VA list handy helpers with triplets of */ +int der_encode_sequence_multi(unsigned char *out, unsigned long *outlen, ...); +int der_decode_sequence_multi(const unsigned char *in, unsigned long inlen, ...); + +/* FLEXI DECODER handle unknown list decoder */ +int der_decode_sequence_flexi(const unsigned char *in, unsigned long *inlen, ltc_asn1_list **out); +#define der_free_sequence_flexi der_sequence_free +void der_sequence_free(ltc_asn1_list *in); +void der_sequence_shrink(ltc_asn1_list *in); + +/* BOOLEAN */ +int der_length_boolean(unsigned long *outlen); +int der_encode_boolean(int in, + unsigned char *out, unsigned long *outlen); +int der_decode_boolean(const unsigned char *in, unsigned long inlen, + int *out); +/* INTEGER */ +int der_encode_integer(void *num, unsigned char *out, unsigned long *outlen); +int der_decode_integer(const unsigned char *in, unsigned long inlen, void *num); +int der_length_integer(void *num, unsigned long *len); + +/* INTEGER -- handy for 0..2^32-1 values */ +int der_decode_short_integer(const unsigned char *in, unsigned long inlen, unsigned long *num); +int der_encode_short_integer(unsigned long num, unsigned char *out, unsigned long *outlen); +int der_length_short_integer(unsigned long num, unsigned long *outlen); + +/* BIT STRING */ +int der_encode_bit_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +int der_decode_bit_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +int der_encode_raw_bit_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +int der_decode_raw_bit_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +int der_length_bit_string(unsigned long nbits, unsigned long *outlen); + +/* OCTET STRING */ +int der_encode_octet_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +int der_decode_octet_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +int der_length_octet_string(unsigned long noctets, unsigned long *outlen); + +/* OBJECT IDENTIFIER */ +int der_encode_object_identifier(unsigned long *words, unsigned long nwords, + unsigned char *out, unsigned long *outlen); +int der_decode_object_identifier(const unsigned char *in, unsigned long inlen, + unsigned long *words, unsigned long *outlen); +int der_length_object_identifier(unsigned long *words, unsigned long nwords, unsigned long *outlen); +unsigned long der_object_identifier_bits(unsigned long x); + +/* IA5 STRING */ +int der_encode_ia5_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +int der_decode_ia5_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +int der_length_ia5_string(const unsigned char *octets, unsigned long noctets, unsigned long *outlen); + +int der_ia5_char_encode(int c); +int der_ia5_value_decode(int v); + +/* TELETEX STRING */ +int der_decode_teletex_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +int der_length_teletex_string(const unsigned char *octets, unsigned long noctets, unsigned long *outlen); + +#ifdef LTC_SOURCE +/* internal helper functions */ +int der_teletex_char_encode(int c); +int der_teletex_value_decode(int v); +#endif /* LTC_SOURCE */ + + +/* PRINTABLE STRING */ +int der_encode_printable_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +int der_decode_printable_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); +int der_length_printable_string(const unsigned char *octets, unsigned long noctets, unsigned long *outlen); + +int der_printable_char_encode(int c); +int der_printable_value_decode(int v); + +/* UTF-8 */ +#if (defined(SIZE_MAX) || __STDC_VERSION__ >= 199901L || defined(WCHAR_MAX) || defined(__WCHAR_MAX__) || defined(_WCHAR_T) || defined(_WCHAR_T_DEFINED) || defined (__WCHAR_TYPE__)) && !defined(LTC_NO_WCHAR) + #if defined(__WCHAR_MAX__) + #define LTC_WCHAR_MAX __WCHAR_MAX__ + #else + #include + #define LTC_WCHAR_MAX WCHAR_MAX + #endif +/* please note that it might happen that LTC_WCHAR_MAX is undefined */ +#else + typedef ulong32 wchar_t; + #define LTC_WCHAR_MAX 0xFFFFFFFF +#endif + +int der_encode_utf8_string(const wchar_t *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen); + +int der_decode_utf8_string(const unsigned char *in, unsigned long inlen, + wchar_t *out, unsigned long *outlen); +unsigned long der_utf8_charsize(const wchar_t c); +#ifdef LTC_SOURCE +/* internal helper functions */ +int der_utf8_valid_char(const wchar_t c); +#endif /* LTC_SOURCE */ +int der_length_utf8_string(const wchar_t *in, unsigned long noctets, unsigned long *outlen); + + +/* CHOICE */ +int der_decode_choice(const unsigned char *in, unsigned long *inlen, + ltc_asn1_list *list, unsigned long outlen); + +/* UTCTime */ +typedef struct { + unsigned YY, /* year */ + MM, /* month */ + DD, /* day */ + hh, /* hour */ + mm, /* minute */ + ss, /* second */ + off_dir, /* timezone offset direction 0 == +, 1 == - */ + off_hh, /* timezone offset hours */ + off_mm; /* timezone offset minutes */ +} ltc_utctime; + +int der_encode_utctime(ltc_utctime *utctime, + unsigned char *out, unsigned long *outlen); + +int der_decode_utctime(const unsigned char *in, unsigned long *inlen, + ltc_utctime *out); + +int der_length_utctime(ltc_utctime *utctime, unsigned long *outlen); + +/* GeneralizedTime */ +typedef struct { + unsigned YYYY, /* year */ + MM, /* month */ + DD, /* day */ + hh, /* hour */ + mm, /* minute */ + ss, /* second */ + fs, /* fractional seconds */ + off_dir, /* timezone offset direction 0 == +, 1 == - */ + off_hh, /* timezone offset hours */ + off_mm; /* timezone offset minutes */ +} ltc_generalizedtime; + +int der_encode_generalizedtime(ltc_generalizedtime *gtime, + unsigned char *out, unsigned long *outlen); + +int der_decode_generalizedtime(const unsigned char *in, unsigned long *inlen, + ltc_generalizedtime *out); + +int der_length_generalizedtime(ltc_generalizedtime *gtime, unsigned long *outlen); + + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/headers/tomcrypt_pkcs.h b/fsbl/lib/libtomcrypt/src/headers/tomcrypt_pkcs.h new file mode 100644 index 000000000..247e5387d --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/headers/tomcrypt_pkcs.h @@ -0,0 +1,108 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* PKCS Header Info */ + +/* ===> PKCS #1 -- RSA Cryptography <=== */ +#ifdef LTC_PKCS_1 + +enum ltc_pkcs_1_v1_5_blocks +{ + LTC_PKCS_1_EMSA = 1, /* Block type 1 (PKCS #1 v1.5 signature padding) */ + LTC_PKCS_1_EME = 2 /* Block type 2 (PKCS #1 v1.5 encryption padding) */ +}; + +enum ltc_pkcs_1_paddings +{ + LTC_PKCS_1_V1_5 = 1, /* PKCS #1 v1.5 padding (\sa ltc_pkcs_1_v1_5_blocks) */ + LTC_PKCS_1_OAEP = 2, /* PKCS #1 v2.0 encryption padding */ + LTC_PKCS_1_PSS = 3, /* PKCS #1 v2.1 signature padding */ + LTC_PKCS_1_V1_5_NA1 = 4 /* PKCS #1 v1.5 padding - No ASN.1 (\sa ltc_pkcs_1_v1_5_blocks) */ +}; + +int pkcs_1_mgf1( int hash_idx, + const unsigned char *seed, unsigned long seedlen, + unsigned char *mask, unsigned long masklen); + +int pkcs_1_i2osp(void *n, unsigned long modulus_len, unsigned char *out); +int pkcs_1_os2ip(void *n, unsigned char *in, unsigned long inlen); + +/* *** v1.5 padding */ +int pkcs_1_v1_5_encode(const unsigned char *msg, + unsigned long msglen, + int block_type, + unsigned long modulus_bitlen, + prng_state *prng, + int prng_idx, + unsigned char *out, + unsigned long *outlen); + +int pkcs_1_v1_5_decode(const unsigned char *msg, + unsigned long msglen, + int block_type, + unsigned long modulus_bitlen, + unsigned char *out, + unsigned long *outlen, + int *is_valid); + +/* *** v2.1 padding */ +int pkcs_1_oaep_encode(const unsigned char *msg, unsigned long msglen, + const unsigned char *lparam, unsigned long lparamlen, + unsigned long modulus_bitlen, prng_state *prng, + int prng_idx, int hash_idx, + unsigned char *out, unsigned long *outlen); + +int pkcs_1_oaep_decode(const unsigned char *msg, unsigned long msglen, + const unsigned char *lparam, unsigned long lparamlen, + unsigned long modulus_bitlen, int hash_idx, + unsigned char *out, unsigned long *outlen, + int *res); + +int pkcs_1_pss_encode(const unsigned char *msghash, unsigned long msghashlen, + unsigned long saltlen, prng_state *prng, + int prng_idx, int hash_idx, + unsigned long modulus_bitlen, + unsigned char *out, unsigned long *outlen); + +int pkcs_1_pss_decode(const unsigned char *msghash, unsigned long msghashlen, + const unsigned char *sig, unsigned long siglen, + unsigned long saltlen, int hash_idx, + unsigned long modulus_bitlen, int *res); + +#endif /* LTC_PKCS_1 */ + +/* ===> PKCS #5 -- Password Based Cryptography <=== */ +#ifdef LTC_PKCS_5 + +/* Algorithm #1 (PBKDF1) */ +int pkcs_5_alg1(const unsigned char *password, unsigned long password_len, + const unsigned char *salt, + int iteration_count, int hash_idx, + unsigned char *out, unsigned long *outlen); + +/* Algorithm #1 (PBKDF1) - OpenSSL-compatible variant for arbitrarily-long keys. + Compatible with EVP_BytesToKey() */ +int pkcs_5_alg1_openssl(const unsigned char *password, + unsigned long password_len, + const unsigned char *salt, + int iteration_count, int hash_idx, + unsigned char *out, unsigned long *outlen); + +/* Algorithm #2 (PBKDF2) */ +int pkcs_5_alg2(const unsigned char *password, unsigned long password_len, + const unsigned char *salt, unsigned long salt_len, + int iteration_count, int hash_idx, + unsigned char *out, unsigned long *outlen); + +int pkcs_5_test (void); +#endif /* LTC_PKCS_5 */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/headers/tomcrypt_prng.h b/fsbl/lib/libtomcrypt/src/headers/tomcrypt_prng.h new file mode 100644 index 000000000..c516b8cda --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/headers/tomcrypt_prng.h @@ -0,0 +1,232 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* ---- PRNG Stuff ---- */ +#ifdef LTC_YARROW +struct yarrow_prng { + int cipher, hash; + unsigned char pool[MAXBLOCKSIZE]; + symmetric_CTR ctr; +}; +#endif + +#ifdef LTC_RC4 +struct rc4_prng { + rc4_state s; +}; +#endif + +#ifdef LTC_CHACHA20_PRNG +struct chacha20_prng { + chacha_state s; /* chacha state */ + unsigned char ent[40]; /* entropy buffer */ + unsigned long idx; /* entropy counter */ +}; +#endif + +#ifdef LTC_FORTUNA +struct fortuna_prng { + hash_state pool[LTC_FORTUNA_POOLS]; /* the pools */ + + symmetric_key skey; + + unsigned char K[32], /* the current key */ + IV[16]; /* IV for CTR mode */ + + unsigned long pool_idx, /* current pool we will add to */ + pool0_len, /* length of 0'th pool */ + wd; + + ulong64 reset_cnt; /* number of times we have reset */ +}; +#endif + +#ifdef LTC_SOBER128 +struct sober128_prng { + sober128_state s; /* sober128 state */ + unsigned char ent[40]; /* entropy buffer */ + unsigned long idx; /* entropy counter */ +}; +#endif + +typedef struct { + union { + char dummy[1]; +#ifdef LTC_YARROW + struct yarrow_prng yarrow; +#endif +#ifdef LTC_RC4 + struct rc4_prng rc4; +#endif +#ifdef LTC_CHACHA20_PRNG + struct chacha20_prng chacha; +#endif +#ifdef LTC_FORTUNA + struct fortuna_prng fortuna; +#endif +#ifdef LTC_SOBER128 + struct sober128_prng sober128; +#endif + }; + short ready; /* ready flag 0-1 */ + LTC_MUTEX_TYPE(lock) /* lock */ +} prng_state; + +/** PRNG descriptor */ +extern struct ltc_prng_descriptor { + /** Name of the PRNG */ + const char *name; + /** size in bytes of exported state */ + int export_size; + /** Start a PRNG state + @param prng [out] The state to initialize + @return CRYPT_OK if successful + */ + int (*start)(prng_state *prng); + /** Add entropy to the PRNG + @param in The entropy + @param inlen Length of the entropy (octets)\ + @param prng The PRNG state + @return CRYPT_OK if successful + */ + int (*add_entropy)(const unsigned char *in, unsigned long inlen, prng_state *prng); + /** Ready a PRNG state to read from + @param prng The PRNG state to ready + @return CRYPT_OK if successful + */ + int (*ready)(prng_state *prng); + /** Read from the PRNG + @param out [out] Where to store the data + @param outlen Length of data desired (octets) + @param prng The PRNG state to read from + @return Number of octets read + */ + unsigned long (*read)(unsigned char *out, unsigned long outlen, prng_state *prng); + /** Terminate a PRNG state + @param prng The PRNG state to terminate + @return CRYPT_OK if successful + */ + int (*done)(prng_state *prng); + /** Export a PRNG state + @param out [out] The destination for the state + @param outlen [in/out] The max size and resulting size of the PRNG state + @param prng The PRNG to export + @return CRYPT_OK if successful + */ + int (*pexport)(unsigned char *out, unsigned long *outlen, prng_state *prng); + /** Import a PRNG state + @param in The data to import + @param inlen The length of the data to import (octets) + @param prng The PRNG to initialize/import + @return CRYPT_OK if successful + */ + int (*pimport)(const unsigned char *in, unsigned long inlen, prng_state *prng); + /** Self-test the PRNG + @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled + */ + int (*test)(void); +} prng_descriptor[]; + +#ifdef LTC_YARROW +int yarrow_start(prng_state *prng); +int yarrow_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng); +int yarrow_ready(prng_state *prng); +unsigned long yarrow_read(unsigned char *out, unsigned long outlen, prng_state *prng); +int yarrow_done(prng_state *prng); +int yarrow_export(unsigned char *out, unsigned long *outlen, prng_state *prng); +int yarrow_import(const unsigned char *in, unsigned long inlen, prng_state *prng); +int yarrow_test(void); +extern const struct ltc_prng_descriptor yarrow_desc; +#endif + +#ifdef LTC_FORTUNA +int fortuna_start(prng_state *prng); +int fortuna_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng); +int fortuna_ready(prng_state *prng); +unsigned long fortuna_read(unsigned char *out, unsigned long outlen, prng_state *prng); +int fortuna_done(prng_state *prng); +int fortuna_export(unsigned char *out, unsigned long *outlen, prng_state *prng); +int fortuna_import(const unsigned char *in, unsigned long inlen, prng_state *prng); +int fortuna_test(void); +extern const struct ltc_prng_descriptor fortuna_desc; +#endif + +#ifdef LTC_RC4 +int rc4_start(prng_state *prng); +int rc4_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng); +int rc4_ready(prng_state *prng); +unsigned long rc4_read(unsigned char *out, unsigned long outlen, prng_state *prng); +int rc4_done(prng_state *prng); +int rc4_export(unsigned char *out, unsigned long *outlen, prng_state *prng); +int rc4_import(const unsigned char *in, unsigned long inlen, prng_state *prng); +int rc4_test(void); +extern const struct ltc_prng_descriptor rc4_desc; +#endif + +#ifdef LTC_CHACHA20_PRNG +int chacha20_prng_start(prng_state *prng); +int chacha20_prng_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng); +int chacha20_prng_ready(prng_state *prng); +unsigned long chacha20_prng_read(unsigned char *out, unsigned long outlen, prng_state *prng); +int chacha20_prng_done(prng_state *prng); +int chacha20_prng_export(unsigned char *out, unsigned long *outlen, prng_state *prng); +int chacha20_prng_import(const unsigned char *in, unsigned long inlen, prng_state *prng); +int chacha20_prng_test(void); +extern const struct ltc_prng_descriptor chacha20_prng_desc; +#endif + +#ifdef LTC_SPRNG +int sprng_start(prng_state *prng); +int sprng_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng); +int sprng_ready(prng_state *prng); +unsigned long sprng_read(unsigned char *out, unsigned long outlen, prng_state *prng); +int sprng_done(prng_state *prng); +int sprng_export(unsigned char *out, unsigned long *outlen, prng_state *prng); +int sprng_import(const unsigned char *in, unsigned long inlen, prng_state *prng); +int sprng_test(void); +extern const struct ltc_prng_descriptor sprng_desc; +#endif + +#ifdef LTC_SOBER128 +int sober128_start(prng_state *prng); +int sober128_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng); +int sober128_ready(prng_state *prng); +unsigned long sober128_read(unsigned char *out, unsigned long outlen, prng_state *prng); +int sober128_done(prng_state *prng); +int sober128_export(unsigned char *out, unsigned long *outlen, prng_state *prng); +int sober128_import(const unsigned char *in, unsigned long inlen, prng_state *prng); +int sober128_test(void); +extern const struct ltc_prng_descriptor sober128_desc; +#endif + +int find_prng(const char *name); +int register_prng(const struct ltc_prng_descriptor *prng); +int unregister_prng(const struct ltc_prng_descriptor *prng); +int register_all_prngs(void); +int prng_is_valid(int idx); +LTC_MUTEX_PROTO(ltc_prng_mutex) + +/* Slow RNG you **might** be able to use to seed a PRNG with. Be careful as this + * might not work on all platforms as planned + */ +unsigned long rng_get_bytes(unsigned char *out, + unsigned long outlen, + void (*callback)(void)); + +int rng_make_prng(int bits, int wprng, prng_state *prng, void (*callback)(void)); + +#ifdef LTC_PRNG_ENABLE_LTC_RNG +extern unsigned long (*ltc_rng)(unsigned char *out, unsigned long outlen, + void (*callback)(void)); +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/blake2/blake2bmac.c b/fsbl/lib/libtomcrypt/src/mac/blake2/blake2bmac.c new file mode 100644 index 000000000..1c80b1c0a --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/blake2/blake2bmac.c @@ -0,0 +1,66 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_BLAKE2BMAC + +/** + Initialize an BLAKE2B MAC context. + @param st The BLAKE2B MAC state + @param outlen The size of the MAC output (octets) + @param key The secret key + @param keylen The length of the secret key (octets) + @return CRYPT_OK if successful +*/ +int blake2bmac_init(blake2bmac_state *st, unsigned long outlen, const unsigned char *key, unsigned long keylen) +{ + LTC_ARGCHK(st != NULL); + LTC_ARGCHK(key != NULL); + return blake2b_init(st, outlen, key, keylen); +} + +/** + Process data through BLAKE2B MAC + @param st The BLAKE2B MAC state + @param in The data to send through HMAC + @param inlen The length of the data to HMAC (octets) + @return CRYPT_OK if successful +*/ +int blake2bmac_process(blake2bmac_state *st, const unsigned char *in, unsigned long inlen) +{ + if (inlen == 0) return CRYPT_OK; /* nothing to do */ + LTC_ARGCHK(st != NULL); + LTC_ARGCHK(in != NULL); + return blake2b_process(st, in, inlen); +} + +/** + Terminate a BLAKE2B MAC session + @param st The BLAKE2B MAC state + @param mac [out] The destination of the BLAKE2B MAC authentication tag + @param maclen [in/out] The max size and resulting size of the BLAKE2B MAC authentication tag + @return CRYPT_OK if successful +*/ +int blake2bmac_done(blake2bmac_state *st, unsigned char *mac, unsigned long *maclen) +{ + LTC_ARGCHK(st != NULL); + LTC_ARGCHK(mac != NULL); + LTC_ARGCHK(maclen != NULL); + LTC_ARGCHK(*maclen >= st->blake2b.outlen); + + *maclen = st->blake2b.outlen; + return blake2b_done(st, mac); +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/blake2/blake2bmac_file.c b/fsbl/lib/libtomcrypt/src/mac/blake2/blake2bmac_file.c new file mode 100644 index 000000000..c1e9c6b52 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/blake2/blake2bmac_file.c @@ -0,0 +1,88 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_BLAKE2BMAC + +/** + BLAKE2B MAC a file + @param fname The name of the file you wish to BLAKE2B MAC + @param key The secret key + @param keylen The length of the secret key + @param mac [out] The BLAKE2B MAC authentication tag + @param maclen [in/out] The max size and resulting size of the authentication tag + @return CRYPT_OK if successful, CRYPT_NOP if file support has been disabled +*/ +int blake2bmac_file(const char *fname, const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen) +{ +#ifdef LTC_NO_FILE + LTC_UNUSED_PARAM(fname); + LTC_UNUSED_PARAM(key); + LTC_UNUSED_PARAM(keylen); + LTC_UNUSED_PARAM(mac); + LTC_UNUSED_PARAM(maclen); + return CRYPT_NOP; +#else + blake2bmac_state st; + FILE *in; + unsigned char *buf; + size_t x; + int err; + + LTC_ARGCHK(fname != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(mac != NULL); + LTC_ARGCHK(maclen != NULL); + + if ((buf = XMALLOC(LTC_FILE_READ_BUFSIZE)) == NULL) { + return CRYPT_MEM; + } + + if ((err = blake2bmac_init(&st, *maclen, key, keylen)) != CRYPT_OK) { + goto LBL_ERR; + } + + in = fopen(fname, "rb"); + if (in == NULL) { + err = CRYPT_FILE_NOTFOUND; + goto LBL_ERR; + } + + do { + x = fread(buf, 1, LTC_FILE_READ_BUFSIZE, in); + if ((err = blake2bmac_process(&st, buf, (unsigned long)x)) != CRYPT_OK) { + fclose(in); + goto LBL_CLEANBUF; + } + } while (x == LTC_FILE_READ_BUFSIZE); + + if (fclose(in) != 0) { + err = CRYPT_ERROR; + goto LBL_CLEANBUF; + } + + err = blake2bmac_done(&st, mac, maclen); + +LBL_CLEANBUF: + zeromem(buf, LTC_FILE_READ_BUFSIZE); +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(&st, sizeof(blake2bmac_state)); +#endif + XFREE(buf); + return err; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/blake2/blake2bmac_memory.c b/fsbl/lib/libtomcrypt/src/mac/blake2/blake2bmac_memory.c new file mode 100644 index 000000000..45ddd6fb1 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/blake2/blake2bmac_memory.c @@ -0,0 +1,48 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_BLAKE2BMAC + +/** + BLAKE2B MAC a block of memory to produce the authentication tag + @param key The secret key + @param keylen The length of the secret key (octets) + @param in The data to BLAKE2B MAC + @param inlen The length of the data to BLAKE2B MAC (octets) + @param mac [out] Destination of the authentication tag + @param maclen [in/out] Max size and resulting size of authentication tag + @return CRYPT_OK if successful +*/ +int blake2bmac_memory(const unsigned char *key, unsigned long keylen, const unsigned char *in, unsigned long inlen, unsigned char *mac, unsigned long *maclen) +{ + blake2bmac_state st; + int err; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(mac != NULL); + LTC_ARGCHK(maclen != NULL); + + if ((err = blake2bmac_init(&st, *maclen, key, keylen)) != CRYPT_OK) { goto LBL_ERR; } + if ((err = blake2bmac_process(&st, in, inlen)) != CRYPT_OK) { goto LBL_ERR; } + err = blake2bmac_done(&st, mac, maclen); +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(&st, sizeof(blake2bmac_state)); +#endif + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/blake2/blake2bmac_memory_multi.c b/fsbl/lib/libtomcrypt/src/mac/blake2/blake2bmac_memory_multi.c new file mode 100644 index 000000000..2b875d7fa --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/blake2/blake2bmac_memory_multi.c @@ -0,0 +1,62 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" +#include + +#ifdef LTC_BLAKE2BMAC + +/** + BLAKE2B MAC multiple blocks of memory to produce the authentication tag + @param key The secret key + @param keylen The length of the secret key (octets) + @param mac [out] Destination of the authentication tag + @param maclen [in/out] Max size and resulting size of authentication tag + @param in The data to BLAKE2B MAC + @param inlen The length of the data to BLAKE2B MAC (octets) + @param ... tuples of (data,len) pairs to BLAKE2B MAC, terminated with a (NULL,x) (x=don't care) + @return CRYPT_OK if successful +*/ +int blake2bmac_memory_multi(const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen, const unsigned char *in, unsigned long inlen, ...) +{ + blake2bmac_state st; + int err; + va_list args; + const unsigned char *curptr; + unsigned long curlen; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(mac != NULL); + LTC_ARGCHK(maclen != NULL); + + va_start(args, inlen); + curptr = in; + curlen = inlen; + if ((err = blake2bmac_init(&st, *maclen, key, keylen)) != CRYPT_OK) { goto LBL_ERR; } + for (;;) { + if ((err = blake2bmac_process(&st, curptr, curlen)) != CRYPT_OK) { goto LBL_ERR; } + curptr = va_arg(args, const unsigned char*); + if (curptr == NULL) break; + curlen = va_arg(args, unsigned long); + } + err = blake2bmac_done(&st, mac, maclen); +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(&st, sizeof(blake2bmac_state)); +#endif + va_end(args); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/blake2/blake2bmac_test.c b/fsbl/lib/libtomcrypt/src/mac/blake2/blake2bmac_test.c new file mode 100644 index 000000000..ae7005610 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/blake2/blake2bmac_test.c @@ -0,0 +1,314 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_BLAKE2BMAC + +int blake2bmac_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const unsigned char tests[256][64] = { + /* source: https://github.com/BLAKE2/BLAKE2/blob/master/testvectors/blake2b-kat.txt */ + { 0x10, 0xeb, 0xb6, 0x77, 0x00, 0xb1, 0x86, 0x8e, 0xfb, 0x44, 0x17, 0x98, 0x7a, 0xcf, 0x46, 0x90, 0xae, 0x9d, 0x97, 0x2f, 0xb7, 0xa5, 0x90, 0xc2, 0xf0, 0x28, 0x71, 0x79, 0x9a, 0xaa, 0x47, 0x86, 0xb5, 0xe9, 0x96, 0xe8, 0xf0, 0xf4, 0xeb, 0x98, 0x1f, 0xc2, 0x14, 0xb0, 0x05, 0xf4, 0x2d, 0x2f, 0xf4, 0x23, 0x34, 0x99, 0x39, 0x16, 0x53, 0xdf, 0x7a, 0xef, 0xcb, 0xc1, 0x3f, 0xc5, 0x15, 0x68 }, + { 0x96, 0x1f, 0x6d, 0xd1, 0xe4, 0xdd, 0x30, 0xf6, 0x39, 0x01, 0x69, 0x0c, 0x51, 0x2e, 0x78, 0xe4, 0xb4, 0x5e, 0x47, 0x42, 0xed, 0x19, 0x7c, 0x3c, 0x5e, 0x45, 0xc5, 0x49, 0xfd, 0x25, 0xf2, 0xe4, 0x18, 0x7b, 0x0b, 0xc9, 0xfe, 0x30, 0x49, 0x2b, 0x16, 0xb0, 0xd0, 0xbc, 0x4e, 0xf9, 0xb0, 0xf3, 0x4c, 0x70, 0x03, 0xfa, 0xc0, 0x9a, 0x5e, 0xf1, 0x53, 0x2e, 0x69, 0x43, 0x02, 0x34, 0xce, 0xbd }, + { 0xda, 0x2c, 0xfb, 0xe2, 0xd8, 0x40, 0x9a, 0x0f, 0x38, 0x02, 0x61, 0x13, 0x88, 0x4f, 0x84, 0xb5, 0x01, 0x56, 0x37, 0x1a, 0xe3, 0x04, 0xc4, 0x43, 0x01, 0x73, 0xd0, 0x8a, 0x99, 0xd9, 0xfb, 0x1b, 0x98, 0x31, 0x64, 0xa3, 0x77, 0x07, 0x06, 0xd5, 0x37, 0xf4, 0x9e, 0x0c, 0x91, 0x6d, 0x9f, 0x32, 0xb9, 0x5c, 0xc3, 0x7a, 0x95, 0xb9, 0x9d, 0x85, 0x74, 0x36, 0xf0, 0x23, 0x2c, 0x88, 0xa9, 0x65 }, + { 0x33, 0xd0, 0x82, 0x5d, 0xdd, 0xf7, 0xad, 0xa9, 0x9b, 0x0e, 0x7e, 0x30, 0x71, 0x04, 0xad, 0x07, 0xca, 0x9c, 0xfd, 0x96, 0x92, 0x21, 0x4f, 0x15, 0x61, 0x35, 0x63, 0x15, 0xe7, 0x84, 0xf3, 0xe5, 0xa1, 0x7e, 0x36, 0x4a, 0xe9, 0xdb, 0xb1, 0x4c, 0xb2, 0x03, 0x6d, 0xf9, 0x32, 0xb7, 0x7f, 0x4b, 0x29, 0x27, 0x61, 0x36, 0x5f, 0xb3, 0x28, 0xde, 0x7a, 0xfd, 0xc6, 0xd8, 0x99, 0x8f, 0x5f, 0xc1 }, + { 0xbe, 0xaa, 0x5a, 0x3d, 0x08, 0xf3, 0x80, 0x71, 0x43, 0xcf, 0x62, 0x1d, 0x95, 0xcd, 0x69, 0x05, 0x14, 0xd0, 0xb4, 0x9e, 0xff, 0xf9, 0xc9, 0x1d, 0x24, 0xb5, 0x92, 0x41, 0xec, 0x0e, 0xef, 0xa5, 0xf6, 0x01, 0x96, 0xd4, 0x07, 0x04, 0x8b, 0xba, 0x8d, 0x21, 0x46, 0x82, 0x8e, 0xbc, 0xb0, 0x48, 0x8d, 0x88, 0x42, 0xfd, 0x56, 0xbb, 0x4f, 0x6d, 0xf8, 0xe1, 0x9c, 0x4b, 0x4d, 0xaa, 0xb8, 0xac }, + { 0x09, 0x80, 0x84, 0xb5, 0x1f, 0xd1, 0x3d, 0xea, 0xe5, 0xf4, 0x32, 0x0d, 0xe9, 0x4a, 0x68, 0x8e, 0xe0, 0x7b, 0xae, 0xa2, 0x80, 0x04, 0x86, 0x68, 0x9a, 0x86, 0x36, 0x11, 0x7b, 0x46, 0xc1, 0xf4, 0xc1, 0xf6, 0xaf, 0x7f, 0x74, 0xae, 0x7c, 0x85, 0x76, 0x00, 0x45, 0x6a, 0x58, 0xa3, 0xaf, 0x25, 0x1d, 0xc4, 0x72, 0x3a, 0x64, 0xcc, 0x7c, 0x0a, 0x5a, 0xb6, 0xd9, 0xca, 0xc9, 0x1c, 0x20, 0xbb }, + { 0x60, 0x44, 0x54, 0x0d, 0x56, 0x08, 0x53, 0xeb, 0x1c, 0x57, 0xdf, 0x00, 0x77, 0xdd, 0x38, 0x10, 0x94, 0x78, 0x1c, 0xdb, 0x90, 0x73, 0xe5, 0xb1, 0xb3, 0xd3, 0xf6, 0xc7, 0x82, 0x9e, 0x12, 0x06, 0x6b, 0xba, 0xca, 0x96, 0xd9, 0x89, 0xa6, 0x90, 0xde, 0x72, 0xca, 0x31, 0x33, 0xa8, 0x36, 0x52, 0xba, 0x28, 0x4a, 0x6d, 0x62, 0x94, 0x2b, 0x27, 0x1f, 0xfa, 0x26, 0x20, 0xc9, 0xe7, 0x5b, 0x1f }, + { 0x7a, 0x8c, 0xfe, 0x9b, 0x90, 0xf7, 0x5f, 0x7e, 0xcb, 0x3a, 0xcc, 0x05, 0x3a, 0xae, 0xd6, 0x19, 0x31, 0x12, 0xb6, 0xf6, 0xa4, 0xae, 0xeb, 0x3f, 0x65, 0xd3, 0xde, 0x54, 0x19, 0x42, 0xde, 0xb9, 0xe2, 0x22, 0x81, 0x52, 0xa3, 0xc4, 0xbb, 0xbe, 0x72, 0xfc, 0x3b, 0x12, 0x62, 0x95, 0x28, 0xcf, 0xbb, 0x09, 0xfe, 0x63, 0x0f, 0x04, 0x74, 0x33, 0x9f, 0x54, 0xab, 0xf4, 0x53, 0xe2, 0xed, 0x52 }, + { 0x38, 0x0b, 0xea, 0xf6, 0xea, 0x7c, 0xc9, 0x36, 0x5e, 0x27, 0x0e, 0xf0, 0xe6, 0xf3, 0xa6, 0x4f, 0xb9, 0x02, 0xac, 0xae, 0x51, 0xdd, 0x55, 0x12, 0xf8, 0x42, 0x59, 0xad, 0x2c, 0x91, 0xf4, 0xbc, 0x41, 0x08, 0xdb, 0x73, 0x19, 0x2a, 0x5b, 0xbf, 0xb0, 0xcb, 0xcf, 0x71, 0xe4, 0x6c, 0x3e, 0x21, 0xae, 0xe1, 0xc5, 0xe8, 0x60, 0xdc, 0x96, 0xe8, 0xeb, 0x0b, 0x7b, 0x84, 0x26, 0xe6, 0xab, 0xe9 }, + { 0x60, 0xfe, 0x3c, 0x45, 0x35, 0xe1, 0xb5, 0x9d, 0x9a, 0x61, 0xea, 0x85, 0x00, 0xbf, 0xac, 0x41, 0xa6, 0x9d, 0xff, 0xb1, 0xce, 0xad, 0xd9, 0xac, 0xa3, 0x23, 0xe9, 0xa6, 0x25, 0xb6, 0x4d, 0xa5, 0x76, 0x3b, 0xad, 0x72, 0x26, 0xda, 0x02, 0xb9, 0xc8, 0xc4, 0xf1, 0xa5, 0xde, 0x14, 0x0a, 0xc5, 0xa6, 0xc1, 0x12, 0x4e, 0x4f, 0x71, 0x8c, 0xe0, 0xb2, 0x8e, 0xa4, 0x73, 0x93, 0xaa, 0x66, 0x37 }, + { 0x4f, 0xe1, 0x81, 0xf5, 0x4a, 0xd6, 0x3a, 0x29, 0x83, 0xfe, 0xaa, 0xf7, 0x7d, 0x1e, 0x72, 0x35, 0xc2, 0xbe, 0xb1, 0x7f, 0xa3, 0x28, 0xb6, 0xd9, 0x50, 0x5b, 0xda, 0x32, 0x7d, 0xf1, 0x9f, 0xc3, 0x7f, 0x02, 0xc4, 0xb6, 0xf0, 0x36, 0x8c, 0xe2, 0x31, 0x47, 0x31, 0x3a, 0x8e, 0x57, 0x38, 0xb5, 0xfa, 0x2a, 0x95, 0xb2, 0x9d, 0xe1, 0xc7, 0xf8, 0x26, 0x4e, 0xb7, 0x7b, 0x69, 0xf5, 0x85, 0xcd }, + { 0xf2, 0x28, 0x77, 0x3c, 0xe3, 0xf3, 0xa4, 0x2b, 0x5f, 0x14, 0x4d, 0x63, 0x23, 0x7a, 0x72, 0xd9, 0x96, 0x93, 0xad, 0xb8, 0x83, 0x7d, 0x0e, 0x11, 0x2a, 0x8a, 0x0f, 0x8f, 0xff, 0xf2, 0xc3, 0x62, 0x85, 0x7a, 0xc4, 0x9c, 0x11, 0xec, 0x74, 0x0d, 0x15, 0x00, 0x74, 0x9d, 0xac, 0x9b, 0x1f, 0x45, 0x48, 0x10, 0x8b, 0xf3, 0x15, 0x57, 0x94, 0xdc, 0xc9, 0xe4, 0x08, 0x28, 0x49, 0xe2, 0xb8, 0x5b }, + { 0x96, 0x24, 0x52, 0xa8, 0x45, 0x5c, 0xc5, 0x6c, 0x85, 0x11, 0x31, 0x7e, 0x3b, 0x1f, 0x3b, 0x2c, 0x37, 0xdf, 0x75, 0xf5, 0x88, 0xe9, 0x43, 0x25, 0xfd, 0xd7, 0x70, 0x70, 0x35, 0x9c, 0xf6, 0x3a, 0x9a, 0xe6, 0xe9, 0x30, 0x93, 0x6f, 0xdf, 0x8e, 0x1e, 0x08, 0xff, 0xca, 0x44, 0x0c, 0xfb, 0x72, 0xc2, 0x8f, 0x06, 0xd8, 0x9a, 0x21, 0x51, 0xd1, 0xc4, 0x6c, 0xd5, 0xb2, 0x68, 0xef, 0x85, 0x63 }, + { 0x43, 0xd4, 0x4b, 0xfa, 0x18, 0x76, 0x8c, 0x59, 0x89, 0x6b, 0xf7, 0xed, 0x17, 0x65, 0xcb, 0x2d, 0x14, 0xaf, 0x8c, 0x26, 0x02, 0x66, 0x03, 0x90, 0x99, 0xb2, 0x5a, 0x60, 0x3e, 0x4d, 0xdc, 0x50, 0x39, 0xd6, 0xef, 0x3a, 0x91, 0x84, 0x7d, 0x10, 0x88, 0xd4, 0x01, 0xc0, 0xc7, 0xe8, 0x47, 0x78, 0x1a, 0x8a, 0x59, 0x0d, 0x33, 0xa3, 0xc6, 0xcb, 0x4d, 0xf0, 0xfa, 0xb1, 0xc2, 0xf2, 0x23, 0x55 }, + { 0xdc, 0xff, 0xa9, 0xd5, 0x8c, 0x2a, 0x4c, 0xa2, 0xcd, 0xbb, 0x0c, 0x7a, 0xa4, 0xc4, 0xc1, 0xd4, 0x51, 0x65, 0x19, 0x00, 0x89, 0xf4, 0xe9, 0x83, 0xbb, 0x1c, 0x2c, 0xab, 0x4a, 0xae, 0xff, 0x1f, 0xa2, 0xb5, 0xee, 0x51, 0x6f, 0xec, 0xd7, 0x80, 0x54, 0x02, 0x40, 0xbf, 0x37, 0xe5, 0x6c, 0x8b, 0xcc, 0xa7, 0xfa, 0xb9, 0x80, 0xe1, 0xe6, 0x1c, 0x94, 0x00, 0xd8, 0xa9, 0xa5, 0xb1, 0x4a, 0xc6 }, + { 0x6f, 0xbf, 0x31, 0xb4, 0x5a, 0xb0, 0xc0, 0xb8, 0xda, 0xd1, 0xc0, 0xf5, 0xf4, 0x06, 0x13, 0x79, 0x91, 0x2d, 0xde, 0x5a, 0xa9, 0x22, 0x09, 0x9a, 0x03, 0x0b, 0x72, 0x5c, 0x73, 0x34, 0x6c, 0x52, 0x42, 0x91, 0xad, 0xef, 0x89, 0xd2, 0xf6, 0xfd, 0x8d, 0xfc, 0xda, 0x6d, 0x07, 0xda, 0xd8, 0x11, 0xa9, 0x31, 0x45, 0x36, 0xc2, 0x91, 0x5e, 0xd4, 0x5d, 0xa3, 0x49, 0x47, 0xe8, 0x3d, 0xe3, 0x4e }, + { 0xa0, 0xc6, 0x5b, 0xdd, 0xde, 0x8a, 0xde, 0xf5, 0x72, 0x82, 0xb0, 0x4b, 0x11, 0xe7, 0xbc, 0x8a, 0xab, 0x10, 0x5b, 0x99, 0x23, 0x1b, 0x75, 0x0c, 0x02, 0x1f, 0x4a, 0x73, 0x5c, 0xb1, 0xbc, 0xfa, 0xb8, 0x75, 0x53, 0xbb, 0xa3, 0xab, 0xb0, 0xc3, 0xe6, 0x4a, 0x0b, 0x69, 0x55, 0x28, 0x51, 0x85, 0xa0, 0xbd, 0x35, 0xfb, 0x8c, 0xfd, 0xe5, 0x57, 0x32, 0x9b, 0xeb, 0xb1, 0xf6, 0x29, 0xee, 0x93 }, + { 0xf9, 0x9d, 0x81, 0x55, 0x50, 0x55, 0x8e, 0x81, 0xec, 0xa2, 0xf9, 0x67, 0x18, 0xae, 0xd1, 0x0d, 0x86, 0xf3, 0xf1, 0xcf, 0xb6, 0x75, 0xcc, 0xe0, 0x6b, 0x0e, 0xff, 0x02, 0xf6, 0x17, 0xc5, 0xa4, 0x2c, 0x5a, 0xa7, 0x60, 0x27, 0x0f, 0x26, 0x79, 0xda, 0x26, 0x77, 0xc5, 0xae, 0xb9, 0x4f, 0x11, 0x42, 0x27, 0x7f, 0x21, 0xc7, 0xf7, 0x9f, 0x3c, 0x4f, 0x0c, 0xce, 0x4e, 0xd8, 0xee, 0x62, 0xb1 }, + { 0x95, 0x39, 0x1d, 0xa8, 0xfc, 0x7b, 0x91, 0x7a, 0x20, 0x44, 0xb3, 0xd6, 0xf5, 0x37, 0x4e, 0x1c, 0xa0, 0x72, 0xb4, 0x14, 0x54, 0xd5, 0x72, 0xc7, 0x35, 0x6c, 0x05, 0xfd, 0x4b, 0xc1, 0xe0, 0xf4, 0x0b, 0x8b, 0xb8, 0xb4, 0xa9, 0xf6, 0xbc, 0xe9, 0xbe, 0x2c, 0x46, 0x23, 0xc3, 0x99, 0xb0, 0xdc, 0xa0, 0xda, 0xb0, 0x5c, 0xb7, 0x28, 0x1b, 0x71, 0xa2, 0x1b, 0x0e, 0xbc, 0xd9, 0xe5, 0x56, 0x70 }, + { 0x04, 0xb9, 0xcd, 0x3d, 0x20, 0xd2, 0x21, 0xc0, 0x9a, 0xc8, 0x69, 0x13, 0xd3, 0xdc, 0x63, 0x04, 0x19, 0x89, 0xa9, 0xa1, 0xe6, 0x94, 0xf1, 0xe6, 0x39, 0xa3, 0xba, 0x7e, 0x45, 0x18, 0x40, 0xf7, 0x50, 0xc2, 0xfc, 0x19, 0x1d, 0x56, 0xad, 0x61, 0xf2, 0xe7, 0x93, 0x6b, 0xc0, 0xac, 0x8e, 0x09, 0x4b, 0x60, 0xca, 0xee, 0xd8, 0x78, 0xc1, 0x87, 0x99, 0x04, 0x54, 0x02, 0xd6, 0x1c, 0xea, 0xf9 }, + { 0xec, 0x0e, 0x0e, 0xf7, 0x07, 0xe4, 0xed, 0x6c, 0x0c, 0x66, 0xf9, 0xe0, 0x89, 0xe4, 0x95, 0x4b, 0x05, 0x80, 0x30, 0xd2, 0xdd, 0x86, 0x39, 0x8f, 0xe8, 0x40, 0x59, 0x63, 0x1f, 0x9e, 0xe5, 0x91, 0xd9, 0xd7, 0x73, 0x75, 0x35, 0x51, 0x49, 0x17, 0x8c, 0x0c, 0xf8, 0xf8, 0xe7, 0xc4, 0x9e, 0xd2, 0xa5, 0xe4, 0xf9, 0x54, 0x88, 0xa2, 0x24, 0x70, 0x67, 0xc2, 0x08, 0x51, 0x0f, 0xad, 0xc4, 0x4c }, + { 0x9a, 0x37, 0xcc, 0xe2, 0x73, 0xb7, 0x9c, 0x09, 0x91, 0x36, 0x77, 0x51, 0x0e, 0xaf, 0x76, 0x88, 0xe8, 0x9b, 0x33, 0x14, 0xd3, 0x53, 0x2f, 0xd2, 0x76, 0x4c, 0x39, 0xde, 0x02, 0x2a, 0x29, 0x45, 0xb5, 0x71, 0x0d, 0x13, 0x51, 0x7a, 0xf8, 0xdd, 0xc0, 0x31, 0x66, 0x24, 0xe7, 0x3b, 0xec, 0x1c, 0xe6, 0x7d, 0xf1, 0x52, 0x28, 0x30, 0x20, 0x36, 0xf3, 0x30, 0xab, 0x0c, 0xb4, 0xd2, 0x18, 0xdd }, + { 0x4c, 0xf9, 0xbb, 0x8f, 0xb3, 0xd4, 0xde, 0x8b, 0x38, 0xb2, 0xf2, 0x62, 0xd3, 0xc4, 0x0f, 0x46, 0xdf, 0xe7, 0x47, 0xe8, 0xfc, 0x0a, 0x41, 0x4c, 0x19, 0x3d, 0x9f, 0xcf, 0x75, 0x31, 0x06, 0xce, 0x47, 0xa1, 0x8f, 0x17, 0x2f, 0x12, 0xe8, 0xa2, 0xf1, 0xc2, 0x67, 0x26, 0x54, 0x53, 0x58, 0xe5, 0xee, 0x28, 0xc9, 0xe2, 0x21, 0x3a, 0x87, 0x87, 0xaa, 0xfb, 0xc5, 0x16, 0xd2, 0x34, 0x31, 0x52 }, + { 0x64, 0xe0, 0xc6, 0x3a, 0xf9, 0xc8, 0x08, 0xfd, 0x89, 0x31, 0x37, 0x12, 0x98, 0x67, 0xfd, 0x91, 0x93, 0x9d, 0x53, 0xf2, 0xaf, 0x04, 0xbe, 0x4f, 0xa2, 0x68, 0x00, 0x61, 0x00, 0x06, 0x9b, 0x2d, 0x69, 0xda, 0xa5, 0xc5, 0xd8, 0xed, 0x7f, 0xdd, 0xcb, 0x2a, 0x70, 0xee, 0xec, 0xdf, 0x2b, 0x10, 0x5d, 0xd4, 0x6a, 0x1e, 0x3b, 0x73, 0x11, 0x72, 0x8f, 0x63, 0x9a, 0xb4, 0x89, 0x32, 0x6b, 0xc9 }, + { 0x5e, 0x9c, 0x93, 0x15, 0x8d, 0x65, 0x9b, 0x2d, 0xef, 0x06, 0xb0, 0xc3, 0xc7, 0x56, 0x50, 0x45, 0x54, 0x26, 0x62, 0xd6, 0xee, 0xe8, 0xa9, 0x6a, 0x89, 0xb7, 0x8a, 0xde, 0x09, 0xfe, 0x8b, 0x3d, 0xcc, 0x09, 0x6d, 0x4f, 0xe4, 0x88, 0x15, 0xd8, 0x8d, 0x8f, 0x82, 0x62, 0x01, 0x56, 0x60, 0x2a, 0xf5, 0x41, 0x95, 0x5e, 0x1f, 0x6c, 0xa3, 0x0d, 0xce, 0x14, 0xe2, 0x54, 0xc3, 0x26, 0xb8, 0x8f }, + { 0x77, 0x75, 0xdf, 0xf8, 0x89, 0x45, 0x8d, 0xd1, 0x1a, 0xef, 0x41, 0x72, 0x76, 0x85, 0x3e, 0x21, 0x33, 0x5e, 0xb8, 0x8e, 0x4d, 0xec, 0x9c, 0xfb, 0x4e, 0x9e, 0xdb, 0x49, 0x82, 0x00, 0x88, 0x55, 0x1a, 0x2c, 0xa6, 0x03, 0x39, 0xf1, 0x20, 0x66, 0x10, 0x11, 0x69, 0xf0, 0xdf, 0xe8, 0x4b, 0x09, 0x8f, 0xdd, 0xb1, 0x48, 0xd9, 0xda, 0x6b, 0x3d, 0x61, 0x3d, 0xf2, 0x63, 0x88, 0x9a, 0xd6, 0x4b }, + { 0xf0, 0xd2, 0x80, 0x5a, 0xfb, 0xb9, 0x1f, 0x74, 0x39, 0x51, 0x35, 0x1a, 0x6d, 0x02, 0x4f, 0x93, 0x53, 0xa2, 0x3c, 0x7c, 0xe1, 0xfc, 0x2b, 0x05, 0x1b, 0x3a, 0x8b, 0x96, 0x8c, 0x23, 0x3f, 0x46, 0xf5, 0x0f, 0x80, 0x6e, 0xcb, 0x15, 0x68, 0xff, 0xaa, 0x0b, 0x60, 0x66, 0x1e, 0x33, 0x4b, 0x21, 0xdd, 0xe0, 0x4f, 0x8f, 0xa1, 0x55, 0xac, 0x74, 0x0e, 0xeb, 0x42, 0xe2, 0x0b, 0x60, 0xd7, 0x64 }, + { 0x86, 0xa2, 0xaf, 0x31, 0x6e, 0x7d, 0x77, 0x54, 0x20, 0x1b, 0x94, 0x2e, 0x27, 0x53, 0x64, 0xac, 0x12, 0xea, 0x89, 0x62, 0xab, 0x5b, 0xd8, 0xd7, 0xfb, 0x27, 0x6d, 0xc5, 0xfb, 0xff, 0xc8, 0xf9, 0xa2, 0x8c, 0xae, 0x4e, 0x48, 0x67, 0xdf, 0x67, 0x80, 0xd9, 0xb7, 0x25, 0x24, 0x16, 0x09, 0x27, 0xc8, 0x55, 0xda, 0x5b, 0x60, 0x78, 0xe0, 0xb5, 0x54, 0xaa, 0x91, 0xe3, 0x1c, 0xb9, 0xca, 0x1d }, + { 0x10, 0xbd, 0xf0, 0xca, 0xa0, 0x80, 0x27, 0x05, 0xe7, 0x06, 0x36, 0x9b, 0xaf, 0x8a, 0x3f, 0x79, 0xd7, 0x2c, 0x0a, 0x03, 0xa8, 0x06, 0x75, 0xa7, 0xbb, 0xb0, 0x0b, 0xe3, 0xa4, 0x5e, 0x51, 0x64, 0x24, 0xd1, 0xee, 0x88, 0xef, 0xb5, 0x6f, 0x6d, 0x57, 0x77, 0x54, 0x5a, 0xe6, 0xe2, 0x77, 0x65, 0xc3, 0xa8, 0xf5, 0xe4, 0x93, 0xfc, 0x30, 0x89, 0x15, 0x63, 0x89, 0x33, 0xa1, 0xdf, 0xee, 0x55 }, + { 0xb0, 0x17, 0x81, 0x09, 0x2b, 0x17, 0x48, 0x45, 0x9e, 0x2e, 0x4e, 0xc1, 0x78, 0x69, 0x66, 0x27, 0xbf, 0x4e, 0xba, 0xfe, 0xbb, 0xa7, 0x74, 0xec, 0xf0, 0x18, 0xb7, 0x9a, 0x68, 0xae, 0xb8, 0x49, 0x17, 0xbf, 0x0b, 0x84, 0xbb, 0x79, 0xd1, 0x7b, 0x74, 0x31, 0x51, 0x14, 0x4c, 0xd6, 0x6b, 0x7b, 0x33, 0xa4, 0xb9, 0xe5, 0x2c, 0x76, 0xc4, 0xe1, 0x12, 0x05, 0x0f, 0xf5, 0x38, 0x5b, 0x7f, 0x0b }, + { 0xc6, 0xdb, 0xc6, 0x1d, 0xec, 0x6e, 0xae, 0xac, 0x81, 0xe3, 0xd5, 0xf7, 0x55, 0x20, 0x3c, 0x8e, 0x22, 0x05, 0x51, 0x53, 0x4a, 0x0b, 0x2f, 0xd1, 0x05, 0xa9, 0x18, 0x89, 0x94, 0x5a, 0x63, 0x85, 0x50, 0x20, 0x4f, 0x44, 0x09, 0x3d, 0xd9, 0x98, 0xc0, 0x76, 0x20, 0x5d, 0xff, 0xad, 0x70, 0x3a, 0x0e, 0x5c, 0xd3, 0xc7, 0xf4, 0x38, 0xa7, 0xe6, 0x34, 0xcd, 0x59, 0xfe, 0xde, 0xdb, 0x53, 0x9e }, + { 0xeb, 0xa5, 0x1a, 0xcf, 0xfb, 0x4c, 0xea, 0x31, 0xdb, 0x4b, 0x8d, 0x87, 0xe9, 0xbf, 0x7d, 0xd4, 0x8f, 0xe9, 0x7b, 0x02, 0x53, 0xae, 0x67, 0xaa, 0x58, 0x0f, 0x9a, 0xc4, 0xa9, 0xd9, 0x41, 0xf2, 0xbe, 0xa5, 0x18, 0xee, 0x28, 0x68, 0x18, 0xcc, 0x9f, 0x63, 0x3f, 0x2a, 0x3b, 0x9f, 0xb6, 0x8e, 0x59, 0x4b, 0x48, 0xcd, 0xd6, 0xd5, 0x15, 0xbf, 0x1d, 0x52, 0xba, 0x6c, 0x85, 0xa2, 0x03, 0xa7 }, + { 0x86, 0x22, 0x1f, 0x3a, 0xda, 0x52, 0x03, 0x7b, 0x72, 0x22, 0x4f, 0x10, 0x5d, 0x79, 0x99, 0x23, 0x1c, 0x5e, 0x55, 0x34, 0xd0, 0x3d, 0xa9, 0xd9, 0xc0, 0xa1, 0x2a, 0xcb, 0x68, 0x46, 0x0c, 0xd3, 0x75, 0xda, 0xf8, 0xe2, 0x43, 0x86, 0x28, 0x6f, 0x96, 0x68, 0xf7, 0x23, 0x26, 0xdb, 0xf9, 0x9b, 0xa0, 0x94, 0x39, 0x24, 0x37, 0xd3, 0x98, 0xe9, 0x5b, 0xb8, 0x16, 0x1d, 0x71, 0x7f, 0x89, 0x91 }, + { 0x55, 0x95, 0xe0, 0x5c, 0x13, 0xa7, 0xec, 0x4d, 0xc8, 0xf4, 0x1f, 0xb7, 0x0c, 0xb5, 0x0a, 0x71, 0xbc, 0xe1, 0x7c, 0x02, 0x4f, 0xf6, 0xde, 0x7a, 0xf6, 0x18, 0xd0, 0xcc, 0x4e, 0x9c, 0x32, 0xd9, 0x57, 0x0d, 0x6d, 0x3e, 0xa4, 0x5b, 0x86, 0x52, 0x54, 0x91, 0x03, 0x0c, 0x0d, 0x8f, 0x2b, 0x18, 0x36, 0xd5, 0x77, 0x8c, 0x1c, 0xe7, 0x35, 0xc1, 0x77, 0x07, 0xdf, 0x36, 0x4d, 0x05, 0x43, 0x47 }, + { 0xce, 0x0f, 0x4f, 0x6a, 0xca, 0x89, 0x59, 0x0a, 0x37, 0xfe, 0x03, 0x4d, 0xd7, 0x4d, 0xd5, 0xfa, 0x65, 0xeb, 0x1c, 0xbd, 0x0a, 0x41, 0x50, 0x8a, 0xad, 0xdc, 0x09, 0x35, 0x1a, 0x3c, 0xea, 0x6d, 0x18, 0xcb, 0x21, 0x89, 0xc5, 0x4b, 0x70, 0x0c, 0x00, 0x9f, 0x4c, 0xbf, 0x05, 0x21, 0xc7, 0xea, 0x01, 0xbe, 0x61, 0xc5, 0xae, 0x09, 0xcb, 0x54, 0xf2, 0x7b, 0xc1, 0xb4, 0x4d, 0x65, 0x8c, 0x82 }, + { 0x7e, 0xe8, 0x0b, 0x06, 0xa2, 0x15, 0xa3, 0xbc, 0xa9, 0x70, 0xc7, 0x7c, 0xda, 0x87, 0x61, 0x82, 0x2b, 0xc1, 0x03, 0xd4, 0x4f, 0xa4, 0xb3, 0x3f, 0x4d, 0x07, 0xdc, 0xb9, 0x97, 0xe3, 0x6d, 0x55, 0x29, 0x8b, 0xce, 0xae, 0x12, 0x24, 0x1b, 0x3f, 0xa0, 0x7f, 0xa6, 0x3b, 0xe5, 0x57, 0x60, 0x68, 0xda, 0x38, 0x7b, 0x8d, 0x58, 0x59, 0xae, 0xab, 0x70, 0x13, 0x69, 0x84, 0x8b, 0x17, 0x6d, 0x42 }, + { 0x94, 0x0a, 0x84, 0xb6, 0xa8, 0x4d, 0x10, 0x9a, 0xab, 0x20, 0x8c, 0x02, 0x4c, 0x6c, 0xe9, 0x64, 0x76, 0x76, 0xba, 0x0a, 0xaa, 0x11, 0xf8, 0x6d, 0xbb, 0x70, 0x18, 0xf9, 0xfd, 0x22, 0x20, 0xa6, 0xd9, 0x01, 0xa9, 0x02, 0x7f, 0x9a, 0xbc, 0xf9, 0x35, 0x37, 0x27, 0x27, 0xcb, 0xf0, 0x9e, 0xbd, 0x61, 0xa2, 0xa2, 0xee, 0xb8, 0x76, 0x53, 0xe8, 0xec, 0xad, 0x1b, 0xab, 0x85, 0xdc, 0x83, 0x27 }, + { 0x20, 0x20, 0xb7, 0x82, 0x64, 0xa8, 0x2d, 0x9f, 0x41, 0x51, 0x14, 0x1a, 0xdb, 0xa8, 0xd4, 0x4b, 0xf2, 0x0c, 0x5e, 0xc0, 0x62, 0xee, 0xe9, 0xb5, 0x95, 0xa1, 0x1f, 0x9e, 0x84, 0x90, 0x1b, 0xf1, 0x48, 0xf2, 0x98, 0xe0, 0xc9, 0xf8, 0x77, 0x7d, 0xcd, 0xbc, 0x7c, 0xc4, 0x67, 0x0a, 0xac, 0x35, 0x6c, 0xc2, 0xad, 0x8c, 0xcb, 0x16, 0x29, 0xf1, 0x6f, 0x6a, 0x76, 0xbc, 0xef, 0xbe, 0xe7, 0x60 }, + { 0xd1, 0xb8, 0x97, 0xb0, 0xe0, 0x75, 0xba, 0x68, 0xab, 0x57, 0x2a, 0xdf, 0x9d, 0x9c, 0x43, 0x66, 0x63, 0xe4, 0x3e, 0xb3, 0xd8, 0xe6, 0x2d, 0x92, 0xfc, 0x49, 0xc9, 0xbe, 0x21, 0x4e, 0x6f, 0x27, 0x87, 0x3f, 0xe2, 0x15, 0xa6, 0x51, 0x70, 0xe6, 0xbe, 0xa9, 0x02, 0x40, 0x8a, 0x25, 0xb4, 0x95, 0x06, 0xf4, 0x7b, 0xab, 0xd0, 0x7c, 0xec, 0xf7, 0x11, 0x3e, 0xc1, 0x0c, 0x5d, 0xd3, 0x12, 0x52 }, + { 0xb1, 0x4d, 0x0c, 0x62, 0xab, 0xfa, 0x46, 0x9a, 0x35, 0x71, 0x77, 0xe5, 0x94, 0xc1, 0x0c, 0x19, 0x42, 0x43, 0xed, 0x20, 0x25, 0xab, 0x8a, 0xa5, 0xad, 0x2f, 0xa4, 0x1a, 0xd3, 0x18, 0xe0, 0xff, 0x48, 0xcd, 0x5e, 0x60, 0xbe, 0xc0, 0x7b, 0x13, 0x63, 0x4a, 0x71, 0x1d, 0x23, 0x26, 0xe4, 0x88, 0xa9, 0x85, 0xf3, 0x1e, 0x31, 0x15, 0x33, 0x99, 0xe7, 0x30, 0x88, 0xef, 0xc8, 0x6a, 0x5c, 0x55 }, + { 0x41, 0x69, 0xc5, 0xcc, 0x80, 0x8d, 0x26, 0x97, 0xdc, 0x2a, 0x82, 0x43, 0x0d, 0xc2, 0x3e, 0x3c, 0xd3, 0x56, 0xdc, 0x70, 0xa9, 0x45, 0x66, 0x81, 0x05, 0x02, 0xb8, 0xd6, 0x55, 0xb3, 0x9a, 0xbf, 0x9e, 0x7f, 0x90, 0x2f, 0xe7, 0x17, 0xe0, 0x38, 0x92, 0x19, 0x85, 0x9e, 0x19, 0x45, 0xdf, 0x1a, 0xf6, 0xad, 0xa4, 0x2e, 0x4c, 0xcd, 0xa5, 0x5a, 0x19, 0x7b, 0x71, 0x00, 0xa3, 0x0c, 0x30, 0xa1 }, + { 0x25, 0x8a, 0x4e, 0xdb, 0x11, 0x3d, 0x66, 0xc8, 0x39, 0xc8, 0xb1, 0xc9, 0x1f, 0x15, 0xf3, 0x5a, 0xde, 0x60, 0x9f, 0x11, 0xcd, 0x7f, 0x86, 0x81, 0xa4, 0x04, 0x5b, 0x9f, 0xef, 0x7b, 0x0b, 0x24, 0xc8, 0x2c, 0xda, 0x06, 0xa5, 0xf2, 0x06, 0x7b, 0x36, 0x88, 0x25, 0xe3, 0x91, 0x4e, 0x53, 0xd6, 0x94, 0x8e, 0xde, 0x92, 0xef, 0xd6, 0xe8, 0x38, 0x7f, 0xa2, 0xe5, 0x37, 0x23, 0x9b, 0x5b, 0xee }, + { 0x79, 0xd2, 0xd8, 0x69, 0x6d, 0x30, 0xf3, 0x0f, 0xb3, 0x46, 0x57, 0x76, 0x11, 0x71, 0xa1, 0x1e, 0x6c, 0x3f, 0x1e, 0x64, 0xcb, 0xe7, 0xbe, 0xbe, 0xe1, 0x59, 0xcb, 0x95, 0xbf, 0xaf, 0x81, 0x2b, 0x4f, 0x41, 0x1e, 0x2f, 0x26, 0xd9, 0xc4, 0x21, 0xdc, 0x2c, 0x28, 0x4a, 0x33, 0x42, 0xd8, 0x23, 0xec, 0x29, 0x38, 0x49, 0xe4, 0x2d, 0x1e, 0x46, 0xb0, 0xa4, 0xac, 0x1e, 0x3c, 0x86, 0xab, 0xaa }, + { 0x8b, 0x94, 0x36, 0x01, 0x0d, 0xc5, 0xde, 0xe9, 0x92, 0xae, 0x38, 0xae, 0xa9, 0x7f, 0x2c, 0xd6, 0x3b, 0x94, 0x6d, 0x94, 0xfe, 0xdd, 0x2e, 0xc9, 0x67, 0x1d, 0xcd, 0xe3, 0xbd, 0x4c, 0xe9, 0x56, 0x4d, 0x55, 0x5c, 0x66, 0xc1, 0x5b, 0xb2, 0xb9, 0x00, 0xdf, 0x72, 0xed, 0xb6, 0xb8, 0x91, 0xeb, 0xca, 0xdf, 0xef, 0xf6, 0x3c, 0x9e, 0xa4, 0x03, 0x6a, 0x99, 0x8b, 0xe7, 0x97, 0x39, 0x81, 0xe7 }, + { 0xc8, 0xf6, 0x8e, 0x69, 0x6e, 0xd2, 0x82, 0x42, 0xbf, 0x99, 0x7f, 0x5b, 0x3b, 0x34, 0x95, 0x95, 0x08, 0xe4, 0x2d, 0x61, 0x38, 0x10, 0xf1, 0xe2, 0xa4, 0x35, 0xc9, 0x6e, 0xd2, 0xff, 0x56, 0x0c, 0x70, 0x22, 0xf3, 0x61, 0xa9, 0x23, 0x4b, 0x98, 0x37, 0xfe, 0xee, 0x90, 0xbf, 0x47, 0x92, 0x2e, 0xe0, 0xfd, 0x5f, 0x8d, 0xdf, 0x82, 0x37, 0x18, 0xd8, 0x6d, 0x1e, 0x16, 0xc6, 0x09, 0x00, 0x71 }, + { 0xb0, 0x2d, 0x3e, 0xee, 0x48, 0x60, 0xd5, 0x86, 0x8b, 0x2c, 0x39, 0xce, 0x39, 0xbf, 0xe8, 0x10, 0x11, 0x29, 0x05, 0x64, 0xdd, 0x67, 0x8c, 0x85, 0xe8, 0x78, 0x3f, 0x29, 0x30, 0x2d, 0xfc, 0x13, 0x99, 0xba, 0x95, 0xb6, 0xb5, 0x3c, 0xd9, 0xeb, 0xbf, 0x40, 0x0c, 0xca, 0x1d, 0xb0, 0xab, 0x67, 0xe1, 0x9a, 0x32, 0x5f, 0x2d, 0x11, 0x58, 0x12, 0xd2, 0x5d, 0x00, 0x97, 0x8a, 0xd1, 0xbc, 0xa4 }, + { 0x76, 0x93, 0xea, 0x73, 0xaf, 0x3a, 0xc4, 0xda, 0xd2, 0x1c, 0xa0, 0xd8, 0xda, 0x85, 0xb3, 0x11, 0x8a, 0x7d, 0x1c, 0x60, 0x24, 0xcf, 0xaf, 0x55, 0x76, 0x99, 0x86, 0x82, 0x17, 0xbc, 0x0c, 0x2f, 0x44, 0xa1, 0x99, 0xbc, 0x6c, 0x0e, 0xdd, 0x51, 0x97, 0x98, 0xba, 0x05, 0xbd, 0x5b, 0x1b, 0x44, 0x84, 0x34, 0x6a, 0x47, 0xc2, 0xca, 0xdf, 0x6b, 0xf3, 0x0b, 0x78, 0x5c, 0xc8, 0x8b, 0x2b, 0xaf }, + { 0xa0, 0xe5, 0xc1, 0xc0, 0x03, 0x1c, 0x02, 0xe4, 0x8b, 0x7f, 0x09, 0xa5, 0xe8, 0x96, 0xee, 0x9a, 0xef, 0x2f, 0x17, 0xfc, 0x9e, 0x18, 0xe9, 0x97, 0xd7, 0xf6, 0xca, 0xc7, 0xae, 0x31, 0x64, 0x22, 0xc2, 0xb1, 0xe7, 0x79, 0x84, 0xe5, 0xf3, 0xa7, 0x3c, 0xb4, 0x5d, 0xee, 0xd5, 0xd3, 0xf8, 0x46, 0x00, 0x10, 0x5e, 0x6e, 0xe3, 0x8f, 0x2d, 0x09, 0x0c, 0x7d, 0x04, 0x42, 0xea, 0x34, 0xc4, 0x6d }, + { 0x41, 0xda, 0xa6, 0xad, 0xcf, 0xdb, 0x69, 0xf1, 0x44, 0x0c, 0x37, 0xb5, 0x96, 0x44, 0x01, 0x65, 0xc1, 0x5a, 0xda, 0x59, 0x68, 0x13, 0xe2, 0xe2, 0x2f, 0x06, 0x0f, 0xcd, 0x55, 0x1f, 0x24, 0xde, 0xe8, 0xe0, 0x4b, 0xa6, 0x89, 0x03, 0x87, 0x88, 0x6c, 0xee, 0xc4, 0xa7, 0xa0, 0xd7, 0xfc, 0x6b, 0x44, 0x50, 0x63, 0x92, 0xec, 0x38, 0x22, 0xc0, 0xd8, 0xc1, 0xac, 0xfc, 0x7d, 0x5a, 0xeb, 0xe8 }, + { 0x14, 0xd4, 0xd4, 0x0d, 0x59, 0x84, 0xd8, 0x4c, 0x5c, 0xf7, 0x52, 0x3b, 0x77, 0x98, 0xb2, 0x54, 0xe2, 0x75, 0xa3, 0xa8, 0xcc, 0x0a, 0x1b, 0xd0, 0x6e, 0xbc, 0x0b, 0xee, 0x72, 0x68, 0x56, 0xac, 0xc3, 0xcb, 0xf5, 0x16, 0xff, 0x66, 0x7c, 0xda, 0x20, 0x58, 0xad, 0x5c, 0x34, 0x12, 0x25, 0x44, 0x60, 0xa8, 0x2c, 0x92, 0x18, 0x70, 0x41, 0x36, 0x3c, 0xc7, 0x7a, 0x4d, 0xc2, 0x15, 0xe4, 0x87 }, + { 0xd0, 0xe7, 0xa1, 0xe2, 0xb9, 0xa4, 0x47, 0xfe, 0xe8, 0x3e, 0x22, 0x77, 0xe9, 0xff, 0x80, 0x10, 0xc2, 0xf3, 0x75, 0xae, 0x12, 0xfa, 0x7a, 0xaa, 0x8c, 0xa5, 0xa6, 0x31, 0x78, 0x68, 0xa2, 0x6a, 0x36, 0x7a, 0x0b, 0x69, 0xfb, 0xc1, 0xcf, 0x32, 0xa5, 0x5d, 0x34, 0xeb, 0x37, 0x06, 0x63, 0x01, 0x6f, 0x3d, 0x21, 0x10, 0x23, 0x0e, 0xba, 0x75, 0x40, 0x28, 0xa5, 0x6f, 0x54, 0xac, 0xf5, 0x7c }, + { 0xe7, 0x71, 0xaa, 0x8d, 0xb5, 0xa3, 0xe0, 0x43, 0xe8, 0x17, 0x8f, 0x39, 0xa0, 0x85, 0x7b, 0xa0, 0x4a, 0x3f, 0x18, 0xe4, 0xaa, 0x05, 0x74, 0x3c, 0xf8, 0xd2, 0x22, 0xb0, 0xb0, 0x95, 0x82, 0x53, 0x50, 0xba, 0x42, 0x2f, 0x63, 0x38, 0x2a, 0x23, 0xd9, 0x2e, 0x41, 0x49, 0x07, 0x4e, 0x81, 0x6a, 0x36, 0xc1, 0xcd, 0x28, 0x28, 0x4d, 0x14, 0x62, 0x67, 0x94, 0x0b, 0x31, 0xf8, 0x81, 0x8e, 0xa2 }, + { 0xfe, 0xb4, 0xfd, 0x6f, 0x9e, 0x87, 0xa5, 0x6b, 0xef, 0x39, 0x8b, 0x32, 0x84, 0xd2, 0xbd, 0xa5, 0xb5, 0xb0, 0xe1, 0x66, 0x58, 0x3a, 0x66, 0xb6, 0x1e, 0x53, 0x84, 0x57, 0xff, 0x05, 0x84, 0x87, 0x2c, 0x21, 0xa3, 0x29, 0x62, 0xb9, 0x92, 0x8f, 0xfa, 0xb5, 0x8d, 0xe4, 0xaf, 0x2e, 0xdd, 0x4e, 0x15, 0xd8, 0xb3, 0x55, 0x70, 0x52, 0x32, 0x07, 0xff, 0x4e, 0x2a, 0x5a, 0xa7, 0x75, 0x4c, 0xaa }, + { 0x46, 0x2f, 0x17, 0xbf, 0x00, 0x5f, 0xb1, 0xc1, 0xb9, 0xe6, 0x71, 0x77, 0x9f, 0x66, 0x52, 0x09, 0xec, 0x28, 0x73, 0xe3, 0xe4, 0x11, 0xf9, 0x8d, 0xab, 0xf2, 0x40, 0xa1, 0xd5, 0xec, 0x3f, 0x95, 0xce, 0x67, 0x96, 0xb6, 0xfc, 0x23, 0xfe, 0x17, 0x19, 0x03, 0xb5, 0x02, 0x02, 0x34, 0x67, 0xde, 0xc7, 0x27, 0x3f, 0xf7, 0x48, 0x79, 0xb9, 0x29, 0x67, 0xa2, 0xa4, 0x3a, 0x5a, 0x18, 0x3d, 0x33 }, + { 0xd3, 0x33, 0x81, 0x93, 0xb6, 0x45, 0x53, 0xdb, 0xd3, 0x8d, 0x14, 0x4b, 0xea, 0x71, 0xc5, 0x91, 0x5b, 0xb1, 0x10, 0xe2, 0xd8, 0x81, 0x80, 0xdb, 0xc5, 0xdb, 0x36, 0x4f, 0xd6, 0x17, 0x1d, 0xf3, 0x17, 0xfc, 0x72, 0x68, 0x83, 0x1b, 0x5a, 0xef, 0x75, 0xe4, 0x34, 0x2b, 0x2f, 0xad, 0x87, 0x97, 0xba, 0x39, 0xed, 0xdc, 0xef, 0x80, 0xe6, 0xec, 0x08, 0x15, 0x93, 0x50, 0xb1, 0xad, 0x69, 0x6d }, + { 0xe1, 0x59, 0x0d, 0x58, 0x5a, 0x3d, 0x39, 0xf7, 0xcb, 0x59, 0x9a, 0xbd, 0x47, 0x90, 0x70, 0x96, 0x64, 0x09, 0xa6, 0x84, 0x6d, 0x43, 0x77, 0xac, 0xf4, 0x47, 0x1d, 0x06, 0x5d, 0x5d, 0xb9, 0x41, 0x29, 0xcc, 0x9b, 0xe9, 0x25, 0x73, 0xb0, 0x5e, 0xd2, 0x26, 0xbe, 0x1e, 0x9b, 0x7c, 0xb0, 0xca, 0xbe, 0x87, 0x91, 0x85, 0x89, 0xf8, 0x0d, 0xad, 0xd4, 0xef, 0x5e, 0xf2, 0x5a, 0x93, 0xd2, 0x8e }, + { 0xf8, 0xf3, 0x72, 0x6a, 0xc5, 0xa2, 0x6c, 0xc8, 0x01, 0x32, 0x49, 0x3a, 0x6f, 0xed, 0xcb, 0x0e, 0x60, 0x76, 0x0c, 0x09, 0xcf, 0xc8, 0x4c, 0xad, 0x17, 0x81, 0x75, 0x98, 0x68, 0x19, 0x66, 0x5e, 0x76, 0x84, 0x2d, 0x7b, 0x9f, 0xed, 0xf7, 0x6d, 0xdd, 0xeb, 0xf5, 0xd3, 0xf5, 0x6f, 0xaa, 0xad, 0x44, 0x77, 0x58, 0x7a, 0xf2, 0x16, 0x06, 0xd3, 0x96, 0xae, 0x57, 0x0d, 0x8e, 0x71, 0x9a, 0xf2 }, + { 0x30, 0x18, 0x60, 0x55, 0xc0, 0x79, 0x49, 0x94, 0x81, 0x83, 0xc8, 0x50, 0xe9, 0xa7, 0x56, 0xcc, 0x09, 0x93, 0x7e, 0x24, 0x7d, 0x9d, 0x92, 0x8e, 0x86, 0x9e, 0x20, 0xba, 0xfc, 0x3c, 0xd9, 0x72, 0x17, 0x19, 0xd3, 0x4e, 0x04, 0xa0, 0x89, 0x9b, 0x92, 0xc7, 0x36, 0x08, 0x45, 0x50, 0x18, 0x68, 0x86, 0xef, 0xba, 0x2e, 0x79, 0x0d, 0x8b, 0xe6, 0xeb, 0xf0, 0x40, 0xb2, 0x09, 0xc4, 0x39, 0xa4 }, + { 0xf3, 0xc4, 0x27, 0x6c, 0xb8, 0x63, 0x63, 0x77, 0x12, 0xc2, 0x41, 0xc4, 0x44, 0xc5, 0xcc, 0x1e, 0x35, 0x54, 0xe0, 0xfd, 0xdb, 0x17, 0x4d, 0x03, 0x58, 0x19, 0xdd, 0x83, 0xeb, 0x70, 0x0b, 0x4c, 0xe8, 0x8d, 0xf3, 0xab, 0x38, 0x41, 0xba, 0x02, 0x08, 0x5e, 0x1a, 0x99, 0xb4, 0xe1, 0x73, 0x10, 0xc5, 0x34, 0x10, 0x75, 0xc0, 0x45, 0x8b, 0xa3, 0x76, 0xc9, 0x5a, 0x68, 0x18, 0xfb, 0xb3, 0xe2 }, + { 0x0a, 0xa0, 0x07, 0xc4, 0xdd, 0x9d, 0x58, 0x32, 0x39, 0x30, 0x40, 0xa1, 0x58, 0x3c, 0x93, 0x0b, 0xca, 0x7d, 0xc5, 0xe7, 0x7e, 0xa5, 0x3a, 0xdd, 0x7e, 0x2b, 0x3f, 0x7c, 0x8e, 0x23, 0x13, 0x68, 0x04, 0x35, 0x20, 0xd4, 0xa3, 0xef, 0x53, 0xc9, 0x69, 0xb6, 0xbb, 0xfd, 0x02, 0x59, 0x46, 0xf6, 0x32, 0xbd, 0x7f, 0x76, 0x5d, 0x53, 0xc2, 0x10, 0x03, 0xb8, 0xf9, 0x83, 0xf7, 0x5e, 0x2a, 0x6a }, + { 0x08, 0xe9, 0x46, 0x47, 0x20, 0x53, 0x3b, 0x23, 0xa0, 0x4e, 0xc2, 0x4f, 0x7a, 0xe8, 0xc1, 0x03, 0x14, 0x5f, 0x76, 0x53, 0x87, 0xd7, 0x38, 0x77, 0x7d, 0x3d, 0x34, 0x34, 0x77, 0xfd, 0x1c, 0x58, 0xdb, 0x05, 0x21, 0x42, 0xca, 0xb7, 0x54, 0xea, 0x67, 0x43, 0x78, 0xe1, 0x87, 0x66, 0xc5, 0x35, 0x42, 0xf7, 0x19, 0x70, 0x17, 0x1c, 0xc4, 0xf8, 0x16, 0x94, 0x24, 0x6b, 0x71, 0x7d, 0x75, 0x64 }, + { 0xd3, 0x7f, 0xf7, 0xad, 0x29, 0x79, 0x93, 0xe7, 0xec, 0x21, 0xe0, 0xf1, 0xb4, 0xb5, 0xae, 0x71, 0x9c, 0xdc, 0x83, 0xc5, 0xdb, 0x68, 0x75, 0x27, 0xf2, 0x75, 0x16, 0xcb, 0xff, 0xa8, 0x22, 0x88, 0x8a, 0x68, 0x10, 0xee, 0x5c, 0x1c, 0xa7, 0xbf, 0xe3, 0x32, 0x11, 0x19, 0xbe, 0x1a, 0xb7, 0xbf, 0xa0, 0xa5, 0x02, 0x67, 0x1c, 0x83, 0x29, 0x49, 0x4d, 0xf7, 0xad, 0x6f, 0x52, 0x2d, 0x44, 0x0f }, + { 0xdd, 0x90, 0x42, 0xf6, 0xe4, 0x64, 0xdc, 0xf8, 0x6b, 0x12, 0x62, 0xf6, 0xac, 0xcf, 0xaf, 0xbd, 0x8c, 0xfd, 0x90, 0x2e, 0xd3, 0xed, 0x89, 0xab, 0xf7, 0x8f, 0xfa, 0x48, 0x2d, 0xbd, 0xee, 0xb6, 0x96, 0x98, 0x42, 0x39, 0x4c, 0x9a, 0x11, 0x68, 0xae, 0x3d, 0x48, 0x1a, 0x01, 0x78, 0x42, 0xf6, 0x60, 0x00, 0x2d, 0x42, 0x44, 0x7c, 0x6b, 0x22, 0xf7, 0xb7, 0x2f, 0x21, 0xaa, 0xe0, 0x21, 0xc9 }, + { 0xbd, 0x96, 0x5b, 0xf3, 0x1e, 0x87, 0xd7, 0x03, 0x27, 0x53, 0x6f, 0x2a, 0x34, 0x1c, 0xeb, 0xc4, 0x76, 0x8e, 0xca, 0x27, 0x5f, 0xa0, 0x5e, 0xf9, 0x8f, 0x7f, 0x1b, 0x71, 0xa0, 0x35, 0x12, 0x98, 0xde, 0x00, 0x6f, 0xba, 0x73, 0xfe, 0x67, 0x33, 0xed, 0x01, 0xd7, 0x58, 0x01, 0xb4, 0xa9, 0x28, 0xe5, 0x42, 0x31, 0xb3, 0x8e, 0x38, 0xc5, 0x62, 0xb2, 0xe3, 0x3e, 0xa1, 0x28, 0x49, 0x92, 0xfa }, + { 0x65, 0x67, 0x6d, 0x80, 0x06, 0x17, 0x97, 0x2f, 0xbd, 0x87, 0xe4, 0xb9, 0x51, 0x4e, 0x1c, 0x67, 0x40, 0x2b, 0x7a, 0x33, 0x10, 0x96, 0xd3, 0xbf, 0xac, 0x22, 0xf1, 0xab, 0xb9, 0x53, 0x74, 0xab, 0xc9, 0x42, 0xf1, 0x6e, 0x9a, 0xb0, 0xea, 0xd3, 0x3b, 0x87, 0xc9, 0x19, 0x68, 0xa6, 0xe5, 0x09, 0xe1, 0x19, 0xff, 0x07, 0x78, 0x7b, 0x3e, 0xf4, 0x83, 0xe1, 0xdc, 0xdc, 0xcf, 0x6e, 0x30, 0x22 }, + { 0x93, 0x9f, 0xa1, 0x89, 0x69, 0x9c, 0x5d, 0x2c, 0x81, 0xdd, 0xd1, 0xff, 0xc1, 0xfa, 0x20, 0x7c, 0x97, 0x0b, 0x6a, 0x36, 0x85, 0xbb, 0x29, 0xce, 0x1d, 0x3e, 0x99, 0xd4, 0x2f, 0x2f, 0x74, 0x42, 0xda, 0x53, 0xe9, 0x5a, 0x72, 0x90, 0x73, 0x14, 0xf4, 0x58, 0x83, 0x99, 0xa3, 0xff, 0x5b, 0x0a, 0x92, 0xbe, 0xb3, 0xf6, 0xbe, 0x26, 0x94, 0xf9, 0xf8, 0x6e, 0xcf, 0x29, 0x52, 0xd5, 0xb4, 0x1c }, + { 0xc5, 0x16, 0x54, 0x17, 0x01, 0x86, 0x3f, 0x91, 0x00, 0x5f, 0x31, 0x41, 0x08, 0xce, 0xec, 0xe3, 0xc6, 0x43, 0xe0, 0x4f, 0xc8, 0xc4, 0x2f, 0xd2, 0xff, 0x55, 0x62, 0x20, 0xe6, 0x16, 0xaa, 0xa6, 0xa4, 0x8a, 0xeb, 0x97, 0xa8, 0x4b, 0xad, 0x74, 0x78, 0x2e, 0x8d, 0xff, 0x96, 0xa1, 0xa2, 0xfa, 0x94, 0x93, 0x39, 0xd7, 0x22, 0xed, 0xca, 0xa3, 0x2b, 0x57, 0x06, 0x70, 0x41, 0xdf, 0x88, 0xcc }, + { 0x98, 0x7f, 0xd6, 0xe0, 0xd6, 0x85, 0x7c, 0x55, 0x3e, 0xae, 0xbb, 0x3d, 0x34, 0x97, 0x0a, 0x2c, 0x2f, 0x6e, 0x89, 0xa3, 0x54, 0x8f, 0x49, 0x25, 0x21, 0x72, 0x2b, 0x80, 0xa1, 0xc2, 0x1a, 0x15, 0x38, 0x92, 0x34, 0x6d, 0x2c, 0xba, 0x64, 0x44, 0x21, 0x2d, 0x56, 0xda, 0x9a, 0x26, 0xe3, 0x24, 0xdc, 0xcb, 0xc0, 0xdc, 0xde, 0x85, 0xd4, 0xd2, 0xee, 0x43, 0x99, 0xee, 0xc5, 0xa6, 0x4e, 0x8f }, + { 0xae, 0x56, 0xde, 0xb1, 0xc2, 0x32, 0x8d, 0x9c, 0x40, 0x17, 0x70, 0x6b, 0xce, 0x6e, 0x99, 0xd4, 0x13, 0x49, 0x05, 0x3b, 0xa9, 0xd3, 0x36, 0xd6, 0x77, 0xc4, 0xc2, 0x7d, 0x9f, 0xd5, 0x0a, 0xe6, 0xae, 0xe1, 0x7e, 0x85, 0x31, 0x54, 0xe1, 0xf4, 0xfe, 0x76, 0x72, 0x34, 0x6d, 0xa2, 0xea, 0xa3, 0x1e, 0xea, 0x53, 0xfc, 0xf2, 0x4a, 0x22, 0x80, 0x4f, 0x11, 0xd0, 0x3d, 0xa6, 0xab, 0xfc, 0x2b }, + { 0x49, 0xd6, 0xa6, 0x08, 0xc9, 0xbd, 0xe4, 0x49, 0x18, 0x70, 0x49, 0x85, 0x72, 0xac, 0x31, 0xaa, 0xc3, 0xfa, 0x40, 0x93, 0x8b, 0x38, 0xa7, 0x81, 0x8f, 0x72, 0x38, 0x3e, 0xb0, 0x40, 0xad, 0x39, 0x53, 0x2b, 0xc0, 0x65, 0x71, 0xe1, 0x3d, 0x76, 0x7e, 0x69, 0x45, 0xab, 0x77, 0xc0, 0xbd, 0xc3, 0xb0, 0x28, 0x42, 0x53, 0x34, 0x3f, 0x9f, 0x6c, 0x12, 0x44, 0xeb, 0xf2, 0xff, 0x0d, 0xf8, 0x66 }, + { 0xda, 0x58, 0x2a, 0xd8, 0xc5, 0x37, 0x0b, 0x44, 0x69, 0xaf, 0x86, 0x2a, 0xa6, 0x46, 0x7a, 0x22, 0x93, 0xb2, 0xb2, 0x8b, 0xd8, 0x0a, 0xe0, 0xe9, 0x1f, 0x42, 0x5a, 0xd3, 0xd4, 0x72, 0x49, 0xfd, 0xf9, 0x88, 0x25, 0xcc, 0x86, 0xf1, 0x40, 0x28, 0xc3, 0x30, 0x8c, 0x98, 0x04, 0xc7, 0x8b, 0xfe, 0xee, 0xee, 0x46, 0x14, 0x44, 0xce, 0x24, 0x36, 0x87, 0xe1, 0xa5, 0x05, 0x22, 0x45, 0x6a, 0x1d }, + { 0xd5, 0x26, 0x6a, 0xa3, 0x33, 0x11, 0x94, 0xae, 0xf8, 0x52, 0xee, 0xd8, 0x6d, 0x7b, 0x5b, 0x26, 0x33, 0xa0, 0xaf, 0x1c, 0x73, 0x59, 0x06, 0xf2, 0xe1, 0x32, 0x79, 0xf1, 0x49, 0x31, 0xa9, 0xfc, 0x3b, 0x0e, 0xac, 0x5c, 0xe9, 0x24, 0x52, 0x73, 0xbd, 0x1a, 0xa9, 0x29, 0x05, 0xab, 0xe1, 0x62, 0x78, 0xef, 0x7e, 0xfd, 0x47, 0x69, 0x47, 0x89, 0xa7, 0x28, 0x3b, 0x77, 0xda, 0x3c, 0x70, 0xf8 }, + { 0x29, 0x62, 0x73, 0x4c, 0x28, 0x25, 0x21, 0x86, 0xa9, 0xa1, 0x11, 0x1c, 0x73, 0x2a, 0xd4, 0xde, 0x45, 0x06, 0xd4, 0xb4, 0x48, 0x09, 0x16, 0x30, 0x3e, 0xb7, 0x99, 0x1d, 0x65, 0x9c, 0xcd, 0xa0, 0x7a, 0x99, 0x11, 0x91, 0x4b, 0xc7, 0x5c, 0x41, 0x8a, 0xb7, 0xa4, 0x54, 0x17, 0x57, 0xad, 0x05, 0x47, 0x96, 0xe2, 0x67, 0x97, 0xfe, 0xaf, 0x36, 0xe9, 0xf6, 0xad, 0x43, 0xf1, 0x4b, 0x35, 0xa4 }, + { 0xe8, 0xb7, 0x9e, 0xc5, 0xd0, 0x6e, 0x11, 0x1b, 0xdf, 0xaf, 0xd7, 0x1e, 0x9f, 0x57, 0x60, 0xf0, 0x0a, 0xc8, 0xac, 0x5d, 0x8b, 0xf7, 0x68, 0xf9, 0xff, 0x6f, 0x08, 0xb8, 0xf0, 0x26, 0x09, 0x6b, 0x1c, 0xc3, 0xa4, 0xc9, 0x73, 0x33, 0x30, 0x19, 0xf1, 0xe3, 0x55, 0x3e, 0x77, 0xda, 0x3f, 0x98, 0xcb, 0x9f, 0x54, 0x2e, 0x0a, 0x90, 0xe5, 0xf8, 0xa9, 0x40, 0xcc, 0x58, 0xe5, 0x98, 0x44, 0xb3 }, + { 0xdf, 0xb3, 0x20, 0xc4, 0x4f, 0x9d, 0x41, 0xd1, 0xef, 0xdc, 0xc0, 0x15, 0xf0, 0x8d, 0xd5, 0x53, 0x9e, 0x52, 0x6e, 0x39, 0xc8, 0x7d, 0x50, 0x9a, 0xe6, 0x81, 0x2a, 0x96, 0x9e, 0x54, 0x31, 0xbf, 0x4f, 0xa7, 0xd9, 0x1f, 0xfd, 0x03, 0xb9, 0x81, 0xe0, 0xd5, 0x44, 0xcf, 0x72, 0xd7, 0xb1, 0xc0, 0x37, 0x4f, 0x88, 0x01, 0x48, 0x2e, 0x6d, 0xea, 0x2e, 0xf9, 0x03, 0x87, 0x7e, 0xba, 0x67, 0x5e }, + { 0xd8, 0x86, 0x75, 0x11, 0x8f, 0xdb, 0x55, 0xa5, 0xfb, 0x36, 0x5a, 0xc2, 0xaf, 0x1d, 0x21, 0x7b, 0xf5, 0x26, 0xce, 0x1e, 0xe9, 0xc9, 0x4b, 0x2f, 0x00, 0x90, 0xb2, 0xc5, 0x8a, 0x06, 0xca, 0x58, 0x18, 0x7d, 0x7f, 0xe5, 0x7c, 0x7b, 0xed, 0x9d, 0x26, 0xfc, 0xa0, 0x67, 0xb4, 0x11, 0x0e, 0xef, 0xcd, 0x9a, 0x0a, 0x34, 0x5d, 0xe8, 0x72, 0xab, 0xe2, 0x0d, 0xe3, 0x68, 0x00, 0x1b, 0x07, 0x45 }, + { 0xb8, 0x93, 0xf2, 0xfc, 0x41, 0xf7, 0xb0, 0xdd, 0x6e, 0x2f, 0x6a, 0xa2, 0xe0, 0x37, 0x0c, 0x0c, 0xff, 0x7d, 0xf0, 0x9e, 0x3a, 0xcf, 0xcc, 0x0e, 0x92, 0x0b, 0x6e, 0x6f, 0xad, 0x0e, 0xf7, 0x47, 0xc4, 0x06, 0x68, 0x41, 0x7d, 0x34, 0x2b, 0x80, 0xd2, 0x35, 0x1e, 0x8c, 0x17, 0x5f, 0x20, 0x89, 0x7a, 0x06, 0x2e, 0x97, 0x65, 0xe6, 0xc6, 0x7b, 0x53, 0x9b, 0x6b, 0xa8, 0xb9, 0x17, 0x05, 0x45 }, + { 0x6c, 0x67, 0xec, 0x56, 0x97, 0xac, 0xcd, 0x23, 0x5c, 0x59, 0xb4, 0x86, 0xd7, 0xb7, 0x0b, 0xae, 0xed, 0xcb, 0xd4, 0xaa, 0x64, 0xeb, 0xd4, 0xee, 0xf3, 0xc7, 0xea, 0xc1, 0x89, 0x56, 0x1a, 0x72, 0x62, 0x50, 0xae, 0xc4, 0xd4, 0x8c, 0xad, 0xca, 0xfb, 0xbe, 0x2c, 0xe3, 0xc1, 0x6c, 0xe2, 0xd6, 0x91, 0xa8, 0xcc, 0xe0, 0x6e, 0x88, 0x79, 0x55, 0x6d, 0x44, 0x83, 0xed, 0x71, 0x65, 0xc0, 0x63 }, + { 0xf1, 0xaa, 0x2b, 0x04, 0x4f, 0x8f, 0x0c, 0x63, 0x8a, 0x3f, 0x36, 0x2e, 0x67, 0x7b, 0x5d, 0x89, 0x1d, 0x6f, 0xd2, 0xab, 0x07, 0x65, 0xf6, 0xee, 0x1e, 0x49, 0x87, 0xde, 0x05, 0x7e, 0xad, 0x35, 0x78, 0x83, 0xd9, 0xb4, 0x05, 0xb9, 0xd6, 0x09, 0xee, 0xa1, 0xb8, 0x69, 0xd9, 0x7f, 0xb1, 0x6d, 0x9b, 0x51, 0x01, 0x7c, 0x55, 0x3f, 0x3b, 0x93, 0xc0, 0xa1, 0xe0, 0xf1, 0x29, 0x6f, 0xed, 0xcd }, + { 0xcb, 0xaa, 0x25, 0x95, 0x72, 0xd4, 0xae, 0xbf, 0xc1, 0x91, 0x7a, 0xcd, 0xdc, 0x58, 0x2b, 0x9f, 0x8d, 0xfa, 0xa9, 0x28, 0xa1, 0x98, 0xca, 0x7a, 0xcd, 0x0f, 0x2a, 0xa7, 0x6a, 0x13, 0x4a, 0x90, 0x25, 0x2e, 0x62, 0x98, 0xa6, 0x5b, 0x08, 0x18, 0x6a, 0x35, 0x0d, 0x5b, 0x76, 0x26, 0x69, 0x9f, 0x8c, 0xb7, 0x21, 0xa3, 0xea, 0x59, 0x21, 0xb7, 0x53, 0xae, 0x3a, 0x2d, 0xce, 0x24, 0xba, 0x3a }, + { 0xfa, 0x15, 0x49, 0xc9, 0x79, 0x6c, 0xd4, 0xd3, 0x03, 0xdc, 0xf4, 0x52, 0xc1, 0xfb, 0xd5, 0x74, 0x4f, 0xd9, 0xb9, 0xb4, 0x70, 0x03, 0xd9, 0x20, 0xb9, 0x2d, 0xe3, 0x48, 0x39, 0xd0, 0x7e, 0xf2, 0xa2, 0x9d, 0xed, 0x68, 0xf6, 0xfc, 0x9e, 0x6c, 0x45, 0xe0, 0x71, 0xa2, 0xe4, 0x8b, 0xd5, 0x0c, 0x50, 0x84, 0xe9, 0x6b, 0x65, 0x7d, 0xd0, 0x40, 0x40, 0x45, 0xa1, 0xdd, 0xef, 0xe2, 0x82, 0xed }, + { 0x5c, 0xf2, 0xac, 0x89, 0x7a, 0xb4, 0x44, 0xdc, 0xb5, 0xc8, 0xd8, 0x7c, 0x49, 0x5d, 0xbd, 0xb3, 0x4e, 0x18, 0x38, 0xb6, 0xb6, 0x29, 0x42, 0x7c, 0xaa, 0x51, 0x70, 0x2a, 0xd0, 0xf9, 0x68, 0x85, 0x25, 0xf1, 0x3b, 0xec, 0x50, 0x3a, 0x3c, 0x3a, 0x2c, 0x80, 0xa6, 0x5e, 0x0b, 0x57, 0x15, 0xe8, 0xaf, 0xab, 0x00, 0xff, 0xa5, 0x6e, 0xc4, 0x55, 0xa4, 0x9a, 0x1a, 0xd3, 0x0a, 0xa2, 0x4f, 0xcd }, + { 0x9a, 0xaf, 0x80, 0x20, 0x7b, 0xac, 0xe1, 0x7b, 0xb7, 0xab, 0x14, 0x57, 0x57, 0xd5, 0x69, 0x6b, 0xde, 0x32, 0x40, 0x6e, 0xf2, 0x2b, 0x44, 0x29, 0x2e, 0xf6, 0x5d, 0x45, 0x19, 0xc3, 0xbb, 0x2a, 0xd4, 0x1a, 0x59, 0xb6, 0x2c, 0xc3, 0xe9, 0x4b, 0x6f, 0xa9, 0x6d, 0x32, 0xa7, 0xfa, 0xad, 0xae, 0x28, 0xaf, 0x7d, 0x35, 0x09, 0x72, 0x19, 0xaa, 0x3f, 0xd8, 0xcd, 0xa3, 0x1e, 0x40, 0xc2, 0x75 }, + { 0xaf, 0x88, 0xb1, 0x63, 0x40, 0x2c, 0x86, 0x74, 0x5c, 0xb6, 0x50, 0xc2, 0x98, 0x8f, 0xb9, 0x52, 0x11, 0xb9, 0x4b, 0x03, 0xef, 0x29, 0x0e, 0xed, 0x96, 0x62, 0x03, 0x42, 0x41, 0xfd, 0x51, 0xcf, 0x39, 0x8f, 0x80, 0x73, 0xe3, 0x69, 0x35, 0x4c, 0x43, 0xea, 0xe1, 0x05, 0x2f, 0x9b, 0x63, 0xb0, 0x81, 0x91, 0xca, 0xa1, 0x38, 0xaa, 0x54, 0xfe, 0xa8, 0x89, 0xcc, 0x70, 0x24, 0x23, 0x68, 0x97 }, + { 0x48, 0xfa, 0x7d, 0x64, 0xe1, 0xce, 0xee, 0x27, 0xb9, 0x86, 0x4d, 0xb5, 0xad, 0xa4, 0xb5, 0x3d, 0x00, 0xc9, 0xbc, 0x76, 0x26, 0x55, 0x58, 0x13, 0xd3, 0xcd, 0x67, 0x30, 0xab, 0x3c, 0xc0, 0x6f, 0xf3, 0x42, 0xd7, 0x27, 0x90, 0x5e, 0x33, 0x17, 0x1b, 0xde, 0x6e, 0x84, 0x76, 0xe7, 0x7f, 0xb1, 0x72, 0x08, 0x61, 0xe9, 0x4b, 0x73, 0xa2, 0xc5, 0x38, 0xd2, 0x54, 0x74, 0x62, 0x85, 0xf4, 0x30 }, + { 0x0e, 0x6f, 0xd9, 0x7a, 0x85, 0xe9, 0x04, 0xf8, 0x7b, 0xfe, 0x85, 0xbb, 0xeb, 0x34, 0xf6, 0x9e, 0x1f, 0x18, 0x10, 0x5c, 0xf4, 0xed, 0x4f, 0x87, 0xae, 0xc3, 0x6c, 0x6e, 0x8b, 0x5f, 0x68, 0xbd, 0x2a, 0x6f, 0x3d, 0xc8, 0xa9, 0xec, 0xb2, 0xb6, 0x1d, 0xb4, 0xee, 0xdb, 0x6b, 0x2e, 0xa1, 0x0b, 0xf9, 0xcb, 0x02, 0x51, 0xfb, 0x0f, 0x8b, 0x34, 0x4a, 0xbf, 0x7f, 0x36, 0x6b, 0x6d, 0xe5, 0xab }, + { 0x06, 0x62, 0x2d, 0xa5, 0x78, 0x71, 0x76, 0x28, 0x7f, 0xdc, 0x8f, 0xed, 0x44, 0x0b, 0xad, 0x18, 0x7d, 0x83, 0x00, 0x99, 0xc9, 0x4e, 0x6d, 0x04, 0xc8, 0xe9, 0xc9, 0x54, 0xcd, 0xa7, 0x0c, 0x8b, 0xb9, 0xe1, 0xfc, 0x4a, 0x6d, 0x0b, 0xaa, 0x83, 0x1b, 0x9b, 0x78, 0xef, 0x66, 0x48, 0x68, 0x1a, 0x48, 0x67, 0xa1, 0x1d, 0xa9, 0x3e, 0xe3, 0x6e, 0x5e, 0x6a, 0x37, 0xd8, 0x7f, 0xc6, 0x3f, 0x6f }, + { 0x1d, 0xa6, 0x77, 0x2b, 0x58, 0xfa, 0xbf, 0x9c, 0x61, 0xf6, 0x8d, 0x41, 0x2c, 0x82, 0xf1, 0x82, 0xc0, 0x23, 0x6d, 0x7d, 0x57, 0x5e, 0xf0, 0xb5, 0x8d, 0xd2, 0x24, 0x58, 0xd6, 0x43, 0xcd, 0x1d, 0xfc, 0x93, 0xb0, 0x38, 0x71, 0xc3, 0x16, 0xd8, 0x43, 0x0d, 0x31, 0x29, 0x95, 0xd4, 0x19, 0x7f, 0x08, 0x74, 0xc9, 0x91, 0x72, 0xba, 0x00, 0x4a, 0x01, 0xee, 0x29, 0x5a, 0xba, 0xc2, 0x4e, 0x46 }, + { 0x3c, 0xd2, 0xd9, 0x32, 0x0b, 0x7b, 0x1d, 0x5f, 0xb9, 0xaa, 0xb9, 0x51, 0xa7, 0x60, 0x23, 0xfa, 0x66, 0x7b, 0xe1, 0x4a, 0x91, 0x24, 0xe3, 0x94, 0x51, 0x39, 0x18, 0xa3, 0xf4, 0x40, 0x96, 0xae, 0x49, 0x04, 0xba, 0x0f, 0xfc, 0x15, 0x0b, 0x63, 0xbc, 0x7a, 0xb1, 0xee, 0xb9, 0xa6, 0xe2, 0x57, 0xe5, 0xc8, 0xf0, 0x00, 0xa7, 0x03, 0x94, 0xa5, 0xaf, 0xd8, 0x42, 0x71, 0x5d, 0xe1, 0x5f, 0x29 }, + { 0x04, 0xcd, 0xc1, 0x4f, 0x74, 0x34, 0xe0, 0xb4, 0xbe, 0x70, 0xcb, 0x41, 0xdb, 0x4c, 0x77, 0x9a, 0x88, 0xea, 0xef, 0x6a, 0xcc, 0xeb, 0xcb, 0x41, 0xf2, 0xd4, 0x2f, 0xff, 0xe7, 0xf3, 0x2a, 0x8e, 0x28, 0x1b, 0x5c, 0x10, 0x3a, 0x27, 0x02, 0x1d, 0x0d, 0x08, 0x36, 0x22, 0x50, 0x75, 0x3c, 0xdf, 0x70, 0x29, 0x21, 0x95, 0xa5, 0x3a, 0x48, 0x72, 0x8c, 0xeb, 0x58, 0x44, 0xc2, 0xd9, 0x8b, 0xab }, + { 0x90, 0x71, 0xb7, 0xa8, 0xa0, 0x75, 0xd0, 0x09, 0x5b, 0x8f, 0xb3, 0xae, 0x51, 0x13, 0x78, 0x57, 0x35, 0xab, 0x98, 0xe2, 0xb5, 0x2f, 0xaf, 0x91, 0xd5, 0xb8, 0x9e, 0x44, 0xaa, 0xc5, 0xb5, 0xd4, 0xeb, 0xbf, 0x91, 0x22, 0x3b, 0x0f, 0xf4, 0xc7, 0x19, 0x05, 0xda, 0x55, 0x34, 0x2e, 0x64, 0x65, 0x5d, 0x6e, 0xf8, 0xc8, 0x9a, 0x47, 0x68, 0xc3, 0xf9, 0x3a, 0x6d, 0xc0, 0x36, 0x6b, 0x5b, 0xc8 }, + { 0xeb, 0xb3, 0x02, 0x40, 0xdd, 0x96, 0xc7, 0xbc, 0x8d, 0x0a, 0xbe, 0x49, 0xaa, 0x4e, 0xdc, 0xbb, 0x4a, 0xfd, 0xc5, 0x1f, 0xf9, 0xaa, 0xf7, 0x20, 0xd3, 0xf9, 0xe7, 0xfb, 0xb0, 0xf9, 0xc6, 0xd6, 0x57, 0x13, 0x50, 0x50, 0x17, 0x69, 0xfc, 0x4e, 0xbd, 0x0b, 0x21, 0x41, 0x24, 0x7f, 0xf4, 0x00, 0xd4, 0xfd, 0x4b, 0xe4, 0x14, 0xed, 0xf3, 0x77, 0x57, 0xbb, 0x90, 0xa3, 0x2a, 0xc5, 0xc6, 0x5a }, + { 0x85, 0x32, 0xc5, 0x8b, 0xf3, 0xc8, 0x01, 0x5d, 0x9d, 0x1c, 0xbe, 0x00, 0xee, 0xf1, 0xf5, 0x08, 0x2f, 0x8f, 0x36, 0x32, 0xfb, 0xe9, 0xf1, 0xed, 0x4f, 0x9d, 0xfb, 0x1f, 0xa7, 0x9e, 0x82, 0x83, 0x06, 0x6d, 0x77, 0xc4, 0x4c, 0x4a, 0xf9, 0x43, 0xd7, 0x6b, 0x30, 0x03, 0x64, 0xae, 0xcb, 0xd0, 0x64, 0x8c, 0x8a, 0x89, 0x39, 0xbd, 0x20, 0x41, 0x23, 0xf4, 0xb5, 0x62, 0x60, 0x42, 0x2d, 0xec }, + { 0xfe, 0x98, 0x46, 0xd6, 0x4f, 0x7c, 0x77, 0x08, 0x69, 0x6f, 0x84, 0x0e, 0x2d, 0x76, 0xcb, 0x44, 0x08, 0xb6, 0x59, 0x5c, 0x2f, 0x81, 0xec, 0x6a, 0x28, 0xa7, 0xf2, 0xf2, 0x0c, 0xb8, 0x8c, 0xfe, 0x6a, 0xc0, 0xb9, 0xe9, 0xb8, 0x24, 0x4f, 0x08, 0xbd, 0x70, 0x95, 0xc3, 0x50, 0xc1, 0xd0, 0x84, 0x2f, 0x64, 0xfb, 0x01, 0xbb, 0x7f, 0x53, 0x2d, 0xfc, 0xd4, 0x73, 0x71, 0xb0, 0xae, 0xeb, 0x79 }, + { 0x28, 0xf1, 0x7e, 0xa6, 0xfb, 0x6c, 0x42, 0x09, 0x2d, 0xc2, 0x64, 0x25, 0x7e, 0x29, 0x74, 0x63, 0x21, 0xfb, 0x5b, 0xda, 0xea, 0x98, 0x73, 0xc2, 0xa7, 0xfa, 0x9d, 0x8f, 0x53, 0x81, 0x8e, 0x89, 0x9e, 0x16, 0x1b, 0xc7, 0x7d, 0xfe, 0x80, 0x90, 0xaf, 0xd8, 0x2b, 0xf2, 0x26, 0x6c, 0x5c, 0x1b, 0xc9, 0x30, 0xa8, 0xd1, 0x54, 0x76, 0x24, 0x43, 0x9e, 0x66, 0x2e, 0xf6, 0x95, 0xf2, 0x6f, 0x24 }, + { 0xec, 0x6b, 0x7d, 0x7f, 0x03, 0x0d, 0x48, 0x50, 0xac, 0xae, 0x3c, 0xb6, 0x15, 0xc2, 0x1d, 0xd2, 0x52, 0x06, 0xd6, 0x3e, 0x84, 0xd1, 0xdb, 0x8d, 0x95, 0x73, 0x70, 0x73, 0x7b, 0xa0, 0xe9, 0x84, 0x67, 0xea, 0x0c, 0xe2, 0x74, 0xc6, 0x61, 0x99, 0x90, 0x1e, 0xae, 0xc1, 0x8a, 0x08, 0x52, 0x57, 0x15, 0xf5, 0x3b, 0xfd, 0xb0, 0xaa, 0xcb, 0x61, 0x3d, 0x34, 0x2e, 0xbd, 0xce, 0xed, 0xdc, 0x3b }, + { 0xb4, 0x03, 0xd3, 0x69, 0x1c, 0x03, 0xb0, 0xd3, 0x41, 0x8d, 0xf3, 0x27, 0xd5, 0x86, 0x0d, 0x34, 0xbb, 0xfc, 0xc4, 0x51, 0x9b, 0xfb, 0xce, 0x36, 0xbf, 0x33, 0xb2, 0x08, 0x38, 0x5f, 0xad, 0xb9, 0x18, 0x6b, 0xc7, 0x8a, 0x76, 0xc4, 0x89, 0xd8, 0x9f, 0xd5, 0x7e, 0x7d, 0xc7, 0x54, 0x12, 0xd2, 0x3b, 0xcd, 0x1d, 0xae, 0x84, 0x70, 0xce, 0x92, 0x74, 0x75, 0x4b, 0xb8, 0x58, 0x5b, 0x13, 0xc5 }, + { 0x31, 0xfc, 0x79, 0x73, 0x8b, 0x87, 0x72, 0xb3, 0xf5, 0x5c, 0xd8, 0x17, 0x88, 0x13, 0xb3, 0xb5, 0x2d, 0x0d, 0xb5, 0xa4, 0x19, 0xd3, 0x0b, 0xa9, 0x49, 0x5c, 0x4b, 0x9d, 0xa0, 0x21, 0x9f, 0xac, 0x6d, 0xf8, 0xe7, 0xc2, 0x3a, 0x81, 0x15, 0x51, 0xa6, 0x2b, 0x82, 0x7f, 0x25, 0x6e, 0xcd, 0xb8, 0x12, 0x4a, 0xc8, 0xa6, 0x79, 0x2c, 0xcf, 0xec, 0xc3, 0xb3, 0x01, 0x27, 0x22, 0xe9, 0x44, 0x63 }, + { 0xbb, 0x20, 0x39, 0xec, 0x28, 0x70, 0x91, 0xbc, 0xc9, 0x64, 0x2f, 0xc9, 0x00, 0x49, 0xe7, 0x37, 0x32, 0xe0, 0x2e, 0x57, 0x7e, 0x28, 0x62, 0xb3, 0x22, 0x16, 0xae, 0x9b, 0xed, 0xcd, 0x73, 0x0c, 0x4c, 0x28, 0x4e, 0xf3, 0x96, 0x8c, 0x36, 0x8b, 0x7d, 0x37, 0x58, 0x4f, 0x97, 0xbd, 0x4b, 0x4d, 0xc6, 0xef, 0x61, 0x27, 0xac, 0xfe, 0x2e, 0x6a, 0xe2, 0x50, 0x91, 0x24, 0xe6, 0x6c, 0x8a, 0xf4 }, + { 0xf5, 0x3d, 0x68, 0xd1, 0x3f, 0x45, 0xed, 0xfc, 0xb9, 0xbd, 0x41, 0x5e, 0x28, 0x31, 0xe9, 0x38, 0x35, 0x0d, 0x53, 0x80, 0xd3, 0x43, 0x22, 0x78, 0xfc, 0x1c, 0x0c, 0x38, 0x1f, 0xcb, 0x7c, 0x65, 0xc8, 0x2d, 0xaf, 0xe0, 0x51, 0xd8, 0xc8, 0xb0, 0xd4, 0x4e, 0x09, 0x74, 0xa0, 0xe5, 0x9e, 0xc7, 0xbf, 0x7e, 0xd0, 0x45, 0x9f, 0x86, 0xe9, 0x6f, 0x32, 0x9f, 0xc7, 0x97, 0x52, 0x51, 0x0f, 0xd3 }, + { 0x8d, 0x56, 0x8c, 0x79, 0x84, 0xf0, 0xec, 0xdf, 0x76, 0x40, 0xfb, 0xc4, 0x83, 0xb5, 0xd8, 0xc9, 0xf8, 0x66, 0x34, 0xf6, 0xf4, 0x32, 0x91, 0x84, 0x1b, 0x30, 0x9a, 0x35, 0x0a, 0xb9, 0xc1, 0x13, 0x7d, 0x24, 0x06, 0x6b, 0x09, 0xda, 0x99, 0x44, 0xba, 0xc5, 0x4d, 0x5b, 0xb6, 0x58, 0x0d, 0x83, 0x60, 0x47, 0xaa, 0xc7, 0x4a, 0xb7, 0x24, 0xb8, 0x87, 0xeb, 0xf9, 0x3d, 0x4b, 0x32, 0xec, 0xa9 }, + { 0xc0, 0xb6, 0x5c, 0xe5, 0xa9, 0x6f, 0xf7, 0x74, 0xc4, 0x56, 0xca, 0xc3, 0xb5, 0xf2, 0xc4, 0xcd, 0x35, 0x9b, 0x4f, 0xf5, 0x3e, 0xf9, 0x3a, 0x3d, 0xa0, 0x77, 0x8b, 0xe4, 0x90, 0x0d, 0x1e, 0x8d, 0xa1, 0x60, 0x1e, 0x76, 0x9e, 0x8f, 0x1b, 0x02, 0xd2, 0xa2, 0xf8, 0xc5, 0xb9, 0xfa, 0x10, 0xb4, 0x4f, 0x1c, 0x18, 0x69, 0x85, 0x46, 0x8f, 0xee, 0xb0, 0x08, 0x73, 0x02, 0x83, 0xa6, 0x65, 0x7d }, + { 0x49, 0x00, 0xbb, 0xa6, 0xf5, 0xfb, 0x10, 0x3e, 0xce, 0x8e, 0xc9, 0x6a, 0xda, 0x13, 0xa5, 0xc3, 0xc8, 0x54, 0x88, 0xe0, 0x55, 0x51, 0xda, 0x6b, 0x6b, 0x33, 0xd9, 0x88, 0xe6, 0x11, 0xec, 0x0f, 0xe2, 0xe3, 0xc2, 0xaa, 0x48, 0xea, 0x6a, 0xe8, 0x98, 0x6a, 0x3a, 0x23, 0x1b, 0x22, 0x3c, 0x5d, 0x27, 0xce, 0xc2, 0xea, 0xdd, 0xe9, 0x1c, 0xe0, 0x79, 0x81, 0xee, 0x65, 0x28, 0x62, 0xd1, 0xe4 }, + { 0xc7, 0xf5, 0xc3, 0x7c, 0x72, 0x85, 0xf9, 0x27, 0xf7, 0x64, 0x43, 0x41, 0x4d, 0x43, 0x57, 0xff, 0x78, 0x96, 0x47, 0xd7, 0xa0, 0x05, 0xa5, 0xa7, 0x87, 0xe0, 0x3c, 0x34, 0x6b, 0x57, 0xf4, 0x9f, 0x21, 0xb6, 0x4f, 0xa9, 0xcf, 0x4b, 0x7e, 0x45, 0x57, 0x3e, 0x23, 0x04, 0x90, 0x17, 0x56, 0x71, 0x21, 0xa9, 0xc3, 0xd4, 0xb2, 0xb7, 0x3e, 0xc5, 0xe9, 0x41, 0x35, 0x77, 0x52, 0x5d, 0xb4, 0x5a }, + { 0xec, 0x70, 0x96, 0x33, 0x07, 0x36, 0xfd, 0xb2, 0xd6, 0x4b, 0x56, 0x53, 0xe7, 0x47, 0x5d, 0xa7, 0x46, 0xc2, 0x3a, 0x46, 0x13, 0xa8, 0x26, 0x87, 0xa2, 0x80, 0x62, 0xd3, 0x23, 0x63, 0x64, 0x28, 0x4a, 0xc0, 0x17, 0x20, 0xff, 0xb4, 0x06, 0xcf, 0xe2, 0x65, 0xc0, 0xdf, 0x62, 0x6a, 0x18, 0x8c, 0x9e, 0x59, 0x63, 0xac, 0xe5, 0xd3, 0xd5, 0xbb, 0x36, 0x3e, 0x32, 0xc3, 0x8c, 0x21, 0x90, 0xa6 }, + { 0x82, 0xe7, 0x44, 0xc7, 0x5f, 0x46, 0x49, 0xec, 0x52, 0xb8, 0x07, 0x71, 0xa7, 0x7d, 0x47, 0x5a, 0x3b, 0xc0, 0x91, 0x98, 0x95, 0x56, 0x96, 0x0e, 0x27, 0x6a, 0x5f, 0x9e, 0xad, 0x92, 0xa0, 0x3f, 0x71, 0x87, 0x42, 0xcd, 0xcf, 0xea, 0xee, 0x5c, 0xb8, 0x5c, 0x44, 0xaf, 0x19, 0x8a, 0xdc, 0x43, 0xa4, 0xa4, 0x28, 0xf5, 0xf0, 0xc2, 0xdd, 0xb0, 0xbe, 0x36, 0x05, 0x9f, 0x06, 0xd7, 0xdf, 0x73 }, + { 0x28, 0x34, 0xb7, 0xa7, 0x17, 0x0f, 0x1f, 0x5b, 0x68, 0x55, 0x9a, 0xb7, 0x8c, 0x10, 0x50, 0xec, 0x21, 0xc9, 0x19, 0x74, 0x0b, 0x78, 0x4a, 0x90, 0x72, 0xf6, 0xe5, 0xd6, 0x9f, 0x82, 0x8d, 0x70, 0xc9, 0x19, 0xc5, 0x03, 0x9f, 0xb1, 0x48, 0xe3, 0x9e, 0x2c, 0x8a, 0x52, 0x11, 0x83, 0x78, 0xb0, 0x64, 0xca, 0x8d, 0x50, 0x01, 0xcd, 0x10, 0xa5, 0x47, 0x83, 0x87, 0xb9, 0x66, 0x71, 0x5e, 0xd6 }, + { 0x16, 0xb4, 0xad, 0xa8, 0x83, 0xf7, 0x2f, 0x85, 0x3b, 0xb7, 0xef, 0x25, 0x3e, 0xfc, 0xab, 0x0c, 0x3e, 0x21, 0x61, 0x68, 0x7a, 0xd6, 0x15, 0x43, 0xa0, 0xd2, 0x82, 0x4f, 0x91, 0xc1, 0xf8, 0x13, 0x47, 0xd8, 0x6b, 0xe7, 0x09, 0xb1, 0x69, 0x96, 0xe1, 0x7f, 0x2d, 0xd4, 0x86, 0x92, 0x7b, 0x02, 0x88, 0xad, 0x38, 0xd1, 0x30, 0x63, 0xc4, 0xa9, 0x67, 0x2c, 0x39, 0x39, 0x7d, 0x37, 0x89, 0xb6 }, + { 0x78, 0xd0, 0x48, 0xf3, 0xa6, 0x9d, 0x8b, 0x54, 0xae, 0x0e, 0xd6, 0x3a, 0x57, 0x3a, 0xe3, 0x50, 0xd8, 0x9f, 0x7c, 0x6c, 0xf1, 0xf3, 0x68, 0x89, 0x30, 0xde, 0x89, 0x9a, 0xfa, 0x03, 0x76, 0x97, 0x62, 0x9b, 0x31, 0x4e, 0x5c, 0xd3, 0x03, 0xaa, 0x62, 0xfe, 0xea, 0x72, 0xa2, 0x5b, 0xf4, 0x2b, 0x30, 0x4b, 0x6c, 0x6b, 0xcb, 0x27, 0xfa, 0xe2, 0x1c, 0x16, 0xd9, 0x25, 0xe1, 0xfb, 0xda, 0xc3 }, + { 0x0f, 0x74, 0x6a, 0x48, 0x74, 0x92, 0x87, 0xad, 0xa7, 0x7a, 0x82, 0x96, 0x1f, 0x05, 0xa4, 0xda, 0x4a, 0xbd, 0xb7, 0xd7, 0x7b, 0x12, 0x20, 0xf8, 0x36, 0xd0, 0x9e, 0xc8, 0x14, 0x35, 0x9c, 0x0e, 0xc0, 0x23, 0x9b, 0x8c, 0x7b, 0x9f, 0xf9, 0xe0, 0x2f, 0x56, 0x9d, 0x1b, 0x30, 0x1e, 0xf6, 0x7c, 0x46, 0x12, 0xd1, 0xde, 0x4f, 0x73, 0x0f, 0x81, 0xc1, 0x2c, 0x40, 0xcc, 0x06, 0x3c, 0x5c, 0xaa }, + { 0xf0, 0xfc, 0x85, 0x9d, 0x3b, 0xd1, 0x95, 0xfb, 0xdc, 0x2d, 0x59, 0x1e, 0x4c, 0xda, 0xc1, 0x51, 0x79, 0xec, 0x0f, 0x1d, 0xc8, 0x21, 0xc1, 0x1d, 0xf1, 0xf0, 0xc1, 0xd2, 0x6e, 0x62, 0x60, 0xaa, 0xa6, 0x5b, 0x79, 0xfa, 0xfa, 0xca, 0xfd, 0x7d, 0x3a, 0xd6, 0x1e, 0x60, 0x0f, 0x25, 0x09, 0x05, 0xf5, 0x87, 0x8c, 0x87, 0x45, 0x28, 0x97, 0x64, 0x7a, 0x35, 0xb9, 0x95, 0xbc, 0xad, 0xc3, 0xa3 }, + { 0x26, 0x20, 0xf6, 0x87, 0xe8, 0x62, 0x5f, 0x6a, 0x41, 0x24, 0x60, 0xb4, 0x2e, 0x2c, 0xef, 0x67, 0x63, 0x42, 0x08, 0xce, 0x10, 0xa0, 0xcb, 0xd4, 0xdf, 0xf7, 0x04, 0x4a, 0x41, 0xb7, 0x88, 0x00, 0x77, 0xe9, 0xf8, 0xdc, 0x3b, 0x8d, 0x12, 0x16, 0xd3, 0x37, 0x6a, 0x21, 0xe0, 0x15, 0xb5, 0x8f, 0xb2, 0x79, 0xb5, 0x21, 0xd8, 0x3f, 0x93, 0x88, 0xc7, 0x38, 0x2c, 0x85, 0x05, 0x59, 0x0b, 0x9b }, + { 0x22, 0x7e, 0x3a, 0xed, 0x8d, 0x2c, 0xb1, 0x0b, 0x91, 0x8f, 0xcb, 0x04, 0xf9, 0xde, 0x3e, 0x6d, 0x0a, 0x57, 0xe0, 0x84, 0x76, 0xd9, 0x37, 0x59, 0xcd, 0x7b, 0x2e, 0xd5, 0x4a, 0x1c, 0xbf, 0x02, 0x39, 0xc5, 0x28, 0xfb, 0x04, 0xbb, 0xf2, 0x88, 0x25, 0x3e, 0x60, 0x1d, 0x3b, 0xc3, 0x8b, 0x21, 0x79, 0x4a, 0xfe, 0xf9, 0x0b, 0x17, 0x09, 0x4a, 0x18, 0x2c, 0xac, 0x55, 0x77, 0x45, 0xe7, 0x5f }, + { 0x1a, 0x92, 0x99, 0x01, 0xb0, 0x9c, 0x25, 0xf2, 0x7d, 0x6b, 0x35, 0xbe, 0x7b, 0x2f, 0x1c, 0x47, 0x45, 0x13, 0x1f, 0xde, 0xbc, 0xa7, 0xf3, 0xe2, 0x45, 0x19, 0x26, 0x72, 0x04, 0x34, 0xe0, 0xdb, 0x6e, 0x74, 0xfd, 0x69, 0x3a, 0xd2, 0x9b, 0x77, 0x7d, 0xc3, 0x35, 0x5c, 0x59, 0x2a, 0x36, 0x1c, 0x48, 0x73, 0xb0, 0x11, 0x33, 0xa5, 0x7c, 0x2e, 0x3b, 0x70, 0x75, 0xcb, 0xdb, 0x86, 0xf4, 0xfc }, + { 0x5f, 0xd7, 0x96, 0x8b, 0xc2, 0xfe, 0x34, 0xf2, 0x20, 0xb5, 0xe3, 0xdc, 0x5a, 0xf9, 0x57, 0x17, 0x42, 0xd7, 0x3b, 0x7d, 0x60, 0x81, 0x9f, 0x28, 0x88, 0xb6, 0x29, 0x07, 0x2b, 0x96, 0xa9, 0xd8, 0xab, 0x2d, 0x91, 0xb8, 0x2d, 0x0a, 0x9a, 0xab, 0xa6, 0x1b, 0xbd, 0x39, 0x95, 0x81, 0x32, 0xfc, 0xc4, 0x25, 0x70, 0x23, 0xd1, 0xec, 0xa5, 0x91, 0xb3, 0x05, 0x4e, 0x2d, 0xc8, 0x1c, 0x82, 0x00 }, + { 0xdf, 0xcc, 0xe8, 0xcf, 0x32, 0x87, 0x0c, 0xc6, 0xa5, 0x03, 0xea, 0xda, 0xfc, 0x87, 0xfd, 0x6f, 0x78, 0x91, 0x8b, 0x9b, 0x4d, 0x07, 0x37, 0xdb, 0x68, 0x10, 0xbe, 0x99, 0x6b, 0x54, 0x97, 0xe7, 0xe5, 0xcc, 0x80, 0xe3, 0x12, 0xf6, 0x1e, 0x71, 0xff, 0x3e, 0x96, 0x24, 0x43, 0x60, 0x73, 0x15, 0x64, 0x03, 0xf7, 0x35, 0xf5, 0x6b, 0x0b, 0x01, 0x84, 0x5c, 0x18, 0xf6, 0xca, 0xf7, 0x72, 0xe6 }, + { 0x02, 0xf7, 0xef, 0x3a, 0x9c, 0xe0, 0xff, 0xf9, 0x60, 0xf6, 0x70, 0x32, 0xb2, 0x96, 0xef, 0xca, 0x30, 0x61, 0xf4, 0x93, 0x4d, 0x69, 0x07, 0x49, 0xf2, 0xd0, 0x1c, 0x35, 0xc8, 0x1c, 0x14, 0xf3, 0x9a, 0x67, 0xfa, 0x35, 0x0b, 0xc8, 0xa0, 0x35, 0x9b, 0xf1, 0x72, 0x4b, 0xff, 0xc3, 0xbc, 0xa6, 0xd7, 0xc7, 0xbb, 0xa4, 0x79, 0x1f, 0xd5, 0x22, 0xa3, 0xad, 0x35, 0x3c, 0x02, 0xec, 0x5a, 0xa8 }, + { 0x64, 0xbe, 0x5c, 0x6a, 0xba, 0x65, 0xd5, 0x94, 0x84, 0x4a, 0xe7, 0x8b, 0xb0, 0x22, 0xe5, 0xbe, 0xbe, 0x12, 0x7f, 0xd6, 0xb6, 0xff, 0xa5, 0xa1, 0x37, 0x03, 0x85, 0x5a, 0xb6, 0x3b, 0x62, 0x4d, 0xcd, 0x1a, 0x36, 0x3f, 0x99, 0x20, 0x3f, 0x63, 0x2e, 0xc3, 0x86, 0xf3, 0xea, 0x76, 0x7f, 0xc9, 0x92, 0xe8, 0xed, 0x96, 0x86, 0x58, 0x6a, 0xa2, 0x75, 0x55, 0xa8, 0x59, 0x9d, 0x5b, 0x80, 0x8f }, + { 0xf7, 0x85, 0x85, 0x50, 0x5c, 0x4e, 0xaa, 0x54, 0xa8, 0xb5, 0xbe, 0x70, 0xa6, 0x1e, 0x73, 0x5e, 0x0f, 0xf9, 0x7a, 0xf9, 0x44, 0xdd, 0xb3, 0x00, 0x1e, 0x35, 0xd8, 0x6c, 0x4e, 0x21, 0x99, 0xd9, 0x76, 0x10, 0x4b, 0x6a, 0xe3, 0x17, 0x50, 0xa3, 0x6a, 0x72, 0x6e, 0xd2, 0x85, 0x06, 0x4f, 0x59, 0x81, 0xb5, 0x03, 0x88, 0x9f, 0xef, 0x82, 0x2f, 0xcd, 0xc2, 0x89, 0x8d, 0xdd, 0xb7, 0x88, 0x9a }, + { 0xe4, 0xb5, 0x56, 0x60, 0x33, 0x86, 0x95, 0x72, 0xed, 0xfd, 0x87, 0x47, 0x9a, 0x5b, 0xb7, 0x3c, 0x80, 0xe8, 0x75, 0x9b, 0x91, 0x23, 0x28, 0x79, 0xd9, 0x6b, 0x1d, 0xda, 0x36, 0xc0, 0x12, 0x07, 0x6e, 0xe5, 0xa2, 0xed, 0x7a, 0xe2, 0xde, 0x63, 0xef, 0x84, 0x06, 0xa0, 0x6a, 0xea, 0x82, 0xc1, 0x88, 0x03, 0x1b, 0x56, 0x0b, 0xea, 0xfb, 0x58, 0x3f, 0xb3, 0xde, 0x9e, 0x57, 0x95, 0x2a, 0x7e }, + { 0xe1, 0xb3, 0xe7, 0xed, 0x86, 0x7f, 0x6c, 0x94, 0x84, 0xa2, 0xa9, 0x7f, 0x77, 0x15, 0xf2, 0x5e, 0x25, 0x29, 0x4e, 0x99, 0x2e, 0x41, 0xf6, 0xa7, 0xc1, 0x61, 0xff, 0xc2, 0xad, 0xc6, 0xda, 0xae, 0xb7, 0x11, 0x31, 0x02, 0xd5, 0xe6, 0x09, 0x02, 0x87, 0xfe, 0x6a, 0xd9, 0x4c, 0xe5, 0xd6, 0xb7, 0x39, 0xc6, 0xca, 0x24, 0x0b, 0x05, 0xc7, 0x6f, 0xb7, 0x3f, 0x25, 0xdd, 0x02, 0x4b, 0xf9, 0x35 }, + { 0x85, 0xfd, 0x08, 0x5f, 0xdc, 0x12, 0xa0, 0x80, 0x98, 0x3d, 0xf0, 0x7b, 0xd7, 0x01, 0x2b, 0x0d, 0x40, 0x2a, 0x0f, 0x40, 0x43, 0xfc, 0xb2, 0x77, 0x5a, 0xdf, 0x0b, 0xad, 0x17, 0x4f, 0x9b, 0x08, 0xd1, 0x67, 0x6e, 0x47, 0x69, 0x85, 0x78, 0x5c, 0x0a, 0x5d, 0xcc, 0x41, 0xdb, 0xff, 0x6d, 0x95, 0xef, 0x4d, 0x66, 0xa3, 0xfb, 0xdc, 0x4a, 0x74, 0xb8, 0x2b, 0xa5, 0x2d, 0xa0, 0x51, 0x2b, 0x74 }, + { 0xae, 0xd8, 0xfa, 0x76, 0x4b, 0x0f, 0xbf, 0xf8, 0x21, 0xe0, 0x52, 0x33, 0xd2, 0xf7, 0xb0, 0x90, 0x0e, 0xc4, 0x4d, 0x82, 0x6f, 0x95, 0xe9, 0x3c, 0x34, 0x3c, 0x1b, 0xc3, 0xba, 0x5a, 0x24, 0x37, 0x4b, 0x1d, 0x61, 0x6e, 0x7e, 0x7a, 0xba, 0x45, 0x3a, 0x0a, 0xda, 0x5e, 0x4f, 0xab, 0x53, 0x82, 0x40, 0x9e, 0x0d, 0x42, 0xce, 0x9c, 0x2b, 0xc7, 0xfb, 0x39, 0xa9, 0x9c, 0x34, 0x0c, 0x20, 0xf0 }, + { 0x7b, 0xa3, 0xb2, 0xe2, 0x97, 0x23, 0x35, 0x22, 0xee, 0xb3, 0x43, 0xbd, 0x3e, 0xbc, 0xfd, 0x83, 0x5a, 0x04, 0x00, 0x77, 0x35, 0xe8, 0x7f, 0x0c, 0xa3, 0x00, 0xcb, 0xee, 0x6d, 0x41, 0x65, 0x65, 0x16, 0x21, 0x71, 0x58, 0x1e, 0x40, 0x20, 0xff, 0x4c, 0xf1, 0x76, 0x45, 0x0f, 0x12, 0x91, 0xea, 0x22, 0x85, 0xcb, 0x9e, 0xbf, 0xfe, 0x4c, 0x56, 0x66, 0x06, 0x27, 0x68, 0x51, 0x45, 0x05, 0x1c }, + { 0xde, 0x74, 0x8b, 0xcf, 0x89, 0xec, 0x88, 0x08, 0x47, 0x21, 0xe1, 0x6b, 0x85, 0xf3, 0x0a, 0xdb, 0x1a, 0x61, 0x34, 0xd6, 0x64, 0xb5, 0x84, 0x35, 0x69, 0xba, 0xbc, 0x5b, 0xbd, 0x1a, 0x15, 0xca, 0x9b, 0x61, 0x80, 0x3c, 0x90, 0x1a, 0x4f, 0xef, 0x32, 0x96, 0x5a, 0x17, 0x49, 0xc9, 0xf3, 0xa4, 0xe2, 0x43, 0xe1, 0x73, 0x93, 0x9d, 0xc5, 0xa8, 0xdc, 0x49, 0x5c, 0x67, 0x1a, 0xb5, 0x21, 0x45 }, + { 0xaa, 0xf4, 0xd2, 0xbd, 0xf2, 0x00, 0xa9, 0x19, 0x70, 0x6d, 0x98, 0x42, 0xdc, 0xe1, 0x6c, 0x98, 0x14, 0x0d, 0x34, 0xbc, 0x43, 0x3d, 0xf3, 0x20, 0xab, 0xa9, 0xbd, 0x42, 0x9e, 0x54, 0x9a, 0xa7, 0xa3, 0x39, 0x76, 0x52, 0xa4, 0xd7, 0x68, 0x27, 0x77, 0x86, 0xcf, 0x99, 0x3c, 0xde, 0x23, 0x38, 0x67, 0x3e, 0xd2, 0xe6, 0xb6, 0x6c, 0x96, 0x1f, 0xef, 0xb8, 0x2c, 0xd2, 0x0c, 0x93, 0x33, 0x8f }, + { 0xc4, 0x08, 0x21, 0x89, 0x68, 0xb7, 0x88, 0xbf, 0x86, 0x4f, 0x09, 0x97, 0xe6, 0xbc, 0x4c, 0x3d, 0xba, 0x68, 0xb2, 0x76, 0xe2, 0x12, 0x5a, 0x48, 0x43, 0x29, 0x60, 0x52, 0xff, 0x93, 0xbf, 0x57, 0x67, 0xb8, 0xcd, 0xce, 0x71, 0x31, 0xf0, 0x87, 0x64, 0x30, 0xc1, 0x16, 0x5f, 0xec, 0x6c, 0x4f, 0x47, 0xad, 0xaa, 0x4f, 0xd8, 0xbc, 0xfa, 0xce, 0xf4, 0x63, 0xb5, 0xd3, 0xd0, 0xfa, 0x61, 0xa0 }, + { 0x76, 0xd2, 0xd8, 0x19, 0xc9, 0x2b, 0xce, 0x55, 0xfa, 0x8e, 0x09, 0x2a, 0xb1, 0xbf, 0x9b, 0x9e, 0xab, 0x23, 0x7a, 0x25, 0x26, 0x79, 0x86, 0xca, 0xcf, 0x2b, 0x8e, 0xe1, 0x4d, 0x21, 0x4d, 0x73, 0x0d, 0xc9, 0xa5, 0xaa, 0x2d, 0x7b, 0x59, 0x6e, 0x86, 0xa1, 0xfd, 0x8f, 0xa0, 0x80, 0x4c, 0x77, 0x40, 0x2d, 0x2f, 0xcd, 0x45, 0x08, 0x36, 0x88, 0xb2, 0x18, 0xb1, 0xcd, 0xfa, 0x0d, 0xcb, 0xcb }, + { 0x72, 0x06, 0x5e, 0xe4, 0xdd, 0x91, 0xc2, 0xd8, 0x50, 0x9f, 0xa1, 0xfc, 0x28, 0xa3, 0x7c, 0x7f, 0xc9, 0xfa, 0x7d, 0x5b, 0x3f, 0x8a, 0xd3, 0xd0, 0xd7, 0xa2, 0x56, 0x26, 0xb5, 0x7b, 0x1b, 0x44, 0x78, 0x8d, 0x4c, 0xaf, 0x80, 0x62, 0x90, 0x42, 0x5f, 0x98, 0x90, 0xa3, 0xa2, 0xa3, 0x5a, 0x90, 0x5a, 0xb4, 0xb3, 0x7a, 0xcf, 0xd0, 0xda, 0x6e, 0x45, 0x17, 0xb2, 0x52, 0x5c, 0x96, 0x51, 0xe4 }, + { 0x64, 0x47, 0x5d, 0xfe, 0x76, 0x00, 0xd7, 0x17, 0x1b, 0xea, 0x0b, 0x39, 0x4e, 0x27, 0xc9, 0xb0, 0x0d, 0x8e, 0x74, 0xdd, 0x1e, 0x41, 0x6a, 0x79, 0x47, 0x36, 0x82, 0xad, 0x3d, 0xfd, 0xbb, 0x70, 0x66, 0x31, 0x55, 0x80, 0x55, 0xcf, 0xc8, 0xa4, 0x0e, 0x07, 0xbd, 0x01, 0x5a, 0x45, 0x40, 0xdc, 0xde, 0xa1, 0x58, 0x83, 0xcb, 0xbf, 0x31, 0x41, 0x2d, 0xf1, 0xde, 0x1c, 0xd4, 0x15, 0x2b, 0x91 }, + { 0x12, 0xcd, 0x16, 0x74, 0xa4, 0x48, 0x8a, 0x5d, 0x7c, 0x2b, 0x31, 0x60, 0xd2, 0xe2, 0xc4, 0xb5, 0x83, 0x71, 0xbe, 0xda, 0xd7, 0x93, 0x41, 0x8d, 0x6f, 0x19, 0xc6, 0xee, 0x38, 0x5d, 0x70, 0xb3, 0xe0, 0x67, 0x39, 0x36, 0x9d, 0x4d, 0xf9, 0x10, 0xed, 0xb0, 0xb0, 0xa5, 0x4c, 0xbf, 0xf4, 0x3d, 0x54, 0x54, 0x4c, 0xd3, 0x7a, 0xb3, 0xa0, 0x6c, 0xfa, 0x0a, 0x3d, 0xda, 0xc8, 0xb6, 0x6c, 0x89 }, + { 0x60, 0x75, 0x69, 0x66, 0x47, 0x9d, 0xed, 0xc6, 0xdd, 0x4b, 0xcf, 0xf8, 0xea, 0x7d, 0x1d, 0x4c, 0xe4, 0xd4, 0xaf, 0x2e, 0x7b, 0x09, 0x7e, 0x32, 0xe3, 0x76, 0x35, 0x18, 0x44, 0x11, 0x47, 0xcc, 0x12, 0xb3, 0xc0, 0xee, 0x6d, 0x2e, 0xca, 0xbf, 0x11, 0x98, 0xce, 0xc9, 0x2e, 0x86, 0xa3, 0x61, 0x6f, 0xba, 0x4f, 0x4e, 0x87, 0x2f, 0x58, 0x25, 0x33, 0x0a, 0xdb, 0xb4, 0xc1, 0xde, 0xe4, 0x44 }, + { 0xa7, 0x80, 0x3b, 0xcb, 0x71, 0xbc, 0x1d, 0x0f, 0x43, 0x83, 0xdd, 0xe1, 0xe0, 0x61, 0x2e, 0x04, 0xf8, 0x72, 0xb7, 0x15, 0xad, 0x30, 0x81, 0x5c, 0x22, 0x49, 0xcf, 0x34, 0xab, 0xb8, 0xb0, 0x24, 0x91, 0x5c, 0xb2, 0xfc, 0x9f, 0x4e, 0x7c, 0xc4, 0xc8, 0xcf, 0xd4, 0x5b, 0xe2, 0xd5, 0xa9, 0x1e, 0xab, 0x09, 0x41, 0xc7, 0xd2, 0x70, 0xe2, 0xda, 0x4c, 0xa4, 0xa9, 0xf7, 0xac, 0x68, 0x66, 0x3a }, + { 0xb8, 0x4e, 0xf6, 0xa7, 0x22, 0x9a, 0x34, 0xa7, 0x50, 0xd9, 0xa9, 0x8e, 0xe2, 0x52, 0x98, 0x71, 0x81, 0x6b, 0x87, 0xfb, 0xe3, 0xbc, 0x45, 0xb4, 0x5f, 0xa5, 0xae, 0x82, 0xd5, 0x14, 0x15, 0x40, 0x21, 0x11, 0x65, 0xc3, 0xc5, 0xd7, 0xa7, 0x47, 0x6b, 0xa5, 0xa4, 0xaa, 0x06, 0xd6, 0x64, 0x76, 0xf0, 0xd9, 0xdc, 0x49, 0xa3, 0xf1, 0xee, 0x72, 0xc3, 0xac, 0xab, 0xd4, 0x98, 0x96, 0x74, 0x14 }, + { 0xfa, 0xe4, 0xb6, 0xd8, 0xef, 0xc3, 0xf8, 0xc8, 0xe6, 0x4d, 0x00, 0x1d, 0xab, 0xec, 0x3a, 0x21, 0xf5, 0x44, 0xe8, 0x27, 0x14, 0x74, 0x52, 0x51, 0xb2, 0xb4, 0xb3, 0x93, 0xf2, 0xf4, 0x3e, 0x0d, 0xa3, 0xd4, 0x03, 0xc6, 0x4d, 0xb9, 0x5a, 0x2c, 0xb6, 0xe2, 0x3e, 0xbb, 0x7b, 0x9e, 0x94, 0xcd, 0xd5, 0xdd, 0xac, 0x54, 0xf0, 0x7c, 0x4a, 0x61, 0xbd, 0x3c, 0xb1, 0x0a, 0xa6, 0xf9, 0x3b, 0x49 }, + { 0x34, 0xf7, 0x28, 0x66, 0x05, 0xa1, 0x22, 0x36, 0x95, 0x40, 0x14, 0x1d, 0xed, 0x79, 0xb8, 0x95, 0x72, 0x55, 0xda, 0x2d, 0x41, 0x55, 0xab, 0xbf, 0x5a, 0x8d, 0xbb, 0x89, 0xc8, 0xeb, 0x7e, 0xde, 0x8e, 0xee, 0xf1, 0xda, 0xa4, 0x6d, 0xc2, 0x9d, 0x75, 0x1d, 0x04, 0x5d, 0xc3, 0xb1, 0xd6, 0x58, 0xbb, 0x64, 0xb8, 0x0f, 0xf8, 0x58, 0x9e, 0xdd, 0xb3, 0x82, 0x4b, 0x13, 0xda, 0x23, 0x5a, 0x6b }, + { 0x3b, 0x3b, 0x48, 0x43, 0x4b, 0xe2, 0x7b, 0x9e, 0xab, 0xab, 0xba, 0x43, 0xbf, 0x6b, 0x35, 0xf1, 0x4b, 0x30, 0xf6, 0xa8, 0x8d, 0xc2, 0xe7, 0x50, 0xc3, 0x58, 0x47, 0x0d, 0x6b, 0x3a, 0xa3, 0xc1, 0x8e, 0x47, 0xdb, 0x40, 0x17, 0xfa, 0x55, 0x10, 0x6d, 0x82, 0x52, 0xf0, 0x16, 0x37, 0x1a, 0x00, 0xf5, 0xf8, 0xb0, 0x70, 0xb7, 0x4b, 0xa5, 0xf2, 0x3c, 0xff, 0xc5, 0x51, 0x1c, 0x9f, 0x09, 0xf0 }, + { 0xba, 0x28, 0x9e, 0xbd, 0x65, 0x62, 0xc4, 0x8c, 0x3e, 0x10, 0xa8, 0xad, 0x6c, 0xe0, 0x2e, 0x73, 0x43, 0x3d, 0x1e, 0x93, 0xd7, 0xc9, 0x27, 0x9d, 0x4d, 0x60, 0xa7, 0xe8, 0x79, 0xee, 0x11, 0xf4, 0x41, 0xa0, 0x00, 0xf4, 0x8e, 0xd9, 0xf7, 0xc4, 0xed, 0x87, 0xa4, 0x51, 0x36, 0xd7, 0xdc, 0xcd, 0xca, 0x48, 0x21, 0x09, 0xc7, 0x8a, 0x51, 0x06, 0x2b, 0x3b, 0xa4, 0x04, 0x4a, 0xda, 0x24, 0x69 }, + { 0x02, 0x29, 0x39, 0xe2, 0x38, 0x6c, 0x5a, 0x37, 0x04, 0x98, 0x56, 0xc8, 0x50, 0xa2, 0xbb, 0x10, 0xa1, 0x3d, 0xfe, 0xa4, 0x21, 0x2b, 0x4c, 0x73, 0x2a, 0x88, 0x40, 0xa9, 0xff, 0xa5, 0xfa, 0xf5, 0x48, 0x75, 0xc5, 0x44, 0x88, 0x16, 0xb2, 0x78, 0x5a, 0x00, 0x7d, 0xa8, 0xa8, 0xd2, 0xbc, 0x7d, 0x71, 0xa5, 0x4e, 0x4e, 0x65, 0x71, 0xf1, 0x0b, 0x60, 0x0c, 0xbd, 0xb2, 0x5d, 0x13, 0xed, 0xe3 }, + { 0xe6, 0xfe, 0xc1, 0x9d, 0x89, 0xce, 0x87, 0x17, 0xb1, 0xa0, 0x87, 0x02, 0x46, 0x70, 0xfe, 0x02, 0x6f, 0x6c, 0x7c, 0xbd, 0xa1, 0x1c, 0xae, 0xf9, 0x59, 0xbb, 0x2d, 0x35, 0x1b, 0xf8, 0x56, 0xf8, 0x05, 0x5d, 0x1c, 0x0e, 0xbd, 0xaa, 0xa9, 0xd1, 0xb1, 0x78, 0x86, 0xfc, 0x2c, 0x56, 0x2b, 0x5e, 0x99, 0x64, 0x2f, 0xc0, 0x64, 0x71, 0x0c, 0x0d, 0x34, 0x88, 0xa0, 0x2b, 0x5e, 0xd7, 0xf6, 0xfd }, + { 0x94, 0xc9, 0x6f, 0x02, 0xa8, 0xf5, 0x76, 0xac, 0xa3, 0x2b, 0xa6, 0x1c, 0x2b, 0x20, 0x6f, 0x90, 0x72, 0x85, 0xd9, 0x29, 0x9b, 0x83, 0xac, 0x17, 0x5c, 0x20, 0x9a, 0x8d, 0x43, 0xd5, 0x3b, 0xfe, 0x68, 0x3d, 0xd1, 0xd8, 0x3e, 0x75, 0x49, 0xcb, 0x90, 0x6c, 0x28, 0xf5, 0x9a, 0xb7, 0xc4, 0x6f, 0x87, 0x51, 0x36, 0x6a, 0x28, 0xc3, 0x9d, 0xd5, 0xfe, 0x26, 0x93, 0xc9, 0x01, 0x96, 0x66, 0xc8 }, + { 0x31, 0xa0, 0xcd, 0x21, 0x5e, 0xbd, 0x2c, 0xb6, 0x1d, 0xe5, 0xb9, 0xed, 0xc9, 0x1e, 0x61, 0x95, 0xe3, 0x1c, 0x59, 0xa5, 0x64, 0x8d, 0x5c, 0x9f, 0x73, 0x7e, 0x12, 0x5b, 0x26, 0x05, 0x70, 0x8f, 0x2e, 0x32, 0x5a, 0xb3, 0x38, 0x1c, 0x8d, 0xce, 0x1a, 0x3e, 0x95, 0x88, 0x86, 0xf1, 0xec, 0xdc, 0x60, 0x31, 0x8f, 0x88, 0x2c, 0xfe, 0x20, 0xa2, 0x41, 0x91, 0x35, 0x2e, 0x61, 0x7b, 0x0f, 0x21 }, + { 0x91, 0xab, 0x50, 0x4a, 0x52, 0x2d, 0xce, 0x78, 0x77, 0x9f, 0x4c, 0x6c, 0x6b, 0xa2, 0xe6, 0xb6, 0xdb, 0x55, 0x65, 0xc7, 0x6d, 0x3e, 0x7e, 0x7c, 0x92, 0x0c, 0xaf, 0x7f, 0x75, 0x7e, 0xf9, 0xdb, 0x7c, 0x8f, 0xcf, 0x10, 0xe5, 0x7f, 0x03, 0x37, 0x9e, 0xa9, 0xbf, 0x75, 0xeb, 0x59, 0x89, 0x5d, 0x96, 0xe1, 0x49, 0x80, 0x0b, 0x6a, 0xae, 0x01, 0xdb, 0x77, 0x8b, 0xb9, 0x0a, 0xfb, 0xc9, 0x89 }, + { 0xd8, 0x5c, 0xab, 0xc6, 0xbd, 0x5b, 0x1a, 0x01, 0xa5, 0xaf, 0xd8, 0xc6, 0x73, 0x47, 0x40, 0xda, 0x9f, 0xd1, 0xc1, 0xac, 0xc6, 0xdb, 0x29, 0xbf, 0xc8, 0xa2, 0xe5, 0xb6, 0x68, 0xb0, 0x28, 0xb6, 0xb3, 0x15, 0x4b, 0xfb, 0x87, 0x03, 0xfa, 0x31, 0x80, 0x25, 0x1d, 0x58, 0x9a, 0xd3, 0x80, 0x40, 0xce, 0xb7, 0x07, 0xc4, 0xba, 0xd1, 0xb5, 0x34, 0x3c, 0xb4, 0x26, 0xb6, 0x1e, 0xaa, 0x49, 0xc1 }, + { 0xd6, 0x2e, 0xfb, 0xec, 0x2c, 0xa9, 0xc1, 0xf8, 0xbd, 0x66, 0xce, 0x8b, 0x3f, 0x6a, 0x89, 0x8c, 0xb3, 0xf7, 0x56, 0x6b, 0xa6, 0x56, 0x8c, 0x61, 0x8a, 0xd1, 0xfe, 0xb2, 0xb6, 0x5b, 0x76, 0xc3, 0xce, 0x1d, 0xd2, 0x0f, 0x73, 0x95, 0x37, 0x2f, 0xaf, 0x28, 0x42, 0x7f, 0x61, 0xc9, 0x27, 0x80, 0x49, 0xcf, 0x01, 0x40, 0xdf, 0x43, 0x4f, 0x56, 0x33, 0x04, 0x8c, 0x86, 0xb8, 0x1e, 0x03, 0x99 }, + { 0x7c, 0x8f, 0xdc, 0x61, 0x75, 0x43, 0x9e, 0x2c, 0x3d, 0xb1, 0x5b, 0xaf, 0xa7, 0xfb, 0x06, 0x14, 0x3a, 0x6a, 0x23, 0xbc, 0x90, 0xf4, 0x49, 0xe7, 0x9d, 0xee, 0xf7, 0x3c, 0x3d, 0x49, 0x2a, 0x67, 0x17, 0x15, 0xc1, 0x93, 0xb6, 0xfe, 0xa9, 0xf0, 0x36, 0x05, 0x0b, 0x94, 0x60, 0x69, 0x85, 0x6b, 0x89, 0x7e, 0x08, 0xc0, 0x07, 0x68, 0xf5, 0xee, 0x5d, 0xdc, 0xf7, 0x0b, 0x7c, 0xd6, 0xd0, 0xe0 }, + { 0x58, 0x60, 0x2e, 0xe7, 0x46, 0x8e, 0x6b, 0xc9, 0xdf, 0x21, 0xbd, 0x51, 0xb2, 0x3c, 0x00, 0x5f, 0x72, 0xd6, 0xcb, 0x01, 0x3f, 0x0a, 0x1b, 0x48, 0xcb, 0xec, 0x5e, 0xca, 0x29, 0x92, 0x99, 0xf9, 0x7f, 0x09, 0xf5, 0x4a, 0x9a, 0x01, 0x48, 0x3e, 0xae, 0xb3, 0x15, 0xa6, 0x47, 0x8b, 0xad, 0x37, 0xba, 0x47, 0xca, 0x13, 0x47, 0xc7, 0xc8, 0xfc, 0x9e, 0x66, 0x95, 0x59, 0x2c, 0x91, 0xd7, 0x23 }, + { 0x27, 0xf5, 0xb7, 0x9e, 0xd2, 0x56, 0xb0, 0x50, 0x99, 0x3d, 0x79, 0x34, 0x96, 0xed, 0xf4, 0x80, 0x7c, 0x1d, 0x85, 0xa7, 0xb0, 0xa6, 0x7c, 0x9c, 0x4f, 0xa9, 0x98, 0x60, 0x75, 0x0b, 0x0a, 0xe6, 0x69, 0x89, 0x67, 0x0a, 0x8f, 0xfd, 0x78, 0x56, 0xd7, 0xce, 0x41, 0x15, 0x99, 0xe5, 0x8c, 0x4d, 0x77, 0xb2, 0x32, 0xa6, 0x2b, 0xef, 0x64, 0xd1, 0x52, 0x75, 0xbe, 0x46, 0xa6, 0x82, 0x35, 0xff }, + { 0x39, 0x57, 0xa9, 0x76, 0xb9, 0xf1, 0x88, 0x7b, 0xf0, 0x04, 0xa8, 0xdc, 0xa9, 0x42, 0xc9, 0x2d, 0x2b, 0x37, 0xea, 0x52, 0x60, 0x0f, 0x25, 0xe0, 0xc9, 0xbc, 0x57, 0x07, 0xd0, 0x27, 0x9c, 0x00, 0xc6, 0xe8, 0x5a, 0x83, 0x9b, 0x0d, 0x2d, 0x8e, 0xb5, 0x9c, 0x51, 0xd9, 0x47, 0x88, 0xeb, 0xe6, 0x24, 0x74, 0xa7, 0x91, 0xca, 0xdf, 0x52, 0xcc, 0xcf, 0x20, 0xf5, 0x07, 0x0b, 0x65, 0x73, 0xfc }, + { 0xea, 0xa2, 0x37, 0x6d, 0x55, 0x38, 0x0b, 0xf7, 0x72, 0xec, 0xca, 0x9c, 0xb0, 0xaa, 0x46, 0x68, 0xc9, 0x5c, 0x70, 0x71, 0x62, 0xfa, 0x86, 0xd5, 0x18, 0xc8, 0xce, 0x0c, 0xa9, 0xbf, 0x73, 0x62, 0xb9, 0xf2, 0xa0, 0xad, 0xc3, 0xff, 0x59, 0x92, 0x2d, 0xf9, 0x21, 0xb9, 0x45, 0x67, 0xe8, 0x1e, 0x45, 0x2f, 0x6c, 0x1a, 0x07, 0xfc, 0x81, 0x7c, 0xeb, 0xe9, 0x96, 0x04, 0xb3, 0x50, 0x5d, 0x38 }, + { 0xc1, 0xe2, 0xc7, 0x8b, 0x6b, 0x27, 0x34, 0xe2, 0x48, 0x0e, 0xc5, 0x50, 0x43, 0x4c, 0xb5, 0xd6, 0x13, 0x11, 0x1a, 0xdc, 0xc2, 0x1d, 0x47, 0x55, 0x45, 0xc3, 0xb1, 0xb7, 0xe6, 0xff, 0x12, 0x44, 0x44, 0x76, 0xe5, 0xc0, 0x55, 0x13, 0x2e, 0x22, 0x29, 0xdc, 0x0f, 0x80, 0x70, 0x44, 0xbb, 0x91, 0x9b, 0x1a, 0x56, 0x62, 0xdd, 0x38, 0xa9, 0xee, 0x65, 0xe2, 0x43, 0xa3, 0x91, 0x1a, 0xed, 0x1a }, + { 0x8a, 0xb4, 0x87, 0x13, 0x38, 0x9d, 0xd0, 0xfc, 0xf9, 0xf9, 0x65, 0xd3, 0xce, 0x66, 0xb1, 0xe5, 0x59, 0xa1, 0xf8, 0xc5, 0x87, 0x41, 0xd6, 0x76, 0x83, 0xcd, 0x97, 0x13, 0x54, 0xf4, 0x52, 0xe6, 0x2d, 0x02, 0x07, 0xa6, 0x5e, 0x43, 0x6c, 0x5d, 0x5d, 0x8f, 0x8e, 0xe7, 0x1c, 0x6a, 0xbf, 0xe5, 0x0e, 0x66, 0x90, 0x04, 0xc3, 0x02, 0xb3, 0x1a, 0x7e, 0xa8, 0x31, 0x1d, 0x4a, 0x91, 0x60, 0x51 }, + { 0x24, 0xce, 0x0a, 0xdd, 0xaa, 0x4c, 0x65, 0x03, 0x8b, 0xd1, 0xb1, 0xc0, 0xf1, 0x45, 0x2a, 0x0b, 0x12, 0x87, 0x77, 0xaa, 0xbc, 0x94, 0xa2, 0x9d, 0xf2, 0xfd, 0x6c, 0x7e, 0x2f, 0x85, 0xf8, 0xab, 0x9a, 0xc7, 0xef, 0xf5, 0x16, 0xb0, 0xe0, 0xa8, 0x25, 0xc8, 0x4a, 0x24, 0xcf, 0xe4, 0x92, 0xea, 0xad, 0x0a, 0x63, 0x08, 0xe4, 0x6d, 0xd4, 0x2f, 0xe8, 0x33, 0x3a, 0xb9, 0x71, 0xbb, 0x30, 0xca }, + { 0x51, 0x54, 0xf9, 0x29, 0xee, 0x03, 0x04, 0x5b, 0x6b, 0x0c, 0x00, 0x04, 0xfa, 0x77, 0x8e, 0xde, 0xe1, 0xd1, 0x39, 0x89, 0x32, 0x67, 0xcc, 0x84, 0x82, 0x5a, 0xd7, 0xb3, 0x6c, 0x63, 0xde, 0x32, 0x79, 0x8e, 0x4a, 0x16, 0x6d, 0x24, 0x68, 0x65, 0x61, 0x35, 0x4f, 0x63, 0xb0, 0x07, 0x09, 0xa1, 0x36, 0x4b, 0x3c, 0x24, 0x1d, 0xe3, 0xfe, 0xbf, 0x07, 0x54, 0x04, 0x58, 0x97, 0x46, 0x7c, 0xd4 }, + { 0xe7, 0x4e, 0x90, 0x79, 0x20, 0xfd, 0x87, 0xbd, 0x5a, 0xd6, 0x36, 0xdd, 0x11, 0x08, 0x5e, 0x50, 0xee, 0x70, 0x45, 0x9c, 0x44, 0x3e, 0x1c, 0xe5, 0x80, 0x9a, 0xf2, 0xbc, 0x2e, 0xba, 0x39, 0xf9, 0xe6, 0xd7, 0x12, 0x8e, 0x0e, 0x37, 0x12, 0xc3, 0x16, 0xda, 0x06, 0xf4, 0x70, 0x5d, 0x78, 0xa4, 0x83, 0x8e, 0x28, 0x12, 0x1d, 0x43, 0x44, 0xa2, 0xc7, 0x9c, 0x5e, 0x0d, 0xb3, 0x07, 0xa6, 0x77 }, + { 0xbf, 0x91, 0xa2, 0x23, 0x34, 0xba, 0xc2, 0x0f, 0x3f, 0xd8, 0x06, 0x63, 0xb3, 0xcd, 0x06, 0xc4, 0xe8, 0x80, 0x2f, 0x30, 0xe6, 0xb5, 0x9f, 0x90, 0xd3, 0x03, 0x5c, 0xc9, 0x79, 0x8a, 0x21, 0x7e, 0xd5, 0xa3, 0x1a, 0xbb, 0xda, 0x7f, 0xa6, 0x84, 0x28, 0x27, 0xbd, 0xf2, 0xa7, 0xa1, 0xc2, 0x1f, 0x6f, 0xcf, 0xcc, 0xbb, 0x54, 0xc6, 0xc5, 0x29, 0x26, 0xf3, 0x2d, 0xa8, 0x16, 0x26, 0x9b, 0xe1 }, + { 0xd9, 0xd5, 0xc7, 0x4b, 0xe5, 0x12, 0x1b, 0x0b, 0xd7, 0x42, 0xf2, 0x6b, 0xff, 0xb8, 0xc8, 0x9f, 0x89, 0x17, 0x1f, 0x3f, 0x93, 0x49, 0x13, 0x49, 0x2b, 0x09, 0x03, 0xc2, 0x71, 0xbb, 0xe2, 0xb3, 0x39, 0x5e, 0xf2, 0x59, 0x66, 0x9b, 0xef, 0x43, 0xb5, 0x7f, 0x7f, 0xcc, 0x30, 0x27, 0xdb, 0x01, 0x82, 0x3f, 0x6b, 0xae, 0xe6, 0x6e, 0x4f, 0x9f, 0xea, 0xd4, 0xd6, 0x72, 0x6c, 0x74, 0x1f, 0xce }, + { 0x50, 0xc8, 0xb8, 0xcf, 0x34, 0xcd, 0x87, 0x9f, 0x80, 0xe2, 0xfa, 0xab, 0x32, 0x30, 0xb0, 0xc0, 0xe1, 0xcc, 0x3e, 0x9d, 0xca, 0xde, 0xb1, 0xb9, 0xd9, 0x7a, 0xb9, 0x23, 0x41, 0x5d, 0xd9, 0xa1, 0xfe, 0x38, 0xad, 0xdd, 0x5c, 0x11, 0x75, 0x6c, 0x67, 0x99, 0x0b, 0x25, 0x6e, 0x95, 0xad, 0x6d, 0x8f, 0x9f, 0xed, 0xce, 0x10, 0xbf, 0x1c, 0x90, 0x67, 0x9c, 0xde, 0x0e, 0xcf, 0x1b, 0xe3, 0x47 }, + { 0x0a, 0x38, 0x6e, 0x7c, 0xd5, 0xdd, 0x9b, 0x77, 0xa0, 0x35, 0xe0, 0x9f, 0xe6, 0xfe, 0xe2, 0xc8, 0xce, 0x61, 0xb5, 0x38, 0x3c, 0x87, 0xea, 0x43, 0x20, 0x50, 0x59, 0xc5, 0xe4, 0xcd, 0x4f, 0x44, 0x08, 0x31, 0x9b, 0xb0, 0xa8, 0x23, 0x60, 0xf6, 0xa5, 0x8e, 0x6c, 0x9c, 0xe3, 0xf4, 0x87, 0xc4, 0x46, 0x06, 0x3b, 0xf8, 0x13, 0xbc, 0x6b, 0xa5, 0x35, 0xe1, 0x7f, 0xc1, 0x82, 0x6c, 0xfc, 0x91 }, + { 0x1f, 0x14, 0x59, 0xcb, 0x6b, 0x61, 0xcb, 0xac, 0x5f, 0x0e, 0xfe, 0x8f, 0xc4, 0x87, 0x53, 0x8f, 0x42, 0x54, 0x89, 0x87, 0xfc, 0xd5, 0x62, 0x21, 0xcf, 0xa7, 0xbe, 0xb2, 0x25, 0x04, 0x76, 0x9e, 0x79, 0x2c, 0x45, 0xad, 0xfb, 0x1d, 0x6b, 0x3d, 0x60, 0xd7, 0xb7, 0x49, 0xc8, 0xa7, 0x5b, 0x0b, 0xdf, 0x14, 0xe8, 0xea, 0x72, 0x1b, 0x95, 0xdc, 0xa5, 0x38, 0xca, 0x6e, 0x25, 0x71, 0x12, 0x09 }, + { 0xe5, 0x8b, 0x38, 0x36, 0xb7, 0xd8, 0xfe, 0xdb, 0xb5, 0x0c, 0xa5, 0x72, 0x5c, 0x65, 0x71, 0xe7, 0x4c, 0x07, 0x85, 0xe9, 0x78, 0x21, 0xda, 0xb8, 0xb6, 0x29, 0x8c, 0x10, 0xe4, 0xc0, 0x79, 0xd4, 0xa6, 0xcd, 0xf2, 0x2f, 0x0f, 0xed, 0xb5, 0x50, 0x32, 0x92, 0x5c, 0x16, 0x74, 0x81, 0x15, 0xf0, 0x1a, 0x10, 0x5e, 0x77, 0xe0, 0x0c, 0xee, 0x3d, 0x07, 0x92, 0x4d, 0xc0, 0xd8, 0xf9, 0x06, 0x59 }, + { 0xb9, 0x29, 0xcc, 0x65, 0x05, 0xf0, 0x20, 0x15, 0x86, 0x72, 0xde, 0xda, 0x56, 0xd0, 0xdb, 0x08, 0x1a, 0x2e, 0xe3, 0x4c, 0x00, 0xc1, 0x10, 0x00, 0x29, 0xbd, 0xf8, 0xea, 0x98, 0x03, 0x4f, 0xa4, 0xbf, 0x3e, 0x86, 0x55, 0xec, 0x69, 0x7f, 0xe3, 0x6f, 0x40, 0x55, 0x3c, 0x5b, 0xb4, 0x68, 0x01, 0x64, 0x4a, 0x62, 0x7d, 0x33, 0x42, 0xf4, 0xfc, 0x92, 0xb6, 0x1f, 0x03, 0x29, 0x0f, 0xb3, 0x81 }, + { 0x72, 0xd3, 0x53, 0x99, 0x4b, 0x49, 0xd3, 0xe0, 0x31, 0x53, 0x92, 0x9a, 0x1e, 0x4d, 0x4f, 0x18, 0x8e, 0xe5, 0x8a, 0xb9, 0xe7, 0x2e, 0xe8, 0xe5, 0x12, 0xf2, 0x9b, 0xc7, 0x73, 0x91, 0x38, 0x19, 0xce, 0x05, 0x7d, 0xdd, 0x70, 0x02, 0xc0, 0x43, 0x3e, 0xe0, 0xa1, 0x61, 0x14, 0xe3, 0xd1, 0x56, 0xdd, 0x2c, 0x4a, 0x7e, 0x80, 0xee, 0x53, 0x37, 0x8b, 0x86, 0x70, 0xf2, 0x3e, 0x33, 0xef, 0x56 }, + { 0xc7, 0x0e, 0xf9, 0xbf, 0xd7, 0x75, 0xd4, 0x08, 0x17, 0x67, 0x37, 0xa0, 0x73, 0x6d, 0x68, 0x51, 0x7c, 0xe1, 0xaa, 0xad, 0x7e, 0x81, 0xa9, 0x3c, 0x8c, 0x1e, 0xd9, 0x67, 0xea, 0x21, 0x4f, 0x56, 0xc8, 0xa3, 0x77, 0xb1, 0x76, 0x3e, 0x67, 0x66, 0x15, 0xb6, 0x0f, 0x39, 0x88, 0x24, 0x1e, 0xae, 0x6e, 0xab, 0x96, 0x85, 0xa5, 0x12, 0x49, 0x29, 0xd2, 0x81, 0x88, 0xf2, 0x9e, 0xab, 0x06, 0xf7 }, + { 0xc2, 0x30, 0xf0, 0x80, 0x26, 0x79, 0xcb, 0x33, 0x82, 0x2e, 0xf8, 0xb3, 0xb2, 0x1b, 0xf7, 0xa9, 0xa2, 0x89, 0x42, 0x09, 0x29, 0x01, 0xd7, 0xda, 0xc3, 0x76, 0x03, 0x00, 0x83, 0x10, 0x26, 0xcf, 0x35, 0x4c, 0x92, 0x32, 0xdf, 0x3e, 0x08, 0x4d, 0x99, 0x03, 0x13, 0x0c, 0x60, 0x1f, 0x63, 0xc1, 0xf4, 0xa4, 0xa4, 0xb8, 0x10, 0x6e, 0x46, 0x8c, 0xd4, 0x43, 0xbb, 0xe5, 0xa7, 0x34, 0xf4, 0x5f }, + { 0x6f, 0x43, 0x09, 0x4c, 0xaf, 0xb5, 0xeb, 0xf1, 0xf7, 0xa4, 0x93, 0x7e, 0xc5, 0x0f, 0x56, 0xa4, 0xc9, 0xda, 0x30, 0x3c, 0xbb, 0x55, 0xac, 0x1f, 0x27, 0xf1, 0xf1, 0x97, 0x6c, 0xd9, 0x6b, 0xed, 0xa9, 0x46, 0x4f, 0x0e, 0x7b, 0x9c, 0x54, 0x62, 0x0b, 0x8a, 0x9f, 0xba, 0x98, 0x31, 0x64, 0xb8, 0xbe, 0x35, 0x78, 0x42, 0x5a, 0x02, 0x4f, 0x5f, 0xe1, 0x99, 0xc3, 0x63, 0x56, 0xb8, 0x89, 0x72 }, + { 0x37, 0x45, 0x27, 0x3f, 0x4c, 0x38, 0x22, 0x5d, 0xb2, 0x33, 0x73, 0x81, 0x87, 0x1a, 0x0c, 0x6a, 0xaf, 0xd3, 0xaf, 0x9b, 0x01, 0x8c, 0x88, 0xaa, 0x02, 0x02, 0x58, 0x50, 0xa5, 0xdc, 0x3a, 0x42, 0xa1, 0xa3, 0xe0, 0x3e, 0x56, 0xcb, 0xf1, 0xb0, 0x87, 0x6d, 0x63, 0xa4, 0x41, 0xf1, 0xd2, 0x85, 0x6a, 0x39, 0xb8, 0x80, 0x1e, 0xb5, 0xaf, 0x32, 0x52, 0x01, 0xc4, 0x15, 0xd6, 0x5e, 0x97, 0xfe }, + { 0xc5, 0x0c, 0x44, 0xcc, 0xa3, 0xec, 0x3e, 0xda, 0xae, 0x77, 0x9a, 0x7e, 0x17, 0x94, 0x50, 0xeb, 0xdd, 0xa2, 0xf9, 0x70, 0x67, 0xc6, 0x90, 0xaa, 0x6c, 0x5a, 0x4a, 0xc7, 0xc3, 0x01, 0x39, 0xbb, 0x27, 0xc0, 0xdf, 0x4d, 0xb3, 0x22, 0x0e, 0x63, 0xcb, 0x11, 0x0d, 0x64, 0xf3, 0x7f, 0xfe, 0x07, 0x8d, 0xb7, 0x26, 0x53, 0xe2, 0xda, 0xac, 0xf9, 0x3a, 0xe3, 0xf0, 0xa2, 0xd1, 0xa7, 0xeb, 0x2e }, + { 0x8a, 0xef, 0x26, 0x3e, 0x38, 0x5c, 0xbc, 0x61, 0xe1, 0x9b, 0x28, 0x91, 0x42, 0x43, 0x26, 0x2a, 0xf5, 0xaf, 0xe8, 0x72, 0x6a, 0xf3, 0xce, 0x39, 0xa7, 0x9c, 0x27, 0x02, 0x8c, 0xf3, 0xec, 0xd3, 0xf8, 0xd2, 0xdf, 0xd9, 0xcf, 0xc9, 0xad, 0x91, 0xb5, 0x8f, 0x6f, 0x20, 0x77, 0x8f, 0xd5, 0xf0, 0x28, 0x94, 0xa3, 0xd9, 0x1c, 0x7d, 0x57, 0xd1, 0xe4, 0xb8, 0x66, 0xa7, 0xf3, 0x64, 0xb6, 0xbe }, + { 0x28, 0x69, 0x61, 0x41, 0xde, 0x6e, 0x2d, 0x9b, 0xcb, 0x32, 0x35, 0x57, 0x8a, 0x66, 0x16, 0x6c, 0x14, 0x48, 0xd3, 0xe9, 0x05, 0xa1, 0xb4, 0x82, 0xd4, 0x23, 0xbe, 0x4b, 0xc5, 0x36, 0x9b, 0xc8, 0xc7, 0x4d, 0xae, 0x0a, 0xcc, 0x9c, 0xc1, 0x23, 0xe1, 0xd8, 0xdd, 0xce, 0x9f, 0x97, 0x91, 0x7e, 0x8c, 0x01, 0x9c, 0x55, 0x2d, 0xa3, 0x2d, 0x39, 0xd2, 0x21, 0x9b, 0x9a, 0xbf, 0x0f, 0xa8, 0xc8 }, + { 0x2f, 0xb9, 0xeb, 0x20, 0x85, 0x83, 0x01, 0x81, 0x90, 0x3a, 0x9d, 0xaf, 0xe3, 0xdb, 0x42, 0x8e, 0xe1, 0x5b, 0xe7, 0x66, 0x22, 0x24, 0xef, 0xd6, 0x43, 0x37, 0x1f, 0xb2, 0x56, 0x46, 0xae, 0xe7, 0x16, 0xe5, 0x31, 0xec, 0xa6, 0x9b, 0x2b, 0xdc, 0x82, 0x33, 0xf1, 0xa8, 0x08, 0x1f, 0xa4, 0x3d, 0xa1, 0x50, 0x03, 0x02, 0x97, 0x5a, 0x77, 0xf4, 0x2f, 0xa5, 0x92, 0x13, 0x67, 0x10, 0xe9, 0xdc }, + { 0x66, 0xf9, 0xa7, 0x14, 0x3f, 0x7a, 0x33, 0x14, 0xa6, 0x69, 0xbf, 0x2e, 0x24, 0xbb, 0xb3, 0x50, 0x14, 0x26, 0x1d, 0x63, 0x9f, 0x49, 0x5b, 0x6c, 0x9c, 0x1f, 0x10, 0x4f, 0xe8, 0xe3, 0x20, 0xac, 0xa6, 0x0d, 0x45, 0x50, 0xd6, 0x9d, 0x52, 0xed, 0xbd, 0x5a, 0x3c, 0xde, 0xb4, 0x01, 0x4a, 0xe6, 0x5b, 0x1d, 0x87, 0xaa, 0x77, 0x0b, 0x69, 0xae, 0x5c, 0x15, 0xf4, 0x33, 0x0b, 0x0b, 0x0a, 0xd8 }, + { 0xf4, 0xc4, 0xdd, 0x1d, 0x59, 0x4c, 0x35, 0x65, 0xe3, 0xe2, 0x5c, 0xa4, 0x3d, 0xad, 0x82, 0xf6, 0x2a, 0xbe, 0xa4, 0x83, 0x5e, 0xd4, 0xcd, 0x81, 0x1b, 0xcd, 0x97, 0x5e, 0x46, 0x27, 0x98, 0x28, 0xd4, 0x4d, 0x4c, 0x62, 0xc3, 0x67, 0x9f, 0x1b, 0x7f, 0x7b, 0x9d, 0xd4, 0x57, 0x1d, 0x7b, 0x49, 0x55, 0x73, 0x47, 0xb8, 0xc5, 0x46, 0x0c, 0xbd, 0xc1, 0xbe, 0xf6, 0x90, 0xfb, 0x2a, 0x08, 0xc0 }, + { 0x8f, 0x1d, 0xc9, 0x64, 0x9c, 0x3a, 0x84, 0x55, 0x1f, 0x8f, 0x6e, 0x91, 0xca, 0xc6, 0x82, 0x42, 0xa4, 0x3b, 0x1f, 0x8f, 0x32, 0x8e, 0xe9, 0x22, 0x80, 0x25, 0x73, 0x87, 0xfa, 0x75, 0x59, 0xaa, 0x6d, 0xb1, 0x2e, 0x4a, 0xea, 0xdc, 0x2d, 0x26, 0x09, 0x91, 0x78, 0x74, 0x9c, 0x68, 0x64, 0xb3, 0x57, 0xf3, 0xf8, 0x3b, 0x2f, 0xb3, 0xef, 0xa8, 0xd2, 0xa8, 0xdb, 0x05, 0x6b, 0xed, 0x6b, 0xcc }, + { 0x31, 0x39, 0xc1, 0xa7, 0xf9, 0x7a, 0xfd, 0x16, 0x75, 0xd4, 0x60, 0xeb, 0xbc, 0x07, 0xf2, 0x72, 0x8a, 0xa1, 0x50, 0xdf, 0x84, 0x96, 0x24, 0x51, 0x1e, 0xe0, 0x4b, 0x74, 0x3b, 0xa0, 0xa8, 0x33, 0x09, 0x2f, 0x18, 0xc1, 0x2d, 0xc9, 0x1b, 0x4d, 0xd2, 0x43, 0xf3, 0x33, 0x40, 0x2f, 0x59, 0xfe, 0x28, 0xab, 0xdb, 0xbb, 0xae, 0x30, 0x1e, 0x7b, 0x65, 0x9c, 0x7a, 0x26, 0xd5, 0xc0, 0xf9, 0x79 }, + { 0x06, 0xf9, 0x4a, 0x29, 0x96, 0x15, 0x8a, 0x81, 0x9f, 0xe3, 0x4c, 0x40, 0xde, 0x3c, 0xf0, 0x37, 0x9f, 0xd9, 0xfb, 0x85, 0xb3, 0xe3, 0x63, 0xba, 0x39, 0x26, 0xa0, 0xe7, 0xd9, 0x60, 0xe3, 0xf4, 0xc2, 0xe0, 0xc7, 0x0c, 0x7c, 0xe0, 0xcc, 0xb2, 0xa6, 0x4f, 0xc2, 0x98, 0x69, 0xf6, 0xe7, 0xab, 0x12, 0xbd, 0x4d, 0x3f, 0x14, 0xfc, 0xe9, 0x43, 0x27, 0x90, 0x27, 0xe7, 0x85, 0xfb, 0x5c, 0x29 }, + { 0xc2, 0x9c, 0x39, 0x9e, 0xf3, 0xee, 0xe8, 0x96, 0x1e, 0x87, 0x56, 0x5c, 0x1c, 0xe2, 0x63, 0x92, 0x5f, 0xc3, 0xd0, 0xce, 0x26, 0x7d, 0x13, 0xe4, 0x8d, 0xd9, 0xe7, 0x32, 0xee, 0x67, 0xb0, 0xf6, 0x9f, 0xad, 0x56, 0x40, 0x1b, 0x0f, 0x10, 0xfc, 0xaa, 0xc1, 0x19, 0x20, 0x10, 0x46, 0xcc, 0xa2, 0x8c, 0x5b, 0x14, 0xab, 0xde, 0xa3, 0x21, 0x2a, 0xe6, 0x55, 0x62, 0xf7, 0xf1, 0x38, 0xdb, 0x3d }, + { 0x4c, 0xec, 0x4c, 0x9d, 0xf5, 0x2e, 0xef, 0x05, 0xc3, 0xf6, 0xfa, 0xaa, 0x97, 0x91, 0xbc, 0x74, 0x45, 0x93, 0x71, 0x83, 0x22, 0x4e, 0xcc, 0x37, 0xa1, 0xe5, 0x8d, 0x01, 0x32, 0xd3, 0x56, 0x17, 0x53, 0x1d, 0x7e, 0x79, 0x5f, 0x52, 0xaf, 0x7b, 0x1e, 0xb9, 0xd1, 0x47, 0xde, 0x12, 0x92, 0xd3, 0x45, 0xfe, 0x34, 0x18, 0x23, 0xf8, 0xe6, 0xbc, 0x1e, 0x5b, 0xad, 0xca, 0x5c, 0x65, 0x61, 0x08 }, + { 0x89, 0x8b, 0xfb, 0xae, 0x93, 0xb3, 0xe1, 0x8d, 0x00, 0x69, 0x7e, 0xab, 0x7d, 0x97, 0x04, 0xfa, 0x36, 0xec, 0x33, 0x9d, 0x07, 0x61, 0x31, 0xce, 0xfd, 0xf3, 0x0e, 0xdb, 0xe8, 0xd9, 0xcc, 0x81, 0xc3, 0xa8, 0x0b, 0x12, 0x96, 0x59, 0xb1, 0x63, 0xa3, 0x23, 0xba, 0xb9, 0x79, 0x3d, 0x4f, 0xee, 0xd9, 0x2d, 0x54, 0xda, 0xe9, 0x66, 0xc7, 0x75, 0x29, 0x76, 0x4a, 0x09, 0xbe, 0x88, 0xdb, 0x45 }, + { 0xee, 0x9b, 0xd0, 0x46, 0x9d, 0x3a, 0xaf, 0x4f, 0x14, 0x03, 0x5b, 0xe4, 0x8a, 0x2c, 0x3b, 0x84, 0xd9, 0xb4, 0xb1, 0xff, 0xf1, 0xd9, 0x45, 0xe1, 0xf1, 0xc1, 0xd3, 0x89, 0x80, 0xa9, 0x51, 0xbe, 0x19, 0x7b, 0x25, 0xfe, 0x22, 0xc7, 0x31, 0xf2, 0x0a, 0xea, 0xcc, 0x93, 0x0b, 0xa9, 0xc4, 0xa1, 0xf4, 0x76, 0x22, 0x27, 0x61, 0x7a, 0xd3, 0x50, 0xfd, 0xab, 0xb4, 0xe8, 0x02, 0x73, 0xa0, 0xf4 }, + { 0x3d, 0x4d, 0x31, 0x13, 0x30, 0x05, 0x81, 0xcd, 0x96, 0xac, 0xbf, 0x09, 0x1c, 0x3d, 0x0f, 0x3c, 0x31, 0x01, 0x38, 0xcd, 0x69, 0x79, 0xe6, 0x02, 0x6c, 0xde, 0x62, 0x3e, 0x2d, 0xd1, 0xb2, 0x4d, 0x4a, 0x86, 0x38, 0xbe, 0xd1, 0x07, 0x33, 0x44, 0x78, 0x3a, 0xd0, 0x64, 0x9c, 0xc6, 0x30, 0x5c, 0xce, 0xc0, 0x4b, 0xeb, 0x49, 0xf3, 0x1c, 0x63, 0x30, 0x88, 0xa9, 0x9b, 0x65, 0x13, 0x02, 0x67 }, + { 0x95, 0xc0, 0x59, 0x1a, 0xd9, 0x1f, 0x92, 0x1a, 0xc7, 0xbe, 0x6d, 0x9c, 0xe3, 0x7e, 0x06, 0x63, 0xed, 0x80, 0x11, 0xc1, 0xcf, 0xd6, 0xd0, 0x16, 0x2a, 0x55, 0x72, 0xe9, 0x43, 0x68, 0xba, 0xc0, 0x20, 0x24, 0x48, 0x5e, 0x6a, 0x39, 0x85, 0x4a, 0xa4, 0x6f, 0xe3, 0x8e, 0x97, 0xd6, 0xc6, 0xb1, 0x94, 0x7c, 0xd2, 0x72, 0xd8, 0x6b, 0x06, 0xbb, 0x5b, 0x2f, 0x78, 0xb9, 0xb6, 0x8d, 0x55, 0x9d }, + { 0x22, 0x7b, 0x79, 0xde, 0xd3, 0x68, 0x15, 0x3b, 0xf4, 0x6c, 0x0a, 0x3c, 0xa9, 0x78, 0xbf, 0xdb, 0xef, 0x31, 0xf3, 0x02, 0x4a, 0x56, 0x65, 0x84, 0x24, 0x68, 0x49, 0x0b, 0x0f, 0xf7, 0x48, 0xae, 0x04, 0xe7, 0x83, 0x2e, 0xd4, 0xc9, 0xf4, 0x9d, 0xe9, 0xb1, 0x70, 0x67, 0x09, 0xd6, 0x23, 0xe5, 0xc8, 0xc1, 0x5e, 0x3c, 0xae, 0xca, 0xe8, 0xd5, 0xe4, 0x33, 0x43, 0x0f, 0xf7, 0x2f, 0x20, 0xeb }, + { 0x5d, 0x34, 0xf3, 0x95, 0x2f, 0x01, 0x05, 0xee, 0xf8, 0x8a, 0xe8, 0xb6, 0x4c, 0x6c, 0xe9, 0x5e, 0xbf, 0xad, 0xe0, 0xe0, 0x2c, 0x69, 0xb0, 0x87, 0x62, 0xa8, 0x71, 0x2d, 0x2e, 0x49, 0x11, 0xad, 0x3f, 0x94, 0x1f, 0xc4, 0x03, 0x4d, 0xc9, 0xb2, 0xe4, 0x79, 0xfd, 0xbc, 0xd2, 0x79, 0xb9, 0x02, 0xfa, 0xf5, 0xd8, 0x38, 0xbb, 0x2e, 0x0c, 0x64, 0x95, 0xd3, 0x72, 0xb5, 0xb7, 0x02, 0x98, 0x13 }, + { 0x7f, 0x93, 0x9b, 0xf8, 0x35, 0x3a, 0xbc, 0xe4, 0x9e, 0x77, 0xf1, 0x4f, 0x37, 0x50, 0xaf, 0x20, 0xb7, 0xb0, 0x39, 0x02, 0xe1, 0xa1, 0xe7, 0xfb, 0x6a, 0xaf, 0x76, 0xd0, 0x25, 0x9c, 0xd4, 0x01, 0xa8, 0x31, 0x90, 0xf1, 0x56, 0x40, 0xe7, 0x4f, 0x3e, 0x6c, 0x5a, 0x90, 0xe8, 0x39, 0xc7, 0x82, 0x1f, 0x64, 0x74, 0x75, 0x7f, 0x75, 0xc7, 0xbf, 0x90, 0x02, 0x08, 0x4d, 0xdc, 0x7a, 0x62, 0xdc }, + { 0x06, 0x2b, 0x61, 0xa2, 0xf9, 0xa3, 0x3a, 0x71, 0xd7, 0xd0, 0xa0, 0x61, 0x19, 0x64, 0x4c, 0x70, 0xb0, 0x71, 0x6a, 0x50, 0x4d, 0xe7, 0xe5, 0xe1, 0xbe, 0x49, 0xbd, 0x7b, 0x86, 0xe7, 0xed, 0x68, 0x17, 0x71, 0x4f, 0x9f, 0x0f, 0xc3, 0x13, 0xd0, 0x61, 0x29, 0x59, 0x7e, 0x9a, 0x22, 0x35, 0xec, 0x85, 0x21, 0xde, 0x36, 0xf7, 0x29, 0x0a, 0x90, 0xcc, 0xfc, 0x1f, 0xfa, 0x6d, 0x0a, 0xee, 0x29 }, + { 0xf2, 0x9e, 0x01, 0xee, 0xae, 0x64, 0x31, 0x1e, 0xb7, 0xf1, 0xc6, 0x42, 0x2f, 0x94, 0x6b, 0xf7, 0xbe, 0xa3, 0x63, 0x79, 0x52, 0x3e, 0x7b, 0x2b, 0xba, 0xba, 0x7d, 0x1d, 0x34, 0xa2, 0x2d, 0x5e, 0xa5, 0xf1, 0xc5, 0xa0, 0x9d, 0x5c, 0xe1, 0xfe, 0x68, 0x2c, 0xce, 0xd9, 0xa4, 0x79, 0x8d, 0x1a, 0x05, 0xb4, 0x6c, 0xd7, 0x2d, 0xff, 0x5c, 0x1b, 0x35, 0x54, 0x40, 0xb2, 0xa2, 0xd4, 0x76, 0xbc }, + { 0xec, 0x38, 0xcd, 0x3b, 0xba, 0xb3, 0xef, 0x35, 0xd7, 0xcb, 0x6d, 0x5c, 0x91, 0x42, 0x98, 0x35, 0x1d, 0x8a, 0x9d, 0xc9, 0x7f, 0xce, 0xe0, 0x51, 0xa8, 0xa0, 0x2f, 0x58, 0xe3, 0xed, 0x61, 0x84, 0xd0, 0xb7, 0x81, 0x0a, 0x56, 0x15, 0x41, 0x1a, 0xb1, 0xb9, 0x52, 0x09, 0xc3, 0xc8, 0x10, 0x11, 0x4f, 0xde, 0xb2, 0x24, 0x52, 0x08, 0x4e, 0x77, 0xf3, 0xf8, 0x47, 0xc6, 0xdb, 0xaa, 0xfe, 0x16 }, + { 0xc2, 0xae, 0xf5, 0xe0, 0xca, 0x43, 0xe8, 0x26, 0x41, 0x56, 0x5b, 0x8c, 0xb9, 0x43, 0xaa, 0x8b, 0xa5, 0x35, 0x50, 0xca, 0xef, 0x79, 0x3b, 0x65, 0x32, 0xfa, 0xfa, 0xd9, 0x4b, 0x81, 0x60, 0x82, 0xf0, 0x11, 0x3a, 0x3e, 0xa2, 0xf6, 0x36, 0x08, 0xab, 0x40, 0x43, 0x7e, 0xcc, 0x0f, 0x02, 0x29, 0xcb, 0x8f, 0xa2, 0x24, 0xdc, 0xf1, 0xc4, 0x78, 0xa6, 0x7d, 0x9b, 0x64, 0x16, 0x2b, 0x92, 0xd1 }, + { 0x15, 0xf5, 0x34, 0xef, 0xff, 0x71, 0x05, 0xcd, 0x1c, 0x25, 0x4d, 0x07, 0x4e, 0x27, 0xd5, 0x89, 0x8b, 0x89, 0x31, 0x3b, 0x7d, 0x36, 0x6d, 0xc2, 0xd7, 0xd8, 0x71, 0x13, 0xfa, 0x7d, 0x53, 0xaa, 0xe1, 0x3f, 0x6d, 0xba, 0x48, 0x7a, 0xd8, 0x10, 0x3d, 0x5e, 0x85, 0x4c, 0x91, 0xfd, 0xb6, 0xe1, 0xe7, 0x4b, 0x2e, 0xf6, 0xd1, 0x43, 0x17, 0x69, 0xc3, 0x07, 0x67, 0xdd, 0xe0, 0x67, 0xa3, 0x5c }, + { 0x89, 0xac, 0xbc, 0xa0, 0xb1, 0x69, 0x89, 0x7a, 0x0a, 0x27, 0x14, 0xc2, 0xdf, 0x8c, 0x95, 0xb5, 0xb7, 0x9c, 0xb6, 0x93, 0x90, 0x14, 0x2b, 0x7d, 0x60, 0x18, 0xbb, 0x3e, 0x30, 0x76, 0xb0, 0x99, 0xb7, 0x9a, 0x96, 0x41, 0x52, 0xa9, 0xd9, 0x12, 0xb1, 0xb8, 0x64, 0x12, 0xb7, 0xe3, 0x72, 0xe9, 0xce, 0xca, 0xd7, 0xf2, 0x5d, 0x4c, 0xba, 0xb8, 0xa3, 0x17, 0xbe, 0x36, 0x49, 0x2a, 0x67, 0xd7 }, + { 0xe3, 0xc0, 0x73, 0x91, 0x90, 0xed, 0x84, 0x9c, 0x9c, 0x96, 0x2f, 0xd9, 0xdb, 0xb5, 0x5e, 0x20, 0x7e, 0x62, 0x4f, 0xca, 0xc1, 0xeb, 0x41, 0x76, 0x91, 0x51, 0x54, 0x99, 0xee, 0xa8, 0xd8, 0x26, 0x7b, 0x7e, 0x8f, 0x12, 0x87, 0xa6, 0x36, 0x33, 0xaf, 0x50, 0x11, 0xfd, 0xe8, 0xc4, 0xdd, 0xf5, 0x5b, 0xfd, 0xf7, 0x22, 0xed, 0xf8, 0x88, 0x31, 0x41, 0x4f, 0x2c, 0xfa, 0xed, 0x59, 0xcb, 0x9a }, + { 0x8d, 0x6c, 0xf8, 0x7c, 0x08, 0x38, 0x0d, 0x2d, 0x15, 0x06, 0xee, 0xe4, 0x6f, 0xd4, 0x22, 0x2d, 0x21, 0xd8, 0xc0, 0x4e, 0x58, 0x5f, 0xbf, 0xd0, 0x82, 0x69, 0xc9, 0x8f, 0x70, 0x28, 0x33, 0xa1, 0x56, 0x32, 0x6a, 0x07, 0x24, 0x65, 0x64, 0x00, 0xee, 0x09, 0x35, 0x1d, 0x57, 0xb4, 0x40, 0x17, 0x5e, 0x2a, 0x5d, 0xe9, 0x3c, 0xc5, 0xf8, 0x0d, 0xb6, 0xda, 0xf8, 0x35, 0x76, 0xcf, 0x75, 0xfa }, + { 0xda, 0x24, 0xbe, 0xde, 0x38, 0x36, 0x66, 0xd5, 0x63, 0xee, 0xed, 0x37, 0xf6, 0x31, 0x9b, 0xaf, 0x20, 0xd5, 0xc7, 0x5d, 0x16, 0x35, 0xa6, 0xba, 0x5e, 0xf4, 0xcf, 0xa1, 0xac, 0x95, 0x48, 0x7e, 0x96, 0xf8, 0xc0, 0x8a, 0xf6, 0x00, 0xaa, 0xb8, 0x7c, 0x98, 0x6e, 0xba, 0xd4, 0x9f, 0xc7, 0x0a, 0x58, 0xb4, 0x89, 0x0b, 0x9c, 0x87, 0x6e, 0x09, 0x10, 0x16, 0xda, 0xf4, 0x9e, 0x1d, 0x32, 0x2e }, + { 0xf9, 0xd1, 0xd1, 0xb1, 0xe8, 0x7e, 0xa7, 0xae, 0x75, 0x3a, 0x02, 0x97, 0x50, 0xcc, 0x1c, 0xf3, 0xd0, 0x15, 0x7d, 0x41, 0x80, 0x5e, 0x24, 0x5c, 0x56, 0x17, 0xbb, 0x93, 0x4e, 0x73, 0x2f, 0x0a, 0xe3, 0x18, 0x0b, 0x78, 0xe0, 0x5b, 0xfe, 0x76, 0xc7, 0xc3, 0x05, 0x1e, 0x3e, 0x3a, 0xc7, 0x8b, 0x9b, 0x50, 0xc0, 0x51, 0x42, 0x65, 0x7e, 0x1e, 0x03, 0x21, 0x5d, 0x6e, 0xc7, 0xbf, 0xd0, 0xfc }, + { 0x11, 0xb7, 0xbc, 0x16, 0x68, 0x03, 0x20, 0x48, 0xaa, 0x43, 0x34, 0x3d, 0xe4, 0x76, 0x39, 0x5e, 0x81, 0x4b, 0xbb, 0xc2, 0x23, 0x67, 0x8d, 0xb9, 0x51, 0xa1, 0xb0, 0x3a, 0x02, 0x1e, 0xfa, 0xc9, 0x48, 0xcf, 0xbe, 0x21, 0x5f, 0x97, 0xfe, 0x9a, 0x72, 0xa2, 0xf6, 0xbc, 0x03, 0x9e, 0x39, 0x56, 0xbf, 0xa4, 0x17, 0xc1, 0xa9, 0xf1, 0x0d, 0x6d, 0x7b, 0xa5, 0xd3, 0xd3, 0x2f, 0xf3, 0x23, 0xe5 }, + { 0xb8, 0xd9, 0x00, 0x0e, 0x4f, 0xc2, 0xb0, 0x66, 0xed, 0xb9, 0x1a, 0xfe, 0xe8, 0xe7, 0xeb, 0x0f, 0x24, 0xe3, 0xa2, 0x01, 0xdb, 0x8b, 0x67, 0x93, 0xc0, 0x60, 0x85, 0x81, 0xe6, 0x28, 0xed, 0x0b, 0xcc, 0x4e, 0x5a, 0xa6, 0x78, 0x79, 0x92, 0xa4, 0xbc, 0xc4, 0x4e, 0x28, 0x80, 0x93, 0xe6, 0x3e, 0xe8, 0x3a, 0xbd, 0x0b, 0xc3, 0xec, 0x6d, 0x09, 0x34, 0xa6, 0x74, 0xa4, 0xda, 0x13, 0x83, 0x8a }, + { 0xce, 0x32, 0x5e, 0x29, 0x4f, 0x9b, 0x67, 0x19, 0xd6, 0xb6, 0x12, 0x78, 0x27, 0x6a, 0xe0, 0x6a, 0x25, 0x64, 0xc0, 0x3b, 0xb0, 0xb7, 0x83, 0xfa, 0xfe, 0x78, 0x5b, 0xdf, 0x89, 0xc7, 0xd5, 0xac, 0xd8, 0x3e, 0x78, 0x75, 0x6d, 0x30, 0x1b, 0x44, 0x56, 0x99, 0x02, 0x4e, 0xae, 0xb7, 0x7b, 0x54, 0xd4, 0x77, 0x33, 0x6e, 0xc2, 0xa4, 0xf3, 0x32, 0xf2, 0xb3, 0xf8, 0x87, 0x65, 0xdd, 0xb0, 0xc3 }, + { 0x29, 0xac, 0xc3, 0x0e, 0x96, 0x03, 0xae, 0x2f, 0xcc, 0xf9, 0x0b, 0xf9, 0x7e, 0x6c, 0xc4, 0x63, 0xeb, 0xe2, 0x8c, 0x1b, 0x2f, 0x9b, 0x4b, 0x76, 0x5e, 0x70, 0x53, 0x7c, 0x25, 0xc7, 0x02, 0xa2, 0x9d, 0xcb, 0xfb, 0xf1, 0x4c, 0x99, 0xc5, 0x43, 0x45, 0xba, 0x2b, 0x51, 0xf1, 0x7b, 0x77, 0xb5, 0xf1, 0x5d, 0xb9, 0x2b, 0xba, 0xd8, 0xfa, 0x95, 0xc4, 0x71, 0xf5, 0xd0, 0x70, 0xa1, 0x37, 0xcc }, + { 0x33, 0x79, 0xcb, 0xaa, 0xe5, 0x62, 0xa8, 0x7b, 0x4c, 0x04, 0x25, 0x55, 0x0f, 0xfd, 0xd6, 0xbf, 0xe1, 0x20, 0x3f, 0x0d, 0x66, 0x6c, 0xc7, 0xea, 0x09, 0x5b, 0xe4, 0x07, 0xa5, 0xdf, 0xe6, 0x1e, 0xe9, 0x14, 0x41, 0xcd, 0x51, 0x54, 0xb3, 0xe5, 0x3b, 0x4f, 0x5f, 0xb3, 0x1a, 0xd4, 0xc7, 0xa9, 0xad, 0x5c, 0x7a, 0xf4, 0xae, 0x67, 0x9a, 0xa5, 0x1a, 0x54, 0x00, 0x3a, 0x54, 0xca, 0x6b, 0x2d }, + { 0x30, 0x95, 0xa3, 0x49, 0xd2, 0x45, 0x70, 0x8c, 0x7c, 0xf5, 0x50, 0x11, 0x87, 0x03, 0xd7, 0x30, 0x2c, 0x27, 0xb6, 0x0a, 0xf5, 0xd4, 0xe6, 0x7f, 0xc9, 0x78, 0xf8, 0xa4, 0xe6, 0x09, 0x53, 0xc7, 0xa0, 0x4f, 0x92, 0xfc, 0xf4, 0x1a, 0xee, 0x64, 0x32, 0x1c, 0xcb, 0x70, 0x7a, 0x89, 0x58, 0x51, 0x55, 0x2b, 0x1e, 0x37, 0xb0, 0x0b, 0xc5, 0xe6, 0xb7, 0x2f, 0xa5, 0xbc, 0xef, 0x9e, 0x3f, 0xff }, + { 0x07, 0x26, 0x2d, 0x73, 0x8b, 0x09, 0x32, 0x1f, 0x4d, 0xbc, 0xce, 0xc4, 0xbb, 0x26, 0xf4, 0x8c, 0xb0, 0xf0, 0xed, 0x24, 0x6c, 0xe0, 0xb3, 0x1b, 0x9a, 0x6e, 0x7b, 0xc6, 0x83, 0x04, 0x9f, 0x1f, 0x3e, 0x55, 0x45, 0xf2, 0x8c, 0xe9, 0x32, 0xdd, 0x98, 0x5c, 0x5a, 0xb0, 0xf4, 0x3b, 0xd6, 0xde, 0x07, 0x70, 0x56, 0x0a, 0xf3, 0x29, 0x06, 0x5e, 0xd2, 0xe4, 0x9d, 0x34, 0x62, 0x4c, 0x2c, 0xbb }, + { 0xb6, 0x40, 0x5e, 0xca, 0x8e, 0xe3, 0x31, 0x6c, 0x87, 0x06, 0x1c, 0xc6, 0xec, 0x18, 0xdb, 0xa5, 0x3e, 0x6c, 0x25, 0x0c, 0x63, 0xba, 0x1f, 0x3b, 0xae, 0x9e, 0x55, 0xdd, 0x34, 0x98, 0x03, 0x6a, 0xf0, 0x8c, 0xd2, 0x72, 0xaa, 0x24, 0xd7, 0x13, 0xc6, 0x02, 0x0d, 0x77, 0xab, 0x2f, 0x39, 0x19, 0xaf, 0x1a, 0x32, 0xf3, 0x07, 0x42, 0x06, 0x18, 0xab, 0x97, 0xe7, 0x39, 0x53, 0x99, 0x4f, 0xb4 }, + { 0x7e, 0xe6, 0x82, 0xf6, 0x31, 0x48, 0xee, 0x45, 0xf6, 0xe5, 0x31, 0x5d, 0xa8, 0x1e, 0x5c, 0x6e, 0x55, 0x7c, 0x2c, 0x34, 0x64, 0x1f, 0xc5, 0x09, 0xc7, 0xa5, 0x70, 0x10, 0x88, 0xc3, 0x8a, 0x74, 0x75, 0x61, 0x68, 0xe2, 0xcd, 0x8d, 0x35, 0x1e, 0x88, 0xfd, 0x1a, 0x45, 0x1f, 0x36, 0x0a, 0x01, 0xf5, 0xb2, 0x58, 0x0f, 0x9b, 0x5a, 0x2e, 0x8c, 0xfc, 0x13, 0x8f, 0x3d, 0xd5, 0x9a, 0x3f, 0xfc }, + { 0x1d, 0x26, 0x3c, 0x17, 0x9d, 0x6b, 0x26, 0x8f, 0x6f, 0xa0, 0x16, 0xf3, 0xa4, 0xf2, 0x9e, 0x94, 0x38, 0x91, 0x12, 0x5e, 0xd8, 0x59, 0x3c, 0x81, 0x25, 0x60, 0x59, 0xf5, 0xa7, 0xb4, 0x4a, 0xf2, 0xdc, 0xb2, 0x03, 0x0d, 0x17, 0x5c, 0x00, 0xe6, 0x2e, 0xca, 0xf7, 0xee, 0x96, 0x68, 0x2a, 0xa0, 0x7a, 0xb2, 0x0a, 0x61, 0x10, 0x24, 0xa2, 0x85, 0x32, 0xb1, 0xc2, 0x5b, 0x86, 0x65, 0x79, 0x02 }, + { 0x10, 0x6d, 0x13, 0x2c, 0xbd, 0xb4, 0xcd, 0x25, 0x97, 0x81, 0x28, 0x46, 0xe2, 0xbc, 0x1b, 0xf7, 0x32, 0xfe, 0xc5, 0xf0, 0xa5, 0xf6, 0x5d, 0xbb, 0x39, 0xec, 0x4e, 0x6d, 0xc6, 0x4a, 0xb2, 0xce, 0x6d, 0x24, 0x63, 0x0d, 0x0f, 0x15, 0xa8, 0x05, 0xc3, 0x54, 0x00, 0x25, 0xd8, 0x4a, 0xfa, 0x98, 0xe3, 0x67, 0x03, 0xc3, 0xdb, 0xee, 0x71, 0x3e, 0x72, 0xdd, 0xe8, 0x46, 0x5b, 0xc1, 0xbe, 0x7e }, + { 0x0e, 0x79, 0x96, 0x82, 0x26, 0x65, 0x06, 0x67, 0xa8, 0xd8, 0x62, 0xea, 0x8d, 0xa4, 0x89, 0x1a, 0xf5, 0x6a, 0x4e, 0x3a, 0x8b, 0x6d, 0x17, 0x50, 0xe3, 0x94, 0xf0, 0xde, 0xa7, 0x6d, 0x64, 0x0d, 0x85, 0x07, 0x7b, 0xce, 0xc2, 0xcc, 0x86, 0x88, 0x6e, 0x50, 0x67, 0x51, 0xb4, 0xf6, 0xa5, 0x83, 0x8f, 0x7f, 0x0b, 0x5f, 0xef, 0x76, 0x5d, 0x9d, 0xc9, 0x0d, 0xcd, 0xcb, 0xaf, 0x07, 0x9f, 0x08 }, + { 0x52, 0x11, 0x56, 0xa8, 0x2a, 0xb0, 0xc4, 0xe5, 0x66, 0xe5, 0x84, 0x4d, 0x5e, 0x31, 0xad, 0x9a, 0xaf, 0x14, 0x4b, 0xbd, 0x5a, 0x46, 0x4f, 0xdc, 0xa3, 0x4d, 0xbd, 0x57, 0x17, 0xe8, 0xff, 0x71, 0x1d, 0x3f, 0xfe, 0xbb, 0xfa, 0x08, 0x5d, 0x67, 0xfe, 0x99, 0x6a, 0x34, 0xf6, 0xd3, 0xe4, 0xe6, 0x0b, 0x13, 0x96, 0xbf, 0x4b, 0x16, 0x10, 0xc2, 0x63, 0xbd, 0xbb, 0x83, 0x4d, 0x56, 0x08, 0x16 }, + { 0x1a, 0xba, 0x88, 0xbe, 0xfc, 0x55, 0xbc, 0x25, 0xef, 0xbc, 0xe0, 0x2d, 0xb8, 0xb9, 0x93, 0x3e, 0x46, 0xf5, 0x76, 0x61, 0xba, 0xea, 0xbe, 0xb2, 0x1c, 0xc2, 0x57, 0x4d, 0x2a, 0x51, 0x8a, 0x3c, 0xba, 0x5d, 0xc5, 0xa3, 0x8e, 0x49, 0x71, 0x34, 0x40, 0xb2, 0x5f, 0x9c, 0x74, 0x4e, 0x75, 0xf6, 0xb8, 0x5c, 0x9d, 0x8f, 0x46, 0x81, 0xf6, 0x76, 0x16, 0x0f, 0x61, 0x05, 0x35, 0x7b, 0x84, 0x06 }, + { 0x5a, 0x99, 0x49, 0xfc, 0xb2, 0xc4, 0x73, 0xcd, 0xa9, 0x68, 0xac, 0x1b, 0x5d, 0x08, 0x56, 0x6d, 0xc2, 0xd8, 0x16, 0xd9, 0x60, 0xf5, 0x7e, 0x63, 0xb8, 0x98, 0xfa, 0x70, 0x1c, 0xf8, 0xeb, 0xd3, 0xf5, 0x9b, 0x12, 0x4d, 0x95, 0xbf, 0xbb, 0xed, 0xc5, 0xf1, 0xcf, 0x0e, 0x17, 0xd5, 0xea, 0xed, 0x0c, 0x02, 0xc5, 0x0b, 0x69, 0xd8, 0xa4, 0x02, 0xca, 0xbc, 0xca, 0x44, 0x33, 0xb5, 0x1f, 0xd4 }, + { 0xb0, 0xce, 0xad, 0x09, 0x80, 0x7c, 0x67, 0x2a, 0xf2, 0xeb, 0x2b, 0x0f, 0x06, 0xdd, 0xe4, 0x6c, 0xf5, 0x37, 0x0e, 0x15, 0xa4, 0x09, 0x6b, 0x1a, 0x7d, 0x7c, 0xbb, 0x36, 0xec, 0x31, 0xc2, 0x05, 0xfb, 0xef, 0xca, 0x00, 0xb7, 0xa4, 0x16, 0x2f, 0xa8, 0x9f, 0xb4, 0xfb, 0x3e, 0xb7, 0x8d, 0x79, 0x77, 0x0c, 0x23, 0xf4, 0x4e, 0x72, 0x06, 0x66, 0x4c, 0xe3, 0xcd, 0x93, 0x1c, 0x29, 0x1e, 0x5d }, + { 0xbb, 0x66, 0x64, 0x93, 0x1e, 0xc9, 0x70, 0x44, 0xe4, 0x5b, 0x2a, 0xe4, 0x20, 0xae, 0x1c, 0x55, 0x1a, 0x88, 0x74, 0xbc, 0x93, 0x7d, 0x08, 0xe9, 0x69, 0x39, 0x9c, 0x39, 0x64, 0xeb, 0xdb, 0xa8, 0x34, 0x6c, 0xdd, 0x5d, 0x09, 0xca, 0xaf, 0xe4, 0xc2, 0x8b, 0xa7, 0xec, 0x78, 0x81, 0x91, 0xce, 0xca, 0x65, 0xdd, 0xd6, 0xf9, 0x5f, 0x18, 0x58, 0x3e, 0x04, 0x0d, 0x0f, 0x30, 0xd0, 0x36, 0x4d }, + { 0x65, 0xbc, 0x77, 0x0a, 0x5f, 0xaa, 0x37, 0x92, 0x36, 0x98, 0x03, 0x68, 0x3e, 0x84, 0x4b, 0x0b, 0xe7, 0xee, 0x96, 0xf2, 0x9f, 0x6d, 0x6a, 0x35, 0x56, 0x80, 0x06, 0xbd, 0x55, 0x90, 0xf9, 0xa4, 0xef, 0x63, 0x9b, 0x7a, 0x80, 0x61, 0xc7, 0xb0, 0x42, 0x4b, 0x66, 0xb6, 0x0a, 0xc3, 0x4a, 0xf3, 0x11, 0x99, 0x05, 0xf3, 0x3a, 0x9d, 0x8c, 0x3a, 0xe1, 0x83, 0x82, 0xca, 0x9b, 0x68, 0x99, 0x00 }, + { 0xea, 0x9b, 0x4d, 0xca, 0x33, 0x33, 0x36, 0xaa, 0xf8, 0x39, 0xa4, 0x5c, 0x6e, 0xaa, 0x48, 0xb8, 0xcb, 0x4c, 0x7d, 0xda, 0xbf, 0xfe, 0xa4, 0xf6, 0x43, 0xd6, 0x35, 0x7e, 0xa6, 0x62, 0x8a, 0x48, 0x0a, 0x5b, 0x45, 0xf2, 0xb0, 0x52, 0xc1, 0xb0, 0x7d, 0x1f, 0xed, 0xca, 0x91, 0x8b, 0x6f, 0x11, 0x39, 0xd8, 0x0f, 0x74, 0xc2, 0x45, 0x10, 0xdc, 0xba, 0xa4, 0xbe, 0x70, 0xea, 0xcc, 0x1b, 0x06 }, + { 0xe6, 0x34, 0x2f, 0xb4, 0xa7, 0x80, 0xad, 0x97, 0x5d, 0x0e, 0x24, 0xbc, 0xe1, 0x49, 0x98, 0x9b, 0x91, 0xd3, 0x60, 0x55, 0x7e, 0x87, 0x99, 0x4f, 0x6b, 0x45, 0x7b, 0x89, 0x55, 0x75, 0xcc, 0x02, 0xd0, 0xc1, 0x5b, 0xad, 0x3c, 0xe7, 0x57, 0x7f, 0x4c, 0x63, 0x92, 0x7f, 0xf1, 0x3f, 0x3e, 0x38, 0x1f, 0xf7, 0xe7, 0x2b, 0xdb, 0xe7, 0x45, 0x32, 0x48, 0x44, 0xa9, 0xd2, 0x7e, 0x3f, 0x1c, 0x01 }, + { 0x3e, 0x20, 0x9c, 0x9b, 0x33, 0xe8, 0xe4, 0x61, 0x17, 0x8a, 0xb4, 0x6b, 0x1c, 0x64, 0xb4, 0x9a, 0x07, 0xfb, 0x74, 0x5f, 0x1c, 0x8b, 0xc9, 0x5f, 0xbf, 0xb9, 0x4c, 0x6b, 0x87, 0xc6, 0x95, 0x16, 0x65, 0x1b, 0x26, 0x4e, 0xf9, 0x80, 0x93, 0x7f, 0xad, 0x41, 0x23, 0x8b, 0x91, 0xdd, 0xc0, 0x11, 0xa5, 0xdd, 0x77, 0x7c, 0x7e, 0xfd, 0x44, 0x94, 0xb4, 0xb6, 0xec, 0xd3, 0xa9, 0xc2, 0x2a, 0xc0 }, + { 0xfd, 0x6a, 0x3d, 0x5b, 0x18, 0x75, 0xd8, 0x04, 0x86, 0xd6, 0xe6, 0x96, 0x94, 0xa5, 0x6d, 0xbb, 0x04, 0xa9, 0x9a, 0x4d, 0x05, 0x1f, 0x15, 0xdb, 0x26, 0x89, 0x77, 0x6b, 0xa1, 0xc4, 0x88, 0x2e, 0x6d, 0x46, 0x2a, 0x60, 0x3b, 0x70, 0x15, 0xdc, 0x9f, 0x4b, 0x74, 0x50, 0xf0, 0x53, 0x94, 0x30, 0x3b, 0x86, 0x52, 0xcf, 0xb4, 0x04, 0xa2, 0x66, 0x96, 0x2c, 0x41, 0xba, 0xe6, 0xe1, 0x8a, 0x94 }, + { 0x95, 0x1e, 0x27, 0x51, 0x7e, 0x6b, 0xad, 0x9e, 0x41, 0x95, 0xfc, 0x86, 0x71, 0xde, 0xe3, 0xe7, 0xe9, 0xbe, 0x69, 0xce, 0xe1, 0x42, 0x2c, 0xb9, 0xfe, 0xcf, 0xce, 0x0d, 0xba, 0x87, 0x5f, 0x7b, 0x31, 0x0b, 0x93, 0xee, 0x3a, 0x3d, 0x55, 0x8f, 0x94, 0x1f, 0x63, 0x5f, 0x66, 0x8f, 0xf8, 0x32, 0xd2, 0xc1, 0xd0, 0x33, 0xc5, 0xe2, 0xf0, 0x99, 0x7e, 0x4c, 0x66, 0xf1, 0x47, 0x34, 0x4e, 0x02 }, + { 0x8e, 0xba, 0x2f, 0x87, 0x4f, 0x1a, 0xe8, 0x40, 0x41, 0x90, 0x3c, 0x7c, 0x42, 0x53, 0xc8, 0x22, 0x92, 0x53, 0x0f, 0xc8, 0x50, 0x95, 0x50, 0xbf, 0xdc, 0x34, 0xc9, 0x5c, 0x7e, 0x28, 0x89, 0xd5, 0x65, 0x0b, 0x0a, 0xd8, 0xcb, 0x98, 0x8e, 0x5c, 0x48, 0x94, 0xcb, 0x87, 0xfb, 0xfb, 0xb1, 0x96, 0x12, 0xea, 0x93, 0xcc, 0xc4, 0xc5, 0xca, 0xd1, 0x71, 0x58, 0xb9, 0x76, 0x34, 0x64, 0xb4, 0x92 }, + { 0x16, 0xf7, 0x12, 0xea, 0xa1, 0xb7, 0xc6, 0x35, 0x47, 0x19, 0xa8, 0xe7, 0xdb, 0xdf, 0xaf, 0x55, 0xe4, 0x06, 0x3a, 0x4d, 0x27, 0x7d, 0x94, 0x75, 0x50, 0x01, 0x9b, 0x38, 0xdf, 0xb5, 0x64, 0x83, 0x09, 0x11, 0x05, 0x7d, 0x50, 0x50, 0x61, 0x36, 0xe2, 0x39, 0x4c, 0x3b, 0x28, 0x94, 0x5c, 0xc9, 0x64, 0x96, 0x7d, 0x54, 0xe3, 0x00, 0x0c, 0x21, 0x81, 0x62, 0x6c, 0xfb, 0x9b, 0x73, 0xef, 0xd2 }, + { 0xc3, 0x96, 0x39, 0xe7, 0xd5, 0xc7, 0xfb, 0x8c, 0xdd, 0x0f, 0xd3, 0xe6, 0xa5, 0x20, 0x96, 0x03, 0x94, 0x37, 0x12, 0x2f, 0x21, 0xc7, 0x8f, 0x16, 0x79, 0xce, 0xa9, 0xd7, 0x8a, 0x73, 0x4c, 0x56, 0xec, 0xbe, 0xb2, 0x86, 0x54, 0xb4, 0xf1, 0x8e, 0x34, 0x2c, 0x33, 0x1f, 0x6f, 0x72, 0x29, 0xec, 0x4b, 0x4b, 0xc2, 0x81, 0xb2, 0xd8, 0x0a, 0x6e, 0xb5, 0x00, 0x43, 0xf3, 0x17, 0x96, 0xc8, 0x8c }, + { 0x72, 0xd0, 0x81, 0xaf, 0x99, 0xf8, 0xa1, 0x73, 0xdc, 0xc9, 0xa0, 0xac, 0x4e, 0xb3, 0x55, 0x74, 0x05, 0x63, 0x9a, 0x29, 0x08, 0x4b, 0x54, 0xa4, 0x01, 0x72, 0x91, 0x2a, 0x2f, 0x8a, 0x39, 0x51, 0x29, 0xd5, 0x53, 0x6f, 0x09, 0x18, 0xe9, 0x02, 0xf9, 0xe8, 0xfa, 0x60, 0x00, 0x99, 0x5f, 0x41, 0x68, 0xdd, 0xc5, 0xf8, 0x93, 0x01, 0x1b, 0xe6, 0xa0, 0xdb, 0xc9, 0xb8, 0xa1, 0xa3, 0xf5, 0xbb }, + { 0xc1, 0x1a, 0xa8, 0x1e, 0x5e, 0xfd, 0x24, 0xd5, 0xfc, 0x27, 0xee, 0x58, 0x6c, 0xfd, 0x88, 0x47, 0xfb, 0xb0, 0xe2, 0x76, 0x01, 0xcc, 0xec, 0xe5, 0xec, 0xca, 0x01, 0x98, 0xe3, 0xc7, 0x76, 0x53, 0x93, 0xbb, 0x74, 0x45, 0x7c, 0x7e, 0x7a, 0x27, 0xeb, 0x91, 0x70, 0x35, 0x0e, 0x1f, 0xb5, 0x38, 0x57, 0x17, 0x75, 0x06, 0xbe, 0x3e, 0x76, 0x2c, 0xc0, 0xf1, 0x4d, 0x8c, 0x3a, 0xfe, 0x90, 0x77 }, + { 0xc2, 0x8f, 0x21, 0x50, 0xb4, 0x52, 0xe6, 0xc0, 0xc4, 0x24, 0xbc, 0xde, 0x6f, 0x8d, 0x72, 0x00, 0x7f, 0x93, 0x10, 0xfe, 0xd7, 0xf2, 0xf8, 0x7d, 0xe0, 0xdb, 0xb6, 0x4f, 0x44, 0x79, 0xd6, 0xc1, 0x44, 0x1b, 0xa6, 0x6f, 0x44, 0xb2, 0xac, 0xce, 0xe6, 0x16, 0x09, 0x17, 0x7e, 0xd3, 0x40, 0x12, 0x8b, 0x40, 0x7e, 0xce, 0xc7, 0xc6, 0x4b, 0xbe, 0x50, 0xd6, 0x3d, 0x22, 0xd8, 0x62, 0x77, 0x27 }, + { 0xf6, 0x3d, 0x88, 0x12, 0x28, 0x77, 0xec, 0x30, 0xb8, 0xc8, 0xb0, 0x0d, 0x22, 0xe8, 0x90, 0x00, 0xa9, 0x66, 0x42, 0x61, 0x12, 0xbd, 0x44, 0x16, 0x6e, 0x2f, 0x52, 0x5b, 0x76, 0x9c, 0xcb, 0xe9, 0xb2, 0x86, 0xd4, 0x37, 0xa0, 0x12, 0x91, 0x30, 0xdd, 0xe1, 0xa8, 0x6c, 0x43, 0xe0, 0x4b, 0xed, 0xb5, 0x94, 0xe6, 0x71, 0xd9, 0x82, 0x83, 0xaf, 0xe6, 0x4c, 0xe3, 0x31, 0xde, 0x98, 0x28, 0xfd }, + { 0x34, 0x8b, 0x05, 0x32, 0x88, 0x0b, 0x88, 0xa6, 0x61, 0x4a, 0x8d, 0x74, 0x08, 0xc3, 0xf9, 0x13, 0x35, 0x7f, 0xbb, 0x60, 0xe9, 0x95, 0xc6, 0x02, 0x05, 0xbe, 0x91, 0x39, 0xe7, 0x49, 0x98, 0xae, 0xde, 0x7f, 0x45, 0x81, 0xe4, 0x2f, 0x6b, 0x52, 0x69, 0x8f, 0x7f, 0xa1, 0x21, 0x97, 0x08, 0xc1, 0x44, 0x98, 0x06, 0x7f, 0xd1, 0xe0, 0x95, 0x02, 0xde, 0x83, 0xa7, 0x7d, 0xd2, 0x81, 0x15, 0x0c }, + { 0x51, 0x33, 0xdc, 0x8b, 0xef, 0x72, 0x53, 0x59, 0xdf, 0xf5, 0x97, 0x92, 0xd8, 0x5e, 0xaf, 0x75, 0xb7, 0xe1, 0xdc, 0xd1, 0x97, 0x8b, 0x01, 0xc3, 0x5b, 0x1b, 0x85, 0xfc, 0xeb, 0xc6, 0x33, 0x88, 0xad, 0x99, 0xa1, 0x7b, 0x63, 0x46, 0xa2, 0x17, 0xdc, 0x1a, 0x96, 0x22, 0xeb, 0xd1, 0x22, 0xec, 0xf6, 0x91, 0x3c, 0x4d, 0x31, 0xa6, 0xb5, 0x2a, 0x69, 0x5b, 0x86, 0xaf, 0x00, 0xd7, 0x41, 0xa0 }, + { 0x27, 0x53, 0xc4, 0xc0, 0xe9, 0x8e, 0xca, 0xd8, 0x06, 0xe8, 0x87, 0x80, 0xec, 0x27, 0xfc, 0xcd, 0x0f, 0x5c, 0x1a, 0xb5, 0x47, 0xf9, 0xe4, 0xbf, 0x16, 0x59, 0xd1, 0x92, 0xc2, 0x3a, 0xa2, 0xcc, 0x97, 0x1b, 0x58, 0xb6, 0x80, 0x25, 0x80, 0xba, 0xef, 0x8a, 0xdc, 0x3b, 0x77, 0x6e, 0xf7, 0x08, 0x6b, 0x25, 0x45, 0xc2, 0x98, 0x7f, 0x34, 0x8e, 0xe3, 0x71, 0x9c, 0xde, 0xf2, 0x58, 0xc4, 0x03 }, + { 0xb1, 0x66, 0x35, 0x73, 0xce, 0x4b, 0x9d, 0x8c, 0xae, 0xfc, 0x86, 0x50, 0x12, 0xf3, 0xe3, 0x97, 0x14, 0xb9, 0x89, 0x8a, 0x5d, 0xa6, 0xce, 0x17, 0xc2, 0x5a, 0x6a, 0x47, 0x93, 0x1a, 0x9d, 0xdb, 0x9b, 0xbe, 0x98, 0xad, 0xaa, 0x55, 0x3b, 0xee, 0xd4, 0x36, 0xe8, 0x95, 0x78, 0x45, 0x54, 0x16, 0xc2, 0xa5, 0x2a, 0x52, 0x5c, 0xf2, 0x86, 0x2b, 0x8d, 0x1d, 0x49, 0xa2, 0x53, 0x1b, 0x73, 0x91 }, + { 0x64, 0xf5, 0x8b, 0xd6, 0xbf, 0xc8, 0x56, 0xf5, 0xe8, 0x73, 0xb2, 0xa2, 0x95, 0x6e, 0xa0, 0xed, 0xa0, 0xd6, 0xdb, 0x0d, 0xa3, 0x9c, 0x8c, 0x7f, 0xc6, 0x7c, 0x9f, 0x9f, 0xee, 0xfc, 0xff, 0x30, 0x72, 0xcd, 0xf9, 0xe6, 0xea, 0x37, 0xf6, 0x9a, 0x44, 0xf0, 0xc6, 0x1a, 0xa0, 0xda, 0x36, 0x93, 0xc2, 0xdb, 0x5b, 0x54, 0x96, 0x0c, 0x02, 0x81, 0xa0, 0x88, 0x15, 0x1d, 0xb4, 0x2b, 0x11, 0xe8 }, + { 0x07, 0x64, 0xc7, 0xbe, 0x28, 0x12, 0x5d, 0x90, 0x65, 0xc4, 0xb9, 0x8a, 0x69, 0xd6, 0x0a, 0xed, 0xe7, 0x03, 0x54, 0x7c, 0x66, 0xa1, 0x2e, 0x17, 0xe1, 0xc6, 0x18, 0x99, 0x41, 0x32, 0xf5, 0xef, 0x82, 0x48, 0x2c, 0x1e, 0x3f, 0xe3, 0x14, 0x6c, 0xc6, 0x53, 0x76, 0xcc, 0x10, 0x9f, 0x01, 0x38, 0xed, 0x9a, 0x80, 0xe4, 0x9f, 0x1f, 0x3c, 0x7d, 0x61, 0x0d, 0x2f, 0x24, 0x32, 0xf2, 0x06, 0x05 }, + { 0xf7, 0x48, 0x78, 0x43, 0x98, 0xa2, 0xff, 0x03, 0xeb, 0xeb, 0x07, 0xe1, 0x55, 0xe6, 0x61, 0x16, 0xa8, 0x39, 0x74, 0x1a, 0x33, 0x6e, 0x32, 0xda, 0x71, 0xec, 0x69, 0x60, 0x01, 0xf0, 0xad, 0x1b, 0x25, 0xcd, 0x48, 0xc6, 0x9c, 0xfc, 0xa7, 0x26, 0x5e, 0xca, 0x1d, 0xd7, 0x19, 0x04, 0xa0, 0xce, 0x74, 0x8a, 0xc4, 0x12, 0x4f, 0x35, 0x71, 0x07, 0x6d, 0xfa, 0x71, 0x16, 0xa9, 0xcf, 0x00, 0xe9 }, + { 0x3f, 0x0d, 0xbc, 0x01, 0x86, 0xbc, 0xeb, 0x6b, 0x78, 0x5b, 0xa7, 0x8d, 0x2a, 0x2a, 0x01, 0x3c, 0x91, 0x0b, 0xe1, 0x57, 0xbd, 0xaf, 0xfa, 0xe8, 0x1b, 0xb6, 0x66, 0x3b, 0x1a, 0x73, 0x72, 0x2f, 0x7f, 0x12, 0x28, 0x79, 0x5f, 0x3e, 0xca, 0xda, 0x87, 0xcf, 0x6e, 0xf0, 0x07, 0x84, 0x74, 0xaf, 0x73, 0xf3, 0x1e, 0xca, 0x0c, 0xc2, 0x00, 0xed, 0x97, 0x5b, 0x68, 0x93, 0xf7, 0x61, 0xcb, 0x6d }, + { 0xd4, 0x76, 0x2c, 0xd4, 0x59, 0x98, 0x76, 0xca, 0x75, 0xb2, 0xb8, 0xfe, 0x24, 0x99, 0x44, 0xdb, 0xd2, 0x7a, 0xce, 0x74, 0x1f, 0xda, 0xb9, 0x36, 0x16, 0xcb, 0xc6, 0xe4, 0x25, 0x46, 0x0f, 0xeb, 0x51, 0xd4, 0xe7, 0xad, 0xcc, 0x38, 0x18, 0x0e, 0x7f, 0xc4, 0x7c, 0x89, 0x02, 0x4a, 0x7f, 0x56, 0x19, 0x1a, 0xdb, 0x87, 0x8d, 0xfd, 0xe4, 0xea, 0xd6, 0x22, 0x23, 0xf5, 0xa2, 0x61, 0x0e, 0xfe }, + { 0xcd, 0x36, 0xb3, 0xd5, 0xb4, 0xc9, 0x1b, 0x90, 0xfc, 0xbb, 0xa7, 0x95, 0x13, 0xcf, 0xee, 0x19, 0x07, 0xd8, 0x64, 0x5a, 0x16, 0x2a, 0xfd, 0x0c, 0xd4, 0xcf, 0x41, 0x92, 0xd4, 0xa5, 0xf4, 0xc8, 0x92, 0x18, 0x3a, 0x8e, 0xac, 0xdb, 0x2b, 0x6b, 0x6a, 0x9d, 0x9a, 0xa8, 0xc1, 0x1a, 0xc1, 0xb2, 0x61, 0xb3, 0x80, 0xdb, 0xee, 0x24, 0xca, 0x46, 0x8f, 0x1b, 0xfd, 0x04, 0x3c, 0x58, 0xee, 0xfe }, + { 0x98, 0x59, 0x34, 0x52, 0x28, 0x16, 0x61, 0xa5, 0x3c, 0x48, 0xa9, 0xd8, 0xcd, 0x79, 0x08, 0x26, 0xc1, 0xa1, 0xce, 0x56, 0x77, 0x38, 0x05, 0x3d, 0x0b, 0xee, 0x4a, 0x91, 0xa3, 0xd5, 0xbd, 0x92, 0xee, 0xfd, 0xba, 0xbe, 0xbe, 0x32, 0x04, 0xf2, 0x03, 0x1c, 0xa5, 0xf7, 0x81, 0xbd, 0xa9, 0x9e, 0xf5, 0xd8, 0xae, 0x56, 0xe5, 0xb0, 0x4a, 0x9e, 0x1e, 0xcd, 0x21, 0xb0, 0xeb, 0x05, 0xd3, 0xe1 }, + { 0x77, 0x1f, 0x57, 0xdd, 0x27, 0x75, 0xcc, 0xda, 0xb5, 0x59, 0x21, 0xd3, 0xe8, 0xe3, 0x0c, 0xcf, 0x48, 0x4d, 0x61, 0xfe, 0x1c, 0x1b, 0x9c, 0x2a, 0xe8, 0x19, 0xd0, 0xfb, 0x2a, 0x12, 0xfa, 0xb9, 0xbe, 0x70, 0xc4, 0xa7, 0xa1, 0x38, 0xda, 0x84, 0xe8, 0x28, 0x04, 0x35, 0xda, 0xad, 0xe5, 0xbb, 0xe6, 0x6a, 0xf0, 0x83, 0x6a, 0x15, 0x4f, 0x81, 0x7f, 0xb1, 0x7f, 0x33, 0x97, 0xe7, 0x25, 0xa3 }, + { 0xc6, 0x08, 0x97, 0xc6, 0xf8, 0x28, 0xe2, 0x1f, 0x16, 0xfb, 0xb5, 0xf1, 0x5b, 0x32, 0x3f, 0x87, 0xb6, 0xc8, 0x95, 0x5e, 0xab, 0xf1, 0xd3, 0x80, 0x61, 0xf7, 0x07, 0xf6, 0x08, 0xab, 0xdd, 0x99, 0x3f, 0xac, 0x30, 0x70, 0x63, 0x3e, 0x28, 0x6c, 0xf8, 0x33, 0x9c, 0xe2, 0x95, 0xdd, 0x35, 0x2d, 0xf4, 0xb4, 0xb4, 0x0b, 0x2f, 0x29, 0xda, 0x1d, 0xd5, 0x0b, 0x3a, 0x05, 0xd0, 0x79, 0xe6, 0xbb }, + { 0x82, 0x10, 0xcd, 0x2c, 0x2d, 0x3b, 0x13, 0x5c, 0x2c, 0xf0, 0x7f, 0xa0, 0xd1, 0x43, 0x3c, 0xd7, 0x71, 0xf3, 0x25, 0xd0, 0x75, 0xc6, 0x46, 0x9d, 0x9c, 0x7f, 0x1b, 0xa0, 0x94, 0x3c, 0xd4, 0xab, 0x09, 0x80, 0x8c, 0xab, 0xf4, 0xac, 0xb9, 0xce, 0x5b, 0xb8, 0x8b, 0x49, 0x89, 0x29, 0xb4, 0xb8, 0x47, 0xf6, 0x81, 0xad, 0x2c, 0x49, 0x0d, 0x04, 0x2d, 0xb2, 0xae, 0xc9, 0x42, 0x14, 0xb0, 0x6b }, + { 0x1d, 0x4e, 0xdf, 0xff, 0xd8, 0xfd, 0x80, 0xf7, 0xe4, 0x10, 0x78, 0x40, 0xfa, 0x3a, 0xa3, 0x1e, 0x32, 0x59, 0x84, 0x91, 0xe4, 0xaf, 0x70, 0x13, 0xc1, 0x97, 0xa6, 0x5b, 0x7f, 0x36, 0xdd, 0x3a, 0xc4, 0xb4, 0x78, 0x45, 0x61, 0x11, 0xcd, 0x43, 0x09, 0xd9, 0x24, 0x35, 0x10, 0x78, 0x2f, 0xa3, 0x1b, 0x7c, 0x4c, 0x95, 0xfa, 0x95, 0x15, 0x20, 0xd0, 0x20, 0xeb, 0x7e, 0x5c, 0x36, 0xe4, 0xef }, + { 0xaf, 0x8e, 0x6e, 0x91, 0xfa, 0xb4, 0x6c, 0xe4, 0x87, 0x3e, 0x1a, 0x50, 0xa8, 0xef, 0x44, 0x8c, 0xc2, 0x91, 0x21, 0xf7, 0xf7, 0x4d, 0xee, 0xf3, 0x4a, 0x71, 0xef, 0x89, 0xcc, 0x00, 0xd9, 0x27, 0x4b, 0xc6, 0xc2, 0x45, 0x4b, 0xbb, 0x32, 0x30, 0xd8, 0xb2, 0xec, 0x94, 0xc6, 0x2b, 0x1d, 0xec, 0x85, 0xf3, 0x59, 0x3b, 0xfa, 0x30, 0xea, 0x6f, 0x7a, 0x44, 0xd7, 0xc0, 0x94, 0x65, 0xa2, 0x53 }, + { 0x29, 0xfd, 0x38, 0x4e, 0xd4, 0x90, 0x6f, 0x2d, 0x13, 0xaa, 0x9f, 0xe7, 0xaf, 0x90, 0x59, 0x90, 0x93, 0x8b, 0xed, 0x80, 0x7f, 0x18, 0x32, 0x45, 0x4a, 0x37, 0x2a, 0xb4, 0x12, 0xee, 0xa1, 0xf5, 0x62, 0x5a, 0x1f, 0xcc, 0x9a, 0xc8, 0x34, 0x3b, 0x7c, 0x67, 0xc5, 0xab, 0xa6, 0xe0, 0xb1, 0xcc, 0x46, 0x44, 0x65, 0x49, 0x13, 0x69, 0x2c, 0x6b, 0x39, 0xeb, 0x91, 0x87, 0xce, 0xac, 0xd3, 0xec }, + { 0xa2, 0x68, 0xc7, 0x88, 0x5d, 0x98, 0x74, 0xa5, 0x1c, 0x44, 0xdf, 0xfe, 0xd8, 0xea, 0x53, 0xe9, 0x4f, 0x78, 0x45, 0x6e, 0x0b, 0x2e, 0xd9, 0x9f, 0xf5, 0xa3, 0x92, 0x47, 0x60, 0x81, 0x38, 0x26, 0xd9, 0x60, 0xa1, 0x5e, 0xdb, 0xed, 0xbb, 0x5d, 0xe5, 0x22, 0x6b, 0xa4, 0xb0, 0x74, 0xe7, 0x1b, 0x05, 0xc5, 0x5b, 0x97, 0x56, 0xbb, 0x79, 0xe5, 0x5c, 0x02, 0x75, 0x4c, 0x2c, 0x7b, 0x6c, 0x8a }, + { 0x0c, 0xf8, 0x54, 0x54, 0x88, 0xd5, 0x6a, 0x86, 0x81, 0x7c, 0xd7, 0xec, 0xb1, 0x0f, 0x71, 0x16, 0xb7, 0xea, 0x53, 0x0a, 0x45, 0xb6, 0xea, 0x49, 0x7b, 0x6c, 0x72, 0xc9, 0x97, 0xe0, 0x9e, 0x3d, 0x0d, 0xa8, 0x69, 0x8f, 0x46, 0xbb, 0x00, 0x6f, 0xc9, 0x77, 0xc2, 0xcd, 0x3d, 0x11, 0x77, 0x46, 0x3a, 0xc9, 0x05, 0x7f, 0xdd, 0x16, 0x62, 0xc8, 0x5d, 0x0c, 0x12, 0x64, 0x43, 0xc1, 0x04, 0x73 }, + { 0xb3, 0x96, 0x14, 0x26, 0x8f, 0xdd, 0x87, 0x81, 0x51, 0x5e, 0x2c, 0xfe, 0xbf, 0x89, 0xb4, 0xd5, 0x40, 0x2b, 0xab, 0x10, 0xc2, 0x26, 0xe6, 0x34, 0x4e, 0x6b, 0x9a, 0xe0, 0x00, 0xfb, 0x0d, 0x6c, 0x79, 0xcb, 0x2f, 0x3e, 0xc8, 0x0e, 0x80, 0xea, 0xeb, 0x19, 0x80, 0xd2, 0xf8, 0x69, 0x89, 0x16, 0xbd, 0x2e, 0x9f, 0x74, 0x72, 0x36, 0x65, 0x51, 0x16, 0x64, 0x9c, 0xd3, 0xca, 0x23, 0xa8, 0x37 }, + { 0x74, 0xbe, 0xf0, 0x92, 0xfc, 0x6f, 0x1e, 0x5d, 0xba, 0x36, 0x63, 0xa3, 0xfb, 0x00, 0x3b, 0x2a, 0x5b, 0xa2, 0x57, 0x49, 0x65, 0x36, 0xd9, 0x9f, 0x62, 0xb9, 0xd7, 0x3f, 0x8f, 0x9e, 0xb3, 0xce, 0x9f, 0xf3, 0xee, 0xc7, 0x09, 0xeb, 0x88, 0x36, 0x55, 0xec, 0x9e, 0xb8, 0x96, 0xb9, 0x12, 0x8f, 0x2a, 0xfc, 0x89, 0xcf, 0x7d, 0x1a, 0xb5, 0x8a, 0x72, 0xf4, 0xa3, 0xbf, 0x03, 0x4d, 0x2b, 0x4a }, + { 0x3a, 0x98, 0x8d, 0x38, 0xd7, 0x56, 0x11, 0xf3, 0xef, 0x38, 0xb8, 0x77, 0x49, 0x80, 0xb3, 0x3e, 0x57, 0x3b, 0x6c, 0x57, 0xbe, 0xe0, 0x46, 0x9b, 0xa5, 0xee, 0xd9, 0xb4, 0x4f, 0x29, 0x94, 0x5e, 0x73, 0x47, 0x96, 0x7f, 0xba, 0x2c, 0x16, 0x2e, 0x1c, 0x3b, 0xe7, 0xf3, 0x10, 0xf2, 0xf7, 0x5e, 0xe2, 0x38, 0x1e, 0x7b, 0xfd, 0x6b, 0x3f, 0x0b, 0xae, 0xa8, 0xd9, 0x5d, 0xfb, 0x1d, 0xaf, 0xb1 }, + { 0x58, 0xae, 0xdf, 0xce, 0x6f, 0x67, 0xdd, 0xc8, 0x5a, 0x28, 0xc9, 0x92, 0xf1, 0xc0, 0xbd, 0x09, 0x69, 0xf0, 0x41, 0xe6, 0x6f, 0x1e, 0xe8, 0x80, 0x20, 0xa1, 0x25, 0xcb, 0xfc, 0xfe, 0xbc, 0xd6, 0x17, 0x09, 0xc9, 0xc4, 0xeb, 0xa1, 0x92, 0xc1, 0x5e, 0x69, 0xf0, 0x20, 0xd4, 0x62, 0x48, 0x60, 0x19, 0xfa, 0x8d, 0xea, 0x0c, 0xd7, 0xa4, 0x29, 0x21, 0xa1, 0x9d, 0x2f, 0xe5, 0x46, 0xd4, 0x3d }, + { 0x93, 0x47, 0xbd, 0x29, 0x14, 0x73, 0xe6, 0xb4, 0xe3, 0x68, 0x43, 0x7b, 0x8e, 0x56, 0x1e, 0x06, 0x5f, 0x64, 0x9a, 0x6d, 0x8a, 0xda, 0x47, 0x9a, 0xd0, 0x9b, 0x19, 0x99, 0xa8, 0xf2, 0x6b, 0x91, 0xcf, 0x61, 0x20, 0xfd, 0x3b, 0xfe, 0x01, 0x4e, 0x83, 0xf2, 0x3a, 0xcf, 0xa4, 0xc0, 0xad, 0x7b, 0x37, 0x12, 0xb2, 0xc3, 0xc0, 0x73, 0x32, 0x70, 0x66, 0x31, 0x12, 0xcc, 0xd9, 0x28, 0x5c, 0xd9 }, + { 0xb3, 0x21, 0x63, 0xe7, 0xc5, 0xdb, 0xb5, 0xf5, 0x1f, 0xdc, 0x11, 0xd2, 0xea, 0xc8, 0x75, 0xef, 0xbb, 0xcb, 0x7e, 0x76, 0x99, 0x09, 0x0a, 0x7e, 0x7f, 0xf8, 0xa8, 0xd5, 0x07, 0x95, 0xaf, 0x5d, 0x74, 0xd9, 0xff, 0x98, 0x54, 0x3e, 0xf8, 0xcd, 0xf8, 0x9a, 0xc1, 0x3d, 0x04, 0x85, 0x27, 0x87, 0x56, 0xe0, 0xef, 0x00, 0xc8, 0x17, 0x74, 0x56, 0x61, 0xe1, 0xd5, 0x9f, 0xe3, 0x8e, 0x75, 0x37 }, + { 0x10, 0x85, 0xd7, 0x83, 0x07, 0xb1, 0xc4, 0xb0, 0x08, 0xc5, 0x7a, 0x2e, 0x7e, 0x5b, 0x23, 0x46, 0x58, 0xa0, 0xa8, 0x2e, 0x4f, 0xf1, 0xe4, 0xaa, 0xac, 0x72, 0xb3, 0x12, 0xfd, 0xa0, 0xfe, 0x27, 0xd2, 0x33, 0xbc, 0x5b, 0x10, 0xe9, 0xcc, 0x17, 0xfd, 0xc7, 0x69, 0x7b, 0x54, 0x0c, 0x7d, 0x95, 0xeb, 0x21, 0x5a, 0x19, 0xa1, 0xa0, 0xe2, 0x0e, 0x1a, 0xbf, 0xa1, 0x26, 0xef, 0xd5, 0x68, 0xc7 }, + { 0x4e, 0x5c, 0x73, 0x4c, 0x7d, 0xde, 0x01, 0x1d, 0x83, 0xea, 0xc2, 0xb7, 0x34, 0x7b, 0x37, 0x35, 0x94, 0xf9, 0x2d, 0x70, 0x91, 0xb9, 0xca, 0x34, 0xcb, 0x9c, 0x6f, 0x39, 0xbd, 0xf5, 0xa8, 0xd2, 0xf1, 0x34, 0x37, 0x9e, 0x16, 0xd8, 0x22, 0xf6, 0x52, 0x21, 0x70, 0xcc, 0xf2, 0xdd, 0xd5, 0x5c, 0x84, 0xb9, 0xe6, 0xc6, 0x4f, 0xc9, 0x27, 0xac, 0x4c, 0xf8, 0xdf, 0xb2, 0xa1, 0x77, 0x01, 0xf2 }, + { 0x69, 0x5d, 0x83, 0xbd, 0x99, 0x0a, 0x11, 0x17, 0xb3, 0xd0, 0xce, 0x06, 0xcc, 0x88, 0x80, 0x27, 0xd1, 0x2a, 0x05, 0x4c, 0x26, 0x77, 0xfd, 0x82, 0xf0, 0xd4, 0xfb, 0xfc, 0x93, 0x57, 0x55, 0x23, 0xe7, 0x99, 0x1a, 0x5e, 0x35, 0xa3, 0x75, 0x2e, 0x9b, 0x70, 0xce, 0x62, 0x99, 0x2e, 0x26, 0x8a, 0x87, 0x77, 0x44, 0xcd, 0xd4, 0x35, 0xf5, 0xf1, 0x30, 0x86, 0x9c, 0x9a, 0x20, 0x74, 0xb3, 0x38 }, + { 0xa6, 0x21, 0x37, 0x43, 0x56, 0x8e, 0x3b, 0x31, 0x58, 0xb9, 0x18, 0x43, 0x01, 0xf3, 0x69, 0x08, 0x47, 0x55, 0x4c, 0x68, 0x45, 0x7c, 0xb4, 0x0f, 0xc9, 0xa4, 0xb8, 0xcf, 0xd8, 0xd4, 0xa1, 0x18, 0xc3, 0x01, 0xa0, 0x77, 0x37, 0xae, 0xda, 0x0f, 0x92, 0x9c, 0x68, 0x91, 0x3c, 0x5f, 0x51, 0xc8, 0x03, 0x94, 0xf5, 0x3b, 0xff, 0x1c, 0x3e, 0x83, 0xb2, 0xe4, 0x0c, 0xa9, 0x7e, 0xba, 0x9e, 0x15 }, + { 0xd4, 0x44, 0xbf, 0xa2, 0x36, 0x2a, 0x96, 0xdf, 0x21, 0x3d, 0x07, 0x0e, 0x33, 0xfa, 0x84, 0x1f, 0x51, 0x33, 0x4e, 0x4e, 0x76, 0x86, 0x6b, 0x81, 0x39, 0xe8, 0xaf, 0x3b, 0xb3, 0x39, 0x8b, 0xe2, 0xdf, 0xad, 0xdc, 0xbc, 0x56, 0xb9, 0x14, 0x6d, 0xe9, 0xf6, 0x81, 0x18, 0xdc, 0x58, 0x29, 0xe7, 0x4b, 0x0c, 0x28, 0xd7, 0x71, 0x19, 0x07, 0xb1, 0x21, 0xf9, 0x16, 0x1c, 0xb9, 0x2b, 0x69, 0xa9 }, + { 0x14, 0x27, 0x09, 0xd6, 0x2e, 0x28, 0xfc, 0xcc, 0xd0, 0xaf, 0x97, 0xfa, 0xd0, 0xf8, 0x46, 0x5b, 0x97, 0x1e, 0x82, 0x20, 0x1d, 0xc5, 0x10, 0x70, 0xfa, 0xa0, 0x37, 0x2a, 0xa4, 0x3e, 0x92, 0x48, 0x4b, 0xe1, 0xc1, 0xe7, 0x3b, 0xa1, 0x09, 0x06, 0xd5, 0xd1, 0x85, 0x3d, 0xb6, 0xa4, 0x10, 0x6e, 0x0a, 0x7b, 0xf9, 0x80, 0x0d, 0x37, 0x3d, 0x6d, 0xee, 0x2d, 0x46, 0xd6, 0x2e, 0xf2, 0xa4, 0x61 }, + }; + unsigned char inp[1000], out[1000]; + unsigned char key[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f }; + unsigned long ilen, klen = sizeof(key), mlen = 64; + blake2bmac_state st; + + for (ilen = 0; ilen < 256; ilen++) inp[ilen] = (unsigned char)ilen; + + for (ilen = 0; ilen < 256; ilen++) { + const unsigned char *mac = tests[ilen]; + unsigned long olen = mlen; + /* process piece by piece */ + if (ilen > 15) { + blake2bmac_init(&st, olen, key, klen); + blake2bmac_process(&st, (unsigned char*)inp, 5); + blake2bmac_process(&st, (unsigned char*)inp + 5, 4); + blake2bmac_process(&st, (unsigned char*)inp + 9, 3); + blake2bmac_process(&st, (unsigned char*)inp + 12, 2); + blake2bmac_process(&st, (unsigned char*)inp + 14, 1); + blake2bmac_process(&st, (unsigned char*)inp + 15, ilen - 15); + blake2bmac_done(&st, out, &olen); + if (compare_testvector(out, olen, mac, mlen, "BLAKE2B MAC multi", ilen) != 0) return CRYPT_FAIL_TESTVECTOR; + } + /* process in one go */ + blake2bmac_init(&st, olen, key, klen); + blake2bmac_process(&st, (unsigned char*)inp, ilen); + blake2bmac_done(&st, out, &olen); + if (compare_testvector(out, olen, mac, mlen, "BLAKE2B MAC single", ilen) != 0) return CRYPT_FAIL_TESTVECTOR; + } + return CRYPT_OK; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/blake2/blake2smac.c b/fsbl/lib/libtomcrypt/src/mac/blake2/blake2smac.c new file mode 100644 index 000000000..080241b75 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/blake2/blake2smac.c @@ -0,0 +1,66 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_BLAKE2SMAC + +/** + Initialize an BLAKE2S MAC context. + @param st The BLAKE2S MAC state + @param outlen The size of the MAC output (octets) + @param key The secret key + @param keylen The length of the secret key (octets) + @return CRYPT_OK if successful +*/ +int blake2smac_init(blake2smac_state *st, unsigned long outlen, const unsigned char *key, unsigned long keylen) +{ + LTC_ARGCHK(st != NULL); + LTC_ARGCHK(key != NULL); + return blake2s_init(st, outlen, key, keylen); +} + +/** + Process data through BLAKE2S MAC + @param st The BLAKE2S MAC state + @param in The data to send through HMAC + @param inlen The length of the data to HMAC (octets) + @return CRYPT_OK if successful +*/ +int blake2smac_process(blake2smac_state *st, const unsigned char *in, unsigned long inlen) +{ + if (inlen == 0) return CRYPT_OK; /* nothing to do */ + LTC_ARGCHK(st != NULL); + LTC_ARGCHK(in != NULL); + return blake2s_process(st, in, inlen); +} + +/** + Terminate a BLAKE2S MAC session + @param st The BLAKE2S MAC state + @param mac [out] The destination of the BLAKE2S MAC authentication tag + @param maclen [in/out] The max size and resulting size of the BLAKE2S MAC authentication tag + @return CRYPT_OK if successful +*/ +int blake2smac_done(blake2smac_state *st, unsigned char *mac, unsigned long *maclen) +{ + LTC_ARGCHK(st != NULL); + LTC_ARGCHK(mac != NULL); + LTC_ARGCHK(maclen != NULL); + LTC_ARGCHK(*maclen >= st->blake2s.outlen); + + *maclen = st->blake2s.outlen; + return blake2s_done(st, mac); +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/blake2/blake2smac_file.c b/fsbl/lib/libtomcrypt/src/mac/blake2/blake2smac_file.c new file mode 100644 index 000000000..1ac667970 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/blake2/blake2smac_file.c @@ -0,0 +1,88 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_BLAKE2SMAC + +/** + BLAKE2S MAC a file + @param fname The name of the file you wish to BLAKE2S MAC + @param key The secret key + @param keylen The length of the secret key + @param mac [out] The BLAKE2S MAC authentication tag + @param maclen [in/out] The max size and resulting size of the authentication tag + @return CRYPT_OK if successful, CRYPT_NOP if file support has been disabled +*/ +int blake2smac_file(const char *fname, const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen) +{ +#ifdef LTC_NO_FILE + LTC_UNUSED_PARAM(fname); + LTC_UNUSED_PARAM(key); + LTC_UNUSED_PARAM(keylen); + LTC_UNUSED_PARAM(mac); + LTC_UNUSED_PARAM(maclen); + return CRYPT_NOP; +#else + blake2smac_state st; + FILE *in; + unsigned char *buf; + size_t x; + int err; + + LTC_ARGCHK(fname != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(mac != NULL); + LTC_ARGCHK(maclen != NULL); + + if ((buf = XMALLOC(LTC_FILE_READ_BUFSIZE)) == NULL) { + return CRYPT_MEM; + } + + if ((err = blake2smac_init(&st, *maclen, key, keylen)) != CRYPT_OK) { + goto LBL_ERR; + } + + in = fopen(fname, "rb"); + if (in == NULL) { + err = CRYPT_FILE_NOTFOUND; + goto LBL_ERR; + } + + do { + x = fread(buf, 1, LTC_FILE_READ_BUFSIZE, in); + if ((err = blake2smac_process(&st, buf, (unsigned long)x)) != CRYPT_OK) { + fclose(in); + goto LBL_CLEANBUF; + } + } while (x == LTC_FILE_READ_BUFSIZE); + + if (fclose(in) != 0) { + err = CRYPT_ERROR; + goto LBL_CLEANBUF; + } + + err = blake2smac_done(&st, mac, maclen); + +LBL_CLEANBUF: + zeromem(buf, LTC_FILE_READ_BUFSIZE); +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(&st, sizeof(blake2smac_state)); +#endif + XFREE(buf); + return err; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/blake2/blake2smac_memory.c b/fsbl/lib/libtomcrypt/src/mac/blake2/blake2smac_memory.c new file mode 100644 index 000000000..1661fb064 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/blake2/blake2smac_memory.c @@ -0,0 +1,48 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_BLAKE2SMAC + +/** + BLAKE2S MAC a block of memory to produce the authentication tag + @param key The secret key + @param keylen The length of the secret key (octets) + @param in The data to BLAKE2S MAC + @param inlen The length of the data to BLAKE2S MAC (octets) + @param mac [out] Destination of the authentication tag + @param maclen [in/out] Max size and resulting size of authentication tag + @return CRYPT_OK if successful +*/ +int blake2smac_memory(const unsigned char *key, unsigned long keylen, const unsigned char *in, unsigned long inlen, unsigned char *mac, unsigned long *maclen) +{ + blake2smac_state st; + int err; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(mac != NULL); + LTC_ARGCHK(maclen != NULL); + + if ((err = blake2smac_init(&st, *maclen, key, keylen)) != CRYPT_OK) { goto LBL_ERR; } + if ((err = blake2smac_process(&st, in, inlen)) != CRYPT_OK) { goto LBL_ERR; } + err = blake2smac_done(&st, mac, maclen); +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(&st, sizeof(blake2smac_state)); +#endif + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/blake2/blake2smac_memory_multi.c b/fsbl/lib/libtomcrypt/src/mac/blake2/blake2smac_memory_multi.c new file mode 100644 index 000000000..0985c428f --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/blake2/blake2smac_memory_multi.c @@ -0,0 +1,62 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" +#include + +#ifdef LTC_BLAKE2SMAC + +/** + BLAKE2S MAC multiple blocks of memory to produce the authentication tag + @param key The secret key + @param keylen The length of the secret key (octets) + @param mac [out] Destination of the authentication tag + @param maclen [in/out] Max size and resulting size of authentication tag + @param in The data to BLAKE2S MAC + @param inlen The length of the data to BLAKE2S MAC (octets) + @param ... tuples of (data,len) pairs to BLAKE2S MAC, terminated with a (NULL,x) (x=don't care) + @return CRYPT_OK if successful +*/ +int blake2smac_memory_multi(const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen, const unsigned char *in, unsigned long inlen, ...) +{ + blake2smac_state st; + int err; + va_list args; + const unsigned char *curptr; + unsigned long curlen; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(mac != NULL); + LTC_ARGCHK(maclen != NULL); + + va_start(args, inlen); + curptr = in; + curlen = inlen; + if ((err = blake2smac_init(&st, *maclen, key, keylen)) != CRYPT_OK) { goto LBL_ERR; } + for (;;) { + if ((err = blake2smac_process(&st, curptr, curlen)) != CRYPT_OK) { goto LBL_ERR; } + curptr = va_arg(args, const unsigned char*); + if (curptr == NULL) break; + curlen = va_arg(args, unsigned long); + } + err = blake2smac_done(&st, mac, maclen); +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(&st, sizeof(blake2smac_state)); +#endif + va_end(args); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/blake2/blake2smac_test.c b/fsbl/lib/libtomcrypt/src/mac/blake2/blake2smac_test.c new file mode 100644 index 000000000..a44ab8d26 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/blake2/blake2smac_test.c @@ -0,0 +1,314 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_BLAKE2SMAC + +int blake2smac_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const unsigned char tests[256][32] = { + /* source: https://github.com/BLAKE2/BLAKE2/blob/master/testvectors/blake2s-kat.txt */ + { 0x48, 0xa8, 0x99, 0x7d, 0xa4, 0x07, 0x87, 0x6b, 0x3d, 0x79, 0xc0, 0xd9, 0x23, 0x25, 0xad, 0x3b, 0x89, 0xcb, 0xb7, 0x54, 0xd8, 0x6a, 0xb7, 0x1a, 0xee, 0x04, 0x7a, 0xd3, 0x45, 0xfd, 0x2c, 0x49 }, + { 0x40, 0xd1, 0x5f, 0xee, 0x7c, 0x32, 0x88, 0x30, 0x16, 0x6a, 0xc3, 0xf9, 0x18, 0x65, 0x0f, 0x80, 0x7e, 0x7e, 0x01, 0xe1, 0x77, 0x25, 0x8c, 0xdc, 0x0a, 0x39, 0xb1, 0x1f, 0x59, 0x80, 0x66, 0xf1 }, + { 0x6b, 0xb7, 0x13, 0x00, 0x64, 0x4c, 0xd3, 0x99, 0x1b, 0x26, 0xcc, 0xd4, 0xd2, 0x74, 0xac, 0xd1, 0xad, 0xea, 0xb8, 0xb1, 0xd7, 0x91, 0x45, 0x46, 0xc1, 0x19, 0x8b, 0xbe, 0x9f, 0xc9, 0xd8, 0x03 }, + { 0x1d, 0x22, 0x0d, 0xbe, 0x2e, 0xe1, 0x34, 0x66, 0x1f, 0xdf, 0x6d, 0x9e, 0x74, 0xb4, 0x17, 0x04, 0x71, 0x05, 0x56, 0xf2, 0xf6, 0xe5, 0xa0, 0x91, 0xb2, 0x27, 0x69, 0x74, 0x45, 0xdb, 0xea, 0x6b }, + { 0xf6, 0xc3, 0xfb, 0xad, 0xb4, 0xcc, 0x68, 0x7a, 0x00, 0x64, 0xa5, 0xbe, 0x6e, 0x79, 0x1b, 0xec, 0x63, 0xb8, 0x68, 0xad, 0x62, 0xfb, 0xa6, 0x1b, 0x37, 0x57, 0xef, 0x9c, 0xa5, 0x2e, 0x05, 0xb2 }, + { 0x49, 0xc1, 0xf2, 0x11, 0x88, 0xdf, 0xd7, 0x69, 0xae, 0xa0, 0xe9, 0x11, 0xdd, 0x6b, 0x41, 0xf1, 0x4d, 0xab, 0x10, 0x9d, 0x2b, 0x85, 0x97, 0x7a, 0xa3, 0x08, 0x8b, 0x5c, 0x70, 0x7e, 0x85, 0x98 }, + { 0xfd, 0xd8, 0x99, 0x3d, 0xcd, 0x43, 0xf6, 0x96, 0xd4, 0x4f, 0x3c, 0xea, 0x0f, 0xf3, 0x53, 0x45, 0x23, 0x4e, 0xc8, 0xee, 0x08, 0x3e, 0xb3, 0xca, 0xda, 0x01, 0x7c, 0x7f, 0x78, 0xc1, 0x71, 0x43 }, + { 0xe6, 0xc8, 0x12, 0x56, 0x37, 0x43, 0x8d, 0x09, 0x05, 0xb7, 0x49, 0xf4, 0x65, 0x60, 0xac, 0x89, 0xfd, 0x47, 0x1c, 0xf8, 0x69, 0x2e, 0x28, 0xfa, 0xb9, 0x82, 0xf7, 0x3f, 0x01, 0x9b, 0x83, 0xa9 }, + { 0x19, 0xfc, 0x8c, 0xa6, 0x97, 0x9d, 0x60, 0xe6, 0xed, 0xd3, 0xb4, 0x54, 0x1e, 0x2f, 0x96, 0x7c, 0xed, 0x74, 0x0d, 0xf6, 0xec, 0x1e, 0xae, 0xbb, 0xfe, 0x81, 0x38, 0x32, 0xe9, 0x6b, 0x29, 0x74 }, + { 0xa6, 0xad, 0x77, 0x7c, 0xe8, 0x81, 0xb5, 0x2b, 0xb5, 0xa4, 0x42, 0x1a, 0xb6, 0xcd, 0xd2, 0xdf, 0xba, 0x13, 0xe9, 0x63, 0x65, 0x2d, 0x4d, 0x6d, 0x12, 0x2a, 0xee, 0x46, 0x54, 0x8c, 0x14, 0xa7 }, + { 0xf5, 0xc4, 0xb2, 0xba, 0x1a, 0x00, 0x78, 0x1b, 0x13, 0xab, 0xa0, 0x42, 0x52, 0x42, 0xc6, 0x9c, 0xb1, 0x55, 0x2f, 0x3f, 0x71, 0xa9, 0xa3, 0xbb, 0x22, 0xb4, 0xa6, 0xb4, 0x27, 0x7b, 0x46, 0xdd }, + { 0xe3, 0x3c, 0x4c, 0x9b, 0xd0, 0xcc, 0x7e, 0x45, 0xc8, 0x0e, 0x65, 0xc7, 0x7f, 0xa5, 0x99, 0x7f, 0xec, 0x70, 0x02, 0x73, 0x85, 0x41, 0x50, 0x9e, 0x68, 0xa9, 0x42, 0x38, 0x91, 0xe8, 0x22, 0xa3 }, + { 0xfb, 0xa1, 0x61, 0x69, 0xb2, 0xc3, 0xee, 0x10, 0x5b, 0xe6, 0xe1, 0xe6, 0x50, 0xe5, 0xcb, 0xf4, 0x07, 0x46, 0xb6, 0x75, 0x3d, 0x03, 0x6a, 0xb5, 0x51, 0x79, 0x01, 0x4a, 0xd7, 0xef, 0x66, 0x51 }, + { 0xf5, 0xc4, 0xbe, 0xc6, 0xd6, 0x2f, 0xc6, 0x08, 0xbf, 0x41, 0xcc, 0x11, 0x5f, 0x16, 0xd6, 0x1c, 0x7e, 0xfd, 0x3f, 0xf6, 0xc6, 0x56, 0x92, 0xbb, 0xe0, 0xaf, 0xff, 0xb1, 0xfe, 0xde, 0x74, 0x75 }, + { 0xa4, 0x86, 0x2e, 0x76, 0xdb, 0x84, 0x7f, 0x05, 0xba, 0x17, 0xed, 0xe5, 0xda, 0x4e, 0x7f, 0x91, 0xb5, 0x92, 0x5c, 0xf1, 0xad, 0x4b, 0xa1, 0x27, 0x32, 0xc3, 0x99, 0x57, 0x42, 0xa5, 0xcd, 0x6e }, + { 0x65, 0xf4, 0xb8, 0x60, 0xcd, 0x15, 0xb3, 0x8e, 0xf8, 0x14, 0xa1, 0xa8, 0x04, 0x31, 0x4a, 0x55, 0xbe, 0x95, 0x3c, 0xaa, 0x65, 0xfd, 0x75, 0x8a, 0xd9, 0x89, 0xff, 0x34, 0xa4, 0x1c, 0x1e, 0xea }, + { 0x19, 0xba, 0x23, 0x4f, 0x0a, 0x4f, 0x38, 0x63, 0x7d, 0x18, 0x39, 0xf9, 0xd9, 0xf7, 0x6a, 0xd9, 0x1c, 0x85, 0x22, 0x30, 0x71, 0x43, 0xc9, 0x7d, 0x5f, 0x93, 0xf6, 0x92, 0x74, 0xce, 0xc9, 0xa7 }, + { 0x1a, 0x67, 0x18, 0x6c, 0xa4, 0xa5, 0xcb, 0x8e, 0x65, 0xfc, 0xa0, 0xe2, 0xec, 0xbc, 0x5d, 0xdc, 0x14, 0xae, 0x38, 0x1b, 0xb8, 0xbf, 0xfe, 0xb9, 0xe0, 0xa1, 0x03, 0x44, 0x9e, 0x3e, 0xf0, 0x3c }, + { 0xaf, 0xbe, 0xa3, 0x17, 0xb5, 0xa2, 0xe8, 0x9c, 0x0b, 0xd9, 0x0c, 0xcf, 0x5d, 0x7f, 0xd0, 0xed, 0x57, 0xfe, 0x58, 0x5e, 0x4b, 0xe3, 0x27, 0x1b, 0x0a, 0x6b, 0xf0, 0xf5, 0x78, 0x6b, 0x0f, 0x26 }, + { 0xf1, 0xb0, 0x15, 0x58, 0xce, 0x54, 0x12, 0x62, 0xf5, 0xec, 0x34, 0x29, 0x9d, 0x6f, 0xb4, 0x09, 0x00, 0x09, 0xe3, 0x43, 0x4b, 0xe2, 0xf4, 0x91, 0x05, 0xcf, 0x46, 0xaf, 0x4d, 0x2d, 0x41, 0x24 }, + { 0x13, 0xa0, 0xa0, 0xc8, 0x63, 0x35, 0x63, 0x5e, 0xaa, 0x74, 0xca, 0x2d, 0x5d, 0x48, 0x8c, 0x79, 0x7b, 0xbb, 0x4f, 0x47, 0xdc, 0x07, 0x10, 0x50, 0x15, 0xed, 0x6a, 0x1f, 0x33, 0x09, 0xef, 0xce }, + { 0x15, 0x80, 0xaf, 0xee, 0xbe, 0xbb, 0x34, 0x6f, 0x94, 0xd5, 0x9f, 0xe6, 0x2d, 0xa0, 0xb7, 0x92, 0x37, 0xea, 0xd7, 0xb1, 0x49, 0x1f, 0x56, 0x67, 0xa9, 0x0e, 0x45, 0xed, 0xf6, 0xca, 0x8b, 0x03 }, + { 0x20, 0xbe, 0x1a, 0x87, 0x5b, 0x38, 0xc5, 0x73, 0xdd, 0x7f, 0xaa, 0xa0, 0xde, 0x48, 0x9d, 0x65, 0x5c, 0x11, 0xef, 0xb6, 0xa5, 0x52, 0x69, 0x8e, 0x07, 0xa2, 0xd3, 0x31, 0xb5, 0xf6, 0x55, 0xc3 }, + { 0xbe, 0x1f, 0xe3, 0xc4, 0xc0, 0x40, 0x18, 0xc5, 0x4c, 0x4a, 0x0f, 0x6b, 0x9a, 0x2e, 0xd3, 0xc5, 0x3a, 0xbe, 0x3a, 0x9f, 0x76, 0xb4, 0xd2, 0x6d, 0xe5, 0x6f, 0xc9, 0xae, 0x95, 0x05, 0x9a, 0x99 }, + { 0xe3, 0xe3, 0xac, 0xe5, 0x37, 0xeb, 0x3e, 0xdd, 0x84, 0x63, 0xd9, 0xad, 0x35, 0x82, 0xe1, 0x3c, 0xf8, 0x65, 0x33, 0xff, 0xde, 0x43, 0xd6, 0x68, 0xdd, 0x2e, 0x93, 0xbb, 0xdb, 0xd7, 0x19, 0x5a }, + { 0x11, 0x0c, 0x50, 0xc0, 0xbf, 0x2c, 0x6e, 0x7a, 0xeb, 0x7e, 0x43, 0x5d, 0x92, 0xd1, 0x32, 0xab, 0x66, 0x55, 0x16, 0x8e, 0x78, 0xa2, 0xde, 0xcd, 0xec, 0x33, 0x30, 0x77, 0x76, 0x84, 0xd9, 0xc1 }, + { 0xe9, 0xba, 0x8f, 0x50, 0x5c, 0x9c, 0x80, 0xc0, 0x86, 0x66, 0xa7, 0x01, 0xf3, 0x36, 0x7e, 0x6c, 0xc6, 0x65, 0xf3, 0x4b, 0x22, 0xe7, 0x3c, 0x3c, 0x04, 0x17, 0xeb, 0x1c, 0x22, 0x06, 0x08, 0x2f }, + { 0x26, 0xcd, 0x66, 0xfc, 0xa0, 0x23, 0x79, 0xc7, 0x6d, 0xf1, 0x23, 0x17, 0x05, 0x2b, 0xca, 0xfd, 0x6c, 0xd8, 0xc3, 0xa7, 0xb8, 0x90, 0xd8, 0x05, 0xf3, 0x6c, 0x49, 0x98, 0x97, 0x82, 0x43, 0x3a }, + { 0x21, 0x3f, 0x35, 0x96, 0xd6, 0xe3, 0xa5, 0xd0, 0xe9, 0x93, 0x2c, 0xd2, 0x15, 0x91, 0x46, 0x01, 0x5e, 0x2a, 0xbc, 0x94, 0x9f, 0x47, 0x29, 0xee, 0x26, 0x32, 0xfe, 0x1e, 0xdb, 0x78, 0xd3, 0x37 }, + { 0x10, 0x15, 0xd7, 0x01, 0x08, 0xe0, 0x3b, 0xe1, 0xc7, 0x02, 0xfe, 0x97, 0x25, 0x36, 0x07, 0xd1, 0x4a, 0xee, 0x59, 0x1f, 0x24, 0x13, 0xea, 0x67, 0x87, 0x42, 0x7b, 0x64, 0x59, 0xff, 0x21, 0x9a }, + { 0x3c, 0xa9, 0x89, 0xde, 0x10, 0xcf, 0xe6, 0x09, 0x90, 0x94, 0x72, 0xc8, 0xd3, 0x56, 0x10, 0x80, 0x5b, 0x2f, 0x97, 0x77, 0x34, 0xcf, 0x65, 0x2c, 0xc6, 0x4b, 0x3b, 0xfc, 0x88, 0x2d, 0x5d, 0x89 }, + { 0xb6, 0x15, 0x6f, 0x72, 0xd3, 0x80, 0xee, 0x9e, 0xa6, 0xac, 0xd1, 0x90, 0x46, 0x4f, 0x23, 0x07, 0xa5, 0xc1, 0x79, 0xef, 0x01, 0xfd, 0x71, 0xf9, 0x9f, 0x2d, 0x0f, 0x7a, 0x57, 0x36, 0x0a, 0xea }, + { 0xc0, 0x3b, 0xc6, 0x42, 0xb2, 0x09, 0x59, 0xcb, 0xe1, 0x33, 0xa0, 0x30, 0x3e, 0x0c, 0x1a, 0xbf, 0xf3, 0xe3, 0x1e, 0xc8, 0xe1, 0xa3, 0x28, 0xec, 0x85, 0x65, 0xc3, 0x6d, 0xec, 0xff, 0x52, 0x65 }, + { 0x2c, 0x3e, 0x08, 0x17, 0x6f, 0x76, 0x0c, 0x62, 0x64, 0xc3, 0xa2, 0xcd, 0x66, 0xfe, 0xc6, 0xc3, 0xd7, 0x8d, 0xe4, 0x3f, 0xc1, 0x92, 0x45, 0x7b, 0x2a, 0x4a, 0x66, 0x0a, 0x1e, 0x0e, 0xb2, 0x2b }, + { 0xf7, 0x38, 0xc0, 0x2f, 0x3c, 0x1b, 0x19, 0x0c, 0x51, 0x2b, 0x1a, 0x32, 0xde, 0xab, 0xf3, 0x53, 0x72, 0x8e, 0x0e, 0x9a, 0xb0, 0x34, 0x49, 0x0e, 0x3c, 0x34, 0x09, 0x94, 0x6a, 0x97, 0xae, 0xec }, + { 0x8b, 0x18, 0x80, 0xdf, 0x30, 0x1c, 0xc9, 0x63, 0x41, 0x88, 0x11, 0x08, 0x89, 0x64, 0x83, 0x92, 0x87, 0xff, 0x7f, 0xe3, 0x1c, 0x49, 0xea, 0x6e, 0xbd, 0x9e, 0x48, 0xbd, 0xee, 0xe4, 0x97, 0xc5 }, + { 0x1e, 0x75, 0xcb, 0x21, 0xc6, 0x09, 0x89, 0x02, 0x03, 0x75, 0xf1, 0xa7, 0xa2, 0x42, 0x83, 0x9f, 0x0b, 0x0b, 0x68, 0x97, 0x3a, 0x4c, 0x2a, 0x05, 0xcf, 0x75, 0x55, 0xed, 0x5a, 0xae, 0xc4, 0xc1 }, + { 0x62, 0xbf, 0x8a, 0x9c, 0x32, 0xa5, 0xbc, 0xcf, 0x29, 0x0b, 0x6c, 0x47, 0x4d, 0x75, 0xb2, 0xa2, 0xa4, 0x09, 0x3f, 0x1a, 0x9e, 0x27, 0x13, 0x94, 0x33, 0xa8, 0xf2, 0xb3, 0xbc, 0xe7, 0xb8, 0xd7 }, + { 0x16, 0x6c, 0x83, 0x50, 0xd3, 0x17, 0x3b, 0x5e, 0x70, 0x2b, 0x78, 0x3d, 0xfd, 0x33, 0xc6, 0x6e, 0xe0, 0x43, 0x27, 0x42, 0xe9, 0xb9, 0x2b, 0x99, 0x7f, 0xd2, 0x3c, 0x60, 0xdc, 0x67, 0x56, 0xca }, + { 0x04, 0x4a, 0x14, 0xd8, 0x22, 0xa9, 0x0c, 0xac, 0xf2, 0xf5, 0xa1, 0x01, 0x42, 0x8a, 0xdc, 0x8f, 0x41, 0x09, 0x38, 0x6c, 0xcb, 0x15, 0x8b, 0xf9, 0x05, 0xc8, 0x61, 0x8b, 0x8e, 0xe2, 0x4e, 0xc3 }, + { 0x38, 0x7d, 0x39, 0x7e, 0xa4, 0x3a, 0x99, 0x4b, 0xe8, 0x4d, 0x2d, 0x54, 0x4a, 0xfb, 0xe4, 0x81, 0xa2, 0x00, 0x0f, 0x55, 0x25, 0x26, 0x96, 0xbb, 0xa2, 0xc5, 0x0c, 0x8e, 0xbd, 0x10, 0x13, 0x47 }, + { 0x56, 0xf8, 0xcc, 0xf1, 0xf8, 0x64, 0x09, 0xb4, 0x6c, 0xe3, 0x61, 0x66, 0xae, 0x91, 0x65, 0x13, 0x84, 0x41, 0x57, 0x75, 0x89, 0xdb, 0x08, 0xcb, 0xc5, 0xf6, 0x6c, 0xa2, 0x97, 0x43, 0xb9, 0xfd }, + { 0x97, 0x06, 0xc0, 0x92, 0xb0, 0x4d, 0x91, 0xf5, 0x3d, 0xff, 0x91, 0xfa, 0x37, 0xb7, 0x49, 0x3d, 0x28, 0xb5, 0x76, 0xb5, 0xd7, 0x10, 0x46, 0x9d, 0xf7, 0x94, 0x01, 0x66, 0x22, 0x36, 0xfc, 0x03 }, + { 0x87, 0x79, 0x68, 0x68, 0x6c, 0x06, 0x8c, 0xe2, 0xf7, 0xe2, 0xad, 0xcf, 0xf6, 0x8b, 0xf8, 0x74, 0x8e, 0xdf, 0x3c, 0xf8, 0x62, 0xcf, 0xb4, 0xd3, 0x94, 0x7a, 0x31, 0x06, 0x95, 0x80, 0x54, 0xe3 }, + { 0x88, 0x17, 0xe5, 0x71, 0x98, 0x79, 0xac, 0xf7, 0x02, 0x47, 0x87, 0xec, 0xcd, 0xb2, 0x71, 0x03, 0x55, 0x66, 0xcf, 0xa3, 0x33, 0xe0, 0x49, 0x40, 0x7c, 0x01, 0x78, 0xcc, 0xc5, 0x7a, 0x5b, 0x9f }, + { 0x89, 0x38, 0x24, 0x9e, 0x4b, 0x50, 0xca, 0xda, 0xcc, 0xdf, 0x5b, 0x18, 0x62, 0x13, 0x26, 0xcb, 0xb1, 0x52, 0x53, 0xe3, 0x3a, 0x20, 0xf5, 0x63, 0x6e, 0x99, 0x5d, 0x72, 0x47, 0x8d, 0xe4, 0x72 }, + { 0xf1, 0x64, 0xab, 0xba, 0x49, 0x63, 0xa4, 0x4d, 0x10, 0x72, 0x57, 0xe3, 0x23, 0x2d, 0x90, 0xac, 0xa5, 0xe6, 0x6a, 0x14, 0x08, 0x24, 0x8c, 0x51, 0x74, 0x1e, 0x99, 0x1d, 0xb5, 0x22, 0x77, 0x56 }, + { 0xd0, 0x55, 0x63, 0xe2, 0xb1, 0xcb, 0xa0, 0xc4, 0xa2, 0xa1, 0xe8, 0xbd, 0xe3, 0xa1, 0xa0, 0xd9, 0xf5, 0xb4, 0x0c, 0x85, 0xa0, 0x70, 0xd6, 0xf5, 0xfb, 0x21, 0x06, 0x6e, 0xad, 0x5d, 0x06, 0x01 }, + { 0x03, 0xfb, 0xb1, 0x63, 0x84, 0xf0, 0xa3, 0x86, 0x6f, 0x4c, 0x31, 0x17, 0x87, 0x76, 0x66, 0xef, 0xbf, 0x12, 0x45, 0x97, 0x56, 0x4b, 0x29, 0x3d, 0x4a, 0xab, 0x0d, 0x26, 0x9f, 0xab, 0xdd, 0xfa }, + { 0x5f, 0xa8, 0x48, 0x6a, 0xc0, 0xe5, 0x29, 0x64, 0xd1, 0x88, 0x1b, 0xbe, 0x33, 0x8e, 0xb5, 0x4b, 0xe2, 0xf7, 0x19, 0x54, 0x92, 0x24, 0x89, 0x20, 0x57, 0xb4, 0xda, 0x04, 0xba, 0x8b, 0x34, 0x75 }, + { 0xcd, 0xfa, 0xbc, 0xee, 0x46, 0x91, 0x11, 0x11, 0x23, 0x6a, 0x31, 0x70, 0x8b, 0x25, 0x39, 0xd7, 0x1f, 0xc2, 0x11, 0xd9, 0xb0, 0x9c, 0x0d, 0x85, 0x30, 0xa1, 0x1e, 0x1d, 0xbf, 0x6e, 0xed, 0x01 }, + { 0x4f, 0x82, 0xde, 0x03, 0xb9, 0x50, 0x47, 0x93, 0xb8, 0x2a, 0x07, 0xa0, 0xbd, 0xcd, 0xff, 0x31, 0x4d, 0x75, 0x9e, 0x7b, 0x62, 0xd2, 0x6b, 0x78, 0x49, 0x46, 0xb0, 0xd3, 0x6f, 0x91, 0x6f, 0x52 }, + { 0x25, 0x9e, 0xc7, 0xf1, 0x73, 0xbc, 0xc7, 0x6a, 0x09, 0x94, 0xc9, 0x67, 0xb4, 0xf5, 0xf0, 0x24, 0xc5, 0x60, 0x57, 0xfb, 0x79, 0xc9, 0x65, 0xc4, 0xfa, 0xe4, 0x18, 0x75, 0xf0, 0x6a, 0x0e, 0x4c }, + { 0x19, 0x3c, 0xc8, 0xe7, 0xc3, 0xe0, 0x8b, 0xb3, 0x0f, 0x54, 0x37, 0xaa, 0x27, 0xad, 0xe1, 0xf1, 0x42, 0x36, 0x9b, 0x24, 0x6a, 0x67, 0x5b, 0x23, 0x83, 0xe6, 0xda, 0x9b, 0x49, 0xa9, 0x80, 0x9e }, + { 0x5c, 0x10, 0x89, 0x6f, 0x0e, 0x28, 0x56, 0xb2, 0xa2, 0xee, 0xe0, 0xfe, 0x4a, 0x2c, 0x16, 0x33, 0x56, 0x5d, 0x18, 0xf0, 0xe9, 0x3e, 0x1f, 0xab, 0x26, 0xc3, 0x73, 0xe8, 0xf8, 0x29, 0x65, 0x4d }, + { 0xf1, 0x60, 0x12, 0xd9, 0x3f, 0x28, 0x85, 0x1a, 0x1e, 0xb9, 0x89, 0xf5, 0xd0, 0xb4, 0x3f, 0x3f, 0x39, 0xca, 0x73, 0xc9, 0xa6, 0x2d, 0x51, 0x81, 0xbf, 0xf2, 0x37, 0x53, 0x6b, 0xd3, 0x48, 0xc3 }, + { 0x29, 0x66, 0xb3, 0xcf, 0xae, 0x1e, 0x44, 0xea, 0x99, 0x6d, 0xc5, 0xd6, 0x86, 0xcf, 0x25, 0xfa, 0x05, 0x3f, 0xb6, 0xf6, 0x72, 0x01, 0xb9, 0xe4, 0x6e, 0xad, 0xe8, 0x5d, 0x0a, 0xd6, 0xb8, 0x06 }, + { 0xdd, 0xb8, 0x78, 0x24, 0x85, 0xe9, 0x00, 0xbc, 0x60, 0xbc, 0xf4, 0xc3, 0x3a, 0x6f, 0xd5, 0x85, 0x68, 0x0c, 0xc6, 0x83, 0xd5, 0x16, 0xef, 0xa0, 0x3e, 0xb9, 0x98, 0x5f, 0xad, 0x87, 0x15, 0xfb }, + { 0x4c, 0x4d, 0x6e, 0x71, 0xae, 0xa0, 0x57, 0x86, 0x41, 0x31, 0x48, 0xfc, 0x7a, 0x78, 0x6b, 0x0e, 0xca, 0xf5, 0x82, 0xcf, 0xf1, 0x20, 0x9f, 0x5a, 0x80, 0x9f, 0xba, 0x85, 0x04, 0xce, 0x66, 0x2c }, + { 0xfb, 0x4c, 0x5e, 0x86, 0xd7, 0xb2, 0x22, 0x9b, 0x99, 0xb8, 0xba, 0x6d, 0x94, 0xc2, 0x47, 0xef, 0x96, 0x4a, 0xa3, 0xa2, 0xba, 0xe8, 0xed, 0xc7, 0x75, 0x69, 0xf2, 0x8d, 0xbb, 0xff, 0x2d, 0x4e }, + { 0xe9, 0x4f, 0x52, 0x6d, 0xe9, 0x01, 0x96, 0x33, 0xec, 0xd5, 0x4a, 0xc6, 0x12, 0x0f, 0x23, 0x95, 0x8d, 0x77, 0x18, 0xf1, 0xe7, 0x71, 0x7b, 0xf3, 0x29, 0x21, 0x1a, 0x4f, 0xae, 0xed, 0x4e, 0x6d }, + { 0xcb, 0xd6, 0x66, 0x0a, 0x10, 0xdb, 0x3f, 0x23, 0xf7, 0xa0, 0x3d, 0x4b, 0x9d, 0x40, 0x44, 0xc7, 0x93, 0x2b, 0x28, 0x01, 0xac, 0x89, 0xd6, 0x0b, 0xc9, 0xeb, 0x92, 0xd6, 0x5a, 0x46, 0xc2, 0xa0 }, + { 0x88, 0x18, 0xbb, 0xd3, 0xdb, 0x4d, 0xc1, 0x23, 0xb2, 0x5c, 0xbb, 0xa5, 0xf5, 0x4c, 0x2b, 0xc4, 0xb3, 0xfc, 0xf9, 0xbf, 0x7d, 0x7a, 0x77, 0x09, 0xf4, 0xae, 0x58, 0x8b, 0x26, 0x7c, 0x4e, 0xce }, + { 0xc6, 0x53, 0x82, 0x51, 0x3f, 0x07, 0x46, 0x0d, 0xa3, 0x98, 0x33, 0xcb, 0x66, 0x6c, 0x5e, 0xd8, 0x2e, 0x61, 0xb9, 0xe9, 0x98, 0xf4, 0xb0, 0xc4, 0x28, 0x7c, 0xee, 0x56, 0xc3, 0xcc, 0x9b, 0xcd }, + { 0x89, 0x75, 0xb0, 0x57, 0x7f, 0xd3, 0x55, 0x66, 0xd7, 0x50, 0xb3, 0x62, 0xb0, 0x89, 0x7a, 0x26, 0xc3, 0x99, 0x13, 0x6d, 0xf0, 0x7b, 0xab, 0xab, 0xbd, 0xe6, 0x20, 0x3f, 0xf2, 0x95, 0x4e, 0xd4 }, + { 0x21, 0xfe, 0x0c, 0xeb, 0x00, 0x52, 0xbe, 0x7f, 0xb0, 0xf0, 0x04, 0x18, 0x7c, 0xac, 0xd7, 0xde, 0x67, 0xfa, 0x6e, 0xb0, 0x93, 0x8d, 0x92, 0x76, 0x77, 0xf2, 0x39, 0x8c, 0x13, 0x23, 0x17, 0xa8 }, + { 0x2e, 0xf7, 0x3f, 0x3c, 0x26, 0xf1, 0x2d, 0x93, 0x88, 0x9f, 0x3c, 0x78, 0xb6, 0xa6, 0x6c, 0x1d, 0x52, 0xb6, 0x49, 0xdc, 0x9e, 0x85, 0x6e, 0x2c, 0x17, 0x2e, 0xa7, 0xc5, 0x8a, 0xc2, 0xb5, 0xe3 }, + { 0x38, 0x8a, 0x3c, 0xd5, 0x6d, 0x73, 0x86, 0x7a, 0xbb, 0x5f, 0x84, 0x01, 0x49, 0x2b, 0x6e, 0x26, 0x81, 0xeb, 0x69, 0x85, 0x1e, 0x76, 0x7f, 0xd8, 0x42, 0x10, 0xa5, 0x60, 0x76, 0xfb, 0x3d, 0xd3 }, + { 0xaf, 0x53, 0x3e, 0x02, 0x2f, 0xc9, 0x43, 0x9e, 0x4e, 0x3c, 0xb8, 0x38, 0xec, 0xd1, 0x86, 0x92, 0x23, 0x2a, 0xdf, 0x6f, 0xe9, 0x83, 0x95, 0x26, 0xd3, 0xc3, 0xdd, 0x1b, 0x71, 0x91, 0x0b, 0x1a }, + { 0x75, 0x1c, 0x09, 0xd4, 0x1a, 0x93, 0x43, 0x88, 0x2a, 0x81, 0xcd, 0x13, 0xee, 0x40, 0x81, 0x8d, 0x12, 0xeb, 0x44, 0xc6, 0xc7, 0xf4, 0x0d, 0xf1, 0x6e, 0x4a, 0xea, 0x8f, 0xab, 0x91, 0x97, 0x2a }, + { 0x5b, 0x73, 0xdd, 0xb6, 0x8d, 0x9d, 0x2b, 0x0a, 0xa2, 0x65, 0xa0, 0x79, 0x88, 0xd6, 0xb8, 0x8a, 0xe9, 0xaa, 0xc5, 0x82, 0xaf, 0x83, 0x03, 0x2f, 0x8a, 0x9b, 0x21, 0xa2, 0xe1, 0xb7, 0xbf, 0x18 }, + { 0x3d, 0xa2, 0x91, 0x26, 0xc7, 0xc5, 0xd7, 0xf4, 0x3e, 0x64, 0x24, 0x2a, 0x79, 0xfe, 0xaa, 0x4e, 0xf3, 0x45, 0x9c, 0xde, 0xcc, 0xc8, 0x98, 0xed, 0x59, 0xa9, 0x7f, 0x6e, 0xc9, 0x3b, 0x9d, 0xab }, + { 0x56, 0x6d, 0xc9, 0x20, 0x29, 0x3d, 0xa5, 0xcb, 0x4f, 0xe0, 0xaa, 0x8a, 0xbd, 0xa8, 0xbb, 0xf5, 0x6f, 0x55, 0x23, 0x13, 0xbf, 0xf1, 0x90, 0x46, 0x64, 0x1e, 0x36, 0x15, 0xc1, 0xe3, 0xed, 0x3f }, + { 0x41, 0x15, 0xbe, 0xa0, 0x2f, 0x73, 0xf9, 0x7f, 0x62, 0x9e, 0x5c, 0x55, 0x90, 0x72, 0x0c, 0x01, 0xe7, 0xe4, 0x49, 0xae, 0x2a, 0x66, 0x97, 0xd4, 0xd2, 0x78, 0x33, 0x21, 0x30, 0x36, 0x92, 0xf9 }, + { 0x4c, 0xe0, 0x8f, 0x47, 0x62, 0x46, 0x8a, 0x76, 0x70, 0x01, 0x21, 0x64, 0x87, 0x8d, 0x68, 0x34, 0x0c, 0x52, 0xa3, 0x5e, 0x66, 0xc1, 0x88, 0x4d, 0x5c, 0x86, 0x48, 0x89, 0xab, 0xc9, 0x66, 0x77 }, + { 0x81, 0xea, 0x0b, 0x78, 0x04, 0x12, 0x4e, 0x0c, 0x22, 0xea, 0x5f, 0xc7, 0x11, 0x04, 0xa2, 0xaf, 0xcb, 0x52, 0xa1, 0xfa, 0x81, 0x6f, 0x3e, 0xcb, 0x7d, 0xcb, 0x5d, 0x9d, 0xea, 0x17, 0x86, 0xd0 }, + { 0xfe, 0x36, 0x27, 0x33, 0xb0, 0x5f, 0x6b, 0xed, 0xaf, 0x93, 0x79, 0xd7, 0xf7, 0x93, 0x6e, 0xde, 0x20, 0x9b, 0x1f, 0x83, 0x23, 0xc3, 0x92, 0x25, 0x49, 0xd9, 0xe7, 0x36, 0x81, 0xb5, 0xdb, 0x7b }, + { 0xef, 0xf3, 0x7d, 0x30, 0xdf, 0xd2, 0x03, 0x59, 0xbe, 0x4e, 0x73, 0xfd, 0xf4, 0x0d, 0x27, 0x73, 0x4b, 0x3d, 0xf9, 0x0a, 0x97, 0xa5, 0x5e, 0xd7, 0x45, 0x29, 0x72, 0x94, 0xca, 0x85, 0xd0, 0x9f }, + { 0x17, 0x2f, 0xfc, 0x67, 0x15, 0x3d, 0x12, 0xe0, 0xca, 0x76, 0xa8, 0xb6, 0xcd, 0x5d, 0x47, 0x31, 0x88, 0x5b, 0x39, 0xce, 0x0c, 0xac, 0x93, 0xa8, 0x97, 0x2a, 0x18, 0x00, 0x6c, 0x8b, 0x8b, 0xaf }, + { 0xc4, 0x79, 0x57, 0xf1, 0xcc, 0x88, 0xe8, 0x3e, 0xf9, 0x44, 0x58, 0x39, 0x70, 0x9a, 0x48, 0x0a, 0x03, 0x6b, 0xed, 0x5f, 0x88, 0xac, 0x0f, 0xcc, 0x8e, 0x1e, 0x70, 0x3f, 0xfa, 0xac, 0x13, 0x2c }, + { 0x30, 0xf3, 0x54, 0x83, 0x70, 0xcf, 0xdc, 0xed, 0xa5, 0xc3, 0x7b, 0x56, 0x9b, 0x61, 0x75, 0xe7, 0x99, 0xee, 0xf1, 0xa6, 0x2a, 0xaa, 0x94, 0x32, 0x45, 0xae, 0x76, 0x69, 0xc2, 0x27, 0xa7, 0xb5 }, + { 0xc9, 0x5d, 0xcb, 0x3c, 0xf1, 0xf2, 0x7d, 0x0e, 0xef, 0x2f, 0x25, 0xd2, 0x41, 0x38, 0x70, 0x90, 0x4a, 0x87, 0x7c, 0x4a, 0x56, 0xc2, 0xde, 0x1e, 0x83, 0xe2, 0xbc, 0x2a, 0xe2, 0xe4, 0x68, 0x21 }, + { 0xd5, 0xd0, 0xb5, 0xd7, 0x05, 0x43, 0x4c, 0xd4, 0x6b, 0x18, 0x57, 0x49, 0xf6, 0x6b, 0xfb, 0x58, 0x36, 0xdc, 0xdf, 0x6e, 0xe5, 0x49, 0xa2, 0xb7, 0xa4, 0xae, 0xe7, 0xf5, 0x80, 0x07, 0xca, 0xaf }, + { 0xbb, 0xc1, 0x24, 0xa7, 0x12, 0xf1, 0x5d, 0x07, 0xc3, 0x00, 0xe0, 0x5b, 0x66, 0x83, 0x89, 0xa4, 0x39, 0xc9, 0x17, 0x77, 0xf7, 0x21, 0xf8, 0x32, 0x0c, 0x1c, 0x90, 0x78, 0x06, 0x6d, 0x2c, 0x7e }, + { 0xa4, 0x51, 0xb4, 0x8c, 0x35, 0xa6, 0xc7, 0x85, 0x4c, 0xfa, 0xae, 0x60, 0x26, 0x2e, 0x76, 0x99, 0x08, 0x16, 0x38, 0x2a, 0xc0, 0x66, 0x7e, 0x5a, 0x5c, 0x9e, 0x1b, 0x46, 0xc4, 0x34, 0x2d, 0xdf }, + { 0xb0, 0xd1, 0x50, 0xfb, 0x55, 0xe7, 0x78, 0xd0, 0x11, 0x47, 0xf0, 0xb5, 0xd8, 0x9d, 0x99, 0xec, 0xb2, 0x0f, 0xf0, 0x7e, 0x5e, 0x67, 0x60, 0xd6, 0xb6, 0x45, 0xeb, 0x5b, 0x65, 0x4c, 0x62, 0x2b }, + { 0x34, 0xf7, 0x37, 0xc0, 0xab, 0x21, 0x99, 0x51, 0xee, 0xe8, 0x9a, 0x9f, 0x8d, 0xac, 0x29, 0x9c, 0x9d, 0x4c, 0x38, 0xf3, 0x3f, 0xa4, 0x94, 0xc5, 0xc6, 0xee, 0xfc, 0x92, 0xb6, 0xdb, 0x08, 0xbc }, + { 0x1a, 0x62, 0xcc, 0x3a, 0x00, 0x80, 0x0d, 0xcb, 0xd9, 0x98, 0x91, 0x08, 0x0c, 0x1e, 0x09, 0x84, 0x58, 0x19, 0x3a, 0x8c, 0xc9, 0xf9, 0x70, 0xea, 0x99, 0xfb, 0xef, 0xf0, 0x03, 0x18, 0xc2, 0x89 }, + { 0xcf, 0xce, 0x55, 0xeb, 0xaf, 0xc8, 0x40, 0xd7, 0xae, 0x48, 0x28, 0x1c, 0x7f, 0xd5, 0x7e, 0xc8, 0xb4, 0x82, 0xd4, 0xb7, 0x04, 0x43, 0x74, 0x95, 0x49, 0x5a, 0xc4, 0x14, 0xcf, 0x4a, 0x37, 0x4b }, + { 0x67, 0x46, 0xfa, 0xcf, 0x71, 0x14, 0x6d, 0x99, 0x9d, 0xab, 0xd0, 0x5d, 0x09, 0x3a, 0xe5, 0x86, 0x64, 0x8d, 0x1e, 0xe2, 0x8e, 0x72, 0x61, 0x7b, 0x99, 0xd0, 0xf0, 0x08, 0x6e, 0x1e, 0x45, 0xbf }, + { 0x57, 0x1c, 0xed, 0x28, 0x3b, 0x3f, 0x23, 0xb4, 0xe7, 0x50, 0xbf, 0x12, 0xa2, 0xca, 0xf1, 0x78, 0x18, 0x47, 0xbd, 0x89, 0x0e, 0x43, 0x60, 0x3c, 0xdc, 0x59, 0x76, 0x10, 0x2b, 0x7b, 0xb1, 0x1b }, + { 0xcf, 0xcb, 0x76, 0x5b, 0x04, 0x8e, 0x35, 0x02, 0x2c, 0x5d, 0x08, 0x9d, 0x26, 0xe8, 0x5a, 0x36, 0xb0, 0x05, 0xa2, 0xb8, 0x04, 0x93, 0xd0, 0x3a, 0x14, 0x4e, 0x09, 0xf4, 0x09, 0xb6, 0xaf, 0xd1 }, + { 0x40, 0x50, 0xc7, 0xa2, 0x77, 0x05, 0xbb, 0x27, 0xf4, 0x20, 0x89, 0xb2, 0x99, 0xf3, 0xcb, 0xe5, 0x05, 0x4e, 0xad, 0x68, 0x72, 0x7e, 0x8e, 0xf9, 0x31, 0x8c, 0xe6, 0xf2, 0x5c, 0xd6, 0xf3, 0x1d }, + { 0x18, 0x40, 0x70, 0xbd, 0x5d, 0x26, 0x5f, 0xbd, 0xc1, 0x42, 0xcd, 0x1c, 0x5c, 0xd0, 0xd7, 0xe4, 0x14, 0xe7, 0x03, 0x69, 0xa2, 0x66, 0xd6, 0x27, 0xc8, 0xfb, 0xa8, 0x4f, 0xa5, 0xe8, 0x4c, 0x34 }, + { 0x9e, 0xdd, 0xa9, 0xa4, 0x44, 0x39, 0x02, 0xa9, 0x58, 0x8c, 0x0d, 0x0c, 0xcc, 0x62, 0xb9, 0x30, 0x21, 0x84, 0x79, 0xa6, 0x84, 0x1e, 0x6f, 0xe7, 0xd4, 0x30, 0x03, 0xf0, 0x4b, 0x1f, 0xd6, 0x43 }, + { 0xe4, 0x12, 0xfe, 0xef, 0x79, 0x08, 0x32, 0x4a, 0x6d, 0xa1, 0x84, 0x16, 0x29, 0xf3, 0x5d, 0x3d, 0x35, 0x86, 0x42, 0x01, 0x93, 0x10, 0xec, 0x57, 0xc6, 0x14, 0x83, 0x6b, 0x63, 0xd3, 0x07, 0x63 }, + { 0x1a, 0x2b, 0x8e, 0xdf, 0xf3, 0xf9, 0xac, 0xc1, 0x55, 0x4f, 0xcb, 0xae, 0x3c, 0xf1, 0xd6, 0x29, 0x8c, 0x64, 0x62, 0xe2, 0x2e, 0x5e, 0xb0, 0x25, 0x96, 0x84, 0xf8, 0x35, 0x01, 0x2b, 0xd1, 0x3f }, + { 0x28, 0x8c, 0x4a, 0xd9, 0xb9, 0x40, 0x97, 0x62, 0xea, 0x07, 0xc2, 0x4a, 0x41, 0xf0, 0x4f, 0x69, 0xa7, 0xd7, 0x4b, 0xee, 0x2d, 0x95, 0x43, 0x53, 0x74, 0xbd, 0xe9, 0x46, 0xd7, 0x24, 0x1c, 0x7b }, + { 0x80, 0x56, 0x91, 0xbb, 0x28, 0x67, 0x48, 0xcf, 0xb5, 0x91, 0xd3, 0xae, 0xbe, 0x7e, 0x6f, 0x4e, 0x4d, 0xc6, 0xe2, 0x80, 0x8c, 0x65, 0x14, 0x3c, 0xc0, 0x04, 0xe4, 0xeb, 0x6f, 0xd0, 0x9d, 0x43 }, + { 0xd4, 0xac, 0x8d, 0x3a, 0x0a, 0xfc, 0x6c, 0xfa, 0x7b, 0x46, 0x0a, 0xe3, 0x00, 0x1b, 0xae, 0xb3, 0x6d, 0xad, 0xb3, 0x7d, 0xa0, 0x7d, 0x2e, 0x8a, 0xc9, 0x18, 0x22, 0xdf, 0x34, 0x8a, 0xed, 0x3d }, + { 0xc3, 0x76, 0x61, 0x70, 0x14, 0xd2, 0x01, 0x58, 0xbc, 0xed, 0x3d, 0x3b, 0xa5, 0x52, 0xb6, 0xec, 0xcf, 0x84, 0xe6, 0x2a, 0xa3, 0xeb, 0x65, 0x0e, 0x90, 0x02, 0x9c, 0x84, 0xd1, 0x3e, 0xea, 0x69 }, + { 0xc4, 0x1f, 0x09, 0xf4, 0x3c, 0xec, 0xae, 0x72, 0x93, 0xd6, 0x00, 0x7c, 0xa0, 0xa3, 0x57, 0x08, 0x7d, 0x5a, 0xe5, 0x9b, 0xe5, 0x00, 0xc1, 0xcd, 0x5b, 0x28, 0x9e, 0xe8, 0x10, 0xc7, 0xb0, 0x82 }, + { 0x03, 0xd1, 0xce, 0xd1, 0xfb, 0xa5, 0xc3, 0x91, 0x55, 0xc4, 0x4b, 0x77, 0x65, 0xcb, 0x76, 0x0c, 0x78, 0x70, 0x8d, 0xcf, 0xc8, 0x0b, 0x0b, 0xd8, 0xad, 0xe3, 0xa5, 0x6d, 0xa8, 0x83, 0x0b, 0x29 }, + { 0x09, 0xbd, 0xe6, 0xf1, 0x52, 0x21, 0x8d, 0xc9, 0x2c, 0x41, 0xd7, 0xf4, 0x53, 0x87, 0xe6, 0x3e, 0x58, 0x69, 0xd8, 0x07, 0xec, 0x70, 0xb8, 0x21, 0x40, 0x5d, 0xbd, 0x88, 0x4b, 0x7f, 0xcf, 0x4b }, + { 0x71, 0xc9, 0x03, 0x6e, 0x18, 0x17, 0x9b, 0x90, 0xb3, 0x7d, 0x39, 0xe9, 0xf0, 0x5e, 0xb8, 0x9c, 0xc5, 0xfc, 0x34, 0x1f, 0xd7, 0xc4, 0x77, 0xd0, 0xd7, 0x49, 0x32, 0x85, 0xfa, 0xca, 0x08, 0xa4 }, + { 0x59, 0x16, 0x83, 0x3e, 0xbb, 0x05, 0xcd, 0x91, 0x9c, 0xa7, 0xfe, 0x83, 0xb6, 0x92, 0xd3, 0x20, 0x5b, 0xef, 0x72, 0x39, 0x2b, 0x2c, 0xf6, 0xbb, 0x0a, 0x6d, 0x43, 0xf9, 0x94, 0xf9, 0x5f, 0x11 }, + { 0xf6, 0x3a, 0xab, 0x3e, 0xc6, 0x41, 0xb3, 0xb0, 0x24, 0x96, 0x4c, 0x2b, 0x43, 0x7c, 0x04, 0xf6, 0x04, 0x3c, 0x4c, 0x7e, 0x02, 0x79, 0x23, 0x99, 0x95, 0x40, 0x19, 0x58, 0xf8, 0x6b, 0xbe, 0x54 }, + { 0xf1, 0x72, 0xb1, 0x80, 0xbf, 0xb0, 0x97, 0x40, 0x49, 0x31, 0x20, 0xb6, 0x32, 0x6c, 0xbd, 0xc5, 0x61, 0xe4, 0x77, 0xde, 0xf9, 0xbb, 0xcf, 0xd2, 0x8c, 0xc8, 0xc1, 0xc5, 0xe3, 0x37, 0x9a, 0x31 }, + { 0xcb, 0x9b, 0x89, 0xcc, 0x18, 0x38, 0x1d, 0xd9, 0x14, 0x1a, 0xde, 0x58, 0x86, 0x54, 0xd4, 0xe6, 0xa2, 0x31, 0xd5, 0xbf, 0x49, 0xd4, 0xd5, 0x9a, 0xc2, 0x7d, 0x86, 0x9c, 0xbe, 0x10, 0x0c, 0xf3 }, + { 0x7b, 0xd8, 0x81, 0x50, 0x46, 0xfd, 0xd8, 0x10, 0xa9, 0x23, 0xe1, 0x98, 0x4a, 0xae, 0xbd, 0xcd, 0xf8, 0x4d, 0x87, 0xc8, 0x99, 0x2d, 0x68, 0xb5, 0xee, 0xb4, 0x60, 0xf9, 0x3e, 0xb3, 0xc8, 0xd7 }, + { 0x60, 0x7b, 0xe6, 0x68, 0x62, 0xfd, 0x08, 0xee, 0x5b, 0x19, 0xfa, 0xca, 0xc0, 0x9d, 0xfd, 0xbc, 0xd4, 0x0c, 0x31, 0x21, 0x01, 0xd6, 0x6e, 0x6e, 0xbd, 0x2b, 0x84, 0x1f, 0x1b, 0x9a, 0x93, 0x25 }, + { 0x9f, 0xe0, 0x3b, 0xbe, 0x69, 0xab, 0x18, 0x34, 0xf5, 0x21, 0x9b, 0x0d, 0xa8, 0x8a, 0x08, 0xb3, 0x0a, 0x66, 0xc5, 0x91, 0x3f, 0x01, 0x51, 0x96, 0x3c, 0x36, 0x05, 0x60, 0xdb, 0x03, 0x87, 0xb3 }, + { 0x90, 0xa8, 0x35, 0x85, 0x71, 0x7b, 0x75, 0xf0, 0xe9, 0xb7, 0x25, 0xe0, 0x55, 0xee, 0xee, 0xb9, 0xe7, 0xa0, 0x28, 0xea, 0x7e, 0x6c, 0xbc, 0x07, 0xb2, 0x09, 0x17, 0xec, 0x03, 0x63, 0xe3, 0x8c }, + { 0x33, 0x6e, 0xa0, 0x53, 0x0f, 0x4a, 0x74, 0x69, 0x12, 0x6e, 0x02, 0x18, 0x58, 0x7e, 0xbb, 0xde, 0x33, 0x58, 0xa0, 0xb3, 0x1c, 0x29, 0xd2, 0x00, 0xf7, 0xdc, 0x7e, 0xb1, 0x5c, 0x6a, 0xad, 0xd8 }, + { 0xa7, 0x9e, 0x76, 0xdc, 0x0a, 0xbc, 0xa4, 0x39, 0x6f, 0x07, 0x47, 0xcd, 0x7b, 0x74, 0x8d, 0xf9, 0x13, 0x00, 0x76, 0x26, 0xb1, 0xd6, 0x59, 0xda, 0x0c, 0x1f, 0x78, 0xb9, 0x30, 0x3d, 0x01, 0xa3 }, + { 0x44, 0xe7, 0x8a, 0x77, 0x37, 0x56, 0xe0, 0x95, 0x15, 0x19, 0x50, 0x4d, 0x70, 0x38, 0xd2, 0x8d, 0x02, 0x13, 0xa3, 0x7e, 0x0c, 0xe3, 0x75, 0x37, 0x17, 0x57, 0xbc, 0x99, 0x63, 0x11, 0xe3, 0xb8 }, + { 0x77, 0xac, 0x01, 0x2a, 0x3f, 0x75, 0x4d, 0xcf, 0xea, 0xb5, 0xeb, 0x99, 0x6b, 0xe9, 0xcd, 0x2d, 0x1f, 0x96, 0x11, 0x1b, 0x6e, 0x49, 0xf3, 0x99, 0x4d, 0xf1, 0x81, 0xf2, 0x85, 0x69, 0xd8, 0x25 }, + { 0xce, 0x5a, 0x10, 0xdb, 0x6f, 0xcc, 0xda, 0xf1, 0x40, 0xaa, 0xa4, 0xde, 0xd6, 0x25, 0x0a, 0x9c, 0x06, 0xe9, 0x22, 0x2b, 0xc9, 0xf9, 0xf3, 0x65, 0x8a, 0x4a, 0xff, 0x93, 0x5f, 0x2b, 0x9f, 0x3a }, + { 0xec, 0xc2, 0x03, 0xa7, 0xfe, 0x2b, 0xe4, 0xab, 0xd5, 0x5b, 0xb5, 0x3e, 0x6e, 0x67, 0x35, 0x72, 0xe0, 0x07, 0x8d, 0xa8, 0xcd, 0x37, 0x5e, 0xf4, 0x30, 0xcc, 0x97, 0xf9, 0xf8, 0x00, 0x83, 0xaf }, + { 0x14, 0xa5, 0x18, 0x6d, 0xe9, 0xd7, 0xa1, 0x8b, 0x04, 0x12, 0xb8, 0x56, 0x3e, 0x51, 0xcc, 0x54, 0x33, 0x84, 0x0b, 0x4a, 0x12, 0x9a, 0x8f, 0xf9, 0x63, 0xb3, 0x3a, 0x3c, 0x4a, 0xfe, 0x8e, 0xbb }, + { 0x13, 0xf8, 0xef, 0x95, 0xcb, 0x86, 0xe6, 0xa6, 0x38, 0x93, 0x1c, 0x8e, 0x10, 0x76, 0x73, 0xeb, 0x76, 0xba, 0x10, 0xd7, 0xc2, 0xcd, 0x70, 0xb9, 0xd9, 0x92, 0x0b, 0xbe, 0xed, 0x92, 0x94, 0x09 }, + { 0x0b, 0x33, 0x8f, 0x4e, 0xe1, 0x2f, 0x2d, 0xfc, 0xb7, 0x87, 0x13, 0x37, 0x79, 0x41, 0xe0, 0xb0, 0x63, 0x21, 0x52, 0x58, 0x1d, 0x13, 0x32, 0x51, 0x6e, 0x4a, 0x2c, 0xab, 0x19, 0x42, 0xcc, 0xa4 }, + { 0xea, 0xab, 0x0e, 0xc3, 0x7b, 0x3b, 0x8a, 0xb7, 0x96, 0xe9, 0xf5, 0x72, 0x38, 0xde, 0x14, 0xa2, 0x64, 0xa0, 0x76, 0xf3, 0x88, 0x7d, 0x86, 0xe2, 0x9b, 0xb5, 0x90, 0x6d, 0xb5, 0xa0, 0x0e, 0x02 }, + { 0x23, 0xcb, 0x68, 0xb8, 0xc0, 0xe6, 0xdc, 0x26, 0xdc, 0x27, 0x76, 0x6d, 0xdc, 0x0a, 0x13, 0xa9, 0x94, 0x38, 0xfd, 0x55, 0x61, 0x7a, 0xa4, 0x09, 0x5d, 0x8f, 0x96, 0x97, 0x20, 0xc8, 0x72, 0xdf }, + { 0x09, 0x1d, 0x8e, 0xe3, 0x0d, 0x6f, 0x29, 0x68, 0xd4, 0x6b, 0x68, 0x7d, 0xd6, 0x52, 0x92, 0x66, 0x57, 0x42, 0xde, 0x0b, 0xb8, 0x3d, 0xcc, 0x00, 0x04, 0xc7, 0x2c, 0xe1, 0x00, 0x07, 0xa5, 0x49 }, + { 0x7f, 0x50, 0x7a, 0xbc, 0x6d, 0x19, 0xba, 0x00, 0xc0, 0x65, 0xa8, 0x76, 0xec, 0x56, 0x57, 0x86, 0x88, 0x82, 0xd1, 0x8a, 0x22, 0x1b, 0xc4, 0x6c, 0x7a, 0x69, 0x12, 0x54, 0x1f, 0x5b, 0xc7, 0xba }, + { 0xa0, 0x60, 0x7c, 0x24, 0xe1, 0x4e, 0x8c, 0x22, 0x3d, 0xb0, 0xd7, 0x0b, 0x4d, 0x30, 0xee, 0x88, 0x01, 0x4d, 0x60, 0x3f, 0x43, 0x7e, 0x9e, 0x02, 0xaa, 0x7d, 0xaf, 0xa3, 0xcd, 0xfb, 0xad, 0x94 }, + { 0xdd, 0xbf, 0xea, 0x75, 0xcc, 0x46, 0x78, 0x82, 0xeb, 0x34, 0x83, 0xce, 0x5e, 0x2e, 0x75, 0x6a, 0x4f, 0x47, 0x01, 0xb7, 0x6b, 0x44, 0x55, 0x19, 0xe8, 0x9f, 0x22, 0xd6, 0x0f, 0xa8, 0x6e, 0x06 }, + { 0x0c, 0x31, 0x1f, 0x38, 0xc3, 0x5a, 0x4f, 0xb9, 0x0d, 0x65, 0x1c, 0x28, 0x9d, 0x48, 0x68, 0x56, 0xcd, 0x14, 0x13, 0xdf, 0x9b, 0x06, 0x77, 0xf5, 0x3e, 0xce, 0x2c, 0xd9, 0xe4, 0x77, 0xc6, 0x0a }, + { 0x46, 0xa7, 0x3a, 0x8d, 0xd3, 0xe7, 0x0f, 0x59, 0xd3, 0x94, 0x2c, 0x01, 0xdf, 0x59, 0x9d, 0xef, 0x78, 0x3c, 0x9d, 0xa8, 0x2f, 0xd8, 0x32, 0x22, 0xcd, 0x66, 0x2b, 0x53, 0xdc, 0xe7, 0xdb, 0xdf }, + { 0xad, 0x03, 0x8f, 0xf9, 0xb1, 0x4d, 0xe8, 0x4a, 0x80, 0x1e, 0x4e, 0x62, 0x1c, 0xe5, 0xdf, 0x02, 0x9d, 0xd9, 0x35, 0x20, 0xd0, 0xc2, 0xfa, 0x38, 0xbf, 0xf1, 0x76, 0xa8, 0xb1, 0xd1, 0x69, 0x8c }, + { 0xab, 0x70, 0xc5, 0xdf, 0xbd, 0x1e, 0xa8, 0x17, 0xfe, 0xd0, 0xcd, 0x06, 0x72, 0x93, 0xab, 0xf3, 0x19, 0xe5, 0xd7, 0x90, 0x1c, 0x21, 0x41, 0xd5, 0xd9, 0x9b, 0x23, 0xf0, 0x3a, 0x38, 0xe7, 0x48 }, + { 0x1f, 0xff, 0xda, 0x67, 0x93, 0x2b, 0x73, 0xc8, 0xec, 0xaf, 0x00, 0x9a, 0x34, 0x91, 0xa0, 0x26, 0x95, 0x3b, 0xab, 0xfe, 0x1f, 0x66, 0x3b, 0x06, 0x97, 0xc3, 0xc4, 0xae, 0x8b, 0x2e, 0x7d, 0xcb }, + { 0xb0, 0xd2, 0xcc, 0x19, 0x47, 0x2d, 0xd5, 0x7f, 0x2b, 0x17, 0xef, 0xc0, 0x3c, 0x8d, 0x58, 0xc2, 0x28, 0x3d, 0xbb, 0x19, 0xda, 0x57, 0x2f, 0x77, 0x55, 0x85, 0x5a, 0xa9, 0x79, 0x43, 0x17, 0xa0 }, + { 0xa0, 0xd1, 0x9a, 0x6e, 0xe3, 0x39, 0x79, 0xc3, 0x25, 0x51, 0x0e, 0x27, 0x66, 0x22, 0xdf, 0x41, 0xf7, 0x15, 0x83, 0xd0, 0x75, 0x01, 0xb8, 0x70, 0x71, 0x12, 0x9a, 0x0a, 0xd9, 0x47, 0x32, 0xa5 }, + { 0x72, 0x46, 0x42, 0xa7, 0x03, 0x2d, 0x10, 0x62, 0xb8, 0x9e, 0x52, 0xbe, 0xa3, 0x4b, 0x75, 0xdf, 0x7d, 0x8f, 0xe7, 0x72, 0xd9, 0xfe, 0x3c, 0x93, 0xdd, 0xf3, 0xc4, 0x54, 0x5a, 0xb5, 0xa9, 0x9b }, + { 0xad, 0xe5, 0xea, 0xa7, 0xe6, 0x1f, 0x67, 0x2d, 0x58, 0x7e, 0xa0, 0x3d, 0xae, 0x7d, 0x7b, 0x55, 0x22, 0x9c, 0x01, 0xd0, 0x6b, 0xc0, 0xa5, 0x70, 0x14, 0x36, 0xcb, 0xd1, 0x83, 0x66, 0xa6, 0x26 }, + { 0x01, 0x3b, 0x31, 0xeb, 0xd2, 0x28, 0xfc, 0xdd, 0xa5, 0x1f, 0xab, 0xb0, 0x3b, 0xb0, 0x2d, 0x60, 0xac, 0x20, 0xca, 0x21, 0x5a, 0xaf, 0xa8, 0x3b, 0xdd, 0x85, 0x5e, 0x37, 0x55, 0xa3, 0x5f, 0x0b }, + { 0x33, 0x2e, 0xd4, 0x0b, 0xb1, 0x0d, 0xde, 0x3c, 0x95, 0x4a, 0x75, 0xd7, 0xb8, 0x99, 0x9d, 0x4b, 0x26, 0xa1, 0xc0, 0x63, 0xc1, 0xdc, 0x6e, 0x32, 0xc1, 0xd9, 0x1b, 0xab, 0x7b, 0xbb, 0x7d, 0x16 }, + { 0xc7, 0xa1, 0x97, 0xb3, 0xa0, 0x5b, 0x56, 0x6b, 0xcc, 0x9f, 0xac, 0xd2, 0x0e, 0x44, 0x1d, 0x6f, 0x6c, 0x28, 0x60, 0xac, 0x96, 0x51, 0xcd, 0x51, 0xd6, 0xb9, 0xd2, 0xcd, 0xee, 0xea, 0x03, 0x90 }, + { 0xbd, 0x9c, 0xf6, 0x4e, 0xa8, 0x95, 0x3c, 0x03, 0x71, 0x08, 0xe6, 0xf6, 0x54, 0x91, 0x4f, 0x39, 0x58, 0xb6, 0x8e, 0x29, 0xc1, 0x67, 0x00, 0xdc, 0x18, 0x4d, 0x94, 0xa2, 0x17, 0x08, 0xff, 0x60 }, + { 0x88, 0x35, 0xb0, 0xac, 0x02, 0x11, 0x51, 0xdf, 0x71, 0x64, 0x74, 0xce, 0x27, 0xce, 0x4d, 0x3c, 0x15, 0xf0, 0xb2, 0xda, 0xb4, 0x80, 0x03, 0xcf, 0x3f, 0x3e, 0xfd, 0x09, 0x45, 0x10, 0x6b, 0x9a }, + { 0x3b, 0xfe, 0xfa, 0x33, 0x01, 0xaa, 0x55, 0xc0, 0x80, 0x19, 0x0c, 0xff, 0xda, 0x8e, 0xae, 0x51, 0xd9, 0xaf, 0x48, 0x8b, 0x4c, 0x1f, 0x24, 0xc3, 0xd9, 0xa7, 0x52, 0x42, 0xfd, 0x8e, 0xa0, 0x1d }, + { 0x08, 0x28, 0x4d, 0x14, 0x99, 0x3c, 0xd4, 0x7d, 0x53, 0xeb, 0xae, 0xcf, 0x0d, 0xf0, 0x47, 0x8c, 0xc1, 0x82, 0xc8, 0x9c, 0x00, 0xe1, 0x85, 0x9c, 0x84, 0x85, 0x16, 0x86, 0xdd, 0xf2, 0xc1, 0xb7 }, + { 0x1e, 0xd7, 0xef, 0x9f, 0x04, 0xc2, 0xac, 0x8d, 0xb6, 0xa8, 0x64, 0xdb, 0x13, 0x10, 0x87, 0xf2, 0x70, 0x65, 0x09, 0x8e, 0x69, 0xc3, 0xfe, 0x78, 0x71, 0x8d, 0x9b, 0x94, 0x7f, 0x4a, 0x39, 0xd0 }, + { 0xc1, 0x61, 0xf2, 0xdc, 0xd5, 0x7e, 0x9c, 0x14, 0x39, 0xb3, 0x1a, 0x9d, 0xd4, 0x3d, 0x8f, 0x3d, 0x7d, 0xd8, 0xf0, 0xeb, 0x7c, 0xfa, 0xc6, 0xfb, 0x25, 0xa0, 0xf2, 0x8e, 0x30, 0x6f, 0x06, 0x61 }, + { 0xc0, 0x19, 0x69, 0xad, 0x34, 0xc5, 0x2c, 0xaf, 0x3d, 0xc4, 0xd8, 0x0d, 0x19, 0x73, 0x5c, 0x29, 0x73, 0x1a, 0xc6, 0xe7, 0xa9, 0x20, 0x85, 0xab, 0x92, 0x50, 0xc4, 0x8d, 0xea, 0x48, 0xa3, 0xfc }, + { 0x17, 0x20, 0xb3, 0x65, 0x56, 0x19, 0xd2, 0xa5, 0x2b, 0x35, 0x21, 0xae, 0x0e, 0x49, 0xe3, 0x45, 0xcb, 0x33, 0x89, 0xeb, 0xd6, 0x20, 0x8a, 0xca, 0xf9, 0xf1, 0x3f, 0xda, 0xcc, 0xa8, 0xbe, 0x49 }, + { 0x75, 0x62, 0x88, 0x36, 0x1c, 0x83, 0xe2, 0x4c, 0x61, 0x7c, 0xf9, 0x5c, 0x90, 0x5b, 0x22, 0xd0, 0x17, 0xcd, 0xc8, 0x6f, 0x0b, 0xf1, 0xd6, 0x58, 0xf4, 0x75, 0x6c, 0x73, 0x79, 0x87, 0x3b, 0x7f }, + { 0xe7, 0xd0, 0xed, 0xa3, 0x45, 0x26, 0x93, 0xb7, 0x52, 0xab, 0xcd, 0xa1, 0xb5, 0x5e, 0x27, 0x6f, 0x82, 0x69, 0x8f, 0x5f, 0x16, 0x05, 0x40, 0x3e, 0xff, 0x83, 0x0b, 0xea, 0x00, 0x71, 0xa3, 0x94 }, + { 0x2c, 0x82, 0xec, 0xaa, 0x6b, 0x84, 0x80, 0x3e, 0x04, 0x4a, 0xf6, 0x31, 0x18, 0xaf, 0xe5, 0x44, 0x68, 0x7c, 0xb6, 0xe6, 0xc7, 0xdf, 0x49, 0xed, 0x76, 0x2d, 0xfd, 0x7c, 0x86, 0x93, 0xa1, 0xbc }, + { 0x61, 0x36, 0xcb, 0xf4, 0xb4, 0x41, 0x05, 0x6f, 0xa1, 0xe2, 0x72, 0x24, 0x98, 0x12, 0x5d, 0x6d, 0xed, 0x45, 0xe1, 0x7b, 0x52, 0x14, 0x39, 0x59, 0xc7, 0xf4, 0xd4, 0xe3, 0x95, 0x21, 0x8a, 0xc2 }, + { 0x72, 0x1d, 0x32, 0x45, 0xaa, 0xfe, 0xf2, 0x7f, 0x6a, 0x62, 0x4f, 0x47, 0x95, 0x4b, 0x6c, 0x25, 0x50, 0x79, 0x52, 0x6f, 0xfa, 0x25, 0xe9, 0xff, 0x77, 0xe5, 0xdc, 0xff, 0x47, 0x3b, 0x15, 0x97 }, + { 0x9d, 0xd2, 0xfb, 0xd8, 0xce, 0xf1, 0x6c, 0x35, 0x3c, 0x0a, 0xc2, 0x11, 0x91, 0xd5, 0x09, 0xeb, 0x28, 0xdd, 0x9e, 0x3e, 0x0d, 0x8c, 0xea, 0x5d, 0x26, 0xca, 0x83, 0x93, 0x93, 0x85, 0x1c, 0x3a }, + { 0xb2, 0x39, 0x4c, 0xea, 0xcd, 0xeb, 0xf2, 0x1b, 0xf9, 0xdf, 0x2c, 0xed, 0x98, 0xe5, 0x8f, 0x1c, 0x3a, 0x4b, 0xbb, 0xff, 0x66, 0x0d, 0xd9, 0x00, 0xf6, 0x22, 0x02, 0xd6, 0x78, 0x5c, 0xc4, 0x6e }, + { 0x57, 0x08, 0x9f, 0x22, 0x27, 0x49, 0xad, 0x78, 0x71, 0x76, 0x5f, 0x06, 0x2b, 0x11, 0x4f, 0x43, 0xba, 0x20, 0xec, 0x56, 0x42, 0x2a, 0x8b, 0x1e, 0x3f, 0x87, 0x19, 0x2c, 0x0e, 0xa7, 0x18, 0xc6 }, + { 0xe4, 0x9a, 0x94, 0x59, 0x96, 0x1c, 0xd3, 0x3c, 0xdf, 0x4a, 0xae, 0x1b, 0x10, 0x78, 0xa5, 0xde, 0xa7, 0xc0, 0x40, 0xe0, 0xfe, 0xa3, 0x40, 0xc9, 0x3a, 0x72, 0x48, 0x72, 0xfc, 0x4a, 0xf8, 0x06 }, + { 0xed, 0xe6, 0x7f, 0x72, 0x0e, 0xff, 0xd2, 0xca, 0x9c, 0x88, 0x99, 0x41, 0x52, 0xd0, 0x20, 0x1d, 0xee, 0x6b, 0x0a, 0x2d, 0x2c, 0x07, 0x7a, 0xca, 0x6d, 0xae, 0x29, 0xf7, 0x3f, 0x8b, 0x63, 0x09 }, + { 0xe0, 0xf4, 0x34, 0xbf, 0x22, 0xe3, 0x08, 0x80, 0x39, 0xc2, 0x1f, 0x71, 0x9f, 0xfc, 0x67, 0xf0, 0xf2, 0xcb, 0x5e, 0x98, 0xa7, 0xa0, 0x19, 0x4c, 0x76, 0xe9, 0x6b, 0xf4, 0xe8, 0xe1, 0x7e, 0x61 }, + { 0x27, 0x7c, 0x04, 0xe2, 0x85, 0x34, 0x84, 0xa4, 0xeb, 0xa9, 0x10, 0xad, 0x33, 0x6d, 0x01, 0xb4, 0x77, 0xb6, 0x7c, 0xc2, 0x00, 0xc5, 0x9f, 0x3c, 0x8d, 0x77, 0xee, 0xf8, 0x49, 0x4f, 0x29, 0xcd }, + { 0x15, 0x6d, 0x57, 0x47, 0xd0, 0xc9, 0x9c, 0x7f, 0x27, 0x09, 0x7d, 0x7b, 0x7e, 0x00, 0x2b, 0x2e, 0x18, 0x5c, 0xb7, 0x2d, 0x8d, 0xd7, 0xeb, 0x42, 0x4a, 0x03, 0x21, 0x52, 0x81, 0x61, 0x21, 0x9f }, + { 0x20, 0xdd, 0xd1, 0xed, 0x9b, 0x1c, 0xa8, 0x03, 0x94, 0x6d, 0x64, 0xa8, 0x3a, 0xe4, 0x65, 0x9d, 0xa6, 0x7f, 0xba, 0x7a, 0x1a, 0x3e, 0xdd, 0xb1, 0xe1, 0x03, 0xc0, 0xf5, 0xe0, 0x3e, 0x3a, 0x2c }, + { 0xf0, 0xaf, 0x60, 0x4d, 0x3d, 0xab, 0xbf, 0x9a, 0x0f, 0x2a, 0x7d, 0x3d, 0xda, 0x6b, 0xd3, 0x8b, 0xba, 0x72, 0xc6, 0xd0, 0x9b, 0xe4, 0x94, 0xfc, 0xef, 0x71, 0x3f, 0xf1, 0x01, 0x89, 0xb6, 0xe6 }, + { 0x98, 0x02, 0xbb, 0x87, 0xde, 0xf4, 0xcc, 0x10, 0xc4, 0xa5, 0xfd, 0x49, 0xaa, 0x58, 0xdf, 0xe2, 0xf3, 0xfd, 0xdb, 0x46, 0xb4, 0x70, 0x88, 0x14, 0xea, 0xd8, 0x1d, 0x23, 0xba, 0x95, 0x13, 0x9b }, + { 0x4f, 0x8c, 0xe1, 0xe5, 0x1d, 0x2f, 0xe7, 0xf2, 0x40, 0x43, 0xa9, 0x04, 0xd8, 0x98, 0xeb, 0xfc, 0x91, 0x97, 0x54, 0x18, 0x75, 0x34, 0x13, 0xaa, 0x09, 0x9b, 0x79, 0x5e, 0xcb, 0x35, 0xce, 0xdb }, + { 0xbd, 0xdc, 0x65, 0x14, 0xd7, 0xee, 0x6a, 0xce, 0x0a, 0x4a, 0xc1, 0xd0, 0xe0, 0x68, 0x11, 0x22, 0x88, 0xcb, 0xcf, 0x56, 0x04, 0x54, 0x64, 0x27, 0x05, 0x63, 0x01, 0x77, 0xcb, 0xa6, 0x08, 0xbd }, + { 0xd6, 0x35, 0x99, 0x4f, 0x62, 0x91, 0x51, 0x7b, 0x02, 0x81, 0xff, 0xdd, 0x49, 0x6a, 0xfa, 0x86, 0x27, 0x12, 0xe5, 0xb3, 0xc4, 0xe5, 0x2e, 0x4c, 0xd5, 0xfd, 0xae, 0x8c, 0x0e, 0x72, 0xfb, 0x08 }, + { 0x87, 0x8d, 0x9c, 0xa6, 0x00, 0xcf, 0x87, 0xe7, 0x69, 0xcc, 0x30, 0x5c, 0x1b, 0x35, 0x25, 0x51, 0x86, 0x61, 0x5a, 0x73, 0xa0, 0xda, 0x61, 0x3b, 0x5f, 0x1c, 0x98, 0xdb, 0xf8, 0x12, 0x83, 0xea }, + { 0xa6, 0x4e, 0xbe, 0x5d, 0xc1, 0x85, 0xde, 0x9f, 0xdd, 0xe7, 0x60, 0x7b, 0x69, 0x98, 0x70, 0x2e, 0xb2, 0x34, 0x56, 0x18, 0x49, 0x57, 0x30, 0x7d, 0x2f, 0xa7, 0x2e, 0x87, 0xa4, 0x77, 0x02, 0xd6 }, + { 0xce, 0x50, 0xea, 0xb7, 0xb5, 0xeb, 0x52, 0xbd, 0xc9, 0xad, 0x8e, 0x5a, 0x48, 0x0a, 0xb7, 0x80, 0xca, 0x93, 0x20, 0xe4, 0x43, 0x60, 0xb1, 0xfe, 0x37, 0xe0, 0x3f, 0x2f, 0x7a, 0xd7, 0xde, 0x01 }, + { 0xee, 0xdd, 0xb7, 0xc0, 0xdb, 0x6e, 0x30, 0xab, 0xe6, 0x6d, 0x79, 0xe3, 0x27, 0x51, 0x1e, 0x61, 0xfc, 0xeb, 0xbc, 0x29, 0xf1, 0x59, 0xb4, 0x0a, 0x86, 0xb0, 0x46, 0xec, 0xf0, 0x51, 0x38, 0x23 }, + { 0x78, 0x7f, 0xc9, 0x34, 0x40, 0xc1, 0xec, 0x96, 0xb5, 0xad, 0x01, 0xc1, 0x6c, 0xf7, 0x79, 0x16, 0xa1, 0x40, 0x5f, 0x94, 0x26, 0x35, 0x6e, 0xc9, 0x21, 0xd8, 0xdf, 0xf3, 0xea, 0x63, 0xb7, 0xe0 }, + { 0x7f, 0x0d, 0x5e, 0xab, 0x47, 0xee, 0xfd, 0xa6, 0x96, 0xc0, 0xbf, 0x0f, 0xbf, 0x86, 0xab, 0x21, 0x6f, 0xce, 0x46, 0x1e, 0x93, 0x03, 0xab, 0xa6, 0xac, 0x37, 0x41, 0x20, 0xe8, 0x90, 0xe8, 0xdf }, + { 0xb6, 0x80, 0x04, 0xb4, 0x2f, 0x14, 0xad, 0x02, 0x9f, 0x4c, 0x2e, 0x03, 0xb1, 0xd5, 0xeb, 0x76, 0xd5, 0x71, 0x60, 0xe2, 0x64, 0x76, 0xd2, 0x11, 0x31, 0xbe, 0xf2, 0x0a, 0xda, 0x7d, 0x27, 0xf4 }, + { 0xb0, 0xc4, 0xeb, 0x18, 0xae, 0x25, 0x0b, 0x51, 0xa4, 0x13, 0x82, 0xea, 0xd9, 0x2d, 0x0d, 0xc7, 0x45, 0x5f, 0x93, 0x79, 0xfc, 0x98, 0x84, 0x42, 0x8e, 0x47, 0x70, 0x60, 0x8d, 0xb0, 0xfa, 0xec }, + { 0xf9, 0x2b, 0x7a, 0x87, 0x0c, 0x05, 0x9f, 0x4d, 0x46, 0x46, 0x4c, 0x82, 0x4e, 0xc9, 0x63, 0x55, 0x14, 0x0b, 0xdc, 0xe6, 0x81, 0x32, 0x2c, 0xc3, 0xa9, 0x92, 0xff, 0x10, 0x3e, 0x3f, 0xea, 0x52 }, + { 0x53, 0x64, 0x31, 0x26, 0x14, 0x81, 0x33, 0x98, 0xcc, 0x52, 0x5d, 0x4c, 0x4e, 0x14, 0x6e, 0xde, 0xb3, 0x71, 0x26, 0x5f, 0xba, 0x19, 0x13, 0x3a, 0x2c, 0x3d, 0x21, 0x59, 0x29, 0x8a, 0x17, 0x42 }, + { 0xf6, 0x62, 0x0e, 0x68, 0xd3, 0x7f, 0xb2, 0xaf, 0x50, 0x00, 0xfc, 0x28, 0xe2, 0x3b, 0x83, 0x22, 0x97, 0xec, 0xd8, 0xbc, 0xe9, 0x9e, 0x8b, 0xe4, 0xd0, 0x4e, 0x85, 0x30, 0x9e, 0x3d, 0x33, 0x74 }, + { 0x53, 0x16, 0xa2, 0x79, 0x69, 0xd7, 0xfe, 0x04, 0xff, 0x27, 0xb2, 0x83, 0x96, 0x1b, 0xff, 0xc3, 0xbf, 0x5d, 0xfb, 0x32, 0xfb, 0x6a, 0x89, 0xd1, 0x01, 0xc6, 0xc3, 0xb1, 0x93, 0x7c, 0x28, 0x71 }, + { 0x81, 0xd1, 0x66, 0x4f, 0xdf, 0x3c, 0xb3, 0x3c, 0x24, 0xee, 0xba, 0xc0, 0xbd, 0x64, 0x24, 0x4b, 0x77, 0xc4, 0xab, 0xea, 0x90, 0xbb, 0xe8, 0xb5, 0xee, 0x0b, 0x2a, 0xaf, 0xcf, 0x2d, 0x6a, 0x53 }, + { 0x34, 0x57, 0x82, 0xf2, 0x95, 0xb0, 0x88, 0x03, 0x52, 0xe9, 0x24, 0xa0, 0x46, 0x7b, 0x5f, 0xbc, 0x3e, 0x8f, 0x3b, 0xfb, 0xc3, 0xc7, 0xe4, 0x8b, 0x67, 0x09, 0x1f, 0xb5, 0xe8, 0x0a, 0x94, 0x42 }, + { 0x79, 0x41, 0x11, 0xea, 0x6c, 0xd6, 0x5e, 0x31, 0x1f, 0x74, 0xee, 0x41, 0xd4, 0x76, 0xcb, 0x63, 0x2c, 0xe1, 0xe4, 0xb0, 0x51, 0xdc, 0x1d, 0x9e, 0x9d, 0x06, 0x1a, 0x19, 0xe1, 0xd0, 0xbb, 0x49 }, + { 0x2a, 0x85, 0xda, 0xf6, 0x13, 0x88, 0x16, 0xb9, 0x9b, 0xf8, 0xd0, 0x8b, 0xa2, 0x11, 0x4b, 0x7a, 0xb0, 0x79, 0x75, 0xa7, 0x84, 0x20, 0xc1, 0xa3, 0xb0, 0x6a, 0x77, 0x7c, 0x22, 0xdd, 0x8b, 0xcb }, + { 0x89, 0xb0, 0xd5, 0xf2, 0x89, 0xec, 0x16, 0x40, 0x1a, 0x06, 0x9a, 0x96, 0x0d, 0x0b, 0x09, 0x3e, 0x62, 0x5d, 0xa3, 0xcf, 0x41, 0xee, 0x29, 0xb5, 0x9b, 0x93, 0x0c, 0x58, 0x20, 0x14, 0x54, 0x55 }, + { 0xd0, 0xfd, 0xcb, 0x54, 0x39, 0x43, 0xfc, 0x27, 0xd2, 0x08, 0x64, 0xf5, 0x21, 0x81, 0x47, 0x1b, 0x94, 0x2c, 0xc7, 0x7c, 0xa6, 0x75, 0xbc, 0xb3, 0x0d, 0xf3, 0x1d, 0x35, 0x8e, 0xf7, 0xb1, 0xeb }, + { 0xb1, 0x7e, 0xa8, 0xd7, 0x70, 0x63, 0xc7, 0x09, 0xd4, 0xdc, 0x6b, 0x87, 0x94, 0x13, 0xc3, 0x43, 0xe3, 0x79, 0x0e, 0x9e, 0x62, 0xca, 0x85, 0xb7, 0x90, 0x0b, 0x08, 0x6f, 0x6b, 0x75, 0xc6, 0x72 }, + { 0xe7, 0x1a, 0x3e, 0x2c, 0x27, 0x4d, 0xb8, 0x42, 0xd9, 0x21, 0x14, 0xf2, 0x17, 0xe2, 0xc0, 0xea, 0xc8, 0xb4, 0x50, 0x93, 0xfd, 0xfd, 0x9d, 0xf4, 0xca, 0x71, 0x62, 0x39, 0x48, 0x62, 0xd5, 0x01 }, + { 0xc0, 0x47, 0x67, 0x59, 0xab, 0x7a, 0xa3, 0x33, 0x23, 0x4f, 0x6b, 0x44, 0xf5, 0xfd, 0x85, 0x83, 0x90, 0xec, 0x23, 0x69, 0x4c, 0x62, 0x2c, 0xb9, 0x86, 0xe7, 0x69, 0xc7, 0x8e, 0xdd, 0x73, 0x3e }, + { 0x9a, 0xb8, 0xea, 0xbb, 0x14, 0x16, 0x43, 0x4d, 0x85, 0x39, 0x13, 0x41, 0xd5, 0x69, 0x93, 0xc5, 0x54, 0x58, 0x16, 0x7d, 0x44, 0x18, 0xb1, 0x9a, 0x0f, 0x2a, 0xd8, 0xb7, 0x9a, 0x83, 0xa7, 0x5b }, + { 0x79, 0x92, 0xd0, 0xbb, 0xb1, 0x5e, 0x23, 0x82, 0x6f, 0x44, 0x3e, 0x00, 0x50, 0x5d, 0x68, 0xd3, 0xed, 0x73, 0x72, 0x99, 0x5a, 0x5c, 0x3e, 0x49, 0x86, 0x54, 0x10, 0x2f, 0xbc, 0xd0, 0x96, 0x4e }, + { 0xc0, 0x21, 0xb3, 0x00, 0x85, 0x15, 0x14, 0x35, 0xdf, 0x33, 0xb0, 0x07, 0xcc, 0xec, 0xc6, 0x9d, 0xf1, 0x26, 0x9f, 0x39, 0xba, 0x25, 0x09, 0x2b, 0xed, 0x59, 0xd9, 0x32, 0xac, 0x0f, 0xdc, 0x28 }, + { 0x91, 0xa2, 0x5e, 0xc0, 0xec, 0x0d, 0x9a, 0x56, 0x7f, 0x89, 0xc4, 0xbf, 0xe1, 0xa6, 0x5a, 0x0e, 0x43, 0x2d, 0x07, 0x06, 0x4b, 0x41, 0x90, 0xe2, 0x7d, 0xfb, 0x81, 0x90, 0x1f, 0xd3, 0x13, 0x9b }, + { 0x59, 0x50, 0xd3, 0x9a, 0x23, 0xe1, 0x54, 0x5f, 0x30, 0x12, 0x70, 0xaa, 0x1a, 0x12, 0xf2, 0xe6, 0xc4, 0x53, 0x77, 0x6e, 0x4d, 0x63, 0x55, 0xde, 0x42, 0x5c, 0xc1, 0x53, 0xf9, 0x81, 0x88, 0x67 }, + { 0xd7, 0x9f, 0x14, 0x72, 0x0c, 0x61, 0x0a, 0xf1, 0x79, 0xa3, 0x76, 0x5d, 0x4b, 0x7c, 0x09, 0x68, 0xf9, 0x77, 0x96, 0x2d, 0xbf, 0x65, 0x5b, 0x52, 0x12, 0x72, 0xb6, 0xf1, 0xe1, 0x94, 0x48, 0x8e }, + { 0xe9, 0x53, 0x1b, 0xfc, 0x8b, 0x02, 0x99, 0x5a, 0xea, 0xa7, 0x5b, 0xa2, 0x70, 0x31, 0xfa, 0xdb, 0xcb, 0xf4, 0xa0, 0xda, 0xb8, 0x96, 0x1d, 0x92, 0x96, 0xcd, 0x7e, 0x84, 0xd2, 0x5d, 0x60, 0x06 }, + { 0x34, 0xe9, 0xc2, 0x6a, 0x01, 0xd7, 0xf1, 0x61, 0x81, 0xb4, 0x54, 0xa9, 0xd1, 0x62, 0x3c, 0x23, 0x3c, 0xb9, 0x9d, 0x31, 0xc6, 0x94, 0x65, 0x6e, 0x94, 0x13, 0xac, 0xa3, 0xe9, 0x18, 0x69, 0x2f }, + { 0xd9, 0xd7, 0x42, 0x2f, 0x43, 0x7b, 0xd4, 0x39, 0xdd, 0xd4, 0xd8, 0x83, 0xda, 0xe2, 0xa0, 0x83, 0x50, 0x17, 0x34, 0x14, 0xbe, 0x78, 0x15, 0x51, 0x33, 0xff, 0xf1, 0x96, 0x4c, 0x3d, 0x79, 0x72 }, + { 0x4a, 0xee, 0x0c, 0x7a, 0xaf, 0x07, 0x54, 0x14, 0xff, 0x17, 0x93, 0xea, 0xd7, 0xea, 0xca, 0x60, 0x17, 0x75, 0xc6, 0x15, 0xdb, 0xd6, 0x0b, 0x64, 0x0b, 0x0a, 0x9f, 0x0c, 0xe5, 0x05, 0xd4, 0x35 }, + { 0x6b, 0xfd, 0xd1, 0x54, 0x59, 0xc8, 0x3b, 0x99, 0xf0, 0x96, 0xbf, 0xb4, 0x9e, 0xe8, 0x7b, 0x06, 0x3d, 0x69, 0xc1, 0x97, 0x4c, 0x69, 0x28, 0xac, 0xfc, 0xfb, 0x40, 0x99, 0xf8, 0xc4, 0xef, 0x67 }, + { 0x9f, 0xd1, 0xc4, 0x08, 0xfd, 0x75, 0xc3, 0x36, 0x19, 0x3a, 0x2a, 0x14, 0xd9, 0x4f, 0x6a, 0xf5, 0xad, 0xf0, 0x50, 0xb8, 0x03, 0x87, 0xb4, 0xb0, 0x10, 0xfb, 0x29, 0xf4, 0xcc, 0x72, 0x70, 0x7c }, + { 0x13, 0xc8, 0x84, 0x80, 0xa5, 0xd0, 0x0d, 0x6c, 0x8c, 0x7a, 0xd2, 0x11, 0x0d, 0x76, 0xa8, 0x2d, 0x9b, 0x70, 0xf4, 0xfa, 0x66, 0x96, 0xd4, 0xe5, 0xdd, 0x42, 0xa0, 0x66, 0xdc, 0xaf, 0x99, 0x20 }, + { 0x82, 0x0e, 0x72, 0x5e, 0xe2, 0x5f, 0xe8, 0xfd, 0x3a, 0x8d, 0x5a, 0xbe, 0x4c, 0x46, 0xc3, 0xba, 0x88, 0x9d, 0xe6, 0xfa, 0x91, 0x91, 0xaa, 0x22, 0xba, 0x67, 0xd5, 0x70, 0x54, 0x21, 0x54, 0x2b }, + { 0x32, 0xd9, 0x3a, 0x0e, 0xb0, 0x2f, 0x42, 0xfb, 0xbc, 0xaf, 0x2b, 0xad, 0x00, 0x85, 0xb2, 0x82, 0xe4, 0x60, 0x46, 0xa4, 0xdf, 0x7a, 0xd1, 0x06, 0x57, 0xc9, 0xd6, 0x47, 0x63, 0x75, 0xb9, 0x3e }, + { 0xad, 0xc5, 0x18, 0x79, 0x05, 0xb1, 0x66, 0x9c, 0xd8, 0xec, 0x9c, 0x72, 0x1e, 0x19, 0x53, 0x78, 0x6b, 0x9d, 0x89, 0xa9, 0xba, 0xe3, 0x07, 0x80, 0xf1, 0xe1, 0xea, 0xb2, 0x4a, 0x00, 0x52, 0x3c }, + { 0xe9, 0x07, 0x56, 0xff, 0x7f, 0x9a, 0xd8, 0x10, 0xb2, 0x39, 0xa1, 0x0c, 0xed, 0x2c, 0xf9, 0xb2, 0x28, 0x43, 0x54, 0xc1, 0xf8, 0xc7, 0xe0, 0xac, 0xcc, 0x24, 0x61, 0xdc, 0x79, 0x6d, 0x6e, 0x89 }, + { 0x12, 0x51, 0xf7, 0x6e, 0x56, 0x97, 0x84, 0x81, 0x87, 0x53, 0x59, 0x80, 0x1d, 0xb5, 0x89, 0xa0, 0xb2, 0x2f, 0x86, 0xd8, 0xd6, 0x34, 0xdc, 0x04, 0x50, 0x6f, 0x32, 0x2e, 0xd7, 0x8f, 0x17, 0xe8 }, + { 0x3a, 0xfa, 0x89, 0x9f, 0xd9, 0x80, 0xe7, 0x3e, 0xcb, 0x7f, 0x4d, 0x8b, 0x8f, 0x29, 0x1d, 0xc9, 0xaf, 0x79, 0x6b, 0xc6, 0x5d, 0x27, 0xf9, 0x74, 0xc6, 0xf1, 0x93, 0xc9, 0x19, 0x1a, 0x09, 0xfd }, + { 0xaa, 0x30, 0x5b, 0xe2, 0x6e, 0x5d, 0xed, 0xdc, 0x3c, 0x10, 0x10, 0xcb, 0xc2, 0x13, 0xf9, 0x5f, 0x05, 0x1c, 0x78, 0x5c, 0x5b, 0x43, 0x1e, 0x6a, 0x7c, 0xd0, 0x48, 0xf1, 0x61, 0x78, 0x75, 0x28 }, + { 0x8e, 0xa1, 0x88, 0x4f, 0xf3, 0x2e, 0x9d, 0x10, 0xf0, 0x39, 0xb4, 0x07, 0xd0, 0xd4, 0x4e, 0x7e, 0x67, 0x0a, 0xbd, 0x88, 0x4a, 0xee, 0xe0, 0xfb, 0x75, 0x7a, 0xe9, 0x4e, 0xaa, 0x97, 0x37, 0x3d }, + { 0xd4, 0x82, 0xb2, 0x15, 0x5d, 0x4d, 0xec, 0x6b, 0x47, 0x36, 0xa1, 0xf1, 0x61, 0x7b, 0x53, 0xaa, 0xa3, 0x73, 0x10, 0x27, 0x7d, 0x3f, 0xef, 0x0c, 0x37, 0xad, 0x41, 0x76, 0x8f, 0xc2, 0x35, 0xb4 }, + { 0x4d, 0x41, 0x39, 0x71, 0x38, 0x7e, 0x7a, 0x88, 0x98, 0xa8, 0xdc, 0x2a, 0x27, 0x50, 0x07, 0x78, 0x53, 0x9e, 0xa2, 0x14, 0xa2, 0xdf, 0xe9, 0xb3, 0xd7, 0xe8, 0xeb, 0xdc, 0xe5, 0xcf, 0x3d, 0xb3 }, + { 0x69, 0x6e, 0x5d, 0x46, 0xe6, 0xc5, 0x7e, 0x87, 0x96, 0xe4, 0x73, 0x5d, 0x08, 0x91, 0x6e, 0x0b, 0x79, 0x29, 0xb3, 0xcf, 0x29, 0x8c, 0x29, 0x6d, 0x22, 0xe9, 0xd3, 0x01, 0x96, 0x53, 0x37, 0x1c }, + { 0x1f, 0x56, 0x47, 0xc1, 0xd3, 0xb0, 0x88, 0x22, 0x88, 0x85, 0x86, 0x5c, 0x89, 0x40, 0x90, 0x8b, 0xf4, 0x0d, 0x1a, 0x82, 0x72, 0x82, 0x19, 0x73, 0xb1, 0x60, 0x00, 0x8e, 0x7a, 0x3c, 0xe2, 0xeb }, + { 0xb6, 0xe7, 0x6c, 0x33, 0x0f, 0x02, 0x1a, 0x5b, 0xda, 0x65, 0x87, 0x50, 0x10, 0xb0, 0xed, 0xf0, 0x91, 0x26, 0xc0, 0xf5, 0x10, 0xea, 0x84, 0x90, 0x48, 0x19, 0x20, 0x03, 0xae, 0xf4, 0xc6, 0x1c }, + { 0x3c, 0xd9, 0x52, 0xa0, 0xbe, 0xad, 0xa4, 0x1a, 0xbb, 0x42, 0x4c, 0xe4, 0x7f, 0x94, 0xb4, 0x2b, 0xe6, 0x4e, 0x1f, 0xfb, 0x0f, 0xd0, 0x78, 0x22, 0x76, 0x80, 0x79, 0x46, 0xd0, 0xd0, 0xbc, 0x55 }, + { 0x98, 0xd9, 0x26, 0x77, 0x43, 0x9b, 0x41, 0xb7, 0xbb, 0x51, 0x33, 0x12, 0xaf, 0xb9, 0x2b, 0xcc, 0x8e, 0xe9, 0x68, 0xb2, 0xe3, 0xb2, 0x38, 0xce, 0xcb, 0x9b, 0x0f, 0x34, 0xc9, 0xbb, 0x63, 0xd0 }, + { 0xec, 0xbc, 0xa2, 0xcf, 0x08, 0xae, 0x57, 0xd5, 0x17, 0xad, 0x16, 0x15, 0x8a, 0x32, 0xbf, 0xa7, 0xdc, 0x03, 0x82, 0xea, 0xed, 0xa1, 0x28, 0xe9, 0x18, 0x86, 0x73, 0x4c, 0x24, 0xa0, 0xb2, 0x9d }, + { 0x94, 0x2c, 0xc7, 0xc0, 0xb5, 0x2e, 0x2b, 0x16, 0xa4, 0xb8, 0x9f, 0xa4, 0xfc, 0x7e, 0x0b, 0xf6, 0x09, 0xe2, 0x9a, 0x08, 0xc1, 0xa8, 0x54, 0x34, 0x52, 0xb7, 0x7c, 0x7b, 0xfd, 0x11, 0xbb, 0x28 }, + { 0x8a, 0x06, 0x5d, 0x8b, 0x61, 0xa0, 0xdf, 0xfb, 0x17, 0x0d, 0x56, 0x27, 0x73, 0x5a, 0x76, 0xb0, 0xe9, 0x50, 0x60, 0x37, 0x80, 0x8c, 0xba, 0x16, 0xc3, 0x45, 0x00, 0x7c, 0x9f, 0x79, 0xcf, 0x8f }, + { 0x1b, 0x9f, 0xa1, 0x97, 0x14, 0x65, 0x9c, 0x78, 0xff, 0x41, 0x38, 0x71, 0x84, 0x92, 0x15, 0x36, 0x10, 0x29, 0xac, 0x80, 0x2b, 0x1c, 0xbc, 0xd5, 0x4e, 0x40, 0x8b, 0xd8, 0x72, 0x87, 0xf8, 0x1f }, + { 0x8d, 0xab, 0x07, 0x1b, 0xcd, 0x6c, 0x72, 0x92, 0xa9, 0xef, 0x72, 0x7b, 0x4a, 0xe0, 0xd8, 0x67, 0x13, 0x30, 0x1d, 0xa8, 0x61, 0x8d, 0x9a, 0x48, 0xad, 0xce, 0x55, 0xf3, 0x03, 0xa8, 0x69, 0xa1 }, + { 0x82, 0x53, 0xe3, 0xe7, 0xc7, 0xb6, 0x84, 0xb9, 0xcb, 0x2b, 0xeb, 0x01, 0x4c, 0xe3, 0x30, 0xff, 0x3d, 0x99, 0xd1, 0x7a, 0xbb, 0xdb, 0xab, 0xe4, 0xf4, 0xd6, 0x74, 0xde, 0xd5, 0x3f, 0xfc, 0x6b }, + { 0xf1, 0x95, 0xf3, 0x21, 0xe9, 0xe3, 0xd6, 0xbd, 0x7d, 0x07, 0x45, 0x04, 0xdd, 0x2a, 0xb0, 0xe6, 0x24, 0x1f, 0x92, 0xe7, 0x84, 0xb1, 0xaa, 0x27, 0x1f, 0xf6, 0x48, 0xb1, 0xca, 0xb6, 0xd7, 0xf6 }, + { 0x27, 0xe4, 0xcc, 0x72, 0x09, 0x0f, 0x24, 0x12, 0x66, 0x47, 0x6a, 0x7c, 0x09, 0x49, 0x5f, 0x2d, 0xb1, 0x53, 0xd5, 0xbc, 0xbd, 0x76, 0x19, 0x03, 0xef, 0x79, 0x27, 0x5e, 0xc5, 0x6b, 0x2e, 0xd8 }, + { 0x89, 0x9c, 0x24, 0x05, 0x78, 0x8e, 0x25, 0xb9, 0x9a, 0x18, 0x46, 0x35, 0x5e, 0x64, 0x6d, 0x77, 0xcf, 0x40, 0x00, 0x83, 0x41, 0x5f, 0x7d, 0xc5, 0xaf, 0xe6, 0x9d, 0x6e, 0x17, 0xc0, 0x00, 0x23 }, + { 0xa5, 0x9b, 0x78, 0xc4, 0x90, 0x57, 0x44, 0x07, 0x6b, 0xfe, 0xe8, 0x94, 0xde, 0x70, 0x7d, 0x4f, 0x12, 0x0b, 0x5c, 0x68, 0x93, 0xea, 0x04, 0x00, 0x29, 0x7d, 0x0b, 0xb8, 0x34, 0x72, 0x76, 0x32 }, + { 0x59, 0xdc, 0x78, 0xb1, 0x05, 0x64, 0x97, 0x07, 0xa2, 0xbb, 0x44, 0x19, 0xc4, 0x8f, 0x00, 0x54, 0x00, 0xd3, 0x97, 0x3d, 0xe3, 0x73, 0x66, 0x10, 0x23, 0x04, 0x35, 0xb1, 0x04, 0x24, 0xb2, 0x4f }, + { 0xc0, 0x14, 0x9d, 0x1d, 0x7e, 0x7a, 0x63, 0x53, 0xa6, 0xd9, 0x06, 0xef, 0xe7, 0x28, 0xf2, 0xf3, 0x29, 0xfe, 0x14, 0xa4, 0x14, 0x9a, 0x3e, 0xa7, 0x76, 0x09, 0xbc, 0x42, 0xb9, 0x75, 0xdd, 0xfa }, + { 0xa3, 0x2f, 0x24, 0x14, 0x74, 0xa6, 0xc1, 0x69, 0x32, 0xe9, 0x24, 0x3b, 0xe0, 0xcf, 0x09, 0xbc, 0xdc, 0x7e, 0x0c, 0xa0, 0xe7, 0xa6, 0xa1, 0xb9, 0xb1, 0xa0, 0xf0, 0x1e, 0x41, 0x50, 0x23, 0x77 }, + { 0xb2, 0x39, 0xb2, 0xe4, 0xf8, 0x18, 0x41, 0x36, 0x1c, 0x13, 0x39, 0xf6, 0x8e, 0x2c, 0x35, 0x9f, 0x92, 0x9a, 0xf9, 0xad, 0x9f, 0x34, 0xe0, 0x1a, 0xab, 0x46, 0x31, 0xad, 0x6d, 0x55, 0x00, 0xb0 }, + { 0x85, 0xfb, 0x41, 0x9c, 0x70, 0x02, 0xa3, 0xe0, 0xb4, 0xb6, 0xea, 0x09, 0x3b, 0x4c, 0x1a, 0xc6, 0x93, 0x66, 0x45, 0xb6, 0x5d, 0xac, 0x5a, 0xc1, 0x5a, 0x85, 0x28, 0xb7, 0xb9, 0x4c, 0x17, 0x54 }, + { 0x96, 0x19, 0x72, 0x06, 0x25, 0xf1, 0x90, 0xb9, 0x3a, 0x3f, 0xad, 0x18, 0x6a, 0xb3, 0x14, 0x18, 0x96, 0x33, 0xc0, 0xd3, 0xa0, 0x1e, 0x6f, 0x9b, 0xc8, 0xc4, 0xa8, 0xf8, 0x2f, 0x38, 0x3d, 0xbf }, + { 0x7d, 0x62, 0x0d, 0x90, 0xfe, 0x69, 0xfa, 0x46, 0x9a, 0x65, 0x38, 0x38, 0x89, 0x70, 0xa1, 0xaa, 0x09, 0xbb, 0x48, 0xa2, 0xd5, 0x9b, 0x34, 0x7b, 0x97, 0xe8, 0xce, 0x71, 0xf4, 0x8c, 0x7f, 0x46 }, + { 0x29, 0x43, 0x83, 0x56, 0x85, 0x96, 0xfb, 0x37, 0xc7, 0x5b, 0xba, 0xcd, 0x97, 0x9c, 0x5f, 0xf6, 0xf2, 0x0a, 0x55, 0x6b, 0xf8, 0x87, 0x9c, 0xc7, 0x29, 0x24, 0x85, 0x5d, 0xf9, 0xb8, 0x24, 0x0e }, + { 0x16, 0xb1, 0x8a, 0xb3, 0x14, 0x35, 0x9c, 0x2b, 0x83, 0x3c, 0x1c, 0x69, 0x86, 0xd4, 0x8c, 0x55, 0xa9, 0xfc, 0x97, 0xcd, 0xe9, 0xa3, 0xc1, 0xf1, 0x0a, 0x31, 0x77, 0x14, 0x0f, 0x73, 0xf7, 0x38 }, + { 0x8c, 0xbb, 0xdd, 0x14, 0xbc, 0x33, 0xf0, 0x4c, 0xf4, 0x58, 0x13, 0xe4, 0xa1, 0x53, 0xa2, 0x73, 0xd3, 0x6a, 0xda, 0xd5, 0xce, 0x71, 0xf4, 0x99, 0xee, 0xb8, 0x7f, 0xb8, 0xac, 0x63, 0xb7, 0x29 }, + { 0x69, 0xc9, 0xa4, 0x98, 0xdb, 0x17, 0x4e, 0xca, 0xef, 0xcc, 0x5a, 0x3a, 0xc9, 0xfd, 0xed, 0xf0, 0xf8, 0x13, 0xa5, 0xbe, 0xc7, 0x27, 0xf1, 0xe7, 0x75, 0xba, 0xbd, 0xec, 0x77, 0x18, 0x81, 0x6e }, + { 0xb4, 0x62, 0xc3, 0xbe, 0x40, 0x44, 0x8f, 0x1d, 0x4f, 0x80, 0x62, 0x62, 0x54, 0xe5, 0x35, 0xb0, 0x8b, 0xc9, 0xcd, 0xcf, 0xf5, 0x99, 0xa7, 0x68, 0x57, 0x8d, 0x4b, 0x28, 0x81, 0xa8, 0xe3, 0xf0 }, + { 0x55, 0x3e, 0x9d, 0x9c, 0x5f, 0x36, 0x0a, 0xc0, 0xb7, 0x4a, 0x7d, 0x44, 0xe5, 0xa3, 0x91, 0xda, 0xd4, 0xce, 0xd0, 0x3e, 0x0c, 0x24, 0x18, 0x3b, 0x7e, 0x8e, 0xca, 0xbd, 0xf1, 0x71, 0x5a, 0x64 }, + { 0x7a, 0x7c, 0x55, 0xa5, 0x6f, 0xa9, 0xae, 0x51, 0xe6, 0x55, 0xe0, 0x19, 0x75, 0xd8, 0xa6, 0xff, 0x4a, 0xe9, 0xe4, 0xb4, 0x86, 0xfc, 0xbe, 0x4e, 0xac, 0x04, 0x45, 0x88, 0xf2, 0x45, 0xeb, 0xea }, + { 0x2a, 0xfd, 0xf3, 0xc8, 0x2a, 0xbc, 0x48, 0x67, 0xf5, 0xde, 0x11, 0x12, 0x86, 0xc2, 0xb3, 0xbe, 0x7d, 0x6e, 0x48, 0x65, 0x7b, 0xa9, 0x23, 0xcf, 0xbf, 0x10, 0x1a, 0x6d, 0xfc, 0xf9, 0xdb, 0x9a }, + { 0x41, 0x03, 0x7d, 0x2e, 0xdc, 0xdc, 0xe0, 0xc4, 0x9b, 0x7f, 0xb4, 0xa6, 0xaa, 0x09, 0x99, 0xca, 0x66, 0x97, 0x6c, 0x74, 0x83, 0xaf, 0xe6, 0x31, 0xd4, 0xed, 0xa2, 0x83, 0x14, 0x4f, 0x6d, 0xfc }, + { 0xc4, 0x46, 0x6f, 0x84, 0x97, 0xca, 0x2e, 0xeb, 0x45, 0x83, 0xa0, 0xb0, 0x8e, 0x9d, 0x9a, 0xc7, 0x43, 0x95, 0x70, 0x9f, 0xda, 0x10, 0x9d, 0x24, 0xf2, 0xe4, 0x46, 0x21, 0x96, 0x77, 0x9c, 0x5d }, + { 0x75, 0xf6, 0x09, 0x33, 0x8a, 0xa6, 0x7d, 0x96, 0x9a, 0x2a, 0xe2, 0xa2, 0x36, 0x2b, 0x2d, 0xa9, 0xd7, 0x7c, 0x69, 0x5d, 0xfd, 0x1d, 0xf7, 0x22, 0x4a, 0x69, 0x01, 0xdb, 0x93, 0x2c, 0x33, 0x64 }, + { 0x68, 0x60, 0x6c, 0xeb, 0x98, 0x9d, 0x54, 0x88, 0xfc, 0x7c, 0xf6, 0x49, 0xf3, 0xd7, 0xc2, 0x72, 0xef, 0x05, 0x5d, 0xa1, 0xa9, 0x3f, 0xae, 0xcd, 0x55, 0xfe, 0x06, 0xf6, 0x96, 0x70, 0x98, 0xca }, + { 0x44, 0x34, 0x6b, 0xde, 0xb7, 0xe0, 0x52, 0xf6, 0x25, 0x50, 0x48, 0xf0, 0xd9, 0xb4, 0x2c, 0x42, 0x5b, 0xab, 0x9c, 0x3d, 0xd2, 0x41, 0x68, 0x21, 0x2c, 0x3e, 0xcf, 0x1e, 0xbf, 0x34, 0xe6, 0xae }, + { 0x8e, 0x9c, 0xf6, 0xe1, 0xf3, 0x66, 0x47, 0x1f, 0x2a, 0xc7, 0xd2, 0xee, 0x9b, 0x5e, 0x62, 0x66, 0xfd, 0xa7, 0x1f, 0x8f, 0x2e, 0x41, 0x09, 0xf2, 0x23, 0x7e, 0xd5, 0xf8, 0x81, 0x3f, 0xc7, 0x18 }, + { 0x84, 0xbb, 0xeb, 0x84, 0x06, 0xd2, 0x50, 0x95, 0x1f, 0x8c, 0x1b, 0x3e, 0x86, 0xa7, 0xc0, 0x10, 0x08, 0x29, 0x21, 0x83, 0x3d, 0xfd, 0x95, 0x55, 0xa2, 0xf9, 0x09, 0xb1, 0x08, 0x6e, 0xb4, 0xb8 }, + { 0xee, 0x66, 0x6f, 0x3e, 0xef, 0x0f, 0x7e, 0x2a, 0x9c, 0x22, 0x29, 0x58, 0xc9, 0x7e, 0xaf, 0x35, 0xf5, 0x1c, 0xed, 0x39, 0x3d, 0x71, 0x44, 0x85, 0xab, 0x09, 0xa0, 0x69, 0x34, 0x0f, 0xdf, 0x88 }, + { 0xc1, 0x53, 0xd3, 0x4a, 0x65, 0xc4, 0x7b, 0x4a, 0x62, 0xc5, 0xca, 0xcf, 0x24, 0x01, 0x09, 0x75, 0xd0, 0x35, 0x6b, 0x2f, 0x32, 0xc8, 0xf5, 0xda, 0x53, 0x0d, 0x33, 0x88, 0x16, 0xad, 0x5d, 0xe6 }, + { 0x9f, 0xc5, 0x45, 0x01, 0x09, 0xe1, 0xb7, 0x79, 0xf6, 0xc7, 0xae, 0x79, 0xd5, 0x6c, 0x27, 0x63, 0x5c, 0x8d, 0xd4, 0x26, 0xc5, 0xa9, 0xd5, 0x4e, 0x25, 0x78, 0xdb, 0x98, 0x9b, 0x8c, 0x3b, 0x4e }, + { 0xd1, 0x2b, 0xf3, 0x73, 0x2e, 0xf4, 0xaf, 0x5c, 0x22, 0xfa, 0x90, 0x35, 0x6a, 0xf8, 0xfc, 0x50, 0xfc, 0xb4, 0x0f, 0x8f, 0x2e, 0xa5, 0xc8, 0x59, 0x47, 0x37, 0xa3, 0xb3, 0xd5, 0xab, 0xdb, 0xd7 }, + { 0x11, 0x03, 0x0b, 0x92, 0x89, 0xbb, 0xa5, 0xaf, 0x65, 0x26, 0x06, 0x72, 0xab, 0x6f, 0xee, 0x88, 0xb8, 0x74, 0x20, 0xac, 0xef, 0x4a, 0x17, 0x89, 0xa2, 0x07, 0x3b, 0x7e, 0xc2, 0xf2, 0xa0, 0x9e }, + { 0x69, 0xcb, 0x19, 0x2b, 0x84, 0x44, 0x00, 0x5c, 0x8c, 0x0c, 0xeb, 0x12, 0xc8, 0x46, 0x86, 0x07, 0x68, 0x18, 0x8c, 0xda, 0x0a, 0xec, 0x27, 0xa9, 0xc8, 0xa5, 0x5c, 0xde, 0xe2, 0x12, 0x36, 0x32 }, + { 0xdb, 0x44, 0x4c, 0x15, 0x59, 0x7b, 0x5f, 0x1a, 0x03, 0xd1, 0xf9, 0xed, 0xd1, 0x6e, 0x4a, 0x9f, 0x43, 0xa6, 0x67, 0xcc, 0x27, 0x51, 0x75, 0xdf, 0xa2, 0xb7, 0x04, 0xe3, 0xbb, 0x1a, 0x9b, 0x83 }, + { 0x3f, 0xb7, 0x35, 0x06, 0x1a, 0xbc, 0x51, 0x9d, 0xfe, 0x97, 0x9e, 0x54, 0xc1, 0xee, 0x5b, 0xfa, 0xd0, 0xa9, 0xd8, 0x58, 0xb3, 0x31, 0x5b, 0xad, 0x34, 0xbd, 0xe9, 0x99, 0xef, 0xd7, 0x24, 0xdd }, + }; + unsigned char inp[1000], out[1000]; + unsigned char key[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }; + unsigned long ilen, klen = sizeof(key), mlen = 32; + blake2smac_state st; + + for (ilen = 0; ilen < 256; ilen++) inp[ilen] = (unsigned char)ilen; + + for (ilen = 0; ilen < 256; ilen++) { + const unsigned char *mac = tests[ilen]; + unsigned long olen = mlen; + /* process piece by piece */ + if (ilen > 15) { + blake2smac_init(&st, olen, key, klen); + blake2smac_process(&st, (unsigned char*)inp, 5); + blake2smac_process(&st, (unsigned char*)inp + 5, 4); + blake2smac_process(&st, (unsigned char*)inp + 9, 3); + blake2smac_process(&st, (unsigned char*)inp + 12, 2); + blake2smac_process(&st, (unsigned char*)inp + 14, 1); + blake2smac_process(&st, (unsigned char*)inp + 15, ilen - 15); + blake2smac_done(&st, out, &olen); + if (compare_testvector(out, olen, mac, mlen, "BLAKE2S MAC multi", ilen) != 0) return CRYPT_FAIL_TESTVECTOR; + } + /* process in one go */ + blake2smac_init(&st, olen, key, klen); + blake2smac_process(&st, (unsigned char*)inp, ilen); + blake2smac_done(&st, out, &olen); + if (compare_testvector(out, olen, mac, mlen, "BLAKE2S MAC single", ilen) != 0) return CRYPT_FAIL_TESTVECTOR; + } + return CRYPT_OK; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/f9/f9_done.c b/fsbl/lib/libtomcrypt/src/mac/f9/f9_done.c new file mode 100644 index 000000000..8d2ccb056 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/f9/f9_done.c @@ -0,0 +1,75 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file f9_done.c + f9 Support, terminate the state +*/ + +#ifdef LTC_F9_MODE + +/** Terminate the f9-MAC state + @param f9 f9 state to terminate + @param out [out] Destination for the MAC tag + @param outlen [in/out] Destination size and final tag size + Return CRYPT_OK on success +*/ +int f9_done(f9_state *f9, unsigned char *out, unsigned long *outlen) +{ + int err, x; + LTC_ARGCHK(f9 != NULL); + LTC_ARGCHK(out != NULL); + + /* check structure */ + if ((err = cipher_is_valid(f9->cipher)) != CRYPT_OK) { + return err; + } + + if ((f9->blocksize > cipher_descriptor[f9->cipher].block_length) || (f9->blocksize < 0) || + (f9->buflen > f9->blocksize) || (f9->buflen < 0)) { + return CRYPT_INVALID_ARG; + } + + if (f9->buflen != 0) { + /* encrypt */ + cipher_descriptor[f9->cipher].ecb_encrypt(f9->IV, f9->IV, &f9->key); + f9->buflen = 0; + for (x = 0; x < f9->blocksize; x++) { + f9->ACC[x] ^= f9->IV[x]; + } + } + + /* schedule modified key */ + if ((err = cipher_descriptor[f9->cipher].setup(f9->akey, f9->keylen, 0, &f9->key)) != CRYPT_OK) { + return err; + } + + /* encrypt the ACC */ + cipher_descriptor[f9->cipher].ecb_encrypt(f9->ACC, f9->ACC, &f9->key); + cipher_descriptor[f9->cipher].done(&f9->key); + + /* extract tag */ + for (x = 0; x < f9->blocksize && (unsigned long)x < *outlen; x++) { + out[x] = f9->ACC[x]; + } + *outlen = x; + +#ifdef LTC_CLEAN_STACK + zeromem(f9, sizeof(*f9)); +#endif + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/mac/f9/f9_file.c b/fsbl/lib/libtomcrypt/src/mac/f9/f9_file.c new file mode 100644 index 000000000..04d509bfc --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/f9/f9_file.c @@ -0,0 +1,97 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file f9_file.c + f9 support, process a file, Tom St Denis +*/ + +#ifdef LTC_F9_MODE + +/** + f9 a file + @param cipher The index of the cipher desired + @param key The secret key + @param keylen The length of the secret key (octets) + @param fname The name of the file you wish to f9 + @param out [out] Where the authentication tag is to be stored + @param outlen [in/out] The max size and resulting size of the authentication tag + @return CRYPT_OK if successful, CRYPT_NOP if file support has been disabled +*/ +int f9_file(int cipher, + const unsigned char *key, unsigned long keylen, + const char *fname, + unsigned char *out, unsigned long *outlen) +{ +#ifdef LTC_NO_FILE + LTC_UNUSED_PARAM(cipher); + LTC_UNUSED_PARAM(key); + LTC_UNUSED_PARAM(keylen); + LTC_UNUSED_PARAM(fname); + LTC_UNUSED_PARAM(out); + LTC_UNUSED_PARAM(outlen); + return CRYPT_NOP; +#else + size_t x; + int err; + f9_state f9; + FILE *in; + unsigned char *buf; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(fname != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + if ((buf = XMALLOC(LTC_FILE_READ_BUFSIZE)) == NULL) { + return CRYPT_MEM; + } + + if ((err = f9_init(&f9, cipher, key, keylen)) != CRYPT_OK) { + goto LBL_ERR; + } + + in = fopen(fname, "rb"); + if (in == NULL) { + err = CRYPT_FILE_NOTFOUND; + goto LBL_ERR; + } + + do { + x = fread(buf, 1, LTC_FILE_READ_BUFSIZE, in); + if ((err = f9_process(&f9, buf, (unsigned long)x)) != CRYPT_OK) { + fclose(in); + goto LBL_CLEANBUF; + } + } while (x == LTC_FILE_READ_BUFSIZE); + + if (fclose(in) != 0) { + err = CRYPT_ERROR; + goto LBL_CLEANBUF; + } + + err = f9_done(&f9, out, outlen); + +LBL_CLEANBUF: + zeromem(buf, LTC_FILE_READ_BUFSIZE); +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(&f9, sizeof(f9_state)); +#endif + XFREE(buf); + return err; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/f9/f9_init.c b/fsbl/lib/libtomcrypt/src/mac/f9/f9_init.c new file mode 100644 index 000000000..ba59b20e9 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/f9/f9_init.c @@ -0,0 +1,68 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file f9_init.c + F9 Support, start an F9 state +*/ + +#ifdef LTC_F9_MODE + +/** Initialize F9-MAC state + @param f9 [out] f9 state to initialize + @param cipher Index of cipher to use + @param key [in] Secret key + @param keylen Length of secret key in octets + Return CRYPT_OK on success +*/ +int f9_init(f9_state *f9, int cipher, const unsigned char *key, unsigned long keylen) +{ + int x, err; + + LTC_ARGCHK(f9 != NULL); + LTC_ARGCHK(key != NULL); + + /* schedule the key */ + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + +#ifdef LTC_FAST + if (cipher_descriptor[cipher].block_length % sizeof(LTC_FAST_TYPE)) { + return CRYPT_INVALID_ARG; + } +#endif + + if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, &f9->key)) != CRYPT_OK) { + goto done; + } + + /* make the second key */ + for (x = 0; (unsigned)x < keylen; x++) { + f9->akey[x] = key[x] ^ 0xAA; + } + + /* setup struct */ + zeromem(f9->IV, cipher_descriptor[cipher].block_length); + zeromem(f9->ACC, cipher_descriptor[cipher].block_length); + f9->blocksize = cipher_descriptor[cipher].block_length; + f9->cipher = cipher; + f9->buflen = 0; + f9->keylen = keylen; +done: + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/mac/f9/f9_memory.c b/fsbl/lib/libtomcrypt/src/mac/f9/f9_memory.c new file mode 100644 index 000000000..70c694b31 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/f9/f9_memory.c @@ -0,0 +1,69 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file f9_process.c + f9 Support, Process a block through F9-MAC +*/ + +#ifdef LTC_F9_MODE + +/** f9-MAC a block of memory + @param cipher Index of cipher to use + @param key [in] Secret key + @param keylen Length of key in octets + @param in [in] Message to MAC + @param inlen Length of input in octets + @param out [out] Destination for the MAC tag + @param outlen [in/out] Output size and final tag size + Return CRYPT_OK on success. +*/ +int f9_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + f9_state *f9; + int err; + + /* is the cipher valid? */ + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + + /* Use accelerator if found */ + if (cipher_descriptor[cipher].f9_memory != NULL) { + return cipher_descriptor[cipher].f9_memory(key, keylen, in, inlen, out, outlen); + } + + f9 = XCALLOC(1, sizeof(*f9)); + if (f9 == NULL) { + return CRYPT_MEM; + } + + if ((err = f9_init(f9, cipher, key, keylen)) != CRYPT_OK) { + goto done; + } + + if ((err = f9_process(f9, in, inlen)) != CRYPT_OK) { + goto done; + } + + err = f9_done(f9, out, outlen); +done: + XFREE(f9); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/f9/f9_memory_multi.c b/fsbl/lib/libtomcrypt/src/mac/f9/f9_memory_multi.c new file mode 100644 index 000000000..2c1d31a0d --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/f9/f9_memory_multi.c @@ -0,0 +1,88 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" +#include + +/** + @file f9_memory_multi.c + f9 support, process multiple blocks of memory, Tom St Denis +*/ + +#ifdef LTC_F9_MODE + +/** + f9 multiple blocks of memory + @param cipher The index of the desired cipher + @param key The secret key + @param keylen The length of the secret key (octets) + @param out [out] The destination of the authentication tag + @param outlen [in/out] The max size and resulting size of the authentication tag (octets) + @param in The data to send through f9 + @param inlen The length of the data to send through f9 (octets) + @param ... tuples of (data,len) pairs to f9, terminated with a (NULL,x) (x=don't care) + @return CRYPT_OK if successful +*/ +int f9_memory_multi(int cipher, + const unsigned char *key, unsigned long keylen, + unsigned char *out, unsigned long *outlen, + const unsigned char *in, unsigned long inlen, ...) +{ + int err; + f9_state *f9; + va_list args; + const unsigned char *curptr; + unsigned long curlen; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* allocate ram for f9 state */ + f9 = XMALLOC(sizeof(f9_state)); + if (f9 == NULL) { + return CRYPT_MEM; + } + + /* f9 process the message */ + if ((err = f9_init(f9, cipher, key, keylen)) != CRYPT_OK) { + goto LBL_ERR; + } + va_start(args, inlen); + curptr = in; + curlen = inlen; + for (;;) { + /* process buf */ + if ((err = f9_process(f9, curptr, curlen)) != CRYPT_OK) { + goto LBL_ERR; + } + /* step to next */ + curptr = va_arg(args, const unsigned char*); + if (curptr == NULL) { + break; + } + curlen = va_arg(args, unsigned long); + } + if ((err = f9_done(f9, out, outlen)) != CRYPT_OK) { + goto LBL_ERR; + } +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(f9, sizeof(f9_state)); +#endif + XFREE(f9); + va_end(args); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/f9/f9_process.c b/fsbl/lib/libtomcrypt/src/mac/f9/f9_process.c new file mode 100644 index 000000000..ba4d39fff --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/f9/f9_process.c @@ -0,0 +1,76 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file f9_process.c + f9 Support, process blocks with f9 +*/ + +#ifdef LTC_F9_MODE + +/** Process data through f9-MAC + @param f9 The f9-MAC state + @param in Input data to process + @param inlen Length of input in octets + Return CRYPT_OK on success +*/ +int f9_process(f9_state *f9, const unsigned char *in, unsigned long inlen) +{ + int err, x; + + LTC_ARGCHK(f9 != NULL); + LTC_ARGCHK(in != NULL); + + /* check structure */ + if ((err = cipher_is_valid(f9->cipher)) != CRYPT_OK) { + return err; + } + + if ((f9->blocksize > cipher_descriptor[f9->cipher].block_length) || (f9->blocksize < 0) || + (f9->buflen > f9->blocksize) || (f9->buflen < 0)) { + return CRYPT_INVALID_ARG; + } + +#ifdef LTC_FAST + if (f9->buflen == 0) { + while (inlen >= (unsigned long)f9->blocksize) { + for (x = 0; x < f9->blocksize; x += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST(&(f9->IV[x]))) ^= *(LTC_FAST_TYPE_PTR_CAST(&(in[x]))); + } + cipher_descriptor[f9->cipher].ecb_encrypt(f9->IV, f9->IV, &f9->key); + for (x = 0; x < f9->blocksize; x += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST(&(f9->ACC[x]))) ^= *(LTC_FAST_TYPE_PTR_CAST(&(f9->IV[x]))); + } + in += f9->blocksize; + inlen -= f9->blocksize; + } + } +#endif + + while (inlen) { + if (f9->buflen == f9->blocksize) { + cipher_descriptor[f9->cipher].ecb_encrypt(f9->IV, f9->IV, &f9->key); + for (x = 0; x < f9->blocksize; x++) { + f9->ACC[x] ^= f9->IV[x]; + } + f9->buflen = 0; + } + f9->IV[f9->buflen++] ^= *in++; + --inlen; + } + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/mac/f9/f9_test.c b/fsbl/lib/libtomcrypt/src/mac/f9/f9_test.c new file mode 100644 index 000000000..ca23acc58 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/f9/f9_test.c @@ -0,0 +1,76 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file f9_test.c + f9 Support, Test F9 mode +*/ + +#ifdef LTC_F9_MODE + +/** Test f9-MAC mode + Return CRYPT_OK on succes +*/ +int f9_test(void) +{ +#ifdef LTC_NO_TEST + return CRYPT_NOP; +#else + static const struct { + int msglen; + unsigned char K[16], M[128], T[4]; + } tests[] = { +{ + 20, + { 0x2B, 0xD6, 0x45, 0x9F, 0x82, 0xC5, 0xB3, 0x00, 0x95, 0x2C, 0x49, 0x10, 0x48, 0x81, 0xFF, 0x48 }, + { 0x38, 0xA6, 0xF0, 0x56, 0xB8, 0xAE, 0xFD, 0xA9, 0x33, 0x32, 0x34, 0x62, 0x63, 0x39, 0x38, 0x61, 0x37, 0x34, 0x79, 0x40 }, + { 0x46, 0xE0, 0x0D, 0x4B } +}, + +{ + 105, + { 0x83, 0xFD, 0x23, 0xA2, 0x44, 0xA7, 0x4C, 0xF3, 0x58, 0xDA, 0x30, 0x19, 0xF1, 0x72, 0x26, 0x35 }, + { 0x36, 0xAF, 0x61, 0x44, 0x4F, 0x30, 0x2A, 0xD2, + 0x35, 0xC6, 0x87, 0x16, 0x63, 0x3C, 0x66, 0xFB, 0x75, 0x0C, 0x26, 0x68, 0x65, 0xD5, 0x3C, 0x11, 0xEA, 0x05, 0xB1, 0xE9, 0xFA, 0x49, 0xC8, 0x39, 0x8D, 0x48, 0xE1, 0xEF, 0xA5, 0x90, 0x9D, 0x39, + 0x47, 0x90, 0x28, 0x37, 0xF5, 0xAE, 0x96, 0xD5, 0xA0, 0x5B, 0xC8, 0xD6, 0x1C, 0xA8, 0xDB, 0xEF, 0x1B, 0x13, 0xA4, 0xB4, 0xAB, 0xFE, 0x4F, 0xB1, 0x00, 0x60, 0x45, 0xB6, 0x74, 0xBB, 0x54, 0x72, + 0x93, 0x04, 0xC3, 0x82, 0xBE, 0x53, 0xA5, 0xAF, 0x05, 0x55, 0x61, 0x76, 0xF6, 0xEA, 0xA2, 0xEF, 0x1D, 0x05, 0xE4, 0xB0, 0x83, 0x18, 0x1E, 0xE6, 0x74, 0xCD, 0xA5, 0xA4, 0x85, 0xF7, 0x4D, 0x7A, + 0x40|0x80 }, + { 0x95, 0xAE, 0x41, 0xBA }, +} +}; + unsigned char T[16]; + unsigned long taglen; + int err, x, idx; + + /* find kasumi */ + if ((idx = find_cipher("kasumi")) == -1) { + return CRYPT_NOP; + } + + for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { + taglen = 4; + if ((err = f9_memory(idx, tests[x].K, 16, tests[x].M, tests[x].msglen, T, &taglen)) != CRYPT_OK) { + return err; + } + if (compare_testvector(T, taglen, tests[x].T, 4, "F9", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + + return CRYPT_OK; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/mac/hmac/hmac_done.c b/fsbl/lib/libtomcrypt/src/mac/hmac/hmac_done.c new file mode 100644 index 000000000..8a9b69b12 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/hmac/hmac_done.c @@ -0,0 +1,107 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file hmac_done.c + HMAC support, terminate stream, Tom St Denis/Dobes Vandermeer +*/ + +#ifdef LTC_HMAC + +#define LTC_HMAC_BLOCKSIZE hash_descriptor[hash].blocksize + +/** + Terminate an HMAC session + @param hmac The HMAC state + @param out [out] The destination of the HMAC authentication tag + @param outlen [in/out] The max size and resulting size of the HMAC authentication tag + @return CRYPT_OK if successful +*/ +int hmac_done(hmac_state *hmac, unsigned char *out, unsigned long *outlen) +{ + unsigned char *buf, *isha; + unsigned long hashsize, i; + int hash, err; + + LTC_ARGCHK(hmac != NULL); + LTC_ARGCHK(out != NULL); + + /* test hash */ + hash = hmac->hash; + if((err = hash_is_valid(hash)) != CRYPT_OK) { + return err; + } + + /* get the hash message digest size */ + hashsize = hash_descriptor[hash].hashsize; + + /* allocate buffers */ + buf = XMALLOC(LTC_HMAC_BLOCKSIZE); + isha = XMALLOC(hashsize); + if (buf == NULL || isha == NULL) { + if (buf != NULL) { + XFREE(buf); + } + if (isha != NULL) { + XFREE(isha); + } + return CRYPT_MEM; + } + + /* Get the hash of the first HMAC vector plus the data */ + if ((err = hash_descriptor[hash].done(&hmac->md, isha)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* Create the second HMAC vector vector for step (3) */ + for(i=0; i < LTC_HMAC_BLOCKSIZE; i++) { + buf[i] = hmac->key[i] ^ 0x5C; + } + + /* Now calculate the "outer" hash for step (5), (6), and (7) */ + if ((err = hash_descriptor[hash].init(&hmac->md)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = hash_descriptor[hash].process(&hmac->md, buf, LTC_HMAC_BLOCKSIZE)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = hash_descriptor[hash].process(&hmac->md, isha, hashsize)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = hash_descriptor[hash].done(&hmac->md, buf)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* copy to output */ + for (i = 0; i < hashsize && i < *outlen; i++) { + out[i] = buf[i]; + } + *outlen = i; + + err = CRYPT_OK; +LBL_ERR: + XFREE(hmac->key); +#ifdef LTC_CLEAN_STACK + zeromem(isha, hashsize); + zeromem(buf, hashsize); + zeromem(hmac, sizeof(*hmac)); +#endif + + XFREE(isha); + XFREE(buf); + + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/hmac/hmac_file.c b/fsbl/lib/libtomcrypt/src/mac/hmac/hmac_file.c new file mode 100644 index 000000000..0e1a16310 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/hmac/hmac_file.c @@ -0,0 +1,100 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file hmac_file.c + HMAC support, process a file, Tom St Denis/Dobes Vandermeer +*/ + +#ifdef LTC_HMAC + +/** + HMAC a file + @param hash The index of the hash you wish to use + @param fname The name of the file you wish to HMAC + @param key The secret key + @param keylen The length of the secret key + @param out [out] The HMAC authentication tag + @param outlen [in/out] The max size and resulting size of the authentication tag + @return CRYPT_OK if successful, CRYPT_NOP if file support has been disabled +*/ +int hmac_file(int hash, const char *fname, + const unsigned char *key, unsigned long keylen, + unsigned char *out, unsigned long *outlen) +{ +#ifdef LTC_NO_FILE + LTC_UNUSED_PARAM(hash); + LTC_UNUSED_PARAM(fname); + LTC_UNUSED_PARAM(key); + LTC_UNUSED_PARAM(keylen); + LTC_UNUSED_PARAM(out); + LTC_UNUSED_PARAM(outlen); + return CRYPT_NOP; +#else + hmac_state hmac; + FILE *in; + unsigned char *buf; + size_t x; + int err; + + LTC_ARGCHK(fname != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + if ((buf = XMALLOC(LTC_FILE_READ_BUFSIZE)) == NULL) { + return CRYPT_MEM; + } + + if ((err = hash_is_valid(hash)) != CRYPT_OK) { + goto LBL_ERR; + } + + if ((err = hmac_init(&hmac, hash, key, keylen)) != CRYPT_OK) { + goto LBL_ERR; + } + + in = fopen(fname, "rb"); + if (in == NULL) { + err = CRYPT_FILE_NOTFOUND; + goto LBL_ERR; + } + + do { + x = fread(buf, 1, LTC_FILE_READ_BUFSIZE, in); + if ((err = hmac_process(&hmac, buf, (unsigned long)x)) != CRYPT_OK) { + fclose(in); /* we don't trap this error since we're already returning an error! */ + goto LBL_CLEANBUF; + } + } while (x == LTC_FILE_READ_BUFSIZE); + + if (fclose(in) != 0) { + err = CRYPT_ERROR; + goto LBL_CLEANBUF; + } + + err = hmac_done(&hmac, out, outlen); + +LBL_CLEANBUF: + zeromem(buf, LTC_FILE_READ_BUFSIZE); +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(&hmac, sizeof(hmac_state)); +#endif + XFREE(buf); + return err; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/hmac/hmac_init.c b/fsbl/lib/libtomcrypt/src/mac/hmac/hmac_init.c new file mode 100644 index 000000000..6b6505e57 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/hmac/hmac_init.c @@ -0,0 +1,108 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file hmac_init.c + HMAC support, initialize state, Tom St Denis/Dobes Vandermeer +*/ + +#ifdef LTC_HMAC + +#define LTC_HMAC_BLOCKSIZE hash_descriptor[hash].blocksize + +/** + Initialize an HMAC context. + @param hmac The HMAC state + @param hash The index of the hash you want to use + @param key The secret key + @param keylen The length of the secret key (octets) + @return CRYPT_OK if successful +*/ +int hmac_init(hmac_state *hmac, int hash, const unsigned char *key, unsigned long keylen) +{ + unsigned char *buf; + unsigned long hashsize; + unsigned long i, z; + int err; + + LTC_ARGCHK(hmac != NULL); + LTC_ARGCHK(key != NULL); + + /* valid hash? */ + if ((err = hash_is_valid(hash)) != CRYPT_OK) { + return err; + } + hmac->hash = hash; + hashsize = hash_descriptor[hash].hashsize; + + /* valid key length? */ + if (keylen == 0) { + return CRYPT_INVALID_KEYSIZE; + } + + /* allocate ram for buf */ + buf = XMALLOC(LTC_HMAC_BLOCKSIZE); + if (buf == NULL) { + return CRYPT_MEM; + } + + /* allocate memory for key */ + hmac->key = XMALLOC(LTC_HMAC_BLOCKSIZE); + if (hmac->key == NULL) { + XFREE(buf); + return CRYPT_MEM; + } + + /* (1) make sure we have a large enough key */ + if(keylen > LTC_HMAC_BLOCKSIZE) { + z = LTC_HMAC_BLOCKSIZE; + if ((err = hash_memory(hash, key, keylen, hmac->key, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + keylen = hashsize; + } else { + XMEMCPY(hmac->key, key, (size_t)keylen); + } + + if(keylen < LTC_HMAC_BLOCKSIZE) { + zeromem((hmac->key) + keylen, (size_t)(LTC_HMAC_BLOCKSIZE - keylen)); + } + + /* Create the initialization vector for step (3) */ + for(i=0; i < LTC_HMAC_BLOCKSIZE; i++) { + buf[i] = hmac->key[i] ^ 0x36; + } + + /* Pre-pend that to the hash data */ + if ((err = hash_descriptor[hash].init(&hmac->md)) != CRYPT_OK) { + goto LBL_ERR; + } + + if ((err = hash_descriptor[hash].process(&hmac->md, buf, LTC_HMAC_BLOCKSIZE)) != CRYPT_OK) { + goto LBL_ERR; + } + goto done; +LBL_ERR: + /* free the key since we failed */ + XFREE(hmac->key); +done: +#ifdef LTC_CLEAN_STACK + zeromem(buf, LTC_HMAC_BLOCKSIZE); +#endif + + XFREE(buf); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/hmac/hmac_memory.c b/fsbl/lib/libtomcrypt/src/mac/hmac/hmac_memory.c new file mode 100644 index 000000000..9a3a199b7 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/hmac/hmac_memory.c @@ -0,0 +1,86 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file hmac_memory.c + HMAC support, process a block of memory, Tom St Denis/Dobes Vandermeer +*/ + +#ifdef LTC_HMAC + +/** + HMAC a block of memory to produce the authentication tag + @param hash The index of the hash to use + @param key The secret key + @param keylen The length of the secret key (octets) + @param in The data to HMAC + @param inlen The length of the data to HMAC (octets) + @param out [out] Destination of the authentication tag + @param outlen [in/out] Max size and resulting size of authentication tag + @return CRYPT_OK if successful +*/ +int hmac_memory(int hash, + const unsigned char *key, unsigned long keylen, + const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + hmac_state *hmac; + int err; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* make sure hash descriptor is valid */ + if ((err = hash_is_valid(hash)) != CRYPT_OK) { + return err; + } + + /* is there a descriptor? */ + if (hash_descriptor[hash].hmac_block != NULL) { + return hash_descriptor[hash].hmac_block(key, keylen, in, inlen, out, outlen); + } + + /* nope, so call the hmac functions */ + /* allocate ram for hmac state */ + hmac = XMALLOC(sizeof(hmac_state)); + if (hmac == NULL) { + return CRYPT_MEM; + } + + if ((err = hmac_init(hmac, hash, key, keylen)) != CRYPT_OK) { + goto LBL_ERR; + } + + if ((err = hmac_process(hmac, in, inlen)) != CRYPT_OK) { + goto LBL_ERR; + } + + if ((err = hmac_done(hmac, out, outlen)) != CRYPT_OK) { + goto LBL_ERR; + } + + err = CRYPT_OK; +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(hmac, sizeof(hmac_state)); +#endif + + XFREE(hmac); + return err; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/hmac/hmac_memory_multi.c b/fsbl/lib/libtomcrypt/src/mac/hmac/hmac_memory_multi.c new file mode 100644 index 000000000..6e3d0fefe --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/hmac/hmac_memory_multi.c @@ -0,0 +1,90 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" +#include + +/** + @file hmac_memory_multi.c + HMAC support, process multiple blocks of memory, Tom St Denis/Dobes Vandermeer +*/ + +#ifdef LTC_HMAC + +/** + HMAC multiple blocks of memory to produce the authentication tag + @param hash The index of the hash to use + @param key The secret key + @param keylen The length of the secret key (octets) + @param out [out] Destination of the authentication tag + @param outlen [in/out] Max size and resulting size of authentication tag + @param in The data to HMAC + @param inlen The length of the data to HMAC (octets) + @param ... tuples of (data,len) pairs to HMAC, terminated with a (NULL,x) (x=don't care) + @return CRYPT_OK if successful +*/ +int hmac_memory_multi(int hash, + const unsigned char *key, unsigned long keylen, + unsigned char *out, unsigned long *outlen, + const unsigned char *in, unsigned long inlen, ...) + +{ + hmac_state *hmac; + int err; + va_list args; + const unsigned char *curptr; + unsigned long curlen; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* allocate ram for hmac state */ + hmac = XMALLOC(sizeof(hmac_state)); + if (hmac == NULL) { + return CRYPT_MEM; + } + + if ((err = hmac_init(hmac, hash, key, keylen)) != CRYPT_OK) { + goto LBL_ERR; + } + + va_start(args, inlen); + curptr = in; + curlen = inlen; + for (;;) { + /* process buf */ + if ((err = hmac_process(hmac, curptr, curlen)) != CRYPT_OK) { + goto LBL_ERR; + } + /* step to next */ + curptr = va_arg(args, const unsigned char*); + if (curptr == NULL) { + break; + } + curlen = va_arg(args, unsigned long); + } + if ((err = hmac_done(hmac, out, outlen)) != CRYPT_OK) { + goto LBL_ERR; + } +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(hmac, sizeof(hmac_state)); +#endif + XFREE(hmac); + va_end(args); + return err; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/hmac/hmac_process.c b/fsbl/lib/libtomcrypt/src/mac/hmac/hmac_process.c new file mode 100644 index 000000000..8da62c130 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/hmac/hmac_process.c @@ -0,0 +1,41 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file hmac_process.c + HMAC support, process data, Tom St Denis/Dobes Vandermeer +*/ + +#ifdef LTC_HMAC + +/** + Process data through HMAC + @param hmac The hmac state + @param in The data to send through HMAC + @param inlen The length of the data to HMAC (octets) + @return CRYPT_OK if successful +*/ +int hmac_process(hmac_state *hmac, const unsigned char *in, unsigned long inlen) +{ + int err; + LTC_ARGCHK(hmac != NULL); + LTC_ARGCHK(in != NULL); + if ((err = hash_is_valid(hmac->hash)) != CRYPT_OK) { + return err; + } + return hash_descriptor[hmac->hash].process(&hmac->md, in, inlen); +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/hmac/hmac_test.c b/fsbl/lib/libtomcrypt/src/mac/hmac/hmac_test.c new file mode 100644 index 000000000..1570a76ef --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/hmac/hmac_test.c @@ -0,0 +1,630 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file hmac_test.c + HMAC support, self-test, Tom St Denis/Dobes Vandermeer/Steffen Jaeckel +*/ + +#ifdef LTC_HMAC + +#define LTC_HMAC_BLOCKSIZE hash_descriptor[hash].blocksize + +/* + TEST CASES SOURCE: + +Network Working Group P. Cheng +Request for Comments: 2202 IBM +Category: Informational R. Glenn + NIST + September 1997 + + Test Cases for HMAC-MD5 and HMAC-SHA-1 + +******************************************************************************* + +Network Working Group J. Kapp +Request for Comments: 2286 Reaper Technologies +Category: Informational February 1998 + + Test Cases for HMAC-RIPEMD160 and HMAC-RIPEMD128 + +******************************************************************************* + +Network Working Group M. Nystrom +Request for Comments: 4231 RSA Security +Category: Standards Track December 2005 + + Identifiers and Test Vectors for HMAC-SHA-224, HMAC-SHA-256, + HMAC-SHA-384, and HMAC-SHA-512 +*/ + +/** + HMAC self-test + @return CRYPT_OK if successful, CRYPT_NOP if tests have been disabled. +*/ +int hmac_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + unsigned char digest[MAXBLOCKSIZE]; + int i; + + static const unsigned char hmac_test_case_keys[][136] = { + { /* 1 */ + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b + }, +#ifdef LTC_TEST_EXT + { /* 2 */ + 0x4a, 0x65, 0x66, 0x65 + }, + { /* 4 */ + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, + 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, + 0x15, 0x16, 0x17, 0x18, 0x19 + }, + { /* 5 */ + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, + 0x0c, 0x0c, 0x0c, 0x0c + }, + { /* 3, 6, 7 */ + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa + } +#endif /* LTC_TEST_EXT */ + }; + + + static const unsigned char hmac_test_case_data[][153] = { + { + "Hi There" + }, +#ifdef LTC_TEST_EXT + { + "what do ya want for nothing?" + }, + { + 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, + 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, + 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, + 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, + 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd + }, + { + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd + }, + { + "Test With Truncation" + }, + { + "Test Using Larger Than Block-Size Key - Hash Key First" + }, + { + "Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data" + }, + { + "This is a test using a larger than block-size key and a larger than block-size data. The key needs to be hashed before being used by the HMAC algorithm." + } +#endif /* LTC_TEST_EXT */ + }; + + static const struct hmac_test_case { + const char *num; + const char *algo; + const unsigned char *key; + unsigned long keylen; + const unsigned char *data; + unsigned long datalen; + unsigned char digest[MAXBLOCKSIZE]; + } cases[] = { + /* + RFC 2202 3. Test Cases for HMAC-SHA-1 + */ + { "rfc2202 3.1", "sha1", + hmac_test_case_keys[0], 20, + hmac_test_case_data[0], 8, + {0xb6, 0x17, 0x31, 0x86, 0x55, 0x05, 0x72, 0x64, + 0xe2, 0x8b, 0xc0, 0xb6, 0xfb, 0x37, 0x8c, 0x8e, + 0xf1, 0x46, 0xbe, 0x00} }, + +#ifdef LTC_TEST_EXT + { "rfc2202 3.2", "sha1", + hmac_test_case_keys[1], 4, + hmac_test_case_data[1], 28, + {0xef, 0xfc, 0xdf, 0x6a, 0xe5, 0xeb, 0x2f, 0xa2, + 0xd2, 0x74, 0x16, 0xd5, 0xf1, 0x84, 0xdf, 0x9c, + 0x25, 0x9a, 0x7c, 0x79} }, + + { "rfc2202 3.3", "sha1", + hmac_test_case_keys[4], 20, + hmac_test_case_data[2], 50, + {0x12, 0x5d, 0x73, 0x42, 0xb9, 0xac, 0x11, 0xcd, + 0x91, 0xa3, 0x9a, 0xf4, 0x8a, 0xa1, 0x7b, 0x4f, + 0x63, 0xf1, 0x75, 0xd3} }, + + { "rfc2202 3.4", "sha1", + hmac_test_case_keys[2], 25, + hmac_test_case_data[3], 50, + {0x4c, 0x90, 0x07, 0xf4, 0x02, 0x62, 0x50, 0xc6, + 0xbc, 0x84, 0x14, 0xf9, 0xbf, 0x50, 0xc8, 0x6c, + 0x2d, 0x72, 0x35, 0xda} }, + + { "rfc2202 3.5", "sha1", + hmac_test_case_keys[3], 20, + hmac_test_case_data[4], 20, + {0x4c, 0x1a, 0x03, 0x42, 0x4b, 0x55, 0xe0, 0x7f, 0xe7, 0xf2, + 0x7b, 0xe1, 0xd5, 0x8b, 0xb9, 0x32, 0x4a, 0x9a, 0x5a, 0x04} }, + + { "rfc2202 3.6", "sha1", + hmac_test_case_keys[4], 80, + hmac_test_case_data[5], 54, + {0xaa, 0x4a, 0xe5, 0xe1, 0x52, 0x72, 0xd0, 0x0e, + 0x95, 0x70, 0x56, 0x37, 0xce, 0x8a, 0x3b, 0x55, + 0xed, 0x40, 0x21, 0x12} }, + + { "rfc2202 3.7", "sha1", + hmac_test_case_keys[4], 80, + hmac_test_case_data[6], 73, + {0xe8, 0xe9, 0x9d, 0x0f, 0x45, 0x23, 0x7d, 0x78, 0x6d, + 0x6b, 0xba, 0xa7, 0x96, 0x5c, 0x78, 0x08, 0xbb, 0xff, 0x1a, 0x91} }, +#endif /* LTC_TEST_EXT */ + + /* + RFC 2202 2. Test Cases for HMAC-MD5 + */ + { "rfc2202 2.1", "md5", + hmac_test_case_keys[0], 16, + hmac_test_case_data[0], 8, + {0x92, 0x94, 0x72, 0x7a, 0x36, 0x38, 0xbb, 0x1c, + 0x13, 0xf4, 0x8e, 0xf8, 0x15, 0x8b, 0xfc, 0x9d} }, + +#ifdef LTC_TEST_EXT + { "rfc2202 2.2", "md5", + hmac_test_case_keys[1], 4, + hmac_test_case_data[1], 28, + {0x75, 0x0c, 0x78, 0x3e, 0x6a, 0xb0, 0xb5, 0x03, + 0xea, 0xa8, 0x6e, 0x31, 0x0a, 0x5d, 0xb7, 0x38} }, + + { "rfc2202 2.3", "md5", + hmac_test_case_keys[4], 16, + hmac_test_case_data[2], 50, + {0x56, 0xbe, 0x34, 0x52, 0x1d, 0x14, 0x4c, 0x88, + 0xdb, 0xb8, 0xc7, 0x33, 0xf0, 0xe8, 0xb3, 0xf6} }, + + { "rfc2202 2.4", "md5", + hmac_test_case_keys[2], 25, + hmac_test_case_data[3], 50, + {0x69, 0x7e, 0xaf, 0x0a, 0xca, 0x3a, 0x3a, 0xea, + 0x3a, 0x75, 0x16, 0x47, 0x46, 0xff, 0xaa, 0x79} }, + + { "rfc2202 2.5", "md5", + hmac_test_case_keys[3], 16, + hmac_test_case_data[4], 20, + {0x56, 0x46, 0x1e, 0xf2, 0x34, 0x2e, 0xdc, 0x00, + 0xf9, 0xba, 0xb9, 0x95, 0x69, 0x0e, 0xfd, 0x4c} }, + + { "rfc2202 2.6", "md5", + hmac_test_case_keys[4], 80, + hmac_test_case_data[5], 54, + {0x6b, 0x1a, 0xb7, 0xfe, 0x4b, 0xd7, 0xbf, 0x8f, + 0x0b, 0x62, 0xe6, 0xce, 0x61, 0xb9, 0xd0, 0xcd} }, + + { "rfc2202 2.7", "md5", + hmac_test_case_keys[4], 80, + hmac_test_case_data[6], 73, + {0x6f, 0x63, 0x0f, 0xad, 0x67, 0xcd, 0xa0, 0xee, + 0x1f, 0xb1, 0xf5, 0x62, 0xdb, 0x3a, 0xa5, 0x3e} }, +#endif /* LTC_TEST_EXT */ + + /* + RFC 2286 2. Test Cases for HMAC-RIPEMD160 + */ + { "rfc2286 2.1", "rmd160", + hmac_test_case_keys[0], 20, + hmac_test_case_data[0], 8, + {0x24, 0xcb, 0x4b, 0xd6, 0x7d, 0x20, 0xfc, 0x1a, + 0x5d, 0x2e, 0xd7, 0x73, 0x2d, 0xcc, 0x39, 0x37, + 0x7f, 0x0a, 0x56, 0x68} }, + +#ifdef LTC_TEST_EXT + { "rfc2286 2.2", "rmd160", + hmac_test_case_keys[1], 4, + hmac_test_case_data[1], 28, + {0xdd, 0xa6, 0xc0, 0x21, 0x3a, 0x48, 0x5a, 0x9e, + 0x24, 0xf4, 0x74, 0x20, 0x64, 0xa7, 0xf0, 0x33, + 0xb4, 0x3c, 0x40, 0x69} }, + + { "rfc2286 2.3", "rmd160", + hmac_test_case_keys[4], 20, + hmac_test_case_data[2], 50, + {0xb0, 0xb1, 0x05, 0x36, 0x0d, 0xe7, 0x59, 0x96, + 0x0a, 0xb4, 0xf3, 0x52, 0x98, 0xe1, 0x16, 0xe2, + 0x95, 0xd8, 0xe7, 0xc1} }, + + { "rfc2286 2.4", "rmd160", + hmac_test_case_keys[2], 25, + hmac_test_case_data[3], 50, + {0xd5, 0xca, 0x86, 0x2f, 0x4d, 0x21, 0xd5, 0xe6, + 0x10, 0xe1, 0x8b, 0x4c, 0xf1, 0xbe, 0xb9, 0x7a, + 0x43, 0x65, 0xec, 0xf4} }, + + { "rfc2286 2.5", "rmd160", + hmac_test_case_keys[3], 20, + hmac_test_case_data[4], 20, + {0x76, 0x19, 0x69, 0x39, 0x78, 0xf9, 0x1d, 0x90, + 0x53, 0x9a, 0xe7, 0x86, 0x50, 0x0f, 0xf3, 0xd8, + 0xe0, 0x51, 0x8e, 0x39} }, + + { "rfc2286 2.6", "rmd160", + hmac_test_case_keys[4], 80, + hmac_test_case_data[5], 54, + {0x64, 0x66, 0xca, 0x07, 0xac, 0x5e, 0xac, 0x29, + 0xe1, 0xbd, 0x52, 0x3e, 0x5a, 0xda, 0x76, 0x05, + 0xb7, 0x91, 0xfd, 0x8b} }, + + { "rfc2286 2.7", "rmd160", + hmac_test_case_keys[4], 80, + hmac_test_case_data[6], 73, + {0x69, 0xea, 0x60, 0x79, 0x8d, 0x71, 0x61, 0x6c, + 0xce, 0x5f, 0xd0, 0x87, 0x1e, 0x23, 0x75, 0x4c, + 0xd7, 0x5d, 0x5a, 0x0a} }, +#endif /* LTC_TEST_EXT */ + + /* + RFC 2286 3. Test Cases for HMAC-RIPEMD128 + */ + { "rfc2286 3.1", "rmd128", + hmac_test_case_keys[0], 16, + hmac_test_case_data[0], 8, + {0xfb, 0xf6, 0x1f, 0x94, 0x92, 0xaa, 0x4b, 0xbf, + 0x81, 0xc1, 0x72, 0xe8, 0x4e, 0x07, 0x34, 0xdb} }, + +#ifdef LTC_TEST_EXT + { "rfc2286 3.2", "rmd128", + hmac_test_case_keys[1], 4, + hmac_test_case_data[1], 28, + {0x87, 0x5f, 0x82, 0x88, 0x62, 0xb6, 0xb3, 0x34, + 0xb4, 0x27, 0xc5, 0x5f, 0x9f, 0x7f, 0xf0, 0x9b} }, + + { "rfc2286 3.3", "rmd128", + hmac_test_case_keys[4], 16, + hmac_test_case_data[2], 50, + {0x09, 0xf0, 0xb2, 0x84, 0x6d, 0x2f, 0x54, 0x3d, + 0xa3, 0x63, 0xcb, 0xec, 0x8d, 0x62, 0xa3, 0x8d} }, + + { "rfc2286 3.4", "rmd128", + hmac_test_case_keys[2], 25, + hmac_test_case_data[3], 50, + {0xbd, 0xbb, 0xd7, 0xcf, 0x03, 0xe4, 0x4b, 0x5a, + 0xa6, 0x0a, 0xf8, 0x15, 0xbe, 0x4d, 0x22, 0x94} }, + + { "rfc2286 3.5", "rmd128", + hmac_test_case_keys[3], 16, + hmac_test_case_data[4], 20, + {0xe7, 0x98, 0x08, 0xf2, 0x4b, 0x25, 0xfd, 0x03, + 0x1c, 0x15, 0x5f, 0x0d, 0x55, 0x1d, 0x9a, 0x3a} }, + + { "rfc2286 3.6", "rmd128", + hmac_test_case_keys[4], 80, + hmac_test_case_data[5], 54, + {0xdc, 0x73, 0x29, 0x28, 0xde, 0x98, 0x10, 0x4a, + 0x1f, 0x59, 0xd3, 0x73, 0xc1, 0x50, 0xac, 0xbb} }, + + { "rfc2286 3.7", "rmd128", + hmac_test_case_keys[4], 80, + hmac_test_case_data[6], 73, + {0x5c, 0x6b, 0xec, 0x96, 0x79, 0x3e, 0x16, 0xd4, + 0x06, 0x90, 0xc2, 0x37, 0x63, 0x5f, 0x30, 0xc5} }, +#endif /* LTC_TEST_EXT */ + + /* + RFC 4231 4. Test Vectors + Ch. 4.6 with truncated output left out to simplify tests + */ + { "rfc4231 4.2", "sha224", + hmac_test_case_keys[0], 20, + hmac_test_case_data[0], 8, + {0x89, 0x6f, 0xb1, 0x12, 0x8a, 0xbb, 0xdf, 0x19, + 0x68, 0x32, 0x10, 0x7c, 0xd4, 0x9d, 0xf3, 0x3f, + 0x47, 0xb4, 0xb1, 0x16, 0x99, 0x12, 0xba, 0x4f, + 0x53, 0x68, 0x4b, 0x22} }, + +#ifdef LTC_TEST_EXT + { "rfc4231 4.3", "sha224", + hmac_test_case_keys[1], 4, + hmac_test_case_data[1], 28, + {0xa3, 0x0e, 0x01, 0x09, 0x8b, 0xc6, 0xdb, 0xbf, + 0x45, 0x69, 0x0f, 0x3a, 0x7e, 0x9e, 0x6d, 0x0f, + 0x8b, 0xbe, 0xa2, 0xa3, 0x9e, 0x61, 0x48, 0x00, + 0x8f, 0xd0, 0x5e, 0x44} }, + + { "rfc4231 4.4", "sha224", + hmac_test_case_keys[4], 20, + hmac_test_case_data[2], 50, + {0x7f, 0xb3, 0xcb, 0x35, 0x88, 0xc6, 0xc1, 0xf6, + 0xff, 0xa9, 0x69, 0x4d, 0x7d, 0x6a, 0xd2, 0x64, + 0x93, 0x65, 0xb0, 0xc1, 0xf6, 0x5d, 0x69, 0xd1, + 0xec, 0x83, 0x33, 0xea} }, + + { "rfc4231 4.5", "sha224", + hmac_test_case_keys[2], 25, + hmac_test_case_data[3], 50, + {0x6c, 0x11, 0x50, 0x68, 0x74, 0x01, 0x3c, 0xac, + 0x6a, 0x2a, 0xbc, 0x1b, 0xb3, 0x82, 0x62, 0x7c, + 0xec, 0x6a, 0x90, 0xd8, 0x6e, 0xfc, 0x01, 0x2d, + 0xe7, 0xaf, 0xec, 0x5a} }, + + { "rfc4231 4.7", "sha224", + hmac_test_case_keys[4], 131, + hmac_test_case_data[5], 54, + {0x95, 0xe9, 0xa0, 0xdb, 0x96, 0x20, 0x95, 0xad, + 0xae, 0xbe, 0x9b, 0x2d, 0x6f, 0x0d, 0xbc, 0xe2, + 0xd4, 0x99, 0xf1, 0x12, 0xf2, 0xd2, 0xb7, 0x27, + 0x3f, 0xa6, 0x87, 0x0e} }, + + { "rfc4231 4.8", "sha224", + hmac_test_case_keys[4], 131, + hmac_test_case_data[7], 152, + {0x3a, 0x85, 0x41, 0x66, 0xac, 0x5d, 0x9f, 0x02, + 0x3f, 0x54, 0xd5, 0x17, 0xd0, 0xb3, 0x9d, 0xbd, + 0x94, 0x67, 0x70, 0xdb, 0x9c, 0x2b, 0x95, 0xc9, + 0xf6, 0xf5, 0x65, 0xd1} }, +#endif /* LTC_TEST_EXT */ + + { "rfc4231 4.2", "sha256", + hmac_test_case_keys[0], 20, + hmac_test_case_data[0], 8, + {0xb0, 0x34, 0x4c, 0x61, 0xd8, 0xdb, 0x38, 0x53, + 0x5c, 0xa8, 0xaf, 0xce, 0xaf, 0x0b, 0xf1, 0x2b, + 0x88, 0x1d, 0xc2, 0x00, 0xc9, 0x83, 0x3d, 0xa7, + 0x26, 0xe9, 0x37, 0x6c, 0x2e, 0x32, 0xcf, 0xf7} }, + +#ifdef LTC_TEST_EXT + { "rfc4231 4.3", "sha256", + hmac_test_case_keys[1], 4, + hmac_test_case_data[1], 28, + {0x5b, 0xdc, 0xc1, 0x46, 0xbf, 0x60, 0x75, 0x4e, + 0x6a, 0x04, 0x24, 0x26, 0x08, 0x95, 0x75, 0xc7, + 0x5a, 0x00, 0x3f, 0x08, 0x9d, 0x27, 0x39, 0x83, + 0x9d, 0xec, 0x58, 0xb9, 0x64, 0xec, 0x38, 0x43} }, + + { "rfc4231 4.4", "sha256", + hmac_test_case_keys[4], 20, + hmac_test_case_data[2], 50, + {0x77, 0x3e, 0xa9, 0x1e, 0x36, 0x80, 0x0e, 0x46, + 0x85, 0x4d, 0xb8, 0xeb, 0xd0, 0x91, 0x81, 0xa7, + 0x29, 0x59, 0x09, 0x8b, 0x3e, 0xf8, 0xc1, 0x22, + 0xd9, 0x63, 0x55, 0x14, 0xce, 0xd5, 0x65, 0xfe} }, + + { "rfc4231 4.5", "sha256", + hmac_test_case_keys[2], 25, + hmac_test_case_data[3], 50, + {0x82, 0x55, 0x8a, 0x38, 0x9a, 0x44, 0x3c, 0x0e, + 0xa4, 0xcc, 0x81, 0x98, 0x99, 0xf2, 0x08, 0x3a, + 0x85, 0xf0, 0xfa, 0xa3, 0xe5, 0x78, 0xf8, 0x07, + 0x7a, 0x2e, 0x3f, 0xf4, 0x67, 0x29, 0x66, 0x5b} }, + + { "rfc4231 4.7", "sha256", + hmac_test_case_keys[4], 131, + hmac_test_case_data[5], 54, + {0x60, 0xe4, 0x31, 0x59, 0x1e, 0xe0, 0xb6, 0x7f, + 0x0d, 0x8a, 0x26, 0xaa, 0xcb, 0xf5, 0xb7, 0x7f, + 0x8e, 0x0b, 0xc6, 0x21, 0x37, 0x28, 0xc5, 0x14, + 0x05, 0x46, 0x04, 0x0f, 0x0e, 0xe3, 0x7f, 0x54} }, + + { "rfc4231 4.8", "sha256", + hmac_test_case_keys[4], 131, + hmac_test_case_data[7], 152, + {0x9b, 0x09, 0xff, 0xa7, 0x1b, 0x94, 0x2f, 0xcb, + 0x27, 0x63, 0x5f, 0xbc, 0xd5, 0xb0, 0xe9, 0x44, + 0xbf, 0xdc, 0x63, 0x64, 0x4f, 0x07, 0x13, 0x93, + 0x8a, 0x7f, 0x51, 0x53, 0x5c, 0x3a, 0x35, 0xe2} }, +#endif /* LTC_TEST_EXT */ + + { "rfc4231 4.2", "sha384", + hmac_test_case_keys[0], 20, + hmac_test_case_data[0], 8, + {0xaf, 0xd0, 0x39, 0x44, 0xd8, 0x48, 0x95, 0x62, + 0x6b, 0x08, 0x25, 0xf4, 0xab, 0x46, 0x90, 0x7f, + 0x15, 0xf9, 0xda, 0xdb, 0xe4, 0x10, 0x1e, 0xc6, + 0x82, 0xaa, 0x03, 0x4c, 0x7c, 0xeb, 0xc5, 0x9c, + 0xfa, 0xea, 0x9e, 0xa9, 0x07, 0x6e, 0xde, 0x7f, + 0x4a, 0xf1, 0x52, 0xe8, 0xb2, 0xfa, 0x9c, 0xb6} }, + +#ifdef LTC_TEST_EXT + { "rfc4231 4.3", "sha384", + hmac_test_case_keys[1], 4, + hmac_test_case_data[1], 28, + {0xaf, 0x45, 0xd2, 0xe3, 0x76, 0x48, 0x40, 0x31, + 0x61, 0x7f, 0x78, 0xd2, 0xb5, 0x8a, 0x6b, 0x1b, + 0x9c, 0x7e, 0xf4, 0x64, 0xf5, 0xa0, 0x1b, 0x47, + 0xe4, 0x2e, 0xc3, 0x73, 0x63, 0x22, 0x44, 0x5e, + 0x8e, 0x22, 0x40, 0xca, 0x5e, 0x69, 0xe2, 0xc7, + 0x8b, 0x32, 0x39, 0xec, 0xfa, 0xb2, 0x16, 0x49} }, + + { "rfc4231 4.4", "sha384", + hmac_test_case_keys[4], 20, + hmac_test_case_data[2], 50, + {0x88, 0x06, 0x26, 0x08, 0xd3, 0xe6, 0xad, 0x8a, + 0x0a, 0xa2, 0xac, 0xe0, 0x14, 0xc8, 0xa8, 0x6f, + 0x0a, 0xa6, 0x35, 0xd9, 0x47, 0xac, 0x9f, 0xeb, + 0xe8, 0x3e, 0xf4, 0xe5, 0x59, 0x66, 0x14, 0x4b, + 0x2a, 0x5a, 0xb3, 0x9d, 0xc1, 0x38, 0x14, 0xb9, + 0x4e, 0x3a, 0xb6, 0xe1, 0x01, 0xa3, 0x4f, 0x27} }, + + { "rfc4231 4.5", "sha384", + hmac_test_case_keys[2], 25, + hmac_test_case_data[3], 50, + {0x3e, 0x8a, 0x69, 0xb7, 0x78, 0x3c, 0x25, 0x85, + 0x19, 0x33, 0xab, 0x62, 0x90, 0xaf, 0x6c, 0xa7, + 0x7a, 0x99, 0x81, 0x48, 0x08, 0x50, 0x00, 0x9c, + 0xc5, 0x57, 0x7c, 0x6e, 0x1f, 0x57, 0x3b, 0x4e, + 0x68, 0x01, 0xdd, 0x23, 0xc4, 0xa7, 0xd6, 0x79, + 0xcc, 0xf8, 0xa3, 0x86, 0xc6, 0x74, 0xcf, 0xfb} }, + + { "rfc4231 4.7", "sha384", + hmac_test_case_keys[4], 131, + hmac_test_case_data[5], 54, + {0x4e, 0xce, 0x08, 0x44, 0x85, 0x81, 0x3e, 0x90, + 0x88, 0xd2, 0xc6, 0x3a, 0x04, 0x1b, 0xc5, 0xb4, + 0x4f, 0x9e, 0xf1, 0x01, 0x2a, 0x2b, 0x58, 0x8f, + 0x3c, 0xd1, 0x1f, 0x05, 0x03, 0x3a, 0xc4, 0xc6, + 0x0c, 0x2e, 0xf6, 0xab, 0x40, 0x30, 0xfe, 0x82, + 0x96, 0x24, 0x8d, 0xf1, 0x63, 0xf4, 0x49, 0x52} }, + + { "rfc4231 4.8", "sha384", + hmac_test_case_keys[4], 131, + hmac_test_case_data[7], 152, + {0x66, 0x17, 0x17, 0x8e, 0x94, 0x1f, 0x02, 0x0d, + 0x35, 0x1e, 0x2f, 0x25, 0x4e, 0x8f, 0xd3, 0x2c, + 0x60, 0x24, 0x20, 0xfe, 0xb0, 0xb8, 0xfb, 0x9a, + 0xdc, 0xce, 0xbb, 0x82, 0x46, 0x1e, 0x99, 0xc5, + 0xa6, 0x78, 0xcc, 0x31, 0xe7, 0x99, 0x17, 0x6d, + 0x38, 0x60, 0xe6, 0x11, 0x0c, 0x46, 0x52, 0x3e} }, +#endif /* LTC_TEST_EXT */ + + { "rfc4231 4.2", "sha512", + hmac_test_case_keys[0], 20, + hmac_test_case_data[0], 8, + {0x87, 0xaa, 0x7c, 0xde, 0xa5, 0xef, 0x61, 0x9d, + 0x4f, 0xf0, 0xb4, 0x24, 0x1a, 0x1d, 0x6c, 0xb0, + 0x23, 0x79, 0xf4, 0xe2, 0xce, 0x4e, 0xc2, 0x78, + 0x7a, 0xd0, 0xb3, 0x05, 0x45, 0xe1, 0x7c, 0xde, + 0xda, 0xa8, 0x33, 0xb7, 0xd6, 0xb8, 0xa7, 0x02, + 0x03, 0x8b, 0x27, 0x4e, 0xae, 0xa3, 0xf4, 0xe4, + 0xbe, 0x9d, 0x91, 0x4e, 0xeb, 0x61, 0xf1, 0x70, + 0x2e, 0x69, 0x6c, 0x20, 0x3a, 0x12, 0x68, 0x54} }, + +#ifdef LTC_TEST_EXT + { "rfc4231 4.3", "sha512", + hmac_test_case_keys[1], 4, + hmac_test_case_data[1], 28, + {0x16, 0x4b, 0x7a, 0x7b, 0xfc, 0xf8, 0x19, 0xe2, + 0xe3, 0x95, 0xfb, 0xe7, 0x3b, 0x56, 0xe0, 0xa3, + 0x87, 0xbd, 0x64, 0x22, 0x2e, 0x83, 0x1f, 0xd6, + 0x10, 0x27, 0x0c, 0xd7, 0xea, 0x25, 0x05, 0x54, + 0x97, 0x58, 0xbf, 0x75, 0xc0, 0x5a, 0x99, 0x4a, + 0x6d, 0x03, 0x4f, 0x65, 0xf8, 0xf0, 0xe6, 0xfd, + 0xca, 0xea, 0xb1, 0xa3, 0x4d, 0x4a, 0x6b, 0x4b, + 0x63, 0x6e, 0x07, 0x0a, 0x38, 0xbc, 0xe7, 0x37} }, + + { "rfc4231 4.4", "sha512", + hmac_test_case_keys[4], 20, + hmac_test_case_data[2], 50, + {0xfa, 0x73, 0xb0, 0x08, 0x9d, 0x56, 0xa2, 0x84, + 0xef, 0xb0, 0xf0, 0x75, 0x6c, 0x89, 0x0b, 0xe9, + 0xb1, 0xb5, 0xdb, 0xdd, 0x8e, 0xe8, 0x1a, 0x36, + 0x55, 0xf8, 0x3e, 0x33, 0xb2, 0x27, 0x9d, 0x39, + 0xbf, 0x3e, 0x84, 0x82, 0x79, 0xa7, 0x22, 0xc8, + 0x06, 0xb4, 0x85, 0xa4, 0x7e, 0x67, 0xc8, 0x07, + 0xb9, 0x46, 0xa3, 0x37, 0xbe, 0xe8, 0x94, 0x26, + 0x74, 0x27, 0x88, 0x59, 0xe1, 0x32, 0x92, 0xfb} }, + + { "rfc4231 4.5", "sha512", + hmac_test_case_keys[2], 25, + hmac_test_case_data[3], 50, + {0xb0, 0xba, 0x46, 0x56, 0x37, 0x45, 0x8c, 0x69, + 0x90, 0xe5, 0xa8, 0xc5, 0xf6, 0x1d, 0x4a, 0xf7, + 0xe5, 0x76, 0xd9, 0x7f, 0xf9, 0x4b, 0x87, 0x2d, + 0xe7, 0x6f, 0x80, 0x50, 0x36, 0x1e, 0xe3, 0xdb, + 0xa9, 0x1c, 0xa5, 0xc1, 0x1a, 0xa2, 0x5e, 0xb4, + 0xd6, 0x79, 0x27, 0x5c, 0xc5, 0x78, 0x80, 0x63, + 0xa5, 0xf1, 0x97, 0x41, 0x12, 0x0c, 0x4f, 0x2d, + 0xe2, 0xad, 0xeb, 0xeb, 0x10, 0xa2, 0x98, 0xdd} }, + + { "rfc4231 4.7", "sha512", + hmac_test_case_keys[4], 131, + hmac_test_case_data[5], 54, + {0x80, 0xb2, 0x42, 0x63, 0xc7, 0xc1, 0xa3, 0xeb, + 0xb7, 0x14, 0x93, 0xc1, 0xdd, 0x7b, 0xe8, 0xb4, + 0x9b, 0x46, 0xd1, 0xf4, 0x1b, 0x4a, 0xee, 0xc1, + 0x12, 0x1b, 0x01, 0x37, 0x83, 0xf8, 0xf3, 0x52, + 0x6b, 0x56, 0xd0, 0x37, 0xe0, 0x5f, 0x25, 0x98, + 0xbd, 0x0f, 0xd2, 0x21, 0x5d, 0x6a, 0x1e, 0x52, + 0x95, 0xe6, 0x4f, 0x73, 0xf6, 0x3f, 0x0a, 0xec, + 0x8b, 0x91, 0x5a, 0x98, 0x5d, 0x78, 0x65, 0x98} }, + + { "rfc4231 4.8", "sha512", + hmac_test_case_keys[4], 131, + hmac_test_case_data[7], 152, + {0xe3, 0x7b, 0x6a, 0x77, 0x5d, 0xc8, 0x7d, 0xba, + 0xa4, 0xdf, 0xa9, 0xf9, 0x6e, 0x5e, 0x3f, 0xfd, + 0xde, 0xbd, 0x71, 0xf8, 0x86, 0x72, 0x89, 0x86, + 0x5d, 0xf5, 0xa3, 0x2d, 0x20, 0xcd, 0xc9, 0x44, + 0xb6, 0x02, 0x2c, 0xac, 0x3c, 0x49, 0x82, 0xb1, + 0x0d, 0x5e, 0xeb, 0x55, 0xc3, 0xe4, 0xde, 0x15, + 0x13, 0x46, 0x76, 0xfb, 0x6d, 0xe0, 0x44, 0x60, + 0x65, 0xc9, 0x74, 0x40, 0xfa, 0x8c, 0x6a, 0x58} }, +#endif /* LTC_TEST_EXT */ + + }; + + unsigned long outlen; + int err; + int tested=0,failed=0; + for(i=0; i < (int)(sizeof(cases) / sizeof(cases[0])); i++) { + int hash = find_hash(cases[i].algo); + if (hash == -1) continue; + ++tested; + outlen = sizeof(digest); + if((err = hmac_memory(hash, cases[i].key, cases[i].keylen, cases[i].data, cases[i].datalen, digest, &outlen)) != CRYPT_OK) { +#ifdef LTC_TEST_DBG + printf("HMAC-%s test %s, %s\n", cases[i].algo, cases[i].num, error_to_string(err)); +#endif + return err; + } + + if(compare_testvector(digest, outlen, cases[i].digest, (size_t)hash_descriptor[hash].hashsize, cases[i].num, i)) { + failed++; + } + } + + if (failed != 0) { + return CRYPT_FAIL_TESTVECTOR; + } else if (tested == 0) { + return CRYPT_NOP; + } else { + return CRYPT_OK; + } + #endif +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/omac/omac_done.c b/fsbl/lib/libtomcrypt/src/mac/omac/omac_done.c new file mode 100644 index 000000000..bf22523f8 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/omac/omac_done.c @@ -0,0 +1,84 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file omac_done.c + OMAC1 support, terminate a stream, Tom St Denis +*/ + +#ifdef LTC_OMAC + +/** + Terminate an OMAC stream + @param omac The OMAC state + @param out [out] Destination for the authentication tag + @param outlen [in/out] The max size and resulting size of the authentication tag + @return CRYPT_OK if successful +*/ +int omac_done(omac_state *omac, unsigned char *out, unsigned long *outlen) +{ + int err, mode; + unsigned x; + + LTC_ARGCHK(omac != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + if ((err = cipher_is_valid(omac->cipher_idx)) != CRYPT_OK) { + return err; + } + + if ((omac->buflen > (int)sizeof(omac->block)) || (omac->buflen < 0) || + (omac->blklen > (int)sizeof(omac->block)) || (omac->buflen > omac->blklen)) { + return CRYPT_INVALID_ARG; + } + + /* figure out mode */ + if (omac->buflen != omac->blklen) { + /* add the 0x80 byte */ + omac->block[omac->buflen++] = 0x80; + + /* pad with 0x00 */ + while (omac->buflen < omac->blklen) { + omac->block[omac->buflen++] = 0x00; + } + mode = 1; + } else { + mode = 0; + } + + /* now xor prev + Lu[mode] */ + for (x = 0; x < (unsigned)omac->blklen; x++) { + omac->block[x] ^= omac->prev[x] ^ omac->Lu[mode][x]; + } + + /* encrypt it */ + if ((err = cipher_descriptor[omac->cipher_idx].ecb_encrypt(omac->block, omac->block, &omac->key)) != CRYPT_OK) { + return err; + } + cipher_descriptor[omac->cipher_idx].done(&omac->key); + + /* output it */ + for (x = 0; x < (unsigned)omac->blklen && x < *outlen; x++) { + out[x] = omac->block[x]; + } + *outlen = x; + +#ifdef LTC_CLEAN_STACK + zeromem(omac, sizeof(*omac)); +#endif + return CRYPT_OK; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/omac/omac_file.c b/fsbl/lib/libtomcrypt/src/mac/omac/omac_file.c new file mode 100644 index 000000000..3f6a85d0c --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/omac/omac_file.c @@ -0,0 +1,97 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file omac_file.c + OMAC1 support, process a file, Tom St Denis +*/ + +#ifdef LTC_OMAC + +/** + OMAC a file + @param cipher The index of the cipher desired + @param key The secret key + @param keylen The length of the secret key (octets) + @param filename The name of the file you wish to OMAC + @param out [out] Where the authentication tag is to be stored + @param outlen [in/out] The max size and resulting size of the authentication tag + @return CRYPT_OK if successful, CRYPT_NOP if file support has been disabled +*/ +int omac_file(int cipher, + const unsigned char *key, unsigned long keylen, + const char *filename, + unsigned char *out, unsigned long *outlen) +{ +#ifdef LTC_NO_FILE + LTC_UNUSED_PARAM(cipher); + LTC_UNUSED_PARAM(key); + LTC_UNUSED_PARAM(keylen); + LTC_UNUSED_PARAM(filename); + LTC_UNUSED_PARAM(out); + LTC_UNUSED_PARAM(outlen); + return CRYPT_NOP; +#else + size_t x; + int err; + omac_state omac; + FILE *in; + unsigned char *buf; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(filename != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + if ((buf = XMALLOC(LTC_FILE_READ_BUFSIZE)) == NULL) { + return CRYPT_MEM; + } + + if ((err = omac_init(&omac, cipher, key, keylen)) != CRYPT_OK) { + goto LBL_ERR; + } + + in = fopen(filename, "rb"); + if (in == NULL) { + err = CRYPT_FILE_NOTFOUND; + goto LBL_ERR; + } + + do { + x = fread(buf, 1, LTC_FILE_READ_BUFSIZE, in); + if ((err = omac_process(&omac, buf, (unsigned long)x)) != CRYPT_OK) { + fclose(in); + goto LBL_CLEANBUF; + } + } while (x == LTC_FILE_READ_BUFSIZE); + + if (fclose(in) != 0) { + err = CRYPT_ERROR; + goto LBL_CLEANBUF; + } + + err = omac_done(&omac, out, outlen); + +LBL_CLEANBUF: + zeromem(buf, LTC_FILE_READ_BUFSIZE); +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(&omac, sizeof(omac_state)); +#endif + XFREE(buf); + return err; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/omac/omac_init.c b/fsbl/lib/libtomcrypt/src/mac/omac/omac_init.c new file mode 100644 index 000000000..55de2a619 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/omac/omac_init.c @@ -0,0 +1,99 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file omac_init.c + OMAC1 support, initialize state, by Tom St Denis +*/ + + +#ifdef LTC_OMAC + +/** + Initialize an OMAC state + @param omac The OMAC state to initialize + @param cipher The index of the desired cipher + @param key The secret key + @param keylen The length of the secret key (octets) + @return CRYPT_OK if successful +*/ +int omac_init(omac_state *omac, int cipher, const unsigned char *key, unsigned long keylen) +{ + int err, x, y, mask, msb, len; + + LTC_ARGCHK(omac != NULL); + LTC_ARGCHK(key != NULL); + + /* schedule the key */ + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + +#ifdef LTC_FAST + if (cipher_descriptor[cipher].block_length % sizeof(LTC_FAST_TYPE)) { + return CRYPT_INVALID_ARG; + } +#endif + + /* now setup the system */ + switch (cipher_descriptor[cipher].block_length) { + case 8: mask = 0x1B; + len = 8; + break; + case 16: mask = 0x87; + len = 16; + break; + default: return CRYPT_INVALID_ARG; + } + + if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, &omac->key)) != CRYPT_OK) { + return err; + } + + /* ok now we need Lu and Lu^2 [calc one from the other] */ + + /* first calc L which is Ek(0) */ + zeromem(omac->Lu[0], cipher_descriptor[cipher].block_length); + if ((err = cipher_descriptor[cipher].ecb_encrypt(omac->Lu[0], omac->Lu[0], &omac->key)) != CRYPT_OK) { + return err; + } + + /* now do the mults, whoopy! */ + for (x = 0; x < 2; x++) { + /* if msb(L * u^(x+1)) = 0 then just shift, otherwise shift and xor constant mask */ + msb = omac->Lu[x][0] >> 7; + + /* shift left */ + for (y = 0; y < (len - 1); y++) { + omac->Lu[x][y] = ((omac->Lu[x][y] << 1) | (omac->Lu[x][y+1] >> 7)) & 255; + } + omac->Lu[x][len - 1] = ((omac->Lu[x][len - 1] << 1) ^ (msb ? mask : 0)) & 255; + + /* copy up as require */ + if (x == 0) { + XMEMCPY(omac->Lu[1], omac->Lu[0], sizeof(omac->Lu[0])); + } + } + + /* setup state */ + omac->cipher_idx = cipher; + omac->buflen = 0; + omac->blklen = len; + zeromem(omac->prev, sizeof(omac->prev)); + zeromem(omac->block, sizeof(omac->block)); + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/omac/omac_memory.c b/fsbl/lib/libtomcrypt/src/mac/omac/omac_memory.c new file mode 100644 index 000000000..1b57db854 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/omac/omac_memory.c @@ -0,0 +1,83 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file omac_memory.c + OMAC1 support, process a block of memory, Tom St Denis +*/ + +#ifdef LTC_OMAC + +/** + OMAC a block of memory + @param cipher The index of the desired cipher + @param key The secret key + @param keylen The length of the secret key (octets) + @param in The data to send through OMAC + @param inlen The length of the data to send through OMAC (octets) + @param out [out] The destination of the authentication tag + @param outlen [in/out] The max size and resulting size of the authentication tag (octets) + @return CRYPT_OK if successful +*/ +int omac_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + int err; + omac_state *omac; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* is the cipher valid? */ + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + + /* Use accelerator if found */ + if (cipher_descriptor[cipher].omac_memory != NULL) { + return cipher_descriptor[cipher].omac_memory(key, keylen, in, inlen, out, outlen); + } + + /* allocate ram for omac state */ + omac = XMALLOC(sizeof(omac_state)); + if (omac == NULL) { + return CRYPT_MEM; + } + + /* omac process the message */ + if ((err = omac_init(omac, cipher, key, keylen)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = omac_process(omac, in, inlen)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = omac_done(omac, out, outlen)) != CRYPT_OK) { + goto LBL_ERR; + } + + err = CRYPT_OK; +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(omac, sizeof(omac_state)); +#endif + + XFREE(omac); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/omac/omac_memory_multi.c b/fsbl/lib/libtomcrypt/src/mac/omac/omac_memory_multi.c new file mode 100644 index 000000000..50f26e6af --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/omac/omac_memory_multi.c @@ -0,0 +1,88 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" +#include + +/** + @file omac_memory_multi.c + OMAC1 support, process multiple blocks of memory, Tom St Denis +*/ + +#ifdef LTC_OMAC + +/** + OMAC multiple blocks of memory + @param cipher The index of the desired cipher + @param key The secret key + @param keylen The length of the secret key (octets) + @param out [out] The destination of the authentication tag + @param outlen [in/out] The max size and resulting size of the authentication tag (octets) + @param in The data to send through OMAC + @param inlen The length of the data to send through OMAC (octets) + @param ... tuples of (data,len) pairs to OMAC, terminated with a (NULL,x) (x=don't care) + @return CRYPT_OK if successful +*/ +int omac_memory_multi(int cipher, + const unsigned char *key, unsigned long keylen, + unsigned char *out, unsigned long *outlen, + const unsigned char *in, unsigned long inlen, ...) +{ + int err; + omac_state *omac; + va_list args; + const unsigned char *curptr; + unsigned long curlen; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* allocate ram for omac state */ + omac = XMALLOC(sizeof(omac_state)); + if (omac == NULL) { + return CRYPT_MEM; + } + + /* omac process the message */ + if ((err = omac_init(omac, cipher, key, keylen)) != CRYPT_OK) { + goto LBL_ERR; + } + va_start(args, inlen); + curptr = in; + curlen = inlen; + for (;;) { + /* process buf */ + if ((err = omac_process(omac, curptr, curlen)) != CRYPT_OK) { + goto LBL_ERR; + } + /* step to next */ + curptr = va_arg(args, const unsigned char*); + if (curptr == NULL) { + break; + } + curlen = va_arg(args, unsigned long); + } + if ((err = omac_done(omac, out, outlen)) != CRYPT_OK) { + goto LBL_ERR; + } +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(omac, sizeof(omac_state)); +#endif + XFREE(omac); + va_end(args); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/omac/omac_process.c b/fsbl/lib/libtomcrypt/src/mac/omac/omac_process.c new file mode 100644 index 000000000..4ae2bd11c --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/omac/omac_process.c @@ -0,0 +1,90 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file omac_process.c + OMAC1 support, process data, Tom St Denis +*/ + + +#ifdef LTC_OMAC + +/** + Process data through OMAC + @param omac The OMAC state + @param in The input data to send through OMAC + @param inlen The length of the input (octets) + @return CRYPT_OK if successful +*/ +int omac_process(omac_state *omac, const unsigned char *in, unsigned long inlen) +{ + unsigned long n, x; + int err; + + LTC_ARGCHK(omac != NULL); + LTC_ARGCHK(in != NULL); + if ((err = cipher_is_valid(omac->cipher_idx)) != CRYPT_OK) { + return err; + } + + if ((omac->buflen > (int)sizeof(omac->block)) || (omac->buflen < 0) || + (omac->blklen > (int)sizeof(omac->block)) || (omac->buflen > omac->blklen)) { + return CRYPT_INVALID_ARG; + } + +#ifdef LTC_FAST + { + unsigned long blklen = cipher_descriptor[omac->cipher_idx].block_length; + + if (omac->buflen == 0 && inlen > blklen) { + unsigned long y; + for (x = 0; x < (inlen - blklen); x += blklen) { + for (y = 0; y < blklen; y += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST(&omac->prev[y])) ^= *(LTC_FAST_TYPE_PTR_CAST(&in[y])); + } + in += blklen; + if ((err = cipher_descriptor[omac->cipher_idx].ecb_encrypt(omac->prev, omac->prev, &omac->key)) != CRYPT_OK) { + return err; + } + } + inlen -= x; + } + } +#endif + + while (inlen != 0) { + /* ok if the block is full we xor in prev, encrypt and replace prev */ + if (omac->buflen == omac->blklen) { + for (x = 0; x < (unsigned long)omac->blklen; x++) { + omac->block[x] ^= omac->prev[x]; + } + if ((err = cipher_descriptor[omac->cipher_idx].ecb_encrypt(omac->block, omac->prev, &omac->key)) != CRYPT_OK) { + return err; + } + omac->buflen = 0; + } + + /* add bytes */ + n = MIN(inlen, (unsigned long)(omac->blklen - omac->buflen)); + XMEMCPY(omac->block + omac->buflen, in, n); + omac->buflen += n; + inlen -= n; + in += n; + } + + return CRYPT_OK; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/omac/omac_test.c b/fsbl/lib/libtomcrypt/src/mac/omac/omac_test.c new file mode 100644 index 000000000..9bf392c79 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/omac/omac_test.c @@ -0,0 +1,103 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file omac_test.c + OMAC1 support, self-test, by Tom St Denis +*/ + +#ifdef LTC_OMAC + +/** + Test the OMAC setup + @return CRYPT_OK if successful, CRYPT_NOP if tests have been disabled +*/ +int omac_test(void) +{ +#if !defined(LTC_TEST) + return CRYPT_NOP; +#else + static const struct { + int keylen, msglen; + unsigned char key[16], msg[64], tag[16]; + } tests[] = { + { 16, 0, + { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, + 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, + { 0x00 }, + { 0xbb, 0x1d, 0x69, 0x29, 0xe9, 0x59, 0x37, 0x28, + 0x7f, 0xa3, 0x7d, 0x12, 0x9b, 0x75, 0x67, 0x46 } + }, + { 16, 16, + { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, + 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, + { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, + 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a }, + { 0x07, 0x0a, 0x16, 0xb4, 0x6b, 0x4d, 0x41, 0x44, + 0xf7, 0x9b, 0xdd, 0x9d, 0xd0, 0x4a, 0x28, 0x7c } + }, + { 16, 40, + { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, + 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, + { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, + 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, + 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, + 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, + 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11 }, + { 0xdf, 0xa6, 0x67, 0x47, 0xde, 0x9a, 0xe6, 0x30, + 0x30, 0xca, 0x32, 0x61, 0x14, 0x97, 0xc8, 0x27 } + }, + { 16, 64, + { 0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, + 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c }, + { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, + 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a, + 0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, + 0x9e, 0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51, + 0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11, + 0xe5, 0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef, + 0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17, + 0xad, 0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10 }, + { 0x51, 0xf0, 0xbe, 0xbf, 0x7e, 0x3b, 0x9d, 0x92, + 0xfc, 0x49, 0x74, 0x17, 0x79, 0x36, 0x3c, 0xfe } + } + + }; + unsigned char out[16]; + int x, err, idx; + unsigned long len; + + + /* AES can be under rijndael or aes... try to find it */ + if ((idx = find_cipher("aes")) == -1) { + if ((idx = find_cipher("rijndael")) == -1) { + return CRYPT_NOP; + } + } + + for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { + len = sizeof(out); + if ((err = omac_memory(idx, tests[x].key, tests[x].keylen, tests[x].msg, tests[x].msglen, out, &len)) != CRYPT_OK) { + return err; + } + + if (compare_testvector(out, len, tests[x].tag, sizeof(tests[x].tag), "OMAC", x) != 0) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/pelican/pelican.c b/fsbl/lib/libtomcrypt/src/mac/pelican/pelican.c new file mode 100644 index 000000000..6a4dde649 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/pelican/pelican.c @@ -0,0 +1,164 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file pelican.c + Pelican MAC, initialize state, by Tom St Denis +*/ + +#ifdef LTC_PELICAN + +#define __LTC_AES_TAB_C__ +#define ENCRYPT_ONLY +#define PELI_TAB +#include "../../ciphers/aes/aes_tab.c" + +/** + Initialize a Pelican state + @param pelmac The Pelican state to initialize + @param key The secret key + @param keylen The length of the secret key (octets) + @return CRYPT_OK if successful +*/ +int pelican_init(pelican_state *pelmac, const unsigned char *key, unsigned long keylen) +{ + int err; + + LTC_ARGCHK(pelmac != NULL); + LTC_ARGCHK(key != NULL); + +#ifdef LTC_FAST + if (16 % sizeof(LTC_FAST_TYPE)) { + return CRYPT_INVALID_ARG; + } +#endif + + if ((err = aes_setup(key, keylen, 0, &pelmac->K)) != CRYPT_OK) { + return err; + } + + zeromem(pelmac->state, 16); + aes_ecb_encrypt(pelmac->state, pelmac->state, &pelmac->K); + pelmac->buflen = 0; + + return CRYPT_OK; +} + +static void _four_rounds(pelican_state *pelmac) +{ + ulong32 s0, s1, s2, s3, t0, t1, t2, t3; + int r; + + LOAD32H(s0, pelmac->state ); + LOAD32H(s1, pelmac->state + 4); + LOAD32H(s2, pelmac->state + 8); + LOAD32H(s3, pelmac->state + 12); + for (r = 0; r < 4; r++) { + t0 = + Te0(byte(s0, 3)) ^ + Te1(byte(s1, 2)) ^ + Te2(byte(s2, 1)) ^ + Te3(byte(s3, 0)); + t1 = + Te0(byte(s1, 3)) ^ + Te1(byte(s2, 2)) ^ + Te2(byte(s3, 1)) ^ + Te3(byte(s0, 0)); + t2 = + Te0(byte(s2, 3)) ^ + Te1(byte(s3, 2)) ^ + Te2(byte(s0, 1)) ^ + Te3(byte(s1, 0)); + t3 = + Te0(byte(s3, 3)) ^ + Te1(byte(s0, 2)) ^ + Te2(byte(s1, 1)) ^ + Te3(byte(s2, 0)); + s0 = t0; s1 = t1; s2 = t2; s3 = t3; + } + STORE32H(s0, pelmac->state ); + STORE32H(s1, pelmac->state + 4); + STORE32H(s2, pelmac->state + 8); + STORE32H(s3, pelmac->state + 12); +} + +/** + Process a block of text through Pelican + @param pelmac The Pelican MAC state + @param in The input + @param inlen The length input (octets) + @return CRYPT_OK on success + */ +int pelican_process(pelican_state *pelmac, const unsigned char *in, unsigned long inlen) +{ + + LTC_ARGCHK(pelmac != NULL); + LTC_ARGCHK(in != NULL); + + /* check range */ + if (pelmac->buflen < 0 || pelmac->buflen > 15) { + return CRYPT_INVALID_ARG; + } + +#ifdef LTC_FAST + if (pelmac->buflen == 0) { + while (inlen & ~15) { + int x; + for (x = 0; x < 16; x += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)pelmac->state + x)) ^= *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)in + x)); + } + _four_rounds(pelmac); + in += 16; + inlen -= 16; + } + } +#endif + + while (inlen--) { + pelmac->state[pelmac->buflen++] ^= *in++; + if (pelmac->buflen == 16) { + _four_rounds(pelmac); + pelmac->buflen = 0; + } + } + return CRYPT_OK; +} + +/** + Terminate Pelican MAC + @param pelmac The Pelican MAC state + @param out [out] The TAG + @return CRYPT_OK on sucess +*/ +int pelican_done(pelican_state *pelmac, unsigned char *out) +{ + LTC_ARGCHK(pelmac != NULL); + LTC_ARGCHK(out != NULL); + + /* check range */ + if (pelmac->buflen < 0 || pelmac->buflen > 16) { + return CRYPT_INVALID_ARG; + } + + if (pelmac->buflen == 16) { + _four_rounds(pelmac); + pelmac->buflen = 0; + } + pelmac->state[pelmac->buflen++] ^= 0x80; + aes_ecb_encrypt(pelmac->state, out, &pelmac->K); + aes_done(&pelmac->K); + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/pelican/pelican_memory.c b/fsbl/lib/libtomcrypt/src/mac/pelican/pelican_memory.c new file mode 100644 index 000000000..08607a0d3 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/pelican/pelican_memory.c @@ -0,0 +1,57 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file pelican_memory.c + Pelican MAC, MAC a block of memory, by Tom St Denis +*/ + +#ifdef LTC_PELICAN + +/** + Pelican block of memory + @param key The key for the MAC + @param keylen The length of the key (octets) + @param in The input to MAC + @param inlen The length of the input (octets) + @param out [out] The output TAG + @return CRYPT_OK on success +*/ +int pelican_memory(const unsigned char *key, unsigned long keylen, + const unsigned char *in, unsigned long inlen, + unsigned char *out) +{ + pelican_state *pel; + int err; + + pel = XMALLOC(sizeof(*pel)); + if (pel == NULL) { + return CRYPT_MEM; + } + + if ((err = pelican_init(pel, key, keylen)) != CRYPT_OK) { + XFREE(pel); + return err; + } + if ((err = pelican_process(pel, in ,inlen)) != CRYPT_OK) { + XFREE(pel); + return err; + } + err = pelican_done(pel, out); + XFREE(pel); + return err; +} + + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/pelican/pelican_test.c b/fsbl/lib/libtomcrypt/src/mac/pelican/pelican_test.c new file mode 100644 index 000000000..32a7df3a7 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/pelican/pelican_test.c @@ -0,0 +1,113 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file pelican_test.c + Pelican MAC, test, by Tom St Denis +*/ + +#ifdef LTC_PELICAN + +int pelican_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct { + unsigned char K[32], MSG[64], T[16]; + int keylen, ptlen; + } tests[] = { +/* K=16, M=0 */ +{ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }, + { 0 }, + { 0xeb, 0x58, 0x37, 0x15, 0xf8, 0x34, 0xde, 0xe5, + 0xa4, 0xd1, 0x6e, 0xe4, 0xb9, 0xd7, 0x76, 0x0e, }, + 16, 0 +}, + +/* K=16, M=3 */ +{ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }, + { 0x00, 0x01, 0x02 }, + { 0x1c, 0x97, 0x40, 0x60, 0x6c, 0x58, 0x17, 0x2d, + 0x03, 0x94, 0x19, 0x70, 0x81, 0xc4, 0x38, 0x54, }, + 16, 3 +}, + +/* K=16, M=16 */ +{ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }, + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }, + { 0x03, 0xcc, 0x46, 0xb8, 0xac, 0xa7, 0x9c, 0x36, + 0x1e, 0x8c, 0x6e, 0xa6, 0x7b, 0x89, 0x32, 0x49, }, + 16, 16 +}, + +/* K=16, M=32 */ +{ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }, + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F }, + { 0x89, 0xcc, 0x36, 0x58, 0x1b, 0xdd, 0x4d, 0xb5, + 0x78, 0xbb, 0xac, 0xf0, 0xff, 0x8b, 0x08, 0x15, }, + 16, 32 +}, + +/* K=16, M=35 */ +{ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }, + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, + 0x20, 0x21, 0x23 }, + { 0x4a, 0x7d, 0x45, 0x4d, 0xcd, 0xb5, 0xda, 0x8d, + 0x48, 0x78, 0x16, 0x48, 0x5d, 0x45, 0x95, 0x99, }, + 16, 35 +}, +}; + int x, err; + unsigned char out[16]; + pelican_state pel; + + for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { + if ((err = pelican_init(&pel, tests[x].K, tests[x].keylen)) != CRYPT_OK) { + return err; + } + if ((err = pelican_process(&pel, tests[x].MSG, tests[x].ptlen)) != CRYPT_OK) { + return err; + } + if ((err = pelican_done(&pel, out)) != CRYPT_OK) { + return err; + } + + if (compare_testvector(out, 16, tests[x].T, 16, "PELICAN", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; +#endif +} + + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_done.c b/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_done.c new file mode 100644 index 000000000..de7a5aa08 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_done.c @@ -0,0 +1,72 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file pmac_done.c + PMAC implementation, terminate a session, by Tom St Denis +*/ + +#ifdef LTC_PMAC + +int pmac_done(pmac_state *state, unsigned char *out, unsigned long *outlen) +{ + int err, x; + + LTC_ARGCHK(state != NULL); + LTC_ARGCHK(out != NULL); + if ((err = cipher_is_valid(state->cipher_idx)) != CRYPT_OK) { + return err; + } + + if ((state->buflen > (int)sizeof(state->block)) || (state->buflen < 0) || + (state->block_len > (int)sizeof(state->block)) || (state->buflen > state->block_len)) { + return CRYPT_INVALID_ARG; + } + + + /* handle padding. If multiple xor in L/x */ + + if (state->buflen == state->block_len) { + /* xor Lr against the checksum */ + for (x = 0; x < state->block_len; x++) { + state->checksum[x] ^= state->block[x] ^ state->Lr[x]; + } + } else { + /* otherwise xor message bytes then the 0x80 byte */ + for (x = 0; x < state->buflen; x++) { + state->checksum[x] ^= state->block[x]; + } + state->checksum[x] ^= 0x80; + } + + /* encrypt it */ + if ((err = cipher_descriptor[state->cipher_idx].ecb_encrypt(state->checksum, state->checksum, &state->key)) != CRYPT_OK) { + return err; + } + cipher_descriptor[state->cipher_idx].done(&state->key); + + /* store it */ + for (x = 0; x < state->block_len && x < (int)*outlen; x++) { + out[x] = state->checksum[x]; + } + *outlen = x; + +#ifdef LTC_CLEAN_STACK + zeromem(state, sizeof(*state)); +#endif + return CRYPT_OK; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_file.c b/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_file.c new file mode 100644 index 000000000..fe202a2f5 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_file.c @@ -0,0 +1,98 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file pmac_file.c + PMAC implementation, process a file, by Tom St Denis +*/ + +#ifdef LTC_PMAC + +/** + PMAC a file + @param cipher The index of the cipher desired + @param key The secret key + @param keylen The length of the secret key (octets) + @param filename The name of the file to send through PMAC + @param out [out] Destination for the authentication tag + @param outlen [in/out] Max size and resulting size of the authentication tag + @return CRYPT_OK if successful, CRYPT_NOP if file support has been disabled +*/ +int pmac_file(int cipher, + const unsigned char *key, unsigned long keylen, + const char *filename, + unsigned char *out, unsigned long *outlen) +{ +#ifdef LTC_NO_FILE + LTC_UNUSED_PARAM(cipher); + LTC_UNUSED_PARAM(key); + LTC_UNUSED_PARAM(keylen); + LTC_UNUSED_PARAM(filename); + LTC_UNUSED_PARAM(out); + LTC_UNUSED_PARAM(outlen); + return CRYPT_NOP; +#else + size_t x; + int err; + pmac_state pmac; + FILE *in; + unsigned char *buf; + + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(filename != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + if ((buf = XMALLOC(LTC_FILE_READ_BUFSIZE)) == NULL) { + return CRYPT_MEM; + } + + if ((err = pmac_init(&pmac, cipher, key, keylen)) != CRYPT_OK) { + goto LBL_ERR; + } + + in = fopen(filename, "rb"); + if (in == NULL) { + err = CRYPT_FILE_NOTFOUND; + goto LBL_ERR; + } + + do { + x = fread(buf, 1, LTC_FILE_READ_BUFSIZE, in); + if ((err = pmac_process(&pmac, buf, (unsigned long)x)) != CRYPT_OK) { + fclose(in); + goto LBL_CLEANBUF; + } + } while (x == LTC_FILE_READ_BUFSIZE); + + if (fclose(in) != 0) { + err = CRYPT_ERROR; + goto LBL_CLEANBUF; + } + + err = pmac_done(&pmac, out, outlen); + +LBL_CLEANBUF: + zeromem(buf, LTC_FILE_READ_BUFSIZE); +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(&pmac, sizeof(pmac_state)); +#endif + XFREE(buf); + return err; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_init.c b/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_init.c new file mode 100644 index 000000000..b1bb400d1 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_init.c @@ -0,0 +1,148 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file pmac_init.c + PMAC implementation, initialize state, by Tom St Denis +*/ + +#ifdef LTC_PMAC + +static const struct { + int len; + unsigned char poly_div[MAXBLOCKSIZE], + poly_mul[MAXBLOCKSIZE]; +} polys[] = { +{ + 8, + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B } +}, { + 16, + { 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43 }, + { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87 } +} +}; + +/** + Initialize a PMAC state + @param pmac The PMAC state to initialize + @param cipher The index of the desired cipher + @param key The secret key + @param keylen The length of the secret key (octets) + @return CRYPT_OK if successful +*/ +int pmac_init(pmac_state *pmac, int cipher, const unsigned char *key, unsigned long keylen) +{ + int poly, x, y, m, err; + unsigned char *L; + + LTC_ARGCHK(pmac != NULL); + LTC_ARGCHK(key != NULL); + + /* valid cipher? */ + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + + /* determine which polys to use */ + pmac->block_len = cipher_descriptor[cipher].block_length; + for (poly = 0; poly < (int)(sizeof(polys)/sizeof(polys[0])); poly++) { + if (polys[poly].len == pmac->block_len) { + break; + } + } + if (poly >= (int)(sizeof(polys)/sizeof(polys[0]))) { + return CRYPT_INVALID_ARG; + } + if (polys[poly].len != pmac->block_len) { + return CRYPT_INVALID_ARG; + } + +#ifdef LTC_FAST + if (pmac->block_len % sizeof(LTC_FAST_TYPE)) { + return CRYPT_INVALID_ARG; + } +#endif + + + /* schedule the key */ + if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, &pmac->key)) != CRYPT_OK) { + return err; + } + + /* allocate L */ + L = XMALLOC(pmac->block_len); + if (L == NULL) { + return CRYPT_MEM; + } + + /* find L = E[0] */ + zeromem(L, pmac->block_len); + if ((err = cipher_descriptor[cipher].ecb_encrypt(L, L, &pmac->key)) != CRYPT_OK) { + goto error; + } + + /* find Ls[i] = L << i for i == 0..31 */ + XMEMCPY(pmac->Ls[0], L, pmac->block_len); + for (x = 1; x < 32; x++) { + m = pmac->Ls[x-1][0] >> 7; + for (y = 0; y < pmac->block_len-1; y++) { + pmac->Ls[x][y] = ((pmac->Ls[x-1][y] << 1) | (pmac->Ls[x-1][y+1] >> 7)) & 255; + } + pmac->Ls[x][pmac->block_len-1] = (pmac->Ls[x-1][pmac->block_len-1] << 1) & 255; + + if (m == 1) { + for (y = 0; y < pmac->block_len; y++) { + pmac->Ls[x][y] ^= polys[poly].poly_mul[y]; + } + } + } + + /* find Lr = L / x */ + m = L[pmac->block_len-1] & 1; + + /* shift right */ + for (x = pmac->block_len - 1; x > 0; x--) { + pmac->Lr[x] = ((L[x] >> 1) | (L[x-1] << 7)) & 255; + } + pmac->Lr[0] = L[0] >> 1; + + if (m == 1) { + for (x = 0; x < pmac->block_len; x++) { + pmac->Lr[x] ^= polys[poly].poly_div[x]; + } + } + + /* zero buffer, counters, etc... */ + pmac->block_index = 1; + pmac->cipher_idx = cipher; + pmac->buflen = 0; + zeromem(pmac->block, sizeof(pmac->block)); + zeromem(pmac->Li, sizeof(pmac->Li)); + zeromem(pmac->checksum, sizeof(pmac->checksum)); + err = CRYPT_OK; +error: +#ifdef LTC_CLEAN_STACK + zeromem(L, pmac->block_len); +#endif + + XFREE(L); + + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_memory.c b/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_memory.c new file mode 100644 index 000000000..78427811f --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_memory.c @@ -0,0 +1,72 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file pmac_memory.c + PMAC implementation, process a block of memory, by Tom St Denis +*/ + +#ifdef LTC_PMAC + +/** + PMAC a block of memory + @param cipher The index of the cipher desired + @param key The secret key + @param keylen The length of the secret key (octets) + @param in The data you wish to send through PMAC + @param inlen The length of data you wish to send through PMAC (octets) + @param out [out] Destination for the authentication tag + @param outlen [in/out] The max size and resulting size of the authentication tag + @return CRYPT_OK if successful +*/ +int pmac_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + int err; + pmac_state *pmac; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* allocate ram for pmac state */ + pmac = XMALLOC(sizeof(pmac_state)); + if (pmac == NULL) { + return CRYPT_MEM; + } + + if ((err = pmac_init(pmac, cipher, key, keylen)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = pmac_process(pmac, in, inlen)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = pmac_done(pmac, out, outlen)) != CRYPT_OK) { + goto LBL_ERR; + } + + err = CRYPT_OK; +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(pmac, sizeof(pmac_state)); +#endif + + XFREE(pmac); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_memory_multi.c b/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_memory_multi.c new file mode 100644 index 000000000..f3de4b591 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_memory_multi.c @@ -0,0 +1,87 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" +#include + +/** + @file pmac_memory_multi.c + PMAC implementation, process multiple blocks of memory, by Tom St Denis +*/ + +#ifdef LTC_PMAC + +/** + PMAC multiple blocks of memory + @param cipher The index of the cipher desired + @param key The secret key + @param keylen The length of the secret key (octets) + @param out [out] Destination for the authentication tag + @param outlen [in/out] The max size and resulting size of the authentication tag + @param in The data you wish to send through PMAC + @param inlen The length of data you wish to send through PMAC (octets) + @param ... tuples of (data,len) pairs to PMAC, terminated with a (NULL,x) (x=don't care) + @return CRYPT_OK if successful +*/ +int pmac_memory_multi(int cipher, + const unsigned char *key, unsigned long keylen, + unsigned char *out, unsigned long *outlen, + const unsigned char *in, unsigned long inlen, ...) +{ + int err; + pmac_state *pmac; + va_list args; + const unsigned char *curptr; + unsigned long curlen; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* allocate ram for pmac state */ + pmac = XMALLOC(sizeof(pmac_state)); + if (pmac == NULL) { + return CRYPT_MEM; + } + + if ((err = pmac_init(pmac, cipher, key, keylen)) != CRYPT_OK) { + goto LBL_ERR; + } + va_start(args, inlen); + curptr = in; + curlen = inlen; + for (;;) { + /* process buf */ + if ((err = pmac_process(pmac, curptr, curlen)) != CRYPT_OK) { + goto LBL_ERR; + } + /* step to next */ + curptr = va_arg(args, const unsigned char*); + if (curptr == NULL) { + break; + } + curlen = va_arg(args, unsigned long); + } + if ((err = pmac_done(pmac, out, outlen)) != CRYPT_OK) { + goto LBL_ERR; + } +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(pmac, sizeof(pmac_state)); +#endif + XFREE(pmac); + va_end(args); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_ntz.c b/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_ntz.c new file mode 100644 index 000000000..2c7dec567 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_ntz.c @@ -0,0 +1,37 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file pmac_ntz.c + PMAC implementation, internal function, by Tom St Denis +*/ + +#ifdef LTC_PMAC + +/** + Internal PMAC function +*/ +int pmac_ntz(unsigned long x) +{ + int c; + x &= 0xFFFFFFFFUL; + c = 0; + while ((x & 1) == 0) { + ++c; + x >>= 1; + } + return c; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_process.c b/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_process.c new file mode 100644 index 000000000..018fa275c --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_process.c @@ -0,0 +1,98 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file pmac_process.c + PMAC implementation, process data, by Tom St Denis +*/ + + +#ifdef LTC_PMAC + +/** + Process data in a PMAC stream + @param pmac The PMAC state + @param in The data to send through PMAC + @param inlen The length of the data to send through PMAC + @return CRYPT_OK if successful +*/ +int pmac_process(pmac_state *pmac, const unsigned char *in, unsigned long inlen) +{ + int err, n; + unsigned long x; + unsigned char Z[MAXBLOCKSIZE]; + + LTC_ARGCHK(pmac != NULL); + LTC_ARGCHK(in != NULL); + if ((err = cipher_is_valid(pmac->cipher_idx)) != CRYPT_OK) { + return err; + } + + if ((pmac->buflen > (int)sizeof(pmac->block)) || (pmac->buflen < 0) || + (pmac->block_len > (int)sizeof(pmac->block)) || (pmac->buflen > pmac->block_len)) { + return CRYPT_INVALID_ARG; + } + +#ifdef LTC_FAST + if (pmac->buflen == 0 && inlen > 16) { + unsigned long y; + for (x = 0; x < (inlen - 16); x += 16) { + pmac_shift_xor(pmac); + for (y = 0; y < 16; y += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST(&Z[y])) = *(LTC_FAST_TYPE_PTR_CAST(&in[y])) ^ *(LTC_FAST_TYPE_PTR_CAST(&pmac->Li[y])); + } + if ((err = cipher_descriptor[pmac->cipher_idx].ecb_encrypt(Z, Z, &pmac->key)) != CRYPT_OK) { + return err; + } + for (y = 0; y < 16; y += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST(&pmac->checksum[y])) ^= *(LTC_FAST_TYPE_PTR_CAST(&Z[y])); + } + in += 16; + } + inlen -= x; + } +#endif + + while (inlen != 0) { + /* ok if the block is full we xor in prev, encrypt and replace prev */ + if (pmac->buflen == pmac->block_len) { + pmac_shift_xor(pmac); + for (x = 0; x < (unsigned long)pmac->block_len; x++) { + Z[x] = pmac->Li[x] ^ pmac->block[x]; + } + if ((err = cipher_descriptor[pmac->cipher_idx].ecb_encrypt(Z, Z, &pmac->key)) != CRYPT_OK) { + return err; + } + for (x = 0; x < (unsigned long)pmac->block_len; x++) { + pmac->checksum[x] ^= Z[x]; + } + pmac->buflen = 0; + } + + /* add bytes */ + n = MIN(inlen, (unsigned long)(pmac->block_len - pmac->buflen)); + XMEMCPY(pmac->block + pmac->buflen, in, n); + pmac->buflen += n; + inlen -= n; + in += n; + } + +#ifdef LTC_CLEAN_STACK + zeromem(Z, sizeof(Z)); +#endif + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_shift_xor.c b/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_shift_xor.c new file mode 100644 index 000000000..49d48f981 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_shift_xor.c @@ -0,0 +1,42 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file pmac_shift_xor.c + PMAC implementation, internal function, by Tom St Denis +*/ + +#ifdef LTC_PMAC + +/** + Internal function. Performs the state update (adding correct multiple) + @param pmac The PMAC state. +*/ +void pmac_shift_xor(pmac_state *pmac) +{ + int x, y; + y = pmac_ntz(pmac->block_index++); +#ifdef LTC_FAST + for (x = 0; x < pmac->block_len; x += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)pmac->Li + x)) ^= + *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)pmac->Ls[y] + x)); + } +#else + for (x = 0; x < pmac->block_len; x++) { + pmac->Li[x] ^= pmac->Ls[y][x]; + } +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_test.c b/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_test.c new file mode 100644 index 000000000..19329c67c --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/pmac/pmac_test.c @@ -0,0 +1,154 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file pmac_test.c + PMAC implementation, self-test, by Tom St Denis +*/ + + +#ifdef LTC_PMAC + +/** + Test the LTC_OMAC implementation + @return CRYPT_OK if successful, CRYPT_NOP if testing has been disabled +*/ +int pmac_test(void) +{ +#if !defined(LTC_TEST) + return CRYPT_NOP; +#else + static const struct { + int msglen; + unsigned char key[16], msg[34], tag[16]; + } tests[] = { + + /* PMAC-AES-128-0B */ +{ + 0, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* msg */ + { 0x00 }, + /* tag */ + { 0x43, 0x99, 0x57, 0x2c, 0xd6, 0xea, 0x53, 0x41, + 0xb8, 0xd3, 0x58, 0x76, 0xa7, 0x09, 0x8a, 0xf7 } +}, + + /* PMAC-AES-128-3B */ +{ + 3, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* msg */ + { 0x00, 0x01, 0x02 }, + /* tag */ + { 0x25, 0x6b, 0xa5, 0x19, 0x3c, 0x1b, 0x99, 0x1b, + 0x4d, 0xf0, 0xc5, 0x1f, 0x38, 0x8a, 0x9e, 0x27 } +}, + + /* PMAC-AES-128-16B */ +{ + 16, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* msg */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* tag */ + { 0xeb, 0xbd, 0x82, 0x2f, 0xa4, 0x58, 0xda, 0xf6, + 0xdf, 0xda, 0xd7, 0xc2, 0x7d, 0xa7, 0x63, 0x38 } +}, + + /* PMAC-AES-128-20B */ +{ + 20, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* msg */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13 }, + /* tag */ + { 0x04, 0x12, 0xca, 0x15, 0x0b, 0xbf, 0x79, 0x05, + 0x8d, 0x8c, 0x75, 0xa5, 0x8c, 0x99, 0x3f, 0x55 } +}, + + /* PMAC-AES-128-32B */ +{ + 32, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* msg */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, + /* tag */ + { 0xe9, 0x7a, 0xc0, 0x4e, 0x9e, 0x5e, 0x33, 0x99, + 0xce, 0x53, 0x55, 0xcd, 0x74, 0x07, 0xbc, 0x75 } +}, + + /* PMAC-AES-128-34B */ +{ + 34, + /* key */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + /* msg */ + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21 }, + /* tag */ + { 0x5c, 0xba, 0x7d, 0x5e, 0xb2, 0x4f, 0x7c, 0x86, + 0xcc, 0xc5, 0x46, 0x04, 0xe5, 0x3d, 0x55, 0x12 } +} + +}; + int err, x, idx; + unsigned long len; + unsigned char outtag[MAXBLOCKSIZE]; + + /* AES can be under rijndael or aes... try to find it */ + if ((idx = find_cipher("aes")) == -1) { + if ((idx = find_cipher("rijndael")) == -1) { + return CRYPT_NOP; + } + } + + for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { + len = sizeof(outtag); + if ((err = pmac_memory(idx, tests[x].key, 16, tests[x].msg, tests[x].msglen, outtag, &len)) != CRYPT_OK) { + return err; + } + + if (compare_testvector(outtag, len, tests[x].tag, sizeof(tests[x].tag), "PMAC", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; +#endif /* LTC_TEST */ +} + +#endif /* PMAC_MODE */ + + + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/poly1305/poly1305.c b/fsbl/lib/libtomcrypt/src/mac/poly1305/poly1305.c new file mode 100644 index 000000000..f709f7205 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/poly1305/poly1305.c @@ -0,0 +1,268 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* The implementation is based on: + * Public Domain poly1305 from Andrew Moon + * https://github.com/floodyberry/poly1305-donna + */ + +#include "tomcrypt.h" + +#ifdef LTC_POLY1305 + +/* internal only */ +static void _poly1305_block(poly1305_state *st, const unsigned char *in, unsigned long inlen) +{ + const unsigned long hibit = (st->final) ? 0 : (1UL << 24); /* 1 << 128 */ + ulong32 r0,r1,r2,r3,r4; + ulong32 s1,s2,s3,s4; + ulong32 h0,h1,h2,h3,h4; + ulong32 tmp; + ulong64 d0,d1,d2,d3,d4; + ulong32 c; + + r0 = st->r[0]; + r1 = st->r[1]; + r2 = st->r[2]; + r3 = st->r[3]; + r4 = st->r[4]; + + s1 = r1 * 5; + s2 = r2 * 5; + s3 = r3 * 5; + s4 = r4 * 5; + + h0 = st->h[0]; + h1 = st->h[1]; + h2 = st->h[2]; + h3 = st->h[3]; + h4 = st->h[4]; + + while (inlen >= 16) { + /* h += in[i] */ + LOAD32L(tmp, in+ 0); h0 += (tmp ) & 0x3ffffff; + LOAD32L(tmp, in+ 3); h1 += (tmp >> 2) & 0x3ffffff; + LOAD32L(tmp, in+ 6); h2 += (tmp >> 4) & 0x3ffffff; + LOAD32L(tmp, in+ 9); h3 += (tmp >> 6) & 0x3ffffff; + LOAD32L(tmp, in+12); h4 += (tmp >> 8) | hibit; + + /* h *= r */ + d0 = ((ulong64)h0 * r0) + ((ulong64)h1 * s4) + ((ulong64)h2 * s3) + ((ulong64)h3 * s2) + ((ulong64)h4 * s1); + d1 = ((ulong64)h0 * r1) + ((ulong64)h1 * r0) + ((ulong64)h2 * s4) + ((ulong64)h3 * s3) + ((ulong64)h4 * s2); + d2 = ((ulong64)h0 * r2) + ((ulong64)h1 * r1) + ((ulong64)h2 * r0) + ((ulong64)h3 * s4) + ((ulong64)h4 * s3); + d3 = ((ulong64)h0 * r3) + ((ulong64)h1 * r2) + ((ulong64)h2 * r1) + ((ulong64)h3 * r0) + ((ulong64)h4 * s4); + d4 = ((ulong64)h0 * r4) + ((ulong64)h1 * r3) + ((ulong64)h2 * r2) + ((ulong64)h3 * r1) + ((ulong64)h4 * r0); + + /* (partial) h %= p */ + c = (ulong32)(d0 >> 26); h0 = (ulong32)d0 & 0x3ffffff; + d1 += c; c = (ulong32)(d1 >> 26); h1 = (ulong32)d1 & 0x3ffffff; + d2 += c; c = (ulong32)(d2 >> 26); h2 = (ulong32)d2 & 0x3ffffff; + d3 += c; c = (ulong32)(d3 >> 26); h3 = (ulong32)d3 & 0x3ffffff; + d4 += c; c = (ulong32)(d4 >> 26); h4 = (ulong32)d4 & 0x3ffffff; + h0 += c * 5; c = (h0 >> 26); h0 = h0 & 0x3ffffff; + h1 += c; + + in += 16; + inlen -= 16; + } + + st->h[0] = h0; + st->h[1] = h1; + st->h[2] = h2; + st->h[3] = h3; + st->h[4] = h4; +} + +/** + Initialize an POLY1305 context. + @param st The POLY1305 state + @param key The secret key + @param keylen The length of the secret key (octets) + @return CRYPT_OK if successful +*/ +int poly1305_init(poly1305_state *st, const unsigned char *key, unsigned long keylen) +{ + LTC_ARGCHK(st != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(keylen == 32); + + /* r &= 0xffffffc0ffffffc0ffffffc0fffffff */ + LOAD32L(st->r[0], key + 0); st->r[0] = (st->r[0] ) & 0x3ffffff; + LOAD32L(st->r[1], key + 3); st->r[1] = (st->r[1] >> 2) & 0x3ffff03; + LOAD32L(st->r[2], key + 6); st->r[2] = (st->r[2] >> 4) & 0x3ffc0ff; + LOAD32L(st->r[3], key + 9); st->r[3] = (st->r[3] >> 6) & 0x3f03fff; + LOAD32L(st->r[4], key + 12); st->r[4] = (st->r[4] >> 8) & 0x00fffff; + + /* h = 0 */ + st->h[0] = 0; + st->h[1] = 0; + st->h[2] = 0; + st->h[3] = 0; + st->h[4] = 0; + + /* save pad for later */ + LOAD32L(st->pad[0], key + 16); + LOAD32L(st->pad[1], key + 20); + LOAD32L(st->pad[2], key + 24); + LOAD32L(st->pad[3], key + 28); + + st->leftover = 0; + st->final = 0; + return CRYPT_OK; +} + +/** + Process data through POLY1305 + @param st The POLY1305 state + @param in The data to send through HMAC + @param inlen The length of the data to HMAC (octets) + @return CRYPT_OK if successful +*/ +int poly1305_process(poly1305_state *st, const unsigned char *in, unsigned long inlen) +{ + unsigned long i; + + if (inlen == 0) return CRYPT_OK; /* nothing to do */ + LTC_ARGCHK(st != NULL); + LTC_ARGCHK(in != NULL); + + /* handle leftover */ + if (st->leftover) { + unsigned long want = (16 - st->leftover); + if (want > inlen) want = inlen; + for (i = 0; i < want; i++) st->buffer[st->leftover + i] = in[i]; + inlen -= want; + in += want; + st->leftover += want; + if (st->leftover < 16) return CRYPT_OK; + _poly1305_block(st, st->buffer, 16); + st->leftover = 0; + } + + /* process full blocks */ + if (inlen >= 16) { + unsigned long want = (inlen & ~(16 - 1)); + _poly1305_block(st, in, want); + in += want; + inlen -= want; + } + + /* store leftover */ + if (inlen) { + for (i = 0; i < inlen; i++) st->buffer[st->leftover + i] = in[i]; + st->leftover += inlen; + } + return CRYPT_OK; +} + +/** + Terminate a POLY1305 session + @param st The POLY1305 state + @param mac [out] The destination of the POLY1305 authentication tag + @param maclen [in/out] The max size and resulting size of the POLY1305 authentication tag + @return CRYPT_OK if successful +*/ +int poly1305_done(poly1305_state *st, unsigned char *mac, unsigned long *maclen) +{ + ulong32 h0,h1,h2,h3,h4,c; + ulong32 g0,g1,g2,g3,g4; + ulong64 f; + ulong32 mask; + + LTC_ARGCHK(st != NULL); + LTC_ARGCHK(mac != NULL); + LTC_ARGCHK(maclen != NULL); + LTC_ARGCHK(*maclen >= 16); + + /* process the remaining block */ + if (st->leftover) { + unsigned long i = st->leftover; + st->buffer[i++] = 1; + for (; i < 16; i++) st->buffer[i] = 0; + st->final = 1; + _poly1305_block(st, st->buffer, 16); + } + + /* fully carry h */ + h0 = st->h[0]; + h1 = st->h[1]; + h2 = st->h[2]; + h3 = st->h[3]; + h4 = st->h[4]; + + c = h1 >> 26; h1 = h1 & 0x3ffffff; + h2 += c; c = h2 >> 26; h2 = h2 & 0x3ffffff; + h3 += c; c = h3 >> 26; h3 = h3 & 0x3ffffff; + h4 += c; c = h4 >> 26; h4 = h4 & 0x3ffffff; + h0 += c * 5; c = h0 >> 26; h0 = h0 & 0x3ffffff; + h1 += c; + + /* compute h + -p */ + g0 = h0 + 5; c = g0 >> 26; g0 &= 0x3ffffff; + g1 = h1 + c; c = g1 >> 26; g1 &= 0x3ffffff; + g2 = h2 + c; c = g2 >> 26; g2 &= 0x3ffffff; + g3 = h3 + c; c = g3 >> 26; g3 &= 0x3ffffff; + g4 = h4 + c - (1UL << 26); + + /* select h if h < p, or h + -p if h >= p */ + mask = (g4 >> 31) - 1; + g0 &= mask; + g1 &= mask; + g2 &= mask; + g3 &= mask; + g4 &= mask; + mask = ~mask; + h0 = (h0 & mask) | g0; + h1 = (h1 & mask) | g1; + h2 = (h2 & mask) | g2; + h3 = (h3 & mask) | g3; + h4 = (h4 & mask) | g4; + + /* h = h % (2^128) */ + h0 = ((h0 ) | (h1 << 26)) & 0xffffffff; + h1 = ((h1 >> 6) | (h2 << 20)) & 0xffffffff; + h2 = ((h2 >> 12) | (h3 << 14)) & 0xffffffff; + h3 = ((h3 >> 18) | (h4 << 8)) & 0xffffffff; + + /* mac = (h + pad) % (2^128) */ + f = (ulong64)h0 + st->pad[0] ; h0 = (ulong32)f; + f = (ulong64)h1 + st->pad[1] + (f >> 32); h1 = (ulong32)f; + f = (ulong64)h2 + st->pad[2] + (f >> 32); h2 = (ulong32)f; + f = (ulong64)h3 + st->pad[3] + (f >> 32); h3 = (ulong32)f; + + STORE32L(h0, mac + 0); + STORE32L(h1, mac + 4); + STORE32L(h2, mac + 8); + STORE32L(h3, mac + 12); + + /* zero out the state */ + st->h[0] = 0; + st->h[1] = 0; + st->h[2] = 0; + st->h[3] = 0; + st->h[4] = 0; + st->r[0] = 0; + st->r[1] = 0; + st->r[2] = 0; + st->r[3] = 0; + st->r[4] = 0; + st->pad[0] = 0; + st->pad[1] = 0; + st->pad[2] = 0; + st->pad[3] = 0; + + *maclen = 16; + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/poly1305/poly1305_file.c b/fsbl/lib/libtomcrypt/src/mac/poly1305/poly1305_file.c new file mode 100644 index 000000000..e57437b3e --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/poly1305/poly1305_file.c @@ -0,0 +1,93 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* The implementation is based on: + * Public Domain poly1305 from Andrew Moon + * https://github.com/floodyberry/poly1305-donna + */ + +#include "tomcrypt.h" + +#ifdef LTC_POLY1305 + +/** + POLY1305 a file + @param fname The name of the file you wish to POLY1305 + @param key The secret key + @param keylen The length of the secret key + @param mac [out] The POLY1305 authentication tag + @param maclen [in/out] The max size and resulting size of the authentication tag + @return CRYPT_OK if successful, CRYPT_NOP if file support has been disabled +*/ +int poly1305_file(const char *fname, const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen) +{ +#ifdef LTC_NO_FILE + LTC_UNUSED_PARAM(fname); + LTC_UNUSED_PARAM(key); + LTC_UNUSED_PARAM(keylen); + LTC_UNUSED_PARAM(mac); + LTC_UNUSED_PARAM(maclen); + return CRYPT_NOP; +#else + poly1305_state st; + FILE *in; + unsigned char *buf; + size_t x; + int err; + + LTC_ARGCHK(fname != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(mac != NULL); + LTC_ARGCHK(maclen != NULL); + + if ((buf = XMALLOC(LTC_FILE_READ_BUFSIZE)) == NULL) { + return CRYPT_MEM; + } + + if ((err = poly1305_init(&st, key, keylen)) != CRYPT_OK) { + goto LBL_ERR; + } + + in = fopen(fname, "rb"); + if (in == NULL) { + err = CRYPT_FILE_NOTFOUND; + goto LBL_ERR; + } + + do { + x = fread(buf, 1, LTC_FILE_READ_BUFSIZE, in); + if ((err = poly1305_process(&st, buf, (unsigned long)x)) != CRYPT_OK) { + fclose(in); + goto LBL_CLEANBUF; + } + } while (x == LTC_FILE_READ_BUFSIZE); + + if (fclose(in) != 0) { + err = CRYPT_ERROR; + goto LBL_CLEANBUF; + } + + err = poly1305_done(&st, mac, maclen); + +LBL_CLEANBUF: + zeromem(buf, LTC_FILE_READ_BUFSIZE); +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(&st, sizeof(poly1305_state)); +#endif + XFREE(buf); + return err; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/poly1305/poly1305_memory.c b/fsbl/lib/libtomcrypt/src/mac/poly1305/poly1305_memory.c new file mode 100644 index 000000000..a827f8d38 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/poly1305/poly1305_memory.c @@ -0,0 +1,53 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* The implementation is based on: + * Public Domain poly1305 from Andrew Moon + * https://github.com/floodyberry/poly1305-donna + */ + +#include "tomcrypt.h" + +#ifdef LTC_POLY1305 + +/** + POLY1305 a block of memory to produce the authentication tag + @param key The secret key + @param keylen The length of the secret key (octets) + @param in The data to POLY1305 + @param inlen The length of the data to POLY1305 (octets) + @param mac [out] Destination of the authentication tag + @param maclen [in/out] Max size and resulting size of authentication tag + @return CRYPT_OK if successful +*/ +int poly1305_memory(const unsigned char *key, unsigned long keylen, const unsigned char *in, unsigned long inlen, unsigned char *mac, unsigned long *maclen) +{ + poly1305_state st; + int err; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(mac != NULL); + LTC_ARGCHK(maclen != NULL); + + if ((err = poly1305_init(&st, key, keylen)) != CRYPT_OK) { goto LBL_ERR; } + if ((err = poly1305_process(&st, in, inlen)) != CRYPT_OK) { goto LBL_ERR; } + err = poly1305_done(&st, mac, maclen); +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(&st, sizeof(poly1305_state)); +#endif + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/poly1305/poly1305_memory_multi.c b/fsbl/lib/libtomcrypt/src/mac/poly1305/poly1305_memory_multi.c new file mode 100644 index 000000000..f22f25531 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/poly1305/poly1305_memory_multi.c @@ -0,0 +1,67 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* The implementation is based on: + * Public Domain poly1305 from Andrew Moon + * https://github.com/floodyberry/poly1305-donna + */ + +#include "tomcrypt.h" +#include + +#ifdef LTC_POLY1305 + +/** + POLY1305 multiple blocks of memory to produce the authentication tag + @param key The secret key + @param keylen The length of the secret key (octets) + @param mac [out] Destination of the authentication tag + @param maclen [in/out] Max size and resulting size of authentication tag + @param in The data to POLY1305 + @param inlen The length of the data to POLY1305 (octets) + @param ... tuples of (data,len) pairs to POLY1305, terminated with a (NULL,x) (x=don't care) + @return CRYPT_OK if successful +*/ +int poly1305_memory_multi(const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen, const unsigned char *in, unsigned long inlen, ...) +{ + poly1305_state st; + int err; + va_list args; + const unsigned char *curptr; + unsigned long curlen; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(mac != NULL); + LTC_ARGCHK(maclen != NULL); + + va_start(args, inlen); + curptr = in; + curlen = inlen; + if ((err = poly1305_init(&st, key, keylen)) != CRYPT_OK) { goto LBL_ERR; } + for (;;) { + if ((err = poly1305_process(&st, curptr, curlen)) != CRYPT_OK) { goto LBL_ERR; } + curptr = va_arg(args, const unsigned char*); + if (curptr == NULL) break; + curlen = va_arg(args, unsigned long); + } + err = poly1305_done(&st, mac, maclen); +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(&st, sizeof(poly1305_state)); +#endif + va_end(args); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/poly1305/poly1305_test.c b/fsbl/lib/libtomcrypt/src/mac/poly1305/poly1305_test.c new file mode 100644 index 000000000..5e4535b3e --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/poly1305/poly1305_test.c @@ -0,0 +1,56 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* The implementation is based on: + * Public Domain poly1305 from Andrew Moon + * https://github.com/floodyberry/poly1305-donna + */ + +#include "tomcrypt.h" + +#ifdef LTC_POLY1305 + +int poly1305_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + /* https://tools.ietf.org/html/rfc7539#section-2.5.2 */ + unsigned char k[] = { 0x85, 0xd6, 0xbe, 0x78, 0x57, 0x55, 0x6d, 0x33, 0x7f, 0x44, 0x52, 0xfe, 0x42, 0xd5, 0x06, 0xa8, 0x01, 0x03, 0x80, 0x8a, 0xfb, 0x0d, 0xb2, 0xfd, 0x4a, 0xbf, 0xf6, 0xaf, 0x41, 0x49, 0xf5, 0x1b }; + unsigned char tag[] = { 0xA8, 0x06, 0x1D, 0xC1, 0x30, 0x51, 0x36, 0xC6, 0xC2, 0x2B, 0x8B, 0xAF, 0x0C, 0x01, 0x27, 0xA9 }; + char m[] = "Cryptographic Forum Research Group"; + unsigned long len = 16, mlen = strlen(m); + unsigned char out[1000]; + poly1305_state st; + int err; + + /* process piece by piece */ + if ((err = poly1305_init(&st, k, 32)) != CRYPT_OK) return err; + if ((err = poly1305_process(&st, (unsigned char*)m, 5)) != CRYPT_OK) return err; + if ((err = poly1305_process(&st, (unsigned char*)m + 5, 4)) != CRYPT_OK) return err; + if ((err = poly1305_process(&st, (unsigned char*)m + 9, 3)) != CRYPT_OK) return err; + if ((err = poly1305_process(&st, (unsigned char*)m + 12, 2)) != CRYPT_OK) return err; + if ((err = poly1305_process(&st, (unsigned char*)m + 14, 1)) != CRYPT_OK) return err; + if ((err = poly1305_process(&st, (unsigned char*)m + 15, mlen - 15)) != CRYPT_OK) return err; + if ((err = poly1305_done(&st, out, &len)) != CRYPT_OK) return err; + if (compare_testvector(out, len, tag, sizeof(tag), "POLY1305-TV1", 1) != 0) return CRYPT_FAIL_TESTVECTOR; + /* process in one go */ + if ((err = poly1305_init(&st, k, 32)) != CRYPT_OK) return err; + if ((err = poly1305_process(&st, (unsigned char*)m, mlen)) != CRYPT_OK) return err; + if ((err = poly1305_done(&st, out, &len)) != CRYPT_OK) return err; + if (compare_testvector(out, len, tag, sizeof(tag), "POLY1305-TV2", 1) != 0) return CRYPT_FAIL_TESTVECTOR; + return CRYPT_OK; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/xcbc/xcbc_done.c b/fsbl/lib/libtomcrypt/src/mac/xcbc/xcbc_done.c new file mode 100644 index 000000000..133d16fd1 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/xcbc/xcbc_done.c @@ -0,0 +1,75 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file xcbc_done.c + XCBC Support, terminate the state +*/ + +#ifdef LTC_XCBC + +/** Terminate the XCBC-MAC state + @param xcbc XCBC state to terminate + @param out [out] Destination for the MAC tag + @param outlen [in/out] Destination size and final tag size + Return CRYPT_OK on success +*/ +int xcbc_done(xcbc_state *xcbc, unsigned char *out, unsigned long *outlen) +{ + int err, x; + LTC_ARGCHK(xcbc != NULL); + LTC_ARGCHK(out != NULL); + + /* check structure */ + if ((err = cipher_is_valid(xcbc->cipher)) != CRYPT_OK) { + return err; + } + + if ((xcbc->blocksize > cipher_descriptor[xcbc->cipher].block_length) || (xcbc->blocksize < 0) || + (xcbc->buflen > xcbc->blocksize) || (xcbc->buflen < 0)) { + return CRYPT_INVALID_ARG; + } + + /* which key do we use? */ + if (xcbc->buflen == xcbc->blocksize) { + /* k2 */ + for (x = 0; x < xcbc->blocksize; x++) { + xcbc->IV[x] ^= xcbc->K[1][x]; + } + } else { + xcbc->IV[xcbc->buflen] ^= 0x80; + /* k3 */ + for (x = 0; x < xcbc->blocksize; x++) { + xcbc->IV[x] ^= xcbc->K[2][x]; + } + } + + /* encrypt */ + cipher_descriptor[xcbc->cipher].ecb_encrypt(xcbc->IV, xcbc->IV, &xcbc->key); + cipher_descriptor[xcbc->cipher].done(&xcbc->key); + + /* extract tag */ + for (x = 0; x < xcbc->blocksize && (unsigned long)x < *outlen; x++) { + out[x] = xcbc->IV[x]; + } + *outlen = x; + +#ifdef LTC_CLEAN_STACK + zeromem(xcbc, sizeof(*xcbc)); +#endif + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/mac/xcbc/xcbc_file.c b/fsbl/lib/libtomcrypt/src/mac/xcbc/xcbc_file.c new file mode 100644 index 000000000..27eb0dec4 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/xcbc/xcbc_file.c @@ -0,0 +1,97 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file xcbc_file.c + XCBC support, process a file, Tom St Denis +*/ + +#ifdef LTC_XCBC + +/** + XCBC a file + @param cipher The index of the cipher desired + @param key The secret key + @param keylen The length of the secret key (octets) + @param filename The name of the file you wish to XCBC + @param out [out] Where the authentication tag is to be stored + @param outlen [in/out] The max size and resulting size of the authentication tag + @return CRYPT_OK if successful, CRYPT_NOP if file support has been disabled +*/ +int xcbc_file(int cipher, + const unsigned char *key, unsigned long keylen, + const char *filename, + unsigned char *out, unsigned long *outlen) +{ +#ifdef LTC_NO_FILE + LTC_UNUSED_PARAM(cipher); + LTC_UNUSED_PARAM(key); + LTC_UNUSED_PARAM(keylen); + LTC_UNUSED_PARAM(filename); + LTC_UNUSED_PARAM(out); + LTC_UNUSED_PARAM(outlen); + return CRYPT_NOP; +#else + size_t x; + int err; + xcbc_state xcbc; + FILE *in; + unsigned char *buf; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(filename != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + if ((buf = XMALLOC(LTC_FILE_READ_BUFSIZE)) == NULL) { + return CRYPT_MEM; + } + + if ((err = xcbc_init(&xcbc, cipher, key, keylen)) != CRYPT_OK) { + goto LBL_ERR; + } + + in = fopen(filename, "rb"); + if (in == NULL) { + err = CRYPT_FILE_NOTFOUND; + goto LBL_ERR; + } + + do { + x = fread(buf, 1, LTC_FILE_READ_BUFSIZE, in); + if ((err = xcbc_process(&xcbc, buf, (unsigned long)x)) != CRYPT_OK) { + fclose(in); + goto LBL_CLEANBUF; + } + } while (x == LTC_FILE_READ_BUFSIZE); + + if (fclose(in) != 0) { + err = CRYPT_ERROR; + goto LBL_CLEANBUF; + } + + err = xcbc_done(&xcbc, out, outlen); + +LBL_CLEANBUF: + zeromem(buf, LTC_FILE_READ_BUFSIZE); +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(&xcbc, sizeof(xcbc_state)); +#endif + XFREE(buf); + return err; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/xcbc/xcbc_init.c b/fsbl/lib/libtomcrypt/src/mac/xcbc/xcbc_init.c new file mode 100644 index 000000000..4eccd5e4e --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/xcbc/xcbc_init.c @@ -0,0 +1,106 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file xcbc_init.c + XCBC Support, start an XCBC state +*/ + +#ifdef LTC_XCBC + +/** Initialize XCBC-MAC state + @param xcbc [out] XCBC state to initialize + @param cipher Index of cipher to use + @param key [in] Secret key + @param keylen Length of secret key in octets + Return CRYPT_OK on success +*/ +int xcbc_init(xcbc_state *xcbc, int cipher, const unsigned char *key, unsigned long keylen) +{ + int x, y, err; + symmetric_key *skey; + unsigned long k1; + + LTC_ARGCHK(xcbc != NULL); + LTC_ARGCHK(key != NULL); + + /* schedule the key */ + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + +#ifdef LTC_FAST + if (cipher_descriptor[cipher].block_length % sizeof(LTC_FAST_TYPE)) { + return CRYPT_INVALID_ARG; + } +#endif + + skey = NULL; + + /* are we in pure XCBC mode with three keys? */ + if (keylen & LTC_XCBC_PURE) { + keylen &= ~LTC_XCBC_PURE; + + if (keylen < 2UL*cipher_descriptor[cipher].block_length) { + return CRYPT_INVALID_ARG; + } + + k1 = keylen - 2*cipher_descriptor[cipher].block_length; + XMEMCPY(xcbc->K[0], key, k1); + XMEMCPY(xcbc->K[1], key+k1, cipher_descriptor[cipher].block_length); + XMEMCPY(xcbc->K[2], key+k1 + cipher_descriptor[cipher].block_length, cipher_descriptor[cipher].block_length); + } else { + /* use the key expansion */ + k1 = cipher_descriptor[cipher].block_length; + + /* schedule the user key */ + skey = XCALLOC(1, sizeof(*skey)); + if (skey == NULL) { + return CRYPT_MEM; + } + + if ((err = cipher_descriptor[cipher].setup(key, keylen, 0, skey)) != CRYPT_OK) { + goto done; + } + + /* make the three keys */ + for (y = 0; y < 3; y++) { + for (x = 0; x < cipher_descriptor[cipher].block_length; x++) { + xcbc->K[y][x] = y + 1; + } + cipher_descriptor[cipher].ecb_encrypt(xcbc->K[y], xcbc->K[y], skey); + } + } + + /* setup K1 */ + err = cipher_descriptor[cipher].setup(xcbc->K[0], k1, 0, &xcbc->key); + + /* setup struct */ + zeromem(xcbc->IV, cipher_descriptor[cipher].block_length); + xcbc->blocksize = cipher_descriptor[cipher].block_length; + xcbc->cipher = cipher; + xcbc->buflen = 0; +done: + cipher_descriptor[cipher].done(skey); + if (skey != NULL) { +#ifdef LTC_CLEAN_STACK + zeromem(skey, sizeof(*skey)); +#endif + XFREE(skey); + } + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/mac/xcbc/xcbc_memory.c b/fsbl/lib/libtomcrypt/src/mac/xcbc/xcbc_memory.c new file mode 100644 index 000000000..a1bc0455d --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/xcbc/xcbc_memory.c @@ -0,0 +1,69 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file xcbc_process.c + XCBC Support, XCBC-MAC a block of memory +*/ + +#ifdef LTC_XCBC + +/** XCBC-MAC a block of memory + @param cipher Index of cipher to use + @param key [in] Secret key + @param keylen Length of key in octets + @param in [in] Message to MAC + @param inlen Length of input in octets + @param out [out] Destination for the MAC tag + @param outlen [in/out] Output size and final tag size + Return CRYPT_OK on success. +*/ +int xcbc_memory(int cipher, + const unsigned char *key, unsigned long keylen, + const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + xcbc_state *xcbc; + int err; + + /* is the cipher valid? */ + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + + /* Use accelerator if found */ + if (cipher_descriptor[cipher].xcbc_memory != NULL) { + return cipher_descriptor[cipher].xcbc_memory(key, keylen, in, inlen, out, outlen); + } + + xcbc = XCALLOC(1, sizeof(*xcbc)); + if (xcbc == NULL) { + return CRYPT_MEM; + } + + if ((err = xcbc_init(xcbc, cipher, key, keylen)) != CRYPT_OK) { + goto done; + } + + if ((err = xcbc_process(xcbc, in, inlen)) != CRYPT_OK) { + goto done; + } + + err = xcbc_done(xcbc, out, outlen); +done: + XFREE(xcbc); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/xcbc/xcbc_memory_multi.c b/fsbl/lib/libtomcrypt/src/mac/xcbc/xcbc_memory_multi.c new file mode 100644 index 000000000..a5b9d9174 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/xcbc/xcbc_memory_multi.c @@ -0,0 +1,88 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" +#include + +/** + @file xcbc_memory_multi.c + XCBC support, process multiple blocks of memory, Tom St Denis +*/ + +#ifdef LTC_XCBC + +/** + XCBC multiple blocks of memory + @param cipher The index of the desired cipher + @param key The secret key + @param keylen The length of the secret key (octets) + @param out [out] The destination of the authentication tag + @param outlen [in/out] The max size and resulting size of the authentication tag (octets) + @param in The data to send through XCBC + @param inlen The length of the data to send through XCBC (octets) + @param ... tuples of (data,len) pairs to XCBC, terminated with a (NULL,x) (x=don't care) + @return CRYPT_OK if successful +*/ +int xcbc_memory_multi(int cipher, + const unsigned char *key, unsigned long keylen, + unsigned char *out, unsigned long *outlen, + const unsigned char *in, unsigned long inlen, ...) +{ + int err; + xcbc_state *xcbc; + va_list args; + const unsigned char *curptr; + unsigned long curlen; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* allocate ram for xcbc state */ + xcbc = XMALLOC(sizeof(xcbc_state)); + if (xcbc == NULL) { + return CRYPT_MEM; + } + + /* xcbc process the message */ + if ((err = xcbc_init(xcbc, cipher, key, keylen)) != CRYPT_OK) { + goto LBL_ERR; + } + va_start(args, inlen); + curptr = in; + curlen = inlen; + for (;;) { + /* process buf */ + if ((err = xcbc_process(xcbc, curptr, curlen)) != CRYPT_OK) { + goto LBL_ERR; + } + /* step to next */ + curptr = va_arg(args, const unsigned char*); + if (curptr == NULL) { + break; + } + curlen = va_arg(args, unsigned long); + } + if ((err = xcbc_done(xcbc, out, outlen)) != CRYPT_OK) { + goto LBL_ERR; + } +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(xcbc, sizeof(xcbc_state)); +#endif + XFREE(xcbc); + va_end(args); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/mac/xcbc/xcbc_process.c b/fsbl/lib/libtomcrypt/src/mac/xcbc/xcbc_process.c new file mode 100644 index 000000000..12e25c5f3 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/xcbc/xcbc_process.c @@ -0,0 +1,73 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file xcbc_process.c + XCBC Support, process blocks with XCBC +*/ + +#ifdef LTC_XCBC + +/** Process data through XCBC-MAC + @param xcbc The XCBC-MAC state + @param in Input data to process + @param inlen Length of input in octets + Return CRYPT_OK on success +*/ +int xcbc_process(xcbc_state *xcbc, const unsigned char *in, unsigned long inlen) +{ + int err; +#ifdef LTC_FAST + int x; +#endif + + LTC_ARGCHK(xcbc != NULL); + LTC_ARGCHK(in != NULL); + + /* check structure */ + if ((err = cipher_is_valid(xcbc->cipher)) != CRYPT_OK) { + return err; + } + + if ((xcbc->blocksize > cipher_descriptor[xcbc->cipher].block_length) || (xcbc->blocksize < 0) || + (xcbc->buflen > xcbc->blocksize) || (xcbc->buflen < 0)) { + return CRYPT_INVALID_ARG; + } + +#ifdef LTC_FAST + if (xcbc->buflen == 0) { + while (inlen > (unsigned long)xcbc->blocksize) { + for (x = 0; x < xcbc->blocksize; x += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST(&(xcbc->IV[x]))) ^= *(LTC_FAST_TYPE_PTR_CAST(&(in[x]))); + } + cipher_descriptor[xcbc->cipher].ecb_encrypt(xcbc->IV, xcbc->IV, &xcbc->key); + in += xcbc->blocksize; + inlen -= xcbc->blocksize; + } + } +#endif + + while (inlen) { + if (xcbc->buflen == xcbc->blocksize) { + cipher_descriptor[xcbc->cipher].ecb_encrypt(xcbc->IV, xcbc->IV, &xcbc->key); + xcbc->buflen = 0; + } + xcbc->IV[xcbc->buflen++] ^= *in++; + --inlen; + } + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/mac/xcbc/xcbc_test.c b/fsbl/lib/libtomcrypt/src/mac/xcbc/xcbc_test.c new file mode 100644 index 000000000..6a0ecdf0d --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/mac/xcbc/xcbc_test.c @@ -0,0 +1,126 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file xcbc_test.c + XCBC Support, Test XCBC-MAC mode +*/ + +#ifdef LTC_XCBC + +/** Test XCBC-MAC mode + Return CRYPT_OK on succes +*/ +int xcbc_test(void) +{ +#ifdef LTC_NO_TEST + return CRYPT_NOP; +#else + static const struct { + int msglen; + unsigned char K[16], M[34], T[16]; + } tests[] = { +{ + 0, + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + + { 0 }, + + { 0x75, 0xf0, 0x25, 0x1d, 0x52, 0x8a, 0xc0, 0x1c, + 0x45, 0x73, 0xdf, 0xd5, 0x84, 0xd7, 0x9f, 0x29 } +}, + +{ + 3, + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + + { 0x00, 0x01, 0x02 }, + + { 0x5b, 0x37, 0x65, 0x80, 0xae, 0x2f, 0x19, 0xaf, + 0xe7, 0x21, 0x9c, 0xee, 0xf1, 0x72, 0x75, 0x6f } +}, + +{ + 16, + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + + { 0xd2, 0xa2, 0x46, 0xfa, 0x34, 0x9b, 0x68, 0xa7, + 0x99, 0x98, 0xa4, 0x39, 0x4f, 0xf7, 0xa2, 0x63 } +}, + +{ + 32, + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }, + + { 0xf5, 0x4f, 0x0e, 0xc8, 0xd2, 0xb9, 0xf3, 0xd3, + 0x68, 0x07, 0x73, 0x4b, 0xd5, 0x28, 0x3f, 0xd4 } +}, + +{ + 34, + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, + + { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21 }, + + { 0xbe, 0xcb, 0xb3, 0xbc, 0xcd, 0xb5, 0x18, 0xa3, + 0x06, 0x77, 0xd5, 0x48, 0x1f, 0xb6, 0xb4, 0xd8 }, +}, + + + +}; + unsigned char T[16]; + unsigned long taglen; + int err, x, idx; + + /* AES can be under rijndael or aes... try to find it */ + if ((idx = find_cipher("aes")) == -1) { + if ((idx = find_cipher("rijndael")) == -1) { + return CRYPT_NOP; + } + } + + for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { + taglen = 16; + if ((err = xcbc_memory(idx, tests[x].K, 16, tests[x].M, tests[x].msglen, T, &taglen)) != CRYPT_OK) { + return err; + } + if (compare_testvector(T, taglen, tests[x].T, 16, "XCBC", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + + return CRYPT_OK; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/math/fp/ltc_ecc_fp_mulmod.c b/fsbl/lib/libtomcrypt/src/math/fp/ltc_ecc_fp_mulmod.c new file mode 100644 index 000000000..24ed01964 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/math/fp/ltc_ecc_fp_mulmod.c @@ -0,0 +1,1585 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file ltc_ecc_fp_mulmod.c + ECC Crypto, Tom St Denis +*/ + +#if defined(LTC_MECC) && defined(LTC_MECC_FP) +#include + +/* number of entries in the cache */ +#ifndef FP_ENTRIES +#define FP_ENTRIES 16 +#endif + +/* number of bits in LUT */ +#ifndef FP_LUT +#define FP_LUT 8U +#endif + +#if (FP_LUT > 12) || (FP_LUT < 2) + #error FP_LUT must be between 2 and 12 inclusively +#endif + +/** Our FP cache */ +static struct { + ecc_point *g, /* cached COPY of base point */ + *LUT[1U< 6 + { 1, 0, 0 }, { 2, 1, 64 }, { 2, 2, 64 }, { 3, 3, 64 }, { 2, 4, 64 }, { 3, 5, 64 }, { 3, 6, 64 }, { 4, 7, 64 }, + { 2, 8, 64 }, { 3, 9, 64 }, { 3, 10, 64 }, { 4, 11, 64 }, { 3, 12, 64 }, { 4, 13, 64 }, { 4, 14, 64 }, { 5, 15, 64 }, + { 2, 16, 64 }, { 3, 17, 64 }, { 3, 18, 64 }, { 4, 19, 64 }, { 3, 20, 64 }, { 4, 21, 64 }, { 4, 22, 64 }, { 5, 23, 64 }, + { 3, 24, 64 }, { 4, 25, 64 }, { 4, 26, 64 }, { 5, 27, 64 }, { 4, 28, 64 }, { 5, 29, 64 }, { 5, 30, 64 }, { 6, 31, 64 }, + { 2, 32, 64 }, { 3, 33, 64 }, { 3, 34, 64 }, { 4, 35, 64 }, { 3, 36, 64 }, { 4, 37, 64 }, { 4, 38, 64 }, { 5, 39, 64 }, + { 3, 40, 64 }, { 4, 41, 64 }, { 4, 42, 64 }, { 5, 43, 64 }, { 4, 44, 64 }, { 5, 45, 64 }, { 5, 46, 64 }, { 6, 47, 64 }, + { 3, 48, 64 }, { 4, 49, 64 }, { 4, 50, 64 }, { 5, 51, 64 }, { 4, 52, 64 }, { 5, 53, 64 }, { 5, 54, 64 }, { 6, 55, 64 }, + { 4, 56, 64 }, { 5, 57, 64 }, { 5, 58, 64 }, { 6, 59, 64 }, { 5, 60, 64 }, { 6, 61, 64 }, { 6, 62, 64 }, { 7, 63, 64 }, +#if FP_LUT > 7 + { 1, 0, 0 }, { 2, 1, 128 }, { 2, 2, 128 }, { 3, 3, 128 }, { 2, 4, 128 }, { 3, 5, 128 }, { 3, 6, 128 }, { 4, 7, 128 }, + { 2, 8, 128 }, { 3, 9, 128 }, { 3, 10, 128 }, { 4, 11, 128 }, { 3, 12, 128 }, { 4, 13, 128 }, { 4, 14, 128 }, { 5, 15, 128 }, + { 2, 16, 128 }, { 3, 17, 128 }, { 3, 18, 128 }, { 4, 19, 128 }, { 3, 20, 128 }, { 4, 21, 128 }, { 4, 22, 128 }, { 5, 23, 128 }, + { 3, 24, 128 }, { 4, 25, 128 }, { 4, 26, 128 }, { 5, 27, 128 }, { 4, 28, 128 }, { 5, 29, 128 }, { 5, 30, 128 }, { 6, 31, 128 }, + { 2, 32, 128 }, { 3, 33, 128 }, { 3, 34, 128 }, { 4, 35, 128 }, { 3, 36, 128 }, { 4, 37, 128 }, { 4, 38, 128 }, { 5, 39, 128 }, + { 3, 40, 128 }, { 4, 41, 128 }, { 4, 42, 128 }, { 5, 43, 128 }, { 4, 44, 128 }, { 5, 45, 128 }, { 5, 46, 128 }, { 6, 47, 128 }, + { 3, 48, 128 }, { 4, 49, 128 }, { 4, 50, 128 }, { 5, 51, 128 }, { 4, 52, 128 }, { 5, 53, 128 }, { 5, 54, 128 }, { 6, 55, 128 }, + { 4, 56, 128 }, { 5, 57, 128 }, { 5, 58, 128 }, { 6, 59, 128 }, { 5, 60, 128 }, { 6, 61, 128 }, { 6, 62, 128 }, { 7, 63, 128 }, + { 2, 64, 128 }, { 3, 65, 128 }, { 3, 66, 128 }, { 4, 67, 128 }, { 3, 68, 128 }, { 4, 69, 128 }, { 4, 70, 128 }, { 5, 71, 128 }, + { 3, 72, 128 }, { 4, 73, 128 }, { 4, 74, 128 }, { 5, 75, 128 }, { 4, 76, 128 }, { 5, 77, 128 }, { 5, 78, 128 }, { 6, 79, 128 }, + { 3, 80, 128 }, { 4, 81, 128 }, { 4, 82, 128 }, { 5, 83, 128 }, { 4, 84, 128 }, { 5, 85, 128 }, { 5, 86, 128 }, { 6, 87, 128 }, + { 4, 88, 128 }, { 5, 89, 128 }, { 5, 90, 128 }, { 6, 91, 128 }, { 5, 92, 128 }, { 6, 93, 128 }, { 6, 94, 128 }, { 7, 95, 128 }, + { 3, 96, 128 }, { 4, 97, 128 }, { 4, 98, 128 }, { 5, 99, 128 }, { 4, 100, 128 }, { 5, 101, 128 }, { 5, 102, 128 }, { 6, 103, 128 }, + { 4, 104, 128 }, { 5, 105, 128 }, { 5, 106, 128 }, { 6, 107, 128 }, { 5, 108, 128 }, { 6, 109, 128 }, { 6, 110, 128 }, { 7, 111, 128 }, + { 4, 112, 128 }, { 5, 113, 128 }, { 5, 114, 128 }, { 6, 115, 128 }, { 5, 116, 128 }, { 6, 117, 128 }, { 6, 118, 128 }, { 7, 119, 128 }, + { 5, 120, 128 }, { 6, 121, 128 }, { 6, 122, 128 }, { 7, 123, 128 }, { 6, 124, 128 }, { 7, 125, 128 }, { 7, 126, 128 }, { 8, 127, 128 }, +#if FP_LUT > 8 + { 1, 0, 0 }, { 2, 1, 256 }, { 2, 2, 256 }, { 3, 3, 256 }, { 2, 4, 256 }, { 3, 5, 256 }, { 3, 6, 256 }, { 4, 7, 256 }, + { 2, 8, 256 }, { 3, 9, 256 }, { 3, 10, 256 }, { 4, 11, 256 }, { 3, 12, 256 }, { 4, 13, 256 }, { 4, 14, 256 }, { 5, 15, 256 }, + { 2, 16, 256 }, { 3, 17, 256 }, { 3, 18, 256 }, { 4, 19, 256 }, { 3, 20, 256 }, { 4, 21, 256 }, { 4, 22, 256 }, { 5, 23, 256 }, + { 3, 24, 256 }, { 4, 25, 256 }, { 4, 26, 256 }, { 5, 27, 256 }, { 4, 28, 256 }, { 5, 29, 256 }, { 5, 30, 256 }, { 6, 31, 256 }, + { 2, 32, 256 }, { 3, 33, 256 }, { 3, 34, 256 }, { 4, 35, 256 }, { 3, 36, 256 }, { 4, 37, 256 }, { 4, 38, 256 }, { 5, 39, 256 }, + { 3, 40, 256 }, { 4, 41, 256 }, { 4, 42, 256 }, { 5, 43, 256 }, { 4, 44, 256 }, { 5, 45, 256 }, { 5, 46, 256 }, { 6, 47, 256 }, + { 3, 48, 256 }, { 4, 49, 256 }, { 4, 50, 256 }, { 5, 51, 256 }, { 4, 52, 256 }, { 5, 53, 256 }, { 5, 54, 256 }, { 6, 55, 256 }, + { 4, 56, 256 }, { 5, 57, 256 }, { 5, 58, 256 }, { 6, 59, 256 }, { 5, 60, 256 }, { 6, 61, 256 }, { 6, 62, 256 }, { 7, 63, 256 }, + { 2, 64, 256 }, { 3, 65, 256 }, { 3, 66, 256 }, { 4, 67, 256 }, { 3, 68, 256 }, { 4, 69, 256 }, { 4, 70, 256 }, { 5, 71, 256 }, + { 3, 72, 256 }, { 4, 73, 256 }, { 4, 74, 256 }, { 5, 75, 256 }, { 4, 76, 256 }, { 5, 77, 256 }, { 5, 78, 256 }, { 6, 79, 256 }, + { 3, 80, 256 }, { 4, 81, 256 }, { 4, 82, 256 }, { 5, 83, 256 }, { 4, 84, 256 }, { 5, 85, 256 }, { 5, 86, 256 }, { 6, 87, 256 }, + { 4, 88, 256 }, { 5, 89, 256 }, { 5, 90, 256 }, { 6, 91, 256 }, { 5, 92, 256 }, { 6, 93, 256 }, { 6, 94, 256 }, { 7, 95, 256 }, + { 3, 96, 256 }, { 4, 97, 256 }, { 4, 98, 256 }, { 5, 99, 256 }, { 4, 100, 256 }, { 5, 101, 256 }, { 5, 102, 256 }, { 6, 103, 256 }, + { 4, 104, 256 }, { 5, 105, 256 }, { 5, 106, 256 }, { 6, 107, 256 }, { 5, 108, 256 }, { 6, 109, 256 }, { 6, 110, 256 }, { 7, 111, 256 }, + { 4, 112, 256 }, { 5, 113, 256 }, { 5, 114, 256 }, { 6, 115, 256 }, { 5, 116, 256 }, { 6, 117, 256 }, { 6, 118, 256 }, { 7, 119, 256 }, + { 5, 120, 256 }, { 6, 121, 256 }, { 6, 122, 256 }, { 7, 123, 256 }, { 6, 124, 256 }, { 7, 125, 256 }, { 7, 126, 256 }, { 8, 127, 256 }, + { 2, 128, 256 }, { 3, 129, 256 }, { 3, 130, 256 }, { 4, 131, 256 }, { 3, 132, 256 }, { 4, 133, 256 }, { 4, 134, 256 }, { 5, 135, 256 }, + { 3, 136, 256 }, { 4, 137, 256 }, { 4, 138, 256 }, { 5, 139, 256 }, { 4, 140, 256 }, { 5, 141, 256 }, { 5, 142, 256 }, { 6, 143, 256 }, + { 3, 144, 256 }, { 4, 145, 256 }, { 4, 146, 256 }, { 5, 147, 256 }, { 4, 148, 256 }, { 5, 149, 256 }, { 5, 150, 256 }, { 6, 151, 256 }, + { 4, 152, 256 }, { 5, 153, 256 }, { 5, 154, 256 }, { 6, 155, 256 }, { 5, 156, 256 }, { 6, 157, 256 }, { 6, 158, 256 }, { 7, 159, 256 }, + { 3, 160, 256 }, { 4, 161, 256 }, { 4, 162, 256 }, { 5, 163, 256 }, { 4, 164, 256 }, { 5, 165, 256 }, { 5, 166, 256 }, { 6, 167, 256 }, + { 4, 168, 256 }, { 5, 169, 256 }, { 5, 170, 256 }, { 6, 171, 256 }, { 5, 172, 256 }, { 6, 173, 256 }, { 6, 174, 256 }, { 7, 175, 256 }, + { 4, 176, 256 }, { 5, 177, 256 }, { 5, 178, 256 }, { 6, 179, 256 }, { 5, 180, 256 }, { 6, 181, 256 }, { 6, 182, 256 }, { 7, 183, 256 }, + { 5, 184, 256 }, { 6, 185, 256 }, { 6, 186, 256 }, { 7, 187, 256 }, { 6, 188, 256 }, { 7, 189, 256 }, { 7, 190, 256 }, { 8, 191, 256 }, + { 3, 192, 256 }, { 4, 193, 256 }, { 4, 194, 256 }, { 5, 195, 256 }, { 4, 196, 256 }, { 5, 197, 256 }, { 5, 198, 256 }, { 6, 199, 256 }, + { 4, 200, 256 }, { 5, 201, 256 }, { 5, 202, 256 }, { 6, 203, 256 }, { 5, 204, 256 }, { 6, 205, 256 }, { 6, 206, 256 }, { 7, 207, 256 }, + { 4, 208, 256 }, { 5, 209, 256 }, { 5, 210, 256 }, { 6, 211, 256 }, { 5, 212, 256 }, { 6, 213, 256 }, { 6, 214, 256 }, { 7, 215, 256 }, + { 5, 216, 256 }, { 6, 217, 256 }, { 6, 218, 256 }, { 7, 219, 256 }, { 6, 220, 256 }, { 7, 221, 256 }, { 7, 222, 256 }, { 8, 223, 256 }, + { 4, 224, 256 }, { 5, 225, 256 }, { 5, 226, 256 }, { 6, 227, 256 }, { 5, 228, 256 }, { 6, 229, 256 }, { 6, 230, 256 }, { 7, 231, 256 }, + { 5, 232, 256 }, { 6, 233, 256 }, { 6, 234, 256 }, { 7, 235, 256 }, { 6, 236, 256 }, { 7, 237, 256 }, { 7, 238, 256 }, { 8, 239, 256 }, + { 5, 240, 256 }, { 6, 241, 256 }, { 6, 242, 256 }, { 7, 243, 256 }, { 6, 244, 256 }, { 7, 245, 256 }, { 7, 246, 256 }, { 8, 247, 256 }, + { 6, 248, 256 }, { 7, 249, 256 }, { 7, 250, 256 }, { 8, 251, 256 }, { 7, 252, 256 }, { 8, 253, 256 }, { 8, 254, 256 }, { 9, 255, 256 }, +#if FP_LUT > 9 + { 1, 0, 0 }, { 2, 1, 512 }, { 2, 2, 512 }, { 3, 3, 512 }, { 2, 4, 512 }, { 3, 5, 512 }, { 3, 6, 512 }, { 4, 7, 512 }, + { 2, 8, 512 }, { 3, 9, 512 }, { 3, 10, 512 }, { 4, 11, 512 }, { 3, 12, 512 }, { 4, 13, 512 }, { 4, 14, 512 }, { 5, 15, 512 }, + { 2, 16, 512 }, { 3, 17, 512 }, { 3, 18, 512 }, { 4, 19, 512 }, { 3, 20, 512 }, { 4, 21, 512 }, { 4, 22, 512 }, { 5, 23, 512 }, + { 3, 24, 512 }, { 4, 25, 512 }, { 4, 26, 512 }, { 5, 27, 512 }, { 4, 28, 512 }, { 5, 29, 512 }, { 5, 30, 512 }, { 6, 31, 512 }, + { 2, 32, 512 }, { 3, 33, 512 }, { 3, 34, 512 }, { 4, 35, 512 }, { 3, 36, 512 }, { 4, 37, 512 }, { 4, 38, 512 }, { 5, 39, 512 }, + { 3, 40, 512 }, { 4, 41, 512 }, { 4, 42, 512 }, { 5, 43, 512 }, { 4, 44, 512 }, { 5, 45, 512 }, { 5, 46, 512 }, { 6, 47, 512 }, + { 3, 48, 512 }, { 4, 49, 512 }, { 4, 50, 512 }, { 5, 51, 512 }, { 4, 52, 512 }, { 5, 53, 512 }, { 5, 54, 512 }, { 6, 55, 512 }, + { 4, 56, 512 }, { 5, 57, 512 }, { 5, 58, 512 }, { 6, 59, 512 }, { 5, 60, 512 }, { 6, 61, 512 }, { 6, 62, 512 }, { 7, 63, 512 }, + { 2, 64, 512 }, { 3, 65, 512 }, { 3, 66, 512 }, { 4, 67, 512 }, { 3, 68, 512 }, { 4, 69, 512 }, { 4, 70, 512 }, { 5, 71, 512 }, + { 3, 72, 512 }, { 4, 73, 512 }, { 4, 74, 512 }, { 5, 75, 512 }, { 4, 76, 512 }, { 5, 77, 512 }, { 5, 78, 512 }, { 6, 79, 512 }, + { 3, 80, 512 }, { 4, 81, 512 }, { 4, 82, 512 }, { 5, 83, 512 }, { 4, 84, 512 }, { 5, 85, 512 }, { 5, 86, 512 }, { 6, 87, 512 }, + { 4, 88, 512 }, { 5, 89, 512 }, { 5, 90, 512 }, { 6, 91, 512 }, { 5, 92, 512 }, { 6, 93, 512 }, { 6, 94, 512 }, { 7, 95, 512 }, + { 3, 96, 512 }, { 4, 97, 512 }, { 4, 98, 512 }, { 5, 99, 512 }, { 4, 100, 512 }, { 5, 101, 512 }, { 5, 102, 512 }, { 6, 103, 512 }, + { 4, 104, 512 }, { 5, 105, 512 }, { 5, 106, 512 }, { 6, 107, 512 }, { 5, 108, 512 }, { 6, 109, 512 }, { 6, 110, 512 }, { 7, 111, 512 }, + { 4, 112, 512 }, { 5, 113, 512 }, { 5, 114, 512 }, { 6, 115, 512 }, { 5, 116, 512 }, { 6, 117, 512 }, { 6, 118, 512 }, { 7, 119, 512 }, + { 5, 120, 512 }, { 6, 121, 512 }, { 6, 122, 512 }, { 7, 123, 512 }, { 6, 124, 512 }, { 7, 125, 512 }, { 7, 126, 512 }, { 8, 127, 512 }, + { 2, 128, 512 }, { 3, 129, 512 }, { 3, 130, 512 }, { 4, 131, 512 }, { 3, 132, 512 }, { 4, 133, 512 }, { 4, 134, 512 }, { 5, 135, 512 }, + { 3, 136, 512 }, { 4, 137, 512 }, { 4, 138, 512 }, { 5, 139, 512 }, { 4, 140, 512 }, { 5, 141, 512 }, { 5, 142, 512 }, { 6, 143, 512 }, + { 3, 144, 512 }, { 4, 145, 512 }, { 4, 146, 512 }, { 5, 147, 512 }, { 4, 148, 512 }, { 5, 149, 512 }, { 5, 150, 512 }, { 6, 151, 512 }, + { 4, 152, 512 }, { 5, 153, 512 }, { 5, 154, 512 }, { 6, 155, 512 }, { 5, 156, 512 }, { 6, 157, 512 }, { 6, 158, 512 }, { 7, 159, 512 }, + { 3, 160, 512 }, { 4, 161, 512 }, { 4, 162, 512 }, { 5, 163, 512 }, { 4, 164, 512 }, { 5, 165, 512 }, { 5, 166, 512 }, { 6, 167, 512 }, + { 4, 168, 512 }, { 5, 169, 512 }, { 5, 170, 512 }, { 6, 171, 512 }, { 5, 172, 512 }, { 6, 173, 512 }, { 6, 174, 512 }, { 7, 175, 512 }, + { 4, 176, 512 }, { 5, 177, 512 }, { 5, 178, 512 }, { 6, 179, 512 }, { 5, 180, 512 }, { 6, 181, 512 }, { 6, 182, 512 }, { 7, 183, 512 }, + { 5, 184, 512 }, { 6, 185, 512 }, { 6, 186, 512 }, { 7, 187, 512 }, { 6, 188, 512 }, { 7, 189, 512 }, { 7, 190, 512 }, { 8, 191, 512 }, + { 3, 192, 512 }, { 4, 193, 512 }, { 4, 194, 512 }, { 5, 195, 512 }, { 4, 196, 512 }, { 5, 197, 512 }, { 5, 198, 512 }, { 6, 199, 512 }, + { 4, 200, 512 }, { 5, 201, 512 }, { 5, 202, 512 }, { 6, 203, 512 }, { 5, 204, 512 }, { 6, 205, 512 }, { 6, 206, 512 }, { 7, 207, 512 }, + { 4, 208, 512 }, { 5, 209, 512 }, { 5, 210, 512 }, { 6, 211, 512 }, { 5, 212, 512 }, { 6, 213, 512 }, { 6, 214, 512 }, { 7, 215, 512 }, + { 5, 216, 512 }, { 6, 217, 512 }, { 6, 218, 512 }, { 7, 219, 512 }, { 6, 220, 512 }, { 7, 221, 512 }, { 7, 222, 512 }, { 8, 223, 512 }, + { 4, 224, 512 }, { 5, 225, 512 }, { 5, 226, 512 }, { 6, 227, 512 }, { 5, 228, 512 }, { 6, 229, 512 }, { 6, 230, 512 }, { 7, 231, 512 }, + { 5, 232, 512 }, { 6, 233, 512 }, { 6, 234, 512 }, { 7, 235, 512 }, { 6, 236, 512 }, { 7, 237, 512 }, { 7, 238, 512 }, { 8, 239, 512 }, + { 5, 240, 512 }, { 6, 241, 512 }, { 6, 242, 512 }, { 7, 243, 512 }, { 6, 244, 512 }, { 7, 245, 512 }, { 7, 246, 512 }, { 8, 247, 512 }, + { 6, 248, 512 }, { 7, 249, 512 }, { 7, 250, 512 }, { 8, 251, 512 }, { 7, 252, 512 }, { 8, 253, 512 }, { 8, 254, 512 }, { 9, 255, 512 }, + { 2, 256, 512 }, { 3, 257, 512 }, { 3, 258, 512 }, { 4, 259, 512 }, { 3, 260, 512 }, { 4, 261, 512 }, { 4, 262, 512 }, { 5, 263, 512 }, + { 3, 264, 512 }, { 4, 265, 512 }, { 4, 266, 512 }, { 5, 267, 512 }, { 4, 268, 512 }, { 5, 269, 512 }, { 5, 270, 512 }, { 6, 271, 512 }, + { 3, 272, 512 }, { 4, 273, 512 }, { 4, 274, 512 }, { 5, 275, 512 }, { 4, 276, 512 }, { 5, 277, 512 }, { 5, 278, 512 }, { 6, 279, 512 }, + { 4, 280, 512 }, { 5, 281, 512 }, { 5, 282, 512 }, { 6, 283, 512 }, { 5, 284, 512 }, { 6, 285, 512 }, { 6, 286, 512 }, { 7, 287, 512 }, + { 3, 288, 512 }, { 4, 289, 512 }, { 4, 290, 512 }, { 5, 291, 512 }, { 4, 292, 512 }, { 5, 293, 512 }, { 5, 294, 512 }, { 6, 295, 512 }, + { 4, 296, 512 }, { 5, 297, 512 }, { 5, 298, 512 }, { 6, 299, 512 }, { 5, 300, 512 }, { 6, 301, 512 }, { 6, 302, 512 }, { 7, 303, 512 }, + { 4, 304, 512 }, { 5, 305, 512 }, { 5, 306, 512 }, { 6, 307, 512 }, { 5, 308, 512 }, { 6, 309, 512 }, { 6, 310, 512 }, { 7, 311, 512 }, + { 5, 312, 512 }, { 6, 313, 512 }, { 6, 314, 512 }, { 7, 315, 512 }, { 6, 316, 512 }, { 7, 317, 512 }, { 7, 318, 512 }, { 8, 319, 512 }, + { 3, 320, 512 }, { 4, 321, 512 }, { 4, 322, 512 }, { 5, 323, 512 }, { 4, 324, 512 }, { 5, 325, 512 }, { 5, 326, 512 }, { 6, 327, 512 }, + { 4, 328, 512 }, { 5, 329, 512 }, { 5, 330, 512 }, { 6, 331, 512 }, { 5, 332, 512 }, { 6, 333, 512 }, { 6, 334, 512 }, { 7, 335, 512 }, + { 4, 336, 512 }, { 5, 337, 512 }, { 5, 338, 512 }, { 6, 339, 512 }, { 5, 340, 512 }, { 6, 341, 512 }, { 6, 342, 512 }, { 7, 343, 512 }, + { 5, 344, 512 }, { 6, 345, 512 }, { 6, 346, 512 }, { 7, 347, 512 }, { 6, 348, 512 }, { 7, 349, 512 }, { 7, 350, 512 }, { 8, 351, 512 }, + { 4, 352, 512 }, { 5, 353, 512 }, { 5, 354, 512 }, { 6, 355, 512 }, { 5, 356, 512 }, { 6, 357, 512 }, { 6, 358, 512 }, { 7, 359, 512 }, + { 5, 360, 512 }, { 6, 361, 512 }, { 6, 362, 512 }, { 7, 363, 512 }, { 6, 364, 512 }, { 7, 365, 512 }, { 7, 366, 512 }, { 8, 367, 512 }, + { 5, 368, 512 }, { 6, 369, 512 }, { 6, 370, 512 }, { 7, 371, 512 }, { 6, 372, 512 }, { 7, 373, 512 }, { 7, 374, 512 }, { 8, 375, 512 }, + { 6, 376, 512 }, { 7, 377, 512 }, { 7, 378, 512 }, { 8, 379, 512 }, { 7, 380, 512 }, { 8, 381, 512 }, { 8, 382, 512 }, { 9, 383, 512 }, + { 3, 384, 512 }, { 4, 385, 512 }, { 4, 386, 512 }, { 5, 387, 512 }, { 4, 388, 512 }, { 5, 389, 512 }, { 5, 390, 512 }, { 6, 391, 512 }, + { 4, 392, 512 }, { 5, 393, 512 }, { 5, 394, 512 }, { 6, 395, 512 }, { 5, 396, 512 }, { 6, 397, 512 }, { 6, 398, 512 }, { 7, 399, 512 }, + { 4, 400, 512 }, { 5, 401, 512 }, { 5, 402, 512 }, { 6, 403, 512 }, { 5, 404, 512 }, { 6, 405, 512 }, { 6, 406, 512 }, { 7, 407, 512 }, + { 5, 408, 512 }, { 6, 409, 512 }, { 6, 410, 512 }, { 7, 411, 512 }, { 6, 412, 512 }, { 7, 413, 512 }, { 7, 414, 512 }, { 8, 415, 512 }, + { 4, 416, 512 }, { 5, 417, 512 }, { 5, 418, 512 }, { 6, 419, 512 }, { 5, 420, 512 }, { 6, 421, 512 }, { 6, 422, 512 }, { 7, 423, 512 }, + { 5, 424, 512 }, { 6, 425, 512 }, { 6, 426, 512 }, { 7, 427, 512 }, { 6, 428, 512 }, { 7, 429, 512 }, { 7, 430, 512 }, { 8, 431, 512 }, + { 5, 432, 512 }, { 6, 433, 512 }, { 6, 434, 512 }, { 7, 435, 512 }, { 6, 436, 512 }, { 7, 437, 512 }, { 7, 438, 512 }, { 8, 439, 512 }, + { 6, 440, 512 }, { 7, 441, 512 }, { 7, 442, 512 }, { 8, 443, 512 }, { 7, 444, 512 }, { 8, 445, 512 }, { 8, 446, 512 }, { 9, 447, 512 }, + { 4, 448, 512 }, { 5, 449, 512 }, { 5, 450, 512 }, { 6, 451, 512 }, { 5, 452, 512 }, { 6, 453, 512 }, { 6, 454, 512 }, { 7, 455, 512 }, + { 5, 456, 512 }, { 6, 457, 512 }, { 6, 458, 512 }, { 7, 459, 512 }, { 6, 460, 512 }, { 7, 461, 512 }, { 7, 462, 512 }, { 8, 463, 512 }, + { 5, 464, 512 }, { 6, 465, 512 }, { 6, 466, 512 }, { 7, 467, 512 }, { 6, 468, 512 }, { 7, 469, 512 }, { 7, 470, 512 }, { 8, 471, 512 }, + { 6, 472, 512 }, { 7, 473, 512 }, { 7, 474, 512 }, { 8, 475, 512 }, { 7, 476, 512 }, { 8, 477, 512 }, { 8, 478, 512 }, { 9, 479, 512 }, + { 5, 480, 512 }, { 6, 481, 512 }, { 6, 482, 512 }, { 7, 483, 512 }, { 6, 484, 512 }, { 7, 485, 512 }, { 7, 486, 512 }, { 8, 487, 512 }, + { 6, 488, 512 }, { 7, 489, 512 }, { 7, 490, 512 }, { 8, 491, 512 }, { 7, 492, 512 }, { 8, 493, 512 }, { 8, 494, 512 }, { 9, 495, 512 }, + { 6, 496, 512 }, { 7, 497, 512 }, { 7, 498, 512 }, { 8, 499, 512 }, { 7, 500, 512 }, { 8, 501, 512 }, { 8, 502, 512 }, { 9, 503, 512 }, + { 7, 504, 512 }, { 8, 505, 512 }, { 8, 506, 512 }, { 9, 507, 512 }, { 8, 508, 512 }, { 9, 509, 512 }, { 9, 510, 512 }, { 10, 511, 512 }, +#if FP_LUT > 10 + { 1, 0, 0 }, { 2, 1, 1024 }, { 2, 2, 1024 }, { 3, 3, 1024 }, { 2, 4, 1024 }, { 3, 5, 1024 }, { 3, 6, 1024 }, { 4, 7, 1024 }, + { 2, 8, 1024 }, { 3, 9, 1024 }, { 3, 10, 1024 }, { 4, 11, 1024 }, { 3, 12, 1024 }, { 4, 13, 1024 }, { 4, 14, 1024 }, { 5, 15, 1024 }, + { 2, 16, 1024 }, { 3, 17, 1024 }, { 3, 18, 1024 }, { 4, 19, 1024 }, { 3, 20, 1024 }, { 4, 21, 1024 }, { 4, 22, 1024 }, { 5, 23, 1024 }, + { 3, 24, 1024 }, { 4, 25, 1024 }, { 4, 26, 1024 }, { 5, 27, 1024 }, { 4, 28, 1024 }, { 5, 29, 1024 }, { 5, 30, 1024 }, { 6, 31, 1024 }, + { 2, 32, 1024 }, { 3, 33, 1024 }, { 3, 34, 1024 }, { 4, 35, 1024 }, { 3, 36, 1024 }, { 4, 37, 1024 }, { 4, 38, 1024 }, { 5, 39, 1024 }, + { 3, 40, 1024 }, { 4, 41, 1024 }, { 4, 42, 1024 }, { 5, 43, 1024 }, { 4, 44, 1024 }, { 5, 45, 1024 }, { 5, 46, 1024 }, { 6, 47, 1024 }, + { 3, 48, 1024 }, { 4, 49, 1024 }, { 4, 50, 1024 }, { 5, 51, 1024 }, { 4, 52, 1024 }, { 5, 53, 1024 }, { 5, 54, 1024 }, { 6, 55, 1024 }, + { 4, 56, 1024 }, { 5, 57, 1024 }, { 5, 58, 1024 }, { 6, 59, 1024 }, { 5, 60, 1024 }, { 6, 61, 1024 }, { 6, 62, 1024 }, { 7, 63, 1024 }, + { 2, 64, 1024 }, { 3, 65, 1024 }, { 3, 66, 1024 }, { 4, 67, 1024 }, { 3, 68, 1024 }, { 4, 69, 1024 }, { 4, 70, 1024 }, { 5, 71, 1024 }, + { 3, 72, 1024 }, { 4, 73, 1024 }, { 4, 74, 1024 }, { 5, 75, 1024 }, { 4, 76, 1024 }, { 5, 77, 1024 }, { 5, 78, 1024 }, { 6, 79, 1024 }, + { 3, 80, 1024 }, { 4, 81, 1024 }, { 4, 82, 1024 }, { 5, 83, 1024 }, { 4, 84, 1024 }, { 5, 85, 1024 }, { 5, 86, 1024 }, { 6, 87, 1024 }, + { 4, 88, 1024 }, { 5, 89, 1024 }, { 5, 90, 1024 }, { 6, 91, 1024 }, { 5, 92, 1024 }, { 6, 93, 1024 }, { 6, 94, 1024 }, { 7, 95, 1024 }, + { 3, 96, 1024 }, { 4, 97, 1024 }, { 4, 98, 1024 }, { 5, 99, 1024 }, { 4, 100, 1024 }, { 5, 101, 1024 }, { 5, 102, 1024 }, { 6, 103, 1024 }, + { 4, 104, 1024 }, { 5, 105, 1024 }, { 5, 106, 1024 }, { 6, 107, 1024 }, { 5, 108, 1024 }, { 6, 109, 1024 }, { 6, 110, 1024 }, { 7, 111, 1024 }, + { 4, 112, 1024 }, { 5, 113, 1024 }, { 5, 114, 1024 }, { 6, 115, 1024 }, { 5, 116, 1024 }, { 6, 117, 1024 }, { 6, 118, 1024 }, { 7, 119, 1024 }, + { 5, 120, 1024 }, { 6, 121, 1024 }, { 6, 122, 1024 }, { 7, 123, 1024 }, { 6, 124, 1024 }, { 7, 125, 1024 }, { 7, 126, 1024 }, { 8, 127, 1024 }, + { 2, 128, 1024 }, { 3, 129, 1024 }, { 3, 130, 1024 }, { 4, 131, 1024 }, { 3, 132, 1024 }, { 4, 133, 1024 }, { 4, 134, 1024 }, { 5, 135, 1024 }, + { 3, 136, 1024 }, { 4, 137, 1024 }, { 4, 138, 1024 }, { 5, 139, 1024 }, { 4, 140, 1024 }, { 5, 141, 1024 }, { 5, 142, 1024 }, { 6, 143, 1024 }, + { 3, 144, 1024 }, { 4, 145, 1024 }, { 4, 146, 1024 }, { 5, 147, 1024 }, { 4, 148, 1024 }, { 5, 149, 1024 }, { 5, 150, 1024 }, { 6, 151, 1024 }, + { 4, 152, 1024 }, { 5, 153, 1024 }, { 5, 154, 1024 }, { 6, 155, 1024 }, { 5, 156, 1024 }, { 6, 157, 1024 }, { 6, 158, 1024 }, { 7, 159, 1024 }, + { 3, 160, 1024 }, { 4, 161, 1024 }, { 4, 162, 1024 }, { 5, 163, 1024 }, { 4, 164, 1024 }, { 5, 165, 1024 }, { 5, 166, 1024 }, { 6, 167, 1024 }, + { 4, 168, 1024 }, { 5, 169, 1024 }, { 5, 170, 1024 }, { 6, 171, 1024 }, { 5, 172, 1024 }, { 6, 173, 1024 }, { 6, 174, 1024 }, { 7, 175, 1024 }, + { 4, 176, 1024 }, { 5, 177, 1024 }, { 5, 178, 1024 }, { 6, 179, 1024 }, { 5, 180, 1024 }, { 6, 181, 1024 }, { 6, 182, 1024 }, { 7, 183, 1024 }, + { 5, 184, 1024 }, { 6, 185, 1024 }, { 6, 186, 1024 }, { 7, 187, 1024 }, { 6, 188, 1024 }, { 7, 189, 1024 }, { 7, 190, 1024 }, { 8, 191, 1024 }, + { 3, 192, 1024 }, { 4, 193, 1024 }, { 4, 194, 1024 }, { 5, 195, 1024 }, { 4, 196, 1024 }, { 5, 197, 1024 }, { 5, 198, 1024 }, { 6, 199, 1024 }, + { 4, 200, 1024 }, { 5, 201, 1024 }, { 5, 202, 1024 }, { 6, 203, 1024 }, { 5, 204, 1024 }, { 6, 205, 1024 }, { 6, 206, 1024 }, { 7, 207, 1024 }, + { 4, 208, 1024 }, { 5, 209, 1024 }, { 5, 210, 1024 }, { 6, 211, 1024 }, { 5, 212, 1024 }, { 6, 213, 1024 }, { 6, 214, 1024 }, { 7, 215, 1024 }, + { 5, 216, 1024 }, { 6, 217, 1024 }, { 6, 218, 1024 }, { 7, 219, 1024 }, { 6, 220, 1024 }, { 7, 221, 1024 }, { 7, 222, 1024 }, { 8, 223, 1024 }, + { 4, 224, 1024 }, { 5, 225, 1024 }, { 5, 226, 1024 }, { 6, 227, 1024 }, { 5, 228, 1024 }, { 6, 229, 1024 }, { 6, 230, 1024 }, { 7, 231, 1024 }, + { 5, 232, 1024 }, { 6, 233, 1024 }, { 6, 234, 1024 }, { 7, 235, 1024 }, { 6, 236, 1024 }, { 7, 237, 1024 }, { 7, 238, 1024 }, { 8, 239, 1024 }, + { 5, 240, 1024 }, { 6, 241, 1024 }, { 6, 242, 1024 }, { 7, 243, 1024 }, { 6, 244, 1024 }, { 7, 245, 1024 }, { 7, 246, 1024 }, { 8, 247, 1024 }, + { 6, 248, 1024 }, { 7, 249, 1024 }, { 7, 250, 1024 }, { 8, 251, 1024 }, { 7, 252, 1024 }, { 8, 253, 1024 }, { 8, 254, 1024 }, { 9, 255, 1024 }, + { 2, 256, 1024 }, { 3, 257, 1024 }, { 3, 258, 1024 }, { 4, 259, 1024 }, { 3, 260, 1024 }, { 4, 261, 1024 }, { 4, 262, 1024 }, { 5, 263, 1024 }, + { 3, 264, 1024 }, { 4, 265, 1024 }, { 4, 266, 1024 }, { 5, 267, 1024 }, { 4, 268, 1024 }, { 5, 269, 1024 }, { 5, 270, 1024 }, { 6, 271, 1024 }, + { 3, 272, 1024 }, { 4, 273, 1024 }, { 4, 274, 1024 }, { 5, 275, 1024 }, { 4, 276, 1024 }, { 5, 277, 1024 }, { 5, 278, 1024 }, { 6, 279, 1024 }, + { 4, 280, 1024 }, { 5, 281, 1024 }, { 5, 282, 1024 }, { 6, 283, 1024 }, { 5, 284, 1024 }, { 6, 285, 1024 }, { 6, 286, 1024 }, { 7, 287, 1024 }, + { 3, 288, 1024 }, { 4, 289, 1024 }, { 4, 290, 1024 }, { 5, 291, 1024 }, { 4, 292, 1024 }, { 5, 293, 1024 }, { 5, 294, 1024 }, { 6, 295, 1024 }, + { 4, 296, 1024 }, { 5, 297, 1024 }, { 5, 298, 1024 }, { 6, 299, 1024 }, { 5, 300, 1024 }, { 6, 301, 1024 }, { 6, 302, 1024 }, { 7, 303, 1024 }, + { 4, 304, 1024 }, { 5, 305, 1024 }, { 5, 306, 1024 }, { 6, 307, 1024 }, { 5, 308, 1024 }, { 6, 309, 1024 }, { 6, 310, 1024 }, { 7, 311, 1024 }, + { 5, 312, 1024 }, { 6, 313, 1024 }, { 6, 314, 1024 }, { 7, 315, 1024 }, { 6, 316, 1024 }, { 7, 317, 1024 }, { 7, 318, 1024 }, { 8, 319, 1024 }, + { 3, 320, 1024 }, { 4, 321, 1024 }, { 4, 322, 1024 }, { 5, 323, 1024 }, { 4, 324, 1024 }, { 5, 325, 1024 }, { 5, 326, 1024 }, { 6, 327, 1024 }, + { 4, 328, 1024 }, { 5, 329, 1024 }, { 5, 330, 1024 }, { 6, 331, 1024 }, { 5, 332, 1024 }, { 6, 333, 1024 }, { 6, 334, 1024 }, { 7, 335, 1024 }, + { 4, 336, 1024 }, { 5, 337, 1024 }, { 5, 338, 1024 }, { 6, 339, 1024 }, { 5, 340, 1024 }, { 6, 341, 1024 }, { 6, 342, 1024 }, { 7, 343, 1024 }, + { 5, 344, 1024 }, { 6, 345, 1024 }, { 6, 346, 1024 }, { 7, 347, 1024 }, { 6, 348, 1024 }, { 7, 349, 1024 }, { 7, 350, 1024 }, { 8, 351, 1024 }, + { 4, 352, 1024 }, { 5, 353, 1024 }, { 5, 354, 1024 }, { 6, 355, 1024 }, { 5, 356, 1024 }, { 6, 357, 1024 }, { 6, 358, 1024 }, { 7, 359, 1024 }, + { 5, 360, 1024 }, { 6, 361, 1024 }, { 6, 362, 1024 }, { 7, 363, 1024 }, { 6, 364, 1024 }, { 7, 365, 1024 }, { 7, 366, 1024 }, { 8, 367, 1024 }, + { 5, 368, 1024 }, { 6, 369, 1024 }, { 6, 370, 1024 }, { 7, 371, 1024 }, { 6, 372, 1024 }, { 7, 373, 1024 }, { 7, 374, 1024 }, { 8, 375, 1024 }, + { 6, 376, 1024 }, { 7, 377, 1024 }, { 7, 378, 1024 }, { 8, 379, 1024 }, { 7, 380, 1024 }, { 8, 381, 1024 }, { 8, 382, 1024 }, { 9, 383, 1024 }, + { 3, 384, 1024 }, { 4, 385, 1024 }, { 4, 386, 1024 }, { 5, 387, 1024 }, { 4, 388, 1024 }, { 5, 389, 1024 }, { 5, 390, 1024 }, { 6, 391, 1024 }, + { 4, 392, 1024 }, { 5, 393, 1024 }, { 5, 394, 1024 }, { 6, 395, 1024 }, { 5, 396, 1024 }, { 6, 397, 1024 }, { 6, 398, 1024 }, { 7, 399, 1024 }, + { 4, 400, 1024 }, { 5, 401, 1024 }, { 5, 402, 1024 }, { 6, 403, 1024 }, { 5, 404, 1024 }, { 6, 405, 1024 }, { 6, 406, 1024 }, { 7, 407, 1024 }, + { 5, 408, 1024 }, { 6, 409, 1024 }, { 6, 410, 1024 }, { 7, 411, 1024 }, { 6, 412, 1024 }, { 7, 413, 1024 }, { 7, 414, 1024 }, { 8, 415, 1024 }, + { 4, 416, 1024 }, { 5, 417, 1024 }, { 5, 418, 1024 }, { 6, 419, 1024 }, { 5, 420, 1024 }, { 6, 421, 1024 }, { 6, 422, 1024 }, { 7, 423, 1024 }, + { 5, 424, 1024 }, { 6, 425, 1024 }, { 6, 426, 1024 }, { 7, 427, 1024 }, { 6, 428, 1024 }, { 7, 429, 1024 }, { 7, 430, 1024 }, { 8, 431, 1024 }, + { 5, 432, 1024 }, { 6, 433, 1024 }, { 6, 434, 1024 }, { 7, 435, 1024 }, { 6, 436, 1024 }, { 7, 437, 1024 }, { 7, 438, 1024 }, { 8, 439, 1024 }, + { 6, 440, 1024 }, { 7, 441, 1024 }, { 7, 442, 1024 }, { 8, 443, 1024 }, { 7, 444, 1024 }, { 8, 445, 1024 }, { 8, 446, 1024 }, { 9, 447, 1024 }, + { 4, 448, 1024 }, { 5, 449, 1024 }, { 5, 450, 1024 }, { 6, 451, 1024 }, { 5, 452, 1024 }, { 6, 453, 1024 }, { 6, 454, 1024 }, { 7, 455, 1024 }, + { 5, 456, 1024 }, { 6, 457, 1024 }, { 6, 458, 1024 }, { 7, 459, 1024 }, { 6, 460, 1024 }, { 7, 461, 1024 }, { 7, 462, 1024 }, { 8, 463, 1024 }, + { 5, 464, 1024 }, { 6, 465, 1024 }, { 6, 466, 1024 }, { 7, 467, 1024 }, { 6, 468, 1024 }, { 7, 469, 1024 }, { 7, 470, 1024 }, { 8, 471, 1024 }, + { 6, 472, 1024 }, { 7, 473, 1024 }, { 7, 474, 1024 }, { 8, 475, 1024 }, { 7, 476, 1024 }, { 8, 477, 1024 }, { 8, 478, 1024 }, { 9, 479, 1024 }, + { 5, 480, 1024 }, { 6, 481, 1024 }, { 6, 482, 1024 }, { 7, 483, 1024 }, { 6, 484, 1024 }, { 7, 485, 1024 }, { 7, 486, 1024 }, { 8, 487, 1024 }, + { 6, 488, 1024 }, { 7, 489, 1024 }, { 7, 490, 1024 }, { 8, 491, 1024 }, { 7, 492, 1024 }, { 8, 493, 1024 }, { 8, 494, 1024 }, { 9, 495, 1024 }, + { 6, 496, 1024 }, { 7, 497, 1024 }, { 7, 498, 1024 }, { 8, 499, 1024 }, { 7, 500, 1024 }, { 8, 501, 1024 }, { 8, 502, 1024 }, { 9, 503, 1024 }, + { 7, 504, 1024 }, { 8, 505, 1024 }, { 8, 506, 1024 }, { 9, 507, 1024 }, { 8, 508, 1024 }, { 9, 509, 1024 }, { 9, 510, 1024 }, { 10, 511, 1024 }, + { 2, 512, 1024 }, { 3, 513, 1024 }, { 3, 514, 1024 }, { 4, 515, 1024 }, { 3, 516, 1024 }, { 4, 517, 1024 }, { 4, 518, 1024 }, { 5, 519, 1024 }, + { 3, 520, 1024 }, { 4, 521, 1024 }, { 4, 522, 1024 }, { 5, 523, 1024 }, { 4, 524, 1024 }, { 5, 525, 1024 }, { 5, 526, 1024 }, { 6, 527, 1024 }, + { 3, 528, 1024 }, { 4, 529, 1024 }, { 4, 530, 1024 }, { 5, 531, 1024 }, { 4, 532, 1024 }, { 5, 533, 1024 }, { 5, 534, 1024 }, { 6, 535, 1024 }, + { 4, 536, 1024 }, { 5, 537, 1024 }, { 5, 538, 1024 }, { 6, 539, 1024 }, { 5, 540, 1024 }, { 6, 541, 1024 }, { 6, 542, 1024 }, { 7, 543, 1024 }, + { 3, 544, 1024 }, { 4, 545, 1024 }, { 4, 546, 1024 }, { 5, 547, 1024 }, { 4, 548, 1024 }, { 5, 549, 1024 }, { 5, 550, 1024 }, { 6, 551, 1024 }, + { 4, 552, 1024 }, { 5, 553, 1024 }, { 5, 554, 1024 }, { 6, 555, 1024 }, { 5, 556, 1024 }, { 6, 557, 1024 }, { 6, 558, 1024 }, { 7, 559, 1024 }, + { 4, 560, 1024 }, { 5, 561, 1024 }, { 5, 562, 1024 }, { 6, 563, 1024 }, { 5, 564, 1024 }, { 6, 565, 1024 }, { 6, 566, 1024 }, { 7, 567, 1024 }, + { 5, 568, 1024 }, { 6, 569, 1024 }, { 6, 570, 1024 }, { 7, 571, 1024 }, { 6, 572, 1024 }, { 7, 573, 1024 }, { 7, 574, 1024 }, { 8, 575, 1024 }, + { 3, 576, 1024 }, { 4, 577, 1024 }, { 4, 578, 1024 }, { 5, 579, 1024 }, { 4, 580, 1024 }, { 5, 581, 1024 }, { 5, 582, 1024 }, { 6, 583, 1024 }, + { 4, 584, 1024 }, { 5, 585, 1024 }, { 5, 586, 1024 }, { 6, 587, 1024 }, { 5, 588, 1024 }, { 6, 589, 1024 }, { 6, 590, 1024 }, { 7, 591, 1024 }, + { 4, 592, 1024 }, { 5, 593, 1024 }, { 5, 594, 1024 }, { 6, 595, 1024 }, { 5, 596, 1024 }, { 6, 597, 1024 }, { 6, 598, 1024 }, { 7, 599, 1024 }, + { 5, 600, 1024 }, { 6, 601, 1024 }, { 6, 602, 1024 }, { 7, 603, 1024 }, { 6, 604, 1024 }, { 7, 605, 1024 }, { 7, 606, 1024 }, { 8, 607, 1024 }, + { 4, 608, 1024 }, { 5, 609, 1024 }, { 5, 610, 1024 }, { 6, 611, 1024 }, { 5, 612, 1024 }, { 6, 613, 1024 }, { 6, 614, 1024 }, { 7, 615, 1024 }, + { 5, 616, 1024 }, { 6, 617, 1024 }, { 6, 618, 1024 }, { 7, 619, 1024 }, { 6, 620, 1024 }, { 7, 621, 1024 }, { 7, 622, 1024 }, { 8, 623, 1024 }, + { 5, 624, 1024 }, { 6, 625, 1024 }, { 6, 626, 1024 }, { 7, 627, 1024 }, { 6, 628, 1024 }, { 7, 629, 1024 }, { 7, 630, 1024 }, { 8, 631, 1024 }, + { 6, 632, 1024 }, { 7, 633, 1024 }, { 7, 634, 1024 }, { 8, 635, 1024 }, { 7, 636, 1024 }, { 8, 637, 1024 }, { 8, 638, 1024 }, { 9, 639, 1024 }, + { 3, 640, 1024 }, { 4, 641, 1024 }, { 4, 642, 1024 }, { 5, 643, 1024 }, { 4, 644, 1024 }, { 5, 645, 1024 }, { 5, 646, 1024 }, { 6, 647, 1024 }, + { 4, 648, 1024 }, { 5, 649, 1024 }, { 5, 650, 1024 }, { 6, 651, 1024 }, { 5, 652, 1024 }, { 6, 653, 1024 }, { 6, 654, 1024 }, { 7, 655, 1024 }, + { 4, 656, 1024 }, { 5, 657, 1024 }, { 5, 658, 1024 }, { 6, 659, 1024 }, { 5, 660, 1024 }, { 6, 661, 1024 }, { 6, 662, 1024 }, { 7, 663, 1024 }, + { 5, 664, 1024 }, { 6, 665, 1024 }, { 6, 666, 1024 }, { 7, 667, 1024 }, { 6, 668, 1024 }, { 7, 669, 1024 }, { 7, 670, 1024 }, { 8, 671, 1024 }, + { 4, 672, 1024 }, { 5, 673, 1024 }, { 5, 674, 1024 }, { 6, 675, 1024 }, { 5, 676, 1024 }, { 6, 677, 1024 }, { 6, 678, 1024 }, { 7, 679, 1024 }, + { 5, 680, 1024 }, { 6, 681, 1024 }, { 6, 682, 1024 }, { 7, 683, 1024 }, { 6, 684, 1024 }, { 7, 685, 1024 }, { 7, 686, 1024 }, { 8, 687, 1024 }, + { 5, 688, 1024 }, { 6, 689, 1024 }, { 6, 690, 1024 }, { 7, 691, 1024 }, { 6, 692, 1024 }, { 7, 693, 1024 }, { 7, 694, 1024 }, { 8, 695, 1024 }, + { 6, 696, 1024 }, { 7, 697, 1024 }, { 7, 698, 1024 }, { 8, 699, 1024 }, { 7, 700, 1024 }, { 8, 701, 1024 }, { 8, 702, 1024 }, { 9, 703, 1024 }, + { 4, 704, 1024 }, { 5, 705, 1024 }, { 5, 706, 1024 }, { 6, 707, 1024 }, { 5, 708, 1024 }, { 6, 709, 1024 }, { 6, 710, 1024 }, { 7, 711, 1024 }, + { 5, 712, 1024 }, { 6, 713, 1024 }, { 6, 714, 1024 }, { 7, 715, 1024 }, { 6, 716, 1024 }, { 7, 717, 1024 }, { 7, 718, 1024 }, { 8, 719, 1024 }, + { 5, 720, 1024 }, { 6, 721, 1024 }, { 6, 722, 1024 }, { 7, 723, 1024 }, { 6, 724, 1024 }, { 7, 725, 1024 }, { 7, 726, 1024 }, { 8, 727, 1024 }, + { 6, 728, 1024 }, { 7, 729, 1024 }, { 7, 730, 1024 }, { 8, 731, 1024 }, { 7, 732, 1024 }, { 8, 733, 1024 }, { 8, 734, 1024 }, { 9, 735, 1024 }, + { 5, 736, 1024 }, { 6, 737, 1024 }, { 6, 738, 1024 }, { 7, 739, 1024 }, { 6, 740, 1024 }, { 7, 741, 1024 }, { 7, 742, 1024 }, { 8, 743, 1024 }, + { 6, 744, 1024 }, { 7, 745, 1024 }, { 7, 746, 1024 }, { 8, 747, 1024 }, { 7, 748, 1024 }, { 8, 749, 1024 }, { 8, 750, 1024 }, { 9, 751, 1024 }, + { 6, 752, 1024 }, { 7, 753, 1024 }, { 7, 754, 1024 }, { 8, 755, 1024 }, { 7, 756, 1024 }, { 8, 757, 1024 }, { 8, 758, 1024 }, { 9, 759, 1024 }, + { 7, 760, 1024 }, { 8, 761, 1024 }, { 8, 762, 1024 }, { 9, 763, 1024 }, { 8, 764, 1024 }, { 9, 765, 1024 }, { 9, 766, 1024 }, { 10, 767, 1024 }, + { 3, 768, 1024 }, { 4, 769, 1024 }, { 4, 770, 1024 }, { 5, 771, 1024 }, { 4, 772, 1024 }, { 5, 773, 1024 }, { 5, 774, 1024 }, { 6, 775, 1024 }, + { 4, 776, 1024 }, { 5, 777, 1024 }, { 5, 778, 1024 }, { 6, 779, 1024 }, { 5, 780, 1024 }, { 6, 781, 1024 }, { 6, 782, 1024 }, { 7, 783, 1024 }, + { 4, 784, 1024 }, { 5, 785, 1024 }, { 5, 786, 1024 }, { 6, 787, 1024 }, { 5, 788, 1024 }, { 6, 789, 1024 }, { 6, 790, 1024 }, { 7, 791, 1024 }, + { 5, 792, 1024 }, { 6, 793, 1024 }, { 6, 794, 1024 }, { 7, 795, 1024 }, { 6, 796, 1024 }, { 7, 797, 1024 }, { 7, 798, 1024 }, { 8, 799, 1024 }, + { 4, 800, 1024 }, { 5, 801, 1024 }, { 5, 802, 1024 }, { 6, 803, 1024 }, { 5, 804, 1024 }, { 6, 805, 1024 }, { 6, 806, 1024 }, { 7, 807, 1024 }, + { 5, 808, 1024 }, { 6, 809, 1024 }, { 6, 810, 1024 }, { 7, 811, 1024 }, { 6, 812, 1024 }, { 7, 813, 1024 }, { 7, 814, 1024 }, { 8, 815, 1024 }, + { 5, 816, 1024 }, { 6, 817, 1024 }, { 6, 818, 1024 }, { 7, 819, 1024 }, { 6, 820, 1024 }, { 7, 821, 1024 }, { 7, 822, 1024 }, { 8, 823, 1024 }, + { 6, 824, 1024 }, { 7, 825, 1024 }, { 7, 826, 1024 }, { 8, 827, 1024 }, { 7, 828, 1024 }, { 8, 829, 1024 }, { 8, 830, 1024 }, { 9, 831, 1024 }, + { 4, 832, 1024 }, { 5, 833, 1024 }, { 5, 834, 1024 }, { 6, 835, 1024 }, { 5, 836, 1024 }, { 6, 837, 1024 }, { 6, 838, 1024 }, { 7, 839, 1024 }, + { 5, 840, 1024 }, { 6, 841, 1024 }, { 6, 842, 1024 }, { 7, 843, 1024 }, { 6, 844, 1024 }, { 7, 845, 1024 }, { 7, 846, 1024 }, { 8, 847, 1024 }, + { 5, 848, 1024 }, { 6, 849, 1024 }, { 6, 850, 1024 }, { 7, 851, 1024 }, { 6, 852, 1024 }, { 7, 853, 1024 }, { 7, 854, 1024 }, { 8, 855, 1024 }, + { 6, 856, 1024 }, { 7, 857, 1024 }, { 7, 858, 1024 }, { 8, 859, 1024 }, { 7, 860, 1024 }, { 8, 861, 1024 }, { 8, 862, 1024 }, { 9, 863, 1024 }, + { 5, 864, 1024 }, { 6, 865, 1024 }, { 6, 866, 1024 }, { 7, 867, 1024 }, { 6, 868, 1024 }, { 7, 869, 1024 }, { 7, 870, 1024 }, { 8, 871, 1024 }, + { 6, 872, 1024 }, { 7, 873, 1024 }, { 7, 874, 1024 }, { 8, 875, 1024 }, { 7, 876, 1024 }, { 8, 877, 1024 }, { 8, 878, 1024 }, { 9, 879, 1024 }, + { 6, 880, 1024 }, { 7, 881, 1024 }, { 7, 882, 1024 }, { 8, 883, 1024 }, { 7, 884, 1024 }, { 8, 885, 1024 }, { 8, 886, 1024 }, { 9, 887, 1024 }, + { 7, 888, 1024 }, { 8, 889, 1024 }, { 8, 890, 1024 }, { 9, 891, 1024 }, { 8, 892, 1024 }, { 9, 893, 1024 }, { 9, 894, 1024 }, { 10, 895, 1024 }, + { 4, 896, 1024 }, { 5, 897, 1024 }, { 5, 898, 1024 }, { 6, 899, 1024 }, { 5, 900, 1024 }, { 6, 901, 1024 }, { 6, 902, 1024 }, { 7, 903, 1024 }, + { 5, 904, 1024 }, { 6, 905, 1024 }, { 6, 906, 1024 }, { 7, 907, 1024 }, { 6, 908, 1024 }, { 7, 909, 1024 }, { 7, 910, 1024 }, { 8, 911, 1024 }, + { 5, 912, 1024 }, { 6, 913, 1024 }, { 6, 914, 1024 }, { 7, 915, 1024 }, { 6, 916, 1024 }, { 7, 917, 1024 }, { 7, 918, 1024 }, { 8, 919, 1024 }, + { 6, 920, 1024 }, { 7, 921, 1024 }, { 7, 922, 1024 }, { 8, 923, 1024 }, { 7, 924, 1024 }, { 8, 925, 1024 }, { 8, 926, 1024 }, { 9, 927, 1024 }, + { 5, 928, 1024 }, { 6, 929, 1024 }, { 6, 930, 1024 }, { 7, 931, 1024 }, { 6, 932, 1024 }, { 7, 933, 1024 }, { 7, 934, 1024 }, { 8, 935, 1024 }, + { 6, 936, 1024 }, { 7, 937, 1024 }, { 7, 938, 1024 }, { 8, 939, 1024 }, { 7, 940, 1024 }, { 8, 941, 1024 }, { 8, 942, 1024 }, { 9, 943, 1024 }, + { 6, 944, 1024 }, { 7, 945, 1024 }, { 7, 946, 1024 }, { 8, 947, 1024 }, { 7, 948, 1024 }, { 8, 949, 1024 }, { 8, 950, 1024 }, { 9, 951, 1024 }, + { 7, 952, 1024 }, { 8, 953, 1024 }, { 8, 954, 1024 }, { 9, 955, 1024 }, { 8, 956, 1024 }, { 9, 957, 1024 }, { 9, 958, 1024 }, { 10, 959, 1024 }, + { 5, 960, 1024 }, { 6, 961, 1024 }, { 6, 962, 1024 }, { 7, 963, 1024 }, { 6, 964, 1024 }, { 7, 965, 1024 }, { 7, 966, 1024 }, { 8, 967, 1024 }, + { 6, 968, 1024 }, { 7, 969, 1024 }, { 7, 970, 1024 }, { 8, 971, 1024 }, { 7, 972, 1024 }, { 8, 973, 1024 }, { 8, 974, 1024 }, { 9, 975, 1024 }, + { 6, 976, 1024 }, { 7, 977, 1024 }, { 7, 978, 1024 }, { 8, 979, 1024 }, { 7, 980, 1024 }, { 8, 981, 1024 }, { 8, 982, 1024 }, { 9, 983, 1024 }, + { 7, 984, 1024 }, { 8, 985, 1024 }, { 8, 986, 1024 }, { 9, 987, 1024 }, { 8, 988, 1024 }, { 9, 989, 1024 }, { 9, 990, 1024 }, { 10, 991, 1024 }, + { 6, 992, 1024 }, { 7, 993, 1024 }, { 7, 994, 1024 }, { 8, 995, 1024 }, { 7, 996, 1024 }, { 8, 997, 1024 }, { 8, 998, 1024 }, { 9, 999, 1024 }, + { 7, 1000, 1024 }, { 8, 1001, 1024 }, { 8, 1002, 1024 }, { 9, 1003, 1024 }, { 8, 1004, 1024 }, { 9, 1005, 1024 }, { 9, 1006, 1024 }, { 10, 1007, 1024 }, + { 7, 1008, 1024 }, { 8, 1009, 1024 }, { 8, 1010, 1024 }, { 9, 1011, 1024 }, { 8, 1012, 1024 }, { 9, 1013, 1024 }, { 9, 1014, 1024 }, { 10, 1015, 1024 }, + { 8, 1016, 1024 }, { 9, 1017, 1024 }, { 9, 1018, 1024 }, { 10, 1019, 1024 }, { 9, 1020, 1024 }, { 10, 1021, 1024 }, { 10, 1022, 1024 }, { 11, 1023, 1024 }, +#if FP_LUT > 11 + { 1, 0, 0 }, { 2, 1, 2048 }, { 2, 2, 2048 }, { 3, 3, 2048 }, { 2, 4, 2048 }, { 3, 5, 2048 }, { 3, 6, 2048 }, { 4, 7, 2048 }, + { 2, 8, 2048 }, { 3, 9, 2048 }, { 3, 10, 2048 }, { 4, 11, 2048 }, { 3, 12, 2048 }, { 4, 13, 2048 }, { 4, 14, 2048 }, { 5, 15, 2048 }, + { 2, 16, 2048 }, { 3, 17, 2048 }, { 3, 18, 2048 }, { 4, 19, 2048 }, { 3, 20, 2048 }, { 4, 21, 2048 }, { 4, 22, 2048 }, { 5, 23, 2048 }, + { 3, 24, 2048 }, { 4, 25, 2048 }, { 4, 26, 2048 }, { 5, 27, 2048 }, { 4, 28, 2048 }, { 5, 29, 2048 }, { 5, 30, 2048 }, { 6, 31, 2048 }, + { 2, 32, 2048 }, { 3, 33, 2048 }, { 3, 34, 2048 }, { 4, 35, 2048 }, { 3, 36, 2048 }, { 4, 37, 2048 }, { 4, 38, 2048 }, { 5, 39, 2048 }, + { 3, 40, 2048 }, { 4, 41, 2048 }, { 4, 42, 2048 }, { 5, 43, 2048 }, { 4, 44, 2048 }, { 5, 45, 2048 }, { 5, 46, 2048 }, { 6, 47, 2048 }, + { 3, 48, 2048 }, { 4, 49, 2048 }, { 4, 50, 2048 }, { 5, 51, 2048 }, { 4, 52, 2048 }, { 5, 53, 2048 }, { 5, 54, 2048 }, { 6, 55, 2048 }, + { 4, 56, 2048 }, { 5, 57, 2048 }, { 5, 58, 2048 }, { 6, 59, 2048 }, { 5, 60, 2048 }, { 6, 61, 2048 }, { 6, 62, 2048 }, { 7, 63, 2048 }, + { 2, 64, 2048 }, { 3, 65, 2048 }, { 3, 66, 2048 }, { 4, 67, 2048 }, { 3, 68, 2048 }, { 4, 69, 2048 }, { 4, 70, 2048 }, { 5, 71, 2048 }, + { 3, 72, 2048 }, { 4, 73, 2048 }, { 4, 74, 2048 }, { 5, 75, 2048 }, { 4, 76, 2048 }, { 5, 77, 2048 }, { 5, 78, 2048 }, { 6, 79, 2048 }, + { 3, 80, 2048 }, { 4, 81, 2048 }, { 4, 82, 2048 }, { 5, 83, 2048 }, { 4, 84, 2048 }, { 5, 85, 2048 }, { 5, 86, 2048 }, { 6, 87, 2048 }, + { 4, 88, 2048 }, { 5, 89, 2048 }, { 5, 90, 2048 }, { 6, 91, 2048 }, { 5, 92, 2048 }, { 6, 93, 2048 }, { 6, 94, 2048 }, { 7, 95, 2048 }, + { 3, 96, 2048 }, { 4, 97, 2048 }, { 4, 98, 2048 }, { 5, 99, 2048 }, { 4, 100, 2048 }, { 5, 101, 2048 }, { 5, 102, 2048 }, { 6, 103, 2048 }, + { 4, 104, 2048 }, { 5, 105, 2048 }, { 5, 106, 2048 }, { 6, 107, 2048 }, { 5, 108, 2048 }, { 6, 109, 2048 }, { 6, 110, 2048 }, { 7, 111, 2048 }, + { 4, 112, 2048 }, { 5, 113, 2048 }, { 5, 114, 2048 }, { 6, 115, 2048 }, { 5, 116, 2048 }, { 6, 117, 2048 }, { 6, 118, 2048 }, { 7, 119, 2048 }, + { 5, 120, 2048 }, { 6, 121, 2048 }, { 6, 122, 2048 }, { 7, 123, 2048 }, { 6, 124, 2048 }, { 7, 125, 2048 }, { 7, 126, 2048 }, { 8, 127, 2048 }, + { 2, 128, 2048 }, { 3, 129, 2048 }, { 3, 130, 2048 }, { 4, 131, 2048 }, { 3, 132, 2048 }, { 4, 133, 2048 }, { 4, 134, 2048 }, { 5, 135, 2048 }, + { 3, 136, 2048 }, { 4, 137, 2048 }, { 4, 138, 2048 }, { 5, 139, 2048 }, { 4, 140, 2048 }, { 5, 141, 2048 }, { 5, 142, 2048 }, { 6, 143, 2048 }, + { 3, 144, 2048 }, { 4, 145, 2048 }, { 4, 146, 2048 }, { 5, 147, 2048 }, { 4, 148, 2048 }, { 5, 149, 2048 }, { 5, 150, 2048 }, { 6, 151, 2048 }, + { 4, 152, 2048 }, { 5, 153, 2048 }, { 5, 154, 2048 }, { 6, 155, 2048 }, { 5, 156, 2048 }, { 6, 157, 2048 }, { 6, 158, 2048 }, { 7, 159, 2048 }, + { 3, 160, 2048 }, { 4, 161, 2048 }, { 4, 162, 2048 }, { 5, 163, 2048 }, { 4, 164, 2048 }, { 5, 165, 2048 }, { 5, 166, 2048 }, { 6, 167, 2048 }, + { 4, 168, 2048 }, { 5, 169, 2048 }, { 5, 170, 2048 }, { 6, 171, 2048 }, { 5, 172, 2048 }, { 6, 173, 2048 }, { 6, 174, 2048 }, { 7, 175, 2048 }, + { 4, 176, 2048 }, { 5, 177, 2048 }, { 5, 178, 2048 }, { 6, 179, 2048 }, { 5, 180, 2048 }, { 6, 181, 2048 }, { 6, 182, 2048 }, { 7, 183, 2048 }, + { 5, 184, 2048 }, { 6, 185, 2048 }, { 6, 186, 2048 }, { 7, 187, 2048 }, { 6, 188, 2048 }, { 7, 189, 2048 }, { 7, 190, 2048 }, { 8, 191, 2048 }, + { 3, 192, 2048 }, { 4, 193, 2048 }, { 4, 194, 2048 }, { 5, 195, 2048 }, { 4, 196, 2048 }, { 5, 197, 2048 }, { 5, 198, 2048 }, { 6, 199, 2048 }, + { 4, 200, 2048 }, { 5, 201, 2048 }, { 5, 202, 2048 }, { 6, 203, 2048 }, { 5, 204, 2048 }, { 6, 205, 2048 }, { 6, 206, 2048 }, { 7, 207, 2048 }, + { 4, 208, 2048 }, { 5, 209, 2048 }, { 5, 210, 2048 }, { 6, 211, 2048 }, { 5, 212, 2048 }, { 6, 213, 2048 }, { 6, 214, 2048 }, { 7, 215, 2048 }, + { 5, 216, 2048 }, { 6, 217, 2048 }, { 6, 218, 2048 }, { 7, 219, 2048 }, { 6, 220, 2048 }, { 7, 221, 2048 }, { 7, 222, 2048 }, { 8, 223, 2048 }, + { 4, 224, 2048 }, { 5, 225, 2048 }, { 5, 226, 2048 }, { 6, 227, 2048 }, { 5, 228, 2048 }, { 6, 229, 2048 }, { 6, 230, 2048 }, { 7, 231, 2048 }, + { 5, 232, 2048 }, { 6, 233, 2048 }, { 6, 234, 2048 }, { 7, 235, 2048 }, { 6, 236, 2048 }, { 7, 237, 2048 }, { 7, 238, 2048 }, { 8, 239, 2048 }, + { 5, 240, 2048 }, { 6, 241, 2048 }, { 6, 242, 2048 }, { 7, 243, 2048 }, { 6, 244, 2048 }, { 7, 245, 2048 }, { 7, 246, 2048 }, { 8, 247, 2048 }, + { 6, 248, 2048 }, { 7, 249, 2048 }, { 7, 250, 2048 }, { 8, 251, 2048 }, { 7, 252, 2048 }, { 8, 253, 2048 }, { 8, 254, 2048 }, { 9, 255, 2048 }, + { 2, 256, 2048 }, { 3, 257, 2048 }, { 3, 258, 2048 }, { 4, 259, 2048 }, { 3, 260, 2048 }, { 4, 261, 2048 }, { 4, 262, 2048 }, { 5, 263, 2048 }, + { 3, 264, 2048 }, { 4, 265, 2048 }, { 4, 266, 2048 }, { 5, 267, 2048 }, { 4, 268, 2048 }, { 5, 269, 2048 }, { 5, 270, 2048 }, { 6, 271, 2048 }, + { 3, 272, 2048 }, { 4, 273, 2048 }, { 4, 274, 2048 }, { 5, 275, 2048 }, { 4, 276, 2048 }, { 5, 277, 2048 }, { 5, 278, 2048 }, { 6, 279, 2048 }, + { 4, 280, 2048 }, { 5, 281, 2048 }, { 5, 282, 2048 }, { 6, 283, 2048 }, { 5, 284, 2048 }, { 6, 285, 2048 }, { 6, 286, 2048 }, { 7, 287, 2048 }, + { 3, 288, 2048 }, { 4, 289, 2048 }, { 4, 290, 2048 }, { 5, 291, 2048 }, { 4, 292, 2048 }, { 5, 293, 2048 }, { 5, 294, 2048 }, { 6, 295, 2048 }, + { 4, 296, 2048 }, { 5, 297, 2048 }, { 5, 298, 2048 }, { 6, 299, 2048 }, { 5, 300, 2048 }, { 6, 301, 2048 }, { 6, 302, 2048 }, { 7, 303, 2048 }, + { 4, 304, 2048 }, { 5, 305, 2048 }, { 5, 306, 2048 }, { 6, 307, 2048 }, { 5, 308, 2048 }, { 6, 309, 2048 }, { 6, 310, 2048 }, { 7, 311, 2048 }, + { 5, 312, 2048 }, { 6, 313, 2048 }, { 6, 314, 2048 }, { 7, 315, 2048 }, { 6, 316, 2048 }, { 7, 317, 2048 }, { 7, 318, 2048 }, { 8, 319, 2048 }, + { 3, 320, 2048 }, { 4, 321, 2048 }, { 4, 322, 2048 }, { 5, 323, 2048 }, { 4, 324, 2048 }, { 5, 325, 2048 }, { 5, 326, 2048 }, { 6, 327, 2048 }, + { 4, 328, 2048 }, { 5, 329, 2048 }, { 5, 330, 2048 }, { 6, 331, 2048 }, { 5, 332, 2048 }, { 6, 333, 2048 }, { 6, 334, 2048 }, { 7, 335, 2048 }, + { 4, 336, 2048 }, { 5, 337, 2048 }, { 5, 338, 2048 }, { 6, 339, 2048 }, { 5, 340, 2048 }, { 6, 341, 2048 }, { 6, 342, 2048 }, { 7, 343, 2048 }, + { 5, 344, 2048 }, { 6, 345, 2048 }, { 6, 346, 2048 }, { 7, 347, 2048 }, { 6, 348, 2048 }, { 7, 349, 2048 }, { 7, 350, 2048 }, { 8, 351, 2048 }, + { 4, 352, 2048 }, { 5, 353, 2048 }, { 5, 354, 2048 }, { 6, 355, 2048 }, { 5, 356, 2048 }, { 6, 357, 2048 }, { 6, 358, 2048 }, { 7, 359, 2048 }, + { 5, 360, 2048 }, { 6, 361, 2048 }, { 6, 362, 2048 }, { 7, 363, 2048 }, { 6, 364, 2048 }, { 7, 365, 2048 }, { 7, 366, 2048 }, { 8, 367, 2048 }, + { 5, 368, 2048 }, { 6, 369, 2048 }, { 6, 370, 2048 }, { 7, 371, 2048 }, { 6, 372, 2048 }, { 7, 373, 2048 }, { 7, 374, 2048 }, { 8, 375, 2048 }, + { 6, 376, 2048 }, { 7, 377, 2048 }, { 7, 378, 2048 }, { 8, 379, 2048 }, { 7, 380, 2048 }, { 8, 381, 2048 }, { 8, 382, 2048 }, { 9, 383, 2048 }, + { 3, 384, 2048 }, { 4, 385, 2048 }, { 4, 386, 2048 }, { 5, 387, 2048 }, { 4, 388, 2048 }, { 5, 389, 2048 }, { 5, 390, 2048 }, { 6, 391, 2048 }, + { 4, 392, 2048 }, { 5, 393, 2048 }, { 5, 394, 2048 }, { 6, 395, 2048 }, { 5, 396, 2048 }, { 6, 397, 2048 }, { 6, 398, 2048 }, { 7, 399, 2048 }, + { 4, 400, 2048 }, { 5, 401, 2048 }, { 5, 402, 2048 }, { 6, 403, 2048 }, { 5, 404, 2048 }, { 6, 405, 2048 }, { 6, 406, 2048 }, { 7, 407, 2048 }, + { 5, 408, 2048 }, { 6, 409, 2048 }, { 6, 410, 2048 }, { 7, 411, 2048 }, { 6, 412, 2048 }, { 7, 413, 2048 }, { 7, 414, 2048 }, { 8, 415, 2048 }, + { 4, 416, 2048 }, { 5, 417, 2048 }, { 5, 418, 2048 }, { 6, 419, 2048 }, { 5, 420, 2048 }, { 6, 421, 2048 }, { 6, 422, 2048 }, { 7, 423, 2048 }, + { 5, 424, 2048 }, { 6, 425, 2048 }, { 6, 426, 2048 }, { 7, 427, 2048 }, { 6, 428, 2048 }, { 7, 429, 2048 }, { 7, 430, 2048 }, { 8, 431, 2048 }, + { 5, 432, 2048 }, { 6, 433, 2048 }, { 6, 434, 2048 }, { 7, 435, 2048 }, { 6, 436, 2048 }, { 7, 437, 2048 }, { 7, 438, 2048 }, { 8, 439, 2048 }, + { 6, 440, 2048 }, { 7, 441, 2048 }, { 7, 442, 2048 }, { 8, 443, 2048 }, { 7, 444, 2048 }, { 8, 445, 2048 }, { 8, 446, 2048 }, { 9, 447, 2048 }, + { 4, 448, 2048 }, { 5, 449, 2048 }, { 5, 450, 2048 }, { 6, 451, 2048 }, { 5, 452, 2048 }, { 6, 453, 2048 }, { 6, 454, 2048 }, { 7, 455, 2048 }, + { 5, 456, 2048 }, { 6, 457, 2048 }, { 6, 458, 2048 }, { 7, 459, 2048 }, { 6, 460, 2048 }, { 7, 461, 2048 }, { 7, 462, 2048 }, { 8, 463, 2048 }, + { 5, 464, 2048 }, { 6, 465, 2048 }, { 6, 466, 2048 }, { 7, 467, 2048 }, { 6, 468, 2048 }, { 7, 469, 2048 }, { 7, 470, 2048 }, { 8, 471, 2048 }, + { 6, 472, 2048 }, { 7, 473, 2048 }, { 7, 474, 2048 }, { 8, 475, 2048 }, { 7, 476, 2048 }, { 8, 477, 2048 }, { 8, 478, 2048 }, { 9, 479, 2048 }, + { 5, 480, 2048 }, { 6, 481, 2048 }, { 6, 482, 2048 }, { 7, 483, 2048 }, { 6, 484, 2048 }, { 7, 485, 2048 }, { 7, 486, 2048 }, { 8, 487, 2048 }, + { 6, 488, 2048 }, { 7, 489, 2048 }, { 7, 490, 2048 }, { 8, 491, 2048 }, { 7, 492, 2048 }, { 8, 493, 2048 }, { 8, 494, 2048 }, { 9, 495, 2048 }, + { 6, 496, 2048 }, { 7, 497, 2048 }, { 7, 498, 2048 }, { 8, 499, 2048 }, { 7, 500, 2048 }, { 8, 501, 2048 }, { 8, 502, 2048 }, { 9, 503, 2048 }, + { 7, 504, 2048 }, { 8, 505, 2048 }, { 8, 506, 2048 }, { 9, 507, 2048 }, { 8, 508, 2048 }, { 9, 509, 2048 }, { 9, 510, 2048 }, { 10, 511, 2048 }, + { 2, 512, 2048 }, { 3, 513, 2048 }, { 3, 514, 2048 }, { 4, 515, 2048 }, { 3, 516, 2048 }, { 4, 517, 2048 }, { 4, 518, 2048 }, { 5, 519, 2048 }, + { 3, 520, 2048 }, { 4, 521, 2048 }, { 4, 522, 2048 }, { 5, 523, 2048 }, { 4, 524, 2048 }, { 5, 525, 2048 }, { 5, 526, 2048 }, { 6, 527, 2048 }, + { 3, 528, 2048 }, { 4, 529, 2048 }, { 4, 530, 2048 }, { 5, 531, 2048 }, { 4, 532, 2048 }, { 5, 533, 2048 }, { 5, 534, 2048 }, { 6, 535, 2048 }, + { 4, 536, 2048 }, { 5, 537, 2048 }, { 5, 538, 2048 }, { 6, 539, 2048 }, { 5, 540, 2048 }, { 6, 541, 2048 }, { 6, 542, 2048 }, { 7, 543, 2048 }, + { 3, 544, 2048 }, { 4, 545, 2048 }, { 4, 546, 2048 }, { 5, 547, 2048 }, { 4, 548, 2048 }, { 5, 549, 2048 }, { 5, 550, 2048 }, { 6, 551, 2048 }, + { 4, 552, 2048 }, { 5, 553, 2048 }, { 5, 554, 2048 }, { 6, 555, 2048 }, { 5, 556, 2048 }, { 6, 557, 2048 }, { 6, 558, 2048 }, { 7, 559, 2048 }, + { 4, 560, 2048 }, { 5, 561, 2048 }, { 5, 562, 2048 }, { 6, 563, 2048 }, { 5, 564, 2048 }, { 6, 565, 2048 }, { 6, 566, 2048 }, { 7, 567, 2048 }, + { 5, 568, 2048 }, { 6, 569, 2048 }, { 6, 570, 2048 }, { 7, 571, 2048 }, { 6, 572, 2048 }, { 7, 573, 2048 }, { 7, 574, 2048 }, { 8, 575, 2048 }, + { 3, 576, 2048 }, { 4, 577, 2048 }, { 4, 578, 2048 }, { 5, 579, 2048 }, { 4, 580, 2048 }, { 5, 581, 2048 }, { 5, 582, 2048 }, { 6, 583, 2048 }, + { 4, 584, 2048 }, { 5, 585, 2048 }, { 5, 586, 2048 }, { 6, 587, 2048 }, { 5, 588, 2048 }, { 6, 589, 2048 }, { 6, 590, 2048 }, { 7, 591, 2048 }, + { 4, 592, 2048 }, { 5, 593, 2048 }, { 5, 594, 2048 }, { 6, 595, 2048 }, { 5, 596, 2048 }, { 6, 597, 2048 }, { 6, 598, 2048 }, { 7, 599, 2048 }, + { 5, 600, 2048 }, { 6, 601, 2048 }, { 6, 602, 2048 }, { 7, 603, 2048 }, { 6, 604, 2048 }, { 7, 605, 2048 }, { 7, 606, 2048 }, { 8, 607, 2048 }, + { 4, 608, 2048 }, { 5, 609, 2048 }, { 5, 610, 2048 }, { 6, 611, 2048 }, { 5, 612, 2048 }, { 6, 613, 2048 }, { 6, 614, 2048 }, { 7, 615, 2048 }, + { 5, 616, 2048 }, { 6, 617, 2048 }, { 6, 618, 2048 }, { 7, 619, 2048 }, { 6, 620, 2048 }, { 7, 621, 2048 }, { 7, 622, 2048 }, { 8, 623, 2048 }, + { 5, 624, 2048 }, { 6, 625, 2048 }, { 6, 626, 2048 }, { 7, 627, 2048 }, { 6, 628, 2048 }, { 7, 629, 2048 }, { 7, 630, 2048 }, { 8, 631, 2048 }, + { 6, 632, 2048 }, { 7, 633, 2048 }, { 7, 634, 2048 }, { 8, 635, 2048 }, { 7, 636, 2048 }, { 8, 637, 2048 }, { 8, 638, 2048 }, { 9, 639, 2048 }, + { 3, 640, 2048 }, { 4, 641, 2048 }, { 4, 642, 2048 }, { 5, 643, 2048 }, { 4, 644, 2048 }, { 5, 645, 2048 }, { 5, 646, 2048 }, { 6, 647, 2048 }, + { 4, 648, 2048 }, { 5, 649, 2048 }, { 5, 650, 2048 }, { 6, 651, 2048 }, { 5, 652, 2048 }, { 6, 653, 2048 }, { 6, 654, 2048 }, { 7, 655, 2048 }, + { 4, 656, 2048 }, { 5, 657, 2048 }, { 5, 658, 2048 }, { 6, 659, 2048 }, { 5, 660, 2048 }, { 6, 661, 2048 }, { 6, 662, 2048 }, { 7, 663, 2048 }, + { 5, 664, 2048 }, { 6, 665, 2048 }, { 6, 666, 2048 }, { 7, 667, 2048 }, { 6, 668, 2048 }, { 7, 669, 2048 }, { 7, 670, 2048 }, { 8, 671, 2048 }, + { 4, 672, 2048 }, { 5, 673, 2048 }, { 5, 674, 2048 }, { 6, 675, 2048 }, { 5, 676, 2048 }, { 6, 677, 2048 }, { 6, 678, 2048 }, { 7, 679, 2048 }, + { 5, 680, 2048 }, { 6, 681, 2048 }, { 6, 682, 2048 }, { 7, 683, 2048 }, { 6, 684, 2048 }, { 7, 685, 2048 }, { 7, 686, 2048 }, { 8, 687, 2048 }, + { 5, 688, 2048 }, { 6, 689, 2048 }, { 6, 690, 2048 }, { 7, 691, 2048 }, { 6, 692, 2048 }, { 7, 693, 2048 }, { 7, 694, 2048 }, { 8, 695, 2048 }, + { 6, 696, 2048 }, { 7, 697, 2048 }, { 7, 698, 2048 }, { 8, 699, 2048 }, { 7, 700, 2048 }, { 8, 701, 2048 }, { 8, 702, 2048 }, { 9, 703, 2048 }, + { 4, 704, 2048 }, { 5, 705, 2048 }, { 5, 706, 2048 }, { 6, 707, 2048 }, { 5, 708, 2048 }, { 6, 709, 2048 }, { 6, 710, 2048 }, { 7, 711, 2048 }, + { 5, 712, 2048 }, { 6, 713, 2048 }, { 6, 714, 2048 }, { 7, 715, 2048 }, { 6, 716, 2048 }, { 7, 717, 2048 }, { 7, 718, 2048 }, { 8, 719, 2048 }, + { 5, 720, 2048 }, { 6, 721, 2048 }, { 6, 722, 2048 }, { 7, 723, 2048 }, { 6, 724, 2048 }, { 7, 725, 2048 }, { 7, 726, 2048 }, { 8, 727, 2048 }, + { 6, 728, 2048 }, { 7, 729, 2048 }, { 7, 730, 2048 }, { 8, 731, 2048 }, { 7, 732, 2048 }, { 8, 733, 2048 }, { 8, 734, 2048 }, { 9, 735, 2048 }, + { 5, 736, 2048 }, { 6, 737, 2048 }, { 6, 738, 2048 }, { 7, 739, 2048 }, { 6, 740, 2048 }, { 7, 741, 2048 }, { 7, 742, 2048 }, { 8, 743, 2048 }, + { 6, 744, 2048 }, { 7, 745, 2048 }, { 7, 746, 2048 }, { 8, 747, 2048 }, { 7, 748, 2048 }, { 8, 749, 2048 }, { 8, 750, 2048 }, { 9, 751, 2048 }, + { 6, 752, 2048 }, { 7, 753, 2048 }, { 7, 754, 2048 }, { 8, 755, 2048 }, { 7, 756, 2048 }, { 8, 757, 2048 }, { 8, 758, 2048 }, { 9, 759, 2048 }, + { 7, 760, 2048 }, { 8, 761, 2048 }, { 8, 762, 2048 }, { 9, 763, 2048 }, { 8, 764, 2048 }, { 9, 765, 2048 }, { 9, 766, 2048 }, { 10, 767, 2048 }, + { 3, 768, 2048 }, { 4, 769, 2048 }, { 4, 770, 2048 }, { 5, 771, 2048 }, { 4, 772, 2048 }, { 5, 773, 2048 }, { 5, 774, 2048 }, { 6, 775, 2048 }, + { 4, 776, 2048 }, { 5, 777, 2048 }, { 5, 778, 2048 }, { 6, 779, 2048 }, { 5, 780, 2048 }, { 6, 781, 2048 }, { 6, 782, 2048 }, { 7, 783, 2048 }, + { 4, 784, 2048 }, { 5, 785, 2048 }, { 5, 786, 2048 }, { 6, 787, 2048 }, { 5, 788, 2048 }, { 6, 789, 2048 }, { 6, 790, 2048 }, { 7, 791, 2048 }, + { 5, 792, 2048 }, { 6, 793, 2048 }, { 6, 794, 2048 }, { 7, 795, 2048 }, { 6, 796, 2048 }, { 7, 797, 2048 }, { 7, 798, 2048 }, { 8, 799, 2048 }, + { 4, 800, 2048 }, { 5, 801, 2048 }, { 5, 802, 2048 }, { 6, 803, 2048 }, { 5, 804, 2048 }, { 6, 805, 2048 }, { 6, 806, 2048 }, { 7, 807, 2048 }, + { 5, 808, 2048 }, { 6, 809, 2048 }, { 6, 810, 2048 }, { 7, 811, 2048 }, { 6, 812, 2048 }, { 7, 813, 2048 }, { 7, 814, 2048 }, { 8, 815, 2048 }, + { 5, 816, 2048 }, { 6, 817, 2048 }, { 6, 818, 2048 }, { 7, 819, 2048 }, { 6, 820, 2048 }, { 7, 821, 2048 }, { 7, 822, 2048 }, { 8, 823, 2048 }, + { 6, 824, 2048 }, { 7, 825, 2048 }, { 7, 826, 2048 }, { 8, 827, 2048 }, { 7, 828, 2048 }, { 8, 829, 2048 }, { 8, 830, 2048 }, { 9, 831, 2048 }, + { 4, 832, 2048 }, { 5, 833, 2048 }, { 5, 834, 2048 }, { 6, 835, 2048 }, { 5, 836, 2048 }, { 6, 837, 2048 }, { 6, 838, 2048 }, { 7, 839, 2048 }, + { 5, 840, 2048 }, { 6, 841, 2048 }, { 6, 842, 2048 }, { 7, 843, 2048 }, { 6, 844, 2048 }, { 7, 845, 2048 }, { 7, 846, 2048 }, { 8, 847, 2048 }, + { 5, 848, 2048 }, { 6, 849, 2048 }, { 6, 850, 2048 }, { 7, 851, 2048 }, { 6, 852, 2048 }, { 7, 853, 2048 }, { 7, 854, 2048 }, { 8, 855, 2048 }, + { 6, 856, 2048 }, { 7, 857, 2048 }, { 7, 858, 2048 }, { 8, 859, 2048 }, { 7, 860, 2048 }, { 8, 861, 2048 }, { 8, 862, 2048 }, { 9, 863, 2048 }, + { 5, 864, 2048 }, { 6, 865, 2048 }, { 6, 866, 2048 }, { 7, 867, 2048 }, { 6, 868, 2048 }, { 7, 869, 2048 }, { 7, 870, 2048 }, { 8, 871, 2048 }, + { 6, 872, 2048 }, { 7, 873, 2048 }, { 7, 874, 2048 }, { 8, 875, 2048 }, { 7, 876, 2048 }, { 8, 877, 2048 }, { 8, 878, 2048 }, { 9, 879, 2048 }, + { 6, 880, 2048 }, { 7, 881, 2048 }, { 7, 882, 2048 }, { 8, 883, 2048 }, { 7, 884, 2048 }, { 8, 885, 2048 }, { 8, 886, 2048 }, { 9, 887, 2048 }, + { 7, 888, 2048 }, { 8, 889, 2048 }, { 8, 890, 2048 }, { 9, 891, 2048 }, { 8, 892, 2048 }, { 9, 893, 2048 }, { 9, 894, 2048 }, { 10, 895, 2048 }, + { 4, 896, 2048 }, { 5, 897, 2048 }, { 5, 898, 2048 }, { 6, 899, 2048 }, { 5, 900, 2048 }, { 6, 901, 2048 }, { 6, 902, 2048 }, { 7, 903, 2048 }, + { 5, 904, 2048 }, { 6, 905, 2048 }, { 6, 906, 2048 }, { 7, 907, 2048 }, { 6, 908, 2048 }, { 7, 909, 2048 }, { 7, 910, 2048 }, { 8, 911, 2048 }, + { 5, 912, 2048 }, { 6, 913, 2048 }, { 6, 914, 2048 }, { 7, 915, 2048 }, { 6, 916, 2048 }, { 7, 917, 2048 }, { 7, 918, 2048 }, { 8, 919, 2048 }, + { 6, 920, 2048 }, { 7, 921, 2048 }, { 7, 922, 2048 }, { 8, 923, 2048 }, { 7, 924, 2048 }, { 8, 925, 2048 }, { 8, 926, 2048 }, { 9, 927, 2048 }, + { 5, 928, 2048 }, { 6, 929, 2048 }, { 6, 930, 2048 }, { 7, 931, 2048 }, { 6, 932, 2048 }, { 7, 933, 2048 }, { 7, 934, 2048 }, { 8, 935, 2048 }, + { 6, 936, 2048 }, { 7, 937, 2048 }, { 7, 938, 2048 }, { 8, 939, 2048 }, { 7, 940, 2048 }, { 8, 941, 2048 }, { 8, 942, 2048 }, { 9, 943, 2048 }, + { 6, 944, 2048 }, { 7, 945, 2048 }, { 7, 946, 2048 }, { 8, 947, 2048 }, { 7, 948, 2048 }, { 8, 949, 2048 }, { 8, 950, 2048 }, { 9, 951, 2048 }, + { 7, 952, 2048 }, { 8, 953, 2048 }, { 8, 954, 2048 }, { 9, 955, 2048 }, { 8, 956, 2048 }, { 9, 957, 2048 }, { 9, 958, 2048 }, { 10, 959, 2048 }, + { 5, 960, 2048 }, { 6, 961, 2048 }, { 6, 962, 2048 }, { 7, 963, 2048 }, { 6, 964, 2048 }, { 7, 965, 2048 }, { 7, 966, 2048 }, { 8, 967, 2048 }, + { 6, 968, 2048 }, { 7, 969, 2048 }, { 7, 970, 2048 }, { 8, 971, 2048 }, { 7, 972, 2048 }, { 8, 973, 2048 }, { 8, 974, 2048 }, { 9, 975, 2048 }, + { 6, 976, 2048 }, { 7, 977, 2048 }, { 7, 978, 2048 }, { 8, 979, 2048 }, { 7, 980, 2048 }, { 8, 981, 2048 }, { 8, 982, 2048 }, { 9, 983, 2048 }, + { 7, 984, 2048 }, { 8, 985, 2048 }, { 8, 986, 2048 }, { 9, 987, 2048 }, { 8, 988, 2048 }, { 9, 989, 2048 }, { 9, 990, 2048 }, { 10, 991, 2048 }, + { 6, 992, 2048 }, { 7, 993, 2048 }, { 7, 994, 2048 }, { 8, 995, 2048 }, { 7, 996, 2048 }, { 8, 997, 2048 }, { 8, 998, 2048 }, { 9, 999, 2048 }, + { 7, 1000, 2048 }, { 8, 1001, 2048 }, { 8, 1002, 2048 }, { 9, 1003, 2048 }, { 8, 1004, 2048 }, { 9, 1005, 2048 }, { 9, 1006, 2048 }, { 10, 1007, 2048 }, + { 7, 1008, 2048 }, { 8, 1009, 2048 }, { 8, 1010, 2048 }, { 9, 1011, 2048 }, { 8, 1012, 2048 }, { 9, 1013, 2048 }, { 9, 1014, 2048 }, { 10, 1015, 2048 }, + { 8, 1016, 2048 }, { 9, 1017, 2048 }, { 9, 1018, 2048 }, { 10, 1019, 2048 }, { 9, 1020, 2048 }, { 10, 1021, 2048 }, { 10, 1022, 2048 }, { 11, 1023, 2048 }, + { 2, 1024, 2048 }, { 3, 1025, 2048 }, { 3, 1026, 2048 }, { 4, 1027, 2048 }, { 3, 1028, 2048 }, { 4, 1029, 2048 }, { 4, 1030, 2048 }, { 5, 1031, 2048 }, + { 3, 1032, 2048 }, { 4, 1033, 2048 }, { 4, 1034, 2048 }, { 5, 1035, 2048 }, { 4, 1036, 2048 }, { 5, 1037, 2048 }, { 5, 1038, 2048 }, { 6, 1039, 2048 }, + { 3, 1040, 2048 }, { 4, 1041, 2048 }, { 4, 1042, 2048 }, { 5, 1043, 2048 }, { 4, 1044, 2048 }, { 5, 1045, 2048 }, { 5, 1046, 2048 }, { 6, 1047, 2048 }, + { 4, 1048, 2048 }, { 5, 1049, 2048 }, { 5, 1050, 2048 }, { 6, 1051, 2048 }, { 5, 1052, 2048 }, { 6, 1053, 2048 }, { 6, 1054, 2048 }, { 7, 1055, 2048 }, + { 3, 1056, 2048 }, { 4, 1057, 2048 }, { 4, 1058, 2048 }, { 5, 1059, 2048 }, { 4, 1060, 2048 }, { 5, 1061, 2048 }, { 5, 1062, 2048 }, { 6, 1063, 2048 }, + { 4, 1064, 2048 }, { 5, 1065, 2048 }, { 5, 1066, 2048 }, { 6, 1067, 2048 }, { 5, 1068, 2048 }, { 6, 1069, 2048 }, { 6, 1070, 2048 }, { 7, 1071, 2048 }, + { 4, 1072, 2048 }, { 5, 1073, 2048 }, { 5, 1074, 2048 }, { 6, 1075, 2048 }, { 5, 1076, 2048 }, { 6, 1077, 2048 }, { 6, 1078, 2048 }, { 7, 1079, 2048 }, + { 5, 1080, 2048 }, { 6, 1081, 2048 }, { 6, 1082, 2048 }, { 7, 1083, 2048 }, { 6, 1084, 2048 }, { 7, 1085, 2048 }, { 7, 1086, 2048 }, { 8, 1087, 2048 }, + { 3, 1088, 2048 }, { 4, 1089, 2048 }, { 4, 1090, 2048 }, { 5, 1091, 2048 }, { 4, 1092, 2048 }, { 5, 1093, 2048 }, { 5, 1094, 2048 }, { 6, 1095, 2048 }, + { 4, 1096, 2048 }, { 5, 1097, 2048 }, { 5, 1098, 2048 }, { 6, 1099, 2048 }, { 5, 1100, 2048 }, { 6, 1101, 2048 }, { 6, 1102, 2048 }, { 7, 1103, 2048 }, + { 4, 1104, 2048 }, { 5, 1105, 2048 }, { 5, 1106, 2048 }, { 6, 1107, 2048 }, { 5, 1108, 2048 }, { 6, 1109, 2048 }, { 6, 1110, 2048 }, { 7, 1111, 2048 }, + { 5, 1112, 2048 }, { 6, 1113, 2048 }, { 6, 1114, 2048 }, { 7, 1115, 2048 }, { 6, 1116, 2048 }, { 7, 1117, 2048 }, { 7, 1118, 2048 }, { 8, 1119, 2048 }, + { 4, 1120, 2048 }, { 5, 1121, 2048 }, { 5, 1122, 2048 }, { 6, 1123, 2048 }, { 5, 1124, 2048 }, { 6, 1125, 2048 }, { 6, 1126, 2048 }, { 7, 1127, 2048 }, + { 5, 1128, 2048 }, { 6, 1129, 2048 }, { 6, 1130, 2048 }, { 7, 1131, 2048 }, { 6, 1132, 2048 }, { 7, 1133, 2048 }, { 7, 1134, 2048 }, { 8, 1135, 2048 }, + { 5, 1136, 2048 }, { 6, 1137, 2048 }, { 6, 1138, 2048 }, { 7, 1139, 2048 }, { 6, 1140, 2048 }, { 7, 1141, 2048 }, { 7, 1142, 2048 }, { 8, 1143, 2048 }, + { 6, 1144, 2048 }, { 7, 1145, 2048 }, { 7, 1146, 2048 }, { 8, 1147, 2048 }, { 7, 1148, 2048 }, { 8, 1149, 2048 }, { 8, 1150, 2048 }, { 9, 1151, 2048 }, + { 3, 1152, 2048 }, { 4, 1153, 2048 }, { 4, 1154, 2048 }, { 5, 1155, 2048 }, { 4, 1156, 2048 }, { 5, 1157, 2048 }, { 5, 1158, 2048 }, { 6, 1159, 2048 }, + { 4, 1160, 2048 }, { 5, 1161, 2048 }, { 5, 1162, 2048 }, { 6, 1163, 2048 }, { 5, 1164, 2048 }, { 6, 1165, 2048 }, { 6, 1166, 2048 }, { 7, 1167, 2048 }, + { 4, 1168, 2048 }, { 5, 1169, 2048 }, { 5, 1170, 2048 }, { 6, 1171, 2048 }, { 5, 1172, 2048 }, { 6, 1173, 2048 }, { 6, 1174, 2048 }, { 7, 1175, 2048 }, + { 5, 1176, 2048 }, { 6, 1177, 2048 }, { 6, 1178, 2048 }, { 7, 1179, 2048 }, { 6, 1180, 2048 }, { 7, 1181, 2048 }, { 7, 1182, 2048 }, { 8, 1183, 2048 }, + { 4, 1184, 2048 }, { 5, 1185, 2048 }, { 5, 1186, 2048 }, { 6, 1187, 2048 }, { 5, 1188, 2048 }, { 6, 1189, 2048 }, { 6, 1190, 2048 }, { 7, 1191, 2048 }, + { 5, 1192, 2048 }, { 6, 1193, 2048 }, { 6, 1194, 2048 }, { 7, 1195, 2048 }, { 6, 1196, 2048 }, { 7, 1197, 2048 }, { 7, 1198, 2048 }, { 8, 1199, 2048 }, + { 5, 1200, 2048 }, { 6, 1201, 2048 }, { 6, 1202, 2048 }, { 7, 1203, 2048 }, { 6, 1204, 2048 }, { 7, 1205, 2048 }, { 7, 1206, 2048 }, { 8, 1207, 2048 }, + { 6, 1208, 2048 }, { 7, 1209, 2048 }, { 7, 1210, 2048 }, { 8, 1211, 2048 }, { 7, 1212, 2048 }, { 8, 1213, 2048 }, { 8, 1214, 2048 }, { 9, 1215, 2048 }, + { 4, 1216, 2048 }, { 5, 1217, 2048 }, { 5, 1218, 2048 }, { 6, 1219, 2048 }, { 5, 1220, 2048 }, { 6, 1221, 2048 }, { 6, 1222, 2048 }, { 7, 1223, 2048 }, + { 5, 1224, 2048 }, { 6, 1225, 2048 }, { 6, 1226, 2048 }, { 7, 1227, 2048 }, { 6, 1228, 2048 }, { 7, 1229, 2048 }, { 7, 1230, 2048 }, { 8, 1231, 2048 }, + { 5, 1232, 2048 }, { 6, 1233, 2048 }, { 6, 1234, 2048 }, { 7, 1235, 2048 }, { 6, 1236, 2048 }, { 7, 1237, 2048 }, { 7, 1238, 2048 }, { 8, 1239, 2048 }, + { 6, 1240, 2048 }, { 7, 1241, 2048 }, { 7, 1242, 2048 }, { 8, 1243, 2048 }, { 7, 1244, 2048 }, { 8, 1245, 2048 }, { 8, 1246, 2048 }, { 9, 1247, 2048 }, + { 5, 1248, 2048 }, { 6, 1249, 2048 }, { 6, 1250, 2048 }, { 7, 1251, 2048 }, { 6, 1252, 2048 }, { 7, 1253, 2048 }, { 7, 1254, 2048 }, { 8, 1255, 2048 }, + { 6, 1256, 2048 }, { 7, 1257, 2048 }, { 7, 1258, 2048 }, { 8, 1259, 2048 }, { 7, 1260, 2048 }, { 8, 1261, 2048 }, { 8, 1262, 2048 }, { 9, 1263, 2048 }, + { 6, 1264, 2048 }, { 7, 1265, 2048 }, { 7, 1266, 2048 }, { 8, 1267, 2048 }, { 7, 1268, 2048 }, { 8, 1269, 2048 }, { 8, 1270, 2048 }, { 9, 1271, 2048 }, + { 7, 1272, 2048 }, { 8, 1273, 2048 }, { 8, 1274, 2048 }, { 9, 1275, 2048 }, { 8, 1276, 2048 }, { 9, 1277, 2048 }, { 9, 1278, 2048 }, { 10, 1279, 2048 }, + { 3, 1280, 2048 }, { 4, 1281, 2048 }, { 4, 1282, 2048 }, { 5, 1283, 2048 }, { 4, 1284, 2048 }, { 5, 1285, 2048 }, { 5, 1286, 2048 }, { 6, 1287, 2048 }, + { 4, 1288, 2048 }, { 5, 1289, 2048 }, { 5, 1290, 2048 }, { 6, 1291, 2048 }, { 5, 1292, 2048 }, { 6, 1293, 2048 }, { 6, 1294, 2048 }, { 7, 1295, 2048 }, + { 4, 1296, 2048 }, { 5, 1297, 2048 }, { 5, 1298, 2048 }, { 6, 1299, 2048 }, { 5, 1300, 2048 }, { 6, 1301, 2048 }, { 6, 1302, 2048 }, { 7, 1303, 2048 }, + { 5, 1304, 2048 }, { 6, 1305, 2048 }, { 6, 1306, 2048 }, { 7, 1307, 2048 }, { 6, 1308, 2048 }, { 7, 1309, 2048 }, { 7, 1310, 2048 }, { 8, 1311, 2048 }, + { 4, 1312, 2048 }, { 5, 1313, 2048 }, { 5, 1314, 2048 }, { 6, 1315, 2048 }, { 5, 1316, 2048 }, { 6, 1317, 2048 }, { 6, 1318, 2048 }, { 7, 1319, 2048 }, + { 5, 1320, 2048 }, { 6, 1321, 2048 }, { 6, 1322, 2048 }, { 7, 1323, 2048 }, { 6, 1324, 2048 }, { 7, 1325, 2048 }, { 7, 1326, 2048 }, { 8, 1327, 2048 }, + { 5, 1328, 2048 }, { 6, 1329, 2048 }, { 6, 1330, 2048 }, { 7, 1331, 2048 }, { 6, 1332, 2048 }, { 7, 1333, 2048 }, { 7, 1334, 2048 }, { 8, 1335, 2048 }, + { 6, 1336, 2048 }, { 7, 1337, 2048 }, { 7, 1338, 2048 }, { 8, 1339, 2048 }, { 7, 1340, 2048 }, { 8, 1341, 2048 }, { 8, 1342, 2048 }, { 9, 1343, 2048 }, + { 4, 1344, 2048 }, { 5, 1345, 2048 }, { 5, 1346, 2048 }, { 6, 1347, 2048 }, { 5, 1348, 2048 }, { 6, 1349, 2048 }, { 6, 1350, 2048 }, { 7, 1351, 2048 }, + { 5, 1352, 2048 }, { 6, 1353, 2048 }, { 6, 1354, 2048 }, { 7, 1355, 2048 }, { 6, 1356, 2048 }, { 7, 1357, 2048 }, { 7, 1358, 2048 }, { 8, 1359, 2048 }, + { 5, 1360, 2048 }, { 6, 1361, 2048 }, { 6, 1362, 2048 }, { 7, 1363, 2048 }, { 6, 1364, 2048 }, { 7, 1365, 2048 }, { 7, 1366, 2048 }, { 8, 1367, 2048 }, + { 6, 1368, 2048 }, { 7, 1369, 2048 }, { 7, 1370, 2048 }, { 8, 1371, 2048 }, { 7, 1372, 2048 }, { 8, 1373, 2048 }, { 8, 1374, 2048 }, { 9, 1375, 2048 }, + { 5, 1376, 2048 }, { 6, 1377, 2048 }, { 6, 1378, 2048 }, { 7, 1379, 2048 }, { 6, 1380, 2048 }, { 7, 1381, 2048 }, { 7, 1382, 2048 }, { 8, 1383, 2048 }, + { 6, 1384, 2048 }, { 7, 1385, 2048 }, { 7, 1386, 2048 }, { 8, 1387, 2048 }, { 7, 1388, 2048 }, { 8, 1389, 2048 }, { 8, 1390, 2048 }, { 9, 1391, 2048 }, + { 6, 1392, 2048 }, { 7, 1393, 2048 }, { 7, 1394, 2048 }, { 8, 1395, 2048 }, { 7, 1396, 2048 }, { 8, 1397, 2048 }, { 8, 1398, 2048 }, { 9, 1399, 2048 }, + { 7, 1400, 2048 }, { 8, 1401, 2048 }, { 8, 1402, 2048 }, { 9, 1403, 2048 }, { 8, 1404, 2048 }, { 9, 1405, 2048 }, { 9, 1406, 2048 }, { 10, 1407, 2048 }, + { 4, 1408, 2048 }, { 5, 1409, 2048 }, { 5, 1410, 2048 }, { 6, 1411, 2048 }, { 5, 1412, 2048 }, { 6, 1413, 2048 }, { 6, 1414, 2048 }, { 7, 1415, 2048 }, + { 5, 1416, 2048 }, { 6, 1417, 2048 }, { 6, 1418, 2048 }, { 7, 1419, 2048 }, { 6, 1420, 2048 }, { 7, 1421, 2048 }, { 7, 1422, 2048 }, { 8, 1423, 2048 }, + { 5, 1424, 2048 }, { 6, 1425, 2048 }, { 6, 1426, 2048 }, { 7, 1427, 2048 }, { 6, 1428, 2048 }, { 7, 1429, 2048 }, { 7, 1430, 2048 }, { 8, 1431, 2048 }, + { 6, 1432, 2048 }, { 7, 1433, 2048 }, { 7, 1434, 2048 }, { 8, 1435, 2048 }, { 7, 1436, 2048 }, { 8, 1437, 2048 }, { 8, 1438, 2048 }, { 9, 1439, 2048 }, + { 5, 1440, 2048 }, { 6, 1441, 2048 }, { 6, 1442, 2048 }, { 7, 1443, 2048 }, { 6, 1444, 2048 }, { 7, 1445, 2048 }, { 7, 1446, 2048 }, { 8, 1447, 2048 }, + { 6, 1448, 2048 }, { 7, 1449, 2048 }, { 7, 1450, 2048 }, { 8, 1451, 2048 }, { 7, 1452, 2048 }, { 8, 1453, 2048 }, { 8, 1454, 2048 }, { 9, 1455, 2048 }, + { 6, 1456, 2048 }, { 7, 1457, 2048 }, { 7, 1458, 2048 }, { 8, 1459, 2048 }, { 7, 1460, 2048 }, { 8, 1461, 2048 }, { 8, 1462, 2048 }, { 9, 1463, 2048 }, + { 7, 1464, 2048 }, { 8, 1465, 2048 }, { 8, 1466, 2048 }, { 9, 1467, 2048 }, { 8, 1468, 2048 }, { 9, 1469, 2048 }, { 9, 1470, 2048 }, { 10, 1471, 2048 }, + { 5, 1472, 2048 }, { 6, 1473, 2048 }, { 6, 1474, 2048 }, { 7, 1475, 2048 }, { 6, 1476, 2048 }, { 7, 1477, 2048 }, { 7, 1478, 2048 }, { 8, 1479, 2048 }, + { 6, 1480, 2048 }, { 7, 1481, 2048 }, { 7, 1482, 2048 }, { 8, 1483, 2048 }, { 7, 1484, 2048 }, { 8, 1485, 2048 }, { 8, 1486, 2048 }, { 9, 1487, 2048 }, + { 6, 1488, 2048 }, { 7, 1489, 2048 }, { 7, 1490, 2048 }, { 8, 1491, 2048 }, { 7, 1492, 2048 }, { 8, 1493, 2048 }, { 8, 1494, 2048 }, { 9, 1495, 2048 }, + { 7, 1496, 2048 }, { 8, 1497, 2048 }, { 8, 1498, 2048 }, { 9, 1499, 2048 }, { 8, 1500, 2048 }, { 9, 1501, 2048 }, { 9, 1502, 2048 }, { 10, 1503, 2048 }, + { 6, 1504, 2048 }, { 7, 1505, 2048 }, { 7, 1506, 2048 }, { 8, 1507, 2048 }, { 7, 1508, 2048 }, { 8, 1509, 2048 }, { 8, 1510, 2048 }, { 9, 1511, 2048 }, + { 7, 1512, 2048 }, { 8, 1513, 2048 }, { 8, 1514, 2048 }, { 9, 1515, 2048 }, { 8, 1516, 2048 }, { 9, 1517, 2048 }, { 9, 1518, 2048 }, { 10, 1519, 2048 }, + { 7, 1520, 2048 }, { 8, 1521, 2048 }, { 8, 1522, 2048 }, { 9, 1523, 2048 }, { 8, 1524, 2048 }, { 9, 1525, 2048 }, { 9, 1526, 2048 }, { 10, 1527, 2048 }, + { 8, 1528, 2048 }, { 9, 1529, 2048 }, { 9, 1530, 2048 }, { 10, 1531, 2048 }, { 9, 1532, 2048 }, { 10, 1533, 2048 }, { 10, 1534, 2048 }, { 11, 1535, 2048 }, + { 3, 1536, 2048 }, { 4, 1537, 2048 }, { 4, 1538, 2048 }, { 5, 1539, 2048 }, { 4, 1540, 2048 }, { 5, 1541, 2048 }, { 5, 1542, 2048 }, { 6, 1543, 2048 }, + { 4, 1544, 2048 }, { 5, 1545, 2048 }, { 5, 1546, 2048 }, { 6, 1547, 2048 }, { 5, 1548, 2048 }, { 6, 1549, 2048 }, { 6, 1550, 2048 }, { 7, 1551, 2048 }, + { 4, 1552, 2048 }, { 5, 1553, 2048 }, { 5, 1554, 2048 }, { 6, 1555, 2048 }, { 5, 1556, 2048 }, { 6, 1557, 2048 }, { 6, 1558, 2048 }, { 7, 1559, 2048 }, + { 5, 1560, 2048 }, { 6, 1561, 2048 }, { 6, 1562, 2048 }, { 7, 1563, 2048 }, { 6, 1564, 2048 }, { 7, 1565, 2048 }, { 7, 1566, 2048 }, { 8, 1567, 2048 }, + { 4, 1568, 2048 }, { 5, 1569, 2048 }, { 5, 1570, 2048 }, { 6, 1571, 2048 }, { 5, 1572, 2048 }, { 6, 1573, 2048 }, { 6, 1574, 2048 }, { 7, 1575, 2048 }, + { 5, 1576, 2048 }, { 6, 1577, 2048 }, { 6, 1578, 2048 }, { 7, 1579, 2048 }, { 6, 1580, 2048 }, { 7, 1581, 2048 }, { 7, 1582, 2048 }, { 8, 1583, 2048 }, + { 5, 1584, 2048 }, { 6, 1585, 2048 }, { 6, 1586, 2048 }, { 7, 1587, 2048 }, { 6, 1588, 2048 }, { 7, 1589, 2048 }, { 7, 1590, 2048 }, { 8, 1591, 2048 }, + { 6, 1592, 2048 }, { 7, 1593, 2048 }, { 7, 1594, 2048 }, { 8, 1595, 2048 }, { 7, 1596, 2048 }, { 8, 1597, 2048 }, { 8, 1598, 2048 }, { 9, 1599, 2048 }, + { 4, 1600, 2048 }, { 5, 1601, 2048 }, { 5, 1602, 2048 }, { 6, 1603, 2048 }, { 5, 1604, 2048 }, { 6, 1605, 2048 }, { 6, 1606, 2048 }, { 7, 1607, 2048 }, + { 5, 1608, 2048 }, { 6, 1609, 2048 }, { 6, 1610, 2048 }, { 7, 1611, 2048 }, { 6, 1612, 2048 }, { 7, 1613, 2048 }, { 7, 1614, 2048 }, { 8, 1615, 2048 }, + { 5, 1616, 2048 }, { 6, 1617, 2048 }, { 6, 1618, 2048 }, { 7, 1619, 2048 }, { 6, 1620, 2048 }, { 7, 1621, 2048 }, { 7, 1622, 2048 }, { 8, 1623, 2048 }, + { 6, 1624, 2048 }, { 7, 1625, 2048 }, { 7, 1626, 2048 }, { 8, 1627, 2048 }, { 7, 1628, 2048 }, { 8, 1629, 2048 }, { 8, 1630, 2048 }, { 9, 1631, 2048 }, + { 5, 1632, 2048 }, { 6, 1633, 2048 }, { 6, 1634, 2048 }, { 7, 1635, 2048 }, { 6, 1636, 2048 }, { 7, 1637, 2048 }, { 7, 1638, 2048 }, { 8, 1639, 2048 }, + { 6, 1640, 2048 }, { 7, 1641, 2048 }, { 7, 1642, 2048 }, { 8, 1643, 2048 }, { 7, 1644, 2048 }, { 8, 1645, 2048 }, { 8, 1646, 2048 }, { 9, 1647, 2048 }, + { 6, 1648, 2048 }, { 7, 1649, 2048 }, { 7, 1650, 2048 }, { 8, 1651, 2048 }, { 7, 1652, 2048 }, { 8, 1653, 2048 }, { 8, 1654, 2048 }, { 9, 1655, 2048 }, + { 7, 1656, 2048 }, { 8, 1657, 2048 }, { 8, 1658, 2048 }, { 9, 1659, 2048 }, { 8, 1660, 2048 }, { 9, 1661, 2048 }, { 9, 1662, 2048 }, { 10, 1663, 2048 }, + { 4, 1664, 2048 }, { 5, 1665, 2048 }, { 5, 1666, 2048 }, { 6, 1667, 2048 }, { 5, 1668, 2048 }, { 6, 1669, 2048 }, { 6, 1670, 2048 }, { 7, 1671, 2048 }, + { 5, 1672, 2048 }, { 6, 1673, 2048 }, { 6, 1674, 2048 }, { 7, 1675, 2048 }, { 6, 1676, 2048 }, { 7, 1677, 2048 }, { 7, 1678, 2048 }, { 8, 1679, 2048 }, + { 5, 1680, 2048 }, { 6, 1681, 2048 }, { 6, 1682, 2048 }, { 7, 1683, 2048 }, { 6, 1684, 2048 }, { 7, 1685, 2048 }, { 7, 1686, 2048 }, { 8, 1687, 2048 }, + { 6, 1688, 2048 }, { 7, 1689, 2048 }, { 7, 1690, 2048 }, { 8, 1691, 2048 }, { 7, 1692, 2048 }, { 8, 1693, 2048 }, { 8, 1694, 2048 }, { 9, 1695, 2048 }, + { 5, 1696, 2048 }, { 6, 1697, 2048 }, { 6, 1698, 2048 }, { 7, 1699, 2048 }, { 6, 1700, 2048 }, { 7, 1701, 2048 }, { 7, 1702, 2048 }, { 8, 1703, 2048 }, + { 6, 1704, 2048 }, { 7, 1705, 2048 }, { 7, 1706, 2048 }, { 8, 1707, 2048 }, { 7, 1708, 2048 }, { 8, 1709, 2048 }, { 8, 1710, 2048 }, { 9, 1711, 2048 }, + { 6, 1712, 2048 }, { 7, 1713, 2048 }, { 7, 1714, 2048 }, { 8, 1715, 2048 }, { 7, 1716, 2048 }, { 8, 1717, 2048 }, { 8, 1718, 2048 }, { 9, 1719, 2048 }, + { 7, 1720, 2048 }, { 8, 1721, 2048 }, { 8, 1722, 2048 }, { 9, 1723, 2048 }, { 8, 1724, 2048 }, { 9, 1725, 2048 }, { 9, 1726, 2048 }, { 10, 1727, 2048 }, + { 5, 1728, 2048 }, { 6, 1729, 2048 }, { 6, 1730, 2048 }, { 7, 1731, 2048 }, { 6, 1732, 2048 }, { 7, 1733, 2048 }, { 7, 1734, 2048 }, { 8, 1735, 2048 }, + { 6, 1736, 2048 }, { 7, 1737, 2048 }, { 7, 1738, 2048 }, { 8, 1739, 2048 }, { 7, 1740, 2048 }, { 8, 1741, 2048 }, { 8, 1742, 2048 }, { 9, 1743, 2048 }, + { 6, 1744, 2048 }, { 7, 1745, 2048 }, { 7, 1746, 2048 }, { 8, 1747, 2048 }, { 7, 1748, 2048 }, { 8, 1749, 2048 }, { 8, 1750, 2048 }, { 9, 1751, 2048 }, + { 7, 1752, 2048 }, { 8, 1753, 2048 }, { 8, 1754, 2048 }, { 9, 1755, 2048 }, { 8, 1756, 2048 }, { 9, 1757, 2048 }, { 9, 1758, 2048 }, { 10, 1759, 2048 }, + { 6, 1760, 2048 }, { 7, 1761, 2048 }, { 7, 1762, 2048 }, { 8, 1763, 2048 }, { 7, 1764, 2048 }, { 8, 1765, 2048 }, { 8, 1766, 2048 }, { 9, 1767, 2048 }, + { 7, 1768, 2048 }, { 8, 1769, 2048 }, { 8, 1770, 2048 }, { 9, 1771, 2048 }, { 8, 1772, 2048 }, { 9, 1773, 2048 }, { 9, 1774, 2048 }, { 10, 1775, 2048 }, + { 7, 1776, 2048 }, { 8, 1777, 2048 }, { 8, 1778, 2048 }, { 9, 1779, 2048 }, { 8, 1780, 2048 }, { 9, 1781, 2048 }, { 9, 1782, 2048 }, { 10, 1783, 2048 }, + { 8, 1784, 2048 }, { 9, 1785, 2048 }, { 9, 1786, 2048 }, { 10, 1787, 2048 }, { 9, 1788, 2048 }, { 10, 1789, 2048 }, { 10, 1790, 2048 }, { 11, 1791, 2048 }, + { 4, 1792, 2048 }, { 5, 1793, 2048 }, { 5, 1794, 2048 }, { 6, 1795, 2048 }, { 5, 1796, 2048 }, { 6, 1797, 2048 }, { 6, 1798, 2048 }, { 7, 1799, 2048 }, + { 5, 1800, 2048 }, { 6, 1801, 2048 }, { 6, 1802, 2048 }, { 7, 1803, 2048 }, { 6, 1804, 2048 }, { 7, 1805, 2048 }, { 7, 1806, 2048 }, { 8, 1807, 2048 }, + { 5, 1808, 2048 }, { 6, 1809, 2048 }, { 6, 1810, 2048 }, { 7, 1811, 2048 }, { 6, 1812, 2048 }, { 7, 1813, 2048 }, { 7, 1814, 2048 }, { 8, 1815, 2048 }, + { 6, 1816, 2048 }, { 7, 1817, 2048 }, { 7, 1818, 2048 }, { 8, 1819, 2048 }, { 7, 1820, 2048 }, { 8, 1821, 2048 }, { 8, 1822, 2048 }, { 9, 1823, 2048 }, + { 5, 1824, 2048 }, { 6, 1825, 2048 }, { 6, 1826, 2048 }, { 7, 1827, 2048 }, { 6, 1828, 2048 }, { 7, 1829, 2048 }, { 7, 1830, 2048 }, { 8, 1831, 2048 }, + { 6, 1832, 2048 }, { 7, 1833, 2048 }, { 7, 1834, 2048 }, { 8, 1835, 2048 }, { 7, 1836, 2048 }, { 8, 1837, 2048 }, { 8, 1838, 2048 }, { 9, 1839, 2048 }, + { 6, 1840, 2048 }, { 7, 1841, 2048 }, { 7, 1842, 2048 }, { 8, 1843, 2048 }, { 7, 1844, 2048 }, { 8, 1845, 2048 }, { 8, 1846, 2048 }, { 9, 1847, 2048 }, + { 7, 1848, 2048 }, { 8, 1849, 2048 }, { 8, 1850, 2048 }, { 9, 1851, 2048 }, { 8, 1852, 2048 }, { 9, 1853, 2048 }, { 9, 1854, 2048 }, { 10, 1855, 2048 }, + { 5, 1856, 2048 }, { 6, 1857, 2048 }, { 6, 1858, 2048 }, { 7, 1859, 2048 }, { 6, 1860, 2048 }, { 7, 1861, 2048 }, { 7, 1862, 2048 }, { 8, 1863, 2048 }, + { 6, 1864, 2048 }, { 7, 1865, 2048 }, { 7, 1866, 2048 }, { 8, 1867, 2048 }, { 7, 1868, 2048 }, { 8, 1869, 2048 }, { 8, 1870, 2048 }, { 9, 1871, 2048 }, + { 6, 1872, 2048 }, { 7, 1873, 2048 }, { 7, 1874, 2048 }, { 8, 1875, 2048 }, { 7, 1876, 2048 }, { 8, 1877, 2048 }, { 8, 1878, 2048 }, { 9, 1879, 2048 }, + { 7, 1880, 2048 }, { 8, 1881, 2048 }, { 8, 1882, 2048 }, { 9, 1883, 2048 }, { 8, 1884, 2048 }, { 9, 1885, 2048 }, { 9, 1886, 2048 }, { 10, 1887, 2048 }, + { 6, 1888, 2048 }, { 7, 1889, 2048 }, { 7, 1890, 2048 }, { 8, 1891, 2048 }, { 7, 1892, 2048 }, { 8, 1893, 2048 }, { 8, 1894, 2048 }, { 9, 1895, 2048 }, + { 7, 1896, 2048 }, { 8, 1897, 2048 }, { 8, 1898, 2048 }, { 9, 1899, 2048 }, { 8, 1900, 2048 }, { 9, 1901, 2048 }, { 9, 1902, 2048 }, { 10, 1903, 2048 }, + { 7, 1904, 2048 }, { 8, 1905, 2048 }, { 8, 1906, 2048 }, { 9, 1907, 2048 }, { 8, 1908, 2048 }, { 9, 1909, 2048 }, { 9, 1910, 2048 }, { 10, 1911, 2048 }, + { 8, 1912, 2048 }, { 9, 1913, 2048 }, { 9, 1914, 2048 }, { 10, 1915, 2048 }, { 9, 1916, 2048 }, { 10, 1917, 2048 }, { 10, 1918, 2048 }, { 11, 1919, 2048 }, + { 5, 1920, 2048 }, { 6, 1921, 2048 }, { 6, 1922, 2048 }, { 7, 1923, 2048 }, { 6, 1924, 2048 }, { 7, 1925, 2048 }, { 7, 1926, 2048 }, { 8, 1927, 2048 }, + { 6, 1928, 2048 }, { 7, 1929, 2048 }, { 7, 1930, 2048 }, { 8, 1931, 2048 }, { 7, 1932, 2048 }, { 8, 1933, 2048 }, { 8, 1934, 2048 }, { 9, 1935, 2048 }, + { 6, 1936, 2048 }, { 7, 1937, 2048 }, { 7, 1938, 2048 }, { 8, 1939, 2048 }, { 7, 1940, 2048 }, { 8, 1941, 2048 }, { 8, 1942, 2048 }, { 9, 1943, 2048 }, + { 7, 1944, 2048 }, { 8, 1945, 2048 }, { 8, 1946, 2048 }, { 9, 1947, 2048 }, { 8, 1948, 2048 }, { 9, 1949, 2048 }, { 9, 1950, 2048 }, { 10, 1951, 2048 }, + { 6, 1952, 2048 }, { 7, 1953, 2048 }, { 7, 1954, 2048 }, { 8, 1955, 2048 }, { 7, 1956, 2048 }, { 8, 1957, 2048 }, { 8, 1958, 2048 }, { 9, 1959, 2048 }, + { 7, 1960, 2048 }, { 8, 1961, 2048 }, { 8, 1962, 2048 }, { 9, 1963, 2048 }, { 8, 1964, 2048 }, { 9, 1965, 2048 }, { 9, 1966, 2048 }, { 10, 1967, 2048 }, + { 7, 1968, 2048 }, { 8, 1969, 2048 }, { 8, 1970, 2048 }, { 9, 1971, 2048 }, { 8, 1972, 2048 }, { 9, 1973, 2048 }, { 9, 1974, 2048 }, { 10, 1975, 2048 }, + { 8, 1976, 2048 }, { 9, 1977, 2048 }, { 9, 1978, 2048 }, { 10, 1979, 2048 }, { 9, 1980, 2048 }, { 10, 1981, 2048 }, { 10, 1982, 2048 }, { 11, 1983, 2048 }, + { 6, 1984, 2048 }, { 7, 1985, 2048 }, { 7, 1986, 2048 }, { 8, 1987, 2048 }, { 7, 1988, 2048 }, { 8, 1989, 2048 }, { 8, 1990, 2048 }, { 9, 1991, 2048 }, + { 7, 1992, 2048 }, { 8, 1993, 2048 }, { 8, 1994, 2048 }, { 9, 1995, 2048 }, { 8, 1996, 2048 }, { 9, 1997, 2048 }, { 9, 1998, 2048 }, { 10, 1999, 2048 }, + { 7, 2000, 2048 }, { 8, 2001, 2048 }, { 8, 2002, 2048 }, { 9, 2003, 2048 }, { 8, 2004, 2048 }, { 9, 2005, 2048 }, { 9, 2006, 2048 }, { 10, 2007, 2048 }, + { 8, 2008, 2048 }, { 9, 2009, 2048 }, { 9, 2010, 2048 }, { 10, 2011, 2048 }, { 9, 2012, 2048 }, { 10, 2013, 2048 }, { 10, 2014, 2048 }, { 11, 2015, 2048 }, + { 7, 2016, 2048 }, { 8, 2017, 2048 }, { 8, 2018, 2048 }, { 9, 2019, 2048 }, { 8, 2020, 2048 }, { 9, 2021, 2048 }, { 9, 2022, 2048 }, { 10, 2023, 2048 }, + { 8, 2024, 2048 }, { 9, 2025, 2048 }, { 9, 2026, 2048 }, { 10, 2027, 2048 }, { 9, 2028, 2048 }, { 10, 2029, 2048 }, { 10, 2030, 2048 }, { 11, 2031, 2048 }, + { 8, 2032, 2048 }, { 9, 2033, 2048 }, { 9, 2034, 2048 }, { 10, 2035, 2048 }, { 9, 2036, 2048 }, { 10, 2037, 2048 }, { 10, 2038, 2048 }, { 11, 2039, 2048 }, + { 9, 2040, 2048 }, { 10, 2041, 2048 }, { 10, 2042, 2048 }, { 11, 2043, 2048 }, { 10, 2044, 2048 }, { 11, 2045, 2048 }, { 11, 2046, 2048 }, { 12, 2047, 2048 }, +#endif +#endif +#endif +#endif +#endif +#endif +}; + +/* find a hole and free as required, return -1 if no hole found */ +static int _find_hole(void) +{ + unsigned x; + int y, z; + for (z = -1, y = INT_MAX, x = 0; x < FP_ENTRIES; x++) { + if (fp_cache[x].lru_count < y && fp_cache[x].lock == 0) { + z = x; + y = fp_cache[x].lru_count; + } + } + + /* decrease all */ + for (x = 0; x < FP_ENTRIES; x++) { + if (fp_cache[x].lru_count > 3) { + --(fp_cache[x].lru_count); + } + } + + /* free entry z */ + if (z >= 0 && fp_cache[z].g) { + if (fp_cache[z].mu != NULL) { + mp_clear(fp_cache[z].mu); + fp_cache[z].mu = NULL; + } + ltc_ecc_del_point(fp_cache[z].g); + fp_cache[z].g = NULL; + for (x = 0; x < (1U<x, g->x) == LTC_MP_EQ && + mp_cmp(fp_cache[x].g->y, g->y) == LTC_MP_EQ && + mp_cmp(fp_cache[x].g->z, g->z) == LTC_MP_EQ) { + break; + } + } + if (x == FP_ENTRIES) { + x = -1; + } + return x; +} + +/* add a new base to the cache */ +static int _add_entry(int idx, ecc_point *g) +{ + unsigned x, y; + + /* allocate base and LUT */ + fp_cache[idx].g = ltc_ecc_new_point(); + if (fp_cache[idx].g == NULL) { + return CRYPT_MEM; + } + + /* copy x and y */ + if ((mp_copy(g->x, fp_cache[idx].g->x) != CRYPT_OK) || + (mp_copy(g->y, fp_cache[idx].g->y) != CRYPT_OK) || + (mp_copy(g->z, fp_cache[idx].g->z) != CRYPT_OK)) { + ltc_ecc_del_point(fp_cache[idx].g); + fp_cache[idx].g = NULL; + return CRYPT_MEM; + } + + for (x = 0; x < (1U<x, mu, modulus, fp_cache[idx].LUT[1]->x) != CRYPT_OK) || + (mp_mulmod(fp_cache[idx].g->y, mu, modulus, fp_cache[idx].LUT[1]->y) != CRYPT_OK) || + (mp_mulmod(fp_cache[idx].g->z, mu, modulus, fp_cache[idx].LUT[1]->z) != CRYPT_OK)) { goto ERR; } + + /* make all single bit entries */ + for (x = 1; x < FP_LUT; x++) { + if ((mp_copy(fp_cache[idx].LUT[1<<(x-1)]->x, fp_cache[idx].LUT[1<x) != CRYPT_OK) || + (mp_copy(fp_cache[idx].LUT[1<<(x-1)]->y, fp_cache[idx].LUT[1<y) != CRYPT_OK) || + (mp_copy(fp_cache[idx].LUT[1<<(x-1)]->z, fp_cache[idx].LUT[1<z) != CRYPT_OK)) { goto ERR; } + + /* now double it bitlen/FP_LUT times */ + for (y = 0; y < lut_gap; y++) { + if ((err = ltc_mp.ecc_ptdbl(fp_cache[idx].LUT[1<z, modulus, mp)) != CRYPT_OK) { goto ERR; } + + /* invert it */ + if ((err = mp_invmod(fp_cache[idx].LUT[x]->z, modulus, fp_cache[idx].LUT[x]->z)) != CRYPT_OK) { goto ERR; } + + /* now square it */ + if ((err = mp_sqrmod(fp_cache[idx].LUT[x]->z, modulus, tmp)) != CRYPT_OK) { goto ERR; } + + /* fix x */ + if ((err = mp_mulmod(fp_cache[idx].LUT[x]->x, tmp, modulus, fp_cache[idx].LUT[x]->x)) != CRYPT_OK) { goto ERR; } + + /* get 1/z^3 */ + if ((err = mp_mulmod(tmp, fp_cache[idx].LUT[x]->z, modulus, tmp)) != CRYPT_OK) { goto ERR; } + + /* fix y */ + if ((err = mp_mulmod(fp_cache[idx].LUT[x]->y, tmp, modulus, fp_cache[idx].LUT[x]->y)) != CRYPT_OK) { goto ERR; } + + /* free z */ + mp_clear(fp_cache[idx].LUT[x]->z); + fp_cache[idx].LUT[x]->z = NULL; + } + mp_clear(tmp); + + return CRYPT_OK; +ERR: + err = CRYPT_MEM; +DONE: + for (y = 0; y < (1U< mp_unsigned_bin_size(modulus)) { + /* find order */ + y = mp_unsigned_bin_size(modulus); + for (x = 0; ltc_ecc_sets[x].size; x++) { + if (y <= (unsigned)ltc_ecc_sets[x].size) break; + } + + /* back off if we are on the 521 bit curve */ + if (y == 66) --x; + + if ((err = mp_init(&order)) != CRYPT_OK) { + return err; + } + if ((err = mp_read_radix(order, ltc_ecc_sets[x].order, 16)) != CRYPT_OK) { + mp_clear(&order); + return err; + } + + /* k must be less than modulus */ + if (mp_cmp(k, order) != LTC_MP_LT) { + if ((err = mp_init(&tk)) != CRYPT_OK) { + mp_clear(order); + return err; + } + if ((err = mp_mod(k, order, tk)) != CRYPT_OK) { + mp_clear(tk); + mp_clear(order); + return err; + } + } else { + tk = k; + } + mp_clear(order); + } else { + tk = k; + } + + /* get bitlen and round up to next multiple of FP_LUT */ + bitlen = mp_unsigned_bin_size(modulus) << 3; + x = bitlen % FP_LUT; + if (x) { + bitlen += FP_LUT - x; + } + lut_gap = bitlen / FP_LUT; + + /* get the k value */ + if (mp_unsigned_bin_size(tk) > (sizeof(kb) - 2)) { + if (tk != k) { + mp_clear(tk); + } + return CRYPT_BUFFER_OVERFLOW; + } + + /* store k */ + zeromem(kb, sizeof(kb)); + if ((err = mp_to_unsigned_bin(tk, kb)) != CRYPT_OK) { + if (tk != k) { + mp_clear(tk); + } + return err; + } + + /* let's reverse kb so it's little endian */ + x = 0; + y = mp_unsigned_bin_size(tk) - 1; + if (tk != k) { + mp_clear(tk); + } + while ((unsigned)x < y) { + z = kb[x]; kb[x] = kb[y]; kb[y] = z; + ++x; --y; + } + + /* at this point we can start, yipee */ + first = 1; + for (x = lut_gap-1; x >= 0; x--) { + /* extract FP_LUT bits from kb spread out by lut_gap bits and offset by x bits from the start */ + bitpos = x; + for (y = z = 0; y < FP_LUT; y++) { + z |= ((kb[bitpos>>3] >> (bitpos&7)) & 1) << y; + bitpos += lut_gap; /* it's y*lut_gap + x, but here we can avoid the mult in each loop */ + } + + /* double if not first */ + if (!first) { + if ((err = ltc_mp.ecc_ptdbl(R, R, modulus, mp)) != CRYPT_OK) { + return err; + } + } + + /* add if not first, otherwise copy */ + if (!first && z) { + if ((err = ltc_mp.ecc_ptadd(R, fp_cache[idx].LUT[z], R, modulus, mp)) != CRYPT_OK) { + return err; + } + } else if (z) { + if ((mp_copy(fp_cache[idx].LUT[z]->x, R->x) != CRYPT_OK) || + (mp_copy(fp_cache[idx].LUT[z]->y, R->y) != CRYPT_OK) || + (mp_copy(fp_cache[idx].mu, R->z) != CRYPT_OK)) { return CRYPT_MEM; } + first = 0; + } + } + z = 0; + zeromem(kb, sizeof(kb)); + /* map R back from projective space */ + if (map) { + err = ltc_ecc_map(R, modulus, mp); + } else { + err = CRYPT_OK; + } + return err; +} + +#ifdef LTC_ECC_SHAMIR +/* perform a fixed point ECC mulmod */ +static int _accel_fp_mul2add(int idx1, int idx2, + void *kA, void *kB, + ecc_point *R, void *modulus, void *mp) +{ + unsigned char kb[2][128]; + int x; + unsigned y, z, err, bitlen, bitpos, lut_gap, first, zA, zB; + void *tka, *tkb, *order; + + /* if it's smaller than modulus we fine */ + if (mp_unsigned_bin_size(kA) > mp_unsigned_bin_size(modulus)) { + /* find order */ + y = mp_unsigned_bin_size(modulus); + for (x = 0; ltc_ecc_sets[x].size; x++) { + if (y <= (unsigned)ltc_ecc_sets[x].size) break; + } + + /* back off if we are on the 521 bit curve */ + if (y == 66) --x; + + if ((err = mp_init(&order)) != CRYPT_OK) { + return err; + } + if ((err = mp_read_radix(order, ltc_ecc_sets[x].order, 16)) != CRYPT_OK) { + mp_clear(&order); + return err; + } + + /* kA must be less than modulus */ + if (mp_cmp(kA, order) != LTC_MP_LT) { + if ((err = mp_init(&tka)) != CRYPT_OK) { + mp_clear(order); + return err; + } + if ((err = mp_mod(kA, order, tka)) != CRYPT_OK) { + mp_clear(tka); + mp_clear(order); + return err; + } + } else { + tka = kA; + } + mp_clear(order); + } else { + tka = kA; + } + + /* if it's smaller than modulus we fine */ + if (mp_unsigned_bin_size(kB) > mp_unsigned_bin_size(modulus)) { + /* find order */ + y = mp_unsigned_bin_size(modulus); + for (x = 0; ltc_ecc_sets[x].size; x++) { + if (y <= (unsigned)ltc_ecc_sets[x].size) break; + } + + /* back off if we are on the 521 bit curve */ + if (y == 66) --x; + + if ((err = mp_init(&order)) != CRYPT_OK) { + return err; + } + if ((err = mp_read_radix(order, ltc_ecc_sets[x].order, 16)) != CRYPT_OK) { + mp_clear(&order); + return err; + } + + /* kB must be less than modulus */ + if (mp_cmp(kB, order) != LTC_MP_LT) { + if ((err = mp_init(&tkb)) != CRYPT_OK) { + mp_clear(order); + return err; + } + if ((err = mp_mod(kB, order, tkb)) != CRYPT_OK) { + mp_clear(tkb); + mp_clear(order); + return err; + } + } else { + tkb = kB; + } + mp_clear(order); + } else { + tkb = kB; + } + + /* get bitlen and round up to next multiple of FP_LUT */ + bitlen = mp_unsigned_bin_size(modulus) << 3; + x = bitlen % FP_LUT; + if (x) { + bitlen += FP_LUT - x; + } + lut_gap = bitlen / FP_LUT; + + /* get the k value */ + if ((mp_unsigned_bin_size(tka) > (sizeof(kb[0]) - 2)) || (mp_unsigned_bin_size(tkb) > (sizeof(kb[0]) - 2)) ) { + if (tka != kA) { + mp_clear(tka); + } + if (tkb != kB) { + mp_clear(tkb); + } + return CRYPT_BUFFER_OVERFLOW; + } + + /* store k */ + zeromem(kb, sizeof(kb)); + if ((err = mp_to_unsigned_bin(tka, kb[0])) != CRYPT_OK) { + if (tka != kA) { + mp_clear(tka); + } + if (tkb != kB) { + mp_clear(tkb); + } + return err; + } + + /* let's reverse kb so it's little endian */ + x = 0; + y = mp_unsigned_bin_size(tka) - 1; + if (tka != kA) { + mp_clear(tka); + } + while ((unsigned)x < y) { + z = kb[0][x]; kb[0][x] = kb[0][y]; kb[0][y] = z; + ++x; --y; + } + + /* store b */ + if ((err = mp_to_unsigned_bin(tkb, kb[1])) != CRYPT_OK) { + if (tkb != kB) { + mp_clear(tkb); + } + return err; + } + + x = 0; + y = mp_unsigned_bin_size(tkb) - 1; + if (tkb != kB) { + mp_clear(tkb); + } + while ((unsigned)x < y) { + z = kb[1][x]; kb[1][x] = kb[1][y]; kb[1][y] = z; + ++x; --y; + } + + /* at this point we can start, yipee */ + first = 1; + for (x = lut_gap-1; x >= 0; x--) { + /* extract FP_LUT bits from kb spread out by lut_gap bits and offset by x bits from the start */ + bitpos = x; + for (y = zA = zB = 0; y < FP_LUT; y++) { + zA |= ((kb[0][bitpos>>3] >> (bitpos&7)) & 1) << y; + zB |= ((kb[1][bitpos>>3] >> (bitpos&7)) & 1) << y; + bitpos += lut_gap; /* it's y*lut_gap + x, but here we can avoid the mult in each loop */ + } + + /* double if not first */ + if (!first) { + if ((err = ltc_mp.ecc_ptdbl(R, R, modulus, mp)) != CRYPT_OK) { + return err; + } + } + + /* add if not first, otherwise copy */ + if (!first) { + if (zA) { + if ((err = ltc_mp.ecc_ptadd(R, fp_cache[idx1].LUT[zA], R, modulus, mp)) != CRYPT_OK) { + return err; + } + } + if (zB) { + if ((err = ltc_mp.ecc_ptadd(R, fp_cache[idx2].LUT[zB], R, modulus, mp)) != CRYPT_OK) { + return err; + } + } + } else { + if (zA) { + if ((mp_copy(fp_cache[idx1].LUT[zA]->x, R->x) != CRYPT_OK) || + (mp_copy(fp_cache[idx1].LUT[zA]->y, R->y) != CRYPT_OK) || + (mp_copy(fp_cache[idx1].mu, R->z) != CRYPT_OK)) { return CRYPT_MEM; } + first = 0; + } + if (zB && first == 0) { + if (zB) { + if ((err = ltc_mp.ecc_ptadd(R, fp_cache[idx2].LUT[zB], R, modulus, mp)) != CRYPT_OK) { + return err; + } + } + } else if (zB && first == 1) { + if ((mp_copy(fp_cache[idx2].LUT[zB]->x, R->x) != CRYPT_OK) || + (mp_copy(fp_cache[idx2].LUT[zB]->y, R->y) != CRYPT_OK) || + (mp_copy(fp_cache[idx2].mu, R->z) != CRYPT_OK)) { return CRYPT_MEM; } + first = 0; + } + } + } + zeromem(kb, sizeof(kb)); + return ltc_ecc_map(R, modulus, mp); +} + +/** ECC Fixed Point mulmod global + Computes kA*A + kB*B = C using Shamir's Trick + @param A First point to multiply + @param kA What to multiple A by + @param B Second point to multiply + @param kB What to multiple B by + @param C [out] Destination point (can overlap with A or B) + @param modulus Modulus for curve + @return CRYPT_OK on success +*/ +int ltc_ecc_fp_mul2add(ecc_point *A, void *kA, + ecc_point *B, void *kB, + ecc_point *C, void *modulus) +{ + int idx1, idx2, err; + void *mp, *mu; + + mp = NULL; + mu = NULL; + LTC_MUTEX_LOCK(<c_ecc_fp_lock); + /* find point */ + idx1 = _find_base(A); + + /* no entry? */ + if (idx1 == -1) { + /* find hole and add it */ + if ((idx1 = _find_hole()) >= 0) { + if ((err = _add_entry(idx1, A)) != CRYPT_OK) { + goto LBL_ERR; + } + } + } + if (idx1 != -1) { + /* increment LRU */ + ++(fp_cache[idx1].lru_count); + } + + /* find point */ + idx2 = _find_base(B); + + /* no entry? */ + if (idx2 == -1) { + /* find hole and add it */ + if ((idx2 = _find_hole()) >= 0) { + if ((err = _add_entry(idx2, B)) != CRYPT_OK) { + goto LBL_ERR; + } + } + } + if (idx2 != -1) { + /* increment LRU */ + ++(fp_cache[idx2].lru_count); + } + + /* if it's 2 build the LUT, if it's higher just use the LUT */ + if (idx1 >= 0 && fp_cache[idx1].lru_count == 2) { + /* compute mp */ + if ((err = mp_montgomery_setup(modulus, &mp)) != CRYPT_OK) { goto LBL_ERR; } + + /* compute mu */ + if ((err = mp_init(&mu)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = mp_montgomery_normalization(mu, modulus)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* build the LUT */ + if ((err = _build_lut(idx1, modulus, mp, mu)) != CRYPT_OK) { + goto LBL_ERR;; + } + } + + /* if it's 2 build the LUT, if it's higher just use the LUT */ + if (idx2 >= 0 && fp_cache[idx2].lru_count == 2) { + if (mp == NULL) { + /* compute mp */ + if ((err = mp_montgomery_setup(modulus, &mp)) != CRYPT_OK) { goto LBL_ERR; } + + /* compute mu */ + if ((err = mp_init(&mu)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = mp_montgomery_normalization(mu, modulus)) != CRYPT_OK) { + goto LBL_ERR; + } + } + + /* build the LUT */ + if ((err = _build_lut(idx2, modulus, mp, mu)) != CRYPT_OK) { + goto LBL_ERR;; + } + } + + + if (idx1 >=0 && idx2 >= 0 && fp_cache[idx1].lru_count >= 2 && fp_cache[idx2].lru_count >= 2) { + if (mp == NULL) { + /* compute mp */ + if ((err = mp_montgomery_setup(modulus, &mp)) != CRYPT_OK) { goto LBL_ERR; } + } + err = _accel_fp_mul2add(idx1, idx2, kA, kB, C, modulus, mp); + } else { + err = ltc_ecc_mul2add(A, kA, B, kB, C, modulus); + } +LBL_ERR: + LTC_MUTEX_UNLOCK(<c_ecc_fp_lock); + if (mp != NULL) { + mp_montgomery_free(mp); + } + if (mu != NULL) { + mp_clear(mu); + } + return err; +} +#endif + +/** ECC Fixed Point mulmod global + @param k The multiplicand + @param G Base point to multiply + @param R [out] Destination of product + @param modulus The modulus for the curve + @param map [boolean] If non-zero maps the point back to affine co-ordinates, otherwise it's left in jacobian-montgomery form + @return CRYPT_OK if successful +*/ +int ltc_ecc_fp_mulmod(void *k, ecc_point *G, ecc_point *R, void *modulus, int map) +{ + int idx, err; + void *mp, *mu; + + mp = NULL; + mu = NULL; + LTC_MUTEX_LOCK(<c_ecc_fp_lock); + /* find point */ + idx = _find_base(G); + + /* no entry? */ + if (idx == -1) { + /* find hole and add it */ + idx = _find_hole(); + + if (idx >= 0) { + if ((err = _add_entry(idx, G)) != CRYPT_OK) { + goto LBL_ERR; + } + } + } + if (idx != -1) { + /* increment LRU */ + ++(fp_cache[idx].lru_count); + } + + + /* if it's 2 build the LUT, if it's higher just use the LUT */ + if (idx >= 0 && fp_cache[idx].lru_count == 2) { + /* compute mp */ + if ((err = mp_montgomery_setup(modulus, &mp)) != CRYPT_OK) { goto LBL_ERR; } + + /* compute mu */ + if ((err = mp_init(&mu)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = mp_montgomery_normalization(mu, modulus)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* build the LUT */ + if ((err = _build_lut(idx, modulus, mp, mu)) != CRYPT_OK) { + goto LBL_ERR;; + } + } + + if (idx >= 0 && fp_cache[idx].lru_count >= 2) { + if (mp == NULL) { + /* compute mp */ + if ((err = mp_montgomery_setup(modulus, &mp)) != CRYPT_OK) { goto LBL_ERR; } + } + err = _accel_fp_mul(idx, k, R, modulus, mp, map); + } else { + err = ltc_ecc_mulmod(k, G, R, modulus, map); + } +LBL_ERR: + LTC_MUTEX_UNLOCK(<c_ecc_fp_lock); + if (mp != NULL) { + mp_montgomery_free(mp); + } + if (mu != NULL) { + mp_clear(mu); + } + return err; +} + +/* helper function for freeing the cache ... must be called with the cache mutex locked */ +static void _ltc_ecc_fp_free_cache(void) +{ + unsigned x, y; + for (x = 0; x < FP_ENTRIES; x++) { + if (fp_cache[x].g != NULL) { + for (y = 0; y < (1U<= 0) { + /* it is already in the cache ... just check that the LUT is initialized */ + if(fp_cache[idx].lru_count >= 2) { + LTC_MUTEX_UNLOCK(<c_ecc_fp_lock); + return CRYPT_OK; + } + } + + if(idx == -1 && (idx = _find_hole()) == -1) { + err = CRYPT_BUFFER_OVERFLOW; + goto LBL_ERR; + } + if ((err = _add_entry(idx, g)) != CRYPT_OK) { + goto LBL_ERR; + } + /* compute mp */ + if ((err = mp_montgomery_setup(modulus, &mp)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* compute mu */ + if ((err = mp_init(&mu)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = mp_montgomery_normalization(mu, modulus)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* build the LUT */ + if ((err = _build_lut(idx, modulus, mp, mu)) != CRYPT_OK) { + goto LBL_ERR; + } + fp_cache[idx].lru_count = 2; + fp_cache[idx].lock = lock; +LBL_ERR: + LTC_MUTEX_UNLOCK(<c_ecc_fp_lock); + if (mp != NULL) { + mp_montgomery_free(mp); + } + if (mu != NULL) { + mp_clear(mu); + } + return err; +} + +/** Prevent/permit the FP cache from being updated + @param flag If flag is 0, remove cache lock (unlock), otherwise lock it +*/ +void ltc_ecc_fp_tablelock(int lock) +{ + int i; + + LTC_MUTEX_LOCK(<c_ecc_fp_lock); + for (i = 0; i < FP_ENTRIES; i++) { + fp_cache[i].lock = lock; + } + LTC_MUTEX_UNLOCK(<c_ecc_fp_lock); +} + +/** Export the current cache as a binary packet + @param out [out] pointer to malloc'ed space containing the packet + @param outlen [out] size of exported packet + @return CRYPT_OK if successful +*/ +int ltc_ecc_fp_save_state(unsigned char **out, unsigned long *outlen) +{ + ltc_asn1_list *cache_entry; + unsigned int i, j, k; + unsigned long fp_entries, fp_lut, num_entries; + int err; + + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + fp_entries = FP_ENTRIES; + fp_lut = FP_LUT; + num_entries = 0; + + LTC_MUTEX_LOCK(<c_ecc_fp_lock); + /* + * build the list; + Cache DEFINITIONS ::= + BEGIN + CacheDump ::= SEQUENCE { + numEntries SHORTINTEGER, + maxEntries SHORTINTEGER, + numLUT SHORTINTEGER, + cache SEQUENCE OF INTEGER + } + END + * + */ + /* + * The cache itself is a point (3 INTEGERS), + * the LUT as pairs of INTEGERS (2 * 1<x, 1); + LTC_SET_ASN1(cache_entry, j++, LTC_ASN1_INTEGER, fp_cache[i].g->y, 1); + LTC_SET_ASN1(cache_entry, j++, LTC_ASN1_INTEGER, fp_cache[i].g->z, 1); + for (k = 0; k < (1U<x, 1); + LTC_SET_ASN1(cache_entry, j++, LTC_ASN1_INTEGER, fp_cache[i].LUT[k]->y, 1); + } + LTC_SET_ASN1(cache_entry, j++, LTC_ASN1_INTEGER, fp_cache[i].mu, 1); + } + LTC_SET_ASN1(cache_entry, j++, LTC_ASN1_EOL, 0, 0); + + LTC_SET_ASN1(cache_entry, 0, LTC_ASN1_SHORT_INTEGER, &num_entries, 1); + + if ((err = der_length_sequence(cache_entry, j, outlen)) != CRYPT_OK) { + goto save_err; + } + if ((*out = XMALLOC(*outlen)) == NULL) { + err = CRYPT_MEM; + goto save_err; + } + err = der_encode_sequence(cache_entry, j, *out, outlen); +save_err: + XFREE(cache_entry); + LTC_MUTEX_UNLOCK(<c_ecc_fp_lock); + return err; +} + +/** Import a binary packet into the current cache + @param in [in] pointer to packet + @param inlen [in] size of packet (bytes) + @return CRYPT_OK if successful +*/ +int ltc_ecc_fp_restore_state(unsigned char *in, unsigned long inlen) +{ + int err; + ltc_asn1_list *asn1_list; + unsigned long num_entries, fp_entries, fp_lut; + unsigned long i, j; + unsigned int x; + + LTC_ARGCHK(in != NULL); + if (inlen == 0) { + return CRYPT_INVALID_ARG; + } + + /* zero indecies */ + i = 0; + j = 0; + asn1_list = NULL; + + LTC_MUTEX_LOCK(<c_ecc_fp_lock); + /* + * start with an empty cache + */ + _ltc_ecc_fp_free_cache(); + + /* + * decode the input packet: It consists of a sequence with a few + * integers (including the FP_ENTRIES and FP_LUT sizes), followed by a + * SEQUENCE which is the cache itself. + * + * use standard decoding for the first part, then flexible for the second + */ + if((err = der_decode_sequence_multi(in, inlen, + LTC_ASN1_SHORT_INTEGER, 1, &num_entries, + LTC_ASN1_SHORT_INTEGER, 1, &fp_entries, + LTC_ASN1_SHORT_INTEGER, 1, &fp_lut, + LTC_ASN1_EOL, 0, 0)) != CRYPT_OK) { + goto ERR_OUT; + } + if (fp_entries != FP_ENTRIES || fp_lut != FP_LUT || num_entries > fp_entries) { + err = CRYPT_INVALID_PACKET; + goto ERR_OUT; + } + if ((asn1_list = XCALLOC(3+num_entries*(4+2*(1<x, 1); + LTC_SET_ASN1(asn1_list, j++, LTC_ASN1_INTEGER, fp_cache[i].g->y, 1); + LTC_SET_ASN1(asn1_list, j++, LTC_ASN1_INTEGER, fp_cache[i].g->z, 1); + for (x = 0; x < (1U<x, &p->y, NULL)) != CRYPT_OK) { + goto ERR_OUT; + } + p->z = NULL; + LTC_SET_ASN1(asn1_list, j++, LTC_ASN1_INTEGER, p->x, 1); + LTC_SET_ASN1(asn1_list, j++, LTC_ASN1_INTEGER, p->y, 1); + } + if((err = mp_init(&fp_cache[i].mu)) != CRYPT_OK) { + goto ERR_OUT; + } + LTC_SET_ASN1(asn1_list, j++, LTC_ASN1_INTEGER, fp_cache[i].mu, 1); + fp_cache[i].lru_count = 3; + fp_cache[i].lock = 1; + } + + if ((err = der_decode_sequence(in, inlen, asn1_list, j)) != CRYPT_OK) { + goto ERR_OUT; + } + XFREE(asn1_list); + LTC_MUTEX_UNLOCK(<c_ecc_fp_lock); + return CRYPT_OK; +ERR_OUT: + if(asn1_list) + XFREE(asn1_list); + _ltc_ecc_fp_free_cache(); + LTC_MUTEX_UNLOCK(<c_ecc_fp_lock); + return err; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/math/gmp_desc.c b/fsbl/lib/libtomcrypt/src/math/gmp_desc.c new file mode 100644 index 000000000..d80d87f4c --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/math/gmp_desc.c @@ -0,0 +1,554 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#define DESC_DEF_ONLY +#include "tomcrypt.h" + +#ifdef GMP_DESC + +#include +#include + +static int init(void **a) +{ + LTC_ARGCHK(a != NULL); + + *a = XCALLOC(1, sizeof(__mpz_struct)); + if (*a == NULL) { + return CRYPT_MEM; + } + mpz_init(((__mpz_struct *)*a)); + return CRYPT_OK; +} + +static void deinit(void *a) +{ + LTC_ARGCHKVD(a != NULL); + mpz_clear(a); + XFREE(a); +} + +static int neg(void *a, void *b) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + mpz_neg(b, a); + return CRYPT_OK; +} + +static int copy(void *a, void *b) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + mpz_set(b, a); + return CRYPT_OK; +} + +static int init_copy(void **a, void *b) +{ + if (init(a) != CRYPT_OK) { + return CRYPT_MEM; + } + return copy(b, *a); +} + +/* ---- trivial ---- */ +static int set_int(void *a, ltc_mp_digit b) +{ + LTC_ARGCHK(a != NULL); + mpz_set_ui(((__mpz_struct *)a), b); + return CRYPT_OK; +} + +static unsigned long get_int(void *a) +{ + LTC_ARGCHK(a != NULL); + return mpz_get_ui(a); +} + +static ltc_mp_digit get_digit(void *a, int n) +{ + LTC_ARGCHK(a != NULL); + return mpz_getlimbn(a, n); +} + +static int get_digit_count(void *a) +{ + LTC_ARGCHK(a != NULL); + return mpz_size(a); +} + +static int compare(void *a, void *b) +{ + int ret; + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + ret = mpz_cmp(a, b); + if (ret < 0) { + return LTC_MP_LT; + } else if (ret > 0) { + return LTC_MP_GT; + } else { + return LTC_MP_EQ; + } +} + +static int compare_d(void *a, ltc_mp_digit b) +{ + int ret; + LTC_ARGCHK(a != NULL); + ret = mpz_cmp_ui(((__mpz_struct *)a), b); + if (ret < 0) { + return LTC_MP_LT; + } else if (ret > 0) { + return LTC_MP_GT; + } else { + return LTC_MP_EQ; + } +} + +static int count_bits(void *a) +{ + LTC_ARGCHK(a != NULL); + return mpz_sizeinbase(a, 2); +} + +static int count_lsb_bits(void *a) +{ + LTC_ARGCHK(a != NULL); + return mpz_scan1(a, 0); +} + + +static int twoexpt(void *a, int n) +{ + LTC_ARGCHK(a != NULL); + mpz_set_ui(a, 0); + mpz_setbit(a, n); + return CRYPT_OK; +} + +/* ---- conversions ---- */ + +static const char rmap[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/"; + +/* read ascii string */ +static int read_radix(void *a, const char *b, int radix) +{ + int ret; + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + if (radix == 64) { + /* Sadly, GMP only supports radixes up to 62, but we need 64. + * So, although this is not the most elegant or efficient way, + * let's just convert the base 64 string (6 bits per digit) to + * an octal string (3 bits per digit) that's twice as long. */ + char c, *tmp, *q; + const char *p; + int i; + tmp = XMALLOC (1 + 2 * strlen (b)); + if (tmp == NULL) { + return CRYPT_MEM; + } + p = b; + q = tmp; + while ((c = *p++) != 0) { + for (i = 0; i < 64; i++) { + if (c == rmap[i]) + break; + } + if (i == 64) { + XFREE (tmp); + /* printf ("c = '%c'\n", c); */ + return CRYPT_ERROR; + } + *q++ = '0' + (i / 8); + *q++ = '0' + (i % 8); + } + *q = 0; + ret = mpz_set_str(a, tmp, 8); + /* printf ("ret = %d for '%s'\n", ret, tmp); */ + XFREE (tmp); + } else { + ret = mpz_set_str(a, b, radix); + } + return (ret == 0 ? CRYPT_OK : CRYPT_ERROR); +} + +/* write one */ +static int write_radix(void *a, char *b, int radix) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + if (radix >= 11 && radix <= 36) + /* If radix is positive, GMP uses lowercase, and if negative, uppercase. + * We want it to use uppercase, to match the test vectors (presumably + * generated with LibTomMath). */ + radix = -radix; + mpz_get_str(b, radix, a); + return CRYPT_OK; +} + +/* get size as unsigned char string */ +static unsigned long unsigned_size(void *a) +{ + unsigned long t; + LTC_ARGCHK(a != NULL); + t = mpz_sizeinbase(a, 2); + if (mpz_cmp_ui(((__mpz_struct *)a), 0) == 0) return 0; + return (t>>3) + ((t&7)?1:0); +} + +/* store */ +static int unsigned_write(void *a, unsigned char *b) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + mpz_export(b, NULL, 1, 1, 1, 0, ((__mpz_struct*)a)); + return CRYPT_OK; +} + +/* read */ +static int unsigned_read(void *a, unsigned char *b, unsigned long len) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + mpz_import(a, len, 1, 1, 1, 0, b); + return CRYPT_OK; +} + +/* add */ +static int add(void *a, void *b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + mpz_add(c, a, b); + return CRYPT_OK; +} + +static int addi(void *a, ltc_mp_digit b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(c != NULL); + mpz_add_ui(c, a, b); + return CRYPT_OK; +} + +/* sub */ +static int sub(void *a, void *b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + mpz_sub(c, a, b); + return CRYPT_OK; +} + +static int subi(void *a, ltc_mp_digit b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(c != NULL); + mpz_sub_ui(c, a, b); + return CRYPT_OK; +} + +/* mul */ +static int mul(void *a, void *b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + mpz_mul(c, a, b); + return CRYPT_OK; +} + +static int muli(void *a, ltc_mp_digit b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(c != NULL); + mpz_mul_ui(c, a, b); + return CRYPT_OK; +} + +/* sqr */ +static int sqr(void *a, void *b) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + mpz_mul(b, a, a); + return CRYPT_OK; +} + +/* div */ +static int divide(void *a, void *b, void *c, void *d) +{ + mpz_t tmp; + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + if (c != NULL) { + mpz_init(tmp); + mpz_divexact(tmp, a, b); + } + if (d != NULL) { + mpz_mod(d, a, b); + } + if (c != NULL) { + mpz_set(c, tmp); + mpz_clear(tmp); + } + return CRYPT_OK; +} + +static int div_2(void *a, void *b) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + mpz_divexact_ui(b, a, 2); + return CRYPT_OK; +} + +/* modi */ +static int modi(void *a, ltc_mp_digit b, ltc_mp_digit *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(c != NULL); + + *c = mpz_fdiv_ui(a, b); + return CRYPT_OK; +} + +/* gcd */ +static int gcd(void *a, void *b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + mpz_gcd(c, a, b); + return CRYPT_OK; +} + +/* lcm */ +static int lcm(void *a, void *b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + mpz_lcm(c, a, b); + return CRYPT_OK; +} + +static int addmod(void *a, void *b, void *c, void *d) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + LTC_ARGCHK(d != NULL); + mpz_add(d, a, b); + mpz_mod(d, d, c); + return CRYPT_OK; +} + +static int submod(void *a, void *b, void *c, void *d) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + LTC_ARGCHK(d != NULL); + mpz_sub(d, a, b); + mpz_mod(d, d, c); + return CRYPT_OK; +} + +static int mulmod(void *a, void *b, void *c, void *d) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + LTC_ARGCHK(d != NULL); + mpz_mul(d, a, b); + mpz_mod(d, d, c); + return CRYPT_OK; +} + +static int sqrmod(void *a, void *b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + mpz_mul(c, a, a); + mpz_mod(c, c, b); + return CRYPT_OK; +} + +/* invmod */ +static int invmod(void *a, void *b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + mpz_invert(c, a, b); + return CRYPT_OK; +} + +/* setup */ +static int montgomery_setup(void *a, void **b) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + *b = (void *)1; + return CRYPT_OK; +} + +/* get normalization value */ +static int montgomery_normalization(void *a, void *b) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + mpz_set_ui(a, 1); + return CRYPT_OK; +} + +/* reduce */ +static int montgomery_reduce(void *a, void *b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + mpz_mod(a, a, b); + return CRYPT_OK; +} + +/* clean up */ +static void montgomery_deinit(void *a) +{ + LTC_UNUSED_PARAM(a); +} + +static int exptmod(void *a, void *b, void *c, void *d) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + LTC_ARGCHK(d != NULL); + mpz_powm(d, a, b, c); + return CRYPT_OK; +} + +static int isprime(void *a, int b, int *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(c != NULL); + if (b == 0) { + b = LTC_MILLER_RABIN_REPS; + } /* if */ + *c = mpz_probab_prime_p(a, b) > 0 ? LTC_MP_YES : LTC_MP_NO; + return CRYPT_OK; +} + +static int set_rand(void *a, int size) +{ + LTC_ARGCHK(a != NULL); + mpz_random(a, size); + return CRYPT_OK; +} + +const ltc_math_descriptor gmp_desc = { + "GNU MP", + sizeof(mp_limb_t) * CHAR_BIT - GMP_NAIL_BITS, + + &init, + &init_copy, + &deinit, + + &neg, + ©, + + &set_int, + &get_int, + &get_digit, + &get_digit_count, + &compare, + &compare_d, + &count_bits, + &count_lsb_bits, + &twoexpt, + + &read_radix, + &write_radix, + &unsigned_size, + &unsigned_write, + &unsigned_read, + + &add, + &addi, + &sub, + &subi, + &mul, + &muli, + &sqr, + ÷, + &div_2, + &modi, + &gcd, + &lcm, + + &mulmod, + &sqrmod, + &invmod, + + &montgomery_setup, + &montgomery_normalization, + &montgomery_reduce, + &montgomery_deinit, + + &exptmod, + &isprime, + +#ifdef LTC_MECC +#ifdef LTC_MECC_FP + <c_ecc_fp_mulmod, +#else + <c_ecc_mulmod, +#endif /* LTC_MECC_FP */ + <c_ecc_projective_add_point, + <c_ecc_projective_dbl_point, + <c_ecc_map, +#ifdef LTC_ECC_SHAMIR +#ifdef LTC_MECC_FP + <c_ecc_fp_mul2add, +#else + <c_ecc_mul2add, +#endif /* LTC_MECC_FP */ +#else + NULL, +#endif /* LTC_ECC_SHAMIR */ +#else + NULL, NULL, NULL, NULL, NULL, +#endif /* LTC_MECC */ + +#ifdef LTC_MRSA + &rsa_make_key, + &rsa_exptmod, +#else + NULL, NULL, +#endif + &addmod, + &submod, + + &set_rand, + +}; + + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/math/ltm_desc.c b/fsbl/lib/libtomcrypt/src/math/ltm_desc.c new file mode 100644 index 000000000..3e2a0c996 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/math/ltm_desc.c @@ -0,0 +1,513 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#define DESC_DEF_ONLY +#include "tomcrypt.h" + +#ifdef LTM_DESC + +#include + +static const struct { + int mpi_code, ltc_code; +} mpi_to_ltc_codes[] = { + { MP_OKAY , CRYPT_OK}, + { MP_MEM , CRYPT_MEM}, + { MP_VAL , CRYPT_INVALID_ARG}, +}; + +/** + Convert a MPI error to a LTC error (Possibly the most powerful function ever! Oh wait... no) + @param err The error to convert + @return The equivalent LTC error code or CRYPT_ERROR if none found +*/ +static int mpi_to_ltc_error(int err) +{ + int x; + + for (x = 0; x < (int)(sizeof(mpi_to_ltc_codes)/sizeof(mpi_to_ltc_codes[0])); x++) { + if (err == mpi_to_ltc_codes[x].mpi_code) { + return mpi_to_ltc_codes[x].ltc_code; + } + } + return CRYPT_ERROR; +} + +static int init(void **a) +{ + int err; + + LTC_ARGCHK(a != NULL); + + *a = XCALLOC(1, sizeof(mp_int)); + if (*a == NULL) { + return CRYPT_MEM; + } + + if ((err = mpi_to_ltc_error(mp_init(*a))) != CRYPT_OK) { + XFREE(*a); + } + return err; +} + +static void deinit(void *a) +{ + LTC_ARGCHKVD(a != NULL); + mp_clear(a); + XFREE(a); +} + +static int neg(void *a, void *b) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + return mpi_to_ltc_error(mp_neg(a, b)); +} + +static int copy(void *a, void *b) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + return mpi_to_ltc_error(mp_copy(a, b)); +} + +static int init_copy(void **a, void *b) +{ + if (init(a) != CRYPT_OK) { + return CRYPT_MEM; + } + return copy(b, *a); +} + +/* ---- trivial ---- */ +static int set_int(void *a, ltc_mp_digit b) +{ + LTC_ARGCHK(a != NULL); + return mpi_to_ltc_error(mp_set_int(a, b)); +} + +static unsigned long get_int(void *a) +{ + LTC_ARGCHK(a != NULL); + return mp_get_int(a); +} + +static ltc_mp_digit get_digit(void *a, int n) +{ + mp_int *A; + LTC_ARGCHK(a != NULL); + A = a; + return (n >= A->used || n < 0) ? 0 : A->dp[n]; +} + +static int get_digit_count(void *a) +{ + mp_int *A; + LTC_ARGCHK(a != NULL); + A = a; + return A->used; +} + +static int compare(void *a, void *b) +{ + int ret; + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + ret = mp_cmp(a, b); + switch (ret) { + case MP_LT: return LTC_MP_LT; + case MP_EQ: return LTC_MP_EQ; + case MP_GT: return LTC_MP_GT; + default: return 0; + } +} + +static int compare_d(void *a, ltc_mp_digit b) +{ + int ret; + LTC_ARGCHK(a != NULL); + ret = mp_cmp_d(a, b); + switch (ret) { + case MP_LT: return LTC_MP_LT; + case MP_EQ: return LTC_MP_EQ; + case MP_GT: return LTC_MP_GT; + default: return 0; + } +} + +static int count_bits(void *a) +{ + LTC_ARGCHK(a != NULL); + return mp_count_bits(a); +} + +static int count_lsb_bits(void *a) +{ + LTC_ARGCHK(a != NULL); + return mp_cnt_lsb(a); +} + + +static int twoexpt(void *a, int n) +{ + LTC_ARGCHK(a != NULL); + return mpi_to_ltc_error(mp_2expt(a, n)); +} + +/* ---- conversions ---- */ + +/* read ascii string */ +static int read_radix(void *a, const char *b, int radix) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + return mpi_to_ltc_error(mp_read_radix(a, b, radix)); +} + +/* write one */ +static int write_radix(void *a, char *b, int radix) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + return mpi_to_ltc_error(mp_toradix(a, b, radix)); +} + +/* get size as unsigned char string */ +static unsigned long unsigned_size(void *a) +{ + LTC_ARGCHK(a != NULL); + return mp_unsigned_bin_size(a); +} + +/* store */ +static int unsigned_write(void *a, unsigned char *b) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + return mpi_to_ltc_error(mp_to_unsigned_bin(a, b)); +} + +/* read */ +static int unsigned_read(void *a, unsigned char *b, unsigned long len) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + return mpi_to_ltc_error(mp_read_unsigned_bin(a, b, len)); +} + +/* add */ +static int add(void *a, void *b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + return mpi_to_ltc_error(mp_add(a, b, c)); +} + +static int addi(void *a, ltc_mp_digit b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(c != NULL); + return mpi_to_ltc_error(mp_add_d(a, b, c)); +} + +/* sub */ +static int sub(void *a, void *b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + return mpi_to_ltc_error(mp_sub(a, b, c)); +} + +static int subi(void *a, ltc_mp_digit b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(c != NULL); + return mpi_to_ltc_error(mp_sub_d(a, b, c)); +} + +/* mul */ +static int mul(void *a, void *b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + return mpi_to_ltc_error(mp_mul(a, b, c)); +} + +static int muli(void *a, ltc_mp_digit b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(c != NULL); + return mpi_to_ltc_error(mp_mul_d(a, b, c)); +} + +/* sqr */ +static int sqr(void *a, void *b) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + return mpi_to_ltc_error(mp_sqr(a, b)); +} + +/* div */ +static int divide(void *a, void *b, void *c, void *d) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + return mpi_to_ltc_error(mp_div(a, b, c, d)); +} + +static int div_2(void *a, void *b) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + return mpi_to_ltc_error(mp_div_2(a, b)); +} + +/* modi */ +static int modi(void *a, ltc_mp_digit b, ltc_mp_digit *c) +{ + mp_digit tmp; + int err; + + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(c != NULL); + + if ((err = mpi_to_ltc_error(mp_mod_d(a, b, &tmp))) != CRYPT_OK) { + return err; + } + *c = tmp; + return CRYPT_OK; +} + +/* gcd */ +static int gcd(void *a, void *b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + return mpi_to_ltc_error(mp_gcd(a, b, c)); +} + +/* lcm */ +static int lcm(void *a, void *b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + return mpi_to_ltc_error(mp_lcm(a, b, c)); +} + +static int addmod(void *a, void *b, void *c, void *d) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + LTC_ARGCHK(d != NULL); + return mpi_to_ltc_error(mp_addmod(a,b,c,d)); +} + +static int submod(void *a, void *b, void *c, void *d) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + LTC_ARGCHK(d != NULL); + return mpi_to_ltc_error(mp_submod(a,b,c,d)); +} + +static int mulmod(void *a, void *b, void *c, void *d) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + LTC_ARGCHK(d != NULL); + return mpi_to_ltc_error(mp_mulmod(a,b,c,d)); +} + +static int sqrmod(void *a, void *b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + return mpi_to_ltc_error(mp_sqrmod(a,b,c)); +} + +/* invmod */ +static int invmod(void *a, void *b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + return mpi_to_ltc_error(mp_invmod(a, b, c)); +} + +/* setup */ +static int montgomery_setup(void *a, void **b) +{ + int err; + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + *b = XCALLOC(1, sizeof(mp_digit)); + if (*b == NULL) { + return CRYPT_MEM; + } + if ((err = mpi_to_ltc_error(mp_montgomery_setup(a, (mp_digit *)*b))) != CRYPT_OK) { + XFREE(*b); + } + return err; +} + +/* get normalization value */ +static int montgomery_normalization(void *a, void *b) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + return mpi_to_ltc_error(mp_montgomery_calc_normalization(a, b)); +} + +/* reduce */ +static int montgomery_reduce(void *a, void *b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + return mpi_to_ltc_error(mp_montgomery_reduce(a, b, *((mp_digit *)c))); +} + +/* clean up */ +static void montgomery_deinit(void *a) +{ + XFREE(a); +} + +static int exptmod(void *a, void *b, void *c, void *d) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + LTC_ARGCHK(d != NULL); + return mpi_to_ltc_error(mp_exptmod(a,b,c,d)); +} + +static int isprime(void *a, int b, int *c) +{ + int err; + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(c != NULL); + if (b == 0) { + b = LTC_MILLER_RABIN_REPS; + } /* if */ + err = mpi_to_ltc_error(mp_prime_is_prime(a, b, c)); + *c = (*c == MP_YES) ? LTC_MP_YES : LTC_MP_NO; + return err; +} + +static int set_rand(void *a, int size) +{ + LTC_ARGCHK(a != NULL); + return mpi_to_ltc_error(mp_rand(a, size)); +} + +const ltc_math_descriptor ltm_desc = { + + "LibTomMath", + (int)DIGIT_BIT, + + &init, + &init_copy, + &deinit, + + &neg, + ©, + + &set_int, + &get_int, + &get_digit, + &get_digit_count, + &compare, + &compare_d, + &count_bits, + &count_lsb_bits, + &twoexpt, + + &read_radix, + &write_radix, + &unsigned_size, + &unsigned_write, + &unsigned_read, + + &add, + &addi, + &sub, + &subi, + &mul, + &muli, + &sqr, + ÷, + &div_2, + &modi, + &gcd, + &lcm, + + &mulmod, + &sqrmod, + &invmod, + + &montgomery_setup, + &montgomery_normalization, + &montgomery_reduce, + &montgomery_deinit, + + &exptmod, + &isprime, + +#ifdef LTC_MECC +#ifdef LTC_MECC_FP + <c_ecc_fp_mulmod, +#else + <c_ecc_mulmod, +#endif + <c_ecc_projective_add_point, + <c_ecc_projective_dbl_point, + <c_ecc_map, +#ifdef LTC_ECC_SHAMIR +#ifdef LTC_MECC_FP + <c_ecc_fp_mul2add, +#else + <c_ecc_mul2add, +#endif /* LTC_MECC_FP */ +#else + NULL, +#endif /* LTC_ECC_SHAMIR */ +#else + NULL, NULL, NULL, NULL, NULL, +#endif /* LTC_MECC */ + +#ifdef LTC_MRSA + &rsa_make_key, + &rsa_exptmod, +#else + NULL, NULL, +#endif + &addmod, + &submod, + + &set_rand, + +}; + + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/math/multi.c b/fsbl/lib/libtomcrypt/src/math/multi.c new file mode 100644 index 000000000..cfe145125 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/math/multi.c @@ -0,0 +1,76 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +#ifdef LTC_MPI +#include + +int ltc_init_multi(void **a, ...) +{ + void **cur = a; + int np = 0; + va_list args; + + va_start(args, a); + while (cur != NULL) { + if (mp_init(cur) != CRYPT_OK) { + /* failed */ + va_list clean_list; + + va_start(clean_list, a); + cur = a; + while (np--) { + mp_clear(*cur); + cur = va_arg(clean_list, void**); + } + va_end(clean_list); + va_end(args); + return CRYPT_MEM; + } + ++np; + cur = va_arg(args, void**); + } + va_end(args); + return CRYPT_OK; +} + +void ltc_deinit_multi(void *a, ...) +{ + void *cur = a; + va_list args; + + va_start(args, a); + while (cur != NULL) { + mp_clear(cur); + cur = va_arg(args, void *); + } + va_end(args); +} + +void ltc_cleanup_multi(void **a, ...) +{ + void **cur = a; + va_list args; + + va_start(args, a); + while (cur != NULL) { + if (*cur != NULL) { + mp_clear(*cur); + *cur = NULL; + } + cur = va_arg(args, void**); + } + va_end(args); +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/math/radix_to_bin.c b/fsbl/lib/libtomcrypt/src/math/radix_to_bin.c new file mode 100644 index 000000000..409bd20d5 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/math/radix_to_bin.c @@ -0,0 +1,62 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file radix_to_bin.c + Convert data from a specific radix to binary. + Steffen Jaeckel +*/ + +/** + Convert data from a specific radix to binary + + The default MPI descriptors #ltm_desc, #tfm_desc and #gmp_desc + have the following restrictions on parameters: + + \p in - NUL-terminated char buffer + + \p radix - 2..64 + + @param in The input + @param radix The radix of the input + @param out The output buffer + @param len [in/out] The length of the output buffer + + @return CRYPT_OK on success. +*/ +int radix_to_bin(const void *in, int radix, void *out, unsigned long *len) +{ + unsigned long l; + void* mpi; + int err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(len != NULL); + + if ((err = mp_init(&mpi)) != CRYPT_OK) return err; + if ((err = mp_read_radix(mpi, in, radix)) != CRYPT_OK) goto LBL_ERR; + + if ((l = mp_unsigned_bin_size(mpi)) > *len) { + *len = l; + err = CRYPT_BUFFER_OVERFLOW; + goto LBL_ERR; + } + *len = l; + + if ((err = mp_to_unsigned_bin(mpi, out)) != CRYPT_OK) goto LBL_ERR; + +LBL_ERR: + mp_clear(mpi); + return err; +} + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/math/rand_bn.c b/fsbl/lib/libtomcrypt/src/math/rand_bn.c new file mode 100644 index 000000000..aa6539ccf --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/math/rand_bn.c @@ -0,0 +1,75 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +#if defined(LTC_MDSA) || defined(LTC_MECC) +/** + Generate a random number N with given bitlength (note: MSB can be 0) +*/ + +int rand_bn_bits(void *N, int bits, prng_state *prng, int wprng) +{ + int res, bytes; + unsigned char *buf, mask; + + LTC_ARGCHK(N != NULL); + LTC_ARGCHK(bits > 1); + + /* check PRNG */ + if ((res = prng_is_valid(wprng)) != CRYPT_OK) return res; + + bytes = (bits+7) >> 3; + mask = 0xff << (8 - bits % 8); + + /* allocate buffer */ + if ((buf = XCALLOC(1, bytes)) == NULL) return CRYPT_MEM; + + /* generate random bytes */ + if (prng_descriptor[wprng].read(buf, bytes, prng) != (unsigned long)bytes) { + res = CRYPT_ERROR_READPRNG; + goto cleanup; + } + /* mask bits */ + buf[0] &= ~mask; + /* load value */ + if ((res = mp_read_unsigned_bin(N, buf, bytes)) != CRYPT_OK) goto cleanup; + + res = CRYPT_OK; + +cleanup: +#ifdef LTC_CLEAN_STACK + zeromem(buf, bytes); +#endif + XFREE(buf); + return res; +} + +/** + Generate a random number N in a range: 1 <= N < limit +*/ +int rand_bn_upto(void *N, void *limit, prng_state *prng, int wprng) +{ + int res, bits; + + LTC_ARGCHK(N != NULL); + LTC_ARGCHK(limit != NULL); + + bits = mp_count_bits(limit); + do { + res = rand_bn_bits(N, bits, prng, wprng); + if (res != CRYPT_OK) return res; + } while (mp_cmp_d(N, 0) != LTC_MP_GT || mp_cmp(N, limit) != LTC_MP_LT); + + return CRYPT_OK; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/math/rand_prime.c b/fsbl/lib/libtomcrypt/src/math/rand_prime.c new file mode 100644 index 000000000..4dd5764dc --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/math/rand_prime.c @@ -0,0 +1,88 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +#if defined(LTC_MRSA) || (!defined(LTC_NO_MATH) && !defined(LTC_NO_PRNGS)) + +/** + @file rand_prime.c + Generate a random prime, Tom St Denis +*/ + +#define USE_BBS 1 + +int rand_prime(void *N, long len, prng_state *prng, int wprng) +{ + int err, res, type; + unsigned char *buf; + + LTC_ARGCHK(N != NULL); + + /* get type */ + if (len < 0) { + type = USE_BBS; + len = -len; + } else { + type = 0; + } + + /* allow sizes between 2 and 512 bytes for a prime size */ + if (len < 2 || len > 512) { + return CRYPT_INVALID_PRIME_SIZE; + } + + /* valid PRNG? Better be! */ + if ((err = prng_is_valid(wprng)) != CRYPT_OK) { + return err; + } + + /* allocate buffer to work with */ + buf = XCALLOC(1, len); + if (buf == NULL) { + return CRYPT_MEM; + } + + do { + /* generate value */ + if (prng_descriptor[wprng].read(buf, len, prng) != (unsigned long)len) { + XFREE(buf); + return CRYPT_ERROR_READPRNG; + } + + /* munge bits */ + buf[0] |= 0x80 | 0x40; + buf[len-1] |= 0x01 | ((type & USE_BBS) ? 0x02 : 0x00); + + /* load value */ + if ((err = mp_read_unsigned_bin(N, buf, len)) != CRYPT_OK) { + XFREE(buf); + return err; + } + + /* test */ + if ((err = mp_prime_is_prime(N, LTC_MILLER_RABIN_REPS, &res)) != CRYPT_OK) { + XFREE(buf); + return err; + } + } while (res == LTC_MP_NO); + +#ifdef LTC_CLEAN_STACK + zeromem(buf, len); +#endif + + XFREE(buf); + return CRYPT_OK; +} + +#endif /* LTC_NO_MATH */ + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/math/tfm_desc.c b/fsbl/lib/libtomcrypt/src/math/tfm_desc.c new file mode 100644 index 000000000..2a5a57d96 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/math/tfm_desc.c @@ -0,0 +1,807 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#define DESC_DEF_ONLY +#include "tomcrypt.h" + +#ifdef TFM_DESC + +#include + +static const struct { + int tfm_code, ltc_code; +} tfm_to_ltc_codes[] = { + { FP_OKAY , CRYPT_OK}, + { FP_MEM , CRYPT_MEM}, + { FP_VAL , CRYPT_INVALID_ARG}, +}; + +/** + Convert a tfm error to a LTC error (Possibly the most powerful function ever! Oh wait... no) + @param err The error to convert + @return The equivalent LTC error code or CRYPT_ERROR if none found +*/ +static int tfm_to_ltc_error(int err) +{ + int x; + + for (x = 0; x < (int)(sizeof(tfm_to_ltc_codes)/sizeof(tfm_to_ltc_codes[0])); x++) { + if (err == tfm_to_ltc_codes[x].tfm_code) { + return tfm_to_ltc_codes[x].ltc_code; + } + } + return CRYPT_ERROR; +} + +static int init(void **a) +{ + LTC_ARGCHK(a != NULL); + + *a = XCALLOC(1, sizeof(fp_int)); + if (*a == NULL) { + return CRYPT_MEM; + } + fp_init(*a); + return CRYPT_OK; +} + +static void deinit(void *a) +{ + LTC_ARGCHKVD(a != NULL); + XFREE(a); +} + +static int neg(void *a, void *b) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + fp_neg(((fp_int*)a), ((fp_int*)b)); + return CRYPT_OK; +} + +static int copy(void *a, void *b) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + fp_copy(a, b); + return CRYPT_OK; +} + +static int init_copy(void **a, void *b) +{ + if (init(a) != CRYPT_OK) { + return CRYPT_MEM; + } + return copy(b, *a); +} + +/* ---- trivial ---- */ +static int set_int(void *a, ltc_mp_digit b) +{ + LTC_ARGCHK(a != NULL); + fp_set(a, b); + return CRYPT_OK; +} + +static unsigned long get_int(void *a) +{ + fp_int *A; + LTC_ARGCHK(a != NULL); + A = a; + return A->used > 0 ? A->dp[0] : 0; +} + +static ltc_mp_digit get_digit(void *a, int n) +{ + fp_int *A; + LTC_ARGCHK(a != NULL); + A = a; + return (n >= A->used || n < 0) ? 0 : A->dp[n]; +} + +static int get_digit_count(void *a) +{ + fp_int *A; + LTC_ARGCHK(a != NULL); + A = a; + return A->used; +} + +static int compare(void *a, void *b) +{ + int ret; + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + ret = fp_cmp(a, b); + switch (ret) { + case FP_LT: return LTC_MP_LT; + case FP_EQ: return LTC_MP_EQ; + case FP_GT: return LTC_MP_GT; + } + return 0; +} + +static int compare_d(void *a, ltc_mp_digit b) +{ + int ret; + LTC_ARGCHK(a != NULL); + ret = fp_cmp_d(a, b); + switch (ret) { + case FP_LT: return LTC_MP_LT; + case FP_EQ: return LTC_MP_EQ; + case FP_GT: return LTC_MP_GT; + } + return 0; +} + +static int count_bits(void *a) +{ + LTC_ARGCHK(a != NULL); + return fp_count_bits(a); +} + +static int count_lsb_bits(void *a) +{ + LTC_ARGCHK(a != NULL); + return fp_cnt_lsb(a); +} + +static int twoexpt(void *a, int n) +{ + LTC_ARGCHK(a != NULL); + fp_2expt(a, n); + return CRYPT_OK; +} + +/* ---- conversions ---- */ + +/* read ascii string */ +static int read_radix(void *a, const char *b, int radix) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + return tfm_to_ltc_error(fp_read_radix(a, (char *)b, radix)); +} + +/* write one */ +static int write_radix(void *a, char *b, int radix) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + return tfm_to_ltc_error(fp_toradix(a, b, radix)); +} + +/* get size as unsigned char string */ +static unsigned long unsigned_size(void *a) +{ + LTC_ARGCHK(a != NULL); + return fp_unsigned_bin_size(a); +} + +/* store */ +static int unsigned_write(void *a, unsigned char *b) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + fp_to_unsigned_bin(a, b); + return CRYPT_OK; +} + +/* read */ +static int unsigned_read(void *a, unsigned char *b, unsigned long len) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + fp_read_unsigned_bin(a, b, len); + return CRYPT_OK; +} + +/* add */ +static int add(void *a, void *b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + fp_add(a, b, c); + return CRYPT_OK; +} + +static int addi(void *a, ltc_mp_digit b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(c != NULL); + fp_add_d(a, b, c); + return CRYPT_OK; +} + +/* sub */ +static int sub(void *a, void *b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + fp_sub(a, b, c); + return CRYPT_OK; +} + +static int subi(void *a, ltc_mp_digit b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(c != NULL); + fp_sub_d(a, b, c); + return CRYPT_OK; +} + +/* mul */ +static int mul(void *a, void *b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + fp_mul(a, b, c); + return CRYPT_OK; +} + +static int muli(void *a, ltc_mp_digit b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(c != NULL); + fp_mul_d(a, b, c); + return CRYPT_OK; +} + +/* sqr */ +static int sqr(void *a, void *b) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + fp_sqr(a, b); + return CRYPT_OK; +} + +/* div */ +static int divide(void *a, void *b, void *c, void *d) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + return tfm_to_ltc_error(fp_div(a, b, c, d)); +} + +static int div_2(void *a, void *b) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + fp_div_2(a, b); + return CRYPT_OK; +} + +/* modi */ +static int modi(void *a, ltc_mp_digit b, ltc_mp_digit *c) +{ + fp_digit tmp; + int err; + + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(c != NULL); + + if ((err = tfm_to_ltc_error(fp_mod_d(a, b, &tmp))) != CRYPT_OK) { + return err; + } + *c = tmp; + return CRYPT_OK; +} + +/* gcd */ +static int gcd(void *a, void *b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + fp_gcd(a, b, c); + return CRYPT_OK; +} + +/* lcm */ +static int lcm(void *a, void *b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + fp_lcm(a, b, c); + return CRYPT_OK; +} + +static int addmod(void *a, void *b, void *c, void *d) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + LTC_ARGCHK(d != NULL); + return tfm_to_ltc_error(fp_addmod(a,b,c,d)); +} + +static int submod(void *a, void *b, void *c, void *d) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + LTC_ARGCHK(d != NULL); + return tfm_to_ltc_error(fp_submod(a,b,c,d)); +} + +static int mulmod(void *a, void *b, void *c, void *d) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + LTC_ARGCHK(d != NULL); + return tfm_to_ltc_error(fp_mulmod(a,b,c,d)); +} + +static int sqrmod(void *a, void *b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + return tfm_to_ltc_error(fp_sqrmod(a,b,c)); +} + +/* invmod */ +static int invmod(void *a, void *b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + return tfm_to_ltc_error(fp_invmod(a, b, c)); +} + +/* setup */ +static int montgomery_setup(void *a, void **b) +{ + int err; + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + *b = XCALLOC(1, sizeof(fp_digit)); + if (*b == NULL) { + return CRYPT_MEM; + } + if ((err = tfm_to_ltc_error(fp_montgomery_setup(a, (fp_digit *)*b))) != CRYPT_OK) { + XFREE(*b); + } + return err; +} + +/* get normalization value */ +static int montgomery_normalization(void *a, void *b) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + fp_montgomery_calc_normalization(a, b); + return CRYPT_OK; +} + +/* reduce */ +static int montgomery_reduce(void *a, void *b, void *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + fp_montgomery_reduce(a, b, *((fp_digit *)c)); + return CRYPT_OK; +} + +/* clean up */ +static void montgomery_deinit(void *a) +{ + XFREE(a); +} + +static int exptmod(void *a, void *b, void *c, void *d) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + LTC_ARGCHK(c != NULL); + LTC_ARGCHK(d != NULL); + return tfm_to_ltc_error(fp_exptmod(a,b,c,d)); +} + +static int isprime(void *a, int b, int *c) +{ + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(c != NULL); + if (b == 0) { + b = LTC_MILLER_RABIN_REPS; + } /* if */ + *c = (fp_isprime_ex(a, b) == FP_YES) ? LTC_MP_YES : LTC_MP_NO; + return CRYPT_OK; +} + +#if defined(LTC_MECC) && defined(LTC_MECC_ACCEL) + +static int tfm_ecc_projective_dbl_point(ecc_point *P, ecc_point *R, void *modulus, void *Mp) +{ + fp_int t1, t2; + fp_digit mp; + + LTC_ARGCHK(P != NULL); + LTC_ARGCHK(R != NULL); + LTC_ARGCHK(modulus != NULL); + LTC_ARGCHK(Mp != NULL); + + mp = *((fp_digit*)Mp); + + fp_init(&t1); + fp_init(&t2); + + if (P != R) { + fp_copy(P->x, R->x); + fp_copy(P->y, R->y); + fp_copy(P->z, R->z); + } + + /* t1 = Z * Z */ + fp_sqr(R->z, &t1); + fp_montgomery_reduce(&t1, modulus, mp); + /* Z = Y * Z */ + fp_mul(R->z, R->y, R->z); + fp_montgomery_reduce(R->z, modulus, mp); + /* Z = 2Z */ + fp_add(R->z, R->z, R->z); + if (fp_cmp(R->z, modulus) != FP_LT) { + fp_sub(R->z, modulus, R->z); + } + + /* &t2 = X - T1 */ + fp_sub(R->x, &t1, &t2); + if (fp_cmp_d(&t2, 0) == FP_LT) { + fp_add(&t2, modulus, &t2); + } + /* T1 = X + T1 */ + fp_add(&t1, R->x, &t1); + if (fp_cmp(&t1, modulus) != FP_LT) { + fp_sub(&t1, modulus, &t1); + } + /* T2 = T1 * T2 */ + fp_mul(&t1, &t2, &t2); + fp_montgomery_reduce(&t2, modulus, mp); + /* T1 = 2T2 */ + fp_add(&t2, &t2, &t1); + if (fp_cmp(&t1, modulus) != FP_LT) { + fp_sub(&t1, modulus, &t1); + } + /* T1 = T1 + T2 */ + fp_add(&t1, &t2, &t1); + if (fp_cmp(&t1, modulus) != FP_LT) { + fp_sub(&t1, modulus, &t1); + } + + /* Y = 2Y */ + fp_add(R->y, R->y, R->y); + if (fp_cmp(R->y, modulus) != FP_LT) { + fp_sub(R->y, modulus, R->y); + } + /* Y = Y * Y */ + fp_sqr(R->y, R->y); + fp_montgomery_reduce(R->y, modulus, mp); + /* T2 = Y * Y */ + fp_sqr(R->y, &t2); + fp_montgomery_reduce(&t2, modulus, mp); + /* T2 = T2/2 */ + if (fp_isodd(&t2)) { + fp_add(&t2, modulus, &t2); + } + fp_div_2(&t2, &t2); + /* Y = Y * X */ + fp_mul(R->y, R->x, R->y); + fp_montgomery_reduce(R->y, modulus, mp); + + /* X = T1 * T1 */ + fp_sqr(&t1, R->x); + fp_montgomery_reduce(R->x, modulus, mp); + /* X = X - Y */ + fp_sub(R->x, R->y, R->x); + if (fp_cmp_d(R->x, 0) == FP_LT) { + fp_add(R->x, modulus, R->x); + } + /* X = X - Y */ + fp_sub(R->x, R->y, R->x); + if (fp_cmp_d(R->x, 0) == FP_LT) { + fp_add(R->x, modulus, R->x); + } + + /* Y = Y - X */ + fp_sub(R->y, R->x, R->y); + if (fp_cmp_d(R->y, 0) == FP_LT) { + fp_add(R->y, modulus, R->y); + } + /* Y = Y * T1 */ + fp_mul(R->y, &t1, R->y); + fp_montgomery_reduce(R->y, modulus, mp); + /* Y = Y - T2 */ + fp_sub(R->y, &t2, R->y); + if (fp_cmp_d(R->y, 0) == FP_LT) { + fp_add(R->y, modulus, R->y); + } + + return CRYPT_OK; +} + +/** + Add two ECC points + @param P The point to add + @param Q The point to add + @param R [out] The destination of the double + @param modulus The modulus of the field the ECC curve is in + @param Mp The "b" value from montgomery_setup() + @return CRYPT_OK on success +*/ +static int tfm_ecc_projective_add_point(ecc_point *P, ecc_point *Q, ecc_point *R, void *modulus, void *Mp) +{ + fp_int t1, t2, x, y, z; + fp_digit mp; + + LTC_ARGCHK(P != NULL); + LTC_ARGCHK(Q != NULL); + LTC_ARGCHK(R != NULL); + LTC_ARGCHK(modulus != NULL); + LTC_ARGCHK(Mp != NULL); + + mp = *((fp_digit*)Mp); + + fp_init(&t1); + fp_init(&t2); + fp_init(&x); + fp_init(&y); + fp_init(&z); + + /* should we dbl instead? */ + fp_sub(modulus, Q->y, &t1); + if ( (fp_cmp(P->x, Q->x) == FP_EQ) && + (Q->z != NULL && fp_cmp(P->z, Q->z) == FP_EQ) && + (fp_cmp(P->y, Q->y) == FP_EQ || fp_cmp(P->y, &t1) == FP_EQ)) { + return tfm_ecc_projective_dbl_point(P, R, modulus, Mp); + } + + fp_copy(P->x, &x); + fp_copy(P->y, &y); + fp_copy(P->z, &z); + + /* if Z is one then these are no-operations */ + if (Q->z != NULL) { + /* T1 = Z' * Z' */ + fp_sqr(Q->z, &t1); + fp_montgomery_reduce(&t1, modulus, mp); + /* X = X * T1 */ + fp_mul(&t1, &x, &x); + fp_montgomery_reduce(&x, modulus, mp); + /* T1 = Z' * T1 */ + fp_mul(Q->z, &t1, &t1); + fp_montgomery_reduce(&t1, modulus, mp); + /* Y = Y * T1 */ + fp_mul(&t1, &y, &y); + fp_montgomery_reduce(&y, modulus, mp); + } + + /* T1 = Z*Z */ + fp_sqr(&z, &t1); + fp_montgomery_reduce(&t1, modulus, mp); + /* T2 = X' * T1 */ + fp_mul(Q->x, &t1, &t2); + fp_montgomery_reduce(&t2, modulus, mp); + /* T1 = Z * T1 */ + fp_mul(&z, &t1, &t1); + fp_montgomery_reduce(&t1, modulus, mp); + /* T1 = Y' * T1 */ + fp_mul(Q->y, &t1, &t1); + fp_montgomery_reduce(&t1, modulus, mp); + + /* Y = Y - T1 */ + fp_sub(&y, &t1, &y); + if (fp_cmp_d(&y, 0) == FP_LT) { + fp_add(&y, modulus, &y); + } + /* T1 = 2T1 */ + fp_add(&t1, &t1, &t1); + if (fp_cmp(&t1, modulus) != FP_LT) { + fp_sub(&t1, modulus, &t1); + } + /* T1 = Y + T1 */ + fp_add(&t1, &y, &t1); + if (fp_cmp(&t1, modulus) != FP_LT) { + fp_sub(&t1, modulus, &t1); + } + /* X = X - T2 */ + fp_sub(&x, &t2, &x); + if (fp_cmp_d(&x, 0) == FP_LT) { + fp_add(&x, modulus, &x); + } + /* T2 = 2T2 */ + fp_add(&t2, &t2, &t2); + if (fp_cmp(&t2, modulus) != FP_LT) { + fp_sub(&t2, modulus, &t2); + } + /* T2 = X + T2 */ + fp_add(&t2, &x, &t2); + if (fp_cmp(&t2, modulus) != FP_LT) { + fp_sub(&t2, modulus, &t2); + } + + /* if Z' != 1 */ + if (Q->z != NULL) { + /* Z = Z * Z' */ + fp_mul(&z, Q->z, &z); + fp_montgomery_reduce(&z, modulus, mp); + } + + /* Z = Z * X */ + fp_mul(&z, &x, &z); + fp_montgomery_reduce(&z, modulus, mp); + + /* T1 = T1 * X */ + fp_mul(&t1, &x, &t1); + fp_montgomery_reduce(&t1, modulus, mp); + /* X = X * X */ + fp_sqr(&x, &x); + fp_montgomery_reduce(&x, modulus, mp); + /* T2 = T2 * x */ + fp_mul(&t2, &x, &t2); + fp_montgomery_reduce(&t2, modulus, mp); + /* T1 = T1 * X */ + fp_mul(&t1, &x, &t1); + fp_montgomery_reduce(&t1, modulus, mp); + + /* X = Y*Y */ + fp_sqr(&y, &x); + fp_montgomery_reduce(&x, modulus, mp); + /* X = X - T2 */ + fp_sub(&x, &t2, &x); + if (fp_cmp_d(&x, 0) == FP_LT) { + fp_add(&x, modulus, &x); + } + + /* T2 = T2 - X */ + fp_sub(&t2, &x, &t2); + if (fp_cmp_d(&t2, 0) == FP_LT) { + fp_add(&t2, modulus, &t2); + } + /* T2 = T2 - X */ + fp_sub(&t2, &x, &t2); + if (fp_cmp_d(&t2, 0) == FP_LT) { + fp_add(&t2, modulus, &t2); + } + /* T2 = T2 * Y */ + fp_mul(&t2, &y, &t2); + fp_montgomery_reduce(&t2, modulus, mp); + /* Y = T2 - T1 */ + fp_sub(&t2, &t1, &y); + if (fp_cmp_d(&y, 0) == FP_LT) { + fp_add(&y, modulus, &y); + } + /* Y = Y/2 */ + if (fp_isodd(&y)) { + fp_add(&y, modulus, &y); + } + fp_div_2(&y, &y); + + fp_copy(&x, R->x); + fp_copy(&y, R->y); + fp_copy(&z, R->z); + + return CRYPT_OK; +} + + +#endif + +static int set_rand(void *a, int size) +{ + LTC_ARGCHK(a != NULL); + fp_rand(a, size); + return CRYPT_OK; +} + +const ltc_math_descriptor tfm_desc = { + + "TomsFastMath", + (int)DIGIT_BIT, + + &init, + &init_copy, + &deinit, + + &neg, + ©, + + &set_int, + &get_int, + &get_digit, + &get_digit_count, + &compare, + &compare_d, + &count_bits, + &count_lsb_bits, + &twoexpt, + + &read_radix, + &write_radix, + &unsigned_size, + &unsigned_write, + &unsigned_read, + + &add, + &addi, + &sub, + &subi, + &mul, + &muli, + &sqr, + ÷, + &div_2, + &modi, + &gcd, + &lcm, + + &mulmod, + &sqrmod, + &invmod, + + &montgomery_setup, + &montgomery_normalization, + &montgomery_reduce, + &montgomery_deinit, + + &exptmod, + &isprime, + +#ifdef LTC_MECC +#ifdef LTC_MECC_FP + <c_ecc_fp_mulmod, +#else + <c_ecc_mulmod, +#endif /* LTC_MECC_FP */ +#ifdef LTC_MECC_ACCEL + &tfm_ecc_projective_add_point, + &tfm_ecc_projective_dbl_point, +#else + <c_ecc_projective_add_point, + <c_ecc_projective_dbl_point, +#endif /* LTC_MECC_ACCEL */ + <c_ecc_map, +#ifdef LTC_ECC_SHAMIR +#ifdef LTC_MECC_FP + <c_ecc_fp_mul2add, +#else + <c_ecc_mul2add, +#endif /* LTC_MECC_FP */ +#else + NULL, +#endif /* LTC_ECC_SHAMIR */ +#else + NULL, NULL, NULL, NULL, NULL, +#endif /* LTC_MECC */ + +#ifdef LTC_MRSA + &rsa_make_key, + &rsa_exptmod, +#else + NULL, NULL, +#endif + &addmod, + &submod, + + set_rand, + +}; + + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/adler32.c b/fsbl/lib/libtomcrypt/src/misc/adler32.c new file mode 100644 index 000000000..8bbf2accd --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/adler32.c @@ -0,0 +1,131 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file adler32.c + Adler-32 checksum algorithm + Written and placed in the public domain by Wei Dai + Adapted for libtomcrypt by Steffen Jaeckel +*/ +#ifdef LTC_ADLER32 + +static const unsigned long _adler32_base = 65521; + +void adler32_init(adler32_state *ctx) +{ + LTC_ARGCHKVD(ctx != NULL); + ctx->s[0] = 1; + ctx->s[1] = 0; +} + +void adler32_update(adler32_state *ctx, const unsigned char *input, unsigned long length) +{ + unsigned long s1, s2; + + LTC_ARGCHKVD(ctx != NULL); + LTC_ARGCHKVD(input != NULL); + s1 = ctx->s[0]; + s2 = ctx->s[1]; + + if (length % 8 != 0) { + do { + s1 += *input++; + s2 += s1; + length--; + } while (length % 8 != 0); + + if (s1 >= _adler32_base) + s1 -= _adler32_base; + s2 %= _adler32_base; + } + + while (length > 0) { + s1 += input[0]; + s2 += s1; + s1 += input[1]; + s2 += s1; + s1 += input[2]; + s2 += s1; + s1 += input[3]; + s2 += s1; + s1 += input[4]; + s2 += s1; + s1 += input[5]; + s2 += s1; + s1 += input[6]; + s2 += s1; + s1 += input[7]; + s2 += s1; + + length -= 8; + input += 8; + + if (s1 >= _adler32_base) + s1 -= _adler32_base; + s2 %= _adler32_base; + } + + LTC_ARGCHKVD(s1 < _adler32_base); + LTC_ARGCHKVD(s2 < _adler32_base); + + ctx->s[0] = (unsigned short)s1; + ctx->s[1] = (unsigned short)s2; +} + +void adler32_finish(adler32_state *ctx, void *hash, unsigned long size) +{ + unsigned char* h; + + LTC_ARGCHKVD(ctx != NULL); + LTC_ARGCHKVD(hash != NULL); + + h = hash; + + switch (size) { + default: + h[3] = ctx->s[0] & 0x0ff; + /* FALLTHROUGH */ + case 3: + h[2] = (ctx->s[0] >> 8) & 0x0ff; + /* FALLTHROUGH */ + case 2: + h[1] = ctx->s[1] & 0x0ff; + /* FALLTHROUGH */ + case 1: + h[0] = (ctx->s[1] >> 8) & 0x0ff; + /* FALLTHROUGH */ + case 0: + ; + } +} + +int adler32_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + const void* in = "libtomcrypt"; + const unsigned char adler32[] = { 0x1b, 0xe8, 0x04, 0xba }; + unsigned char out[4]; + adler32_state ctx; + adler32_init(&ctx); + adler32_update(&ctx, in, strlen(in)); + adler32_finish(&ctx, out, 4); + if (compare_testvector(adler32, 4, out, 4, "adler32", 0)) { + return CRYPT_FAIL_TESTVECTOR; + } + return CRYPT_OK; +#endif +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/base64/base64_decode.c b/fsbl/lib/libtomcrypt/src/misc/base64/base64_decode.c new file mode 100644 index 000000000..4c58c68d5 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/base64/base64_decode.c @@ -0,0 +1,196 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file base64_decode.c + Compliant base64 code donated by Wayne Scott (wscott@bitmover.com) + base64 URL Safe variant (RFC 4648 section 5) by Karel Miko +*/ + + +#if defined(LTC_BASE64) || defined (LTC_BASE64_URL) + +#if defined(LTC_BASE64) +static const unsigned char map_base64[256] = { +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 62, 255, 255, 255, 63, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255, +255, 254, 255, 255, 255, 0, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 255, 255, 255, 255, 255, +255, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255 }; +#endif /* LTC_BASE64 */ + +static const unsigned char map_base64url[] = { +#if defined(LTC_BASE64_URL) +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 62, 255, 255, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 255, 255, +255, 254, 255, 255, 255, 0, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 255, 255, 255, 255, 63, +255, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, +255, 255, 255, 255 +#endif /* LTC_BASE64_URL */ +}; + +enum { + relaxed = 0, + strict = 1 +}; + +static int _base64_decode_internal(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + const unsigned char *map, int is_strict) +{ + unsigned long t, x, y, z; + unsigned char c; + int g; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + g = 0; /* '=' counter */ + for (x = y = z = t = 0; x < inlen; x++) { + c = map[in[x]&0xFF]; + if (c == 254) { + g++; + continue; + } + else if (is_strict && g > 0) { + /* we only allow '=' to be at the end */ + return CRYPT_INVALID_PACKET; + } + if (c == 255) { + if (is_strict) + return CRYPT_INVALID_PACKET; + else + continue; + } + + t = (t<<6)|c; + + if (++y == 4) { + if (z + 3 > *outlen) return CRYPT_BUFFER_OVERFLOW; + out[z++] = (unsigned char)((t>>16)&255); + out[z++] = (unsigned char)((t>>8)&255); + out[z++] = (unsigned char)(t&255); + y = t = 0; + } + } + + if (y != 0) { + if (y == 1) return CRYPT_INVALID_PACKET; + if ((y + g) != 4 && is_strict && map != map_base64url) return CRYPT_INVALID_PACKET; + t = t << (6 * (4 - y)); + if (z + y - 1 > *outlen) return CRYPT_BUFFER_OVERFLOW; + if (y >= 2) out[z++] = (unsigned char) ((t >> 16) & 255); + if (y == 3) out[z++] = (unsigned char) ((t >> 8) & 255); + } + *outlen = z; + return CRYPT_OK; +} + +#if defined(LTC_BASE64) +/** + Relaxed base64 decode a block of memory + @param in The base64 data to decode + @param inlen The length of the base64 data + @param out [out] The destination of the binary decoded data + @param outlen [in/out] The max size and resulting size of the decoded data + @return CRYPT_OK if successful +*/ +int base64_decode(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + return _base64_decode_internal(in, inlen, out, outlen, map_base64, relaxed); +} + +/** + Strict base64 decode a block of memory + @param in The base64 data to decode + @param inlen The length of the base64 data + @param out [out] The destination of the binary decoded data + @param outlen [in/out] The max size and resulting size of the decoded data + @return CRYPT_OK if successful +*/ +int base64_strict_decode(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + return _base64_decode_internal(in, inlen, out, outlen, map_base64, strict); +} +#endif /* LTC_BASE64 */ + +#if defined(LTC_BASE64_URL) +/** + Relaxed base64 (URL Safe, RFC 4648 section 5) decode a block of memory + @param in The base64 data to decode + @param inlen The length of the base64 data + @param out [out] The destination of the binary decoded data + @param outlen [in/out] The max size and resulting size of the decoded data + @return CRYPT_OK if successful +*/ +int base64url_decode(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + return _base64_decode_internal(in, inlen, out, outlen, map_base64url, relaxed); +} + +/** + Strict base64 (URL Safe, RFC 4648 section 5) decode a block of memory + @param in The base64 data to decode + @param inlen The length of the base64 data + @param out [out] The destination of the binary decoded data + @param outlen [in/out] The max size and resulting size of the decoded data + @return CRYPT_OK if successful +*/ +int base64url_strict_decode(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + return _base64_decode_internal(in, inlen, out, outlen, map_base64url, strict); +} +#endif /* LTC_BASE64_URL */ + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/base64/base64_encode.c b/fsbl/lib/libtomcrypt/src/misc/base64/base64_encode.c new file mode 100644 index 000000000..5c26e607b --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/base64/base64_encode.c @@ -0,0 +1,124 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file base64_encode.c + Compliant base64 encoder donated by Wayne Scott (wscott@bitmover.com) + base64 URL Safe variant (RFC 4648 section 5) by Karel Miko +*/ + + +#if defined(LTC_BASE64) || defined (LTC_BASE64_URL) + +#if defined(LTC_BASE64) +static const char * const codes_base64 = +"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; +#endif /* LTC_BASE64 */ + +#if defined(LTC_BASE64_URL) +static const char * const codes_base64url = +"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"; +#endif /* LTC_BASE64_URL */ + +static int _base64_encode_internal(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + const char *codes, int pad) +{ + unsigned long i, len2, leven; + unsigned char *p; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* valid output size ? */ + len2 = 4 * ((inlen + 2) / 3); + if (*outlen < len2 + 1) { + *outlen = len2 + 1; + return CRYPT_BUFFER_OVERFLOW; + } + p = out; + leven = 3*(inlen / 3); + for (i = 0; i < leven; i += 3) { + *p++ = codes[(in[0] >> 2) & 0x3F]; + *p++ = codes[(((in[0] & 3) << 4) + (in[1] >> 4)) & 0x3F]; + *p++ = codes[(((in[1] & 0xf) << 2) + (in[2] >> 6)) & 0x3F]; + *p++ = codes[in[2] & 0x3F]; + in += 3; + } + /* Pad it if necessary... */ + if (i < inlen) { + unsigned a = in[0]; + unsigned b = (i+1 < inlen) ? in[1] : 0; + + *p++ = codes[(a >> 2) & 0x3F]; + *p++ = codes[(((a & 3) << 4) + (b >> 4)) & 0x3F]; + if (pad) { + *p++ = (i+1 < inlen) ? codes[(((b & 0xf) << 2)) & 0x3F] : '='; + *p++ = '='; + } + else { + if (i+1 < inlen) *p++ = codes[(((b & 0xf) << 2)) & 0x3F]; + } + } + + /* append a NULL byte */ + *p = '\0'; + + /* return ok */ + *outlen = (unsigned long)(p - out); + return CRYPT_OK; +} + +#if defined(LTC_BASE64) +/** + base64 Encode a buffer (NUL terminated) + @param in The input buffer to encode + @param inlen The length of the input buffer + @param out [out] The destination of the base64 encoded data + @param outlen [in/out] The max size and resulting size + @return CRYPT_OK if successful +*/ +int base64_encode(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + return _base64_encode_internal(in, inlen, out, outlen, codes_base64, 1); +} +#endif /* LTC_BASE64 */ + + +#if defined(LTC_BASE64_URL) +/** + base64 (URL Safe, RFC 4648 section 5) Encode a buffer (NUL terminated) + @param in The input buffer to encode + @param inlen The length of the input buffer + @param out [out] The destination of the base64 encoded data + @param outlen [in/out] The max size and resulting size + @return CRYPT_OK if successful +*/ +int base64url_encode(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + return _base64_encode_internal(in, inlen, out, outlen, codes_base64url, 0); +} + +int base64url_strict_encode(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + return _base64_encode_internal(in, inlen, out, outlen, codes_base64url, 1); +} +#endif /* LTC_BASE64_URL */ + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/burn_stack.c b/fsbl/lib/libtomcrypt/src/misc/burn_stack.c new file mode 100644 index 000000000..afbafee4b --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/burn_stack.c @@ -0,0 +1,32 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file burn_stack.c + Burn stack, Tom St Denis +*/ + +/** + Burn some stack memory + @param len amount of stack to burn in bytes +*/ +void burn_stack(unsigned long len) +{ + unsigned char buf[32]; + zeromem(buf, sizeof(buf)); + if (len > (unsigned long)sizeof(buf)) + burn_stack(len - sizeof(buf)); +} + + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/compare_testvector.c b/fsbl/lib/libtomcrypt/src/misc/compare_testvector.c new file mode 100644 index 000000000..82433c6f8 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/compare_testvector.c @@ -0,0 +1,87 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +/** + @file compare_testvector.c + Function to compare two testvectors and print a (detailed) error-message if required, Steffen Jaeckel +*/ + +#if defined(LTC_TEST) && defined(LTC_TEST_DBG) +static void _print_hex(const char* what, const void* v, const unsigned long l) +{ + const unsigned char* p = v; + unsigned long x, y = 0, z; + fprintf(stderr, "%s contents: \n", what); + for (x = 0; x < l; ) { + fprintf(stderr, "%02X ", p[x]); + if (!(++x % 16) || x == l) { + if((x % 16) != 0) { + z = 16 - (x % 16); + if(z >= 8) + fprintf(stderr, " "); + for (; z != 0; --z) { + fprintf(stderr, " "); + } + } + fprintf(stderr, " | "); + for(; y < x; y++) { + if((y % 8) == 0) + fprintf(stderr, " "); + if(isgraph(p[y])) + fprintf(stderr, "%c", p[y]); + else + fprintf(stderr, "."); + } + fprintf(stderr, "\n"); + } + else if((x % 8) == 0) { + fprintf(stderr, " "); + } + } +} +#endif + +/** + Compare two test-vectors + + @param is The data as it is + @param is_len The length of is + @param should The data as it should + @param should_len The length of should + @param what The type of the data + @param which The iteration count + @return 0 on equality, -1 or 1 on difference +*/ +int compare_testvector(const void* is, const unsigned long is_len, const void* should, const unsigned long should_len, const char* what, int which) +{ + int res = 0; + if(is_len != should_len) + res = is_len > should_len ? -1 : 1; + else + res = XMEMCMP(is, should, is_len); + +#if defined(LTC_TEST) && defined(LTC_TEST_DBG) + if (res != 0) { + fprintf(stderr, "Testvector #%i of %s failed:\n", which, what); + _print_hex("SHOULD", should, should_len); + _print_hex("IS ", is, is_len); + } +#else + LTC_UNUSED_PARAM(which); + LTC_UNUSED_PARAM(what); +#endif + + return res; +} + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crc32.c b/fsbl/lib/libtomcrypt/src/misc/crc32.c new file mode 100644 index 000000000..beb54fcbf --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crc32.c @@ -0,0 +1,202 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crc32.c + CRC-32 checksum algorithm + Written and placed in the public domain by Wei Dai + Adapted for libtomcrypt by Steffen Jaeckel +*/ +#ifdef LTC_CRC32 + +static const ulong32 _CRC32_NEGL = 0xffffffffUL; + +#if defined(ENDIAN_LITTLE) +#define CRC32_INDEX(c) (c & 0xff) +#define CRC32_SHIFTED(c) (c >> 8) +#elif defined(ENDIAN_BIG) +#define CRC32_INDEX(c) (c >> 24) +#define CRC32_SHIFTED(c) (c << 8) +#else +#error The existing CRC32 implementation only works properly when the endianness of the target platform is known. +#endif + +/* Table of CRC-32's of all single byte values (made by makecrc.c) */ +static const ulong32 crc32_m_tab[] = +{ +#if defined(ENDIAN_LITTLE) + 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L, + 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L, + 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L, + 0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL, + 0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L, + 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L, + 0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L, + 0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL, + 0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L, + 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL, + 0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L, + 0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L, + 0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L, + 0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL, + 0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL, + 0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L, + 0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL, + 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L, + 0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L, + 0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L, + 0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL, + 0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L, + 0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L, + 0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL, + 0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L, + 0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L, + 0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L, + 0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L, + 0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L, + 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL, + 0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL, + 0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L, + 0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L, + 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL, + 0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL, + 0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L, + 0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL, + 0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L, + 0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL, + 0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L, + 0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL, + 0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L, + 0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L, + 0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL, + 0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L, + 0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L, + 0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L, + 0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L, + 0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L, + 0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L, + 0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL, + 0x2d02ef8dL +#else + 0x00000000L, 0x96300777L, 0x2c610eeeL, 0xba510999L, 0x19c46d07L, + 0x8ff46a70L, 0x35a563e9L, 0xa395649eL, 0x3288db0eL, 0xa4b8dc79L, + 0x1ee9d5e0L, 0x88d9d297L, 0x2b4cb609L, 0xbd7cb17eL, 0x072db8e7L, + 0x911dbf90L, 0x6410b71dL, 0xf220b06aL, 0x4871b9f3L, 0xde41be84L, + 0x7dd4da1aL, 0xebe4dd6dL, 0x51b5d4f4L, 0xc785d383L, 0x56986c13L, + 0xc0a86b64L, 0x7af962fdL, 0xecc9658aL, 0x4f5c0114L, 0xd96c0663L, + 0x633d0ffaL, 0xf50d088dL, 0xc8206e3bL, 0x5e10694cL, 0xe44160d5L, + 0x727167a2L, 0xd1e4033cL, 0x47d4044bL, 0xfd850dd2L, 0x6bb50aa5L, + 0xfaa8b535L, 0x6c98b242L, 0xd6c9bbdbL, 0x40f9bcacL, 0xe36cd832L, + 0x755cdf45L, 0xcf0dd6dcL, 0x593dd1abL, 0xac30d926L, 0x3a00de51L, + 0x8051d7c8L, 0x1661d0bfL, 0xb5f4b421L, 0x23c4b356L, 0x9995bacfL, + 0x0fa5bdb8L, 0x9eb80228L, 0x0888055fL, 0xb2d90cc6L, 0x24e90bb1L, + 0x877c6f2fL, 0x114c6858L, 0xab1d61c1L, 0x3d2d66b6L, 0x9041dc76L, + 0x0671db01L, 0xbc20d298L, 0x2a10d5efL, 0x8985b171L, 0x1fb5b606L, + 0xa5e4bf9fL, 0x33d4b8e8L, 0xa2c90778L, 0x34f9000fL, 0x8ea80996L, + 0x18980ee1L, 0xbb0d6a7fL, 0x2d3d6d08L, 0x976c6491L, 0x015c63e6L, + 0xf4516b6bL, 0x62616c1cL, 0xd8306585L, 0x4e0062f2L, 0xed95066cL, + 0x7ba5011bL, 0xc1f40882L, 0x57c40ff5L, 0xc6d9b065L, 0x50e9b712L, + 0xeab8be8bL, 0x7c88b9fcL, 0xdf1ddd62L, 0x492dda15L, 0xf37cd38cL, + 0x654cd4fbL, 0x5861b24dL, 0xce51b53aL, 0x7400bca3L, 0xe230bbd4L, + 0x41a5df4aL, 0xd795d83dL, 0x6dc4d1a4L, 0xfbf4d6d3L, 0x6ae96943L, + 0xfcd96e34L, 0x468867adL, 0xd0b860daL, 0x732d0444L, 0xe51d0333L, + 0x5f4c0aaaL, 0xc97c0dddL, 0x3c710550L, 0xaa410227L, 0x10100bbeL, + 0x86200cc9L, 0x25b56857L, 0xb3856f20L, 0x09d466b9L, 0x9fe461ceL, + 0x0ef9de5eL, 0x98c9d929L, 0x2298d0b0L, 0xb4a8d7c7L, 0x173db359L, + 0x810db42eL, 0x3b5cbdb7L, 0xad6cbac0L, 0x2083b8edL, 0xb6b3bf9aL, + 0x0ce2b603L, 0x9ad2b174L, 0x3947d5eaL, 0xaf77d29dL, 0x1526db04L, + 0x8316dc73L, 0x120b63e3L, 0x843b6494L, 0x3e6a6d0dL, 0xa85a6a7aL, + 0x0bcf0ee4L, 0x9dff0993L, 0x27ae000aL, 0xb19e077dL, 0x44930ff0L, + 0xd2a30887L, 0x68f2011eL, 0xfec20669L, 0x5d5762f7L, 0xcb676580L, + 0x71366c19L, 0xe7066b6eL, 0x761bd4feL, 0xe02bd389L, 0x5a7ada10L, + 0xcc4add67L, 0x6fdfb9f9L, 0xf9efbe8eL, 0x43beb717L, 0xd58eb060L, + 0xe8a3d6d6L, 0x7e93d1a1L, 0xc4c2d838L, 0x52f2df4fL, 0xf167bbd1L, + 0x6757bca6L, 0xdd06b53fL, 0x4b36b248L, 0xda2b0dd8L, 0x4c1b0aafL, + 0xf64a0336L, 0x607a0441L, 0xc3ef60dfL, 0x55df67a8L, 0xef8e6e31L, + 0x79be6946L, 0x8cb361cbL, 0x1a8366bcL, 0xa0d26f25L, 0x36e26852L, + 0x95770cccL, 0x03470bbbL, 0xb9160222L, 0x2f260555L, 0xbe3bbac5L, + 0x280bbdb2L, 0x925ab42bL, 0x046ab35cL, 0xa7ffd7c2L, 0x31cfd0b5L, + 0x8b9ed92cL, 0x1daede5bL, 0xb0c2649bL, 0x26f263ecL, 0x9ca36a75L, + 0x0a936d02L, 0xa906099cL, 0x3f360eebL, 0x85670772L, 0x13570005L, + 0x824abf95L, 0x147ab8e2L, 0xae2bb17bL, 0x381bb60cL, 0x9b8ed292L, + 0x0dbed5e5L, 0xb7efdc7cL, 0x21dfdb0bL, 0xd4d2d386L, 0x42e2d4f1L, + 0xf8b3dd68L, 0x6e83da1fL, 0xcd16be81L, 0x5b26b9f6L, 0xe177b06fL, + 0x7747b718L, 0xe65a0888L, 0x706a0fffL, 0xca3b0666L, 0x5c0b0111L, + 0xff9e658fL, 0x69ae62f8L, 0xd3ff6b61L, 0x45cf6c16L, 0x78e20aa0L, + 0xeed20dd7L, 0x5483044eL, 0xc2b30339L, 0x612667a7L, 0xf71660d0L, + 0x4d476949L, 0xdb776e3eL, 0x4a6ad1aeL, 0xdc5ad6d9L, 0x660bdf40L, + 0xf03bd837L, 0x53aebca9L, 0xc59ebbdeL, 0x7fcfb247L, 0xe9ffb530L, + 0x1cf2bdbdL, 0x8ac2bacaL, 0x3093b353L, 0xa6a3b424L, 0x0536d0baL, + 0x9306d7cdL, 0x2957de54L, 0xbf67d923L, 0x2e7a66b3L, 0xb84a61c4L, + 0x021b685dL, 0x942b6f2aL, 0x37be0bb4L, 0xa18e0cc3L, 0x1bdf055aL, + 0x8def022dL +#endif +}; + +void crc32_init(crc32_state *ctx) +{ + LTC_ARGCHKVD(ctx != NULL); + ctx->crc = _CRC32_NEGL; +} + +void crc32_update(crc32_state *ctx, const unsigned char *input, unsigned long length) +{ + ulong32 crc; + LTC_ARGCHKVD(ctx != NULL); + LTC_ARGCHKVD(input != NULL); + crc = ctx->crc; + + while (length--) + crc = crc32_m_tab[CRC32_INDEX(crc) ^ *input++] ^ CRC32_SHIFTED(crc); + + ctx->crc = crc; +} + +void crc32_finish(crc32_state *ctx, void *hash, unsigned long size) +{ + unsigned long i; + unsigned char* h; + ulong32 crc; + LTC_ARGCHKVD(ctx != NULL); + LTC_ARGCHKVD(hash != NULL); + + h = hash; + crc = ctx->crc; + crc ^= _CRC32_NEGL; + + if (size > 4) size = 4; + for (i = 0; i < size; i++) { + h[i] = ((unsigned char*)&(crc))[size-i-1]; + } +} + +int crc32_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + const void* in = "libtomcrypt"; + const unsigned char crc32[] = { 0xb3, 0x73, 0x76, 0xef }; + unsigned char out[4]; + crc32_state ctx; + crc32_init(&ctx); + crc32_update(&ctx, in, strlen(in)); + crc32_finish(&ctx, out, 4); + if (compare_testvector(crc32, 4, out, 4, "CRC32", 0)) { + return CRYPT_FAIL_TESTVECTOR; + } + return CRYPT_OK; +#endif +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt.c new file mode 100644 index 000000000..e5149b074 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt.c @@ -0,0 +1,496 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt.c + Build strings, Tom St Denis +*/ +#define NAME_VALUE(s) #s"="NAME(s) +#define NAME(s) #s + +const char *crypt_build_settings = + "LibTomCrypt " SCRYPT " (www.libtom.net)\n" + "LibTomCrypt is public domain software.\n" +#if defined(INCLUDE_BUILD_DATE) + "Built on " __DATE__ " at " __TIME__ "\n" +#endif + "\n\nEndianness: " +#if defined(ENDIAN_NEUTRAL) + "neutral/" +#endif +#if defined(ENDIAN_LITTLE) + "little" +#elif defined(ENDIAN_BIG) + "big" +#endif + #if defined(ENDIAN_32BITWORD) + " (32-bit words)\n" + #elif defined(ENDIAN_64BITWORD) + " (64-bit words)\n" + #else + " (no wordsize defined)\n" + #endif + "Clean stack: " +#if defined(LTC_CLEAN_STACK) + "enabled\n" +#else + "disabled\n" +#endif + "\nCiphers built-in:\n" +#if defined(LTC_BLOWFISH) + " Blowfish\n" +#endif +#if defined(LTC_RC2) + " RC2\n" +#endif +#if defined(LTC_RC5) + " RC5\n" +#endif +#if defined(LTC_RC6) + " RC6\n" +#endif +#if defined(LTC_SAFERP) + " Safer+\n" +#endif +#if defined(LTC_SAFER) + " Safer\n" +#endif +#if defined(LTC_RIJNDAEL) + " Rijndael\n" +#endif +#if defined(LTC_XTEA) + " XTEA\n" +#endif +#if defined(LTC_TWOFISH) + " Twofish " + #if defined(LTC_TWOFISH_SMALL) && defined(LTC_TWOFISH_TABLES) && defined(LTC_TWOFISH_ALL_TABLES) + "(small, tables, all_tables)\n" + #elif defined(LTC_TWOFISH_SMALL) && defined(LTC_TWOFISH_TABLES) + "(small, tables)\n" + #elif defined(LTC_TWOFISH_SMALL) && defined(LTC_TWOFISH_ALL_TABLES) + "(small, all_tables)\n" + #elif defined(LTC_TWOFISH_TABLES) && defined(LTC_TWOFISH_ALL_TABLES) + "(tables, all_tables)\n" + #elif defined(LTC_TWOFISH_SMALL) + "(small)\n" + #elif defined(LTC_TWOFISH_TABLES) + "(tables)\n" + #elif defined(LTC_TWOFISH_ALL_TABLES) + "(all_tables)\n" + #else + "\n" + #endif +#endif +#if defined(LTC_DES) + " DES\n" +#endif +#if defined(LTC_CAST5) + " CAST5\n" +#endif +#if defined(LTC_NOEKEON) + " Noekeon\n" +#endif +#if defined(LTC_SKIPJACK) + " Skipjack\n" +#endif +#if defined(LTC_KHAZAD) + " Khazad\n" +#endif +#if defined(LTC_ANUBIS) + " Anubis " +#endif +#if defined(LTC_ANUBIS_TWEAK) + " (tweaked)" +#endif + "\n" +#if defined(LTC_KSEED) + " KSEED\n" +#endif +#if defined(LTC_KASUMI) + " KASUMI\n" +#endif +#if defined(LTC_MULTI2) + " MULTI2\n" +#endif +#if defined(LTC_CAMELLIA) + " Camellia\n" +#endif + "Stream ciphers built-in:\n" +#if defined(LTC_CHACHA) + " ChaCha\n" +#endif +#if defined(LTC_RC4_STREAM) + " RC4\n" +#endif +#if defined(LTC_SOBER128_STREAM) + " SOBER128\n" +#endif + + "\nHashes built-in:\n" +#if defined(LTC_SHA3) + " SHA3\n" +#endif +#if defined(LTC_SHA512) + " SHA-512\n" +#endif +#if defined(LTC_SHA384) + " SHA-384\n" +#endif +#if defined(LTC_SHA512_256) + " SHA-512/256\n" +#endif +#if defined(LTC_SHA256) + " SHA-256\n" +#endif +#if defined(LTC_SHA512_224) + " SHA-512/224\n" +#endif +#if defined(LTC_SHA224) + " SHA-224\n" +#endif +#if defined(LTC_TIGER) + " TIGER\n" +#endif +#if defined(LTC_SHA1) + " SHA1\n" +#endif +#if defined(LTC_MD5) + " MD5\n" +#endif +#if defined(LTC_MD4) + " MD4\n" +#endif +#if defined(LTC_MD2) + " MD2\n" +#endif +#if defined(LTC_RIPEMD128) + " RIPEMD128\n" +#endif +#if defined(LTC_RIPEMD160) + " RIPEMD160\n" +#endif +#if defined(LTC_RIPEMD256) + " RIPEMD256\n" +#endif +#if defined(LTC_RIPEMD320) + " RIPEMD320\n" +#endif +#if defined(LTC_WHIRLPOOL) + " WHIRLPOOL\n" +#endif +#if defined(LTC_BLAKE2S) + " BLAKE2S\n" +#endif +#if defined(LTC_BLAKE2B) + " BLAKE2B\n" +#endif +#if defined(LTC_CHC_HASH) + " CHC_HASH\n" +#endif + + "\nBlock Chaining Modes:\n" +#if defined(LTC_CFB_MODE) + " CFB\n" +#endif +#if defined(LTC_OFB_MODE) + " OFB\n" +#endif +#if defined(LTC_ECB_MODE) + " ECB\n" +#endif +#if defined(LTC_CBC_MODE) + " CBC\n" +#endif +#if defined(LTC_CTR_MODE) + " CTR\n" +#endif +#if defined(LTC_LRW_MODE) + " LRW" +#if defined(LTC_LRW_TABLES) + " (tables) " +#endif + "\n" +#endif +#if defined(LTC_F8_MODE) + " F8\n" +#endif +#if defined(LTC_XTS_MODE) + " XTS\n" +#endif + + "\nMACs:\n" +#if defined(LTC_HMAC) + " HMAC\n" +#endif +#if defined(LTC_OMAC) + " OMAC\n" +#endif +#if defined(LTC_PMAC) + " PMAC\n" +#endif +#if defined(LTC_PELICAN) + " PELICAN\n" +#endif +#if defined(LTC_XCBC) + " XCBC\n" +#endif +#if defined(LTC_F9_MODE) + " F9\n" +#endif +#if defined(LTC_POLY1305) + " POLY1305\n" +#endif +#if defined(LTC_BLAKE2SMAC) + " BLAKE2S MAC\n" +#endif +#if defined(LTC_BLAKE2BMAC) + " BLAKE2B MAC\n" +#endif + + "\nENC + AUTH modes:\n" +#if defined(LTC_EAX_MODE) + " EAX\n" +#endif +#if defined(LTC_OCB_MODE) + " OCB\n" +#endif +#if defined(LTC_OCB3_MODE) + " OCB3\n" +#endif +#if defined(LTC_CCM_MODE) + " CCM\n" +#endif +#if defined(LTC_GCM_MODE) + " GCM" +#if defined(LTC_GCM_TABLES) + " (tables) " +#endif +#if defined(LTC_GCM_TABLES_SSE2) + " (SSE2) " +#endif + "\n" +#endif +#if defined(LTC_CHACHA20POLY1305_MODE) + " CHACHA20POLY1305\n" +#endif + + "\nPRNG:\n" +#if defined(LTC_YARROW) + " Yarrow ("NAME_VALUE(LTC_YARROW_AES)")\n" +#endif +#if defined(LTC_SPRNG) + " SPRNG\n" +#endif +#if defined(LTC_RC4) + " RC4\n" +#endif +#if defined(LTC_CHACHA20_PRNG) + " ChaCha20\n" +#endif +#if defined(LTC_FORTUNA) + " Fortuna (" NAME_VALUE(LTC_FORTUNA_POOLS) ", " NAME_VALUE(LTC_FORTUNA_WD) ")\n" +#endif +#if defined(LTC_SOBER128) + " SOBER128\n" +#endif + + "\nPK Crypto:\n" +#if defined(LTC_MRSA) + " RSA" +#if defined(LTC_RSA_BLINDING) && defined(LTC_RSA_CRT_HARDENING) + " (with blinding and CRT hardening)" +#elif defined(LTC_RSA_BLINDING) + " (with blinding)" +#elif defined(LTC_RSA_CRT_HARDENING) + " (with CRT hardening)" +#endif + "\n" +#endif +#if defined(LTC_MDH) + " DH\n" +#endif +#if defined(LTC_MECC) + " ECC" +#if defined(LTC_ECC_TIMING_RESISTANT) + " (with blinding)" +#endif + "\n" +#endif +#if defined(LTC_MDSA) + " DSA\n" +#endif +#if defined(LTC_MKAT) + " Katja\n" +#endif +#if defined(LTC_PK_MAX_RETRIES) + " "NAME_VALUE(LTC_PK_MAX_RETRIES)"\n" +#endif + + "\nMPI (Math):\n" +#if defined(LTC_MPI) + " LTC_MPI\n" +#endif +#if defined(LTM_DESC) + " LTM_DESC\n" +#endif +#if defined(TFM_DESC) + " TFM_DESC\n" +#endif +#if defined(GMP_DESC) + " GMP_DESC\n" +#endif +#if defined(LTC_MILLER_RABIN_REPS) + " "NAME_VALUE(LTC_MILLER_RABIN_REPS)"\n" +#endif + + "\nCompiler:\n" +#if defined(_WIN64) + " WIN64 platform detected.\n" +#elif defined(_WIN32) + " WIN32 platform detected.\n" +#endif +#if defined(__CYGWIN__) + " CYGWIN Detected.\n" +#endif +#if defined(__DJGPP__) + " DJGPP Detected.\n" +#endif +#if defined(_MSC_VER) + " MSVC compiler detected.\n" +#endif +#if defined(__clang_version__) + " Clang compiler " __clang_version__ ".\n" +#elif defined(INTEL_CC) + " Intel C Compiler " __VERSION__ ".\n" +#elif defined(__GNUC__) /* clang and icc also define __GNUC__ */ + " GCC compiler " __VERSION__ ".\n" +#endif + +#if defined(__x86_64__) + " x86-64 detected.\n" +#endif +#if defined(LTC_PPC32) + " PPC32 detected.\n" +#endif + + "\nVarious others: " +#if defined(ARGTYPE) + " " NAME_VALUE(ARGTYPE) " " +#endif +#if defined(LTC_ADLER32) + " ADLER32 " +#endif +#if defined(LTC_BASE64) + " BASE64 " +#endif +#if defined(LTC_BASE64_URL) + " BASE64-URL-SAFE " +#endif +#if defined(LTC_CRC32) + " CRC32 " +#endif +#if defined(LTC_DER) + " DER " + " " NAME_VALUE(LTC_DER_MAX_RECURSION) " " +#endif +#if defined(LTC_PKCS_1) + " PKCS#1 " +#endif +#if defined(LTC_PKCS_5) + " PKCS#5 " +#endif +#if defined(LTC_HKDF) + " HKDF " +#endif +#if defined(LTC_DEVRANDOM) + " LTC_DEVRANDOM " +#endif +#if defined(LTC_TRY_URANDOM_FIRST) + " LTC_TRY_URANDOM_FIRST " +#endif +#if defined(LTC_RNG_GET_BYTES) + " LTC_RNG_GET_BYTES " +#endif +#if defined(LTC_RNG_MAKE_PRNG) + " LTC_RNG_MAKE_PRNG " +#endif +#if defined(LTC_PRNG_ENABLE_LTC_RNG) + " LTC_PRNG_ENABLE_LTC_RNG " +#endif +#if defined(LTC_HASH_HELPERS) + " LTC_HASH_HELPERS " +#endif +#if defined(LTC_VALGRIND) + " LTC_VALGRIND " +#endif +#if defined(LTC_TEST) + " LTC_TEST " +#endif +#if defined(LTC_TEST_DBG) + " " NAME_VALUE(LTC_TEST_DBG) " " +#endif +#if defined(LTC_TEST_EXT) + " LTC_TEST_EXT " +#endif +#if defined(LTC_SMALL_CODE) + " LTC_SMALL_CODE " +#endif +#if defined(LTC_NO_FILE) + " LTC_NO_FILE " +#endif +#if defined(LTC_FILE_READ_BUFSIZE) + " " NAME_VALUE(LTC_FILE_READ_BUFSIZE) " " +#endif +#if defined(LTC_FAST) + " LTC_FAST " +#endif +#if defined(LTC_NO_FAST) + " LTC_NO_FAST " +#endif +#if defined(LTC_NO_BSWAP) + " LTC_NO_BSWAP " +#endif +#if defined(LTC_NO_ASM) + " LTC_NO_ASM " +#endif +#if defined(LTC_ROx_ASM) + " LTC_ROx_ASM " +#if defined(LTC_NO_ROLC) + " LTC_NO_ROLC " +#endif +#endif +#if defined(LTC_NO_TEST) + " LTC_NO_TEST " +#endif +#if defined(LTC_NO_TABLES) + " LTC_NO_TABLES " +#endif +#if defined(LTC_PTHREAD) + " LTC_PTHREAD " +#endif +#if defined(LTC_EASY) + " LTC_EASY " +#endif +#if defined(LTC_MECC_ACCEL) + " LTC_MECC_ACCEL " +#endif +#if defined(LTC_MECC_FP) + " LTC_MECC_FP " +#endif +#if defined(LTC_ECC_SHAMIR) + " LTC_ECC_SHAMIR " +#endif + "\n" + ; + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_argchk.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_argchk.c new file mode 100644 index 000000000..da7306b17 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_argchk.c @@ -0,0 +1,27 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt_argchk.c + Perform argument checking, Tom St Denis +*/ + +#if (ARGTYPE == 0) +void crypt_argchk(const char *v, const char *s, int d) +{ + fprintf(stderr, "LTC_ARGCHK '%s' failure on line %d of file %s\n", + v, d, s); + abort(); +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_cipher_descriptor.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_cipher_descriptor.c new file mode 100644 index 000000000..ccc989041 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_cipher_descriptor.c @@ -0,0 +1,25 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt_cipher_descriptor.c + Stores the cipher descriptor table, Tom St Denis +*/ + +struct ltc_cipher_descriptor cipher_descriptor[TAB_SIZE] = { +{ NULL, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL } + }; + +LTC_MUTEX_GLOBAL(ltc_cipher_mutex) + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_cipher_is_valid.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_cipher_is_valid.c new file mode 100644 index 000000000..aebc94cc5 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_cipher_is_valid.c @@ -0,0 +1,34 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt_cipher_is_valid.c + Determine if cipher is valid, Tom St Denis +*/ + +/* + Test if a cipher index is valid + @param idx The index of the cipher to search for + @return CRYPT_OK if valid +*/ +int cipher_is_valid(int idx) +{ + LTC_MUTEX_LOCK(<c_cipher_mutex); + if (idx < 0 || idx >= TAB_SIZE || cipher_descriptor[idx].name == NULL) { + LTC_MUTEX_UNLOCK(<c_cipher_mutex); + return CRYPT_INVALID_CIPHER; + } + LTC_MUTEX_UNLOCK(<c_cipher_mutex); + return CRYPT_OK; +} + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_constants.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_constants.c new file mode 100644 index 000000000..9b3c9387b --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_constants.c @@ -0,0 +1,292 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt_constants.c + + Make various constants available to dynamic languages + like Python - Larry Bugbee, February 2013 + + LB - Dec 2013 - revised to include compiler define options + LB - Mar 2014 - added endianness and word size +*/ + +typedef struct { + const char *name; + const int value; +} crypt_constant; + +#define _C_STRINGIFY(s) { #s, s } + +static const crypt_constant _crypt_constants[] = { + + _C_STRINGIFY(CRYPT_OK), + _C_STRINGIFY(CRYPT_ERROR), + _C_STRINGIFY(CRYPT_NOP), + _C_STRINGIFY(CRYPT_INVALID_KEYSIZE), + _C_STRINGIFY(CRYPT_INVALID_ROUNDS), + _C_STRINGIFY(CRYPT_FAIL_TESTVECTOR), + _C_STRINGIFY(CRYPT_BUFFER_OVERFLOW), + _C_STRINGIFY(CRYPT_INVALID_PACKET), + _C_STRINGIFY(CRYPT_INVALID_PRNGSIZE), + _C_STRINGIFY(CRYPT_ERROR_READPRNG), + _C_STRINGIFY(CRYPT_INVALID_CIPHER), + _C_STRINGIFY(CRYPT_INVALID_HASH), + _C_STRINGIFY(CRYPT_INVALID_PRNG), + _C_STRINGIFY(CRYPT_MEM), + _C_STRINGIFY(CRYPT_PK_TYPE_MISMATCH), + _C_STRINGIFY(CRYPT_PK_NOT_PRIVATE), + _C_STRINGIFY(CRYPT_INVALID_ARG), + _C_STRINGIFY(CRYPT_FILE_NOTFOUND), + _C_STRINGIFY(CRYPT_PK_INVALID_TYPE), + _C_STRINGIFY(CRYPT_OVERFLOW), + _C_STRINGIFY(CRYPT_UNUSED1), + _C_STRINGIFY(CRYPT_INPUT_TOO_LONG), + _C_STRINGIFY(CRYPT_PK_INVALID_SIZE), + _C_STRINGIFY(CRYPT_INVALID_PRIME_SIZE), + _C_STRINGIFY(CRYPT_PK_INVALID_PADDING), + _C_STRINGIFY(CRYPT_HASH_OVERFLOW), + + _C_STRINGIFY(PK_PUBLIC), + _C_STRINGIFY(PK_PRIVATE), + + _C_STRINGIFY(LTC_ENCRYPT), + _C_STRINGIFY(LTC_DECRYPT), + +#ifdef LTC_PKCS_1 + {"LTC_PKCS_1", 1}, + /* Block types */ + _C_STRINGIFY(LTC_PKCS_1_EMSA), + _C_STRINGIFY(LTC_PKCS_1_EME), + + /* Padding types */ + _C_STRINGIFY(LTC_PKCS_1_V1_5), + _C_STRINGIFY(LTC_PKCS_1_OAEP), + _C_STRINGIFY(LTC_PKCS_1_PSS), + _C_STRINGIFY(LTC_PKCS_1_V1_5_NA1), +#else + {"LTC_PKCS_1", 0}, +#endif + +#ifdef LTC_MRSA + {"LTC_MRSA", 1}, +#else + {"LTC_MRSA", 0}, +#endif + +#ifdef LTC_MKAT + {"LTC_MKAT", 1}, + _C_STRINGIFY(MIN_KAT_SIZE), + _C_STRINGIFY(MAX_KAT_SIZE), +#else + {"LTC_MKAT", 0}, +#endif + +#ifdef LTC_MECC + {"LTC_MECC", 1}, + _C_STRINGIFY(ECC_BUF_SIZE), + _C_STRINGIFY(ECC_MAXSIZE), +#else + {"LTC_MECC", 0}, +#endif + +#ifdef LTC_MDSA + {"LTC_MDSA", 1}, + _C_STRINGIFY(LTC_MDSA_DELTA), + _C_STRINGIFY(LTC_MDSA_MAX_GROUP), +#else + {"LTC_MDSA", 0}, +#endif + +#ifdef LTC_MILLER_RABIN_REPS + _C_STRINGIFY(LTC_MILLER_RABIN_REPS), +#endif + +#ifdef LTC_DER +/* DER handling */ + {"LTC_DER", 1}, + _C_STRINGIFY(LTC_ASN1_EOL), + _C_STRINGIFY(LTC_ASN1_BOOLEAN), + _C_STRINGIFY(LTC_ASN1_INTEGER), + _C_STRINGIFY(LTC_ASN1_SHORT_INTEGER), + _C_STRINGIFY(LTC_ASN1_BIT_STRING), + _C_STRINGIFY(LTC_ASN1_OCTET_STRING), + _C_STRINGIFY(LTC_ASN1_NULL), + _C_STRINGIFY(LTC_ASN1_OBJECT_IDENTIFIER), + _C_STRINGIFY(LTC_ASN1_IA5_STRING), + _C_STRINGIFY(LTC_ASN1_PRINTABLE_STRING), + _C_STRINGIFY(LTC_ASN1_UTF8_STRING), + _C_STRINGIFY(LTC_ASN1_UTCTIME), + _C_STRINGIFY(LTC_ASN1_CHOICE), + _C_STRINGIFY(LTC_ASN1_SEQUENCE), + _C_STRINGIFY(LTC_ASN1_SET), + _C_STRINGIFY(LTC_ASN1_SETOF), + _C_STRINGIFY(LTC_ASN1_RAW_BIT_STRING), + _C_STRINGIFY(LTC_ASN1_TELETEX_STRING), + _C_STRINGIFY(LTC_ASN1_CONSTRUCTED), + _C_STRINGIFY(LTC_ASN1_CONTEXT_SPECIFIC), + _C_STRINGIFY(LTC_ASN1_GENERALIZEDTIME), + _C_STRINGIFY(LTC_DER_MAX_RECURSION), +#else + {"LTC_DER", 0}, +#endif + +#ifdef LTC_CTR_MODE + {"LTC_CTR_MODE", 1}, + _C_STRINGIFY(CTR_COUNTER_LITTLE_ENDIAN), + _C_STRINGIFY(CTR_COUNTER_BIG_ENDIAN), + _C_STRINGIFY(LTC_CTR_RFC3686), +#else + {"LTC_CTR_MODE", 0}, +#endif +#ifdef LTC_GCM_MODE + _C_STRINGIFY(LTC_GCM_MODE_IV), + _C_STRINGIFY(LTC_GCM_MODE_AAD), + _C_STRINGIFY(LTC_GCM_MODE_TEXT), +#endif + + _C_STRINGIFY(LTC_MP_LT), + _C_STRINGIFY(LTC_MP_EQ), + _C_STRINGIFY(LTC_MP_GT), + + _C_STRINGIFY(LTC_MP_NO), + _C_STRINGIFY(LTC_MP_YES), + + _C_STRINGIFY(MAXBLOCKSIZE), + _C_STRINGIFY(TAB_SIZE), + _C_STRINGIFY(ARGTYPE), + +#ifdef LTM_DESC + {"LTM_DESC", 1}, +#else + {"LTM_DESC", 0}, +#endif +#ifdef TFM_DESC + {"TFM_DESC", 1}, +#else + {"TFM_DESC", 0}, +#endif +#ifdef GMP_DESC + {"GMP_DESC", 1}, +#else + {"GMP_DESC", 0}, +#endif + +#ifdef LTC_FAST + {"LTC_FAST", 1}, +#else + {"LTC_FAST", 0}, +#endif + +#ifdef LTC_NO_FILE + {"LTC_NO_FILE", 1}, +#else + {"LTC_NO_FILE", 0}, +#endif + +#ifdef ENDIAN_LITTLE + {"ENDIAN_LITTLE", 1}, +#else + {"ENDIAN_LITTLE", 0}, +#endif + +#ifdef ENDIAN_BIG + {"ENDIAN_BIG", 1}, +#else + {"ENDIAN_BIG", 0}, +#endif + +#ifdef ENDIAN_32BITWORD + {"ENDIAN_32BITWORD", 1}, +#else + {"ENDIAN_32BITWORD", 0}, +#endif + +#ifdef ENDIAN_64BITWORD + {"ENDIAN_64BITWORD", 1}, +#else + {"ENDIAN_64BITWORD", 0}, +#endif + +#ifdef ENDIAN_NEUTRAL + {"ENDIAN_NEUTRAL", 1}, +#else + {"ENDIAN_NEUTRAL", 0}, +#endif +}; + + +/* crypt_get_constant() + * valueout will be the value of the named constant + * return -1 if named item not found + */ +int crypt_get_constant(const char* namein, int *valueout) { + int i; + int _crypt_constants_len = sizeof(_crypt_constants) / sizeof(_crypt_constants[0]); + for (i=0; i<_crypt_constants_len; i++) { + if (XSTRCMP(_crypt_constants[i].name, namein) == 0) { + *valueout = _crypt_constants[i].value; + return 0; + } + } + return 1; +} + +/* crypt_list_all_constants() + * if names_list is NULL, names_list_size will be the minimum + * number of bytes needed to receive the complete names_list + * if names_list is NOT NULL, names_list must be the addr of + * sufficient memory allocated into which the names_list + * is to be written. Also, the value in names_list_size + * sets the upper bound of the number of characters to be + * written. + * a -1 return value signifies insufficient space made available + */ +int crypt_list_all_constants(char *names_list, unsigned int *names_list_size) { + int i; + unsigned int total_len = 0; + char *ptr; + int number_len; + int count = sizeof(_crypt_constants) / sizeof(_crypt_constants[0]); + + /* calculate amount of memory required for the list */ + for (i=0; i *names_list_size) { + return -1; + } + /* build the names list */ + ptr = names_list; + for (i=0; i total_len) return -1; + total_len -= number_len; + ptr += number_len; + } + /* to remove the trailing new-line */ + ptr -= 1; + *ptr = 0; + } + return 0; +} + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_find_cipher.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_find_cipher.c new file mode 100644 index 000000000..ba908f4ec --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_find_cipher.c @@ -0,0 +1,39 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt_find_cipher.c + Find a cipher in the descriptor tables, Tom St Denis +*/ + +/** + Find a registered cipher by name + @param name The name of the cipher to look for + @return >= 0 if found, -1 if not present +*/ +int find_cipher(const char *name) +{ + int x; + LTC_ARGCHK(name != NULL); + LTC_MUTEX_LOCK(<c_cipher_mutex); + for (x = 0; x < TAB_SIZE; x++) { + if (cipher_descriptor[x].name != NULL && !XSTRCMP(cipher_descriptor[x].name, name)) { + LTC_MUTEX_UNLOCK(<c_cipher_mutex); + return x; + } + } + LTC_MUTEX_UNLOCK(<c_cipher_mutex); + return -1; +} + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_find_cipher_any.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_find_cipher_any.c new file mode 100644 index 000000000..5cdcdf892 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_find_cipher_any.c @@ -0,0 +1,48 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt_find_cipher_any.c + Find a cipher in the descriptor tables, Tom St Denis +*/ + +/** + Find a cipher flexibly. First by name then if not present by block and key size + @param name The name of the cipher desired + @param blocklen The minimum length of the block cipher desired (octets) + @param keylen The minimum length of the key size desired (octets) + @return >= 0 if found, -1 if not present +*/ +int find_cipher_any(const char *name, int blocklen, int keylen) +{ + int x; + + if(name != NULL) { + x = find_cipher(name); + if (x != -1) return x; + } + + LTC_MUTEX_LOCK(<c_cipher_mutex); + for (x = 0; x < TAB_SIZE; x++) { + if (cipher_descriptor[x].name == NULL) { + continue; + } + if (blocklen <= (int)cipher_descriptor[x].block_length && keylen <= (int)cipher_descriptor[x].max_key_length) { + LTC_MUTEX_UNLOCK(<c_cipher_mutex); + return x; + } + } + LTC_MUTEX_UNLOCK(<c_cipher_mutex); + return -1; +} + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_find_cipher_id.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_find_cipher_id.c new file mode 100644 index 000000000..34d004997 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_find_cipher_id.c @@ -0,0 +1,38 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt_find_cipher_id.c + Find cipher by ID, Tom St Denis +*/ + +/** + Find a cipher by ID number + @param ID The ID (not same as index) of the cipher to find + @return >= 0 if found, -1 if not present +*/ +int find_cipher_id(unsigned char ID) +{ + int x; + LTC_MUTEX_LOCK(<c_cipher_mutex); + for (x = 0; x < TAB_SIZE; x++) { + if (cipher_descriptor[x].ID == ID) { + x = (cipher_descriptor[x].name == NULL) ? -1 : x; + LTC_MUTEX_UNLOCK(<c_cipher_mutex); + return x; + } + } + LTC_MUTEX_UNLOCK(<c_cipher_mutex); + return -1; +} + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_find_hash.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_find_hash.c new file mode 100644 index 000000000..19ee55cbe --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_find_hash.c @@ -0,0 +1,38 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt_find_hash.c + Find a hash, Tom St Denis +*/ + +/** + Find a registered hash by name + @param name The name of the hash to look for + @return >= 0 if found, -1 if not present +*/ +int find_hash(const char *name) +{ + int x; + LTC_ARGCHK(name != NULL); + LTC_MUTEX_LOCK(<c_hash_mutex); + for (x = 0; x < TAB_SIZE; x++) { + if (hash_descriptor[x].name != NULL && XSTRCMP(hash_descriptor[x].name, name) == 0) { + LTC_MUTEX_UNLOCK(<c_hash_mutex); + return x; + } + } + LTC_MUTEX_UNLOCK(<c_hash_mutex); + return -1; +} + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_find_hash_any.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_find_hash_any.c new file mode 100644 index 000000000..413809fb4 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_find_hash_any.c @@ -0,0 +1,47 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt_find_hash_any.c + Find a hash, Tom St Denis +*/ + +/** + Find a hash flexibly. First by name then if not present by digest size + @param name The name of the hash desired + @param digestlen The minimum length of the digest size (octets) + @return >= 0 if found, -1 if not present +*/int find_hash_any(const char *name, int digestlen) +{ + int x, y, z; + LTC_ARGCHK(name != NULL); + + x = find_hash(name); + if (x != -1) return x; + + LTC_MUTEX_LOCK(<c_hash_mutex); + y = MAXBLOCKSIZE+1; + z = -1; + for (x = 0; x < TAB_SIZE; x++) { + if (hash_descriptor[x].name == NULL) { + continue; + } + if ((int)hash_descriptor[x].hashsize >= digestlen && (int)hash_descriptor[x].hashsize < y) { + z = x; + y = hash_descriptor[x].hashsize; + } + } + LTC_MUTEX_UNLOCK(<c_hash_mutex); + return z; +} + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_find_hash_id.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_find_hash_id.c new file mode 100644 index 000000000..ea784e8ac --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_find_hash_id.c @@ -0,0 +1,38 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt_find_hash_id.c + Find hash by ID, Tom St Denis +*/ + +/** + Find a hash by ID number + @param ID The ID (not same as index) of the hash to find + @return >= 0 if found, -1 if not present +*/ +int find_hash_id(unsigned char ID) +{ + int x; + LTC_MUTEX_LOCK(<c_hash_mutex); + for (x = 0; x < TAB_SIZE; x++) { + if (hash_descriptor[x].ID == ID) { + x = (hash_descriptor[x].name == NULL) ? -1 : x; + LTC_MUTEX_UNLOCK(<c_hash_mutex); + return x; + } + } + LTC_MUTEX_UNLOCK(<c_hash_mutex); + return -1; +} + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_find_hash_oid.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_find_hash_oid.c new file mode 100644 index 000000000..026cc73da --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_find_hash_oid.c @@ -0,0 +1,33 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt_find_hash_oid.c + Find a hash, Tom St Denis +*/ + +int find_hash_oid(const unsigned long *ID, unsigned long IDlen) +{ + int x; + LTC_ARGCHK(ID != NULL); + LTC_MUTEX_LOCK(<c_hash_mutex); + for (x = 0; x < TAB_SIZE; x++) { + if (hash_descriptor[x].name != NULL && hash_descriptor[x].OIDlen == IDlen && !XMEMCMP(hash_descriptor[x].OID, ID, sizeof(unsigned long) * IDlen)) { + LTC_MUTEX_UNLOCK(<c_hash_mutex); + return x; + } + } + LTC_MUTEX_UNLOCK(<c_hash_mutex); + return -1; +} + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_find_prng.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_find_prng.c new file mode 100644 index 000000000..a0cad16f7 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_find_prng.c @@ -0,0 +1,39 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt_find_prng.c + Find a PRNG, Tom St Denis +*/ + +/** + Find a registered PRNG by name + @param name The name of the PRNG to look for + @return >= 0 if found, -1 if not present +*/ +int find_prng(const char *name) +{ + int x; + LTC_ARGCHK(name != NULL); + LTC_MUTEX_LOCK(<c_prng_mutex); + for (x = 0; x < TAB_SIZE; x++) { + if ((prng_descriptor[x].name != NULL) && XSTRCMP(prng_descriptor[x].name, name) == 0) { + LTC_MUTEX_UNLOCK(<c_prng_mutex); + return x; + } + } + LTC_MUTEX_UNLOCK(<c_prng_mutex); + return -1; +} + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_fsa.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_fsa.c new file mode 100644 index 000000000..dc2a570cf --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_fsa.c @@ -0,0 +1,56 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" +#include + +/** + @file crypt_fsa.c + LibTomCrypt FULL SPEED AHEAD!, Tom St Denis +*/ + +/* format is ltc_mp, cipher_desc, [cipher_desc], NULL, hash_desc, [hash_desc], NULL, prng_desc, [prng_desc], NULL */ +int crypt_fsa(void *mp, ...) +{ + va_list args; + void *p; + + va_start(args, mp); + if (mp != NULL) { + XMEMCPY(<c_mp, mp, sizeof(ltc_mp)); + } + + while ((p = va_arg(args, void*)) != NULL) { + if (register_cipher(p) == -1) { + va_end(args); + return CRYPT_INVALID_CIPHER; + } + } + + while ((p = va_arg(args, void*)) != NULL) { + if (register_hash(p) == -1) { + va_end(args); + return CRYPT_INVALID_HASH; + } + } + + while ((p = va_arg(args, void*)) != NULL) { + if (register_prng(p) == -1) { + va_end(args); + return CRYPT_INVALID_PRNG; + } + } + + va_end(args); + return CRYPT_OK; +} + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_hash_descriptor.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_hash_descriptor.c new file mode 100644 index 000000000..6e1103f2c --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_hash_descriptor.c @@ -0,0 +1,25 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt_hash_descriptor.c + Stores the hash descriptor table, Tom St Denis +*/ + +struct ltc_hash_descriptor hash_descriptor[TAB_SIZE] = { +{ NULL, 0, 0, 0, { 0 }, 0, NULL, NULL, NULL, NULL, NULL } +}; + +LTC_MUTEX_GLOBAL(ltc_hash_mutex) + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_hash_is_valid.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_hash_is_valid.c new file mode 100644 index 000000000..ca75f0502 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_hash_is_valid.c @@ -0,0 +1,34 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt_hash_is_valid.c + Determine if hash is valid, Tom St Denis +*/ + +/* + Test if a hash index is valid + @param idx The index of the hash to search for + @return CRYPT_OK if valid +*/ +int hash_is_valid(int idx) +{ + LTC_MUTEX_LOCK(<c_hash_mutex); + if (idx < 0 || idx >= TAB_SIZE || hash_descriptor[idx].name == NULL) { + LTC_MUTEX_UNLOCK(<c_hash_mutex); + return CRYPT_INVALID_HASH; + } + LTC_MUTEX_UNLOCK(<c_hash_mutex); + return CRYPT_OK; +} + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_inits.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_inits.c new file mode 100644 index 000000000..8042f38da --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_inits.c @@ -0,0 +1,43 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt_inits.c + + Provide math library functions for dynamic languages + like Python - Larry Bugbee, February 2013 +*/ + + +#ifdef LTM_DESC +void init_LTM(void) +{ + ltc_mp = ltm_desc; +} +#endif + +#ifdef TFM_DESC +void init_TFM(void) +{ + ltc_mp = tfm_desc; +} +#endif + +#ifdef GMP_DESC +void init_GMP(void) +{ + ltc_mp = gmp_desc; +} +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_ltc_mp_descriptor.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_ltc_mp_descriptor.c new file mode 100644 index 000000000..0f1407c5e --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_ltc_mp_descriptor.c @@ -0,0 +1,16 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/* Initialize ltc_mp to nulls, to force allocation on all platforms, including macOS. */ +ltc_math_descriptor ltc_mp = { 0 }; + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_prng_descriptor.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_prng_descriptor.c new file mode 100644 index 000000000..276047c56 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_prng_descriptor.c @@ -0,0 +1,24 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt_prng_descriptor.c + Stores the PRNG descriptors, Tom St Denis +*/ +struct ltc_prng_descriptor prng_descriptor[TAB_SIZE] = { +{ NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL } +}; + +LTC_MUTEX_GLOBAL(ltc_prng_mutex) + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_prng_is_valid.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_prng_is_valid.c new file mode 100644 index 000000000..9930a06c1 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_prng_is_valid.c @@ -0,0 +1,34 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt_prng_is_valid.c + Determine if PRNG is valid, Tom St Denis +*/ + +/* + Test if a PRNG index is valid + @param idx The index of the PRNG to search for + @return CRYPT_OK if valid +*/ +int prng_is_valid(int idx) +{ + LTC_MUTEX_LOCK(<c_prng_mutex); + if (idx < 0 || idx >= TAB_SIZE || prng_descriptor[idx].name == NULL) { + LTC_MUTEX_UNLOCK(<c_prng_mutex); + return CRYPT_INVALID_PRNG; + } + LTC_MUTEX_UNLOCK(<c_prng_mutex); + return CRYPT_OK; +} + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_prng_rng_descriptor.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_prng_rng_descriptor.c new file mode 100644 index 000000000..1a7933743 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_prng_rng_descriptor.c @@ -0,0 +1,17 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +#ifdef LTC_PRNG_ENABLE_LTC_RNG +unsigned long (*ltc_rng)(unsigned char *out, unsigned long outlen, void (*callback)(void)); +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_register_all_ciphers.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_register_all_ciphers.c new file mode 100644 index 000000000..3250a93b1 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_register_all_ciphers.c @@ -0,0 +1,100 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +/** + @file crypt_register_all_ciphers.c + + Steffen Jaeckel +*/ + +#define REGISTER_CIPHER(h) do {\ + LTC_ARGCHK(register_cipher(h) != -1); \ +} while(0) + +int register_all_ciphers(void) +{ +#ifdef LTC_RIJNDAEL +#ifdef ENCRYPT_ONLY + /* alternative would be + * register_cipher(&rijndael_enc_desc); + */ + REGISTER_CIPHER(&aes_enc_desc); +#else + /* alternative would be + * register_cipher(&rijndael_desc); + */ + REGISTER_CIPHER(&aes_desc); +#endif +#endif +#ifdef LTC_BLOWFISH + REGISTER_CIPHER(&blowfish_desc); +#endif +#ifdef LTC_XTEA + REGISTER_CIPHER(&xtea_desc); +#endif +#ifdef LTC_RC5 + REGISTER_CIPHER(&rc5_desc); +#endif +#ifdef LTC_RC6 + REGISTER_CIPHER(&rc6_desc); +#endif +#ifdef LTC_SAFERP + REGISTER_CIPHER(&saferp_desc); +#endif +#ifdef LTC_TWOFISH + REGISTER_CIPHER(&twofish_desc); +#endif +#ifdef LTC_SAFER + REGISTER_CIPHER(&safer_k64_desc); + REGISTER_CIPHER(&safer_sk64_desc); + REGISTER_CIPHER(&safer_k128_desc); + REGISTER_CIPHER(&safer_sk128_desc); +#endif +#ifdef LTC_RC2 + REGISTER_CIPHER(&rc2_desc); +#endif +#ifdef LTC_DES + REGISTER_CIPHER(&des_desc); + REGISTER_CIPHER(&des3_desc); +#endif +#ifdef LTC_CAST5 + REGISTER_CIPHER(&cast5_desc); +#endif +#ifdef LTC_NOEKEON + REGISTER_CIPHER(&noekeon_desc); +#endif +#ifdef LTC_SKIPJACK + REGISTER_CIPHER(&skipjack_desc); +#endif +#ifdef LTC_ANUBIS + REGISTER_CIPHER(&anubis_desc); +#endif +#ifdef LTC_KHAZAD + REGISTER_CIPHER(&khazad_desc); +#endif +#ifdef LTC_KSEED + REGISTER_CIPHER(&kseed_desc); +#endif +#ifdef LTC_KASUMI + REGISTER_CIPHER(&kasumi_desc); +#endif +#ifdef LTC_MULTI2 + REGISTER_CIPHER(&multi2_desc); +#endif +#ifdef LTC_CAMELLIA + REGISTER_CIPHER(&camellia_desc); +#endif + return CRYPT_OK; +} + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_register_all_hashes.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_register_all_hashes.c new file mode 100644 index 000000000..b52938943 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_register_all_hashes.c @@ -0,0 +1,99 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +/** + @file crypt_register_all_hashes.c + + Steffen Jaeckel +*/ + +#define REGISTER_HASH(h) do {\ + LTC_ARGCHK(register_hash(h) != -1); \ +} while(0) + +int register_all_hashes(void) +{ +#ifdef LTC_TIGER + REGISTER_HASH(&tiger_desc); +#endif +#ifdef LTC_MD2 + REGISTER_HASH(&md2_desc); +#endif +#ifdef LTC_MD4 + REGISTER_HASH(&md4_desc); +#endif +#ifdef LTC_MD5 + REGISTER_HASH(&md5_desc); +#endif +#ifdef LTC_SHA1 + REGISTER_HASH(&sha1_desc); +#endif +#ifdef LTC_SHA224 + REGISTER_HASH(&sha224_desc); +#endif +#ifdef LTC_SHA256 + REGISTER_HASH(&sha256_desc); +#endif +#ifdef LTC_SHA384 + REGISTER_HASH(&sha384_desc); +#endif +#ifdef LTC_SHA512 + REGISTER_HASH(&sha512_desc); +#endif +#ifdef LTC_SHA512_224 + REGISTER_HASH(&sha512_224_desc); +#endif +#ifdef LTC_SHA512_256 + REGISTER_HASH(&sha512_256_desc); +#endif +#ifdef LTC_SHA3 + REGISTER_HASH(&sha3_224_desc); + REGISTER_HASH(&sha3_256_desc); + REGISTER_HASH(&sha3_384_desc); + REGISTER_HASH(&sha3_512_desc); +#endif +#ifdef LTC_RIPEMD128 + REGISTER_HASH(&rmd128_desc); +#endif +#ifdef LTC_RIPEMD160 + REGISTER_HASH(&rmd160_desc); +#endif +#ifdef LTC_RIPEMD256 + REGISTER_HASH(&rmd256_desc); +#endif +#ifdef LTC_RIPEMD320 + REGISTER_HASH(&rmd320_desc); +#endif +#ifdef LTC_WHIRLPOOL + REGISTER_HASH(&whirlpool_desc); +#endif +#ifdef LTC_BLAKE2S + REGISTER_HASH(&blake2s_128_desc); + REGISTER_HASH(&blake2s_160_desc); + REGISTER_HASH(&blake2s_224_desc); + REGISTER_HASH(&blake2s_256_desc); +#endif +#ifdef LTC_BLAKE2S + REGISTER_HASH(&blake2b_160_desc); + REGISTER_HASH(&blake2b_256_desc); + REGISTER_HASH(&blake2b_384_desc); + REGISTER_HASH(&blake2b_512_desc); +#endif +#ifdef LTC_CHC_HASH + REGISTER_HASH(&chc_desc); + LTC_ARGCHK(chc_register(find_cipher_any("aes", 8, 16)) == CRYPT_OK); +#endif + return CRYPT_OK; +} + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_register_all_prngs.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_register_all_prngs.c new file mode 100644 index 000000000..aca8a369c --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_register_all_prngs.c @@ -0,0 +1,48 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +/** + @file crypt_register_all_prngs.c + + Steffen Jaeckel +*/ + +#define REGISTER_PRNG(h) do {\ + LTC_ARGCHK(register_prng(h) != -1); \ +} while(0) + +int register_all_prngs(void) +{ +#ifdef LTC_YARROW + REGISTER_PRNG(&yarrow_desc); +#endif +#ifdef LTC_FORTUNA + REGISTER_PRNG(&fortuna_desc); +#endif +#ifdef LTC_RC4 + REGISTER_PRNG(&rc4_desc); +#endif +#ifdef LTC_CHACHA20_PRNG + REGISTER_PRNG(&chacha20_prng_desc); +#endif +#ifdef LTC_SOBER128 + REGISTER_PRNG(&sober128_desc); +#endif +#ifdef LTC_SPRNG + REGISTER_PRNG(&sprng_desc); +#endif + + return CRYPT_OK; +} + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_register_cipher.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_register_cipher.c new file mode 100644 index 000000000..85178d23b --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_register_cipher.c @@ -0,0 +1,52 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt_register_cipher.c + Register a cipher, Tom St Denis +*/ + +/** + Register a cipher with the descriptor table + @param cipher The cipher you wish to register + @return value >= 0 if successfully added (or already present), -1 if unsuccessful +*/ +int register_cipher(const struct ltc_cipher_descriptor *cipher) +{ + int x; + + LTC_ARGCHK(cipher != NULL); + + /* is it already registered? */ + LTC_MUTEX_LOCK(<c_cipher_mutex); + for (x = 0; x < TAB_SIZE; x++) { + if (cipher_descriptor[x].name != NULL && cipher_descriptor[x].ID == cipher->ID) { + LTC_MUTEX_UNLOCK(<c_cipher_mutex); + return x; + } + } + + /* find a blank spot */ + for (x = 0; x < TAB_SIZE; x++) { + if (cipher_descriptor[x].name == NULL) { + XMEMCPY(&cipher_descriptor[x], cipher, sizeof(struct ltc_cipher_descriptor)); + LTC_MUTEX_UNLOCK(<c_cipher_mutex); + return x; + } + } + + /* no spot */ + LTC_MUTEX_UNLOCK(<c_cipher_mutex); + return -1; +} + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_register_hash.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_register_hash.c new file mode 100644 index 000000000..fc7f4e02a --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_register_hash.c @@ -0,0 +1,52 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt_register_hash.c + Register a HASH, Tom St Denis +*/ + +/** + Register a hash with the descriptor table + @param hash The hash you wish to register + @return value >= 0 if successfully added (or already present), -1 if unsuccessful +*/ +int register_hash(const struct ltc_hash_descriptor *hash) +{ + int x; + + LTC_ARGCHK(hash != NULL); + + /* is it already registered? */ + LTC_MUTEX_LOCK(<c_hash_mutex); + for (x = 0; x < TAB_SIZE; x++) { + if (XMEMCMP(&hash_descriptor[x], hash, sizeof(struct ltc_hash_descriptor)) == 0) { + LTC_MUTEX_UNLOCK(<c_hash_mutex); + return x; + } + } + + /* find a blank spot */ + for (x = 0; x < TAB_SIZE; x++) { + if (hash_descriptor[x].name == NULL) { + XMEMCPY(&hash_descriptor[x], hash, sizeof(struct ltc_hash_descriptor)); + LTC_MUTEX_UNLOCK(<c_hash_mutex); + return x; + } + } + + /* no spot */ + LTC_MUTEX_UNLOCK(<c_hash_mutex); + return -1; +} + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_register_prng.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_register_prng.c new file mode 100644 index 000000000..9cbd634d2 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_register_prng.c @@ -0,0 +1,52 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt_register_prng.c + Register a PRNG, Tom St Denis +*/ + +/** + Register a PRNG with the descriptor table + @param prng The PRNG you wish to register + @return value >= 0 if successfully added (or already present), -1 if unsuccessful +*/ +int register_prng(const struct ltc_prng_descriptor *prng) +{ + int x; + + LTC_ARGCHK(prng != NULL); + + /* is it already registered? */ + LTC_MUTEX_LOCK(<c_prng_mutex); + for (x = 0; x < TAB_SIZE; x++) { + if (XMEMCMP(&prng_descriptor[x], prng, sizeof(struct ltc_prng_descriptor)) == 0) { + LTC_MUTEX_UNLOCK(<c_prng_mutex); + return x; + } + } + + /* find a blank spot */ + for (x = 0; x < TAB_SIZE; x++) { + if (prng_descriptor[x].name == NULL) { + XMEMCPY(&prng_descriptor[x], prng, sizeof(struct ltc_prng_descriptor)); + LTC_MUTEX_UNLOCK(<c_prng_mutex); + return x; + } + } + + /* no spot */ + LTC_MUTEX_UNLOCK(<c_prng_mutex); + return -1; +} + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_sizes.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_sizes.c new file mode 100644 index 000000000..dd857ea76 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_sizes.c @@ -0,0 +1,348 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt_sizes.c + + Make various struct sizes available to dynamic languages + like Python - Larry Bugbee, February 2013 + + LB - Dec 2013 - revised to include compiler define options +*/ + + +typedef struct { + const char *name; + const unsigned int size; +} crypt_size; + +#define _SZ_STRINGIFY_S(s) { #s, sizeof(struct s) } +#define _SZ_STRINGIFY_T(s) { #s, sizeof(s) } + +static const crypt_size _crypt_sizes[] = { + /* hash state sizes */ + _SZ_STRINGIFY_S(ltc_hash_descriptor), + _SZ_STRINGIFY_T(hash_state), +#ifdef LTC_CHC_HASH + _SZ_STRINGIFY_S(chc_state), +#endif +#ifdef LTC_WHIRLPOOL + _SZ_STRINGIFY_S(whirlpool_state), +#endif +#ifdef LTC_SHA3 + _SZ_STRINGIFY_S(sha3_state), +#endif +#ifdef LTC_SHA512 + _SZ_STRINGIFY_S(sha512_state), +#endif +#ifdef LTC_SHA256 + _SZ_STRINGIFY_S(sha256_state), +#endif +#ifdef LTC_SHA1 + _SZ_STRINGIFY_S(sha1_state), +#endif +#ifdef LTC_MD5 + _SZ_STRINGIFY_S(md5_state), +#endif +#ifdef LTC_MD4 + _SZ_STRINGIFY_S(md4_state), +#endif +#ifdef LTC_MD2 + _SZ_STRINGIFY_S(md2_state), +#endif +#ifdef LTC_TIGER + _SZ_STRINGIFY_S(tiger_state), +#endif +#ifdef LTC_RIPEMD128 + _SZ_STRINGIFY_S(rmd128_state), +#endif +#ifdef LTC_RIPEMD160 + _SZ_STRINGIFY_S(rmd160_state), +#endif +#ifdef LTC_RIPEMD256 + _SZ_STRINGIFY_S(rmd256_state), +#endif +#ifdef LTC_RIPEMD320 + _SZ_STRINGIFY_S(rmd320_state), +#endif +#ifdef LTC_BLAKE2S + _SZ_STRINGIFY_S(blake2s_state), +#endif +#ifdef LTC_BLAKE2B + _SZ_STRINGIFY_S(blake2b_state), +#endif + + /* block cipher key sizes */ + _SZ_STRINGIFY_S(ltc_cipher_descriptor), + _SZ_STRINGIFY_T(symmetric_key), +#ifdef LTC_ANUBIS + _SZ_STRINGIFY_S(anubis_key), +#endif +#ifdef LTC_CAMELLIA + _SZ_STRINGIFY_S(camellia_key), +#endif +#ifdef LTC_BLOWFISH + _SZ_STRINGIFY_S(blowfish_key), +#endif +#ifdef LTC_CAST5 + _SZ_STRINGIFY_S(cast5_key), +#endif +#ifdef LTC_DES + _SZ_STRINGIFY_S(des_key), + _SZ_STRINGIFY_S(des3_key), +#endif +#ifdef LTC_KASUMI + _SZ_STRINGIFY_S(kasumi_key), +#endif +#ifdef LTC_KHAZAD + _SZ_STRINGIFY_S(khazad_key), +#endif +#ifdef LTC_KSEED + _SZ_STRINGIFY_S(kseed_key), +#endif +#ifdef LTC_MULTI2 + _SZ_STRINGIFY_S(multi2_key), +#endif +#ifdef LTC_NOEKEON + _SZ_STRINGIFY_S(noekeon_key), +#endif +#ifdef LTC_RC2 + _SZ_STRINGIFY_S(rc2_key), +#endif +#ifdef LTC_RC5 + _SZ_STRINGIFY_S(rc5_key), +#endif +#ifdef LTC_RC6 + _SZ_STRINGIFY_S(rc6_key), +#endif +#ifdef LTC_SKIPJACK + _SZ_STRINGIFY_S(skipjack_key), +#endif +#ifdef LTC_XTEA + _SZ_STRINGIFY_S(xtea_key), +#endif +#ifdef LTC_RIJNDAEL + _SZ_STRINGIFY_S(rijndael_key), +#endif +#ifdef LTC_SAFER + _SZ_STRINGIFY_S(safer_key), +#endif +#ifdef LTC_SAFERP + _SZ_STRINGIFY_S(saferp_key), +#endif +#ifdef LTC_TWOFISH + _SZ_STRINGIFY_S(twofish_key), +#endif + + /* mode sizes */ +#ifdef LTC_ECB_MODE + _SZ_STRINGIFY_T(symmetric_ECB), +#endif +#ifdef LTC_CFB_MODE + _SZ_STRINGIFY_T(symmetric_CFB), +#endif +#ifdef LTC_OFB_MODE + _SZ_STRINGIFY_T(symmetric_OFB), +#endif +#ifdef LTC_CBC_MODE + _SZ_STRINGIFY_T(symmetric_CBC), +#endif +#ifdef LTC_CTR_MODE + _SZ_STRINGIFY_T(symmetric_CTR), +#endif +#ifdef LTC_LRW_MODE + _SZ_STRINGIFY_T(symmetric_LRW), +#endif +#ifdef LTC_F8_MODE + _SZ_STRINGIFY_T(symmetric_F8), +#endif +#ifdef LTC_XTS_MODE + _SZ_STRINGIFY_T(symmetric_xts), +#endif + + /* stream cipher sizes */ +#ifdef LTC_CHACHA + _SZ_STRINGIFY_T(chacha_state), +#endif +#ifdef LTC_RC4_STREAM + _SZ_STRINGIFY_T(rc4_state), +#endif +#ifdef LTC_SOBER128_STREAM + _SZ_STRINGIFY_T(sober128_state), +#endif + + /* MAC sizes -- no states for ccm, lrw */ +#ifdef LTC_HMAC + _SZ_STRINGIFY_T(hmac_state), +#endif +#ifdef LTC_OMAC + _SZ_STRINGIFY_T(omac_state), +#endif +#ifdef LTC_PMAC + _SZ_STRINGIFY_T(pmac_state), +#endif +#ifdef LTC_POLY1305 + _SZ_STRINGIFY_T(poly1305_state), +#endif +#ifdef LTC_EAX_MODE + _SZ_STRINGIFY_T(eax_state), +#endif +#ifdef LTC_OCB_MODE + _SZ_STRINGIFY_T(ocb_state), +#endif +#ifdef LTC_OCB3_MODE + _SZ_STRINGIFY_T(ocb3_state), +#endif +#ifdef LTC_CCM_MODE + _SZ_STRINGIFY_T(ccm_state), +#endif +#ifdef LTC_GCM_MODE + _SZ_STRINGIFY_T(gcm_state), +#endif +#ifdef LTC_PELICAN + _SZ_STRINGIFY_T(pelican_state), +#endif +#ifdef LTC_XCBC + _SZ_STRINGIFY_T(xcbc_state), +#endif +#ifdef LTC_F9_MODE + _SZ_STRINGIFY_T(f9_state), +#endif +#ifdef LTC_CHACHA20POLY1305_MODE + _SZ_STRINGIFY_T(chacha20poly1305_state), +#endif + + /* asymmetric keys */ +#ifdef LTC_MRSA + _SZ_STRINGIFY_T(rsa_key), +#endif +#ifdef LTC_MDSA + _SZ_STRINGIFY_T(dsa_key), +#endif +#ifdef LTC_MDH + _SZ_STRINGIFY_T(dh_key), +#endif +#ifdef LTC_MECC + _SZ_STRINGIFY_T(ltc_ecc_set_type), + _SZ_STRINGIFY_T(ecc_point), + _SZ_STRINGIFY_T(ecc_key), +#endif +#ifdef LTC_MKAT + _SZ_STRINGIFY_T(katja_key), +#endif + + /* DER handling */ +#ifdef LTC_DER + _SZ_STRINGIFY_T(ltc_asn1_list), /* a list entry */ + _SZ_STRINGIFY_T(ltc_utctime), + _SZ_STRINGIFY_T(ltc_generalizedtime), +#endif + + /* prng state sizes */ + _SZ_STRINGIFY_S(ltc_prng_descriptor), + _SZ_STRINGIFY_T(prng_state), +#ifdef LTC_FORTUNA + _SZ_STRINGIFY_S(fortuna_prng), +#endif +#ifdef LTC_CHACHA20_PRNG + _SZ_STRINGIFY_S(chacha20_prng), +#endif +#ifdef LTC_RC4 + _SZ_STRINGIFY_S(rc4_prng), +#endif +#ifdef LTC_SOBER128 + _SZ_STRINGIFY_S(sober128_prng), +#endif +#ifdef LTC_YARROW + _SZ_STRINGIFY_S(yarrow_prng), +#endif + /* sprng has no state as it uses other potentially available sources */ + /* like /dev/random. See Developers Guide for more info. */ + +#ifdef LTC_ADLER32 + _SZ_STRINGIFY_T(adler32_state), +#endif +#ifdef LTC_CRC32 + _SZ_STRINGIFY_T(crc32_state), +#endif + + _SZ_STRINGIFY_T(ltc_mp_digit), + _SZ_STRINGIFY_T(ltc_math_descriptor) + +}; + +/* crypt_get_size() + * sizeout will be the size (bytes) of the named struct or union + * return -1 if named item not found + */ +int crypt_get_size(const char* namein, unsigned int *sizeout) { + int i; + int count = sizeof(_crypt_sizes) / sizeof(_crypt_sizes[0]); + for (i=0; i *names_list_size) { + return -1; + } + /* build the names list */ + ptr = names_list; + for (i=0; i total_len) return -1; + total_len -= number_len; + ptr += number_len; + } + /* to remove the trailing new-line */ + ptr -= 1; + *ptr = 0; + } + return 0; +} + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_unregister_cipher.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_unregister_cipher.c new file mode 100644 index 000000000..b57c73652 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_unregister_cipher.c @@ -0,0 +1,43 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt_unregister_cipher.c + Unregister a cipher, Tom St Denis +*/ + +/** + Unregister a cipher from the descriptor table + @param cipher The cipher descriptor to remove + @return CRYPT_OK on success +*/ +int unregister_cipher(const struct ltc_cipher_descriptor *cipher) +{ + int x; + + LTC_ARGCHK(cipher != NULL); + + /* is it already registered? */ + LTC_MUTEX_LOCK(<c_cipher_mutex); + for (x = 0; x < TAB_SIZE; x++) { + if (XMEMCMP(&cipher_descriptor[x], cipher, sizeof(struct ltc_cipher_descriptor)) == 0) { + cipher_descriptor[x].name = NULL; + cipher_descriptor[x].ID = 255; + LTC_MUTEX_UNLOCK(<c_cipher_mutex); + return CRYPT_OK; + } + } + LTC_MUTEX_UNLOCK(<c_cipher_mutex); + return CRYPT_ERROR; +} + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_unregister_hash.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_unregister_hash.c new file mode 100644 index 000000000..dbbff330b --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_unregister_hash.c @@ -0,0 +1,42 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt_unregister_hash.c + Unregister a hash, Tom St Denis +*/ + +/** + Unregister a hash from the descriptor table + @param hash The hash descriptor to remove + @return CRYPT_OK on success +*/ +int unregister_hash(const struct ltc_hash_descriptor *hash) +{ + int x; + + LTC_ARGCHK(hash != NULL); + + /* is it already registered? */ + LTC_MUTEX_LOCK(<c_hash_mutex); + for (x = 0; x < TAB_SIZE; x++) { + if (XMEMCMP(&hash_descriptor[x], hash, sizeof(struct ltc_hash_descriptor)) == 0) { + hash_descriptor[x].name = NULL; + LTC_MUTEX_UNLOCK(<c_hash_mutex); + return CRYPT_OK; + } + } + LTC_MUTEX_UNLOCK(<c_hash_mutex); + return CRYPT_ERROR; +} + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_unregister_prng.c b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_unregister_prng.c new file mode 100644 index 000000000..f7606effd --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/crypt/crypt_unregister_prng.c @@ -0,0 +1,42 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file crypt_unregister_prng.c + Unregister a PRNG, Tom St Denis +*/ + +/** + Unregister a PRNG from the descriptor table + @param prng The PRNG descriptor to remove + @return CRYPT_OK on success +*/ +int unregister_prng(const struct ltc_prng_descriptor *prng) +{ + int x; + + LTC_ARGCHK(prng != NULL); + + /* is it already registered? */ + LTC_MUTEX_LOCK(<c_prng_mutex); + for (x = 0; x < TAB_SIZE; x++) { + if (XMEMCMP(&prng_descriptor[x], prng, sizeof(struct ltc_prng_descriptor)) == 0) { + prng_descriptor[x].name = NULL; + LTC_MUTEX_UNLOCK(<c_prng_mutex); + return CRYPT_OK; + } + } + LTC_MUTEX_UNLOCK(<c_prng_mutex); + return CRYPT_ERROR; +} + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/error_to_string.c b/fsbl/lib/libtomcrypt/src/misc/error_to_string.c new file mode 100644 index 000000000..707f83594 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/error_to_string.c @@ -0,0 +1,79 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +/** + @file error_to_string.c + Convert error codes to ASCII strings, Tom St Denis +*/ + +static const char * const err_2_str[] = +{ + "CRYPT_OK", + "CRYPT_ERROR", + "Non-fatal 'no-operation' requested.", + + "Invalid key size.", + "Invalid number of rounds for block cipher.", + "Algorithm failed test vectors.", + + "Buffer overflow.", + "Invalid input packet.", + + "Invalid number of bits for a PRNG.", + "Error reading the PRNG.", + + "Invalid cipher specified.", + "Invalid hash specified.", + "Invalid PRNG specified.", + + "Out of memory.", + + "Invalid PK key or key type specified for function.", + "A private PK key is required.", + + "Invalid argument provided.", + "File Not Found", + + "Invalid PK type.", + + "An overflow of a value was detected/prevented.", + + "UNUSED1.", + + "The input was longer than expected.", + + "Invalid sized parameter.", + + "Invalid size for prime.", + + "Invalid padding.", + + "Hash applied to too many bits.", +}; + +/** + Convert an LTC error code to ASCII + @param err The error code + @return A pointer to the ASCII NUL terminated string for the error or "Invalid error code." if the err code was not valid. +*/ +const char *error_to_string(int err) +{ + if (err < 0 || err >= (int)(sizeof(err_2_str)/sizeof(err_2_str[0]))) { + return "Invalid error code."; + } else { + return err_2_str[err]; + } +} + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/hkdf/hkdf.c b/fsbl/lib/libtomcrypt/src/misc/hkdf/hkdf.c new file mode 100644 index 000000000..0db4ed980 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/hkdf/hkdf.c @@ -0,0 +1,143 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include +#include +#include + +#include "tomcrypt.h" + +#ifdef LTC_HKDF + +/* This is mostly just a wrapper around hmac_memory */ +int hkdf_extract(int hash_idx, const unsigned char *salt, unsigned long saltlen, + const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + /* libtomcrypt chokes on a zero length HMAC key, so we need to check for + that. HMAC specifies that keys shorter than the hash's blocksize are + 0 padded to the block size. HKDF specifies that a NULL salt is to be + substituted with a salt comprised of hashLen 0 bytes. HMAC's padding + means that in either case the HMAC is actually using a blocksize long + zero filled key. Unless blocksize < hashLen (which wouldn't make any + sense), we can use a single 0 byte as the HMAC key and still generate + valid results for HKDF. */ + if (salt == NULL || saltlen == 0) { + return hmac_memory(hash_idx, (const unsigned char *)"", 1, in, inlen, out, outlen); + } else { + return hmac_memory(hash_idx, salt, saltlen, in, inlen, out, outlen); + } +} + +int hkdf_expand(int hash_idx, const unsigned char *info, unsigned long infolen, + const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long outlen) +{ + unsigned long hashsize; + int err; + unsigned char N; + unsigned long Noutlen, outoff; + + unsigned char *T, *dat; + unsigned long Tlen, datlen; + + /* make sure hash descriptor is valid */ + if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { + return err; + } + + hashsize = hash_descriptor[hash_idx].hashsize; + + /* RFC5869 parameter restrictions */ + if (inlen < hashsize || outlen > hashsize * 255) + return CRYPT_INVALID_ARG; + if (info == NULL && infolen != 0) + return CRYPT_INVALID_ARG; + LTC_ARGCHK(out != NULL); + + Tlen = hashsize + infolen + 1; + T = XMALLOC(Tlen); /* Replace with static buffer? */ + if (T == NULL) { + return CRYPT_MEM; + } + if (info != NULL) { + XMEMCPY(T + hashsize, info, infolen); + } + + /* HMAC data T(1) doesn't include a previous hash value */ + dat = T + hashsize; + datlen = Tlen - hashsize; + + N = 0; + outoff = 0; /* offset in out to write to */ + while (1) { /* an exit condition breaks mid-loop */ + Noutlen = MIN(hashsize, outlen - outoff); + T[Tlen - 1] = ++N; + if ((err = hmac_memory(hash_idx, in, inlen, dat, datlen, + out + outoff, &Noutlen)) != CRYPT_OK) { + zeromem(T, Tlen); + XFREE(T); + return err; + } + outoff += Noutlen; + + if (outoff >= outlen) /* loop exit condition */ + break; + + /* All subsequent HMAC data T(N) DOES include the previous hash value */ + XMEMCPY(T, out + hashsize * (N-1), hashsize); + if (N == 1) { + dat = T; + datlen = Tlen; + } + } + zeromem(T, Tlen); + XFREE(T); + return CRYPT_OK; +} + +/* all in one step */ +int hkdf(int hash_idx, const unsigned char *salt, unsigned long saltlen, + const unsigned char *info, unsigned long infolen, + const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long outlen) +{ + unsigned long hashsize; + int err; + unsigned char *extracted; + + /* make sure hash descriptor is valid */ + if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { + return err; + } + + hashsize = hash_descriptor[hash_idx].hashsize; + + extracted = XMALLOC(hashsize); /* replace with static buffer? */ + if (extracted == NULL) { + return CRYPT_MEM; + } + if ((err = hkdf_extract(hash_idx, salt, saltlen, in, inlen, extracted, &hashsize)) != 0) { + zeromem(extracted, hashsize); + XFREE(extracted); + return err; + } + err = hkdf_expand(hash_idx, info, infolen, extracted, hashsize, out, outlen); + zeromem(extracted, hashsize); + XFREE(extracted); + return err; +} +#endif /* LTC_HKDF */ + + +/* vim: set ts=2 sw=2 et ai si: */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/hkdf/hkdf_test.c b/fsbl/lib/libtomcrypt/src/misc/hkdf/hkdf_test.c new file mode 100644 index 000000000..0c5825580 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/hkdf/hkdf_test.c @@ -0,0 +1,294 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file hkdf_test.c + LTC_HKDF support, self-test, Steffen Jaeckel +*/ + +#ifdef LTC_HKDF + +/* + TEST CASES SOURCE: + +Internet Engineering Task Force (IETF) H. Krawczyk +Request for Comments: 5869 IBM Research +Category: Informational P. Eronen +ISSN: 2070-1721 Nokia + May 2010 +Appendix A. Test Vectors +*/ + +/** + LTC_HKDF self-test + @return CRYPT_OK if successful, CRYPT_NOP if tests have been disabled. +*/ +int hkdf_test(void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + unsigned char OKM[82]; + int i; + + static const struct hkdf_test_case { + int num; + const char* Hash; + unsigned char IKM[80]; + unsigned long IKM_l; + unsigned char salt[80]; + unsigned long salt_l; + unsigned char info[80]; + unsigned long info_l; + unsigned char PRK[32]; + unsigned long PRK_l; + unsigned char OKM[82]; + unsigned long OKM_l; + } cases[] = { +#ifdef LTC_SHA256 + /* + Basic test case with SHA-256 + + Hash = SHA-256 + IKM = 0x0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b (22 octets) + salt = 0x000102030405060708090a0b0c (13 octets) + info = 0xf0f1f2f3f4f5f6f7f8f9 (10 octets) + L = 42 + + PRK = 0x077709362c2e32df0ddc3f0dc47bba63 + 90b6c73bb50f9c3122ec844ad7c2b3e5 (32 octets) + OKM = 0x3cb25f25faacd57a90434f64d0362f2a + 2d2d0a90cf1a5a4c5db02d56ecc4c5bf + 34007208d5b887185865 (42 octets) + */ + {1, "sha256", + {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 22, + {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c}, 13, + {0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, + 0xf8, 0xf9}, 10, + {0x07, 0x77, 0x09, 0x36, 0x2c, 0x2e, 0x32, 0xdf, + 0x0d, 0xdc, 0x3f, 0x0d, 0xc4, 0x7b, 0xba, 0x63, + 0x90, 0xb6, 0xc7, 0x3b, 0xb5, 0x0f, 0x9c, 0x31, + 0x22, 0xec, 0x84, 0x4a, 0xd7, 0xc2, 0xb3, 0xe5}, 32, + {0x3c, 0xb2, 0x5f, 0x25, 0xfa, 0xac, 0xd5, 0x7a, + 0x90, 0x43, 0x4f, 0x64, 0xd0, 0x36, 0x2f, 0x2a, + 0x2d, 0x2d, 0x0a, 0x90, 0xcf, 0x1a, 0x5a, 0x4c, + 0x5d, 0xb0, 0x2d, 0x56, 0xec, 0xc4, 0xc5, 0xbf, + 0x34, 0x00, 0x72, 0x08, 0xd5, 0xb8, 0x87, 0x18, + 0x58, 0x65}, 42}, +#ifdef LTC_TEST_EXT + /* Test with SHA-256 and longer inputs/outputs */ + {2, "sha256", + {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f}, 80, + {0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, + 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, + 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, + 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, + 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, + 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf}, 80, + {0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, + 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, + 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, + 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff}, 80, + {0x06, 0xa6, 0xb8, 0x8c, 0x58, 0x53, 0x36, 0x1a, + 0x06, 0x10, 0x4c, 0x9c, 0xeb, 0x35, 0xb4, 0x5c, + 0xef, 0x76, 0x00, 0x14, 0x90, 0x46, 0x71, 0x01, + 0x4a, 0x19, 0x3f, 0x40, 0xc1, 0x5f, 0xc2, 0x44}, 32, + {0xb1, 0x1e, 0x39, 0x8d, 0xc8, 0x03, 0x27, 0xa1, + 0xc8, 0xe7, 0xf7, 0x8c, 0x59, 0x6a, 0x49, 0x34, + 0x4f, 0x01, 0x2e, 0xda, 0x2d, 0x4e, 0xfa, 0xd8, + 0xa0, 0x50, 0xcc, 0x4c, 0x19, 0xaf, 0xa9, 0x7c, + 0x59, 0x04, 0x5a, 0x99, 0xca, 0xc7, 0x82, 0x72, + 0x71, 0xcb, 0x41, 0xc6, 0x5e, 0x59, 0x0e, 0x09, + 0xda, 0x32, 0x75, 0x60, 0x0c, 0x2f, 0x09, 0xb8, + 0x36, 0x77, 0x93, 0xa9, 0xac, 0xa3, 0xdb, 0x71, + 0xcc, 0x30, 0xc5, 0x81, 0x79, 0xec, 0x3e, 0x87, + 0xc1, 0x4c, 0x01, 0xd5, 0xc1, 0xf3, 0x43, 0x4f, + 0x1d, 0x87}, 82}, + /* Test with SHA-256 and zero length salt/info */ + {3, "sha256", + {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 22, + {0}, 0, + {0}, 0, + {0x19, 0xef, 0x24, 0xa3, 0x2c, 0x71, 0x7b, 0x16, + 0x7f, 0x33, 0xa9, 0x1d, 0x6f, 0x64, 0x8b, 0xdf, + 0x96, 0x59, 0x67, 0x76, 0xaf, 0xdb, 0x63, 0x77, + 0xac, 0x43, 0x4c, 0x1c, 0x29, 0x3c, 0xcb, 0x04}, 32, + {0x8d, 0xa4, 0xe7, 0x75, 0xa5, 0x63, 0xc1, 0x8f, + 0x71, 0x5f, 0x80, 0x2a, 0x06, 0x3c, 0x5a, 0x31, + 0xb8, 0xa1, 0x1f, 0x5c, 0x5e, 0xe1, 0x87, 0x9e, + 0xc3, 0x45, 0x4e, 0x5f, 0x3c, 0x73, 0x8d, 0x2d, + 0x9d, 0x20, 0x13, 0x95, 0xfa, 0xa4, 0xb6, 0x1a, + 0x96, 0xc8}, 42}, +#endif /* LTC_TEST_EXT */ +#endif /* LTC_SHA256 */ +#ifdef LTC_SHA1 + /* Basic test case with SHA-1 */ + {4, "sha1", + {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b}, 11, + {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c}, 13, + {0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, + 0xf8, 0xf9}, 10, + {0x9b, 0x6c, 0x18, 0xc4, 0x32, 0xa7, 0xbf, 0x8f, + 0x0e, 0x71, 0xc8, 0xeb, 0x88, 0xf4, 0xb3, 0x0b, + 0xaa, 0x2b, 0xa2, 0x43}, 20, + {0x08, 0x5a, 0x01, 0xea, 0x1b, 0x10, 0xf3, 0x69, + 0x33, 0x06, 0x8b, 0x56, 0xef, 0xa5, 0xad, 0x81, + 0xa4, 0xf1, 0x4b, 0x82, 0x2f, 0x5b, 0x09, 0x15, + 0x68, 0xa9, 0xcd, 0xd4, 0xf1, 0x55, 0xfd, 0xa2, + 0xc2, 0x2e, 0x42, 0x24, 0x78, 0xd3, 0x05, 0xf3, + 0xf8, 0x96}, 42}, +#ifdef LTC_TEST_EXT + /* Test with SHA-1 and longer inputs/outputs */ + {5, "sha1", + {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, + 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, + 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, + 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, + 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f}, 80, + {0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, + 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, + 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, + 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, + 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, + 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, + 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, + 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf}, 80, + {0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, + 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, + 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, + 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, + 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, + 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, + 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff}, 80, + {0x8a, 0xda, 0xe0, 0x9a, 0x2a, 0x30, 0x70, 0x59, + 0x47, 0x8d, 0x30, 0x9b, 0x26, 0xc4, 0x11, 0x5a, + 0x22, 0x4c, 0xfa, 0xf6}, 20, + {0x0b, 0xd7, 0x70, 0xa7, 0x4d, 0x11, 0x60, 0xf7, + 0xc9, 0xf1, 0x2c, 0xd5, 0x91, 0x2a, 0x06, 0xeb, + 0xff, 0x6a, 0xdc, 0xae, 0x89, 0x9d, 0x92, 0x19, + 0x1f, 0xe4, 0x30, 0x56, 0x73, 0xba, 0x2f, 0xfe, + 0x8f, 0xa3, 0xf1, 0xa4, 0xe5, 0xad, 0x79, 0xf3, + 0xf3, 0x34, 0xb3, 0xb2, 0x02, 0xb2, 0x17, 0x3c, + 0x48, 0x6e, 0xa3, 0x7c, 0xe3, 0xd3, 0x97, 0xed, + 0x03, 0x4c, 0x7f, 0x9d, 0xfe, 0xb1, 0x5c, 0x5e, + 0x92, 0x73, 0x36, 0xd0, 0x44, 0x1f, 0x4c, 0x43, + 0x00, 0xe2, 0xcf, 0xf0, 0xd0, 0x90, 0x0b, 0x52, + 0xd3, 0xb4}, 82}, + /* Test with SHA-1 and zero-length salt/info */ + {6, "sha1", + {0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b}, 22, + {0}, 0, + {0}, 0, + {0xda, 0x8c, 0x8a, 0x73, 0xc7, 0xfa, 0x77, 0x28, + 0x8e, 0xc6, 0xf5, 0xe7, 0xc2, 0x97, 0x78, 0x6a, + 0xa0, 0xd3, 0x2d, 0x01}, 20, + {0x0a, 0xc1, 0xaf, 0x70, 0x02, 0xb3, 0xd7, 0x61, + 0xd1, 0xe5, 0x52, 0x98, 0xda, 0x9d, 0x05, 0x06, + 0xb9, 0xae, 0x52, 0x05, 0x72, 0x20, 0xa3, 0x06, + 0xe0, 0x7b, 0x6b, 0x87, 0xe8, 0xdf, 0x21, 0xd0, + 0xea, 0x00, 0x03, 0x3d, 0xe0, 0x39, 0x84, 0xd3, + 0x49, 0x18}, 42}, + /* Test with SHA-1, salt not provided (defaults to HashLen zero octets), + zero-length info */ + {7, "sha1", + {0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, + 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c}, 22, + {0}, 0, /* pass a null pointer */ + {0}, 0, + {0x2a, 0xdc, 0xca, 0xda, 0x18, 0x77, 0x9e, 0x7c, + 0x20, 0x77, 0xad, 0x2e, 0xb1, 0x9d, 0x3f, 0x3e, + 0x73, 0x13, 0x85, 0xdd}, 20, + {0x2c, 0x91, 0x11, 0x72, 0x04, 0xd7, 0x45, 0xf3, + 0x50, 0x0d, 0x63, 0x6a, 0x62, 0xf6, 0x4f, 0x0a, + 0xb3, 0xba, 0xe5, 0x48, 0xaa, 0x53, 0xd4, 0x23, + 0xb0, 0xd1, 0xf2, 0x7e, 0xbb, 0xa6, 0xf5, 0xe5, + 0x67, 0x3a, 0x08, 0x1d, 0x70, 0xcc, 0xe7, 0xac, + 0xfc, 0x48}, 42}, +#endif /* LTC_TEST_EXT */ +#endif /* LTC_SHA1 */ + }; + + int err; + int tested=0,failed=0; + for(i=0; i < (int)(sizeof(cases) / sizeof(cases[0])); i++) { + int hash = find_hash(cases[i].Hash); + if (hash == -1) continue; + ++tested; + if((err = hkdf(hash, cases[i].salt, cases[i].salt_l, + cases[i].info, cases[i].info_l, + cases[i].IKM, cases[i].IKM_l, + OKM, cases[i].OKM_l)) != CRYPT_OK) { +#if defined(LTC_TEST_DBG) && (LTC_TEST_DBG > 1) + printf("LTC_HKDF-%s test #%d, %s\n", cases[i].Hash, i, error_to_string(err)); +#endif + return err; + } + + if(compare_testvector(OKM, cases[i].OKM_l, cases[i].OKM, (size_t)cases[i].OKM_l, "HKDF", cases[i].num)) { + failed++; + } + } + + if (failed != 0) { + return CRYPT_FAIL_TESTVECTOR; + } else if (tested == 0) { + return CRYPT_NOP; + } else { + return CRYPT_OK; + } + #endif +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/mem_neq.c b/fsbl/lib/libtomcrypt/src/misc/mem_neq.c new file mode 100644 index 000000000..fbd0cce1c --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/mem_neq.c @@ -0,0 +1,63 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file mem_neq.c + Compare two blocks of memory for inequality in constant time. + Steffen Jaeckel +*/ + +/** + Compare two blocks of memory for inequality in constant time. + + The usage is similar to that of standard memcmp, but you can only test + if the memory is equal or not - you can not determine by how much the + first different byte differs. + + This function shall be used to compare results of cryptographic + operations where inequality means most likely usage of a wrong key. + The execution time has therefore to be constant as otherwise + timing attacks could be possible. + + @param a The first memory region + @param b The second memory region + @param len The length of the area to compare (octets) + + @return 0 when a and b are equal for len bytes, 1 they are not equal. +*/ +int mem_neq(const void *a, const void *b, size_t len) +{ + unsigned char ret = 0; + const unsigned char* pa; + const unsigned char* pb; + + LTC_ARGCHK(a != NULL); + LTC_ARGCHK(b != NULL); + + pa = a; + pb = b; + + while (len-- > 0) { + ret |= *pa ^ *pb; + ++pa; + ++pb; + } + + ret |= ret >> 4; + ret |= ret >> 2; + ret |= ret >> 1; + ret &= 1; + + return ret; +} + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/pk_get_oid.c b/fsbl/lib/libtomcrypt/src/misc/pk_get_oid.c new file mode 100644 index 000000000..4f75c5e42 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/pk_get_oid.c @@ -0,0 +1,44 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +#ifdef LTC_DER +static const oid_st rsa_oid = { + { 1, 2, 840, 113549, 1, 1, 1 }, + 7, +}; + +static const oid_st dsa_oid = { + { 1, 2, 840, 10040, 4, 1 }, + 6, +}; + +/* + Returns the OID of the public key algorithm. + @return CRYPT_OK if valid +*/ +int pk_get_oid(int pk, oid_st *st) +{ + switch (pk) { + case PKA_RSA: + XMEMCPY(st, &rsa_oid, sizeof(*st)); + break; + case PKA_DSA: + XMEMCPY(st, &dsa_oid, sizeof(*st)); + break; + default: + return CRYPT_INVALID_ARG; + } + return CRYPT_OK; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/pkcs5/pkcs_5_1.c b/fsbl/lib/libtomcrypt/src/misc/pkcs5/pkcs_5_1.c new file mode 100644 index 000000000..10325de22 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/pkcs5/pkcs_5_1.c @@ -0,0 +1,187 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file pkcs_5_1.c + PKCS #5, Algorithm #1, Tom St Denis +*/ +#ifdef LTC_PKCS_5 +/** + Execute PKCS #5 v1 in strict or OpenSSL EVP_BytesToKey()-compat mode. + + PKCS#5 v1 specifies that the output key length can be no larger than + the hash output length. OpenSSL unilaterally extended that by repeating + the hash process on a block-by-block basis for as long as needed to make + bigger keys. If you want to be compatible with KDF for e.g. "openssl enc", + you'll want that. + + If you want strict PKCS behavior, turn openssl_compat off. Or (more + likely), use one of the convenience functions below. + + @param password The password (or key) + @param password_len The length of the password (octet) + @param salt The salt (or nonce) which is 8 octets long + @param iteration_count The PKCS #5 v1 iteration count + @param hash_idx The index of the hash desired + @param out [out] The destination for this algorithm + @param outlen [in/out] The max size and resulting size of the algorithm output + @param openssl_compat [in] Whether or not to grow the key to the buffer size ala OpenSSL + @return CRYPT_OK if successful +*/ +static int _pkcs_5_alg1_common(const unsigned char *password, + unsigned long password_len, + const unsigned char *salt, + int iteration_count, int hash_idx, + unsigned char *out, unsigned long *outlen, + int openssl_compat) +{ + int err; + unsigned long x; + hash_state *md; + unsigned char *buf; + /* Storage vars in case we need to support > hashsize (OpenSSL compat) */ + unsigned long block = 0, iter; + /* How many bytes to put in the outbut buffer (convenience calc) */ + unsigned long outidx = 0, nb = 0; + + LTC_ARGCHK(password != NULL); + LTC_ARGCHK(salt != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* test hash IDX */ + if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { + return err; + } + + /* allocate memory */ + md = XMALLOC(sizeof(hash_state)); + buf = XMALLOC(MAXBLOCKSIZE); + if (md == NULL || buf == NULL) { + if (md != NULL) { + XFREE(md); + } + if (buf != NULL) { + XFREE(buf); + } + return CRYPT_MEM; + } + + while(block * hash_descriptor[hash_idx].hashsize < *outlen) { + + /* hash initial (maybe previous hash) + password + salt */ + if ((err = hash_descriptor[hash_idx].init(md)) != CRYPT_OK) { + goto LBL_ERR; + } + /* in OpenSSL mode, we first hash the previous result for blocks 2-n */ + if (openssl_compat && block) { + if ((err = hash_descriptor[hash_idx].process(md, buf, hash_descriptor[hash_idx].hashsize)) != CRYPT_OK) { + goto LBL_ERR; + } + } + if ((err = hash_descriptor[hash_idx].process(md, password, password_len)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = hash_descriptor[hash_idx].process(md, salt, 8)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = hash_descriptor[hash_idx].done(md, buf)) != CRYPT_OK) { + goto LBL_ERR; + } + + iter = iteration_count; + while (--iter) { + /* code goes here. */ + x = MAXBLOCKSIZE; + if ((err = hash_memory(hash_idx, buf, hash_descriptor[hash_idx].hashsize, buf, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + } + + /* limit the size of the copy to however many bytes we have left in + the output buffer (and how many bytes we have to copy) */ + outidx = block*hash_descriptor[hash_idx].hashsize; + nb = hash_descriptor[hash_idx].hashsize; + if(outidx+nb > *outlen) + nb = *outlen - outidx; + if(nb > 0) + XMEMCPY(out+outidx, buf, nb); + + block++; + if (!openssl_compat) + break; + } + /* In strict mode, we always return the hashsize, in compat we filled it + as much as was requested, so we leave it alone. */ + if(!openssl_compat) + *outlen = hash_descriptor[hash_idx].hashsize; + + err = CRYPT_OK; +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(buf, MAXBLOCKSIZE); + zeromem(md, sizeof(hash_state)); +#endif + + XFREE(buf); + XFREE(md); + + return err; +} + +/** + Execute PKCS #5 v1 - Strict mode (no OpenSSL-compatible extension) + @param password The password (or key) + @param password_len The length of the password (octet) + @param salt The salt (or nonce) which is 8 octets long + @param iteration_count The PKCS #5 v1 iteration count + @param hash_idx The index of the hash desired + @param out [out] The destination for this algorithm + @param outlen [in/out] The max size and resulting size of the algorithm output + @return CRYPT_OK if successful +*/ +int pkcs_5_alg1(const unsigned char *password, unsigned long password_len, + const unsigned char *salt, + int iteration_count, int hash_idx, + unsigned char *out, unsigned long *outlen) +{ + return _pkcs_5_alg1_common(password, password_len, salt, iteration_count, + hash_idx, out, outlen, 0); +} + +/** + Execute PKCS #5 v1 - OpenSSL-extension-compatible mode + + Use this one if you need to derive keys as "openssl enc" does by default. + OpenSSL (for better or worse), uses MD5 as the hash and iteration_count=1. + @param password The password (or key) + @param password_len The length of the password (octet) + @param salt The salt (or nonce) which is 8 octets long + @param iteration_count The PKCS #5 v1 iteration count + @param hash_idx The index of the hash desired + @param out [out] The destination for this algorithm + @param outlen [in/out] The max size and resulting size of the algorithm output + @return CRYPT_OK if successful +*/ +int pkcs_5_alg1_openssl(const unsigned char *password, + unsigned long password_len, + const unsigned char *salt, + int iteration_count, int hash_idx, + unsigned char *out, unsigned long *outlen) +{ + return _pkcs_5_alg1_common(password, password_len, salt, iteration_count, + hash_idx, out, outlen, 1); +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/pkcs5/pkcs_5_2.c b/fsbl/lib/libtomcrypt/src/misc/pkcs5/pkcs_5_2.c new file mode 100644 index 000000000..2265bcb27 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/pkcs5/pkcs_5_2.c @@ -0,0 +1,127 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file pkcs_5_2.c + PKCS #5, Algorithm #2, Tom St Denis +*/ +#ifdef LTC_PKCS_5 + +/** + Execute PKCS #5 v2 + @param password The input password (or key) + @param password_len The length of the password (octets) + @param salt The salt (or nonce) + @param salt_len The length of the salt (octets) + @param iteration_count # of iterations desired for PKCS #5 v2 [read specs for more] + @param hash_idx The index of the hash desired + @param out [out] The destination for this algorithm + @param outlen [in/out] The max size and resulting size of the algorithm output + @return CRYPT_OK if successful +*/ +int pkcs_5_alg2(const unsigned char *password, unsigned long password_len, + const unsigned char *salt, unsigned long salt_len, + int iteration_count, int hash_idx, + unsigned char *out, unsigned long *outlen) +{ + int err, itts; + ulong32 blkno; + unsigned long stored, left, x, y; + unsigned char *buf[2]; + hmac_state *hmac; + + LTC_ARGCHK(password != NULL); + LTC_ARGCHK(salt != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* test hash IDX */ + if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { + return err; + } + + buf[0] = XMALLOC(MAXBLOCKSIZE * 2); + hmac = XMALLOC(sizeof(hmac_state)); + if (hmac == NULL || buf[0] == NULL) { + if (hmac != NULL) { + XFREE(hmac); + } + if (buf[0] != NULL) { + XFREE(buf[0]); + } + return CRYPT_MEM; + } + /* buf[1] points to the second block of MAXBLOCKSIZE bytes */ + buf[1] = buf[0] + MAXBLOCKSIZE; + + left = *outlen; + blkno = 1; + stored = 0; + while (left != 0) { + /* process block number blkno */ + zeromem(buf[0], MAXBLOCKSIZE*2); + + /* store current block number and increment for next pass */ + STORE32H(blkno, buf[1]); + ++blkno; + + /* get PRF(P, S||int(blkno)) */ + if ((err = hmac_init(hmac, hash_idx, password, password_len)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = hmac_process(hmac, salt, salt_len)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = hmac_process(hmac, buf[1], 4)) != CRYPT_OK) { + goto LBL_ERR; + } + x = MAXBLOCKSIZE; + if ((err = hmac_done(hmac, buf[0], &x)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* now compute repeated and XOR it in buf[1] */ + XMEMCPY(buf[1], buf[0], x); + for (itts = 1; itts < iteration_count; ++itts) { + if ((err = hmac_memory(hash_idx, password, password_len, buf[0], x, buf[0], &x)) != CRYPT_OK) { + goto LBL_ERR; + } + for (y = 0; y < x; y++) { + buf[1][y] ^= buf[0][y]; + } + } + + /* now emit upto x bytes of buf[1] to output */ + for (y = 0; y < x && left != 0; ++y) { + out[stored++] = buf[1][y]; + --left; + } + } + *outlen = stored; + + err = CRYPT_OK; +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(buf[0], MAXBLOCKSIZE*2); + zeromem(hmac, sizeof(hmac_state)); +#endif + + XFREE(hmac); + XFREE(buf[0]); + + return err; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/pkcs5/pkcs_5_test.c b/fsbl/lib/libtomcrypt/src/misc/pkcs5/pkcs_5_test.c new file mode 100644 index 000000000..f6e413b28 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/pkcs5/pkcs_5_test.c @@ -0,0 +1,231 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file hkdf_test.c + PKCS #5 support, self-test, Steffen Jaeckel +*/ + +#ifdef LTC_PKCS_5 + +/* + TEST CASES SOURCE: + +Internet Engineering Task Force (IETF) S. Josefsson +Request for Comments: 6070 SJD AB +Category: Informational January 2011 +ISSN: 2070-1721 +*/ + +/** + PKCS #5 self-test + @return CRYPT_OK if successful, CRYPT_NOP if tests have been disabled. +*/ +int pkcs_5_test (void) +{ + #ifndef LTC_TEST + return CRYPT_NOP; + #else + + typedef struct { + const char* P; + unsigned long P_len; + const char* S; + unsigned long S_len; + int c; + unsigned long dkLen; + unsigned char DK[40]; + } case_item; + + static const case_item cases_5_2[] = { + { + "password", + 8, + "salt", + 4, + 1, + 20, + { 0x0c, 0x60, 0xc8, 0x0f, 0x96, 0x1f, 0x0e, 0x71, + 0xf3, 0xa9, 0xb5, 0x24, 0xaf, 0x60, 0x12, 0x06, + 0x2f, 0xe0, 0x37, 0xa6 } + }, + { + "password", + 8, + "salt", + 4, + 2, + 20, + { 0xea, 0x6c, 0x01, 0x4d, 0xc7, 0x2d, 0x6f, 0x8c, + 0xcd, 0x1e, 0xd9, 0x2a, 0xce, 0x1d, 0x41, 0xf0, + 0xd8, 0xde, 0x89, 0x57 } + }, +#ifdef LTC_TEST_EXT + { + "password", + 8, + "salt", + 4, + 4096, + 20, + { 0x4b, 0x00, 0x79, 0x01, 0xb7, 0x65, 0x48, 0x9a, + 0xbe, 0xad, 0x49, 0xd9, 0x26, 0xf7, 0x21, 0xd0, + 0x65, 0xa4, 0x29, 0xc1 } + }, + { + "password", + 8, + "salt", + 4, + 16777216, + 20, + { 0xee, 0xfe, 0x3d, 0x61, 0xcd, 0x4d, 0xa4, 0xe4, + 0xe9, 0x94, 0x5b, 0x3d, 0x6b, 0xa2, 0x15, 0x8c, + 0x26, 0x34, 0xe9, 0x84 } + }, + { + "passwordPASSWORDpassword", + 25, + "saltSALTsaltSALTsaltSALTsaltSALTsalt", + 36, + 4096, + 25, + { 0x3d, 0x2e, 0xec, 0x4f, 0xe4, 0x1c, 0x84, 0x9b, + 0x80, 0xc8, 0xd8, 0x36, 0x62, 0xc0, 0xe4, 0x4a, + 0x8b, 0x29, 0x1a, 0x96, 0x4c, 0xf2, 0xf0, 0x70, + 0x38 } + }, + { + "pass\0word", + 9, + "sa\0lt", + 5, + 4096, + 16, + { 0x56, 0xfa, 0x6a, 0xa7, 0x55, 0x48, 0x09, 0x9d, + 0xcc, 0x37, 0xd7, 0xf0, 0x34, 0x25, 0xe0, 0xc3 } + }, +#endif /* LTC_TEST_EXT */ + }; + + static const case_item cases_5_1[] = { + { + "password", + 8, + "saltsalt", /* must be 8 octects */ + 8, /* ignored by alg1 */ + 1, + 20, + { 0xca, 0xb8, 0x6d, 0xd6, 0x26, 0x17, 0x10, 0x89, 0x1e, 0x8c, + 0xb5, 0x6e, 0xe3, 0x62, 0x56, 0x91, 0xa7, 0x5d, 0xf3, 0x44 } + }, + }; + + static const case_item cases_5_1o[] = { + { + "password", + 8, + "saltsalt", /* must be 8 octects */ + 8, /* ignored by alg1_openssl */ + 1, + 20, + { 0xca, 0xb8, 0x6d, 0xd6, 0x26, 0x17, 0x10, 0x89, 0x1e, 0x8c, + 0xb5, 0x6e, 0xe3, 0x62, 0x56, 0x91, 0xa7, 0x5d, 0xf3, 0x44 } + + }, + { + "password", + 8, + "saltsalt", /* must be 8 octects */ + 8, /* ignored by alg1_openssl */ + 1, + 30, + { 0xca, 0xb8, 0x6d, 0xd6, 0x26, 0x17, 0x10, 0x89, 0x1e, 0x8c, + 0xb5, 0x6e, 0xe3, 0x62, 0x56, 0x91, 0xa7, 0x5d, 0xf3, 0x44, + 0xf0, 0xbf, 0xf4, 0xc1, 0x2c, 0xf3, 0x59, 0x6f, 0xc0, 0x0b } + + } + }; + + unsigned char DK[40]; + unsigned long dkLen; + int i, err; + int tested=0, failed=0; + int hash = find_hash("sha1"); + if (hash == -1) + { +#ifdef LTC_TEST_DBG + printf("PKCS#5 test failed: 'sha1' hash not found\n"); +#endif + return CRYPT_ERROR; + } + + /* testing alg 2 */ + for(i=0; i < (int)(sizeof(cases_5_2) / sizeof(cases_5_2[0])); i++) { + ++tested; + dkLen = cases_5_2[i].dkLen; + if((err = pkcs_5_alg2((unsigned char*)cases_5_2[i].P, cases_5_2[i].P_len, + (unsigned char*)cases_5_2[i].S, cases_5_2[i].S_len, + cases_5_2[i].c, hash, + DK, &dkLen)) != CRYPT_OK) { +#ifdef LTC_TEST_DBG + printf("\npkcs_5_alg2() #%d: Failed/1 (%s)\n", i, error_to_string(err)); +#endif + ++failed; + } + else if (compare_testvector(DK, dkLen, cases_5_2[i].DK, cases_5_2[i].dkLen, "PKCS#5_2", i)) { + ++failed; + } + } + + /* testing alg 1 */ + for(i=0; i < (int)(sizeof(cases_5_1) / sizeof(case_item)); i++, tested++) { + dkLen = cases_5_1[i].dkLen; + if((err = pkcs_5_alg1((unsigned char*)cases_5_1[i].P, cases_5_1[i].P_len, + (unsigned char*)cases_5_1[i].S, + cases_5_1[i].c, hash, + DK, &dkLen)) != CRYPT_OK) { +#ifdef LTC_TEST_DBG + printf("\npkcs_5_alg1() #%d: Failed/1 (%s)\n", i, error_to_string(err)); +#endif + ++failed; + } + else if (compare_testvector(DK, dkLen, cases_5_1[i].DK, cases_5_1[i].dkLen, "PKCS#5_1", i)) { + ++failed; + } + } + + /* testing alg 1_openssl */ + for(i = 0; i < (int)(sizeof(cases_5_1o) / sizeof(cases_5_1o[0])); i++, tested++) { + dkLen = cases_5_1o[i].dkLen; + if ((err = pkcs_5_alg1_openssl((unsigned char*)cases_5_1o[i].P, cases_5_1o[i].P_len, + (unsigned char*)cases_5_1o[i].S, + cases_5_1o[i].c, hash, + DK, &dkLen)) != CRYPT_OK) { +#ifdef LTC_TEST_DBG + printf("\npkcs_5_alg1_openssl() #%d: Failed/1 (%s)\n", i, error_to_string(err)); +#endif + ++failed; + } + else if (compare_testvector(DK, dkLen, cases_5_1o[i].DK, cases_5_1o[i].dkLen, "PKCS#5_1o", i)) { + ++failed; + } + } + + return (failed != 0) ? CRYPT_FAIL_TESTVECTOR : CRYPT_OK; + #endif +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/misc/zeromem.c b/fsbl/lib/libtomcrypt/src/misc/zeromem.c new file mode 100644 index 000000000..1a3b8ed3a --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/misc/zeromem.c @@ -0,0 +1,32 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file zeromem.c + Zero a block of memory, Tom St Denis +*/ + +/** + Zero a block of memory + @param out The destination of the area to zero + @param outlen The length of the area to zero (octets) +*/ +void zeromem(volatile void *out, size_t outlen) +{ + volatile char *mem = out; + LTC_ARGCHKVD(out != NULL); + while (outlen-- > 0) { + *mem++ = '\0'; + } +} + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/cbc/cbc_decrypt.c b/fsbl/lib/libtomcrypt/src/modes/cbc/cbc_decrypt.c new file mode 100644 index 000000000..e9f2785ac --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/cbc/cbc_decrypt.c @@ -0,0 +1,95 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file cbc_decrypt.c + CBC implementation, encrypt block, Tom St Denis +*/ + + +#ifdef LTC_CBC_MODE + +/** + CBC decrypt + @param ct Ciphertext + @param pt [out] Plaintext + @param len The number of bytes to process (must be multiple of block length) + @param cbc CBC state + @return CRYPT_OK if successful +*/ +int cbc_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_CBC *cbc) +{ + int x, err; + unsigned char tmp[16]; +#ifdef LTC_FAST + LTC_FAST_TYPE tmpy; +#else + unsigned char tmpy; +#endif + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(cbc != NULL); + + if ((err = cipher_is_valid(cbc->cipher)) != CRYPT_OK) { + return err; + } + + /* is blocklen valid? */ + if (cbc->blocklen < 1 || cbc->blocklen > (int)sizeof(cbc->IV) || cbc->blocklen > (int)sizeof(tmp)) { + return CRYPT_INVALID_ARG; + } + + if (len % cbc->blocklen) { + return CRYPT_INVALID_ARG; + } +#ifdef LTC_FAST + if (cbc->blocklen % sizeof(LTC_FAST_TYPE)) { + return CRYPT_INVALID_ARG; + } +#endif + + if (cipher_descriptor[cbc->cipher].accel_cbc_decrypt != NULL) { + return cipher_descriptor[cbc->cipher].accel_cbc_decrypt(ct, pt, len / cbc->blocklen, cbc->IV, &cbc->key); + } else { + while (len) { + /* decrypt */ + if ((err = cipher_descriptor[cbc->cipher].ecb_decrypt(ct, tmp, &cbc->key)) != CRYPT_OK) { + return err; + } + + /* xor IV against plaintext */ + #if defined(LTC_FAST) + for (x = 0; x < cbc->blocklen; x += sizeof(LTC_FAST_TYPE)) { + tmpy = *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)cbc->IV + x)) ^ *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)tmp + x)); + *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)cbc->IV + x)) = *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)ct + x)); + *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)pt + x)) = tmpy; + } + #else + for (x = 0; x < cbc->blocklen; x++) { + tmpy = tmp[x] ^ cbc->IV[x]; + cbc->IV[x] = ct[x]; + pt[x] = tmpy; + } + #endif + + ct += cbc->blocklen; + pt += cbc->blocklen; + len -= cbc->blocklen; + } + } + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/cbc/cbc_done.c b/fsbl/lib/libtomcrypt/src/modes/cbc/cbc_done.c new file mode 100644 index 000000000..2f1293dff --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/cbc/cbc_done.c @@ -0,0 +1,40 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file cbc_done.c + CBC implementation, finish chain, Tom St Denis +*/ + +#ifdef LTC_CBC_MODE + +/** Terminate the chain + @param cbc The CBC chain to terminate + @return CRYPT_OK on success +*/ +int cbc_done(symmetric_CBC *cbc) +{ + int err; + LTC_ARGCHK(cbc != NULL); + + if ((err = cipher_is_valid(cbc->cipher)) != CRYPT_OK) { + return err; + } + cipher_descriptor[cbc->cipher].done(&cbc->key); + return CRYPT_OK; +} + + + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/cbc/cbc_encrypt.c b/fsbl/lib/libtomcrypt/src/modes/cbc/cbc_encrypt.c new file mode 100644 index 000000000..00d85fcbc --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/cbc/cbc_encrypt.c @@ -0,0 +1,96 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file cbc_encrypt.c + CBC implementation, encrypt block, Tom St Denis +*/ + + +#ifdef LTC_CBC_MODE + +/** + CBC encrypt + @param pt Plaintext + @param ct [out] Ciphertext + @param len The number of bytes to process (must be multiple of block length) + @param cbc CBC state + @return CRYPT_OK if successful +*/ +int cbc_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CBC *cbc) +{ + int x, err; + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(cbc != NULL); + + if ((err = cipher_is_valid(cbc->cipher)) != CRYPT_OK) { + return err; + } + + /* is blocklen valid? */ + if (cbc->blocklen < 1 || cbc->blocklen > (int)sizeof(cbc->IV)) { + return CRYPT_INVALID_ARG; + } + + if (len % cbc->blocklen) { + return CRYPT_INVALID_ARG; + } +#ifdef LTC_FAST + if (cbc->blocklen % sizeof(LTC_FAST_TYPE)) { + return CRYPT_INVALID_ARG; + } +#endif + + if (cipher_descriptor[cbc->cipher].accel_cbc_encrypt != NULL) { + return cipher_descriptor[cbc->cipher].accel_cbc_encrypt(pt, ct, len / cbc->blocklen, cbc->IV, &cbc->key); + } else { + while (len) { + /* xor IV against plaintext */ + #if defined(LTC_FAST) + for (x = 0; x < cbc->blocklen; x += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)cbc->IV + x)) ^= *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)pt + x)); + } + #else + for (x = 0; x < cbc->blocklen; x++) { + cbc->IV[x] ^= pt[x]; + } + #endif + + /* encrypt */ + if ((err = cipher_descriptor[cbc->cipher].ecb_encrypt(cbc->IV, ct, &cbc->key)) != CRYPT_OK) { + return err; + } + + /* store IV [ciphertext] for a future block */ + #if defined(LTC_FAST) + for (x = 0; x < cbc->blocklen; x += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)cbc->IV + x)) = *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)ct + x)); + } + #else + for (x = 0; x < cbc->blocklen; x++) { + cbc->IV[x] = ct[x]; + } + #endif + + ct += cbc->blocklen; + pt += cbc->blocklen; + len -= cbc->blocklen; + } + } + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/cbc/cbc_getiv.c b/fsbl/lib/libtomcrypt/src/modes/cbc/cbc_getiv.c new file mode 100644 index 000000000..fbf68349c --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/cbc/cbc_getiv.c @@ -0,0 +1,44 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file cbc_getiv.c + CBC implementation, get IV, Tom St Denis +*/ + +#ifdef LTC_CBC_MODE + +/** + Get the current initialization vector + @param IV [out] The destination of the initialization vector + @param len [in/out] The max size and resulting size of the initialization vector + @param cbc The CBC state + @return CRYPT_OK if successful +*/ +int cbc_getiv(unsigned char *IV, unsigned long *len, symmetric_CBC *cbc) +{ + LTC_ARGCHK(IV != NULL); + LTC_ARGCHK(len != NULL); + LTC_ARGCHK(cbc != NULL); + if ((unsigned long)cbc->blocklen > *len) { + *len = cbc->blocklen; + return CRYPT_BUFFER_OVERFLOW; + } + XMEMCPY(IV, cbc->IV, cbc->blocklen); + *len = cbc->blocklen; + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/cbc/cbc_setiv.c b/fsbl/lib/libtomcrypt/src/modes/cbc/cbc_setiv.c new file mode 100644 index 000000000..255d6419c --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/cbc/cbc_setiv.c @@ -0,0 +1,42 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file cbc_setiv.c + CBC implementation, set IV, Tom St Denis +*/ + + +#ifdef LTC_CBC_MODE + +/** + Set an initialization vector + @param IV The initialization vector + @param len The length of the vector (in octets) + @param cbc The CBC state + @return CRYPT_OK if successful +*/ +int cbc_setiv(const unsigned char *IV, unsigned long len, symmetric_CBC *cbc) +{ + LTC_ARGCHK(IV != NULL); + LTC_ARGCHK(cbc != NULL); + if (len != (unsigned long)cbc->blocklen) { + return CRYPT_INVALID_ARG; + } + XMEMCPY(cbc->IV, IV, len); + return CRYPT_OK; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/cbc/cbc_start.c b/fsbl/lib/libtomcrypt/src/modes/cbc/cbc_start.c new file mode 100644 index 000000000..6c5c52c80 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/cbc/cbc_start.c @@ -0,0 +1,60 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file cbc_start.c + CBC implementation, start chain, Tom St Denis +*/ + +#ifdef LTC_CBC_MODE + +/** + Initialize a CBC context + @param cipher The index of the cipher desired + @param IV The initialization vector + @param key The secret key + @param keylen The length of the secret key (octets) + @param num_rounds Number of rounds in the cipher desired (0 for default) + @param cbc The CBC state to initialize + @return CRYPT_OK if successful +*/ +int cbc_start(int cipher, const unsigned char *IV, const unsigned char *key, + int keylen, int num_rounds, symmetric_CBC *cbc) +{ + int x, err; + + LTC_ARGCHK(IV != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(cbc != NULL); + + /* bad param? */ + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + + /* setup cipher */ + if ((err = cipher_descriptor[cipher].setup(key, keylen, num_rounds, &cbc->key)) != CRYPT_OK) { + return err; + } + + /* copy IV */ + cbc->blocklen = cipher_descriptor[cipher].block_length; + cbc->cipher = cipher; + for (x = 0; x < cbc->blocklen; x++) { + cbc->IV[x] = IV[x]; + } + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/cfb/cfb_decrypt.c b/fsbl/lib/libtomcrypt/src/modes/cfb/cfb_decrypt.c new file mode 100644 index 000000000..9749a0bee --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/cfb/cfb_decrypt.c @@ -0,0 +1,65 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file cfb_decrypt.c + CFB implementation, decrypt data, Tom St Denis +*/ + +#ifdef LTC_CFB_MODE + +/** + CFB decrypt + @param ct Ciphertext + @param pt [out] Plaintext + @param len Length of ciphertext (octets) + @param cfb CFB state + @return CRYPT_OK if successful +*/ +int cfb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_CFB *cfb) +{ + int err; + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(cfb != NULL); + + if ((err = cipher_is_valid(cfb->cipher)) != CRYPT_OK) { + return err; + } + + /* is blocklen/padlen valid? */ + if (cfb->blocklen < 0 || cfb->blocklen > (int)sizeof(cfb->IV) || + cfb->padlen < 0 || cfb->padlen > (int)sizeof(cfb->pad)) { + return CRYPT_INVALID_ARG; + } + + while (len-- > 0) { + if (cfb->padlen == cfb->blocklen) { + if ((err = cipher_descriptor[cfb->cipher].ecb_encrypt(cfb->pad, cfb->IV, &cfb->key)) != CRYPT_OK) { + return err; + } + cfb->padlen = 0; + } + cfb->pad[cfb->padlen] = *ct; + *pt = *ct ^ cfb->IV[cfb->padlen]; + ++pt; + ++ct; + ++(cfb->padlen); + } + return CRYPT_OK; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/cfb/cfb_done.c b/fsbl/lib/libtomcrypt/src/modes/cfb/cfb_done.c new file mode 100644 index 000000000..24576c827 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/cfb/cfb_done.c @@ -0,0 +1,40 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file cfb_done.c + CFB implementation, finish chain, Tom St Denis +*/ + +#ifdef LTC_CFB_MODE + +/** Terminate the chain + @param cfb The CFB chain to terminate + @return CRYPT_OK on success +*/ +int cfb_done(symmetric_CFB *cfb) +{ + int err; + LTC_ARGCHK(cfb != NULL); + + if ((err = cipher_is_valid(cfb->cipher)) != CRYPT_OK) { + return err; + } + cipher_descriptor[cfb->cipher].done(&cfb->key); + return CRYPT_OK; +} + + + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/cfb/cfb_encrypt.c b/fsbl/lib/libtomcrypt/src/modes/cfb/cfb_encrypt.c new file mode 100644 index 000000000..4503e5b06 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/cfb/cfb_encrypt.c @@ -0,0 +1,63 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file cfb_encrypt.c + CFB implementation, encrypt data, Tom St Denis +*/ + +#ifdef LTC_CFB_MODE + +/** + CFB encrypt + @param pt Plaintext + @param ct [out] Ciphertext + @param len Length of plaintext (octets) + @param cfb CFB state + @return CRYPT_OK if successful +*/ +int cfb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CFB *cfb) +{ + int err; + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(cfb != NULL); + + if ((err = cipher_is_valid(cfb->cipher)) != CRYPT_OK) { + return err; + } + + /* is blocklen/padlen valid? */ + if (cfb->blocklen < 0 || cfb->blocklen > (int)sizeof(cfb->IV) || + cfb->padlen < 0 || cfb->padlen > (int)sizeof(cfb->pad)) { + return CRYPT_INVALID_ARG; + } + + while (len-- > 0) { + if (cfb->padlen == cfb->blocklen) { + if ((err = cipher_descriptor[cfb->cipher].ecb_encrypt(cfb->pad, cfb->IV, &cfb->key)) != CRYPT_OK) { + return err; + } + cfb->padlen = 0; + } + cfb->pad[cfb->padlen] = (*ct = *pt ^ cfb->IV[cfb->padlen]); + ++pt; + ++ct; + ++(cfb->padlen); + } + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/cfb/cfb_getiv.c b/fsbl/lib/libtomcrypt/src/modes/cfb/cfb_getiv.c new file mode 100644 index 000000000..b972c72bd --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/cfb/cfb_getiv.c @@ -0,0 +1,44 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file cfb_getiv.c + CFB implementation, get IV, Tom St Denis +*/ + +#ifdef LTC_CFB_MODE + +/** + Get the current initialization vector + @param IV [out] The destination of the initialization vector + @param len [in/out] The max size and resulting size of the initialization vector + @param cfb The CFB state + @return CRYPT_OK if successful +*/ +int cfb_getiv(unsigned char *IV, unsigned long *len, symmetric_CFB *cfb) +{ + LTC_ARGCHK(IV != NULL); + LTC_ARGCHK(len != NULL); + LTC_ARGCHK(cfb != NULL); + if ((unsigned long)cfb->blocklen > *len) { + *len = cfb->blocklen; + return CRYPT_BUFFER_OVERFLOW; + } + XMEMCPY(IV, cfb->IV, cfb->blocklen); + *len = cfb->blocklen; + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/cfb/cfb_setiv.c b/fsbl/lib/libtomcrypt/src/modes/cfb/cfb_setiv.c new file mode 100644 index 000000000..4495bf5fc --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/cfb/cfb_setiv.c @@ -0,0 +1,50 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file cfb_setiv.c + CFB implementation, set IV, Tom St Denis +*/ + +#ifdef LTC_CFB_MODE + +/** + Set an initialization vector + @param IV The initialization vector + @param len The length of the vector (in octets) + @param cfb The CFB state + @return CRYPT_OK if successful +*/ +int cfb_setiv(const unsigned char *IV, unsigned long len, symmetric_CFB *cfb) +{ + int err; + + LTC_ARGCHK(IV != NULL); + LTC_ARGCHK(cfb != NULL); + + if ((err = cipher_is_valid(cfb->cipher)) != CRYPT_OK) { + return err; + } + + if (len != (unsigned long)cfb->blocklen) { + return CRYPT_INVALID_ARG; + } + + /* force next block */ + cfb->padlen = 0; + return cipher_descriptor[cfb->cipher].ecb_encrypt(IV, cfb->IV, &cfb->key); +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/cfb/cfb_start.c b/fsbl/lib/libtomcrypt/src/modes/cfb/cfb_start.c new file mode 100644 index 000000000..e49b119b6 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/cfb/cfb_start.c @@ -0,0 +1,63 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file cfb_start.c + CFB implementation, start chain, Tom St Denis +*/ + + +#ifdef LTC_CFB_MODE + +/** + Initialize a CFB context + @param cipher The index of the cipher desired + @param IV The initialization vector + @param key The secret key + @param keylen The length of the secret key (octets) + @param num_rounds Number of rounds in the cipher desired (0 for default) + @param cfb The CFB state to initialize + @return CRYPT_OK if successful +*/ +int cfb_start(int cipher, const unsigned char *IV, const unsigned char *key, + int keylen, int num_rounds, symmetric_CFB *cfb) +{ + int x, err; + + LTC_ARGCHK(IV != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(cfb != NULL); + + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + + + /* copy data */ + cfb->cipher = cipher; + cfb->blocklen = cipher_descriptor[cipher].block_length; + for (x = 0; x < cfb->blocklen; x++) + cfb->IV[x] = IV[x]; + + /* init the cipher */ + if ((err = cipher_descriptor[cipher].setup(key, keylen, num_rounds, &cfb->key)) != CRYPT_OK) { + return err; + } + + /* encrypt the IV */ + cfb->padlen = 0; + return cipher_descriptor[cfb->cipher].ecb_encrypt(cfb->IV, cfb->IV, &cfb->key); +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/ctr/ctr_decrypt.c b/fsbl/lib/libtomcrypt/src/modes/ctr/ctr_decrypt.c new file mode 100644 index 000000000..500808907 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/ctr/ctr_decrypt.c @@ -0,0 +1,40 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file ctr_decrypt.c + CTR implementation, decrypt data, Tom St Denis +*/ + +#ifdef LTC_CTR_MODE + +/** + CTR decrypt + @param ct Ciphertext + @param pt [out] Plaintext + @param len Length of ciphertext (octets) + @param ctr CTR state + @return CRYPT_OK if successful +*/ +int ctr_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_CTR *ctr) +{ + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(ctr != NULL); + + return ctr_encrypt(ct, pt, len, ctr); +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/ctr/ctr_done.c b/fsbl/lib/libtomcrypt/src/modes/ctr/ctr_done.c new file mode 100644 index 000000000..3de13c2b7 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/ctr/ctr_done.c @@ -0,0 +1,40 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file ctr_done.c + CTR implementation, finish chain, Tom St Denis +*/ + +#ifdef LTC_CTR_MODE + +/** Terminate the chain + @param ctr The CTR chain to terminate + @return CRYPT_OK on success +*/ +int ctr_done(symmetric_CTR *ctr) +{ + int err; + LTC_ARGCHK(ctr != NULL); + + if ((err = cipher_is_valid(ctr->cipher)) != CRYPT_OK) { + return err; + } + cipher_descriptor[ctr->cipher].done(&ctr->key); + return CRYPT_OK; +} + + + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/ctr/ctr_encrypt.c b/fsbl/lib/libtomcrypt/src/modes/ctr/ctr_encrypt.c new file mode 100644 index 000000000..eb7328c2d --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/ctr/ctr_encrypt.c @@ -0,0 +1,139 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file ctr_encrypt.c + CTR implementation, encrypt data, Tom St Denis +*/ + + +#ifdef LTC_CTR_MODE + +/** + CTR encrypt software implementation + @param pt Plaintext + @param ct [out] Ciphertext + @param len Length of plaintext (octets) + @param ctr CTR state + @return CRYPT_OK if successful +*/ +static int _ctr_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CTR *ctr) +{ + int x, err; + + while (len) { + /* is the pad empty? */ + if (ctr->padlen == ctr->blocklen) { + /* increment counter */ + if (ctr->mode == CTR_COUNTER_LITTLE_ENDIAN) { + /* little-endian */ + for (x = 0; x < ctr->ctrlen; x++) { + ctr->ctr[x] = (ctr->ctr[x] + (unsigned char)1) & (unsigned char)255; + if (ctr->ctr[x] != (unsigned char)0) { + break; + } + } + } else { + /* big-endian */ + for (x = ctr->blocklen-1; x >= ctr->ctrlen; x--) { + ctr->ctr[x] = (ctr->ctr[x] + (unsigned char)1) & (unsigned char)255; + if (ctr->ctr[x] != (unsigned char)0) { + break; + } + } + } + + /* encrypt it */ + if ((err = cipher_descriptor[ctr->cipher].ecb_encrypt(ctr->ctr, ctr->pad, &ctr->key)) != CRYPT_OK) { + return err; + } + ctr->padlen = 0; + } +#ifdef LTC_FAST + if ((ctr->padlen == 0) && (len >= (unsigned long)ctr->blocklen)) { + for (x = 0; x < ctr->blocklen; x += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)ct + x)) = *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)pt + x)) ^ + *(LTC_FAST_TYPE_PTR_CAST((unsigned char *)ctr->pad + x)); + } + pt += ctr->blocklen; + ct += ctr->blocklen; + len -= ctr->blocklen; + ctr->padlen = ctr->blocklen; + continue; + } +#endif + *ct++ = *pt++ ^ ctr->pad[ctr->padlen++]; + --len; + } + return CRYPT_OK; +} + +/** + CTR encrypt + @param pt Plaintext + @param ct [out] Ciphertext + @param len Length of plaintext (octets) + @param ctr CTR state + @return CRYPT_OK if successful +*/ +int ctr_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CTR *ctr) +{ + int err, fr; + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(ctr != NULL); + + if ((err = cipher_is_valid(ctr->cipher)) != CRYPT_OK) { + return err; + } + + /* is blocklen/padlen valid? */ + if ((ctr->blocklen < 1) || (ctr->blocklen > (int)sizeof(ctr->ctr)) || + (ctr->padlen < 0) || (ctr->padlen > (int)sizeof(ctr->pad))) { + return CRYPT_INVALID_ARG; + } + +#ifdef LTC_FAST + if (ctr->blocklen % sizeof(LTC_FAST_TYPE)) { + return CRYPT_INVALID_ARG; + } +#endif + + /* handle acceleration only if pad is empty, accelerator is present and length is >= a block size */ + if ((cipher_descriptor[ctr->cipher].accel_ctr_encrypt != NULL) && (len >= (unsigned long)ctr->blocklen)) { + if (ctr->padlen < ctr->blocklen) { + fr = ctr->blocklen - ctr->padlen; + if ((err = _ctr_encrypt(pt, ct, fr, ctr)) != CRYPT_OK) { + return err; + } + pt += fr; + ct += fr; + len -= fr; + } + + if (len >= (unsigned long)ctr->blocklen) { + if ((err = cipher_descriptor[ctr->cipher].accel_ctr_encrypt(pt, ct, len/ctr->blocklen, ctr->ctr, ctr->mode, &ctr->key)) != CRYPT_OK) { + return err; + } + pt += (len / ctr->blocklen) * ctr->blocklen; + ct += (len / ctr->blocklen) * ctr->blocklen; + len %= ctr->blocklen; + } + } + + return _ctr_encrypt(pt, ct, len, ctr); +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/ctr/ctr_getiv.c b/fsbl/lib/libtomcrypt/src/modes/ctr/ctr_getiv.c new file mode 100644 index 000000000..cbf92db88 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/ctr/ctr_getiv.c @@ -0,0 +1,44 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file ctr_getiv.c + CTR implementation, get IV, Tom St Denis +*/ + +#ifdef LTC_CTR_MODE + +/** + Get the current initialization vector + @param IV [out] The destination of the initialization vector + @param len [in/out] The max size and resulting size of the initialization vector + @param ctr The CTR state + @return CRYPT_OK if successful +*/ +int ctr_getiv(unsigned char *IV, unsigned long *len, symmetric_CTR *ctr) +{ + LTC_ARGCHK(IV != NULL); + LTC_ARGCHK(len != NULL); + LTC_ARGCHK(ctr != NULL); + if ((unsigned long)ctr->blocklen > *len) { + *len = ctr->blocklen; + return CRYPT_BUFFER_OVERFLOW; + } + XMEMCPY(IV, ctr->ctr, ctr->blocklen); + *len = ctr->blocklen; + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/ctr/ctr_setiv.c b/fsbl/lib/libtomcrypt/src/modes/ctr/ctr_setiv.c new file mode 100644 index 000000000..64d73a1f4 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/ctr/ctr_setiv.c @@ -0,0 +1,54 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file ctr_setiv.c + CTR implementation, set IV, Tom St Denis +*/ + +#ifdef LTC_CTR_MODE + +/** + Set an initialization vector + @param IV The initialization vector + @param len The length of the vector (in octets) + @param ctr The CTR state + @return CRYPT_OK if successful +*/ +int ctr_setiv(const unsigned char *IV, unsigned long len, symmetric_CTR *ctr) +{ + int err; + + LTC_ARGCHK(IV != NULL); + LTC_ARGCHK(ctr != NULL); + + /* bad param? */ + if ((err = cipher_is_valid(ctr->cipher)) != CRYPT_OK) { + return err; + } + + if (len != (unsigned long)ctr->blocklen) { + return CRYPT_INVALID_ARG; + } + + /* set IV */ + XMEMCPY(ctr->ctr, IV, len); + + /* force next block */ + ctr->padlen = 0; + return cipher_descriptor[ctr->cipher].ecb_encrypt(IV, ctr->pad, &ctr->key); +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/ctr/ctr_start.c b/fsbl/lib/libtomcrypt/src/modes/ctr/ctr_start.c new file mode 100644 index 000000000..039fdd6f5 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/ctr/ctr_start.c @@ -0,0 +1,99 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file ctr_start.c + CTR implementation, start chain, Tom St Denis +*/ + + +#ifdef LTC_CTR_MODE + +/** + Initialize a CTR context + @param cipher The index of the cipher desired + @param IV The initialization vector + @param key The secret key + @param keylen The length of the secret key (octets) + @param num_rounds Number of rounds in the cipher desired (0 for default) + @param ctr_mode The counter mode (CTR_COUNTER_LITTLE_ENDIAN or CTR_COUNTER_BIG_ENDIAN) + @param ctr The CTR state to initialize + @return CRYPT_OK if successful +*/ +int ctr_start( int cipher, + const unsigned char *IV, + const unsigned char *key, int keylen, + int num_rounds, int ctr_mode, + symmetric_CTR *ctr) +{ + int x, err; + + LTC_ARGCHK(IV != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(ctr != NULL); + + /* bad param? */ + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + + /* ctrlen == counter width */ + ctr->ctrlen = (ctr_mode & 255) ? (ctr_mode & 255) : cipher_descriptor[cipher].block_length; + if (ctr->ctrlen > cipher_descriptor[cipher].block_length) { + return CRYPT_INVALID_ARG; + } + + if ((ctr_mode & 0x1000) == CTR_COUNTER_BIG_ENDIAN) { + ctr->ctrlen = cipher_descriptor[cipher].block_length - ctr->ctrlen; + } + + /* setup cipher */ + if ((err = cipher_descriptor[cipher].setup(key, keylen, num_rounds, &ctr->key)) != CRYPT_OK) { + return err; + } + + /* copy ctr */ + ctr->blocklen = cipher_descriptor[cipher].block_length; + ctr->cipher = cipher; + ctr->padlen = 0; + ctr->mode = ctr_mode & 0x1000; + for (x = 0; x < ctr->blocklen; x++) { + ctr->ctr[x] = IV[x]; + } + + if (ctr_mode & LTC_CTR_RFC3686) { + /* increment the IV as per RFC 3686 */ + if (ctr->mode == CTR_COUNTER_LITTLE_ENDIAN) { + /* little-endian */ + for (x = 0; x < ctr->ctrlen; x++) { + ctr->ctr[x] = (ctr->ctr[x] + (unsigned char)1) & (unsigned char)255; + if (ctr->ctr[x] != (unsigned char)0) { + break; + } + } + } else { + /* big-endian */ + for (x = ctr->blocklen-1; x >= ctr->ctrlen; x--) { + ctr->ctr[x] = (ctr->ctr[x] + (unsigned char)1) & (unsigned char)255; + if (ctr->ctr[x] != (unsigned char)0) { + break; + } + } + } + } + + return cipher_descriptor[ctr->cipher].ecb_encrypt(ctr->ctr, ctr->pad, &ctr->key); +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/ctr/ctr_test.c b/fsbl/lib/libtomcrypt/src/modes/ctr/ctr_test.c new file mode 100644 index 000000000..878d42556 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/ctr/ctr_test.c @@ -0,0 +1,83 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file ctr_test.c + CTR implementation, Tests again RFC 3686, Tom St Denis +*/ + +#ifdef LTC_CTR_MODE + +int ctr_test(void) +{ +#ifdef LTC_NO_TEST + return CRYPT_NOP; +#else + static const struct { + int keylen, msglen; + unsigned char key[32], IV[16], pt[64], ct[64]; + } tests[] = { +/* 128-bit key, 16-byte pt */ +{ + 16, 16, + {0xAE,0x68,0x52,0xF8,0x12,0x10,0x67,0xCC,0x4B,0xF7,0xA5,0x76,0x55,0x77,0xF3,0x9E }, + {0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, + {0x53,0x69,0x6E,0x67,0x6C,0x65,0x20,0x62,0x6C,0x6F,0x63,0x6B,0x20,0x6D,0x73,0x67 }, + {0xE4,0x09,0x5D,0x4F,0xB7,0xA7,0xB3,0x79,0x2D,0x61,0x75,0xA3,0x26,0x13,0x11,0xB8 }, +}, + +/* 128-bit key, 36-byte pt */ +{ + 16, 36, + {0x76,0x91,0xBE,0x03,0x5E,0x50,0x20,0xA8,0xAC,0x6E,0x61,0x85,0x29,0xF9,0xA0,0xDC }, + {0x00,0xE0,0x01,0x7B,0x27,0x77,0x7F,0x3F,0x4A,0x17,0x86,0xF0,0x00,0x00,0x00,0x00 }, + {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, + 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, + 0x20,0x21,0x22,0x23}, + {0xC1,0xCF,0x48,0xA8,0x9F,0x2F,0xFD,0xD9,0xCF,0x46,0x52,0xE9,0xEF,0xDB,0x72,0xD7, + 0x45,0x40,0xA4,0x2B,0xDE,0x6D,0x78,0x36,0xD5,0x9A,0x5C,0xEA,0xAE,0xF3,0x10,0x53, + 0x25,0xB2,0x07,0x2F }, +}, +}; + int idx, err, x; + unsigned char buf[64]; + symmetric_CTR ctr; + + /* AES can be under rijndael or aes... try to find it */ + if ((idx = find_cipher("aes")) == -1) { + if ((idx = find_cipher("rijndael")) == -1) { + return CRYPT_NOP; + } + } + + for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { + if ((err = ctr_start(idx, tests[x].IV, tests[x].key, tests[x].keylen, 0, CTR_COUNTER_BIG_ENDIAN|LTC_CTR_RFC3686, &ctr)) != CRYPT_OK) { + return err; + } + if ((err = ctr_encrypt(tests[x].pt, buf, tests[x].msglen, &ctr)) != CRYPT_OK) { + return err; + } + ctr_done(&ctr); + if (compare_testvector(buf, tests[x].msglen, tests[x].ct, tests[x].msglen, "CTR", x)) { + return CRYPT_FAIL_TESTVECTOR; + } + } + return CRYPT_OK; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + + + diff --git a/fsbl/lib/libtomcrypt/src/modes/ecb/ecb_decrypt.c b/fsbl/lib/libtomcrypt/src/modes/ecb/ecb_decrypt.c new file mode 100644 index 000000000..213b253a8 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/ecb/ecb_decrypt.c @@ -0,0 +1,59 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file ecb_decrypt.c + ECB implementation, decrypt a block, Tom St Denis +*/ + +#ifdef LTC_ECB_MODE + +/** + ECB decrypt + @param ct Ciphertext + @param pt [out] Plaintext + @param len The number of octets to process (must be multiple of the cipher block size) + @param ecb ECB state + @return CRYPT_OK if successful +*/ +int ecb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_ECB *ecb) +{ + int err; + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(ecb != NULL); + if ((err = cipher_is_valid(ecb->cipher)) != CRYPT_OK) { + return err; + } + if (len % cipher_descriptor[ecb->cipher].block_length) { + return CRYPT_INVALID_ARG; + } + + /* check for accel */ + if (cipher_descriptor[ecb->cipher].accel_ecb_decrypt != NULL) { + return cipher_descriptor[ecb->cipher].accel_ecb_decrypt(ct, pt, len / cipher_descriptor[ecb->cipher].block_length, &ecb->key); + } else { + while (len) { + if ((err = cipher_descriptor[ecb->cipher].ecb_decrypt(ct, pt, &ecb->key)) != CRYPT_OK) { + return err; + } + pt += cipher_descriptor[ecb->cipher].block_length; + ct += cipher_descriptor[ecb->cipher].block_length; + len -= cipher_descriptor[ecb->cipher].block_length; + } + } + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/ecb/ecb_done.c b/fsbl/lib/libtomcrypt/src/modes/ecb/ecb_done.c new file mode 100644 index 000000000..6df7eecf6 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/ecb/ecb_done.c @@ -0,0 +1,40 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file ecb_done.c + ECB implementation, finish chain, Tom St Denis +*/ + +#ifdef LTC_ECB_MODE + +/** Terminate the chain + @param ecb The ECB chain to terminate + @return CRYPT_OK on success +*/ +int ecb_done(symmetric_ECB *ecb) +{ + int err; + LTC_ARGCHK(ecb != NULL); + + if ((err = cipher_is_valid(ecb->cipher)) != CRYPT_OK) { + return err; + } + cipher_descriptor[ecb->cipher].done(&ecb->key); + return CRYPT_OK; +} + + + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/ecb/ecb_encrypt.c b/fsbl/lib/libtomcrypt/src/modes/ecb/ecb_encrypt.c new file mode 100644 index 000000000..5d4661f57 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/ecb/ecb_encrypt.c @@ -0,0 +1,59 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file ecb_encrypt.c + ECB implementation, encrypt a block, Tom St Denis +*/ + +#ifdef LTC_ECB_MODE + +/** + ECB encrypt + @param pt Plaintext + @param ct [out] Ciphertext + @param len The number of octets to process (must be multiple of the cipher block size) + @param ecb ECB state + @return CRYPT_OK if successful +*/ +int ecb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_ECB *ecb) +{ + int err; + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(ecb != NULL); + if ((err = cipher_is_valid(ecb->cipher)) != CRYPT_OK) { + return err; + } + if (len % cipher_descriptor[ecb->cipher].block_length) { + return CRYPT_INVALID_ARG; + } + + /* check for accel */ + if (cipher_descriptor[ecb->cipher].accel_ecb_encrypt != NULL) { + return cipher_descriptor[ecb->cipher].accel_ecb_encrypt(pt, ct, len / cipher_descriptor[ecb->cipher].block_length, &ecb->key); + } else { + while (len) { + if ((err = cipher_descriptor[ecb->cipher].ecb_encrypt(pt, ct, &ecb->key)) != CRYPT_OK) { + return err; + } + pt += cipher_descriptor[ecb->cipher].block_length; + ct += cipher_descriptor[ecb->cipher].block_length; + len -= cipher_descriptor[ecb->cipher].block_length; + } + } + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/ecb/ecb_start.c b/fsbl/lib/libtomcrypt/src/modes/ecb/ecb_start.c new file mode 100644 index 000000000..ecd301bd9 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/ecb/ecb_start.c @@ -0,0 +1,46 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file ecb_start.c + ECB implementation, start chain, Tom St Denis +*/ + + +#ifdef LTC_ECB_MODE + +/** + Initialize a ECB context + @param cipher The index of the cipher desired + @param key The secret key + @param keylen The length of the secret key (octets) + @param num_rounds Number of rounds in the cipher desired (0 for default) + @param ecb The ECB state to initialize + @return CRYPT_OK if successful +*/ +int ecb_start(int cipher, const unsigned char *key, int keylen, int num_rounds, symmetric_ECB *ecb) +{ + int err; + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(ecb != NULL); + + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + ecb->cipher = cipher; + ecb->blocklen = cipher_descriptor[cipher].block_length; + return cipher_descriptor[cipher].setup(key, keylen, num_rounds, &ecb->key); +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/f8/f8_decrypt.c b/fsbl/lib/libtomcrypt/src/modes/f8/f8_decrypt.c new file mode 100644 index 000000000..9c92952b7 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/f8/f8_decrypt.c @@ -0,0 +1,41 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file f8_decrypt.c + F8 implementation, decrypt data, Tom St Denis +*/ + +#ifdef LTC_F8_MODE + +/** + F8 decrypt + @param ct Ciphertext + @param pt [out] Plaintext + @param len Length of ciphertext (octets) + @param f8 F8 state + @return CRYPT_OK if successful +*/ +int f8_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_F8 *f8) +{ + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(f8 != NULL); + return f8_encrypt(ct, pt, len, f8); +} + + +#endif + + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/f8/f8_done.c b/fsbl/lib/libtomcrypt/src/modes/f8/f8_done.c new file mode 100644 index 000000000..3f0af661b --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/f8/f8_done.c @@ -0,0 +1,40 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file f8_done.c + F8 implementation, finish chain, Tom St Denis +*/ + +#ifdef LTC_F8_MODE + +/** Terminate the chain + @param f8 The F8 chain to terminate + @return CRYPT_OK on success +*/ +int f8_done(symmetric_F8 *f8) +{ + int err; + LTC_ARGCHK(f8 != NULL); + + if ((err = cipher_is_valid(f8->cipher)) != CRYPT_OK) { + return err; + } + cipher_descriptor[f8->cipher].done(&f8->key); + return CRYPT_OK; +} + + + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/f8/f8_encrypt.c b/fsbl/lib/libtomcrypt/src/modes/f8/f8_encrypt.c new file mode 100644 index 000000000..058f25aa4 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/f8/f8_encrypt.c @@ -0,0 +1,101 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file f8_encrypt.c + F8 implementation, encrypt data, Tom St Denis +*/ + +#ifdef LTC_F8_MODE + +/** + F8 encrypt + @param pt Plaintext + @param ct [out] Ciphertext + @param len Length of plaintext (octets) + @param f8 F8 state + @return CRYPT_OK if successful +*/ +int f8_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_F8 *f8) +{ + int err, x; + unsigned char buf[MAXBLOCKSIZE]; + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(f8 != NULL); + if ((err = cipher_is_valid(f8->cipher)) != CRYPT_OK) { + return err; + } + + /* is blocklen/padlen valid? */ + if (f8->blocklen < 0 || f8->blocklen > (int)sizeof(f8->IV) || + f8->padlen < 0 || f8->padlen > (int)sizeof(f8->IV)) { + return CRYPT_INVALID_ARG; + } + + zeromem(buf, sizeof(buf)); + + /* make sure the pad is empty */ + if (f8->padlen == f8->blocklen) { + /* xor of IV, MIV and blockcnt == what goes into cipher */ + STORE32H(f8->blockcnt, (buf+(f8->blocklen-4))); + ++(f8->blockcnt); + for (x = 0; x < f8->blocklen; x++) { + f8->IV[x] ^= f8->MIV[x] ^ buf[x]; + } + if ((err = cipher_descriptor[f8->cipher].ecb_encrypt(f8->IV, f8->IV, &f8->key)) != CRYPT_OK) { + return err; + } + f8->padlen = 0; + } + +#ifdef LTC_FAST + if (f8->padlen == 0) { + while (len >= (unsigned long)f8->blocklen) { + STORE32H(f8->blockcnt, (buf+(f8->blocklen-4))); + ++(f8->blockcnt); + for (x = 0; x < f8->blocklen; x += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST(&ct[x])) = *(LTC_FAST_TYPE_PTR_CAST(&pt[x])) ^ *(LTC_FAST_TYPE_PTR_CAST(&f8->IV[x])); + *(LTC_FAST_TYPE_PTR_CAST(&f8->IV[x])) ^= *(LTC_FAST_TYPE_PTR_CAST(&f8->MIV[x])) ^ *(LTC_FAST_TYPE_PTR_CAST(&buf[x])); + } + if ((err = cipher_descriptor[f8->cipher].ecb_encrypt(f8->IV, f8->IV, &f8->key)) != CRYPT_OK) { + return err; + } + len -= x; + pt += x; + ct += x; + } + } +#endif + + while (len > 0) { + if (f8->padlen == f8->blocklen) { + /* xor of IV, MIV and blockcnt == what goes into cipher */ + STORE32H(f8->blockcnt, (buf+(f8->blocklen-4))); + ++(f8->blockcnt); + for (x = 0; x < f8->blocklen; x++) { + f8->IV[x] ^= f8->MIV[x] ^ buf[x]; + } + if ((err = cipher_descriptor[f8->cipher].ecb_encrypt(f8->IV, f8->IV, &f8->key)) != CRYPT_OK) { + return err; + } + f8->padlen = 0; + } + *ct++ = *pt++ ^ f8->IV[f8->padlen++]; + --len; + } + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/f8/f8_getiv.c b/fsbl/lib/libtomcrypt/src/modes/f8/f8_getiv.c new file mode 100644 index 000000000..a5885c95e --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/f8/f8_getiv.c @@ -0,0 +1,44 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file ofb_getiv.c + F8 implementation, get IV, Tom St Denis +*/ + +#ifdef LTC_F8_MODE + +/** + Get the current initialization vector + @param IV [out] The destination of the initialization vector + @param len [in/out] The max size and resulting size of the initialization vector + @param f8 The F8 state + @return CRYPT_OK if successful +*/ +int f8_getiv(unsigned char *IV, unsigned long *len, symmetric_F8 *f8) +{ + LTC_ARGCHK(IV != NULL); + LTC_ARGCHK(len != NULL); + LTC_ARGCHK(f8 != NULL); + if ((unsigned long)f8->blocklen > *len) { + *len = f8->blocklen; + return CRYPT_BUFFER_OVERFLOW; + } + XMEMCPY(IV, f8->IV, f8->blocklen); + *len = f8->blocklen; + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/f8/f8_setiv.c b/fsbl/lib/libtomcrypt/src/modes/f8/f8_setiv.c new file mode 100644 index 000000000..8f45a3f44 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/f8/f8_setiv.c @@ -0,0 +1,50 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file f8_setiv.c + F8 implementation, set IV, Tom St Denis +*/ + +#ifdef LTC_F8_MODE + +/** + Set an initialization vector + @param IV The initialization vector + @param len The length of the vector (in octets) + @param f8 The F8 state + @return CRYPT_OK if successful +*/ +int f8_setiv(const unsigned char *IV, unsigned long len, symmetric_F8 *f8) +{ + int err; + + LTC_ARGCHK(IV != NULL); + LTC_ARGCHK(f8 != NULL); + + if ((err = cipher_is_valid(f8->cipher)) != CRYPT_OK) { + return err; + } + + if (len != (unsigned long)f8->blocklen) { + return CRYPT_INVALID_ARG; + } + + /* force next block */ + f8->padlen = 0; + return cipher_descriptor[f8->cipher].ecb_encrypt(IV, f8->IV, &f8->key); +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/f8/f8_start.c b/fsbl/lib/libtomcrypt/src/modes/f8/f8_start.c new file mode 100644 index 000000000..680170294 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/f8/f8_start.c @@ -0,0 +1,96 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file f8_start.c + F8 implementation, start chain, Tom St Denis +*/ + + +#ifdef LTC_F8_MODE + +/** + Initialize an F8 context + @param cipher The index of the cipher desired + @param IV The initialization vector + @param key The secret key + @param keylen The length of the secret key (octets) + @param salt_key The salting key for the IV + @param skeylen The length of the salting key (octets) + @param num_rounds Number of rounds in the cipher desired (0 for default) + @param f8 The F8 state to initialize + @return CRYPT_OK if successful +*/ +int f8_start( int cipher, const unsigned char *IV, + const unsigned char *key, int keylen, + const unsigned char *salt_key, int skeylen, + int num_rounds, symmetric_F8 *f8) +{ + int x, err; + unsigned char tkey[MAXBLOCKSIZE]; + + LTC_ARGCHK(IV != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(salt_key != NULL); + LTC_ARGCHK(f8 != NULL); + + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + +#ifdef LTC_FAST + if (cipher_descriptor[cipher].block_length % sizeof(LTC_FAST_TYPE)) { + return CRYPT_INVALID_ARG; + } +#endif + + /* copy details */ + f8->blockcnt = 0; + f8->cipher = cipher; + f8->blocklen = cipher_descriptor[cipher].block_length; + f8->padlen = f8->blocklen; + + /* now get key ^ salt_key [extend salt_ket with 0x55 as required to match length] */ + zeromem(tkey, sizeof(tkey)); + for (x = 0; x < keylen && x < (int)sizeof(tkey); x++) { + tkey[x] = key[x]; + } + for (x = 0; x < skeylen && x < (int)sizeof(tkey); x++) { + tkey[x] ^= salt_key[x]; + } + for (; x < keylen && x < (int)sizeof(tkey); x++) { + tkey[x] ^= 0x55; + } + + /* now encrypt with tkey[0..keylen-1] the IV and use that as the IV */ + if ((err = cipher_descriptor[cipher].setup(tkey, keylen, num_rounds, &f8->key)) != CRYPT_OK) { + return err; + } + + /* encrypt IV */ + if ((err = cipher_descriptor[f8->cipher].ecb_encrypt(IV, f8->MIV, &f8->key)) != CRYPT_OK) { + cipher_descriptor[f8->cipher].done(&f8->key); + return err; + } + zeromem(tkey, sizeof(tkey)); + zeromem(f8->IV, sizeof(f8->IV)); + + /* terminate this cipher */ + cipher_descriptor[f8->cipher].done(&f8->key); + + /* init the cipher */ + return cipher_descriptor[cipher].setup(key, keylen, num_rounds, &f8->key); +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/f8/f8_test_mode.c b/fsbl/lib/libtomcrypt/src/modes/f8/f8_test_mode.c new file mode 100644 index 000000000..778cd354d --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/f8/f8_test_mode.c @@ -0,0 +1,74 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file f8_test_mode.c + F8 implementation, test, Tom St Denis +*/ + + +#ifdef LTC_F8_MODE + +int f8_test_mode(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const unsigned char key[16] = { 0x23, 0x48, 0x29, 0x00, 0x84, 0x67, 0xbe, 0x18, + 0x6c, 0x3d, 0xe1, 0x4a, 0xae, 0x72, 0xd6, 0x2c }; + static const unsigned char salt[4] = { 0x32, 0xf2, 0x87, 0x0d }; + static const unsigned char IV[16] = { 0x00, 0x6e, 0x5c, 0xba, 0x50, 0x68, 0x1d, 0xe5, + 0x5c, 0x62, 0x15, 0x99, 0xd4, 0x62, 0x56, 0x4a }; + static const unsigned char pt[39] = { 0x70, 0x73, 0x65, 0x75, 0x64, 0x6f, 0x72, 0x61, + 0x6e, 0x64, 0x6f, 0x6d, 0x6e, 0x65, 0x73, 0x73, + 0x20, 0x69, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x6e, 0x65, 0x78, 0x74, 0x20, 0x62, 0x65, 0x73, + 0x74, 0x20, 0x74, 0x68, 0x69, 0x6e, 0x67 }; + static const unsigned char ct[39] = { 0x01, 0x9c, 0xe7, 0xa2, 0x6e, 0x78, 0x54, 0x01, + 0x4a, 0x63, 0x66, 0xaa, 0x95, 0xd4, 0xee, 0xfd, + 0x1a, 0xd4, 0x17, 0x2a, 0x14, 0xf9, 0xfa, 0xf4, + 0x55, 0xb7, 0xf1, 0xd4, 0xb6, 0x2b, 0xd0, 0x8f, + 0x56, 0x2c, 0x0e, 0xef, 0x7c, 0x48, 0x02 }; + unsigned char buf[39]; + symmetric_F8 f8; + int err, idx; + + idx = find_cipher("aes"); + if (idx == -1) { + idx = find_cipher("rijndael"); + if (idx == -1) return CRYPT_NOP; + } + + /* initialize the context */ + if ((err = f8_start(idx, IV, key, sizeof(key), salt, sizeof(salt), 0, &f8)) != CRYPT_OK) { + return err; + } + + /* encrypt block */ + if ((err = f8_encrypt(pt, buf, sizeof(pt), &f8)) != CRYPT_OK) { + f8_done(&f8); + return err; + } + f8_done(&f8); + + /* compare */ + if (compare_testvector(buf, sizeof(ct), ct, sizeof(ct), "f8", 0)) { + return CRYPT_FAIL_TESTVECTOR; + } + + return CRYPT_OK; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/lrw/lrw_decrypt.c b/fsbl/lib/libtomcrypt/src/modes/lrw/lrw_decrypt.c new file mode 100644 index 000000000..bfedb64da --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/lrw/lrw_decrypt.c @@ -0,0 +1,49 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file lrw_decrypt.c + LRW_MODE implementation, Decrypt blocks, Tom St Denis +*/ + +#ifdef LTC_LRW_MODE + +/** + LRW decrypt blocks + @param ct The ciphertext + @param pt [out] The plaintext + @param len The length in octets, must be a multiple of 16 + @param lrw The LRW state +*/ +int lrw_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_LRW *lrw) +{ + int err; + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(lrw != NULL); + + if ((err = cipher_is_valid(lrw->cipher)) != CRYPT_OK) { + return err; + } + + if (cipher_descriptor[lrw->cipher].accel_lrw_decrypt != NULL) { + return cipher_descriptor[lrw->cipher].accel_lrw_decrypt(ct, pt, len, lrw->IV, lrw->tweak, &lrw->key); + } + + return lrw_process(ct, pt, len, LRW_DECRYPT, lrw); +} + + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/lrw/lrw_done.c b/fsbl/lib/libtomcrypt/src/modes/lrw/lrw_done.c new file mode 100644 index 000000000..0088f6287 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/lrw/lrw_done.c @@ -0,0 +1,40 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file lrw_done.c + LRW_MODE implementation, Free resources, Tom St Denis +*/ + +#ifdef LTC_LRW_MODE + +/** + Terminate a LRW state + @param lrw The state to terminate + @return CRYPT_OK if successful +*/ +int lrw_done(symmetric_LRW *lrw) +{ + int err; + + LTC_ARGCHK(lrw != NULL); + + if ((err = cipher_is_valid(lrw->cipher)) != CRYPT_OK) { + return err; + } + cipher_descriptor[lrw->cipher].done(&lrw->key); + + return CRYPT_OK; +} + +#endif +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/lrw/lrw_encrypt.c b/fsbl/lib/libtomcrypt/src/modes/lrw/lrw_encrypt.c new file mode 100644 index 000000000..0738648e1 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/lrw/lrw_encrypt.c @@ -0,0 +1,48 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file lrw_encrypt.c + LRW_MODE implementation, Encrypt blocks, Tom St Denis +*/ + +#ifdef LTC_LRW_MODE + +/** + LRW encrypt blocks + @param pt The plaintext + @param ct [out] The ciphertext + @param len The length in octets, must be a multiple of 16 + @param lrw The LRW state +*/ +int lrw_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_LRW *lrw) +{ + int err; + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(lrw != NULL); + + if ((err = cipher_is_valid(lrw->cipher)) != CRYPT_OK) { + return err; + } + + if (cipher_descriptor[lrw->cipher].accel_lrw_encrypt != NULL) { + return cipher_descriptor[lrw->cipher].accel_lrw_encrypt(pt, ct, len, lrw->IV, lrw->tweak, &lrw->key); + } + + return lrw_process(pt, ct, len, LRW_ENCRYPT, lrw); +} + + +#endif +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/lrw/lrw_getiv.c b/fsbl/lib/libtomcrypt/src/modes/lrw/lrw_getiv.c new file mode 100644 index 000000000..6dcd96d20 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/lrw/lrw_getiv.c @@ -0,0 +1,43 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file lrw_getiv.c + LRW_MODE implementation, Retrieve the current IV, Tom St Denis +*/ + +#ifdef LTC_LRW_MODE + +/** + Get the IV for LRW + @param IV [out] The IV, must be 16 octets + @param len Length ... must be at least 16 :-) + @param lrw The LRW state to read + @return CRYPT_OK if successful +*/ +int lrw_getiv(unsigned char *IV, unsigned long *len, symmetric_LRW *lrw) +{ + LTC_ARGCHK(IV != NULL); + LTC_ARGCHK(len != NULL); + LTC_ARGCHK(lrw != NULL); + if (*len < 16) { + *len = 16; + return CRYPT_BUFFER_OVERFLOW; + } + + XMEMCPY(IV, lrw->IV, 16); + *len = 16; + return CRYPT_OK; +} + +#endif +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/lrw/lrw_process.c b/fsbl/lib/libtomcrypt/src/modes/lrw/lrw_process.c new file mode 100644 index 000000000..0896bc641 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/lrw/lrw_process.c @@ -0,0 +1,118 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file lrw_process.c + LRW_MODE implementation, Encrypt/decrypt blocks, Tom St Denis +*/ + +#ifdef LTC_LRW_MODE + +/** + Process blocks with LRW, since decrypt/encrypt are largely the same they share this code. + @param pt The "input" data + @param ct [out] The "output" data + @param len The length of the input, must be a multiple of 128-bits (16 octets) + @param mode LRW_ENCRYPT or LRW_DECRYPT + @param lrw The LRW state + @return CRYPT_OK if successful +*/ +int lrw_process(const unsigned char *pt, unsigned char *ct, unsigned long len, int mode, symmetric_LRW *lrw) +{ + unsigned char prod[16]; + int x, err; +#ifdef LTC_LRW_TABLES + int y; +#endif + + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(lrw != NULL); + + if (len & 15) { + return CRYPT_INVALID_ARG; + } + + while (len) { + /* copy pad */ + XMEMCPY(prod, lrw->pad, 16); + + /* increment IV */ + for (x = 15; x >= 0; x--) { + lrw->IV[x] = (lrw->IV[x] + 1) & 255; + if (lrw->IV[x]) { + break; + } + } + + /* update pad */ +#ifdef LTC_LRW_TABLES + /* for each byte changed we undo it's affect on the pad then add the new product */ + for (; x < 16; x++) { +#ifdef LTC_FAST + for (y = 0; y < 16; y += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST(lrw->pad + y)) ^= *(LTC_FAST_TYPE_PTR_CAST(&lrw->PC[x][lrw->IV[x]][y])) ^ *(LTC_FAST_TYPE_PTR_CAST(&lrw->PC[x][(lrw->IV[x]-1)&255][y])); + } +#else + for (y = 0; y < 16; y++) { + lrw->pad[y] ^= lrw->PC[x][lrw->IV[x]][y] ^ lrw->PC[x][(lrw->IV[x]-1)&255][y]; + } +#endif + } +#else + gcm_gf_mult(lrw->tweak, lrw->IV, lrw->pad); +#endif + + /* xor prod */ +#ifdef LTC_FAST + for (x = 0; x < 16; x += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST(ct + x)) = *(LTC_FAST_TYPE_PTR_CAST(pt + x)) ^ *(LTC_FAST_TYPE_PTR_CAST(prod + x)); + } +#else + for (x = 0; x < 16; x++) { + ct[x] = pt[x] ^ prod[x]; + } +#endif + + /* send through cipher */ + if (mode == LRW_ENCRYPT) { + if ((err = cipher_descriptor[lrw->cipher].ecb_encrypt(ct, ct, &lrw->key)) != CRYPT_OK) { + return err; + } + } else { + if ((err = cipher_descriptor[lrw->cipher].ecb_decrypt(ct, ct, &lrw->key)) != CRYPT_OK) { + return err; + } + } + + /* xor prod */ +#ifdef LTC_FAST + for (x = 0; x < 16; x += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST(ct + x)) = *(LTC_FAST_TYPE_PTR_CAST(ct + x)) ^ *(LTC_FAST_TYPE_PTR_CAST(prod + x)); + } +#else + for (x = 0; x < 16; x++) { + ct[x] = ct[x] ^ prod[x]; + } +#endif + + /* move to next */ + pt += 16; + ct += 16; + len -= 16; + } + + return CRYPT_OK; +} + +#endif +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/lrw/lrw_setiv.c b/fsbl/lib/libtomcrypt/src/modes/lrw/lrw_setiv.c new file mode 100644 index 000000000..5c04157a6 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/lrw/lrw_setiv.c @@ -0,0 +1,77 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file lrw_setiv.c + LRW_MODE implementation, Set the current IV, Tom St Denis +*/ + +#ifdef LTC_LRW_MODE + +/** + Set the IV for LRW + @param IV The IV, must be 16 octets + @param len Length ... must be 16 :-) + @param lrw The LRW state to update + @return CRYPT_OK if successful +*/ +int lrw_setiv(const unsigned char *IV, unsigned long len, symmetric_LRW *lrw) +{ + int err; +#ifdef LTC_LRW_TABLES + unsigned char T[16]; + int x, y; +#endif + LTC_ARGCHK(IV != NULL); + LTC_ARGCHK(lrw != NULL); + + if (len != 16) { + return CRYPT_INVALID_ARG; + } + + if ((err = cipher_is_valid(lrw->cipher)) != CRYPT_OK) { + return err; + } + + /* copy the IV */ + XMEMCPY(lrw->IV, IV, 16); + + /* check if we have to actually do work */ + if (cipher_descriptor[lrw->cipher].accel_lrw_encrypt != NULL && cipher_descriptor[lrw->cipher].accel_lrw_decrypt != NULL) { + /* we have accelerators, let's bail since they don't use lrw->pad anyways */ + return CRYPT_OK; + } + +#ifdef LTC_LRW_TABLES + XMEMCPY(T, &lrw->PC[0][IV[0]][0], 16); + for (x = 1; x < 16; x++) { +#ifdef LTC_FAST + for (y = 0; y < 16; y += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST(T + y)) ^= *(LTC_FAST_TYPE_PTR_CAST(&lrw->PC[x][IV[x]][y])); + } +#else + for (y = 0; y < 16; y++) { + T[y] ^= lrw->PC[x][IV[x]][y]; + } +#endif + } + XMEMCPY(lrw->pad, T, 16); +#else + gcm_gf_mult(lrw->tweak, IV, lrw->pad); +#endif + + return CRYPT_OK; +} + + +#endif +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/lrw/lrw_start.c b/fsbl/lib/libtomcrypt/src/modes/lrw/lrw_start.c new file mode 100644 index 000000000..e13d3bdd3 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/lrw/lrw_start.c @@ -0,0 +1,101 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file lrw_start.c + LRW_MODE implementation, start mode, Tom St Denis +*/ + +#ifdef LTC_LRW_MODE + +/** + Initialize the LRW context + @param cipher The cipher desired, must be a 128-bit block cipher + @param IV The index value, must be 128-bits + @param key The cipher key + @param keylen The length of the cipher key in octets + @param tweak The tweak value (second key), must be 128-bits + @param num_rounds The number of rounds for the cipher (0 == default) + @param lrw [out] The LRW state + @return CRYPT_OK on success. +*/ +int lrw_start( int cipher, + const unsigned char *IV, + const unsigned char *key, int keylen, + const unsigned char *tweak, + int num_rounds, + symmetric_LRW *lrw) +{ + int err; +#ifdef LTC_LRW_TABLES + unsigned char B[16]; + int x, y, z, t; +#endif + + LTC_ARGCHK(IV != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(tweak != NULL); + LTC_ARGCHK(lrw != NULL); + +#ifdef LTC_FAST + if (16 % sizeof(LTC_FAST_TYPE)) { + return CRYPT_INVALID_ARG; + } +#endif + + /* is cipher valid? */ + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + if (cipher_descriptor[cipher].block_length != 16) { + return CRYPT_INVALID_CIPHER; + } + + /* schedule key */ + if ((err = cipher_descriptor[cipher].setup(key, keylen, num_rounds, &lrw->key)) != CRYPT_OK) { + return err; + } + lrw->cipher = cipher; + + /* copy the IV and tweak */ + XMEMCPY(lrw->tweak, tweak, 16); + +#ifdef LTC_LRW_TABLES + /* setup tables */ + /* generate the first table as it has no shifting (from which we make the other tables) */ + zeromem(B, 16); + for (y = 0; y < 256; y++) { + B[0] = y; + gcm_gf_mult(tweak, B, &lrw->PC[0][y][0]); + } + + /* now generate the rest of the tables based the previous table */ + for (x = 1; x < 16; x++) { + for (y = 0; y < 256; y++) { + /* now shift it right by 8 bits */ + t = lrw->PC[x-1][y][15]; + for (z = 15; z > 0; z--) { + lrw->PC[x][y][z] = lrw->PC[x-1][y][z-1]; + } + lrw->PC[x][y][0] = gcm_shift_table[t<<1]; + lrw->PC[x][y][1] ^= gcm_shift_table[(t<<1)+1]; + } + } +#endif + + /* generate first pad */ + return lrw_setiv(IV, 16, lrw); +} + + +#endif +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/lrw/lrw_test.c b/fsbl/lib/libtomcrypt/src/modes/lrw/lrw_test.c new file mode 100644 index 000000000..7762d47d8 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/lrw/lrw_test.c @@ -0,0 +1,134 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file lrw_test.c + LRW_MODE implementation, test LRW, Tom St Denis +*/ + +#ifdef LTC_LRW_MODE + +/** + Test LRW against specs + @return CRYPT_OK if goodly +*/ +int lrw_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + static const struct { + unsigned char key[16], tweak[16], IV[16], P[16], expected_tweak[16], C[16]; + } tests[] = { + +{ +{ 0x45, 0x62, 0xac, 0x25, 0xf8, 0x28, 0x17, 0x6d, 0x4c, 0x26, 0x84, 0x14, 0xb5, 0x68, 0x01, 0x85 }, +{ 0x25, 0x8e, 0x2a, 0x05, 0xe7, 0x3e, 0x9d, 0x03, 0xee, 0x5a, 0x83, 0x0c, 0xcc, 0x09, 0x4c, 0x87 }, +{ 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, +{ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, +{ 0x25, 0x8e, 0x2a, 0x05, 0xe7, 0x3e, 0x9d, 0x03, 0xee, 0x5a, 0x83, 0x0c, 0xcc, 0x09, 0x4c, 0x87 }, +{ 0xf1, 0xb2, 0x73, 0xcd, 0x65, 0xa3, 0xdf, 0x5f, 0xe9, 0x5d, 0x48, 0x92, 0x54, 0x63, 0x4e, 0xb8 } +}, + +{ +{ 0x59, 0x70, 0x47, 0x14, 0xf5, 0x57, 0x47, 0x8c, 0xd7, 0x79, 0xe8, 0x0f, 0x54, 0x88, 0x79, 0x44 }, +{ 0x35, 0x23, 0xc2, 0xde, 0xc5, 0x69, 0x4f, 0xa8, 0x72, 0xa9, 0xac, 0xa7, 0x0b, 0x2b, 0xee, 0xbc }, +{ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, +{ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, +{ 0x1a, 0x91, 0xe1, 0x6f, 0x62, 0xb4, 0xa7, 0xd4, 0x39, 0x54, 0xd6, 0x53, 0x85, 0x95, 0xf7, 0x5e }, +{ 0x00, 0xc8, 0x2b, 0xae, 0x95, 0xbb, 0xcd, 0xe5, 0x27, 0x4f, 0x07, 0x69, 0xb2, 0x60, 0xe1, 0x36 }, +}, + +{ +{ 0x59, 0x70, 0x47, 0x14, 0xf5, 0x57, 0x47, 0x8c, 0xd7, 0x79, 0xe8, 0x0f, 0x54, 0x88, 0x79, 0x44 }, +{ 0x67, 0x53, 0xc9, 0x0c, 0xb7, 0xd8, 0xcd, 0xe5, 0x06, 0xa0, 0x47, 0x78, 0x1a, 0xad, 0x85, 0x11 }, +{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }, +{ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, +{ 0x1a, 0x91, 0xe1, 0x6f, 0x62, 0xb4, 0xa7, 0xd4, 0x39, 0x54, 0xd6, 0x53, 0x85, 0x95, 0xf7, 0x5e }, +{ 0x00, 0xc8, 0x2b, 0xae, 0x95, 0xbb, 0xcd, 0xe5, 0x27, 0x4f, 0x07, 0x69, 0xb2, 0x60, 0xe1, 0x36 }, +}, + +{ + +{ 0xd8, 0x2a, 0x91, 0x34, 0xb2, 0x6a, 0x56, 0x50, 0x30, 0xfe, 0x69, 0xe2, 0x37, 0x7f, 0x98, 0x47 }, +{ 0x4e, 0xb5, 0x5d, 0x31, 0x05, 0x97, 0x3a, 0x3f, 0x5e, 0x23, 0xda, 0xfb, 0x5a, 0x45, 0xd6, 0xc0 }, +{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00 }, +{ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 }, +{ 0x18, 0xc9, 0x1f, 0x6d, 0x60, 0x1a, 0x1a, 0x37, 0x5d, 0x0b, 0x0e, 0xf7, 0x3a, 0xd5, 0x74, 0xc4 }, +{ 0x76, 0x32, 0x21, 0x83, 0xed, 0x8f, 0xf1, 0x82, 0xf9, 0x59, 0x62, 0x03, 0x69, 0x0e, 0x5e, 0x01 }, + +} +}; + + int idx, err, x; + symmetric_LRW lrw; + unsigned char buf[2][16]; + + idx = find_cipher("aes"); + if (idx == -1) { + idx = find_cipher("rijndael"); + if (idx == -1) { + return CRYPT_NOP; + } + } + + for (x = 0; x < (int)(sizeof(tests)/sizeof(tests[0])); x++) { + /* schedule it */ + if ((err = lrw_start(idx, tests[x].IV, tests[x].key, 16, tests[x].tweak, 0, &lrw)) != CRYPT_OK) { + return err; + } + + /* check pad against expected tweak */ + if (compare_testvector(tests[x].expected_tweak, 16, lrw.pad, 16, "LRW Tweak", x)) { + lrw_done(&lrw); + return CRYPT_FAIL_TESTVECTOR; + } + + /* process block */ + if ((err = lrw_encrypt(tests[x].P, buf[0], 16, &lrw)) != CRYPT_OK) { + lrw_done(&lrw); + return err; + } + + if (compare_testvector(buf[0], 16, tests[x].C, 16, "LRW Encrypt", x)) { + lrw_done(&lrw); + return CRYPT_FAIL_TESTVECTOR; + } + + /* process block */ + if ((err = lrw_setiv(tests[x].IV, 16, &lrw)) != CRYPT_OK) { + lrw_done(&lrw); + return err; + } + + if ((err = lrw_decrypt(buf[0], buf[1], 16, &lrw)) != CRYPT_OK) { + lrw_done(&lrw); + return err; + } + + if (compare_testvector(buf[1], 16, tests[x].P, 16, "LRW Decrypt", x)) { + lrw_done(&lrw); + return CRYPT_FAIL_TESTVECTOR; + } + if ((err = lrw_done(&lrw)) != CRYPT_OK) { + return err; + } + } + return CRYPT_OK; +#endif +} + +#endif + + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/ofb/ofb_decrypt.c b/fsbl/lib/libtomcrypt/src/modes/ofb/ofb_decrypt.c new file mode 100644 index 000000000..f40280263 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/ofb/ofb_decrypt.c @@ -0,0 +1,41 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file ofb_decrypt.c + OFB implementation, decrypt data, Tom St Denis +*/ + +#ifdef LTC_OFB_MODE + +/** + OFB decrypt + @param ct Ciphertext + @param pt [out] Plaintext + @param len Length of ciphertext (octets) + @param ofb OFB state + @return CRYPT_OK if successful +*/ +int ofb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_OFB *ofb) +{ + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(ofb != NULL); + return ofb_encrypt(ct, pt, len, ofb); +} + + +#endif + + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/ofb/ofb_done.c b/fsbl/lib/libtomcrypt/src/modes/ofb/ofb_done.c new file mode 100644 index 000000000..9caddbeb5 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/ofb/ofb_done.c @@ -0,0 +1,40 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file ofb_done.c + OFB implementation, finish chain, Tom St Denis +*/ + +#ifdef LTC_OFB_MODE + +/** Terminate the chain + @param ofb The OFB chain to terminate + @return CRYPT_OK on success +*/ +int ofb_done(symmetric_OFB *ofb) +{ + int err; + LTC_ARGCHK(ofb != NULL); + + if ((err = cipher_is_valid(ofb->cipher)) != CRYPT_OK) { + return err; + } + cipher_descriptor[ofb->cipher].done(&ofb->key); + return CRYPT_OK; +} + + + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/ofb/ofb_encrypt.c b/fsbl/lib/libtomcrypt/src/modes/ofb/ofb_encrypt.c new file mode 100644 index 000000000..415842d3e --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/ofb/ofb_encrypt.c @@ -0,0 +1,58 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file ofb_encrypt.c + OFB implementation, encrypt data, Tom St Denis +*/ + +#ifdef LTC_OFB_MODE + +/** + OFB encrypt + @param pt Plaintext + @param ct [out] Ciphertext + @param len Length of plaintext (octets) + @param ofb OFB state + @return CRYPT_OK if successful +*/ +int ofb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_OFB *ofb) +{ + int err; + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(ofb != NULL); + if ((err = cipher_is_valid(ofb->cipher)) != CRYPT_OK) { + return err; + } + + /* is blocklen/padlen valid? */ + if (ofb->blocklen < 0 || ofb->blocklen > (int)sizeof(ofb->IV) || + ofb->padlen < 0 || ofb->padlen > (int)sizeof(ofb->IV)) { + return CRYPT_INVALID_ARG; + } + + while (len-- > 0) { + if (ofb->padlen == ofb->blocklen) { + if ((err = cipher_descriptor[ofb->cipher].ecb_encrypt(ofb->IV, ofb->IV, &ofb->key)) != CRYPT_OK) { + return err; + } + ofb->padlen = 0; + } + *ct++ = *pt++ ^ ofb->IV[(ofb->padlen)++]; + } + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/ofb/ofb_getiv.c b/fsbl/lib/libtomcrypt/src/modes/ofb/ofb_getiv.c new file mode 100644 index 000000000..e6bc0ede0 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/ofb/ofb_getiv.c @@ -0,0 +1,44 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file ofb_getiv.c + OFB implementation, get IV, Tom St Denis +*/ + +#ifdef LTC_OFB_MODE + +/** + Get the current initialization vector + @param IV [out] The destination of the initialization vector + @param len [in/out] The max size and resulting size of the initialization vector + @param ofb The OFB state + @return CRYPT_OK if successful +*/ +int ofb_getiv(unsigned char *IV, unsigned long *len, symmetric_OFB *ofb) +{ + LTC_ARGCHK(IV != NULL); + LTC_ARGCHK(len != NULL); + LTC_ARGCHK(ofb != NULL); + if ((unsigned long)ofb->blocklen > *len) { + *len = ofb->blocklen; + return CRYPT_BUFFER_OVERFLOW; + } + XMEMCPY(IV, ofb->IV, ofb->blocklen); + *len = ofb->blocklen; + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/ofb/ofb_setiv.c b/fsbl/lib/libtomcrypt/src/modes/ofb/ofb_setiv.c new file mode 100644 index 000000000..005dbc7ad --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/ofb/ofb_setiv.c @@ -0,0 +1,50 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file ofb_setiv.c + OFB implementation, set IV, Tom St Denis +*/ + +#ifdef LTC_OFB_MODE + +/** + Set an initialization vector + @param IV The initialization vector + @param len The length of the vector (in octets) + @param ofb The OFB state + @return CRYPT_OK if successful +*/ +int ofb_setiv(const unsigned char *IV, unsigned long len, symmetric_OFB *ofb) +{ + int err; + + LTC_ARGCHK(IV != NULL); + LTC_ARGCHK(ofb != NULL); + + if ((err = cipher_is_valid(ofb->cipher)) != CRYPT_OK) { + return err; + } + + if (len != (unsigned long)ofb->blocklen) { + return CRYPT_INVALID_ARG; + } + + /* force next block */ + ofb->padlen = 0; + return cipher_descriptor[ofb->cipher].ecb_encrypt(IV, ofb->IV, &ofb->key); +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/ofb/ofb_start.c b/fsbl/lib/libtomcrypt/src/modes/ofb/ofb_start.c new file mode 100644 index 000000000..fe7a764fd --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/ofb/ofb_start.c @@ -0,0 +1,58 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file ofb_start.c + OFB implementation, start chain, Tom St Denis +*/ + + +#ifdef LTC_OFB_MODE + +/** + Initialize a OFB context + @param cipher The index of the cipher desired + @param IV The initialization vector + @param key The secret key + @param keylen The length of the secret key (octets) + @param num_rounds Number of rounds in the cipher desired (0 for default) + @param ofb The OFB state to initialize + @return CRYPT_OK if successful +*/ +int ofb_start(int cipher, const unsigned char *IV, const unsigned char *key, + int keylen, int num_rounds, symmetric_OFB *ofb) +{ + int x, err; + + LTC_ARGCHK(IV != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(ofb != NULL); + + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + + /* copy details */ + ofb->cipher = cipher; + ofb->blocklen = cipher_descriptor[cipher].block_length; + for (x = 0; x < ofb->blocklen; x++) { + ofb->IV[x] = IV[x]; + } + + /* init the cipher */ + ofb->padlen = ofb->blocklen; + return cipher_descriptor[cipher].setup(key, keylen, num_rounds, &ofb->key); +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/xts/xts_decrypt.c b/fsbl/lib/libtomcrypt/src/modes/xts/xts_decrypt.c new file mode 100644 index 000000000..458099150 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/xts/xts_decrypt.c @@ -0,0 +1,156 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + Source donated by Elliptic Semiconductor Inc (www.ellipticsemi.com) to the LibTom Projects + */ + +#ifdef LTC_XTS_MODE + +static int _tweak_uncrypt(const unsigned char *C, unsigned char *P, unsigned char *T, symmetric_xts *xts) +{ + unsigned long x; + int err; + + /* tweak encrypt block i */ +#ifdef LTC_FAST + for (x = 0; x < 16; x += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST(&P[x])) = *(LTC_FAST_TYPE_PTR_CAST(&C[x])) ^ *(LTC_FAST_TYPE_PTR_CAST(&T[x])); + } +#else + for (x = 0; x < 16; x++) { + P[x] = C[x] ^ T[x]; + } +#endif + + err = cipher_descriptor[xts->cipher].ecb_decrypt(P, P, &xts->key1); + +#ifdef LTC_FAST + for (x = 0; x < 16; x += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST(&P[x])) ^= *(LTC_FAST_TYPE_PTR_CAST(&T[x])); + } +#else + for (x = 0; x < 16; x++) { + P[x] = P[x] ^ T[x]; + } +#endif + + /* LFSR the tweak */ + xts_mult_x(T); + + return err; +} + +/** XTS Decryption + @param ct [in] Ciphertext + @param ptlen Length of plaintext (and ciphertext) + @param pt [out] Plaintext + @param tweak [in] The 128--bit encryption tweak (e.g. sector number) + @param xts The XTS structure + Returns CRYPT_OK upon success + */ +int xts_decrypt(const unsigned char *ct, unsigned long ptlen, unsigned char *pt, unsigned char *tweak, + symmetric_xts *xts) +{ + unsigned char PP[16], CC[16], T[16]; + unsigned long i, m, mo, lim; + int err; + + /* check inputs */ + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(tweak != NULL); + LTC_ARGCHK(xts != NULL); + + /* check if valid */ + if ((err = cipher_is_valid(xts->cipher)) != CRYPT_OK) { + return err; + } + + /* get number of blocks */ + m = ptlen >> 4; + mo = ptlen & 15; + + /* must have at least one full block */ + if (m == 0) { + return CRYPT_INVALID_ARG; + } + + if (mo == 0) { + lim = m; + } else { + lim = m - 1; + } + + if (cipher_descriptor[xts->cipher].accel_xts_decrypt && lim > 0) { + + /* use accelerated decryption for whole blocks */ + if ((err = cipher_descriptor[xts->cipher].accel_xts_decrypt(ct, pt, lim, tweak, &xts->key1, &xts->key2)) != + CRYPT_OK) { + return err; + } + ct += lim * 16; + pt += lim * 16; + + /* tweak is encrypted on output */ + XMEMCPY(T, tweak, sizeof(T)); + } else { + /* encrypt the tweak */ + if ((err = cipher_descriptor[xts->cipher].ecb_encrypt(tweak, T, &xts->key2)) != CRYPT_OK) { + return err; + } + + for (i = 0; i < lim; i++) { + if ((err = _tweak_uncrypt(ct, pt, T, xts)) != CRYPT_OK) { + return err; + } + ct += 16; + pt += 16; + } + } + + /* if ptlen not divide 16 then */ + if (mo > 0) { + XMEMCPY(CC, T, 16); + xts_mult_x(CC); + + /* PP = tweak decrypt block m-1 */ + if ((err = _tweak_uncrypt(ct, PP, CC, xts)) != CRYPT_OK) { + return err; + } + + /* Pm = first ptlen % 16 bytes of PP */ + for (i = 0; i < mo; i++) { + CC[i] = ct[16 + i]; + pt[16 + i] = PP[i]; + } + for (; i < 16; i++) { + CC[i] = PP[i]; + } + + /* Pm-1 = Tweak uncrypt CC */ + if ((err = _tweak_uncrypt(CC, pt, T, xts)) != CRYPT_OK) { + return err; + } + } + + /* Decrypt the tweak back */ + if ((err = cipher_descriptor[xts->cipher].ecb_decrypt(T, tweak, &xts->key2)) != CRYPT_OK) { + return err; + } + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/xts/xts_done.c b/fsbl/lib/libtomcrypt/src/modes/xts/xts_done.c new file mode 100644 index 000000000..558c04327 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/xts/xts_done.c @@ -0,0 +1,31 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + Source donated by Elliptic Semiconductor Inc (www.ellipticsemi.com) to the LibTom Projects +*/ + +#ifdef LTC_XTS_MODE + +/** Terminate XTS state + @param xts The state to terminate +*/ +void xts_done(symmetric_xts *xts) +{ + LTC_ARGCHKVD(xts != NULL); + cipher_descriptor[xts->cipher].done(&xts->key1); + cipher_descriptor[xts->cipher].done(&xts->key2); +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/xts/xts_encrypt.c b/fsbl/lib/libtomcrypt/src/modes/xts/xts_encrypt.c new file mode 100644 index 000000000..787c30212 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/xts/xts_encrypt.c @@ -0,0 +1,157 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + Source donated by Elliptic Semiconductor Inc (www.ellipticsemi.com) to the LibTom Projects + */ + +#ifdef LTC_XTS_MODE + +static int _tweak_crypt(const unsigned char *P, unsigned char *C, unsigned char *T, symmetric_xts *xts) +{ + unsigned long x; + int err; + + /* tweak encrypt block i */ +#ifdef LTC_FAST + for (x = 0; x < 16; x += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST(&C[x])) = *(LTC_FAST_TYPE_PTR_CAST(&P[x])) ^ *(LTC_FAST_TYPE_PTR_CAST(&T[x])); + } +#else + for (x = 0; x < 16; x++) { + C[x] = P[x] ^ T[x]; + } +#endif + + if ((err = cipher_descriptor[xts->cipher].ecb_encrypt(C, C, &xts->key1)) != CRYPT_OK) { + return err; + } + +#ifdef LTC_FAST + for (x = 0; x < 16; x += sizeof(LTC_FAST_TYPE)) { + *(LTC_FAST_TYPE_PTR_CAST(&C[x])) ^= *(LTC_FAST_TYPE_PTR_CAST(&T[x])); + } +#else + for (x = 0; x < 16; x++) { + C[x] = C[x] ^ T[x]; + } +#endif + + /* LFSR the tweak */ + xts_mult_x(T); + + return CRYPT_OK; +} + +/** XTS Encryption + @param pt [in] Plaintext + @param ptlen Length of plaintext (and ciphertext) + @param ct [out] Ciphertext + @param tweak [in] The 128--bit encryption tweak (e.g. sector number) + @param xts The XTS structure + Returns CRYPT_OK upon success + */ +int xts_encrypt(const unsigned char *pt, unsigned long ptlen, unsigned char *ct, unsigned char *tweak, + symmetric_xts *xts) +{ + unsigned char PP[16], CC[16], T[16]; + unsigned long i, m, mo, lim; + int err; + + /* check inputs */ + LTC_ARGCHK(pt != NULL); + LTC_ARGCHK(ct != NULL); + LTC_ARGCHK(tweak != NULL); + LTC_ARGCHK(xts != NULL); + + /* check if valid */ + if ((err = cipher_is_valid(xts->cipher)) != CRYPT_OK) { + return err; + } + + /* get number of blocks */ + m = ptlen >> 4; + mo = ptlen & 15; + + /* must have at least one full block */ + if (m == 0) { + return CRYPT_INVALID_ARG; + } + + if (mo == 0) { + lim = m; + } else { + lim = m - 1; + } + + if (cipher_descriptor[xts->cipher].accel_xts_encrypt && lim > 0) { + + /* use accelerated encryption for whole blocks */ + if ((err = cipher_descriptor[xts->cipher].accel_xts_encrypt(pt, ct, lim, tweak, &xts->key1, &xts->key2)) != + CRYPT_OK) { + return err; + } + ct += lim * 16; + pt += lim * 16; + + /* tweak is encrypted on output */ + XMEMCPY(T, tweak, sizeof(T)); + } else { + + /* encrypt the tweak */ + if ((err = cipher_descriptor[xts->cipher].ecb_encrypt(tweak, T, &xts->key2)) != CRYPT_OK) { + return err; + } + + for (i = 0; i < lim; i++) { + if ((err = _tweak_crypt(pt, ct, T, xts)) != CRYPT_OK) { + return err; + } + ct += 16; + pt += 16; + } + } + + /* if ptlen not divide 16 then */ + if (mo > 0) { + /* CC = tweak encrypt block m-1 */ + if ((err = _tweak_crypt(pt, CC, T, xts)) != CRYPT_OK) { + return err; + } + + /* Cm = first ptlen % 16 bytes of CC */ + for (i = 0; i < mo; i++) { + PP[i] = pt[16 + i]; + ct[16 + i] = CC[i]; + } + + for (; i < 16; i++) { + PP[i] = CC[i]; + } + + /* Cm-1 = Tweak encrypt PP */ + if ((err = _tweak_crypt(PP, ct, T, xts)) != CRYPT_OK) { + return err; + } + } + + /* Decrypt the tweak back */ + if ((err = cipher_descriptor[xts->cipher].ecb_decrypt(T, tweak, &xts->key2)) != CRYPT_OK) { + return err; + } + + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/xts/xts_init.c b/fsbl/lib/libtomcrypt/src/modes/xts/xts_init.c new file mode 100644 index 000000000..be0ac6ad4 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/xts/xts_init.c @@ -0,0 +1,61 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + Source donated by Elliptic Semiconductor Inc (www.ellipticsemi.com) to the LibTom Projects +*/ + +#ifdef LTC_XTS_MODE + +/** Start XTS mode + @param cipher The index of the cipher to use + @param key1 The encrypt key + @param key2 The tweak encrypt key + @param keylen The length of the keys (each) in octets + @param num_rounds The number of rounds for the cipher (0 == default) + @param xts [out] XTS structure + Returns CRYPT_OK upon success. +*/ +int xts_start(int cipher, const unsigned char *key1, const unsigned char *key2, unsigned long keylen, int num_rounds, + symmetric_xts *xts) +{ + int err; + + /* check inputs */ + LTC_ARGCHK(key1 != NULL); + LTC_ARGCHK(key2 != NULL); + LTC_ARGCHK(xts != NULL); + + /* check if valid */ + if ((err = cipher_is_valid(cipher)) != CRYPT_OK) { + return err; + } + + if (cipher_descriptor[cipher].block_length != 16) { + return CRYPT_INVALID_ARG; + } + + /* schedule the two ciphers */ + if ((err = cipher_descriptor[cipher].setup(key1, keylen, num_rounds, &xts->key1)) != CRYPT_OK) { + return err; + } + if ((err = cipher_descriptor[cipher].setup(key2, keylen, num_rounds, &xts->key2)) != CRYPT_OK) { + return err; + } + xts->cipher = cipher; + + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/xts/xts_mult_x.c b/fsbl/lib/libtomcrypt/src/modes/xts/xts_mult_x.c new file mode 100644 index 000000000..3fad22bd8 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/xts/xts_mult_x.c @@ -0,0 +1,39 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + Source donated by Elliptic Semiconductor Inc (www.ellipticsemi.com) to the LibTom Projects +*/ + +#ifdef LTC_XTS_MODE + +/** multiply by x + @param I The value to multiply by x (LFSR shift) +*/ +void xts_mult_x(unsigned char *I) +{ + int x; + unsigned char t, tt; + + for (x = t = 0; x < 16; x++) { + tt = I[x] >> 7; + I[x] = ((I[x] << 1) | t) & 0xFF; + t = tt; + } + if (tt) { + I[0] ^= 0x87; + } +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/modes/xts/xts_test.c b/fsbl/lib/libtomcrypt/src/modes/xts/xts_test.c new file mode 100644 index 000000000..347fb4b76 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/modes/xts/xts_test.c @@ -0,0 +1,306 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +#ifdef LTC_XTS_MODE + +#ifndef LTC_NO_TEST +static int _xts_test_accel_xts_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long blocks, + unsigned char *tweak, symmetric_key *skey1, symmetric_key *skey2) +{ + int ret; + symmetric_xts xts; + int (*orig)(const unsigned char *, unsigned char *, + unsigned long , unsigned char *, symmetric_key *, + symmetric_key *); + + /* AES can be under rijndael or aes... try to find it */ + if ((xts.cipher = find_cipher("aes")) == -1) { + if ((xts.cipher = find_cipher("rijndael")) == -1) { + return CRYPT_NOP; + } + } + orig = cipher_descriptor[xts.cipher].accel_xts_encrypt; + cipher_descriptor[xts.cipher].accel_xts_encrypt = NULL; + + XMEMCPY(&xts.key1, skey1, sizeof(symmetric_key)); + XMEMCPY(&xts.key2, skey2, sizeof(symmetric_key)); + + ret = xts_encrypt(pt, blocks << 4, ct, tweak, &xts); + cipher_descriptor[xts.cipher].accel_xts_encrypt = orig; + + return ret; +} + +static int _xts_test_accel_xts_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long blocks, + unsigned char *tweak, symmetric_key *skey1, symmetric_key *skey2) +{ + int ret; + symmetric_xts xts; + int (*orig)(const unsigned char *, unsigned char *, + unsigned long , unsigned char *, symmetric_key *, + symmetric_key *); + + /* AES can be under rijndael or aes... try to find it */ + if ((xts.cipher = find_cipher("aes")) == -1) { + if ((xts.cipher = find_cipher("rijndael")) == -1) { + return CRYPT_NOP; + } + } + orig = cipher_descriptor[xts.cipher].accel_xts_decrypt; + cipher_descriptor[xts.cipher].accel_xts_decrypt = NULL; + + XMEMCPY(&xts.key1, skey1, sizeof(symmetric_key)); + XMEMCPY(&xts.key2, skey2, sizeof(symmetric_key)); + + ret = xts_decrypt(ct, blocks << 4, pt, tweak, &xts); + cipher_descriptor[xts.cipher].accel_xts_decrypt = orig; + + return ret; +} +#endif + +/** + Source donated by Elliptic Semiconductor Inc (www.ellipticsemi.com) to the LibTom Projects + + Returns CRYPT_OK upon success. +*/ +int xts_test(void) +{ +#ifdef LTC_NO_TEST + return CRYPT_NOP; +#else + static const struct + { + int keylen; + unsigned char key1[32]; + unsigned char key2[32]; + ulong64 seqnum; + unsigned long PTLEN; + unsigned char PTX[512], CTX[512]; + } tests[] = { + +/* #1 32 byte key, 32 byte PTX */ +{ + 32, + { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, + { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, + 0, + 32, + { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, + { 0x91,0x7c,0xf6,0x9e,0xbd,0x68,0xb2,0xec,0x9b,0x9f,0xe9,0xa3,0xea,0xdd,0xa6,0x92,0xcd,0x43,0xd2,0xf5,0x95,0x98,0xed,0x85,0x8c,0x02,0xc2,0x65,0x2f,0xbf,0x92,0x2e }, +}, + +/* #2, 32 byte key, 32 byte PTX */ +{ + 32, + { 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11 }, + { 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22 }, + CONST64(0x3333333333), + 32, + { 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44 }, + { 0xc4,0x54,0x18,0x5e,0x6a,0x16,0x93,0x6e,0x39,0x33,0x40,0x38,0xac,0xef,0x83,0x8b,0xfb,0x18,0x6f,0xff,0x74,0x80,0xad,0xc4,0x28,0x93,0x82,0xec,0xd6,0xd3,0x94,0xf0 }, +}, + +/* #5 from xts.7, 32 byte key, 32 byte PTX */ +{ + 32, + { 0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0 }, + { 0xbf,0xbe,0xbd,0xbc,0xbb,0xba,0xb9,0xb8,0xb7,0xb6,0xb5,0xb4,0xb3,0xb2,0xb1,0xb0 }, + CONST64(0x123456789a), + 32, + { 0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44,0x44 }, + { 0xb0,0x1f,0x86,0xf8,0xed,0xc1,0x86,0x37,0x06,0xfa,0x8a,0x42,0x53,0xe3,0x4f,0x28,0xaf,0x31,0x9d,0xe3,0x83,0x34,0x87,0x0f,0x4d,0xd1,0xf9,0x4c,0xbe,0x98,0x32,0xf1 }, +}, + +/* #4, 32 byte key, 512 byte PTX */ +{ + 32, + { 0x27,0x18,0x28,0x18,0x28,0x45,0x90,0x45,0x23,0x53,0x60,0x28,0x74,0x71,0x35,0x26 }, + { 0x31,0x41,0x59,0x26,0x53,0x58,0x97,0x93,0x23,0x84,0x62,0x64,0x33,0x83,0x27,0x95 }, + 0, + 512, + { +0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f, +0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f, +0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f, +0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f, +0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f, +0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf, +0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf, +0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef,0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff, +0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f, +0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f, +0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f, +0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f, +0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f, +0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf, +0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf, +0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef,0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff, + }, + { +0x27,0xa7,0x47,0x9b,0xef,0xa1,0xd4,0x76,0x48,0x9f,0x30,0x8c,0xd4,0xcf,0xa6,0xe2,0xa9,0x6e,0x4b,0xbe,0x32,0x08,0xff,0x25,0x28,0x7d,0xd3,0x81,0x96,0x16,0xe8,0x9c, +0xc7,0x8c,0xf7,0xf5,0xe5,0x43,0x44,0x5f,0x83,0x33,0xd8,0xfa,0x7f,0x56,0x00,0x00,0x05,0x27,0x9f,0xa5,0xd8,0xb5,0xe4,0xad,0x40,0xe7,0x36,0xdd,0xb4,0xd3,0x54,0x12, +0x32,0x80,0x63,0xfd,0x2a,0xab,0x53,0xe5,0xea,0x1e,0x0a,0x9f,0x33,0x25,0x00,0xa5,0xdf,0x94,0x87,0xd0,0x7a,0x5c,0x92,0xcc,0x51,0x2c,0x88,0x66,0xc7,0xe8,0x60,0xce, +0x93,0xfd,0xf1,0x66,0xa2,0x49,0x12,0xb4,0x22,0x97,0x61,0x46,0xae,0x20,0xce,0x84,0x6b,0xb7,0xdc,0x9b,0xa9,0x4a,0x76,0x7a,0xae,0xf2,0x0c,0x0d,0x61,0xad,0x02,0x65, +0x5e,0xa9,0x2d,0xc4,0xc4,0xe4,0x1a,0x89,0x52,0xc6,0x51,0xd3,0x31,0x74,0xbe,0x51,0xa1,0x0c,0x42,0x11,0x10,0xe6,0xd8,0x15,0x88,0xed,0xe8,0x21,0x03,0xa2,0x52,0xd8, +0xa7,0x50,0xe8,0x76,0x8d,0xef,0xff,0xed,0x91,0x22,0x81,0x0a,0xae,0xb9,0x9f,0x91,0x72,0xaf,0x82,0xb6,0x04,0xdc,0x4b,0x8e,0x51,0xbc,0xb0,0x82,0x35,0xa6,0xf4,0x34, +0x13,0x32,0xe4,0xca,0x60,0x48,0x2a,0x4b,0xa1,0xa0,0x3b,0x3e,0x65,0x00,0x8f,0xc5,0xda,0x76,0xb7,0x0b,0xf1,0x69,0x0d,0xb4,0xea,0xe2,0x9c,0x5f,0x1b,0xad,0xd0,0x3c, +0x5c,0xcf,0x2a,0x55,0xd7,0x05,0xdd,0xcd,0x86,0xd4,0x49,0x51,0x1c,0xeb,0x7e,0xc3,0x0b,0xf1,0x2b,0x1f,0xa3,0x5b,0x91,0x3f,0x9f,0x74,0x7a,0x8a,0xfd,0x1b,0x13,0x0e, +0x94,0xbf,0xf9,0x4e,0xff,0xd0,0x1a,0x91,0x73,0x5c,0xa1,0x72,0x6a,0xcd,0x0b,0x19,0x7c,0x4e,0x5b,0x03,0x39,0x36,0x97,0xe1,0x26,0x82,0x6f,0xb6,0xbb,0xde,0x8e,0xcc, +0x1e,0x08,0x29,0x85,0x16,0xe2,0xc9,0xed,0x03,0xff,0x3c,0x1b,0x78,0x60,0xf6,0xde,0x76,0xd4,0xce,0xcd,0x94,0xc8,0x11,0x98,0x55,0xef,0x52,0x97,0xca,0x67,0xe9,0xf3, +0xe7,0xff,0x72,0xb1,0xe9,0x97,0x85,0xca,0x0a,0x7e,0x77,0x20,0xc5,0xb3,0x6d,0xc6,0xd7,0x2c,0xac,0x95,0x74,0xc8,0xcb,0xbc,0x2f,0x80,0x1e,0x23,0xe5,0x6f,0xd3,0x44, +0xb0,0x7f,0x22,0x15,0x4b,0xeb,0xa0,0xf0,0x8c,0xe8,0x89,0x1e,0x64,0x3e,0xd9,0x95,0xc9,0x4d,0x9a,0x69,0xc9,0xf1,0xb5,0xf4,0x99,0x02,0x7a,0x78,0x57,0x2a,0xee,0xbd, +0x74,0xd2,0x0c,0xc3,0x98,0x81,0xc2,0x13,0xee,0x77,0x0b,0x10,0x10,0xe4,0xbe,0xa7,0x18,0x84,0x69,0x77,0xae,0x11,0x9f,0x7a,0x02,0x3a,0xb5,0x8c,0xca,0x0a,0xd7,0x52, +0xaf,0xe6,0x56,0xbb,0x3c,0x17,0x25,0x6a,0x9f,0x6e,0x9b,0xf1,0x9f,0xdd,0x5a,0x38,0xfc,0x82,0xbb,0xe8,0x72,0xc5,0x53,0x9e,0xdb,0x60,0x9e,0xf4,0xf7,0x9c,0x20,0x3e, +0xbb,0x14,0x0f,0x2e,0x58,0x3c,0xb2,0xad,0x15,0xb4,0xaa,0x5b,0x65,0x50,0x16,0xa8,0x44,0x92,0x77,0xdb,0xd4,0x77,0xef,0x2c,0x8d,0x6c,0x01,0x7d,0xb7,0x38,0xb1,0x8d, +0xeb,0x4a,0x42,0x7d,0x19,0x23,0xce,0x3f,0xf2,0x62,0x73,0x57,0x79,0xa4,0x18,0xf2,0x0a,0x28,0x2d,0xf9,0x20,0x14,0x7b,0xea,0xbe,0x42,0x1e,0xe5,0x31,0x9d,0x05,0x68, + } +}, + +/* #7, 32 byte key, 17 byte PTX */ +{ + 32, + { 0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0 }, + { 0xbf,0xbe,0xbd,0xbc,0xbb,0xba,0xb9,0xb8,0xb7,0xb6,0xb5,0xb4,0xb3,0xb2,0xb1,0xb0 }, + CONST64(0x123456789a), + 17, + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10 }, + { 0x6c,0x16,0x25,0xdb,0x46,0x71,0x52,0x2d,0x3d,0x75,0x99,0x60,0x1d,0xe7,0xca,0x09,0xed }, +}, + +/* #15, 32 byte key, 25 byte PTX */ +{ + 32, + { 0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0 }, + { 0xbf,0xbe,0xbd,0xbc,0xbb,0xba,0xb9,0xb8,0xb7,0xb6,0xb5,0xb4,0xb3,0xb2,0xb1,0xb0 }, + CONST64(0x123456789a), + 25, + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18 }, + { 0x8f,0x4d,0xcb,0xad,0x55,0x55,0x8d,0x7b,0x4e,0x01,0xd9,0x37,0x9c,0xd4,0xea,0x22,0xed,0xbf,0x9d,0xac,0xe4,0x5d,0x6f,0x6a,0x73 }, +}, + +/* #21, 32 byte key, 31 byte PTX */ +{ + 32, + { 0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0 }, + { 0xbf,0xbe,0xbd,0xbc,0xbb,0xba,0xb9,0xb8,0xb7,0xb6,0xb5,0xb4,0xb3,0xb2,0xb1,0xb0 }, + CONST64(0x123456789a), + 31, + { 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e }, + { 0xd0,0x5b,0xc0,0x90,0xa8,0xe0,0x4f,0x1b,0x3d,0x3e,0xcd,0xd5,0xba,0xec,0x0f,0xd4,0xed,0xbf,0x9d,0xac,0xe4,0x5d,0x6f,0x6a,0x73,0x06,0xe6,0x4b,0xe5,0xdd,0x82 }, +}, + +}; + unsigned char OUT[512], Torg[16], T[16]; + ulong64 seq; + symmetric_xts xts; + int i, j, k, err, idx; + unsigned long len; + + /* AES can be under rijndael or aes... try to find it */ + if ((idx = find_cipher("aes")) == -1) { + if ((idx = find_cipher("rijndael")) == -1) { + return CRYPT_NOP; + } + } + for (k = 0; k < 4; ++k) { + cipher_descriptor[idx].accel_xts_encrypt = NULL; + cipher_descriptor[idx].accel_xts_decrypt = NULL; + if (k & 0x1) { + cipher_descriptor[idx].accel_xts_encrypt = _xts_test_accel_xts_encrypt; + } + if (k & 0x2) { + cipher_descriptor[idx].accel_xts_decrypt = _xts_test_accel_xts_decrypt; + } + for (j = 0; j < 2; j++) { + for (i = 0; i < (int)(sizeof(tests) / sizeof(tests[0])); i++) { + /* skip the cases where + * the length is smaller than 2*blocklen + * or the length is not a multiple of 32 + */ + if ((j == 1) && ((tests[i].PTLEN < 32) || (tests[i].PTLEN % 32))) { + continue; + } + if ((k > 0) && (j == 1)) { + continue; + } + len = tests[i].PTLEN / 2; + + err = xts_start(idx, tests[i].key1, tests[i].key2, tests[i].keylen / 2, 0, &xts); + if (err != CRYPT_OK) { + return err; + } + + seq = tests[i].seqnum; + STORE64L(seq, Torg); + XMEMSET(Torg + 8, 0, 8); + + XMEMCPY(T, Torg, sizeof(T)); + if (j == 0) { + err = xts_encrypt(tests[i].PTX, tests[i].PTLEN, OUT, T, &xts); + if (err != CRYPT_OK) { + xts_done(&xts); + return err; + } + } else { + err = xts_encrypt(tests[i].PTX, len, OUT, T, &xts); + if (err != CRYPT_OK) { + xts_done(&xts); + return err; + } + err = xts_encrypt(&tests[i].PTX[len], len, &OUT[len], T, &xts); + if (err != CRYPT_OK) { + xts_done(&xts); + return err; + } + } + + if (compare_testvector(OUT, tests[i].PTLEN, tests[i].CTX, tests[i].PTLEN, "XTS encrypt", i)) { + xts_done(&xts); + return CRYPT_FAIL_TESTVECTOR; + } + + XMEMCPY(T, Torg, sizeof(T)); + if (j == 0) { + err = xts_decrypt(tests[i].CTX, tests[i].PTLEN, OUT, T, &xts); + if (err != CRYPT_OK) { + xts_done(&xts); + return err; + } + } else { + err = xts_decrypt(tests[i].CTX, len, OUT, T, &xts); + if (err != CRYPT_OK) { + xts_done(&xts); + return err; + } + err = xts_decrypt(&tests[i].CTX[len], len, &OUT[len], T, &xts); + if (err != CRYPT_OK) { + xts_done(&xts); + return err; + } + } + + if (compare_testvector(OUT, tests[i].PTLEN, tests[i].PTX, tests[i].PTLEN, "XTS decrypt", i)) { + xts_done(&xts); + return CRYPT_FAIL_TESTVECTOR; + } + xts_done(&xts); + } + } + } + return CRYPT_OK; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/bit/der_decode_bit_string.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/bit/der_decode_bit_string.c new file mode 100644 index 000000000..5203fcfde --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/bit/der_decode_bit_string.c @@ -0,0 +1,100 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_decode_bit_string.c + ASN.1 DER, encode a BIT STRING, Tom St Denis +*/ + + +#ifdef LTC_DER + +/** + Store a BIT STRING + @param in The DER encoded BIT STRING + @param inlen The size of the DER BIT STRING + @param out [out] The array of bits stored (one per char) + @param outlen [in/out] The number of bits stored + @return CRYPT_OK if successful +*/ +int der_decode_bit_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + unsigned long dlen, blen, x, y; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* packet must be at least 4 bytes */ + if (inlen < 4) { + return CRYPT_INVALID_ARG; + } + + /* check for 0x03 */ + if ((in[0]&0x1F) != 0x03) { + return CRYPT_INVALID_PACKET; + } + + /* offset in the data */ + x = 1; + + /* get the length of the data */ + if (in[x] & 0x80) { + /* long format get number of length bytes */ + y = in[x++] & 0x7F; + + /* invalid if 0 or > 2 */ + if (y == 0 || y > 2) { + return CRYPT_INVALID_PACKET; + } + + /* read the data len */ + dlen = 0; + while (y--) { + dlen = (dlen << 8) | (unsigned long)in[x++]; + } + } else { + /* short format */ + dlen = in[x++] & 0x7F; + } + + /* is the data len too long or too short? */ + if ((dlen == 0) || (dlen + x > inlen)) { + return CRYPT_INVALID_PACKET; + } + + /* get padding count */ + blen = ((dlen - 1) << 3) - (in[x++] & 7); + + /* too many bits? */ + if (blen > *outlen) { + *outlen = blen; + return CRYPT_BUFFER_OVERFLOW; + } + + /* decode/store the bits */ + for (y = 0; y < blen; y++) { + out[y] = (in[x] & (1 << (7 - (y & 7)))) ? 1 : 0; + if ((y & 7) == 7) { + ++x; + } + } + + /* we done */ + *outlen = blen; + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/bit/der_decode_raw_bit_string.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/bit/der_decode_raw_bit_string.c new file mode 100644 index 000000000..223899b33 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/bit/der_decode_raw_bit_string.c @@ -0,0 +1,107 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_decode_bit_string.c + ASN.1 DER, encode a BIT STRING, Tom St Denis +*/ + + +#ifdef LTC_DER + +#define SETBIT(v, n) (v=((unsigned char)(v) | (1U << (unsigned char)(n)))) +#define CLRBIT(v, n) (v=((unsigned char)(v) & ~(1U << (unsigned char)(n)))) + +/** + Store a BIT STRING + @param in The DER encoded BIT STRING + @param inlen The size of the DER BIT STRING + @param out [out] The array of bits stored (8 per char) + @param outlen [in/out] The number of bits stored + @return CRYPT_OK if successful +*/ +int der_decode_raw_bit_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + unsigned long dlen, blen, x, y; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* packet must be at least 4 bytes */ + if (inlen < 4) { + return CRYPT_INVALID_ARG; + } + + /* check for 0x03 */ + if ((in[0]&0x1F) != 0x03) { + return CRYPT_INVALID_PACKET; + } + + /* offset in the data */ + x = 1; + + /* get the length of the data */ + if (in[x] & 0x80) { + /* long format get number of length bytes */ + y = in[x++] & 0x7F; + + /* invalid if 0 or > 2 */ + if (y == 0 || y > 2) { + return CRYPT_INVALID_PACKET; + } + + /* read the data len */ + dlen = 0; + while (y--) { + dlen = (dlen << 8) | (unsigned long)in[x++]; + } + } else { + /* short format */ + dlen = in[x++] & 0x7F; + } + + /* is the data len too long or too short? */ + if ((dlen == 0) || (dlen + x > inlen)) { + return CRYPT_INVALID_PACKET; + } + + /* get padding count */ + blen = ((dlen - 1) << 3) - (in[x++] & 7); + + /* too many bits? */ + if (blen > *outlen) { + *outlen = blen; + return CRYPT_BUFFER_OVERFLOW; + } + + /* decode/store the bits */ + for (y = 0; y < blen; y++) { + if (in[x] & (1 << (7 - (y & 7)))) { + SETBIT(out[y/8], 7-(y%8)); + } else { + CLRBIT(out[y/8], 7-(y%8)); + } + if ((y & 7) == 7) { + ++x; + } + } + + /* we done */ + *outlen = blen; + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/bit/der_encode_bit_string.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/bit/der_encode_bit_string.c new file mode 100644 index 000000000..c552184c7 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/bit/der_encode_bit_string.c @@ -0,0 +1,87 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_encode_bit_string.c + ASN.1 DER, encode a BIT STRING, Tom St Denis +*/ + + +#ifdef LTC_DER + +/** + Store a BIT STRING + @param in The array of bits to store (one per char) + @param inlen The number of bits tostore + @param out [out] The destination for the DER encoded BIT STRING + @param outlen [in/out] The max size and resulting size of the DER BIT STRING + @return CRYPT_OK if successful +*/ +int der_encode_bit_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + unsigned long len, x, y; + unsigned char buf; + int err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* avoid overflows */ + if ((err = der_length_bit_string(inlen, &len)) != CRYPT_OK) { + return err; + } + + if (len > *outlen) { + *outlen = len; + return CRYPT_BUFFER_OVERFLOW; + } + + /* store header (include bit padding count in length) */ + x = 0; + y = (inlen >> 3) + ((inlen&7) ? 1 : 0) + 1; + + out[x++] = 0x03; + if (y < 128) { + out[x++] = (unsigned char)y; + } else if (y < 256) { + out[x++] = 0x81; + out[x++] = (unsigned char)y; + } else if (y < 65536) { + out[x++] = 0x82; + out[x++] = (unsigned char)((y>>8)&255); + out[x++] = (unsigned char)(y&255); + } + + /* store number of zero padding bits */ + out[x++] = (unsigned char)((8 - inlen) & 7); + + /* store the bits in big endian format */ + for (y = buf = 0; y < inlen; y++) { + buf |= (in[y] ? 1 : 0) << (7 - (y & 7)); + if ((y & 7) == 7) { + out[x++] = buf; + buf = 0; + } + } + /* store last byte */ + if (inlen & 7) { + out[x++] = buf; + } + *outlen = x; + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/bit/der_encode_raw_bit_string.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/bit/der_encode_raw_bit_string.c new file mode 100644 index 000000000..298c4e369 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/bit/der_encode_raw_bit_string.c @@ -0,0 +1,90 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_encode_bit_string.c + ASN.1 DER, encode a BIT STRING, Tom St Denis +*/ + + +#ifdef LTC_DER + +#define getbit(n, k) (((n) & ( 1 << (k) )) >> (k)) + +/** + Store a BIT STRING + @param in The array of bits to store (8 per char) + @param inlen The number of bits to store + @param out [out] The destination for the DER encoded BIT STRING + @param outlen [in/out] The max size and resulting size of the DER BIT STRING + @return CRYPT_OK if successful +*/ +int der_encode_raw_bit_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + unsigned long len, x, y; + unsigned char buf; + int err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* avoid overflows */ + if ((err = der_length_bit_string(inlen, &len)) != CRYPT_OK) { + return err; + } + + if (len > *outlen) { + *outlen = len; + return CRYPT_BUFFER_OVERFLOW; + } + + /* store header (include bit padding count in length) */ + x = 0; + y = (inlen >> 3) + ((inlen&7) ? 1 : 0) + 1; + + out[x++] = 0x03; + if (y < 128) { + out[x++] = (unsigned char)y; + } else if (y < 256) { + out[x++] = 0x81; + out[x++] = (unsigned char)y; + } else if (y < 65536) { + out[x++] = 0x82; + out[x++] = (unsigned char)((y>>8)&255); + out[x++] = (unsigned char)(y&255); + } + + /* store number of zero padding bits */ + out[x++] = (unsigned char)((8 - inlen) & 7); + + /* store the bits in big endian format */ + for (y = buf = 0; y < inlen; y++) { + buf |= (getbit(in[y/8],7-y%8)?1:0) << (7 - (y & 7)); + if ((y & 7) == 7) { + out[x++] = buf; + buf = 0; + } + } + /* store last byte */ + if (inlen & 7) { + out[x++] = buf; + } + + *outlen = x; + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/bit/der_length_bit_string.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/bit/der_length_bit_string.c new file mode 100644 index 000000000..b9c99fb17 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/bit/der_length_bit_string.c @@ -0,0 +1,52 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_length_bit_string.c + ASN.1 DER, get length of BIT STRING, Tom St Denis +*/ + +#ifdef LTC_DER +/** + Gets length of DER encoding of BIT STRING + @param nbits The number of bits in the string to encode + @param outlen [out] The length of the DER encoding for the given string + @return CRYPT_OK if successful +*/ +int der_length_bit_string(unsigned long nbits, unsigned long *outlen) +{ + unsigned long nbytes; + LTC_ARGCHK(outlen != NULL); + + /* get the number of the bytes */ + nbytes = (nbits >> 3) + ((nbits & 7) ? 1 : 0) + 1; + + if (nbytes < 128) { + /* 03 LL PP DD DD DD ... */ + *outlen = 2 + nbytes; + } else if (nbytes < 256) { + /* 03 81 LL PP DD DD DD ... */ + *outlen = 3 + nbytes; + } else if (nbytes < 65536) { + /* 03 82 LL LL PP DD DD DD ... */ + *outlen = 4 + nbytes; + } else { + return CRYPT_INVALID_ARG; + } + + return CRYPT_OK; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/boolean/der_decode_boolean.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/boolean/der_decode_boolean.c new file mode 100644 index 000000000..da60ca902 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/boolean/der_decode_boolean.c @@ -0,0 +1,45 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_decode_boolean.c + ASN.1 DER, decode a BOOLEAN, Tom St Denis +*/ + + +#ifdef LTC_DER + +/** + Read a BOOLEAN + @param in The destination for the DER encoded BOOLEAN + @param inlen The size of the DER BOOLEAN + @param out [out] The boolean to decode + @return CRYPT_OK if successful +*/ +int der_decode_boolean(const unsigned char *in, unsigned long inlen, + int *out) +{ + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + + if (inlen < 3 || in[0] != 0x01 || in[1] != 0x01 || (in[2] != 0x00 && in[2] != 0xFF)) { + return CRYPT_INVALID_ARG; + } + + *out = (in[2]==0xFF) ? 1 : 0; + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/boolean/der_encode_boolean.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/boolean/der_encode_boolean.c new file mode 100644 index 000000000..c5cacdd41 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/boolean/der_encode_boolean.c @@ -0,0 +1,49 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_encode_boolean.c + ASN.1 DER, encode a BOOLEAN, Tom St Denis +*/ + + +#ifdef LTC_DER + +/** + Store a BOOLEAN + @param in The boolean to encode + @param out [out] The destination for the DER encoded BOOLEAN + @param outlen [in/out] The max size and resulting size of the DER BOOLEAN + @return CRYPT_OK if successful +*/ +int der_encode_boolean(int in, + unsigned char *out, unsigned long *outlen) +{ + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(out != NULL); + + if (*outlen < 3) { + *outlen = 3; + return CRYPT_BUFFER_OVERFLOW; + } + + *outlen = 3; + out[0] = 0x01; + out[1] = 0x01; + out[2] = in ? 0xFF : 0x00; + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/boolean/der_length_boolean.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/boolean/der_length_boolean.c new file mode 100644 index 000000000..a1a3a7b92 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/boolean/der_length_boolean.c @@ -0,0 +1,33 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_length_boolean.c + ASN.1 DER, get length of a BOOLEAN, Tom St Denis +*/ + +#ifdef LTC_DER +/** + Gets length of DER encoding of a BOOLEAN + @param outlen [out] The length of the DER encoding + @return CRYPT_OK if successful +*/ +int der_length_boolean(unsigned long *outlen) +{ + LTC_ARGCHK(outlen != NULL); + *outlen = 3; + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/choice/der_decode_choice.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/choice/der_decode_choice.c new file mode 100644 index 000000000..0bfd3bb65 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/choice/der_decode_choice.c @@ -0,0 +1,223 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_decode_choice.c + ASN.1 DER, decode a CHOICE, Tom St Denis +*/ + +#ifdef LTC_DER + +/** + Decode a CHOICE + @param in The DER encoded input + @param inlen [in/out] The size of the input and resulting size of read type + @param list The list of items to decode + @param outlen The number of items in the list + @return CRYPT_OK on success +*/ +int der_decode_choice(const unsigned char *in, unsigned long *inlen, + ltc_asn1_list *list, unsigned long outlen) +{ + unsigned long size, x, z; + void *data; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(inlen != NULL); + LTC_ARGCHK(list != NULL); + + /* get blk size */ + if (*inlen < 2) { + return CRYPT_INVALID_PACKET; + } + + /* set all of the "used" flags to zero */ + for (x = 0; x < outlen; x++) { + list[x].used = 0; + } + + /* now scan until we have a winner */ + for (x = 0; x < outlen; x++) { + size = list[x].size; + data = list[x].data; + + switch (list[x].type) { + case LTC_ASN1_BOOLEAN: + if (der_decode_boolean(in, *inlen, data) == CRYPT_OK) { + if (der_length_boolean(&z) == CRYPT_OK) { + list[x].used = 1; + *inlen = z; + return CRYPT_OK; + } + } + break; + + case LTC_ASN1_INTEGER: + if (der_decode_integer(in, *inlen, data) == CRYPT_OK) { + if (der_length_integer(data, &z) == CRYPT_OK) { + list[x].used = 1; + *inlen = z; + return CRYPT_OK; + } + } + break; + + case LTC_ASN1_SHORT_INTEGER: + if (der_decode_short_integer(in, *inlen, data) == CRYPT_OK) { + if (der_length_short_integer(size, &z) == CRYPT_OK) { + list[x].used = 1; + *inlen = z; + return CRYPT_OK; + } + } + break; + + case LTC_ASN1_BIT_STRING: + if (der_decode_bit_string(in, *inlen, data, &size) == CRYPT_OK) { + if (der_length_bit_string(size, &z) == CRYPT_OK) { + list[x].used = 1; + list[x].size = size; + *inlen = z; + return CRYPT_OK; + } + } + break; + + case LTC_ASN1_RAW_BIT_STRING: + if (der_decode_raw_bit_string(in, *inlen, data, &size) == CRYPT_OK) { + if (der_length_bit_string(size, &z) == CRYPT_OK) { + list[x].used = 1; + list[x].size = size; + *inlen = z; + return CRYPT_OK; + } + } + break; + + case LTC_ASN1_OCTET_STRING: + if (der_decode_octet_string(in, *inlen, data, &size) == CRYPT_OK) { + if (der_length_octet_string(size, &z) == CRYPT_OK) { + list[x].used = 1; + list[x].size = size; + *inlen = z; + return CRYPT_OK; + } + } + break; + + case LTC_ASN1_NULL: + if (*inlen == 2 && in[x] == 0x05 && in[x+1] == 0x00) { + *inlen = 2; + list[x].used = 1; + return CRYPT_OK; + } + break; + + case LTC_ASN1_OBJECT_IDENTIFIER: + if (der_decode_object_identifier(in, *inlen, data, &size) == CRYPT_OK) { + if (der_length_object_identifier(data, size, &z) == CRYPT_OK) { + list[x].used = 1; + list[x].size = size; + *inlen = z; + return CRYPT_OK; + } + } + break; + + case LTC_ASN1_TELETEX_STRING: + if (der_decode_teletex_string(in, *inlen, data, &size) == CRYPT_OK) { + if (der_length_teletex_string(data, size, &z) == CRYPT_OK) { + list[x].used = 1; + list[x].size = size; + *inlen = z; + return CRYPT_OK; + } + } + break; + + case LTC_ASN1_IA5_STRING: + if (der_decode_ia5_string(in, *inlen, data, &size) == CRYPT_OK) { + if (der_length_ia5_string(data, size, &z) == CRYPT_OK) { + list[x].used = 1; + list[x].size = size; + *inlen = z; + return CRYPT_OK; + } + } + break; + + case LTC_ASN1_PRINTABLE_STRING: + if (der_decode_printable_string(in, *inlen, data, &size) == CRYPT_OK) { + if (der_length_printable_string(data, size, &z) == CRYPT_OK) { + list[x].used = 1; + list[x].size = size; + *inlen = z; + return CRYPT_OK; + } + } + break; + + case LTC_ASN1_UTF8_STRING: + if (der_decode_utf8_string(in, *inlen, data, &size) == CRYPT_OK) { + if (der_length_utf8_string(data, size, &z) == CRYPT_OK) { + list[x].used = 1; + list[x].size = size; + *inlen = z; + return CRYPT_OK; + } + } + break; + + case LTC_ASN1_UTCTIME: + z = *inlen; + if (der_decode_utctime(in, &z, data) == CRYPT_OK) { + list[x].used = 1; + *inlen = z; + return CRYPT_OK; + } + break; + + case LTC_ASN1_GENERALIZEDTIME: + z = *inlen; + if (der_decode_generalizedtime(in, &z, data) == CRYPT_OK) { + list[x].used = 1; + *inlen = z; + return CRYPT_OK; + } + break; + + case LTC_ASN1_SET: + case LTC_ASN1_SETOF: + case LTC_ASN1_SEQUENCE: + if (der_decode_sequence(in, *inlen, data, size) == CRYPT_OK) { + if (der_length_sequence(data, size, &z) == CRYPT_OK) { + list[x].used = 1; + *inlen = z; + return CRYPT_OK; + } + } + break; + + case LTC_ASN1_CHOICE: + case LTC_ASN1_CONSTRUCTED: + case LTC_ASN1_CONTEXT_SPECIFIC: + case LTC_ASN1_EOL: + return CRYPT_INVALID_ARG; + } + } + + return CRYPT_INVALID_PACKET; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/generalizedtime/der_decode_generalizedtime.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/generalizedtime/der_decode_generalizedtime.c new file mode 100644 index 000000000..016a4c2c2 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/generalizedtime/der_decode_generalizedtime.c @@ -0,0 +1,144 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_decode_generalizedtime.c + ASN.1 DER, decode a GeneralizedTime, Steffen Jaeckel + Based on der_decode_utctime.c +*/ + +#ifdef LTC_DER + +static int _char_to_int(unsigned char x) +{ + switch (x) { + case '0': return 0; + case '1': return 1; + case '2': return 2; + case '3': return 3; + case '4': return 4; + case '5': return 5; + case '6': return 6; + case '7': return 7; + case '8': return 8; + case '9': return 9; + default: return 100; + } +} + +#define DECODE_V(y, max) do {\ + y = _char_to_int(buf[x])*10 + _char_to_int(buf[x+1]); \ + if (y >= max) return CRYPT_INVALID_PACKET; \ + x += 2; \ +} while(0) + +#define DECODE_V4(y, max) do {\ + y = _char_to_int(buf[x])*1000 + _char_to_int(buf[x+1])*100 + _char_to_int(buf[x+2])*10 + _char_to_int(buf[x+3]); \ + if (y >= max) return CRYPT_INVALID_PACKET; \ + x += 4; \ +} while(0) + +/** + Decodes a Generalized time structure in DER format (reads all 6 valid encoding formats) + @param in Input buffer + @param inlen Length of input buffer in octets + @param out [out] Destination of Generalized time structure + @return CRYPT_OK if successful +*/ +int der_decode_generalizedtime(const unsigned char *in, unsigned long *inlen, + ltc_generalizedtime *out) +{ + unsigned char buf[32]; + unsigned long x; + int y; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(inlen != NULL); + LTC_ARGCHK(out != NULL); + + /* check header */ + if (*inlen < 2UL || (in[1] >= sizeof(buf)) || ((in[1] + 2UL) > *inlen)) { + return CRYPT_INVALID_PACKET; + } + + /* decode the string */ + for (x = 0; x < in[1]; x++) { + y = der_ia5_value_decode(in[x+2]); + if (y == -1) { + return CRYPT_INVALID_PACKET; + } + if (!((y >= '0' && y <= '9') + || y == 'Z' || y == '.' + || y == '+' || y == '-')) { + return CRYPT_INVALID_PACKET; + } + buf[x] = y; + } + *inlen = 2 + x; + + if (x < 15) { + return CRYPT_INVALID_PACKET; + } + + /* possible encodings are +YYYYMMDDhhmmssZ +YYYYMMDDhhmmss+hh'mm' +YYYYMMDDhhmmss-hh'mm' +YYYYMMDDhhmmss.fsZ +YYYYMMDDhhmmss.fs+hh'mm' +YYYYMMDDhhmmss.fs-hh'mm' + + So let's do a trivial decode upto [including] ss + */ + + x = 0; + DECODE_V4(out->YYYY, 10000); + DECODE_V(out->MM, 13); + DECODE_V(out->DD, 32); + DECODE_V(out->hh, 24); + DECODE_V(out->mm, 60); + DECODE_V(out->ss, 60); + + /* clear fractional seconds info */ + out->fs = 0; + + /* now is it Z or . */ + if (buf[x] == 'Z') { + return CRYPT_OK; + } else if (buf[x] == '.') { + x++; + while (buf[x] >= '0' && buf[x] <= '9') { + unsigned fs = out->fs; + if (x >= sizeof(buf)) return CRYPT_INVALID_PACKET; + out->fs *= 10; + out->fs += _char_to_int(buf[x]); + if (fs > out->fs) return CRYPT_OVERFLOW; + x++; + } + } + + /* now is it Z, +, - */ + if (buf[x] == 'Z') { + return CRYPT_OK; + } else if (buf[x] == '+' || buf[x] == '-') { + out->off_dir = (buf[x++] == '+') ? 0 : 1; + DECODE_V(out->off_hh, 24); + DECODE_V(out->off_mm, 60); + return CRYPT_OK; + } else { + return CRYPT_INVALID_PACKET; + } +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/generalizedtime/der_encode_generalizedtime.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/generalizedtime/der_encode_generalizedtime.c new file mode 100644 index 000000000..ddc472acb --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/generalizedtime/der_encode_generalizedtime.c @@ -0,0 +1,108 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_encode_utctime.c + ASN.1 DER, encode a GeneralizedTime, Steffen Jaeckel + Based on der_encode_utctime.c +*/ + +#ifdef LTC_DER + +static const char * const baseten = "0123456789"; + +#define STORE_V(y) do {\ + out[x++] = der_ia5_char_encode(baseten[(y/10) % 10]); \ + out[x++] = der_ia5_char_encode(baseten[y % 10]); \ +} while(0) + +#define STORE_V4(y) do {\ + out[x++] = der_ia5_char_encode(baseten[(y/1000) % 10]); \ + out[x++] = der_ia5_char_encode(baseten[(y/100) % 10]); \ + out[x++] = der_ia5_char_encode(baseten[(y/10) % 10]); \ + out[x++] = der_ia5_char_encode(baseten[y % 10]); \ +} while(0) + +/** + Encodes a Generalized time structure in DER format + @param gtime The GeneralizedTime structure to encode + @param out The destination of the DER encoding of the GeneralizedTime structure + @param outlen [in/out] The length of the DER encoding + @return CRYPT_OK if successful +*/ +int der_encode_generalizedtime(ltc_generalizedtime *gtime, + unsigned char *out, unsigned long *outlen) +{ + unsigned long x, tmplen; + int err; + + LTC_ARGCHK(gtime != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + if ((err = der_length_generalizedtime(gtime, &tmplen)) != CRYPT_OK) { + return err; + } + if (tmplen > *outlen) { + *outlen = tmplen; + return CRYPT_BUFFER_OVERFLOW; + } + + /* store header */ + out[0] = 0x18; + + /* store values */ + x = 2; + STORE_V4(gtime->YYYY); + STORE_V(gtime->MM); + STORE_V(gtime->DD); + STORE_V(gtime->hh); + STORE_V(gtime->mm); + STORE_V(gtime->ss); + + if (gtime->fs) { + unsigned long divisor; + unsigned fs = gtime->fs; + unsigned len = 0; + out[x++] = der_ia5_char_encode('.'); + divisor = 1; + do { + fs /= 10; + divisor *= 10; + len++; + } while(fs != 0); + while (len-- > 1) { + divisor /= 10; + out[x++] = der_ia5_char_encode(baseten[(gtime->fs/divisor) % 10]); + } + out[x++] = der_ia5_char_encode(baseten[gtime->fs % 10]); + } + + if (gtime->off_mm || gtime->off_hh) { + out[x++] = der_ia5_char_encode(gtime->off_dir ? '-' : '+'); + STORE_V(gtime->off_hh); + STORE_V(gtime->off_mm); + } else { + out[x++] = der_ia5_char_encode('Z'); + } + + /* store length */ + out[1] = (unsigned char)(x - 2); + + /* all good let's return */ + *outlen = x; + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/generalizedtime/der_length_generalizedtime.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/generalizedtime/der_length_generalizedtime.c new file mode 100644 index 000000000..def6270eb --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/generalizedtime/der_length_generalizedtime.c @@ -0,0 +1,58 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_length_utctime.c + ASN.1 DER, get length of GeneralizedTime, Steffen Jaeckel + Based on der_length_utctime.c +*/ + +#ifdef LTC_DER + +/** + Gets length of DER encoding of GeneralizedTime + @param gtime The GeneralizedTime structure to get the size of + @param outlen [out] The length of the DER encoding + @return CRYPT_OK if successful +*/ +int der_length_generalizedtime(ltc_generalizedtime *gtime, unsigned long *outlen) +{ + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(gtime != NULL); + + if (gtime->fs == 0) { + /* we encode as YYYYMMDDhhmmssZ */ + *outlen = 2 + 14 + 1; + } else { + unsigned long len = 2 + 14 + 1; + unsigned fs = gtime->fs; + do { + fs /= 10; + len++; + } while(fs != 0); + if (gtime->off_hh == 0 && gtime->off_mm == 0) { + /* we encode as YYYYMMDDhhmmss.fsZ */ + len += 1; + } + else { + /* we encode as YYYYMMDDhhmmss.fs{+|-}hh'mm' */ + len += 5; + } + *outlen = len; + } + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/ia5/der_decode_ia5_string.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/ia5/der_decode_ia5_string.c new file mode 100644 index 000000000..c3472519e --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/ia5/der_decode_ia5_string.c @@ -0,0 +1,94 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_decode_ia5_string.c + ASN.1 DER, encode a IA5 STRING, Tom St Denis +*/ + + +#ifdef LTC_DER + +/** + Store a IA5 STRING + @param in The DER encoded IA5 STRING + @param inlen The size of the DER IA5 STRING + @param out [out] The array of octets stored (one per char) + @param outlen [in/out] The number of octets stored + @return CRYPT_OK if successful +*/ +int der_decode_ia5_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + unsigned long x, y, len; + int t; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* must have header at least */ + if (inlen < 2) { + return CRYPT_INVALID_PACKET; + } + + /* check for 0x16 */ + if ((in[0] & 0x1F) != 0x16) { + return CRYPT_INVALID_PACKET; + } + x = 1; + + /* decode the length */ + if (in[x] & 0x80) { + /* valid # of bytes in length are 1,2,3 */ + y = in[x] & 0x7F; + if ((y == 0) || (y > 3) || ((x + y) > inlen)) { + return CRYPT_INVALID_PACKET; + } + + /* read the length in */ + len = 0; + ++x; + while (y--) { + len = (len << 8) | in[x++]; + } + } else { + len = in[x++] & 0x7F; + } + + /* is it too long? */ + if (len > *outlen) { + *outlen = len; + return CRYPT_BUFFER_OVERFLOW; + } + + if (len + x > inlen) { + return CRYPT_INVALID_PACKET; + } + + /* read the data */ + for (y = 0; y < len; y++) { + t = der_ia5_value_decode(in[x++]); + if (t == -1) { + return CRYPT_INVALID_ARG; + } + out[y] = t; + } + + *outlen = y; + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/ia5/der_encode_ia5_string.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/ia5/der_encode_ia5_string.c new file mode 100644 index 000000000..18b926eac --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/ia5/der_encode_ia5_string.c @@ -0,0 +1,83 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_encode_ia5_string.c + ASN.1 DER, encode a IA5 STRING, Tom St Denis +*/ + +#ifdef LTC_DER + +/** + Store an IA5 STRING + @param in The array of IA5 to store (one per char) + @param inlen The number of IA5 to store + @param out [out] The destination for the DER encoded IA5 STRING + @param outlen [in/out] The max size and resulting size of the DER IA5 STRING + @return CRYPT_OK if successful +*/ +int der_encode_ia5_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + unsigned long x, y, len; + int err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* get the size */ + if ((err = der_length_ia5_string(in, inlen, &len)) != CRYPT_OK) { + return err; + } + + /* too big? */ + if (len > *outlen) { + *outlen = len; + return CRYPT_BUFFER_OVERFLOW; + } + + /* encode the header+len */ + x = 0; + out[x++] = 0x16; + if (inlen < 128) { + out[x++] = (unsigned char)inlen; + } else if (inlen < 256) { + out[x++] = 0x81; + out[x++] = (unsigned char)inlen; + } else if (inlen < 65536UL) { + out[x++] = 0x82; + out[x++] = (unsigned char)((inlen>>8)&255); + out[x++] = (unsigned char)(inlen&255); + } else if (inlen < 16777216UL) { + out[x++] = 0x83; + out[x++] = (unsigned char)((inlen>>16)&255); + out[x++] = (unsigned char)((inlen>>8)&255); + out[x++] = (unsigned char)(inlen&255); + } else { + return CRYPT_INVALID_ARG; + } + + /* store octets */ + for (y = 0; y < inlen; y++) { + out[x++] = der_ia5_char_encode(in[y]); + } + + /* retun length */ + *outlen = x; + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/ia5/der_length_ia5_string.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/ia5/der_length_ia5_string.c new file mode 100644 index 000000000..5f1a78d1e --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/ia5/der_length_ia5_string.c @@ -0,0 +1,192 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_length_ia5_string.c + ASN.1 DER, get length of IA5 STRING, Tom St Denis +*/ + +#ifdef LTC_DER + +static const struct { + int code, value; +} ia5_table[] = { +{ '\0', 0 }, +{ '\a', 7 }, +{ '\b', 8 }, +{ '\t', 9 }, +{ '\n', 10 }, +{ '\f', 12 }, +{ '\r', 13 }, +{ ' ', 32 }, +{ '!', 33 }, +{ '"', 34 }, +{ '#', 35 }, +{ '$', 36 }, +{ '%', 37 }, +{ '&', 38 }, +{ '\'', 39 }, +{ '(', 40 }, +{ ')', 41 }, +{ '*', 42 }, +{ '+', 43 }, +{ ',', 44 }, +{ '-', 45 }, +{ '.', 46 }, +{ '/', 47 }, +{ '0', 48 }, +{ '1', 49 }, +{ '2', 50 }, +{ '3', 51 }, +{ '4', 52 }, +{ '5', 53 }, +{ '6', 54 }, +{ '7', 55 }, +{ '8', 56 }, +{ '9', 57 }, +{ ':', 58 }, +{ ';', 59 }, +{ '<', 60 }, +{ '=', 61 }, +{ '>', 62 }, +{ '?', 63 }, +{ '@', 64 }, +{ 'A', 65 }, +{ 'B', 66 }, +{ 'C', 67 }, +{ 'D', 68 }, +{ 'E', 69 }, +{ 'F', 70 }, +{ 'G', 71 }, +{ 'H', 72 }, +{ 'I', 73 }, +{ 'J', 74 }, +{ 'K', 75 }, +{ 'L', 76 }, +{ 'M', 77 }, +{ 'N', 78 }, +{ 'O', 79 }, +{ 'P', 80 }, +{ 'Q', 81 }, +{ 'R', 82 }, +{ 'S', 83 }, +{ 'T', 84 }, +{ 'U', 85 }, +{ 'V', 86 }, +{ 'W', 87 }, +{ 'X', 88 }, +{ 'Y', 89 }, +{ 'Z', 90 }, +{ '[', 91 }, +{ '\\', 92 }, +{ ']', 93 }, +{ '^', 94 }, +{ '_', 95 }, +{ '`', 96 }, +{ 'a', 97 }, +{ 'b', 98 }, +{ 'c', 99 }, +{ 'd', 100 }, +{ 'e', 101 }, +{ 'f', 102 }, +{ 'g', 103 }, +{ 'h', 104 }, +{ 'i', 105 }, +{ 'j', 106 }, +{ 'k', 107 }, +{ 'l', 108 }, +{ 'm', 109 }, +{ 'n', 110 }, +{ 'o', 111 }, +{ 'p', 112 }, +{ 'q', 113 }, +{ 'r', 114 }, +{ 's', 115 }, +{ 't', 116 }, +{ 'u', 117 }, +{ 'v', 118 }, +{ 'w', 119 }, +{ 'x', 120 }, +{ 'y', 121 }, +{ 'z', 122 }, +{ '{', 123 }, +{ '|', 124 }, +{ '}', 125 }, +{ '~', 126 } +}; + +int der_ia5_char_encode(int c) +{ + int x; + for (x = 0; x < (int)(sizeof(ia5_table)/sizeof(ia5_table[0])); x++) { + if (ia5_table[x].code == c) { + return ia5_table[x].value; + } + } + return -1; +} + +int der_ia5_value_decode(int v) +{ + int x; + for (x = 0; x < (int)(sizeof(ia5_table)/sizeof(ia5_table[0])); x++) { + if (ia5_table[x].value == v) { + return ia5_table[x].code; + } + } + return -1; +} + +/** + Gets length of DER encoding of IA5 STRING + @param octets The values you want to encode + @param noctets The number of octets in the string to encode + @param outlen [out] The length of the DER encoding for the given string + @return CRYPT_OK if successful +*/ +int der_length_ia5_string(const unsigned char *octets, unsigned long noctets, unsigned long *outlen) +{ + unsigned long x; + + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(octets != NULL); + + /* scan string for validity */ + for (x = 0; x < noctets; x++) { + if (der_ia5_char_encode(octets[x]) == -1) { + return CRYPT_INVALID_ARG; + } + } + + if (noctets < 128) { + /* 16 LL DD DD DD ... */ + *outlen = 2 + noctets; + } else if (noctets < 256) { + /* 16 81 LL DD DD DD ... */ + *outlen = 3 + noctets; + } else if (noctets < 65536UL) { + /* 16 82 LL LL DD DD DD ... */ + *outlen = 4 + noctets; + } else if (noctets < 16777216UL) { + /* 16 83 LL LL LL DD DD DD ... */ + *outlen = 5 + noctets; + } else { + return CRYPT_INVALID_ARG; + } + + return CRYPT_OK; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/integer/der_decode_integer.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/integer/der_decode_integer.c new file mode 100644 index 000000000..88cf93f32 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/integer/der_decode_integer.c @@ -0,0 +1,108 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_decode_integer.c + ASN.1 DER, decode an integer, Tom St Denis +*/ + + +#ifdef LTC_DER + +/** + Read a mp_int integer + @param in The DER encoded data + @param inlen Size of DER encoded data + @param num The first mp_int to decode + @return CRYPT_OK if successful +*/ +int der_decode_integer(const unsigned char *in, unsigned long inlen, void *num) +{ + unsigned long x, y, z; + int err; + + LTC_ARGCHK(num != NULL); + LTC_ARGCHK(in != NULL); + + /* min DER INTEGER is 0x02 01 00 == 0 */ + if (inlen < (1 + 1 + 1)) { + return CRYPT_INVALID_PACKET; + } + + /* ok expect 0x02 when we AND with 0001 1111 [1F] */ + x = 0; + if ((in[x++] & 0x1F) != 0x02) { + return CRYPT_INVALID_PACKET; + } + + /* now decode the len stuff */ + z = in[x++]; + + if ((z & 0x80) == 0x00) { + /* short form */ + + /* will it overflow? */ + if (x + z > inlen) { + return CRYPT_INVALID_PACKET; + } + + /* no so read it */ + if ((err = mp_read_unsigned_bin(num, (unsigned char *)in + x, z)) != CRYPT_OK) { + return err; + } + } else { + /* long form */ + z &= 0x7F; + + /* will number of length bytes overflow? (or > 4) */ + if (((x + z) > inlen) || (z > 4) || (z == 0)) { + return CRYPT_INVALID_PACKET; + } + + /* now read it in */ + y = 0; + while (z--) { + y = ((unsigned long)(in[x++])) | (y << 8); + } + + /* now will reading y bytes overrun? */ + if ((x + y) > inlen) { + return CRYPT_INVALID_PACKET; + } + + /* no so read it */ + if ((err = mp_read_unsigned_bin(num, (unsigned char *)in + x, y)) != CRYPT_OK) { + return err; + } + } + + /* see if it's negative */ + if (in[x] & 0x80) { + void *tmp; + if (mp_init(&tmp) != CRYPT_OK) { + return CRYPT_MEM; + } + + if (mp_2expt(tmp, mp_count_bits(num)) != CRYPT_OK || mp_sub(num, tmp, num) != CRYPT_OK) { + mp_clear(tmp); + return CRYPT_MEM; + } + mp_clear(tmp); + } + + return CRYPT_OK; + +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/integer/der_encode_integer.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/integer/der_encode_integer.c new file mode 100644 index 000000000..a8bada558 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/integer/der_encode_integer.c @@ -0,0 +1,128 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_encode_integer.c + ASN.1 DER, encode an integer, Tom St Denis +*/ + + +#ifdef LTC_DER + +/* Exports a positive bignum as DER format (upto 2^32 bytes in size) */ +/** + Store a mp_int integer + @param num The first mp_int to encode + @param out [out] The destination for the DER encoded integers + @param outlen [in/out] The max size and resulting size of the DER encoded integers + @return CRYPT_OK if successful +*/ +int der_encode_integer(void *num, unsigned char *out, unsigned long *outlen) +{ + unsigned long tmplen, y; + int err, leading_zero; + + LTC_ARGCHK(num != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* find out how big this will be */ + if ((err = der_length_integer(num, &tmplen)) != CRYPT_OK) { + return err; + } + + if (*outlen < tmplen) { + *outlen = tmplen; + return CRYPT_BUFFER_OVERFLOW; + } + + if (mp_cmp_d(num, 0) != LTC_MP_LT) { + /* we only need a leading zero if the msb of the first byte is one */ + if ((mp_count_bits(num) & 7) == 0 || mp_iszero(num) == LTC_MP_YES) { + leading_zero = 1; + } else { + leading_zero = 0; + } + + /* get length of num in bytes (plus 1 since we force the msbyte to zero) */ + y = mp_unsigned_bin_size(num) + leading_zero; + } else { + leading_zero = 0; + y = mp_count_bits(num); + y = y + (8 - (y & 7)); + y = y >> 3; + if (((mp_cnt_lsb(num)+1)==mp_count_bits(num)) && ((mp_count_bits(num)&7)==0)) --y; + } + + /* now store initial data */ + *out++ = 0x02; + if (y < 128) { + /* short form */ + *out++ = (unsigned char)y; + } else if (y < 256) { + *out++ = 0x81; + *out++ = (unsigned char)y; + } else if (y < 65536UL) { + *out++ = 0x82; + *out++ = (unsigned char)((y>>8)&255); + *out++ = (unsigned char)y; + } else if (y < 16777216UL) { + *out++ = 0x83; + *out++ = (unsigned char)((y>>16)&255); + *out++ = (unsigned char)((y>>8)&255); + *out++ = (unsigned char)y; + } else { + return CRYPT_INVALID_ARG; + } + + /* now store msbyte of zero if num is non-zero */ + if (leading_zero) { + *out++ = 0x00; + } + + /* if it's not zero store it as big endian */ + if (mp_cmp_d(num, 0) == LTC_MP_GT) { + /* now store the mpint */ + if ((err = mp_to_unsigned_bin(num, out)) != CRYPT_OK) { + return err; + } + } else if (mp_iszero(num) != LTC_MP_YES) { + void *tmp; + + /* negative */ + if (mp_init(&tmp) != CRYPT_OK) { + return CRYPT_MEM; + } + + /* 2^roundup and subtract */ + y = mp_count_bits(num); + y = y + (8 - (y & 7)); + if (((mp_cnt_lsb(num)+1)==mp_count_bits(num)) && ((mp_count_bits(num)&7)==0)) y -= 8; + if (mp_2expt(tmp, y) != CRYPT_OK || mp_add(tmp, num, tmp) != CRYPT_OK) { + mp_clear(tmp); + return CRYPT_MEM; + } + if ((err = mp_to_unsigned_bin(tmp, out)) != CRYPT_OK) { + mp_clear(tmp); + return err; + } + mp_clear(tmp); + } + + /* we good */ + *outlen = tmplen; + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/integer/der_length_integer.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/integer/der_length_integer.c new file mode 100644 index 000000000..753ef0e09 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/integer/der_length_integer.c @@ -0,0 +1,79 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_length_integer.c + ASN.1 DER, get length of encoding, Tom St Denis +*/ + + +#ifdef LTC_DER +/** + Gets length of DER encoding of num + @param num The int to get the size of + @param outlen [out] The length of the DER encoding for the given integer + @return CRYPT_OK if successful +*/ +int der_length_integer(void *num, unsigned long *outlen) +{ + unsigned long z, len; + int leading_zero; + + LTC_ARGCHK(num != NULL); + LTC_ARGCHK(outlen != NULL); + + if (mp_cmp_d(num, 0) != LTC_MP_LT) { + /* positive */ + + /* we only need a leading zero if the msb of the first byte is one */ + if ((mp_count_bits(num) & 7) == 0 || mp_iszero(num) == LTC_MP_YES) { + leading_zero = 1; + } else { + leading_zero = 0; + } + + /* size for bignum */ + z = len = leading_zero + mp_unsigned_bin_size(num); + } else { + /* it's negative */ + /* find power of 2 that is a multiple of eight and greater than count bits */ + z = mp_count_bits(num); + z = z + (8 - (z & 7)); + if (((mp_cnt_lsb(num)+1)==mp_count_bits(num)) && ((mp_count_bits(num)&7)==0)) --z; + len = z = z >> 3; + } + + /* now we need a length */ + if (z < 128) { + /* short form */ + ++len; + } else { + /* long form (relies on z != 0), assumes length bytes < 128 */ + ++len; + + while (z) { + ++len; + z >>= 8; + } + } + + /* we need a 0x02 to indicate it's INTEGER */ + ++len; + + /* return length */ + *outlen = len; + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/object_identifier/der_decode_object_identifier.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/object_identifier/der_decode_object_identifier.c new file mode 100644 index 000000000..75bc127cd --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/object_identifier/der_decode_object_identifier.c @@ -0,0 +1,106 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_decode_object_identifier.c + ASN.1 DER, Decode Object Identifier, Tom St Denis +*/ + +#ifdef LTC_DER +/** + Decode OID data and store the array of integers in words + @param in The OID DER encoded data + @param inlen The length of the OID data + @param words [out] The destination of the OID words + @param outlen [in/out] The number of OID words + @return CRYPT_OK if successful +*/ +int der_decode_object_identifier(const unsigned char *in, unsigned long inlen, + unsigned long *words, unsigned long *outlen) +{ + unsigned long x, y, t, len; + int err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(words != NULL); + LTC_ARGCHK(outlen != NULL); + + /* header is at least 3 bytes */ + if (inlen < 3) { + return CRYPT_INVALID_PACKET; + } + + /* must be room for at least two words */ + if (*outlen < 2) { + *outlen = 2; + return CRYPT_BUFFER_OVERFLOW; + } + + /* decode the packet header */ + x = 0; + if ((in[x++] & 0x1F) != 0x06) { + return CRYPT_INVALID_PACKET; + } + + /* get the length */ + if (in[x] < 128) { + len = in[x++]; + } else { + if (in[x] < 0x81 || in[x] > 0x82) { + return CRYPT_INVALID_PACKET; + } + y = in[x++] & 0x7F; + len = 0; + while (y--) { + len = (len << 8) | (unsigned long)in[x++]; + } + } + + if (len < 1 || (len + x) > inlen) { + return CRYPT_INVALID_PACKET; + } + + /* decode words */ + y = 0; + t = 0; + while (len--) { + t = (t << 7) | (in[x] & 0x7F); + if (!(in[x++] & 0x80)) { + /* store t */ + if (y >= *outlen) { + y++; + } else { + if (y == 0) { + words[0] = t / 40; + words[1] = t % 40; + y = 2; + } else { + words[y++] = t; + } + } + t = 0; + } + } + + if (y > *outlen) { + err = CRYPT_BUFFER_OVERFLOW; + } else { + err = CRYPT_OK; + } + + *outlen = y; + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/object_identifier/der_encode_object_identifier.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/object_identifier/der_encode_object_identifier.c new file mode 100644 index 000000000..b1ce62c9a --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/object_identifier/der_encode_object_identifier.c @@ -0,0 +1,109 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_encode_object_identifier.c + ASN.1 DER, Encode Object Identifier, Tom St Denis +*/ + +#ifdef LTC_DER +/** + Encode an OID + @param words The words to encode (upto 32-bits each) + @param nwords The number of words in the OID + @param out [out] Destination of OID data + @param outlen [in/out] The max and resulting size of the OID + @return CRYPT_OK if successful +*/ +int der_encode_object_identifier(unsigned long *words, unsigned long nwords, + unsigned char *out, unsigned long *outlen) +{ + unsigned long i, x, y, z, t, mask, wordbuf; + int err; + + LTC_ARGCHK(words != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* check length */ + if ((err = der_length_object_identifier(words, nwords, &x)) != CRYPT_OK) { + return err; + } + if (x > *outlen) { + *outlen = x; + return CRYPT_BUFFER_OVERFLOW; + } + + /* compute length to store OID data */ + z = 0; + wordbuf = words[0] * 40 + words[1]; + for (y = 1; y < nwords; y++) { + t = der_object_identifier_bits(wordbuf); + z += t/7 + ((t%7) ? 1 : 0) + (wordbuf == 0 ? 1 : 0); + if (y < nwords - 1) { + wordbuf = words[y + 1]; + } + } + + /* store header + length */ + x = 0; + out[x++] = 0x06; + if (z < 128) { + out[x++] = (unsigned char)z; + } else if (z < 256) { + out[x++] = 0x81; + out[x++] = (unsigned char)z; + } else if (z < 65536UL) { + out[x++] = 0x82; + out[x++] = (unsigned char)((z>>8)&255); + out[x++] = (unsigned char)(z&255); + } else { + return CRYPT_INVALID_ARG; + } + + /* store first byte */ + wordbuf = words[0] * 40 + words[1]; + for (i = 1; i < nwords; i++) { + /* store 7 bit words in little endian */ + t = wordbuf & 0xFFFFFFFF; + if (t) { + y = x; + mask = 0; + while (t) { + out[x++] = (unsigned char)((t & 0x7F) | mask); + t >>= 7; + mask |= 0x80; /* upper bit is set on all but the last byte */ + } + /* now swap bytes y...x-1 */ + z = x - 1; + while (y < z) { + t = out[y]; out[y] = out[z]; out[z] = (unsigned char)t; + ++y; + --z; + } + } else { + /* zero word */ + out[x++] = 0x00; + } + + if (i < nwords - 1) { + wordbuf = words[i + 1]; + } + } + + *outlen = x; + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/object_identifier/der_length_object_identifier.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/object_identifier/der_length_object_identifier.c new file mode 100644 index 000000000..ac0891547 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/object_identifier/der_length_object_identifier.c @@ -0,0 +1,87 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_length_object_identifier.c + ASN.1 DER, get length of Object Identifier, Tom St Denis +*/ + +#ifdef LTC_DER + +unsigned long der_object_identifier_bits(unsigned long x) +{ + unsigned long c; + x &= 0xFFFFFFFF; + c = 0; + while (x) { + ++c; + x >>= 1; + } + return c; +} + + +/** + Gets length of DER encoding of Object Identifier + @param nwords The number of OID words + @param words The actual OID words to get the size of + @param outlen [out] The length of the DER encoding for the given string + @return CRYPT_OK if successful +*/ +int der_length_object_identifier(unsigned long *words, unsigned long nwords, unsigned long *outlen) +{ + unsigned long y, z, t, wordbuf; + + LTC_ARGCHK(words != NULL); + LTC_ARGCHK(outlen != NULL); + + + /* must be >= 2 words */ + if (nwords < 2) { + return CRYPT_INVALID_ARG; + } + + /* word1 = 0,1,2,3 and word2 0..39 */ + if (words[0] > 3 || (words[0] < 2 && words[1] > 39)) { + return CRYPT_INVALID_ARG; + } + + /* leading word is the first two */ + z = 0; + wordbuf = words[0] * 40 + words[1]; + for (y = 1; y < nwords; y++) { + t = der_object_identifier_bits(wordbuf); + z += t/7 + ((t%7) ? 1 : 0) + (wordbuf == 0 ? 1 : 0); + if (y < nwords - 1) { + /* grab next word */ + wordbuf = words[y+1]; + } + } + + /* now depending on the length our length encoding changes */ + if (z < 128) { + z += 2; + } else if (z < 256) { + z += 3; + } else if (z < 65536UL) { + z += 4; + } else { + return CRYPT_INVALID_ARG; + } + + *outlen = z; + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/octet/der_decode_octet_string.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/octet/der_decode_octet_string.c new file mode 100644 index 000000000..02859dca5 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/octet/der_decode_octet_string.c @@ -0,0 +1,89 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_decode_octet_string.c + ASN.1 DER, encode a OCTET STRING, Tom St Denis +*/ + + +#ifdef LTC_DER + +/** + Store a OCTET STRING + @param in The DER encoded OCTET STRING + @param inlen The size of the DER OCTET STRING + @param out [out] The array of octets stored (one per char) + @param outlen [in/out] The number of octets stored + @return CRYPT_OK if successful +*/ +int der_decode_octet_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + unsigned long x, y, len; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* must have header at least */ + if (inlen < 2) { + return CRYPT_INVALID_PACKET; + } + + /* check for 0x04 */ + if ((in[0] & 0x1F) != 0x04) { + return CRYPT_INVALID_PACKET; + } + x = 1; + + /* decode the length */ + if (in[x] & 0x80) { + /* valid # of bytes in length are 1,2,3 */ + y = in[x] & 0x7F; + if ((y == 0) || (y > 3) || ((x + y) > inlen)) { + return CRYPT_INVALID_PACKET; + } + + /* read the length in */ + len = 0; + ++x; + while (y--) { + len = (len << 8) | in[x++]; + } + } else { + len = in[x++] & 0x7F; + } + + /* is it too long? */ + if (len > *outlen) { + *outlen = len; + return CRYPT_BUFFER_OVERFLOW; + } + + if (len + x > inlen) { + return CRYPT_INVALID_PACKET; + } + + /* read the data */ + for (y = 0; y < len; y++) { + out[y] = in[x++]; + } + + *outlen = y; + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/octet/der_encode_octet_string.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/octet/der_encode_octet_string.c new file mode 100644 index 000000000..9c9d1a656 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/octet/der_encode_octet_string.c @@ -0,0 +1,84 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_encode_octet_string.c + ASN.1 DER, encode a OCTET STRING, Tom St Denis +*/ + + +#ifdef LTC_DER + +/** + Store an OCTET STRING + @param in The array of OCTETS to store (one per char) + @param inlen The number of OCTETS to store + @param out [out] The destination for the DER encoded OCTET STRING + @param outlen [in/out] The max size and resulting size of the DER OCTET STRING + @return CRYPT_OK if successful +*/ +int der_encode_octet_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + unsigned long x, y, len; + int err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* get the size */ + if ((err = der_length_octet_string(inlen, &len)) != CRYPT_OK) { + return err; + } + + /* too big? */ + if (len > *outlen) { + *outlen = len; + return CRYPT_BUFFER_OVERFLOW; + } + + /* encode the header+len */ + x = 0; + out[x++] = 0x04; + if (inlen < 128) { + out[x++] = (unsigned char)inlen; + } else if (inlen < 256) { + out[x++] = 0x81; + out[x++] = (unsigned char)inlen; + } else if (inlen < 65536UL) { + out[x++] = 0x82; + out[x++] = (unsigned char)((inlen>>8)&255); + out[x++] = (unsigned char)(inlen&255); + } else if (inlen < 16777216UL) { + out[x++] = 0x83; + out[x++] = (unsigned char)((inlen>>16)&255); + out[x++] = (unsigned char)((inlen>>8)&255); + out[x++] = (unsigned char)(inlen&255); + } else { + return CRYPT_INVALID_ARG; + } + + /* store octets */ + for (y = 0; y < inlen; y++) { + out[x++] = in[y]; + } + + /* retun length */ + *outlen = x; + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/octet/der_length_octet_string.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/octet/der_length_octet_string.c new file mode 100644 index 000000000..10c9e892a --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/octet/der_length_octet_string.c @@ -0,0 +1,51 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_length_octet_string.c + ASN.1 DER, get length of OCTET STRING, Tom St Denis +*/ + +#ifdef LTC_DER +/** + Gets length of DER encoding of OCTET STRING + @param noctets The number of octets in the string to encode + @param outlen [out] The length of the DER encoding for the given string + @return CRYPT_OK if successful +*/ +int der_length_octet_string(unsigned long noctets, unsigned long *outlen) +{ + LTC_ARGCHK(outlen != NULL); + + if (noctets < 128) { + /* 04 LL DD DD DD ... */ + *outlen = 2 + noctets; + } else if (noctets < 256) { + /* 04 81 LL DD DD DD ... */ + *outlen = 3 + noctets; + } else if (noctets < 65536UL) { + /* 04 82 LL LL DD DD DD ... */ + *outlen = 4 + noctets; + } else if (noctets < 16777216UL) { + /* 04 83 LL LL LL DD DD DD ... */ + *outlen = 5 + noctets; + } else { + return CRYPT_INVALID_ARG; + } + + return CRYPT_OK; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/printable_string/der_decode_printable_string.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/printable_string/der_decode_printable_string.c new file mode 100644 index 000000000..694742921 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/printable_string/der_decode_printable_string.c @@ -0,0 +1,94 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_decode_printable_string.c + ASN.1 DER, encode a printable STRING, Tom St Denis +*/ + + +#ifdef LTC_DER + +/** + Store a printable STRING + @param in The DER encoded printable STRING + @param inlen The size of the DER printable STRING + @param out [out] The array of octets stored (one per char) + @param outlen [in/out] The number of octets stored + @return CRYPT_OK if successful +*/ +int der_decode_printable_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + unsigned long x, y, len; + int t; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* must have header at least */ + if (inlen < 2) { + return CRYPT_INVALID_PACKET; + } + + /* check for 0x13 */ + if ((in[0] & 0x1F) != 0x13) { + return CRYPT_INVALID_PACKET; + } + x = 1; + + /* decode the length */ + if (in[x] & 0x80) { + /* valid # of bytes in length are 1,2,3 */ + y = in[x] & 0x7F; + if ((y == 0) || (y > 3) || ((x + y) > inlen)) { + return CRYPT_INVALID_PACKET; + } + + /* read the length in */ + len = 0; + ++x; + while (y--) { + len = (len << 8) | in[x++]; + } + } else { + len = in[x++] & 0x7F; + } + + /* is it too long? */ + if (len > *outlen) { + *outlen = len; + return CRYPT_BUFFER_OVERFLOW; + } + + if (len + x > inlen) { + return CRYPT_INVALID_PACKET; + } + + /* read the data */ + for (y = 0; y < len; y++) { + t = der_printable_value_decode(in[x++]); + if (t == -1) { + return CRYPT_INVALID_ARG; + } + out[y] = t; + } + + *outlen = y; + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/printable_string/der_encode_printable_string.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/printable_string/der_encode_printable_string.c new file mode 100644 index 000000000..ee54e48ff --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/printable_string/der_encode_printable_string.c @@ -0,0 +1,83 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_encode_printable_string.c + ASN.1 DER, encode a printable STRING, Tom St Denis +*/ + +#ifdef LTC_DER + +/** + Store an printable STRING + @param in The array of printable to store (one per char) + @param inlen The number of printable to store + @param out [out] The destination for the DER encoded printable STRING + @param outlen [in/out] The max size and resulting size of the DER printable STRING + @return CRYPT_OK if successful +*/ +int der_encode_printable_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + unsigned long x, y, len; + int err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* get the size */ + if ((err = der_length_printable_string(in, inlen, &len)) != CRYPT_OK) { + return err; + } + + /* too big? */ + if (len > *outlen) { + *outlen = len; + return CRYPT_BUFFER_OVERFLOW; + } + + /* encode the header+len */ + x = 0; + out[x++] = 0x13; + if (inlen < 128) { + out[x++] = (unsigned char)inlen; + } else if (inlen < 256) { + out[x++] = 0x81; + out[x++] = (unsigned char)inlen; + } else if (inlen < 65536UL) { + out[x++] = 0x82; + out[x++] = (unsigned char)((inlen>>8)&255); + out[x++] = (unsigned char)(inlen&255); + } else if (inlen < 16777216UL) { + out[x++] = 0x83; + out[x++] = (unsigned char)((inlen>>16)&255); + out[x++] = (unsigned char)((inlen>>8)&255); + out[x++] = (unsigned char)(inlen&255); + } else { + return CRYPT_INVALID_ARG; + } + + /* store octets */ + for (y = 0; y < inlen; y++) { + out[x++] = der_printable_char_encode(in[y]); + } + + /* retun length */ + *outlen = x; + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/printable_string/der_length_printable_string.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/printable_string/der_length_printable_string.c new file mode 100644 index 000000000..40f0beb42 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/printable_string/der_length_printable_string.c @@ -0,0 +1,164 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_length_printable_string.c + ASN.1 DER, get length of Printable STRING, Tom St Denis +*/ + +#ifdef LTC_DER + +static const struct { + int code, value; +} printable_table[] = { +{ ' ', 32 }, +{ '\'', 39 }, +{ '(', 40 }, +{ ')', 41 }, +{ '+', 43 }, +{ ',', 44 }, +{ '-', 45 }, +{ '.', 46 }, +{ '/', 47 }, +{ '0', 48 }, +{ '1', 49 }, +{ '2', 50 }, +{ '3', 51 }, +{ '4', 52 }, +{ '5', 53 }, +{ '6', 54 }, +{ '7', 55 }, +{ '8', 56 }, +{ '9', 57 }, +{ ':', 58 }, +{ '=', 61 }, +{ '?', 63 }, +{ 'A', 65 }, +{ 'B', 66 }, +{ 'C', 67 }, +{ 'D', 68 }, +{ 'E', 69 }, +{ 'F', 70 }, +{ 'G', 71 }, +{ 'H', 72 }, +{ 'I', 73 }, +{ 'J', 74 }, +{ 'K', 75 }, +{ 'L', 76 }, +{ 'M', 77 }, +{ 'N', 78 }, +{ 'O', 79 }, +{ 'P', 80 }, +{ 'Q', 81 }, +{ 'R', 82 }, +{ 'S', 83 }, +{ 'T', 84 }, +{ 'U', 85 }, +{ 'V', 86 }, +{ 'W', 87 }, +{ 'X', 88 }, +{ 'Y', 89 }, +{ 'Z', 90 }, +{ 'a', 97 }, +{ 'b', 98 }, +{ 'c', 99 }, +{ 'd', 100 }, +{ 'e', 101 }, +{ 'f', 102 }, +{ 'g', 103 }, +{ 'h', 104 }, +{ 'i', 105 }, +{ 'j', 106 }, +{ 'k', 107 }, +{ 'l', 108 }, +{ 'm', 109 }, +{ 'n', 110 }, +{ 'o', 111 }, +{ 'p', 112 }, +{ 'q', 113 }, +{ 'r', 114 }, +{ 's', 115 }, +{ 't', 116 }, +{ 'u', 117 }, +{ 'v', 118 }, +{ 'w', 119 }, +{ 'x', 120 }, +{ 'y', 121 }, +{ 'z', 122 }, +}; + +int der_printable_char_encode(int c) +{ + int x; + for (x = 0; x < (int)(sizeof(printable_table)/sizeof(printable_table[0])); x++) { + if (printable_table[x].code == c) { + return printable_table[x].value; + } + } + return -1; +} + +int der_printable_value_decode(int v) +{ + int x; + for (x = 0; x < (int)(sizeof(printable_table)/sizeof(printable_table[0])); x++) { + if (printable_table[x].value == v) { + return printable_table[x].code; + } + } + return -1; +} + +/** + Gets length of DER encoding of Printable STRING + @param octets The values you want to encode + @param noctets The number of octets in the string to encode + @param outlen [out] The length of the DER encoding for the given string + @return CRYPT_OK if successful +*/ +int der_length_printable_string(const unsigned char *octets, unsigned long noctets, unsigned long *outlen) +{ + unsigned long x; + + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(octets != NULL); + + /* scan string for validity */ + for (x = 0; x < noctets; x++) { + if (der_printable_char_encode(octets[x]) == -1) { + return CRYPT_INVALID_ARG; + } + } + + if (noctets < 128) { + /* 16 LL DD DD DD ... */ + *outlen = 2 + noctets; + } else if (noctets < 256) { + /* 16 81 LL DD DD DD ... */ + *outlen = 3 + noctets; + } else if (noctets < 65536UL) { + /* 16 82 LL LL DD DD DD ... */ + *outlen = 4 + noctets; + } else if (noctets < 16777216UL) { + /* 16 83 LL LL LL DD DD DD ... */ + *outlen = 5 + noctets; + } else { + return CRYPT_INVALID_ARG; + } + + return CRYPT_OK; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_ex.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_ex.c new file mode 100644 index 000000000..b820c68ab --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_ex.c @@ -0,0 +1,328 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + + +/** + @file der_decode_sequence_ex.c + ASN.1 DER, decode a SEQUENCE, Tom St Denis +*/ + +#ifdef LTC_DER + +/** + Decode a SEQUENCE + @param in The DER encoded input + @param inlen The size of the input + @param list The list of items to decode + @param outlen The number of items in the list + @param ordered Search an unordeded or ordered list + @return CRYPT_OK on success +*/ +int der_decode_sequence_ex(const unsigned char *in, unsigned long inlen, + ltc_asn1_list *list, unsigned long outlen, int ordered) +{ + int err, i; + ltc_asn1_type type; + unsigned long size, x, y, z, blksize; + void *data; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(list != NULL); + + /* get blk size */ + if (inlen < 2) { + return CRYPT_INVALID_PACKET; + } + + /* sequence type? We allow 0x30 SEQUENCE and 0x31 SET since fundamentally they're the same structure */ + x = 0; + if (in[x] != 0x30 && in[x] != 0x31) { + return CRYPT_INVALID_PACKET; + } + ++x; + + /* check if the msb is set, which signals that the + * 7 lsb bits represent the number of bytes of the length + */ + if (in[x] < 128) { + blksize = in[x++]; + } else { + if (in[x] < 0x81 || in[x] > 0x83) { + return CRYPT_INVALID_PACKET; + } + y = in[x++] & 0x7F; + + /* would reading the len bytes overrun? */ + if (x + y > inlen) { + return CRYPT_INVALID_PACKET; + } + + /* read len */ + blksize = 0; + while (y--) { + blksize = (blksize << 8) | (unsigned long)in[x++]; + } + } + + /* would this blksize overflow? */ + if (x + blksize > inlen) { + return CRYPT_INVALID_PACKET; + } + + /* mark all as unused */ + for (i = 0; i < (int)outlen; i++) { + list[i].used = 0; + } + + /* ok read data */ + inlen = blksize; + for (i = 0; i < (int)outlen; i++) { + z = 0; + type = list[i].type; + size = list[i].size; + data = list[i].data; + if (!ordered && list[i].used == 1) { continue; } + + if (type == LTC_ASN1_EOL) { + break; + } + + switch (type) { + case LTC_ASN1_BOOLEAN: + z = inlen; + if ((err = der_decode_boolean(in + x, z, ((int *)data))) != CRYPT_OK) { + if (!ordered) { continue; } + goto LBL_ERR; + } + if ((err = der_length_boolean(&z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_INTEGER: + z = inlen; + if ((err = der_decode_integer(in + x, z, data)) != CRYPT_OK) { + if (!ordered) { continue; } + goto LBL_ERR; + } + if ((err = der_length_integer(data, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_SHORT_INTEGER: + z = inlen; + if ((err = der_decode_short_integer(in + x, z, data)) != CRYPT_OK) { + if (!ordered) { continue; } + goto LBL_ERR; + } + if ((err = der_length_short_integer(((unsigned long*)data)[0], &z)) != CRYPT_OK) { + goto LBL_ERR; + } + + break; + + case LTC_ASN1_BIT_STRING: + z = inlen; + if ((err = der_decode_bit_string(in + x, z, data, &size)) != CRYPT_OK) { + if (!ordered) { continue; } + goto LBL_ERR; + } + list[i].size = size; + if ((err = der_length_bit_string(size, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_RAW_BIT_STRING: + z = inlen; + if ((err = der_decode_raw_bit_string(in + x, z, data, &size)) != CRYPT_OK) { + if (!ordered) { continue; } + goto LBL_ERR; + } + list[i].size = size; + if ((err = der_length_bit_string(size, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_OCTET_STRING: + z = inlen; + if ((err = der_decode_octet_string(in + x, z, data, &size)) != CRYPT_OK) { + if (!ordered) { continue; } + goto LBL_ERR; + } + list[i].size = size; + if ((err = der_length_octet_string(size, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_NULL: + if (inlen < 2 || in[x] != 0x05 || in[x+1] != 0x00) { + if (!ordered) { continue; } + err = CRYPT_INVALID_PACKET; + goto LBL_ERR; + } + z = 2; + break; + + case LTC_ASN1_OBJECT_IDENTIFIER: + z = inlen; + if ((err = der_decode_object_identifier(in + x, z, data, &size)) != CRYPT_OK) { + if (!ordered) { continue; } + goto LBL_ERR; + } + list[i].size = size; + if ((err = der_length_object_identifier(data, size, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_TELETEX_STRING: + z = inlen; + if ((err = der_decode_teletex_string(in + x, z, data, &size)) != CRYPT_OK) { + if (!ordered) { continue; } + goto LBL_ERR; + } + list[i].size = size; + if ((err = der_length_teletex_string(data, size, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_IA5_STRING: + z = inlen; + if ((err = der_decode_ia5_string(in + x, z, data, &size)) != CRYPT_OK) { + if (!ordered) { continue; } + goto LBL_ERR; + } + list[i].size = size; + if ((err = der_length_ia5_string(data, size, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + + case LTC_ASN1_PRINTABLE_STRING: + z = inlen; + if ((err = der_decode_printable_string(in + x, z, data, &size)) != CRYPT_OK) { + if (!ordered) { continue; } + goto LBL_ERR; + } + list[i].size = size; + if ((err = der_length_printable_string(data, size, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_UTF8_STRING: + z = inlen; + if ((err = der_decode_utf8_string(in + x, z, data, &size)) != CRYPT_OK) { + if (!ordered) { continue; } + goto LBL_ERR; + } + list[i].size = size; + if ((err = der_length_utf8_string(data, size, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_UTCTIME: + z = inlen; + if ((err = der_decode_utctime(in + x, &z, data)) != CRYPT_OK) { + if (!ordered) { continue; } + goto LBL_ERR; + } + break; + + case LTC_ASN1_GENERALIZEDTIME: + z = inlen; + if ((err = der_decode_generalizedtime(in + x, &z, data)) != CRYPT_OK) { + if (!ordered) { continue; } + goto LBL_ERR; + } + break; + + case LTC_ASN1_SET: + z = inlen; + if ((err = der_decode_set(in + x, z, data, size)) != CRYPT_OK) { + if (!ordered) { continue; } + goto LBL_ERR; + } + if ((err = der_length_sequence(data, size, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_SETOF: + case LTC_ASN1_SEQUENCE: + /* detect if we have the right type */ + if ((type == LTC_ASN1_SETOF && (in[x] & 0x3F) != 0x31) || (type == LTC_ASN1_SEQUENCE && (in[x] & 0x3F) != 0x30)) { + err = CRYPT_INVALID_PACKET; + goto LBL_ERR; + } + + z = inlen; + if ((err = der_decode_sequence(in + x, z, data, size)) != CRYPT_OK) { + if (!ordered) { continue; } + goto LBL_ERR; + } + if ((err = der_length_sequence(data, size, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + + case LTC_ASN1_CHOICE: + z = inlen; + if ((err = der_decode_choice(in + x, &z, data, size)) != CRYPT_OK) { + if (!ordered) { continue; } + goto LBL_ERR; + } + break; + + case LTC_ASN1_CONSTRUCTED: + case LTC_ASN1_CONTEXT_SPECIFIC: + case LTC_ASN1_EOL: + err = CRYPT_INVALID_ARG; + goto LBL_ERR; + } + x += z; + inlen -= z; + list[i].used = 1; + if (!ordered) { + /* restart the decoder */ + i = -1; + } + } + + for (i = 0; i < (int)outlen; i++) { + if (list[i].used == 0) { + err = CRYPT_INVALID_PACKET; + goto LBL_ERR; + } + } + + if (inlen == 0) { + err = CRYPT_OK; + } else { + err = CRYPT_INPUT_TOO_LONG; + } + +LBL_ERR: + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_flexi.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_flexi.c new file mode 100644 index 000000000..cb93e8f6b --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_flexi.c @@ -0,0 +1,484 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_decode_sequence_flexi.c + ASN.1 DER, decode an array of ASN.1 types with a flexi parser, Tom St Denis +*/ + +#ifdef LTC_DER + +static unsigned long _fetch_length(const unsigned char *in, unsigned long inlen, unsigned long *data_offset) +{ + unsigned long x, z; + + *data_offset = 0; + + /* skip type and read len */ + if (inlen < 2) { + return 0xFFFFFFFF; + } + ++in; ++(*data_offset); + + /* read len */ + x = *in++; ++(*data_offset); + + /* <128 means literal */ + if (x < 128) { + return x+*data_offset; + } + x &= 0x7F; /* the lower 7 bits are the length of the length */ + inlen -= 2; + + /* len means len of len! */ + if (x == 0 || x > 4 || x > inlen) { + return 0xFFFFFFFF; + } + + *data_offset += x; + z = 0; + while (x--) { + z = (z<<8) | ((unsigned long)*in); + ++in; + } + return z+*data_offset; +} + +static int _new_element(ltc_asn1_list **l) +{ + /* alloc new link */ + if (*l == NULL) { + *l = XCALLOC(1, sizeof(ltc_asn1_list)); + if (*l == NULL) { + return CRYPT_MEM; + } + } else { + (*l)->next = XCALLOC(1, sizeof(ltc_asn1_list)); + if ((*l)->next == NULL) { + return CRYPT_MEM; + } + (*l)->next->prev = *l; + *l = (*l)->next; + } + return CRYPT_OK; +} + +/** + ASN.1 DER Flexi(ble) decoder will decode arbitrary DER packets and create a linked list of the decoded elements. + @param in The input buffer + @param inlen [in/out] The length of the input buffer and on output the amount of decoded data + @param out [out] A pointer to the linked list + @return CRYPT_OK on success. +*/ +int der_decode_sequence_flexi(const unsigned char *in, unsigned long *inlen, ltc_asn1_list **out) +{ + ltc_asn1_list *l, *t; + unsigned long err, type, len, totlen, data_offset, len_len; + void *realloc_tmp; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(inlen != NULL); + LTC_ARGCHK(out != NULL); + + l = NULL; + totlen = 0; + + if (*inlen == 0) { + /* alloc new link */ + if ((err = _new_element(&l)) != CRYPT_OK) { + goto error; + } + } + + /* scan the input and and get lengths and what not */ + while (*inlen) { + /* read the type byte */ + type = *in; + + /* fetch length */ + len = _fetch_length(in, *inlen, &data_offset); + if (len > *inlen) { + err = CRYPT_INVALID_PACKET; + goto error; + } + + /* alloc new link */ + if ((err = _new_element(&l)) != CRYPT_OK) { + goto error; + } + + if ((type & 0x20) && (type != 0x30) && (type != 0x31)) { + /* constructed, use the 'used' field to store the original identifier */ + l->used = type; + /* treat constructed elements like SETs */ + type = 0x20; + } + else if ((type & 0xC0) == 0x80) { + /* context-specific, use the 'used' field to store the original identifier */ + l->used = type; + /* context-specific elements are treated as opaque data */ + type = 0x80; + } + + /* now switch on type */ + switch (type) { + case 0x01: /* BOOLEAN */ + l->type = LTC_ASN1_BOOLEAN; + l->size = 1; + l->data = XCALLOC(1, sizeof(int)); + + if ((err = der_decode_boolean(in, *inlen, l->data)) != CRYPT_OK) { + goto error; + } + + if ((err = der_length_boolean(&len)) != CRYPT_OK) { + goto error; + } + break; + + case 0x02: /* INTEGER */ + /* init field */ + l->type = LTC_ASN1_INTEGER; + l->size = 1; + if ((err = mp_init(&l->data)) != CRYPT_OK) { + goto error; + } + + /* decode field */ + if ((err = der_decode_integer(in, *inlen, l->data)) != CRYPT_OK) { + goto error; + } + + /* calc length of object */ + if ((err = der_length_integer(l->data, &len)) != CRYPT_OK) { + goto error; + } + break; + + case 0x03: /* BIT */ + /* init field */ + l->type = LTC_ASN1_BIT_STRING; + l->size = len * 8; /* *8 because we store decoded bits one per char and they are encoded 8 per char. */ + + if ((l->data = XCALLOC(1, l->size)) == NULL) { + err = CRYPT_MEM; + goto error; + } + + if ((err = der_decode_bit_string(in, *inlen, l->data, &l->size)) != CRYPT_OK) { + goto error; + } + + if ((err = der_length_bit_string(l->size, &len)) != CRYPT_OK) { + goto error; + } + break; + + case 0x04: /* OCTET */ + + /* init field */ + l->type = LTC_ASN1_OCTET_STRING; + l->size = len; + + if ((l->data = XCALLOC(1, l->size)) == NULL) { + err = CRYPT_MEM; + goto error; + } + + if ((err = der_decode_octet_string(in, *inlen, l->data, &l->size)) != CRYPT_OK) { + goto error; + } + + if ((err = der_length_octet_string(l->size, &len)) != CRYPT_OK) { + goto error; + } + break; + + case 0x05: /* NULL */ + + /* valid NULL is 0x05 0x00 */ + if (in[0] != 0x05 || in[1] != 0x00) { + err = CRYPT_INVALID_PACKET; + goto error; + } + + /* simple to store ;-) */ + l->type = LTC_ASN1_NULL; + l->data = NULL; + l->size = 0; + len = 2; + + break; + + case 0x06: /* OID */ + + /* init field */ + l->type = LTC_ASN1_OBJECT_IDENTIFIER; + l->size = len; + + if ((l->data = XCALLOC(len, sizeof(unsigned long))) == NULL) { + err = CRYPT_MEM; + goto error; + } + + if ((err = der_decode_object_identifier(in, *inlen, l->data, &l->size)) != CRYPT_OK) { + goto error; + } + + if ((err = der_length_object_identifier(l->data, l->size, &len)) != CRYPT_OK) { + goto error; + } + + /* resize it to save a bunch of mem */ + if ((realloc_tmp = XREALLOC(l->data, l->size * sizeof(unsigned long))) == NULL) { + /* out of heap but this is not an error */ + break; + } + l->data = realloc_tmp; + break; + + case 0x0C: /* UTF8 */ + + /* init field */ + l->type = LTC_ASN1_UTF8_STRING; + l->size = len; + + if ((l->data = XCALLOC(sizeof(wchar_t), l->size)) == NULL) { + err = CRYPT_MEM; + goto error; + } + + if ((err = der_decode_utf8_string(in, *inlen, l->data, &l->size)) != CRYPT_OK) { + goto error; + } + + if ((err = der_length_utf8_string(l->data, l->size, &len)) != CRYPT_OK) { + goto error; + } + break; + + case 0x13: /* PRINTABLE */ + + /* init field */ + l->type = LTC_ASN1_PRINTABLE_STRING; + l->size = len; + + if ((l->data = XCALLOC(1, l->size)) == NULL) { + err = CRYPT_MEM; + goto error; + } + + if ((err = der_decode_printable_string(in, *inlen, l->data, &l->size)) != CRYPT_OK) { + goto error; + } + + if ((err = der_length_printable_string(l->data, l->size, &len)) != CRYPT_OK) { + goto error; + } + break; + + case 0x14: /* TELETEXT */ + + /* init field */ + l->type = LTC_ASN1_TELETEX_STRING; + l->size = len; + + if ((l->data = XCALLOC(1, l->size)) == NULL) { + err = CRYPT_MEM; + goto error; + } + + if ((err = der_decode_teletex_string(in, *inlen, l->data, &l->size)) != CRYPT_OK) { + goto error; + } + + if ((err = der_length_teletex_string(l->data, l->size, &len)) != CRYPT_OK) { + goto error; + } + break; + + case 0x16: /* IA5 */ + + /* init field */ + l->type = LTC_ASN1_IA5_STRING; + l->size = len; + + if ((l->data = XCALLOC(1, l->size)) == NULL) { + err = CRYPT_MEM; + goto error; + } + + if ((err = der_decode_ia5_string(in, *inlen, l->data, &l->size)) != CRYPT_OK) { + goto error; + } + + if ((err = der_length_ia5_string(l->data, l->size, &len)) != CRYPT_OK) { + goto error; + } + break; + + case 0x17: /* UTC TIME */ + + /* init field */ + l->type = LTC_ASN1_UTCTIME; + l->size = 1; + + if ((l->data = XCALLOC(1, sizeof(ltc_utctime))) == NULL) { + err = CRYPT_MEM; + goto error; + } + + len = *inlen; + if ((err = der_decode_utctime(in, &len, l->data)) != CRYPT_OK) { + goto error; + } + + if ((err = der_length_utctime(l->data, &len)) != CRYPT_OK) { + goto error; + } + break; + + case 0x18: + l->type = LTC_ASN1_GENERALIZEDTIME; + l->size = len; + + if ((l->data = XCALLOC(1, sizeof(ltc_generalizedtime))) == NULL) { + err = CRYPT_MEM; + goto error; + } + + if ((err = der_decode_generalizedtime(in, &len, l->data)) != CRYPT_OK) { + goto error; + } + + if ((err = der_length_generalizedtime(l->data, &len)) != CRYPT_OK) { + goto error; + } + + break; + + case 0x20: /* Any CONSTRUCTED element that is neither SEQUENCE nor SET */ + case 0x30: /* SEQUENCE */ + case 0x31: /* SET */ + + /* init field */ + if (type == 0x20) { + l->type = LTC_ASN1_CONSTRUCTED; + } + else if (type == 0x30) { + l->type = LTC_ASN1_SEQUENCE; + } + else { + l->type = LTC_ASN1_SET; + } + + if ((l->data = XMALLOC(len)) == NULL) { + err = CRYPT_MEM; + goto error; + } + + XMEMCPY(l->data, in, len); + l->size = len; + + + /* jump to the start of the data */ + in += data_offset; + *inlen -= data_offset; + len = len - data_offset; + + /* Sequence elements go as child */ + if ((err = der_decode_sequence_flexi(in, &len, &(l->child))) != CRYPT_OK) { + goto error; + } + + /* len update */ + totlen += data_offset; + + /* the flexi decoder can also do nothing, so make sure a child has been allocated */ + if (l->child) { + /* link them up y0 */ + l->child->parent = l; + } + + t = l; + len_len = 0; + while((t != NULL) && (t->child != NULL)) { + len_len++; + t = t->child; + } + if (len_len > LTC_DER_MAX_RECURSION) { + err = CRYPT_ERROR; + goto error; + } + + break; + + case 0x80: /* Context-specific */ + l->type = LTC_ASN1_CONTEXT_SPECIFIC; + + if ((l->data = XCALLOC(1, len - data_offset)) == NULL) { + err = CRYPT_MEM; + goto error; + } + + XMEMCPY(l->data, in + data_offset, len - data_offset); + l->size = len - data_offset; + + break; + + default: + /* invalid byte ... this is a soft error */ + /* remove link */ + if (l->prev) { + l = l->prev; + XFREE(l->next); + l->next = NULL; + } + goto outside; + } + + /* advance pointers */ + totlen += len; + in += len; + *inlen -= len; + } + +outside: + + /* in case we processed anything */ + if (totlen) { + /* rewind l please */ + while (l->prev != NULL || l->parent != NULL) { + if (l->parent != NULL) { + l = l->parent; + } else { + l = l->prev; + } + } + } + + /* return */ + *out = l; + *inlen = totlen; + return CRYPT_OK; + +error: + /* free list */ + der_sequence_free(l); + + return err; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_multi.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_multi.c new file mode 100644 index 000000000..1361b761b --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_decode_sequence_multi.c @@ -0,0 +1,145 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" +#include + + +/** + @file der_decode_sequence_multi.c + ASN.1 DER, decode a SEQUENCE, Tom St Denis +*/ + +#ifdef LTC_DER + +/** + Decode a SEQUENCE type using a VA list + @param in Input buffer + @param inlen Length of input in octets + @remark <...> is of the form (int, unsigned long, void*) + @return CRYPT_OK on success +*/ +int der_decode_sequence_multi(const unsigned char *in, unsigned long inlen, ...) +{ + int err; + ltc_asn1_type type; + unsigned long size, x; + void *data; + va_list args; + ltc_asn1_list *list; + + LTC_ARGCHK(in != NULL); + + /* get size of output that will be required */ + va_start(args, inlen); + x = 0; + for (;;) { + type = (ltc_asn1_type)va_arg(args, int); + size = va_arg(args, unsigned long); + data = va_arg(args, void*); + LTC_UNUSED_PARAM(size); + LTC_UNUSED_PARAM(data); + + if (type == LTC_ASN1_EOL) { + break; + } + + switch (type) { + case LTC_ASN1_BOOLEAN: + case LTC_ASN1_INTEGER: + case LTC_ASN1_SHORT_INTEGER: + case LTC_ASN1_BIT_STRING: + case LTC_ASN1_OCTET_STRING: + case LTC_ASN1_NULL: + case LTC_ASN1_OBJECT_IDENTIFIER: + case LTC_ASN1_IA5_STRING: + case LTC_ASN1_PRINTABLE_STRING: + case LTC_ASN1_UTF8_STRING: + case LTC_ASN1_UTCTIME: + case LTC_ASN1_SET: + case LTC_ASN1_SETOF: + case LTC_ASN1_SEQUENCE: + case LTC_ASN1_CHOICE: + case LTC_ASN1_RAW_BIT_STRING: + case LTC_ASN1_TELETEX_STRING: + case LTC_ASN1_GENERALIZEDTIME: + ++x; + break; + + case LTC_ASN1_EOL: + case LTC_ASN1_CONSTRUCTED: + case LTC_ASN1_CONTEXT_SPECIFIC: + va_end(args); + return CRYPT_INVALID_ARG; + } + } + va_end(args); + + /* allocate structure for x elements */ + if (x == 0) { + return CRYPT_NOP; + } + + list = XCALLOC(sizeof(*list), x); + if (list == NULL) { + return CRYPT_MEM; + } + + /* fill in the structure */ + va_start(args, inlen); + x = 0; + for (;;) { + type = (ltc_asn1_type)va_arg(args, int); + size = va_arg(args, unsigned long); + data = va_arg(args, void*); + + if (type == LTC_ASN1_EOL) { + break; + } + + switch (type) { + case LTC_ASN1_BOOLEAN: + case LTC_ASN1_INTEGER: + case LTC_ASN1_SHORT_INTEGER: + case LTC_ASN1_BIT_STRING: + case LTC_ASN1_OCTET_STRING: + case LTC_ASN1_NULL: + case LTC_ASN1_OBJECT_IDENTIFIER: + case LTC_ASN1_IA5_STRING: + case LTC_ASN1_PRINTABLE_STRING: + case LTC_ASN1_UTF8_STRING: + case LTC_ASN1_UTCTIME: + case LTC_ASN1_SEQUENCE: + case LTC_ASN1_SET: + case LTC_ASN1_SETOF: + case LTC_ASN1_CHOICE: + case LTC_ASN1_RAW_BIT_STRING: + case LTC_ASN1_TELETEX_STRING: + case LTC_ASN1_GENERALIZEDTIME: + LTC_SET_ASN1(list, x++, type, data, size); + break; + /* coverity[dead_error_line] */ + case LTC_ASN1_EOL: + case LTC_ASN1_CONSTRUCTED: + case LTC_ASN1_CONTEXT_SPECIFIC: + break; + } + } + va_end(args); + + err = der_decode_sequence(in, inlen, list, x); + XFREE(list); + return err; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_decode_subject_public_key_info.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_decode_subject_public_key_info.c new file mode 100644 index 000000000..d2d081172 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_decode_subject_public_key_info.c @@ -0,0 +1,112 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" +/** + @file der_decode_subject_public_key_info.c + ASN.1 DER, encode a Subject Public Key structure --nmav +*/ + +#ifdef LTC_DER + +/* AlgorithmIdentifier := SEQUENCE { + * algorithm OBJECT IDENTIFIER, + * parameters ANY DEFINED BY algorithm + * } + * + * SubjectPublicKeyInfo := SEQUENCE { + * algorithm AlgorithmIdentifier, + * subjectPublicKey BIT STRING + * } + */ +/** + Decode a subject public key info + @param in The input buffer + @param inlen The length of the input buffer + @param algorithm One out of the enum #public_key_algorithms + @param public_key The buffer for the public key + @param public_key_len [in/out] The length of the public key buffer and the written length + @param parameters_type The parameters' type out of the enum ltc_asn1_type + @param parameters The parameters to include + @param parameters_len The number of parameters to include + @return CRYPT_OK on success +*/ +int der_decode_subject_public_key_info(const unsigned char *in, unsigned long inlen, + unsigned int algorithm, void* public_key, unsigned long* public_key_len, + unsigned long parameters_type, ltc_asn1_list* parameters, unsigned long parameters_len) +{ + int err; + unsigned long len; + oid_st oid; + unsigned char *tmpbuf; + unsigned long tmpoid[16]; + ltc_asn1_list alg_id[2]; + ltc_asn1_list subject_pubkey[2]; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(inlen != 0); + LTC_ARGCHK(public_key_len != NULL); + + err = pk_get_oid(algorithm, &oid); + if (err != CRYPT_OK) { + return err; + } + + /* see if the OpenSSL DER format RSA public key will work */ + tmpbuf = XCALLOC(1, inlen); + if (tmpbuf == NULL) { + err = CRYPT_MEM; + goto LBL_ERR; + } + + /* this includes the internal hash ID and optional params (NULL in this case) */ + LTC_SET_ASN1(alg_id, 0, LTC_ASN1_OBJECT_IDENTIFIER, tmpoid, sizeof(tmpoid)/sizeof(tmpoid[0])); + LTC_SET_ASN1(alg_id, 1, (ltc_asn1_type)parameters_type, parameters, parameters_len); + + /* the actual format of the SSL DER key is odd, it stores a RSAPublicKey + * in a **BIT** string ... so we have to extract it then proceed to convert bit to octet + */ + LTC_SET_ASN1(subject_pubkey, 0, LTC_ASN1_SEQUENCE, alg_id, 2); + LTC_SET_ASN1(subject_pubkey, 1, LTC_ASN1_RAW_BIT_STRING, tmpbuf, inlen*8U); + + err=der_decode_sequence(in, inlen, subject_pubkey, 2UL); + if (err != CRYPT_OK) { + goto LBL_ERR; + } + + if ((alg_id[0].size != oid.OIDlen) || + XMEMCMP(oid.OID, alg_id[0].data, oid.OIDlen * sizeof(oid.OID[0])) != 0) { + /* OID mismatch */ + err = CRYPT_PK_INVALID_TYPE; + goto LBL_ERR; + } + + len = subject_pubkey[1].size/8; + if (*public_key_len > len) { + XMEMCPY(public_key, subject_pubkey[1].data, len); + *public_key_len = len; + } else { + *public_key_len = len; + err = CRYPT_BUFFER_OVERFLOW; + goto LBL_ERR; + } + + err = CRYPT_OK; + +LBL_ERR: + + XFREE(tmpbuf); + + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_encode_sequence_ex.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_encode_sequence_ex.c new file mode 100644 index 000000000..2b42ff482 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_encode_sequence_ex.c @@ -0,0 +1,217 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + + +/** + @file der_encode_sequence_ex.c + ASN.1 DER, encode a SEQUENCE, Tom St Denis +*/ + +#ifdef LTC_DER + +/** + Encode a SEQUENCE + @param list The list of items to encode + @param inlen The number of items in the list + @param out [out] The destination + @param outlen [in/out] The size of the output + @param type_of LTC_ASN1_SEQUENCE or LTC_ASN1_SET/LTC_ASN1_SETOF + @return CRYPT_OK on success +*/ +int der_encode_sequence_ex(ltc_asn1_list *list, unsigned long inlen, + unsigned char *out, unsigned long *outlen, int type_of) +{ + int err; + ltc_asn1_type type; + unsigned long size, x, y, z, i; + void *data; + + LTC_ARGCHK(list != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* get size of output that will be required */ + y = 0; z = 0; + if ((err = der_length_sequence_ex(list, inlen, &y, &z)) != CRYPT_OK) return CRYPT_INVALID_ARG; + + /* too big ? */ + if (*outlen < y) { + *outlen = y; + err = CRYPT_BUFFER_OVERFLOW; + goto LBL_ERR; + } + + /* store header */ + x = 0; + out[x++] = (type_of == LTC_ASN1_SEQUENCE) ? 0x30 : 0x31; + + if (z < 128) { + out[x++] = (unsigned char)z; + } else if (z < 256) { + out[x++] = 0x81; + out[x++] = (unsigned char)z; + } else if (z < 65536UL) { + out[x++] = 0x82; + out[x++] = (unsigned char)((z>>8UL)&255); + out[x++] = (unsigned char)(z&255); + } else if (z < 16777216UL) { + out[x++] = 0x83; + out[x++] = (unsigned char)((z>>16UL)&255); + out[x++] = (unsigned char)((z>>8UL)&255); + out[x++] = (unsigned char)(z&255); + } + + /* store data */ + *outlen -= x; + for (i = 0; i < inlen; i++) { + type = list[i].type; + size = list[i].size; + data = list[i].data; + + if (type == LTC_ASN1_EOL) { + break; + } + + switch (type) { + case LTC_ASN1_BOOLEAN: + z = *outlen; + if ((err = der_encode_boolean(*((int *)data), out + x, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_INTEGER: + z = *outlen; + if ((err = der_encode_integer(data, out + x, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_SHORT_INTEGER: + z = *outlen; + if ((err = der_encode_short_integer(*((unsigned long*)data), out + x, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_BIT_STRING: + z = *outlen; + if ((err = der_encode_bit_string(data, size, out + x, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_RAW_BIT_STRING: + z = *outlen; + if ((err = der_encode_raw_bit_string(data, size, out + x, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_OCTET_STRING: + z = *outlen; + if ((err = der_encode_octet_string(data, size, out + x, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_NULL: + out[x] = 0x05; + out[x+1] = 0x00; + z = 2; + break; + + case LTC_ASN1_OBJECT_IDENTIFIER: + z = *outlen; + if ((err = der_encode_object_identifier(data, size, out + x, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_IA5_STRING: + z = *outlen; + if ((err = der_encode_ia5_string(data, size, out + x, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_PRINTABLE_STRING: + z = *outlen; + if ((err = der_encode_printable_string(data, size, out + x, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_UTF8_STRING: + z = *outlen; + if ((err = der_encode_utf8_string(data, size, out + x, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_UTCTIME: + z = *outlen; + if ((err = der_encode_utctime(data, out + x, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_GENERALIZEDTIME: + z = *outlen; + if ((err = der_encode_generalizedtime(data, out + x, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_SET: + z = *outlen; + if ((err = der_encode_set(data, size, out + x, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_SETOF: + z = *outlen; + if ((err = der_encode_setof(data, size, out + x, &z)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_SEQUENCE: + z = *outlen; + if ((err = der_encode_sequence_ex(data, size, out + x, &z, type)) != CRYPT_OK) { + goto LBL_ERR; + } + break; + + case LTC_ASN1_CHOICE: + case LTC_ASN1_CONSTRUCTED: + case LTC_ASN1_CONTEXT_SPECIFIC: + case LTC_ASN1_EOL: + case LTC_ASN1_TELETEX_STRING: + err = CRYPT_INVALID_ARG; + goto LBL_ERR; + } + + x += z; + *outlen -= z; + } + *outlen = x; + err = CRYPT_OK; + +LBL_ERR: + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_encode_sequence_multi.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_encode_sequence_multi.c new file mode 100644 index 000000000..c1b40c775 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_encode_sequence_multi.c @@ -0,0 +1,149 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" +#include + + +/** + @file der_encode_sequence_multi.c + ASN.1 DER, encode a SEQUENCE, Tom St Denis +*/ + +#ifdef LTC_DER + +/** + Encode a SEQUENCE type using a VA list + @param out [out] Destination for data + @param outlen [in/out] Length of buffer and resulting length of output + @remark <...> is of the form (int, unsigned long, void*) + @return CRYPT_OK on success +*/ +int der_encode_sequence_multi(unsigned char *out, unsigned long *outlen, ...) +{ + int err; + ltc_asn1_type type; + unsigned long size, x; + void *data; + va_list args; + ltc_asn1_list *list; + + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* get size of output that will be required */ + va_start(args, outlen); + x = 0; + for (;;) { + type = (ltc_asn1_type)va_arg(args, int); + size = va_arg(args, unsigned long); + data = va_arg(args, void*); + LTC_UNUSED_PARAM(size); + LTC_UNUSED_PARAM(data); + + if (type == LTC_ASN1_EOL) { + break; + } + + switch (type) { + case LTC_ASN1_BOOLEAN: + case LTC_ASN1_INTEGER: + case LTC_ASN1_SHORT_INTEGER: + case LTC_ASN1_BIT_STRING: + case LTC_ASN1_OCTET_STRING: + case LTC_ASN1_NULL: + case LTC_ASN1_OBJECT_IDENTIFIER: + case LTC_ASN1_IA5_STRING: + case LTC_ASN1_PRINTABLE_STRING: + case LTC_ASN1_UTF8_STRING: + case LTC_ASN1_UTCTIME: + case LTC_ASN1_SEQUENCE: + case LTC_ASN1_SET: + case LTC_ASN1_SETOF: + case LTC_ASN1_RAW_BIT_STRING: + case LTC_ASN1_GENERALIZEDTIME: + ++x; + break; + + case LTC_ASN1_CHOICE: + case LTC_ASN1_CONSTRUCTED: + case LTC_ASN1_CONTEXT_SPECIFIC: + case LTC_ASN1_EOL: + case LTC_ASN1_TELETEX_STRING: + va_end(args); + return CRYPT_INVALID_ARG; + } + } + va_end(args); + + /* allocate structure for x elements */ + if (x == 0) { + return CRYPT_NOP; + } + + list = XCALLOC(sizeof(*list), x); + if (list == NULL) { + return CRYPT_MEM; + } + + /* fill in the structure */ + va_start(args, outlen); + x = 0; + for (;;) { + type = (ltc_asn1_type)va_arg(args, int); + size = va_arg(args, unsigned long); + data = va_arg(args, void*); + + if (type == LTC_ASN1_EOL) { + break; + } + + switch (type) { + case LTC_ASN1_BOOLEAN: + case LTC_ASN1_INTEGER: + case LTC_ASN1_SHORT_INTEGER: + case LTC_ASN1_BIT_STRING: + case LTC_ASN1_OCTET_STRING: + case LTC_ASN1_NULL: + case LTC_ASN1_OBJECT_IDENTIFIER: + case LTC_ASN1_IA5_STRING: + case LTC_ASN1_PRINTABLE_STRING: + case LTC_ASN1_UTF8_STRING: + case LTC_ASN1_UTCTIME: + case LTC_ASN1_SEQUENCE: + case LTC_ASN1_SET: + case LTC_ASN1_SETOF: + case LTC_ASN1_RAW_BIT_STRING: + case LTC_ASN1_GENERALIZEDTIME: + LTC_SET_ASN1(list, x++, type, data, size); + break; + + case LTC_ASN1_CHOICE: + case LTC_ASN1_CONSTRUCTED: + case LTC_ASN1_CONTEXT_SPECIFIC: + case LTC_ASN1_EOL: + case LTC_ASN1_TELETEX_STRING: + va_end(args); + err = CRYPT_INVALID_ARG; + goto LBL_ERR; + } + } + va_end(args); + + err = der_encode_sequence(list, x, out, outlen); +LBL_ERR: + XFREE(list); + return err; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_encode_subject_public_key_info.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_encode_subject_public_key_info.c new file mode 100644 index 000000000..dcb869a9e --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_encode_subject_public_key_info.c @@ -0,0 +1,71 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_encode_subject_public_key_info.c + ASN.1 DER, encode a Subject Public Key structure --nmav +*/ + +#ifdef LTC_DER + +/* AlgorithmIdentifier := SEQUENCE { + * algorithm OBJECT IDENTIFIER, + * parameters ANY DEFINED BY algorithm + * } + * + * SubjectPublicKeyInfo := SEQUENCE { + * algorithm AlgorithmIdentifier, + * subjectPublicKey BIT STRING + * } + */ +/** + Encode a subject public key info + @param out The output buffer + @param outlen [in/out] Length of buffer and resulting length of output + @param algorithm One out of the enum #public_key_algorithms + @param public_key The buffer for the public key + @param public_key_len The length of the public key buffer + @param parameters_type The parameters' type out of the enum ltc_asn1_type + @param parameters The parameters to include + @param parameters_len The number of parameters to include + @return CRYPT_OK on success +*/ +int der_encode_subject_public_key_info(unsigned char *out, unsigned long *outlen, + unsigned int algorithm, void* public_key, unsigned long public_key_len, + unsigned long parameters_type, void* parameters, unsigned long parameters_len) +{ + int err; + ltc_asn1_list alg_id[2]; + oid_st oid; + + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + err = pk_get_oid(algorithm, &oid); + if (err != CRYPT_OK) { + return err; + } + + LTC_SET_ASN1(alg_id, 0, LTC_ASN1_OBJECT_IDENTIFIER, oid.OID, oid.OIDlen); + LTC_SET_ASN1(alg_id, 1, (ltc_asn1_type)parameters_type, parameters, parameters_len); + + return der_encode_sequence_multi(out, outlen, + LTC_ASN1_SEQUENCE, (unsigned long)sizeof(alg_id)/sizeof(alg_id[0]), alg_id, + LTC_ASN1_RAW_BIT_STRING, public_key_len*8U, public_key, + LTC_ASN1_EOL, 0UL, NULL); + +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_length_sequence.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_length_sequence.c new file mode 100644 index 000000000..aed7cc2a3 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_length_sequence.c @@ -0,0 +1,193 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_length_sequence.c + ASN.1 DER, length a SEQUENCE, Tom St Denis +*/ + +#ifdef LTC_DER + +/** + Get the length of a DER sequence + @param list The sequences of items in the SEQUENCE + @param inlen The number of items + @param outlen [out] The length required in octets to store it + @return CRYPT_OK on success +*/ +int der_length_sequence(ltc_asn1_list *list, unsigned long inlen, + unsigned long *outlen) +{ + return der_length_sequence_ex(list, inlen, outlen, NULL); +} + +int der_length_sequence_ex(ltc_asn1_list *list, unsigned long inlen, + unsigned long *outlen, unsigned long *payloadlen) +{ + int err; + ltc_asn1_type type; + unsigned long size, x, y, i, z; + void *data; + + LTC_ARGCHK(list != NULL); + LTC_ARGCHK(outlen != NULL); + + /* get size of output that will be required */ + y = 0; + for (i = 0; i < inlen; i++) { + type = list[i].type; + size = list[i].size; + data = list[i].data; + + if (type == LTC_ASN1_EOL) { + break; + } + + switch (type) { + case LTC_ASN1_BOOLEAN: + if ((err = der_length_boolean(&x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_INTEGER: + if ((err = der_length_integer(data, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_SHORT_INTEGER: + if ((err = der_length_short_integer(*((unsigned long *)data), &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_BIT_STRING: + case LTC_ASN1_RAW_BIT_STRING: + if ((err = der_length_bit_string(size, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_OCTET_STRING: + if ((err = der_length_octet_string(size, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_NULL: + y += 2; + break; + + case LTC_ASN1_OBJECT_IDENTIFIER: + if ((err = der_length_object_identifier(data, size, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_IA5_STRING: + if ((err = der_length_ia5_string(data, size, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_TELETEX_STRING: + if ((err = der_length_teletex_string(data, size, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_PRINTABLE_STRING: + if ((err = der_length_printable_string(data, size, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_UTCTIME: + if ((err = der_length_utctime(data, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_GENERALIZEDTIME: + if ((err = der_length_generalizedtime(data, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_UTF8_STRING: + if ((err = der_length_utf8_string(data, size, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + case LTC_ASN1_SET: + case LTC_ASN1_SETOF: + case LTC_ASN1_SEQUENCE: + if ((err = der_length_sequence(data, size, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + y += x; + break; + + + case LTC_ASN1_CHOICE: + case LTC_ASN1_CONSTRUCTED: + case LTC_ASN1_CONTEXT_SPECIFIC: + case LTC_ASN1_EOL: + err = CRYPT_INVALID_ARG; + goto LBL_ERR; + } + } + + /* calc header size */ + z = y; + if (y < 128) { + y += 2; + } else if (y < 256) { + /* 0x30 0x81 LL */ + y += 3; + } else if (y < 65536UL) { + /* 0x30 0x82 LL LL */ + y += 4; + } else if (y < 16777216UL) { + /* 0x30 0x83 LL LL LL */ + y += 5; + } else { + err = CRYPT_INVALID_ARG; + goto LBL_ERR; + } + + /* store size */ + if (payloadlen) *payloadlen = z; + *outlen = y; + err = CRYPT_OK; + +LBL_ERR: + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_sequence_free.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_sequence_free.c new file mode 100644 index 000000000..3c2a66383 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_sequence_free.c @@ -0,0 +1,63 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_sequence_free.c + ASN.1 DER, free's a structure allocated by der_decode_sequence_flexi(), Tom St Denis +*/ + +#ifdef LTC_DER + +/** + Free memory allocated by der_decode_sequence_flexi() + @param in The list to free +*/ +void der_sequence_free(ltc_asn1_list *in) +{ + ltc_asn1_list *l; + + if (!in) return; + + /* walk to the start of the chain */ + while (in->prev != NULL || in->parent != NULL) { + if (in->parent != NULL) { + in = in->parent; + } else { + in = in->prev; + } + } + + /* now walk the list and free stuff */ + while (in != NULL) { + /* is there a child? */ + if (in->child) { + /* disconnect */ + in->child->parent = NULL; + der_sequence_free(in->child); + } + + switch (in->type) { + case LTC_ASN1_SETOF: break; + case LTC_ASN1_INTEGER : if (in->data != NULL) { mp_clear(in->data); } break; + default : if (in->data != NULL) { XFREE(in->data); } + } + + /* move to next and free current */ + l = in->next; + XFREE(in); + in = l; + } +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_sequence_shrink.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_sequence_shrink.c new file mode 100644 index 000000000..9b9e036aa --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/sequence/der_sequence_shrink.c @@ -0,0 +1,50 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_sequence_shrink.c + Free memory allocated for CONSTRUCTED, SET or SEQUENCE elements by der_decode_sequence_flexi(), Steffen Jaeckel +*/ + +#ifdef LTC_DER + +/** + Free memory allocated for CONSTRUCTED, + SET or SEQUENCE elements by der_decode_sequence_flexi() + @param in The list to shrink +*/ +void der_sequence_shrink(ltc_asn1_list *in) +{ + if (!in) return; + + /* now walk the list and free stuff */ + while (in != NULL) { + /* is there a child? */ + if (in->child) { + der_sequence_shrink(in->child); + } + + switch (in->type) { + case LTC_ASN1_CONSTRUCTED: + case LTC_ASN1_SET: + case LTC_ASN1_SEQUENCE : if (in->data != NULL) { XFREE(in->data); in->data = NULL; } break; + default: break; + } + + /* move to next and free current */ + in = in->next; + } +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/set/der_encode_set.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/set/der_encode_set.c new file mode 100644 index 000000000..fef3092b7 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/set/der_encode_set.c @@ -0,0 +1,108 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_encode_set.c + ASN.1 DER, Encode a SET, Tom St Denis +*/ + +#ifdef LTC_DER + +/* LTC define to ASN.1 TAG */ +static int _ltc_to_asn1(ltc_asn1_type v) +{ + switch (v) { + case LTC_ASN1_BOOLEAN: return 0x01; + case LTC_ASN1_INTEGER: + case LTC_ASN1_SHORT_INTEGER: return 0x02; + case LTC_ASN1_RAW_BIT_STRING: + case LTC_ASN1_BIT_STRING: return 0x03; + case LTC_ASN1_OCTET_STRING: return 0x04; + case LTC_ASN1_NULL: return 0x05; + case LTC_ASN1_OBJECT_IDENTIFIER: return 0x06; + case LTC_ASN1_UTF8_STRING: return 0x0C; + case LTC_ASN1_PRINTABLE_STRING: return 0x13; + case LTC_ASN1_TELETEX_STRING: return 0x14; + case LTC_ASN1_IA5_STRING: return 0x16; + case LTC_ASN1_UTCTIME: return 0x17; + case LTC_ASN1_GENERALIZEDTIME: return 0x18; + case LTC_ASN1_SEQUENCE: return 0x30; + case LTC_ASN1_SET: + case LTC_ASN1_SETOF: return 0x31; + case LTC_ASN1_CHOICE: + case LTC_ASN1_CONSTRUCTED: + case LTC_ASN1_CONTEXT_SPECIFIC: + case LTC_ASN1_EOL: return -1; + } + return -1; +} + + +static int _qsort_helper(const void *a, const void *b) +{ + ltc_asn1_list *A = (ltc_asn1_list *)a, *B = (ltc_asn1_list *)b; + int r; + + r = _ltc_to_asn1(A->type) - _ltc_to_asn1(B->type); + + /* for QSORT the order is UNDEFINED if they are "equal" which means it is NOT DETERMINISTIC. So we force it to be :-) */ + if (r == 0) { + /* their order in the original list now determines the position */ + return A->used - B->used; + } else { + return r; + } +} + +/* + Encode a SET type + @param list The list of items to encode + @param inlen The number of items in the list + @param out [out] The destination + @param outlen [in/out] The size of the output + @return CRYPT_OK on success +*/ +int der_encode_set(ltc_asn1_list *list, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + ltc_asn1_list *copy; + unsigned long x; + int err; + + /* make copy of list */ + copy = XCALLOC(inlen, sizeof(*copy)); + if (copy == NULL) { + return CRYPT_MEM; + } + + /* fill in used member with index so we can fully sort it */ + for (x = 0; x < inlen; x++) { + copy[x] = list[x]; + copy[x].used = x; + } + + /* sort it by the "type" field */ + XQSORT(copy, inlen, sizeof(*copy), &_qsort_helper); + + /* call der_encode_sequence_ex() */ + err = der_encode_sequence_ex(copy, inlen, out, outlen, LTC_ASN1_SET); + + /* free list */ + XFREE(copy); + + return err; +} + + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/set/der_encode_setof.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/set/der_encode_setof.c new file mode 100644 index 000000000..b837cdda4 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/set/der_encode_setof.c @@ -0,0 +1,161 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_encode_setof.c + ASN.1 DER, Encode SET OF, Tom St Denis +*/ + +#ifdef LTC_DER + +struct edge { + unsigned char *start; + unsigned long size; +}; + +static int _qsort_helper(const void *a, const void *b) +{ + struct edge *A = (struct edge *)a, *B = (struct edge *)b; + int r; + unsigned long x; + + /* compare min length */ + r = XMEMCMP(A->start, B->start, MIN(A->size, B->size)); + + if (r == 0 && A->size != B->size) { + if (A->size > B->size) { + for (x = B->size; x < A->size; x++) { + if (A->start[x]) { + return 1; + } + } + } else { + for (x = A->size; x < B->size; x++) { + if (B->start[x]) { + return -1; + } + } + } + } + + return r; +} + +/** + Encode a SETOF stucture + @param list The list of items to encode + @param inlen The number of items in the list + @param out [out] The destination + @param outlen [in/out] The size of the output + @return CRYPT_OK on success +*/ +int der_encode_setof(ltc_asn1_list *list, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + unsigned long x, y, z; + ptrdiff_t hdrlen; + int err; + struct edge *edges; + unsigned char *ptr, *buf; + + /* check that they're all the same type */ + for (x = 1; x < inlen; x++) { + if (list[x].type != list[x-1].type) { + return CRYPT_INVALID_ARG; + } + } + + /* alloc buffer to store copy of output */ + buf = XCALLOC(1, *outlen); + if (buf == NULL) { + return CRYPT_MEM; + } + + /* encode list */ + if ((err = der_encode_sequence_ex(list, inlen, buf, outlen, LTC_ASN1_SETOF)) != CRYPT_OK) { + XFREE(buf); + return err; + } + + /* allocate edges */ + edges = XCALLOC(inlen, sizeof(*edges)); + if (edges == NULL) { + XFREE(buf); + return CRYPT_MEM; + } + + /* skip header */ + ptr = buf + 1; + + /* now skip length data */ + x = *ptr++; + if (x >= 0x80) { + ptr += (x & 0x7F); + } + + /* get the size of the static header */ + hdrlen = ptr - buf; + + + /* scan for edges */ + x = 0; + while (ptr < (buf + *outlen)) { + /* store start */ + edges[x].start = ptr; + + /* skip type */ + z = 1; + + /* parse length */ + y = ptr[z++]; + if (y < 128) { + edges[x].size = y; + } else { + y &= 0x7F; + edges[x].size = 0; + while (y--) { + edges[x].size = (edges[x].size << 8) | ((unsigned long)ptr[z++]); + } + } + + /* skip content */ + edges[x].size += z; + ptr += edges[x].size; + ++x; + } + + /* sort based on contents (using edges) */ + XQSORT(edges, inlen, sizeof(*edges), &_qsort_helper); + + /* copy static header */ + XMEMCPY(out, buf, hdrlen); + + /* copy+sort using edges+indecies to output from buffer */ + for (y = (unsigned long)hdrlen, x = 0; x < inlen; x++) { + XMEMCPY(out+y, edges[x].start, edges[x].size); + y += edges[x].size; + } + +#ifdef LTC_CLEAN_STACK + zeromem(buf, *outlen); +#endif + + /* free buffers */ + XFREE(edges); + XFREE(buf); + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/short_integer/der_decode_short_integer.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/short_integer/der_decode_short_integer.c new file mode 100644 index 000000000..71debf310 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/short_integer/der_decode_short_integer.c @@ -0,0 +1,66 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_decode_short_integer.c + ASN.1 DER, decode an integer, Tom St Denis +*/ + + +#ifdef LTC_DER + +/** + Read a short integer + @param in The DER encoded data + @param inlen Size of data + @param num [out] The integer to decode + @return CRYPT_OK if successful +*/ +int der_decode_short_integer(const unsigned char *in, unsigned long inlen, unsigned long *num) +{ + unsigned long len, x, y; + + LTC_ARGCHK(num != NULL); + LTC_ARGCHK(in != NULL); + + /* check length */ + if (inlen < 2) { + return CRYPT_INVALID_PACKET; + } + + /* check header */ + x = 0; + if ((in[x++] & 0x1F) != 0x02) { + return CRYPT_INVALID_PACKET; + } + + /* get the packet len */ + len = in[x++]; + + if (x + len > inlen) { + return CRYPT_INVALID_PACKET; + } + + /* read number */ + y = 0; + while (len--) { + y = (y<<8) | (unsigned long)in[x++]; + } + *num = y; + + return CRYPT_OK; + +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/short_integer/der_encode_short_integer.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/short_integer/der_encode_short_integer.c new file mode 100644 index 000000000..ea413ebc4 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/short_integer/der_encode_short_integer.c @@ -0,0 +1,95 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_encode_short_integer.c + ASN.1 DER, encode an integer, Tom St Denis +*/ + + +#ifdef LTC_DER + +/** + Store a short integer in the range (0,2^32-1) + @param num The integer to encode + @param out [out] The destination for the DER encoded integers + @param outlen [in/out] The max size and resulting size of the DER encoded integers + @return CRYPT_OK if successful +*/ +int der_encode_short_integer(unsigned long num, unsigned char *out, unsigned long *outlen) +{ + unsigned long len, x, y, z; + int err; + + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* force to 32 bits */ + num &= 0xFFFFFFFFUL; + + /* find out how big this will be */ + if ((err = der_length_short_integer(num, &len)) != CRYPT_OK) { + return err; + } + + if (*outlen < len) { + *outlen = len; + return CRYPT_BUFFER_OVERFLOW; + } + + /* get len of output */ + z = 0; + y = num; + while (y) { + ++z; + y >>= 8; + } + + /* handle zero */ + if (z == 0) { + z = 1; + } + + /* see if msb is set */ + z += (num&(1UL<<((z<<3) - 1))) ? 1 : 0; + + /* adjust the number so the msB is non-zero */ + for (x = 0; (z <= 4) && (x < (4 - z)); x++) { + num <<= 8; + } + + /* store header */ + x = 0; + out[x++] = 0x02; + out[x++] = (unsigned char)z; + + /* if 31st bit is set output a leading zero and decrement count */ + if (z == 5) { + out[x++] = 0; + --z; + } + + /* store values */ + for (y = 0; y < z; y++) { + out[x++] = (unsigned char)((num >> 24) & 0xFF); + num <<= 8; + } + + /* we good */ + *outlen = x; + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/short_integer/der_length_short_integer.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/short_integer/der_length_short_integer.c new file mode 100644 index 000000000..52d0e1aef --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/short_integer/der_length_short_integer.c @@ -0,0 +1,68 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_length_short_integer.c + ASN.1 DER, get length of encoding, Tom St Denis +*/ + + +#ifdef LTC_DER +/** + Gets length of DER encoding of num + @param num The integer to get the size of + @param outlen [out] The length of the DER encoding for the given integer + @return CRYPT_OK if successful +*/ +int der_length_short_integer(unsigned long num, unsigned long *outlen) +{ + unsigned long z, y, len; + + LTC_ARGCHK(outlen != NULL); + + /* force to 32 bits */ + num &= 0xFFFFFFFFUL; + + /* get the number of bytes */ + z = 0; + y = num; + while (y) { + ++z; + y >>= 8; + } + + /* handle zero */ + if (z == 0) { + z = 1; + } + + /* we need a 0x02 to indicate it's INTEGER */ + len = 1; + + /* length byte */ + ++len; + + /* bytes in value */ + len += z; + + /* see if msb is set */ + len += (num&(1UL<<((z<<3) - 1))) ? 1 : 0; + + /* return length */ + *outlen = len; + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/teletex_string/der_decode_teletex_string.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/teletex_string/der_decode_teletex_string.c new file mode 100644 index 000000000..0c7c3c8f2 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/teletex_string/der_decode_teletex_string.c @@ -0,0 +1,93 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_decode_teletex_string.c + ASN.1 DER, encode a teletex STRING +*/ + +#ifdef LTC_DER + +/** + Store a teletex STRING + @param in The DER encoded teletex STRING + @param inlen The size of the DER teletex STRING + @param out [out] The array of octets stored (one per char) + @param outlen [in/out] The number of octets stored + @return CRYPT_OK if successful +*/ +int der_decode_teletex_string(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + unsigned long x, y, len; + int t; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* must have header at least */ + if (inlen < 2) { + return CRYPT_INVALID_PACKET; + } + + /* check for 0x14 */ + if ((in[0] & 0x1F) != 0x14) { + return CRYPT_INVALID_PACKET; + } + x = 1; + + /* decode the length */ + if (in[x] & 0x80) { + /* valid # of bytes in length are 1,2,3 */ + y = in[x] & 0x7F; + if ((y == 0) || (y > 3) || ((x + y) > inlen)) { + return CRYPT_INVALID_PACKET; + } + + /* read the length in */ + len = 0; + ++x; + while (y--) { + len = (len << 8) | in[x++]; + } + } else { + len = in[x++] & 0x7F; + } + + /* is it too long? */ + if (len > *outlen) { + *outlen = len; + return CRYPT_BUFFER_OVERFLOW; + } + + if (len + x > inlen) { + return CRYPT_INVALID_PACKET; + } + + /* read the data */ + for (y = 0; y < len; y++) { + t = der_teletex_value_decode(in[x++]); + if (t == -1) { + return CRYPT_INVALID_ARG; + } + out[y] = t; + } + + *outlen = y; + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/teletex_string/der_length_teletex_string.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/teletex_string/der_length_teletex_string.c new file mode 100644 index 000000000..29fe5b0b8 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/teletex_string/der_length_teletex_string.c @@ -0,0 +1,208 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_length_teletex_string.c + ASN.1 DER, get length of teletex STRING +*/ + +#ifdef LTC_DER + +static const struct { + int code, value; +} teletex_table[] = { +{ '\0', 0 }, +{ '\a', 7 }, +{ '\b', 8 }, +{ '\t', 9 }, +{ '\n', 10 }, +{ '\v', 11 }, +{ '\f', 12 }, +{ '\r', 13 }, +{ ' ', 32 }, +{ '!', 33 }, +{ '"', 34 }, +{ '%', 37 }, +{ '&', 38 }, +{ '\'', 39 }, +{ '(', 40 }, +{ ')', 41 }, +{ '+', 43 }, +{ ',', 44 }, +{ '-', 45 }, +{ '.', 46 }, +{ '/', 47 }, +{ '0', 48 }, +{ '1', 49 }, +{ '2', 50 }, +{ '3', 51 }, +{ '4', 52 }, +{ '5', 53 }, +{ '6', 54 }, +{ '7', 55 }, +{ '8', 56 }, +{ '9', 57 }, +{ ':', 58 }, +{ ';', 59 }, +{ '<', 60 }, +{ '=', 61 }, +{ '>', 62 }, +{ '?', 63 }, +{ '@', 64 }, +{ 'A', 65 }, +{ 'B', 66 }, +{ 'C', 67 }, +{ 'D', 68 }, +{ 'E', 69 }, +{ 'F', 70 }, +{ 'G', 71 }, +{ 'H', 72 }, +{ 'I', 73 }, +{ 'J', 74 }, +{ 'K', 75 }, +{ 'L', 76 }, +{ 'M', 77 }, +{ 'N', 78 }, +{ 'O', 79 }, +{ 'P', 80 }, +{ 'Q', 81 }, +{ 'R', 82 }, +{ 'S', 83 }, +{ 'T', 84 }, +{ 'U', 85 }, +{ 'V', 86 }, +{ 'W', 87 }, +{ 'X', 88 }, +{ 'Y', 89 }, +{ 'Z', 90 }, +{ '[', 91 }, +{ ']', 93 }, +{ '_', 95 }, +{ 'a', 97 }, +{ 'b', 98 }, +{ 'c', 99 }, +{ 'd', 100 }, +{ 'e', 101 }, +{ 'f', 102 }, +{ 'g', 103 }, +{ 'h', 104 }, +{ 'i', 105 }, +{ 'j', 106 }, +{ 'k', 107 }, +{ 'l', 108 }, +{ 'm', 109 }, +{ 'n', 110 }, +{ 'o', 111 }, +{ 'p', 112 }, +{ 'q', 113 }, +{ 'r', 114 }, +{ 's', 115 }, +{ 't', 116 }, +{ 'u', 117 }, +{ 'v', 118 }, +{ 'w', 119 }, +{ 'x', 120 }, +{ 'y', 121 }, +{ 'z', 122 }, +{ '|', 124 }, +{ ' ', 160 }, +{ 0xa1, 161 }, +{ 0xa2, 162 }, +{ 0xa3, 163 }, +{ '$', 164 }, +{ 0xa5, 165 }, +{ '#', 166 }, +{ 0xa7, 167 }, +{ 0xa4, 168 }, +{ 0xab, 171 }, +{ 0xb0, 176 }, +{ 0xb1, 177 }, +{ 0xb2, 178 }, +{ 0xb3, 179 }, +{ 0xd7, 180 }, +{ 0xb5, 181 }, +{ 0xb6, 182 }, +{ 0xb7, 183 }, +{ 0xf7, 184 }, +{ 0xbb, 187 }, +{ 0xbc, 188 }, +{ 0xbd, 189 }, +{ 0xbe, 190 }, +{ 0xbf, 191 }, +}; + +int der_teletex_char_encode(int c) +{ + int x; + for (x = 0; x < (int)(sizeof(teletex_table)/sizeof(teletex_table[0])); x++) { + if (teletex_table[x].code == c) { + return teletex_table[x].value; + } + } + return -1; +} + +int der_teletex_value_decode(int v) +{ + int x; + for (x = 0; x < (int)(sizeof(teletex_table)/sizeof(teletex_table[0])); x++) { + if (teletex_table[x].value == v) { + return teletex_table[x].code; + } + } + return -1; +} + +/** + Gets length of DER encoding of teletex STRING + @param octets The values you want to encode + @param noctets The number of octets in the string to encode + @param outlen [out] The length of the DER encoding for the given string + @return CRYPT_OK if successful +*/ +int der_length_teletex_string(const unsigned char *octets, unsigned long noctets, unsigned long *outlen) +{ + unsigned long x; + + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(octets != NULL); + + /* scan string for validity */ + for (x = 0; x < noctets; x++) { + if (der_teletex_char_encode(octets[x]) == -1) { + return CRYPT_INVALID_ARG; + } + } + + if (noctets < 128) { + /* 16 LL DD DD DD ... */ + *outlen = 2 + noctets; + } else if (noctets < 256) { + /* 16 81 LL DD DD DD ... */ + *outlen = 3 + noctets; + } else if (noctets < 65536UL) { + /* 16 82 LL LL DD DD DD ... */ + *outlen = 4 + noctets; + } else if (noctets < 16777216UL) { + /* 16 83 LL LL LL DD DD DD ... */ + *outlen = 5 + noctets; + } else { + return CRYPT_INVALID_ARG; + } + + return CRYPT_OK; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/utctime/der_decode_utctime.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/utctime/der_decode_utctime.c new file mode 100644 index 000000000..07fcb8070 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/utctime/der_decode_utctime.c @@ -0,0 +1,125 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_decode_utctime.c + ASN.1 DER, decode a UTCTIME, Tom St Denis +*/ + +#ifdef LTC_DER + +static int _char_to_int(unsigned char x) +{ + switch (x) { + case '0': return 0; + case '1': return 1; + case '2': return 2; + case '3': return 3; + case '4': return 4; + case '5': return 5; + case '6': return 6; + case '7': return 7; + case '8': return 8; + case '9': return 9; + default: return 100; + } +} + +#define DECODE_V(y, max) \ + y = _char_to_int(buf[x])*10 + _char_to_int(buf[x+1]); \ + if (y >= max) return CRYPT_INVALID_PACKET; \ + x += 2; + +/** + Decodes a UTC time structure in DER format (reads all 6 valid encoding formats) + @param in Input buffer + @param inlen Length of input buffer in octets + @param out [out] Destination of UTC time structure + @return CRYPT_OK if successful +*/ +int der_decode_utctime(const unsigned char *in, unsigned long *inlen, + ltc_utctime *out) +{ + unsigned char buf[32] = { 0 }; /* initialize as all zeroes */ + unsigned long x; + int y; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(inlen != NULL); + LTC_ARGCHK(out != NULL); + + /* check header */ + if (*inlen < 2UL || (in[1] >= sizeof(buf)) || ((in[1] + 2UL) > *inlen)) { + return CRYPT_INVALID_PACKET; + } + + /* decode the string */ + for (x = 0; x < in[1]; x++) { + y = der_ia5_value_decode(in[x+2]); + if (y == -1) { + return CRYPT_INVALID_PACKET; + } + buf[x] = y; + } + *inlen = 2 + x; + + + /* possible encodings are +YYMMDDhhmmZ +YYMMDDhhmm+hh'mm' +YYMMDDhhmm-hh'mm' +YYMMDDhhmmssZ +YYMMDDhhmmss+hh'mm' +YYMMDDhhmmss-hh'mm' + + So let's do a trivial decode upto [including] mm + */ + + x = 0; + DECODE_V(out->YY, 100); + DECODE_V(out->MM, 13); + DECODE_V(out->DD, 32); + DECODE_V(out->hh, 24); + DECODE_V(out->mm, 60); + + /* clear timezone and seconds info */ + out->off_dir = out->off_hh = out->off_mm = out->ss = 0; + + /* now is it Z, +, - or 0-9 */ + if (buf[x] == 'Z') { + return CRYPT_OK; + } else if (buf[x] == '+' || buf[x] == '-') { + out->off_dir = (buf[x++] == '+') ? 0 : 1; + DECODE_V(out->off_hh, 24); + DECODE_V(out->off_mm, 60); + return CRYPT_OK; + } + + /* decode seconds */ + DECODE_V(out->ss, 60); + + /* now is it Z, +, - */ + if (buf[x] == 'Z') { + return CRYPT_OK; + } else if (buf[x] == '+' || buf[x] == '-') { + out->off_dir = (buf[x++] == '+') ? 0 : 1; + DECODE_V(out->off_hh, 24); + DECODE_V(out->off_mm, 60); + return CRYPT_OK; + } else { + return CRYPT_INVALID_PACKET; + } +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/utctime/der_encode_utctime.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/utctime/der_encode_utctime.c new file mode 100644 index 000000000..c6c8464cf --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/utctime/der_encode_utctime.c @@ -0,0 +1,81 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_encode_utctime.c + ASN.1 DER, encode a UTCTIME, Tom St Denis +*/ + +#ifdef LTC_DER + +static const char * const baseten = "0123456789"; + +#define STORE_V(y) \ + out[x++] = der_ia5_char_encode(baseten[(y/10) % 10]); \ + out[x++] = der_ia5_char_encode(baseten[y % 10]); + +/** + Encodes a UTC time structure in DER format + @param utctime The UTC time structure to encode + @param out The destination of the DER encoding of the UTC time structure + @param outlen [in/out] The length of the DER encoding + @return CRYPT_OK if successful +*/ +int der_encode_utctime(ltc_utctime *utctime, + unsigned char *out, unsigned long *outlen) +{ + unsigned long x, tmplen; + int err; + + LTC_ARGCHK(utctime != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + if ((err = der_length_utctime(utctime, &tmplen)) != CRYPT_OK) { + return err; + } + if (tmplen > *outlen) { + *outlen = tmplen; + return CRYPT_BUFFER_OVERFLOW; + } + + /* store header */ + out[0] = 0x17; + + /* store values */ + x = 2; + STORE_V(utctime->YY); + STORE_V(utctime->MM); + STORE_V(utctime->DD); + STORE_V(utctime->hh); + STORE_V(utctime->mm); + STORE_V(utctime->ss); + + if (utctime->off_mm || utctime->off_hh) { + out[x++] = der_ia5_char_encode(utctime->off_dir ? '-' : '+'); + STORE_V(utctime->off_hh); + STORE_V(utctime->off_mm); + } else { + out[x++] = der_ia5_char_encode('Z'); + } + + /* store length */ + out[1] = (unsigned char)(x - 2); + + /* all good let's return */ + *outlen = x; + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/utctime/der_length_utctime.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/utctime/der_length_utctime.c new file mode 100644 index 000000000..420208324 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/utctime/der_length_utctime.c @@ -0,0 +1,44 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_length_utctime.c + ASN.1 DER, get length of UTCTIME, Tom St Denis +*/ + +#ifdef LTC_DER + +/** + Gets length of DER encoding of UTCTIME + @param utctime The UTC time structure to get the size of + @param outlen [out] The length of the DER encoding + @return CRYPT_OK if successful +*/ +int der_length_utctime(ltc_utctime *utctime, unsigned long *outlen) +{ + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(utctime != NULL); + + if (utctime->off_hh == 0 && utctime->off_mm == 0) { + /* we encode as YYMMDDhhmmssZ */ + *outlen = 2 + 13; + } else { + /* we encode as YYMMDDhhmmss{+|-}hh'mm' */ + *outlen = 2 + 17; + } + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/utf8/der_decode_utf8_string.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/utf8/der_decode_utf8_string.c new file mode 100644 index 000000000..195a3f50a --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/utf8/der_decode_utf8_string.c @@ -0,0 +1,114 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_decode_utf8_string.c + ASN.1 DER, encode a UTF8 STRING, Tom St Denis +*/ + + +#ifdef LTC_DER + +/** + Store a UTF8 STRING + @param in The DER encoded UTF8 STRING + @param inlen The size of the DER UTF8 STRING + @param out [out] The array of utf8s stored (one per char) + @param outlen [in/out] The number of utf8s stored + @return CRYPT_OK if successful +*/ +int der_decode_utf8_string(const unsigned char *in, unsigned long inlen, + wchar_t *out, unsigned long *outlen) +{ + wchar_t tmp; + unsigned long x, y, z, len; + int err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* must have header at least */ + if (inlen < 2) { + return CRYPT_INVALID_PACKET; + } + + /* check for 0x0C */ + if ((in[0] & 0x1F) != 0x0C) { + return CRYPT_INVALID_PACKET; + } + x = 1; + + /* decode the length */ + if (in[x] & 0x80) { + /* valid # of bytes in length are 1,2,3 */ + y = in[x] & 0x7F; + if ((y == 0) || (y > 3) || ((x + y) > inlen)) { + return CRYPT_INVALID_PACKET; + } + + /* read the length in */ + len = 0; + ++x; + while (y--) { + len = (len << 8) | in[x++]; + } + } else { + len = in[x++] & 0x7F; + } + + if (len + x > inlen) { + return CRYPT_INVALID_PACKET; + } + + /* proceed to decode */ + for (y = 0; x < inlen; ) { + /* get first byte */ + tmp = in[x++]; + + /* count number of bytes */ + for (z = 0; (tmp & 0x80) && (z <= 4); z++, tmp = (tmp << 1) & 0xFF); + + if (z > 4 || (x + (z - 1) > inlen)) { + return CRYPT_INVALID_PACKET; + } + + /* decode, grab upper bits */ + tmp >>= z; + + /* grab remaining bytes */ + if (z > 1) { --z; } + while (z-- != 0) { + if ((in[x] & 0xC0) != 0x80) { + return CRYPT_INVALID_PACKET; + } + tmp = (tmp << 6) | ((wchar_t)in[x++] & 0x3F); + } + + if (y < *outlen) { + out[y] = tmp; + } + y++; + } + if (y > *outlen) { + err = CRYPT_BUFFER_OVERFLOW; + } else { + err = CRYPT_OK; + } + *outlen = y; + + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/utf8/der_encode_utf8_string.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/utf8/der_encode_utf8_string.c new file mode 100644 index 000000000..4c2030ff4 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/utf8/der_encode_utf8_string.c @@ -0,0 +1,104 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_encode_utf8_string.c + ASN.1 DER, encode a UTF8 STRING, Tom St Denis +*/ + + +#ifdef LTC_DER + +/** + Store an UTF8 STRING + @param in The array of UTF8 to store (one per wchar_t) + @param inlen The number of UTF8 to store + @param out [out] The destination for the DER encoded UTF8 STRING + @param outlen [in/out] The max size and resulting size of the DER UTF8 STRING + @return CRYPT_OK if successful +*/ +int der_encode_utf8_string(const wchar_t *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen) +{ + unsigned long x, y, len; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* get the size */ + for (x = len = 0; x < inlen; x++) { + if (!der_utf8_valid_char(in[x])) return CRYPT_INVALID_ARG; + len += der_utf8_charsize(in[x]); + } + + if (len < 128) { + y = 2 + len; + } else if (len < 256) { + y = 3 + len; + } else if (len < 65536UL) { + y = 4 + len; + } else if (len < 16777216UL) { + y = 5 + len; + } else { + return CRYPT_INVALID_ARG; + } + + /* too big? */ + if (y > *outlen) { + *outlen = y; + return CRYPT_BUFFER_OVERFLOW; + } + + /* encode the header+len */ + x = 0; + out[x++] = 0x0C; + if (len < 128) { + out[x++] = (unsigned char)len; + } else if (len < 256) { + out[x++] = 0x81; + out[x++] = (unsigned char)len; + } else if (len < 65536UL) { + out[x++] = 0x82; + out[x++] = (unsigned char)((len>>8)&255); + out[x++] = (unsigned char)(len&255); + } else if (len < 16777216UL) { + out[x++] = 0x83; + out[x++] = (unsigned char)((len>>16)&255); + out[x++] = (unsigned char)((len>>8)&255); + out[x++] = (unsigned char)(len&255); + } else { + /* coverity[dead_error_line] */ + return CRYPT_INVALID_ARG; + } + + /* store UTF8 */ + for (y = 0; y < inlen; y++) { + switch (der_utf8_charsize(in[y])) { + case 1: out[x++] = (unsigned char)in[y]; break; + case 2: out[x++] = 0xC0 | ((in[y] >> 6) & 0x1F); out[x++] = 0x80 | (in[y] & 0x3F); break; + case 3: out[x++] = 0xE0 | ((in[y] >> 12) & 0x0F); out[x++] = 0x80 | ((in[y] >> 6) & 0x3F); out[x++] = 0x80 | (in[y] & 0x3F); break; +#if !defined(LTC_WCHAR_MAX) || LTC_WCHAR_MAX > 0xFFFF + case 4: out[x++] = 0xF0 | ((in[y] >> 18) & 0x07); out[x++] = 0x80 | ((in[y] >> 12) & 0x3F); out[x++] = 0x80 | ((in[y] >> 6) & 0x3F); out[x++] = 0x80 | (in[y] & 0x3F); break; +#endif + } + } + + /* retun length */ + *outlen = x; + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/asn1/der/utf8/der_length_utf8_string.c b/fsbl/lib/libtomcrypt/src/pk/asn1/der/utf8/der_length_utf8_string.c new file mode 100644 index 000000000..88f4355e3 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/asn1/der/utf8/der_length_utf8_string.c @@ -0,0 +1,102 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file der_length_utf8_string.c + ASN.1 DER, get length of UTF8 STRING, Tom St Denis +*/ + +#ifdef LTC_DER + +/** Return the size in bytes of a UTF-8 character + @param c The UTF-8 character to measure + @return The size in bytes +*/ +unsigned long der_utf8_charsize(const wchar_t c) +{ + if (c <= 0x7F) { + return 1; + } else if (c <= 0x7FF) { + return 2; +#if LTC_WCHAR_MAX == 0xFFFF + } else { + return 3; + } +#else + } else if (c <= 0xFFFF) { + return 3; + } else { + return 4; + } +#endif +} + +/** + Test whether the given code point is valid character + @param c The UTF-8 character to test + @return 1 - valid, 0 - invalid +*/ +int der_utf8_valid_char(const wchar_t c) +{ + LTC_UNUSED_PARAM(c); +#if !defined(LTC_WCHAR_MAX) || LTC_WCHAR_MAX > 0xFFFF + if (c > 0x10FFFF) return 0; +#endif +#if LTC_WCHAR_MAX != 0xFFFF && LTC_WCHAR_MAX != 0xFFFFFFFF + if (c < 0) return 0; +#endif + return 1; +} + +/** + Gets length of DER encoding of UTF8 STRING + @param in The characters to measure the length of + @param noctets The number of octets in the string to encode + @param outlen [out] The length of the DER encoding for the given string + @return CRYPT_OK if successful +*/ +int der_length_utf8_string(const wchar_t *in, unsigned long noctets, unsigned long *outlen) +{ + unsigned long x, len; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(outlen != NULL); + + len = 0; + for (x = 0; x < noctets; x++) { + if (!der_utf8_valid_char(in[x])) return CRYPT_INVALID_ARG; + len += der_utf8_charsize(in[x]); + } + + if (len < 128) { + /* 0C LL DD DD DD ... */ + *outlen = 2 + len; + } else if (len < 256) { + /* 0C 81 LL DD DD DD ... */ + *outlen = 3 + len; + } else if (len < 65536UL) { + /* 0C 82 LL LL DD DD DD ... */ + *outlen = 4 + len; + } else if (len < 16777216UL) { + /* 0C 83 LL LL LL DD DD DD ... */ + *outlen = 5 + len; + } else { + return CRYPT_INVALID_ARG; + } + + return CRYPT_OK; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/dh/dh.c b/fsbl/lib/libtomcrypt/src/pk/dh/dh.c new file mode 100644 index 000000000..763b00767 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/dh/dh.c @@ -0,0 +1,237 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_MDH + +/* This holds the key settings. ***MUST*** be organized by size from smallest to largest. */ +const ltc_dh_set_type ltc_dh_sets[] = { +#ifdef LTC_DH768 +{ /* 768-bit MODP Group 1 - https://tools.ietf.org/html/rfc7296#appendix-B.1 */ + 96, + "DH-768", + "2", + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" + "E485B576625E7EC6F44C42E9A63A3620FFFFFFFFFFFFFFFF" +}, +#endif +#ifdef LTC_DH1024 +{ /* 1024-bit MODP Group 2 - https://tools.ietf.org/html/rfc7296#appendix-B.2 */ + 128, + "DH-1024", + "2", + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381" + "FFFFFFFFFFFFFFFF" +}, +#endif +#ifdef LTC_DH1536 +{ /* 1536-bit MODP Group 5 - https://tools.ietf.org/html/rfc3526#section-2 */ + 192, + "DH-1536", + "2", + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" + "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" + "83655D23DCA3AD961C62F356208552BB9ED529077096966D" + "670C354E4ABC9804F1746C08CA237327FFFFFFFFFFFFFFFF" +}, +#endif +#ifdef LTC_DH2048 +{ /* 2048-bit MODP Group 14 - https://tools.ietf.org/html/rfc3526#section-3 */ + 256, + "DH-2048", + "2", + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" + "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" + "83655D23DCA3AD961C62F356208552BB9ED529077096966D" + "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" + "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" + "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" + "15728E5A8AACAA68FFFFFFFFFFFFFFFF" +}, +#endif +#ifdef LTC_DH3072 +{ /* 3072-bit MODP Group 15 - https://tools.ietf.org/html/rfc3526#section-4 */ + 384, + "DH-3072", + "2", + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" + "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" + "83655D23DCA3AD961C62F356208552BB9ED529077096966D" + "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" + "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" + "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" + "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64" + "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7" + "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B" + "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C" + "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31" + "43DB5BFCE0FD108E4B82D120A93AD2CAFFFFFFFFFFFFFFFF" +}, +#endif +#ifdef LTC_DH4096 +{ /* 4096-bit MODP Group 16 - https://tools.ietf.org/html/rfc3526#section-5 */ + 512, + "DH-4096", + "2", + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" + "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" + "83655D23DCA3AD961C62F356208552BB9ED529077096966D" + "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" + "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" + "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" + "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64" + "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7" + "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B" + "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C" + "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31" + "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7" + "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA" + "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6" + "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED" + "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9" + "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199" + "FFFFFFFFFFFFFFFF" +}, +#endif +#ifdef LTC_DH6144 +{ /* 6144-bit MODP Group 17 - https://tools.ietf.org/html/rfc3526#section-6 */ + 768, + "DH-6144", + "2", + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" + "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" + "83655D23DCA3AD961C62F356208552BB9ED529077096966D" + "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" + "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" + "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" + "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64" + "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7" + "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B" + "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C" + "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31" + "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7" + "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA" + "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6" + "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED" + "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9" + "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934028492" + "36C3FAB4D27C7026C1D4DCB2602646DEC9751E763DBA37BD" + "F8FF9406AD9E530EE5DB382F413001AEB06A53ED9027D831" + "179727B0865A8918DA3EDBEBCF9B14ED44CE6CBACED4BB1B" + "DB7F1447E6CC254B332051512BD7AF426FB8F401378CD2BF" + "5983CA01C64B92ECF032EA15D1721D03F482D7CE6E74FEF6" + "D55E702F46980C82B5A84031900B1C9E59E7C97FBEC7E8F3" + "23A97A7E36CC88BE0F1D45B7FF585AC54BD407B22B4154AA" + "CC8F6D7EBF48E1D814CC5ED20F8037E0A79715EEF29BE328" + "06A1D58BB7C5DA76F550AA3D8A1FBFF0EB19CCB1A313D55C" + "DA56C9EC2EF29632387FE8D76E3C0468043E8F663F4860EE" + "12BF2D5B0B7474D6E694F91E6DCC4024FFFFFFFFFFFFFFFF" +}, +#endif +#ifdef LTC_DH8192 +{ /* 8192-bit MODP Group 18 - https://tools.ietf.org/html/rfc3526#section-7 */ + 1024, + "DH-8192", + "2", + "FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD1" + "29024E088A67CC74020BBEA63B139B22514A08798E3404DD" + "EF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245" + "E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED" + "EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3D" + "C2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F" + "83655D23DCA3AD961C62F356208552BB9ED529077096966D" + "670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B" + "E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9" + "DE2BCBF6955817183995497CEA956AE515D2261898FA0510" + "15728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64" + "ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7" + "ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6B" + "F12FFA06D98A0864D87602733EC86A64521F2B18177B200C" + "BBE117577A615D6C770988C0BAD946E208E24FA074E5AB31" + "43DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D7" + "88719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA" + "2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6" + "287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED" + "1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA9" + "93B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934028492" + "36C3FAB4D27C7026C1D4DCB2602646DEC9751E763DBA37BD" + "F8FF9406AD9E530EE5DB382F413001AEB06A53ED9027D831" + "179727B0865A8918DA3EDBEBCF9B14ED44CE6CBACED4BB1B" + "DB7F1447E6CC254B332051512BD7AF426FB8F401378CD2BF" + "5983CA01C64B92ECF032EA15D1721D03F482D7CE6E74FEF6" + "D55E702F46980C82B5A84031900B1C9E59E7C97FBEC7E8F3" + "23A97A7E36CC88BE0F1D45B7FF585AC54BD407B22B4154AA" + "CC8F6D7EBF48E1D814CC5ED20F8037E0A79715EEF29BE328" + "06A1D58BB7C5DA76F550AA3D8A1FBFF0EB19CCB1A313D55C" + "DA56C9EC2EF29632387FE8D76E3C0468043E8F663F4860EE" + "12BF2D5B0B7474D6E694F91E6DBE115974A3926F12FEE5E4" + "38777CB6A932DF8CD8BEC4D073B931BA3BC832B68D9DD300" + "741FA7BF8AFC47ED2576F6936BA424663AAB639C5AE4F568" + "3423B4742BF1C978238F16CBE39D652DE3FDB8BEFC848AD9" + "22222E04A4037C0713EB57A81A23F0C73473FC646CEA306B" + "4BCBC8862F8385DDFA9D4B7FA2C087E879683303ED5BDD3A" + "062B3CF5B3A278A66D2A13F83F44F82DDF310EE074AB6A36" + "4597E899A0255DC164F31CC50846851DF9AB48195DED7EA1" + "B1D510BD7EE74D73FAF36BC31ECFA268359046F4EB879F92" + "4009438B481C6CD7889A002ED5EE382BC9190DA6FC026E47" + "9558E4475677E9AA9E3050E2765694DFC81F56E880B96E71" + "60C980DD98EDD3DFFFFFFFFFFFFFFFFF" +}, +#endif +{ + 0, + NULL, + NULL, + NULL +} +}; + +/** + Returns the DH group size (octets) for given key + @param key The DH key to get the size of + @return The group size in octets (0 on error) + */ +int dh_get_groupsize(dh_key *key) +{ + if (key == NULL) return 0; + return mp_unsigned_bin_size(key->prime); +} + +#endif /* LTC_MDH */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/dh/dh_check_pubkey.c b/fsbl/lib/libtomcrypt/src/pk/dh/dh_check_pubkey.c new file mode 100644 index 000000000..fb4f37bd2 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/dh/dh_check_pubkey.c @@ -0,0 +1,65 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_MDH + +/** + Check DH public key (INTERNAL ONLY, not part of public API) + @param key The key you wish to test + @return CRYPT_OK if successful +*/ +int dh_check_pubkey(dh_key *key) +{ + void *p_minus1; + ltc_mp_digit digit; + int i, digit_count, bits_set = 0, err; + + LTC_ARGCHK(key != NULL); + + if ((err = mp_init(&p_minus1)) != CRYPT_OK) { + return err; + } + + /* avoid: y <= 1 OR y >= p-1 */ + if ((err = mp_sub_d(key->prime, 1, p_minus1)) != CRYPT_OK) { + goto error; + } + if (mp_cmp(key->y, p_minus1) != LTC_MP_LT || mp_cmp_d(key->y, 1) != LTC_MP_GT) { + err = CRYPT_INVALID_ARG; + goto error; + } + + /* public key must have more than one bit set */ + digit_count = mp_get_digit_count(key->y); + for (i = 0; i < digit_count && bits_set < 2; i++) { + digit = mp_get_digit(key->y, i); + while (digit > 0) { + if (digit & 1) bits_set++; + digit >>= 1; + } + } + if (bits_set > 1) { + err = CRYPT_OK; + } + else { + err = CRYPT_INVALID_ARG; + } + +error: + mp_clear(p_minus1); + return err; +} + +#endif /* LTC_MDH */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/dh/dh_export.c b/fsbl/lib/libtomcrypt/src/pk/dh/dh_export.c new file mode 100644 index 000000000..6a02a890e --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/dh/dh_export.c @@ -0,0 +1,62 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_MDH + +/** + Export a DH key to a binary packet + @param out [out] The destination for the key + @param outlen [in/out] The max size and resulting size of the DH key + @param type Which type of key (PK_PRIVATE or PK_PUBLIC) + @param key The key you wish to export + @return CRYPT_OK if successful +*/ +int dh_export(unsigned char *out, unsigned long *outlen, int type, dh_key *key) +{ + unsigned char flags[1]; + int err; + unsigned long version = 0; + + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(key != NULL); + + if (type == PK_PRIVATE) { + /* export x - private key */ + flags[0] = 1; + err = der_encode_sequence_multi(out, outlen, + LTC_ASN1_SHORT_INTEGER, 1UL, &version, + LTC_ASN1_BIT_STRING, 1UL, flags, + LTC_ASN1_INTEGER, 1UL, key->prime, + LTC_ASN1_INTEGER, 1UL, key->base, + LTC_ASN1_INTEGER, 1UL, key->x, + LTC_ASN1_EOL, 0UL, NULL); + } + else { + /* export y - public key */ + flags[0] = 0; + err = der_encode_sequence_multi(out, outlen, + LTC_ASN1_SHORT_INTEGER, 1UL, &version, + LTC_ASN1_BIT_STRING, 1UL, flags, + LTC_ASN1_INTEGER, 1UL, key->prime, + LTC_ASN1_INTEGER, 1UL, key->base, + LTC_ASN1_INTEGER, 1UL, key->y, + LTC_ASN1_EOL, 0UL, NULL); + } + + return err; +} + +#endif /* LTC_MDH */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/dh/dh_export_key.c b/fsbl/lib/libtomcrypt/src/pk/dh/dh_export_key.c new file mode 100644 index 000000000..d48c011ad --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/dh/dh_export_key.c @@ -0,0 +1,47 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_MDH + +/** + Binary export a DH key to a buffer + @param out [out] The destination for the key + @param outlen [in/out] The max size and resulting size of the DH key + @param type Which type of key (PK_PRIVATE or PK_PUBLIC) + @param key The key you wish to export + @return CRYPT_OK if successful +*/ +int dh_export_key(void *out, unsigned long *outlen, int type, dh_key *key) +{ + unsigned long len; + void *k; + + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(key != NULL); + + k = (type == PK_PRIVATE) ? key->x : key->y; + len = mp_unsigned_bin_size(k); + + if (*outlen < len) { + *outlen = len; + return CRYPT_BUFFER_OVERFLOW; + } + *outlen = len; + + return mp_to_unsigned_bin(k, out); +} + +#endif /* LTC_MDH */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/dh/dh_free.c b/fsbl/lib/libtomcrypt/src/pk/dh/dh_free.c new file mode 100644 index 000000000..b4f58cacf --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/dh/dh_free.c @@ -0,0 +1,28 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_MDH + +/** + Free the allocated ram for a DH key + @param key The key which you wish to free +*/ +void dh_free(dh_key *key) +{ + LTC_ARGCHKVD(key != NULL); + mp_cleanup_multi(&key->prime, &key->base, &key->y, &key->x, NULL); +} + +#endif /* LTC_MDH */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/dh/dh_generate_key.c b/fsbl/lib/libtomcrypt/src/pk/dh/dh_generate_key.c new file mode 100644 index 000000000..69fb6f9d9 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/dh/dh_generate_key.c @@ -0,0 +1,102 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_MDH + +static int _dh_groupsize_to_keysize(int groupsize) +{ + /* The strength estimates from https://tools.ietf.org/html/rfc3526#section-8 + * We use "Estimate 2" to get an appropriate private key (exponent) size. + */ + if (groupsize <= 0) { + return 0; + } + else if (groupsize <= 192) { + return 30; /* 1536-bit => key size 240-bit */ + } + else if (groupsize <= 256) { + return 40; /* 2048-bit => key size 320-bit */ + } + else if (groupsize <= 384) { + return 52; /* 3072-bit => key size 416-bit */ + } + else if (groupsize <= 512) { + return 60; /* 4096-bit => key size 480-bit */ + } + else if (groupsize <= 768) { + return 67; /* 6144-bit => key size 536-bit */ + } + else if (groupsize <= 1024) { + return 77; /* 8192-bit => key size 616-bit */ + } + else { + return 0; + } +} + +int dh_generate_key(prng_state *prng, int wprng, dh_key *key) +{ + unsigned char *buf; + unsigned long keysize; + int err, max_iterations = LTC_PK_MAX_RETRIES; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(ltc_mp.name != NULL); + + /* good prng? */ + if ((err = prng_is_valid(wprng)) != CRYPT_OK) { + return err; + } + + keysize = _dh_groupsize_to_keysize(mp_unsigned_bin_size(key->prime)); + if (keysize == 0) { + err = CRYPT_INVALID_KEYSIZE; + goto freemp; + } + + /* allocate buffer */ + buf = XMALLOC(keysize); + if (buf == NULL) { + err = CRYPT_MEM; + goto freemp; + } + + key->type = PK_PRIVATE; + do { + /* make up random buf */ + if (prng_descriptor[wprng].read(buf, keysize, prng) != keysize) { + err = CRYPT_ERROR_READPRNG; + goto freebuf; + } + /* load the x value - private key */ + if ((err = mp_read_unsigned_bin(key->x, buf, keysize)) != CRYPT_OK) { + goto freebuf; + } + /* compute the y value - public key */ + if ((err = mp_exptmod(key->base, key->x, key->prime, key->y)) != CRYPT_OK) { + goto freebuf; + } + err = dh_check_pubkey(key); + } while (err != CRYPT_OK && max_iterations-- > 0); + +freebuf: + zeromem(buf, keysize); + XFREE(buf); +freemp: + if (err != CRYPT_OK) dh_free(key); + return err; +} + +#endif /* LTC_MDH */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/dh/dh_import.c b/fsbl/lib/libtomcrypt/src/pk/dh/dh_import.c new file mode 100644 index 000000000..601e5e747 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/dh/dh_import.c @@ -0,0 +1,99 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_MDH + +/** + Import a DH key from a binary packet + @param in The packet to read + @param inlen The length of the input packet + @param key [out] Where to import the key to + @return CRYPT_OK if successful, on error all allocated memory is freed automatically +*/ +int dh_import(const unsigned char *in, unsigned long inlen, dh_key *key) +{ + unsigned char flags[1]; + int err; + unsigned long version; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(key != NULL); + + /* init */ + if ((err = mp_init_multi(&key->x, &key->y, &key->base, &key->prime, NULL)) != CRYPT_OK) { + return err; + } + + /* find out what type of key it is */ + err = der_decode_sequence_multi(in, inlen, + LTC_ASN1_SHORT_INTEGER, 1UL, &version, + LTC_ASN1_BIT_STRING, 1UL, &flags, + LTC_ASN1_EOL, 0UL, NULL); + if (err != CRYPT_OK && err != CRYPT_INPUT_TOO_LONG) { + goto error; + } + + if (version == 0) { + if (flags[0] == 1) { + key->type = PK_PRIVATE; + if ((err = der_decode_sequence_multi(in, inlen, + LTC_ASN1_SHORT_INTEGER, 1UL, &version, + LTC_ASN1_BIT_STRING, 1UL, flags, + LTC_ASN1_INTEGER, 1UL, key->prime, + LTC_ASN1_INTEGER, 1UL, key->base, + LTC_ASN1_INTEGER, 1UL, key->x, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { + goto error; + } + /* compute public key: y = (base ^ x) mod prime */ + if ((err = mp_exptmod(key->base, key->x, key->prime, key->y)) != CRYPT_OK) { + goto error; + } + } + else if (flags[0] == 0) { + key->type = PK_PUBLIC; + if ((err = der_decode_sequence_multi(in, inlen, + LTC_ASN1_SHORT_INTEGER, 1UL, &version, + LTC_ASN1_BIT_STRING, 1UL, flags, + LTC_ASN1_INTEGER, 1UL, key->prime, + LTC_ASN1_INTEGER, 1UL, key->base, + LTC_ASN1_INTEGER, 1UL, key->y, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { + goto error; + } + } + else { + err = CRYPT_INVALID_PACKET; + goto error; + } + } + else { + err = CRYPT_INVALID_PACKET; + goto error; + } + + /* check public key */ + if ((err = dh_check_pubkey(key)) != CRYPT_OK) { + goto error; + } + + return CRYPT_OK; + +error: + dh_free(key); + return err; +} + +#endif /* LTC_MDH */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/dh/dh_set.c b/fsbl/lib/libtomcrypt/src/pk/dh/dh_set.c new file mode 100644 index 000000000..8d0af7d20 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/dh/dh_set.c @@ -0,0 +1,124 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_MDH + +/** + Import DH key parts p and g from raw numbers + + @param p DH's p (prime) + @param plen DH's p's length + @param g DH's g (group) + @param glen DH's g's length + @param key [out] the destination for the imported key + @return CRYPT_OK if successful +*/ +int dh_set_pg(const unsigned char *p, unsigned long plen, + const unsigned char *g, unsigned long glen, + dh_key *key) +{ + int err; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(p != NULL); + LTC_ARGCHK(g != NULL); + LTC_ARGCHK(ltc_mp.name != NULL); + + if ((err = mp_init_multi(&key->x, &key->y, &key->base, &key->prime, NULL)) != CRYPT_OK) { + return err; + } + + if ((err = mp_read_unsigned_bin(key->base, (unsigned char*)g, glen)) != CRYPT_OK) { goto LBL_ERR; } + if ((err = mp_read_unsigned_bin(key->prime, (unsigned char*)p, plen)) != CRYPT_OK) { goto LBL_ERR; } + + return CRYPT_OK; + +LBL_ERR: + dh_free(key); + return err; +} + +/** + Import DH key parts p and g from built-in DH groups + + @param groupsize The size of the DH group to use + @param key [out] Where the newly created DH key will be stored + @return CRYPT_OK if successful, note: on error all allocated memory will be freed automatically. +*/ +int dh_set_pg_groupsize(int groupsize, dh_key *key) +{ + int err, i; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(ltc_mp.name != NULL); + LTC_ARGCHK(groupsize > 0); + + for (i = 0; (groupsize > ltc_dh_sets[i].size) && (ltc_dh_sets[i].size != 0); i++); + if (ltc_dh_sets[i].size == 0) return CRYPT_INVALID_KEYSIZE; + + if ((err = mp_init_multi(&key->x, &key->y, &key->base, &key->prime, NULL)) != CRYPT_OK) { + return err; + } + if ((err = mp_read_radix(key->base, ltc_dh_sets[i].base, 16)) != CRYPT_OK) { goto LBL_ERR; } + if ((err = mp_read_radix(key->prime, ltc_dh_sets[i].prime, 16)) != CRYPT_OK) { goto LBL_ERR; } + + return CRYPT_OK; + +LBL_ERR: + dh_free(key); + return err; +} + +/** + Import DH public or private key part from raw numbers + + NB: The p & g parts must be set beforehand + + @param in The key-part to import, either public or private. + @param inlen The key-part's length + @param type Which type of key (PK_PRIVATE or PK_PUBLIC) + @param key [out] the destination for the imported key + @return CRYPT_OK if successful +*/ +int dh_set_key(const unsigned char *in, unsigned long inlen, int type, dh_key *key) +{ + int err; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(ltc_mp.name != NULL); + + if (type == PK_PRIVATE) { + key->type = PK_PRIVATE; + if ((err = mp_read_unsigned_bin(key->x, (unsigned char*)in, inlen)) != CRYPT_OK) { goto LBL_ERR; } + if ((err = mp_exptmod(key->base, key->x, key->prime, key->y)) != CRYPT_OK) { goto LBL_ERR; } + } + else { + key->type = PK_PUBLIC; + if ((err = mp_read_unsigned_bin(key->y, (unsigned char*)in, inlen)) != CRYPT_OK) { goto LBL_ERR; } + } + + /* check public key */ + if ((err = dh_check_pubkey(key)) != CRYPT_OK) { + goto LBL_ERR; + } + + return CRYPT_OK; + +LBL_ERR: + dh_free(key); + return err; +} + +#endif /* LTC_MDH */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/dh/dh_set_pg_dhparam.c b/fsbl/lib/libtomcrypt/src/pk/dh/dh_set_pg_dhparam.c new file mode 100644 index 000000000..7003011d1 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/dh/dh_set_pg_dhparam.c @@ -0,0 +1,54 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_MDH + +/** + Import DH key parts p and g from dhparam + + dhparam data: openssl dhparam -outform DER -out dhparam.der 2048 + + @param dhparam The DH param DER encoded data + @param dhparamlen The length of dhparam data + @param key [out] Where the newly created DH key will be stored + @return CRYPT_OK if successful, note: on error all allocated memory will be freed automatically. +*/ +int dh_set_pg_dhparam(const unsigned char *dhparam, unsigned long dhparamlen, dh_key *key) +{ + int err; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(ltc_mp.name != NULL); + LTC_ARGCHK(dhparam != NULL); + LTC_ARGCHK(dhparamlen > 0); + + if ((err = mp_init_multi(&key->x, &key->y, &key->base, &key->prime, NULL)) != CRYPT_OK) { + return err; + } + if ((err = der_decode_sequence_multi(dhparam, dhparamlen, + LTC_ASN1_INTEGER, 1UL, key->prime, + LTC_ASN1_INTEGER, 1UL, key->base, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { + goto LBL_ERR; + } + + return CRYPT_OK; + +LBL_ERR: + dh_free(key); + return err; +} + +#endif /* LTC_MDH */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/dh/dh_shared_secret.c b/fsbl/lib/libtomcrypt/src/pk/dh/dh_shared_secret.c new file mode 100644 index 000000000..1eb69fbfc --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/dh/dh_shared_secret.c @@ -0,0 +1,80 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_MDH + +/** + Create a DH shared secret. + @param private_key The private DH key in the pair + @param public_key The public DH key in the pair + @param out [out] The destination of the shared data + @param outlen [in/out] The max size and resulting size of the shared data. + @return CRYPT_OK if successful +*/ +int dh_shared_secret(dh_key *private_key, dh_key *public_key, + unsigned char *out, unsigned long *outlen) +{ + void *tmp; + unsigned long x; + int err; + + LTC_ARGCHK(private_key != NULL); + LTC_ARGCHK(public_key != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* types valid? */ + if (private_key->type != PK_PRIVATE) { + return CRYPT_PK_NOT_PRIVATE; + } + + /* same DH group? */ + if (mp_cmp(private_key->prime, public_key->prime) != LTC_MP_EQ) { return CRYPT_PK_TYPE_MISMATCH; } + if (mp_cmp(private_key->base, public_key->base) != LTC_MP_EQ) { return CRYPT_PK_TYPE_MISMATCH; } + + /* init big numbers */ + if ((err = mp_init(&tmp)) != CRYPT_OK) { + return err; + } + + /* check public key */ + if ((err = dh_check_pubkey(public_key)) != CRYPT_OK) { + goto error; + } + + /* compute tmp = y^x mod p */ + if ((err = mp_exptmod(public_key->y, private_key->x, private_key->prime, tmp)) != CRYPT_OK) { + goto error; + } + + /* enough space for output? */ + x = (unsigned long)mp_unsigned_bin_size(tmp); + if (*outlen < x) { + *outlen = x; + err = CRYPT_BUFFER_OVERFLOW; + goto error; + } + if ((err = mp_to_unsigned_bin(tmp, out)) != CRYPT_OK) { + goto error; + } + *outlen = x; + err = CRYPT_OK; + +error: + mp_clear(tmp); + return err; +} + +#endif /* LTC_MDH */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_decrypt_key.c b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_decrypt_key.c new file mode 100644 index 000000000..ef4e1dd17 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_decrypt_key.c @@ -0,0 +1,139 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file dsa_decrypt_key.c + DSA Crypto, Tom St Denis +*/ + +#ifdef LTC_MDSA + +/** + Decrypt an DSA encrypted key + @param in The ciphertext + @param inlen The length of the ciphertext (octets) + @param out [out] The plaintext + @param outlen [in/out] The max size and resulting size of the plaintext + @param key The corresponding private DSA key + @return CRYPT_OK if successful +*/ +int dsa_decrypt_key(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + dsa_key *key) +{ + unsigned char *skey, *expt; + void *g_pub; + unsigned long x, y; + unsigned long hashOID[32] = { 0 }; + int hash, err; + ltc_asn1_list decode[3]; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(key != NULL); + + /* right key type? */ + if (key->type != PK_PRIVATE) { + return CRYPT_PK_NOT_PRIVATE; + } + + /* decode to find out hash */ + LTC_SET_ASN1(decode, 0, LTC_ASN1_OBJECT_IDENTIFIER, hashOID, sizeof(hashOID)/sizeof(hashOID[0])); + err = der_decode_sequence(in, inlen, decode, 1); + if (err != CRYPT_OK && err != CRYPT_INPUT_TOO_LONG) { + return err; + } + + hash = find_hash_oid(hashOID, decode[0].size); + if (hash_is_valid(hash) != CRYPT_OK) { + return CRYPT_INVALID_PACKET; + } + + /* we now have the hash! */ + + if ((err = mp_init(&g_pub)) != CRYPT_OK) { + return err; + } + + /* allocate memory */ + expt = XMALLOC(mp_unsigned_bin_size(key->p) + 1); + skey = XMALLOC(MAXBLOCKSIZE); + if (expt == NULL || skey == NULL) { + if (expt != NULL) { + XFREE(expt); + } + if (skey != NULL) { + XFREE(skey); + } + mp_clear(g_pub); + return CRYPT_MEM; + } + + LTC_SET_ASN1(decode, 1, LTC_ASN1_INTEGER, g_pub, 1UL); + LTC_SET_ASN1(decode, 2, LTC_ASN1_OCTET_STRING, skey, MAXBLOCKSIZE); + + /* read the structure in now */ + if ((err = der_decode_sequence(in, inlen, decode, 3)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* make shared key */ + x = mp_unsigned_bin_size(key->p) + 1; + if ((err = dsa_shared_secret(key->x, g_pub, key, expt, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + + y = mp_unsigned_bin_size(key->p) + 1; + y = MIN(y, MAXBLOCKSIZE); + if ((err = hash_memory(hash, expt, x, expt, &y)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* ensure the hash of the shared secret is at least as big as the encrypt itself */ + if (decode[2].size > y) { + err = CRYPT_INVALID_PACKET; + goto LBL_ERR; + } + + /* avoid buffer overflow */ + if (*outlen < decode[2].size) { + *outlen = decode[2].size; + err = CRYPT_BUFFER_OVERFLOW; + goto LBL_ERR; + } + + /* Decrypt the key */ + for (x = 0; x < decode[2].size; x++) { + out[x] = expt[x] ^ skey[x]; + } + *outlen = x; + + err = CRYPT_OK; +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(expt, mp_unsigned_bin_size(key->p) + 1); + zeromem(skey, MAXBLOCKSIZE); +#endif + + XFREE(expt); + XFREE(skey); + + mp_clear(g_pub); + + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_encrypt_key.c b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_encrypt_key.c new file mode 100644 index 000000000..c854367b8 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_encrypt_key.c @@ -0,0 +1,128 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file dsa_encrypt_key.c + DSA Crypto, Tom St Denis +*/ + +#ifdef LTC_MDSA + +/** + Encrypt a symmetric key with DSA + @param in The symmetric key you want to encrypt + @param inlen The length of the key to encrypt (octets) + @param out [out] The destination for the ciphertext + @param outlen [in/out] The max size and resulting size of the ciphertext + @param prng An active PRNG state + @param wprng The index of the PRNG you wish to use + @param hash The index of the hash you want to use + @param key The DSA key you want to encrypt to + @return CRYPT_OK if successful +*/ +int dsa_encrypt_key(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + prng_state *prng, int wprng, int hash, + dsa_key *key) +{ + unsigned char *expt, *skey; + void *g_pub, *g_priv; + unsigned long x, y; + int err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(key != NULL); + + /* check that wprng/cipher/hash are not invalid */ + if ((err = prng_is_valid(wprng)) != CRYPT_OK) { + return err; + } + + if ((err = hash_is_valid(hash)) != CRYPT_OK) { + return err; + } + + if (inlen > hash_descriptor[hash].hashsize) { + return CRYPT_INVALID_HASH; + } + + /* make a random key and export the public copy */ + if ((err = mp_init_multi(&g_pub, &g_priv, NULL)) != CRYPT_OK) { + return err; + } + + expt = XMALLOC(mp_unsigned_bin_size(key->p) + 1); + skey = XMALLOC(MAXBLOCKSIZE); + if (expt == NULL || skey == NULL) { + if (expt != NULL) { + XFREE(expt); + } + if (skey != NULL) { + XFREE(skey); + } + mp_clear_multi(g_pub, g_priv, NULL); + return CRYPT_MEM; + } + + /* make a random g_priv, g_pub = g^x pair + private key x should be in range: 1 <= x <= q-1 (see FIPS 186-4 B.1.2) + */ + if ((err = rand_bn_upto(g_priv, key->q, prng, wprng)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* compute y */ + if ((err = mp_exptmod(key->g, g_priv, key->p, g_pub)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* make random key */ + x = mp_unsigned_bin_size(key->p) + 1; + if ((err = dsa_shared_secret(g_priv, key->y, key, expt, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + + y = MAXBLOCKSIZE; + if ((err = hash_memory(hash, expt, x, skey, &y)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* Encrypt key */ + for (x = 0; x < inlen; x++) { + skey[x] ^= in[x]; + } + + err = der_encode_sequence_multi(out, outlen, + LTC_ASN1_OBJECT_IDENTIFIER, hash_descriptor[hash].OIDlen, hash_descriptor[hash].OID, + LTC_ASN1_INTEGER, 1UL, g_pub, + LTC_ASN1_OCTET_STRING, inlen, skey, + LTC_ASN1_EOL, 0UL, NULL); + +LBL_ERR: +#ifdef LTC_CLEAN_STACK + /* clean up */ + zeromem(expt, mp_unsigned_bin_size(key->p) + 1); + zeromem(skey, MAXBLOCKSIZE); +#endif + + XFREE(skey); + XFREE(expt); + + mp_clear_multi(g_pub, g_priv, NULL); + return err; +} + +#endif +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_export.c b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_export.c new file mode 100644 index 000000000..f3a9f5930 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_export.c @@ -0,0 +1,116 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file dsa_export.c + DSA implementation, export key, Tom St Denis +*/ + +#ifdef LTC_MDSA + +/** + Export a DSA key to a binary packet + @param out [out] Where to store the packet + @param outlen [in/out] The max size and resulting size of the packet + @param type The type of key to export (PK_PRIVATE or PK_PUBLIC) + @param key The key to export + @return CRYPT_OK if successful +*/ +int dsa_export(unsigned char *out, unsigned long *outlen, int type, dsa_key *key) +{ + unsigned long zero=0; + int err, std; + + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(key != NULL); + + std = type & PK_STD; + type &= ~PK_STD; + + /* can we store the static header? */ + if (type == PK_PRIVATE && key->type != PK_PRIVATE) { + return CRYPT_PK_TYPE_MISMATCH; + } + + if (type != PK_PUBLIC && type != PK_PRIVATE) { + return CRYPT_INVALID_ARG; + } + + if (type == PK_PRIVATE) { + if (std) { + return der_encode_sequence_multi(out, outlen, + LTC_ASN1_SHORT_INTEGER, 1UL, &zero, + LTC_ASN1_INTEGER, 1UL, key->p, + LTC_ASN1_INTEGER, 1UL, key->q, + LTC_ASN1_INTEGER, 1UL, key->g, + LTC_ASN1_INTEGER, 1UL, key->y, + LTC_ASN1_INTEGER, 1UL, key->x, + LTC_ASN1_EOL, 0UL, NULL); + } + else { + unsigned char flags[1]; + flags[0] = 1; + return der_encode_sequence_multi(out, outlen, + LTC_ASN1_BIT_STRING, 1UL, flags, + LTC_ASN1_INTEGER, 1UL, key->g, + LTC_ASN1_INTEGER, 1UL, key->p, + LTC_ASN1_INTEGER, 1UL, key->q, + LTC_ASN1_INTEGER, 1UL, key->y, + LTC_ASN1_INTEGER, 1UL, key->x, + LTC_ASN1_EOL, 0UL, NULL); + } + } else { + if (std) { + unsigned long tmplen = (unsigned long)(mp_count_bits(key->y) / 8) + 8; + unsigned char* tmp = XMALLOC(tmplen); + ltc_asn1_list int_list[3]; + + if (tmp == NULL) { + return CRYPT_MEM; + } + + err = der_encode_integer(key->y, tmp, &tmplen); + if (err != CRYPT_OK) { + goto error; + } + + LTC_SET_ASN1(int_list, 0, LTC_ASN1_INTEGER, key->p, 1UL); + LTC_SET_ASN1(int_list, 1, LTC_ASN1_INTEGER, key->q, 1UL); + LTC_SET_ASN1(int_list, 2, LTC_ASN1_INTEGER, key->g, 1UL); + + err = der_encode_subject_public_key_info(out, outlen, PKA_DSA, tmp, + tmplen, LTC_ASN1_SEQUENCE, int_list, + sizeof(int_list) / sizeof(int_list[0])); + +error: + XFREE(tmp); + return err; + } + else { + unsigned char flags[1]; + flags[0] = 0; + return der_encode_sequence_multi(out, outlen, + LTC_ASN1_BIT_STRING, 1UL, flags, + LTC_ASN1_INTEGER, 1UL, key->g, + LTC_ASN1_INTEGER, 1UL, key->p, + LTC_ASN1_INTEGER, 1UL, key->q, + LTC_ASN1_INTEGER, 1UL, key->y, + LTC_ASN1_EOL, 0UL, NULL); + } + } +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_free.c b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_free.c new file mode 100644 index 000000000..5cac656f6 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_free.c @@ -0,0 +1,33 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file dsa_free.c + DSA implementation, free a DSA key, Tom St Denis +*/ + +#ifdef LTC_MDSA + +/** + Free a DSA key + @param key The key to free from memory +*/ +void dsa_free(dsa_key *key) +{ + LTC_ARGCHKVD(key != NULL); + mp_cleanup_multi(&key->y, &key->x, &key->q, &key->g, &key->p, NULL); + key->type = key->qord = 0; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_generate_key.c b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_generate_key.c new file mode 100644 index 000000000..18b2df631 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_generate_key.c @@ -0,0 +1,47 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file dsa_make_key.c + DSA implementation, generate a DSA key +*/ + +#ifdef LTC_MDSA + +/** + Create a DSA key + @param prng An active PRNG state + @param wprng The index of the PRNG desired + @param key [in/out] Where to store the created key + @return CRYPT_OK if successful. +*/ +int dsa_generate_key(prng_state *prng, int wprng, dsa_key *key) +{ + int err; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(ltc_mp.name != NULL); + + /* so now we have our DH structure, generator g, order q, modulus p + Now we need a random exponent [mod q] and it's power g^x mod p + */ + /* private key x should be from range: 1 <= x <= q-1 (see FIPS 186-4 B.1.2) */ + if ((err = rand_bn_upto(key->x, key->q, prng, wprng)) != CRYPT_OK) { return err; } + if ((err = mp_exptmod(key->g, key->x, key->p, key->y)) != CRYPT_OK) { return err; } + key->type = PK_PRIVATE; + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_generate_pqg.c b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_generate_pqg.c new file mode 100644 index 000000000..8c5f55829 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_generate_pqg.c @@ -0,0 +1,244 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file dsa_generate_pqg.c + DSA implementation - generate DSA parameters p, q & g +*/ + +#ifdef LTC_MDSA + +/** + Create DSA parameters (INTERNAL ONLY, not part of public API) + @param prng An active PRNG state + @param wprng The index of the PRNG desired + @param group_size Size of the multiplicative group (octets) + @param modulus_size Size of the modulus (octets) + @param p [out] bignum where generated 'p' is stored (must be initialized by caller) + @param q [out] bignum where generated 'q' is stored (must be initialized by caller) + @param g [out] bignum where generated 'g' is stored (must be initialized by caller) + @return CRYPT_OK if successful, upon error this function will free all allocated memory +*/ +static int _dsa_make_params(prng_state *prng, int wprng, int group_size, int modulus_size, void *p, void *q, void *g) +{ + unsigned long L, N, n, outbytes, seedbytes, counter, j, i; + int err, res, mr_tests_q, mr_tests_p, found_p, found_q, hash; + unsigned char *wbuf, *sbuf, digest[MAXBLOCKSIZE]; + void *t2L1, *t2N1, *t2q, *t2seedlen, *U, *W, *X, *c, *h, *e, *seedinc; + + /* check size */ + if (group_size >= LTC_MDSA_MAX_GROUP || group_size < 1 || group_size >= modulus_size) { + return CRYPT_INVALID_ARG; + } + + /* FIPS-186-4 A.1.1.2 Generation of the Probable Primes p and q Using an Approved Hash Function + * + * L = The desired length of the prime p (in bits e.g. L = 1024) + * N = The desired length of the prime q (in bits e.g. N = 160) + * seedlen = The desired bit length of the domain parameter seed; seedlen shallbe equal to or greater than N + * outlen = The bit length of Hash function + * + * 1. Check that the (L, N) + * 2. If (seedlen = 2^(L-1)) { + * Test whether or not p is prime as specified in Appendix C.3. + * If p is determined to be prime, then return VALID and the values of p, qand (optionally) the values of domain_parameter_seed and counter + * } + * offset = offset + n + 1 Comment: Increment offset + * } + */ + + seedbytes = group_size; + L = (unsigned long)modulus_size * 8; + N = (unsigned long)group_size * 8; + + /* XXX-TODO no Lucas test */ +#ifdef LTC_MPI_HAS_LUCAS_TEST + /* M-R tests (when followed by one Lucas test) according FIPS-186-4 - Appendix C.3 - table C.1 */ + mr_tests_p = (L <= 2048) ? 3 : 2; + if (N <= 160) { mr_tests_q = 19; } + else if (N <= 224) { mr_tests_q = 24; } + else { mr_tests_q = 27; } +#else + /* M-R tests (without Lucas test) according FIPS-186-4 - Appendix C.3 - table C.1 */ + if (L <= 1024) { mr_tests_p = 40; } + else if (L <= 2048) { mr_tests_p = 56; } + else { mr_tests_p = 64; } + + if (N <= 160) { mr_tests_q = 40; } + else if (N <= 224) { mr_tests_q = 56; } + else { mr_tests_q = 64; } +#endif + + if (N <= 256) { + hash = register_hash(&sha256_desc); + } + else if (N <= 384) { + hash = register_hash(&sha384_desc); + } + else if (N <= 512) { + hash = register_hash(&sha512_desc); + } + else { + return CRYPT_INVALID_ARG; /* group_size too big */ + } + + if ((err = hash_is_valid(hash)) != CRYPT_OK) { return err; } + outbytes = hash_descriptor[hash].hashsize; + + n = ((L + outbytes*8 - 1) / (outbytes*8)) - 1; + + if ((wbuf = XMALLOC((n+1)*outbytes)) == NULL) { err = CRYPT_MEM; goto cleanup3; } + if ((sbuf = XMALLOC(seedbytes)) == NULL) { err = CRYPT_MEM; goto cleanup2; } + + err = mp_init_multi(&t2L1, &t2N1, &t2q, &t2seedlen, &U, &W, &X, &c, &h, &e, &seedinc, NULL); + if (err != CRYPT_OK) { goto cleanup1; } + + if ((err = mp_2expt(t2L1, L-1)) != CRYPT_OK) { goto cleanup; } + /* t2L1 = 2^(L-1) */ + if ((err = mp_2expt(t2N1, N-1)) != CRYPT_OK) { goto cleanup; } + /* t2N1 = 2^(N-1) */ + if ((err = mp_2expt(t2seedlen, seedbytes*8)) != CRYPT_OK) { goto cleanup; } + /* t2seedlen = 2^seedlen */ + + for(found_p=0; !found_p;) { + /* q */ + for(found_q=0; !found_q;) { + if (prng_descriptor[wprng].read(sbuf, seedbytes, prng) != seedbytes) { err = CRYPT_ERROR_READPRNG; goto cleanup; } + i = outbytes; + if ((err = hash_memory(hash, sbuf, seedbytes, digest, &i)) != CRYPT_OK) { goto cleanup; } + if ((err = mp_read_unsigned_bin(U, digest, outbytes)) != CRYPT_OK) { goto cleanup; } + if ((err = mp_mod(U, t2N1, U)) != CRYPT_OK) { goto cleanup; } + if ((err = mp_add(t2N1, U, q)) != CRYPT_OK) { goto cleanup; } + if (!mp_isodd(q)) mp_add_d(q, 1, q); + if ((err = mp_prime_is_prime(q, mr_tests_q, &res)) != CRYPT_OK) { goto cleanup; } + if (res == LTC_MP_YES) found_q = 1; + } + + /* p */ + if ((err = mp_read_unsigned_bin(seedinc, sbuf, seedbytes)) != CRYPT_OK) { goto cleanup; } + if ((err = mp_add(q, q, t2q)) != CRYPT_OK) { goto cleanup; } + for(counter=0; counter < 4*L && !found_p; counter++) { + for(j=0; j<=n; j++) { + if ((err = mp_add_d(seedinc, 1, seedinc)) != CRYPT_OK) { goto cleanup; } + if ((err = mp_mod(seedinc, t2seedlen, seedinc)) != CRYPT_OK) { goto cleanup; } + /* seedinc = (seedinc+1) % 2^seed_bitlen */ + if ((i = mp_unsigned_bin_size(seedinc)) > seedbytes) { err = CRYPT_INVALID_ARG; goto cleanup; } + zeromem(sbuf, seedbytes); + if ((err = mp_to_unsigned_bin(seedinc, sbuf + seedbytes-i)) != CRYPT_OK) { goto cleanup; } + i = outbytes; + err = hash_memory(hash, sbuf, seedbytes, wbuf+(n-j)*outbytes, &i); + if (err != CRYPT_OK) { goto cleanup; } + } + if ((err = mp_read_unsigned_bin(W, wbuf, (n+1)*outbytes)) != CRYPT_OK) { goto cleanup; } + if ((err = mp_mod(W, t2L1, W)) != CRYPT_OK) { goto cleanup; } + if ((err = mp_add(W, t2L1, X)) != CRYPT_OK) { goto cleanup; } + if ((err = mp_mod(X, t2q, c)) != CRYPT_OK) { goto cleanup; } + if ((err = mp_sub_d(c, 1, p)) != CRYPT_OK) { goto cleanup; } + if ((err = mp_sub(X, p, p)) != CRYPT_OK) { goto cleanup; } + if (mp_cmp(p, t2L1) != LTC_MP_LT) { + /* p >= 2^(L-1) */ + if ((err = mp_prime_is_prime(p, mr_tests_p, &res)) != CRYPT_OK) { goto cleanup; } + if (res == LTC_MP_YES) { + found_p = 1; + } + } + } + } + + /* FIPS-186-4 A.2.1 Unverifiable Generation of the Generator g + * 1. e = (p - 1)/q + * 2. h = any integer satisfying: 1 < h < (p - 1) + * h could be obtained from a random number generator or from a counter that changes after each use + * 3. g = h^e mod p + * 4. if (g == 1), then go to step 2. + * + */ + + if ((err = mp_sub_d(p, 1, e)) != CRYPT_OK) { goto cleanup; } + if ((err = mp_div(e, q, e, c)) != CRYPT_OK) { goto cleanup; } + /* e = (p - 1)/q */ + i = mp_count_bits(p); + do { + do { + if ((err = rand_bn_bits(h, i, prng, wprng)) != CRYPT_OK) { goto cleanup; } + } while (mp_cmp(h, p) != LTC_MP_LT || mp_cmp_d(h, 2) != LTC_MP_GT); + if ((err = mp_sub_d(h, 1, h)) != CRYPT_OK) { goto cleanup; } + /* h is randon and 1 < h < (p-1) */ + if ((err = mp_exptmod(h, e, p, g)) != CRYPT_OK) { goto cleanup; } + } while (mp_cmp_d(g, 1) == LTC_MP_EQ); + + err = CRYPT_OK; +cleanup: + mp_clear_multi(t2L1, t2N1, t2q, t2seedlen, U, W, X, c, h, e, seedinc, NULL); +cleanup1: + XFREE(sbuf); +cleanup2: + XFREE(wbuf); +cleanup3: + return err; +} + +/** + Generate DSA parameters p, q & g + @param prng An active PRNG state + @param wprng The index of the PRNG desired + @param group_size Size of the multiplicative group (octets) + @param modulus_size Size of the modulus (octets) + @param key [out] Where to store the created key + @return CRYPT_OK if successful. +*/ +int dsa_generate_pqg(prng_state *prng, int wprng, int group_size, int modulus_size, dsa_key *key) +{ + int err; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(ltc_mp.name != NULL); + + /* init mp_ints */ + if ((err = mp_init_multi(&key->p, &key->g, &key->q, &key->x, &key->y, NULL)) != CRYPT_OK) { + return err; + } + /* generate params */ + err = _dsa_make_params(prng, wprng, group_size, modulus_size, key->p, key->q, key->g); + if (err != CRYPT_OK) { + goto cleanup; + } + + key->qord = group_size; + + return CRYPT_OK; + +cleanup: + dsa_free(key); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_import.c b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_import.c new file mode 100644 index 000000000..e6a756027 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_import.c @@ -0,0 +1,152 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file dsa_import.c + DSA implementation, import a DSA key, Tom St Denis +*/ + +#ifdef LTC_MDSA + +/** + Import a DSA key + @param in The binary packet to import from + @param inlen The length of the binary packet + @param key [out] Where to store the imported key + @return CRYPT_OK if successful, upon error this function will free all allocated memory +*/ +int dsa_import(const unsigned char *in, unsigned long inlen, dsa_key *key) +{ + int err, stat; + unsigned long zero = 0; + unsigned char* tmpbuf = NULL; + unsigned char flags[1]; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(ltc_mp.name != NULL); + + /* init key */ + if (mp_init_multi(&key->p, &key->g, &key->q, &key->x, &key->y, NULL) != CRYPT_OK) { + return CRYPT_MEM; + } + + /* try to match the old libtomcrypt format */ + err = der_decode_sequence_multi(in, inlen, LTC_ASN1_BIT_STRING, 1UL, flags, + LTC_ASN1_EOL, 0UL, NULL); + + if (err == CRYPT_OK || err == CRYPT_INPUT_TOO_LONG) { + /* private key */ + if (flags[0] == 1) { + if ((err = der_decode_sequence_multi(in, inlen, + LTC_ASN1_BIT_STRING, 1UL, flags, + LTC_ASN1_INTEGER, 1UL, key->g, + LTC_ASN1_INTEGER, 1UL, key->p, + LTC_ASN1_INTEGER, 1UL, key->q, + LTC_ASN1_INTEGER, 1UL, key->y, + LTC_ASN1_INTEGER, 1UL, key->x, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { + goto LBL_ERR; + } + key->type = PK_PRIVATE; + goto LBL_OK; + } + /* public key */ + else if (flags[0] == 0) { + if ((err = der_decode_sequence_multi(in, inlen, + LTC_ASN1_BIT_STRING, 1UL, flags, + LTC_ASN1_INTEGER, 1UL, key->g, + LTC_ASN1_INTEGER, 1UL, key->p, + LTC_ASN1_INTEGER, 1UL, key->q, + LTC_ASN1_INTEGER, 1UL, key->y, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { + goto LBL_ERR; + } + key->type = PK_PUBLIC; + goto LBL_OK; + } + else { + err = CRYPT_INVALID_PACKET; + goto LBL_ERR; + } + } + /* get key type */ + if ((err = der_decode_sequence_multi(in, inlen, + LTC_ASN1_SHORT_INTEGER, 1UL, &zero, + LTC_ASN1_INTEGER, 1UL, key->p, + LTC_ASN1_INTEGER, 1UL, key->q, + LTC_ASN1_INTEGER, 1UL, key->g, + LTC_ASN1_INTEGER, 1UL, key->y, + LTC_ASN1_INTEGER, 1UL, key->x, + LTC_ASN1_EOL, 0UL, NULL)) == CRYPT_OK) { + + key->type = PK_PRIVATE; + } else { /* public */ + ltc_asn1_list params[3]; + unsigned long tmpbuf_len = inlen; + + LTC_SET_ASN1(params, 0, LTC_ASN1_INTEGER, key->p, 1UL); + LTC_SET_ASN1(params, 1, LTC_ASN1_INTEGER, key->q, 1UL); + LTC_SET_ASN1(params, 2, LTC_ASN1_INTEGER, key->g, 1UL); + + tmpbuf = XCALLOC(1, tmpbuf_len); + if (tmpbuf == NULL) { + err = CRYPT_MEM; + goto LBL_ERR; + } + + err = der_decode_subject_public_key_info(in, inlen, PKA_DSA, + tmpbuf, &tmpbuf_len, + LTC_ASN1_SEQUENCE, params, 3); + if (err != CRYPT_OK) { + XFREE(tmpbuf); + goto LBL_ERR; + } + + if ((err=der_decode_integer(tmpbuf, tmpbuf_len, key->y)) != CRYPT_OK) { + XFREE(tmpbuf); + goto LBL_ERR; + } + + XFREE(tmpbuf); + key->type = PK_PUBLIC; + } + +LBL_OK: + key->qord = mp_unsigned_bin_size(key->q); + + /* quick p, q, g validation, without primality testing */ + if ((err = dsa_int_validate_pqg(key, &stat)) != CRYPT_OK) { + goto LBL_ERR; + } + if (stat == 0) { + err = CRYPT_INVALID_PACKET; + goto LBL_ERR; + } + /* validate x, y */ + if ((err = dsa_int_validate_xy(key, &stat)) != CRYPT_OK) { + goto LBL_ERR; + } + if (stat == 0) { + err = CRYPT_INVALID_PACKET; + goto LBL_ERR; + } + + return CRYPT_OK; +LBL_ERR: + dsa_free(key); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_make_key.c b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_make_key.c new file mode 100644 index 000000000..8ac08f845 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_make_key.c @@ -0,0 +1,41 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file dsa_make_key.c + DSA implementation, generate a DSA key +*/ + +#ifdef LTC_MDSA + +/** + Old-style creation of a DSA key + @param prng An active PRNG state + @param wprng The index of the PRNG desired + @param group_size Size of the multiplicative group (octets) + @param modulus_size Size of the modulus (octets) + @param key [out] Where to store the created key + @return CRYPT_OK if successful. +*/ +int dsa_make_key(prng_state *prng, int wprng, int group_size, int modulus_size, dsa_key *key) +{ + int err; + + if ((err = dsa_generate_pqg(prng, wprng, group_size, modulus_size, key)) != CRYPT_OK) { return err; } + if ((err = dsa_generate_key(prng, wprng, key)) != CRYPT_OK) { return err; } + + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_set.c b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_set.c new file mode 100644 index 000000000..a4d4042fe --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_set.c @@ -0,0 +1,112 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + + +#ifdef LTC_MDSA + +/** + Import DSA's p, q & g from raw numbers + @param p DSA's p in binary representation + @param plen The length of p + @param q DSA's q in binary representation + @param qlen The length of q + @param g DSA's g in binary representation + @param glen The length of g + @param key [out] the destination for the imported key + @return CRYPT_OK if successful. +*/ +int dsa_set_pqg(const unsigned char *p, unsigned long plen, + const unsigned char *q, unsigned long qlen, + const unsigned char *g, unsigned long glen, + dsa_key *key) +{ + int err, stat; + + LTC_ARGCHK(p != NULL); + LTC_ARGCHK(q != NULL); + LTC_ARGCHK(g != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(ltc_mp.name != NULL); + + /* init key */ + err = mp_init_multi(&key->p, &key->g, &key->q, &key->x, &key->y, NULL); + if (err != CRYPT_OK) return err; + + if ((err = mp_read_unsigned_bin(key->p, (unsigned char *)p , plen)) != CRYPT_OK) { goto LBL_ERR; } + if ((err = mp_read_unsigned_bin(key->g, (unsigned char *)g , glen)) != CRYPT_OK) { goto LBL_ERR; } + if ((err = mp_read_unsigned_bin(key->q, (unsigned char *)q , qlen)) != CRYPT_OK) { goto LBL_ERR; } + + key->qord = mp_unsigned_bin_size(key->q); + + /* do only a quick validation, without primality testing */ + if ((err = dsa_int_validate_pqg(key, &stat)) != CRYPT_OK) { goto LBL_ERR; } + if (stat == 0) { + err = CRYPT_INVALID_PACKET; + goto LBL_ERR; + } + + return CRYPT_OK; + +LBL_ERR: + dsa_free(key); + return err; +} + +/** + Import DSA public or private key-part from raw numbers + + NB: The p, q & g parts must be set beforehand + + @param in The key-part to import, either public or private. + @param inlen The key-part's length + @param type Which type of key (PK_PRIVATE or PK_PUBLIC) + @param key [out] the destination for the imported key + @return CRYPT_OK if successful. +*/ +int dsa_set_key(const unsigned char *in, unsigned long inlen, int type, dsa_key *key) +{ + int err, stat = 0; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(key->x != NULL); + LTC_ARGCHK(key->y != NULL); + LTC_ARGCHK(key->p != NULL); + LTC_ARGCHK(key->g != NULL); + LTC_ARGCHK(key->q != NULL); + LTC_ARGCHK(ltc_mp.name != NULL); + + if (type == PK_PRIVATE) { + key->type = PK_PRIVATE; + if ((err = mp_read_unsigned_bin(key->x, (unsigned char *)in, inlen)) != CRYPT_OK) { goto LBL_ERR; } + if ((err = mp_exptmod(key->g, key->x, key->p, key->y)) != CRYPT_OK) { goto LBL_ERR; } + } + else { + key->type = PK_PUBLIC; + if ((err = mp_read_unsigned_bin(key->y, (unsigned char *)in, inlen)) != CRYPT_OK) { goto LBL_ERR; } + } + + if ((err = dsa_int_validate_xy(key, &stat)) != CRYPT_OK) { goto LBL_ERR; } + if (stat == 0) { + err = CRYPT_INVALID_PACKET; + goto LBL_ERR; + } + + return CRYPT_OK; + +LBL_ERR: + dsa_free(key); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_set_pqg_dsaparam.c b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_set_pqg_dsaparam.c new file mode 100644 index 000000000..edbed1c4e --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_set_pqg_dsaparam.c @@ -0,0 +1,67 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + + +#ifdef LTC_MDSA + +/** + Import DSA's p, q & g from dsaparam + + dsaparam data: openssl dsaparam -outform DER -out dsaparam.der 2048 + + @param dsaparam The DSA param DER encoded data + @param dsaparamlen The length of dhparam data + @param key [out] the destination for the imported key + @return CRYPT_OK if successful. +*/ +int dsa_set_pqg_dsaparam(const unsigned char *dsaparam, unsigned long dsaparamlen, + dsa_key *key) +{ + int err, stat; + + LTC_ARGCHK(dsaparam != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(ltc_mp.name != NULL); + + /* init key */ + err = mp_init_multi(&key->p, &key->g, &key->q, &key->x, &key->y, NULL); + if (err != CRYPT_OK) return err; + + if ((err = der_decode_sequence_multi(dsaparam, dsaparamlen, + LTC_ASN1_INTEGER, 1UL, key->p, + LTC_ASN1_INTEGER, 1UL, key->q, + LTC_ASN1_INTEGER, 1UL, key->g, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { + goto LBL_ERR; + } + + key->qord = mp_unsigned_bin_size(key->q); + + /* quick p, q, g validation, without primality testing */ + if ((err = dsa_int_validate_pqg(key, &stat)) != CRYPT_OK) { + goto LBL_ERR; + } + if (stat == 0) { + err = CRYPT_INVALID_PACKET; + goto LBL_ERR; + } + + return CRYPT_OK; + +LBL_ERR: + dsa_free(key); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_shared_secret.c b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_shared_secret.c new file mode 100644 index 000000000..4c18261b4 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_shared_secret.c @@ -0,0 +1,70 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file dsa_shared_secret.c + DSA Crypto, Tom St Denis +*/ + +#ifdef LTC_MDSA + +/** + Create a DSA shared secret between two keys + @param private_key The private DSA key (the exponent) + @param base The base of the exponentiation (allows this to be used for both encrypt and decrypt) + @param public_key The public key + @param out [out] Destination of the shared secret + @param outlen [in/out] The max size and resulting size of the shared secret + @return CRYPT_OK if successful +*/ +int dsa_shared_secret(void *private_key, void *base, + dsa_key *public_key, + unsigned char *out, unsigned long *outlen) +{ + unsigned long x; + void *res; + int err; + + LTC_ARGCHK(private_key != NULL); + LTC_ARGCHK(public_key != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* make new point */ + if ((err = mp_init(&res)) != CRYPT_OK) { + return err; + } + + if ((err = mp_exptmod(base, private_key, public_key->p, res)) != CRYPT_OK) { + mp_clear(res); + return err; + } + + x = (unsigned long)mp_unsigned_bin_size(res); + if (*outlen < x) { + *outlen = x; + err = CRYPT_BUFFER_OVERFLOW; + goto done; + } + zeromem(out, x); + if ((err = mp_to_unsigned_bin(res, out + (x - mp_unsigned_bin_size(res)))) != CRYPT_OK) { goto done; } + + err = CRYPT_OK; + *outlen = x; +done: + mp_clear(res); + return err; +} + +#endif +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_sign_hash.c b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_sign_hash.c new file mode 100644 index 000000000..fda2ca125 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_sign_hash.c @@ -0,0 +1,152 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file dsa_sign_hash.c + DSA implementation, sign a hash, Tom St Denis +*/ + +#ifdef LTC_MDSA + +/** + Sign a hash with DSA + @param in The hash to sign + @param inlen The length of the hash to sign + @param r The "r" integer of the signature (caller must initialize with mp_init() first) + @param s The "s" integer of the signature (caller must initialize with mp_init() first) + @param prng An active PRNG state + @param wprng The index of the PRNG desired + @param key A private DSA key + @return CRYPT_OK if successful +*/ +int dsa_sign_hash_raw(const unsigned char *in, unsigned long inlen, + void *r, void *s, + prng_state *prng, int wprng, dsa_key *key) +{ + void *k, *kinv, *tmp; + unsigned char *buf; + int err, qbits; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(r != NULL); + LTC_ARGCHK(s != NULL); + LTC_ARGCHK(key != NULL); + + if ((err = prng_is_valid(wprng)) != CRYPT_OK) { + return err; + } + if (key->type != PK_PRIVATE) { + return CRYPT_PK_NOT_PRIVATE; + } + + /* check group order size */ + if (key->qord >= LTC_MDSA_MAX_GROUP) { + return CRYPT_INVALID_ARG; + } + + buf = XMALLOC(LTC_MDSA_MAX_GROUP); + if (buf == NULL) { + return CRYPT_MEM; + } + + /* Init our temps */ + if ((err = mp_init_multi(&k, &kinv, &tmp, NULL)) != CRYPT_OK) { goto ERRBUF; } + + qbits = mp_count_bits(key->q); +retry: + + do { + /* gen random k */ + if ((err = rand_bn_bits(k, qbits, prng, wprng)) != CRYPT_OK) { goto error; } + + /* k should be from range: 1 <= k <= q-1 (see FIPS 186-4 B.2.2) */ + if (mp_cmp_d(k, 0) != LTC_MP_GT || mp_cmp(k, key->q) != LTC_MP_LT) { goto retry; } + + /* test gcd */ + if ((err = mp_gcd(k, key->q, tmp)) != CRYPT_OK) { goto error; } + } while (mp_cmp_d(tmp, 1) != LTC_MP_EQ); + + /* now find 1/k mod q */ + if ((err = mp_invmod(k, key->q, kinv)) != CRYPT_OK) { goto error; } + + /* now find r = g^k mod p mod q */ + if ((err = mp_exptmod(key->g, k, key->p, r)) != CRYPT_OK) { goto error; } + if ((err = mp_mod(r, key->q, r)) != CRYPT_OK) { goto error; } + + if (mp_iszero(r) == LTC_MP_YES) { goto retry; } + + /* FIPS 186-4 4.6: use leftmost min(bitlen(q), bitlen(hash)) bits of 'hash'*/ + inlen = MIN(inlen, (unsigned long)(key->qord)); + + /* now find s = (in + xr)/k mod q */ + if ((err = mp_read_unsigned_bin(tmp, (unsigned char *)in, inlen)) != CRYPT_OK) { goto error; } + if ((err = mp_mul(key->x, r, s)) != CRYPT_OK) { goto error; } + if ((err = mp_add(s, tmp, s)) != CRYPT_OK) { goto error; } + if ((err = mp_mulmod(s, kinv, key->q, s)) != CRYPT_OK) { goto error; } + + if (mp_iszero(s) == LTC_MP_YES) { goto retry; } + + err = CRYPT_OK; +error: + mp_clear_multi(k, kinv, tmp, NULL); +ERRBUF: +#ifdef LTC_CLEAN_STACK + zeromem(buf, LTC_MDSA_MAX_GROUP); +#endif + XFREE(buf); + return err; +} + +/** + Sign a hash with DSA + @param in The hash to sign + @param inlen The length of the hash to sign + @param out [out] Where to store the signature + @param outlen [in/out] The max size and resulting size of the signature + @param prng An active PRNG state + @param wprng The index of the PRNG desired + @param key A private DSA key + @return CRYPT_OK if successful +*/ +int dsa_sign_hash(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + prng_state *prng, int wprng, dsa_key *key) +{ + void *r, *s; + int err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(key != NULL); + + if (mp_init_multi(&r, &s, NULL) != CRYPT_OK) { + return CRYPT_MEM; + } + + if ((err = dsa_sign_hash_raw(in, inlen, r, s, prng, wprng, key)) != CRYPT_OK) { + goto error; + } + + err = der_encode_sequence_multi(out, outlen, + LTC_ASN1_INTEGER, 1UL, r, + LTC_ASN1_INTEGER, 1UL, s, + LTC_ASN1_EOL, 0UL, NULL); + +error: + mp_clear_multi(r, s, NULL); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_verify_hash.c b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_verify_hash.c new file mode 100644 index 000000000..3d3fab5fd --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_verify_hash.c @@ -0,0 +1,137 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file dsa_verify_hash.c + DSA implementation, verify a signature, Tom St Denis +*/ + + +#ifdef LTC_MDSA + +/** + Verify a DSA signature + @param r DSA "r" parameter + @param s DSA "s" parameter + @param hash The hash that was signed + @param hashlen The length of the hash that was signed + @param stat [out] The result of the signature verification, 1==valid, 0==invalid + @param key The corresponding public DSA key + @return CRYPT_OK if successful (even if the signature is invalid) +*/ +int dsa_verify_hash_raw( void *r, void *s, + const unsigned char *hash, unsigned long hashlen, + int *stat, dsa_key *key) +{ + void *w, *v, *u1, *u2; + int err; + + LTC_ARGCHK(r != NULL); + LTC_ARGCHK(s != NULL); + LTC_ARGCHK(stat != NULL); + LTC_ARGCHK(key != NULL); + + /* default to invalid signature */ + *stat = 0; + + /* init our variables */ + if ((err = mp_init_multi(&w, &v, &u1, &u2, NULL)) != CRYPT_OK) { + return err; + } + + /* neither r or s can be null or >q*/ + if (mp_cmp_d(r, 0) != LTC_MP_GT || mp_cmp_d(s, 0) != LTC_MP_GT || mp_cmp(r, key->q) != LTC_MP_LT || mp_cmp(s, key->q) != LTC_MP_LT) { + err = CRYPT_INVALID_PACKET; + goto error; + } + + /* FIPS 186-4 4.7: use leftmost min(bitlen(q), bitlen(hash)) bits of 'hash' */ + hashlen = MIN(hashlen, (unsigned long)(key->qord)); + + /* w = 1/s mod q */ + if ((err = mp_invmod(s, key->q, w)) != CRYPT_OK) { goto error; } + + /* u1 = m * w mod q */ + if ((err = mp_read_unsigned_bin(u1, (unsigned char *)hash, hashlen)) != CRYPT_OK) { goto error; } + if ((err = mp_mulmod(u1, w, key->q, u1)) != CRYPT_OK) { goto error; } + + /* u2 = r*w mod q */ + if ((err = mp_mulmod(r, w, key->q, u2)) != CRYPT_OK) { goto error; } + + /* v = g^u1 * y^u2 mod p mod q */ + if ((err = mp_exptmod(key->g, u1, key->p, u1)) != CRYPT_OK) { goto error; } + if ((err = mp_exptmod(key->y, u2, key->p, u2)) != CRYPT_OK) { goto error; } + if ((err = mp_mulmod(u1, u2, key->p, v)) != CRYPT_OK) { goto error; } + if ((err = mp_mod(v, key->q, v)) != CRYPT_OK) { goto error; } + + /* if r = v then we're set */ + if (mp_cmp(r, v) == LTC_MP_EQ) { + *stat = 1; + } + + err = CRYPT_OK; +error: + mp_clear_multi(w, v, u1, u2, NULL); + return err; +} + +/** + Verify a DSA signature + @param sig The signature + @param siglen The length of the signature (octets) + @param hash The hash that was signed + @param hashlen The length of the hash that was signed + @param stat [out] The result of the signature verification, 1==valid, 0==invalid + @param key The corresponding public DSA key + @return CRYPT_OK if successful (even if the signature is invalid) +*/ +int dsa_verify_hash(const unsigned char *sig, unsigned long siglen, + const unsigned char *hash, unsigned long hashlen, + int *stat, dsa_key *key) +{ + int err; + void *r, *s; + ltc_asn1_list sig_seq[2]; + unsigned long reallen = 0; + + LTC_ARGCHK(stat != NULL); + *stat = 0; /* must be set before the first return */ + + if ((err = mp_init_multi(&r, &s, NULL)) != CRYPT_OK) { + return err; + } + + LTC_SET_ASN1(sig_seq, 0, LTC_ASN1_INTEGER, r, 1UL); + LTC_SET_ASN1(sig_seq, 1, LTC_ASN1_INTEGER, s, 1UL); + + err = der_decode_sequence(sig, siglen, sig_seq, 2); + if (err != CRYPT_OK) { + goto LBL_ERR; + } + + err = der_length_sequence(sig_seq, 2, &reallen); + if (err != CRYPT_OK || reallen != siglen) { + goto LBL_ERR; + } + + /* do the op */ + err = dsa_verify_hash_raw(r, s, hash, hashlen, stat, key); + +LBL_ERR: + mp_clear_multi(r, s, NULL); + return err; +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_verify_key.c b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_verify_key.c new file mode 100644 index 000000000..258e6cbe4 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/dsa/dsa_verify_key.c @@ -0,0 +1,199 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file dsa_verify_key.c + DSA implementation, verify a key, Tom St Denis +*/ + +#ifdef LTC_MDSA + +/** + Validate a DSA key + + Yeah, this function should've been called dsa_validate_key() + in the first place and for compat-reasons we keep it + as it was (for now). + + @param key The key to validate + @param stat [out] Result of test, 1==valid, 0==invalid + @return CRYPT_OK if successful +*/ +int dsa_verify_key(dsa_key *key, int *stat) +{ + int err; + + err = dsa_int_validate_primes(key, stat); + if (err != CRYPT_OK || *stat == 0) return err; + + err = dsa_int_validate_pqg(key, stat); + if (err != CRYPT_OK || *stat == 0) return err; + + return dsa_int_validate_xy(key, stat); +} + +/** + Non-complex part (no primality testing) of the validation + of DSA params (p, q, g) + + @param key The key to validate + @param stat [out] Result of test, 1==valid, 0==invalid + @return CRYPT_OK if successful +*/ +int dsa_int_validate_pqg(dsa_key *key, int *stat) +{ + void *tmp1, *tmp2; + int err; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(stat != NULL); + *stat = 0; + + /* check q-order */ + if ( key->qord >= LTC_MDSA_MAX_GROUP || key->qord <= 15 || + (unsigned long)key->qord >= mp_unsigned_bin_size(key->p) || + (mp_unsigned_bin_size(key->p) - key->qord) >= LTC_MDSA_DELTA ) { + return CRYPT_OK; + } + + /* FIPS 186-4 chapter 4.1: 1 < g < p */ + if (mp_cmp_d(key->g, 1) != LTC_MP_GT || mp_cmp(key->g, key->p) != LTC_MP_LT) { + return CRYPT_OK; + } + + if ((err = mp_init_multi(&tmp1, &tmp2, NULL)) != CRYPT_OK) { return err; } + + /* FIPS 186-4 chapter 4.1: q is a divisor of (p - 1) */ + if ((err = mp_sub_d(key->p, 1, tmp1)) != CRYPT_OK) { goto error; } + if ((err = mp_div(tmp1, key->q, tmp1, tmp2)) != CRYPT_OK) { goto error; } + if (mp_iszero(tmp2) != LTC_MP_YES) { + err = CRYPT_OK; + goto error; + } + + /* FIPS 186-4 chapter 4.1: g is a generator of a subgroup of order q in + * the multiplicative group of GF(p) - so we make sure that g^q mod p = 1 + */ + if ((err = mp_exptmod(key->g, key->q, key->p, tmp1)) != CRYPT_OK) { goto error; } + if (mp_cmp_d(tmp1, 1) != LTC_MP_EQ) { + err = CRYPT_OK; + goto error; + } + + err = CRYPT_OK; + *stat = 1; +error: + mp_clear_multi(tmp2, tmp1, NULL); + return err; +} + +/** + Primality testing of DSA params p and q + + @param key The key to validate + @param stat [out] Result of test, 1==valid, 0==invalid + @return CRYPT_OK if successful +*/ +int dsa_int_validate_primes(dsa_key *key, int *stat) +{ + int err, res; + + *stat = 0; + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(stat != NULL); + + /* key->q prime? */ + if ((err = mp_prime_is_prime(key->q, LTC_MILLER_RABIN_REPS, &res)) != CRYPT_OK) { + return err; + } + if (res == LTC_MP_NO) { + return CRYPT_OK; + } + + /* key->p prime? */ + if ((err = mp_prime_is_prime(key->p, LTC_MILLER_RABIN_REPS, &res)) != CRYPT_OK) { + return err; + } + if (res == LTC_MP_NO) { + return CRYPT_OK; + } + + *stat = 1; + return CRYPT_OK; +} + +/** + Validation of a DSA key (x and y values) + + @param key The key to validate + @param stat [out] Result of test, 1==valid, 0==invalid + @return CRYPT_OK if successful +*/ +int dsa_int_validate_xy(dsa_key *key, int *stat) +{ + void *tmp; + int err; + + *stat = 0; + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(stat != NULL); + + /* 1 < y < p-1 */ + if ((err = mp_init(&tmp)) != CRYPT_OK) { + return err; + } + if ((err = mp_sub_d(key->p, 1, tmp)) != CRYPT_OK) { + goto error; + } + if (mp_cmp_d(key->y, 1) != LTC_MP_GT || mp_cmp(key->y, tmp) != LTC_MP_LT) { + err = CRYPT_OK; + goto error; + } + + if (key->type == PK_PRIVATE) { + /* FIPS 186-4 chapter 4.1: 0 < x < q */ + if (mp_cmp_d(key->x, 0) != LTC_MP_GT || mp_cmp(key->x, key->q) != LTC_MP_LT) { + err = CRYPT_OK; + goto error; + } + /* FIPS 186-4 chapter 4.1: y = g^x mod p */ + if ((err = mp_exptmod(key->g, key->x, key->p, tmp)) != CRYPT_OK) { + goto error; + } + if (mp_cmp(tmp, key->y) != LTC_MP_EQ) { + err = CRYPT_OK; + goto error; + } + } + else { + /* with just a public key we cannot test y = g^x mod p therefore we + * only test that y^q mod p = 1, which makes sure y is in g^x mod p + */ + if ((err = mp_exptmod(key->y, key->q, key->p, tmp)) != CRYPT_OK) { + goto error; + } + if (mp_cmp_d(tmp, 1) != LTC_MP_EQ) { + err = CRYPT_OK; + goto error; + } + } + + err = CRYPT_OK; + *stat = 1; +error: + mp_clear(tmp); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/ecc/ecc.c b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc.c new file mode 100644 index 000000000..18da0b3fd --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc.c @@ -0,0 +1,125 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b + * + * All curves taken from NIST recommendation paper of July 1999 + * Available at http://csrc.nist.gov/cryptval/dss.htm + */ +#include "tomcrypt.h" + +/** + @file ecc.c + ECC Crypto, Tom St Denis +*/ + +#ifdef LTC_MECC + +/* This holds the key settings. ***MUST*** be organized by size from smallest to largest. */ +const ltc_ecc_set_type ltc_ecc_sets[] = { +#ifdef LTC_ECC112 +{ + 14, + "SECP112R1", + "DB7C2ABF62E35E668076BEAD208B", + "659EF8BA043916EEDE8911702B22", + "DB7C2ABF62E35E7628DFAC6561C5", + "09487239995A5EE76B55F9C2F098", + "A89CE5AF8724C0A23E0E0FF77500" +}, +#endif +#ifdef LTC_ECC128 +{ + 16, + "SECP128R1", + "FFFFFFFDFFFFFFFFFFFFFFFFFFFFFFFF", + "E87579C11079F43DD824993C2CEE5ED3", + "FFFFFFFE0000000075A30D1B9038A115", + "161FF7528B899B2D0C28607CA52C5B86", + "CF5AC8395BAFEB13C02DA292DDED7A83", +}, +#endif +#ifdef LTC_ECC160 +{ + 20, + "SECP160R1", + "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7FFFFFFF", + "1C97BEFC54BD7A8B65ACF89F81D4D4ADC565FA45", + "0100000000000000000001F4C8F927AED3CA752257", + "4A96B5688EF573284664698968C38BB913CBFC82", + "23A628553168947D59DCC912042351377AC5FB32", +}, +#endif +#ifdef LTC_ECC192 +{ + 24, + "ECC-192", + "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF", + "64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1", + "FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831", + "188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012", + "7192B95FFC8DA78631011ED6B24CDD573F977A11E794811", +}, +#endif +#ifdef LTC_ECC224 +{ + 28, + "ECC-224", + "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000001", + "B4050A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4", + "FFFFFFFFFFFFFFFFFFFFFFFFFFFF16A2E0B8F03E13DD29455C5C2A3D", + "B70E0CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21", + "BD376388B5F723FB4C22DFE6CD4375A05A07476444D5819985007E34", +}, +#endif +#ifdef LTC_ECC256 +{ + 32, + "ECC-256", + "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF", + "5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B", + "FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551", + "6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296", + "4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5", +}, +#endif +#ifdef LTC_ECC384 +{ + 48, + "ECC-384", + "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFF0000000000000000FFFFFFFF", + "B3312FA7E23EE7E4988E056BE3F82D19181D9C6EFE8141120314088F5013875AC656398D8A2ED19D2A85C8EDD3EC2AEF", + "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7634D81F4372DDF581A0DB248B0A77AECEC196ACCC52973", + "AA87CA22BE8B05378EB1C71EF320AD746E1D3B628BA79B9859F741E082542A385502F25DBF55296C3A545E3872760AB7", + "3617DE4A96262C6F5D9E98BF9292DC29F8F41DBD289A147CE9DA3113B5F0B8C00A60B1CE1D7E819D7A431D7C90EA0E5F", +}, +#endif +#ifdef LTC_ECC521 +{ + 66, + "ECC-521", + "1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", + "51953EB9618E1C9A1F929A21A0B68540EEA2DA725B99B315F3B8B489918EF109E156193951EC7E937B1652C0BD3BB1BF073573DF883D2C34F1EF451FD46B503F00", + "1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFA51868783BF2F966B7FCC0148F709A5D03BB5C9B8899C47AEBB6FB71E91386409", + "C6858E06B70404E9CD9E3ECB662395B4429C648139053FB521F828AF606B4D3DBAA14B5E77EFE75928FE1DC127A2FFA8DE3348B3C1856A429BF97E7E31C2E5BD66", + "11839296A789A3BC0045C8A5FB42C7D1BD998F54449579B446817AFBD17273E662C97EE72995EF42640C550B9013FAD0761353C7086A272C24088BE94769FD16650", +}, +#endif +{ + 0, + NULL, NULL, NULL, NULL, NULL, NULL +} +}; + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_ansi_x963_export.c b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_ansi_x963_export.c new file mode 100644 index 000000000..773b68334 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_ansi_x963_export.c @@ -0,0 +1,77 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b + * + * All curves taken from NIST recommendation paper of July 1999 + * Available at http://csrc.nist.gov/cryptval/dss.htm + */ +#include "tomcrypt.h" + +/** + @file ecc_ansi_x963_export.c + ECC Crypto, Tom St Denis +*/ + +#ifdef LTC_MECC + +/** ECC X9.63 (Sec. 4.3.6) uncompressed export + @param key Key to export + @param out [out] destination of export + @param outlen [in/out] Length of destination and final output size + Return CRYPT_OK on success +*/ +int ecc_ansi_x963_export(ecc_key *key, unsigned char *out, unsigned long *outlen) +{ + unsigned char buf[ECC_BUF_SIZE]; + unsigned long numlen, xlen, ylen; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(outlen != NULL); + + if (ltc_ecc_is_valid_idx(key->idx) == 0) { + return CRYPT_INVALID_ARG; + } + numlen = key->dp->size; + xlen = mp_unsigned_bin_size(key->pubkey.x); + ylen = mp_unsigned_bin_size(key->pubkey.y); + + if (xlen > numlen || ylen > numlen || sizeof(buf) < numlen) { + return CRYPT_BUFFER_OVERFLOW; + } + + if (*outlen < (1 + 2*numlen)) { + *outlen = 1 + 2*numlen; + return CRYPT_BUFFER_OVERFLOW; + } + + LTC_ARGCHK(out != NULL); + + /* store byte 0x04 */ + out[0] = 0x04; + + /* pad and store x */ + zeromem(buf, sizeof(buf)); + mp_to_unsigned_bin(key->pubkey.x, buf + (numlen - xlen)); + XMEMCPY(out+1, buf, numlen); + + /* pad and store y */ + zeromem(buf, sizeof(buf)); + mp_to_unsigned_bin(key->pubkey.y, buf + (numlen - ylen)); + XMEMCPY(out+1+numlen, buf, numlen); + + *outlen = 1 + 2*numlen; + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_ansi_x963_import.c b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_ansi_x963_import.c new file mode 100644 index 000000000..ee5a4c9a0 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_ansi_x963_import.c @@ -0,0 +1,102 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b + * + * All curves taken from NIST recommendation paper of July 1999 + * Available at http://csrc.nist.gov/cryptval/dss.htm + */ +#include "tomcrypt.h" + +/** + @file ecc_ansi_x963_import.c + ECC Crypto, Tom St Denis +*/ + +#ifdef LTC_MECC + +/** Import an ANSI X9.63 format public key + @param in The input data to read + @param inlen The length of the input data + @param key [out] destination to store imported key \ +*/ +int ecc_ansi_x963_import(const unsigned char *in, unsigned long inlen, ecc_key *key) +{ + return ecc_ansi_x963_import_ex(in, inlen, key, NULL); +} + +int ecc_ansi_x963_import_ex(const unsigned char *in, unsigned long inlen, ecc_key *key, ltc_ecc_set_type *dp) +{ + int x, err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(key != NULL); + + /* must be odd */ + if ((inlen & 1) == 0) { + return CRYPT_INVALID_ARG; + } + + /* init key */ + if (mp_init_multi(&key->pubkey.x, &key->pubkey.y, &key->pubkey.z, &key->k, NULL) != CRYPT_OK) { + return CRYPT_MEM; + } + + /* check for 4, 6 or 7 */ + if (in[0] != 4 && in[0] != 6 && in[0] != 7) { + err = CRYPT_INVALID_PACKET; + goto error; + } + + /* read data */ + if ((err = mp_read_unsigned_bin(key->pubkey.x, (unsigned char *)in+1, (inlen-1)>>1)) != CRYPT_OK) { + goto error; + } + + if ((err = mp_read_unsigned_bin(key->pubkey.y, (unsigned char *)in+1+((inlen-1)>>1), (inlen-1)>>1)) != CRYPT_OK) { + goto error; + } + if ((err = mp_set(key->pubkey.z, 1)) != CRYPT_OK) { goto error; } + + if (dp == NULL) { + /* determine the idx */ + for (x = 0; ltc_ecc_sets[x].size != 0; x++) { + if ((unsigned)ltc_ecc_sets[x].size >= ((inlen-1)>>1)) { + break; + } + } + if (ltc_ecc_sets[x].size == 0) { + err = CRYPT_INVALID_PACKET; + goto error; + } + /* set the idx */ + key->idx = x; + key->dp = <c_ecc_sets[x]; + } else { + if (((inlen-1)>>1) != (unsigned long) dp->size) { + err = CRYPT_INVALID_PACKET; + goto error; + } + key->idx = -1; + key->dp = dp; + } + key->type = PK_PUBLIC; + + /* we're done */ + return CRYPT_OK; +error: + mp_clear_multi(key->pubkey.x, key->pubkey.y, key->pubkey.z, key->k, NULL); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_decrypt_key.c b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_decrypt_key.c new file mode 100644 index 000000000..51b894b72 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_decrypt_key.c @@ -0,0 +1,149 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b + * + * All curves taken from NIST recommendation paper of July 1999 + * Available at http://csrc.nist.gov/cryptval/dss.htm + */ +#include "tomcrypt.h" + +/** + @file ecc_decrypt_key.c + ECC Crypto, Tom St Denis +*/ + +#ifdef LTC_MECC + +/** + Decrypt an ECC encrypted key + @param in The ciphertext + @param inlen The length of the ciphertext (octets) + @param out [out] The plaintext + @param outlen [in/out] The max size and resulting size of the plaintext + @param key The corresponding private ECC key + @return CRYPT_OK if successful +*/ +int ecc_decrypt_key(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + ecc_key *key) +{ + unsigned char *ecc_shared, *skey, *pub_expt; + unsigned long x, y; + unsigned long hashOID[32] = { 0 }; + int hash, err; + ecc_key pubkey; + ltc_asn1_list decode[3]; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(key != NULL); + + /* right key type? */ + if (key->type != PK_PRIVATE) { + return CRYPT_PK_NOT_PRIVATE; + } + + /* decode to find out hash */ + LTC_SET_ASN1(decode, 0, LTC_ASN1_OBJECT_IDENTIFIER, hashOID, sizeof(hashOID)/sizeof(hashOID[0])); + err = der_decode_sequence(in, inlen, decode, 1); + if (err != CRYPT_OK && err != CRYPT_INPUT_TOO_LONG) { + return err; + } + + hash = find_hash_oid(hashOID, decode[0].size); + if (hash_is_valid(hash) != CRYPT_OK) { + return CRYPT_INVALID_PACKET; + } + + /* we now have the hash! */ + + /* allocate memory */ + pub_expt = XMALLOC(ECC_BUF_SIZE); + ecc_shared = XMALLOC(ECC_BUF_SIZE); + skey = XMALLOC(MAXBLOCKSIZE); + if (pub_expt == NULL || ecc_shared == NULL || skey == NULL) { + if (pub_expt != NULL) { + XFREE(pub_expt); + } + if (ecc_shared != NULL) { + XFREE(ecc_shared); + } + if (skey != NULL) { + XFREE(skey); + } + return CRYPT_MEM; + } + LTC_SET_ASN1(decode, 1, LTC_ASN1_OCTET_STRING, pub_expt, ECC_BUF_SIZE); + LTC_SET_ASN1(decode, 2, LTC_ASN1_OCTET_STRING, skey, MAXBLOCKSIZE); + + /* read the structure in now */ + if ((err = der_decode_sequence(in, inlen, decode, 3)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* import ECC key from packet */ + if ((err = ecc_import(decode[1].data, decode[1].size, &pubkey)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* make shared key */ + x = ECC_BUF_SIZE; + if ((err = ecc_shared_secret(key, &pubkey, ecc_shared, &x)) != CRYPT_OK) { + ecc_free(&pubkey); + goto LBL_ERR; + } + ecc_free(&pubkey); + + y = MIN(ECC_BUF_SIZE, MAXBLOCKSIZE); + if ((err = hash_memory(hash, ecc_shared, x, ecc_shared, &y)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* ensure the hash of the shared secret is at least as big as the encrypt itself */ + if (decode[2].size > y) { + err = CRYPT_INVALID_PACKET; + goto LBL_ERR; + } + + /* avoid buffer overflow */ + if (*outlen < decode[2].size) { + *outlen = decode[2].size; + err = CRYPT_BUFFER_OVERFLOW; + goto LBL_ERR; + } + + /* Decrypt the key */ + for (x = 0; x < decode[2].size; x++) { + out[x] = skey[x] ^ ecc_shared[x]; + } + *outlen = x; + + err = CRYPT_OK; +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(pub_expt, ECC_BUF_SIZE); + zeromem(ecc_shared, ECC_BUF_SIZE); + zeromem(skey, MAXBLOCKSIZE); +#endif + + XFREE(pub_expt); + XFREE(ecc_shared); + XFREE(skey); + + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_encrypt_key.c b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_encrypt_key.c new file mode 100644 index 000000000..e92738bc1 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_encrypt_key.c @@ -0,0 +1,134 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b + * + * All curves taken from NIST recommendation paper of July 1999 + * Available at http://csrc.nist.gov/cryptval/dss.htm + */ +#include "tomcrypt.h" + +/** + @file ecc_encrypt_key.c + ECC Crypto, Tom St Denis +*/ + +#ifdef LTC_MECC + +/** + Encrypt a symmetric key with ECC + @param in The symmetric key you want to encrypt + @param inlen The length of the key to encrypt (octets) + @param out [out] The destination for the ciphertext + @param outlen [in/out] The max size and resulting size of the ciphertext + @param prng An active PRNG state + @param wprng The index of the PRNG you wish to use + @param hash The index of the hash you want to use + @param key The ECC key you want to encrypt to + @return CRYPT_OK if successful +*/ +int ecc_encrypt_key(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + prng_state *prng, int wprng, int hash, + ecc_key *key) +{ + unsigned char *pub_expt, *ecc_shared, *skey; + ecc_key pubkey; + unsigned long x, y, pubkeysize; + int err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(key != NULL); + + /* check that wprng/cipher/hash are not invalid */ + if ((err = prng_is_valid(wprng)) != CRYPT_OK) { + return err; + } + + if ((err = hash_is_valid(hash)) != CRYPT_OK) { + return err; + } + + if (inlen > hash_descriptor[hash].hashsize) { + return CRYPT_INVALID_HASH; + } + + /* make a random key and export the public copy */ + if ((err = ecc_make_key_ex(prng, wprng, &pubkey, key->dp)) != CRYPT_OK) { + return err; + } + + pub_expt = XMALLOC(ECC_BUF_SIZE); + ecc_shared = XMALLOC(ECC_BUF_SIZE); + skey = XMALLOC(MAXBLOCKSIZE); + if (pub_expt == NULL || ecc_shared == NULL || skey == NULL) { + if (pub_expt != NULL) { + XFREE(pub_expt); + } + if (ecc_shared != NULL) { + XFREE(ecc_shared); + } + if (skey != NULL) { + XFREE(skey); + } + ecc_free(&pubkey); + return CRYPT_MEM; + } + + pubkeysize = ECC_BUF_SIZE; + if ((err = ecc_export(pub_expt, &pubkeysize, PK_PUBLIC, &pubkey)) != CRYPT_OK) { + ecc_free(&pubkey); + goto LBL_ERR; + } + + /* make random key */ + x = ECC_BUF_SIZE; + if ((err = ecc_shared_secret(&pubkey, key, ecc_shared, &x)) != CRYPT_OK) { + ecc_free(&pubkey); + goto LBL_ERR; + } + ecc_free(&pubkey); + y = MAXBLOCKSIZE; + if ((err = hash_memory(hash, ecc_shared, x, skey, &y)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* Encrypt key */ + for (x = 0; x < inlen; x++) { + skey[x] ^= in[x]; + } + + err = der_encode_sequence_multi(out, outlen, + LTC_ASN1_OBJECT_IDENTIFIER, hash_descriptor[hash].OIDlen, hash_descriptor[hash].OID, + LTC_ASN1_OCTET_STRING, pubkeysize, pub_expt, + LTC_ASN1_OCTET_STRING, inlen, skey, + LTC_ASN1_EOL, 0UL, NULL); + +LBL_ERR: +#ifdef LTC_CLEAN_STACK + /* clean up */ + zeromem(pub_expt, ECC_BUF_SIZE); + zeromem(ecc_shared, ECC_BUF_SIZE); + zeromem(skey, MAXBLOCKSIZE); +#endif + + XFREE(skey); + XFREE(ecc_shared); + XFREE(pub_expt); + + return err; +} + +#endif +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_export.c b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_export.c new file mode 100644 index 000000000..6c2659e9d --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_export.c @@ -0,0 +1,80 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b + * + * All curves taken from NIST recommendation paper of July 1999 + * Available at http://csrc.nist.gov/cryptval/dss.htm + */ +#include "tomcrypt.h" + +/** + @file ecc_export.c + ECC Crypto, Tom St Denis +*/ + +#ifdef LTC_MECC + +/** + Export an ECC key as a binary packet + @param out [out] Destination for the key + @param outlen [in/out] Max size and resulting size of the exported key + @param type The type of key you want to export (PK_PRIVATE or PK_PUBLIC) + @param key The key to export + @return CRYPT_OK if successful +*/ +int ecc_export(unsigned char *out, unsigned long *outlen, int type, ecc_key *key) +{ + int err; + unsigned char flags[1]; + unsigned long key_size; + + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(key != NULL); + + /* type valid? */ + if (key->type != PK_PRIVATE && type == PK_PRIVATE) { + return CRYPT_PK_TYPE_MISMATCH; + } + + if (ltc_ecc_is_valid_idx(key->idx) == 0) { + return CRYPT_INVALID_ARG; + } + + /* we store the NIST byte size */ + key_size = key->dp->size; + + if (type == PK_PRIVATE) { + flags[0] = 1; + err = der_encode_sequence_multi(out, outlen, + LTC_ASN1_BIT_STRING, 1UL, flags, + LTC_ASN1_SHORT_INTEGER, 1UL, &key_size, + LTC_ASN1_INTEGER, 1UL, key->pubkey.x, + LTC_ASN1_INTEGER, 1UL, key->pubkey.y, + LTC_ASN1_INTEGER, 1UL, key->k, + LTC_ASN1_EOL, 0UL, NULL); + } else { + flags[0] = 0; + err = der_encode_sequence_multi(out, outlen, + LTC_ASN1_BIT_STRING, 1UL, flags, + LTC_ASN1_SHORT_INTEGER, 1UL, &key_size, + LTC_ASN1_INTEGER, 1UL, key->pubkey.x, + LTC_ASN1_INTEGER, 1UL, key->pubkey.y, + LTC_ASN1_EOL, 0UL, NULL); + } + + return err; +} + +#endif +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_free.c b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_free.c new file mode 100644 index 000000000..4a8ca455c --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_free.c @@ -0,0 +1,38 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b + * + * All curves taken from NIST recommendation paper of July 1999 + * Available at http://csrc.nist.gov/cryptval/dss.htm + */ +#include "tomcrypt.h" + +/** + @file ecc_free.c + ECC Crypto, Tom St Denis +*/ + +#ifdef LTC_MECC + +/** + Free an ECC key from memory + @param key The key you wish to free +*/ +void ecc_free(ecc_key *key) +{ + LTC_ARGCHKVD(key != NULL); + mp_clear_multi(key->pubkey.x, key->pubkey.y, key->pubkey.z, key->k, NULL); +} + +#endif +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_get_size.c b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_get_size.c new file mode 100644 index 000000000..4dc5d2227 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_get_size.c @@ -0,0 +1,42 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b + * + * All curves taken from NIST recommendation paper of July 1999 + * Available at http://csrc.nist.gov/cryptval/dss.htm + */ +#include "tomcrypt.h" + +/** + @file ecc_get_size.c + ECC Crypto, Tom St Denis +*/ + +#ifdef LTC_MECC + +/** + Get the size of an ECC key + @param key The key to get the size of + @return The size (octets) of the key or INT_MAX on error +*/ +int ecc_get_size(ecc_key *key) +{ + LTC_ARGCHK(key != NULL); + if (ltc_ecc_is_valid_idx(key->idx)) + return key->dp->size; + else + return INT_MAX; /* large value known to cause it to fail when passed to ecc_make_key() */ +} + +#endif +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_import.c b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_import.c new file mode 100644 index 000000000..c6d474fbc --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_import.c @@ -0,0 +1,174 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b + * + * All curves taken from NIST recommendation paper of July 1999 + * Available at http://csrc.nist.gov/cryptval/dss.htm + */ +#include "tomcrypt.h" + +/** + @file ecc_import.c + ECC Crypto, Tom St Denis +*/ + +#ifdef LTC_MECC + +static int _is_point(ecc_key *key) +{ + void *prime, *b, *t1, *t2; + int err; + + if ((err = mp_init_multi(&prime, &b, &t1, &t2, NULL)) != CRYPT_OK) { + return err; + } + + /* load prime and b */ + if ((err = mp_read_radix(prime, key->dp->prime, 16)) != CRYPT_OK) { goto error; } + if ((err = mp_read_radix(b, key->dp->B, 16)) != CRYPT_OK) { goto error; } + + /* compute y^2 */ + if ((err = mp_sqr(key->pubkey.y, t1)) != CRYPT_OK) { goto error; } + + /* compute x^3 */ + if ((err = mp_sqr(key->pubkey.x, t2)) != CRYPT_OK) { goto error; } + if ((err = mp_mod(t2, prime, t2)) != CRYPT_OK) { goto error; } + if ((err = mp_mul(key->pubkey.x, t2, t2)) != CRYPT_OK) { goto error; } + + /* compute y^2 - x^3 */ + if ((err = mp_sub(t1, t2, t1)) != CRYPT_OK) { goto error; } + + /* compute y^2 - x^3 + 3x */ + if ((err = mp_add(t1, key->pubkey.x, t1)) != CRYPT_OK) { goto error; } + if ((err = mp_add(t1, key->pubkey.x, t1)) != CRYPT_OK) { goto error; } + if ((err = mp_add(t1, key->pubkey.x, t1)) != CRYPT_OK) { goto error; } + if ((err = mp_mod(t1, prime, t1)) != CRYPT_OK) { goto error; } + while (mp_cmp_d(t1, 0) == LTC_MP_LT) { + if ((err = mp_add(t1, prime, t1)) != CRYPT_OK) { goto error; } + } + while (mp_cmp(t1, prime) != LTC_MP_LT) { + if ((err = mp_sub(t1, prime, t1)) != CRYPT_OK) { goto error; } + } + + /* compare to b */ + if (mp_cmp(t1, b) != LTC_MP_EQ) { + err = CRYPT_INVALID_PACKET; + } else { + err = CRYPT_OK; + } + +error: + mp_clear_multi(prime, b, t1, t2, NULL); + return err; +} + +/** + Import an ECC key from a binary packet + @param in The packet to import + @param inlen The length of the packet + @param key [out] The destination of the import + @return CRYPT_OK if successful, upon error all allocated memory will be freed +*/ +int ecc_import(const unsigned char *in, unsigned long inlen, ecc_key *key) +{ + return ecc_import_ex(in, inlen, key, NULL); +} + +/** + Import an ECC key from a binary packet, using user supplied domain params rather than one of the NIST ones + @param in The packet to import + @param inlen The length of the packet + @param key [out] The destination of the import + @param dp pointer to user supplied params; must be the same as the params used when exporting + @return CRYPT_OK if successful, upon error all allocated memory will be freed +*/ +int ecc_import_ex(const unsigned char *in, unsigned long inlen, ecc_key *key, const ltc_ecc_set_type *dp) +{ + unsigned long key_size; + unsigned char flags[1]; + int err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(ltc_mp.name != NULL); + + /* init key */ + if (mp_init_multi(&key->pubkey.x, &key->pubkey.y, &key->pubkey.z, &key->k, NULL) != CRYPT_OK) { + return CRYPT_MEM; + } + + /* find out what type of key it is */ + err = der_decode_sequence_multi(in, inlen, LTC_ASN1_BIT_STRING, 1UL, flags, + LTC_ASN1_EOL, 0UL, NULL); + if (err != CRYPT_OK && err != CRYPT_INPUT_TOO_LONG) { + goto done; + } + + + if (flags[0] == 1) { + /* private key */ + key->type = PK_PRIVATE; + if ((err = der_decode_sequence_multi(in, inlen, + LTC_ASN1_BIT_STRING, 1UL, flags, + LTC_ASN1_SHORT_INTEGER, 1UL, &key_size, + LTC_ASN1_INTEGER, 1UL, key->pubkey.x, + LTC_ASN1_INTEGER, 1UL, key->pubkey.y, + LTC_ASN1_INTEGER, 1UL, key->k, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { + goto done; + } + } else if (flags[0] == 0) { + /* public key */ + key->type = PK_PUBLIC; + if ((err = der_decode_sequence_multi(in, inlen, + LTC_ASN1_BIT_STRING, 1UL, flags, + LTC_ASN1_SHORT_INTEGER, 1UL, &key_size, + LTC_ASN1_INTEGER, 1UL, key->pubkey.x, + LTC_ASN1_INTEGER, 1UL, key->pubkey.y, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { + goto done; + } + } + else { + err = CRYPT_INVALID_PACKET; + goto done; + } + + if (dp == NULL) { + /* find the idx */ + for (key->idx = 0; ltc_ecc_sets[key->idx].size && (unsigned long)ltc_ecc_sets[key->idx].size != key_size; ++key->idx); + if (ltc_ecc_sets[key->idx].size == 0) { + err = CRYPT_INVALID_PACKET; + goto done; + } + key->dp = <c_ecc_sets[key->idx]; + } else { + key->idx = -1; + key->dp = dp; + } + /* set z */ + if ((err = mp_set(key->pubkey.z, 1)) != CRYPT_OK) { goto done; } + + /* is it a point on the curve? */ + if ((err = _is_point(key)) != CRYPT_OK) { + goto done; + } + + /* we're good */ + return CRYPT_OK; +done: + mp_clear_multi(key->pubkey.x, key->pubkey.y, key->pubkey.z, key->k, NULL); + return err; +} +#endif +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_make_key.c b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_make_key.c new file mode 100644 index 000000000..113a99442 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_make_key.c @@ -0,0 +1,128 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b + * + * All curves taken from NIST recommendation paper of July 1999 + * Available at http://csrc.nist.gov/cryptval/dss.htm + */ +#include "tomcrypt.h" + +/** + @file ecc_make_key.c + ECC Crypto, Tom St Denis +*/ + +#ifdef LTC_MECC + +/** + Make a new ECC key + @param prng An active PRNG state + @param wprng The index of the PRNG you wish to use + @param keysize The keysize for the new key (in octets from 20 to 65 bytes) + @param key [out] Destination of the newly created key + @return CRYPT_OK if successful, upon error all allocated memory will be freed +*/ +int ecc_make_key(prng_state *prng, int wprng, int keysize, ecc_key *key) +{ + int x, err; + + /* find key size */ + for (x = 0; (keysize > ltc_ecc_sets[x].size) && (ltc_ecc_sets[x].size != 0); x++); + keysize = ltc_ecc_sets[x].size; + + if (keysize > ECC_MAXSIZE || ltc_ecc_sets[x].size == 0) { + return CRYPT_INVALID_KEYSIZE; + } + err = ecc_make_key_ex(prng, wprng, key, <c_ecc_sets[x]); + key->idx = x; + return err; +} + +int ecc_make_key_ex(prng_state *prng, int wprng, ecc_key *key, const ltc_ecc_set_type *dp) +{ + int err; + ecc_point *base; + void *prime, *order; + unsigned char *buf; + int keysize; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(ltc_mp.name != NULL); + LTC_ARGCHK(dp != NULL); + + /* good prng? */ + if ((err = prng_is_valid(wprng)) != CRYPT_OK) { + return err; + } + + key->idx = -1; + key->dp = dp; + keysize = dp->size; + + /* allocate ram */ + base = NULL; + buf = XMALLOC(ECC_MAXSIZE); + if (buf == NULL) { + return CRYPT_MEM; + } + + /* make up random string */ + if (prng_descriptor[wprng].read(buf, (unsigned long)keysize, prng) != (unsigned long)keysize) { + err = CRYPT_ERROR_READPRNG; + goto ERR_BUF; + } + + /* setup the key variables */ + if ((err = mp_init_multi(&key->pubkey.x, &key->pubkey.y, &key->pubkey.z, &key->k, &prime, &order, NULL)) != CRYPT_OK) { + goto ERR_BUF; + } + base = ltc_ecc_new_point(); + if (base == NULL) { + err = CRYPT_MEM; + goto errkey; + } + + /* read in the specs for this key */ + if ((err = mp_read_radix(prime, (char *)key->dp->prime, 16)) != CRYPT_OK) { goto errkey; } + if ((err = mp_read_radix(order, (char *)key->dp->order, 16)) != CRYPT_OK) { goto errkey; } + if ((err = mp_read_radix(base->x, (char *)key->dp->Gx, 16)) != CRYPT_OK) { goto errkey; } + if ((err = mp_read_radix(base->y, (char *)key->dp->Gy, 16)) != CRYPT_OK) { goto errkey; } + if ((err = mp_set(base->z, 1)) != CRYPT_OK) { goto errkey; } + if ((err = mp_read_unsigned_bin(key->k, (unsigned char *)buf, keysize)) != CRYPT_OK) { goto errkey; } + + /* the key should be smaller than the order of base point */ + if (mp_cmp(key->k, order) != LTC_MP_LT) { + if((err = mp_mod(key->k, order, key->k)) != CRYPT_OK) { goto errkey; } + } + /* make the public key */ + if ((err = ltc_mp.ecc_ptmul(key->k, base, &key->pubkey, prime, 1)) != CRYPT_OK) { goto errkey; } + key->type = PK_PRIVATE; + + /* free up ram */ + err = CRYPT_OK; + goto cleanup; +errkey: + mp_clear_multi(key->pubkey.x, key->pubkey.y, key->pubkey.z, key->k, NULL); +cleanup: + ltc_ecc_del_point(base); + mp_clear_multi(prime, order, NULL); +ERR_BUF: +#ifdef LTC_CLEAN_STACK + zeromem(buf, ECC_MAXSIZE); +#endif + XFREE(buf); + return err; +} + +#endif +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_shared_secret.c b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_shared_secret.c new file mode 100644 index 000000000..d18a20581 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_shared_secret.c @@ -0,0 +1,93 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b + * + * All curves taken from NIST recommendation paper of July 1999 + * Available at http://csrc.nist.gov/cryptval/dss.htm + */ +#include "tomcrypt.h" + +/** + @file ecc_shared_secret.c + ECC Crypto, Tom St Denis +*/ + +#ifdef LTC_MECC + +/** + Create an ECC shared secret between two keys + @param private_key The private ECC key + @param public_key The public key + @param out [out] Destination of the shared secret (Conforms to EC-DH from ANSI X9.63) + @param outlen [in/out] The max size and resulting size of the shared secret + @return CRYPT_OK if successful +*/ +int ecc_shared_secret(ecc_key *private_key, ecc_key *public_key, + unsigned char *out, unsigned long *outlen) +{ + unsigned long x; + ecc_point *result; + void *prime; + int err; + + LTC_ARGCHK(private_key != NULL); + LTC_ARGCHK(public_key != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* type valid? */ + if (private_key->type != PK_PRIVATE) { + return CRYPT_PK_NOT_PRIVATE; + } + + if (ltc_ecc_is_valid_idx(private_key->idx) == 0 || ltc_ecc_is_valid_idx(public_key->idx) == 0) { + return CRYPT_INVALID_ARG; + } + + if (XSTRCMP(private_key->dp->name, public_key->dp->name) != 0) { + return CRYPT_PK_TYPE_MISMATCH; + } + + /* make new point */ + result = ltc_ecc_new_point(); + if (result == NULL) { + return CRYPT_MEM; + } + + if ((err = mp_init(&prime)) != CRYPT_OK) { + ltc_ecc_del_point(result); + return err; + } + + if ((err = mp_read_radix(prime, (char *)private_key->dp->prime, 16)) != CRYPT_OK) { goto done; } + if ((err = ltc_mp.ecc_ptmul(private_key->k, &public_key->pubkey, result, prime, 1)) != CRYPT_OK) { goto done; } + + x = (unsigned long)mp_unsigned_bin_size(prime); + if (*outlen < x) { + *outlen = x; + err = CRYPT_BUFFER_OVERFLOW; + goto done; + } + zeromem(out, x); + if ((err = mp_to_unsigned_bin(result->x, out + (x - mp_unsigned_bin_size(result->x)))) != CRYPT_OK) { goto done; } + + err = CRYPT_OK; + *outlen = x; +done: + mp_clear(prime); + ltc_ecc_del_point(result); + return err; +} + +#endif +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_sign_hash.c b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_sign_hash.c new file mode 100644 index 000000000..5d435699e --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_sign_hash.c @@ -0,0 +1,171 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_MECC + +/** + @file ecc_sign_hash.c + ECC Crypto, Tom St Denis +*/ + +static int _ecc_sign_hash(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + prng_state *prng, int wprng, ecc_key *key, int sigformat) +{ + ecc_key pubkey; + void *r, *s, *e, *p, *b; + int err, max_iterations = LTC_PK_MAX_RETRIES; + unsigned long pbits, pbytes, i, shift_right; + unsigned char ch, buf[MAXBLOCKSIZE]; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(key != NULL); + + /* is this a private key? */ + if (key->type != PK_PRIVATE) { + return CRYPT_PK_NOT_PRIVATE; + } + + /* is the IDX valid ? */ + if (ltc_ecc_is_valid_idx(key->idx) != 1) { + return CRYPT_PK_INVALID_TYPE; + } + + if ((err = prng_is_valid(wprng)) != CRYPT_OK) { + return err; + } + + /* init the bignums */ + if ((err = mp_init_multi(&r, &s, &p, &e, &b, NULL)) != CRYPT_OK) { + return err; + } + if ((err = mp_read_radix(p, (char *)key->dp->order, 16)) != CRYPT_OK) { goto errnokey; } + + /* get the hash and load it as a bignum into 'e' */ + pbits = mp_count_bits(p); + pbytes = (pbits+7) >> 3; + if (pbits > inlen*8) { + if ((err = mp_read_unsigned_bin(e, (unsigned char *)in, inlen)) != CRYPT_OK) { goto errnokey; } + } + else if (pbits % 8 == 0) { + if ((err = mp_read_unsigned_bin(e, (unsigned char *)in, pbytes)) != CRYPT_OK) { goto errnokey; } + } + else { + shift_right = 8 - pbits % 8; + for (i=0, ch=0; i> shift_right); + } + if ((err = mp_read_unsigned_bin(e, (unsigned char *)buf, pbytes)) != CRYPT_OK) { goto errnokey; } + } + + /* make up a key and export the public copy */ + do { + if ((err = ecc_make_key_ex(prng, wprng, &pubkey, key->dp)) != CRYPT_OK) { + goto errnokey; + } + + /* find r = x1 mod n */ + if ((err = mp_mod(pubkey.pubkey.x, p, r)) != CRYPT_OK) { goto error; } + + if (mp_iszero(r) == LTC_MP_YES) { + ecc_free(&pubkey); + } else { + if ((err = rand_bn_upto(b, p, prng, wprng)) != CRYPT_OK) { goto error; } /* b = blinding value */ + /* find s = (e + xr)/k */ + if ((err = mp_mulmod(pubkey.k, b, p, pubkey.k)) != CRYPT_OK) { goto error; } /* k = kb */ + if ((err = mp_invmod(pubkey.k, p, pubkey.k)) != CRYPT_OK) { goto error; } /* k = 1/kb */ + if ((err = mp_mulmod(key->k, r, p, s)) != CRYPT_OK) { goto error; } /* s = xr */ + if ((err = mp_mulmod(pubkey.k, s, p, s)) != CRYPT_OK) { goto error; } /* s = xr/kb */ + if ((err = mp_mulmod(pubkey.k, e, p, e)) != CRYPT_OK) { goto error; } /* e = e/kb */ + if ((err = mp_add(e, s, s)) != CRYPT_OK) { goto error; } /* s = e/kb + xr/kb */ + if ((err = mp_mulmod(s, b, p, s)) != CRYPT_OK) { goto error; } /* s = b(e/kb + xr/kb) = (e + xr)/k */ + ecc_free(&pubkey); + if (mp_iszero(s) == LTC_MP_NO) { + break; + } + } + } while (--max_iterations > 0); + + if (max_iterations == 0) { + goto errnokey; + } + + if (sigformat == 1) { + /* RFC7518 format */ + if (*outlen < 2*pbytes) { err = CRYPT_MEM; goto errnokey; } + zeromem(out, 2*pbytes); + i = mp_unsigned_bin_size(r); + if ((err = mp_to_unsigned_bin(r, out + (pbytes - i))) != CRYPT_OK) { goto errnokey; } + i = mp_unsigned_bin_size(s); + if ((err = mp_to_unsigned_bin(s, out + (2*pbytes - i))) != CRYPT_OK) { goto errnokey; } + *outlen = 2*pbytes; + err = CRYPT_OK; + } + else { + /* store as ASN.1 SEQUENCE { r, s -- integer } */ + err = der_encode_sequence_multi(out, outlen, + LTC_ASN1_INTEGER, 1UL, r, + LTC_ASN1_INTEGER, 1UL, s, + LTC_ASN1_EOL, 0UL, NULL); + } + goto errnokey; +error: + ecc_free(&pubkey); +errnokey: + mp_clear_multi(r, s, p, e, b, NULL); + return err; +} + +/** + Sign a message digest + @param in The message digest to sign + @param inlen The length of the digest + @param out [out] The destination for the signature + @param outlen [in/out] The max size and resulting size of the signature + @param prng An active PRNG state + @param wprng The index of the PRNG you wish to use + @param key A private ECC key + @return CRYPT_OK if successful +*/ +int ecc_sign_hash(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + prng_state *prng, int wprng, ecc_key *key) +{ + return _ecc_sign_hash(in, inlen, out, outlen, prng, wprng, key, 0); +} + +/** + Sign a message digest in RFC7518 format + @param in The message digest to sign + @param inlen The length of the digest + @param out [out] The destination for the signature + @param outlen [in/out] The max size and resulting size of the signature + @param prng An active PRNG state + @param wprng The index of the PRNG you wish to use + @param key A private ECC key + @return CRYPT_OK if successful +*/ +int ecc_sign_hash_rfc7518(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + prng_state *prng, int wprng, ecc_key *key) +{ + return _ecc_sign_hash(in, inlen, out, outlen, prng, wprng, key, 1); +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_sizes.c b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_sizes.c new file mode 100644 index 000000000..7c311fefd --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_sizes.c @@ -0,0 +1,46 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b + * + * All curves taken from NIST recommendation paper of July 1999 + * Available at http://csrc.nist.gov/cryptval/dss.htm + */ +#include "tomcrypt.h" + +/** + @file ecc_sizes.c + ECC Crypto, Tom St Denis +*/ + +#ifdef LTC_MECC + +void ecc_sizes(int *low, int *high) +{ + int i; + LTC_ARGCHKVD(low != NULL); + LTC_ARGCHKVD(high != NULL); + + *low = INT_MAX; + *high = 0; + for (i = 0; ltc_ecc_sets[i].size != 0; i++) { + if (ltc_ecc_sets[i].size < *low) { + *low = ltc_ecc_sets[i].size; + } + if (ltc_ecc_sets[i].size > *high) { + *high = ltc_ecc_sets[i].size; + } + } +} + +#endif +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_test.c b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_test.c new file mode 100644 index 000000000..b6d54d1e8 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_test.c @@ -0,0 +1,93 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b + * + * All curves taken from NIST recommendation paper of July 1999 + * Available at http://csrc.nist.gov/cryptval/dss.htm + */ +#include "tomcrypt.h" + +/** + @file ecc_test.c + ECC Crypto, Tom St Denis +*/ + +#ifdef LTC_MECC + +/** + Perform on the ECC system + @return CRYPT_OK if successful +*/ +int ecc_test(void) +{ + void *modulus, *order; + ecc_point *G, *GG; + int i, err, primality; + + if ((err = mp_init_multi(&modulus, &order, NULL)) != CRYPT_OK) { + return err; + } + + G = ltc_ecc_new_point(); + GG = ltc_ecc_new_point(); + if (G == NULL || GG == NULL) { + mp_clear_multi(modulus, order, NULL); + ltc_ecc_del_point(G); + ltc_ecc_del_point(GG); + return CRYPT_MEM; + } + + for (i = 0; ltc_ecc_sets[i].size; i++) { + #if 0 + printf("Testing %d\n", ltc_ecc_sets[i].size); + #endif + if ((err = mp_read_radix(modulus, (char *)ltc_ecc_sets[i].prime, 16)) != CRYPT_OK) { goto done; } + if ((err = mp_read_radix(order, (char *)ltc_ecc_sets[i].order, 16)) != CRYPT_OK) { goto done; } + + /* is prime actually prime? */ + if ((err = mp_prime_is_prime(modulus, 8, &primality)) != CRYPT_OK) { goto done; } + if (primality == 0) { + err = CRYPT_FAIL_TESTVECTOR; + goto done; + } + + /* is order prime ? */ + if ((err = mp_prime_is_prime(order, 8, &primality)) != CRYPT_OK) { goto done; } + if (primality == 0) { + err = CRYPT_FAIL_TESTVECTOR; + goto done; + } + + if ((err = mp_read_radix(G->x, (char *)ltc_ecc_sets[i].Gx, 16)) != CRYPT_OK) { goto done; } + if ((err = mp_read_radix(G->y, (char *)ltc_ecc_sets[i].Gy, 16)) != CRYPT_OK) { goto done; } + mp_set(G->z, 1); + + /* then we should have G == (order + 1)G */ + if ((err = mp_add_d(order, 1, order)) != CRYPT_OK) { goto done; } + if ((err = ltc_mp.ecc_ptmul(order, G, GG, modulus, 1)) != CRYPT_OK) { goto done; } + if (mp_cmp(G->x, GG->x) != LTC_MP_EQ || mp_cmp(G->y, GG->y) != LTC_MP_EQ) { + err = CRYPT_FAIL_TESTVECTOR; + goto done; + } + } + err = CRYPT_OK; +done: + ltc_ecc_del_point(GG); + ltc_ecc_del_point(G); + mp_clear_multi(order, modulus, NULL); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_verify_hash.c b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_verify_hash.c new file mode 100644 index 000000000..af1775878 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/ecc/ecc_verify_hash.c @@ -0,0 +1,200 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_MECC + +/** + @file ecc_verify_hash.c + ECC Crypto, Tom St Denis +*/ + +static int _ecc_verify_hash(const unsigned char *sig, unsigned long siglen, + const unsigned char *hash, unsigned long hashlen, + int *stat, ecc_key *key, int sigformat) +{ + ecc_point *mG, *mQ; + void *r, *s, *v, *w, *u1, *u2, *e, *p, *m; + void *mp; + int err; + unsigned long pbits, pbytes, i, shift_right; + unsigned char ch, buf[MAXBLOCKSIZE]; + + LTC_ARGCHK(sig != NULL); + LTC_ARGCHK(hash != NULL); + LTC_ARGCHK(stat != NULL); + LTC_ARGCHK(key != NULL); + + /* default to invalid signature */ + *stat = 0; + mp = NULL; + + /* is the IDX valid ? */ + if (ltc_ecc_is_valid_idx(key->idx) != 1) { + return CRYPT_PK_INVALID_TYPE; + } + + /* allocate ints */ + if ((err = mp_init_multi(&r, &s, &v, &w, &u1, &u2, &p, &e, &m, NULL)) != CRYPT_OK) { + return CRYPT_MEM; + } + + /* allocate points */ + mG = ltc_ecc_new_point(); + mQ = ltc_ecc_new_point(); + if (mQ == NULL || mG == NULL) { + err = CRYPT_MEM; + goto error; + } + + if (sigformat == 1) { + /* RFC7518 format */ + if ((siglen % 2) == 1) { + err = CRYPT_INVALID_PACKET; + goto error; + } + i = siglen / 2; + if ((err = mp_read_unsigned_bin(r, (unsigned char *)sig, i)) != CRYPT_OK) { goto error; } + if ((err = mp_read_unsigned_bin(s, (unsigned char *)sig+i, i)) != CRYPT_OK) { goto error; } + } + else { + /* ASN.1 format */ + if ((err = der_decode_sequence_multi(sig, siglen, + LTC_ASN1_INTEGER, 1UL, r, + LTC_ASN1_INTEGER, 1UL, s, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { goto error; } + } + + /* get the order */ + if ((err = mp_read_radix(p, (char *)key->dp->order, 16)) != CRYPT_OK) { goto error; } + + /* get the modulus */ + if ((err = mp_read_radix(m, (char *)key->dp->prime, 16)) != CRYPT_OK) { goto error; } + + /* check for zero */ + if (mp_iszero(r) || mp_iszero(s) || mp_cmp(r, p) != LTC_MP_LT || mp_cmp(s, p) != LTC_MP_LT) { + err = CRYPT_INVALID_PACKET; + goto error; + } + + /* read hash - truncate if needed */ + pbits = mp_count_bits(p); + pbytes = (pbits+7) >> 3; + if (pbits > hashlen*8) { + if ((err = mp_read_unsigned_bin(e, (unsigned char *)hash, hashlen)) != CRYPT_OK) { goto error; } + } + else if (pbits % 8 == 0) { + if ((err = mp_read_unsigned_bin(e, (unsigned char *)hash, pbytes)) != CRYPT_OK) { goto error; } + } + else { + shift_right = 8 - pbits % 8; + for (i=0, ch=0; i> shift_right); + } + if ((err = mp_read_unsigned_bin(e, (unsigned char *)buf, pbytes)) != CRYPT_OK) { goto error; } + } + + /* w = s^-1 mod n */ + if ((err = mp_invmod(s, p, w)) != CRYPT_OK) { goto error; } + + /* u1 = ew */ + if ((err = mp_mulmod(e, w, p, u1)) != CRYPT_OK) { goto error; } + + /* u2 = rw */ + if ((err = mp_mulmod(r, w, p, u2)) != CRYPT_OK) { goto error; } + + /* find mG and mQ */ + if ((err = mp_read_radix(mG->x, (char *)key->dp->Gx, 16)) != CRYPT_OK) { goto error; } + if ((err = mp_read_radix(mG->y, (char *)key->dp->Gy, 16)) != CRYPT_OK) { goto error; } + if ((err = mp_set(mG->z, 1)) != CRYPT_OK) { goto error; } + + if ((err = mp_copy(key->pubkey.x, mQ->x)) != CRYPT_OK) { goto error; } + if ((err = mp_copy(key->pubkey.y, mQ->y)) != CRYPT_OK) { goto error; } + if ((err = mp_copy(key->pubkey.z, mQ->z)) != CRYPT_OK) { goto error; } + + /* compute u1*mG + u2*mQ = mG */ + if (ltc_mp.ecc_mul2add == NULL) { + if ((err = ltc_mp.ecc_ptmul(u1, mG, mG, m, 0)) != CRYPT_OK) { goto error; } + if ((err = ltc_mp.ecc_ptmul(u2, mQ, mQ, m, 0)) != CRYPT_OK) { goto error; } + + /* find the montgomery mp */ + if ((err = mp_montgomery_setup(m, &mp)) != CRYPT_OK) { goto error; } + + /* add them */ + if ((err = ltc_mp.ecc_ptadd(mQ, mG, mG, m, mp)) != CRYPT_OK) { goto error; } + + /* reduce */ + if ((err = ltc_mp.ecc_map(mG, m, mp)) != CRYPT_OK) { goto error; } + } else { + /* use Shamir's trick to compute u1*mG + u2*mQ using half of the doubles */ + if ((err = ltc_mp.ecc_mul2add(mG, u1, mQ, u2, mG, m)) != CRYPT_OK) { goto error; } + } + + /* v = X_x1 mod n */ + if ((err = mp_mod(mG->x, p, v)) != CRYPT_OK) { goto error; } + + /* does v == r */ + if (mp_cmp(v, r) == LTC_MP_EQ) { + *stat = 1; + } + + /* clear up and return */ + err = CRYPT_OK; +error: + ltc_ecc_del_point(mG); + ltc_ecc_del_point(mQ); + mp_clear_multi(r, s, v, w, u1, u2, p, e, m, NULL); + if (mp != NULL) { + mp_montgomery_free(mp); + } + return err; +} + +/** + Verify an ECC signature + @param sig The signature to verify + @param siglen The length of the signature (octets) + @param hash The hash (message digest) that was signed + @param hashlen The length of the hash (octets) + @param stat Result of signature, 1==valid, 0==invalid + @param key The corresponding public ECC key + @return CRYPT_OK if successful (even if the signature is not valid) +*/ +int ecc_verify_hash(const unsigned char *sig, unsigned long siglen, + const unsigned char *hash, unsigned long hashlen, + int *stat, ecc_key *key) +{ + return _ecc_verify_hash(sig, siglen, hash, hashlen, stat, key, 0); +} + +/** + Verify an ECC signature in RFC7518 format + @param sig The signature to verify + @param siglen The length of the signature (octets) + @param hash The hash (message digest) that was signed + @param hashlen The length of the hash (octets) + @param stat Result of signature, 1==valid, 0==invalid + @param key The corresponding public ECC key + @return CRYPT_OK if successful (even if the signature is not valid) +*/ +int ecc_verify_hash_rfc7518(const unsigned char *sig, unsigned long siglen, + const unsigned char *hash, unsigned long hashlen, + int *stat, ecc_key *key) +{ + return _ecc_verify_hash(sig, siglen, hash, hashlen, stat, key, 1); +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/ecc/ltc_ecc_is_valid_idx.c b/fsbl/lib/libtomcrypt/src/pk/ecc/ltc_ecc_is_valid_idx.c new file mode 100644 index 000000000..057a89943 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/ecc/ltc_ecc_is_valid_idx.c @@ -0,0 +1,44 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b + * + * All curves taken from NIST recommendation paper of July 1999 + * Available at http://csrc.nist.gov/cryptval/dss.htm + */ +#include "tomcrypt.h" + +/** + @file ltc_ecc_is_valid_idx.c + ECC Crypto, Tom St Denis +*/ + +#ifdef LTC_MECC + +/** Returns whether an ECC idx is valid or not + @param n The idx number to check + @return 1 if valid, 0 if not +*/ +int ltc_ecc_is_valid_idx(int n) +{ + int x; + + for (x = 0; ltc_ecc_sets[x].size != 0; x++); + /* -1 is a valid index --- indicating that the domain params were supplied by the user */ + if ((n >= -1) && (n < x)) { + return 1; + } + return 0; +} + +#endif +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/pk/ecc/ltc_ecc_map.c b/fsbl/lib/libtomcrypt/src/pk/ecc/ltc_ecc_map.c new file mode 100644 index 000000000..c745f299c --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/ecc/ltc_ecc_map.c @@ -0,0 +1,74 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b + * + * All curves taken from NIST recommendation paper of July 1999 + * Available at http://csrc.nist.gov/cryptval/dss.htm + */ +#include "tomcrypt.h" + +/** + @file ltc_ecc_map.c + ECC Crypto, Tom St Denis +*/ + +#ifdef LTC_MECC + +/** + Map a projective jacbobian point back to affine space + @param P [in/out] The point to map + @param modulus The modulus of the field the ECC curve is in + @param mp The "b" value from montgomery_setup() + @return CRYPT_OK on success +*/ +int ltc_ecc_map(ecc_point *P, void *modulus, void *mp) +{ + void *t1, *t2; + int err; + + LTC_ARGCHK(P != NULL); + LTC_ARGCHK(modulus != NULL); + LTC_ARGCHK(mp != NULL); + + if ((err = mp_init_multi(&t1, &t2, NULL)) != CRYPT_OK) { + return err; + } + + /* first map z back to normal */ + if ((err = mp_montgomery_reduce(P->z, modulus, mp)) != CRYPT_OK) { goto done; } + + /* get 1/z */ + if ((err = mp_invmod(P->z, modulus, t1)) != CRYPT_OK) { goto done; } + + /* get 1/z^2 and 1/z^3 */ + if ((err = mp_sqr(t1, t2)) != CRYPT_OK) { goto done; } + if ((err = mp_mod(t2, modulus, t2)) != CRYPT_OK) { goto done; } + if ((err = mp_mul(t1, t2, t1)) != CRYPT_OK) { goto done; } + if ((err = mp_mod(t1, modulus, t1)) != CRYPT_OK) { goto done; } + + /* multiply against x/y */ + if ((err = mp_mul(P->x, t2, P->x)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(P->x, modulus, mp)) != CRYPT_OK) { goto done; } + if ((err = mp_mul(P->y, t1, P->y)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(P->y, modulus, mp)) != CRYPT_OK) { goto done; } + if ((err = mp_set(P->z, 1)) != CRYPT_OK) { goto done; } + + err = CRYPT_OK; +done: + mp_clear_multi(t1, t2, NULL); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/pk/ecc/ltc_ecc_mul2add.c b/fsbl/lib/libtomcrypt/src/pk/ecc/ltc_ecc_mul2add.c new file mode 100644 index 000000000..cef184469 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/ecc/ltc_ecc_mul2add.c @@ -0,0 +1,206 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b + * + * All curves taken from NIST recommendation paper of July 1999 + * Available at http://csrc.nist.gov/cryptval/dss.htm + */ +#include "tomcrypt.h" + +/** + @file ltc_ecc_mul2add.c + ECC Crypto, Shamir's Trick, Tom St Denis +*/ + +#ifdef LTC_MECC + +#ifdef LTC_ECC_SHAMIR + +/** Computes kA*A + kB*B = C using Shamir's Trick + @param A First point to multiply + @param kA What to multiple A by + @param B Second point to multiply + @param kB What to multiple B by + @param C [out] Destination point (can overlap with A or B + @param modulus Modulus for curve + @return CRYPT_OK on success +*/ +int ltc_ecc_mul2add(ecc_point *A, void *kA, + ecc_point *B, void *kB, + ecc_point *C, + void *modulus) +{ + ecc_point *precomp[16]; + unsigned bitbufA, bitbufB, lenA, lenB, len, x, y, nA, nB, nibble; + unsigned char *tA, *tB; + int err, first; + void *mp, *mu; + + /* argchks */ + LTC_ARGCHK(A != NULL); + LTC_ARGCHK(B != NULL); + LTC_ARGCHK(C != NULL); + LTC_ARGCHK(kA != NULL); + LTC_ARGCHK(kB != NULL); + LTC_ARGCHK(modulus != NULL); + + /* allocate memory */ + tA = XCALLOC(1, ECC_BUF_SIZE); + if (tA == NULL) { + return CRYPT_MEM; + } + tB = XCALLOC(1, ECC_BUF_SIZE); + if (tB == NULL) { + XFREE(tA); + return CRYPT_MEM; + } + + /* get sizes */ + lenA = mp_unsigned_bin_size(kA); + lenB = mp_unsigned_bin_size(kB); + len = MAX(lenA, lenB); + + /* sanity check */ + if ((lenA > ECC_BUF_SIZE) || (lenB > ECC_BUF_SIZE)) { + err = CRYPT_INVALID_ARG; + goto ERR_T; + } + + /* extract and justify kA */ + mp_to_unsigned_bin(kA, (len - lenA) + tA); + + /* extract and justify kB */ + mp_to_unsigned_bin(kB, (len - lenB) + tB); + + /* allocate the table */ + for (x = 0; x < 16; x++) { + precomp[x] = ltc_ecc_new_point(); + if (precomp[x] == NULL) { + for (y = 0; y < x; ++y) { + ltc_ecc_del_point(precomp[y]); + } + err = CRYPT_MEM; + goto ERR_T; + } + } + + /* init montgomery reduction */ + if ((err = mp_montgomery_setup(modulus, &mp)) != CRYPT_OK) { + goto ERR_P; + } + if ((err = mp_init(&mu)) != CRYPT_OK) { + goto ERR_MP; + } + if ((err = mp_montgomery_normalization(mu, modulus)) != CRYPT_OK) { + goto ERR_MU; + } + + /* copy ones ... */ + if ((err = mp_mulmod(A->x, mu, modulus, precomp[1]->x)) != CRYPT_OK) { goto ERR_MU; } + if ((err = mp_mulmod(A->y, mu, modulus, precomp[1]->y)) != CRYPT_OK) { goto ERR_MU; } + if ((err = mp_mulmod(A->z, mu, modulus, precomp[1]->z)) != CRYPT_OK) { goto ERR_MU; } + + if ((err = mp_mulmod(B->x, mu, modulus, precomp[1<<2]->x)) != CRYPT_OK) { goto ERR_MU; } + if ((err = mp_mulmod(B->y, mu, modulus, precomp[1<<2]->y)) != CRYPT_OK) { goto ERR_MU; } + if ((err = mp_mulmod(B->z, mu, modulus, precomp[1<<2]->z)) != CRYPT_OK) { goto ERR_MU; } + + /* precomp [i,0](A + B) table */ + if ((err = ltc_mp.ecc_ptdbl(precomp[1], precomp[2], modulus, mp)) != CRYPT_OK) { goto ERR_MU; } + if ((err = ltc_mp.ecc_ptadd(precomp[1], precomp[2], precomp[3], modulus, mp)) != CRYPT_OK) { goto ERR_MU; } + + /* precomp [0,i](A + B) table */ + if ((err = ltc_mp.ecc_ptdbl(precomp[1<<2], precomp[2<<2], modulus, mp)) != CRYPT_OK) { goto ERR_MU; } + if ((err = ltc_mp.ecc_ptadd(precomp[1<<2], precomp[2<<2], precomp[3<<2], modulus, mp)) != CRYPT_OK) { goto ERR_MU; } + + /* precomp [i,j](A + B) table (i != 0, j != 0) */ + for (x = 1; x < 4; x++) { + for (y = 1; y < 4; y++) { + if ((err = ltc_mp.ecc_ptadd(precomp[x], precomp[(y<<2)], precomp[x+(y<<2)], modulus, mp)) != CRYPT_OK) { goto ERR_MU; } + } + } + + nibble = 3; + first = 1; + bitbufA = tA[0]; + bitbufB = tB[0]; + + /* for every byte of the multiplicands */ + for (x = 0;; ) { + /* grab a nibble */ + if (++nibble == 4) { + if (x == len) break; + bitbufA = tA[x]; + bitbufB = tB[x]; + nibble = 0; + ++x; + } + + /* extract two bits from both, shift/update */ + nA = (bitbufA >> 6) & 0x03; + nB = (bitbufB >> 6) & 0x03; + bitbufA = (bitbufA << 2) & 0xFF; + bitbufB = (bitbufB << 2) & 0xFF; + + /* if both zero, if first, continue */ + if ((nA == 0) && (nB == 0) && (first == 1)) { + continue; + } + + /* double twice, only if this isn't the first */ + if (first == 0) { + /* double twice */ + if ((err = ltc_mp.ecc_ptdbl(C, C, modulus, mp)) != CRYPT_OK) { goto ERR_MU; } + if ((err = ltc_mp.ecc_ptdbl(C, C, modulus, mp)) != CRYPT_OK) { goto ERR_MU; } + } + + /* if not both zero */ + if ((nA != 0) || (nB != 0)) { + if (first == 1) { + /* if first, copy from table */ + first = 0; + if ((err = mp_copy(precomp[nA + (nB<<2)]->x, C->x)) != CRYPT_OK) { goto ERR_MU; } + if ((err = mp_copy(precomp[nA + (nB<<2)]->y, C->y)) != CRYPT_OK) { goto ERR_MU; } + if ((err = mp_copy(precomp[nA + (nB<<2)]->z, C->z)) != CRYPT_OK) { goto ERR_MU; } + } else { + /* if not first, add from table */ + if ((err = ltc_mp.ecc_ptadd(C, precomp[nA + (nB<<2)], C, modulus, mp)) != CRYPT_OK) { goto ERR_MU; } + } + } + } + + /* reduce to affine */ + err = ltc_ecc_map(C, modulus, mp); + + /* clean up */ +ERR_MU: + mp_clear(mu); +ERR_MP: + mp_montgomery_free(mp); +ERR_P: + for (x = 0; x < 16; x++) { + ltc_ecc_del_point(precomp[x]); + } +ERR_T: +#ifdef LTC_CLEAN_STACK + zeromem(tA, ECC_BUF_SIZE); + zeromem(tB, ECC_BUF_SIZE); +#endif + XFREE(tA); + XFREE(tB); + + return err; +} + +#endif +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/ecc/ltc_ecc_mulmod.c b/fsbl/lib/libtomcrypt/src/pk/ecc/ltc_ecc_mulmod.c new file mode 100644 index 000000000..583486560 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/ecc/ltc_ecc_mulmod.c @@ -0,0 +1,220 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b + * + * All curves taken from NIST recommendation paper of July 1999 + * Available at http://csrc.nist.gov/cryptval/dss.htm + */ +#include "tomcrypt.h" + +/** + @file ltc_ecc_mulmod.c + ECC Crypto, Tom St Denis +*/ + +#ifdef LTC_MECC +#ifndef LTC_ECC_TIMING_RESISTANT + +/* size of sliding window, don't change this! */ +#define WINSIZE 4 + +/** + Perform a point multiplication + @param k The scalar to multiply by + @param G The base point + @param R [out] Destination for kG + @param modulus The modulus of the field the ECC curve is in + @param map Boolean whether to map back to affine or not (1==map, 0 == leave in projective) + @return CRYPT_OK on success +*/ +int ltc_ecc_mulmod(void *k, ecc_point *G, ecc_point *R, void *modulus, int map) +{ + ecc_point *tG, *M[8]; + int i, j, err; + void *mu, *mp; + ltc_mp_digit buf; + int first, bitbuf, bitcpy, bitcnt, mode, digidx; + + LTC_ARGCHK(k != NULL); + LTC_ARGCHK(G != NULL); + LTC_ARGCHK(R != NULL); + LTC_ARGCHK(modulus != NULL); + + /* init montgomery reduction */ + if ((err = mp_montgomery_setup(modulus, &mp)) != CRYPT_OK) { + return err; + } + if ((err = mp_init(&mu)) != CRYPT_OK) { + mp_montgomery_free(mp); + return err; + } + if ((err = mp_montgomery_normalization(mu, modulus)) != CRYPT_OK) { + mp_montgomery_free(mp); + mp_clear(mu); + return err; + } + + /* alloc ram for window temps */ + for (i = 0; i < 8; i++) { + M[i] = ltc_ecc_new_point(); + if (M[i] == NULL) { + for (j = 0; j < i; j++) { + ltc_ecc_del_point(M[j]); + } + mp_montgomery_free(mp); + mp_clear(mu); + return CRYPT_MEM; + } + } + + /* make a copy of G incase R==G */ + tG = ltc_ecc_new_point(); + if (tG == NULL) { err = CRYPT_MEM; goto done; } + + /* tG = G and convert to montgomery */ + if (mp_cmp_d(mu, 1) == LTC_MP_EQ) { + if ((err = mp_copy(G->x, tG->x)) != CRYPT_OK) { goto done; } + if ((err = mp_copy(G->y, tG->y)) != CRYPT_OK) { goto done; } + if ((err = mp_copy(G->z, tG->z)) != CRYPT_OK) { goto done; } + } else { + if ((err = mp_mulmod(G->x, mu, modulus, tG->x)) != CRYPT_OK) { goto done; } + if ((err = mp_mulmod(G->y, mu, modulus, tG->y)) != CRYPT_OK) { goto done; } + if ((err = mp_mulmod(G->z, mu, modulus, tG->z)) != CRYPT_OK) { goto done; } + } + mp_clear(mu); + mu = NULL; + + /* calc the M tab, which holds kG for k==8..15 */ + /* M[0] == 8G */ + if ((err = ltc_mp.ecc_ptdbl(tG, M[0], modulus, mp)) != CRYPT_OK) { goto done; } + if ((err = ltc_mp.ecc_ptdbl(M[0], M[0], modulus, mp)) != CRYPT_OK) { goto done; } + if ((err = ltc_mp.ecc_ptdbl(M[0], M[0], modulus, mp)) != CRYPT_OK) { goto done; } + + /* now find (8+k)G for k=1..7 */ + for (j = 9; j < 16; j++) { + if ((err = ltc_mp.ecc_ptadd(M[j-9], tG, M[j-8], modulus, mp)) != CRYPT_OK) { goto done; } + } + + /* setup sliding window */ + mode = 0; + bitcnt = 1; + buf = 0; + digidx = mp_get_digit_count(k) - 1; + bitcpy = bitbuf = 0; + first = 1; + + /* perform ops */ + for (;;) { + /* grab next digit as required */ + if (--bitcnt == 0) { + if (digidx == -1) { + break; + } + buf = mp_get_digit(k, digidx); + bitcnt = (int) ltc_mp.bits_per_digit; + --digidx; + } + + /* grab the next msb from the ltiplicand */ + i = (buf >> (ltc_mp.bits_per_digit - 1)) & 1; + buf <<= 1; + + /* skip leading zero bits */ + if (mode == 0 && i == 0) { + continue; + } + + /* if the bit is zero and mode == 1 then we double */ + if (mode == 1 && i == 0) { + if ((err = ltc_mp.ecc_ptdbl(R, R, modulus, mp)) != CRYPT_OK) { goto done; } + continue; + } + + /* else we add it to the window */ + bitbuf |= (i << (WINSIZE - ++bitcpy)); + mode = 2; + + if (bitcpy == WINSIZE) { + /* if this is the first window we do a simple copy */ + if (first == 1) { + /* R = kG [k = first window] */ + if ((err = mp_copy(M[bitbuf-8]->x, R->x)) != CRYPT_OK) { goto done; } + if ((err = mp_copy(M[bitbuf-8]->y, R->y)) != CRYPT_OK) { goto done; } + if ((err = mp_copy(M[bitbuf-8]->z, R->z)) != CRYPT_OK) { goto done; } + first = 0; + } else { + /* normal window */ + /* ok window is filled so double as required and add */ + /* double first */ + for (j = 0; j < WINSIZE; j++) { + if ((err = ltc_mp.ecc_ptdbl(R, R, modulus, mp)) != CRYPT_OK) { goto done; } + } + + /* then add, bitbuf will be 8..15 [8..2^WINSIZE] guaranteed */ + if ((err = ltc_mp.ecc_ptadd(R, M[bitbuf-8], R, modulus, mp)) != CRYPT_OK) { goto done; } + } + /* empty window and reset */ + bitcpy = bitbuf = 0; + mode = 1; + } + } + + /* if bits remain then double/add */ + if (mode == 2 && bitcpy > 0) { + /* double then add */ + for (j = 0; j < bitcpy; j++) { + /* only double if we have had at least one add first */ + if (first == 0) { + if ((err = ltc_mp.ecc_ptdbl(R, R, modulus, mp)) != CRYPT_OK) { goto done; } + } + + bitbuf <<= 1; + if ((bitbuf & (1 << WINSIZE)) != 0) { + if (first == 1){ + /* first add, so copy */ + if ((err = mp_copy(tG->x, R->x)) != CRYPT_OK) { goto done; } + if ((err = mp_copy(tG->y, R->y)) != CRYPT_OK) { goto done; } + if ((err = mp_copy(tG->z, R->z)) != CRYPT_OK) { goto done; } + first = 0; + } else { + /* then add */ + if ((err = ltc_mp.ecc_ptadd(R, tG, R, modulus, mp)) != CRYPT_OK) { goto done; } + } + } + } + } + + /* map R back from projective space */ + if (map) { + err = ltc_ecc_map(R, modulus, mp); + } else { + err = CRYPT_OK; + } +done: + if (mu != NULL) { + mp_clear(mu); + } + mp_montgomery_free(mp); + ltc_ecc_del_point(tG); + for (i = 0; i < 8; i++) { + ltc_ecc_del_point(M[i]); + } + return err; +} + +#endif + +#undef WINSIZE + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/ecc/ltc_ecc_mulmod_timing.c b/fsbl/lib/libtomcrypt/src/pk/ecc/ltc_ecc_mulmod_timing.c new file mode 100644 index 000000000..ab26ede24 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/ecc/ltc_ecc_mulmod_timing.c @@ -0,0 +1,163 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b + * + * All curves taken from NIST recommendation paper of July 1999 + * Available at http://csrc.nist.gov/cryptval/dss.htm + */ +#include "tomcrypt.h" + +/** + @file ltc_ecc_mulmod_timing.c + ECC Crypto, Tom St Denis +*/ + +#ifdef LTC_MECC + +#ifdef LTC_ECC_TIMING_RESISTANT + +/** + Perform a point multiplication (timing resistant) + @param k The scalar to multiply by + @param G The base point + @param R [out] Destination for kG + @param modulus The modulus of the field the ECC curve is in + @param map Boolean whether to map back to affine or not (1==map, 0 == leave in projective) + @return CRYPT_OK on success +*/ +int ltc_ecc_mulmod(void *k, ecc_point *G, ecc_point *R, void *modulus, int map) +{ + ecc_point *tG, *M[3]; + int i, j, err; + void *mu, *mp; + ltc_mp_digit buf; + int bitcnt, mode, digidx; + + LTC_ARGCHK(k != NULL); + LTC_ARGCHK(G != NULL); + LTC_ARGCHK(R != NULL); + LTC_ARGCHK(modulus != NULL); + + /* init montgomery reduction */ + if ((err = mp_montgomery_setup(modulus, &mp)) != CRYPT_OK) { + return err; + } + if ((err = mp_init(&mu)) != CRYPT_OK) { + mp_montgomery_free(mp); + return err; + } + if ((err = mp_montgomery_normalization(mu, modulus)) != CRYPT_OK) { + mp_clear(mu); + mp_montgomery_free(mp); + return err; + } + + /* alloc ram for window temps */ + for (i = 0; i < 3; i++) { + M[i] = ltc_ecc_new_point(); + if (M[i] == NULL) { + for (j = 0; j < i; j++) { + ltc_ecc_del_point(M[j]); + } + mp_clear(mu); + mp_montgomery_free(mp); + return CRYPT_MEM; + } + } + + /* make a copy of G incase R==G */ + tG = ltc_ecc_new_point(); + if (tG == NULL) { err = CRYPT_MEM; goto done; } + + /* tG = G and convert to montgomery */ + if ((err = mp_mulmod(G->x, mu, modulus, tG->x)) != CRYPT_OK) { goto done; } + if ((err = mp_mulmod(G->y, mu, modulus, tG->y)) != CRYPT_OK) { goto done; } + if ((err = mp_mulmod(G->z, mu, modulus, tG->z)) != CRYPT_OK) { goto done; } + mp_clear(mu); + mu = NULL; + + /* calc the M tab */ + /* M[0] == G */ + if ((err = mp_copy(tG->x, M[0]->x)) != CRYPT_OK) { goto done; } + if ((err = mp_copy(tG->y, M[0]->y)) != CRYPT_OK) { goto done; } + if ((err = mp_copy(tG->z, M[0]->z)) != CRYPT_OK) { goto done; } + /* M[1] == 2G */ + if ((err = ltc_mp.ecc_ptdbl(tG, M[1], modulus, mp)) != CRYPT_OK) { goto done; } + + /* setup sliding window */ + mode = 0; + bitcnt = 1; + buf = 0; + digidx = mp_get_digit_count(k) - 1; + + /* perform ops */ + for (;;) { + /* grab next digit as required */ + if (--bitcnt == 0) { + if (digidx == -1) { + break; + } + buf = mp_get_digit(k, digidx); + bitcnt = (int) MP_DIGIT_BIT; + --digidx; + } + + /* grab the next msb from the ltiplicand */ + i = (buf >> (MP_DIGIT_BIT - 1)) & 1; + buf <<= 1; + + if (mode == 0 && i == 0) { + /* dummy operations */ + if ((err = ltc_mp.ecc_ptadd(M[0], M[1], M[2], modulus, mp)) != CRYPT_OK) { goto done; } + if ((err = ltc_mp.ecc_ptdbl(M[1], M[2], modulus, mp)) != CRYPT_OK) { goto done; } + continue; + } + + if (mode == 0 && i == 1) { + mode = 1; + /* dummy operations */ + if ((err = ltc_mp.ecc_ptadd(M[0], M[1], M[2], modulus, mp)) != CRYPT_OK) { goto done; } + if ((err = ltc_mp.ecc_ptdbl(M[1], M[2], modulus, mp)) != CRYPT_OK) { goto done; } + continue; + } + + if ((err = ltc_mp.ecc_ptadd(M[0], M[1], M[i^1], modulus, mp)) != CRYPT_OK) { goto done; } + if ((err = ltc_mp.ecc_ptdbl(M[i], M[i], modulus, mp)) != CRYPT_OK) { goto done; } + } + + /* copy result out */ + if ((err = mp_copy(M[0]->x, R->x)) != CRYPT_OK) { goto done; } + if ((err = mp_copy(M[0]->y, R->y)) != CRYPT_OK) { goto done; } + if ((err = mp_copy(M[0]->z, R->z)) != CRYPT_OK) { goto done; } + + /* map R back from projective space */ + if (map) { + err = ltc_ecc_map(R, modulus, mp); + } else { + err = CRYPT_OK; + } +done: + if (mu != NULL) { + mp_clear(mu); + } + mp_montgomery_free(mp); + ltc_ecc_del_point(tG); + for (i = 0; i < 3; i++) { + ltc_ecc_del_point(M[i]); + } + return err; +} + +#endif +#endif +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/pk/ecc/ltc_ecc_points.c b/fsbl/lib/libtomcrypt/src/pk/ecc/ltc_ecc_points.c new file mode 100644 index 000000000..a63bdb507 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/ecc/ltc_ecc_points.c @@ -0,0 +1,58 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b + * + * All curves taken from NIST recommendation paper of July 1999 + * Available at http://csrc.nist.gov/cryptval/dss.htm + */ +#include "tomcrypt.h" + +/** + @file ltc_ecc_points.c + ECC Crypto, Tom St Denis +*/ + +#ifdef LTC_MECC + +/** + Allocate a new ECC point + @return A newly allocated point or NULL on error +*/ +ecc_point *ltc_ecc_new_point(void) +{ + ecc_point *p; + p = XCALLOC(1, sizeof(*p)); + if (p == NULL) { + return NULL; + } + if (mp_init_multi(&p->x, &p->y, &p->z, NULL) != CRYPT_OK) { + XFREE(p); + return NULL; + } + return p; +} + +/** Free an ECC point from memory + @param p The point to free +*/ +void ltc_ecc_del_point(ecc_point *p) +{ + /* prevents free'ing null arguments */ + if (p != NULL) { + mp_clear_multi(p->x, p->y, p->z, NULL); /* note: p->z may be NULL but that's ok with this function anyways */ + XFREE(p); + } +} + +#endif +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/pk/ecc/ltc_ecc_projective_add_point.c b/fsbl/lib/libtomcrypt/src/pk/ecc/ltc_ecc_projective_add_point.c new file mode 100644 index 000000000..9e22e108e --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/ecc/ltc_ecc_projective_add_point.c @@ -0,0 +1,194 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b + * + * All curves taken from NIST recommendation paper of July 1999 + * Available at http://csrc.nist.gov/cryptval/dss.htm + */ +#include "tomcrypt.h" + +/** + @file ltc_ecc_projective_add_point.c + ECC Crypto, Tom St Denis +*/ + +#if defined(LTC_MECC) && (!defined(LTC_MECC_ACCEL) || defined(LTM_DESC)) + +/** + Add two ECC points + @param P The point to add + @param Q The point to add + @param R [out] The destination of the double + @param modulus The modulus of the field the ECC curve is in + @param mp The "b" value from montgomery_setup() + @return CRYPT_OK on success +*/ +int ltc_ecc_projective_add_point(ecc_point *P, ecc_point *Q, ecc_point *R, void *modulus, void *mp) +{ + void *t1, *t2, *x, *y, *z; + int err; + + LTC_ARGCHK(P != NULL); + LTC_ARGCHK(Q != NULL); + LTC_ARGCHK(R != NULL); + LTC_ARGCHK(modulus != NULL); + LTC_ARGCHK(mp != NULL); + + if ((err = mp_init_multi(&t1, &t2, &x, &y, &z, NULL)) != CRYPT_OK) { + return err; + } + + /* should we dbl instead? */ + if ((err = mp_sub(modulus, Q->y, t1)) != CRYPT_OK) { goto done; } + + if ( (mp_cmp(P->x, Q->x) == LTC_MP_EQ) && + (Q->z != NULL && mp_cmp(P->z, Q->z) == LTC_MP_EQ) && + (mp_cmp(P->y, Q->y) == LTC_MP_EQ || mp_cmp(P->y, t1) == LTC_MP_EQ)) { + mp_clear_multi(t1, t2, x, y, z, NULL); + return ltc_ecc_projective_dbl_point(P, R, modulus, mp); + } + + if ((err = mp_copy(P->x, x)) != CRYPT_OK) { goto done; } + if ((err = mp_copy(P->y, y)) != CRYPT_OK) { goto done; } + if ((err = mp_copy(P->z, z)) != CRYPT_OK) { goto done; } + + /* if Z is one then these are no-operations */ + if (Q->z != NULL) { + /* T1 = Z' * Z' */ + if ((err = mp_sqr(Q->z, t1)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(t1, modulus, mp)) != CRYPT_OK) { goto done; } + /* X = X * T1 */ + if ((err = mp_mul(t1, x, x)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(x, modulus, mp)) != CRYPT_OK) { goto done; } + /* T1 = Z' * T1 */ + if ((err = mp_mul(Q->z, t1, t1)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(t1, modulus, mp)) != CRYPT_OK) { goto done; } + /* Y = Y * T1 */ + if ((err = mp_mul(t1, y, y)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(y, modulus, mp)) != CRYPT_OK) { goto done; } + } + + /* T1 = Z*Z */ + if ((err = mp_sqr(z, t1)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(t1, modulus, mp)) != CRYPT_OK) { goto done; } + /* T2 = X' * T1 */ + if ((err = mp_mul(Q->x, t1, t2)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(t2, modulus, mp)) != CRYPT_OK) { goto done; } + /* T1 = Z * T1 */ + if ((err = mp_mul(z, t1, t1)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(t1, modulus, mp)) != CRYPT_OK) { goto done; } + /* T1 = Y' * T1 */ + if ((err = mp_mul(Q->y, t1, t1)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(t1, modulus, mp)) != CRYPT_OK) { goto done; } + + /* Y = Y - T1 */ + if ((err = mp_sub(y, t1, y)) != CRYPT_OK) { goto done; } + if (mp_cmp_d(y, 0) == LTC_MP_LT) { + if ((err = mp_add(y, modulus, y)) != CRYPT_OK) { goto done; } + } + /* T1 = 2T1 */ + if ((err = mp_add(t1, t1, t1)) != CRYPT_OK) { goto done; } + if (mp_cmp(t1, modulus) != LTC_MP_LT) { + if ((err = mp_sub(t1, modulus, t1)) != CRYPT_OK) { goto done; } + } + /* T1 = Y + T1 */ + if ((err = mp_add(t1, y, t1)) != CRYPT_OK) { goto done; } + if (mp_cmp(t1, modulus) != LTC_MP_LT) { + if ((err = mp_sub(t1, modulus, t1)) != CRYPT_OK) { goto done; } + } + /* X = X - T2 */ + if ((err = mp_sub(x, t2, x)) != CRYPT_OK) { goto done; } + if (mp_cmp_d(x, 0) == LTC_MP_LT) { + if ((err = mp_add(x, modulus, x)) != CRYPT_OK) { goto done; } + } + /* T2 = 2T2 */ + if ((err = mp_add(t2, t2, t2)) != CRYPT_OK) { goto done; } + if (mp_cmp(t2, modulus) != LTC_MP_LT) { + if ((err = mp_sub(t2, modulus, t2)) != CRYPT_OK) { goto done; } + } + /* T2 = X + T2 */ + if ((err = mp_add(t2, x, t2)) != CRYPT_OK) { goto done; } + if (mp_cmp(t2, modulus) != LTC_MP_LT) { + if ((err = mp_sub(t2, modulus, t2)) != CRYPT_OK) { goto done; } + } + + /* if Z' != 1 */ + if (Q->z != NULL) { + /* Z = Z * Z' */ + if ((err = mp_mul(z, Q->z, z)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(z, modulus, mp)) != CRYPT_OK) { goto done; } + } + + /* Z = Z * X */ + if ((err = mp_mul(z, x, z)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(z, modulus, mp)) != CRYPT_OK) { goto done; } + + /* T1 = T1 * X */ + if ((err = mp_mul(t1, x, t1)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(t1, modulus, mp)) != CRYPT_OK) { goto done; } + /* X = X * X */ + if ((err = mp_sqr(x, x)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(x, modulus, mp)) != CRYPT_OK) { goto done; } + /* T2 = T2 * x */ + if ((err = mp_mul(t2, x, t2)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(t2, modulus, mp)) != CRYPT_OK) { goto done; } + /* T1 = T1 * X */ + if ((err = mp_mul(t1, x, t1)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(t1, modulus, mp)) != CRYPT_OK) { goto done; } + + /* X = Y*Y */ + if ((err = mp_sqr(y, x)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(x, modulus, mp)) != CRYPT_OK) { goto done; } + /* X = X - T2 */ + if ((err = mp_sub(x, t2, x)) != CRYPT_OK) { goto done; } + if (mp_cmp_d(x, 0) == LTC_MP_LT) { + if ((err = mp_add(x, modulus, x)) != CRYPT_OK) { goto done; } + } + + /* T2 = T2 - X */ + if ((err = mp_sub(t2, x, t2)) != CRYPT_OK) { goto done; } + if (mp_cmp_d(t2, 0) == LTC_MP_LT) { + if ((err = mp_add(t2, modulus, t2)) != CRYPT_OK) { goto done; } + } + /* T2 = T2 - X */ + if ((err = mp_sub(t2, x, t2)) != CRYPT_OK) { goto done; } + if (mp_cmp_d(t2, 0) == LTC_MP_LT) { + if ((err = mp_add(t2, modulus, t2)) != CRYPT_OK) { goto done; } + } + /* T2 = T2 * Y */ + if ((err = mp_mul(t2, y, t2)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(t2, modulus, mp)) != CRYPT_OK) { goto done; } + /* Y = T2 - T1 */ + if ((err = mp_sub(t2, t1, y)) != CRYPT_OK) { goto done; } + if (mp_cmp_d(y, 0) == LTC_MP_LT) { + if ((err = mp_add(y, modulus, y)) != CRYPT_OK) { goto done; } + } + /* Y = Y/2 */ + if (mp_isodd(y)) { + if ((err = mp_add(y, modulus, y)) != CRYPT_OK) { goto done; } + } + if ((err = mp_div_2(y, y)) != CRYPT_OK) { goto done; } + + if ((err = mp_copy(x, R->x)) != CRYPT_OK) { goto done; } + if ((err = mp_copy(y, R->y)) != CRYPT_OK) { goto done; } + if ((err = mp_copy(z, R->z)) != CRYPT_OK) { goto done; } + + err = CRYPT_OK; +done: + mp_clear_multi(t1, t2, x, y, z, NULL); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/pk/ecc/ltc_ecc_projective_dbl_point.c b/fsbl/lib/libtomcrypt/src/pk/ecc/ltc_ecc_projective_dbl_point.c new file mode 100644 index 000000000..0c6b99605 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/ecc/ltc_ecc_projective_dbl_point.c @@ -0,0 +1,145 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* Implements ECC over Z/pZ for curve y^2 = x^3 - 3x + b + * + * All curves taken from NIST recommendation paper of July 1999 + * Available at http://csrc.nist.gov/cryptval/dss.htm + */ +#include "tomcrypt.h" + +/** + @file ltc_ecc_projective_dbl_point.c + ECC Crypto, Tom St Denis +*/ + +#if defined(LTC_MECC) && (!defined(LTC_MECC_ACCEL) || defined(LTM_DESC)) + +/** + Double an ECC point + @param P The point to double + @param R [out] The destination of the double + @param modulus The modulus of the field the ECC curve is in + @param mp The "b" value from montgomery_setup() + @return CRYPT_OK on success +*/ +int ltc_ecc_projective_dbl_point(ecc_point *P, ecc_point *R, void *modulus, void *mp) +{ + void *t1, *t2; + int err; + + LTC_ARGCHK(P != NULL); + LTC_ARGCHK(R != NULL); + LTC_ARGCHK(modulus != NULL); + LTC_ARGCHK(mp != NULL); + + if ((err = mp_init_multi(&t1, &t2, NULL)) != CRYPT_OK) { + return err; + } + + if (P != R) { + if ((err = mp_copy(P->x, R->x)) != CRYPT_OK) { goto done; } + if ((err = mp_copy(P->y, R->y)) != CRYPT_OK) { goto done; } + if ((err = mp_copy(P->z, R->z)) != CRYPT_OK) { goto done; } + } + + /* t1 = Z * Z */ + if ((err = mp_sqr(R->z, t1)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(t1, modulus, mp)) != CRYPT_OK) { goto done; } + /* Z = Y * Z */ + if ((err = mp_mul(R->z, R->y, R->z)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(R->z, modulus, mp)) != CRYPT_OK) { goto done; } + /* Z = 2Z */ + if ((err = mp_add(R->z, R->z, R->z)) != CRYPT_OK) { goto done; } + if (mp_cmp(R->z, modulus) != LTC_MP_LT) { + if ((err = mp_sub(R->z, modulus, R->z)) != CRYPT_OK) { goto done; } + } + + /* T2 = X - T1 */ + if ((err = mp_sub(R->x, t1, t2)) != CRYPT_OK) { goto done; } + if (mp_cmp_d(t2, 0) == LTC_MP_LT) { + if ((err = mp_add(t2, modulus, t2)) != CRYPT_OK) { goto done; } + } + /* T1 = X + T1 */ + if ((err = mp_add(t1, R->x, t1)) != CRYPT_OK) { goto done; } + if (mp_cmp(t1, modulus) != LTC_MP_LT) { + if ((err = mp_sub(t1, modulus, t1)) != CRYPT_OK) { goto done; } + } + /* T2 = T1 * T2 */ + if ((err = mp_mul(t1, t2, t2)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(t2, modulus, mp)) != CRYPT_OK) { goto done; } + /* T1 = 2T2 */ + if ((err = mp_add(t2, t2, t1)) != CRYPT_OK) { goto done; } + if (mp_cmp(t1, modulus) != LTC_MP_LT) { + if ((err = mp_sub(t1, modulus, t1)) != CRYPT_OK) { goto done; } + } + /* T1 = T1 + T2 */ + if ((err = mp_add(t1, t2, t1)) != CRYPT_OK) { goto done; } + if (mp_cmp(t1, modulus) != LTC_MP_LT) { + if ((err = mp_sub(t1, modulus, t1)) != CRYPT_OK) { goto done; } + } + + /* Y = 2Y */ + if ((err = mp_add(R->y, R->y, R->y)) != CRYPT_OK) { goto done; } + if (mp_cmp(R->y, modulus) != LTC_MP_LT) { + if ((err = mp_sub(R->y, modulus, R->y)) != CRYPT_OK) { goto done; } + } + /* Y = Y * Y */ + if ((err = mp_sqr(R->y, R->y)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(R->y, modulus, mp)) != CRYPT_OK) { goto done; } + /* T2 = Y * Y */ + if ((err = mp_sqr(R->y, t2)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(t2, modulus, mp)) != CRYPT_OK) { goto done; } + /* T2 = T2/2 */ + if (mp_isodd(t2)) { + if ((err = mp_add(t2, modulus, t2)) != CRYPT_OK) { goto done; } + } + if ((err = mp_div_2(t2, t2)) != CRYPT_OK) { goto done; } + /* Y = Y * X */ + if ((err = mp_mul(R->y, R->x, R->y)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(R->y, modulus, mp)) != CRYPT_OK) { goto done; } + + /* X = T1 * T1 */ + if ((err = mp_sqr(t1, R->x)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(R->x, modulus, mp)) != CRYPT_OK) { goto done; } + /* X = X - Y */ + if ((err = mp_sub(R->x, R->y, R->x)) != CRYPT_OK) { goto done; } + if (mp_cmp_d(R->x, 0) == LTC_MP_LT) { + if ((err = mp_add(R->x, modulus, R->x)) != CRYPT_OK) { goto done; } + } + /* X = X - Y */ + if ((err = mp_sub(R->x, R->y, R->x)) != CRYPT_OK) { goto done; } + if (mp_cmp_d(R->x, 0) == LTC_MP_LT) { + if ((err = mp_add(R->x, modulus, R->x)) != CRYPT_OK) { goto done; } + } + + /* Y = Y - X */ + if ((err = mp_sub(R->y, R->x, R->y)) != CRYPT_OK) { goto done; } + if (mp_cmp_d(R->y, 0) == LTC_MP_LT) { + if ((err = mp_add(R->y, modulus, R->y)) != CRYPT_OK) { goto done; } + } + /* Y = Y * T1 */ + if ((err = mp_mul(R->y, t1, R->y)) != CRYPT_OK) { goto done; } + if ((err = mp_montgomery_reduce(R->y, modulus, mp)) != CRYPT_OK) { goto done; } + /* Y = Y - T2 */ + if ((err = mp_sub(R->y, t2, R->y)) != CRYPT_OK) { goto done; } + if (mp_cmp_d(R->y, 0) == LTC_MP_LT) { + if ((err = mp_add(R->y, modulus, R->y)) != CRYPT_OK) { goto done; } + } + + err = CRYPT_OK; +done: + mp_clear_multi(t1, t2, NULL); + return err; +} +#endif +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ + diff --git a/fsbl/lib/libtomcrypt/src/pk/katja/katja_decrypt_key.c b/fsbl/lib/libtomcrypt/src/pk/katja/katja_decrypt_key.c new file mode 100644 index 000000000..72009b0fb --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/katja/katja_decrypt_key.c @@ -0,0 +1,103 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file katja_decrypt_key.c + Katja PKCS #1 OAEP Decryption, Tom St Denis +*/ + +#ifdef LTC_MKAT + +/** + (PKCS #1 v2.0) decrypt then OAEP depad + @param in The ciphertext + @param inlen The length of the ciphertext (octets) + @param out [out] The plaintext + @param outlen [in/out] The max size and resulting size of the plaintext (octets) + @param lparam The system "lparam" value + @param lparamlen The length of the lparam value (octets) + @param hash_idx The index of the hash desired + @param stat [out] Result of the decryption, 1==valid, 0==invalid + @param key The corresponding private Katja key + @return CRYPT_OK if succcessul (even if invalid) +*/ +int katja_decrypt_key(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + const unsigned char *lparam, unsigned long lparamlen, + int hash_idx, int *stat, + katja_key *key) +{ + unsigned long modulus_bitlen, modulus_bytelen, x; + int err; + unsigned char *tmp; + + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(stat != NULL); + + /* default to invalid */ + *stat = 0; + + /* valid hash ? */ + if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { + return err; + } + + /* get modulus len in bits */ + modulus_bitlen = mp_count_bits( (key->N)); + + /* payload is upto pq, so we know q is 1/3rd the size of N and therefore pq is 2/3th the size */ + modulus_bitlen = ((modulus_bitlen << 1) / 3); + + /* round down to next byte */ + modulus_bitlen -= (modulus_bitlen & 7) + 8; + + /* outlen must be at least the size of the modulus */ + modulus_bytelen = mp_unsigned_bin_size( (key->N)); + if (modulus_bytelen != inlen) { + return CRYPT_INVALID_PACKET; + } + + /* allocate ram */ + tmp = XMALLOC(inlen); + if (tmp == NULL) { + return CRYPT_MEM; + } + + /* rsa decode the packet */ + x = inlen; + if ((err = katja_exptmod(in, inlen, tmp, &x, PK_PRIVATE, key)) != CRYPT_OK) { + XFREE(tmp); + return err; + } + + /* shift right by modulus_bytelen - modulus_bitlen/8 bytes */ + for (x = 0; x < (modulus_bitlen >> 3); x++) { + tmp[x] = tmp[x+(modulus_bytelen-(modulus_bitlen>>3))]; + } + + /* now OAEP decode the packet */ + err = pkcs_1_oaep_decode(tmp, x, lparam, lparamlen, modulus_bitlen, hash_idx, + out, outlen, stat); + + XFREE(tmp); + return err; +} + +#endif /* LTC_MRSA */ + + + + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/katja/katja_encrypt_key.c b/fsbl/lib/libtomcrypt/src/pk/katja/katja_encrypt_key.c new file mode 100644 index 000000000..9ed72fb0d --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/katja/katja_encrypt_key.c @@ -0,0 +1,85 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file katja_encrypt_key.c + Katja PKCS-style OAEP encryption, Tom St Denis +*/ + +#ifdef LTC_MKAT + +/** + (PKCS #1 v2.0) OAEP pad then encrypt + @param in The plaintext + @param inlen The length of the plaintext (octets) + @param out [out] The ciphertext + @param outlen [in/out] The max size and resulting size of the ciphertext + @param lparam The system "lparam" for the encryption + @param lparamlen The length of lparam (octets) + @param prng An active PRNG + @param prng_idx The index of the desired prng + @param hash_idx The index of the desired hash + @param key The Katja key to encrypt to + @return CRYPT_OK if successful +*/ +int katja_encrypt_key(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + const unsigned char *lparam, unsigned long lparamlen, + prng_state *prng, int prng_idx, int hash_idx, katja_key *key) +{ + unsigned long modulus_bitlen, modulus_bytelen, x; + int err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(key != NULL); + + /* valid prng and hash ? */ + if ((err = prng_is_valid(prng_idx)) != CRYPT_OK) { + return err; + } + if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { + return err; + } + + /* get modulus len in bits */ + modulus_bitlen = mp_count_bits((key->N)); + + /* payload is upto pq, so we know q is 1/3rd the size of N and therefore pq is 2/3th the size */ + modulus_bitlen = ((modulus_bitlen << 1) / 3); + + /* round down to next byte */ + modulus_bitlen -= (modulus_bitlen & 7) + 8; + + /* outlen must be at least the size of the modulus */ + modulus_bytelen = mp_unsigned_bin_size((key->N)); + if (modulus_bytelen > *outlen) { + *outlen = modulus_bytelen; + return CRYPT_BUFFER_OVERFLOW; + } + + /* OAEP pad the key */ + x = *outlen; + if ((err = pkcs_1_oaep_encode(in, inlen, lparam, + lparamlen, modulus_bitlen, prng, prng_idx, hash_idx, + out, &x)) != CRYPT_OK) { + return err; + } + + /* Katja exptmod the OAEP pad */ + return katja_exptmod(out, x, out, outlen, PK_PUBLIC, key); +} + +#endif /* LTC_MRSA */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/katja/katja_export.c b/fsbl/lib/libtomcrypt/src/pk/katja/katja_export.c new file mode 100644 index 000000000..0412e655d --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/katja/katja_export.c @@ -0,0 +1,73 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file katja_export.c + Export Katja PKCS-style keys, Tom St Denis +*/ + +#ifdef LTC_MKAT + +/** + This will export either an KatjaPublicKey or KatjaPrivateKey + @param out [out] Destination of the packet + @param outlen [in/out] The max size and resulting size of the packet + @param type The type of exported key (PK_PRIVATE or PK_PUBLIC) + @param key The Katja key to export + @return CRYPT_OK if successful +*/ +int katja_export(unsigned char *out, unsigned long *outlen, int type, katja_key *key) +{ + int err; + unsigned long zero=0; + + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(key != NULL); + + /* type valid? */ + if (!(key->type == PK_PRIVATE) && (type == PK_PRIVATE)) { + return CRYPT_PK_INVALID_TYPE; + } + + if (type == PK_PRIVATE) { + /* private key */ + /* output is + Version, n, d, p, q, d mod (p-1), d mod (q - 1), 1/q mod p, pq + */ + if ((err = der_encode_sequence_multi(out, outlen, + LTC_ASN1_SHORT_INTEGER, 1UL, &zero, + LTC_ASN1_INTEGER, 1UL, key->N, + LTC_ASN1_INTEGER, 1UL, key->d, + LTC_ASN1_INTEGER, 1UL, key->p, + LTC_ASN1_INTEGER, 1UL, key->q, + LTC_ASN1_INTEGER, 1UL, key->dP, + LTC_ASN1_INTEGER, 1UL, key->dQ, + LTC_ASN1_INTEGER, 1UL, key->qP, + LTC_ASN1_INTEGER, 1UL, key->pq, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { + return err; + } + + /* clear zero and return */ + return CRYPT_OK; + } else { + /* public key */ + return der_encode_sequence_multi(out, outlen, + LTC_ASN1_INTEGER, 1UL, key->N, + LTC_ASN1_EOL, 0UL, NULL); + } +} + +#endif /* LTC_MRSA */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/katja/katja_exptmod.c b/fsbl/lib/libtomcrypt/src/pk/katja/katja_exptmod.c new file mode 100644 index 000000000..afc847f15 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/katja/katja_exptmod.c @@ -0,0 +1,113 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file katja_exptmod.c + Katja PKCS-style exptmod, Tom St Denis +*/ + +#ifdef LTC_MKAT + +/** + Compute an RSA modular exponentiation + @param in The input data to send into RSA + @param inlen The length of the input (octets) + @param out [out] The destination + @param outlen [in/out] The max size and resulting size of the output + @param which Which exponent to use, e.g. PK_PRIVATE or PK_PUBLIC + @param key The RSA key to use + @return CRYPT_OK if successful +*/ +int katja_exptmod(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, int which, + katja_key *key) +{ + void *tmp, *tmpa, *tmpb; + unsigned long x; + int err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(key != NULL); + + /* is the key of the right type for the operation? */ + if (which == PK_PRIVATE && (key->type != PK_PRIVATE)) { + return CRYPT_PK_NOT_PRIVATE; + } + + /* must be a private or public operation */ + if (which != PK_PRIVATE && which != PK_PUBLIC) { + return CRYPT_PK_INVALID_TYPE; + } + + /* init and copy into tmp */ + if ((err = mp_init_multi(&tmp, &tmpa, &tmpb, NULL)) != CRYPT_OK) { return err; } + if ((err = mp_read_unsigned_bin(tmp, (unsigned char *)in, (int)inlen)) != CRYPT_OK) { goto error; } + + /* sanity check on the input */ + if (mp_cmp(key->N, tmp) == LTC_MP_LT) { + err = CRYPT_PK_INVALID_SIZE; + goto done; + } + + /* are we using the private exponent and is the key optimized? */ + if (which == PK_PRIVATE) { + /* tmpa = tmp^dP mod p */ + if ((err = mp_exptmod(tmp, key->dP, key->p, tmpa)) != CRYPT_OK) { goto error; } + + /* tmpb = tmp^dQ mod q */ + if ((err = mp_exptmod(tmp, key->dQ, key->q, tmpb)) != CRYPT_OK) { goto error; } + + /* tmp = (tmpa - tmpb) * qInv (mod p) */ + if ((err = mp_sub(tmpa, tmpb, tmp)) != CRYPT_OK) { goto error; } + if ((err = mp_mulmod(tmp, key->qP, key->p, tmp)) != CRYPT_OK) { goto error; } + + /* tmp = tmpb + q * tmp */ + if ((err = mp_mul(tmp, key->q, tmp)) != CRYPT_OK) { goto error; } + if ((err = mp_add(tmp, tmpb, tmp)) != CRYPT_OK) { goto error; } + } else { + /* exptmod it */ + if ((err = mp_exptmod(tmp, key->N, key->N, tmp)) != CRYPT_OK) { goto error; } + } + + /* read it back */ + x = (unsigned long)mp_unsigned_bin_size(key->N); + if (x > *outlen) { + *outlen = x; + err = CRYPT_BUFFER_OVERFLOW; + goto done; + } + + /* this should never happen ... */ + if (mp_unsigned_bin_size(tmp) > mp_unsigned_bin_size(key->N)) { + err = CRYPT_ERROR; + goto done; + } + *outlen = x; + + /* convert it */ + zeromem(out, x); + if ((err = mp_to_unsigned_bin(tmp, out+(x-mp_unsigned_bin_size(tmp)))) != CRYPT_OK) { goto error; } + + /* clean up and return */ + err = CRYPT_OK; + goto done; +error: +done: + mp_clear_multi(tmp, tmpa, tmpb, NULL); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/katja/katja_free.c b/fsbl/lib/libtomcrypt/src/pk/katja/katja_free.c new file mode 100644 index 000000000..117bbf451 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/katja/katja_free.c @@ -0,0 +1,33 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file katja_free.c + Free an Katja key, Tom St Denis +*/ + +#ifdef LTC_MKAT + +/** + Free an Katja key from memory + @param key The RSA key to free +*/ +void katja_free(katja_key *key) +{ + LTC_ARGCHK(key != NULL); + mp_clear_multi( key->d, key->N, key->dQ, key->dP, + key->qP, key->p, key->q, key->pq, NULL); +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/katja/katja_import.c b/fsbl/lib/libtomcrypt/src/pk/katja/katja_import.c new file mode 100644 index 000000000..98357c03d --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/katja/katja_import.c @@ -0,0 +1,79 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file katja_import.c + Import a PKCS-style Katja key, Tom St Denis +*/ + +#ifdef LTC_MKAT + +/** + Import an KatjaPublicKey or KatjaPrivateKey [two-prime only, only support >= 1024-bit keys, defined in PKCS #1 v2.1] + @param in The packet to import from + @param inlen It's length (octets) + @param key [out] Destination for newly imported key + @return CRYPT_OK if successful, upon error allocated memory is freed +*/ +int katja_import(const unsigned char *in, unsigned long inlen, katja_key *key) +{ + int err; + void *zero; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(ltc_mp.name != NULL); + + /* init key */ + if ((err = mp_init_multi(&zero, &key->d, &key->N, &key->dQ, + &key->dP, &key->qP, &key->p, &key->q, &key->pq, NULL)) != CRYPT_OK) { + return err; + } + + if ((err = der_decode_sequence_multi(in, inlen, + LTC_ASN1_INTEGER, 1UL, key->N, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { + goto LBL_ERR; + } + + if (mp_cmp_d(key->N, 0) == LTC_MP_EQ) { + /* it's a private key */ + if ((err = der_decode_sequence_multi(in, inlen, + LTC_ASN1_INTEGER, 1UL, zero, + LTC_ASN1_INTEGER, 1UL, key->N, + LTC_ASN1_INTEGER, 1UL, key->d, + LTC_ASN1_INTEGER, 1UL, key->p, + LTC_ASN1_INTEGER, 1UL, key->q, + LTC_ASN1_INTEGER, 1UL, key->dP, + LTC_ASN1_INTEGER, 1UL, key->dQ, + LTC_ASN1_INTEGER, 1UL, key->qP, + LTC_ASN1_INTEGER, 1UL, key->pq, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { + goto LBL_ERR; + } + key->type = PK_PRIVATE; + } else { + /* public we have N */ + key->type = PK_PUBLIC; + } + mp_clear(zero); + return CRYPT_OK; +LBL_ERR: + mp_clear_multi(zero, key->d, key->N, key->dQ, key->dP, + key->qP, key->p, key->q, key->pq, NULL); + return err; +} + +#endif /* LTC_MRSA */ + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/katja/katja_make_key.c b/fsbl/lib/libtomcrypt/src/pk/katja/katja_make_key.c new file mode 100644 index 000000000..6f83bcc3a --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/katja/katja_make_key.c @@ -0,0 +1,99 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file katja_make_key.c + Katja key generation, Tom St Denis +*/ + +#ifdef LTC_MKAT + +/** + Create a Katja key + @param prng An active PRNG state + @param wprng The index of the PRNG desired + @param size The size of the modulus (key size) desired (octets) + @param key [out] Destination of a newly created private key pair + @return CRYPT_OK if successful, upon error all allocated ram is freed +*/ +int katja_make_key(prng_state *prng, int wprng, int size, katja_key *key) +{ + void *p, *q, *tmp1, *tmp2; + int err; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(ltc_mp.name != NULL); + + if ((size < (MIN_KAT_SIZE/8)) || (size > (MAX_KAT_SIZE/8))) { + return CRYPT_INVALID_KEYSIZE; + } + + if ((err = prng_is_valid(wprng)) != CRYPT_OK) { + return err; + } + + if ((err = mp_init_multi(&p, &q, &tmp1, &tmp2, NULL)) != CRYPT_OK) { + return err; + } + + /* divide size by three */ + size = (((size << 3) / 3) + 7) >> 3; + + /* make prime "q" (we negate size to make q == 3 mod 4) */ + if ((err = rand_prime(q, -size, prng, wprng)) != CRYPT_OK) { goto done; } + if ((err = mp_sub_d(q, 1, tmp1)) != CRYPT_OK) { goto done; } + + /* make prime "p" */ + do { + if ((err = rand_prime(p, size+1, prng, wprng)) != CRYPT_OK) { goto done; } + if ((err = mp_gcd(p, tmp1, tmp2)) != CRYPT_OK) { goto done; } + } while (mp_cmp_d(tmp2, 1) != LTC_MP_EQ); + + /* make key */ + if ((err = mp_init_multi(&key->d, &key->N, &key->dQ, &key->dP, + &key->qP, &key->p, &key->q, &key->pq, NULL)) != CRYPT_OK) { + goto error; + } + + /* n=p^2q and 1/n mod pq */ + if ((err = mp_copy( p, key->p)) != CRYPT_OK) { goto error2; } + if ((err = mp_copy( q, key->q)) != CRYPT_OK) { goto error2; } + if ((err = mp_mul(key->p, key->q, key->pq)) != CRYPT_OK) { goto error2; } /* tmp1 = pq */ + if ((err = mp_mul(key->pq, key->p, key->N)) != CRYPT_OK) { goto error2; } /* N = p^2q */ + if ((err = mp_sub_d( p, 1, tmp1)) != CRYPT_OK) { goto error2; } /* tmp1 = q-1 */ + if ((err = mp_sub_d( q, 1, tmp2)) != CRYPT_OK) { goto error2; } /* tmp2 = p-1 */ + if ((err = mp_lcm(tmp1, tmp2, key->d)) != CRYPT_OK) { goto error2; } /* tmp1 = lcd(p-1,q-1) */ + if ((err = mp_invmod( key->N, key->d, key->d)) != CRYPT_OK) { goto error2; } /* key->d = 1/N mod pq */ + + /* optimize for CRT now */ + /* find d mod q-1 and d mod p-1 */ + if ((err = mp_mod( key->d, tmp1, key->dP)) != CRYPT_OK) { goto error2; } /* dP = d mod p-1 */ + if ((err = mp_mod( key->d, tmp2, key->dQ)) != CRYPT_OK) { goto error2; } /* dQ = d mod q-1 */ + if ((err = mp_invmod( q, p, key->qP)) != CRYPT_OK) { goto error2; } /* qP = 1/q mod p */ + + /* set key type (in this case it's CRT optimized) */ + key->type = PK_PRIVATE; + + /* return ok and free temps */ + err = CRYPT_OK; + goto done; +error2: + mp_clear_multi( key->d, key->N, key->dQ, key->dP, key->qP, key->p, key->q, key->pq, NULL); +error: +done: + mp_clear_multi( tmp2, tmp1, p, q, NULL); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_i2osp.c b/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_i2osp.c new file mode 100644 index 000000000..5324c1ea1 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_i2osp.c @@ -0,0 +1,49 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file pkcs_1_i2osp.c + Integer to Octet I2OSP, Tom St Denis +*/ + +#ifdef LTC_PKCS_1 + +/* always stores the same # of bytes, pads with leading zero bytes + as required + */ + +/** + PKCS #1 Integer to binary + @param n The integer to store + @param modulus_len The length of the RSA modulus + @param out [out] The destination for the integer + @return CRYPT_OK if successful +*/ +int pkcs_1_i2osp(void *n, unsigned long modulus_len, unsigned char *out) +{ + unsigned long size; + + size = mp_unsigned_bin_size(n); + + if (size > modulus_len) { + return CRYPT_BUFFER_OVERFLOW; + } + + /* store it */ + zeromem(out, modulus_len); + return mp_to_unsigned_bin(n, out+(modulus_len-size)); +} + +#endif /* LTC_PKCS_1 */ + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_mgf1.c b/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_mgf1.c new file mode 100644 index 000000000..c6283ca70 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_mgf1.c @@ -0,0 +1,106 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file pkcs_1_mgf1.c + The Mask Generation Function (MGF1) for PKCS #1, Tom St Denis +*/ + +#ifdef LTC_PKCS_1 + +/** + Perform PKCS #1 MGF1 (internal) + @param hash_idx The index of the hash desired + @param seed The seed for MGF1 + @param seedlen The length of the seed + @param mask [out] The destination + @param masklen The length of the mask desired + @return CRYPT_OK if successful +*/ +int pkcs_1_mgf1(int hash_idx, + const unsigned char *seed, unsigned long seedlen, + unsigned char *mask, unsigned long masklen) +{ + unsigned long hLen, x; + ulong32 counter; + int err; + hash_state *md; + unsigned char *buf; + + LTC_ARGCHK(seed != NULL); + LTC_ARGCHK(mask != NULL); + + /* ensure valid hash */ + if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { + return err; + } + + /* get hash output size */ + hLen = hash_descriptor[hash_idx].hashsize; + + /* allocate memory */ + md = XMALLOC(sizeof(hash_state)); + buf = XMALLOC(hLen); + if (md == NULL || buf == NULL) { + if (md != NULL) { + XFREE(md); + } + if (buf != NULL) { + XFREE(buf); + } + return CRYPT_MEM; + } + + /* start counter */ + counter = 0; + + while (masklen > 0) { + /* handle counter */ + STORE32H(counter, buf); + ++counter; + + /* get hash of seed || counter */ + if ((err = hash_descriptor[hash_idx].init(md)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = hash_descriptor[hash_idx].process(md, seed, seedlen)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = hash_descriptor[hash_idx].process(md, buf, 4)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = hash_descriptor[hash_idx].done(md, buf)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* store it */ + for (x = 0; x < hLen && masklen > 0; x++, masklen--) { + *mask++ = buf[x]; + } + } + + err = CRYPT_OK; +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(buf, hLen); + zeromem(md, sizeof(hash_state)); +#endif + + XFREE(buf); + XFREE(md); + + return err; +} + +#endif /* LTC_PKCS_1 */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_oaep_decode.c b/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_oaep_decode.c new file mode 100644 index 000000000..27c92456c --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_oaep_decode.c @@ -0,0 +1,185 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file pkcs_1_oaep_decode.c + OAEP Padding for PKCS #1, Tom St Denis +*/ + +#ifdef LTC_PKCS_1 + +/** + PKCS #1 v2.00 OAEP decode + @param msg The encoded data to decode + @param msglen The length of the encoded data (octets) + @param lparam The session or system data (can be NULL) + @param lparamlen The length of the lparam + @param modulus_bitlen The bit length of the RSA modulus + @param hash_idx The index of the hash desired + @param out [out] Destination of decoding + @param outlen [in/out] The max size and resulting size of the decoding + @param res [out] Result of decoding, 1==valid, 0==invalid + @return CRYPT_OK if successful +*/ +int pkcs_1_oaep_decode(const unsigned char *msg, unsigned long msglen, + const unsigned char *lparam, unsigned long lparamlen, + unsigned long modulus_bitlen, int hash_idx, + unsigned char *out, unsigned long *outlen, + int *res) +{ + unsigned char *DB, *seed, *mask; + unsigned long hLen, x, y, modulus_len; + int err, ret; + + LTC_ARGCHK(msg != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(res != NULL); + + /* default to invalid packet */ + *res = 0; + + /* test valid hash */ + if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { + return err; + } + hLen = hash_descriptor[hash_idx].hashsize; + modulus_len = (modulus_bitlen >> 3) + (modulus_bitlen & 7 ? 1 : 0); + + /* test hash/message size */ + if ((2*hLen >= (modulus_len - 2)) || (msglen != modulus_len)) { + return CRYPT_PK_INVALID_SIZE; + } + + /* allocate ram for DB/mask/salt of size modulus_len */ + DB = XMALLOC(modulus_len); + mask = XMALLOC(modulus_len); + seed = XMALLOC(hLen); + if (DB == NULL || mask == NULL || seed == NULL) { + if (DB != NULL) { + XFREE(DB); + } + if (mask != NULL) { + XFREE(mask); + } + if (seed != NULL) { + XFREE(seed); + } + return CRYPT_MEM; + } + + /* ok so it's now in the form + + 0x00 || maskedseed || maskedDB + + 1 || hLen || modulus_len - hLen - 1 + + */ + + ret = CRYPT_OK; + + /* must have leading 0x00 byte */ + if (msg[0] != 0x00) { + ret = CRYPT_INVALID_PACKET; + } + + /* now read the masked seed */ + x = 1; + XMEMCPY(seed, msg + x, hLen); + x += hLen; + + /* now read the masked DB */ + XMEMCPY(DB, msg + x, modulus_len - hLen - 1); + x += modulus_len - hLen - 1; + + /* compute MGF1 of maskedDB (hLen) */ + if ((err = pkcs_1_mgf1(hash_idx, DB, modulus_len - hLen - 1, mask, hLen)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* XOR against seed */ + for (y = 0; y < hLen; y++) { + seed[y] ^= mask[y]; + } + + /* compute MGF1 of seed (k - hlen - 1) */ + if ((err = pkcs_1_mgf1(hash_idx, seed, hLen, mask, modulus_len - hLen - 1)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* xor against DB */ + for (y = 0; y < (modulus_len - hLen - 1); y++) { + DB[y] ^= mask[y]; + } + + /* now DB == lhash || PS || 0x01 || M, PS == k - mlen - 2hlen - 2 zeroes */ + + /* compute lhash and store it in seed [reuse temps!] */ + x = modulus_len; + if (lparam != NULL) { + if ((err = hash_memory(hash_idx, lparam, lparamlen, seed, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + } else { + /* can't pass hash_memory a NULL so use DB with zero length */ + if ((err = hash_memory(hash_idx, DB, 0, seed, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + } + + /* compare the lhash'es */ + if (XMEM_NEQ(seed, DB, hLen) != 0) { + ret = CRYPT_INVALID_PACKET; + } + + /* now zeroes before a 0x01 */ + for (x = hLen; x < (modulus_len - hLen - 1) && DB[x] == 0x00; x++) { + /* step... */ + } + + /* error if wasn't 0x01 */ + if (x == (modulus_len - hLen - 1) || DB[x] != 0x01) { + ret = CRYPT_INVALID_PACKET; + } + + /* rest is the message (and skip 0x01) */ + if ((modulus_len - hLen - 1 - ++x) > *outlen) { + ret = CRYPT_INVALID_PACKET; + } + + if (ret == CRYPT_OK) { + /* copy message */ + *outlen = modulus_len - hLen - 1 - x; + XMEMCPY(out, DB + x, modulus_len - hLen - 1 - x); + + /* valid packet */ + *res = 1; + } + err = ret; + +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(DB, modulus_len); + zeromem(seed, hLen); + zeromem(mask, modulus_len); +#endif + + XFREE(seed); + XFREE(mask); + XFREE(DB); + + return err; +} + +#endif /* LTC_PKCS_1 */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_oaep_encode.c b/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_oaep_encode.c new file mode 100644 index 000000000..50429467f --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_oaep_encode.c @@ -0,0 +1,171 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file pkcs_1_oaep_encode.c + OAEP Padding for PKCS #1, Tom St Denis +*/ + +#ifdef LTC_PKCS_1 + +/** + PKCS #1 v2.00 OAEP encode + @param msg The data to encode + @param msglen The length of the data to encode (octets) + @param lparam A session or system parameter (can be NULL) + @param lparamlen The length of the lparam data + @param modulus_bitlen The bit length of the RSA modulus + @param prng An active PRNG state + @param prng_idx The index of the PRNG desired + @param hash_idx The index of the hash desired + @param out [out] The destination for the encoded data + @param outlen [in/out] The max size and resulting size of the encoded data + @return CRYPT_OK if successful +*/ +int pkcs_1_oaep_encode(const unsigned char *msg, unsigned long msglen, + const unsigned char *lparam, unsigned long lparamlen, + unsigned long modulus_bitlen, prng_state *prng, + int prng_idx, int hash_idx, + unsigned char *out, unsigned long *outlen) +{ + unsigned char *DB, *seed, *mask; + unsigned long hLen, x, y, modulus_len; + int err; + + LTC_ARGCHK(msg != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* test valid hash */ + if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { + return err; + } + + /* valid prng */ + if ((err = prng_is_valid(prng_idx)) != CRYPT_OK) { + return err; + } + + hLen = hash_descriptor[hash_idx].hashsize; + modulus_len = (modulus_bitlen >> 3) + (modulus_bitlen & 7 ? 1 : 0); + + /* test message size */ + if ((2*hLen >= (modulus_len - 2)) || (msglen > (modulus_len - 2*hLen - 2))) { + return CRYPT_PK_INVALID_SIZE; + } + + /* allocate ram for DB/mask/salt of size modulus_len */ + DB = XMALLOC(modulus_len); + mask = XMALLOC(modulus_len); + seed = XMALLOC(hLen); + if (DB == NULL || mask == NULL || seed == NULL) { + if (DB != NULL) { + XFREE(DB); + } + if (mask != NULL) { + XFREE(mask); + } + if (seed != NULL) { + XFREE(seed); + } + return CRYPT_MEM; + } + + /* get lhash */ + /* DB == lhash || PS || 0x01 || M, PS == k - mlen - 2hlen - 2 zeroes */ + x = modulus_len; + if (lparam != NULL) { + if ((err = hash_memory(hash_idx, lparam, lparamlen, DB, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + } else { + /* can't pass hash_memory a NULL so use DB with zero length */ + if ((err = hash_memory(hash_idx, DB, 0, DB, &x)) != CRYPT_OK) { + goto LBL_ERR; + } + } + + /* append PS then 0x01 (to lhash) */ + x = hLen; + y = modulus_len - msglen - 2*hLen - 2; + XMEMSET(DB+x, 0, y); + x += y; + + /* 0x01 byte */ + DB[x++] = 0x01; + + /* message (length = msglen) */ + XMEMCPY(DB+x, msg, msglen); + x += msglen; + + /* now choose a random seed */ + if (prng_descriptor[prng_idx].read(seed, hLen, prng) != hLen) { + err = CRYPT_ERROR_READPRNG; + goto LBL_ERR; + } + + /* compute MGF1 of seed (k - hlen - 1) */ + if ((err = pkcs_1_mgf1(hash_idx, seed, hLen, mask, modulus_len - hLen - 1)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* xor against DB */ + for (y = 0; y < (modulus_len - hLen - 1); y++) { + DB[y] ^= mask[y]; + } + + /* compute MGF1 of maskedDB (hLen) */ + if ((err = pkcs_1_mgf1(hash_idx, DB, modulus_len - hLen - 1, mask, hLen)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* XOR against seed */ + for (y = 0; y < hLen; y++) { + seed[y] ^= mask[y]; + } + + /* create string of length modulus_len */ + if (*outlen < modulus_len) { + *outlen = modulus_len; + err = CRYPT_BUFFER_OVERFLOW; + goto LBL_ERR; + } + + /* start output which is 0x00 || maskedSeed || maskedDB */ + x = 0; + out[x++] = 0x00; + XMEMCPY(out+x, seed, hLen); + x += hLen; + XMEMCPY(out+x, DB, modulus_len - hLen - 1); + x += modulus_len - hLen - 1; + + *outlen = x; + + err = CRYPT_OK; +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(DB, modulus_len); + zeromem(seed, hLen); + zeromem(mask, modulus_len); +#endif + + XFREE(seed); + XFREE(mask); + XFREE(DB); + + return err; +} + +#endif /* LTC_PKCS_1 */ + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_os2ip.c b/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_os2ip.c new file mode 100644 index 000000000..743c70b30 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_os2ip.c @@ -0,0 +1,34 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file pkcs_1_os2ip.c + Octet to Integer OS2IP, Tom St Denis +*/ +#ifdef LTC_PKCS_1 + +/** + Read a binary string into an mp_int + @param n [out] The mp_int destination + @param in The binary string to read + @param inlen The length of the binary string + @return CRYPT_OK if successful +*/ +int pkcs_1_os2ip(void *n, unsigned char *in, unsigned long inlen) +{ + return mp_read_unsigned_bin(n, in, inlen); +} + +#endif /* LTC_PKCS_1 */ + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_decode.c b/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_decode.c new file mode 100644 index 000000000..8e112a14c --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_decode.c @@ -0,0 +1,176 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file pkcs_1_pss_decode.c + PKCS #1 PSS Signature Padding, Tom St Denis +*/ + +#ifdef LTC_PKCS_1 + +/** + PKCS #1 v2.00 PSS decode + @param msghash The hash to verify + @param msghashlen The length of the hash (octets) + @param sig The signature data (encoded data) + @param siglen The length of the signature data (octets) + @param saltlen The length of the salt used (octets) + @param hash_idx The index of the hash desired + @param modulus_bitlen The bit length of the RSA modulus + @param res [out] The result of the comparison, 1==valid, 0==invalid + @return CRYPT_OK if successful (even if the comparison failed) +*/ +int pkcs_1_pss_decode(const unsigned char *msghash, unsigned long msghashlen, + const unsigned char *sig, unsigned long siglen, + unsigned long saltlen, int hash_idx, + unsigned long modulus_bitlen, int *res) +{ + unsigned char *DB, *mask, *salt, *hash; + unsigned long x, y, hLen, modulus_len; + int err; + hash_state md; + + LTC_ARGCHK(msghash != NULL); + LTC_ARGCHK(res != NULL); + + /* default to invalid */ + *res = 0; + + /* ensure hash is valid */ + if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { + return err; + } + + hLen = hash_descriptor[hash_idx].hashsize; + modulus_bitlen--; + modulus_len = (modulus_bitlen>>3) + (modulus_bitlen & 7 ? 1 : 0); + + /* check sizes */ + if ((saltlen > modulus_len) || + (modulus_len < hLen + saltlen + 2)) { + return CRYPT_PK_INVALID_SIZE; + } + + /* allocate ram for DB/mask/salt/hash of size modulus_len */ + DB = XMALLOC(modulus_len); + mask = XMALLOC(modulus_len); + salt = XMALLOC(modulus_len); + hash = XMALLOC(modulus_len); + if (DB == NULL || mask == NULL || salt == NULL || hash == NULL) { + if (DB != NULL) { + XFREE(DB); + } + if (mask != NULL) { + XFREE(mask); + } + if (salt != NULL) { + XFREE(salt); + } + if (hash != NULL) { + XFREE(hash); + } + return CRYPT_MEM; + } + + /* ensure the 0xBC byte */ + if (sig[siglen-1] != 0xBC) { + err = CRYPT_INVALID_PACKET; + goto LBL_ERR; + } + + /* copy out the DB */ + x = 0; + XMEMCPY(DB, sig + x, modulus_len - hLen - 1); + x += modulus_len - hLen - 1; + + /* copy out the hash */ + XMEMCPY(hash, sig + x, hLen); + /* x += hLen; */ + + /* check the MSB */ + if ((sig[0] & ~(0xFF >> ((modulus_len<<3) - (modulus_bitlen)))) != 0) { + err = CRYPT_INVALID_PACKET; + goto LBL_ERR; + } + + /* generate mask of length modulus_len - hLen - 1 from hash */ + if ((err = pkcs_1_mgf1(hash_idx, hash, hLen, mask, modulus_len - hLen - 1)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* xor against DB */ + for (y = 0; y < (modulus_len - hLen - 1); y++) { + DB[y] ^= mask[y]; + } + + /* now clear the first byte [make sure smaller than modulus] */ + DB[0] &= 0xFF >> ((modulus_len<<3) - (modulus_bitlen)); + + /* DB = PS || 0x01 || salt, PS == modulus_len - saltlen - hLen - 2 zero bytes */ + + /* check for zeroes and 0x01 */ + for (x = 0; x < modulus_len - saltlen - hLen - 2; x++) { + if (DB[x] != 0x00) { + err = CRYPT_INVALID_PACKET; + goto LBL_ERR; + } + } + + /* check for the 0x01 */ + if (DB[x++] != 0x01) { + err = CRYPT_INVALID_PACKET; + goto LBL_ERR; + } + + /* M = (eight) 0x00 || msghash || salt, mask = H(M) */ + if ((err = hash_descriptor[hash_idx].init(&md)) != CRYPT_OK) { + goto LBL_ERR; + } + zeromem(mask, 8); + if ((err = hash_descriptor[hash_idx].process(&md, mask, 8)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = hash_descriptor[hash_idx].process(&md, msghash, msghashlen)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = hash_descriptor[hash_idx].process(&md, DB+x, saltlen)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = hash_descriptor[hash_idx].done(&md, mask)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* mask == hash means valid signature */ + if (XMEM_NEQ(mask, hash, hLen) == 0) { + *res = 1; + } + + err = CRYPT_OK; +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(DB, modulus_len); + zeromem(mask, modulus_len); + zeromem(salt, modulus_len); + zeromem(hash, modulus_len); +#endif + + XFREE(hash); + XFREE(salt); + XFREE(mask); + XFREE(DB); + + return err; +} + +#endif /* LTC_PKCS_1 */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_encode.c b/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_encode.c new file mode 100644 index 000000000..c795114b9 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_pss_encode.c @@ -0,0 +1,174 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file pkcs_1_pss_encode.c + PKCS #1 PSS Signature Padding, Tom St Denis +*/ + +#ifdef LTC_PKCS_1 + +/** + PKCS #1 v2.00 Signature Encoding + @param msghash The hash to encode + @param msghashlen The length of the hash (octets) + @param saltlen The length of the salt desired (octets) + @param prng An active PRNG context + @param prng_idx The index of the PRNG desired + @param hash_idx The index of the hash desired + @param modulus_bitlen The bit length of the RSA modulus + @param out [out] The destination of the encoding + @param outlen [in/out] The max size and resulting size of the encoded data + @return CRYPT_OK if successful +*/ +int pkcs_1_pss_encode(const unsigned char *msghash, unsigned long msghashlen, + unsigned long saltlen, prng_state *prng, + int prng_idx, int hash_idx, + unsigned long modulus_bitlen, + unsigned char *out, unsigned long *outlen) +{ + unsigned char *DB, *mask, *salt, *hash; + unsigned long x, y, hLen, modulus_len; + int err; + hash_state md; + + LTC_ARGCHK(msghash != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + /* ensure hash and PRNG are valid */ + if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { + return err; + } + if ((err = prng_is_valid(prng_idx)) != CRYPT_OK) { + return err; + } + + hLen = hash_descriptor[hash_idx].hashsize; + modulus_bitlen--; + modulus_len = (modulus_bitlen>>3) + (modulus_bitlen & 7 ? 1 : 0); + + /* check sizes */ + if ((saltlen > modulus_len) || (modulus_len < hLen + saltlen + 2)) { + return CRYPT_PK_INVALID_SIZE; + } + + /* allocate ram for DB/mask/salt/hash of size modulus_len */ + DB = XMALLOC(modulus_len); + mask = XMALLOC(modulus_len); + salt = XMALLOC(modulus_len); + hash = XMALLOC(modulus_len); + if (DB == NULL || mask == NULL || salt == NULL || hash == NULL) { + if (DB != NULL) { + XFREE(DB); + } + if (mask != NULL) { + XFREE(mask); + } + if (salt != NULL) { + XFREE(salt); + } + if (hash != NULL) { + XFREE(hash); + } + return CRYPT_MEM; + } + + + /* generate random salt */ + if (saltlen > 0) { + if (prng_descriptor[prng_idx].read(salt, saltlen, prng) != saltlen) { + err = CRYPT_ERROR_READPRNG; + goto LBL_ERR; + } + } + + /* M = (eight) 0x00 || msghash || salt, hash = H(M) */ + if ((err = hash_descriptor[hash_idx].init(&md)) != CRYPT_OK) { + goto LBL_ERR; + } + zeromem(DB, 8); + if ((err = hash_descriptor[hash_idx].process(&md, DB, 8)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = hash_descriptor[hash_idx].process(&md, msghash, msghashlen)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = hash_descriptor[hash_idx].process(&md, salt, saltlen)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = hash_descriptor[hash_idx].done(&md, hash)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* generate DB = PS || 0x01 || salt, PS == modulus_len - saltlen - hLen - 2 zero bytes */ + x = 0; + XMEMSET(DB + x, 0, modulus_len - saltlen - hLen - 2); + x += modulus_len - saltlen - hLen - 2; + DB[x++] = 0x01; + XMEMCPY(DB + x, salt, saltlen); + /* x += saltlen; */ + + /* generate mask of length modulus_len - hLen - 1 from hash */ + if ((err = pkcs_1_mgf1(hash_idx, hash, hLen, mask, modulus_len - hLen - 1)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* xor against DB */ + for (y = 0; y < (modulus_len - hLen - 1); y++) { + DB[y] ^= mask[y]; + } + + /* output is DB || hash || 0xBC */ + if (*outlen < modulus_len) { + *outlen = modulus_len; + err = CRYPT_BUFFER_OVERFLOW; + goto LBL_ERR; + } + + /* DB len = modulus_len - hLen - 1 */ + y = 0; + XMEMCPY(out + y, DB, modulus_len - hLen - 1); + y += modulus_len - hLen - 1; + + /* hash */ + XMEMCPY(out + y, hash, hLen); + y += hLen; + + /* 0xBC */ + out[y] = 0xBC; + + /* now clear the 8*modulus_len - modulus_bitlen most significant bits */ + out[0] &= 0xFF >> ((modulus_len<<3) - modulus_bitlen); + + /* store output size */ + *outlen = modulus_len; + err = CRYPT_OK; +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(DB, modulus_len); + zeromem(mask, modulus_len); + zeromem(salt, modulus_len); + zeromem(hash, modulus_len); +#endif + + XFREE(hash); + XFREE(salt); + XFREE(mask); + XFREE(DB); + + return err; +} + +#endif /* LTC_PKCS_1 */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_decode.c b/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_decode.c new file mode 100644 index 000000000..94e1b2a39 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_decode.c @@ -0,0 +1,112 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** @file pkcs_1_v1_5_decode.c + * + * PKCS #1 v1.5 Padding. (Andreas Lange) + */ + +#ifdef LTC_PKCS_1 + +/** @brief PKCS #1 v1.5 decode. + * + * @param msg The encoded data to decode + * @param msglen The length of the encoded data (octets) + * @param block_type Block type to use in padding (\sa ltc_pkcs_1_v1_5_blocks) + * @param modulus_bitlen The bit length of the RSA modulus + * @param out [out] Destination of decoding + * @param outlen [in/out] The max size and resulting size of the decoding + * @param is_valid [out] Boolean whether the padding was valid + * + * @return CRYPT_OK if successful + */ +int pkcs_1_v1_5_decode(const unsigned char *msg, + unsigned long msglen, + int block_type, + unsigned long modulus_bitlen, + unsigned char *out, + unsigned long *outlen, + int *is_valid) +{ + unsigned long modulus_len, ps_len, i; + int result; + + /* default to invalid packet */ + *is_valid = 0; + + modulus_len = (modulus_bitlen >> 3) + (modulus_bitlen & 7 ? 1 : 0); + + /* test message size */ + + if ((msglen > modulus_len) || (modulus_len < 11)) { + return CRYPT_PK_INVALID_SIZE; + } + + result = CRYPT_OK; + + /* separate encoded message */ + + if ((msg[0] != 0x00) || (msg[1] != (unsigned char)block_type)) { + result = CRYPT_INVALID_PACKET; + } + + if (block_type == LTC_PKCS_1_EME) { + for (i = 2; i < modulus_len; i++) { + /* separator */ + if (msg[i] == 0x00) { break; } + } + ps_len = i++ - 2; + + if (i >= modulus_len) { + /* There was no octet with hexadecimal value 0x00 to separate ps from m. + */ + result = CRYPT_INVALID_PACKET; + } + } else { + for (i = 2; i < modulus_len - 1; i++) { + if (msg[i] != 0xFF) { break; } + } + + /* separator check */ + if (msg[i] != 0) { + /* There was no octet with hexadecimal value 0x00 to separate ps from m. */ + result = CRYPT_INVALID_PACKET; + } + + ps_len = i - 2; + } + + if (ps_len < 8) + { + /* The length of ps is less than 8 octets. + */ + result = CRYPT_INVALID_PACKET; + } + + if (*outlen < (msglen - (2 + ps_len + 1))) { + result = CRYPT_INVALID_PACKET; + } + + if (result == CRYPT_OK) { + *outlen = (msglen - (2 + ps_len + 1)); + XMEMCPY(out, &msg[2 + ps_len + 1], *outlen); + + /* valid packet */ + *is_valid = 1; + } + + return result; +} /* pkcs_1_v1_5_decode */ + +#endif /* #ifdef LTC_PKCS_1 */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_encode.c b/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_encode.c new file mode 100644 index 000000000..dd92c64e9 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/pkcs1/pkcs_1_v1_5_encode.c @@ -0,0 +1,109 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/*! \file pkcs_1_v1_5_encode.c + * + * PKCS #1 v1.5 Padding (Andreas Lange) + */ + +#ifdef LTC_PKCS_1 + +/*! \brief PKCS #1 v1.5 encode. + * + * \param msg The data to encode + * \param msglen The length of the data to encode (octets) + * \param block_type Block type to use in padding (\sa ltc_pkcs_1_v1_5_blocks) + * \param modulus_bitlen The bit length of the RSA modulus + * \param prng An active PRNG state (only for LTC_PKCS_1_EME) + * \param prng_idx The index of the PRNG desired (only for LTC_PKCS_1_EME) + * \param out [out] The destination for the encoded data + * \param outlen [in/out] The max size and resulting size of the encoded data + * + * \return CRYPT_OK if successful + */ +int pkcs_1_v1_5_encode(const unsigned char *msg, + unsigned long msglen, + int block_type, + unsigned long modulus_bitlen, + prng_state *prng, + int prng_idx, + unsigned char *out, + unsigned long *outlen) +{ + unsigned long modulus_len, ps_len, i; + unsigned char *ps; + int result; + + /* valid block_type? */ + if ((block_type != LTC_PKCS_1_EMSA) && + (block_type != LTC_PKCS_1_EME)) { + return CRYPT_PK_INVALID_PADDING; + } + + if (block_type == LTC_PKCS_1_EME) { /* encryption padding, we need a valid PRNG */ + if ((result = prng_is_valid(prng_idx)) != CRYPT_OK) { + return result; + } + } + + modulus_len = (modulus_bitlen >> 3) + (modulus_bitlen & 7 ? 1 : 0); + + /* test message size */ + if ((msglen + 11) > modulus_len) { + return CRYPT_PK_INVALID_SIZE; + } + + if (*outlen < modulus_len) { + *outlen = modulus_len; + result = CRYPT_BUFFER_OVERFLOW; + goto bail; + } + + /* generate an octets string PS */ + ps = &out[2]; + ps_len = modulus_len - msglen - 3; + + if (block_type == LTC_PKCS_1_EME) { + /* now choose a random ps */ + if (prng_descriptor[prng_idx].read(ps, ps_len, prng) != ps_len) { + result = CRYPT_ERROR_READPRNG; + goto bail; + } + + /* transform zero bytes (if any) to non-zero random bytes */ + for (i = 0; i < ps_len; i++) { + while (ps[i] == 0) { + if (prng_descriptor[prng_idx].read(&ps[i], 1, prng) != 1) { + result = CRYPT_ERROR_READPRNG; + goto bail; + } + } + } + } else { + XMEMSET(ps, 0xFF, ps_len); + } + + /* create string of length modulus_len */ + out[0] = 0x00; + out[1] = (unsigned char)block_type; /* block_type 1 or 2 */ + out[2 + ps_len] = 0x00; + XMEMCPY(&out[2 + ps_len + 1], msg, msglen); + *outlen = modulus_len; + + result = CRYPT_OK; +bail: + return result; +} /* pkcs_1_v1_5_encode */ + +#endif /* #ifdef LTC_PKCS_1 */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_decrypt_key.c b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_decrypt_key.c new file mode 100644 index 000000000..9e1bceded --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_decrypt_key.c @@ -0,0 +1,103 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file rsa_decrypt_key.c + RSA PKCS #1 Decryption, Tom St Denis and Andreas Lange +*/ + +#ifdef LTC_MRSA + +/** + PKCS #1 decrypt then v1.5 or OAEP depad + @param in The ciphertext + @param inlen The length of the ciphertext (octets) + @param out [out] The plaintext + @param outlen [in/out] The max size and resulting size of the plaintext (octets) + @param lparam The system "lparam" value + @param lparamlen The length of the lparam value (octets) + @param hash_idx The index of the hash desired + @param padding Type of padding (LTC_PKCS_1_OAEP or LTC_PKCS_1_V1_5) + @param stat [out] Result of the decryption, 1==valid, 0==invalid + @param key The corresponding private RSA key + @return CRYPT_OK if succcessul (even if invalid) +*/ +int rsa_decrypt_key_ex(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + const unsigned char *lparam, unsigned long lparamlen, + int hash_idx, int padding, + int *stat, rsa_key *key) +{ + unsigned long modulus_bitlen, modulus_bytelen, x; + int err; + unsigned char *tmp; + + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(stat != NULL); + + /* default to invalid */ + *stat = 0; + + /* valid padding? */ + + if ((padding != LTC_PKCS_1_V1_5) && + (padding != LTC_PKCS_1_OAEP)) { + return CRYPT_PK_INVALID_PADDING; + } + + if (padding == LTC_PKCS_1_OAEP) { + /* valid hash ? */ + if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { + return err; + } + } + + /* get modulus len in bits */ + modulus_bitlen = mp_count_bits( (key->N)); + + /* outlen must be at least the size of the modulus */ + modulus_bytelen = mp_unsigned_bin_size( (key->N)); + if (modulus_bytelen != inlen) { + return CRYPT_INVALID_PACKET; + } + + /* allocate ram */ + tmp = XMALLOC(inlen); + if (tmp == NULL) { + return CRYPT_MEM; + } + + /* rsa decode the packet */ + x = inlen; + if ((err = ltc_mp.rsa_me(in, inlen, tmp, &x, PK_PRIVATE, key)) != CRYPT_OK) { + XFREE(tmp); + return err; + } + + if (padding == LTC_PKCS_1_OAEP) { + /* now OAEP decode the packet */ + err = pkcs_1_oaep_decode(tmp, x, lparam, lparamlen, modulus_bitlen, hash_idx, + out, outlen, stat); + } else { + /* now PKCS #1 v1.5 depad the packet */ + err = pkcs_1_v1_5_decode(tmp, x, LTC_PKCS_1_EME, modulus_bitlen, out, outlen, stat); + } + + XFREE(tmp); + return err; +} + +#endif /* LTC_MRSA */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_encrypt_key.c b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_encrypt_key.c new file mode 100644 index 000000000..ef066d2d0 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_encrypt_key.c @@ -0,0 +1,100 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file rsa_encrypt_key.c + RSA PKCS #1 encryption, Tom St Denis and Andreas Lange +*/ + +#ifdef LTC_MRSA + +/** + (PKCS #1 v2.0) OAEP pad then encrypt + @param in The plaintext + @param inlen The length of the plaintext (octets) + @param out [out] The ciphertext + @param outlen [in/out] The max size and resulting size of the ciphertext + @param lparam The system "lparam" for the encryption + @param lparamlen The length of lparam (octets) + @param prng An active PRNG + @param prng_idx The index of the desired prng + @param hash_idx The index of the desired hash + @param padding Type of padding (LTC_PKCS_1_OAEP or LTC_PKCS_1_V1_5) + @param key The RSA key to encrypt to + @return CRYPT_OK if successful +*/ +int rsa_encrypt_key_ex(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + const unsigned char *lparam, unsigned long lparamlen, + prng_state *prng, int prng_idx, int hash_idx, int padding, rsa_key *key) +{ + unsigned long modulus_bitlen, modulus_bytelen, x; + int err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(key != NULL); + + /* valid padding? */ + if ((padding != LTC_PKCS_1_V1_5) && + (padding != LTC_PKCS_1_OAEP)) { + return CRYPT_PK_INVALID_PADDING; + } + + /* valid prng? */ + if ((err = prng_is_valid(prng_idx)) != CRYPT_OK) { + return err; + } + + if (padding == LTC_PKCS_1_OAEP) { + /* valid hash? */ + if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { + return err; + } + } + + /* get modulus len in bits */ + modulus_bitlen = mp_count_bits( (key->N)); + + /* outlen must be at least the size of the modulus */ + modulus_bytelen = mp_unsigned_bin_size( (key->N)); + if (modulus_bytelen > *outlen) { + *outlen = modulus_bytelen; + return CRYPT_BUFFER_OVERFLOW; + } + + if (padding == LTC_PKCS_1_OAEP) { + /* OAEP pad the key */ + x = *outlen; + if ((err = pkcs_1_oaep_encode(in, inlen, lparam, + lparamlen, modulus_bitlen, prng, prng_idx, hash_idx, + out, &x)) != CRYPT_OK) { + return err; + } + } else { + /* PKCS #1 v1.5 pad the key */ + x = *outlen; + if ((err = pkcs_1_v1_5_encode(in, inlen, LTC_PKCS_1_EME, + modulus_bitlen, prng, prng_idx, + out, &x)) != CRYPT_OK) { + return err; + } + } + + /* rsa exptmod the OAEP or PKCS #1 v1.5 pad */ + return ltc_mp.rsa_me(out, x, out, outlen, PK_PUBLIC, key); +} + +#endif /* LTC_MRSA */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_export.c b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_export.c new file mode 100644 index 000000000..efd61d6f8 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_export.c @@ -0,0 +1,97 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file rsa_export.c + Export RSA PKCS keys, Tom St Denis +*/ + +#ifdef LTC_MRSA + +/** + This will export either an RSAPublicKey or RSAPrivateKey [defined in PKCS #1 v2.1] + @param out [out] Destination of the packet + @param outlen [in/out] The max size and resulting size of the packet + @param type The type of exported key (PK_PRIVATE or PK_PUBLIC) + @param key The RSA key to export + @return CRYPT_OK if successful +*/ +int rsa_export(unsigned char *out, unsigned long *outlen, int type, rsa_key *key) +{ + unsigned long zero=0; + int err; + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(key != NULL); + + /* type valid? */ + if (!(key->type == PK_PRIVATE) && (type == PK_PRIVATE)) { + return CRYPT_PK_INVALID_TYPE; + } + + if (type == PK_PRIVATE) { + /* private key */ + /* output is + Version, n, e, d, p, q, d mod (p-1), d mod (q - 1), 1/q mod p + */ + return der_encode_sequence_multi(out, outlen, + LTC_ASN1_SHORT_INTEGER, 1UL, &zero, + LTC_ASN1_INTEGER, 1UL, key->N, + LTC_ASN1_INTEGER, 1UL, key->e, + LTC_ASN1_INTEGER, 1UL, key->d, + LTC_ASN1_INTEGER, 1UL, key->p, + LTC_ASN1_INTEGER, 1UL, key->q, + LTC_ASN1_INTEGER, 1UL, key->dP, + LTC_ASN1_INTEGER, 1UL, key->dQ, + LTC_ASN1_INTEGER, 1UL, key->qP, + LTC_ASN1_EOL, 0UL, NULL); + } else { + /* public key */ + unsigned long tmplen, *ptmplen; + unsigned char* tmp = NULL; + + if (type & PK_STD) { + tmplen = (unsigned long)(mp_count_bits(key->N) / 8) * 2 + 8; + tmp = XMALLOC(tmplen); + ptmplen = &tmplen; + if (tmp == NULL) { + return CRYPT_MEM; + } + } + else { + tmp = out; + ptmplen = outlen; + } + + err = der_encode_sequence_multi(tmp, ptmplen, + LTC_ASN1_INTEGER, 1UL, key->N, + LTC_ASN1_INTEGER, 1UL, key->e, + LTC_ASN1_EOL, 0UL, NULL); + + if ((err != CRYPT_OK) || !(type & PK_STD)) { + goto finish; + } + + err = der_encode_subject_public_key_info(out, outlen, + PKA_RSA, tmp, tmplen, LTC_ASN1_NULL, NULL, 0); + +finish: + if (tmp != out) + XFREE(tmp); + return err; + + } +} + +#endif /* LTC_MRSA */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_exptmod.c b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_exptmod.c new file mode 100644 index 000000000..37f62d11b --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_exptmod.c @@ -0,0 +1,182 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file rsa_exptmod.c + RSA PKCS exptmod, Tom St Denis + Added RSA blinding --nmav +*/ + +#ifdef LTC_MRSA + +/** + Compute an RSA modular exponentiation + @param in The input data to send into RSA + @param inlen The length of the input (octets) + @param out [out] The destination + @param outlen [in/out] The max size and resulting size of the output + @param which Which exponent to use, e.g. PK_PRIVATE or PK_PUBLIC + @param key The RSA key to use + @return CRYPT_OK if successful +*/ +int rsa_exptmod(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, int which, + rsa_key *key) +{ + void *tmp, *tmpa, *tmpb; + #ifdef LTC_RSA_BLINDING + void *rnd, *rndi /* inverse of rnd */; + #endif + unsigned long x; + int err, has_crt_parameters; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(key != NULL); + + /* is the key of the right type for the operation? */ + if (which == PK_PRIVATE && (key->type != PK_PRIVATE)) { + return CRYPT_PK_NOT_PRIVATE; + } + + /* must be a private or public operation */ + if (which != PK_PRIVATE && which != PK_PUBLIC) { + return CRYPT_PK_INVALID_TYPE; + } + + /* init and copy into tmp */ + if ((err = mp_init_multi(&tmp, &tmpa, &tmpb, +#ifdef LTC_RSA_BLINDING + &rnd, &rndi, +#endif /* LTC_RSA_BLINDING */ + NULL)) != CRYPT_OK) + { return err; } + if ((err = mp_read_unsigned_bin(tmp, (unsigned char *)in, (int)inlen)) != CRYPT_OK) + { goto error; } + + + /* sanity check on the input */ + if (mp_cmp(key->N, tmp) == LTC_MP_LT) { + err = CRYPT_PK_INVALID_SIZE; + goto error; + } + + /* are we using the private exponent and is the key optimized? */ + if (which == PK_PRIVATE) { + #ifdef LTC_RSA_BLINDING + /* do blinding */ + err = mp_rand(rnd, mp_get_digit_count(key->N)); + if (err != CRYPT_OK) { + goto error; + } + + /* rndi = 1/rnd mod N */ + err = mp_invmod(rnd, key->N, rndi); + if (err != CRYPT_OK) { + goto error; + } + + /* rnd = rnd^e */ + err = mp_exptmod( rnd, key->e, key->N, rnd); + if (err != CRYPT_OK) { + goto error; + } + + /* tmp = tmp*rnd mod N */ + err = mp_mulmod( tmp, rnd, key->N, tmp); + if (err != CRYPT_OK) { + goto error; + } + #endif /* LTC_RSA_BLINDING */ + + has_crt_parameters = (key->p != NULL) && (mp_get_digit_count(key->p) != 0) && + (key->q != NULL) && (mp_get_digit_count(key->q) != 0) && + (key->dP != NULL) && (mp_get_digit_count(key->dP) != 0) && + (key->dQ != NULL) && (mp_get_digit_count(key->dQ) != 0) && + (key->qP != NULL) && (mp_get_digit_count(key->qP) != 0); + + if (!has_crt_parameters) { + /* + * In case CRT optimization parameters are not provided, + * the private key is directly used to exptmod it + */ + if ((err = mp_exptmod(tmp, key->d, key->N, tmp)) != CRYPT_OK) { goto error; } + } else { + /* tmpa = tmp^dP mod p */ + if ((err = mp_exptmod(tmp, key->dP, key->p, tmpa)) != CRYPT_OK) { goto error; } + + /* tmpb = tmp^dQ mod q */ + if ((err = mp_exptmod(tmp, key->dQ, key->q, tmpb)) != CRYPT_OK) { goto error; } + + /* tmp = (tmpa - tmpb) * qInv (mod p) */ + if ((err = mp_sub(tmpa, tmpb, tmp)) != CRYPT_OK) { goto error; } + if ((err = mp_mulmod(tmp, key->qP, key->p, tmp)) != CRYPT_OK) { goto error; } + + /* tmp = tmpb + q * tmp */ + if ((err = mp_mul(tmp, key->q, tmp)) != CRYPT_OK) { goto error; } + if ((err = mp_add(tmp, tmpb, tmp)) != CRYPT_OK) { goto error; } + } + + #ifdef LTC_RSA_BLINDING + /* unblind */ + err = mp_mulmod( tmp, rndi, key->N, tmp); + if (err != CRYPT_OK) { + goto error; + } + #endif + + #ifdef LTC_RSA_CRT_HARDENING + if (has_crt_parameters) { + if ((err = mp_exptmod(tmp, key->e, key->N, tmpa)) != CRYPT_OK) { goto error; } + if ((err = mp_read_unsigned_bin(tmpb, (unsigned char *)in, (int)inlen)) != CRYPT_OK) { goto error; } + if (mp_cmp(tmpa, tmpb) != LTC_MP_EQ) { err = CRYPT_ERROR; goto error; } + } + #endif + } else { + /* exptmod it */ + if ((err = mp_exptmod(tmp, key->e, key->N, tmp)) != CRYPT_OK) { goto error; } + } + + /* read it back */ + x = (unsigned long)mp_unsigned_bin_size(key->N); + if (x > *outlen) { + *outlen = x; + err = CRYPT_BUFFER_OVERFLOW; + goto error; + } + + /* this should never happen ... */ + if (mp_unsigned_bin_size(tmp) > mp_unsigned_bin_size(key->N)) { + err = CRYPT_ERROR; + goto error; + } + *outlen = x; + + /* convert it */ + zeromem(out, x); + if ((err = mp_to_unsigned_bin(tmp, out+(x-mp_unsigned_bin_size(tmp)))) != CRYPT_OK) { goto error; } + + /* clean up and return */ + err = CRYPT_OK; +error: + mp_clear_multi( +#ifdef LTC_RSA_BLINDING + rndi, rnd, +#endif /* LTC_RSA_BLINDING */ + tmpb, tmpa, tmp, NULL); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_free.c b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_free.c new file mode 100644 index 000000000..1e62f097e --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_free.c @@ -0,0 +1,32 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file rsa_free.c + Free an RSA key, Tom St Denis +*/ + +#ifdef LTC_MRSA + +/** + Free an RSA key from memory + @param key The RSA key to free +*/ +void rsa_free(rsa_key *key) +{ + LTC_ARGCHKVD(key != NULL); + mp_cleanup_multi(&key->q, &key->p, &key->qP, &key->dP, &key->dQ, &key->N, &key->d, &key->e, NULL); +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_get_size.c b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_get_size.c new file mode 100644 index 000000000..8c9019475 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_get_size.c @@ -0,0 +1,40 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file rsa_get_size.c + Retrieve the size of an RSA key, Steffen Jaeckel. +*/ + +#ifdef LTC_MRSA + +/** + Retrieve the size in bytes of an RSA key. + @param key The RSA key + @return The size in bytes of the RSA key or INT_MAX on error. +*/ +int rsa_get_size(rsa_key *key) +{ + int ret = INT_MAX; + LTC_ARGCHK(key != NULL); + + if (key) + { + ret = mp_unsigned_bin_size(key->N); + } /* if */ + + return ret; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_import.c b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_import.c new file mode 100644 index 000000000..84cd6f650 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_import.c @@ -0,0 +1,129 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file rsa_import.c + Import a PKCS RSA key, Tom St Denis +*/ + +#ifdef LTC_MRSA + +/** + Import an RSAPublicKey or RSAPrivateKey [two-prime only, only support >= 1024-bit keys, defined in PKCS #1 v2.1] + @param in The packet to import from + @param inlen It's length (octets) + @param key [out] Destination for newly imported key + @return CRYPT_OK if successful, upon error allocated memory is freed +*/ +int rsa_import(const unsigned char *in, unsigned long inlen, rsa_key *key) +{ + int err; + void *zero; + unsigned char *tmpbuf=NULL; + unsigned long tmpbuf_len; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(ltc_mp.name != NULL); + + /* init key */ + if ((err = mp_init_multi(&key->e, &key->d, &key->N, &key->dQ, + &key->dP, &key->qP, &key->p, &key->q, NULL)) != CRYPT_OK) { + return err; + } + + /* see if the OpenSSL DER format RSA public key will work */ + tmpbuf_len = inlen; + tmpbuf = XCALLOC(1, tmpbuf_len); + if (tmpbuf == NULL) { + err = CRYPT_MEM; + goto LBL_ERR; + } + + err = der_decode_subject_public_key_info(in, inlen, + PKA_RSA, tmpbuf, &tmpbuf_len, + LTC_ASN1_NULL, NULL, 0); + + if (err == CRYPT_OK) { /* SubjectPublicKeyInfo format */ + + /* now it should be SEQUENCE { INTEGER, INTEGER } */ + if ((err = der_decode_sequence_multi(tmpbuf, tmpbuf_len, + LTC_ASN1_INTEGER, 1UL, key->N, + LTC_ASN1_INTEGER, 1UL, key->e, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { + goto LBL_ERR; + } + key->type = PK_PUBLIC; + err = CRYPT_OK; + goto LBL_FREE; + } + + /* not SSL public key, try to match against PKCS #1 standards */ + err = der_decode_sequence_multi(in, inlen, LTC_ASN1_INTEGER, 1UL, key->N, + LTC_ASN1_EOL, 0UL, NULL); + + if (err != CRYPT_OK && err != CRYPT_INPUT_TOO_LONG) { + goto LBL_ERR; + } + + if (mp_cmp_d(key->N, 0) == LTC_MP_EQ) { + if ((err = mp_init(&zero)) != CRYPT_OK) { + goto LBL_ERR; + } + /* it's a private key */ + if ((err = der_decode_sequence_multi(in, inlen, + LTC_ASN1_INTEGER, 1UL, zero, + LTC_ASN1_INTEGER, 1UL, key->N, + LTC_ASN1_INTEGER, 1UL, key->e, + LTC_ASN1_INTEGER, 1UL, key->d, + LTC_ASN1_INTEGER, 1UL, key->p, + LTC_ASN1_INTEGER, 1UL, key->q, + LTC_ASN1_INTEGER, 1UL, key->dP, + LTC_ASN1_INTEGER, 1UL, key->dQ, + LTC_ASN1_INTEGER, 1UL, key->qP, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { + mp_clear(zero); + goto LBL_ERR; + } + mp_clear(zero); + key->type = PK_PRIVATE; + } else if (mp_cmp_d(key->N, 1) == LTC_MP_EQ) { + /* we don't support multi-prime RSA */ + err = CRYPT_PK_INVALID_TYPE; + goto LBL_ERR; + } else { + /* it's a public key and we lack e */ + if ((err = der_decode_sequence_multi(in, inlen, + LTC_ASN1_INTEGER, 1UL, key->N, + LTC_ASN1_INTEGER, 1UL, key->e, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { + goto LBL_ERR; + } + key->type = PK_PUBLIC; + } + err = CRYPT_OK; + goto LBL_FREE; + +LBL_ERR: + mp_clear_multi(key->d, key->e, key->N, key->dQ, key->dP, key->qP, key->p, key->q, NULL); + +LBL_FREE: + if (tmpbuf != NULL) + XFREE(tmpbuf); + + return err; +} + +#endif /* LTC_MRSA */ + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_import_pkcs8.c b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_import_pkcs8.c new file mode 100644 index 000000000..0546eb06a --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_import_pkcs8.c @@ -0,0 +1,153 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file rsa_import_pkcs8.c + Import a PKCS RSA key +*/ + +#ifdef LTC_MRSA + +/* Public-Key Cryptography Standards (PKCS) #8: + * Private-Key Information Syntax Specification Version 1.2 + * https://tools.ietf.org/html/rfc5208 + * + * PrivateKeyInfo ::= SEQUENCE { + * version Version, + * privateKeyAlgorithm PrivateKeyAlgorithmIdentifier, + * privateKey PrivateKey, + * attributes [0] IMPLICIT Attributes OPTIONAL } + * where: + * - Version ::= INTEGER + * - PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier + * - PrivateKey ::= OCTET STRING + * - Attributes ::= SET OF Attribute + * + * EncryptedPrivateKeyInfo ::= SEQUENCE { + * encryptionAlgorithm EncryptionAlgorithmIdentifier, + * encryptedData EncryptedData } + * where: + * - EncryptionAlgorithmIdentifier ::= AlgorithmIdentifier + * - EncryptedData ::= OCTET STRING + */ + +/** + Import an RSAPublicKey or RSAPrivateKey in PKCS#8 format + @param in The packet to import from + @param inlen It's length (octets) + @param passwd The password for decrypting privkey (NOT SUPPORTED YET) + @param passwdlen Password's length (octets) + @param key [out] Destination for newly imported key + @return CRYPT_OK if successful, upon error allocated memory is freed +*/ +int rsa_import_pkcs8(const unsigned char *in, unsigned long inlen, + const void *passwd, unsigned long passwdlen, + rsa_key *key) +{ + int err; + void *zero, *iter; + unsigned char *buf1 = NULL, *buf2 = NULL; + unsigned long buf1len, buf2len; + unsigned long oid[16]; + oid_st rsaoid; + ltc_asn1_list alg_seq[2], top_seq[3]; + ltc_asn1_list alg_seq_e[2], key_seq_e[2], top_seq_e[2]; + unsigned char *decrypted = NULL; + unsigned long decryptedlen; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(ltc_mp.name != NULL); + + /* get RSA alg oid */ + err = pk_get_oid(PKA_RSA, &rsaoid); + if (err != CRYPT_OK) { goto LBL_NOFREE; } + + /* alloc buffers */ + buf1len = inlen; /* approx. */ + buf1 = XMALLOC(buf1len); + if (buf1 == NULL) { err = CRYPT_MEM; goto LBL_NOFREE; } + buf2len = inlen; /* approx. */ + buf2 = XMALLOC(buf2len); + if (buf2 == NULL) { err = CRYPT_MEM; goto LBL_FREE1; } + + /* init key */ + err = mp_init_multi(&key->e, &key->d, &key->N, &key->dQ, &key->dP, &key->qP, &key->p, &key->q, &zero, &iter, NULL); + if (err != CRYPT_OK) { goto LBL_FREE2; } + + /* try to decode encrypted priv key */ + LTC_SET_ASN1(key_seq_e, 0, LTC_ASN1_OCTET_STRING, buf1, buf1len); + LTC_SET_ASN1(key_seq_e, 1, LTC_ASN1_INTEGER, iter, 1UL); + LTC_SET_ASN1(alg_seq_e, 0, LTC_ASN1_OBJECT_IDENTIFIER, oid, 16UL); + LTC_SET_ASN1(alg_seq_e, 1, LTC_ASN1_SEQUENCE, key_seq_e, 2UL); + LTC_SET_ASN1(top_seq_e, 0, LTC_ASN1_SEQUENCE, alg_seq_e, 2UL); + LTC_SET_ASN1(top_seq_e, 1, LTC_ASN1_OCTET_STRING, buf2, buf2len); + err=der_decode_sequence(in, inlen, top_seq_e, 2UL); + if (err == CRYPT_OK) { + LTC_UNUSED_PARAM(passwd); + LTC_UNUSED_PARAM(passwdlen); + /* XXX: TODO encrypted pkcs8 not implemented yet */ + /* fprintf(stderr, "decrypt: iter=%ld salt.len=%ld encdata.len=%ld\n", mp_get_int(iter), key_seq_e[0].size, top_seq_e[1].size); */ + err = CRYPT_PK_INVALID_TYPE; + goto LBL_ERR; + } + else { + decrypted = (unsigned char *)in; + decryptedlen = inlen; + } + + /* try to decode unencrypted priv key */ + LTC_SET_ASN1(alg_seq, 0, LTC_ASN1_OBJECT_IDENTIFIER, oid, 16UL); + LTC_SET_ASN1(alg_seq, 1, LTC_ASN1_NULL, NULL, 0UL); + LTC_SET_ASN1(top_seq, 0, LTC_ASN1_INTEGER, zero, 1UL); + LTC_SET_ASN1(top_seq, 1, LTC_ASN1_SEQUENCE, alg_seq, 2UL); + LTC_SET_ASN1(top_seq, 2, LTC_ASN1_OCTET_STRING, buf1, buf1len); + err=der_decode_sequence(decrypted, decryptedlen, top_seq, 3UL); + if (err != CRYPT_OK) { goto LBL_ERR; } + + /* check alg oid */ + if ((alg_seq[0].size != rsaoid.OIDlen) || + XMEMCMP(rsaoid.OID, alg_seq[0].data, rsaoid.OIDlen * sizeof(rsaoid.OID[0])) != 0) { + err = CRYPT_PK_INVALID_TYPE; + goto LBL_ERR; + } + + err = der_decode_sequence_multi(buf1, top_seq[2].size, + LTC_ASN1_INTEGER, 1UL, zero, + LTC_ASN1_INTEGER, 1UL, key->N, + LTC_ASN1_INTEGER, 1UL, key->e, + LTC_ASN1_INTEGER, 1UL, key->d, + LTC_ASN1_INTEGER, 1UL, key->p, + LTC_ASN1_INTEGER, 1UL, key->q, + LTC_ASN1_INTEGER, 1UL, key->dP, + LTC_ASN1_INTEGER, 1UL, key->dQ, + LTC_ASN1_INTEGER, 1UL, key->qP, + LTC_ASN1_EOL, 0UL, NULL); + if (err != CRYPT_OK) { goto LBL_ERR; } + key->type = PK_PRIVATE; + err = CRYPT_OK; + goto LBL_FREE2; + +LBL_ERR: + rsa_free(key); +LBL_FREE2: + mp_clear_multi(iter, zero, NULL); + XFREE(buf2); +LBL_FREE1: + XFREE(buf1); +LBL_NOFREE: + return err; +} + +#endif /* LTC_MRSA */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_import_x509.c b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_import_x509.c new file mode 100644 index 000000000..0f2d5f1ce --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_import_x509.c @@ -0,0 +1,118 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file rsa_import.c + Import an RSA key from a X.509 certificate, Steffen Jaeckel +*/ + +#ifdef LTC_MRSA + +/** + Import an RSA key from a X.509 certificate + @param in The packet to import from + @param inlen It's length (octets) + @param key [out] Destination for newly imported key + @return CRYPT_OK if successful, upon error allocated memory is freed +*/ +int rsa_import_x509(const unsigned char *in, unsigned long inlen, rsa_key *key) +{ + int err; + unsigned char *tmpbuf; + unsigned long tmpbuf_len, tmp_inlen; + ltc_asn1_list *decoded_list = NULL, *l; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(ltc_mp.name != NULL); + + /* init key */ + if ((err = mp_init_multi(&key->e, &key->d, &key->N, &key->dQ, + &key->dP, &key->qP, &key->p, &key->q, NULL)) != CRYPT_OK) { + return err; + } + + tmpbuf_len = inlen; + tmpbuf = XCALLOC(1, tmpbuf_len); + if (tmpbuf == NULL) { + err = CRYPT_MEM; + goto LBL_ERR; + } + + tmp_inlen = inlen; + if ((err = der_decode_sequence_flexi(in, &tmp_inlen, &decoded_list)) == CRYPT_OK) { + l = decoded_list; + /* Move 2 levels up in the tree + SEQUENCE + SEQUENCE + ... + */ + if (l->type == LTC_ASN1_SEQUENCE && l->child) { + l = l->child; + if (l->type == LTC_ASN1_SEQUENCE && l->child) { + l = l->child; + + err = CRYPT_ERROR; + + /* Move forward in the tree until we find this combination + ... + SEQUENCE + SEQUENCE + OBJECT IDENTIFIER 1.2.840.113549.1.1.1 + NULL + BIT STRING + */ + do { + /* The additional check for l->data is there to make sure + * we won't try to decode a list that has been 'shrunk' + */ + if (l->type == LTC_ASN1_SEQUENCE && l->data && l->child && + l->child->type == LTC_ASN1_SEQUENCE && l->child->child && + l->child->child->type == LTC_ASN1_OBJECT_IDENTIFIER && l->child->next && + l->child->next->type == LTC_ASN1_BIT_STRING) { + err = der_decode_subject_public_key_info(l->data, l->size, + PKA_RSA, tmpbuf, &tmpbuf_len, + LTC_ASN1_NULL, NULL, 0); + if (err == CRYPT_OK) { + /* now it should be SEQUENCE { INTEGER, INTEGER } */ + if ((err = der_decode_sequence_multi(tmpbuf, tmpbuf_len, + LTC_ASN1_INTEGER, 1UL, key->N, + LTC_ASN1_INTEGER, 1UL, key->e, + LTC_ASN1_EOL, 0UL, NULL)) != CRYPT_OK) { + goto LBL_ERR; + } + key->type = PK_PUBLIC; + err = CRYPT_OK; + goto LBL_FREE; + } + } + l = l->next; + } while(l); + } + } + } + + +LBL_ERR: + rsa_free(key); + +LBL_FREE: + if (decoded_list) der_free_sequence_flexi(decoded_list); + if (tmpbuf != NULL) XFREE(tmpbuf); + + return err; +} + +#endif /* LTC_MRSA */ + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_make_key.c b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_make_key.c new file mode 100644 index 000000000..c5c4c2884 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_make_key.c @@ -0,0 +1,107 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file rsa_make_key.c + RSA key generation, Tom St Denis +*/ + +#ifdef LTC_MRSA + +/** + Create an RSA key + @param prng An active PRNG state + @param wprng The index of the PRNG desired + @param size The size of the modulus (key size) desired (octets) + @param e The "e" value (public key). e==65537 is a good choice + @param key [out] Destination of a newly created private key pair + @return CRYPT_OK if successful, upon error all allocated ram is freed +*/ +int rsa_make_key(prng_state *prng, int wprng, int size, long e, rsa_key *key) +{ + void *p, *q, *tmp1, *tmp2, *tmp3; + int err; + + LTC_ARGCHK(ltc_mp.name != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(size > 0); + + if ((e < 3) || ((e & 1) == 0)) { + return CRYPT_INVALID_ARG; + } + + if ((err = prng_is_valid(wprng)) != CRYPT_OK) { + return err; + } + + if ((err = mp_init_multi(&p, &q, &tmp1, &tmp2, &tmp3, NULL)) != CRYPT_OK) { + return err; + } + + /* make primes p and q (optimization provided by Wayne Scott) */ + if ((err = mp_set_int(tmp3, e)) != CRYPT_OK) { goto cleanup; } /* tmp3 = e */ + + /* make prime "p" */ + do { + if ((err = rand_prime( p, size/2, prng, wprng)) != CRYPT_OK) { goto cleanup; } + if ((err = mp_sub_d( p, 1, tmp1)) != CRYPT_OK) { goto cleanup; } /* tmp1 = p-1 */ + if ((err = mp_gcd( tmp1, tmp3, tmp2)) != CRYPT_OK) { goto cleanup; } /* tmp2 = gcd(p-1, e) */ + } while (mp_cmp_d( tmp2, 1) != 0); /* while e divides p-1 */ + + /* make prime "q" */ + do { + if ((err = rand_prime( q, size/2, prng, wprng)) != CRYPT_OK) { goto cleanup; } + if ((err = mp_sub_d( q, 1, tmp1)) != CRYPT_OK) { goto cleanup; } /* tmp1 = q-1 */ + if ((err = mp_gcd( tmp1, tmp3, tmp2)) != CRYPT_OK) { goto cleanup; } /* tmp2 = gcd(q-1, e) */ + } while (mp_cmp_d( tmp2, 1) != 0); /* while e divides q-1 */ + + /* tmp1 = lcm(p-1, q-1) */ + if ((err = mp_sub_d( p, 1, tmp2)) != CRYPT_OK) { goto cleanup; } /* tmp2 = p-1 */ + /* tmp1 = q-1 (previous do/while loop) */ + if ((err = mp_lcm( tmp1, tmp2, tmp1)) != CRYPT_OK) { goto cleanup; } /* tmp1 = lcm(p-1, q-1) */ + + /* make key */ + if ((err = mp_init_multi(&key->e, &key->d, &key->N, &key->dQ, &key->dP, &key->qP, &key->p, &key->q, NULL)) != CRYPT_OK) { + goto errkey; + } + + if ((err = mp_set_int( key->e, e)) != CRYPT_OK) { goto errkey; } /* key->e = e */ + if ((err = mp_invmod( key->e, tmp1, key->d)) != CRYPT_OK) { goto errkey; } /* key->d = 1/e mod lcm(p-1,q-1) */ + if ((err = mp_mul( p, q, key->N)) != CRYPT_OK) { goto errkey; } /* key->N = pq */ + + /* optimize for CRT now */ + /* find d mod q-1 and d mod p-1 */ + if ((err = mp_sub_d( p, 1, tmp1)) != CRYPT_OK) { goto errkey; } /* tmp1 = q-1 */ + if ((err = mp_sub_d( q, 1, tmp2)) != CRYPT_OK) { goto errkey; } /* tmp2 = p-1 */ + if ((err = mp_mod( key->d, tmp1, key->dP)) != CRYPT_OK) { goto errkey; } /* dP = d mod p-1 */ + if ((err = mp_mod( key->d, tmp2, key->dQ)) != CRYPT_OK) { goto errkey; } /* dQ = d mod q-1 */ + if ((err = mp_invmod( q, p, key->qP)) != CRYPT_OK) { goto errkey; } /* qP = 1/q mod p */ + + if ((err = mp_copy( p, key->p)) != CRYPT_OK) { goto errkey; } + if ((err = mp_copy( q, key->q)) != CRYPT_OK) { goto errkey; } + + /* set key type (in this case it's CRT optimized) */ + key->type = PK_PRIVATE; + + /* return ok and free temps */ + err = CRYPT_OK; + goto cleanup; +errkey: + rsa_free(key); +cleanup: + mp_clear_multi(tmp3, tmp2, tmp1, q, p, NULL); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_set.c b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_set.c new file mode 100644 index 000000000..0d540c4d4 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_set.c @@ -0,0 +1,134 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + + +#ifdef LTC_MRSA + +/** + Import RSA key from raw numbers + + @param N RSA's N + @param Nlen RSA's N's length + @param e RSA's e + @param elen RSA's e's length + @param d RSA's d (only private key, NULL for public key) + @param dlen RSA's d's length + @param key [out] the destination for the imported key + @return CRYPT_OK if successful +*/ +int rsa_set_key(const unsigned char *N, unsigned long Nlen, + const unsigned char *e, unsigned long elen, + const unsigned char *d, unsigned long dlen, + rsa_key *key) +{ + int err; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(N != NULL); + LTC_ARGCHK(e != NULL); + LTC_ARGCHK(ltc_mp.name != NULL); + + err = mp_init_multi(&key->e, &key->d, &key->N, &key->dQ, &key->dP, &key->qP, &key->p, &key->q, NULL); + if (err != CRYPT_OK) return err; + + if ((err = mp_read_unsigned_bin(key->N , (unsigned char *)N , Nlen)) != CRYPT_OK) { goto LBL_ERR; } + if ((err = mp_read_unsigned_bin(key->e , (unsigned char *)e , elen)) != CRYPT_OK) { goto LBL_ERR; } + if (d && dlen) { + if ((err = mp_read_unsigned_bin(key->d , (unsigned char *)d , dlen)) != CRYPT_OK) { goto LBL_ERR; } + key->type = PK_PRIVATE; + } + else { + key->type = PK_PUBLIC; + } + return CRYPT_OK; + +LBL_ERR: + rsa_free(key); + return err; +} + +/** + Import factors of an RSA key from raw numbers + + Only for private keys. + + @param p RSA's p + @param plen RSA's p's length + @param q RSA's q + @param qlen RSA's q's length + @param key [out] the destination for the imported key + @return CRYPT_OK if successful +*/ +int rsa_set_factors(const unsigned char *p, unsigned long plen, + const unsigned char *q, unsigned long qlen, + rsa_key *key) +{ + int err; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(p != NULL); + LTC_ARGCHK(q != NULL); + LTC_ARGCHK(ltc_mp.name != NULL); + + if (key->type != PK_PRIVATE) return CRYPT_PK_TYPE_MISMATCH; + + if ((err = mp_read_unsigned_bin(key->p , (unsigned char *)p , plen)) != CRYPT_OK) { goto LBL_ERR; } + if ((err = mp_read_unsigned_bin(key->q , (unsigned char *)q , qlen)) != CRYPT_OK) { goto LBL_ERR; } + return CRYPT_OK; + +LBL_ERR: + rsa_free(key); + return err; +} + +/** + Import CRT parameters of an RSA key from raw numbers + + Only for private keys. + + @param dP RSA's dP + @param dPlen RSA's dP's length + @param dQ RSA's dQ + @param dQlen RSA's dQ's length + @param qP RSA's qP + @param qPlen RSA's qP's length + @param key [out] the destination for the imported key + @return CRYPT_OK if successful +*/ +int rsa_set_crt_params(const unsigned char *dP, unsigned long dPlen, + const unsigned char *dQ, unsigned long dQlen, + const unsigned char *qP, unsigned long qPlen, + rsa_key *key) +{ + int err; + + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(dP != NULL); + LTC_ARGCHK(dQ != NULL); + LTC_ARGCHK(qP != NULL); + LTC_ARGCHK(ltc_mp.name != NULL); + + if (key->type != PK_PRIVATE) return CRYPT_PK_TYPE_MISMATCH; + + if ((err = mp_read_unsigned_bin(key->dP, (unsigned char *)dP, dPlen)) != CRYPT_OK) { goto LBL_ERR; } + if ((err = mp_read_unsigned_bin(key->dQ, (unsigned char *)dQ, dQlen)) != CRYPT_OK) { goto LBL_ERR; } + if ((err = mp_read_unsigned_bin(key->qP, (unsigned char *)qP, qPlen)) != CRYPT_OK) { goto LBL_ERR; } + return CRYPT_OK; + +LBL_ERR: + rsa_free(key); + return err; +} + +#endif /* LTC_MRSA */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_sign_hash.c b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_sign_hash.c new file mode 100644 index 000000000..05c7155d5 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_sign_hash.c @@ -0,0 +1,146 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file rsa_sign_hash.c + RSA PKCS #1 v1.5 and v2 PSS sign hash, Tom St Denis and Andreas Lange +*/ + +#ifdef LTC_MRSA + +/** + PKCS #1 pad then sign + @param in The hash to sign + @param inlen The length of the hash to sign (octets) + @param out [out] The signature + @param outlen [in/out] The max size and resulting size of the signature + @param padding Type of padding (LTC_PKCS_1_PSS, LTC_PKCS_1_V1_5 or LTC_PKCS_1_V1_5_NA1) + @param prng An active PRNG state + @param prng_idx The index of the PRNG desired + @param hash_idx The index of the hash desired + @param saltlen The length of the salt desired (octets) + @param key The private RSA key to use + @return CRYPT_OK if successful +*/ +int rsa_sign_hash_ex(const unsigned char *in, unsigned long inlen, + unsigned char *out, unsigned long *outlen, + int padding, + prng_state *prng, int prng_idx, + int hash_idx, unsigned long saltlen, + rsa_key *key) +{ + unsigned long modulus_bitlen, modulus_bytelen, x, y; + int err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(key != NULL); + + /* valid padding? */ + if ((padding != LTC_PKCS_1_V1_5) && + (padding != LTC_PKCS_1_PSS) && + (padding != LTC_PKCS_1_V1_5_NA1)) { + return CRYPT_PK_INVALID_PADDING; + } + + if (padding == LTC_PKCS_1_PSS) { + /* valid prng ? */ + if ((err = prng_is_valid(prng_idx)) != CRYPT_OK) { + return err; + } + } + + if (padding != LTC_PKCS_1_V1_5_NA1) { + /* valid hash ? */ + if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { + return err; + } + } + + /* get modulus len in bits */ + modulus_bitlen = mp_count_bits((key->N)); + + /* outlen must be at least the size of the modulus */ + modulus_bytelen = mp_unsigned_bin_size((key->N)); + if (modulus_bytelen > *outlen) { + *outlen = modulus_bytelen; + return CRYPT_BUFFER_OVERFLOW; + } + + if (padding == LTC_PKCS_1_PSS) { + /* PSS pad the key */ + x = *outlen; + if ((err = pkcs_1_pss_encode(in, inlen, saltlen, prng, prng_idx, + hash_idx, modulus_bitlen, out, &x)) != CRYPT_OK) { + return err; + } + } else { + /* PKCS #1 v1.5 pad the hash */ + unsigned char *tmpin; + + if (padding == LTC_PKCS_1_V1_5) { + ltc_asn1_list digestinfo[2], siginfo[2]; + /* not all hashes have OIDs... so sad */ + if (hash_descriptor[hash_idx].OIDlen == 0) { + return CRYPT_INVALID_ARG; + } + + /* construct the SEQUENCE + SEQUENCE { + SEQUENCE {hashoid OID + blah NULL + } + hash OCTET STRING + } + */ + LTC_SET_ASN1(digestinfo, 0, LTC_ASN1_OBJECT_IDENTIFIER, hash_descriptor[hash_idx].OID, hash_descriptor[hash_idx].OIDlen); + LTC_SET_ASN1(digestinfo, 1, LTC_ASN1_NULL, NULL, 0); + LTC_SET_ASN1(siginfo, 0, LTC_ASN1_SEQUENCE, digestinfo, 2); + LTC_SET_ASN1(siginfo, 1, LTC_ASN1_OCTET_STRING, in, inlen); + + /* allocate memory for the encoding */ + y = mp_unsigned_bin_size(key->N); + tmpin = XMALLOC(y); + if (tmpin == NULL) { + return CRYPT_MEM; + } + + if ((err = der_encode_sequence(siginfo, 2, tmpin, &y)) != CRYPT_OK) { + XFREE(tmpin); + return err; + } + } else { + /* set the pointer and data-length to the input values */ + tmpin = (unsigned char *)in; + y = inlen; + } + + x = *outlen; + err = pkcs_1_v1_5_encode(tmpin, y, LTC_PKCS_1_EMSA, modulus_bitlen, NULL, 0, out, &x); + + if (padding == LTC_PKCS_1_V1_5) { + XFREE(tmpin); + } + + if (err != CRYPT_OK) { + return err; + } + } + + /* RSA encode it */ + return ltc_mp.rsa_me(out, x, out, outlen, PK_PRIVATE, key); +} + +#endif /* LTC_MRSA */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_sign_saltlen_get.c b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_sign_saltlen_get.c new file mode 100644 index 000000000..b217f94e3 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_sign_saltlen_get.c @@ -0,0 +1,47 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file rsa_sign_saltlen_get.c + Retrieve the maximum size of the salt, Steffen Jaeckel. +*/ + +#ifdef LTC_MRSA + +/** + Retrieve the maximum possible size of the salt when creating a PKCS#1 PSS signature. + @param padding Type of padding (LTC_PKCS_1_PSS only) + @param hash_idx The index of the desired hash + @param key The RSA key + @return The maximum salt length in bytes or INT_MAX on error. +*/ +int rsa_sign_saltlen_get_max_ex(int padding, int hash_idx, rsa_key *key) +{ + int ret = INT_MAX; + LTC_ARGCHK(key != NULL); + + if ((hash_is_valid(hash_idx) == CRYPT_OK) && + (padding == LTC_PKCS_1_PSS)) + { + ret = rsa_get_size(key); + if (ret < INT_MAX) + { + ret -= (hash_descriptor[hash_idx].hashsize + 2); + } /* if */ + } /* if */ + + return ret; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_verify_hash.c b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_verify_hash.c new file mode 100644 index 000000000..b5846965f --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/pk/rsa/rsa_verify_hash.c @@ -0,0 +1,193 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file rsa_verify_hash.c + RSA PKCS #1 v1.5 or v2 PSS signature verification, Tom St Denis and Andreas Lange +*/ + +#ifdef LTC_MRSA + +/** + PKCS #1 de-sign then v1.5 or PSS depad + @param sig The signature data + @param siglen The length of the signature data (octets) + @param hash The hash of the message that was signed + @param hashlen The length of the hash of the message that was signed (octets) + @param padding Type of padding (LTC_PKCS_1_PSS, LTC_PKCS_1_V1_5 or LTC_PKCS_1_V1_5_NA1) + @param hash_idx The index of the desired hash + @param saltlen The length of the salt used during signature + @param stat [out] The result of the signature comparison, 1==valid, 0==invalid + @param key The public RSA key corresponding to the key that performed the signature + @return CRYPT_OK on success (even if the signature is invalid) +*/ +int rsa_verify_hash_ex(const unsigned char *sig, unsigned long siglen, + const unsigned char *hash, unsigned long hashlen, + int padding, + int hash_idx, unsigned long saltlen, + int *stat, rsa_key *key) +{ + unsigned long modulus_bitlen, modulus_bytelen, x; + int err; + unsigned char *tmpbuf; + + LTC_ARGCHK(hash != NULL); + LTC_ARGCHK(sig != NULL); + LTC_ARGCHK(stat != NULL); + LTC_ARGCHK(key != NULL); + + /* default to invalid */ + *stat = 0; + + /* valid padding? */ + + if ((padding != LTC_PKCS_1_V1_5) && + (padding != LTC_PKCS_1_PSS) && + (padding != LTC_PKCS_1_V1_5_NA1)) { + return CRYPT_PK_INVALID_PADDING; + } + + if (padding != LTC_PKCS_1_V1_5_NA1) { + /* valid hash ? */ + if ((err = hash_is_valid(hash_idx)) != CRYPT_OK) { + return err; + } + } + + /* get modulus len in bits */ + modulus_bitlen = mp_count_bits( (key->N)); + + /* outlen must be at least the size of the modulus */ + modulus_bytelen = mp_unsigned_bin_size( (key->N)); + if (modulus_bytelen != siglen) { + return CRYPT_INVALID_PACKET; + } + + /* allocate temp buffer for decoded sig */ + tmpbuf = XMALLOC(siglen); + if (tmpbuf == NULL) { + return CRYPT_MEM; + } + + /* RSA decode it */ + x = siglen; + if ((err = ltc_mp.rsa_me(sig, siglen, tmpbuf, &x, PK_PUBLIC, key)) != CRYPT_OK) { + XFREE(tmpbuf); + return err; + } + + /* make sure the output is the right size */ + if (x != siglen) { + XFREE(tmpbuf); + return CRYPT_INVALID_PACKET; + } + + if (padding == LTC_PKCS_1_PSS) { + /* PSS decode and verify it */ + + if(modulus_bitlen%8 == 1){ + err = pkcs_1_pss_decode(hash, hashlen, tmpbuf+1, x-1, saltlen, hash_idx, modulus_bitlen, stat); + } + else{ + err = pkcs_1_pss_decode(hash, hashlen, tmpbuf, x, saltlen, hash_idx, modulus_bitlen, stat); + } + + } else { + /* PKCS #1 v1.5 decode it */ + unsigned char *out; + unsigned long outlen; + int decoded; + + /* allocate temp buffer for decoded hash */ + outlen = ((modulus_bitlen >> 3) + (modulus_bitlen & 7 ? 1 : 0)) - 3; + out = XMALLOC(outlen); + if (out == NULL) { + err = CRYPT_MEM; + goto bail_2; + } + + if ((err = pkcs_1_v1_5_decode(tmpbuf, x, LTC_PKCS_1_EMSA, modulus_bitlen, out, &outlen, &decoded)) != CRYPT_OK) { + XFREE(out); + goto bail_2; + } + + if (padding == LTC_PKCS_1_V1_5) { + unsigned long loid[16], reallen; + ltc_asn1_list digestinfo[2], siginfo[2]; + + /* not all hashes have OIDs... so sad */ + if (hash_descriptor[hash_idx].OIDlen == 0) { + err = CRYPT_INVALID_ARG; + goto bail_2; + } + + /* now we must decode out[0...outlen-1] using ASN.1, test the OID and then test the hash */ + /* construct the SEQUENCE + SEQUENCE { + SEQUENCE {hashoid OID + blah NULL + } + hash OCTET STRING + } + */ + LTC_SET_ASN1(digestinfo, 0, LTC_ASN1_OBJECT_IDENTIFIER, loid, sizeof(loid)/sizeof(loid[0])); + LTC_SET_ASN1(digestinfo, 1, LTC_ASN1_NULL, NULL, 0); + LTC_SET_ASN1(siginfo, 0, LTC_ASN1_SEQUENCE, digestinfo, 2); + LTC_SET_ASN1(siginfo, 1, LTC_ASN1_OCTET_STRING, tmpbuf, siglen); + + if ((err = der_decode_sequence(out, outlen, siginfo, 2)) != CRYPT_OK) { + /* fallback to Legacy:missing NULL */ + LTC_SET_ASN1(siginfo, 0, LTC_ASN1_SEQUENCE, digestinfo, 1); + if ((err = der_decode_sequence(out, outlen, siginfo, 2)) != CRYPT_OK) { + XFREE(out); + goto bail_2; + } + } + + if ((err = der_length_sequence(siginfo, 2, &reallen)) != CRYPT_OK) { + XFREE(out); + goto bail_2; + } + + /* test OID */ + if ((reallen == outlen) && + (digestinfo[0].size == hash_descriptor[hash_idx].OIDlen) && + (XMEMCMP(digestinfo[0].data, hash_descriptor[hash_idx].OID, sizeof(unsigned long) * hash_descriptor[hash_idx].OIDlen) == 0) && + (siginfo[1].size == hashlen) && + (XMEMCMP(siginfo[1].data, hash, hashlen) == 0)) { + *stat = 1; + } + } else { + /* only check if the hash is equal */ + if ((hashlen == outlen) && + (XMEMCMP(out, hash, hashlen) == 0)) { + *stat = 1; + } + } + +#ifdef LTC_CLEAN_STACK + zeromem(out, outlen); +#endif + XFREE(out); + } + +bail_2: +#ifdef LTC_CLEAN_STACK + zeromem(tmpbuf, siglen); +#endif + XFREE(tmpbuf); + return err; +} + +#endif /* LTC_MRSA */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/prngs/chacha20.c b/fsbl/lib/libtomcrypt/src/prngs/chacha20.c new file mode 100644 index 000000000..72a6d63d7 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/prngs/chacha20.c @@ -0,0 +1,247 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + + /* the idea of re-keying loosely follows the approach used in: + * http://bxr.su/OpenBSD/lib/libc/crypt/arc4random.c + */ + +#include "tomcrypt.h" + +#ifdef LTC_CHACHA20_PRNG + +const struct ltc_prng_descriptor chacha20_prng_desc = +{ + "chacha20", + 40, + &chacha20_prng_start, + &chacha20_prng_add_entropy, + &chacha20_prng_ready, + &chacha20_prng_read, + &chacha20_prng_done, + &chacha20_prng_export, + &chacha20_prng_import, + &chacha20_prng_test +}; + +/** + Start the PRNG + @param prng The PRNG state to initialize + @return CRYPT_OK if successful +*/ +int chacha20_prng_start(prng_state *prng) +{ + LTC_ARGCHK(prng != NULL); + prng->ready = 0; + XMEMSET(&prng->chacha.ent, 0, sizeof(prng->chacha.ent)); + prng->chacha.idx = 0; + LTC_MUTEX_INIT(&prng->lock) + return CRYPT_OK; +} + +/** + Add entropy to the PRNG state + @param in The data to add + @param inlen Length of the data to add + @param prng PRNG state to update + @return CRYPT_OK if successful +*/ +int chacha20_prng_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng) +{ + unsigned char buf[40]; + unsigned long i; + int err; + + LTC_ARGCHK(prng != NULL); + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(inlen > 0); + + LTC_MUTEX_LOCK(&prng->lock); + if (prng->ready) { + /* chacha20_prng_ready() was already called, do "rekey" operation */ + if ((err = chacha_keystream(&prng->chacha.s, buf, sizeof(buf))) != CRYPT_OK) goto LBL_UNLOCK; + for(i = 0; i < inlen; i++) buf[i % sizeof(buf)] ^= in[i]; + /* key 32 bytes, 20 rounds */ + if ((err = chacha_setup(&prng->chacha.s, buf, 32, 20)) != CRYPT_OK) goto LBL_UNLOCK; + /* iv 8 bytes */ + if ((err = chacha_ivctr64(&prng->chacha.s, buf + 32, 8, 0)) != CRYPT_OK) goto LBL_UNLOCK; + /* clear KEY + IV */ + zeromem(buf, sizeof(buf)); + } + else { + /* chacha20_prng_ready() was not called yet, add entropy to ent buffer */ + while (inlen--) prng->chacha.ent[prng->chacha.idx++ % sizeof(prng->chacha.ent)] ^= *in++; + } + err = CRYPT_OK; +LBL_UNLOCK: + LTC_MUTEX_UNLOCK(&prng->lock); + return err; +} + +/** + Make the PRNG ready to read from + @param prng The PRNG to make active + @return CRYPT_OK if successful +*/ +int chacha20_prng_ready(prng_state *prng) +{ + int err; + + LTC_ARGCHK(prng != NULL); + + LTC_MUTEX_LOCK(&prng->lock); + if (prng->ready) { err = CRYPT_OK; goto LBL_UNLOCK; } + /* key 32 bytes, 20 rounds */ + if ((err = chacha_setup(&prng->chacha.s, prng->chacha.ent, 32, 20)) != CRYPT_OK) goto LBL_UNLOCK; + /* iv 8 bytes */ + if ((err = chacha_ivctr64(&prng->chacha.s, prng->chacha.ent + 32, 8, 0)) != CRYPT_OK) goto LBL_UNLOCK; + XMEMSET(&prng->chacha.ent, 0, sizeof(prng->chacha.ent)); + prng->chacha.idx = 0; + prng->ready = 1; +LBL_UNLOCK: + LTC_MUTEX_UNLOCK(&prng->lock); + return err; +} + +/** + Read from the PRNG + @param out Destination + @param outlen Length of output + @param prng The active PRNG to read from + @return Number of octets read +*/ +unsigned long chacha20_prng_read(unsigned char *out, unsigned long outlen, prng_state *prng) +{ + if (outlen == 0 || prng == NULL || out == NULL) return 0; + LTC_MUTEX_LOCK(&prng->lock); + if (!prng->ready) { outlen = 0; goto LBL_UNLOCK; } + if (chacha_keystream(&prng->chacha.s, out, outlen) != CRYPT_OK) outlen = 0; +LBL_UNLOCK: + LTC_MUTEX_UNLOCK(&prng->lock); + return outlen; +} + +/** + Terminate the PRNG + @param prng The PRNG to terminate + @return CRYPT_OK if successful +*/ +int chacha20_prng_done(prng_state *prng) +{ + int err; + LTC_ARGCHK(prng != NULL); + LTC_MUTEX_LOCK(&prng->lock); + prng->ready = 0; + err = chacha_done(&prng->chacha.s); + LTC_MUTEX_UNLOCK(&prng->lock); + LTC_MUTEX_DESTROY(&prng->lock); + return err; +} + +/** + Export the PRNG state + @param out [out] Destination + @param outlen [in/out] Max size and resulting size of the state + @param prng The PRNG to export + @return CRYPT_OK if successful +*/ +int chacha20_prng_export(unsigned char *out, unsigned long *outlen, prng_state *prng) +{ + unsigned long len = chacha20_prng_desc.export_size; + + LTC_ARGCHK(prng != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + if (*outlen < len) { + *outlen = len; + return CRYPT_BUFFER_OVERFLOW; + } + + if (chacha20_prng_read(out, len, prng) != len) { + return CRYPT_ERROR_READPRNG; + } + + *outlen = len; + return CRYPT_OK; +} + +/** + Import a PRNG state + @param in The PRNG state + @param inlen Size of the state + @param prng The PRNG to import + @return CRYPT_OK if successful +*/ +int chacha20_prng_import(const unsigned char *in, unsigned long inlen, prng_state *prng) +{ + int err; + + LTC_ARGCHK(prng != NULL); + LTC_ARGCHK(in != NULL); + if (inlen < (unsigned long)chacha20_prng_desc.export_size) return CRYPT_INVALID_ARG; + + if ((err = chacha20_prng_start(prng)) != CRYPT_OK) return err; + if ((err = chacha20_prng_add_entropy(in, inlen, prng)) != CRYPT_OK) return err; + return CRYPT_OK; +} + +/** + PRNG self-test + @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled +*/ +int chacha20_prng_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + prng_state st; + unsigned char en[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, + 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, + 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, + 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, + 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32 }; + unsigned char dmp[300]; + unsigned long dmplen = sizeof(dmp); + unsigned char out[500]; + unsigned char t1[] = { 0x59, 0xB2, 0x26, 0x95, 0x2B, 0x01, 0x8F, 0x05, 0xBE, 0xD8 }; + unsigned char t2[] = { 0x47, 0xC9, 0x0D, 0x03, 0xE4, 0x75, 0x34, 0x27, 0xBD, 0xDE }; + unsigned char t3[] = { 0xBC, 0xFA, 0xEF, 0x59, 0x37, 0x7F, 0x1A, 0x91, 0x1A, 0xA6 }; + int err; + + if ((err = chacha20_prng_start(&st)) != CRYPT_OK) return err; + /* add entropy to uninitialized prng */ + if ((err = chacha20_prng_add_entropy(en, sizeof(en), &st)) != CRYPT_OK) return err; + if ((err = chacha20_prng_ready(&st)) != CRYPT_OK) return err; + if (chacha20_prng_read(out, 10, &st) != 10) return CRYPT_ERROR_READPRNG; /* 10 bytes for testing */ + if (compare_testvector(out, 10, t1, sizeof(t1), "CHACHA-PRNG", 1)) return CRYPT_FAIL_TESTVECTOR; + if (chacha20_prng_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ + /* add entropy to already initialized prng */ + if ((err = chacha20_prng_add_entropy(en, sizeof(en), &st)) != CRYPT_OK) return err; + if (chacha20_prng_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ + if ((err = chacha20_prng_export(dmp, &dmplen, &st)) != CRYPT_OK) return err; + if (chacha20_prng_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ + if (chacha20_prng_read(out, 10, &st) != 10) return CRYPT_ERROR_READPRNG; /* 10 bytes for testing */ + if (compare_testvector(out, 10, t2, sizeof(t2), "CHACHA-PRNG", 2)) return CRYPT_FAIL_TESTVECTOR; + if ((err = chacha20_prng_done(&st)) != CRYPT_OK) return err; + if ((err = chacha20_prng_import(dmp, dmplen, &st)) != CRYPT_OK) return err; + if ((err = chacha20_prng_ready(&st)) != CRYPT_OK) return err; + if (chacha20_prng_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ + if (chacha20_prng_read(out, 10, &st) != 10) return CRYPT_ERROR_READPRNG; /* 10 bytes for testing */ + if (compare_testvector(out, 10, t3, sizeof(t3), "CHACHA-PRNG", 3)) return CRYPT_FAIL_TESTVECTOR; + if ((err = chacha20_prng_done(&st)) != CRYPT_OK) return err; + + return CRYPT_OK; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/prngs/fortuna.c b/fsbl/lib/libtomcrypt/src/prngs/fortuna.c new file mode 100644 index 000000000..1f0723341 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/prngs/fortuna.c @@ -0,0 +1,498 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file fortuna.c + Fortuna PRNG, Tom St Denis +*/ + +/* Implementation of Fortuna by Tom St Denis + +We deviate slightly here for reasons of simplicity [and to fit in the API]. First all "sources" +in the AddEntropy function are fixed to 0. Second since no reliable timer is provided +we reseed automatically when len(pool0) >= 64 or every LTC_FORTUNA_WD calls to the read function */ + +#ifdef LTC_FORTUNA + +/* requries LTC_SHA256 and AES */ +#if !(defined(LTC_RIJNDAEL) && defined(LTC_SHA256)) + #error LTC_FORTUNA requires LTC_SHA256 and LTC_RIJNDAEL (AES) +#endif + +#ifndef LTC_FORTUNA_POOLS + #warning LTC_FORTUNA_POOLS was not previously defined (old headers?) + #define LTC_FORTUNA_POOLS 32 +#endif + +#if LTC_FORTUNA_POOLS < 4 || LTC_FORTUNA_POOLS > 32 + #error LTC_FORTUNA_POOLS must be in [4..32] +#endif + +const struct ltc_prng_descriptor fortuna_desc = { + "fortuna", + (32 * LTC_FORTUNA_POOLS), /* default: 1024 */ + &fortuna_start, + &fortuna_add_entropy, + &fortuna_ready, + &fortuna_read, + &fortuna_done, + &fortuna_export, + &fortuna_import, + &fortuna_test +}; + +/* update the IV */ +static void _fortuna_update_iv(prng_state *prng) +{ + int x; + unsigned char *IV; + /* update IV */ + IV = prng->fortuna.IV; + for (x = 0; x < 16; x++) { + IV[x] = (IV[x] + 1) & 255; + if (IV[x] != 0) break; + } +} + +/* reseed the PRNG */ +static int _fortuna_reseed(prng_state *prng) +{ + unsigned char tmp[MAXBLOCKSIZE]; + hash_state md; + ulong64 reset_cnt; + int err, x; + + + /* new K == LTC_SHA256(K || s) where s == LTC_SHA256(P0) || LTC_SHA256(P1) ... */ + sha256_init(&md); + if ((err = sha256_process(&md, prng->fortuna.K, 32)) != CRYPT_OK) { + sha256_done(&md, tmp); + return err; + } + + reset_cnt = prng->fortuna.reset_cnt + 1; + + for (x = 0; x < LTC_FORTUNA_POOLS; x++) { + if (x == 0 || ((reset_cnt >> (x-1)) & 1) == 0) { + /* terminate this hash */ + if ((err = sha256_done(&prng->fortuna.pool[x], tmp)) != CRYPT_OK) { + sha256_done(&md, tmp); + return err; + } + /* add it to the string */ + if ((err = sha256_process(&md, tmp, 32)) != CRYPT_OK) { + sha256_done(&md, tmp); + return err; + } + /* reset this pool */ + if ((err = sha256_init(&prng->fortuna.pool[x])) != CRYPT_OK) { + sha256_done(&md, tmp); + return err; + } + } else { + break; + } + } + + /* finish key */ + if ((err = sha256_done(&md, prng->fortuna.K)) != CRYPT_OK) { + return err; + } + if ((err = rijndael_setup(prng->fortuna.K, 32, 0, &prng->fortuna.skey)) != CRYPT_OK) { + return err; + } + _fortuna_update_iv(prng); + + /* reset/update internals */ + prng->fortuna.pool0_len = 0; + prng->fortuna.wd = 0; + prng->fortuna.reset_cnt = reset_cnt; + + +#ifdef LTC_CLEAN_STACK + zeromem(&md, sizeof(md)); + zeromem(tmp, sizeof(tmp)); +#endif + + return CRYPT_OK; +} + +/** + "Update Seed File"-compliant update of K + + @param in The PRNG state + @param inlen Size of the state + @param prng The PRNG to import + @return CRYPT_OK if successful +*/ +static int _fortuna_update_seed(const unsigned char *in, unsigned long inlen, prng_state *prng) +{ + int err; + unsigned char tmp[MAXBLOCKSIZE]; + hash_state md; + + LTC_MUTEX_LOCK(&prng->lock); + /* new K = LTC_SHA256(K || in) */ + sha256_init(&md); + if ((err = sha256_process(&md, prng->fortuna.K, 32)) != CRYPT_OK) { + sha256_done(&md, tmp); + goto LBL_UNLOCK; + } + if ((err = sha256_process(&md, in, inlen)) != CRYPT_OK) { + sha256_done(&md, tmp); + goto LBL_UNLOCK; + } + /* finish key */ + if ((err = sha256_done(&md, prng->fortuna.K)) != CRYPT_OK) { + goto LBL_UNLOCK; + } + _fortuna_update_iv(prng); + +LBL_UNLOCK: + LTC_MUTEX_UNLOCK(&prng->lock); +#ifdef LTC_CLEAN_STACK + zeromem(&md, sizeof(md)); +#endif + + return err; +} + +/** + Start the PRNG + @param prng [out] The PRNG state to initialize + @return CRYPT_OK if successful +*/ +int fortuna_start(prng_state *prng) +{ + int err, x, y; + unsigned char tmp[MAXBLOCKSIZE]; + + LTC_ARGCHK(prng != NULL); + prng->ready = 0; + + /* initialize the pools */ + for (x = 0; x < LTC_FORTUNA_POOLS; x++) { + if ((err = sha256_init(&prng->fortuna.pool[x])) != CRYPT_OK) { + for (y = 0; y < x; y++) { + sha256_done(&prng->fortuna.pool[y], tmp); + } + return err; + } + } + prng->fortuna.pool_idx = prng->fortuna.pool0_len = prng->fortuna.wd = 0; + prng->fortuna.reset_cnt = 0; + + /* reset bufs */ + zeromem(prng->fortuna.K, 32); + if ((err = rijndael_setup(prng->fortuna.K, 32, 0, &prng->fortuna.skey)) != CRYPT_OK) { + for (x = 0; x < LTC_FORTUNA_POOLS; x++) { + sha256_done(&prng->fortuna.pool[x], tmp); + } + return err; + } + zeromem(prng->fortuna.IV, 16); + + LTC_MUTEX_INIT(&prng->lock) + + return CRYPT_OK; +} + +/** + Add entropy to the PRNG state + @param in The data to add + @param inlen Length of the data to add + @param prng PRNG state to update + @return CRYPT_OK if successful +*/ +int fortuna_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng) +{ + unsigned char tmp[2]; + int err; + + LTC_ARGCHK(prng != NULL); + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(inlen > 0); + + /* ensure inlen <= 32 */ + if (inlen > 32) { + inlen = 32; + } + + /* add s || length(in) || in to pool[pool_idx] */ + tmp[0] = 0; + tmp[1] = (unsigned char)inlen; + + LTC_MUTEX_LOCK(&prng->lock); + if ((err = sha256_process(&prng->fortuna.pool[prng->fortuna.pool_idx], tmp, 2)) != CRYPT_OK) { + goto LBL_UNLOCK; + } + if ((err = sha256_process(&prng->fortuna.pool[prng->fortuna.pool_idx], in, inlen)) != CRYPT_OK) { + goto LBL_UNLOCK; + } + if (prng->fortuna.pool_idx == 0) { + prng->fortuna.pool0_len += inlen; + } + if (++(prng->fortuna.pool_idx) == LTC_FORTUNA_POOLS) { + prng->fortuna.pool_idx = 0; + } + err = CRYPT_OK; /* success */ + +LBL_UNLOCK: + LTC_MUTEX_UNLOCK(&prng->lock); + return err; +} + +/** + Make the PRNG ready to read from + @param prng The PRNG to make active + @return CRYPT_OK if successful +*/ +int fortuna_ready(prng_state *prng) +{ + int err; + LTC_ARGCHK(prng != NULL); + + LTC_MUTEX_LOCK(&prng->lock); + err = _fortuna_reseed(prng); + prng->ready = (err == CRYPT_OK) ? 1 : 0; + + LTC_MUTEX_UNLOCK(&prng->lock); + return err; +} + +/** + Read from the PRNG + @param out Destination + @param outlen Length of output + @param prng The active PRNG to read from + @return Number of octets read +*/ +unsigned long fortuna_read(unsigned char *out, unsigned long outlen, prng_state *prng) +{ + unsigned char tmp[16]; + unsigned long tlen = 0; + + if (outlen == 0 || prng == NULL || out == NULL) return 0; + + LTC_MUTEX_LOCK(&prng->lock); + + if (!prng->ready) { + goto LBL_UNLOCK; + } + + /* do we have to reseed? */ + if ((++prng->fortuna.wd == LTC_FORTUNA_WD) && (prng->fortuna.pool0_len >= 64)) { + if (_fortuna_reseed(prng) != CRYPT_OK) { + goto LBL_UNLOCK; + } + } + + /* ensure that one reseed happened before allowing to read */ + if (prng->fortuna.reset_cnt == 0) { + goto LBL_UNLOCK; + } + + /* now generate the blocks required */ + tlen = outlen; + + /* handle whole blocks without the extra XMEMCPY */ + while (outlen >= 16) { + /* encrypt the IV and store it */ + rijndael_ecb_encrypt(prng->fortuna.IV, out, &prng->fortuna.skey); + out += 16; + outlen -= 16; + _fortuna_update_iv(prng); + } + + /* left over bytes? */ + if (outlen > 0) { + rijndael_ecb_encrypt(prng->fortuna.IV, tmp, &prng->fortuna.skey); + XMEMCPY(out, tmp, outlen); + _fortuna_update_iv(prng); + } + + /* generate new key */ + rijndael_ecb_encrypt(prng->fortuna.IV, prng->fortuna.K , &prng->fortuna.skey); + _fortuna_update_iv(prng); + + rijndael_ecb_encrypt(prng->fortuna.IV, prng->fortuna.K+16, &prng->fortuna.skey); + _fortuna_update_iv(prng); + + if (rijndael_setup(prng->fortuna.K, 32, 0, &prng->fortuna.skey) != CRYPT_OK) { + tlen = 0; + } + +LBL_UNLOCK: +#ifdef LTC_CLEAN_STACK + zeromem(tmp, sizeof(tmp)); +#endif + LTC_MUTEX_UNLOCK(&prng->lock); + return tlen; +} + +/** + Terminate the PRNG + @param prng The PRNG to terminate + @return CRYPT_OK if successful +*/ +int fortuna_done(prng_state *prng) +{ + int err, x; + unsigned char tmp[32]; + + LTC_ARGCHK(prng != NULL); + + LTC_MUTEX_LOCK(&prng->lock); + prng->ready = 0; + + /* terminate all the hashes */ + for (x = 0; x < LTC_FORTUNA_POOLS; x++) { + if ((err = sha256_done(&(prng->fortuna.pool[x]), tmp)) != CRYPT_OK) { + goto LBL_UNLOCK; + } + } + /* call cipher done when we invent one ;-) */ + err = CRYPT_OK; /* success */ + +LBL_UNLOCK: +#ifdef LTC_CLEAN_STACK + zeromem(tmp, sizeof(tmp)); +#endif + LTC_MUTEX_UNLOCK(&prng->lock); + LTC_MUTEX_DESTROY(&prng->lock); + return err; +} + +/** + Export the PRNG state + @param out [out] Destination + @param outlen [in/out] Max size and resulting size of the state + @param prng The PRNG to export + @return CRYPT_OK if successful +*/ +int fortuna_export(unsigned char *out, unsigned long *outlen, prng_state *prng) +{ + int x, err; + hash_state *md; + unsigned long len = fortuna_desc.export_size; + + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(prng != NULL); + + LTC_MUTEX_LOCK(&prng->lock); + + if (!prng->ready) { + err = CRYPT_ERROR; + goto LBL_UNLOCK; + } + + /* we'll write bytes for s&g's */ + if (*outlen < len) { + *outlen = len; + err = CRYPT_BUFFER_OVERFLOW; + goto LBL_UNLOCK; + } + + md = XMALLOC(sizeof(hash_state)); + if (md == NULL) { + err = CRYPT_MEM; + goto LBL_UNLOCK; + } + + /* to emit the state we copy each pool, terminate it then hash it again so + * an attacker who sees the state can't determine the current state of the PRNG + */ + for (x = 0; x < LTC_FORTUNA_POOLS; x++) { + /* copy the PRNG */ + XMEMCPY(md, &(prng->fortuna.pool[x]), sizeof(*md)); + + /* terminate it */ + if ((err = sha256_done(md, out+x*32)) != CRYPT_OK) { + goto LBL_ERR; + } + + /* now hash it */ + if ((err = sha256_init(md)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = sha256_process(md, out+x*32, 32)) != CRYPT_OK) { + goto LBL_ERR; + } + if ((err = sha256_done(md, out+x*32)) != CRYPT_OK) { + goto LBL_ERR; + } + } + *outlen = len; + err = CRYPT_OK; + +LBL_ERR: +#ifdef LTC_CLEAN_STACK + zeromem(md, sizeof(*md)); +#endif + XFREE(md); +LBL_UNLOCK: + LTC_MUTEX_UNLOCK(&prng->lock); + return err; +} + +/** + Import a PRNG state + @param in The PRNG state + @param inlen Size of the state + @param prng The PRNG to import + @return CRYPT_OK if successful +*/ +int fortuna_import(const unsigned char *in, unsigned long inlen, prng_state *prng) +{ + int err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(prng != NULL); + + if (inlen < (unsigned long)fortuna_desc.export_size) { + return CRYPT_INVALID_ARG; + } + + if ((err = fortuna_start(prng)) != CRYPT_OK) { + return err; + } + + if ((err = _fortuna_update_seed(in, inlen, prng)) != CRYPT_OK) { + return err; + } + + return err; +} + +/** + PRNG self-test + @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled +*/ +int fortuna_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + int err; + + if ((err = sha256_test()) != CRYPT_OK) { + return err; + } + return rijndael_test(); +#endif +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/prngs/rc4.c b/fsbl/lib/libtomcrypt/src/prngs/rc4.c new file mode 100644 index 000000000..e2aa92175 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/prngs/rc4.c @@ -0,0 +1,250 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file prngs/rc4.c + RC4 PRNG, Tom St Denis +*/ + +#ifdef LTC_RC4 + +const struct ltc_prng_descriptor rc4_desc = +{ + "rc4", + 32, + &rc4_start, + &rc4_add_entropy, + &rc4_ready, + &rc4_read, + &rc4_done, + &rc4_export, + &rc4_import, + &rc4_test +}; + +/** + Start the PRNG + @param prng [out] The PRNG state to initialize + @return CRYPT_OK if successful +*/ +int rc4_start(prng_state *prng) +{ + LTC_ARGCHK(prng != NULL); + prng->ready = 0; + /* set entropy (key) size to zero */ + prng->rc4.s.x = 0; + /* clear entropy (key) buffer */ + XMEMSET(&prng->rc4.s.buf, 0, sizeof(prng->rc4.s.buf)); + LTC_MUTEX_INIT(&prng->lock) + return CRYPT_OK; +} + +/** + Add entropy to the PRNG state + @param in The data to add + @param inlen Length of the data to add + @param prng PRNG state to update + @return CRYPT_OK if successful +*/ +int rc4_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng) +{ + unsigned char buf[256]; + unsigned long i; + int err; + + LTC_ARGCHK(prng != NULL); + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(inlen > 0); + + LTC_MUTEX_LOCK(&prng->lock); + if (prng->ready) { + /* rc4_ready() was already called, do "rekey" operation */ + if ((err = rc4_stream_keystream(&prng->rc4.s, buf, sizeof(buf))) != CRYPT_OK) goto LBL_UNLOCK; + for(i = 0; i < inlen; i++) buf[i % sizeof(buf)] ^= in[i]; + /* initialize RC4 */ + if ((err = rc4_stream_setup(&prng->rc4.s, buf, sizeof(buf))) != CRYPT_OK) goto LBL_UNLOCK; + /* drop first 3072 bytes - https://en.wikipedia.org/wiki/RC4#Fluhrer.2C_Mantin_and_Shamir_attack */ + for (i = 0; i < 12; i++) rc4_stream_keystream(&prng->rc4.s, buf, sizeof(buf)); + zeromem(buf, sizeof(buf)); + } + else { + /* rc4_ready() was not called yet, add entropy to the buffer */ + while (inlen--) prng->rc4.s.buf[prng->rc4.s.x++ % sizeof(prng->rc4.s.buf)] ^= *in++; + } + err = CRYPT_OK; +LBL_UNLOCK: + LTC_MUTEX_UNLOCK(&prng->lock); + return err; +} + +/** + Make the PRNG ready to read from + @param prng The PRNG to make active + @return CRYPT_OK if successful +*/ +int rc4_ready(prng_state *prng) +{ + unsigned char buf[256] = { 0 }; + unsigned long len; + int err, i; + + LTC_ARGCHK(prng != NULL); + + LTC_MUTEX_LOCK(&prng->lock); + if (prng->ready) { err = CRYPT_OK; goto LBL_UNLOCK; } + XMEMCPY(buf, prng->rc4.s.buf, sizeof(buf)); + /* initialize RC4 */ + len = MIN(prng->rc4.s.x, 256); /* TODO: we can perhaps always use all 256 bytes */ + if ((err = rc4_stream_setup(&prng->rc4.s, buf, len)) != CRYPT_OK) goto LBL_UNLOCK; + /* drop first 3072 bytes - https://en.wikipedia.org/wiki/RC4#Fluhrer.2C_Mantin_and_Shamir_attack */ + for (i = 0; i < 12; i++) rc4_stream_keystream(&prng->rc4.s, buf, sizeof(buf)); + prng->ready = 1; +LBL_UNLOCK: + LTC_MUTEX_UNLOCK(&prng->lock); + return err; +} + +/** + Read from the PRNG + @param out Destination + @param outlen Length of output + @param prng The active PRNG to read from + @return Number of octets read +*/ +unsigned long rc4_read(unsigned char *out, unsigned long outlen, prng_state *prng) +{ + if (outlen == 0 || prng == NULL || out == NULL) return 0; + LTC_MUTEX_LOCK(&prng->lock); + if (!prng->ready) { outlen = 0; goto LBL_UNLOCK; } + if (rc4_stream_keystream(&prng->rc4.s, out, outlen) != CRYPT_OK) outlen = 0; +LBL_UNLOCK: + LTC_MUTEX_UNLOCK(&prng->lock); + return outlen; +} + +/** + Terminate the PRNG + @param prng The PRNG to terminate + @return CRYPT_OK if successful +*/ +int rc4_done(prng_state *prng) +{ + int err; + LTC_ARGCHK(prng != NULL); + LTC_MUTEX_LOCK(&prng->lock); + prng->ready = 0; + err = rc4_stream_done(&prng->rc4.s); + LTC_MUTEX_UNLOCK(&prng->lock); + LTC_MUTEX_DESTROY(&prng->lock); + return err; +} + +/** + Export the PRNG state + @param out [out] Destination + @param outlen [in/out] Max size and resulting size of the state + @param prng The PRNG to export + @return CRYPT_OK if successful +*/ +int rc4_export(unsigned char *out, unsigned long *outlen, prng_state *prng) +{ + unsigned long len = rc4_desc.export_size; + + LTC_ARGCHK(prng != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + if (*outlen < len) { + *outlen = len; + return CRYPT_BUFFER_OVERFLOW; + } + + if (rc4_read(out, len, prng) != len) { + return CRYPT_ERROR_READPRNG; + } + + *outlen = len; + return CRYPT_OK; +} + +/** + Import a PRNG state + @param in The PRNG state + @param inlen Size of the state + @param prng The PRNG to import + @return CRYPT_OK if successful +*/ +int rc4_import(const unsigned char *in, unsigned long inlen, prng_state *prng) +{ + int err; + + LTC_ARGCHK(prng != NULL); + LTC_ARGCHK(in != NULL); + if (inlen < (unsigned long)rc4_desc.export_size) return CRYPT_INVALID_ARG; + + if ((err = rc4_start(prng)) != CRYPT_OK) return err; + if ((err = rc4_add_entropy(in, inlen, prng)) != CRYPT_OK) return err; + return CRYPT_OK; +} + +/** + PRNG self-test + @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled +*/ +int rc4_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + prng_state st; + unsigned char en[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, + 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, + 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, + 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, + 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32 }; + unsigned char dmp[500]; + unsigned long dmplen = sizeof(dmp); + unsigned char out[1000]; + unsigned char t1[] = { 0xE0, 0x4D, 0x9A, 0xF6, 0xA8, 0x9D, 0x77, 0x53, 0xAE, 0x09 }; + unsigned char t2[] = { 0xEF, 0x80, 0xA2, 0xE6, 0x50, 0x91, 0xF3, 0x17, 0x4A, 0x8A }; + unsigned char t3[] = { 0x4B, 0xD6, 0x5C, 0x67, 0x99, 0x03, 0x56, 0x12, 0x80, 0x48 }; + int err; + + if ((err = rc4_start(&st)) != CRYPT_OK) return err; + /* add entropy to uninitialized prng */ + if ((err = rc4_add_entropy(en, sizeof(en), &st)) != CRYPT_OK) return err; + if ((err = rc4_ready(&st)) != CRYPT_OK) return err; + if (rc4_read(out, 10, &st) != 10) return CRYPT_ERROR_READPRNG; /* 10 bytes for testing */ + if (compare_testvector(out, 10, t1, sizeof(t1), "RC4-PRNG", 1)) return CRYPT_FAIL_TESTVECTOR; + if (rc4_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ + /* add entropy to already initialized prng */ + if ((err = rc4_add_entropy(en, sizeof(en), &st)) != CRYPT_OK) return err; + if (rc4_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ + if ((err = rc4_export(dmp, &dmplen, &st)) != CRYPT_OK) return err; + if (rc4_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ + if (rc4_read(out, 10, &st) != 10) return CRYPT_ERROR_READPRNG; /* 10 bytes for testing */ + if (compare_testvector(out, 10, t2, sizeof(t2), "RC4-PRNG", 2)) return CRYPT_FAIL_TESTVECTOR; + if ((err = rc4_done(&st)) != CRYPT_OK) return err; + if ((err = rc4_import(dmp, dmplen, &st)) != CRYPT_OK) return err; + if ((err = rc4_ready(&st)) != CRYPT_OK) return err; + if (rc4_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ + if (rc4_read(out, 10, &st) != 10) return CRYPT_ERROR_READPRNG; /* 10 bytes for testing */ + if (compare_testvector(out, 10, t3, sizeof(t3), "RC4-PRNG", 3)) return CRYPT_FAIL_TESTVECTOR; + if ((err = rc4_done(&st)) != CRYPT_OK) return err; + + return CRYPT_OK; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/prngs/rng_get_bytes.c b/fsbl/lib/libtomcrypt/src/prngs/rng_get_bytes.c new file mode 100644 index 000000000..4e9a0634e --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/prngs/rng_get_bytes.c @@ -0,0 +1,159 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +#ifdef LTC_RNG_GET_BYTES +/** + @file rng_get_bytes.c + portable way to get secure random bits to feed a PRNG (Tom St Denis) +*/ + +#if defined(LTC_DEVRANDOM) && !defined(_WIN32) +/* on *NIX read /dev/random */ +static unsigned long _rng_nix(unsigned char *buf, unsigned long len, + void (*callback)(void)) +{ +#ifdef LTC_NO_FILE + LTC_UNUSED_PARAM(callback); + LTC_UNUSED_PARAM(buf); + LTC_UNUSED_PARAM(len); + return 0; +#else + FILE *f; + unsigned long x; + LTC_UNUSED_PARAM(callback); +#ifdef LTC_TRY_URANDOM_FIRST + f = fopen("/dev/urandom", "rb"); + if (f == NULL) +#endif /* LTC_TRY_URANDOM_FIRST */ + f = fopen("/dev/random", "rb"); + + if (f == NULL) { + return 0; + } + + /* disable buffering */ + if (setvbuf(f, NULL, _IONBF, 0) != 0) { + fclose(f); + return 0; + } + + x = (unsigned long)fread(buf, 1, (size_t)len, f); + fclose(f); + return x; +#endif /* LTC_NO_FILE */ +} + +#endif /* LTC_DEVRANDOM */ + +#if !defined(_WIN32_WCE) + +#define ANSI_RNG + +static unsigned long _rng_ansic(unsigned char *buf, unsigned long len, + void (*callback)(void)) +{ + clock_t t1; + int l, acc, bits, a, b; + + l = len; + bits = 8; + acc = a = b = 0; + while (len--) { + if (callback != NULL) callback(); + while (bits--) { + do { + t1 = XCLOCK(); while (t1 == XCLOCK()) a ^= 1; + t1 = XCLOCK(); while (t1 == XCLOCK()) b ^= 1; + } while (a == b); + acc = (acc << 1) | a; + } + *buf++ = acc; + acc = 0; + bits = 8; + } + return l; +} + +#endif + +/* Try the Microsoft CSP */ +#if defined(_WIN32) || defined(_WIN32_WCE) +#ifndef _WIN32_WINNT + #define _WIN32_WINNT 0x0400 +#endif +#ifdef _WIN32_WCE + #define UNDER_CE + #define ARM +#endif + +#define WIN32_LEAN_AND_MEAN +#include +#include + +static unsigned long _rng_win32(unsigned char *buf, unsigned long len, + void (*callback)(void)) +{ + HCRYPTPROV hProv = 0; + LTC_UNUSED_PARAM(callback); + if (!CryptAcquireContext(&hProv, NULL, MS_DEF_PROV, PROV_RSA_FULL, + (CRYPT_VERIFYCONTEXT | CRYPT_MACHINE_KEYSET)) && + !CryptAcquireContext (&hProv, NULL, MS_DEF_PROV, PROV_RSA_FULL, + CRYPT_VERIFYCONTEXT | CRYPT_MACHINE_KEYSET | CRYPT_NEWKEYSET)) + return 0; + + if (CryptGenRandom(hProv, len, buf) == TRUE) { + CryptReleaseContext(hProv, 0); + return len; + } else { + CryptReleaseContext(hProv, 0); + return 0; + } +} + +#endif /* WIN32 */ + +/** + Read the system RNG + @param out Destination + @param outlen Length desired (octets) + @param callback Pointer to void function to act as "callback" when RNG is slow. This can be NULL + @return Number of octets read +*/ +unsigned long rng_get_bytes(unsigned char *out, unsigned long outlen, + void (*callback)(void)) +{ + unsigned long x; + + LTC_ARGCHK(out != NULL); + +#ifdef LTC_PRNG_ENABLE_LTC_RNG + if (ltc_rng) { + x = ltc_rng(out, outlen, callback); + if (x != 0) { + return x; + } + } +#endif + +#if defined(_WIN32) || defined(_WIN32_WCE) + x = _rng_win32(out, outlen, callback); if (x != 0) { return x; } +#elif defined(LTC_DEVRANDOM) + x = _rng_nix(out, outlen, callback); if (x != 0) { return x; } +#endif +#ifdef ANSI_RNG + x = _rng_ansic(out, outlen, callback); if (x != 0) { return x; } +#endif + return 0; +} +#endif /* #ifdef LTC_RNG_GET_BYTES */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/prngs/rng_make_prng.c b/fsbl/lib/libtomcrypt/src/prngs/rng_make_prng.c new file mode 100644 index 000000000..b01c325c6 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/prngs/rng_make_prng.c @@ -0,0 +1,69 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +#ifdef LTC_RNG_MAKE_PRNG +/** + @file rng_make_prng.c + portable way to get secure random bits to feed a PRNG (Tom St Denis) +*/ + +/** + Create a PRNG from a RNG + @param bits Number of bits of entropy desired (64 ... 1024) + @param wprng Index of which PRNG to setup + @param prng [out] PRNG state to initialize + @param callback A pointer to a void function for when the RNG is slow, this can be NULL + @return CRYPT_OK if successful +*/ +int rng_make_prng(int bits, int wprng, prng_state *prng, + void (*callback)(void)) +{ + unsigned char buf[256]; + int err; + + LTC_ARGCHK(prng != NULL); + + /* check parameter */ + if ((err = prng_is_valid(wprng)) != CRYPT_OK) { + return err; + } + + if (bits < 64 || bits > 1024) { + return CRYPT_INVALID_PRNGSIZE; + } + + if ((err = prng_descriptor[wprng].start(prng)) != CRYPT_OK) { + return err; + } + + bits = ((bits/8)+((bits&7)!=0?1:0)) * 2; + if (rng_get_bytes(buf, (unsigned long)bits, callback) != (unsigned long)bits) { + return CRYPT_ERROR_READPRNG; + } + + if ((err = prng_descriptor[wprng].add_entropy(buf, (unsigned long)bits, prng)) != CRYPT_OK) { + return err; + } + + if ((err = prng_descriptor[wprng].ready(prng)) != CRYPT_OK) { + return err; + } + + #ifdef LTC_CLEAN_STACK + zeromem(buf, sizeof(buf)); + #endif + return CRYPT_OK; +} +#endif /* #ifdef LTC_RNG_MAKE_PRNG */ + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/prngs/sober128.c b/fsbl/lib/libtomcrypt/src/prngs/sober128.c new file mode 100644 index 000000000..275920c0f --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/prngs/sober128.c @@ -0,0 +1,249 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +/** + @file prngs/sober128.c + Implementation of SOBER-128 by Tom St Denis. + Based on s128fast.c reference code supplied by Greg Rose of QUALCOMM. +*/ + +#ifdef LTC_SOBER128 + +const struct ltc_prng_descriptor sober128_desc = +{ + "sober128", + 40, + &sober128_start, + &sober128_add_entropy, + &sober128_ready, + &sober128_read, + &sober128_done, + &sober128_export, + &sober128_import, + &sober128_test +}; + +/** + Start the PRNG + @param prng [out] The PRNG state to initialize + @return CRYPT_OK if successful +*/ +int sober128_start(prng_state *prng) +{ + LTC_ARGCHK(prng != NULL); + prng->ready = 0; + XMEMSET(&prng->sober128.ent, 0, sizeof(prng->sober128.ent)); + prng->sober128.idx = 0; + LTC_MUTEX_INIT(&prng->lock) + return CRYPT_OK; +} + +/** + Add entropy to the PRNG state + @param in The data to add + @param inlen Length of the data to add + @param prng PRNG state to update + @return CRYPT_OK if successful +*/ +int sober128_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng) +{ + unsigned char buf[40]; + unsigned long i; + int err; + + LTC_ARGCHK(prng != NULL); + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(inlen > 0); + + LTC_MUTEX_LOCK(&prng->lock); + if (prng->ready) { + /* sober128_ready() was already called, do "rekey" operation */ + if ((err = sober128_stream_keystream(&prng->sober128.s, buf, sizeof(buf))) != CRYPT_OK) goto LBL_UNLOCK; + for(i = 0; i < inlen; i++) buf[i % sizeof(buf)] ^= in[i]; + /* key 32 bytes, 20 rounds */ + if ((err = sober128_stream_setup(&prng->sober128.s, buf, 32)) != CRYPT_OK) goto LBL_UNLOCK; + /* iv 8 bytes */ + if ((err = sober128_stream_setiv(&prng->sober128.s, buf + 32, 8)) != CRYPT_OK) goto LBL_UNLOCK; + /* clear KEY + IV */ + zeromem(buf, sizeof(buf)); + } + else { + /* sober128_ready() was not called yet, add entropy to ent buffer */ + while (inlen--) prng->sober128.ent[prng->sober128.idx++ % sizeof(prng->sober128.ent)] ^= *in++; + } + err = CRYPT_OK; +LBL_UNLOCK: + LTC_MUTEX_UNLOCK(&prng->lock); + return err; +} + +/** + Make the PRNG ready to read from + @param prng The PRNG to make active + @return CRYPT_OK if successful +*/ +int sober128_ready(prng_state *prng) +{ + int err; + + LTC_ARGCHK(prng != NULL); + + LTC_MUTEX_LOCK(&prng->lock); + if (prng->ready) { err = CRYPT_OK; goto LBL_UNLOCK; } + /* key 32 bytes, 20 rounds */ + if ((err = sober128_stream_setup(&prng->sober128.s, prng->sober128.ent, 32)) != CRYPT_OK) goto LBL_UNLOCK; + /* iv 8 bytes */ + if ((err = sober128_stream_setiv(&prng->sober128.s, prng->sober128.ent + 32, 8)) != CRYPT_OK) goto LBL_UNLOCK; + XMEMSET(&prng->sober128.ent, 0, sizeof(prng->sober128.ent)); + prng->sober128.idx = 0; + prng->ready = 1; +LBL_UNLOCK: + LTC_MUTEX_UNLOCK(&prng->lock); + return err; +} + +/** + Read from the PRNG + @param out Destination + @param outlen Length of output + @param prng The active PRNG to read from + @return Number of octets read +*/ +unsigned long sober128_read(unsigned char *out, unsigned long outlen, prng_state *prng) +{ + if (outlen == 0 || prng == NULL || out == NULL) return 0; + LTC_MUTEX_LOCK(&prng->lock); + if (!prng->ready) { outlen = 0; goto LBL_UNLOCK; } + if (sober128_stream_keystream(&prng->sober128.s, out, outlen) != CRYPT_OK) outlen = 0; +LBL_UNLOCK: + LTC_MUTEX_UNLOCK(&prng->lock); + return outlen; +} + +/** + Terminate the PRNG + @param prng The PRNG to terminate + @return CRYPT_OK if successful +*/ +int sober128_done(prng_state *prng) +{ + int err; + LTC_ARGCHK(prng != NULL); + LTC_MUTEX_LOCK(&prng->lock); + prng->ready = 0; + err = sober128_stream_done(&prng->sober128.s); + LTC_MUTEX_UNLOCK(&prng->lock); + LTC_MUTEX_DESTROY(&prng->lock); + return err; +} + +/** + Export the PRNG state + @param out [out] Destination + @param outlen [in/out] Max size and resulting size of the state + @param prng The PRNG to export + @return CRYPT_OK if successful +*/ +int sober128_export(unsigned char *out, unsigned long *outlen, prng_state *prng) +{ + unsigned long len = sober128_desc.export_size; + + LTC_ARGCHK(prng != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + + if (*outlen < len) { + *outlen = len; + return CRYPT_BUFFER_OVERFLOW; + } + + if (sober128_read(out, len, prng) != len) { + return CRYPT_ERROR_READPRNG; + } + + *outlen = len; + return CRYPT_OK; +} + +/** + Import a PRNG state + @param in The PRNG state + @param inlen Size of the state + @param prng The PRNG to import + @return CRYPT_OK if successful +*/ +int sober128_import(const unsigned char *in, unsigned long inlen, prng_state *prng) +{ + int err; + + LTC_ARGCHK(prng != NULL); + LTC_ARGCHK(in != NULL); + if (inlen < (unsigned long)sober128_desc.export_size) return CRYPT_INVALID_ARG; + + if ((err = sober128_start(prng)) != CRYPT_OK) return err; + if ((err = sober128_add_entropy(in, inlen, prng)) != CRYPT_OK) return err; + return CRYPT_OK; +} + +/** + PRNG self-test + @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled +*/ +int sober128_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + prng_state st; + unsigned char en[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, + 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, + 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, + 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, + 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32 }; + unsigned char dmp[300]; + unsigned long dmplen = sizeof(dmp); + unsigned char out[500]; + unsigned char t1[] = { 0x31, 0x82, 0xA7, 0xA5, 0x8B, 0xD7, 0xCB, 0x39, 0x86, 0x1A }; + unsigned char t2[] = { 0x6B, 0x43, 0x9E, 0xBC, 0xE7, 0x62, 0x9B, 0xE6, 0x9B, 0x83 }; + unsigned char t3[] = { 0x4A, 0x0E, 0x6C, 0xC1, 0xCF, 0xB4, 0x73, 0x49, 0x99, 0x05 }; + int err; + + if ((err = sober128_start(&st)) != CRYPT_OK) return err; + /* add entropy to uninitialized prng */ + if ((err = sober128_add_entropy(en, sizeof(en), &st)) != CRYPT_OK) return err; + if ((err = sober128_ready(&st)) != CRYPT_OK) return err; + if (sober128_read(out, 10, &st) != 10) return CRYPT_ERROR_READPRNG; /* 10 bytes for testing */ + if (compare_testvector(out, 10, t1, sizeof(t1), "SOBER128-PRNG", 1)) return CRYPT_FAIL_TESTVECTOR; + if (sober128_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ + /* add entropy to already initialized prng */ + if ((err = sober128_add_entropy(en, sizeof(en), &st)) != CRYPT_OK) return err; + if (sober128_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ + if ((err = sober128_export(dmp, &dmplen, &st)) != CRYPT_OK) return err; + if (sober128_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ + if (sober128_read(out, 10, &st) != 10) return CRYPT_ERROR_READPRNG; /* 10 bytes for testing */ + if (compare_testvector(out, 10, t2, sizeof(t2), "SOBER128-PRNG", 2)) return CRYPT_FAIL_TESTVECTOR; + if ((err = sober128_done(&st)) != CRYPT_OK) return err; + if ((err = sober128_import(dmp, dmplen, &st)) != CRYPT_OK) return err; + if ((err = sober128_ready(&st)) != CRYPT_OK) return err; + if (sober128_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ + if (sober128_read(out, 10, &st) != 10) return CRYPT_ERROR_READPRNG; /* 10 bytes for testing */ + if (compare_testvector(out, 10, t3, sizeof(t3), "SOBER128-PRNG", 3)) return CRYPT_FAIL_TESTVECTOR; + if ((err = sober128_done(&st)) != CRYPT_OK) return err; + + return CRYPT_OK; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/prngs/sprng.c b/fsbl/lib/libtomcrypt/src/prngs/sprng.c new file mode 100644 index 000000000..b74d8da7c --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/prngs/sprng.c @@ -0,0 +1,161 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file sprng.c + Secure PRNG, Tom St Denis +*/ + +/* A secure PRNG using the RNG functions. Basically this is a + * wrapper that allows you to use a secure RNG as a PRNG + * in the various other functions. + */ + +#ifdef LTC_SPRNG + +const struct ltc_prng_descriptor sprng_desc = +{ + "sprng", 0, + &sprng_start, + &sprng_add_entropy, + &sprng_ready, + &sprng_read, + &sprng_done, + &sprng_export, + &sprng_import, + &sprng_test +}; + +/** + Start the PRNG + @param prng [out] The PRNG state to initialize + @return CRYPT_OK if successful +*/ +int sprng_start(prng_state *prng) +{ + LTC_UNUSED_PARAM(prng); + return CRYPT_OK; +} + +/** + Add entropy to the PRNG state + @param in The data to add + @param inlen Length of the data to add + @param prng PRNG state to update + @return CRYPT_OK if successful +*/ +int sprng_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng) +{ + LTC_UNUSED_PARAM(in); + LTC_UNUSED_PARAM(inlen); + LTC_UNUSED_PARAM(prng); + return CRYPT_OK; +} + +/** + Make the PRNG ready to read from + @param prng The PRNG to make active + @return CRYPT_OK if successful +*/ +int sprng_ready(prng_state *prng) +{ + LTC_UNUSED_PARAM(prng); + return CRYPT_OK; +} + +/** + Read from the PRNG + @param out Destination + @param outlen Length of output + @param prng The active PRNG to read from + @return Number of octets read +*/ +unsigned long sprng_read(unsigned char *out, unsigned long outlen, prng_state *prng) +{ + LTC_ARGCHK(out != NULL); + LTC_UNUSED_PARAM(prng); + return rng_get_bytes(out, outlen, NULL); +} + +/** + Terminate the PRNG + @param prng The PRNG to terminate + @return CRYPT_OK if successful +*/ +int sprng_done(prng_state *prng) +{ + LTC_UNUSED_PARAM(prng); + return CRYPT_OK; +} + +/** + Export the PRNG state + @param out [out] Destination + @param outlen [in/out] Max size and resulting size of the state + @param prng The PRNG to export + @return CRYPT_OK if successful +*/ +int sprng_export(unsigned char *out, unsigned long *outlen, prng_state *prng) +{ + LTC_ARGCHK(outlen != NULL); + LTC_UNUSED_PARAM(out); + LTC_UNUSED_PARAM(prng); + + *outlen = 0; + return CRYPT_OK; +} + +/** + Import a PRNG state + @param in The PRNG state + @param inlen Size of the state + @param prng The PRNG to import + @return CRYPT_OK if successful +*/ +int sprng_import(const unsigned char *in, unsigned long inlen, prng_state *prng) +{ + LTC_UNUSED_PARAM(in); + LTC_UNUSED_PARAM(inlen); + LTC_UNUSED_PARAM(prng); + return CRYPT_OK; +} + +/** + PRNG self-test + @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled +*/ +int sprng_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + prng_state st; + unsigned char en[] = { 0x01, 0x02, 0x03, 0x04 }; + unsigned char out[1000]; + int err; + + if ((err = sprng_start(&st)) != CRYPT_OK) return err; + if ((err = sprng_add_entropy(en, sizeof(en), &st)) != CRYPT_OK) return err; + if ((err = sprng_ready(&st)) != CRYPT_OK) return err; + if (sprng_read(out, 500, &st) != 500) return CRYPT_ERROR_READPRNG; /* skip 500 bytes */ + if ((err = sprng_done(&st)) != CRYPT_OK) return err; + + return CRYPT_OK; +#endif +} + +#endif + + + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/prngs/yarrow.c b/fsbl/lib/libtomcrypt/src/prngs/yarrow.c new file mode 100644 index 000000000..e59883483 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/prngs/yarrow.c @@ -0,0 +1,352 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file yarrow.c + Yarrow PRNG, Tom St Denis +*/ + +#ifdef LTC_YARROW + +const struct ltc_prng_descriptor yarrow_desc = +{ + "yarrow", 64, + &yarrow_start, + &yarrow_add_entropy, + &yarrow_ready, + &yarrow_read, + &yarrow_done, + &yarrow_export, + &yarrow_import, + &yarrow_test +}; + +/** + Start the PRNG + @param prng [out] The PRNG state to initialize + @return CRYPT_OK if successful +*/ +int yarrow_start(prng_state *prng) +{ + int err; + + LTC_ARGCHK(prng != NULL); + prng->ready = 0; + + /* these are the default hash/cipher combo used */ +#ifdef LTC_RIJNDAEL +#if LTC_YARROW_AES==0 + prng->yarrow.cipher = register_cipher(&rijndael_enc_desc); +#elif LTC_YARROW_AES==1 + prng->yarrow.cipher = register_cipher(&aes_enc_desc); +#elif LTC_YARROW_AES==2 + prng->yarrow.cipher = register_cipher(&rijndael_desc); +#elif LTC_YARROW_AES==3 + prng->yarrow.cipher = register_cipher(&aes_desc); +#endif +#elif defined(LTC_BLOWFISH) + prng->yarrow.cipher = register_cipher(&blowfish_desc); +#elif defined(LTC_TWOFISH) + prng->yarrow.cipher = register_cipher(&twofish_desc); +#elif defined(LTC_RC6) + prng->yarrow.cipher = register_cipher(&rc6_desc); +#elif defined(LTC_RC5) + prng->yarrow.cipher = register_cipher(&rc5_desc); +#elif defined(LTC_SAFERP) + prng->yarrow.cipher = register_cipher(&saferp_desc); +#elif defined(LTC_RC2) + prng->yarrow.cipher = register_cipher(&rc2_desc); +#elif defined(LTC_NOEKEON) + prng->yarrow.cipher = register_cipher(&noekeon_desc); +#elif defined(LTC_ANUBIS) + prng->yarrow.cipher = register_cipher(&anubis_desc); +#elif defined(LTC_KSEED) + prng->yarrow.cipher = register_cipher(&kseed_desc); +#elif defined(LTC_KHAZAD) + prng->yarrow.cipher = register_cipher(&khazad_desc); +#elif defined(LTC_CAST5) + prng->yarrow.cipher = register_cipher(&cast5_desc); +#elif defined(LTC_XTEA) + prng->yarrow.cipher = register_cipher(&xtea_desc); +#elif defined(LTC_SAFER) + prng->yarrow.cipher = register_cipher(&safer_sk128_desc); +#elif defined(LTC_DES) + prng->yarrow.cipher = register_cipher(&des3_desc); +#else + #error LTC_YARROW needs at least one CIPHER +#endif + if ((err = cipher_is_valid(prng->yarrow.cipher)) != CRYPT_OK) { + return err; + } + +#ifdef LTC_SHA256 + prng->yarrow.hash = register_hash(&sha256_desc); +#elif defined(LTC_SHA512) + prng->yarrow.hash = register_hash(&sha512_desc); +#elif defined(LTC_TIGER) + prng->yarrow.hash = register_hash(&tiger_desc); +#elif defined(LTC_SHA1) + prng->yarrow.hash = register_hash(&sha1_desc); +#elif defined(LTC_RIPEMD320) + prng->yarrow.hash = register_hash(&rmd320_desc); +#elif defined(LTC_RIPEMD256) + prng->yarrow.hash = register_hash(&rmd256_desc); +#elif defined(LTC_RIPEMD160) + prng->yarrow.hash = register_hash(&rmd160_desc); +#elif defined(LTC_RIPEMD128) + prng->yarrow.hash = register_hash(&rmd128_desc); +#elif defined(LTC_MD5) + prng->yarrow.hash = register_hash(&md5_desc); +#elif defined(LTC_MD4) + prng->yarrow.hash = register_hash(&md4_desc); +#elif defined(LTC_MD2) + prng->yarrow.hash = register_hash(&md2_desc); +#elif defined(LTC_WHIRLPOOL) + prng->yarrow.hash = register_hash(&whirlpool_desc); +#else + #error LTC_YARROW needs at least one HASH +#endif + if ((err = hash_is_valid(prng->yarrow.hash)) != CRYPT_OK) { + return err; + } + + /* zero the memory used */ + zeromem(prng->yarrow.pool, sizeof(prng->yarrow.pool)); + LTC_MUTEX_INIT(&prng->lock) + + return CRYPT_OK; +} + +/** + Add entropy to the PRNG state + @param in The data to add + @param inlen Length of the data to add + @param prng PRNG state to update + @return CRYPT_OK if successful +*/ +int yarrow_add_entropy(const unsigned char *in, unsigned long inlen, prng_state *prng) +{ + hash_state md; + int err; + + LTC_ARGCHK(prng != NULL); + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(inlen > 0); + + LTC_MUTEX_LOCK(&prng->lock); + + if ((err = hash_is_valid(prng->yarrow.hash)) != CRYPT_OK) { + goto LBL_UNLOCK; + } + + /* start the hash */ + if ((err = hash_descriptor[prng->yarrow.hash].init(&md)) != CRYPT_OK) { + goto LBL_UNLOCK; + } + + /* hash the current pool */ + if ((err = hash_descriptor[prng->yarrow.hash].process(&md, prng->yarrow.pool, + hash_descriptor[prng->yarrow.hash].hashsize)) != CRYPT_OK) { + goto LBL_UNLOCK; + } + + /* add the new entropy */ + if ((err = hash_descriptor[prng->yarrow.hash].process(&md, in, inlen)) != CRYPT_OK) { + goto LBL_UNLOCK; + } + + /* store result */ + err = hash_descriptor[prng->yarrow.hash].done(&md, prng->yarrow.pool); + +LBL_UNLOCK: + LTC_MUTEX_UNLOCK(&prng->lock); + return err; +} + +/** + Make the PRNG ready to read from + @param prng The PRNG to make active + @return CRYPT_OK if successful +*/ +int yarrow_ready(prng_state *prng) +{ + int ks, err; + + LTC_ARGCHK(prng != NULL); + + LTC_MUTEX_LOCK(&prng->lock); + + if ((err = hash_is_valid(prng->yarrow.hash)) != CRYPT_OK) { + goto LBL_UNLOCK; + } + + if ((err = cipher_is_valid(prng->yarrow.cipher)) != CRYPT_OK) { + goto LBL_UNLOCK; + } + + /* setup CTR mode using the "pool" as the key */ + ks = (int)hash_descriptor[prng->yarrow.hash].hashsize; + if ((err = cipher_descriptor[prng->yarrow.cipher].keysize(&ks)) != CRYPT_OK) { + goto LBL_UNLOCK; + } + + if ((err = ctr_start(prng->yarrow.cipher, /* what cipher to use */ + prng->yarrow.pool, /* IV */ + prng->yarrow.pool, ks, /* KEY and key size */ + 0, /* number of rounds */ + CTR_COUNTER_LITTLE_ENDIAN, /* little endian counter */ + &prng->yarrow.ctr)) != CRYPT_OK) { + goto LBL_UNLOCK; + } + prng->ready = 1; + +LBL_UNLOCK: + LTC_MUTEX_UNLOCK(&prng->lock); + return err; +} + +/** + Read from the PRNG + @param out Destination + @param outlen Length of output + @param prng The active PRNG to read from + @return Number of octets read +*/ +unsigned long yarrow_read(unsigned char *out, unsigned long outlen, prng_state *prng) +{ + if (outlen == 0 || prng == NULL || out == NULL) return 0; + + LTC_MUTEX_LOCK(&prng->lock); + + if (!prng->ready) { + outlen = 0; + goto LBL_UNLOCK; + } + + /* put out in predictable state first */ + zeromem(out, outlen); + + /* now randomize it */ + if (ctr_encrypt(out, out, outlen, &prng->yarrow.ctr) != CRYPT_OK) { + outlen = 0; + } + +LBL_UNLOCK: + LTC_MUTEX_UNLOCK(&prng->lock); + return outlen; +} + +/** + Terminate the PRNG + @param prng The PRNG to terminate + @return CRYPT_OK if successful +*/ +int yarrow_done(prng_state *prng) +{ + int err; + LTC_ARGCHK(prng != NULL); + + LTC_MUTEX_LOCK(&prng->lock); + prng->ready = 0; + + /* call cipher done when we invent one ;-) */ + + /* we invented one */ + err = ctr_done(&prng->yarrow.ctr); + + LTC_MUTEX_UNLOCK(&prng->lock); + LTC_MUTEX_DESTROY(&prng->lock); + return err; +} + +/** + Export the PRNG state + @param out [out] Destination + @param outlen [in/out] Max size and resulting size of the state + @param prng The PRNG to export + @return CRYPT_OK if successful +*/ +int yarrow_export(unsigned char *out, unsigned long *outlen, prng_state *prng) +{ + unsigned long len = yarrow_desc.export_size; + + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(outlen != NULL); + LTC_ARGCHK(prng != NULL); + + if (*outlen < len) { + *outlen = len; + return CRYPT_BUFFER_OVERFLOW; + } + + if (yarrow_read(out, len, prng) != len) { + return CRYPT_ERROR_READPRNG; + } + + *outlen = len; + return CRYPT_OK; +} + +/** + Import a PRNG state + @param in The PRNG state + @param inlen Size of the state + @param prng The PRNG to import + @return CRYPT_OK if successful +*/ +int yarrow_import(const unsigned char *in, unsigned long inlen, prng_state *prng) +{ + int err; + + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(prng != NULL); + if (inlen < (unsigned long)yarrow_desc.export_size) return CRYPT_INVALID_ARG; + + if ((err = yarrow_start(prng)) != CRYPT_OK) return err; + if ((err = yarrow_add_entropy(in, inlen, prng)) != CRYPT_OK) return err; + return CRYPT_OK; +} + +/** + PRNG self-test + @return CRYPT_OK if successful, CRYPT_NOP if self-testing has been disabled +*/ +int yarrow_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + int err; + prng_state prng; + + if ((err = yarrow_start(&prng)) != CRYPT_OK) { + return err; + } + + /* now let's test the hash/cipher that was chosen */ + if (cipher_descriptor[prng.yarrow.cipher].test && + ((err = cipher_descriptor[prng.yarrow.cipher].test()) != CRYPT_OK)) { + return err; + } + if (hash_descriptor[prng.yarrow.hash].test && + ((err = hash_descriptor[prng.yarrow.hash].test()) != CRYPT_OK)) { + return err; + } + + return CRYPT_OK; +#endif +} + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/stream/chacha/chacha_crypt.c b/fsbl/lib/libtomcrypt/src/stream/chacha/chacha_crypt.c new file mode 100644 index 000000000..6814058fe --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/stream/chacha/chacha_crypt.c @@ -0,0 +1,101 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* The implementation is based on: + * chacha-ref.c version 20080118 + * Public domain from D. J. Bernstein + */ + +#include "tomcrypt.h" + +#ifdef LTC_CHACHA + +#define QUARTERROUND(a,b,c,d) \ + x[a] += x[b]; x[d] = ROL(x[d] ^ x[a], 16); \ + x[c] += x[d]; x[b] = ROL(x[b] ^ x[c], 12); \ + x[a] += x[b]; x[d] = ROL(x[d] ^ x[a], 8); \ + x[c] += x[d]; x[b] = ROL(x[b] ^ x[c], 7); + +static void _chacha_block(unsigned char *output, const ulong32 *input, int rounds) +{ + ulong32 x[16]; + int i; + XMEMCPY(x, input, sizeof(x)); + for (i = rounds; i > 0; i -= 2) { + QUARTERROUND(0, 4, 8,12) + QUARTERROUND(1, 5, 9,13) + QUARTERROUND(2, 6,10,14) + QUARTERROUND(3, 7,11,15) + QUARTERROUND(0, 5,10,15) + QUARTERROUND(1, 6,11,12) + QUARTERROUND(2, 7, 8,13) + QUARTERROUND(3, 4, 9,14) + } + for (i = 0; i < 16; ++i) { + x[i] += input[i]; + STORE32L(x[i], output + 4 * i); + } +} + +/** + Encrypt (or decrypt) bytes of ciphertext (or plaintext) with ChaCha + @param st The ChaCha state + @param in The plaintext (or ciphertext) + @param inlen The length of the input (octets) + @param out [out] The ciphertext (or plaintext), length inlen + @return CRYPT_OK if successful +*/ +int chacha_crypt(chacha_state *st, const unsigned char *in, unsigned long inlen, unsigned char *out) +{ + unsigned char buf[64]; + unsigned long i, j; + + if (inlen == 0) return CRYPT_OK; /* nothing to do */ + + LTC_ARGCHK(st != NULL); + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(st->ivlen != 0); + + if (st->ksleft > 0) { + j = MIN(st->ksleft, inlen); + for (i = 0; i < j; ++i, st->ksleft--) out[i] = in[i] ^ st->kstream[64 - st->ksleft]; + inlen -= j; + if (inlen == 0) return CRYPT_OK; + out += j; + in += j; + } + for (;;) { + _chacha_block(buf, st->input, st->rounds); + if (st->ivlen == 8) { + /* IV-64bit, increment 64bit counter */ + if (0 == ++st->input[12] && 0 == ++st->input[13]) return CRYPT_OVERFLOW; + } + else { + /* IV-96bit, increment 32bit counter */ + if (0 == ++st->input[12]) return CRYPT_OVERFLOW; + } + if (inlen <= 64) { + for (i = 0; i < inlen; ++i) out[i] = in[i] ^ buf[i]; + st->ksleft = 64 - inlen; + for (i = inlen; i < 64; ++i) st->kstream[i] = buf[i]; + return CRYPT_OK; + } + for (i = 0; i < 64; ++i) out[i] = in[i] ^ buf[i]; + inlen -= 64; + out += 64; + in += 64; + } +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/stream/chacha/chacha_done.c b/fsbl/lib/libtomcrypt/src/stream/chacha/chacha_done.c new file mode 100644 index 000000000..9f0196e2a --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/stream/chacha/chacha_done.c @@ -0,0 +1,30 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_CHACHA + +/** + Terminate and clear ChaCha state + @param st The ChaCha state + @return CRYPT_OK on success +*/ +int chacha_done(chacha_state *st) +{ + LTC_ARGCHK(st != NULL); + XMEMSET(st, 0, sizeof(chacha_state)); + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/stream/chacha/chacha_ivctr32.c b/fsbl/lib/libtomcrypt/src/stream/chacha/chacha_ivctr32.c new file mode 100644 index 000000000..c9a6dbb53 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/stream/chacha/chacha_ivctr32.c @@ -0,0 +1,47 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* The implementation is based on: + * chacha-ref.c version 20080118 + * Public domain from D. J. Bernstein + */ + +#include "tomcrypt.h" + +#ifdef LTC_CHACHA + +/** + Set IV + counter data to the ChaCha state + @param st The ChaCha20 state + @param iv The IV data to add + @param ivlen The length of the IV (must be 12) + @param counter 32bit (unsigned) initial counter value + @return CRYPT_OK on success + */ +int chacha_ivctr32(chacha_state *st, const unsigned char *iv, unsigned long ivlen, ulong32 counter) +{ + LTC_ARGCHK(st != NULL); + LTC_ARGCHK(iv != NULL); + /* 96bit IV + 32bit counter */ + LTC_ARGCHK(ivlen == 12); + + st->input[12] = counter; + LOAD32L(st->input[13], iv + 0); + LOAD32L(st->input[14], iv + 4); + LOAD32L(st->input[15], iv + 8); + st->ksleft = 0; + st->ivlen = ivlen; + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/stream/chacha/chacha_ivctr64.c b/fsbl/lib/libtomcrypt/src/stream/chacha/chacha_ivctr64.c new file mode 100644 index 000000000..643d11fee --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/stream/chacha/chacha_ivctr64.c @@ -0,0 +1,47 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* The implementation is based on: + * chacha-ref.c version 20080118 + * Public domain from D. J. Bernstein + */ + +#include "tomcrypt.h" + +#ifdef LTC_CHACHA + +/** + Set IV + counter data to the ChaCha state + @param st The ChaCha20 state + @param iv The IV data to add + @param ivlen The length of the IV (must be 8) + @param counter 64bit (unsigned) initial counter value + @return CRYPT_OK on success + */ +int chacha_ivctr64(chacha_state *st, const unsigned char *iv, unsigned long ivlen, ulong64 counter) +{ + LTC_ARGCHK(st != NULL); + LTC_ARGCHK(iv != NULL); + /* 64bit IV + 64bit counter */ + LTC_ARGCHK(ivlen == 8); + + st->input[12] = (ulong32)(counter & 0xFFFFFFFF); + st->input[13] = (ulong32)(counter >> 32); + LOAD32L(st->input[14], iv + 0); + LOAD32L(st->input[15], iv + 4); + st->ksleft = 0; + st->ivlen = ivlen; + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/stream/chacha/chacha_keystream.c b/fsbl/lib/libtomcrypt/src/stream/chacha/chacha_keystream.c new file mode 100644 index 000000000..25eb63ad8 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/stream/chacha/chacha_keystream.c @@ -0,0 +1,38 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* The implementation is based on: + * chacha-ref.c version 20080118 + * Public domain from D. J. Bernstein + */ + +#include "tomcrypt.h" + +#ifdef LTC_CHACHA + +/** + Generate a stream of random bytes via ChaCha + @param st The ChaCha20 state + @param out [out] The output buffer + @param outlen The output length + @return CRYPT_OK on success + */ +int chacha_keystream(chacha_state *st, unsigned char *out, unsigned long outlen) +{ + if (outlen == 0) return CRYPT_OK; /* nothing to do */ + LTC_ARGCHK(out != NULL); + XMEMSET(out, 0, outlen); + return chacha_crypt(st, out, outlen, out); +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/stream/chacha/chacha_setup.c b/fsbl/lib/libtomcrypt/src/stream/chacha/chacha_setup.c new file mode 100644 index 000000000..e34370b86 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/stream/chacha/chacha_setup.c @@ -0,0 +1,67 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* The implementation is based on: + * chacha-ref.c version 20080118 + * Public domain from D. J. Bernstein + */ + +#include "tomcrypt.h" + +#ifdef LTC_CHACHA + +static const char * const sigma = "expand 32-byte k"; +static const char * const tau = "expand 16-byte k"; + +/** + Initialize an ChaCha context (only the key) + @param st [out] The destination of the ChaCha state + @param key The secret key + @param keylen The length of the secret key (octets) + @param rounds Number of rounds (e.g. 20 for ChaCha20) + @return CRYPT_OK if successful +*/ +int chacha_setup(chacha_state *st, const unsigned char *key, unsigned long keylen, int rounds) +{ + const char *constants; + + LTC_ARGCHK(st != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(keylen == 32 || keylen == 16); + + if (rounds == 0) rounds = 20; + + LOAD32L(st->input[4], key + 0); + LOAD32L(st->input[5], key + 4); + LOAD32L(st->input[6], key + 8); + LOAD32L(st->input[7], key + 12); + if (keylen == 32) { /* 256bit */ + key += 16; + constants = sigma; + } else { /* 128bit */ + constants = tau; + } + LOAD32L(st->input[8], key + 0); + LOAD32L(st->input[9], key + 4); + LOAD32L(st->input[10], key + 8); + LOAD32L(st->input[11], key + 12); + LOAD32L(st->input[0], constants + 0); + LOAD32L(st->input[1], constants + 4); + LOAD32L(st->input[2], constants + 8); + LOAD32L(st->input[3], constants + 12); + st->rounds = rounds; /* e.g. 20 for chacha20 */ + st->ivlen = 0; /* will be set later by chacha_ivctr(32|64) */ + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/stream/chacha/chacha_test.c b/fsbl/lib/libtomcrypt/src/stream/chacha/chacha_test.c new file mode 100644 index 000000000..649ebf93a --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/stream/chacha/chacha_test.c @@ -0,0 +1,71 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/* The implementation is based on: + * chacha-ref.c version 20080118 + * Public domain from D. J. Bernstein + */ + +#include "tomcrypt.h" + +#ifdef LTC_CHACHA + +int chacha_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + unsigned long len; + unsigned char out[1000]; + /* https://tools.ietf.org/html/rfc7539#section-2.4.2 */ + unsigned char k[] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }; + unsigned char n[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00 }; + unsigned char ct[] = { 0x6E, 0x2E, 0x35, 0x9A, 0x25, 0x68, 0xF9, 0x80, 0x41, 0xBA, 0x07, 0x28, 0xDD, 0x0D, 0x69, 0x81, + 0xE9, 0x7E, 0x7A, 0xEC, 0x1D, 0x43, 0x60, 0xC2, 0x0A, 0x27, 0xAF, 0xCC, 0xFD, 0x9F, 0xAE, 0x0B, + 0xF9, 0x1B, 0x65, 0xC5, 0x52, 0x47, 0x33, 0xAB, 0x8F, 0x59, 0x3D, 0xAB, 0xCD, 0x62, 0xB3, 0x57, + 0x16, 0x39, 0xD6, 0x24, 0xE6, 0x51, 0x52, 0xAB, 0x8F, 0x53, 0x0C, 0x35, 0x9F, 0x08, 0x61, 0xD8, + 0x07, 0xCA, 0x0D, 0xBF, 0x50, 0x0D, 0x6A, 0x61, 0x56, 0xA3, 0x8E, 0x08, 0x8A, 0x22, 0xB6, 0x5E, + 0x52, 0xBC, 0x51, 0x4D, 0x16, 0xCC, 0xF8, 0x06, 0x81, 0x8C, 0xE9, 0x1A, 0xB7, 0x79, 0x37, 0x36, + 0x5A, 0xF9, 0x0B, 0xBF, 0x74, 0xA3, 0x5B, 0xE6, 0xB4, 0x0B, 0x8E, 0xED, 0xF2, 0x78, 0x5E, 0x42, + 0x87, 0x4D }; + char pt[] = "Ladies and Gentlemen of the class of '99: If I could offer you only one tip for the future, sunscreen would be it."; + chacha_state st; + int err; + + len = strlen(pt); + /* crypt piece by piece */ + if ((err = chacha_setup(&st, k, sizeof(k), 20)) != CRYPT_OK) return err; + if ((err = chacha_ivctr32(&st, n, sizeof(n), 1)) != CRYPT_OK) return err; + if ((err = chacha_crypt(&st, (unsigned char*)pt, 35, out)) != CRYPT_OK) return err; + if ((err = chacha_crypt(&st, (unsigned char*)pt + 35, 35, out + 35)) != CRYPT_OK) return err; + if ((err = chacha_crypt(&st, (unsigned char*)pt + 70, 5, out + 70)) != CRYPT_OK) return err; + if ((err = chacha_crypt(&st, (unsigned char*)pt + 75, 5, out + 75)) != CRYPT_OK) return err; + if ((err = chacha_crypt(&st, (unsigned char*)pt + 80, len - 80, out + 80)) != CRYPT_OK) return err; + if (compare_testvector(out, len, ct, sizeof(ct), "CHACHA-TV1", 1)) return CRYPT_FAIL_TESTVECTOR; + /* crypt in one go */ + if ((err = chacha_setup(&st, k, sizeof(k), 20)) != CRYPT_OK) return err; + if ((err = chacha_ivctr32(&st, n, sizeof(n), 1)) != CRYPT_OK) return err; + if ((err = chacha_crypt(&st, (unsigned char*)pt, len, out)) != CRYPT_OK) return err; + if (compare_testvector(out, len, ct, sizeof(ct), "CHACHA-TV2", 1)) return CRYPT_FAIL_TESTVECTOR; + /* crypt in one go - using chacha_ivctr64() */ + if ((err = chacha_setup(&st, k, sizeof(k), 20)) != CRYPT_OK) return err; + if ((err = chacha_ivctr64(&st, n + 4, sizeof(n) - 4, 1)) != CRYPT_OK) return err; + if ((err = chacha_crypt(&st, (unsigned char*)pt, len, out)) != CRYPT_OK) return err; + if (compare_testvector(out, len, ct, sizeof(ct), "CHACHA-TV3", 1)) return CRYPT_FAIL_TESTVECTOR; + + return CRYPT_OK; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/stream/rc4/rc4_stream.c b/fsbl/lib/libtomcrypt/src/stream/rc4/rc4_stream.c new file mode 100644 index 000000000..178489d72 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/stream/rc4/rc4_stream.c @@ -0,0 +1,111 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_RC4_STREAM + +/** + Initialize an RC4 context (only the key) + @param st [out] The destination of the RC4 state + @param key The secret key + @param keylen The length of the secret key (8 - 256 bytes) + @return CRYPT_OK if successful +*/ +int rc4_stream_setup(rc4_state *st, const unsigned char *key, unsigned long keylen) +{ + unsigned char tmp, *s; + int x, y; + unsigned long j; + + LTC_ARGCHK(st != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(keylen >= 5); /* 40-2048 bits */ + + s = st->buf; + for (x = 0; x < 256; x++) { + s[x] = x; + } + + for (j = x = y = 0; x < 256; x++) { + y = (y + s[x] + key[j++]) & 255; + if (j == keylen) { + j = 0; + } + tmp = s[x]; s[x] = s[y]; s[y] = tmp; + } + st->x = 0; + st->y = 0; + + return CRYPT_OK; +} + +/** + Encrypt (or decrypt) bytes of ciphertext (or plaintext) with RC4 + @param st The RC4 state + @param in The plaintext (or ciphertext) + @param inlen The length of the input (octets) + @param out [out] The ciphertext (or plaintext), length inlen + @return CRYPT_OK if successful +*/ +int rc4_stream_crypt(rc4_state *st, const unsigned char *in, unsigned long inlen, unsigned char *out) +{ + unsigned char x, y, *s, tmp; + + LTC_ARGCHK(st != NULL); + LTC_ARGCHK(in != NULL); + LTC_ARGCHK(out != NULL); + + x = st->x; + y = st->y; + s = st->buf; + while (inlen--) { + x = (x + 1) & 255; + y = (y + s[x]) & 255; + tmp = s[x]; s[x] = s[y]; s[y] = tmp; + tmp = (s[x] + s[y]) & 255; + *out++ = *in++ ^ s[tmp]; + } + st->x = x; + st->y = y; + return CRYPT_OK; +} + +/** + Generate a stream of random bytes via RC4 + @param st The RC420 state + @param out [out] The output buffer + @param outlen The output length + @return CRYPT_OK on success + */ +int rc4_stream_keystream(rc4_state *st, unsigned char *out, unsigned long outlen) +{ + if (outlen == 0) return CRYPT_OK; /* nothing to do */ + LTC_ARGCHK(out != NULL); + XMEMSET(out, 0, outlen); + return rc4_stream_crypt(st, out, outlen, out); +} + +/** + Terminate and clear RC4 state + @param st The RC4 state + @return CRYPT_OK on success +*/ +int rc4_stream_done(rc4_state *st) +{ + LTC_ARGCHK(st != NULL); + XMEMSET(st, 0, sizeof(rc4_state)); + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/stream/rc4/rc4_test.c b/fsbl/lib/libtomcrypt/src/stream/rc4/rc4_test.c new file mode 100644 index 000000000..a7e48879c --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/stream/rc4/rc4_test.c @@ -0,0 +1,39 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_RC4_STREAM + +int rc4_stream_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + rc4_state st; + int err; + const unsigned char key[] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }; + const unsigned char pt[] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }; + const unsigned char ct[] = { 0x75, 0xb7, 0x87, 0x80, 0x99, 0xe0, 0xc5, 0x96 }; + unsigned char buf[10]; + + if ((err = rc4_stream_setup(&st, key, sizeof(key))) != CRYPT_OK) return err; + if ((err = rc4_stream_crypt(&st, pt, sizeof(pt), buf)) != CRYPT_OK) return err; + if (compare_testvector(buf, sizeof(ct), ct, sizeof(ct), "RC4", 0)) return CRYPT_FAIL_TESTVECTOR; + if ((err = rc4_stream_done(&st)) != CRYPT_OK) return err; + + return CRYPT_OK; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/stream/sober128/sober128_stream.c b/fsbl/lib/libtomcrypt/src/stream/sober128/sober128_stream.c new file mode 100644 index 000000000..5c35edac5 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/stream/sober128/sober128_stream.c @@ -0,0 +1,346 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ +#include "tomcrypt.h" + +/** + @file sober128_stream.c + Implementation of SOBER-128 by Tom St Denis. + Based on s128fast.c reference code supplied by Greg Rose of QUALCOMM. +*/ + +#ifdef LTC_SOBER128 + +#define __LTC_SOBER128TAB_C__ +#include "sober128tab.c" + +/* don't change these... */ +#define N 17 +#define FOLD N /* how many iterations of folding to do */ +#define INITKONST 0x6996c53a /* value of KONST to use during key loading */ +#define KEYP 15 /* where to insert key words */ +#define FOLDP 4 /* where to insert non-linear feedback */ + +#define B(x,i) ((unsigned char)(((x) >> (8*i)) & 0xFF)) + +static ulong32 BYTE2WORD(unsigned char *b) +{ + ulong32 t; + LOAD32L(t, b); + return t; +} + +static void XORWORD(ulong32 w, const unsigned char *in, unsigned char *out) +{ + ulong32 t; + LOAD32L(t, in); + t ^= w; + STORE32L(t, out); +} + +/* give correct offset for the current position of the register, + * where logically R[0] is at position "zero". + */ +#define OFF(zero, i) (((zero)+(i)) % N) + +/* step the LFSR */ +/* After stepping, "zero" moves right one place */ +#define STEP(R,z) \ + R[OFF(z,0)] = R[OFF(z,15)] ^ R[OFF(z,4)] ^ (R[OFF(z,0)] << 8) ^ Multab[(R[OFF(z,0)] >> 24) & 0xFF]; + +static void cycle(ulong32 *R) +{ + ulong32 t; + int i; + + STEP(R,0); + t = R[0]; + for (i = 1; i < N; ++i) { + R[i-1] = R[i]; + } + R[N-1] = t; +} + +/* Return a non-linear function of some parts of the register. + */ +#define NLFUNC(c,z) \ +{ \ + t = c->R[OFF(z,0)] + c->R[OFF(z,16)]; \ + t ^= Sbox[(t >> 24) & 0xFF]; \ + t = RORc(t, 8); \ + t = ((t + c->R[OFF(z,1)]) ^ c->konst) + c->R[OFF(z,6)]; \ + t ^= Sbox[(t >> 24) & 0xFF]; \ + t = t + c->R[OFF(z,13)]; \ +} + +static ulong32 nltap(sober128_state *c) +{ + ulong32 t; + NLFUNC(c, 0); + return t; +} + +/* Save the current register state + */ +static void s128_savestate(sober128_state *c) +{ + int i; + for (i = 0; i < N; ++i) { + c->initR[i] = c->R[i]; + } +} + +/* initialise to previously saved register state + */ +static void s128_reloadstate(sober128_state *c) +{ + int i; + + for (i = 0; i < N; ++i) { + c->R[i] = c->initR[i]; + } +} + +/* Initialise "konst" + */ +static void s128_genkonst(sober128_state *c) +{ + ulong32 newkonst; + + do { + cycle(c->R); + newkonst = nltap(c); + } while ((newkonst & 0xFF000000) == 0); + c->konst = newkonst; +} + +/* Load key material into the register + */ +#define ADDKEY(k) \ + c->R[KEYP] += (k); + +#define XORNL(nl) \ + c->R[FOLDP] ^= (nl); + +/* nonlinear diffusion of register for key */ +#define DROUND(z) STEP(c->R,z); NLFUNC(c,(z+1)); c->R[OFF((z+1),FOLDP)] ^= t; +static void s128_diffuse(sober128_state *c) +{ + ulong32 t; + /* relies on FOLD == N == 17! */ + DROUND(0); + DROUND(1); + DROUND(2); + DROUND(3); + DROUND(4); + DROUND(5); + DROUND(6); + DROUND(7); + DROUND(8); + DROUND(9); + DROUND(10); + DROUND(11); + DROUND(12); + DROUND(13); + DROUND(14); + DROUND(15); + DROUND(16); +} + +/** + Initialize an Sober128 context (only the key) + @param c [out] The destination of the Sober128 state + @param key The secret key + @param keylen The length of the secret key (octets) + @return CRYPT_OK if successful +*/ +int sober128_stream_setup(sober128_state *c, const unsigned char *key, unsigned long keylen) +{ + ulong32 i, k; + + LTC_ARGCHK(c != NULL); + LTC_ARGCHK(key != NULL); + LTC_ARGCHK(keylen > 0); + + /* keylen must be multiple of 4 bytes */ + if ((keylen & 3) != 0) { + return CRYPT_INVALID_KEYSIZE; + } + + /* Register initialised to Fibonacci numbers */ + c->R[0] = 1; + c->R[1] = 1; + for (i = 2; i < N; ++i) { + c->R[i] = c->R[i-1] + c->R[i-2]; + } + c->konst = INITKONST; + + for (i = 0; i < keylen; i += 4) { + k = BYTE2WORD((unsigned char *)&key[i]); + ADDKEY(k); + cycle(c->R); + XORNL(nltap(c)); + } + + /* also fold in the length of the key */ + ADDKEY(keylen); + + /* now diffuse */ + s128_diffuse(c); + s128_genkonst(c); + s128_savestate(c); + c->nbuf = 0; + + return CRYPT_OK; +} + +/** + Set IV to the Sober128 state + @param c The Sober12820 state + @param iv The IV data to add + @param ivlen The length of the IV (must be 12) + @return CRYPT_OK on success + */ +int sober128_stream_setiv(sober128_state *c, const unsigned char *iv, unsigned long ivlen) +{ + ulong32 i, k; + + LTC_ARGCHK(c != NULL); + LTC_ARGCHK(iv != NULL); + LTC_ARGCHK(ivlen > 0); + + /* ok we are adding an IV then... */ + s128_reloadstate(c); + + /* ivlen must be multiple of 4 bytes */ + if ((ivlen & 3) != 0) { + return CRYPT_INVALID_KEYSIZE; + } + + for (i = 0; i < ivlen; i += 4) { + k = BYTE2WORD((unsigned char *)&iv[i]); + ADDKEY(k); + cycle(c->R); + XORNL(nltap(c)); + } + + /* also fold in the length of the key */ + ADDKEY(ivlen); + + /* now diffuse */ + s128_diffuse(c); + c->nbuf = 0; + + return CRYPT_OK; +} + +/* XOR pseudo-random bytes into buffer + */ +#define SROUND(z) STEP(c->R,z); NLFUNC(c,(z+1)); XORWORD(t, in+(z*4), out+(z*4)); + +/** + Encrypt (or decrypt) bytes of ciphertext (or plaintext) with Sober128 + @param c The Sober128 state + @param in The plaintext (or ciphertext) + @param inlen The length of the input (octets) + @param out [out] The ciphertext (or plaintext), length inlen + @return CRYPT_OK if successful +*/ +int sober128_stream_crypt(sober128_state *c, const unsigned char *in, unsigned long inlen, unsigned char *out) +{ + ulong32 t; + + if (inlen == 0) return CRYPT_OK; /* nothing to do */ + LTC_ARGCHK(out != NULL); + LTC_ARGCHK(c != NULL); + + /* handle any previously buffered bytes */ + while (c->nbuf != 0 && inlen != 0) { + *out++ = *in++ ^ (unsigned char)(c->sbuf & 0xFF); + c->sbuf >>= 8; + c->nbuf -= 8; + --inlen; + } + +#ifndef LTC_SMALL_CODE + /* do lots at a time, if there's enough to do */ + while (inlen >= N*4) { + SROUND(0); + SROUND(1); + SROUND(2); + SROUND(3); + SROUND(4); + SROUND(5); + SROUND(6); + SROUND(7); + SROUND(8); + SROUND(9); + SROUND(10); + SROUND(11); + SROUND(12); + SROUND(13); + SROUND(14); + SROUND(15); + SROUND(16); + out += 4*N; + in += 4*N; + inlen -= 4*N; + } +#endif + + /* do small or odd size buffers the slow way */ + while (4 <= inlen) { + cycle(c->R); + t = nltap(c); + XORWORD(t, in, out); + out += 4; + in += 4; + inlen -= 4; + } + + /* handle any trailing bytes */ + if (inlen != 0) { + cycle(c->R); + c->sbuf = nltap(c); + c->nbuf = 32; + while (c->nbuf != 0 && inlen != 0) { + *out++ = *in++ ^ (unsigned char)(c->sbuf & 0xFF); + c->sbuf >>= 8; + c->nbuf -= 8; + --inlen; + } + } + + return CRYPT_OK; +} + +int sober128_stream_keystream(sober128_state *c, unsigned char *out, unsigned long outlen) +{ + if (outlen == 0) return CRYPT_OK; /* nothing to do */ + LTC_ARGCHK(out != NULL); + XMEMSET(out, 0, outlen); + return sober128_stream_crypt(c, out, outlen, out); +} + +/** + Terminate and clear Sober128 state + @param c The Sober128 state + @return CRYPT_OK on success +*/ +int sober128_stream_done(sober128_state *c) +{ + LTC_ARGCHK(c != NULL); + XMEMSET(c, 0, sizeof(sober128_state)); + return CRYPT_OK; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/stream/sober128/sober128_test.c b/fsbl/lib/libtomcrypt/src/stream/sober128/sober128_test.c new file mode 100644 index 000000000..32ea461c4 --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/stream/sober128/sober128_test.c @@ -0,0 +1,45 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +#include "tomcrypt.h" + +#ifdef LTC_SOBER128 + +int sober128_stream_test(void) +{ +#ifndef LTC_TEST + return CRYPT_NOP; +#else + unsigned char key[16] = { 0x74, 0x65, 0x73, 0x74, 0x20, 0x6b, 0x65, 0x79, + 0x20, 0x31, 0x32, 0x38, 0x62, 0x69, 0x74, 0x73 }; + unsigned char iv[4] = { 0x00, 0x00, 0x00, 0x00 }; + unsigned char out[20] = { 0x43, 0x50, 0x0c, 0xcf, 0x89, 0x91, 0x9f, 0x1d, + 0xaa, 0x37, 0x74, 0x95, 0xf4, 0xb4, 0x58, 0xc2, + 0x40, 0x37, 0x8b, 0xbb }; + int err, len = 20; + unsigned char src[20], dst[20]; + sober128_state st; + + XMEMSET(src, 0, len); /* input */ + if ((err = sober128_stream_setup(&st, key, sizeof(key))) != CRYPT_OK) return err; + if ((err = sober128_stream_setiv(&st, iv, sizeof(iv))) != CRYPT_OK) return err; + if ((err = sober128_stream_crypt(&st, src, len, dst)) != CRYPT_OK) return err; + if ((err = sober128_stream_done(&st)) != CRYPT_OK) return err; + if (compare_testvector(dst, len, out, len, "SOBER-128", 0)) { + return CRYPT_FAIL_TESTVECTOR; + } + return CRYPT_OK; +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtomcrypt/src/stream/sober128/sober128tab.c b/fsbl/lib/libtomcrypt/src/stream/sober128/sober128tab.c new file mode 100644 index 000000000..e02ff234a --- /dev/null +++ b/fsbl/lib/libtomcrypt/src/stream/sober128/sober128tab.c @@ -0,0 +1,176 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + */ + +/** + @file sober128tab.c + SOBER-128 Tables +*/ + +#ifdef __LTC_SOBER128TAB_C__ + +/* $ID$ */ +/* @(#)TuringMultab.h 1.3 (QUALCOMM) 02/09/03 */ +/* Multiplication table for Turing using 0xD02B4367 */ +static const ulong32 Multab[256] = { + 0x00000000, 0xD02B4367, 0xED5686CE, 0x3D7DC5A9, + 0x97AC41D1, 0x478702B6, 0x7AFAC71F, 0xAAD18478, + 0x631582EF, 0xB33EC188, 0x8E430421, 0x5E684746, + 0xF4B9C33E, 0x24928059, 0x19EF45F0, 0xC9C40697, + 0xC62A4993, 0x16010AF4, 0x2B7CCF5D, 0xFB578C3A, + 0x51860842, 0x81AD4B25, 0xBCD08E8C, 0x6CFBCDEB, + 0xA53FCB7C, 0x7514881B, 0x48694DB2, 0x98420ED5, + 0x32938AAD, 0xE2B8C9CA, 0xDFC50C63, 0x0FEE4F04, + 0xC154926B, 0x117FD10C, 0x2C0214A5, 0xFC2957C2, + 0x56F8D3BA, 0x86D390DD, 0xBBAE5574, 0x6B851613, + 0xA2411084, 0x726A53E3, 0x4F17964A, 0x9F3CD52D, + 0x35ED5155, 0xE5C61232, 0xD8BBD79B, 0x089094FC, + 0x077EDBF8, 0xD755989F, 0xEA285D36, 0x3A031E51, + 0x90D29A29, 0x40F9D94E, 0x7D841CE7, 0xADAF5F80, + 0x646B5917, 0xB4401A70, 0x893DDFD9, 0x59169CBE, + 0xF3C718C6, 0x23EC5BA1, 0x1E919E08, 0xCEBADD6F, + 0xCFA869D6, 0x1F832AB1, 0x22FEEF18, 0xF2D5AC7F, + 0x58042807, 0x882F6B60, 0xB552AEC9, 0x6579EDAE, + 0xACBDEB39, 0x7C96A85E, 0x41EB6DF7, 0x91C02E90, + 0x3B11AAE8, 0xEB3AE98F, 0xD6472C26, 0x066C6F41, + 0x09822045, 0xD9A96322, 0xE4D4A68B, 0x34FFE5EC, + 0x9E2E6194, 0x4E0522F3, 0x7378E75A, 0xA353A43D, + 0x6A97A2AA, 0xBABCE1CD, 0x87C12464, 0x57EA6703, + 0xFD3BE37B, 0x2D10A01C, 0x106D65B5, 0xC04626D2, + 0x0EFCFBBD, 0xDED7B8DA, 0xE3AA7D73, 0x33813E14, + 0x9950BA6C, 0x497BF90B, 0x74063CA2, 0xA42D7FC5, + 0x6DE97952, 0xBDC23A35, 0x80BFFF9C, 0x5094BCFB, + 0xFA453883, 0x2A6E7BE4, 0x1713BE4D, 0xC738FD2A, + 0xC8D6B22E, 0x18FDF149, 0x258034E0, 0xF5AB7787, + 0x5F7AF3FF, 0x8F51B098, 0xB22C7531, 0x62073656, + 0xABC330C1, 0x7BE873A6, 0x4695B60F, 0x96BEF568, + 0x3C6F7110, 0xEC443277, 0xD139F7DE, 0x0112B4B9, + 0xD31DD2E1, 0x03369186, 0x3E4B542F, 0xEE601748, + 0x44B19330, 0x949AD057, 0xA9E715FE, 0x79CC5699, + 0xB008500E, 0x60231369, 0x5D5ED6C0, 0x8D7595A7, + 0x27A411DF, 0xF78F52B8, 0xCAF29711, 0x1AD9D476, + 0x15379B72, 0xC51CD815, 0xF8611DBC, 0x284A5EDB, + 0x829BDAA3, 0x52B099C4, 0x6FCD5C6D, 0xBFE61F0A, + 0x7622199D, 0xA6095AFA, 0x9B749F53, 0x4B5FDC34, + 0xE18E584C, 0x31A51B2B, 0x0CD8DE82, 0xDCF39DE5, + 0x1249408A, 0xC26203ED, 0xFF1FC644, 0x2F348523, + 0x85E5015B, 0x55CE423C, 0x68B38795, 0xB898C4F2, + 0x715CC265, 0xA1778102, 0x9C0A44AB, 0x4C2107CC, + 0xE6F083B4, 0x36DBC0D3, 0x0BA6057A, 0xDB8D461D, + 0xD4630919, 0x04484A7E, 0x39358FD7, 0xE91ECCB0, + 0x43CF48C8, 0x93E40BAF, 0xAE99CE06, 0x7EB28D61, + 0xB7768BF6, 0x675DC891, 0x5A200D38, 0x8A0B4E5F, + 0x20DACA27, 0xF0F18940, 0xCD8C4CE9, 0x1DA70F8E, + 0x1CB5BB37, 0xCC9EF850, 0xF1E33DF9, 0x21C87E9E, + 0x8B19FAE6, 0x5B32B981, 0x664F7C28, 0xB6643F4F, + 0x7FA039D8, 0xAF8B7ABF, 0x92F6BF16, 0x42DDFC71, + 0xE80C7809, 0x38273B6E, 0x055AFEC7, 0xD571BDA0, + 0xDA9FF2A4, 0x0AB4B1C3, 0x37C9746A, 0xE7E2370D, + 0x4D33B375, 0x9D18F012, 0xA06535BB, 0x704E76DC, + 0xB98A704B, 0x69A1332C, 0x54DCF685, 0x84F7B5E2, + 0x2E26319A, 0xFE0D72FD, 0xC370B754, 0x135BF433, + 0xDDE1295C, 0x0DCA6A3B, 0x30B7AF92, 0xE09CECF5, + 0x4A4D688D, 0x9A662BEA, 0xA71BEE43, 0x7730AD24, + 0xBEF4ABB3, 0x6EDFE8D4, 0x53A22D7D, 0x83896E1A, + 0x2958EA62, 0xF973A905, 0xC40E6CAC, 0x14252FCB, + 0x1BCB60CF, 0xCBE023A8, 0xF69DE601, 0x26B6A566, + 0x8C67211E, 0x5C4C6279, 0x6131A7D0, 0xB11AE4B7, + 0x78DEE220, 0xA8F5A147, 0x958864EE, 0x45A32789, + 0xEF72A3F1, 0x3F59E096, 0x0224253F, 0xD20F6658, +}; + +/* $ID$ */ +/* Sbox for SOBER-128 */ +/* + * This is really the combination of two SBoxes; the least significant + * 24 bits comes from: + * 8->32 Sbox generated by Millan et. al. at Queensland University of + * Technology. See: E. Dawson, W. Millan, L. Burnett, G. Carter, + * "On the Design of 8*32 S-boxes". Unpublished report, by the + * Information Systems Research Centre, + * Queensland University of Technology, 1999. + * + * The most significant 8 bits are the Skipjack "F table", which can be + * found at http://csrc.nist.gov/CryptoToolkit/skipjack/skipjack.pdf . + * In this optimised table, though, the intent is to XOR the word from + * the table selected by the high byte with the input word. Thus, the + * high byte is actually the Skipjack F-table entry XORED with its + * table index. + */ +static const ulong32 Sbox[256] = { + 0xa3aa1887, 0xd65e435c, 0x0b65c042, 0x800e6ef4, + 0xfc57ee20, 0x4d84fed3, 0xf066c502, 0xf354e8ae, + 0xbb2ee9d9, 0x281f38d4, 0x1f829b5d, 0x735cdf3c, + 0x95864249, 0xbc2e3963, 0xa1f4429f, 0xf6432c35, + 0xf7f40325, 0x3cc0dd70, 0x5f973ded, 0x9902dc5e, + 0xda175b42, 0x590012bf, 0xdc94d78c, 0x39aab26b, + 0x4ac11b9a, 0x8c168146, 0xc3ea8ec5, 0x058ac28f, + 0x52ed5c0f, 0x25b4101c, 0x5a2db082, 0x370929e1, + 0x2a1843de, 0xfe8299fc, 0x202fbc4b, 0x833915dd, + 0x33a803fa, 0xd446b2de, 0x46233342, 0x4fcee7c3, + 0x3ad607ef, 0x9e97ebab, 0x507f859b, 0xe81f2e2f, + 0xc55b71da, 0xd7e2269a, 0x1339c3d1, 0x7ca56b36, + 0xa6c9def2, 0xb5c9fc5f, 0x5927b3a3, 0x89a56ddf, + 0xc625b510, 0x560f85a7, 0xace82e71, 0x2ecb8816, + 0x44951e2a, 0x97f5f6af, 0xdfcbc2b3, 0xce4ff55d, + 0xcb6b6214, 0x2b0b83e3, 0x549ea6f5, 0x9de041af, + 0x792f1f17, 0xf73b99ee, 0x39a65ec0, 0x4c7016c6, + 0x857709a4, 0xd6326e01, 0xc7b280d9, 0x5cfb1418, + 0xa6aff227, 0xfd548203, 0x506b9d96, 0xa117a8c0, + 0x9cd5bf6e, 0xdcee7888, 0x61fcfe64, 0xf7a193cd, + 0x050d0184, 0xe8ae4930, 0x88014f36, 0xd6a87088, + 0x6bad6c2a, 0x1422c678, 0xe9204de7, 0xb7c2e759, + 0x0200248e, 0x013b446b, 0xda0d9fc2, 0x0414a895, + 0x3a6cc3a1, 0x56fef170, 0x86c19155, 0xcf7b8a66, + 0x551b5e69, 0xb4a8623e, 0xa2bdfa35, 0xc4f068cc, + 0x573a6acd, 0x6355e936, 0x03602db9, 0x0edf13c1, + 0x2d0bb16d, 0x6980b83c, 0xfeb23763, 0x3dd8a911, + 0x01b6bc13, 0xf55579d7, 0xf55c2fa8, 0x19f4196e, + 0xe7db5476, 0x8d64a866, 0xc06e16ad, 0xb17fc515, + 0xc46feb3c, 0x8bc8a306, 0xad6799d9, 0x571a9133, + 0x992466dd, 0x92eb5dcd, 0xac118f50, 0x9fafb226, + 0xa1b9cef3, 0x3ab36189, 0x347a19b1, 0x62c73084, + 0xc27ded5c, 0x6c8bc58f, 0x1cdde421, 0xed1e47fb, + 0xcdcc715e, 0xb9c0ff99, 0x4b122f0f, 0xc4d25184, + 0xaf7a5e6c, 0x5bbf18bc, 0x8dd7c6e0, 0x5fb7e420, + 0x521f523f, 0x4ad9b8a2, 0xe9da1a6b, 0x97888c02, + 0x19d1e354, 0x5aba7d79, 0xa2cc7753, 0x8c2d9655, + 0x19829da1, 0x531590a7, 0x19c1c149, 0x3d537f1c, + 0x50779b69, 0xed71f2b7, 0x463c58fa, 0x52dc4418, + 0xc18c8c76, 0xc120d9f0, 0xafa80d4d, 0x3b74c473, + 0xd09410e9, 0x290e4211, 0xc3c8082b, 0x8f6b334a, + 0x3bf68ed2, 0xa843cc1b, 0x8d3c0ff3, 0x20e564a0, + 0xf8f55a4f, 0x2b40f8e7, 0xfea7f15f, 0xcf00fe21, + 0x8a6d37d6, 0xd0d506f1, 0xade00973, 0xefbbde36, + 0x84670fa8, 0xfa31ab9e, 0xaedab618, 0xc01f52f5, + 0x6558eb4f, 0x71b9e343, 0x4b8d77dd, 0x8cb93da6, + 0x740fd52d, 0x425412f8, 0xc5a63360, 0x10e53ad0, + 0x5a700f1c, 0x8324ed0b, 0xe53dc1ec, 0x1a366795, + 0x6d549d15, 0xc5ce46d7, 0xe17abe76, 0x5f48e0a0, + 0xd0f07c02, 0x941249b7, 0xe49ed6ba, 0x37a47f78, + 0xe1cfffbd, 0xb007ca84, 0xbb65f4da, 0xb59f35da, + 0x33d2aa44, 0x417452ac, 0xc0d674a7, 0x2d61a46a, + 0xdc63152a, 0x3e12b7aa, 0x6e615927, 0xa14fb118, + 0xa151758d, 0xba81687b, 0xe152f0b3, 0x764254ed, + 0x34c77271, 0x0a31acab, 0x54f94aec, 0xb9e994cd, + 0x574d9e81, 0x5b623730, 0xce8a21e8, 0x37917f0b, + 0xe8a9b5d6, 0x9697adf8, 0xf3d30431, 0x5dcac921, + 0x76b35d46, 0xaa430a36, 0xc2194022, 0x22bca65e, + 0xdaec70ba, 0xdfaea8cc, 0x777bae8b, 0x242924d5, + 0x1f098a5a, 0x4b396b81, 0x55de2522, 0x435c1cb8, + 0xaeb8fe1d, 0x9db3c697, 0x5b164f83, 0xe0c16376, + 0xa319224c, 0xd0203b35, 0x433ac0fe, 0x1466a19a, + 0x45f0b24f, 0x51fda998, 0xc0d52d71, 0xfa0896a8, + 0xf9e6053f, 0xa4b0d300, 0xd499cbcc, 0xb95e3d40, +}; + +#endif /* __LTC_SOBER128TAB_C__ */ + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/LICENSE b/fsbl/lib/libtommath/LICENSE new file mode 100644 index 000000000..b23b3c867 --- /dev/null +++ b/fsbl/lib/libtommath/LICENSE @@ -0,0 +1,26 @@ + The LibTom license + +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to diff --git a/fsbl/lib/libtommath/README.md b/fsbl/lib/libtommath/README.md new file mode 100644 index 000000000..0e57a4dc4 --- /dev/null +++ b/fsbl/lib/libtommath/README.md @@ -0,0 +1,25 @@ +# libtommath + +This is the git repository for [LibTomMath](http://www.libtom.net/LibTomMath/), a free open source portable number theoretic multiple-precision integer (MPI) library written entirely in C. + +## Build Status + +master: [![Build Status](https://api.travis-ci.org/libtom/libtommath.png?branch=master)](https://travis-ci.org/libtom/libtommath) + +develop: [![Build Status](https://api.travis-ci.org/libtom/libtommath.png?branch=develop)](https://travis-ci.org/libtom/libtommath) + +API/ABI changes: [check here](https://abi-laboratory.pro/tracker/timeline/libtommath/) + +## Summary + +The `develop` branch contains the in-development version. Stable releases are tagged. + +Documentation is built from the LaTeX file `bn.tex`. There is also limited documentation in `tommath.h`. There is also a document, `tommath.pdf`, which describes the goals of the project and many of the algorithms used. + +The project can be build by using `make`. Along with the usual `make`, `make clean` and `make install`, there are several other build targets, see the makefile for details. There are also makefiles for certain specific platforms. + +## Testing + +Tests are located in `demo/` and can be built in two flavors. +* `make test` creates a test binary that is intended to be run against `mtest`. `mtest` can be built with `make mtest` and test execution is done like `./mtest/mtest | ./test`. `mtest` is creating test vectors using an alternative MPI library and `test` is consuming these vectors to verify correct behavior of ltm +* `make test_standalone` creates a stand-alone test binary that executes several test routines. diff --git a/fsbl/lib/libtommath/astylerc b/fsbl/lib/libtommath/astylerc new file mode 100644 index 000000000..5d63f7a06 --- /dev/null +++ b/fsbl/lib/libtommath/astylerc @@ -0,0 +1,27 @@ +# Artistic Style, see http://astyle.sourceforge.net/ +# full documentation, see: http://astyle.sourceforge.net/astyle.html +# +# usage: +# astyle --options=astylerc *.[ch] + +## Bracket Style Options +style=kr + +## Tab Options +indent=spaces=3 + +## Bracket Modify Options + +## Indentation Options +min-conditional-indent=0 + +## Padding Options +pad-header +unpad-paren +align-pointer=name + +## Formatting Options +break-after-logical +max-code-length=120 +convert-tabs +mode=c diff --git a/fsbl/lib/libtommath/bn_error.c b/fsbl/lib/libtommath/bn_error.c new file mode 100644 index 000000000..697875f9f --- /dev/null +++ b/fsbl/lib/libtommath/bn_error.c @@ -0,0 +1,44 @@ +#include "tommath_private.h" +#ifdef BN_ERROR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +static const struct { + int code; + const char *msg; +} msgs[] = { + { MP_OKAY, "Successful" }, + { MP_MEM, "Out of heap" }, + { MP_VAL, "Value out of range" } +}; + +/* return a char * string for a given code */ +const char *mp_error_to_string(int code) +{ + size_t x; + + /* scan the lookup table for the given message */ + for (x = 0; x < (sizeof(msgs) / sizeof(msgs[0])); x++) { + if (msgs[x].code == code) { + return msgs[x].msg; + } + } + + /* generic reply for invalid code */ + return "Invalid error code"; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_fast_mp_invmod.c b/fsbl/lib/libtommath/bn_fast_mp_invmod.c new file mode 100644 index 000000000..3c8088ffd --- /dev/null +++ b/fsbl/lib/libtommath/bn_fast_mp_invmod.c @@ -0,0 +1,160 @@ +#include "tommath_private.h" +#ifdef BN_FAST_MP_INVMOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* computes the modular inverse via binary extended euclidean algorithm, + * that is c = 1/a mod b + * + * Based on slow invmod except this is optimized for the case where b is + * odd as per HAC Note 14.64 on pp. 610 + */ +int fast_mp_invmod(const mp_int *a, const mp_int *b, mp_int *c) +{ + mp_int x, y, u, v, B, D; + int res, neg; + + /* 2. [modified] b must be odd */ + if (mp_iseven(b) == MP_YES) { + return MP_VAL; + } + + /* init all our temps */ + if ((res = mp_init_multi(&x, &y, &u, &v, &B, &D, NULL)) != MP_OKAY) { + return res; + } + + /* x == modulus, y == value to invert */ + if ((res = mp_copy(b, &x)) != MP_OKAY) { + goto LBL_ERR; + } + + /* we need y = |a| */ + if ((res = mp_mod(a, b, &y)) != MP_OKAY) { + goto LBL_ERR; + } + + /* if one of x,y is zero return an error! */ + if ((mp_iszero(&x) == MP_YES) || (mp_iszero(&y) == MP_YES)) { + res = MP_VAL; + goto LBL_ERR; + } + + /* 3. u=x, v=y, A=1, B=0, C=0,D=1 */ + if ((res = mp_copy(&x, &u)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_copy(&y, &v)) != MP_OKAY) { + goto LBL_ERR; + } + mp_set(&D, 1uL); + +top: + /* 4. while u is even do */ + while (mp_iseven(&u) == MP_YES) { + /* 4.1 u = u/2 */ + if ((res = mp_div_2(&u, &u)) != MP_OKAY) { + goto LBL_ERR; + } + /* 4.2 if B is odd then */ + if (mp_isodd(&B) == MP_YES) { + if ((res = mp_sub(&B, &x, &B)) != MP_OKAY) { + goto LBL_ERR; + } + } + /* B = B/2 */ + if ((res = mp_div_2(&B, &B)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* 5. while v is even do */ + while (mp_iseven(&v) == MP_YES) { + /* 5.1 v = v/2 */ + if ((res = mp_div_2(&v, &v)) != MP_OKAY) { + goto LBL_ERR; + } + /* 5.2 if D is odd then */ + if (mp_isodd(&D) == MP_YES) { + /* D = (D-x)/2 */ + if ((res = mp_sub(&D, &x, &D)) != MP_OKAY) { + goto LBL_ERR; + } + } + /* D = D/2 */ + if ((res = mp_div_2(&D, &D)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* 6. if u >= v then */ + if (mp_cmp(&u, &v) != MP_LT) { + /* u = u - v, B = B - D */ + if ((res = mp_sub(&u, &v, &u)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_sub(&B, &D, &B)) != MP_OKAY) { + goto LBL_ERR; + } + } else { + /* v - v - u, D = D - B */ + if ((res = mp_sub(&v, &u, &v)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_sub(&D, &B, &D)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* if not zero goto step 4 */ + if (mp_iszero(&u) == MP_NO) { + goto top; + } + + /* now a = C, b = D, gcd == g*v */ + + /* if v != 1 then there is no inverse */ + if (mp_cmp_d(&v, 1uL) != MP_EQ) { + res = MP_VAL; + goto LBL_ERR; + } + + /* b is now the inverse */ + neg = a->sign; + while (D.sign == MP_NEG) { + if ((res = mp_add(&D, b, &D)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* too big */ + while (mp_cmp_mag(&D, b) != MP_LT) { + if ((res = mp_sub(&D, b, &D)) != MP_OKAY) { + goto LBL_ERR; + } + } + + mp_exch(&D, c); + c->sign = neg; + res = MP_OKAY; + +LBL_ERR: + mp_clear_multi(&x, &y, &u, &v, &B, &D, NULL); + return res; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_fast_mp_montgomery_reduce.c b/fsbl/lib/libtommath/bn_fast_mp_montgomery_reduce.c new file mode 100644 index 000000000..eb5d90b30 --- /dev/null +++ b/fsbl/lib/libtommath/bn_fast_mp_montgomery_reduce.c @@ -0,0 +1,173 @@ +#include "tommath_private.h" +#ifdef BN_FAST_MP_MONTGOMERY_REDUCE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* computes xR**-1 == x (mod N) via Montgomery Reduction + * + * This is an optimized implementation of montgomery_reduce + * which uses the comba method to quickly calculate the columns of the + * reduction. + * + * Based on Algorithm 14.32 on pp.601 of HAC. +*/ +int fast_mp_montgomery_reduce(mp_int *x, const mp_int *n, mp_digit rho) +{ + int ix, res, olduse; + mp_word W[MP_WARRAY]; + + if (x->used > (int)MP_WARRAY) { + return MP_VAL; + } + + /* get old used count */ + olduse = x->used; + + /* grow a as required */ + if (x->alloc < (n->used + 1)) { + if ((res = mp_grow(x, n->used + 1)) != MP_OKAY) { + return res; + } + } + + /* first we have to get the digits of the input into + * an array of double precision words W[...] + */ + { + mp_word *_W; + mp_digit *tmpx; + + /* alias for the W[] array */ + _W = W; + + /* alias for the digits of x*/ + tmpx = x->dp; + + /* copy the digits of a into W[0..a->used-1] */ + for (ix = 0; ix < x->used; ix++) { + *_W++ = *tmpx++; + } + + /* zero the high words of W[a->used..m->used*2] */ + for (; ix < ((n->used * 2) + 1); ix++) { + *_W++ = 0; + } + } + + /* now we proceed to zero successive digits + * from the least significant upwards + */ + for (ix = 0; ix < n->used; ix++) { + /* mu = ai * m' mod b + * + * We avoid a double precision multiplication (which isn't required) + * by casting the value down to a mp_digit. Note this requires + * that W[ix-1] have the carry cleared (see after the inner loop) + */ + mp_digit mu; + mu = ((W[ix] & MP_MASK) * rho) & MP_MASK; + + /* a = a + mu * m * b**i + * + * This is computed in place and on the fly. The multiplication + * by b**i is handled by offseting which columns the results + * are added to. + * + * Note the comba method normally doesn't handle carries in the + * inner loop In this case we fix the carry from the previous + * column since the Montgomery reduction requires digits of the + * result (so far) [see above] to work. This is + * handled by fixing up one carry after the inner loop. The + * carry fixups are done in order so after these loops the + * first m->used words of W[] have the carries fixed + */ + { + int iy; + mp_digit *tmpn; + mp_word *_W; + + /* alias for the digits of the modulus */ + tmpn = n->dp; + + /* Alias for the columns set by an offset of ix */ + _W = W + ix; + + /* inner loop */ + for (iy = 0; iy < n->used; iy++) { + *_W++ += (mp_word)mu * (mp_word)*tmpn++; + } + } + + /* now fix carry for next digit, W[ix+1] */ + W[ix + 1] += W[ix] >> (mp_word)DIGIT_BIT; + } + + /* now we have to propagate the carries and + * shift the words downward [all those least + * significant digits we zeroed]. + */ + { + mp_digit *tmpx; + mp_word *_W, *_W1; + + /* nox fix rest of carries */ + + /* alias for current word */ + _W1 = W + ix; + + /* alias for next word, where the carry goes */ + _W = W + ++ix; + + for (; ix <= ((n->used * 2) + 1); ix++) { + *_W++ += *_W1++ >> (mp_word)DIGIT_BIT; + } + + /* copy out, A = A/b**n + * + * The result is A/b**n but instead of converting from an + * array of mp_word to mp_digit than calling mp_rshd + * we just copy them in the right order + */ + + /* alias for destination word */ + tmpx = x->dp; + + /* alias for shifted double precision result */ + _W = W + n->used; + + for (ix = 0; ix < (n->used + 1); ix++) { + *tmpx++ = *_W++ & (mp_word)MP_MASK; + } + + /* zero oldused digits, if the input a was larger than + * m->used+1 we'll have to clear the digits + */ + for (; ix < olduse; ix++) { + *tmpx++ = 0; + } + } + + /* set the max used and clamp */ + x->used = n->used + 1; + mp_clamp(x); + + /* if A >= m then A = A - m */ + if (mp_cmp_mag(x, n) != MP_LT) { + return s_mp_sub(x, n, x); + } + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_fast_s_mp_mul_digs.c b/fsbl/lib/libtommath/bn_fast_s_mp_mul_digs.c new file mode 100644 index 000000000..4736799b1 --- /dev/null +++ b/fsbl/lib/libtommath/bn_fast_s_mp_mul_digs.c @@ -0,0 +1,104 @@ +#include "tommath_private.h" +#ifdef BN_FAST_S_MP_MUL_DIGS_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* Fast (comba) multiplier + * + * This is the fast column-array [comba] multiplier. It is + * designed to compute the columns of the product first + * then handle the carries afterwards. This has the effect + * of making the nested loops that compute the columns very + * simple and schedulable on super-scalar processors. + * + * This has been modified to produce a variable number of + * digits of output so if say only a half-product is required + * you don't have to compute the upper half (a feature + * required for fast Barrett reduction). + * + * Based on Algorithm 14.12 on pp.595 of HAC. + * + */ +int fast_s_mp_mul_digs(const mp_int *a, const mp_int *b, mp_int *c, int digs) +{ + int olduse, res, pa, ix, iz; + mp_digit W[MP_WARRAY]; + mp_word _W; + + /* grow the destination as required */ + if (c->alloc < digs) { + if ((res = mp_grow(c, digs)) != MP_OKAY) { + return res; + } + } + + /* number of output digits to produce */ + pa = MIN(digs, a->used + b->used); + + /* clear the carry */ + _W = 0; + for (ix = 0; ix < pa; ix++) { + int tx, ty; + int iy; + mp_digit *tmpx, *tmpy; + + /* get offsets into the two bignums */ + ty = MIN(b->used-1, ix); + tx = ix - ty; + + /* setup temp aliases */ + tmpx = a->dp + tx; + tmpy = b->dp + ty; + + /* this is the number of times the loop will iterrate, essentially + while (tx++ < a->used && ty-- >= 0) { ... } + */ + iy = MIN(a->used-tx, ty+1); + + /* execute loop */ + for (iz = 0; iz < iy; ++iz) { + _W += (mp_word)*tmpx++ * (mp_word)*tmpy--; + + } + + /* store term */ + W[ix] = (mp_digit)_W & MP_MASK; + + /* make next carry */ + _W = _W >> (mp_word)DIGIT_BIT; + } + + /* setup dest */ + olduse = c->used; + c->used = pa; + + { + mp_digit *tmpc; + tmpc = c->dp; + for (ix = 0; ix < pa; ix++) { + /* now extract the previous digit [below the carry] */ + *tmpc++ = W[ix]; + } + + /* clear unused digits [that existed in the old copy of c] */ + for (; ix < olduse; ix++) { + *tmpc++ = 0; + } + } + mp_clamp(c); + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_fast_s_mp_mul_high_digs.c b/fsbl/lib/libtommath/bn_fast_s_mp_mul_high_digs.c new file mode 100644 index 000000000..06c076ca5 --- /dev/null +++ b/fsbl/lib/libtommath/bn_fast_s_mp_mul_high_digs.c @@ -0,0 +1,95 @@ +#include "tommath_private.h" +#ifdef BN_FAST_S_MP_MUL_HIGH_DIGS_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* this is a modified version of fast_s_mul_digs that only produces + * output digits *above* digs. See the comments for fast_s_mul_digs + * to see how it works. + * + * This is used in the Barrett reduction since for one of the multiplications + * only the higher digits were needed. This essentially halves the work. + * + * Based on Algorithm 14.12 on pp.595 of HAC. + */ +int fast_s_mp_mul_high_digs(const mp_int *a, const mp_int *b, mp_int *c, int digs) +{ + int olduse, res, pa, ix, iz; + mp_digit W[MP_WARRAY]; + mp_word _W; + + /* grow the destination as required */ + pa = a->used + b->used; + if (c->alloc < pa) { + if ((res = mp_grow(c, pa)) != MP_OKAY) { + return res; + } + } + + /* number of output digits to produce */ + pa = a->used + b->used; + _W = 0; + for (ix = digs; ix < pa; ix++) { + int tx, ty, iy; + mp_digit *tmpx, *tmpy; + + /* get offsets into the two bignums */ + ty = MIN(b->used-1, ix); + tx = ix - ty; + + /* setup temp aliases */ + tmpx = a->dp + tx; + tmpy = b->dp + ty; + + /* this is the number of times the loop will iterrate, essentially its + while (tx++ < a->used && ty-- >= 0) { ... } + */ + iy = MIN(a->used-tx, ty+1); + + /* execute loop */ + for (iz = 0; iz < iy; iz++) { + _W += (mp_word)*tmpx++ * (mp_word)*tmpy--; + } + + /* store term */ + W[ix] = (mp_digit)_W & MP_MASK; + + /* make next carry */ + _W = _W >> (mp_word)DIGIT_BIT; + } + + /* setup dest */ + olduse = c->used; + c->used = pa; + + { + mp_digit *tmpc; + + tmpc = c->dp + digs; + for (ix = digs; ix < pa; ix++) { + /* now extract the previous digit [below the carry] */ + *tmpc++ = W[ix]; + } + + /* clear unused digits [that existed in the old copy of c] */ + for (; ix < olduse; ix++) { + *tmpc++ = 0; + } + } + mp_clamp(c); + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_fast_s_mp_sqr.c b/fsbl/lib/libtommath/bn_fast_s_mp_sqr.c new file mode 100644 index 000000000..5be8e9db1 --- /dev/null +++ b/fsbl/lib/libtommath/bn_fast_s_mp_sqr.c @@ -0,0 +1,111 @@ +#include "tommath_private.h" +#ifdef BN_FAST_S_MP_SQR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* the jist of squaring... + * you do like mult except the offset of the tmpx [one that + * starts closer to zero] can't equal the offset of tmpy. + * So basically you set up iy like before then you min it with + * (ty-tx) so that it never happens. You double all those + * you add in the inner loop + +After that loop you do the squares and add them in. +*/ + +int fast_s_mp_sqr(const mp_int *a, mp_int *b) +{ + int olduse, res, pa, ix, iz; + mp_digit W[MP_WARRAY], *tmpx; + mp_word W1; + + /* grow the destination as required */ + pa = a->used + a->used; + if (b->alloc < pa) { + if ((res = mp_grow(b, pa)) != MP_OKAY) { + return res; + } + } + + /* number of output digits to produce */ + W1 = 0; + for (ix = 0; ix < pa; ix++) { + int tx, ty, iy; + mp_word _W; + mp_digit *tmpy; + + /* clear counter */ + _W = 0; + + /* get offsets into the two bignums */ + ty = MIN(a->used-1, ix); + tx = ix - ty; + + /* setup temp aliases */ + tmpx = a->dp + tx; + tmpy = a->dp + ty; + + /* this is the number of times the loop will iterrate, essentially + while (tx++ < a->used && ty-- >= 0) { ... } + */ + iy = MIN(a->used-tx, ty+1); + + /* now for squaring tx can never equal ty + * we halve the distance since they approach at a rate of 2x + * and we have to round because odd cases need to be executed + */ + iy = MIN(iy, ((ty-tx)+1)>>1); + + /* execute loop */ + for (iz = 0; iz < iy; iz++) { + _W += (mp_word)*tmpx++ * (mp_word)*tmpy--; + } + + /* double the inner product and add carry */ + _W = _W + _W + W1; + + /* even columns have the square term in them */ + if (((unsigned)ix & 1u) == 0u) { + _W += (mp_word)a->dp[ix>>1] * (mp_word)a->dp[ix>>1]; + } + + /* store it */ + W[ix] = _W & MP_MASK; + + /* make next carry */ + W1 = _W >> (mp_word)DIGIT_BIT; + } + + /* setup dest */ + olduse = b->used; + b->used = a->used+a->used; + + { + mp_digit *tmpb; + tmpb = b->dp; + for (ix = 0; ix < pa; ix++) { + *tmpb++ = W[ix] & MP_MASK; + } + + /* clear unused digits [that existed in the old copy of c] */ + for (; ix < olduse; ix++) { + *tmpb++ = 0; + } + } + mp_clamp(b); + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_2expt.c b/fsbl/lib/libtommath/bn_mp_2expt.c new file mode 100644 index 000000000..42f574672 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_2expt.c @@ -0,0 +1,44 @@ +#include "tommath_private.h" +#ifdef BN_MP_2EXPT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* computes a = 2**b + * + * Simple algorithm which zeroes the int, grows it then just sets one bit + * as required. + */ +int mp_2expt(mp_int *a, int b) +{ + int res; + + /* zero a as per default */ + mp_zero(a); + + /* grow a to accomodate the single bit */ + if ((res = mp_grow(a, (b / DIGIT_BIT) + 1)) != MP_OKAY) { + return res; + } + + /* set the used count of where the bit will go */ + a->used = (b / DIGIT_BIT) + 1; + + /* put the single bit in its place */ + a->dp[b / DIGIT_BIT] = (mp_digit)1 << (mp_digit)(b % DIGIT_BIT); + + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_abs.c b/fsbl/lib/libtommath/bn_mp_abs.c new file mode 100644 index 000000000..f12d261af --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_abs.c @@ -0,0 +1,39 @@ +#include "tommath_private.h" +#ifdef BN_MP_ABS_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* b = |a| + * + * Simple function copies the input and fixes the sign to positive + */ +int mp_abs(const mp_int *a, mp_int *b) +{ + int res; + + /* copy a to b */ + if (a != b) { + if ((res = mp_copy(a, b)) != MP_OKAY) { + return res; + } + } + + /* force the sign of b to positive */ + b->sign = MP_ZPOS; + + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_add.c b/fsbl/lib/libtommath/bn_mp_add.c new file mode 100644 index 000000000..f04388aff --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_add.c @@ -0,0 +1,50 @@ +#include "tommath_private.h" +#ifdef BN_MP_ADD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* high level addition (handles signs) */ +int mp_add(const mp_int *a, const mp_int *b, mp_int *c) +{ + int sa, sb, res; + + /* get sign of both inputs */ + sa = a->sign; + sb = b->sign; + + /* handle two cases, not four */ + if (sa == sb) { + /* both positive or both negative */ + /* add their magnitudes, copy the sign */ + c->sign = sa; + res = s_mp_add(a, b, c); + } else { + /* one positive, the other negative */ + /* subtract the one with the greater magnitude from */ + /* the one of the lesser magnitude. The result gets */ + /* the sign of the one with the greater magnitude. */ + if (mp_cmp_mag(a, b) == MP_LT) { + c->sign = sb; + res = s_mp_sub(b, a, c); + } else { + c->sign = sa; + res = s_mp_sub(a, b, c); + } + } + return res; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_add_d.c b/fsbl/lib/libtommath/bn_mp_add_d.c new file mode 100644 index 000000000..ecdb79136 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_add_d.c @@ -0,0 +1,109 @@ +#include "tommath_private.h" +#ifdef BN_MP_ADD_D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* single digit addition */ +int mp_add_d(const mp_int *a, mp_digit b, mp_int *c) +{ + int res, ix, oldused; + mp_digit *tmpa, *tmpc, mu; + + /* grow c as required */ + if (c->alloc < (a->used + 1)) { + if ((res = mp_grow(c, a->used + 1)) != MP_OKAY) { + return res; + } + } + + /* if a is negative and |a| >= b, call c = |a| - b */ + if ((a->sign == MP_NEG) && ((a->used > 1) || (a->dp[0] >= b))) { + mp_int a_ = *a; + /* temporarily fix sign of a */ + a_.sign = MP_ZPOS; + + /* c = |a| - b */ + res = mp_sub_d(&a_, b, c); + + /* fix sign */ + c->sign = MP_NEG; + + /* clamp */ + mp_clamp(c); + + return res; + } + + /* old number of used digits in c */ + oldused = c->used; + + /* source alias */ + tmpa = a->dp; + + /* destination alias */ + tmpc = c->dp; + + /* if a is positive */ + if (a->sign == MP_ZPOS) { + /* add digit, after this we're propagating + * the carry. + */ + *tmpc = *tmpa++ + b; + mu = *tmpc >> DIGIT_BIT; + *tmpc++ &= MP_MASK; + + /* now handle rest of the digits */ + for (ix = 1; ix < a->used; ix++) { + *tmpc = *tmpa++ + mu; + mu = *tmpc >> DIGIT_BIT; + *tmpc++ &= MP_MASK; + } + /* set final carry */ + ix++; + *tmpc++ = mu; + + /* setup size */ + c->used = a->used + 1; + } else { + /* a was negative and |a| < b */ + c->used = 1; + + /* the result is a single digit */ + if (a->used == 1) { + *tmpc++ = b - a->dp[0]; + } else { + *tmpc++ = b; + } + + /* setup count so the clearing of oldused + * can fall through correctly + */ + ix = 1; + } + + /* sign always positive */ + c->sign = MP_ZPOS; + + /* now zero to oldused */ + while (ix++ < oldused) { + *tmpc++ = 0; + } + mp_clamp(c); + + return MP_OKAY; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_addmod.c b/fsbl/lib/libtommath/bn_mp_addmod.c new file mode 100644 index 000000000..f8e4ddac5 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_addmod.c @@ -0,0 +1,37 @@ +#include "tommath_private.h" +#ifdef BN_MP_ADDMOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* d = a + b (mod c) */ +int mp_addmod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d) +{ + int res; + mp_int t; + + if ((res = mp_init(&t)) != MP_OKAY) { + return res; + } + + if ((res = mp_add(a, b, &t)) != MP_OKAY) { + mp_clear(&t); + return res; + } + res = mp_mod(&t, c, d); + mp_clear(&t); + return res; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_and.c b/fsbl/lib/libtommath/bn_mp_and.c new file mode 100644 index 000000000..789bb58fa --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_and.c @@ -0,0 +1,54 @@ +#include "tommath_private.h" +#ifdef BN_MP_AND_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* AND two ints together */ +int mp_and(const mp_int *a, const mp_int *b, mp_int *c) +{ + int res, ix, px; + mp_int t; + const mp_int *x; + + if (a->used > b->used) { + if ((res = mp_init_copy(&t, a)) != MP_OKAY) { + return res; + } + px = b->used; + x = b; + } else { + if ((res = mp_init_copy(&t, b)) != MP_OKAY) { + return res; + } + px = a->used; + x = a; + } + + for (ix = 0; ix < px; ix++) { + t.dp[ix] &= x->dp[ix]; + } + + /* zero digits above the last from the smallest mp_int */ + for (; ix < t.used; ix++) { + t.dp[ix] = 0; + } + + mp_clamp(&t); + mp_exch(c, &t); + mp_clear(&t); + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_clamp.c b/fsbl/lib/libtommath/bn_mp_clamp.c new file mode 100644 index 000000000..0953f4b23 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_clamp.c @@ -0,0 +1,40 @@ +#include "tommath_private.h" +#ifdef BN_MP_CLAMP_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* trim unused digits + * + * This is used to ensure that leading zero digits are + * trimed and the leading "used" digit will be non-zero + * Typically very fast. Also fixes the sign if there + * are no more leading digits + */ +void mp_clamp(mp_int *a) +{ + /* decrease used while the most significant digit is + * zero. + */ + while ((a->used > 0) && (a->dp[a->used - 1] == 0u)) { + --(a->used); + } + + /* reset the sign flag if used == 0 */ + if (a->used == 0) { + a->sign = MP_ZPOS; + } +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_clear.c b/fsbl/lib/libtommath/bn_mp_clear.c new file mode 100644 index 000000000..1f360b278 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_clear.c @@ -0,0 +1,40 @@ +#include "tommath_private.h" +#ifdef BN_MP_CLEAR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* clear one (frees) */ +void mp_clear(mp_int *a) +{ + int i; + + /* only do anything if a hasn't been freed previously */ + if (a->dp != NULL) { + /* first zero the digits */ + for (i = 0; i < a->used; i++) { + a->dp[i] = 0; + } + + /* free ram */ + XFREE(a->dp); + + /* reset members to make debugging easier */ + a->dp = NULL; + a->alloc = a->used = 0; + a->sign = MP_ZPOS; + } +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_clear_multi.c b/fsbl/lib/libtommath/bn_mp_clear_multi.c new file mode 100644 index 000000000..c96b4ac4f --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_clear_multi.c @@ -0,0 +1,32 @@ +#include "tommath_private.h" +#ifdef BN_MP_CLEAR_MULTI_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +#include + +void mp_clear_multi(mp_int *mp, ...) +{ + mp_int *next_mp = mp; + va_list args; + va_start(args, mp); + while (next_mp != NULL) { + mp_clear(next_mp); + next_mp = va_arg(args, mp_int *); + } + va_end(args); +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_cmp.c b/fsbl/lib/libtommath/bn_mp_cmp.c new file mode 100644 index 000000000..fdcb8d542 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_cmp.c @@ -0,0 +1,39 @@ +#include "tommath_private.h" +#ifdef BN_MP_CMP_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* compare two ints (signed)*/ +int mp_cmp(const mp_int *a, const mp_int *b) +{ + /* compare based on sign */ + if (a->sign != b->sign) { + if (a->sign == MP_NEG) { + return MP_LT; + } else { + return MP_GT; + } + } + + /* compare digits */ + if (a->sign == MP_NEG) { + /* if negative compare opposite direction */ + return mp_cmp_mag(b, a); + } else { + return mp_cmp_mag(a, b); + } +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_cmp_d.c b/fsbl/lib/libtommath/bn_mp_cmp_d.c new file mode 100644 index 000000000..643cac6e0 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_cmp_d.c @@ -0,0 +1,41 @@ +#include "tommath_private.h" +#ifdef BN_MP_CMP_D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* compare a digit */ +int mp_cmp_d(const mp_int *a, mp_digit b) +{ + /* compare based on sign */ + if (a->sign == MP_NEG) { + return MP_LT; + } + + /* compare based on magnitude */ + if (a->used > 1) { + return MP_GT; + } + + /* compare the only digit of a to b */ + if (a->dp[0] > b) { + return MP_GT; + } else if (a->dp[0] < b) { + return MP_LT; + } else { + return MP_EQ; + } +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_cmp_mag.c b/fsbl/lib/libtommath/bn_mp_cmp_mag.c new file mode 100644 index 000000000..7f6ce2793 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_cmp_mag.c @@ -0,0 +1,52 @@ +#include "tommath_private.h" +#ifdef BN_MP_CMP_MAG_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* compare maginitude of two ints (unsigned) */ +int mp_cmp_mag(const mp_int *a, const mp_int *b) +{ + int n; + mp_digit *tmpa, *tmpb; + + /* compare based on # of non-zero digits */ + if (a->used > b->used) { + return MP_GT; + } + + if (a->used < b->used) { + return MP_LT; + } + + /* alias for a */ + tmpa = a->dp + (a->used - 1); + + /* alias for b */ + tmpb = b->dp + (a->used - 1); + + /* compare based on digits */ + for (n = 0; n < a->used; ++n, --tmpa, --tmpb) { + if (*tmpa > *tmpb) { + return MP_GT; + } + + if (*tmpa < *tmpb) { + return MP_LT; + } + } + return MP_EQ; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_cnt_lsb.c b/fsbl/lib/libtommath/bn_mp_cnt_lsb.c new file mode 100644 index 000000000..5d9b327fd --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_cnt_lsb.c @@ -0,0 +1,50 @@ +#include "tommath_private.h" +#ifdef BN_MP_CNT_LSB_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +static const int lnz[16] = { + 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0 +}; + +/* Counts the number of lsbs which are zero before the first zero bit */ +int mp_cnt_lsb(const mp_int *a) +{ + int x; + mp_digit q, qq; + + /* easy out */ + if (mp_iszero(a) == MP_YES) { + return 0; + } + + /* scan lower digits until non-zero */ + for (x = 0; (x < a->used) && (a->dp[x] == 0u); x++) {} + q = a->dp[x]; + x *= DIGIT_BIT; + + /* now scan this digit until a 1 is found */ + if ((q & 1u) == 0u) { + do { + qq = q & 15u; + x += lnz[qq]; + q >>= 4; + } while (qq == 0u); + } + return x; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_complement.c b/fsbl/lib/libtommath/bn_mp_complement.c new file mode 100644 index 000000000..5a5a96935 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_complement.c @@ -0,0 +1,25 @@ +#include "tommath_private.h" +#ifdef BN_MP_COMPLEMENT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* b = ~a */ +int mp_complement(const mp_int *a, mp_int *b) +{ + int res = mp_neg(a, b); + return (res == MP_OKAY) ? mp_sub_d(b, 1uL, b) : res; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_copy.c b/fsbl/lib/libtommath/bn_mp_copy.c new file mode 100644 index 000000000..51e023901 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_copy.c @@ -0,0 +1,64 @@ +#include "tommath_private.h" +#ifdef BN_MP_COPY_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* copy, b = a */ +int mp_copy(const mp_int *a, mp_int *b) +{ + int res, n; + + /* if dst == src do nothing */ + if (a == b) { + return MP_OKAY; + } + + /* grow dest */ + if (b->alloc < a->used) { + if ((res = mp_grow(b, a->used)) != MP_OKAY) { + return res; + } + } + + /* zero b and copy the parameters over */ + { + mp_digit *tmpa, *tmpb; + + /* pointer aliases */ + + /* source */ + tmpa = a->dp; + + /* destination */ + tmpb = b->dp; + + /* copy all the digits */ + for (n = 0; n < a->used; n++) { + *tmpb++ = *tmpa++; + } + + /* clear high digits */ + for (; n < b->used; n++) { + *tmpb++ = 0; + } + } + + /* copy used count and sign */ + b->used = a->used; + b->sign = a->sign; + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_count_bits.c b/fsbl/lib/libtommath/bn_mp_count_bits.c new file mode 100644 index 000000000..f7a05df17 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_count_bits.c @@ -0,0 +1,41 @@ +#include "tommath_private.h" +#ifdef BN_MP_COUNT_BITS_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* returns the number of bits in an int */ +int mp_count_bits(const mp_int *a) +{ + int r; + mp_digit q; + + /* shortcut */ + if (a->used == 0) { + return 0; + } + + /* get number of digits and add that */ + r = (a->used - 1) * DIGIT_BIT; + + /* take the last digit and count the bits in it */ + q = a->dp[a->used - 1]; + while (q > (mp_digit)0) { + ++r; + q >>= (mp_digit)1; + } + return r; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_div.c b/fsbl/lib/libtommath/bn_mp_div.c new file mode 100644 index 000000000..44e3cb95e --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_div.c @@ -0,0 +1,297 @@ +#include "tommath_private.h" +#ifdef BN_MP_DIV_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +#ifdef BN_MP_DIV_SMALL + +/* slower bit-bang division... also smaller */ +int mp_div(const mp_int *a, const mp_int *b, mp_int *c, mp_int *d) +{ + mp_int ta, tb, tq, q; + int res, n, n2; + + /* is divisor zero ? */ + if (mp_iszero(b) == MP_YES) { + return MP_VAL; + } + + /* if a < b then q=0, r = a */ + if (mp_cmp_mag(a, b) == MP_LT) { + if (d != NULL) { + res = mp_copy(a, d); + } else { + res = MP_OKAY; + } + if (c != NULL) { + mp_zero(c); + } + return res; + } + + /* init our temps */ + if ((res = mp_init_multi(&ta, &tb, &tq, &q, NULL)) != MP_OKAY) { + return res; + } + + + mp_set(&tq, 1uL); + n = mp_count_bits(a) - mp_count_bits(b); + if (((res = mp_abs(a, &ta)) != MP_OKAY) || + ((res = mp_abs(b, &tb)) != MP_OKAY) || + ((res = mp_mul_2d(&tb, n, &tb)) != MP_OKAY) || + ((res = mp_mul_2d(&tq, n, &tq)) != MP_OKAY)) { + goto LBL_ERR; + } + + while (n-- >= 0) { + if (mp_cmp(&tb, &ta) != MP_GT) { + if (((res = mp_sub(&ta, &tb, &ta)) != MP_OKAY) || + ((res = mp_add(&q, &tq, &q)) != MP_OKAY)) { + goto LBL_ERR; + } + } + if (((res = mp_div_2d(&tb, 1, &tb, NULL)) != MP_OKAY) || + ((res = mp_div_2d(&tq, 1, &tq, NULL)) != MP_OKAY)) { + goto LBL_ERR; + } + } + + /* now q == quotient and ta == remainder */ + n = a->sign; + n2 = (a->sign == b->sign) ? MP_ZPOS : MP_NEG; + if (c != NULL) { + mp_exch(c, &q); + c->sign = (mp_iszero(c) == MP_YES) ? MP_ZPOS : n2; + } + if (d != NULL) { + mp_exch(d, &ta); + d->sign = (mp_iszero(d) == MP_YES) ? MP_ZPOS : n; + } +LBL_ERR: + mp_clear_multi(&ta, &tb, &tq, &q, NULL); + return res; +} + +#else + +/* integer signed division. + * c*b + d == a [e.g. a/b, c=quotient, d=remainder] + * HAC pp.598 Algorithm 14.20 + * + * Note that the description in HAC is horribly + * incomplete. For example, it doesn't consider + * the case where digits are removed from 'x' in + * the inner loop. It also doesn't consider the + * case that y has fewer than three digits, etc.. + * + * The overall algorithm is as described as + * 14.20 from HAC but fixed to treat these cases. +*/ +int mp_div(const mp_int *a, const mp_int *b, mp_int *c, mp_int *d) +{ + mp_int q, x, y, t1, t2; + int res, n, t, i, norm, neg; + + /* is divisor zero ? */ + if (mp_iszero(b) == MP_YES) { + return MP_VAL; + } + + /* if a < b then q=0, r = a */ + if (mp_cmp_mag(a, b) == MP_LT) { + if (d != NULL) { + res = mp_copy(a, d); + } else { + res = MP_OKAY; + } + if (c != NULL) { + mp_zero(c); + } + return res; + } + + if ((res = mp_init_size(&q, a->used + 2)) != MP_OKAY) { + return res; + } + q.used = a->used + 2; + + if ((res = mp_init(&t1)) != MP_OKAY) { + goto LBL_Q; + } + + if ((res = mp_init(&t2)) != MP_OKAY) { + goto LBL_T1; + } + + if ((res = mp_init_copy(&x, a)) != MP_OKAY) { + goto LBL_T2; + } + + if ((res = mp_init_copy(&y, b)) != MP_OKAY) { + goto LBL_X; + } + + /* fix the sign */ + neg = (a->sign == b->sign) ? MP_ZPOS : MP_NEG; + x.sign = y.sign = MP_ZPOS; + + /* normalize both x and y, ensure that y >= b/2, [b == 2**DIGIT_BIT] */ + norm = mp_count_bits(&y) % DIGIT_BIT; + if (norm < (DIGIT_BIT - 1)) { + norm = (DIGIT_BIT - 1) - norm; + if ((res = mp_mul_2d(&x, norm, &x)) != MP_OKAY) { + goto LBL_Y; + } + if ((res = mp_mul_2d(&y, norm, &y)) != MP_OKAY) { + goto LBL_Y; + } + } else { + norm = 0; + } + + /* note hac does 0 based, so if used==5 then its 0,1,2,3,4, e.g. use 4 */ + n = x.used - 1; + t = y.used - 1; + + /* while (x >= y*b**n-t) do { q[n-t] += 1; x -= y*b**{n-t} } */ + if ((res = mp_lshd(&y, n - t)) != MP_OKAY) { /* y = y*b**{n-t} */ + goto LBL_Y; + } + + while (mp_cmp(&x, &y) != MP_LT) { + ++(q.dp[n - t]); + if ((res = mp_sub(&x, &y, &x)) != MP_OKAY) { + goto LBL_Y; + } + } + + /* reset y by shifting it back down */ + mp_rshd(&y, n - t); + + /* step 3. for i from n down to (t + 1) */ + for (i = n; i >= (t + 1); i--) { + if (i > x.used) { + continue; + } + + /* step 3.1 if xi == yt then set q{i-t-1} to b-1, + * otherwise set q{i-t-1} to (xi*b + x{i-1})/yt */ + if (x.dp[i] == y.dp[t]) { + q.dp[(i - t) - 1] = ((mp_digit)1 << (mp_digit)DIGIT_BIT) - (mp_digit)1; + } else { + mp_word tmp; + tmp = (mp_word)x.dp[i] << (mp_word)DIGIT_BIT; + tmp |= (mp_word)x.dp[i - 1]; + tmp /= (mp_word)y.dp[t]; + if (tmp > (mp_word)MP_MASK) { + tmp = MP_MASK; + } + q.dp[(i - t) - 1] = (mp_digit)(tmp & (mp_word)MP_MASK); + } + + /* while (q{i-t-1} * (yt * b + y{t-1})) > + xi * b**2 + xi-1 * b + xi-2 + + do q{i-t-1} -= 1; + */ + q.dp[(i - t) - 1] = (q.dp[(i - t) - 1] + 1uL) & (mp_digit)MP_MASK; + do { + q.dp[(i - t) - 1] = (q.dp[(i - t) - 1] - 1uL) & (mp_digit)MP_MASK; + + /* find left hand */ + mp_zero(&t1); + t1.dp[0] = ((t - 1) < 0) ? 0u : y.dp[t - 1]; + t1.dp[1] = y.dp[t]; + t1.used = 2; + if ((res = mp_mul_d(&t1, q.dp[(i - t) - 1], &t1)) != MP_OKAY) { + goto LBL_Y; + } + + /* find right hand */ + t2.dp[0] = ((i - 2) < 0) ? 0u : x.dp[i - 2]; + t2.dp[1] = ((i - 1) < 0) ? 0u : x.dp[i - 1]; + t2.dp[2] = x.dp[i]; + t2.used = 3; + } while (mp_cmp_mag(&t1, &t2) == MP_GT); + + /* step 3.3 x = x - q{i-t-1} * y * b**{i-t-1} */ + if ((res = mp_mul_d(&y, q.dp[(i - t) - 1], &t1)) != MP_OKAY) { + goto LBL_Y; + } + + if ((res = mp_lshd(&t1, (i - t) - 1)) != MP_OKAY) { + goto LBL_Y; + } + + if ((res = mp_sub(&x, &t1, &x)) != MP_OKAY) { + goto LBL_Y; + } + + /* if x < 0 then { x = x + y*b**{i-t-1}; q{i-t-1} -= 1; } */ + if (x.sign == MP_NEG) { + if ((res = mp_copy(&y, &t1)) != MP_OKAY) { + goto LBL_Y; + } + if ((res = mp_lshd(&t1, (i - t) - 1)) != MP_OKAY) { + goto LBL_Y; + } + if ((res = mp_add(&x, &t1, &x)) != MP_OKAY) { + goto LBL_Y; + } + + q.dp[(i - t) - 1] = (q.dp[(i - t) - 1] - 1uL) & MP_MASK; + } + } + + /* now q is the quotient and x is the remainder + * [which we have to normalize] + */ + + /* get sign before writing to c */ + x.sign = (x.used == 0) ? MP_ZPOS : a->sign; + + if (c != NULL) { + mp_clamp(&q); + mp_exch(&q, c); + c->sign = neg; + } + + if (d != NULL) { + if ((res = mp_div_2d(&x, norm, &x, NULL)) != MP_OKAY) { + goto LBL_Y; + } + mp_exch(&x, d); + } + + res = MP_OKAY; + +LBL_Y: + mp_clear(&y); +LBL_X: + mp_clear(&x); +LBL_T2: + mp_clear(&t2); +LBL_T1: + mp_clear(&t1); +LBL_Q: + mp_clear(&q); + return res; +} + +#endif + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_div_2.c b/fsbl/lib/libtommath/bn_mp_div_2.c new file mode 100644 index 000000000..e679d00a8 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_div_2.c @@ -0,0 +1,65 @@ +#include "tommath_private.h" +#ifdef BN_MP_DIV_2_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* b = a/2 */ +int mp_div_2(const mp_int *a, mp_int *b) +{ + int x, res, oldused; + + /* copy */ + if (b->alloc < a->used) { + if ((res = mp_grow(b, a->used)) != MP_OKAY) { + return res; + } + } + + oldused = b->used; + b->used = a->used; + { + mp_digit r, rr, *tmpa, *tmpb; + + /* source alias */ + tmpa = a->dp + b->used - 1; + + /* dest alias */ + tmpb = b->dp + b->used - 1; + + /* carry */ + r = 0; + for (x = b->used - 1; x >= 0; x--) { + /* get the carry for the next iteration */ + rr = *tmpa & 1u; + + /* shift the current digit, add in carry and store */ + *tmpb-- = (*tmpa-- >> 1) | (r << (DIGIT_BIT - 1)); + + /* forward carry to next iteration */ + r = rr; + } + + /* zero excess digits */ + tmpb = b->dp + b->used; + for (x = b->used; x < oldused; x++) { + *tmpb++ = 0; + } + } + b->sign = a->sign; + mp_clamp(b); + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_div_2d.c b/fsbl/lib/libtommath/bn_mp_div_2d.c new file mode 100644 index 000000000..912faaf78 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_div_2d.c @@ -0,0 +1,83 @@ +#include "tommath_private.h" +#ifdef BN_MP_DIV_2D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* shift right by a certain bit count (store quotient in c, optional remainder in d) */ +int mp_div_2d(const mp_int *a, int b, mp_int *c, mp_int *d) +{ + mp_digit D, r, rr; + int x, res; + + /* if the shift count is <= 0 then we do no work */ + if (b <= 0) { + res = mp_copy(a, c); + if (d != NULL) { + mp_zero(d); + } + return res; + } + + /* copy */ + if ((res = mp_copy(a, c)) != MP_OKAY) { + return res; + } + /* 'a' should not be used after here - it might be the same as d */ + + /* get the remainder */ + if (d != NULL) { + if ((res = mp_mod_2d(a, b, d)) != MP_OKAY) { + return res; + } + } + + /* shift by as many digits in the bit count */ + if (b >= DIGIT_BIT) { + mp_rshd(c, b / DIGIT_BIT); + } + + /* shift any bit count < DIGIT_BIT */ + D = (mp_digit)(b % DIGIT_BIT); + if (D != 0u) { + mp_digit *tmpc, mask, shift; + + /* mask */ + mask = ((mp_digit)1 << D) - 1uL; + + /* shift for lsb */ + shift = (mp_digit)DIGIT_BIT - D; + + /* alias */ + tmpc = c->dp + (c->used - 1); + + /* carry */ + r = 0; + for (x = c->used - 1; x >= 0; x--) { + /* get the lower bits of this word in a temp */ + rr = *tmpc & mask; + + /* shift the current word and mix in the carry bits from the previous word */ + *tmpc = (*tmpc >> D) | (r << shift); + --tmpc; + + /* set the carry to the carry bits of the current word found above */ + r = rr; + } + } + mp_clamp(c); + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_div_3.c b/fsbl/lib/libtommath/bn_mp_div_3.c new file mode 100644 index 000000000..33a34322c --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_div_3.c @@ -0,0 +1,75 @@ +#include "tommath_private.h" +#ifdef BN_MP_DIV_3_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* divide by three (based on routine from MPI and the GMP manual) */ +int mp_div_3(const mp_int *a, mp_int *c, mp_digit *d) +{ + mp_int q; + mp_word w, t; + mp_digit b; + int res, ix; + + /* b = 2**DIGIT_BIT / 3 */ + b = ((mp_word)1 << (mp_word)DIGIT_BIT) / (mp_word)3; + + if ((res = mp_init_size(&q, a->used)) != MP_OKAY) { + return res; + } + + q.used = a->used; + q.sign = a->sign; + w = 0; + for (ix = a->used - 1; ix >= 0; ix--) { + w = (w << (mp_word)DIGIT_BIT) | (mp_word)a->dp[ix]; + + if (w >= 3u) { + /* multiply w by [1/3] */ + t = (w * (mp_word)b) >> (mp_word)DIGIT_BIT; + + /* now subtract 3 * [w/3] from w, to get the remainder */ + w -= t+t+t; + + /* fixup the remainder as required since + * the optimization is not exact. + */ + while (w >= 3u) { + t += 1u; + w -= 3u; + } + } else { + t = 0; + } + q.dp[ix] = (mp_digit)t; + } + + /* [optional] store the remainder */ + if (d != NULL) { + *d = (mp_digit)w; + } + + /* [optional] store the quotient */ + if (c != NULL) { + mp_clamp(&q); + mp_exch(&q, c); + } + mp_clear(&q); + + return res; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_div_d.c b/fsbl/lib/libtommath/bn_mp_div_d.c new file mode 100644 index 000000000..d30ce33ab --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_div_d.c @@ -0,0 +1,112 @@ +#include "tommath_private.h" +#ifdef BN_MP_DIV_D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +static int s_is_power_of_two(mp_digit b, int *p) +{ + int x; + + /* fast return if no power of two */ + if ((b == 0u) || ((b & (b-1u)) != 0u)) { + return 0; + } + + for (x = 0; x < DIGIT_BIT; x++) { + if (b == ((mp_digit)1<<(mp_digit)x)) { + *p = x; + return 1; + } + } + return 0; +} + +/* single digit division (based on routine from MPI) */ +int mp_div_d(const mp_int *a, mp_digit b, mp_int *c, mp_digit *d) +{ + mp_int q; + mp_word w; + mp_digit t; + int res, ix; + + /* cannot divide by zero */ + if (b == 0u) { + return MP_VAL; + } + + /* quick outs */ + if ((b == 1u) || (mp_iszero(a) == MP_YES)) { + if (d != NULL) { + *d = 0; + } + if (c != NULL) { + return mp_copy(a, c); + } + return MP_OKAY; + } + + /* power of two ? */ + if (s_is_power_of_two(b, &ix) == 1) { + if (d != NULL) { + *d = a->dp[0] & (((mp_digit)1<<(mp_digit)ix) - 1uL); + } + if (c != NULL) { + return mp_div_2d(a, ix, c, NULL); + } + return MP_OKAY; + } + +#ifdef BN_MP_DIV_3_C + /* three? */ + if (b == 3u) { + return mp_div_3(a, c, d); + } +#endif + + /* no easy answer [c'est la vie]. Just division */ + if ((res = mp_init_size(&q, a->used)) != MP_OKAY) { + return res; + } + + q.used = a->used; + q.sign = a->sign; + w = 0; + for (ix = a->used - 1; ix >= 0; ix--) { + w = (w << (mp_word)DIGIT_BIT) | (mp_word)a->dp[ix]; + + if (w >= b) { + t = (mp_digit)(w / b); + w -= (mp_word)t * (mp_word)b; + } else { + t = 0; + } + q.dp[ix] = t; + } + + if (d != NULL) { + *d = (mp_digit)w; + } + + if (c != NULL) { + mp_clamp(&q); + mp_exch(&q, c); + } + mp_clear(&q); + + return res; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_dr_is_modulus.c b/fsbl/lib/libtommath/bn_mp_dr_is_modulus.c new file mode 100644 index 000000000..4d0c8ce26 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_dr_is_modulus.c @@ -0,0 +1,40 @@ +#include "tommath_private.h" +#ifdef BN_MP_DR_IS_MODULUS_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* determines if a number is a valid DR modulus */ +int mp_dr_is_modulus(const mp_int *a) +{ + int ix; + + /* must be at least two digits */ + if (a->used < 2) { + return 0; + } + + /* must be of the form b**k - a [a <= b] so all + * but the first digit must be equal to -1 (mod b). + */ + for (ix = 1; ix < a->used; ix++) { + if (a->dp[ix] != MP_MASK) { + return 0; + } + } + return 1; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_dr_reduce.c b/fsbl/lib/libtommath/bn_mp_dr_reduce.c new file mode 100644 index 000000000..da24d17a6 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_dr_reduce.c @@ -0,0 +1,92 @@ +#include "tommath_private.h" +#ifdef BN_MP_DR_REDUCE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* reduce "x" in place modulo "n" using the Diminished Radix algorithm. + * + * Based on algorithm from the paper + * + * "Generating Efficient Primes for Discrete Log Cryptosystems" + * Chae Hoon Lim, Pil Joong Lee, + * POSTECH Information Research Laboratories + * + * The modulus must be of a special format [see manual] + * + * Has been modified to use algorithm 7.10 from the LTM book instead + * + * Input x must be in the range 0 <= x <= (n-1)**2 + */ +int mp_dr_reduce(mp_int *x, const mp_int *n, mp_digit k) +{ + int err, i, m; + mp_word r; + mp_digit mu, *tmpx1, *tmpx2; + + /* m = digits in modulus */ + m = n->used; + + /* ensure that "x" has at least 2m digits */ + if (x->alloc < (m + m)) { + if ((err = mp_grow(x, m + m)) != MP_OKAY) { + return err; + } + } + + /* top of loop, this is where the code resumes if + * another reduction pass is required. + */ +top: + /* aliases for digits */ + /* alias for lower half of x */ + tmpx1 = x->dp; + + /* alias for upper half of x, or x/B**m */ + tmpx2 = x->dp + m; + + /* set carry to zero */ + mu = 0; + + /* compute (x mod B**m) + k * [x/B**m] inline and inplace */ + for (i = 0; i < m; i++) { + r = ((mp_word)*tmpx2++ * (mp_word)k) + *tmpx1 + mu; + *tmpx1++ = (mp_digit)(r & MP_MASK); + mu = (mp_digit)(r >> ((mp_word)DIGIT_BIT)); + } + + /* set final carry */ + *tmpx1++ = mu; + + /* zero words above m */ + for (i = m + 1; i < x->used; i++) { + *tmpx1++ = 0; + } + + /* clamp, sub and return */ + mp_clamp(x); + + /* if x >= n then subtract and reduce again + * Each successive "recursion" makes the input smaller and smaller. + */ + if (mp_cmp_mag(x, n) != MP_LT) { + if ((err = s_mp_sub(x, n, x)) != MP_OKAY) { + return err; + } + goto top; + } + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_dr_setup.c b/fsbl/lib/libtommath/bn_mp_dr_setup.c new file mode 100644 index 000000000..f8c7e7e36 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_dr_setup.c @@ -0,0 +1,28 @@ +#include "tommath_private.h" +#ifdef BN_MP_DR_SETUP_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* determines the setup value */ +void mp_dr_setup(const mp_int *a, mp_digit *d) +{ + /* the casts are required if DIGIT_BIT is one less than + * the number of bits in a mp_digit [e.g. DIGIT_BIT==31] + */ + *d = (mp_digit)(((mp_word)1 << (mp_word)DIGIT_BIT) - (mp_word)a->dp[0]); +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_exch.c b/fsbl/lib/libtommath/bn_mp_exch.c new file mode 100644 index 000000000..2f338774b --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_exch.c @@ -0,0 +1,30 @@ +#include "tommath_private.h" +#ifdef BN_MP_EXCH_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* swap the elements of two integers, for cases where you can't simply swap the + * mp_int pointers around + */ +void mp_exch(mp_int *a, mp_int *b) +{ + mp_int t; + + t = *a; + *a = *b; + *b = t; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_export.c b/fsbl/lib/libtommath/bn_mp_export.c new file mode 100644 index 000000000..ea48e909a --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_export.c @@ -0,0 +1,84 @@ +#include "tommath_private.h" +#ifdef BN_MP_EXPORT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* based on gmp's mpz_export. + * see http://gmplib.org/manual/Integer-Import-and-Export.html + */ +int mp_export(void *rop, size_t *countp, int order, size_t size, + int endian, size_t nails, const mp_int *op) +{ + int result; + size_t odd_nails, nail_bytes, i, j, bits, count; + unsigned char odd_nail_mask; + + mp_int t; + + if ((result = mp_init_copy(&t, op)) != MP_OKAY) { + return result; + } + + if (endian == 0) { + union { + unsigned int i; + char c[4]; + } lint; + lint.i = 0x01020304; + + endian = (lint.c[0] == '\x04') ? -1 : 1; + } + + odd_nails = (nails % 8u); + odd_nail_mask = 0xff; + for (i = 0; i < odd_nails; ++i) { + odd_nail_mask ^= (unsigned char)(1u << (7u - i)); + } + nail_bytes = nails / 8u; + + bits = (size_t)mp_count_bits(&t); + count = (bits / ((size * 8u) - nails)) + (((bits % ((size * 8u) - nails)) != 0u) ? 1u : 0u); + + for (i = 0; i < count; ++i) { + for (j = 0; j < size; ++j) { + unsigned char *byte = (unsigned char *)rop + + (((order == -1) ? i : ((count - 1u) - i)) * size) + + ((endian == -1) ? j : ((size - 1u) - j)); + + if (j >= (size - nail_bytes)) { + *byte = 0; + continue; + } + + *byte = (unsigned char)((j == ((size - nail_bytes) - 1u)) ? (t.dp[0] & odd_nail_mask) : (t.dp[0] & 0xFFuL)); + + if ((result = mp_div_2d(&t, (j == ((size - nail_bytes) - 1u)) ? (int)(8u - odd_nails) : 8, &t, NULL)) != MP_OKAY) { + mp_clear(&t); + return result; + } + } + } + + mp_clear(&t); + + if (countp != NULL) { + *countp = count; + } + + return MP_OKAY; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_expt_d.c b/fsbl/lib/libtommath/bn_mp_expt_d.c new file mode 100644 index 000000000..e0df09c85 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_expt_d.c @@ -0,0 +1,25 @@ +#include "tommath_private.h" +#ifdef BN_MP_EXPT_D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* wrapper function for mp_expt_d_ex() */ +int mp_expt_d(const mp_int *a, mp_digit b, mp_int *c) +{ + return mp_expt_d_ex(a, b, c, 0); +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_expt_d_ex.c b/fsbl/lib/libtommath/bn_mp_expt_d_ex.c new file mode 100644 index 000000000..5a6f7b2f0 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_expt_d_ex.c @@ -0,0 +1,79 @@ +#include "tommath_private.h" +#ifdef BN_MP_EXPT_D_EX_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* calculate c = a**b using a square-multiply algorithm */ +int mp_expt_d_ex(const mp_int *a, mp_digit b, mp_int *c, int fast) +{ + int res; + unsigned int x; + + mp_int g; + + if ((res = mp_init_copy(&g, a)) != MP_OKAY) { + return res; + } + + /* set initial result */ + mp_set(c, 1uL); + + if (fast != 0) { + while (b > 0u) { + /* if the bit is set multiply */ + if ((b & 1u) != 0u) { + if ((res = mp_mul(c, &g, c)) != MP_OKAY) { + mp_clear(&g); + return res; + } + } + + /* square */ + if (b > 1u) { + if ((res = mp_sqr(&g, &g)) != MP_OKAY) { + mp_clear(&g); + return res; + } + } + + /* shift to next bit */ + b >>= 1; + } + } else { + for (x = 0; x < (unsigned)DIGIT_BIT; x++) { + /* square */ + if ((res = mp_sqr(c, c)) != MP_OKAY) { + mp_clear(&g); + return res; + } + + /* if the bit is set multiply */ + if ((b & ((mp_digit)1 << (DIGIT_BIT - 1))) != 0u) { + if ((res = mp_mul(c, &g, c)) != MP_OKAY) { + mp_clear(&g); + return res; + } + } + + /* shift to next bit */ + b <<= 1; + } + } /* if ... else */ + + mp_clear(&g); + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_exptmod.c b/fsbl/lib/libtommath/bn_mp_exptmod.c new file mode 100644 index 000000000..c400b7eb3 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_exptmod.c @@ -0,0 +1,109 @@ +#include "tommath_private.h" +#ifdef BN_MP_EXPTMOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + + +/* this is a shell function that calls either the normal or Montgomery + * exptmod functions. Originally the call to the montgomery code was + * embedded in the normal function but that wasted alot of stack space + * for nothing (since 99% of the time the Montgomery code would be called) + */ +int mp_exptmod(const mp_int *G, const mp_int *X, const mp_int *P, mp_int *Y) +{ + int dr; + + /* modulus P must be positive */ + if (P->sign == MP_NEG) { + return MP_VAL; + } + + /* if exponent X is negative we have to recurse */ + if (X->sign == MP_NEG) { +#ifdef BN_MP_INVMOD_C + mp_int tmpG, tmpX; + int err; + + /* first compute 1/G mod P */ + if ((err = mp_init(&tmpG)) != MP_OKAY) { + return err; + } + if ((err = mp_invmod(G, P, &tmpG)) != MP_OKAY) { + mp_clear(&tmpG); + return err; + } + + /* now get |X| */ + if ((err = mp_init(&tmpX)) != MP_OKAY) { + mp_clear(&tmpG); + return err; + } + if ((err = mp_abs(X, &tmpX)) != MP_OKAY) { + mp_clear_multi(&tmpG, &tmpX, NULL); + return err; + } + + /* and now compute (1/G)**|X| instead of G**X [X < 0] */ + err = mp_exptmod(&tmpG, &tmpX, P, Y); + mp_clear_multi(&tmpG, &tmpX, NULL); + return err; +#else + /* no invmod */ + return MP_VAL; +#endif + } + + /* modified diminished radix reduction */ +#if defined(BN_MP_REDUCE_IS_2K_L_C) && defined(BN_MP_REDUCE_2K_L_C) && defined(BN_S_MP_EXPTMOD_C) + if (mp_reduce_is_2k_l(P) == MP_YES) { + return s_mp_exptmod(G, X, P, Y, 1); + } +#endif + +#ifdef BN_MP_DR_IS_MODULUS_C + /* is it a DR modulus? */ + dr = mp_dr_is_modulus(P); +#else + /* default to no */ + dr = 0; +#endif + +#ifdef BN_MP_REDUCE_IS_2K_C + /* if not, is it a unrestricted DR modulus? */ + if (dr == 0) { + dr = mp_reduce_is_2k(P) << 1; + } +#endif + + /* if the modulus is odd or dr != 0 use the montgomery method */ +#ifdef BN_MP_EXPTMOD_FAST_C + if ((mp_isodd(P) == MP_YES) || (dr != 0)) { + return mp_exptmod_fast(G, X, P, Y, dr); + } else { +#endif +#ifdef BN_S_MP_EXPTMOD_C + /* otherwise use the generic Barrett reduction technique */ + return s_mp_exptmod(G, X, P, Y, 0); +#else + /* no exptmod for evens */ + return MP_VAL; +#endif +#ifdef BN_MP_EXPTMOD_FAST_C + } +#endif +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_exptmod_fast.c b/fsbl/lib/libtommath/bn_mp_exptmod_fast.c new file mode 100644 index 000000000..4de9c5fad --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_exptmod_fast.c @@ -0,0 +1,319 @@ +#include "tommath_private.h" +#ifdef BN_MP_EXPTMOD_FAST_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* computes Y == G**X mod P, HAC pp.616, Algorithm 14.85 + * + * Uses a left-to-right k-ary sliding window to compute the modular exponentiation. + * The value of k changes based on the size of the exponent. + * + * Uses Montgomery or Diminished Radix reduction [whichever appropriate] + */ + +#ifdef MP_LOW_MEM +# define TAB_SIZE 32 +#else +# define TAB_SIZE 256 +#endif + +int mp_exptmod_fast(const mp_int *G, const mp_int *X, const mp_int *P, mp_int *Y, int redmode) +{ + mp_int M[TAB_SIZE], res; + mp_digit buf, mp; + int err, bitbuf, bitcpy, bitcnt, mode, digidx, x, y, winsize; + + /* use a pointer to the reduction algorithm. This allows us to use + * one of many reduction algorithms without modding the guts of + * the code with if statements everywhere. + */ + int (*redux)(mp_int *x, const mp_int *n, mp_digit rho); + + /* find window size */ + x = mp_count_bits(X); + if (x <= 7) { + winsize = 2; + } else if (x <= 36) { + winsize = 3; + } else if (x <= 140) { + winsize = 4; + } else if (x <= 450) { + winsize = 5; + } else if (x <= 1303) { + winsize = 6; + } else if (x <= 3529) { + winsize = 7; + } else { + winsize = 8; + } + +#ifdef MP_LOW_MEM + if (winsize > 5) { + winsize = 5; + } +#endif + + /* init M array */ + /* init first cell */ + if ((err = mp_init_size(&M[1], P->alloc)) != MP_OKAY) { + return err; + } + + /* now init the second half of the array */ + for (x = 1<<(winsize-1); x < (1 << winsize); x++) { + if ((err = mp_init_size(&M[x], P->alloc)) != MP_OKAY) { + for (y = 1<<(winsize-1); y < x; y++) { + mp_clear(&M[y]); + } + mp_clear(&M[1]); + return err; + } + } + + /* determine and setup reduction code */ + if (redmode == 0) { +#ifdef BN_MP_MONTGOMERY_SETUP_C + /* now setup montgomery */ + if ((err = mp_montgomery_setup(P, &mp)) != MP_OKAY) { + goto LBL_M; + } +#else + err = MP_VAL; + goto LBL_M; +#endif + + /* automatically pick the comba one if available (saves quite a few calls/ifs) */ +#ifdef BN_FAST_MP_MONTGOMERY_REDUCE_C + if ((((P->used * 2) + 1) < (int)MP_WARRAY) && + (P->used < (1 << ((CHAR_BIT * sizeof(mp_word)) - (2 * DIGIT_BIT))))) { + redux = fast_mp_montgomery_reduce; + } else +#endif + { +#ifdef BN_MP_MONTGOMERY_REDUCE_C + /* use slower baseline Montgomery method */ + redux = mp_montgomery_reduce; +#else + err = MP_VAL; + goto LBL_M; +#endif + } + } else if (redmode == 1) { +#if defined(BN_MP_DR_SETUP_C) && defined(BN_MP_DR_REDUCE_C) + /* setup DR reduction for moduli of the form B**k - b */ + mp_dr_setup(P, &mp); + redux = mp_dr_reduce; +#else + err = MP_VAL; + goto LBL_M; +#endif + } else { +#if defined(BN_MP_REDUCE_2K_SETUP_C) && defined(BN_MP_REDUCE_2K_C) + /* setup DR reduction for moduli of the form 2**k - b */ + if ((err = mp_reduce_2k_setup(P, &mp)) != MP_OKAY) { + goto LBL_M; + } + redux = mp_reduce_2k; +#else + err = MP_VAL; + goto LBL_M; +#endif + } + + /* setup result */ + if ((err = mp_init_size(&res, P->alloc)) != MP_OKAY) { + goto LBL_M; + } + + /* create M table + * + + * + * The first half of the table is not computed though accept for M[0] and M[1] + */ + + if (redmode == 0) { +#ifdef BN_MP_MONTGOMERY_CALC_NORMALIZATION_C + /* now we need R mod m */ + if ((err = mp_montgomery_calc_normalization(&res, P)) != MP_OKAY) { + goto LBL_RES; + } + + /* now set M[1] to G * R mod m */ + if ((err = mp_mulmod(G, &res, P, &M[1])) != MP_OKAY) { + goto LBL_RES; + } +#else + err = MP_VAL; + goto LBL_RES; +#endif + } else { + mp_set(&res, 1uL); + if ((err = mp_mod(G, P, &M[1])) != MP_OKAY) { + goto LBL_RES; + } + } + + /* compute the value at M[1<<(winsize-1)] by squaring M[1] (winsize-1) times */ + if ((err = mp_copy(&M[1], &M[(size_t)1 << (winsize - 1)])) != MP_OKAY) { + goto LBL_RES; + } + + for (x = 0; x < (winsize - 1); x++) { + if ((err = mp_sqr(&M[(size_t)1 << (winsize - 1)], &M[(size_t)1 << (winsize - 1)])) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux(&M[(size_t)1 << (winsize - 1)], P, mp)) != MP_OKAY) { + goto LBL_RES; + } + } + + /* create upper table */ + for (x = (1 << (winsize - 1)) + 1; x < (1 << winsize); x++) { + if ((err = mp_mul(&M[x - 1], &M[1], &M[x])) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux(&M[x], P, mp)) != MP_OKAY) { + goto LBL_RES; + } + } + + /* set initial mode and bit cnt */ + mode = 0; + bitcnt = 1; + buf = 0; + digidx = X->used - 1; + bitcpy = 0; + bitbuf = 0; + + for (;;) { + /* grab next digit as required */ + if (--bitcnt == 0) { + /* if digidx == -1 we are out of digits so break */ + if (digidx == -1) { + break; + } + /* read next digit and reset bitcnt */ + buf = X->dp[digidx--]; + bitcnt = (int)DIGIT_BIT; + } + + /* grab the next msb from the exponent */ + y = (mp_digit)(buf >> (DIGIT_BIT - 1)) & 1; + buf <<= (mp_digit)1; + + /* if the bit is zero and mode == 0 then we ignore it + * These represent the leading zero bits before the first 1 bit + * in the exponent. Technically this opt is not required but it + * does lower the # of trivial squaring/reductions used + */ + if ((mode == 0) && (y == 0)) { + continue; + } + + /* if the bit is zero and mode == 1 then we square */ + if ((mode == 1) && (y == 0)) { + if ((err = mp_sqr(&res, &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux(&res, P, mp)) != MP_OKAY) { + goto LBL_RES; + } + continue; + } + + /* else we add it to the window */ + bitbuf |= (y << (winsize - ++bitcpy)); + mode = 2; + + if (bitcpy == winsize) { + /* ok window is filled so square as required and multiply */ + /* square first */ + for (x = 0; x < winsize; x++) { + if ((err = mp_sqr(&res, &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux(&res, P, mp)) != MP_OKAY) { + goto LBL_RES; + } + } + + /* then multiply */ + if ((err = mp_mul(&res, &M[bitbuf], &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux(&res, P, mp)) != MP_OKAY) { + goto LBL_RES; + } + + /* empty window and reset */ + bitcpy = 0; + bitbuf = 0; + mode = 1; + } + } + + /* if bits remain then square/multiply */ + if ((mode == 2) && (bitcpy > 0)) { + /* square then multiply if the bit is set */ + for (x = 0; x < bitcpy; x++) { + if ((err = mp_sqr(&res, &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux(&res, P, mp)) != MP_OKAY) { + goto LBL_RES; + } + + /* get next bit of the window */ + bitbuf <<= 1; + if ((bitbuf & (1 << winsize)) != 0) { + /* then multiply */ + if ((err = mp_mul(&res, &M[1], &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux(&res, P, mp)) != MP_OKAY) { + goto LBL_RES; + } + } + } + } + + if (redmode == 0) { + /* fixup result if Montgomery reduction is used + * recall that any value in a Montgomery system is + * actually multiplied by R mod n. So we have + * to reduce one more time to cancel out the factor + * of R. + */ + if ((err = redux(&res, P, mp)) != MP_OKAY) { + goto LBL_RES; + } + } + + /* swap res with Y */ + mp_exch(&res, Y); + err = MP_OKAY; +LBL_RES: + mp_clear(&res); +LBL_M: + mp_clear(&M[1]); + for (x = 1<<(winsize-1); x < (1 << winsize); x++) { + mp_clear(&M[x]); + } + return err; +} +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_exteuclid.c b/fsbl/lib/libtommath/bn_mp_exteuclid.c new file mode 100644 index 000000000..c23a6c15f --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_exteuclid.c @@ -0,0 +1,122 @@ +#include "tommath_private.h" +#ifdef BN_MP_EXTEUCLID_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* Extended euclidean algorithm of (a, b) produces + a*u1 + b*u2 = u3 + */ +int mp_exteuclid(const mp_int *a, const mp_int *b, mp_int *U1, mp_int *U2, mp_int *U3) +{ + mp_int u1, u2, u3, v1, v2, v3, t1, t2, t3, q, tmp; + int err; + + if ((err = mp_init_multi(&u1, &u2, &u3, &v1, &v2, &v3, &t1, &t2, &t3, &q, &tmp, NULL)) != MP_OKAY) { + return err; + } + + /* initialize, (u1,u2,u3) = (1,0,a) */ + mp_set(&u1, 1uL); + if ((err = mp_copy(a, &u3)) != MP_OKAY) { + goto LBL_ERR; + } + + /* initialize, (v1,v2,v3) = (0,1,b) */ + mp_set(&v2, 1uL); + if ((err = mp_copy(b, &v3)) != MP_OKAY) { + goto LBL_ERR; + } + + /* loop while v3 != 0 */ + while (mp_iszero(&v3) == MP_NO) { + /* q = u3/v3 */ + if ((err = mp_div(&u3, &v3, &q, NULL)) != MP_OKAY) { + goto LBL_ERR; + } + + /* (t1,t2,t3) = (u1,u2,u3) - (v1,v2,v3)q */ + if ((err = mp_mul(&v1, &q, &tmp)) != MP_OKAY) { + goto LBL_ERR; + } + if ((err = mp_sub(&u1, &tmp, &t1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((err = mp_mul(&v2, &q, &tmp)) != MP_OKAY) { + goto LBL_ERR; + } + if ((err = mp_sub(&u2, &tmp, &t2)) != MP_OKAY) { + goto LBL_ERR; + } + if ((err = mp_mul(&v3, &q, &tmp)) != MP_OKAY) { + goto LBL_ERR; + } + if ((err = mp_sub(&u3, &tmp, &t3)) != MP_OKAY) { + goto LBL_ERR; + } + + /* (u1,u2,u3) = (v1,v2,v3) */ + if ((err = mp_copy(&v1, &u1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((err = mp_copy(&v2, &u2)) != MP_OKAY) { + goto LBL_ERR; + } + if ((err = mp_copy(&v3, &u3)) != MP_OKAY) { + goto LBL_ERR; + } + + /* (v1,v2,v3) = (t1,t2,t3) */ + if ((err = mp_copy(&t1, &v1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((err = mp_copy(&t2, &v2)) != MP_OKAY) { + goto LBL_ERR; + } + if ((err = mp_copy(&t3, &v3)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* make sure U3 >= 0 */ + if (u3.sign == MP_NEG) { + if ((err = mp_neg(&u1, &u1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((err = mp_neg(&u2, &u2)) != MP_OKAY) { + goto LBL_ERR; + } + if ((err = mp_neg(&u3, &u3)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* copy result out */ + if (U1 != NULL) { + mp_exch(U1, &u1); + } + if (U2 != NULL) { + mp_exch(U2, &u2); + } + if (U3 != NULL) { + mp_exch(U3, &u3); + } + + err = MP_OKAY; +LBL_ERR: + mp_clear_multi(&u1, &u2, &u3, &v1, &v2, &v3, &t1, &t2, &t3, &q, &tmp, NULL); + return err; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_fread.c b/fsbl/lib/libtommath/bn_mp_fread.c new file mode 100644 index 000000000..9c935cb85 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_fread.c @@ -0,0 +1,68 @@ +#include "tommath_private.h" +#ifdef BN_MP_FREAD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +#ifndef LTM_NO_FILE +/* read a bigint from a file stream in ASCII */ +int mp_fread(mp_int *a, int radix, FILE *stream) +{ + int err, ch, neg, y; + unsigned pos; + + /* clear a */ + mp_zero(a); + + /* if first digit is - then set negative */ + ch = fgetc(stream); + if (ch == (int)'-') { + neg = MP_NEG; + ch = fgetc(stream); + } else { + neg = MP_ZPOS; + } + + for (;;) { + pos = (unsigned)(ch - (int)'('); + if (mp_s_rmap_reverse_sz < pos) { + break; + } + + y = (int)mp_s_rmap_reverse[pos]; + + if ((y == 0xff) || (y >= radix)) { + break; + } + + /* shift up and add */ + if ((err = mp_mul_d(a, (mp_digit)radix, a)) != MP_OKAY) { + return err; + } + if ((err = mp_add_d(a, (mp_digit)y, a)) != MP_OKAY) { + return err; + } + + ch = fgetc(stream); + } + if (mp_cmp_d(a, 0uL) != MP_EQ) { + a->sign = neg; + } + + return MP_OKAY; +} +#endif + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_fwrite.c b/fsbl/lib/libtommath/bn_mp_fwrite.c new file mode 100644 index 000000000..9f0c3dfa6 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_fwrite.c @@ -0,0 +1,51 @@ +#include "tommath_private.h" +#ifdef BN_MP_FWRITE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +#ifndef LTM_NO_FILE +int mp_fwrite(const mp_int *a, int radix, FILE *stream) +{ + char *buf; + int err, len, x; + + if ((err = mp_radix_size(a, radix, &len)) != MP_OKAY) { + return err; + } + + buf = OPT_CAST(char) XMALLOC((size_t)len); + if (buf == NULL) { + return MP_MEM; + } + + if ((err = mp_toradix(a, buf, radix)) != MP_OKAY) { + XFREE(buf); + return err; + } + + for (x = 0; x < len; x++) { + if (fputc((int)buf[x], stream) == EOF) { + XFREE(buf); + return MP_VAL; + } + } + + XFREE(buf); + return MP_OKAY; +} +#endif + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_gcd.c b/fsbl/lib/libtommath/bn_mp_gcd.c new file mode 100644 index 000000000..05030c2d9 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_gcd.c @@ -0,0 +1,104 @@ +#include "tommath_private.h" +#ifdef BN_MP_GCD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* Greatest Common Divisor using the binary method */ +int mp_gcd(const mp_int *a, const mp_int *b, mp_int *c) +{ + mp_int u, v; + int k, u_lsb, v_lsb, res; + + /* either zero than gcd is the largest */ + if (mp_iszero(a) == MP_YES) { + return mp_abs(b, c); + } + if (mp_iszero(b) == MP_YES) { + return mp_abs(a, c); + } + + /* get copies of a and b we can modify */ + if ((res = mp_init_copy(&u, a)) != MP_OKAY) { + return res; + } + + if ((res = mp_init_copy(&v, b)) != MP_OKAY) { + goto LBL_U; + } + + /* must be positive for the remainder of the algorithm */ + u.sign = v.sign = MP_ZPOS; + + /* B1. Find the common power of two for u and v */ + u_lsb = mp_cnt_lsb(&u); + v_lsb = mp_cnt_lsb(&v); + k = MIN(u_lsb, v_lsb); + + if (k > 0) { + /* divide the power of two out */ + if ((res = mp_div_2d(&u, k, &u, NULL)) != MP_OKAY) { + goto LBL_V; + } + + if ((res = mp_div_2d(&v, k, &v, NULL)) != MP_OKAY) { + goto LBL_V; + } + } + + /* divide any remaining factors of two out */ + if (u_lsb != k) { + if ((res = mp_div_2d(&u, u_lsb - k, &u, NULL)) != MP_OKAY) { + goto LBL_V; + } + } + + if (v_lsb != k) { + if ((res = mp_div_2d(&v, v_lsb - k, &v, NULL)) != MP_OKAY) { + goto LBL_V; + } + } + + while (mp_iszero(&v) == MP_NO) { + /* make sure v is the largest */ + if (mp_cmp_mag(&u, &v) == MP_GT) { + /* swap u and v to make sure v is >= u */ + mp_exch(&u, &v); + } + + /* subtract smallest from largest */ + if ((res = s_mp_sub(&v, &u, &v)) != MP_OKAY) { + goto LBL_V; + } + + /* Divide out all factors of two */ + if ((res = mp_div_2d(&v, mp_cnt_lsb(&v), &v, NULL)) != MP_OKAY) { + goto LBL_V; + } + } + + /* multiply by 2**k which we divided out at the beginning */ + if ((res = mp_mul_2d(&u, k, c)) != MP_OKAY) { + goto LBL_V; + } + c->sign = MP_ZPOS; + res = MP_OKAY; +LBL_V: + mp_clear(&u); +LBL_U: + mp_clear(&v); + return res; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_get_bit.c b/fsbl/lib/libtommath/bn_mp_get_bit.c new file mode 100644 index 000000000..ab732c434 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_get_bit.c @@ -0,0 +1,54 @@ +#include "tommath_private.h" +#ifdef BN_MP_GET_BIT_C + +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* Checks the bit at position b and returns MP_YES + if the bit is 1, MP_NO if it is 0 and MP_VAL + in case of error */ +int mp_get_bit(const mp_int *a, int b) +{ + int limb; + mp_digit bit, isset; + + if (b < 0) { + return MP_VAL; + } + + limb = b / DIGIT_BIT; + + /* + * Zero is a special value with the member "used" set to zero. + * Needs to be tested before the check for the upper boundary + * otherwise (limb >= a->used) would be true for a = 0 + */ + + if (mp_iszero(a) != MP_NO) { + return MP_NO; + } + + if (limb >= a->used) { + return MP_VAL; + } + + bit = (mp_digit)(1) << (b % DIGIT_BIT); + + isset = a->dp[limb] & bit; + return (isset != 0u) ? MP_YES : MP_NO; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_get_double.c b/fsbl/lib/libtommath/bn_mp_get_double.c new file mode 100644 index 000000000..3ed5a717c --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_get_double.c @@ -0,0 +1,31 @@ +#include "tommath_private.h" +#ifdef BN_MP_GET_DOUBLE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +double mp_get_double(const mp_int *a) +{ + int i; + double d = 0.0, fac = 1.0; + for (i = 0; i < DIGIT_BIT; ++i) { + fac *= 2.0; + } + for (i = USED(a); i --> 0;) { + d = (d * fac) + (double)DIGIT(a, i); + } + return (mp_isneg(a) != MP_NO) ? -d : d; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_get_int.c b/fsbl/lib/libtommath/bn_mp_get_int.c new file mode 100644 index 000000000..13eddbf6b --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_get_int.c @@ -0,0 +1,42 @@ +#include "tommath_private.h" +#ifdef BN_MP_GET_INT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* get the lower 32-bits of an mp_int */ +unsigned long mp_get_int(const mp_int *a) +{ + int i; + mp_min_u32 res; + + if (a->used == 0) { + return 0; + } + + /* get number of digits of the lsb we have to read */ + i = MIN(a->used, ((((int)sizeof(unsigned long) * CHAR_BIT) + DIGIT_BIT - 1) / DIGIT_BIT)) - 1; + + /* get most significant digit of result */ + res = DIGIT(a, i); + + while (--i >= 0) { + res = (res << DIGIT_BIT) | DIGIT(a, i); + } + + /* force result to 32-bits always so it is consistent on non 32-bit platforms */ + return res & 0xFFFFFFFFUL; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_get_long.c b/fsbl/lib/libtommath/bn_mp_get_long.c new file mode 100644 index 000000000..a4d05d617 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_get_long.c @@ -0,0 +1,42 @@ +#include "tommath_private.h" +#ifdef BN_MP_GET_LONG_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* get the lower unsigned long of an mp_int, platform dependent */ +unsigned long mp_get_long(const mp_int *a) +{ + int i; + unsigned long res; + + if (a->used == 0) { + return 0; + } + + /* get number of digits of the lsb we have to read */ + i = MIN(a->used, ((((int)sizeof(unsigned long) * CHAR_BIT) + DIGIT_BIT - 1) / DIGIT_BIT)) - 1; + + /* get most significant digit of result */ + res = DIGIT(a, i); + +#if (ULONG_MAX != 0xffffffffuL) || (DIGIT_BIT < 32) + while (--i >= 0) { + res = (res << DIGIT_BIT) | DIGIT(a, i); + } +#endif + return res; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_get_long_long.c b/fsbl/lib/libtommath/bn_mp_get_long_long.c new file mode 100644 index 000000000..4201b4d9a --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_get_long_long.c @@ -0,0 +1,42 @@ +#include "tommath_private.h" +#ifdef BN_MP_GET_LONG_LONG_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* get the lower unsigned long long of an mp_int, platform dependent */ +unsigned long long mp_get_long_long(const mp_int *a) +{ + int i; + unsigned long long res; + + if (a->used == 0) { + return 0; + } + + /* get number of digits of the lsb we have to read */ + i = MIN(a->used, ((((int)sizeof(unsigned long long) * CHAR_BIT) + DIGIT_BIT - 1) / DIGIT_BIT)) - 1; + + /* get most significant digit of result */ + res = DIGIT(a, i); + +#if DIGIT_BIT < 64 + while (--i >= 0) { + res = (res << DIGIT_BIT) | DIGIT(a, i); + } +#endif + return res; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_grow.c b/fsbl/lib/libtommath/bn_mp_grow.c new file mode 100644 index 000000000..1d92b2975 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_grow.c @@ -0,0 +1,54 @@ +#include "tommath_private.h" +#ifdef BN_MP_GROW_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* grow as required */ +int mp_grow(mp_int *a, int size) +{ + int i; + mp_digit *tmp; + + /* if the alloc size is smaller alloc more ram */ + if (a->alloc < size) { + /* ensure there are always at least MP_PREC digits extra on top */ + size += (MP_PREC * 2) - (size % MP_PREC); + + /* reallocate the array a->dp + * + * We store the return in a temporary variable + * in case the operation failed we don't want + * to overwrite the dp member of a. + */ + tmp = OPT_CAST(mp_digit) XREALLOC(a->dp, sizeof(mp_digit) * (size_t)size); + if (tmp == NULL) { + /* reallocation failed but "a" is still valid [can be freed] */ + return MP_MEM; + } + + /* reallocation succeeded so set a->dp */ + a->dp = tmp; + + /* zero excess digits */ + i = a->alloc; + a->alloc = size; + for (; i < a->alloc; i++) { + a->dp[i] = 0; + } + } + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_import.c b/fsbl/lib/libtommath/bn_mp_import.c new file mode 100644 index 000000000..066c5b3bf --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_import.c @@ -0,0 +1,68 @@ +#include "tommath_private.h" +#ifdef BN_MP_IMPORT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* based on gmp's mpz_import. + * see http://gmplib.org/manual/Integer-Import-and-Export.html + */ +int mp_import(mp_int *rop, size_t count, int order, size_t size, + int endian, size_t nails, const void *op) +{ + int result; + size_t odd_nails, nail_bytes, i, j; + unsigned char odd_nail_mask; + + mp_zero(rop); + + if (endian == 0) { + union { + unsigned int i; + char c[4]; + } lint; + lint.i = 0x01020304; + + endian = (lint.c[0] == '\x04') ? -1 : 1; + } + + odd_nails = (nails % 8u); + odd_nail_mask = 0xff; + for (i = 0; i < odd_nails; ++i) { + odd_nail_mask ^= (unsigned char)(1u << (7u - i)); + } + nail_bytes = nails / 8u; + + for (i = 0; i < count; ++i) { + for (j = 0; j < (size - nail_bytes); ++j) { + unsigned char byte = *((unsigned char *)op + + (((order == 1) ? i : ((count - 1u) - i)) * size) + + ((endian == 1) ? (j + nail_bytes) : (((size - 1u) - j) - nail_bytes))); + + if ((result = mp_mul_2d(rop, (j == 0u) ? (int)(8u - odd_nails) : 8, rop)) != MP_OKAY) { + return result; + } + + rop->dp[0] |= (j == 0u) ? (mp_digit)(byte & odd_nail_mask) : (mp_digit)byte; + rop->used += 1; + } + } + + mp_clamp(rop); + + return MP_OKAY; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_init.c b/fsbl/lib/libtommath/bn_mp_init.c new file mode 100644 index 000000000..75200893a --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_init.c @@ -0,0 +1,43 @@ +#include "tommath_private.h" +#ifdef BN_MP_INIT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* init a new mp_int */ +int mp_init(mp_int *a) +{ + int i; + + /* allocate memory required and clear it */ + a->dp = OPT_CAST(mp_digit) XMALLOC(sizeof(mp_digit) * (size_t)MP_PREC); + if (a->dp == NULL) { + return MP_MEM; + } + + /* set the digits to zero */ + for (i = 0; i < MP_PREC; i++) { + a->dp[i] = 0; + } + + /* set the used to zero, allocated digits to the default precision + * and sign to positive */ + a->used = 0; + a->alloc = MP_PREC; + a->sign = MP_ZPOS; + + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_init_copy.c b/fsbl/lib/libtommath/bn_mp_init_copy.c new file mode 100644 index 000000000..4739a9818 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_init_copy.c @@ -0,0 +1,34 @@ +#include "tommath_private.h" +#ifdef BN_MP_INIT_COPY_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* creates "a" then copies b into it */ +int mp_init_copy(mp_int *a, const mp_int *b) +{ + int res; + + if ((res = mp_init_size(a, b->used)) != MP_OKAY) { + return res; + } + + if ((res = mp_copy(b, a)) != MP_OKAY) { + mp_clear(a); + } + + return res; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_init_multi.c b/fsbl/lib/libtommath/bn_mp_init_multi.c new file mode 100644 index 000000000..7f8bd0408 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_init_multi.c @@ -0,0 +1,54 @@ +#include "tommath_private.h" +#ifdef BN_MP_INIT_MULTI_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +#include + +int mp_init_multi(mp_int *mp, ...) +{ + mp_err res = MP_OKAY; /* Assume ok until proven otherwise */ + int n = 0; /* Number of ok inits */ + mp_int *cur_arg = mp; + va_list args; + + va_start(args, mp); /* init args to next argument from caller */ + while (cur_arg != NULL) { + if (mp_init(cur_arg) != MP_OKAY) { + /* Oops - error! Back-track and mp_clear what we already + succeeded in init-ing, then return error. + */ + va_list clean_args; + + /* now start cleaning up */ + cur_arg = mp; + va_start(clean_args, mp); + while (n-- != 0) { + mp_clear(cur_arg); + cur_arg = va_arg(clean_args, mp_int *); + } + va_end(clean_args); + res = MP_MEM; + break; + } + n++; + cur_arg = va_arg(args, mp_int *); + } + va_end(args); + return res; /* Assumed ok, if error flagged above. */ +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_init_set.c b/fsbl/lib/libtommath/bn_mp_init_set.c new file mode 100644 index 000000000..36606af85 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_init_set.c @@ -0,0 +1,29 @@ +#include "tommath_private.h" +#ifdef BN_MP_INIT_SET_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* initialize and set a digit */ +int mp_init_set(mp_int *a, mp_digit b) +{ + int err; + if ((err = mp_init(a)) != MP_OKAY) { + return err; + } + mp_set(a, b); + return err; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_init_set_int.c b/fsbl/lib/libtommath/bn_mp_init_set_int.c new file mode 100644 index 000000000..7d818119b --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_init_set_int.c @@ -0,0 +1,28 @@ +#include "tommath_private.h" +#ifdef BN_MP_INIT_SET_INT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* initialize and set a digit */ +int mp_init_set_int(mp_int *a, unsigned long b) +{ + int err; + if ((err = mp_init(a)) != MP_OKAY) { + return err; + } + return mp_set_int(a, b); +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_init_size.c b/fsbl/lib/libtommath/bn_mp_init_size.c new file mode 100644 index 000000000..9b933fbda --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_init_size.c @@ -0,0 +1,45 @@ +#include "tommath_private.h" +#ifdef BN_MP_INIT_SIZE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* init an mp_init for a given size */ +int mp_init_size(mp_int *a, int size) +{ + int x; + + /* pad size so there are always extra digits */ + size += (MP_PREC * 2) - (size % MP_PREC); + + /* alloc mem */ + a->dp = OPT_CAST(mp_digit) XMALLOC(sizeof(mp_digit) * (size_t)size); + if (a->dp == NULL) { + return MP_MEM; + } + + /* set the members */ + a->used = 0; + a->alloc = size; + a->sign = MP_ZPOS; + + /* zero the digits */ + for (x = 0; x < size; x++) { + a->dp[x] = 0; + } + + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_invmod.c b/fsbl/lib/libtommath/bn_mp_invmod.c new file mode 100644 index 000000000..f1a482da0 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_invmod.c @@ -0,0 +1,40 @@ +#include "tommath_private.h" +#ifdef BN_MP_INVMOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* hac 14.61, pp608 */ +int mp_invmod(const mp_int *a, const mp_int *b, mp_int *c) +{ + /* b cannot be negative and has to be >1 */ + if ((b->sign == MP_NEG) || (mp_cmp_d(b, 1uL) != MP_GT)) { + return MP_VAL; + } + +#ifdef BN_FAST_MP_INVMOD_C + /* if the modulus is odd we can use a faster routine instead */ + if ((mp_isodd(b) == MP_YES)) { + return fast_mp_invmod(a, b, c); + } +#endif + +#ifdef BN_MP_INVMOD_SLOW_C + return mp_invmod_slow(a, b, c); +#else + return MP_VAL; +#endif +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_invmod_slow.c b/fsbl/lib/libtommath/bn_mp_invmod_slow.c new file mode 100644 index 000000000..e60cf04a8 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_invmod_slow.c @@ -0,0 +1,173 @@ +#include "tommath_private.h" +#ifdef BN_MP_INVMOD_SLOW_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* hac 14.61, pp608 */ +int mp_invmod_slow(const mp_int *a, const mp_int *b, mp_int *c) +{ + mp_int x, y, u, v, A, B, C, D; + int res; + + /* b cannot be negative */ + if ((b->sign == MP_NEG) || (mp_iszero(b) == MP_YES)) { + return MP_VAL; + } + + /* init temps */ + if ((res = mp_init_multi(&x, &y, &u, &v, + &A, &B, &C, &D, NULL)) != MP_OKAY) { + return res; + } + + /* x = a, y = b */ + if ((res = mp_mod(a, b, &x)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_copy(b, &y)) != MP_OKAY) { + goto LBL_ERR; + } + + /* 2. [modified] if x,y are both even then return an error! */ + if ((mp_iseven(&x) == MP_YES) && (mp_iseven(&y) == MP_YES)) { + res = MP_VAL; + goto LBL_ERR; + } + + /* 3. u=x, v=y, A=1, B=0, C=0,D=1 */ + if ((res = mp_copy(&x, &u)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_copy(&y, &v)) != MP_OKAY) { + goto LBL_ERR; + } + mp_set(&A, 1uL); + mp_set(&D, 1uL); + +top: + /* 4. while u is even do */ + while (mp_iseven(&u) == MP_YES) { + /* 4.1 u = u/2 */ + if ((res = mp_div_2(&u, &u)) != MP_OKAY) { + goto LBL_ERR; + } + /* 4.2 if A or B is odd then */ + if ((mp_isodd(&A) == MP_YES) || (mp_isodd(&B) == MP_YES)) { + /* A = (A+y)/2, B = (B-x)/2 */ + if ((res = mp_add(&A, &y, &A)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_sub(&B, &x, &B)) != MP_OKAY) { + goto LBL_ERR; + } + } + /* A = A/2, B = B/2 */ + if ((res = mp_div_2(&A, &A)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_div_2(&B, &B)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* 5. while v is even do */ + while (mp_iseven(&v) == MP_YES) { + /* 5.1 v = v/2 */ + if ((res = mp_div_2(&v, &v)) != MP_OKAY) { + goto LBL_ERR; + } + /* 5.2 if C or D is odd then */ + if ((mp_isodd(&C) == MP_YES) || (mp_isodd(&D) == MP_YES)) { + /* C = (C+y)/2, D = (D-x)/2 */ + if ((res = mp_add(&C, &y, &C)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_sub(&D, &x, &D)) != MP_OKAY) { + goto LBL_ERR; + } + } + /* C = C/2, D = D/2 */ + if ((res = mp_div_2(&C, &C)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_div_2(&D, &D)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* 6. if u >= v then */ + if (mp_cmp(&u, &v) != MP_LT) { + /* u = u - v, A = A - C, B = B - D */ + if ((res = mp_sub(&u, &v, &u)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_sub(&A, &C, &A)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_sub(&B, &D, &B)) != MP_OKAY) { + goto LBL_ERR; + } + } else { + /* v - v - u, C = C - A, D = D - B */ + if ((res = mp_sub(&v, &u, &v)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_sub(&C, &A, &C)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_sub(&D, &B, &D)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* if not zero goto step 4 */ + if (mp_iszero(&u) == MP_NO) + goto top; + + /* now a = C, b = D, gcd == g*v */ + + /* if v != 1 then there is no inverse */ + if (mp_cmp_d(&v, 1uL) != MP_EQ) { + res = MP_VAL; + goto LBL_ERR; + } + + /* if its too low */ + while (mp_cmp_d(&C, 0uL) == MP_LT) { + if ((res = mp_add(&C, b, &C)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* too big */ + while (mp_cmp_mag(&C, b) != MP_LT) { + if ((res = mp_sub(&C, b, &C)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* C is now the inverse */ + mp_exch(&C, c); + res = MP_OKAY; +LBL_ERR: + mp_clear_multi(&x, &y, &u, &v, &A, &B, &C, &D, NULL); + return res; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_is_square.c b/fsbl/lib/libtommath/bn_mp_is_square.c new file mode 100644 index 000000000..5363a47d3 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_is_square.c @@ -0,0 +1,107 @@ +#include "tommath_private.h" +#ifdef BN_MP_IS_SQUARE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* Check if remainders are possible squares - fast exclude non-squares */ +static const char rem_128[128] = { + 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1 +}; + +static const char rem_105[105] = { + 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, + 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, + 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1 +}; + +/* Store non-zero to ret if arg is square, and zero if not */ +int mp_is_square(const mp_int *arg, int *ret) +{ + int res; + mp_digit c; + mp_int t; + unsigned long r; + + /* Default to Non-square :) */ + *ret = MP_NO; + + if (arg->sign == MP_NEG) { + return MP_VAL; + } + + /* digits used? (TSD) */ + if (arg->used == 0) { + return MP_OKAY; + } + + /* First check mod 128 (suppose that DIGIT_BIT is at least 7) */ + if (rem_128[127u & DIGIT(arg, 0)] == (char)1) { + return MP_OKAY; + } + + /* Next check mod 105 (3*5*7) */ + if ((res = mp_mod_d(arg, 105uL, &c)) != MP_OKAY) { + return res; + } + if (rem_105[c] == (char)1) { + return MP_OKAY; + } + + + if ((res = mp_init_set_int(&t, 11L*13L*17L*19L*23L*29L*31L)) != MP_OKAY) { + return res; + } + if ((res = mp_mod(arg, &t, &t)) != MP_OKAY) { + goto LBL_ERR; + } + r = mp_get_int(&t); + /* Check for other prime modules, note it's not an ERROR but we must + * free "t" so the easiest way is to goto LBL_ERR. We know that res + * is already equal to MP_OKAY from the mp_mod call + */ + if (((1uL<<(r%11uL)) & 0x5C4uL) != 0uL) goto LBL_ERR; + if (((1uL<<(r%13uL)) & 0x9E4uL) != 0uL) goto LBL_ERR; + if (((1uL<<(r%17uL)) & 0x5CE8uL) != 0uL) goto LBL_ERR; + if (((1uL<<(r%19uL)) & 0x4F50CuL) != 0uL) goto LBL_ERR; + if (((1uL<<(r%23uL)) & 0x7ACCA0uL) != 0uL) goto LBL_ERR; + if (((1uL<<(r%29uL)) & 0xC2EDD0CuL) != 0uL) goto LBL_ERR; + if (((1uL<<(r%31uL)) & 0x6DE2B848uL) != 0uL) goto LBL_ERR; + + /* Final check - is sqr(sqrt(arg)) == arg ? */ + if ((res = mp_sqrt(arg, &t)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_sqr(&t, &t)) != MP_OKAY) { + goto LBL_ERR; + } + + *ret = (mp_cmp_mag(&t, arg) == MP_EQ) ? MP_YES : MP_NO; +LBL_ERR: + mp_clear(&t); + return res; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_jacobi.c b/fsbl/lib/libtommath/bn_mp_jacobi.c new file mode 100644 index 000000000..1eb3dd4b9 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_jacobi.c @@ -0,0 +1,36 @@ +#include "tommath_private.h" +#ifdef BN_MP_JACOBI_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* computes the jacobi c = (a | n) (or Legendre if n is prime) + * Kept for legacy reasons, please use mp_kronecker() instead + */ +int mp_jacobi(const mp_int *a, const mp_int *n, int *c) +{ + /* if a < 0 return MP_VAL */ + if (mp_isneg(a) == MP_YES) { + return MP_VAL; + } + + /* if n <= 0 return MP_VAL */ + if (mp_cmp_d(n, 0uL) != MP_GT) { + return MP_VAL; + } + + return mp_kronecker(a, n, c); +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_karatsuba_mul.c b/fsbl/lib/libtommath/bn_mp_karatsuba_mul.c new file mode 100644 index 000000000..cb75bcaf0 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_karatsuba_mul.c @@ -0,0 +1,171 @@ +#include "tommath_private.h" +#ifdef BN_MP_KARATSUBA_MUL_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* c = |a| * |b| using Karatsuba Multiplication using + * three half size multiplications + * + * Let B represent the radix [e.g. 2**DIGIT_BIT] and + * let n represent half of the number of digits in + * the min(a,b) + * + * a = a1 * B**n + a0 + * b = b1 * B**n + b0 + * + * Then, a * b => + a1b1 * B**2n + ((a1 + a0)(b1 + b0) - (a0b0 + a1b1)) * B + a0b0 + * + * Note that a1b1 and a0b0 are used twice and only need to be + * computed once. So in total three half size (half # of + * digit) multiplications are performed, a0b0, a1b1 and + * (a1+b1)(a0+b0) + * + * Note that a multiplication of half the digits requires + * 1/4th the number of single precision multiplications so in + * total after one call 25% of the single precision multiplications + * are saved. Note also that the call to mp_mul can end up back + * in this function if the a0, a1, b0, or b1 are above the threshold. + * This is known as divide-and-conquer and leads to the famous + * O(N**lg(3)) or O(N**1.584) work which is asymptopically lower than + * the standard O(N**2) that the baseline/comba methods use. + * Generally though the overhead of this method doesn't pay off + * until a certain size (N ~ 80) is reached. + */ +int mp_karatsuba_mul(const mp_int *a, const mp_int *b, mp_int *c) +{ + mp_int x0, x1, y0, y1, t1, x0y0, x1y1; + int B, err; + + /* default the return code to an error */ + err = MP_MEM; + + /* min # of digits */ + B = MIN(a->used, b->used); + + /* now divide in two */ + B = B >> 1; + + /* init copy all the temps */ + if (mp_init_size(&x0, B) != MP_OKAY) + goto LBL_ERR; + if (mp_init_size(&x1, a->used - B) != MP_OKAY) + goto X0; + if (mp_init_size(&y0, B) != MP_OKAY) + goto X1; + if (mp_init_size(&y1, b->used - B) != MP_OKAY) + goto Y0; + + /* init temps */ + if (mp_init_size(&t1, B * 2) != MP_OKAY) + goto Y1; + if (mp_init_size(&x0y0, B * 2) != MP_OKAY) + goto T1; + if (mp_init_size(&x1y1, B * 2) != MP_OKAY) + goto X0Y0; + + /* now shift the digits */ + x0.used = y0.used = B; + x1.used = a->used - B; + y1.used = b->used - B; + + { + int x; + mp_digit *tmpa, *tmpb, *tmpx, *tmpy; + + /* we copy the digits directly instead of using higher level functions + * since we also need to shift the digits + */ + tmpa = a->dp; + tmpb = b->dp; + + tmpx = x0.dp; + tmpy = y0.dp; + for (x = 0; x < B; x++) { + *tmpx++ = *tmpa++; + *tmpy++ = *tmpb++; + } + + tmpx = x1.dp; + for (x = B; x < a->used; x++) { + *tmpx++ = *tmpa++; + } + + tmpy = y1.dp; + for (x = B; x < b->used; x++) { + *tmpy++ = *tmpb++; + } + } + + /* only need to clamp the lower words since by definition the + * upper words x1/y1 must have a known number of digits + */ + mp_clamp(&x0); + mp_clamp(&y0); + + /* now calc the products x0y0 and x1y1 */ + /* after this x0 is no longer required, free temp [x0==t2]! */ + if (mp_mul(&x0, &y0, &x0y0) != MP_OKAY) + goto X1Y1; /* x0y0 = x0*y0 */ + if (mp_mul(&x1, &y1, &x1y1) != MP_OKAY) + goto X1Y1; /* x1y1 = x1*y1 */ + + /* now calc x1+x0 and y1+y0 */ + if (s_mp_add(&x1, &x0, &t1) != MP_OKAY) + goto X1Y1; /* t1 = x1 - x0 */ + if (s_mp_add(&y1, &y0, &x0) != MP_OKAY) + goto X1Y1; /* t2 = y1 - y0 */ + if (mp_mul(&t1, &x0, &t1) != MP_OKAY) + goto X1Y1; /* t1 = (x1 + x0) * (y1 + y0) */ + + /* add x0y0 */ + if (mp_add(&x0y0, &x1y1, &x0) != MP_OKAY) + goto X1Y1; /* t2 = x0y0 + x1y1 */ + if (s_mp_sub(&t1, &x0, &t1) != MP_OKAY) + goto X1Y1; /* t1 = (x1+x0)*(y1+y0) - (x1y1 + x0y0) */ + + /* shift by B */ + if (mp_lshd(&t1, B) != MP_OKAY) + goto X1Y1; /* t1 = (x0y0 + x1y1 - (x1-x0)*(y1-y0))<used; + + /* now divide in two */ + B = B >> 1; + + /* init copy all the temps */ + if (mp_init_size(&x0, B) != MP_OKAY) + goto LBL_ERR; + if (mp_init_size(&x1, a->used - B) != MP_OKAY) + goto X0; + + /* init temps */ + if (mp_init_size(&t1, a->used * 2) != MP_OKAY) + goto X1; + if (mp_init_size(&t2, a->used * 2) != MP_OKAY) + goto T1; + if (mp_init_size(&x0x0, B * 2) != MP_OKAY) + goto T2; + if (mp_init_size(&x1x1, (a->used - B) * 2) != MP_OKAY) + goto X0X0; + + { + int x; + mp_digit *dst, *src; + + src = a->dp; + + /* now shift the digits */ + dst = x0.dp; + for (x = 0; x < B; x++) { + *dst++ = *src++; + } + + dst = x1.dp; + for (x = B; x < a->used; x++) { + *dst++ = *src++; + } + } + + x0.used = B; + x1.used = a->used - B; + + mp_clamp(&x0); + + /* now calc the products x0*x0 and x1*x1 */ + if (mp_sqr(&x0, &x0x0) != MP_OKAY) + goto X1X1; /* x0x0 = x0*x0 */ + if (mp_sqr(&x1, &x1x1) != MP_OKAY) + goto X1X1; /* x1x1 = x1*x1 */ + + /* now calc (x1+x0)**2 */ + if (s_mp_add(&x1, &x0, &t1) != MP_OKAY) + goto X1X1; /* t1 = x1 - x0 */ + if (mp_sqr(&t1, &t1) != MP_OKAY) + goto X1X1; /* t1 = (x1 - x0) * (x1 - x0) */ + + /* add x0y0 */ + if (s_mp_add(&x0x0, &x1x1, &t2) != MP_OKAY) + goto X1X1; /* t2 = x0x0 + x1x1 */ + if (s_mp_sub(&t1, &t2, &t1) != MP_OKAY) + goto X1X1; /* t1 = (x1+x0)**2 - (x0x0 + x1x1) */ + + /* shift by B */ + if (mp_lshd(&t1, B) != MP_OKAY) + goto X1X1; /* t1 = (x0x0 + x1x1 - (x1-x0)*(x1-x0))<used == 1) && (a->dp[0] == 1u)) { + *c = 1; + return e; + } else { + *c = 0; + return e; + } + } + + if ((mp_iseven(a) != MP_NO) && (mp_iseven(p) != MP_NO)) { + *c = 0; + return e; + } + + if ((e = mp_init_copy(&a1, a)) != MP_OKAY) { + return e; + } + if ((e = mp_init_copy(&p1, p)) != MP_OKAY) { + goto LBL_KRON_0; + } + + v = mp_cnt_lsb(&p1); + if ((e = mp_div_2d(&p1, v, &p1, NULL)) != MP_OKAY) { + goto LBL_KRON_1; + } + + if ((v & 0x1) == 0) { + k = 1; + } else { + k = table[a->dp[0] & 7u]; + } + + if (p1.sign == MP_NEG) { + p1.sign = MP_ZPOS; + if (a1.sign == MP_NEG) { + k = -k; + } + } + + if ((e = mp_init(&r)) != MP_OKAY) { + goto LBL_KRON_1; + } + + for (;;) { + if (mp_iszero(&a1) != MP_NO) { + if (mp_cmp_d(&p1, 1uL) == MP_EQ) { + *c = k; + goto LBL_KRON; + } else { + *c = 0; + goto LBL_KRON; + } + } + + v = mp_cnt_lsb(&a1); + if ((e = mp_div_2d(&a1, v, &a1, NULL)) != MP_OKAY) { + goto LBL_KRON; + } + + if ((v & 0x1) == 1) { + k = k * table[p1.dp[0] & 7u]; + } + + if (a1.sign == MP_NEG) { + /* + * Compute k = (-1)^((a1)*(p1-1)/4) * k + * a1.dp[0] + 1 cannot overflow because the MSB + * of the type mp_digit is not set by definition + */ + if (((a1.dp[0] + 1u) & p1.dp[0] & 2u) != 0u) { + k = -k; + } + } else { + /* compute k = (-1)^((a1-1)*(p1-1)/4) * k */ + if ((a1.dp[0] & p1.dp[0] & 2u) != 0u) { + k = -k; + } + } + + if ((e = mp_copy(&a1, &r)) != MP_OKAY) { + goto LBL_KRON; + } + r.sign = MP_ZPOS; + if ((e = mp_mod(&p1, &r, &a1)) != MP_OKAY) { + goto LBL_KRON; + } + if ((e = mp_copy(&r, &p1)) != MP_OKAY) { + goto LBL_KRON; + } + } + +LBL_KRON: + mp_clear(&r); +LBL_KRON_1: + mp_clear(&p1); +LBL_KRON_0: + mp_clear(&a1); + + return e; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_lcm.c b/fsbl/lib/libtommath/bn_mp_lcm.c new file mode 100644 index 000000000..cb9fa3d99 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_lcm.c @@ -0,0 +1,57 @@ +#include "tommath_private.h" +#ifdef BN_MP_LCM_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* computes least common multiple as |a*b|/(a, b) */ +int mp_lcm(const mp_int *a, const mp_int *b, mp_int *c) +{ + int res; + mp_int t1, t2; + + + if ((res = mp_init_multi(&t1, &t2, NULL)) != MP_OKAY) { + return res; + } + + /* t1 = get the GCD of the two inputs */ + if ((res = mp_gcd(a, b, &t1)) != MP_OKAY) { + goto LBL_T; + } + + /* divide the smallest by the GCD */ + if (mp_cmp_mag(a, b) == MP_LT) { + /* store quotient in t2 such that t2 * b is the LCM */ + if ((res = mp_div(a, &t1, &t2, NULL)) != MP_OKAY) { + goto LBL_T; + } + res = mp_mul(b, &t2, c); + } else { + /* store quotient in t2 such that t2 * a is the LCM */ + if ((res = mp_div(b, &t1, &t2, NULL)) != MP_OKAY) { + goto LBL_T; + } + res = mp_mul(a, &t2, c); + } + + /* fix the sign to positive */ + c->sign = MP_ZPOS; + +LBL_T: + mp_clear_multi(&t1, &t2, NULL); + return res; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_lshd.c b/fsbl/lib/libtommath/bn_mp_lshd.c new file mode 100644 index 000000000..6762a10ad --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_lshd.c @@ -0,0 +1,68 @@ +#include "tommath_private.h" +#ifdef BN_MP_LSHD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* shift left a certain amount of digits */ +int mp_lshd(mp_int *a, int b) +{ + int x, res; + + /* if its less than zero return */ + if (b <= 0) { + return MP_OKAY; + } + /* no need to shift 0 around */ + if (mp_iszero(a) == MP_YES) { + return MP_OKAY; + } + + /* grow to fit the new digits */ + if (a->alloc < (a->used + b)) { + if ((res = mp_grow(a, a->used + b)) != MP_OKAY) { + return res; + } + } + + { + mp_digit *top, *bottom; + + /* increment the used by the shift amount then copy upwards */ + a->used += b; + + /* top */ + top = a->dp + a->used - 1; + + /* base */ + bottom = (a->dp + a->used - 1) - b; + + /* much like mp_rshd this is implemented using a sliding window + * except the window goes the otherway around. Copying from + * the bottom to the top. see bn_mp_rshd.c for more info. + */ + for (x = a->used - 1; x >= b; x--) { + *top-- = *bottom--; + } + + /* zero the lower digits */ + top = a->dp; + for (x = 0; x < b; x++) { + *top++ = 0; + } + } + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_mod.c b/fsbl/lib/libtommath/bn_mp_mod.c new file mode 100644 index 000000000..fa022a794 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_mod.c @@ -0,0 +1,44 @@ +#include "tommath_private.h" +#ifdef BN_MP_MOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* c = a mod b, 0 <= c < b if b > 0, b < c <= 0 if b < 0 */ +int mp_mod(const mp_int *a, const mp_int *b, mp_int *c) +{ + mp_int t; + int res; + + if ((res = mp_init_size(&t, b->used)) != MP_OKAY) { + return res; + } + + if ((res = mp_div(a, b, NULL, &t)) != MP_OKAY) { + mp_clear(&t); + return res; + } + + if ((mp_iszero(&t) != MP_NO) || (t.sign == b->sign)) { + res = MP_OKAY; + mp_exch(&t, c); + } else { + res = mp_add(b, &t, c); + } + + mp_clear(&t); + return res; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_mod_2d.c b/fsbl/lib/libtommath/bn_mp_mod_2d.c new file mode 100644 index 000000000..759198bae --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_mod_2d.c @@ -0,0 +1,51 @@ +#include "tommath_private.h" +#ifdef BN_MP_MOD_2D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* calc a value mod 2**b */ +int mp_mod_2d(const mp_int *a, int b, mp_int *c) +{ + int x, res; + + /* if b is <= 0 then zero the int */ + if (b <= 0) { + mp_zero(c); + return MP_OKAY; + } + + /* if the modulus is larger than the value than return */ + if (b >= (a->used * DIGIT_BIT)) { + res = mp_copy(a, c); + return res; + } + + /* copy */ + if ((res = mp_copy(a, c)) != MP_OKAY) { + return res; + } + + /* zero digits above the last digit of the modulus */ + for (x = (b / DIGIT_BIT) + (((b % DIGIT_BIT) == 0) ? 0 : 1); x < c->used; x++) { + c->dp[x] = 0; + } + /* clear the digit that is not completely outside/inside the modulus */ + c->dp[b / DIGIT_BIT] &= + ((mp_digit)1 << (mp_digit)(b % DIGIT_BIT)) - (mp_digit)1; + mp_clamp(c); + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_mod_d.c b/fsbl/lib/libtommath/bn_mp_mod_d.c new file mode 100644 index 000000000..f58b6b5af --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_mod_d.c @@ -0,0 +1,23 @@ +#include "tommath_private.h" +#ifdef BN_MP_MOD_D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +int mp_mod_d(const mp_int *a, mp_digit b, mp_digit *c) +{ + return mp_div_d(a, b, NULL, c); +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_montgomery_calc_normalization.c b/fsbl/lib/libtommath/bn_mp_montgomery_calc_normalization.c new file mode 100644 index 000000000..848378c4a --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_montgomery_calc_normalization.c @@ -0,0 +1,56 @@ +#include "tommath_private.h" +#ifdef BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* + * shifts with subtractions when the result is greater than b. + * + * The method is slightly modified to shift B unconditionally upto just under + * the leading bit of b. This saves alot of multiple precision shifting. + */ +int mp_montgomery_calc_normalization(mp_int *a, const mp_int *b) +{ + int x, bits, res; + + /* how many bits of last digit does b use */ + bits = mp_count_bits(b) % DIGIT_BIT; + + if (b->used > 1) { + if ((res = mp_2expt(a, ((b->used - 1) * DIGIT_BIT) + bits - 1)) != MP_OKAY) { + return res; + } + } else { + mp_set(a, 1uL); + bits = 1; + } + + + /* now compute C = A * B mod b */ + for (x = bits - 1; x < (int)DIGIT_BIT; x++) { + if ((res = mp_mul_2(a, a)) != MP_OKAY) { + return res; + } + if (mp_cmp_mag(a, b) != MP_LT) { + if ((res = s_mp_sub(a, b, a)) != MP_OKAY) { + return res; + } + } + } + + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_montgomery_reduce.c b/fsbl/lib/libtommath/bn_mp_montgomery_reduce.c new file mode 100644 index 000000000..382c7cc7f --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_montgomery_reduce.c @@ -0,0 +1,115 @@ +#include "tommath_private.h" +#ifdef BN_MP_MONTGOMERY_REDUCE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* computes xR**-1 == x (mod N) via Montgomery Reduction */ +int mp_montgomery_reduce(mp_int *x, const mp_int *n, mp_digit rho) +{ + int ix, res, digs; + mp_digit mu; + + /* can the fast reduction [comba] method be used? + * + * Note that unlike in mul you're safely allowed *less* + * than the available columns [255 per default] since carries + * are fixed up in the inner loop. + */ + digs = (n->used * 2) + 1; + if ((digs < (int)MP_WARRAY) && + (x->used <= (int)MP_WARRAY) && + (n->used < + (int)(1u << (((size_t)CHAR_BIT * sizeof(mp_word)) - (2u * (size_t)DIGIT_BIT))))) { + return fast_mp_montgomery_reduce(x, n, rho); + } + + /* grow the input as required */ + if (x->alloc < digs) { + if ((res = mp_grow(x, digs)) != MP_OKAY) { + return res; + } + } + x->used = digs; + + for (ix = 0; ix < n->used; ix++) { + /* mu = ai * rho mod b + * + * The value of rho must be precalculated via + * montgomery_setup() such that + * it equals -1/n0 mod b this allows the + * following inner loop to reduce the + * input one digit at a time + */ + mu = (mp_digit)(((mp_word)x->dp[ix] * (mp_word)rho) & MP_MASK); + + /* a = a + mu * m * b**i */ + { + int iy; + mp_digit *tmpn, *tmpx, u; + mp_word r; + + /* alias for digits of the modulus */ + tmpn = n->dp; + + /* alias for the digits of x [the input] */ + tmpx = x->dp + ix; + + /* set the carry to zero */ + u = 0; + + /* Multiply and add in place */ + for (iy = 0; iy < n->used; iy++) { + /* compute product and sum */ + r = ((mp_word)mu * (mp_word)*tmpn++) + + (mp_word)u + (mp_word)*tmpx; + + /* get carry */ + u = (mp_digit)(r >> (mp_word)DIGIT_BIT); + + /* fix digit */ + *tmpx++ = (mp_digit)(r & (mp_word)MP_MASK); + } + /* At this point the ix'th digit of x should be zero */ + + + /* propagate carries upwards as required*/ + while (u != 0u) { + *tmpx += u; + u = *tmpx >> DIGIT_BIT; + *tmpx++ &= MP_MASK; + } + } + } + + /* at this point the n.used'th least + * significant digits of x are all zero + * which means we can shift x to the + * right by n.used digits and the + * residue is unchanged. + */ + + /* x = x/b**n.used */ + mp_clamp(x); + mp_rshd(x, n->used); + + /* if x >= n then x = x - n */ + if (mp_cmp_mag(x, n) != MP_LT) { + return s_mp_sub(x, n, x); + } + + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_montgomery_setup.c b/fsbl/lib/libtommath/bn_mp_montgomery_setup.c new file mode 100644 index 000000000..26c632a2d --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_montgomery_setup.c @@ -0,0 +1,55 @@ +#include "tommath_private.h" +#ifdef BN_MP_MONTGOMERY_SETUP_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* setups the montgomery reduction stuff */ +int mp_montgomery_setup(const mp_int *n, mp_digit *rho) +{ + mp_digit x, b; + + /* fast inversion mod 2**k + * + * Based on the fact that + * + * XA = 1 (mod 2**n) => (X(2-XA)) A = 1 (mod 2**2n) + * => 2*X*A - X*X*A*A = 1 + * => 2*(1) - (1) = 1 + */ + b = n->dp[0]; + + if ((b & 1u) == 0u) { + return MP_VAL; + } + + x = (((b + 2u) & 4u) << 1) + b; /* here x*a==1 mod 2**4 */ + x *= 2u - (b * x); /* here x*a==1 mod 2**8 */ +#if !defined(MP_8BIT) + x *= 2u - (b * x); /* here x*a==1 mod 2**16 */ +#endif +#if defined(MP_64BIT) || !(defined(MP_8BIT) || defined(MP_16BIT)) + x *= 2u - (b * x); /* here x*a==1 mod 2**32 */ +#endif +#ifdef MP_64BIT + x *= 2u - (b * x); /* here x*a==1 mod 2**64 */ +#endif + + /* rho = -1/m mod b */ + *rho = (mp_digit)(((mp_word)1 << (mp_word)DIGIT_BIT) - x) & MP_MASK; + + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_mul.c b/fsbl/lib/libtommath/bn_mp_mul.c new file mode 100644 index 000000000..f83b1b75a --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_mul.c @@ -0,0 +1,64 @@ +#include "tommath_private.h" +#ifdef BN_MP_MUL_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* high level multiplication (handles sign) */ +int mp_mul(const mp_int *a, const mp_int *b, mp_int *c) +{ + int res, neg; + neg = (a->sign == b->sign) ? MP_ZPOS : MP_NEG; + + /* use Toom-Cook? */ +#ifdef BN_MP_TOOM_MUL_C + if (MIN(a->used, b->used) >= TOOM_MUL_CUTOFF) { + res = mp_toom_mul(a, b, c); + } else +#endif +#ifdef BN_MP_KARATSUBA_MUL_C + /* use Karatsuba? */ + if (MIN(a->used, b->used) >= KARATSUBA_MUL_CUTOFF) { + res = mp_karatsuba_mul(a, b, c); + } else +#endif + { + /* can we use the fast multiplier? + * + * The fast multiplier can be used if the output will + * have less than MP_WARRAY digits and the number of + * digits won't affect carry propagation + */ + int digs = a->used + b->used + 1; + +#ifdef BN_FAST_S_MP_MUL_DIGS_C + if ((digs < (int)MP_WARRAY) && + (MIN(a->used, b->used) <= + (int)(1u << (((size_t)CHAR_BIT * sizeof(mp_word)) - (2u * (size_t)DIGIT_BIT))))) { + res = fast_s_mp_mul_digs(a, b, c, digs); + } else +#endif + { +#ifdef BN_S_MP_MUL_DIGS_C + res = s_mp_mul(a, b, c); /* uses s_mp_mul_digs */ +#else + res = MP_VAL; +#endif + } + } + c->sign = (c->used > 0) ? neg : MP_ZPOS; + return res; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_mul_2.c b/fsbl/lib/libtommath/bn_mp_mul_2.c new file mode 100644 index 000000000..2ed5516d7 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_mul_2.c @@ -0,0 +1,79 @@ +#include "tommath_private.h" +#ifdef BN_MP_MUL_2_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* b = a*2 */ +int mp_mul_2(const mp_int *a, mp_int *b) +{ + int x, res, oldused; + + /* grow to accomodate result */ + if (b->alloc < (a->used + 1)) { + if ((res = mp_grow(b, a->used + 1)) != MP_OKAY) { + return res; + } + } + + oldused = b->used; + b->used = a->used; + + { + mp_digit r, rr, *tmpa, *tmpb; + + /* alias for source */ + tmpa = a->dp; + + /* alias for dest */ + tmpb = b->dp; + + /* carry */ + r = 0; + for (x = 0; x < a->used; x++) { + + /* get what will be the *next* carry bit from the + * MSB of the current digit + */ + rr = *tmpa >> (mp_digit)(DIGIT_BIT - 1); + + /* now shift up this digit, add in the carry [from the previous] */ + *tmpb++ = ((*tmpa++ << 1uL) | r) & MP_MASK; + + /* copy the carry that would be from the source + * digit into the next iteration + */ + r = rr; + } + + /* new leading digit? */ + if (r != 0u) { + /* add a MSB which is always 1 at this point */ + *tmpb = 1; + ++(b->used); + } + + /* now zero any excess digits on the destination + * that we didn't write to + */ + tmpb = b->dp + b->used; + for (x = b->used; x < oldused; x++) { + *tmpb++ = 0; + } + } + b->sign = a->sign; + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_mul_2d.c b/fsbl/lib/libtommath/bn_mp_mul_2d.c new file mode 100644 index 000000000..9ea548d9f --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_mul_2d.c @@ -0,0 +1,82 @@ +#include "tommath_private.h" +#ifdef BN_MP_MUL_2D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* shift left by a certain bit count */ +int mp_mul_2d(const mp_int *a, int b, mp_int *c) +{ + mp_digit d; + int res; + + /* copy */ + if (a != c) { + if ((res = mp_copy(a, c)) != MP_OKAY) { + return res; + } + } + + if (c->alloc < (c->used + (b / DIGIT_BIT) + 1)) { + if ((res = mp_grow(c, c->used + (b / DIGIT_BIT) + 1)) != MP_OKAY) { + return res; + } + } + + /* shift by as many digits in the bit count */ + if (b >= DIGIT_BIT) { + if ((res = mp_lshd(c, b / DIGIT_BIT)) != MP_OKAY) { + return res; + } + } + + /* shift any bit count < DIGIT_BIT */ + d = (mp_digit)(b % DIGIT_BIT); + if (d != 0u) { + mp_digit *tmpc, shift, mask, r, rr; + int x; + + /* bitmask for carries */ + mask = ((mp_digit)1 << d) - (mp_digit)1; + + /* shift for msbs */ + shift = (mp_digit)DIGIT_BIT - d; + + /* alias */ + tmpc = c->dp; + + /* carry */ + r = 0; + for (x = 0; x < c->used; x++) { + /* get the higher bits of the current word */ + rr = (*tmpc >> shift) & mask; + + /* shift the current word and OR in the carry */ + *tmpc = ((*tmpc << d) | r) & MP_MASK; + ++tmpc; + + /* set the carry to the carry bits of the current word */ + r = rr; + } + + /* set final carry */ + if (r != 0u) { + c->dp[(c->used)++] = r; + } + } + mp_clamp(c); + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_mul_d.c b/fsbl/lib/libtommath/bn_mp_mul_d.c new file mode 100644 index 000000000..936e1338f --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_mul_d.c @@ -0,0 +1,75 @@ +#include "tommath_private.h" +#ifdef BN_MP_MUL_D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* multiply by a digit */ +int mp_mul_d(const mp_int *a, mp_digit b, mp_int *c) +{ + mp_digit u, *tmpa, *tmpc; + mp_word r; + int ix, res, olduse; + + /* make sure c is big enough to hold a*b */ + if (c->alloc < (a->used + 1)) { + if ((res = mp_grow(c, a->used + 1)) != MP_OKAY) { + return res; + } + } + + /* get the original destinations used count */ + olduse = c->used; + + /* set the sign */ + c->sign = a->sign; + + /* alias for a->dp [source] */ + tmpa = a->dp; + + /* alias for c->dp [dest] */ + tmpc = c->dp; + + /* zero carry */ + u = 0; + + /* compute columns */ + for (ix = 0; ix < a->used; ix++) { + /* compute product and carry sum for this term */ + r = (mp_word)u + ((mp_word)*tmpa++ * (mp_word)b); + + /* mask off higher bits to get a single digit */ + *tmpc++ = (mp_digit)(r & (mp_word)MP_MASK); + + /* send carry into next iteration */ + u = (mp_digit)(r >> (mp_word)DIGIT_BIT); + } + + /* store final carry [if any] and increment ix offset */ + *tmpc++ = u; + ++ix; + + /* now zero digits above the top */ + while (ix++ < olduse) { + *tmpc++ = 0; + } + + /* set used count */ + c->used = a->used + 1; + mp_clamp(c); + + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_mulmod.c b/fsbl/lib/libtommath/bn_mp_mulmod.c new file mode 100644 index 000000000..4192452d8 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_mulmod.c @@ -0,0 +1,37 @@ +#include "tommath_private.h" +#ifdef BN_MP_MULMOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* d = a * b (mod c) */ +int mp_mulmod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d) +{ + int res; + mp_int t; + + if ((res = mp_init_size(&t, c->used)) != MP_OKAY) { + return res; + } + + if ((res = mp_mul(a, b, &t)) != MP_OKAY) { + mp_clear(&t); + return res; + } + res = mp_mod(&t, c, d); + mp_clear(&t); + return res; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_n_root.c b/fsbl/lib/libtommath/bn_mp_n_root.c new file mode 100644 index 000000000..c14771fb7 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_n_root.c @@ -0,0 +1,27 @@ +#include "tommath_private.h" +#ifdef BN_MP_N_ROOT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* wrapper function for mp_n_root_ex() + * computes c = (a)**(1/b) such that (c)**b <= a and (c+1)**b > a + */ +int mp_n_root(const mp_int *a, mp_digit b, mp_int *c) +{ + return mp_n_root_ex(a, b, c, 0); +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_n_root_ex.c b/fsbl/lib/libtommath/bn_mp_n_root_ex.c new file mode 100644 index 000000000..ebc08ba50 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_n_root_ex.c @@ -0,0 +1,129 @@ +#include "tommath_private.h" +#ifdef BN_MP_N_ROOT_EX_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* find the n'th root of an integer + * + * Result found such that (c)**b <= a and (c+1)**b > a + * + * This algorithm uses Newton's approximation + * x[i+1] = x[i] - f(x[i])/f'(x[i]) + * which will find the root in log(N) time where + * each step involves a fair bit. This is not meant to + * find huge roots [square and cube, etc]. + */ +int mp_n_root_ex(const mp_int *a, mp_digit b, mp_int *c, int fast) +{ + mp_int t1, t2, t3, a_; + int res; + + /* input must be positive if b is even */ + if (((b & 1u) == 0u) && (a->sign == MP_NEG)) { + return MP_VAL; + } + + if ((res = mp_init(&t1)) != MP_OKAY) { + return res; + } + + if ((res = mp_init(&t2)) != MP_OKAY) { + goto LBL_T1; + } + + if ((res = mp_init(&t3)) != MP_OKAY) { + goto LBL_T2; + } + + /* if a is negative fudge the sign but keep track */ + a_ = *a; + a_.sign = MP_ZPOS; + + /* t2 = 2 */ + mp_set(&t2, 2uL); + + do { + /* t1 = t2 */ + if ((res = mp_copy(&t2, &t1)) != MP_OKAY) { + goto LBL_T3; + } + + /* t2 = t1 - ((t1**b - a) / (b * t1**(b-1))) */ + + /* t3 = t1**(b-1) */ + if ((res = mp_expt_d_ex(&t1, b - 1u, &t3, fast)) != MP_OKAY) { + goto LBL_T3; + } + + /* numerator */ + /* t2 = t1**b */ + if ((res = mp_mul(&t3, &t1, &t2)) != MP_OKAY) { + goto LBL_T3; + } + + /* t2 = t1**b - a */ + if ((res = mp_sub(&t2, &a_, &t2)) != MP_OKAY) { + goto LBL_T3; + } + + /* denominator */ + /* t3 = t1**(b-1) * b */ + if ((res = mp_mul_d(&t3, b, &t3)) != MP_OKAY) { + goto LBL_T3; + } + + /* t3 = (t1**b - a)/(b * t1**(b-1)) */ + if ((res = mp_div(&t2, &t3, &t3, NULL)) != MP_OKAY) { + goto LBL_T3; + } + + if ((res = mp_sub(&t1, &t3, &t2)) != MP_OKAY) { + goto LBL_T3; + } + } while (mp_cmp(&t1, &t2) != MP_EQ); + + /* result can be off by a few so check */ + for (;;) { + if ((res = mp_expt_d_ex(&t1, b, &t2, fast)) != MP_OKAY) { + goto LBL_T3; + } + + if (mp_cmp(&t2, &a_) == MP_GT) { + if ((res = mp_sub_d(&t1, 1uL, &t1)) != MP_OKAY) { + goto LBL_T3; + } + } else { + break; + } + } + + /* set the result */ + mp_exch(&t1, c); + + /* set the sign of the result */ + c->sign = a->sign; + + res = MP_OKAY; + +LBL_T3: + mp_clear(&t3); +LBL_T2: + mp_clear(&t2); +LBL_T1: + mp_clear(&t1); + return res; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_neg.c b/fsbl/lib/libtommath/bn_mp_neg.c new file mode 100644 index 000000000..9020525fb --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_neg.c @@ -0,0 +1,37 @@ +#include "tommath_private.h" +#ifdef BN_MP_NEG_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* b = -a */ +int mp_neg(const mp_int *a, mp_int *b) +{ + int res; + if (a != b) { + if ((res = mp_copy(a, b)) != MP_OKAY) { + return res; + } + } + + if (mp_iszero(b) != MP_YES) { + b->sign = (a->sign == MP_ZPOS) ? MP_NEG : MP_ZPOS; + } else { + b->sign = MP_ZPOS; + } + + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_or.c b/fsbl/lib/libtommath/bn_mp_or.c new file mode 100644 index 000000000..a0f2711a0 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_or.c @@ -0,0 +1,48 @@ +#include "tommath_private.h" +#ifdef BN_MP_OR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* OR two ints together */ +int mp_or(const mp_int *a, const mp_int *b, mp_int *c) +{ + int res, ix, px; + mp_int t; + const mp_int *x; + + if (a->used > b->used) { + if ((res = mp_init_copy(&t, a)) != MP_OKAY) { + return res; + } + px = b->used; + x = b; + } else { + if ((res = mp_init_copy(&t, b)) != MP_OKAY) { + return res; + } + px = a->used; + x = a; + } + + for (ix = 0; ix < px; ix++) { + t.dp[ix] |= x->dp[ix]; + } + mp_clamp(&t); + mp_exch(c, &t); + mp_clear(&t); + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_prime_fermat.c b/fsbl/lib/libtommath/bn_mp_prime_fermat.c new file mode 100644 index 000000000..63ced961b --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_prime_fermat.c @@ -0,0 +1,60 @@ +#include "tommath_private.h" +#ifdef BN_MP_PRIME_FERMAT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* performs one Fermat test. + * + * If "a" were prime then b**a == b (mod a) since the order of + * the multiplicative sub-group would be phi(a) = a-1. That means + * it would be the same as b**(a mod (a-1)) == b**1 == b (mod a). + * + * Sets result to 1 if the congruence holds, or zero otherwise. + */ +int mp_prime_fermat(const mp_int *a, const mp_int *b, int *result) +{ + mp_int t; + int err; + + /* default to composite */ + *result = MP_NO; + + /* ensure b > 1 */ + if (mp_cmp_d(b, 1uL) != MP_GT) { + return MP_VAL; + } + + /* init t */ + if ((err = mp_init(&t)) != MP_OKAY) { + return err; + } + + /* compute t = b**a mod a */ + if ((err = mp_exptmod(b, a, a, &t)) != MP_OKAY) { + goto LBL_T; + } + + /* is it equal to b? */ + if (mp_cmp(&t, b) == MP_EQ) { + *result = MP_YES; + } + + err = MP_OKAY; +LBL_T: + mp_clear(&t); + return err; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_prime_frobenius_underwood.c b/fsbl/lib/libtommath/bn_mp_prime_frobenius_underwood.c new file mode 100644 index 000000000..4ceb51e09 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_prime_frobenius_underwood.c @@ -0,0 +1,198 @@ +#include "tommath_private.h" +#ifdef BN_MP_PRIME_FROBENIUS_UNDERWOOD_C + +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* + * See file bn_mp_prime_is_prime.c or the documentation in doc/bn.tex for the details + */ +#ifndef LTM_USE_FIPS_ONLY + +#ifdef MP_8BIT +/* + * floor of positive solution of + * (2^16)-1 = (a+4)*(2*a+5) + * TODO: Both values are smaller than N^(1/4), would have to use a bigint + * for a instead but any a biger than about 120 are already so rare that + * it is possible to ignore them and still get enough pseudoprimes. + * But it is still a restriction of the set of available pseudoprimes + * which makes this implementation less secure if used stand-alone. + */ +#define LTM_FROBENIUS_UNDERWOOD_A 177 +#else +#define LTM_FROBENIUS_UNDERWOOD_A 32764 +#endif +int mp_prime_frobenius_underwood(const mp_int *N, int *result) +{ + mp_int T1z, T2z, Np1z, sz, tz; + + int a, ap2, length, i, j, isset; + int e; + + *result = MP_NO; + + if ((e = mp_init_multi(&T1z, &T2z, &Np1z, &sz, &tz, NULL)) != MP_OKAY) { + return e; + } + + for (a = 0; a < LTM_FROBENIUS_UNDERWOOD_A; a++) { + /* TODO: That's ugly! No, really, it is! */ + if ((a==2) || (a==4) || (a==7) || (a==8) || (a==10) || + (a==14) || (a==18) || (a==23) || (a==26) || (a==28)) { + continue; + } + /* (32764^2 - 4) < 2^31, no bigint for >MP_8BIT needed) */ + if ((e = mp_set_long(&T1z, (unsigned long)a)) != MP_OKAY) { + goto LBL_FU_ERR; + } + + if ((e = mp_sqr(&T1z, &T1z)) != MP_OKAY) { + goto LBL_FU_ERR; + } + + if ((e = mp_sub_d(&T1z, 4uL, &T1z)) != MP_OKAY) { + goto LBL_FU_ERR; + } + + if ((e = mp_kronecker(&T1z, N, &j)) != MP_OKAY) { + goto LBL_FU_ERR; + } + + if (j == -1) { + break; + } + + if (j == 0) { + /* composite */ + goto LBL_FU_ERR; + } + } + /* Tell it a composite and set return value accordingly */ + if (a >= LTM_FROBENIUS_UNDERWOOD_A) { + e = MP_ITER; + goto LBL_FU_ERR; + } + /* Composite if N and (a+4)*(2*a+5) are not coprime */ + if ((e = mp_set_long(&T1z, (unsigned long)((a+4)*((2*a)+5)))) != MP_OKAY) { + goto LBL_FU_ERR; + } + + if ((e = mp_gcd(N, &T1z, &T1z)) != MP_OKAY) { + goto LBL_FU_ERR; + } + + if (!((T1z.used == 1) && (T1z.dp[0] == 1u))) { + goto LBL_FU_ERR; + } + + ap2 = a + 2; + if ((e = mp_add_d(N, 1uL, &Np1z)) != MP_OKAY) { + goto LBL_FU_ERR; + } + + mp_set(&sz, 1uL); + mp_set(&tz, 2uL); + length = mp_count_bits(&Np1z); + + for (i = length - 2; i >= 0; i--) { + /* + * temp = (sz*(a*sz+2*tz))%N; + * tz = ((tz-sz)*(tz+sz))%N; + * sz = temp; + */ + if ((e = mp_mul_2(&tz, &T2z)) != MP_OKAY) { + goto LBL_FU_ERR; + } + + /* a = 0 at about 50% of the cases (non-square and odd input) */ + if (a != 0) { + if ((e = mp_mul_d(&sz, (mp_digit)a, &T1z)) != MP_OKAY) { + goto LBL_FU_ERR; + } + if ((e = mp_add(&T1z, &T2z, &T2z)) != MP_OKAY) { + goto LBL_FU_ERR; + } + } + + if ((e = mp_mul(&T2z, &sz, &T1z)) != MP_OKAY) { + goto LBL_FU_ERR; + } + if ((e = mp_sub(&tz, &sz, &T2z)) != MP_OKAY) { + goto LBL_FU_ERR; + } + if ((e = mp_add(&sz, &tz, &sz)) != MP_OKAY) { + goto LBL_FU_ERR; + } + if ((e = mp_mul(&sz, &T2z, &tz)) != MP_OKAY) { + goto LBL_FU_ERR; + } + if ((e = mp_mod(&tz, N, &tz)) != MP_OKAY) { + goto LBL_FU_ERR; + } + if ((e = mp_mod(&T1z, N, &sz)) != MP_OKAY) { + goto LBL_FU_ERR; + } + if ((isset = mp_get_bit(&Np1z, i)) == MP_VAL) { + e = isset; + goto LBL_FU_ERR; + } + if (isset == MP_YES) { + /* + * temp = (a+2) * sz + tz + * tz = 2 * tz - sz + * sz = temp + */ + if (a == 0) { + if ((e = mp_mul_2(&sz, &T1z)) != MP_OKAY) { + goto LBL_FU_ERR; + } + } else { + if ((e = mp_mul_d(&sz, (mp_digit)ap2, &T1z)) != MP_OKAY) { + goto LBL_FU_ERR; + } + } + if ((e = mp_add(&T1z, &tz, &T1z)) != MP_OKAY) { + goto LBL_FU_ERR; + } + if ((e = mp_mul_2(&tz, &T2z)) != MP_OKAY) { + goto LBL_FU_ERR; + } + if ((e = mp_sub(&T2z, &sz, &tz)) != MP_OKAY) { + goto LBL_FU_ERR; + } + mp_exch(&sz, &T1z); + } + } + + if ((e = mp_set_long(&T1z, (unsigned long)((2 * a) + 5))) != MP_OKAY) { + goto LBL_FU_ERR; + } + if ((e = mp_mod(&T1z, N, &T1z)) != MP_OKAY) { + goto LBL_FU_ERR; + } + if ((mp_iszero(&sz) != MP_NO) && (mp_cmp(&tz, &T1z) == MP_EQ)) { + *result = MP_YES; + goto LBL_FU_ERR; + } + +LBL_FU_ERR: + mp_clear_multi(&tz, &sz, &Np1z, &T2z, &T1z, NULL); + return e; +} + +#endif +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_prime_is_divisible.c b/fsbl/lib/libtommath/bn_mp_prime_is_divisible.c new file mode 100644 index 000000000..0e6e2f380 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_prime_is_divisible.c @@ -0,0 +1,47 @@ +#include "tommath_private.h" +#ifdef BN_MP_PRIME_IS_DIVISIBLE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* determines if an integers is divisible by one + * of the first PRIME_SIZE primes or not + * + * sets result to 0 if not, 1 if yes + */ +int mp_prime_is_divisible(const mp_int *a, int *result) +{ + int err, ix; + mp_digit res; + + /* default to not */ + *result = MP_NO; + + for (ix = 0; ix < PRIME_SIZE; ix++) { + /* what is a mod LBL_prime_tab[ix] */ + if ((err = mp_mod_d(a, ltm_prime_tab[ix], &res)) != MP_OKAY) { + return err; + } + + /* is the residue zero? */ + if (res == 0u) { + *result = MP_YES; + return MP_OKAY; + } + } + + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_prime_is_prime.c b/fsbl/lib/libtommath/bn_mp_prime_is_prime.c new file mode 100644 index 000000000..15637c889 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_prime_is_prime.c @@ -0,0 +1,370 @@ +#include "tommath_private.h" +#ifdef BN_MP_PRIME_IS_PRIME_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* portable integer log of two with small footprint */ +static unsigned int s_floor_ilog2(int value) +{ + unsigned int r = 0; + while ((value >>= 1) != 0) { + r++; + } + return r; +} + + +int mp_prime_is_prime(const mp_int *a, int t, int *result) +{ + mp_int b; + int ix, err, res, p_max = 0, size_a, len; + unsigned int fips_rand, mask; + + /* default to no */ + *result = MP_NO; + + /* valid value of t? */ + if (t > PRIME_SIZE) { + return MP_VAL; + } + + /* Some shortcuts */ + /* N > 3 */ + if (a->used == 1) { + if ((a->dp[0] == 0u) || (a->dp[0] == 1u)) { + *result = 0; + return MP_OKAY; + } + if (a->dp[0] == 2u) { + *result = 1; + return MP_OKAY; + } + } + + /* N must be odd */ + if (mp_iseven(a) == MP_YES) { + return MP_OKAY; + } + /* N is not a perfect square: floor(sqrt(N))^2 != N */ + if ((err = mp_is_square(a, &res)) != MP_OKAY) { + return err; + } + if (res != 0) { + return MP_OKAY; + } + + /* is the input equal to one of the primes in the table? */ + for (ix = 0; ix < PRIME_SIZE; ix++) { + if (mp_cmp_d(a, ltm_prime_tab[ix]) == MP_EQ) { + *result = MP_YES; + return MP_OKAY; + } + } +#ifdef MP_8BIT + /* The search in the loop above was exhaustive in this case */ + if ((a->used == 1) && (PRIME_SIZE >= 31)) { + return MP_OKAY; + } +#endif + + /* first perform trial division */ + if ((err = mp_prime_is_divisible(a, &res)) != MP_OKAY) { + return err; + } + + /* return if it was trivially divisible */ + if (res == MP_YES) { + return MP_OKAY; + } + + /* + Run the Miller-Rabin test with base 2 for the BPSW test. + */ + if ((err = mp_init_set(&b, 2uL)) != MP_OKAY) { + return err; + } + + if ((err = mp_prime_miller_rabin(a, &b, &res)) != MP_OKAY) { + goto LBL_B; + } + if (res == MP_NO) { + goto LBL_B; + } + /* + Rumours have it that Mathematica does a second M-R test with base 3. + Other rumours have it that their strong L-S test is slightly different. + It does not hurt, though, beside a bit of extra runtime. + */ + b.dp[0]++; + if ((err = mp_prime_miller_rabin(a, &b, &res)) != MP_OKAY) { + goto LBL_B; + } + if (res == MP_NO) { + goto LBL_B; + } + + /* + * Both, the Frobenius-Underwood test and the the Lucas-Selfridge test are quite + * slow so if speed is an issue, define LTM_USE_FIPS_ONLY to use M-R tests with + * bases 2, 3 and t random bases. + */ +#ifndef LTM_USE_FIPS_ONLY + if (t >= 0) { + /* + * Use a Frobenius-Underwood test instead of the Lucas-Selfridge test for + * MP_8BIT (It is unknown if the Lucas-Selfridge test works with 16-bit + * integers but the necesssary analysis is on the todo-list). + */ +#if defined (MP_8BIT) || defined (LTM_USE_FROBENIUS_TEST) + err = mp_prime_frobenius_underwood(a, &res); + if ((err != MP_OKAY) && (err != MP_ITER)) { + goto LBL_B; + } + if (res == MP_NO) { + goto LBL_B; + } +#else + if ((err = mp_prime_strong_lucas_selfridge(a, &res)) != MP_OKAY) { + goto LBL_B; + } + if (res == MP_NO) { + goto LBL_B; + } +#endif + } +#endif + + /* run at least one Miller-Rabin test with a random base */ + if (t == 0) { + t = 1; + } + + /* + abs(t) extra rounds of M-R to extend the range of primes it can find if t < 0. + Only recommended if the input range is known to be < 3317044064679887385961981 + + It uses the bases for a deterministic M-R test if input < 3317044064679887385961981 + The caller has to check the size. + + Not for cryptographic use because with known bases strong M-R pseudoprimes can + be constructed. Use at least one M-R test with a random base (t >= 1). + + The 1119 bit large number + + 80383745745363949125707961434194210813883768828755814583748891752229742737653\ + 33652186502336163960045457915042023603208766569966760987284043965408232928738\ + 79185086916685732826776177102938969773947016708230428687109997439976544144845\ + 34115587245063340927902227529622941498423068816854043264575340183297861112989\ + 60644845216191652872597534901 + + has been constructed by F. Arnault (F. Arnault, "Rabin-Miller primality test: + composite numbers which pass it.", Mathematics of Computation, 1995, 64. Jg., + Nr. 209, S. 355-361), is a semiprime with the two factors + + 40095821663949960541830645208454685300518816604113250877450620473800321707011\ + 96242716223191597219733582163165085358166969145233813917169287527980445796800\ + 452592031836601 + + 20047910831974980270915322604227342650259408302056625438725310236900160853505\ + 98121358111595798609866791081582542679083484572616906958584643763990222898400\ + 226296015918301 + + and it is a strong pseudoprime to all forty-six prime M-R bases up to 200 + + It does not fail the strong Bailley-PSP test as implemented here, it is just + given as an example, if not the reason to use the BPSW-test instead of M-R-tests + with a sequence of primes 2...n. + + */ + if (t < 0) { + t = -t; + /* + Sorenson, Jonathan; Webster, Jonathan (2015). + "Strong Pseudoprimes to Twelve Prime Bases". + */ + /* 0x437ae92817f9fc85b7e5 = 318665857834031151167461 */ + if ((err = mp_read_radix(&b, "437ae92817f9fc85b7e5", 16)) != MP_OKAY) { + goto LBL_B; + } + + if (mp_cmp(a, &b) == MP_LT) { + p_max = 12; + } else { + /* 0x2be6951adc5b22410a5fd = 3317044064679887385961981 */ + if ((err = mp_read_radix(&b, "2be6951adc5b22410a5fd", 16)) != MP_OKAY) { + goto LBL_B; + } + + if (mp_cmp(a, &b) == MP_LT) { + p_max = 13; + } else { + err = MP_VAL; + goto LBL_B; + } + } + + /* for compatibility with the current API (well, compatible within a sign's width) */ + if (p_max < t) { + p_max = t; + } + + if (p_max > PRIME_SIZE) { + err = MP_VAL; + goto LBL_B; + } + /* we did bases 2 and 3 already, skip them */ + for (ix = 2; ix < p_max; ix++) { + mp_set(&b, ltm_prime_tab[ix]); + if ((err = mp_prime_miller_rabin(a, &b, &res)) != MP_OKAY) { + goto LBL_B; + } + if (res == MP_NO) { + goto LBL_B; + } + } + } + /* + Do "t" M-R tests with random bases between 3 and "a". + See Fips 186.4 p. 126ff + */ + else if (t > 0) { + /* + * The mp_digit's have a defined bit-size but the size of the + * array a.dp is a simple 'int' and this library can not assume full + * compliance to the current C-standard (ISO/IEC 9899:2011) because + * it gets used for small embeded processors, too. Some of those MCUs + * have compilers that one cannot call standard compliant by any means. + * Hence the ugly type-fiddling in the following code. + */ + size_a = mp_count_bits(a); + mask = (1u << s_floor_ilog2(size_a)) - 1u; + /* + Assuming the General Rieman hypothesis (never thought to write that in a + comment) the upper bound can be lowered to 2*(log a)^2. + E. Bach, "Explicit bounds for primality testing and related problems," + Math. Comp. 55 (1990), 355-380. + + size_a = (size_a/10) * 7; + len = 2 * (size_a * size_a); + + E.g.: a number of size 2^2048 would be reduced to the upper limit + + floor(2048/10)*7 = 1428 + 2 * 1428^2 = 4078368 + + (would have been ~4030331.9962 with floats and natural log instead) + That number is smaller than 2^28, the default bit-size of mp_digit. + */ + + /* + How many tests, you might ask? Dana Jacobsen of Math::Prime::Util fame + does exactly 1. In words: one. Look at the end of _GMP_is_prime() in + Math-Prime-Util-GMP-0.50/primality.c if you do not believe it. + + The function mp_rand() goes to some length to use a cryptographically + good PRNG. That also means that the chance to always get the same base + in the loop is non-zero, although very low. + If the BPSW test and/or the addtional Frobenious test have been + performed instead of just the Miller-Rabin test with the bases 2 and 3, + a single extra test should suffice, so such a very unlikely event + will not do much harm. + + To preemptivly answer the dangling question: no, a witness does not + need to be prime. + */ + for (ix = 0; ix < t; ix++) { + /* mp_rand() guarantees the first digit to be non-zero */ + if ((err = mp_rand(&b, 1)) != MP_OKAY) { + goto LBL_B; + } + /* + * Reduce digit before casting because mp_digit might be bigger than + * an unsigned int and "mask" on the other side is most probably not. + */ + fips_rand = (unsigned int)(b.dp[0] & (mp_digit) mask); +#ifdef MP_8BIT + /* + * One 8-bit digit is too small, so concatenate two if the size of + * unsigned int allows for it. + */ + if (((sizeof(unsigned int) * CHAR_BIT)/2) >= (sizeof(mp_digit) * CHAR_BIT)) { + if ((err = mp_rand(&b, 1)) != MP_OKAY) { + goto LBL_B; + } + fips_rand <<= sizeof(mp_digit) * CHAR_BIT; + fips_rand |= (unsigned int) b.dp[0]; + fips_rand &= mask; + } +#endif + if (fips_rand > (unsigned int)(INT_MAX - DIGIT_BIT)) { + len = INT_MAX / DIGIT_BIT; + } else { + len = (((int)fips_rand + DIGIT_BIT) / DIGIT_BIT); + } + /* Unlikely. */ + if (len < 0) { + ix--; + continue; + } + /* + * As mentioned above, one 8-bit digit is too small and + * although it can only happen in the unlikely case that + * an "unsigned int" is smaller than 16 bit a simple test + * is cheap and the correction even cheaper. + */ +#ifdef MP_8BIT + /* All "a" < 2^8 have been caught before */ + if (len == 1) { + len++; + } +#endif + if ((err = mp_rand(&b, len)) != MP_OKAY) { + goto LBL_B; + } + /* + * That number might got too big and the witness has to be + * smaller than or equal to "a" + */ + len = mp_count_bits(&b); + if (len > size_a) { + len = len - size_a; + if ((err = mp_div_2d(&b, len, &b, NULL)) != MP_OKAY) { + goto LBL_B; + } + } + + /* Although the chance for b <= 3 is miniscule, try again. */ + if (mp_cmp_d(&b, 3uL) != MP_GT) { + ix--; + continue; + } + if ((err = mp_prime_miller_rabin(a, &b, &res)) != MP_OKAY) { + goto LBL_B; + } + if (res == MP_NO) { + goto LBL_B; + } + } + } + + /* passed the test */ + *result = MP_YES; +LBL_B: + mp_clear(&b); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_prime_miller_rabin.c b/fsbl/lib/libtommath/bn_mp_prime_miller_rabin.c new file mode 100644 index 000000000..a12e533ca --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_prime_miller_rabin.c @@ -0,0 +1,103 @@ +#include "tommath_private.h" +#ifdef BN_MP_PRIME_MILLER_RABIN_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* Miller-Rabin test of "a" to the base of "b" as described in + * HAC pp. 139 Algorithm 4.24 + * + * Sets result to 0 if definitely composite or 1 if probably prime. + * Randomly the chance of error is no more than 1/4 and often + * very much lower. + */ +int mp_prime_miller_rabin(const mp_int *a, const mp_int *b, int *result) +{ + mp_int n1, y, r; + int s, j, err; + + /* default */ + *result = MP_NO; + + /* ensure b > 1 */ + if (mp_cmp_d(b, 1uL) != MP_GT) { + return MP_VAL; + } + + /* get n1 = a - 1 */ + if ((err = mp_init_copy(&n1, a)) != MP_OKAY) { + return err; + } + if ((err = mp_sub_d(&n1, 1uL, &n1)) != MP_OKAY) { + goto LBL_N1; + } + + /* set 2**s * r = n1 */ + if ((err = mp_init_copy(&r, &n1)) != MP_OKAY) { + goto LBL_N1; + } + + /* count the number of least significant bits + * which are zero + */ + s = mp_cnt_lsb(&r); + + /* now divide n - 1 by 2**s */ + if ((err = mp_div_2d(&r, s, &r, NULL)) != MP_OKAY) { + goto LBL_R; + } + + /* compute y = b**r mod a */ + if ((err = mp_init(&y)) != MP_OKAY) { + goto LBL_R; + } + if ((err = mp_exptmod(b, &r, a, &y)) != MP_OKAY) { + goto LBL_Y; + } + + /* if y != 1 and y != n1 do */ + if ((mp_cmp_d(&y, 1uL) != MP_EQ) && (mp_cmp(&y, &n1) != MP_EQ)) { + j = 1; + /* while j <= s-1 and y != n1 */ + while ((j <= (s - 1)) && (mp_cmp(&y, &n1) != MP_EQ)) { + if ((err = mp_sqrmod(&y, a, &y)) != MP_OKAY) { + goto LBL_Y; + } + + /* if y == 1 then composite */ + if (mp_cmp_d(&y, 1uL) == MP_EQ) { + goto LBL_Y; + } + + ++j; + } + + /* if y != n1 then composite */ + if (mp_cmp(&y, &n1) != MP_EQ) { + goto LBL_Y; + } + } + + /* probably prime now */ + *result = MP_YES; +LBL_Y: + mp_clear(&y); +LBL_R: + mp_clear(&r); +LBL_N1: + mp_clear(&n1); + return err; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_prime_next_prime.c b/fsbl/lib/libtommath/bn_mp_prime_next_prime.c new file mode 100644 index 000000000..28256ca87 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_prime_next_prime.c @@ -0,0 +1,156 @@ +#include "tommath_private.h" +#ifdef BN_MP_PRIME_NEXT_PRIME_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* finds the next prime after the number "a" using "t" trials + * of Miller-Rabin. + * + * bbs_style = 1 means the prime must be congruent to 3 mod 4 + */ +int mp_prime_next_prime(mp_int *a, int t, int bbs_style) +{ + int err, res = MP_NO, x, y; + mp_digit res_tab[PRIME_SIZE], step, kstep; + mp_int b; + + /* force positive */ + a->sign = MP_ZPOS; + + /* simple algo if a is less than the largest prime in the table */ + if (mp_cmp_d(a, ltm_prime_tab[PRIME_SIZE-1]) == MP_LT) { + /* find which prime it is bigger than */ + for (x = PRIME_SIZE - 2; x >= 0; x--) { + if (mp_cmp_d(a, ltm_prime_tab[x]) != MP_LT) { + if (bbs_style == 1) { + /* ok we found a prime smaller or + * equal [so the next is larger] + * + * however, the prime must be + * congruent to 3 mod 4 + */ + if ((ltm_prime_tab[x + 1] & 3u) != 3u) { + /* scan upwards for a prime congruent to 3 mod 4 */ + for (y = x + 1; y < PRIME_SIZE; y++) { + if ((ltm_prime_tab[y] & 3u) == 3u) { + mp_set(a, ltm_prime_tab[y]); + return MP_OKAY; + } + } + } + } else { + mp_set(a, ltm_prime_tab[x + 1]); + return MP_OKAY; + } + } + } + /* at this point a maybe 1 */ + if (mp_cmp_d(a, 1uL) == MP_EQ) { + mp_set(a, 2uL); + return MP_OKAY; + } + /* fall through to the sieve */ + } + + /* generate a prime congruent to 3 mod 4 or 1/3 mod 4? */ + if (bbs_style == 1) { + kstep = 4; + } else { + kstep = 2; + } + + /* at this point we will use a combination of a sieve and Miller-Rabin */ + + if (bbs_style == 1) { + /* if a mod 4 != 3 subtract the correct value to make it so */ + if ((a->dp[0] & 3u) != 3u) { + if ((err = mp_sub_d(a, (a->dp[0] & 3u) + 1u, a)) != MP_OKAY) { + return err; + }; + } + } else { + if (mp_iseven(a) == MP_YES) { + /* force odd */ + if ((err = mp_sub_d(a, 1uL, a)) != MP_OKAY) { + return err; + } + } + } + + /* generate the restable */ + for (x = 1; x < PRIME_SIZE; x++) { + if ((err = mp_mod_d(a, ltm_prime_tab[x], res_tab + x)) != MP_OKAY) { + return err; + } + } + + /* init temp used for Miller-Rabin Testing */ + if ((err = mp_init(&b)) != MP_OKAY) { + return err; + } + + for (;;) { + /* skip to the next non-trivially divisible candidate */ + step = 0; + do { + /* y == 1 if any residue was zero [e.g. cannot be prime] */ + y = 0; + + /* increase step to next candidate */ + step += kstep; + + /* compute the new residue without using division */ + for (x = 1; x < PRIME_SIZE; x++) { + /* add the step to each residue */ + res_tab[x] += kstep; + + /* subtract the modulus [instead of using division] */ + if (res_tab[x] >= ltm_prime_tab[x]) { + res_tab[x] -= ltm_prime_tab[x]; + } + + /* set flag if zero */ + if (res_tab[x] == 0u) { + y = 1; + } + } + } while ((y == 1) && (step < (((mp_digit)1 << DIGIT_BIT) - kstep))); + + /* add the step */ + if ((err = mp_add_d(a, step, a)) != MP_OKAY) { + goto LBL_ERR; + } + + /* if didn't pass sieve and step == MAX then skip test */ + if ((y == 1) && (step >= (((mp_digit)1 << DIGIT_BIT) - kstep))) { + continue; + } + + if ((err = mp_prime_is_prime(a, t, &res)) != MP_OKAY) { + goto LBL_ERR; + } + if (res == MP_YES) { + break; + } + } + + err = MP_OKAY; +LBL_ERR: + mp_clear(&b); + return err; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_prime_rabin_miller_trials.c b/fsbl/lib/libtommath/bn_mp_prime_rabin_miller_trials.c new file mode 100644 index 000000000..1c0a748f3 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_prime_rabin_miller_trials.c @@ -0,0 +1,56 @@ +#include "tommath_private.h" +#ifdef BN_MP_PRIME_RABIN_MILLER_TRIALS_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + + +static const struct { + int k, t; +} sizes[] = { + { 80, -1 }, /* Use deterministic algorithm for size <= 80 bits */ + { 81, 39 }, + { 96, 37 }, + { 128, 32 }, + { 160, 27 }, + { 192, 21 }, + { 256, 16 }, + { 384, 10 }, + { 512, 7 }, + { 640, 6 }, + { 768, 5 }, + { 896, 4 }, + { 1024, 4 }, + { 2048, 2 }, + { 4096, 1 }, +}; + +/* returns # of RM trials required for a given bit size and max. error of 2^(-96)*/ +int mp_prime_rabin_miller_trials(int size) +{ + int x; + + for (x = 0; x < (int)(sizeof(sizes)/(sizeof(sizes[0]))); x++) { + if (sizes[x].k == size) { + return sizes[x].t; + } else if (sizes[x].k > size) { + return (x == 0) ? sizes[0].t : sizes[x - 1].t; + } + } + return sizes[x-1].t + 1; +} + + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_prime_random_ex.c b/fsbl/lib/libtommath/bn_mp_prime_random_ex.c new file mode 100644 index 000000000..b0b463281 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_prime_random_ex.c @@ -0,0 +1,135 @@ +#include "tommath_private.h" +#ifdef BN_MP_PRIME_RANDOM_EX_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* makes a truly random prime of a given size (bits), + * + * Flags are as follows: + * + * LTM_PRIME_BBS - make prime congruent to 3 mod 4 + * LTM_PRIME_SAFE - make sure (p-1)/2 is prime as well (implies LTM_PRIME_BBS) + * LTM_PRIME_2MSB_ON - make the 2nd highest bit one + * + * You have to supply a callback which fills in a buffer with random bytes. "dat" is a parameter you can + * have passed to the callback (e.g. a state or something). This function doesn't use "dat" itself + * so it can be NULL + * + */ + +/* This is possibly the mother of all prime generation functions, muahahahahaha! */ +int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback cb, void *dat) +{ + unsigned char *tmp, maskAND, maskOR_msb, maskOR_lsb; + int res, err, bsize, maskOR_msb_offset; + + /* sanity check the input */ + if ((size <= 1) || (t <= 0)) { + return MP_VAL; + } + + /* LTM_PRIME_SAFE implies LTM_PRIME_BBS */ + if ((flags & LTM_PRIME_SAFE) != 0) { + flags |= LTM_PRIME_BBS; + } + + /* calc the byte size */ + bsize = (size>>3) + ((size&7)?1:0); + + /* we need a buffer of bsize bytes */ + tmp = OPT_CAST(unsigned char) XMALLOC((size_t)bsize); + if (tmp == NULL) { + return MP_MEM; + } + + /* calc the maskAND value for the MSbyte*/ + maskAND = ((size&7) == 0) ? 0xFF : (0xFF >> (8 - (size & 7))); + + /* calc the maskOR_msb */ + maskOR_msb = 0; + maskOR_msb_offset = ((size & 7) == 1) ? 1 : 0; + if ((flags & LTM_PRIME_2MSB_ON) != 0) { + maskOR_msb |= 0x80 >> ((9 - size) & 7); + } + + /* get the maskOR_lsb */ + maskOR_lsb = 1; + if ((flags & LTM_PRIME_BBS) != 0) { + maskOR_lsb |= 3; + } + + do { + /* read the bytes */ + if (cb(tmp, bsize, dat) != bsize) { + err = MP_VAL; + goto error; + } + + /* work over the MSbyte */ + tmp[0] &= maskAND; + tmp[0] |= 1 << ((size - 1) & 7); + + /* mix in the maskORs */ + tmp[maskOR_msb_offset] |= maskOR_msb; + tmp[bsize-1] |= maskOR_lsb; + + /* read it in */ + if ((err = mp_read_unsigned_bin(a, tmp, bsize)) != MP_OKAY) { + goto error; + } + + /* is it prime? */ + if ((err = mp_prime_is_prime(a, t, &res)) != MP_OKAY) { + goto error; + } + if (res == MP_NO) { + continue; + } + + if ((flags & LTM_PRIME_SAFE) != 0) { + /* see if (a-1)/2 is prime */ + if ((err = mp_sub_d(a, 1uL, a)) != MP_OKAY) { + goto error; + } + if ((err = mp_div_2(a, a)) != MP_OKAY) { + goto error; + } + + /* is it prime? */ + if ((err = mp_prime_is_prime(a, t, &res)) != MP_OKAY) { + goto error; + } + } + } while (res == MP_NO); + + if ((flags & LTM_PRIME_SAFE) != 0) { + /* restore a to the original value */ + if ((err = mp_mul_2(a, a)) != MP_OKAY) { + goto error; + } + if ((err = mp_add_d(a, 1uL, a)) != MP_OKAY) { + goto error; + } + } + + err = MP_OKAY; +error: + XFREE(tmp); + return err; +} + + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_prime_strong_lucas_selfridge.c b/fsbl/lib/libtommath/bn_mp_prime_strong_lucas_selfridge.c new file mode 100644 index 000000000..5a94f8ef3 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_prime_strong_lucas_selfridge.c @@ -0,0 +1,411 @@ +#include "tommath_private.h" +#ifdef BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C + +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* + * See file bn_mp_prime_is_prime.c or the documentation in doc/bn.tex for the details + */ +#ifndef LTM_USE_FIPS_ONLY + +/* + * 8-bit is just too small. You can try the Frobenius test + * but that frobenius test can fail, too, for the same reason. + */ +#ifndef MP_8BIT + +/* + * multiply bigint a with int d and put the result in c + * Like mp_mul_d() but with a signed long as the small input + */ +static int s_mp_mul_si(const mp_int *a, long d, mp_int *c) +{ + mp_int t; + int err, neg = 0; + + if ((err = mp_init(&t)) != MP_OKAY) { + return err; + } + if (d < 0) { + neg = 1; + d = -d; + } + + /* + * mp_digit might be smaller than a long, which excludes + * the use of mp_mul_d() here. + */ + if ((err = mp_set_long(&t, (unsigned long) d)) != MP_OKAY) { + goto LBL_MPMULSI_ERR; + } + if ((err = mp_mul(a, &t, c)) != MP_OKAY) { + goto LBL_MPMULSI_ERR; + } + if (neg == 1) { + c->sign = (a->sign == MP_NEG) ? MP_ZPOS: MP_NEG; + } +LBL_MPMULSI_ERR: + mp_clear(&t); + return err; +} +/* + Strong Lucas-Selfridge test. + returns MP_YES if it is a strong L-S prime, MP_NO if it is composite + + Code ported from Thomas Ray Nicely's implementation of the BPSW test + at http://www.trnicely.net/misc/bpsw.html + + Freeware copyright (C) 2016 Thomas R. Nicely . + Released into the public domain by the author, who disclaims any legal + liability arising from its use + + The multi-line comments are made by Thomas R. Nicely and are copied verbatim. + Additional comments marked "CZ" (without the quotes) are by the code-portist. + + (If that name sounds familiar, he is the guy who found the fdiv bug in the + Pentium (P5x, I think) Intel processor) +*/ +int mp_prime_strong_lucas_selfridge(const mp_int *a, int *result) +{ + /* CZ TODO: choose better variable names! */ + mp_int Dz, gcd, Np1, Uz, Vz, U2mz, V2mz, Qmz, Q2mz, Qkdz, T1z, T2z, T3z, T4z, Q2kdz; + /* CZ TODO: Some of them need the full 32 bit, hence the (temporary) exclusion of MP_8BIT */ + int32_t D, Ds, J, sign, P, Q, r, s, u, Nbits; + int e; + int isset, oddness; + + *result = MP_NO; + /* + Find the first element D in the sequence {5, -7, 9, -11, 13, ...} + such that Jacobi(D,N) = -1 (Selfridge's algorithm). Theory + indicates that, if N is not a perfect square, D will "nearly + always" be "small." Just in case, an overflow trap for D is + included. + */ + + if ((e = mp_init_multi(&Dz, &gcd, &Np1, &Uz, &Vz, &U2mz, &V2mz, &Qmz, &Q2mz, &Qkdz, &T1z, &T2z, &T3z, &T4z, &Q2kdz, + NULL)) != MP_OKAY) { + return e; + } + + D = 5; + sign = 1; + + for (;;) { + Ds = sign * D; + sign = -sign; + if ((e = mp_set_long(&Dz, (unsigned long)D)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if ((e = mp_gcd(a, &Dz, &gcd)) != MP_OKAY) { + goto LBL_LS_ERR; + } + /* if 1 < GCD < N then N is composite with factor "D", and + Jacobi(D,N) is technically undefined (but often returned + as zero). */ + if ((mp_cmp_d(&gcd, 1uL) == MP_GT) && (mp_cmp(&gcd, a) == MP_LT)) { + goto LBL_LS_ERR; + } + if (Ds < 0) { + Dz.sign = MP_NEG; + } + if ((e = mp_kronecker(&Dz, a, &J)) != MP_OKAY) { + goto LBL_LS_ERR; + } + + if (J == -1) { + break; + } + D += 2; + + if (D > (INT_MAX - 2)) { + e = MP_VAL; + goto LBL_LS_ERR; + } + } + + + + P = 1; /* Selfridge's choice */ + Q = (1 - Ds) / 4; /* Required so D = P*P - 4*Q */ + + /* NOTE: The conditions (a) N does not divide Q, and + (b) D is square-free or not a perfect square, are included by + some authors; e.g., "Prime numbers and computer methods for + factorization," Hans Riesel (2nd ed., 1994, Birkhauser, Boston), + p. 130. For this particular application of Lucas sequences, + these conditions were found to be immaterial. */ + + /* Now calculate N - Jacobi(D,N) = N + 1 (even), and calculate the + odd positive integer d and positive integer s for which + N + 1 = 2^s*d (similar to the step for N - 1 in Miller's test). + The strong Lucas-Selfridge test then returns N as a strong + Lucas probable prime (slprp) if any of the following + conditions is met: U_d=0, V_d=0, V_2d=0, V_4d=0, V_8d=0, + V_16d=0, ..., etc., ending with V_{2^(s-1)*d}=V_{(N+1)/2}=0 + (all equalities mod N). Thus d is the highest index of U that + must be computed (since V_2m is independent of U), compared + to U_{N+1} for the standard Lucas-Selfridge test; and no + index of V beyond (N+1)/2 is required, just as in the + standard Lucas-Selfridge test. However, the quantity Q^d must + be computed for use (if necessary) in the latter stages of + the test. The result is that the strong Lucas-Selfridge test + has a running time only slightly greater (order of 10 %) than + that of the standard Lucas-Selfridge test, while producing + only (roughly) 30 % as many pseudoprimes (and every strong + Lucas pseudoprime is also a standard Lucas pseudoprime). Thus + the evidence indicates that the strong Lucas-Selfridge test is + more effective than the standard Lucas-Selfridge test, and a + Baillie-PSW test based on the strong Lucas-Selfridge test + should be more reliable. */ + + if ((e = mp_add_d(a, 1uL, &Np1)) != MP_OKAY) { + goto LBL_LS_ERR; + } + s = mp_cnt_lsb(&Np1); + + /* CZ + * This should round towards zero because + * Thomas R. Nicely used GMP's mpz_tdiv_q_2exp() + * and mp_div_2d() is equivalent. Additionally: + * dividing an even number by two does not produce + * any leftovers. + */ + if ((e = mp_div_2d(&Np1, s, &Dz, NULL)) != MP_OKAY) { + goto LBL_LS_ERR; + } + /* We must now compute U_d and V_d. Since d is odd, the accumulated + values U and V are initialized to U_1 and V_1 (if the target + index were even, U and V would be initialized instead to U_0=0 + and V_0=2). The values of U_2m and V_2m are also initialized to + U_1 and V_1; the FOR loop calculates in succession U_2 and V_2, + U_4 and V_4, U_8 and V_8, etc. If the corresponding bits + (1, 2, 3, ...) of t are on (the zero bit having been accounted + for in the initialization of U and V), these values are then + combined with the previous totals for U and V, using the + composition formulas for addition of indices. */ + + mp_set(&Uz, 1uL); /* U=U_1 */ + mp_set(&Vz, (mp_digit)P); /* V=V_1 */ + mp_set(&U2mz, 1uL); /* U_1 */ + mp_set(&V2mz, (mp_digit)P); /* V_1 */ + + if (Q < 0) { + Q = -Q; + if ((e = mp_set_long(&Qmz, (unsigned long)Q)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if ((e = mp_mul_2(&Qmz, &Q2mz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + /* Initializes calculation of Q^d */ + if ((e = mp_set_long(&Qkdz, (unsigned long)Q)) != MP_OKAY) { + goto LBL_LS_ERR; + } + Qmz.sign = MP_NEG; + Q2mz.sign = MP_NEG; + Qkdz.sign = MP_NEG; + Q = -Q; + } else { + if ((e = mp_set_long(&Qmz, (unsigned long)Q)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if ((e = mp_mul_2(&Qmz, &Q2mz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + /* Initializes calculation of Q^d */ + if ((e = mp_set_long(&Qkdz, (unsigned long)Q)) != MP_OKAY) { + goto LBL_LS_ERR; + } + } + + Nbits = mp_count_bits(&Dz); + + for (u = 1; u < Nbits; u++) { /* zero bit off, already accounted for */ + /* Formulas for doubling of indices (carried out mod N). Note that + * the indices denoted as "2m" are actually powers of 2, specifically + * 2^(ul-1) beginning each loop and 2^ul ending each loop. + * + * U_2m = U_m*V_m + * V_2m = V_m*V_m - 2*Q^m + */ + + if ((e = mp_mul(&U2mz, &V2mz, &U2mz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if ((e = mp_mod(&U2mz, a, &U2mz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if ((e = mp_sqr(&V2mz, &V2mz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if ((e = mp_sub(&V2mz, &Q2mz, &V2mz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if ((e = mp_mod(&V2mz, a, &V2mz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + /* Must calculate powers of Q for use in V_2m, also for Q^d later */ + if ((e = mp_sqr(&Qmz, &Qmz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + /* prevents overflow */ /* CZ still necessary without a fixed prealloc'd mem.? */ + if ((e = mp_mod(&Qmz, a, &Qmz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if ((e = mp_mul_2(&Qmz, &Q2mz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if ((isset = mp_get_bit(&Dz, u)) == MP_VAL) { + e = isset; + goto LBL_LS_ERR; + } + if (isset == MP_YES) { + /* Formulas for addition of indices (carried out mod N); + * + * U_(m+n) = (U_m*V_n + U_n*V_m)/2 + * V_(m+n) = (V_m*V_n + D*U_m*U_n)/2 + * + * Be careful with division by 2 (mod N)! + */ + if ((e = mp_mul(&U2mz, &Vz, &T1z)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if ((e = mp_mul(&Uz, &V2mz, &T2z)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if ((e = mp_mul(&V2mz, &Vz, &T3z)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if ((e = mp_mul(&U2mz, &Uz, &T4z)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if ((e = s_mp_mul_si(&T4z, (long)Ds, &T4z)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if ((e = mp_add(&T1z, &T2z, &Uz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if (mp_isodd(&Uz) != MP_NO) { + if ((e = mp_add(&Uz, a, &Uz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + } + /* CZ + * This should round towards negative infinity because + * Thomas R. Nicely used GMP's mpz_fdiv_q_2exp(). + * But mp_div_2() does not do so, it is truncating instead. + */ + oddness = mp_isodd(&Uz); + if ((e = mp_div_2(&Uz, &Uz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if ((Uz.sign == MP_NEG) && (oddness != MP_NO)) { + if ((e = mp_sub_d(&Uz, 1uL, &Uz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + } + if ((e = mp_add(&T3z, &T4z, &Vz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if (mp_isodd(&Vz) != MP_NO) { + if ((e = mp_add(&Vz, a, &Vz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + } + oddness = mp_isodd(&Vz); + if ((e = mp_div_2(&Vz, &Vz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if ((Vz.sign == MP_NEG) && (oddness != MP_NO)) { + if ((e = mp_sub_d(&Vz, 1uL, &Vz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + } + if ((e = mp_mod(&Uz, a, &Uz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if ((e = mp_mod(&Vz, a, &Vz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + /* Calculating Q^d for later use */ + if ((e = mp_mul(&Qkdz, &Qmz, &Qkdz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if ((e = mp_mod(&Qkdz, a, &Qkdz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + } + } + + /* If U_d or V_d is congruent to 0 mod N, then N is a prime or a + strong Lucas pseudoprime. */ + if ((mp_iszero(&Uz) != MP_NO) || (mp_iszero(&Vz) != MP_NO)) { + *result = MP_YES; + goto LBL_LS_ERR; + } + + /* NOTE: Ribenboim ("The new book of prime number records," 3rd ed., + 1995/6) omits the condition V0 on p.142, but includes it on + p. 130. The condition is NECESSARY; otherwise the test will + return false negatives---e.g., the primes 29 and 2000029 will be + returned as composite. */ + + /* Otherwise, we must compute V_2d, V_4d, V_8d, ..., V_{2^(s-1)*d} + by repeated use of the formula V_2m = V_m*V_m - 2*Q^m. If any of + these are congruent to 0 mod N, then N is a prime or a strong + Lucas pseudoprime. */ + + /* Initialize 2*Q^(d*2^r) for V_2m */ + if ((e = mp_mul_2(&Qkdz, &Q2kdz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + + for (r = 1; r < s; r++) { + if ((e = mp_sqr(&Vz, &Vz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if ((e = mp_sub(&Vz, &Q2kdz, &Vz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if ((e = mp_mod(&Vz, a, &Vz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if (mp_iszero(&Vz) != MP_NO) { + *result = MP_YES; + goto LBL_LS_ERR; + } + /* Calculate Q^{d*2^r} for next r (final iteration irrelevant). */ + if (r < (s - 1)) { + if ((e = mp_sqr(&Qkdz, &Qkdz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if ((e = mp_mod(&Qkdz, a, &Qkdz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + if ((e = mp_mul_2(&Qkdz, &Q2kdz)) != MP_OKAY) { + goto LBL_LS_ERR; + } + } + } +LBL_LS_ERR: + mp_clear_multi(&Q2kdz, &T4z, &T3z, &T2z, &T1z, &Qkdz, &Q2mz, &Qmz, &V2mz, &U2mz, &Vz, &Uz, &Np1, &gcd, &Dz, NULL); + return e; +} +#endif +#endif +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_radix_size.c b/fsbl/lib/libtommath/bn_mp_radix_size.c new file mode 100644 index 000000000..8583faa4d --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_radix_size.c @@ -0,0 +1,75 @@ +#include "tommath_private.h" +#ifdef BN_MP_RADIX_SIZE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* returns size of ASCII reprensentation */ +int mp_radix_size(const mp_int *a, int radix, int *size) +{ + int res, digs; + mp_int t; + mp_digit d; + + *size = 0; + + /* make sure the radix is in range */ + if ((radix < 2) || (radix > 64)) { + return MP_VAL; + } + + if (mp_iszero(a) == MP_YES) { + *size = 2; + return MP_OKAY; + } + + /* special case for binary */ + if (radix == 2) { + *size = mp_count_bits(a) + ((a->sign == MP_NEG) ? 1 : 0) + 1; + return MP_OKAY; + } + + /* digs is the digit count */ + digs = 0; + + /* if it's negative add one for the sign */ + if (a->sign == MP_NEG) { + ++digs; + } + + /* init a copy of the input */ + if ((res = mp_init_copy(&t, a)) != MP_OKAY) { + return res; + } + + /* force temp to positive */ + t.sign = MP_ZPOS; + + /* fetch out all of the digits */ + while (mp_iszero(&t) == MP_NO) { + if ((res = mp_div_d(&t, (mp_digit)radix, &t, &d)) != MP_OKAY) { + mp_clear(&t); + return res; + } + ++digs; + } + mp_clear(&t); + + /* return digs + 1, the 1 is for the NULL byte that would be required. */ + *size = digs + 1; + return MP_OKAY; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_radix_smap.c b/fsbl/lib/libtommath/bn_mp_radix_smap.c new file mode 100644 index 000000000..15730fec5 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_radix_smap.c @@ -0,0 +1,35 @@ +#include "tommath_private.h" +#ifdef BN_MP_RADIX_SMAP_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* chars used in radix conversions */ +const char *const mp_s_rmap = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/"; +const uint8_t mp_s_rmap_reverse[] = { + 0xff, 0xff, 0xff, 0x3e, 0xff, 0xff, 0xff, 0x3f, /* ()*+,-./ */ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 01234567 */ + 0x08, 0x09, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 89:;<=>? */ + 0xff, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, /* @ABCDEFG */ + 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, /* HIJKLMNO */ + 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, /* PQRSTUVW */ + 0x21, 0x22, 0x23, 0xff, 0xff, 0xff, 0xff, 0xff, /* XYZ[\]^_ */ + 0xff, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, /* `abcdefg */ + 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, /* hijklmno */ + 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, /* pqrstuvw */ + 0x3b, 0x3c, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, /* xyz{|}~. */ +}; +const size_t mp_s_rmap_reverse_sz = sizeof(mp_s_rmap_reverse); +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_rand.c b/fsbl/lib/libtommath/bn_mp_rand.c new file mode 100644 index 000000000..17aa5a272 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_rand.c @@ -0,0 +1,222 @@ +#include "tommath_private.h" +#ifdef BN_MP_RAND_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* First the OS-specific special cases + * - *BSD + * - Windows + */ +#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__) +#define MP_ARC4RANDOM +#define MP_GEN_RANDOM_MAX 0xffffffffu +#define MP_GEN_RANDOM_SHIFT 32 + +static int s_read_arc4random(mp_digit *p) +{ + mp_digit d = 0, msk = 0; + do { + d <<= MP_GEN_RANDOM_SHIFT; + d |= ((mp_digit) arc4random()); + msk <<= MP_GEN_RANDOM_SHIFT; + msk |= (MP_MASK & MP_GEN_RANDOM_MAX); + } while ((MP_MASK & msk) != MP_MASK); + *p = d; + return MP_OKAY; +} +#endif + +#if defined(_WIN32) || defined(_WIN32_WCE) +#define MP_WIN_CSP + +#ifndef _WIN32_WINNT +#define _WIN32_WINNT 0x0400 +#endif +#ifdef _WIN32_WCE +#define UNDER_CE +#define ARM +#endif + +#define WIN32_LEAN_AND_MEAN +#include +#include + +static HCRYPTPROV hProv = 0; + +static void s_cleanup_win_csp(void) +{ + CryptReleaseContext(hProv, 0); + hProv = 0; +} + +static int s_read_win_csp(mp_digit *p) +{ + int ret = -1; + if (hProv == 0) { + if (!CryptAcquireContext(&hProv, NULL, MS_DEF_PROV, PROV_RSA_FULL, + (CRYPT_VERIFYCONTEXT | CRYPT_MACHINE_KEYSET)) && + !CryptAcquireContext(&hProv, NULL, MS_DEF_PROV, PROV_RSA_FULL, + CRYPT_VERIFYCONTEXT | CRYPT_MACHINE_KEYSET | CRYPT_NEWKEYSET)) { + hProv = 0; + return ret; + } + atexit(s_cleanup_win_csp); + } + if (CryptGenRandom(hProv, sizeof(*p), (void *)p) == TRUE) { + ret = MP_OKAY; + } + return ret; +} +#endif /* WIN32 */ + +#if !defined(MP_WIN_CSP) && defined(__linux__) && defined(__GLIBC_PREREQ) +#if __GLIBC_PREREQ(2, 25) +#define MP_GETRANDOM +#include +#include + +static int s_read_getrandom(mp_digit *p) +{ + int ret; + do { + ret = getrandom(p, sizeof(*p), 0); + } while ((ret == -1) && (errno == EINTR)); + if (ret == sizeof(*p)) return MP_OKAY; + return -1; +} +#endif +#endif + +/* We assume all platforms besides windows provide "/dev/urandom". + * In case yours doesn't, define MP_NO_DEV_URANDOM at compile-time. + */ +#if !defined(MP_WIN_CSP) && !defined(MP_NO_DEV_URANDOM) +#ifndef MP_DEV_URANDOM +#define MP_DEV_URANDOM "/dev/urandom" +#endif +#include +#include +#include + +static int s_read_dev_urandom(mp_digit *p) +{ + ssize_t r; + int fd; + do { + fd = open(MP_DEV_URANDOM, O_RDONLY); + } while ((fd == -1) && (errno == EINTR)); + if (fd == -1) return -1; + do { + r = read(fd, p, sizeof(*p)); + } while ((r == -1) && (errno == EINTR)); + close(fd); + if (r != sizeof(*p)) return -1; + return MP_OKAY; +} +#endif + +#if defined(MP_PRNG_ENABLE_LTM_RNG) +unsigned long (*ltm_rng)(unsigned char *out, unsigned long outlen, void (*callback)(void)); +void (*ltm_rng_callback)(void); + +static int s_read_ltm_rng(mp_digit *p) +{ + unsigned long ret; + if (ltm_rng == NULL) return -1; + ret = ltm_rng((void *)p, sizeof(*p), ltm_rng_callback); + if (ret != sizeof(*p)) return -1; + return MP_OKAY; +} +#endif + +static int s_rand_digit(mp_digit *p) +{ + int ret = -1; + +#if defined(MP_ARC4RANDOM) + ret = s_read_arc4random(p); + if (ret == MP_OKAY) return ret; +#endif + +#if defined(MP_WIN_CSP) + ret = s_read_win_csp(p); + if (ret == MP_OKAY) return ret; +#else + +#if defined(MP_GETRANDOM) + ret = s_read_getrandom(p); + if (ret == MP_OKAY) return ret; +#endif +#if defined(MP_DEV_URANDOM) + ret = s_read_dev_urandom(p); + if (ret == MP_OKAY) return ret; +#endif + +#endif /* MP_WIN_CSP */ + +#if defined(MP_PRNG_ENABLE_LTM_RNG) + ret = s_read_ltm_rng(p); + if (ret == MP_OKAY) return ret; +#endif + + return ret; +} + +/* makes a pseudo-random int of a given size */ +int mp_rand_digit(mp_digit *r) +{ + int ret = s_rand_digit(r); + *r &= MP_MASK; + return ret; +} + +int mp_rand(mp_int *a, int digits) +{ + int res; + mp_digit d; + + mp_zero(a); + if (digits <= 0) { + return MP_OKAY; + } + + /* first place a random non-zero digit */ + do { + if (mp_rand_digit(&d) != MP_OKAY) { + return MP_VAL; + } + } while (d == 0u); + + if ((res = mp_add_d(a, d, a)) != MP_OKAY) { + return res; + } + + while (--digits > 0) { + if ((res = mp_lshd(a, 1)) != MP_OKAY) { + return res; + } + + if (mp_rand_digit(&d) != MP_OKAY) { + return MP_VAL; + } + if ((res = mp_add_d(a, d, a)) != MP_OKAY) { + return res; + } + } + + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_read_radix.c b/fsbl/lib/libtommath/bn_mp_read_radix.c new file mode 100644 index 000000000..200601edf --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_read_radix.c @@ -0,0 +1,88 @@ +#include "tommath_private.h" +#ifdef BN_MP_READ_RADIX_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* read a string [ASCII] in a given radix */ +int mp_read_radix(mp_int *a, const char *str, int radix) +{ + int y, res, neg; + unsigned pos; + char ch; + + /* zero the digit bignum */ + mp_zero(a); + + /* make sure the radix is ok */ + if ((radix < 2) || (radix > 64)) { + return MP_VAL; + } + + /* if the leading digit is a + * minus set the sign to negative. + */ + if (*str == '-') { + ++str; + neg = MP_NEG; + } else { + neg = MP_ZPOS; + } + + /* set the integer to the default of zero */ + mp_zero(a); + + /* process each digit of the string */ + while (*str != '\0') { + /* if the radix <= 36 the conversion is case insensitive + * this allows numbers like 1AB and 1ab to represent the same value + * [e.g. in hex] + */ + ch = (radix <= 36) ? (char)toupper((int)*str) : *str; + pos = (unsigned)(ch - '('); + if (mp_s_rmap_reverse_sz < pos) { + break; + } + y = (int)mp_s_rmap_reverse[pos]; + + /* if the char was found in the map + * and is less than the given radix add it + * to the number, otherwise exit the loop. + */ + if ((y == 0xff) || (y >= radix)) { + break; + } + if ((res = mp_mul_d(a, (mp_digit)radix, a)) != MP_OKAY) { + return res; + } + if ((res = mp_add_d(a, (mp_digit)y, a)) != MP_OKAY) { + return res; + } + ++str; + } + + /* if an illegal character was found, fail. */ + if (!((*str == '\0') || (*str == '\r') || (*str == '\n'))) { + mp_zero(a); + return MP_VAL; + } + + /* set the sign only if a != 0 */ + if (mp_iszero(a) != MP_YES) { + a->sign = neg; + } + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_read_signed_bin.c b/fsbl/lib/libtommath/bn_mp_read_signed_bin.c new file mode 100644 index 000000000..e97a1d079 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_read_signed_bin.c @@ -0,0 +1,38 @@ +#include "tommath_private.h" +#ifdef BN_MP_READ_SIGNED_BIN_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* read signed bin, big endian, first byte is 0==positive or 1==negative */ +int mp_read_signed_bin(mp_int *a, const unsigned char *b, int c) +{ + int res; + + /* read magnitude */ + if ((res = mp_read_unsigned_bin(a, b + 1, c - 1)) != MP_OKAY) { + return res; + } + + /* first byte is 0 for positive, non-zero for negative */ + if (b[0] == (unsigned char)0) { + a->sign = MP_ZPOS; + } else { + a->sign = MP_NEG; + } + + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_read_unsigned_bin.c b/fsbl/lib/libtommath/bn_mp_read_unsigned_bin.c new file mode 100644 index 000000000..648762a69 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_read_unsigned_bin.c @@ -0,0 +1,52 @@ +#include "tommath_private.h" +#ifdef BN_MP_READ_UNSIGNED_BIN_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* reads a unsigned char array, assumes the msb is stored first [big endian] */ +int mp_read_unsigned_bin(mp_int *a, const unsigned char *b, int c) +{ + int res; + + /* make sure there are at least two digits */ + if (a->alloc < 2) { + if ((res = mp_grow(a, 2)) != MP_OKAY) { + return res; + } + } + + /* zero the int */ + mp_zero(a); + + /* read the bytes in */ + while (c-- > 0) { + if ((res = mp_mul_2d(a, 8, a)) != MP_OKAY) { + return res; + } + +#ifndef MP_8BIT + a->dp[0] |= *b++; + a->used += 1; +#else + a->dp[0] = (*b & MP_MASK); + a->dp[1] |= ((*b++ >> 7) & 1u); + a->used += 2; +#endif + } + mp_clamp(a); + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_reduce.c b/fsbl/lib/libtommath/bn_mp_reduce.c new file mode 100644 index 000000000..cbf8641d5 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_reduce.c @@ -0,0 +1,97 @@ +#include "tommath_private.h" +#ifdef BN_MP_REDUCE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* reduces x mod m, assumes 0 < x < m**2, mu is + * precomputed via mp_reduce_setup. + * From HAC pp.604 Algorithm 14.42 + */ +int mp_reduce(mp_int *x, const mp_int *m, const mp_int *mu) +{ + mp_int q; + int res, um = m->used; + + /* q = x */ + if ((res = mp_init_copy(&q, x)) != MP_OKAY) { + return res; + } + + /* q1 = x / b**(k-1) */ + mp_rshd(&q, um - 1); + + /* according to HAC this optimization is ok */ + if ((mp_digit)um > ((mp_digit)1 << (DIGIT_BIT - 1))) { + if ((res = mp_mul(&q, mu, &q)) != MP_OKAY) { + goto CLEANUP; + } + } else { +#ifdef BN_S_MP_MUL_HIGH_DIGS_C + if ((res = s_mp_mul_high_digs(&q, mu, &q, um)) != MP_OKAY) { + goto CLEANUP; + } +#elif defined(BN_FAST_S_MP_MUL_HIGH_DIGS_C) + if ((res = fast_s_mp_mul_high_digs(&q, mu, &q, um)) != MP_OKAY) { + goto CLEANUP; + } +#else + { + res = MP_VAL; + goto CLEANUP; + } +#endif + } + + /* q3 = q2 / b**(k+1) */ + mp_rshd(&q, um + 1); + + /* x = x mod b**(k+1), quick (no division) */ + if ((res = mp_mod_2d(x, DIGIT_BIT * (um + 1), x)) != MP_OKAY) { + goto CLEANUP; + } + + /* q = q * m mod b**(k+1), quick (no division) */ + if ((res = s_mp_mul_digs(&q, m, &q, um + 1)) != MP_OKAY) { + goto CLEANUP; + } + + /* x = x - q */ + if ((res = mp_sub(x, &q, x)) != MP_OKAY) { + goto CLEANUP; + } + + /* If x < 0, add b**(k+1) to it */ + if (mp_cmp_d(x, 0uL) == MP_LT) { + mp_set(&q, 1uL); + if ((res = mp_lshd(&q, um + 1)) != MP_OKAY) + goto CLEANUP; + if ((res = mp_add(x, &q, x)) != MP_OKAY) + goto CLEANUP; + } + + /* Back off if it's too big */ + while (mp_cmp(x, m) != MP_LT) { + if ((res = s_mp_sub(x, m, x)) != MP_OKAY) { + goto CLEANUP; + } + } + +CLEANUP: + mp_clear(&q); + + return res; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_reduce_2k.c b/fsbl/lib/libtommath/bn_mp_reduce_2k.c new file mode 100644 index 000000000..af673e63d --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_reduce_2k.c @@ -0,0 +1,60 @@ +#include "tommath_private.h" +#ifdef BN_MP_REDUCE_2K_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* reduces a modulo n where n is of the form 2**p - d */ +int mp_reduce_2k(mp_int *a, const mp_int *n, mp_digit d) +{ + mp_int q; + int p, res; + + if ((res = mp_init(&q)) != MP_OKAY) { + return res; + } + + p = mp_count_bits(n); +top: + /* q = a/2**p, a = a mod 2**p */ + if ((res = mp_div_2d(a, p, &q, a)) != MP_OKAY) { + goto LBL_ERR; + } + + if (d != 1u) { + /* q = q * d */ + if ((res = mp_mul_d(&q, d, &q)) != MP_OKAY) { + goto LBL_ERR; + } + } + + /* a = a + q */ + if ((res = s_mp_add(a, &q, a)) != MP_OKAY) { + goto LBL_ERR; + } + + if (mp_cmp_mag(a, n) != MP_LT) { + if ((res = s_mp_sub(a, n, a)) != MP_OKAY) { + goto LBL_ERR; + } + goto top; + } + +LBL_ERR: + mp_clear(&q); + return res; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_reduce_2k_l.c b/fsbl/lib/libtommath/bn_mp_reduce_2k_l.c new file mode 100644 index 000000000..afdc32199 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_reduce_2k_l.c @@ -0,0 +1,61 @@ +#include "tommath_private.h" +#ifdef BN_MP_REDUCE_2K_L_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* reduces a modulo n where n is of the form 2**p - d + This differs from reduce_2k since "d" can be larger + than a single digit. +*/ +int mp_reduce_2k_l(mp_int *a, const mp_int *n, const mp_int *d) +{ + mp_int q; + int p, res; + + if ((res = mp_init(&q)) != MP_OKAY) { + return res; + } + + p = mp_count_bits(n); +top: + /* q = a/2**p, a = a mod 2**p */ + if ((res = mp_div_2d(a, p, &q, a)) != MP_OKAY) { + goto LBL_ERR; + } + + /* q = q * d */ + if ((res = mp_mul(&q, d, &q)) != MP_OKAY) { + goto LBL_ERR; + } + + /* a = a + q */ + if ((res = s_mp_add(a, &q, a)) != MP_OKAY) { + goto LBL_ERR; + } + + if (mp_cmp_mag(a, n) != MP_LT) { + if ((res = s_mp_sub(a, n, a)) != MP_OKAY) { + goto LBL_ERR; + } + goto top; + } + +LBL_ERR: + mp_clear(&q); + return res; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_reduce_2k_setup.c b/fsbl/lib/libtommath/bn_mp_reduce_2k_setup.c new file mode 100644 index 000000000..166a96544 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_reduce_2k_setup.c @@ -0,0 +1,44 @@ +#include "tommath_private.h" +#ifdef BN_MP_REDUCE_2K_SETUP_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* determines the setup value */ +int mp_reduce_2k_setup(const mp_int *a, mp_digit *d) +{ + int res, p; + mp_int tmp; + + if ((res = mp_init(&tmp)) != MP_OKAY) { + return res; + } + + p = mp_count_bits(a); + if ((res = mp_2expt(&tmp, p)) != MP_OKAY) { + mp_clear(&tmp); + return res; + } + + if ((res = s_mp_sub(&tmp, a, &tmp)) != MP_OKAY) { + mp_clear(&tmp); + return res; + } + + *d = tmp.dp[0]; + mp_clear(&tmp); + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_reduce_2k_setup_l.c b/fsbl/lib/libtommath/bn_mp_reduce_2k_setup_l.c new file mode 100644 index 000000000..5584b4877 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_reduce_2k_setup_l.c @@ -0,0 +1,41 @@ +#include "tommath_private.h" +#ifdef BN_MP_REDUCE_2K_SETUP_L_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* determines the setup value */ +int mp_reduce_2k_setup_l(const mp_int *a, mp_int *d) +{ + int res; + mp_int tmp; + + if ((res = mp_init(&tmp)) != MP_OKAY) { + return res; + } + + if ((res = mp_2expt(&tmp, mp_count_bits(a))) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = s_mp_sub(&tmp, a, d)) != MP_OKAY) { + goto LBL_ERR; + } + +LBL_ERR: + mp_clear(&tmp); + return res; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_reduce_is_2k.c b/fsbl/lib/libtommath/bn_mp_reduce_is_2k.c new file mode 100644 index 000000000..8be985e9c --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_reduce_is_2k.c @@ -0,0 +1,49 @@ +#include "tommath_private.h" +#ifdef BN_MP_REDUCE_IS_2K_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* determines if mp_reduce_2k can be used */ +int mp_reduce_is_2k(const mp_int *a) +{ + int ix, iy, iw; + mp_digit iz; + + if (a->used == 0) { + return MP_NO; + } else if (a->used == 1) { + return MP_YES; + } else if (a->used > 1) { + iy = mp_count_bits(a); + iz = 1; + iw = 1; + + /* Test every bit from the second digit up, must be 1 */ + for (ix = DIGIT_BIT; ix < iy; ix++) { + if ((a->dp[iw] & iz) == 0u) { + return MP_NO; + } + iz <<= 1; + if (iz > (mp_digit)MP_MASK) { + ++iw; + iz = 1; + } + } + } + return MP_YES; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_reduce_is_2k_l.c b/fsbl/lib/libtommath/bn_mp_reduce_is_2k_l.c new file mode 100644 index 000000000..da4aeda25 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_reduce_is_2k_l.c @@ -0,0 +1,41 @@ +#include "tommath_private.h" +#ifdef BN_MP_REDUCE_IS_2K_L_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* determines if reduce_2k_l can be used */ +int mp_reduce_is_2k_l(const mp_int *a) +{ + int ix, iy; + + if (a->used == 0) { + return MP_NO; + } else if (a->used == 1) { + return MP_YES; + } else if (a->used > 1) { + /* if more than half of the digits are -1 we're sold */ + for (iy = ix = 0; ix < a->used; ix++) { + if (a->dp[ix] == MP_MASK) { + ++iy; + } + } + return (iy >= (a->used/2)) ? MP_YES : MP_NO; + + } + return MP_NO; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_reduce_setup.c b/fsbl/lib/libtommath/bn_mp_reduce_setup.c new file mode 100644 index 000000000..134d8a371 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_reduce_setup.c @@ -0,0 +1,31 @@ +#include "tommath_private.h" +#ifdef BN_MP_REDUCE_SETUP_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* pre-calculate the value required for Barrett reduction + * For a given modulus "b" it calulates the value required in "a" + */ +int mp_reduce_setup(mp_int *a, const mp_int *b) +{ + int res; + + if ((res = mp_2expt(a, b->used * 2 * DIGIT_BIT)) != MP_OKAY) { + return res; + } + return mp_div(a, b, a, NULL); +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_rshd.c b/fsbl/lib/libtommath/bn_mp_rshd.c new file mode 100644 index 000000000..61ab8c04f --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_rshd.c @@ -0,0 +1,69 @@ +#include "tommath_private.h" +#ifdef BN_MP_RSHD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* shift right a certain amount of digits */ +void mp_rshd(mp_int *a, int b) +{ + int x; + + /* if b <= 0 then ignore it */ + if (b <= 0) { + return; + } + + /* if b > used then simply zero it and return */ + if (a->used <= b) { + mp_zero(a); + return; + } + + { + mp_digit *bottom, *top; + + /* shift the digits down */ + + /* bottom */ + bottom = a->dp; + + /* top [offset into digits] */ + top = a->dp + b; + + /* this is implemented as a sliding window where + * the window is b-digits long and digits from + * the top of the window are copied to the bottom + * + * e.g. + + b-2 | b-1 | b0 | b1 | b2 | ... | bb | ----> + /\ | ----> + \-------------------/ ----> + */ + for (x = 0; x < (a->used - b); x++) { + *bottom++ = *top++; + } + + /* zero the top digits */ + for (; x < a->used; x++) { + *bottom++ = 0; + } + } + + /* remove excess digits */ + a->used -= b; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_set.c b/fsbl/lib/libtommath/bn_mp_set.c new file mode 100644 index 000000000..590a1008c --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_set.c @@ -0,0 +1,26 @@ +#include "tommath_private.h" +#ifdef BN_MP_SET_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* set to a digit */ +void mp_set(mp_int *a, mp_digit b) +{ + mp_zero(a); + a->dp[0] = b & MP_MASK; + a->used = (a->dp[0] != 0u) ? 1 : 0; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_set_double.c b/fsbl/lib/libtommath/bn_mp_set_double.c new file mode 100644 index 000000000..76f6293f7 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_set_double.c @@ -0,0 +1,62 @@ +#include "tommath_private.h" +#ifdef BN_MP_SET_DOUBLE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +#if defined(__STDC_IEC_559__) || defined(__GCC_IEC_559) +int mp_set_double(mp_int *a, double b) +{ + uint64_t frac; + int exp, res; + union { + double dbl; + uint64_t bits; + } cast; + cast.dbl = b; + + exp = (int)((unsigned)(cast.bits >> 52) & 0x7FFU); + frac = (cast.bits & ((1ULL << 52) - 1ULL)) | (1ULL << 52); + + if (exp == 0x7FF) { /* +-inf, NaN */ + return MP_VAL; + } + exp -= 1023 + 52; + + res = mp_set_long_long(a, frac); + if (res != MP_OKAY) { + return res; + } + + res = (exp < 0) ? mp_div_2d(a, -exp, a, NULL) : mp_mul_2d(a, exp, a); + if (res != MP_OKAY) { + return res; + } + + if (((cast.bits >> 63) != 0ULL) && (mp_iszero(a) == MP_NO)) { + SIGN(a) = MP_NEG; + } + + return MP_OKAY; +} +#else +/* pragma message() not supported by several compilers (in mostly older but still used versions) */ +# ifdef _MSC_VER +# pragma message("mp_set_double implementation is only available on platforms with IEEE754 floating point format") +# else +# warning "mp_set_double implementation is only available on platforms with IEEE754 floating point format" +# endif +#endif +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_set_int.c b/fsbl/lib/libtommath/bn_mp_set_int.c new file mode 100644 index 000000000..4f01e25b4 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_set_int.c @@ -0,0 +1,45 @@ +#include "tommath_private.h" +#ifdef BN_MP_SET_INT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* set a 32-bit const */ +int mp_set_int(mp_int *a, unsigned long b) +{ + int x, res; + + mp_zero(a); + + /* set four bits at a time */ + for (x = 0; x < 8; x++) { + /* shift the number up four bits */ + if ((res = mp_mul_2d(a, 4, a)) != MP_OKAY) { + return res; + } + + /* OR in the top four bits of the source */ + a->dp[0] |= (mp_digit)(b >> 28) & 15uL; + + /* shift the source up to the next four bits */ + b <<= 4; + + /* ensure that digits are not clamped off */ + a->used += 1; + } + mp_clamp(a); + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_set_long.c b/fsbl/lib/libtommath/bn_mp_set_long.c new file mode 100644 index 000000000..35be8e755 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_set_long.c @@ -0,0 +1,21 @@ +#include "tommath_private.h" +#ifdef BN_MP_SET_LONG_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* set a platform dependent unsigned long int */ +MP_SET_XLONG(mp_set_long, unsigned long) +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_set_long_long.c b/fsbl/lib/libtommath/bn_mp_set_long_long.c new file mode 100644 index 000000000..850f33c41 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_set_long_long.c @@ -0,0 +1,21 @@ +#include "tommath_private.h" +#ifdef BN_MP_SET_LONG_LONG_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* set a platform dependent unsigned long long int */ +MP_SET_XLONG(mp_set_long_long, unsigned long long) +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_shrink.c b/fsbl/lib/libtommath/bn_mp_shrink.c new file mode 100644 index 000000000..ff7905f27 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_shrink.c @@ -0,0 +1,38 @@ +#include "tommath_private.h" +#ifdef BN_MP_SHRINK_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* shrink a bignum */ +int mp_shrink(mp_int *a) +{ + mp_digit *tmp; + int used = 1; + + if (a->used > 0) { + used = a->used; + } + + if (a->alloc != used) { + if ((tmp = OPT_CAST(mp_digit) XREALLOC(a->dp, sizeof(mp_digit) * (size_t)used)) == NULL) { + return MP_MEM; + } + a->dp = tmp; + a->alloc = used; + } + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_signed_bin_size.c b/fsbl/lib/libtommath/bn_mp_signed_bin_size.c new file mode 100644 index 000000000..89cd43ee4 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_signed_bin_size.c @@ -0,0 +1,24 @@ +#include "tommath_private.h" +#ifdef BN_MP_SIGNED_BIN_SIZE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* get the size for an signed equivalent */ +int mp_signed_bin_size(const mp_int *a) +{ + return 1 + mp_unsigned_bin_size(a); +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_sqr.c b/fsbl/lib/libtommath/bn_mp_sqr.c new file mode 100644 index 000000000..63bb2e2ea --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_sqr.c @@ -0,0 +1,56 @@ +#include "tommath_private.h" +#ifdef BN_MP_SQR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* computes b = a*a */ +int mp_sqr(const mp_int *a, mp_int *b) +{ + int res; + +#ifdef BN_MP_TOOM_SQR_C + /* use Toom-Cook? */ + if (a->used >= TOOM_SQR_CUTOFF) { + res = mp_toom_sqr(a, b); + /* Karatsuba? */ + } else +#endif +#ifdef BN_MP_KARATSUBA_SQR_C + if (a->used >= KARATSUBA_SQR_CUTOFF) { + res = mp_karatsuba_sqr(a, b); + } else +#endif + { +#ifdef BN_FAST_S_MP_SQR_C + /* can we use the fast comba multiplier? */ + if ((((a->used * 2) + 1) < (int)MP_WARRAY) && + (a->used < + (int)(1u << (((sizeof(mp_word) * (size_t)CHAR_BIT) - (2u * (size_t)DIGIT_BIT)) - 1u)))) { + res = fast_s_mp_sqr(a, b); + } else +#endif + { +#ifdef BN_S_MP_SQR_C + res = s_mp_sqr(a, b); +#else + res = MP_VAL; +#endif + } + } + b->sign = MP_ZPOS; + return res; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_sqrmod.c b/fsbl/lib/libtommath/bn_mp_sqrmod.c new file mode 100644 index 000000000..953829e6a --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_sqrmod.c @@ -0,0 +1,37 @@ +#include "tommath_private.h" +#ifdef BN_MP_SQRMOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* c = a * a (mod b) */ +int mp_sqrmod(const mp_int *a, const mp_int *b, mp_int *c) +{ + int res; + mp_int t; + + if ((res = mp_init(&t)) != MP_OKAY) { + return res; + } + + if ((res = mp_sqr(a, &t)) != MP_OKAY) { + mp_clear(&t); + return res; + } + res = mp_mod(&t, b, c); + mp_clear(&t); + return res; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_sqrt.c b/fsbl/lib/libtommath/bn_mp_sqrt.c new file mode 100644 index 000000000..55b5c7922 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_sqrt.c @@ -0,0 +1,80 @@ +#include "tommath_private.h" +#ifdef BN_MP_SQRT_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* this function is less generic than mp_n_root, simpler and faster */ +int mp_sqrt(const mp_int *arg, mp_int *ret) +{ + int res; + mp_int t1, t2; + + /* must be positive */ + if (arg->sign == MP_NEG) { + return MP_VAL; + } + + /* easy out */ + if (mp_iszero(arg) == MP_YES) { + mp_zero(ret); + return MP_OKAY; + } + + if ((res = mp_init_copy(&t1, arg)) != MP_OKAY) { + return res; + } + + if ((res = mp_init(&t2)) != MP_OKAY) { + goto E2; + } + + /* First approx. (not very bad for large arg) */ + mp_rshd(&t1, t1.used/2); + + /* t1 > 0 */ + if ((res = mp_div(arg, &t1, &t2, NULL)) != MP_OKAY) { + goto E1; + } + if ((res = mp_add(&t1, &t2, &t1)) != MP_OKAY) { + goto E1; + } + if ((res = mp_div_2(&t1, &t1)) != MP_OKAY) { + goto E1; + } + /* And now t1 > sqrt(arg) */ + do { + if ((res = mp_div(arg, &t1, &t2, NULL)) != MP_OKAY) { + goto E1; + } + if ((res = mp_add(&t1, &t2, &t1)) != MP_OKAY) { + goto E1; + } + if ((res = mp_div_2(&t1, &t1)) != MP_OKAY) { + goto E1; + } + /* t1 >= sqrt(arg) >= t2 at this point */ + } while (mp_cmp_mag(&t1, &t2) == MP_GT); + + mp_exch(&t1, ret); + +E1: + mp_clear(&t2); +E2: + mp_clear(&t1); + return res; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_sqrtmod_prime.c b/fsbl/lib/libtommath/bn_mp_sqrtmod_prime.c new file mode 100644 index 000000000..cc4da3be8 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_sqrtmod_prime.c @@ -0,0 +1,131 @@ +#include "tommath_private.h" +#ifdef BN_MP_SQRTMOD_PRIME_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* Tonelli-Shanks algorithm + * https://en.wikipedia.org/wiki/Tonelli%E2%80%93Shanks_algorithm + * https://gmplib.org/list-archives/gmp-discuss/2013-April/005300.html + * + */ + +int mp_sqrtmod_prime(const mp_int *n, const mp_int *prime, mp_int *ret) +{ + int res, legendre; + mp_int t1, C, Q, S, Z, M, T, R, two; + mp_digit i; + + /* first handle the simple cases */ + if (mp_cmp_d(n, 0uL) == MP_EQ) { + mp_zero(ret); + return MP_OKAY; + } + if (mp_cmp_d(prime, 2uL) == MP_EQ) return MP_VAL; /* prime must be odd */ + if ((res = mp_jacobi(n, prime, &legendre)) != MP_OKAY) return res; + if (legendre == -1) return MP_VAL; /* quadratic non-residue mod prime */ + + if ((res = mp_init_multi(&t1, &C, &Q, &S, &Z, &M, &T, &R, &two, NULL)) != MP_OKAY) { + return res; + } + + /* SPECIAL CASE: if prime mod 4 == 3 + * compute directly: res = n^(prime+1)/4 mod prime + * Handbook of Applied Cryptography algorithm 3.36 + */ + if ((res = mp_mod_d(prime, 4uL, &i)) != MP_OKAY) goto cleanup; + if (i == 3u) { + if ((res = mp_add_d(prime, 1uL, &t1)) != MP_OKAY) goto cleanup; + if ((res = mp_div_2(&t1, &t1)) != MP_OKAY) goto cleanup; + if ((res = mp_div_2(&t1, &t1)) != MP_OKAY) goto cleanup; + if ((res = mp_exptmod(n, &t1, prime, ret)) != MP_OKAY) goto cleanup; + res = MP_OKAY; + goto cleanup; + } + + /* NOW: Tonelli-Shanks algorithm */ + + /* factor out powers of 2 from prime-1, defining Q and S as: prime-1 = Q*2^S */ + if ((res = mp_copy(prime, &Q)) != MP_OKAY) goto cleanup; + if ((res = mp_sub_d(&Q, 1uL, &Q)) != MP_OKAY) goto cleanup; + /* Q = prime - 1 */ + mp_zero(&S); + /* S = 0 */ + while (mp_iseven(&Q) != MP_NO) { + if ((res = mp_div_2(&Q, &Q)) != MP_OKAY) goto cleanup; + /* Q = Q / 2 */ + if ((res = mp_add_d(&S, 1uL, &S)) != MP_OKAY) goto cleanup; + /* S = S + 1 */ + } + + /* find a Z such that the Legendre symbol (Z|prime) == -1 */ + if ((res = mp_set_int(&Z, 2uL)) != MP_OKAY) goto cleanup; + /* Z = 2 */ + while (1) { + if ((res = mp_jacobi(&Z, prime, &legendre)) != MP_OKAY) goto cleanup; + if (legendre == -1) break; + if ((res = mp_add_d(&Z, 1uL, &Z)) != MP_OKAY) goto cleanup; + /* Z = Z + 1 */ + } + + if ((res = mp_exptmod(&Z, &Q, prime, &C)) != MP_OKAY) goto cleanup; + /* C = Z ^ Q mod prime */ + if ((res = mp_add_d(&Q, 1uL, &t1)) != MP_OKAY) goto cleanup; + if ((res = mp_div_2(&t1, &t1)) != MP_OKAY) goto cleanup; + /* t1 = (Q + 1) / 2 */ + if ((res = mp_exptmod(n, &t1, prime, &R)) != MP_OKAY) goto cleanup; + /* R = n ^ ((Q + 1) / 2) mod prime */ + if ((res = mp_exptmod(n, &Q, prime, &T)) != MP_OKAY) goto cleanup; + /* T = n ^ Q mod prime */ + if ((res = mp_copy(&S, &M)) != MP_OKAY) goto cleanup; + /* M = S */ + if ((res = mp_set_int(&two, 2uL)) != MP_OKAY) goto cleanup; + + res = MP_VAL; + while (1) { + if ((res = mp_copy(&T, &t1)) != MP_OKAY) goto cleanup; + i = 0; + while (1) { + if (mp_cmp_d(&t1, 1uL) == MP_EQ) break; + if ((res = mp_exptmod(&t1, &two, prime, &t1)) != MP_OKAY) goto cleanup; + i++; + } + if (i == 0u) { + if ((res = mp_copy(&R, ret)) != MP_OKAY) goto cleanup; + res = MP_OKAY; + goto cleanup; + } + if ((res = mp_sub_d(&M, i, &t1)) != MP_OKAY) goto cleanup; + if ((res = mp_sub_d(&t1, 1uL, &t1)) != MP_OKAY) goto cleanup; + if ((res = mp_exptmod(&two, &t1, prime, &t1)) != MP_OKAY) goto cleanup; + /* t1 = 2 ^ (M - i - 1) */ + if ((res = mp_exptmod(&C, &t1, prime, &t1)) != MP_OKAY) goto cleanup; + /* t1 = C ^ (2 ^ (M - i - 1)) mod prime */ + if ((res = mp_sqrmod(&t1, prime, &C)) != MP_OKAY) goto cleanup; + /* C = (t1 * t1) mod prime */ + if ((res = mp_mulmod(&R, &t1, prime, &R)) != MP_OKAY) goto cleanup; + /* R = (R * t1) mod prime */ + if ((res = mp_mulmod(&T, &C, prime, &T)) != MP_OKAY) goto cleanup; + /* T = (T * C) mod prime */ + mp_set(&M, i); + /* M = i */ + } + +cleanup: + mp_clear_multi(&t1, &C, &Q, &S, &Z, &M, &T, &R, &two, NULL); + return res; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_sub.c b/fsbl/lib/libtommath/bn_mp_sub.c new file mode 100644 index 000000000..df31951ab --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_sub.c @@ -0,0 +1,55 @@ +#include "tommath_private.h" +#ifdef BN_MP_SUB_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* high level subtraction (handles signs) */ +int mp_sub(const mp_int *a, const mp_int *b, mp_int *c) +{ + int sa, sb, res; + + sa = a->sign; + sb = b->sign; + + if (sa != sb) { + /* subtract a negative from a positive, OR */ + /* subtract a positive from a negative. */ + /* In either case, ADD their magnitudes, */ + /* and use the sign of the first number. */ + c->sign = sa; + res = s_mp_add(a, b, c); + } else { + /* subtract a positive from a positive, OR */ + /* subtract a negative from a negative. */ + /* First, take the difference between their */ + /* magnitudes, then... */ + if (mp_cmp_mag(a, b) != MP_LT) { + /* Copy the sign from the first */ + c->sign = sa; + /* The first has a larger or equal magnitude */ + res = s_mp_sub(a, b, c); + } else { + /* The result has the *opposite* sign from */ + /* the first number. */ + c->sign = (sa == MP_ZPOS) ? MP_NEG : MP_ZPOS; + /* The second has a larger magnitude */ + res = s_mp_sub(b, a, c); + } + } + return res; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_sub_d.c b/fsbl/lib/libtommath/bn_mp_sub_d.c new file mode 100644 index 000000000..d8ac250b9 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_sub_d.c @@ -0,0 +1,90 @@ +#include "tommath_private.h" +#ifdef BN_MP_SUB_D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* single digit subtraction */ +int mp_sub_d(const mp_int *a, mp_digit b, mp_int *c) +{ + mp_digit *tmpa, *tmpc, mu; + int res, ix, oldused; + + /* grow c as required */ + if (c->alloc < (a->used + 1)) { + if ((res = mp_grow(c, a->used + 1)) != MP_OKAY) { + return res; + } + } + + /* if a is negative just do an unsigned + * addition [with fudged signs] + */ + if (a->sign == MP_NEG) { + mp_int a_ = *a; + a_.sign = MP_ZPOS; + res = mp_add_d(&a_, b, c); + c->sign = MP_NEG; + + /* clamp */ + mp_clamp(c); + + return res; + } + + /* setup regs */ + oldused = c->used; + tmpa = a->dp; + tmpc = c->dp; + + /* if a <= b simply fix the single digit */ + if (((a->used == 1) && (a->dp[0] <= b)) || (a->used == 0)) { + if (a->used == 1) { + *tmpc++ = b - *tmpa; + } else { + *tmpc++ = b; + } + ix = 1; + + /* negative/1digit */ + c->sign = MP_NEG; + c->used = 1; + } else { + /* positive/size */ + c->sign = MP_ZPOS; + c->used = a->used; + + /* subtract first digit */ + *tmpc = *tmpa++ - b; + mu = *tmpc >> ((sizeof(mp_digit) * (size_t)CHAR_BIT) - 1u); + *tmpc++ &= MP_MASK; + + /* handle rest of the digits */ + for (ix = 1; ix < a->used; ix++) { + *tmpc = *tmpa++ - mu; + mu = *tmpc >> ((sizeof(mp_digit) * (size_t)CHAR_BIT) - 1u); + *tmpc++ &= MP_MASK; + } + } + + /* zero excess digits */ + while (ix++ < oldused) { + *tmpc++ = 0; + } + mp_clamp(c); + return MP_OKAY; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_submod.c b/fsbl/lib/libtommath/bn_mp_submod.c new file mode 100644 index 000000000..ba9ee6f4e --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_submod.c @@ -0,0 +1,38 @@ +#include "tommath_private.h" +#ifdef BN_MP_SUBMOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* d = a - b (mod c) */ +int mp_submod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d) +{ + int res; + mp_int t; + + + if ((res = mp_init(&t)) != MP_OKAY) { + return res; + } + + if ((res = mp_sub(a, b, &t)) != MP_OKAY) { + mp_clear(&t); + return res; + } + res = mp_mod(&t, c, d); + mp_clear(&t); + return res; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_tc_and.c b/fsbl/lib/libtommath/bn_mp_tc_and.c new file mode 100644 index 000000000..9834dc686 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_tc_and.c @@ -0,0 +1,90 @@ +#include "tommath_private.h" +#ifdef BN_MP_TC_AND_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* two complement and */ +int mp_tc_and(const mp_int *a, const mp_int *b, mp_int *c) +{ + int res = MP_OKAY, bits, abits, bbits; + int as = mp_isneg(a), bs = mp_isneg(b); + mp_int *mx = NULL, _mx, acpy, bcpy; + + if ((as != MP_NO) || (bs != MP_NO)) { + abits = mp_count_bits(a); + bbits = mp_count_bits(b); + bits = MAX(abits, bbits); + res = mp_init_set_int(&_mx, 1uL); + if (res != MP_OKAY) { + goto end; + } + + mx = &_mx; + res = mp_mul_2d(mx, bits + 1, mx); + if (res != MP_OKAY) { + goto end; + } + + if (as != MP_NO) { + res = mp_init(&acpy); + if (res != MP_OKAY) { + goto end; + } + + res = mp_add(mx, a, &acpy); + if (res != MP_OKAY) { + mp_clear(&acpy); + goto end; + } + a = &acpy; + } + if (bs != MP_NO) { + res = mp_init(&bcpy); + if (res != MP_OKAY) { + goto end; + } + + res = mp_add(mx, b, &bcpy); + if (res != MP_OKAY) { + mp_clear(&bcpy); + goto end; + } + b = &bcpy; + } + } + + res = mp_and(a, b, c); + + if ((as != MP_NO) && (bs != MP_NO) && (res == MP_OKAY)) { + res = mp_sub(c, mx, c); + } + +end: + if (a == &acpy) { + mp_clear(&acpy); + } + + if (b == &bcpy) { + mp_clear(&bcpy); + } + + if (mx == &_mx) { + mp_clear(mx); + } + + return res; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_tc_div_2d.c b/fsbl/lib/libtommath/bn_mp_tc_div_2d.c new file mode 100644 index 000000000..4ff0acfce --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_tc_div_2d.c @@ -0,0 +1,35 @@ +#include "tommath_private.h" +#ifdef BN_MP_TC_DIV_2D_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* two complement right shift */ +int mp_tc_div_2d(const mp_int *a, int b, mp_int *c) +{ + int res; + if (mp_isneg(a) == MP_NO) { + return mp_div_2d(a, b, c, NULL); + } + + res = mp_add_d(a, 1uL, c); + if (res != MP_OKAY) { + return res; + } + + res = mp_div_2d(c, b, c, NULL); + return (res == MP_OKAY) ? mp_sub_d(c, 1uL, c) : res; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_tc_or.c b/fsbl/lib/libtommath/bn_mp_tc_or.c new file mode 100644 index 000000000..09414686f --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_tc_or.c @@ -0,0 +1,90 @@ +#include "tommath_private.h" +#ifdef BN_MP_TC_OR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* two complement or */ +int mp_tc_or(const mp_int *a, const mp_int *b, mp_int *c) +{ + int res = MP_OKAY, bits, abits, bbits; + int as = mp_isneg(a), bs = mp_isneg(b); + mp_int *mx = NULL, _mx, acpy, bcpy; + + if ((as != MP_NO) || (bs != MP_NO)) { + abits = mp_count_bits(a); + bbits = mp_count_bits(b); + bits = MAX(abits, bbits); + res = mp_init_set_int(&_mx, 1uL); + if (res != MP_OKAY) { + goto end; + } + + mx = &_mx; + res = mp_mul_2d(mx, bits + 1, mx); + if (res != MP_OKAY) { + goto end; + } + + if (as != MP_NO) { + res = mp_init(&acpy); + if (res != MP_OKAY) { + goto end; + } + + res = mp_add(mx, a, &acpy); + if (res != MP_OKAY) { + mp_clear(&acpy); + goto end; + } + a = &acpy; + } + if (bs != MP_NO) { + res = mp_init(&bcpy); + if (res != MP_OKAY) { + goto end; + } + + res = mp_add(mx, b, &bcpy); + if (res != MP_OKAY) { + mp_clear(&bcpy); + goto end; + } + b = &bcpy; + } + } + + res = mp_or(a, b, c); + + if (((as != MP_NO) || (bs != MP_NO)) && (res == MP_OKAY)) { + res = mp_sub(c, mx, c); + } + +end: + if (a == &acpy) { + mp_clear(&acpy); + } + + if (b == &bcpy) { + mp_clear(&bcpy); + } + + if (mx == &_mx) { + mp_clear(mx); + } + + return res; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_tc_xor.c b/fsbl/lib/libtommath/bn_mp_tc_xor.c new file mode 100644 index 000000000..cdb1d4000 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_tc_xor.c @@ -0,0 +1,90 @@ +#include "tommath_private.h" +#ifdef BN_MP_TC_XOR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* two complement xor */ +int mp_tc_xor(const mp_int *a, const mp_int *b, mp_int *c) +{ + int res = MP_OKAY, bits, abits, bbits; + int as = mp_isneg(a), bs = mp_isneg(b); + mp_int *mx = NULL, _mx, acpy, bcpy; + + if ((as != MP_NO) || (bs != MP_NO)) { + abits = mp_count_bits(a); + bbits = mp_count_bits(b); + bits = MAX(abits, bbits); + res = mp_init_set_int(&_mx, 1uL); + if (res != MP_OKAY) { + goto end; + } + + mx = &_mx; + res = mp_mul_2d(mx, bits + 1, mx); + if (res != MP_OKAY) { + goto end; + } + + if (as != MP_NO) { + res = mp_init(&acpy); + if (res != MP_OKAY) { + goto end; + } + + res = mp_add(mx, a, &acpy); + if (res != MP_OKAY) { + mp_clear(&acpy); + goto end; + } + a = &acpy; + } + if (bs != MP_NO) { + res = mp_init(&bcpy); + if (res != MP_OKAY) { + goto end; + } + + res = mp_add(mx, b, &bcpy); + if (res != MP_OKAY) { + mp_clear(&bcpy); + goto end; + } + b = &bcpy; + } + } + + res = mp_xor(a, b, c); + + if ((as != bs) && (res == MP_OKAY)) { + res = mp_sub(c, mx, c); + } + +end: + if (a == &acpy) { + mp_clear(&acpy); + } + + if (b == &bcpy) { + mp_clear(&bcpy); + } + + if (mx == &_mx) { + mp_clear(mx); + } + + return res; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_to_signed_bin.c b/fsbl/lib/libtommath/bn_mp_to_signed_bin.c new file mode 100644 index 000000000..04e3b84d8 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_to_signed_bin.c @@ -0,0 +1,30 @@ +#include "tommath_private.h" +#ifdef BN_MP_TO_SIGNED_BIN_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* store in signed [big endian] format */ +int mp_to_signed_bin(const mp_int *a, unsigned char *b) +{ + int res; + + if ((res = mp_to_unsigned_bin(a, b + 1)) != MP_OKAY) { + return res; + } + b[0] = (a->sign == MP_ZPOS) ? (unsigned char)0 : (unsigned char)1; + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_to_signed_bin_n.c b/fsbl/lib/libtommath/bn_mp_to_signed_bin_n.c new file mode 100644 index 000000000..d13fede68 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_to_signed_bin_n.c @@ -0,0 +1,28 @@ +#include "tommath_private.h" +#ifdef BN_MP_TO_SIGNED_BIN_N_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* store in signed [big endian] format */ +int mp_to_signed_bin_n(const mp_int *a, unsigned char *b, unsigned long *outlen) +{ + if (*outlen < (unsigned long)mp_signed_bin_size(a)) { + return MP_VAL; + } + *outlen = (unsigned long)mp_signed_bin_size(a); + return mp_to_signed_bin(a, b); +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_to_unsigned_bin.c b/fsbl/lib/libtommath/bn_mp_to_unsigned_bin.c new file mode 100644 index 000000000..ab5751467 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_to_unsigned_bin.c @@ -0,0 +1,45 @@ +#include "tommath_private.h" +#ifdef BN_MP_TO_UNSIGNED_BIN_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* store in unsigned [big endian] format */ +int mp_to_unsigned_bin(const mp_int *a, unsigned char *b) +{ + int x, res; + mp_int t; + + if ((res = mp_init_copy(&t, a)) != MP_OKAY) { + return res; + } + + x = 0; + while (mp_iszero(&t) == MP_NO) { +#ifndef MP_8BIT + b[x++] = (unsigned char)(t.dp[0] & 255u); +#else + b[x++] = (unsigned char)(t.dp[0] | ((t.dp[1] & 1u) << 7)); +#endif + if ((res = mp_div_2d(&t, 8, &t, NULL)) != MP_OKAY) { + mp_clear(&t); + return res; + } + } + bn_reverse(b, x); + mp_clear(&t); + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_to_unsigned_bin_n.c b/fsbl/lib/libtommath/bn_mp_to_unsigned_bin_n.c new file mode 100644 index 000000000..c53e7fb62 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_to_unsigned_bin_n.c @@ -0,0 +1,28 @@ +#include "tommath_private.h" +#ifdef BN_MP_TO_UNSIGNED_BIN_N_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* store in unsigned [big endian] format */ +int mp_to_unsigned_bin_n(const mp_int *a, unsigned char *b, unsigned long *outlen) +{ + if (*outlen < (unsigned long)mp_unsigned_bin_size(a)) { + return MP_VAL; + } + *outlen = (unsigned long)mp_unsigned_bin_size(a); + return mp_to_unsigned_bin(a, b); +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_toom_mul.c b/fsbl/lib/libtommath/bn_mp_toom_mul.c new file mode 100644 index 000000000..32b5e43a8 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_toom_mul.c @@ -0,0 +1,283 @@ +#include "tommath_private.h" +#ifdef BN_MP_TOOM_MUL_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* multiplication using the Toom-Cook 3-way algorithm + * + * Much more complicated than Karatsuba but has a lower + * asymptotic running time of O(N**1.464). This algorithm is + * only particularly useful on VERY large inputs + * (we're talking 1000s of digits here...). +*/ +int mp_toom_mul(const mp_int *a, const mp_int *b, mp_int *c) +{ + mp_int w0, w1, w2, w3, w4, tmp1, tmp2, a0, a1, a2, b0, b1, b2; + int res, B; + + /* init temps */ + if ((res = mp_init_multi(&w0, &w1, &w2, &w3, &w4, + &a0, &a1, &a2, &b0, &b1, + &b2, &tmp1, &tmp2, NULL)) != MP_OKAY) { + return res; + } + + /* B */ + B = MIN(a->used, b->used) / 3; + + /* a = a2 * B**2 + a1 * B + a0 */ + if ((res = mp_mod_2d(a, DIGIT_BIT * B, &a0)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_copy(a, &a1)) != MP_OKAY) { + goto LBL_ERR; + } + mp_rshd(&a1, B); + if ((res = mp_mod_2d(&a1, DIGIT_BIT * B, &a1)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_copy(a, &a2)) != MP_OKAY) { + goto LBL_ERR; + } + mp_rshd(&a2, B*2); + + /* b = b2 * B**2 + b1 * B + b0 */ + if ((res = mp_mod_2d(b, DIGIT_BIT * B, &b0)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_copy(b, &b1)) != MP_OKAY) { + goto LBL_ERR; + } + mp_rshd(&b1, B); + (void)mp_mod_2d(&b1, DIGIT_BIT * B, &b1); + + if ((res = mp_copy(b, &b2)) != MP_OKAY) { + goto LBL_ERR; + } + mp_rshd(&b2, B*2); + + /* w0 = a0*b0 */ + if ((res = mp_mul(&a0, &b0, &w0)) != MP_OKAY) { + goto LBL_ERR; + } + + /* w4 = a2 * b2 */ + if ((res = mp_mul(&a2, &b2, &w4)) != MP_OKAY) { + goto LBL_ERR; + } + + /* w1 = (a2 + 2(a1 + 2a0))(b2 + 2(b1 + 2b0)) */ + if ((res = mp_mul_2(&a0, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_add(&tmp1, &a1, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_mul_2(&tmp1, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_add(&tmp1, &a2, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_mul_2(&b0, &tmp2)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_add(&tmp2, &b1, &tmp2)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_mul_2(&tmp2, &tmp2)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_add(&tmp2, &b2, &tmp2)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_mul(&tmp1, &tmp2, &w1)) != MP_OKAY) { + goto LBL_ERR; + } + + /* w3 = (a0 + 2(a1 + 2a2))(b0 + 2(b1 + 2b2)) */ + if ((res = mp_mul_2(&a2, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_add(&tmp1, &a1, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_mul_2(&tmp1, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_mul_2(&b2, &tmp2)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_add(&tmp2, &b1, &tmp2)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_mul_2(&tmp2, &tmp2)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_add(&tmp2, &b0, &tmp2)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_mul(&tmp1, &tmp2, &w3)) != MP_OKAY) { + goto LBL_ERR; + } + + + /* w2 = (a2 + a1 + a0)(b2 + b1 + b0) */ + if ((res = mp_add(&a2, &a1, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_add(&b2, &b1, &tmp2)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_add(&tmp2, &b0, &tmp2)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_mul(&tmp1, &tmp2, &w2)) != MP_OKAY) { + goto LBL_ERR; + } + + /* now solve the matrix + + 0 0 0 0 1 + 1 2 4 8 16 + 1 1 1 1 1 + 16 8 4 2 1 + 1 0 0 0 0 + + using 12 subtractions, 4 shifts, + 2 small divisions and 1 small multiplication + */ + + /* r1 - r4 */ + if ((res = mp_sub(&w1, &w4, &w1)) != MP_OKAY) { + goto LBL_ERR; + } + /* r3 - r0 */ + if ((res = mp_sub(&w3, &w0, &w3)) != MP_OKAY) { + goto LBL_ERR; + } + /* r1/2 */ + if ((res = mp_div_2(&w1, &w1)) != MP_OKAY) { + goto LBL_ERR; + } + /* r3/2 */ + if ((res = mp_div_2(&w3, &w3)) != MP_OKAY) { + goto LBL_ERR; + } + /* r2 - r0 - r4 */ + if ((res = mp_sub(&w2, &w0, &w2)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_sub(&w2, &w4, &w2)) != MP_OKAY) { + goto LBL_ERR; + } + /* r1 - r2 */ + if ((res = mp_sub(&w1, &w2, &w1)) != MP_OKAY) { + goto LBL_ERR; + } + /* r3 - r2 */ + if ((res = mp_sub(&w3, &w2, &w3)) != MP_OKAY) { + goto LBL_ERR; + } + /* r1 - 8r0 */ + if ((res = mp_mul_2d(&w0, 3, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_sub(&w1, &tmp1, &w1)) != MP_OKAY) { + goto LBL_ERR; + } + /* r3 - 8r4 */ + if ((res = mp_mul_2d(&w4, 3, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_sub(&w3, &tmp1, &w3)) != MP_OKAY) { + goto LBL_ERR; + } + /* 3r2 - r1 - r3 */ + if ((res = mp_mul_d(&w2, 3uL, &w2)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_sub(&w2, &w1, &w2)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_sub(&w2, &w3, &w2)) != MP_OKAY) { + goto LBL_ERR; + } + /* r1 - r2 */ + if ((res = mp_sub(&w1, &w2, &w1)) != MP_OKAY) { + goto LBL_ERR; + } + /* r3 - r2 */ + if ((res = mp_sub(&w3, &w2, &w3)) != MP_OKAY) { + goto LBL_ERR; + } + /* r1/3 */ + if ((res = mp_div_3(&w1, &w1, NULL)) != MP_OKAY) { + goto LBL_ERR; + } + /* r3/3 */ + if ((res = mp_div_3(&w3, &w3, NULL)) != MP_OKAY) { + goto LBL_ERR; + } + + /* at this point shift W[n] by B*n */ + if ((res = mp_lshd(&w1, 1*B)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_lshd(&w2, 2*B)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_lshd(&w3, 3*B)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_lshd(&w4, 4*B)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_add(&w0, &w1, c)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_add(&w2, &w3, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_add(&w4, &tmp1, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_add(&tmp1, c, c)) != MP_OKAY) { + goto LBL_ERR; + } + +LBL_ERR: + mp_clear_multi(&w0, &w1, &w2, &w3, &w4, + &a0, &a1, &a2, &b0, &b1, + &b2, &tmp1, &tmp2, NULL); + return res; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_toom_sqr.c b/fsbl/lib/libtommath/bn_mp_toom_sqr.c new file mode 100644 index 000000000..8595db5d9 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_toom_sqr.c @@ -0,0 +1,224 @@ +#include "tommath_private.h" +#ifdef BN_MP_TOOM_SQR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* squaring using Toom-Cook 3-way algorithm */ +int mp_toom_sqr(const mp_int *a, mp_int *b) +{ + mp_int w0, w1, w2, w3, w4, tmp1, a0, a1, a2; + int res, B; + + /* init temps */ + if ((res = mp_init_multi(&w0, &w1, &w2, &w3, &w4, &a0, &a1, &a2, &tmp1, NULL)) != MP_OKAY) { + return res; + } + + /* B */ + B = a->used / 3; + + /* a = a2 * B**2 + a1 * B + a0 */ + if ((res = mp_mod_2d(a, DIGIT_BIT * B, &a0)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_copy(a, &a1)) != MP_OKAY) { + goto LBL_ERR; + } + mp_rshd(&a1, B); + if ((res = mp_mod_2d(&a1, DIGIT_BIT * B, &a1)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_copy(a, &a2)) != MP_OKAY) { + goto LBL_ERR; + } + mp_rshd(&a2, B*2); + + /* w0 = a0*a0 */ + if ((res = mp_sqr(&a0, &w0)) != MP_OKAY) { + goto LBL_ERR; + } + + /* w4 = a2 * a2 */ + if ((res = mp_sqr(&a2, &w4)) != MP_OKAY) { + goto LBL_ERR; + } + + /* w1 = (a2 + 2(a1 + 2a0))**2 */ + if ((res = mp_mul_2(&a0, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_add(&tmp1, &a1, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_mul_2(&tmp1, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_add(&tmp1, &a2, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_sqr(&tmp1, &w1)) != MP_OKAY) { + goto LBL_ERR; + } + + /* w3 = (a0 + 2(a1 + 2a2))**2 */ + if ((res = mp_mul_2(&a2, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_add(&tmp1, &a1, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_mul_2(&tmp1, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_sqr(&tmp1, &w3)) != MP_OKAY) { + goto LBL_ERR; + } + + + /* w2 = (a2 + a1 + a0)**2 */ + if ((res = mp_add(&a2, &a1, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_add(&tmp1, &a0, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_sqr(&tmp1, &w2)) != MP_OKAY) { + goto LBL_ERR; + } + + /* now solve the matrix + + 0 0 0 0 1 + 1 2 4 8 16 + 1 1 1 1 1 + 16 8 4 2 1 + 1 0 0 0 0 + + using 12 subtractions, 4 shifts, 2 small divisions and 1 small multiplication. + */ + + /* r1 - r4 */ + if ((res = mp_sub(&w1, &w4, &w1)) != MP_OKAY) { + goto LBL_ERR; + } + /* r3 - r0 */ + if ((res = mp_sub(&w3, &w0, &w3)) != MP_OKAY) { + goto LBL_ERR; + } + /* r1/2 */ + if ((res = mp_div_2(&w1, &w1)) != MP_OKAY) { + goto LBL_ERR; + } + /* r3/2 */ + if ((res = mp_div_2(&w3, &w3)) != MP_OKAY) { + goto LBL_ERR; + } + /* r2 - r0 - r4 */ + if ((res = mp_sub(&w2, &w0, &w2)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_sub(&w2, &w4, &w2)) != MP_OKAY) { + goto LBL_ERR; + } + /* r1 - r2 */ + if ((res = mp_sub(&w1, &w2, &w1)) != MP_OKAY) { + goto LBL_ERR; + } + /* r3 - r2 */ + if ((res = mp_sub(&w3, &w2, &w3)) != MP_OKAY) { + goto LBL_ERR; + } + /* r1 - 8r0 */ + if ((res = mp_mul_2d(&w0, 3, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_sub(&w1, &tmp1, &w1)) != MP_OKAY) { + goto LBL_ERR; + } + /* r3 - 8r4 */ + if ((res = mp_mul_2d(&w4, 3, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_sub(&w3, &tmp1, &w3)) != MP_OKAY) { + goto LBL_ERR; + } + /* 3r2 - r1 - r3 */ + if ((res = mp_mul_d(&w2, 3uL, &w2)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_sub(&w2, &w1, &w2)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_sub(&w2, &w3, &w2)) != MP_OKAY) { + goto LBL_ERR; + } + /* r1 - r2 */ + if ((res = mp_sub(&w1, &w2, &w1)) != MP_OKAY) { + goto LBL_ERR; + } + /* r3 - r2 */ + if ((res = mp_sub(&w3, &w2, &w3)) != MP_OKAY) { + goto LBL_ERR; + } + /* r1/3 */ + if ((res = mp_div_3(&w1, &w1, NULL)) != MP_OKAY) { + goto LBL_ERR; + } + /* r3/3 */ + if ((res = mp_div_3(&w3, &w3, NULL)) != MP_OKAY) { + goto LBL_ERR; + } + + /* at this point shift W[n] by B*n */ + if ((res = mp_lshd(&w1, 1*B)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_lshd(&w2, 2*B)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_lshd(&w3, 3*B)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_lshd(&w4, 4*B)) != MP_OKAY) { + goto LBL_ERR; + } + + if ((res = mp_add(&w0, &w1, b)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_add(&w2, &w3, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_add(&w4, &tmp1, &tmp1)) != MP_OKAY) { + goto LBL_ERR; + } + if ((res = mp_add(&tmp1, b, b)) != MP_OKAY) { + goto LBL_ERR; + } + +LBL_ERR: + mp_clear_multi(&w0, &w1, &w2, &w3, &w4, &a0, &a1, &a2, &tmp1, NULL); + return res; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_toradix.c b/fsbl/lib/libtommath/bn_mp_toradix.c new file mode 100644 index 000000000..c6e1c656f --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_toradix.c @@ -0,0 +1,72 @@ +#include "tommath_private.h" +#ifdef BN_MP_TORADIX_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* stores a bignum as a ASCII string in a given radix (2..64) */ +int mp_toradix(const mp_int *a, char *str, int radix) +{ + int res, digs; + mp_int t; + mp_digit d; + char *_s = str; + + /* check range of the radix */ + if ((radix < 2) || (radix > 64)) { + return MP_VAL; + } + + /* quick out if its zero */ + if (mp_iszero(a) == MP_YES) { + *str++ = '0'; + *str = '\0'; + return MP_OKAY; + } + + if ((res = mp_init_copy(&t, a)) != MP_OKAY) { + return res; + } + + /* if it is negative output a - */ + if (t.sign == MP_NEG) { + ++_s; + *str++ = '-'; + t.sign = MP_ZPOS; + } + + digs = 0; + while (mp_iszero(&t) == MP_NO) { + if ((res = mp_div_d(&t, (mp_digit)radix, &t, &d)) != MP_OKAY) { + mp_clear(&t); + return res; + } + *str++ = mp_s_rmap[d]; + ++digs; + } + + /* reverse the digits of the string. In this case _s points + * to the first digit [exluding the sign] of the number] + */ + bn_reverse((unsigned char *)_s, digs); + + /* append a NULL so the string is properly terminated */ + *str = '\0'; + + mp_clear(&t); + return MP_OKAY; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_toradix_n.c b/fsbl/lib/libtommath/bn_mp_toradix_n.c new file mode 100644 index 000000000..84431f219 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_toradix_n.c @@ -0,0 +1,85 @@ +#include "tommath_private.h" +#ifdef BN_MP_TORADIX_N_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* stores a bignum as a ASCII string in a given radix (2..64) + * + * Stores upto maxlen-1 chars and always a NULL byte + */ +int mp_toradix_n(const mp_int *a, char *str, int radix, int maxlen) +{ + int res, digs; + mp_int t; + mp_digit d; + char *_s = str; + + /* check range of the maxlen, radix */ + if ((maxlen < 2) || (radix < 2) || (radix > 64)) { + return MP_VAL; + } + + /* quick out if its zero */ + if (mp_iszero(a) == MP_YES) { + *str++ = '0'; + *str = '\0'; + return MP_OKAY; + } + + if ((res = mp_init_copy(&t, a)) != MP_OKAY) { + return res; + } + + /* if it is negative output a - */ + if (t.sign == MP_NEG) { + /* we have to reverse our digits later... but not the - sign!! */ + ++_s; + + /* store the flag and mark the number as positive */ + *str++ = '-'; + t.sign = MP_ZPOS; + + /* subtract a char */ + --maxlen; + } + + digs = 0; + while (mp_iszero(&t) == MP_NO) { + if (--maxlen < 1) { + /* no more room */ + break; + } + if ((res = mp_div_d(&t, (mp_digit)radix, &t, &d)) != MP_OKAY) { + mp_clear(&t); + return res; + } + *str++ = mp_s_rmap[d]; + ++digs; + } + + /* reverse the digits of the string. In this case _s points + * to the first digit [exluding the sign] of the number + */ + bn_reverse((unsigned char *)_s, digs); + + /* append a NULL so the string is properly terminated */ + *str = '\0'; + + mp_clear(&t); + return MP_OKAY; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_unsigned_bin_size.c b/fsbl/lib/libtommath/bn_mp_unsigned_bin_size.c new file mode 100644 index 000000000..d716c8f12 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_unsigned_bin_size.c @@ -0,0 +1,25 @@ +#include "tommath_private.h" +#ifdef BN_MP_UNSIGNED_BIN_SIZE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* get the size for an unsigned equivalent */ +int mp_unsigned_bin_size(const mp_int *a) +{ + int size = mp_count_bits(a); + return (size / 8) + ((((unsigned)size & 7u) != 0u) ? 1 : 0); +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_xor.c b/fsbl/lib/libtommath/bn_mp_xor.c new file mode 100644 index 000000000..bfcdbb905 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_xor.c @@ -0,0 +1,48 @@ +#include "tommath_private.h" +#ifdef BN_MP_XOR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* XOR two ints together */ +int mp_xor(const mp_int *a, const mp_int *b, mp_int *c) +{ + int res, ix, px; + mp_int t; + const mp_int *x; + + if (a->used > b->used) { + if ((res = mp_init_copy(&t, a)) != MP_OKAY) { + return res; + } + px = b->used; + x = b; + } else { + if ((res = mp_init_copy(&t, b)) != MP_OKAY) { + return res; + } + px = a->used; + x = a; + } + + for (ix = 0; ix < px; ix++) { + t.dp[ix] ^= x->dp[ix]; + } + mp_clamp(&t); + mp_exch(c, &t); + mp_clear(&t); + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_mp_zero.c b/fsbl/lib/libtommath/bn_mp_zero.c new file mode 100644 index 000000000..89f7c2918 --- /dev/null +++ b/fsbl/lib/libtommath/bn_mp_zero.c @@ -0,0 +1,33 @@ +#include "tommath_private.h" +#ifdef BN_MP_ZERO_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* set to zero */ +void mp_zero(mp_int *a) +{ + int n; + mp_digit *tmp; + + a->sign = MP_ZPOS; + a->used = 0; + + tmp = a->dp; + for (n = 0; n < a->alloc; n++) { + *tmp++ = 0; + } +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_prime_tab.c b/fsbl/lib/libtommath/bn_prime_tab.c new file mode 100644 index 000000000..5c0e19295 --- /dev/null +++ b/fsbl/lib/libtommath/bn_prime_tab.c @@ -0,0 +1,59 @@ +#include "tommath_private.h" +#ifdef BN_PRIME_TAB_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +const mp_digit ltm_prime_tab[] = { + 0x0002, 0x0003, 0x0005, 0x0007, 0x000B, 0x000D, 0x0011, 0x0013, + 0x0017, 0x001D, 0x001F, 0x0025, 0x0029, 0x002B, 0x002F, 0x0035, + 0x003B, 0x003D, 0x0043, 0x0047, 0x0049, 0x004F, 0x0053, 0x0059, + 0x0061, 0x0065, 0x0067, 0x006B, 0x006D, 0x0071, 0x007F, +#ifndef MP_8BIT + 0x0083, + 0x0089, 0x008B, 0x0095, 0x0097, 0x009D, 0x00A3, 0x00A7, 0x00AD, + 0x00B3, 0x00B5, 0x00BF, 0x00C1, 0x00C5, 0x00C7, 0x00D3, 0x00DF, + 0x00E3, 0x00E5, 0x00E9, 0x00EF, 0x00F1, 0x00FB, 0x0101, 0x0107, + 0x010D, 0x010F, 0x0115, 0x0119, 0x011B, 0x0125, 0x0133, 0x0137, + + 0x0139, 0x013D, 0x014B, 0x0151, 0x015B, 0x015D, 0x0161, 0x0167, + 0x016F, 0x0175, 0x017B, 0x017F, 0x0185, 0x018D, 0x0191, 0x0199, + 0x01A3, 0x01A5, 0x01AF, 0x01B1, 0x01B7, 0x01BB, 0x01C1, 0x01C9, + 0x01CD, 0x01CF, 0x01D3, 0x01DF, 0x01E7, 0x01EB, 0x01F3, 0x01F7, + 0x01FD, 0x0209, 0x020B, 0x021D, 0x0223, 0x022D, 0x0233, 0x0239, + 0x023B, 0x0241, 0x024B, 0x0251, 0x0257, 0x0259, 0x025F, 0x0265, + 0x0269, 0x026B, 0x0277, 0x0281, 0x0283, 0x0287, 0x028D, 0x0293, + 0x0295, 0x02A1, 0x02A5, 0x02AB, 0x02B3, 0x02BD, 0x02C5, 0x02CF, + + 0x02D7, 0x02DD, 0x02E3, 0x02E7, 0x02EF, 0x02F5, 0x02F9, 0x0301, + 0x0305, 0x0313, 0x031D, 0x0329, 0x032B, 0x0335, 0x0337, 0x033B, + 0x033D, 0x0347, 0x0355, 0x0359, 0x035B, 0x035F, 0x036D, 0x0371, + 0x0373, 0x0377, 0x038B, 0x038F, 0x0397, 0x03A1, 0x03A9, 0x03AD, + 0x03B3, 0x03B9, 0x03C7, 0x03CB, 0x03D1, 0x03D7, 0x03DF, 0x03E5, + 0x03F1, 0x03F5, 0x03FB, 0x03FD, 0x0407, 0x0409, 0x040F, 0x0419, + 0x041B, 0x0425, 0x0427, 0x042D, 0x043F, 0x0443, 0x0445, 0x0449, + 0x044F, 0x0455, 0x045D, 0x0463, 0x0469, 0x047F, 0x0481, 0x048B, + + 0x0493, 0x049D, 0x04A3, 0x04A9, 0x04B1, 0x04BD, 0x04C1, 0x04C7, + 0x04CD, 0x04CF, 0x04D5, 0x04E1, 0x04EB, 0x04FD, 0x04FF, 0x0503, + 0x0509, 0x050B, 0x0511, 0x0515, 0x0517, 0x051B, 0x0527, 0x0529, + 0x052F, 0x0551, 0x0557, 0x055D, 0x0565, 0x0577, 0x0581, 0x058F, + 0x0593, 0x0595, 0x0599, 0x059F, 0x05A7, 0x05AB, 0x05AD, 0x05B3, + 0x05BF, 0x05C9, 0x05CB, 0x05CF, 0x05D1, 0x05D5, 0x05DB, 0x05E7, + 0x05F3, 0x05FB, 0x0607, 0x060D, 0x0611, 0x0617, 0x061F, 0x0623, + 0x062B, 0x062F, 0x063D, 0x0641, 0x0647, 0x0649, 0x064D, 0x0653 +#endif +}; +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_reverse.c b/fsbl/lib/libtommath/bn_reverse.c new file mode 100644 index 000000000..29905287d --- /dev/null +++ b/fsbl/lib/libtommath/bn_reverse.c @@ -0,0 +1,35 @@ +#include "tommath_private.h" +#ifdef BN_REVERSE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* reverse an array, used for radix code */ +void bn_reverse(unsigned char *s, int len) +{ + int ix, iy; + unsigned char t; + + ix = 0; + iy = len - 1; + while (ix < iy) { + t = s[ix]; + s[ix] = s[iy]; + s[iy] = t; + ++ix; + --iy; + } +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_s_mp_add.c b/fsbl/lib/libtommath/bn_s_mp_add.c new file mode 100644 index 000000000..979e47085 --- /dev/null +++ b/fsbl/lib/libtommath/bn_s_mp_add.c @@ -0,0 +1,105 @@ +#include "tommath_private.h" +#ifdef BN_S_MP_ADD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* low level addition, based on HAC pp.594, Algorithm 14.7 */ +int s_mp_add(const mp_int *a, const mp_int *b, mp_int *c) +{ + const mp_int *x; + int olduse, res, min, max; + + /* find sizes, we let |a| <= |b| which means we have to sort + * them. "x" will point to the input with the most digits + */ + if (a->used > b->used) { + min = b->used; + max = a->used; + x = a; + } else { + min = a->used; + max = b->used; + x = b; + } + + /* init result */ + if (c->alloc < (max + 1)) { + if ((res = mp_grow(c, max + 1)) != MP_OKAY) { + return res; + } + } + + /* get old used digit count and set new one */ + olduse = c->used; + c->used = max + 1; + + { + mp_digit u, *tmpa, *tmpb, *tmpc; + int i; + + /* alias for digit pointers */ + + /* first input */ + tmpa = a->dp; + + /* second input */ + tmpb = b->dp; + + /* destination */ + tmpc = c->dp; + + /* zero the carry */ + u = 0; + for (i = 0; i < min; i++) { + /* Compute the sum at one digit, T[i] = A[i] + B[i] + U */ + *tmpc = *tmpa++ + *tmpb++ + u; + + /* U = carry bit of T[i] */ + u = *tmpc >> (mp_digit)DIGIT_BIT; + + /* take away carry bit from T[i] */ + *tmpc++ &= MP_MASK; + } + + /* now copy higher words if any, that is in A+B + * if A or B has more digits add those in + */ + if (min != max) { + for (; i < max; i++) { + /* T[i] = X[i] + U */ + *tmpc = x->dp[i] + u; + + /* U = carry bit of T[i] */ + u = *tmpc >> (mp_digit)DIGIT_BIT; + + /* take away carry bit from T[i] */ + *tmpc++ &= MP_MASK; + } + } + + /* add carry */ + *tmpc++ = u; + + /* clear digits above oldused */ + for (i = c->used; i < olduse; i++) { + *tmpc++ = 0; + } + } + + mp_clamp(c); + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_s_mp_exptmod.c b/fsbl/lib/libtommath/bn_s_mp_exptmod.c new file mode 100644 index 000000000..b22cde873 --- /dev/null +++ b/fsbl/lib/libtommath/bn_s_mp_exptmod.c @@ -0,0 +1,252 @@ +#include "tommath_private.h" +#ifdef BN_S_MP_EXPTMOD_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +#ifdef MP_LOW_MEM +# define TAB_SIZE 32 +#else +# define TAB_SIZE 256 +#endif + +int s_mp_exptmod(const mp_int *G, const mp_int *X, const mp_int *P, mp_int *Y, int redmode) +{ + mp_int M[TAB_SIZE], res, mu; + mp_digit buf; + int err, bitbuf, bitcpy, bitcnt, mode, digidx, x, y, winsize; + int (*redux)(mp_int *x, const mp_int *m, const mp_int *mu); + + /* find window size */ + x = mp_count_bits(X); + if (x <= 7) { + winsize = 2; + } else if (x <= 36) { + winsize = 3; + } else if (x <= 140) { + winsize = 4; + } else if (x <= 450) { + winsize = 5; + } else if (x <= 1303) { + winsize = 6; + } else if (x <= 3529) { + winsize = 7; + } else { + winsize = 8; + } + +#ifdef MP_LOW_MEM + if (winsize > 5) { + winsize = 5; + } +#endif + + /* init M array */ + /* init first cell */ + if ((err = mp_init(&M[1])) != MP_OKAY) { + return err; + } + + /* now init the second half of the array */ + for (x = 1<<(winsize-1); x < (1 << winsize); x++) { + if ((err = mp_init(&M[x])) != MP_OKAY) { + for (y = 1<<(winsize-1); y < x; y++) { + mp_clear(&M[y]); + } + mp_clear(&M[1]); + return err; + } + } + + /* create mu, used for Barrett reduction */ + if ((err = mp_init(&mu)) != MP_OKAY) { + goto LBL_M; + } + + if (redmode == 0) { + if ((err = mp_reduce_setup(&mu, P)) != MP_OKAY) { + goto LBL_MU; + } + redux = mp_reduce; + } else { + if ((err = mp_reduce_2k_setup_l(P, &mu)) != MP_OKAY) { + goto LBL_MU; + } + redux = mp_reduce_2k_l; + } + + /* create M table + * + * The M table contains powers of the base, + * e.g. M[x] = G**x mod P + * + * The first half of the table is not + * computed though accept for M[0] and M[1] + */ + if ((err = mp_mod(G, P, &M[1])) != MP_OKAY) { + goto LBL_MU; + } + + /* compute the value at M[1<<(winsize-1)] by squaring + * M[1] (winsize-1) times + */ + if ((err = mp_copy(&M[1], &M[(size_t)1 << (winsize - 1)])) != MP_OKAY) { + goto LBL_MU; + } + + for (x = 0; x < (winsize - 1); x++) { + /* square it */ + if ((err = mp_sqr(&M[(size_t)1 << (winsize - 1)], + &M[(size_t)1 << (winsize - 1)])) != MP_OKAY) { + goto LBL_MU; + } + + /* reduce modulo P */ + if ((err = redux(&M[(size_t)1 << (winsize - 1)], P, &mu)) != MP_OKAY) { + goto LBL_MU; + } + } + + /* create upper table, that is M[x] = M[x-1] * M[1] (mod P) + * for x = (2**(winsize - 1) + 1) to (2**winsize - 1) + */ + for (x = (1 << (winsize - 1)) + 1; x < (1 << winsize); x++) { + if ((err = mp_mul(&M[x - 1], &M[1], &M[x])) != MP_OKAY) { + goto LBL_MU; + } + if ((err = redux(&M[x], P, &mu)) != MP_OKAY) { + goto LBL_MU; + } + } + + /* setup result */ + if ((err = mp_init(&res)) != MP_OKAY) { + goto LBL_MU; + } + mp_set(&res, 1uL); + + /* set initial mode and bit cnt */ + mode = 0; + bitcnt = 1; + buf = 0; + digidx = X->used - 1; + bitcpy = 0; + bitbuf = 0; + + for (;;) { + /* grab next digit as required */ + if (--bitcnt == 0) { + /* if digidx == -1 we are out of digits */ + if (digidx == -1) { + break; + } + /* read next digit and reset the bitcnt */ + buf = X->dp[digidx--]; + bitcnt = (int)DIGIT_BIT; + } + + /* grab the next msb from the exponent */ + y = (buf >> (mp_digit)(DIGIT_BIT - 1)) & 1; + buf <<= (mp_digit)1; + + /* if the bit is zero and mode == 0 then we ignore it + * These represent the leading zero bits before the first 1 bit + * in the exponent. Technically this opt is not required but it + * does lower the # of trivial squaring/reductions used + */ + if ((mode == 0) && (y == 0)) { + continue; + } + + /* if the bit is zero and mode == 1 then we square */ + if ((mode == 1) && (y == 0)) { + if ((err = mp_sqr(&res, &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux(&res, P, &mu)) != MP_OKAY) { + goto LBL_RES; + } + continue; + } + + /* else we add it to the window */ + bitbuf |= (y << (winsize - ++bitcpy)); + mode = 2; + + if (bitcpy == winsize) { + /* ok window is filled so square as required and multiply */ + /* square first */ + for (x = 0; x < winsize; x++) { + if ((err = mp_sqr(&res, &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux(&res, P, &mu)) != MP_OKAY) { + goto LBL_RES; + } + } + + /* then multiply */ + if ((err = mp_mul(&res, &M[bitbuf], &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux(&res, P, &mu)) != MP_OKAY) { + goto LBL_RES; + } + + /* empty window and reset */ + bitcpy = 0; + bitbuf = 0; + mode = 1; + } + } + + /* if bits remain then square/multiply */ + if ((mode == 2) && (bitcpy > 0)) { + /* square then multiply if the bit is set */ + for (x = 0; x < bitcpy; x++) { + if ((err = mp_sqr(&res, &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux(&res, P, &mu)) != MP_OKAY) { + goto LBL_RES; + } + + bitbuf <<= 1; + if ((bitbuf & (1 << winsize)) != 0) { + /* then multiply */ + if ((err = mp_mul(&res, &M[1], &res)) != MP_OKAY) { + goto LBL_RES; + } + if ((err = redux(&res, P, &mu)) != MP_OKAY) { + goto LBL_RES; + } + } + } + } + + mp_exch(&res, Y); + err = MP_OKAY; +LBL_RES: + mp_clear(&res); +LBL_MU: + mp_clear(&mu); +LBL_M: + mp_clear(&M[1]); + for (x = 1<<(winsize-1); x < (1 << winsize); x++) { + mp_clear(&M[x]); + } + return err; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_s_mp_mul_digs.c b/fsbl/lib/libtommath/bn_s_mp_mul_digs.c new file mode 100644 index 000000000..332e974d6 --- /dev/null +++ b/fsbl/lib/libtommath/bn_s_mp_mul_digs.c @@ -0,0 +1,87 @@ +#include "tommath_private.h" +#ifdef BN_S_MP_MUL_DIGS_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* multiplies |a| * |b| and only computes upto digs digits of result + * HAC pp. 595, Algorithm 14.12 Modified so you can control how + * many digits of output are created. + */ +int s_mp_mul_digs(const mp_int *a, const mp_int *b, mp_int *c, int digs) +{ + mp_int t; + int res, pa, pb, ix, iy; + mp_digit u; + mp_word r; + mp_digit tmpx, *tmpt, *tmpy; + + /* can we use the fast multiplier? */ + if ((digs < (int)MP_WARRAY) && + (MIN(a->used, b->used) < + (int)(1u << (((size_t)CHAR_BIT * sizeof(mp_word)) - (2u * (size_t)DIGIT_BIT))))) { + return fast_s_mp_mul_digs(a, b, c, digs); + } + + if ((res = mp_init_size(&t, digs)) != MP_OKAY) { + return res; + } + t.used = digs; + + /* compute the digits of the product directly */ + pa = a->used; + for (ix = 0; ix < pa; ix++) { + /* set the carry to zero */ + u = 0; + + /* limit ourselves to making digs digits of output */ + pb = MIN(b->used, digs - ix); + + /* setup some aliases */ + /* copy of the digit from a used within the nested loop */ + tmpx = a->dp[ix]; + + /* an alias for the destination shifted ix places */ + tmpt = t.dp + ix; + + /* an alias for the digits of b */ + tmpy = b->dp; + + /* compute the columns of the output and propagate the carry */ + for (iy = 0; iy < pb; iy++) { + /* compute the column as a mp_word */ + r = (mp_word)*tmpt + + ((mp_word)tmpx * (mp_word)*tmpy++) + + (mp_word)u; + + /* the new column is the lower part of the result */ + *tmpt++ = (mp_digit)(r & (mp_word)MP_MASK); + + /* get the carry word from the result */ + u = (mp_digit)(r >> (mp_word)DIGIT_BIT); + } + /* set carry if it is placed below digs */ + if ((ix + iy) < digs) { + *tmpt = u; + } + } + + mp_clamp(&t); + mp_exch(&t, c); + + mp_clear(&t); + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_s_mp_mul_high_digs.c b/fsbl/lib/libtommath/bn_s_mp_mul_high_digs.c new file mode 100644 index 000000000..509682b71 --- /dev/null +++ b/fsbl/lib/libtommath/bn_s_mp_mul_high_digs.c @@ -0,0 +1,77 @@ +#include "tommath_private.h" +#ifdef BN_S_MP_MUL_HIGH_DIGS_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* multiplies |a| * |b| and does not compute the lower digs digits + * [meant to get the higher part of the product] + */ +int s_mp_mul_high_digs(const mp_int *a, const mp_int *b, mp_int *c, int digs) +{ + mp_int t; + int res, pa, pb, ix, iy; + mp_digit u; + mp_word r; + mp_digit tmpx, *tmpt, *tmpy; + + /* can we use the fast multiplier? */ +#ifdef BN_FAST_S_MP_MUL_HIGH_DIGS_C + if (((a->used + b->used + 1) < (int)MP_WARRAY) + && (MIN(a->used, b->used) < (int)(1u << (((size_t)CHAR_BIT * sizeof(mp_word)) - (2u * (size_t)DIGIT_BIT))))) { + return fast_s_mp_mul_high_digs(a, b, c, digs); + } +#endif + + if ((res = mp_init_size(&t, a->used + b->used + 1)) != MP_OKAY) { + return res; + } + t.used = a->used + b->used + 1; + + pa = a->used; + pb = b->used; + for (ix = 0; ix < pa; ix++) { + /* clear the carry */ + u = 0; + + /* left hand side of A[ix] * B[iy] */ + tmpx = a->dp[ix]; + + /* alias to the address of where the digits will be stored */ + tmpt = &(t.dp[digs]); + + /* alias for where to read the right hand side from */ + tmpy = b->dp + (digs - ix); + + for (iy = digs - ix; iy < pb; iy++) { + /* calculate the double precision result */ + r = (mp_word)*tmpt + + ((mp_word)tmpx * (mp_word)*tmpy++) + + (mp_word)u; + + /* get the lower part */ + *tmpt++ = (mp_digit)(r & (mp_word)MP_MASK); + + /* carry the carry */ + u = (mp_digit)(r >> (mp_word)DIGIT_BIT); + } + *tmpt = u; + } + mp_clamp(&t); + mp_exch(&t, c); + mp_clear(&t); + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_s_mp_sqr.c b/fsbl/lib/libtommath/bn_s_mp_sqr.c new file mode 100644 index 000000000..b3d0fd06a --- /dev/null +++ b/fsbl/lib/libtommath/bn_s_mp_sqr.c @@ -0,0 +1,81 @@ +#include "tommath_private.h" +#ifdef BN_S_MP_SQR_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* low level squaring, b = a*a, HAC pp.596-597, Algorithm 14.16 */ +int s_mp_sqr(const mp_int *a, mp_int *b) +{ + mp_int t; + int res, ix, iy, pa; + mp_word r; + mp_digit u, tmpx, *tmpt; + + pa = a->used; + if ((res = mp_init_size(&t, (2 * pa) + 1)) != MP_OKAY) { + return res; + } + + /* default used is maximum possible size */ + t.used = (2 * pa) + 1; + + for (ix = 0; ix < pa; ix++) { + /* first calculate the digit at 2*ix */ + /* calculate double precision result */ + r = (mp_word)t.dp[2*ix] + + ((mp_word)a->dp[ix] * (mp_word)a->dp[ix]); + + /* store lower part in result */ + t.dp[ix+ix] = (mp_digit)(r & (mp_word)MP_MASK); + + /* get the carry */ + u = (mp_digit)(r >> (mp_word)DIGIT_BIT); + + /* left hand side of A[ix] * A[iy] */ + tmpx = a->dp[ix]; + + /* alias for where to store the results */ + tmpt = t.dp + ((2 * ix) + 1); + + for (iy = ix + 1; iy < pa; iy++) { + /* first calculate the product */ + r = (mp_word)tmpx * (mp_word)a->dp[iy]; + + /* now calculate the double precision result, note we use + * addition instead of *2 since it's easier to optimize + */ + r = (mp_word)*tmpt + r + r + (mp_word)u; + + /* store lower part */ + *tmpt++ = (mp_digit)(r & (mp_word)MP_MASK); + + /* get carry */ + u = (mp_digit)(r >> (mp_word)DIGIT_BIT); + } + /* propagate upwards */ + while (u != 0uL) { + r = (mp_word)*tmpt + (mp_word)u; + *tmpt++ = (mp_digit)(r & (mp_word)MP_MASK); + u = (mp_digit)(r >> (mp_word)DIGIT_BIT); + } + } + + mp_clamp(&t); + mp_exch(&t, b); + mp_clear(&t); + return MP_OKAY; +} +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bn_s_mp_sub.c b/fsbl/lib/libtommath/bn_s_mp_sub.c new file mode 100644 index 000000000..88e44dc17 --- /dev/null +++ b/fsbl/lib/libtommath/bn_s_mp_sub.c @@ -0,0 +1,85 @@ +#include "tommath_private.h" +#ifdef BN_S_MP_SUB_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* low level subtraction (assumes |a| > |b|), HAC pp.595 Algorithm 14.9 */ +int s_mp_sub(const mp_int *a, const mp_int *b, mp_int *c) +{ + int olduse, res, min, max; + + /* find sizes */ + min = b->used; + max = a->used; + + /* init result */ + if (c->alloc < max) { + if ((res = mp_grow(c, max)) != MP_OKAY) { + return res; + } + } + olduse = c->used; + c->used = max; + + { + mp_digit u, *tmpa, *tmpb, *tmpc; + int i; + + /* alias for digit pointers */ + tmpa = a->dp; + tmpb = b->dp; + tmpc = c->dp; + + /* set carry to zero */ + u = 0; + for (i = 0; i < min; i++) { + /* T[i] = A[i] - B[i] - U */ + *tmpc = (*tmpa++ - *tmpb++) - u; + + /* U = carry bit of T[i] + * Note this saves performing an AND operation since + * if a carry does occur it will propagate all the way to the + * MSB. As a result a single shift is enough to get the carry + */ + u = *tmpc >> (((size_t)CHAR_BIT * sizeof(mp_digit)) - 1u); + + /* Clear carry from T[i] */ + *tmpc++ &= MP_MASK; + } + + /* now copy higher words if any, e.g. if A has more digits than B */ + for (; i < max; i++) { + /* T[i] = A[i] - U */ + *tmpc = *tmpa++ - u; + + /* U = carry bit of T[i] */ + u = *tmpc >> (((size_t)CHAR_BIT * sizeof(mp_digit)) - 1u); + + /* Clear carry from T[i] */ + *tmpc++ &= MP_MASK; + } + + /* clear digits above used (since we may not have grown result above) */ + for (i = c->used; i < olduse; i++) { + *tmpc++ = 0; + } + } + + mp_clamp(c); + return MP_OKAY; +} + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/bncore.c b/fsbl/lib/libtommath/bncore.c new file mode 100644 index 000000000..c97b8e199 --- /dev/null +++ b/fsbl/lib/libtommath/bncore.c @@ -0,0 +1,33 @@ +#include "tommath_private.h" +#ifdef BNCORE_C +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* Known optimal configurations + + CPU /Compiler /MUL CUTOFF/SQR CUTOFF +------------------------------------------------------------- + Intel P4 Northwood /GCC v3.4.1 / 88/ 128/LTM 0.32 ;-) + AMD Athlon64 /GCC v3.4.4 / 80/ 120/LTM 0.35 + +*/ + +int KARATSUBA_MUL_CUTOFF = 80, /* Min. number of digits before Karatsuba multiplication is used. */ + KARATSUBA_SQR_CUTOFF = 120, /* Min. number of digits before Karatsuba squaring is used. */ + + TOOM_MUL_CUTOFF = 350, /* no optimal values of these are known yet so set em high */ + TOOM_SQR_CUTOFF = 400; +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/callgraph.txt b/fsbl/lib/libtommath/callgraph.txt new file mode 100644 index 000000000..83ca1c1d1 --- /dev/null +++ b/fsbl/lib/libtommath/callgraph.txt @@ -0,0 +1,21542 @@ +BNCORE_C + + +BN_ERROR_C + + +BN_FAST_MP_INVMOD_C ++--->BN_MP_INIT_MULTI_C +| +--->BN_MP_INIT_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_MOD_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_DIV_2_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_C +| +--->BN_MP_CMP_MAG_C ++--->BN_MP_CMP_D_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_MAG_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_CLEAR_C + + +BN_FAST_MP_MONTGOMERY_REDUCE_C ++--->BN_MP_GROW_C ++--->BN_MP_RSHD_C +| +--->BN_MP_ZERO_C ++--->BN_MP_CLAMP_C ++--->BN_MP_CMP_MAG_C ++--->BN_S_MP_SUB_C + + +BN_FAST_S_MP_MUL_DIGS_C ++--->BN_MP_GROW_C ++--->BN_MP_CLAMP_C + + +BN_FAST_S_MP_MUL_HIGH_DIGS_C ++--->BN_MP_GROW_C ++--->BN_MP_CLAMP_C + + +BN_FAST_S_MP_SQR_C ++--->BN_MP_GROW_C ++--->BN_MP_CLAMP_C + + +BN_MP_2EXPT_C ++--->BN_MP_ZERO_C ++--->BN_MP_GROW_C + + +BN_MP_ABS_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C + + +BN_MP_ADDMOD_C ++--->BN_MP_INIT_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C ++--->BN_MP_MOD_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C + + +BN_MP_ADD_C ++--->BN_S_MP_ADD_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_MAG_C ++--->BN_S_MP_SUB_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C + + +BN_MP_ADD_D_C ++--->BN_MP_GROW_C ++--->BN_MP_SUB_D_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLAMP_C + + +BN_MP_AND_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_C + + +BN_MP_CLAMP_C + + +BN_MP_CLEAR_C + + +BN_MP_CLEAR_MULTI_C ++--->BN_MP_CLEAR_C + + +BN_MP_CMP_C ++--->BN_MP_CMP_MAG_C + + +BN_MP_CMP_D_C + + +BN_MP_CMP_MAG_C + + +BN_MP_CNT_LSB_C + + +BN_MP_COMPLEMENT_C ++--->BN_MP_NEG_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C ++--->BN_MP_SUB_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_ADD_D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C + + +BN_MP_COPY_C ++--->BN_MP_GROW_C + + +BN_MP_COUNT_BITS_C + + +BN_MP_DIV_2D_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_ZERO_C ++--->BN_MP_MOD_2D_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_RSHD_C ++--->BN_MP_CLAMP_C + + +BN_MP_DIV_2_C ++--->BN_MP_GROW_C ++--->BN_MP_CLAMP_C + + +BN_MP_DIV_3_C ++--->BN_MP_INIT_SIZE_C +| +--->BN_MP_INIT_C ++--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_C + + +BN_MP_DIV_C ++--->BN_MP_CMP_MAG_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_ZERO_C ++--->BN_MP_INIT_MULTI_C +| +--->BN_MP_INIT_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_SET_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_ABS_C ++--->BN_MP_MUL_2D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_DIV_2D_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_INIT_SIZE_C +| +--->BN_MP_INIT_C ++--->BN_MP_INIT_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_LSHD_C +| +--->BN_MP_GROW_C +| +--->BN_MP_RSHD_C ++--->BN_MP_RSHD_C ++--->BN_MP_MUL_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C + + +BN_MP_DIV_D_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_DIV_2D_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_DIV_3_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_INIT_SIZE_C +| +--->BN_MP_INIT_C ++--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_C + + +BN_MP_DR_IS_MODULUS_C + + +BN_MP_DR_REDUCE_C ++--->BN_MP_GROW_C ++--->BN_MP_CLAMP_C ++--->BN_MP_CMP_MAG_C ++--->BN_S_MP_SUB_C + + +BN_MP_DR_SETUP_C + + +BN_MP_EXCH_C + + +BN_MP_EXPORT_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_DIV_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C + + +BN_MP_EXPTMOD_C ++--->BN_MP_INIT_C ++--->BN_MP_INVMOD_C +| +--->BN_MP_CMP_D_C +| +--->BN_FAST_MP_INVMOD_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_INVMOD_SLOW_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C ++--->BN_MP_CLEAR_C ++--->BN_MP_ABS_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C ++--->BN_MP_CLEAR_MULTI_C ++--->BN_MP_REDUCE_IS_2K_L_C ++--->BN_S_MP_EXPTMOD_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_REDUCE_SETUP_C +| | +--->BN_MP_2EXPT_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_REDUCE_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_D_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_REDUCE_2K_SETUP_L_C +| | +--->BN_MP_2EXPT_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_REDUCE_2K_L_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_MOD_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_SQR_C +| | +--->BN_MP_TOOM_SQR_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_KARATSUBA_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_CMP_MAG_C +| | +--->BN_FAST_S_MP_SQR_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| +--->BN_MP_MUL_C +| | +--->BN_MP_TOOM_MUL_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_KARATSUBA_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_EXCH_C ++--->BN_MP_DR_IS_MODULUS_C ++--->BN_MP_REDUCE_IS_2K_C +| +--->BN_MP_REDUCE_2K_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_COUNT_BITS_C ++--->BN_MP_EXPTMOD_FAST_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_MONTGOMERY_SETUP_C +| +--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| +--->BN_MP_MONTGOMERY_REDUCE_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| +--->BN_MP_DR_SETUP_C +| +--->BN_MP_DR_REDUCE_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| +--->BN_MP_REDUCE_2K_SETUP_C +| | +--->BN_MP_2EXPT_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_REDUCE_2K_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +| | +--->BN_MP_2EXPT_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_MULMOD_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_MOD_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_SQR_C +| | +--->BN_MP_TOOM_SQR_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_KARATSUBA_SQR_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_CMP_MAG_C +| | +--->BN_FAST_S_MP_SQR_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SQR_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| +--->BN_MP_MUL_C +| | +--->BN_MP_TOOM_MUL_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_KARATSUBA_MUL_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| +--->BN_MP_EXCH_C + + +BN_MP_EXPTMOD_FAST_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_INIT_SIZE_C +| +--->BN_MP_INIT_C ++--->BN_MP_CLEAR_C ++--->BN_MP_MONTGOMERY_SETUP_C ++--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| +--->BN_MP_GROW_C +| +--->BN_MP_RSHD_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C ++--->BN_MP_MONTGOMERY_REDUCE_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_RSHD_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C ++--->BN_MP_DR_SETUP_C ++--->BN_MP_DR_REDUCE_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C ++--->BN_MP_REDUCE_2K_SETUP_C +| +--->BN_MP_INIT_C +| +--->BN_MP_2EXPT_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_GROW_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_REDUCE_2K_C +| +--->BN_MP_INIT_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +| +--->BN_MP_2EXPT_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_MUL_2_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_MULMOD_C +| +--->BN_MP_MUL_C +| | +--->BN_MP_TOOM_MUL_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_KARATSUBA_MUL_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| +--->BN_MP_MOD_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_ABS_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_MOD_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_SQR_C +| +--->BN_MP_TOOM_SQR_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_KARATSUBA_SQR_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| +--->BN_FAST_S_MP_SQR_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_SQR_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C ++--->BN_MP_MUL_C +| +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C ++--->BN_MP_EXCH_C + + +BN_MP_EXPT_D_C ++--->BN_MP_EXPT_D_EX_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_MUL_C +| | +--->BN_MP_TOOM_MUL_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_KARATSUBA_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_SQR_C +| | +--->BN_MP_TOOM_SQR_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_KARATSUBA_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_CMP_MAG_C +| | +--->BN_FAST_S_MP_SQR_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C + + +BN_MP_EXPT_D_EX_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_MUL_C +| +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_CLEAR_C ++--->BN_MP_SQR_C +| +--->BN_MP_TOOM_SQR_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_KARATSUBA_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| +--->BN_FAST_S_MP_SQR_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C + + +BN_MP_EXTEUCLID_C ++--->BN_MP_INIT_MULTI_C +| +--->BN_MP_INIT_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_DIV_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_ABS_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_INIT_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_MUL_C +| +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_NEG_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_CLEAR_C + + +BN_MP_FREAD_C ++--->BN_MP_ZERO_C ++--->BN_MP_MUL_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_ADD_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_SUB_D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_D_C + + +BN_MP_FWRITE_C ++--->BN_MP_RADIX_SIZE_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_DIV_D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_TORADIX_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_DIV_D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C + + +BN_MP_GCD_C ++--->BN_MP_ABS_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_CNT_LSB_C ++--->BN_MP_DIV_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_MAG_C ++--->BN_MP_EXCH_C ++--->BN_S_MP_SUB_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_MUL_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_GROW_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C + + +BN_MP_GET_BIT_C + + +BN_MP_GET_DOUBLE_C + + +BN_MP_GET_INT_C + + +BN_MP_GET_LONG_C + + +BN_MP_GET_LONG_LONG_C + + +BN_MP_GROW_C + + +BN_MP_IMPORT_C ++--->BN_MP_ZERO_C ++--->BN_MP_MUL_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_GROW_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLAMP_C + + +BN_MP_INIT_C + + +BN_MP_INIT_COPY_C ++--->BN_MP_INIT_SIZE_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_CLEAR_C + + +BN_MP_INIT_MULTI_C ++--->BN_MP_INIT_C ++--->BN_MP_CLEAR_C + + +BN_MP_INIT_SET_C ++--->BN_MP_INIT_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C + + +BN_MP_INIT_SET_INT_C ++--->BN_MP_INIT_C ++--->BN_MP_SET_INT_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C + + +BN_MP_INIT_SIZE_C ++--->BN_MP_INIT_C + + +BN_MP_INVMOD_C ++--->BN_MP_CMP_D_C ++--->BN_FAST_MP_INVMOD_C +| +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_MOD_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_ABS_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_DIV_2_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| | +--->BN_MP_CMP_MAG_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_INVMOD_SLOW_C +| +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_MOD_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_ABS_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_DIV_2_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| | +--->BN_MP_CMP_MAG_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_CLEAR_C + + +BN_MP_INVMOD_SLOW_C ++--->BN_MP_INIT_MULTI_C +| +--->BN_MP_INIT_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_MOD_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_DIV_2_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_C +| +--->BN_MP_CMP_MAG_C ++--->BN_MP_CMP_D_C ++--->BN_MP_CMP_MAG_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_CLEAR_C + + +BN_MP_IS_SQUARE_C ++--->BN_MP_MOD_D_C +| +--->BN_MP_DIV_D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_INIT_SET_INT_C +| +--->BN_MP_INIT_C +| +--->BN_MP_SET_INT_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_MOD_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C ++--->BN_MP_GET_INT_C ++--->BN_MP_SQRT_C +| +--->BN_MP_N_ROOT_C +| | +--->BN_MP_N_ROOT_EX_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_EXPT_D_EX_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_SQR_C +| | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_FAST_S_MP_SQR_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SQR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_SUB_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_2_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_SQR_C +| +--->BN_MP_TOOM_SQR_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_KARATSUBA_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_SQR_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_CMP_MAG_C ++--->BN_MP_CLEAR_C + + +BN_MP_JACOBI_C ++--->BN_MP_KRONECKER_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CNT_LSB_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_MOD_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_ABS_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_CMP_D_C + + +BN_MP_KARATSUBA_MUL_C ++--->BN_MP_MUL_C +| +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_INIT_SIZE_C +| +--->BN_MP_INIT_C ++--->BN_MP_CLAMP_C ++--->BN_S_MP_ADD_C +| +--->BN_MP_GROW_C ++--->BN_MP_ADD_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C ++--->BN_S_MP_SUB_C +| +--->BN_MP_GROW_C ++--->BN_MP_LSHD_C +| +--->BN_MP_GROW_C +| +--->BN_MP_RSHD_C +| | +--->BN_MP_ZERO_C ++--->BN_MP_CLEAR_C + + +BN_MP_KARATSUBA_SQR_C ++--->BN_MP_INIT_SIZE_C +| +--->BN_MP_INIT_C ++--->BN_MP_CLAMP_C ++--->BN_MP_SQR_C +| +--->BN_MP_TOOM_SQR_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_SQR_C +| | +--->BN_MP_GROW_C +| +--->BN_S_MP_SQR_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_S_MP_ADD_C +| +--->BN_MP_GROW_C ++--->BN_S_MP_SUB_C +| +--->BN_MP_GROW_C ++--->BN_MP_LSHD_C +| +--->BN_MP_GROW_C +| +--->BN_MP_RSHD_C +| | +--->BN_MP_ZERO_C ++--->BN_MP_ADD_C +| +--->BN_MP_CMP_MAG_C ++--->BN_MP_CLEAR_C + + +BN_MP_KRONECKER_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_CNT_LSB_C ++--->BN_MP_DIV_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_D_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_MOD_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C + + +BN_MP_LCM_C ++--->BN_MP_INIT_MULTI_C +| +--->BN_MP_INIT_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_GCD_C +| +--->BN_MP_ABS_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CNT_LSB_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_MP_EXCH_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_CMP_MAG_C ++--->BN_MP_DIV_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_SET_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_ABS_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_INIT_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_MUL_C +| +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_CLEAR_C + + +BN_MP_LSHD_C ++--->BN_MP_GROW_C ++--->BN_MP_RSHD_C +| +--->BN_MP_ZERO_C + + +BN_MP_MOD_2D_C ++--->BN_MP_ZERO_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_CLAMP_C + + +BN_MP_MOD_C ++--->BN_MP_INIT_SIZE_C +| +--->BN_MP_INIT_C ++--->BN_MP_DIV_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_SET_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_ABS_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_CLEAR_C ++--->BN_MP_EXCH_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C + + +BN_MP_MOD_D_C ++--->BN_MP_DIV_D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_3_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C + + +BN_MP_MONTGOMERY_CALC_NORMALIZATION_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_2EXPT_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_GROW_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_MUL_2_C +| +--->BN_MP_GROW_C ++--->BN_MP_CMP_MAG_C ++--->BN_S_MP_SUB_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C + + +BN_MP_MONTGOMERY_REDUCE_C ++--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| +--->BN_MP_GROW_C +| +--->BN_MP_RSHD_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C ++--->BN_MP_GROW_C ++--->BN_MP_CLAMP_C ++--->BN_MP_RSHD_C +| +--->BN_MP_ZERO_C ++--->BN_MP_CMP_MAG_C ++--->BN_S_MP_SUB_C + + +BN_MP_MONTGOMERY_SETUP_C + + +BN_MP_MULMOD_C ++--->BN_MP_INIT_SIZE_C +| +--->BN_MP_INIT_C ++--->BN_MP_MUL_C +| +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_CLEAR_C ++--->BN_MP_MOD_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C + + +BN_MP_MUL_2D_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_GROW_C ++--->BN_MP_LSHD_C +| +--->BN_MP_RSHD_C +| | +--->BN_MP_ZERO_C ++--->BN_MP_CLAMP_C + + +BN_MP_MUL_2_C ++--->BN_MP_GROW_C + + +BN_MP_MUL_C ++--->BN_MP_TOOM_MUL_C +| +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_RSHD_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_MUL_2_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_2_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_3_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_KARATSUBA_MUL_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_CLAMP_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ADD_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| +--->BN_MP_CLEAR_C ++--->BN_FAST_S_MP_MUL_DIGS_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_S_MP_MUL_DIGS_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C + + +BN_MP_MUL_D_C ++--->BN_MP_GROW_C ++--->BN_MP_CLAMP_C + + +BN_MP_NEG_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C + + +BN_MP_N_ROOT_C ++--->BN_MP_N_ROOT_EX_C +| +--->BN_MP_INIT_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_EXPT_D_EX_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| +--->BN_MP_MUL_C +| | +--->BN_MP_TOOM_MUL_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_KARATSUBA_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CMP_C +| | +--->BN_MP_CMP_MAG_C +| +--->BN_MP_SUB_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C + + +BN_MP_N_ROOT_EX_C ++--->BN_MP_INIT_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_EXPT_D_EX_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_MUL_C +| | +--->BN_MP_TOOM_MUL_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_KARATSUBA_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_SQR_C +| | +--->BN_MP_TOOM_SQR_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_KARATSUBA_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_CMP_MAG_C +| | +--->BN_FAST_S_MP_SQR_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C ++--->BN_MP_MUL_C +| +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_MUL_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_DIV_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_ABS_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_CMP_C +| +--->BN_MP_CMP_MAG_C ++--->BN_MP_SUB_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_ADD_D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_C + + +BN_MP_OR_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_C + + +BN_MP_PRIME_FERMAT_C ++--->BN_MP_CMP_D_C ++--->BN_MP_INIT_C ++--->BN_MP_EXPTMOD_C +| +--->BN_MP_INVMOD_C +| | +--->BN_FAST_MP_INVMOD_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_ABS_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2D_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_INIT_COPY_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INVMOD_SLOW_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_ABS_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2D_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_INIT_COPY_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_ABS_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_REDUCE_IS_2K_L_C +| +--->BN_S_MP_EXPTMOD_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_REDUCE_SETUP_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_2K_SETUP_L_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_2K_L_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_DR_IS_MODULUS_C +| +--->BN_MP_REDUCE_IS_2K_C +| | +--->BN_MP_REDUCE_2K_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_EXPTMOD_FAST_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_MONTGOMERY_SETUP_C +| | +--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | +--->BN_MP_MONTGOMERY_REDUCE_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | +--->BN_MP_DR_SETUP_C +| | +--->BN_MP_DR_REDUCE_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | +--->BN_MP_REDUCE_2K_SETUP_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_2K_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MULMOD_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2D_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_INIT_COPY_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_EXCH_C ++--->BN_MP_CMP_C +| +--->BN_MP_CMP_MAG_C ++--->BN_MP_CLEAR_C + + +BN_MP_PRIME_FROBENIUS_UNDERWOOD_C ++--->BN_MP_PRIME_IS_PRIME_C +| +--->BN_MP_IS_SQUARE_C +| | +--->BN_MP_MOD_D_C +| | | +--->BN_MP_DIV_D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SET_INT_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_SET_INT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_GET_INT_C +| | +--->BN_MP_SQRT_C +| | | +--->BN_MP_N_ROOT_C +| | | | +--->BN_MP_N_ROOT_EX_C +| | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_EXPT_D_EX_C +| | | | | | +--->BN_MP_INIT_COPY_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_MUL_C +| | | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_ADD_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_ADD_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_SQR_C +| | | | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_ADD_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_ADD_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_FAST_S_MP_SQR_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SQR_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_COUNT_BITS_C +| | | | | | +--->BN_MP_ABS_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2D_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_COPY_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_SUB_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_D_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CMP_D_C +| +--->BN_MP_PRIME_IS_DIVISIBLE_C +| | +--->BN_MP_MOD_D_C +| | | +--->BN_MP_DIV_D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SET_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| +--->BN_MP_PRIME_MILLER_RABIN_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SUB_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CNT_LSB_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXPTMOD_C +| | | +--->BN_MP_INVMOD_C +| | | | +--->BN_FAST_MP_INVMOD_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_MOD_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_DIV_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_SET_C +| | | | | | | +--->BN_MP_COUNT_BITS_C +| | | | | | | +--->BN_MP_ABS_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INVMOD_SLOW_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_MOD_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_DIV_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_SET_C +| | | | | | | +--->BN_MP_COUNT_BITS_C +| | | | | | | +--->BN_MP_ABS_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_REDUCE_IS_2K_L_C +| | | +--->BN_S_MP_EXPTMOD_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_REDUCE_SETUP_C +| | | | | +--->BN_MP_2EXPT_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_REDUCE_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_REDUCE_2K_SETUP_L_C +| | | | | +--->BN_MP_2EXPT_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_REDUCE_2K_L_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MOD_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_SQR_C +| | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_FAST_S_MP_SQR_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SQR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_DR_IS_MODULUS_C +| | | +--->BN_MP_REDUCE_IS_2K_C +| | | | +--->BN_MP_REDUCE_2K_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_EXPTMOD_FAST_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_MONTGOMERY_SETUP_C +| | | | +--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_MONTGOMERY_REDUCE_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_DR_SETUP_C +| | | | +--->BN_MP_DR_REDUCE_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_REDUCE_2K_SETUP_C +| | | | | +--->BN_MP_2EXPT_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_REDUCE_2K_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +| | | | | +--->BN_MP_2EXPT_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MULMOD_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_MOD_C +| | | | | | +--->BN_MP_DIV_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_SET_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_SQR_C +| | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_FAST_S_MP_SQR_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SQR_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_CMP_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_SQRMOD_C +| | | +--->BN_MP_SQR_C +| | | | +--->BN_MP_TOOM_SQR_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_FAST_S_MP_SQR_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_ABS_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_SET_LONG_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_GCD_C +| | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CNT_LSB_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_KRONECKER_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CNT_LSB_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_ABS_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SUB_D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CNT_LSB_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_GET_BIT_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_READ_RADIX_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SUB_D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| | +--->BN_MP_CMP_MAG_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_RAND_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SUB_D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_INIT_MULTI_C +| +--->BN_MP_INIT_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_SET_LONG_C ++--->BN_MP_SQR_C +| +--->BN_MP_TOOM_SQR_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_KARATSUBA_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_SQR_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_SUB_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_ADD_D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_KRONECKER_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CNT_LSB_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_MOD_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_ABS_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_GCD_C +| +--->BN_MP_ABS_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CNT_LSB_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_MP_EXCH_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_ADD_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_MUL_2_C +| +--->BN_MP_GROW_C ++--->BN_MP_MUL_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_MUL_C +| +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_MOD_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_EXCH_C ++--->BN_MP_GET_BIT_C ++--->BN_MP_EXCH_C ++--->BN_MP_CMP_C +| +--->BN_MP_CMP_MAG_C ++--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_CLEAR_C + + +BN_MP_PRIME_IS_DIVISIBLE_C ++--->BN_MP_MOD_D_C +| +--->BN_MP_DIV_D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C + + +BN_MP_PRIME_IS_PRIME_C ++--->BN_MP_IS_SQUARE_C +| +--->BN_MP_MOD_D_C +| | +--->BN_MP_DIV_D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SET_INT_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_SET_INT_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_MOD_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_ABS_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| +--->BN_MP_GET_INT_C +| +--->BN_MP_SQRT_C +| | +--->BN_MP_N_ROOT_C +| | | +--->BN_MP_N_ROOT_EX_C +| | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_EXPT_D_EX_C +| | | | | +--->BN_MP_INIT_COPY_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_SQR_C +| | | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_FAST_S_MP_SQR_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SQR_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_ABS_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2D_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_COPY_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_SUB_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_ABS_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_SQR_C +| | +--->BN_MP_TOOM_SQR_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_KARATSUBA_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_FAST_S_MP_SQR_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_CMP_D_C ++--->BN_MP_PRIME_IS_DIVISIBLE_C +| +--->BN_MP_MOD_D_C +| | +--->BN_MP_DIV_D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C ++--->BN_MP_INIT_SET_C +| +--->BN_MP_INIT_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C ++--->BN_MP_PRIME_MILLER_RABIN_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_SUB_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CNT_LSB_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXPTMOD_C +| | +--->BN_MP_INVMOD_C +| | | +--->BN_FAST_MP_INVMOD_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_MOD_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_COUNT_BITS_C +| | | | | | +--->BN_MP_ABS_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_INVMOD_SLOW_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_MOD_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_COUNT_BITS_C +| | | | | | +--->BN_MP_ABS_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_ABS_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_REDUCE_IS_2K_L_C +| | +--->BN_S_MP_EXPTMOD_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_REDUCE_SETUP_C +| | | | +--->BN_MP_2EXPT_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_REDUCE_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_REDUCE_2K_SETUP_L_C +| | | | +--->BN_MP_2EXPT_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_REDUCE_2K_L_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SQR_C +| | | | +--->BN_MP_TOOM_SQR_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_FAST_S_MP_SQR_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_DR_IS_MODULUS_C +| | +--->BN_MP_REDUCE_IS_2K_C +| | | +--->BN_MP_REDUCE_2K_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_EXPTMOD_FAST_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_MONTGOMERY_SETUP_C +| | | +--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_MONTGOMERY_REDUCE_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_DR_SETUP_C +| | | +--->BN_MP_DR_REDUCE_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_REDUCE_2K_SETUP_C +| | | | +--->BN_MP_2EXPT_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_REDUCE_2K_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +| | | | +--->BN_MP_2EXPT_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MULMOD_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_MOD_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SQR_C +| | | | +--->BN_MP_TOOM_SQR_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_FAST_S_MP_SQR_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SQR_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_EXCH_C +| +--->BN_MP_CMP_C +| | +--->BN_MP_CMP_MAG_C +| +--->BN_MP_SQRMOD_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_PRIME_FROBENIUS_UNDERWOOD_C +| +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_SET_LONG_C +| +--->BN_MP_SQR_C +| | +--->BN_MP_TOOM_SQR_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_KARATSUBA_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_FAST_S_MP_SQR_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_SUB_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_KRONECKER_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CNT_LSB_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_GCD_C +| | +--->BN_MP_ABS_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CNT_LSB_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_EXCH_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_ADD_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_MUL_2_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_MUL_C +| | +--->BN_MP_TOOM_MUL_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_KARATSUBA_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_MOD_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_ABS_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_GET_BIT_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CMP_C +| | +--->BN_MP_CMP_MAG_C +| +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_INIT_C +| +--->BN_MP_SET_LONG_C +| +--->BN_MP_MUL_C +| | +--->BN_MP_TOOM_MUL_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_KARATSUBA_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_MULTI_C +| +--->BN_MP_GCD_C +| | +--->BN_MP_ABS_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_CNT_LSB_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_EXCH_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| | +--->BN_MP_CMP_MAG_C +| +--->BN_MP_KRONECKER_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_MP_CNT_LSB_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| +--->BN_MP_ADD_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_SUB_D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CNT_LSB_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_MUL_2_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_MOD_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_ABS_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| +--->BN_MP_SQR_C +| | +--->BN_MP_TOOM_SQR_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_KARATSUBA_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_CMP_MAG_C +| | +--->BN_FAST_S_MP_SQR_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_GET_BIT_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_2_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_SUB_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_MULTI_C ++--->BN_MP_READ_RADIX_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_ADD_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_SUB_D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_C +| +--->BN_MP_CMP_MAG_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_RAND_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_ADD_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_SUB_D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C ++--->BN_MP_DIV_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C + + +BN_MP_PRIME_MILLER_RABIN_C ++--->BN_MP_CMP_D_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_SUB_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_ADD_D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CNT_LSB_C ++--->BN_MP_DIV_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_EXPTMOD_C +| +--->BN_MP_INVMOD_C +| | +--->BN_FAST_MP_INVMOD_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_ABS_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INVMOD_SLOW_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_ABS_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_ABS_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_REDUCE_IS_2K_L_C +| +--->BN_S_MP_EXPTMOD_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_REDUCE_SETUP_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_2K_SETUP_L_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_2K_L_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_DR_IS_MODULUS_C +| +--->BN_MP_REDUCE_IS_2K_C +| | +--->BN_MP_REDUCE_2K_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_EXPTMOD_FAST_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_MONTGOMERY_SETUP_C +| | +--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | +--->BN_MP_MONTGOMERY_REDUCE_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | +--->BN_MP_DR_SETUP_C +| | +--->BN_MP_DR_REDUCE_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | +--->BN_MP_REDUCE_2K_SETUP_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_2K_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SET_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MULMOD_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_EXCH_C ++--->BN_MP_CMP_C +| +--->BN_MP_CMP_MAG_C ++--->BN_MP_SQRMOD_C +| +--->BN_MP_SQR_C +| | +--->BN_MP_TOOM_SQR_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_KARATSUBA_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_FAST_S_MP_SQR_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_MOD_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_ABS_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C + + +BN_MP_PRIME_NEXT_PRIME_C ++--->BN_MP_CMP_D_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_SUB_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_ADD_D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_MOD_D_C +| +--->BN_MP_DIV_D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_INIT_C ++--->BN_MP_ADD_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_PRIME_IS_PRIME_C +| +--->BN_MP_IS_SQUARE_C +| | +--->BN_MP_INIT_SET_INT_C +| | | +--->BN_MP_SET_INT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_GET_INT_C +| | +--->BN_MP_SQRT_C +| | | +--->BN_MP_N_ROOT_C +| | | | +--->BN_MP_N_ROOT_EX_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_EXPT_D_EX_C +| | | | | | +--->BN_MP_INIT_COPY_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_MUL_C +| | | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_ADD_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_ADD_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_SQR_C +| | | | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_ADD_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_ADD_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_FAST_S_MP_SQR_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SQR_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_COUNT_BITS_C +| | | | | | +--->BN_MP_ABS_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2D_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_COPY_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_PRIME_IS_DIVISIBLE_C +| +--->BN_MP_INIT_SET_C +| +--->BN_MP_PRIME_MILLER_RABIN_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CNT_LSB_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXPTMOD_C +| | | +--->BN_MP_INVMOD_C +| | | | +--->BN_FAST_MP_INVMOD_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_MOD_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_DIV_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_COUNT_BITS_C +| | | | | | | +--->BN_MP_ABS_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INVMOD_SLOW_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_MOD_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_DIV_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_COUNT_BITS_C +| | | | | | | +--->BN_MP_ABS_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_REDUCE_IS_2K_L_C +| | | +--->BN_S_MP_EXPTMOD_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_REDUCE_SETUP_C +| | | | | +--->BN_MP_2EXPT_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_REDUCE_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_REDUCE_2K_SETUP_L_C +| | | | | +--->BN_MP_2EXPT_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_REDUCE_2K_L_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MOD_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_SQR_C +| | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_FAST_S_MP_SQR_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SQR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_DR_IS_MODULUS_C +| | | +--->BN_MP_REDUCE_IS_2K_C +| | | | +--->BN_MP_REDUCE_2K_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_EXPTMOD_FAST_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_MONTGOMERY_SETUP_C +| | | | +--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_MONTGOMERY_REDUCE_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_DR_SETUP_C +| | | | +--->BN_MP_DR_REDUCE_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_REDUCE_2K_SETUP_C +| | | | | +--->BN_MP_2EXPT_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_REDUCE_2K_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +| | | | | +--->BN_MP_2EXPT_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MULMOD_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_MOD_C +| | | | | | +--->BN_MP_DIV_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MOD_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_SQR_C +| | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_FAST_S_MP_SQR_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SQR_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_CMP_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_SQRMOD_C +| | | +--->BN_MP_SQR_C +| | | | +--->BN_MP_TOOM_SQR_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_FAST_S_MP_SQR_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_ABS_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_PRIME_FROBENIUS_UNDERWOOD_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SET_LONG_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_KRONECKER_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CNT_LSB_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_ABS_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_GCD_C +| | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CNT_LSB_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_GET_BIT_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CMP_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SET_LONG_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_GCD_C +| | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CNT_LSB_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_KRONECKER_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CNT_LSB_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_ABS_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CNT_LSB_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_GET_BIT_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_READ_RADIX_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| | +--->BN_MP_CMP_MAG_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_RAND_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_CLEAR_C + + +BN_MP_PRIME_RABIN_MILLER_TRIALS_C + + +BN_MP_PRIME_RANDOM_EX_C ++--->BN_MP_READ_UNSIGNED_BIN_C +| +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_PRIME_IS_PRIME_C +| +--->BN_MP_IS_SQUARE_C +| | +--->BN_MP_MOD_D_C +| | | +--->BN_MP_DIV_D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SET_INT_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_SET_INT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_GET_INT_C +| | +--->BN_MP_SQRT_C +| | | +--->BN_MP_N_ROOT_C +| | | | +--->BN_MP_N_ROOT_EX_C +| | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_EXPT_D_EX_C +| | | | | | +--->BN_MP_INIT_COPY_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_MUL_C +| | | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_ADD_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_ADD_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_SQR_C +| | | | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_ADD_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_ADD_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_FAST_S_MP_SQR_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SQR_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_COUNT_BITS_C +| | | | | | +--->BN_MP_ABS_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2D_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_COPY_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_SUB_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_D_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CMP_D_C +| +--->BN_MP_PRIME_IS_DIVISIBLE_C +| | +--->BN_MP_MOD_D_C +| | | +--->BN_MP_DIV_D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SET_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| +--->BN_MP_PRIME_MILLER_RABIN_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SUB_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CNT_LSB_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXPTMOD_C +| | | +--->BN_MP_INVMOD_C +| | | | +--->BN_FAST_MP_INVMOD_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_MOD_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_DIV_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_SET_C +| | | | | | | +--->BN_MP_COUNT_BITS_C +| | | | | | | +--->BN_MP_ABS_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INVMOD_SLOW_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_MOD_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_DIV_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_SET_C +| | | | | | | +--->BN_MP_COUNT_BITS_C +| | | | | | | +--->BN_MP_ABS_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_REDUCE_IS_2K_L_C +| | | +--->BN_S_MP_EXPTMOD_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_REDUCE_SETUP_C +| | | | | +--->BN_MP_2EXPT_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_REDUCE_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_REDUCE_2K_SETUP_L_C +| | | | | +--->BN_MP_2EXPT_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_REDUCE_2K_L_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MOD_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_SQR_C +| | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_FAST_S_MP_SQR_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SQR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_DR_IS_MODULUS_C +| | | +--->BN_MP_REDUCE_IS_2K_C +| | | | +--->BN_MP_REDUCE_2K_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_EXPTMOD_FAST_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_MONTGOMERY_SETUP_C +| | | | +--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_MONTGOMERY_REDUCE_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_DR_SETUP_C +| | | | +--->BN_MP_DR_REDUCE_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_REDUCE_2K_SETUP_C +| | | | | +--->BN_MP_2EXPT_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_REDUCE_2K_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +| | | | | +--->BN_MP_2EXPT_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MULMOD_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_MOD_C +| | | | | | +--->BN_MP_DIV_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_SET_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_SQR_C +| | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_FAST_S_MP_SQR_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SQR_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_CMP_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_SQRMOD_C +| | | +--->BN_MP_SQR_C +| | | | +--->BN_MP_TOOM_SQR_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_FAST_S_MP_SQR_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_ABS_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_PRIME_FROBENIUS_UNDERWOOD_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SET_LONG_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SUB_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_KRONECKER_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CNT_LSB_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_ABS_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_GCD_C +| | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CNT_LSB_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_ADD_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_GET_BIT_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CMP_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_SET_LONG_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_GCD_C +| | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CNT_LSB_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_KRONECKER_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CNT_LSB_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_ABS_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SUB_D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CNT_LSB_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_GET_BIT_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_READ_RADIX_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SUB_D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| | +--->BN_MP_CMP_MAG_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_RAND_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SUB_D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_SUB_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_ADD_D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_DIV_2_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_MUL_2_C +| +--->BN_MP_GROW_C ++--->BN_MP_ADD_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C + + +BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C ++--->BN_MP_PRIME_IS_PRIME_C +| +--->BN_MP_IS_SQUARE_C +| | +--->BN_MP_MOD_D_C +| | | +--->BN_MP_DIV_D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SET_INT_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_SET_INT_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_GET_INT_C +| | +--->BN_MP_SQRT_C +| | | +--->BN_MP_N_ROOT_C +| | | | +--->BN_MP_N_ROOT_EX_C +| | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_EXPT_D_EX_C +| | | | | | +--->BN_MP_INIT_COPY_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_MUL_C +| | | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_ADD_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_ADD_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_SQR_C +| | | | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_ADD_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_SUB_C +| | | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_ADD_C +| | | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_FAST_S_MP_SQR_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SQR_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_COUNT_BITS_C +| | | | | | +--->BN_MP_ABS_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2D_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_COPY_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_SUB_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_D_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_CMP_D_C +| +--->BN_MP_PRIME_IS_DIVISIBLE_C +| | +--->BN_MP_MOD_D_C +| | | +--->BN_MP_DIV_D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SET_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| +--->BN_MP_PRIME_MILLER_RABIN_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SUB_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CNT_LSB_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXPTMOD_C +| | | +--->BN_MP_INVMOD_C +| | | | +--->BN_FAST_MP_INVMOD_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_MOD_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_DIV_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_SET_C +| | | | | | | +--->BN_MP_COUNT_BITS_C +| | | | | | | +--->BN_MP_ABS_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INVMOD_SLOW_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_MOD_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_DIV_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_SET_C +| | | | | | | +--->BN_MP_COUNT_BITS_C +| | | | | | | +--->BN_MP_ABS_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | | | +--->BN_MP_CLEAR_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_REDUCE_IS_2K_L_C +| | | +--->BN_S_MP_EXPTMOD_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_REDUCE_SETUP_C +| | | | | +--->BN_MP_2EXPT_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_REDUCE_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_REDUCE_2K_SETUP_L_C +| | | | | +--->BN_MP_2EXPT_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_REDUCE_2K_L_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MOD_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_SQR_C +| | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_FAST_S_MP_SQR_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SQR_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_DR_IS_MODULUS_C +| | | +--->BN_MP_REDUCE_IS_2K_C +| | | | +--->BN_MP_REDUCE_2K_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_EXPTMOD_FAST_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_MONTGOMERY_SETUP_C +| | | | +--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_MONTGOMERY_REDUCE_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_DR_SETUP_C +| | | | +--->BN_MP_DR_REDUCE_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_REDUCE_2K_SETUP_C +| | | | | +--->BN_MP_2EXPT_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_REDUCE_2K_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +| | | | | +--->BN_MP_2EXPT_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_SET_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MULMOD_C +| | | | | +--->BN_MP_MUL_C +| | | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | | +--->BN_MP_COPY_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_MUL_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_2_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_DIV_3_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_MOD_C +| | | | | | +--->BN_MP_DIV_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_MP_COPY_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | | +--->BN_MP_SET_C +| | | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_C +| | | | | | | +--->BN_MP_SUB_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_ADD_C +| | | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_MUL_D_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_C +| | | | | +--->BN_MP_DIV_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_SQR_C +| | | | | +--->BN_MP_TOOM_SQR_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_FAST_S_MP_SQR_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SQR_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_MUL_C +| | | | | +--->BN_MP_TOOM_MUL_C +| | | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_MUL_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_SUB_C +| | | | | | | +--->BN_S_MP_ADD_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_2_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_2D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_MUL_D_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_DIV_3_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_ADD_C +| | | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | | +--->BN_S_MP_SUB_C +| | | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_CMP_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_SQRMOD_C +| | | +--->BN_MP_SQR_C +| | | | +--->BN_MP_TOOM_SQR_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_FAST_S_MP_SQR_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_ABS_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_PRIME_FROBENIUS_UNDERWOOD_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SET_LONG_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SUB_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_KRONECKER_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CNT_LSB_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_ABS_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_GCD_C +| | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CNT_LSB_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_ADD_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_INIT_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_INIT_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_GET_BIT_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CMP_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_READ_RADIX_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SUB_D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| | +--->BN_MP_CMP_MAG_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_RAND_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SUB_D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_MUL_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_INIT_C ++--->BN_MP_SET_LONG_C ++--->BN_MP_MUL_C +| +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_CLEAR_C ++--->BN_MP_INIT_MULTI_C ++--->BN_MP_GCD_C +| +--->BN_MP_ABS_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_CNT_LSB_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_MP_EXCH_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_D_C ++--->BN_MP_CMP_C +| +--->BN_MP_CMP_MAG_C ++--->BN_MP_KRONECKER_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_CNT_LSB_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_MOD_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_ABS_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C ++--->BN_MP_ADD_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_SUB_D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CNT_LSB_C ++--->BN_MP_DIV_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_MUL_2_C +| +--->BN_MP_GROW_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_MOD_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C ++--->BN_MP_SQR_C +| +--->BN_MP_TOOM_SQR_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_KARATSUBA_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| +--->BN_FAST_S_MP_SQR_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_GET_BIT_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_DIV_2_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_SUB_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_MULTI_C + + +BN_MP_RADIX_SIZE_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_DIV_D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_3_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_CLEAR_C + + +BN_MP_RADIX_SMAP_C + + +BN_MP_RAND_C ++--->BN_MP_ZERO_C ++--->BN_MP_ADD_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_SUB_D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_LSHD_C +| +--->BN_MP_GROW_C +| +--->BN_MP_RSHD_C + + +BN_MP_READ_RADIX_C ++--->BN_MP_ZERO_C ++--->BN_MP_MUL_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_ADD_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_SUB_D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C + + +BN_MP_READ_SIGNED_BIN_C ++--->BN_MP_READ_UNSIGNED_BIN_C +| +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C + + +BN_MP_READ_UNSIGNED_BIN_C ++--->BN_MP_GROW_C ++--->BN_MP_ZERO_C ++--->BN_MP_MUL_2D_C +| +--->BN_MP_COPY_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLAMP_C + + +BN_MP_REDUCE_2K_C ++--->BN_MP_INIT_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_DIV_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_MUL_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_S_MP_ADD_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_MAG_C ++--->BN_S_MP_SUB_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C + + +BN_MP_REDUCE_2K_L_C ++--->BN_MP_INIT_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_DIV_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_MUL_C +| +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_S_MP_ADD_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_MAG_C ++--->BN_S_MP_SUB_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C + + +BN_MP_REDUCE_2K_SETUP_C ++--->BN_MP_INIT_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_2EXPT_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_GROW_C ++--->BN_MP_CLEAR_C ++--->BN_S_MP_SUB_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C + + +BN_MP_REDUCE_2K_SETUP_L_C ++--->BN_MP_INIT_C ++--->BN_MP_2EXPT_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_GROW_C ++--->BN_MP_COUNT_BITS_C ++--->BN_S_MP_SUB_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C + + +BN_MP_REDUCE_C ++--->BN_MP_REDUCE_SETUP_C +| +--->BN_MP_2EXPT_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_RSHD_C +| +--->BN_MP_ZERO_C ++--->BN_MP_MUL_C +| +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_S_MP_MUL_HIGH_DIGS_C +| +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C ++--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_MOD_2D_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_S_MP_MUL_DIGS_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_D_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_LSHD_C +| +--->BN_MP_GROW_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_C +| +--->BN_MP_CMP_MAG_C ++--->BN_S_MP_SUB_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C + + +BN_MP_REDUCE_IS_2K_C ++--->BN_MP_REDUCE_2K_C +| +--->BN_MP_INIT_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_COUNT_BITS_C + + +BN_MP_REDUCE_IS_2K_L_C + + +BN_MP_REDUCE_SETUP_C ++--->BN_MP_2EXPT_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_GROW_C ++--->BN_MP_DIV_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_SET_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_ABS_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_INIT_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C + + +BN_MP_RSHD_C ++--->BN_MP_ZERO_C + + +BN_MP_SET_C ++--->BN_MP_ZERO_C + + +BN_MP_SET_DOUBLE_C ++--->BN_MP_SET_LONG_LONG_C ++--->BN_MP_DIV_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_MUL_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_GROW_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| +--->BN_MP_CLAMP_C + + +BN_MP_SET_INT_C ++--->BN_MP_ZERO_C ++--->BN_MP_MUL_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_GROW_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLAMP_C + + +BN_MP_SET_LONG_C + + +BN_MP_SET_LONG_LONG_C + + +BN_MP_SHRINK_C + + +BN_MP_SIGNED_BIN_SIZE_C ++--->BN_MP_UNSIGNED_BIN_SIZE_C +| +--->BN_MP_COUNT_BITS_C + + +BN_MP_SQRMOD_C ++--->BN_MP_INIT_C ++--->BN_MP_SQR_C +| +--->BN_MP_TOOM_SQR_C +| | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_KARATSUBA_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_SQR_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_CLEAR_C ++--->BN_MP_MOD_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C + + +BN_MP_SQRTMOD_PRIME_C ++--->BN_MP_CMP_D_C ++--->BN_MP_ZERO_C ++--->BN_MP_JACOBI_C +| +--->BN_MP_KRONECKER_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CNT_LSB_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_COUNT_BITS_C +| | | | +--->BN_MP_ABS_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_INIT_MULTI_C +| +--->BN_MP_INIT_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_MOD_D_C +| +--->BN_MP_DIV_D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_ADD_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_SUB_D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_DIV_2_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_EXPTMOD_C +| +--->BN_MP_INIT_C +| +--->BN_MP_INVMOD_C +| | +--->BN_FAST_MP_INVMOD_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_ABS_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2D_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_INIT_COPY_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_INVMOD_SLOW_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_COUNT_BITS_C +| | | | | +--->BN_MP_ABS_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2D_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_INIT_COPY_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_ABS_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_REDUCE_IS_2K_L_C +| +--->BN_S_MP_EXPTMOD_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_REDUCE_SETUP_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_S_MP_MUL_HIGH_DIGS_C +| | | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_2K_SETUP_L_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_2K_L_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_SET_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_DR_IS_MODULUS_C +| +--->BN_MP_REDUCE_IS_2K_C +| | +--->BN_MP_REDUCE_2K_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_EXPTMOD_FAST_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_MONTGOMERY_SETUP_C +| | +--->BN_FAST_MP_MONTGOMERY_REDUCE_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | +--->BN_MP_MONTGOMERY_REDUCE_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | +--->BN_MP_DR_SETUP_C +| | +--->BN_MP_DR_REDUCE_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | +--->BN_MP_REDUCE_2K_SETUP_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_REDUCE_2K_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +| | | +--->BN_MP_2EXPT_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MULMOD_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_COPY_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_MOD_C +| | | | +--->BN_MP_DIV_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_MP_COPY_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_SET_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2D_C +| | | | | | +--->BN_MP_MOD_2D_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_INIT_COPY_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_MOD_C +| | | +--->BN_MP_DIV_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2D_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_SQR_C +| | | +--->BN_MP_TOOM_SQR_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_SQR_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_FAST_S_MP_SQR_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SQR_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_EXCH_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_SUB_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_SET_INT_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_SQRMOD_C +| +--->BN_MP_INIT_C +| +--->BN_MP_SQR_C +| | +--->BN_MP_TOOM_SQR_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_KARATSUBA_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_FAST_S_MP_SQR_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SQR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_MOD_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_ABS_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C ++--->BN_MP_MULMOD_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_MUL_C +| | +--->BN_MP_TOOM_MUL_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_KARATSUBA_MUL_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_C +| +--->BN_MP_CLEAR_C +| +--->BN_MP_MOD_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_SET_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_ABS_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | +--->BN_MP_INIT_C +| | | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C ++--->BN_MP_SET_C ++--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_CLEAR_C + + +BN_MP_SQRT_C ++--->BN_MP_N_ROOT_C +| +--->BN_MP_N_ROOT_EX_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_SET_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_EXPT_D_EX_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_MUL_C +| | | | +--->BN_MP_TOOM_MUL_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_KARATSUBA_MUL_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_MUL_DIGS_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_SQR_C +| | | | +--->BN_MP_TOOM_SQR_C +| | | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_MOD_2D_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_MUL_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_SUB_C +| | | | | | +--->BN_S_MP_ADD_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | | | +--->BN_S_MP_SUB_C +| | | | | | | +--->BN_MP_GROW_C +| | | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_2_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_2D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_MUL_D_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_DIV_3_C +| | | | | | +--->BN_MP_INIT_SIZE_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_KARATSUBA_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_RSHD_C +| | | | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_ADD_C +| | | | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_FAST_S_MP_SQR_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SQR_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | +--->BN_MP_MUL_C +| | | +--->BN_MP_TOOM_MUL_C +| | | | +--->BN_MP_INIT_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_ZERO_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_MUL_2_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_SUB_C +| | | | | +--->BN_S_MP_ADD_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_2_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_2D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_MUL_D_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_DIV_3_C +| | | | | +--->BN_MP_INIT_SIZE_C +| | | | | +--->BN_MP_CLAMP_C +| | | | | +--->BN_MP_EXCH_C +| | | | | +--->BN_MP_CLEAR_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLEAR_MULTI_C +| | | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_KARATSUBA_MUL_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_ADD_C +| | | | | +--->BN_MP_CMP_MAG_C +| | | | | +--->BN_S_MP_SUB_C +| | | | | | +--->BN_MP_GROW_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_RSHD_C +| | | | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_MUL_DIGS_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_INIT_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_COUNT_BITS_C +| | | +--->BN_MP_ABS_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2D_C +| | | | +--->BN_MP_MOD_2D_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_COPY_C +| | | | +--->BN_MP_CLEAR_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_CMP_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_SUB_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_ZERO_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_RSHD_C ++--->BN_MP_DIV_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_SET_C +| +--->BN_MP_COUNT_BITS_C +| +--->BN_MP_ABS_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_DIV_2_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_MAG_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_C + + +BN_MP_SQR_C ++--->BN_MP_TOOM_SQR_C +| +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_INIT_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_RSHD_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_MUL_2_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_2_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_MUL_2D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_MUL_D_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_3_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_KARATSUBA_SQR_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_CLAMP_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| +--->BN_MP_ADD_C +| | +--->BN_MP_CMP_MAG_C +| +--->BN_MP_CLEAR_C ++--->BN_FAST_S_MP_SQR_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_S_MP_SQR_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C + + +BN_MP_SUBMOD_C ++--->BN_MP_INIT_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C ++--->BN_MP_MOD_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_COUNT_BITS_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C + + +BN_MP_SUB_C ++--->BN_S_MP_ADD_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CMP_MAG_C ++--->BN_S_MP_SUB_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C + + +BN_MP_SUB_D_C ++--->BN_MP_GROW_C ++--->BN_MP_ADD_D_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLAMP_C + + +BN_MP_TC_AND_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_INIT_SET_INT_C +| +--->BN_MP_INIT_C +| +--->BN_MP_SET_INT_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_MUL_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_GROW_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_INIT_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C ++--->BN_MP_AND_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C + + +BN_MP_TC_DIV_2D_C ++--->BN_MP_DIV_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_ADD_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_SUB_D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_SUB_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C + + +BN_MP_TC_OR_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_INIT_SET_INT_C +| +--->BN_MP_INIT_C +| +--->BN_MP_SET_INT_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_MUL_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_GROW_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_INIT_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C ++--->BN_MP_OR_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C + + +BN_MP_TC_XOR_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_INIT_SET_INT_C +| +--->BN_MP_INIT_C +| +--->BN_MP_SET_INT_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_MUL_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_GROW_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_INIT_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C ++--->BN_MP_XOR_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C + + +BN_MP_TOOM_MUL_C ++--->BN_MP_INIT_MULTI_C +| +--->BN_MP_INIT_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_MOD_2D_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_RSHD_C +| +--->BN_MP_ZERO_C ++--->BN_MP_MUL_C +| +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_MUL_2_C +| +--->BN_MP_GROW_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_DIV_2_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_MUL_2D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_LSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_MUL_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_DIV_3_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_LSHD_C +| +--->BN_MP_GROW_C ++--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_CLEAR_C + + +BN_MP_TOOM_SQR_C ++--->BN_MP_INIT_MULTI_C +| +--->BN_MP_INIT_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_MOD_2D_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_RSHD_C +| +--->BN_MP_ZERO_C ++--->BN_MP_SQR_C +| +--->BN_MP_KARATSUBA_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_CLEAR_C +| +--->BN_FAST_S_MP_SQR_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_INIT_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C ++--->BN_MP_MUL_2_C +| +--->BN_MP_GROW_C ++--->BN_MP_ADD_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_SUB_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_DIV_2_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_MUL_2D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_LSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_MUL_D_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_DIV_3_C +| +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_LSHD_C +| +--->BN_MP_GROW_C ++--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_CLEAR_C + + +BN_MP_TORADIX_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_DIV_D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_3_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_CLEAR_C + + +BN_MP_TORADIX_N_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_DIV_D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_DIV_3_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_CLEAR_C + + +BN_MP_TO_SIGNED_BIN_C ++--->BN_MP_TO_UNSIGNED_BIN_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C + + +BN_MP_TO_SIGNED_BIN_N_C ++--->BN_MP_SIGNED_BIN_SIZE_C +| +--->BN_MP_UNSIGNED_BIN_SIZE_C +| | +--->BN_MP_COUNT_BITS_C ++--->BN_MP_TO_SIGNED_BIN_C +| +--->BN_MP_TO_UNSIGNED_BIN_C +| | +--->BN_MP_INIT_COPY_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLEAR_C + + +BN_MP_TO_UNSIGNED_BIN_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_DIV_2D_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ZERO_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_RSHD_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_CLEAR_C + + +BN_MP_TO_UNSIGNED_BIN_N_C ++--->BN_MP_UNSIGNED_BIN_SIZE_C +| +--->BN_MP_COUNT_BITS_C ++--->BN_MP_TO_UNSIGNED_BIN_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CLEAR_C + + +BN_MP_UNSIGNED_BIN_SIZE_C ++--->BN_MP_COUNT_BITS_C + + +BN_MP_XOR_C ++--->BN_MP_INIT_COPY_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_COPY_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_CLEAR_C ++--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_C + + +BN_MP_ZERO_C + + +BN_PRIME_TAB_C + + +BN_REVERSE_C + + +BN_S_MP_ADD_C ++--->BN_MP_GROW_C ++--->BN_MP_CLAMP_C + + +BN_S_MP_EXPTMOD_C ++--->BN_MP_COUNT_BITS_C ++--->BN_MP_INIT_C ++--->BN_MP_CLEAR_C ++--->BN_MP_REDUCE_SETUP_C +| +--->BN_MP_2EXPT_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_REDUCE_C +| +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| +--->BN_MP_RSHD_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_MUL_C +| | +--->BN_MP_TOOM_MUL_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_KARATSUBA_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| +--->BN_S_MP_MUL_HIGH_DIGS_C +| | +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_MOD_2D_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| +--->BN_MP_SUB_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_D_C +| +--->BN_MP_SET_C +| | +--->BN_MP_ZERO_C +| +--->BN_MP_LSHD_C +| | +--->BN_MP_GROW_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_C +| | +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_REDUCE_2K_SETUP_L_C +| +--->BN_MP_2EXPT_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_GROW_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_REDUCE_2K_L_C +| +--->BN_MP_DIV_2D_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_MUL_C +| | +--->BN_MP_TOOM_MUL_C +| | | +--->BN_MP_INIT_MULTI_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_ZERO_C +| | | | +--->BN_MP_COPY_C +| | | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_COPY_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_MUL_2_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_SUB_C +| | | | +--->BN_S_MP_ADD_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_2_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_2D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_MUL_D_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_DIV_3_C +| | | | +--->BN_MP_INIT_SIZE_C +| | | | +--->BN_MP_CLAMP_C +| | | | +--->BN_MP_EXCH_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_KARATSUBA_MUL_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_ADD_C +| | | | +--->BN_MP_CMP_MAG_C +| | | | +--->BN_S_MP_SUB_C +| | | | | +--->BN_MP_GROW_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_RSHD_C +| | | | | +--->BN_MP_ZERO_C +| | +--->BN_FAST_S_MP_MUL_DIGS_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_MUL_DIGS_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| +--->BN_S_MP_ADD_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_CMP_MAG_C +| +--->BN_S_MP_SUB_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C ++--->BN_MP_MOD_C +| +--->BN_MP_INIT_SIZE_C +| +--->BN_MP_DIV_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_MP_COPY_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ZERO_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_SET_C +| | +--->BN_MP_ABS_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2D_C +| | | +--->BN_MP_MOD_2D_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_RSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C +| | +--->BN_MP_CLEAR_MULTI_C +| | +--->BN_MP_INIT_COPY_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | +--->BN_MP_RSHD_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CLAMP_C +| +--->BN_MP_EXCH_C +| +--->BN_MP_ADD_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_CMP_MAG_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C ++--->BN_MP_COPY_C +| +--->BN_MP_GROW_C ++--->BN_MP_SQR_C +| +--->BN_MP_TOOM_SQR_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_KARATSUBA_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| +--->BN_FAST_S_MP_SQR_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_SQR_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C ++--->BN_MP_MUL_C +| +--->BN_MP_TOOM_MUL_C +| | +--->BN_MP_INIT_MULTI_C +| | +--->BN_MP_MOD_2D_C +| | | +--->BN_MP_ZERO_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_RSHD_C +| | | +--->BN_MP_ZERO_C +| | +--->BN_MP_MUL_2_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_SUB_C +| | | +--->BN_S_MP_ADD_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_2_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_2D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_LSHD_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_MUL_D_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_CLAMP_C +| | +--->BN_MP_DIV_3_C +| | | +--->BN_MP_INIT_SIZE_C +| | | +--->BN_MP_CLAMP_C +| | | +--->BN_MP_EXCH_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_CLEAR_MULTI_C +| +--->BN_MP_KARATSUBA_MUL_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_S_MP_ADD_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_ADD_C +| | | +--->BN_MP_CMP_MAG_C +| | | +--->BN_S_MP_SUB_C +| | | | +--->BN_MP_GROW_C +| | +--->BN_S_MP_SUB_C +| | | +--->BN_MP_GROW_C +| | +--->BN_MP_LSHD_C +| | | +--->BN_MP_GROW_C +| | | +--->BN_MP_RSHD_C +| | | | +--->BN_MP_ZERO_C +| +--->BN_FAST_S_MP_MUL_DIGS_C +| | +--->BN_MP_GROW_C +| | +--->BN_MP_CLAMP_C +| +--->BN_S_MP_MUL_DIGS_C +| | +--->BN_MP_INIT_SIZE_C +| | +--->BN_MP_CLAMP_C +| | +--->BN_MP_EXCH_C ++--->BN_MP_SET_C +| +--->BN_MP_ZERO_C ++--->BN_MP_EXCH_C + + +BN_S_MP_MUL_DIGS_C ++--->BN_FAST_S_MP_MUL_DIGS_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_INIT_SIZE_C +| +--->BN_MP_INIT_C ++--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_C + + +BN_S_MP_MUL_HIGH_DIGS_C ++--->BN_FAST_S_MP_MUL_HIGH_DIGS_C +| +--->BN_MP_GROW_C +| +--->BN_MP_CLAMP_C ++--->BN_MP_INIT_SIZE_C +| +--->BN_MP_INIT_C ++--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_C + + +BN_S_MP_SQR_C ++--->BN_MP_INIT_SIZE_C +| +--->BN_MP_INIT_C ++--->BN_MP_CLAMP_C ++--->BN_MP_EXCH_C ++--->BN_MP_CLEAR_C + + +BN_S_MP_SUB_C ++--->BN_MP_GROW_C ++--->BN_MP_CLAMP_C + + diff --git a/fsbl/lib/libtommath/changes.txt b/fsbl/lib/libtommath/changes.txt new file mode 100644 index 000000000..aa0c64c8e --- /dev/null +++ b/fsbl/lib/libtommath/changes.txt @@ -0,0 +1,460 @@ +Jan 28th, 2019 +v1.1.0 + -- Christoph Zurnieden contributed FIPS 186.4 compliant + prime-checking (PR #113), several other fixes and a load of documentation + -- Daniel Mendler provided two's-complement functions (PR #124) + and mp_{set,get}_double() (PR #123) + -- Francois Perrad took care of linting the sources, provided all fixes and + a astylerc to auto-format the sources. + -- A bunch of patches by Kevin B Kenny have been back-ported from TCL + -- Jan Nijtmans provided the patches to `const`ify all API + function arguments (also from TCL) + -- mp_rand() has now several native random provider implementations + and doesn't rely on `rand()` anymore + -- Karel Miko provided fixes when building for MS Windows + and re-worked the makefile generating process + -- The entire environment and build logic has been extended and improved + regarding auto-detection of platforms, libtool and a lot more + -- Prevent some potential BOF cases + -- Improved/fixed mp_lshd() and mp_invmod() + -- A load more bugs were fixed by various contributors + + +Aug 29th, 2017 +v1.0.1 + -- Dmitry Kovalenko provided fixes to mp_add_d() and mp_init_copy() + -- Matt Johnston contributed some improvements to mp_div_2d(), + mp_exptmod_fast(), mp_mod() and mp_mulmod() + -- Julien Nabet provided a fix to the error handling in mp_init_multi() + -- Ben Gardner provided a fix regarding usage of reserved keywords + -- Fixed mp_rand() to fill the correct number of bits + -- Fixed mp_invmod() + -- Use the same 64-bit detection code as in libtomcrypt + -- Correct usage of DESTDIR, PREFIX, etc. when installing the library + -- Francois Perrad updated all the perl scripts to an actual perl version + + +Feb 5th, 2016 +v1.0 + -- Bump to 1.0 + -- Dirkjan Bussink provided a faster version of mp_expt_d() + -- Moritz Lenz contributed a fix to mp_mod() + and provided mp_get_long() and mp_set_long() + -- Fixed bugs in mp_read_radix(), mp_radix_size + Thanks to shameister, Gerhard R, + -- Christopher Brown provided mp_export() and mp_import() + -- Improvements in the code of mp_init_copy() + Thanks to ramkumarkoppu, + -- lomereiter provided mp_balance_mul() + -- Alexander Boström from the heimdal project contributed patches to + mp_prime_next_prime() and mp_invmod() and added a mp_isneg() macro + -- Fix build issues for Linux x32 ABI + -- Added mp_get_long_long() and mp_set_long_long() + -- Carlin provided a patch to use arc4random() instead of rand() + on platforms where it is supported + -- Karel Miko provided mp_sqrtmod_prime() + + +July 23rd, 2010 +v0.42.0 + -- Fix for mp_prime_next_prime() bug when checking generated prime + -- allow mp_shrink to shrink initialized, but empty MPI's + -- Added project and solution files for Visual Studio 2005 and Visual Studio 2008. + +March 10th, 2007 +v0.41 -- Wolfgang Ehrhardt suggested a quick fix to mp_div_d() which makes the detection of powers of two quicker. + -- [CRI] Added libtommath.dsp for Visual C++ users. + +December 24th, 2006 +v0.40 -- Updated makefile to properly support LIBNAME + -- Fixed bug in fast_s_mp_mul_high_digs() which overflowed (line 83), thanks Valgrind! + +April 4th, 2006 +v0.39 -- Jim Wigginton pointed out my Montgomery examples in figures 6.4 and 6.6 were off by one, k should be 9 not 8 + -- Bruce Guenter suggested I use --tag=CC for libtool builds where the compiler may think it's C++. + -- "mm" from sci.crypt pointed out that my mp_gcd was sub-optimal (I also updated and corrected the book) + -- updated some of the @@ tags in tommath.src to reflect source changes. + -- updated email and url info in all source files + +Jan 26th, 2006 +v0.38 -- broken makefile.shared fixed + -- removed some carry stores that were not required [updated text] + +November 18th, 2005 +v0.37 -- [Don Porter] reported on a TCL list [HEY SEND ME BUGREPORTS ALREADY!!!] that mp_add_d() would compute -0 with some inputs. Fixed. + -- [rinick@gmail.com] reported the makefile.bcc was messed up. Fixed. + -- [Kevin Kenny] reported some issues with mp_toradix_n(). Now it doesn't require a min of 3 chars of output. + -- Made the make command renamable. Wee + +August 1st, 2005 +v0.36 -- LTM_PRIME_2MSB_ON was fixed and the "OFF" flag was removed. + -- [Peter LaDow] found a typo in the XREALLOC macro + -- [Peter LaDow] pointed out that mp_read_(un)signed_bin should have "const" on the input + -- Ported LTC patch to fix the prime_random_ex() function to get the bitsize correct [and the maskOR flags] + -- Kevin Kenny pointed out a stray // + -- David Hulton pointed out a typo in the textbook [mp_montgomery_setup() pseudo-code] + -- Neal Hamilton (Elliptic Semiconductor) pointed out that my Karatsuba notation was backwards and that I could use + unsigned operations in the routine. + -- Paul Schmidt pointed out a linking error in mp_exptmod() when BN_S_MP_EXPTMOD_C is undefined (and another for read_radix) + -- Updated makefiles to be way more flexible + +March 12th, 2005 +v0.35 -- Stupid XOR function missing line again... oops. + -- Fixed bug in invmod not handling negative inputs correctly [Wolfgang Ehrhardt] + -- Made exteuclid always give positive u3 output...[ Wolfgang Ehrhardt ] + -- [Wolfgang Ehrhardt] Suggested a fix for mp_reduce() which avoided underruns. ;-) + -- mp_rand() would emit one too many digits and it was possible to get a 0 out of it ... oops + -- Added montgomery to the testing to make sure it handles 1..10 digit moduli correctly + -- Fixed bug in comba that would lead to possible erroneous outputs when "pa < digs" + -- Fixed bug in mp_toradix_size for "0" [Kevin Kenny] + -- Updated chapters 1-5 of the textbook ;-) It now talks about the new comba code! + +February 12th, 2005 +v0.34 -- Fixed two more small errors in mp_prime_random_ex() + -- Fixed overflow in mp_mul_d() [Kevin Kenny] + -- Added mp_to_(un)signed_bin_n() functions which do bounds checking for ya [and report the size] + -- Added "large" diminished radix support. Speeds up things like DSA where the moduli is of the form 2^k - P for some P < 2^(k/2) or so + Actually is faster than Montgomery on my AMD64 (and probably much faster on a P4) + -- Updated the manual a bit + -- Ok so I haven't done the textbook work yet... My current freelance gig has landed me in France till the + end of Feb/05. Once I get back I'll have tons of free time and I plan to go to town on the book. + As of this release the API will freeze. At least until the book catches up with all the changes. I welcome + bug reports but new algorithms will have to wait. + +December 23rd, 2004 +v0.33 -- Fixed "small" variant for mp_div() which would munge with negative dividends... + -- Fixed bug in mp_prime_random_ex() which would set the most significant byte to zero when + no special flags were set + -- Fixed overflow [minor] bug in fast_s_mp_sqr() + -- Made the makefiles easier to configure the group/user that ltm will install as + -- Fixed "final carry" bug in comba multipliers. (Volkan Ceylan) + -- Matt Johnston pointed out a missing semi-colon in mp_exptmod + +October 29th, 2004 +v0.32 -- Added "makefile.shared" for shared object support + -- Added more to the build options/configs in the manual + -- Started the Depends framework, wrote dep.pl to scan deps and + produce "callgraph.txt" ;-) + -- Wrote SC_RSA_1 which will enable close to the minimum required to perform + RSA on 32-bit [or 64-bit] platforms with LibTomCrypt + -- Merged in the small/slower mp_div replacement. You can now toggle which + you want to use as your mp_div() at build time. Saves roughly 8KB or so. + -- Renamed a few files and changed some comments to make depends system work better. + (No changes to function names) + -- Merged in new Combas that perform 2 reads per inner loop instead of the older + 3reads/2writes per inner loop of the old code. Really though if you want speed + learn to use TomsFastMath ;-) + +August 9th, 2004 +v0.31 -- "profiled" builds now :-) new timings for Intel Northwoods + -- Added "pretty" build target + -- Update mp_init() to actually assign 0's instead of relying on calloc() + -- "Wolfgang Ehrhardt" found a bug in mp_mul() where if + you multiply a negative by zero you get negative zero as the result. Oops. + -- J Harper from PeerSec let me toy with his AMD64 and I got 60-bit digits working properly + [this also means that I fixed a bug where if sizeof(int) < sizeof(mp_digit) it would bug] + +April 11th, 2004 +v0.30 -- Added "mp_toradix_n" which stores upto "n-1" least significant digits of an mp_int + -- Johan Lindh sent a patch so MSVC wouldn't whine about redefining malloc [in weird dll modes] + -- Henrik Goldman spotted a missing OPT_CAST in mp_fwrite() + -- Tuned tommath.h so that when MP_LOW_MEM is defined MP_PREC shall be reduced. + [I also allow MP_PREC to be externally defined now] + -- Sped up mp_cnt_lsb() by using a 4x4 table [e.g. 4x speedup] + -- Added mp_prime_random_ex() which is a more versatile prime generator accurate to + exact bit lengths (unlike the deprecated but still available mp_prime_random() which + is only accurate to byte lengths). See the new LTM_PRIME_* flags ;-) + -- Alex Polushin contributed an optimized mp_sqrt() as well as mp_get_int() and mp_is_square(). + I've cleaned them all up to be a little more consistent [along with one bug fix] for this release. + -- Added mp_init_set and mp_init_set_int to initialize and set small constants with one function + call. + -- Removed /etclib directory [um LibTomPoly deprecates this]. + -- Fixed mp_mod() so the sign of the result agrees with the sign of the modulus. + ++ N.B. My semester is almost up so expect updates to the textbook to be posted to the libtomcrypt.org + website. + +Jan 25th, 2004 +v0.29 ++ Note: "Henrik" from the v0.28 changelog refers to Henrik Goldman ;-) + -- Added fix to mp_shrink to prevent a realloc when used == 0 [e.g. realloc zero bytes???] + -- Made the mp_prime_rabin_miller_trials() function internal table smaller and also + set the minimum number of tests to two (sounds a bit safer). + -- Added a mp_exteuclid() which computes the extended euclidean algorithm. + -- Fixed a memory leak in s_mp_exptmod() [called when Barrett reduction is to be used] which would arise + if a multiplication or subsequent reduction failed [would not free the temp result]. + -- Made an API change to mp_radix_size(). It now returns an error code and stores the required size + through an "int star" passed to it. + +Dec 24th, 2003 +v0.28 -- Henrik Goldman suggested I add casts to the montomgery code [stores into mu...] so compilers wouldn't + spew [erroneous] diagnostics... fixed. + -- Henrik Goldman also spotted two typos. One in mp_radix_size() and another in mp_toradix(). + -- Added fix to mp_shrink() to avoid a memory leak. + -- Added mp_prime_random() which requires a callback to make truly random primes of a given nature + (idea from chat with Niels Ferguson at Crypto'03) + -- Picked up a second wind. I'm filled with Gooo. Mission Gooo! + -- Removed divisions from mp_reduce_is_2k() + -- Sped up mp_div_d() [general case] to use only one division per digit instead of two. + -- Added the heap macros from LTC to LTM. Now you can easily [by editing four lines of tommath.h] + change the name of the heap functions used in LTM [also compatible with LTC via MPI mode] + -- Added bn_prime_rabin_miller_trials() which gives the number of Rabin-Miller trials to achieve + a failure rate of less than 2^-96 + -- fixed bug in fast_mp_invmod(). The initial testing logic was wrong. An invalid input is not when + "a" and "b" are even it's when "b" is even [the algo is for odd moduli only]. + -- Started a new manual [finally]. It is incomplete and will be finished as time goes on. I had to stop + adding full demos around half way in chapter three so I could at least get a good portion of the + manual done. If you really need help using the library you can always email me! + -- My Textbook is now included as part of the package [all Public Domain] + +Sept 19th, 2003 +v0.27 -- Removed changes.txt~ which was made by accident since "kate" decided it was + a good time to re-enable backups... [kde is fun!] + -- In mp_grow() "a->dp" is not overwritten by realloc call [re: memory leak] + Now if mp_grow() fails the mp_int is still valid and can be cleared via + mp_clear() to reclaim the memory. + -- Henrik Goldman found a buffer overflow bug in mp_add_d(). Fixed. + -- Cleaned up mp_mul_d() to be much easier to read and follow. + +Aug 29th, 2003 +v0.26 -- Fixed typo that caused warning with GCC 3.2 + -- Martin Marcel noticed a bug in mp_neg() that allowed negative zeroes. + Also, Martin is the fellow who noted the bugs in mp_gcd() of 0.24/0.25. + -- Martin Marcel noticed an optimization [and slight bug] in mp_lcm(). + -- Added fix to mp_read_unsigned_bin to prevent a buffer overflow. + -- Beefed up the comments in the baseline multipliers [and montgomery] + -- Added "mont" demo to the makefile.msvc in etc/ + -- Optimized sign compares in mp_cmp from 4 to 2 cases. + +Aug 4th, 2003 +v0.25 -- Fix to mp_gcd again... oops (0,-a) == (-a, 0) == a + -- Fix to mp_clear which didn't reset the sign [Greg Rose] + -- Added mp_error_to_string() to convert return codes to strings. [Greg Rose] + -- Optimized fast_mp_invmod() to do the test for invalid inputs [both even] + first so temps don't have to be initialized if it's going to fail. + -- Optimized mp_gcd() by removing mp_div_2d calls for when one of the inputs + is odd. + -- Tons of new comments, some indentation fixups, etc. + -- mp_jacobi() returns MP_VAL if the modulus is less than or equal to zero. + -- fixed two typos in the header of each file :-) + -- LibTomMath is officially Public Domain [see LICENSE] + +July 15th, 2003 +v0.24 -- Optimized mp_add_d and mp_sub_d to not allocate temporary variables + -- Fixed mp_gcd() so the gcd of 0,0 is 0. Allows the gcd operation to be chained + e.g. (0,0,a) == a [instead of 1] + -- Should be one of the last release for a while. Working on LibTomMath book now. + -- optimized the pprime demo [/etc/pprime.c] to first make a huge table of single + digit primes then it reads them randomly instead of randomly choosing/testing single + digit primes. + +July 12th, 2003 +v0.23 -- Optimized mp_prime_next_prime() to not use mp_mod [via is_divisible()] in each + iteration. Instead now a smaller table is kept of the residues which can be updated + without division. + -- Fixed a bug in next_prime() where an input of zero would be treated as odd and + have two added to it [to move to the next odd]. + -- fixed a bug in prime_fermat() and prime_miller_rabin() which allowed the base + to be negative, zero or one. Normally the test is only valid if the base is + greater than one. + -- changed the next_prime() prototype to accept a new parameter "bbs_style" which + will find the next prime congruent to 3 mod 4. The default [bbs_style==0] will + make primes which are either congruent to 1 or 3 mod 4. + -- fixed mp_read_unsigned_bin() so that it doesn't include both code for + the case DIGIT_BIT < 8 and >= 8 + -- optimized div_d() to easy out on division by 1 [or if a == 0] and use + logical shifts if the divisor is a power of two. + -- the default DIGIT_BIT type was not int for non-default builds. Fixed. + +July 2nd, 2003 +v0.22 -- Fixed up mp_invmod so the result is properly in range now [was always congruent to the inverse...] + -- Fixed up s_mp_exptmod and mp_exptmod_fast so the lower half of the pre-computed table isn't allocated + which makes the algorithm use half as much ram. + -- Fixed the install script not to make the book :-) [which isn't included anyways] + -- added mp_cnt_lsb() which counts how many of the lsbs are zero + -- optimized mp_gcd() to use the new mp_cnt_lsb() to replace multiple divisions by two by a single division. + -- applied similar optimization to mp_prime_miller_rabin(). + -- Fixed a bug in both mp_invmod() and fast_mp_invmod() which tested for odd + via "mp_iseven() == 0" which is not valid [since zero is not even either]. + +June 19th, 2003 +v0.21 -- Fixed bug in mp_mul_d which would not handle sign correctly [would not always forward it] + -- Removed the #line lines from gen.pl [was in violation of ISO C] + +June 8th, 2003 +v0.20 -- Removed the book from the package. Added the TDCAL license document. + -- This release is officially pure-bred TDCAL again [last officially TDCAL based release was v0.16] + +June 6th, 2003 +v0.19 -- Fixed a bug in mp_montgomery_reduce() which was introduced when I tweaked mp_rshd() in the previous release. + Essentially the digits were not trimmed before the compare which cause a subtraction to occur all the time. + -- Fixed up etc/tune.c a bit to stop testing new cutoffs after 16 failures [to find more optimal points]. + Brute force ho! + + +May 29th, 2003 +v0.18 -- Fixed a bug in s_mp_sqr which would handle carries properly just not very elegantly. + (e.g. correct result, just bad looking code) + -- Fixed bug in mp_sqr which still had a 512 constant instead of MP_WARRAY + -- Added Toom-Cook multipliers [needs tuning!] + -- Added efficient divide by 3 algorithm mp_div_3 + -- Re-wrote mp_div_d to be faster than calling mp_div + -- Added in a donated BCC makefile and a single page LTM poster (ahalhabsi@sbcglobal.net) + -- Added mp_reduce_2k which reduces an input modulo n = 2**p - k for any single digit k + -- Made the exptmod system be aware of the 2k reduction algorithms. + -- Rewrote mp_dr_reduce to be smaller, simpler and easier to understand. + +May 17th, 2003 +v0.17 -- Benjamin Goldberg submitted optimized mp_add and mp_sub routines. A new gen.pl as well + as several smaller suggestions. Thanks! + -- removed call to mp_cmp in inner loop of mp_div and put mp_cmp_mag in its place :-) + -- Fixed bug in mp_exptmod that would cause it to fail for odd moduli when DIGIT_BIT != 28 + -- mp_exptmod now also returns errors if the modulus is negative and will handle negative exponents + -- mp_prime_is_prime will now return true if the input is one of the primes in the prime table + -- Damian M Gryski (dgryski@uwaterloo.ca) found a index out of bounds error in the + mp_fast_s_mp_mul_high_digs function which didn't come up before. (fixed) + -- Refactored the DR reduction code so there is only one function per file. + -- Fixed bug in the mp_mul() which would erroneously avoid the faster multiplier [comba] when it was + allowed. The bug would not cause the incorrect value to be produced just less efficient (fixed) + -- Fixed similar bug in the Montgomery reduction code. + -- Added tons of (mp_digit) casts so the 7/15/28/31 bit digit code will work flawlessly out of the box. + Also added limited support for 64-bit machines with a 60-bit digit. Both thanks to Tom Wu (tom@arcot.com) + -- Added new comments here and there, cleaned up some code [style stuff] + -- Fixed a lingering typo in mp_exptmod* that would set bitcnt to zero then one. Very silly stuff :-) + -- Fixed up mp_exptmod_fast so it would set "redux" to the comba Montgomery reduction if allowed. This + saves quite a few calls and if statements. + -- Added etc/mont.c a test of the Montgomery reduction [assuming all else works :-| ] + -- Fixed up etc/tune.c to use a wider test range [more appropriate] also added a x86 based addition which + uses RDTSC for high precision timing. + -- Updated demo/demo.c to remove MPI stuff [won't work anyways], made the tests run for 2 seconds each so its + not so insanely slow. Also made the output space delimited [and fixed up various errors] + -- Added logs directory, logs/graph.dem which will use gnuplot to make a series of PNG files + that go with the pre-made index.html. You have to build [via make timing] and run ltmtest first in the + root of the package. + -- Fixed a bug in mp_sub and mp_add where "-a - -a" or "-a + a" would produce -0 as the result [obviously invalid]. + -- Fixed a bug in mp_rshd. If the count == a.used it should zero/return [instead of shifting] + -- Fixed a "off-by-one" bug in mp_mul2d. The initial size check on alloc would be off by one if the residue + shifting caused a carry. + -- Fixed a bug where s_mp_mul_digs() would not call the Comba based routine if allowed. This made Barrett reduction + slower than it had to be. + +Mar 29th, 2003 +v0.16 -- Sped up mp_div by making normalization one shift call + -- Sped up mp_mul_2d/mp_div_2d by aliasing pointers :-) + -- Cleaned up mp_gcd to use the macros for odd/even detection + -- Added comments here and there, mostly there but occasionally here too. + +Mar 22nd, 2003 +v0.15 -- Added series of prime testing routines to lib + -- Fixed up etc/tune.c + -- Added DR reduction algorithm + -- Beefed up the manual more. + -- Fixed up demo/demo.c so it doesn't have so many warnings and it does the full series of + tests + -- Added "pre-gen" directory which will hold a "gen.pl"'ed copy of the entire lib [done at + zipup time so its always the latest] + -- Added conditional casts for C++ users [boo!] + +Mar 15th, 2003 +v0.14 -- Tons of manual updates + -- cleaned up the directory + -- added MSVC makefiles + -- source changes [that I don't recall] + -- Fixed up the lshd/rshd code to use pointer aliasing + -- Fixed up the mul_2d and div_2d to not call rshd/lshd unless needed + -- Fixed up etc/tune.c a tad + -- fixed up demo/demo.c to output comma-delimited results of timing + also fixed up timing demo to use a finer granularity for various functions + -- fixed up demo/demo.c testing to pause during testing so my Duron won't catch on fire + [stays around 31-35C during testing :-)] + +Feb 13th, 2003 +v0.13 -- tons of minor speed-ups in low level add, sub, mul_2 and div_2 which propagate + to other functions like mp_invmod, mp_div, etc... + -- Sped up mp_exptmod_fast by using new code to find R mod m [e.g. B^n mod m] + -- minor fixes + +Jan 17th, 2003 +v0.12 -- re-wrote the majority of the makefile so its more portable and will + install via "make install" on most *nix platforms + -- Re-packaged all the source as seperate files. Means the library a single + file packagage any more. Instead of just adding "bn.c" you have to add + libtommath.a + -- Renamed "bn.h" to "tommath.h" + -- Changes to the manual to reflect all of this + -- Used GNU Indent to clean up the source + +Jan 15th, 2003 +v0.11 -- More subtle fixes + -- Moved to gentoo linux [hurrah!] so made *nix specific fixes to the make process + -- Sped up the montgomery reduction code quite a bit + -- fixed up demo so when building timing for the x86 it assumes ELF format now + +Jan 9th, 2003 +v0.10 -- Pekka Riikonen suggested fixes to the radix conversion code. + -- Added baseline montgomery and comba montgomery reductions, sped up exptmods + [to a point, see bn.h for MONTGOMERY_EXPT_CUTOFF] + +Jan 6th, 2003 +v0.09 -- Updated the manual to reflect recent changes. :-) + -- Added Jacobi function (mp_jacobi) to supplement the number theory side of the lib + -- Added a Mersenne prime finder demo in ./etc/mersenne.c + +Jan 2nd, 2003 +v0.08 -- Sped up the multipliers by moving the inner loop variables into a smaller scope + -- Corrected a bunch of small "warnings" + -- Added more comments + -- Made "mtest" be able to use /dev/random, /dev/urandom or stdin for RNG data + -- Corrected some bugs where error messages were potentially ignored + -- add etc/pprime.c program which makes numbers which are provably prime. + +Jan 1st, 2003 +v0.07 -- Removed alot of heap operations from core functions to speed them up + -- Added a root finding function [and mp_sqrt macro like from MPI] + -- Added more to manual + +Dec 31st, 2002 +v0.06 -- Sped up the s_mp_add, s_mp_sub which inturn sped up mp_invmod, mp_exptmod, etc... + -- Cleaned up the header a bit more + +Dec 30th, 2002 +v0.05 -- Builds with MSVC out of the box + -- Fixed a bug in mp_invmod w.r.t. even moduli + -- Made mp_toradix and mp_read_radix use char instead of unsigned char arrays + -- Fixed up exptmod to use fewer multiplications + -- Fixed up mp_init_size to use only one heap operation + -- Note there is a slight "off-by-one" bug in the library somewhere + without the padding (see the source for comment) the library + crashes in libtomcrypt. Anyways a reasonable workaround is to pad the + numbers which will always correct it since as the numbers grow the padding + will still be beyond the end of the number + -- Added more to the manual + +Dec 29th, 2002 +v0.04 -- Fixed a memory leak in mp_to_unsigned_bin + -- optimized invmod code + -- Fixed bug in mp_div + -- use exchange instead of copy for results + -- added a bit more to the manual + +Dec 27th, 2002 +v0.03 -- Sped up s_mp_mul_high_digs by not computing the carries of the lower digits + -- Fixed a bug where mp_set_int wouldn't zero the value first and set the used member. + -- fixed a bug in s_mp_mul_high_digs where the limit placed on the result digits was not calculated properly + -- fixed bugs in add/sub/mul/sqr_mod functions where if the modulus and dest were the same it wouldn't work + -- fixed a bug in mp_mod and mp_mod_d concerning negative inputs + -- mp_mul_d didn't preserve sign + -- Many many many many fixes + -- Works in LibTomCrypt now :-) + -- Added iterations to the timing demos... more accurate. + -- Tom needs a job. + +Dec 26th, 2002 +v0.02 -- Fixed a few "slips" in the manual. This is "LibTomMath" afterall :-) + -- Added mp_cmp_mag, mp_neg, mp_abs and mp_radix_size that were missing. + -- Sped up the fast [comba] multipliers more [yahoo!] + +Dec 25th,2002 +v0.01 -- Initial release. Gimme a break. + -- Todo list, + add details to manual [e.g. algorithms] + more comments in code + example programs diff --git a/fsbl/lib/libtommath/dep.pl b/fsbl/lib/libtommath/dep.pl new file mode 100755 index 000000000..f63110078 --- /dev/null +++ b/fsbl/lib/libtommath/dep.pl @@ -0,0 +1,194 @@ +#!/usr/bin/perl +# +# Walk through source, add labels and make classes +# +use strict; +use warnings; + +my %deplist; + +#open class file and write preamble +open(my $class, '>', 'tommath_class.h') or die "Couldn't open tommath_class.h for writing\n"; +print {$class} << 'EOS'; +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +#if !(defined(LTM1) && defined(LTM2) && defined(LTM3)) +#if defined(LTM2) +# define LTM3 +#endif +#if defined(LTM1) +# define LTM2 +#endif +#define LTM1 +#if defined(LTM_ALL) +EOS + +foreach my $filename (glob 'bn*.c') { + my $define = $filename; + + print "Processing $filename\n"; + + # convert filename to upper case so we can use it as a define + $define =~ tr/[a-z]/[A-Z]/; + $define =~ tr/\./_/; + print {$class} << "EOS"; +# define $define +EOS + + # now copy text and apply #ifdef as required + my $apply = 0; + open(my $src, '<', $filename); + open(my $out, '>', 'tmp'); + + # first line will be the #ifdef + my $line = <$src>; + if ($line =~ /include/) { + print {$out} $line; + } else { + print {$out} << "EOS"; +#include "tommath_private.h" +#ifdef $define +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ +$line +EOS + $apply = 1; + } + while (<$src>) { + if (!($_ =~ /tommath\.h/)) { + print {$out} $_; + } + } + if ($apply == 1) { + print {$out} << 'EOS'; +#endif +/* ref: \$Format:\%D$ */ +/* git commit: \$Format:\%H$ */ +/* commit time: \$Format:\%ai$ */ +EOS + } + close $src; + close $out; + + unlink $filename; + rename 'tmp', $filename; +} +print {$class} << 'EOS'; +#endif +EOS + +# now do classes + +foreach my $filename (glob 'bn*.c') { + open(my $src, '<', $filename) or die "Can't open source file!\n"; + + # convert filename to upper case so we can use it as a define + $filename =~ tr/[a-z]/[A-Z]/; + $filename =~ tr/\./_/; + + print {$class} << "EOS"; +#if defined($filename) +EOS + my $list = $filename; + + # scan for mp_* and make classes + while (<$src>) { + my $line = $_; + while ($line =~ m/(fast_)*(s_)*mp\_[a-z_0-9]*/) { + $line = $'; + # now $& is the match, we want to skip over LTM keywords like + # mp_int, mp_word, mp_digit + if (!($& eq 'mp_digit') && !($& eq 'mp_word') && !($& eq 'mp_int') && !($& eq 'mp_min_u32')) { + my $a = $&; + $a =~ tr/[a-z]/[A-Z]/; + $a = 'BN_' . $a . '_C'; + if (!($list =~ /$a/)) { + print {$class} << "EOS"; +# define $a +EOS + } + $list = $list . ',' . $a; + } + } + } + $deplist{$filename} = $list; + + print {$class} << 'EOS'; +#endif + +EOS + close $src; +} + +print {$class} << 'EOS'; +#ifdef LTM3 +# define LTM_LAST +#endif + +#include +#include +#else +# define LTM_LAST +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ +EOS +close $class; + +#now let's make a cool call graph... + +open(my $out, '>', 'callgraph.txt'); +my $indent = 0; +my $list; +foreach (sort keys %deplist) { + $list = ''; + draw_func($deplist{$_}); + print {$out} "\n\n"; +} +close $out; + +sub draw_func +{ + my @funcs = split ',', $_[0]; + if ($list =~ /$funcs[0]/) { + return; + } else { + $list = $list . $funcs[0]; + } + if ($indent == 0) { + } elsif ($indent >= 1) { + print {$out} '| ' x ($indent - 1) . '+--->'; + } + print {$out} $funcs[0] . "\n"; + shift @funcs; + my $temp = $list; + foreach my $i (@funcs) { + ++$indent; + draw_func($deplist{$i}) if exists $deplist{$i}; + --$indent; + } + $list = $temp; + return; +} + diff --git a/fsbl/lib/libtommath/gen.pl b/fsbl/lib/libtommath/gen.pl new file mode 100644 index 000000000..332994d5c --- /dev/null +++ b/fsbl/lib/libtommath/gen.pl @@ -0,0 +1,20 @@ +#!/usr/bin/perl -w +# +# Generates a "single file" you can use to quickly +# add the whole source without any makefile troubles +# +use strict; +use warnings; + +open(my $out, '>', 'mpi.c') or die "Couldn't open mpi.c for writing: $!"; +foreach my $filename (glob 'bn*.c') { + open(my $src, '<', $filename) or die "Couldn't open $filename for reading: $!"; + print {$out} "/* Start: $filename */\n"; + print {$out} $_ while <$src>; + print {$out} "\n/* End: $filename */\n\n"; + close $src or die "Error closing $filename after reading: $!"; +} +print {$out} "\n/* EOF */\n"; +close $out or die "Error closing mpi.c after writing: $!"; + +system('perl -pli -e "s/\s*$//" mpi.c'); diff --git a/fsbl/lib/libtommath/helper.pl b/fsbl/lib/libtommath/helper.pl new file mode 100755 index 000000000..5afeb82e1 --- /dev/null +++ b/fsbl/lib/libtommath/helper.pl @@ -0,0 +1,294 @@ +#!/usr/bin/env perl + +use strict; +use warnings; + +use Getopt::Long; +use File::Find 'find'; +use File::Basename 'basename'; +use File::Glob 'bsd_glob'; + +sub read_file { + my $f = shift; + open my $fh, "<", $f or die "FATAL: read_rawfile() cannot open file '$f': $!"; + binmode $fh; + return do { local $/; <$fh> }; +} + +sub write_file { + my ($f, $data) = @_; + die "FATAL: write_file() no data" unless defined $data; + open my $fh, ">", $f or die "FATAL: write_file() cannot open file '$f': $!"; + binmode $fh; + print $fh $data or die "FATAL: write_file() cannot write to '$f': $!"; + close $fh or die "FATAL: write_file() cannot close '$f': $!"; + return; +} + +sub check_source { + my @all_files = ( + bsd_glob("makefile*"), + bsd_glob("*.{h,c,sh,pl}"), + bsd_glob("*/*.{h,c,sh,pl}"), + ); + + my $fails = 0; + for my $file (sort @all_files) { + my $troubles = {}; + my $lineno = 1; + my $content = read_file($file); + push @{$troubles->{crlf_line_end}}, '?' if $content =~ /\r/; + for my $l (split /\n/, $content) { + push @{$troubles->{merge_conflict}}, $lineno if $l =~ /^(<<<<<<<|=======|>>>>>>>)([^<=>]|$)/; + push @{$troubles->{trailing_space}}, $lineno if $l =~ / $/; + push @{$troubles->{tab}}, $lineno if $l =~ /\t/ && basename($file) !~ /^makefile/i; + push @{$troubles->{non_ascii_char}}, $lineno if $l =~ /[^[:ascii:]]/; + push @{$troubles->{cpp_comment}}, $lineno if $file =~ /\.(c|h)$/ && ($l =~ /\s\/\// || $l =~ /\/\/\s/); + # we prefer using XMALLOC, XFREE, XREALLOC, XCALLOC ... + push @{$troubles->{unwanted_malloc}}, $lineno if $file =~ /^[^\/]+\.c$/ && $l =~ /\bmalloc\s*\(/; + push @{$troubles->{unwanted_realloc}}, $lineno if $file =~ /^[^\/]+\.c$/ && $l =~ /\brealloc\s*\(/; + push @{$troubles->{unwanted_calloc}}, $lineno if $file =~ /^[^\/]+\.c$/ && $l =~ /\bcalloc\s*\(/; + push @{$troubles->{unwanted_free}}, $lineno if $file =~ /^[^\/]+\.c$/ && $l =~ /\bfree\s*\(/; + # and we probably want to also avoid the following + push @{$troubles->{unwanted_memcpy}}, $lineno if $file =~ /^[^\/]+\.c$/ && $l =~ /\bmemcpy\s*\(/; + push @{$troubles->{unwanted_memset}}, $lineno if $file =~ /^[^\/]+\.c$/ && $l =~ /\bmemset\s*\(/; + push @{$troubles->{unwanted_memcpy}}, $lineno if $file =~ /^[^\/]+\.c$/ && $l =~ /\bmemcpy\s*\(/; + push @{$troubles->{unwanted_memmove}}, $lineno if $file =~ /^[^\/]+\.c$/ && $l =~ /\bmemmove\s*\(/; + push @{$troubles->{unwanted_memcmp}}, $lineno if $file =~ /^[^\/]+\.c$/ && $l =~ /\bmemcmp\s*\(/; + push @{$troubles->{unwanted_strcmp}}, $lineno if $file =~ /^[^\/]+\.c$/ && $l =~ /\bstrcmp\s*\(/; + push @{$troubles->{unwanted_strcpy}}, $lineno if $file =~ /^[^\/]+\.c$/ && $l =~ /\bstrcpy\s*\(/; + push @{$troubles->{unwanted_strncpy}}, $lineno if $file =~ /^[^\/]+\.c$/ && $l =~ /\bstrncpy\s*\(/; + push @{$troubles->{unwanted_clock}}, $lineno if $file =~ /^[^\/]+\.c$/ && $l =~ /\bclock\s*\(/; + push @{$troubles->{unwanted_qsort}}, $lineno if $file =~ /^[^\/]+\.c$/ && $l =~ /\bqsort\s*\(/; + push @{$troubles->{sizeof_no_brackets}}, $lineno if $file =~ /^[^\/]+\.c$/ && $l =~ /\bsizeof\s*[^\(]/; + if ($file =~ m|^[^\/]+\.c$| && $l =~ /^static(\s+[a-zA-Z0-9_]+)+\s+([a-zA-Z0-9_]+)\s*\(/) { + my $funcname = $2; + # static functions should start with s_ + push @{$troubles->{staticfunc_name}}, "$lineno($funcname)" if $funcname !~ /^s_/; + } + $lineno++; + } + for my $k (sort keys %$troubles) { + warn "[$k] $file line:" . join(",", @{$troubles->{$k}}) . "\n"; + $fails++; + } + } + + warn( $fails > 0 ? "check-source: FAIL $fails\n" : "check-source: PASS\n" ); + return $fails; +} + +sub check_comments { + my $fails = 0; + my $first_comment = <<'MARKER'; +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ +MARKER + my $last_comment = <<'MARKER'; +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ +MARKER + #my @all_files = (bsd_glob("*.{h,c}"), bsd_glob("*/*.{h,c}")); + my @all_files = (bsd_glob("*.{h,c}")); + for my $f (@all_files) { + my $txt = read_file($f); + if ($txt !~ /\Q$first_comment\E/s) { + warn "[first_comment] $f\n"; + $fails++; + } + if ($txt !~ /\Q$last_comment\E\s*$/s) { + warn "[last_comment] $f\n"; + $fails++; + } + } + warn( $fails > 0 ? "check-comments: FAIL $fails\n" : "check-comments: PASS\n" ); + return $fails; +} + +sub prepare_variable { + my ($varname, @list) = @_; + my $output = "$varname="; + my $len = length($output); + foreach my $obj (sort @list) { + $len = $len + length $obj; + $obj =~ s/\*/\$/; + if ($len > 100) { + $output .= "\\\n"; + $len = length $obj; + } + $output .= $obj . ' '; + } + $output =~ s/ $//; + return $output; +} + +sub prepare_msvc_files_xml { + my ($all, $exclude_re, $targets) = @_; + my $last = []; + my $depth = 2; + + # sort files in the same order as visual studio (ugly, I know) + my @parts = (); + for my $orig (@$all) { + my $p = $orig; + $p =~ s|/|/~|g; + $p =~ s|/~([^/]+)$|/$1|g; + my @l = map { sprintf "% -99s", $_ } split /\//, $p; + push @parts, [ $orig, join(':', @l) ]; + } + my @sorted = map { $_->[0] } sort { $a->[1] cmp $b->[1] } @parts; + + my $files = "\r\n"; + for my $full (@sorted) { + my @items = split /\//, $full; # split by '/' + $full =~ s|/|\\|g; # replace '/' bt '\' + shift @items; # drop first one (src) + pop @items; # drop last one (filename.ext) + my $current = \@items; + if (join(':', @$current) ne join(':', @$last)) { + my $common = 0; + $common++ while ($last->[$common] && $current->[$common] && $last->[$common] eq $current->[$common]); + my $back = @$last - $common; + if ($back > 0) { + $files .= ("\t" x --$depth) . "\r\n" for (1..$back); + } + my $fwd = [ @$current ]; splice(@$fwd, 0, $common); + for my $i (0..scalar(@$fwd) - 1) { + $files .= ("\t" x $depth) . "[$i]\"\r\n"; + $files .= ("\t" x $depth) . "\t>\r\n"; + $depth++; + } + $last = $current; + } + $files .= ("\t" x $depth) . "\r\n"; + if ($full =~ $exclude_re) { + for (@$targets) { + $files .= ("\t" x $depth) . "\t\r\n"; + $files .= ("\t" x $depth) . "\t\t\r\n"; + $files .= ("\t" x $depth) . "\t\r\n"; + } + } + $files .= ("\t" x $depth) . "\r\n"; + } + $files .= ("\t" x --$depth) . "\r\n" for (@$last); + $files .= "\t"; + return $files; +} + +sub patch_file { + my ($content, @variables) = @_; + for my $v (@variables) { + if ($v =~ /^([A-Z0-9_]+)\s*=.*$/si) { + my $name = $1; + $content =~ s/\n\Q$name\E\b.*?[^\\]\n/\n$v\n/s; + } + else { + die "patch_file failed: " . substr($v, 0, 30) . ".."; + } + } + return $content; +} + +sub version_from_tomcrypt_h { + my $h = read_file(shift); + if ($h =~ /\n#define\s*SCRYPT\s*"([0-9]+)\.([0-9]+)\.([0-9]+)(.*)"/s) { + return "VERSION_PC=$1.$2.$3", "VERSION_LT=1:1", "VERSION=$1.$2.$3$4", "PROJECT_NUMBER=$1.$2.$3$4"; + } + else { + die "#define SCRYPT not found in tomcrypt.h"; + } +} + +sub process_makefiles { + my $write = shift; + my $changed_count = 0; + my @o = map { my $x = $_; $x =~ s/\.c$/.o/; $x } bsd_glob("*.c"); + my @all = bsd_glob("*.{c,h}"); + + my $var_o = prepare_variable("OBJECTS", @o); + (my $var_obj = $var_o) =~ s/\.o\b/.obj/sg; + + # update MSVC project files + my $msvc_files = prepare_msvc_files_xml(\@all, qr/NOT_USED_HERE/, ['Debug|Win32', 'Release|Win32', 'Debug|x64', 'Release|x64']); + for my $m (qw/libtommath_VS2008.vcproj/) { + my $old = read_file($m); + my $new = $old; + $new =~ s|.*|$msvc_files|s; + if ($old ne $new) { + write_file($m, $new) if $write; + warn "changed: $m\n"; + $changed_count++; + } + } + + # update OBJECTS + HEADERS in makefile* + for my $m (qw/ makefile makefile.shared makefile_include.mk makefile.msvc makefile.unix makefile.mingw /) { + my $old = read_file($m); + my $new = $m eq 'makefile.msvc' ? patch_file($old, $var_obj) + : patch_file($old, $var_o); + if ($old ne $new) { + write_file($m, $new) if $write; + warn "changed: $m\n"; + $changed_count++; + } + } + + if ($write) { + return 0; # no failures + } + else { + warn( $changed_count > 0 ? "check-makefiles: FAIL $changed_count\n" : "check-makefiles: PASS\n" ); + return $changed_count; + } +} + +sub die_usage { + die <<"MARKER"; +usage: $0 -s OR $0 --check-source + $0 -o OR $0 --check-comments + $0 -m OR $0 --check-makefiles + $0 -a OR $0 --check-all + $0 -u OR $0 --update-makefiles +MARKER +} + +GetOptions( "s|check-source" => \my $check_source, + "o|check-comments" => \my $check_comments, + "m|check-makefiles" => \my $check_makefiles, + "a|check-all" => \my $check_all, + "u|update-makefiles" => \my $update_makefiles, + "h|help" => \my $help + ) or die_usage; + +my $failure; +$failure ||= check_source() if $check_all || $check_source; +$failure ||= check_comments() if $check_all || $check_comments; +$failure ||= process_makefiles(0) if $check_all || $check_makefiles; +$failure ||= process_makefiles(1) if $update_makefiles; + +die_usage unless defined $failure; +exit $failure ? 1 : 0; + +# ref: $Format:%D$ +# git commit: $Format:%H$ +# commit time: $Format:%ai$ diff --git a/fsbl/lib/libtommath/libtommath.pc.in b/fsbl/lib/libtommath/libtommath.pc.in new file mode 100644 index 000000000..099b1cd74 --- /dev/null +++ b/fsbl/lib/libtommath/libtommath.pc.in @@ -0,0 +1,10 @@ +prefix=@to-be-replaced@ +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: LibTomMath +Description: public domain library for manipulating large integer numbers +Version: @to-be-replaced@ +Libs: -L${libdir} -ltommath +Cflags: -I${includedir} diff --git a/fsbl/lib/libtommath/libtommath_VS2008.sln b/fsbl/lib/libtommath/libtommath_VS2008.sln new file mode 100644 index 000000000..935cd6ad3 --- /dev/null +++ b/fsbl/lib/libtommath/libtommath_VS2008.sln @@ -0,0 +1,29 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tommath", "libtommath_VS2008.vcproj", "{42109FEE-B0B9-4FCD-9E56-2863BF8C55D2}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {42109FEE-B0B9-4FCD-9E56-2863BF8C55D2}.Debug|Win32.ActiveCfg = Debug|Win32 + {42109FEE-B0B9-4FCD-9E56-2863BF8C55D2}.Debug|Win32.Build.0 = Debug|Win32 + {42109FEE-B0B9-4FCD-9E56-2863BF8C55D2}.Debug|x64.ActiveCfg = Debug|x64 + {42109FEE-B0B9-4FCD-9E56-2863BF8C55D2}.Debug|x64.Build.0 = Debug|x64 + {42109FEE-B0B9-4FCD-9E56-2863BF8C55D2}.Release|Win32.ActiveCfg = Release|Win32 + {42109FEE-B0B9-4FCD-9E56-2863BF8C55D2}.Release|Win32.Build.0 = Release|Win32 + {42109FEE-B0B9-4FCD-9E56-2863BF8C55D2}.Release|x64.ActiveCfg = Release|x64 + {42109FEE-B0B9-4FCD-9E56-2863BF8C55D2}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {83B84178-7B4F-4B78-9C5D-17B8201D5B61} + EndGlobalSection +EndGlobal diff --git a/fsbl/lib/libtommath/libtommath_VS2008.vcproj b/fsbl/lib/libtommath/libtommath_VS2008.vcproj new file mode 100644 index 000000000..51364f69e --- /dev/null +++ b/fsbl/lib/libtommath/libtommath_VS2008.vcproj @@ -0,0 +1,890 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fsbl/lib/libtommath/makefile b/fsbl/lib/libtommath/makefile new file mode 100644 index 000000000..a07c27453 --- /dev/null +++ b/fsbl/lib/libtommath/makefile @@ -0,0 +1,158 @@ +#Makefile for GCC +# +#Tom St Denis + +ifeq ($V,1) +silent= +else +silent=@ +endif + +#default files to install +ifndef LIBNAME + LIBNAME=libtommath.a +endif + +coverage: LIBNAME:=-Wl,--whole-archive $(LIBNAME) -Wl,--no-whole-archive + +include makefile_include.mk + +%.o: %.c +ifneq ($V,1) + @echo " * ${CC} $@" +endif + ${silent} ${CC} -c ${CFLAGS} $< -o $@ + +LCOV_ARGS=--directory . + +#START_INS +OBJECTS=bn_error.o bn_fast_mp_invmod.o bn_fast_mp_montgomery_reduce.o bn_fast_s_mp_mul_digs.o \ +bn_fast_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp_add_d.o \ +bn_mp_addmod.o bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o \ +bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_div.o \ +bn_mp_div_2.o bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o \ +bn_mp_dr_setup.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o bn_mp_exptmod.o \ +bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_bit.o \ +bn_mp_get_double.o bn_mp_get_int.o bn_mp_get_long.o bn_mp_get_long_long.o bn_mp_grow.o bn_mp_import.o \ +bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o bn_mp_init_set_int.o bn_mp_init_size.o \ +bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_jacobi.o bn_mp_karatsuba_mul.o \ +bn_mp_karatsuba_sqr.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mod_d.o \ +bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o bn_mp_montgomery_setup.o bn_mp_mul.o \ +bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_neg.o \ +bn_mp_or.o bn_mp_prime_fermat.o bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_divisible.o \ +bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o \ +bn_mp_prime_rabin_miller_trials.o bn_mp_prime_random_ex.o bn_mp_prime_strong_lucas_selfridge.o \ +bn_mp_radix_size.o bn_mp_radix_smap.o bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o \ +bn_mp_read_unsigned_bin.o bn_mp_reduce.o bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o \ +bn_mp_reduce_2k_setup_l.o bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o \ +bn_mp_set.o bn_mp_set_double.o bn_mp_set_int.o bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o \ +bn_mp_signed_bin_size.o bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o \ +bn_mp_sub_d.o bn_mp_submod.o bn_mp_tc_and.o bn_mp_tc_div_2d.o bn_mp_tc_or.o bn_mp_tc_xor.o \ +bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o \ +bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_toradix.o bn_mp_toradix_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o \ +bn_mp_zero.o bn_prime_tab.o bn_reverse.o bn_s_mp_add.o bn_s_mp_exptmod.o bn_s_mp_mul_digs.o \ +bn_s_mp_mul_high_digs.o bn_s_mp_sqr.o bn_s_mp_sub.o bncore.o + +#END_INS + +$(OBJECTS): $(HEADERS) + +$(LIBNAME): $(OBJECTS) + $(AR) $(ARFLAGS) $@ $(OBJECTS) + $(RANLIB) $@ + +#make a profiled library (takes a while!!!) +# +# This will build the library with profile generation +# then run the test demo and rebuild the library. +# +# So far I've seen improvements in the MP math +profiled: + make CFLAGS="$(CFLAGS) -fprofile-arcs -DTESTING" timing + ./timing + rm -f *.a *.o timing + make CFLAGS="$(CFLAGS) -fbranch-probabilities" + +#make a single object profiled library +profiled_single: + perl gen.pl + $(CC) $(CFLAGS) -fprofile-arcs -DTESTING -c mpi.c -o mpi.o + $(CC) $(CFLAGS) -DTESTING -DTIMER demo/timing.c mpi.o -lgcov -o timing + ./timing + rm -f *.o timing + $(CC) $(CFLAGS) -fbranch-probabilities -DTESTING -c mpi.c -o mpi.o + $(AR) $(ARFLAGS) $(LIBNAME) mpi.o + ranlib $(LIBNAME) + +install: $(LIBNAME) + install -d $(DESTDIR)$(LIBPATH) + install -d $(DESTDIR)$(INCPATH) + install -m 644 $(LIBNAME) $(DESTDIR)$(LIBPATH) + install -m 644 $(HEADERS_PUB) $(DESTDIR)$(INCPATH) + +uninstall: + rm $(DESTDIR)$(LIBPATH)/$(LIBNAME) + rm $(HEADERS_PUB:%=$(DESTDIR)$(INCPATH)/%) + +test: $(LIBNAME) demo/demo.o + $(CC) $(CFLAGS) demo/demo.o $(LIBNAME) $(LFLAGS) -o test + +test_standalone: $(LIBNAME) demo/demo.o + $(CC) $(CFLAGS) demo/demo.o $(LIBNAME) $(LFLAGS) -o test + +.PHONY: mtest +mtest: + cd mtest ; $(CC) $(CFLAGS) -O0 mtest.c $(LFLAGS) -o mtest + +timing: $(LIBNAME) demo/timing.c + $(CC) $(CFLAGS) -DTIMER demo/timing.c $(LIBNAME) $(LFLAGS) -o timing + +# You have to create a file .coveralls.yml with the content "repo_token: " +# in the base folder to be able to submit to coveralls +coveralls: lcov + coveralls-lcov + +docdvi poster docs mandvi manual: + $(MAKE) -C doc/ $@ V=$(V) + +pretty: + perl pretty.build + +.PHONY: pre_gen +pre_gen: + mkdir -p pre_gen + perl gen.pl + sed -e 's/[[:blank:]]*$$//' mpi.c > pre_gen/mpi.c + rm mpi.c + +zipup: clean astyle new_file manual poster docs + @# Update the index, so diff-index won't fail in case the pdf has been created. + @# As the pdf creation modifies the tex files, git sometimes detects the + @# modified files, but misses that it's put back to its original version. + @git update-index --refresh + @git diff-index --quiet HEAD -- || ( echo "FAILURE: uncommited changes or not a git" && exit 1 ) + rm -rf libtommath-$(VERSION) ltm-$(VERSION).* + @# files/dirs excluded from "git archive" are defined in .gitattributes + git archive --format=tar --prefix=libtommath-$(VERSION)/ HEAD | tar x + @echo 'fixme check' + -@(find libtommath-$(VERSION)/ -type f | xargs grep 'FIXM[E]') && echo '############## BEWARE: the "fixme" marker was found !!! ##############' || true + mkdir -p libtommath-$(VERSION)/doc + cp doc/bn.pdf doc/tommath.pdf doc/poster.pdf libtommath-$(VERSION)/doc/ + $(MAKE) -C libtommath-$(VERSION)/ pre_gen + tar -c libtommath-$(VERSION)/ | xz -6e -c - > ltm-$(VERSION).tar.xz + zip -9rq ltm-$(VERSION).zip libtommath-$(VERSION) + cp doc/bn.pdf bn-$(VERSION).pdf + cp doc/tommath.pdf tommath-$(VERSION).pdf + rm -rf libtommath-$(VERSION) + gpg -b -a ltm-$(VERSION).tar.xz + gpg -b -a ltm-$(VERSION).zip + +new_file: + bash updatemakes.sh + perl dep.pl + +perlcritic: + perlcritic *.pl doc/*.pl + +astyle: + astyle --options=astylerc $(OBJECTS:.o=.c) tommath*.h demo/*.c etc/*.c mtest/mtest.c diff --git a/fsbl/lib/libtommath/makefile.mingw b/fsbl/lib/libtommath/makefile.mingw new file mode 100644 index 000000000..ec0de2bca --- /dev/null +++ b/fsbl/lib/libtommath/makefile.mingw @@ -0,0 +1,106 @@ +# MAKEFILE for MS Windows (mingw + gcc + gmake) +# +# BEWARE: variable OBJECTS is updated via ./updatemakes.sh + +### USAGE: +# Open a command prompt with gcc + gmake in PATH and start: +# +# gmake -f makefile.mingw all +# test.exe +# gmake -f makefile.mingw PREFIX=c:\devel\libtom install + +#The following can be overridden from command line e.g. make -f makefile.mingw CC=gcc ARFLAGS=rcs +PREFIX = c:\mingw +CC = gcc +AR = ar +ARFLAGS = r +RANLIB = ranlib +STRIP = strip +CFLAGS = -O2 +LDFLAGS = + +#Compilation flags +LTM_CFLAGS = -I. $(CFLAGS) +LTM_LDFLAGS = $(LDFLAGS) + +#Libraries to be created +LIBMAIN_S =libtommath.a +LIBMAIN_I =libtommath.dll.a +LIBMAIN_D =libtommath.dll + +#List of objects to compile (all goes to libtommath.a) +OBJECTS=bn_error.o bn_fast_mp_invmod.o bn_fast_mp_montgomery_reduce.o bn_fast_s_mp_mul_digs.o \ +bn_fast_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp_add_d.o \ +bn_mp_addmod.o bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o \ +bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_div.o \ +bn_mp_div_2.o bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o \ +bn_mp_dr_setup.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o bn_mp_exptmod.o \ +bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_bit.o \ +bn_mp_get_double.o bn_mp_get_int.o bn_mp_get_long.o bn_mp_get_long_long.o bn_mp_grow.o bn_mp_import.o \ +bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o bn_mp_init_set_int.o bn_mp_init_size.o \ +bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_jacobi.o bn_mp_karatsuba_mul.o \ +bn_mp_karatsuba_sqr.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mod_d.o \ +bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o bn_mp_montgomery_setup.o bn_mp_mul.o \ +bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_neg.o \ +bn_mp_or.o bn_mp_prime_fermat.o bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_divisible.o \ +bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o \ +bn_mp_prime_rabin_miller_trials.o bn_mp_prime_random_ex.o bn_mp_prime_strong_lucas_selfridge.o \ +bn_mp_radix_size.o bn_mp_radix_smap.o bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o \ +bn_mp_read_unsigned_bin.o bn_mp_reduce.o bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o \ +bn_mp_reduce_2k_setup_l.o bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o \ +bn_mp_set.o bn_mp_set_double.o bn_mp_set_int.o bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o \ +bn_mp_signed_bin_size.o bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o \ +bn_mp_sub_d.o bn_mp_submod.o bn_mp_tc_and.o bn_mp_tc_div_2d.o bn_mp_tc_or.o bn_mp_tc_xor.o \ +bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o \ +bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_toradix.o bn_mp_toradix_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o \ +bn_mp_zero.o bn_prime_tab.o bn_reverse.o bn_s_mp_add.o bn_s_mp_exptmod.o bn_s_mp_mul_digs.o \ +bn_s_mp_mul_high_digs.o bn_s_mp_sqr.o bn_s_mp_sub.o bncore.o + +HEADERS_PUB=tommath.h tommath_class.h tommath_superclass.h + +HEADERS=tommath_private.h $(HEADERS_PUB) + +#The default rule for make builds the libtommath.a library (static) +default: $(LIBMAIN_S) + +#Dependencies on *.h +$(OBJECTS): $(HEADERS) + +.c.o: + $(CC) $(LTM_CFLAGS) -c $< -o $@ + +#Create libtommath.a +$(LIBMAIN_S): $(OBJECTS) + $(AR) $(ARFLAGS) $@ $(OBJECTS) + $(RANLIB) $@ + +#Create DLL + import library libtommath.dll.a +$(LIBMAIN_D) $(LIBMAIN_I): $(OBJECTS) + $(CC) -s -shared -o $(LIBMAIN_D) $^ -Wl,--enable-auto-import,--export-all -Wl,--out-implib=$(LIBMAIN_I) $(LTM_LDFLAGS) + $(STRIP) -S $(LIBMAIN_D) + +#Build test_standalone suite +test.exe: $(LIBMAIN_S) demo/demo.c + $(CC) $(LTM_CFLAGS) $(LTM_LDFLAGS) demo/demo.c $(LIBMAIN_S) -DLTM_DEMO_TEST_VS_MTEST=0 -o $@ + @echo NOTICE: start the tests by launching test.exe + +test_standalone: test.exe + +all: $(LIBMAIN_S) test_standalone + +clean: + @-cmd /c del /Q /S *.o *.a *.exe *.dll 2>nul + +#Install the library + headers +install: $(LIBMAIN_S) $(LIBMAIN_I) $(LIBMAIN_D) + cmd /c if not exist "$(PREFIX)\bin" mkdir "$(PREFIX)\bin" + cmd /c if not exist "$(PREFIX)\lib" mkdir "$(PREFIX)\lib" + cmd /c if not exist "$(PREFIX)\include" mkdir "$(PREFIX)\include" + copy /Y $(LIBMAIN_S) "$(PREFIX)\lib" + copy /Y $(LIBMAIN_I) "$(PREFIX)\lib" + copy /Y $(LIBMAIN_D) "$(PREFIX)\bin" + copy /Y tommath*.h "$(PREFIX)\include" + +# ref: $Format:%D$ +# git commit: $Format:%H$ +# commit time: $Format:%ai$ diff --git a/fsbl/lib/libtommath/makefile.msvc b/fsbl/lib/libtommath/makefile.msvc new file mode 100644 index 000000000..50db4491b --- /dev/null +++ b/fsbl/lib/libtommath/makefile.msvc @@ -0,0 +1,90 @@ +# MAKEFILE for MS Windows (nmake + Windows SDK) +# +# BEWARE: variable OBJECTS is updated via ./updatemakes.sh + +### USAGE: +# Open a command prompt with WinSDK variables set and start: +# +# nmake -f makefile.msvc all +# test.exe +# nmake -f makefile.msvc PREFIX=c:\devel\libtom install + +#The following can be overridden from command line e.g. make -f makefile.msvc CC=gcc ARFLAGS=rcs +PREFIX = c:\devel +CFLAGS = /Ox + +#Compilation flags +LTM_CFLAGS = /nologo /I./ /D_CRT_SECURE_NO_WARNINGS /D_CRT_NONSTDC_NO_DEPRECATE /W3 $(CFLAGS) +LTM_LDFLAGS = advapi32.lib + +#Libraries to be created (this makefile builds only static libraries) +LIBMAIN_S =tommath.lib + +#List of objects to compile (all goes to tommath.lib) +OBJECTS=bn_error.obj bn_fast_mp_invmod.obj bn_fast_mp_montgomery_reduce.obj bn_fast_s_mp_mul_digs.obj \ +bn_fast_s_mp_mul_high_digs.obj bn_fast_s_mp_sqr.obj bn_mp_2expt.obj bn_mp_abs.obj bn_mp_add.obj bn_mp_add_d.obj \ +bn_mp_addmod.obj bn_mp_and.obj bn_mp_clamp.obj bn_mp_clear.obj bn_mp_clear_multi.obj bn_mp_cmp.obj bn_mp_cmp_d.obj \ +bn_mp_cmp_mag.obj bn_mp_cnt_lsb.obj bn_mp_complement.obj bn_mp_copy.obj bn_mp_count_bits.obj bn_mp_div.obj \ +bn_mp_div_2.obj bn_mp_div_2d.obj bn_mp_div_3.obj bn_mp_div_d.obj bn_mp_dr_is_modulus.obj bn_mp_dr_reduce.obj \ +bn_mp_dr_setup.obj bn_mp_exch.obj bn_mp_export.obj bn_mp_expt_d.obj bn_mp_expt_d_ex.obj bn_mp_exptmod.obj \ +bn_mp_exptmod_fast.obj bn_mp_exteuclid.obj bn_mp_fread.obj bn_mp_fwrite.obj bn_mp_gcd.obj bn_mp_get_bit.obj \ +bn_mp_get_double.obj bn_mp_get_int.obj bn_mp_get_long.obj bn_mp_get_long_long.obj bn_mp_grow.obj bn_mp_import.obj \ +bn_mp_init.obj bn_mp_init_copy.obj bn_mp_init_multi.obj bn_mp_init_set.obj bn_mp_init_set_int.obj bn_mp_init_size.obj \ +bn_mp_invmod.obj bn_mp_invmod_slow.obj bn_mp_is_square.obj bn_mp_jacobi.obj bn_mp_karatsuba_mul.obj \ +bn_mp_karatsuba_sqr.obj bn_mp_kronecker.obj bn_mp_lcm.obj bn_mp_lshd.obj bn_mp_mod.obj bn_mp_mod_2d.obj bn_mp_mod_d.obj \ +bn_mp_montgomery_calc_normalization.obj bn_mp_montgomery_reduce.obj bn_mp_montgomery_setup.obj bn_mp_mul.obj \ +bn_mp_mul_2.obj bn_mp_mul_2d.obj bn_mp_mul_d.obj bn_mp_mulmod.obj bn_mp_n_root.obj bn_mp_n_root_ex.obj bn_mp_neg.obj \ +bn_mp_or.obj bn_mp_prime_fermat.obj bn_mp_prime_frobenius_underwood.obj bn_mp_prime_is_divisible.obj \ +bn_mp_prime_is_prime.obj bn_mp_prime_miller_rabin.obj bn_mp_prime_next_prime.obj \ +bn_mp_prime_rabin_miller_trials.obj bn_mp_prime_random_ex.obj bn_mp_prime_strong_lucas_selfridge.obj \ +bn_mp_radix_size.obj bn_mp_radix_smap.obj bn_mp_rand.obj bn_mp_read_radix.obj bn_mp_read_signed_bin.obj \ +bn_mp_read_unsigned_bin.obj bn_mp_reduce.obj bn_mp_reduce_2k.obj bn_mp_reduce_2k_l.obj bn_mp_reduce_2k_setup.obj \ +bn_mp_reduce_2k_setup_l.obj bn_mp_reduce_is_2k.obj bn_mp_reduce_is_2k_l.obj bn_mp_reduce_setup.obj bn_mp_rshd.obj \ +bn_mp_set.obj bn_mp_set_double.obj bn_mp_set_int.obj bn_mp_set_long.obj bn_mp_set_long_long.obj bn_mp_shrink.obj \ +bn_mp_signed_bin_size.obj bn_mp_sqr.obj bn_mp_sqrmod.obj bn_mp_sqrt.obj bn_mp_sqrtmod_prime.obj bn_mp_sub.obj \ +bn_mp_sub_d.obj bn_mp_submod.obj bn_mp_tc_and.obj bn_mp_tc_div_2d.obj bn_mp_tc_or.obj bn_mp_tc_xor.obj \ +bn_mp_to_signed_bin.obj bn_mp_to_signed_bin_n.obj bn_mp_to_unsigned_bin.obj bn_mp_to_unsigned_bin_n.obj \ +bn_mp_toom_mul.obj bn_mp_toom_sqr.obj bn_mp_toradix.obj bn_mp_toradix_n.obj bn_mp_unsigned_bin_size.obj bn_mp_xor.obj \ +bn_mp_zero.obj bn_prime_tab.obj bn_reverse.obj bn_s_mp_add.obj bn_s_mp_exptmod.obj bn_s_mp_mul_digs.obj \ +bn_s_mp_mul_high_digs.obj bn_s_mp_sqr.obj bn_s_mp_sub.obj bncore.obj + +HEADERS_PUB=tommath.h tommath_class.h tommath_superclass.h + +HEADERS=tommath_private.h $(HEADERS_PUB) + +#The default rule for make builds the tommath.lib library (static) +default: $(LIBMAIN_S) + +#Dependencies on *.h +$(OBJECTS): $(HEADERS) + +.c.obj: + $(CC) $(LTM_CFLAGS) /c $< /Fo$@ + +#Create tomcrypt.lib +$(LIBMAIN_S): $(OBJECTS) + lib /out:$(LIBMAIN_S) $(OBJECTS) + +#Build test_standalone suite +test.exe: $(LIBMAIN_S) demo/demo.c + cl $(LTM_CFLAGS) $(TOBJECTS) $(LIBMAIN_S) $(LTM_LDFLAGS) demo/demo.c /DLTM_DEMO_TEST_VS_MTEST=0 /Fe$@ + @echo NOTICE: start the tests by launching test.exe + +test_standalone: test.exe + +all: $(LIBMAIN_S) test_standalone + +clean: + @-cmd /c del /Q /S *.OBJ *.LIB *.EXE *.DLL 2>nul + +#Install the library + headers +install: $(LIBMAIN_S) + cmd /c if not exist "$(PREFIX)\bin" mkdir "$(PREFIX)\bin" + cmd /c if not exist "$(PREFIX)\lib" mkdir "$(PREFIX)\lib" + cmd /c if not exist "$(PREFIX)\include" mkdir "$(PREFIX)\include" + copy /Y $(LIBMAIN_S) "$(PREFIX)\lib" + copy /Y tommath*.h "$(PREFIX)\include" + +# ref: $Format:%D$ +# git commit: $Format:%H$ +# commit time: $Format:%ai$ diff --git a/fsbl/lib/libtommath/makefile.shared b/fsbl/lib/libtommath/makefile.shared new file mode 100644 index 000000000..3955f830a --- /dev/null +++ b/fsbl/lib/libtommath/makefile.shared @@ -0,0 +1,91 @@ +#Makefile for GCC +# +#Tom St Denis + +#default files to install +ifndef LIBNAME + LIBNAME=libtommath.la +endif + +include makefile_include.mk + + +ifndef LIBTOOL + ifeq ($(PLATFORM), Darwin) + LIBTOOL:=glibtool + else + LIBTOOL:=libtool + endif +endif +LTCOMPILE = $(LIBTOOL) --mode=compile --tag=CC $(CC) + +LCOV_ARGS=--directory .libs --directory . + +#START_INS +OBJECTS=bn_error.o bn_fast_mp_invmod.o bn_fast_mp_montgomery_reduce.o bn_fast_s_mp_mul_digs.o \ +bn_fast_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp_add_d.o \ +bn_mp_addmod.o bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o \ +bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_div.o \ +bn_mp_div_2.o bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o \ +bn_mp_dr_setup.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o bn_mp_exptmod.o \ +bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_bit.o \ +bn_mp_get_double.o bn_mp_get_int.o bn_mp_get_long.o bn_mp_get_long_long.o bn_mp_grow.o bn_mp_import.o \ +bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o bn_mp_init_set_int.o bn_mp_init_size.o \ +bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_jacobi.o bn_mp_karatsuba_mul.o \ +bn_mp_karatsuba_sqr.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mod_d.o \ +bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o bn_mp_montgomery_setup.o bn_mp_mul.o \ +bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_neg.o \ +bn_mp_or.o bn_mp_prime_fermat.o bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_divisible.o \ +bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o \ +bn_mp_prime_rabin_miller_trials.o bn_mp_prime_random_ex.o bn_mp_prime_strong_lucas_selfridge.o \ +bn_mp_radix_size.o bn_mp_radix_smap.o bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o \ +bn_mp_read_unsigned_bin.o bn_mp_reduce.o bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o \ +bn_mp_reduce_2k_setup_l.o bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o \ +bn_mp_set.o bn_mp_set_double.o bn_mp_set_int.o bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o \ +bn_mp_signed_bin_size.o bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o \ +bn_mp_sub_d.o bn_mp_submod.o bn_mp_tc_and.o bn_mp_tc_div_2d.o bn_mp_tc_or.o bn_mp_tc_xor.o \ +bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o \ +bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_toradix.o bn_mp_toradix_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o \ +bn_mp_zero.o bn_prime_tab.o bn_reverse.o bn_s_mp_add.o bn_s_mp_exptmod.o bn_s_mp_mul_digs.o \ +bn_s_mp_mul_high_digs.o bn_s_mp_sqr.o bn_s_mp_sub.o bncore.o + +#END_INS + +objs: $(OBJECTS) + +.c.o: + $(LTCOMPILE) $(CFLAGS) $(LDFLAGS) -o $@ -c $< + +LOBJECTS = $(OBJECTS:.o=.lo) + +$(LIBNAME): $(OBJECTS) + $(LIBTOOL) --mode=link --tag=CC $(CC) $(LDFLAGS) $(LOBJECTS) -o $(LIBNAME) -rpath $(LIBPATH) -version-info $(VERSION_SO) $(LIBTOOLFLAGS) + +install: $(LIBNAME) + install -d $(DESTDIR)$(LIBPATH) + install -d $(DESTDIR)$(INCPATH) + $(LIBTOOL) --mode=install install -m 644 $(LIBNAME) $(DESTDIR)$(LIBPATH)/$(LIBNAME) + install -m 644 $(HEADERS_PUB) $(DESTDIR)$(INCPATH) + sed -e 's,^prefix=.*,prefix=$(PREFIX),' -e 's,^Version:.*,Version: $(VERSION_PC),' libtommath.pc.in > libtommath.pc + install -d $(DESTDIR)$(LIBPATH)/pkgconfig + install -m 644 libtommath.pc $(DESTDIR)$(LIBPATH)/pkgconfig/ + +uninstall: + $(LIBTOOL) --mode=uninstall rm $(DESTDIR)$(LIBPATH)/$(LIBNAME) + rm $(HEADERS_PUB:%=$(DESTDIR)$(INCPATH)/%) + rm $(DESTDIR)$(LIBPATH)/pkgconfig/libtommath.pc + +test: $(LIBNAME) demo/demo.o + $(CC) $(CFLAGS) -c demo/demo.c -o demo/demo.o + $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o test demo/demo.o $(LIBNAME) + +test_standalone: $(LIBNAME) demo/demo.o + $(CC) $(CFLAGS) -c demo/demo.c -o demo/demo.o + $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o test demo/demo.o $(LIBNAME) + +.PHONY: mtest +mtest: + cd mtest ; $(CC) $(CFLAGS) $(LDFLAGS) mtest.c -o mtest + +timing: $(LIBNAME) demo/timing.c + $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -DTIMER demo/timing.c $(LIBNAME) -o timing diff --git a/fsbl/lib/libtommath/makefile.unix b/fsbl/lib/libtommath/makefile.unix new file mode 100644 index 000000000..b89cf4796 --- /dev/null +++ b/fsbl/lib/libtommath/makefile.unix @@ -0,0 +1,103 @@ +# MAKEFILE that is intended to be compatible with any kind of make (GNU make, BSD make, ...) +# works on: Linux, *BSD, Cygwin, AIX, HP-UX and hopefully other UNIX systems +# +# Please do not use here neither any special make syntax nor any unusual tools/utilities! + +# using ICC compiler: +# make -f makefile.unix CC=icc CFLAGS="-O3 -xP -ip" + +# using Borland C++Builder: +# make -f makefile.unix CC=bcc32 + +#The following can be overridden from command line e.g. "make -f makefile.unix CC=gcc ARFLAGS=rcs" +DESTDIR = +PREFIX = /usr/local +LIBPATH = $(PREFIX)/lib +INCPATH = $(PREFIX)/include +CC = cc +AR = ar +ARFLAGS = r +RANLIB = ranlib +CFLAGS = -O2 +LDFLAGS = + +VERSION = 1.1.0 + +#Compilation flags +LTM_CFLAGS = -I. $(CFLAGS) +LTM_LDFLAGS = $(LDFLAGS) + +#Library to be created (this makefile builds only static library) +LIBMAIN_S = libtommath.a + +OBJECTS=bn_error.o bn_fast_mp_invmod.o bn_fast_mp_montgomery_reduce.o bn_fast_s_mp_mul_digs.o \ +bn_fast_s_mp_mul_high_digs.o bn_fast_s_mp_sqr.o bn_mp_2expt.o bn_mp_abs.o bn_mp_add.o bn_mp_add_d.o \ +bn_mp_addmod.o bn_mp_and.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o bn_mp_cmp.o bn_mp_cmp_d.o \ +bn_mp_cmp_mag.o bn_mp_cnt_lsb.o bn_mp_complement.o bn_mp_copy.o bn_mp_count_bits.o bn_mp_div.o \ +bn_mp_div_2.o bn_mp_div_2d.o bn_mp_div_3.o bn_mp_div_d.o bn_mp_dr_is_modulus.o bn_mp_dr_reduce.o \ +bn_mp_dr_setup.o bn_mp_exch.o bn_mp_export.o bn_mp_expt_d.o bn_mp_expt_d_ex.o bn_mp_exptmod.o \ +bn_mp_exptmod_fast.o bn_mp_exteuclid.o bn_mp_fread.o bn_mp_fwrite.o bn_mp_gcd.o bn_mp_get_bit.o \ +bn_mp_get_double.o bn_mp_get_int.o bn_mp_get_long.o bn_mp_get_long_long.o bn_mp_grow.o bn_mp_import.o \ +bn_mp_init.o bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o bn_mp_init_set_int.o bn_mp_init_size.o \ +bn_mp_invmod.o bn_mp_invmod_slow.o bn_mp_is_square.o bn_mp_jacobi.o bn_mp_karatsuba_mul.o \ +bn_mp_karatsuba_sqr.o bn_mp_kronecker.o bn_mp_lcm.o bn_mp_lshd.o bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mod_d.o \ +bn_mp_montgomery_calc_normalization.o bn_mp_montgomery_reduce.o bn_mp_montgomery_setup.o bn_mp_mul.o \ +bn_mp_mul_2.o bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_mulmod.o bn_mp_n_root.o bn_mp_n_root_ex.o bn_mp_neg.o \ +bn_mp_or.o bn_mp_prime_fermat.o bn_mp_prime_frobenius_underwood.o bn_mp_prime_is_divisible.o \ +bn_mp_prime_is_prime.o bn_mp_prime_miller_rabin.o bn_mp_prime_next_prime.o \ +bn_mp_prime_rabin_miller_trials.o bn_mp_prime_random_ex.o bn_mp_prime_strong_lucas_selfridge.o \ +bn_mp_radix_size.o bn_mp_radix_smap.o bn_mp_rand.o bn_mp_read_radix.o bn_mp_read_signed_bin.o \ +bn_mp_read_unsigned_bin.o bn_mp_reduce.o bn_mp_reduce_2k.o bn_mp_reduce_2k_l.o bn_mp_reduce_2k_setup.o \ +bn_mp_reduce_2k_setup_l.o bn_mp_reduce_is_2k.o bn_mp_reduce_is_2k_l.o bn_mp_reduce_setup.o bn_mp_rshd.o \ +bn_mp_set.o bn_mp_set_double.o bn_mp_set_int.o bn_mp_set_long.o bn_mp_set_long_long.o bn_mp_shrink.o \ +bn_mp_signed_bin_size.o bn_mp_sqr.o bn_mp_sqrmod.o bn_mp_sqrt.o bn_mp_sqrtmod_prime.o bn_mp_sub.o \ +bn_mp_sub_d.o bn_mp_submod.o bn_mp_tc_and.o bn_mp_tc_div_2d.o bn_mp_tc_or.o bn_mp_tc_xor.o \ +bn_mp_to_signed_bin.o bn_mp_to_signed_bin_n.o bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o \ +bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_toradix.o bn_mp_toradix_n.o bn_mp_unsigned_bin_size.o bn_mp_xor.o \ +bn_mp_zero.o bn_prime_tab.o bn_reverse.o bn_s_mp_add.o bn_s_mp_exptmod.o bn_s_mp_mul_digs.o \ +bn_s_mp_mul_high_digs.o bn_s_mp_sqr.o bn_s_mp_sub.o bncore.o + +HEADERS_PUB=tommath.h tommath_class.h tommath_superclass.h + +HEADERS=tommath_private.h $(HEADERS_PUB) + +#The default rule for make builds the libtommath.a library (static) +default: $(LIBMAIN_S) + +#Dependencies on *.h +$(OBJECTS): $(HEADERS) + +#This is necessary for compatibility with BSD make (namely on OpenBSD) +.SUFFIXES: .o .c +.c.o: + $(CC) $(LTM_CFLAGS) -c $< -o $@ + +#Create libtommath.a +$(LIBMAIN_S): $(OBJECTS) + $(AR) $(ARFLAGS) $@ $(OBJECTS) + $(RANLIB) $@ + +#Build test_standalone suite +test: $(LIBMAIN_S) demo/demo.c + $(CC) $(LTM_CFLAGS) $(LTM_LDFLAGS) demo/demo.c $(LIBMAIN_S) -DLTM_DEMO_TEST_VS_MTEST=0 -o $@ + @echo "NOTICE: start the tests by: ./test" + +test_standalone: test + +all: $(LIBMAIN_S) test_standalone + +#NOTE: this makefile works also on cygwin, thus we need to delete *.exe +clean: + -@rm -f $(OBJECTS) $(LIBMAIN_S) + -@rm -f demo/demo.o test test.exe + +#Install the library + headers +install: $(LIBMAIN_S) + @mkdir -p $(DESTDIR)$(INCPATH) $(DESTDIR)$(LIBPATH)/pkgconfig + @cp $(LIBMAIN_S) $(DESTDIR)$(LIBPATH)/ + @cp $(HEADERS_PUB) $(DESTDIR)$(INCPATH)/ + @sed -e 's,^prefix=.*,prefix=$(PREFIX),' -e 's,^Version:.*,Version: $(VERSION),' libtommath.pc.in > $(DESTDIR)$(LIBPATH)/pkgconfig/libtommath.pc + +# ref: $Format:%D$ +# git commit: $Format:%H$ +# commit time: $Format:%ai$ diff --git a/fsbl/lib/libtommath/makefile_include.mk b/fsbl/lib/libtommath/makefile_include.mk new file mode 100644 index 000000000..ec2205ba4 --- /dev/null +++ b/fsbl/lib/libtommath/makefile_include.mk @@ -0,0 +1,148 @@ +# +# Include makefile for libtommath +# + +#version of library +VERSION=1.1.0 +VERSION_PC=1.1.0 +VERSION_SO=2:0:1 + +PLATFORM := $(shell uname | sed -e 's/_.*//') + +# default make target +default: ${LIBNAME} + +# Compiler and Linker Names +ifndef CROSS_COMPILE + CROSS_COMPILE= +endif + +# We only need to go through this dance of determining the right compiler if we're using +# cross compilation, otherwise $(CC) is fine as-is. +ifneq (,$(CROSS_COMPILE)) +ifeq ($(origin CC),default) +CSTR := "\#ifdef __clang__\nCLANG\n\#endif\n" +ifeq ($(PLATFORM),FreeBSD) + # XXX: FreeBSD needs extra escaping for some reason + CSTR := $$$(CSTR) +endif +ifneq (,$(shell echo $(CSTR) | $(CC) -E - | grep CLANG)) + CC := $(CROSS_COMPILE)clang +else + CC := $(CROSS_COMPILE)gcc +endif # Clang +endif # cc is Make's default +endif # CROSS_COMPILE non-empty + +LD=$(CROSS_COMPILE)ld +AR=$(CROSS_COMPILE)ar +RANLIB=$(CROSS_COMPILE)ranlib + +ifndef MAKE +# BSDs refer to GNU Make as gmake +ifneq (,$(findstring $(PLATFORM),FreeBSD OpenBSD DragonFly NetBSD)) + MAKE=gmake +else + MAKE=make +endif +endif + +CFLAGS += -I./ -Wall -Wsign-compare -Wextra -Wshadow + +ifndef NO_ADDTL_WARNINGS +# additional warnings +CFLAGS += -Wsystem-headers -Wdeclaration-after-statement -Wbad-function-cast -Wcast-align +CFLAGS += -Wstrict-prototypes -Wpointer-arith +endif + +ifdef COMPILE_DEBUG +#debug +CFLAGS += -g3 +else + +ifdef COMPILE_SIZE +#for size +CFLAGS += -Os +else + +ifndef IGNORE_SPEED +#for speed +CFLAGS += -O3 -funroll-loops + +#x86 optimizations [should be valid for any GCC install though] +CFLAGS += -fomit-frame-pointer +endif + +endif # COMPILE_SIZE +endif # COMPILE_DEBUG + +ifneq ($(findstring clang,$(CC)),) +CFLAGS += -Wno-typedef-redefinition -Wno-tautological-compare -Wno-builtin-requires-header +endif +ifneq ($(findstring mingw,$(CC)),) +CFLAGS += -Wno-shadow +endif +ifeq ($(PLATFORM), Darwin) +CFLAGS += -Wno-nullability-completeness +endif +ifeq ($(PLATFORM), CYGWIN) +LIBTOOLFLAGS += -no-undefined +endif + +ifeq ($(PLATFORM),FreeBSD) + _ARCH := $(shell sysctl -b hw.machine_arch) +else + _ARCH := $(shell arch) +endif + +# adjust coverage set +ifneq ($(filter $(_ARCH), i386 i686 x86_64 amd64 ia64),) + COVERAGE = test_standalone timing + COVERAGE_APP = ./test && ./timing +else + COVERAGE = test_standalone + COVERAGE_APP = ./test +endif + +HEADERS_PUB=tommath.h tommath_class.h tommath_superclass.h +HEADERS=tommath_private.h $(HEADERS_PUB) + +test_standalone: CFLAGS+=-DLTM_DEMO_TEST_VS_MTEST=0 + +#LIBPATH The directory for libtommath to be installed to. +#INCPATH The directory to install the header files for libtommath. +#DATAPATH The directory to install the pdf docs. +DESTDIR ?= +PREFIX ?= /usr/local +LIBPATH ?= $(PREFIX)/lib +INCPATH ?= $(PREFIX)/include +DATAPATH ?= $(PREFIX)/share/doc/libtommath/pdf + +#make the code coverage of the library +# +coverage: CFLAGS += -fprofile-arcs -ftest-coverage -DTIMING_NO_LOGS +coverage: LFLAGS += -lgcov +coverage: LDFLAGS += -lgcov + +coverage: $(COVERAGE) + $(COVERAGE_APP) + +lcov: coverage + rm -f coverage.info + lcov --capture --no-external --no-recursion $(LCOV_ARGS) --output-file coverage.info -q + genhtml coverage.info --output-directory coverage -q + +# target that removes all coverage output +cleancov-clean: + rm -f `find . -type f -name "*.info" | xargs` + rm -rf coverage/ + +# cleans everything - coverage output and standard 'clean' +cleancov: cleancov-clean clean + +clean: + rm -f *.gcda *.gcno *.gcov *.bat *.o *.a *.obj *.lib *.exe *.dll etclib/*.o demo/demo.o test timing mpitest mtest/mtest mtest/mtest.exe \ + *.idx *.toc *.log *.aux *.dvi *.lof *.ind *.ilg *.ps *.log *.s mpi.c *.da *.dyn *.dpi tommath.tex `find . -type f | grep [~] | xargs` *.lo *.la + rm -rf .libs/ + ${MAKE} -C etc/ clean MAKE=${MAKE} + ${MAKE} -C doc/ clean MAKE=${MAKE} diff --git a/fsbl/lib/libtommath/pretty.build b/fsbl/lib/libtommath/pretty.build new file mode 100644 index 000000000..a708b8af2 --- /dev/null +++ b/fsbl/lib/libtommath/pretty.build @@ -0,0 +1,66 @@ +#!/bin/perl -w +# +# Cute little builder for perl +# Total waste of development time... +# +# This will build all the object files and then the archive .a file +# requires GCC, GNU make and a sense of humour. +# +# Tom St Denis +use strict; + +my $count = 0; +my $starttime = time; +my $rate = 0; +print "Scanning for source files...\n"; +foreach my $filename (glob "*.c") { + ++$count; +} +print "Source files to build: $count\nBuilding...\n"; +my $i = 0; +my $lines = 0; +my $filesbuilt = 0; +foreach my $filename (glob "*.c") { + printf("Building %3.2f%%, ", (++$i/$count)*100.0); + if ($i % 4 == 0) { print "/, "; } + if ($i % 4 == 1) { print "-, "; } + if ($i % 4 == 2) { print "\\, "; } + if ($i % 4 == 3) { print "|, "; } + if ($rate > 0) { + my $tleft = ($count - $i) / $rate; + my $tsec = $tleft%60; + my $tmin = ($tleft/60)%60; + my $thour = ($tleft/3600)%60; + printf("%2d:%02d:%02d left, ", $thour, $tmin, $tsec); + } + my $cnt = ($i/$count)*30.0; + my $x = 0; + print "["; + for (; $x < $cnt; $x++) { print "#"; } + for (; $x < 30; $x++) { print " "; } + print "]\r"; + my $tmp = $filename; + $tmp =~ s/\.c/".o"/ge; + if (open(SRC, "<$tmp")) { + close SRC; + } else { + !system("make $tmp > /dev/null 2>/dev/null") or die "\nERROR: Failed to make $tmp!!!\n"; + open( SRC, "<$filename" ) or die "Couldn't open $filename for reading: $!"; + ++$lines while (); + close SRC or die "Error closing $filename after reading: $!"; + ++$filesbuilt; + } + + # update timer + if (time != $starttime) { + my $delay = time - $starttime; + $rate = $i/$delay; + } +} + +# finish building the library +printf("\nFinished building source (%d seconds, %3.2f files per second).\n", time - $starttime, $rate); +print "Compiled approximately $filesbuilt files and $lines lines of code.\n"; +print "Doing final make (building archive...)\n"; +!system("make > /dev/null 2>/dev/null") or die "\nERROR: Failed to perform last make command!!!\n"; +print "done.\n"; \ No newline at end of file diff --git a/fsbl/lib/libtommath/testme.sh b/fsbl/lib/libtommath/testme.sh new file mode 100755 index 000000000..a8180bdc9 --- /dev/null +++ b/fsbl/lib/libtommath/testme.sh @@ -0,0 +1,244 @@ +#!/bin/bash +# +# return values of this script are: +# 0 success +# 128 a test failed +# >0 the number of timed-out tests + +set -e + +if [ -f /proc/cpuinfo ] +then + MAKE_JOBS=$(( ($(cat /proc/cpuinfo | grep -E '^processor[[:space:]]*:' | tail -n -1 | cut -d':' -f2) + 1) * 2 + 1 )) +else + MAKE_JOBS=8 +fi + +ret=0 +TEST_CFLAGS="" + +_help() +{ + echo "Usage options for $(basename $0) [--with-cc=arg [other options]]" + echo + echo "Executing this script without any parameter will only run the default configuration" + echo "that has automatically been determined for the architecture you're running." + echo + echo " --with-cc=* The compiler(s) to use for the tests" + echo " This is an option that will be iterated." + echo + echo " --test-vs-mtest=* Run test vs. mtest for '*' operations." + echo " Only the first of each options will be taken into account." + echo + echo "To be able to specify options a compiler has to be given." + echo "All options will be tested with all MP_xBIT configurations." + echo + echo " --with-{m64,m32,mx32} The architecture(s) to build and test for," + echo " e.g. --with-mx32." + echo " This is an option that will be iterated, multiple selections are possible." + echo " The mx32 architecture is not supported by clang and will not be executed." + echo + echo " --cflags=* Give an option to the compiler," + echo " e.g. --cflags=-g" + echo " This is an option that will always be passed as parameter to CC." + echo + echo " --make-option=* Give an option to make," + echo " e.g. --make-option=\"-f makefile.shared\"" + echo " This is an option that will always be passed as parameter to make." + echo + echo " --with-low-mp Also build&run tests with -DMP_{8,16,32}BIT." + echo + echo " --mtest-real-rand Use real random data when running mtest." + echo + echo "Godmode:" + echo + echo " --all Choose all architectures and gcc and clang as compilers" + echo + echo " --help This message" + exit 0 +} + +_die() +{ + echo "error $2 while $1" + if [ "$2" != "124" ] + then + exit 128 + else + echo "assuming timeout while running test - continue" + local _tail="" + which tail >/dev/null && _tail="tail -n 1 test_${suffix}.log" && \ + echo "last line of test_"${suffix}".log was:" && $_tail && echo "" + ret=$(( $ret + 1 )) + fi +} + +_make() +{ + echo -ne " Compile $1 $2" + suffix=$(echo ${1}${2} | tr ' ' '_') + CC="$1" CFLAGS="$2 $TEST_CFLAGS" make -j$MAKE_JOBS $3 $MAKE_OPTIONS > /dev/null 2>gcc_errors_${suffix}.log + errcnt=$(wc -l < gcc_errors_${suffix}.log) + if [[ ${errcnt} -gt 1 ]]; then + echo " failed" + cat gcc_errors_${suffix}.log + exit 128 + fi +} + + +_runtest() +{ + make clean > /dev/null + _make "$1" "$2" "test_standalone" + local _timeout="" + which timeout >/dev/null && _timeout="timeout --foreground 90" + echo -e "\rRun test $1 $2" + $_timeout ./test > test_${suffix}.log || _die "running tests" $? +} + +_banner() +{ + echo "uname="$(uname -a) + [[ "$#" != "0" ]] && (echo $1=$($1 -dumpversion)) || true +} + +_exit() +{ + if [ "$ret" == "0" ] + then + echo "Tests successful" + else + echo "$ret tests timed out" + fi + + exit $ret +} + +ARCHFLAGS="" +COMPILERS="" +CFLAGS="" +WITH_LOW_MP="" +TEST_VS_MTEST="" +MTEST_RAND="" + +while [ $# -gt 0 ]; +do + case $1 in + "--with-m64" | "--with-m32" | "--with-mx32") + ARCHFLAGS="$ARCHFLAGS ${1:6}" + ;; + --with-cc=*) + COMPILERS="$COMPILERS ${1#*=}" + ;; + --cflags=*) + CFLAGS="$CFLAGS ${1#*=}" + ;; + --make-option=*) + MAKE_OPTIONS="$MAKE_OPTIONS ${1#*=}" + ;; + --with-low-mp) + WITH_LOW_MP="1" + ;; + --test-vs-mtest=*) + TEST_VS_MTEST="${1#*=}" + if ! [ "$TEST_VS_MTEST" -eq "$TEST_VS_MTEST" ] 2> /dev/null + then + echo "--test-vs-mtest Parameter has to be int" + exit -1 + fi + ;; + --mtest-real-rand) + MTEST_RAND="-DLTM_MTEST_REAL_RAND" + ;; + --all) + COMPILERS="gcc clang" + ARCHFLAGS="-m64 -m32 -mx32" + ;; + --help | -h) + _help + ;; + *) + echo "Ignoring option ${1}" + ;; + esac + shift +done + +# default to gcc if no compiler is defined but some other options +if [[ "$COMPILERS" == "" ]] && [[ "$ARCHFLAGS$MAKE_OPTIONS$CFLAGS" != "" ]] +then + COMPILERS="gcc" +# default to gcc and run only default config if no option is given +elif [[ "$COMPILERS" == "" ]] +then + _banner gcc + _runtest "gcc" "" + _exit +fi + +archflags=( $ARCHFLAGS ) +compilers=( $COMPILERS ) + +# choosing a compiler without specifying an architecture will use the default architecture +if [ "${#archflags[@]}" == "0" ] +then + archflags[0]=" " +fi + +_banner + +if [[ "$TEST_VS_MTEST" != "" ]] +then + make clean > /dev/null + _make "${compilers[0]} ${archflags[0]}" "$CFLAGS" "test" + echo + _make "gcc" "$MTEST_RAND" "mtest" + echo + echo "Run test vs. mtest for $TEST_VS_MTEST iterations" + for i in `seq 1 10` ; do sleep 500 && echo alive; done & + alive_pid=$! + _timeout="" + which timeout >/dev/null && _timeout="timeout --foreground 900" + $_TIMEOUT ./mtest/mtest $TEST_VS_MTEST | ./test > test.log + disown $alive_pid + kill $alive_pid 2>/dev/null + head -n 5 test.log + tail -n 2 test.log + exit 0 +fi + +for i in "${compilers[@]}" +do + if [ -z "$(which $i)" ] + then + echo "Skipped compiler $i, file not found" + continue + fi + compiler_version=$(echo "$i="$($i -dumpversion)) + if [ "$compiler_version" == "clang=4.2.1" ] + then + # one of my versions of clang complains about some stuff in stdio.h and stdarg.h ... + TEST_CFLAGS="-Wno-typedef-redefinition" + else + TEST_CFLAGS="" + fi + echo $compiler_version + + for a in "${archflags[@]}" + do + if [[ $(expr "$i" : "clang") -ne 0 && "$a" == "-mx32" ]] + then + echo "clang -mx32 tests skipped" + continue + fi + + _runtest "$i $a" "$CFLAGS" + [ "$WITH_LOW_MP" != "1" ] && continue + _runtest "$i $a" "-DMP_8BIT $CFLAGS" + _runtest "$i $a" "-DMP_16BIT $CFLAGS" + _runtest "$i $a" "-DMP_32BIT $CFLAGS" + done +done + +_exit diff --git a/fsbl/lib/libtommath/tommath.h b/fsbl/lib/libtommath/tommath.h new file mode 100644 index 000000000..ee5da86e7 --- /dev/null +++ b/fsbl/lib/libtommath/tommath.h @@ -0,0 +1,615 @@ +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ +#ifndef BN_H_ +#define BN_H_ + +#include +#include +#include +#include + +#include "tommath_class.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* MS Visual C++ doesn't have a 128bit type for words, so fall back to 32bit MPI's (where words are 64bit) */ +#if defined(_MSC_VER) || defined(__LLP64__) || defined(__e2k__) || defined(__LCC__) +# define MP_32BIT +#endif + +/* detect 64-bit mode if possible */ +#if defined(__x86_64__) || defined(_M_X64) || defined(_M_AMD64) || \ + defined(__powerpc64__) || defined(__ppc64__) || defined(__PPC64__) || \ + defined(__s390x__) || defined(__arch64__) || defined(__aarch64__) || \ + defined(__sparcv9) || defined(__sparc_v9__) || defined(__sparc64__) || \ + defined(__ia64) || defined(__ia64__) || defined(__itanium__) || defined(_M_IA64) || \ + defined(__LP64__) || defined(_LP64) || defined(__64BIT__) +# if !(defined(MP_32BIT) || defined(MP_16BIT) || defined(MP_8BIT)) +# if defined(__GNUC__) +/* we support 128bit integers only via: __attribute__((mode(TI))) */ +# define MP_64BIT +# else +/* otherwise we fall back to MP_32BIT even on 64bit platforms */ +# define MP_32BIT +# endif +# endif +#endif + +/* some default configurations. + * + * A "mp_digit" must be able to hold DIGIT_BIT + 1 bits + * A "mp_word" must be able to hold 2*DIGIT_BIT + 1 bits + * + * At the very least a mp_digit must be able to hold 7 bits + * [any size beyond that is ok provided it doesn't overflow the data type] + */ +#ifdef MP_8BIT +typedef uint8_t mp_digit; +typedef uint16_t mp_word; +# define MP_SIZEOF_MP_DIGIT 1 +# ifdef DIGIT_BIT +# error You must not define DIGIT_BIT when using MP_8BIT +# endif +#elif defined(MP_16BIT) +typedef uint16_t mp_digit; +typedef uint32_t mp_word; +# define MP_SIZEOF_MP_DIGIT 2 +# ifdef DIGIT_BIT +# error You must not define DIGIT_BIT when using MP_16BIT +# endif +#elif defined(MP_64BIT) +/* for GCC only on supported platforms */ +typedef uint64_t mp_digit; +typedef unsigned long mp_word __attribute__((mode(TI))); +# define DIGIT_BIT 60 +#else +/* this is the default case, 28-bit digits */ + +/* this is to make porting into LibTomCrypt easier :-) */ +typedef uint32_t mp_digit; +typedef uint64_t mp_word; + +# ifdef MP_31BIT +/* this is an extension that uses 31-bit digits */ +# define DIGIT_BIT 31 +# else +/* default case is 28-bit digits, defines MP_28BIT as a handy macro to test */ +# define DIGIT_BIT 28 +# define MP_28BIT +# endif +#endif + +/* otherwise the bits per digit is calculated automatically from the size of a mp_digit */ +#ifndef DIGIT_BIT +# define DIGIT_BIT (((CHAR_BIT * MP_SIZEOF_MP_DIGIT) - 1)) /* bits per digit */ +typedef uint_least32_t mp_min_u32; +#else +typedef mp_digit mp_min_u32; +#endif + +#define MP_DIGIT_BIT DIGIT_BIT +#define MP_MASK ((((mp_digit)1)<<((mp_digit)DIGIT_BIT))-((mp_digit)1)) +#define MP_DIGIT_MAX MP_MASK + +/* equalities */ +#define MP_LT -1 /* less than */ +#define MP_EQ 0 /* equal to */ +#define MP_GT 1 /* greater than */ + +#define MP_ZPOS 0 /* positive integer */ +#define MP_NEG 1 /* negative */ + +#define MP_OKAY 0 /* ok result */ +#define MP_MEM -2 /* out of mem */ +#define MP_VAL -3 /* invalid input */ +#define MP_RANGE MP_VAL +#define MP_ITER -4 /* Max. iterations reached */ + +#define MP_YES 1 /* yes response */ +#define MP_NO 0 /* no response */ + +/* Primality generation flags */ +#define LTM_PRIME_BBS 0x0001 /* BBS style prime */ +#define LTM_PRIME_SAFE 0x0002 /* Safe prime (p-1)/2 == prime */ +#define LTM_PRIME_2MSB_ON 0x0008 /* force 2nd MSB to 1 */ + +typedef int mp_err; + +/* you'll have to tune these... */ +extern int KARATSUBA_MUL_CUTOFF, + KARATSUBA_SQR_CUTOFF, + TOOM_MUL_CUTOFF, + TOOM_SQR_CUTOFF; + +/* define this to use lower memory usage routines (exptmods mostly) */ +/* #define MP_LOW_MEM */ + +/* default precision */ +#ifndef MP_PREC +# ifndef MP_LOW_MEM +# define MP_PREC 32 /* default digits of precision */ +# else +# define MP_PREC 8 /* default digits of precision */ +# endif +#endif + +/* size of comba arrays, should be at least 2 * 2**(BITS_PER_WORD - BITS_PER_DIGIT*2) */ +#define MP_WARRAY (1u << (((sizeof(mp_word) * CHAR_BIT) - (2 * DIGIT_BIT)) + 1)) + +/* the infamous mp_int structure */ +typedef struct { + int used, alloc, sign; + mp_digit *dp; +} mp_int; + +/* callback for mp_prime_random, should fill dst with random bytes and return how many read [upto len] */ +typedef int ltm_prime_callback(unsigned char *dst, int len, void *dat); + + +#define USED(m) ((m)->used) +#define DIGIT(m, k) ((m)->dp[(k)]) +#define SIGN(m) ((m)->sign) + +/* error code to char* string */ +const char *mp_error_to_string(int code); + +/* ---> init and deinit bignum functions <--- */ +/* init a bignum */ +int mp_init(mp_int *a); + +/* free a bignum */ +void mp_clear(mp_int *a); + +/* init a null terminated series of arguments */ +int mp_init_multi(mp_int *mp, ...); + +/* clear a null terminated series of arguments */ +void mp_clear_multi(mp_int *mp, ...); + +/* exchange two ints */ +void mp_exch(mp_int *a, mp_int *b); + +/* shrink ram required for a bignum */ +int mp_shrink(mp_int *a); + +/* grow an int to a given size */ +int mp_grow(mp_int *a, int size); + +/* init to a given number of digits */ +int mp_init_size(mp_int *a, int size); + +/* ---> Basic Manipulations <--- */ +#define mp_iszero(a) (((a)->used == 0) ? MP_YES : MP_NO) +#define mp_iseven(a) ((((a)->used == 0) || (((a)->dp[0] & 1u) == 0u)) ? MP_YES : MP_NO) +#define mp_isodd(a) ((((a)->used > 0) && (((a)->dp[0] & 1u) == 1u)) ? MP_YES : MP_NO) +#define mp_isneg(a) (((a)->sign != MP_ZPOS) ? MP_YES : MP_NO) + +/* set to zero */ +void mp_zero(mp_int *a); + +/* set to a digit */ +void mp_set(mp_int *a, mp_digit b); + +/* set a double */ +int mp_set_double(mp_int *a, double b); + +/* set a 32-bit const */ +int mp_set_int(mp_int *a, unsigned long b); + +/* set a platform dependent unsigned long value */ +int mp_set_long(mp_int *a, unsigned long b); + +/* set a platform dependent unsigned long long value */ +int mp_set_long_long(mp_int *a, unsigned long long b); + +/* get a double */ +double mp_get_double(const mp_int *a); + +/* get a 32-bit value */ +unsigned long mp_get_int(const mp_int *a); + +/* get a platform dependent unsigned long value */ +unsigned long mp_get_long(const mp_int *a); + +/* get a platform dependent unsigned long long value */ +unsigned long long mp_get_long_long(const mp_int *a); + +/* initialize and set a digit */ +int mp_init_set(mp_int *a, mp_digit b); + +/* initialize and set 32-bit value */ +int mp_init_set_int(mp_int *a, unsigned long b); + +/* copy, b = a */ +int mp_copy(const mp_int *a, mp_int *b); + +/* inits and copies, a = b */ +int mp_init_copy(mp_int *a, const mp_int *b); + +/* trim unused digits */ +void mp_clamp(mp_int *a); + +/* import binary data */ +int mp_import(mp_int *rop, size_t count, int order, size_t size, int endian, size_t nails, const void *op); + +/* export binary data */ +int mp_export(void *rop, size_t *countp, int order, size_t size, int endian, size_t nails, const mp_int *op); + +/* ---> digit manipulation <--- */ + +/* right shift by "b" digits */ +void mp_rshd(mp_int *a, int b); + +/* left shift by "b" digits */ +int mp_lshd(mp_int *a, int b); + +/* c = a / 2**b, implemented as c = a >> b */ +int mp_div_2d(const mp_int *a, int b, mp_int *c, mp_int *d); + +/* b = a/2 */ +int mp_div_2(const mp_int *a, mp_int *b); + +/* c = a * 2**b, implemented as c = a << b */ +int mp_mul_2d(const mp_int *a, int b, mp_int *c); + +/* b = a*2 */ +int mp_mul_2(const mp_int *a, mp_int *b); + +/* c = a mod 2**b */ +int mp_mod_2d(const mp_int *a, int b, mp_int *c); + +/* computes a = 2**b */ +int mp_2expt(mp_int *a, int b); + +/* Counts the number of lsbs which are zero before the first zero bit */ +int mp_cnt_lsb(const mp_int *a); + +/* I Love Earth! */ + +/* makes a pseudo-random mp_int of a given size */ +int mp_rand(mp_int *a, int digits); +/* makes a pseudo-random small int of a given size */ +int mp_rand_digit(mp_digit *r); + +#ifdef MP_PRNG_ENABLE_LTM_RNG +/* A last resort to provide random data on systems without any of the other + * implemented ways to gather entropy. + * It is compatible with `rng_get_bytes()` from libtomcrypt so you could + * provide that one and then set `ltm_rng = rng_get_bytes;` */ +extern unsigned long (*ltm_rng)(unsigned char *out, unsigned long outlen, void (*callback)(void)); +extern void (*ltm_rng_callback)(void); +#endif + +/* ---> binary operations <--- */ +/* c = a XOR b */ +int mp_xor(const mp_int *a, const mp_int *b, mp_int *c); + +/* c = a OR b */ +int mp_or(const mp_int *a, const mp_int *b, mp_int *c); + +/* c = a AND b */ +int mp_and(const mp_int *a, const mp_int *b, mp_int *c); + +/* Checks the bit at position b and returns MP_YES + if the bit is 1, MP_NO if it is 0 and MP_VAL + in case of error */ +int mp_get_bit(const mp_int *a, int b); + +/* c = a XOR b (two complement) */ +int mp_tc_xor(const mp_int *a, const mp_int *b, mp_int *c); + +/* c = a OR b (two complement) */ +int mp_tc_or(const mp_int *a, const mp_int *b, mp_int *c); + +/* c = a AND b (two complement) */ +int mp_tc_and(const mp_int *a, const mp_int *b, mp_int *c); + +/* right shift (two complement) */ +int mp_tc_div_2d(const mp_int *a, int b, mp_int *c); + +/* ---> Basic arithmetic <--- */ + +/* b = ~a */ +int mp_complement(const mp_int *a, mp_int *b); + +/* b = -a */ +int mp_neg(const mp_int *a, mp_int *b); + +/* b = |a| */ +int mp_abs(const mp_int *a, mp_int *b); + +/* compare a to b */ +int mp_cmp(const mp_int *a, const mp_int *b); + +/* compare |a| to |b| */ +int mp_cmp_mag(const mp_int *a, const mp_int *b); + +/* c = a + b */ +int mp_add(const mp_int *a, const mp_int *b, mp_int *c); + +/* c = a - b */ +int mp_sub(const mp_int *a, const mp_int *b, mp_int *c); + +/* c = a * b */ +int mp_mul(const mp_int *a, const mp_int *b, mp_int *c); + +/* b = a*a */ +int mp_sqr(const mp_int *a, mp_int *b); + +/* a/b => cb + d == a */ +int mp_div(const mp_int *a, const mp_int *b, mp_int *c, mp_int *d); + +/* c = a mod b, 0 <= c < b */ +int mp_mod(const mp_int *a, const mp_int *b, mp_int *c); + +/* ---> single digit functions <--- */ + +/* compare against a single digit */ +int mp_cmp_d(const mp_int *a, mp_digit b); + +/* c = a + b */ +int mp_add_d(const mp_int *a, mp_digit b, mp_int *c); + +/* c = a - b */ +int mp_sub_d(const mp_int *a, mp_digit b, mp_int *c); + +/* c = a * b */ +int mp_mul_d(const mp_int *a, mp_digit b, mp_int *c); + +/* a/b => cb + d == a */ +int mp_div_d(const mp_int *a, mp_digit b, mp_int *c, mp_digit *d); + +/* a/3 => 3c + d == a */ +int mp_div_3(const mp_int *a, mp_int *c, mp_digit *d); + +/* c = a**b */ +int mp_expt_d(const mp_int *a, mp_digit b, mp_int *c); +int mp_expt_d_ex(const mp_int *a, mp_digit b, mp_int *c, int fast); + +/* c = a mod b, 0 <= c < b */ +int mp_mod_d(const mp_int *a, mp_digit b, mp_digit *c); + +/* ---> number theory <--- */ + +/* d = a + b (mod c) */ +int mp_addmod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d); + +/* d = a - b (mod c) */ +int mp_submod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d); + +/* d = a * b (mod c) */ +int mp_mulmod(const mp_int *a, const mp_int *b, const mp_int *c, mp_int *d); + +/* c = a * a (mod b) */ +int mp_sqrmod(const mp_int *a, const mp_int *b, mp_int *c); + +/* c = 1/a (mod b) */ +int mp_invmod(const mp_int *a, const mp_int *b, mp_int *c); + +/* c = (a, b) */ +int mp_gcd(const mp_int *a, const mp_int *b, mp_int *c); + +/* produces value such that U1*a + U2*b = U3 */ +int mp_exteuclid(const mp_int *a, const mp_int *b, mp_int *U1, mp_int *U2, mp_int *U3); + +/* c = [a, b] or (a*b)/(a, b) */ +int mp_lcm(const mp_int *a, const mp_int *b, mp_int *c); + +/* finds one of the b'th root of a, such that |c|**b <= |a| + * + * returns error if a < 0 and b is even + */ +int mp_n_root(const mp_int *a, mp_digit b, mp_int *c); +int mp_n_root_ex(const mp_int *a, mp_digit b, mp_int *c, int fast); + +/* special sqrt algo */ +int mp_sqrt(const mp_int *arg, mp_int *ret); + +/* special sqrt (mod prime) */ +int mp_sqrtmod_prime(const mp_int *n, const mp_int *prime, mp_int *ret); + +/* is number a square? */ +int mp_is_square(const mp_int *arg, int *ret); + +/* computes the jacobi c = (a | n) (or Legendre if b is prime) */ +int mp_jacobi(const mp_int *a, const mp_int *n, int *c); + +/* computes the Kronecker symbol c = (a | p) (like jacobi() but with {a,p} in Z */ +int mp_kronecker(const mp_int *a, const mp_int *p, int *c); + +/* used to setup the Barrett reduction for a given modulus b */ +int mp_reduce_setup(mp_int *a, const mp_int *b); + +/* Barrett Reduction, computes a (mod b) with a precomputed value c + * + * Assumes that 0 < x <= m*m, note if 0 > x > -(m*m) then you can merely + * compute the reduction as -1 * mp_reduce(mp_abs(x)) [pseudo code]. + */ +int mp_reduce(mp_int *x, const mp_int *m, const mp_int *mu); + +/* setups the montgomery reduction */ +int mp_montgomery_setup(const mp_int *n, mp_digit *rho); + +/* computes a = B**n mod b without division or multiplication useful for + * normalizing numbers in a Montgomery system. + */ +int mp_montgomery_calc_normalization(mp_int *a, const mp_int *b); + +/* computes x/R == x (mod N) via Montgomery Reduction */ +int mp_montgomery_reduce(mp_int *x, const mp_int *n, mp_digit rho); + +/* returns 1 if a is a valid DR modulus */ +int mp_dr_is_modulus(const mp_int *a); + +/* sets the value of "d" required for mp_dr_reduce */ +void mp_dr_setup(const mp_int *a, mp_digit *d); + +/* reduces a modulo n using the Diminished Radix method */ +int mp_dr_reduce(mp_int *x, const mp_int *n, mp_digit k); + +/* returns true if a can be reduced with mp_reduce_2k */ +int mp_reduce_is_2k(const mp_int *a); + +/* determines k value for 2k reduction */ +int mp_reduce_2k_setup(const mp_int *a, mp_digit *d); + +/* reduces a modulo b where b is of the form 2**p - k [0 <= a] */ +int mp_reduce_2k(mp_int *a, const mp_int *n, mp_digit d); + +/* returns true if a can be reduced with mp_reduce_2k_l */ +int mp_reduce_is_2k_l(const mp_int *a); + +/* determines k value for 2k reduction */ +int mp_reduce_2k_setup_l(const mp_int *a, mp_int *d); + +/* reduces a modulo b where b is of the form 2**p - k [0 <= a] */ +int mp_reduce_2k_l(mp_int *a, const mp_int *n, const mp_int *d); + +/* Y = G**X (mod P) */ +int mp_exptmod(const mp_int *G, const mp_int *X, const mp_int *P, mp_int *Y); + +/* ---> Primes <--- */ + +/* number of primes */ +#ifdef MP_8BIT +# define PRIME_SIZE 31 +#else +# define PRIME_SIZE 256 +#endif + +/* table of first PRIME_SIZE primes */ +extern const mp_digit ltm_prime_tab[PRIME_SIZE]; + +/* result=1 if a is divisible by one of the first PRIME_SIZE primes */ +int mp_prime_is_divisible(const mp_int *a, int *result); + +/* performs one Fermat test of "a" using base "b". + * Sets result to 0 if composite or 1 if probable prime + */ +int mp_prime_fermat(const mp_int *a, const mp_int *b, int *result); + +/* performs one Miller-Rabin test of "a" using base "b". + * Sets result to 0 if composite or 1 if probable prime + */ +int mp_prime_miller_rabin(const mp_int *a, const mp_int *b, int *result); + +/* This gives [for a given bit size] the number of trials required + * such that Miller-Rabin gives a prob of failure lower than 2^-96 + */ +int mp_prime_rabin_miller_trials(int size); + +/* performs one strong Lucas-Selfridge test of "a". + * Sets result to 0 if composite or 1 if probable prime + */ +int mp_prime_strong_lucas_selfridge(const mp_int *a, int *result); + +/* performs one Frobenius test of "a" as described by Paul Underwood. + * Sets result to 0 if composite or 1 if probable prime + */ +int mp_prime_frobenius_underwood(const mp_int *N, int *result); + +/* performs t random rounds of Miller-Rabin on "a" additional to + * bases 2 and 3. Also performs an initial sieve of trial + * division. Determines if "a" is prime with probability + * of error no more than (1/4)**t. + * Both a strong Lucas-Selfridge to complete the BPSW test + * and a separate Frobenius test are available at compile time. + * With t<0 a deterministic test is run for primes up to + * 318665857834031151167461. With t<13 (abs(t)-13) additional + * tests with sequential small primes are run starting at 43. + * Is Fips 186.4 compliant if called with t as computed by + * mp_prime_rabin_miller_trials(); + * + * Sets result to 1 if probably prime, 0 otherwise + */ +int mp_prime_is_prime(const mp_int *a, int t, int *result); + +/* finds the next prime after the number "a" using "t" trials + * of Miller-Rabin. + * + * bbs_style = 1 means the prime must be congruent to 3 mod 4 + */ +int mp_prime_next_prime(mp_int *a, int t, int bbs_style); + +/* makes a truly random prime of a given size (bytes), + * call with bbs = 1 if you want it to be congruent to 3 mod 4 + * + * You have to supply a callback which fills in a buffer with random bytes. "dat" is a parameter you can + * have passed to the callback (e.g. a state or something). This function doesn't use "dat" itself + * so it can be NULL + * + * The prime generated will be larger than 2^(8*size). + */ +#define mp_prime_random(a, t, size, bbs, cb, dat) mp_prime_random_ex(a, t, ((size) * 8) + 1, (bbs==1)?LTM_PRIME_BBS:0, cb, dat) + +/* makes a truly random prime of a given size (bits), + * + * Flags are as follows: + * + * LTM_PRIME_BBS - make prime congruent to 3 mod 4 + * LTM_PRIME_SAFE - make sure (p-1)/2 is prime as well (implies LTM_PRIME_BBS) + * LTM_PRIME_2MSB_ON - make the 2nd highest bit one + * + * You have to supply a callback which fills in a buffer with random bytes. "dat" is a parameter you can + * have passed to the callback (e.g. a state or something). This function doesn't use "dat" itself + * so it can be NULL + * + */ +int mp_prime_random_ex(mp_int *a, int t, int size, int flags, ltm_prime_callback cb, void *dat); + +/* ---> radix conversion <--- */ +int mp_count_bits(const mp_int *a); + +int mp_unsigned_bin_size(const mp_int *a); +int mp_read_unsigned_bin(mp_int *a, const unsigned char *b, int c); +int mp_to_unsigned_bin(const mp_int *a, unsigned char *b); +int mp_to_unsigned_bin_n(const mp_int *a, unsigned char *b, unsigned long *outlen); + +int mp_signed_bin_size(const mp_int *a); +int mp_read_signed_bin(mp_int *a, const unsigned char *b, int c); +int mp_to_signed_bin(const mp_int *a, unsigned char *b); +int mp_to_signed_bin_n(const mp_int *a, unsigned char *b, unsigned long *outlen); + +int mp_read_radix(mp_int *a, const char *str, int radix); +int mp_toradix(const mp_int *a, char *str, int radix); +int mp_toradix_n(const mp_int *a, char *str, int radix, int maxlen); +int mp_radix_size(const mp_int *a, int radix, int *size); + +#ifndef LTM_NO_FILE +int mp_fread(mp_int *a, int radix, FILE *stream); +int mp_fwrite(const mp_int *a, int radix, FILE *stream); +#endif + +#define mp_read_raw(mp, str, len) mp_read_signed_bin((mp), (str), (len)) +#define mp_raw_size(mp) mp_signed_bin_size(mp) +#define mp_toraw(mp, str) mp_to_signed_bin((mp), (str)) +#define mp_read_mag(mp, str, len) mp_read_unsigned_bin((mp), (str), (len)) +#define mp_mag_size(mp) mp_unsigned_bin_size(mp) +#define mp_tomag(mp, str) mp_to_unsigned_bin((mp), (str)) + +#define mp_tobinary(M, S) mp_toradix((M), (S), 2) +#define mp_tooctal(M, S) mp_toradix((M), (S), 8) +#define mp_todecimal(M, S) mp_toradix((M), (S), 10) +#define mp_tohex(M, S) mp_toradix((M), (S), 16) + +#ifdef __cplusplus +} +#endif + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/tommath_class.h b/fsbl/lib/libtommath/tommath_class.h new file mode 100644 index 000000000..46f9996be --- /dev/null +++ b/fsbl/lib/libtommath/tommath_class.h @@ -0,0 +1,1223 @@ +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +#if !(defined(LTM1) && defined(LTM2) && defined(LTM3)) +#if defined(LTM2) +# define LTM3 +#endif +#if defined(LTM1) +# define LTM2 +#endif +#define LTM1 +#if defined(LTM_ALL) +# define BN_ERROR_C +# define BN_FAST_MP_INVMOD_C +# define BN_FAST_MP_MONTGOMERY_REDUCE_C +# define BN_FAST_S_MP_MUL_DIGS_C +# define BN_FAST_S_MP_MUL_HIGH_DIGS_C +# define BN_FAST_S_MP_SQR_C +# define BN_MP_2EXPT_C +# define BN_MP_ABS_C +# define BN_MP_ADD_C +# define BN_MP_ADD_D_C +# define BN_MP_ADDMOD_C +# define BN_MP_AND_C +# define BN_MP_CLAMP_C +# define BN_MP_CLEAR_C +# define BN_MP_CLEAR_MULTI_C +# define BN_MP_CMP_C +# define BN_MP_CMP_D_C +# define BN_MP_CMP_MAG_C +# define BN_MP_CNT_LSB_C +# define BN_MP_COMPLEMENT_C +# define BN_MP_COPY_C +# define BN_MP_COUNT_BITS_C +# define BN_MP_DIV_C +# define BN_MP_DIV_2_C +# define BN_MP_DIV_2D_C +# define BN_MP_DIV_3_C +# define BN_MP_DIV_D_C +# define BN_MP_DR_IS_MODULUS_C +# define BN_MP_DR_REDUCE_C +# define BN_MP_DR_SETUP_C +# define BN_MP_EXCH_C +# define BN_MP_EXPORT_C +# define BN_MP_EXPT_D_C +# define BN_MP_EXPT_D_EX_C +# define BN_MP_EXPTMOD_C +# define BN_MP_EXPTMOD_FAST_C +# define BN_MP_EXTEUCLID_C +# define BN_MP_FREAD_C +# define BN_MP_FWRITE_C +# define BN_MP_GCD_C +# define BN_MP_GET_BIT_C +# define BN_MP_GET_DOUBLE_C +# define BN_MP_GET_INT_C +# define BN_MP_GET_LONG_C +# define BN_MP_GET_LONG_LONG_C +# define BN_MP_GROW_C +# define BN_MP_IMPORT_C +# define BN_MP_INIT_C +# define BN_MP_INIT_COPY_C +# define BN_MP_INIT_MULTI_C +# define BN_MP_INIT_SET_C +# define BN_MP_INIT_SET_INT_C +# define BN_MP_INIT_SIZE_C +# define BN_MP_INVMOD_C +# define BN_MP_INVMOD_SLOW_C +# define BN_MP_IS_SQUARE_C +# define BN_MP_JACOBI_C +# define BN_MP_KARATSUBA_MUL_C +# define BN_MP_KARATSUBA_SQR_C +# define BN_MP_KRONECKER_C +# define BN_MP_LCM_C +# define BN_MP_LSHD_C +# define BN_MP_MOD_C +# define BN_MP_MOD_2D_C +# define BN_MP_MOD_D_C +# define BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +# define BN_MP_MONTGOMERY_REDUCE_C +# define BN_MP_MONTGOMERY_SETUP_C +# define BN_MP_MUL_C +# define BN_MP_MUL_2_C +# define BN_MP_MUL_2D_C +# define BN_MP_MUL_D_C +# define BN_MP_MULMOD_C +# define BN_MP_N_ROOT_C +# define BN_MP_N_ROOT_EX_C +# define BN_MP_NEG_C +# define BN_MP_OR_C +# define BN_MP_PRIME_FERMAT_C +# define BN_MP_PRIME_FROBENIUS_UNDERWOOD_C +# define BN_MP_PRIME_IS_DIVISIBLE_C +# define BN_MP_PRIME_IS_PRIME_C +# define BN_MP_PRIME_MILLER_RABIN_C +# define BN_MP_PRIME_NEXT_PRIME_C +# define BN_MP_PRIME_RABIN_MILLER_TRIALS_C +# define BN_MP_PRIME_RANDOM_EX_C +# define BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C +# define BN_MP_RADIX_SIZE_C +# define BN_MP_RADIX_SMAP_C +# define BN_MP_RAND_C +# define BN_MP_READ_RADIX_C +# define BN_MP_READ_SIGNED_BIN_C +# define BN_MP_READ_UNSIGNED_BIN_C +# define BN_MP_REDUCE_C +# define BN_MP_REDUCE_2K_C +# define BN_MP_REDUCE_2K_L_C +# define BN_MP_REDUCE_2K_SETUP_C +# define BN_MP_REDUCE_2K_SETUP_L_C +# define BN_MP_REDUCE_IS_2K_C +# define BN_MP_REDUCE_IS_2K_L_C +# define BN_MP_REDUCE_SETUP_C +# define BN_MP_RSHD_C +# define BN_MP_SET_C +# define BN_MP_SET_DOUBLE_C +# define BN_MP_SET_INT_C +# define BN_MP_SET_LONG_C +# define BN_MP_SET_LONG_LONG_C +# define BN_MP_SHRINK_C +# define BN_MP_SIGNED_BIN_SIZE_C +# define BN_MP_SQR_C +# define BN_MP_SQRMOD_C +# define BN_MP_SQRT_C +# define BN_MP_SQRTMOD_PRIME_C +# define BN_MP_SUB_C +# define BN_MP_SUB_D_C +# define BN_MP_SUBMOD_C +# define BN_MP_TC_AND_C +# define BN_MP_TC_DIV_2D_C +# define BN_MP_TC_OR_C +# define BN_MP_TC_XOR_C +# define BN_MP_TO_SIGNED_BIN_C +# define BN_MP_TO_SIGNED_BIN_N_C +# define BN_MP_TO_UNSIGNED_BIN_C +# define BN_MP_TO_UNSIGNED_BIN_N_C +# define BN_MP_TOOM_MUL_C +# define BN_MP_TOOM_SQR_C +# define BN_MP_TORADIX_C +# define BN_MP_TORADIX_N_C +# define BN_MP_UNSIGNED_BIN_SIZE_C +# define BN_MP_XOR_C +# define BN_MP_ZERO_C +# define BN_PRIME_TAB_C +# define BN_REVERSE_C +# define BN_S_MP_ADD_C +# define BN_S_MP_EXPTMOD_C +# define BN_S_MP_MUL_DIGS_C +# define BN_S_MP_MUL_HIGH_DIGS_C +# define BN_S_MP_SQR_C +# define BN_S_MP_SUB_C +# define BNCORE_C +#endif +#if defined(BN_ERROR_C) +# define BN_MP_ERROR_TO_STRING_C +#endif + +#if defined(BN_FAST_MP_INVMOD_C) +# define BN_MP_ISEVEN_C +# define BN_MP_INIT_MULTI_C +# define BN_MP_COPY_C +# define BN_MP_MOD_C +# define BN_MP_ISZERO_C +# define BN_MP_SET_C +# define BN_MP_DIV_2_C +# define BN_MP_ISODD_C +# define BN_MP_SUB_C +# define BN_MP_CMP_C +# define BN_MP_CMP_D_C +# define BN_MP_ADD_C +# define BN_MP_CMP_MAG_C +# define BN_MP_EXCH_C +# define BN_MP_CLEAR_MULTI_C +#endif + +#if defined(BN_FAST_MP_MONTGOMERY_REDUCE_C) +# define BN_MP_GROW_C +# define BN_MP_RSHD_C +# define BN_MP_CLAMP_C +# define BN_MP_CMP_MAG_C +# define BN_S_MP_SUB_C +#endif + +#if defined(BN_FAST_S_MP_MUL_DIGS_C) +# define BN_MP_GROW_C +# define BN_MP_CLAMP_C +#endif + +#if defined(BN_FAST_S_MP_MUL_HIGH_DIGS_C) +# define BN_MP_GROW_C +# define BN_MP_CLAMP_C +#endif + +#if defined(BN_FAST_S_MP_SQR_C) +# define BN_MP_GROW_C +# define BN_MP_CLAMP_C +#endif + +#if defined(BN_MP_2EXPT_C) +# define BN_MP_ZERO_C +# define BN_MP_GROW_C +#endif + +#if defined(BN_MP_ABS_C) +# define BN_MP_COPY_C +#endif + +#if defined(BN_MP_ADD_C) +# define BN_S_MP_ADD_C +# define BN_MP_CMP_MAG_C +# define BN_S_MP_SUB_C +#endif + +#if defined(BN_MP_ADD_D_C) +# define BN_MP_GROW_C +# define BN_MP_SUB_D_C +# define BN_MP_CLAMP_C +#endif + +#if defined(BN_MP_ADDMOD_C) +# define BN_MP_INIT_C +# define BN_MP_ADD_C +# define BN_MP_CLEAR_C +# define BN_MP_MOD_C +#endif + +#if defined(BN_MP_AND_C) +# define BN_MP_INIT_COPY_C +# define BN_MP_CLAMP_C +# define BN_MP_EXCH_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_CLAMP_C) +#endif + +#if defined(BN_MP_CLEAR_C) +#endif + +#if defined(BN_MP_CLEAR_MULTI_C) +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_CMP_C) +# define BN_MP_CMP_MAG_C +#endif + +#if defined(BN_MP_CMP_D_C) +#endif + +#if defined(BN_MP_CMP_MAG_C) +#endif + +#if defined(BN_MP_CNT_LSB_C) +# define BN_MP_ISZERO_C +#endif + +#if defined(BN_MP_COMPLEMENT_C) +# define BN_MP_NEG_C +# define BN_MP_SUB_D_C +#endif + +#if defined(BN_MP_COPY_C) +# define BN_MP_GROW_C +#endif + +#if defined(BN_MP_COUNT_BITS_C) +#endif + +#if defined(BN_MP_DIV_C) +# define BN_MP_ISZERO_C +# define BN_MP_CMP_MAG_C +# define BN_MP_COPY_C +# define BN_MP_ZERO_C +# define BN_MP_INIT_MULTI_C +# define BN_MP_SET_C +# define BN_MP_COUNT_BITS_C +# define BN_MP_ABS_C +# define BN_MP_MUL_2D_C +# define BN_MP_CMP_C +# define BN_MP_SUB_C +# define BN_MP_ADD_C +# define BN_MP_DIV_2D_C +# define BN_MP_EXCH_C +# define BN_MP_CLEAR_MULTI_C +# define BN_MP_INIT_SIZE_C +# define BN_MP_INIT_C +# define BN_MP_INIT_COPY_C +# define BN_MP_LSHD_C +# define BN_MP_RSHD_C +# define BN_MP_MUL_D_C +# define BN_MP_CLAMP_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_DIV_2_C) +# define BN_MP_GROW_C +# define BN_MP_CLAMP_C +#endif + +#if defined(BN_MP_DIV_2D_C) +# define BN_MP_COPY_C +# define BN_MP_ZERO_C +# define BN_MP_MOD_2D_C +# define BN_MP_RSHD_C +# define BN_MP_CLAMP_C +#endif + +#if defined(BN_MP_DIV_3_C) +# define BN_MP_INIT_SIZE_C +# define BN_MP_CLAMP_C +# define BN_MP_EXCH_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_DIV_D_C) +# define BN_MP_ISZERO_C +# define BN_MP_COPY_C +# define BN_MP_DIV_2D_C +# define BN_MP_DIV_3_C +# define BN_MP_INIT_SIZE_C +# define BN_MP_CLAMP_C +# define BN_MP_EXCH_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_DR_IS_MODULUS_C) +#endif + +#if defined(BN_MP_DR_REDUCE_C) +# define BN_MP_GROW_C +# define BN_MP_CLAMP_C +# define BN_MP_CMP_MAG_C +# define BN_S_MP_SUB_C +#endif + +#if defined(BN_MP_DR_SETUP_C) +#endif + +#if defined(BN_MP_EXCH_C) +#endif + +#if defined(BN_MP_EXPORT_C) +# define BN_MP_INIT_COPY_C +# define BN_MP_COUNT_BITS_C +# define BN_MP_DIV_2D_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_EXPT_D_C) +# define BN_MP_EXPT_D_EX_C +#endif + +#if defined(BN_MP_EXPT_D_EX_C) +# define BN_MP_INIT_COPY_C +# define BN_MP_SET_C +# define BN_MP_MUL_C +# define BN_MP_CLEAR_C +# define BN_MP_SQR_C +#endif + +#if defined(BN_MP_EXPTMOD_C) +# define BN_MP_INIT_C +# define BN_MP_INVMOD_C +# define BN_MP_CLEAR_C +# define BN_MP_ABS_C +# define BN_MP_CLEAR_MULTI_C +# define BN_MP_REDUCE_IS_2K_L_C +# define BN_S_MP_EXPTMOD_C +# define BN_MP_DR_IS_MODULUS_C +# define BN_MP_REDUCE_IS_2K_C +# define BN_MP_ISODD_C +# define BN_MP_EXPTMOD_FAST_C +#endif + +#if defined(BN_MP_EXPTMOD_FAST_C) +# define BN_MP_COUNT_BITS_C +# define BN_MP_INIT_SIZE_C +# define BN_MP_CLEAR_C +# define BN_MP_MONTGOMERY_SETUP_C +# define BN_FAST_MP_MONTGOMERY_REDUCE_C +# define BN_MP_MONTGOMERY_REDUCE_C +# define BN_MP_DR_SETUP_C +# define BN_MP_DR_REDUCE_C +# define BN_MP_REDUCE_2K_SETUP_C +# define BN_MP_REDUCE_2K_C +# define BN_MP_MONTGOMERY_CALC_NORMALIZATION_C +# define BN_MP_MULMOD_C +# define BN_MP_SET_C +# define BN_MP_MOD_C +# define BN_MP_COPY_C +# define BN_MP_SQR_C +# define BN_MP_MUL_C +# define BN_MP_EXCH_C +#endif + +#if defined(BN_MP_EXTEUCLID_C) +# define BN_MP_INIT_MULTI_C +# define BN_MP_SET_C +# define BN_MP_COPY_C +# define BN_MP_ISZERO_C +# define BN_MP_DIV_C +# define BN_MP_MUL_C +# define BN_MP_SUB_C +# define BN_MP_NEG_C +# define BN_MP_EXCH_C +# define BN_MP_CLEAR_MULTI_C +#endif + +#if defined(BN_MP_FREAD_C) +# define BN_MP_ZERO_C +# define BN_MP_S_RMAP_REVERSE_SZ_C +# define BN_MP_S_RMAP_REVERSE_C +# define BN_MP_MUL_D_C +# define BN_MP_ADD_D_C +# define BN_MP_CMP_D_C +#endif + +#if defined(BN_MP_FWRITE_C) +# define BN_MP_RADIX_SIZE_C +# define BN_MP_TORADIX_C +#endif + +#if defined(BN_MP_GCD_C) +# define BN_MP_ISZERO_C +# define BN_MP_ABS_C +# define BN_MP_INIT_COPY_C +# define BN_MP_CNT_LSB_C +# define BN_MP_DIV_2D_C +# define BN_MP_CMP_MAG_C +# define BN_MP_EXCH_C +# define BN_S_MP_SUB_C +# define BN_MP_MUL_2D_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_GET_BIT_C) +# define BN_MP_ISZERO_C +#endif + +#if defined(BN_MP_GET_DOUBLE_C) +# define BN_MP_ISNEG_C +#endif + +#if defined(BN_MP_GET_INT_C) +#endif + +#if defined(BN_MP_GET_LONG_C) +#endif + +#if defined(BN_MP_GET_LONG_LONG_C) +#endif + +#if defined(BN_MP_GROW_C) +#endif + +#if defined(BN_MP_IMPORT_C) +# define BN_MP_ZERO_C +# define BN_MP_MUL_2D_C +# define BN_MP_CLAMP_C +#endif + +#if defined(BN_MP_INIT_C) +#endif + +#if defined(BN_MP_INIT_COPY_C) +# define BN_MP_INIT_SIZE_C +# define BN_MP_COPY_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_INIT_MULTI_C) +# define BN_MP_ERR_C +# define BN_MP_INIT_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_INIT_SET_C) +# define BN_MP_INIT_C +# define BN_MP_SET_C +#endif + +#if defined(BN_MP_INIT_SET_INT_C) +# define BN_MP_INIT_C +# define BN_MP_SET_INT_C +#endif + +#if defined(BN_MP_INIT_SIZE_C) +# define BN_MP_INIT_C +#endif + +#if defined(BN_MP_INVMOD_C) +# define BN_MP_CMP_D_C +# define BN_MP_ISODD_C +# define BN_FAST_MP_INVMOD_C +# define BN_MP_INVMOD_SLOW_C +#endif + +#if defined(BN_MP_INVMOD_SLOW_C) +# define BN_MP_ISZERO_C +# define BN_MP_INIT_MULTI_C +# define BN_MP_MOD_C +# define BN_MP_COPY_C +# define BN_MP_ISEVEN_C +# define BN_MP_SET_C +# define BN_MP_DIV_2_C +# define BN_MP_ISODD_C +# define BN_MP_ADD_C +# define BN_MP_SUB_C +# define BN_MP_CMP_C +# define BN_MP_CMP_D_C +# define BN_MP_CMP_MAG_C +# define BN_MP_EXCH_C +# define BN_MP_CLEAR_MULTI_C +#endif + +#if defined(BN_MP_IS_SQUARE_C) +# define BN_MP_MOD_D_C +# define BN_MP_INIT_SET_INT_C +# define BN_MP_MOD_C +# define BN_MP_GET_INT_C +# define BN_MP_SQRT_C +# define BN_MP_SQR_C +# define BN_MP_CMP_MAG_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_JACOBI_C) +# define BN_MP_KRONECKER_C +# define BN_MP_ISNEG_C +# define BN_MP_CMP_D_C +#endif + +#if defined(BN_MP_KARATSUBA_MUL_C) +# define BN_MP_MUL_C +# define BN_MP_INIT_SIZE_C +# define BN_MP_CLAMP_C +# define BN_S_MP_ADD_C +# define BN_MP_ADD_C +# define BN_S_MP_SUB_C +# define BN_MP_LSHD_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_KARATSUBA_SQR_C) +# define BN_MP_INIT_SIZE_C +# define BN_MP_CLAMP_C +# define BN_MP_SQR_C +# define BN_S_MP_ADD_C +# define BN_S_MP_SUB_C +# define BN_MP_LSHD_C +# define BN_MP_ADD_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_KRONECKER_C) +# define BN_MP_ISZERO_C +# define BN_MP_ISEVEN_C +# define BN_MP_INIT_COPY_C +# define BN_MP_CNT_LSB_C +# define BN_MP_DIV_2D_C +# define BN_MP_CMP_D_C +# define BN_MP_COPY_C +# define BN_MP_MOD_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_LCM_C) +# define BN_MP_INIT_MULTI_C +# define BN_MP_GCD_C +# define BN_MP_CMP_MAG_C +# define BN_MP_DIV_C +# define BN_MP_MUL_C +# define BN_MP_CLEAR_MULTI_C +#endif + +#if defined(BN_MP_LSHD_C) +# define BN_MP_ISZERO_C +# define BN_MP_GROW_C +# define BN_MP_RSHD_C +#endif + +#if defined(BN_MP_MOD_C) +# define BN_MP_INIT_SIZE_C +# define BN_MP_DIV_C +# define BN_MP_CLEAR_C +# define BN_MP_ISZERO_C +# define BN_MP_EXCH_C +# define BN_MP_ADD_C +#endif + +#if defined(BN_MP_MOD_2D_C) +# define BN_MP_ZERO_C +# define BN_MP_COPY_C +# define BN_MP_CLAMP_C +#endif + +#if defined(BN_MP_MOD_D_C) +# define BN_MP_DIV_D_C +#endif + +#if defined(BN_MP_MONTGOMERY_CALC_NORMALIZATION_C) +# define BN_MP_COUNT_BITS_C +# define BN_MP_2EXPT_C +# define BN_MP_SET_C +# define BN_MP_MUL_2_C +# define BN_MP_CMP_MAG_C +# define BN_S_MP_SUB_C +#endif + +#if defined(BN_MP_MONTGOMERY_REDUCE_C) +# define BN_FAST_MP_MONTGOMERY_REDUCE_C +# define BN_MP_GROW_C +# define BN_MP_CLAMP_C +# define BN_MP_RSHD_C +# define BN_MP_CMP_MAG_C +# define BN_S_MP_SUB_C +#endif + +#if defined(BN_MP_MONTGOMERY_SETUP_C) +#endif + +#if defined(BN_MP_MUL_C) +# define BN_MP_TOOM_MUL_C +# define BN_MP_KARATSUBA_MUL_C +# define BN_FAST_S_MP_MUL_DIGS_C +# define BN_S_MP_MUL_C +# define BN_S_MP_MUL_DIGS_C +#endif + +#if defined(BN_MP_MUL_2_C) +# define BN_MP_GROW_C +#endif + +#if defined(BN_MP_MUL_2D_C) +# define BN_MP_COPY_C +# define BN_MP_GROW_C +# define BN_MP_LSHD_C +# define BN_MP_CLAMP_C +#endif + +#if defined(BN_MP_MUL_D_C) +# define BN_MP_GROW_C +# define BN_MP_CLAMP_C +#endif + +#if defined(BN_MP_MULMOD_C) +# define BN_MP_INIT_SIZE_C +# define BN_MP_MUL_C +# define BN_MP_CLEAR_C +# define BN_MP_MOD_C +#endif + +#if defined(BN_MP_N_ROOT_C) +# define BN_MP_N_ROOT_EX_C +#endif + +#if defined(BN_MP_N_ROOT_EX_C) +# define BN_MP_INIT_C +# define BN_MP_SET_C +# define BN_MP_COPY_C +# define BN_MP_EXPT_D_EX_C +# define BN_MP_MUL_C +# define BN_MP_SUB_C +# define BN_MP_MUL_D_C +# define BN_MP_DIV_C +# define BN_MP_CMP_C +# define BN_MP_SUB_D_C +# define BN_MP_EXCH_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_NEG_C) +# define BN_MP_COPY_C +# define BN_MP_ISZERO_C +#endif + +#if defined(BN_MP_OR_C) +# define BN_MP_INIT_COPY_C +# define BN_MP_CLAMP_C +# define BN_MP_EXCH_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_PRIME_FERMAT_C) +# define BN_MP_CMP_D_C +# define BN_MP_INIT_C +# define BN_MP_EXPTMOD_C +# define BN_MP_CMP_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_PRIME_FROBENIUS_UNDERWOOD_C) +# define BN_MP_PRIME_IS_PRIME_C +# define BN_MP_INIT_MULTI_C +# define BN_MP_SET_LONG_C +# define BN_MP_SQR_C +# define BN_MP_SUB_D_C +# define BN_MP_KRONECKER_C +# define BN_MP_GCD_C +# define BN_MP_ADD_D_C +# define BN_MP_SET_C +# define BN_MP_COUNT_BITS_C +# define BN_MP_MUL_2_C +# define BN_MP_MUL_D_C +# define BN_MP_ADD_C +# define BN_MP_MUL_C +# define BN_MP_SUB_C +# define BN_MP_MOD_C +# define BN_MP_GET_BIT_C +# define BN_MP_EXCH_C +# define BN_MP_ISZERO_C +# define BN_MP_CMP_C +# define BN_MP_CLEAR_MULTI_C +#endif + +#if defined(BN_MP_PRIME_IS_DIVISIBLE_C) +# define BN_MP_MOD_D_C +#endif + +#if defined(BN_MP_PRIME_IS_PRIME_C) +# define BN_MP_ISEVEN_C +# define BN_MP_IS_SQUARE_C +# define BN_MP_CMP_D_C +# define BN_MP_PRIME_IS_DIVISIBLE_C +# define BN_MP_INIT_SET_C +# define BN_MP_PRIME_MILLER_RABIN_C +# define BN_MP_PRIME_FROBENIUS_UNDERWOOD_C +# define BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C +# define BN_MP_READ_RADIX_C +# define BN_MP_CMP_C +# define BN_MP_SET_C +# define BN_MP_COUNT_BITS_C +# define BN_MP_RAND_C +# define BN_MP_DIV_2D_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_PRIME_MILLER_RABIN_C) +# define BN_MP_CMP_D_C +# define BN_MP_INIT_COPY_C +# define BN_MP_SUB_D_C +# define BN_MP_CNT_LSB_C +# define BN_MP_DIV_2D_C +# define BN_MP_EXPTMOD_C +# define BN_MP_CMP_C +# define BN_MP_SQRMOD_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_PRIME_NEXT_PRIME_C) +# define BN_MP_CMP_D_C +# define BN_MP_SET_C +# define BN_MP_SUB_D_C +# define BN_MP_ISEVEN_C +# define BN_MP_MOD_D_C +# define BN_MP_INIT_C +# define BN_MP_ADD_D_C +# define BN_MP_PRIME_IS_PRIME_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_PRIME_RABIN_MILLER_TRIALS_C) +#endif + +#if defined(BN_MP_PRIME_RANDOM_EX_C) +# define BN_MP_READ_UNSIGNED_BIN_C +# define BN_MP_PRIME_IS_PRIME_C +# define BN_MP_SUB_D_C +# define BN_MP_DIV_2_C +# define BN_MP_MUL_2_C +# define BN_MP_ADD_D_C +#endif + +#if defined(BN_MP_PRIME_STRONG_LUCAS_SELFRIDGE_C) +# define BN_MP_PRIME_IS_PRIME_C +# define BN_MP_MUL_D_C +# define BN_S_MP_MUL_SI_C +# define BN_MP_INIT_C +# define BN_MP_SET_LONG_C +# define BN_MP_MUL_C +# define BN_MP_CLEAR_C +# define BN_MP_INIT_MULTI_C +# define BN_MP_GCD_C +# define BN_MP_CMP_D_C +# define BN_MP_CMP_C +# define BN_MP_KRONECKER_C +# define BN_MP_ADD_D_C +# define BN_MP_CNT_LSB_C +# define BN_MP_DIV_2D_C +# define BN_MP_SET_C +# define BN_MP_MUL_2_C +# define BN_MP_COUNT_BITS_C +# define BN_MP_MOD_C +# define BN_MP_SQR_C +# define BN_MP_SUB_C +# define BN_MP_GET_BIT_C +# define BN_MP_ADD_C +# define BN_MP_ISODD_C +# define BN_MP_DIV_2_C +# define BN_MP_SUB_D_C +# define BN_MP_ISZERO_C +# define BN_MP_CLEAR_MULTI_C +#endif + +#if defined(BN_MP_RADIX_SIZE_C) +# define BN_MP_ISZERO_C +# define BN_MP_COUNT_BITS_C +# define BN_MP_INIT_COPY_C +# define BN_MP_DIV_D_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_RADIX_SMAP_C) +# define BN_MP_S_RMAP_C +# define BN_MP_S_RMAP_REVERSE_C +# define BN_MP_S_RMAP_REVERSE_SZ_C +#endif + +#if defined(BN_MP_RAND_C) +# define BN_MP_RAND_DIGIT_C +# define BN_MP_ZERO_C +# define BN_MP_ADD_D_C +# define BN_MP_LSHD_C +#endif + +#if defined(BN_MP_READ_RADIX_C) +# define BN_MP_ZERO_C +# define BN_MP_S_RMAP_REVERSE_SZ_C +# define BN_MP_S_RMAP_REVERSE_C +# define BN_MP_MUL_D_C +# define BN_MP_ADD_D_C +# define BN_MP_ISZERO_C +#endif + +#if defined(BN_MP_READ_SIGNED_BIN_C) +# define BN_MP_READ_UNSIGNED_BIN_C +#endif + +#if defined(BN_MP_READ_UNSIGNED_BIN_C) +# define BN_MP_GROW_C +# define BN_MP_ZERO_C +# define BN_MP_MUL_2D_C +# define BN_MP_CLAMP_C +#endif + +#if defined(BN_MP_REDUCE_C) +# define BN_MP_REDUCE_SETUP_C +# define BN_MP_INIT_COPY_C +# define BN_MP_RSHD_C +# define BN_MP_MUL_C +# define BN_S_MP_MUL_HIGH_DIGS_C +# define BN_FAST_S_MP_MUL_HIGH_DIGS_C +# define BN_MP_MOD_2D_C +# define BN_S_MP_MUL_DIGS_C +# define BN_MP_SUB_C +# define BN_MP_CMP_D_C +# define BN_MP_SET_C +# define BN_MP_LSHD_C +# define BN_MP_ADD_C +# define BN_MP_CMP_C +# define BN_S_MP_SUB_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_REDUCE_2K_C) +# define BN_MP_INIT_C +# define BN_MP_COUNT_BITS_C +# define BN_MP_DIV_2D_C +# define BN_MP_MUL_D_C +# define BN_S_MP_ADD_C +# define BN_MP_CMP_MAG_C +# define BN_S_MP_SUB_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_REDUCE_2K_L_C) +# define BN_MP_INIT_C +# define BN_MP_COUNT_BITS_C +# define BN_MP_DIV_2D_C +# define BN_MP_MUL_C +# define BN_S_MP_ADD_C +# define BN_MP_CMP_MAG_C +# define BN_S_MP_SUB_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_REDUCE_2K_SETUP_C) +# define BN_MP_INIT_C +# define BN_MP_COUNT_BITS_C +# define BN_MP_2EXPT_C +# define BN_MP_CLEAR_C +# define BN_S_MP_SUB_C +#endif + +#if defined(BN_MP_REDUCE_2K_SETUP_L_C) +# define BN_MP_INIT_C +# define BN_MP_2EXPT_C +# define BN_MP_COUNT_BITS_C +# define BN_S_MP_SUB_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_REDUCE_IS_2K_C) +# define BN_MP_REDUCE_2K_C +# define BN_MP_COUNT_BITS_C +#endif + +#if defined(BN_MP_REDUCE_IS_2K_L_C) +#endif + +#if defined(BN_MP_REDUCE_SETUP_C) +# define BN_MP_2EXPT_C +# define BN_MP_DIV_C +#endif + +#if defined(BN_MP_RSHD_C) +# define BN_MP_ZERO_C +#endif + +#if defined(BN_MP_SET_C) +# define BN_MP_ZERO_C +#endif + +#if defined(BN_MP_SET_DOUBLE_C) +# define BN_MP_SET_LONG_LONG_C +# define BN_MP_DIV_2D_C +# define BN_MP_MUL_2D_C +# define BN_MP_ISZERO_C +#endif + +#if defined(BN_MP_SET_INT_C) +# define BN_MP_ZERO_C +# define BN_MP_MUL_2D_C +# define BN_MP_CLAMP_C +#endif + +#if defined(BN_MP_SET_LONG_C) +#endif + +#if defined(BN_MP_SET_LONG_LONG_C) +#endif + +#if defined(BN_MP_SHRINK_C) +#endif + +#if defined(BN_MP_SIGNED_BIN_SIZE_C) +# define BN_MP_UNSIGNED_BIN_SIZE_C +#endif + +#if defined(BN_MP_SQR_C) +# define BN_MP_TOOM_SQR_C +# define BN_MP_KARATSUBA_SQR_C +# define BN_FAST_S_MP_SQR_C +# define BN_S_MP_SQR_C +#endif + +#if defined(BN_MP_SQRMOD_C) +# define BN_MP_INIT_C +# define BN_MP_SQR_C +# define BN_MP_CLEAR_C +# define BN_MP_MOD_C +#endif + +#if defined(BN_MP_SQRT_C) +# define BN_MP_N_ROOT_C +# define BN_MP_ISZERO_C +# define BN_MP_ZERO_C +# define BN_MP_INIT_COPY_C +# define BN_MP_RSHD_C +# define BN_MP_DIV_C +# define BN_MP_ADD_C +# define BN_MP_DIV_2_C +# define BN_MP_CMP_MAG_C +# define BN_MP_EXCH_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_SQRTMOD_PRIME_C) +# define BN_MP_CMP_D_C +# define BN_MP_ZERO_C +# define BN_MP_JACOBI_C +# define BN_MP_INIT_MULTI_C +# define BN_MP_MOD_D_C +# define BN_MP_ADD_D_C +# define BN_MP_DIV_2_C +# define BN_MP_EXPTMOD_C +# define BN_MP_COPY_C +# define BN_MP_SUB_D_C +# define BN_MP_ISEVEN_C +# define BN_MP_SET_INT_C +# define BN_MP_SQRMOD_C +# define BN_MP_MULMOD_C +# define BN_MP_SET_C +# define BN_MP_CLEAR_MULTI_C +#endif + +#if defined(BN_MP_SUB_C) +# define BN_S_MP_ADD_C +# define BN_MP_CMP_MAG_C +# define BN_S_MP_SUB_C +#endif + +#if defined(BN_MP_SUB_D_C) +# define BN_MP_GROW_C +# define BN_MP_ADD_D_C +# define BN_MP_CLAMP_C +#endif + +#if defined(BN_MP_SUBMOD_C) +# define BN_MP_INIT_C +# define BN_MP_SUB_C +# define BN_MP_CLEAR_C +# define BN_MP_MOD_C +#endif + +#if defined(BN_MP_TC_AND_C) +# define BN_MP_ISNEG_C +# define BN_MP_COUNT_BITS_C +# define BN_MP_INIT_SET_INT_C +# define BN_MP_MUL_2D_C +# define BN_MP_INIT_C +# define BN_MP_ADD_C +# define BN_MP_CLEAR_C +# define BN_MP_AND_C +# define BN_MP_SUB_C +#endif + +#if defined(BN_MP_TC_DIV_2D_C) +# define BN_MP_ISNEG_C +# define BN_MP_DIV_2D_C +# define BN_MP_ADD_D_C +# define BN_MP_SUB_D_C +#endif + +#if defined(BN_MP_TC_OR_C) +# define BN_MP_ISNEG_C +# define BN_MP_COUNT_BITS_C +# define BN_MP_INIT_SET_INT_C +# define BN_MP_MUL_2D_C +# define BN_MP_INIT_C +# define BN_MP_ADD_C +# define BN_MP_CLEAR_C +# define BN_MP_OR_C +# define BN_MP_SUB_C +#endif + +#if defined(BN_MP_TC_XOR_C) +# define BN_MP_ISNEG_C +# define BN_MP_COUNT_BITS_C +# define BN_MP_INIT_SET_INT_C +# define BN_MP_MUL_2D_C +# define BN_MP_INIT_C +# define BN_MP_ADD_C +# define BN_MP_CLEAR_C +# define BN_MP_XOR_C +# define BN_MP_SUB_C +#endif + +#if defined(BN_MP_TO_SIGNED_BIN_C) +# define BN_MP_TO_UNSIGNED_BIN_C +#endif + +#if defined(BN_MP_TO_SIGNED_BIN_N_C) +# define BN_MP_SIGNED_BIN_SIZE_C +# define BN_MP_TO_SIGNED_BIN_C +#endif + +#if defined(BN_MP_TO_UNSIGNED_BIN_C) +# define BN_MP_INIT_COPY_C +# define BN_MP_ISZERO_C +# define BN_MP_DIV_2D_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_TO_UNSIGNED_BIN_N_C) +# define BN_MP_UNSIGNED_BIN_SIZE_C +# define BN_MP_TO_UNSIGNED_BIN_C +#endif + +#if defined(BN_MP_TOOM_MUL_C) +# define BN_MP_INIT_MULTI_C +# define BN_MP_MOD_2D_C +# define BN_MP_COPY_C +# define BN_MP_RSHD_C +# define BN_MP_MUL_C +# define BN_MP_MUL_2_C +# define BN_MP_ADD_C +# define BN_MP_SUB_C +# define BN_MP_DIV_2_C +# define BN_MP_MUL_2D_C +# define BN_MP_MUL_D_C +# define BN_MP_DIV_3_C +# define BN_MP_LSHD_C +# define BN_MP_CLEAR_MULTI_C +#endif + +#if defined(BN_MP_TOOM_SQR_C) +# define BN_MP_INIT_MULTI_C +# define BN_MP_MOD_2D_C +# define BN_MP_COPY_C +# define BN_MP_RSHD_C +# define BN_MP_SQR_C +# define BN_MP_MUL_2_C +# define BN_MP_ADD_C +# define BN_MP_SUB_C +# define BN_MP_DIV_2_C +# define BN_MP_MUL_2D_C +# define BN_MP_MUL_D_C +# define BN_MP_DIV_3_C +# define BN_MP_LSHD_C +# define BN_MP_CLEAR_MULTI_C +#endif + +#if defined(BN_MP_TORADIX_C) +# define BN_MP_ISZERO_C +# define BN_MP_INIT_COPY_C +# define BN_MP_DIV_D_C +# define BN_MP_CLEAR_C +# define BN_MP_S_RMAP_C +#endif + +#if defined(BN_MP_TORADIX_N_C) +# define BN_MP_ISZERO_C +# define BN_MP_INIT_COPY_C +# define BN_MP_DIV_D_C +# define BN_MP_CLEAR_C +# define BN_MP_S_RMAP_C +#endif + +#if defined(BN_MP_UNSIGNED_BIN_SIZE_C) +# define BN_MP_COUNT_BITS_C +#endif + +#if defined(BN_MP_XOR_C) +# define BN_MP_INIT_COPY_C +# define BN_MP_CLAMP_C +# define BN_MP_EXCH_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_MP_ZERO_C) +#endif + +#if defined(BN_PRIME_TAB_C) +#endif + +#if defined(BN_REVERSE_C) +#endif + +#if defined(BN_S_MP_ADD_C) +# define BN_MP_GROW_C +# define BN_MP_CLAMP_C +#endif + +#if defined(BN_S_MP_EXPTMOD_C) +# define BN_MP_COUNT_BITS_C +# define BN_MP_INIT_C +# define BN_MP_CLEAR_C +# define BN_MP_REDUCE_SETUP_C +# define BN_MP_REDUCE_C +# define BN_MP_REDUCE_2K_SETUP_L_C +# define BN_MP_REDUCE_2K_L_C +# define BN_MP_MOD_C +# define BN_MP_COPY_C +# define BN_MP_SQR_C +# define BN_MP_MUL_C +# define BN_MP_SET_C +# define BN_MP_EXCH_C +#endif + +#if defined(BN_S_MP_MUL_DIGS_C) +# define BN_FAST_S_MP_MUL_DIGS_C +# define BN_MP_INIT_SIZE_C +# define BN_MP_CLAMP_C +# define BN_MP_EXCH_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_S_MP_MUL_HIGH_DIGS_C) +# define BN_FAST_S_MP_MUL_HIGH_DIGS_C +# define BN_MP_INIT_SIZE_C +# define BN_MP_CLAMP_C +# define BN_MP_EXCH_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_S_MP_SQR_C) +# define BN_MP_INIT_SIZE_C +# define BN_MP_CLAMP_C +# define BN_MP_EXCH_C +# define BN_MP_CLEAR_C +#endif + +#if defined(BN_S_MP_SUB_C) +# define BN_MP_GROW_C +# define BN_MP_CLAMP_C +#endif + +#if defined(BNCORE_C) +#endif + +#ifdef LTM3 +# define LTM_LAST +#endif + +#include +#include +#else +# define LTM_LAST +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/tommath_private.h b/fsbl/lib/libtommath/tommath_private.h new file mode 100644 index 000000000..35463702f --- /dev/null +++ b/fsbl/lib/libtommath/tommath_private.h @@ -0,0 +1,122 @@ +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ +#ifndef TOMMATH_PRIV_H_ +#define TOMMATH_PRIV_H_ + +#include "tommath.h" +#include + +#ifndef MIN +#define MIN(x, y) (((x) < (y)) ? (x) : (y)) +#endif + +#ifndef MAX +#define MAX(x, y) (((x) > (y)) ? (x) : (y)) +#endif + +#ifdef __cplusplus +extern "C" { + +/* C++ compilers don't like assigning void * to mp_digit * */ +#define OPT_CAST(x) (x *) + +#else + +/* C on the other hand doesn't care */ +#define OPT_CAST(x) + +#endif + +/* define heap macros */ +#ifndef XMALLOC +/* default to libc stuff */ +# define XMALLOC malloc +# define XFREE free +# define XREALLOC realloc +# define XCALLOC calloc +#else +/* prototypes for our heap functions */ +extern void *XMALLOC(size_t n); +extern void *XREALLOC(void *p, size_t n); +extern void *XCALLOC(size_t n, size_t s); +extern void XFREE(void *p); +#endif + +/* lowlevel functions, do not call! */ +int s_mp_add(const mp_int *a, const mp_int *b, mp_int *c); +int s_mp_sub(const mp_int *a, const mp_int *b, mp_int *c); +#define s_mp_mul(a, b, c) s_mp_mul_digs(a, b, c, (a)->used + (b)->used + 1) +int fast_s_mp_mul_digs(const mp_int *a, const mp_int *b, mp_int *c, int digs); +int s_mp_mul_digs(const mp_int *a, const mp_int *b, mp_int *c, int digs); +int fast_s_mp_mul_high_digs(const mp_int *a, const mp_int *b, mp_int *c, int digs); +int s_mp_mul_high_digs(const mp_int *a, const mp_int *b, mp_int *c, int digs); +int fast_s_mp_sqr(const mp_int *a, mp_int *b); +int s_mp_sqr(const mp_int *a, mp_int *b); +int mp_karatsuba_mul(const mp_int *a, const mp_int *b, mp_int *c); +int mp_toom_mul(const mp_int *a, const mp_int *b, mp_int *c); +int mp_karatsuba_sqr(const mp_int *a, mp_int *b); +int mp_toom_sqr(const mp_int *a, mp_int *b); +int fast_mp_invmod(const mp_int *a, const mp_int *b, mp_int *c); +int mp_invmod_slow(const mp_int *a, const mp_int *b, mp_int *c); +int fast_mp_montgomery_reduce(mp_int *x, const mp_int *n, mp_digit rho); +int mp_exptmod_fast(const mp_int *G, const mp_int *X, const mp_int *P, mp_int *Y, int redmode); +int s_mp_exptmod(const mp_int *G, const mp_int *X, const mp_int *P, mp_int *Y, int redmode); +void bn_reverse(unsigned char *s, int len); + +extern const char *const mp_s_rmap; +extern const uint8_t mp_s_rmap_reverse[]; +extern const size_t mp_s_rmap_reverse_sz; + +/* Fancy macro to set an MPI from another type. + * There are several things assumed: + * x is the counter and unsigned + * a is the pointer to the MPI + * b is the original value that should be set in the MPI. + */ +#define MP_SET_XLONG(func_name, type) \ +int func_name (mp_int * a, type b) \ +{ \ + unsigned int x; \ + int res; \ + \ + mp_zero (a); \ + \ + /* set four bits at a time */ \ + for (x = 0; x < (sizeof(type) * 2u); x++) { \ + /* shift the number up four bits */ \ + if ((res = mp_mul_2d (a, 4, a)) != MP_OKAY) { \ + return res; \ + } \ + \ + /* OR in the top four bits of the source */ \ + a->dp[0] |= (mp_digit)(b >> ((sizeof(type) * 8u) - 4u)) & 15uL;\ + \ + /* shift the source up to the next four bits */ \ + b <<= 4; \ + \ + /* ensure that digits are not clamped off */ \ + a->used += 1; \ + } \ + mp_clamp (a); \ + return MP_OKAY; \ +} + +#ifdef __cplusplus +} +#endif + +#endif + + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/tommath_superclass.h b/fsbl/lib/libtommath/tommath_superclass.h new file mode 100644 index 000000000..7b98ed635 --- /dev/null +++ b/fsbl/lib/libtommath/tommath_superclass.h @@ -0,0 +1,88 @@ +/* LibTomMath, multiple-precision integer library -- Tom St Denis + * + * LibTomMath is a library that provides multiple-precision + * integer arithmetic as well as number theoretic functionality. + * + * The library was designed directly after the MPI library by + * Michael Fromberger but has been written from scratch with + * additional optimizations in place. + * + * SPDX-License-Identifier: Unlicense + */ + +/* super class file for PK algos */ + +/* default ... include all MPI */ +#define LTM_ALL + +/* RSA only (does not support DH/DSA/ECC) */ +/* #define SC_RSA_1 */ + +/* For reference.... On an Athlon64 optimizing for speed... + + LTM's mpi.o with all functions [striped] is 142KiB in size. + +*/ + +/* Works for RSA only, mpi.o is 68KiB */ +#ifdef SC_RSA_1 +# define BN_MP_SHRINK_C +# define BN_MP_LCM_C +# define BN_MP_PRIME_RANDOM_EX_C +# define BN_MP_INVMOD_C +# define BN_MP_GCD_C +# define BN_MP_MOD_C +# define BN_MP_MULMOD_C +# define BN_MP_ADDMOD_C +# define BN_MP_EXPTMOD_C +# define BN_MP_SET_INT_C +# define BN_MP_INIT_MULTI_C +# define BN_MP_CLEAR_MULTI_C +# define BN_MP_UNSIGNED_BIN_SIZE_C +# define BN_MP_TO_UNSIGNED_BIN_C +# define BN_MP_MOD_D_C +# define BN_MP_PRIME_RABIN_MILLER_TRIALS_C +# define BN_REVERSE_C +# define BN_PRIME_TAB_C + +/* other modifiers */ +# define BN_MP_DIV_SMALL /* Slower division, not critical */ + +/* here we are on the last pass so we turn things off. The functions classes are still there + * but we remove them specifically from the build. This also invokes tweaks in functions + * like removing support for even moduli, etc... + */ +# ifdef LTM_LAST +# undef BN_MP_TOOM_MUL_C +# undef BN_MP_TOOM_SQR_C +# undef BN_MP_KARATSUBA_MUL_C +# undef BN_MP_KARATSUBA_SQR_C +# undef BN_MP_REDUCE_C +# undef BN_MP_REDUCE_SETUP_C +# undef BN_MP_DR_IS_MODULUS_C +# undef BN_MP_DR_SETUP_C +# undef BN_MP_DR_REDUCE_C +# undef BN_MP_REDUCE_IS_2K_C +# undef BN_MP_REDUCE_2K_SETUP_C +# undef BN_MP_REDUCE_2K_C +# undef BN_S_MP_EXPTMOD_C +# undef BN_MP_DIV_3_C +# undef BN_S_MP_MUL_HIGH_DIGS_C +# undef BN_FAST_S_MP_MUL_HIGH_DIGS_C +# undef BN_FAST_MP_INVMOD_C + +/* To safely undefine these you have to make sure your RSA key won't exceed the Comba threshold + * which is roughly 255 digits [7140 bits for 32-bit machines, 15300 bits for 64-bit machines] + * which means roughly speaking you can handle upto 2536-bit RSA keys with these defined without + * trouble. + */ +# undef BN_S_MP_MUL_DIGS_C +# undef BN_S_MP_SQR_C +# undef BN_MP_MONTGOMERY_REDUCE_C +# endif + +#endif + +/* ref: $Format:%D$ */ +/* git commit: $Format:%H$ */ +/* commit time: $Format:%ai$ */ diff --git a/fsbl/lib/libtommath/updatemakes.sh b/fsbl/lib/libtommath/updatemakes.sh new file mode 100755 index 000000000..8a5ca8651 --- /dev/null +++ b/fsbl/lib/libtommath/updatemakes.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +./helper.pl --update-makefiles || exit 1 + +makefiles=(makefile makefile.shared makefile_include.mk makefile.msvc makefile.unix makefile.mingw) +vcproj=(libtommath_VS2008.vcproj) + +if [ $# -eq 1 ] && [ "$1" == "-c" ]; then + git add ${makefiles[@]} ${vcproj[@]} && git commit -m 'Update makefiles' +fi + +exit 0 + +# ref: $Format:%D$ +# git commit: $Format:%H$ +# commit time: $Format:%ai$ diff --git a/fsbl/lib/lz4/LICENSE b/fsbl/lib/lz4/LICENSE new file mode 100644 index 000000000..74c2cdd7d --- /dev/null +++ b/fsbl/lib/lz4/LICENSE @@ -0,0 +1,24 @@ +LZ4 Library +Copyright (c) 2011-2016, Yann Collet +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, this + list of conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/fsbl/lib/lz4/Makefile b/fsbl/lib/lz4/Makefile new file mode 100644 index 000000000..c12949bba --- /dev/null +++ b/fsbl/lib/lz4/Makefile @@ -0,0 +1,217 @@ +# ################################################################ +# LZ4 library - Makefile +# Copyright (C) Yann Collet 2011-2016 +# All rights reserved. +# +# This Makefile is validated for Linux, macOS, *BSD, Hurd, Solaris, MSYS2 targets +# +# BSD license +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright notice, this +# list of conditions and the following disclaimer in the documentation and/or +# other materials provided with the distribution. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# +# You can contact the author at : +# - LZ4 source repository : https://github.com/lz4/lz4 +# - LZ4 forum froup : https://groups.google.com/forum/#!forum/lz4c +# ################################################################ + +# Version numbers +LIBVER_MAJOR_SCRIPT:=`sed -n '/define LZ4_VERSION_MAJOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./lz4.h` +LIBVER_MINOR_SCRIPT:=`sed -n '/define LZ4_VERSION_MINOR/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./lz4.h` +LIBVER_PATCH_SCRIPT:=`sed -n '/define LZ4_VERSION_RELEASE/s/.*[[:blank:]]\([0-9][0-9]*\).*/\1/p' < ./lz4.h` +LIBVER_SCRIPT:= $(LIBVER_MAJOR_SCRIPT).$(LIBVER_MINOR_SCRIPT).$(LIBVER_PATCH_SCRIPT) +LIBVER_MAJOR := $(shell echo $(LIBVER_MAJOR_SCRIPT)) +LIBVER_MINOR := $(shell echo $(LIBVER_MINOR_SCRIPT)) +LIBVER_PATCH := $(shell echo $(LIBVER_PATCH_SCRIPT)) +LIBVER := $(shell echo $(LIBVER_SCRIPT)) + +BUILD_SHARED:=yes +BUILD_STATIC:=yes + +CPPFLAGS+= -DXXH_NAMESPACE=LZ4_ +CFLAGS ?= -O3 +DEBUGFLAGS:= -Wall -Wextra -Wcast-qual -Wcast-align -Wshadow \ + -Wswitch-enum -Wdeclaration-after-statement -Wstrict-prototypes \ + -Wundef -Wpointer-arith -Wstrict-aliasing=1 +CFLAGS += $(DEBUGFLAGS) $(MOREFLAGS) +FLAGS = $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) + +SRCFILES := $(sort $(wildcard *.c)) + +include ../Makefile.inc + +# OS X linker doesn't support -soname, and use different extension +# see : https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/DynamicLibraryDesignGuidelines.html +ifeq ($(TARGET_OS), Darwin) + SHARED_EXT = dylib + SHARED_EXT_MAJOR = $(LIBVER_MAJOR).$(SHARED_EXT) + SHARED_EXT_VER = $(LIBVER).$(SHARED_EXT) + SONAME_FLAGS = -install_name $(libdir)/liblz4.$(SHARED_EXT_MAJOR) -compatibility_version $(LIBVER_MAJOR) -current_version $(LIBVER) +else + SONAME_FLAGS = -Wl,-soname=liblz4.$(SHARED_EXT).$(LIBVER_MAJOR) + SHARED_EXT = so + SHARED_EXT_MAJOR = $(SHARED_EXT).$(LIBVER_MAJOR) + SHARED_EXT_VER = $(SHARED_EXT).$(LIBVER) +endif + +.PHONY: default +default: lib-release + +lib-release: DEBUGFLAGS := +lib-release: lib + +lib: liblz4.a liblz4 + +all: lib + +all32: CFLAGS+=-m32 +all32: all + +liblz4.a: $(SRCFILES) +ifeq ($(BUILD_STATIC),yes) # can be disabled on command line + @echo compiling static library + $(Q)$(CC) $(CPPFLAGS) $(CFLAGS) -c $^ + $(Q)$(AR) rcs $@ *.o +endif + +ifeq ($(WINBASED),yes) +liblz4-dll.rc: liblz4-dll.rc.in + @echo creating library resource + $(Q)sed -e 's|@LIBLZ4@|$(LIBLZ4)|' \ + -e 's|@LIBVER_MAJOR@|$(LIBVER_MAJOR)|g' \ + -e 's|@LIBVER_MINOR@|$(LIBVER_MINOR)|g' \ + -e 's|@LIBVER_PATCH@|$(LIBVER_PATCH)|g' \ + $< >$@ + +liblz4-dll.o: liblz4-dll.rc + $(WINDRES) -i liblz4-dll.rc -o liblz4-dll.o + +$(LIBLZ4): $(SRCFILES) liblz4-dll.o +else +$(LIBLZ4): $(SRCFILES) +endif +ifeq ($(BUILD_SHARED),yes) # can be disabled on command line + @echo compiling dynamic library $(LIBVER) + ifeq ($(WINBASED),yes) + $(Q)$(CC) $(FLAGS) -DLZ4_DLL_EXPORT=1 -shared $^ -o dll/$@.dll -Wl,--out-implib,dll/$(LIBLZ4_EXP) + else + $(Q)$(CC) $(FLAGS) -shared $^ -fPIC -fvisibility=hidden $(SONAME_FLAGS) -o $@ + @echo creating versioned links + $(Q)$(LN_SF) $@ liblz4.$(SHARED_EXT_MAJOR) + $(Q)$(LN_SF) $@ liblz4.$(SHARED_EXT) + endif +endif + +ifeq (,$(filter MINGW%,$(TARGET_OS))) +liblz4: $(LIBLZ4) +endif + +clean: +ifeq ($(WINBASED),yes) + $(Q)$(RM) *.rc +endif + $(Q)$(RM) core *.o liblz4.pc dll/$(LIBLZ4).dll dll/$(LIBLZ4_EXP) + $(Q)$(RM) *.a *.$(SHARED_EXT) *.$(SHARED_EXT_MAJOR) *.$(SHARED_EXT_VER) + @echo Cleaning library completed + +#----------------------------------------------------------------------------- +# make install is validated only for Linux, OSX, BSD, Hurd and Solaris targets +#----------------------------------------------------------------------------- +ifeq ($(POSIX_ENV),Yes) + +.PHONY: listL120 +listL120: # extract lines >= 120 characters in *.{c,h}, by Takayuki Matsuoka (note : $$, for Makefile compatibility) + find . -type f -name '*.c' -o -name '*.h' | while read -r filename; do awk 'length > 120 {print FILENAME "(" FNR "): " $$0}' $$filename; done + +DESTDIR ?= +# directory variables : GNU conventions prefer lowercase +# see https://www.gnu.org/prep/standards/html_node/Makefile-Conventions.html +# support both lower and uppercase (BSD), use lower in script +PREFIX ?= /usr/local +prefix ?= $(PREFIX) +EXEC_PREFIX ?= $(prefix) +exec_prefix ?= $(EXEC_PREFIX) +BINDIR ?= $(exec_prefix)/bin +bindir ?= $(BINDIR) +LIBDIR ?= $(exec_prefix)/lib +libdir ?= $(LIBDIR) +INCLUDEDIR ?= $(prefix)/include +includedir ?= $(INCLUDEDIR) + + ifneq (,$(filter $(TARGET_OS),OpenBSD FreeBSD NetBSD DragonFly MidnightBSD)) +PKGCONFIGDIR ?= $(prefix)/libdata/pkgconfig + else +PKGCONFIGDIR ?= $(libdir)/pkgconfig + endif +pkgconfigdir ?= $(PKGCONFIGDIR) + +liblz4.pc: liblz4.pc.in Makefile + @echo creating pkgconfig + $(Q)sed -e 's|@PREFIX@|$(prefix)|' \ + -e 's|@LIBDIR@|$(libdir)|' \ + -e 's|@INCLUDEDIR@|$(includedir)|' \ + -e 's|@VERSION@|$(LIBVER)|' \ + $< >$@ + +install: lib liblz4.pc + $(Q)$(INSTALL_DIR) $(DESTDIR)$(pkgconfigdir)/ $(DESTDIR)$(includedir)/ $(DESTDIR)$(libdir)/ $(DESTDIR)$(bindir)/ + $(Q)$(INSTALL_DATA) liblz4.pc $(DESTDIR)$(pkgconfigdir)/ + @echo Installing libraries + ifeq ($(BUILD_STATIC),yes) + $(Q)$(INSTALL_DATA) liblz4.a $(DESTDIR)$(libdir)/liblz4.a + $(Q)$(INSTALL_DATA) lz4frame_static.h $(DESTDIR)$(includedir)/lz4frame_static.h + endif + ifeq ($(BUILD_SHARED),yes) +# Traditionnally, one installs the DLLs in the bin directory as programs +# search them first in their directory. This allows to not pollute system +# directories (like c:/windows/system32), nor modify the PATH variable. + ifeq ($(WINBASED),yes) + $(Q)$(INSTALL_PROGRAM) dll/$(LIBLZ4).dll $(DESTDIR)$(bindir) + $(Q)$(INSTALL_PROGRAM) dll/$(LIBLZ4_EXP) $(DESTDIR)$(libdir) + else + $(Q)$(INSTALL_PROGRAM) liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(libdir) + $(Q)$(LN_SF) liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(libdir)/liblz4.$(SHARED_EXT_MAJOR) + $(Q)$(LN_SF) liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(libdir)/liblz4.$(SHARED_EXT) + endif + endif + @echo Installing headers in $(includedir) + $(Q)$(INSTALL_DATA) lz4.h $(DESTDIR)$(includedir)/lz4.h + $(Q)$(INSTALL_DATA) lz4hc.h $(DESTDIR)$(includedir)/lz4hc.h + $(Q)$(INSTALL_DATA) lz4frame.h $(DESTDIR)$(includedir)/lz4frame.h + @echo lz4 libraries installed + +uninstall: + $(Q)$(RM) $(DESTDIR)$(pkgconfigdir)/liblz4.pc + ifeq (WINBASED,1) + $(Q)$(RM) $(DESTDIR)$(bindir)/$(LIBLZ4).dll + $(Q)$(RM) $(DESTDIR)$(libdir)/$(LIBLZ4_EXP) + else + $(Q)$(RM) $(DESTDIR)$(libdir)/liblz4.$(SHARED_EXT) + $(Q)$(RM) $(DESTDIR)$(libdir)/liblz4.$(SHARED_EXT_MAJOR) + $(Q)$(RM) $(DESTDIR)$(libdir)/liblz4.$(SHARED_EXT_VER) + endif + $(Q)$(RM) $(DESTDIR)$(libdir)/liblz4.a + $(Q)$(RM) $(DESTDIR)$(includedir)/lz4.h + $(Q)$(RM) $(DESTDIR)$(includedir)/lz4hc.h + $(Q)$(RM) $(DESTDIR)$(includedir)/lz4frame.h + $(Q)$(RM) $(DESTDIR)$(includedir)/lz4frame_static.h + @echo lz4 libraries successfully uninstalled + +endif diff --git a/fsbl/lib/lz4/README.md b/fsbl/lib/lz4/README.md new file mode 100644 index 000000000..e2af868ff --- /dev/null +++ b/fsbl/lib/lz4/README.md @@ -0,0 +1,137 @@ +LZ4 - Library Files +================================ + +The `/lib` directory contains many files, but depending on project's objectives, +not all of them are necessary. + +#### Minimal LZ4 build + +The minimum required is **`lz4.c`** and **`lz4.h`**, +which provides the fast compression and decompression algorithms. +They generate and decode data using the [LZ4 block format]. + + +#### High Compression variant + +For more compression ratio at the cost of compression speed, +the High Compression variant called **lz4hc** is available. +Add files **`lz4hc.c`** and **`lz4hc.h`**. +This variant also compresses data using the [LZ4 block format], +and depends on regular `lib/lz4.*` source files. + + +#### Frame support, for interoperability + +In order to produce compressed data compatible with `lz4` command line utility, +it's necessary to use the [official interoperable frame format]. +This format is generated and decoded automatically by the **lz4frame** library. +Its public API is described in `lib/lz4frame.h`. +In order to work properly, lz4frame needs all other modules present in `/lib`, +including, lz4 and lz4hc, and also **xxhash**. +So it's necessary to include all `*.c` and `*.h` files present in `/lib`. + + +#### Advanced / Experimental API + +Definitions which are not guaranteed to remain stable in future versions, +are protected behind macros, such as `LZ4_STATIC_LINKING_ONLY`. +As the name strongly implies, these definitions should only be invoked +in the context of static linking ***only***. +Otherwise, dependent application may fail on API or ABI break in the future. +The associated symbols are also not exposed by the dynamic library by default. +Should they be nonetheless needed, it's possible to force their publication +by using build macros `LZ4_PUBLISH_STATIC_FUNCTIONS` +and `LZ4F_PUBLISH_STATIC_FUNCTIONS`. + + +#### Build macros + +The following build macro can be selected to adjust source code behavior at compilation time : + +- `LZ4_FAST_DEC_LOOP` : this triggers a speed optimized decompression loop, more powerful on modern cpus. + This loop works great on `x86`, `x64` and `aarch64` cpus, and is automatically enabled for them. + It's also possible to enable or disable it manually, by passing `LZ4_FAST_DEC_LOOP=1` or `0` to the preprocessor. + For example, with `gcc` : `-DLZ4_FAST_DEC_LOOP=1`, + and with `make` : `CPPFLAGS+=-DLZ4_FAST_DEC_LOOP=1 make lz4`. + +- `LZ4_DISTANCE_MAX` : control the maximum offset that the compressor will allow. + Set to 65535 by default, which is the maximum value supported by lz4 format. + Reducing maximum distance will reduce opportunities for LZ4 to find matches, + hence will produce a worse compression ratio. + However, a smaller max distance can allow compatibility with specific decoders using limited memory budget. + This build macro only influences the compressed output of the compressor. + +- `LZ4_DISABLE_DEPRECATE_WARNINGS` : invoking a deprecated function will make the compiler generate a warning. + This is meant to invite users to update their source code. + Should this be a problem, it's generally possible to make the compiler ignore these warnings, + for example with `-Wno-deprecated-declarations` on `gcc`, + or `_CRT_SECURE_NO_WARNINGS` for Visual Studio. + This build macro offers another project-specific method + by defining `LZ4_DISABLE_DEPRECATE_WARNINGS` before including the LZ4 header files. + +- `LZ4_USER_MEMORY_FUNCTIONS` : replace calls to 's `malloc`, `calloc` and `free` + by user-defined functions, which must be called `LZ4_malloc()`, `LZ4_calloc()` and `LZ4_free()`. + User functions must be available at link time. + +- `LZ4_FORCE_SW_BITCOUNT` : by default, the compression algorithm tries to determine lengths + by using bitcount instructions, generally implemented as fast single instructions in many cpus. + In case the target cpus doesn't support it, or compiler intrinsic doesn't work, or feature bad performance, + it's possible to use an optimized software path instead. + This is achieved by setting this build macros . + In most cases, it's not expected to be necessary, + but it can be legitimately considered for less common platforms. + +- `LZ4_ALIGN_TEST` : alignment test ensures that the memory area + passed as argument to become a compression state is suitably aligned. + This test can be disabled if it proves flaky, by setting this value to 0. + + +#### Amalgamation + +lz4 source code can be amalgamated into a single file. +One can combine all source code into `lz4_all.c` by using following command: +``` +cat lz4.c lz4hc.c lz4frame.c > lz4_all.c +``` +(`cat` file order is important) then compile `lz4_all.c`. +All `*.h` files present in `/lib` remain necessary to compile `lz4_all.c`. + + +#### Windows : using MinGW+MSYS to create DLL + +DLL can be created using MinGW+MSYS with the `make liblz4` command. +This command creates `dll\liblz4.dll` and the import library `dll\liblz4.lib`. +To override the `dlltool` command when cross-compiling on Linux, just set the `DLLTOOL` variable. Example of cross compilation on Linux with mingw-w64 64 bits: +``` +make BUILD_STATIC=no CC=x86_64-w64-mingw32-gcc DLLTOOL=x86_64-w64-mingw32-dlltool OS=Windows_NT +``` +The import library is only required with Visual C++. +The header files `lz4.h`, `lz4hc.h`, `lz4frame.h` and the dynamic library +`dll\liblz4.dll` are required to compile a project using gcc/MinGW. +The dynamic library has to be added to linking options. +It means that if a project that uses LZ4 consists of a single `test-dll.c` +file it should be linked with `dll\liblz4.dll`. For example: +``` + $(CC) $(CFLAGS) -Iinclude/ test-dll.c -o test-dll dll\liblz4.dll +``` +The compiled executable will require LZ4 DLL which is available at `dll\liblz4.dll`. + + +#### Miscellaneous + +Other files present in the directory are not source code. They are : + + - `LICENSE` : contains the BSD license text + - `Makefile` : `make` script to compile and install lz4 library (static and dynamic) + - `liblz4.pc.in` : for `pkg-config` (used in `make install`) + - `README.md` : this file + +[official interoperable frame format]: ../doc/lz4_Frame_format.md +[LZ4 block format]: ../doc/lz4_Block_format.md + + +#### License + +All source material within __lib__ directory are BSD 2-Clause licensed. +See [LICENSE](LICENSE) for details. +The license is also reminded at the top of each source file. diff --git a/fsbl/lib/lz4/lz4.c b/fsbl/lib/lz4/lz4.c new file mode 100644 index 000000000..9f5e9bfa0 --- /dev/null +++ b/fsbl/lib/lz4/lz4.c @@ -0,0 +1,2495 @@ +/* + LZ4 - Fast LZ compression algorithm + Copyright (C) 2011-present, Yann Collet. + + BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + You can contact the author at : + - LZ4 homepage : http://www.lz4.org + - LZ4 source repository : https://github.com/lz4/lz4 +*/ + +/*-************************************ +* Tuning parameters +**************************************/ +/* + * LZ4_HEAPMODE : + * Select how default compression functions will allocate memory for their hash table, + * in memory stack (0:default, fastest), or in memory heap (1:requires malloc()). + */ +#ifndef LZ4_HEAPMODE +# define LZ4_HEAPMODE 0 +#endif + +/* + * LZ4_ACCELERATION_DEFAULT : + * Select "acceleration" for LZ4_compress_fast() when parameter value <= 0 + */ +#define LZ4_ACCELERATION_DEFAULT 1 +/* + * LZ4_ACCELERATION_MAX : + * Any "acceleration" value higher than this threshold + * get treated as LZ4_ACCELERATION_MAX instead (fix #876) + */ +#define LZ4_ACCELERATION_MAX 65537 + + +/*-************************************ +* CPU Feature Detection +**************************************/ +/* LZ4_FORCE_MEMORY_ACCESS + * By default, access to unaligned memory is controlled by `memcpy()`, which is safe and portable. + * Unfortunately, on some target/compiler combinations, the generated assembly is sub-optimal. + * The below switch allow to select different access method for improved performance. + * Method 0 (default) : use `memcpy()`. Safe and portable. + * Method 1 : `__packed` statement. It depends on compiler extension (ie, not portable). + * This method is safe if your compiler supports it, and *generally* as fast or faster than `memcpy`. + * Method 2 : direct access. This method is portable but violate C standard. + * It can generate buggy code on targets which assembly generation depends on alignment. + * But in some circumstances, it's the only known way to get the most performance (ie GCC + ARMv6) + * See https://fastcompression.blogspot.fr/2015/08/accessing-unaligned-memory.html for details. + * Prefer these methods in priority order (0 > 1 > 2) + */ +#ifndef LZ4_FORCE_MEMORY_ACCESS /* can be defined externally */ +# if defined(__GNUC__) && \ + ( defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) \ + || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) ) +# define LZ4_FORCE_MEMORY_ACCESS 2 +# elif (defined(__INTEL_COMPILER) && !defined(_WIN32)) || defined(__GNUC__) +# define LZ4_FORCE_MEMORY_ACCESS 1 +# endif +#endif + +/* + * LZ4_FORCE_SW_BITCOUNT + * Define this parameter if your target system or compiler does not support hardware bit count + */ +#if defined(_MSC_VER) && defined(_WIN32_WCE) /* Visual Studio for WinCE doesn't support Hardware bit count */ +# undef LZ4_FORCE_SW_BITCOUNT /* avoid double def */ +# define LZ4_FORCE_SW_BITCOUNT +#endif + + + +/*-************************************ +* Dependency +**************************************/ +/* + * LZ4_SRC_INCLUDED: + * Amalgamation flag, whether lz4.c is included + */ +#ifndef LZ4_SRC_INCLUDED +# define LZ4_SRC_INCLUDED 1 +#endif + +#ifndef LZ4_STATIC_LINKING_ONLY +#define LZ4_STATIC_LINKING_ONLY +#endif + +#ifndef LZ4_DISABLE_DEPRECATE_WARNINGS +#define LZ4_DISABLE_DEPRECATE_WARNINGS /* due to LZ4_decompress_safe_withPrefix64k */ +#endif + +#define LZ4_STATIC_LINKING_ONLY /* LZ4_DISTANCE_MAX */ +#include "lz4.h" +/* see also "memory routines" below */ + + +/*-************************************ +* Compiler Options +**************************************/ +#if defined(_MSC_VER) && (_MSC_VER >= 1400) /* Visual Studio 2005+ */ +# include /* only present in VS2005+ */ +# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */ +#endif /* _MSC_VER */ + +#ifndef LZ4_FORCE_INLINE +# ifdef _MSC_VER /* Visual Studio */ +# define LZ4_FORCE_INLINE static __forceinline +# else +# if defined (__cplusplus) || defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */ +# ifdef __GNUC__ +# define LZ4_FORCE_INLINE static inline __attribute__((always_inline)) +# else +# define LZ4_FORCE_INLINE static inline +# endif +# else +# define LZ4_FORCE_INLINE static +# endif /* __STDC_VERSION__ */ +# endif /* _MSC_VER */ +#endif /* LZ4_FORCE_INLINE */ + +/* LZ4_FORCE_O2 and LZ4_FORCE_INLINE + * gcc on ppc64le generates an unrolled SIMDized loop for LZ4_wildCopy8, + * together with a simple 8-byte copy loop as a fall-back path. + * However, this optimization hurts the decompression speed by >30%, + * because the execution does not go to the optimized loop + * for typical compressible data, and all of the preamble checks + * before going to the fall-back path become useless overhead. + * This optimization happens only with the -O3 flag, and -O2 generates + * a simple 8-byte copy loop. + * With gcc on ppc64le, all of the LZ4_decompress_* and LZ4_wildCopy8 + * functions are annotated with __attribute__((optimize("O2"))), + * and also LZ4_wildCopy8 is forcibly inlined, so that the O2 attribute + * of LZ4_wildCopy8 does not affect the compression speed. + */ +#if defined(__PPC64__) && defined(__LITTLE_ENDIAN__) && defined(__GNUC__) && !defined(__clang__) +# define LZ4_FORCE_O2 __attribute__((optimize("O2"))) +# undef LZ4_FORCE_INLINE +# define LZ4_FORCE_INLINE static __inline __attribute__((optimize("O2"),always_inline)) +#else +# define LZ4_FORCE_O2 +#endif + +#if (defined(__GNUC__) && (__GNUC__ >= 3)) || (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 800)) || defined(__clang__) +# define expect(expr,value) (__builtin_expect ((expr),(value)) ) +#else +# define expect(expr,value) (expr) +#endif + +#ifndef likely +#define likely(expr) expect((expr) != 0, 1) +#endif +#ifndef unlikely +#define unlikely(expr) expect((expr) != 0, 0) +#endif + +/* Should the alignment test prove unreliable, for some reason, + * it can be disabled by setting LZ4_ALIGN_TEST to 0 */ +#ifndef LZ4_ALIGN_TEST /* can be externally provided */ +# define LZ4_ALIGN_TEST 1 +#endif + + +/*-************************************ +* Memory routines +**************************************/ +#ifdef LZ4_USER_MEMORY_FUNCTIONS +/* memory management functions can be customized by user project. + * Below functions must exist somewhere in the Project + * and be available at link time */ +void* LZ4_malloc(size_t s); +void* LZ4_calloc(size_t n, size_t s); +void LZ4_free(void* p); +# define ALLOC(s) LZ4_malloc(s) +# define ALLOC_AND_ZERO(s) LZ4_calloc(1,s) +# define FREEMEM(p) LZ4_free(p) +#else +# include /* malloc, calloc, free */ +# define ALLOC(s) malloc(s) +# define ALLOC_AND_ZERO(s) calloc(1,s) +# define FREEMEM(p) free(p) +#endif + +#include /* memset, memcpy */ +#define MEM_INIT(p,v,s) memset((p),(v),(s)) + + +/*-************************************ +* Common Constants +**************************************/ +#define MINMATCH 4 + +#define WILDCOPYLENGTH 8 +#define LASTLITERALS 5 /* see ../doc/lz4_Block_format.md#parsing-restrictions */ +#define MFLIMIT 12 /* see ../doc/lz4_Block_format.md#parsing-restrictions */ +#define MATCH_SAFEGUARD_DISTANCE ((2*WILDCOPYLENGTH) - MINMATCH) /* ensure it's possible to write 2 x wildcopyLength without overflowing output buffer */ +#define FASTLOOP_SAFE_DISTANCE 64 +static const int LZ4_minLength = (MFLIMIT+1); + +#define KB *(1 <<10) +#define MB *(1 <<20) +#define GB *(1U<<30) + +#define LZ4_DISTANCE_ABSOLUTE_MAX 65535 +#if (LZ4_DISTANCE_MAX > LZ4_DISTANCE_ABSOLUTE_MAX) /* max supported by LZ4 format */ +# error "LZ4_DISTANCE_MAX is too big : must be <= 65535" +#endif + +#define ML_BITS 4 +#define ML_MASK ((1U<=1) +# include +#else +# ifndef assert +# define assert(condition) ((void)0) +# endif +#endif + +#define LZ4_STATIC_ASSERT(c) { enum { LZ4_static_assert = 1/(int)(!!(c)) }; } /* use after variable declarations */ + +#if defined(LZ4_DEBUG) && (LZ4_DEBUG>=2) +# include + static int g_debuglog_enable = 1; +# define DEBUGLOG(l, ...) { \ + if ((g_debuglog_enable) && (l<=LZ4_DEBUG)) { \ + fprintf(stderr, __FILE__ ": "); \ + fprintf(stderr, __VA_ARGS__); \ + fprintf(stderr, " \n"); \ + } } +#else +# define DEBUGLOG(l, ...) {} /* disabled */ +#endif + +static int LZ4_isAligned(const void* ptr, size_t alignment) +{ + return ((size_t)ptr & (alignment -1)) == 0; +} + + +/*-************************************ +* Types +**************************************/ +#include +#if defined(__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) +# include + typedef uint8_t BYTE; + typedef uint16_t U16; + typedef uint32_t U32; + typedef int32_t S32; + typedef uint64_t U64; + typedef uintptr_t uptrval; +#else +# if UINT_MAX != 4294967295UL +# error "LZ4 code (when not C++ or C99) assumes that sizeof(int) == 4" +# endif + typedef unsigned char BYTE; + typedef unsigned short U16; + typedef unsigned int U32; + typedef signed int S32; + typedef unsigned long long U64; + typedef size_t uptrval; /* generally true, except OpenVMS-64 */ +#endif + +#if defined(__x86_64__) + typedef U64 reg_t; /* 64-bits in x32 mode */ +#else + typedef size_t reg_t; /* 32-bits in x32 mode */ +#endif + +typedef enum { + notLimited = 0, + limitedOutput = 1, + fillOutput = 2 +} limitedOutput_directive; + + +/*-************************************ +* Reading and writing into memory +**************************************/ + +/** + * LZ4 relies on memcpy with a constant size being inlined. In freestanding + * environments, the compiler can't assume the implementation of memcpy() is + * standard compliant, so it can't apply its specialized memcpy() inlining + * logic. When possible, use __builtin_memcpy() to tell the compiler to analyze + * memcpy() as if it were standard compliant, so it can inline it in freestanding + * environments. This is needed when decompressing the Linux Kernel, for example. + */ +#if defined(__GNUC__) && (__GNUC__ >= 4) +#define LZ4_memcpy(dst, src, size) __builtin_memcpy(dst, src, size) +#else +#define LZ4_memcpy(dst, src, size) memcpy(dst, src, size) +#endif + +static unsigned LZ4_isLittleEndian(void) +{ + const union { U32 u; BYTE c[4]; } one = { 1 }; /* don't use static : performance detrimental */ + return one.c[0]; +} + + +#if defined(LZ4_FORCE_MEMORY_ACCESS) && (LZ4_FORCE_MEMORY_ACCESS==2) +/* lie to the compiler about data alignment; use with caution */ + +static U16 LZ4_read16(const void* memPtr) { return *(const U16*) memPtr; } +static U32 LZ4_read32(const void* memPtr) { return *(const U32*) memPtr; } +static reg_t LZ4_read_ARCH(const void* memPtr) { return *(const reg_t*) memPtr; } + +static void LZ4_write16(void* memPtr, U16 value) { *(U16*)memPtr = value; } +static void LZ4_write32(void* memPtr, U32 value) { *(U32*)memPtr = value; } + +#elif defined(LZ4_FORCE_MEMORY_ACCESS) && (LZ4_FORCE_MEMORY_ACCESS==1) + +/* __pack instructions are safer, but compiler specific, hence potentially problematic for some compilers */ +/* currently only defined for gcc and icc */ +typedef union { U16 u16; U32 u32; reg_t uArch; } __attribute__((packed)) unalign; + +static U16 LZ4_read16(const void* ptr) { return ((const unalign*)ptr)->u16; } +static U32 LZ4_read32(const void* ptr) { return ((const unalign*)ptr)->u32; } +static reg_t LZ4_read_ARCH(const void* ptr) { return ((const unalign*)ptr)->uArch; } + +static void LZ4_write16(void* memPtr, U16 value) { ((unalign*)memPtr)->u16 = value; } +static void LZ4_write32(void* memPtr, U32 value) { ((unalign*)memPtr)->u32 = value; } + +#else /* safe and portable access using memcpy() */ + +static U16 LZ4_read16(const void* memPtr) +{ + U16 val; LZ4_memcpy(&val, memPtr, sizeof(val)); return val; +} + +static U32 LZ4_read32(const void* memPtr) +{ + U32 val; LZ4_memcpy(&val, memPtr, sizeof(val)); return val; +} + +static reg_t LZ4_read_ARCH(const void* memPtr) +{ + reg_t val; LZ4_memcpy(&val, memPtr, sizeof(val)); return val; +} + +static void LZ4_write16(void* memPtr, U16 value) +{ + LZ4_memcpy(memPtr, &value, sizeof(value)); +} + +static void LZ4_write32(void* memPtr, U32 value) +{ + LZ4_memcpy(memPtr, &value, sizeof(value)); +} + +#endif /* LZ4_FORCE_MEMORY_ACCESS */ + + +static U16 LZ4_readLE16(const void* memPtr) +{ + if (LZ4_isLittleEndian()) { + return LZ4_read16(memPtr); + } else { + const BYTE* p = (const BYTE*)memPtr; + return (U16)((U16)p[0] + (p[1]<<8)); + } +} + +static void LZ4_writeLE16(void* memPtr, U16 value) +{ + if (LZ4_isLittleEndian()) { + LZ4_write16(memPtr, value); + } else { + BYTE* p = (BYTE*)memPtr; + p[0] = (BYTE) value; + p[1] = (BYTE)(value>>8); + } +} + +/* customized variant of memcpy, which can overwrite up to 8 bytes beyond dstEnd */ +LZ4_FORCE_INLINE +void LZ4_wildCopy8(void* dstPtr, const void* srcPtr, void* dstEnd) +{ + BYTE* d = (BYTE*)dstPtr; + const BYTE* s = (const BYTE*)srcPtr; + BYTE* const e = (BYTE*)dstEnd; + + do { LZ4_memcpy(d,s,8); d+=8; s+=8; } while (d= 16. */ +LZ4_FORCE_INLINE void +LZ4_wildCopy32(void* dstPtr, const void* srcPtr, void* dstEnd) +{ + BYTE* d = (BYTE*)dstPtr; + const BYTE* s = (const BYTE*)srcPtr; + BYTE* const e = (BYTE*)dstEnd; + + do { LZ4_memcpy(d,s,16); LZ4_memcpy(d+16,s+16,16); d+=32; s+=32; } while (d= dstPtr + MINMATCH + * - there is at least 8 bytes available to write after dstEnd */ +LZ4_FORCE_INLINE void +LZ4_memcpy_using_offset(BYTE* dstPtr, const BYTE* srcPtr, BYTE* dstEnd, const size_t offset) +{ + BYTE v[8]; + + assert(dstEnd >= dstPtr + MINMATCH); + + switch(offset) { + case 1: + MEM_INIT(v, *srcPtr, 8); + break; + case 2: + LZ4_memcpy(v, srcPtr, 2); + LZ4_memcpy(&v[2], srcPtr, 2); + LZ4_memcpy(&v[4], v, 4); + break; + case 4: + LZ4_memcpy(v, srcPtr, 4); + LZ4_memcpy(&v[4], srcPtr, 4); + break; + default: + LZ4_memcpy_using_offset_base(dstPtr, srcPtr, dstEnd, offset); + return; + } + + LZ4_memcpy(dstPtr, v, 8); + dstPtr += 8; + while (dstPtr < dstEnd) { + LZ4_memcpy(dstPtr, v, 8); + dstPtr += 8; + } +} +#endif + + +/*-************************************ +* Common functions +**************************************/ +static unsigned LZ4_NbCommonBytes (reg_t val) +{ + assert(val != 0); + if (LZ4_isLittleEndian()) { + if (sizeof(val) == 8) { +# if defined(_MSC_VER) && (_MSC_VER >= 1800) && defined(_M_AMD64) && !defined(LZ4_FORCE_SW_BITCOUNT) + /* x64 CPUS without BMI support interpret `TZCNT` as `REP BSF` */ + return (unsigned)_tzcnt_u64(val) >> 3; +# elif defined(_MSC_VER) && defined(_WIN64) && !defined(LZ4_FORCE_SW_BITCOUNT) + unsigned long r = 0; + _BitScanForward64(&r, (U64)val); + return (unsigned)r >> 3; +# elif (defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 3) || \ + ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4))))) && \ + !defined(LZ4_FORCE_SW_BITCOUNT) + return (unsigned)__builtin_ctzll((U64)val) >> 3; +# else + const U64 m = 0x0101010101010101ULL; + val ^= val - 1; + return (unsigned)(((U64)((val & (m - 1)) * m)) >> 56); +# endif + } else /* 32 bits */ { +# if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(LZ4_FORCE_SW_BITCOUNT) + unsigned long r; + _BitScanForward(&r, (U32)val); + return (unsigned)r >> 3; +# elif (defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 3) || \ + ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4))))) && \ + !defined(__TINYC__) && !defined(LZ4_FORCE_SW_BITCOUNT) + return (unsigned)__builtin_ctz((U32)val) >> 3; +# else + const U32 m = 0x01010101; + return (unsigned)((((val - 1) ^ val) & (m - 1)) * m) >> 24; +# endif + } + } else /* Big Endian CPU */ { + if (sizeof(val)==8) { +# if (defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 3) || \ + ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4))))) && \ + !defined(__TINYC__) && !defined(LZ4_FORCE_SW_BITCOUNT) + return (unsigned)__builtin_clzll((U64)val) >> 3; +# else +#if 1 + /* this method is probably faster, + * but adds a 128 bytes lookup table */ + static const unsigned char ctz7_tab[128] = { + 7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, + 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, + 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, + 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, + 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, + 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, + 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, + 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, + }; + U64 const mask = 0x0101010101010101ULL; + U64 const t = (((val >> 8) - mask) | val) & mask; + return ctz7_tab[(t * 0x0080402010080402ULL) >> 57]; +#else + /* this method doesn't consume memory space like the previous one, + * but it contains several branches, + * that may end up slowing execution */ + static const U32 by32 = sizeof(val)*4; /* 32 on 64 bits (goal), 16 on 32 bits. + Just to avoid some static analyzer complaining about shift by 32 on 32-bits target. + Note that this code path is never triggered in 32-bits mode. */ + unsigned r; + if (!(val>>by32)) { r=4; } else { r=0; val>>=by32; } + if (!(val>>16)) { r+=2; val>>=8; } else { val>>=24; } + r += (!val); + return r; +#endif +# endif + } else /* 32 bits */ { +# if (defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 3) || \ + ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4))))) && \ + !defined(LZ4_FORCE_SW_BITCOUNT) + return (unsigned)__builtin_clz((U32)val) >> 3; +# else + val >>= 8; + val = ((((val + 0x00FFFF00) | 0x00FFFFFF) + val) | + (val + 0x00FF0000)) >> 24; + return (unsigned)val ^ 3; +# endif + } + } +} + + +#define STEPSIZE sizeof(reg_t) +LZ4_FORCE_INLINE +unsigned LZ4_count(const BYTE* pIn, const BYTE* pMatch, const BYTE* pInLimit) +{ + const BYTE* const pStart = pIn; + + if (likely(pIn < pInLimit-(STEPSIZE-1))) { + reg_t const diff = LZ4_read_ARCH(pMatch) ^ LZ4_read_ARCH(pIn); + if (!diff) { + pIn+=STEPSIZE; pMatch+=STEPSIZE; + } else { + return LZ4_NbCommonBytes(diff); + } } + + while (likely(pIn < pInLimit-(STEPSIZE-1))) { + reg_t const diff = LZ4_read_ARCH(pMatch) ^ LZ4_read_ARCH(pIn); + if (!diff) { pIn+=STEPSIZE; pMatch+=STEPSIZE; continue; } + pIn += LZ4_NbCommonBytes(diff); + return (unsigned)(pIn - pStart); + } + + if ((STEPSIZE==8) && (pIn<(pInLimit-3)) && (LZ4_read32(pMatch) == LZ4_read32(pIn))) { pIn+=4; pMatch+=4; } + if ((pIn<(pInLimit-1)) && (LZ4_read16(pMatch) == LZ4_read16(pIn))) { pIn+=2; pMatch+=2; } + if ((pIn compression run slower on incompressible data */ + + +/*-************************************ +* Local Structures and types +**************************************/ +typedef enum { clearedTable = 0, byPtr, byU32, byU16 } tableType_t; + +/** + * This enum distinguishes several different modes of accessing previous + * content in the stream. + * + * - noDict : There is no preceding content. + * - withPrefix64k : Table entries up to ctx->dictSize before the current blob + * blob being compressed are valid and refer to the preceding + * content (of length ctx->dictSize), which is available + * contiguously preceding in memory the content currently + * being compressed. + * - usingExtDict : Like withPrefix64k, but the preceding content is somewhere + * else in memory, starting at ctx->dictionary with length + * ctx->dictSize. + * - usingDictCtx : Like usingExtDict, but everything concerning the preceding + * content is in a separate context, pointed to by + * ctx->dictCtx. ctx->dictionary, ctx->dictSize, and table + * entries in the current context that refer to positions + * preceding the beginning of the current compression are + * ignored. Instead, ctx->dictCtx->dictionary and ctx->dictCtx + * ->dictSize describe the location and size of the preceding + * content, and matches are found by looking in the ctx + * ->dictCtx->hashTable. + */ +typedef enum { noDict = 0, withPrefix64k, usingExtDict, usingDictCtx } dict_directive; +typedef enum { noDictIssue = 0, dictSmall } dictIssue_directive; + + +/*-************************************ +* Local Utils +**************************************/ +int LZ4_versionNumber (void) { return LZ4_VERSION_NUMBER; } +const char* LZ4_versionString(void) { return LZ4_VERSION_STRING; } +int LZ4_compressBound(int isize) { return LZ4_COMPRESSBOUND(isize); } +int LZ4_sizeofState(void) { return LZ4_STREAMSIZE; } + + +/*-************************************ +* Internal Definitions used in Tests +**************************************/ +#if defined (__cplusplus) +extern "C" { +#endif + +int LZ4_compress_forceExtDict (LZ4_stream_t* LZ4_dict, const char* source, char* dest, int srcSize); + +int LZ4_decompress_safe_forceExtDict(const char* source, char* dest, + int compressedSize, int maxOutputSize, + const void* dictStart, size_t dictSize); + +#if defined (__cplusplus) +} +#endif + +/*-****************************** +* Compression functions +********************************/ +LZ4_FORCE_INLINE U32 LZ4_hash4(U32 sequence, tableType_t const tableType) +{ + if (tableType == byU16) + return ((sequence * 2654435761U) >> ((MINMATCH*8)-(LZ4_HASHLOG+1))); + else + return ((sequence * 2654435761U) >> ((MINMATCH*8)-LZ4_HASHLOG)); +} + +LZ4_FORCE_INLINE U32 LZ4_hash5(U64 sequence, tableType_t const tableType) +{ + const U32 hashLog = (tableType == byU16) ? LZ4_HASHLOG+1 : LZ4_HASHLOG; + if (LZ4_isLittleEndian()) { + const U64 prime5bytes = 889523592379ULL; + return (U32)(((sequence << 24) * prime5bytes) >> (64 - hashLog)); + } else { + const U64 prime8bytes = 11400714785074694791ULL; + return (U32)(((sequence >> 24) * prime8bytes) >> (64 - hashLog)); + } +} + +LZ4_FORCE_INLINE U32 LZ4_hashPosition(const void* const p, tableType_t const tableType) +{ + if ((sizeof(reg_t)==8) && (tableType != byU16)) return LZ4_hash5(LZ4_read_ARCH(p), tableType); + return LZ4_hash4(LZ4_read32(p), tableType); +} + +LZ4_FORCE_INLINE void LZ4_clearHash(U32 h, void* tableBase, tableType_t const tableType) +{ + switch (tableType) + { + default: /* fallthrough */ + case clearedTable: { /* illegal! */ assert(0); return; } + case byPtr: { const BYTE** hashTable = (const BYTE**)tableBase; hashTable[h] = NULL; return; } + case byU32: { U32* hashTable = (U32*) tableBase; hashTable[h] = 0; return; } + case byU16: { U16* hashTable = (U16*) tableBase; hashTable[h] = 0; return; } + } +} + +LZ4_FORCE_INLINE void LZ4_putIndexOnHash(U32 idx, U32 h, void* tableBase, tableType_t const tableType) +{ + switch (tableType) + { + default: /* fallthrough */ + case clearedTable: /* fallthrough */ + case byPtr: { /* illegal! */ assert(0); return; } + case byU32: { U32* hashTable = (U32*) tableBase; hashTable[h] = idx; return; } + case byU16: { U16* hashTable = (U16*) tableBase; assert(idx < 65536); hashTable[h] = (U16)idx; return; } + } +} + +LZ4_FORCE_INLINE void LZ4_putPositionOnHash(const BYTE* p, U32 h, + void* tableBase, tableType_t const tableType, + const BYTE* srcBase) +{ + switch (tableType) + { + case clearedTable: { /* illegal! */ assert(0); return; } + case byPtr: { const BYTE** hashTable = (const BYTE**)tableBase; hashTable[h] = p; return; } + case byU32: { U32* hashTable = (U32*) tableBase; hashTable[h] = (U32)(p-srcBase); return; } + case byU16: { U16* hashTable = (U16*) tableBase; hashTable[h] = (U16)(p-srcBase); return; } + } +} + +LZ4_FORCE_INLINE void LZ4_putPosition(const BYTE* p, void* tableBase, tableType_t tableType, const BYTE* srcBase) +{ + U32 const h = LZ4_hashPosition(p, tableType); + LZ4_putPositionOnHash(p, h, tableBase, tableType, srcBase); +} + +/* LZ4_getIndexOnHash() : + * Index of match position registered in hash table. + * hash position must be calculated by using base+index, or dictBase+index. + * Assumption 1 : only valid if tableType == byU32 or byU16. + * Assumption 2 : h is presumed valid (within limits of hash table) + */ +LZ4_FORCE_INLINE U32 LZ4_getIndexOnHash(U32 h, const void* tableBase, tableType_t tableType) +{ + LZ4_STATIC_ASSERT(LZ4_MEMORY_USAGE > 2); + if (tableType == byU32) { + const U32* const hashTable = (const U32*) tableBase; + assert(h < (1U << (LZ4_MEMORY_USAGE-2))); + return hashTable[h]; + } + if (tableType == byU16) { + const U16* const hashTable = (const U16*) tableBase; + assert(h < (1U << (LZ4_MEMORY_USAGE-1))); + return hashTable[h]; + } + assert(0); return 0; /* forbidden case */ +} + +static const BYTE* LZ4_getPositionOnHash(U32 h, const void* tableBase, tableType_t tableType, const BYTE* srcBase) +{ + if (tableType == byPtr) { const BYTE* const* hashTable = (const BYTE* const*) tableBase; return hashTable[h]; } + if (tableType == byU32) { const U32* const hashTable = (const U32*) tableBase; return hashTable[h] + srcBase; } + { const U16* const hashTable = (const U16*) tableBase; return hashTable[h] + srcBase; } /* default, to ensure a return */ +} + +LZ4_FORCE_INLINE const BYTE* +LZ4_getPosition(const BYTE* p, + const void* tableBase, tableType_t tableType, + const BYTE* srcBase) +{ + U32 const h = LZ4_hashPosition(p, tableType); + return LZ4_getPositionOnHash(h, tableBase, tableType, srcBase); +} + +LZ4_FORCE_INLINE void +LZ4_prepareTable(LZ4_stream_t_internal* const cctx, + const int inputSize, + const tableType_t tableType) { + /* If the table hasn't been used, it's guaranteed to be zeroed out, and is + * therefore safe to use no matter what mode we're in. Otherwise, we figure + * out if it's safe to leave as is or whether it needs to be reset. + */ + if ((tableType_t)cctx->tableType != clearedTable) { + assert(inputSize >= 0); + if ((tableType_t)cctx->tableType != tableType + || ((tableType == byU16) && cctx->currentOffset + (unsigned)inputSize >= 0xFFFFU) + || ((tableType == byU32) && cctx->currentOffset > 1 GB) + || tableType == byPtr + || inputSize >= 4 KB) + { + DEBUGLOG(4, "LZ4_prepareTable: Resetting table in %p", cctx); + MEM_INIT(cctx->hashTable, 0, LZ4_HASHTABLESIZE); + cctx->currentOffset = 0; + cctx->tableType = (U32)clearedTable; + } else { + DEBUGLOG(4, "LZ4_prepareTable: Re-use hash table (no reset)"); + } + } + + /* Adding a gap, so all previous entries are > LZ4_DISTANCE_MAX back, is faster + * than compressing without a gap. However, compressing with + * currentOffset == 0 is faster still, so we preserve that case. + */ + if (cctx->currentOffset != 0 && tableType == byU32) { + DEBUGLOG(5, "LZ4_prepareTable: adding 64KB to currentOffset"); + cctx->currentOffset += 64 KB; + } + + /* Finally, clear history */ + cctx->dictCtx = NULL; + cctx->dictionary = NULL; + cctx->dictSize = 0; +} + +/** LZ4_compress_generic() : + * inlined, to ensure branches are decided at compilation time. + * Presumed already validated at this stage: + * - source != NULL + * - inputSize > 0 + */ +LZ4_FORCE_INLINE int LZ4_compress_generic_validated( + LZ4_stream_t_internal* const cctx, + const char* const source, + char* const dest, + const int inputSize, + int *inputConsumed, /* only written when outputDirective == fillOutput */ + const int maxOutputSize, + const limitedOutput_directive outputDirective, + const tableType_t tableType, + const dict_directive dictDirective, + const dictIssue_directive dictIssue, + const int acceleration) +{ + int result; + const BYTE* ip = (const BYTE*) source; + + U32 const startIndex = cctx->currentOffset; + const BYTE* base = (const BYTE*) source - startIndex; + const BYTE* lowLimit; + + const LZ4_stream_t_internal* dictCtx = (const LZ4_stream_t_internal*) cctx->dictCtx; + const BYTE* const dictionary = + dictDirective == usingDictCtx ? dictCtx->dictionary : cctx->dictionary; + const U32 dictSize = + dictDirective == usingDictCtx ? dictCtx->dictSize : cctx->dictSize; + const U32 dictDelta = (dictDirective == usingDictCtx) ? startIndex - dictCtx->currentOffset : 0; /* make indexes in dictCtx comparable with index in current context */ + + int const maybe_extMem = (dictDirective == usingExtDict) || (dictDirective == usingDictCtx); + U32 const prefixIdxLimit = startIndex - dictSize; /* used when dictDirective == dictSmall */ + const BYTE* const dictEnd = dictionary ? dictionary + dictSize : dictionary; + const BYTE* anchor = (const BYTE*) source; + const BYTE* const iend = ip + inputSize; + const BYTE* const mflimitPlusOne = iend - MFLIMIT + 1; + const BYTE* const matchlimit = iend - LASTLITERALS; + + /* the dictCtx currentOffset is indexed on the start of the dictionary, + * while a dictionary in the current context precedes the currentOffset */ + const BYTE* dictBase = !dictionary ? NULL : (dictDirective == usingDictCtx) ? + dictionary + dictSize - dictCtx->currentOffset : + dictionary + dictSize - startIndex; + + BYTE* op = (BYTE*) dest; + BYTE* const olimit = op + maxOutputSize; + + U32 offset = 0; + U32 forwardH; + + DEBUGLOG(5, "LZ4_compress_generic_validated: srcSize=%i, tableType=%u", inputSize, tableType); + assert(ip != NULL); + /* If init conditions are not met, we don't have to mark stream + * as having dirty context, since no action was taken yet */ + if (outputDirective == fillOutput && maxOutputSize < 1) { return 0; } /* Impossible to store anything */ + if ((tableType == byU16) && (inputSize>=LZ4_64Klimit)) { return 0; } /* Size too large (not within 64K limit) */ + if (tableType==byPtr) assert(dictDirective==noDict); /* only supported use case with byPtr */ + assert(acceleration >= 1); + + lowLimit = (const BYTE*)source - (dictDirective == withPrefix64k ? dictSize : 0); + + /* Update context state */ + if (dictDirective == usingDictCtx) { + /* Subsequent linked blocks can't use the dictionary. */ + /* Instead, they use the block we just compressed. */ + cctx->dictCtx = NULL; + cctx->dictSize = (U32)inputSize; + } else { + cctx->dictSize += (U32)inputSize; + } + cctx->currentOffset += (U32)inputSize; + cctx->tableType = (U32)tableType; + + if (inputSizehashTable, tableType, base); + ip++; forwardH = LZ4_hashPosition(ip, tableType); + + /* Main Loop */ + for ( ; ; ) { + const BYTE* match; + BYTE* token; + const BYTE* filledIp; + + /* Find a match */ + if (tableType == byPtr) { + const BYTE* forwardIp = ip; + int step = 1; + int searchMatchNb = acceleration << LZ4_skipTrigger; + do { + U32 const h = forwardH; + ip = forwardIp; + forwardIp += step; + step = (searchMatchNb++ >> LZ4_skipTrigger); + + if (unlikely(forwardIp > mflimitPlusOne)) goto _last_literals; + assert(ip < mflimitPlusOne); + + match = LZ4_getPositionOnHash(h, cctx->hashTable, tableType, base); + forwardH = LZ4_hashPosition(forwardIp, tableType); + LZ4_putPositionOnHash(ip, h, cctx->hashTable, tableType, base); + + } while ( (match+LZ4_DISTANCE_MAX < ip) + || (LZ4_read32(match) != LZ4_read32(ip)) ); + + } else { /* byU32, byU16 */ + + const BYTE* forwardIp = ip; + int step = 1; + int searchMatchNb = acceleration << LZ4_skipTrigger; + do { + U32 const h = forwardH; + U32 const current = (U32)(forwardIp - base); + U32 matchIndex = LZ4_getIndexOnHash(h, cctx->hashTable, tableType); + assert(matchIndex <= current); + assert(forwardIp - base < (ptrdiff_t)(2 GB - 1)); + ip = forwardIp; + forwardIp += step; + step = (searchMatchNb++ >> LZ4_skipTrigger); + + if (unlikely(forwardIp > mflimitPlusOne)) goto _last_literals; + assert(ip < mflimitPlusOne); + + if (dictDirective == usingDictCtx) { + if (matchIndex < startIndex) { + /* there was no match, try the dictionary */ + assert(tableType == byU32); + matchIndex = LZ4_getIndexOnHash(h, dictCtx->hashTable, byU32); + match = dictBase + matchIndex; + matchIndex += dictDelta; /* make dictCtx index comparable with current context */ + lowLimit = dictionary; + } else { + match = base + matchIndex; + lowLimit = (const BYTE*)source; + } + } else if (dictDirective==usingExtDict) { + if (matchIndex < startIndex) { + DEBUGLOG(7, "extDict candidate: matchIndex=%5u < startIndex=%5u", matchIndex, startIndex); + assert(startIndex - matchIndex >= MINMATCH); + match = dictBase + matchIndex; + lowLimit = dictionary; + } else { + match = base + matchIndex; + lowLimit = (const BYTE*)source; + } + } else { /* single continuous memory segment */ + match = base + matchIndex; + } + forwardH = LZ4_hashPosition(forwardIp, tableType); + LZ4_putIndexOnHash(current, h, cctx->hashTable, tableType); + + DEBUGLOG(7, "candidate at pos=%u (offset=%u \n", matchIndex, current - matchIndex); + if ((dictIssue == dictSmall) && (matchIndex < prefixIdxLimit)) { continue; } /* match outside of valid area */ + assert(matchIndex < current); + if ( ((tableType != byU16) || (LZ4_DISTANCE_MAX < LZ4_DISTANCE_ABSOLUTE_MAX)) + && (matchIndex+LZ4_DISTANCE_MAX < current)) { + continue; + } /* too far */ + assert((current - matchIndex) <= LZ4_DISTANCE_MAX); /* match now expected within distance */ + + if (LZ4_read32(match) == LZ4_read32(ip)) { + if (maybe_extMem) offset = current - matchIndex; + break; /* match found */ + } + + } while(1); + } + + /* Catch up */ + filledIp = ip; + while (((ip>anchor) & (match > lowLimit)) && (unlikely(ip[-1]==match[-1]))) { ip--; match--; } + + /* Encode Literals */ + { unsigned const litLength = (unsigned)(ip - anchor); + token = op++; + if ((outputDirective == limitedOutput) && /* Check output buffer overflow */ + (unlikely(op + litLength + (2 + 1 + LASTLITERALS) + (litLength/255) > olimit)) ) { + return 0; /* cannot compress within `dst` budget. Stored indexes in hash table are nonetheless fine */ + } + if ((outputDirective == fillOutput) && + (unlikely(op + (litLength+240)/255 /* litlen */ + litLength /* literals */ + 2 /* offset */ + 1 /* token */ + MFLIMIT - MINMATCH /* min last literals so last match is <= end - MFLIMIT */ > olimit))) { + op--; + goto _last_literals; + } + if (litLength >= RUN_MASK) { + int len = (int)(litLength - RUN_MASK); + *token = (RUN_MASK<= 255 ; len-=255) *op++ = 255; + *op++ = (BYTE)len; + } + else *token = (BYTE)(litLength< olimit)) { + /* the match was too close to the end, rewind and go to last literals */ + op = token; + goto _last_literals; + } + + /* Encode Offset */ + if (maybe_extMem) { /* static test */ + DEBUGLOG(6, " with offset=%u (ext if > %i)", offset, (int)(ip - (const BYTE*)source)); + assert(offset <= LZ4_DISTANCE_MAX && offset > 0); + LZ4_writeLE16(op, (U16)offset); op+=2; + } else { + DEBUGLOG(6, " with offset=%u (same segment)", (U32)(ip - match)); + assert(ip-match <= LZ4_DISTANCE_MAX); + LZ4_writeLE16(op, (U16)(ip - match)); op+=2; + } + + /* Encode MatchLength */ + { unsigned matchCode; + + if ( (dictDirective==usingExtDict || dictDirective==usingDictCtx) + && (lowLimit==dictionary) /* match within extDict */ ) { + const BYTE* limit = ip + (dictEnd-match); + assert(dictEnd > match); + if (limit > matchlimit) limit = matchlimit; + matchCode = LZ4_count(ip+MINMATCH, match+MINMATCH, limit); + ip += (size_t)matchCode + MINMATCH; + if (ip==limit) { + unsigned const more = LZ4_count(limit, (const BYTE*)source, matchlimit); + matchCode += more; + ip += more; + } + DEBUGLOG(6, " with matchLength=%u starting in extDict", matchCode+MINMATCH); + } else { + matchCode = LZ4_count(ip+MINMATCH, match+MINMATCH, matchlimit); + ip += (size_t)matchCode + MINMATCH; + DEBUGLOG(6, " with matchLength=%u", matchCode+MINMATCH); + } + + if ((outputDirective) && /* Check output buffer overflow */ + (unlikely(op + (1 + LASTLITERALS) + (matchCode+240)/255 > olimit)) ) { + if (outputDirective == fillOutput) { + /* Match description too long : reduce it */ + U32 newMatchCode = 15 /* in token */ - 1 /* to avoid needing a zero byte */ + ((U32)(olimit - op) - 1 - LASTLITERALS) * 255; + ip -= matchCode - newMatchCode; + assert(newMatchCode < matchCode); + matchCode = newMatchCode; + if (unlikely(ip <= filledIp)) { + /* We have already filled up to filledIp so if ip ends up less than filledIp + * we have positions in the hash table beyond the current position. This is + * a problem if we reuse the hash table. So we have to remove these positions + * from the hash table. + */ + const BYTE* ptr; + DEBUGLOG(5, "Clearing %u positions", (U32)(filledIp - ip)); + for (ptr = ip; ptr <= filledIp; ++ptr) { + U32 const h = LZ4_hashPosition(ptr, tableType); + LZ4_clearHash(h, cctx->hashTable, tableType); + } + } + } else { + assert(outputDirective == limitedOutput); + return 0; /* cannot compress within `dst` budget. Stored indexes in hash table are nonetheless fine */ + } + } + if (matchCode >= ML_MASK) { + *token += ML_MASK; + matchCode -= ML_MASK; + LZ4_write32(op, 0xFFFFFFFF); + while (matchCode >= 4*255) { + op+=4; + LZ4_write32(op, 0xFFFFFFFF); + matchCode -= 4*255; + } + op += matchCode / 255; + *op++ = (BYTE)(matchCode % 255); + } else + *token += (BYTE)(matchCode); + } + /* Ensure we have enough space for the last literals. */ + assert(!(outputDirective == fillOutput && op + 1 + LASTLITERALS > olimit)); + + anchor = ip; + + /* Test end of chunk */ + if (ip >= mflimitPlusOne) break; + + /* Fill table */ + LZ4_putPosition(ip-2, cctx->hashTable, tableType, base); + + /* Test next position */ + if (tableType == byPtr) { + + match = LZ4_getPosition(ip, cctx->hashTable, tableType, base); + LZ4_putPosition(ip, cctx->hashTable, tableType, base); + if ( (match+LZ4_DISTANCE_MAX >= ip) + && (LZ4_read32(match) == LZ4_read32(ip)) ) + { token=op++; *token=0; goto _next_match; } + + } else { /* byU32, byU16 */ + + U32 const h = LZ4_hashPosition(ip, tableType); + U32 const current = (U32)(ip-base); + U32 matchIndex = LZ4_getIndexOnHash(h, cctx->hashTable, tableType); + assert(matchIndex < current); + if (dictDirective == usingDictCtx) { + if (matchIndex < startIndex) { + /* there was no match, try the dictionary */ + matchIndex = LZ4_getIndexOnHash(h, dictCtx->hashTable, byU32); + match = dictBase + matchIndex; + lowLimit = dictionary; /* required for match length counter */ + matchIndex += dictDelta; + } else { + match = base + matchIndex; + lowLimit = (const BYTE*)source; /* required for match length counter */ + } + } else if (dictDirective==usingExtDict) { + if (matchIndex < startIndex) { + match = dictBase + matchIndex; + lowLimit = dictionary; /* required for match length counter */ + } else { + match = base + matchIndex; + lowLimit = (const BYTE*)source; /* required for match length counter */ + } + } else { /* single memory segment */ + match = base + matchIndex; + } + LZ4_putIndexOnHash(current, h, cctx->hashTable, tableType); + assert(matchIndex < current); + if ( ((dictIssue==dictSmall) ? (matchIndex >= prefixIdxLimit) : 1) + && (((tableType==byU16) && (LZ4_DISTANCE_MAX == LZ4_DISTANCE_ABSOLUTE_MAX)) ? 1 : (matchIndex+LZ4_DISTANCE_MAX >= current)) + && (LZ4_read32(match) == LZ4_read32(ip)) ) { + token=op++; + *token=0; + if (maybe_extMem) offset = current - matchIndex; + DEBUGLOG(6, "seq.start:%i, literals=%u, match.start:%i", + (int)(anchor-(const BYTE*)source), 0, (int)(ip-(const BYTE*)source)); + goto _next_match; + } + } + + /* Prepare next loop */ + forwardH = LZ4_hashPosition(++ip, tableType); + + } + +_last_literals: + /* Encode Last Literals */ + { size_t lastRun = (size_t)(iend - anchor); + if ( (outputDirective) && /* Check output buffer overflow */ + (op + lastRun + 1 + ((lastRun+255-RUN_MASK)/255) > olimit)) { + if (outputDirective == fillOutput) { + /* adapt lastRun to fill 'dst' */ + assert(olimit >= op); + lastRun = (size_t)(olimit-op) - 1/*token*/; + lastRun -= (lastRun + 256 - RUN_MASK) / 256; /*additional length tokens*/ + } else { + assert(outputDirective == limitedOutput); + return 0; /* cannot compress within `dst` budget. Stored indexes in hash table are nonetheless fine */ + } + } + DEBUGLOG(6, "Final literal run : %i literals", (int)lastRun); + if (lastRun >= RUN_MASK) { + size_t accumulator = lastRun - RUN_MASK; + *op++ = RUN_MASK << ML_BITS; + for(; accumulator >= 255 ; accumulator-=255) *op++ = 255; + *op++ = (BYTE) accumulator; + } else { + *op++ = (BYTE)(lastRun< 0); + DEBUGLOG(5, "LZ4_compress_generic: compressed %i bytes into %i bytes", inputSize, result); + return result; +} + +/** LZ4_compress_generic() : + * inlined, to ensure branches are decided at compilation time; + * takes care of src == (NULL, 0) + * and forward the rest to LZ4_compress_generic_validated */ +LZ4_FORCE_INLINE int LZ4_compress_generic( + LZ4_stream_t_internal* const cctx, + const char* const src, + char* const dst, + const int srcSize, + int *inputConsumed, /* only written when outputDirective == fillOutput */ + const int dstCapacity, + const limitedOutput_directive outputDirective, + const tableType_t tableType, + const dict_directive dictDirective, + const dictIssue_directive dictIssue, + const int acceleration) +{ + DEBUGLOG(5, "LZ4_compress_generic: srcSize=%i, dstCapacity=%i", + srcSize, dstCapacity); + + if ((U32)srcSize > (U32)LZ4_MAX_INPUT_SIZE) { return 0; } /* Unsupported srcSize, too large (or negative) */ + if (srcSize == 0) { /* src == NULL supported if srcSize == 0 */ + if (outputDirective != notLimited && dstCapacity <= 0) return 0; /* no output, can't write anything */ + DEBUGLOG(5, "Generating an empty block"); + assert(outputDirective == notLimited || dstCapacity >= 1); + assert(dst != NULL); + dst[0] = 0; + if (outputDirective == fillOutput) { + assert (inputConsumed != NULL); + *inputConsumed = 0; + } + return 1; + } + assert(src != NULL); + + return LZ4_compress_generic_validated(cctx, src, dst, srcSize, + inputConsumed, /* only written into if outputDirective == fillOutput */ + dstCapacity, outputDirective, + tableType, dictDirective, dictIssue, acceleration); +} + + +int LZ4_compress_fast_extState(void* state, const char* source, char* dest, int inputSize, int maxOutputSize, int acceleration) +{ + LZ4_stream_t_internal* const ctx = & LZ4_initStream(state, sizeof(LZ4_stream_t)) -> internal_donotuse; + assert(ctx != NULL); + if (acceleration < 1) acceleration = LZ4_ACCELERATION_DEFAULT; + if (acceleration > LZ4_ACCELERATION_MAX) acceleration = LZ4_ACCELERATION_MAX; + if (maxOutputSize >= LZ4_compressBound(inputSize)) { + if (inputSize < LZ4_64Klimit) { + return LZ4_compress_generic(ctx, source, dest, inputSize, NULL, 0, notLimited, byU16, noDict, noDictIssue, acceleration); + } else { + const tableType_t tableType = ((sizeof(void*)==4) && ((uptrval)source > LZ4_DISTANCE_MAX)) ? byPtr : byU32; + return LZ4_compress_generic(ctx, source, dest, inputSize, NULL, 0, notLimited, tableType, noDict, noDictIssue, acceleration); + } + } else { + if (inputSize < LZ4_64Klimit) { + return LZ4_compress_generic(ctx, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, byU16, noDict, noDictIssue, acceleration); + } else { + const tableType_t tableType = ((sizeof(void*)==4) && ((uptrval)source > LZ4_DISTANCE_MAX)) ? byPtr : byU32; + return LZ4_compress_generic(ctx, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, noDict, noDictIssue, acceleration); + } + } +} + +/** + * LZ4_compress_fast_extState_fastReset() : + * A variant of LZ4_compress_fast_extState(). + * + * Using this variant avoids an expensive initialization step. It is only safe + * to call if the state buffer is known to be correctly initialized already + * (see comment in lz4.h on LZ4_resetStream_fast() for a definition of + * "correctly initialized"). + */ +int LZ4_compress_fast_extState_fastReset(void* state, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration) +{ + LZ4_stream_t_internal* ctx = &((LZ4_stream_t*)state)->internal_donotuse; + if (acceleration < 1) acceleration = LZ4_ACCELERATION_DEFAULT; + if (acceleration > LZ4_ACCELERATION_MAX) acceleration = LZ4_ACCELERATION_MAX; + + if (dstCapacity >= LZ4_compressBound(srcSize)) { + if (srcSize < LZ4_64Klimit) { + const tableType_t tableType = byU16; + LZ4_prepareTable(ctx, srcSize, tableType); + if (ctx->currentOffset) { + return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, 0, notLimited, tableType, noDict, dictSmall, acceleration); + } else { + return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, 0, notLimited, tableType, noDict, noDictIssue, acceleration); + } + } else { + const tableType_t tableType = ((sizeof(void*)==4) && ((uptrval)src > LZ4_DISTANCE_MAX)) ? byPtr : byU32; + LZ4_prepareTable(ctx, srcSize, tableType); + return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, 0, notLimited, tableType, noDict, noDictIssue, acceleration); + } + } else { + if (srcSize < LZ4_64Klimit) { + const tableType_t tableType = byU16; + LZ4_prepareTable(ctx, srcSize, tableType); + if (ctx->currentOffset) { + return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, dstCapacity, limitedOutput, tableType, noDict, dictSmall, acceleration); + } else { + return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, dstCapacity, limitedOutput, tableType, noDict, noDictIssue, acceleration); + } + } else { + const tableType_t tableType = ((sizeof(void*)==4) && ((uptrval)src > LZ4_DISTANCE_MAX)) ? byPtr : byU32; + LZ4_prepareTable(ctx, srcSize, tableType); + return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, dstCapacity, limitedOutput, tableType, noDict, noDictIssue, acceleration); + } + } +} + + +int LZ4_compress_fast(const char* source, char* dest, int inputSize, int maxOutputSize, int acceleration) +{ + int result; +#if (LZ4_HEAPMODE) + LZ4_stream_t* ctxPtr = ALLOC(sizeof(LZ4_stream_t)); /* malloc-calloc always properly aligned */ + if (ctxPtr == NULL) return 0; +#else + LZ4_stream_t ctx; + LZ4_stream_t* const ctxPtr = &ctx; +#endif + result = LZ4_compress_fast_extState(ctxPtr, source, dest, inputSize, maxOutputSize, acceleration); + +#if (LZ4_HEAPMODE) + FREEMEM(ctxPtr); +#endif + return result; +} + + +int LZ4_compress_default(const char* src, char* dst, int srcSize, int maxOutputSize) +{ + return LZ4_compress_fast(src, dst, srcSize, maxOutputSize, 1); +} + + +/* Note!: This function leaves the stream in an unclean/broken state! + * It is not safe to subsequently use the same state with a _fastReset() or + * _continue() call without resetting it. */ +static int LZ4_compress_destSize_extState (LZ4_stream_t* state, const char* src, char* dst, int* srcSizePtr, int targetDstSize) +{ + void* const s = LZ4_initStream(state, sizeof (*state)); + assert(s != NULL); (void)s; + + if (targetDstSize >= LZ4_compressBound(*srcSizePtr)) { /* compression success is guaranteed */ + return LZ4_compress_fast_extState(state, src, dst, *srcSizePtr, targetDstSize, 1); + } else { + if (*srcSizePtr < LZ4_64Klimit) { + return LZ4_compress_generic(&state->internal_donotuse, src, dst, *srcSizePtr, srcSizePtr, targetDstSize, fillOutput, byU16, noDict, noDictIssue, 1); + } else { + tableType_t const addrMode = ((sizeof(void*)==4) && ((uptrval)src > LZ4_DISTANCE_MAX)) ? byPtr : byU32; + return LZ4_compress_generic(&state->internal_donotuse, src, dst, *srcSizePtr, srcSizePtr, targetDstSize, fillOutput, addrMode, noDict, noDictIssue, 1); + } } +} + + +int LZ4_compress_destSize(const char* src, char* dst, int* srcSizePtr, int targetDstSize) +{ +#if (LZ4_HEAPMODE) + LZ4_stream_t* ctx = (LZ4_stream_t*)ALLOC(sizeof(LZ4_stream_t)); /* malloc-calloc always properly aligned */ + if (ctx == NULL) return 0; +#else + LZ4_stream_t ctxBody; + LZ4_stream_t* ctx = &ctxBody; +#endif + + int result = LZ4_compress_destSize_extState(ctx, src, dst, srcSizePtr, targetDstSize); + +#if (LZ4_HEAPMODE) + FREEMEM(ctx); +#endif + return result; +} + + + +/*-****************************** +* Streaming functions +********************************/ + +LZ4_stream_t* LZ4_createStream(void) +{ + LZ4_stream_t* const lz4s = (LZ4_stream_t*)ALLOC(sizeof(LZ4_stream_t)); + LZ4_STATIC_ASSERT(LZ4_STREAMSIZE >= sizeof(LZ4_stream_t_internal)); /* A compilation error here means LZ4_STREAMSIZE is not large enough */ + DEBUGLOG(4, "LZ4_createStream %p", lz4s); + if (lz4s == NULL) return NULL; + LZ4_initStream(lz4s, sizeof(*lz4s)); + return lz4s; +} + +static size_t LZ4_stream_t_alignment(void) +{ +#if LZ4_ALIGN_TEST + typedef struct { char c; LZ4_stream_t t; } t_a; + return sizeof(t_a) - sizeof(LZ4_stream_t); +#else + return 1; /* effectively disabled */ +#endif +} + +LZ4_stream_t* LZ4_initStream (void* buffer, size_t size) +{ + DEBUGLOG(5, "LZ4_initStream"); + if (buffer == NULL) { return NULL; } + if (size < sizeof(LZ4_stream_t)) { return NULL; } + if (!LZ4_isAligned(buffer, LZ4_stream_t_alignment())) return NULL; + MEM_INIT(buffer, 0, sizeof(LZ4_stream_t_internal)); + return (LZ4_stream_t*)buffer; +} + +/* resetStream is now deprecated, + * prefer initStream() which is more general */ +void LZ4_resetStream (LZ4_stream_t* LZ4_stream) +{ + DEBUGLOG(5, "LZ4_resetStream (ctx:%p)", LZ4_stream); + MEM_INIT(LZ4_stream, 0, sizeof(LZ4_stream_t_internal)); +} + +void LZ4_resetStream_fast(LZ4_stream_t* ctx) { + LZ4_prepareTable(&(ctx->internal_donotuse), 0, byU32); +} + +int LZ4_freeStream (LZ4_stream_t* LZ4_stream) +{ + if (!LZ4_stream) return 0; /* support free on NULL */ + DEBUGLOG(5, "LZ4_freeStream %p", LZ4_stream); + FREEMEM(LZ4_stream); + return (0); +} + + +#define HASH_UNIT sizeof(reg_t) +int LZ4_loadDict (LZ4_stream_t* LZ4_dict, const char* dictionary, int dictSize) +{ + LZ4_stream_t_internal* dict = &LZ4_dict->internal_donotuse; + const tableType_t tableType = byU32; + const BYTE* p = (const BYTE*)dictionary; + const BYTE* const dictEnd = p + dictSize; + const BYTE* base; + + DEBUGLOG(4, "LZ4_loadDict (%i bytes from %p into %p)", dictSize, dictionary, LZ4_dict); + + /* It's necessary to reset the context, + * and not just continue it with prepareTable() + * to avoid any risk of generating overflowing matchIndex + * when compressing using this dictionary */ + LZ4_resetStream(LZ4_dict); + + /* We always increment the offset by 64 KB, since, if the dict is longer, + * we truncate it to the last 64k, and if it's shorter, we still want to + * advance by a whole window length so we can provide the guarantee that + * there are only valid offsets in the window, which allows an optimization + * in LZ4_compress_fast_continue() where it uses noDictIssue even when the + * dictionary isn't a full 64k. */ + dict->currentOffset += 64 KB; + + if (dictSize < (int)HASH_UNIT) { + return 0; + } + + if ((dictEnd - p) > 64 KB) p = dictEnd - 64 KB; + base = dictEnd - dict->currentOffset; + dict->dictionary = p; + dict->dictSize = (U32)(dictEnd - p); + dict->tableType = (U32)tableType; + + while (p <= dictEnd-HASH_UNIT) { + LZ4_putPosition(p, dict->hashTable, tableType, base); + p+=3; + } + + return (int)dict->dictSize; +} + +void LZ4_attach_dictionary(LZ4_stream_t* workingStream, const LZ4_stream_t* dictionaryStream) { + const LZ4_stream_t_internal* dictCtx = dictionaryStream == NULL ? NULL : + &(dictionaryStream->internal_donotuse); + + DEBUGLOG(4, "LZ4_attach_dictionary (%p, %p, size %u)", + workingStream, dictionaryStream, + dictCtx != NULL ? dictCtx->dictSize : 0); + + if (dictCtx != NULL) { + /* If the current offset is zero, we will never look in the + * external dictionary context, since there is no value a table + * entry can take that indicate a miss. In that case, we need + * to bump the offset to something non-zero. + */ + if (workingStream->internal_donotuse.currentOffset == 0) { + workingStream->internal_donotuse.currentOffset = 64 KB; + } + + /* Don't actually attach an empty dictionary. + */ + if (dictCtx->dictSize == 0) { + dictCtx = NULL; + } + } + workingStream->internal_donotuse.dictCtx = dictCtx; +} + + +static void LZ4_renormDictT(LZ4_stream_t_internal* LZ4_dict, int nextSize) +{ + assert(nextSize >= 0); + if (LZ4_dict->currentOffset + (unsigned)nextSize > 0x80000000) { /* potential ptrdiff_t overflow (32-bits mode) */ + /* rescale hash table */ + U32 const delta = LZ4_dict->currentOffset - 64 KB; + const BYTE* dictEnd = LZ4_dict->dictionary + LZ4_dict->dictSize; + int i; + DEBUGLOG(4, "LZ4_renormDictT"); + for (i=0; ihashTable[i] < delta) LZ4_dict->hashTable[i]=0; + else LZ4_dict->hashTable[i] -= delta; + } + LZ4_dict->currentOffset = 64 KB; + if (LZ4_dict->dictSize > 64 KB) LZ4_dict->dictSize = 64 KB; + LZ4_dict->dictionary = dictEnd - LZ4_dict->dictSize; + } +} + + +int LZ4_compress_fast_continue (LZ4_stream_t* LZ4_stream, + const char* source, char* dest, + int inputSize, int maxOutputSize, + int acceleration) +{ + const tableType_t tableType = byU32; + LZ4_stream_t_internal* streamPtr = &LZ4_stream->internal_donotuse; + const BYTE* dictEnd = streamPtr->dictionary + streamPtr->dictSize; + + DEBUGLOG(5, "LZ4_compress_fast_continue (inputSize=%i)", inputSize); + + LZ4_renormDictT(streamPtr, inputSize); /* avoid index overflow */ + if (acceleration < 1) acceleration = LZ4_ACCELERATION_DEFAULT; + if (acceleration > LZ4_ACCELERATION_MAX) acceleration = LZ4_ACCELERATION_MAX; + + /* invalidate tiny dictionaries */ + if ( (streamPtr->dictSize-1 < 4-1) /* intentional underflow */ + && (dictEnd != (const BYTE*)source) ) { + DEBUGLOG(5, "LZ4_compress_fast_continue: dictSize(%u) at addr:%p is too small", streamPtr->dictSize, streamPtr->dictionary); + streamPtr->dictSize = 0; + streamPtr->dictionary = (const BYTE*)source; + dictEnd = (const BYTE*)source; + } + + /* Check overlapping input/dictionary space */ + { const BYTE* sourceEnd = (const BYTE*) source + inputSize; + if ((sourceEnd > streamPtr->dictionary) && (sourceEnd < dictEnd)) { + streamPtr->dictSize = (U32)(dictEnd - sourceEnd); + if (streamPtr->dictSize > 64 KB) streamPtr->dictSize = 64 KB; + if (streamPtr->dictSize < 4) streamPtr->dictSize = 0; + streamPtr->dictionary = dictEnd - streamPtr->dictSize; + } + } + + /* prefix mode : source data follows dictionary */ + if (dictEnd == (const BYTE*)source) { + if ((streamPtr->dictSize < 64 KB) && (streamPtr->dictSize < streamPtr->currentOffset)) + return LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, withPrefix64k, dictSmall, acceleration); + else + return LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, withPrefix64k, noDictIssue, acceleration); + } + + /* external dictionary mode */ + { int result; + if (streamPtr->dictCtx) { + /* We depend here on the fact that dictCtx'es (produced by + * LZ4_loadDict) guarantee that their tables contain no references + * to offsets between dictCtx->currentOffset - 64 KB and + * dictCtx->currentOffset - dictCtx->dictSize. This makes it safe + * to use noDictIssue even when the dict isn't a full 64 KB. + */ + if (inputSize > 4 KB) { + /* For compressing large blobs, it is faster to pay the setup + * cost to copy the dictionary's tables into the active context, + * so that the compression loop is only looking into one table. + */ + LZ4_memcpy(streamPtr, streamPtr->dictCtx, sizeof(*streamPtr)); + result = LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, usingExtDict, noDictIssue, acceleration); + } else { + result = LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, usingDictCtx, noDictIssue, acceleration); + } + } else { + if ((streamPtr->dictSize < 64 KB) && (streamPtr->dictSize < streamPtr->currentOffset)) { + result = LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, usingExtDict, dictSmall, acceleration); + } else { + result = LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, usingExtDict, noDictIssue, acceleration); + } + } + streamPtr->dictionary = (const BYTE*)source; + streamPtr->dictSize = (U32)inputSize; + return result; + } +} + + +/* Hidden debug function, to force-test external dictionary mode */ +int LZ4_compress_forceExtDict (LZ4_stream_t* LZ4_dict, const char* source, char* dest, int srcSize) +{ + LZ4_stream_t_internal* streamPtr = &LZ4_dict->internal_donotuse; + int result; + + LZ4_renormDictT(streamPtr, srcSize); + + if ((streamPtr->dictSize < 64 KB) && (streamPtr->dictSize < streamPtr->currentOffset)) { + result = LZ4_compress_generic(streamPtr, source, dest, srcSize, NULL, 0, notLimited, byU32, usingExtDict, dictSmall, 1); + } else { + result = LZ4_compress_generic(streamPtr, source, dest, srcSize, NULL, 0, notLimited, byU32, usingExtDict, noDictIssue, 1); + } + + streamPtr->dictionary = (const BYTE*)source; + streamPtr->dictSize = (U32)srcSize; + + return result; +} + + +/*! LZ4_saveDict() : + * If previously compressed data block is not guaranteed to remain available at its memory location, + * save it into a safer place (char* safeBuffer). + * Note : you don't need to call LZ4_loadDict() afterwards, + * dictionary is immediately usable, you can therefore call LZ4_compress_fast_continue(). + * Return : saved dictionary size in bytes (necessarily <= dictSize), or 0 if error. + */ +int LZ4_saveDict (LZ4_stream_t* LZ4_dict, char* safeBuffer, int dictSize) +{ + LZ4_stream_t_internal* const dict = &LZ4_dict->internal_donotuse; + const BYTE* const previousDictEnd = dict->dictionary + dict->dictSize; + + if ((U32)dictSize > 64 KB) { dictSize = 64 KB; } /* useless to define a dictionary > 64 KB */ + if ((U32)dictSize > dict->dictSize) { dictSize = (int)dict->dictSize; } + + if (safeBuffer == NULL) assert(dictSize == 0); + if (dictSize > 0) + memmove(safeBuffer, previousDictEnd - dictSize, dictSize); + + dict->dictionary = (const BYTE*)safeBuffer; + dict->dictSize = (U32)dictSize; + + return dictSize; +} + + + +/*-******************************* + * Decompression functions + ********************************/ + +typedef enum { endOnOutputSize = 0, endOnInputSize = 1 } endCondition_directive; +typedef enum { decode_full_block = 0, partial_decode = 1 } earlyEnd_directive; + +#undef MIN +#define MIN(a,b) ( (a) < (b) ? (a) : (b) ) + +/* Read the variable-length literal or match length. + * + * ip - pointer to use as input. + * lencheck - end ip. Return an error if ip advances >= lencheck. + * loop_check - check ip >= lencheck in body of loop. Returns loop_error if so. + * initial_check - check ip >= lencheck before start of loop. Returns initial_error if so. + * error (output) - error code. Should be set to 0 before call. + */ +typedef enum { loop_error = -2, initial_error = -1, ok = 0 } variable_length_error; +LZ4_FORCE_INLINE unsigned +read_variable_length(const BYTE**ip, const BYTE* lencheck, + int loop_check, int initial_check, + variable_length_error* error) +{ + U32 length = 0; + U32 s; + if (initial_check && unlikely((*ip) >= lencheck)) { /* overflow detection */ + *error = initial_error; + return length; + } + do { + s = **ip; + (*ip)++; + length += s; + if (loop_check && unlikely((*ip) >= lencheck)) { /* overflow detection */ + *error = loop_error; + return length; + } + } while (s==255); + + return length; +} + +/*! LZ4_decompress_generic() : + * This generic decompression function covers all use cases. + * It shall be instantiated several times, using different sets of directives. + * Note that it is important for performance that this function really get inlined, + * in order to remove useless branches during compilation optimization. + */ +LZ4_FORCE_INLINE int +LZ4_decompress_generic( + const char* const src, + char* const dst, + int srcSize, + int outputSize, /* If endOnInput==endOnInputSize, this value is `dstCapacity` */ + + endCondition_directive endOnInput, /* endOnOutputSize, endOnInputSize */ + earlyEnd_directive partialDecoding, /* full, partial */ + dict_directive dict, /* noDict, withPrefix64k, usingExtDict */ + const BYTE* const lowPrefix, /* always <= dst, == dst when no prefix */ + const BYTE* const dictStart, /* only if dict==usingExtDict */ + const size_t dictSize /* note : = 0 if noDict */ + ) +{ + if (src == NULL) { return -1; } + + { const BYTE* ip = (const BYTE*) src; + const BYTE* const iend = ip + srcSize; + + BYTE* op = (BYTE*) dst; + BYTE* const oend = op + outputSize; + BYTE* cpy; + + const BYTE* const dictEnd = (dictStart == NULL) ? NULL : dictStart + dictSize; + + const int safeDecode = (endOnInput==endOnInputSize); + const int checkOffset = ((safeDecode) && (dictSize < (int)(64 KB))); + + + /* Set up the "end" pointers for the shortcut. */ + const BYTE* const shortiend = iend - (endOnInput ? 14 : 8) /*maxLL*/ - 2 /*offset*/; + const BYTE* const shortoend = oend - (endOnInput ? 14 : 8) /*maxLL*/ - 18 /*maxML*/; + + const BYTE* match; + size_t offset; + unsigned token; + size_t length; + + + DEBUGLOG(5, "LZ4_decompress_generic (srcSize:%i, dstSize:%i)", srcSize, outputSize); + + /* Special cases */ + assert(lowPrefix <= op); + if ((endOnInput) && (unlikely(outputSize==0))) { + /* Empty output buffer */ + if (partialDecoding) return 0; + return ((srcSize==1) && (*ip==0)) ? 0 : -1; + } + if ((!endOnInput) && (unlikely(outputSize==0))) { return (*ip==0 ? 1 : -1); } + if ((endOnInput) && unlikely(srcSize==0)) { return -1; } + + /* Currently the fast loop shows a regression on qualcomm arm chips. */ +#if LZ4_FAST_DEC_LOOP + if ((oend - op) < FASTLOOP_SAFE_DISTANCE) { + DEBUGLOG(6, "skip fast decode loop"); + goto safe_decode; + } + + /* Fast loop : decode sequences as long as output < iend-FASTLOOP_SAFE_DISTANCE */ + while (1) { + /* Main fastloop assertion: We can always wildcopy FASTLOOP_SAFE_DISTANCE */ + assert(oend - op >= FASTLOOP_SAFE_DISTANCE); + if (endOnInput) { assert(ip < iend); } + token = *ip++; + length = token >> ML_BITS; /* literal length */ + + assert(!endOnInput || ip <= iend); /* ip < iend before the increment */ + + /* decode literal length */ + if (length == RUN_MASK) { + variable_length_error error = ok; + length += read_variable_length(&ip, iend-RUN_MASK, (int)endOnInput, (int)endOnInput, &error); + if (error == initial_error) { goto _output_error; } + if ((safeDecode) && unlikely((uptrval)(op)+length<(uptrval)(op))) { goto _output_error; } /* overflow detection */ + if ((safeDecode) && unlikely((uptrval)(ip)+length<(uptrval)(ip))) { goto _output_error; } /* overflow detection */ + + /* copy literals */ + cpy = op+length; + LZ4_STATIC_ASSERT(MFLIMIT >= WILDCOPYLENGTH); + if (endOnInput) { /* LZ4_decompress_safe() */ + if ((cpy>oend-32) || (ip+length>iend-32)) { goto safe_literal_copy; } + LZ4_wildCopy32(op, ip, cpy); + } else { /* LZ4_decompress_fast() */ + if (cpy>oend-8) { goto safe_literal_copy; } + LZ4_wildCopy8(op, ip, cpy); /* LZ4_decompress_fast() cannot copy more than 8 bytes at a time : + * it doesn't know input length, and only relies on end-of-block properties */ + } + ip += length; op = cpy; + } else { + cpy = op+length; + if (endOnInput) { /* LZ4_decompress_safe() */ + DEBUGLOG(7, "copy %u bytes in a 16-bytes stripe", (unsigned)length); + /* We don't need to check oend, since we check it once for each loop below */ + if (ip > iend-(16 + 1/*max lit + offset + nextToken*/)) { goto safe_literal_copy; } + /* Literals can only be 14, but hope compilers optimize if we copy by a register size */ + LZ4_memcpy(op, ip, 16); + } else { /* LZ4_decompress_fast() */ + /* LZ4_decompress_fast() cannot copy more than 8 bytes at a time : + * it doesn't know input length, and relies on end-of-block properties */ + LZ4_memcpy(op, ip, 8); + if (length > 8) { LZ4_memcpy(op+8, ip+8, 8); } + } + ip += length; op = cpy; + } + + /* get offset */ + offset = LZ4_readLE16(ip); ip+=2; + match = op - offset; + assert(match <= op); + + /* get matchlength */ + length = token & ML_MASK; + + if (length == ML_MASK) { + variable_length_error error = ok; + if ((checkOffset) && (unlikely(match + dictSize < lowPrefix))) { goto _output_error; } /* Error : offset outside buffers */ + length += read_variable_length(&ip, iend - LASTLITERALS + 1, (int)endOnInput, 0, &error); + if (error != ok) { goto _output_error; } + if ((safeDecode) && unlikely((uptrval)(op)+length<(uptrval)op)) { goto _output_error; } /* overflow detection */ + length += MINMATCH; + if (op + length >= oend - FASTLOOP_SAFE_DISTANCE) { + goto safe_match_copy; + } + } else { + length += MINMATCH; + if (op + length >= oend - FASTLOOP_SAFE_DISTANCE) { + goto safe_match_copy; + } + + /* Fastpath check: Avoids a branch in LZ4_wildCopy32 if true */ + if ((dict == withPrefix64k) || (match >= lowPrefix)) { + if (offset >= 8) { + assert(match >= lowPrefix); + assert(match <= op); + assert(op + 18 <= oend); + + LZ4_memcpy(op, match, 8); + LZ4_memcpy(op+8, match+8, 8); + LZ4_memcpy(op+16, match+16, 2); + op += length; + continue; + } } } + + if (checkOffset && (unlikely(match + dictSize < lowPrefix))) { goto _output_error; } /* Error : offset outside buffers */ + /* match starting within external dictionary */ + if ((dict==usingExtDict) && (match < lowPrefix)) { + if (unlikely(op+length > oend-LASTLITERALS)) { + if (partialDecoding) { + DEBUGLOG(7, "partialDecoding: dictionary match, close to dstEnd"); + length = MIN(length, (size_t)(oend-op)); + } else { + goto _output_error; /* end-of-block condition violated */ + } } + + if (length <= (size_t)(lowPrefix-match)) { + /* match fits entirely within external dictionary : just copy */ + memmove(op, dictEnd - (lowPrefix-match), length); + op += length; + } else { + /* match stretches into both external dictionary and current block */ + size_t const copySize = (size_t)(lowPrefix - match); + size_t const restSize = length - copySize; + LZ4_memcpy(op, dictEnd - copySize, copySize); + op += copySize; + if (restSize > (size_t)(op - lowPrefix)) { /* overlap copy */ + BYTE* const endOfMatch = op + restSize; + const BYTE* copyFrom = lowPrefix; + while (op < endOfMatch) { *op++ = *copyFrom++; } + } else { + LZ4_memcpy(op, lowPrefix, restSize); + op += restSize; + } } + continue; + } + + /* copy match within block */ + cpy = op + length; + + assert((op <= oend) && (oend-op >= 32)); + if (unlikely(offset<16)) { + LZ4_memcpy_using_offset(op, match, cpy, offset); + } else { + LZ4_wildCopy32(op, match, cpy); + } + + op = cpy; /* wildcopy correction */ + } + safe_decode: +#endif + + /* Main Loop : decode remaining sequences where output < FASTLOOP_SAFE_DISTANCE */ + while (1) { + token = *ip++; + length = token >> ML_BITS; /* literal length */ + + assert(!endOnInput || ip <= iend); /* ip < iend before the increment */ + + /* A two-stage shortcut for the most common case: + * 1) If the literal length is 0..14, and there is enough space, + * enter the shortcut and copy 16 bytes on behalf of the literals + * (in the fast mode, only 8 bytes can be safely copied this way). + * 2) Further if the match length is 4..18, copy 18 bytes in a similar + * manner; but we ensure that there's enough space in the output for + * those 18 bytes earlier, upon entering the shortcut (in other words, + * there is a combined check for both stages). + */ + if ( (endOnInput ? length != RUN_MASK : length <= 8) + /* strictly "less than" on input, to re-enter the loop with at least one byte */ + && likely((endOnInput ? ip < shortiend : 1) & (op <= shortoend)) ) { + /* Copy the literals */ + LZ4_memcpy(op, ip, endOnInput ? 16 : 8); + op += length; ip += length; + + /* The second stage: prepare for match copying, decode full info. + * If it doesn't work out, the info won't be wasted. */ + length = token & ML_MASK; /* match length */ + offset = LZ4_readLE16(ip); ip += 2; + match = op - offset; + assert(match <= op); /* check overflow */ + + /* Do not deal with overlapping matches. */ + if ( (length != ML_MASK) + && (offset >= 8) + && (dict==withPrefix64k || match >= lowPrefix) ) { + /* Copy the match. */ + LZ4_memcpy(op + 0, match + 0, 8); + LZ4_memcpy(op + 8, match + 8, 8); + LZ4_memcpy(op +16, match +16, 2); + op += length + MINMATCH; + /* Both stages worked, load the next token. */ + continue; + } + + /* The second stage didn't work out, but the info is ready. + * Propel it right to the point of match copying. */ + goto _copy_match; + } + + /* decode literal length */ + if (length == RUN_MASK) { + variable_length_error error = ok; + length += read_variable_length(&ip, iend-RUN_MASK, (int)endOnInput, (int)endOnInput, &error); + if (error == initial_error) { goto _output_error; } + if ((safeDecode) && unlikely((uptrval)(op)+length<(uptrval)(op))) { goto _output_error; } /* overflow detection */ + if ((safeDecode) && unlikely((uptrval)(ip)+length<(uptrval)(ip))) { goto _output_error; } /* overflow detection */ + } + + /* copy literals */ + cpy = op+length; +#if LZ4_FAST_DEC_LOOP + safe_literal_copy: +#endif + LZ4_STATIC_ASSERT(MFLIMIT >= WILDCOPYLENGTH); + if ( ((endOnInput) && ((cpy>oend-MFLIMIT) || (ip+length>iend-(2+1+LASTLITERALS))) ) + || ((!endOnInput) && (cpy>oend-WILDCOPYLENGTH)) ) + { + /* We've either hit the input parsing restriction or the output parsing restriction. + * In the normal scenario, decoding a full block, it must be the last sequence, + * otherwise it's an error (invalid input or dimensions). + * In partialDecoding scenario, it's necessary to ensure there is no buffer overflow. + */ + if (partialDecoding) { + /* Since we are partial decoding we may be in this block because of the output parsing + * restriction, which is not valid since the output buffer is allowed to be undersized. + */ + assert(endOnInput); + DEBUGLOG(7, "partialDecoding: copying literals, close to input or output end") + DEBUGLOG(7, "partialDecoding: literal length = %u", (unsigned)length); + DEBUGLOG(7, "partialDecoding: remaining space in dstBuffer : %i", (int)(oend - op)); + DEBUGLOG(7, "partialDecoding: remaining space in srcBuffer : %i", (int)(iend - ip)); + /* Finishing in the middle of a literals segment, + * due to lack of input. + */ + if (ip+length > iend) { + length = (size_t)(iend-ip); + cpy = op + length; + } + /* Finishing in the middle of a literals segment, + * due to lack of output space. + */ + if (cpy > oend) { + cpy = oend; + assert(op<=oend); + length = (size_t)(oend-op); + } + } else { + /* We must be on the last sequence because of the parsing limitations so check + * that we exactly regenerate the original size (must be exact when !endOnInput). + */ + if ((!endOnInput) && (cpy != oend)) { goto _output_error; } + /* We must be on the last sequence (or invalid) because of the parsing limitations + * so check that we exactly consume the input and don't overrun the output buffer. + */ + if ((endOnInput) && ((ip+length != iend) || (cpy > oend))) { + DEBUGLOG(6, "should have been last run of literals") + DEBUGLOG(6, "ip(%p) + length(%i) = %p != iend (%p)", ip, (int)length, ip+length, iend); + DEBUGLOG(6, "or cpy(%p) > oend(%p)", cpy, oend); + goto _output_error; + } + } + memmove(op, ip, length); /* supports overlapping memory regions; only matters for in-place decompression scenarios */ + ip += length; + op += length; + /* Necessarily EOF when !partialDecoding. + * When partialDecoding, it is EOF if we've either + * filled the output buffer or + * can't proceed with reading an offset for following match. + */ + if (!partialDecoding || (cpy == oend) || (ip >= (iend-2))) { + break; + } + } else { + LZ4_wildCopy8(op, ip, cpy); /* may overwrite up to WILDCOPYLENGTH beyond cpy */ + ip += length; op = cpy; + } + + /* get offset */ + offset = LZ4_readLE16(ip); ip+=2; + match = op - offset; + + /* get matchlength */ + length = token & ML_MASK; + + _copy_match: + if (length == ML_MASK) { + variable_length_error error = ok; + length += read_variable_length(&ip, iend - LASTLITERALS + 1, (int)endOnInput, 0, &error); + if (error != ok) goto _output_error; + if ((safeDecode) && unlikely((uptrval)(op)+length<(uptrval)op)) goto _output_error; /* overflow detection */ + } + length += MINMATCH; + +#if LZ4_FAST_DEC_LOOP + safe_match_copy: +#endif + if ((checkOffset) && (unlikely(match + dictSize < lowPrefix))) goto _output_error; /* Error : offset outside buffers */ + /* match starting within external dictionary */ + if ((dict==usingExtDict) && (match < lowPrefix)) { + if (unlikely(op+length > oend-LASTLITERALS)) { + if (partialDecoding) length = MIN(length, (size_t)(oend-op)); + else goto _output_error; /* doesn't respect parsing restriction */ + } + + if (length <= (size_t)(lowPrefix-match)) { + /* match fits entirely within external dictionary : just copy */ + memmove(op, dictEnd - (lowPrefix-match), length); + op += length; + } else { + /* match stretches into both external dictionary and current block */ + size_t const copySize = (size_t)(lowPrefix - match); + size_t const restSize = length - copySize; + LZ4_memcpy(op, dictEnd - copySize, copySize); + op += copySize; + if (restSize > (size_t)(op - lowPrefix)) { /* overlap copy */ + BYTE* const endOfMatch = op + restSize; + const BYTE* copyFrom = lowPrefix; + while (op < endOfMatch) *op++ = *copyFrom++; + } else { + LZ4_memcpy(op, lowPrefix, restSize); + op += restSize; + } } + continue; + } + assert(match >= lowPrefix); + + /* copy match within block */ + cpy = op + length; + + /* partialDecoding : may end anywhere within the block */ + assert(op<=oend); + if (partialDecoding && (cpy > oend-MATCH_SAFEGUARD_DISTANCE)) { + size_t const mlen = MIN(length, (size_t)(oend-op)); + const BYTE* const matchEnd = match + mlen; + BYTE* const copyEnd = op + mlen; + if (matchEnd > op) { /* overlap copy */ + while (op < copyEnd) { *op++ = *match++; } + } else { + LZ4_memcpy(op, match, mlen); + } + op = copyEnd; + if (op == oend) { break; } + continue; + } + + if (unlikely(offset<8)) { + LZ4_write32(op, 0); /* silence msan warning when offset==0 */ + op[0] = match[0]; + op[1] = match[1]; + op[2] = match[2]; + op[3] = match[3]; + match += inc32table[offset]; + LZ4_memcpy(op+4, match, 4); + match -= dec64table[offset]; + } else { + LZ4_memcpy(op, match, 8); + match += 8; + } + op += 8; + + if (unlikely(cpy > oend-MATCH_SAFEGUARD_DISTANCE)) { + BYTE* const oCopyLimit = oend - (WILDCOPYLENGTH-1); + if (cpy > oend-LASTLITERALS) { goto _output_error; } /* Error : last LASTLITERALS bytes must be literals (uncompressed) */ + if (op < oCopyLimit) { + LZ4_wildCopy8(op, match, oCopyLimit); + match += oCopyLimit - op; + op = oCopyLimit; + } + while (op < cpy) { *op++ = *match++; } + } else { + LZ4_memcpy(op, match, 8); + if (length > 16) { LZ4_wildCopy8(op+8, match+8, cpy); } + } + op = cpy; /* wildcopy correction */ + } + + /* end of decoding */ + if (endOnInput) { + DEBUGLOG(5, "decoded %i bytes", (int) (((char*)op)-dst)); + return (int) (((char*)op)-dst); /* Nb of output bytes decoded */ + } else { + return (int) (((const char*)ip)-src); /* Nb of input bytes read */ + } + + /* Overflow error detected */ + _output_error: + return (int) (-(((const char*)ip)-src))-1; + } +} + + +/*===== Instantiate the API decoding functions. =====*/ + +LZ4_FORCE_O2 +int LZ4_decompress_safe(const char* source, char* dest, int compressedSize, int maxDecompressedSize) +{ + return LZ4_decompress_generic(source, dest, compressedSize, maxDecompressedSize, + endOnInputSize, decode_full_block, noDict, + (BYTE*)dest, NULL, 0); +} + +LZ4_FORCE_O2 +int LZ4_decompress_safe_partial(const char* src, char* dst, int compressedSize, int targetOutputSize, int dstCapacity) +{ + dstCapacity = MIN(targetOutputSize, dstCapacity); + return LZ4_decompress_generic(src, dst, compressedSize, dstCapacity, + endOnInputSize, partial_decode, + noDict, (BYTE*)dst, NULL, 0); +} + +LZ4_FORCE_O2 +int LZ4_decompress_fast(const char* source, char* dest, int originalSize) +{ + return LZ4_decompress_generic(source, dest, 0, originalSize, + endOnOutputSize, decode_full_block, withPrefix64k, + (BYTE*)dest - 64 KB, NULL, 0); +} + +/*===== Instantiate a few more decoding cases, used more than once. =====*/ + +LZ4_FORCE_O2 /* Exported, an obsolete API function. */ +int LZ4_decompress_safe_withPrefix64k(const char* source, char* dest, int compressedSize, int maxOutputSize) +{ + return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, + endOnInputSize, decode_full_block, withPrefix64k, + (BYTE*)dest - 64 KB, NULL, 0); +} + +/* Another obsolete API function, paired with the previous one. */ +int LZ4_decompress_fast_withPrefix64k(const char* source, char* dest, int originalSize) +{ + /* LZ4_decompress_fast doesn't validate match offsets, + * and thus serves well with any prefixed dictionary. */ + return LZ4_decompress_fast(source, dest, originalSize); +} + +LZ4_FORCE_O2 +static int LZ4_decompress_safe_withSmallPrefix(const char* source, char* dest, int compressedSize, int maxOutputSize, + size_t prefixSize) +{ + return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, + endOnInputSize, decode_full_block, noDict, + (BYTE*)dest-prefixSize, NULL, 0); +} + +LZ4_FORCE_O2 +int LZ4_decompress_safe_forceExtDict(const char* source, char* dest, + int compressedSize, int maxOutputSize, + const void* dictStart, size_t dictSize) +{ + return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, + endOnInputSize, decode_full_block, usingExtDict, + (BYTE*)dest, (const BYTE*)dictStart, dictSize); +} + +LZ4_FORCE_O2 +static int LZ4_decompress_fast_extDict(const char* source, char* dest, int originalSize, + const void* dictStart, size_t dictSize) +{ + return LZ4_decompress_generic(source, dest, 0, originalSize, + endOnOutputSize, decode_full_block, usingExtDict, + (BYTE*)dest, (const BYTE*)dictStart, dictSize); +} + +/* The "double dictionary" mode, for use with e.g. ring buffers: the first part + * of the dictionary is passed as prefix, and the second via dictStart + dictSize. + * These routines are used only once, in LZ4_decompress_*_continue(). + */ +LZ4_FORCE_INLINE +int LZ4_decompress_safe_doubleDict(const char* source, char* dest, int compressedSize, int maxOutputSize, + size_t prefixSize, const void* dictStart, size_t dictSize) +{ + return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, + endOnInputSize, decode_full_block, usingExtDict, + (BYTE*)dest-prefixSize, (const BYTE*)dictStart, dictSize); +} + +LZ4_FORCE_INLINE +int LZ4_decompress_fast_doubleDict(const char* source, char* dest, int originalSize, + size_t prefixSize, const void* dictStart, size_t dictSize) +{ + return LZ4_decompress_generic(source, dest, 0, originalSize, + endOnOutputSize, decode_full_block, usingExtDict, + (BYTE*)dest-prefixSize, (const BYTE*)dictStart, dictSize); +} + +/*===== streaming decompression functions =====*/ + +LZ4_streamDecode_t* LZ4_createStreamDecode(void) +{ + LZ4_streamDecode_t* lz4s = (LZ4_streamDecode_t*) ALLOC_AND_ZERO(sizeof(LZ4_streamDecode_t)); + LZ4_STATIC_ASSERT(LZ4_STREAMDECODESIZE >= sizeof(LZ4_streamDecode_t_internal)); /* A compilation error here means LZ4_STREAMDECODESIZE is not large enough */ + return lz4s; +} + +int LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream) +{ + if (LZ4_stream == NULL) { return 0; } /* support free on NULL */ + FREEMEM(LZ4_stream); + return 0; +} + +/*! LZ4_setStreamDecode() : + * Use this function to instruct where to find the dictionary. + * This function is not necessary if previous data is still available where it was decoded. + * Loading a size of 0 is allowed (same effect as no dictionary). + * @return : 1 if OK, 0 if error + */ +int LZ4_setStreamDecode (LZ4_streamDecode_t* LZ4_streamDecode, const char* dictionary, int dictSize) +{ + LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse; + lz4sd->prefixSize = (size_t) dictSize; + lz4sd->prefixEnd = (const BYTE*) dictionary + dictSize; + lz4sd->externalDict = NULL; + lz4sd->extDictSize = 0; + return 1; +} + +/*! LZ4_decoderRingBufferSize() : + * when setting a ring buffer for streaming decompression (optional scenario), + * provides the minimum size of this ring buffer + * to be compatible with any source respecting maxBlockSize condition. + * Note : in a ring buffer scenario, + * blocks are presumed decompressed next to each other. + * When not enough space remains for next block (remainingSize < maxBlockSize), + * decoding resumes from beginning of ring buffer. + * @return : minimum ring buffer size, + * or 0 if there is an error (invalid maxBlockSize). + */ +int LZ4_decoderRingBufferSize(int maxBlockSize) +{ + if (maxBlockSize < 0) return 0; + if (maxBlockSize > LZ4_MAX_INPUT_SIZE) return 0; + if (maxBlockSize < 16) maxBlockSize = 16; + return LZ4_DECODER_RING_BUFFER_SIZE(maxBlockSize); +} + +/* +*_continue() : + These decoding functions allow decompression of multiple blocks in "streaming" mode. + Previously decoded blocks must still be available at the memory position where they were decoded. + If it's not possible, save the relevant part of decoded data into a safe buffer, + and indicate where it stands using LZ4_setStreamDecode() +*/ +LZ4_FORCE_O2 +int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int compressedSize, int maxOutputSize) +{ + LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse; + int result; + + if (lz4sd->prefixSize == 0) { + /* The first call, no dictionary yet. */ + assert(lz4sd->extDictSize == 0); + result = LZ4_decompress_safe(source, dest, compressedSize, maxOutputSize); + if (result <= 0) return result; + lz4sd->prefixSize = (size_t)result; + lz4sd->prefixEnd = (BYTE*)dest + result; + } else if (lz4sd->prefixEnd == (BYTE*)dest) { + /* They're rolling the current segment. */ + if (lz4sd->prefixSize >= 64 KB - 1) + result = LZ4_decompress_safe_withPrefix64k(source, dest, compressedSize, maxOutputSize); + else if (lz4sd->extDictSize == 0) + result = LZ4_decompress_safe_withSmallPrefix(source, dest, compressedSize, maxOutputSize, + lz4sd->prefixSize); + else + result = LZ4_decompress_safe_doubleDict(source, dest, compressedSize, maxOutputSize, + lz4sd->prefixSize, lz4sd->externalDict, lz4sd->extDictSize); + if (result <= 0) return result; + lz4sd->prefixSize += (size_t)result; + lz4sd->prefixEnd += result; + } else { + /* The buffer wraps around, or they're switching to another buffer. */ + lz4sd->extDictSize = lz4sd->prefixSize; + lz4sd->externalDict = lz4sd->prefixEnd - lz4sd->extDictSize; + result = LZ4_decompress_safe_forceExtDict(source, dest, compressedSize, maxOutputSize, + lz4sd->externalDict, lz4sd->extDictSize); + if (result <= 0) return result; + lz4sd->prefixSize = (size_t)result; + lz4sd->prefixEnd = (BYTE*)dest + result; + } + + return result; +} + +LZ4_FORCE_O2 +int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int originalSize) +{ + LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse; + int result; + assert(originalSize >= 0); + + if (lz4sd->prefixSize == 0) { + assert(lz4sd->extDictSize == 0); + result = LZ4_decompress_fast(source, dest, originalSize); + if (result <= 0) return result; + lz4sd->prefixSize = (size_t)originalSize; + lz4sd->prefixEnd = (BYTE*)dest + originalSize; + } else if (lz4sd->prefixEnd == (BYTE*)dest) { + if (lz4sd->prefixSize >= 64 KB - 1 || lz4sd->extDictSize == 0) + result = LZ4_decompress_fast(source, dest, originalSize); + else + result = LZ4_decompress_fast_doubleDict(source, dest, originalSize, + lz4sd->prefixSize, lz4sd->externalDict, lz4sd->extDictSize); + if (result <= 0) return result; + lz4sd->prefixSize += (size_t)originalSize; + lz4sd->prefixEnd += originalSize; + } else { + lz4sd->extDictSize = lz4sd->prefixSize; + lz4sd->externalDict = lz4sd->prefixEnd - lz4sd->extDictSize; + result = LZ4_decompress_fast_extDict(source, dest, originalSize, + lz4sd->externalDict, lz4sd->extDictSize); + if (result <= 0) return result; + lz4sd->prefixSize = (size_t)originalSize; + lz4sd->prefixEnd = (BYTE*)dest + originalSize; + } + + return result; +} + + +/* +Advanced decoding functions : +*_usingDict() : + These decoding functions work the same as "_continue" ones, + the dictionary must be explicitly provided within parameters +*/ + +int LZ4_decompress_safe_usingDict(const char* source, char* dest, int compressedSize, int maxOutputSize, const char* dictStart, int dictSize) +{ + if (dictSize==0) + return LZ4_decompress_safe(source, dest, compressedSize, maxOutputSize); + if (dictStart+dictSize == dest) { + if (dictSize >= 64 KB - 1) { + return LZ4_decompress_safe_withPrefix64k(source, dest, compressedSize, maxOutputSize); + } + assert(dictSize >= 0); + return LZ4_decompress_safe_withSmallPrefix(source, dest, compressedSize, maxOutputSize, (size_t)dictSize); + } + assert(dictSize >= 0); + return LZ4_decompress_safe_forceExtDict(source, dest, compressedSize, maxOutputSize, dictStart, (size_t)dictSize); +} + +int LZ4_decompress_fast_usingDict(const char* source, char* dest, int originalSize, const char* dictStart, int dictSize) +{ + if (dictSize==0 || dictStart+dictSize == dest) + return LZ4_decompress_fast(source, dest, originalSize); + assert(dictSize >= 0); + return LZ4_decompress_fast_extDict(source, dest, originalSize, dictStart, (size_t)dictSize); +} + + +/*=************************************************* +* Obsolete Functions +***************************************************/ +/* obsolete compression functions */ +int LZ4_compress_limitedOutput(const char* source, char* dest, int inputSize, int maxOutputSize) +{ + return LZ4_compress_default(source, dest, inputSize, maxOutputSize); +} +int LZ4_compress(const char* src, char* dest, int srcSize) +{ + return LZ4_compress_default(src, dest, srcSize, LZ4_compressBound(srcSize)); +} +int LZ4_compress_limitedOutput_withState (void* state, const char* src, char* dst, int srcSize, int dstSize) +{ + return LZ4_compress_fast_extState(state, src, dst, srcSize, dstSize, 1); +} +int LZ4_compress_withState (void* state, const char* src, char* dst, int srcSize) +{ + return LZ4_compress_fast_extState(state, src, dst, srcSize, LZ4_compressBound(srcSize), 1); +} +int LZ4_compress_limitedOutput_continue (LZ4_stream_t* LZ4_stream, const char* src, char* dst, int srcSize, int dstCapacity) +{ + return LZ4_compress_fast_continue(LZ4_stream, src, dst, srcSize, dstCapacity, 1); +} +int LZ4_compress_continue (LZ4_stream_t* LZ4_stream, const char* source, char* dest, int inputSize) +{ + return LZ4_compress_fast_continue(LZ4_stream, source, dest, inputSize, LZ4_compressBound(inputSize), 1); +} + +/* +These decompression functions are deprecated and should no longer be used. +They are only provided here for compatibility with older user programs. +- LZ4_uncompress is totally equivalent to LZ4_decompress_fast +- LZ4_uncompress_unknownOutputSize is totally equivalent to LZ4_decompress_safe +*/ +int LZ4_uncompress (const char* source, char* dest, int outputSize) +{ + return LZ4_decompress_fast(source, dest, outputSize); +} +int LZ4_uncompress_unknownOutputSize (const char* source, char* dest, int isize, int maxOutputSize) +{ + return LZ4_decompress_safe(source, dest, isize, maxOutputSize); +} + +/* Obsolete Streaming functions */ + +int LZ4_sizeofStreamState(void) { return LZ4_STREAMSIZE; } + +int LZ4_resetStreamState(void* state, char* inputBuffer) +{ + (void)inputBuffer; + LZ4_resetStream((LZ4_stream_t*)state); + return 0; +} + +void* LZ4_create (char* inputBuffer) +{ + (void)inputBuffer; + return LZ4_createStream(); +} + +char* LZ4_slideInputBuffer (void* state) +{ + /* avoid const char * -> char * conversion warning */ + return (char *)(uptrval)((LZ4_stream_t*)state)->internal_donotuse.dictionary; +} + +#endif /* LZ4_COMMONDEFS_ONLY */ diff --git a/fsbl/lib/lz4/lz4.h b/fsbl/lib/lz4/lz4.h new file mode 100644 index 000000000..7ab1e483a --- /dev/null +++ b/fsbl/lib/lz4/lz4.h @@ -0,0 +1,774 @@ +/* + * LZ4 - Fast LZ compression algorithm + * Header File + * Copyright (C) 2011-present, Yann Collet. + + BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + You can contact the author at : + - LZ4 homepage : http://www.lz4.org + - LZ4 source repository : https://github.com/lz4/lz4 +*/ +#if defined (__cplusplus) +extern "C" { +#endif + +#ifndef LZ4_H_2983827168210 +#define LZ4_H_2983827168210 + +/* --- Dependency --- */ +#include /* size_t */ + + +/** + Introduction + + LZ4 is lossless compression algorithm, providing compression speed >500 MB/s per core, + scalable with multi-cores CPU. It features an extremely fast decoder, with speed in + multiple GB/s per core, typically reaching RAM speed limits on multi-core systems. + + The LZ4 compression library provides in-memory compression and decompression functions. + It gives full buffer control to user. + Compression can be done in: + - a single step (described as Simple Functions) + - a single step, reusing a context (described in Advanced Functions) + - unbounded multiple steps (described as Streaming compression) + + lz4.h generates and decodes LZ4-compressed blocks (doc/lz4_Block_format.md). + Decompressing such a compressed block requires additional metadata. + Exact metadata depends on exact decompression function. + For the typical case of LZ4_decompress_safe(), + metadata includes block's compressed size, and maximum bound of decompressed size. + Each application is free to encode and pass such metadata in whichever way it wants. + + lz4.h only handle blocks, it can not generate Frames. + + Blocks are different from Frames (doc/lz4_Frame_format.md). + Frames bundle both blocks and metadata in a specified manner. + Embedding metadata is required for compressed data to be self-contained and portable. + Frame format is delivered through a companion API, declared in lz4frame.h. + The `lz4` CLI can only manage frames. +*/ + +/*^*************************************************************** +* Export parameters +*****************************************************************/ +/* +* LZ4_DLL_EXPORT : +* Enable exporting of functions when building a Windows DLL +* LZ4LIB_VISIBILITY : +* Control library symbols visibility. +*/ +#ifndef LZ4LIB_VISIBILITY +# if defined(__GNUC__) && (__GNUC__ >= 4) +# define LZ4LIB_VISIBILITY __attribute__ ((visibility ("default"))) +# else +# define LZ4LIB_VISIBILITY +# endif +#endif +#if defined(LZ4_DLL_EXPORT) && (LZ4_DLL_EXPORT==1) +# define LZ4LIB_API __declspec(dllexport) LZ4LIB_VISIBILITY +#elif defined(LZ4_DLL_IMPORT) && (LZ4_DLL_IMPORT==1) +# define LZ4LIB_API __declspec(dllimport) LZ4LIB_VISIBILITY /* It isn't required but allows to generate better code, saving a function pointer load from the IAT and an indirect jump.*/ +#else +# define LZ4LIB_API LZ4LIB_VISIBILITY +#endif + +/*------ Version ------*/ +#define LZ4_VERSION_MAJOR 1 /* for breaking interface changes */ +#define LZ4_VERSION_MINOR 9 /* for new (non-breaking) interface capabilities */ +#define LZ4_VERSION_RELEASE 3 /* for tweaks, bug-fixes, or development */ + +#define LZ4_VERSION_NUMBER (LZ4_VERSION_MAJOR *100*100 + LZ4_VERSION_MINOR *100 + LZ4_VERSION_RELEASE) + +#define LZ4_LIB_VERSION LZ4_VERSION_MAJOR.LZ4_VERSION_MINOR.LZ4_VERSION_RELEASE +#define LZ4_QUOTE(str) #str +#define LZ4_EXPAND_AND_QUOTE(str) LZ4_QUOTE(str) +#define LZ4_VERSION_STRING LZ4_EXPAND_AND_QUOTE(LZ4_LIB_VERSION) + +LZ4LIB_API int LZ4_versionNumber (void); /**< library version number; useful to check dll version */ +LZ4LIB_API const char* LZ4_versionString (void); /**< library version string; useful to check dll version */ + + +/*-************************************ +* Tuning parameter +**************************************/ +/*! + * LZ4_MEMORY_USAGE : + * Memory usage formula : N->2^N Bytes (examples : 10 -> 1KB; 12 -> 4KB ; 16 -> 64KB; 20 -> 1MB; etc.) + * Increasing memory usage improves compression ratio. + * Reduced memory usage may improve speed, thanks to better cache locality. + * Default value is 14, for 16KB, which nicely fits into Intel x86 L1 cache + */ +#ifndef LZ4_MEMORY_USAGE +# define LZ4_MEMORY_USAGE 14 +#endif + + +/*-************************************ +* Simple Functions +**************************************/ +/*! LZ4_compress_default() : + * Compresses 'srcSize' bytes from buffer 'src' + * into already allocated 'dst' buffer of size 'dstCapacity'. + * Compression is guaranteed to succeed if 'dstCapacity' >= LZ4_compressBound(srcSize). + * It also runs faster, so it's a recommended setting. + * If the function cannot compress 'src' into a more limited 'dst' budget, + * compression stops *immediately*, and the function result is zero. + * In which case, 'dst' content is undefined (invalid). + * srcSize : max supported value is LZ4_MAX_INPUT_SIZE. + * dstCapacity : size of buffer 'dst' (which must be already allocated) + * @return : the number of bytes written into buffer 'dst' (necessarily <= dstCapacity) + * or 0 if compression fails + * Note : This function is protected against buffer overflow scenarios (never writes outside 'dst' buffer, nor read outside 'source' buffer). + */ +LZ4LIB_API int LZ4_compress_default(const char* src, char* dst, int srcSize, int dstCapacity); + +/*! LZ4_decompress_safe() : + * compressedSize : is the exact complete size of the compressed block. + * dstCapacity : is the size of destination buffer (which must be already allocated), presumed an upper bound of decompressed size. + * @return : the number of bytes decompressed into destination buffer (necessarily <= dstCapacity) + * If destination buffer is not large enough, decoding will stop and output an error code (negative value). + * If the source stream is detected malformed, the function will stop decoding and return a negative result. + * Note 1 : This function is protected against malicious data packets : + * it will never writes outside 'dst' buffer, nor read outside 'source' buffer, + * even if the compressed block is maliciously modified to order the decoder to do these actions. + * In such case, the decoder stops immediately, and considers the compressed block malformed. + * Note 2 : compressedSize and dstCapacity must be provided to the function, the compressed block does not contain them. + * The implementation is free to send / store / derive this information in whichever way is most beneficial. + * If there is a need for a different format which bundles together both compressed data and its metadata, consider looking at lz4frame.h instead. + */ +LZ4LIB_API int LZ4_decompress_safe (const char* src, char* dst, int compressedSize, int dstCapacity); + + +/*-************************************ +* Advanced Functions +**************************************/ +#define LZ4_MAX_INPUT_SIZE 0x7E000000 /* 2 113 929 216 bytes */ +#define LZ4_COMPRESSBOUND(isize) ((unsigned)(isize) > (unsigned)LZ4_MAX_INPUT_SIZE ? 0 : (isize) + ((isize)/255) + 16) + +/*! LZ4_compressBound() : + Provides the maximum size that LZ4 compression may output in a "worst case" scenario (input data not compressible) + This function is primarily useful for memory allocation purposes (destination buffer size). + Macro LZ4_COMPRESSBOUND() is also provided for compilation-time evaluation (stack memory allocation for example). + Note that LZ4_compress_default() compresses faster when dstCapacity is >= LZ4_compressBound(srcSize) + inputSize : max supported value is LZ4_MAX_INPUT_SIZE + return : maximum output size in a "worst case" scenario + or 0, if input size is incorrect (too large or negative) +*/ +LZ4LIB_API int LZ4_compressBound(int inputSize); + +/*! LZ4_compress_fast() : + Same as LZ4_compress_default(), but allows selection of "acceleration" factor. + The larger the acceleration value, the faster the algorithm, but also the lesser the compression. + It's a trade-off. It can be fine tuned, with each successive value providing roughly +~3% to speed. + An acceleration value of "1" is the same as regular LZ4_compress_default() + Values <= 0 will be replaced by LZ4_ACCELERATION_DEFAULT (currently == 1, see lz4.c). + Values > LZ4_ACCELERATION_MAX will be replaced by LZ4_ACCELERATION_MAX (currently == 65537, see lz4.c). +*/ +LZ4LIB_API int LZ4_compress_fast (const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); + + +/*! LZ4_compress_fast_extState() : + * Same as LZ4_compress_fast(), using an externally allocated memory space for its state. + * Use LZ4_sizeofState() to know how much memory must be allocated, + * and allocate it on 8-bytes boundaries (using `malloc()` typically). + * Then, provide this buffer as `void* state` to compression function. + */ +LZ4LIB_API int LZ4_sizeofState(void); +LZ4LIB_API int LZ4_compress_fast_extState (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); + + +/*! LZ4_compress_destSize() : + * Reverse the logic : compresses as much data as possible from 'src' buffer + * into already allocated buffer 'dst', of size >= 'targetDestSize'. + * This function either compresses the entire 'src' content into 'dst' if it's large enough, + * or fill 'dst' buffer completely with as much data as possible from 'src'. + * note: acceleration parameter is fixed to "default". + * + * *srcSizePtr : will be modified to indicate how many bytes where read from 'src' to fill 'dst'. + * New value is necessarily <= input value. + * @return : Nb bytes written into 'dst' (necessarily <= targetDestSize) + * or 0 if compression fails. + * + * Note : from v1.8.2 to v1.9.1, this function had a bug (fixed un v1.9.2+): + * the produced compressed content could, in specific circumstances, + * require to be decompressed into a destination buffer larger + * by at least 1 byte than the content to decompress. + * If an application uses `LZ4_compress_destSize()`, + * it's highly recommended to update liblz4 to v1.9.2 or better. + * If this can't be done or ensured, + * the receiving decompression function should provide + * a dstCapacity which is > decompressedSize, by at least 1 byte. + * See https://github.com/lz4/lz4/issues/859 for details + */ +LZ4LIB_API int LZ4_compress_destSize (const char* src, char* dst, int* srcSizePtr, int targetDstSize); + + +/*! LZ4_decompress_safe_partial() : + * Decompress an LZ4 compressed block, of size 'srcSize' at position 'src', + * into destination buffer 'dst' of size 'dstCapacity'. + * Up to 'targetOutputSize' bytes will be decoded. + * The function stops decoding on reaching this objective. + * This can be useful to boost performance + * whenever only the beginning of a block is required. + * + * @return : the number of bytes decoded in `dst` (necessarily <= targetOutputSize) + * If source stream is detected malformed, function returns a negative result. + * + * Note 1 : @return can be < targetOutputSize, if compressed block contains less data. + * + * Note 2 : targetOutputSize must be <= dstCapacity + * + * Note 3 : this function effectively stops decoding on reaching targetOutputSize, + * so dstCapacity is kind of redundant. + * This is because in older versions of this function, + * decoding operation would still write complete sequences. + * Therefore, there was no guarantee that it would stop writing at exactly targetOutputSize, + * it could write more bytes, though only up to dstCapacity. + * Some "margin" used to be required for this operation to work properly. + * Thankfully, this is no longer necessary. + * The function nonetheless keeps the same signature, in an effort to preserve API compatibility. + * + * Note 4 : If srcSize is the exact size of the block, + * then targetOutputSize can be any value, + * including larger than the block's decompressed size. + * The function will, at most, generate block's decompressed size. + * + * Note 5 : If srcSize is _larger_ than block's compressed size, + * then targetOutputSize **MUST** be <= block's decompressed size. + * Otherwise, *silent corruption will occur*. + */ +LZ4LIB_API int LZ4_decompress_safe_partial (const char* src, char* dst, int srcSize, int targetOutputSize, int dstCapacity); + + +/*-********************************************* +* Streaming Compression Functions +***********************************************/ +typedef union LZ4_stream_u LZ4_stream_t; /* incomplete type (defined later) */ + +LZ4LIB_API LZ4_stream_t* LZ4_createStream(void); +LZ4LIB_API int LZ4_freeStream (LZ4_stream_t* streamPtr); + +/*! LZ4_resetStream_fast() : v1.9.0+ + * Use this to prepare an LZ4_stream_t for a new chain of dependent blocks + * (e.g., LZ4_compress_fast_continue()). + * + * An LZ4_stream_t must be initialized once before usage. + * This is automatically done when created by LZ4_createStream(). + * However, should the LZ4_stream_t be simply declared on stack (for example), + * it's necessary to initialize it first, using LZ4_initStream(). + * + * After init, start any new stream with LZ4_resetStream_fast(). + * A same LZ4_stream_t can be re-used multiple times consecutively + * and compress multiple streams, + * provided that it starts each new stream with LZ4_resetStream_fast(). + * + * LZ4_resetStream_fast() is much faster than LZ4_initStream(), + * but is not compatible with memory regions containing garbage data. + * + * Note: it's only useful to call LZ4_resetStream_fast() + * in the context of streaming compression. + * The *extState* functions perform their own resets. + * Invoking LZ4_resetStream_fast() before is redundant, and even counterproductive. + */ +LZ4LIB_API void LZ4_resetStream_fast (LZ4_stream_t* streamPtr); + +/*! LZ4_loadDict() : + * Use this function to reference a static dictionary into LZ4_stream_t. + * The dictionary must remain available during compression. + * LZ4_loadDict() triggers a reset, so any previous data will be forgotten. + * The same dictionary will have to be loaded on decompression side for successful decoding. + * Dictionary are useful for better compression of small data (KB range). + * While LZ4 accept any input as dictionary, + * results are generally better when using Zstandard's Dictionary Builder. + * Loading a size of 0 is allowed, and is the same as reset. + * @return : loaded dictionary size, in bytes (necessarily <= 64 KB) + */ +LZ4LIB_API int LZ4_loadDict (LZ4_stream_t* streamPtr, const char* dictionary, int dictSize); + +/*! LZ4_compress_fast_continue() : + * Compress 'src' content using data from previously compressed blocks, for better compression ratio. + * 'dst' buffer must be already allocated. + * If dstCapacity >= LZ4_compressBound(srcSize), compression is guaranteed to succeed, and runs faster. + * + * @return : size of compressed block + * or 0 if there is an error (typically, cannot fit into 'dst'). + * + * Note 1 : Each invocation to LZ4_compress_fast_continue() generates a new block. + * Each block has precise boundaries. + * Each block must be decompressed separately, calling LZ4_decompress_*() with relevant metadata. + * It's not possible to append blocks together and expect a single invocation of LZ4_decompress_*() to decompress them together. + * + * Note 2 : The previous 64KB of source data is __assumed__ to remain present, unmodified, at same address in memory ! + * + * Note 3 : When input is structured as a double-buffer, each buffer can have any size, including < 64 KB. + * Make sure that buffers are separated, by at least one byte. + * This construction ensures that each block only depends on previous block. + * + * Note 4 : If input buffer is a ring-buffer, it can have any size, including < 64 KB. + * + * Note 5 : After an error, the stream status is undefined (invalid), it can only be reset or freed. + */ +LZ4LIB_API int LZ4_compress_fast_continue (LZ4_stream_t* streamPtr, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); + +/*! LZ4_saveDict() : + * If last 64KB data cannot be guaranteed to remain available at its current memory location, + * save it into a safer place (char* safeBuffer). + * This is schematically equivalent to a memcpy() followed by LZ4_loadDict(), + * but is much faster, because LZ4_saveDict() doesn't need to rebuild tables. + * @return : saved dictionary size in bytes (necessarily <= maxDictSize), or 0 if error. + */ +LZ4LIB_API int LZ4_saveDict (LZ4_stream_t* streamPtr, char* safeBuffer, int maxDictSize); + + +/*-********************************************** +* Streaming Decompression Functions +* Bufferless synchronous API +************************************************/ +typedef union LZ4_streamDecode_u LZ4_streamDecode_t; /* tracking context */ + +/*! LZ4_createStreamDecode() and LZ4_freeStreamDecode() : + * creation / destruction of streaming decompression tracking context. + * A tracking context can be re-used multiple times. + */ +LZ4LIB_API LZ4_streamDecode_t* LZ4_createStreamDecode(void); +LZ4LIB_API int LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream); + +/*! LZ4_setStreamDecode() : + * An LZ4_streamDecode_t context can be allocated once and re-used multiple times. + * Use this function to start decompression of a new stream of blocks. + * A dictionary can optionally be set. Use NULL or size 0 for a reset order. + * Dictionary is presumed stable : it must remain accessible and unmodified during next decompression. + * @return : 1 if OK, 0 if error + */ +LZ4LIB_API int LZ4_setStreamDecode (LZ4_streamDecode_t* LZ4_streamDecode, const char* dictionary, int dictSize); + +/*! LZ4_decoderRingBufferSize() : v1.8.2+ + * Note : in a ring buffer scenario (optional), + * blocks are presumed decompressed next to each other + * up to the moment there is not enough remaining space for next block (remainingSize < maxBlockSize), + * at which stage it resumes from beginning of ring buffer. + * When setting such a ring buffer for streaming decompression, + * provides the minimum size of this ring buffer + * to be compatible with any source respecting maxBlockSize condition. + * @return : minimum ring buffer size, + * or 0 if there is an error (invalid maxBlockSize). + */ +LZ4LIB_API int LZ4_decoderRingBufferSize(int maxBlockSize); +#define LZ4_DECODER_RING_BUFFER_SIZE(maxBlockSize) (65536 + 14 + (maxBlockSize)) /* for static allocation; maxBlockSize presumed valid */ + +/*! LZ4_decompress_*_continue() : + * These decoding functions allow decompression of consecutive blocks in "streaming" mode. + * A block is an unsplittable entity, it must be presented entirely to a decompression function. + * Decompression functions only accepts one block at a time. + * The last 64KB of previously decoded data *must* remain available and unmodified at the memory position where they were decoded. + * If less than 64KB of data has been decoded, all the data must be present. + * + * Special : if decompression side sets a ring buffer, it must respect one of the following conditions : + * - Decompression buffer size is _at least_ LZ4_decoderRingBufferSize(maxBlockSize). + * maxBlockSize is the maximum size of any single block. It can have any value > 16 bytes. + * In which case, encoding and decoding buffers do not need to be synchronized. + * Actually, data can be produced by any source compliant with LZ4 format specification, and respecting maxBlockSize. + * - Synchronized mode : + * Decompression buffer size is _exactly_ the same as compression buffer size, + * and follows exactly same update rule (block boundaries at same positions), + * and decoding function is provided with exact decompressed size of each block (exception for last block of the stream), + * _then_ decoding & encoding ring buffer can have any size, including small ones ( < 64 KB). + * - Decompression buffer is larger than encoding buffer, by a minimum of maxBlockSize more bytes. + * In which case, encoding and decoding buffers do not need to be synchronized, + * and encoding ring buffer can have any size, including small ones ( < 64 KB). + * + * Whenever these conditions are not possible, + * save the last 64KB of decoded data into a safe buffer where it can't be modified during decompression, + * then indicate where this data is saved using LZ4_setStreamDecode(), before decompressing next block. +*/ +LZ4LIB_API int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* src, char* dst, int srcSize, int dstCapacity); + + +/*! LZ4_decompress_*_usingDict() : + * These decoding functions work the same as + * a combination of LZ4_setStreamDecode() followed by LZ4_decompress_*_continue() + * They are stand-alone, and don't need an LZ4_streamDecode_t structure. + * Dictionary is presumed stable : it must remain accessible and unmodified during decompression. + * Performance tip : Decompression speed can be substantially increased + * when dst == dictStart + dictSize. + */ +LZ4LIB_API int LZ4_decompress_safe_usingDict (const char* src, char* dst, int srcSize, int dstCapcity, const char* dictStart, int dictSize); + +#endif /* LZ4_H_2983827168210 */ + + +/*^************************************* + * !!!!!! STATIC LINKING ONLY !!!!!! + ***************************************/ + +/*-**************************************************************************** + * Experimental section + * + * Symbols declared in this section must be considered unstable. Their + * signatures or semantics may change, or they may be removed altogether in the + * future. They are therefore only safe to depend on when the caller is + * statically linked against the library. + * + * To protect against unsafe usage, not only are the declarations guarded, + * the definitions are hidden by default + * when building LZ4 as a shared/dynamic library. + * + * In order to access these declarations, + * define LZ4_STATIC_LINKING_ONLY in your application + * before including LZ4's headers. + * + * In order to make their implementations accessible dynamically, you must + * define LZ4_PUBLISH_STATIC_FUNCTIONS when building the LZ4 library. + ******************************************************************************/ + +#ifdef LZ4_STATIC_LINKING_ONLY + +#ifndef LZ4_STATIC_3504398509 +#define LZ4_STATIC_3504398509 + +#ifdef LZ4_PUBLISH_STATIC_FUNCTIONS +#define LZ4LIB_STATIC_API LZ4LIB_API +#else +#define LZ4LIB_STATIC_API +#endif + + +/*! LZ4_compress_fast_extState_fastReset() : + * A variant of LZ4_compress_fast_extState(). + * + * Using this variant avoids an expensive initialization step. + * It is only safe to call if the state buffer is known to be correctly initialized already + * (see above comment on LZ4_resetStream_fast() for a definition of "correctly initialized"). + * From a high level, the difference is that + * this function initializes the provided state with a call to something like LZ4_resetStream_fast() + * while LZ4_compress_fast_extState() starts with a call to LZ4_resetStream(). + */ +LZ4LIB_STATIC_API int LZ4_compress_fast_extState_fastReset (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); + +/*! LZ4_attach_dictionary() : + * This is an experimental API that allows + * efficient use of a static dictionary many times. + * + * Rather than re-loading the dictionary buffer into a working context before + * each compression, or copying a pre-loaded dictionary's LZ4_stream_t into a + * working LZ4_stream_t, this function introduces a no-copy setup mechanism, + * in which the working stream references the dictionary stream in-place. + * + * Several assumptions are made about the state of the dictionary stream. + * Currently, only streams which have been prepared by LZ4_loadDict() should + * be expected to work. + * + * Alternatively, the provided dictionaryStream may be NULL, + * in which case any existing dictionary stream is unset. + * + * If a dictionary is provided, it replaces any pre-existing stream history. + * The dictionary contents are the only history that can be referenced and + * logically immediately precede the data compressed in the first subsequent + * compression call. + * + * The dictionary will only remain attached to the working stream through the + * first compression call, at the end of which it is cleared. The dictionary + * stream (and source buffer) must remain in-place / accessible / unchanged + * through the completion of the first compression call on the stream. + */ +LZ4LIB_STATIC_API void LZ4_attach_dictionary(LZ4_stream_t* workingStream, const LZ4_stream_t* dictionaryStream); + + +/*! In-place compression and decompression + * + * It's possible to have input and output sharing the same buffer, + * for highly contrained memory environments. + * In both cases, it requires input to lay at the end of the buffer, + * and decompression to start at beginning of the buffer. + * Buffer size must feature some margin, hence be larger than final size. + * + * |<------------------------buffer--------------------------------->| + * |<-----------compressed data--------->| + * |<-----------decompressed size------------------>| + * |<----margin---->| + * + * This technique is more useful for decompression, + * since decompressed size is typically larger, + * and margin is short. + * + * In-place decompression will work inside any buffer + * which size is >= LZ4_DECOMPRESS_INPLACE_BUFFER_SIZE(decompressedSize). + * This presumes that decompressedSize > compressedSize. + * Otherwise, it means compression actually expanded data, + * and it would be more efficient to store such data with a flag indicating it's not compressed. + * This can happen when data is not compressible (already compressed, or encrypted). + * + * For in-place compression, margin is larger, as it must be able to cope with both + * history preservation, requiring input data to remain unmodified up to LZ4_DISTANCE_MAX, + * and data expansion, which can happen when input is not compressible. + * As a consequence, buffer size requirements are much higher, + * and memory savings offered by in-place compression are more limited. + * + * There are ways to limit this cost for compression : + * - Reduce history size, by modifying LZ4_DISTANCE_MAX. + * Note that it is a compile-time constant, so all compressions will apply this limit. + * Lower values will reduce compression ratio, except when input_size < LZ4_DISTANCE_MAX, + * so it's a reasonable trick when inputs are known to be small. + * - Require the compressor to deliver a "maximum compressed size". + * This is the `dstCapacity` parameter in `LZ4_compress*()`. + * When this size is < LZ4_COMPRESSBOUND(inputSize), then compression can fail, + * in which case, the return code will be 0 (zero). + * The caller must be ready for these cases to happen, + * and typically design a backup scheme to send data uncompressed. + * The combination of both techniques can significantly reduce + * the amount of margin required for in-place compression. + * + * In-place compression can work in any buffer + * which size is >= (maxCompressedSize) + * with maxCompressedSize == LZ4_COMPRESSBOUND(srcSize) for guaranteed compression success. + * LZ4_COMPRESS_INPLACE_BUFFER_SIZE() depends on both maxCompressedSize and LZ4_DISTANCE_MAX, + * so it's possible to reduce memory requirements by playing with them. + */ + +#define LZ4_DECOMPRESS_INPLACE_MARGIN(compressedSize) (((compressedSize) >> 8) + 32) +#define LZ4_DECOMPRESS_INPLACE_BUFFER_SIZE(decompressedSize) ((decompressedSize) + LZ4_DECOMPRESS_INPLACE_MARGIN(decompressedSize)) /**< note: presumes that compressedSize < decompressedSize. note2: margin is overestimated a bit, since it could use compressedSize instead */ + +#ifndef LZ4_DISTANCE_MAX /* history window size; can be user-defined at compile time */ +# define LZ4_DISTANCE_MAX 65535 /* set to maximum value by default */ +#endif + +#define LZ4_COMPRESS_INPLACE_MARGIN (LZ4_DISTANCE_MAX + 32) /* LZ4_DISTANCE_MAX can be safely replaced by srcSize when it's smaller */ +#define LZ4_COMPRESS_INPLACE_BUFFER_SIZE(maxCompressedSize) ((maxCompressedSize) + LZ4_COMPRESS_INPLACE_MARGIN) /**< maxCompressedSize is generally LZ4_COMPRESSBOUND(inputSize), but can be set to any lower value, with the risk that compression can fail (return code 0(zero)) */ + +#endif /* LZ4_STATIC_3504398509 */ +#endif /* LZ4_STATIC_LINKING_ONLY */ + + + +#ifndef LZ4_H_98237428734687 +#define LZ4_H_98237428734687 + +/*-************************************************************ + * Private Definitions + ************************************************************** + * Do not use these definitions directly. + * They are only exposed to allow static allocation of `LZ4_stream_t` and `LZ4_streamDecode_t`. + * Accessing members will expose user code to API and/or ABI break in future versions of the library. + **************************************************************/ +#define LZ4_HASHLOG (LZ4_MEMORY_USAGE-2) +#define LZ4_HASHTABLESIZE (1 << LZ4_MEMORY_USAGE) +#define LZ4_HASH_SIZE_U32 (1 << LZ4_HASHLOG) /* required as macro for static allocation */ + +#if defined(__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) +# include + typedef int8_t LZ4_i8; + typedef uint8_t LZ4_byte; + typedef uint16_t LZ4_u16; + typedef uint32_t LZ4_u32; +#else + typedef signed char LZ4_i8; + typedef unsigned char LZ4_byte; + typedef unsigned short LZ4_u16; + typedef unsigned int LZ4_u32; +#endif + +typedef struct LZ4_stream_t_internal LZ4_stream_t_internal; +struct LZ4_stream_t_internal { + LZ4_u32 hashTable[LZ4_HASH_SIZE_U32]; + LZ4_u32 currentOffset; + LZ4_u32 tableType; + const LZ4_byte* dictionary; + const LZ4_stream_t_internal* dictCtx; + LZ4_u32 dictSize; +}; + +typedef struct { + const LZ4_byte* externalDict; + size_t extDictSize; + const LZ4_byte* prefixEnd; + size_t prefixSize; +} LZ4_streamDecode_t_internal; + + +/*! LZ4_stream_t : + * Do not use below internal definitions directly ! + * Declare or allocate an LZ4_stream_t instead. + * LZ4_stream_t can also be created using LZ4_createStream(), which is recommended. + * The structure definition can be convenient for static allocation + * (on stack, or as part of larger structure). + * Init this structure with LZ4_initStream() before first use. + * note : only use this definition in association with static linking ! + * this definition is not API/ABI safe, and may change in future versions. + */ +#define LZ4_STREAMSIZE 16416 /* static size, for inter-version compatibility */ +#define LZ4_STREAMSIZE_VOIDP (LZ4_STREAMSIZE / sizeof(void*)) +union LZ4_stream_u { + void* table[LZ4_STREAMSIZE_VOIDP]; + LZ4_stream_t_internal internal_donotuse; +}; /* previously typedef'd to LZ4_stream_t */ + + +/*! LZ4_initStream() : v1.9.0+ + * An LZ4_stream_t structure must be initialized at least once. + * This is automatically done when invoking LZ4_createStream(), + * but it's not when the structure is simply declared on stack (for example). + * + * Use LZ4_initStream() to properly initialize a newly declared LZ4_stream_t. + * It can also initialize any arbitrary buffer of sufficient size, + * and will @return a pointer of proper type upon initialization. + * + * Note : initialization fails if size and alignment conditions are not respected. + * In which case, the function will @return NULL. + * Note2: An LZ4_stream_t structure guarantees correct alignment and size. + * Note3: Before v1.9.0, use LZ4_resetStream() instead + */ +LZ4LIB_API LZ4_stream_t* LZ4_initStream (void* buffer, size_t size); + + +/*! LZ4_streamDecode_t : + * information structure to track an LZ4 stream during decompression. + * init this structure using LZ4_setStreamDecode() before first use. + * note : only use in association with static linking ! + * this definition is not API/ABI safe, + * and may change in a future version ! + */ +#define LZ4_STREAMDECODESIZE_U64 (4 + ((sizeof(void*)==16) ? 2 : 0) /*AS-400*/ ) +#define LZ4_STREAMDECODESIZE (LZ4_STREAMDECODESIZE_U64 * sizeof(unsigned long long)) +union LZ4_streamDecode_u { + unsigned long long table[LZ4_STREAMDECODESIZE_U64]; + LZ4_streamDecode_t_internal internal_donotuse; +} ; /* previously typedef'd to LZ4_streamDecode_t */ + + + +/*-************************************ +* Obsolete Functions +**************************************/ + +/*! Deprecation warnings + * + * Deprecated functions make the compiler generate a warning when invoked. + * This is meant to invite users to update their source code. + * Should deprecation warnings be a problem, it is generally possible to disable them, + * typically with -Wno-deprecated-declarations for gcc + * or _CRT_SECURE_NO_WARNINGS in Visual. + * + * Another method is to define LZ4_DISABLE_DEPRECATE_WARNINGS + * before including the header file. + */ +#ifdef LZ4_DISABLE_DEPRECATE_WARNINGS +# define LZ4_DEPRECATED(message) /* disable deprecation warnings */ +#else +# if defined (__cplusplus) && (__cplusplus >= 201402) /* C++14 or greater */ +# define LZ4_DEPRECATED(message) [[deprecated(message)]] +# elif defined(_MSC_VER) +# define LZ4_DEPRECATED(message) __declspec(deprecated(message)) +# elif defined(__clang__) || (defined(__GNUC__) && (__GNUC__ * 10 + __GNUC_MINOR__ >= 45)) +# define LZ4_DEPRECATED(message) __attribute__((deprecated(message))) +# elif defined(__GNUC__) && (__GNUC__ * 10 + __GNUC_MINOR__ >= 31) +# define LZ4_DEPRECATED(message) __attribute__((deprecated)) +# else +# pragma message("WARNING: LZ4_DEPRECATED needs custom implementation for this compiler") +# define LZ4_DEPRECATED(message) /* disabled */ +# endif +#endif /* LZ4_DISABLE_DEPRECATE_WARNINGS */ + +/*! Obsolete compression functions (since v1.7.3) */ +LZ4_DEPRECATED("use LZ4_compress_default() instead") LZ4LIB_API int LZ4_compress (const char* src, char* dest, int srcSize); +LZ4_DEPRECATED("use LZ4_compress_default() instead") LZ4LIB_API int LZ4_compress_limitedOutput (const char* src, char* dest, int srcSize, int maxOutputSize); +LZ4_DEPRECATED("use LZ4_compress_fast_extState() instead") LZ4LIB_API int LZ4_compress_withState (void* state, const char* source, char* dest, int inputSize); +LZ4_DEPRECATED("use LZ4_compress_fast_extState() instead") LZ4LIB_API int LZ4_compress_limitedOutput_withState (void* state, const char* source, char* dest, int inputSize, int maxOutputSize); +LZ4_DEPRECATED("use LZ4_compress_fast_continue() instead") LZ4LIB_API int LZ4_compress_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize); +LZ4_DEPRECATED("use LZ4_compress_fast_continue() instead") LZ4LIB_API int LZ4_compress_limitedOutput_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize, int maxOutputSize); + +/*! Obsolete decompression functions (since v1.8.0) */ +LZ4_DEPRECATED("use LZ4_decompress_fast() instead") LZ4LIB_API int LZ4_uncompress (const char* source, char* dest, int outputSize); +LZ4_DEPRECATED("use LZ4_decompress_safe() instead") LZ4LIB_API int LZ4_uncompress_unknownOutputSize (const char* source, char* dest, int isize, int maxOutputSize); + +/* Obsolete streaming functions (since v1.7.0) + * degraded functionality; do not use! + * + * In order to perform streaming compression, these functions depended on data + * that is no longer tracked in the state. They have been preserved as well as + * possible: using them will still produce a correct output. However, they don't + * actually retain any history between compression calls. The compression ratio + * achieved will therefore be no better than compressing each chunk + * independently. + */ +LZ4_DEPRECATED("Use LZ4_createStream() instead") LZ4LIB_API void* LZ4_create (char* inputBuffer); +LZ4_DEPRECATED("Use LZ4_createStream() instead") LZ4LIB_API int LZ4_sizeofStreamState(void); +LZ4_DEPRECATED("Use LZ4_resetStream() instead") LZ4LIB_API int LZ4_resetStreamState(void* state, char* inputBuffer); +LZ4_DEPRECATED("Use LZ4_saveDict() instead") LZ4LIB_API char* LZ4_slideInputBuffer (void* state); + +/*! Obsolete streaming decoding functions (since v1.7.0) */ +LZ4_DEPRECATED("use LZ4_decompress_safe_usingDict() instead") LZ4LIB_API int LZ4_decompress_safe_withPrefix64k (const char* src, char* dst, int compressedSize, int maxDstSize); +LZ4_DEPRECATED("use LZ4_decompress_fast_usingDict() instead") LZ4LIB_API int LZ4_decompress_fast_withPrefix64k (const char* src, char* dst, int originalSize); + +/*! Obsolete LZ4_decompress_fast variants (since v1.9.0) : + * These functions used to be faster than LZ4_decompress_safe(), + * but this is no longer the case. They are now slower. + * This is because LZ4_decompress_fast() doesn't know the input size, + * and therefore must progress more cautiously into the input buffer to not read beyond the end of block. + * On top of that `LZ4_decompress_fast()` is not protected vs malformed or malicious inputs, making it a security liability. + * As a consequence, LZ4_decompress_fast() is strongly discouraged, and deprecated. + * + * The last remaining LZ4_decompress_fast() specificity is that + * it can decompress a block without knowing its compressed size. + * Such functionality can be achieved in a more secure manner + * by employing LZ4_decompress_safe_partial(). + * + * Parameters: + * originalSize : is the uncompressed size to regenerate. + * `dst` must be already allocated, its size must be >= 'originalSize' bytes. + * @return : number of bytes read from source buffer (== compressed size). + * The function expects to finish at block's end exactly. + * If the source stream is detected malformed, the function stops decoding and returns a negative result. + * note : LZ4_decompress_fast*() requires originalSize. Thanks to this information, it never writes past the output buffer. + * However, since it doesn't know its 'src' size, it may read an unknown amount of input, past input buffer bounds. + * Also, since match offsets are not validated, match reads from 'src' may underflow too. + * These issues never happen if input (compressed) data is correct. + * But they may happen if input data is invalid (error or intentional tampering). + * As a consequence, use these functions in trusted environments with trusted data **only**. + */ +LZ4_DEPRECATED("This function is deprecated and unsafe. Consider using LZ4_decompress_safe() instead") +LZ4LIB_API int LZ4_decompress_fast (const char* src, char* dst, int originalSize); +LZ4_DEPRECATED("This function is deprecated and unsafe. Consider using LZ4_decompress_safe_continue() instead") +LZ4LIB_API int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* src, char* dst, int originalSize); +LZ4_DEPRECATED("This function is deprecated and unsafe. Consider using LZ4_decompress_safe_usingDict() instead") +LZ4LIB_API int LZ4_decompress_fast_usingDict (const char* src, char* dst, int originalSize, const char* dictStart, int dictSize); + +/*! LZ4_resetStream() : + * An LZ4_stream_t structure must be initialized at least once. + * This is done with LZ4_initStream(), or LZ4_resetStream(). + * Consider switching to LZ4_initStream(), + * invoking LZ4_resetStream() will trigger deprecation warnings in the future. + */ +LZ4LIB_API void LZ4_resetStream (LZ4_stream_t* streamPtr); + + +#endif /* LZ4_H_98237428734687 */ + + +#if defined (__cplusplus) +} +#endif diff --git a/fsbl/lib/lz4/lz4_all.c b/fsbl/lib/lz4/lz4_all.c new file mode 100644 index 000000000..109f52eab --- /dev/null +++ b/fsbl/lib/lz4/lz4_all.c @@ -0,0 +1,6009 @@ +/* + LZ4 - Fast LZ compression algorithm + Copyright (C) 2011-present, Yann Collet. + + BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + You can contact the author at : + - LZ4 homepage : http://www.lz4.org + - LZ4 source repository : https://github.com/lz4/lz4 +*/ + +/*-************************************ +* Tuning parameters +**************************************/ +/* + * LZ4_HEAPMODE : + * Select how default compression functions will allocate memory for their hash table, + * in memory stack (0:default, fastest), or in memory heap (1:requires malloc()). + */ +#ifndef LZ4_HEAPMODE +# define LZ4_HEAPMODE 0 +#endif + +/* + * LZ4_ACCELERATION_DEFAULT : + * Select "acceleration" for LZ4_compress_fast() when parameter value <= 0 + */ +#define LZ4_ACCELERATION_DEFAULT 1 +/* + * LZ4_ACCELERATION_MAX : + * Any "acceleration" value higher than this threshold + * get treated as LZ4_ACCELERATION_MAX instead (fix #876) + */ +#define LZ4_ACCELERATION_MAX 65537 + + +/*-************************************ +* CPU Feature Detection +**************************************/ +/* LZ4_FORCE_MEMORY_ACCESS + * By default, access to unaligned memory is controlled by `memcpy()`, which is safe and portable. + * Unfortunately, on some target/compiler combinations, the generated assembly is sub-optimal. + * The below switch allow to select different access method for improved performance. + * Method 0 (default) : use `memcpy()`. Safe and portable. + * Method 1 : `__packed` statement. It depends on compiler extension (ie, not portable). + * This method is safe if your compiler supports it, and *generally* as fast or faster than `memcpy`. + * Method 2 : direct access. This method is portable but violate C standard. + * It can generate buggy code on targets which assembly generation depends on alignment. + * But in some circumstances, it's the only known way to get the most performance (ie GCC + ARMv6) + * See https://fastcompression.blogspot.fr/2015/08/accessing-unaligned-memory.html for details. + * Prefer these methods in priority order (0 > 1 > 2) + */ +#ifndef LZ4_FORCE_MEMORY_ACCESS /* can be defined externally */ +# if defined(__GNUC__) && \ + ( defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) \ + || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) ) +# define LZ4_FORCE_MEMORY_ACCESS 2 +# elif (defined(__INTEL_COMPILER) && !defined(_WIN32)) || defined(__GNUC__) +# define LZ4_FORCE_MEMORY_ACCESS 1 +# endif +#endif + +/* + * LZ4_FORCE_SW_BITCOUNT + * Define this parameter if your target system or compiler does not support hardware bit count + */ +#if defined(_MSC_VER) && defined(_WIN32_WCE) /* Visual Studio for WinCE doesn't support Hardware bit count */ +# undef LZ4_FORCE_SW_BITCOUNT /* avoid double def */ +# define LZ4_FORCE_SW_BITCOUNT +#endif + + + +/*-************************************ +* Dependency +**************************************/ +/* + * LZ4_SRC_INCLUDED: + * Amalgamation flag, whether lz4.c is included + */ +#ifndef LZ4_SRC_INCLUDED +# define LZ4_SRC_INCLUDED 1 +#endif + +#ifndef LZ4_STATIC_LINKING_ONLY +#define LZ4_STATIC_LINKING_ONLY +#endif + +#ifndef LZ4_DISABLE_DEPRECATE_WARNINGS +#define LZ4_DISABLE_DEPRECATE_WARNINGS /* due to LZ4_decompress_safe_withPrefix64k */ +#endif + +#define LZ4_STATIC_LINKING_ONLY /* LZ4_DISTANCE_MAX */ +#include "lz4.h" +/* see also "memory routines" below */ + + +/*-************************************ +* Compiler Options +**************************************/ +#if defined(_MSC_VER) && (_MSC_VER >= 1400) /* Visual Studio 2005+ */ +# include /* only present in VS2005+ */ +# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */ +#endif /* _MSC_VER */ + +#ifndef LZ4_FORCE_INLINE +# ifdef _MSC_VER /* Visual Studio */ +# define LZ4_FORCE_INLINE static __forceinline +# else +# if defined (__cplusplus) || defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */ +# ifdef __GNUC__ +# define LZ4_FORCE_INLINE static inline __attribute__((always_inline)) +# else +# define LZ4_FORCE_INLINE static inline +# endif +# else +# define LZ4_FORCE_INLINE static +# endif /* __STDC_VERSION__ */ +# endif /* _MSC_VER */ +#endif /* LZ4_FORCE_INLINE */ + +/* LZ4_FORCE_O2 and LZ4_FORCE_INLINE + * gcc on ppc64le generates an unrolled SIMDized loop for LZ4_wildCopy8, + * together with a simple 8-byte copy loop as a fall-back path. + * However, this optimization hurts the decompression speed by >30%, + * because the execution does not go to the optimized loop + * for typical compressible data, and all of the preamble checks + * before going to the fall-back path become useless overhead. + * This optimization happens only with the -O3 flag, and -O2 generates + * a simple 8-byte copy loop. + * With gcc on ppc64le, all of the LZ4_decompress_* and LZ4_wildCopy8 + * functions are annotated with __attribute__((optimize("O2"))), + * and also LZ4_wildCopy8 is forcibly inlined, so that the O2 attribute + * of LZ4_wildCopy8 does not affect the compression speed. + */ +#if defined(__PPC64__) && defined(__LITTLE_ENDIAN__) && defined(__GNUC__) && !defined(__clang__) +# define LZ4_FORCE_O2 __attribute__((optimize("O2"))) +# undef LZ4_FORCE_INLINE +# define LZ4_FORCE_INLINE static __inline __attribute__((optimize("O2"),always_inline)) +#else +# define LZ4_FORCE_O2 +#endif + +#if (defined(__GNUC__) && (__GNUC__ >= 3)) || (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 800)) || defined(__clang__) +# define expect(expr,value) (__builtin_expect ((expr),(value)) ) +#else +# define expect(expr,value) (expr) +#endif + +#ifndef likely +#define likely(expr) expect((expr) != 0, 1) +#endif +#ifndef unlikely +#define unlikely(expr) expect((expr) != 0, 0) +#endif + +/* Should the alignment test prove unreliable, for some reason, + * it can be disabled by setting LZ4_ALIGN_TEST to 0 */ +#ifndef LZ4_ALIGN_TEST /* can be externally provided */ +# define LZ4_ALIGN_TEST 1 +#endif + + +/*-************************************ +* Memory routines +**************************************/ +#ifdef LZ4_USER_MEMORY_FUNCTIONS +/* memory management functions can be customized by user project. + * Below functions must exist somewhere in the Project + * and be available at link time */ +void* LZ4_malloc(size_t s); +void* LZ4_calloc(size_t n, size_t s); +void LZ4_free(void* p); +# define ALLOC(s) LZ4_malloc(s) +# define ALLOC_AND_ZERO(s) LZ4_calloc(1,s) +# define FREEMEM(p) LZ4_free(p) +#else +# include /* malloc, calloc, free */ +# define ALLOC(s) malloc(s) +# define ALLOC_AND_ZERO(s) calloc(1,s) +# define FREEMEM(p) free(p) +#endif + +#include /* memset, memcpy */ +#define MEM_INIT(p,v,s) memset((p),(v),(s)) + + +/*-************************************ +* Common Constants +**************************************/ +#define MINMATCH 4 + +#define WILDCOPYLENGTH 8 +#define LASTLITERALS 5 /* see ../doc/lz4_Block_format.md#parsing-restrictions */ +#define MFLIMIT 12 /* see ../doc/lz4_Block_format.md#parsing-restrictions */ +#define MATCH_SAFEGUARD_DISTANCE ((2*WILDCOPYLENGTH) - MINMATCH) /* ensure it's possible to write 2 x wildcopyLength without overflowing output buffer */ +#define FASTLOOP_SAFE_DISTANCE 64 +static const int LZ4_minLength = (MFLIMIT+1); + +#define KB *(1 <<10) +#define MB *(1 <<20) +#define GB *(1U<<30) + +#define LZ4_DISTANCE_ABSOLUTE_MAX 65535 +#if (LZ4_DISTANCE_MAX > LZ4_DISTANCE_ABSOLUTE_MAX) /* max supported by LZ4 format */ +# error "LZ4_DISTANCE_MAX is too big : must be <= 65535" +#endif + +#define ML_BITS 4 +#define ML_MASK ((1U<=1) +# include +#else +# ifndef assert +# define assert(condition) ((void)0) +# endif +#endif + +#define LZ4_STATIC_ASSERT(c) { enum { LZ4_static_assert = 1/(int)(!!(c)) }; } /* use after variable declarations */ + +#if defined(LZ4_DEBUG) && (LZ4_DEBUG>=2) +# include + static int g_debuglog_enable = 1; +# define DEBUGLOG(l, ...) { \ + if ((g_debuglog_enable) && (l<=LZ4_DEBUG)) { \ + fprintf(stderr, __FILE__ ": "); \ + fprintf(stderr, __VA_ARGS__); \ + fprintf(stderr, " \n"); \ + } } +#else +# define DEBUGLOG(l, ...) {} /* disabled */ +#endif + +static int LZ4_isAligned(const void* ptr, size_t alignment) +{ + return ((size_t)ptr & (alignment -1)) == 0; +} + + +/*-************************************ +* Types +**************************************/ +#include +#if defined(__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) +# include + typedef uint8_t BYTE; + typedef uint16_t U16; + typedef uint32_t U32; + typedef int32_t S32; + typedef uint64_t U64; + typedef uintptr_t uptrval; +#else +# if UINT_MAX != 4294967295UL +# error "LZ4 code (when not C++ or C99) assumes that sizeof(int) == 4" +# endif + typedef unsigned char BYTE; + typedef unsigned short U16; + typedef unsigned int U32; + typedef signed int S32; + typedef unsigned long long U64; + typedef size_t uptrval; /* generally true, except OpenVMS-64 */ +#endif + +#if defined(__x86_64__) + typedef U64 reg_t; /* 64-bits in x32 mode */ +#else + typedef size_t reg_t; /* 32-bits in x32 mode */ +#endif + +typedef enum { + notLimited = 0, + limitedOutput = 1, + fillOutput = 2 +} limitedOutput_directive; + + +/*-************************************ +* Reading and writing into memory +**************************************/ + +/** + * LZ4 relies on memcpy with a constant size being inlined. In freestanding + * environments, the compiler can't assume the implementation of memcpy() is + * standard compliant, so it can't apply its specialized memcpy() inlining + * logic. When possible, use __builtin_memcpy() to tell the compiler to analyze + * memcpy() as if it were standard compliant, so it can inline it in freestanding + * environments. This is needed when decompressing the Linux Kernel, for example. + */ +#if defined(__GNUC__) && (__GNUC__ >= 4) +#define LZ4_memcpy(dst, src, size) __builtin_memcpy(dst, src, size) +#else +#define LZ4_memcpy(dst, src, size) memcpy(dst, src, size) +#endif + +static unsigned LZ4_isLittleEndian(void) +{ + const union { U32 u; BYTE c[4]; } one = { 1 }; /* don't use static : performance detrimental */ + return one.c[0]; +} + + +#if defined(LZ4_FORCE_MEMORY_ACCESS) && (LZ4_FORCE_MEMORY_ACCESS==2) +/* lie to the compiler about data alignment; use with caution */ + +static U16 LZ4_read16(const void* memPtr) { return *(const U16*) memPtr; } +static U32 LZ4_read32(const void* memPtr) { return *(const U32*) memPtr; } +static reg_t LZ4_read_ARCH(const void* memPtr) { return *(const reg_t*) memPtr; } + +static void LZ4_write16(void* memPtr, U16 value) { *(U16*)memPtr = value; } +static void LZ4_write32(void* memPtr, U32 value) { *(U32*)memPtr = value; } + +#elif defined(LZ4_FORCE_MEMORY_ACCESS) && (LZ4_FORCE_MEMORY_ACCESS==1) + +/* __pack instructions are safer, but compiler specific, hence potentially problematic for some compilers */ +/* currently only defined for gcc and icc */ +typedef union { U16 u16; U32 u32; reg_t uArch; } __attribute__((packed)) unalign; + +static U16 LZ4_read16(const void* ptr) { return ((const unalign*)ptr)->u16; } +static U32 LZ4_read32(const void* ptr) { return ((const unalign*)ptr)->u32; } +static reg_t LZ4_read_ARCH(const void* ptr) { return ((const unalign*)ptr)->uArch; } + +static void LZ4_write16(void* memPtr, U16 value) { ((unalign*)memPtr)->u16 = value; } +static void LZ4_write32(void* memPtr, U32 value) { ((unalign*)memPtr)->u32 = value; } + +#else /* safe and portable access using memcpy() */ + +static U16 LZ4_read16(const void* memPtr) +{ + U16 val; LZ4_memcpy(&val, memPtr, sizeof(val)); return val; +} + +static U32 LZ4_read32(const void* memPtr) +{ + U32 val; LZ4_memcpy(&val, memPtr, sizeof(val)); return val; +} + +static reg_t LZ4_read_ARCH(const void* memPtr) +{ + reg_t val; LZ4_memcpy(&val, memPtr, sizeof(val)); return val; +} + +static void LZ4_write16(void* memPtr, U16 value) +{ + LZ4_memcpy(memPtr, &value, sizeof(value)); +} + +static void LZ4_write32(void* memPtr, U32 value) +{ + LZ4_memcpy(memPtr, &value, sizeof(value)); +} + +#endif /* LZ4_FORCE_MEMORY_ACCESS */ + + +static U16 LZ4_readLE16(const void* memPtr) +{ + if (LZ4_isLittleEndian()) { + return LZ4_read16(memPtr); + } else { + const BYTE* p = (const BYTE*)memPtr; + return (U16)((U16)p[0] + (p[1]<<8)); + } +} + +static void LZ4_writeLE16(void* memPtr, U16 value) +{ + if (LZ4_isLittleEndian()) { + LZ4_write16(memPtr, value); + } else { + BYTE* p = (BYTE*)memPtr; + p[0] = (BYTE) value; + p[1] = (BYTE)(value>>8); + } +} + +/* customized variant of memcpy, which can overwrite up to 8 bytes beyond dstEnd */ +LZ4_FORCE_INLINE +void LZ4_wildCopy8(void* dstPtr, const void* srcPtr, void* dstEnd) +{ + BYTE* d = (BYTE*)dstPtr; + const BYTE* s = (const BYTE*)srcPtr; + BYTE* const e = (BYTE*)dstEnd; + + do { LZ4_memcpy(d,s,8); d+=8; s+=8; } while (d= 16. */ +LZ4_FORCE_INLINE void +LZ4_wildCopy32(void* dstPtr, const void* srcPtr, void* dstEnd) +{ + BYTE* d = (BYTE*)dstPtr; + const BYTE* s = (const BYTE*)srcPtr; + BYTE* const e = (BYTE*)dstEnd; + + do { LZ4_memcpy(d,s,16); LZ4_memcpy(d+16,s+16,16); d+=32; s+=32; } while (d= dstPtr + MINMATCH + * - there is at least 8 bytes available to write after dstEnd */ +LZ4_FORCE_INLINE void +LZ4_memcpy_using_offset(BYTE* dstPtr, const BYTE* srcPtr, BYTE* dstEnd, const size_t offset) +{ + BYTE v[8]; + + assert(dstEnd >= dstPtr + MINMATCH); + + switch(offset) { + case 1: + MEM_INIT(v, *srcPtr, 8); + break; + case 2: + LZ4_memcpy(v, srcPtr, 2); + LZ4_memcpy(&v[2], srcPtr, 2); + LZ4_memcpy(&v[4], v, 4); + break; + case 4: + LZ4_memcpy(v, srcPtr, 4); + LZ4_memcpy(&v[4], srcPtr, 4); + break; + default: + LZ4_memcpy_using_offset_base(dstPtr, srcPtr, dstEnd, offset); + return; + } + + LZ4_memcpy(dstPtr, v, 8); + dstPtr += 8; + while (dstPtr < dstEnd) { + LZ4_memcpy(dstPtr, v, 8); + dstPtr += 8; + } +} +#endif + + +/*-************************************ +* Common functions +**************************************/ +static unsigned LZ4_NbCommonBytes (reg_t val) +{ + assert(val != 0); + if (LZ4_isLittleEndian()) { + if (sizeof(val) == 8) { +# if defined(_MSC_VER) && (_MSC_VER >= 1800) && defined(_M_AMD64) && !defined(LZ4_FORCE_SW_BITCOUNT) + /* x64 CPUS without BMI support interpret `TZCNT` as `REP BSF` */ + return (unsigned)_tzcnt_u64(val) >> 3; +# elif defined(_MSC_VER) && defined(_WIN64) && !defined(LZ4_FORCE_SW_BITCOUNT) + unsigned long r = 0; + _BitScanForward64(&r, (U64)val); + return (unsigned)r >> 3; +# elif (defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 3) || \ + ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4))))) && \ + !defined(LZ4_FORCE_SW_BITCOUNT) + return (unsigned)__builtin_ctzll((U64)val) >> 3; +# else + const U64 m = 0x0101010101010101ULL; + val ^= val - 1; + return (unsigned)(((U64)((val & (m - 1)) * m)) >> 56); +# endif + } else /* 32 bits */ { +# if defined(_MSC_VER) && (_MSC_VER >= 1400) && !defined(LZ4_FORCE_SW_BITCOUNT) + unsigned long r; + _BitScanForward(&r, (U32)val); + return (unsigned)r >> 3; +# elif (defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 3) || \ + ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4))))) && \ + !defined(__TINYC__) && !defined(LZ4_FORCE_SW_BITCOUNT) + return (unsigned)__builtin_ctz((U32)val) >> 3; +# else + const U32 m = 0x01010101; + return (unsigned)((((val - 1) ^ val) & (m - 1)) * m) >> 24; +# endif + } + } else /* Big Endian CPU */ { + if (sizeof(val)==8) { +# if (defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 3) || \ + ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4))))) && \ + !defined(__TINYC__) && !defined(LZ4_FORCE_SW_BITCOUNT) + return (unsigned)__builtin_clzll((U64)val) >> 3; +# else +#if 1 + /* this method is probably faster, + * but adds a 128 bytes lookup table */ + static const unsigned char ctz7_tab[128] = { + 7, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, + 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, + 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, + 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, + 6, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, + 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, + 5, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, + 4, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1, 0, 2, 0, 1, 0, + }; + U64 const mask = 0x0101010101010101ULL; + U64 const t = (((val >> 8) - mask) | val) & mask; + return ctz7_tab[(t * 0x0080402010080402ULL) >> 57]; +#else + /* this method doesn't consume memory space like the previous one, + * but it contains several branches, + * that may end up slowing execution */ + static const U32 by32 = sizeof(val)*4; /* 32 on 64 bits (goal), 16 on 32 bits. + Just to avoid some static analyzer complaining about shift by 32 on 32-bits target. + Note that this code path is never triggered in 32-bits mode. */ + unsigned r; + if (!(val>>by32)) { r=4; } else { r=0; val>>=by32; } + if (!(val>>16)) { r+=2; val>>=8; } else { val>>=24; } + r += (!val); + return r; +#endif +# endif + } else /* 32 bits */ { +# if (defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 3) || \ + ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4))))) && \ + !defined(LZ4_FORCE_SW_BITCOUNT) + return (unsigned)__builtin_clz((U32)val) >> 3; +# else + val >>= 8; + val = ((((val + 0x00FFFF00) | 0x00FFFFFF) + val) | + (val + 0x00FF0000)) >> 24; + return (unsigned)val ^ 3; +# endif + } + } +} + + +#define STEPSIZE sizeof(reg_t) +LZ4_FORCE_INLINE +unsigned LZ4_count(const BYTE* pIn, const BYTE* pMatch, const BYTE* pInLimit) +{ + const BYTE* const pStart = pIn; + + if (likely(pIn < pInLimit-(STEPSIZE-1))) { + reg_t const diff = LZ4_read_ARCH(pMatch) ^ LZ4_read_ARCH(pIn); + if (!diff) { + pIn+=STEPSIZE; pMatch+=STEPSIZE; + } else { + return LZ4_NbCommonBytes(diff); + } } + + while (likely(pIn < pInLimit-(STEPSIZE-1))) { + reg_t const diff = LZ4_read_ARCH(pMatch) ^ LZ4_read_ARCH(pIn); + if (!diff) { pIn+=STEPSIZE; pMatch+=STEPSIZE; continue; } + pIn += LZ4_NbCommonBytes(diff); + return (unsigned)(pIn - pStart); + } + + if ((STEPSIZE==8) && (pIn<(pInLimit-3)) && (LZ4_read32(pMatch) == LZ4_read32(pIn))) { pIn+=4; pMatch+=4; } + if ((pIn<(pInLimit-1)) && (LZ4_read16(pMatch) == LZ4_read16(pIn))) { pIn+=2; pMatch+=2; } + if ((pIn compression run slower on incompressible data */ + + +/*-************************************ +* Local Structures and types +**************************************/ +typedef enum { clearedTable = 0, byPtr, byU32, byU16 } tableType_t; + +/** + * This enum distinguishes several different modes of accessing previous + * content in the stream. + * + * - noDict : There is no preceding content. + * - withPrefix64k : Table entries up to ctx->dictSize before the current blob + * blob being compressed are valid and refer to the preceding + * content (of length ctx->dictSize), which is available + * contiguously preceding in memory the content currently + * being compressed. + * - usingExtDict : Like withPrefix64k, but the preceding content is somewhere + * else in memory, starting at ctx->dictionary with length + * ctx->dictSize. + * - usingDictCtx : Like usingExtDict, but everything concerning the preceding + * content is in a separate context, pointed to by + * ctx->dictCtx. ctx->dictionary, ctx->dictSize, and table + * entries in the current context that refer to positions + * preceding the beginning of the current compression are + * ignored. Instead, ctx->dictCtx->dictionary and ctx->dictCtx + * ->dictSize describe the location and size of the preceding + * content, and matches are found by looking in the ctx + * ->dictCtx->hashTable. + */ +typedef enum { noDict = 0, withPrefix64k, usingExtDict, usingDictCtx } dict_directive; +typedef enum { noDictIssue = 0, dictSmall } dictIssue_directive; + + +/*-************************************ +* Local Utils +**************************************/ +int LZ4_versionNumber (void) { return LZ4_VERSION_NUMBER; } +const char* LZ4_versionString(void) { return LZ4_VERSION_STRING; } +int LZ4_compressBound(int isize) { return LZ4_COMPRESSBOUND(isize); } +int LZ4_sizeofState(void) { return LZ4_STREAMSIZE; } + + +/*-************************************ +* Internal Definitions used in Tests +**************************************/ +#if defined (__cplusplus) +extern "C" { +#endif + +int LZ4_compress_forceExtDict (LZ4_stream_t* LZ4_dict, const char* source, char* dest, int srcSize); + +int LZ4_decompress_safe_forceExtDict(const char* source, char* dest, + int compressedSize, int maxOutputSize, + const void* dictStart, size_t dictSize); + +#if defined (__cplusplus) +} +#endif + +/*-****************************** +* Compression functions +********************************/ +LZ4_FORCE_INLINE U32 LZ4_hash4(U32 sequence, tableType_t const tableType) +{ + if (tableType == byU16) + return ((sequence * 2654435761U) >> ((MINMATCH*8)-(LZ4_HASHLOG+1))); + else + return ((sequence * 2654435761U) >> ((MINMATCH*8)-LZ4_HASHLOG)); +} + +LZ4_FORCE_INLINE U32 LZ4_hash5(U64 sequence, tableType_t const tableType) +{ + const U32 hashLog = (tableType == byU16) ? LZ4_HASHLOG+1 : LZ4_HASHLOG; + if (LZ4_isLittleEndian()) { + const U64 prime5bytes = 889523592379ULL; + return (U32)(((sequence << 24) * prime5bytes) >> (64 - hashLog)); + } else { + const U64 prime8bytes = 11400714785074694791ULL; + return (U32)(((sequence >> 24) * prime8bytes) >> (64 - hashLog)); + } +} + +LZ4_FORCE_INLINE U32 LZ4_hashPosition(const void* const p, tableType_t const tableType) +{ + if ((sizeof(reg_t)==8) && (tableType != byU16)) return LZ4_hash5(LZ4_read_ARCH(p), tableType); + return LZ4_hash4(LZ4_read32(p), tableType); +} + +LZ4_FORCE_INLINE void LZ4_clearHash(U32 h, void* tableBase, tableType_t const tableType) +{ + switch (tableType) + { + default: /* fallthrough */ + case clearedTable: { /* illegal! */ assert(0); return; } + case byPtr: { const BYTE** hashTable = (const BYTE**)tableBase; hashTable[h] = NULL; return; } + case byU32: { U32* hashTable = (U32*) tableBase; hashTable[h] = 0; return; } + case byU16: { U16* hashTable = (U16*) tableBase; hashTable[h] = 0; return; } + } +} + +LZ4_FORCE_INLINE void LZ4_putIndexOnHash(U32 idx, U32 h, void* tableBase, tableType_t const tableType) +{ + switch (tableType) + { + default: /* fallthrough */ + case clearedTable: /* fallthrough */ + case byPtr: { /* illegal! */ assert(0); return; } + case byU32: { U32* hashTable = (U32*) tableBase; hashTable[h] = idx; return; } + case byU16: { U16* hashTable = (U16*) tableBase; assert(idx < 65536); hashTable[h] = (U16)idx; return; } + } +} + +LZ4_FORCE_INLINE void LZ4_putPositionOnHash(const BYTE* p, U32 h, + void* tableBase, tableType_t const tableType, + const BYTE* srcBase) +{ + switch (tableType) + { + case clearedTable: { /* illegal! */ assert(0); return; } + case byPtr: { const BYTE** hashTable = (const BYTE**)tableBase; hashTable[h] = p; return; } + case byU32: { U32* hashTable = (U32*) tableBase; hashTable[h] = (U32)(p-srcBase); return; } + case byU16: { U16* hashTable = (U16*) tableBase; hashTable[h] = (U16)(p-srcBase); return; } + } +} + +LZ4_FORCE_INLINE void LZ4_putPosition(const BYTE* p, void* tableBase, tableType_t tableType, const BYTE* srcBase) +{ + U32 const h = LZ4_hashPosition(p, tableType); + LZ4_putPositionOnHash(p, h, tableBase, tableType, srcBase); +} + +/* LZ4_getIndexOnHash() : + * Index of match position registered in hash table. + * hash position must be calculated by using base+index, or dictBase+index. + * Assumption 1 : only valid if tableType == byU32 or byU16. + * Assumption 2 : h is presumed valid (within limits of hash table) + */ +LZ4_FORCE_INLINE U32 LZ4_getIndexOnHash(U32 h, const void* tableBase, tableType_t tableType) +{ + LZ4_STATIC_ASSERT(LZ4_MEMORY_USAGE > 2); + if (tableType == byU32) { + const U32* const hashTable = (const U32*) tableBase; + assert(h < (1U << (LZ4_MEMORY_USAGE-2))); + return hashTable[h]; + } + if (tableType == byU16) { + const U16* const hashTable = (const U16*) tableBase; + assert(h < (1U << (LZ4_MEMORY_USAGE-1))); + return hashTable[h]; + } + assert(0); return 0; /* forbidden case */ +} + +static const BYTE* LZ4_getPositionOnHash(U32 h, const void* tableBase, tableType_t tableType, const BYTE* srcBase) +{ + if (tableType == byPtr) { const BYTE* const* hashTable = (const BYTE* const*) tableBase; return hashTable[h]; } + if (tableType == byU32) { const U32* const hashTable = (const U32*) tableBase; return hashTable[h] + srcBase; } + { const U16* const hashTable = (const U16*) tableBase; return hashTable[h] + srcBase; } /* default, to ensure a return */ +} + +LZ4_FORCE_INLINE const BYTE* +LZ4_getPosition(const BYTE* p, + const void* tableBase, tableType_t tableType, + const BYTE* srcBase) +{ + U32 const h = LZ4_hashPosition(p, tableType); + return LZ4_getPositionOnHash(h, tableBase, tableType, srcBase); +} + +LZ4_FORCE_INLINE void +LZ4_prepareTable(LZ4_stream_t_internal* const cctx, + const int inputSize, + const tableType_t tableType) { + /* If the table hasn't been used, it's guaranteed to be zeroed out, and is + * therefore safe to use no matter what mode we're in. Otherwise, we figure + * out if it's safe to leave as is or whether it needs to be reset. + */ + if ((tableType_t)cctx->tableType != clearedTable) { + assert(inputSize >= 0); + if ((tableType_t)cctx->tableType != tableType + || ((tableType == byU16) && cctx->currentOffset + (unsigned)inputSize >= 0xFFFFU) + || ((tableType == byU32) && cctx->currentOffset > 1 GB) + || tableType == byPtr + || inputSize >= 4 KB) + { + DEBUGLOG(4, "LZ4_prepareTable: Resetting table in %p", cctx); + MEM_INIT(cctx->hashTable, 0, LZ4_HASHTABLESIZE); + cctx->currentOffset = 0; + cctx->tableType = (U32)clearedTable; + } else { + DEBUGLOG(4, "LZ4_prepareTable: Re-use hash table (no reset)"); + } + } + + /* Adding a gap, so all previous entries are > LZ4_DISTANCE_MAX back, is faster + * than compressing without a gap. However, compressing with + * currentOffset == 0 is faster still, so we preserve that case. + */ + if (cctx->currentOffset != 0 && tableType == byU32) { + DEBUGLOG(5, "LZ4_prepareTable: adding 64KB to currentOffset"); + cctx->currentOffset += 64 KB; + } + + /* Finally, clear history */ + cctx->dictCtx = NULL; + cctx->dictionary = NULL; + cctx->dictSize = 0; +} + +/** LZ4_compress_generic() : + * inlined, to ensure branches are decided at compilation time. + * Presumed already validated at this stage: + * - source != NULL + * - inputSize > 0 + */ +LZ4_FORCE_INLINE int LZ4_compress_generic_validated( + LZ4_stream_t_internal* const cctx, + const char* const source, + char* const dest, + const int inputSize, + int *inputConsumed, /* only written when outputDirective == fillOutput */ + const int maxOutputSize, + const limitedOutput_directive outputDirective, + const tableType_t tableType, + const dict_directive dictDirective, + const dictIssue_directive dictIssue, + const int acceleration) +{ + int result; + const BYTE* ip = (const BYTE*) source; + + U32 const startIndex = cctx->currentOffset; + const BYTE* base = (const BYTE*) source - startIndex; + const BYTE* lowLimit; + + const LZ4_stream_t_internal* dictCtx = (const LZ4_stream_t_internal*) cctx->dictCtx; + const BYTE* const dictionary = + dictDirective == usingDictCtx ? dictCtx->dictionary : cctx->dictionary; + const U32 dictSize = + dictDirective == usingDictCtx ? dictCtx->dictSize : cctx->dictSize; + const U32 dictDelta = (dictDirective == usingDictCtx) ? startIndex - dictCtx->currentOffset : 0; /* make indexes in dictCtx comparable with index in current context */ + + int const maybe_extMem = (dictDirective == usingExtDict) || (dictDirective == usingDictCtx); + U32 const prefixIdxLimit = startIndex - dictSize; /* used when dictDirective == dictSmall */ + const BYTE* const dictEnd = dictionary ? dictionary + dictSize : dictionary; + const BYTE* anchor = (const BYTE*) source; + const BYTE* const iend = ip + inputSize; + const BYTE* const mflimitPlusOne = iend - MFLIMIT + 1; + const BYTE* const matchlimit = iend - LASTLITERALS; + + /* the dictCtx currentOffset is indexed on the start of the dictionary, + * while a dictionary in the current context precedes the currentOffset */ + const BYTE* dictBase = !dictionary ? NULL : (dictDirective == usingDictCtx) ? + dictionary + dictSize - dictCtx->currentOffset : + dictionary + dictSize - startIndex; + + BYTE* op = (BYTE*) dest; + BYTE* const olimit = op + maxOutputSize; + + U32 offset = 0; + U32 forwardH; + + DEBUGLOG(5, "LZ4_compress_generic_validated: srcSize=%i, tableType=%u", inputSize, tableType); + assert(ip != NULL); + /* If init conditions are not met, we don't have to mark stream + * as having dirty context, since no action was taken yet */ + if (outputDirective == fillOutput && maxOutputSize < 1) { return 0; } /* Impossible to store anything */ + if ((tableType == byU16) && (inputSize>=LZ4_64Klimit)) { return 0; } /* Size too large (not within 64K limit) */ + if (tableType==byPtr) assert(dictDirective==noDict); /* only supported use case with byPtr */ + assert(acceleration >= 1); + + lowLimit = (const BYTE*)source - (dictDirective == withPrefix64k ? dictSize : 0); + + /* Update context state */ + if (dictDirective == usingDictCtx) { + /* Subsequent linked blocks can't use the dictionary. */ + /* Instead, they use the block we just compressed. */ + cctx->dictCtx = NULL; + cctx->dictSize = (U32)inputSize; + } else { + cctx->dictSize += (U32)inputSize; + } + cctx->currentOffset += (U32)inputSize; + cctx->tableType = (U32)tableType; + + if (inputSizehashTable, tableType, base); + ip++; forwardH = LZ4_hashPosition(ip, tableType); + + /* Main Loop */ + for ( ; ; ) { + const BYTE* match; + BYTE* token; + const BYTE* filledIp; + + /* Find a match */ + if (tableType == byPtr) { + const BYTE* forwardIp = ip; + int step = 1; + int searchMatchNb = acceleration << LZ4_skipTrigger; + do { + U32 const h = forwardH; + ip = forwardIp; + forwardIp += step; + step = (searchMatchNb++ >> LZ4_skipTrigger); + + if (unlikely(forwardIp > mflimitPlusOne)) goto _last_literals; + assert(ip < mflimitPlusOne); + + match = LZ4_getPositionOnHash(h, cctx->hashTable, tableType, base); + forwardH = LZ4_hashPosition(forwardIp, tableType); + LZ4_putPositionOnHash(ip, h, cctx->hashTable, tableType, base); + + } while ( (match+LZ4_DISTANCE_MAX < ip) + || (LZ4_read32(match) != LZ4_read32(ip)) ); + + } else { /* byU32, byU16 */ + + const BYTE* forwardIp = ip; + int step = 1; + int searchMatchNb = acceleration << LZ4_skipTrigger; + do { + U32 const h = forwardH; + U32 const current = (U32)(forwardIp - base); + U32 matchIndex = LZ4_getIndexOnHash(h, cctx->hashTable, tableType); + assert(matchIndex <= current); + assert(forwardIp - base < (ptrdiff_t)(2 GB - 1)); + ip = forwardIp; + forwardIp += step; + step = (searchMatchNb++ >> LZ4_skipTrigger); + + if (unlikely(forwardIp > mflimitPlusOne)) goto _last_literals; + assert(ip < mflimitPlusOne); + + if (dictDirective == usingDictCtx) { + if (matchIndex < startIndex) { + /* there was no match, try the dictionary */ + assert(tableType == byU32); + matchIndex = LZ4_getIndexOnHash(h, dictCtx->hashTable, byU32); + match = dictBase + matchIndex; + matchIndex += dictDelta; /* make dictCtx index comparable with current context */ + lowLimit = dictionary; + } else { + match = base + matchIndex; + lowLimit = (const BYTE*)source; + } + } else if (dictDirective==usingExtDict) { + if (matchIndex < startIndex) { + DEBUGLOG(7, "extDict candidate: matchIndex=%5u < startIndex=%5u", matchIndex, startIndex); + assert(startIndex - matchIndex >= MINMATCH); + match = dictBase + matchIndex; + lowLimit = dictionary; + } else { + match = base + matchIndex; + lowLimit = (const BYTE*)source; + } + } else { /* single continuous memory segment */ + match = base + matchIndex; + } + forwardH = LZ4_hashPosition(forwardIp, tableType); + LZ4_putIndexOnHash(current, h, cctx->hashTable, tableType); + + DEBUGLOG(7, "candidate at pos=%u (offset=%u \n", matchIndex, current - matchIndex); + if ((dictIssue == dictSmall) && (matchIndex < prefixIdxLimit)) { continue; } /* match outside of valid area */ + assert(matchIndex < current); + if ( ((tableType != byU16) || (LZ4_DISTANCE_MAX < LZ4_DISTANCE_ABSOLUTE_MAX)) + && (matchIndex+LZ4_DISTANCE_MAX < current)) { + continue; + } /* too far */ + assert((current - matchIndex) <= LZ4_DISTANCE_MAX); /* match now expected within distance */ + + if (LZ4_read32(match) == LZ4_read32(ip)) { + if (maybe_extMem) offset = current - matchIndex; + break; /* match found */ + } + + } while(1); + } + + /* Catch up */ + filledIp = ip; + while (((ip>anchor) & (match > lowLimit)) && (unlikely(ip[-1]==match[-1]))) { ip--; match--; } + + /* Encode Literals */ + { unsigned const litLength = (unsigned)(ip - anchor); + token = op++; + if ((outputDirective == limitedOutput) && /* Check output buffer overflow */ + (unlikely(op + litLength + (2 + 1 + LASTLITERALS) + (litLength/255) > olimit)) ) { + return 0; /* cannot compress within `dst` budget. Stored indexes in hash table are nonetheless fine */ + } + if ((outputDirective == fillOutput) && + (unlikely(op + (litLength+240)/255 /* litlen */ + litLength /* literals */ + 2 /* offset */ + 1 /* token */ + MFLIMIT - MINMATCH /* min last literals so last match is <= end - MFLIMIT */ > olimit))) { + op--; + goto _last_literals; + } + if (litLength >= RUN_MASK) { + int len = (int)(litLength - RUN_MASK); + *token = (RUN_MASK<= 255 ; len-=255) *op++ = 255; + *op++ = (BYTE)len; + } + else *token = (BYTE)(litLength< olimit)) { + /* the match was too close to the end, rewind and go to last literals */ + op = token; + goto _last_literals; + } + + /* Encode Offset */ + if (maybe_extMem) { /* static test */ + DEBUGLOG(6, " with offset=%u (ext if > %i)", offset, (int)(ip - (const BYTE*)source)); + assert(offset <= LZ4_DISTANCE_MAX && offset > 0); + LZ4_writeLE16(op, (U16)offset); op+=2; + } else { + DEBUGLOG(6, " with offset=%u (same segment)", (U32)(ip - match)); + assert(ip-match <= LZ4_DISTANCE_MAX); + LZ4_writeLE16(op, (U16)(ip - match)); op+=2; + } + + /* Encode MatchLength */ + { unsigned matchCode; + + if ( (dictDirective==usingExtDict || dictDirective==usingDictCtx) + && (lowLimit==dictionary) /* match within extDict */ ) { + const BYTE* limit = ip + (dictEnd-match); + assert(dictEnd > match); + if (limit > matchlimit) limit = matchlimit; + matchCode = LZ4_count(ip+MINMATCH, match+MINMATCH, limit); + ip += (size_t)matchCode + MINMATCH; + if (ip==limit) { + unsigned const more = LZ4_count(limit, (const BYTE*)source, matchlimit); + matchCode += more; + ip += more; + } + DEBUGLOG(6, " with matchLength=%u starting in extDict", matchCode+MINMATCH); + } else { + matchCode = LZ4_count(ip+MINMATCH, match+MINMATCH, matchlimit); + ip += (size_t)matchCode + MINMATCH; + DEBUGLOG(6, " with matchLength=%u", matchCode+MINMATCH); + } + + if ((outputDirective) && /* Check output buffer overflow */ + (unlikely(op + (1 + LASTLITERALS) + (matchCode+240)/255 > olimit)) ) { + if (outputDirective == fillOutput) { + /* Match description too long : reduce it */ + U32 newMatchCode = 15 /* in token */ - 1 /* to avoid needing a zero byte */ + ((U32)(olimit - op) - 1 - LASTLITERALS) * 255; + ip -= matchCode - newMatchCode; + assert(newMatchCode < matchCode); + matchCode = newMatchCode; + if (unlikely(ip <= filledIp)) { + /* We have already filled up to filledIp so if ip ends up less than filledIp + * we have positions in the hash table beyond the current position. This is + * a problem if we reuse the hash table. So we have to remove these positions + * from the hash table. + */ + const BYTE* ptr; + DEBUGLOG(5, "Clearing %u positions", (U32)(filledIp - ip)); + for (ptr = ip; ptr <= filledIp; ++ptr) { + U32 const h = LZ4_hashPosition(ptr, tableType); + LZ4_clearHash(h, cctx->hashTable, tableType); + } + } + } else { + assert(outputDirective == limitedOutput); + return 0; /* cannot compress within `dst` budget. Stored indexes in hash table are nonetheless fine */ + } + } + if (matchCode >= ML_MASK) { + *token += ML_MASK; + matchCode -= ML_MASK; + LZ4_write32(op, 0xFFFFFFFF); + while (matchCode >= 4*255) { + op+=4; + LZ4_write32(op, 0xFFFFFFFF); + matchCode -= 4*255; + } + op += matchCode / 255; + *op++ = (BYTE)(matchCode % 255); + } else + *token += (BYTE)(matchCode); + } + /* Ensure we have enough space for the last literals. */ + assert(!(outputDirective == fillOutput && op + 1 + LASTLITERALS > olimit)); + + anchor = ip; + + /* Test end of chunk */ + if (ip >= mflimitPlusOne) break; + + /* Fill table */ + LZ4_putPosition(ip-2, cctx->hashTable, tableType, base); + + /* Test next position */ + if (tableType == byPtr) { + + match = LZ4_getPosition(ip, cctx->hashTable, tableType, base); + LZ4_putPosition(ip, cctx->hashTable, tableType, base); + if ( (match+LZ4_DISTANCE_MAX >= ip) + && (LZ4_read32(match) == LZ4_read32(ip)) ) + { token=op++; *token=0; goto _next_match; } + + } else { /* byU32, byU16 */ + + U32 const h = LZ4_hashPosition(ip, tableType); + U32 const current = (U32)(ip-base); + U32 matchIndex = LZ4_getIndexOnHash(h, cctx->hashTable, tableType); + assert(matchIndex < current); + if (dictDirective == usingDictCtx) { + if (matchIndex < startIndex) { + /* there was no match, try the dictionary */ + matchIndex = LZ4_getIndexOnHash(h, dictCtx->hashTable, byU32); + match = dictBase + matchIndex; + lowLimit = dictionary; /* required for match length counter */ + matchIndex += dictDelta; + } else { + match = base + matchIndex; + lowLimit = (const BYTE*)source; /* required for match length counter */ + } + } else if (dictDirective==usingExtDict) { + if (matchIndex < startIndex) { + match = dictBase + matchIndex; + lowLimit = dictionary; /* required for match length counter */ + } else { + match = base + matchIndex; + lowLimit = (const BYTE*)source; /* required for match length counter */ + } + } else { /* single memory segment */ + match = base + matchIndex; + } + LZ4_putIndexOnHash(current, h, cctx->hashTable, tableType); + assert(matchIndex < current); + if ( ((dictIssue==dictSmall) ? (matchIndex >= prefixIdxLimit) : 1) + && (((tableType==byU16) && (LZ4_DISTANCE_MAX == LZ4_DISTANCE_ABSOLUTE_MAX)) ? 1 : (matchIndex+LZ4_DISTANCE_MAX >= current)) + && (LZ4_read32(match) == LZ4_read32(ip)) ) { + token=op++; + *token=0; + if (maybe_extMem) offset = current - matchIndex; + DEBUGLOG(6, "seq.start:%i, literals=%u, match.start:%i", + (int)(anchor-(const BYTE*)source), 0, (int)(ip-(const BYTE*)source)); + goto _next_match; + } + } + + /* Prepare next loop */ + forwardH = LZ4_hashPosition(++ip, tableType); + + } + +_last_literals: + /* Encode Last Literals */ + { size_t lastRun = (size_t)(iend - anchor); + if ( (outputDirective) && /* Check output buffer overflow */ + (op + lastRun + 1 + ((lastRun+255-RUN_MASK)/255) > olimit)) { + if (outputDirective == fillOutput) { + /* adapt lastRun to fill 'dst' */ + assert(olimit >= op); + lastRun = (size_t)(olimit-op) - 1/*token*/; + lastRun -= (lastRun + 256 - RUN_MASK) / 256; /*additional length tokens*/ + } else { + assert(outputDirective == limitedOutput); + return 0; /* cannot compress within `dst` budget. Stored indexes in hash table are nonetheless fine */ + } + } + DEBUGLOG(6, "Final literal run : %i literals", (int)lastRun); + if (lastRun >= RUN_MASK) { + size_t accumulator = lastRun - RUN_MASK; + *op++ = RUN_MASK << ML_BITS; + for(; accumulator >= 255 ; accumulator-=255) *op++ = 255; + *op++ = (BYTE) accumulator; + } else { + *op++ = (BYTE)(lastRun< 0); + DEBUGLOG(5, "LZ4_compress_generic: compressed %i bytes into %i bytes", inputSize, result); + return result; +} + +/** LZ4_compress_generic() : + * inlined, to ensure branches are decided at compilation time; + * takes care of src == (NULL, 0) + * and forward the rest to LZ4_compress_generic_validated */ +LZ4_FORCE_INLINE int LZ4_compress_generic( + LZ4_stream_t_internal* const cctx, + const char* const src, + char* const dst, + const int srcSize, + int *inputConsumed, /* only written when outputDirective == fillOutput */ + const int dstCapacity, + const limitedOutput_directive outputDirective, + const tableType_t tableType, + const dict_directive dictDirective, + const dictIssue_directive dictIssue, + const int acceleration) +{ + DEBUGLOG(5, "LZ4_compress_generic: srcSize=%i, dstCapacity=%i", + srcSize, dstCapacity); + + if ((U32)srcSize > (U32)LZ4_MAX_INPUT_SIZE) { return 0; } /* Unsupported srcSize, too large (or negative) */ + if (srcSize == 0) { /* src == NULL supported if srcSize == 0 */ + if (outputDirective != notLimited && dstCapacity <= 0) return 0; /* no output, can't write anything */ + DEBUGLOG(5, "Generating an empty block"); + assert(outputDirective == notLimited || dstCapacity >= 1); + assert(dst != NULL); + dst[0] = 0; + if (outputDirective == fillOutput) { + assert (inputConsumed != NULL); + *inputConsumed = 0; + } + return 1; + } + assert(src != NULL); + + return LZ4_compress_generic_validated(cctx, src, dst, srcSize, + inputConsumed, /* only written into if outputDirective == fillOutput */ + dstCapacity, outputDirective, + tableType, dictDirective, dictIssue, acceleration); +} + + +int LZ4_compress_fast_extState(void* state, const char* source, char* dest, int inputSize, int maxOutputSize, int acceleration) +{ + LZ4_stream_t_internal* const ctx = & LZ4_initStream(state, sizeof(LZ4_stream_t)) -> internal_donotuse; + assert(ctx != NULL); + if (acceleration < 1) acceleration = LZ4_ACCELERATION_DEFAULT; + if (acceleration > LZ4_ACCELERATION_MAX) acceleration = LZ4_ACCELERATION_MAX; + if (maxOutputSize >= LZ4_compressBound(inputSize)) { + if (inputSize < LZ4_64Klimit) { + return LZ4_compress_generic(ctx, source, dest, inputSize, NULL, 0, notLimited, byU16, noDict, noDictIssue, acceleration); + } else { + const tableType_t tableType = ((sizeof(void*)==4) && ((uptrval)source > LZ4_DISTANCE_MAX)) ? byPtr : byU32; + return LZ4_compress_generic(ctx, source, dest, inputSize, NULL, 0, notLimited, tableType, noDict, noDictIssue, acceleration); + } + } else { + if (inputSize < LZ4_64Klimit) { + return LZ4_compress_generic(ctx, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, byU16, noDict, noDictIssue, acceleration); + } else { + const tableType_t tableType = ((sizeof(void*)==4) && ((uptrval)source > LZ4_DISTANCE_MAX)) ? byPtr : byU32; + return LZ4_compress_generic(ctx, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, noDict, noDictIssue, acceleration); + } + } +} + +/** + * LZ4_compress_fast_extState_fastReset() : + * A variant of LZ4_compress_fast_extState(). + * + * Using this variant avoids an expensive initialization step. It is only safe + * to call if the state buffer is known to be correctly initialized already + * (see comment in lz4.h on LZ4_resetStream_fast() for a definition of + * "correctly initialized"). + */ +int LZ4_compress_fast_extState_fastReset(void* state, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration) +{ + LZ4_stream_t_internal* ctx = &((LZ4_stream_t*)state)->internal_donotuse; + if (acceleration < 1) acceleration = LZ4_ACCELERATION_DEFAULT; + if (acceleration > LZ4_ACCELERATION_MAX) acceleration = LZ4_ACCELERATION_MAX; + + if (dstCapacity >= LZ4_compressBound(srcSize)) { + if (srcSize < LZ4_64Klimit) { + const tableType_t tableType = byU16; + LZ4_prepareTable(ctx, srcSize, tableType); + if (ctx->currentOffset) { + return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, 0, notLimited, tableType, noDict, dictSmall, acceleration); + } else { + return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, 0, notLimited, tableType, noDict, noDictIssue, acceleration); + } + } else { + const tableType_t tableType = ((sizeof(void*)==4) && ((uptrval)src > LZ4_DISTANCE_MAX)) ? byPtr : byU32; + LZ4_prepareTable(ctx, srcSize, tableType); + return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, 0, notLimited, tableType, noDict, noDictIssue, acceleration); + } + } else { + if (srcSize < LZ4_64Klimit) { + const tableType_t tableType = byU16; + LZ4_prepareTable(ctx, srcSize, tableType); + if (ctx->currentOffset) { + return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, dstCapacity, limitedOutput, tableType, noDict, dictSmall, acceleration); + } else { + return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, dstCapacity, limitedOutput, tableType, noDict, noDictIssue, acceleration); + } + } else { + const tableType_t tableType = ((sizeof(void*)==4) && ((uptrval)src > LZ4_DISTANCE_MAX)) ? byPtr : byU32; + LZ4_prepareTable(ctx, srcSize, tableType); + return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, dstCapacity, limitedOutput, tableType, noDict, noDictIssue, acceleration); + } + } +} + + +int LZ4_compress_fast(const char* source, char* dest, int inputSize, int maxOutputSize, int acceleration) +{ + int result; +#if (LZ4_HEAPMODE) + LZ4_stream_t* ctxPtr = ALLOC(sizeof(LZ4_stream_t)); /* malloc-calloc always properly aligned */ + if (ctxPtr == NULL) return 0; +#else + LZ4_stream_t ctx; + LZ4_stream_t* const ctxPtr = &ctx; +#endif + result = LZ4_compress_fast_extState(ctxPtr, source, dest, inputSize, maxOutputSize, acceleration); + +#if (LZ4_HEAPMODE) + FREEMEM(ctxPtr); +#endif + return result; +} + + +int LZ4_compress_default(const char* src, char* dst, int srcSize, int maxOutputSize) +{ + return LZ4_compress_fast(src, dst, srcSize, maxOutputSize, 1); +} + + +/* Note!: This function leaves the stream in an unclean/broken state! + * It is not safe to subsequently use the same state with a _fastReset() or + * _continue() call without resetting it. */ +static int LZ4_compress_destSize_extState (LZ4_stream_t* state, const char* src, char* dst, int* srcSizePtr, int targetDstSize) +{ + void* const s = LZ4_initStream(state, sizeof (*state)); + assert(s != NULL); (void)s; + + if (targetDstSize >= LZ4_compressBound(*srcSizePtr)) { /* compression success is guaranteed */ + return LZ4_compress_fast_extState(state, src, dst, *srcSizePtr, targetDstSize, 1); + } else { + if (*srcSizePtr < LZ4_64Klimit) { + return LZ4_compress_generic(&state->internal_donotuse, src, dst, *srcSizePtr, srcSizePtr, targetDstSize, fillOutput, byU16, noDict, noDictIssue, 1); + } else { + tableType_t const addrMode = ((sizeof(void*)==4) && ((uptrval)src > LZ4_DISTANCE_MAX)) ? byPtr : byU32; + return LZ4_compress_generic(&state->internal_donotuse, src, dst, *srcSizePtr, srcSizePtr, targetDstSize, fillOutput, addrMode, noDict, noDictIssue, 1); + } } +} + + +int LZ4_compress_destSize(const char* src, char* dst, int* srcSizePtr, int targetDstSize) +{ +#if (LZ4_HEAPMODE) + LZ4_stream_t* ctx = (LZ4_stream_t*)ALLOC(sizeof(LZ4_stream_t)); /* malloc-calloc always properly aligned */ + if (ctx == NULL) return 0; +#else + LZ4_stream_t ctxBody; + LZ4_stream_t* ctx = &ctxBody; +#endif + + int result = LZ4_compress_destSize_extState(ctx, src, dst, srcSizePtr, targetDstSize); + +#if (LZ4_HEAPMODE) + FREEMEM(ctx); +#endif + return result; +} + + + +/*-****************************** +* Streaming functions +********************************/ + +LZ4_stream_t* LZ4_createStream(void) +{ + LZ4_stream_t* const lz4s = (LZ4_stream_t*)ALLOC(sizeof(LZ4_stream_t)); + LZ4_STATIC_ASSERT(LZ4_STREAMSIZE >= sizeof(LZ4_stream_t_internal)); /* A compilation error here means LZ4_STREAMSIZE is not large enough */ + DEBUGLOG(4, "LZ4_createStream %p", lz4s); + if (lz4s == NULL) return NULL; + LZ4_initStream(lz4s, sizeof(*lz4s)); + return lz4s; +} + +static size_t LZ4_stream_t_alignment(void) +{ +#if LZ4_ALIGN_TEST + typedef struct { char c; LZ4_stream_t t; } t_a; + return sizeof(t_a) - sizeof(LZ4_stream_t); +#else + return 1; /* effectively disabled */ +#endif +} + +LZ4_stream_t* LZ4_initStream (void* buffer, size_t size) +{ + DEBUGLOG(5, "LZ4_initStream"); + if (buffer == NULL) { return NULL; } + if (size < sizeof(LZ4_stream_t)) { return NULL; } + if (!LZ4_isAligned(buffer, LZ4_stream_t_alignment())) return NULL; + MEM_INIT(buffer, 0, sizeof(LZ4_stream_t_internal)); + return (LZ4_stream_t*)buffer; +} + +/* resetStream is now deprecated, + * prefer initStream() which is more general */ +void LZ4_resetStream (LZ4_stream_t* LZ4_stream) +{ + DEBUGLOG(5, "LZ4_resetStream (ctx:%p)", LZ4_stream); + MEM_INIT(LZ4_stream, 0, sizeof(LZ4_stream_t_internal)); +} + +void LZ4_resetStream_fast(LZ4_stream_t* ctx) { + LZ4_prepareTable(&(ctx->internal_donotuse), 0, byU32); +} + +int LZ4_freeStream (LZ4_stream_t* LZ4_stream) +{ + if (!LZ4_stream) return 0; /* support free on NULL */ + DEBUGLOG(5, "LZ4_freeStream %p", LZ4_stream); + FREEMEM(LZ4_stream); + return (0); +} + + +#define HASH_UNIT sizeof(reg_t) +int LZ4_loadDict (LZ4_stream_t* LZ4_dict, const char* dictionary, int dictSize) +{ + LZ4_stream_t_internal* dict = &LZ4_dict->internal_donotuse; + const tableType_t tableType = byU32; + const BYTE* p = (const BYTE*)dictionary; + const BYTE* const dictEnd = p + dictSize; + const BYTE* base; + + DEBUGLOG(4, "LZ4_loadDict (%i bytes from %p into %p)", dictSize, dictionary, LZ4_dict); + + /* It's necessary to reset the context, + * and not just continue it with prepareTable() + * to avoid any risk of generating overflowing matchIndex + * when compressing using this dictionary */ + LZ4_resetStream(LZ4_dict); + + /* We always increment the offset by 64 KB, since, if the dict is longer, + * we truncate it to the last 64k, and if it's shorter, we still want to + * advance by a whole window length so we can provide the guarantee that + * there are only valid offsets in the window, which allows an optimization + * in LZ4_compress_fast_continue() where it uses noDictIssue even when the + * dictionary isn't a full 64k. */ + dict->currentOffset += 64 KB; + + if (dictSize < (int)HASH_UNIT) { + return 0; + } + + if ((dictEnd - p) > 64 KB) p = dictEnd - 64 KB; + base = dictEnd - dict->currentOffset; + dict->dictionary = p; + dict->dictSize = (U32)(dictEnd - p); + dict->tableType = (U32)tableType; + + while (p <= dictEnd-HASH_UNIT) { + LZ4_putPosition(p, dict->hashTable, tableType, base); + p+=3; + } + + return (int)dict->dictSize; +} + +void LZ4_attach_dictionary(LZ4_stream_t* workingStream, const LZ4_stream_t* dictionaryStream) { + const LZ4_stream_t_internal* dictCtx = dictionaryStream == NULL ? NULL : + &(dictionaryStream->internal_donotuse); + + DEBUGLOG(4, "LZ4_attach_dictionary (%p, %p, size %u)", + workingStream, dictionaryStream, + dictCtx != NULL ? dictCtx->dictSize : 0); + + if (dictCtx != NULL) { + /* If the current offset is zero, we will never look in the + * external dictionary context, since there is no value a table + * entry can take that indicate a miss. In that case, we need + * to bump the offset to something non-zero. + */ + if (workingStream->internal_donotuse.currentOffset == 0) { + workingStream->internal_donotuse.currentOffset = 64 KB; + } + + /* Don't actually attach an empty dictionary. + */ + if (dictCtx->dictSize == 0) { + dictCtx = NULL; + } + } + workingStream->internal_donotuse.dictCtx = dictCtx; +} + + +static void LZ4_renormDictT(LZ4_stream_t_internal* LZ4_dict, int nextSize) +{ + assert(nextSize >= 0); + if (LZ4_dict->currentOffset + (unsigned)nextSize > 0x80000000) { /* potential ptrdiff_t overflow (32-bits mode) */ + /* rescale hash table */ + U32 const delta = LZ4_dict->currentOffset - 64 KB; + const BYTE* dictEnd = LZ4_dict->dictionary + LZ4_dict->dictSize; + int i; + DEBUGLOG(4, "LZ4_renormDictT"); + for (i=0; ihashTable[i] < delta) LZ4_dict->hashTable[i]=0; + else LZ4_dict->hashTable[i] -= delta; + } + LZ4_dict->currentOffset = 64 KB; + if (LZ4_dict->dictSize > 64 KB) LZ4_dict->dictSize = 64 KB; + LZ4_dict->dictionary = dictEnd - LZ4_dict->dictSize; + } +} + + +int LZ4_compress_fast_continue (LZ4_stream_t* LZ4_stream, + const char* source, char* dest, + int inputSize, int maxOutputSize, + int acceleration) +{ + const tableType_t tableType = byU32; + LZ4_stream_t_internal* streamPtr = &LZ4_stream->internal_donotuse; + const BYTE* dictEnd = streamPtr->dictionary + streamPtr->dictSize; + + DEBUGLOG(5, "LZ4_compress_fast_continue (inputSize=%i)", inputSize); + + LZ4_renormDictT(streamPtr, inputSize); /* avoid index overflow */ + if (acceleration < 1) acceleration = LZ4_ACCELERATION_DEFAULT; + if (acceleration > LZ4_ACCELERATION_MAX) acceleration = LZ4_ACCELERATION_MAX; + + /* invalidate tiny dictionaries */ + if ( (streamPtr->dictSize-1 < 4-1) /* intentional underflow */ + && (dictEnd != (const BYTE*)source) ) { + DEBUGLOG(5, "LZ4_compress_fast_continue: dictSize(%u) at addr:%p is too small", streamPtr->dictSize, streamPtr->dictionary); + streamPtr->dictSize = 0; + streamPtr->dictionary = (const BYTE*)source; + dictEnd = (const BYTE*)source; + } + + /* Check overlapping input/dictionary space */ + { const BYTE* sourceEnd = (const BYTE*) source + inputSize; + if ((sourceEnd > streamPtr->dictionary) && (sourceEnd < dictEnd)) { + streamPtr->dictSize = (U32)(dictEnd - sourceEnd); + if (streamPtr->dictSize > 64 KB) streamPtr->dictSize = 64 KB; + if (streamPtr->dictSize < 4) streamPtr->dictSize = 0; + streamPtr->dictionary = dictEnd - streamPtr->dictSize; + } + } + + /* prefix mode : source data follows dictionary */ + if (dictEnd == (const BYTE*)source) { + if ((streamPtr->dictSize < 64 KB) && (streamPtr->dictSize < streamPtr->currentOffset)) + return LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, withPrefix64k, dictSmall, acceleration); + else + return LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, withPrefix64k, noDictIssue, acceleration); + } + + /* external dictionary mode */ + { int result; + if (streamPtr->dictCtx) { + /* We depend here on the fact that dictCtx'es (produced by + * LZ4_loadDict) guarantee that their tables contain no references + * to offsets between dictCtx->currentOffset - 64 KB and + * dictCtx->currentOffset - dictCtx->dictSize. This makes it safe + * to use noDictIssue even when the dict isn't a full 64 KB. + */ + if (inputSize > 4 KB) { + /* For compressing large blobs, it is faster to pay the setup + * cost to copy the dictionary's tables into the active context, + * so that the compression loop is only looking into one table. + */ + LZ4_memcpy(streamPtr, streamPtr->dictCtx, sizeof(*streamPtr)); + result = LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, usingExtDict, noDictIssue, acceleration); + } else { + result = LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, usingDictCtx, noDictIssue, acceleration); + } + } else { + if ((streamPtr->dictSize < 64 KB) && (streamPtr->dictSize < streamPtr->currentOffset)) { + result = LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, usingExtDict, dictSmall, acceleration); + } else { + result = LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, usingExtDict, noDictIssue, acceleration); + } + } + streamPtr->dictionary = (const BYTE*)source; + streamPtr->dictSize = (U32)inputSize; + return result; + } +} + + +/* Hidden debug function, to force-test external dictionary mode */ +int LZ4_compress_forceExtDict (LZ4_stream_t* LZ4_dict, const char* source, char* dest, int srcSize) +{ + LZ4_stream_t_internal* streamPtr = &LZ4_dict->internal_donotuse; + int result; + + LZ4_renormDictT(streamPtr, srcSize); + + if ((streamPtr->dictSize < 64 KB) && (streamPtr->dictSize < streamPtr->currentOffset)) { + result = LZ4_compress_generic(streamPtr, source, dest, srcSize, NULL, 0, notLimited, byU32, usingExtDict, dictSmall, 1); + } else { + result = LZ4_compress_generic(streamPtr, source, dest, srcSize, NULL, 0, notLimited, byU32, usingExtDict, noDictIssue, 1); + } + + streamPtr->dictionary = (const BYTE*)source; + streamPtr->dictSize = (U32)srcSize; + + return result; +} + + +/*! LZ4_saveDict() : + * If previously compressed data block is not guaranteed to remain available at its memory location, + * save it into a safer place (char* safeBuffer). + * Note : you don't need to call LZ4_loadDict() afterwards, + * dictionary is immediately usable, you can therefore call LZ4_compress_fast_continue(). + * Return : saved dictionary size in bytes (necessarily <= dictSize), or 0 if error. + */ +int LZ4_saveDict (LZ4_stream_t* LZ4_dict, char* safeBuffer, int dictSize) +{ + LZ4_stream_t_internal* const dict = &LZ4_dict->internal_donotuse; + const BYTE* const previousDictEnd = dict->dictionary + dict->dictSize; + + if ((U32)dictSize > 64 KB) { dictSize = 64 KB; } /* useless to define a dictionary > 64 KB */ + if ((U32)dictSize > dict->dictSize) { dictSize = (int)dict->dictSize; } + + if (safeBuffer == NULL) assert(dictSize == 0); + if (dictSize > 0) + memmove(safeBuffer, previousDictEnd - dictSize, dictSize); + + dict->dictionary = (const BYTE*)safeBuffer; + dict->dictSize = (U32)dictSize; + + return dictSize; +} + + + +/*-******************************* + * Decompression functions + ********************************/ + +typedef enum { endOnOutputSize = 0, endOnInputSize = 1 } endCondition_directive; +typedef enum { decode_full_block = 0, partial_decode = 1 } earlyEnd_directive; + +#undef MIN +#define MIN(a,b) ( (a) < (b) ? (a) : (b) ) + +/* Read the variable-length literal or match length. + * + * ip - pointer to use as input. + * lencheck - end ip. Return an error if ip advances >= lencheck. + * loop_check - check ip >= lencheck in body of loop. Returns loop_error if so. + * initial_check - check ip >= lencheck before start of loop. Returns initial_error if so. + * error (output) - error code. Should be set to 0 before call. + */ +typedef enum { loop_error = -2, initial_error = -1, ok = 0 } variable_length_error; +LZ4_FORCE_INLINE unsigned +read_variable_length(const BYTE**ip, const BYTE* lencheck, + int loop_check, int initial_check, + variable_length_error* error) +{ + U32 length = 0; + U32 s; + if (initial_check && unlikely((*ip) >= lencheck)) { /* overflow detection */ + *error = initial_error; + return length; + } + do { + s = **ip; + (*ip)++; + length += s; + if (loop_check && unlikely((*ip) >= lencheck)) { /* overflow detection */ + *error = loop_error; + return length; + } + } while (s==255); + + return length; +} + +/*! LZ4_decompress_generic() : + * This generic decompression function covers all use cases. + * It shall be instantiated several times, using different sets of directives. + * Note that it is important for performance that this function really get inlined, + * in order to remove useless branches during compilation optimization. + */ +LZ4_FORCE_INLINE int +LZ4_decompress_generic( + const char* const src, + char* const dst, + int srcSize, + int outputSize, /* If endOnInput==endOnInputSize, this value is `dstCapacity` */ + + endCondition_directive endOnInput, /* endOnOutputSize, endOnInputSize */ + earlyEnd_directive partialDecoding, /* full, partial */ + dict_directive dict, /* noDict, withPrefix64k, usingExtDict */ + const BYTE* const lowPrefix, /* always <= dst, == dst when no prefix */ + const BYTE* const dictStart, /* only if dict==usingExtDict */ + const size_t dictSize /* note : = 0 if noDict */ + ) +{ + if (src == NULL) { return -1; } + + { const BYTE* ip = (const BYTE*) src; + const BYTE* const iend = ip + srcSize; + + BYTE* op = (BYTE*) dst; + BYTE* const oend = op + outputSize; + BYTE* cpy; + + const BYTE* const dictEnd = (dictStart == NULL) ? NULL : dictStart + dictSize; + + const int safeDecode = (endOnInput==endOnInputSize); + const int checkOffset = ((safeDecode) && (dictSize < (int)(64 KB))); + + + /* Set up the "end" pointers for the shortcut. */ + const BYTE* const shortiend = iend - (endOnInput ? 14 : 8) /*maxLL*/ - 2 /*offset*/; + const BYTE* const shortoend = oend - (endOnInput ? 14 : 8) /*maxLL*/ - 18 /*maxML*/; + + const BYTE* match; + size_t offset; + unsigned token; + size_t length; + + + DEBUGLOG(5, "LZ4_decompress_generic (srcSize:%i, dstSize:%i)", srcSize, outputSize); + + /* Special cases */ + assert(lowPrefix <= op); + if ((endOnInput) && (unlikely(outputSize==0))) { + /* Empty output buffer */ + if (partialDecoding) return 0; + return ((srcSize==1) && (*ip==0)) ? 0 : -1; + } + if ((!endOnInput) && (unlikely(outputSize==0))) { return (*ip==0 ? 1 : -1); } + if ((endOnInput) && unlikely(srcSize==0)) { return -1; } + + /* Currently the fast loop shows a regression on qualcomm arm chips. */ +#if LZ4_FAST_DEC_LOOP + if ((oend - op) < FASTLOOP_SAFE_DISTANCE) { + DEBUGLOG(6, "skip fast decode loop"); + goto safe_decode; + } + + /* Fast loop : decode sequences as long as output < iend-FASTLOOP_SAFE_DISTANCE */ + while (1) { + /* Main fastloop assertion: We can always wildcopy FASTLOOP_SAFE_DISTANCE */ + assert(oend - op >= FASTLOOP_SAFE_DISTANCE); + if (endOnInput) { assert(ip < iend); } + token = *ip++; + length = token >> ML_BITS; /* literal length */ + + assert(!endOnInput || ip <= iend); /* ip < iend before the increment */ + + /* decode literal length */ + if (length == RUN_MASK) { + variable_length_error error = ok; + length += read_variable_length(&ip, iend-RUN_MASK, (int)endOnInput, (int)endOnInput, &error); + if (error == initial_error) { goto _output_error; } + if ((safeDecode) && unlikely((uptrval)(op)+length<(uptrval)(op))) { goto _output_error; } /* overflow detection */ + if ((safeDecode) && unlikely((uptrval)(ip)+length<(uptrval)(ip))) { goto _output_error; } /* overflow detection */ + + /* copy literals */ + cpy = op+length; + LZ4_STATIC_ASSERT(MFLIMIT >= WILDCOPYLENGTH); + if (endOnInput) { /* LZ4_decompress_safe() */ + if ((cpy>oend-32) || (ip+length>iend-32)) { goto safe_literal_copy; } + LZ4_wildCopy32(op, ip, cpy); + } else { /* LZ4_decompress_fast() */ + if (cpy>oend-8) { goto safe_literal_copy; } + LZ4_wildCopy8(op, ip, cpy); /* LZ4_decompress_fast() cannot copy more than 8 bytes at a time : + * it doesn't know input length, and only relies on end-of-block properties */ + } + ip += length; op = cpy; + } else { + cpy = op+length; + if (endOnInput) { /* LZ4_decompress_safe() */ + DEBUGLOG(7, "copy %u bytes in a 16-bytes stripe", (unsigned)length); + /* We don't need to check oend, since we check it once for each loop below */ + if (ip > iend-(16 + 1/*max lit + offset + nextToken*/)) { goto safe_literal_copy; } + /* Literals can only be 14, but hope compilers optimize if we copy by a register size */ + LZ4_memcpy(op, ip, 16); + } else { /* LZ4_decompress_fast() */ + /* LZ4_decompress_fast() cannot copy more than 8 bytes at a time : + * it doesn't know input length, and relies on end-of-block properties */ + LZ4_memcpy(op, ip, 8); + if (length > 8) { LZ4_memcpy(op+8, ip+8, 8); } + } + ip += length; op = cpy; + } + + /* get offset */ + offset = LZ4_readLE16(ip); ip+=2; + match = op - offset; + assert(match <= op); + + /* get matchlength */ + length = token & ML_MASK; + + if (length == ML_MASK) { + variable_length_error error = ok; + if ((checkOffset) && (unlikely(match + dictSize < lowPrefix))) { goto _output_error; } /* Error : offset outside buffers */ + length += read_variable_length(&ip, iend - LASTLITERALS + 1, (int)endOnInput, 0, &error); + if (error != ok) { goto _output_error; } + if ((safeDecode) && unlikely((uptrval)(op)+length<(uptrval)op)) { goto _output_error; } /* overflow detection */ + length += MINMATCH; + if (op + length >= oend - FASTLOOP_SAFE_DISTANCE) { + goto safe_match_copy; + } + } else { + length += MINMATCH; + if (op + length >= oend - FASTLOOP_SAFE_DISTANCE) { + goto safe_match_copy; + } + + /* Fastpath check: Avoids a branch in LZ4_wildCopy32 if true */ + if ((dict == withPrefix64k) || (match >= lowPrefix)) { + if (offset >= 8) { + assert(match >= lowPrefix); + assert(match <= op); + assert(op + 18 <= oend); + + LZ4_memcpy(op, match, 8); + LZ4_memcpy(op+8, match+8, 8); + LZ4_memcpy(op+16, match+16, 2); + op += length; + continue; + } } } + + if (checkOffset && (unlikely(match + dictSize < lowPrefix))) { goto _output_error; } /* Error : offset outside buffers */ + /* match starting within external dictionary */ + if ((dict==usingExtDict) && (match < lowPrefix)) { + if (unlikely(op+length > oend-LASTLITERALS)) { + if (partialDecoding) { + DEBUGLOG(7, "partialDecoding: dictionary match, close to dstEnd"); + length = MIN(length, (size_t)(oend-op)); + } else { + goto _output_error; /* end-of-block condition violated */ + } } + + if (length <= (size_t)(lowPrefix-match)) { + /* match fits entirely within external dictionary : just copy */ + memmove(op, dictEnd - (lowPrefix-match), length); + op += length; + } else { + /* match stretches into both external dictionary and current block */ + size_t const copySize = (size_t)(lowPrefix - match); + size_t const restSize = length - copySize; + LZ4_memcpy(op, dictEnd - copySize, copySize); + op += copySize; + if (restSize > (size_t)(op - lowPrefix)) { /* overlap copy */ + BYTE* const endOfMatch = op + restSize; + const BYTE* copyFrom = lowPrefix; + while (op < endOfMatch) { *op++ = *copyFrom++; } + } else { + LZ4_memcpy(op, lowPrefix, restSize); + op += restSize; + } } + continue; + } + + /* copy match within block */ + cpy = op + length; + + assert((op <= oend) && (oend-op >= 32)); + if (unlikely(offset<16)) { + LZ4_memcpy_using_offset(op, match, cpy, offset); + } else { + LZ4_wildCopy32(op, match, cpy); + } + + op = cpy; /* wildcopy correction */ + } + safe_decode: +#endif + + /* Main Loop : decode remaining sequences where output < FASTLOOP_SAFE_DISTANCE */ + while (1) { + token = *ip++; + length = token >> ML_BITS; /* literal length */ + + assert(!endOnInput || ip <= iend); /* ip < iend before the increment */ + + /* A two-stage shortcut for the most common case: + * 1) If the literal length is 0..14, and there is enough space, + * enter the shortcut and copy 16 bytes on behalf of the literals + * (in the fast mode, only 8 bytes can be safely copied this way). + * 2) Further if the match length is 4..18, copy 18 bytes in a similar + * manner; but we ensure that there's enough space in the output for + * those 18 bytes earlier, upon entering the shortcut (in other words, + * there is a combined check for both stages). + */ + if ( (endOnInput ? length != RUN_MASK : length <= 8) + /* strictly "less than" on input, to re-enter the loop with at least one byte */ + && likely((endOnInput ? ip < shortiend : 1) & (op <= shortoend)) ) { + /* Copy the literals */ + LZ4_memcpy(op, ip, endOnInput ? 16 : 8); + op += length; ip += length; + + /* The second stage: prepare for match copying, decode full info. + * If it doesn't work out, the info won't be wasted. */ + length = token & ML_MASK; /* match length */ + offset = LZ4_readLE16(ip); ip += 2; + match = op - offset; + assert(match <= op); /* check overflow */ + + /* Do not deal with overlapping matches. */ + if ( (length != ML_MASK) + && (offset >= 8) + && (dict==withPrefix64k || match >= lowPrefix) ) { + /* Copy the match. */ + LZ4_memcpy(op + 0, match + 0, 8); + LZ4_memcpy(op + 8, match + 8, 8); + LZ4_memcpy(op +16, match +16, 2); + op += length + MINMATCH; + /* Both stages worked, load the next token. */ + continue; + } + + /* The second stage didn't work out, but the info is ready. + * Propel it right to the point of match copying. */ + goto _copy_match; + } + + /* decode literal length */ + if (length == RUN_MASK) { + variable_length_error error = ok; + length += read_variable_length(&ip, iend-RUN_MASK, (int)endOnInput, (int)endOnInput, &error); + if (error == initial_error) { goto _output_error; } + if ((safeDecode) && unlikely((uptrval)(op)+length<(uptrval)(op))) { goto _output_error; } /* overflow detection */ + if ((safeDecode) && unlikely((uptrval)(ip)+length<(uptrval)(ip))) { goto _output_error; } /* overflow detection */ + } + + /* copy literals */ + cpy = op+length; +#if LZ4_FAST_DEC_LOOP + safe_literal_copy: +#endif + LZ4_STATIC_ASSERT(MFLIMIT >= WILDCOPYLENGTH); + if ( ((endOnInput) && ((cpy>oend-MFLIMIT) || (ip+length>iend-(2+1+LASTLITERALS))) ) + || ((!endOnInput) && (cpy>oend-WILDCOPYLENGTH)) ) + { + /* We've either hit the input parsing restriction or the output parsing restriction. + * In the normal scenario, decoding a full block, it must be the last sequence, + * otherwise it's an error (invalid input or dimensions). + * In partialDecoding scenario, it's necessary to ensure there is no buffer overflow. + */ + if (partialDecoding) { + /* Since we are partial decoding we may be in this block because of the output parsing + * restriction, which is not valid since the output buffer is allowed to be undersized. + */ + assert(endOnInput); + DEBUGLOG(7, "partialDecoding: copying literals, close to input or output end") + DEBUGLOG(7, "partialDecoding: literal length = %u", (unsigned)length); + DEBUGLOG(7, "partialDecoding: remaining space in dstBuffer : %i", (int)(oend - op)); + DEBUGLOG(7, "partialDecoding: remaining space in srcBuffer : %i", (int)(iend - ip)); + /* Finishing in the middle of a literals segment, + * due to lack of input. + */ + if (ip+length > iend) { + length = (size_t)(iend-ip); + cpy = op + length; + } + /* Finishing in the middle of a literals segment, + * due to lack of output space. + */ + if (cpy > oend) { + cpy = oend; + assert(op<=oend); + length = (size_t)(oend-op); + } + } else { + /* We must be on the last sequence because of the parsing limitations so check + * that we exactly regenerate the original size (must be exact when !endOnInput). + */ + if ((!endOnInput) && (cpy != oend)) { goto _output_error; } + /* We must be on the last sequence (or invalid) because of the parsing limitations + * so check that we exactly consume the input and don't overrun the output buffer. + */ + if ((endOnInput) && ((ip+length != iend) || (cpy > oend))) { + DEBUGLOG(6, "should have been last run of literals") + DEBUGLOG(6, "ip(%p) + length(%i) = %p != iend (%p)", ip, (int)length, ip+length, iend); + DEBUGLOG(6, "or cpy(%p) > oend(%p)", cpy, oend); + goto _output_error; + } + } + memmove(op, ip, length); /* supports overlapping memory regions; only matters for in-place decompression scenarios */ + ip += length; + op += length; + /* Necessarily EOF when !partialDecoding. + * When partialDecoding, it is EOF if we've either + * filled the output buffer or + * can't proceed with reading an offset for following match. + */ + if (!partialDecoding || (cpy == oend) || (ip >= (iend-2))) { + break; + } + } else { + LZ4_wildCopy8(op, ip, cpy); /* may overwrite up to WILDCOPYLENGTH beyond cpy */ + ip += length; op = cpy; + } + + /* get offset */ + offset = LZ4_readLE16(ip); ip+=2; + match = op - offset; + + /* get matchlength */ + length = token & ML_MASK; + + _copy_match: + if (length == ML_MASK) { + variable_length_error error = ok; + length += read_variable_length(&ip, iend - LASTLITERALS + 1, (int)endOnInput, 0, &error); + if (error != ok) goto _output_error; + if ((safeDecode) && unlikely((uptrval)(op)+length<(uptrval)op)) goto _output_error; /* overflow detection */ + } + length += MINMATCH; + +#if LZ4_FAST_DEC_LOOP + safe_match_copy: +#endif + if ((checkOffset) && (unlikely(match + dictSize < lowPrefix))) goto _output_error; /* Error : offset outside buffers */ + /* match starting within external dictionary */ + if ((dict==usingExtDict) && (match < lowPrefix)) { + if (unlikely(op+length > oend-LASTLITERALS)) { + if (partialDecoding) length = MIN(length, (size_t)(oend-op)); + else goto _output_error; /* doesn't respect parsing restriction */ + } + + if (length <= (size_t)(lowPrefix-match)) { + /* match fits entirely within external dictionary : just copy */ + memmove(op, dictEnd - (lowPrefix-match), length); + op += length; + } else { + /* match stretches into both external dictionary and current block */ + size_t const copySize = (size_t)(lowPrefix - match); + size_t const restSize = length - copySize; + LZ4_memcpy(op, dictEnd - copySize, copySize); + op += copySize; + if (restSize > (size_t)(op - lowPrefix)) { /* overlap copy */ + BYTE* const endOfMatch = op + restSize; + const BYTE* copyFrom = lowPrefix; + while (op < endOfMatch) *op++ = *copyFrom++; + } else { + LZ4_memcpy(op, lowPrefix, restSize); + op += restSize; + } } + continue; + } + assert(match >= lowPrefix); + + /* copy match within block */ + cpy = op + length; + + /* partialDecoding : may end anywhere within the block */ + assert(op<=oend); + if (partialDecoding && (cpy > oend-MATCH_SAFEGUARD_DISTANCE)) { + size_t const mlen = MIN(length, (size_t)(oend-op)); + const BYTE* const matchEnd = match + mlen; + BYTE* const copyEnd = op + mlen; + if (matchEnd > op) { /* overlap copy */ + while (op < copyEnd) { *op++ = *match++; } + } else { + LZ4_memcpy(op, match, mlen); + } + op = copyEnd; + if (op == oend) { break; } + continue; + } + + if (unlikely(offset<8)) { + LZ4_write32(op, 0); /* silence msan warning when offset==0 */ + op[0] = match[0]; + op[1] = match[1]; + op[2] = match[2]; + op[3] = match[3]; + match += inc32table[offset]; + LZ4_memcpy(op+4, match, 4); + match -= dec64table[offset]; + } else { + LZ4_memcpy(op, match, 8); + match += 8; + } + op += 8; + + if (unlikely(cpy > oend-MATCH_SAFEGUARD_DISTANCE)) { + BYTE* const oCopyLimit = oend - (WILDCOPYLENGTH-1); + if (cpy > oend-LASTLITERALS) { goto _output_error; } /* Error : last LASTLITERALS bytes must be literals (uncompressed) */ + if (op < oCopyLimit) { + LZ4_wildCopy8(op, match, oCopyLimit); + match += oCopyLimit - op; + op = oCopyLimit; + } + while (op < cpy) { *op++ = *match++; } + } else { + LZ4_memcpy(op, match, 8); + if (length > 16) { LZ4_wildCopy8(op+8, match+8, cpy); } + } + op = cpy; /* wildcopy correction */ + } + + /* end of decoding */ + if (endOnInput) { + DEBUGLOG(5, "decoded %i bytes", (int) (((char*)op)-dst)); + return (int) (((char*)op)-dst); /* Nb of output bytes decoded */ + } else { + return (int) (((const char*)ip)-src); /* Nb of input bytes read */ + } + + /* Overflow error detected */ + _output_error: + return (int) (-(((const char*)ip)-src))-1; + } +} + + +/*===== Instantiate the API decoding functions. =====*/ + +LZ4_FORCE_O2 +int LZ4_decompress_safe(const char* source, char* dest, int compressedSize, int maxDecompressedSize) +{ + return LZ4_decompress_generic(source, dest, compressedSize, maxDecompressedSize, + endOnInputSize, decode_full_block, noDict, + (BYTE*)dest, NULL, 0); +} + +LZ4_FORCE_O2 +int LZ4_decompress_safe_partial(const char* src, char* dst, int compressedSize, int targetOutputSize, int dstCapacity) +{ + dstCapacity = MIN(targetOutputSize, dstCapacity); + return LZ4_decompress_generic(src, dst, compressedSize, dstCapacity, + endOnInputSize, partial_decode, + noDict, (BYTE*)dst, NULL, 0); +} + +LZ4_FORCE_O2 +int LZ4_decompress_fast(const char* source, char* dest, int originalSize) +{ + return LZ4_decompress_generic(source, dest, 0, originalSize, + endOnOutputSize, decode_full_block, withPrefix64k, + (BYTE*)dest - 64 KB, NULL, 0); +} + +/*===== Instantiate a few more decoding cases, used more than once. =====*/ + +LZ4_FORCE_O2 /* Exported, an obsolete API function. */ +int LZ4_decompress_safe_withPrefix64k(const char* source, char* dest, int compressedSize, int maxOutputSize) +{ + return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, + endOnInputSize, decode_full_block, withPrefix64k, + (BYTE*)dest - 64 KB, NULL, 0); +} + +/* Another obsolete API function, paired with the previous one. */ +int LZ4_decompress_fast_withPrefix64k(const char* source, char* dest, int originalSize) +{ + /* LZ4_decompress_fast doesn't validate match offsets, + * and thus serves well with any prefixed dictionary. */ + return LZ4_decompress_fast(source, dest, originalSize); +} + +LZ4_FORCE_O2 +static int LZ4_decompress_safe_withSmallPrefix(const char* source, char* dest, int compressedSize, int maxOutputSize, + size_t prefixSize) +{ + return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, + endOnInputSize, decode_full_block, noDict, + (BYTE*)dest-prefixSize, NULL, 0); +} + +LZ4_FORCE_O2 +int LZ4_decompress_safe_forceExtDict(const char* source, char* dest, + int compressedSize, int maxOutputSize, + const void* dictStart, size_t dictSize) +{ + return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, + endOnInputSize, decode_full_block, usingExtDict, + (BYTE*)dest, (const BYTE*)dictStart, dictSize); +} + +LZ4_FORCE_O2 +static int LZ4_decompress_fast_extDict(const char* source, char* dest, int originalSize, + const void* dictStart, size_t dictSize) +{ + return LZ4_decompress_generic(source, dest, 0, originalSize, + endOnOutputSize, decode_full_block, usingExtDict, + (BYTE*)dest, (const BYTE*)dictStart, dictSize); +} + +/* The "double dictionary" mode, for use with e.g. ring buffers: the first part + * of the dictionary is passed as prefix, and the second via dictStart + dictSize. + * These routines are used only once, in LZ4_decompress_*_continue(). + */ +LZ4_FORCE_INLINE +int LZ4_decompress_safe_doubleDict(const char* source, char* dest, int compressedSize, int maxOutputSize, + size_t prefixSize, const void* dictStart, size_t dictSize) +{ + return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, + endOnInputSize, decode_full_block, usingExtDict, + (BYTE*)dest-prefixSize, (const BYTE*)dictStart, dictSize); +} + +LZ4_FORCE_INLINE +int LZ4_decompress_fast_doubleDict(const char* source, char* dest, int originalSize, + size_t prefixSize, const void* dictStart, size_t dictSize) +{ + return LZ4_decompress_generic(source, dest, 0, originalSize, + endOnOutputSize, decode_full_block, usingExtDict, + (BYTE*)dest-prefixSize, (const BYTE*)dictStart, dictSize); +} + +/*===== streaming decompression functions =====*/ + +LZ4_streamDecode_t* LZ4_createStreamDecode(void) +{ + LZ4_streamDecode_t* lz4s = (LZ4_streamDecode_t*) ALLOC_AND_ZERO(sizeof(LZ4_streamDecode_t)); + LZ4_STATIC_ASSERT(LZ4_STREAMDECODESIZE >= sizeof(LZ4_streamDecode_t_internal)); /* A compilation error here means LZ4_STREAMDECODESIZE is not large enough */ + return lz4s; +} + +int LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream) +{ + if (LZ4_stream == NULL) { return 0; } /* support free on NULL */ + FREEMEM(LZ4_stream); + return 0; +} + +/*! LZ4_setStreamDecode() : + * Use this function to instruct where to find the dictionary. + * This function is not necessary if previous data is still available where it was decoded. + * Loading a size of 0 is allowed (same effect as no dictionary). + * @return : 1 if OK, 0 if error + */ +int LZ4_setStreamDecode (LZ4_streamDecode_t* LZ4_streamDecode, const char* dictionary, int dictSize) +{ + LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse; + lz4sd->prefixSize = (size_t) dictSize; + lz4sd->prefixEnd = (const BYTE*) dictionary + dictSize; + lz4sd->externalDict = NULL; + lz4sd->extDictSize = 0; + return 1; +} + +/*! LZ4_decoderRingBufferSize() : + * when setting a ring buffer for streaming decompression (optional scenario), + * provides the minimum size of this ring buffer + * to be compatible with any source respecting maxBlockSize condition. + * Note : in a ring buffer scenario, + * blocks are presumed decompressed next to each other. + * When not enough space remains for next block (remainingSize < maxBlockSize), + * decoding resumes from beginning of ring buffer. + * @return : minimum ring buffer size, + * or 0 if there is an error (invalid maxBlockSize). + */ +int LZ4_decoderRingBufferSize(int maxBlockSize) +{ + if (maxBlockSize < 0) return 0; + if (maxBlockSize > LZ4_MAX_INPUT_SIZE) return 0; + if (maxBlockSize < 16) maxBlockSize = 16; + return LZ4_DECODER_RING_BUFFER_SIZE(maxBlockSize); +} + +/* +*_continue() : + These decoding functions allow decompression of multiple blocks in "streaming" mode. + Previously decoded blocks must still be available at the memory position where they were decoded. + If it's not possible, save the relevant part of decoded data into a safe buffer, + and indicate where it stands using LZ4_setStreamDecode() +*/ +LZ4_FORCE_O2 +int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int compressedSize, int maxOutputSize) +{ + LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse; + int result; + + if (lz4sd->prefixSize == 0) { + /* The first call, no dictionary yet. */ + assert(lz4sd->extDictSize == 0); + result = LZ4_decompress_safe(source, dest, compressedSize, maxOutputSize); + if (result <= 0) return result; + lz4sd->prefixSize = (size_t)result; + lz4sd->prefixEnd = (BYTE*)dest + result; + } else if (lz4sd->prefixEnd == (BYTE*)dest) { + /* They're rolling the current segment. */ + if (lz4sd->prefixSize >= 64 KB - 1) + result = LZ4_decompress_safe_withPrefix64k(source, dest, compressedSize, maxOutputSize); + else if (lz4sd->extDictSize == 0) + result = LZ4_decompress_safe_withSmallPrefix(source, dest, compressedSize, maxOutputSize, + lz4sd->prefixSize); + else + result = LZ4_decompress_safe_doubleDict(source, dest, compressedSize, maxOutputSize, + lz4sd->prefixSize, lz4sd->externalDict, lz4sd->extDictSize); + if (result <= 0) return result; + lz4sd->prefixSize += (size_t)result; + lz4sd->prefixEnd += result; + } else { + /* The buffer wraps around, or they're switching to another buffer. */ + lz4sd->extDictSize = lz4sd->prefixSize; + lz4sd->externalDict = lz4sd->prefixEnd - lz4sd->extDictSize; + result = LZ4_decompress_safe_forceExtDict(source, dest, compressedSize, maxOutputSize, + lz4sd->externalDict, lz4sd->extDictSize); + if (result <= 0) return result; + lz4sd->prefixSize = (size_t)result; + lz4sd->prefixEnd = (BYTE*)dest + result; + } + + return result; +} + +LZ4_FORCE_O2 +int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int originalSize) +{ + LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse; + int result; + assert(originalSize >= 0); + + if (lz4sd->prefixSize == 0) { + assert(lz4sd->extDictSize == 0); + result = LZ4_decompress_fast(source, dest, originalSize); + if (result <= 0) return result; + lz4sd->prefixSize = (size_t)originalSize; + lz4sd->prefixEnd = (BYTE*)dest + originalSize; + } else if (lz4sd->prefixEnd == (BYTE*)dest) { + if (lz4sd->prefixSize >= 64 KB - 1 || lz4sd->extDictSize == 0) + result = LZ4_decompress_fast(source, dest, originalSize); + else + result = LZ4_decompress_fast_doubleDict(source, dest, originalSize, + lz4sd->prefixSize, lz4sd->externalDict, lz4sd->extDictSize); + if (result <= 0) return result; + lz4sd->prefixSize += (size_t)originalSize; + lz4sd->prefixEnd += originalSize; + } else { + lz4sd->extDictSize = lz4sd->prefixSize; + lz4sd->externalDict = lz4sd->prefixEnd - lz4sd->extDictSize; + result = LZ4_decompress_fast_extDict(source, dest, originalSize, + lz4sd->externalDict, lz4sd->extDictSize); + if (result <= 0) return result; + lz4sd->prefixSize = (size_t)originalSize; + lz4sd->prefixEnd = (BYTE*)dest + originalSize; + } + + return result; +} + + +/* +Advanced decoding functions : +*_usingDict() : + These decoding functions work the same as "_continue" ones, + the dictionary must be explicitly provided within parameters +*/ + +int LZ4_decompress_safe_usingDict(const char* source, char* dest, int compressedSize, int maxOutputSize, const char* dictStart, int dictSize) +{ + if (dictSize==0) + return LZ4_decompress_safe(source, dest, compressedSize, maxOutputSize); + if (dictStart+dictSize == dest) { + if (dictSize >= 64 KB - 1) { + return LZ4_decompress_safe_withPrefix64k(source, dest, compressedSize, maxOutputSize); + } + assert(dictSize >= 0); + return LZ4_decompress_safe_withSmallPrefix(source, dest, compressedSize, maxOutputSize, (size_t)dictSize); + } + assert(dictSize >= 0); + return LZ4_decompress_safe_forceExtDict(source, dest, compressedSize, maxOutputSize, dictStart, (size_t)dictSize); +} + +int LZ4_decompress_fast_usingDict(const char* source, char* dest, int originalSize, const char* dictStart, int dictSize) +{ + if (dictSize==0 || dictStart+dictSize == dest) + return LZ4_decompress_fast(source, dest, originalSize); + assert(dictSize >= 0); + return LZ4_decompress_fast_extDict(source, dest, originalSize, dictStart, (size_t)dictSize); +} + + +/*=************************************************* +* Obsolete Functions +***************************************************/ +/* obsolete compression functions */ +int LZ4_compress_limitedOutput(const char* source, char* dest, int inputSize, int maxOutputSize) +{ + return LZ4_compress_default(source, dest, inputSize, maxOutputSize); +} +int LZ4_compress(const char* src, char* dest, int srcSize) +{ + return LZ4_compress_default(src, dest, srcSize, LZ4_compressBound(srcSize)); +} +int LZ4_compress_limitedOutput_withState (void* state, const char* src, char* dst, int srcSize, int dstSize) +{ + return LZ4_compress_fast_extState(state, src, dst, srcSize, dstSize, 1); +} +int LZ4_compress_withState (void* state, const char* src, char* dst, int srcSize) +{ + return LZ4_compress_fast_extState(state, src, dst, srcSize, LZ4_compressBound(srcSize), 1); +} +int LZ4_compress_limitedOutput_continue (LZ4_stream_t* LZ4_stream, const char* src, char* dst, int srcSize, int dstCapacity) +{ + return LZ4_compress_fast_continue(LZ4_stream, src, dst, srcSize, dstCapacity, 1); +} +int LZ4_compress_continue (LZ4_stream_t* LZ4_stream, const char* source, char* dest, int inputSize) +{ + return LZ4_compress_fast_continue(LZ4_stream, source, dest, inputSize, LZ4_compressBound(inputSize), 1); +} + +/* +These decompression functions are deprecated and should no longer be used. +They are only provided here for compatibility with older user programs. +- LZ4_uncompress is totally equivalent to LZ4_decompress_fast +- LZ4_uncompress_unknownOutputSize is totally equivalent to LZ4_decompress_safe +*/ +int LZ4_uncompress (const char* source, char* dest, int outputSize) +{ + return LZ4_decompress_fast(source, dest, outputSize); +} +int LZ4_uncompress_unknownOutputSize (const char* source, char* dest, int isize, int maxOutputSize) +{ + return LZ4_decompress_safe(source, dest, isize, maxOutputSize); +} + +/* Obsolete Streaming functions */ + +int LZ4_sizeofStreamState(void) { return LZ4_STREAMSIZE; } + +int LZ4_resetStreamState(void* state, char* inputBuffer) +{ + (void)inputBuffer; + LZ4_resetStream((LZ4_stream_t*)state); + return 0; +} + +void* LZ4_create (char* inputBuffer) +{ + (void)inputBuffer; + return LZ4_createStream(); +} + +char* LZ4_slideInputBuffer (void* state) +{ + /* avoid const char * -> char * conversion warning */ + return (char *)(uptrval)((LZ4_stream_t*)state)->internal_donotuse.dictionary; +} + +#endif /* LZ4_COMMONDEFS_ONLY */ +/* + LZ4 HC - High Compression Mode of LZ4 + Copyright (C) 2011-2017, Yann Collet. + + BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + You can contact the author at : + - LZ4 source repository : https://github.com/lz4/lz4 + - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c +*/ +/* note : lz4hc is not an independent module, it requires lz4.h/lz4.c for proper compilation */ + + +/* ************************************* +* Tuning Parameter +***************************************/ + +/*! HEAPMODE : + * Select how default compression function will allocate workplace memory, + * in stack (0:fastest), or in heap (1:requires malloc()). + * Since workplace is rather large, heap mode is recommended. + */ +#ifndef LZ4HC_HEAPMODE +# define LZ4HC_HEAPMODE 1 +#endif + + +/*=== Dependency ===*/ +#define LZ4_HC_STATIC_LINKING_ONLY +#include "lz4hc.h" + + +/*=== Common definitions ===*/ +#if defined(__GNUC__) +# pragma GCC diagnostic ignored "-Wunused-function" +#endif +#if defined (__clang__) +# pragma clang diagnostic ignored "-Wunused-function" +#endif + +#define LZ4_COMMONDEFS_ONLY +#ifndef LZ4_SRC_INCLUDED +#include "lz4.c" /* LZ4_count, constants, mem */ +#endif + + +/*=== Enums ===*/ +typedef enum { noDictCtx, usingDictCtxHc } dictCtx_directive; + + +/*=== Constants ===*/ +#define OPTIMAL_ML (int)((ML_MASK-1)+MINMATCH) +#define LZ4_OPT_NUM (1<<12) + + +/*=== Macros ===*/ +#define MIN(a,b) ( (a) < (b) ? (a) : (b) ) +#define MAX(a,b) ( (a) > (b) ? (a) : (b) ) +#define HASH_FUNCTION(i) (((i) * 2654435761U) >> ((MINMATCH*8)-LZ4HC_HASH_LOG)) +#define DELTANEXTMAXD(p) chainTable[(p) & LZ4HC_MAXD_MASK] /* flexible, LZ4HC_MAXD dependent */ +#define DELTANEXTU16(table, pos) table[(U16)(pos)] /* faster */ +/* Make fields passed to, and updated by LZ4HC_encodeSequence explicit */ +#define UPDATABLE(ip, op, anchor) &ip, &op, &anchor + +static U32 LZ4HC_hashPtr(const void* ptr) { return HASH_FUNCTION(LZ4_read32(ptr)); } + + +/************************************** +* HC Compression +**************************************/ +static void LZ4HC_clearTables (LZ4HC_CCtx_internal* hc4) +{ + MEM_INIT(hc4->hashTable, 0, sizeof(hc4->hashTable)); + MEM_INIT(hc4->chainTable, 0xFF, sizeof(hc4->chainTable)); +} + +static void LZ4HC_init_internal (LZ4HC_CCtx_internal* hc4, const BYTE* start) +{ + uptrval startingOffset = (uptrval)(hc4->end - hc4->base); + if (startingOffset > 1 GB) { + LZ4HC_clearTables(hc4); + startingOffset = 0; + } + startingOffset += 64 KB; + hc4->nextToUpdate = (U32) startingOffset; + hc4->base = start - startingOffset; + hc4->end = start; + hc4->dictBase = start - startingOffset; + hc4->dictLimit = (U32) startingOffset; + hc4->lowLimit = (U32) startingOffset; +} + + +/* Update chains up to ip (excluded) */ +LZ4_FORCE_INLINE void LZ4HC_Insert (LZ4HC_CCtx_internal* hc4, const BYTE* ip) +{ + U16* const chainTable = hc4->chainTable; + U32* const hashTable = hc4->hashTable; + const BYTE* const base = hc4->base; + U32 const target = (U32)(ip - base); + U32 idx = hc4->nextToUpdate; + + while (idx < target) { + U32 const h = LZ4HC_hashPtr(base+idx); + size_t delta = idx - hashTable[h]; + if (delta>LZ4_DISTANCE_MAX) delta = LZ4_DISTANCE_MAX; + DELTANEXTU16(chainTable, idx) = (U16)delta; + hashTable[h] = idx; + idx++; + } + + hc4->nextToUpdate = target; +} + +/** LZ4HC_countBack() : + * @return : negative value, nb of common bytes before ip/match */ +LZ4_FORCE_INLINE +int LZ4HC_countBack(const BYTE* const ip, const BYTE* const match, + const BYTE* const iMin, const BYTE* const mMin) +{ + int back = 0; + int const min = (int)MAX(iMin - ip, mMin - match); + assert(min <= 0); + assert(ip >= iMin); assert((size_t)(ip-iMin) < (1U<<31)); + assert(match >= mMin); assert((size_t)(match - mMin) < (1U<<31)); + while ( (back > min) + && (ip[back-1] == match[back-1]) ) + back--; + return back; +} + +#if defined(_MSC_VER) +# define LZ4HC_rotl32(x,r) _rotl(x,r) +#else +# define LZ4HC_rotl32(x,r) ((x << r) | (x >> (32 - r))) +#endif + + +static U32 LZ4HC_rotatePattern(size_t const rotate, U32 const pattern) +{ + size_t const bitsToRotate = (rotate & (sizeof(pattern) - 1)) << 3; + if (bitsToRotate == 0) return pattern; + return LZ4HC_rotl32(pattern, (int)bitsToRotate); +} + +/* LZ4HC_countPattern() : + * pattern32 must be a sample of repetitive pattern of length 1, 2 or 4 (but not 3!) */ +static unsigned +LZ4HC_countPattern(const BYTE* ip, const BYTE* const iEnd, U32 const pattern32) +{ + const BYTE* const iStart = ip; + reg_t const pattern = (sizeof(pattern)==8) ? + (reg_t)pattern32 + (((reg_t)pattern32) << (sizeof(pattern)*4)) : pattern32; + + while (likely(ip < iEnd-(sizeof(pattern)-1))) { + reg_t const diff = LZ4_read_ARCH(ip) ^ pattern; + if (!diff) { ip+=sizeof(pattern); continue; } + ip += LZ4_NbCommonBytes(diff); + return (unsigned)(ip - iStart); + } + + if (LZ4_isLittleEndian()) { + reg_t patternByte = pattern; + while ((ip>= 8; + } + } else { /* big endian */ + U32 bitOffset = (sizeof(pattern)*8) - 8; + while (ip < iEnd) { + BYTE const byte = (BYTE)(pattern >> bitOffset); + if (*ip != byte) break; + ip ++; bitOffset -= 8; + } + } + + return (unsigned)(ip - iStart); +} + +/* LZ4HC_reverseCountPattern() : + * pattern must be a sample of repetitive pattern of length 1, 2 or 4 (but not 3!) + * read using natural platform endianess */ +static unsigned +LZ4HC_reverseCountPattern(const BYTE* ip, const BYTE* const iLow, U32 pattern) +{ + const BYTE* const iStart = ip; + + while (likely(ip >= iLow+4)) { + if (LZ4_read32(ip-4) != pattern) break; + ip -= 4; + } + { const BYTE* bytePtr = (const BYTE*)(&pattern) + 3; /* works for any endianess */ + while (likely(ip>iLow)) { + if (ip[-1] != *bytePtr) break; + ip--; bytePtr--; + } } + return (unsigned)(iStart - ip); +} + +/* LZ4HC_protectDictEnd() : + * Checks if the match is in the last 3 bytes of the dictionary, so reading the + * 4 byte MINMATCH would overflow. + * @returns true if the match index is okay. + */ +static int LZ4HC_protectDictEnd(U32 const dictLimit, U32 const matchIndex) +{ + return ((U32)((dictLimit - 1) - matchIndex) >= 3); +} + +typedef enum { rep_untested, rep_not, rep_confirmed } repeat_state_e; +typedef enum { favorCompressionRatio=0, favorDecompressionSpeed } HCfavor_e; + +LZ4_FORCE_INLINE int +LZ4HC_InsertAndGetWiderMatch ( + LZ4HC_CCtx_internal* hc4, + const BYTE* const ip, + const BYTE* const iLowLimit, + const BYTE* const iHighLimit, + int longest, + const BYTE** matchpos, + const BYTE** startpos, + const int maxNbAttempts, + const int patternAnalysis, + const int chainSwap, + const dictCtx_directive dict, + const HCfavor_e favorDecSpeed) +{ + U16* const chainTable = hc4->chainTable; + U32* const HashTable = hc4->hashTable; + const LZ4HC_CCtx_internal * const dictCtx = hc4->dictCtx; + const BYTE* const base = hc4->base; + const U32 dictLimit = hc4->dictLimit; + const BYTE* const lowPrefixPtr = base + dictLimit; + const U32 ipIndex = (U32)(ip - base); + const U32 lowestMatchIndex = (hc4->lowLimit + (LZ4_DISTANCE_MAX + 1) > ipIndex) ? hc4->lowLimit : ipIndex - LZ4_DISTANCE_MAX; + const BYTE* const dictBase = hc4->dictBase; + int const lookBackLength = (int)(ip-iLowLimit); + int nbAttempts = maxNbAttempts; + U32 matchChainPos = 0; + U32 const pattern = LZ4_read32(ip); + U32 matchIndex; + repeat_state_e repeat = rep_untested; + size_t srcPatternLength = 0; + + DEBUGLOG(7, "LZ4HC_InsertAndGetWiderMatch"); + /* First Match */ + LZ4HC_Insert(hc4, ip); + matchIndex = HashTable[LZ4HC_hashPtr(ip)]; + DEBUGLOG(7, "First match at index %u / %u (lowestMatchIndex)", + matchIndex, lowestMatchIndex); + + while ((matchIndex>=lowestMatchIndex) && (nbAttempts>0)) { + int matchLength=0; + nbAttempts--; + assert(matchIndex < ipIndex); + if (favorDecSpeed && (ipIndex - matchIndex < 8)) { + /* do nothing */ + } else if (matchIndex >= dictLimit) { /* within current Prefix */ + const BYTE* const matchPtr = base + matchIndex; + assert(matchPtr >= lowPrefixPtr); + assert(matchPtr < ip); + assert(longest >= 1); + if (LZ4_read16(iLowLimit + longest - 1) == LZ4_read16(matchPtr - lookBackLength + longest - 1)) { + if (LZ4_read32(matchPtr) == pattern) { + int const back = lookBackLength ? LZ4HC_countBack(ip, matchPtr, iLowLimit, lowPrefixPtr) : 0; + matchLength = MINMATCH + (int)LZ4_count(ip+MINMATCH, matchPtr+MINMATCH, iHighLimit); + matchLength -= back; + if (matchLength > longest) { + longest = matchLength; + *matchpos = matchPtr + back; + *startpos = ip + back; + } } } + } else { /* lowestMatchIndex <= matchIndex < dictLimit */ + const BYTE* const matchPtr = dictBase + matchIndex; + if (LZ4_read32(matchPtr) == pattern) { + const BYTE* const dictStart = dictBase + hc4->lowLimit; + int back = 0; + const BYTE* vLimit = ip + (dictLimit - matchIndex); + if (vLimit > iHighLimit) vLimit = iHighLimit; + matchLength = (int)LZ4_count(ip+MINMATCH, matchPtr+MINMATCH, vLimit) + MINMATCH; + if ((ip+matchLength == vLimit) && (vLimit < iHighLimit)) + matchLength += LZ4_count(ip+matchLength, lowPrefixPtr, iHighLimit); + back = lookBackLength ? LZ4HC_countBack(ip, matchPtr, iLowLimit, dictStart) : 0; + matchLength -= back; + if (matchLength > longest) { + longest = matchLength; + *matchpos = base + matchIndex + back; /* virtual pos, relative to ip, to retrieve offset */ + *startpos = ip + back; + } } } + + if (chainSwap && matchLength==longest) { /* better match => select a better chain */ + assert(lookBackLength==0); /* search forward only */ + if (matchIndex + (U32)longest <= ipIndex) { + int const kTrigger = 4; + U32 distanceToNextMatch = 1; + int const end = longest - MINMATCH + 1; + int step = 1; + int accel = 1 << kTrigger; + int pos; + for (pos = 0; pos < end; pos += step) { + U32 const candidateDist = DELTANEXTU16(chainTable, matchIndex + (U32)pos); + step = (accel++ >> kTrigger); + if (candidateDist > distanceToNextMatch) { + distanceToNextMatch = candidateDist; + matchChainPos = (U32)pos; + accel = 1 << kTrigger; + } + } + if (distanceToNextMatch > 1) { + if (distanceToNextMatch > matchIndex) break; /* avoid overflow */ + matchIndex -= distanceToNextMatch; + continue; + } } } + + { U32 const distNextMatch = DELTANEXTU16(chainTable, matchIndex); + if (patternAnalysis && distNextMatch==1 && matchChainPos==0) { + U32 const matchCandidateIdx = matchIndex-1; + /* may be a repeated pattern */ + if (repeat == rep_untested) { + if ( ((pattern & 0xFFFF) == (pattern >> 16)) + & ((pattern & 0xFF) == (pattern >> 24)) ) { + repeat = rep_confirmed; + srcPatternLength = LZ4HC_countPattern(ip+sizeof(pattern), iHighLimit, pattern) + sizeof(pattern); + } else { + repeat = rep_not; + } } + if ( (repeat == rep_confirmed) && (matchCandidateIdx >= lowestMatchIndex) + && LZ4HC_protectDictEnd(dictLimit, matchCandidateIdx) ) { + const int extDict = matchCandidateIdx < dictLimit; + const BYTE* const matchPtr = (extDict ? dictBase : base) + matchCandidateIdx; + if (LZ4_read32(matchPtr) == pattern) { /* good candidate */ + const BYTE* const dictStart = dictBase + hc4->lowLimit; + const BYTE* const iLimit = extDict ? dictBase + dictLimit : iHighLimit; + size_t forwardPatternLength = LZ4HC_countPattern(matchPtr+sizeof(pattern), iLimit, pattern) + sizeof(pattern); + if (extDict && matchPtr + forwardPatternLength == iLimit) { + U32 const rotatedPattern = LZ4HC_rotatePattern(forwardPatternLength, pattern); + forwardPatternLength += LZ4HC_countPattern(lowPrefixPtr, iHighLimit, rotatedPattern); + } + { const BYTE* const lowestMatchPtr = extDict ? dictStart : lowPrefixPtr; + size_t backLength = LZ4HC_reverseCountPattern(matchPtr, lowestMatchPtr, pattern); + size_t currentSegmentLength; + if (!extDict && matchPtr - backLength == lowPrefixPtr && hc4->lowLimit < dictLimit) { + U32 const rotatedPattern = LZ4HC_rotatePattern((U32)(-(int)backLength), pattern); + backLength += LZ4HC_reverseCountPattern(dictBase + dictLimit, dictStart, rotatedPattern); + } + /* Limit backLength not go further than lowestMatchIndex */ + backLength = matchCandidateIdx - MAX(matchCandidateIdx - (U32)backLength, lowestMatchIndex); + assert(matchCandidateIdx - backLength >= lowestMatchIndex); + currentSegmentLength = backLength + forwardPatternLength; + /* Adjust to end of pattern if the source pattern fits, otherwise the beginning of the pattern */ + if ( (currentSegmentLength >= srcPatternLength) /* current pattern segment large enough to contain full srcPatternLength */ + && (forwardPatternLength <= srcPatternLength) ) { /* haven't reached this position yet */ + U32 const newMatchIndex = matchCandidateIdx + (U32)forwardPatternLength - (U32)srcPatternLength; /* best position, full pattern, might be followed by more match */ + if (LZ4HC_protectDictEnd(dictLimit, newMatchIndex)) + matchIndex = newMatchIndex; + else { + /* Can only happen if started in the prefix */ + assert(newMatchIndex >= dictLimit - 3 && newMatchIndex < dictLimit && !extDict); + matchIndex = dictLimit; + } + } else { + U32 const newMatchIndex = matchCandidateIdx - (U32)backLength; /* farthest position in current segment, will find a match of length currentSegmentLength + maybe some back */ + if (!LZ4HC_protectDictEnd(dictLimit, newMatchIndex)) { + assert(newMatchIndex >= dictLimit - 3 && newMatchIndex < dictLimit && !extDict); + matchIndex = dictLimit; + } else { + matchIndex = newMatchIndex; + if (lookBackLength==0) { /* no back possible */ + size_t const maxML = MIN(currentSegmentLength, srcPatternLength); + if ((size_t)longest < maxML) { + assert(base + matchIndex != ip); + if ((size_t)(ip - base) - matchIndex > LZ4_DISTANCE_MAX) break; + assert(maxML < 2 GB); + longest = (int)maxML; + *matchpos = base + matchIndex; /* virtual pos, relative to ip, to retrieve offset */ + *startpos = ip; + } + { U32 const distToNextPattern = DELTANEXTU16(chainTable, matchIndex); + if (distToNextPattern > matchIndex) break; /* avoid overflow */ + matchIndex -= distToNextPattern; + } } } } } + continue; + } } + } } /* PA optimization */ + + /* follow current chain */ + matchIndex -= DELTANEXTU16(chainTable, matchIndex + matchChainPos); + + } /* while ((matchIndex>=lowestMatchIndex) && (nbAttempts)) */ + + if ( dict == usingDictCtxHc + && nbAttempts > 0 + && ipIndex - lowestMatchIndex < LZ4_DISTANCE_MAX) { + size_t const dictEndOffset = (size_t)(dictCtx->end - dictCtx->base); + U32 dictMatchIndex = dictCtx->hashTable[LZ4HC_hashPtr(ip)]; + assert(dictEndOffset <= 1 GB); + matchIndex = dictMatchIndex + lowestMatchIndex - (U32)dictEndOffset; + while (ipIndex - matchIndex <= LZ4_DISTANCE_MAX && nbAttempts--) { + const BYTE* const matchPtr = dictCtx->base + dictMatchIndex; + + if (LZ4_read32(matchPtr) == pattern) { + int mlt; + int back = 0; + const BYTE* vLimit = ip + (dictEndOffset - dictMatchIndex); + if (vLimit > iHighLimit) vLimit = iHighLimit; + mlt = (int)LZ4_count(ip+MINMATCH, matchPtr+MINMATCH, vLimit) + MINMATCH; + back = lookBackLength ? LZ4HC_countBack(ip, matchPtr, iLowLimit, dictCtx->base + dictCtx->dictLimit) : 0; + mlt -= back; + if (mlt > longest) { + longest = mlt; + *matchpos = base + matchIndex + back; + *startpos = ip + back; + } } + + { U32 const nextOffset = DELTANEXTU16(dictCtx->chainTable, dictMatchIndex); + dictMatchIndex -= nextOffset; + matchIndex -= nextOffset; + } } } + + return longest; +} + +LZ4_FORCE_INLINE +int LZ4HC_InsertAndFindBestMatch(LZ4HC_CCtx_internal* const hc4, /* Index table will be updated */ + const BYTE* const ip, const BYTE* const iLimit, + const BYTE** matchpos, + const int maxNbAttempts, + const int patternAnalysis, + const dictCtx_directive dict) +{ + const BYTE* uselessPtr = ip; + /* note : LZ4HC_InsertAndGetWiderMatch() is able to modify the starting position of a match (*startpos), + * but this won't be the case here, as we define iLowLimit==ip, + * so LZ4HC_InsertAndGetWiderMatch() won't be allowed to search past ip */ + return LZ4HC_InsertAndGetWiderMatch(hc4, ip, ip, iLimit, MINMATCH-1, matchpos, &uselessPtr, maxNbAttempts, patternAnalysis, 0 /*chainSwap*/, dict, favorCompressionRatio); +} + +/* LZ4HC_encodeSequence() : + * @return : 0 if ok, + * 1 if buffer issue detected */ +LZ4_FORCE_INLINE int LZ4HC_encodeSequence ( + const BYTE** _ip, + BYTE** _op, + const BYTE** _anchor, + int matchLength, + const BYTE* const match, + limitedOutput_directive limit, + BYTE* oend) +{ +#define ip (*_ip) +#define op (*_op) +#define anchor (*_anchor) + + size_t length; + BYTE* const token = op++; + +#if defined(LZ4_DEBUG) && (LZ4_DEBUG >= 6) + static const BYTE* start = NULL; + static U32 totalCost = 0; + U32 const pos = (start==NULL) ? 0 : (U32)(anchor - start); + U32 const ll = (U32)(ip - anchor); + U32 const llAdd = (ll>=15) ? ((ll-15) / 255) + 1 : 0; + U32 const mlAdd = (matchLength>=19) ? ((matchLength-19) / 255) + 1 : 0; + U32 const cost = 1 + llAdd + ll + 2 + mlAdd; + if (start==NULL) start = anchor; /* only works for single segment */ + /* g_debuglog_enable = (pos >= 2228) & (pos <= 2262); */ + DEBUGLOG(6, "pos:%7u -- literals:%4u, match:%4i, offset:%5u, cost:%4u + %5u", + pos, + (U32)(ip - anchor), matchLength, (U32)(ip-match), + cost, totalCost); + totalCost += cost; +#endif + + /* Encode Literal length */ + length = (size_t)(ip - anchor); + LZ4_STATIC_ASSERT(notLimited == 0); + /* Check output limit */ + if (limit && ((op + (length / 255) + length + (2 + 1 + LASTLITERALS)) > oend)) { + DEBUGLOG(6, "Not enough room to write %i literals (%i bytes remaining)", + (int)length, (int)(oend - op)); + return 1; + } + if (length >= RUN_MASK) { + size_t len = length - RUN_MASK; + *token = (RUN_MASK << ML_BITS); + for(; len >= 255 ; len -= 255) *op++ = 255; + *op++ = (BYTE)len; + } else { + *token = (BYTE)(length << ML_BITS); + } + + /* Copy Literals */ + LZ4_wildCopy8(op, anchor, op + length); + op += length; + + /* Encode Offset */ + assert( (ip - match) <= LZ4_DISTANCE_MAX ); /* note : consider providing offset as a value, rather than as a pointer difference */ + LZ4_writeLE16(op, (U16)(ip - match)); op += 2; + + /* Encode MatchLength */ + assert(matchLength >= MINMATCH); + length = (size_t)matchLength - MINMATCH; + if (limit && (op + (length / 255) + (1 + LASTLITERALS) > oend)) { + DEBUGLOG(6, "Not enough room to write match length"); + return 1; /* Check output limit */ + } + if (length >= ML_MASK) { + *token += ML_MASK; + length -= ML_MASK; + for(; length >= 510 ; length -= 510) { *op++ = 255; *op++ = 255; } + if (length >= 255) { length -= 255; *op++ = 255; } + *op++ = (BYTE)length; + } else { + *token += (BYTE)(length); + } + + /* Prepare next loop */ + ip += matchLength; + anchor = ip; + + return 0; +} +#undef ip +#undef op +#undef anchor + +LZ4_FORCE_INLINE int LZ4HC_compress_hashChain ( + LZ4HC_CCtx_internal* const ctx, + const char* const source, + char* const dest, + int* srcSizePtr, + int const maxOutputSize, + int maxNbAttempts, + const limitedOutput_directive limit, + const dictCtx_directive dict + ) +{ + const int inputSize = *srcSizePtr; + const int patternAnalysis = (maxNbAttempts > 128); /* levels 9+ */ + + const BYTE* ip = (const BYTE*) source; + const BYTE* anchor = ip; + const BYTE* const iend = ip + inputSize; + const BYTE* const mflimit = iend - MFLIMIT; + const BYTE* const matchlimit = (iend - LASTLITERALS); + + BYTE* optr = (BYTE*) dest; + BYTE* op = (BYTE*) dest; + BYTE* oend = op + maxOutputSize; + + int ml0, ml, ml2, ml3; + const BYTE* start0; + const BYTE* ref0; + const BYTE* ref = NULL; + const BYTE* start2 = NULL; + const BYTE* ref2 = NULL; + const BYTE* start3 = NULL; + const BYTE* ref3 = NULL; + + /* init */ + *srcSizePtr = 0; + if (limit == fillOutput) oend -= LASTLITERALS; /* Hack for support LZ4 format restriction */ + if (inputSize < LZ4_minLength) goto _last_literals; /* Input too small, no compression (all literals) */ + + /* Main Loop */ + while (ip <= mflimit) { + ml = LZ4HC_InsertAndFindBestMatch(ctx, ip, matchlimit, &ref, maxNbAttempts, patternAnalysis, dict); + if (ml encode ML1 */ + optr = op; + if (LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ref, limit, oend)) goto _dest_overflow; + continue; + } + + if (start0 < ip) { /* first match was skipped at least once */ + if (start2 < ip + ml0) { /* squeezing ML1 between ML0(original ML1) and ML2 */ + ip = start0; ref = ref0; ml = ml0; /* restore initial ML1 */ + } } + + /* Here, start0==ip */ + if ((start2 - ip) < 3) { /* First Match too small : removed */ + ml = ml2; + ip = start2; + ref =ref2; + goto _Search2; + } + +_Search3: + /* At this stage, we have : + * ml2 > ml1, and + * ip1+3 <= ip2 (usually < ip1+ml1) */ + if ((start2 - ip) < OPTIMAL_ML) { + int correction; + int new_ml = ml; + if (new_ml > OPTIMAL_ML) new_ml = OPTIMAL_ML; + if (ip+new_ml > start2 + ml2 - MINMATCH) new_ml = (int)(start2 - ip) + ml2 - MINMATCH; + correction = new_ml - (int)(start2 - ip); + if (correction > 0) { + start2 += correction; + ref2 += correction; + ml2 -= correction; + } + } + /* Now, we have start2 = ip+new_ml, with new_ml = min(ml, OPTIMAL_ML=18) */ + + if (start2 + ml2 <= mflimit) { + ml3 = LZ4HC_InsertAndGetWiderMatch(ctx, + start2 + ml2 - 3, start2, matchlimit, ml2, &ref3, &start3, + maxNbAttempts, patternAnalysis, 0, dict, favorCompressionRatio); + } else { + ml3 = ml2; + } + + if (ml3 == ml2) { /* No better match => encode ML1 and ML2 */ + /* ip & ref are known; Now for ml */ + if (start2 < ip+ml) ml = (int)(start2 - ip); + /* Now, encode 2 sequences */ + optr = op; + if (LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ref, limit, oend)) goto _dest_overflow; + ip = start2; + optr = op; + if (LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml2, ref2, limit, oend)) { + ml = ml2; + ref = ref2; + goto _dest_overflow; + } + continue; + } + + if (start3 < ip+ml+3) { /* Not enough space for match 2 : remove it */ + if (start3 >= (ip+ml)) { /* can write Seq1 immediately ==> Seq2 is removed, so Seq3 becomes Seq1 */ + if (start2 < ip+ml) { + int correction = (int)(ip+ml - start2); + start2 += correction; + ref2 += correction; + ml2 -= correction; + if (ml2 < MINMATCH) { + start2 = start3; + ref2 = ref3; + ml2 = ml3; + } + } + + optr = op; + if (LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ref, limit, oend)) goto _dest_overflow; + ip = start3; + ref = ref3; + ml = ml3; + + start0 = start2; + ref0 = ref2; + ml0 = ml2; + goto _Search2; + } + + start2 = start3; + ref2 = ref3; + ml2 = ml3; + goto _Search3; + } + + /* + * OK, now we have 3 ascending matches; + * let's write the first one ML1. + * ip & ref are known; Now decide ml. + */ + if (start2 < ip+ml) { + if ((start2 - ip) < OPTIMAL_ML) { + int correction; + if (ml > OPTIMAL_ML) ml = OPTIMAL_ML; + if (ip + ml > start2 + ml2 - MINMATCH) ml = (int)(start2 - ip) + ml2 - MINMATCH; + correction = ml - (int)(start2 - ip); + if (correction > 0) { + start2 += correction; + ref2 += correction; + ml2 -= correction; + } + } else { + ml = (int)(start2 - ip); + } + } + optr = op; + if (LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ref, limit, oend)) goto _dest_overflow; + + /* ML2 becomes ML1 */ + ip = start2; ref = ref2; ml = ml2; + + /* ML3 becomes ML2 */ + start2 = start3; ref2 = ref3; ml2 = ml3; + + /* let's find a new ML3 */ + goto _Search3; + } + +_last_literals: + /* Encode Last Literals */ + { size_t lastRunSize = (size_t)(iend - anchor); /* literals */ + size_t llAdd = (lastRunSize + 255 - RUN_MASK) / 255; + size_t const totalSize = 1 + llAdd + lastRunSize; + if (limit == fillOutput) oend += LASTLITERALS; /* restore correct value */ + if (limit && (op + totalSize > oend)) { + if (limit == limitedOutput) return 0; + /* adapt lastRunSize to fill 'dest' */ + lastRunSize = (size_t)(oend - op) - 1 /*token*/; + llAdd = (lastRunSize + 256 - RUN_MASK) / 256; + lastRunSize -= llAdd; + } + DEBUGLOG(6, "Final literal run : %i literals", (int)lastRunSize); + ip = anchor + lastRunSize; /* can be != iend if limit==fillOutput */ + + if (lastRunSize >= RUN_MASK) { + size_t accumulator = lastRunSize - RUN_MASK; + *op++ = (RUN_MASK << ML_BITS); + for(; accumulator >= 255 ; accumulator -= 255) *op++ = 255; + *op++ = (BYTE) accumulator; + } else { + *op++ = (BYTE)(lastRunSize << ML_BITS); + } + memcpy(op, anchor, lastRunSize); + op += lastRunSize; + } + + /* End */ + *srcSizePtr = (int) (((const char*)ip) - source); + return (int) (((char*)op)-dest); + +_dest_overflow: + if (limit == fillOutput) { + /* Assumption : ip, anchor, ml and ref must be set correctly */ + size_t const ll = (size_t)(ip - anchor); + size_t const ll_addbytes = (ll + 240) / 255; + size_t const ll_totalCost = 1 + ll_addbytes + ll; + BYTE* const maxLitPos = oend - 3; /* 2 for offset, 1 for token */ + DEBUGLOG(6, "Last sequence overflowing"); + op = optr; /* restore correct out pointer */ + if (op + ll_totalCost <= maxLitPos) { + /* ll validated; now adjust match length */ + size_t const bytesLeftForMl = (size_t)(maxLitPos - (op+ll_totalCost)); + size_t const maxMlSize = MINMATCH + (ML_MASK-1) + (bytesLeftForMl * 255); + assert(maxMlSize < INT_MAX); assert(ml >= 0); + if ((size_t)ml > maxMlSize) ml = (int)maxMlSize; + if ((oend + LASTLITERALS) - (op + ll_totalCost + 2) - 1 + ml >= MFLIMIT) { + LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ref, notLimited, oend); + } } + goto _last_literals; + } + /* compression failed */ + return 0; +} + + +static int LZ4HC_compress_optimal( LZ4HC_CCtx_internal* ctx, + const char* const source, char* dst, + int* srcSizePtr, int dstCapacity, + int const nbSearches, size_t sufficient_len, + const limitedOutput_directive limit, int const fullUpdate, + const dictCtx_directive dict, + const HCfavor_e favorDecSpeed); + + +LZ4_FORCE_INLINE int LZ4HC_compress_generic_internal ( + LZ4HC_CCtx_internal* const ctx, + const char* const src, + char* const dst, + int* const srcSizePtr, + int const dstCapacity, + int cLevel, + const limitedOutput_directive limit, + const dictCtx_directive dict + ) +{ + typedef enum { lz4hc, lz4opt } lz4hc_strat_e; + typedef struct { + lz4hc_strat_e strat; + int nbSearches; + U32 targetLength; + } cParams_t; + static const cParams_t clTable[LZ4HC_CLEVEL_MAX+1] = { + { lz4hc, 2, 16 }, /* 0, unused */ + { lz4hc, 2, 16 }, /* 1, unused */ + { lz4hc, 2, 16 }, /* 2, unused */ + { lz4hc, 4, 16 }, /* 3 */ + { lz4hc, 8, 16 }, /* 4 */ + { lz4hc, 16, 16 }, /* 5 */ + { lz4hc, 32, 16 }, /* 6 */ + { lz4hc, 64, 16 }, /* 7 */ + { lz4hc, 128, 16 }, /* 8 */ + { lz4hc, 256, 16 }, /* 9 */ + { lz4opt, 96, 64 }, /*10==LZ4HC_CLEVEL_OPT_MIN*/ + { lz4opt, 512,128 }, /*11 */ + { lz4opt,16384,LZ4_OPT_NUM }, /* 12==LZ4HC_CLEVEL_MAX */ + }; + + DEBUGLOG(4, "LZ4HC_compress_generic(ctx=%p, src=%p, srcSize=%d, limit=%d)", + ctx, src, *srcSizePtr, limit); + + if (limit == fillOutput && dstCapacity < 1) return 0; /* Impossible to store anything */ + if ((U32)*srcSizePtr > (U32)LZ4_MAX_INPUT_SIZE) return 0; /* Unsupported input size (too large or negative) */ + + ctx->end += *srcSizePtr; + if (cLevel < 1) cLevel = LZ4HC_CLEVEL_DEFAULT; /* note : convention is different from lz4frame, maybe something to review */ + cLevel = MIN(LZ4HC_CLEVEL_MAX, cLevel); + { cParams_t const cParam = clTable[cLevel]; + HCfavor_e const favor = ctx->favorDecSpeed ? favorDecompressionSpeed : favorCompressionRatio; + int result; + + if (cParam.strat == lz4hc) { + result = LZ4HC_compress_hashChain(ctx, + src, dst, srcSizePtr, dstCapacity, + cParam.nbSearches, limit, dict); + } else { + assert(cParam.strat == lz4opt); + result = LZ4HC_compress_optimal(ctx, + src, dst, srcSizePtr, dstCapacity, + cParam.nbSearches, cParam.targetLength, limit, + cLevel == LZ4HC_CLEVEL_MAX, /* ultra mode */ + dict, favor); + } + if (result <= 0) ctx->dirty = 1; + return result; + } +} + +static void LZ4HC_setExternalDict(LZ4HC_CCtx_internal* ctxPtr, const BYTE* newBlock); + +static int +LZ4HC_compress_generic_noDictCtx ( + LZ4HC_CCtx_internal* const ctx, + const char* const src, + char* const dst, + int* const srcSizePtr, + int const dstCapacity, + int cLevel, + limitedOutput_directive limit + ) +{ + assert(ctx->dictCtx == NULL); + return LZ4HC_compress_generic_internal(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit, noDictCtx); +} + +static int +LZ4HC_compress_generic_dictCtx ( + LZ4HC_CCtx_internal* const ctx, + const char* const src, + char* const dst, + int* const srcSizePtr, + int const dstCapacity, + int cLevel, + limitedOutput_directive limit + ) +{ + const size_t position = (size_t)(ctx->end - ctx->base) - ctx->lowLimit; + assert(ctx->dictCtx != NULL); + if (position >= 64 KB) { + ctx->dictCtx = NULL; + return LZ4HC_compress_generic_noDictCtx(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit); + } else if (position == 0 && *srcSizePtr > 4 KB) { + memcpy(ctx, ctx->dictCtx, sizeof(LZ4HC_CCtx_internal)); + LZ4HC_setExternalDict(ctx, (const BYTE *)src); + ctx->compressionLevel = (short)cLevel; + return LZ4HC_compress_generic_noDictCtx(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit); + } else { + return LZ4HC_compress_generic_internal(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit, usingDictCtxHc); + } +} + +static int +LZ4HC_compress_generic ( + LZ4HC_CCtx_internal* const ctx, + const char* const src, + char* const dst, + int* const srcSizePtr, + int const dstCapacity, + int cLevel, + limitedOutput_directive limit + ) +{ + if (ctx->dictCtx == NULL) { + return LZ4HC_compress_generic_noDictCtx(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit); + } else { + return LZ4HC_compress_generic_dictCtx(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit); + } +} + + +int LZ4_sizeofStateHC(void) { return (int)sizeof(LZ4_streamHC_t); } + +static size_t LZ4_streamHC_t_alignment(void) +{ +#if LZ4_ALIGN_TEST + typedef struct { char c; LZ4_streamHC_t t; } t_a; + return sizeof(t_a) - sizeof(LZ4_streamHC_t); +#else + return 1; /* effectively disabled */ +#endif +} + +/* state is presumed correctly initialized, + * in which case its size and alignment have already been validate */ +int LZ4_compress_HC_extStateHC_fastReset (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel) +{ + LZ4HC_CCtx_internal* const ctx = &((LZ4_streamHC_t*)state)->internal_donotuse; + if (!LZ4_isAligned(state, LZ4_streamHC_t_alignment())) return 0; + LZ4_resetStreamHC_fast((LZ4_streamHC_t*)state, compressionLevel); + LZ4HC_init_internal (ctx, (const BYTE*)src); + if (dstCapacity < LZ4_compressBound(srcSize)) + return LZ4HC_compress_generic (ctx, src, dst, &srcSize, dstCapacity, compressionLevel, limitedOutput); + else + return LZ4HC_compress_generic (ctx, src, dst, &srcSize, dstCapacity, compressionLevel, notLimited); +} + +int LZ4_compress_HC_extStateHC (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel) +{ + LZ4_streamHC_t* const ctx = LZ4_initStreamHC(state, sizeof(*ctx)); + if (ctx==NULL) return 0; /* init failure */ + return LZ4_compress_HC_extStateHC_fastReset(state, src, dst, srcSize, dstCapacity, compressionLevel); +} + +int LZ4_compress_HC(const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel) +{ +#if defined(LZ4HC_HEAPMODE) && LZ4HC_HEAPMODE==1 + LZ4_streamHC_t* const statePtr = (LZ4_streamHC_t*)ALLOC(sizeof(LZ4_streamHC_t)); +#else + LZ4_streamHC_t state; + LZ4_streamHC_t* const statePtr = &state; +#endif + int const cSize = LZ4_compress_HC_extStateHC(statePtr, src, dst, srcSize, dstCapacity, compressionLevel); +#if defined(LZ4HC_HEAPMODE) && LZ4HC_HEAPMODE==1 + FREEMEM(statePtr); +#endif + return cSize; +} + +/* state is presumed sized correctly (>= sizeof(LZ4_streamHC_t)) */ +int LZ4_compress_HC_destSize(void* state, const char* source, char* dest, int* sourceSizePtr, int targetDestSize, int cLevel) +{ + LZ4_streamHC_t* const ctx = LZ4_initStreamHC(state, sizeof(*ctx)); + if (ctx==NULL) return 0; /* init failure */ + LZ4HC_init_internal(&ctx->internal_donotuse, (const BYTE*) source); + LZ4_setCompressionLevel(ctx, cLevel); + return LZ4HC_compress_generic(&ctx->internal_donotuse, source, dest, sourceSizePtr, targetDestSize, cLevel, fillOutput); +} + + + +/************************************** +* Streaming Functions +**************************************/ +/* allocation */ +LZ4_streamHC_t* LZ4_createStreamHC(void) +{ + LZ4_streamHC_t* const state = + (LZ4_streamHC_t*)ALLOC_AND_ZERO(sizeof(LZ4_streamHC_t)); + if (state == NULL) return NULL; + LZ4_setCompressionLevel(state, LZ4HC_CLEVEL_DEFAULT); + return state; +} + +int LZ4_freeStreamHC (LZ4_streamHC_t* LZ4_streamHCPtr) +{ + DEBUGLOG(4, "LZ4_freeStreamHC(%p)", LZ4_streamHCPtr); + if (!LZ4_streamHCPtr) return 0; /* support free on NULL */ + FREEMEM(LZ4_streamHCPtr); + return 0; +} + + +LZ4_streamHC_t* LZ4_initStreamHC (void* buffer, size_t size) +{ + LZ4_streamHC_t* const LZ4_streamHCPtr = (LZ4_streamHC_t*)buffer; + /* if compilation fails here, LZ4_STREAMHCSIZE must be increased */ + LZ4_STATIC_ASSERT(sizeof(LZ4HC_CCtx_internal) <= LZ4_STREAMHCSIZE); + DEBUGLOG(4, "LZ4_initStreamHC(%p, %u)", buffer, (unsigned)size); + /* check conditions */ + if (buffer == NULL) return NULL; + if (size < sizeof(LZ4_streamHC_t)) return NULL; + if (!LZ4_isAligned(buffer, LZ4_streamHC_t_alignment())) return NULL; + /* init */ + { LZ4HC_CCtx_internal* const hcstate = &(LZ4_streamHCPtr->internal_donotuse); + MEM_INIT(hcstate, 0, sizeof(*hcstate)); } + LZ4_setCompressionLevel(LZ4_streamHCPtr, LZ4HC_CLEVEL_DEFAULT); + return LZ4_streamHCPtr; +} + +/* just a stub */ +void LZ4_resetStreamHC (LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel) +{ + LZ4_initStreamHC(LZ4_streamHCPtr, sizeof(*LZ4_streamHCPtr)); + LZ4_setCompressionLevel(LZ4_streamHCPtr, compressionLevel); +} + +void LZ4_resetStreamHC_fast (LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel) +{ + DEBUGLOG(4, "LZ4_resetStreamHC_fast(%p, %d)", LZ4_streamHCPtr, compressionLevel); + if (LZ4_streamHCPtr->internal_donotuse.dirty) { + LZ4_initStreamHC(LZ4_streamHCPtr, sizeof(*LZ4_streamHCPtr)); + } else { + /* preserve end - base : can trigger clearTable's threshold */ + LZ4_streamHCPtr->internal_donotuse.end -= (uptrval)LZ4_streamHCPtr->internal_donotuse.base; + LZ4_streamHCPtr->internal_donotuse.base = NULL; + LZ4_streamHCPtr->internal_donotuse.dictCtx = NULL; + } + LZ4_setCompressionLevel(LZ4_streamHCPtr, compressionLevel); +} + +void LZ4_setCompressionLevel(LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel) +{ + DEBUGLOG(5, "LZ4_setCompressionLevel(%p, %d)", LZ4_streamHCPtr, compressionLevel); + if (compressionLevel < 1) compressionLevel = LZ4HC_CLEVEL_DEFAULT; + if (compressionLevel > LZ4HC_CLEVEL_MAX) compressionLevel = LZ4HC_CLEVEL_MAX; + LZ4_streamHCPtr->internal_donotuse.compressionLevel = (short)compressionLevel; +} + +void LZ4_favorDecompressionSpeed(LZ4_streamHC_t* LZ4_streamHCPtr, int favor) +{ + LZ4_streamHCPtr->internal_donotuse.favorDecSpeed = (favor!=0); +} + +/* LZ4_loadDictHC() : + * LZ4_streamHCPtr is presumed properly initialized */ +int LZ4_loadDictHC (LZ4_streamHC_t* LZ4_streamHCPtr, + const char* dictionary, int dictSize) +{ + LZ4HC_CCtx_internal* const ctxPtr = &LZ4_streamHCPtr->internal_donotuse; + DEBUGLOG(4, "LZ4_loadDictHC(ctx:%p, dict:%p, dictSize:%d)", LZ4_streamHCPtr, dictionary, dictSize); + assert(LZ4_streamHCPtr != NULL); + if (dictSize > 64 KB) { + dictionary += (size_t)dictSize - 64 KB; + dictSize = 64 KB; + } + /* need a full initialization, there are bad side-effects when using resetFast() */ + { int const cLevel = ctxPtr->compressionLevel; + LZ4_initStreamHC(LZ4_streamHCPtr, sizeof(*LZ4_streamHCPtr)); + LZ4_setCompressionLevel(LZ4_streamHCPtr, cLevel); + } + LZ4HC_init_internal (ctxPtr, (const BYTE*)dictionary); + ctxPtr->end = (const BYTE*)dictionary + dictSize; + if (dictSize >= 4) LZ4HC_Insert (ctxPtr, ctxPtr->end-3); + return dictSize; +} + +void LZ4_attach_HC_dictionary(LZ4_streamHC_t *working_stream, const LZ4_streamHC_t *dictionary_stream) { + working_stream->internal_donotuse.dictCtx = dictionary_stream != NULL ? &(dictionary_stream->internal_donotuse) : NULL; +} + +/* compression */ + +static void LZ4HC_setExternalDict(LZ4HC_CCtx_internal* ctxPtr, const BYTE* newBlock) +{ + DEBUGLOG(4, "LZ4HC_setExternalDict(%p, %p)", ctxPtr, newBlock); + if (ctxPtr->end >= ctxPtr->base + ctxPtr->dictLimit + 4) + LZ4HC_Insert (ctxPtr, ctxPtr->end-3); /* Referencing remaining dictionary content */ + + /* Only one memory segment for extDict, so any previous extDict is lost at this stage */ + ctxPtr->lowLimit = ctxPtr->dictLimit; + ctxPtr->dictLimit = (U32)(ctxPtr->end - ctxPtr->base); + ctxPtr->dictBase = ctxPtr->base; + ctxPtr->base = newBlock - ctxPtr->dictLimit; + ctxPtr->end = newBlock; + ctxPtr->nextToUpdate = ctxPtr->dictLimit; /* match referencing will resume from there */ + + /* cannot reference an extDict and a dictCtx at the same time */ + ctxPtr->dictCtx = NULL; +} + +static int +LZ4_compressHC_continue_generic (LZ4_streamHC_t* LZ4_streamHCPtr, + const char* src, char* dst, + int* srcSizePtr, int dstCapacity, + limitedOutput_directive limit) +{ + LZ4HC_CCtx_internal* const ctxPtr = &LZ4_streamHCPtr->internal_donotuse; + DEBUGLOG(5, "LZ4_compressHC_continue_generic(ctx=%p, src=%p, srcSize=%d, limit=%d)", + LZ4_streamHCPtr, src, *srcSizePtr, limit); + assert(ctxPtr != NULL); + /* auto-init if forgotten */ + if (ctxPtr->base == NULL) LZ4HC_init_internal (ctxPtr, (const BYTE*) src); + + /* Check overflow */ + if ((size_t)(ctxPtr->end - ctxPtr->base) > 2 GB) { + size_t dictSize = (size_t)(ctxPtr->end - ctxPtr->base) - ctxPtr->dictLimit; + if (dictSize > 64 KB) dictSize = 64 KB; + LZ4_loadDictHC(LZ4_streamHCPtr, (const char*)(ctxPtr->end) - dictSize, (int)dictSize); + } + + /* Check if blocks follow each other */ + if ((const BYTE*)src != ctxPtr->end) + LZ4HC_setExternalDict(ctxPtr, (const BYTE*)src); + + /* Check overlapping input/dictionary space */ + { const BYTE* sourceEnd = (const BYTE*) src + *srcSizePtr; + const BYTE* const dictBegin = ctxPtr->dictBase + ctxPtr->lowLimit; + const BYTE* const dictEnd = ctxPtr->dictBase + ctxPtr->dictLimit; + if ((sourceEnd > dictBegin) && ((const BYTE*)src < dictEnd)) { + if (sourceEnd > dictEnd) sourceEnd = dictEnd; + ctxPtr->lowLimit = (U32)(sourceEnd - ctxPtr->dictBase); + if (ctxPtr->dictLimit - ctxPtr->lowLimit < 4) ctxPtr->lowLimit = ctxPtr->dictLimit; + } } + + return LZ4HC_compress_generic (ctxPtr, src, dst, srcSizePtr, dstCapacity, ctxPtr->compressionLevel, limit); +} + +int LZ4_compress_HC_continue (LZ4_streamHC_t* LZ4_streamHCPtr, const char* src, char* dst, int srcSize, int dstCapacity) +{ + if (dstCapacity < LZ4_compressBound(srcSize)) + return LZ4_compressHC_continue_generic (LZ4_streamHCPtr, src, dst, &srcSize, dstCapacity, limitedOutput); + else + return LZ4_compressHC_continue_generic (LZ4_streamHCPtr, src, dst, &srcSize, dstCapacity, notLimited); +} + +int LZ4_compress_HC_continue_destSize (LZ4_streamHC_t* LZ4_streamHCPtr, const char* src, char* dst, int* srcSizePtr, int targetDestSize) +{ + return LZ4_compressHC_continue_generic(LZ4_streamHCPtr, src, dst, srcSizePtr, targetDestSize, fillOutput); +} + + + +/* LZ4_saveDictHC : + * save history content + * into a user-provided buffer + * which is then used to continue compression + */ +int LZ4_saveDictHC (LZ4_streamHC_t* LZ4_streamHCPtr, char* safeBuffer, int dictSize) +{ + LZ4HC_CCtx_internal* const streamPtr = &LZ4_streamHCPtr->internal_donotuse; + int const prefixSize = (int)(streamPtr->end - (streamPtr->base + streamPtr->dictLimit)); + DEBUGLOG(5, "LZ4_saveDictHC(%p, %p, %d)", LZ4_streamHCPtr, safeBuffer, dictSize); + assert(prefixSize >= 0); + if (dictSize > 64 KB) dictSize = 64 KB; + if (dictSize < 4) dictSize = 0; + if (dictSize > prefixSize) dictSize = prefixSize; + if (safeBuffer == NULL) assert(dictSize == 0); + if (dictSize > 0) + memmove(safeBuffer, streamPtr->end - dictSize, dictSize); + { U32 const endIndex = (U32)(streamPtr->end - streamPtr->base); + streamPtr->end = (const BYTE*)safeBuffer + dictSize; + streamPtr->base = streamPtr->end - endIndex; + streamPtr->dictLimit = endIndex - (U32)dictSize; + streamPtr->lowLimit = endIndex - (U32)dictSize; + if (streamPtr->nextToUpdate < streamPtr->dictLimit) + streamPtr->nextToUpdate = streamPtr->dictLimit; + } + return dictSize; +} + + +/*************************************************** +* Deprecated Functions +***************************************************/ + +/* These functions currently generate deprecation warnings */ + +/* Wrappers for deprecated compression functions */ +int LZ4_compressHC(const char* src, char* dst, int srcSize) { return LZ4_compress_HC (src, dst, srcSize, LZ4_compressBound(srcSize), 0); } +int LZ4_compressHC_limitedOutput(const char* src, char* dst, int srcSize, int maxDstSize) { return LZ4_compress_HC(src, dst, srcSize, maxDstSize, 0); } +int LZ4_compressHC2(const char* src, char* dst, int srcSize, int cLevel) { return LZ4_compress_HC (src, dst, srcSize, LZ4_compressBound(srcSize), cLevel); } +int LZ4_compressHC2_limitedOutput(const char* src, char* dst, int srcSize, int maxDstSize, int cLevel) { return LZ4_compress_HC(src, dst, srcSize, maxDstSize, cLevel); } +int LZ4_compressHC_withStateHC (void* state, const char* src, char* dst, int srcSize) { return LZ4_compress_HC_extStateHC (state, src, dst, srcSize, LZ4_compressBound(srcSize), 0); } +int LZ4_compressHC_limitedOutput_withStateHC (void* state, const char* src, char* dst, int srcSize, int maxDstSize) { return LZ4_compress_HC_extStateHC (state, src, dst, srcSize, maxDstSize, 0); } +int LZ4_compressHC2_withStateHC (void* state, const char* src, char* dst, int srcSize, int cLevel) { return LZ4_compress_HC_extStateHC(state, src, dst, srcSize, LZ4_compressBound(srcSize), cLevel); } +int LZ4_compressHC2_limitedOutput_withStateHC (void* state, const char* src, char* dst, int srcSize, int maxDstSize, int cLevel) { return LZ4_compress_HC_extStateHC(state, src, dst, srcSize, maxDstSize, cLevel); } +int LZ4_compressHC_continue (LZ4_streamHC_t* ctx, const char* src, char* dst, int srcSize) { return LZ4_compress_HC_continue (ctx, src, dst, srcSize, LZ4_compressBound(srcSize)); } +int LZ4_compressHC_limitedOutput_continue (LZ4_streamHC_t* ctx, const char* src, char* dst, int srcSize, int maxDstSize) { return LZ4_compress_HC_continue (ctx, src, dst, srcSize, maxDstSize); } + + +/* Deprecated streaming functions */ +int LZ4_sizeofStreamStateHC(void) { return LZ4_STREAMHCSIZE; } + +/* state is presumed correctly sized, aka >= sizeof(LZ4_streamHC_t) + * @return : 0 on success, !=0 if error */ +int LZ4_resetStreamStateHC(void* state, char* inputBuffer) +{ + LZ4_streamHC_t* const hc4 = LZ4_initStreamHC(state, sizeof(*hc4)); + if (hc4 == NULL) return 1; /* init failed */ + LZ4HC_init_internal (&hc4->internal_donotuse, (const BYTE*)inputBuffer); + return 0; +} + +void* LZ4_createHC (const char* inputBuffer) +{ + LZ4_streamHC_t* const hc4 = LZ4_createStreamHC(); + if (hc4 == NULL) return NULL; /* not enough memory */ + LZ4HC_init_internal (&hc4->internal_donotuse, (const BYTE*)inputBuffer); + return hc4; +} + +int LZ4_freeHC (void* LZ4HC_Data) +{ + if (!LZ4HC_Data) return 0; /* support free on NULL */ + FREEMEM(LZ4HC_Data); + return 0; +} + +int LZ4_compressHC2_continue (void* LZ4HC_Data, const char* src, char* dst, int srcSize, int cLevel) +{ + return LZ4HC_compress_generic (&((LZ4_streamHC_t*)LZ4HC_Data)->internal_donotuse, src, dst, &srcSize, 0, cLevel, notLimited); +} + +int LZ4_compressHC2_limitedOutput_continue (void* LZ4HC_Data, const char* src, char* dst, int srcSize, int dstCapacity, int cLevel) +{ + return LZ4HC_compress_generic (&((LZ4_streamHC_t*)LZ4HC_Data)->internal_donotuse, src, dst, &srcSize, dstCapacity, cLevel, limitedOutput); +} + +char* LZ4_slideInputBufferHC(void* LZ4HC_Data) +{ + LZ4_streamHC_t *ctx = (LZ4_streamHC_t*)LZ4HC_Data; + const BYTE *bufferStart = ctx->internal_donotuse.base + ctx->internal_donotuse.lowLimit; + LZ4_resetStreamHC_fast(ctx, ctx->internal_donotuse.compressionLevel); + /* avoid const char * -> char * conversion warning :( */ + return (char *)(uptrval)bufferStart; +} + + +/* ================================================ + * LZ4 Optimal parser (levels [LZ4HC_CLEVEL_OPT_MIN - LZ4HC_CLEVEL_MAX]) + * ===============================================*/ +typedef struct { + int price; + int off; + int mlen; + int litlen; +} LZ4HC_optimal_t; + +/* price in bytes */ +LZ4_FORCE_INLINE int LZ4HC_literalsPrice(int const litlen) +{ + int price = litlen; + assert(litlen >= 0); + if (litlen >= (int)RUN_MASK) + price += 1 + ((litlen-(int)RUN_MASK) / 255); + return price; +} + + +/* requires mlen >= MINMATCH */ +LZ4_FORCE_INLINE int LZ4HC_sequencePrice(int litlen, int mlen) +{ + int price = 1 + 2 ; /* token + 16-bit offset */ + assert(litlen >= 0); + assert(mlen >= MINMATCH); + + price += LZ4HC_literalsPrice(litlen); + + if (mlen >= (int)(ML_MASK+MINMATCH)) + price += 1 + ((mlen-(int)(ML_MASK+MINMATCH)) / 255); + + return price; +} + + +typedef struct { + int off; + int len; +} LZ4HC_match_t; + +LZ4_FORCE_INLINE LZ4HC_match_t +LZ4HC_FindLongerMatch(LZ4HC_CCtx_internal* const ctx, + const BYTE* ip, const BYTE* const iHighLimit, + int minLen, int nbSearches, + const dictCtx_directive dict, + const HCfavor_e favorDecSpeed) +{ + LZ4HC_match_t match = { 0 , 0 }; + const BYTE* matchPtr = NULL; + /* note : LZ4HC_InsertAndGetWiderMatch() is able to modify the starting position of a match (*startpos), + * but this won't be the case here, as we define iLowLimit==ip, + * so LZ4HC_InsertAndGetWiderMatch() won't be allowed to search past ip */ + int matchLength = LZ4HC_InsertAndGetWiderMatch(ctx, ip, ip, iHighLimit, minLen, &matchPtr, &ip, nbSearches, 1 /*patternAnalysis*/, 1 /*chainSwap*/, dict, favorDecSpeed); + if (matchLength <= minLen) return match; + if (favorDecSpeed) { + if ((matchLength>18) & (matchLength<=36)) matchLength=18; /* favor shortcut */ + } + match.len = matchLength; + match.off = (int)(ip-matchPtr); + return match; +} + + +static int LZ4HC_compress_optimal ( LZ4HC_CCtx_internal* ctx, + const char* const source, + char* dst, + int* srcSizePtr, + int dstCapacity, + int const nbSearches, + size_t sufficient_len, + const limitedOutput_directive limit, + int const fullUpdate, + const dictCtx_directive dict, + const HCfavor_e favorDecSpeed) +{ + int retval = 0; +#define TRAILING_LITERALS 3 +#ifdef LZ4HC_HEAPMODE + LZ4HC_optimal_t* const opt = (LZ4HC_optimal_t*)ALLOC(sizeof(LZ4HC_optimal_t) * (LZ4_OPT_NUM + TRAILING_LITERALS)); +#else + LZ4HC_optimal_t opt[LZ4_OPT_NUM + TRAILING_LITERALS]; /* ~64 KB, which is a bit large for stack... */ +#endif + + const BYTE* ip = (const BYTE*) source; + const BYTE* anchor = ip; + const BYTE* const iend = ip + *srcSizePtr; + const BYTE* const mflimit = iend - MFLIMIT; + const BYTE* const matchlimit = iend - LASTLITERALS; + BYTE* op = (BYTE*) dst; + BYTE* opSaved = (BYTE*) dst; + BYTE* oend = op + dstCapacity; + int ovml = MINMATCH; /* overflow - last sequence */ + const BYTE* ovref = NULL; + + /* init */ +#ifdef LZ4HC_HEAPMODE + if (opt == NULL) goto _return_label; +#endif + DEBUGLOG(5, "LZ4HC_compress_optimal(dst=%p, dstCapa=%u)", dst, (unsigned)dstCapacity); + *srcSizePtr = 0; + if (limit == fillOutput) oend -= LASTLITERALS; /* Hack for support LZ4 format restriction */ + if (sufficient_len >= LZ4_OPT_NUM) sufficient_len = LZ4_OPT_NUM-1; + + /* Main Loop */ + while (ip <= mflimit) { + int const llen = (int)(ip - anchor); + int best_mlen, best_off; + int cur, last_match_pos = 0; + + LZ4HC_match_t const firstMatch = LZ4HC_FindLongerMatch(ctx, ip, matchlimit, MINMATCH-1, nbSearches, dict, favorDecSpeed); + if (firstMatch.len==0) { ip++; continue; } + + if ((size_t)firstMatch.len > sufficient_len) { + /* good enough solution : immediate encoding */ + int const firstML = firstMatch.len; + const BYTE* const matchPos = ip - firstMatch.off; + opSaved = op; + if ( LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), firstML, matchPos, limit, oend) ) { /* updates ip, op and anchor */ + ovml = firstML; + ovref = matchPos; + goto _dest_overflow; + } + continue; + } + + /* set prices for first positions (literals) */ + { int rPos; + for (rPos = 0 ; rPos < MINMATCH ; rPos++) { + int const cost = LZ4HC_literalsPrice(llen + rPos); + opt[rPos].mlen = 1; + opt[rPos].off = 0; + opt[rPos].litlen = llen + rPos; + opt[rPos].price = cost; + DEBUGLOG(7, "rPos:%3i => price:%3i (litlen=%i) -- initial setup", + rPos, cost, opt[rPos].litlen); + } } + /* set prices using initial match */ + { int mlen = MINMATCH; + int const matchML = firstMatch.len; /* necessarily < sufficient_len < LZ4_OPT_NUM */ + int const offset = firstMatch.off; + assert(matchML < LZ4_OPT_NUM); + for ( ; mlen <= matchML ; mlen++) { + int const cost = LZ4HC_sequencePrice(llen, mlen); + opt[mlen].mlen = mlen; + opt[mlen].off = offset; + opt[mlen].litlen = llen; + opt[mlen].price = cost; + DEBUGLOG(7, "rPos:%3i => price:%3i (matchlen=%i) -- initial setup", + mlen, cost, mlen); + } } + last_match_pos = firstMatch.len; + { int addLit; + for (addLit = 1; addLit <= TRAILING_LITERALS; addLit ++) { + opt[last_match_pos+addLit].mlen = 1; /* literal */ + opt[last_match_pos+addLit].off = 0; + opt[last_match_pos+addLit].litlen = addLit; + opt[last_match_pos+addLit].price = opt[last_match_pos].price + LZ4HC_literalsPrice(addLit); + DEBUGLOG(7, "rPos:%3i => price:%3i (litlen=%i) -- initial setup", + last_match_pos+addLit, opt[last_match_pos+addLit].price, addLit); + } } + + /* check further positions */ + for (cur = 1; cur < last_match_pos; cur++) { + const BYTE* const curPtr = ip + cur; + LZ4HC_match_t newMatch; + + if (curPtr > mflimit) break; + DEBUGLOG(7, "rPos:%u[%u] vs [%u]%u", + cur, opt[cur].price, opt[cur+1].price, cur+1); + if (fullUpdate) { + /* not useful to search here if next position has same (or lower) cost */ + if ( (opt[cur+1].price <= opt[cur].price) + /* in some cases, next position has same cost, but cost rises sharply after, so a small match would still be beneficial */ + && (opt[cur+MINMATCH].price < opt[cur].price + 3/*min seq price*/) ) + continue; + } else { + /* not useful to search here if next position has same (or lower) cost */ + if (opt[cur+1].price <= opt[cur].price) continue; + } + + DEBUGLOG(7, "search at rPos:%u", cur); + if (fullUpdate) + newMatch = LZ4HC_FindLongerMatch(ctx, curPtr, matchlimit, MINMATCH-1, nbSearches, dict, favorDecSpeed); + else + /* only test matches of minimum length; slightly faster, but misses a few bytes */ + newMatch = LZ4HC_FindLongerMatch(ctx, curPtr, matchlimit, last_match_pos - cur, nbSearches, dict, favorDecSpeed); + if (!newMatch.len) continue; + + if ( ((size_t)newMatch.len > sufficient_len) + || (newMatch.len + cur >= LZ4_OPT_NUM) ) { + /* immediate encoding */ + best_mlen = newMatch.len; + best_off = newMatch.off; + last_match_pos = cur + 1; + goto encode; + } + + /* before match : set price with literals at beginning */ + { int const baseLitlen = opt[cur].litlen; + int litlen; + for (litlen = 1; litlen < MINMATCH; litlen++) { + int const price = opt[cur].price - LZ4HC_literalsPrice(baseLitlen) + LZ4HC_literalsPrice(baseLitlen+litlen); + int const pos = cur + litlen; + if (price < opt[pos].price) { + opt[pos].mlen = 1; /* literal */ + opt[pos].off = 0; + opt[pos].litlen = baseLitlen+litlen; + opt[pos].price = price; + DEBUGLOG(7, "rPos:%3i => price:%3i (litlen=%i)", + pos, price, opt[pos].litlen); + } } } + + /* set prices using match at position = cur */ + { int const matchML = newMatch.len; + int ml = MINMATCH; + + assert(cur + newMatch.len < LZ4_OPT_NUM); + for ( ; ml <= matchML ; ml++) { + int const pos = cur + ml; + int const offset = newMatch.off; + int price; + int ll; + DEBUGLOG(7, "testing price rPos %i (last_match_pos=%i)", + pos, last_match_pos); + if (opt[cur].mlen == 1) { + ll = opt[cur].litlen; + price = ((cur > ll) ? opt[cur - ll].price : 0) + + LZ4HC_sequencePrice(ll, ml); + } else { + ll = 0; + price = opt[cur].price + LZ4HC_sequencePrice(0, ml); + } + + assert((U32)favorDecSpeed <= 1); + if (pos > last_match_pos+TRAILING_LITERALS + || price <= opt[pos].price - (int)favorDecSpeed) { + DEBUGLOG(7, "rPos:%3i => price:%3i (matchlen=%i)", + pos, price, ml); + assert(pos < LZ4_OPT_NUM); + if ( (ml == matchML) /* last pos of last match */ + && (last_match_pos < pos) ) + last_match_pos = pos; + opt[pos].mlen = ml; + opt[pos].off = offset; + opt[pos].litlen = ll; + opt[pos].price = price; + } } } + /* complete following positions with literals */ + { int addLit; + for (addLit = 1; addLit <= TRAILING_LITERALS; addLit ++) { + opt[last_match_pos+addLit].mlen = 1; /* literal */ + opt[last_match_pos+addLit].off = 0; + opt[last_match_pos+addLit].litlen = addLit; + opt[last_match_pos+addLit].price = opt[last_match_pos].price + LZ4HC_literalsPrice(addLit); + DEBUGLOG(7, "rPos:%3i => price:%3i (litlen=%i)", last_match_pos+addLit, opt[last_match_pos+addLit].price, addLit); + } } + } /* for (cur = 1; cur <= last_match_pos; cur++) */ + + assert(last_match_pos < LZ4_OPT_NUM + TRAILING_LITERALS); + best_mlen = opt[last_match_pos].mlen; + best_off = opt[last_match_pos].off; + cur = last_match_pos - best_mlen; + +encode: /* cur, last_match_pos, best_mlen, best_off must be set */ + assert(cur < LZ4_OPT_NUM); + assert(last_match_pos >= 1); /* == 1 when only one candidate */ + DEBUGLOG(6, "reverse traversal, looking for shortest path (last_match_pos=%i)", last_match_pos); + { int candidate_pos = cur; + int selected_matchLength = best_mlen; + int selected_offset = best_off; + while (1) { /* from end to beginning */ + int const next_matchLength = opt[candidate_pos].mlen; /* can be 1, means literal */ + int const next_offset = opt[candidate_pos].off; + DEBUGLOG(7, "pos %i: sequence length %i", candidate_pos, selected_matchLength); + opt[candidate_pos].mlen = selected_matchLength; + opt[candidate_pos].off = selected_offset; + selected_matchLength = next_matchLength; + selected_offset = next_offset; + if (next_matchLength > candidate_pos) break; /* last match elected, first match to encode */ + assert(next_matchLength > 0); /* can be 1, means literal */ + candidate_pos -= next_matchLength; + } } + + /* encode all recorded sequences in order */ + { int rPos = 0; /* relative position (to ip) */ + while (rPos < last_match_pos) { + int const ml = opt[rPos].mlen; + int const offset = opt[rPos].off; + if (ml == 1) { ip++; rPos++; continue; } /* literal; note: can end up with several literals, in which case, skip them */ + rPos += ml; + assert(ml >= MINMATCH); + assert((offset >= 1) && (offset <= LZ4_DISTANCE_MAX)); + opSaved = op; + if ( LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ip - offset, limit, oend) ) { /* updates ip, op and anchor */ + ovml = ml; + ovref = ip - offset; + goto _dest_overflow; + } } } + } /* while (ip <= mflimit) */ + +_last_literals: + /* Encode Last Literals */ + { size_t lastRunSize = (size_t)(iend - anchor); /* literals */ + size_t llAdd = (lastRunSize + 255 - RUN_MASK) / 255; + size_t const totalSize = 1 + llAdd + lastRunSize; + if (limit == fillOutput) oend += LASTLITERALS; /* restore correct value */ + if (limit && (op + totalSize > oend)) { + if (limit == limitedOutput) { /* Check output limit */ + retval = 0; + goto _return_label; + } + /* adapt lastRunSize to fill 'dst' */ + lastRunSize = (size_t)(oend - op) - 1 /*token*/; + llAdd = (lastRunSize + 256 - RUN_MASK) / 256; + lastRunSize -= llAdd; + } + DEBUGLOG(6, "Final literal run : %i literals", (int)lastRunSize); + ip = anchor + lastRunSize; /* can be != iend if limit==fillOutput */ + + if (lastRunSize >= RUN_MASK) { + size_t accumulator = lastRunSize - RUN_MASK; + *op++ = (RUN_MASK << ML_BITS); + for(; accumulator >= 255 ; accumulator -= 255) *op++ = 255; + *op++ = (BYTE) accumulator; + } else { + *op++ = (BYTE)(lastRunSize << ML_BITS); + } + memcpy(op, anchor, lastRunSize); + op += lastRunSize; + } + + /* End */ + *srcSizePtr = (int) (((const char*)ip) - source); + retval = (int) ((char*)op-dst); + goto _return_label; + +_dest_overflow: +if (limit == fillOutput) { + /* Assumption : ip, anchor, ovml and ovref must be set correctly */ + size_t const ll = (size_t)(ip - anchor); + size_t const ll_addbytes = (ll + 240) / 255; + size_t const ll_totalCost = 1 + ll_addbytes + ll; + BYTE* const maxLitPos = oend - 3; /* 2 for offset, 1 for token */ + DEBUGLOG(6, "Last sequence overflowing (only %i bytes remaining)", (int)(oend-1-opSaved)); + op = opSaved; /* restore correct out pointer */ + if (op + ll_totalCost <= maxLitPos) { + /* ll validated; now adjust match length */ + size_t const bytesLeftForMl = (size_t)(maxLitPos - (op+ll_totalCost)); + size_t const maxMlSize = MINMATCH + (ML_MASK-1) + (bytesLeftForMl * 255); + assert(maxMlSize < INT_MAX); assert(ovml >= 0); + if ((size_t)ovml > maxMlSize) ovml = (int)maxMlSize; + if ((oend + LASTLITERALS) - (op + ll_totalCost + 2) - 1 + ovml >= MFLIMIT) { + DEBUGLOG(6, "Space to end : %i + ml (%i)", (int)((oend + LASTLITERALS) - (op + ll_totalCost + 2) - 1), ovml); + DEBUGLOG(6, "Before : ip = %p, anchor = %p", ip, anchor); + LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ovml, ovref, notLimited, oend); + DEBUGLOG(6, "After : ip = %p, anchor = %p", ip, anchor); + } } + goto _last_literals; +} +_return_label: +#ifdef LZ4HC_HEAPMODE + FREEMEM(opt); +#endif + return retval; +} +/* + * LZ4 auto-framing library + * Copyright (C) 2011-2016, Yann Collet. + * + * BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * You can contact the author at : + * - LZ4 homepage : http://www.lz4.org + * - LZ4 source repository : https://github.com/lz4/lz4 + */ + +/* LZ4F is a stand-alone API to create LZ4-compressed Frames + * in full conformance with specification v1.6.1 . + * This library rely upon memory management capabilities (malloc, free) + * provided either by , + * or redirected towards another library of user's choice + * (see Memory Routines below). + */ + + +/*-************************************ +* Compiler Options +**************************************/ +#ifdef _MSC_VER /* Visual Studio */ +# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */ +#endif + + +/*-************************************ +* Tuning parameters +**************************************/ +/* + * LZ4F_HEAPMODE : + * Select how default compression functions will allocate memory for their hash table, + * in memory stack (0:default, fastest), or in memory heap (1:requires malloc()). + */ +#ifndef LZ4F_HEAPMODE +# define LZ4F_HEAPMODE 0 +#endif + + +/*-************************************ +* Memory routines +**************************************/ +/* + * User may redirect invocations of + * malloc(), calloc() and free() + * towards another library or solution of their choice + * by modifying below section. + */ +#ifndef LZ4_SRC_INCLUDED /* avoid redefinition when sources are coalesced */ +# include /* malloc, calloc, free */ +# define ALLOC(s) malloc(s) +# define ALLOC_AND_ZERO(s) calloc(1,(s)) +# define FREEMEM(p) free(p) +#endif + +#include /* memset, memcpy, memmove */ +#ifndef LZ4_SRC_INCLUDED /* avoid redefinition when sources are coalesced */ +# define MEM_INIT(p,v,s) memset((p),(v),(s)) +#endif + + +/*-************************************ +* Library declarations +**************************************/ +#define LZ4F_STATIC_LINKING_ONLY +#include "lz4frame.h" +#define LZ4_STATIC_LINKING_ONLY +#include "lz4.h" +#define LZ4_HC_STATIC_LINKING_ONLY +#include "lz4hc.h" +#define XXH_STATIC_LINKING_ONLY +#include "xxhash.h" + + +/*-************************************ +* Debug +**************************************/ +#if defined(LZ4_DEBUG) && (LZ4_DEBUG>=1) +# include +#else +# ifndef assert +# define assert(condition) ((void)0) +# endif +#endif + +#define LZ4F_STATIC_ASSERT(c) { enum { LZ4F_static_assert = 1/(int)(!!(c)) }; } /* use only *after* variable declarations */ + +#if defined(LZ4_DEBUG) && (LZ4_DEBUG>=2) && !defined(DEBUGLOG) +# include +static int g_debuglog_enable = 1; +# define DEBUGLOG(l, ...) { \ + if ((g_debuglog_enable) && (l<=LZ4_DEBUG)) { \ + fprintf(stderr, __FILE__ ": "); \ + fprintf(stderr, __VA_ARGS__); \ + fprintf(stderr, " \n"); \ + } } +#else +# define DEBUGLOG(l, ...) {} /* disabled */ +#endif + + +/*-************************************ +* Basic Types +**************************************/ +#if !defined (__VMS) && (defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) ) +# include + typedef uint8_t BYTE; + typedef uint16_t U16; + typedef uint32_t U32; + typedef int32_t S32; + typedef uint64_t U64; +#else + typedef unsigned char BYTE; + typedef unsigned short U16; + typedef unsigned int U32; + typedef signed int S32; + typedef unsigned long long U64; +#endif + + +/* unoptimized version; solves endianess & alignment issues */ +static U32 LZ4F_readLE32 (const void* src) +{ + const BYTE* const srcPtr = (const BYTE*)src; + U32 value32 = srcPtr[0]; + value32 += ((U32)srcPtr[1])<< 8; + value32 += ((U32)srcPtr[2])<<16; + value32 += ((U32)srcPtr[3])<<24; + return value32; +} + +static void LZ4F_writeLE32 (void* dst, U32 value32) +{ + BYTE* const dstPtr = (BYTE*)dst; + dstPtr[0] = (BYTE)value32; + dstPtr[1] = (BYTE)(value32 >> 8); + dstPtr[2] = (BYTE)(value32 >> 16); + dstPtr[3] = (BYTE)(value32 >> 24); +} + +static U64 LZ4F_readLE64 (const void* src) +{ + const BYTE* const srcPtr = (const BYTE*)src; + U64 value64 = srcPtr[0]; + value64 += ((U64)srcPtr[1]<<8); + value64 += ((U64)srcPtr[2]<<16); + value64 += ((U64)srcPtr[3]<<24); + value64 += ((U64)srcPtr[4]<<32); + value64 += ((U64)srcPtr[5]<<40); + value64 += ((U64)srcPtr[6]<<48); + value64 += ((U64)srcPtr[7]<<56); + return value64; +} + +static void LZ4F_writeLE64 (void* dst, U64 value64) +{ + BYTE* const dstPtr = (BYTE*)dst; + dstPtr[0] = (BYTE)value64; + dstPtr[1] = (BYTE)(value64 >> 8); + dstPtr[2] = (BYTE)(value64 >> 16); + dstPtr[3] = (BYTE)(value64 >> 24); + dstPtr[4] = (BYTE)(value64 >> 32); + dstPtr[5] = (BYTE)(value64 >> 40); + dstPtr[6] = (BYTE)(value64 >> 48); + dstPtr[7] = (BYTE)(value64 >> 56); +} + + +/*-************************************ +* Constants +**************************************/ +#ifndef LZ4_SRC_INCLUDED /* avoid double definition */ +# define KB *(1<<10) +# define MB *(1<<20) +# define GB *(1<<30) +#endif + +#define _1BIT 0x01 +#define _2BITS 0x03 +#define _3BITS 0x07 +#define _4BITS 0x0F +#define _8BITS 0xFF + +#define LZ4F_MAGIC_SKIPPABLE_START 0x184D2A50U +#define LZ4F_MAGICNUMBER 0x184D2204U +#define LZ4F_BLOCKUNCOMPRESSED_FLAG 0x80000000U +#define LZ4F_BLOCKSIZEID_DEFAULT LZ4F_max64KB + +static const size_t minFHSize = LZ4F_HEADER_SIZE_MIN; /* 7 */ +static const size_t maxFHSize = LZ4F_HEADER_SIZE_MAX; /* 19 */ +static const size_t BHSize = LZ4F_BLOCK_HEADER_SIZE; /* block header : size, and compress flag */ +static const size_t BFSize = LZ4F_BLOCK_CHECKSUM_SIZE; /* block footer : checksum (optional) */ + + +/*-************************************ +* Structures and local types +**************************************/ +typedef struct LZ4F_cctx_s +{ + LZ4F_preferences_t prefs; + U32 version; + U32 cStage; + const LZ4F_CDict* cdict; + size_t maxBlockSize; + size_t maxBufferSize; + BYTE* tmpBuff; + BYTE* tmpIn; + size_t tmpInSize; + U64 totalInSize; + XXH32_state_t xxh; + void* lz4CtxPtr; + U16 lz4CtxAlloc; /* sized for: 0 = none, 1 = lz4 ctx, 2 = lz4hc ctx */ + U16 lz4CtxState; /* in use as: 0 = none, 1 = lz4 ctx, 2 = lz4hc ctx */ +} LZ4F_cctx_t; + + +/*-************************************ +* Error management +**************************************/ +#define LZ4F_GENERATE_STRING(STRING) #STRING, +static const char* LZ4F_errorStrings[] = { LZ4F_LIST_ERRORS(LZ4F_GENERATE_STRING) }; + + +unsigned LZ4F_isError(LZ4F_errorCode_t code) +{ + return (code > (LZ4F_errorCode_t)(-LZ4F_ERROR_maxCode)); +} + +const char* LZ4F_getErrorName(LZ4F_errorCode_t code) +{ + static const char* codeError = "Unspecified error code"; + if (LZ4F_isError(code)) return LZ4F_errorStrings[-(int)(code)]; + return codeError; +} + +LZ4F_errorCodes LZ4F_getErrorCode(size_t functionResult) +{ + if (!LZ4F_isError(functionResult)) return LZ4F_OK_NoError; + return (LZ4F_errorCodes)(-(ptrdiff_t)functionResult); +} + +static LZ4F_errorCode_t err0r(LZ4F_errorCodes code) +{ + /* A compilation error here means sizeof(ptrdiff_t) is not large enough */ + LZ4F_STATIC_ASSERT(sizeof(ptrdiff_t) >= sizeof(size_t)); + return (LZ4F_errorCode_t)-(ptrdiff_t)code; +} + +unsigned LZ4F_getVersion(void) { return LZ4F_VERSION; } + +int LZ4F_compressionLevel_max(void) { return LZ4HC_CLEVEL_MAX; } + +size_t LZ4F_getBlockSize(unsigned blockSizeID) +{ + static const size_t blockSizes[4] = { 64 KB, 256 KB, 1 MB, 4 MB }; + + if (blockSizeID == 0) blockSizeID = LZ4F_BLOCKSIZEID_DEFAULT; + if (blockSizeID < LZ4F_max64KB || blockSizeID > LZ4F_max4MB) + return err0r(LZ4F_ERROR_maxBlockSize_invalid); + blockSizeID -= LZ4F_max64KB; + return blockSizes[blockSizeID]; +} + +/*-************************************ +* Private functions +**************************************/ +#define MIN(a,b) ( (a) < (b) ? (a) : (b) ) + +static BYTE LZ4F_headerChecksum (const void* header, size_t length) +{ + U32 const xxh = XXH32(header, length, 0); + return (BYTE)(xxh >> 8); +} + + +/*-************************************ +* Simple-pass compression functions +**************************************/ +static LZ4F_blockSizeID_t LZ4F_optimalBSID(const LZ4F_blockSizeID_t requestedBSID, + const size_t srcSize) +{ + LZ4F_blockSizeID_t proposedBSID = LZ4F_max64KB; + size_t maxBlockSize = 64 KB; + while (requestedBSID > proposedBSID) { + if (srcSize <= maxBlockSize) + return proposedBSID; + proposedBSID = (LZ4F_blockSizeID_t)((int)proposedBSID + 1); + maxBlockSize <<= 2; + } + return requestedBSID; +} + +/*! LZ4F_compressBound_internal() : + * Provides dstCapacity given a srcSize to guarantee operation success in worst case situations. + * prefsPtr is optional : if NULL is provided, preferences will be set to cover worst case scenario. + * @return is always the same for a srcSize and prefsPtr, so it can be relied upon to size reusable buffers. + * When srcSize==0, LZ4F_compressBound() provides an upper bound for LZ4F_flush() and LZ4F_compressEnd() operations. + */ +static size_t LZ4F_compressBound_internal(size_t srcSize, + const LZ4F_preferences_t* preferencesPtr, + size_t alreadyBuffered) +{ + LZ4F_preferences_t prefsNull = LZ4F_INIT_PREFERENCES; + prefsNull.frameInfo.contentChecksumFlag = LZ4F_contentChecksumEnabled; /* worst case */ + prefsNull.frameInfo.blockChecksumFlag = LZ4F_blockChecksumEnabled; /* worst case */ + { const LZ4F_preferences_t* const prefsPtr = (preferencesPtr==NULL) ? &prefsNull : preferencesPtr; + U32 const flush = prefsPtr->autoFlush | (srcSize==0); + LZ4F_blockSizeID_t const blockID = prefsPtr->frameInfo.blockSizeID; + size_t const blockSize = LZ4F_getBlockSize(blockID); + size_t const maxBuffered = blockSize - 1; + size_t const bufferedSize = MIN(alreadyBuffered, maxBuffered); + size_t const maxSrcSize = srcSize + bufferedSize; + unsigned const nbFullBlocks = (unsigned)(maxSrcSize / blockSize); + size_t const partialBlockSize = maxSrcSize & (blockSize-1); + size_t const lastBlockSize = flush ? partialBlockSize : 0; + unsigned const nbBlocks = nbFullBlocks + (lastBlockSize>0); + + size_t const blockCRCSize = BFSize * prefsPtr->frameInfo.blockChecksumFlag; + size_t const frameEnd = BHSize + (prefsPtr->frameInfo.contentChecksumFlag*BFSize); + + return ((BHSize + blockCRCSize) * nbBlocks) + + (blockSize * nbFullBlocks) + lastBlockSize + frameEnd; + } +} + +size_t LZ4F_compressFrameBound(size_t srcSize, const LZ4F_preferences_t* preferencesPtr) +{ + LZ4F_preferences_t prefs; + size_t const headerSize = maxFHSize; /* max header size, including optional fields */ + + if (preferencesPtr!=NULL) prefs = *preferencesPtr; + else MEM_INIT(&prefs, 0, sizeof(prefs)); + prefs.autoFlush = 1; + + return headerSize + LZ4F_compressBound_internal(srcSize, &prefs, 0);; +} + + +/*! LZ4F_compressFrame_usingCDict() : + * Compress srcBuffer using a dictionary, in a single step. + * cdict can be NULL, in which case, no dictionary is used. + * dstBuffer MUST be >= LZ4F_compressFrameBound(srcSize, preferencesPtr). + * The LZ4F_preferences_t structure is optional : you may provide NULL as argument, + * however, it's the only way to provide a dictID, so it's not recommended. + * @return : number of bytes written into dstBuffer, + * or an error code if it fails (can be tested using LZ4F_isError()) + */ +size_t LZ4F_compressFrame_usingCDict(LZ4F_cctx* cctx, + void* dstBuffer, size_t dstCapacity, + const void* srcBuffer, size_t srcSize, + const LZ4F_CDict* cdict, + const LZ4F_preferences_t* preferencesPtr) +{ + LZ4F_preferences_t prefs; + LZ4F_compressOptions_t options; + BYTE* const dstStart = (BYTE*) dstBuffer; + BYTE* dstPtr = dstStart; + BYTE* const dstEnd = dstStart + dstCapacity; + + if (preferencesPtr!=NULL) + prefs = *preferencesPtr; + else + MEM_INIT(&prefs, 0, sizeof(prefs)); + if (prefs.frameInfo.contentSize != 0) + prefs.frameInfo.contentSize = (U64)srcSize; /* auto-correct content size if selected (!=0) */ + + prefs.frameInfo.blockSizeID = LZ4F_optimalBSID(prefs.frameInfo.blockSizeID, srcSize); + prefs.autoFlush = 1; + if (srcSize <= LZ4F_getBlockSize(prefs.frameInfo.blockSizeID)) + prefs.frameInfo.blockMode = LZ4F_blockIndependent; /* only one block => no need for inter-block link */ + + MEM_INIT(&options, 0, sizeof(options)); + options.stableSrc = 1; + + if (dstCapacity < LZ4F_compressFrameBound(srcSize, &prefs)) /* condition to guarantee success */ + return err0r(LZ4F_ERROR_dstMaxSize_tooSmall); + + { size_t const headerSize = LZ4F_compressBegin_usingCDict(cctx, dstBuffer, dstCapacity, cdict, &prefs); /* write header */ + if (LZ4F_isError(headerSize)) return headerSize; + dstPtr += headerSize; /* header size */ } + + assert(dstEnd >= dstPtr); + { size_t const cSize = LZ4F_compressUpdate(cctx, dstPtr, (size_t)(dstEnd-dstPtr), srcBuffer, srcSize, &options); + if (LZ4F_isError(cSize)) return cSize; + dstPtr += cSize; } + + assert(dstEnd >= dstPtr); + { size_t const tailSize = LZ4F_compressEnd(cctx, dstPtr, (size_t)(dstEnd-dstPtr), &options); /* flush last block, and generate suffix */ + if (LZ4F_isError(tailSize)) return tailSize; + dstPtr += tailSize; } + + assert(dstEnd >= dstStart); + return (size_t)(dstPtr - dstStart); +} + + +/*! LZ4F_compressFrame() : + * Compress an entire srcBuffer into a valid LZ4 frame, in a single step. + * dstBuffer MUST be >= LZ4F_compressFrameBound(srcSize, preferencesPtr). + * The LZ4F_preferences_t structure is optional : you can provide NULL as argument. All preferences will be set to default. + * @return : number of bytes written into dstBuffer. + * or an error code if it fails (can be tested using LZ4F_isError()) + */ +size_t LZ4F_compressFrame(void* dstBuffer, size_t dstCapacity, + const void* srcBuffer, size_t srcSize, + const LZ4F_preferences_t* preferencesPtr) +{ + size_t result; +#if (LZ4F_HEAPMODE) + LZ4F_cctx_t *cctxPtr; + result = LZ4F_createCompressionContext(&cctxPtr, LZ4F_VERSION); + if (LZ4F_isError(result)) return result; +#else + LZ4F_cctx_t cctx; + LZ4_stream_t lz4ctx; + LZ4F_cctx_t *cctxPtr = &cctx; + + DEBUGLOG(4, "LZ4F_compressFrame"); + MEM_INIT(&cctx, 0, sizeof(cctx)); + cctx.version = LZ4F_VERSION; + cctx.maxBufferSize = 5 MB; /* mess with real buffer size to prevent dynamic allocation; works only because autoflush==1 & stableSrc==1 */ + if (preferencesPtr == NULL || + preferencesPtr->compressionLevel < LZ4HC_CLEVEL_MIN) + { + LZ4_initStream(&lz4ctx, sizeof(lz4ctx)); + cctxPtr->lz4CtxPtr = &lz4ctx; + cctxPtr->lz4CtxAlloc = 1; + cctxPtr->lz4CtxState = 1; + } +#endif + + result = LZ4F_compressFrame_usingCDict(cctxPtr, dstBuffer, dstCapacity, + srcBuffer, srcSize, + NULL, preferencesPtr); + +#if (LZ4F_HEAPMODE) + LZ4F_freeCompressionContext(cctxPtr); +#else + if (preferencesPtr != NULL && + preferencesPtr->compressionLevel >= LZ4HC_CLEVEL_MIN) + { + FREEMEM(cctxPtr->lz4CtxPtr); + } +#endif + return result; +} + + +/*-*************************************************** +* Dictionary compression +*****************************************************/ + +struct LZ4F_CDict_s { + void* dictContent; + LZ4_stream_t* fastCtx; + LZ4_streamHC_t* HCCtx; +}; /* typedef'd to LZ4F_CDict within lz4frame_static.h */ + +/*! LZ4F_createCDict() : + * When compressing multiple messages / blocks with the same dictionary, it's recommended to load it just once. + * LZ4F_createCDict() will create a digested dictionary, ready to start future compression operations without startup delay. + * LZ4F_CDict can be created once and shared by multiple threads concurrently, since its usage is read-only. + * `dictBuffer` can be released after LZ4F_CDict creation, since its content is copied within CDict + * @return : digested dictionary for compression, or NULL if failed */ +LZ4F_CDict* LZ4F_createCDict(const void* dictBuffer, size_t dictSize) +{ + const char* dictStart = (const char*)dictBuffer; + LZ4F_CDict* cdict = (LZ4F_CDict*) ALLOC(sizeof(*cdict)); + DEBUGLOG(4, "LZ4F_createCDict"); + if (!cdict) return NULL; + if (dictSize > 64 KB) { + dictStart += dictSize - 64 KB; + dictSize = 64 KB; + } + cdict->dictContent = ALLOC(dictSize); + cdict->fastCtx = LZ4_createStream(); + cdict->HCCtx = LZ4_createStreamHC(); + if (!cdict->dictContent || !cdict->fastCtx || !cdict->HCCtx) { + LZ4F_freeCDict(cdict); + return NULL; + } + memcpy(cdict->dictContent, dictStart, dictSize); + LZ4_loadDict (cdict->fastCtx, (const char*)cdict->dictContent, (int)dictSize); + LZ4_setCompressionLevel(cdict->HCCtx, LZ4HC_CLEVEL_DEFAULT); + LZ4_loadDictHC(cdict->HCCtx, (const char*)cdict->dictContent, (int)dictSize); + return cdict; +} + +void LZ4F_freeCDict(LZ4F_CDict* cdict) +{ + if (cdict==NULL) return; /* support free on NULL */ + FREEMEM(cdict->dictContent); + LZ4_freeStream(cdict->fastCtx); + LZ4_freeStreamHC(cdict->HCCtx); + FREEMEM(cdict); +} + + +/*-********************************* +* Advanced compression functions +***********************************/ + +/*! LZ4F_createCompressionContext() : + * The first thing to do is to create a compressionContext object, which will be used in all compression operations. + * This is achieved using LZ4F_createCompressionContext(), which takes as argument a version and an LZ4F_preferences_t structure. + * The version provided MUST be LZ4F_VERSION. It is intended to track potential incompatible differences between different binaries. + * The function will provide a pointer to an allocated LZ4F_compressionContext_t object. + * If the result LZ4F_errorCode_t is not OK_NoError, there was an error during context creation. + * Object can release its memory using LZ4F_freeCompressionContext(); + */ +LZ4F_errorCode_t LZ4F_createCompressionContext(LZ4F_cctx** LZ4F_compressionContextPtr, unsigned version) +{ + LZ4F_cctx_t* const cctxPtr = (LZ4F_cctx_t*)ALLOC_AND_ZERO(sizeof(LZ4F_cctx_t)); + if (cctxPtr==NULL) return err0r(LZ4F_ERROR_allocation_failed); + + cctxPtr->version = version; + cctxPtr->cStage = 0; /* Next stage : init stream */ + + *LZ4F_compressionContextPtr = cctxPtr; + + return LZ4F_OK_NoError; +} + + +LZ4F_errorCode_t LZ4F_freeCompressionContext(LZ4F_cctx* cctxPtr) +{ + if (cctxPtr != NULL) { /* support free on NULL */ + FREEMEM(cctxPtr->lz4CtxPtr); /* note: LZ4_streamHC_t and LZ4_stream_t are simple POD types */ + FREEMEM(cctxPtr->tmpBuff); + FREEMEM(cctxPtr); + } + + return LZ4F_OK_NoError; +} + + +/** + * This function prepares the internal LZ4(HC) stream for a new compression, + * resetting the context and attaching the dictionary, if there is one. + * + * It needs to be called at the beginning of each independent compression + * stream (i.e., at the beginning of a frame in blockLinked mode, or at the + * beginning of each block in blockIndependent mode). + */ +static void LZ4F_initStream(void* ctx, + const LZ4F_CDict* cdict, + int level, + LZ4F_blockMode_t blockMode) { + if (level < LZ4HC_CLEVEL_MIN) { + if (cdict != NULL || blockMode == LZ4F_blockLinked) { + /* In these cases, we will call LZ4_compress_fast_continue(), + * which needs an already reset context. Otherwise, we'll call a + * one-shot API. The non-continued APIs internally perform their own + * resets at the beginning of their calls, where they know what + * tableType they need the context to be in. So in that case this + * would be misguided / wasted work. */ + LZ4_resetStream_fast((LZ4_stream_t*)ctx); + } + LZ4_attach_dictionary((LZ4_stream_t *)ctx, cdict ? cdict->fastCtx : NULL); + } else { + LZ4_resetStreamHC_fast((LZ4_streamHC_t*)ctx, level); + LZ4_attach_HC_dictionary((LZ4_streamHC_t *)ctx, cdict ? cdict->HCCtx : NULL); + } +} + + +/*! LZ4F_compressBegin_usingCDict() : + * init streaming compression and writes frame header into dstBuffer. + * dstBuffer must be >= LZ4F_HEADER_SIZE_MAX bytes. + * @return : number of bytes written into dstBuffer for the header + * or an error code (can be tested using LZ4F_isError()) + */ +size_t LZ4F_compressBegin_usingCDict(LZ4F_cctx* cctxPtr, + void* dstBuffer, size_t dstCapacity, + const LZ4F_CDict* cdict, + const LZ4F_preferences_t* preferencesPtr) +{ + LZ4F_preferences_t prefNull; + BYTE* const dstStart = (BYTE*)dstBuffer; + BYTE* dstPtr = dstStart; + BYTE* headerStart; + + if (dstCapacity < maxFHSize) return err0r(LZ4F_ERROR_dstMaxSize_tooSmall); + MEM_INIT(&prefNull, 0, sizeof(prefNull)); + if (preferencesPtr == NULL) preferencesPtr = &prefNull; + cctxPtr->prefs = *preferencesPtr; + + /* Ctx Management */ + { U16 const ctxTypeID = (cctxPtr->prefs.compressionLevel < LZ4HC_CLEVEL_MIN) ? 1 : 2; + if (cctxPtr->lz4CtxAlloc < ctxTypeID) { + FREEMEM(cctxPtr->lz4CtxPtr); + if (cctxPtr->prefs.compressionLevel < LZ4HC_CLEVEL_MIN) { + cctxPtr->lz4CtxPtr = LZ4_createStream(); + } else { + cctxPtr->lz4CtxPtr = LZ4_createStreamHC(); + } + if (cctxPtr->lz4CtxPtr == NULL) + return err0r(LZ4F_ERROR_allocation_failed); + cctxPtr->lz4CtxAlloc = ctxTypeID; + cctxPtr->lz4CtxState = ctxTypeID; + } else if (cctxPtr->lz4CtxState != ctxTypeID) { + /* otherwise, a sufficient buffer is allocated, but we need to + * reset it to the correct context type */ + if (cctxPtr->prefs.compressionLevel < LZ4HC_CLEVEL_MIN) { + LZ4_initStream((LZ4_stream_t *) cctxPtr->lz4CtxPtr, sizeof (LZ4_stream_t)); + } else { + LZ4_initStreamHC((LZ4_streamHC_t *) cctxPtr->lz4CtxPtr, sizeof(LZ4_streamHC_t)); + LZ4_setCompressionLevel((LZ4_streamHC_t *) cctxPtr->lz4CtxPtr, cctxPtr->prefs.compressionLevel); + } + cctxPtr->lz4CtxState = ctxTypeID; + } + } + + /* Buffer Management */ + if (cctxPtr->prefs.frameInfo.blockSizeID == 0) + cctxPtr->prefs.frameInfo.blockSizeID = LZ4F_BLOCKSIZEID_DEFAULT; + cctxPtr->maxBlockSize = LZ4F_getBlockSize(cctxPtr->prefs.frameInfo.blockSizeID); + + { size_t const requiredBuffSize = preferencesPtr->autoFlush ? + ((cctxPtr->prefs.frameInfo.blockMode == LZ4F_blockLinked) ? 64 KB : 0) : /* only needs past data up to window size */ + cctxPtr->maxBlockSize + ((cctxPtr->prefs.frameInfo.blockMode == LZ4F_blockLinked) ? 128 KB : 0); + + if (cctxPtr->maxBufferSize < requiredBuffSize) { + cctxPtr->maxBufferSize = 0; + FREEMEM(cctxPtr->tmpBuff); + cctxPtr->tmpBuff = (BYTE*)ALLOC_AND_ZERO(requiredBuffSize); + if (cctxPtr->tmpBuff == NULL) return err0r(LZ4F_ERROR_allocation_failed); + cctxPtr->maxBufferSize = requiredBuffSize; + } } + cctxPtr->tmpIn = cctxPtr->tmpBuff; + cctxPtr->tmpInSize = 0; + (void)XXH32_reset(&(cctxPtr->xxh), 0); + + /* context init */ + cctxPtr->cdict = cdict; + if (cctxPtr->prefs.frameInfo.blockMode == LZ4F_blockLinked) { + /* frame init only for blockLinked : blockIndependent will be init at each block */ + LZ4F_initStream(cctxPtr->lz4CtxPtr, cdict, cctxPtr->prefs.compressionLevel, LZ4F_blockLinked); + } + if (preferencesPtr->compressionLevel >= LZ4HC_CLEVEL_MIN) { + LZ4_favorDecompressionSpeed((LZ4_streamHC_t*)cctxPtr->lz4CtxPtr, (int)preferencesPtr->favorDecSpeed); + } + + /* Magic Number */ + LZ4F_writeLE32(dstPtr, LZ4F_MAGICNUMBER); + dstPtr += 4; + headerStart = dstPtr; + + /* FLG Byte */ + *dstPtr++ = (BYTE)(((1 & _2BITS) << 6) /* Version('01') */ + + ((cctxPtr->prefs.frameInfo.blockMode & _1BIT ) << 5) + + ((cctxPtr->prefs.frameInfo.blockChecksumFlag & _1BIT ) << 4) + + ((unsigned)(cctxPtr->prefs.frameInfo.contentSize > 0) << 3) + + ((cctxPtr->prefs.frameInfo.contentChecksumFlag & _1BIT ) << 2) + + (cctxPtr->prefs.frameInfo.dictID > 0) ); + /* BD Byte */ + *dstPtr++ = (BYTE)((cctxPtr->prefs.frameInfo.blockSizeID & _3BITS) << 4); + /* Optional Frame content size field */ + if (cctxPtr->prefs.frameInfo.contentSize) { + LZ4F_writeLE64(dstPtr, cctxPtr->prefs.frameInfo.contentSize); + dstPtr += 8; + cctxPtr->totalInSize = 0; + } + /* Optional dictionary ID field */ + if (cctxPtr->prefs.frameInfo.dictID) { + LZ4F_writeLE32(dstPtr, cctxPtr->prefs.frameInfo.dictID); + dstPtr += 4; + } + /* Header CRC Byte */ + *dstPtr = LZ4F_headerChecksum(headerStart, (size_t)(dstPtr - headerStart)); + dstPtr++; + + cctxPtr->cStage = 1; /* header written, now request input data block */ + return (size_t)(dstPtr - dstStart); +} + + +/*! LZ4F_compressBegin() : + * init streaming compression and writes frame header into dstBuffer. + * dstBuffer must be >= LZ4F_HEADER_SIZE_MAX bytes. + * preferencesPtr can be NULL, in which case default parameters are selected. + * @return : number of bytes written into dstBuffer for the header + * or an error code (can be tested using LZ4F_isError()) + */ +size_t LZ4F_compressBegin(LZ4F_cctx* cctxPtr, + void* dstBuffer, size_t dstCapacity, + const LZ4F_preferences_t* preferencesPtr) +{ + return LZ4F_compressBegin_usingCDict(cctxPtr, dstBuffer, dstCapacity, + NULL, preferencesPtr); +} + + +/* LZ4F_compressBound() : + * @return minimum capacity of dstBuffer for a given srcSize to handle worst case scenario. + * LZ4F_preferences_t structure is optional : if NULL, preferences will be set to cover worst case scenario. + * This function cannot fail. + */ +size_t LZ4F_compressBound(size_t srcSize, const LZ4F_preferences_t* preferencesPtr) +{ + if (preferencesPtr && preferencesPtr->autoFlush) { + return LZ4F_compressBound_internal(srcSize, preferencesPtr, 0); + } + return LZ4F_compressBound_internal(srcSize, preferencesPtr, (size_t)-1); +} + + +typedef int (*compressFunc_t)(void* ctx, const char* src, char* dst, int srcSize, int dstSize, int level, const LZ4F_CDict* cdict); + + +/*! LZ4F_makeBlock(): + * compress a single block, add header and optional checksum. + * assumption : dst buffer capacity is >= BHSize + srcSize + crcSize + */ +static size_t LZ4F_makeBlock(void* dst, + const void* src, size_t srcSize, + compressFunc_t compress, void* lz4ctx, int level, + const LZ4F_CDict* cdict, + LZ4F_blockChecksum_t crcFlag) +{ + BYTE* const cSizePtr = (BYTE*)dst; + U32 cSize = (U32)compress(lz4ctx, (const char*)src, (char*)(cSizePtr+BHSize), + (int)(srcSize), (int)(srcSize-1), + level, cdict); + if (cSize == 0) { /* compression failed */ + DEBUGLOG(5, "LZ4F_makeBlock: compression failed, creating a raw block (size %u)", (U32)srcSize); + cSize = (U32)srcSize; + LZ4F_writeLE32(cSizePtr, cSize | LZ4F_BLOCKUNCOMPRESSED_FLAG); + memcpy(cSizePtr+BHSize, src, srcSize); + } else { + LZ4F_writeLE32(cSizePtr, cSize); + } + if (crcFlag) { + U32 const crc32 = XXH32(cSizePtr+BHSize, cSize, 0); /* checksum of compressed data */ + LZ4F_writeLE32(cSizePtr+BHSize+cSize, crc32); + } + return BHSize + cSize + ((U32)crcFlag)*BFSize; +} + + +static int LZ4F_compressBlock(void* ctx, const char* src, char* dst, int srcSize, int dstCapacity, int level, const LZ4F_CDict* cdict) +{ + int const acceleration = (level < 0) ? -level + 1 : 1; + LZ4F_initStream(ctx, cdict, level, LZ4F_blockIndependent); + if (cdict) { + return LZ4_compress_fast_continue((LZ4_stream_t*)ctx, src, dst, srcSize, dstCapacity, acceleration); + } else { + return LZ4_compress_fast_extState_fastReset(ctx, src, dst, srcSize, dstCapacity, acceleration); + } +} + +static int LZ4F_compressBlock_continue(void* ctx, const char* src, char* dst, int srcSize, int dstCapacity, int level, const LZ4F_CDict* cdict) +{ + int const acceleration = (level < 0) ? -level + 1 : 1; + (void)cdict; /* init once at beginning of frame */ + return LZ4_compress_fast_continue((LZ4_stream_t*)ctx, src, dst, srcSize, dstCapacity, acceleration); +} + +static int LZ4F_compressBlockHC(void* ctx, const char* src, char* dst, int srcSize, int dstCapacity, int level, const LZ4F_CDict* cdict) +{ + LZ4F_initStream(ctx, cdict, level, LZ4F_blockIndependent); + if (cdict) { + return LZ4_compress_HC_continue((LZ4_streamHC_t*)ctx, src, dst, srcSize, dstCapacity); + } + return LZ4_compress_HC_extStateHC_fastReset(ctx, src, dst, srcSize, dstCapacity, level); +} + +static int LZ4F_compressBlockHC_continue(void* ctx, const char* src, char* dst, int srcSize, int dstCapacity, int level, const LZ4F_CDict* cdict) +{ + (void)level; (void)cdict; /* init once at beginning of frame */ + return LZ4_compress_HC_continue((LZ4_streamHC_t*)ctx, src, dst, srcSize, dstCapacity); +} + +static compressFunc_t LZ4F_selectCompression(LZ4F_blockMode_t blockMode, int level) +{ + if (level < LZ4HC_CLEVEL_MIN) { + if (blockMode == LZ4F_blockIndependent) return LZ4F_compressBlock; + return LZ4F_compressBlock_continue; + } + if (blockMode == LZ4F_blockIndependent) return LZ4F_compressBlockHC; + return LZ4F_compressBlockHC_continue; +} + +static int LZ4F_localSaveDict(LZ4F_cctx_t* cctxPtr) +{ + if (cctxPtr->prefs.compressionLevel < LZ4HC_CLEVEL_MIN) + return LZ4_saveDict ((LZ4_stream_t*)(cctxPtr->lz4CtxPtr), (char*)(cctxPtr->tmpBuff), 64 KB); + return LZ4_saveDictHC ((LZ4_streamHC_t*)(cctxPtr->lz4CtxPtr), (char*)(cctxPtr->tmpBuff), 64 KB); +} + +typedef enum { notDone, fromTmpBuffer, fromSrcBuffer } LZ4F_lastBlockStatus; + +/*! LZ4F_compressUpdate() : + * LZ4F_compressUpdate() can be called repetitively to compress as much data as necessary. + * dstBuffer MUST be >= LZ4F_compressBound(srcSize, preferencesPtr). + * LZ4F_compressOptions_t structure is optional : you can provide NULL as argument. + * @return : the number of bytes written into dstBuffer. It can be zero, meaning input data was just buffered. + * or an error code if it fails (which can be tested using LZ4F_isError()) + */ +size_t LZ4F_compressUpdate(LZ4F_cctx* cctxPtr, + void* dstBuffer, size_t dstCapacity, + const void* srcBuffer, size_t srcSize, + const LZ4F_compressOptions_t* compressOptionsPtr) +{ + LZ4F_compressOptions_t cOptionsNull; + size_t const blockSize = cctxPtr->maxBlockSize; + const BYTE* srcPtr = (const BYTE*)srcBuffer; + const BYTE* const srcEnd = srcPtr + srcSize; + BYTE* const dstStart = (BYTE*)dstBuffer; + BYTE* dstPtr = dstStart; + LZ4F_lastBlockStatus lastBlockCompressed = notDone; + compressFunc_t const compress = LZ4F_selectCompression(cctxPtr->prefs.frameInfo.blockMode, cctxPtr->prefs.compressionLevel); + + DEBUGLOG(4, "LZ4F_compressUpdate (srcSize=%zu)", srcSize); + + if (cctxPtr->cStage != 1) return err0r(LZ4F_ERROR_GENERIC); + if (dstCapacity < LZ4F_compressBound_internal(srcSize, &(cctxPtr->prefs), cctxPtr->tmpInSize)) + return err0r(LZ4F_ERROR_dstMaxSize_tooSmall); + MEM_INIT(&cOptionsNull, 0, sizeof(cOptionsNull)); + if (compressOptionsPtr == NULL) compressOptionsPtr = &cOptionsNull; + + /* complete tmp buffer */ + if (cctxPtr->tmpInSize > 0) { /* some data already within tmp buffer */ + size_t const sizeToCopy = blockSize - cctxPtr->tmpInSize; + if (sizeToCopy > srcSize) { + /* add src to tmpIn buffer */ + memcpy(cctxPtr->tmpIn + cctxPtr->tmpInSize, srcBuffer, srcSize); + srcPtr = srcEnd; + cctxPtr->tmpInSize += srcSize; + /* still needs some CRC */ + } else { + /* complete tmpIn block and then compress it */ + lastBlockCompressed = fromTmpBuffer; + memcpy(cctxPtr->tmpIn + cctxPtr->tmpInSize, srcBuffer, sizeToCopy); + srcPtr += sizeToCopy; + + dstPtr += LZ4F_makeBlock(dstPtr, + cctxPtr->tmpIn, blockSize, + compress, cctxPtr->lz4CtxPtr, cctxPtr->prefs.compressionLevel, + cctxPtr->cdict, + cctxPtr->prefs.frameInfo.blockChecksumFlag); + + if (cctxPtr->prefs.frameInfo.blockMode==LZ4F_blockLinked) cctxPtr->tmpIn += blockSize; + cctxPtr->tmpInSize = 0; + } + } + + while ((size_t)(srcEnd - srcPtr) >= blockSize) { + /* compress full blocks */ + lastBlockCompressed = fromSrcBuffer; + dstPtr += LZ4F_makeBlock(dstPtr, + srcPtr, blockSize, + compress, cctxPtr->lz4CtxPtr, cctxPtr->prefs.compressionLevel, + cctxPtr->cdict, + cctxPtr->prefs.frameInfo.blockChecksumFlag); + srcPtr += blockSize; + } + + if ((cctxPtr->prefs.autoFlush) && (srcPtr < srcEnd)) { + /* compress remaining input < blockSize */ + lastBlockCompressed = fromSrcBuffer; + dstPtr += LZ4F_makeBlock(dstPtr, + srcPtr, (size_t)(srcEnd - srcPtr), + compress, cctxPtr->lz4CtxPtr, cctxPtr->prefs.compressionLevel, + cctxPtr->cdict, + cctxPtr->prefs.frameInfo.blockChecksumFlag); + srcPtr = srcEnd; + } + + /* preserve dictionary if necessary */ + if ((cctxPtr->prefs.frameInfo.blockMode==LZ4F_blockLinked) && (lastBlockCompressed==fromSrcBuffer)) { + if (compressOptionsPtr->stableSrc) { + cctxPtr->tmpIn = cctxPtr->tmpBuff; + } else { + int const realDictSize = LZ4F_localSaveDict(cctxPtr); + if (realDictSize==0) return err0r(LZ4F_ERROR_GENERIC); + cctxPtr->tmpIn = cctxPtr->tmpBuff + realDictSize; + } + } + + /* keep tmpIn within limits */ + if ((cctxPtr->tmpIn + blockSize) > (cctxPtr->tmpBuff + cctxPtr->maxBufferSize) /* necessarily LZ4F_blockLinked && lastBlockCompressed==fromTmpBuffer */ + && !(cctxPtr->prefs.autoFlush)) + { + int const realDictSize = LZ4F_localSaveDict(cctxPtr); + cctxPtr->tmpIn = cctxPtr->tmpBuff + realDictSize; + } + + /* some input data left, necessarily < blockSize */ + if (srcPtr < srcEnd) { + /* fill tmp buffer */ + size_t const sizeToCopy = (size_t)(srcEnd - srcPtr); + memcpy(cctxPtr->tmpIn, srcPtr, sizeToCopy); + cctxPtr->tmpInSize = sizeToCopy; + } + + if (cctxPtr->prefs.frameInfo.contentChecksumFlag == LZ4F_contentChecksumEnabled) + (void)XXH32_update(&(cctxPtr->xxh), srcBuffer, srcSize); + + cctxPtr->totalInSize += srcSize; + return (size_t)(dstPtr - dstStart); +} + + +/*! LZ4F_flush() : + * When compressed data must be sent immediately, without waiting for a block to be filled, + * invoke LZ4_flush(), which will immediately compress any remaining data stored within LZ4F_cctx. + * The result of the function is the number of bytes written into dstBuffer. + * It can be zero, this means there was no data left within LZ4F_cctx. + * The function outputs an error code if it fails (can be tested using LZ4F_isError()) + * LZ4F_compressOptions_t* is optional. NULL is a valid argument. + */ +size_t LZ4F_flush(LZ4F_cctx* cctxPtr, + void* dstBuffer, size_t dstCapacity, + const LZ4F_compressOptions_t* compressOptionsPtr) +{ + BYTE* const dstStart = (BYTE*)dstBuffer; + BYTE* dstPtr = dstStart; + compressFunc_t compress; + + if (cctxPtr->tmpInSize == 0) return 0; /* nothing to flush */ + if (cctxPtr->cStage != 1) return err0r(LZ4F_ERROR_GENERIC); + if (dstCapacity < (cctxPtr->tmpInSize + BHSize + BFSize)) + return err0r(LZ4F_ERROR_dstMaxSize_tooSmall); + (void)compressOptionsPtr; /* not yet useful */ + + /* select compression function */ + compress = LZ4F_selectCompression(cctxPtr->prefs.frameInfo.blockMode, cctxPtr->prefs.compressionLevel); + + /* compress tmp buffer */ + dstPtr += LZ4F_makeBlock(dstPtr, + cctxPtr->tmpIn, cctxPtr->tmpInSize, + compress, cctxPtr->lz4CtxPtr, cctxPtr->prefs.compressionLevel, + cctxPtr->cdict, + cctxPtr->prefs.frameInfo.blockChecksumFlag); + assert(((void)"flush overflows dstBuffer!", (size_t)(dstPtr - dstStart) <= dstCapacity)); + + if (cctxPtr->prefs.frameInfo.blockMode == LZ4F_blockLinked) + cctxPtr->tmpIn += cctxPtr->tmpInSize; + cctxPtr->tmpInSize = 0; + + /* keep tmpIn within limits */ + if ((cctxPtr->tmpIn + cctxPtr->maxBlockSize) > (cctxPtr->tmpBuff + cctxPtr->maxBufferSize)) { /* necessarily LZ4F_blockLinked */ + int const realDictSize = LZ4F_localSaveDict(cctxPtr); + cctxPtr->tmpIn = cctxPtr->tmpBuff + realDictSize; + } + + return (size_t)(dstPtr - dstStart); +} + + +/*! LZ4F_compressEnd() : + * When you want to properly finish the compressed frame, just call LZ4F_compressEnd(). + * It will flush whatever data remained within compressionContext (like LZ4_flush()) + * but also properly finalize the frame, with an endMark and an (optional) checksum. + * LZ4F_compressOptions_t structure is optional : you can provide NULL as argument. + * @return: the number of bytes written into dstBuffer (necessarily >= 4 (endMark size)) + * or an error code if it fails (can be tested using LZ4F_isError()) + * The context can then be used again to compress a new frame, starting with LZ4F_compressBegin(). + */ +size_t LZ4F_compressEnd(LZ4F_cctx* cctxPtr, + void* dstBuffer, size_t dstCapacity, + const LZ4F_compressOptions_t* compressOptionsPtr) +{ + BYTE* const dstStart = (BYTE*)dstBuffer; + BYTE* dstPtr = dstStart; + + size_t const flushSize = LZ4F_flush(cctxPtr, dstBuffer, dstCapacity, compressOptionsPtr); + DEBUGLOG(5,"LZ4F_compressEnd: dstCapacity=%u", (unsigned)dstCapacity); + if (LZ4F_isError(flushSize)) return flushSize; + dstPtr += flushSize; + + assert(flushSize <= dstCapacity); + dstCapacity -= flushSize; + + if (dstCapacity < 4) return err0r(LZ4F_ERROR_dstMaxSize_tooSmall); + LZ4F_writeLE32(dstPtr, 0); + dstPtr += 4; /* endMark */ + + if (cctxPtr->prefs.frameInfo.contentChecksumFlag == LZ4F_contentChecksumEnabled) { + U32 const xxh = XXH32_digest(&(cctxPtr->xxh)); + if (dstCapacity < 8) return err0r(LZ4F_ERROR_dstMaxSize_tooSmall); + DEBUGLOG(5,"Writing 32-bit content checksum"); + LZ4F_writeLE32(dstPtr, xxh); + dstPtr+=4; /* content Checksum */ + } + + cctxPtr->cStage = 0; /* state is now re-usable (with identical preferences) */ + cctxPtr->maxBufferSize = 0; /* reuse HC context */ + + if (cctxPtr->prefs.frameInfo.contentSize) { + if (cctxPtr->prefs.frameInfo.contentSize != cctxPtr->totalInSize) + return err0r(LZ4F_ERROR_frameSize_wrong); + } + + return (size_t)(dstPtr - dstStart); +} + + +/*-*************************************************** +* Frame Decompression +*****************************************************/ + +typedef enum { + dstage_getFrameHeader=0, dstage_storeFrameHeader, + dstage_init, + dstage_getBlockHeader, dstage_storeBlockHeader, + dstage_copyDirect, dstage_getBlockChecksum, + dstage_getCBlock, dstage_storeCBlock, + dstage_flushOut, + dstage_getSuffix, dstage_storeSuffix, + dstage_getSFrameSize, dstage_storeSFrameSize, + dstage_skipSkippable +} dStage_t; + +struct LZ4F_dctx_s { + LZ4F_frameInfo_t frameInfo; + U32 version; + dStage_t dStage; + U64 frameRemainingSize; + size_t maxBlockSize; + size_t maxBufferSize; + BYTE* tmpIn; + size_t tmpInSize; + size_t tmpInTarget; + BYTE* tmpOutBuffer; + const BYTE* dict; + size_t dictSize; + BYTE* tmpOut; + size_t tmpOutSize; + size_t tmpOutStart; + XXH32_state_t xxh; + XXH32_state_t blockChecksum; + BYTE header[LZ4F_HEADER_SIZE_MAX]; +}; /* typedef'd to LZ4F_dctx in lz4frame.h */ + + +/*! LZ4F_createDecompressionContext() : + * Create a decompressionContext object, which will track all decompression operations. + * Provides a pointer to a fully allocated and initialized LZ4F_decompressionContext object. + * Object can later be released using LZ4F_freeDecompressionContext(). + * @return : if != 0, there was an error during context creation. + */ +LZ4F_errorCode_t LZ4F_createDecompressionContext(LZ4F_dctx** LZ4F_decompressionContextPtr, unsigned versionNumber) +{ + LZ4F_dctx* const dctx = (LZ4F_dctx*)ALLOC_AND_ZERO(sizeof(LZ4F_dctx)); + if (dctx == NULL) { /* failed allocation */ + *LZ4F_decompressionContextPtr = NULL; + return err0r(LZ4F_ERROR_allocation_failed); + } + + dctx->version = versionNumber; + *LZ4F_decompressionContextPtr = dctx; + return LZ4F_OK_NoError; +} + +LZ4F_errorCode_t LZ4F_freeDecompressionContext(LZ4F_dctx* dctx) +{ + LZ4F_errorCode_t result = LZ4F_OK_NoError; + if (dctx != NULL) { /* can accept NULL input, like free() */ + result = (LZ4F_errorCode_t)dctx->dStage; + FREEMEM(dctx->tmpIn); + FREEMEM(dctx->tmpOutBuffer); + FREEMEM(dctx); + } + return result; +} + + +/*==--- Streaming Decompression operations ---==*/ + +void LZ4F_resetDecompressionContext(LZ4F_dctx* dctx) +{ + dctx->dStage = dstage_getFrameHeader; + dctx->dict = NULL; + dctx->dictSize = 0; +} + + +/*! LZ4F_decodeHeader() : + * input : `src` points at the **beginning of the frame** + * output : set internal values of dctx, such as + * dctx->frameInfo and dctx->dStage. + * Also allocates internal buffers. + * @return : nb Bytes read from src (necessarily <= srcSize) + * or an error code (testable with LZ4F_isError()) + */ +static size_t LZ4F_decodeHeader(LZ4F_dctx* dctx, const void* src, size_t srcSize) +{ + unsigned blockMode, blockChecksumFlag, contentSizeFlag, contentChecksumFlag, dictIDFlag, blockSizeID; + size_t frameHeaderSize; + const BYTE* srcPtr = (const BYTE*)src; + + DEBUGLOG(5, "LZ4F_decodeHeader"); + /* need to decode header to get frameInfo */ + if (srcSize < minFHSize) return err0r(LZ4F_ERROR_frameHeader_incomplete); /* minimal frame header size */ + MEM_INIT(&(dctx->frameInfo), 0, sizeof(dctx->frameInfo)); + + /* special case : skippable frames */ + if ((LZ4F_readLE32(srcPtr) & 0xFFFFFFF0U) == LZ4F_MAGIC_SKIPPABLE_START) { + dctx->frameInfo.frameType = LZ4F_skippableFrame; + if (src == (void*)(dctx->header)) { + dctx->tmpInSize = srcSize; + dctx->tmpInTarget = 8; + dctx->dStage = dstage_storeSFrameSize; + return srcSize; + } else { + dctx->dStage = dstage_getSFrameSize; + return 4; + } + } + + /* control magic number */ +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + if (LZ4F_readLE32(srcPtr) != LZ4F_MAGICNUMBER) { + DEBUGLOG(4, "frame header error : unknown magic number"); + return err0r(LZ4F_ERROR_frameType_unknown); + } +#endif + dctx->frameInfo.frameType = LZ4F_frame; + + /* Flags */ + { U32 const FLG = srcPtr[4]; + U32 const version = (FLG>>6) & _2BITS; + blockChecksumFlag = (FLG>>4) & _1BIT; + blockMode = (FLG>>5) & _1BIT; + contentSizeFlag = (FLG>>3) & _1BIT; + contentChecksumFlag = (FLG>>2) & _1BIT; + dictIDFlag = FLG & _1BIT; + /* validate */ + if (((FLG>>1)&_1BIT) != 0) return err0r(LZ4F_ERROR_reservedFlag_set); /* Reserved bit */ + if (version != 1) return err0r(LZ4F_ERROR_headerVersion_wrong); /* Version Number, only supported value */ + } + + /* Frame Header Size */ + frameHeaderSize = minFHSize + (contentSizeFlag?8:0) + (dictIDFlag?4:0); + + if (srcSize < frameHeaderSize) { + /* not enough input to fully decode frame header */ + if (srcPtr != dctx->header) + memcpy(dctx->header, srcPtr, srcSize); + dctx->tmpInSize = srcSize; + dctx->tmpInTarget = frameHeaderSize; + dctx->dStage = dstage_storeFrameHeader; + return srcSize; + } + + { U32 const BD = srcPtr[5]; + blockSizeID = (BD>>4) & _3BITS; + /* validate */ + if (((BD>>7)&_1BIT) != 0) return err0r(LZ4F_ERROR_reservedFlag_set); /* Reserved bit */ + if (blockSizeID < 4) return err0r(LZ4F_ERROR_maxBlockSize_invalid); /* 4-7 only supported values for the time being */ + if (((BD>>0)&_4BITS) != 0) return err0r(LZ4F_ERROR_reservedFlag_set); /* Reserved bits */ + } + + /* check header */ + assert(frameHeaderSize > 5); +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + { BYTE const HC = LZ4F_headerChecksum(srcPtr+4, frameHeaderSize-5); + if (HC != srcPtr[frameHeaderSize-1]) + return err0r(LZ4F_ERROR_headerChecksum_invalid); + } +#endif + + /* save */ + dctx->frameInfo.blockMode = (LZ4F_blockMode_t)blockMode; + dctx->frameInfo.blockChecksumFlag = (LZ4F_blockChecksum_t)blockChecksumFlag; + dctx->frameInfo.contentChecksumFlag = (LZ4F_contentChecksum_t)contentChecksumFlag; + dctx->frameInfo.blockSizeID = (LZ4F_blockSizeID_t)blockSizeID; + dctx->maxBlockSize = LZ4F_getBlockSize(blockSizeID); + if (contentSizeFlag) + dctx->frameRemainingSize = + dctx->frameInfo.contentSize = LZ4F_readLE64(srcPtr+6); + if (dictIDFlag) + dctx->frameInfo.dictID = LZ4F_readLE32(srcPtr + frameHeaderSize - 5); + + dctx->dStage = dstage_init; + + return frameHeaderSize; +} + + +/*! LZ4F_headerSize() : + * @return : size of frame header + * or an error code, which can be tested using LZ4F_isError() + */ +size_t LZ4F_headerSize(const void* src, size_t srcSize) +{ + if (src == NULL) return err0r(LZ4F_ERROR_srcPtr_wrong); + + /* minimal srcSize to determine header size */ + if (srcSize < LZ4F_MIN_SIZE_TO_KNOW_HEADER_LENGTH) + return err0r(LZ4F_ERROR_frameHeader_incomplete); + + /* special case : skippable frames */ + if ((LZ4F_readLE32(src) & 0xFFFFFFF0U) == LZ4F_MAGIC_SKIPPABLE_START) + return 8; + + /* control magic number */ +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + if (LZ4F_readLE32(src) != LZ4F_MAGICNUMBER) + return err0r(LZ4F_ERROR_frameType_unknown); +#endif + + /* Frame Header Size */ + { BYTE const FLG = ((const BYTE*)src)[4]; + U32 const contentSizeFlag = (FLG>>3) & _1BIT; + U32 const dictIDFlag = FLG & _1BIT; + return minFHSize + (contentSizeFlag?8:0) + (dictIDFlag?4:0); + } +} + +/*! LZ4F_getFrameInfo() : + * This function extracts frame parameters (max blockSize, frame checksum, etc.). + * Usage is optional. Objective is to provide relevant information for allocation purposes. + * This function works in 2 situations : + * - At the beginning of a new frame, in which case it will decode this information from `srcBuffer`, and start the decoding process. + * Amount of input data provided must be large enough to successfully decode the frame header. + * A header size is variable, but is guaranteed to be <= LZ4F_HEADER_SIZE_MAX bytes. It's possible to provide more input data than this minimum. + * - After decoding has been started. In which case, no input is read, frame parameters are extracted from dctx. + * The number of bytes consumed from srcBuffer will be updated within *srcSizePtr (necessarily <= original value). + * Decompression must resume from (srcBuffer + *srcSizePtr). + * @return : an hint about how many srcSize bytes LZ4F_decompress() expects for next call, + * or an error code which can be tested using LZ4F_isError() + * note 1 : in case of error, dctx is not modified. Decoding operations can resume from where they stopped. + * note 2 : frame parameters are *copied into* an already allocated LZ4F_frameInfo_t structure. + */ +LZ4F_errorCode_t LZ4F_getFrameInfo(LZ4F_dctx* dctx, + LZ4F_frameInfo_t* frameInfoPtr, + const void* srcBuffer, size_t* srcSizePtr) +{ + LZ4F_STATIC_ASSERT(dstage_getFrameHeader < dstage_storeFrameHeader); + if (dctx->dStage > dstage_storeFrameHeader) { + /* frameInfo already decoded */ + size_t o=0, i=0; + *srcSizePtr = 0; + *frameInfoPtr = dctx->frameInfo; + /* returns : recommended nb of bytes for LZ4F_decompress() */ + return LZ4F_decompress(dctx, NULL, &o, NULL, &i, NULL); + } else { + if (dctx->dStage == dstage_storeFrameHeader) { + /* frame decoding already started, in the middle of header => automatic fail */ + *srcSizePtr = 0; + return err0r(LZ4F_ERROR_frameDecoding_alreadyStarted); + } else { + size_t const hSize = LZ4F_headerSize(srcBuffer, *srcSizePtr); + if (LZ4F_isError(hSize)) { *srcSizePtr=0; return hSize; } + if (*srcSizePtr < hSize) { + *srcSizePtr=0; + return err0r(LZ4F_ERROR_frameHeader_incomplete); + } + + { size_t decodeResult = LZ4F_decodeHeader(dctx, srcBuffer, hSize); + if (LZ4F_isError(decodeResult)) { + *srcSizePtr = 0; + } else { + *srcSizePtr = decodeResult; + decodeResult = BHSize; /* block header size */ + } + *frameInfoPtr = dctx->frameInfo; + return decodeResult; + } } } +} + + +/* LZ4F_updateDict() : + * only used for LZ4F_blockLinked mode + * Condition : dstPtr != NULL + */ +static void LZ4F_updateDict(LZ4F_dctx* dctx, + const BYTE* dstPtr, size_t dstSize, const BYTE* dstBufferStart, + unsigned withinTmp) +{ + assert(dstPtr != NULL); + if (dctx->dictSize==0) { + dctx->dict = (const BYTE*)dstPtr; /* priority to prefix mode */ + } + assert(dctx->dict != NULL); + + if (dctx->dict + dctx->dictSize == dstPtr) { /* prefix mode, everything within dstBuffer */ + dctx->dictSize += dstSize; + return; + } + + assert(dstPtr >= dstBufferStart); + if ((size_t)(dstPtr - dstBufferStart) + dstSize >= 64 KB) { /* history in dstBuffer becomes large enough to become dictionary */ + dctx->dict = (const BYTE*)dstBufferStart; + dctx->dictSize = (size_t)(dstPtr - dstBufferStart) + dstSize; + return; + } + + assert(dstSize < 64 KB); /* if dstSize >= 64 KB, dictionary would be set into dstBuffer directly */ + + /* dstBuffer does not contain whole useful history (64 KB), so it must be saved within tmpOutBuffer */ + assert(dctx->tmpOutBuffer != NULL); + + if (withinTmp && (dctx->dict == dctx->tmpOutBuffer)) { /* continue history within tmpOutBuffer */ + /* withinTmp expectation : content of [dstPtr,dstSize] is same as [dict+dictSize,dstSize], so we just extend it */ + assert(dctx->dict + dctx->dictSize == dctx->tmpOut + dctx->tmpOutStart); + dctx->dictSize += dstSize; + return; + } + + if (withinTmp) { /* copy relevant dict portion in front of tmpOut within tmpOutBuffer */ + size_t const preserveSize = (size_t)(dctx->tmpOut - dctx->tmpOutBuffer); + size_t copySize = 64 KB - dctx->tmpOutSize; + const BYTE* const oldDictEnd = dctx->dict + dctx->dictSize - dctx->tmpOutStart; + if (dctx->tmpOutSize > 64 KB) copySize = 0; + if (copySize > preserveSize) copySize = preserveSize; + + memcpy(dctx->tmpOutBuffer + preserveSize - copySize, oldDictEnd - copySize, copySize); + + dctx->dict = dctx->tmpOutBuffer; + dctx->dictSize = preserveSize + dctx->tmpOutStart + dstSize; + return; + } + + if (dctx->dict == dctx->tmpOutBuffer) { /* copy dst into tmp to complete dict */ + if (dctx->dictSize + dstSize > dctx->maxBufferSize) { /* tmp buffer not large enough */ + size_t const preserveSize = 64 KB - dstSize; + memcpy(dctx->tmpOutBuffer, dctx->dict + dctx->dictSize - preserveSize, preserveSize); + dctx->dictSize = preserveSize; + } + memcpy(dctx->tmpOutBuffer + dctx->dictSize, dstPtr, dstSize); + dctx->dictSize += dstSize; + return; + } + + /* join dict & dest into tmp */ + { size_t preserveSize = 64 KB - dstSize; + if (preserveSize > dctx->dictSize) preserveSize = dctx->dictSize; + memcpy(dctx->tmpOutBuffer, dctx->dict + dctx->dictSize - preserveSize, preserveSize); + memcpy(dctx->tmpOutBuffer + preserveSize, dstPtr, dstSize); + dctx->dict = dctx->tmpOutBuffer; + dctx->dictSize = preserveSize + dstSize; + } +} + + + +/*! LZ4F_decompress() : + * Call this function repetitively to regenerate compressed data in srcBuffer. + * The function will attempt to decode up to *srcSizePtr bytes from srcBuffer + * into dstBuffer of capacity *dstSizePtr. + * + * The number of bytes regenerated into dstBuffer will be provided within *dstSizePtr (necessarily <= original value). + * + * The number of bytes effectively read from srcBuffer will be provided within *srcSizePtr (necessarily <= original value). + * If number of bytes read is < number of bytes provided, then decompression operation is not complete. + * Remaining data will have to be presented again in a subsequent invocation. + * + * The function result is an hint of the better srcSize to use for next call to LZ4F_decompress. + * Schematically, it's the size of the current (or remaining) compressed block + header of next block. + * Respecting the hint provides a small boost to performance, since it allows less buffer shuffling. + * Note that this is just a hint, and it's always possible to any srcSize value. + * When a frame is fully decoded, @return will be 0. + * If decompression failed, @return is an error code which can be tested using LZ4F_isError(). + */ +size_t LZ4F_decompress(LZ4F_dctx* dctx, + void* dstBuffer, size_t* dstSizePtr, + const void* srcBuffer, size_t* srcSizePtr, + const LZ4F_decompressOptions_t* decompressOptionsPtr) +{ + LZ4F_decompressOptions_t optionsNull; + const BYTE* const srcStart = (const BYTE*)srcBuffer; + const BYTE* const srcEnd = srcStart + *srcSizePtr; + const BYTE* srcPtr = srcStart; + BYTE* const dstStart = (BYTE*)dstBuffer; + BYTE* const dstEnd = dstStart ? dstStart + *dstSizePtr : NULL; + BYTE* dstPtr = dstStart; + const BYTE* selectedIn = NULL; + unsigned doAnotherStage = 1; + size_t nextSrcSizeHint = 1; + + + DEBUGLOG(5, "LZ4F_decompress : %p,%u => %p,%u", + srcBuffer, (unsigned)*srcSizePtr, dstBuffer, (unsigned)*dstSizePtr); + if (dstBuffer == NULL) assert(*dstSizePtr == 0); + MEM_INIT(&optionsNull, 0, sizeof(optionsNull)); + if (decompressOptionsPtr==NULL) decompressOptionsPtr = &optionsNull; + *srcSizePtr = 0; + *dstSizePtr = 0; + assert(dctx != NULL); + + /* behaves as a state machine */ + + while (doAnotherStage) { + + switch(dctx->dStage) + { + + case dstage_getFrameHeader: + DEBUGLOG(6, "dstage_getFrameHeader"); + if ((size_t)(srcEnd-srcPtr) >= maxFHSize) { /* enough to decode - shortcut */ + size_t const hSize = LZ4F_decodeHeader(dctx, srcPtr, (size_t)(srcEnd-srcPtr)); /* will update dStage appropriately */ + if (LZ4F_isError(hSize)) return hSize; + srcPtr += hSize; + break; + } + dctx->tmpInSize = 0; + if (srcEnd-srcPtr == 0) return minFHSize; /* 0-size input */ + dctx->tmpInTarget = minFHSize; /* minimum size to decode header */ + dctx->dStage = dstage_storeFrameHeader; + /* fall-through */ + + case dstage_storeFrameHeader: + DEBUGLOG(6, "dstage_storeFrameHeader"); + { size_t const sizeToCopy = MIN(dctx->tmpInTarget - dctx->tmpInSize, (size_t)(srcEnd - srcPtr)); + memcpy(dctx->header + dctx->tmpInSize, srcPtr, sizeToCopy); + dctx->tmpInSize += sizeToCopy; + srcPtr += sizeToCopy; + } + if (dctx->tmpInSize < dctx->tmpInTarget) { + nextSrcSizeHint = (dctx->tmpInTarget - dctx->tmpInSize) + BHSize; /* rest of header + nextBlockHeader */ + doAnotherStage = 0; /* not enough src data, ask for some more */ + break; + } + { size_t const hSize = LZ4F_decodeHeader(dctx, dctx->header, dctx->tmpInTarget); /* will update dStage appropriately */ + if (LZ4F_isError(hSize)) return hSize; + } + break; + + case dstage_init: + DEBUGLOG(6, "dstage_init"); + if (dctx->frameInfo.contentChecksumFlag) (void)XXH32_reset(&(dctx->xxh), 0); + /* internal buffers allocation */ + { size_t const bufferNeeded = dctx->maxBlockSize + + ((dctx->frameInfo.blockMode==LZ4F_blockLinked) ? 128 KB : 0); + if (bufferNeeded > dctx->maxBufferSize) { /* tmp buffers too small */ + dctx->maxBufferSize = 0; /* ensure allocation will be re-attempted on next entry*/ + FREEMEM(dctx->tmpIn); + dctx->tmpIn = (BYTE*)ALLOC(dctx->maxBlockSize + BFSize /* block checksum */); + if (dctx->tmpIn == NULL) + return err0r(LZ4F_ERROR_allocation_failed); + FREEMEM(dctx->tmpOutBuffer); + dctx->tmpOutBuffer= (BYTE*)ALLOC(bufferNeeded); + if (dctx->tmpOutBuffer== NULL) + return err0r(LZ4F_ERROR_allocation_failed); + dctx->maxBufferSize = bufferNeeded; + } } + dctx->tmpInSize = 0; + dctx->tmpInTarget = 0; + dctx->tmpOut = dctx->tmpOutBuffer; + dctx->tmpOutStart = 0; + dctx->tmpOutSize = 0; + + dctx->dStage = dstage_getBlockHeader; + /* fall-through */ + + case dstage_getBlockHeader: + if ((size_t)(srcEnd - srcPtr) >= BHSize) { + selectedIn = srcPtr; + srcPtr += BHSize; + } else { + /* not enough input to read cBlockSize field */ + dctx->tmpInSize = 0; + dctx->dStage = dstage_storeBlockHeader; + } + + if (dctx->dStage == dstage_storeBlockHeader) /* can be skipped */ + case dstage_storeBlockHeader: + { size_t const remainingInput = (size_t)(srcEnd - srcPtr); + size_t const wantedData = BHSize - dctx->tmpInSize; + size_t const sizeToCopy = MIN(wantedData, remainingInput); + memcpy(dctx->tmpIn + dctx->tmpInSize, srcPtr, sizeToCopy); + srcPtr += sizeToCopy; + dctx->tmpInSize += sizeToCopy; + + if (dctx->tmpInSize < BHSize) { /* not enough input for cBlockSize */ + nextSrcSizeHint = BHSize - dctx->tmpInSize; + doAnotherStage = 0; + break; + } + selectedIn = dctx->tmpIn; + } /* if (dctx->dStage == dstage_storeBlockHeader) */ + + /* decode block header */ + { U32 const blockHeader = LZ4F_readLE32(selectedIn); + size_t const nextCBlockSize = blockHeader & 0x7FFFFFFFU; + size_t const crcSize = dctx->frameInfo.blockChecksumFlag * BFSize; + if (blockHeader==0) { /* frameEnd signal, no more block */ + DEBUGLOG(5, "end of frame"); + dctx->dStage = dstage_getSuffix; + break; + } + if (nextCBlockSize > dctx->maxBlockSize) { + return err0r(LZ4F_ERROR_maxBlockSize_invalid); + } + if (blockHeader & LZ4F_BLOCKUNCOMPRESSED_FLAG) { + /* next block is uncompressed */ + dctx->tmpInTarget = nextCBlockSize; + DEBUGLOG(5, "next block is uncompressed (size %u)", (U32)nextCBlockSize); + if (dctx->frameInfo.blockChecksumFlag) { + (void)XXH32_reset(&dctx->blockChecksum, 0); + } + dctx->dStage = dstage_copyDirect; + break; + } + /* next block is a compressed block */ + dctx->tmpInTarget = nextCBlockSize + crcSize; + dctx->dStage = dstage_getCBlock; + if (dstPtr==dstEnd || srcPtr==srcEnd) { + nextSrcSizeHint = BHSize + nextCBlockSize + crcSize; + doAnotherStage = 0; + } + break; + } + + case dstage_copyDirect: /* uncompressed block */ + DEBUGLOG(6, "dstage_copyDirect"); + { size_t sizeToCopy; + if (dstPtr == NULL) { + sizeToCopy = 0; + } else { + size_t const minBuffSize = MIN((size_t)(srcEnd-srcPtr), (size_t)(dstEnd-dstPtr)); + sizeToCopy = MIN(dctx->tmpInTarget, minBuffSize); + memcpy(dstPtr, srcPtr, sizeToCopy); + if (dctx->frameInfo.blockChecksumFlag) { + (void)XXH32_update(&dctx->blockChecksum, srcPtr, sizeToCopy); + } + if (dctx->frameInfo.contentChecksumFlag) + (void)XXH32_update(&dctx->xxh, srcPtr, sizeToCopy); + if (dctx->frameInfo.contentSize) + dctx->frameRemainingSize -= sizeToCopy; + + /* history management (linked blocks only)*/ + if (dctx->frameInfo.blockMode == LZ4F_blockLinked) { + LZ4F_updateDict(dctx, dstPtr, sizeToCopy, dstStart, 0); + } } + + srcPtr += sizeToCopy; + dstPtr += sizeToCopy; + if (sizeToCopy == dctx->tmpInTarget) { /* all done */ + if (dctx->frameInfo.blockChecksumFlag) { + dctx->tmpInSize = 0; + dctx->dStage = dstage_getBlockChecksum; + } else + dctx->dStage = dstage_getBlockHeader; /* new block */ + break; + } + dctx->tmpInTarget -= sizeToCopy; /* need to copy more */ + } + nextSrcSizeHint = dctx->tmpInTarget + + +(dctx->frameInfo.blockChecksumFlag ? BFSize : 0) + + BHSize /* next header size */; + doAnotherStage = 0; + break; + + /* check block checksum for recently transferred uncompressed block */ + case dstage_getBlockChecksum: + DEBUGLOG(6, "dstage_getBlockChecksum"); + { const void* crcSrc; + if ((srcEnd-srcPtr >= 4) && (dctx->tmpInSize==0)) { + crcSrc = srcPtr; + srcPtr += 4; + } else { + size_t const stillToCopy = 4 - dctx->tmpInSize; + size_t const sizeToCopy = MIN(stillToCopy, (size_t)(srcEnd-srcPtr)); + memcpy(dctx->header + dctx->tmpInSize, srcPtr, sizeToCopy); + dctx->tmpInSize += sizeToCopy; + srcPtr += sizeToCopy; + if (dctx->tmpInSize < 4) { /* all input consumed */ + doAnotherStage = 0; + break; + } + crcSrc = dctx->header; + } + { U32 const readCRC = LZ4F_readLE32(crcSrc); + U32 const calcCRC = XXH32_digest(&dctx->blockChecksum); +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + DEBUGLOG(6, "compare block checksum"); + if (readCRC != calcCRC) { + DEBUGLOG(4, "incorrect block checksum: %08X != %08X", + readCRC, calcCRC); + return err0r(LZ4F_ERROR_blockChecksum_invalid); + } +#else + (void)readCRC; + (void)calcCRC; +#endif + } } + dctx->dStage = dstage_getBlockHeader; /* new block */ + break; + + case dstage_getCBlock: + DEBUGLOG(6, "dstage_getCBlock"); + if ((size_t)(srcEnd-srcPtr) < dctx->tmpInTarget) { + dctx->tmpInSize = 0; + dctx->dStage = dstage_storeCBlock; + break; + } + /* input large enough to read full block directly */ + selectedIn = srcPtr; + srcPtr += dctx->tmpInTarget; + + if (0) /* always jump over next block */ + case dstage_storeCBlock: + { size_t const wantedData = dctx->tmpInTarget - dctx->tmpInSize; + size_t const inputLeft = (size_t)(srcEnd-srcPtr); + size_t const sizeToCopy = MIN(wantedData, inputLeft); + memcpy(dctx->tmpIn + dctx->tmpInSize, srcPtr, sizeToCopy); + dctx->tmpInSize += sizeToCopy; + srcPtr += sizeToCopy; + if (dctx->tmpInSize < dctx->tmpInTarget) { /* need more input */ + nextSrcSizeHint = (dctx->tmpInTarget - dctx->tmpInSize) + + (dctx->frameInfo.blockChecksumFlag ? BFSize : 0) + + BHSize /* next header size */; + doAnotherStage = 0; + break; + } + selectedIn = dctx->tmpIn; + } + + /* At this stage, input is large enough to decode a block */ + if (dctx->frameInfo.blockChecksumFlag) { + dctx->tmpInTarget -= 4; + assert(selectedIn != NULL); /* selectedIn is defined at this stage (either srcPtr, or dctx->tmpIn) */ + { U32 const readBlockCrc = LZ4F_readLE32(selectedIn + dctx->tmpInTarget); + U32 const calcBlockCrc = XXH32(selectedIn, dctx->tmpInTarget, 0); +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + if (readBlockCrc != calcBlockCrc) + return err0r(LZ4F_ERROR_blockChecksum_invalid); +#else + (void)readBlockCrc; + (void)calcBlockCrc; +#endif + } } + + if ((size_t)(dstEnd-dstPtr) >= dctx->maxBlockSize) { + const char* dict = (const char*)dctx->dict; + size_t dictSize = dctx->dictSize; + int decodedSize; + assert(dstPtr != NULL); + if (dict && dictSize > 1 GB) { + /* the dictSize param is an int, avoid truncation / sign issues */ + dict += dictSize - 64 KB; + dictSize = 64 KB; + } + /* enough capacity in `dst` to decompress directly there */ + decodedSize = LZ4_decompress_safe_usingDict( + (const char*)selectedIn, (char*)dstPtr, + (int)dctx->tmpInTarget, (int)dctx->maxBlockSize, + dict, (int)dictSize); + if (decodedSize < 0) return err0r(LZ4F_ERROR_GENERIC); /* decompression failed */ + if (dctx->frameInfo.contentChecksumFlag) + XXH32_update(&(dctx->xxh), dstPtr, (size_t)decodedSize); + if (dctx->frameInfo.contentSize) + dctx->frameRemainingSize -= (size_t)decodedSize; + + /* dictionary management */ + if (dctx->frameInfo.blockMode==LZ4F_blockLinked) { + LZ4F_updateDict(dctx, dstPtr, (size_t)decodedSize, dstStart, 0); + } + + dstPtr += decodedSize; + dctx->dStage = dstage_getBlockHeader; + break; + } + + /* not enough place into dst : decode into tmpOut */ + /* ensure enough place for tmpOut */ + if (dctx->frameInfo.blockMode == LZ4F_blockLinked) { + if (dctx->dict == dctx->tmpOutBuffer) { + if (dctx->dictSize > 128 KB) { + memcpy(dctx->tmpOutBuffer, dctx->dict + dctx->dictSize - 64 KB, 64 KB); + dctx->dictSize = 64 KB; + } + dctx->tmpOut = dctx->tmpOutBuffer + dctx->dictSize; + } else { /* dict not within tmp */ + size_t const reservedDictSpace = MIN(dctx->dictSize, 64 KB); + dctx->tmpOut = dctx->tmpOutBuffer + reservedDictSpace; + } } + + /* Decode block */ + { const char* dict = (const char*)dctx->dict; + size_t dictSize = dctx->dictSize; + int decodedSize; + if (dict && dictSize > 1 GB) { + /* the dictSize param is an int, avoid truncation / sign issues */ + dict += dictSize - 64 KB; + dictSize = 64 KB; + } + decodedSize = LZ4_decompress_safe_usingDict( + (const char*)selectedIn, (char*)dctx->tmpOut, + (int)dctx->tmpInTarget, (int)dctx->maxBlockSize, + dict, (int)dictSize); + if (decodedSize < 0) /* decompression failed */ + return err0r(LZ4F_ERROR_decompressionFailed); + if (dctx->frameInfo.contentChecksumFlag) + XXH32_update(&(dctx->xxh), dctx->tmpOut, (size_t)decodedSize); + if (dctx->frameInfo.contentSize) + dctx->frameRemainingSize -= (size_t)decodedSize; + dctx->tmpOutSize = (size_t)decodedSize; + dctx->tmpOutStart = 0; + dctx->dStage = dstage_flushOut; + } + /* fall-through */ + + case dstage_flushOut: /* flush decoded data from tmpOut to dstBuffer */ + DEBUGLOG(6, "dstage_flushOut"); + if (dstPtr != NULL) { + size_t const sizeToCopy = MIN(dctx->tmpOutSize - dctx->tmpOutStart, (size_t)(dstEnd-dstPtr)); + memcpy(dstPtr, dctx->tmpOut + dctx->tmpOutStart, sizeToCopy); + + /* dictionary management */ + if (dctx->frameInfo.blockMode == LZ4F_blockLinked) + LZ4F_updateDict(dctx, dstPtr, sizeToCopy, dstStart, 1 /*withinTmp*/); + + dctx->tmpOutStart += sizeToCopy; + dstPtr += sizeToCopy; + } + if (dctx->tmpOutStart == dctx->tmpOutSize) { /* all flushed */ + dctx->dStage = dstage_getBlockHeader; /* get next block */ + break; + } + /* could not flush everything : stop there, just request a block header */ + doAnotherStage = 0; + nextSrcSizeHint = BHSize; + break; + + case dstage_getSuffix: + if (dctx->frameRemainingSize) + return err0r(LZ4F_ERROR_frameSize_wrong); /* incorrect frame size decoded */ + if (!dctx->frameInfo.contentChecksumFlag) { /* no checksum, frame is completed */ + nextSrcSizeHint = 0; + LZ4F_resetDecompressionContext(dctx); + doAnotherStage = 0; + break; + } + if ((srcEnd - srcPtr) < 4) { /* not enough size for entire CRC */ + dctx->tmpInSize = 0; + dctx->dStage = dstage_storeSuffix; + } else { + selectedIn = srcPtr; + srcPtr += 4; + } + + if (dctx->dStage == dstage_storeSuffix) /* can be skipped */ + case dstage_storeSuffix: + { size_t const remainingInput = (size_t)(srcEnd - srcPtr); + size_t const wantedData = 4 - dctx->tmpInSize; + size_t const sizeToCopy = MIN(wantedData, remainingInput); + memcpy(dctx->tmpIn + dctx->tmpInSize, srcPtr, sizeToCopy); + srcPtr += sizeToCopy; + dctx->tmpInSize += sizeToCopy; + if (dctx->tmpInSize < 4) { /* not enough input to read complete suffix */ + nextSrcSizeHint = 4 - dctx->tmpInSize; + doAnotherStage=0; + break; + } + selectedIn = dctx->tmpIn; + } /* if (dctx->dStage == dstage_storeSuffix) */ + + /* case dstage_checkSuffix: */ /* no direct entry, avoid initialization risks */ + { U32 const readCRC = LZ4F_readLE32(selectedIn); + U32 const resultCRC = XXH32_digest(&(dctx->xxh)); +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + if (readCRC != resultCRC) + return err0r(LZ4F_ERROR_contentChecksum_invalid); +#else + (void)readCRC; + (void)resultCRC; +#endif + nextSrcSizeHint = 0; + LZ4F_resetDecompressionContext(dctx); + doAnotherStage = 0; + break; + } + + case dstage_getSFrameSize: + if ((srcEnd - srcPtr) >= 4) { + selectedIn = srcPtr; + srcPtr += 4; + } else { + /* not enough input to read cBlockSize field */ + dctx->tmpInSize = 4; + dctx->tmpInTarget = 8; + dctx->dStage = dstage_storeSFrameSize; + } + + if (dctx->dStage == dstage_storeSFrameSize) + case dstage_storeSFrameSize: + { size_t const sizeToCopy = MIN(dctx->tmpInTarget - dctx->tmpInSize, + (size_t)(srcEnd - srcPtr) ); + memcpy(dctx->header + dctx->tmpInSize, srcPtr, sizeToCopy); + srcPtr += sizeToCopy; + dctx->tmpInSize += sizeToCopy; + if (dctx->tmpInSize < dctx->tmpInTarget) { + /* not enough input to get full sBlockSize; wait for more */ + nextSrcSizeHint = dctx->tmpInTarget - dctx->tmpInSize; + doAnotherStage = 0; + break; + } + selectedIn = dctx->header + 4; + } /* if (dctx->dStage == dstage_storeSFrameSize) */ + + /* case dstage_decodeSFrameSize: */ /* no direct entry */ + { size_t const SFrameSize = LZ4F_readLE32(selectedIn); + dctx->frameInfo.contentSize = SFrameSize; + dctx->tmpInTarget = SFrameSize; + dctx->dStage = dstage_skipSkippable; + break; + } + + case dstage_skipSkippable: + { size_t const skipSize = MIN(dctx->tmpInTarget, (size_t)(srcEnd-srcPtr)); + srcPtr += skipSize; + dctx->tmpInTarget -= skipSize; + doAnotherStage = 0; + nextSrcSizeHint = dctx->tmpInTarget; + if (nextSrcSizeHint) break; /* still more to skip */ + /* frame fully skipped : prepare context for a new frame */ + LZ4F_resetDecompressionContext(dctx); + break; + } + } /* switch (dctx->dStage) */ + } /* while (doAnotherStage) */ + + /* preserve history within tmp whenever necessary */ + LZ4F_STATIC_ASSERT((unsigned)dstage_init == 2); + if ( (dctx->frameInfo.blockMode==LZ4F_blockLinked) /* next block will use up to 64KB from previous ones */ + && (dctx->dict != dctx->tmpOutBuffer) /* dictionary is not already within tmp */ + && (dctx->dict != NULL) /* dictionary exists */ + && (!decompressOptionsPtr->stableDst) /* cannot rely on dst data to remain there for next call */ + && ((unsigned)(dctx->dStage)-2 < (unsigned)(dstage_getSuffix)-2) ) /* valid stages : [init ... getSuffix[ */ + { + if (dctx->dStage == dstage_flushOut) { + size_t const preserveSize = (size_t)(dctx->tmpOut - dctx->tmpOutBuffer); + size_t copySize = 64 KB - dctx->tmpOutSize; + const BYTE* oldDictEnd = dctx->dict + dctx->dictSize - dctx->tmpOutStart; + if (dctx->tmpOutSize > 64 KB) copySize = 0; + if (copySize > preserveSize) copySize = preserveSize; + assert(dctx->tmpOutBuffer != NULL); + + memcpy(dctx->tmpOutBuffer + preserveSize - copySize, oldDictEnd - copySize, copySize); + + dctx->dict = dctx->tmpOutBuffer; + dctx->dictSize = preserveSize + dctx->tmpOutStart; + } else { + const BYTE* const oldDictEnd = dctx->dict + dctx->dictSize; + size_t const newDictSize = MIN(dctx->dictSize, 64 KB); + + memcpy(dctx->tmpOutBuffer, oldDictEnd - newDictSize, newDictSize); + + dctx->dict = dctx->tmpOutBuffer; + dctx->dictSize = newDictSize; + dctx->tmpOut = dctx->tmpOutBuffer + newDictSize; + } + } + + *srcSizePtr = (size_t)(srcPtr - srcStart); + *dstSizePtr = (size_t)(dstPtr - dstStart); + return nextSrcSizeHint; +} + +/*! LZ4F_decompress_usingDict() : + * Same as LZ4F_decompress(), using a predefined dictionary. + * Dictionary is used "in place", without any preprocessing. + * It must remain accessible throughout the entire frame decoding. + */ +size_t LZ4F_decompress_usingDict(LZ4F_dctx* dctx, + void* dstBuffer, size_t* dstSizePtr, + const void* srcBuffer, size_t* srcSizePtr, + const void* dict, size_t dictSize, + const LZ4F_decompressOptions_t* decompressOptionsPtr) +{ + if (dctx->dStage <= dstage_init) { + dctx->dict = (const BYTE*)dict; + dctx->dictSize = dictSize; + } + return LZ4F_decompress(dctx, dstBuffer, dstSizePtr, + srcBuffer, srcSizePtr, + decompressOptionsPtr); +} diff --git a/fsbl/lib/lz4/lz4frame.c b/fsbl/lib/lz4/lz4frame.c new file mode 100644 index 000000000..ec02c92f7 --- /dev/null +++ b/fsbl/lib/lz4/lz4frame.c @@ -0,0 +1,1899 @@ +/* + * LZ4 auto-framing library + * Copyright (C) 2011-2016, Yann Collet. + * + * BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * You can contact the author at : + * - LZ4 homepage : http://www.lz4.org + * - LZ4 source repository : https://github.com/lz4/lz4 + */ + +/* LZ4F is a stand-alone API to create LZ4-compressed Frames + * in full conformance with specification v1.6.1 . + * This library rely upon memory management capabilities (malloc, free) + * provided either by , + * or redirected towards another library of user's choice + * (see Memory Routines below). + */ + + +/*-************************************ +* Compiler Options +**************************************/ +#ifdef _MSC_VER /* Visual Studio */ +# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */ +#endif + + +/*-************************************ +* Tuning parameters +**************************************/ +/* + * LZ4F_HEAPMODE : + * Select how default compression functions will allocate memory for their hash table, + * in memory stack (0:default, fastest), or in memory heap (1:requires malloc()). + */ +#ifndef LZ4F_HEAPMODE +# define LZ4F_HEAPMODE 0 +#endif + + +/*-************************************ +* Memory routines +**************************************/ +/* + * User may redirect invocations of + * malloc(), calloc() and free() + * towards another library or solution of their choice + * by modifying below section. + */ +#ifndef LZ4_SRC_INCLUDED /* avoid redefinition when sources are coalesced */ +# include /* malloc, calloc, free */ +# define ALLOC(s) malloc(s) +# define ALLOC_AND_ZERO(s) calloc(1,(s)) +# define FREEMEM(p) free(p) +#endif + +#include /* memset, memcpy, memmove */ +#ifndef LZ4_SRC_INCLUDED /* avoid redefinition when sources are coalesced */ +# define MEM_INIT(p,v,s) memset((p),(v),(s)) +#endif + + +/*-************************************ +* Library declarations +**************************************/ +#define LZ4F_STATIC_LINKING_ONLY +#include "lz4frame.h" +#define LZ4_STATIC_LINKING_ONLY +#include "lz4.h" +#define LZ4_HC_STATIC_LINKING_ONLY +#include "lz4hc.h" +#define XXH_STATIC_LINKING_ONLY +#include "xxhash.h" + + +/*-************************************ +* Debug +**************************************/ +#if defined(LZ4_DEBUG) && (LZ4_DEBUG>=1) +# include +#else +# ifndef assert +# define assert(condition) ((void)0) +# endif +#endif + +#define LZ4F_STATIC_ASSERT(c) { enum { LZ4F_static_assert = 1/(int)(!!(c)) }; } /* use only *after* variable declarations */ + +#if defined(LZ4_DEBUG) && (LZ4_DEBUG>=2) && !defined(DEBUGLOG) +# include +static int g_debuglog_enable = 1; +# define DEBUGLOG(l, ...) { \ + if ((g_debuglog_enable) && (l<=LZ4_DEBUG)) { \ + fprintf(stderr, __FILE__ ": "); \ + fprintf(stderr, __VA_ARGS__); \ + fprintf(stderr, " \n"); \ + } } +#else +# define DEBUGLOG(l, ...) {} /* disabled */ +#endif + + +/*-************************************ +* Basic Types +**************************************/ +#if !defined (__VMS) && (defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) ) +# include + typedef uint8_t BYTE; + typedef uint16_t U16; + typedef uint32_t U32; + typedef int32_t S32; + typedef uint64_t U64; +#else + typedef unsigned char BYTE; + typedef unsigned short U16; + typedef unsigned int U32; + typedef signed int S32; + typedef unsigned long long U64; +#endif + + +/* unoptimized version; solves endianess & alignment issues */ +static U32 LZ4F_readLE32 (const void* src) +{ + const BYTE* const srcPtr = (const BYTE*)src; + U32 value32 = srcPtr[0]; + value32 += ((U32)srcPtr[1])<< 8; + value32 += ((U32)srcPtr[2])<<16; + value32 += ((U32)srcPtr[3])<<24; + return value32; +} + +static void LZ4F_writeLE32 (void* dst, U32 value32) +{ + BYTE* const dstPtr = (BYTE*)dst; + dstPtr[0] = (BYTE)value32; + dstPtr[1] = (BYTE)(value32 >> 8); + dstPtr[2] = (BYTE)(value32 >> 16); + dstPtr[3] = (BYTE)(value32 >> 24); +} + +static U64 LZ4F_readLE64 (const void* src) +{ + const BYTE* const srcPtr = (const BYTE*)src; + U64 value64 = srcPtr[0]; + value64 += ((U64)srcPtr[1]<<8); + value64 += ((U64)srcPtr[2]<<16); + value64 += ((U64)srcPtr[3]<<24); + value64 += ((U64)srcPtr[4]<<32); + value64 += ((U64)srcPtr[5]<<40); + value64 += ((U64)srcPtr[6]<<48); + value64 += ((U64)srcPtr[7]<<56); + return value64; +} + +static void LZ4F_writeLE64 (void* dst, U64 value64) +{ + BYTE* const dstPtr = (BYTE*)dst; + dstPtr[0] = (BYTE)value64; + dstPtr[1] = (BYTE)(value64 >> 8); + dstPtr[2] = (BYTE)(value64 >> 16); + dstPtr[3] = (BYTE)(value64 >> 24); + dstPtr[4] = (BYTE)(value64 >> 32); + dstPtr[5] = (BYTE)(value64 >> 40); + dstPtr[6] = (BYTE)(value64 >> 48); + dstPtr[7] = (BYTE)(value64 >> 56); +} + + +/*-************************************ +* Constants +**************************************/ +#ifndef LZ4_SRC_INCLUDED /* avoid double definition */ +# define KB *(1<<10) +# define MB *(1<<20) +# define GB *(1<<30) +#endif + +#define _1BIT 0x01 +#define _2BITS 0x03 +#define _3BITS 0x07 +#define _4BITS 0x0F +#define _8BITS 0xFF + +#define LZ4F_MAGIC_SKIPPABLE_START 0x184D2A50U +#define LZ4F_MAGICNUMBER 0x184D2204U +#define LZ4F_BLOCKUNCOMPRESSED_FLAG 0x80000000U +#define LZ4F_BLOCKSIZEID_DEFAULT LZ4F_max64KB + +static const size_t minFHSize = LZ4F_HEADER_SIZE_MIN; /* 7 */ +static const size_t maxFHSize = LZ4F_HEADER_SIZE_MAX; /* 19 */ +static const size_t BHSize = LZ4F_BLOCK_HEADER_SIZE; /* block header : size, and compress flag */ +static const size_t BFSize = LZ4F_BLOCK_CHECKSUM_SIZE; /* block footer : checksum (optional) */ + + +/*-************************************ +* Structures and local types +**************************************/ +typedef struct LZ4F_cctx_s +{ + LZ4F_preferences_t prefs; + U32 version; + U32 cStage; + const LZ4F_CDict* cdict; + size_t maxBlockSize; + size_t maxBufferSize; + BYTE* tmpBuff; + BYTE* tmpIn; + size_t tmpInSize; + U64 totalInSize; + XXH32_state_t xxh; + void* lz4CtxPtr; + U16 lz4CtxAlloc; /* sized for: 0 = none, 1 = lz4 ctx, 2 = lz4hc ctx */ + U16 lz4CtxState; /* in use as: 0 = none, 1 = lz4 ctx, 2 = lz4hc ctx */ +} LZ4F_cctx_t; + + +/*-************************************ +* Error management +**************************************/ +#define LZ4F_GENERATE_STRING(STRING) #STRING, +static const char* LZ4F_errorStrings[] = { LZ4F_LIST_ERRORS(LZ4F_GENERATE_STRING) }; + + +unsigned LZ4F_isError(LZ4F_errorCode_t code) +{ + return (code > (LZ4F_errorCode_t)(-LZ4F_ERROR_maxCode)); +} + +const char* LZ4F_getErrorName(LZ4F_errorCode_t code) +{ + static const char* codeError = "Unspecified error code"; + if (LZ4F_isError(code)) return LZ4F_errorStrings[-(int)(code)]; + return codeError; +} + +LZ4F_errorCodes LZ4F_getErrorCode(size_t functionResult) +{ + if (!LZ4F_isError(functionResult)) return LZ4F_OK_NoError; + return (LZ4F_errorCodes)(-(ptrdiff_t)functionResult); +} + +static LZ4F_errorCode_t err0r(LZ4F_errorCodes code) +{ + /* A compilation error here means sizeof(ptrdiff_t) is not large enough */ + LZ4F_STATIC_ASSERT(sizeof(ptrdiff_t) >= sizeof(size_t)); + return (LZ4F_errorCode_t)-(ptrdiff_t)code; +} + +unsigned LZ4F_getVersion(void) { return LZ4F_VERSION; } + +int LZ4F_compressionLevel_max(void) { return LZ4HC_CLEVEL_MAX; } + +size_t LZ4F_getBlockSize(unsigned blockSizeID) +{ + static const size_t blockSizes[4] = { 64 KB, 256 KB, 1 MB, 4 MB }; + + if (blockSizeID == 0) blockSizeID = LZ4F_BLOCKSIZEID_DEFAULT; + if (blockSizeID < LZ4F_max64KB || blockSizeID > LZ4F_max4MB) + return err0r(LZ4F_ERROR_maxBlockSize_invalid); + blockSizeID -= LZ4F_max64KB; + return blockSizes[blockSizeID]; +} + +/*-************************************ +* Private functions +**************************************/ +#define MIN(a,b) ( (a) < (b) ? (a) : (b) ) + +static BYTE LZ4F_headerChecksum (const void* header, size_t length) +{ + U32 const xxh = XXH32(header, length, 0); + return (BYTE)(xxh >> 8); +} + + +/*-************************************ +* Simple-pass compression functions +**************************************/ +static LZ4F_blockSizeID_t LZ4F_optimalBSID(const LZ4F_blockSizeID_t requestedBSID, + const size_t srcSize) +{ + LZ4F_blockSizeID_t proposedBSID = LZ4F_max64KB; + size_t maxBlockSize = 64 KB; + while (requestedBSID > proposedBSID) { + if (srcSize <= maxBlockSize) + return proposedBSID; + proposedBSID = (LZ4F_blockSizeID_t)((int)proposedBSID + 1); + maxBlockSize <<= 2; + } + return requestedBSID; +} + +/*! LZ4F_compressBound_internal() : + * Provides dstCapacity given a srcSize to guarantee operation success in worst case situations. + * prefsPtr is optional : if NULL is provided, preferences will be set to cover worst case scenario. + * @return is always the same for a srcSize and prefsPtr, so it can be relied upon to size reusable buffers. + * When srcSize==0, LZ4F_compressBound() provides an upper bound for LZ4F_flush() and LZ4F_compressEnd() operations. + */ +static size_t LZ4F_compressBound_internal(size_t srcSize, + const LZ4F_preferences_t* preferencesPtr, + size_t alreadyBuffered) +{ + LZ4F_preferences_t prefsNull = LZ4F_INIT_PREFERENCES; + prefsNull.frameInfo.contentChecksumFlag = LZ4F_contentChecksumEnabled; /* worst case */ + prefsNull.frameInfo.blockChecksumFlag = LZ4F_blockChecksumEnabled; /* worst case */ + { const LZ4F_preferences_t* const prefsPtr = (preferencesPtr==NULL) ? &prefsNull : preferencesPtr; + U32 const flush = prefsPtr->autoFlush | (srcSize==0); + LZ4F_blockSizeID_t const blockID = prefsPtr->frameInfo.blockSizeID; + size_t const blockSize = LZ4F_getBlockSize(blockID); + size_t const maxBuffered = blockSize - 1; + size_t const bufferedSize = MIN(alreadyBuffered, maxBuffered); + size_t const maxSrcSize = srcSize + bufferedSize; + unsigned const nbFullBlocks = (unsigned)(maxSrcSize / blockSize); + size_t const partialBlockSize = maxSrcSize & (blockSize-1); + size_t const lastBlockSize = flush ? partialBlockSize : 0; + unsigned const nbBlocks = nbFullBlocks + (lastBlockSize>0); + + size_t const blockCRCSize = BFSize * prefsPtr->frameInfo.blockChecksumFlag; + size_t const frameEnd = BHSize + (prefsPtr->frameInfo.contentChecksumFlag*BFSize); + + return ((BHSize + blockCRCSize) * nbBlocks) + + (blockSize * nbFullBlocks) + lastBlockSize + frameEnd; + } +} + +size_t LZ4F_compressFrameBound(size_t srcSize, const LZ4F_preferences_t* preferencesPtr) +{ + LZ4F_preferences_t prefs; + size_t const headerSize = maxFHSize; /* max header size, including optional fields */ + + if (preferencesPtr!=NULL) prefs = *preferencesPtr; + else MEM_INIT(&prefs, 0, sizeof(prefs)); + prefs.autoFlush = 1; + + return headerSize + LZ4F_compressBound_internal(srcSize, &prefs, 0);; +} + + +/*! LZ4F_compressFrame_usingCDict() : + * Compress srcBuffer using a dictionary, in a single step. + * cdict can be NULL, in which case, no dictionary is used. + * dstBuffer MUST be >= LZ4F_compressFrameBound(srcSize, preferencesPtr). + * The LZ4F_preferences_t structure is optional : you may provide NULL as argument, + * however, it's the only way to provide a dictID, so it's not recommended. + * @return : number of bytes written into dstBuffer, + * or an error code if it fails (can be tested using LZ4F_isError()) + */ +size_t LZ4F_compressFrame_usingCDict(LZ4F_cctx* cctx, + void* dstBuffer, size_t dstCapacity, + const void* srcBuffer, size_t srcSize, + const LZ4F_CDict* cdict, + const LZ4F_preferences_t* preferencesPtr) +{ + LZ4F_preferences_t prefs; + LZ4F_compressOptions_t options; + BYTE* const dstStart = (BYTE*) dstBuffer; + BYTE* dstPtr = dstStart; + BYTE* const dstEnd = dstStart + dstCapacity; + + if (preferencesPtr!=NULL) + prefs = *preferencesPtr; + else + MEM_INIT(&prefs, 0, sizeof(prefs)); + if (prefs.frameInfo.contentSize != 0) + prefs.frameInfo.contentSize = (U64)srcSize; /* auto-correct content size if selected (!=0) */ + + prefs.frameInfo.blockSizeID = LZ4F_optimalBSID(prefs.frameInfo.blockSizeID, srcSize); + prefs.autoFlush = 1; + if (srcSize <= LZ4F_getBlockSize(prefs.frameInfo.blockSizeID)) + prefs.frameInfo.blockMode = LZ4F_blockIndependent; /* only one block => no need for inter-block link */ + + MEM_INIT(&options, 0, sizeof(options)); + options.stableSrc = 1; + + if (dstCapacity < LZ4F_compressFrameBound(srcSize, &prefs)) /* condition to guarantee success */ + return err0r(LZ4F_ERROR_dstMaxSize_tooSmall); + + { size_t const headerSize = LZ4F_compressBegin_usingCDict(cctx, dstBuffer, dstCapacity, cdict, &prefs); /* write header */ + if (LZ4F_isError(headerSize)) return headerSize; + dstPtr += headerSize; /* header size */ } + + assert(dstEnd >= dstPtr); + { size_t const cSize = LZ4F_compressUpdate(cctx, dstPtr, (size_t)(dstEnd-dstPtr), srcBuffer, srcSize, &options); + if (LZ4F_isError(cSize)) return cSize; + dstPtr += cSize; } + + assert(dstEnd >= dstPtr); + { size_t const tailSize = LZ4F_compressEnd(cctx, dstPtr, (size_t)(dstEnd-dstPtr), &options); /* flush last block, and generate suffix */ + if (LZ4F_isError(tailSize)) return tailSize; + dstPtr += tailSize; } + + assert(dstEnd >= dstStart); + return (size_t)(dstPtr - dstStart); +} + + +/*! LZ4F_compressFrame() : + * Compress an entire srcBuffer into a valid LZ4 frame, in a single step. + * dstBuffer MUST be >= LZ4F_compressFrameBound(srcSize, preferencesPtr). + * The LZ4F_preferences_t structure is optional : you can provide NULL as argument. All preferences will be set to default. + * @return : number of bytes written into dstBuffer. + * or an error code if it fails (can be tested using LZ4F_isError()) + */ +size_t LZ4F_compressFrame(void* dstBuffer, size_t dstCapacity, + const void* srcBuffer, size_t srcSize, + const LZ4F_preferences_t* preferencesPtr) +{ + size_t result; +#if (LZ4F_HEAPMODE) + LZ4F_cctx_t *cctxPtr; + result = LZ4F_createCompressionContext(&cctxPtr, LZ4F_VERSION); + if (LZ4F_isError(result)) return result; +#else + LZ4F_cctx_t cctx; + LZ4_stream_t lz4ctx; + LZ4F_cctx_t *cctxPtr = &cctx; + + DEBUGLOG(4, "LZ4F_compressFrame"); + MEM_INIT(&cctx, 0, sizeof(cctx)); + cctx.version = LZ4F_VERSION; + cctx.maxBufferSize = 5 MB; /* mess with real buffer size to prevent dynamic allocation; works only because autoflush==1 & stableSrc==1 */ + if (preferencesPtr == NULL || + preferencesPtr->compressionLevel < LZ4HC_CLEVEL_MIN) + { + LZ4_initStream(&lz4ctx, sizeof(lz4ctx)); + cctxPtr->lz4CtxPtr = &lz4ctx; + cctxPtr->lz4CtxAlloc = 1; + cctxPtr->lz4CtxState = 1; + } +#endif + + result = LZ4F_compressFrame_usingCDict(cctxPtr, dstBuffer, dstCapacity, + srcBuffer, srcSize, + NULL, preferencesPtr); + +#if (LZ4F_HEAPMODE) + LZ4F_freeCompressionContext(cctxPtr); +#else + if (preferencesPtr != NULL && + preferencesPtr->compressionLevel >= LZ4HC_CLEVEL_MIN) + { + FREEMEM(cctxPtr->lz4CtxPtr); + } +#endif + return result; +} + + +/*-*************************************************** +* Dictionary compression +*****************************************************/ + +struct LZ4F_CDict_s { + void* dictContent; + LZ4_stream_t* fastCtx; + LZ4_streamHC_t* HCCtx; +}; /* typedef'd to LZ4F_CDict within lz4frame_static.h */ + +/*! LZ4F_createCDict() : + * When compressing multiple messages / blocks with the same dictionary, it's recommended to load it just once. + * LZ4F_createCDict() will create a digested dictionary, ready to start future compression operations without startup delay. + * LZ4F_CDict can be created once and shared by multiple threads concurrently, since its usage is read-only. + * `dictBuffer` can be released after LZ4F_CDict creation, since its content is copied within CDict + * @return : digested dictionary for compression, or NULL if failed */ +LZ4F_CDict* LZ4F_createCDict(const void* dictBuffer, size_t dictSize) +{ + const char* dictStart = (const char*)dictBuffer; + LZ4F_CDict* cdict = (LZ4F_CDict*) ALLOC(sizeof(*cdict)); + DEBUGLOG(4, "LZ4F_createCDict"); + if (!cdict) return NULL; + if (dictSize > 64 KB) { + dictStart += dictSize - 64 KB; + dictSize = 64 KB; + } + cdict->dictContent = ALLOC(dictSize); + cdict->fastCtx = LZ4_createStream(); + cdict->HCCtx = LZ4_createStreamHC(); + if (!cdict->dictContent || !cdict->fastCtx || !cdict->HCCtx) { + LZ4F_freeCDict(cdict); + return NULL; + } + memcpy(cdict->dictContent, dictStart, dictSize); + LZ4_loadDict (cdict->fastCtx, (const char*)cdict->dictContent, (int)dictSize); + LZ4_setCompressionLevel(cdict->HCCtx, LZ4HC_CLEVEL_DEFAULT); + LZ4_loadDictHC(cdict->HCCtx, (const char*)cdict->dictContent, (int)dictSize); + return cdict; +} + +void LZ4F_freeCDict(LZ4F_CDict* cdict) +{ + if (cdict==NULL) return; /* support free on NULL */ + FREEMEM(cdict->dictContent); + LZ4_freeStream(cdict->fastCtx); + LZ4_freeStreamHC(cdict->HCCtx); + FREEMEM(cdict); +} + + +/*-********************************* +* Advanced compression functions +***********************************/ + +/*! LZ4F_createCompressionContext() : + * The first thing to do is to create a compressionContext object, which will be used in all compression operations. + * This is achieved using LZ4F_createCompressionContext(), which takes as argument a version and an LZ4F_preferences_t structure. + * The version provided MUST be LZ4F_VERSION. It is intended to track potential incompatible differences between different binaries. + * The function will provide a pointer to an allocated LZ4F_compressionContext_t object. + * If the result LZ4F_errorCode_t is not OK_NoError, there was an error during context creation. + * Object can release its memory using LZ4F_freeCompressionContext(); + */ +LZ4F_errorCode_t LZ4F_createCompressionContext(LZ4F_cctx** LZ4F_compressionContextPtr, unsigned version) +{ + LZ4F_cctx_t* const cctxPtr = (LZ4F_cctx_t*)ALLOC_AND_ZERO(sizeof(LZ4F_cctx_t)); + if (cctxPtr==NULL) return err0r(LZ4F_ERROR_allocation_failed); + + cctxPtr->version = version; + cctxPtr->cStage = 0; /* Next stage : init stream */ + + *LZ4F_compressionContextPtr = cctxPtr; + + return LZ4F_OK_NoError; +} + + +LZ4F_errorCode_t LZ4F_freeCompressionContext(LZ4F_cctx* cctxPtr) +{ + if (cctxPtr != NULL) { /* support free on NULL */ + FREEMEM(cctxPtr->lz4CtxPtr); /* note: LZ4_streamHC_t and LZ4_stream_t are simple POD types */ + FREEMEM(cctxPtr->tmpBuff); + FREEMEM(cctxPtr); + } + + return LZ4F_OK_NoError; +} + + +/** + * This function prepares the internal LZ4(HC) stream for a new compression, + * resetting the context and attaching the dictionary, if there is one. + * + * It needs to be called at the beginning of each independent compression + * stream (i.e., at the beginning of a frame in blockLinked mode, or at the + * beginning of each block in blockIndependent mode). + */ +static void LZ4F_initStream(void* ctx, + const LZ4F_CDict* cdict, + int level, + LZ4F_blockMode_t blockMode) { + if (level < LZ4HC_CLEVEL_MIN) { + if (cdict != NULL || blockMode == LZ4F_blockLinked) { + /* In these cases, we will call LZ4_compress_fast_continue(), + * which needs an already reset context. Otherwise, we'll call a + * one-shot API. The non-continued APIs internally perform their own + * resets at the beginning of their calls, where they know what + * tableType they need the context to be in. So in that case this + * would be misguided / wasted work. */ + LZ4_resetStream_fast((LZ4_stream_t*)ctx); + } + LZ4_attach_dictionary((LZ4_stream_t *)ctx, cdict ? cdict->fastCtx : NULL); + } else { + LZ4_resetStreamHC_fast((LZ4_streamHC_t*)ctx, level); + LZ4_attach_HC_dictionary((LZ4_streamHC_t *)ctx, cdict ? cdict->HCCtx : NULL); + } +} + + +/*! LZ4F_compressBegin_usingCDict() : + * init streaming compression and writes frame header into dstBuffer. + * dstBuffer must be >= LZ4F_HEADER_SIZE_MAX bytes. + * @return : number of bytes written into dstBuffer for the header + * or an error code (can be tested using LZ4F_isError()) + */ +size_t LZ4F_compressBegin_usingCDict(LZ4F_cctx* cctxPtr, + void* dstBuffer, size_t dstCapacity, + const LZ4F_CDict* cdict, + const LZ4F_preferences_t* preferencesPtr) +{ + LZ4F_preferences_t prefNull; + BYTE* const dstStart = (BYTE*)dstBuffer; + BYTE* dstPtr = dstStart; + BYTE* headerStart; + + if (dstCapacity < maxFHSize) return err0r(LZ4F_ERROR_dstMaxSize_tooSmall); + MEM_INIT(&prefNull, 0, sizeof(prefNull)); + if (preferencesPtr == NULL) preferencesPtr = &prefNull; + cctxPtr->prefs = *preferencesPtr; + + /* Ctx Management */ + { U16 const ctxTypeID = (cctxPtr->prefs.compressionLevel < LZ4HC_CLEVEL_MIN) ? 1 : 2; + if (cctxPtr->lz4CtxAlloc < ctxTypeID) { + FREEMEM(cctxPtr->lz4CtxPtr); + if (cctxPtr->prefs.compressionLevel < LZ4HC_CLEVEL_MIN) { + cctxPtr->lz4CtxPtr = LZ4_createStream(); + } else { + cctxPtr->lz4CtxPtr = LZ4_createStreamHC(); + } + if (cctxPtr->lz4CtxPtr == NULL) + return err0r(LZ4F_ERROR_allocation_failed); + cctxPtr->lz4CtxAlloc = ctxTypeID; + cctxPtr->lz4CtxState = ctxTypeID; + } else if (cctxPtr->lz4CtxState != ctxTypeID) { + /* otherwise, a sufficient buffer is allocated, but we need to + * reset it to the correct context type */ + if (cctxPtr->prefs.compressionLevel < LZ4HC_CLEVEL_MIN) { + LZ4_initStream((LZ4_stream_t *) cctxPtr->lz4CtxPtr, sizeof (LZ4_stream_t)); + } else { + LZ4_initStreamHC((LZ4_streamHC_t *) cctxPtr->lz4CtxPtr, sizeof(LZ4_streamHC_t)); + LZ4_setCompressionLevel((LZ4_streamHC_t *) cctxPtr->lz4CtxPtr, cctxPtr->prefs.compressionLevel); + } + cctxPtr->lz4CtxState = ctxTypeID; + } + } + + /* Buffer Management */ + if (cctxPtr->prefs.frameInfo.blockSizeID == 0) + cctxPtr->prefs.frameInfo.blockSizeID = LZ4F_BLOCKSIZEID_DEFAULT; + cctxPtr->maxBlockSize = LZ4F_getBlockSize(cctxPtr->prefs.frameInfo.blockSizeID); + + { size_t const requiredBuffSize = preferencesPtr->autoFlush ? + ((cctxPtr->prefs.frameInfo.blockMode == LZ4F_blockLinked) ? 64 KB : 0) : /* only needs past data up to window size */ + cctxPtr->maxBlockSize + ((cctxPtr->prefs.frameInfo.blockMode == LZ4F_blockLinked) ? 128 KB : 0); + + if (cctxPtr->maxBufferSize < requiredBuffSize) { + cctxPtr->maxBufferSize = 0; + FREEMEM(cctxPtr->tmpBuff); + cctxPtr->tmpBuff = (BYTE*)ALLOC_AND_ZERO(requiredBuffSize); + if (cctxPtr->tmpBuff == NULL) return err0r(LZ4F_ERROR_allocation_failed); + cctxPtr->maxBufferSize = requiredBuffSize; + } } + cctxPtr->tmpIn = cctxPtr->tmpBuff; + cctxPtr->tmpInSize = 0; + (void)XXH32_reset(&(cctxPtr->xxh), 0); + + /* context init */ + cctxPtr->cdict = cdict; + if (cctxPtr->prefs.frameInfo.blockMode == LZ4F_blockLinked) { + /* frame init only for blockLinked : blockIndependent will be init at each block */ + LZ4F_initStream(cctxPtr->lz4CtxPtr, cdict, cctxPtr->prefs.compressionLevel, LZ4F_blockLinked); + } + if (preferencesPtr->compressionLevel >= LZ4HC_CLEVEL_MIN) { + LZ4_favorDecompressionSpeed((LZ4_streamHC_t*)cctxPtr->lz4CtxPtr, (int)preferencesPtr->favorDecSpeed); + } + + /* Magic Number */ + LZ4F_writeLE32(dstPtr, LZ4F_MAGICNUMBER); + dstPtr += 4; + headerStart = dstPtr; + + /* FLG Byte */ + *dstPtr++ = (BYTE)(((1 & _2BITS) << 6) /* Version('01') */ + + ((cctxPtr->prefs.frameInfo.blockMode & _1BIT ) << 5) + + ((cctxPtr->prefs.frameInfo.blockChecksumFlag & _1BIT ) << 4) + + ((unsigned)(cctxPtr->prefs.frameInfo.contentSize > 0) << 3) + + ((cctxPtr->prefs.frameInfo.contentChecksumFlag & _1BIT ) << 2) + + (cctxPtr->prefs.frameInfo.dictID > 0) ); + /* BD Byte */ + *dstPtr++ = (BYTE)((cctxPtr->prefs.frameInfo.blockSizeID & _3BITS) << 4); + /* Optional Frame content size field */ + if (cctxPtr->prefs.frameInfo.contentSize) { + LZ4F_writeLE64(dstPtr, cctxPtr->prefs.frameInfo.contentSize); + dstPtr += 8; + cctxPtr->totalInSize = 0; + } + /* Optional dictionary ID field */ + if (cctxPtr->prefs.frameInfo.dictID) { + LZ4F_writeLE32(dstPtr, cctxPtr->prefs.frameInfo.dictID); + dstPtr += 4; + } + /* Header CRC Byte */ + *dstPtr = LZ4F_headerChecksum(headerStart, (size_t)(dstPtr - headerStart)); + dstPtr++; + + cctxPtr->cStage = 1; /* header written, now request input data block */ + return (size_t)(dstPtr - dstStart); +} + + +/*! LZ4F_compressBegin() : + * init streaming compression and writes frame header into dstBuffer. + * dstBuffer must be >= LZ4F_HEADER_SIZE_MAX bytes. + * preferencesPtr can be NULL, in which case default parameters are selected. + * @return : number of bytes written into dstBuffer for the header + * or an error code (can be tested using LZ4F_isError()) + */ +size_t LZ4F_compressBegin(LZ4F_cctx* cctxPtr, + void* dstBuffer, size_t dstCapacity, + const LZ4F_preferences_t* preferencesPtr) +{ + return LZ4F_compressBegin_usingCDict(cctxPtr, dstBuffer, dstCapacity, + NULL, preferencesPtr); +} + + +/* LZ4F_compressBound() : + * @return minimum capacity of dstBuffer for a given srcSize to handle worst case scenario. + * LZ4F_preferences_t structure is optional : if NULL, preferences will be set to cover worst case scenario. + * This function cannot fail. + */ +size_t LZ4F_compressBound(size_t srcSize, const LZ4F_preferences_t* preferencesPtr) +{ + if (preferencesPtr && preferencesPtr->autoFlush) { + return LZ4F_compressBound_internal(srcSize, preferencesPtr, 0); + } + return LZ4F_compressBound_internal(srcSize, preferencesPtr, (size_t)-1); +} + + +typedef int (*compressFunc_t)(void* ctx, const char* src, char* dst, int srcSize, int dstSize, int level, const LZ4F_CDict* cdict); + + +/*! LZ4F_makeBlock(): + * compress a single block, add header and optional checksum. + * assumption : dst buffer capacity is >= BHSize + srcSize + crcSize + */ +static size_t LZ4F_makeBlock(void* dst, + const void* src, size_t srcSize, + compressFunc_t compress, void* lz4ctx, int level, + const LZ4F_CDict* cdict, + LZ4F_blockChecksum_t crcFlag) +{ + BYTE* const cSizePtr = (BYTE*)dst; + U32 cSize = (U32)compress(lz4ctx, (const char*)src, (char*)(cSizePtr+BHSize), + (int)(srcSize), (int)(srcSize-1), + level, cdict); + if (cSize == 0) { /* compression failed */ + DEBUGLOG(5, "LZ4F_makeBlock: compression failed, creating a raw block (size %u)", (U32)srcSize); + cSize = (U32)srcSize; + LZ4F_writeLE32(cSizePtr, cSize | LZ4F_BLOCKUNCOMPRESSED_FLAG); + memcpy(cSizePtr+BHSize, src, srcSize); + } else { + LZ4F_writeLE32(cSizePtr, cSize); + } + if (crcFlag) { + U32 const crc32 = XXH32(cSizePtr+BHSize, cSize, 0); /* checksum of compressed data */ + LZ4F_writeLE32(cSizePtr+BHSize+cSize, crc32); + } + return BHSize + cSize + ((U32)crcFlag)*BFSize; +} + + +static int LZ4F_compressBlock(void* ctx, const char* src, char* dst, int srcSize, int dstCapacity, int level, const LZ4F_CDict* cdict) +{ + int const acceleration = (level < 0) ? -level + 1 : 1; + LZ4F_initStream(ctx, cdict, level, LZ4F_blockIndependent); + if (cdict) { + return LZ4_compress_fast_continue((LZ4_stream_t*)ctx, src, dst, srcSize, dstCapacity, acceleration); + } else { + return LZ4_compress_fast_extState_fastReset(ctx, src, dst, srcSize, dstCapacity, acceleration); + } +} + +static int LZ4F_compressBlock_continue(void* ctx, const char* src, char* dst, int srcSize, int dstCapacity, int level, const LZ4F_CDict* cdict) +{ + int const acceleration = (level < 0) ? -level + 1 : 1; + (void)cdict; /* init once at beginning of frame */ + return LZ4_compress_fast_continue((LZ4_stream_t*)ctx, src, dst, srcSize, dstCapacity, acceleration); +} + +static int LZ4F_compressBlockHC(void* ctx, const char* src, char* dst, int srcSize, int dstCapacity, int level, const LZ4F_CDict* cdict) +{ + LZ4F_initStream(ctx, cdict, level, LZ4F_blockIndependent); + if (cdict) { + return LZ4_compress_HC_continue((LZ4_streamHC_t*)ctx, src, dst, srcSize, dstCapacity); + } + return LZ4_compress_HC_extStateHC_fastReset(ctx, src, dst, srcSize, dstCapacity, level); +} + +static int LZ4F_compressBlockHC_continue(void* ctx, const char* src, char* dst, int srcSize, int dstCapacity, int level, const LZ4F_CDict* cdict) +{ + (void)level; (void)cdict; /* init once at beginning of frame */ + return LZ4_compress_HC_continue((LZ4_streamHC_t*)ctx, src, dst, srcSize, dstCapacity); +} + +static compressFunc_t LZ4F_selectCompression(LZ4F_blockMode_t blockMode, int level) +{ + if (level < LZ4HC_CLEVEL_MIN) { + if (blockMode == LZ4F_blockIndependent) return LZ4F_compressBlock; + return LZ4F_compressBlock_continue; + } + if (blockMode == LZ4F_blockIndependent) return LZ4F_compressBlockHC; + return LZ4F_compressBlockHC_continue; +} + +static int LZ4F_localSaveDict(LZ4F_cctx_t* cctxPtr) +{ + if (cctxPtr->prefs.compressionLevel < LZ4HC_CLEVEL_MIN) + return LZ4_saveDict ((LZ4_stream_t*)(cctxPtr->lz4CtxPtr), (char*)(cctxPtr->tmpBuff), 64 KB); + return LZ4_saveDictHC ((LZ4_streamHC_t*)(cctxPtr->lz4CtxPtr), (char*)(cctxPtr->tmpBuff), 64 KB); +} + +typedef enum { notDone, fromTmpBuffer, fromSrcBuffer } LZ4F_lastBlockStatus; + +/*! LZ4F_compressUpdate() : + * LZ4F_compressUpdate() can be called repetitively to compress as much data as necessary. + * dstBuffer MUST be >= LZ4F_compressBound(srcSize, preferencesPtr). + * LZ4F_compressOptions_t structure is optional : you can provide NULL as argument. + * @return : the number of bytes written into dstBuffer. It can be zero, meaning input data was just buffered. + * or an error code if it fails (which can be tested using LZ4F_isError()) + */ +size_t LZ4F_compressUpdate(LZ4F_cctx* cctxPtr, + void* dstBuffer, size_t dstCapacity, + const void* srcBuffer, size_t srcSize, + const LZ4F_compressOptions_t* compressOptionsPtr) +{ + LZ4F_compressOptions_t cOptionsNull; + size_t const blockSize = cctxPtr->maxBlockSize; + const BYTE* srcPtr = (const BYTE*)srcBuffer; + const BYTE* const srcEnd = srcPtr + srcSize; + BYTE* const dstStart = (BYTE*)dstBuffer; + BYTE* dstPtr = dstStart; + LZ4F_lastBlockStatus lastBlockCompressed = notDone; + compressFunc_t const compress = LZ4F_selectCompression(cctxPtr->prefs.frameInfo.blockMode, cctxPtr->prefs.compressionLevel); + + DEBUGLOG(4, "LZ4F_compressUpdate (srcSize=%zu)", srcSize); + + if (cctxPtr->cStage != 1) return err0r(LZ4F_ERROR_GENERIC); + if (dstCapacity < LZ4F_compressBound_internal(srcSize, &(cctxPtr->prefs), cctxPtr->tmpInSize)) + return err0r(LZ4F_ERROR_dstMaxSize_tooSmall); + MEM_INIT(&cOptionsNull, 0, sizeof(cOptionsNull)); + if (compressOptionsPtr == NULL) compressOptionsPtr = &cOptionsNull; + + /* complete tmp buffer */ + if (cctxPtr->tmpInSize > 0) { /* some data already within tmp buffer */ + size_t const sizeToCopy = blockSize - cctxPtr->tmpInSize; + if (sizeToCopy > srcSize) { + /* add src to tmpIn buffer */ + memcpy(cctxPtr->tmpIn + cctxPtr->tmpInSize, srcBuffer, srcSize); + srcPtr = srcEnd; + cctxPtr->tmpInSize += srcSize; + /* still needs some CRC */ + } else { + /* complete tmpIn block and then compress it */ + lastBlockCompressed = fromTmpBuffer; + memcpy(cctxPtr->tmpIn + cctxPtr->tmpInSize, srcBuffer, sizeToCopy); + srcPtr += sizeToCopy; + + dstPtr += LZ4F_makeBlock(dstPtr, + cctxPtr->tmpIn, blockSize, + compress, cctxPtr->lz4CtxPtr, cctxPtr->prefs.compressionLevel, + cctxPtr->cdict, + cctxPtr->prefs.frameInfo.blockChecksumFlag); + + if (cctxPtr->prefs.frameInfo.blockMode==LZ4F_blockLinked) cctxPtr->tmpIn += blockSize; + cctxPtr->tmpInSize = 0; + } + } + + while ((size_t)(srcEnd - srcPtr) >= blockSize) { + /* compress full blocks */ + lastBlockCompressed = fromSrcBuffer; + dstPtr += LZ4F_makeBlock(dstPtr, + srcPtr, blockSize, + compress, cctxPtr->lz4CtxPtr, cctxPtr->prefs.compressionLevel, + cctxPtr->cdict, + cctxPtr->prefs.frameInfo.blockChecksumFlag); + srcPtr += blockSize; + } + + if ((cctxPtr->prefs.autoFlush) && (srcPtr < srcEnd)) { + /* compress remaining input < blockSize */ + lastBlockCompressed = fromSrcBuffer; + dstPtr += LZ4F_makeBlock(dstPtr, + srcPtr, (size_t)(srcEnd - srcPtr), + compress, cctxPtr->lz4CtxPtr, cctxPtr->prefs.compressionLevel, + cctxPtr->cdict, + cctxPtr->prefs.frameInfo.blockChecksumFlag); + srcPtr = srcEnd; + } + + /* preserve dictionary if necessary */ + if ((cctxPtr->prefs.frameInfo.blockMode==LZ4F_blockLinked) && (lastBlockCompressed==fromSrcBuffer)) { + if (compressOptionsPtr->stableSrc) { + cctxPtr->tmpIn = cctxPtr->tmpBuff; + } else { + int const realDictSize = LZ4F_localSaveDict(cctxPtr); + if (realDictSize==0) return err0r(LZ4F_ERROR_GENERIC); + cctxPtr->tmpIn = cctxPtr->tmpBuff + realDictSize; + } + } + + /* keep tmpIn within limits */ + if ((cctxPtr->tmpIn + blockSize) > (cctxPtr->tmpBuff + cctxPtr->maxBufferSize) /* necessarily LZ4F_blockLinked && lastBlockCompressed==fromTmpBuffer */ + && !(cctxPtr->prefs.autoFlush)) + { + int const realDictSize = LZ4F_localSaveDict(cctxPtr); + cctxPtr->tmpIn = cctxPtr->tmpBuff + realDictSize; + } + + /* some input data left, necessarily < blockSize */ + if (srcPtr < srcEnd) { + /* fill tmp buffer */ + size_t const sizeToCopy = (size_t)(srcEnd - srcPtr); + memcpy(cctxPtr->tmpIn, srcPtr, sizeToCopy); + cctxPtr->tmpInSize = sizeToCopy; + } + + if (cctxPtr->prefs.frameInfo.contentChecksumFlag == LZ4F_contentChecksumEnabled) + (void)XXH32_update(&(cctxPtr->xxh), srcBuffer, srcSize); + + cctxPtr->totalInSize += srcSize; + return (size_t)(dstPtr - dstStart); +} + + +/*! LZ4F_flush() : + * When compressed data must be sent immediately, without waiting for a block to be filled, + * invoke LZ4_flush(), which will immediately compress any remaining data stored within LZ4F_cctx. + * The result of the function is the number of bytes written into dstBuffer. + * It can be zero, this means there was no data left within LZ4F_cctx. + * The function outputs an error code if it fails (can be tested using LZ4F_isError()) + * LZ4F_compressOptions_t* is optional. NULL is a valid argument. + */ +size_t LZ4F_flush(LZ4F_cctx* cctxPtr, + void* dstBuffer, size_t dstCapacity, + const LZ4F_compressOptions_t* compressOptionsPtr) +{ + BYTE* const dstStart = (BYTE*)dstBuffer; + BYTE* dstPtr = dstStart; + compressFunc_t compress; + + if (cctxPtr->tmpInSize == 0) return 0; /* nothing to flush */ + if (cctxPtr->cStage != 1) return err0r(LZ4F_ERROR_GENERIC); + if (dstCapacity < (cctxPtr->tmpInSize + BHSize + BFSize)) + return err0r(LZ4F_ERROR_dstMaxSize_tooSmall); + (void)compressOptionsPtr; /* not yet useful */ + + /* select compression function */ + compress = LZ4F_selectCompression(cctxPtr->prefs.frameInfo.blockMode, cctxPtr->prefs.compressionLevel); + + /* compress tmp buffer */ + dstPtr += LZ4F_makeBlock(dstPtr, + cctxPtr->tmpIn, cctxPtr->tmpInSize, + compress, cctxPtr->lz4CtxPtr, cctxPtr->prefs.compressionLevel, + cctxPtr->cdict, + cctxPtr->prefs.frameInfo.blockChecksumFlag); + assert(((void)"flush overflows dstBuffer!", (size_t)(dstPtr - dstStart) <= dstCapacity)); + + if (cctxPtr->prefs.frameInfo.blockMode == LZ4F_blockLinked) + cctxPtr->tmpIn += cctxPtr->tmpInSize; + cctxPtr->tmpInSize = 0; + + /* keep tmpIn within limits */ + if ((cctxPtr->tmpIn + cctxPtr->maxBlockSize) > (cctxPtr->tmpBuff + cctxPtr->maxBufferSize)) { /* necessarily LZ4F_blockLinked */ + int const realDictSize = LZ4F_localSaveDict(cctxPtr); + cctxPtr->tmpIn = cctxPtr->tmpBuff + realDictSize; + } + + return (size_t)(dstPtr - dstStart); +} + + +/*! LZ4F_compressEnd() : + * When you want to properly finish the compressed frame, just call LZ4F_compressEnd(). + * It will flush whatever data remained within compressionContext (like LZ4_flush()) + * but also properly finalize the frame, with an endMark and an (optional) checksum. + * LZ4F_compressOptions_t structure is optional : you can provide NULL as argument. + * @return: the number of bytes written into dstBuffer (necessarily >= 4 (endMark size)) + * or an error code if it fails (can be tested using LZ4F_isError()) + * The context can then be used again to compress a new frame, starting with LZ4F_compressBegin(). + */ +size_t LZ4F_compressEnd(LZ4F_cctx* cctxPtr, + void* dstBuffer, size_t dstCapacity, + const LZ4F_compressOptions_t* compressOptionsPtr) +{ + BYTE* const dstStart = (BYTE*)dstBuffer; + BYTE* dstPtr = dstStart; + + size_t const flushSize = LZ4F_flush(cctxPtr, dstBuffer, dstCapacity, compressOptionsPtr); + DEBUGLOG(5,"LZ4F_compressEnd: dstCapacity=%u", (unsigned)dstCapacity); + if (LZ4F_isError(flushSize)) return flushSize; + dstPtr += flushSize; + + assert(flushSize <= dstCapacity); + dstCapacity -= flushSize; + + if (dstCapacity < 4) return err0r(LZ4F_ERROR_dstMaxSize_tooSmall); + LZ4F_writeLE32(dstPtr, 0); + dstPtr += 4; /* endMark */ + + if (cctxPtr->prefs.frameInfo.contentChecksumFlag == LZ4F_contentChecksumEnabled) { + U32 const xxh = XXH32_digest(&(cctxPtr->xxh)); + if (dstCapacity < 8) return err0r(LZ4F_ERROR_dstMaxSize_tooSmall); + DEBUGLOG(5,"Writing 32-bit content checksum"); + LZ4F_writeLE32(dstPtr, xxh); + dstPtr+=4; /* content Checksum */ + } + + cctxPtr->cStage = 0; /* state is now re-usable (with identical preferences) */ + cctxPtr->maxBufferSize = 0; /* reuse HC context */ + + if (cctxPtr->prefs.frameInfo.contentSize) { + if (cctxPtr->prefs.frameInfo.contentSize != cctxPtr->totalInSize) + return err0r(LZ4F_ERROR_frameSize_wrong); + } + + return (size_t)(dstPtr - dstStart); +} + + +/*-*************************************************** +* Frame Decompression +*****************************************************/ + +typedef enum { + dstage_getFrameHeader=0, dstage_storeFrameHeader, + dstage_init, + dstage_getBlockHeader, dstage_storeBlockHeader, + dstage_copyDirect, dstage_getBlockChecksum, + dstage_getCBlock, dstage_storeCBlock, + dstage_flushOut, + dstage_getSuffix, dstage_storeSuffix, + dstage_getSFrameSize, dstage_storeSFrameSize, + dstage_skipSkippable +} dStage_t; + +struct LZ4F_dctx_s { + LZ4F_frameInfo_t frameInfo; + U32 version; + dStage_t dStage; + U64 frameRemainingSize; + size_t maxBlockSize; + size_t maxBufferSize; + BYTE* tmpIn; + size_t tmpInSize; + size_t tmpInTarget; + BYTE* tmpOutBuffer; + const BYTE* dict; + size_t dictSize; + BYTE* tmpOut; + size_t tmpOutSize; + size_t tmpOutStart; + XXH32_state_t xxh; + XXH32_state_t blockChecksum; + BYTE header[LZ4F_HEADER_SIZE_MAX]; +}; /* typedef'd to LZ4F_dctx in lz4frame.h */ + + +/*! LZ4F_createDecompressionContext() : + * Create a decompressionContext object, which will track all decompression operations. + * Provides a pointer to a fully allocated and initialized LZ4F_decompressionContext object. + * Object can later be released using LZ4F_freeDecompressionContext(). + * @return : if != 0, there was an error during context creation. + */ +LZ4F_errorCode_t LZ4F_createDecompressionContext(LZ4F_dctx** LZ4F_decompressionContextPtr, unsigned versionNumber) +{ + LZ4F_dctx* const dctx = (LZ4F_dctx*)ALLOC_AND_ZERO(sizeof(LZ4F_dctx)); + if (dctx == NULL) { /* failed allocation */ + *LZ4F_decompressionContextPtr = NULL; + return err0r(LZ4F_ERROR_allocation_failed); + } + + dctx->version = versionNumber; + *LZ4F_decompressionContextPtr = dctx; + return LZ4F_OK_NoError; +} + +LZ4F_errorCode_t LZ4F_freeDecompressionContext(LZ4F_dctx* dctx) +{ + LZ4F_errorCode_t result = LZ4F_OK_NoError; + if (dctx != NULL) { /* can accept NULL input, like free() */ + result = (LZ4F_errorCode_t)dctx->dStage; + FREEMEM(dctx->tmpIn); + FREEMEM(dctx->tmpOutBuffer); + FREEMEM(dctx); + } + return result; +} + + +/*==--- Streaming Decompression operations ---==*/ + +void LZ4F_resetDecompressionContext(LZ4F_dctx* dctx) +{ + dctx->dStage = dstage_getFrameHeader; + dctx->dict = NULL; + dctx->dictSize = 0; +} + + +/*! LZ4F_decodeHeader() : + * input : `src` points at the **beginning of the frame** + * output : set internal values of dctx, such as + * dctx->frameInfo and dctx->dStage. + * Also allocates internal buffers. + * @return : nb Bytes read from src (necessarily <= srcSize) + * or an error code (testable with LZ4F_isError()) + */ +static size_t LZ4F_decodeHeader(LZ4F_dctx* dctx, const void* src, size_t srcSize) +{ + unsigned blockMode, blockChecksumFlag, contentSizeFlag, contentChecksumFlag, dictIDFlag, blockSizeID; + size_t frameHeaderSize; + const BYTE* srcPtr = (const BYTE*)src; + + DEBUGLOG(5, "LZ4F_decodeHeader"); + /* need to decode header to get frameInfo */ + if (srcSize < minFHSize) return err0r(LZ4F_ERROR_frameHeader_incomplete); /* minimal frame header size */ + MEM_INIT(&(dctx->frameInfo), 0, sizeof(dctx->frameInfo)); + + /* special case : skippable frames */ + if ((LZ4F_readLE32(srcPtr) & 0xFFFFFFF0U) == LZ4F_MAGIC_SKIPPABLE_START) { + dctx->frameInfo.frameType = LZ4F_skippableFrame; + if (src == (void*)(dctx->header)) { + dctx->tmpInSize = srcSize; + dctx->tmpInTarget = 8; + dctx->dStage = dstage_storeSFrameSize; + return srcSize; + } else { + dctx->dStage = dstage_getSFrameSize; + return 4; + } + } + + /* control magic number */ +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + if (LZ4F_readLE32(srcPtr) != LZ4F_MAGICNUMBER) { + DEBUGLOG(4, "frame header error : unknown magic number"); + return err0r(LZ4F_ERROR_frameType_unknown); + } +#endif + dctx->frameInfo.frameType = LZ4F_frame; + + /* Flags */ + { U32 const FLG = srcPtr[4]; + U32 const version = (FLG>>6) & _2BITS; + blockChecksumFlag = (FLG>>4) & _1BIT; + blockMode = (FLG>>5) & _1BIT; + contentSizeFlag = (FLG>>3) & _1BIT; + contentChecksumFlag = (FLG>>2) & _1BIT; + dictIDFlag = FLG & _1BIT; + /* validate */ + if (((FLG>>1)&_1BIT) != 0) return err0r(LZ4F_ERROR_reservedFlag_set); /* Reserved bit */ + if (version != 1) return err0r(LZ4F_ERROR_headerVersion_wrong); /* Version Number, only supported value */ + } + + /* Frame Header Size */ + frameHeaderSize = minFHSize + (contentSizeFlag?8:0) + (dictIDFlag?4:0); + + if (srcSize < frameHeaderSize) { + /* not enough input to fully decode frame header */ + if (srcPtr != dctx->header) + memcpy(dctx->header, srcPtr, srcSize); + dctx->tmpInSize = srcSize; + dctx->tmpInTarget = frameHeaderSize; + dctx->dStage = dstage_storeFrameHeader; + return srcSize; + } + + { U32 const BD = srcPtr[5]; + blockSizeID = (BD>>4) & _3BITS; + /* validate */ + if (((BD>>7)&_1BIT) != 0) return err0r(LZ4F_ERROR_reservedFlag_set); /* Reserved bit */ + if (blockSizeID < 4) return err0r(LZ4F_ERROR_maxBlockSize_invalid); /* 4-7 only supported values for the time being */ + if (((BD>>0)&_4BITS) != 0) return err0r(LZ4F_ERROR_reservedFlag_set); /* Reserved bits */ + } + + /* check header */ + assert(frameHeaderSize > 5); +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + { BYTE const HC = LZ4F_headerChecksum(srcPtr+4, frameHeaderSize-5); + if (HC != srcPtr[frameHeaderSize-1]) + return err0r(LZ4F_ERROR_headerChecksum_invalid); + } +#endif + + /* save */ + dctx->frameInfo.blockMode = (LZ4F_blockMode_t)blockMode; + dctx->frameInfo.blockChecksumFlag = (LZ4F_blockChecksum_t)blockChecksumFlag; + dctx->frameInfo.contentChecksumFlag = (LZ4F_contentChecksum_t)contentChecksumFlag; + dctx->frameInfo.blockSizeID = (LZ4F_blockSizeID_t)blockSizeID; + dctx->maxBlockSize = LZ4F_getBlockSize(blockSizeID); + if (contentSizeFlag) + dctx->frameRemainingSize = + dctx->frameInfo.contentSize = LZ4F_readLE64(srcPtr+6); + if (dictIDFlag) + dctx->frameInfo.dictID = LZ4F_readLE32(srcPtr + frameHeaderSize - 5); + + dctx->dStage = dstage_init; + + return frameHeaderSize; +} + + +/*! LZ4F_headerSize() : + * @return : size of frame header + * or an error code, which can be tested using LZ4F_isError() + */ +size_t LZ4F_headerSize(const void* src, size_t srcSize) +{ + if (src == NULL) return err0r(LZ4F_ERROR_srcPtr_wrong); + + /* minimal srcSize to determine header size */ + if (srcSize < LZ4F_MIN_SIZE_TO_KNOW_HEADER_LENGTH) + return err0r(LZ4F_ERROR_frameHeader_incomplete); + + /* special case : skippable frames */ + if ((LZ4F_readLE32(src) & 0xFFFFFFF0U) == LZ4F_MAGIC_SKIPPABLE_START) + return 8; + + /* control magic number */ +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + if (LZ4F_readLE32(src) != LZ4F_MAGICNUMBER) + return err0r(LZ4F_ERROR_frameType_unknown); +#endif + + /* Frame Header Size */ + { BYTE const FLG = ((const BYTE*)src)[4]; + U32 const contentSizeFlag = (FLG>>3) & _1BIT; + U32 const dictIDFlag = FLG & _1BIT; + return minFHSize + (contentSizeFlag?8:0) + (dictIDFlag?4:0); + } +} + +/*! LZ4F_getFrameInfo() : + * This function extracts frame parameters (max blockSize, frame checksum, etc.). + * Usage is optional. Objective is to provide relevant information for allocation purposes. + * This function works in 2 situations : + * - At the beginning of a new frame, in which case it will decode this information from `srcBuffer`, and start the decoding process. + * Amount of input data provided must be large enough to successfully decode the frame header. + * A header size is variable, but is guaranteed to be <= LZ4F_HEADER_SIZE_MAX bytes. It's possible to provide more input data than this minimum. + * - After decoding has been started. In which case, no input is read, frame parameters are extracted from dctx. + * The number of bytes consumed from srcBuffer will be updated within *srcSizePtr (necessarily <= original value). + * Decompression must resume from (srcBuffer + *srcSizePtr). + * @return : an hint about how many srcSize bytes LZ4F_decompress() expects for next call, + * or an error code which can be tested using LZ4F_isError() + * note 1 : in case of error, dctx is not modified. Decoding operations can resume from where they stopped. + * note 2 : frame parameters are *copied into* an already allocated LZ4F_frameInfo_t structure. + */ +LZ4F_errorCode_t LZ4F_getFrameInfo(LZ4F_dctx* dctx, + LZ4F_frameInfo_t* frameInfoPtr, + const void* srcBuffer, size_t* srcSizePtr) +{ + LZ4F_STATIC_ASSERT(dstage_getFrameHeader < dstage_storeFrameHeader); + if (dctx->dStage > dstage_storeFrameHeader) { + /* frameInfo already decoded */ + size_t o=0, i=0; + *srcSizePtr = 0; + *frameInfoPtr = dctx->frameInfo; + /* returns : recommended nb of bytes for LZ4F_decompress() */ + return LZ4F_decompress(dctx, NULL, &o, NULL, &i, NULL); + } else { + if (dctx->dStage == dstage_storeFrameHeader) { + /* frame decoding already started, in the middle of header => automatic fail */ + *srcSizePtr = 0; + return err0r(LZ4F_ERROR_frameDecoding_alreadyStarted); + } else { + size_t const hSize = LZ4F_headerSize(srcBuffer, *srcSizePtr); + if (LZ4F_isError(hSize)) { *srcSizePtr=0; return hSize; } + if (*srcSizePtr < hSize) { + *srcSizePtr=0; + return err0r(LZ4F_ERROR_frameHeader_incomplete); + } + + { size_t decodeResult = LZ4F_decodeHeader(dctx, srcBuffer, hSize); + if (LZ4F_isError(decodeResult)) { + *srcSizePtr = 0; + } else { + *srcSizePtr = decodeResult; + decodeResult = BHSize; /* block header size */ + } + *frameInfoPtr = dctx->frameInfo; + return decodeResult; + } } } +} + + +/* LZ4F_updateDict() : + * only used for LZ4F_blockLinked mode + * Condition : dstPtr != NULL + */ +static void LZ4F_updateDict(LZ4F_dctx* dctx, + const BYTE* dstPtr, size_t dstSize, const BYTE* dstBufferStart, + unsigned withinTmp) +{ + assert(dstPtr != NULL); + if (dctx->dictSize==0) { + dctx->dict = (const BYTE*)dstPtr; /* priority to prefix mode */ + } + assert(dctx->dict != NULL); + + if (dctx->dict + dctx->dictSize == dstPtr) { /* prefix mode, everything within dstBuffer */ + dctx->dictSize += dstSize; + return; + } + + assert(dstPtr >= dstBufferStart); + if ((size_t)(dstPtr - dstBufferStart) + dstSize >= 64 KB) { /* history in dstBuffer becomes large enough to become dictionary */ + dctx->dict = (const BYTE*)dstBufferStart; + dctx->dictSize = (size_t)(dstPtr - dstBufferStart) + dstSize; + return; + } + + assert(dstSize < 64 KB); /* if dstSize >= 64 KB, dictionary would be set into dstBuffer directly */ + + /* dstBuffer does not contain whole useful history (64 KB), so it must be saved within tmpOutBuffer */ + assert(dctx->tmpOutBuffer != NULL); + + if (withinTmp && (dctx->dict == dctx->tmpOutBuffer)) { /* continue history within tmpOutBuffer */ + /* withinTmp expectation : content of [dstPtr,dstSize] is same as [dict+dictSize,dstSize], so we just extend it */ + assert(dctx->dict + dctx->dictSize == dctx->tmpOut + dctx->tmpOutStart); + dctx->dictSize += dstSize; + return; + } + + if (withinTmp) { /* copy relevant dict portion in front of tmpOut within tmpOutBuffer */ + size_t const preserveSize = (size_t)(dctx->tmpOut - dctx->tmpOutBuffer); + size_t copySize = 64 KB - dctx->tmpOutSize; + const BYTE* const oldDictEnd = dctx->dict + dctx->dictSize - dctx->tmpOutStart; + if (dctx->tmpOutSize > 64 KB) copySize = 0; + if (copySize > preserveSize) copySize = preserveSize; + + memcpy(dctx->tmpOutBuffer + preserveSize - copySize, oldDictEnd - copySize, copySize); + + dctx->dict = dctx->tmpOutBuffer; + dctx->dictSize = preserveSize + dctx->tmpOutStart + dstSize; + return; + } + + if (dctx->dict == dctx->tmpOutBuffer) { /* copy dst into tmp to complete dict */ + if (dctx->dictSize + dstSize > dctx->maxBufferSize) { /* tmp buffer not large enough */ + size_t const preserveSize = 64 KB - dstSize; + memcpy(dctx->tmpOutBuffer, dctx->dict + dctx->dictSize - preserveSize, preserveSize); + dctx->dictSize = preserveSize; + } + memcpy(dctx->tmpOutBuffer + dctx->dictSize, dstPtr, dstSize); + dctx->dictSize += dstSize; + return; + } + + /* join dict & dest into tmp */ + { size_t preserveSize = 64 KB - dstSize; + if (preserveSize > dctx->dictSize) preserveSize = dctx->dictSize; + memcpy(dctx->tmpOutBuffer, dctx->dict + dctx->dictSize - preserveSize, preserveSize); + memcpy(dctx->tmpOutBuffer + preserveSize, dstPtr, dstSize); + dctx->dict = dctx->tmpOutBuffer; + dctx->dictSize = preserveSize + dstSize; + } +} + + + +/*! LZ4F_decompress() : + * Call this function repetitively to regenerate compressed data in srcBuffer. + * The function will attempt to decode up to *srcSizePtr bytes from srcBuffer + * into dstBuffer of capacity *dstSizePtr. + * + * The number of bytes regenerated into dstBuffer will be provided within *dstSizePtr (necessarily <= original value). + * + * The number of bytes effectively read from srcBuffer will be provided within *srcSizePtr (necessarily <= original value). + * If number of bytes read is < number of bytes provided, then decompression operation is not complete. + * Remaining data will have to be presented again in a subsequent invocation. + * + * The function result is an hint of the better srcSize to use for next call to LZ4F_decompress. + * Schematically, it's the size of the current (or remaining) compressed block + header of next block. + * Respecting the hint provides a small boost to performance, since it allows less buffer shuffling. + * Note that this is just a hint, and it's always possible to any srcSize value. + * When a frame is fully decoded, @return will be 0. + * If decompression failed, @return is an error code which can be tested using LZ4F_isError(). + */ +size_t LZ4F_decompress(LZ4F_dctx* dctx, + void* dstBuffer, size_t* dstSizePtr, + const void* srcBuffer, size_t* srcSizePtr, + const LZ4F_decompressOptions_t* decompressOptionsPtr) +{ + LZ4F_decompressOptions_t optionsNull; + const BYTE* const srcStart = (const BYTE*)srcBuffer; + const BYTE* const srcEnd = srcStart + *srcSizePtr; + const BYTE* srcPtr = srcStart; + BYTE* const dstStart = (BYTE*)dstBuffer; + BYTE* const dstEnd = dstStart ? dstStart + *dstSizePtr : NULL; + BYTE* dstPtr = dstStart; + const BYTE* selectedIn = NULL; + unsigned doAnotherStage = 1; + size_t nextSrcSizeHint = 1; + + + DEBUGLOG(5, "LZ4F_decompress : %p,%u => %p,%u", + srcBuffer, (unsigned)*srcSizePtr, dstBuffer, (unsigned)*dstSizePtr); + if (dstBuffer == NULL) assert(*dstSizePtr == 0); + MEM_INIT(&optionsNull, 0, sizeof(optionsNull)); + if (decompressOptionsPtr==NULL) decompressOptionsPtr = &optionsNull; + *srcSizePtr = 0; + *dstSizePtr = 0; + assert(dctx != NULL); + + /* behaves as a state machine */ + + while (doAnotherStage) { + + switch(dctx->dStage) + { + + case dstage_getFrameHeader: + DEBUGLOG(6, "dstage_getFrameHeader"); + if ((size_t)(srcEnd-srcPtr) >= maxFHSize) { /* enough to decode - shortcut */ + size_t const hSize = LZ4F_decodeHeader(dctx, srcPtr, (size_t)(srcEnd-srcPtr)); /* will update dStage appropriately */ + if (LZ4F_isError(hSize)) return hSize; + srcPtr += hSize; + break; + } + dctx->tmpInSize = 0; + if (srcEnd-srcPtr == 0) return minFHSize; /* 0-size input */ + dctx->tmpInTarget = minFHSize; /* minimum size to decode header */ + dctx->dStage = dstage_storeFrameHeader; + /* fall-through */ + + case dstage_storeFrameHeader: + DEBUGLOG(6, "dstage_storeFrameHeader"); + { size_t const sizeToCopy = MIN(dctx->tmpInTarget - dctx->tmpInSize, (size_t)(srcEnd - srcPtr)); + memcpy(dctx->header + dctx->tmpInSize, srcPtr, sizeToCopy); + dctx->tmpInSize += sizeToCopy; + srcPtr += sizeToCopy; + } + if (dctx->tmpInSize < dctx->tmpInTarget) { + nextSrcSizeHint = (dctx->tmpInTarget - dctx->tmpInSize) + BHSize; /* rest of header + nextBlockHeader */ + doAnotherStage = 0; /* not enough src data, ask for some more */ + break; + } + { size_t const hSize = LZ4F_decodeHeader(dctx, dctx->header, dctx->tmpInTarget); /* will update dStage appropriately */ + if (LZ4F_isError(hSize)) return hSize; + } + break; + + case dstage_init: + DEBUGLOG(6, "dstage_init"); + if (dctx->frameInfo.contentChecksumFlag) (void)XXH32_reset(&(dctx->xxh), 0); + /* internal buffers allocation */ + { size_t const bufferNeeded = dctx->maxBlockSize + + ((dctx->frameInfo.blockMode==LZ4F_blockLinked) ? 128 KB : 0); + if (bufferNeeded > dctx->maxBufferSize) { /* tmp buffers too small */ + dctx->maxBufferSize = 0; /* ensure allocation will be re-attempted on next entry*/ + FREEMEM(dctx->tmpIn); + dctx->tmpIn = (BYTE*)ALLOC(dctx->maxBlockSize + BFSize /* block checksum */); + if (dctx->tmpIn == NULL) + return err0r(LZ4F_ERROR_allocation_failed); + FREEMEM(dctx->tmpOutBuffer); + dctx->tmpOutBuffer= (BYTE*)ALLOC(bufferNeeded); + if (dctx->tmpOutBuffer== NULL) + return err0r(LZ4F_ERROR_allocation_failed); + dctx->maxBufferSize = bufferNeeded; + } } + dctx->tmpInSize = 0; + dctx->tmpInTarget = 0; + dctx->tmpOut = dctx->tmpOutBuffer; + dctx->tmpOutStart = 0; + dctx->tmpOutSize = 0; + + dctx->dStage = dstage_getBlockHeader; + /* fall-through */ + + case dstage_getBlockHeader: + if ((size_t)(srcEnd - srcPtr) >= BHSize) { + selectedIn = srcPtr; + srcPtr += BHSize; + } else { + /* not enough input to read cBlockSize field */ + dctx->tmpInSize = 0; + dctx->dStage = dstage_storeBlockHeader; + } + + if (dctx->dStage == dstage_storeBlockHeader) /* can be skipped */ + case dstage_storeBlockHeader: + { size_t const remainingInput = (size_t)(srcEnd - srcPtr); + size_t const wantedData = BHSize - dctx->tmpInSize; + size_t const sizeToCopy = MIN(wantedData, remainingInput); + memcpy(dctx->tmpIn + dctx->tmpInSize, srcPtr, sizeToCopy); + srcPtr += sizeToCopy; + dctx->tmpInSize += sizeToCopy; + + if (dctx->tmpInSize < BHSize) { /* not enough input for cBlockSize */ + nextSrcSizeHint = BHSize - dctx->tmpInSize; + doAnotherStage = 0; + break; + } + selectedIn = dctx->tmpIn; + } /* if (dctx->dStage == dstage_storeBlockHeader) */ + + /* decode block header */ + { U32 const blockHeader = LZ4F_readLE32(selectedIn); + size_t const nextCBlockSize = blockHeader & 0x7FFFFFFFU; + size_t const crcSize = dctx->frameInfo.blockChecksumFlag * BFSize; + if (blockHeader==0) { /* frameEnd signal, no more block */ + DEBUGLOG(5, "end of frame"); + dctx->dStage = dstage_getSuffix; + break; + } + if (nextCBlockSize > dctx->maxBlockSize) { + return err0r(LZ4F_ERROR_maxBlockSize_invalid); + } + if (blockHeader & LZ4F_BLOCKUNCOMPRESSED_FLAG) { + /* next block is uncompressed */ + dctx->tmpInTarget = nextCBlockSize; + DEBUGLOG(5, "next block is uncompressed (size %u)", (U32)nextCBlockSize); + if (dctx->frameInfo.blockChecksumFlag) { + (void)XXH32_reset(&dctx->blockChecksum, 0); + } + dctx->dStage = dstage_copyDirect; + break; + } + /* next block is a compressed block */ + dctx->tmpInTarget = nextCBlockSize + crcSize; + dctx->dStage = dstage_getCBlock; + if (dstPtr==dstEnd || srcPtr==srcEnd) { + nextSrcSizeHint = BHSize + nextCBlockSize + crcSize; + doAnotherStage = 0; + } + break; + } + + case dstage_copyDirect: /* uncompressed block */ + DEBUGLOG(6, "dstage_copyDirect"); + { size_t sizeToCopy; + if (dstPtr == NULL) { + sizeToCopy = 0; + } else { + size_t const minBuffSize = MIN((size_t)(srcEnd-srcPtr), (size_t)(dstEnd-dstPtr)); + sizeToCopy = MIN(dctx->tmpInTarget, minBuffSize); + memcpy(dstPtr, srcPtr, sizeToCopy); + if (dctx->frameInfo.blockChecksumFlag) { + (void)XXH32_update(&dctx->blockChecksum, srcPtr, sizeToCopy); + } + if (dctx->frameInfo.contentChecksumFlag) + (void)XXH32_update(&dctx->xxh, srcPtr, sizeToCopy); + if (dctx->frameInfo.contentSize) + dctx->frameRemainingSize -= sizeToCopy; + + /* history management (linked blocks only)*/ + if (dctx->frameInfo.blockMode == LZ4F_blockLinked) { + LZ4F_updateDict(dctx, dstPtr, sizeToCopy, dstStart, 0); + } } + + srcPtr += sizeToCopy; + dstPtr += sizeToCopy; + if (sizeToCopy == dctx->tmpInTarget) { /* all done */ + if (dctx->frameInfo.blockChecksumFlag) { + dctx->tmpInSize = 0; + dctx->dStage = dstage_getBlockChecksum; + } else + dctx->dStage = dstage_getBlockHeader; /* new block */ + break; + } + dctx->tmpInTarget -= sizeToCopy; /* need to copy more */ + } + nextSrcSizeHint = dctx->tmpInTarget + + +(dctx->frameInfo.blockChecksumFlag ? BFSize : 0) + + BHSize /* next header size */; + doAnotherStage = 0; + break; + + /* check block checksum for recently transferred uncompressed block */ + case dstage_getBlockChecksum: + DEBUGLOG(6, "dstage_getBlockChecksum"); + { const void* crcSrc; + if ((srcEnd-srcPtr >= 4) && (dctx->tmpInSize==0)) { + crcSrc = srcPtr; + srcPtr += 4; + } else { + size_t const stillToCopy = 4 - dctx->tmpInSize; + size_t const sizeToCopy = MIN(stillToCopy, (size_t)(srcEnd-srcPtr)); + memcpy(dctx->header + dctx->tmpInSize, srcPtr, sizeToCopy); + dctx->tmpInSize += sizeToCopy; + srcPtr += sizeToCopy; + if (dctx->tmpInSize < 4) { /* all input consumed */ + doAnotherStage = 0; + break; + } + crcSrc = dctx->header; + } + { U32 const readCRC = LZ4F_readLE32(crcSrc); + U32 const calcCRC = XXH32_digest(&dctx->blockChecksum); +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + DEBUGLOG(6, "compare block checksum"); + if (readCRC != calcCRC) { + DEBUGLOG(4, "incorrect block checksum: %08X != %08X", + readCRC, calcCRC); + return err0r(LZ4F_ERROR_blockChecksum_invalid); + } +#else + (void)readCRC; + (void)calcCRC; +#endif + } } + dctx->dStage = dstage_getBlockHeader; /* new block */ + break; + + case dstage_getCBlock: + DEBUGLOG(6, "dstage_getCBlock"); + if ((size_t)(srcEnd-srcPtr) < dctx->tmpInTarget) { + dctx->tmpInSize = 0; + dctx->dStage = dstage_storeCBlock; + break; + } + /* input large enough to read full block directly */ + selectedIn = srcPtr; + srcPtr += dctx->tmpInTarget; + + if (0) /* always jump over next block */ + case dstage_storeCBlock: + { size_t const wantedData = dctx->tmpInTarget - dctx->tmpInSize; + size_t const inputLeft = (size_t)(srcEnd-srcPtr); + size_t const sizeToCopy = MIN(wantedData, inputLeft); + memcpy(dctx->tmpIn + dctx->tmpInSize, srcPtr, sizeToCopy); + dctx->tmpInSize += sizeToCopy; + srcPtr += sizeToCopy; + if (dctx->tmpInSize < dctx->tmpInTarget) { /* need more input */ + nextSrcSizeHint = (dctx->tmpInTarget - dctx->tmpInSize) + + (dctx->frameInfo.blockChecksumFlag ? BFSize : 0) + + BHSize /* next header size */; + doAnotherStage = 0; + break; + } + selectedIn = dctx->tmpIn; + } + + /* At this stage, input is large enough to decode a block */ + if (dctx->frameInfo.blockChecksumFlag) { + dctx->tmpInTarget -= 4; + assert(selectedIn != NULL); /* selectedIn is defined at this stage (either srcPtr, or dctx->tmpIn) */ + { U32 const readBlockCrc = LZ4F_readLE32(selectedIn + dctx->tmpInTarget); + U32 const calcBlockCrc = XXH32(selectedIn, dctx->tmpInTarget, 0); +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + if (readBlockCrc != calcBlockCrc) + return err0r(LZ4F_ERROR_blockChecksum_invalid); +#else + (void)readBlockCrc; + (void)calcBlockCrc; +#endif + } } + + if ((size_t)(dstEnd-dstPtr) >= dctx->maxBlockSize) { + const char* dict = (const char*)dctx->dict; + size_t dictSize = dctx->dictSize; + int decodedSize; + assert(dstPtr != NULL); + if (dict && dictSize > 1 GB) { + /* the dictSize param is an int, avoid truncation / sign issues */ + dict += dictSize - 64 KB; + dictSize = 64 KB; + } + /* enough capacity in `dst` to decompress directly there */ + decodedSize = LZ4_decompress_safe_usingDict( + (const char*)selectedIn, (char*)dstPtr, + (int)dctx->tmpInTarget, (int)dctx->maxBlockSize, + dict, (int)dictSize); + if (decodedSize < 0) return err0r(LZ4F_ERROR_GENERIC); /* decompression failed */ + if (dctx->frameInfo.contentChecksumFlag) + XXH32_update(&(dctx->xxh), dstPtr, (size_t)decodedSize); + if (dctx->frameInfo.contentSize) + dctx->frameRemainingSize -= (size_t)decodedSize; + + /* dictionary management */ + if (dctx->frameInfo.blockMode==LZ4F_blockLinked) { + LZ4F_updateDict(dctx, dstPtr, (size_t)decodedSize, dstStart, 0); + } + + dstPtr += decodedSize; + dctx->dStage = dstage_getBlockHeader; + break; + } + + /* not enough place into dst : decode into tmpOut */ + /* ensure enough place for tmpOut */ + if (dctx->frameInfo.blockMode == LZ4F_blockLinked) { + if (dctx->dict == dctx->tmpOutBuffer) { + if (dctx->dictSize > 128 KB) { + memcpy(dctx->tmpOutBuffer, dctx->dict + dctx->dictSize - 64 KB, 64 KB); + dctx->dictSize = 64 KB; + } + dctx->tmpOut = dctx->tmpOutBuffer + dctx->dictSize; + } else { /* dict not within tmp */ + size_t const reservedDictSpace = MIN(dctx->dictSize, 64 KB); + dctx->tmpOut = dctx->tmpOutBuffer + reservedDictSpace; + } } + + /* Decode block */ + { const char* dict = (const char*)dctx->dict; + size_t dictSize = dctx->dictSize; + int decodedSize; + if (dict && dictSize > 1 GB) { + /* the dictSize param is an int, avoid truncation / sign issues */ + dict += dictSize - 64 KB; + dictSize = 64 KB; + } + decodedSize = LZ4_decompress_safe_usingDict( + (const char*)selectedIn, (char*)dctx->tmpOut, + (int)dctx->tmpInTarget, (int)dctx->maxBlockSize, + dict, (int)dictSize); + if (decodedSize < 0) /* decompression failed */ + return err0r(LZ4F_ERROR_decompressionFailed); + if (dctx->frameInfo.contentChecksumFlag) + XXH32_update(&(dctx->xxh), dctx->tmpOut, (size_t)decodedSize); + if (dctx->frameInfo.contentSize) + dctx->frameRemainingSize -= (size_t)decodedSize; + dctx->tmpOutSize = (size_t)decodedSize; + dctx->tmpOutStart = 0; + dctx->dStage = dstage_flushOut; + } + /* fall-through */ + + case dstage_flushOut: /* flush decoded data from tmpOut to dstBuffer */ + DEBUGLOG(6, "dstage_flushOut"); + if (dstPtr != NULL) { + size_t const sizeToCopy = MIN(dctx->tmpOutSize - dctx->tmpOutStart, (size_t)(dstEnd-dstPtr)); + memcpy(dstPtr, dctx->tmpOut + dctx->tmpOutStart, sizeToCopy); + + /* dictionary management */ + if (dctx->frameInfo.blockMode == LZ4F_blockLinked) + LZ4F_updateDict(dctx, dstPtr, sizeToCopy, dstStart, 1 /*withinTmp*/); + + dctx->tmpOutStart += sizeToCopy; + dstPtr += sizeToCopy; + } + if (dctx->tmpOutStart == dctx->tmpOutSize) { /* all flushed */ + dctx->dStage = dstage_getBlockHeader; /* get next block */ + break; + } + /* could not flush everything : stop there, just request a block header */ + doAnotherStage = 0; + nextSrcSizeHint = BHSize; + break; + + case dstage_getSuffix: + if (dctx->frameRemainingSize) + return err0r(LZ4F_ERROR_frameSize_wrong); /* incorrect frame size decoded */ + if (!dctx->frameInfo.contentChecksumFlag) { /* no checksum, frame is completed */ + nextSrcSizeHint = 0; + LZ4F_resetDecompressionContext(dctx); + doAnotherStage = 0; + break; + } + if ((srcEnd - srcPtr) < 4) { /* not enough size for entire CRC */ + dctx->tmpInSize = 0; + dctx->dStage = dstage_storeSuffix; + } else { + selectedIn = srcPtr; + srcPtr += 4; + } + + if (dctx->dStage == dstage_storeSuffix) /* can be skipped */ + case dstage_storeSuffix: + { size_t const remainingInput = (size_t)(srcEnd - srcPtr); + size_t const wantedData = 4 - dctx->tmpInSize; + size_t const sizeToCopy = MIN(wantedData, remainingInput); + memcpy(dctx->tmpIn + dctx->tmpInSize, srcPtr, sizeToCopy); + srcPtr += sizeToCopy; + dctx->tmpInSize += sizeToCopy; + if (dctx->tmpInSize < 4) { /* not enough input to read complete suffix */ + nextSrcSizeHint = 4 - dctx->tmpInSize; + doAnotherStage=0; + break; + } + selectedIn = dctx->tmpIn; + } /* if (dctx->dStage == dstage_storeSuffix) */ + + /* case dstage_checkSuffix: */ /* no direct entry, avoid initialization risks */ + { U32 const readCRC = LZ4F_readLE32(selectedIn); + U32 const resultCRC = XXH32_digest(&(dctx->xxh)); +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + if (readCRC != resultCRC) + return err0r(LZ4F_ERROR_contentChecksum_invalid); +#else + (void)readCRC; + (void)resultCRC; +#endif + nextSrcSizeHint = 0; + LZ4F_resetDecompressionContext(dctx); + doAnotherStage = 0; + break; + } + + case dstage_getSFrameSize: + if ((srcEnd - srcPtr) >= 4) { + selectedIn = srcPtr; + srcPtr += 4; + } else { + /* not enough input to read cBlockSize field */ + dctx->tmpInSize = 4; + dctx->tmpInTarget = 8; + dctx->dStage = dstage_storeSFrameSize; + } + + if (dctx->dStage == dstage_storeSFrameSize) + case dstage_storeSFrameSize: + { size_t const sizeToCopy = MIN(dctx->tmpInTarget - dctx->tmpInSize, + (size_t)(srcEnd - srcPtr) ); + memcpy(dctx->header + dctx->tmpInSize, srcPtr, sizeToCopy); + srcPtr += sizeToCopy; + dctx->tmpInSize += sizeToCopy; + if (dctx->tmpInSize < dctx->tmpInTarget) { + /* not enough input to get full sBlockSize; wait for more */ + nextSrcSizeHint = dctx->tmpInTarget - dctx->tmpInSize; + doAnotherStage = 0; + break; + } + selectedIn = dctx->header + 4; + } /* if (dctx->dStage == dstage_storeSFrameSize) */ + + /* case dstage_decodeSFrameSize: */ /* no direct entry */ + { size_t const SFrameSize = LZ4F_readLE32(selectedIn); + dctx->frameInfo.contentSize = SFrameSize; + dctx->tmpInTarget = SFrameSize; + dctx->dStage = dstage_skipSkippable; + break; + } + + case dstage_skipSkippable: + { size_t const skipSize = MIN(dctx->tmpInTarget, (size_t)(srcEnd-srcPtr)); + srcPtr += skipSize; + dctx->tmpInTarget -= skipSize; + doAnotherStage = 0; + nextSrcSizeHint = dctx->tmpInTarget; + if (nextSrcSizeHint) break; /* still more to skip */ + /* frame fully skipped : prepare context for a new frame */ + LZ4F_resetDecompressionContext(dctx); + break; + } + } /* switch (dctx->dStage) */ + } /* while (doAnotherStage) */ + + /* preserve history within tmp whenever necessary */ + LZ4F_STATIC_ASSERT((unsigned)dstage_init == 2); + if ( (dctx->frameInfo.blockMode==LZ4F_blockLinked) /* next block will use up to 64KB from previous ones */ + && (dctx->dict != dctx->tmpOutBuffer) /* dictionary is not already within tmp */ + && (dctx->dict != NULL) /* dictionary exists */ + && (!decompressOptionsPtr->stableDst) /* cannot rely on dst data to remain there for next call */ + && ((unsigned)(dctx->dStage)-2 < (unsigned)(dstage_getSuffix)-2) ) /* valid stages : [init ... getSuffix[ */ + { + if (dctx->dStage == dstage_flushOut) { + size_t const preserveSize = (size_t)(dctx->tmpOut - dctx->tmpOutBuffer); + size_t copySize = 64 KB - dctx->tmpOutSize; + const BYTE* oldDictEnd = dctx->dict + dctx->dictSize - dctx->tmpOutStart; + if (dctx->tmpOutSize > 64 KB) copySize = 0; + if (copySize > preserveSize) copySize = preserveSize; + assert(dctx->tmpOutBuffer != NULL); + + memcpy(dctx->tmpOutBuffer + preserveSize - copySize, oldDictEnd - copySize, copySize); + + dctx->dict = dctx->tmpOutBuffer; + dctx->dictSize = preserveSize + dctx->tmpOutStart; + } else { + const BYTE* const oldDictEnd = dctx->dict + dctx->dictSize; + size_t const newDictSize = MIN(dctx->dictSize, 64 KB); + + memcpy(dctx->tmpOutBuffer, oldDictEnd - newDictSize, newDictSize); + + dctx->dict = dctx->tmpOutBuffer; + dctx->dictSize = newDictSize; + dctx->tmpOut = dctx->tmpOutBuffer + newDictSize; + } + } + + *srcSizePtr = (size_t)(srcPtr - srcStart); + *dstSizePtr = (size_t)(dstPtr - dstStart); + return nextSrcSizeHint; +} + +/*! LZ4F_decompress_usingDict() : + * Same as LZ4F_decompress(), using a predefined dictionary. + * Dictionary is used "in place", without any preprocessing. + * It must remain accessible throughout the entire frame decoding. + */ +size_t LZ4F_decompress_usingDict(LZ4F_dctx* dctx, + void* dstBuffer, size_t* dstSizePtr, + const void* srcBuffer, size_t* srcSizePtr, + const void* dict, size_t dictSize, + const LZ4F_decompressOptions_t* decompressOptionsPtr) +{ + if (dctx->dStage <= dstage_init) { + dctx->dict = (const BYTE*)dict; + dctx->dictSize = dictSize; + } + return LZ4F_decompress(dctx, dstBuffer, dstSizePtr, + srcBuffer, srcSizePtr, + decompressOptionsPtr); +} diff --git a/fsbl/lib/lz4/lz4frame.h b/fsbl/lib/lz4/lz4frame.h new file mode 100644 index 000000000..4573317ef --- /dev/null +++ b/fsbl/lib/lz4/lz4frame.h @@ -0,0 +1,623 @@ +/* + LZ4 auto-framing library + Header File + Copyright (C) 2011-2017, Yann Collet. + BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + You can contact the author at : + - LZ4 source repository : https://github.com/lz4/lz4 + - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c +*/ + +/* LZ4F is a stand-alone API able to create and decode LZ4 frames + * conformant with specification v1.6.1 in doc/lz4_Frame_format.md . + * Generated frames are compatible with `lz4` CLI. + * + * LZ4F also offers streaming capabilities. + * + * lz4.h is not required when using lz4frame.h, + * except to extract common constant such as LZ4_VERSION_NUMBER. + * */ + +#ifndef LZ4F_H_09782039843 +#define LZ4F_H_09782039843 + +#if defined (__cplusplus) +extern "C" { +#endif + +/* --- Dependency --- */ +#include /* size_t */ + + +/** + Introduction + + lz4frame.h implements LZ4 frame specification (doc/lz4_Frame_format.md). + lz4frame.h provides frame compression functions that take care + of encoding standard metadata alongside LZ4-compressed blocks. +*/ + +/*-*************************************************************** + * Compiler specifics + *****************************************************************/ +/* LZ4_DLL_EXPORT : + * Enable exporting of functions when building a Windows DLL + * LZ4FLIB_VISIBILITY : + * Control library symbols visibility. + */ +#ifndef LZ4FLIB_VISIBILITY +# if defined(__GNUC__) && (__GNUC__ >= 4) +# define LZ4FLIB_VISIBILITY __attribute__ ((visibility ("default"))) +# else +# define LZ4FLIB_VISIBILITY +# endif +#endif +#if defined(LZ4_DLL_EXPORT) && (LZ4_DLL_EXPORT==1) +# define LZ4FLIB_API __declspec(dllexport) LZ4FLIB_VISIBILITY +#elif defined(LZ4_DLL_IMPORT) && (LZ4_DLL_IMPORT==1) +# define LZ4FLIB_API __declspec(dllimport) LZ4FLIB_VISIBILITY +#else +# define LZ4FLIB_API LZ4FLIB_VISIBILITY +#endif + +#ifdef LZ4F_DISABLE_DEPRECATE_WARNINGS +# define LZ4F_DEPRECATE(x) x +#else +# if defined(_MSC_VER) +# define LZ4F_DEPRECATE(x) x /* __declspec(deprecated) x - only works with C++ */ +# elif defined(__clang__) || (defined(__GNUC__) && (__GNUC__ >= 6)) +# define LZ4F_DEPRECATE(x) x __attribute__((deprecated)) +# else +# define LZ4F_DEPRECATE(x) x /* no deprecation warning for this compiler */ +# endif +#endif + + +/*-************************************ + * Error management + **************************************/ +typedef size_t LZ4F_errorCode_t; + +LZ4FLIB_API unsigned LZ4F_isError(LZ4F_errorCode_t code); /**< tells when a function result is an error code */ +LZ4FLIB_API const char* LZ4F_getErrorName(LZ4F_errorCode_t code); /**< return error code string; for debugging */ + + +/*-************************************ + * Frame compression types + ************************************* */ +/* #define LZ4F_ENABLE_OBSOLETE_ENUMS // uncomment to enable obsolete enums */ +#ifdef LZ4F_ENABLE_OBSOLETE_ENUMS +# define LZ4F_OBSOLETE_ENUM(x) , LZ4F_DEPRECATE(x) = LZ4F_##x +#else +# define LZ4F_OBSOLETE_ENUM(x) +#endif + +/* The larger the block size, the (slightly) better the compression ratio, + * though there are diminishing returns. + * Larger blocks also increase memory usage on both compression and decompression sides. + */ +typedef enum { + LZ4F_default=0, + LZ4F_max64KB=4, + LZ4F_max256KB=5, + LZ4F_max1MB=6, + LZ4F_max4MB=7 + LZ4F_OBSOLETE_ENUM(max64KB) + LZ4F_OBSOLETE_ENUM(max256KB) + LZ4F_OBSOLETE_ENUM(max1MB) + LZ4F_OBSOLETE_ENUM(max4MB) +} LZ4F_blockSizeID_t; + +/* Linked blocks sharply reduce inefficiencies when using small blocks, + * they compress better. + * However, some LZ4 decoders are only compatible with independent blocks */ +typedef enum { + LZ4F_blockLinked=0, + LZ4F_blockIndependent + LZ4F_OBSOLETE_ENUM(blockLinked) + LZ4F_OBSOLETE_ENUM(blockIndependent) +} LZ4F_blockMode_t; + +typedef enum { + LZ4F_noContentChecksum=0, + LZ4F_contentChecksumEnabled + LZ4F_OBSOLETE_ENUM(noContentChecksum) + LZ4F_OBSOLETE_ENUM(contentChecksumEnabled) +} LZ4F_contentChecksum_t; + +typedef enum { + LZ4F_noBlockChecksum=0, + LZ4F_blockChecksumEnabled +} LZ4F_blockChecksum_t; + +typedef enum { + LZ4F_frame=0, + LZ4F_skippableFrame + LZ4F_OBSOLETE_ENUM(skippableFrame) +} LZ4F_frameType_t; + +#ifdef LZ4F_ENABLE_OBSOLETE_ENUMS +typedef LZ4F_blockSizeID_t blockSizeID_t; +typedef LZ4F_blockMode_t blockMode_t; +typedef LZ4F_frameType_t frameType_t; +typedef LZ4F_contentChecksum_t contentChecksum_t; +#endif + +/*! LZ4F_frameInfo_t : + * makes it possible to set or read frame parameters. + * Structure must be first init to 0, using memset() or LZ4F_INIT_FRAMEINFO, + * setting all parameters to default. + * It's then possible to update selectively some parameters */ +typedef struct { + LZ4F_blockSizeID_t blockSizeID; /* max64KB, max256KB, max1MB, max4MB; 0 == default */ + LZ4F_blockMode_t blockMode; /* LZ4F_blockLinked, LZ4F_blockIndependent; 0 == default */ + LZ4F_contentChecksum_t contentChecksumFlag; /* 1: frame terminated with 32-bit checksum of decompressed data; 0: disabled (default) */ + LZ4F_frameType_t frameType; /* read-only field : LZ4F_frame or LZ4F_skippableFrame */ + unsigned long long contentSize; /* Size of uncompressed content ; 0 == unknown */ + unsigned dictID; /* Dictionary ID, sent by compressor to help decoder select correct dictionary; 0 == no dictID provided */ + LZ4F_blockChecksum_t blockChecksumFlag; /* 1: each block followed by a checksum of block's compressed data; 0: disabled (default) */ +} LZ4F_frameInfo_t; + +#define LZ4F_INIT_FRAMEINFO { LZ4F_default, LZ4F_blockLinked, LZ4F_noContentChecksum, LZ4F_frame, 0ULL, 0U, LZ4F_noBlockChecksum } /* v1.8.3+ */ + +/*! LZ4F_preferences_t : + * makes it possible to supply advanced compression instructions to streaming interface. + * Structure must be first init to 0, using memset() or LZ4F_INIT_PREFERENCES, + * setting all parameters to default. + * All reserved fields must be set to zero. */ +typedef struct { + LZ4F_frameInfo_t frameInfo; + int compressionLevel; /* 0: default (fast mode); values > LZ4HC_CLEVEL_MAX count as LZ4HC_CLEVEL_MAX; values < 0 trigger "fast acceleration" */ + unsigned autoFlush; /* 1: always flush; reduces usage of internal buffers */ + unsigned favorDecSpeed; /* 1: parser favors decompression speed vs compression ratio. Only works for high compression modes (>= LZ4HC_CLEVEL_OPT_MIN) */ /* v1.8.2+ */ + unsigned reserved[3]; /* must be zero for forward compatibility */ +} LZ4F_preferences_t; + +#define LZ4F_INIT_PREFERENCES { LZ4F_INIT_FRAMEINFO, 0, 0u, 0u, { 0u, 0u, 0u } } /* v1.8.3+ */ + + +/*-********************************* +* Simple compression function +***********************************/ + +LZ4FLIB_API int LZ4F_compressionLevel_max(void); /* v1.8.0+ */ + +/*! LZ4F_compressFrameBound() : + * Returns the maximum possible compressed size with LZ4F_compressFrame() given srcSize and preferences. + * `preferencesPtr` is optional. It can be replaced by NULL, in which case, the function will assume default preferences. + * Note : this result is only usable with LZ4F_compressFrame(). + * It may also be used with LZ4F_compressUpdate() _if no flush() operation_ is performed. + */ +LZ4FLIB_API size_t LZ4F_compressFrameBound(size_t srcSize, const LZ4F_preferences_t* preferencesPtr); + +/*! LZ4F_compressFrame() : + * Compress an entire srcBuffer into a valid LZ4 frame. + * dstCapacity MUST be >= LZ4F_compressFrameBound(srcSize, preferencesPtr). + * The LZ4F_preferences_t structure is optional : you can provide NULL as argument. All preferences will be set to default. + * @return : number of bytes written into dstBuffer. + * or an error code if it fails (can be tested using LZ4F_isError()) + */ +LZ4FLIB_API size_t LZ4F_compressFrame(void* dstBuffer, size_t dstCapacity, + const void* srcBuffer, size_t srcSize, + const LZ4F_preferences_t* preferencesPtr); + + +/*-*********************************** +* Advanced compression functions +*************************************/ +typedef struct LZ4F_cctx_s LZ4F_cctx; /* incomplete type */ +typedef LZ4F_cctx* LZ4F_compressionContext_t; /* for compatibility with previous API version */ + +typedef struct { + unsigned stableSrc; /* 1 == src content will remain present on future calls to LZ4F_compress(); skip copying src content within tmp buffer */ + unsigned reserved[3]; +} LZ4F_compressOptions_t; + +/*--- Resource Management ---*/ + +#define LZ4F_VERSION 100 /* This number can be used to check for an incompatible API breaking change */ +LZ4FLIB_API unsigned LZ4F_getVersion(void); + +/*! LZ4F_createCompressionContext() : + * The first thing to do is to create a compressionContext object, which will be used in all compression operations. + * This is achieved using LZ4F_createCompressionContext(), which takes as argument a version. + * The version provided MUST be LZ4F_VERSION. It is intended to track potential version mismatch, notably when using DLL. + * The function will provide a pointer to a fully allocated LZ4F_cctx object. + * If @return != zero, there was an error during context creation. + * Object can release its memory using LZ4F_freeCompressionContext(); + */ +LZ4FLIB_API LZ4F_errorCode_t LZ4F_createCompressionContext(LZ4F_cctx** cctxPtr, unsigned version); +LZ4FLIB_API LZ4F_errorCode_t LZ4F_freeCompressionContext(LZ4F_cctx* cctx); + + +/*---- Compression ----*/ + +#define LZ4F_HEADER_SIZE_MIN 7 /* LZ4 Frame header size can vary, depending on selected paramaters */ +#define LZ4F_HEADER_SIZE_MAX 19 + +/* Size in bytes of a block header in little-endian format. Highest bit indicates if block data is uncompressed */ +#define LZ4F_BLOCK_HEADER_SIZE 4 + +/* Size in bytes of a block checksum footer in little-endian format. */ +#define LZ4F_BLOCK_CHECKSUM_SIZE 4 + +/* Size in bytes of the content checksum. */ +#define LZ4F_CONTENT_CHECKSUM_SIZE 4 + +/*! LZ4F_compressBegin() : + * will write the frame header into dstBuffer. + * dstCapacity must be >= LZ4F_HEADER_SIZE_MAX bytes. + * `prefsPtr` is optional : you can provide NULL as argument, all preferences will then be set to default. + * @return : number of bytes written into dstBuffer for the header + * or an error code (which can be tested using LZ4F_isError()) + */ +LZ4FLIB_API size_t LZ4F_compressBegin(LZ4F_cctx* cctx, + void* dstBuffer, size_t dstCapacity, + const LZ4F_preferences_t* prefsPtr); + +/*! LZ4F_compressBound() : + * Provides minimum dstCapacity required to guarantee success of + * LZ4F_compressUpdate(), given a srcSize and preferences, for a worst case scenario. + * When srcSize==0, LZ4F_compressBound() provides an upper bound for LZ4F_flush() and LZ4F_compressEnd() instead. + * Note that the result is only valid for a single invocation of LZ4F_compressUpdate(). + * When invoking LZ4F_compressUpdate() multiple times, + * if the output buffer is gradually filled up instead of emptied and re-used from its start, + * one must check if there is enough remaining capacity before each invocation, using LZ4F_compressBound(). + * @return is always the same for a srcSize and prefsPtr. + * prefsPtr is optional : when NULL is provided, preferences will be set to cover worst case scenario. + * tech details : + * @return if automatic flushing is not enabled, includes the possibility that internal buffer might already be filled by up to (blockSize-1) bytes. + * It also includes frame footer (ending + checksum), since it might be generated by LZ4F_compressEnd(). + * @return doesn't include frame header, as it was already generated by LZ4F_compressBegin(). + */ +LZ4FLIB_API size_t LZ4F_compressBound(size_t srcSize, const LZ4F_preferences_t* prefsPtr); + +/*! LZ4F_compressUpdate() : + * LZ4F_compressUpdate() can be called repetitively to compress as much data as necessary. + * Important rule: dstCapacity MUST be large enough to ensure operation success even in worst case situations. + * This value is provided by LZ4F_compressBound(). + * If this condition is not respected, LZ4F_compress() will fail (result is an errorCode). + * LZ4F_compressUpdate() doesn't guarantee error recovery. + * When an error occurs, compression context must be freed or resized. + * `cOptPtr` is optional : NULL can be provided, in which case all options are set to default. + * @return : number of bytes written into `dstBuffer` (it can be zero, meaning input data was just buffered). + * or an error code if it fails (which can be tested using LZ4F_isError()) + */ +LZ4FLIB_API size_t LZ4F_compressUpdate(LZ4F_cctx* cctx, + void* dstBuffer, size_t dstCapacity, + const void* srcBuffer, size_t srcSize, + const LZ4F_compressOptions_t* cOptPtr); + +/*! LZ4F_flush() : + * When data must be generated and sent immediately, without waiting for a block to be completely filled, + * it's possible to call LZ4_flush(). It will immediately compress any data buffered within cctx. + * `dstCapacity` must be large enough to ensure the operation will be successful. + * `cOptPtr` is optional : it's possible to provide NULL, all options will be set to default. + * @return : nb of bytes written into dstBuffer (can be zero, when there is no data stored within cctx) + * or an error code if it fails (which can be tested using LZ4F_isError()) + * Note : LZ4F_flush() is guaranteed to be successful when dstCapacity >= LZ4F_compressBound(0, prefsPtr). + */ +LZ4FLIB_API size_t LZ4F_flush(LZ4F_cctx* cctx, + void* dstBuffer, size_t dstCapacity, + const LZ4F_compressOptions_t* cOptPtr); + +/*! LZ4F_compressEnd() : + * To properly finish an LZ4 frame, invoke LZ4F_compressEnd(). + * It will flush whatever data remained within `cctx` (like LZ4_flush()) + * and properly finalize the frame, with an endMark and a checksum. + * `cOptPtr` is optional : NULL can be provided, in which case all options will be set to default. + * @return : nb of bytes written into dstBuffer, necessarily >= 4 (endMark), + * or an error code if it fails (which can be tested using LZ4F_isError()) + * Note : LZ4F_compressEnd() is guaranteed to be successful when dstCapacity >= LZ4F_compressBound(0, prefsPtr). + * A successful call to LZ4F_compressEnd() makes `cctx` available again for another compression task. + */ +LZ4FLIB_API size_t LZ4F_compressEnd(LZ4F_cctx* cctx, + void* dstBuffer, size_t dstCapacity, + const LZ4F_compressOptions_t* cOptPtr); + + +/*-********************************* +* Decompression functions +***********************************/ +typedef struct LZ4F_dctx_s LZ4F_dctx; /* incomplete type */ +typedef LZ4F_dctx* LZ4F_decompressionContext_t; /* compatibility with previous API versions */ + +typedef struct { + unsigned stableDst; /* pledges that last 64KB decompressed data will remain available unmodified. This optimization skips storage operations in tmp buffers. */ + unsigned reserved[3]; /* must be set to zero for forward compatibility */ +} LZ4F_decompressOptions_t; + + +/* Resource management */ + +/*! LZ4F_createDecompressionContext() : + * Create an LZ4F_dctx object, to track all decompression operations. + * The version provided MUST be LZ4F_VERSION. + * The function provides a pointer to an allocated and initialized LZ4F_dctx object. + * The result is an errorCode, which can be tested using LZ4F_isError(). + * dctx memory can be released using LZ4F_freeDecompressionContext(); + * Result of LZ4F_freeDecompressionContext() indicates current state of decompressionContext when being released. + * That is, it should be == 0 if decompression has been completed fully and correctly. + */ +LZ4FLIB_API LZ4F_errorCode_t LZ4F_createDecompressionContext(LZ4F_dctx** dctxPtr, unsigned version); +LZ4FLIB_API LZ4F_errorCode_t LZ4F_freeDecompressionContext(LZ4F_dctx* dctx); + + +/*-*********************************** +* Streaming decompression functions +*************************************/ + +#define LZ4F_MIN_SIZE_TO_KNOW_HEADER_LENGTH 5 + +/*! LZ4F_headerSize() : v1.9.0+ + * Provide the header size of a frame starting at `src`. + * `srcSize` must be >= LZ4F_MIN_SIZE_TO_KNOW_HEADER_LENGTH, + * which is enough to decode the header length. + * @return : size of frame header + * or an error code, which can be tested using LZ4F_isError() + * note : Frame header size is variable, but is guaranteed to be + * >= LZ4F_HEADER_SIZE_MIN bytes, and <= LZ4F_HEADER_SIZE_MAX bytes. + */ +LZ4FLIB_API size_t LZ4F_headerSize(const void* src, size_t srcSize); + +/*! LZ4F_getFrameInfo() : + * This function extracts frame parameters (max blockSize, dictID, etc.). + * Its usage is optional: user can call LZ4F_decompress() directly. + * + * Extracted information will fill an existing LZ4F_frameInfo_t structure. + * This can be useful for allocation and dictionary identification purposes. + * + * LZ4F_getFrameInfo() can work in the following situations : + * + * 1) At the beginning of a new frame, before any invocation of LZ4F_decompress(). + * It will decode header from `srcBuffer`, + * consuming the header and starting the decoding process. + * + * Input size must be large enough to contain the full frame header. + * Frame header size can be known beforehand by LZ4F_headerSize(). + * Frame header size is variable, but is guaranteed to be >= LZ4F_HEADER_SIZE_MIN bytes, + * and not more than <= LZ4F_HEADER_SIZE_MAX bytes. + * Hence, blindly providing LZ4F_HEADER_SIZE_MAX bytes or more will always work. + * It's allowed to provide more input data than the header size, + * LZ4F_getFrameInfo() will only consume the header. + * + * If input size is not large enough, + * aka if it's smaller than header size, + * function will fail and return an error code. + * + * 2) After decoding has been started, + * it's possible to invoke LZ4F_getFrameInfo() anytime + * to extract already decoded frame parameters stored within dctx. + * + * Note that, if decoding has barely started, + * and not yet read enough information to decode the header, + * LZ4F_getFrameInfo() will fail. + * + * The number of bytes consumed from srcBuffer will be updated in *srcSizePtr (necessarily <= original value). + * LZ4F_getFrameInfo() only consumes bytes when decoding has not yet started, + * and when decoding the header has been successful. + * Decompression must then resume from (srcBuffer + *srcSizePtr). + * + * @return : a hint about how many srcSize bytes LZ4F_decompress() expects for next call, + * or an error code which can be tested using LZ4F_isError(). + * note 1 : in case of error, dctx is not modified. Decoding operation can resume from beginning safely. + * note 2 : frame parameters are *copied into* an already allocated LZ4F_frameInfo_t structure. + */ +LZ4FLIB_API size_t LZ4F_getFrameInfo(LZ4F_dctx* dctx, + LZ4F_frameInfo_t* frameInfoPtr, + const void* srcBuffer, size_t* srcSizePtr); + +/*! LZ4F_decompress() : + * Call this function repetitively to regenerate data compressed in `srcBuffer`. + * + * The function requires a valid dctx state. + * It will read up to *srcSizePtr bytes from srcBuffer, + * and decompress data into dstBuffer, of capacity *dstSizePtr. + * + * The nb of bytes consumed from srcBuffer will be written into *srcSizePtr (necessarily <= original value). + * The nb of bytes decompressed into dstBuffer will be written into *dstSizePtr (necessarily <= original value). + * + * The function does not necessarily read all input bytes, so always check value in *srcSizePtr. + * Unconsumed source data must be presented again in subsequent invocations. + * + * `dstBuffer` can freely change between each consecutive function invocation. + * `dstBuffer` content will be overwritten. + * + * @return : an hint of how many `srcSize` bytes LZ4F_decompress() expects for next call. + * Schematically, it's the size of the current (or remaining) compressed block + header of next block. + * Respecting the hint provides some small speed benefit, because it skips intermediate buffers. + * This is just a hint though, it's always possible to provide any srcSize. + * + * When a frame is fully decoded, @return will be 0 (no more data expected). + * When provided with more bytes than necessary to decode a frame, + * LZ4F_decompress() will stop reading exactly at end of current frame, and @return 0. + * + * If decompression failed, @return is an error code, which can be tested using LZ4F_isError(). + * After a decompression error, the `dctx` context is not resumable. + * Use LZ4F_resetDecompressionContext() to return to clean state. + * + * After a frame is fully decoded, dctx can be used again to decompress another frame. + */ +LZ4FLIB_API size_t LZ4F_decompress(LZ4F_dctx* dctx, + void* dstBuffer, size_t* dstSizePtr, + const void* srcBuffer, size_t* srcSizePtr, + const LZ4F_decompressOptions_t* dOptPtr); + + +/*! LZ4F_resetDecompressionContext() : added in v1.8.0 + * In case of an error, the context is left in "undefined" state. + * In which case, it's necessary to reset it, before re-using it. + * This method can also be used to abruptly stop any unfinished decompression, + * and start a new one using same context resources. */ +LZ4FLIB_API void LZ4F_resetDecompressionContext(LZ4F_dctx* dctx); /* always successful */ + + + +#if defined (__cplusplus) +} +#endif + +#endif /* LZ4F_H_09782039843 */ + +#if defined(LZ4F_STATIC_LINKING_ONLY) && !defined(LZ4F_H_STATIC_09782039843) +#define LZ4F_H_STATIC_09782039843 + +#if defined (__cplusplus) +extern "C" { +#endif + +/* These declarations are not stable and may change in the future. + * They are therefore only safe to depend on + * when the caller is statically linked against the library. + * To access their declarations, define LZ4F_STATIC_LINKING_ONLY. + * + * By default, these symbols aren't published into shared/dynamic libraries. + * You can override this behavior and force them to be published + * by defining LZ4F_PUBLISH_STATIC_FUNCTIONS. + * Use at your own risk. + */ +#ifdef LZ4F_PUBLISH_STATIC_FUNCTIONS +# define LZ4FLIB_STATIC_API LZ4FLIB_API +#else +# define LZ4FLIB_STATIC_API +#endif + + +/* --- Error List --- */ +#define LZ4F_LIST_ERRORS(ITEM) \ + ITEM(OK_NoError) \ + ITEM(ERROR_GENERIC) \ + ITEM(ERROR_maxBlockSize_invalid) \ + ITEM(ERROR_blockMode_invalid) \ + ITEM(ERROR_contentChecksumFlag_invalid) \ + ITEM(ERROR_compressionLevel_invalid) \ + ITEM(ERROR_headerVersion_wrong) \ + ITEM(ERROR_blockChecksum_invalid) \ + ITEM(ERROR_reservedFlag_set) \ + ITEM(ERROR_allocation_failed) \ + ITEM(ERROR_srcSize_tooLarge) \ + ITEM(ERROR_dstMaxSize_tooSmall) \ + ITEM(ERROR_frameHeader_incomplete) \ + ITEM(ERROR_frameType_unknown) \ + ITEM(ERROR_frameSize_wrong) \ + ITEM(ERROR_srcPtr_wrong) \ + ITEM(ERROR_decompressionFailed) \ + ITEM(ERROR_headerChecksum_invalid) \ + ITEM(ERROR_contentChecksum_invalid) \ + ITEM(ERROR_frameDecoding_alreadyStarted) \ + ITEM(ERROR_maxCode) + +#define LZ4F_GENERATE_ENUM(ENUM) LZ4F_##ENUM, + +/* enum list is exposed, to handle specific errors */ +typedef enum { LZ4F_LIST_ERRORS(LZ4F_GENERATE_ENUM) + _LZ4F_dummy_error_enum_for_c89_never_used } LZ4F_errorCodes; + +LZ4FLIB_STATIC_API LZ4F_errorCodes LZ4F_getErrorCode(size_t functionResult); + +LZ4FLIB_STATIC_API size_t LZ4F_getBlockSize(unsigned); + +/********************************** + * Bulk processing dictionary API + *********************************/ + +/* A Dictionary is useful for the compression of small messages (KB range). + * It dramatically improves compression efficiency. + * + * LZ4 can ingest any input as dictionary, though only the last 64 KB are useful. + * Best results are generally achieved by using Zstandard's Dictionary Builder + * to generate a high-quality dictionary from a set of samples. + * + * Loading a dictionary has a cost, since it involves construction of tables. + * The Bulk processing dictionary API makes it possible to share this cost + * over an arbitrary number of compression jobs, even concurrently, + * markedly improving compression latency for these cases. + * + * The same dictionary will have to be used on the decompression side + * for decoding to be successful. + * To help identify the correct dictionary at decoding stage, + * the frame header allows optional embedding of a dictID field. + */ +typedef struct LZ4F_CDict_s LZ4F_CDict; + +/*! LZ4_createCDict() : + * When compressing multiple messages / blocks using the same dictionary, it's recommended to load it just once. + * LZ4_createCDict() will create a digested dictionary, ready to start future compression operations without startup delay. + * LZ4_CDict can be created once and shared by multiple threads concurrently, since its usage is read-only. + * `dictBuffer` can be released after LZ4_CDict creation, since its content is copied within CDict */ +LZ4FLIB_STATIC_API LZ4F_CDict* LZ4F_createCDict(const void* dictBuffer, size_t dictSize); +LZ4FLIB_STATIC_API void LZ4F_freeCDict(LZ4F_CDict* CDict); + + +/*! LZ4_compressFrame_usingCDict() : + * Compress an entire srcBuffer into a valid LZ4 frame using a digested Dictionary. + * cctx must point to a context created by LZ4F_createCompressionContext(). + * If cdict==NULL, compress without a dictionary. + * dstBuffer MUST be >= LZ4F_compressFrameBound(srcSize, preferencesPtr). + * If this condition is not respected, function will fail (@return an errorCode). + * The LZ4F_preferences_t structure is optional : you may provide NULL as argument, + * but it's not recommended, as it's the only way to provide dictID in the frame header. + * @return : number of bytes written into dstBuffer. + * or an error code if it fails (can be tested using LZ4F_isError()) */ +LZ4FLIB_STATIC_API size_t LZ4F_compressFrame_usingCDict( + LZ4F_cctx* cctx, + void* dst, size_t dstCapacity, + const void* src, size_t srcSize, + const LZ4F_CDict* cdict, + const LZ4F_preferences_t* preferencesPtr); + + +/*! LZ4F_compressBegin_usingCDict() : + * Inits streaming dictionary compression, and writes the frame header into dstBuffer. + * dstCapacity must be >= LZ4F_HEADER_SIZE_MAX bytes. + * `prefsPtr` is optional : you may provide NULL as argument, + * however, it's the only way to provide dictID in the frame header. + * @return : number of bytes written into dstBuffer for the header, + * or an error code (which can be tested using LZ4F_isError()) */ +LZ4FLIB_STATIC_API size_t LZ4F_compressBegin_usingCDict( + LZ4F_cctx* cctx, + void* dstBuffer, size_t dstCapacity, + const LZ4F_CDict* cdict, + const LZ4F_preferences_t* prefsPtr); + + +/*! LZ4F_decompress_usingDict() : + * Same as LZ4F_decompress(), using a predefined dictionary. + * Dictionary is used "in place", without any preprocessing. + * It must remain accessible throughout the entire frame decoding. */ +LZ4FLIB_STATIC_API size_t LZ4F_decompress_usingDict( + LZ4F_dctx* dctxPtr, + void* dstBuffer, size_t* dstSizePtr, + const void* srcBuffer, size_t* srcSizePtr, + const void* dict, size_t dictSize, + const LZ4F_decompressOptions_t* decompressOptionsPtr); + +#if defined (__cplusplus) +} +#endif + +#endif /* defined(LZ4F_STATIC_LINKING_ONLY) && !defined(LZ4F_H_STATIC_09782039843) */ diff --git a/fsbl/lib/lz4/lz4frame_static.h b/fsbl/lib/lz4/lz4frame_static.h new file mode 100644 index 000000000..925a2c5c3 --- /dev/null +++ b/fsbl/lib/lz4/lz4frame_static.h @@ -0,0 +1,47 @@ +/* + LZ4 auto-framing library + Header File for static linking only + Copyright (C) 2011-2016, Yann Collet. + + BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + You can contact the author at : + - LZ4 source repository : https://github.com/lz4/lz4 + - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c +*/ + +#ifndef LZ4FRAME_STATIC_H_0398209384 +#define LZ4FRAME_STATIC_H_0398209384 + +/* The declarations that formerly were made here have been merged into + * lz4frame.h, protected by the LZ4F_STATIC_LINKING_ONLY macro. Going forward, + * it is recommended to simply include that header directly. + */ + +#define LZ4F_STATIC_LINKING_ONLY +#include "lz4frame.h" + +#endif /* LZ4FRAME_STATIC_H_0398209384 */ diff --git a/fsbl/lib/lz4/lz4hc.c b/fsbl/lib/lz4/lz4hc.c new file mode 100644 index 000000000..77c9f4305 --- /dev/null +++ b/fsbl/lib/lz4/lz4hc.c @@ -0,0 +1,1615 @@ +/* + LZ4 HC - High Compression Mode of LZ4 + Copyright (C) 2011-2017, Yann Collet. + + BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + You can contact the author at : + - LZ4 source repository : https://github.com/lz4/lz4 + - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c +*/ +/* note : lz4hc is not an independent module, it requires lz4.h/lz4.c for proper compilation */ + + +/* ************************************* +* Tuning Parameter +***************************************/ + +/*! HEAPMODE : + * Select how default compression function will allocate workplace memory, + * in stack (0:fastest), or in heap (1:requires malloc()). + * Since workplace is rather large, heap mode is recommended. + */ +#ifndef LZ4HC_HEAPMODE +# define LZ4HC_HEAPMODE 1 +#endif + + +/*=== Dependency ===*/ +#define LZ4_HC_STATIC_LINKING_ONLY +#include "lz4hc.h" + + +/*=== Common definitions ===*/ +#if defined(__GNUC__) +# pragma GCC diagnostic ignored "-Wunused-function" +#endif +#if defined (__clang__) +# pragma clang diagnostic ignored "-Wunused-function" +#endif + +#define LZ4_COMMONDEFS_ONLY +#ifndef LZ4_SRC_INCLUDED +#include "lz4.c" /* LZ4_count, constants, mem */ +#endif + + +/*=== Enums ===*/ +typedef enum { noDictCtx, usingDictCtxHc } dictCtx_directive; + + +/*=== Constants ===*/ +#define OPTIMAL_ML (int)((ML_MASK-1)+MINMATCH) +#define LZ4_OPT_NUM (1<<12) + + +/*=== Macros ===*/ +#define MIN(a,b) ( (a) < (b) ? (a) : (b) ) +#define MAX(a,b) ( (a) > (b) ? (a) : (b) ) +#define HASH_FUNCTION(i) (((i) * 2654435761U) >> ((MINMATCH*8)-LZ4HC_HASH_LOG)) +#define DELTANEXTMAXD(p) chainTable[(p) & LZ4HC_MAXD_MASK] /* flexible, LZ4HC_MAXD dependent */ +#define DELTANEXTU16(table, pos) table[(U16)(pos)] /* faster */ +/* Make fields passed to, and updated by LZ4HC_encodeSequence explicit */ +#define UPDATABLE(ip, op, anchor) &ip, &op, &anchor + +static U32 LZ4HC_hashPtr(const void* ptr) { return HASH_FUNCTION(LZ4_read32(ptr)); } + + +/************************************** +* HC Compression +**************************************/ +static void LZ4HC_clearTables (LZ4HC_CCtx_internal* hc4) +{ + MEM_INIT(hc4->hashTable, 0, sizeof(hc4->hashTable)); + MEM_INIT(hc4->chainTable, 0xFF, sizeof(hc4->chainTable)); +} + +static void LZ4HC_init_internal (LZ4HC_CCtx_internal* hc4, const BYTE* start) +{ + uptrval startingOffset = (uptrval)(hc4->end - hc4->base); + if (startingOffset > 1 GB) { + LZ4HC_clearTables(hc4); + startingOffset = 0; + } + startingOffset += 64 KB; + hc4->nextToUpdate = (U32) startingOffset; + hc4->base = start - startingOffset; + hc4->end = start; + hc4->dictBase = start - startingOffset; + hc4->dictLimit = (U32) startingOffset; + hc4->lowLimit = (U32) startingOffset; +} + + +/* Update chains up to ip (excluded) */ +LZ4_FORCE_INLINE void LZ4HC_Insert (LZ4HC_CCtx_internal* hc4, const BYTE* ip) +{ + U16* const chainTable = hc4->chainTable; + U32* const hashTable = hc4->hashTable; + const BYTE* const base = hc4->base; + U32 const target = (U32)(ip - base); + U32 idx = hc4->nextToUpdate; + + while (idx < target) { + U32 const h = LZ4HC_hashPtr(base+idx); + size_t delta = idx - hashTable[h]; + if (delta>LZ4_DISTANCE_MAX) delta = LZ4_DISTANCE_MAX; + DELTANEXTU16(chainTable, idx) = (U16)delta; + hashTable[h] = idx; + idx++; + } + + hc4->nextToUpdate = target; +} + +/** LZ4HC_countBack() : + * @return : negative value, nb of common bytes before ip/match */ +LZ4_FORCE_INLINE +int LZ4HC_countBack(const BYTE* const ip, const BYTE* const match, + const BYTE* const iMin, const BYTE* const mMin) +{ + int back = 0; + int const min = (int)MAX(iMin - ip, mMin - match); + assert(min <= 0); + assert(ip >= iMin); assert((size_t)(ip-iMin) < (1U<<31)); + assert(match >= mMin); assert((size_t)(match - mMin) < (1U<<31)); + while ( (back > min) + && (ip[back-1] == match[back-1]) ) + back--; + return back; +} + +#if defined(_MSC_VER) +# define LZ4HC_rotl32(x,r) _rotl(x,r) +#else +# define LZ4HC_rotl32(x,r) ((x << r) | (x >> (32 - r))) +#endif + + +static U32 LZ4HC_rotatePattern(size_t const rotate, U32 const pattern) +{ + size_t const bitsToRotate = (rotate & (sizeof(pattern) - 1)) << 3; + if (bitsToRotate == 0) return pattern; + return LZ4HC_rotl32(pattern, (int)bitsToRotate); +} + +/* LZ4HC_countPattern() : + * pattern32 must be a sample of repetitive pattern of length 1, 2 or 4 (but not 3!) */ +static unsigned +LZ4HC_countPattern(const BYTE* ip, const BYTE* const iEnd, U32 const pattern32) +{ + const BYTE* const iStart = ip; + reg_t const pattern = (sizeof(pattern)==8) ? + (reg_t)pattern32 + (((reg_t)pattern32) << (sizeof(pattern)*4)) : pattern32; + + while (likely(ip < iEnd-(sizeof(pattern)-1))) { + reg_t const diff = LZ4_read_ARCH(ip) ^ pattern; + if (!diff) { ip+=sizeof(pattern); continue; } + ip += LZ4_NbCommonBytes(diff); + return (unsigned)(ip - iStart); + } + + if (LZ4_isLittleEndian()) { + reg_t patternByte = pattern; + while ((ip>= 8; + } + } else { /* big endian */ + U32 bitOffset = (sizeof(pattern)*8) - 8; + while (ip < iEnd) { + BYTE const byte = (BYTE)(pattern >> bitOffset); + if (*ip != byte) break; + ip ++; bitOffset -= 8; + } + } + + return (unsigned)(ip - iStart); +} + +/* LZ4HC_reverseCountPattern() : + * pattern must be a sample of repetitive pattern of length 1, 2 or 4 (but not 3!) + * read using natural platform endianess */ +static unsigned +LZ4HC_reverseCountPattern(const BYTE* ip, const BYTE* const iLow, U32 pattern) +{ + const BYTE* const iStart = ip; + + while (likely(ip >= iLow+4)) { + if (LZ4_read32(ip-4) != pattern) break; + ip -= 4; + } + { const BYTE* bytePtr = (const BYTE*)(&pattern) + 3; /* works for any endianess */ + while (likely(ip>iLow)) { + if (ip[-1] != *bytePtr) break; + ip--; bytePtr--; + } } + return (unsigned)(iStart - ip); +} + +/* LZ4HC_protectDictEnd() : + * Checks if the match is in the last 3 bytes of the dictionary, so reading the + * 4 byte MINMATCH would overflow. + * @returns true if the match index is okay. + */ +static int LZ4HC_protectDictEnd(U32 const dictLimit, U32 const matchIndex) +{ + return ((U32)((dictLimit - 1) - matchIndex) >= 3); +} + +typedef enum { rep_untested, rep_not, rep_confirmed } repeat_state_e; +typedef enum { favorCompressionRatio=0, favorDecompressionSpeed } HCfavor_e; + +LZ4_FORCE_INLINE int +LZ4HC_InsertAndGetWiderMatch ( + LZ4HC_CCtx_internal* hc4, + const BYTE* const ip, + const BYTE* const iLowLimit, + const BYTE* const iHighLimit, + int longest, + const BYTE** matchpos, + const BYTE** startpos, + const int maxNbAttempts, + const int patternAnalysis, + const int chainSwap, + const dictCtx_directive dict, + const HCfavor_e favorDecSpeed) +{ + U16* const chainTable = hc4->chainTable; + U32* const HashTable = hc4->hashTable; + const LZ4HC_CCtx_internal * const dictCtx = hc4->dictCtx; + const BYTE* const base = hc4->base; + const U32 dictLimit = hc4->dictLimit; + const BYTE* const lowPrefixPtr = base + dictLimit; + const U32 ipIndex = (U32)(ip - base); + const U32 lowestMatchIndex = (hc4->lowLimit + (LZ4_DISTANCE_MAX + 1) > ipIndex) ? hc4->lowLimit : ipIndex - LZ4_DISTANCE_MAX; + const BYTE* const dictBase = hc4->dictBase; + int const lookBackLength = (int)(ip-iLowLimit); + int nbAttempts = maxNbAttempts; + U32 matchChainPos = 0; + U32 const pattern = LZ4_read32(ip); + U32 matchIndex; + repeat_state_e repeat = rep_untested; + size_t srcPatternLength = 0; + + DEBUGLOG(7, "LZ4HC_InsertAndGetWiderMatch"); + /* First Match */ + LZ4HC_Insert(hc4, ip); + matchIndex = HashTable[LZ4HC_hashPtr(ip)]; + DEBUGLOG(7, "First match at index %u / %u (lowestMatchIndex)", + matchIndex, lowestMatchIndex); + + while ((matchIndex>=lowestMatchIndex) && (nbAttempts>0)) { + int matchLength=0; + nbAttempts--; + assert(matchIndex < ipIndex); + if (favorDecSpeed && (ipIndex - matchIndex < 8)) { + /* do nothing */ + } else if (matchIndex >= dictLimit) { /* within current Prefix */ + const BYTE* const matchPtr = base + matchIndex; + assert(matchPtr >= lowPrefixPtr); + assert(matchPtr < ip); + assert(longest >= 1); + if (LZ4_read16(iLowLimit + longest - 1) == LZ4_read16(matchPtr - lookBackLength + longest - 1)) { + if (LZ4_read32(matchPtr) == pattern) { + int const back = lookBackLength ? LZ4HC_countBack(ip, matchPtr, iLowLimit, lowPrefixPtr) : 0; + matchLength = MINMATCH + (int)LZ4_count(ip+MINMATCH, matchPtr+MINMATCH, iHighLimit); + matchLength -= back; + if (matchLength > longest) { + longest = matchLength; + *matchpos = matchPtr + back; + *startpos = ip + back; + } } } + } else { /* lowestMatchIndex <= matchIndex < dictLimit */ + const BYTE* const matchPtr = dictBase + matchIndex; + if (LZ4_read32(matchPtr) == pattern) { + const BYTE* const dictStart = dictBase + hc4->lowLimit; + int back = 0; + const BYTE* vLimit = ip + (dictLimit - matchIndex); + if (vLimit > iHighLimit) vLimit = iHighLimit; + matchLength = (int)LZ4_count(ip+MINMATCH, matchPtr+MINMATCH, vLimit) + MINMATCH; + if ((ip+matchLength == vLimit) && (vLimit < iHighLimit)) + matchLength += LZ4_count(ip+matchLength, lowPrefixPtr, iHighLimit); + back = lookBackLength ? LZ4HC_countBack(ip, matchPtr, iLowLimit, dictStart) : 0; + matchLength -= back; + if (matchLength > longest) { + longest = matchLength; + *matchpos = base + matchIndex + back; /* virtual pos, relative to ip, to retrieve offset */ + *startpos = ip + back; + } } } + + if (chainSwap && matchLength==longest) { /* better match => select a better chain */ + assert(lookBackLength==0); /* search forward only */ + if (matchIndex + (U32)longest <= ipIndex) { + int const kTrigger = 4; + U32 distanceToNextMatch = 1; + int const end = longest - MINMATCH + 1; + int step = 1; + int accel = 1 << kTrigger; + int pos; + for (pos = 0; pos < end; pos += step) { + U32 const candidateDist = DELTANEXTU16(chainTable, matchIndex + (U32)pos); + step = (accel++ >> kTrigger); + if (candidateDist > distanceToNextMatch) { + distanceToNextMatch = candidateDist; + matchChainPos = (U32)pos; + accel = 1 << kTrigger; + } + } + if (distanceToNextMatch > 1) { + if (distanceToNextMatch > matchIndex) break; /* avoid overflow */ + matchIndex -= distanceToNextMatch; + continue; + } } } + + { U32 const distNextMatch = DELTANEXTU16(chainTable, matchIndex); + if (patternAnalysis && distNextMatch==1 && matchChainPos==0) { + U32 const matchCandidateIdx = matchIndex-1; + /* may be a repeated pattern */ + if (repeat == rep_untested) { + if ( ((pattern & 0xFFFF) == (pattern >> 16)) + & ((pattern & 0xFF) == (pattern >> 24)) ) { + repeat = rep_confirmed; + srcPatternLength = LZ4HC_countPattern(ip+sizeof(pattern), iHighLimit, pattern) + sizeof(pattern); + } else { + repeat = rep_not; + } } + if ( (repeat == rep_confirmed) && (matchCandidateIdx >= lowestMatchIndex) + && LZ4HC_protectDictEnd(dictLimit, matchCandidateIdx) ) { + const int extDict = matchCandidateIdx < dictLimit; + const BYTE* const matchPtr = (extDict ? dictBase : base) + matchCandidateIdx; + if (LZ4_read32(matchPtr) == pattern) { /* good candidate */ + const BYTE* const dictStart = dictBase + hc4->lowLimit; + const BYTE* const iLimit = extDict ? dictBase + dictLimit : iHighLimit; + size_t forwardPatternLength = LZ4HC_countPattern(matchPtr+sizeof(pattern), iLimit, pattern) + sizeof(pattern); + if (extDict && matchPtr + forwardPatternLength == iLimit) { + U32 const rotatedPattern = LZ4HC_rotatePattern(forwardPatternLength, pattern); + forwardPatternLength += LZ4HC_countPattern(lowPrefixPtr, iHighLimit, rotatedPattern); + } + { const BYTE* const lowestMatchPtr = extDict ? dictStart : lowPrefixPtr; + size_t backLength = LZ4HC_reverseCountPattern(matchPtr, lowestMatchPtr, pattern); + size_t currentSegmentLength; + if (!extDict && matchPtr - backLength == lowPrefixPtr && hc4->lowLimit < dictLimit) { + U32 const rotatedPattern = LZ4HC_rotatePattern((U32)(-(int)backLength), pattern); + backLength += LZ4HC_reverseCountPattern(dictBase + dictLimit, dictStart, rotatedPattern); + } + /* Limit backLength not go further than lowestMatchIndex */ + backLength = matchCandidateIdx - MAX(matchCandidateIdx - (U32)backLength, lowestMatchIndex); + assert(matchCandidateIdx - backLength >= lowestMatchIndex); + currentSegmentLength = backLength + forwardPatternLength; + /* Adjust to end of pattern if the source pattern fits, otherwise the beginning of the pattern */ + if ( (currentSegmentLength >= srcPatternLength) /* current pattern segment large enough to contain full srcPatternLength */ + && (forwardPatternLength <= srcPatternLength) ) { /* haven't reached this position yet */ + U32 const newMatchIndex = matchCandidateIdx + (U32)forwardPatternLength - (U32)srcPatternLength; /* best position, full pattern, might be followed by more match */ + if (LZ4HC_protectDictEnd(dictLimit, newMatchIndex)) + matchIndex = newMatchIndex; + else { + /* Can only happen if started in the prefix */ + assert(newMatchIndex >= dictLimit - 3 && newMatchIndex < dictLimit && !extDict); + matchIndex = dictLimit; + } + } else { + U32 const newMatchIndex = matchCandidateIdx - (U32)backLength; /* farthest position in current segment, will find a match of length currentSegmentLength + maybe some back */ + if (!LZ4HC_protectDictEnd(dictLimit, newMatchIndex)) { + assert(newMatchIndex >= dictLimit - 3 && newMatchIndex < dictLimit && !extDict); + matchIndex = dictLimit; + } else { + matchIndex = newMatchIndex; + if (lookBackLength==0) { /* no back possible */ + size_t const maxML = MIN(currentSegmentLength, srcPatternLength); + if ((size_t)longest < maxML) { + assert(base + matchIndex != ip); + if ((size_t)(ip - base) - matchIndex > LZ4_DISTANCE_MAX) break; + assert(maxML < 2 GB); + longest = (int)maxML; + *matchpos = base + matchIndex; /* virtual pos, relative to ip, to retrieve offset */ + *startpos = ip; + } + { U32 const distToNextPattern = DELTANEXTU16(chainTable, matchIndex); + if (distToNextPattern > matchIndex) break; /* avoid overflow */ + matchIndex -= distToNextPattern; + } } } } } + continue; + } } + } } /* PA optimization */ + + /* follow current chain */ + matchIndex -= DELTANEXTU16(chainTable, matchIndex + matchChainPos); + + } /* while ((matchIndex>=lowestMatchIndex) && (nbAttempts)) */ + + if ( dict == usingDictCtxHc + && nbAttempts > 0 + && ipIndex - lowestMatchIndex < LZ4_DISTANCE_MAX) { + size_t const dictEndOffset = (size_t)(dictCtx->end - dictCtx->base); + U32 dictMatchIndex = dictCtx->hashTable[LZ4HC_hashPtr(ip)]; + assert(dictEndOffset <= 1 GB); + matchIndex = dictMatchIndex + lowestMatchIndex - (U32)dictEndOffset; + while (ipIndex - matchIndex <= LZ4_DISTANCE_MAX && nbAttempts--) { + const BYTE* const matchPtr = dictCtx->base + dictMatchIndex; + + if (LZ4_read32(matchPtr) == pattern) { + int mlt; + int back = 0; + const BYTE* vLimit = ip + (dictEndOffset - dictMatchIndex); + if (vLimit > iHighLimit) vLimit = iHighLimit; + mlt = (int)LZ4_count(ip+MINMATCH, matchPtr+MINMATCH, vLimit) + MINMATCH; + back = lookBackLength ? LZ4HC_countBack(ip, matchPtr, iLowLimit, dictCtx->base + dictCtx->dictLimit) : 0; + mlt -= back; + if (mlt > longest) { + longest = mlt; + *matchpos = base + matchIndex + back; + *startpos = ip + back; + } } + + { U32 const nextOffset = DELTANEXTU16(dictCtx->chainTable, dictMatchIndex); + dictMatchIndex -= nextOffset; + matchIndex -= nextOffset; + } } } + + return longest; +} + +LZ4_FORCE_INLINE +int LZ4HC_InsertAndFindBestMatch(LZ4HC_CCtx_internal* const hc4, /* Index table will be updated */ + const BYTE* const ip, const BYTE* const iLimit, + const BYTE** matchpos, + const int maxNbAttempts, + const int patternAnalysis, + const dictCtx_directive dict) +{ + const BYTE* uselessPtr = ip; + /* note : LZ4HC_InsertAndGetWiderMatch() is able to modify the starting position of a match (*startpos), + * but this won't be the case here, as we define iLowLimit==ip, + * so LZ4HC_InsertAndGetWiderMatch() won't be allowed to search past ip */ + return LZ4HC_InsertAndGetWiderMatch(hc4, ip, ip, iLimit, MINMATCH-1, matchpos, &uselessPtr, maxNbAttempts, patternAnalysis, 0 /*chainSwap*/, dict, favorCompressionRatio); +} + +/* LZ4HC_encodeSequence() : + * @return : 0 if ok, + * 1 if buffer issue detected */ +LZ4_FORCE_INLINE int LZ4HC_encodeSequence ( + const BYTE** _ip, + BYTE** _op, + const BYTE** _anchor, + int matchLength, + const BYTE* const match, + limitedOutput_directive limit, + BYTE* oend) +{ +#define ip (*_ip) +#define op (*_op) +#define anchor (*_anchor) + + size_t length; + BYTE* const token = op++; + +#if defined(LZ4_DEBUG) && (LZ4_DEBUG >= 6) + static const BYTE* start = NULL; + static U32 totalCost = 0; + U32 const pos = (start==NULL) ? 0 : (U32)(anchor - start); + U32 const ll = (U32)(ip - anchor); + U32 const llAdd = (ll>=15) ? ((ll-15) / 255) + 1 : 0; + U32 const mlAdd = (matchLength>=19) ? ((matchLength-19) / 255) + 1 : 0; + U32 const cost = 1 + llAdd + ll + 2 + mlAdd; + if (start==NULL) start = anchor; /* only works for single segment */ + /* g_debuglog_enable = (pos >= 2228) & (pos <= 2262); */ + DEBUGLOG(6, "pos:%7u -- literals:%4u, match:%4i, offset:%5u, cost:%4u + %5u", + pos, + (U32)(ip - anchor), matchLength, (U32)(ip-match), + cost, totalCost); + totalCost += cost; +#endif + + /* Encode Literal length */ + length = (size_t)(ip - anchor); + LZ4_STATIC_ASSERT(notLimited == 0); + /* Check output limit */ + if (limit && ((op + (length / 255) + length + (2 + 1 + LASTLITERALS)) > oend)) { + DEBUGLOG(6, "Not enough room to write %i literals (%i bytes remaining)", + (int)length, (int)(oend - op)); + return 1; + } + if (length >= RUN_MASK) { + size_t len = length - RUN_MASK; + *token = (RUN_MASK << ML_BITS); + for(; len >= 255 ; len -= 255) *op++ = 255; + *op++ = (BYTE)len; + } else { + *token = (BYTE)(length << ML_BITS); + } + + /* Copy Literals */ + LZ4_wildCopy8(op, anchor, op + length); + op += length; + + /* Encode Offset */ + assert( (ip - match) <= LZ4_DISTANCE_MAX ); /* note : consider providing offset as a value, rather than as a pointer difference */ + LZ4_writeLE16(op, (U16)(ip - match)); op += 2; + + /* Encode MatchLength */ + assert(matchLength >= MINMATCH); + length = (size_t)matchLength - MINMATCH; + if (limit && (op + (length / 255) + (1 + LASTLITERALS) > oend)) { + DEBUGLOG(6, "Not enough room to write match length"); + return 1; /* Check output limit */ + } + if (length >= ML_MASK) { + *token += ML_MASK; + length -= ML_MASK; + for(; length >= 510 ; length -= 510) { *op++ = 255; *op++ = 255; } + if (length >= 255) { length -= 255; *op++ = 255; } + *op++ = (BYTE)length; + } else { + *token += (BYTE)(length); + } + + /* Prepare next loop */ + ip += matchLength; + anchor = ip; + + return 0; +} +#undef ip +#undef op +#undef anchor + +LZ4_FORCE_INLINE int LZ4HC_compress_hashChain ( + LZ4HC_CCtx_internal* const ctx, + const char* const source, + char* const dest, + int* srcSizePtr, + int const maxOutputSize, + int maxNbAttempts, + const limitedOutput_directive limit, + const dictCtx_directive dict + ) +{ + const int inputSize = *srcSizePtr; + const int patternAnalysis = (maxNbAttempts > 128); /* levels 9+ */ + + const BYTE* ip = (const BYTE*) source; + const BYTE* anchor = ip; + const BYTE* const iend = ip + inputSize; + const BYTE* const mflimit = iend - MFLIMIT; + const BYTE* const matchlimit = (iend - LASTLITERALS); + + BYTE* optr = (BYTE*) dest; + BYTE* op = (BYTE*) dest; + BYTE* oend = op + maxOutputSize; + + int ml0, ml, ml2, ml3; + const BYTE* start0; + const BYTE* ref0; + const BYTE* ref = NULL; + const BYTE* start2 = NULL; + const BYTE* ref2 = NULL; + const BYTE* start3 = NULL; + const BYTE* ref3 = NULL; + + /* init */ + *srcSizePtr = 0; + if (limit == fillOutput) oend -= LASTLITERALS; /* Hack for support LZ4 format restriction */ + if (inputSize < LZ4_minLength) goto _last_literals; /* Input too small, no compression (all literals) */ + + /* Main Loop */ + while (ip <= mflimit) { + ml = LZ4HC_InsertAndFindBestMatch(ctx, ip, matchlimit, &ref, maxNbAttempts, patternAnalysis, dict); + if (ml encode ML1 */ + optr = op; + if (LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ref, limit, oend)) goto _dest_overflow; + continue; + } + + if (start0 < ip) { /* first match was skipped at least once */ + if (start2 < ip + ml0) { /* squeezing ML1 between ML0(original ML1) and ML2 */ + ip = start0; ref = ref0; ml = ml0; /* restore initial ML1 */ + } } + + /* Here, start0==ip */ + if ((start2 - ip) < 3) { /* First Match too small : removed */ + ml = ml2; + ip = start2; + ref =ref2; + goto _Search2; + } + +_Search3: + /* At this stage, we have : + * ml2 > ml1, and + * ip1+3 <= ip2 (usually < ip1+ml1) */ + if ((start2 - ip) < OPTIMAL_ML) { + int correction; + int new_ml = ml; + if (new_ml > OPTIMAL_ML) new_ml = OPTIMAL_ML; + if (ip+new_ml > start2 + ml2 - MINMATCH) new_ml = (int)(start2 - ip) + ml2 - MINMATCH; + correction = new_ml - (int)(start2 - ip); + if (correction > 0) { + start2 += correction; + ref2 += correction; + ml2 -= correction; + } + } + /* Now, we have start2 = ip+new_ml, with new_ml = min(ml, OPTIMAL_ML=18) */ + + if (start2 + ml2 <= mflimit) { + ml3 = LZ4HC_InsertAndGetWiderMatch(ctx, + start2 + ml2 - 3, start2, matchlimit, ml2, &ref3, &start3, + maxNbAttempts, patternAnalysis, 0, dict, favorCompressionRatio); + } else { + ml3 = ml2; + } + + if (ml3 == ml2) { /* No better match => encode ML1 and ML2 */ + /* ip & ref are known; Now for ml */ + if (start2 < ip+ml) ml = (int)(start2 - ip); + /* Now, encode 2 sequences */ + optr = op; + if (LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ref, limit, oend)) goto _dest_overflow; + ip = start2; + optr = op; + if (LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml2, ref2, limit, oend)) { + ml = ml2; + ref = ref2; + goto _dest_overflow; + } + continue; + } + + if (start3 < ip+ml+3) { /* Not enough space for match 2 : remove it */ + if (start3 >= (ip+ml)) { /* can write Seq1 immediately ==> Seq2 is removed, so Seq3 becomes Seq1 */ + if (start2 < ip+ml) { + int correction = (int)(ip+ml - start2); + start2 += correction; + ref2 += correction; + ml2 -= correction; + if (ml2 < MINMATCH) { + start2 = start3; + ref2 = ref3; + ml2 = ml3; + } + } + + optr = op; + if (LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ref, limit, oend)) goto _dest_overflow; + ip = start3; + ref = ref3; + ml = ml3; + + start0 = start2; + ref0 = ref2; + ml0 = ml2; + goto _Search2; + } + + start2 = start3; + ref2 = ref3; + ml2 = ml3; + goto _Search3; + } + + /* + * OK, now we have 3 ascending matches; + * let's write the first one ML1. + * ip & ref are known; Now decide ml. + */ + if (start2 < ip+ml) { + if ((start2 - ip) < OPTIMAL_ML) { + int correction; + if (ml > OPTIMAL_ML) ml = OPTIMAL_ML; + if (ip + ml > start2 + ml2 - MINMATCH) ml = (int)(start2 - ip) + ml2 - MINMATCH; + correction = ml - (int)(start2 - ip); + if (correction > 0) { + start2 += correction; + ref2 += correction; + ml2 -= correction; + } + } else { + ml = (int)(start2 - ip); + } + } + optr = op; + if (LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ref, limit, oend)) goto _dest_overflow; + + /* ML2 becomes ML1 */ + ip = start2; ref = ref2; ml = ml2; + + /* ML3 becomes ML2 */ + start2 = start3; ref2 = ref3; ml2 = ml3; + + /* let's find a new ML3 */ + goto _Search3; + } + +_last_literals: + /* Encode Last Literals */ + { size_t lastRunSize = (size_t)(iend - anchor); /* literals */ + size_t llAdd = (lastRunSize + 255 - RUN_MASK) / 255; + size_t const totalSize = 1 + llAdd + lastRunSize; + if (limit == fillOutput) oend += LASTLITERALS; /* restore correct value */ + if (limit && (op + totalSize > oend)) { + if (limit == limitedOutput) return 0; + /* adapt lastRunSize to fill 'dest' */ + lastRunSize = (size_t)(oend - op) - 1 /*token*/; + llAdd = (lastRunSize + 256 - RUN_MASK) / 256; + lastRunSize -= llAdd; + } + DEBUGLOG(6, "Final literal run : %i literals", (int)lastRunSize); + ip = anchor + lastRunSize; /* can be != iend if limit==fillOutput */ + + if (lastRunSize >= RUN_MASK) { + size_t accumulator = lastRunSize - RUN_MASK; + *op++ = (RUN_MASK << ML_BITS); + for(; accumulator >= 255 ; accumulator -= 255) *op++ = 255; + *op++ = (BYTE) accumulator; + } else { + *op++ = (BYTE)(lastRunSize << ML_BITS); + } + memcpy(op, anchor, lastRunSize); + op += lastRunSize; + } + + /* End */ + *srcSizePtr = (int) (((const char*)ip) - source); + return (int) (((char*)op)-dest); + +_dest_overflow: + if (limit == fillOutput) { + /* Assumption : ip, anchor, ml and ref must be set correctly */ + size_t const ll = (size_t)(ip - anchor); + size_t const ll_addbytes = (ll + 240) / 255; + size_t const ll_totalCost = 1 + ll_addbytes + ll; + BYTE* const maxLitPos = oend - 3; /* 2 for offset, 1 for token */ + DEBUGLOG(6, "Last sequence overflowing"); + op = optr; /* restore correct out pointer */ + if (op + ll_totalCost <= maxLitPos) { + /* ll validated; now adjust match length */ + size_t const bytesLeftForMl = (size_t)(maxLitPos - (op+ll_totalCost)); + size_t const maxMlSize = MINMATCH + (ML_MASK-1) + (bytesLeftForMl * 255); + assert(maxMlSize < INT_MAX); assert(ml >= 0); + if ((size_t)ml > maxMlSize) ml = (int)maxMlSize; + if ((oend + LASTLITERALS) - (op + ll_totalCost + 2) - 1 + ml >= MFLIMIT) { + LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ref, notLimited, oend); + } } + goto _last_literals; + } + /* compression failed */ + return 0; +} + + +static int LZ4HC_compress_optimal( LZ4HC_CCtx_internal* ctx, + const char* const source, char* dst, + int* srcSizePtr, int dstCapacity, + int const nbSearches, size_t sufficient_len, + const limitedOutput_directive limit, int const fullUpdate, + const dictCtx_directive dict, + const HCfavor_e favorDecSpeed); + + +LZ4_FORCE_INLINE int LZ4HC_compress_generic_internal ( + LZ4HC_CCtx_internal* const ctx, + const char* const src, + char* const dst, + int* const srcSizePtr, + int const dstCapacity, + int cLevel, + const limitedOutput_directive limit, + const dictCtx_directive dict + ) +{ + typedef enum { lz4hc, lz4opt } lz4hc_strat_e; + typedef struct { + lz4hc_strat_e strat; + int nbSearches; + U32 targetLength; + } cParams_t; + static const cParams_t clTable[LZ4HC_CLEVEL_MAX+1] = { + { lz4hc, 2, 16 }, /* 0, unused */ + { lz4hc, 2, 16 }, /* 1, unused */ + { lz4hc, 2, 16 }, /* 2, unused */ + { lz4hc, 4, 16 }, /* 3 */ + { lz4hc, 8, 16 }, /* 4 */ + { lz4hc, 16, 16 }, /* 5 */ + { lz4hc, 32, 16 }, /* 6 */ + { lz4hc, 64, 16 }, /* 7 */ + { lz4hc, 128, 16 }, /* 8 */ + { lz4hc, 256, 16 }, /* 9 */ + { lz4opt, 96, 64 }, /*10==LZ4HC_CLEVEL_OPT_MIN*/ + { lz4opt, 512,128 }, /*11 */ + { lz4opt,16384,LZ4_OPT_NUM }, /* 12==LZ4HC_CLEVEL_MAX */ + }; + + DEBUGLOG(4, "LZ4HC_compress_generic(ctx=%p, src=%p, srcSize=%d, limit=%d)", + ctx, src, *srcSizePtr, limit); + + if (limit == fillOutput && dstCapacity < 1) return 0; /* Impossible to store anything */ + if ((U32)*srcSizePtr > (U32)LZ4_MAX_INPUT_SIZE) return 0; /* Unsupported input size (too large or negative) */ + + ctx->end += *srcSizePtr; + if (cLevel < 1) cLevel = LZ4HC_CLEVEL_DEFAULT; /* note : convention is different from lz4frame, maybe something to review */ + cLevel = MIN(LZ4HC_CLEVEL_MAX, cLevel); + { cParams_t const cParam = clTable[cLevel]; + HCfavor_e const favor = ctx->favorDecSpeed ? favorDecompressionSpeed : favorCompressionRatio; + int result; + + if (cParam.strat == lz4hc) { + result = LZ4HC_compress_hashChain(ctx, + src, dst, srcSizePtr, dstCapacity, + cParam.nbSearches, limit, dict); + } else { + assert(cParam.strat == lz4opt); + result = LZ4HC_compress_optimal(ctx, + src, dst, srcSizePtr, dstCapacity, + cParam.nbSearches, cParam.targetLength, limit, + cLevel == LZ4HC_CLEVEL_MAX, /* ultra mode */ + dict, favor); + } + if (result <= 0) ctx->dirty = 1; + return result; + } +} + +static void LZ4HC_setExternalDict(LZ4HC_CCtx_internal* ctxPtr, const BYTE* newBlock); + +static int +LZ4HC_compress_generic_noDictCtx ( + LZ4HC_CCtx_internal* const ctx, + const char* const src, + char* const dst, + int* const srcSizePtr, + int const dstCapacity, + int cLevel, + limitedOutput_directive limit + ) +{ + assert(ctx->dictCtx == NULL); + return LZ4HC_compress_generic_internal(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit, noDictCtx); +} + +static int +LZ4HC_compress_generic_dictCtx ( + LZ4HC_CCtx_internal* const ctx, + const char* const src, + char* const dst, + int* const srcSizePtr, + int const dstCapacity, + int cLevel, + limitedOutput_directive limit + ) +{ + const size_t position = (size_t)(ctx->end - ctx->base) - ctx->lowLimit; + assert(ctx->dictCtx != NULL); + if (position >= 64 KB) { + ctx->dictCtx = NULL; + return LZ4HC_compress_generic_noDictCtx(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit); + } else if (position == 0 && *srcSizePtr > 4 KB) { + memcpy(ctx, ctx->dictCtx, sizeof(LZ4HC_CCtx_internal)); + LZ4HC_setExternalDict(ctx, (const BYTE *)src); + ctx->compressionLevel = (short)cLevel; + return LZ4HC_compress_generic_noDictCtx(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit); + } else { + return LZ4HC_compress_generic_internal(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit, usingDictCtxHc); + } +} + +static int +LZ4HC_compress_generic ( + LZ4HC_CCtx_internal* const ctx, + const char* const src, + char* const dst, + int* const srcSizePtr, + int const dstCapacity, + int cLevel, + limitedOutput_directive limit + ) +{ + if (ctx->dictCtx == NULL) { + return LZ4HC_compress_generic_noDictCtx(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit); + } else { + return LZ4HC_compress_generic_dictCtx(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit); + } +} + + +int LZ4_sizeofStateHC(void) { return (int)sizeof(LZ4_streamHC_t); } + +static size_t LZ4_streamHC_t_alignment(void) +{ +#if LZ4_ALIGN_TEST + typedef struct { char c; LZ4_streamHC_t t; } t_a; + return sizeof(t_a) - sizeof(LZ4_streamHC_t); +#else + return 1; /* effectively disabled */ +#endif +} + +/* state is presumed correctly initialized, + * in which case its size and alignment have already been validate */ +int LZ4_compress_HC_extStateHC_fastReset (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel) +{ + LZ4HC_CCtx_internal* const ctx = &((LZ4_streamHC_t*)state)->internal_donotuse; + if (!LZ4_isAligned(state, LZ4_streamHC_t_alignment())) return 0; + LZ4_resetStreamHC_fast((LZ4_streamHC_t*)state, compressionLevel); + LZ4HC_init_internal (ctx, (const BYTE*)src); + if (dstCapacity < LZ4_compressBound(srcSize)) + return LZ4HC_compress_generic (ctx, src, dst, &srcSize, dstCapacity, compressionLevel, limitedOutput); + else + return LZ4HC_compress_generic (ctx, src, dst, &srcSize, dstCapacity, compressionLevel, notLimited); +} + +int LZ4_compress_HC_extStateHC (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel) +{ + LZ4_streamHC_t* const ctx = LZ4_initStreamHC(state, sizeof(*ctx)); + if (ctx==NULL) return 0; /* init failure */ + return LZ4_compress_HC_extStateHC_fastReset(state, src, dst, srcSize, dstCapacity, compressionLevel); +} + +int LZ4_compress_HC(const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel) +{ +#if defined(LZ4HC_HEAPMODE) && LZ4HC_HEAPMODE==1 + LZ4_streamHC_t* const statePtr = (LZ4_streamHC_t*)ALLOC(sizeof(LZ4_streamHC_t)); +#else + LZ4_streamHC_t state; + LZ4_streamHC_t* const statePtr = &state; +#endif + int const cSize = LZ4_compress_HC_extStateHC(statePtr, src, dst, srcSize, dstCapacity, compressionLevel); +#if defined(LZ4HC_HEAPMODE) && LZ4HC_HEAPMODE==1 + FREEMEM(statePtr); +#endif + return cSize; +} + +/* state is presumed sized correctly (>= sizeof(LZ4_streamHC_t)) */ +int LZ4_compress_HC_destSize(void* state, const char* source, char* dest, int* sourceSizePtr, int targetDestSize, int cLevel) +{ + LZ4_streamHC_t* const ctx = LZ4_initStreamHC(state, sizeof(*ctx)); + if (ctx==NULL) return 0; /* init failure */ + LZ4HC_init_internal(&ctx->internal_donotuse, (const BYTE*) source); + LZ4_setCompressionLevel(ctx, cLevel); + return LZ4HC_compress_generic(&ctx->internal_donotuse, source, dest, sourceSizePtr, targetDestSize, cLevel, fillOutput); +} + + + +/************************************** +* Streaming Functions +**************************************/ +/* allocation */ +LZ4_streamHC_t* LZ4_createStreamHC(void) +{ + LZ4_streamHC_t* const state = + (LZ4_streamHC_t*)ALLOC_AND_ZERO(sizeof(LZ4_streamHC_t)); + if (state == NULL) return NULL; + LZ4_setCompressionLevel(state, LZ4HC_CLEVEL_DEFAULT); + return state; +} + +int LZ4_freeStreamHC (LZ4_streamHC_t* LZ4_streamHCPtr) +{ + DEBUGLOG(4, "LZ4_freeStreamHC(%p)", LZ4_streamHCPtr); + if (!LZ4_streamHCPtr) return 0; /* support free on NULL */ + FREEMEM(LZ4_streamHCPtr); + return 0; +} + + +LZ4_streamHC_t* LZ4_initStreamHC (void* buffer, size_t size) +{ + LZ4_streamHC_t* const LZ4_streamHCPtr = (LZ4_streamHC_t*)buffer; + /* if compilation fails here, LZ4_STREAMHCSIZE must be increased */ + LZ4_STATIC_ASSERT(sizeof(LZ4HC_CCtx_internal) <= LZ4_STREAMHCSIZE); + DEBUGLOG(4, "LZ4_initStreamHC(%p, %u)", buffer, (unsigned)size); + /* check conditions */ + if (buffer == NULL) return NULL; + if (size < sizeof(LZ4_streamHC_t)) return NULL; + if (!LZ4_isAligned(buffer, LZ4_streamHC_t_alignment())) return NULL; + /* init */ + { LZ4HC_CCtx_internal* const hcstate = &(LZ4_streamHCPtr->internal_donotuse); + MEM_INIT(hcstate, 0, sizeof(*hcstate)); } + LZ4_setCompressionLevel(LZ4_streamHCPtr, LZ4HC_CLEVEL_DEFAULT); + return LZ4_streamHCPtr; +} + +/* just a stub */ +void LZ4_resetStreamHC (LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel) +{ + LZ4_initStreamHC(LZ4_streamHCPtr, sizeof(*LZ4_streamHCPtr)); + LZ4_setCompressionLevel(LZ4_streamHCPtr, compressionLevel); +} + +void LZ4_resetStreamHC_fast (LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel) +{ + DEBUGLOG(4, "LZ4_resetStreamHC_fast(%p, %d)", LZ4_streamHCPtr, compressionLevel); + if (LZ4_streamHCPtr->internal_donotuse.dirty) { + LZ4_initStreamHC(LZ4_streamHCPtr, sizeof(*LZ4_streamHCPtr)); + } else { + /* preserve end - base : can trigger clearTable's threshold */ + LZ4_streamHCPtr->internal_donotuse.end -= (uptrval)LZ4_streamHCPtr->internal_donotuse.base; + LZ4_streamHCPtr->internal_donotuse.base = NULL; + LZ4_streamHCPtr->internal_donotuse.dictCtx = NULL; + } + LZ4_setCompressionLevel(LZ4_streamHCPtr, compressionLevel); +} + +void LZ4_setCompressionLevel(LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel) +{ + DEBUGLOG(5, "LZ4_setCompressionLevel(%p, %d)", LZ4_streamHCPtr, compressionLevel); + if (compressionLevel < 1) compressionLevel = LZ4HC_CLEVEL_DEFAULT; + if (compressionLevel > LZ4HC_CLEVEL_MAX) compressionLevel = LZ4HC_CLEVEL_MAX; + LZ4_streamHCPtr->internal_donotuse.compressionLevel = (short)compressionLevel; +} + +void LZ4_favorDecompressionSpeed(LZ4_streamHC_t* LZ4_streamHCPtr, int favor) +{ + LZ4_streamHCPtr->internal_donotuse.favorDecSpeed = (favor!=0); +} + +/* LZ4_loadDictHC() : + * LZ4_streamHCPtr is presumed properly initialized */ +int LZ4_loadDictHC (LZ4_streamHC_t* LZ4_streamHCPtr, + const char* dictionary, int dictSize) +{ + LZ4HC_CCtx_internal* const ctxPtr = &LZ4_streamHCPtr->internal_donotuse; + DEBUGLOG(4, "LZ4_loadDictHC(ctx:%p, dict:%p, dictSize:%d)", LZ4_streamHCPtr, dictionary, dictSize); + assert(LZ4_streamHCPtr != NULL); + if (dictSize > 64 KB) { + dictionary += (size_t)dictSize - 64 KB; + dictSize = 64 KB; + } + /* need a full initialization, there are bad side-effects when using resetFast() */ + { int const cLevel = ctxPtr->compressionLevel; + LZ4_initStreamHC(LZ4_streamHCPtr, sizeof(*LZ4_streamHCPtr)); + LZ4_setCompressionLevel(LZ4_streamHCPtr, cLevel); + } + LZ4HC_init_internal (ctxPtr, (const BYTE*)dictionary); + ctxPtr->end = (const BYTE*)dictionary + dictSize; + if (dictSize >= 4) LZ4HC_Insert (ctxPtr, ctxPtr->end-3); + return dictSize; +} + +void LZ4_attach_HC_dictionary(LZ4_streamHC_t *working_stream, const LZ4_streamHC_t *dictionary_stream) { + working_stream->internal_donotuse.dictCtx = dictionary_stream != NULL ? &(dictionary_stream->internal_donotuse) : NULL; +} + +/* compression */ + +static void LZ4HC_setExternalDict(LZ4HC_CCtx_internal* ctxPtr, const BYTE* newBlock) +{ + DEBUGLOG(4, "LZ4HC_setExternalDict(%p, %p)", ctxPtr, newBlock); + if (ctxPtr->end >= ctxPtr->base + ctxPtr->dictLimit + 4) + LZ4HC_Insert (ctxPtr, ctxPtr->end-3); /* Referencing remaining dictionary content */ + + /* Only one memory segment for extDict, so any previous extDict is lost at this stage */ + ctxPtr->lowLimit = ctxPtr->dictLimit; + ctxPtr->dictLimit = (U32)(ctxPtr->end - ctxPtr->base); + ctxPtr->dictBase = ctxPtr->base; + ctxPtr->base = newBlock - ctxPtr->dictLimit; + ctxPtr->end = newBlock; + ctxPtr->nextToUpdate = ctxPtr->dictLimit; /* match referencing will resume from there */ + + /* cannot reference an extDict and a dictCtx at the same time */ + ctxPtr->dictCtx = NULL; +} + +static int +LZ4_compressHC_continue_generic (LZ4_streamHC_t* LZ4_streamHCPtr, + const char* src, char* dst, + int* srcSizePtr, int dstCapacity, + limitedOutput_directive limit) +{ + LZ4HC_CCtx_internal* const ctxPtr = &LZ4_streamHCPtr->internal_donotuse; + DEBUGLOG(5, "LZ4_compressHC_continue_generic(ctx=%p, src=%p, srcSize=%d, limit=%d)", + LZ4_streamHCPtr, src, *srcSizePtr, limit); + assert(ctxPtr != NULL); + /* auto-init if forgotten */ + if (ctxPtr->base == NULL) LZ4HC_init_internal (ctxPtr, (const BYTE*) src); + + /* Check overflow */ + if ((size_t)(ctxPtr->end - ctxPtr->base) > 2 GB) { + size_t dictSize = (size_t)(ctxPtr->end - ctxPtr->base) - ctxPtr->dictLimit; + if (dictSize > 64 KB) dictSize = 64 KB; + LZ4_loadDictHC(LZ4_streamHCPtr, (const char*)(ctxPtr->end) - dictSize, (int)dictSize); + } + + /* Check if blocks follow each other */ + if ((const BYTE*)src != ctxPtr->end) + LZ4HC_setExternalDict(ctxPtr, (const BYTE*)src); + + /* Check overlapping input/dictionary space */ + { const BYTE* sourceEnd = (const BYTE*) src + *srcSizePtr; + const BYTE* const dictBegin = ctxPtr->dictBase + ctxPtr->lowLimit; + const BYTE* const dictEnd = ctxPtr->dictBase + ctxPtr->dictLimit; + if ((sourceEnd > dictBegin) && ((const BYTE*)src < dictEnd)) { + if (sourceEnd > dictEnd) sourceEnd = dictEnd; + ctxPtr->lowLimit = (U32)(sourceEnd - ctxPtr->dictBase); + if (ctxPtr->dictLimit - ctxPtr->lowLimit < 4) ctxPtr->lowLimit = ctxPtr->dictLimit; + } } + + return LZ4HC_compress_generic (ctxPtr, src, dst, srcSizePtr, dstCapacity, ctxPtr->compressionLevel, limit); +} + +int LZ4_compress_HC_continue (LZ4_streamHC_t* LZ4_streamHCPtr, const char* src, char* dst, int srcSize, int dstCapacity) +{ + if (dstCapacity < LZ4_compressBound(srcSize)) + return LZ4_compressHC_continue_generic (LZ4_streamHCPtr, src, dst, &srcSize, dstCapacity, limitedOutput); + else + return LZ4_compressHC_continue_generic (LZ4_streamHCPtr, src, dst, &srcSize, dstCapacity, notLimited); +} + +int LZ4_compress_HC_continue_destSize (LZ4_streamHC_t* LZ4_streamHCPtr, const char* src, char* dst, int* srcSizePtr, int targetDestSize) +{ + return LZ4_compressHC_continue_generic(LZ4_streamHCPtr, src, dst, srcSizePtr, targetDestSize, fillOutput); +} + + + +/* LZ4_saveDictHC : + * save history content + * into a user-provided buffer + * which is then used to continue compression + */ +int LZ4_saveDictHC (LZ4_streamHC_t* LZ4_streamHCPtr, char* safeBuffer, int dictSize) +{ + LZ4HC_CCtx_internal* const streamPtr = &LZ4_streamHCPtr->internal_donotuse; + int const prefixSize = (int)(streamPtr->end - (streamPtr->base + streamPtr->dictLimit)); + DEBUGLOG(5, "LZ4_saveDictHC(%p, %p, %d)", LZ4_streamHCPtr, safeBuffer, dictSize); + assert(prefixSize >= 0); + if (dictSize > 64 KB) dictSize = 64 KB; + if (dictSize < 4) dictSize = 0; + if (dictSize > prefixSize) dictSize = prefixSize; + if (safeBuffer == NULL) assert(dictSize == 0); + if (dictSize > 0) + memmove(safeBuffer, streamPtr->end - dictSize, dictSize); + { U32 const endIndex = (U32)(streamPtr->end - streamPtr->base); + streamPtr->end = (const BYTE*)safeBuffer + dictSize; + streamPtr->base = streamPtr->end - endIndex; + streamPtr->dictLimit = endIndex - (U32)dictSize; + streamPtr->lowLimit = endIndex - (U32)dictSize; + if (streamPtr->nextToUpdate < streamPtr->dictLimit) + streamPtr->nextToUpdate = streamPtr->dictLimit; + } + return dictSize; +} + + +/*************************************************** +* Deprecated Functions +***************************************************/ + +/* These functions currently generate deprecation warnings */ + +/* Wrappers for deprecated compression functions */ +int LZ4_compressHC(const char* src, char* dst, int srcSize) { return LZ4_compress_HC (src, dst, srcSize, LZ4_compressBound(srcSize), 0); } +int LZ4_compressHC_limitedOutput(const char* src, char* dst, int srcSize, int maxDstSize) { return LZ4_compress_HC(src, dst, srcSize, maxDstSize, 0); } +int LZ4_compressHC2(const char* src, char* dst, int srcSize, int cLevel) { return LZ4_compress_HC (src, dst, srcSize, LZ4_compressBound(srcSize), cLevel); } +int LZ4_compressHC2_limitedOutput(const char* src, char* dst, int srcSize, int maxDstSize, int cLevel) { return LZ4_compress_HC(src, dst, srcSize, maxDstSize, cLevel); } +int LZ4_compressHC_withStateHC (void* state, const char* src, char* dst, int srcSize) { return LZ4_compress_HC_extStateHC (state, src, dst, srcSize, LZ4_compressBound(srcSize), 0); } +int LZ4_compressHC_limitedOutput_withStateHC (void* state, const char* src, char* dst, int srcSize, int maxDstSize) { return LZ4_compress_HC_extStateHC (state, src, dst, srcSize, maxDstSize, 0); } +int LZ4_compressHC2_withStateHC (void* state, const char* src, char* dst, int srcSize, int cLevel) { return LZ4_compress_HC_extStateHC(state, src, dst, srcSize, LZ4_compressBound(srcSize), cLevel); } +int LZ4_compressHC2_limitedOutput_withStateHC (void* state, const char* src, char* dst, int srcSize, int maxDstSize, int cLevel) { return LZ4_compress_HC_extStateHC(state, src, dst, srcSize, maxDstSize, cLevel); } +int LZ4_compressHC_continue (LZ4_streamHC_t* ctx, const char* src, char* dst, int srcSize) { return LZ4_compress_HC_continue (ctx, src, dst, srcSize, LZ4_compressBound(srcSize)); } +int LZ4_compressHC_limitedOutput_continue (LZ4_streamHC_t* ctx, const char* src, char* dst, int srcSize, int maxDstSize) { return LZ4_compress_HC_continue (ctx, src, dst, srcSize, maxDstSize); } + + +/* Deprecated streaming functions */ +int LZ4_sizeofStreamStateHC(void) { return LZ4_STREAMHCSIZE; } + +/* state is presumed correctly sized, aka >= sizeof(LZ4_streamHC_t) + * @return : 0 on success, !=0 if error */ +int LZ4_resetStreamStateHC(void* state, char* inputBuffer) +{ + LZ4_streamHC_t* const hc4 = LZ4_initStreamHC(state, sizeof(*hc4)); + if (hc4 == NULL) return 1; /* init failed */ + LZ4HC_init_internal (&hc4->internal_donotuse, (const BYTE*)inputBuffer); + return 0; +} + +void* LZ4_createHC (const char* inputBuffer) +{ + LZ4_streamHC_t* const hc4 = LZ4_createStreamHC(); + if (hc4 == NULL) return NULL; /* not enough memory */ + LZ4HC_init_internal (&hc4->internal_donotuse, (const BYTE*)inputBuffer); + return hc4; +} + +int LZ4_freeHC (void* LZ4HC_Data) +{ + if (!LZ4HC_Data) return 0; /* support free on NULL */ + FREEMEM(LZ4HC_Data); + return 0; +} + +int LZ4_compressHC2_continue (void* LZ4HC_Data, const char* src, char* dst, int srcSize, int cLevel) +{ + return LZ4HC_compress_generic (&((LZ4_streamHC_t*)LZ4HC_Data)->internal_donotuse, src, dst, &srcSize, 0, cLevel, notLimited); +} + +int LZ4_compressHC2_limitedOutput_continue (void* LZ4HC_Data, const char* src, char* dst, int srcSize, int dstCapacity, int cLevel) +{ + return LZ4HC_compress_generic (&((LZ4_streamHC_t*)LZ4HC_Data)->internal_donotuse, src, dst, &srcSize, dstCapacity, cLevel, limitedOutput); +} + +char* LZ4_slideInputBufferHC(void* LZ4HC_Data) +{ + LZ4_streamHC_t *ctx = (LZ4_streamHC_t*)LZ4HC_Data; + const BYTE *bufferStart = ctx->internal_donotuse.base + ctx->internal_donotuse.lowLimit; + LZ4_resetStreamHC_fast(ctx, ctx->internal_donotuse.compressionLevel); + /* avoid const char * -> char * conversion warning :( */ + return (char *)(uptrval)bufferStart; +} + + +/* ================================================ + * LZ4 Optimal parser (levels [LZ4HC_CLEVEL_OPT_MIN - LZ4HC_CLEVEL_MAX]) + * ===============================================*/ +typedef struct { + int price; + int off; + int mlen; + int litlen; +} LZ4HC_optimal_t; + +/* price in bytes */ +LZ4_FORCE_INLINE int LZ4HC_literalsPrice(int const litlen) +{ + int price = litlen; + assert(litlen >= 0); + if (litlen >= (int)RUN_MASK) + price += 1 + ((litlen-(int)RUN_MASK) / 255); + return price; +} + + +/* requires mlen >= MINMATCH */ +LZ4_FORCE_INLINE int LZ4HC_sequencePrice(int litlen, int mlen) +{ + int price = 1 + 2 ; /* token + 16-bit offset */ + assert(litlen >= 0); + assert(mlen >= MINMATCH); + + price += LZ4HC_literalsPrice(litlen); + + if (mlen >= (int)(ML_MASK+MINMATCH)) + price += 1 + ((mlen-(int)(ML_MASK+MINMATCH)) / 255); + + return price; +} + + +typedef struct { + int off; + int len; +} LZ4HC_match_t; + +LZ4_FORCE_INLINE LZ4HC_match_t +LZ4HC_FindLongerMatch(LZ4HC_CCtx_internal* const ctx, + const BYTE* ip, const BYTE* const iHighLimit, + int minLen, int nbSearches, + const dictCtx_directive dict, + const HCfavor_e favorDecSpeed) +{ + LZ4HC_match_t match = { 0 , 0 }; + const BYTE* matchPtr = NULL; + /* note : LZ4HC_InsertAndGetWiderMatch() is able to modify the starting position of a match (*startpos), + * but this won't be the case here, as we define iLowLimit==ip, + * so LZ4HC_InsertAndGetWiderMatch() won't be allowed to search past ip */ + int matchLength = LZ4HC_InsertAndGetWiderMatch(ctx, ip, ip, iHighLimit, minLen, &matchPtr, &ip, nbSearches, 1 /*patternAnalysis*/, 1 /*chainSwap*/, dict, favorDecSpeed); + if (matchLength <= minLen) return match; + if (favorDecSpeed) { + if ((matchLength>18) & (matchLength<=36)) matchLength=18; /* favor shortcut */ + } + match.len = matchLength; + match.off = (int)(ip-matchPtr); + return match; +} + + +static int LZ4HC_compress_optimal ( LZ4HC_CCtx_internal* ctx, + const char* const source, + char* dst, + int* srcSizePtr, + int dstCapacity, + int const nbSearches, + size_t sufficient_len, + const limitedOutput_directive limit, + int const fullUpdate, + const dictCtx_directive dict, + const HCfavor_e favorDecSpeed) +{ + int retval = 0; +#define TRAILING_LITERALS 3 +#ifdef LZ4HC_HEAPMODE + LZ4HC_optimal_t* const opt = (LZ4HC_optimal_t*)ALLOC(sizeof(LZ4HC_optimal_t) * (LZ4_OPT_NUM + TRAILING_LITERALS)); +#else + LZ4HC_optimal_t opt[LZ4_OPT_NUM + TRAILING_LITERALS]; /* ~64 KB, which is a bit large for stack... */ +#endif + + const BYTE* ip = (const BYTE*) source; + const BYTE* anchor = ip; + const BYTE* const iend = ip + *srcSizePtr; + const BYTE* const mflimit = iend - MFLIMIT; + const BYTE* const matchlimit = iend - LASTLITERALS; + BYTE* op = (BYTE*) dst; + BYTE* opSaved = (BYTE*) dst; + BYTE* oend = op + dstCapacity; + int ovml = MINMATCH; /* overflow - last sequence */ + const BYTE* ovref = NULL; + + /* init */ +#ifdef LZ4HC_HEAPMODE + if (opt == NULL) goto _return_label; +#endif + DEBUGLOG(5, "LZ4HC_compress_optimal(dst=%p, dstCapa=%u)", dst, (unsigned)dstCapacity); + *srcSizePtr = 0; + if (limit == fillOutput) oend -= LASTLITERALS; /* Hack for support LZ4 format restriction */ + if (sufficient_len >= LZ4_OPT_NUM) sufficient_len = LZ4_OPT_NUM-1; + + /* Main Loop */ + while (ip <= mflimit) { + int const llen = (int)(ip - anchor); + int best_mlen, best_off; + int cur, last_match_pos = 0; + + LZ4HC_match_t const firstMatch = LZ4HC_FindLongerMatch(ctx, ip, matchlimit, MINMATCH-1, nbSearches, dict, favorDecSpeed); + if (firstMatch.len==0) { ip++; continue; } + + if ((size_t)firstMatch.len > sufficient_len) { + /* good enough solution : immediate encoding */ + int const firstML = firstMatch.len; + const BYTE* const matchPos = ip - firstMatch.off; + opSaved = op; + if ( LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), firstML, matchPos, limit, oend) ) { /* updates ip, op and anchor */ + ovml = firstML; + ovref = matchPos; + goto _dest_overflow; + } + continue; + } + + /* set prices for first positions (literals) */ + { int rPos; + for (rPos = 0 ; rPos < MINMATCH ; rPos++) { + int const cost = LZ4HC_literalsPrice(llen + rPos); + opt[rPos].mlen = 1; + opt[rPos].off = 0; + opt[rPos].litlen = llen + rPos; + opt[rPos].price = cost; + DEBUGLOG(7, "rPos:%3i => price:%3i (litlen=%i) -- initial setup", + rPos, cost, opt[rPos].litlen); + } } + /* set prices using initial match */ + { int mlen = MINMATCH; + int const matchML = firstMatch.len; /* necessarily < sufficient_len < LZ4_OPT_NUM */ + int const offset = firstMatch.off; + assert(matchML < LZ4_OPT_NUM); + for ( ; mlen <= matchML ; mlen++) { + int const cost = LZ4HC_sequencePrice(llen, mlen); + opt[mlen].mlen = mlen; + opt[mlen].off = offset; + opt[mlen].litlen = llen; + opt[mlen].price = cost; + DEBUGLOG(7, "rPos:%3i => price:%3i (matchlen=%i) -- initial setup", + mlen, cost, mlen); + } } + last_match_pos = firstMatch.len; + { int addLit; + for (addLit = 1; addLit <= TRAILING_LITERALS; addLit ++) { + opt[last_match_pos+addLit].mlen = 1; /* literal */ + opt[last_match_pos+addLit].off = 0; + opt[last_match_pos+addLit].litlen = addLit; + opt[last_match_pos+addLit].price = opt[last_match_pos].price + LZ4HC_literalsPrice(addLit); + DEBUGLOG(7, "rPos:%3i => price:%3i (litlen=%i) -- initial setup", + last_match_pos+addLit, opt[last_match_pos+addLit].price, addLit); + } } + + /* check further positions */ + for (cur = 1; cur < last_match_pos; cur++) { + const BYTE* const curPtr = ip + cur; + LZ4HC_match_t newMatch; + + if (curPtr > mflimit) break; + DEBUGLOG(7, "rPos:%u[%u] vs [%u]%u", + cur, opt[cur].price, opt[cur+1].price, cur+1); + if (fullUpdate) { + /* not useful to search here if next position has same (or lower) cost */ + if ( (opt[cur+1].price <= opt[cur].price) + /* in some cases, next position has same cost, but cost rises sharply after, so a small match would still be beneficial */ + && (opt[cur+MINMATCH].price < opt[cur].price + 3/*min seq price*/) ) + continue; + } else { + /* not useful to search here if next position has same (or lower) cost */ + if (opt[cur+1].price <= opt[cur].price) continue; + } + + DEBUGLOG(7, "search at rPos:%u", cur); + if (fullUpdate) + newMatch = LZ4HC_FindLongerMatch(ctx, curPtr, matchlimit, MINMATCH-1, nbSearches, dict, favorDecSpeed); + else + /* only test matches of minimum length; slightly faster, but misses a few bytes */ + newMatch = LZ4HC_FindLongerMatch(ctx, curPtr, matchlimit, last_match_pos - cur, nbSearches, dict, favorDecSpeed); + if (!newMatch.len) continue; + + if ( ((size_t)newMatch.len > sufficient_len) + || (newMatch.len + cur >= LZ4_OPT_NUM) ) { + /* immediate encoding */ + best_mlen = newMatch.len; + best_off = newMatch.off; + last_match_pos = cur + 1; + goto encode; + } + + /* before match : set price with literals at beginning */ + { int const baseLitlen = opt[cur].litlen; + int litlen; + for (litlen = 1; litlen < MINMATCH; litlen++) { + int const price = opt[cur].price - LZ4HC_literalsPrice(baseLitlen) + LZ4HC_literalsPrice(baseLitlen+litlen); + int const pos = cur + litlen; + if (price < opt[pos].price) { + opt[pos].mlen = 1; /* literal */ + opt[pos].off = 0; + opt[pos].litlen = baseLitlen+litlen; + opt[pos].price = price; + DEBUGLOG(7, "rPos:%3i => price:%3i (litlen=%i)", + pos, price, opt[pos].litlen); + } } } + + /* set prices using match at position = cur */ + { int const matchML = newMatch.len; + int ml = MINMATCH; + + assert(cur + newMatch.len < LZ4_OPT_NUM); + for ( ; ml <= matchML ; ml++) { + int const pos = cur + ml; + int const offset = newMatch.off; + int price; + int ll; + DEBUGLOG(7, "testing price rPos %i (last_match_pos=%i)", + pos, last_match_pos); + if (opt[cur].mlen == 1) { + ll = opt[cur].litlen; + price = ((cur > ll) ? opt[cur - ll].price : 0) + + LZ4HC_sequencePrice(ll, ml); + } else { + ll = 0; + price = opt[cur].price + LZ4HC_sequencePrice(0, ml); + } + + assert((U32)favorDecSpeed <= 1); + if (pos > last_match_pos+TRAILING_LITERALS + || price <= opt[pos].price - (int)favorDecSpeed) { + DEBUGLOG(7, "rPos:%3i => price:%3i (matchlen=%i)", + pos, price, ml); + assert(pos < LZ4_OPT_NUM); + if ( (ml == matchML) /* last pos of last match */ + && (last_match_pos < pos) ) + last_match_pos = pos; + opt[pos].mlen = ml; + opt[pos].off = offset; + opt[pos].litlen = ll; + opt[pos].price = price; + } } } + /* complete following positions with literals */ + { int addLit; + for (addLit = 1; addLit <= TRAILING_LITERALS; addLit ++) { + opt[last_match_pos+addLit].mlen = 1; /* literal */ + opt[last_match_pos+addLit].off = 0; + opt[last_match_pos+addLit].litlen = addLit; + opt[last_match_pos+addLit].price = opt[last_match_pos].price + LZ4HC_literalsPrice(addLit); + DEBUGLOG(7, "rPos:%3i => price:%3i (litlen=%i)", last_match_pos+addLit, opt[last_match_pos+addLit].price, addLit); + } } + } /* for (cur = 1; cur <= last_match_pos; cur++) */ + + assert(last_match_pos < LZ4_OPT_NUM + TRAILING_LITERALS); + best_mlen = opt[last_match_pos].mlen; + best_off = opt[last_match_pos].off; + cur = last_match_pos - best_mlen; + +encode: /* cur, last_match_pos, best_mlen, best_off must be set */ + assert(cur < LZ4_OPT_NUM); + assert(last_match_pos >= 1); /* == 1 when only one candidate */ + DEBUGLOG(6, "reverse traversal, looking for shortest path (last_match_pos=%i)", last_match_pos); + { int candidate_pos = cur; + int selected_matchLength = best_mlen; + int selected_offset = best_off; + while (1) { /* from end to beginning */ + int const next_matchLength = opt[candidate_pos].mlen; /* can be 1, means literal */ + int const next_offset = opt[candidate_pos].off; + DEBUGLOG(7, "pos %i: sequence length %i", candidate_pos, selected_matchLength); + opt[candidate_pos].mlen = selected_matchLength; + opt[candidate_pos].off = selected_offset; + selected_matchLength = next_matchLength; + selected_offset = next_offset; + if (next_matchLength > candidate_pos) break; /* last match elected, first match to encode */ + assert(next_matchLength > 0); /* can be 1, means literal */ + candidate_pos -= next_matchLength; + } } + + /* encode all recorded sequences in order */ + { int rPos = 0; /* relative position (to ip) */ + while (rPos < last_match_pos) { + int const ml = opt[rPos].mlen; + int const offset = opt[rPos].off; + if (ml == 1) { ip++; rPos++; continue; } /* literal; note: can end up with several literals, in which case, skip them */ + rPos += ml; + assert(ml >= MINMATCH); + assert((offset >= 1) && (offset <= LZ4_DISTANCE_MAX)); + opSaved = op; + if ( LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ip - offset, limit, oend) ) { /* updates ip, op and anchor */ + ovml = ml; + ovref = ip - offset; + goto _dest_overflow; + } } } + } /* while (ip <= mflimit) */ + +_last_literals: + /* Encode Last Literals */ + { size_t lastRunSize = (size_t)(iend - anchor); /* literals */ + size_t llAdd = (lastRunSize + 255 - RUN_MASK) / 255; + size_t const totalSize = 1 + llAdd + lastRunSize; + if (limit == fillOutput) oend += LASTLITERALS; /* restore correct value */ + if (limit && (op + totalSize > oend)) { + if (limit == limitedOutput) { /* Check output limit */ + retval = 0; + goto _return_label; + } + /* adapt lastRunSize to fill 'dst' */ + lastRunSize = (size_t)(oend - op) - 1 /*token*/; + llAdd = (lastRunSize + 256 - RUN_MASK) / 256; + lastRunSize -= llAdd; + } + DEBUGLOG(6, "Final literal run : %i literals", (int)lastRunSize); + ip = anchor + lastRunSize; /* can be != iend if limit==fillOutput */ + + if (lastRunSize >= RUN_MASK) { + size_t accumulator = lastRunSize - RUN_MASK; + *op++ = (RUN_MASK << ML_BITS); + for(; accumulator >= 255 ; accumulator -= 255) *op++ = 255; + *op++ = (BYTE) accumulator; + } else { + *op++ = (BYTE)(lastRunSize << ML_BITS); + } + memcpy(op, anchor, lastRunSize); + op += lastRunSize; + } + + /* End */ + *srcSizePtr = (int) (((const char*)ip) - source); + retval = (int) ((char*)op-dst); + goto _return_label; + +_dest_overflow: +if (limit == fillOutput) { + /* Assumption : ip, anchor, ovml and ovref must be set correctly */ + size_t const ll = (size_t)(ip - anchor); + size_t const ll_addbytes = (ll + 240) / 255; + size_t const ll_totalCost = 1 + ll_addbytes + ll; + BYTE* const maxLitPos = oend - 3; /* 2 for offset, 1 for token */ + DEBUGLOG(6, "Last sequence overflowing (only %i bytes remaining)", (int)(oend-1-opSaved)); + op = opSaved; /* restore correct out pointer */ + if (op + ll_totalCost <= maxLitPos) { + /* ll validated; now adjust match length */ + size_t const bytesLeftForMl = (size_t)(maxLitPos - (op+ll_totalCost)); + size_t const maxMlSize = MINMATCH + (ML_MASK-1) + (bytesLeftForMl * 255); + assert(maxMlSize < INT_MAX); assert(ovml >= 0); + if ((size_t)ovml > maxMlSize) ovml = (int)maxMlSize; + if ((oend + LASTLITERALS) - (op + ll_totalCost + 2) - 1 + ovml >= MFLIMIT) { + DEBUGLOG(6, "Space to end : %i + ml (%i)", (int)((oend + LASTLITERALS) - (op + ll_totalCost + 2) - 1), ovml); + DEBUGLOG(6, "Before : ip = %p, anchor = %p", ip, anchor); + LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ovml, ovref, notLimited, oend); + DEBUGLOG(6, "After : ip = %p, anchor = %p", ip, anchor); + } } + goto _last_literals; +} +_return_label: +#ifdef LZ4HC_HEAPMODE + FREEMEM(opt); +#endif + return retval; +} diff --git a/fsbl/lib/lz4/lz4hc.h b/fsbl/lib/lz4/lz4hc.h new file mode 100644 index 000000000..3d441fb6f --- /dev/null +++ b/fsbl/lib/lz4/lz4hc.h @@ -0,0 +1,413 @@ +/* + LZ4 HC - High Compression Mode of LZ4 + Header File + Copyright (C) 2011-2017, Yann Collet. + BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + You can contact the author at : + - LZ4 source repository : https://github.com/lz4/lz4 + - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c +*/ +#ifndef LZ4_HC_H_19834876238432 +#define LZ4_HC_H_19834876238432 + +#if defined (__cplusplus) +extern "C" { +#endif + +/* --- Dependency --- */ +/* note : lz4hc requires lz4.h/lz4.c for compilation */ +#include "lz4.h" /* stddef, LZ4LIB_API, LZ4_DEPRECATED */ + + +/* --- Useful constants --- */ +#define LZ4HC_CLEVEL_MIN 3 +#define LZ4HC_CLEVEL_DEFAULT 9 +#define LZ4HC_CLEVEL_OPT_MIN 10 +#define LZ4HC_CLEVEL_MAX 12 + + +/*-************************************ + * Block Compression + **************************************/ +/*! LZ4_compress_HC() : + * Compress data from `src` into `dst`, using the powerful but slower "HC" algorithm. + * `dst` must be already allocated. + * Compression is guaranteed to succeed if `dstCapacity >= LZ4_compressBound(srcSize)` (see "lz4.h") + * Max supported `srcSize` value is LZ4_MAX_INPUT_SIZE (see "lz4.h") + * `compressionLevel` : any value between 1 and LZ4HC_CLEVEL_MAX will work. + * Values > LZ4HC_CLEVEL_MAX behave the same as LZ4HC_CLEVEL_MAX. + * @return : the number of bytes written into 'dst' + * or 0 if compression fails. + */ +LZ4LIB_API int LZ4_compress_HC (const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel); + + +/* Note : + * Decompression functions are provided within "lz4.h" (BSD license) + */ + + +/*! LZ4_compress_HC_extStateHC() : + * Same as LZ4_compress_HC(), but using an externally allocated memory segment for `state`. + * `state` size is provided by LZ4_sizeofStateHC(). + * Memory segment must be aligned on 8-bytes boundaries (which a normal malloc() should do properly). + */ +LZ4LIB_API int LZ4_sizeofStateHC(void); +LZ4LIB_API int LZ4_compress_HC_extStateHC(void* stateHC, const char* src, char* dst, int srcSize, int maxDstSize, int compressionLevel); + + +/*! LZ4_compress_HC_destSize() : v1.9.0+ + * Will compress as much data as possible from `src` + * to fit into `targetDstSize` budget. + * Result is provided in 2 parts : + * @return : the number of bytes written into 'dst' (necessarily <= targetDstSize) + * or 0 if compression fails. + * `srcSizePtr` : on success, *srcSizePtr is updated to indicate how much bytes were read from `src` + */ +LZ4LIB_API int LZ4_compress_HC_destSize(void* stateHC, + const char* src, char* dst, + int* srcSizePtr, int targetDstSize, + int compressionLevel); + + +/*-************************************ + * Streaming Compression + * Bufferless synchronous API + **************************************/ + typedef union LZ4_streamHC_u LZ4_streamHC_t; /* incomplete type (defined later) */ + +/*! LZ4_createStreamHC() and LZ4_freeStreamHC() : + * These functions create and release memory for LZ4 HC streaming state. + * Newly created states are automatically initialized. + * A same state can be used multiple times consecutively, + * starting with LZ4_resetStreamHC_fast() to start a new stream of blocks. + */ +LZ4LIB_API LZ4_streamHC_t* LZ4_createStreamHC(void); +LZ4LIB_API int LZ4_freeStreamHC (LZ4_streamHC_t* streamHCPtr); + +/* + These functions compress data in successive blocks of any size, + using previous blocks as dictionary, to improve compression ratio. + One key assumption is that previous blocks (up to 64 KB) remain read-accessible while compressing next blocks. + There is an exception for ring buffers, which can be smaller than 64 KB. + Ring-buffer scenario is automatically detected and handled within LZ4_compress_HC_continue(). + + Before starting compression, state must be allocated and properly initialized. + LZ4_createStreamHC() does both, though compression level is set to LZ4HC_CLEVEL_DEFAULT. + + Selecting the compression level can be done with LZ4_resetStreamHC_fast() (starts a new stream) + or LZ4_setCompressionLevel() (anytime, between blocks in the same stream) (experimental). + LZ4_resetStreamHC_fast() only works on states which have been properly initialized at least once, + which is automatically the case when state is created using LZ4_createStreamHC(). + + After reset, a first "fictional block" can be designated as initial dictionary, + using LZ4_loadDictHC() (Optional). + + Invoke LZ4_compress_HC_continue() to compress each successive block. + The number of blocks is unlimited. + Previous input blocks, including initial dictionary when present, + must remain accessible and unmodified during compression. + + It's allowed to update compression level anytime between blocks, + using LZ4_setCompressionLevel() (experimental). + + 'dst' buffer should be sized to handle worst case scenarios + (see LZ4_compressBound(), it ensures compression success). + In case of failure, the API does not guarantee recovery, + so the state _must_ be reset. + To ensure compression success + whenever `dst` buffer size cannot be made >= LZ4_compressBound(), + consider using LZ4_compress_HC_continue_destSize(). + + Whenever previous input blocks can't be preserved unmodified in-place during compression of next blocks, + it's possible to copy the last blocks into a more stable memory space, using LZ4_saveDictHC(). + Return value of LZ4_saveDictHC() is the size of dictionary effectively saved into 'safeBuffer' (<= 64 KB) + + After completing a streaming compression, + it's possible to start a new stream of blocks, using the same LZ4_streamHC_t state, + just by resetting it, using LZ4_resetStreamHC_fast(). +*/ + +LZ4LIB_API void LZ4_resetStreamHC_fast(LZ4_streamHC_t* streamHCPtr, int compressionLevel); /* v1.9.0+ */ +LZ4LIB_API int LZ4_loadDictHC (LZ4_streamHC_t* streamHCPtr, const char* dictionary, int dictSize); + +LZ4LIB_API int LZ4_compress_HC_continue (LZ4_streamHC_t* streamHCPtr, + const char* src, char* dst, + int srcSize, int maxDstSize); + +/*! LZ4_compress_HC_continue_destSize() : v1.9.0+ + * Similar to LZ4_compress_HC_continue(), + * but will read as much data as possible from `src` + * to fit into `targetDstSize` budget. + * Result is provided into 2 parts : + * @return : the number of bytes written into 'dst' (necessarily <= targetDstSize) + * or 0 if compression fails. + * `srcSizePtr` : on success, *srcSizePtr will be updated to indicate how much bytes were read from `src`. + * Note that this function may not consume the entire input. + */ +LZ4LIB_API int LZ4_compress_HC_continue_destSize(LZ4_streamHC_t* LZ4_streamHCPtr, + const char* src, char* dst, + int* srcSizePtr, int targetDstSize); + +LZ4LIB_API int LZ4_saveDictHC (LZ4_streamHC_t* streamHCPtr, char* safeBuffer, int maxDictSize); + + + +/*^********************************************** + * !!!!!! STATIC LINKING ONLY !!!!!! + ***********************************************/ + +/*-****************************************************************** + * PRIVATE DEFINITIONS : + * Do not use these definitions directly. + * They are merely exposed to allow static allocation of `LZ4_streamHC_t`. + * Declare an `LZ4_streamHC_t` directly, rather than any type below. + * Even then, only do so in the context of static linking, as definitions may change between versions. + ********************************************************************/ + +#define LZ4HC_DICTIONARY_LOGSIZE 16 +#define LZ4HC_MAXD (1<= LZ4HC_CLEVEL_OPT_MIN. + */ +LZ4LIB_STATIC_API void LZ4_favorDecompressionSpeed( + LZ4_streamHC_t* LZ4_streamHCPtr, int favor); + +/*! LZ4_resetStreamHC_fast() : v1.9.0+ + * When an LZ4_streamHC_t is known to be in a internally coherent state, + * it can often be prepared for a new compression with almost no work, only + * sometimes falling back to the full, expensive reset that is always required + * when the stream is in an indeterminate state (i.e., the reset performed by + * LZ4_resetStreamHC()). + * + * LZ4_streamHCs are guaranteed to be in a valid state when: + * - returned from LZ4_createStreamHC() + * - reset by LZ4_resetStreamHC() + * - memset(stream, 0, sizeof(LZ4_streamHC_t)) + * - the stream was in a valid state and was reset by LZ4_resetStreamHC_fast() + * - the stream was in a valid state and was then used in any compression call + * that returned success + * - the stream was in an indeterminate state and was used in a compression + * call that fully reset the state (LZ4_compress_HC_extStateHC()) and that + * returned success + * + * Note: + * A stream that was last used in a compression call that returned an error + * may be passed to this function. However, it will be fully reset, which will + * clear any existing history and settings from the context. + */ +LZ4LIB_STATIC_API void LZ4_resetStreamHC_fast( + LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel); + +/*! LZ4_compress_HC_extStateHC_fastReset() : + * A variant of LZ4_compress_HC_extStateHC(). + * + * Using this variant avoids an expensive initialization step. It is only safe + * to call if the state buffer is known to be correctly initialized already + * (see above comment on LZ4_resetStreamHC_fast() for a definition of + * "correctly initialized"). From a high level, the difference is that this + * function initializes the provided state with a call to + * LZ4_resetStreamHC_fast() while LZ4_compress_HC_extStateHC() starts with a + * call to LZ4_resetStreamHC(). + */ +LZ4LIB_STATIC_API int LZ4_compress_HC_extStateHC_fastReset ( + void* state, + const char* src, char* dst, + int srcSize, int dstCapacity, + int compressionLevel); + +/*! LZ4_attach_HC_dictionary() : + * This is an experimental API that allows for the efficient use of a + * static dictionary many times. + * + * Rather than re-loading the dictionary buffer into a working context before + * each compression, or copying a pre-loaded dictionary's LZ4_streamHC_t into a + * working LZ4_streamHC_t, this function introduces a no-copy setup mechanism, + * in which the working stream references the dictionary stream in-place. + * + * Several assumptions are made about the state of the dictionary stream. + * Currently, only streams which have been prepared by LZ4_loadDictHC() should + * be expected to work. + * + * Alternatively, the provided dictionary stream pointer may be NULL, in which + * case any existing dictionary stream is unset. + * + * A dictionary should only be attached to a stream without any history (i.e., + * a stream that has just been reset). + * + * The dictionary will remain attached to the working stream only for the + * current stream session. Calls to LZ4_resetStreamHC(_fast) will remove the + * dictionary context association from the working stream. The dictionary + * stream (and source buffer) must remain in-place / accessible / unchanged + * through the lifetime of the stream session. + */ +LZ4LIB_STATIC_API void LZ4_attach_HC_dictionary( + LZ4_streamHC_t *working_stream, + const LZ4_streamHC_t *dictionary_stream); + +#if defined (__cplusplus) +} +#endif + +#endif /* LZ4_HC_SLO_098092834 */ +#endif /* LZ4_HC_STATIC_LINKING_ONLY */ diff --git a/fsbl/lib/lz4/xxhash.c b/fsbl/lib/lz4/xxhash.c new file mode 100644 index 000000000..b987973b9 --- /dev/null +++ b/fsbl/lib/lz4/xxhash.c @@ -0,0 +1,1028 @@ +/* +* xxHash - Fast Hash algorithm +* Copyright (C) 2012-2016, Yann Collet +* +* BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are +* met: +* +* * Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above +* copyright notice, this list of conditions and the following disclaimer +* in the documentation and/or other materials provided with the +* distribution. +* +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +* You can contact the author at : +* - xxHash homepage: http://www.xxhash.com +* - xxHash source repository : https://github.com/Cyan4973/xxHash +*/ + + +/* ************************************* +* Tuning parameters +***************************************/ +/*!XXH_FORCE_MEMORY_ACCESS : + * By default, access to unaligned memory is controlled by `memcpy()`, which is safe and portable. + * Unfortunately, on some target/compiler combinations, the generated assembly is sub-optimal. + * The below switch allow to select different access method for improved performance. + * Method 0 (default) : use `memcpy()`. Safe and portable. + * Method 1 : `__packed` statement. It depends on compiler extension (ie, not portable). + * This method is safe if your compiler supports it, and *generally* as fast or faster than `memcpy`. + * Method 2 : direct access. This method doesn't depend on compiler but violate C standard. + * It can generate buggy code on targets which do not support unaligned memory accesses. + * But in some circumstances, it's the only known way to get the most performance (ie GCC + ARMv6) + * See http://stackoverflow.com/a/32095106/646947 for details. + * Prefer these methods in priority order (0 > 1 > 2) + */ +#ifndef XXH_FORCE_MEMORY_ACCESS /* can be defined externally, on command line for example */ +# if defined(__GNUC__) && ( defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) \ + || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) \ + || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) ) +# define XXH_FORCE_MEMORY_ACCESS 2 +# elif (defined(__INTEL_COMPILER) && !defined(_WIN32)) || \ + (defined(__GNUC__) && ( defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) \ + || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) \ + || defined(__ARM_ARCH_7S__) )) +# define XXH_FORCE_MEMORY_ACCESS 1 +# endif +#endif + +/*!XXH_ACCEPT_NULL_INPUT_POINTER : + * If input pointer is NULL, xxHash default behavior is to dereference it, triggering a segfault. + * When this macro is enabled, xxHash actively checks input for null pointer. + * It it is, result for null input pointers is the same as a null-length input. + */ +#ifndef XXH_ACCEPT_NULL_INPUT_POINTER /* can be defined externally */ +# define XXH_ACCEPT_NULL_INPUT_POINTER 0 +#endif + +/*!XXH_FORCE_NATIVE_FORMAT : + * By default, xxHash library provides endian-independent Hash values, based on little-endian convention. + * Results are therefore identical for little-endian and big-endian CPU. + * This comes at a performance cost for big-endian CPU, since some swapping is required to emulate little-endian format. + * Should endian-independence be of no importance for your application, you may set the #define below to 1, + * to improve speed for Big-endian CPU. + * This option has no impact on Little_Endian CPU. + */ +#ifndef XXH_FORCE_NATIVE_FORMAT /* can be defined externally */ +# define XXH_FORCE_NATIVE_FORMAT 0 +#endif + +/*!XXH_FORCE_ALIGN_CHECK : + * This is a minor performance trick, only useful with lots of very small keys. + * It means : check for aligned/unaligned input. + * The check costs one initial branch per hash; + * set it to 0 when the input is guaranteed to be aligned, + * or when alignment doesn't matter for performance. + */ +#ifndef XXH_FORCE_ALIGN_CHECK /* can be defined externally */ +# if defined(__i386) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64) +# define XXH_FORCE_ALIGN_CHECK 0 +# else +# define XXH_FORCE_ALIGN_CHECK 1 +# endif +#endif + + +/* ************************************* +* Includes & Memory related functions +***************************************/ +/*! Modify the local functions below should you wish to use some other memory routines +* for malloc(), free() */ +#include +static void* XXH_malloc(size_t s) { return malloc(s); } +static void XXH_free (void* p) { free(p); } +/*! and for memcpy() */ +#include +static void* XXH_memcpy(void* dest, const void* src, size_t size) { return memcpy(dest,src,size); } + +#include /* assert */ + +#define XXH_STATIC_LINKING_ONLY +#include "xxhash.h" + + +/* ************************************* +* Compiler Specific Options +***************************************/ +#ifdef _MSC_VER /* Visual Studio */ +# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */ +# define FORCE_INLINE static __forceinline +#else +# if defined (__cplusplus) || defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */ +# ifdef __GNUC__ +# define FORCE_INLINE static inline __attribute__((always_inline)) +# else +# define FORCE_INLINE static inline +# endif +# else +# define FORCE_INLINE static +# endif /* __STDC_VERSION__ */ +#endif + + +/* ************************************* +* Basic Types +***************************************/ +#ifndef MEM_MODULE +# if !defined (__VMS) \ + && (defined (__cplusplus) \ + || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) ) +# include + typedef uint8_t BYTE; + typedef uint16_t U16; + typedef uint32_t U32; +# else + typedef unsigned char BYTE; + typedef unsigned short U16; + typedef unsigned int U32; +# endif +#endif + +#if (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==2)) + +/* Force direct memory access. Only works on CPU which support unaligned memory access in hardware */ +static U32 XXH_read32(const void* memPtr) { return *(const U32*) memPtr; } + +#elif (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==1)) + +/* __pack instructions are safer, but compiler specific, hence potentially problematic for some compilers */ +/* currently only defined for gcc and icc */ +typedef union { U32 u32; } __attribute__((packed)) unalign; +static U32 XXH_read32(const void* ptr) { return ((const unalign*)ptr)->u32; } + +#else + +/* portable and safe solution. Generally efficient. + * see : http://stackoverflow.com/a/32095106/646947 + */ +static U32 XXH_read32(const void* memPtr) +{ + U32 val; + memcpy(&val, memPtr, sizeof(val)); + return val; +} + +#endif /* XXH_FORCE_DIRECT_MEMORY_ACCESS */ + + +/* **************************************** +* Compiler-specific Functions and Macros +******************************************/ +#define XXH_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) + +/* Note : although _rotl exists for minGW (GCC under windows), performance seems poor */ +#if defined(_MSC_VER) +# define XXH_rotl32(x,r) _rotl(x,r) +# define XXH_rotl64(x,r) _rotl64(x,r) +#else +# define XXH_rotl32(x,r) ((x << r) | (x >> (32 - r))) +# define XXH_rotl64(x,r) ((x << r) | (x >> (64 - r))) +#endif + +#if defined(_MSC_VER) /* Visual Studio */ +# define XXH_swap32 _byteswap_ulong +#elif XXH_GCC_VERSION >= 403 +# define XXH_swap32 __builtin_bswap32 +#else +static U32 XXH_swap32 (U32 x) +{ + return ((x << 24) & 0xff000000 ) | + ((x << 8) & 0x00ff0000 ) | + ((x >> 8) & 0x0000ff00 ) | + ((x >> 24) & 0x000000ff ); +} +#endif + + +/* ************************************* +* Architecture Macros +***************************************/ +typedef enum { XXH_bigEndian=0, XXH_littleEndian=1 } XXH_endianess; + +/* XXH_CPU_LITTLE_ENDIAN can be defined externally, for example on the compiler command line */ +#ifndef XXH_CPU_LITTLE_ENDIAN +static int XXH_isLittleEndian(void) +{ + const union { U32 u; BYTE c[4]; } one = { 1 }; /* don't use static : performance detrimental */ + return one.c[0]; +} +# define XXH_CPU_LITTLE_ENDIAN XXH_isLittleEndian() +#endif + + +/* *************************** +* Memory reads +*****************************/ +typedef enum { XXH_aligned, XXH_unaligned } XXH_alignment; + +FORCE_INLINE U32 XXH_readLE32_align(const void* ptr, XXH_endianess endian, XXH_alignment align) +{ + if (align==XXH_unaligned) + return endian==XXH_littleEndian ? XXH_read32(ptr) : XXH_swap32(XXH_read32(ptr)); + else + return endian==XXH_littleEndian ? *(const U32*)ptr : XXH_swap32(*(const U32*)ptr); +} + +FORCE_INLINE U32 XXH_readLE32(const void* ptr, XXH_endianess endian) +{ + return XXH_readLE32_align(ptr, endian, XXH_unaligned); +} + +static U32 XXH_readBE32(const void* ptr) +{ + return XXH_CPU_LITTLE_ENDIAN ? XXH_swap32(XXH_read32(ptr)) : XXH_read32(ptr); +} + + +/* ************************************* +* Macros +***************************************/ +#define XXH_STATIC_ASSERT(c) { enum { XXH_sa = 1/(int)(!!(c)) }; } /* use after variable declarations */ +XXH_PUBLIC_API unsigned XXH_versionNumber (void) { return XXH_VERSION_NUMBER; } + + +/* ******************************************************************* +* 32-bit hash functions +*********************************************************************/ +static const U32 PRIME32_1 = 2654435761U; +static const U32 PRIME32_2 = 2246822519U; +static const U32 PRIME32_3 = 3266489917U; +static const U32 PRIME32_4 = 668265263U; +static const U32 PRIME32_5 = 374761393U; + +static U32 XXH32_round(U32 seed, U32 input) +{ + seed += input * PRIME32_2; + seed = XXH_rotl32(seed, 13); + seed *= PRIME32_1; + return seed; +} + +/* mix all bits */ +static U32 XXH32_avalanche(U32 h32) +{ + h32 ^= h32 >> 15; + h32 *= PRIME32_2; + h32 ^= h32 >> 13; + h32 *= PRIME32_3; + h32 ^= h32 >> 16; + return(h32); +} + +#define XXH_get32bits(p) XXH_readLE32_align(p, endian, align) + +static U32 +XXH32_finalize(U32 h32, const void* ptr, size_t len, + XXH_endianess endian, XXH_alignment align) + +{ + const BYTE* p = (const BYTE*)ptr; + +#define PROCESS1 \ + h32 += (*p++) * PRIME32_5; \ + h32 = XXH_rotl32(h32, 11) * PRIME32_1 ; + +#define PROCESS4 \ + h32 += XXH_get32bits(p) * PRIME32_3; \ + p+=4; \ + h32 = XXH_rotl32(h32, 17) * PRIME32_4 ; + + switch(len&15) /* or switch(bEnd - p) */ + { + case 12: PROCESS4; + /* fallthrough */ + case 8: PROCESS4; + /* fallthrough */ + case 4: PROCESS4; + return XXH32_avalanche(h32); + + case 13: PROCESS4; + /* fallthrough */ + case 9: PROCESS4; + /* fallthrough */ + case 5: PROCESS4; + PROCESS1; + return XXH32_avalanche(h32); + + case 14: PROCESS4; + /* fallthrough */ + case 10: PROCESS4; + /* fallthrough */ + case 6: PROCESS4; + PROCESS1; + PROCESS1; + return XXH32_avalanche(h32); + + case 15: PROCESS4; + /* fallthrough */ + case 11: PROCESS4; + /* fallthrough */ + case 7: PROCESS4; + /* fallthrough */ + case 3: PROCESS1; + /* fallthrough */ + case 2: PROCESS1; + /* fallthrough */ + case 1: PROCESS1; + /* fallthrough */ + case 0: return XXH32_avalanche(h32); + } + return h32; /* reaching this point is deemed impossible */ +} + + +FORCE_INLINE U32 +XXH32_endian_align(const void* input, size_t len, U32 seed, + XXH_endianess endian, XXH_alignment align) +{ + const BYTE* p = (const BYTE*)input; + const BYTE* bEnd = p + len; + U32 h32; + +#if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1) + if (p==NULL) { + len=0; + bEnd=p=(const BYTE*)(size_t)16; + } +#endif + + if (len>=16) { + const BYTE* const limit = bEnd - 15; + U32 v1 = seed + PRIME32_1 + PRIME32_2; + U32 v2 = seed + PRIME32_2; + U32 v3 = seed + 0; + U32 v4 = seed - PRIME32_1; + + do { + v1 = XXH32_round(v1, XXH_get32bits(p)); p+=4; + v2 = XXH32_round(v2, XXH_get32bits(p)); p+=4; + v3 = XXH32_round(v3, XXH_get32bits(p)); p+=4; + v4 = XXH32_round(v4, XXH_get32bits(p)); p+=4; + } while (p < limit); + + h32 = XXH_rotl32(v1, 1) + XXH_rotl32(v2, 7) + + XXH_rotl32(v3, 12) + XXH_rotl32(v4, 18); + } else { + h32 = seed + PRIME32_5; + } + + h32 += (U32)len; + + return XXH32_finalize(h32, p, len&15, endian, align); +} + + +XXH_PUBLIC_API unsigned int XXH32 (const void* input, size_t len, unsigned int seed) +{ +#if 0 + /* Simple version, good for code maintenance, but unfortunately slow for small inputs */ + XXH32_state_t state; + XXH32_reset(&state, seed); + XXH32_update(&state, input, len); + return XXH32_digest(&state); +#else + XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; + + if (XXH_FORCE_ALIGN_CHECK) { + if ((((size_t)input) & 3) == 0) { /* Input is 4-bytes aligned, leverage the speed benefit */ + if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH32_endian_align(input, len, seed, XXH_littleEndian, XXH_aligned); + else + return XXH32_endian_align(input, len, seed, XXH_bigEndian, XXH_aligned); + } } + + if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH32_endian_align(input, len, seed, XXH_littleEndian, XXH_unaligned); + else + return XXH32_endian_align(input, len, seed, XXH_bigEndian, XXH_unaligned); +#endif +} + + + +/*====== Hash streaming ======*/ + +XXH_PUBLIC_API XXH32_state_t* XXH32_createState(void) +{ + return (XXH32_state_t*)XXH_malloc(sizeof(XXH32_state_t)); +} +XXH_PUBLIC_API XXH_errorcode XXH32_freeState(XXH32_state_t* statePtr) +{ + XXH_free(statePtr); + return XXH_OK; +} + +XXH_PUBLIC_API void XXH32_copyState(XXH32_state_t* dstState, const XXH32_state_t* srcState) +{ + memcpy(dstState, srcState, sizeof(*dstState)); +} + +XXH_PUBLIC_API XXH_errorcode XXH32_reset(XXH32_state_t* statePtr, unsigned int seed) +{ + XXH32_state_t state; /* using a local state to memcpy() in order to avoid strict-aliasing warnings */ + memset(&state, 0, sizeof(state)); + state.v1 = seed + PRIME32_1 + PRIME32_2; + state.v2 = seed + PRIME32_2; + state.v3 = seed + 0; + state.v4 = seed - PRIME32_1; + /* do not write into reserved, planned to be removed in a future version */ + memcpy(statePtr, &state, sizeof(state) - sizeof(state.reserved)); + return XXH_OK; +} + + +FORCE_INLINE XXH_errorcode +XXH32_update_endian(XXH32_state_t* state, const void* input, size_t len, XXH_endianess endian) +{ + if (input==NULL) +#if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1) + return XXH_OK; +#else + return XXH_ERROR; +#endif + + { const BYTE* p = (const BYTE*)input; + const BYTE* const bEnd = p + len; + + state->total_len_32 += (unsigned)len; + state->large_len |= (len>=16) | (state->total_len_32>=16); + + if (state->memsize + len < 16) { /* fill in tmp buffer */ + XXH_memcpy((BYTE*)(state->mem32) + state->memsize, input, len); + state->memsize += (unsigned)len; + return XXH_OK; + } + + if (state->memsize) { /* some data left from previous update */ + XXH_memcpy((BYTE*)(state->mem32) + state->memsize, input, 16-state->memsize); + { const U32* p32 = state->mem32; + state->v1 = XXH32_round(state->v1, XXH_readLE32(p32, endian)); p32++; + state->v2 = XXH32_round(state->v2, XXH_readLE32(p32, endian)); p32++; + state->v3 = XXH32_round(state->v3, XXH_readLE32(p32, endian)); p32++; + state->v4 = XXH32_round(state->v4, XXH_readLE32(p32, endian)); + } + p += 16-state->memsize; + state->memsize = 0; + } + + if (p <= bEnd-16) { + const BYTE* const limit = bEnd - 16; + U32 v1 = state->v1; + U32 v2 = state->v2; + U32 v3 = state->v3; + U32 v4 = state->v4; + + do { + v1 = XXH32_round(v1, XXH_readLE32(p, endian)); p+=4; + v2 = XXH32_round(v2, XXH_readLE32(p, endian)); p+=4; + v3 = XXH32_round(v3, XXH_readLE32(p, endian)); p+=4; + v4 = XXH32_round(v4, XXH_readLE32(p, endian)); p+=4; + } while (p<=limit); + + state->v1 = v1; + state->v2 = v2; + state->v3 = v3; + state->v4 = v4; + } + + if (p < bEnd) { + XXH_memcpy(state->mem32, p, (size_t)(bEnd-p)); + state->memsize = (unsigned)(bEnd-p); + } + } + + return XXH_OK; +} + + +XXH_PUBLIC_API XXH_errorcode XXH32_update (XXH32_state_t* state_in, const void* input, size_t len) +{ + XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; + + if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH32_update_endian(state_in, input, len, XXH_littleEndian); + else + return XXH32_update_endian(state_in, input, len, XXH_bigEndian); +} + + +FORCE_INLINE U32 +XXH32_digest_endian (const XXH32_state_t* state, XXH_endianess endian) +{ + U32 h32; + + if (state->large_len) { + h32 = XXH_rotl32(state->v1, 1) + + XXH_rotl32(state->v2, 7) + + XXH_rotl32(state->v3, 12) + + XXH_rotl32(state->v4, 18); + } else { + h32 = state->v3 /* == seed */ + PRIME32_5; + } + + h32 += state->total_len_32; + + return XXH32_finalize(h32, state->mem32, state->memsize, endian, XXH_aligned); +} + + +XXH_PUBLIC_API unsigned int XXH32_digest (const XXH32_state_t* state_in) +{ + XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; + + if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH32_digest_endian(state_in, XXH_littleEndian); + else + return XXH32_digest_endian(state_in, XXH_bigEndian); +} + + +/*====== Canonical representation ======*/ + +/*! Default XXH result types are basic unsigned 32 and 64 bits. +* The canonical representation follows human-readable write convention, aka big-endian (large digits first). +* These functions allow transformation of hash result into and from its canonical format. +* This way, hash values can be written into a file or buffer, remaining comparable across different systems. +*/ + +XXH_PUBLIC_API void XXH32_canonicalFromHash(XXH32_canonical_t* dst, XXH32_hash_t hash) +{ + XXH_STATIC_ASSERT(sizeof(XXH32_canonical_t) == sizeof(XXH32_hash_t)); + if (XXH_CPU_LITTLE_ENDIAN) hash = XXH_swap32(hash); + memcpy(dst, &hash, sizeof(*dst)); +} + +XXH_PUBLIC_API XXH32_hash_t XXH32_hashFromCanonical(const XXH32_canonical_t* src) +{ + return XXH_readBE32(src); +} + + +#ifndef XXH_NO_LONG_LONG + +/* ******************************************************************* +* 64-bit hash functions +*********************************************************************/ + +/*====== Memory access ======*/ + +#ifndef MEM_MODULE +# define MEM_MODULE +# if !defined (__VMS) \ + && (defined (__cplusplus) \ + || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) ) +# include + typedef uint64_t U64; +# else + /* if compiler doesn't support unsigned long long, replace by another 64-bit type */ + typedef unsigned long long U64; +# endif +#endif + + +#if (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==2)) + +/* Force direct memory access. Only works on CPU which support unaligned memory access in hardware */ +static U64 XXH_read64(const void* memPtr) { return *(const U64*) memPtr; } + +#elif (defined(XXH_FORCE_MEMORY_ACCESS) && (XXH_FORCE_MEMORY_ACCESS==1)) + +/* __pack instructions are safer, but compiler specific, hence potentially problematic for some compilers */ +/* currently only defined for gcc and icc */ +typedef union { U32 u32; U64 u64; } __attribute__((packed)) unalign64; +static U64 XXH_read64(const void* ptr) { return ((const unalign64*)ptr)->u64; } + +#else + +/* portable and safe solution. Generally efficient. + * see : http://stackoverflow.com/a/32095106/646947 + */ + +static U64 XXH_read64(const void* memPtr) +{ + U64 val; + memcpy(&val, memPtr, sizeof(val)); + return val; +} + +#endif /* XXH_FORCE_DIRECT_MEMORY_ACCESS */ + +#if defined(_MSC_VER) /* Visual Studio */ +# define XXH_swap64 _byteswap_uint64 +#elif XXH_GCC_VERSION >= 403 +# define XXH_swap64 __builtin_bswap64 +#else +static U64 XXH_swap64 (U64 x) +{ + return ((x << 56) & 0xff00000000000000ULL) | + ((x << 40) & 0x00ff000000000000ULL) | + ((x << 24) & 0x0000ff0000000000ULL) | + ((x << 8) & 0x000000ff00000000ULL) | + ((x >> 8) & 0x00000000ff000000ULL) | + ((x >> 24) & 0x0000000000ff0000ULL) | + ((x >> 40) & 0x000000000000ff00ULL) | + ((x >> 56) & 0x00000000000000ffULL); +} +#endif + +FORCE_INLINE U64 XXH_readLE64_align(const void* ptr, XXH_endianess endian, XXH_alignment align) +{ + if (align==XXH_unaligned) + return endian==XXH_littleEndian ? XXH_read64(ptr) : XXH_swap64(XXH_read64(ptr)); + else + return endian==XXH_littleEndian ? *(const U64*)ptr : XXH_swap64(*(const U64*)ptr); +} + +FORCE_INLINE U64 XXH_readLE64(const void* ptr, XXH_endianess endian) +{ + return XXH_readLE64_align(ptr, endian, XXH_unaligned); +} + +static U64 XXH_readBE64(const void* ptr) +{ + return XXH_CPU_LITTLE_ENDIAN ? XXH_swap64(XXH_read64(ptr)) : XXH_read64(ptr); +} + + +/*====== xxh64 ======*/ + +static const U64 PRIME64_1 = 11400714785074694791ULL; +static const U64 PRIME64_2 = 14029467366897019727ULL; +static const U64 PRIME64_3 = 1609587929392839161ULL; +static const U64 PRIME64_4 = 9650029242287828579ULL; +static const U64 PRIME64_5 = 2870177450012600261ULL; + +static U64 XXH64_round(U64 acc, U64 input) +{ + acc += input * PRIME64_2; + acc = XXH_rotl64(acc, 31); + acc *= PRIME64_1; + return acc; +} + +static U64 XXH64_mergeRound(U64 acc, U64 val) +{ + val = XXH64_round(0, val); + acc ^= val; + acc = acc * PRIME64_1 + PRIME64_4; + return acc; +} + +static U64 XXH64_avalanche(U64 h64) +{ + h64 ^= h64 >> 33; + h64 *= PRIME64_2; + h64 ^= h64 >> 29; + h64 *= PRIME64_3; + h64 ^= h64 >> 32; + return h64; +} + + +#define XXH_get64bits(p) XXH_readLE64_align(p, endian, align) + +static U64 +XXH64_finalize(U64 h64, const void* ptr, size_t len, + XXH_endianess endian, XXH_alignment align) +{ + const BYTE* p = (const BYTE*)ptr; + +#define PROCESS1_64 \ + h64 ^= (*p++) * PRIME64_5; \ + h64 = XXH_rotl64(h64, 11) * PRIME64_1; + +#define PROCESS4_64 \ + h64 ^= (U64)(XXH_get32bits(p)) * PRIME64_1; \ + p+=4; \ + h64 = XXH_rotl64(h64, 23) * PRIME64_2 + PRIME64_3; + +#define PROCESS8_64 { \ + U64 const k1 = XXH64_round(0, XXH_get64bits(p)); \ + p+=8; \ + h64 ^= k1; \ + h64 = XXH_rotl64(h64,27) * PRIME64_1 + PRIME64_4; \ +} + + switch(len&31) { + case 24: PROCESS8_64; + /* fallthrough */ + case 16: PROCESS8_64; + /* fallthrough */ + case 8: PROCESS8_64; + return XXH64_avalanche(h64); + + case 28: PROCESS8_64; + /* fallthrough */ + case 20: PROCESS8_64; + /* fallthrough */ + case 12: PROCESS8_64; + /* fallthrough */ + case 4: PROCESS4_64; + return XXH64_avalanche(h64); + + case 25: PROCESS8_64; + /* fallthrough */ + case 17: PROCESS8_64; + /* fallthrough */ + case 9: PROCESS8_64; + PROCESS1_64; + return XXH64_avalanche(h64); + + case 29: PROCESS8_64; + /* fallthrough */ + case 21: PROCESS8_64; + /* fallthrough */ + case 13: PROCESS8_64; + /* fallthrough */ + case 5: PROCESS4_64; + PROCESS1_64; + return XXH64_avalanche(h64); + + case 26: PROCESS8_64; + /* fallthrough */ + case 18: PROCESS8_64; + /* fallthrough */ + case 10: PROCESS8_64; + PROCESS1_64; + PROCESS1_64; + return XXH64_avalanche(h64); + + case 30: PROCESS8_64; + /* fallthrough */ + case 22: PROCESS8_64; + /* fallthrough */ + case 14: PROCESS8_64; + /* fallthrough */ + case 6: PROCESS4_64; + PROCESS1_64; + PROCESS1_64; + return XXH64_avalanche(h64); + + case 27: PROCESS8_64; + /* fallthrough */ + case 19: PROCESS8_64; + /* fallthrough */ + case 11: PROCESS8_64; + PROCESS1_64; + PROCESS1_64; + PROCESS1_64; + return XXH64_avalanche(h64); + + case 31: PROCESS8_64; + /* fallthrough */ + case 23: PROCESS8_64; + /* fallthrough */ + case 15: PROCESS8_64; + /* fallthrough */ + case 7: PROCESS4_64; + /* fallthrough */ + case 3: PROCESS1_64; + /* fallthrough */ + case 2: PROCESS1_64; + /* fallthrough */ + case 1: PROCESS1_64; + /* fallthrough */ + case 0: return XXH64_avalanche(h64); + } + + /* impossible to reach */ + return 0; /* unreachable, but some compilers complain without it */ +} + +FORCE_INLINE U64 +XXH64_endian_align(const void* input, size_t len, U64 seed, + XXH_endianess endian, XXH_alignment align) +{ + const BYTE* p = (const BYTE*)input; + const BYTE* bEnd = p + len; + U64 h64; + +#if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1) + if (p==NULL) { + len=0; + bEnd=p=(const BYTE*)(size_t)32; + } +#endif + + if (len>=32) { + const BYTE* const limit = bEnd - 32; + U64 v1 = seed + PRIME64_1 + PRIME64_2; + U64 v2 = seed + PRIME64_2; + U64 v3 = seed + 0; + U64 v4 = seed - PRIME64_1; + + do { + v1 = XXH64_round(v1, XXH_get64bits(p)); p+=8; + v2 = XXH64_round(v2, XXH_get64bits(p)); p+=8; + v3 = XXH64_round(v3, XXH_get64bits(p)); p+=8; + v4 = XXH64_round(v4, XXH_get64bits(p)); p+=8; + } while (p<=limit); + + h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18); + h64 = XXH64_mergeRound(h64, v1); + h64 = XXH64_mergeRound(h64, v2); + h64 = XXH64_mergeRound(h64, v3); + h64 = XXH64_mergeRound(h64, v4); + + } else { + h64 = seed + PRIME64_5; + } + + h64 += (U64) len; + + return XXH64_finalize(h64, p, len, endian, align); +} + + +XXH_PUBLIC_API unsigned long long XXH64 (const void* input, size_t len, unsigned long long seed) +{ +#if 0 + /* Simple version, good for code maintenance, but unfortunately slow for small inputs */ + XXH64_state_t state; + XXH64_reset(&state, seed); + XXH64_update(&state, input, len); + return XXH64_digest(&state); +#else + XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; + + if (XXH_FORCE_ALIGN_CHECK) { + if ((((size_t)input) & 7)==0) { /* Input is aligned, let's leverage the speed advantage */ + if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH64_endian_align(input, len, seed, XXH_littleEndian, XXH_aligned); + else + return XXH64_endian_align(input, len, seed, XXH_bigEndian, XXH_aligned); + } } + + if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH64_endian_align(input, len, seed, XXH_littleEndian, XXH_unaligned); + else + return XXH64_endian_align(input, len, seed, XXH_bigEndian, XXH_unaligned); +#endif +} + +/*====== Hash Streaming ======*/ + +XXH_PUBLIC_API XXH64_state_t* XXH64_createState(void) +{ + return (XXH64_state_t*)XXH_malloc(sizeof(XXH64_state_t)); +} +XXH_PUBLIC_API XXH_errorcode XXH64_freeState(XXH64_state_t* statePtr) +{ + XXH_free(statePtr); + return XXH_OK; +} + +XXH_PUBLIC_API void XXH64_copyState(XXH64_state_t* dstState, const XXH64_state_t* srcState) +{ + memcpy(dstState, srcState, sizeof(*dstState)); +} + +XXH_PUBLIC_API XXH_errorcode XXH64_reset(XXH64_state_t* statePtr, unsigned long long seed) +{ + XXH64_state_t state; /* using a local state to memcpy() in order to avoid strict-aliasing warnings */ + memset(&state, 0, sizeof(state)); + state.v1 = seed + PRIME64_1 + PRIME64_2; + state.v2 = seed + PRIME64_2; + state.v3 = seed + 0; + state.v4 = seed - PRIME64_1; + /* do not write into reserved, planned to be removed in a future version */ + memcpy(statePtr, &state, sizeof(state) - sizeof(state.reserved)); + return XXH_OK; +} + +FORCE_INLINE XXH_errorcode +XXH64_update_endian (XXH64_state_t* state, const void* input, size_t len, XXH_endianess endian) +{ + if (input==NULL) +#if defined(XXH_ACCEPT_NULL_INPUT_POINTER) && (XXH_ACCEPT_NULL_INPUT_POINTER>=1) + return XXH_OK; +#else + return XXH_ERROR; +#endif + + { const BYTE* p = (const BYTE*)input; + const BYTE* const bEnd = p + len; + + state->total_len += len; + + if (state->memsize + len < 32) { /* fill in tmp buffer */ + XXH_memcpy(((BYTE*)state->mem64) + state->memsize, input, len); + state->memsize += (U32)len; + return XXH_OK; + } + + if (state->memsize) { /* tmp buffer is full */ + XXH_memcpy(((BYTE*)state->mem64) + state->memsize, input, 32-state->memsize); + state->v1 = XXH64_round(state->v1, XXH_readLE64(state->mem64+0, endian)); + state->v2 = XXH64_round(state->v2, XXH_readLE64(state->mem64+1, endian)); + state->v3 = XXH64_round(state->v3, XXH_readLE64(state->mem64+2, endian)); + state->v4 = XXH64_round(state->v4, XXH_readLE64(state->mem64+3, endian)); + p += 32-state->memsize; + state->memsize = 0; + } + + if (p+32 <= bEnd) { + const BYTE* const limit = bEnd - 32; + U64 v1 = state->v1; + U64 v2 = state->v2; + U64 v3 = state->v3; + U64 v4 = state->v4; + + do { + v1 = XXH64_round(v1, XXH_readLE64(p, endian)); p+=8; + v2 = XXH64_round(v2, XXH_readLE64(p, endian)); p+=8; + v3 = XXH64_round(v3, XXH_readLE64(p, endian)); p+=8; + v4 = XXH64_round(v4, XXH_readLE64(p, endian)); p+=8; + } while (p<=limit); + + state->v1 = v1; + state->v2 = v2; + state->v3 = v3; + state->v4 = v4; + } + + if (p < bEnd) { + XXH_memcpy(state->mem64, p, (size_t)(bEnd-p)); + state->memsize = (unsigned)(bEnd-p); + } + } + + return XXH_OK; +} + +XXH_PUBLIC_API XXH_errorcode XXH64_update (XXH64_state_t* state_in, const void* input, size_t len) +{ + XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; + + if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH64_update_endian(state_in, input, len, XXH_littleEndian); + else + return XXH64_update_endian(state_in, input, len, XXH_bigEndian); +} + +FORCE_INLINE U64 XXH64_digest_endian (const XXH64_state_t* state, XXH_endianess endian) +{ + U64 h64; + + if (state->total_len >= 32) { + U64 const v1 = state->v1; + U64 const v2 = state->v2; + U64 const v3 = state->v3; + U64 const v4 = state->v4; + + h64 = XXH_rotl64(v1, 1) + XXH_rotl64(v2, 7) + XXH_rotl64(v3, 12) + XXH_rotl64(v4, 18); + h64 = XXH64_mergeRound(h64, v1); + h64 = XXH64_mergeRound(h64, v2); + h64 = XXH64_mergeRound(h64, v3); + h64 = XXH64_mergeRound(h64, v4); + } else { + h64 = state->v3 /*seed*/ + PRIME64_5; + } + + h64 += (U64) state->total_len; + + return XXH64_finalize(h64, state->mem64, (size_t)state->total_len, endian, XXH_aligned); +} + +XXH_PUBLIC_API unsigned long long XXH64_digest (const XXH64_state_t* state_in) +{ + XXH_endianess endian_detected = (XXH_endianess)XXH_CPU_LITTLE_ENDIAN; + + if ((endian_detected==XXH_littleEndian) || XXH_FORCE_NATIVE_FORMAT) + return XXH64_digest_endian(state_in, XXH_littleEndian); + else + return XXH64_digest_endian(state_in, XXH_bigEndian); +} + + +/*====== Canonical representation ======*/ + +XXH_PUBLIC_API void XXH64_canonicalFromHash(XXH64_canonical_t* dst, XXH64_hash_t hash) +{ + XXH_STATIC_ASSERT(sizeof(XXH64_canonical_t) == sizeof(XXH64_hash_t)); + if (XXH_CPU_LITTLE_ENDIAN) hash = XXH_swap64(hash); + memcpy(dst, &hash, sizeof(*dst)); +} + +XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src) +{ + return XXH_readBE64(src); +} + +#endif /* XXH_NO_LONG_LONG */ diff --git a/fsbl/lib/lz4/xxhash.h b/fsbl/lib/lz4/xxhash.h new file mode 100644 index 000000000..d6bad9433 --- /dev/null +++ b/fsbl/lib/lz4/xxhash.h @@ -0,0 +1,328 @@ +/* + xxHash - Extremely Fast Hash algorithm + Header File + Copyright (C) 2012-2016, Yann Collet. + + BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + You can contact the author at : + - xxHash source repository : https://github.com/Cyan4973/xxHash +*/ + +/* Notice extracted from xxHash homepage : + +xxHash is an extremely fast Hash algorithm, running at RAM speed limits. +It also successfully passes all tests from the SMHasher suite. + +Comparison (single thread, Windows Seven 32 bits, using SMHasher on a Core 2 Duo @3GHz) + +Name Speed Q.Score Author +xxHash 5.4 GB/s 10 +CrapWow 3.2 GB/s 2 Andrew +MumurHash 3a 2.7 GB/s 10 Austin Appleby +SpookyHash 2.0 GB/s 10 Bob Jenkins +SBox 1.4 GB/s 9 Bret Mulvey +Lookup3 1.2 GB/s 9 Bob Jenkins +SuperFastHash 1.2 GB/s 1 Paul Hsieh +CityHash64 1.05 GB/s 10 Pike & Alakuijala +FNV 0.55 GB/s 5 Fowler, Noll, Vo +CRC32 0.43 GB/s 9 +MD5-32 0.33 GB/s 10 Ronald L. Rivest +SHA1-32 0.28 GB/s 10 + +Q.Score is a measure of quality of the hash function. +It depends on successfully passing SMHasher test set. +10 is a perfect score. + +A 64-bit version, named XXH64, is available since r35. +It offers much better speed, but for 64-bit applications only. +Name Speed on 64 bits Speed on 32 bits +XXH64 13.8 GB/s 1.9 GB/s +XXH32 6.8 GB/s 6.0 GB/s +*/ + +#ifndef XXHASH_H_5627135585666179 +#define XXHASH_H_5627135585666179 1 + +#if defined (__cplusplus) +extern "C" { +#endif + + +/* **************************** +* Definitions +******************************/ +#include /* size_t */ +typedef enum { XXH_OK=0, XXH_ERROR } XXH_errorcode; + + +/* **************************** + * API modifier + ******************************/ +/** XXH_INLINE_ALL (and XXH_PRIVATE_API) + * This is useful to include xxhash functions in `static` mode + * in order to inline them, and remove their symbol from the public list. + * Inlining can offer dramatic performance improvement on small keys. + * Methodology : + * #define XXH_INLINE_ALL + * #include "xxhash.h" + * `xxhash.c` is automatically included. + * It's not useful to compile and link it as a separate module. + */ +#if defined(XXH_INLINE_ALL) || defined(XXH_PRIVATE_API) +# ifndef XXH_STATIC_LINKING_ONLY +# define XXH_STATIC_LINKING_ONLY +# endif +# if defined(__GNUC__) +# define XXH_PUBLIC_API static __inline __attribute__((unused)) +# elif defined (__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) +# define XXH_PUBLIC_API static inline +# elif defined(_MSC_VER) +# define XXH_PUBLIC_API static __inline +# else + /* this version may generate warnings for unused static functions */ +# define XXH_PUBLIC_API static +# endif +#else +# define XXH_PUBLIC_API /* do nothing */ +#endif /* XXH_INLINE_ALL || XXH_PRIVATE_API */ + +/*! XXH_NAMESPACE, aka Namespace Emulation : + * + * If you want to include _and expose_ xxHash functions from within your own library, + * but also want to avoid symbol collisions with other libraries which may also include xxHash, + * + * you can use XXH_NAMESPACE, to automatically prefix any public symbol from xxhash library + * with the value of XXH_NAMESPACE (therefore, avoid NULL and numeric values). + * + * Note that no change is required within the calling program as long as it includes `xxhash.h` : + * regular symbol name will be automatically translated by this header. + */ +#ifdef XXH_NAMESPACE +# define XXH_CAT(A,B) A##B +# define XXH_NAME2(A,B) XXH_CAT(A,B) +# define XXH_versionNumber XXH_NAME2(XXH_NAMESPACE, XXH_versionNumber) +# define XXH32 XXH_NAME2(XXH_NAMESPACE, XXH32) +# define XXH32_createState XXH_NAME2(XXH_NAMESPACE, XXH32_createState) +# define XXH32_freeState XXH_NAME2(XXH_NAMESPACE, XXH32_freeState) +# define XXH32_reset XXH_NAME2(XXH_NAMESPACE, XXH32_reset) +# define XXH32_update XXH_NAME2(XXH_NAMESPACE, XXH32_update) +# define XXH32_digest XXH_NAME2(XXH_NAMESPACE, XXH32_digest) +# define XXH32_copyState XXH_NAME2(XXH_NAMESPACE, XXH32_copyState) +# define XXH32_canonicalFromHash XXH_NAME2(XXH_NAMESPACE, XXH32_canonicalFromHash) +# define XXH32_hashFromCanonical XXH_NAME2(XXH_NAMESPACE, XXH32_hashFromCanonical) +# define XXH64 XXH_NAME2(XXH_NAMESPACE, XXH64) +# define XXH64_createState XXH_NAME2(XXH_NAMESPACE, XXH64_createState) +# define XXH64_freeState XXH_NAME2(XXH_NAMESPACE, XXH64_freeState) +# define XXH64_reset XXH_NAME2(XXH_NAMESPACE, XXH64_reset) +# define XXH64_update XXH_NAME2(XXH_NAMESPACE, XXH64_update) +# define XXH64_digest XXH_NAME2(XXH_NAMESPACE, XXH64_digest) +# define XXH64_copyState XXH_NAME2(XXH_NAMESPACE, XXH64_copyState) +# define XXH64_canonicalFromHash XXH_NAME2(XXH_NAMESPACE, XXH64_canonicalFromHash) +# define XXH64_hashFromCanonical XXH_NAME2(XXH_NAMESPACE, XXH64_hashFromCanonical) +#endif + + +/* ************************************* +* Version +***************************************/ +#define XXH_VERSION_MAJOR 0 +#define XXH_VERSION_MINOR 6 +#define XXH_VERSION_RELEASE 5 +#define XXH_VERSION_NUMBER (XXH_VERSION_MAJOR *100*100 + XXH_VERSION_MINOR *100 + XXH_VERSION_RELEASE) +XXH_PUBLIC_API unsigned XXH_versionNumber (void); + + +/*-********************************************************************** +* 32-bit hash +************************************************************************/ +typedef unsigned int XXH32_hash_t; + +/*! XXH32() : + Calculate the 32-bit hash of sequence "length" bytes stored at memory address "input". + The memory between input & input+length must be valid (allocated and read-accessible). + "seed" can be used to alter the result predictably. + Speed on Core 2 Duo @ 3 GHz (single thread, SMHasher benchmark) : 5.4 GB/s */ +XXH_PUBLIC_API XXH32_hash_t XXH32 (const void* input, size_t length, unsigned int seed); + +/*====== Streaming ======*/ +typedef struct XXH32_state_s XXH32_state_t; /* incomplete type */ +XXH_PUBLIC_API XXH32_state_t* XXH32_createState(void); +XXH_PUBLIC_API XXH_errorcode XXH32_freeState(XXH32_state_t* statePtr); +XXH_PUBLIC_API void XXH32_copyState(XXH32_state_t* dst_state, const XXH32_state_t* src_state); + +XXH_PUBLIC_API XXH_errorcode XXH32_reset (XXH32_state_t* statePtr, unsigned int seed); +XXH_PUBLIC_API XXH_errorcode XXH32_update (XXH32_state_t* statePtr, const void* input, size_t length); +XXH_PUBLIC_API XXH32_hash_t XXH32_digest (const XXH32_state_t* statePtr); + +/* + * Streaming functions generate the xxHash of an input provided in multiple segments. + * Note that, for small input, they are slower than single-call functions, due to state management. + * For small inputs, prefer `XXH32()` and `XXH64()`, which are better optimized. + * + * XXH state must first be allocated, using XXH*_createState() . + * + * Start a new hash by initializing state with a seed, using XXH*_reset(). + * + * Then, feed the hash state by calling XXH*_update() as many times as necessary. + * The function returns an error code, with 0 meaning OK, and any other value meaning there is an error. + * + * Finally, a hash value can be produced anytime, by using XXH*_digest(). + * This function returns the nn-bits hash as an int or long long. + * + * It's still possible to continue inserting input into the hash state after a digest, + * and generate some new hashes later on, by calling again XXH*_digest(). + * + * When done, free XXH state space if it was allocated dynamically. + */ + +/*====== Canonical representation ======*/ + +typedef struct { unsigned char digest[4]; } XXH32_canonical_t; +XXH_PUBLIC_API void XXH32_canonicalFromHash(XXH32_canonical_t* dst, XXH32_hash_t hash); +XXH_PUBLIC_API XXH32_hash_t XXH32_hashFromCanonical(const XXH32_canonical_t* src); + +/* Default result type for XXH functions are primitive unsigned 32 and 64 bits. + * The canonical representation uses human-readable write convention, aka big-endian (large digits first). + * These functions allow transformation of hash result into and from its canonical format. + * This way, hash values can be written into a file / memory, and remain comparable on different systems and programs. + */ + + +#ifndef XXH_NO_LONG_LONG +/*-********************************************************************** +* 64-bit hash +************************************************************************/ +typedef unsigned long long XXH64_hash_t; + +/*! XXH64() : + Calculate the 64-bit hash of sequence of length "len" stored at memory address "input". + "seed" can be used to alter the result predictably. + This function runs faster on 64-bit systems, but slower on 32-bit systems (see benchmark). +*/ +XXH_PUBLIC_API XXH64_hash_t XXH64 (const void* input, size_t length, unsigned long long seed); + +/*====== Streaming ======*/ +typedef struct XXH64_state_s XXH64_state_t; /* incomplete type */ +XXH_PUBLIC_API XXH64_state_t* XXH64_createState(void); +XXH_PUBLIC_API XXH_errorcode XXH64_freeState(XXH64_state_t* statePtr); +XXH_PUBLIC_API void XXH64_copyState(XXH64_state_t* dst_state, const XXH64_state_t* src_state); + +XXH_PUBLIC_API XXH_errorcode XXH64_reset (XXH64_state_t* statePtr, unsigned long long seed); +XXH_PUBLIC_API XXH_errorcode XXH64_update (XXH64_state_t* statePtr, const void* input, size_t length); +XXH_PUBLIC_API XXH64_hash_t XXH64_digest (const XXH64_state_t* statePtr); + +/*====== Canonical representation ======*/ +typedef struct { unsigned char digest[8]; } XXH64_canonical_t; +XXH_PUBLIC_API void XXH64_canonicalFromHash(XXH64_canonical_t* dst, XXH64_hash_t hash); +XXH_PUBLIC_API XXH64_hash_t XXH64_hashFromCanonical(const XXH64_canonical_t* src); +#endif /* XXH_NO_LONG_LONG */ + + + +#ifdef XXH_STATIC_LINKING_ONLY + +/* ================================================================================================ + This section contains declarations which are not guaranteed to remain stable. + They may change in future versions, becoming incompatible with a different version of the library. + These declarations should only be used with static linking. + Never use them in association with dynamic linking ! +=================================================================================================== */ + +/* These definitions are only present to allow + * static allocation of XXH state, on stack or in a struct for example. + * Never **ever** use members directly. */ + +#if !defined (__VMS) \ + && (defined (__cplusplus) \ + || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) ) +# include + +struct XXH32_state_s { + uint32_t total_len_32; + uint32_t large_len; + uint32_t v1; + uint32_t v2; + uint32_t v3; + uint32_t v4; + uint32_t mem32[4]; + uint32_t memsize; + uint32_t reserved; /* never read nor write, might be removed in a future version */ +}; /* typedef'd to XXH32_state_t */ + +struct XXH64_state_s { + uint64_t total_len; + uint64_t v1; + uint64_t v2; + uint64_t v3; + uint64_t v4; + uint64_t mem64[4]; + uint32_t memsize; + uint32_t reserved[2]; /* never read nor write, might be removed in a future version */ +}; /* typedef'd to XXH64_state_t */ + +# else + +struct XXH32_state_s { + unsigned total_len_32; + unsigned large_len; + unsigned v1; + unsigned v2; + unsigned v3; + unsigned v4; + unsigned mem32[4]; + unsigned memsize; + unsigned reserved; /* never read nor write, might be removed in a future version */ +}; /* typedef'd to XXH32_state_t */ + +# ifndef XXH_NO_LONG_LONG /* remove 64-bit support */ +struct XXH64_state_s { + unsigned long long total_len; + unsigned long long v1; + unsigned long long v2; + unsigned long long v3; + unsigned long long v4; + unsigned long long mem64[4]; + unsigned memsize; + unsigned reserved[2]; /* never read nor write, might be removed in a future version */ +}; /* typedef'd to XXH64_state_t */ +# endif + +# endif + + +#if defined(XXH_INLINE_ALL) || defined(XXH_PRIVATE_API) +# include "xxhash.c" /* include xxhash function bodies as `static`, for inlining */ +#endif + +#endif /* XXH_STATIC_LINKING_ONLY */ + + +#if defined (__cplusplus) +} +#endif + +#endif /* XXHASH_H_5627135585666179 */ diff --git a/fsbl/lib/lzma/7zTypes.h b/fsbl/lib/lzma/7zTypes.h new file mode 100644 index 000000000..a5d802195 --- /dev/null +++ b/fsbl/lib/lzma/7zTypes.h @@ -0,0 +1,341 @@ +/* 7zTypes.h -- Basic types +2018-08-04 : Igor Pavlov : Public domain */ + +#ifndef __7Z_TYPES_H +#define __7Z_TYPES_H + +#ifdef _WIN32 +/* #include */ +#endif + +#include + +#ifndef EXTERN_C_BEGIN +#ifdef __cplusplus +#define EXTERN_C_BEGIN extern "C" { +#define EXTERN_C_END } +#else +#define EXTERN_C_BEGIN +#define EXTERN_C_END +#endif +#endif + +EXTERN_C_BEGIN + +#define SZ_OK 0 + +#define SZ_ERROR_DATA 1 +#define SZ_ERROR_MEM 2 +#define SZ_ERROR_CRC 3 +#define SZ_ERROR_UNSUPPORTED 4 +#define SZ_ERROR_PARAM 5 +#define SZ_ERROR_INPUT_EOF 6 +#define SZ_ERROR_OUTPUT_EOF 7 +#define SZ_ERROR_READ 8 +#define SZ_ERROR_WRITE 9 +#define SZ_ERROR_PROGRESS 10 +#define SZ_ERROR_FAIL 11 +#define SZ_ERROR_THREAD 12 + +#define SZ_ERROR_ARCHIVE 16 +#define SZ_ERROR_NO_ARCHIVE 17 + +typedef int SRes; + +#ifdef _WIN32 + +/* typedef DWORD WRes; */ +typedef unsigned WRes; +#define MY_SRes_HRESULT_FROM_WRes(x) HRESULT_FROM_WIN32(x) + +#else + +typedef int WRes; +#define MY__FACILITY_WIN32 7 +#define MY__FACILITY__WRes MY__FACILITY_WIN32 +#define MY_SRes_HRESULT_FROM_WRes(x) \ + ((HRESULT)(x) <= 0 ? ((HRESULT)(x)) : ((HRESULT)(((x)&0x0000FFFF) | (MY__FACILITY__WRes << 16) | 0x80000000))) + +#endif + +#ifndef RINOK +#define RINOK(x) \ + { \ + int __result__ = (x); \ + if (__result__ != 0) \ + return __result__; \ + } +#endif + +typedef unsigned char Byte; +typedef short Int16; +typedef unsigned short UInt16; + +#ifdef _LZMA_UINT32_IS_ULONG +typedef long Int32; +typedef unsigned long UInt32; +#else +typedef int Int32; +typedef unsigned int UInt32; +#endif + +#ifdef _SZ_NO_INT_64 + +/* define _SZ_NO_INT_64, if your compiler doesn't support 64-bit integers. + NOTES: Some code will work incorrectly in that case! */ + +typedef long Int64; +typedef unsigned long UInt64; + +#else + +#if defined(_MSC_VER) || defined(__BORLANDC__) +typedef __int64 Int64; +typedef unsigned __int64 UInt64; +#define UINT64_CONST(n) n +#else +typedef long long int Int64; +typedef unsigned long long int UInt64; +#define UINT64_CONST(n) n##ULL +#endif + +#endif + +#ifdef _LZMA_NO_SYSTEM_SIZE_T +typedef UInt32 SizeT; +#else +typedef size_t SizeT; +#endif + +typedef int BoolInt; +/* typedef BoolInt Bool; */ +#define True 1 +#define False 0 + +#ifdef _WIN32 +#define MY_STD_CALL __stdcall +#else +#define MY_STD_CALL +#endif + +#ifdef _MSC_VER + +#if _MSC_VER >= 1300 +#define MY_NO_INLINE __declspec(noinline) +#else +#define MY_NO_INLINE +#endif + +#define MY_FORCE_INLINE __forceinline + +#define MY_CDECL __cdecl +#define MY_FAST_CALL __fastcall + +#else + +#define MY_NO_INLINE +#define MY_FORCE_INLINE +#define MY_CDECL +#define MY_FAST_CALL + +/* inline keyword : for C++ / C99 */ + +/* GCC, clang: */ +/* +#if defined (__GNUC__) && (__GNUC__ >= 4) +#define MY_FORCE_INLINE __attribute__((always_inline)) +#define MY_NO_INLINE __attribute__((noinline)) +#endif +*/ + +#endif + +/* The following interfaces use first parameter as pointer to structure */ + +typedef struct IByteIn IByteIn; +struct IByteIn { + Byte (*Read)(const IByteIn *p); /* reads one byte, returns 0 in case of EOF or error */ +}; +#define IByteIn_Read(p) (p)->Read(p) + +typedef struct IByteOut IByteOut; +struct IByteOut { + void (*Write)(const IByteOut *p, Byte b); +}; +#define IByteOut_Write(p, b) (p)->Write(p, b) + +typedef struct ISeqInStream ISeqInStream; +struct ISeqInStream { + SRes (*Read)(const ISeqInStream *p, void *buf, size_t *size); + /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream. + (output(*size) < input(*size)) is allowed */ +}; +#define ISeqInStream_Read(p, buf, size) (p)->Read(p, buf, size) + +/* it can return SZ_ERROR_INPUT_EOF */ +SRes SeqInStream_Read(const ISeqInStream *stream, void *buf, size_t size); +SRes SeqInStream_Read2(const ISeqInStream *stream, void *buf, size_t size, SRes errorType); +SRes SeqInStream_ReadByte(const ISeqInStream *stream, Byte *buf); + +typedef struct ISeqOutStream ISeqOutStream; +struct ISeqOutStream { + size_t (*Write)(const ISeqOutStream *p, const void *buf, size_t size); + /* Returns: result - the number of actually written bytes. + (result < size) means error */ +}; +#define ISeqOutStream_Write(p, buf, size) (p)->Write(p, buf, size) + +typedef enum { SZ_SEEK_SET = 0, SZ_SEEK_CUR = 1, SZ_SEEK_END = 2 } ESzSeek; + +typedef struct ISeekInStream ISeekInStream; +struct ISeekInStream { + SRes (*Read)(const ISeekInStream *p, void *buf, size_t *size); /* same as ISeqInStream::Read */ + SRes (*Seek)(const ISeekInStream *p, Int64 *pos, ESzSeek origin); +}; +#define ISeekInStream_Read(p, buf, size) (p)->Read(p, buf, size) +#define ISeekInStream_Seek(p, pos, origin) (p)->Seek(p, pos, origin) + +typedef struct ILookInStream ILookInStream; +struct ILookInStream { + SRes (*Look)(const ILookInStream *p, const void **buf, size_t *size); + /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream. + (output(*size) > input(*size)) is not allowed + (output(*size) < input(*size)) is allowed */ + SRes (*Skip)(const ILookInStream *p, size_t offset); + /* offset must be <= output(*size) of Look */ + + SRes (*Read)(const ILookInStream *p, void *buf, size_t *size); + /* reads directly (without buffer). It's same as ISeqInStream::Read */ + SRes (*Seek)(const ILookInStream *p, Int64 *pos, ESzSeek origin); +}; + +#define ILookInStream_Look(p, buf, size) (p)->Look(p, buf, size) +#define ILookInStream_Skip(p, offset) (p)->Skip(p, offset) +#define ILookInStream_Read(p, buf, size) (p)->Read(p, buf, size) +#define ILookInStream_Seek(p, pos, origin) (p)->Seek(p, pos, origin) + +SRes LookInStream_LookRead(const ILookInStream *stream, void *buf, size_t *size); +SRes LookInStream_SeekTo(const ILookInStream *stream, UInt64 offset); + +/* reads via ILookInStream::Read */ +SRes LookInStream_Read2(const ILookInStream *stream, void *buf, size_t size, SRes errorType); +SRes LookInStream_Read(const ILookInStream *stream, void *buf, size_t size); + +typedef struct { + ILookInStream vt; + const ISeekInStream *realStream; + + size_t pos; + size_t size; /* it's data size */ + + /* the following variables must be set outside */ + Byte *buf; + size_t bufSize; +} CLookToRead2; + +void LookToRead2_CreateVTable(CLookToRead2 *p, int lookahead); + +#define LookToRead2_Init(p) \ + { \ + (p)->pos = (p)->size = 0; \ + } + +typedef struct { + ISeqInStream vt; + const ILookInStream *realStream; +} CSecToLook; + +void SecToLook_CreateVTable(CSecToLook *p); + +typedef struct { + ISeqInStream vt; + const ILookInStream *realStream; +} CSecToRead; + +void SecToRead_CreateVTable(CSecToRead *p); + +typedef struct ICompressProgress ICompressProgress; + +struct ICompressProgress { + SRes (*Progress)(const ICompressProgress *p, UInt64 inSize, UInt64 outSize); + /* Returns: result. (result != SZ_OK) means break. + Value (UInt64)(Int64)-1 for size means unknown value. */ +}; +#define ICompressProgress_Progress(p, inSize, outSize) (p)->Progress(p, inSize, outSize) + +typedef struct ISzAlloc ISzAlloc; +typedef const ISzAlloc *ISzAllocPtr; + +struct ISzAlloc { + void *(*Alloc)(ISzAllocPtr p, size_t size); + void (*Free)(ISzAllocPtr p, void *address); /* address can be 0 */ +}; + +#define ISzAlloc_Alloc(p, size) (p)->Alloc(p, size) +#define ISzAlloc_Free(p, a) (p)->Free(p, a) + +/* deprecated */ +#define IAlloc_Alloc(p, size) ISzAlloc_Alloc(p, size) +#define IAlloc_Free(p, a) ISzAlloc_Free(p, a) + +#ifndef MY_offsetof +#ifdef offsetof +#define MY_offsetof(type, m) offsetof(type, m) +/* + #define MY_offsetof(type, m) FIELD_OFFSET(type, m) + */ +#else +#define MY_offsetof(type, m) ((size_t) & (((type *)0)->m)) +#endif +#endif + +#ifndef MY_container_of + +/* +#define MY_container_of(ptr, type, m) container_of(ptr, type, m) +#define MY_container_of(ptr, type, m) CONTAINING_RECORD(ptr, type, m) +#define MY_container_of(ptr, type, m) ((type *)((char *)(ptr) - offsetof(type, m))) +#define MY_container_of(ptr, type, m) (&((type *)0)->m == (ptr), ((type *)(((char *)(ptr)) - MY_offsetof(type, m)))) +*/ + +/* + GCC shows warning: "perhaps the 'offsetof' macro was used incorrectly" + GCC 3.4.4 : classes with constructor + GCC 4.8.1 : classes with non-public variable members" +*/ + +#define MY_container_of(ptr, type, m) ((type *)((char *)(1 ? (ptr) : &((type *)0)->m) - MY_offsetof(type, m))) + +#endif + +#define CONTAINER_FROM_VTBL_SIMPLE(ptr, type, m) ((type *)(ptr)) + +/* +#define CONTAINER_FROM_VTBL(ptr, type, m) CONTAINER_FROM_VTBL_SIMPLE(ptr, type, m) +*/ +#define CONTAINER_FROM_VTBL(ptr, type, m) MY_container_of(ptr, type, m) + +#define CONTAINER_FROM_VTBL_CLS(ptr, type, m) CONTAINER_FROM_VTBL_SIMPLE(ptr, type, m) +/* +#define CONTAINER_FROM_VTBL_CLS(ptr, type, m) CONTAINER_FROM_VTBL(ptr, type, m) +*/ + +#ifdef _WIN32 + +#define CHAR_PATH_SEPARATOR '\\' +#define WCHAR_PATH_SEPARATOR L'\\' +#define STRING_PATH_SEPARATOR "\\" +#define WSTRING_PATH_SEPARATOR L"\\" + +#else + +#define CHAR_PATH_SEPARATOR '/' +#define WCHAR_PATH_SEPARATOR L'/' +#define STRING_PATH_SEPARATOR "/" +#define WSTRING_PATH_SEPARATOR L"/" + +#endif + +EXTERN_C_END + +#endif diff --git a/fsbl/lib/lzma/LzmaDec.c b/fsbl/lib/lzma/LzmaDec.c new file mode 100644 index 000000000..a884c7a31 --- /dev/null +++ b/fsbl/lib/lzma/LzmaDec.c @@ -0,0 +1,1181 @@ +/* LzmaDec.c -- LZMA Decoder +2018-07-04 : Igor Pavlov : Public domain */ + +/* #include "CpuArch.h" */ +#include "LzmaDec.h" + +#define kNumTopBits 24 +#define kTopValue ((UInt32)1 << kNumTopBits) + +#define kNumBitModelTotalBits 11 +#define kBitModelTotal (1 << kNumBitModelTotalBits) +#define kNumMoveBits 5 + +#define RC_INIT_SIZE 5 + +#define NORMALIZE if (range < kTopValue) { range <<= 8; code = (code << 8) | (*buf++); } + +#define IF_BIT_0(p) ttt = *(p); NORMALIZE; bound = (range >> kNumBitModelTotalBits) * (UInt32)ttt; if (code < bound) +#define UPDATE_0(p) range = bound; *(p) = (CLzmaProb)(ttt + ((kBitModelTotal - ttt) >> kNumMoveBits)); +#define UPDATE_1(p) range -= bound; code -= bound; *(p) = (CLzmaProb)(ttt - (ttt >> kNumMoveBits)); +#define GET_BIT2(p, i, A0, A1) IF_BIT_0(p) \ + { UPDATE_0(p); i = (i + i); A0; } else \ + { UPDATE_1(p); i = (i + i) + 1; A1; } + +#define TREE_GET_BIT(probs, i) { GET_BIT2(probs + i, i, ;, ;); } + +#define REV_BIT(p, i, A0, A1) IF_BIT_0(p + i) \ + { UPDATE_0(p + i); A0; } else \ + { UPDATE_1(p + i); A1; } +#define REV_BIT_VAR( p, i, m) REV_BIT(p, i, i += m; m += m, m += m; i += m; ) +#define REV_BIT_CONST(p, i, m) REV_BIT(p, i, i += m; , i += m * 2; ) +#define REV_BIT_LAST( p, i, m) REV_BIT(p, i, i -= m , ; ) + +#define TREE_DECODE(probs, limit, i) \ + { i = 1; do { TREE_GET_BIT(probs, i); } while (i < limit); i -= limit; } + +/* #define _LZMA_SIZE_OPT */ + +#ifdef _LZMA_SIZE_OPT +#define TREE_6_DECODE(probs, i) TREE_DECODE(probs, (1 << 6), i) +#else +#define TREE_6_DECODE(probs, i) \ + { i = 1; \ + TREE_GET_BIT(probs, i); \ + TREE_GET_BIT(probs, i); \ + TREE_GET_BIT(probs, i); \ + TREE_GET_BIT(probs, i); \ + TREE_GET_BIT(probs, i); \ + TREE_GET_BIT(probs, i); \ + i -= 0x40; } +#endif + +#define NORMAL_LITER_DEC TREE_GET_BIT(prob, symbol) +#define MATCHED_LITER_DEC \ + matchByte += matchByte; \ + bit = offs; \ + offs &= matchByte; \ + probLit = prob + (offs + bit + symbol); \ + GET_BIT2(probLit, symbol, offs ^= bit; , ;) + + + +#define NORMALIZE_CHECK if (range < kTopValue) { if (buf >= bufLimit) return DUMMY_ERROR; range <<= 8; code = (code << 8) | (*buf++); } + +#define IF_BIT_0_CHECK(p) ttt = *(p); NORMALIZE_CHECK; bound = (range >> kNumBitModelTotalBits) * (UInt32)ttt; if (code < bound) +#define UPDATE_0_CHECK range = bound; +#define UPDATE_1_CHECK range -= bound; code -= bound; +#define GET_BIT2_CHECK(p, i, A0, A1) IF_BIT_0_CHECK(p) \ + { UPDATE_0_CHECK; i = (i + i); A0; } else \ + { UPDATE_1_CHECK; i = (i + i) + 1; A1; } +#define GET_BIT_CHECK(p, i) GET_BIT2_CHECK(p, i, ; , ;) +#define TREE_DECODE_CHECK(probs, limit, i) \ + { i = 1; do { GET_BIT_CHECK(probs + i, i) } while (i < limit); i -= limit; } + + +#define REV_BIT_CHECK(p, i, m) IF_BIT_0_CHECK(p + i) \ + { UPDATE_0_CHECK; i += m; m += m; } else \ + { UPDATE_1_CHECK; m += m; i += m; } + + +#define kNumPosBitsMax 4 +#define kNumPosStatesMax (1 << kNumPosBitsMax) + +#define kLenNumLowBits 3 +#define kLenNumLowSymbols (1 << kLenNumLowBits) +#define kLenNumHighBits 8 +#define kLenNumHighSymbols (1 << kLenNumHighBits) + +#define LenLow 0 +#define LenHigh (LenLow + 2 * (kNumPosStatesMax << kLenNumLowBits)) +#define kNumLenProbs (LenHigh + kLenNumHighSymbols) + +#define LenChoice LenLow +#define LenChoice2 (LenLow + (1 << kLenNumLowBits)) + +#define kNumStates 12 +#define kNumStates2 16 +#define kNumLitStates 7 + +#define kStartPosModelIndex 4 +#define kEndPosModelIndex 14 +#define kNumFullDistances (1 << (kEndPosModelIndex >> 1)) + +#define kNumPosSlotBits 6 +#define kNumLenToPosStates 4 + +#define kNumAlignBits 4 +#define kAlignTableSize (1 << kNumAlignBits) + +#define kMatchMinLen 2 +#define kMatchSpecLenStart (kMatchMinLen + kLenNumLowSymbols * 2 + kLenNumHighSymbols) + +/* External ASM code needs same CLzmaProb array layout. So don't change it. */ + +/* (probs_1664) is faster and better for code size at some platforms */ +/* +#ifdef MY_CPU_X86_OR_AMD64 +*/ +#define kStartOffset 1664 +#define GET_PROBS p->probs_1664 +/* +#define GET_PROBS p->probs + kStartOffset +#else +#define kStartOffset 0 +#define GET_PROBS p->probs +#endif +*/ + +#define SpecPos (-kStartOffset) +#define IsRep0Long (SpecPos + kNumFullDistances) +#define RepLenCoder (IsRep0Long + (kNumStates2 << kNumPosBitsMax)) +#define LenCoder (RepLenCoder + kNumLenProbs) +#define IsMatch (LenCoder + kNumLenProbs) +#define Align (IsMatch + (kNumStates2 << kNumPosBitsMax)) +#define IsRep (Align + kAlignTableSize) +#define IsRepG0 (IsRep + kNumStates) +#define IsRepG1 (IsRepG0 + kNumStates) +#define IsRepG2 (IsRepG1 + kNumStates) +#define PosSlot (IsRepG2 + kNumStates) +#define Literal (PosSlot + (kNumLenToPosStates << kNumPosSlotBits)) +#define NUM_BASE_PROBS (Literal + kStartOffset) + +#if Align != 0 && kStartOffset != 0 + #error Stop_Compiling_Bad_LZMA_kAlign +#endif + +#if NUM_BASE_PROBS != 1984 + #error Stop_Compiling_Bad_LZMA_PROBS +#endif + + +#define LZMA_LIT_SIZE 0x300 + +#define LzmaProps_GetNumProbs(p) (NUM_BASE_PROBS + ((UInt32)LZMA_LIT_SIZE << ((p)->lc + (p)->lp))) + + +#define CALC_POS_STATE(processedPos, pbMask) (((processedPos) & (pbMask)) << 4) +#define COMBINED_PS_STATE (posState + state) +#define GET_LEN_STATE (posState) + +#define LZMA_DIC_MIN (1 << 12) + +/* +p->remainLen : shows status of LZMA decoder: + < kMatchSpecLenStart : normal remain + = kMatchSpecLenStart : finished + = kMatchSpecLenStart + 1 : need init range coder + = kMatchSpecLenStart + 2 : need init range coder and state +*/ + +/* ---------- LZMA_DECODE_REAL ---------- */ +/* +LzmaDec_DecodeReal_3() can be implemented in external ASM file. +3 - is the code compatibility version of that function for check at link time. +*/ + +#define LZMA_DECODE_REAL LzmaDec_DecodeReal_3 + +/* +LZMA_DECODE_REAL() +In: + RangeCoder is normalized + if (p->dicPos == limit) + { + LzmaDec_TryDummy() was called before to exclude LITERAL and MATCH-REP cases. + So first symbol can be only MATCH-NON-REP. And if that MATCH-NON-REP symbol + is not END_OF_PAYALOAD_MARKER, then function returns error code. + } + +Processing: + first LZMA symbol will be decoded in any case + All checks for limits are at the end of main loop, + It will decode new LZMA-symbols while (p->buf < bufLimit && dicPos < limit), + RangeCoder is still without last normalization when (p->buf < bufLimit) is being checked. + +Out: + RangeCoder is normalized + Result: + SZ_OK - OK + SZ_ERROR_DATA - Error + p->remainLen: + < kMatchSpecLenStart : normal remain + = kMatchSpecLenStart : finished +*/ + + +#ifdef _LZMA_DEC_OPT + +int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit); + +#else + +static +int MY_FAST_CALL LZMA_DECODE_REAL(CLzmaDec *p, SizeT limit, const Byte *bufLimit) +{ + CLzmaProb *probs = GET_PROBS; + unsigned state = (unsigned)p->state; + UInt32 rep0 = p->reps[0], rep1 = p->reps[1], rep2 = p->reps[2], rep3 = p->reps[3]; + unsigned pbMask = ((unsigned)1 << (p->prop.pb)) - 1; + unsigned lc = p->prop.lc; + unsigned lpMask = ((unsigned)0x100 << p->prop.lp) - ((unsigned)0x100 >> lc); + + Byte *dic = p->dic; + SizeT dicBufSize = p->dicBufSize; + SizeT dicPos = p->dicPos; + + UInt32 processedPos = p->processedPos; + UInt32 checkDicSize = p->checkDicSize; + unsigned len = 0; + + const Byte *buf = p->buf; + UInt32 range = p->range; + UInt32 code = p->code; + + do + { + CLzmaProb *prob; + UInt32 bound; + unsigned ttt; + unsigned posState = CALC_POS_STATE(processedPos, pbMask); + + prob = probs + IsMatch + COMBINED_PS_STATE; + IF_BIT_0(prob) + { + unsigned symbol; + UPDATE_0(prob); + prob = probs + Literal; + if (processedPos != 0 || checkDicSize != 0) + prob += (UInt32)3 * ((((processedPos << 8) + dic[(dicPos == 0 ? dicBufSize : dicPos) - 1]) & lpMask) << lc); + processedPos++; + + if (state < kNumLitStates) + { + state -= (state < 4) ? state : 3; + symbol = 1; + #ifdef _LZMA_SIZE_OPT + do { NORMAL_LITER_DEC } while (symbol < 0x100); + #else + NORMAL_LITER_DEC + NORMAL_LITER_DEC + NORMAL_LITER_DEC + NORMAL_LITER_DEC + NORMAL_LITER_DEC + NORMAL_LITER_DEC + NORMAL_LITER_DEC + NORMAL_LITER_DEC + #endif + } + else + { + unsigned matchByte = dic[dicPos - rep0 + (dicPos < rep0 ? dicBufSize : 0)]; + unsigned offs = 0x100; + state -= (state < 10) ? 3 : 6; + symbol = 1; + #ifdef _LZMA_SIZE_OPT + do + { + unsigned bit; + CLzmaProb *probLit; + MATCHED_LITER_DEC + } + while (symbol < 0x100); + #else + { + unsigned bit; + CLzmaProb *probLit; + MATCHED_LITER_DEC + MATCHED_LITER_DEC + MATCHED_LITER_DEC + MATCHED_LITER_DEC + MATCHED_LITER_DEC + MATCHED_LITER_DEC + MATCHED_LITER_DEC + MATCHED_LITER_DEC + } + #endif + } + + dic[dicPos++] = (Byte)symbol; + continue; + } + + { + UPDATE_1(prob); + prob = probs + IsRep + state; + IF_BIT_0(prob) + { + UPDATE_0(prob); + state += kNumStates; + prob = probs + LenCoder; + } + else + { + UPDATE_1(prob); + /* + // that case was checked before with kBadRepCode + if (checkDicSize == 0 && processedPos == 0) + return SZ_ERROR_DATA; + */ + prob = probs + IsRepG0 + state; + IF_BIT_0(prob) + { + UPDATE_0(prob); + prob = probs + IsRep0Long + COMBINED_PS_STATE; + IF_BIT_0(prob) + { + UPDATE_0(prob); + dic[dicPos] = dic[dicPos - rep0 + (dicPos < rep0 ? dicBufSize : 0)]; + dicPos++; + processedPos++; + state = state < kNumLitStates ? 9 : 11; + continue; + } + UPDATE_1(prob); + } + else + { + UInt32 distance; + UPDATE_1(prob); + prob = probs + IsRepG1 + state; + IF_BIT_0(prob) + { + UPDATE_0(prob); + distance = rep1; + } + else + { + UPDATE_1(prob); + prob = probs + IsRepG2 + state; + IF_BIT_0(prob) + { + UPDATE_0(prob); + distance = rep2; + } + else + { + UPDATE_1(prob); + distance = rep3; + rep3 = rep2; + } + rep2 = rep1; + } + rep1 = rep0; + rep0 = distance; + } + state = state < kNumLitStates ? 8 : 11; + prob = probs + RepLenCoder; + } + + #ifdef _LZMA_SIZE_OPT + { + unsigned lim, offset; + CLzmaProb *probLen = prob + LenChoice; + IF_BIT_0(probLen) + { + UPDATE_0(probLen); + probLen = prob + LenLow + GET_LEN_STATE; + offset = 0; + lim = (1 << kLenNumLowBits); + } + else + { + UPDATE_1(probLen); + probLen = prob + LenChoice2; + IF_BIT_0(probLen) + { + UPDATE_0(probLen); + probLen = prob + LenLow + GET_LEN_STATE + (1 << kLenNumLowBits); + offset = kLenNumLowSymbols; + lim = (1 << kLenNumLowBits); + } + else + { + UPDATE_1(probLen); + probLen = prob + LenHigh; + offset = kLenNumLowSymbols * 2; + lim = (1 << kLenNumHighBits); + } + } + TREE_DECODE(probLen, lim, len); + len += offset; + } + #else + { + CLzmaProb *probLen = prob + LenChoice; + IF_BIT_0(probLen) + { + UPDATE_0(probLen); + probLen = prob + LenLow + GET_LEN_STATE; + len = 1; + TREE_GET_BIT(probLen, len); + TREE_GET_BIT(probLen, len); + TREE_GET_BIT(probLen, len); + len -= 8; + } + else + { + UPDATE_1(probLen); + probLen = prob + LenChoice2; + IF_BIT_0(probLen) + { + UPDATE_0(probLen); + probLen = prob + LenLow + GET_LEN_STATE + (1 << kLenNumLowBits); + len = 1; + TREE_GET_BIT(probLen, len); + TREE_GET_BIT(probLen, len); + TREE_GET_BIT(probLen, len); + } + else + { + UPDATE_1(probLen); + probLen = prob + LenHigh; + TREE_DECODE(probLen, (1 << kLenNumHighBits), len); + len += kLenNumLowSymbols * 2; + } + } + } + #endif + + if (state >= kNumStates) + { + UInt32 distance; + prob = probs + PosSlot + + ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << kNumPosSlotBits); + TREE_6_DECODE(prob, distance); + if (distance >= kStartPosModelIndex) + { + unsigned posSlot = (unsigned)distance; + unsigned numDirectBits = (unsigned)(((distance >> 1) - 1)); + distance = (2 | (distance & 1)); + if (posSlot < kEndPosModelIndex) + { + distance <<= numDirectBits; + prob = probs + SpecPos; + { + UInt32 m = 1; + distance++; + do + { + REV_BIT_VAR(prob, distance, m); + } + while (--numDirectBits); + distance -= m; + } + } + else + { + numDirectBits -= kNumAlignBits; + do + { + NORMALIZE + range >>= 1; + + { + UInt32 t; + code -= range; + t = (0 - ((UInt32)code >> 31)); /* (UInt32)((Int32)code >> 31) */ + distance = (distance << 1) + (t + 1); + code += range & t; + } + /* + distance <<= 1; + if (code >= range) + { + code -= range; + distance |= 1; + } + */ + } + while (--numDirectBits); + prob = probs + Align; + distance <<= kNumAlignBits; + { + unsigned i = 1; + REV_BIT_CONST(prob, i, 1); + REV_BIT_CONST(prob, i, 2); + REV_BIT_CONST(prob, i, 4); + REV_BIT_LAST (prob, i, 8); + distance |= i; + } + if (distance == (UInt32)0xFFFFFFFF) + { + len = kMatchSpecLenStart; + state -= kNumStates; + break; + } + } + } + + rep3 = rep2; + rep2 = rep1; + rep1 = rep0; + rep0 = distance + 1; + state = (state < kNumStates + kNumLitStates) ? kNumLitStates : kNumLitStates + 3; + if (distance >= (checkDicSize == 0 ? processedPos: checkDicSize)) + { + p->dicPos = dicPos; + return SZ_ERROR_DATA; + } + } + + len += kMatchMinLen; + + { + SizeT rem; + unsigned curLen; + SizeT pos; + + if ((rem = limit - dicPos) == 0) + { + p->dicPos = dicPos; + return SZ_ERROR_DATA; + } + + curLen = ((rem < len) ? (unsigned)rem : len); + pos = dicPos - rep0 + (dicPos < rep0 ? dicBufSize : 0); + + processedPos += (UInt32)curLen; + + len -= curLen; + if (curLen <= dicBufSize - pos) + { + Byte *dest = dic + dicPos; + ptrdiff_t src = (ptrdiff_t)pos - (ptrdiff_t)dicPos; + const Byte *lim = dest + curLen; + dicPos += (SizeT)curLen; + do + *(dest) = (Byte)*(dest + src); + while (++dest != lim); + } + else + { + do + { + dic[dicPos++] = dic[pos]; + if (++pos == dicBufSize) + pos = 0; + } + while (--curLen != 0); + } + } + } + } + while (dicPos < limit && buf < bufLimit); + + NORMALIZE; + + p->buf = buf; + p->range = range; + p->code = code; + p->remainLen = (UInt32)len; + p->dicPos = dicPos; + p->processedPos = processedPos; + p->reps[0] = rep0; + p->reps[1] = rep1; + p->reps[2] = rep2; + p->reps[3] = rep3; + p->state = (UInt32)state; + + return SZ_OK; +} +#endif + +static void MY_FAST_CALL LzmaDec_WriteRem(CLzmaDec *p, SizeT limit) +{ + if (p->remainLen != 0 && p->remainLen < kMatchSpecLenStart) + { + Byte *dic = p->dic; + SizeT dicPos = p->dicPos; + SizeT dicBufSize = p->dicBufSize; + unsigned len = (unsigned)p->remainLen; + SizeT rep0 = p->reps[0]; /* we use SizeT to avoid the BUG of VC14 for AMD64 */ + SizeT rem = limit - dicPos; + if (rem < len) + len = (unsigned)(rem); + + if (p->checkDicSize == 0 && p->prop.dicSize - p->processedPos <= len) + p->checkDicSize = p->prop.dicSize; + + p->processedPos += (UInt32)len; + p->remainLen -= (UInt32)len; + while (len != 0) + { + len--; + dic[dicPos] = dic[dicPos - rep0 + (dicPos < rep0 ? dicBufSize : 0)]; + dicPos++; + } + p->dicPos = dicPos; + } +} + + +#define kRange0 0xFFFFFFFF +#define kBound0 ((kRange0 >> kNumBitModelTotalBits) << (kNumBitModelTotalBits - 1)) +#define kBadRepCode (kBound0 + (((kRange0 - kBound0) >> kNumBitModelTotalBits) << (kNumBitModelTotalBits - 1))) +#if kBadRepCode != (0xC0000000 - 0x400) + #error Stop_Compiling_Bad_LZMA_Check +#endif + +static int MY_FAST_CALL LzmaDec_DecodeReal2(CLzmaDec *p, SizeT limit, const Byte *bufLimit) +{ + do + { + SizeT limit2 = limit; + if (p->checkDicSize == 0) + { + UInt32 rem = p->prop.dicSize - p->processedPos; + if (limit - p->dicPos > rem) + limit2 = p->dicPos + rem; + + if (p->processedPos == 0) + if (p->code >= kBadRepCode) + return SZ_ERROR_DATA; + } + + RINOK(LZMA_DECODE_REAL(p, limit2, bufLimit)); + + if (p->checkDicSize == 0 && p->processedPos >= p->prop.dicSize) + p->checkDicSize = p->prop.dicSize; + + LzmaDec_WriteRem(p, limit); + } + while (p->dicPos < limit && p->buf < bufLimit && p->remainLen < kMatchSpecLenStart); + + return 0; +} + +typedef enum +{ + DUMMY_ERROR, /* unexpected end of input stream */ + DUMMY_LIT, + DUMMY_MATCH, + DUMMY_REP +} ELzmaDummy; + +static ELzmaDummy LzmaDec_TryDummy(const CLzmaDec *p, const Byte *buf, SizeT inSize) +{ + UInt32 range = p->range; + UInt32 code = p->code; + const Byte *bufLimit = buf + inSize; + const CLzmaProb *probs = GET_PROBS; + unsigned state = (unsigned)p->state; + ELzmaDummy res; + + { + const CLzmaProb *prob; + UInt32 bound; + unsigned ttt; + unsigned posState = CALC_POS_STATE(p->processedPos, (1 << p->prop.pb) - 1); + + prob = probs + IsMatch + COMBINED_PS_STATE; + IF_BIT_0_CHECK(prob) + { + UPDATE_0_CHECK + + /* if (bufLimit - buf >= 7) return DUMMY_LIT; */ + + prob = probs + Literal; + if (p->checkDicSize != 0 || p->processedPos != 0) + prob += ((UInt32)LZMA_LIT_SIZE * + ((((p->processedPos) & ((1 << (p->prop.lp)) - 1)) << p->prop.lc) + + (p->dic[(p->dicPos == 0 ? p->dicBufSize : p->dicPos) - 1] >> (8 - p->prop.lc)))); + + if (state < kNumLitStates) + { + unsigned symbol = 1; + do { GET_BIT_CHECK(prob + symbol, symbol) } while (symbol < 0x100); + } + else + { + unsigned matchByte = p->dic[p->dicPos - p->reps[0] + + (p->dicPos < p->reps[0] ? p->dicBufSize : 0)]; + unsigned offs = 0x100; + unsigned symbol = 1; + do + { + unsigned bit; + const CLzmaProb *probLit; + matchByte += matchByte; + bit = offs; + offs &= matchByte; + probLit = prob + (offs + bit + symbol); + GET_BIT2_CHECK(probLit, symbol, offs ^= bit; , ; ) + } + while (symbol < 0x100); + } + res = DUMMY_LIT; + } + else + { + unsigned len; + UPDATE_1_CHECK; + + prob = probs + IsRep + state; + IF_BIT_0_CHECK(prob) + { + UPDATE_0_CHECK; + state = 0; + prob = probs + LenCoder; + res = DUMMY_MATCH; + } + else + { + UPDATE_1_CHECK; + res = DUMMY_REP; + prob = probs + IsRepG0 + state; + IF_BIT_0_CHECK(prob) + { + UPDATE_0_CHECK; + prob = probs + IsRep0Long + COMBINED_PS_STATE; + IF_BIT_0_CHECK(prob) + { + UPDATE_0_CHECK; + NORMALIZE_CHECK; + return DUMMY_REP; + } + else + { + UPDATE_1_CHECK; + } + } + else + { + UPDATE_1_CHECK; + prob = probs + IsRepG1 + state; + IF_BIT_0_CHECK(prob) + { + UPDATE_0_CHECK; + } + else + { + UPDATE_1_CHECK; + prob = probs + IsRepG2 + state; + IF_BIT_0_CHECK(prob) + { + UPDATE_0_CHECK; + } + else + { + UPDATE_1_CHECK; + } + } + } + state = kNumStates; + prob = probs + RepLenCoder; + } + { + unsigned limit, offset; + const CLzmaProb *probLen = prob + LenChoice; + IF_BIT_0_CHECK(probLen) + { + UPDATE_0_CHECK; + probLen = prob + LenLow + GET_LEN_STATE; + offset = 0; + limit = 1 << kLenNumLowBits; + } + else + { + UPDATE_1_CHECK; + probLen = prob + LenChoice2; + IF_BIT_0_CHECK(probLen) + { + UPDATE_0_CHECK; + probLen = prob + LenLow + GET_LEN_STATE + (1 << kLenNumLowBits); + offset = kLenNumLowSymbols; + limit = 1 << kLenNumLowBits; + } + else + { + UPDATE_1_CHECK; + probLen = prob + LenHigh; + offset = kLenNumLowSymbols * 2; + limit = 1 << kLenNumHighBits; + } + } + TREE_DECODE_CHECK(probLen, limit, len); + len += offset; + } + + if (state < 4) + { + unsigned posSlot; + prob = probs + PosSlot + + ((len < kNumLenToPosStates - 1 ? len : kNumLenToPosStates - 1) << + kNumPosSlotBits); + TREE_DECODE_CHECK(prob, 1 << kNumPosSlotBits, posSlot); + if (posSlot >= kStartPosModelIndex) + { + unsigned numDirectBits = ((posSlot >> 1) - 1); + + /* if (bufLimit - buf >= 8) return DUMMY_MATCH; */ + + if (posSlot < kEndPosModelIndex) + { + prob = probs + SpecPos + ((2 | (posSlot & 1)) << numDirectBits); + } + else + { + numDirectBits -= kNumAlignBits; + do + { + NORMALIZE_CHECK + range >>= 1; + code -= range & (((code - range) >> 31) - 1); + /* if (code >= range) code -= range; */ + } + while (--numDirectBits); + prob = probs + Align; + numDirectBits = kNumAlignBits; + } + { + unsigned i = 1; + unsigned m = 1; + do + { + REV_BIT_CHECK(prob, i, m); + } + while (--numDirectBits); + } + } + } + } + } + NORMALIZE_CHECK; + return res; +} + + +void LzmaDec_InitDicAndState(CLzmaDec *p, BoolInt initDic, BoolInt initState) +{ + p->remainLen = kMatchSpecLenStart + 1; + p->tempBufSize = 0; + + if (initDic) + { + p->processedPos = 0; + p->checkDicSize = 0; + p->remainLen = kMatchSpecLenStart + 2; + } + if (initState) + p->remainLen = kMatchSpecLenStart + 2; +} + +void LzmaDec_Init(CLzmaDec *p) +{ + p->dicPos = 0; + LzmaDec_InitDicAndState(p, True, True); +} + + +SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, const Byte *src, SizeT *srcLen, + ELzmaFinishMode finishMode, ELzmaStatus *status) +{ + SizeT inSize = *srcLen; + (*srcLen) = 0; + + *status = LZMA_STATUS_NOT_SPECIFIED; + + if (p->remainLen > kMatchSpecLenStart) + { + for (; inSize > 0 && p->tempBufSize < RC_INIT_SIZE; (*srcLen)++, inSize--) + p->tempBuf[p->tempBufSize++] = *src++; + if (p->tempBufSize != 0 && p->tempBuf[0] != 0) + return SZ_ERROR_DATA; + if (p->tempBufSize < RC_INIT_SIZE) + { + *status = LZMA_STATUS_NEEDS_MORE_INPUT; + return SZ_OK; + } + p->code = + ((UInt32)p->tempBuf[1] << 24) + | ((UInt32)p->tempBuf[2] << 16) + | ((UInt32)p->tempBuf[3] << 8) + | ((UInt32)p->tempBuf[4]); + p->range = 0xFFFFFFFF; + p->tempBufSize = 0; + + if (p->remainLen > kMatchSpecLenStart + 1) + { + SizeT numProbs = LzmaProps_GetNumProbs(&p->prop); + SizeT i; + CLzmaProb *probs = p->probs; + for (i = 0; i < numProbs; i++) + probs[i] = kBitModelTotal >> 1; + p->reps[0] = p->reps[1] = p->reps[2] = p->reps[3] = 1; + p->state = 0; + } + + p->remainLen = 0; + } + + LzmaDec_WriteRem(p, dicLimit); + + while (p->remainLen != kMatchSpecLenStart) + { + int checkEndMarkNow = 0; + + if (p->dicPos >= dicLimit) + { + if (p->remainLen == 0 && p->code == 0) + { + *status = LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK; + return SZ_OK; + } + if (finishMode == LZMA_FINISH_ANY) + { + *status = LZMA_STATUS_NOT_FINISHED; + return SZ_OK; + } + if (p->remainLen != 0) + { + *status = LZMA_STATUS_NOT_FINISHED; + return SZ_ERROR_DATA; + } + checkEndMarkNow = 1; + } + + if (p->tempBufSize == 0) + { + SizeT processed; + const Byte *bufLimit; + if (inSize < LZMA_REQUIRED_INPUT_MAX || checkEndMarkNow) + { + int dummyRes = LzmaDec_TryDummy(p, src, inSize); + if (dummyRes == DUMMY_ERROR) + { + memcpy(p->tempBuf, src, inSize); + p->tempBufSize = (unsigned)inSize; + (*srcLen) += inSize; + *status = LZMA_STATUS_NEEDS_MORE_INPUT; + return SZ_OK; + } + if (checkEndMarkNow && dummyRes != DUMMY_MATCH) + { + *status = LZMA_STATUS_NOT_FINISHED; + return SZ_ERROR_DATA; + } + bufLimit = src; + } + else + bufLimit = src + inSize - LZMA_REQUIRED_INPUT_MAX; + p->buf = src; + if (LzmaDec_DecodeReal2(p, dicLimit, bufLimit) != 0) + return SZ_ERROR_DATA; + processed = (SizeT)(p->buf - src); + (*srcLen) += processed; + src += processed; + inSize -= processed; + } + else + { + unsigned rem = p->tempBufSize, lookAhead = 0; + while (rem < LZMA_REQUIRED_INPUT_MAX && lookAhead < inSize) + p->tempBuf[rem++] = src[lookAhead++]; + p->tempBufSize = rem; + if (rem < LZMA_REQUIRED_INPUT_MAX || checkEndMarkNow) + { + int dummyRes = LzmaDec_TryDummy(p, p->tempBuf, (SizeT)rem); + if (dummyRes == DUMMY_ERROR) + { + (*srcLen) += (SizeT)lookAhead; + *status = LZMA_STATUS_NEEDS_MORE_INPUT; + return SZ_OK; + } + if (checkEndMarkNow && dummyRes != DUMMY_MATCH) + { + *status = LZMA_STATUS_NOT_FINISHED; + return SZ_ERROR_DATA; + } + } + p->buf = p->tempBuf; + if (LzmaDec_DecodeReal2(p, dicLimit, p->buf) != 0) + return SZ_ERROR_DATA; + + { + unsigned kkk = (unsigned)(p->buf - p->tempBuf); + if (rem < kkk) + return SZ_ERROR_FAIL; /* some internal error */ + rem -= kkk; + if (lookAhead < rem) + return SZ_ERROR_FAIL; /* some internal error */ + lookAhead -= rem; + } + (*srcLen) += (SizeT)lookAhead; + src += lookAhead; + inSize -= (SizeT)lookAhead; + p->tempBufSize = 0; + } + } + + if (p->code != 0) + return SZ_ERROR_DATA; + *status = LZMA_STATUS_FINISHED_WITH_MARK; + return SZ_OK; +} + + +SRes LzmaDec_DecodeToBuf(CLzmaDec *p, Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status) +{ + SizeT outSize = *destLen; + SizeT inSize = *srcLen; + *srcLen = *destLen = 0; + for (;;) + { + SizeT inSizeCur = inSize, outSizeCur, dicPos; + ELzmaFinishMode curFinishMode; + SRes res; + if (p->dicPos == p->dicBufSize) + p->dicPos = 0; + dicPos = p->dicPos; + if (outSize > p->dicBufSize - dicPos) + { + outSizeCur = p->dicBufSize; + curFinishMode = LZMA_FINISH_ANY; + } + else + { + outSizeCur = dicPos + outSize; + curFinishMode = finishMode; + } + + res = LzmaDec_DecodeToDic(p, outSizeCur, src, &inSizeCur, curFinishMode, status); + src += inSizeCur; + inSize -= inSizeCur; + *srcLen += inSizeCur; + outSizeCur = p->dicPos - dicPos; + memcpy(dest, p->dic + dicPos, outSizeCur); + dest += outSizeCur; + outSize -= outSizeCur; + *destLen += outSizeCur; + if (res != 0) + return res; + if (outSizeCur == 0 || outSize == 0) + return SZ_OK; + } +} + +void LzmaDec_FreeProbs(CLzmaDec *p, ISzAllocPtr alloc) +{ + ISzAlloc_Free(alloc, p->probs); + p->probs = NULL; +} + +static void LzmaDec_FreeDict(CLzmaDec *p, ISzAllocPtr alloc) +{ + ISzAlloc_Free(alloc, p->dic); + p->dic = NULL; +} + +void LzmaDec_Free(CLzmaDec *p, ISzAllocPtr alloc) +{ + LzmaDec_FreeProbs(p, alloc); + LzmaDec_FreeDict(p, alloc); +} + +SRes LzmaProps_Decode(CLzmaProps *p, const Byte *data, unsigned size) +{ + UInt32 dicSize; + Byte d; + + if (size < LZMA_PROPS_SIZE) + return SZ_ERROR_UNSUPPORTED; + else + dicSize = data[1] | ((UInt32)data[2] << 8) | ((UInt32)data[3] << 16) | ((UInt32)data[4] << 24); + + if (dicSize < LZMA_DIC_MIN) + dicSize = LZMA_DIC_MIN; + p->dicSize = dicSize; + + d = data[0]; + if (d >= (9 * 5 * 5)) + return SZ_ERROR_UNSUPPORTED; + + p->lc = (Byte)(d % 9); + d /= 9; + p->pb = (Byte)(d / 5); + p->lp = (Byte)(d % 5); + + return SZ_OK; +} + +static SRes LzmaDec_AllocateProbs2(CLzmaDec *p, const CLzmaProps *propNew, ISzAllocPtr alloc) +{ + UInt32 numProbs = LzmaProps_GetNumProbs(propNew); + if (!p->probs || numProbs != p->numProbs) + { + LzmaDec_FreeProbs(p, alloc); + p->probs = (CLzmaProb *)ISzAlloc_Alloc(alloc, numProbs * sizeof(CLzmaProb)); + if (!p->probs) + return SZ_ERROR_MEM; + p->probs_1664 = p->probs + 1664; + p->numProbs = numProbs; + } + return SZ_OK; +} + +SRes LzmaDec_AllocateProbs(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAllocPtr alloc) +{ + CLzmaProps propNew; + RINOK(LzmaProps_Decode(&propNew, props, propsSize)); + RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc)); + p->prop = propNew; + return SZ_OK; +} + +SRes LzmaDec_Allocate(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAllocPtr alloc) +{ + CLzmaProps propNew; + SizeT dicBufSize; + RINOK(LzmaProps_Decode(&propNew, props, propsSize)); + RINOK(LzmaDec_AllocateProbs2(p, &propNew, alloc)); + + { + UInt32 dictSize = propNew.dicSize; + SizeT mask = ((UInt32)1 << 12) - 1; + if (dictSize >= ((UInt32)1 << 30)) mask = ((UInt32)1 << 22) - 1; + else if (dictSize >= ((UInt32)1 << 22)) mask = ((UInt32)1 << 20) - 1;; + dicBufSize = ((SizeT)dictSize + mask) & ~mask; + if (dicBufSize < dictSize) + dicBufSize = dictSize; + } + + if (!p->dic || dicBufSize != p->dicBufSize) + { + LzmaDec_FreeDict(p, alloc); + p->dic = (Byte *)ISzAlloc_Alloc(alloc, dicBufSize); + if (!p->dic) + { + LzmaDec_FreeProbs(p, alloc); + return SZ_ERROR_MEM; + } + } + p->dicBufSize = dicBufSize; + p->prop = propNew; + return SZ_OK; +} + +SRes LzmaDecode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, + const Byte *propData, unsigned propSize, ELzmaFinishMode finishMode, + ELzmaStatus *status, ISzAllocPtr alloc) +{ + CLzmaDec p; + SRes res; + SizeT outSize = *destLen, inSize = *srcLen; + *destLen = *srcLen = 0; + *status = LZMA_STATUS_NOT_SPECIFIED; + if (inSize < RC_INIT_SIZE) + return SZ_ERROR_INPUT_EOF; + LzmaDec_Construct(&p); + RINOK(LzmaDec_AllocateProbs(&p, propData, propSize, alloc)); + p.dic = dest; + p.dicBufSize = outSize; + LzmaDec_Init(&p); + *srcLen = inSize; + res = LzmaDec_DecodeToDic(&p, outSize, src, srcLen, finishMode, status); + *destLen = p.dicPos; + if (res == SZ_OK && *status == LZMA_STATUS_NEEDS_MORE_INPUT) + res = SZ_ERROR_INPUT_EOF; + LzmaDec_FreeProbs(&p, alloc); + return res; +} diff --git a/fsbl/lib/lzma/LzmaDec.h b/fsbl/lib/lzma/LzmaDec.h new file mode 100644 index 000000000..0bc3b6018 --- /dev/null +++ b/fsbl/lib/lzma/LzmaDec.h @@ -0,0 +1,232 @@ +/* LzmaDec.h -- LZMA Decoder +2018-04-21 : Igor Pavlov : Public domain */ + +#ifndef __LZMA_DEC_H +#define __LZMA_DEC_H + +#include +#include +#include +#include + +#include "7zTypes.h" + +EXTERN_C_BEGIN + +/* #define _LZMA_PROB32 */ +/* _LZMA_PROB32 can increase the speed on some CPUs, + but memory usage for CLzmaDec::probs will be doubled in that case */ + +typedef +#ifdef _LZMA_PROB32 + UInt32 +#else + UInt16 +#endif + CLzmaProb; + +/* ---------- LZMA Properties ---------- */ + +#define LZMA_PROPS_SIZE 5 + +typedef struct _CLzmaProps { + Byte lc; + Byte lp; + Byte pb; + Byte _pad_; + UInt32 dicSize; +} CLzmaProps; + +/* LzmaProps_Decode - decodes properties +Returns: + SZ_OK + SZ_ERROR_UNSUPPORTED - Unsupported properties +*/ + +SRes LzmaProps_Decode(CLzmaProps *p, const Byte *data, unsigned size); + +/* ---------- LZMA Decoder state ---------- */ + +/* LZMA_REQUIRED_INPUT_MAX = number of required input bytes for worst case. + Num bits = log2((2^11 / 31) ^ 22) + 26 < 134 + 26 = 160; */ + +#define LZMA_REQUIRED_INPUT_MAX 20 + +typedef struct { + /* Don't change this structure. ASM code can use it. */ + CLzmaProps prop; + CLzmaProb *probs; + CLzmaProb *probs_1664; + Byte *dic; + SizeT dicBufSize; + SizeT dicPos; + const Byte *buf; + UInt32 range; + UInt32 code; + UInt32 processedPos; + UInt32 checkDicSize; + UInt32 reps[4]; + UInt32 state; + UInt32 remainLen; + + UInt32 numProbs; + unsigned tempBufSize; + Byte tempBuf[LZMA_REQUIRED_INPUT_MAX]; +} CLzmaDec; + +#define LzmaDec_Construct(p) \ + { \ + (p)->dic = NULL; \ + (p)->probs = NULL; \ + } + +void LzmaDec_Init(CLzmaDec *p); + +/* There are two types of LZMA streams: + - Stream with end mark. That end mark adds about 6 bytes to compressed size. + - Stream without end mark. You must know exact uncompressed size to decompress such stream. */ + +typedef enum { + LZMA_FINISH_ANY, /* finish at any point */ + LZMA_FINISH_END /* block must be finished at the end */ +} ELzmaFinishMode; + +/* ELzmaFinishMode has meaning only if the decoding reaches output limit !!! + + You must use LZMA_FINISH_END, when you know that current output buffer + covers last bytes of block. In other cases you must use LZMA_FINISH_ANY. + + If LZMA decoder sees end marker before reaching output limit, it returns SZ_OK, + and output value of destLen will be less than output buffer size limit. + You can check status result also. + + You can use multiple checks to test data integrity after full decompression: + 1) Check Result and "status" variable. + 2) Check that output(destLen) = uncompressedSize, if you know real uncompressedSize. + 3) Check that output(srcLen) = compressedSize, if you know real compressedSize. + You must use correct finish mode in that case. */ + +typedef enum { + LZMA_STATUS_NOT_SPECIFIED, /* use main error code instead */ + LZMA_STATUS_FINISHED_WITH_MARK, /* stream was finished with end mark. */ + LZMA_STATUS_NOT_FINISHED, /* stream was not finished */ + LZMA_STATUS_NEEDS_MORE_INPUT, /* you must provide more input bytes */ + LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK /* there is probability that stream was finished without end mark */ +} ELzmaStatus; + +/* ELzmaStatus is used only as output value for function call */ + +/* ---------- Interfaces ---------- */ + +/* There are 3 levels of interfaces: + 1) Dictionary Interface + 2) Buffer Interface + 3) One Call Interface + You can select any of these interfaces, but don't mix functions from different + groups for same object. */ + +/* There are two variants to allocate state for Dictionary Interface: + 1) LzmaDec_Allocate / LzmaDec_Free + 2) LzmaDec_AllocateProbs / LzmaDec_FreeProbs + You can use variant 2, if you set dictionary buffer manually. + For Buffer Interface you must always use variant 1. + +LzmaDec_Allocate* can return: + SZ_OK + SZ_ERROR_MEM - Memory allocation error + SZ_ERROR_UNSUPPORTED - Unsupported properties +*/ + +SRes LzmaDec_AllocateProbs(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAllocPtr alloc); +void LzmaDec_FreeProbs(CLzmaDec *p, ISzAllocPtr alloc); + +SRes LzmaDec_Allocate(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAllocPtr alloc); +void LzmaDec_Free(CLzmaDec *p, ISzAllocPtr alloc); + +/* ---------- Dictionary Interface ---------- */ + +/* You can use it, if you want to eliminate the overhead for data copying from + dictionary to some other external buffer. + You must work with CLzmaDec variables directly in this interface. + + STEPS: + LzmaDec_Construct() + LzmaDec_Allocate() + for (each new stream) + { + LzmaDec_Init() + while (it needs more decompression) + { + LzmaDec_DecodeToDic() + use data from CLzmaDec::dic and update CLzmaDec::dicPos + } + } + LzmaDec_Free() +*/ + +/* LzmaDec_DecodeToDic + + The decoding to internal dictionary buffer (CLzmaDec::dic). + You must manually update CLzmaDec::dicPos, if it reaches CLzmaDec::dicBufSize !!! + +finishMode: + It has meaning only if the decoding reaches output limit (dicLimit). + LZMA_FINISH_ANY - Decode just dicLimit bytes. + LZMA_FINISH_END - Stream must be finished after dicLimit. + +Returns: + SZ_OK + status: + LZMA_STATUS_FINISHED_WITH_MARK + LZMA_STATUS_NOT_FINISHED + LZMA_STATUS_NEEDS_MORE_INPUT + LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK + SZ_ERROR_DATA - Data error +*/ + +SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit, const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, + ELzmaStatus *status); + +/* ---------- Buffer Interface ---------- */ + +/* It's zlib-like interface. + See LzmaDec_DecodeToDic description for information about STEPS and return results, + but you must use LzmaDec_DecodeToBuf instead of LzmaDec_DecodeToDic and you don't need + to work with CLzmaDec variables manually. + +finishMode: + It has meaning only if the decoding reaches output limit (*destLen). + LZMA_FINISH_ANY - Decode just destLen bytes. + LZMA_FINISH_END - Stream must be finished after (*destLen). +*/ + +SRes LzmaDec_DecodeToBuf(CLzmaDec *p, Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, + ELzmaFinishMode finishMode, ELzmaStatus *status); + +/* ---------- One Call Interface ---------- */ + +/* LzmaDecode + +finishMode: + It has meaning only if the decoding reaches output limit (*destLen). + LZMA_FINISH_ANY - Decode just destLen bytes. + LZMA_FINISH_END - Stream must be finished after (*destLen). + +Returns: + SZ_OK + status: + LZMA_STATUS_FINISHED_WITH_MARK + LZMA_STATUS_NOT_FINISHED + LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK + SZ_ERROR_DATA - Data error + SZ_ERROR_MEM - Memory allocation error + SZ_ERROR_UNSUPPORTED - Unsupported properties + SZ_ERROR_INPUT_EOF - It needs more bytes in input buffer (src). +*/ + +SRes LzmaDecode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen, const Byte *propData, unsigned propSize, + ELzmaFinishMode finishMode, ELzmaStatus *status, ISzAllocPtr alloc); + +EXTERN_C_END + +#endif diff --git a/fsbl/lib/lzma/lzma.c b/fsbl/lib/lzma/lzma.c new file mode 100644 index 000000000..e69de29bb diff --git a/fsbl/lib/stdlib/abort.c b/fsbl/lib/stdlib/abort.c new file mode 100644 index 000000000..af19ccfa4 --- /dev/null +++ b/fsbl/lib/stdlib/abort.c @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +/* + * This is a basic implementation. This could be improved. + */ +void abort (void) +{ + ERROR("ABORT\n"); + panic(); +} diff --git a/fsbl/lib/stdlib/assert.c b/fsbl/lib/stdlib/assert.c new file mode 100644 index 000000000..0f829bb5e --- /dev/null +++ b/fsbl/lib/stdlib/assert.c @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include +#include +#include +#include + +void __assert(const char *file, unsigned int line, const char *assertion) +{ + tf_printf("ASSERT: %s <%d> : %s\n", file, line, assertion); + console_flush(); + panic_handler(); +} \ No newline at end of file diff --git a/fsbl/lib/stdlib/exit.c b/fsbl/lib/stdlib/exit.c new file mode 100644 index 000000000..3d23d7be5 --- /dev/null +++ b/fsbl/lib/stdlib/exit.c @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +void exit(int v) +{ + ERROR("EXIT\n"); + panic(); +} diff --git a/fsbl/lib/stdlib/mem.c b/fsbl/lib/stdlib/mem.c new file mode 100644 index 000000000..580363ee3 --- /dev/null +++ b/fsbl/lib/stdlib/mem.c @@ -0,0 +1,140 @@ +/* + * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include /* size_t */ +#include +#include +#include + +/* + * Compare @len bytes of @s1 and @s2 + */ +int memcmp(const void *s1, const void *s2, size_t len) +{ + const unsigned char *s = s1; + const unsigned char *d = s2; + unsigned char sc; + unsigned char dc; + + while (len--) { + sc = *s++; + dc = *d++; + if (sc - dc) + return (sc - dc); + } + + return 0; +} + +/* + * Move @len bytes from @src to @dst + */ +void *memmove(void *dst, const void *src, size_t len) +{ + /* + * The following test makes use of unsigned arithmetic overflow to + * more efficiently test the condition !(src <= dst && dst < str+len). + * It also avoids the situation where the more explicit test would give + * incorrect results were the calculation str+len to overflow (though + * that issue is probably moot as such usage is probably undefined + * behaviour and a bug anyway. + */ + if ((size_t)dst - (size_t)src >= len) { + /* destination not in source data, so can safely use memcpy */ + return memcpy(dst, src, len); + } else { + /* copy backwards... */ + const char *end = dst; + const char *s = (const char *)src + len; + char *d = (char *)dst + len; + while (d != end) + *--d = *--s; + } + return dst; +} + +/* + * Scan @len bytes of @src for value @c + */ +void *memchr(const void *src, int c, size_t len) +{ + const char *s = src; + + while (len--) { + if (*s == c) + return (void *) s; + s++; + } + + return NULL; +} + +void *_memcpy(void *dst, const void *src, size_t len) +{ + const char *s = src; + char *d = dst; + + while (len--) + *d++ = *s++; + + return dst; +} + +#define SS (sizeof(size_t)) +#define ALIGN (sizeof(size_t)-1) +#define ONES ((size_t)-1/UCHAR_MAX) + +/* + * Fill @count bytes of memory pointed to by @dst with @val + */ +void *memset(void *dest, int c, size_t n) +{ + unsigned char *s = dest; + + c = (unsigned char)c; + + for (; ((uintptr_t)s & ALIGN) && n; n--) + *s++ = c; + + if (n) { + size_t *w, k = ONES * c; + + for (w = (void *)s; n >= SS; n -= SS, w++) + *w = k; + for (s = (void *)w; n; n--, s++) + *s = c; + } + + return dest; +} + +/* + * Copy @len bytes from @src to @dst + */ +void *memcpy(void *restrict dest, const void *restrict src, size_t n) +{ + unsigned char *d = dest; + const unsigned char *s = src; + + if (((uintptr_t)d & ALIGN) != ((uintptr_t)s & ALIGN)) + goto misaligned; + + for (; ((uintptr_t)d & ALIGN) && n; n--) + *d++ = *s++; + if (n) { + size_t *wd = (void *)d; + const size_t *ws = (const void *)s; + + for (; n >= SS; n -= SS) + *wd++ = *ws++; + d = (void *)wd; + s = (const void *)ws; +misaligned: + for (; n; n--) + *d++ = *s++; + } + return dest; +} diff --git a/fsbl/lib/stdlib/misc.c b/fsbl/lib/stdlib/misc.c new file mode 100644 index 000000000..e955c2195 --- /dev/null +++ b/fsbl/lib/stdlib/misc.c @@ -0,0 +1,42 @@ +#include +#include +#include + +#define MAXNBUF (sizeof(intmax_t) * 8 + 1) + +char const hex2ascii_data[] = "0123456789abcdefghijklmnopqrstuvwxyz"; +#define hex2ascii(hex) (hex2ascii_data[hex]) + +char *ntostr(char *nbuf, uintmax_t num, int _base, int upper) +{ + typeof(num) base = (typeof(base))_base; + char *p, *q, c; + + p = q = nbuf; + *p = '\0'; + + do { + c = hex2ascii(num % base); + *++p = upper ? (char)toupper(c) : c; + } while (num /= base); + + while (q < p) { + c = *q; + *q++ = *p; + *p-- = c; + } + + return p; +} + +void bytes_reverse(void *buf, size_t n) +{ + uint8_t t, *a = buf; + int i, j; + + for (i = 0, j = n - 1; i < j; i++, j--) { + t = a[i]; + a[i] = a[j]; + a[j] = t; + } +} diff --git a/fsbl/lib/stdlib/putchar.c b/fsbl/lib/stdlib/putchar.c new file mode 100644 index 000000000..810807492 --- /dev/null +++ b/fsbl/lib/stdlib/putchar.c @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include +#include +#include +#include + +#include "platform.h" + +/* Putchar() should either return the character printed or EOF in case of error. + * Our current console_putc() function assumes success and returns the + * character. Write all other printing functions in terms of putchar(), if + * possible, so they all benefit when this is improved. + */ +int putchar_l(int c, int level) +{ + uint32_t *const log_size = (void *)BOOT_LOG_LEN_ADDR; +#ifdef __riscv + uint8_t *const log_buf = (void *)(phys_to_dma(BOOT_LOG_BUF_BASE) | SYSMAP_MIRROR_OFFSET); +#else + uint8_t *const log_buf = (void *)phys_to_dma(BOOT_LOG_BUF_BASE); +#endif + + int res; + + if (*log_size >= BOOT_LOG_BUF_SIZE) + *log_size = 0; + + log_buf[(*log_size)++] = c; + + if (level > LOG_LEVEL) + return c; + + if (get_sw_info()->dis_uart_msg) + return c; + + if (console_putc((unsigned char)c) >= 0) + res = c; + else + res = EOF; + + return res; +} diff --git a/fsbl/lib/stdlib/sscanf.c b/fsbl/lib/stdlib/sscanf.c new file mode 100644 index 000000000..674ae79f9 --- /dev/null +++ b/fsbl/lib/stdlib/sscanf.c @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +/* + * TODO: This is not a real implementation of the sscanf() function. It just + * returns the number of expected arguments based on the number of '%' found + * in the format string. + */ +int +sscanf(const char *__restrict str, char const *__restrict fmt, ...) +{ + int ret = 0; + + while (*fmt != '\0') { + if (*fmt++ == '%') { + ret++; + } + } + + return ret; +} diff --git a/fsbl/lib/stdlib/stdlib.mk b/fsbl/lib/stdlib/stdlib.mk new file mode 100644 index 000000000..dd9744b4b --- /dev/null +++ b/fsbl/lib/stdlib/stdlib.mk @@ -0,0 +1,21 @@ +# +# Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause +# + +STDLIB_SRCS := \ + $(addprefix lib/stdlib/, \ + misc.c \ + assert.c \ + mem.c \ + putchar.c \ + strchr.c \ + strcmp.c \ + strlen.c \ + strncmp.c \ + strnlen.c) + +STDLIB_INCLUDES := \ + -Iinclude/stdlib \ + -Iinclude/stdlib/sys diff --git a/fsbl/lib/stdlib/strchr.c b/fsbl/lib/stdlib/strchr.c new file mode 100644 index 000000000..4247dcd36 --- /dev/null +++ b/fsbl/lib/stdlib/strchr.c @@ -0,0 +1,52 @@ +/*- + * Copyright (c) 1990, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Portions copyright (c) 2013-2014, ARM Limited and Contributors. + * All rights reserved. + */ + +#include +#include +#include + +char * +strchr(const char *p, int ch) +{ + char c; + + c = ch; + for (;; ++p) { + if (*p == c) + return ((char *)p); + if (*p == '\0') + return (NULL); + } + /* NOTREACHED */ +} diff --git a/fsbl/lib/stdlib/strcmp.c b/fsbl/lib/stdlib/strcmp.c new file mode 100644 index 000000000..bb86e0f2c --- /dev/null +++ b/fsbl/lib/stdlib/strcmp.c @@ -0,0 +1,66 @@ +/*- + * Copyright (c) 1990, 1993 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Chris Torek. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Portions copyright (c) 2014, ARM Limited and Contributors. + * All rights reserved. + */ + +#include +#include +#include + +/* + * Compare strings. + */ +int +strcmp(const char *s1, const char *s2) +{ + while (*s1 == *s2++) + if (*s1++ == '\0') + return 0; + return *(const unsigned char *)s1 - *(const unsigned char *)(s2 - 1); +} + +int +strcasecmp(const char *s1, const char *s2) +{ + const unsigned char *us1 = (const unsigned char *)s1; + const unsigned char *us2 = (const unsigned char *)s2; + + while (tolower(*us1) == tolower(*us2)) { + if (*us1++ == '\0') + return 0; + us2++; + } + return tolower(*us1) - tolower(*us2); +} diff --git a/fsbl/lib/stdlib/strlen.c b/fsbl/lib/stdlib/strlen.c new file mode 100644 index 000000000..23c3d3929 --- /dev/null +++ b/fsbl/lib/stdlib/strlen.c @@ -0,0 +1,44 @@ +/*- + * Copyright (c) 1990, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Portions copyright (c) 2009-2014, ARM Limited and Contributors. All rights reserved. + */ + +#include + +size_t +strlen(str) + const char *str; +{ + register const char *s; + + for (s = str; *s; ++s); + return(s - str); +} diff --git a/fsbl/lib/stdlib/strncmp.c b/fsbl/lib/stdlib/strncmp.c new file mode 100644 index 000000000..f45f4a223 --- /dev/null +++ b/fsbl/lib/stdlib/strncmp.c @@ -0,0 +1,52 @@ +/* + * Copyright (c) 1989, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Portions copyright (c) 2014, ARM Limited and Contributors. + * All rights reserved. + */ + +#include +#include + +int +strncmp(const char *s1, const char *s2, size_t n) +{ + + if (n == 0) + return 0; + do { + if (*s1 != *s2++) + return (*(const unsigned char *)s1 - + *(const unsigned char *)(s2 - 1)); + if (*s1++ == '\0') + break; + } while (--n != 0); + return 0; +} diff --git a/fsbl/lib/stdlib/strnlen.c b/fsbl/lib/stdlib/strnlen.c new file mode 100644 index 000000000..d48502bdb --- /dev/null +++ b/fsbl/lib/stdlib/strnlen.c @@ -0,0 +1,45 @@ +/*- + * Copyright (c) 2009 David Schultz + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* + * Portions copyright (c) 2017, ARM Limited and Contributors. All rights reserved. + */ + +#include + +#include + +size_t +strnlen(const char *s, size_t maxlen) +{ + size_t len; + + for (len = 0; len < maxlen; len++, s++) { + if (!*s) + break; + } + return (len); +} diff --git a/fsbl/lib/stdlib/subr_prf.c b/fsbl/lib/stdlib/subr_prf.c new file mode 100644 index 000000000..c1035624e --- /dev/null +++ b/fsbl/lib/stdlib/subr_prf.c @@ -0,0 +1,548 @@ +/*- + * Copyright (c) 1986, 1988, 1991, 1993 + * The Regents of the University of California. All rights reserved. + * (c) UNIX System Laboratories, Inc. + * All or some portions of this file are derived from material licensed + * to the University of California by American Telephone and Telegraph + * Co. or Unix System Laboratories, Inc. and are reproduced herein with + * the permission of UNIX System Laboratories, Inc. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)subr_prf.c 8.3 (Berkeley) 1/21/94 + */ + +/* + * Portions copyright (c) 2009-2014, ARM Limited and Contributors. + * All rights reserved. + */ + +#include +#include +#include +#include +#include +#include + +typedef unsigned char u_char; +typedef unsigned int u_int; +typedef int64_t quad_t; +typedef uint64_t u_quad_t; +typedef unsigned long u_long; +typedef unsigned short u_short; + +static inline int imax(int a, int b) { return (a > b ? a : b); } + +/* + * Note that stdarg.h and the ANSI style va_start macro is used for both + * ANSI and traditional C compilers. + */ + +#define TOCONS 0x01 +#define TOTTY 0x02 +#define TOLOG 0x04 + +/* Max number conversion buffer length: a u_quad_t in base 2, plus NUL byte. */ +#define MAXNBUF (sizeof(intmax_t) * 8 + 1) + +struct putchar_arg { + int flags; + int pri; + struct tty *tty; + char *p_bufr; + size_t n_bufr; + char *p_next; + size_t remain; +}; + +struct snprintf_arg { + char *str; + size_t remain; +}; + +extern int log_open; + +static char *ksprintn(char *nbuf, uintmax_t num, int base, int *len, int upper); +static void snprintf_func(int ch, void *arg); +static int kvprintf(char const *fmt, void (*func)(int, void*), void *arg, int radix, va_list ap); + +int vsnprintf(char *str, size_t size, const char *format, va_list ap); + +static char const hex2ascii_data[] = "0123456789abcdefghijklmnopqrstuvwxyz"; +#define hex2ascii(hex) (hex2ascii_data[hex]) + +/* + * Scaled down version of sprintf(3). + */ +int +sprintf(char *buf, const char *cfmt, ...) +{ + int retval; + va_list ap; + + va_start(ap, cfmt); + retval = kvprintf(cfmt, NULL, (void *)buf, 10, ap); + buf[retval] = '\0'; + va_end(ap); + return (retval); +} + +/* + * Scaled down version of vsprintf(3). + */ +int +vsprintf(char *buf, const char *cfmt, va_list ap) +{ + int retval; + + retval = kvprintf(cfmt, NULL, (void *)buf, 10, ap); + buf[retval] = '\0'; + return (retval); +} + +/* + * Scaled down version of snprintf(3). + */ +int +snprintf(char *str, size_t size, const char *format, ...) +{ + int retval; + va_list ap; + + va_start(ap, format); + retval = vsnprintf(str, size, format, ap); + va_end(ap); + return(retval); +} + +/* + * Scaled down version of vsnprintf(3). + */ +int +vsnprintf(char *str, size_t size, const char *format, va_list ap) +{ + struct snprintf_arg info; + int retval; + + info.str = str; + info.remain = size; + retval = kvprintf(format, snprintf_func, &info, 10, ap); + if (info.remain >= 1) + *info.str++ = '\0'; + return (retval); +} + +static void +snprintf_func(int ch, void *arg) +{ + struct snprintf_arg *const info = arg; + + if (info->remain >= 2) { + *info->str++ = ch; + info->remain--; + } +} + + +/* + * Kernel version which takes radix argument vsnprintf(3). + */ +int +vsnrprintf(char *str, size_t size, int radix, const char *format, va_list ap) +{ + struct snprintf_arg info; + int retval; + + info.str = str; + info.remain = size; + retval = kvprintf(format, snprintf_func, &info, radix, ap); + if (info.remain >= 1) + *info.str++ = '\0'; + return (retval); +} + + +/* + * Put a NUL-terminated ASCII number (base <= 36) in a buffer in reverse + * order; return an optional length and a pointer to the last character + * written in the buffer (i.e., the first character of the string). + * The buffer pointed to by `nbuf' must have length >= MAXNBUF. + */ +static char * +ksprintn(char *nbuf, uintmax_t num, int base, int *lenp, int upper) +{ + char *p, c; + + p = nbuf; + *p = '\0'; + do { + c = hex2ascii(num % base); + *++p = upper ? toupper(c) : c; + } while (num /= base); + if (lenp) + *lenp = p - nbuf; + return (p); +} + +/* + * Scaled down version of printf(3). + * + * Two additional formats: + * + * The format %b is supported to decode error registers. + * Its usage is: + * + * printf("reg=%b\n", regval, "*"); + * + * where is the output base expressed as a control character, e.g. + * \10 gives octal; \20 gives hex. Each arg is a sequence of characters, + * the first of which gives the bit number to be inspected (origin 1), and + * the next characters (up to a control character, i.e. a character <= 32), + * give the name of the register. Thus: + * + * kvprintf("reg=%b\n", 3, "\10\2BITTWO\1BITONE\n"); + * + * would produce output: + * + * reg=3 + * + * XXX: %D -- Hexdump, takes pointer and separator string: + * ("%6D", ptr, ":") -> XX:XX:XX:XX:XX:XX + * ("%*D", len, ptr, " " -> XX XX XX XX ... + */ +int +kvprintf(char const *fmt, void (*func)(int, void*), void *arg, int radix, va_list ap) +{ +#define PCHAR(c) {int cc=(c); if (func) (*func)(cc,arg); else *d++ = cc; retval++; } + char nbuf[MAXNBUF]; + char *d; + const char *p, *percent, *q; + u_char *up; + int ch, n; + uintmax_t num; + int base, lflag, qflag, tmp, width, ladjust, sharpflag, neg, sign, dot; + int cflag, hflag, jflag, tflag, zflag; + int dwidth, upper; + char padc; + int stop = 0, retval = 0; + + num = 0; + if (!func) + d = (char *) arg; + else + d = NULL; + + if (fmt == NULL) + fmt = "(fmt null)\n"; + + if (radix < 2 || radix > 36) + radix = 10; + + for (;;) { + padc = ' '; + width = 0; + while ((ch = (u_char)*fmt++) != '%' || stop) { + if (ch == '\0') + return (retval); + PCHAR(ch); + } + percent = fmt - 1; + qflag = 0; lflag = 0; ladjust = 0; sharpflag = 0; neg = 0; + sign = 0; dot = 0; dwidth = 0; upper = 0; + cflag = 0; hflag = 0; jflag = 0; tflag = 0; zflag = 0; +reswitch: switch (ch = (u_char)*fmt++) { + case '.': + dot = 1; + goto reswitch; + case '#': + sharpflag = 1; + goto reswitch; + case '+': + sign = 1; + goto reswitch; + case '-': + ladjust = 1; + goto reswitch; + case '%': + PCHAR(ch); + break; + case '*': + if (!dot) { + width = va_arg(ap, int); + if (width < 0) { + ladjust = !ladjust; + width = -width; + } + } else { + dwidth = va_arg(ap, int); + } + goto reswitch; + case '0': + if (!dot) { + padc = '0'; + goto reswitch; + } + case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + for (n = 0;; ++fmt) { + n = n * 10 + ch - '0'; + ch = *fmt; + if (ch < '0' || ch > '9') + break; + } + if (dot) + dwidth = n; + else + width = n; + goto reswitch; + case 'b': + num = (u_int)va_arg(ap, int); + p = va_arg(ap, char *); + for (q = ksprintn(nbuf, num, *p++, NULL, 0); *q;) + PCHAR(*q--); + + if (num == 0) + break; + + for (tmp = 0; *p;) { + n = *p++; + if (num & (1 << (n - 1))) { + PCHAR(tmp ? ',' : '<'); + for (; (n = *p) > ' '; ++p) + PCHAR(n); + tmp = 1; + } else + for (; *p > ' '; ++p) + continue; + } + if (tmp) + PCHAR('>'); + break; + case 'c': + PCHAR(va_arg(ap, int)); + break; + case 'D': + up = va_arg(ap, u_char *); + p = va_arg(ap, char *); + if (!width) + width = 16; + while(width--) { + PCHAR(hex2ascii(*up >> 4)); + PCHAR(hex2ascii(*up & 0x0f)); + up++; + if (width) + for (q=p;*q;q++) + PCHAR(*q); + } + break; + case 'd': + case 'i': + base = 10; + sign = 1; + goto handle_sign; + case 'h': + if (hflag) { + hflag = 0; + cflag = 1; + } else + hflag = 1; + goto reswitch; + case 'j': + jflag = 1; + goto reswitch; + case 'l': + if (lflag) { + lflag = 0; + qflag = 1; + } else + lflag = 1; + goto reswitch; + case 'n': + if (jflag) + *(va_arg(ap, intmax_t *)) = retval; + else if (qflag) + *(va_arg(ap, quad_t *)) = retval; + else if (lflag) + *(va_arg(ap, long *)) = retval; + else if (zflag) + *(va_arg(ap, size_t *)) = retval; + else if (hflag) + *(va_arg(ap, short *)) = retval; + else if (cflag) + *(va_arg(ap, char *)) = retval; + else + *(va_arg(ap, int *)) = retval; + break; + case 'o': + base = 8; + goto handle_nosign; + case 'p': + base = 16; + sharpflag = (width == 0); + sign = 0; + num = (uintptr_t)va_arg(ap, void *); + goto number; + case 'q': + qflag = 1; + goto reswitch; + case 'r': + base = radix; + if (sign) + goto handle_sign; + goto handle_nosign; + case 's': + p = va_arg(ap, char *); + if (p == NULL) + p = "(null)"; + if (!dot) + n = strlen (p); + else + for (n = 0; n < dwidth && p[n]; n++) + continue; + + width -= n; + + if (!ladjust && width > 0) + while (width--) + PCHAR(padc); + while (n--) + PCHAR(*p++); + if (ladjust && width > 0) + while (width--) + PCHAR(padc); + break; + case 't': + tflag = 1; + goto reswitch; + case 'u': + base = 10; + goto handle_nosign; + case 'X': + upper = 1; + case 'x': + base = 16; + goto handle_nosign; + case 'y': + base = 16; + sign = 1; + goto handle_sign; + case 'z': + zflag = 1; + goto reswitch; +handle_nosign: + sign = 0; + if (jflag) + num = va_arg(ap, uintmax_t); + else if (qflag) + num = va_arg(ap, u_quad_t); + else if (tflag) + num = va_arg(ap, ptrdiff_t); + else if (lflag) + num = va_arg(ap, u_long); + else if (zflag) + num = va_arg(ap, size_t); + else if (hflag) + num = (u_short)va_arg(ap, int); + else if (cflag) + num = (u_char)va_arg(ap, int); + else + num = va_arg(ap, u_int); + goto number; +handle_sign: + if (jflag) + num = va_arg(ap, intmax_t); + else if (qflag) + num = va_arg(ap, quad_t); + else if (tflag) + num = va_arg(ap, ptrdiff_t); + else if (lflag) + num = va_arg(ap, long); + else if (zflag) + num = va_arg(ap, ssize_t); + else if (hflag) + num = (short)va_arg(ap, int); + else if (cflag) + num = (char)va_arg(ap, int); + else + num = va_arg(ap, int); +number: + if (sign && (intmax_t)num < 0) { + neg = 1; + num = -(intmax_t)num; + } + p = ksprintn(nbuf, num, base, &n, upper); + tmp = 0; + if (sharpflag && num != 0) { + if (base == 8) + tmp++; + else if (base == 16) + tmp += 2; + } + if (neg) + tmp++; + + if (!ladjust && padc == '0') + dwidth = width - tmp; + width -= tmp + imax(dwidth, n); + dwidth -= n; + if (!ladjust) + while (width-- > 0) + PCHAR(' '); + if (neg) + PCHAR('-'); + if (sharpflag && num != 0) { + if (base == 8) { + PCHAR('0'); + } else if (base == 16) { + PCHAR('0'); + PCHAR('x'); + } + } + while (dwidth-- > 0) + PCHAR('0'); + + while (*p) + PCHAR(*p--); + + if (ladjust) + while (width-- > 0) + PCHAR(' '); + + break; + default: + while (percent < fmt) + PCHAR(*percent++); + /* + * Since we ignore an formatting argument it is no + * longer safe to obey the remaining formatting + * arguments as the arguments will no longer match + * the format specs. + */ + stop = 1; + break; + } + } +#undef PCHAR +} diff --git a/fsbl/lib/stdlib/timingsafe_bcmp.c b/fsbl/lib/stdlib/timingsafe_bcmp.c new file mode 100644 index 000000000..d09815805 --- /dev/null +++ b/fsbl/lib/stdlib/timingsafe_bcmp.c @@ -0,0 +1,36 @@ +/* $OpenBSD: timingsafe_bcmp.c,v 1.3 2015/08/31 02:53:57 guenther Exp $ */ +/* + * Copyright (c) 2010 Damien Miller. All rights reserved. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include + +int __timingsafe_bcmp(const void *, const void *, size_t); + +int +__timingsafe_bcmp(const void *b1, const void *b2, size_t n) +{ + const unsigned char *p1 = b1, *p2 = b2; + int ret = 0; + + for (; n > 0; n--) + ret |= *p1++ ^ *p2++; + return (ret != 0); +} + +__weak_reference(__timingsafe_bcmp, timingsafe_bcmp); diff --git a/fsbl/lib/tf_printf/tf_printf.c b/fsbl/lib/tf_printf/tf_printf.c new file mode 100644 index 000000000..a490b4c6c --- /dev/null +++ b/fsbl/lib/tf_printf/tf_printf.c @@ -0,0 +1,219 @@ +/* + * Copyright (c) 2014-2016, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ +#include +#include +#include +#include +#include + +#include + + +/*********************************************************** + * The tf_printf implementation for all BL stages + ***********************************************************/ + +#define get_num_va_args(args, lcount) \ + (((lcount) > 1) ? va_arg(args, long long int) : \ + ((lcount) ? va_arg(args, long int) : va_arg(args, int))) + +#define get_unum_va_args(args, lcount) \ + (((lcount) > 1) ? va_arg(args, unsigned long long int) : \ + ((lcount) ? va_arg(args, unsigned long int) : va_arg(args, unsigned int))) + +static void string_print(const char *str, int level) +{ + while (*str) { + putchar_l(*str++, level); + } +} + +static void unsigned_num_print(unsigned long long unum, unsigned int radix, int level, int zeropad) +{ + /* Just need enough space to store 64 bit decimal integer */ + unsigned char num_buf[20]; + int i = 0, rem; + + do { + rem = unum % radix; + if (rem < 0xa) + num_buf[i++] = '0' + rem; + else + num_buf[i++] = 'a' + (rem - 0xa); + } while (unum /= radix); + + zeropad -= i; + while (zeropad-- > 0) { + putchar_l('0', level); + } + + while (--i >= 0) { + putchar_l(num_buf[i], level); + } +} + +#if PRINTF_TIMESTAMP +void unsigned_hex_print(unsigned long long _unum, int level) +{ + extern char const hex2ascii_data[36]; + + uint32_t unum = _unum; + + putchar_l('0', level); + putchar_l('x', level); + +#define __PUT_HEX(n, i) putchar_l(hex2ascii_data[(n >> (i * 4)) & 0xf], level) + + __PUT_HEX(unum, 7); + __PUT_HEX(unum, 6); + __PUT_HEX(unum, 5); + __PUT_HEX(unum, 4); + __PUT_HEX(unum, 3); + __PUT_HEX(unum, 2); + __PUT_HEX(unum, 1); + __PUT_HEX(unum, 0); +#undef __PUT_HEX +} +#endif + +/******************************************************************* + * Reduced format print for Trusted firmware. + * The following type specifiers are supported by this print + * %x - hexadecimal format + * %s - string format + * %d or %i - signed decimal format + * %u - unsigned decimal format + * %p - pointer format + * + * The following length specifiers are supported by this print + * %l - long int (64-bit on AArch64) + * %ll - long long int (64-bit on AArch64) + * %z - size_t sized integer formats (64 bit on AArch64) + * + * The print exits on all other formats specifiers other than valid + * combinations of the above specifiers. + *******************************************************************/ +void tf_printf(const char *fmt, ...) +{ + va_list args; + int zeropad = 0; + int l_count; + long long int num; + unsigned long long int unum; + char *str; + + int level = LOG_LEVEL; + +#if PRINTF_TIMESTAMP + const uint32_t ts = read_count_tick(); +#endif + + if (fmt && fmt[0] == MSG_SOH_ASCII && fmt[1]) { + switch (fmt[1]) { + case '0' ... '4': + level = fmt[1] - '0'; + fmt += 2; + } + } + + level = level; + + va_start(args, fmt); + while (*fmt) { + zeropad = 0; + l_count = 0; + + if (*fmt == '%') { + fmt++; + /* Check the format specifier */ +loop: + switch (*fmt) { + case '0': + fmt++; + if ((*fmt >= '0') && (*fmt <= '9')) + zeropad = *fmt - '0'; + fmt++; + goto loop; + case 'i': /* Fall through to next one */ + case 'd': + num = get_num_va_args(args, l_count); + if (num < 0) { + putchar_l('-', level); + unum = (unsigned long long int)-num; + } else + unum = (unsigned long long int)num; + unsigned_num_print(unum, 10, level, zeropad); + break; + case 's': + str = va_arg(args, char *); + string_print(str, level); + break; + case 'p': + unum = (uintptr_t)va_arg(args, void *); + if (unum) + string_print("0x", level); + unsigned_num_print(unum, 16, level, zeropad); + break; + case 'x': + unum = get_unum_va_args(args, l_count); + unsigned_num_print(unum, 16, level, zeropad); + break; + case 'z': + if (sizeof(size_t) == 8) + l_count = 2; + + fmt++; + goto loop; + case 'l': + l_count++; + fmt++; + goto loop; + case 'u': + unum = get_unum_va_args(args, l_count); + unsigned_num_print(unum, 10, level, zeropad); + break; + default: + /* Exit on any other format specifier */ + goto exit; + } + fmt++; + continue; + } + +#if PRINTF_TIMESTAMP + if (*fmt == '\n') { + putchar_l('\t', level); + putchar_l('{', level); + unsigned_num_print(ts, 10, level, zeropad); + // unsigned_hex_print(ts, level); + putchar_l('}', level); + } +#endif + + putchar_l(*fmt++, level); + } +exit: + va_end(args); +} + +#define MAX_COLUMNS 16 +void tf_print_buffer(const void *buf, size_t size, const char *name) +{ + const unsigned char *p = buf; + int i; + + if (!name) + name = "buf"; + + tf_printf("%s@%p(%lu):\n", name, buf, size); + + for (i = 0; i < size; i++) { + tf_printf("%x ", p[i]); + if (i % MAX_COLUMNS == MAX_COLUMNS - 1) + tf_printf("\n"); + } + tf_printf("---\n"); +} diff --git a/fsbl/lib/tf_printf/tf_snprintf.c b/fsbl/lib/tf_printf/tf_snprintf.c new file mode 100644 index 000000000..c47208f26 --- /dev/null +++ b/fsbl/lib/tf_printf/tf_snprintf.c @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include +#include +#include + +static void unsigned_dec_print(char **s, size_t n, size_t *chars_printed, + unsigned int unum) +{ + /* Enough for a 32-bit unsigned decimal integer (4294967295). */ + unsigned char num_buf[10]; + int i = 0, rem; + + do { + rem = unum % 10; + num_buf[i++] = '0' + rem; + } while (unum /= 10); + + while (--i >= 0) { + if (*chars_printed < n) + *(*s)++ = num_buf[i]; + (*chars_printed)++; + } +} + +/******************************************************************* + * Reduced snprintf to be used for Trusted firmware. + * The following type specifiers are supported: + * + * %d or %i - signed decimal format + * %u - unsigned decimal format + * + * The function panics on all other formats specifiers. + * + * It returns the number of characters that would be written if the + * buffer was big enough. If it returns a value lower than n, the + * whole string has been written. + *******************************************************************/ +int tf_snprintf(char *s, size_t n, const char *fmt, ...) +{ + va_list args; + int num; + unsigned int unum; + size_t chars_printed = 0; + + if (n == 1) { + /* Buffer is too small to actually write anything else. */ + *s = '\0'; + n = 0; + } else if (n >= 2) { + /* Reserve space for the terminator character. */ + n--; + } + + va_start(args, fmt); + while (*fmt) { + + if (*fmt == '%') { + fmt++; + /* Check the format specifier. */ + switch (*fmt) { + case 'i': + case 'd': + num = va_arg(args, int); + + if (num < 0) { + if (chars_printed < n) + *s++ = '-'; + chars_printed++; + + unum = (unsigned int)-num; + } else { + unum = (unsigned int)num; + } + + unsigned_dec_print(&s, n, &chars_printed, unum); + break; + case 'u': + unum = va_arg(args, unsigned int); + unsigned_dec_print(&s, n, &chars_printed, unum); + break; + default: + /* Panic on any other format specifier. */ + ERROR("TFE:%d.\n", *fmt); + } + fmt++; + continue; + } + + if (chars_printed < n) + *s++ = *fmt; + fmt++; + chars_printed++; + } + + va_end(args); + + if (n > 0) + *s = '\0'; + + return chars_printed; +} diff --git a/fsbl/lib/utils/decompress.c b/fsbl/lib/utils/decompress.c new file mode 100644 index 000000000..12c745235 --- /dev/null +++ b/fsbl/lib/utils/decompress.c @@ -0,0 +1,149 @@ +#include +#include +#include +#include +#include +#include + +static uintptr_t comp_alloc_buf; +static size_t comp_alloc_size; + +static void SzInit(void) +{ + comp_alloc_buf = DECOMP_ALLOC_ADDR; + comp_alloc_size = DECOMP_ALLOC_SIZE; +} + +static void *SzAlloc(ISzAllocPtr p, size_t size) +{ + void *x; + + x = (void *)comp_alloc_buf; + comp_alloc_buf += size; + + if (comp_alloc_buf >= (comp_alloc_buf + comp_alloc_size)) { + ERROR("%s can't alloc %lu bytes\n", __func__, size); + return NULL; + } + + return x; +} + +static void SzFree(ISzAllocPtr p, void *address) +{ +} + +int decompress_lzma(void *dst, size_t *dst_size, const void *src, size_t src_size) +{ + size_t uncomp_size = 0; + uint32_t tmp; + int ret; + + ISzAlloc alloc = { SzAlloc, SzFree }; + ELzmaStatus status = 0; + const uint8_t *prop; + + if (!dst_size) { + ERROR("%s: dst_size is NULL.\n", __func__); + return -EINVAL; + } + + SzInit(); + + INFO("LZMA1/%p/%p.\n", dst, src); + + prop = src; + src += LZMA_PROPS_SIZE; + src_size -= LZMA_PROPS_SIZE; + + // Copy 4 bytes to uncomp_size + memcpy(&tmp, src, sizeof(tmp)); + uncomp_size = tmp; + + src += 8; + src_size -= 8; + + INFO("LZMA2/uncomp_size=0x%lx\n", uncomp_size); + ret = LzmaDecode(dst, &uncomp_size, src, &src_size, prop, LZMA_PROPS_SIZE, LZMA_FINISH_END, &status, &alloc); + + if (ret != SZ_OK) { + ERROR("LzmaDecode ERROR: %d (status=%d)\n", ret, status); + return -EFAULT; + } + + *dst_size = uncomp_size; + INFO("LZMA9/0x%lx\n", *dst_size); + + return 0; +} + +void *LZ4_malloc(size_t s) +{ + return SzAlloc(NULL, s); +} +void *LZ4_calloc(size_t n, size_t s) +{ + void *p = LZ4_malloc(n * s); + + if (p) + memset(p, 0, n * s); + + return p; +} + +void LZ4_free(void *p) +{ +} + +int decompress_lz4(void *dst, size_t *dst_size, const void *src, size_t src_size) +{ + LZ4F_dctx *dctx; + size_t ret; + size_t dctxStatus; + + SzInit(); + + INFO("LZ4/%p/%p.\n", dst, src); + + dctxStatus = LZ4F_createDecompressionContext(&dctx, LZ4F_VERSION); + + if (LZ4F_isError(dctxStatus)) { + ERROR("dctxStatus=%lu\n", dctxStatus); + return -1; + } + + ret = LZ4F_decompress(dctx, dst, dst_size, src, &src_size, NULL); + INFO("dst_size=%lu src_size=%lu ret=%zd\n", *dst_size, src_size, ret); + if (LZ4F_isError(dctxStatus)) { + ERROR("LZ4F_decompress=%lu\n", ret); + return -1; + } + + // No need to free. + // LZ4F_freeDecompressionContext(dctx); + + return 0; +} + +int decompress(void *dst, size_t *dst_size, const void *src, size_t src_size, enum COMPRESS_TYPE type) +{ + int ret = -EINVAL; + + NOTICE("DCP/%p/0x%lx/%p/0x%lx/%d.\n", dst, *dst_size, src, src_size, type); + + switch (type) { + case COMP_LZ4: + ret = decompress_lz4(dst, dst_size, src, src_size); + break; + case COMP_LZMA: + ret = decompress_lzma(dst, dst_size, src, src_size); + break; + default: + ret = -EINVAL; + break; + } + + NOTICE("DCP/0x%lx/%d.\n", *dst_size, ret); + + return ret; +} \ No newline at end of file diff --git a/fsbl/lib/utils/decompress.h b/fsbl/lib/utils/decompress.h new file mode 100644 index 000000000..cc6a2c438 --- /dev/null +++ b/fsbl/lib/utils/decompress.h @@ -0,0 +1,8 @@ +#ifndef __DECOMPRESS_H__ +#define __DECOMPRESS_H__ + +enum COMPRESS_TYPE { COMP_NONE, COMP_LZMA, COMP_LZ4 }; + +int decompress(void *dst, size_t *dst_size, const void *src, size_t src_size, enum COMPRESS_TYPE type); + +#endif /* __DECOMPRESS_H__ */ diff --git a/fsbl/make_helpers/build_macros.mk b/fsbl/make_helpers/build_macros.mk new file mode 100644 index 000000000..0251dc15f --- /dev/null +++ b/fsbl/make_helpers/build_macros.mk @@ -0,0 +1,290 @@ +# +# Copyright (c) 2015-2017, ARM Limited and Contributors. All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause +# + +EXTRA_DEPS = Makefile ${PLAT_MAKEFILE_FULL} + +define print_target + @printf '\033[1;34;40m TARGET $@ \033[0m\n' +endef + +define print_var + $(info $(shell printf '\033[1;34;40m [VAR] $1=%s \033[0m\n' '${$1}')) +endef + +# Report an error if the eval make function is not available. +$(eval eval_available := T) +ifneq (${eval_available},T) + $(error This makefile only works with a Make program that supports $$(eval)) +endif + +# Some utility macros for manipulating awkward (whitespace) characters. +blank := +space :=${blank} ${blank} + +# A user defined function to recursively search for a filename below a directory +# $1 is the directory root of the recursive search (blank for current directory). +# $2 is the file name to search for. +define rwildcard +$(strip $(foreach d,$(wildcard ${1}*),$(call rwildcard,${d}/,${2}) $(filter $(subst *,%,%${2}),${d}))) +endef + +# This table is used in converting lower case to upper case. +uppercase_table:=a,A b,B c,C d,D e,E f,F g,G h,H i,I j,J k,K l,L m,M n,N o,O p,P q,Q r,R s,S t,T u,U v,V w,W x,X y,Y z,Z + +# Internal macro used for converting lower case to upper case. +# $(1) = upper case table +# $(2) = String to convert +define uppercase_internal +$(if $(1),$$(subst $(firstword $(1)),$(call uppercase_internal,$(wordlist 2,$(words $(1)),$(1)),$(2))),$(2)) +endef + +# A macro for converting a string to upper case +# $(1) = String to convert +define uppercase +$(eval uppercase_result:=$(call uppercase_internal,$(uppercase_table),$(1)))$(uppercase_result) +endef + +define yn10 +$(if $(filter y m 1,${1}),1,0) +endef + +define if_enabled +$(if $(filter y m 1,${1}),1) +endef + +# Convenience function for adding build definitions +# $(eval $(call add_define,FOO)) will have: +# -DFOO if $(FOO) is empty; -DFOO=$(FOO) otherwise +define add_define + DEFINES += -D$(1)$(if $(value $(1)),=$(value $(1)),) +endef + +define add_define_if_enabled + $(if $(call if_enabled,$(value ${1})),DEFINES += -D${1}) +endef + +# Convenience function for adding build definitions +# $(eval $(call add_define_val,FOO,BAR)) will have: +# -DFOO=BAR +define add_define_val + DEFINES += -D$(1)=$(2) +endef + +# Convenience function for verifying option has a boolean value +# $(eval $(call assert_boolean,FOO)) will assert FOO is 0 or 1 +define assert_boolean + $(if $(filter-out 0 1,$($1)),$(error $1 must be boolean)) +endef + +0-9 := 0 1 2 3 4 5 6 7 8 9 + +# Function to verify that a given option $(1) contains a numeric value +define assert_numeric +$(if $($(1)),,$(error $(1) must not be empty)) +$(eval __numeric := $($(1))) +$(foreach d,$(0-9),$(eval __numeric := $(subst $(d),,$(__numeric)))) +$(if $(__numeric),$(error $(1) must be numeric)) +endef + +# IMG_LINKERFILE defines the linker script corresponding to a BL stage +# $(1) = BL stage (2, 30, 31, 32, 33) +define IMG_LINKERFILE + ${BUILD_DIR}/bl$(1).ld +endef + +# IMG_MAPFILE defines the output file describing the memory map corresponding +# to a BL stage +# $(1) = BL stage (2, 30, 31, 32, 33) +define IMG_MAPFILE + ${BUILD_DIR}/bl$(1).map +endef + +# IMG_ELF defines the elf file corresponding to a BL stage +# $(1) = BL stage (2, 30, 31, 32, 33) +define IMG_ELF + ${BUILD_DIR}/bl$(1).elf +endef + +# IMG_DUMP defines the symbols dump file corresponding to a BL stage +# $(1) = BL stage (2, 30, 31, 32, 33) +define IMG_DUMP + ${BUILD_DIR}/bl$(1).dis +endef + +define IMG_SYM + ${BUILD_DIR}/bl$(1).sym +endef + +# IMG_BIN defines the default image file corresponding to a BL stage +# $(1) = BL stage (2, 30, 31, 32, 33) +define IMG_BIN + ${BUILD_PLAT}/bl$(1).bin +endef + +################################################################################ +# Auxiliary macros to build TF images from sources +################################################################################ + +MAKE_DEP = -Wp,-MD,$(DEP) -MT $$@ -MP + +# MAKE_C builds a C source file and generates the dependency file +# $(1) = output directory +# $(2) = source file (%.c) +# $(3) = BL stage (2, 2u, 30, 31, 32, 33) +define MAKE_C + +$(eval OBJ := $(1)/$(patsubst %.c,%.o,$(notdir $(2)))) +$(eval DEP := $(patsubst %.o,%.d,$(OBJ))) +$(eval IMAGE := IMAGE_BL$(call uppercase,$(3))) + +$(OBJ): ${EXTRA_DEPS} +$(OBJ): $(2) | bl$(3)_dirs + @echo " CC $$<" + $$(Q)$$(CC) $$(TF_CFLAGS) $$(CFLAGS) -D$(IMAGE) $(MAKE_DEP) -c $$< -o $$@ + +-include $(DEP) + +endef + + +# MAKE_S builds an assembly source file and generates the dependency file +# $(1) = output directory +# $(2) = assembly file (%.S) +# $(3) = BL stage (2, 2u, 30, 31, 32, 33) +define MAKE_S + +$(eval OBJ := $(1)/$(patsubst %.S,%.o,$(notdir $(2)))) +$(eval DEP := $(patsubst %.o,%.d,$(OBJ))) +$(eval IMAGE := IMAGE_BL$(call uppercase,$(3))) + +$(OBJ): ${EXTRA_DEPS} +$(OBJ): $(2) | bl$(3)_dirs + @echo " AS $$<" + $$(Q)$$(AS) $$(ASFLAGS) -D$(IMAGE) $(MAKE_DEP) -c $$< -o $$@ + +-include $(DEP) + +endef + + +# MAKE_LD generate the linker script using the C preprocessor +# $(1) = output linker script +# $(2) = input template +# $(3) = BL stage (2, 2u, 30, 31, 32, 33) +define MAKE_LD + +$(eval DEP := $(1).d) + +$(1): $(2) | bl$(3)_dirs + @echo " PP $$<" + $$(Q)$$(CPP) $$(CPPFLAGS) -P -D__ASSEMBLY__ -D__LINKER__ $(MAKE_DEP) -o $$@ $$< + +-include $(DEP) + +endef + + +# MAKE_OBJS builds both C and assembly source files +# $(1) = output directory +# $(2) = list of source files (both C and assembly) +# $(3) = BL stage (2, 30, 31, 32, 33) +define MAKE_OBJS + $(eval C_OBJS := $(filter %.c,$(2))) + $(eval REMAIN := $(filter-out %.c,$(2))) + $(eval $(foreach obj,$(C_OBJS),$(call MAKE_C,$(1),$(obj),$(3)))) + + $(eval S_OBJS := $(filter %.S,$(REMAIN))) + $(eval REMAIN := $(filter-out %.S,$(REMAIN))) + $(eval $(foreach obj,$(S_OBJS),$(call MAKE_S,$(1),$(obj),$(3)))) + + $(and $(REMAIN),$(error Unexpected source files present: $(REMAIN))) +endef + + +# NOTE: The line continuation '\' is required in the next define otherwise we +# end up with a line-feed characer at the end of the last c filename. +# Also bear this issue in mind if extending the list of supported filetypes. +define SOURCES_TO_OBJS + $(notdir $(patsubst %.c,%.o,$(filter %.c,$(1)))) \ + $(notdir $(patsubst %.S,%.o,$(filter %.S,$(1)))) +endef + +# Allow overriding the timestamp, for example for reproducible builds, or to +# synchronize timestamps across multiple projects. +# This must be set to a C string (including quotes where applicable). +BUILD_MESSAGE_TIMESTAMP := "$(shell date -Is)" + +# MAKE_BL macro defines the targets and options to build each BL image. +# Arguments: +# $(1) = BL stage (2, 2u, 30, 31, 32, 33) +# $(2) = FIP command line option (if empty, image will not be included in the FIP) +define MAKE_BL + $(eval BUILD_DIR := ${BUILD_PLAT}/bl$(1)) + $(eval BL_SOURCES := $(BL$(call uppercase,$(1))_SOURCES)) + $(eval SOURCES := $(BL_SOURCES)) + $(eval BULID_OUT := $(BUILD_DIR)/build_message.o) + $(eval OBJS_SOURCE := $(wildcard $(BUILD_DIR)/*.o)) + $(eval OBJS := $(filter-out $(BULID_OUT),$(OBJS_SOURCE))) + $(eval LINKERFILE := $(call IMG_LINKERFILE,$(1))) + $(eval MAPFILE := $(call IMG_MAPFILE,$(1))) + $(eval ELF := $(call IMG_ELF,$(1))) + $(eval SYM := $(call IMG_SYM,$(1))) + $(eval DUMP := $(call IMG_DUMP,$(1))) + $(eval BIN := $(call IMG_BIN,$(1))) + $(eval BL_LINKERFILE := $(BL$(call uppercase,$(1))_LINKERFILE)) + # We use sort only to get a list of unique object directory names. + # ordering is not relevant but sort removes duplicates. + $(eval TEMP_OBJ_DIRS := $(sort $(dir ${OBJS} ${LINKERFILE}))) + # The $(dir ) function leaves a trailing / on the directory names + # Rip off the / to match directory names with make rule targets. + $(eval OBJ_DIRS := $(patsubst %/,%,$(TEMP_OBJ_DIRS))) + +# Create generators for object directory structure + +$(eval $(call MAKE_PREREQ_DIR,${BUILD_DIR},)) + +$(eval $(foreach objd,${OBJ_DIRS},$(call MAKE_PREREQ_DIR,${objd},${BUILD_DIR}))) + +.PHONY : bl${1}_dirs + +# We use order-only prerequisites to ensure that directories are created, +# but do not cause re-builds every time a file is written. +bl${1}_dirs: | ${OBJ_DIRS} + +$(eval $(call MAKE_OBJS,$(BUILD_DIR),$(SOURCES),$(1))) +$(eval $(call MAKE_LD,$(LINKERFILE),$(BL_LINKERFILE),$(1))) + +$(ELF): $(OBJS) $(LINKERFILE) | bl$(1)_dirs + @echo " LD $$@" + @echo 'const char build_message[] = $(BUILD_MESSAGE_TIMESTAMP); \ + const char version_string[] = "${VERSION_STRING}";' | \ + $$(CC) $$(TF_CFLAGS) $$(CFLAGS) -xc -c - -o $(BUILD_DIR)/build_message.o + $$(Q)$$(LD) -o $$@ $$(TF_LDFLAGS) $$(LDFLAGS) -Map=$(MAPFILE) \ + --script $(LINKERFILE) $(BUILD_DIR)/build_message.o $(OBJS) $(LDLIBS) + +$(SYM): $(ELF) + @echo " SYM $$@" + $$(Q)$$(READELF) -s $$< | sort -b -r -g -k 3 > $$@ + +$(DUMP): $(ELF) + @echo " OD $$@" + $${Q}$${OD} -dx $$< > $$@ + +$(BIN): $(ELF) + @echo " BIN $$@" + $$(Q)$$(OC) -O binary $$< $$@ + @${ECHO_BLANK_LINE} + @echo "Built $$@ successfully" + @${ECHO_BLANK_LINE} + +.PHONY: bl$(1) +bl$(1): $(BIN) $(SYM) $(DUMP) + $$(print_target) + +bl-build: bl$(1) + +endef + diff --git a/fsbl/make_helpers/fip.mk b/fsbl/make_helpers/fip.mk new file mode 100644 index 000000000..67a038e8d --- /dev/null +++ b/fsbl/make_helpers/fip.mk @@ -0,0 +1,71 @@ +BLCP_PATH = ../fast_image_mcu/riscv/output/fast_image_mcu.bin +ifeq ("$(wildcard $(BLCP_PATH))","") +BLCP_PATH = test/empty.bin +endif +FIP_COMPRESS ?= lzma + +CHIP_CONF_PATH = ${BUILD_PLAT}/chip_conf.bin + +ifeq (${BOOT_CPU},aarch64) +MONITOR_PATH = plat/${CHIP_ARCH}/prebuilt/bl31.bin +else ifeq (${BOOT_CPU},riscv) +MONITOR_PATH = ../opensbi/build/platform/generic/firmware/fw_dynamic.bin +endif + +fip%: export BLCP_IMG_RUNADDR=0x05200200 +fip%: export BLCP_PARAM_LOADADDR=0 +fip%: export NAND_INFO=00000000 +fip%: export NOR_INFO=$(shell printf '%72s' | tr ' ' 'FF') +fip%: export DDR_PARAM_TEST_PATH = test/cv181x/ddr_param.bin + +${BUILD_PLAT}: + @mkdir -p '${BUILD_PLAT}' + +gen-chip-conf: + $(print_target) + ${Q}./plat/${CHIP_ARCH}/chip_conf.py ${CHIP_CONF_PATH} + +macro_to_env = ${NM} '${BLMACROS_ELF}' | awk '/DEF_${1}/ { rc = 1; print "${1}=0x" $$1 } END { exit !rc }' >> ${BUILD_PLAT}/blmacros.env + +blmacros-env: blmacros + $(print_target) + ${Q}> ${BUILD_PLAT}/blmacros.env # clear .env first + ${Q}$(call macro_to_env,MONITOR_RUNADDR) + ${Q}$(call macro_to_env,BLCP_2ND_RUNADDR) + +fip: fip-all + +fip-dep: bl2 blmacros-env gen-chip-conf + +fip-simple: fip-dep + $(print_target) + ${Q}echo " [GEN] fip.bin" + ${Q}${FIPTOOL} -v genfip \ + '${BUILD_PLAT}/fip.bin' \ + --CHIP_CONF='${CHIP_CONF_PATH}' \ + --NOR_INFO='${NOR_INFO}' \ + --NAND_INFO='${NAND_INFO}'\ + --BL2='${BUILD_PLAT}/bl2.bin' + ${Q}echo " [LS] " $$(ls -l '${BUILD_PLAT}/fip.bin') + +fip-all: fip-dep + $(print_target) + ${Q}echo " [GEN] fip.bin" + ${Q}. ${BUILD_PLAT}/blmacros.env && \ + ${FIPTOOL} -v genfip \ + '${BUILD_PLAT}/fip.bin' \ + --MONITOR_RUNADDR="$${MONITOR_RUNADDR}" \ + --BLCP_2ND_RUNADDR="$${BLCP_2ND_RUNADDR}" \ + --CHIP_CONF='${CHIP_CONF_PATH}' \ + --NOR_INFO='${NOR_INFO}' \ + --NAND_INFO='${NAND_INFO}'\ + --BL2='${BUILD_PLAT}/bl2.bin' \ + --BLCP_IMG_RUNADDR=${BLCP_IMG_RUNADDR} \ + --BLCP_PARAM_LOADADDR=${BLCP_PARAM_LOADADDR} \ + --BLCP=${BLCP_PATH} \ + --DDR_PARAM='${DDR_PARAM_TEST_PATH}' \ + --BLCP_2ND='${BLCP_2ND_PATH}' \ + --MONITOR='${MONITOR_PATH}' \ + --LOADER_2ND='${LOADER_2ND_PATH}' \ + --compress='${FIP_COMPRESS}' + ${Q}echo " [LS] " $$(ls -l '${BUILD_PLAT}/fip.bin') diff --git a/fsbl/make_helpers/get_macros.ld.S b/fsbl/make_helpers/get_macros.ld.S new file mode 100644 index 000000000..e2c722b34 --- /dev/null +++ b/fsbl/make_helpers/get_macros.ld.S @@ -0,0 +1,16 @@ +#include +#include + +#define MAKE_MACRO_TO_SYMBOL(macro) DEF_##macro = macro; + +SECTIONS +{ + .text : { + LONG(0xDEADBEEF); + *(*) + } + + MAKE_MACRO_TO_SYMBOL(DRAM_BASE) + MAKE_MACRO_TO_SYMBOL(MONITOR_RUNADDR) + MAKE_MACRO_TO_SYMBOL(BLCP_2ND_RUNADDR) +} diff --git a/fsbl/make_helpers/get_rsa_n.py b/fsbl/make_helpers/get_rsa_n.py new file mode 100755 index 000000000..27a59d305 --- /dev/null +++ b/fsbl/make_helpers/get_rsa_n.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python3 +# PYTHON_ARGCOMPLETE_OK + +import sys +import hashlib +import rsa + + +def main(): + with open(sys.argv[1], "rb") as ifp: + din = ifp.read() + + try: + priv = rsa.PrivateKey.load_pkcs1(din) + except ValueError: + priv = rsa.PrivateKey.load_pkcs1(din, format="DER") + x = rsa.common.byte_size(priv.n) + n = priv.n.to_bytes(x, byteorder="big") + digest = hashlib.sha256(n).digest() + + if sys.argv[2] == "-": + sys.stdout.buffer.write(digest) + else: + with open(sys.argv[2], "wb") as ofp: + ofp.write(digest) + + +if __name__ == "__main__": + main() diff --git a/fsbl/make_helpers/plat_helpers.mk b/fsbl/make_helpers/plat_helpers.mk new file mode 100644 index 000000000..a2a03ab3f --- /dev/null +++ b/fsbl/make_helpers/plat_helpers.mk @@ -0,0 +1,38 @@ +# +# Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause +# + +################################################################################ +# Helpers for finding and referencing platform directories +################################################################################ + +ifndef PLAT_HELPERS_MK + PLAT_HELPERS_MK := $(lastword $(MAKEFILE_LIST)) + + ifeq (${CHIP_ARCH},) + $(error "Error: Unknown platform. Please use CHIP_ARCH= to specify the platform") + endif + + # PLATFORM_ROOT can be overridden for when building tools directly + PLATFORM_ROOT := plat/ + PLAT_MAKEFILE := platform.mk + + # Generate the platforms list by recursively searching for all directories + # under /plat containing a PLAT_MAKEFILE. Append each platform with a `|` + # char and strip out the final '|'. + ALL_PLATFORM_MK_FILES := $(call rwildcard,${PLATFORM_ROOT},${PLAT_MAKEFILE}) + ALL_PLATFORM_DIRS := $(patsubst %/,%,$(dir ${ALL_PLATFORM_MK_FILES})) + ALL_PLATFORMS := $(sort $(notdir ${ALL_PLATFORM_DIRS})) + + PLAT_MAKEFILE_FULL := $(filter %/${CHIP_ARCH}/${PLAT_MAKEFILE},${ALL_PLATFORM_MK_FILES}) + PLATFORM_LIST := $(subst ${space},|,${ALL_PLATFORMS}) + ifeq ($(PLAT_MAKEFILE_FULL),) + $(error "Error: Invalid platform. The following platforms are available: ${PLATFORM_LIST}") + endif + + # Record the directory where the platform make file was found. + PLAT_DIR := $(dir ${PLAT_MAKEFILE_FULL}) + +endif diff --git a/fsbl/make_helpers/rsa/__init__.py b/fsbl/make_helpers/rsa/__init__.py new file mode 100644 index 000000000..47c66d69d --- /dev/null +++ b/fsbl/make_helpers/rsa/__init__.py @@ -0,0 +1,40 @@ +# Copyright 2011 Sybren A. Stüvel +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""RSA module + +Module for calculating large primes, and RSA encryption, decryption, signing +and verification. Includes generating public and private keys. + +WARNING: this implementation does not use compression of the cleartext input to +prevent repetitions, or other common security improvements. Use with care. + +""" + +from rsa.key import newkeys, PrivateKey, PublicKey +from rsa.pkcs1 import encrypt, decrypt, sign, verify, DecryptionError, \ + VerificationError, find_signature_hash, sign_hash, compute_hash + +__author__ = "Sybren Stuvel, Barry Mead and Yesudeep Mangalapilly" +__date__ = '2021-02-24' +__version__ = '4.7.2' + +# Do doctest if we're run directly +if __name__ == "__main__": + import doctest + + doctest.testmod() + +__all__ = ["newkeys", "encrypt", "decrypt", "sign", "verify", 'PublicKey', + 'PrivateKey', 'DecryptionError', 'VerificationError', + 'find_signature_hash', 'compute_hash', 'sign_hash'] diff --git a/fsbl/make_helpers/rsa/_compat.py b/fsbl/make_helpers/rsa/_compat.py new file mode 100644 index 000000000..050e81b91 --- /dev/null +++ b/fsbl/make_helpers/rsa/_compat.py @@ -0,0 +1,48 @@ +# Copyright 2011 Sybren A. Stüvel +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Python compatibility wrappers.""" + +from struct import pack + + +def byte(num: int) -> bytes: + """ + Converts a number between 0 and 255 (both inclusive) to a base-256 (byte) + representation. + + :param num: + An unsigned integer between 0 and 255 (both inclusive). + :returns: + A single byte. + """ + return pack("B", num) + + +def xor_bytes(b1: bytes, b2: bytes) -> bytes: + """ + Returns the bitwise XOR result between two bytes objects, b1 ^ b2. + + Bitwise XOR operation is commutative, so order of parameters doesn't + generate different results. If parameters have different length, extra + length of the largest one is ignored. + + :param b1: + First bytes object. + :param b2: + Second bytes object. + :returns: + Bytes object, result of XOR operation. + """ + return bytes(x ^ y for x, y in zip(b1, b2)) diff --git a/fsbl/make_helpers/rsa/asn1.py b/fsbl/make_helpers/rsa/asn1.py new file mode 100644 index 000000000..32b1eb469 --- /dev/null +++ b/fsbl/make_helpers/rsa/asn1.py @@ -0,0 +1,51 @@ +# Copyright 2011 Sybren A. Stüvel +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""ASN.1 definitions. + +Not all ASN.1-handling code use these definitions, but when it does, they should be here. +""" + +from pyasn1.type import univ, namedtype, tag + + +class PubKeyHeader(univ.Sequence): + componentType = namedtype.NamedTypes( + namedtype.NamedType('oid', univ.ObjectIdentifier()), + namedtype.NamedType('parameters', univ.Null()), + ) + + +class OpenSSLPubKey(univ.Sequence): + componentType = namedtype.NamedTypes( + namedtype.NamedType('header', PubKeyHeader()), + + # This little hack (the implicit tag) allows us to get a Bit String as Octet String + namedtype.NamedType('key', univ.OctetString().subtype( + implicitTag=tag.Tag(tagClass=0, tagFormat=0, tagId=3))), + ) + + +class AsnPubKey(univ.Sequence): + """ASN.1 contents of DER encoded public key: + + RSAPublicKey ::= SEQUENCE { + modulus INTEGER, -- n + publicExponent INTEGER, -- e + """ + + componentType = namedtype.NamedTypes( + namedtype.NamedType('modulus', univ.Integer()), + namedtype.NamedType('publicExponent', univ.Integer()), + ) diff --git a/fsbl/make_helpers/rsa/cli.py b/fsbl/make_helpers/rsa/cli.py new file mode 100644 index 000000000..316615025 --- /dev/null +++ b/fsbl/make_helpers/rsa/cli.py @@ -0,0 +1,292 @@ +# Copyright 2011 Sybren A. Stüvel +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Commandline scripts. + +These scripts are called by the executables defined in setup.py. +""" + +import abc +import sys +import typing +import optparse + +import rsa +import rsa.key +import rsa.pkcs1 + +HASH_METHODS = sorted(rsa.pkcs1.HASH_METHODS.keys()) +Indexable = typing.Union[typing.Tuple, typing.List[str]] + + +def keygen() -> None: + """Key generator.""" + + # Parse the CLI options + parser = optparse.OptionParser(usage='usage: %prog [options] keysize', + description='Generates a new RSA keypair of "keysize" bits.') + + parser.add_option('--pubout', type='string', + help='Output filename for the public key. The public key is ' + 'not saved if this option is not present. You can use ' + 'pyrsa-priv2pub to create the public key file later.') + + parser.add_option('-o', '--out', type='string', + help='Output filename for the private key. The key is ' + 'written to stdout if this option is not present.') + + parser.add_option('--form', + help='key format of the private and public keys - default PEM', + choices=('PEM', 'DER'), default='PEM') + + (cli, cli_args) = parser.parse_args(sys.argv[1:]) + + if len(cli_args) != 1: + parser.print_help() + raise SystemExit(1) + + try: + keysize = int(cli_args[0]) + except ValueError: + parser.print_help() + print('Not a valid number: %s' % cli_args[0], file=sys.stderr) + raise SystemExit(1) + + print('Generating %i-bit key' % keysize, file=sys.stderr) + (pub_key, priv_key) = rsa.newkeys(keysize) + + # Save public key + if cli.pubout: + print('Writing public key to %s' % cli.pubout, file=sys.stderr) + data = pub_key.save_pkcs1(format=cli.form) + with open(cli.pubout, 'wb') as outfile: + outfile.write(data) + + # Save private key + data = priv_key.save_pkcs1(format=cli.form) + + if cli.out: + print('Writing private key to %s' % cli.out, file=sys.stderr) + with open(cli.out, 'wb') as outfile: + outfile.write(data) + else: + print('Writing private key to stdout', file=sys.stderr) + sys.stdout.buffer.write(data) + + +class CryptoOperation(metaclass=abc.ABCMeta): + """CLI callable that operates with input, output, and a key.""" + + keyname = 'public' # or 'private' + usage = 'usage: %%prog [options] %(keyname)s_key' + description = '' + operation = 'decrypt' + operation_past = 'decrypted' + operation_progressive = 'decrypting' + input_help = 'Name of the file to %(operation)s. Reads from stdin if ' \ + 'not specified.' + output_help = 'Name of the file to write the %(operation_past)s file ' \ + 'to. Written to stdout if this option is not present.' + expected_cli_args = 1 + has_output = True + + key_class = rsa.PublicKey # type: typing.Type[rsa.key.AbstractKey] + + def __init__(self) -> None: + self.usage = self.usage % self.__class__.__dict__ + self.input_help = self.input_help % self.__class__.__dict__ + self.output_help = self.output_help % self.__class__.__dict__ + + @abc.abstractmethod + def perform_operation(self, indata: bytes, key: rsa.key.AbstractKey, + cli_args: Indexable) -> typing.Any: + """Performs the program's operation. + + Implement in a subclass. + + :returns: the data to write to the output. + """ + + def __call__(self) -> None: + """Runs the program.""" + + (cli, cli_args) = self.parse_cli() + + key = self.read_key(cli_args[0], cli.keyform) + + indata = self.read_infile(cli.input) + + print(self.operation_progressive.title(), file=sys.stderr) + outdata = self.perform_operation(indata, key, cli_args) + + if self.has_output: + self.write_outfile(outdata, cli.output) + + def parse_cli(self) -> typing.Tuple[optparse.Values, typing.List[str]]: + """Parse the CLI options + + :returns: (cli_opts, cli_args) + """ + + parser = optparse.OptionParser(usage=self.usage, description=self.description) + + parser.add_option('-i', '--input', type='string', help=self.input_help) + + if self.has_output: + parser.add_option('-o', '--output', type='string', help=self.output_help) + + parser.add_option('--keyform', + help='Key format of the %s key - default PEM' % self.keyname, + choices=('PEM', 'DER'), default='PEM') + + (cli, cli_args) = parser.parse_args(sys.argv[1:]) + + if len(cli_args) != self.expected_cli_args: + parser.print_help() + raise SystemExit(1) + + return cli, cli_args + + def read_key(self, filename: str, keyform: str) -> rsa.key.AbstractKey: + """Reads a public or private key.""" + + print('Reading %s key from %s' % (self.keyname, filename), file=sys.stderr) + with open(filename, 'rb') as keyfile: + keydata = keyfile.read() + + return self.key_class.load_pkcs1(keydata, keyform) + + def read_infile(self, inname: str) -> bytes: + """Read the input file""" + + if inname: + print('Reading input from %s' % inname, file=sys.stderr) + with open(inname, 'rb') as infile: + return infile.read() + + print('Reading input from stdin', file=sys.stderr) + return sys.stdin.buffer.read() + + def write_outfile(self, outdata: bytes, outname: str) -> None: + """Write the output file""" + + if outname: + print('Writing output to %s' % outname, file=sys.stderr) + with open(outname, 'wb') as outfile: + outfile.write(outdata) + else: + print('Writing output to stdout', file=sys.stderr) + sys.stdout.buffer.write(outdata) + + +class EncryptOperation(CryptoOperation): + """Encrypts a file.""" + + keyname = 'public' + description = ('Encrypts a file. The file must be shorter than the key ' + 'length in order to be encrypted.') + operation = 'encrypt' + operation_past = 'encrypted' + operation_progressive = 'encrypting' + + def perform_operation(self, indata: bytes, pub_key: rsa.key.AbstractKey, + cli_args: Indexable = ()) -> bytes: + """Encrypts files.""" + assert isinstance(pub_key, rsa.key.PublicKey) + return rsa.encrypt(indata, pub_key) + + +class DecryptOperation(CryptoOperation): + """Decrypts a file.""" + + keyname = 'private' + description = ('Decrypts a file. The original file must be shorter than ' + 'the key length in order to have been encrypted.') + operation = 'decrypt' + operation_past = 'decrypted' + operation_progressive = 'decrypting' + key_class = rsa.PrivateKey + + def perform_operation(self, indata: bytes, priv_key: rsa.key.AbstractKey, + cli_args: Indexable = ()) -> bytes: + """Decrypts files.""" + assert isinstance(priv_key, rsa.key.PrivateKey) + return rsa.decrypt(indata, priv_key) + + +class SignOperation(CryptoOperation): + """Signs a file.""" + + keyname = 'private' + usage = 'usage: %%prog [options] private_key hash_method' + description = ('Signs a file, outputs the signature. Choose the hash ' + 'method from %s' % ', '.join(HASH_METHODS)) + operation = 'sign' + operation_past = 'signature' + operation_progressive = 'Signing' + key_class = rsa.PrivateKey + expected_cli_args = 2 + + output_help = ('Name of the file to write the signature to. Written ' + 'to stdout if this option is not present.') + + def perform_operation(self, indata: bytes, priv_key: rsa.key.AbstractKey, + cli_args: Indexable) -> bytes: + """Signs files.""" + assert isinstance(priv_key, rsa.key.PrivateKey) + + hash_method = cli_args[1] + if hash_method not in HASH_METHODS: + raise SystemExit('Invalid hash method, choose one of %s' % + ', '.join(HASH_METHODS)) + + return rsa.sign(indata, priv_key, hash_method) + + +class VerifyOperation(CryptoOperation): + """Verify a signature.""" + + keyname = 'public' + usage = 'usage: %%prog [options] public_key signature_file' + description = ('Verifies a signature, exits with status 0 upon success, ' + 'prints an error message and exits with status 1 upon error.') + operation = 'verify' + operation_past = 'verified' + operation_progressive = 'Verifying' + key_class = rsa.PublicKey + expected_cli_args = 2 + has_output = False + + def perform_operation(self, indata: bytes, pub_key: rsa.key.AbstractKey, + cli_args: Indexable) -> None: + """Verifies files.""" + assert isinstance(pub_key, rsa.key.PublicKey) + + signature_file = cli_args[1] + + with open(signature_file, 'rb') as sigfile: + signature = sigfile.read() + + try: + rsa.verify(indata, signature, pub_key) + except rsa.VerificationError: + raise SystemExit('Verification failed.') + + print('Verification OK', file=sys.stderr) + + +encrypt = EncryptOperation() +decrypt = DecryptOperation() +sign = SignOperation() +verify = VerifyOperation() diff --git a/fsbl/make_helpers/rsa/common.py b/fsbl/make_helpers/rsa/common.py new file mode 100644 index 000000000..b5a966a47 --- /dev/null +++ b/fsbl/make_helpers/rsa/common.py @@ -0,0 +1,185 @@ +# Copyright 2011 Sybren A. Stüvel +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Common functionality shared by several modules.""" + +import typing + + +class NotRelativePrimeError(ValueError): + def __init__(self, a: int, b: int, d: int, msg: str = '') -> None: + super().__init__(msg or "%d and %d are not relatively prime, divider=%i" % (a, b, d)) + self.a = a + self.b = b + self.d = d + + +def bit_size(num: int) -> int: + """ + Number of bits needed to represent a integer excluding any prefix + 0 bits. + + Usage:: + + >>> bit_size(1023) + 10 + >>> bit_size(1024) + 11 + >>> bit_size(1025) + 11 + + :param num: + Integer value. If num is 0, returns 0. Only the absolute value of the + number is considered. Therefore, signed integers will be abs(num) + before the number's bit length is determined. + :returns: + Returns the number of bits in the integer. + """ + + try: + return num.bit_length() + except AttributeError as ex: + raise TypeError('bit_size(num) only supports integers, not %r' % type(num)) from ex + + +def byte_size(number: int) -> int: + """ + Returns the number of bytes required to hold a specific long number. + + The number of bytes is rounded up. + + Usage:: + + >>> byte_size(1 << 1023) + 128 + >>> byte_size((1 << 1024) - 1) + 128 + >>> byte_size(1 << 1024) + 129 + + :param number: + An unsigned integer + :returns: + The number of bytes required to hold a specific long number. + """ + if number == 0: + return 1 + return ceil_div(bit_size(number), 8) + + +def ceil_div(num: int, div: int) -> int: + """ + Returns the ceiling function of a division between `num` and `div`. + + Usage:: + + >>> ceil_div(100, 7) + 15 + >>> ceil_div(100, 10) + 10 + >>> ceil_div(1, 4) + 1 + + :param num: Division's numerator, a number + :param div: Division's divisor, a number + + :return: Rounded up result of the division between the parameters. + """ + quanta, mod = divmod(num, div) + if mod: + quanta += 1 + return quanta + + +def extended_gcd(a: int, b: int) -> typing.Tuple[int, int, int]: + """Returns a tuple (r, i, j) such that r = gcd(a, b) = ia + jb + """ + # r = gcd(a,b) i = multiplicitive inverse of a mod b + # or j = multiplicitive inverse of b mod a + # Neg return values for i or j are made positive mod b or a respectively + # Iterateive Version is faster and uses much less stack space + x = 0 + y = 1 + lx = 1 + ly = 0 + oa = a # Remember original a/b to remove + ob = b # negative values from return results + while b != 0: + q = a // b + (a, b) = (b, a % b) + (x, lx) = ((lx - (q * x)), x) + (y, ly) = ((ly - (q * y)), y) + if lx < 0: + lx += ob # If neg wrap modulo orignal b + if ly < 0: + ly += oa # If neg wrap modulo orignal a + return a, lx, ly # Return only positive values + + +def inverse(x: int, n: int) -> int: + """Returns the inverse of x % n under multiplication, a.k.a x^-1 (mod n) + + >>> inverse(7, 4) + 3 + >>> (inverse(143, 4) * 143) % 4 + 1 + """ + + (divider, inv, _) = extended_gcd(x, n) + + if divider != 1: + raise NotRelativePrimeError(x, n, divider) + + return inv + + +def crt(a_values: typing.Iterable[int], modulo_values: typing.Iterable[int]) -> int: + """Chinese Remainder Theorem. + + Calculates x such that x = a[i] (mod m[i]) for each i. + + :param a_values: the a-values of the above equation + :param modulo_values: the m-values of the above equation + :returns: x such that x = a[i] (mod m[i]) for each i + + + >>> crt([2, 3], [3, 5]) + 8 + + >>> crt([2, 3, 2], [3, 5, 7]) + 23 + + >>> crt([2, 3, 0], [7, 11, 15]) + 135 + """ + + m = 1 + x = 0 + + for modulo in modulo_values: + m *= modulo + + for (m_i, a_i) in zip(modulo_values, a_values): + M_i = m // m_i + inv = inverse(M_i, m_i) + + x = (x + a_i * M_i * inv) % m + + return x + + +if __name__ == '__main__': + import doctest + + doctest.testmod() diff --git a/fsbl/make_helpers/rsa/core.py b/fsbl/make_helpers/rsa/core.py new file mode 100644 index 000000000..23032e36e --- /dev/null +++ b/fsbl/make_helpers/rsa/core.py @@ -0,0 +1,53 @@ +# Copyright 2011 Sybren A. Stüvel +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Core mathematical operations. + +This is the actual core RSA implementation, which is only defined +mathematically on integers. +""" + + +def assert_int(var: int, name: str) -> None: + if isinstance(var, int): + return + + raise TypeError('%s should be an integer, not %s' % (name, var.__class__)) + + +def encrypt_int(message: int, ekey: int, n: int) -> int: + """Encrypts a message using encryption key 'ekey', working modulo n""" + + assert_int(message, 'message') + assert_int(ekey, 'ekey') + assert_int(n, 'n') + + if message < 0: + raise ValueError('Only non-negative numbers are supported') + + if message > n: + raise OverflowError("The message %i is too long for n=%i" % (message, n)) + + return pow(message, ekey, n) + + +def decrypt_int(cyphertext: int, dkey: int, n: int) -> int: + """Decrypts a cypher text using the decryption key 'dkey', working modulo n""" + + assert_int(cyphertext, 'cyphertext') + assert_int(dkey, 'dkey') + assert_int(n, 'n') + + message = pow(cyphertext, dkey, n) + return message diff --git a/fsbl/make_helpers/rsa/key.py b/fsbl/make_helpers/rsa/key.py new file mode 100644 index 000000000..e61bac1b8 --- /dev/null +++ b/fsbl/make_helpers/rsa/key.py @@ -0,0 +1,831 @@ +# Copyright 2011 Sybren A. Stüvel +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""RSA key generation code. + +Create new keys with the newkeys() function. It will give you a PublicKey and a +PrivateKey object. + +Loading and saving keys requires the pyasn1 module. This module is imported as +late as possible, such that other functionality will remain working in absence +of pyasn1. + +.. note:: + + Storing public and private keys via the `pickle` module is possible. + However, it is insecure to load a key from an untrusted source. + The pickle module is not secure against erroneous or maliciously + constructed data. Never unpickle data received from an untrusted + or unauthenticated source. + +""" + +import logging +import threading +import typing +import warnings + +import rsa.prime +import rsa.pem +import rsa.common +import rsa.randnum +import rsa.core + + +log = logging.getLogger(__name__) +DEFAULT_EXPONENT = 65537 + + +class AbstractKey: + """Abstract superclass for private and public keys.""" + + __slots__ = ('n', 'e', 'blindfac', 'blindfac_inverse', 'mutex') + + def __init__(self, n: int, e: int) -> None: + self.n = n + self.e = e + + # These will be computed properly on the first call to blind(). + self.blindfac = self.blindfac_inverse = -1 + + # Used to protect updates to the blinding factor in multi-threaded + # environments. + self.mutex = threading.Lock() + + @classmethod + def _load_pkcs1_pem(cls, keyfile: bytes) -> 'AbstractKey': + """Loads a key in PKCS#1 PEM format, implement in a subclass. + + :param keyfile: contents of a PEM-encoded file that contains + the public key. + :type keyfile: bytes + + :return: the loaded key + :rtype: AbstractKey + """ + + @classmethod + def _load_pkcs1_der(cls, keyfile: bytes) -> 'AbstractKey': + """Loads a key in PKCS#1 PEM format, implement in a subclass. + + :param keyfile: contents of a DER-encoded file that contains + the public key. + :type keyfile: bytes + + :return: the loaded key + :rtype: AbstractKey + """ + + def _save_pkcs1_pem(self) -> bytes: + """Saves the key in PKCS#1 PEM format, implement in a subclass. + + :returns: the PEM-encoded key. + :rtype: bytes + """ + + def _save_pkcs1_der(self) -> bytes: + """Saves the key in PKCS#1 DER format, implement in a subclass. + + :returns: the DER-encoded key. + :rtype: bytes + """ + + @classmethod + def load_pkcs1(cls, keyfile: bytes, format: str = 'PEM') -> 'AbstractKey': + """Loads a key in PKCS#1 DER or PEM format. + + :param keyfile: contents of a DER- or PEM-encoded file that contains + the key. + :type keyfile: bytes + :param format: the format of the file to load; 'PEM' or 'DER' + :type format: str + + :return: the loaded key + :rtype: AbstractKey + """ + + methods = { + 'PEM': cls._load_pkcs1_pem, + 'DER': cls._load_pkcs1_der, + } + + method = cls._assert_format_exists(format, methods) + return method(keyfile) + + @staticmethod + def _assert_format_exists(file_format: str, methods: typing.Mapping[str, typing.Callable]) \ + -> typing.Callable: + """Checks whether the given file format exists in 'methods'. + """ + + try: + return methods[file_format] + except KeyError: + formats = ', '.join(sorted(methods.keys())) + raise ValueError('Unsupported format: %r, try one of %s' % (file_format, + formats)) + + def save_pkcs1(self, format: str = 'PEM') -> bytes: + """Saves the key in PKCS#1 DER or PEM format. + + :param format: the format to save; 'PEM' or 'DER' + :type format: str + :returns: the DER- or PEM-encoded key. + :rtype: bytes + """ + + methods = { + 'PEM': self._save_pkcs1_pem, + 'DER': self._save_pkcs1_der, + } + + method = self._assert_format_exists(format, methods) + return method() + + def blind(self, message: int) -> typing.Tuple[int, int]: + """Performs blinding on the message. + + :param message: the message, as integer, to blind. + :param r: the random number to blind with. + :return: tuple (the blinded message, the inverse of the used blinding factor) + + The blinding is such that message = unblind(decrypt(blind(encrypt(message))). + + See https://en.wikipedia.org/wiki/Blinding_%28cryptography%29 + """ + blindfac, blindfac_inverse = self._update_blinding_factor() + blinded = (message * pow(blindfac, self.e, self.n)) % self.n + return blinded, blindfac_inverse + + def unblind(self, blinded: int, blindfac_inverse: int) -> int: + """Performs blinding on the message using random number 'blindfac_inverse'. + + :param blinded: the blinded message, as integer, to unblind. + :param blindfac: the factor to unblind with. + :return: the original message. + + The blinding is such that message = unblind(decrypt(blind(encrypt(message))). + + See https://en.wikipedia.org/wiki/Blinding_%28cryptography%29 + """ + return (blindfac_inverse * blinded) % self.n + + def _initial_blinding_factor(self) -> int: + for _ in range(1000): + blind_r = rsa.randnum.randint(self.n - 1) + if rsa.prime.are_relatively_prime(self.n, blind_r): + return blind_r + raise RuntimeError('unable to find blinding factor') + + def _update_blinding_factor(self) -> typing.Tuple[int, int]: + """Update blinding factors. + + Computing a blinding factor is expensive, so instead this function + does this once, then updates the blinding factor as per section 9 + of 'A Timing Attack against RSA with the Chinese Remainder Theorem' + by Werner Schindler. + See https://tls.mbed.org/public/WSchindler-RSA_Timing_Attack.pdf + + :return: the new blinding factor and its inverse. + """ + + with self.mutex: + if self.blindfac < 0: + # Compute initial blinding factor, which is rather slow to do. + self.blindfac = self._initial_blinding_factor() + self.blindfac_inverse = rsa.common.inverse(self.blindfac, self.n) + else: + # Reuse previous blinding factor. + self.blindfac = pow(self.blindfac, 2, self.n) + self.blindfac_inverse = pow(self.blindfac_inverse, 2, self.n) + + return self.blindfac, self.blindfac_inverse + +class PublicKey(AbstractKey): + """Represents a public RSA key. + + This key is also known as the 'encryption key'. It contains the 'n' and 'e' + values. + + Supports attributes as well as dictionary-like access. Attribute access is + faster, though. + + >>> PublicKey(5, 3) + PublicKey(5, 3) + + >>> key = PublicKey(5, 3) + >>> key.n + 5 + >>> key['n'] + 5 + >>> key.e + 3 + >>> key['e'] + 3 + + """ + + __slots__ = ('n', 'e') + + def __getitem__(self, key: str) -> int: + return getattr(self, key) + + def __repr__(self) -> str: + return 'PublicKey(%i, %i)' % (self.n, self.e) + + def __getstate__(self) -> typing.Tuple[int, int]: + """Returns the key as tuple for pickling.""" + return self.n, self.e + + def __setstate__(self, state: typing.Tuple[int, int]) -> None: + """Sets the key from tuple.""" + self.n, self.e = state + AbstractKey.__init__(self, self.n, self.e) + + def __eq__(self, other: typing.Any) -> bool: + if other is None: + return False + + if not isinstance(other, PublicKey): + return False + + return self.n == other.n and self.e == other.e + + def __ne__(self, other: typing.Any) -> bool: + return not (self == other) + + def __hash__(self) -> int: + return hash((self.n, self.e)) + + @classmethod + def _load_pkcs1_der(cls, keyfile: bytes) -> 'PublicKey': + """Loads a key in PKCS#1 DER format. + + :param keyfile: contents of a DER-encoded file that contains the public + key. + :return: a PublicKey object + + First let's construct a DER encoded key: + + >>> import base64 + >>> b64der = 'MAwCBQCNGmYtAgMBAAE=' + >>> der = base64.standard_b64decode(b64der) + + This loads the file: + + >>> PublicKey._load_pkcs1_der(der) + PublicKey(2367317549, 65537) + + """ + + from pyasn1.codec.der import decoder + from rsa.asn1 import AsnPubKey + + (priv, _) = decoder.decode(keyfile, asn1Spec=AsnPubKey()) + return cls(n=int(priv['modulus']), e=int(priv['publicExponent'])) + + def _save_pkcs1_der(self) -> bytes: + """Saves the public key in PKCS#1 DER format. + + :returns: the DER-encoded public key. + :rtype: bytes + """ + + from pyasn1.codec.der import encoder + from rsa.asn1 import AsnPubKey + + # Create the ASN object + asn_key = AsnPubKey() + asn_key.setComponentByName('modulus', self.n) + asn_key.setComponentByName('publicExponent', self.e) + + return encoder.encode(asn_key) + + @classmethod + def _load_pkcs1_pem(cls, keyfile: bytes) -> 'PublicKey': + """Loads a PKCS#1 PEM-encoded public key file. + + The contents of the file before the "-----BEGIN RSA PUBLIC KEY-----" and + after the "-----END RSA PUBLIC KEY-----" lines is ignored. + + :param keyfile: contents of a PEM-encoded file that contains the public + key. + :return: a PublicKey object + """ + + der = rsa.pem.load_pem(keyfile, 'RSA PUBLIC KEY') + return cls._load_pkcs1_der(der) + + def _save_pkcs1_pem(self) -> bytes: + """Saves a PKCS#1 PEM-encoded public key file. + + :return: contents of a PEM-encoded file that contains the public key. + :rtype: bytes + """ + + der = self._save_pkcs1_der() + return rsa.pem.save_pem(der, 'RSA PUBLIC KEY') + + @classmethod + def load_pkcs1_openssl_pem(cls, keyfile: bytes) -> 'PublicKey': + """Loads a PKCS#1.5 PEM-encoded public key file from OpenSSL. + + These files can be recognised in that they start with BEGIN PUBLIC KEY + rather than BEGIN RSA PUBLIC KEY. + + The contents of the file before the "-----BEGIN PUBLIC KEY-----" and + after the "-----END PUBLIC KEY-----" lines is ignored. + + :param keyfile: contents of a PEM-encoded file that contains the public + key, from OpenSSL. + :type keyfile: bytes + :return: a PublicKey object + """ + + der = rsa.pem.load_pem(keyfile, 'PUBLIC KEY') + return cls.load_pkcs1_openssl_der(der) + + @classmethod + def load_pkcs1_openssl_der(cls, keyfile: bytes) -> 'PublicKey': + """Loads a PKCS#1 DER-encoded public key file from OpenSSL. + + :param keyfile: contents of a DER-encoded file that contains the public + key, from OpenSSL. + :return: a PublicKey object + """ + + from rsa.asn1 import OpenSSLPubKey + from pyasn1.codec.der import decoder + from pyasn1.type import univ + + (keyinfo, _) = decoder.decode(keyfile, asn1Spec=OpenSSLPubKey()) + + if keyinfo['header']['oid'] != univ.ObjectIdentifier('1.2.840.113549.1.1.1'): + raise TypeError("This is not a DER-encoded OpenSSL-compatible public key") + + return cls._load_pkcs1_der(keyinfo['key'][1:]) + + +class PrivateKey(AbstractKey): + """Represents a private RSA key. + + This key is also known as the 'decryption key'. It contains the 'n', 'e', + 'd', 'p', 'q' and other values. + + Supports attributes as well as dictionary-like access. Attribute access is + faster, though. + + >>> PrivateKey(3247, 65537, 833, 191, 17) + PrivateKey(3247, 65537, 833, 191, 17) + + exp1, exp2 and coef will be calculated: + + >>> pk = PrivateKey(3727264081, 65537, 3349121513, 65063, 57287) + >>> pk.exp1 + 55063 + >>> pk.exp2 + 10095 + >>> pk.coef + 50797 + + """ + + __slots__ = ('n', 'e', 'd', 'p', 'q', 'exp1', 'exp2', 'coef') + + def __init__(self, n: int, e: int, d: int, p: int, q: int) -> None: + AbstractKey.__init__(self, n, e) + self.d = d + self.p = p + self.q = q + + # Calculate exponents and coefficient. + self.exp1 = int(d % (p - 1)) + self.exp2 = int(d % (q - 1)) + self.coef = rsa.common.inverse(q, p) + + def __getitem__(self, key: str) -> int: + return getattr(self, key) + + def __repr__(self) -> str: + return 'PrivateKey(%i, %i, %i, %i, %i)' % (self.n, self.e, self.d, self.p, self.q) + + def __getstate__(self) -> typing.Tuple[int, int, int, int, int, int, int, int]: + """Returns the key as tuple for pickling.""" + return self.n, self.e, self.d, self.p, self.q, self.exp1, self.exp2, self.coef + + def __setstate__(self, state: typing.Tuple[int, int, int, int, int, int, int, int]) -> None: + """Sets the key from tuple.""" + self.n, self.e, self.d, self.p, self.q, self.exp1, self.exp2, self.coef = state + AbstractKey.__init__(self, self.n, self.e) + + def __eq__(self, other: typing.Any) -> bool: + if other is None: + return False + + if not isinstance(other, PrivateKey): + return False + + return (self.n == other.n and + self.e == other.e and + self.d == other.d and + self.p == other.p and + self.q == other.q and + self.exp1 == other.exp1 and + self.exp2 == other.exp2 and + self.coef == other.coef) + + def __ne__(self, other: typing.Any) -> bool: + return not (self == other) + + def __hash__(self) -> int: + return hash((self.n, self.e, self.d, self.p, self.q, self.exp1, self.exp2, self.coef)) + + def blinded_decrypt(self, encrypted: int) -> int: + """Decrypts the message using blinding to prevent side-channel attacks. + + :param encrypted: the encrypted message + :type encrypted: int + + :returns: the decrypted message + :rtype: int + """ + + # Blinding and un-blinding should be using the same factor + blinded, blindfac_inverse = self.blind(encrypted) + decrypted = rsa.core.decrypt_int(blinded, self.d, self.n) + return self.unblind(decrypted, blindfac_inverse) + + def blinded_encrypt(self, message: int) -> int: + """Encrypts the message using blinding to prevent side-channel attacks. + + :param message: the message to encrypt + :type message: int + + :returns: the encrypted message + :rtype: int + """ + + blinded, blindfac_inverse = self.blind(message) + encrypted = rsa.core.encrypt_int(blinded, self.d, self.n) + return self.unblind(encrypted, blindfac_inverse) + + @classmethod + def _load_pkcs1_der(cls, keyfile: bytes) -> 'PrivateKey': + """Loads a key in PKCS#1 DER format. + + :param keyfile: contents of a DER-encoded file that contains the private + key. + :type keyfile: bytes + :return: a PrivateKey object + + First let's construct a DER encoded key: + + >>> import base64 + >>> b64der = 'MC4CAQACBQDeKYlRAgMBAAECBQDHn4npAgMA/icCAwDfxwIDANcXAgInbwIDAMZt' + >>> der = base64.standard_b64decode(b64der) + + This loads the file: + + >>> PrivateKey._load_pkcs1_der(der) + PrivateKey(3727264081, 65537, 3349121513, 65063, 57287) + + """ + + from pyasn1.codec.der import decoder + (priv, _) = decoder.decode(keyfile) + + # ASN.1 contents of DER encoded private key: + # + # RSAPrivateKey ::= SEQUENCE { + # version Version, + # modulus INTEGER, -- n + # publicExponent INTEGER, -- e + # privateExponent INTEGER, -- d + # prime1 INTEGER, -- p + # prime2 INTEGER, -- q + # exponent1 INTEGER, -- d mod (p-1) + # exponent2 INTEGER, -- d mod (q-1) + # coefficient INTEGER, -- (inverse of q) mod p + # otherPrimeInfos OtherPrimeInfos OPTIONAL + # } + + if priv[0] != 0: + raise ValueError('Unable to read this file, version %s != 0' % priv[0]) + + as_ints = map(int, priv[1:6]) + key = cls(*as_ints) + + exp1, exp2, coef = map(int, priv[6:9]) + + if (key.exp1, key.exp2, key.coef) != (exp1, exp2, coef): + warnings.warn( + 'You have provided a malformed keyfile. Either the exponents ' + 'or the coefficient are incorrect. Using the correct values ' + 'instead.', + UserWarning, + ) + + return key + + def _save_pkcs1_der(self) -> bytes: + """Saves the private key in PKCS#1 DER format. + + :returns: the DER-encoded private key. + :rtype: bytes + """ + + from pyasn1.type import univ, namedtype + from pyasn1.codec.der import encoder + + class AsnPrivKey(univ.Sequence): + componentType = namedtype.NamedTypes( + namedtype.NamedType('version', univ.Integer()), + namedtype.NamedType('modulus', univ.Integer()), + namedtype.NamedType('publicExponent', univ.Integer()), + namedtype.NamedType('privateExponent', univ.Integer()), + namedtype.NamedType('prime1', univ.Integer()), + namedtype.NamedType('prime2', univ.Integer()), + namedtype.NamedType('exponent1', univ.Integer()), + namedtype.NamedType('exponent2', univ.Integer()), + namedtype.NamedType('coefficient', univ.Integer()), + ) + + # Create the ASN object + asn_key = AsnPrivKey() + asn_key.setComponentByName('version', 0) + asn_key.setComponentByName('modulus', self.n) + asn_key.setComponentByName('publicExponent', self.e) + asn_key.setComponentByName('privateExponent', self.d) + asn_key.setComponentByName('prime1', self.p) + asn_key.setComponentByName('prime2', self.q) + asn_key.setComponentByName('exponent1', self.exp1) + asn_key.setComponentByName('exponent2', self.exp2) + asn_key.setComponentByName('coefficient', self.coef) + + return encoder.encode(asn_key) + + @classmethod + def _load_pkcs1_pem(cls, keyfile: bytes) -> 'PrivateKey': + """Loads a PKCS#1 PEM-encoded private key file. + + The contents of the file before the "-----BEGIN RSA PRIVATE KEY-----" and + after the "-----END RSA PRIVATE KEY-----" lines is ignored. + + :param keyfile: contents of a PEM-encoded file that contains the private + key. + :type keyfile: bytes + :return: a PrivateKey object + """ + + der = rsa.pem.load_pem(keyfile, b'RSA PRIVATE KEY') + return cls._load_pkcs1_der(der) + + def _save_pkcs1_pem(self) -> bytes: + """Saves a PKCS#1 PEM-encoded private key file. + + :return: contents of a PEM-encoded file that contains the private key. + :rtype: bytes + """ + + der = self._save_pkcs1_der() + return rsa.pem.save_pem(der, b'RSA PRIVATE KEY') + + +def find_p_q(nbits: int, + getprime_func: typing.Callable[[int], int] = rsa.prime.getprime, + accurate: bool = True) -> typing.Tuple[int, int]: + """Returns a tuple of two different primes of nbits bits each. + + The resulting p * q has exacty 2 * nbits bits, and the returned p and q + will not be equal. + + :param nbits: the number of bits in each of p and q. + :param getprime_func: the getprime function, defaults to + :py:func:`rsa.prime.getprime`. + + *Introduced in Python-RSA 3.1* + + :param accurate: whether to enable accurate mode or not. + :returns: (p, q), where p > q + + >>> (p, q) = find_p_q(128) + >>> from rsa import common + >>> common.bit_size(p * q) + 256 + + When not in accurate mode, the number of bits can be slightly less + + >>> (p, q) = find_p_q(128, accurate=False) + >>> from rsa import common + >>> common.bit_size(p * q) <= 256 + True + >>> common.bit_size(p * q) > 240 + True + + """ + + total_bits = nbits * 2 + + # Make sure that p and q aren't too close or the factoring programs can + # factor n. + shift = nbits // 16 + pbits = nbits + shift + qbits = nbits - shift + + # Choose the two initial primes + log.debug('find_p_q(%i): Finding p', nbits) + p = getprime_func(pbits) + log.debug('find_p_q(%i): Finding q', nbits) + q = getprime_func(qbits) + + def is_acceptable(p: int, q: int) -> bool: + """Returns True iff p and q are acceptable: + + - p and q differ + - (p * q) has the right nr of bits (when accurate=True) + """ + + if p == q: + return False + + if not accurate: + return True + + # Make sure we have just the right amount of bits + found_size = rsa.common.bit_size(p * q) + return total_bits == found_size + + # Keep choosing other primes until they match our requirements. + change_p = False + while not is_acceptable(p, q): + # Change p on one iteration and q on the other + if change_p: + p = getprime_func(pbits) + else: + q = getprime_func(qbits) + + change_p = not change_p + + # We want p > q as described on + # http://www.di-mgt.com.au/rsa_alg.html#crt + return max(p, q), min(p, q) + + +def calculate_keys_custom_exponent(p: int, q: int, exponent: int) -> typing.Tuple[int, int]: + """Calculates an encryption and a decryption key given p, q and an exponent, + and returns them as a tuple (e, d) + + :param p: the first large prime + :param q: the second large prime + :param exponent: the exponent for the key; only change this if you know + what you're doing, as the exponent influences how difficult your + private key can be cracked. A very common choice for e is 65537. + :type exponent: int + + """ + + phi_n = (p - 1) * (q - 1) + + try: + d = rsa.common.inverse(exponent, phi_n) + except rsa.common.NotRelativePrimeError as ex: + raise rsa.common.NotRelativePrimeError( + exponent, phi_n, ex.d, + msg="e (%d) and phi_n (%d) are not relatively prime (divider=%i)" % + (exponent, phi_n, ex.d)) + + if (exponent * d) % phi_n != 1: + raise ValueError("e (%d) and d (%d) are not mult. inv. modulo " + "phi_n (%d)" % (exponent, d, phi_n)) + + return exponent, d + + +def calculate_keys(p: int, q: int) -> typing.Tuple[int, int]: + """Calculates an encryption and a decryption key given p and q, and + returns them as a tuple (e, d) + + :param p: the first large prime + :param q: the second large prime + + :return: tuple (e, d) with the encryption and decryption exponents. + """ + + return calculate_keys_custom_exponent(p, q, DEFAULT_EXPONENT) + + +def gen_keys(nbits: int, + getprime_func: typing.Callable[[int], int], + accurate: bool = True, + exponent: int = DEFAULT_EXPONENT) -> typing.Tuple[int, int, int, int]: + """Generate RSA keys of nbits bits. Returns (p, q, e, d). + + Note: this can take a long time, depending on the key size. + + :param nbits: the total number of bits in ``p`` and ``q``. Both ``p`` and + ``q`` will use ``nbits/2`` bits. + :param getprime_func: either :py:func:`rsa.prime.getprime` or a function + with similar signature. + :param exponent: the exponent for the key; only change this if you know + what you're doing, as the exponent influences how difficult your + private key can be cracked. A very common choice for e is 65537. + :type exponent: int + """ + + # Regenerate p and q values, until calculate_keys doesn't raise a + # ValueError. + while True: + (p, q) = find_p_q(nbits // 2, getprime_func, accurate) + try: + (e, d) = calculate_keys_custom_exponent(p, q, exponent=exponent) + break + except ValueError: + pass + + return p, q, e, d + + +def newkeys(nbits: int, + accurate: bool = True, + poolsize: int = 1, + exponent: int = DEFAULT_EXPONENT) -> typing.Tuple[PublicKey, PrivateKey]: + """Generates public and private keys, and returns them as (pub, priv). + + The public key is also known as the 'encryption key', and is a + :py:class:`rsa.PublicKey` object. The private key is also known as the + 'decryption key' and is a :py:class:`rsa.PrivateKey` object. + + :param nbits: the number of bits required to store ``n = p*q``. + :param accurate: when True, ``n`` will have exactly the number of bits you + asked for. However, this makes key generation much slower. When False, + `n`` may have slightly less bits. + :param poolsize: the number of processes to use to generate the prime + numbers. If set to a number > 1, a parallel algorithm will be used. + This requires Python 2.6 or newer. + :param exponent: the exponent for the key; only change this if you know + what you're doing, as the exponent influences how difficult your + private key can be cracked. A very common choice for e is 65537. + :type exponent: int + + :returns: a tuple (:py:class:`rsa.PublicKey`, :py:class:`rsa.PrivateKey`) + + The ``poolsize`` parameter was added in *Python-RSA 3.1* and requires + Python 2.6 or newer. + + """ + + if nbits < 16: + raise ValueError('Key too small') + + if poolsize < 1: + raise ValueError('Pool size (%i) should be >= 1' % poolsize) + + # Determine which getprime function to use + if poolsize > 1: + from rsa import parallel + + def getprime_func(nbits: int) -> int: + return parallel.getprime(nbits, poolsize=poolsize) + else: + getprime_func = rsa.prime.getprime + + # Generate the key components + (p, q, e, d) = gen_keys(nbits, getprime_func, accurate=accurate, exponent=exponent) + + # Create the key objects + n = p * q + + return ( + PublicKey(n, e), + PrivateKey(n, e, d, p, q) + ) + + +__all__ = ['PublicKey', 'PrivateKey', 'newkeys'] + +if __name__ == '__main__': + import doctest + + try: + for count in range(100): + (failures, tests) = doctest.testmod() + if failures: + break + + if (count % 10 == 0 and count) or count == 1: + print('%i times' % count) + except KeyboardInterrupt: + print('Aborted') + else: + print('Doctests done') diff --git a/fsbl/make_helpers/rsa/parallel.py b/fsbl/make_helpers/rsa/parallel.py new file mode 100644 index 000000000..f9afedb23 --- /dev/null +++ b/fsbl/make_helpers/rsa/parallel.py @@ -0,0 +1,97 @@ +# Copyright 2011 Sybren A. Stüvel +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Functions for parallel computation on multiple cores. + +Introduced in Python-RSA 3.1. + +.. note:: + + Requires Python 2.6 or newer. + +""" + +import multiprocessing as mp +from multiprocessing.connection import Connection + +import rsa.prime +import rsa.randnum + + +def _find_prime(nbits: int, pipe: Connection) -> None: + while True: + integer = rsa.randnum.read_random_odd_int(nbits) + + # Test for primeness + if rsa.prime.is_prime(integer): + pipe.send(integer) + return + + +def getprime(nbits: int, poolsize: int) -> int: + """Returns a prime number that can be stored in 'nbits' bits. + + Works in multiple threads at the same time. + + >>> p = getprime(128, 3) + >>> rsa.prime.is_prime(p-1) + False + >>> rsa.prime.is_prime(p) + True + >>> rsa.prime.is_prime(p+1) + False + + >>> from rsa import common + >>> common.bit_size(p) == 128 + True + + """ + + (pipe_recv, pipe_send) = mp.Pipe(duplex=False) + + # Create processes + try: + procs = [mp.Process(target=_find_prime, args=(nbits, pipe_send)) + for _ in range(poolsize)] + # Start processes + for p in procs: + p.start() + + result = pipe_recv.recv() + finally: + pipe_recv.close() + pipe_send.close() + + # Terminate processes + for p in procs: + p.terminate() + + return result + + +__all__ = ['getprime'] + +if __name__ == '__main__': + print('Running doctests 1000x or until failure') + import doctest + + for count in range(100): + (failures, tests) = doctest.testmod() + if failures: + break + + if count % 10 == 0 and count: + print('%i times' % count) + + print('Doctests done') diff --git a/fsbl/make_helpers/rsa/pem.py b/fsbl/make_helpers/rsa/pem.py new file mode 100644 index 000000000..1ffb4467d --- /dev/null +++ b/fsbl/make_helpers/rsa/pem.py @@ -0,0 +1,132 @@ +# Copyright 2011 Sybren A. Stüvel +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Functions that load and write PEM-encoded files.""" + +import base64 +import typing + +# Should either be ASCII strings or bytes. +FlexiText = typing.Union[str, bytes] + + +def _markers(pem_marker: FlexiText) -> typing.Tuple[bytes, bytes]: + """ + Returns the start and end PEM markers, as bytes. + """ + + if not isinstance(pem_marker, bytes): + pem_marker = pem_marker.encode('ascii') + + return (b'-----BEGIN ' + pem_marker + b'-----', + b'-----END ' + pem_marker + b'-----') + + +def _pem_lines(contents: bytes, pem_start: bytes, pem_end: bytes) -> typing.Iterator[bytes]: + """Generator over PEM lines between pem_start and pem_end.""" + + in_pem_part = False + seen_pem_start = False + + for line in contents.splitlines(): + line = line.strip() + + # Skip empty lines + if not line: + continue + + # Handle start marker + if line == pem_start: + if in_pem_part: + raise ValueError('Seen start marker "%r" twice' % pem_start) + + in_pem_part = True + seen_pem_start = True + continue + + # Skip stuff before first marker + if not in_pem_part: + continue + + # Handle end marker + if in_pem_part and line == pem_end: + in_pem_part = False + break + + # Load fields + if b':' in line: + continue + + yield line + + # Do some sanity checks + if not seen_pem_start: + raise ValueError('No PEM start marker "%r" found' % pem_start) + + if in_pem_part: + raise ValueError('No PEM end marker "%r" found' % pem_end) + + +def load_pem(contents: FlexiText, pem_marker: FlexiText) -> bytes: + """Loads a PEM file. + + :param contents: the contents of the file to interpret + :param pem_marker: the marker of the PEM content, such as 'RSA PRIVATE KEY' + when your file has '-----BEGIN RSA PRIVATE KEY-----' and + '-----END RSA PRIVATE KEY-----' markers. + + :return: the base64-decoded content between the start and end markers. + + @raise ValueError: when the content is invalid, for example when the start + marker cannot be found. + + """ + + # We want bytes, not text. If it's text, it can be converted to ASCII bytes. + if not isinstance(contents, bytes): + contents = contents.encode('ascii') + + (pem_start, pem_end) = _markers(pem_marker) + pem_lines = [line for line in _pem_lines(contents, pem_start, pem_end)] + + # Base64-decode the contents + pem = b''.join(pem_lines) + return base64.standard_b64decode(pem) + + +def save_pem(contents: bytes, pem_marker: FlexiText) -> bytes: + """Saves a PEM file. + + :param contents: the contents to encode in PEM format + :param pem_marker: the marker of the PEM content, such as 'RSA PRIVATE KEY' + when your file has '-----BEGIN RSA PRIVATE KEY-----' and + '-----END RSA PRIVATE KEY-----' markers. + + :return: the base64-encoded content between the start and end markers, as bytes. + + """ + + (pem_start, pem_end) = _markers(pem_marker) + + b64 = base64.standard_b64encode(contents).replace(b'\n', b'') + pem_lines = [pem_start] + + for block_start in range(0, len(b64), 64): + block = b64[block_start:block_start + 64] + pem_lines.append(block) + + pem_lines.append(pem_end) + pem_lines.append(b'') + + return b'\n'.join(pem_lines) diff --git a/fsbl/make_helpers/rsa/pkcs1.py b/fsbl/make_helpers/rsa/pkcs1.py new file mode 100644 index 000000000..2a133a177 --- /dev/null +++ b/fsbl/make_helpers/rsa/pkcs1.py @@ -0,0 +1,454 @@ +# Copyright 2011 Sybren A. Stüvel +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Functions for PKCS#1 version 1.5 encryption and signing + +This module implements certain functionality from PKCS#1 version 1.5. For a +very clear example, read http://www.di-mgt.com.au/rsa_alg.html#pkcs1schemes + +At least 8 bytes of random padding is used when encrypting a message. This makes +these methods much more secure than the ones in the ``rsa`` module. + +WARNING: this module leaks information when decryption fails. The exceptions +that are raised contain the Python traceback information, which can be used to +deduce where in the process the failure occurred. DO NOT PASS SUCH INFORMATION +to your users. +""" + +import hashlib +import os +import typing +from hmac import compare_digest + +from . import common, transform, core, key + +# ASN.1 codes that describe the hash algorithm used. +HASH_ASN1 = { + 'MD5': b'\x30\x20\x30\x0c\x06\x08\x2a\x86\x48\x86\xf7\x0d\x02\x05\x05\x00\x04\x10', + 'SHA-1': b'\x30\x21\x30\x09\x06\x05\x2b\x0e\x03\x02\x1a\x05\x00\x04\x14', + 'SHA-224': b'\x30\x2d\x30\x0d\x06\x09\x60\x86\x48\x01\x65\x03\x04\x02\x04\x05\x00\x04\x1c', + 'SHA-256': b'\x30\x31\x30\x0d\x06\x09\x60\x86\x48\x01\x65\x03\x04\x02\x01\x05\x00\x04\x20', + 'SHA-384': b'\x30\x41\x30\x0d\x06\x09\x60\x86\x48\x01\x65\x03\x04\x02\x02\x05\x00\x04\x30', + 'SHA-512': b'\x30\x51\x30\x0d\x06\x09\x60\x86\x48\x01\x65\x03\x04\x02\x03\x05\x00\x04\x40', +} + +HASH_METHODS = { + 'MD5': hashlib.md5, + 'SHA-1': hashlib.sha1, + 'SHA-224': hashlib.sha224, + 'SHA-256': hashlib.sha256, + 'SHA-384': hashlib.sha384, + 'SHA-512': hashlib.sha512, +} + + +class CryptoError(Exception): + """Base class for all exceptions in this module.""" + + +class DecryptionError(CryptoError): + """Raised when decryption fails.""" + + +class VerificationError(CryptoError): + """Raised when verification fails.""" + + +def _pad_for_encryption(message: bytes, target_length: int) -> bytes: + r"""Pads the message for encryption, returning the padded message. + + :return: 00 02 RANDOM_DATA 00 MESSAGE + + >>> block = _pad_for_encryption(b'hello', 16) + >>> len(block) + 16 + >>> block[0:2] + b'\x00\x02' + >>> block[-6:] + b'\x00hello' + + """ + + max_msglength = target_length - 11 + msglength = len(message) + + if msglength > max_msglength: + raise OverflowError('%i bytes needed for message, but there is only' + ' space for %i' % (msglength, max_msglength)) + + # Get random padding + padding = b'' + padding_length = target_length - msglength - 3 + + # We remove 0-bytes, so we'll end up with less padding than we've asked for, + # so keep adding data until we're at the correct length. + while len(padding) < padding_length: + needed_bytes = padding_length - len(padding) + + # Always read at least 8 bytes more than we need, and trim off the rest + # after removing the 0-bytes. This increases the chance of getting + # enough bytes, especially when needed_bytes is small + new_padding = os.urandom(needed_bytes + 5) + new_padding = new_padding.replace(b'\x00', b'') + padding = padding + new_padding[:needed_bytes] + + assert len(padding) == padding_length + + return b''.join([b'\x00\x02', + padding, + b'\x00', + message]) + + +def _pad_for_signing(message: bytes, target_length: int) -> bytes: + r"""Pads the message for signing, returning the padded message. + + The padding is always a repetition of FF bytes. + + :return: 00 01 PADDING 00 MESSAGE + + >>> block = _pad_for_signing(b'hello', 16) + >>> len(block) + 16 + >>> block[0:2] + b'\x00\x01' + >>> block[-6:] + b'\x00hello' + >>> block[2:-6] + b'\xff\xff\xff\xff\xff\xff\xff\xff' + + """ + + max_msglength = target_length - 11 + msglength = len(message) + + if msglength > max_msglength: + raise OverflowError('%i bytes needed for message, but there is only' + ' space for %i' % (msglength, max_msglength)) + + padding_length = target_length - msglength - 3 + + return b''.join([b'\x00\x01', + padding_length * b'\xff', + b'\x00', + message]) + + +def encrypt(message: bytes, pub_key: key.PublicKey) -> bytes: + """Encrypts the given message using PKCS#1 v1.5 + + :param message: the message to encrypt. Must be a byte string no longer than + ``k-11`` bytes, where ``k`` is the number of bytes needed to encode + the ``n`` component of the public key. + :param pub_key: the :py:class:`rsa.PublicKey` to encrypt with. + :raise OverflowError: when the message is too large to fit in the padded + block. + + >>> from rsa import key, common + >>> (pub_key, priv_key) = key.newkeys(256) + >>> message = b'hello' + >>> crypto = encrypt(message, pub_key) + + The crypto text should be just as long as the public key 'n' component: + + >>> len(crypto) == common.byte_size(pub_key.n) + True + + """ + + keylength = common.byte_size(pub_key.n) + padded = _pad_for_encryption(message, keylength) + + payload = transform.bytes2int(padded) + encrypted = core.encrypt_int(payload, pub_key.e, pub_key.n) + block = transform.int2bytes(encrypted, keylength) + + return block + + +def decrypt(crypto: bytes, priv_key: key.PrivateKey) -> bytes: + r"""Decrypts the given message using PKCS#1 v1.5 + + The decryption is considered 'failed' when the resulting cleartext doesn't + start with the bytes 00 02, or when the 00 byte between the padding and + the message cannot be found. + + :param crypto: the crypto text as returned by :py:func:`rsa.encrypt` + :param priv_key: the :py:class:`rsa.PrivateKey` to decrypt with. + :raise DecryptionError: when the decryption fails. No details are given as + to why the code thinks the decryption fails, as this would leak + information about the private key. + + + >>> import rsa + >>> (pub_key, priv_key) = rsa.newkeys(256) + + It works with strings: + + >>> crypto = encrypt(b'hello', pub_key) + >>> decrypt(crypto, priv_key) + b'hello' + + And with binary data: + + >>> crypto = encrypt(b'\x00\x00\x00\x00\x01', pub_key) + >>> decrypt(crypto, priv_key) + b'\x00\x00\x00\x00\x01' + + Altering the encrypted information will *likely* cause a + :py:class:`rsa.pkcs1.DecryptionError`. If you want to be *sure*, use + :py:func:`rsa.sign`. + + + .. warning:: + + Never display the stack trace of a + :py:class:`rsa.pkcs1.DecryptionError` exception. It shows where in the + code the exception occurred, and thus leaks information about the key. + It's only a tiny bit of information, but every bit makes cracking the + keys easier. + + >>> crypto = encrypt(b'hello', pub_key) + >>> crypto = crypto[0:5] + b'X' + crypto[6:] # change a byte + >>> decrypt(crypto, priv_key) + Traceback (most recent call last): + ... + rsa.pkcs1.DecryptionError: Decryption failed + + """ + + blocksize = common.byte_size(priv_key.n) + encrypted = transform.bytes2int(crypto) + decrypted = priv_key.blinded_decrypt(encrypted) + cleartext = transform.int2bytes(decrypted, blocksize) + + # Detect leading zeroes in the crypto. These are not reflected in the + # encrypted value (as leading zeroes do not influence the value of an + # integer). This fixes CVE-2020-13757. + if len(crypto) > blocksize: + # This is operating on public information, so doesn't need to be constant-time. + raise DecryptionError('Decryption failed') + + # If we can't find the cleartext marker, decryption failed. + cleartext_marker_bad = not compare_digest(cleartext[:2], b'\x00\x02') + + # Find the 00 separator between the padding and the message + sep_idx = cleartext.find(b'\x00', 2) + + # sep_idx indicates the position of the `\x00` separator that separates the + # padding from the actual message. The padding should be at least 8 bytes + # long (see https://tools.ietf.org/html/rfc8017#section-7.2.2 step 3), which + # means the separator should be at least at index 10 (because of the + # `\x00\x02` marker that preceeds it). + sep_idx_bad = sep_idx < 10 + + anything_bad = int(cleartext_marker_bad) | int(sep_idx_bad) + if anything_bad: + raise DecryptionError('Decryption failed') + + return cleartext[sep_idx + 1:] + + +def sign_hash(hash_value: bytes, priv_key: key.PrivateKey, hash_method: str) -> bytes: + """Signs a precomputed hash with the private key. + + Hashes the message, then signs the hash with the given key. This is known + as a "detached signature", because the message itself isn't altered. + + :param hash_value: A precomputed hash to sign (ignores message). + :param priv_key: the :py:class:`rsa.PrivateKey` to sign with + :param hash_method: the hash method used on the message. Use 'MD5', 'SHA-1', + 'SHA-224', SHA-256', 'SHA-384' or 'SHA-512'. + :return: a message signature block. + :raise OverflowError: if the private key is too small to contain the + requested hash. + + """ + + # Get the ASN1 code for this hash method + if hash_method not in HASH_ASN1: + raise ValueError('Invalid hash method: %s' % hash_method) + asn1code = HASH_ASN1[hash_method] + + # Encrypt the hash with the private key + cleartext = asn1code + hash_value + keylength = common.byte_size(priv_key.n) + padded = _pad_for_signing(cleartext, keylength) + + payload = transform.bytes2int(padded) + encrypted = priv_key.blinded_encrypt(payload) + block = transform.int2bytes(encrypted, keylength) + + return block + + +def sign(message: bytes, priv_key: key.PrivateKey, hash_method: str) -> bytes: + """Signs the message with the private key. + + Hashes the message, then signs the hash with the given key. This is known + as a "detached signature", because the message itself isn't altered. + + :param message: the message to sign. Can be an 8-bit string or a file-like + object. If ``message`` has a ``read()`` method, it is assumed to be a + file-like object. + :param priv_key: the :py:class:`rsa.PrivateKey` to sign with + :param hash_method: the hash method used on the message. Use 'MD5', 'SHA-1', + 'SHA-224', SHA-256', 'SHA-384' or 'SHA-512'. + :return: a message signature block. + :raise OverflowError: if the private key is too small to contain the + requested hash. + + """ + + msg_hash = compute_hash(message, hash_method) + return sign_hash(msg_hash, priv_key, hash_method) + + +def verify(message: bytes, signature: bytes, pub_key: key.PublicKey) -> str: + """Verifies that the signature matches the message. + + The hash method is detected automatically from the signature. + + :param message: the signed message. Can be an 8-bit string or a file-like + object. If ``message`` has a ``read()`` method, it is assumed to be a + file-like object. + :param signature: the signature block, as created with :py:func:`rsa.sign`. + :param pub_key: the :py:class:`rsa.PublicKey` of the person signing the message. + :raise VerificationError: when the signature doesn't match the message. + :returns: the name of the used hash. + + """ + + keylength = common.byte_size(pub_key.n) + encrypted = transform.bytes2int(signature) + decrypted = core.decrypt_int(encrypted, pub_key.e, pub_key.n) + clearsig = transform.int2bytes(decrypted, keylength) + + # Get the hash method + method_name = _find_method_hash(clearsig) + message_hash = compute_hash(message, method_name) + + # Reconstruct the expected padded hash + cleartext = HASH_ASN1[method_name] + message_hash + expected = _pad_for_signing(cleartext, keylength) + + if len(signature) != keylength: + raise VerificationError('Verification failed') + + # Compare with the signed one + if expected != clearsig: + raise VerificationError('Verification failed') + + return method_name + + +def find_signature_hash(signature: bytes, pub_key: key.PublicKey) -> str: + """Returns the hash name detected from the signature. + + If you also want to verify the message, use :py:func:`rsa.verify()` instead. + It also returns the name of the used hash. + + :param signature: the signature block, as created with :py:func:`rsa.sign`. + :param pub_key: the :py:class:`rsa.PublicKey` of the person signing the message. + :returns: the name of the used hash. + """ + + keylength = common.byte_size(pub_key.n) + encrypted = transform.bytes2int(signature) + decrypted = core.decrypt_int(encrypted, pub_key.e, pub_key.n) + clearsig = transform.int2bytes(decrypted, keylength) + + return _find_method_hash(clearsig) + + +def yield_fixedblocks(infile: typing.BinaryIO, blocksize: int) -> typing.Iterator[bytes]: + """Generator, yields each block of ``blocksize`` bytes in the input file. + + :param infile: file to read and separate in blocks. + :param blocksize: block size in bytes. + :returns: a generator that yields the contents of each block + """ + + while True: + block = infile.read(blocksize) + + read_bytes = len(block) + if read_bytes == 0: + break + + yield block + + if read_bytes < blocksize: + break + + +def compute_hash(message: typing.Union[bytes, typing.BinaryIO], method_name: str) -> bytes: + """Returns the message digest. + + :param message: the signed message. Can be an 8-bit string or a file-like + object. If ``message`` has a ``read()`` method, it is assumed to be a + file-like object. + :param method_name: the hash method, must be a key of + :py:const:`HASH_METHODS`. + + """ + + if method_name not in HASH_METHODS: + raise ValueError('Invalid hash method: %s' % method_name) + + method = HASH_METHODS[method_name] + hasher = method() + + if isinstance(message, bytes): + hasher.update(message) + else: + assert hasattr(message, 'read') and hasattr(message.read, '__call__') + # read as 1K blocks + for block in yield_fixedblocks(message, 1024): + hasher.update(block) + + return hasher.digest() + + +def _find_method_hash(clearsig: bytes) -> str: + """Finds the hash method. + + :param clearsig: full padded ASN1 and hash. + :return: the used hash method. + :raise VerificationFailed: when the hash method cannot be found + """ + + for (hashname, asn1code) in HASH_ASN1.items(): + if asn1code in clearsig: + return hashname + + raise VerificationError('Verification failed') + + +__all__ = ['encrypt', 'decrypt', 'sign', 'verify', + 'DecryptionError', 'VerificationError', 'CryptoError'] + +if __name__ == '__main__': + print('Running doctests 1000x or until failure') + import doctest + + for count in range(1000): + (failures, tests) = doctest.testmod() + if failures: + break + + if count % 100 == 0 and count: + print('%i times' % count) + + print('Doctests done') diff --git a/fsbl/make_helpers/rsa/pkcs1_v2.py b/fsbl/make_helpers/rsa/pkcs1_v2.py new file mode 100644 index 000000000..f780affcf --- /dev/null +++ b/fsbl/make_helpers/rsa/pkcs1_v2.py @@ -0,0 +1,100 @@ +# Copyright 2011 Sybren A. Stüvel +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Functions for PKCS#1 version 2 encryption and signing + +This module implements certain functionality from PKCS#1 version 2. Main +documentation is RFC 2437: https://tools.ietf.org/html/rfc2437 +""" + +from rsa import ( + common, + pkcs1, + transform, +) + + +def mgf1(seed: bytes, length: int, hasher: str = 'SHA-1') -> bytes: + """ + MGF1 is a Mask Generation Function based on a hash function. + + A mask generation function takes an octet string of variable length and a + desired output length as input, and outputs an octet string of the desired + length. The plaintext-awareness of RSAES-OAEP relies on the random nature of + the output of the mask generation function, which in turn relies on the + random nature of the underlying hash. + + :param bytes seed: seed from which mask is generated, an octet string + :param int length: intended length in octets of the mask, at most 2^32(hLen) + :param str hasher: hash function (hLen denotes the length in octets of the hash + function output) + + :return: mask, an octet string of length `length` + :rtype: bytes + + :raise OverflowError: when `length` is too large for the specified `hasher` + :raise ValueError: when specified `hasher` is invalid + """ + + try: + hash_length = pkcs1.HASH_METHODS[hasher]().digest_size + except KeyError: + raise ValueError( + 'Invalid `hasher` specified. Please select one of: {hash_list}'.format( + hash_list=', '.join(sorted(pkcs1.HASH_METHODS.keys())) + ) + ) + + # If l > 2^32(hLen), output "mask too long" and stop. + if length > (2**32 * hash_length): + raise OverflowError( + "Desired length should be at most 2**32 times the hasher's output " + "length ({hash_length} for {hasher} function)".format( + hash_length=hash_length, + hasher=hasher, + ) + ) + + # Looping `counter` from 0 to ceil(l / hLen)-1, build `output` based on the + # hashes formed by (`seed` + C), being `C` an octet string of length 4 + # generated by converting `counter` with the primitive I2OSP + output = b''.join( + pkcs1.compute_hash( + seed + transform.int2bytes(counter, fill_size=4), + method_name=hasher, + ) + for counter in range(common.ceil_div(length, hash_length) + 1) + ) + + # Output the leading `length` octets of `output` as the octet string mask. + return output[:length] + + +__all__ = [ + 'mgf1', +] + +if __name__ == '__main__': + print('Running doctests 1000x or until failure') + import doctest + + for count in range(1000): + (failures, tests) = doctest.testmod() + if failures: + break + + if count % 100 == 0 and count: + print('%i times' % count) + + print('Doctests done') diff --git a/fsbl/make_helpers/rsa/prime.py b/fsbl/make_helpers/rsa/prime.py new file mode 100644 index 000000000..853aca508 --- /dev/null +++ b/fsbl/make_helpers/rsa/prime.py @@ -0,0 +1,198 @@ +# Copyright 2011 Sybren A. Stüvel +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Numerical functions related to primes. + +Implementation based on the book Algorithm Design by Michael T. Goodrich and +Roberto Tamassia, 2002. +""" + +import rsa.common +import rsa.randnum + +__all__ = ['getprime', 'are_relatively_prime'] + + +def gcd(p: int, q: int) -> int: + """Returns the greatest common divisor of p and q + + >>> gcd(48, 180) + 12 + """ + + while q != 0: + (p, q) = (q, p % q) + return p + + +def get_primality_testing_rounds(number: int) -> int: + """Returns minimum number of rounds for Miller-Rabing primality testing, + based on number bitsize. + + According to NIST FIPS 186-4, Appendix C, Table C.3, minimum number of + rounds of M-R testing, using an error probability of 2 ** (-100), for + different p, q bitsizes are: + * p, q bitsize: 512; rounds: 7 + * p, q bitsize: 1024; rounds: 4 + * p, q bitsize: 1536; rounds: 3 + See: http://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf + """ + + # Calculate number bitsize. + bitsize = rsa.common.bit_size(number) + # Set number of rounds. + if bitsize >= 1536: + return 3 + if bitsize >= 1024: + return 4 + if bitsize >= 512: + return 7 + # For smaller bitsizes, set arbitrary number of rounds. + return 10 + + +def miller_rabin_primality_testing(n: int, k: int) -> bool: + """Calculates whether n is composite (which is always correct) or prime + (which theoretically is incorrect with error probability 4**-k), by + applying Miller-Rabin primality testing. + + For reference and implementation example, see: + https://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test + + :param n: Integer to be tested for primality. + :type n: int + :param k: Number of rounds (witnesses) of Miller-Rabin testing. + :type k: int + :return: False if the number is composite, True if it's probably prime. + :rtype: bool + """ + + # prevent potential infinite loop when d = 0 + if n < 2: + return False + + # Decompose (n - 1) to write it as (2 ** r) * d + # While d is even, divide it by 2 and increase the exponent. + d = n - 1 + r = 0 + + while not (d & 1): + r += 1 + d >>= 1 + + # Test k witnesses. + for _ in range(k): + # Generate random integer a, where 2 <= a <= (n - 2) + a = rsa.randnum.randint(n - 3) + 1 + + x = pow(a, d, n) + if x == 1 or x == n - 1: + continue + + for _ in range(r - 1): + x = pow(x, 2, n) + if x == 1: + # n is composite. + return False + if x == n - 1: + # Exit inner loop and continue with next witness. + break + else: + # If loop doesn't break, n is composite. + return False + + return True + + +def is_prime(number: int) -> bool: + """Returns True if the number is prime, and False otherwise. + + >>> is_prime(2) + True + >>> is_prime(42) + False + >>> is_prime(41) + True + """ + + # Check for small numbers. + if number < 10: + return number in {2, 3, 5, 7} + + # Check for even numbers. + if not (number & 1): + return False + + # Calculate minimum number of rounds. + k = get_primality_testing_rounds(number) + + # Run primality testing with (minimum + 1) rounds. + return miller_rabin_primality_testing(number, k + 1) + + +def getprime(nbits: int) -> int: + """Returns a prime number that can be stored in 'nbits' bits. + + >>> p = getprime(128) + >>> is_prime(p-1) + False + >>> is_prime(p) + True + >>> is_prime(p+1) + False + + >>> from rsa import common + >>> common.bit_size(p) == 128 + True + """ + + assert nbits > 3 # the loop wil hang on too small numbers + + while True: + integer = rsa.randnum.read_random_odd_int(nbits) + + # Test for primeness + if is_prime(integer): + return integer + + # Retry if not prime + + +def are_relatively_prime(a: int, b: int) -> bool: + """Returns True if a and b are relatively prime, and False if they + are not. + + >>> are_relatively_prime(2, 3) + True + >>> are_relatively_prime(2, 4) + False + """ + + d = gcd(a, b) + return d == 1 + + +if __name__ == '__main__': + print('Running doctests 1000x or until failure') + import doctest + + for count in range(1000): + (failures, tests) = doctest.testmod() + if failures: + break + + if count % 100 == 0 and count: + print('%i times' % count) + + print('Doctests done') diff --git a/fsbl/make_helpers/rsa/randnum.py b/fsbl/make_helpers/rsa/randnum.py new file mode 100644 index 000000000..a5bb850a7 --- /dev/null +++ b/fsbl/make_helpers/rsa/randnum.py @@ -0,0 +1,96 @@ +# Copyright 2011 Sybren A. Stüvel +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Functions for generating random numbers.""" + +# Source inspired by code by Yesudeep Mangalapilly + +import os +import struct + +from rsa import common, transform + + +def read_random_bits(nbits: int) -> bytes: + """Reads 'nbits' random bits. + + If nbits isn't a whole number of bytes, an extra byte will be appended with + only the lower bits set. + """ + + nbytes, rbits = divmod(nbits, 8) + + # Get the random bytes + randomdata = os.urandom(nbytes) + + # Add the remaining random bits + if rbits > 0: + randomvalue = ord(os.urandom(1)) + randomvalue >>= (8 - rbits) + randomdata = struct.pack("B", randomvalue) + randomdata + + return randomdata + + +def read_random_int(nbits: int) -> int: + """Reads a random integer of approximately nbits bits. + """ + + randomdata = read_random_bits(nbits) + value = transform.bytes2int(randomdata) + + # Ensure that the number is large enough to just fill out the required + # number of bits. + value |= 1 << (nbits - 1) + + return value + + +def read_random_odd_int(nbits: int) -> int: + """Reads a random odd integer of approximately nbits bits. + + >>> read_random_odd_int(512) & 1 + 1 + """ + + value = read_random_int(nbits) + + # Make sure it's odd + return value | 1 + + +def randint(maxvalue: int) -> int: + """Returns a random integer x with 1 <= x <= maxvalue + + May take a very long time in specific situations. If maxvalue needs N bits + to store, the closer maxvalue is to (2 ** N) - 1, the faster this function + is. + """ + + bit_size = common.bit_size(maxvalue) + + tries = 0 + while True: + value = read_random_int(bit_size) + if value <= maxvalue: + break + + if tries % 10 == 0 and tries: + # After a lot of tries to get the right number of bits but still + # smaller than maxvalue, decrease the number of bits by 1. That'll + # dramatically increase the chances to get a large enough number. + bit_size -= 1 + tries += 1 + + return value diff --git a/fsbl/make_helpers/rsa/transform.py b/fsbl/make_helpers/rsa/transform.py new file mode 100644 index 000000000..03c4a77de --- /dev/null +++ b/fsbl/make_helpers/rsa/transform.py @@ -0,0 +1,72 @@ +# Copyright 2011 Sybren A. Stüvel +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Data transformation functions. + +From bytes to a number, number to bytes, etc. +""" + +import math + + +def bytes2int(raw_bytes: bytes) -> int: + r"""Converts a list of bytes or an 8-bit string to an integer. + + When using unicode strings, encode it to some encoding like UTF8 first. + + >>> (((128 * 256) + 64) * 256) + 15 + 8405007 + >>> bytes2int(b'\x80@\x0f') + 8405007 + + """ + return int.from_bytes(raw_bytes, 'big', signed=False) + + +def int2bytes(number: int, fill_size: int = 0) -> bytes: + """ + Convert an unsigned integer to bytes (big-endian):: + + Does not preserve leading zeros if you don't specify a fill size. + + :param number: + Integer value + :param fill_size: + If the optional fill size is given the length of the resulting + byte string is expected to be the fill size and will be padded + with prefix zero bytes to satisfy that length. + :returns: + Raw bytes (base-256 representation). + :raises: + ``OverflowError`` when fill_size is given and the number takes up more + bytes than fit into the block. This requires the ``overflow`` + argument to this function to be set to ``False`` otherwise, no + error will be raised. + """ + + if number < 0: + raise ValueError("Number must be an unsigned integer: %d" % number) + + bytes_required = max(1, math.ceil(number.bit_length() / 8)) + + if fill_size > 0: + return number.to_bytes(fill_size, 'big') + + return number.to_bytes(bytes_required, 'big') + + +if __name__ == '__main__': + import doctest + + doctest.testmod() diff --git a/fsbl/make_helpers/rsa/util.py b/fsbl/make_helpers/rsa/util.py new file mode 100644 index 000000000..cb31c467c --- /dev/null +++ b/fsbl/make_helpers/rsa/util.py @@ -0,0 +1,75 @@ +# Copyright 2011 Sybren A. Stüvel +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Utility functions.""" + +import sys +from optparse import OptionParser + +import rsa.key + + +def private_to_public() -> None: + """Reads a private key and outputs the corresponding public key.""" + + # Parse the CLI options + parser = OptionParser(usage='usage: %prog [options]', + description='Reads a private key and outputs the ' + 'corresponding public key. Both private and public keys use ' + 'the format described in PKCS#1 v1.5') + + parser.add_option('-i', '--input', dest='infilename', type='string', + help='Input filename. Reads from stdin if not specified') + parser.add_option('-o', '--output', dest='outfilename', type='string', + help='Output filename. Writes to stdout of not specified') + + parser.add_option('--inform', dest='inform', + help='key format of input - default PEM', + choices=('PEM', 'DER'), default='PEM') + + parser.add_option('--outform', dest='outform', + help='key format of output - default PEM', + choices=('PEM', 'DER'), default='PEM') + + (cli, cli_args) = parser.parse_args(sys.argv) + + # Read the input data + if cli.infilename: + print('Reading private key from %s in %s format' % + (cli.infilename, cli.inform), file=sys.stderr) + with open(cli.infilename, 'rb') as infile: + in_data = infile.read() + else: + print('Reading private key from stdin in %s format' % cli.inform, + file=sys.stderr) + in_data = sys.stdin.read().encode('ascii') + + assert type(in_data) == bytes, type(in_data) + + # Take the public fields and create a public key + priv_key = rsa.key.PrivateKey.load_pkcs1(in_data, cli.inform) + pub_key = rsa.key.PublicKey(priv_key.n, priv_key.e) + + # Save to the output file + out_data = pub_key.save_pkcs1(cli.outform) + + if cli.outfilename: + print('Writing public key to %s in %s format' % + (cli.outfilename, cli.outform), file=sys.stderr) + with open(cli.outfilename, 'wb') as outfile: + outfile.write(out_data) + else: + print('Writing public key to stdout in %s format' % cli.outform, + file=sys.stderr) + sys.stdout.write(out_data.decode('ascii')) diff --git a/fsbl/make_helpers/unix.mk b/fsbl/make_helpers/unix.mk new file mode 100644 index 000000000..e125f2243 --- /dev/null +++ b/fsbl/make_helpers/unix.mk @@ -0,0 +1,63 @@ +# +# Copyright (c) 2016-2017, ARM Limited and Contributors. All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause +# +# + +# Trusted Firmware shell command definitions for a Unix style environment. + +ifndef UNIX_MK + UNIX_MK := $(lastword $(MAKEFILE_LIST)) + + ECHO_BLANK_LINE := echo + + DIR_DELIM := / + PATH_SEP := : + + FIPTOOL := ./plat/${CHIP_ARCH}/fiptool.py + FIPSIGN := ./plat/${CHIP_ARCH}/fipsign.py + + # These defines provide Unix style equivalents of the shell commands + # required by the Trusted Firmware build environment. + + # ${1} is the file to be copied. + # ${2} is the destination file name. + define SHELL_COPY + ${Q}cp -f "${1}" "${2}" + endef + + # ${1} is the directory to be copied. + # ${2} is the destination directory path. + define SHELL_COPY_TREE + ${Q}cp -rf "${1}" "${2}" + endef + + # ${1} is the file to be deleted. + define SHELL_DELETE + -${Q}rm -f "${1}" + endef + + # ${1} is a space delimited list of files to be deleted. + # Note that we do not quote ${1}, as multiple parameters may be passed. + define SHELL_DELETE_ALL + -${Q}rm -rf ${1} + endef + + # ${1} is the directory to be generated. + # ${2} is optional, and allows a prerequisite to be specified. + # Do nothing if $1 == $2, to ignore self dependencies. + define MAKE_PREREQ_DIR + ifneq (${1},${2}) + +${1} : ${2} + ${Q}mkdir -p "${1}" + + endif + endef + + define SHELL_REMOVE_DIR + -${Q}rm -rf "${1}" + endef + +endif diff --git a/fsbl/plat/cv180x/bl2/bl2.ld.S b/fsbl/plat/cv180x/bl2/bl2.ld.S new file mode 100644 index 000000000..232a7d8ab --- /dev/null +++ b/fsbl/plat/cv180x/bl2/bl2.ld.S @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ifdef __riscv +OUTPUT_FORMAT("elf64-littleriscv") +OUTPUT_ARCH(riscv) +#else +OUTPUT_FORMAT("elf64-littleaarch64") +OUTPUT_ARCH(aarch64) +#endif +ENTRY(bl2_entrypoint) + +MEMORY { + RAM (rwx): ORIGIN = BL2_BASE, LENGTH = BL2_SIZE +} + +SECTIONS +{ + . = BL2_BASE; + ASSERT(. == ALIGN(4096), + "BL2_BASE address is not aligned on a page boundary.") + + ro . : { + __RO_START__ = .; + *bl2_entrypoint.o(.text*) + *(.vectors) + *(.text*) + *(.rodata*) + + __RO_END__ = .; + } >RAM + + /* + * .data must be placed at a lower address than the stacks if the stack + * protector is enabled. Alternatively, the .data.stack_protector_canary + * section can be placed independently of the main .data section. + */ + .data . : { + . = ALIGN(16); + __DATA_START__ = .; + *(.data*) + . = ALIGN(16); + __DATA_END__ = .; + } >RAM + + stacks (NOLOAD) : { + . = ALIGN(64); + __STACKS_START__ = .; + . += PLATFORM_STACK_SIZE; + . = ALIGN(64); + __STACKS_END__ = .; + } >RAM + + /* + * The .bss section gets initialised to 0 at runtime. + * Its base address should be 16-byte aligned for better performance of the + * zero-initialization code. + */ + .bss : ALIGN(16) { + . = ALIGN(16); + __BSS_START__ = .; + *(SORT_BY_ALIGNMENT(.bss*)) + *(COMMON) + . = ALIGN(16); + __BSS_END__ = .; + } >RAM + + /* + * Define a linker symbol to mark end of the RW memory area for this + * image. + */ + __BL2_END__ = .; + + __BSS_SIZE__ = SIZEOF(.bss); + + ASSERT(. <= (BL2_BASE + BL2_SIZE), "BL2 image has exceeded its limit.") + + #include +} diff --git a/fsbl/plat/cv180x/chip_conf.py b/fsbl/plat/cv180x/chip_conf.py new file mode 120000 index 000000000..3a1bf9de9 --- /dev/null +++ b/fsbl/plat/cv180x/chip_conf.py @@ -0,0 +1 @@ +../cv181x/chip_conf.py \ No newline at end of file diff --git a/fsbl/plat/cv180x/fipsign.py b/fsbl/plat/cv180x/fipsign.py new file mode 120000 index 000000000..230fdb278 --- /dev/null +++ b/fsbl/plat/cv180x/fipsign.py @@ -0,0 +1 @@ +../cv181x/fipsign.py \ No newline at end of file diff --git a/fsbl/plat/cv180x/fiptool.py b/fsbl/plat/cv180x/fiptool.py new file mode 120000 index 000000000..7cfe40189 --- /dev/null +++ b/fsbl/plat/cv180x/fiptool.py @@ -0,0 +1 @@ +../cv181x/fiptool.py \ No newline at end of file diff --git a/fsbl/plat/cv180x/include/bl2.h b/fsbl/plat/cv180x/include/bl2.h new file mode 120000 index 000000000..80a9ef4b5 --- /dev/null +++ b/fsbl/plat/cv180x/include/bl2.h @@ -0,0 +1 @@ +../../cv181x/include/bl2.h \ No newline at end of file diff --git a/fsbl/plat/cv180x/include/cv180x_pinlist_swconfig.h b/fsbl/plat/cv180x/include/cv180x_pinlist_swconfig.h new file mode 100644 index 000000000..153e2bf9b --- /dev/null +++ b/fsbl/plat/cv180x/include/cv180x_pinlist_swconfig.h @@ -0,0 +1,405 @@ +//##============================================================================== +//##=== This script is generate by genswconfig.pl from .\00_cv180x_Pinlist_20220315.xls +//##=== Generate Time stamp is : 2022-03-17 14:04:49 +//##============================================================================== + +#ifndef __CV180X_PINLIST_SWCONFIG_H__ +#define __CV180X_PINLIST_SWCONFIG_H__ + +#define SD0_CLK__SDIO0_CLK 0 +#define SD0_CLK__IIC1_SDA 1 +#define SD0_CLK__SPI0_SCK 2 +#define SD0_CLK__XGPIOA_7 3 +#define SD0_CLK__PWM_15 5 +#define SD0_CLK__EPHY_LNK_LED 6 +#define SD0_CLK__DBG_0 7 +#define SD0_CMD__SDIO0_CMD 0 +#define SD0_CMD__IIC1_SCL 1 +#define SD0_CMD__SPI0_SDO 2 +#define SD0_CMD__XGPIOA_8 3 +#define SD0_CMD__PWM_14 5 +#define SD0_CMD__EPHY_SPD_LED 6 +#define SD0_CMD__DBG_1 7 +#define SD0_D0__SDIO0_D_0 0 +#define SD0_D0__CAM_MCLK1 1 +#define SD0_D0__SPI0_SDI 2 +#define SD0_D0__XGPIOA_9 3 +#define SD0_D0__UART3_TX 4 +#define SD0_D0__PWM_13 5 +#define SD0_D0__WG0_D0 6 +#define SD0_D0__DBG_2 7 +#define SD0_D1__SDIO0_D_1 0 +#define SD0_D1__IIC1_SDA 1 +#define SD0_D1__AUX0 2 +#define SD0_D1__XGPIOA_10 3 +#define SD0_D1__UART1_TX 4 +#define SD0_D1__PWM_12 5 +#define SD0_D1__WG0_D1 6 +#define SD0_D1__DBG_3 7 +#define SD0_D2__SDIO0_D_2 0 +#define SD0_D2__IIC1_SCL 1 +#define SD0_D2__AUX1 2 +#define SD0_D2__XGPIOA_11 3 +#define SD0_D2__UART1_RX 4 +#define SD0_D2__PWM_11 5 +#define SD0_D2__WG1_D0 6 +#define SD0_D2__DBG_4 7 +#define SD0_D3__SDIO0_D_3 0 +#define SD0_D3__CAM_MCLK0 1 +#define SD0_D3__SPI0_CS_X 2 +#define SD0_D3__XGPIOA_12 3 +#define SD0_D3__UART3_RX 4 +#define SD0_D3__PWM_10 5 +#define SD0_D3__WG1_D1 6 +#define SD0_D3__DBG_5 7 +#define SD0_CD__SDIO0_CD 0 +#define SD0_CD__XGPIOA_13 3 +#define SD0_PWR_EN__SDIO0_PWR_EN 0 +#define SD0_PWR_EN__XGPIOA_14 3 +#define SPK_EN__XGPIOA_15 3 +#define UART0_TX__UART0_TX 0 +#define UART0_TX__CAM_MCLK1 1 +#define UART0_TX__PWM_4 2 +#define UART0_TX__XGPIOA_16 3 +#define UART0_TX__UART1_TX 4 +#define UART0_TX__AUX1 5 +#define UART0_TX__JTAG_TMS 6 +#define UART0_TX__DBG_6 7 +#define UART0_RX__UART0_RX 0 +#define UART0_RX__CAM_MCLK0 1 +#define UART0_RX__PWM_5 2 +#define UART0_RX__XGPIOA_17 3 +#define UART0_RX__UART1_RX 4 +#define UART0_RX__AUX0 5 +#define UART0_RX__JTAG_TCK 6 +#define UART0_RX__DBG_7 7 +#define SPINOR_HOLD_X__SPINOR_HOLD_X 1 +#define SPINOR_HOLD_X__SPINAND_HOLD 2 +#define SPINOR_HOLD_X__XGPIOA_26 3 +#define SPINOR_SCK__SPINOR_SCK 1 +#define SPINOR_SCK__SPINAND_CLK 2 +#define SPINOR_SCK__XGPIOA_22 3 +#define SPINOR_MOSI__SPINOR_MOSI 1 +#define SPINOR_MOSI__SPINAND_MOSI 2 +#define SPINOR_MOSI__XGPIOA_25 3 +#define SPINOR_WP_X__SPINOR_WP_X 1 +#define SPINOR_WP_X__SPINAND_WP 2 +#define SPINOR_WP_X__XGPIOA_27 3 +#define SPINOR_MISO__SPINOR_MISO 1 +#define SPINOR_MISO__SPINAND_MISO 2 +#define SPINOR_MISO__XGPIOA_23 3 +#define SPINOR_CS_X__SPINOR_CS_X 1 +#define SPINOR_CS_X__SPINAND_CS 2 +#define SPINOR_CS_X__XGPIOA_24 3 +#define JTAG_CPU_TMS__JTAG_TMS 0 +#define JTAG_CPU_TMS__CAM_MCLK0 1 +#define JTAG_CPU_TMS__PWM_7 2 +#define JTAG_CPU_TMS__XGPIOA_19 3 +#define JTAG_CPU_TMS__UART1_RTS 4 +#define JTAG_CPU_TMS__AUX0 5 +#define JTAG_CPU_TMS__UART1_TX 6 +#define JTAG_CPU_TCK__JTAG_TCK 0 +#define JTAG_CPU_TCK__CAM_MCLK1 1 +#define JTAG_CPU_TCK__PWM_6 2 +#define JTAG_CPU_TCK__XGPIOA_18 3 +#define JTAG_CPU_TCK__UART1_CTS 4 +#define JTAG_CPU_TCK__AUX1 5 +#define JTAG_CPU_TCK__UART1_RX 6 +#define IIC0_SCL__JTAG_TDI 0 +#define IIC0_SCL__UART1_TX 1 +#define IIC0_SCL__UART2_TX 2 +#define IIC0_SCL__XGPIOA_28 3 +#define IIC0_SCL__IIC0_SCL 4 +#define IIC0_SCL__WG0_D0 5 +#define IIC0_SCL__DBG_10 7 +#define IIC0_SDA__JTAG_TDO 0 +#define IIC0_SDA__UART1_RX 1 +#define IIC0_SDA__UART2_RX 2 +#define IIC0_SDA__XGPIOA_29 3 +#define IIC0_SDA__IIC0_SDA 4 +#define IIC0_SDA__WG0_D1 5 +#define IIC0_SDA__WG1_D0 6 +#define IIC0_SDA__DBG_11 7 +#define AUX0__AUX0 0 +#define AUX0__XGPIOA_30 3 +#define AUX0__IIS1_MCLK 4 +#define AUX0__WG1_D1 6 +#define AUX0__DBG_12 7 +#define GPIO_ZQ__PWR_GPIO_24 3 +#define GPIO_ZQ__PWM_2 4 +#define PWR_VBAT_DET__PWR_VBAT_DET 0 +#define PWR_RSTN__PWR_RSTN 0 +#define PWR_SEQ1__PWR_SEQ1 0 +#define PWR_SEQ1__PWR_GPIO_3 3 +#define PWR_SEQ2__PWR_SEQ2 0 +#define PWR_SEQ2__PWR_GPIO_4 3 +#define PTEST__PWR_PTEST 0 +#define PWR_WAKEUP0__PWR_WAKEUP0 0 +#define PWR_WAKEUP0__PWR_IR0 1 +#define PWR_WAKEUP0__PWR_UART0_TX 2 +#define PWR_WAKEUP0__PWR_GPIO_6 3 +#define PWR_WAKEUP0__UART1_TX 4 +#define PWR_WAKEUP0__IIC4_SCL 5 +#define PWR_WAKEUP0__EPHY_LNK_LED 6 +#define PWR_WAKEUP0__WG2_D0 7 +#define PWR_BUTTON1__PWR_BUTTON1 0 +#define PWR_BUTTON1__PWR_GPIO_8 3 +#define PWR_BUTTON1__UART1_RX 4 +#define PWR_BUTTON1__IIC4_SDA 5 +#define PWR_BUTTON1__EPHY_SPD_LED 6 +#define PWR_BUTTON1__WG2_D1 7 +#define XTAL_XIN__PWR_XTAL_CLKIN 0 +#define PWR_GPIO0__PWR_GPIO_0 0 +#define PWR_GPIO0__UART2_TX 1 +#define PWR_GPIO0__PWR_UART0_RX 2 +#define PWR_GPIO0__PWM_8 4 +#define PWR_GPIO1__PWR_GPIO_1 0 +#define PWR_GPIO1__UART2_RX 1 +#define PWR_GPIO1__EPHY_LNK_LED 3 +#define PWR_GPIO1__PWM_9 4 +#define PWR_GPIO1__PWR_IIC_SCL 5 +#define PWR_GPIO1__IIC2_SCL 6 +#define PWR_GPIO1__IIC0_SDA 7 +#define PWR_GPIO2__PWR_GPIO_2 0 +#define PWR_GPIO2__PWR_SECTICK 2 +#define PWR_GPIO2__EPHY_SPD_LED 3 +#define PWR_GPIO2__PWM_10 4 +#define PWR_GPIO2__PWR_IIC_SDA 5 +#define PWR_GPIO2__IIC2_SDA 6 +#define PWR_GPIO2__IIC0_SCL 7 +#define SD1_GPIO1__UART4_TX 1 +#define SD1_GPIO1__PWR_GPIO_26 3 +#define SD1_GPIO1__PWM_10 7 +#define SD1_GPIO0__UART4_RX 1 +#define SD1_GPIO0__PWR_GPIO_25 3 +#define SD1_GPIO0__PWM_11 7 +#define SD1_D3__PWR_SD1_D3 0 +#define SD1_D3__SPI2_CS_X 1 +#define SD1_D3__IIC1_SCL 2 +#define SD1_D3__PWR_GPIO_18 3 +#define SD1_D3__CAM_MCLK0 4 +#define SD1_D3__UART3_CTS 5 +#define SD1_D3__PWR_SPINOR1_CS_X 6 +#define SD1_D3__PWM_4 7 +#define SD1_D2__PWR_SD1_D2 0 +#define SD1_D2__IIC1_SCL 1 +#define SD1_D2__UART2_TX 2 +#define SD1_D2__PWR_GPIO_19 3 +#define SD1_D2__CAM_MCLK0 4 +#define SD1_D2__UART3_TX 5 +#define SD1_D2__PWR_SPINOR1_HOLD_X 6 +#define SD1_D2__PWM_5 7 +#define SD1_D1__PWR_SD1_D1 0 +#define SD1_D1__IIC1_SDA 1 +#define SD1_D1__UART2_RX 2 +#define SD1_D1__PWR_GPIO_20 3 +#define SD1_D1__CAM_MCLK1 4 +#define SD1_D1__UART3_RX 5 +#define SD1_D1__PWR_SPINOR1_WP_X 6 +#define SD1_D1__PWM_6 7 +#define SD1_D0__PWR_SD1_D0 0 +#define SD1_D0__SPI2_SDI 1 +#define SD1_D0__IIC1_SDA 2 +#define SD1_D0__PWR_GPIO_21 3 +#define SD1_D0__CAM_MCLK1 4 +#define SD1_D0__UART3_RTS 5 +#define SD1_D0__PWR_SPINOR1_MISO 6 +#define SD1_D0__PWM_7 7 +#define SD1_CMD__PWR_SD1_CMD 0 +#define SD1_CMD__SPI2_SDO 1 +#define SD1_CMD__IIC3_SCL 2 +#define SD1_CMD__PWR_GPIO_22 3 +#define SD1_CMD__CAM_VS0 4 +#define SD1_CMD__EPHY_LNK_LED 5 +#define SD1_CMD__PWR_SPINOR1_MOSI 6 +#define SD1_CMD__PWM_8 7 +#define SD1_CLK__PWR_SD1_CLK 0 +#define SD1_CLK__SPI2_SCK 1 +#define SD1_CLK__IIC3_SDA 2 +#define SD1_CLK__PWR_GPIO_23 3 +#define SD1_CLK__CAM_HS0 4 +#define SD1_CLK__EPHY_SPD_LED 5 +#define SD1_CLK__PWR_SPINOR1_SCK 6 +#define SD1_CLK__PWM_9 7 +#define PWM0_BUCK__PWM_0 0 +#define PWM0_BUCK__XGPIOB_0 3 +#define ADC1__XGPIOB_3 3 +#define ADC1__KEY_COL2 4 +#define ADC1__PWM_3 6 +#define USB_VBUS_DET__USB_VBUS_DET 0 +#define USB_VBUS_DET__XGPIOB_6 3 +#define USB_VBUS_DET__CAM_MCLK0 4 +#define USB_VBUS_DET__CAM_MCLK1 5 +#define USB_VBUS_DET__PWM_4 6 +#define MUX_SPI1_MISO__UART3_RTS 1 +#define MUX_SPI1_MISO__IIC1_SDA 2 +#define MUX_SPI1_MISO__XGPIOB_8 3 +#define MUX_SPI1_MISO__PWM_9 4 +#define MUX_SPI1_MISO__KEY_COL1 5 +#define MUX_SPI1_MISO__SPI1_SDI 6 +#define MUX_SPI1_MISO__DBG_14 7 +#define MUX_SPI1_MOSI__UART3_RX 1 +#define MUX_SPI1_MOSI__IIC1_SCL 2 +#define MUX_SPI1_MOSI__XGPIOB_7 3 +#define MUX_SPI1_MOSI__PWM_8 4 +#define MUX_SPI1_MOSI__KEY_COL0 5 +#define MUX_SPI1_MOSI__SPI1_SDO 6 +#define MUX_SPI1_MOSI__DBG_13 7 +#define MUX_SPI1_CS__UART3_CTS 1 +#define MUX_SPI1_CS__CAM_MCLK0 2 +#define MUX_SPI1_CS__XGPIOB_10 3 +#define MUX_SPI1_CS__PWM_11 4 +#define MUX_SPI1_CS__KEY_ROW3 5 +#define MUX_SPI1_CS__SPI1_CS_X 6 +#define MUX_SPI1_CS__DBG_16 7 +#define MUX_SPI1_SCK__UART3_TX 1 +#define MUX_SPI1_SCK__CAM_MCLK1 2 +#define MUX_SPI1_SCK__XGPIOB_9 3 +#define MUX_SPI1_SCK__PWM_10 4 +#define MUX_SPI1_SCK__KEY_ROW2 5 +#define MUX_SPI1_SCK__SPI1_SCK 6 +#define MUX_SPI1_SCK__DBG_15 7 +#define PAD_ETH_TXP__UART3_RX 1 +#define PAD_ETH_TXP__IIC1_SCL 2 +#define PAD_ETH_TXP__XGPIOB_25 3 +#define PAD_ETH_TXP__PWM_13 4 +#define PAD_ETH_TXP__CAM_MCLK0 5 +#define PAD_ETH_TXP__SPI1_SDO 6 +#define PAD_ETH_TXP__IIS2_LRCK 7 +#define PAD_ETH_TXM__UART3_RTS 1 +#define PAD_ETH_TXM__IIC1_SDA 2 +#define PAD_ETH_TXM__XGPIOB_24 3 +#define PAD_ETH_TXM__PWM_12 4 +#define PAD_ETH_TXM__CAM_MCLK1 5 +#define PAD_ETH_TXM__SPI1_SDI 6 +#define PAD_ETH_TXM__IIS2_BCLK 7 +#define PAD_ETH_RXP__UART3_TX 1 +#define PAD_ETH_RXP__CAM_MCLK1 2 +#define PAD_ETH_RXP__XGPIOB_27 3 +#define PAD_ETH_RXP__PWM_15 4 +#define PAD_ETH_RXP__CAM_HS0 5 +#define PAD_ETH_RXP__SPI1_SCK 6 +#define PAD_ETH_RXP__IIS2_DO 7 +#define PAD_ETH_RXM__UART3_CTS 1 +#define PAD_ETH_RXM__CAM_MCLK0 2 +#define PAD_ETH_RXM__XGPIOB_26 3 +#define PAD_ETH_RXM__PWM_14 4 +#define PAD_ETH_RXM__CAM_VS0 5 +#define PAD_ETH_RXM__SPI1_CS_X 6 +#define PAD_ETH_RXM__IIS2_DI 7 +#define GPIO_RTX__VI0_D_15 1 +#define GPIO_RTX__XGPIOB_23 3 +#define GPIO_RTX__PWM_1 4 +#define GPIO_RTX__CAM_MCLK0 5 +#define GPIO_RTX__IIS2_MCLK 7 +#define PAD_MIPIRX4N__VI0_CLK 1 +#define PAD_MIPIRX4N__IIC0_SCL 2 +#define PAD_MIPIRX4N__XGPIOC_2 3 +#define PAD_MIPIRX4N__IIC1_SDA 4 +#define PAD_MIPIRX4N__CAM_MCLK0 5 +#define PAD_MIPIRX4N__KEY_ROW0 6 +#define PAD_MIPIRX4N__MUX_SPI1_SCK 7 +#define PAD_MIPIRX4P__VI0_D_0 1 +#define PAD_MIPIRX4P__IIC0_SDA 2 +#define PAD_MIPIRX4P__XGPIOC_3 3 +#define PAD_MIPIRX4P__IIC1_SCL 4 +#define PAD_MIPIRX4P__CAM_MCLK1 5 +#define PAD_MIPIRX4P__KEY_ROW1 6 +#define PAD_MIPIRX4P__MUX_SPI1_CS 7 +#define PAD_MIPIRX3N__VI0_D_1 1 +#define PAD_MIPIRX3N__XGPIOC_4 3 +#define PAD_MIPIRX3N__CAM_MCLK0 4 +#define PAD_MIPIRX3N__MUX_SPI1_MISO 7 +#define PAD_MIPIRX3P__VI0_D_2 1 +#define PAD_MIPIRX3P__XGPIOC_5 3 +#define PAD_MIPIRX3P__MUX_SPI1_MOSI 7 +#define PAD_MIPIRX2N__VI0_D_3 1 +#define PAD_MIPIRX2N__XGPIOC_6 3 +#define PAD_MIPIRX2N__IIC4_SCL 5 +#define PAD_MIPIRX2N__DBG_6 7 +#define PAD_MIPIRX2P__VI0_D_4 1 +#define PAD_MIPIRX2P__XGPIOC_7 3 +#define PAD_MIPIRX2P__IIC4_SDA 5 +#define PAD_MIPIRX2P__DBG_7 7 +#define PAD_MIPIRX1N__VI0_D_5 1 +#define PAD_MIPIRX1N__XGPIOC_8 3 +#define PAD_MIPIRX1N__KEY_ROW3 6 +#define PAD_MIPIRX1N__DBG_8 7 +#define PAD_MIPIRX1P__VI0_D_6 1 +#define PAD_MIPIRX1P__XGPIOC_9 3 +#define PAD_MIPIRX1P__IIC1_SDA 4 +#define PAD_MIPIRX1P__KEY_ROW2 6 +#define PAD_MIPIRX1P__DBG_9 7 +#define PAD_MIPIRX0N__VI0_D_7 1 +#define PAD_MIPIRX0N__XGPIOC_10 3 +#define PAD_MIPIRX0N__IIC1_SCL 4 +#define PAD_MIPIRX0N__CAM_MCLK1 5 +#define PAD_MIPIRX0N__DBG_10 7 +#define PAD_MIPIRX0P__VI0_D_8 1 +#define PAD_MIPIRX0P__XGPIOC_11 3 +#define PAD_MIPIRX0P__CAM_MCLK0 4 +#define PAD_MIPIRX0P__DBG_11 7 +#define PAD_MIPI_TXM2__VI0_D_13 1 +#define PAD_MIPI_TXM2__IIC0_SDA 2 +#define PAD_MIPI_TXM2__XGPIOC_16 3 +#define PAD_MIPI_TXM2__IIC1_SDA 4 +#define PAD_MIPI_TXM2__PWM_8 5 +#define PAD_MIPI_TXM2__SPI0_SCK 6 +#define PAD_MIPI_TXP2__VI0_D_14 1 +#define PAD_MIPI_TXP2__IIC0_SCL 2 +#define PAD_MIPI_TXP2__XGPIOC_17 3 +#define PAD_MIPI_TXP2__IIC1_SCL 4 +#define PAD_MIPI_TXP2__PWM_9 5 +#define PAD_MIPI_TXP2__SPI0_CS_X 6 +#define PAD_MIPI_TXP2__IIS1_MCLK 7 +#define PAD_MIPI_TXM1__SPI3_SDO 0 +#define PAD_MIPI_TXM1__VI0_D_11 1 +#define PAD_MIPI_TXM1__IIS1_LRCK 2 +#define PAD_MIPI_TXM1__XGPIOC_14 3 +#define PAD_MIPI_TXM1__IIC2_SDA 4 +#define PAD_MIPI_TXM1__PWM_10 5 +#define PAD_MIPI_TXM1__SPI0_SDO 6 +#define PAD_MIPI_TXM1__DBG_14 7 +#define PAD_MIPI_TXP1__SPI3_SDI 0 +#define PAD_MIPI_TXP1__VI0_D_12 1 +#define PAD_MIPI_TXP1__IIS1_DO 2 +#define PAD_MIPI_TXP1__XGPIOC_15 3 +#define PAD_MIPI_TXP1__IIC2_SCL 4 +#define PAD_MIPI_TXP1__PWM_11 5 +#define PAD_MIPI_TXP1__SPI0_SDI 6 +#define PAD_MIPI_TXP1__DBG_15 7 +#define PAD_MIPI_TXM0__SPI3_SCK 0 +#define PAD_MIPI_TXM0__VI0_D_9 1 +#define PAD_MIPI_TXM0__IIS1_DI 2 +#define PAD_MIPI_TXM0__XGPIOC_12 3 +#define PAD_MIPI_TXM0__CAM_MCLK1 4 +#define PAD_MIPI_TXM0__PWM_14 5 +#define PAD_MIPI_TXM0__CAM_VS0 6 +#define PAD_MIPI_TXM0__DBG_12 7 +#define PAD_MIPI_TXP0__SPI3_CS_X 0 +#define PAD_MIPI_TXP0__VI0_D_10 1 +#define PAD_MIPI_TXP0__IIS1_BCLK 2 +#define PAD_MIPI_TXP0__XGPIOC_13 3 +#define PAD_MIPI_TXP0__CAM_MCLK0 4 +#define PAD_MIPI_TXP0__PWM_15 5 +#define PAD_MIPI_TXP0__CAM_HS0 6 +#define PAD_MIPI_TXP0__DBG_13 7 +#define PKG_TYPE0__PKG_TYPE0 0 +#define PKG_TYPE1__PKG_TYPE1 0 +#define PKG_TYPE2__PKG_TYPE2 0 +#define PAD_AUD_AINL_MIC__XGPIOC_23 3 +#define PAD_AUD_AINL_MIC__IIS1_BCLK 4 +#define PAD_AUD_AINL_MIC__IIS2_BCLK 5 +#define PAD_AUD_AINR_MIC__XGPIOC_22 3 +#define PAD_AUD_AINR_MIC__IIS1_DO 4 +#define PAD_AUD_AINR_MIC__IIS2_DI 5 +#define PAD_AUD_AINR_MIC__IIS1_DI 6 +#define PAD_AUD_AOUTL__XGPIOC_25 3 +#define PAD_AUD_AOUTL__IIS1_LRCK 4 +#define PAD_AUD_AOUTL__IIS2_LRCK 5 +#define PAD_AUD_AOUTR__XGPIOC_24 3 +#define PAD_AUD_AOUTR__IIS1_DI 4 +#define PAD_AUD_AOUTR__IIS2_DO 5 +#define PAD_AUD_AOUTR__IIS1_DO 6 + +#endif /* __CV180X_PINLIST_SWCONFIG_H__ */ diff --git a/fsbl/plat/cv180x/include/cv180x_reg_fmux_gpio.h b/fsbl/plat/cv180x/include/cv180x_reg_fmux_gpio.h new file mode 100644 index 000000000..a07236fba --- /dev/null +++ b/fsbl/plat/cv180x/include/cv180x_reg_fmux_gpio.h @@ -0,0 +1,337 @@ +// $Module: fmux_gpio $ +// $RegisterBank Version: V 1.0.00 $ +// $Author: ghost $ +// $Date: Thu, 17 Mar 2022 04:53:31 PM $ +// + +//GEN REG ADDR/OFFSET/MASK + +#ifndef __CV180X_REG_FMUX_GPIO_H__ +#define __CV180X_REG_FMUX_GPIO_H__ + +#define FMUX_GPIO_REG_IOCTRL_SD0_CLK 0x0 +#define FMUX_GPIO_REG_IOCTRL_SD0_CMD 0x4 +#define FMUX_GPIO_REG_IOCTRL_SD0_D0 0x8 +#define FMUX_GPIO_REG_IOCTRL_SD0_D1 0xc +#define FMUX_GPIO_REG_IOCTRL_SD0_D2 0x10 +#define FMUX_GPIO_REG_IOCTRL_SD0_D3 0x14 +#define FMUX_GPIO_REG_IOCTRL_SD0_CD 0x18 +#define FMUX_GPIO_REG_IOCTRL_SD0_PWR_EN 0x1c +#define FMUX_GPIO_REG_IOCTRL_SPK_EN 0x20 +#define FMUX_GPIO_REG_IOCTRL_UART0_TX 0x24 +#define FMUX_GPIO_REG_IOCTRL_UART0_RX 0x28 +#define FMUX_GPIO_REG_IOCTRL_SPINOR_HOLD_X 0x2c +#define FMUX_GPIO_REG_IOCTRL_SPINOR_SCK 0x30 +#define FMUX_GPIO_REG_IOCTRL_SPINOR_MOSI 0x34 +#define FMUX_GPIO_REG_IOCTRL_SPINOR_WP_X 0x38 +#define FMUX_GPIO_REG_IOCTRL_SPINOR_MISO 0x3c +#define FMUX_GPIO_REG_IOCTRL_SPINOR_CS_X 0x40 +#define FMUX_GPIO_REG_IOCTRL_JTAG_CPU_TMS 0x44 +#define FMUX_GPIO_REG_IOCTRL_JTAG_CPU_TCK 0x48 +#define FMUX_GPIO_REG_IOCTRL_IIC0_SCL 0x4c +#define FMUX_GPIO_REG_IOCTRL_IIC0_SDA 0x50 +#define FMUX_GPIO_REG_IOCTRL_AUX0 0x54 +#define FMUX_GPIO_REG_IOCTRL_GPIO_ZQ 0x58 +#define FMUX_GPIO_REG_IOCTRL_PWR_VBAT_DET 0x5c +#define FMUX_GPIO_REG_IOCTRL_PWR_RSTN 0x60 +#define FMUX_GPIO_REG_IOCTRL_PWR_SEQ1 0x64 +#define FMUX_GPIO_REG_IOCTRL_PWR_SEQ2 0x68 +#define FMUX_GPIO_REG_IOCTRL_PWR_WAKEUP0 0x6c +#define FMUX_GPIO_REG_IOCTRL_PWR_BUTTON1 0x70 +#define FMUX_GPIO_REG_IOCTRL_XTAL_XIN 0x74 +#define FMUX_GPIO_REG_IOCTRL_PWR_GPIO0 0x78 +#define FMUX_GPIO_REG_IOCTRL_PWR_GPIO1 0x7c +#define FMUX_GPIO_REG_IOCTRL_PWR_GPIO2 0x80 +#define FMUX_GPIO_REG_IOCTRL_SD1_GPIO1 0x84 +#define FMUX_GPIO_REG_IOCTRL_SD1_GPIO0 0x88 +#define FMUX_GPIO_REG_IOCTRL_SD1_D3 0x8c +#define FMUX_GPIO_REG_IOCTRL_SD1_D2 0x90 +#define FMUX_GPIO_REG_IOCTRL_SD1_D1 0x94 +#define FMUX_GPIO_REG_IOCTRL_SD1_D0 0x98 +#define FMUX_GPIO_REG_IOCTRL_SD1_CMD 0x9c +#define FMUX_GPIO_REG_IOCTRL_SD1_CLK 0xa0 +#define FMUX_GPIO_REG_IOCTRL_PWM0_BUCK 0xa4 +#define FMUX_GPIO_REG_IOCTRL_ADC1 0xa8 +#define FMUX_GPIO_REG_IOCTRL_USB_VBUS_DET 0xac +#define FMUX_GPIO_REG_IOCTRL_MUX_SPI1_MISO 0xb0 +#define FMUX_GPIO_REG_IOCTRL_MUX_SPI1_MOSI 0xb4 +#define FMUX_GPIO_REG_IOCTRL_MUX_SPI1_CS 0xb8 +#define FMUX_GPIO_REG_IOCTRL_MUX_SPI1_SCK 0xbc +#define FMUX_GPIO_REG_IOCTRL_PAD_ETH_TXP 0xc0 +#define FMUX_GPIO_REG_IOCTRL_PAD_ETH_TXM 0xc4 +#define FMUX_GPIO_REG_IOCTRL_PAD_ETH_RXP 0xc8 +#define FMUX_GPIO_REG_IOCTRL_PAD_ETH_RXM 0xcc +#define FMUX_GPIO_REG_IOCTRL_GPIO_RTX 0xd0 +#define FMUX_GPIO_REG_IOCTRL_PAD_MIPIRX4N 0xd4 +#define FMUX_GPIO_REG_IOCTRL_PAD_MIPIRX4P 0xd8 +#define FMUX_GPIO_REG_IOCTRL_PAD_MIPIRX3N 0xdc +#define FMUX_GPIO_REG_IOCTRL_PAD_MIPIRX3P 0xe0 +#define FMUX_GPIO_REG_IOCTRL_PAD_MIPIRX2N 0xe4 +#define FMUX_GPIO_REG_IOCTRL_PAD_MIPIRX2P 0xe8 +#define FMUX_GPIO_REG_IOCTRL_PAD_MIPIRX1N 0xec +#define FMUX_GPIO_REG_IOCTRL_PAD_MIPIRX1P 0xf0 +#define FMUX_GPIO_REG_IOCTRL_PAD_MIPIRX0N 0xf4 +#define FMUX_GPIO_REG_IOCTRL_PAD_MIPIRX0P 0xf8 +#define FMUX_GPIO_REG_IOCTRL_PAD_MIPI_TXM2 0xfc +#define FMUX_GPIO_REG_IOCTRL_PAD_MIPI_TXP2 0x100 +#define FMUX_GPIO_REG_IOCTRL_PAD_MIPI_TXM1 0x104 +#define FMUX_GPIO_REG_IOCTRL_PAD_MIPI_TXP1 0x108 +#define FMUX_GPIO_REG_IOCTRL_PAD_MIPI_TXM0 0x10c +#define FMUX_GPIO_REG_IOCTRL_PAD_MIPI_TXP0 0x110 +#define FMUX_GPIO_REG_IOCTRL_PKG_TYPE0 0x114 +#define FMUX_GPIO_REG_IOCTRL_PKG_TYPE1 0x118 +#define FMUX_GPIO_REG_IOCTRL_PKG_TYPE2 0x11c +#define FMUX_GPIO_REG_IOCTRL_PAD_AUD_AINL_MIC 0x120 +#define FMUX_GPIO_REG_IOCTRL_PAD_AUD_AINR_MIC 0x124 +#define FMUX_GPIO_REG_IOCTRL_PAD_AUD_AOUTL 0x128 +#define FMUX_GPIO_REG_IOCTRL_PAD_AUD_AOUTR 0x12c +#define FMUX_GPIO_REG_DEVMATRIX_UART0_IP_SEL 0x1d4 +#define FMUX_GPIO_REG_DEVMATRIX_UART1_IP_SEL 0x1d8 +#define FMUX_GPIO_REG_DEVMATRIX_UART2_IP_SEL 0x1dc +#define FMUX_GPIO_REG_DEVMATRIX_UART3_IP_SEL 0x1e0 +#define FMUX_GPIO_REG_DEVMATRIX_UART4_IP_SEL 0x1e4 +#define FMUX_GPIO_FUNCSEL_SD0_CLK 0x0 +#define FMUX_GPIO_FUNCSEL_SD0_CLK_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_SD0_CLK_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_SD0_CMD 0x4 +#define FMUX_GPIO_FUNCSEL_SD0_CMD_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_SD0_CMD_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_SD0_D0 0x8 +#define FMUX_GPIO_FUNCSEL_SD0_D0_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_SD0_D0_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_SD0_D1 0xc +#define FMUX_GPIO_FUNCSEL_SD0_D1_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_SD0_D1_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_SD0_D2 0x10 +#define FMUX_GPIO_FUNCSEL_SD0_D2_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_SD0_D2_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_SD0_D3 0x14 +#define FMUX_GPIO_FUNCSEL_SD0_D3_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_SD0_D3_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_SD0_CD 0x18 +#define FMUX_GPIO_FUNCSEL_SD0_CD_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_SD0_CD_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_SD0_PWR_EN 0x1c +#define FMUX_GPIO_FUNCSEL_SD0_PWR_EN_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_SD0_PWR_EN_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_SPK_EN 0x20 +#define FMUX_GPIO_FUNCSEL_SPK_EN_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_SPK_EN_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_UART0_TX 0x24 +#define FMUX_GPIO_FUNCSEL_UART0_TX_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_UART0_TX_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_UART0_RX 0x28 +#define FMUX_GPIO_FUNCSEL_UART0_RX_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_UART0_RX_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_SPINOR_HOLD_X 0x2c +#define FMUX_GPIO_FUNCSEL_SPINOR_HOLD_X_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_SPINOR_HOLD_X_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_SPINOR_SCK 0x30 +#define FMUX_GPIO_FUNCSEL_SPINOR_SCK_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_SPINOR_SCK_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_SPINOR_MOSI 0x34 +#define FMUX_GPIO_FUNCSEL_SPINOR_MOSI_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_SPINOR_MOSI_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_SPINOR_WP_X 0x38 +#define FMUX_GPIO_FUNCSEL_SPINOR_WP_X_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_SPINOR_WP_X_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_SPINOR_MISO 0x3c +#define FMUX_GPIO_FUNCSEL_SPINOR_MISO_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_SPINOR_MISO_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_SPINOR_CS_X 0x40 +#define FMUX_GPIO_FUNCSEL_SPINOR_CS_X_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_SPINOR_CS_X_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_JTAG_CPU_TMS 0x44 +#define FMUX_GPIO_FUNCSEL_JTAG_CPU_TMS_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_JTAG_CPU_TMS_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_JTAG_CPU_TCK 0x48 +#define FMUX_GPIO_FUNCSEL_JTAG_CPU_TCK_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_JTAG_CPU_TCK_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_IIC0_SCL 0x4c +#define FMUX_GPIO_FUNCSEL_IIC0_SCL_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_IIC0_SCL_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_IIC0_SDA 0x50 +#define FMUX_GPIO_FUNCSEL_IIC0_SDA_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_IIC0_SDA_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_AUX0 0x54 +#define FMUX_GPIO_FUNCSEL_AUX0_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_AUX0_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_GPIO_ZQ 0x58 +#define FMUX_GPIO_FUNCSEL_GPIO_ZQ_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_GPIO_ZQ_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PWR_VBAT_DET 0x5c +#define FMUX_GPIO_FUNCSEL_PWR_VBAT_DET_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PWR_VBAT_DET_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PWR_RSTN 0x60 +#define FMUX_GPIO_FUNCSEL_PWR_RSTN_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PWR_RSTN_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PWR_SEQ1 0x64 +#define FMUX_GPIO_FUNCSEL_PWR_SEQ1_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PWR_SEQ1_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PWR_SEQ2 0x68 +#define FMUX_GPIO_FUNCSEL_PWR_SEQ2_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PWR_SEQ2_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PWR_WAKEUP0 0x6c +#define FMUX_GPIO_FUNCSEL_PWR_WAKEUP0_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PWR_WAKEUP0_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PWR_BUTTON1 0x70 +#define FMUX_GPIO_FUNCSEL_PWR_BUTTON1_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PWR_BUTTON1_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_XTAL_XIN 0x74 +#define FMUX_GPIO_FUNCSEL_XTAL_XIN_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_XTAL_XIN_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PWR_GPIO0 0x78 +#define FMUX_GPIO_FUNCSEL_PWR_GPIO0_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PWR_GPIO0_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PWR_GPIO1 0x7c +#define FMUX_GPIO_FUNCSEL_PWR_GPIO1_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PWR_GPIO1_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PWR_GPIO2 0x80 +#define FMUX_GPIO_FUNCSEL_PWR_GPIO2_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PWR_GPIO2_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_SD1_GPIO1 0x84 +#define FMUX_GPIO_FUNCSEL_SD1_GPIO1_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_SD1_GPIO1_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_SD1_GPIO0 0x88 +#define FMUX_GPIO_FUNCSEL_SD1_GPIO0_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_SD1_GPIO0_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_SD1_D3 0x8c +#define FMUX_GPIO_FUNCSEL_SD1_D3_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_SD1_D3_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_SD1_D2 0x90 +#define FMUX_GPIO_FUNCSEL_SD1_D2_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_SD1_D2_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_SD1_D1 0x94 +#define FMUX_GPIO_FUNCSEL_SD1_D1_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_SD1_D1_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_SD1_D0 0x98 +#define FMUX_GPIO_FUNCSEL_SD1_D0_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_SD1_D0_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_SD1_CMD 0x9c +#define FMUX_GPIO_FUNCSEL_SD1_CMD_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_SD1_CMD_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_SD1_CLK 0xa0 +#define FMUX_GPIO_FUNCSEL_SD1_CLK_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_SD1_CLK_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PWM0_BUCK 0xa4 +#define FMUX_GPIO_FUNCSEL_PWM0_BUCK_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PWM0_BUCK_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_ADC1 0xa8 +#define FMUX_GPIO_FUNCSEL_ADC1_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_ADC1_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_USB_VBUS_DET 0xac +#define FMUX_GPIO_FUNCSEL_USB_VBUS_DET_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_USB_VBUS_DET_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_MUX_SPI1_MISO 0xb0 +#define FMUX_GPIO_FUNCSEL_MUX_SPI1_MISO_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_MUX_SPI1_MISO_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_MUX_SPI1_MOSI 0xb4 +#define FMUX_GPIO_FUNCSEL_MUX_SPI1_MOSI_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_MUX_SPI1_MOSI_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_MUX_SPI1_CS 0xb8 +#define FMUX_GPIO_FUNCSEL_MUX_SPI1_CS_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_MUX_SPI1_CS_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_MUX_SPI1_SCK 0xbc +#define FMUX_GPIO_FUNCSEL_MUX_SPI1_SCK_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_MUX_SPI1_SCK_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PAD_ETH_TXP 0xc0 +#define FMUX_GPIO_FUNCSEL_PAD_ETH_TXP_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PAD_ETH_TXP_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PAD_ETH_TXM 0xc4 +#define FMUX_GPIO_FUNCSEL_PAD_ETH_TXM_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PAD_ETH_TXM_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PAD_ETH_RXP 0xc8 +#define FMUX_GPIO_FUNCSEL_PAD_ETH_RXP_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PAD_ETH_RXP_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PAD_ETH_RXM 0xcc +#define FMUX_GPIO_FUNCSEL_PAD_ETH_RXM_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PAD_ETH_RXM_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_GPIO_RTX 0xd0 +#define FMUX_GPIO_FUNCSEL_GPIO_RTX_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_GPIO_RTX_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX4N 0xd4 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX4N_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX4N_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX4P 0xd8 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX4P_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX4P_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX3N 0xdc +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX3N_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX3N_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX3P 0xe0 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX3P_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX3P_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX2N 0xe4 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX2N_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX2N_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX2P 0xe8 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX2P_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX2P_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX1N 0xec +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX1N_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX1N_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX1P 0xf0 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX1P_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX1P_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX0N 0xf4 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX0N_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX0N_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX0P 0xf8 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX0P_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PAD_MIPIRX0P_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PAD_MIPI_TXM2 0xfc +#define FMUX_GPIO_FUNCSEL_PAD_MIPI_TXM2_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PAD_MIPI_TXM2_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PAD_MIPI_TXP2 0x100 +#define FMUX_GPIO_FUNCSEL_PAD_MIPI_TXP2_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PAD_MIPI_TXP2_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PAD_MIPI_TXM1 0x104 +#define FMUX_GPIO_FUNCSEL_PAD_MIPI_TXM1_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PAD_MIPI_TXM1_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PAD_MIPI_TXP1 0x108 +#define FMUX_GPIO_FUNCSEL_PAD_MIPI_TXP1_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PAD_MIPI_TXP1_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PAD_MIPI_TXM0 0x10c +#define FMUX_GPIO_FUNCSEL_PAD_MIPI_TXM0_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PAD_MIPI_TXM0_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PAD_MIPI_TXP0 0x110 +#define FMUX_GPIO_FUNCSEL_PAD_MIPI_TXP0_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PAD_MIPI_TXP0_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PKG_TYPE0 0x114 +#define FMUX_GPIO_FUNCSEL_PKG_TYPE0_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PKG_TYPE0_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PKG_TYPE1 0x118 +#define FMUX_GPIO_FUNCSEL_PKG_TYPE1_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PKG_TYPE1_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PKG_TYPE2 0x11c +#define FMUX_GPIO_FUNCSEL_PKG_TYPE2_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PKG_TYPE2_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PAD_AUD_AINL_MIC 0x120 +#define FMUX_GPIO_FUNCSEL_PAD_AUD_AINL_MIC_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PAD_AUD_AINL_MIC_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PAD_AUD_AINR_MIC 0x124 +#define FMUX_GPIO_FUNCSEL_PAD_AUD_AINR_MIC_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PAD_AUD_AINR_MIC_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PAD_AUD_AOUTL 0x128 +#define FMUX_GPIO_FUNCSEL_PAD_AUD_AOUTL_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PAD_AUD_AOUTL_MASK 0x7 +#define FMUX_GPIO_FUNCSEL_PAD_AUD_AOUTR 0x12c +#define FMUX_GPIO_FUNCSEL_PAD_AUD_AOUTR_OFFSET 0 +#define FMUX_GPIO_FUNCSEL_PAD_AUD_AOUTR_MASK 0x7 +#define FMUX_GPIO_MUX_UART0_IP_SEL 0x1d4 +#define FMUX_GPIO_MUX_UART0_IP_SEL_OFFSET 0 +#define FMUX_GPIO_MUX_UART0_IP_SEL_MASK 0x7 +#define FMUX_GPIO_MUX_UART1_IP_SEL 0x1d8 +#define FMUX_GPIO_MUX_UART1_IP_SEL_OFFSET 0 +#define FMUX_GPIO_MUX_UART1_IP_SEL_MASK 0x7 +#define FMUX_GPIO_MUX_UART2_IP_SEL 0x1dc +#define FMUX_GPIO_MUX_UART2_IP_SEL_OFFSET 0 +#define FMUX_GPIO_MUX_UART2_IP_SEL_MASK 0x7 +#define FMUX_GPIO_MUX_UART3_IP_SEL 0x1e0 +#define FMUX_GPIO_MUX_UART3_IP_SEL_OFFSET 0 +#define FMUX_GPIO_MUX_UART3_IP_SEL_MASK 0x7 +#define FMUX_GPIO_MUX_UART4_IP_SEL 0x1e4 +#define FMUX_GPIO_MUX_UART4_IP_SEL_OFFSET 0 +#define FMUX_GPIO_MUX_UART4_IP_SEL_MASK 0x7 + +#endif /* __CV180X_REG_FMUX_GPIO_H__ */ diff --git a/fsbl/plat/cv180x/include/ddr/bitwise_ops.h b/fsbl/plat/cv180x/include/ddr/bitwise_ops.h new file mode 100644 index 000000000..7974c4b7b --- /dev/null +++ b/fsbl/plat/cv180x/include/ddr/bitwise_ops.h @@ -0,0 +1,27 @@ +#ifndef __BITWISE_OPS_H__ +#define __BITWISE_OPS_H__ + +#include + +// #define BIT(nr) (1U << (nr)) +#define GENMASK(msb, lsb) ((2U << (msb))-(1U << (lsb))) + +static inline uint32_t modified_bits_by_value(uint32_t orig, uint32_t value, uint32_t msb, uint32_t lsb) +{ + uint32_t bitmask = GENMASK(msb, lsb); + + orig &= ~bitmask; + return (orig | ((value << lsb) & bitmask)); +} + +static inline uint32_t get_bits_from_value(uint32_t value, uint32_t msb, uint32_t lsb) +{ + // if (msb < lsb) + // uartlog("%s: msb %u < lsb %u\n", __func__, msb, lsb); + return ((value & GENMASK(msb, lsb)) >> lsb); +} + +#define FIELD_SET modified_bits_by_value +#define FIELD_GET get_bits_from_value + +#endif /* __BITWISE_OPS_H__ */ diff --git a/fsbl/plat/cv180x/include/ddr/cvx16_dram_cap_check.h b/fsbl/plat/cv180x/include/ddr/cvx16_dram_cap_check.h new file mode 100644 index 000000000..47bc3d5de --- /dev/null +++ b/fsbl/plat/cv180x/include/ddr/cvx16_dram_cap_check.h @@ -0,0 +1,6 @@ +#ifndef __CVX16_DRAM_CAP_CHECK_H__ +#define __CVX16_DRAM_CAP_CHECK_H__ + +void cvx16_dram_cap_check(uint8_t size); + +#endif /* __CVX16_DRAM_CAP_CHECK_H__ */ diff --git a/fsbl/plat/cv180x/include/ddr/cvx16_pinmux.h b/fsbl/plat/cv180x/include/ddr/cvx16_pinmux.h new file mode 100644 index 000000000..8292fdb3b --- /dev/null +++ b/fsbl/plat/cv180x/include/ddr/cvx16_pinmux.h @@ -0,0 +1,6 @@ +#ifndef __CVX16_PINMUX_H__ +#define __CVX16_PINMUX_H__ + +void cvx16_pinmux(void); + +#endif /* __CVX16_PINMUX_H__ */ diff --git a/fsbl/plat/cv180x/include/ddr/ddr.h b/fsbl/plat/cv180x/include/ddr/ddr.h new file mode 100644 index 000000000..1f424910d --- /dev/null +++ b/fsbl/plat/cv180x/include/ddr/ddr.h @@ -0,0 +1,11 @@ +#ifndef __DDR_H__ +#define __DDR_H__ + +struct ddr_param { + uint8_t data[1024 * 16]; +}; + +int ddr_init(const struct ddr_param *ddr_param); + + +#endif /* __DDR_H__ */ diff --git a/fsbl/plat/cv180x/include/ddr/ddr_config/ddr2_1333_x16/ddr_init.h b/fsbl/plat/cv180x/include/ddr/ddr_config/ddr2_1333_x16/ddr_init.h new file mode 100644 index 000000000..42049e0fa --- /dev/null +++ b/fsbl/plat/cv180x/include/ddr/ddr_config/ddr2_1333_x16/ddr_init.h @@ -0,0 +1,1156 @@ +#ifndef __DDR_PI_PHY_H__ +#define __DDR_PI_PHY_H__ + +extern uint32_t ddr_data_rate; +// $Module: reg_cv_phy_param_ddr2_1333 $ +// $RegisterBank Version: V 1.0.00 $ +// $Author: KC TSAI $ +// $Date: Fri, 11 Mar 2022 03:31:19 PM $ +// + +#define DDR_PHY_REG_0_DATA 0b00000011000000100000000100000000 + // param_phyd_swap_ca0:[4:0]=0b00000 + // param_phyd_swap_ca1:[12:8]=0b00001 + // param_phyd_swap_ca2:[20:16]=0b00010 + // param_phyd_swap_ca3:[28:24]=0b00011 +#define DDR_PHY_REG_1_DATA 0b00000111000001100000010100000100 + // param_phyd_swap_ca4:[4:0]=0b00100 + // param_phyd_swap_ca5:[12:8]=0b00101 + // param_phyd_swap_ca6:[20:16]=0b00110 + // param_phyd_swap_ca7:[28:24]=0b00111 +#define DDR_PHY_REG_2_DATA 0b00001011000010100000100100001000 + // param_phyd_swap_ca8:[4:0]=0b01000 + // param_phyd_swap_ca9:[12:8]=0b01001 + // param_phyd_swap_ca10:[20:16]=0b01010 + // param_phyd_swap_ca11:[28:24]=0b01011 +#define DDR_PHY_REG_3_DATA 0b00001111000011100000110100001100 + // param_phyd_swap_ca12:[4:0]=0b01100 + // param_phyd_swap_ca13:[12:8]=0b01101 + // param_phyd_swap_ca14:[20:16]=0b01110 + // param_phyd_swap_ca15:[28:24]=0b01111 +#define DDR_PHY_REG_4_DATA 0b00010011000100100001000100010000 + // param_phyd_swap_ca16:[4:0]=0b10000 + // param_phyd_swap_ca17:[12:8]=0b10001 + // param_phyd_swap_ca18:[20:16]=0b10010 + // param_phyd_swap_ca19:[28:24]=0b10011 +#define DDR_PHY_REG_5_DATA 0b00000000000101100001010100010100 + // param_phyd_swap_ca20:[4:0]=0b10100 + // param_phyd_swap_ca21:[12:8]=0b10101 + // param_phyd_swap_ca22:[20:16]=0b10110 +#define DDR_PHY_REG_6_DATA 0b00000000000000000000000000000000 + // param_phyd_swap_cke0:[0:0]=0b0 + // param_phyd_swap_cs0:[4:4]=0b0 +#define DDR_PHY_REG_7_DATA 0b00000000000000000000000100000000 + // param_phyd_data_byte_swap_slice0:[1:0]=0b00 + // param_phyd_data_byte_swap_slice1:[9:8]=0b01 +#define DDR_PHY_REG_8_DATA 0b01110110010101000011001000010000 + // param_phyd_swap_byte0_dq0_mux:[3:0]=0b0000 + // param_phyd_swap_byte0_dq1_mux:[7:4]=0b0001 + // param_phyd_swap_byte0_dq2_mux:[11:8]=0b0010 + // param_phyd_swap_byte0_dq3_mux:[15:12]=0b0011 + // param_phyd_swap_byte0_dq4_mux:[19:16]=0b0100 + // param_phyd_swap_byte0_dq5_mux:[23:20]=0b0101 + // param_phyd_swap_byte0_dq6_mux:[27:24]=0b0110 + // param_phyd_swap_byte0_dq7_mux:[31:28]=0b0111 +#define DDR_PHY_REG_9_DATA 0b00000000000000000000000000001000 + // param_phyd_swap_byte0_dm_mux:[3:0]=0b1000 +#define DDR_PHY_REG_10_DATA 0b01110110010101000011001000010000 + // param_phyd_swap_byte1_dq0_mux:[3:0]=0b0000 + // param_phyd_swap_byte1_dq1_mux:[7:4]=0b0001 + // param_phyd_swap_byte1_dq2_mux:[11:8]=0b0010 + // param_phyd_swap_byte1_dq3_mux:[15:12]=0b0011 + // param_phyd_swap_byte1_dq4_mux:[19:16]=0b0100 + // param_phyd_swap_byte1_dq5_mux:[23:20]=0b0101 + // param_phyd_swap_byte1_dq6_mux:[27:24]=0b0110 + // param_phyd_swap_byte1_dq7_mux:[31:28]=0b0111 +#define DDR_PHY_REG_11_DATA 0b00000000000000000000000000001000 + // param_phyd_swap_byte1_dm_mux:[3:0]=0b1000 +#define DDR_PHY_REG_16_DATA 0b00000000000000000000000000000000 + // param_phyd_dll_rx_sw_mode:[0:0]=0b0 + // param_phyd_dll_rx_start_cal:[1:1]=0b0 + // param_phyd_dll_rx_cntr_mode:[2:2]=0b0 + // param_phyd_dll_rx_hwrst_time:[3:3]=0b0 + // param_phyd_dll_tx_sw_mode:[16:16]=0b0 + // param_phyd_dll_tx_start_cal:[17:17]=0b0 + // param_phyd_dll_tx_cntr_mode:[18:18]=0b0 + // param_phyd_dll_tx_hwrst_time:[19:19]=0b0 +#define DDR_PHY_REG_17_DATA 0b00000000011111110000000000001101 + // param_phyd_dll_slave_delay_en:[0:0]=0b1 + // param_phyd_dll_rw_en:[1:1]=0b0 + // param_phyd_dll_avg_mode:[2:2]=0b1 + // param_phyd_dll_upd_wait:[6:3]=0b0001 + // param_phyd_dll_sw_clr:[7:7]=0b0 + // param_phyd_dll_sw_code_mode:[8:8]=0b0 + // param_phyd_dll_sw_code:[23:16]=0b01111111 +#define DDR_PHY_REG_18_DATA 0b00000000000000000000000000000000 + // param_phya_reg_tx_clk_tx_dline_code_clkn0:[6:0]=0b0000000 + // param_phya_reg_tx_clk_tx_dline_code_clkp0:[14:8]=0b0000000 +#define DDR_PHY_REG_19_DATA 0b00000000000000000000000000010000 + // param_phya_reg_sel_ddr4_mode:[0:0]=0b0 + // param_phya_reg_sel_lpddr3_mode:[1:1]=0b0 + // param_phya_reg_sel_lpddr4_mode:[2:2]=0b0 + // param_phya_reg_sel_ddr3_mode:[3:3]=0b0 + // param_phya_reg_sel_ddr2_mode:[4:4]=0b1 +#define DDR_PHY_REG_20_DATA 0b00000000000000000000000000000100 + // param_phyd_dram_class:[3:0]=0b0100 +#define DDR_PHY_REG_21_DATA 0b00001100000000000000101100000000 + // param_phyd_wrlvl_start_delay_code:[6:0]=0b0000000 + // param_phyd_wrlvl_start_shift_code:[13:8]=0b001011 + // param_phyd_wrlvl_end_delay_code:[22:16]=0b0000000 + // param_phyd_wrlvl_end_shift_code:[29:24]=0b001100 +#define DDR_PHY_REG_22_DATA 0b00001001000101100000000001001111 + // param_phyd_wrlvl_capture_cnt:[3:0]=0b1111 + // param_phyd_wrlvl_dly_step:[7:4]=0b0100 + // param_phyd_wrlvl_disable:[11:8]=0b0000 + // param_phyd_wrlvl_resp_wait_cnt:[21:16]=0b010110 + // param_phyd_oenz_lead_cnt:[26:23]=0b0010 + // param_phyd_wrlvl_mode:[27:27]=0b1 +#define DDR_PHY_REG_23_DATA 0b00000000000000000000000000000000 + // param_phyd_wrlvl_sw:[0:0]=0b0 + // param_phyd_wrlvl_sw_upd_req:[1:1]=0b0 + // param_phyd_wrlvl_sw_resp:[2:2]=0b0 + // param_phyd_wrlvl_data_mask:[23:16]=0b00000000 +#define DDR_PHY_REG_24_DATA 0b00000100000000000000001101110000 + // param_phyd_pigtlvl_back_step:[7:0]=0b01110000 + // param_phyd_pigtlvl_capture_cnt:[11:8]=0b0011 + // param_phyd_pigtlvl_disable:[19:16]=0b0000 + // param_phyd_pigtlvl_dly_step:[27:24]=0b0100 +#define DDR_PHY_REG_25_DATA 0b00001110000000000000100101000000 + // param_phyd_pigtlvl_start_delay_code:[6:0]=0b1000000 + // param_phyd_pigtlvl_start_shift_code:[13:8]=0b001001 + // param_phyd_pigtlvl_end_delay_code:[22:16]=0b0000000 + // param_phyd_pigtlvl_end_shift_code:[29:24]=0b001110 +#define DDR_PHY_REG_26_DATA 0b00000000100000000000000000000000 + // param_phyd_pigtlvl_resp_wait_cnt:[5:0]=0b000000 + // param_phyd_pigtlvl_sw:[8:8]=0b0 + // param_phyd_pigtlvl_sw_resp:[13:12]=0b00 + // param_phyd_pigtlvl_sw_upd_req:[16:16]=0b0 + // param_phyd_rx_en_lead_cnt:[23:20]=0b1000 +#define DDR_PHY_REG_28_DATA 0b00000000000000000000000100001000 + // param_phyd_rgtrack_threshold:[4:0]=0b01000 + // param_phyd_rgtrack_dly_step:[11:8]=0b0001 + // param_phyd_rgtrack_disable:[19:16]=0b0000 +#define DDR_PHY_REG_29_DATA 0b00000000000001110010000000000000 + // param_phyd_zqcal_wait_count:[3:0]=0b0000 + // param_phyd_zqcal_cycle_count:[15:8]=0b00100000 + // param_phyd_zqcal_hw_mode:[18:16]=0b111 +#define DDR_PHY_REG_32_DATA 0b00011111000000001110000000000000 + // param_phyd_pirdlvl_dlie_code_start:[7:0]=0b00000000 + // param_phyd_pirdlvl_dlie_code_end:[15:8]=0b11100000 + // param_phyd_pirdlvl_deskew_start:[22:16]=0b0000000 + // param_phyd_pirdlvl_deskew_end:[30:24]=0b0011111 +#define DDR_PHY_REG_33_DATA 0b00000001000010010001000000001111 + // param_phyd_pirdlvl_trig_lvl_start:[4:0]=0b01111 + // param_phyd_pirdlvl_trig_lvl_end:[12:8]=0b10000 + // param_phyd_pirdlvl_rdvld_start:[20:16]=0b01001 + // param_phyd_pirdlvl_rdvld_end:[28:24]=0b00001 +#define DDR_PHY_REG_34_DATA 0b00001010000000010000000100010100 + // param_phyd_pirdlvl_dly_step:[3:0]=0b0100 + // param_phyd_pirdlvl_ds_dly_step:[7:4]=0b0001 + // param_phyd_pirdlvl_vref_step:[11:8]=0b0001 + // param_phyd_pirdlvl_disable:[15:12]=0b0000 + // param_phyd_pirdlvl_resp_wait_cnt:[21:16]=0b000001 + // param_phyd_pirdlvl_vref_wait_cnt:[31:24]=0b00001010 +#define DDR_PHY_REG_35_DATA 0b10101010101010100000000010001111 + // param_phyd_pirdlvl_rx_prebit_deskew_en:[0:0]=0b1 + // param_phyd_pirdlvl_rx_init_deskew_en:[1:1]=0b1 + // param_phyd_pirdlvl_vref_training_en:[2:2]=0b1 + // param_phyd_pirdlvl_rdvld_training_en:[3:3]=0b1 + // param_phyd_pirdlvl_capture_cnt:[7:4]=0b1000 + // param_phyd_pirdlvl_MR1520_BYTE:[15:8]=0b00000000 + // param_phyd_pirdlvl_MR3240:[31:16]=0b1010101010101010 +#define DDR_PHY_REG_36_DATA 0b00000000000000000011100000000000 + // param_phyd_pirdlvl_data_mask:[8:0]=0b000000000 + // param_phyd_pirdlvl_sw:[9:9]=0b0 + // param_phyd_pirdlvl_sw_upd_req:[10:10]=0b0 + // param_phyd_pirdlvl_sw_resp:[12:11]=0b11 + // param_phyd_pirdlvl_trig_lvl_dqs_follow_dq:[13:13]=0b1 +#define DDR_PHY_REG_37_DATA 0b00000000000000000000100000000001 + // param_phyd_pirdlvl_rdvld_offset:[3:0]=0b0001 + // param_phyd_pirdlvl_found_cnt_limite:[15:8]=0b00001000 +#define DDR_PHY_REG_40_DATA 0b00000111010000000000010101000000 + // param_phyd_piwdqlvl_start_delay_code:[6:0]=0b1000000 + // param_phyd_piwdqlvl_start_shift_code:[13:8]=0b000101 + // param_phyd_piwdqlvl_end_delay_code:[22:16]=0b1000000 + // param_phyd_piwdqlvl_end_shift_code:[29:24]=0b000111 +#define DDR_PHY_REG_41_DATA 0b00000001010000100000010100000100 + // param_phyd_piwdqlvl_tx_vref_start:[4:0]=0b00100 + // param_phyd_piwdqlvl_tx_vref_end:[12:8]=0b00101 + // param_phyd_piwdqlvl_capture_cnt:[19:16]=0b0010 + // param_phyd_piwdqlvl_dly_step:[23:20]=0b0100 + // param_phyd_piwdqlvl_vref_step:[27:24]=0b0001 + // param_phyd_piwdqlvl_disable:[31:28]=0b0000 +#define DDR_PHY_REG_42_DATA 0b00000000010101010000000000001010 + // param_phyd_piwdqlvl_vref_wait_cnt:[7:0]=0b00001010 + // param_phyd_piwdqlvl_tx_vref_training_en:[8:8]=0b0 + // param_phyd_piwdqlvl_byte_invert_0:[23:16]=0b01010101 +#define DDR_PHY_REG_43_DATA 0b00000000010101010011110001011010 + // param_phyd_piwdqlvl_dq_pattern_0:[15:0]=0b0011110001011010 + // param_phyd_piwdqlvl_byte_invert_1:[23:16]=0b01010101 +#define DDR_PHY_REG_44_DATA 0b00000000101010101010010111000011 + // param_phyd_piwdqlvl_dq_pattern_1:[15:0]=0b1010010111000011 + // param_phyd_piwdqlvl_byte_invert_2:[23:16]=0b10101010 +#define DDR_PHY_REG_45_DATA 0b00000000101010101111000011110000 + // param_phyd_piwdqlvl_dq_pattern_2:[15:0]=0b1111000011110000 + // param_phyd_piwdqlvl_byte_invert_3:[23:16]=0b10101010 +#define DDR_PHY_REG_46_DATA 0b00011110000000000000111100001111 + // param_phyd_piwdqlvl_dq_pattern_3:[15:0]=0b0000111100001111 + // param_phyd_piwdqlvl_data_mask:[24:16]=0b000000000 + // param_phyd_piwdqlvl_pattern_sel:[28:25]=0b1111 +#define DDR_PHY_REG_47_DATA 0b00000000000010000011111000010011 + // param_phyd_piwdqlvl_tdfi_phy_wrdata:[2:0]=0b011 + // param_phyd_piwdqlvl_oenz_lead_cnt:[6:3]=0b0010 + // param_phyd_piwdqlvl_sw:[7:7]=0b0 + // param_phyd_piwdqlvl_sw_upd_req:[8:8]=0b0 + // param_phyd_piwdqlvl_sw_resp:[10:9]=0b11 + // param_phyd_piwdqlvl_sw_result:[11:11]=0b1 + // param_phyd_piwdqlvl_dq_mode:[12:12]=0b1 + // param_phyd_piwdqlvl_dm_mode:[13:13]=0b1 + // param_phyd_piwdqlvl_found_cnt_limite:[23:16]=0b00001000 +#define DDR_PHY_REG_60_DATA 0b00000000000000000000000000000000 + // param_phyd_patch_revision:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_61_DATA 0b00000000000000110000000000110011 + // param_phyd_ca_shift_gating_en:[0:0]=0b1 + // param_phyd_cs_shift_gating_en:[1:1]=0b1 + // param_phyd_cke_shift_gating_en:[2:2]=0b0 + // param_phyd_resetz_shift_gating_en:[3:3]=0b0 + // param_phyd_tx_byte0_shift_gating_en:[4:4]=0b1 + // param_phyd_tx_byte1_shift_gating_en:[5:5]=0b1 + // param_phyd_rx_byte0_shift_gating_en:[16:16]=0b1 + // param_phyd_rx_byte1_shift_gating_en:[17:17]=0b1 +#define DDR_PHY_REG_62_DATA 0b00000000001000010000000000101100 + // param_phyd_lb_lfsr_seed0:[8:0]=0b000101100 + // param_phyd_lb_lfsr_seed1:[24:16]=0b000100001 +#define DDR_PHY_REG_63_DATA 0b00000000001101110000000000010110 + // param_phyd_lb_lfsr_seed2:[8:0]=0b000010110 + // param_phyd_lb_lfsr_seed3:[24:16]=0b000110111 +#define DDR_PHY_REG_64_DATA 0b00000100000000000000000000000000 + // param_phyd_lb_dq_en:[0:0]=0b0 + // param_phyd_lb_dq_go:[1:1]=0b0 + // param_phyd_lb_sw_en:[2:2]=0b0 + // param_phyd_lb_sw_rx_en:[3:3]=0b0 + // param_phyd_lb_sw_rx_mask:[4:4]=0b0 + // param_phyd_lb_sw_odt_en:[5:5]=0b0 + // param_phyd_lb_sw_ca_clkpattern:[6:6]=0b0 + // param_phyd_lb_sync_len:[31:16]=0b0000010000000000 +#define DDR_PHY_REG_65_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_dout0:[8:0]=0b000000000 + // param_phyd_lb_sw_dout1:[24:16]=0b000000000 +#define DDR_PHY_REG_67_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_oenz_dout0:[0:0]=0b0 + // param_phyd_lb_sw_oenz_dout1:[1:1]=0b0 + // param_phyd_lb_sw_dqsn0:[4:4]=0b0 + // param_phyd_lb_sw_dqsn1:[5:5]=0b0 + // param_phyd_lb_sw_dqsp0:[8:8]=0b0 + // param_phyd_lb_sw_dqsp1:[9:9]=0b0 + // param_phyd_lb_sw_oenz_dqs_dout0:[12:12]=0b0 + // param_phyd_lb_sw_oenz_dqs_dout1:[13:13]=0b0 +#define DDR_PHY_REG_68_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_ca_dout:[22:0]=0b00000000000000000000000 +#define DDR_PHY_REG_69_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_clkn0_dout:[0:0]=0b0 + // param_phyd_lb_sw_clkp0_dout:[4:4]=0b0 + // param_phyd_lb_sw_cke0_dout:[8:8]=0b0 + // param_phyd_lb_sw_resetz_dout:[12:12]=0b0 + // param_phyd_lb_sw_csb0_dout:[16:16]=0b0 +#define DDR_PHY_REG_70_DATA 0b00000000000000000000000000000000 + // param_phyd_clkctrl_init_complete:[0:0]=0b0 +#define DDR_PHY_REG_71_DATA 0b00000000000000000110101000010000 + // param_phyd_reg_resetz_dqs_rd_en:[4:4]=0b1 + // param_phyd_rx_upd_tx_sel:[9:8]=0b10 + // param_phyd_tx_upd_rx_sel:[11:10]=0b10 + // param_phyd_rx_en_ext_win:[15:12]=0b0110 + // param_phyd_fifo_rst_sel:[18:16]=0b000 + // param_phyd_fifo_sw_rst:[20:20]=0b0 +#define DDR_PHY_REG_72_DATA 0b00000000000000000000000000000000 + // param_phyd_phy_int_ack:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_73_DATA 0b11111111111111111111111011110111 + // param_phyd_phy_int_mask:[31:0]=0b11111111111111111111111011110111 +#define DDR_PHY_REG_74_DATA 0b00000000000000000000000000011111 + // param_phyd_calvl_rst_n:[0:0]=0b1 + // param_phyd_pigtlvl_rst_n:[1:1]=0b1 + // param_phyd_pirdlvl_rst_n:[2:2]=0b1 + // param_phyd_piwdqlvl_rst_n:[3:3]=0b1 + // param_phyd_wrlvl_rst_n:[4:4]=0b1 +#define DDR_PHY_REG_75_DATA 0b00000000000000000000000000000001 + // param_phyd_clk0_pol:[0:0]=0b1 +#define DDR_PHY_REG_76_DATA 0b00000000000000000000000100000001 + // param_phyd_tx_ca_oenz:[0:0]=0b1 + // param_phyd_tx_ca_clk0_oenz:[8:8]=0b1 +#define DDR_PHY_REG_77_DATA 0b00000000000000000000000100000000 + // param_phya_reg_en_test:[0:0]=0b0 + // param_phya_reg_tx_ca_test_en:[1:1]=0b0 + // param_phya_reg_tx_ca_en_ca_loop_back:[2:2]=0b0 + // param_phya_reg_tx_sel_4bit_mode_tx:[8:8]=0b1 + // param_phya_reg_tx_gpio_in:[16:16]=0b0 +#define DDR_PHY_REG_78_DATA 0b00000000000000000000000000010100 + // param_phya_reg_rx_en_ca_train_mode:[0:0]=0b0 + // param_phya_reg_rx_en_pream_train_mode:[1:1]=0b0 + // param_phya_reg_rx_sel_dqs_wo_pream_mode:[2:2]=0b1 + // param_phya_reg_rx_en_rec_offset:[3:3]=0b0 + // param_phya_reg_rx_sel_4bit_mode_rx:[4:4]=0b1 +#define DDR_PHY_REG_80_DATA 0b00000000000000000000000000000000 + // param_phya_reg_rx_ddrdll_enautok:[0:0]=0b0 + // param_phya_reg_rx_ddrdll_rstb:[1:1]=0b0 + // param_phya_reg_rx_ddrdll_selckout:[5:4]=0b00 + // param_phya_reg_rx_ddrdll_test:[7:6]=0b00 + // param_phya_reg_rx_ddrdll_sel:[15:8]=0b00000000 + // param_phya_reg_tx_ddrdll_enautok:[16:16]=0b0 + // param_phya_reg_tx_ddrdll_rstb:[17:17]=0b0 + // param_phya_reg_tx_ddrdll_selckout:[21:20]=0b00 + // param_phya_reg_tx_ddrdll_test:[23:22]=0b00 + // param_phya_reg_tx_ddrdll_sel:[31:24]=0b00000000 +#define DDR_PHY_REG_81_DATA 0b00000000000000000000000000000000 + // param_phya_reg_tx_zq_cmp_en:[0:0]=0b0 + // param_phya_reg_tx_zq_cmp_offset_cal_en:[1:1]=0b0 + // param_phya_reg_tx_zq_ph_en:[2:2]=0b0 + // param_phya_reg_tx_zq_pl_en:[3:3]=0b0 + // param_phya_reg_tx_zq_step2_en:[4:4]=0b0 + // param_phya_reg_tx_zq_cmp_offset:[12:8]=0b00000 + // param_phya_reg_tx_zq_sel_vref:[20:16]=0b00000 +#define DDR_PHY_REG_82_DATA 0b00000000000000000000100000001000 + // param_phya_reg_tx_zq_golden_drvn:[4:0]=0b01000 + // param_phya_reg_tx_zq_golden_drvp:[12:8]=0b01000 + // param_phya_reg_tx_zq_drvn:[20:16]=0b00000 + // param_phya_reg_tx_zq_drvp:[28:24]=0b00000 +#define DDR_PHY_REG_83_DATA 0b00000000000000000000000000000000 + // param_phya_reg_tx_zq_en_test_aux:[0:0]=0b0 + // param_phya_reg_tx_zq_en_test_mux:[1:1]=0b0 + // param_phya_reg_sel_zq_high_swing:[2:2]=0b0 + // param_phya_reg_zq_sel_test_out0:[7:4]=0b0000 + // param_phya_reg_zq_sel_test_out1:[11:8]=0b0000 + // param_phya_reg_tx_zq_sel_test_ana_in:[15:12]=0b0000 + // param_phya_reg_tx_zq_sel_gpio_in:[17:16]=0b00 +#define DDR_PHY_REG_84_DATA 0b00000000000000000000000000000101 + // param_phya_reg_tune_damp_r:[3:0]=0b0101 +#define DDR_PHY_REG_85_DATA 0b00000000000000000000000100000001 + // param_phyd_sel_cke_oenz:[0:0]=0b1 + // param_phyd_tx_dqsn_default_value:[8:8]=0b1 + // param_phyd_tx_dqsp_default_value:[12:12]=0b0 + // param_phyd_ddr4_2t_preamble:[16:16]=0b0 +#define DDR_PHY_REG_86_DATA 0b00000000000000000000000000000000 + // param_phya_reg_zqcal_done:[0:0]=0b0 +#define DDR_PHY_REG_87_DATA 0b00000000000000000000000000000000 + // param_phyd_dbg_sel:[7:0]=0b00000000 + // param_phyd_dbg_sel_en:[16:16]=0b0 +#define DDR_PHY_REG_89_DATA 0b00000000000000000000000000000000 + // param_phyd_reg_dfs_sel:[0:0]=0b0 +#define DDR_PHY_REG_90_DATA 0b00000000001100110011001100110001 + // param_phyd_ca_sw_dline_en:[0:0]=0b1 + // param_phyd_byte0_wr_sw_dline_en:[4:4]=0b1 + // param_phyd_byte1_wr_sw_dline_en:[5:5]=0b1 + // param_phyd_byte0_wdqs_sw_dline_en:[8:8]=0b1 + // param_phyd_byte1_wdqs_sw_dline_en:[9:9]=0b1 + // param_phyd_byte0_rd_sw_dline_en:[12:12]=0b1 + // param_phyd_byte1_rd_sw_dline_en:[13:13]=0b1 + // param_phyd_byte0_rdg_sw_dline_en:[16:16]=0b1 + // param_phyd_byte1_rdg_sw_dline_en:[17:17]=0b1 + // param_phyd_byte0_rdqs_sw_dline_en:[20:20]=0b1 + // param_phyd_byte1_rdqs_sw_dline_en:[21:21]=0b1 +#define DDR_PHY_REG_91_DATA 0b00000000000000000000000000000000 + // param_phyd_ca_raw_dline_upd:[0:0]=0b0 + // param_phyd_byte0_wr_raw_dline_upd:[4:4]=0b0 + // param_phyd_byte1_wr_raw_dline_upd:[5:5]=0b0 + // param_phyd_byte0_wdqs_raw_dline_upd:[8:8]=0b0 + // param_phyd_byte1_wdqs_raw_dline_upd:[9:9]=0b0 + // param_phyd_byte0_rd_raw_dline_upd:[12:12]=0b0 + // param_phyd_byte1_rd_raw_dline_upd:[13:13]=0b0 + // param_phyd_byte0_rdg_raw_dline_upd:[16:16]=0b0 + // param_phyd_byte1_rdg_raw_dline_upd:[17:17]=0b0 + // param_phyd_byte0_rdqs_raw_dline_upd:[20:20]=0b0 + // param_phyd_byte1_rdqs_raw_dline_upd:[21:21]=0b0 +#define DDR_PHY_REG_92_DATA 0b00000000000000000000000000000000 + // param_phyd_sw_dline_upd_req:[0:0]=0b0 +#define DDR_PHY_REG_93_DATA 0b00000000000000000000000100000000 + // param_phyd_sw_dfi_phyupd_req:[0:0]=0b0 + // param_phyd_sw_dfi_phyupd_req_clr:[4:4]=0b0 + // param_phyd_sw_phyupd_dline:[8:8]=0b1 +#define DDR_PHY_REG_96_DATA 0b00000000000000100000000000010000 + // param_phyd_dfi_wrlvl_req:[0:0]=0b0 + // param_phyd_dfi_wrlvl_odt_en:[4:4]=0b1 + // param_phyd_dfi_wrlvl_strobe_cnt:[19:16]=0b0010 +#define DDR_PHY_REG_97_DATA 0b00000000000000000000000000000000 + // param_phyd_dfi_rdglvl_req:[0:0]=0b0 + // param_phyd_dfi_rdglvl_ddr3_mpr:[4:4]=0b0 +#define DDR_PHY_REG_98_DATA 0b00000000000000000000000000000000 + // param_phyd_dfi_rdlvl_req:[0:0]=0b0 + // param_phyd_dfi_rdlvl_ddr3_mpr:[4:4]=0b0 +#define DDR_PHY_REG_99_DATA 0b00000000000001010000010000000000 + // param_phyd_dfi_wdqlvl_req:[0:0]=0b0 + // param_phyd_dfi_wdqlvl_bist_data_en:[4:4]=0b0 + // param_phyd_dfi_wdqlvl_vref_train_en:[10:10]=0b1 + // param_phyd_dfi_wdqlvl_vref_wait_cnt:[23:16]=0b00000101 +#define DDR_PHY_REG_100_DATA 0b00000000000000100001001000001110 + // param_phyd_dfi_wdqlvl_vref_start:[6:0]=0b0001110 + // param_phyd_dfi_wdqlvl_vref_end:[14:8]=0b0010010 + // param_phyd_dfi_wdqlvl_vref_step:[19:16]=0b0010 +#define DDR_PHY_REG_128_DATA 0b00000000000000000000000000000000 + // param_phya_reg_byte0_test_en:[0:0]=0b0 + // param_phya_reg_tx_byte0_ddr_test:[15:8]=0b00000000 + // param_phya_reg_rx_byte0_sel_test_in0:[19:16]=0b0000 + // param_phya_reg_rx_byte0_sel_test_in1:[23:20]=0b0000 +#define DDR_PHY_REG_129_DATA 0b00000000000000000000010001000000 + // param_phya_reg_tx_byte0_en_rx_awys_on:[0:0]=0b0 + // param_phya_reg_tx_byte0_sel_en_rx_dly:[5:4]=0b00 + // param_phya_reg_rx_byte0_sel_en_rx_gen_rst:[6:6]=0b1 + // param_phya_reg_byte0_mask_oenz:[8:8]=0b0 + // param_phya_reg_tx_byte0_en_mask:[10:10]=0b1 + // param_phya_reg_rx_byte0_sel_cnt_mode:[13:12]=0b00 + // param_phya_reg_tx_byte0_sel_int_loop_back:[14:14]=0b0 + // param_phya_reg_rx_byte0_sel_dqs_dly_for_gated:[17:16]=0b00 + // param_phya_reg_tx_byte0_en_extend_oenz_gated_dline:[18:18]=0b0 +#define DDR_PHY_REG_130_DATA 0b00000000000000000000000000000000 + // param_phyd_reg_reserved_byte0:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_136_DATA 0b00000000000000000000000000000000 + // param_phya_reg_byte1_test_en:[0:0]=0b0 + // param_phya_reg_tx_byte1_ddr_test:[15:8]=0b00000000 + // param_phya_reg_rx_byte1_sel_test_in0:[19:16]=0b0000 + // param_phya_reg_rx_byte1_sel_test_in1:[23:20]=0b0000 +#define DDR_PHY_REG_137_DATA 0b00000000000000000000010001000000 + // param_phya_reg_tx_byte1_en_rx_awys_on:[0:0]=0b0 + // param_phya_reg_tx_byte1_sel_en_rx_dly:[5:4]=0b00 + // param_phya_reg_rx_byte1_sel_en_rx_gen_rst:[6:6]=0b1 + // param_phya_reg_byte1_mask_oenz:[8:8]=0b0 + // param_phya_reg_tx_byte1_en_mask:[10:10]=0b1 + // param_phya_reg_rx_byte1_sel_cnt_mode:[13:12]=0b00 + // param_phya_reg_tx_byte1_sel_int_loop_back:[14:14]=0b0 + // param_phya_reg_rx_byte1_sel_dqs_dly_for_gated:[17:16]=0b00 + // param_phya_reg_tx_byte1_en_extend_oenz_gated_dline:[18:18]=0b0 +#define DDR_PHY_REG_138_DATA 0b00000000000000000000000000000000 + // param_phyd_reg_reserved_byte1:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_0_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_ca_sel_lpddr4_pmos_ph_ca:[3:3]=0b0 + // f0_param_phya_reg_tx_clk_sel_lpddr4_pmos_ph_clk:[4:4]=0b0 + // f0_param_phya_reg_tx_sel_lpddr4_pmos_ph:[5:5]=0b0 +#define DDR_PHY_REG_1_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_ca_drvn_de:[1:0]=0b00 + // f0_param_phya_reg_tx_ca_drvp_de:[5:4]=0b00 + // f0_param_phya_reg_tx_clk0_drvn_de:[9:8]=0b00 + // f0_param_phya_reg_tx_clk0_drvp_de:[13:12]=0b00 + // f0_param_phya_reg_tx_csb_drvn_de:[17:16]=0b00 + // f0_param_phya_reg_tx_csb_drvp_de:[21:20]=0b00 + // f0_param_phya_reg_tx_ca_en_tx_de:[24:24]=0b0 + // f0_param_phya_reg_tx_clk0_en_tx_de:[28:28]=0b0 + // f0_param_phya_reg_tx_csb_en_tx_de:[30:30]=0b0 +#define DDR_PHY_REG_2_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_ca_sel_dly1t_ca:[22:0]=0b00000000000000000000000 +#define DDR_PHY_REG_3_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_clk_sel_dly1t_clk0:[0:0]=0b0 + // f0_param_phya_reg_tx_ca_sel_dly1t_cke0:[8:8]=0b0 + // f0_param_phya_reg_tx_ca_sel_dly1t_csb0:[16:16]=0b0 +#define DDR_PHY_REG_4_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_vref_en_free_offset:[0:0]=0b0 + // f0_param_phya_reg_tx_vref_en_rangex2:[1:1]=0b0 + // f0_param_phya_reg_tx_vref_sel_lpddr4divby2p5:[2:2]=0b0 + // f0_param_phya_reg_tx_vref_sel_lpddr4divby3:[3:3]=0b0 + // f0_param_phya_reg_tx_vref_offset:[14:8]=0b0000000 + // f0_param_phya_reg_tx_vref_sel:[20:16]=0b10000 +#define DDR_PHY_REG_5_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_vrefca_en_free_offset:[0:0]=0b0 + // f0_param_phya_reg_tx_vrefca_en_rangex2:[1:1]=0b0 + // f0_param_phya_reg_tx_vrefca_offset:[14:8]=0b0000000 + // f0_param_phya_reg_tx_vrefca_sel:[20:16]=0b10000 +#define DDR_PHY_REG_6_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_tx_byte_dqs_extend:[2:0]=0b000 +#define DDR_PHY_REG_7_F0_DATA 0b00000000000000000100000001000000 + // f0_param_phya_reg_rx_byte0_odt_reg:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte0_sel_odt_reg_mode:[6:6]=0b1 + // f0_param_phya_reg_rx_byte1_odt_reg:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte1_sel_odt_reg_mode:[14:14]=0b1 +#define DDR_PHY_REG_64_F0_DATA 0b00000000000001000001000000000001 + // f0_param_phya_reg_rx_byte0_en_lsmode:[0:0]=0b1 + // f0_param_phya_reg_rx_byte0_hystr:[5:4]=0b00 + // f0_param_phya_reg_rx_byte0_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f0_param_phya_reg_rx_byte0_sel_odt_center_tap:[10:10]=0b0 + // f0_param_phya_reg_byte0_en_rec_vol_mode:[12:12]=0b1 + // f0_param_phya_reg_tx_byte0_force_en_lvstl_ph:[14:14]=0b0 + // f0_param_phya_reg_rx_byte0_force_en_lvstl_odt:[16:16]=0b0 + // f0_param_phya_reg_rx_byte0_en_trig_lvl_rangex2:[18:18]=0b1 + // f0_param_phya_reg_rx_byte0_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_65_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_byte0_drvn_de_dq:[1:0]=0b00 + // f0_param_phya_reg_tx_byte0_drvp_de_dq:[5:4]=0b00 + // f0_param_phya_reg_tx_byte0_drvn_de_dqs:[9:8]=0b00 + // f0_param_phya_reg_tx_byte0_drvp_de_dqs:[13:12]=0b00 + // f0_param_phya_reg_tx_byte0_en_tx_de_dq:[16:16]=0b0 + // f0_param_phya_reg_tx_byte0_en_tx_de_dqs:[20:20]=0b1 +#define DDR_PHY_REG_66_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte0_sel_dly1t_dq:[8:0]=0b000000000 + // f0_param_phya_reg_tx_byte0_sel_dly1t_dqs:[12:12]=0b0 + // f0_param_phya_reg_tx_byte0_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_67_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4divby3:[4:4]=0b0 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_68_F0_DATA 0b00000000000000000000000000000100 + // f0_param_phyd_reg_rx_byte0_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_69_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte0_dq0_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte0_dq1_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte0_dq2_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte0_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_70_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte0_dq4_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte0_dq5_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte0_dq6_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte0_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_71_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte0_dm_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte0_dqsn_offset:[19:16]=0b0000 + // f0_param_phyd_reg_byte0_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_72_F0_DATA 0b00000000000000000000000000000011 + // f0_param_phyd_tx_byte0_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_80_F0_DATA 0b00000000000001000001000000000001 + // f0_param_phya_reg_rx_byte1_en_lsmode:[0:0]=0b1 + // f0_param_phya_reg_rx_byte1_hystr:[5:4]=0b00 + // f0_param_phya_reg_rx_byte1_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f0_param_phya_reg_rx_byte1_sel_odt_center_tap:[10:10]=0b0 + // f0_param_phya_reg_byte1_en_rec_vol_mode:[12:12]=0b1 + // f0_param_phya_reg_tx_byte1_force_en_lvstl_ph:[14:14]=0b0 + // f0_param_phya_reg_rx_byte1_force_en_lvstl_odt:[16:16]=0b0 + // f0_param_phya_reg_rx_byte1_en_trig_lvl_rangex2:[18:18]=0b1 + // f0_param_phya_reg_rx_byte1_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_81_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_byte1_drvn_de_dq:[1:0]=0b00 + // f0_param_phya_reg_tx_byte1_drvp_de_dq:[5:4]=0b00 + // f0_param_phya_reg_tx_byte1_drvn_de_dqs:[9:8]=0b00 + // f0_param_phya_reg_tx_byte1_drvp_de_dqs:[13:12]=0b00 + // f0_param_phya_reg_tx_byte1_en_tx_de_dq:[16:16]=0b0 + // f0_param_phya_reg_tx_byte1_en_tx_de_dqs:[20:20]=0b1 +#define DDR_PHY_REG_82_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte1_sel_dly1t_dq:[8:0]=0b000000000 + // f0_param_phya_reg_tx_byte1_sel_dly1t_dqs:[12:12]=0b0 + // f0_param_phya_reg_tx_byte1_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_83_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4divby3:[4:4]=0b0 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_84_F0_DATA 0b00000000000000000000000000000100 + // f0_param_phyd_reg_rx_byte1_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_85_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte1_dq0_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte1_dq1_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte1_dq2_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte1_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_86_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte1_dq4_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte1_dq5_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte1_dq6_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte1_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_87_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte1_dm_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte1_dqsn_offset:[19:16]=0b0000 + // f0_param_phyd_reg_byte1_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_88_F0_DATA 0b00000000000000000000000000000011 + // f0_param_phyd_tx_byte1_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_320_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_ca0_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_ca0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_331_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_tx_ca22_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_332_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_cke0_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_cke0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_333_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_csb0_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_cs0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_334_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_resetz_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_reset_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_336_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_ca0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_348_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_cke0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_349_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_csb0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_350_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_resetz_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_351_F0_DATA 0b00001000000010000000010000000100 + // f0_param_phya_reg_tx_ca_drvn_ca:[4:0]=0b00100 + // f0_param_phya_reg_tx_ca_drvp_ca:[12:8]=0b00100 + // f0_param_phya_reg_tx_ca_drvn_csb:[20:16]=0b01000 + // f0_param_phya_reg_tx_ca_drvp_csb:[28:24]=0b01000 +#define DDR_PHY_REG_352_F0_DATA 0b00001000000010000000100000001000 + // f0_param_phya_reg_tx_clk_drvn_clkn0:[4:0]=0b01000 + // f0_param_phya_reg_tx_clk_drvp_clkn0:[12:8]=0b01000 + // f0_param_phya_reg_tx_clk_drvn_clkp0:[20:16]=0b01000 + // f0_param_phya_reg_tx_clk_drvp_clkp0:[28:24]=0b01000 +#define DDR_PHY_REG_384_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit0_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_385_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit2_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_386_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit4_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_387_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit6_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_388_F0_DATA 0b00000000000000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_389_F0_DATA 0b00001101000000000000000000000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f0_param_phyd_tx_byte0_dqs_shift:[29:24]=0b001101 +#define DDR_PHY_REG_390_F0_DATA 0b00001010000000000000101100000000 + // f0_param_phyd_tx_byte0_oenz_dqs_shift:[13:8]=0b001011 + // f0_param_phyd_tx_byte0_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_391_F0_DATA 0b00000000000001000000010000000000 + // f0_param_phyd_tx_byte0_oenz_dqs_extend:[11:8]=0b0100 + // f0_param_phyd_tx_byte0_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_392_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_393_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_394_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_395_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_396_F0_DATA 0b00000000000000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_397_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_398_F0_DATA 0b00000000000000000000100000001000 + // f0_param_phya_reg_tx_byte0_drvn_dq:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte0_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_399_F0_DATA 0b00001000000010000000100000001000 + // f0_param_phya_reg_tx_byte0_drvn_dqsn:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte0_drvp_dqsn:[12:8]=0b01000 + // f0_param_phya_reg_tx_byte0_drvn_dqsp:[20:16]=0b01000 + // f0_param_phya_reg_tx_byte0_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_400_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit0_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_401_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit2_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_402_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit4_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_403_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit6_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_404_F0_DATA 0b00000000000000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_405_F0_DATA 0b00001101000000000000000000000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f0_param_phyd_tx_byte1_dqs_shift:[29:24]=0b001101 +#define DDR_PHY_REG_406_F0_DATA 0b00001010000000000000101100000000 + // f0_param_phyd_tx_byte1_oenz_dqs_shift:[13:8]=0b001011 + // f0_param_phyd_tx_byte1_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_407_F0_DATA 0b00000000000001000000010000000000 + // f0_param_phyd_tx_byte1_oenz_dqs_extend:[11:8]=0b0100 + // f0_param_phyd_tx_byte1_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_408_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_409_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_410_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_411_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_412_F0_DATA 0b00000000000000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_413_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_414_F0_DATA 0b00000000000000000000100000001000 + // f0_param_phya_reg_tx_byte1_drvn_dq:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte1_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_415_F0_DATA 0b00001000000010000000100000001000 + // f0_param_phya_reg_tx_byte1_drvn_dqsn:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte1_drvp_dqsn:[12:8]=0b01000 + // f0_param_phya_reg_tx_byte1_drvn_dqsp:[20:16]=0b01000 + // f0_param_phya_reg_tx_byte1_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_448_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte0_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_449_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte0_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_450_F0_DATA 0b00000000010000000100000000000000 + // f0_param_phyd_reg_rx_byte0_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b01000000 + // f0_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b01000000 +#define DDR_PHY_REG_451_F0_DATA 0b00000000000000000000100100000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_mask_ranka_sw:[6:0]=0b0000000 + // f0_param_phyd_rx_byte0_mask_shift:[13:8]=0b001001 +#define DDR_PHY_REG_452_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_rx_byte0_en_shift:[13:8]=0b000000 + // f0_param_phyd_rx_byte0_odt_en_shift:[29:24]=0b000000 +#define DDR_PHY_REG_453_F0_DATA 0b00000000000001110000111000001110 + // f0_param_phyd_rx_byte0_en_extend:[3:0]=0b1110 + // f0_param_phyd_rx_byte0_odt_en_extend:[11:8]=0b1110 + // f0_param_phyd_rx_byte0_rden_to_rdvld:[20:16]=0b00111 +#define DDR_PHY_REG_454_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte0_rx_dq0_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq1_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq2_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_455_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte0_rx_dq4_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq5_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq6_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_456_F0_DATA 0b01000000010000000000000000000000 + // f0_param_phya_reg_rx_byte0_rx_dq8_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_tx_byte0_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f0_param_phya_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_457_F0_DATA 0b00000000000100000000000000010000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dq:[4:0]=0b10000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dq_offset:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dqs:[20:16]=0b10000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dqs_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_460_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte1_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_461_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte1_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_462_F0_DATA 0b00000000010000000100000000000000 + // f0_param_phyd_reg_rx_byte1_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b01000000 + // f0_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b01000000 +#define DDR_PHY_REG_463_F0_DATA 0b00000000000000000000100100000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_mask_ranka_sw:[6:0]=0b0000000 + // f0_param_phyd_rx_byte1_mask_shift:[13:8]=0b001001 +#define DDR_PHY_REG_464_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_rx_byte1_en_shift:[13:8]=0b000000 + // f0_param_phyd_rx_byte1_odt_en_shift:[29:24]=0b000000 +#define DDR_PHY_REG_465_F0_DATA 0b00000000000001110000111000001110 + // f0_param_phyd_rx_byte1_en_extend:[3:0]=0b1110 + // f0_param_phyd_rx_byte1_odt_en_extend:[11:8]=0b1110 + // f0_param_phyd_rx_byte1_rden_to_rdvld:[20:16]=0b00111 +#define DDR_PHY_REG_466_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte1_rx_dq0_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq1_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq2_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_467_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte1_rx_dq4_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq5_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq6_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_468_F0_DATA 0b01000000010000000000000000000000 + // f0_param_phya_reg_rx_byte1_rx_dq8_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_tx_byte1_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f0_param_phya_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_469_F0_DATA 0b00000000000100000000000000010000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dq:[4:0]=0b10000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dq_offset:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dqs:[20:16]=0b10000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dqs_offset:[30:24]=0b0000000 +#ifdef F1_TEST +#define DDR_PHY_REG_0_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_ca_sel_lpddr4_pmos_ph_ca:[3:3]=0b0 + // f1_param_phya_reg_tx_clk_sel_lpddr4_pmos_ph_clk:[4:4]=0b0 + // f1_param_phya_reg_tx_sel_lpddr4_pmos_ph:[5:5]=0b0 +#define DDR_PHY_REG_1_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_ca_drvn_de:[1:0]=0b00 + // f1_param_phya_reg_tx_ca_drvp_de:[5:4]=0b00 + // f1_param_phya_reg_tx_clk0_drvn_de:[9:8]=0b00 + // f1_param_phya_reg_tx_clk0_drvp_de:[13:12]=0b00 + // f1_param_phya_reg_tx_csb_drvn_de:[17:16]=0b00 + // f1_param_phya_reg_tx_csb_drvp_de:[21:20]=0b00 + // f1_param_phya_reg_tx_ca_en_tx_de:[24:24]=0b0 + // f1_param_phya_reg_tx_clk0_en_tx_de:[28:28]=0b0 + // f1_param_phya_reg_tx_csb_en_tx_de:[30:30]=0b0 +#define DDR_PHY_REG_2_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_ca_sel_dly1t_ca:[22:0]=0b00000000000000000000000 +#define DDR_PHY_REG_3_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_clk_sel_dly1t_clk0:[0:0]=0b0 + // f1_param_phya_reg_tx_ca_sel_dly1t_cke0:[8:8]=0b0 + // f1_param_phya_reg_tx_ca_sel_dly1t_csb0:[16:16]=0b0 +#define DDR_PHY_REG_4_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_vref_en_free_offset:[0:0]=0b0 + // f1_param_phya_reg_tx_vref_en_rangex2:[1:1]=0b0 + // f1_param_phya_reg_tx_vref_sel_lpddr4divby2p5:[2:2]=0b0 + // f1_param_phya_reg_tx_vref_sel_lpddr4divby3:[3:3]=0b0 + // f1_param_phya_reg_tx_vref_offset:[14:8]=0b0000000 + // f1_param_phya_reg_tx_vref_sel:[20:16]=0b10000 +#define DDR_PHY_REG_5_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_vrefca_en_free_offset:[0:0]=0b0 + // f1_param_phya_reg_tx_vrefca_en_rangex2:[1:1]=0b0 + // f1_param_phya_reg_tx_vrefca_offset:[14:8]=0b0000000 + // f1_param_phya_reg_tx_vrefca_sel:[20:16]=0b10000 +#define DDR_PHY_REG_6_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_tx_byte_dqs_extend:[2:0]=0b000 +#define DDR_PHY_REG_7_F1_DATA 0b00000000000000000100000001000000 + // f1_param_phya_reg_rx_byte0_odt_reg:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte0_sel_odt_reg_mode:[6:6]=0b1 + // f1_param_phya_reg_rx_byte1_odt_reg:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte1_sel_odt_reg_mode:[14:14]=0b1 +#define DDR_PHY_REG_64_F1_DATA 0b00000000000000000001000000000001 + // f1_param_phya_reg_rx_byte0_en_lsmode:[0:0]=0b1 + // f1_param_phya_reg_rx_byte0_hystr:[5:4]=0b00 + // f1_param_phya_reg_rx_byte0_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f1_param_phya_reg_rx_byte0_sel_odt_center_tap:[10:10]=0b0 + // f1_param_phya_reg_byte0_en_rec_vol_mode:[12:12]=0b1 + // f1_param_phya_reg_tx_byte0_force_en_lvstl_ph:[14:14]=0b0 + // f1_param_phya_reg_rx_byte0_force_en_lvstl_odt:[16:16]=0b0 + // f1_param_phya_reg_rx_byte0_en_trig_lvl_rangex2:[18:18]=0b0 + // f1_param_phya_reg_rx_byte0_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_65_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_byte0_drvn_de_dq:[1:0]=0b00 + // f1_param_phya_reg_tx_byte0_drvp_de_dq:[5:4]=0b00 + // f1_param_phya_reg_tx_byte0_drvn_de_dqs:[9:8]=0b00 + // f1_param_phya_reg_tx_byte0_drvp_de_dqs:[13:12]=0b00 + // f1_param_phya_reg_tx_byte0_en_tx_de_dq:[16:16]=0b0 + // f1_param_phya_reg_tx_byte0_en_tx_de_dqs:[20:20]=0b1 +#define DDR_PHY_REG_66_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte0_sel_dly1t_dq:[8:0]=0b000000000 + // f1_param_phya_reg_tx_byte0_sel_dly1t_dqs:[12:12]=0b0 + // f1_param_phya_reg_tx_byte0_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_67_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4divby3:[4:4]=0b0 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_68_F1_DATA 0b00000000000000000000000000000100 + // f1_param_phyd_reg_rx_byte0_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_69_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte0_dq0_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte0_dq1_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte0_dq2_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte0_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_70_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte0_dq4_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte0_dq5_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte0_dq6_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte0_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_71_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte0_dm_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte0_dqsn_offset:[19:16]=0b0000 + // f1_param_phyd_reg_byte0_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_72_F1_DATA 0b00000000000000000000000000000011 + // f1_param_phyd_tx_byte0_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_80_F1_DATA 0b00000000000000000001000000000001 + // f1_param_phya_reg_rx_byte1_en_lsmode:[0:0]=0b1 + // f1_param_phya_reg_rx_byte1_hystr:[5:4]=0b00 + // f1_param_phya_reg_rx_byte1_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f1_param_phya_reg_rx_byte1_sel_odt_center_tap:[10:10]=0b0 + // f1_param_phya_reg_byte1_en_rec_vol_mode:[12:12]=0b1 + // f1_param_phya_reg_tx_byte1_force_en_lvstl_ph:[14:14]=0b0 + // f1_param_phya_reg_rx_byte1_force_en_lvstl_odt:[16:16]=0b0 + // f1_param_phya_reg_rx_byte1_en_trig_lvl_rangex2:[18:18]=0b0 + // f1_param_phya_reg_rx_byte1_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_81_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_byte1_drvn_de_dq:[1:0]=0b00 + // f1_param_phya_reg_tx_byte1_drvp_de_dq:[5:4]=0b00 + // f1_param_phya_reg_tx_byte1_drvn_de_dqs:[9:8]=0b00 + // f1_param_phya_reg_tx_byte1_drvp_de_dqs:[13:12]=0b00 + // f1_param_phya_reg_tx_byte1_en_tx_de_dq:[16:16]=0b0 + // f1_param_phya_reg_tx_byte1_en_tx_de_dqs:[20:20]=0b1 +#define DDR_PHY_REG_82_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte1_sel_dly1t_dq:[8:0]=0b000000000 + // f1_param_phya_reg_tx_byte1_sel_dly1t_dqs:[12:12]=0b0 + // f1_param_phya_reg_tx_byte1_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_83_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4divby3:[4:4]=0b0 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_84_F1_DATA 0b00000000000000000000000000000100 + // f1_param_phyd_reg_rx_byte1_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_85_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte1_dq0_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte1_dq1_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte1_dq2_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte1_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_86_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte1_dq4_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte1_dq5_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte1_dq6_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte1_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_87_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte1_dm_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte1_dqsn_offset:[19:16]=0b0000 + // f1_param_phyd_reg_byte1_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_88_F1_DATA 0b00000000000000000000000000000011 + // f1_param_phyd_tx_byte1_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_320_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_ca0_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_ca0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_331_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_tx_ca22_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_332_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_cke0_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_cke0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_333_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_csb0_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_cs0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_334_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_resetz_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_reset_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_336_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_ca0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_348_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_cke0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_349_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_csb0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_350_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_resetz_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_351_F1_DATA 0b00001000000010000000010000000100 + // f1_param_phya_reg_tx_ca_drvn_ca:[4:0]=0b00100 + // f1_param_phya_reg_tx_ca_drvp_ca:[12:8]=0b00100 + // f1_param_phya_reg_tx_ca_drvn_csb:[20:16]=0b01000 + // f1_param_phya_reg_tx_ca_drvp_csb:[28:24]=0b01000 +#define DDR_PHY_REG_352_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_clk_drvn_clkn0:[4:0]=0b01000 + // f1_param_phya_reg_tx_clk_drvp_clkn0:[12:8]=0b01000 + // f1_param_phya_reg_tx_clk_drvn_clkp0:[20:16]=0b01000 + // f1_param_phya_reg_tx_clk_drvp_clkp0:[28:24]=0b01000 +#define DDR_PHY_REG_384_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit0_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_385_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit2_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_386_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit4_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_387_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit6_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_388_F1_DATA 0b00000000000000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_389_F1_DATA 0b00001101000000000000000000000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f1_param_phyd_tx_byte0_dqs_shift:[29:24]=0b001101 +#define DDR_PHY_REG_390_F1_DATA 0b00001010000000000000101100000000 + // f1_param_phyd_tx_byte0_oenz_dqs_shift:[13:8]=0b001011 + // f1_param_phyd_tx_byte0_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_391_F1_DATA 0b00000000000001000000010000000000 + // f1_param_phyd_tx_byte0_oenz_dqs_extend:[11:8]=0b0100 + // f1_param_phyd_tx_byte0_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_392_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_393_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_394_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_395_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_396_F1_DATA 0b00000000000000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_397_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_398_F1_DATA 0b00000000000000000000100000001000 + // f1_param_phya_reg_tx_byte0_drvn_dq:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte0_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_399_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_byte0_drvn_dqsn:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte0_drvp_dqsn:[12:8]=0b01000 + // f1_param_phya_reg_tx_byte0_drvn_dqsp:[20:16]=0b01000 + // f1_param_phya_reg_tx_byte0_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_400_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit0_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_401_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit2_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_402_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit4_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_403_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit6_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_404_F1_DATA 0b00000000000000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_405_F1_DATA 0b00001101000000000000000000000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f1_param_phyd_tx_byte1_dqs_shift:[29:24]=0b001101 +#define DDR_PHY_REG_406_F1_DATA 0b00001010000000000000101100000000 + // f1_param_phyd_tx_byte1_oenz_dqs_shift:[13:8]=0b001011 + // f1_param_phyd_tx_byte1_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_407_F1_DATA 0b00000000000001000000010000000000 + // f1_param_phyd_tx_byte1_oenz_dqs_extend:[11:8]=0b0100 + // f1_param_phyd_tx_byte1_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_408_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_409_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_410_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_411_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_412_F1_DATA 0b00000000000000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_413_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_414_F1_DATA 0b00000000000000000000100000001000 + // f1_param_phya_reg_tx_byte1_drvn_dq:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte1_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_415_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_byte1_drvn_dqsn:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte1_drvp_dqsn:[12:8]=0b01000 + // f1_param_phya_reg_tx_byte1_drvn_dqsp:[20:16]=0b01000 + // f1_param_phya_reg_tx_byte1_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_448_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte0_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_449_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte0_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_450_F1_DATA 0b00000000010000000100000000000000 + // f1_param_phyd_reg_rx_byte0_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b01000000 + // f1_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b01000000 +#define DDR_PHY_REG_451_F1_DATA 0b00000000000000000000100100000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_mask_ranka_sw:[6:0]=0b0000000 + // f1_param_phyd_rx_byte0_mask_shift:[13:8]=0b001001 +#define DDR_PHY_REG_452_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_rx_byte0_en_shift:[13:8]=0b000000 + // f1_param_phyd_rx_byte0_odt_en_shift:[29:24]=0b000000 +#define DDR_PHY_REG_453_F1_DATA 0b00000000000001110000111000001110 + // f1_param_phyd_rx_byte0_en_extend:[3:0]=0b1110 + // f1_param_phyd_rx_byte0_odt_en_extend:[11:8]=0b1110 + // f1_param_phyd_rx_byte0_rden_to_rdvld:[20:16]=0b00111 +#define DDR_PHY_REG_454_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte0_rx_dq0_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq1_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq2_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_455_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte0_rx_dq4_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq5_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq6_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_456_F1_DATA 0b01000000010000000000000000000000 + // f1_param_phya_reg_rx_byte0_rx_dq8_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_tx_byte0_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f1_param_phya_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_457_F1_DATA 0b00000000000100000000000000010000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dq:[4:0]=0b10000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dq_offset:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dqs:[20:16]=0b10000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dqs_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_460_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte1_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_461_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte1_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_462_F1_DATA 0b00000000010000000100000000000000 + // f1_param_phyd_reg_rx_byte1_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b01000000 + // f1_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b01000000 +#define DDR_PHY_REG_463_F1_DATA 0b00000000000000000000100100000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_mask_ranka_sw:[6:0]=0b0000000 + // f1_param_phyd_rx_byte1_mask_shift:[13:8]=0b001001 +#define DDR_PHY_REG_464_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_rx_byte1_en_shift:[13:8]=0b000000 + // f1_param_phyd_rx_byte1_odt_en_shift:[29:24]=0b000000 +#define DDR_PHY_REG_465_F1_DATA 0b00000000000001110000111000001110 + // f1_param_phyd_rx_byte1_en_extend:[3:0]=0b1110 + // f1_param_phyd_rx_byte1_odt_en_extend:[11:8]=0b1110 + // f1_param_phyd_rx_byte1_rden_to_rdvld:[20:16]=0b00111 +#define DDR_PHY_REG_466_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte1_rx_dq0_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq1_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq2_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_467_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte1_rx_dq4_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq5_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq6_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_468_F1_DATA 0b01000000010000000000000000000000 + // f1_param_phya_reg_rx_byte1_rx_dq8_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_tx_byte1_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f1_param_phya_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_469_F1_DATA 0b00000000000100000000000000010000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dq:[4:0]=0b10000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dq_offset:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dqs:[20:16]=0b10000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dqs_offset:[30:24]=0b0000000 +#endif //F1_TEST +void ddrc_init(void); +void phy_init(void); +void ctrl_init_high_patch(void); +void ctrl_init_low_patch(void); +//void ctrl_init_detect_dram_size(uint8_t * dram_cap_in_mbyte); +void ctrl_init_update_by_dram_size(uint8_t dram_cap_in_mbyte); + +#endif /* __DDR_PI_PHY_H__ */ diff --git a/fsbl/plat/cv180x/include/ddr/ddr_config/ddr3_1866_x16/ddr_init.h b/fsbl/plat/cv180x/include/ddr/ddr_config/ddr3_1866_x16/ddr_init.h new file mode 100644 index 000000000..58bacab1d --- /dev/null +++ b/fsbl/plat/cv180x/include/ddr/ddr_config/ddr3_1866_x16/ddr_init.h @@ -0,0 +1,1157 @@ +#ifndef __DDR_PI_PHY_H__ +#define __DDR_PI_PHY_H__ + +extern uint32_t ddr_data_rate; +// $Module: reg_cv_phy_param_ddr3_1866 $ +// $RegisterBank Version: V 1.0.00 $ +// $Author: KC TSAI $ +// $Date: Fri, 11 Mar 2022 03:31:16 PM $ +// + +#define DDR_PHY_REG_0_DATA 0b00000011000000100000000100000000 + // param_phyd_swap_ca0:[4:0]=0b00000 + // param_phyd_swap_ca1:[12:8]=0b00001 + // param_phyd_swap_ca2:[20:16]=0b00010 + // param_phyd_swap_ca3:[28:24]=0b00011 +#define DDR_PHY_REG_1_DATA 0b00000111000001100000010100000100 + // param_phyd_swap_ca4:[4:0]=0b00100 + // param_phyd_swap_ca5:[12:8]=0b00101 + // param_phyd_swap_ca6:[20:16]=0b00110 + // param_phyd_swap_ca7:[28:24]=0b00111 +#define DDR_PHY_REG_2_DATA 0b00001011000010100000100100001000 + // param_phyd_swap_ca8:[4:0]=0b01000 + // param_phyd_swap_ca9:[12:8]=0b01001 + // param_phyd_swap_ca10:[20:16]=0b01010 + // param_phyd_swap_ca11:[28:24]=0b01011 +#define DDR_PHY_REG_3_DATA 0b00001111000011100000110100001100 + // param_phyd_swap_ca12:[4:0]=0b01100 + // param_phyd_swap_ca13:[12:8]=0b01101 + // param_phyd_swap_ca14:[20:16]=0b01110 + // param_phyd_swap_ca15:[28:24]=0b01111 +#define DDR_PHY_REG_4_DATA 0b00010011000100100001000100010000 + // param_phyd_swap_ca16:[4:0]=0b10000 + // param_phyd_swap_ca17:[12:8]=0b10001 + // param_phyd_swap_ca18:[20:16]=0b10010 + // param_phyd_swap_ca19:[28:24]=0b10011 +#define DDR_PHY_REG_5_DATA 0b00000000000101100001010100010100 + // param_phyd_swap_ca20:[4:0]=0b10100 + // param_phyd_swap_ca21:[12:8]=0b10101 + // param_phyd_swap_ca22:[20:16]=0b10110 +#define DDR_PHY_REG_6_DATA 0b00000000000000000000000000000000 + // param_phyd_swap_cke0:[0:0]=0b0 + // param_phyd_swap_cs0:[4:4]=0b0 +#define DDR_PHY_REG_7_DATA 0b00000000000000000000000100000000 + // param_phyd_data_byte_swap_slice0:[1:0]=0b00 + // param_phyd_data_byte_swap_slice1:[9:8]=0b01 +#define DDR_PHY_REG_8_DATA 0b01110110010101000011001000010000 + // param_phyd_swap_byte0_dq0_mux:[3:0]=0b0000 + // param_phyd_swap_byte0_dq1_mux:[7:4]=0b0001 + // param_phyd_swap_byte0_dq2_mux:[11:8]=0b0010 + // param_phyd_swap_byte0_dq3_mux:[15:12]=0b0011 + // param_phyd_swap_byte0_dq4_mux:[19:16]=0b0100 + // param_phyd_swap_byte0_dq5_mux:[23:20]=0b0101 + // param_phyd_swap_byte0_dq6_mux:[27:24]=0b0110 + // param_phyd_swap_byte0_dq7_mux:[31:28]=0b0111 +#define DDR_PHY_REG_9_DATA 0b00000000000000000000000000001000 + // param_phyd_swap_byte0_dm_mux:[3:0]=0b1000 +#define DDR_PHY_REG_10_DATA 0b01110110010101000011001000010000 + // param_phyd_swap_byte1_dq0_mux:[3:0]=0b0000 + // param_phyd_swap_byte1_dq1_mux:[7:4]=0b0001 + // param_phyd_swap_byte1_dq2_mux:[11:8]=0b0010 + // param_phyd_swap_byte1_dq3_mux:[15:12]=0b0011 + // param_phyd_swap_byte1_dq4_mux:[19:16]=0b0100 + // param_phyd_swap_byte1_dq5_mux:[23:20]=0b0101 + // param_phyd_swap_byte1_dq6_mux:[27:24]=0b0110 + // param_phyd_swap_byte1_dq7_mux:[31:28]=0b0111 +#define DDR_PHY_REG_11_DATA 0b00000000000000000000000000001000 + // param_phyd_swap_byte1_dm_mux:[3:0]=0b1000 +#define DDR_PHY_REG_16_DATA 0b00000000000000000000000000000000 + // param_phyd_dll_rx_sw_mode:[0:0]=0b0 + // param_phyd_dll_rx_start_cal:[1:1]=0b0 + // param_phyd_dll_rx_cntr_mode:[2:2]=0b0 + // param_phyd_dll_rx_hwrst_time:[3:3]=0b0 + // param_phyd_dll_tx_sw_mode:[16:16]=0b0 + // param_phyd_dll_tx_start_cal:[17:17]=0b0 + // param_phyd_dll_tx_cntr_mode:[18:18]=0b0 + // param_phyd_dll_tx_hwrst_time:[19:19]=0b0 +#define DDR_PHY_REG_17_DATA 0b00000000011111110000000000001101 + // param_phyd_dll_slave_delay_en:[0:0]=0b1 + // param_phyd_dll_rw_en:[1:1]=0b0 + // param_phyd_dll_avg_mode:[2:2]=0b1 + // param_phyd_dll_upd_wait:[6:3]=0b0001 + // param_phyd_dll_sw_clr:[7:7]=0b0 + // param_phyd_dll_sw_code_mode:[8:8]=0b0 + // param_phyd_dll_sw_code:[23:16]=0b01111111 +#define DDR_PHY_REG_18_DATA 0b00000000000000000000000000000000 + // param_phya_reg_tx_clk_tx_dline_code_clkn0:[6:0]=0b0000000 + // param_phya_reg_tx_clk_tx_dline_code_clkp0:[14:8]=0b0000000 +#define DDR_PHY_REG_19_DATA 0b00000000000000000000000000001000 + // param_phya_reg_sel_ddr4_mode:[0:0]=0b0 + // param_phya_reg_sel_lpddr3_mode:[1:1]=0b0 + // param_phya_reg_sel_lpddr4_mode:[2:2]=0b0 + // param_phya_reg_sel_ddr3_mode:[3:3]=0b1 + // param_phya_reg_sel_ddr2_mode:[4:4]=0b0 +#define DDR_PHY_REG_20_DATA 0b00000000000000000000000000000110 + // param_phyd_dram_class:[3:0]=0b0110 +#define DDR_PHY_REG_21_DATA 0b00001100000000000000101100000000 + // param_phyd_wrlvl_start_delay_code:[6:0]=0b0000000 + // param_phyd_wrlvl_start_shift_code:[13:8]=0b001011 + // param_phyd_wrlvl_end_delay_code:[22:16]=0b0000000 + // param_phyd_wrlvl_end_shift_code:[29:24]=0b001100 +#define DDR_PHY_REG_22_DATA 0b00001001000101100000000001001111 + // param_phyd_wrlvl_capture_cnt:[3:0]=0b1111 + // param_phyd_wrlvl_dly_step:[7:4]=0b0100 + // param_phyd_wrlvl_disable:[11:8]=0b0000 + // param_phyd_wrlvl_resp_wait_cnt:[21:16]=0b010110 + // param_phyd_oenz_lead_cnt:[26:23]=0b0010 + // param_phyd_wrlvl_mode:[27:27]=0b1 +#define DDR_PHY_REG_23_DATA 0b00000000000000000000000000000000 + // param_phyd_wrlvl_sw:[0:0]=0b0 + // param_phyd_wrlvl_sw_upd_req:[1:1]=0b0 + // param_phyd_wrlvl_sw_resp:[2:2]=0b0 + // param_phyd_wrlvl_data_mask:[23:16]=0b00000000 +#define DDR_PHY_REG_24_DATA 0b00000100000000000000001101110000 + // param_phyd_pigtlvl_back_step:[7:0]=0b01110000 + // param_phyd_pigtlvl_capture_cnt:[11:8]=0b0011 + // param_phyd_pigtlvl_disable:[19:16]=0b0000 + // param_phyd_pigtlvl_dly_step:[27:24]=0b0100 +#define DDR_PHY_REG_25_DATA 0b00010000000000000000110000000000 + // param_phyd_pigtlvl_start_delay_code:[6:0]=0b0000000 + // param_phyd_pigtlvl_start_shift_code:[13:8]=0b001100 + // param_phyd_pigtlvl_end_delay_code:[22:16]=0b0000000 + // param_phyd_pigtlvl_end_shift_code:[29:24]=0b010000 +#define DDR_PHY_REG_26_DATA 0b00000000100000000000000000000000 + // param_phyd_pigtlvl_resp_wait_cnt:[5:0]=0b000000 + // param_phyd_pigtlvl_sw:[8:8]=0b0 + // param_phyd_pigtlvl_sw_resp:[13:12]=0b00 + // param_phyd_pigtlvl_sw_upd_req:[16:16]=0b0 + // param_phyd_rx_en_lead_cnt:[23:20]=0b1000 +#define DDR_PHY_REG_28_DATA 0b00000000000000000000000100001000 + // param_phyd_rgtrack_threshold:[4:0]=0b01000 + // param_phyd_rgtrack_dly_step:[11:8]=0b0001 + // param_phyd_rgtrack_disable:[19:16]=0b0000 +#define DDR_PHY_REG_29_DATA 0b00000000000001110010000000000000 + // param_phyd_zqcal_wait_count:[3:0]=0b0000 + // param_phyd_zqcal_cycle_count:[15:8]=0b00100000 + // param_phyd_zqcal_hw_mode:[18:16]=0b111 +#define DDR_PHY_REG_32_DATA 0b00011111000000001110000000000000 + // param_phyd_pirdlvl_dlie_code_start:[7:0]=0b00000000 + // param_phyd_pirdlvl_dlie_code_end:[15:8]=0b11100000 + // param_phyd_pirdlvl_deskew_start:[22:16]=0b0000000 + // param_phyd_pirdlvl_deskew_end:[30:24]=0b0011111 +#define DDR_PHY_REG_33_DATA 0b00000001000010110000110000001010 + // param_phyd_pirdlvl_trig_lvl_start:[4:0]=0b01010 + // param_phyd_pirdlvl_trig_lvl_end:[12:8]=0b01100 + // param_phyd_pirdlvl_rdvld_start:[20:16]=0b01011 + // param_phyd_pirdlvl_rdvld_end:[28:24]=0b00001 +#define DDR_PHY_REG_34_DATA 0b00001010000000010000000100010100 + // param_phyd_pirdlvl_dly_step:[3:0]=0b0100 + // param_phyd_pirdlvl_ds_dly_step:[7:4]=0b0001 + // param_phyd_pirdlvl_vref_step:[11:8]=0b0001 + // param_phyd_pirdlvl_disable:[15:12]=0b0000 + // param_phyd_pirdlvl_resp_wait_cnt:[21:16]=0b000001 + // param_phyd_pirdlvl_vref_wait_cnt:[31:24]=0b00001010 +#define DDR_PHY_REG_35_DATA 0b10101010101010100000000010001111 + // param_phyd_pirdlvl_rx_prebit_deskew_en:[0:0]=0b1 + // param_phyd_pirdlvl_rx_init_deskew_en:[1:1]=0b1 + // param_phyd_pirdlvl_vref_training_en:[2:2]=0b1 + // param_phyd_pirdlvl_rdvld_training_en:[3:3]=0b1 + // param_phyd_pirdlvl_capture_cnt:[7:4]=0b1000 + // param_phyd_pirdlvl_MR1520_BYTE:[15:8]=0b00000000 + // param_phyd_pirdlvl_MR3240:[31:16]=0b1010101010101010 +#define DDR_PHY_REG_36_DATA 0b00000000000000000011100000000000 + // param_phyd_pirdlvl_data_mask:[8:0]=0b000000000 + // param_phyd_pirdlvl_sw:[9:9]=0b0 + // param_phyd_pirdlvl_sw_upd_req:[10:10]=0b0 + // param_phyd_pirdlvl_sw_resp:[12:11]=0b11 + // param_phyd_pirdlvl_trig_lvl_dqs_follow_dq:[13:13]=0b1 +#define DDR_PHY_REG_37_DATA 0b00000000000000000000100000000001 + // param_phyd_pirdlvl_rdvld_offset:[3:0]=0b0001 + // param_phyd_pirdlvl_found_cnt_limite:[15:8]=0b00001000 +#define DDR_PHY_REG_40_DATA 0b00000111010000000000010101000000 + // param_phyd_piwdqlvl_start_delay_code:[6:0]=0b1000000 + // param_phyd_piwdqlvl_start_shift_code:[13:8]=0b000101 + // param_phyd_piwdqlvl_end_delay_code:[22:16]=0b1000000 + // param_phyd_piwdqlvl_end_shift_code:[29:24]=0b000111 +#define DDR_PHY_REG_41_DATA 0b00000001010000100000010100000100 + // param_phyd_piwdqlvl_tx_vref_start:[4:0]=0b00100 + // param_phyd_piwdqlvl_tx_vref_end:[12:8]=0b00101 + // param_phyd_piwdqlvl_capture_cnt:[19:16]=0b0010 + // param_phyd_piwdqlvl_dly_step:[23:20]=0b0100 + // param_phyd_piwdqlvl_vref_step:[27:24]=0b0001 + // param_phyd_piwdqlvl_disable:[31:28]=0b0000 +#define DDR_PHY_REG_42_DATA 0b00000000010101010000000000001010 + // param_phyd_piwdqlvl_vref_wait_cnt:[7:0]=0b00001010 + // param_phyd_piwdqlvl_tx_vref_training_en:[8:8]=0b0 + // param_phyd_piwdqlvl_byte_invert_0:[23:16]=0b01010101 +#define DDR_PHY_REG_43_DATA 0b00000000010101010011110001011010 + // param_phyd_piwdqlvl_dq_pattern_0:[15:0]=0b0011110001011010 + // param_phyd_piwdqlvl_byte_invert_1:[23:16]=0b01010101 +#define DDR_PHY_REG_44_DATA 0b00000000101010101010010111000011 + // param_phyd_piwdqlvl_dq_pattern_1:[15:0]=0b1010010111000011 + // param_phyd_piwdqlvl_byte_invert_2:[23:16]=0b10101010 +#define DDR_PHY_REG_45_DATA 0b00000000101010101111000011110000 + // param_phyd_piwdqlvl_dq_pattern_2:[15:0]=0b1111000011110000 + // param_phyd_piwdqlvl_byte_invert_3:[23:16]=0b10101010 +#define DDR_PHY_REG_46_DATA 0b00011110000000000000111100001111 + // param_phyd_piwdqlvl_dq_pattern_3:[15:0]=0b0000111100001111 + // param_phyd_piwdqlvl_data_mask:[24:16]=0b000000000 + // param_phyd_piwdqlvl_pattern_sel:[28:25]=0b1111 +#define DDR_PHY_REG_47_DATA 0b00000000000010000011111000010011 + // param_phyd_piwdqlvl_tdfi_phy_wrdata:[2:0]=0b011 + // param_phyd_piwdqlvl_oenz_lead_cnt:[6:3]=0b0010 + // param_phyd_piwdqlvl_sw:[7:7]=0b0 + // param_phyd_piwdqlvl_sw_upd_req:[8:8]=0b0 + // param_phyd_piwdqlvl_sw_resp:[10:9]=0b11 + // param_phyd_piwdqlvl_sw_result:[11:11]=0b1 + // param_phyd_piwdqlvl_dq_mode:[12:12]=0b1 + // param_phyd_piwdqlvl_dm_mode:[13:13]=0b1 + // param_phyd_piwdqlvl_found_cnt_limite:[23:16]=0b00001000 +#define DDR_PHY_REG_60_DATA 0b00000000000000000000000000000000 + // param_phyd_patch_revision:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_61_DATA 0b00000000000000110000000000110011 + // param_phyd_ca_shift_gating_en:[0:0]=0b1 + // param_phyd_cs_shift_gating_en:[1:1]=0b1 + // param_phyd_cke_shift_gating_en:[2:2]=0b0 + // param_phyd_resetz_shift_gating_en:[3:3]=0b0 + // param_phyd_tx_byte0_shift_gating_en:[4:4]=0b1 + // param_phyd_tx_byte1_shift_gating_en:[5:5]=0b1 + // param_phyd_rx_byte0_shift_gating_en:[16:16]=0b1 + // param_phyd_rx_byte1_shift_gating_en:[17:17]=0b1 +#define DDR_PHY_REG_62_DATA 0b00000000001000010000000000101100 + // param_phyd_lb_lfsr_seed0:[8:0]=0b000101100 + // param_phyd_lb_lfsr_seed1:[24:16]=0b000100001 +#define DDR_PHY_REG_63_DATA 0b00000000001101110000000000010110 + // param_phyd_lb_lfsr_seed2:[8:0]=0b000010110 + // param_phyd_lb_lfsr_seed3:[24:16]=0b000110111 +#define DDR_PHY_REG_64_DATA 0b00000100000000000000000000000000 + // param_phyd_lb_dq_en:[0:0]=0b0 + // param_phyd_lb_dq_go:[1:1]=0b0 + // param_phyd_lb_sw_en:[2:2]=0b0 + // param_phyd_lb_sw_rx_en:[3:3]=0b0 + // param_phyd_lb_sw_rx_mask:[4:4]=0b0 + // param_phyd_lb_sw_odt_en:[5:5]=0b0 + // param_phyd_lb_sw_ca_clkpattern:[6:6]=0b0 + // param_phyd_lb_sync_len:[31:16]=0b0000010000000000 +#define DDR_PHY_REG_65_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_dout0:[8:0]=0b000000000 + // param_phyd_lb_sw_dout1:[24:16]=0b000000000 +#define DDR_PHY_REG_67_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_oenz_dout0:[0:0]=0b0 + // param_phyd_lb_sw_oenz_dout1:[1:1]=0b0 + // param_phyd_lb_sw_dqsn0:[4:4]=0b0 + // param_phyd_lb_sw_dqsn1:[5:5]=0b0 + // param_phyd_lb_sw_dqsp0:[8:8]=0b0 + // param_phyd_lb_sw_dqsp1:[9:9]=0b0 + // param_phyd_lb_sw_oenz_dqs_dout0:[12:12]=0b0 + // param_phyd_lb_sw_oenz_dqs_dout1:[13:13]=0b0 +#define DDR_PHY_REG_68_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_ca_dout:[22:0]=0b00000000000000000000000 +#define DDR_PHY_REG_69_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_clkn0_dout:[0:0]=0b0 + // param_phyd_lb_sw_clkp0_dout:[4:4]=0b0 + // param_phyd_lb_sw_cke0_dout:[8:8]=0b0 + // param_phyd_lb_sw_resetz_dout:[12:12]=0b0 + // param_phyd_lb_sw_csb0_dout:[16:16]=0b0 +#define DDR_PHY_REG_70_DATA 0b00000000000000000000000000000000 + // param_phyd_clkctrl_init_complete:[0:0]=0b0 +#define DDR_PHY_REG_71_DATA 0b00000000000000000110101000010000 + // param_phyd_reg_resetz_dqs_rd_en:[4:4]=0b1 + // param_phyd_rx_upd_tx_sel:[9:8]=0b10 + // param_phyd_tx_upd_rx_sel:[11:10]=0b10 + // param_phyd_rx_en_ext_win:[15:12]=0b0110 + // param_phyd_fifo_rst_sel:[18:16]=0b000 + // param_phyd_fifo_sw_rst:[20:20]=0b0 +#define DDR_PHY_REG_72_DATA 0b00000000000000000000000000000000 + // param_phyd_phy_int_ack:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_73_DATA 0b11111111111111111111111011110111 + // param_phyd_phy_int_mask:[31:0]=0b11111111111111111111111011110111 +#define DDR_PHY_REG_74_DATA 0b00000000000000000000000000011111 + // param_phyd_calvl_rst_n:[0:0]=0b1 + // param_phyd_pigtlvl_rst_n:[1:1]=0b1 + // param_phyd_pirdlvl_rst_n:[2:2]=0b1 + // param_phyd_piwdqlvl_rst_n:[3:3]=0b1 + // param_phyd_wrlvl_rst_n:[4:4]=0b1 +#define DDR_PHY_REG_75_DATA 0b00000000000000000000000000000001 + // param_phyd_clk0_pol:[0:0]=0b1 +#define DDR_PHY_REG_76_DATA 0b00000000000000000000000100000001 + // param_phyd_tx_ca_oenz:[0:0]=0b1 + // param_phyd_tx_ca_clk0_oenz:[8:8]=0b1 +#define DDR_PHY_REG_77_DATA 0b00000000000000000000000100000000 + // param_phya_reg_en_test:[0:0]=0b0 + // param_phya_reg_tx_ca_test_en:[1:1]=0b0 + // param_phya_reg_tx_ca_en_ca_loop_back:[2:2]=0b0 + // param_phya_reg_tx_sel_4bit_mode_tx:[8:8]=0b1 + // param_phya_reg_tx_gpio_in:[16:16]=0b0 +#define DDR_PHY_REG_78_DATA 0b00000000000000000000000000010100 + // param_phya_reg_rx_en_ca_train_mode:[0:0]=0b0 + // param_phya_reg_rx_en_pream_train_mode:[1:1]=0b0 + // param_phya_reg_rx_sel_dqs_wo_pream_mode:[2:2]=0b1 + // param_phya_reg_rx_en_rec_offset:[3:3]=0b0 + // param_phya_reg_rx_sel_4bit_mode_rx:[4:4]=0b1 +#define DDR_PHY_REG_80_DATA 0b00000000000000000000000000000000 + // param_phya_reg_rx_ddrdll_enautok:[0:0]=0b0 + // param_phya_reg_rx_ddrdll_rstb:[1:1]=0b0 + // param_phya_reg_rx_ddrdll_selckout:[5:4]=0b00 + // param_phya_reg_rx_ddrdll_test:[7:6]=0b00 + // param_phya_reg_rx_ddrdll_sel:[15:8]=0b00000000 + // param_phya_reg_tx_ddrdll_enautok:[16:16]=0b0 + // param_phya_reg_tx_ddrdll_rstb:[17:17]=0b0 + // param_phya_reg_tx_ddrdll_selckout:[21:20]=0b00 + // param_phya_reg_tx_ddrdll_test:[23:22]=0b00 + // param_phya_reg_tx_ddrdll_sel:[31:24]=0b00000000 +#define DDR_PHY_REG_81_DATA 0b00000000000000000000000000000000 + // param_phya_reg_tx_zq_cmp_en:[0:0]=0b0 + // param_phya_reg_tx_zq_cmp_offset_cal_en:[1:1]=0b0 + // param_phya_reg_tx_zq_ph_en:[2:2]=0b0 + // param_phya_reg_tx_zq_pl_en:[3:3]=0b0 + // param_phya_reg_tx_zq_step2_en:[4:4]=0b0 + // param_phya_reg_tx_zq_cmp_offset:[12:8]=0b00000 + // param_phya_reg_tx_zq_sel_vref:[20:16]=0b00000 +#define DDR_PHY_REG_82_DATA 0b00000000000000000000100000001000 + // param_phya_reg_tx_zq_golden_drvn:[4:0]=0b01000 + // param_phya_reg_tx_zq_golden_drvp:[12:8]=0b01000 + // param_phya_reg_tx_zq_drvn:[20:16]=0b00000 + // param_phya_reg_tx_zq_drvp:[28:24]=0b00000 +#define DDR_PHY_REG_83_DATA 0b00000000000000000000000000000000 + // param_phya_reg_tx_zq_en_test_aux:[0:0]=0b0 + // param_phya_reg_tx_zq_en_test_mux:[1:1]=0b0 + // param_phya_reg_sel_zq_high_swing:[2:2]=0b0 + // param_phya_reg_zq_sel_test_out0:[7:4]=0b0000 + // param_phya_reg_zq_sel_test_out1:[11:8]=0b0000 + // param_phya_reg_tx_zq_sel_test_ana_in:[15:12]=0b0000 + // param_phya_reg_tx_zq_sel_gpio_in:[17:16]=0b00 +#define DDR_PHY_REG_84_DATA 0b00000000000000000000000000000101 + // param_phya_reg_tune_damp_r:[3:0]=0b0101 +#define DDR_PHY_REG_85_DATA 0b00000000000000000000000100000001 + // param_phyd_sel_cke_oenz:[0:0]=0b1 + // param_phyd_tx_dqsn_default_value:[8:8]=0b1 + // param_phyd_tx_dqsp_default_value:[12:12]=0b0 + // param_phyd_ddr4_2t_preamble:[16:16]=0b0 +#define DDR_PHY_REG_86_DATA 0b00000000000000000000000000000000 + // param_phya_reg_zqcal_done:[0:0]=0b0 +#define DDR_PHY_REG_87_DATA 0b00000000000000000000000000000000 + // param_phyd_dbg_sel:[7:0]=0b00000000 + // param_phyd_dbg_sel_en:[16:16]=0b0 +#define DDR_PHY_REG_89_DATA 0b00000000000000000000000000000000 + // param_phyd_reg_dfs_sel:[0:0]=0b0 +#define DDR_PHY_REG_90_DATA 0b00000000001100110011001100110001 + // param_phyd_ca_sw_dline_en:[0:0]=0b1 + // param_phyd_byte0_wr_sw_dline_en:[4:4]=0b1 + // param_phyd_byte1_wr_sw_dline_en:[5:5]=0b1 + // param_phyd_byte0_wdqs_sw_dline_en:[8:8]=0b1 + // param_phyd_byte1_wdqs_sw_dline_en:[9:9]=0b1 + // param_phyd_byte0_rd_sw_dline_en:[12:12]=0b1 + // param_phyd_byte1_rd_sw_dline_en:[13:13]=0b1 + // param_phyd_byte0_rdg_sw_dline_en:[16:16]=0b1 + // param_phyd_byte1_rdg_sw_dline_en:[17:17]=0b1 + // param_phyd_byte0_rdqs_sw_dline_en:[20:20]=0b1 + // param_phyd_byte1_rdqs_sw_dline_en:[21:21]=0b1 +#define DDR_PHY_REG_91_DATA 0b00000000000000000000000000000000 + // param_phyd_ca_raw_dline_upd:[0:0]=0b0 + // param_phyd_byte0_wr_raw_dline_upd:[4:4]=0b0 + // param_phyd_byte1_wr_raw_dline_upd:[5:5]=0b0 + // param_phyd_byte0_wdqs_raw_dline_upd:[8:8]=0b0 + // param_phyd_byte1_wdqs_raw_dline_upd:[9:9]=0b0 + // param_phyd_byte0_rd_raw_dline_upd:[12:12]=0b0 + // param_phyd_byte1_rd_raw_dline_upd:[13:13]=0b0 + // param_phyd_byte0_rdg_raw_dline_upd:[16:16]=0b0 + // param_phyd_byte1_rdg_raw_dline_upd:[17:17]=0b0 + // param_phyd_byte0_rdqs_raw_dline_upd:[20:20]=0b0 + // param_phyd_byte1_rdqs_raw_dline_upd:[21:21]=0b0 +#define DDR_PHY_REG_92_DATA 0b00000000000000000000000000000000 + // param_phyd_sw_dline_upd_req:[0:0]=0b0 +#define DDR_PHY_REG_93_DATA 0b00000000000000000000000100000000 + // param_phyd_sw_dfi_phyupd_req:[0:0]=0b0 + // param_phyd_sw_dfi_phyupd_req_clr:[4:4]=0b0 + // param_phyd_sw_phyupd_dline:[8:8]=0b1 +#define DDR_PHY_REG_96_DATA 0b00000000000000100000000000010000 + // param_phyd_dfi_wrlvl_req:[0:0]=0b0 + // param_phyd_dfi_wrlvl_odt_en:[4:4]=0b1 + // param_phyd_dfi_wrlvl_strobe_cnt:[19:16]=0b0010 +#define DDR_PHY_REG_97_DATA 0b00000000000000000000000000000000 + // param_phyd_dfi_rdglvl_req:[0:0]=0b0 + // param_phyd_dfi_rdglvl_ddr3_mpr:[4:4]=0b0 +#define DDR_PHY_REG_98_DATA 0b00000000000000000000000000000000 + // param_phyd_dfi_rdlvl_req:[0:0]=0b0 + // param_phyd_dfi_rdlvl_ddr3_mpr:[4:4]=0b0 +#define DDR_PHY_REG_99_DATA 0b00000000000010010000010000000000 + // param_phyd_dfi_wdqlvl_req:[0:0]=0b0 + // param_phyd_dfi_wdqlvl_bist_data_en:[4:4]=0b0 + // param_phyd_dfi_wdqlvl_vref_train_en:[10:10]=0b1 + // param_phyd_dfi_wdqlvl_vref_wait_cnt:[23:16]=0b00001001 +#define DDR_PHY_REG_100_DATA 0b00000000000000100001001000001110 + // param_phyd_dfi_wdqlvl_vref_start:[6:0]=0b0001110 + // param_phyd_dfi_wdqlvl_vref_end:[14:8]=0b0010010 + // param_phyd_dfi_wdqlvl_vref_step:[19:16]=0b0010 +#define DDR_PHY_REG_128_DATA 0b00000000000000000000000000000000 + // param_phya_reg_byte0_test_en:[0:0]=0b0 + // param_phya_reg_tx_byte0_ddr_test:[15:8]=0b00000000 + // param_phya_reg_rx_byte0_sel_test_in0:[19:16]=0b0000 + // param_phya_reg_rx_byte0_sel_test_in1:[23:20]=0b0000 +#define DDR_PHY_REG_129_DATA 0b00000000000000000000010001000000 + // param_phya_reg_tx_byte0_en_rx_awys_on:[0:0]=0b0 + // param_phya_reg_tx_byte0_sel_en_rx_dly:[5:4]=0b00 + // param_phya_reg_rx_byte0_sel_en_rx_gen_rst:[6:6]=0b1 + // param_phya_reg_byte0_mask_oenz:[8:8]=0b0 + // param_phya_reg_tx_byte0_en_mask:[10:10]=0b1 + // param_phya_reg_rx_byte0_sel_cnt_mode:[13:12]=0b00 + // param_phya_reg_tx_byte0_sel_int_loop_back:[14:14]=0b0 + // param_phya_reg_rx_byte0_sel_dqs_dly_for_gated:[17:16]=0b00 + // param_phya_reg_tx_byte0_en_extend_oenz_gated_dline:[18:18]=0b0 +#define DDR_PHY_REG_130_DATA 0b00000000000000000000000000000000 + // param_phyd_reg_reserved_byte0:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_136_DATA 0b00000000000000000000000000000000 + // param_phya_reg_byte1_test_en:[0:0]=0b0 + // param_phya_reg_tx_byte1_ddr_test:[15:8]=0b00000000 + // param_phya_reg_rx_byte1_sel_test_in0:[19:16]=0b0000 + // param_phya_reg_rx_byte1_sel_test_in1:[23:20]=0b0000 +#define DDR_PHY_REG_137_DATA 0b00000000000000000000010001000000 + // param_phya_reg_tx_byte1_en_rx_awys_on:[0:0]=0b0 + // param_phya_reg_tx_byte1_sel_en_rx_dly:[5:4]=0b00 + // param_phya_reg_rx_byte1_sel_en_rx_gen_rst:[6:6]=0b1 + // param_phya_reg_byte1_mask_oenz:[8:8]=0b0 + // param_phya_reg_tx_byte1_en_mask:[10:10]=0b1 + // param_phya_reg_rx_byte1_sel_cnt_mode:[13:12]=0b00 + // param_phya_reg_tx_byte1_sel_int_loop_back:[14:14]=0b0 + // param_phya_reg_rx_byte1_sel_dqs_dly_for_gated:[17:16]=0b00 + // param_phya_reg_tx_byte1_en_extend_oenz_gated_dline:[18:18]=0b0 +#define DDR_PHY_REG_138_DATA 0b00000000000000000000000000000000 + // param_phyd_reg_reserved_byte1:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_0_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_ca_sel_lpddr4_pmos_ph_ca:[3:3]=0b0 + // f0_param_phya_reg_tx_clk_sel_lpddr4_pmos_ph_clk:[4:4]=0b0 + // f0_param_phya_reg_tx_sel_lpddr4_pmos_ph:[5:5]=0b0 +#define DDR_PHY_REG_1_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_ca_drvn_de:[1:0]=0b00 + // f0_param_phya_reg_tx_ca_drvp_de:[5:4]=0b00 + // f0_param_phya_reg_tx_clk0_drvn_de:[9:8]=0b00 + // f0_param_phya_reg_tx_clk0_drvp_de:[13:12]=0b00 + // f0_param_phya_reg_tx_csb_drvn_de:[17:16]=0b00 + // f0_param_phya_reg_tx_csb_drvp_de:[21:20]=0b00 + // f0_param_phya_reg_tx_ca_en_tx_de:[24:24]=0b0 + // f0_param_phya_reg_tx_clk0_en_tx_de:[28:28]=0b0 + // f0_param_phya_reg_tx_csb_en_tx_de:[30:30]=0b0 +#define DDR_PHY_REG_2_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_ca_sel_dly1t_ca:[22:0]=0b00000000000000000000000 +#define DDR_PHY_REG_3_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_clk_sel_dly1t_clk0:[0:0]=0b0 + // f0_param_phya_reg_tx_ca_sel_dly1t_cke0:[8:8]=0b0 + // f0_param_phya_reg_tx_ca_sel_dly1t_csb0:[16:16]=0b0 +#define DDR_PHY_REG_4_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_vref_en_free_offset:[0:0]=0b0 + // f0_param_phya_reg_tx_vref_en_rangex2:[1:1]=0b0 + // f0_param_phya_reg_tx_vref_sel_lpddr4divby2p5:[2:2]=0b0 + // f0_param_phya_reg_tx_vref_sel_lpddr4divby3:[3:3]=0b0 + // f0_param_phya_reg_tx_vref_offset:[14:8]=0b0000000 + // f0_param_phya_reg_tx_vref_sel:[20:16]=0b10000 +#define DDR_PHY_REG_5_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_vrefca_en_free_offset:[0:0]=0b0 + // f0_param_phya_reg_tx_vrefca_en_rangex2:[1:1]=0b0 + // f0_param_phya_reg_tx_vrefca_offset:[14:8]=0b0000000 + // f0_param_phya_reg_tx_vrefca_sel:[20:16]=0b10000 +#define DDR_PHY_REG_6_F0_DATA 0b00000000000000000000000000000010 + // f0_param_phyd_tx_byte_dqs_extend:[2:0]=0b010 +#define DDR_PHY_REG_7_F0_DATA 0b00000000000000000100000001000000 + // f0_param_phya_reg_rx_byte0_odt_reg:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte0_sel_odt_reg_mode:[6:6]=0b1 + // f0_param_phya_reg_rx_byte1_odt_reg:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte1_sel_odt_reg_mode:[14:14]=0b1 +#define DDR_PHY_REG_64_F0_DATA 0b00000000000001000001000000000001 + // f0_param_phya_reg_rx_byte0_en_lsmode:[0:0]=0b1 + // f0_param_phya_reg_rx_byte0_hystr:[5:4]=0b00 + // f0_param_phya_reg_rx_byte0_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f0_param_phya_reg_rx_byte0_sel_odt_center_tap:[10:10]=0b0 + // f0_param_phya_reg_byte0_en_rec_vol_mode:[12:12]=0b1 + // f0_param_phya_reg_tx_byte0_force_en_lvstl_ph:[14:14]=0b0 + // f0_param_phya_reg_rx_byte0_force_en_lvstl_odt:[16:16]=0b0 + // f0_param_phya_reg_rx_byte0_en_trig_lvl_rangex2:[18:18]=0b1 + // f0_param_phya_reg_rx_byte0_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_65_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_byte0_drvn_de_dq:[1:0]=0b00 + // f0_param_phya_reg_tx_byte0_drvp_de_dq:[5:4]=0b00 + // f0_param_phya_reg_tx_byte0_drvn_de_dqs:[9:8]=0b00 + // f0_param_phya_reg_tx_byte0_drvp_de_dqs:[13:12]=0b00 + // f0_param_phya_reg_tx_byte0_en_tx_de_dq:[16:16]=0b0 + // f0_param_phya_reg_tx_byte0_en_tx_de_dqs:[20:20]=0b1 +#define DDR_PHY_REG_66_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte0_sel_dly1t_dq:[8:0]=0b000000000 + // f0_param_phya_reg_tx_byte0_sel_dly1t_dqs:[12:12]=0b0 + // f0_param_phya_reg_tx_byte0_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_67_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4divby3:[4:4]=0b0 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_68_F0_DATA 0b00000000000000000000000000000100 + // f0_param_phyd_reg_rx_byte0_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_69_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte0_dq0_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte0_dq1_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte0_dq2_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte0_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_70_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte0_dq4_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte0_dq5_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte0_dq6_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte0_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_71_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte0_dm_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte0_dqsn_offset:[19:16]=0b0000 + // f0_param_phyd_reg_byte0_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_72_F0_DATA 0b00000000000000000000000000000011 + // f0_param_phyd_tx_byte0_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_80_F0_DATA 0b00000000000001000001000000000001 + // f0_param_phya_reg_rx_byte1_en_lsmode:[0:0]=0b1 + // f0_param_phya_reg_rx_byte1_hystr:[5:4]=0b00 + // f0_param_phya_reg_rx_byte1_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f0_param_phya_reg_rx_byte1_sel_odt_center_tap:[10:10]=0b0 + // f0_param_phya_reg_byte1_en_rec_vol_mode:[12:12]=0b1 + // f0_param_phya_reg_tx_byte1_force_en_lvstl_ph:[14:14]=0b0 + // f0_param_phya_reg_rx_byte1_force_en_lvstl_odt:[16:16]=0b0 + // f0_param_phya_reg_rx_byte1_en_trig_lvl_rangex2:[18:18]=0b1 + // f0_param_phya_reg_rx_byte1_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_81_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_byte1_drvn_de_dq:[1:0]=0b00 + // f0_param_phya_reg_tx_byte1_drvp_de_dq:[5:4]=0b00 + // f0_param_phya_reg_tx_byte1_drvn_de_dqs:[9:8]=0b00 + // f0_param_phya_reg_tx_byte1_drvp_de_dqs:[13:12]=0b00 + // f0_param_phya_reg_tx_byte1_en_tx_de_dq:[16:16]=0b0 + // f0_param_phya_reg_tx_byte1_en_tx_de_dqs:[20:20]=0b1 +#define DDR_PHY_REG_82_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte1_sel_dly1t_dq:[8:0]=0b000000000 + // f0_param_phya_reg_tx_byte1_sel_dly1t_dqs:[12:12]=0b0 + // f0_param_phya_reg_tx_byte1_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_83_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4divby3:[4:4]=0b0 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_84_F0_DATA 0b00000000000000000000000000000100 + // f0_param_phyd_reg_rx_byte1_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_85_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte1_dq0_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte1_dq1_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte1_dq2_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte1_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_86_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte1_dq4_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte1_dq5_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte1_dq6_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte1_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_87_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte1_dm_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte1_dqsn_offset:[19:16]=0b0000 + // f0_param_phyd_reg_byte1_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_88_F0_DATA 0b00000000000000000000000000000011 + // f0_param_phyd_tx_byte1_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_320_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_ca0_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_ca0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_331_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_tx_ca22_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_332_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_cke0_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_cke0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_333_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_csb0_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_cs0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_334_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_resetz_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_reset_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_336_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_ca0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_348_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_cke0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_349_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_csb0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_350_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_resetz_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_351_F0_DATA 0b00001000000010000000010000000100 + // f0_param_phya_reg_tx_ca_drvn_ca:[4:0]=0b00100 + // f0_param_phya_reg_tx_ca_drvp_ca:[12:8]=0b00100 + // f0_param_phya_reg_tx_ca_drvn_csb:[20:16]=0b01000 + // f0_param_phya_reg_tx_ca_drvp_csb:[28:24]=0b01000 +#define DDR_PHY_REG_352_F0_DATA 0b00001000000010000000100000001000 + // f0_param_phya_reg_tx_clk_drvn_clkn0:[4:0]=0b01000 + // f0_param_phya_reg_tx_clk_drvp_clkn0:[12:8]=0b01000 + // f0_param_phya_reg_tx_clk_drvn_clkp0:[20:16]=0b01000 + // f0_param_phya_reg_tx_clk_drvp_clkp0:[28:24]=0b01000 +#define DDR_PHY_REG_384_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit0_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_385_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit2_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_386_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit4_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_387_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit6_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_388_F0_DATA 0b00000000000000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_389_F0_DATA 0b00001011000000000000000000000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f0_param_phyd_tx_byte0_dqs_shift:[29:24]=0b001011 +#define DDR_PHY_REG_390_F0_DATA 0b00001010000000000000100100000000 + // f0_param_phyd_tx_byte0_oenz_dqs_shift:[13:8]=0b001001 + // f0_param_phyd_tx_byte0_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_391_F0_DATA 0b00000000000001000000011000000000 + // f0_param_phyd_tx_byte0_oenz_dqs_extend:[11:8]=0b0110 + // f0_param_phyd_tx_byte0_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_392_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_393_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_394_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_395_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_396_F0_DATA 0b00000000000000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_397_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_398_F0_DATA 0b00000000000000000000100000001000 + // f0_param_phya_reg_tx_byte0_drvn_dq:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte0_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_399_F0_DATA 0b00001000000010000000100000001000 + // f0_param_phya_reg_tx_byte0_drvn_dqsn:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte0_drvp_dqsn:[12:8]=0b01000 + // f0_param_phya_reg_tx_byte0_drvn_dqsp:[20:16]=0b01000 + // f0_param_phya_reg_tx_byte0_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_400_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit0_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_401_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit2_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_402_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit4_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_403_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit6_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_404_F0_DATA 0b00000000000000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_405_F0_DATA 0b00001011000000000000000000000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f0_param_phyd_tx_byte1_dqs_shift:[29:24]=0b001011 +#define DDR_PHY_REG_406_F0_DATA 0b00001010000000000000100100000000 + // f0_param_phyd_tx_byte1_oenz_dqs_shift:[13:8]=0b001001 + // f0_param_phyd_tx_byte1_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_407_F0_DATA 0b00000000000001000000011000000000 + // f0_param_phyd_tx_byte1_oenz_dqs_extend:[11:8]=0b0110 + // f0_param_phyd_tx_byte1_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_408_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_409_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_410_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_411_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_412_F0_DATA 0b00000000000000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_413_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_414_F0_DATA 0b00000000000000000000100000001000 + // f0_param_phya_reg_tx_byte1_drvn_dq:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte1_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_415_F0_DATA 0b00001000000010000000100000001000 + // f0_param_phya_reg_tx_byte1_drvn_dqsn:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte1_drvp_dqsn:[12:8]=0b01000 + // f0_param_phya_reg_tx_byte1_drvn_dqsp:[20:16]=0b01000 + // f0_param_phya_reg_tx_byte1_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_448_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte0_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_449_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte0_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_450_F0_DATA 0b00000000010000000100000000000000 + // f0_param_phyd_reg_rx_byte0_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b01000000 + // f0_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b01000000 +#define DDR_PHY_REG_451_F0_DATA 0b00000000000000000000101101000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_mask_ranka_sw:[6:0]=0b1000000 + // f0_param_phyd_rx_byte0_mask_shift:[13:8]=0b001011 +#define DDR_PHY_REG_452_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_rx_byte0_en_shift:[13:8]=0b000000 + // f0_param_phyd_rx_byte0_odt_en_shift:[29:24]=0b000000 +#define DDR_PHY_REG_453_F0_DATA 0b00000000000010000000111000001110 + // f0_param_phyd_rx_byte0_en_extend:[3:0]=0b1110 + // f0_param_phyd_rx_byte0_odt_en_extend:[11:8]=0b1110 + // f0_param_phyd_rx_byte0_rden_to_rdvld:[20:16]=0b01000 +#define DDR_PHY_REG_454_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte0_rx_dq0_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq1_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq2_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_455_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte0_rx_dq4_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq5_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq6_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_456_F0_DATA 0b01000000010000000000000000000000 + // f0_param_phya_reg_rx_byte0_rx_dq8_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_tx_byte0_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f0_param_phya_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_457_F0_DATA 0b00000000000100000000000000010000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dq:[4:0]=0b10000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dq_offset:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dqs:[20:16]=0b10000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dqs_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_460_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte1_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_461_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte1_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_462_F0_DATA 0b00000000010000000100000000000000 + // f0_param_phyd_reg_rx_byte1_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b01000000 + // f0_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b01000000 +#define DDR_PHY_REG_463_F0_DATA 0b00000000000000000000101101000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_mask_ranka_sw:[6:0]=0b1000000 + // f0_param_phyd_rx_byte1_mask_shift:[13:8]=0b001011 +#define DDR_PHY_REG_464_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_rx_byte1_en_shift:[13:8]=0b000000 + // f0_param_phyd_rx_byte1_odt_en_shift:[29:24]=0b000000 +#define DDR_PHY_REG_465_F0_DATA 0b00000000000010000000111000001110 + // f0_param_phyd_rx_byte1_en_extend:[3:0]=0b1110 + // f0_param_phyd_rx_byte1_odt_en_extend:[11:8]=0b1110 + // f0_param_phyd_rx_byte1_rden_to_rdvld:[20:16]=0b01000 +#define DDR_PHY_REG_466_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte1_rx_dq0_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq1_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq2_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_467_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte1_rx_dq4_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq5_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq6_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_468_F0_DATA 0b01000000010000000000000000000000 + // f0_param_phya_reg_rx_byte1_rx_dq8_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_tx_byte1_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f0_param_phya_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_469_F0_DATA 0b00000000000100000000000000010000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dq:[4:0]=0b10000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dq_offset:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dqs:[20:16]=0b10000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dqs_offset:[30:24]=0b0000000 +#ifdef F1_TEST +#define DDR_PHY_REG_0_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_ca_sel_lpddr4_pmos_ph_ca:[3:3]=0b0 + // f1_param_phya_reg_tx_clk_sel_lpddr4_pmos_ph_clk:[4:4]=0b0 + // f1_param_phya_reg_tx_sel_lpddr4_pmos_ph:[5:5]=0b0 +#define DDR_PHY_REG_1_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_ca_drvn_de:[1:0]=0b00 + // f1_param_phya_reg_tx_ca_drvp_de:[5:4]=0b00 + // f1_param_phya_reg_tx_clk0_drvn_de:[9:8]=0b00 + // f1_param_phya_reg_tx_clk0_drvp_de:[13:12]=0b00 + // f1_param_phya_reg_tx_csb_drvn_de:[17:16]=0b00 + // f1_param_phya_reg_tx_csb_drvp_de:[21:20]=0b00 + // f1_param_phya_reg_tx_ca_en_tx_de:[24:24]=0b0 + // f1_param_phya_reg_tx_clk0_en_tx_de:[28:28]=0b0 + // f1_param_phya_reg_tx_csb_en_tx_de:[30:30]=0b0 +#define DDR_PHY_REG_2_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_ca_sel_dly1t_ca:[22:0]=0b00000000000000000000000 +#define DDR_PHY_REG_3_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_clk_sel_dly1t_clk0:[0:0]=0b0 + // f1_param_phya_reg_tx_ca_sel_dly1t_cke0:[8:8]=0b0 + // f1_param_phya_reg_tx_ca_sel_dly1t_csb0:[16:16]=0b0 +#define DDR_PHY_REG_4_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_vref_en_free_offset:[0:0]=0b0 + // f1_param_phya_reg_tx_vref_en_rangex2:[1:1]=0b0 + // f1_param_phya_reg_tx_vref_sel_lpddr4divby2p5:[2:2]=0b0 + // f1_param_phya_reg_tx_vref_sel_lpddr4divby3:[3:3]=0b0 + // f1_param_phya_reg_tx_vref_offset:[14:8]=0b0000000 + // f1_param_phya_reg_tx_vref_sel:[20:16]=0b10000 +#define DDR_PHY_REG_5_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_vrefca_en_free_offset:[0:0]=0b0 + // f1_param_phya_reg_tx_vrefca_en_rangex2:[1:1]=0b0 + // f1_param_phya_reg_tx_vrefca_offset:[14:8]=0b0000000 + // f1_param_phya_reg_tx_vrefca_sel:[20:16]=0b10000 +#define DDR_PHY_REG_6_F1_DATA 0b00000000000000000000000000000010 + // f1_param_phyd_tx_byte_dqs_extend:[2:0]=0b010 +#define DDR_PHY_REG_7_F1_DATA 0b00000000000000000100000001000000 + // f1_param_phya_reg_rx_byte0_odt_reg:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte0_sel_odt_reg_mode:[6:6]=0b1 + // f1_param_phya_reg_rx_byte1_odt_reg:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte1_sel_odt_reg_mode:[14:14]=0b1 +#define DDR_PHY_REG_64_F1_DATA 0b00000000000000000001000000000001 + // f1_param_phya_reg_rx_byte0_en_lsmode:[0:0]=0b1 + // f1_param_phya_reg_rx_byte0_hystr:[5:4]=0b00 + // f1_param_phya_reg_rx_byte0_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f1_param_phya_reg_rx_byte0_sel_odt_center_tap:[10:10]=0b0 + // f1_param_phya_reg_byte0_en_rec_vol_mode:[12:12]=0b1 + // f1_param_phya_reg_tx_byte0_force_en_lvstl_ph:[14:14]=0b0 + // f1_param_phya_reg_rx_byte0_force_en_lvstl_odt:[16:16]=0b0 + // f1_param_phya_reg_rx_byte0_en_trig_lvl_rangex2:[18:18]=0b0 + // f1_param_phya_reg_rx_byte0_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_65_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_byte0_drvn_de_dq:[1:0]=0b00 + // f1_param_phya_reg_tx_byte0_drvp_de_dq:[5:4]=0b00 + // f1_param_phya_reg_tx_byte0_drvn_de_dqs:[9:8]=0b00 + // f1_param_phya_reg_tx_byte0_drvp_de_dqs:[13:12]=0b00 + // f1_param_phya_reg_tx_byte0_en_tx_de_dq:[16:16]=0b0 + // f1_param_phya_reg_tx_byte0_en_tx_de_dqs:[20:20]=0b1 +#define DDR_PHY_REG_66_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte0_sel_dly1t_dq:[8:0]=0b000000000 + // f1_param_phya_reg_tx_byte0_sel_dly1t_dqs:[12:12]=0b0 + // f1_param_phya_reg_tx_byte0_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_67_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4divby3:[4:4]=0b0 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_68_F1_DATA 0b00000000000000000000000000000100 + // f1_param_phyd_reg_rx_byte0_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_69_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte0_dq0_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte0_dq1_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte0_dq2_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte0_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_70_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte0_dq4_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte0_dq5_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte0_dq6_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte0_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_71_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte0_dm_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte0_dqsn_offset:[19:16]=0b0000 + // f1_param_phyd_reg_byte0_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_72_F1_DATA 0b00000000000000000000000000000011 + // f1_param_phyd_tx_byte0_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_80_F1_DATA 0b00000000000000000001000000000001 + // f1_param_phya_reg_rx_byte1_en_lsmode:[0:0]=0b1 + // f1_param_phya_reg_rx_byte1_hystr:[5:4]=0b00 + // f1_param_phya_reg_rx_byte1_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f1_param_phya_reg_rx_byte1_sel_odt_center_tap:[10:10]=0b0 + // f1_param_phya_reg_byte1_en_rec_vol_mode:[12:12]=0b1 + // f1_param_phya_reg_tx_byte1_force_en_lvstl_ph:[14:14]=0b0 + // f1_param_phya_reg_rx_byte1_force_en_lvstl_odt:[16:16]=0b0 + // f1_param_phya_reg_rx_byte1_en_trig_lvl_rangex2:[18:18]=0b0 + // f1_param_phya_reg_rx_byte1_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_81_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_byte1_drvn_de_dq:[1:0]=0b00 + // f1_param_phya_reg_tx_byte1_drvp_de_dq:[5:4]=0b00 + // f1_param_phya_reg_tx_byte1_drvn_de_dqs:[9:8]=0b00 + // f1_param_phya_reg_tx_byte1_drvp_de_dqs:[13:12]=0b00 + // f1_param_phya_reg_tx_byte1_en_tx_de_dq:[16:16]=0b0 + // f1_param_phya_reg_tx_byte1_en_tx_de_dqs:[20:20]=0b1 +#define DDR_PHY_REG_82_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte1_sel_dly1t_dq:[8:0]=0b000000000 + // f1_param_phya_reg_tx_byte1_sel_dly1t_dqs:[12:12]=0b0 + // f1_param_phya_reg_tx_byte1_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_83_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4divby3:[4:4]=0b0 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_84_F1_DATA 0b00000000000000000000000000000100 + // f1_param_phyd_reg_rx_byte1_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_85_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte1_dq0_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte1_dq1_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte1_dq2_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte1_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_86_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte1_dq4_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte1_dq5_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte1_dq6_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte1_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_87_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte1_dm_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte1_dqsn_offset:[19:16]=0b0000 + // f1_param_phyd_reg_byte1_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_88_F1_DATA 0b00000000000000000000000000000011 + // f1_param_phyd_tx_byte1_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_320_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_ca0_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_ca0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_331_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_tx_ca22_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_332_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_cke0_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_cke0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_333_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_csb0_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_cs0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_334_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_resetz_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_reset_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_336_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_ca0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_348_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_cke0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_349_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_csb0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_350_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_resetz_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_351_F1_DATA 0b00001000000010000000010000000100 + // f1_param_phya_reg_tx_ca_drvn_ca:[4:0]=0b00100 + // f1_param_phya_reg_tx_ca_drvp_ca:[12:8]=0b00100 + // f1_param_phya_reg_tx_ca_drvn_csb:[20:16]=0b01000 + // f1_param_phya_reg_tx_ca_drvp_csb:[28:24]=0b01000 +#define DDR_PHY_REG_352_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_clk_drvn_clkn0:[4:0]=0b01000 + // f1_param_phya_reg_tx_clk_drvp_clkn0:[12:8]=0b01000 + // f1_param_phya_reg_tx_clk_drvn_clkp0:[20:16]=0b01000 + // f1_param_phya_reg_tx_clk_drvp_clkp0:[28:24]=0b01000 +#define DDR_PHY_REG_384_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit0_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_385_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit2_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_386_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit4_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_387_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit6_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_388_F1_DATA 0b00000000000000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_389_F1_DATA 0b00001011000000000000000000000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f1_param_phyd_tx_byte0_dqs_shift:[29:24]=0b001011 +#define DDR_PHY_REG_390_F1_DATA 0b00001010000000000000100100000000 + // f1_param_phyd_tx_byte0_oenz_dqs_shift:[13:8]=0b001001 + // f1_param_phyd_tx_byte0_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_391_F1_DATA 0b00000000000001000000011000000000 + // f1_param_phyd_tx_byte0_oenz_dqs_extend:[11:8]=0b0110 + // f1_param_phyd_tx_byte0_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_392_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_393_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_394_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_395_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_396_F1_DATA 0b00000000000000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_397_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_398_F1_DATA 0b00000000000000000000100000001000 + // f1_param_phya_reg_tx_byte0_drvn_dq:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte0_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_399_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_byte0_drvn_dqsn:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte0_drvp_dqsn:[12:8]=0b01000 + // f1_param_phya_reg_tx_byte0_drvn_dqsp:[20:16]=0b01000 + // f1_param_phya_reg_tx_byte0_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_400_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit0_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_401_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit2_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_402_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit4_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_403_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit6_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_404_F1_DATA 0b00000000000000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_405_F1_DATA 0b00001011000000000000000000000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f1_param_phyd_tx_byte1_dqs_shift:[29:24]=0b001011 +#define DDR_PHY_REG_406_F1_DATA 0b00001010000000000000100100000000 + // f1_param_phyd_tx_byte1_oenz_dqs_shift:[13:8]=0b001001 + // f1_param_phyd_tx_byte1_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_407_F1_DATA 0b00000000000001000000011000000000 + // f1_param_phyd_tx_byte1_oenz_dqs_extend:[11:8]=0b0110 + // f1_param_phyd_tx_byte1_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_408_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_409_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_410_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_411_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_412_F1_DATA 0b00000000000000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_413_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_414_F1_DATA 0b00000000000000000000100000001000 + // f1_param_phya_reg_tx_byte1_drvn_dq:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte1_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_415_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_byte1_drvn_dqsn:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte1_drvp_dqsn:[12:8]=0b01000 + // f1_param_phya_reg_tx_byte1_drvn_dqsp:[20:16]=0b01000 + // f1_param_phya_reg_tx_byte1_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_448_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte0_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_449_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte0_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_450_F1_DATA 0b00000000010000000100000000000000 + // f1_param_phyd_reg_rx_byte0_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b01000000 + // f1_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b01000000 +#define DDR_PHY_REG_451_F1_DATA 0b00000000000000000000101101000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_mask_ranka_sw:[6:0]=0b1000000 + // f1_param_phyd_rx_byte0_mask_shift:[13:8]=0b001011 +#define DDR_PHY_REG_452_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_rx_byte0_en_shift:[13:8]=0b000000 + // f1_param_phyd_rx_byte0_odt_en_shift:[29:24]=0b000000 +#define DDR_PHY_REG_453_F1_DATA 0b00000000000010000000111000001110 + // f1_param_phyd_rx_byte0_en_extend:[3:0]=0b1110 + // f1_param_phyd_rx_byte0_odt_en_extend:[11:8]=0b1110 + // f1_param_phyd_rx_byte0_rden_to_rdvld:[20:16]=0b01000 +#define DDR_PHY_REG_454_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte0_rx_dq0_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq1_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq2_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_455_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte0_rx_dq4_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq5_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq6_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_456_F1_DATA 0b01000000010000000000000000000000 + // f1_param_phya_reg_rx_byte0_rx_dq8_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_tx_byte0_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f1_param_phya_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_457_F1_DATA 0b00000000000100000000000000010000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dq:[4:0]=0b10000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dq_offset:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dqs:[20:16]=0b10000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dqs_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_460_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte1_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_461_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte1_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_462_F1_DATA 0b00000000010000000100000000000000 + // f1_param_phyd_reg_rx_byte1_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b01000000 + // f1_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b01000000 +#define DDR_PHY_REG_463_F1_DATA 0b00000000000000000000101101000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_mask_ranka_sw:[6:0]=0b1000000 + // f1_param_phyd_rx_byte1_mask_shift:[13:8]=0b001011 +#define DDR_PHY_REG_464_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_rx_byte1_en_shift:[13:8]=0b000000 + // f1_param_phyd_rx_byte1_odt_en_shift:[29:24]=0b000000 +#define DDR_PHY_REG_465_F1_DATA 0b00000000000010000000111000001110 + // f1_param_phyd_rx_byte1_en_extend:[3:0]=0b1110 + // f1_param_phyd_rx_byte1_odt_en_extend:[11:8]=0b1110 + // f1_param_phyd_rx_byte1_rden_to_rdvld:[20:16]=0b01000 +#define DDR_PHY_REG_466_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte1_rx_dq0_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq1_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq2_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_467_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte1_rx_dq4_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq5_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq6_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_468_F1_DATA 0b01000000010000000000000000000000 + // f1_param_phya_reg_rx_byte1_rx_dq8_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_tx_byte1_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f1_param_phya_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_469_F1_DATA 0b00000000000100000000000000010000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dq:[4:0]=0b10000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dq_offset:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dqs:[20:16]=0b10000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dqs_offset:[30:24]=0b0000000 +#endif //F1_TEST + +void ddrc_init(void); +void phy_init(void); +void ctrl_init_high_patch(void); +void ctrl_init_low_patch(void); +//void ctrl_init_detect_dram_size(uint8_t * dram_cap_in_mbyte); +void ctrl_init_update_by_dram_size(uint8_t dram_cap_in_mbyte); + +#endif /* __DDR_PI_PHY_H__ */ diff --git a/fsbl/plat/cv180x/include/ddr/ddr_config/ddr3_2133_x16/ddr_init.h b/fsbl/plat/cv180x/include/ddr/ddr_config/ddr3_2133_x16/ddr_init.h new file mode 100644 index 000000000..57d0810a4 --- /dev/null +++ b/fsbl/plat/cv180x/include/ddr/ddr_config/ddr3_2133_x16/ddr_init.h @@ -0,0 +1,1157 @@ +#ifndef __DDR_PI_PHY_H__ +#define __DDR_PI_PHY_H__ + +extern uint32_t ddr_data_rate; +// $Module: reg_cv_phy_param_ddr3_2133 $ +// $RegisterBank Version: V 1.0.00 $ +// $Author: KC TSAI $ +// $Date: Fri, 11 Mar 2022 03:31:12 PM $ +// + +#define DDR_PHY_REG_0_DATA 0b00000011000000100000000100000000 + // param_phyd_swap_ca0:[4:0]=0b00000 + // param_phyd_swap_ca1:[12:8]=0b00001 + // param_phyd_swap_ca2:[20:16]=0b00010 + // param_phyd_swap_ca3:[28:24]=0b00011 +#define DDR_PHY_REG_1_DATA 0b00000111000001100000010100000100 + // param_phyd_swap_ca4:[4:0]=0b00100 + // param_phyd_swap_ca5:[12:8]=0b00101 + // param_phyd_swap_ca6:[20:16]=0b00110 + // param_phyd_swap_ca7:[28:24]=0b00111 +#define DDR_PHY_REG_2_DATA 0b00001011000010100000100100001000 + // param_phyd_swap_ca8:[4:0]=0b01000 + // param_phyd_swap_ca9:[12:8]=0b01001 + // param_phyd_swap_ca10:[20:16]=0b01010 + // param_phyd_swap_ca11:[28:24]=0b01011 +#define DDR_PHY_REG_3_DATA 0b00001111000011100000110100001100 + // param_phyd_swap_ca12:[4:0]=0b01100 + // param_phyd_swap_ca13:[12:8]=0b01101 + // param_phyd_swap_ca14:[20:16]=0b01110 + // param_phyd_swap_ca15:[28:24]=0b01111 +#define DDR_PHY_REG_4_DATA 0b00010011000100100001000100010000 + // param_phyd_swap_ca16:[4:0]=0b10000 + // param_phyd_swap_ca17:[12:8]=0b10001 + // param_phyd_swap_ca18:[20:16]=0b10010 + // param_phyd_swap_ca19:[28:24]=0b10011 +#define DDR_PHY_REG_5_DATA 0b00000000000101100001010100010100 + // param_phyd_swap_ca20:[4:0]=0b10100 + // param_phyd_swap_ca21:[12:8]=0b10101 + // param_phyd_swap_ca22:[20:16]=0b10110 +#define DDR_PHY_REG_6_DATA 0b00000000000000000000000000000000 + // param_phyd_swap_cke0:[0:0]=0b0 + // param_phyd_swap_cs0:[4:4]=0b0 +#define DDR_PHY_REG_7_DATA 0b00000000000000000000000100000000 + // param_phyd_data_byte_swap_slice0:[1:0]=0b00 + // param_phyd_data_byte_swap_slice1:[9:8]=0b01 +#define DDR_PHY_REG_8_DATA 0b01110110010101000011001000010000 + // param_phyd_swap_byte0_dq0_mux:[3:0]=0b0000 + // param_phyd_swap_byte0_dq1_mux:[7:4]=0b0001 + // param_phyd_swap_byte0_dq2_mux:[11:8]=0b0010 + // param_phyd_swap_byte0_dq3_mux:[15:12]=0b0011 + // param_phyd_swap_byte0_dq4_mux:[19:16]=0b0100 + // param_phyd_swap_byte0_dq5_mux:[23:20]=0b0101 + // param_phyd_swap_byte0_dq6_mux:[27:24]=0b0110 + // param_phyd_swap_byte0_dq7_mux:[31:28]=0b0111 +#define DDR_PHY_REG_9_DATA 0b00000000000000000000000000001000 + // param_phyd_swap_byte0_dm_mux:[3:0]=0b1000 +#define DDR_PHY_REG_10_DATA 0b01110110010101000011001000010000 + // param_phyd_swap_byte1_dq0_mux:[3:0]=0b0000 + // param_phyd_swap_byte1_dq1_mux:[7:4]=0b0001 + // param_phyd_swap_byte1_dq2_mux:[11:8]=0b0010 + // param_phyd_swap_byte1_dq3_mux:[15:12]=0b0011 + // param_phyd_swap_byte1_dq4_mux:[19:16]=0b0100 + // param_phyd_swap_byte1_dq5_mux:[23:20]=0b0101 + // param_phyd_swap_byte1_dq6_mux:[27:24]=0b0110 + // param_phyd_swap_byte1_dq7_mux:[31:28]=0b0111 +#define DDR_PHY_REG_11_DATA 0b00000000000000000000000000001000 + // param_phyd_swap_byte1_dm_mux:[3:0]=0b1000 +#define DDR_PHY_REG_16_DATA 0b00000000000000000000000000000000 + // param_phyd_dll_rx_sw_mode:[0:0]=0b0 + // param_phyd_dll_rx_start_cal:[1:1]=0b0 + // param_phyd_dll_rx_cntr_mode:[2:2]=0b0 + // param_phyd_dll_rx_hwrst_time:[3:3]=0b0 + // param_phyd_dll_tx_sw_mode:[16:16]=0b0 + // param_phyd_dll_tx_start_cal:[17:17]=0b0 + // param_phyd_dll_tx_cntr_mode:[18:18]=0b0 + // param_phyd_dll_tx_hwrst_time:[19:19]=0b0 +#define DDR_PHY_REG_17_DATA 0b00000000011111110000000000001101 + // param_phyd_dll_slave_delay_en:[0:0]=0b1 + // param_phyd_dll_rw_en:[1:1]=0b0 + // param_phyd_dll_avg_mode:[2:2]=0b1 + // param_phyd_dll_upd_wait:[6:3]=0b0001 + // param_phyd_dll_sw_clr:[7:7]=0b0 + // param_phyd_dll_sw_code_mode:[8:8]=0b0 + // param_phyd_dll_sw_code:[23:16]=0b01111111 +#define DDR_PHY_REG_18_DATA 0b00000000000000000000000000000000 + // param_phya_reg_tx_clk_tx_dline_code_clkn0:[6:0]=0b0000000 + // param_phya_reg_tx_clk_tx_dline_code_clkp0:[14:8]=0b0000000 +#define DDR_PHY_REG_19_DATA 0b00000000000000000000000000001000 + // param_phya_reg_sel_ddr4_mode:[0:0]=0b0 + // param_phya_reg_sel_lpddr3_mode:[1:1]=0b0 + // param_phya_reg_sel_lpddr4_mode:[2:2]=0b0 + // param_phya_reg_sel_ddr3_mode:[3:3]=0b1 + // param_phya_reg_sel_ddr2_mode:[4:4]=0b0 +#define DDR_PHY_REG_20_DATA 0b00000000000000000000000000000110 + // param_phyd_dram_class:[3:0]=0b0110 +#define DDR_PHY_REG_21_DATA 0b00001100000000000000101100000000 + // param_phyd_wrlvl_start_delay_code:[6:0]=0b0000000 + // param_phyd_wrlvl_start_shift_code:[13:8]=0b001011 + // param_phyd_wrlvl_end_delay_code:[22:16]=0b0000000 + // param_phyd_wrlvl_end_shift_code:[29:24]=0b001100 +#define DDR_PHY_REG_22_DATA 0b00001001000101100000000001001111 + // param_phyd_wrlvl_capture_cnt:[3:0]=0b1111 + // param_phyd_wrlvl_dly_step:[7:4]=0b0100 + // param_phyd_wrlvl_disable:[11:8]=0b0000 + // param_phyd_wrlvl_resp_wait_cnt:[21:16]=0b010110 + // param_phyd_oenz_lead_cnt:[26:23]=0b0010 + // param_phyd_wrlvl_mode:[27:27]=0b1 +#define DDR_PHY_REG_23_DATA 0b00000000000000000000000000000000 + // param_phyd_wrlvl_sw:[0:0]=0b0 + // param_phyd_wrlvl_sw_upd_req:[1:1]=0b0 + // param_phyd_wrlvl_sw_resp:[2:2]=0b0 + // param_phyd_wrlvl_data_mask:[23:16]=0b00000000 +#define DDR_PHY_REG_24_DATA 0b00000100000000000000001101110000 + // param_phyd_pigtlvl_back_step:[7:0]=0b01110000 + // param_phyd_pigtlvl_capture_cnt:[11:8]=0b0011 + // param_phyd_pigtlvl_disable:[19:16]=0b0000 + // param_phyd_pigtlvl_dly_step:[27:24]=0b0100 +#define DDR_PHY_REG_25_DATA 0b00010111000000000000111000000000 + // param_phyd_pigtlvl_start_delay_code:[6:0]=0b0000000 + // param_phyd_pigtlvl_start_shift_code:[13:8]=0b001110 + // param_phyd_pigtlvl_end_delay_code:[22:16]=0b0000000 + // param_phyd_pigtlvl_end_shift_code:[29:24]=0b010111 +#define DDR_PHY_REG_26_DATA 0b00000000100000000000000000000000 + // param_phyd_pigtlvl_resp_wait_cnt:[5:0]=0b000000 + // param_phyd_pigtlvl_sw:[8:8]=0b0 + // param_phyd_pigtlvl_sw_resp:[13:12]=0b00 + // param_phyd_pigtlvl_sw_upd_req:[16:16]=0b0 + // param_phyd_rx_en_lead_cnt:[23:20]=0b1000 +#define DDR_PHY_REG_28_DATA 0b00000000000000000000000100001000 + // param_phyd_rgtrack_threshold:[4:0]=0b01000 + // param_phyd_rgtrack_dly_step:[11:8]=0b0001 + // param_phyd_rgtrack_disable:[19:16]=0b0000 +#define DDR_PHY_REG_29_DATA 0b00000000000001110010000000000000 + // param_phyd_zqcal_wait_count:[3:0]=0b0000 + // param_phyd_zqcal_cycle_count:[15:8]=0b00100000 + // param_phyd_zqcal_hw_mode:[18:16]=0b111 +#define DDR_PHY_REG_32_DATA 0b00011111000000001110000000000000 + // param_phyd_pirdlvl_dlie_code_start:[7:0]=0b00000000 + // param_phyd_pirdlvl_dlie_code_end:[15:8]=0b11100000 + // param_phyd_pirdlvl_deskew_start:[22:16]=0b0000000 + // param_phyd_pirdlvl_deskew_end:[30:24]=0b0011111 +#define DDR_PHY_REG_33_DATA 0b00000001000010110000110000001010 + // param_phyd_pirdlvl_trig_lvl_start:[4:0]=0b01010 + // param_phyd_pirdlvl_trig_lvl_end:[12:8]=0b01100 + // param_phyd_pirdlvl_rdvld_start:[20:16]=0b01011 + // param_phyd_pirdlvl_rdvld_end:[28:24]=0b00001 +#define DDR_PHY_REG_34_DATA 0b00001010000000010000000100010100 + // param_phyd_pirdlvl_dly_step:[3:0]=0b0100 + // param_phyd_pirdlvl_ds_dly_step:[7:4]=0b0001 + // param_phyd_pirdlvl_vref_step:[11:8]=0b0001 + // param_phyd_pirdlvl_disable:[15:12]=0b0000 + // param_phyd_pirdlvl_resp_wait_cnt:[21:16]=0b000001 + // param_phyd_pirdlvl_vref_wait_cnt:[31:24]=0b00001010 +#define DDR_PHY_REG_35_DATA 0b10101010101010100000000010001111 + // param_phyd_pirdlvl_rx_prebit_deskew_en:[0:0]=0b1 + // param_phyd_pirdlvl_rx_init_deskew_en:[1:1]=0b1 + // param_phyd_pirdlvl_vref_training_en:[2:2]=0b1 + // param_phyd_pirdlvl_rdvld_training_en:[3:3]=0b1 + // param_phyd_pirdlvl_capture_cnt:[7:4]=0b1000 + // param_phyd_pirdlvl_MR1520_BYTE:[15:8]=0b00000000 + // param_phyd_pirdlvl_MR3240:[31:16]=0b1010101010101010 +#define DDR_PHY_REG_36_DATA 0b00000000000000000011100000000000 + // param_phyd_pirdlvl_data_mask:[8:0]=0b000000000 + // param_phyd_pirdlvl_sw:[9:9]=0b0 + // param_phyd_pirdlvl_sw_upd_req:[10:10]=0b0 + // param_phyd_pirdlvl_sw_resp:[12:11]=0b11 + // param_phyd_pirdlvl_trig_lvl_dqs_follow_dq:[13:13]=0b1 +#define DDR_PHY_REG_37_DATA 0b00000000000000000000100000000001 + // param_phyd_pirdlvl_rdvld_offset:[3:0]=0b0001 + // param_phyd_pirdlvl_found_cnt_limite:[15:8]=0b00001000 +#define DDR_PHY_REG_40_DATA 0b00000111010000000000010101000000 + // param_phyd_piwdqlvl_start_delay_code:[6:0]=0b1000000 + // param_phyd_piwdqlvl_start_shift_code:[13:8]=0b000101 + // param_phyd_piwdqlvl_end_delay_code:[22:16]=0b1000000 + // param_phyd_piwdqlvl_end_shift_code:[29:24]=0b000111 +#define DDR_PHY_REG_41_DATA 0b00000001010000100000010100000100 + // param_phyd_piwdqlvl_tx_vref_start:[4:0]=0b00100 + // param_phyd_piwdqlvl_tx_vref_end:[12:8]=0b00101 + // param_phyd_piwdqlvl_capture_cnt:[19:16]=0b0010 + // param_phyd_piwdqlvl_dly_step:[23:20]=0b0100 + // param_phyd_piwdqlvl_vref_step:[27:24]=0b0001 + // param_phyd_piwdqlvl_disable:[31:28]=0b0000 +#define DDR_PHY_REG_42_DATA 0b00000000010101010000000000001010 + // param_phyd_piwdqlvl_vref_wait_cnt:[7:0]=0b00001010 + // param_phyd_piwdqlvl_tx_vref_training_en:[8:8]=0b0 + // param_phyd_piwdqlvl_byte_invert_0:[23:16]=0b01010101 +#define DDR_PHY_REG_43_DATA 0b00000000010101010011110001011010 + // param_phyd_piwdqlvl_dq_pattern_0:[15:0]=0b0011110001011010 + // param_phyd_piwdqlvl_byte_invert_1:[23:16]=0b01010101 +#define DDR_PHY_REG_44_DATA 0b00000000101010101010010111000011 + // param_phyd_piwdqlvl_dq_pattern_1:[15:0]=0b1010010111000011 + // param_phyd_piwdqlvl_byte_invert_2:[23:16]=0b10101010 +#define DDR_PHY_REG_45_DATA 0b00000000101010101111000011110000 + // param_phyd_piwdqlvl_dq_pattern_2:[15:0]=0b1111000011110000 + // param_phyd_piwdqlvl_byte_invert_3:[23:16]=0b10101010 +#define DDR_PHY_REG_46_DATA 0b00011110000000000000111100001111 + // param_phyd_piwdqlvl_dq_pattern_3:[15:0]=0b0000111100001111 + // param_phyd_piwdqlvl_data_mask:[24:16]=0b000000000 + // param_phyd_piwdqlvl_pattern_sel:[28:25]=0b1111 +#define DDR_PHY_REG_47_DATA 0b00000000000010000011111000010011 + // param_phyd_piwdqlvl_tdfi_phy_wrdata:[2:0]=0b011 + // param_phyd_piwdqlvl_oenz_lead_cnt:[6:3]=0b0010 + // param_phyd_piwdqlvl_sw:[7:7]=0b0 + // param_phyd_piwdqlvl_sw_upd_req:[8:8]=0b0 + // param_phyd_piwdqlvl_sw_resp:[10:9]=0b11 + // param_phyd_piwdqlvl_sw_result:[11:11]=0b1 + // param_phyd_piwdqlvl_dq_mode:[12:12]=0b1 + // param_phyd_piwdqlvl_dm_mode:[13:13]=0b1 + // param_phyd_piwdqlvl_found_cnt_limite:[23:16]=0b00001000 +#define DDR_PHY_REG_60_DATA 0b00000000000000000000000000000000 + // param_phyd_patch_revision:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_61_DATA 0b00000000000000110000000000110011 + // param_phyd_ca_shift_gating_en:[0:0]=0b1 + // param_phyd_cs_shift_gating_en:[1:1]=0b1 + // param_phyd_cke_shift_gating_en:[2:2]=0b0 + // param_phyd_resetz_shift_gating_en:[3:3]=0b0 + // param_phyd_tx_byte0_shift_gating_en:[4:4]=0b1 + // param_phyd_tx_byte1_shift_gating_en:[5:5]=0b1 + // param_phyd_rx_byte0_shift_gating_en:[16:16]=0b1 + // param_phyd_rx_byte1_shift_gating_en:[17:17]=0b1 +#define DDR_PHY_REG_62_DATA 0b00000000001000010000000000101100 + // param_phyd_lb_lfsr_seed0:[8:0]=0b000101100 + // param_phyd_lb_lfsr_seed1:[24:16]=0b000100001 +#define DDR_PHY_REG_63_DATA 0b00000000001101110000000000010110 + // param_phyd_lb_lfsr_seed2:[8:0]=0b000010110 + // param_phyd_lb_lfsr_seed3:[24:16]=0b000110111 +#define DDR_PHY_REG_64_DATA 0b00000100000000000000000000000000 + // param_phyd_lb_dq_en:[0:0]=0b0 + // param_phyd_lb_dq_go:[1:1]=0b0 + // param_phyd_lb_sw_en:[2:2]=0b0 + // param_phyd_lb_sw_rx_en:[3:3]=0b0 + // param_phyd_lb_sw_rx_mask:[4:4]=0b0 + // param_phyd_lb_sw_odt_en:[5:5]=0b0 + // param_phyd_lb_sw_ca_clkpattern:[6:6]=0b0 + // param_phyd_lb_sync_len:[31:16]=0b0000010000000000 +#define DDR_PHY_REG_65_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_dout0:[8:0]=0b000000000 + // param_phyd_lb_sw_dout1:[24:16]=0b000000000 +#define DDR_PHY_REG_67_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_oenz_dout0:[0:0]=0b0 + // param_phyd_lb_sw_oenz_dout1:[1:1]=0b0 + // param_phyd_lb_sw_dqsn0:[4:4]=0b0 + // param_phyd_lb_sw_dqsn1:[5:5]=0b0 + // param_phyd_lb_sw_dqsp0:[8:8]=0b0 + // param_phyd_lb_sw_dqsp1:[9:9]=0b0 + // param_phyd_lb_sw_oenz_dqs_dout0:[12:12]=0b0 + // param_phyd_lb_sw_oenz_dqs_dout1:[13:13]=0b0 +#define DDR_PHY_REG_68_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_ca_dout:[22:0]=0b00000000000000000000000 +#define DDR_PHY_REG_69_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_clkn0_dout:[0:0]=0b0 + // param_phyd_lb_sw_clkp0_dout:[4:4]=0b0 + // param_phyd_lb_sw_cke0_dout:[8:8]=0b0 + // param_phyd_lb_sw_resetz_dout:[12:12]=0b0 + // param_phyd_lb_sw_csb0_dout:[16:16]=0b0 +#define DDR_PHY_REG_70_DATA 0b00000000000000000000000000000000 + // param_phyd_clkctrl_init_complete:[0:0]=0b0 +#define DDR_PHY_REG_71_DATA 0b00000000000000000110101000010000 + // param_phyd_reg_resetz_dqs_rd_en:[4:4]=0b1 + // param_phyd_rx_upd_tx_sel:[9:8]=0b10 + // param_phyd_tx_upd_rx_sel:[11:10]=0b10 + // param_phyd_rx_en_ext_win:[15:12]=0b0110 + // param_phyd_fifo_rst_sel:[18:16]=0b000 + // param_phyd_fifo_sw_rst:[20:20]=0b0 +#define DDR_PHY_REG_72_DATA 0b00000000000000000000000000000000 + // param_phyd_phy_int_ack:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_73_DATA 0b11111111111111111111111011110111 + // param_phyd_phy_int_mask:[31:0]=0b11111111111111111111111011110111 +#define DDR_PHY_REG_74_DATA 0b00000000000000000000000000011111 + // param_phyd_calvl_rst_n:[0:0]=0b1 + // param_phyd_pigtlvl_rst_n:[1:1]=0b1 + // param_phyd_pirdlvl_rst_n:[2:2]=0b1 + // param_phyd_piwdqlvl_rst_n:[3:3]=0b1 + // param_phyd_wrlvl_rst_n:[4:4]=0b1 +#define DDR_PHY_REG_75_DATA 0b00000000000000000000000000000001 + // param_phyd_clk0_pol:[0:0]=0b1 +#define DDR_PHY_REG_76_DATA 0b00000000000000000000000100000001 + // param_phyd_tx_ca_oenz:[0:0]=0b1 + // param_phyd_tx_ca_clk0_oenz:[8:8]=0b1 +#define DDR_PHY_REG_77_DATA 0b00000000000000000000000100000000 + // param_phya_reg_en_test:[0:0]=0b0 + // param_phya_reg_tx_ca_test_en:[1:1]=0b0 + // param_phya_reg_tx_ca_en_ca_loop_back:[2:2]=0b0 + // param_phya_reg_tx_sel_4bit_mode_tx:[8:8]=0b1 + // param_phya_reg_tx_gpio_in:[16:16]=0b0 +#define DDR_PHY_REG_78_DATA 0b00000000000000000000000000010100 + // param_phya_reg_rx_en_ca_train_mode:[0:0]=0b0 + // param_phya_reg_rx_en_pream_train_mode:[1:1]=0b0 + // param_phya_reg_rx_sel_dqs_wo_pream_mode:[2:2]=0b1 + // param_phya_reg_rx_en_rec_offset:[3:3]=0b0 + // param_phya_reg_rx_sel_4bit_mode_rx:[4:4]=0b1 +#define DDR_PHY_REG_80_DATA 0b00000000000000000000000000000000 + // param_phya_reg_rx_ddrdll_enautok:[0:0]=0b0 + // param_phya_reg_rx_ddrdll_rstb:[1:1]=0b0 + // param_phya_reg_rx_ddrdll_selckout:[5:4]=0b00 + // param_phya_reg_rx_ddrdll_test:[7:6]=0b00 + // param_phya_reg_rx_ddrdll_sel:[15:8]=0b00000000 + // param_phya_reg_tx_ddrdll_enautok:[16:16]=0b0 + // param_phya_reg_tx_ddrdll_rstb:[17:17]=0b0 + // param_phya_reg_tx_ddrdll_selckout:[21:20]=0b00 + // param_phya_reg_tx_ddrdll_test:[23:22]=0b00 + // param_phya_reg_tx_ddrdll_sel:[31:24]=0b00000000 +#define DDR_PHY_REG_81_DATA 0b00000000000000000000000000000000 + // param_phya_reg_tx_zq_cmp_en:[0:0]=0b0 + // param_phya_reg_tx_zq_cmp_offset_cal_en:[1:1]=0b0 + // param_phya_reg_tx_zq_ph_en:[2:2]=0b0 + // param_phya_reg_tx_zq_pl_en:[3:3]=0b0 + // param_phya_reg_tx_zq_step2_en:[4:4]=0b0 + // param_phya_reg_tx_zq_cmp_offset:[12:8]=0b00000 + // param_phya_reg_tx_zq_sel_vref:[20:16]=0b00000 +#define DDR_PHY_REG_82_DATA 0b00000000000000000000100000001000 + // param_phya_reg_tx_zq_golden_drvn:[4:0]=0b01000 + // param_phya_reg_tx_zq_golden_drvp:[12:8]=0b01000 + // param_phya_reg_tx_zq_drvn:[20:16]=0b00000 + // param_phya_reg_tx_zq_drvp:[28:24]=0b00000 +#define DDR_PHY_REG_83_DATA 0b00000000000000000000000000000000 + // param_phya_reg_tx_zq_en_test_aux:[0:0]=0b0 + // param_phya_reg_tx_zq_en_test_mux:[1:1]=0b0 + // param_phya_reg_sel_zq_high_swing:[2:2]=0b0 + // param_phya_reg_zq_sel_test_out0:[7:4]=0b0000 + // param_phya_reg_zq_sel_test_out1:[11:8]=0b0000 + // param_phya_reg_tx_zq_sel_test_ana_in:[15:12]=0b0000 + // param_phya_reg_tx_zq_sel_gpio_in:[17:16]=0b00 +#define DDR_PHY_REG_84_DATA 0b00000000000000000000000000000101 + // param_phya_reg_tune_damp_r:[3:0]=0b0101 +#define DDR_PHY_REG_85_DATA 0b00000000000000000000000100000001 + // param_phyd_sel_cke_oenz:[0:0]=0b1 + // param_phyd_tx_dqsn_default_value:[8:8]=0b1 + // param_phyd_tx_dqsp_default_value:[12:12]=0b0 + // param_phyd_ddr4_2t_preamble:[16:16]=0b0 +#define DDR_PHY_REG_86_DATA 0b00000000000000000000000000000000 + // param_phya_reg_zqcal_done:[0:0]=0b0 +#define DDR_PHY_REG_87_DATA 0b00000000000000000000000000000000 + // param_phyd_dbg_sel:[7:0]=0b00000000 + // param_phyd_dbg_sel_en:[16:16]=0b0 +#define DDR_PHY_REG_89_DATA 0b00000000000000000000000000000000 + // param_phyd_reg_dfs_sel:[0:0]=0b0 +#define DDR_PHY_REG_90_DATA 0b00000000001100110011001100110001 + // param_phyd_ca_sw_dline_en:[0:0]=0b1 + // param_phyd_byte0_wr_sw_dline_en:[4:4]=0b1 + // param_phyd_byte1_wr_sw_dline_en:[5:5]=0b1 + // param_phyd_byte0_wdqs_sw_dline_en:[8:8]=0b1 + // param_phyd_byte1_wdqs_sw_dline_en:[9:9]=0b1 + // param_phyd_byte0_rd_sw_dline_en:[12:12]=0b1 + // param_phyd_byte1_rd_sw_dline_en:[13:13]=0b1 + // param_phyd_byte0_rdg_sw_dline_en:[16:16]=0b1 + // param_phyd_byte1_rdg_sw_dline_en:[17:17]=0b1 + // param_phyd_byte0_rdqs_sw_dline_en:[20:20]=0b1 + // param_phyd_byte1_rdqs_sw_dline_en:[21:21]=0b1 +#define DDR_PHY_REG_91_DATA 0b00000000000000000000000000000000 + // param_phyd_ca_raw_dline_upd:[0:0]=0b0 + // param_phyd_byte0_wr_raw_dline_upd:[4:4]=0b0 + // param_phyd_byte1_wr_raw_dline_upd:[5:5]=0b0 + // param_phyd_byte0_wdqs_raw_dline_upd:[8:8]=0b0 + // param_phyd_byte1_wdqs_raw_dline_upd:[9:9]=0b0 + // param_phyd_byte0_rd_raw_dline_upd:[12:12]=0b0 + // param_phyd_byte1_rd_raw_dline_upd:[13:13]=0b0 + // param_phyd_byte0_rdg_raw_dline_upd:[16:16]=0b0 + // param_phyd_byte1_rdg_raw_dline_upd:[17:17]=0b0 + // param_phyd_byte0_rdqs_raw_dline_upd:[20:20]=0b0 + // param_phyd_byte1_rdqs_raw_dline_upd:[21:21]=0b0 +#define DDR_PHY_REG_92_DATA 0b00000000000000000000000000000000 + // param_phyd_sw_dline_upd_req:[0:0]=0b0 +#define DDR_PHY_REG_93_DATA 0b00000000000000000000000100000000 + // param_phyd_sw_dfi_phyupd_req:[0:0]=0b0 + // param_phyd_sw_dfi_phyupd_req_clr:[4:4]=0b0 + // param_phyd_sw_phyupd_dline:[8:8]=0b1 +#define DDR_PHY_REG_96_DATA 0b00000000000000100000000000010000 + // param_phyd_dfi_wrlvl_req:[0:0]=0b0 + // param_phyd_dfi_wrlvl_odt_en:[4:4]=0b1 + // param_phyd_dfi_wrlvl_strobe_cnt:[19:16]=0b0010 +#define DDR_PHY_REG_97_DATA 0b00000000000000000000000000000000 + // param_phyd_dfi_rdglvl_req:[0:0]=0b0 + // param_phyd_dfi_rdglvl_ddr3_mpr:[4:4]=0b0 +#define DDR_PHY_REG_98_DATA 0b00000000000000000000000000000000 + // param_phyd_dfi_rdlvl_req:[0:0]=0b0 + // param_phyd_dfi_rdlvl_ddr3_mpr:[4:4]=0b0 +#define DDR_PHY_REG_99_DATA 0b00000000000010100000010000000000 + // param_phyd_dfi_wdqlvl_req:[0:0]=0b0 + // param_phyd_dfi_wdqlvl_bist_data_en:[4:4]=0b0 + // param_phyd_dfi_wdqlvl_vref_train_en:[10:10]=0b1 + // param_phyd_dfi_wdqlvl_vref_wait_cnt:[23:16]=0b00001010 +#define DDR_PHY_REG_100_DATA 0b00000000000000100001001000001110 + // param_phyd_dfi_wdqlvl_vref_start:[6:0]=0b0001110 + // param_phyd_dfi_wdqlvl_vref_end:[14:8]=0b0010010 + // param_phyd_dfi_wdqlvl_vref_step:[19:16]=0b0010 +#define DDR_PHY_REG_128_DATA 0b00000000000000000000000000000000 + // param_phya_reg_byte0_test_en:[0:0]=0b0 + // param_phya_reg_tx_byte0_ddr_test:[15:8]=0b00000000 + // param_phya_reg_rx_byte0_sel_test_in0:[19:16]=0b0000 + // param_phya_reg_rx_byte0_sel_test_in1:[23:20]=0b0000 +#define DDR_PHY_REG_129_DATA 0b00000000000000000000010001000000 + // param_phya_reg_tx_byte0_en_rx_awys_on:[0:0]=0b0 + // param_phya_reg_tx_byte0_sel_en_rx_dly:[5:4]=0b00 + // param_phya_reg_rx_byte0_sel_en_rx_gen_rst:[6:6]=0b1 + // param_phya_reg_byte0_mask_oenz:[8:8]=0b0 + // param_phya_reg_tx_byte0_en_mask:[10:10]=0b1 + // param_phya_reg_rx_byte0_sel_cnt_mode:[13:12]=0b00 + // param_phya_reg_tx_byte0_sel_int_loop_back:[14:14]=0b0 + // param_phya_reg_rx_byte0_sel_dqs_dly_for_gated:[17:16]=0b00 + // param_phya_reg_tx_byte0_en_extend_oenz_gated_dline:[18:18]=0b0 +#define DDR_PHY_REG_130_DATA 0b00000000000000000000000000000000 + // param_phyd_reg_reserved_byte0:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_136_DATA 0b00000000000000000000000000000000 + // param_phya_reg_byte1_test_en:[0:0]=0b0 + // param_phya_reg_tx_byte1_ddr_test:[15:8]=0b00000000 + // param_phya_reg_rx_byte1_sel_test_in0:[19:16]=0b0000 + // param_phya_reg_rx_byte1_sel_test_in1:[23:20]=0b0000 +#define DDR_PHY_REG_137_DATA 0b00000000000000000000010001000000 + // param_phya_reg_tx_byte1_en_rx_awys_on:[0:0]=0b0 + // param_phya_reg_tx_byte1_sel_en_rx_dly:[5:4]=0b00 + // param_phya_reg_rx_byte1_sel_en_rx_gen_rst:[6:6]=0b1 + // param_phya_reg_byte1_mask_oenz:[8:8]=0b0 + // param_phya_reg_tx_byte1_en_mask:[10:10]=0b1 + // param_phya_reg_rx_byte1_sel_cnt_mode:[13:12]=0b00 + // param_phya_reg_tx_byte1_sel_int_loop_back:[14:14]=0b0 + // param_phya_reg_rx_byte1_sel_dqs_dly_for_gated:[17:16]=0b00 + // param_phya_reg_tx_byte1_en_extend_oenz_gated_dline:[18:18]=0b0 +#define DDR_PHY_REG_138_DATA 0b00000000000000000000000000000000 + // param_phyd_reg_reserved_byte1:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_0_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_ca_sel_lpddr4_pmos_ph_ca:[3:3]=0b0 + // f0_param_phya_reg_tx_clk_sel_lpddr4_pmos_ph_clk:[4:4]=0b0 + // f0_param_phya_reg_tx_sel_lpddr4_pmos_ph:[5:5]=0b0 +#define DDR_PHY_REG_1_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_ca_drvn_de:[1:0]=0b00 + // f0_param_phya_reg_tx_ca_drvp_de:[5:4]=0b00 + // f0_param_phya_reg_tx_clk0_drvn_de:[9:8]=0b00 + // f0_param_phya_reg_tx_clk0_drvp_de:[13:12]=0b00 + // f0_param_phya_reg_tx_csb_drvn_de:[17:16]=0b00 + // f0_param_phya_reg_tx_csb_drvp_de:[21:20]=0b00 + // f0_param_phya_reg_tx_ca_en_tx_de:[24:24]=0b0 + // f0_param_phya_reg_tx_clk0_en_tx_de:[28:28]=0b0 + // f0_param_phya_reg_tx_csb_en_tx_de:[30:30]=0b0 +#define DDR_PHY_REG_2_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_ca_sel_dly1t_ca:[22:0]=0b00000000000000000000000 +#define DDR_PHY_REG_3_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_clk_sel_dly1t_clk0:[0:0]=0b0 + // f0_param_phya_reg_tx_ca_sel_dly1t_cke0:[8:8]=0b0 + // f0_param_phya_reg_tx_ca_sel_dly1t_csb0:[16:16]=0b0 +#define DDR_PHY_REG_4_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_vref_en_free_offset:[0:0]=0b0 + // f0_param_phya_reg_tx_vref_en_rangex2:[1:1]=0b0 + // f0_param_phya_reg_tx_vref_sel_lpddr4divby2p5:[2:2]=0b0 + // f0_param_phya_reg_tx_vref_sel_lpddr4divby3:[3:3]=0b0 + // f0_param_phya_reg_tx_vref_offset:[14:8]=0b0000000 + // f0_param_phya_reg_tx_vref_sel:[20:16]=0b10000 +#define DDR_PHY_REG_5_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_vrefca_en_free_offset:[0:0]=0b0 + // f0_param_phya_reg_tx_vrefca_en_rangex2:[1:1]=0b0 + // f0_param_phya_reg_tx_vrefca_offset:[14:8]=0b0000000 + // f0_param_phya_reg_tx_vrefca_sel:[20:16]=0b10000 +#define DDR_PHY_REG_6_F0_DATA 0b00000000000000000000000000000010 + // f0_param_phyd_tx_byte_dqs_extend:[2:0]=0b010 +#define DDR_PHY_REG_7_F0_DATA 0b00000000000000000100000001000000 + // f0_param_phya_reg_rx_byte0_odt_reg:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte0_sel_odt_reg_mode:[6:6]=0b1 + // f0_param_phya_reg_rx_byte1_odt_reg:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte1_sel_odt_reg_mode:[14:14]=0b1 +#define DDR_PHY_REG_64_F0_DATA 0b00000000000001000001000000000001 + // f0_param_phya_reg_rx_byte0_en_lsmode:[0:0]=0b1 + // f0_param_phya_reg_rx_byte0_hystr:[5:4]=0b00 + // f0_param_phya_reg_rx_byte0_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f0_param_phya_reg_rx_byte0_sel_odt_center_tap:[10:10]=0b0 + // f0_param_phya_reg_byte0_en_rec_vol_mode:[12:12]=0b1 + // f0_param_phya_reg_tx_byte0_force_en_lvstl_ph:[14:14]=0b0 + // f0_param_phya_reg_rx_byte0_force_en_lvstl_odt:[16:16]=0b0 + // f0_param_phya_reg_rx_byte0_en_trig_lvl_rangex2:[18:18]=0b1 + // f0_param_phya_reg_rx_byte0_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_65_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_byte0_drvn_de_dq:[1:0]=0b00 + // f0_param_phya_reg_tx_byte0_drvp_de_dq:[5:4]=0b00 + // f0_param_phya_reg_tx_byte0_drvn_de_dqs:[9:8]=0b00 + // f0_param_phya_reg_tx_byte0_drvp_de_dqs:[13:12]=0b00 + // f0_param_phya_reg_tx_byte0_en_tx_de_dq:[16:16]=0b0 + // f0_param_phya_reg_tx_byte0_en_tx_de_dqs:[20:20]=0b1 +#define DDR_PHY_REG_66_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte0_sel_dly1t_dq:[8:0]=0b000000000 + // f0_param_phya_reg_tx_byte0_sel_dly1t_dqs:[12:12]=0b0 + // f0_param_phya_reg_tx_byte0_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_67_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4divby3:[4:4]=0b0 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_68_F0_DATA 0b00000000000000000000000000000100 + // f0_param_phyd_reg_rx_byte0_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_69_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte0_dq0_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte0_dq1_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte0_dq2_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte0_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_70_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte0_dq4_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte0_dq5_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte0_dq6_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte0_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_71_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte0_dm_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte0_dqsn_offset:[19:16]=0b0000 + // f0_param_phyd_reg_byte0_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_72_F0_DATA 0b00000000000000000000000000000011 + // f0_param_phyd_tx_byte0_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_80_F0_DATA 0b00000000000001000001000000000001 + // f0_param_phya_reg_rx_byte1_en_lsmode:[0:0]=0b1 + // f0_param_phya_reg_rx_byte1_hystr:[5:4]=0b00 + // f0_param_phya_reg_rx_byte1_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f0_param_phya_reg_rx_byte1_sel_odt_center_tap:[10:10]=0b0 + // f0_param_phya_reg_byte1_en_rec_vol_mode:[12:12]=0b1 + // f0_param_phya_reg_tx_byte1_force_en_lvstl_ph:[14:14]=0b0 + // f0_param_phya_reg_rx_byte1_force_en_lvstl_odt:[16:16]=0b0 + // f0_param_phya_reg_rx_byte1_en_trig_lvl_rangex2:[18:18]=0b1 + // f0_param_phya_reg_rx_byte1_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_81_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_byte1_drvn_de_dq:[1:0]=0b00 + // f0_param_phya_reg_tx_byte1_drvp_de_dq:[5:4]=0b00 + // f0_param_phya_reg_tx_byte1_drvn_de_dqs:[9:8]=0b00 + // f0_param_phya_reg_tx_byte1_drvp_de_dqs:[13:12]=0b00 + // f0_param_phya_reg_tx_byte1_en_tx_de_dq:[16:16]=0b0 + // f0_param_phya_reg_tx_byte1_en_tx_de_dqs:[20:20]=0b1 +#define DDR_PHY_REG_82_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte1_sel_dly1t_dq:[8:0]=0b000000000 + // f0_param_phya_reg_tx_byte1_sel_dly1t_dqs:[12:12]=0b0 + // f0_param_phya_reg_tx_byte1_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_83_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4divby3:[4:4]=0b0 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_84_F0_DATA 0b00000000000000000000000000000100 + // f0_param_phyd_reg_rx_byte1_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_85_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte1_dq0_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte1_dq1_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte1_dq2_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte1_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_86_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte1_dq4_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte1_dq5_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte1_dq6_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte1_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_87_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte1_dm_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte1_dqsn_offset:[19:16]=0b0000 + // f0_param_phyd_reg_byte1_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_88_F0_DATA 0b00000000000000000000000000000011 + // f0_param_phyd_tx_byte1_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_320_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_ca0_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_ca0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_331_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_tx_ca22_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_332_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_cke0_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_cke0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_333_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_csb0_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_cs0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_334_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_resetz_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_reset_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_336_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_ca0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_348_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_cke0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_349_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_csb0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_350_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_resetz_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_351_F0_DATA 0b00001000000010000000010000000100 + // f0_param_phya_reg_tx_ca_drvn_ca:[4:0]=0b00100 + // f0_param_phya_reg_tx_ca_drvp_ca:[12:8]=0b00100 + // f0_param_phya_reg_tx_ca_drvn_csb:[20:16]=0b01000 + // f0_param_phya_reg_tx_ca_drvp_csb:[28:24]=0b01000 +#define DDR_PHY_REG_352_F0_DATA 0b00001000000010000000100000001000 + // f0_param_phya_reg_tx_clk_drvn_clkn0:[4:0]=0b01000 + // f0_param_phya_reg_tx_clk_drvp_clkn0:[12:8]=0b01000 + // f0_param_phya_reg_tx_clk_drvn_clkp0:[20:16]=0b01000 + // f0_param_phya_reg_tx_clk_drvp_clkp0:[28:24]=0b01000 +#define DDR_PHY_REG_384_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit0_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_385_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit2_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_386_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit4_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_387_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit6_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_388_F0_DATA 0b00000000000000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_389_F0_DATA 0b00001011000000000000000000000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f0_param_phyd_tx_byte0_dqs_shift:[29:24]=0b001011 +#define DDR_PHY_REG_390_F0_DATA 0b00001010000000000000100100000000 + // f0_param_phyd_tx_byte0_oenz_dqs_shift:[13:8]=0b001001 + // f0_param_phyd_tx_byte0_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_391_F0_DATA 0b00000000000001000000011000000000 + // f0_param_phyd_tx_byte0_oenz_dqs_extend:[11:8]=0b0110 + // f0_param_phyd_tx_byte0_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_392_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_393_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_394_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_395_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_396_F0_DATA 0b00000000000000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_397_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_398_F0_DATA 0b00000000000000000000100000001000 + // f0_param_phya_reg_tx_byte0_drvn_dq:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte0_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_399_F0_DATA 0b00001000000010000000100000001000 + // f0_param_phya_reg_tx_byte0_drvn_dqsn:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte0_drvp_dqsn:[12:8]=0b01000 + // f0_param_phya_reg_tx_byte0_drvn_dqsp:[20:16]=0b01000 + // f0_param_phya_reg_tx_byte0_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_400_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit0_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_401_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit2_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_402_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit4_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_403_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit6_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_404_F0_DATA 0b00000000000000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_405_F0_DATA 0b00001011000000000000000000000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f0_param_phyd_tx_byte1_dqs_shift:[29:24]=0b001011 +#define DDR_PHY_REG_406_F0_DATA 0b00001010000000000000100100000000 + // f0_param_phyd_tx_byte1_oenz_dqs_shift:[13:8]=0b001001 + // f0_param_phyd_tx_byte1_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_407_F0_DATA 0b00000000000001000000011000000000 + // f0_param_phyd_tx_byte1_oenz_dqs_extend:[11:8]=0b0110 + // f0_param_phyd_tx_byte1_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_408_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_409_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_410_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_411_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_412_F0_DATA 0b00000000000000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_413_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_414_F0_DATA 0b00000000000000000000100000001000 + // f0_param_phya_reg_tx_byte1_drvn_dq:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte1_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_415_F0_DATA 0b00001000000010000000100000001000 + // f0_param_phya_reg_tx_byte1_drvn_dqsn:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte1_drvp_dqsn:[12:8]=0b01000 + // f0_param_phya_reg_tx_byte1_drvn_dqsp:[20:16]=0b01000 + // f0_param_phya_reg_tx_byte1_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_448_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte0_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_449_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte0_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_450_F0_DATA 0b00000000001010010011011100000000 + // f0_param_phyd_reg_rx_byte0_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b00110111 + // f0_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b00101001 +#define DDR_PHY_REG_451_F0_DATA 0b00000000000000000000110101000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_mask_ranka_sw:[6:0]=0b1000000 + // f0_param_phyd_rx_byte0_mask_shift:[13:8]=0b001101 +#define DDR_PHY_REG_452_F0_DATA 0b00000010000000000000001000000000 + // f0_param_phyd_rx_byte0_en_shift:[13:8]=0b000010 + // f0_param_phyd_rx_byte0_odt_en_shift:[29:24]=0b000010 +#define DDR_PHY_REG_453_F0_DATA 0b00000000000010010000111000001110 + // f0_param_phyd_rx_byte0_en_extend:[3:0]=0b1110 + // f0_param_phyd_rx_byte0_odt_en_extend:[11:8]=0b1110 + // f0_param_phyd_rx_byte0_rden_to_rdvld:[20:16]=0b01001 +#define DDR_PHY_REG_454_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte0_rx_dq0_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq1_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq2_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_455_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte0_rx_dq4_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq5_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq6_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_456_F0_DATA 0b01000000010000000000000000000000 + // f0_param_phya_reg_rx_byte0_rx_dq8_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_tx_byte0_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f0_param_phya_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_457_F0_DATA 0b00000000000100000000000000010000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dq:[4:0]=0b10000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dq_offset:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dqs:[20:16]=0b10000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dqs_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_460_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte1_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_461_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte1_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_462_F0_DATA 0b00000000001010010011011100000000 + // f0_param_phyd_reg_rx_byte1_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b00110111 + // f0_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b00101001 +#define DDR_PHY_REG_463_F0_DATA 0b00000000000000000000110101000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_mask_ranka_sw:[6:0]=0b1000000 + // f0_param_phyd_rx_byte1_mask_shift:[13:8]=0b001101 +#define DDR_PHY_REG_464_F0_DATA 0b00000010000000000000001000000000 + // f0_param_phyd_rx_byte1_en_shift:[13:8]=0b000010 + // f0_param_phyd_rx_byte1_odt_en_shift:[29:24]=0b000010 +#define DDR_PHY_REG_465_F0_DATA 0b00000000000010010000111000001110 + // f0_param_phyd_rx_byte1_en_extend:[3:0]=0b1110 + // f0_param_phyd_rx_byte1_odt_en_extend:[11:8]=0b1110 + // f0_param_phyd_rx_byte1_rden_to_rdvld:[20:16]=0b01001 +#define DDR_PHY_REG_466_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte1_rx_dq0_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq1_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq2_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_467_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte1_rx_dq4_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq5_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq6_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_468_F0_DATA 0b01000000010000000000000000000000 + // f0_param_phya_reg_rx_byte1_rx_dq8_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_tx_byte1_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f0_param_phya_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_469_F0_DATA 0b00000000000100000000000000010000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dq:[4:0]=0b10000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dq_offset:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dqs:[20:16]=0b10000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dqs_offset:[30:24]=0b0000000 +#ifdef F1_TEST +#define DDR_PHY_REG_0_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_ca_sel_lpddr4_pmos_ph_ca:[3:3]=0b0 + // f1_param_phya_reg_tx_clk_sel_lpddr4_pmos_ph_clk:[4:4]=0b0 + // f1_param_phya_reg_tx_sel_lpddr4_pmos_ph:[5:5]=0b0 +#define DDR_PHY_REG_1_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_ca_drvn_de:[1:0]=0b00 + // f1_param_phya_reg_tx_ca_drvp_de:[5:4]=0b00 + // f1_param_phya_reg_tx_clk0_drvn_de:[9:8]=0b00 + // f1_param_phya_reg_tx_clk0_drvp_de:[13:12]=0b00 + // f1_param_phya_reg_tx_csb_drvn_de:[17:16]=0b00 + // f1_param_phya_reg_tx_csb_drvp_de:[21:20]=0b00 + // f1_param_phya_reg_tx_ca_en_tx_de:[24:24]=0b0 + // f1_param_phya_reg_tx_clk0_en_tx_de:[28:28]=0b0 + // f1_param_phya_reg_tx_csb_en_tx_de:[30:30]=0b0 +#define DDR_PHY_REG_2_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_ca_sel_dly1t_ca:[22:0]=0b00000000000000000000000 +#define DDR_PHY_REG_3_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_clk_sel_dly1t_clk0:[0:0]=0b0 + // f1_param_phya_reg_tx_ca_sel_dly1t_cke0:[8:8]=0b0 + // f1_param_phya_reg_tx_ca_sel_dly1t_csb0:[16:16]=0b0 +#define DDR_PHY_REG_4_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_vref_en_free_offset:[0:0]=0b0 + // f1_param_phya_reg_tx_vref_en_rangex2:[1:1]=0b0 + // f1_param_phya_reg_tx_vref_sel_lpddr4divby2p5:[2:2]=0b0 + // f1_param_phya_reg_tx_vref_sel_lpddr4divby3:[3:3]=0b0 + // f1_param_phya_reg_tx_vref_offset:[14:8]=0b0000000 + // f1_param_phya_reg_tx_vref_sel:[20:16]=0b10000 +#define DDR_PHY_REG_5_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_vrefca_en_free_offset:[0:0]=0b0 + // f1_param_phya_reg_tx_vrefca_en_rangex2:[1:1]=0b0 + // f1_param_phya_reg_tx_vrefca_offset:[14:8]=0b0000000 + // f1_param_phya_reg_tx_vrefca_sel:[20:16]=0b10000 +#define DDR_PHY_REG_6_F1_DATA 0b00000000000000000000000000000010 + // f1_param_phyd_tx_byte_dqs_extend:[2:0]=0b010 +#define DDR_PHY_REG_7_F1_DATA 0b00000000000000000100000001000000 + // f1_param_phya_reg_rx_byte0_odt_reg:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte0_sel_odt_reg_mode:[6:6]=0b1 + // f1_param_phya_reg_rx_byte1_odt_reg:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte1_sel_odt_reg_mode:[14:14]=0b1 +#define DDR_PHY_REG_64_F1_DATA 0b00000000000000000001000000000001 + // f1_param_phya_reg_rx_byte0_en_lsmode:[0:0]=0b1 + // f1_param_phya_reg_rx_byte0_hystr:[5:4]=0b00 + // f1_param_phya_reg_rx_byte0_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f1_param_phya_reg_rx_byte0_sel_odt_center_tap:[10:10]=0b0 + // f1_param_phya_reg_byte0_en_rec_vol_mode:[12:12]=0b1 + // f1_param_phya_reg_tx_byte0_force_en_lvstl_ph:[14:14]=0b0 + // f1_param_phya_reg_rx_byte0_force_en_lvstl_odt:[16:16]=0b0 + // f1_param_phya_reg_rx_byte0_en_trig_lvl_rangex2:[18:18]=0b0 + // f1_param_phya_reg_rx_byte0_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_65_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_byte0_drvn_de_dq:[1:0]=0b00 + // f1_param_phya_reg_tx_byte0_drvp_de_dq:[5:4]=0b00 + // f1_param_phya_reg_tx_byte0_drvn_de_dqs:[9:8]=0b00 + // f1_param_phya_reg_tx_byte0_drvp_de_dqs:[13:12]=0b00 + // f1_param_phya_reg_tx_byte0_en_tx_de_dq:[16:16]=0b0 + // f1_param_phya_reg_tx_byte0_en_tx_de_dqs:[20:20]=0b1 +#define DDR_PHY_REG_66_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte0_sel_dly1t_dq:[8:0]=0b000000000 + // f1_param_phya_reg_tx_byte0_sel_dly1t_dqs:[12:12]=0b0 + // f1_param_phya_reg_tx_byte0_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_67_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4divby3:[4:4]=0b0 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_68_F1_DATA 0b00000000000000000000000000000100 + // f1_param_phyd_reg_rx_byte0_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_69_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte0_dq0_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte0_dq1_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte0_dq2_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte0_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_70_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte0_dq4_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte0_dq5_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte0_dq6_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte0_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_71_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte0_dm_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte0_dqsn_offset:[19:16]=0b0000 + // f1_param_phyd_reg_byte0_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_72_F1_DATA 0b00000000000000000000000000000011 + // f1_param_phyd_tx_byte0_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_80_F1_DATA 0b00000000000000000001000000000001 + // f1_param_phya_reg_rx_byte1_en_lsmode:[0:0]=0b1 + // f1_param_phya_reg_rx_byte1_hystr:[5:4]=0b00 + // f1_param_phya_reg_rx_byte1_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f1_param_phya_reg_rx_byte1_sel_odt_center_tap:[10:10]=0b0 + // f1_param_phya_reg_byte1_en_rec_vol_mode:[12:12]=0b1 + // f1_param_phya_reg_tx_byte1_force_en_lvstl_ph:[14:14]=0b0 + // f1_param_phya_reg_rx_byte1_force_en_lvstl_odt:[16:16]=0b0 + // f1_param_phya_reg_rx_byte1_en_trig_lvl_rangex2:[18:18]=0b0 + // f1_param_phya_reg_rx_byte1_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_81_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_byte1_drvn_de_dq:[1:0]=0b00 + // f1_param_phya_reg_tx_byte1_drvp_de_dq:[5:4]=0b00 + // f1_param_phya_reg_tx_byte1_drvn_de_dqs:[9:8]=0b00 + // f1_param_phya_reg_tx_byte1_drvp_de_dqs:[13:12]=0b00 + // f1_param_phya_reg_tx_byte1_en_tx_de_dq:[16:16]=0b0 + // f1_param_phya_reg_tx_byte1_en_tx_de_dqs:[20:20]=0b1 +#define DDR_PHY_REG_82_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte1_sel_dly1t_dq:[8:0]=0b000000000 + // f1_param_phya_reg_tx_byte1_sel_dly1t_dqs:[12:12]=0b0 + // f1_param_phya_reg_tx_byte1_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_83_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4divby3:[4:4]=0b0 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_84_F1_DATA 0b00000000000000000000000000000100 + // f1_param_phyd_reg_rx_byte1_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_85_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte1_dq0_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte1_dq1_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte1_dq2_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte1_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_86_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte1_dq4_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte1_dq5_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte1_dq6_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte1_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_87_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte1_dm_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte1_dqsn_offset:[19:16]=0b0000 + // f1_param_phyd_reg_byte1_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_88_F1_DATA 0b00000000000000000000000000000011 + // f1_param_phyd_tx_byte1_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_320_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_ca0_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_ca0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_331_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_tx_ca22_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_332_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_cke0_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_cke0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_333_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_csb0_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_cs0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_334_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_resetz_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_reset_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_336_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_ca0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_348_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_cke0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_349_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_csb0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_350_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_resetz_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_351_F1_DATA 0b00001000000010000000010000000100 + // f1_param_phya_reg_tx_ca_drvn_ca:[4:0]=0b00100 + // f1_param_phya_reg_tx_ca_drvp_ca:[12:8]=0b00100 + // f1_param_phya_reg_tx_ca_drvn_csb:[20:16]=0b01000 + // f1_param_phya_reg_tx_ca_drvp_csb:[28:24]=0b01000 +#define DDR_PHY_REG_352_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_clk_drvn_clkn0:[4:0]=0b01000 + // f1_param_phya_reg_tx_clk_drvp_clkn0:[12:8]=0b01000 + // f1_param_phya_reg_tx_clk_drvn_clkp0:[20:16]=0b01000 + // f1_param_phya_reg_tx_clk_drvp_clkp0:[28:24]=0b01000 +#define DDR_PHY_REG_384_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit0_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_385_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit2_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_386_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit4_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_387_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit6_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_388_F1_DATA 0b00000000000000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_389_F1_DATA 0b00001011000000000000000000000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f1_param_phyd_tx_byte0_dqs_shift:[29:24]=0b001011 +#define DDR_PHY_REG_390_F1_DATA 0b00001010000000000000100100000000 + // f1_param_phyd_tx_byte0_oenz_dqs_shift:[13:8]=0b001001 + // f1_param_phyd_tx_byte0_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_391_F1_DATA 0b00000000000001000000011000000000 + // f1_param_phyd_tx_byte0_oenz_dqs_extend:[11:8]=0b0110 + // f1_param_phyd_tx_byte0_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_392_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_393_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_394_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_395_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_396_F1_DATA 0b00000000000000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_397_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_398_F1_DATA 0b00000000000000000000100000001000 + // f1_param_phya_reg_tx_byte0_drvn_dq:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte0_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_399_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_byte0_drvn_dqsn:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte0_drvp_dqsn:[12:8]=0b01000 + // f1_param_phya_reg_tx_byte0_drvn_dqsp:[20:16]=0b01000 + // f1_param_phya_reg_tx_byte0_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_400_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit0_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_401_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit2_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_402_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit4_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_403_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit6_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_404_F1_DATA 0b00000000000000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_405_F1_DATA 0b00001011000000000000000000000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f1_param_phyd_tx_byte1_dqs_shift:[29:24]=0b001011 +#define DDR_PHY_REG_406_F1_DATA 0b00001010000000000000100100000000 + // f1_param_phyd_tx_byte1_oenz_dqs_shift:[13:8]=0b001001 + // f1_param_phyd_tx_byte1_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_407_F1_DATA 0b00000000000001000000011000000000 + // f1_param_phyd_tx_byte1_oenz_dqs_extend:[11:8]=0b0110 + // f1_param_phyd_tx_byte1_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_408_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_409_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_410_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_411_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_412_F1_DATA 0b00000000000000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_413_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_414_F1_DATA 0b00000000000000000000100000001000 + // f1_param_phya_reg_tx_byte1_drvn_dq:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte1_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_415_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_byte1_drvn_dqsn:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte1_drvp_dqsn:[12:8]=0b01000 + // f1_param_phya_reg_tx_byte1_drvn_dqsp:[20:16]=0b01000 + // f1_param_phya_reg_tx_byte1_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_448_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte0_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_449_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte0_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_450_F1_DATA 0b00000000001010010011011100000000 + // f1_param_phyd_reg_rx_byte0_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b00110111 + // f1_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b00101001 +#define DDR_PHY_REG_451_F1_DATA 0b00000000000000000000110101000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_mask_ranka_sw:[6:0]=0b1000000 + // f1_param_phyd_rx_byte0_mask_shift:[13:8]=0b001101 +#define DDR_PHY_REG_452_F1_DATA 0b00000010000000000000001000000000 + // f1_param_phyd_rx_byte0_en_shift:[13:8]=0b000010 + // f1_param_phyd_rx_byte0_odt_en_shift:[29:24]=0b000010 +#define DDR_PHY_REG_453_F1_DATA 0b00000000000010010000111000001110 + // f1_param_phyd_rx_byte0_en_extend:[3:0]=0b1110 + // f1_param_phyd_rx_byte0_odt_en_extend:[11:8]=0b1110 + // f1_param_phyd_rx_byte0_rden_to_rdvld:[20:16]=0b01001 +#define DDR_PHY_REG_454_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte0_rx_dq0_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq1_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq2_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_455_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte0_rx_dq4_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq5_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq6_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_456_F1_DATA 0b01000000010000000000000000000000 + // f1_param_phya_reg_rx_byte0_rx_dq8_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_tx_byte0_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f1_param_phya_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_457_F1_DATA 0b00000000000100000000000000010000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dq:[4:0]=0b10000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dq_offset:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dqs:[20:16]=0b10000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dqs_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_460_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte1_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_461_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte1_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_462_F1_DATA 0b00000000001010010011011100000000 + // f1_param_phyd_reg_rx_byte1_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b00110111 + // f1_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b00101001 +#define DDR_PHY_REG_463_F1_DATA 0b00000000000000000000110101000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_mask_ranka_sw:[6:0]=0b1000000 + // f1_param_phyd_rx_byte1_mask_shift:[13:8]=0b001101 +#define DDR_PHY_REG_464_F1_DATA 0b00000010000000000000001000000000 + // f1_param_phyd_rx_byte1_en_shift:[13:8]=0b000010 + // f1_param_phyd_rx_byte1_odt_en_shift:[29:24]=0b000010 +#define DDR_PHY_REG_465_F1_DATA 0b00000000000010010000111000001110 + // f1_param_phyd_rx_byte1_en_extend:[3:0]=0b1110 + // f1_param_phyd_rx_byte1_odt_en_extend:[11:8]=0b1110 + // f1_param_phyd_rx_byte1_rden_to_rdvld:[20:16]=0b01001 +#define DDR_PHY_REG_466_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte1_rx_dq0_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq1_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq2_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_467_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte1_rx_dq4_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq5_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq6_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_468_F1_DATA 0b01000000010000000000000000000000 + // f1_param_phya_reg_rx_byte1_rx_dq8_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_tx_byte1_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f1_param_phya_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_469_F1_DATA 0b00000000000100000000000000010000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dq:[4:0]=0b10000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dq_offset:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dqs:[20:16]=0b10000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dqs_offset:[30:24]=0b0000000 +#endif //F1_TEST + +void ddrc_init(void); +void phy_init(void); +void ctrl_init_high_patch(void); +void ctrl_init_low_patch(void); +//void ctrl_init_detect_dram_size(uint8_t * dram_cap_in_mbyte); +void ctrl_init_update_by_dram_size(uint8_t dram_cap_in_mbyte); + +#endif /* __DDR_PI_PHY_H__ */ diff --git a/fsbl/plat/cv180x/include/ddr/ddr_pkg_info.h b/fsbl/plat/cv180x/include/ddr/ddr_pkg_info.h new file mode 100644 index 000000000..e237e1ef7 --- /dev/null +++ b/fsbl/plat/cv180x/include/ddr/ddr_pkg_info.h @@ -0,0 +1,38 @@ +#ifndef __DDR_PKG_INFO_H__ +#define __DDR_PKG_INFO_H__ +#include + +#define DDR_VENDOR_UNKNOWN 0b00000 +#define DDR_VENDOR_NY_4G 0b00001 +#define DDR_VENDOR_NY_2G 0b00010 +#define DDR_VENDOR_ESMT_1G 0b00011 +#define DDR_VENDOR_ESMT_512M_DDR2 0b00100 +#define DDR_VENDOR_ETRON_1G 0b00101 +#define DDR_VENDOR_ESMT_2G 0b00110 +#define DDR_VENDOR_PM_2G 0b00111 +#define DDR_VENDOR_PM_1G 0b01000 +#define DDR_VENDOR_ETRON_512M_DDR2 0b01001 +#define DDR_VENDOR_ESMT_N25_1G 0b01010 + +#define DDR_CAPACITY_UNKNOWN 0b000 +#define DDR_CAPACITY_512M 0b001 +#define DDR_CAPACITY_1G 0b010 +#define DDR_CAPACITY_2G 0b011 +#define DDR_CAPACITY_4G 0b100 + +#define PKG_UNKNOWN 0b000 +#define PKG_QFN88 0b001 +#define PKG_BGA 0b010 +#define PKG_QFN68 0b011 + +#define DDR_TYPE_UNKNOWN 0 +#define DDR_TYPE_DDR2 1 +#define DDR_TYPE_DDR3 2 + +void read_ddr_pkg_info(void); +uint8_t get_ddr_vendor(void); +uint8_t get_ddr_capacity(void); +uint8_t get_pkg(void); +uint8_t get_ddr_type(void); + +#endif /* __DDR_PKG_INFO_H__ */ diff --git a/fsbl/plat/cv180x/include/ddr/ddr_sys.h b/fsbl/plat/cv180x/include/ddr/ddr_sys.h new file mode 100644 index 000000000..b35a686d3 --- /dev/null +++ b/fsbl/plat/cv180x/include/ddr/ddr_sys.h @@ -0,0 +1,180 @@ +#ifndef __DDR_SYS_H__ +#define __DDR_SYS_H__ + +#include +#include + +extern uint32_t freq_in; +extern uint32_t tar_freq; +extern uint32_t mod_freq; +extern uint32_t dev_freq; +extern uint64_t reg_set; +extern uint64_t reg_span; +extern uint64_t reg_step; + +//extern uint64_t debug_seqnum; +//extern uint64_t debug_seqnum1; + +extern uint32_t rddata; + +enum bist_mode { + E_PRBS, + E_SRAM, +}; + +enum train_mode { + E_WRLVL, + E_RDGLVL, + E_WDQLVL, + E_RDLVL, + E_WDQLVL_SW, + E_RDLVL_SW, +}; + +#define PHY_BASE_ADDR 2048 +#define PI_BASE_ADDR 0 +#define CADENCE_PHYD 0x08000000 +#define CADENCE_PHYD_APB 0x08006000 +#define cfg_base 0x08004000 + +#define DDR_SYS_BASE 0x08000000 +// #define PI_BASE (DDR_SYS_BASE + 0x0000) +#define PHY_BASE (DDR_SYS_BASE + 0x2000) +#define DDRC_BASE (DDR_SYS_BASE + 0x4000) +#define PHYD_BASE (DDR_SYS_BASE + 0x6000) +#define CV_DDR_PHYD_APB (DDR_SYS_BASE + 0x6000) +#define AXI_MON_BASE (DDR_SYS_BASE + 0x8000) +// #define TOP_BASE (DDR_SYS_BASE + 0xa000) +#define DDR_TOP_BASE (DDR_SYS_BASE + 0xa000) +#define PHYD_BASE_ADDR (DDR_SYS_BASE) +#define DDR_BIST_BASE 0x08010000 +#define DDR_BIST_SRAM_DQ_BASE 0x08011000 +#define DDR_BIST_SRAM_DM_BASE 0x08011800 + +#define mmio_wr32 mmio_write_32 +#define mmio_rd32 mmio_read_32 + +// #define ddr_mmio_rd32(a, b) do { if (1) b = mmio_rd32(a); } while (0) +// #define ddr_sram_rd32(a, b) do { if (1) b = mmio_rd32(a); } while (0) + +#define ddr_sram_wr32(a, b) mmio_wr32(a, b) +#define ddr_debug_wr32(b) + +//#define uartlog(...) tf_printf(MSG_NOTICE "U: " __VA_ARGS__) +//#define KC_MSG(...) tf_printf(MSG_NOTICE "[KC_DBG] " __VA_ARGS__) +//#define KC_MSG_TR(...) tf_printf(MSG_NOTICE "[KC_DBG_training]" __VA_ARGS__) +//#define TJ_MSG(...) tf_printf(MSG_NOTICE "[TJ Info] : " __VA_ARGS__) + +#define uartlog(...) +#define KC_MSG(...) +#define KC_MSG_TR(...) +#define TJ_MSG(...) + +#ifdef DBG_SHMOO +#define SHMOO_MSG(...) tf_printf(MSG_NOTICE __VA_ARGS__) +#else +#define SHMOO_MSG(...) +#endif + +#ifdef DBG_SHMOO_CA +#define SHMOO_MSG_CA(...) tf_printf(MSG_NOTICE __VA_ARGS__) +#else +#define SHMOO_MSG_CA(...) +#endif + +#ifdef DBG_SHMOO_CS +#define SHMOO_MSG_CS(...) tf_printf(MSG_NOTICE __VA_ARGS__) +#else +#define SHMOO_MSG_CS(...) +#endif + +// void check_rd32(uintptr_t addr, uint32_t expected); //unused +void ddr_debug_num_write(void); +void cvx16_rdvld_train(void); +void ddr_sys_suspend(void); +void ddr_sys_resume(void); +void cvx16_ddr_sub_resume2(void); +void cvx16_ddr_sub_resume3(void); +void cvx16_ddrc_suspend(void); +void cvx16_bist_wr_prbs_init(void); +void cvx16_bist_wr_sram_init(void); +void cvx16_bist_wrlvl_init(void); +void cvx16_bist_rdglvl_init(void); +void cvx16_bist_rdlvl_init(uint32_t mode); +void cvx16_bist_wdqlvl_init(uint32_t mode); +void cvx16_bist_wdmlvl_init(void); +void cvx16_bist_start_check(uint32_t *bist_result, uint64_t *err_data_odd, uint64_t *err_data_even); +void cvx16_bist_tx_shift_delay(uint32_t shift_delay); +void cvx16_bist_rx_delay(uint32_t delay); +void cvx16_bist_rx_deskew_delay(uint32_t delay); +void cvx16_ca_shift_delay(uint32_t shift_delay); +void cvx16_cs_shift_delay(uint32_t shift_delay); +void cvx16_synp_mrw(uint32_t addr, uint32_t data); +void cvx16_chg_pll_freq(void); +void cvx16_dll_cal(void); +void cvx16_dll_cal_phyd_hw(void); +void cvx16_dll_cal_phya_enautok(void); +void cvx16_ddr_zqcal_isr8(void); +void cvx16_ddr_zqcal_hw_isr8(uint32_t hw_mode); +void cvx16_clk_normal(void); +void cvx16_clk_div2(void); +void cvx16_INT_ISR_08(void); +void cvx16_clk_div40(void); +void cvx16_ddr_phy_power_on_seq1(void); +void cvx16_ddr_phy_power_on_seq2(void); +void cvx16_ddr_phy_power_on_seq3(void); +void cvx16_wait_for_dfi_init_complete(void); +void cvx16_ctrlupd_short(void); +void cvx16_polling_dfi_init_start(void); +void cvx16_set_dfi_init_complete(void); +void cvx16_polling_synp_normal_mode(void); +void cvx16_dfi_ca_park_prbs(uint32_t cap_enable); +void cvx16_wrlvl_req(void); +void cvx16_rdglvl_req(void); +void cvx16_rdlvl_req(uint32_t mode); +void cvx16_rdlvl_sw_req(uint32_t mode); +void cvx16_wdqlvl_req(uint32_t data_mode, uint32_t lvl_mode); +void cvx16_wdqlvl_sw_req(uint32_t data_mode, uint32_t lvl_mode); +void cvx16_wrlvl_status(void); +void cvx16_rdglvl_status(void); +void cvx16_rdlvl_status(void); +void cvx16_wdqlvl_status(void); +void cvx16_dll_cal_status(void); +void cvx16_zqcal_status(void); +void cvx16_training_status(void); +void cvx16_setting_check(void); +void cvx16_ddr_freq_change_htol(void); +void cvx16_ddr_freq_change_ltoh(void); +void cvx16_set_dq_vref(uint32_t vref); +void cvx16_set_dfi_init_start(void); +void cvx16_ddr_phya_pd(void); +void cvx16_ddr_phyd_save(uint32_t sram_base_addr); +void cvx16_ddr_phyd_restore(uint32_t sram_base_addr); +void cvx16_dll_sw_upd(void); +void cvx16_bist_mask_shift_delay(uint32_t shift_delay, uint32_t en_lead); +void cvx16_set_dq_trig_lvl(uint32_t trig_lvl); +void cvx16_pll_init(void); +void cvx16_lb_0_phase40(void); +void cvx16_lb_0_external(void); +void cvx16_lb_1_dq_set_highlow(void); +void cvx16_lb_2_mux_demux(void); +void cvx16_lb_3_ca_set_highlow(void); +void cvx16_lb_4_ca_clk_pat(void); +void cvx16_clk_gating_disable(void); +void cvx16_clk_gating_enable(void); +void cvx16_dfi_phyupd_req(void); +void cvx16_en_rec_vol_mode(void); +void cvx16_dll_sw_clr(void); +void cvx16_reg_toggle(void); +void cvx16_ana_test(void); +void cvx16_ddr_zq240(void); +void cvx16_ddr_zq240_ate(void); +void cvx16_ddr_zq240_cal(void); +void ctrl_init_detect_dram_size(uint8_t *dram_cap_in_mbyte); +uint32_t ddr_bist_all(uint32_t mode, uint32_t capacity, uint32_t x16_mode); +uint32_t bist_all_dram(uint32_t mode, uint32_t capacity); +void bist_all_dram_forever(uint32_t capacity); +void calvl_req(uint32_t capacity); +void cslvl_req(uint32_t capacity); +void ddr_training(enum train_mode t_mode); +#endif /* __DDR_SYS_H__ */ diff --git a/fsbl/plat/cv180x/include/ddr/ddr_sys_bring_up.h b/fsbl/plat/cv180x/include/ddr/ddr_sys_bring_up.h new file mode 100644 index 000000000..9ca20ac9d --- /dev/null +++ b/fsbl/plat/cv180x/include/ddr/ddr_sys_bring_up.h @@ -0,0 +1,6 @@ +#ifndef __DDR_SYS_BRING_UP_H__ +#define __DDR_SYS_BRING_UP_H__ + +void ddr_sys_bring_up(void); + +#endif /* __DDR_SYS_BRING_UP_H__ */ diff --git a/fsbl/plat/cv180x/include/ddr/phy_pll_init.h b/fsbl/plat/cv180x/include/ddr/phy_pll_init.h new file mode 100644 index 000000000..99e4e0699 --- /dev/null +++ b/fsbl/plat/cv180x/include/ddr/phy_pll_init.h @@ -0,0 +1,6 @@ +#ifndef __PHY_PLL_INIT_H__ +#define __PHY_PLL_INIT_H__ + +void pll_init(void); + +#endif /* __PHY_PLL_INIT_H__ */ diff --git a/fsbl/plat/cv180x/include/ddr/reg_soc.h b/fsbl/plat/cv180x/include/ddr/reg_soc.h new file mode 100644 index 000000000..80509f78b --- /dev/null +++ b/fsbl/plat/cv180x/include/ddr/reg_soc.h @@ -0,0 +1,41 @@ +#ifndef __REG_SOC_H__ +#define __REG_SOC_H__ + +// #define TOP_REG_BASE 0x03000000 +// #define PINMUX_BASE (TOP_REG_BASE + 0x1000) + +// #define TOP_REG_SW_RST_BASE (TOP_REG_BASE + 0x3000) +// #define REG_SOFT_RST2 0x8 + +// #define GP_REG2 (TOP_REG_BASE + 0x88) +// #define GP_REG3 (TOP_REG_BASE + 0x8C) +// #define GP_REG4 (TOP_REG_BASE + 0x90) +// #define GP_REG5 (TOP_REG_BASE + 0x94) +// #define GP_REG8 (TOP_REG_BASE + 0xA0) + +// #define EFUSE_BASE (TOP_REG_BASE + 0x00050000) +// #define EFUSE_SHADOW_REG (EFUSE_BASE + 0x100) + +// #define EFUSE_ANALOG0 (EFUSE_SHADOW_REG + 0x18) +// #define EFUSE_ANALOG1 (EFUSE_SHADOW_REG + 0x1C) +// #define EFUSE_ANALOG2 (EFUSE_SHADOW_REG + 0x20) +// #define EFUSE_ANALOG3 (EFUSE_SHADOW_REG + 0x24) +// #define EFUSE_BONDING0 (EFUSE_SHADOW_REG + 0x28) +// #define EFUSE_SLT_TRIM (EFUSE_SHADOW_REG + 0x24) + +// #define PLLG6_BASE 0x03002900 +// #define top_pll_g6_reg_ddr_ssc_syn_src_en 0x40 +// #define top_pll_g6_reg_ddr_ssc_syn_src_en_OFFSET 1 +// #define top_pll_g6_reg_ddr_ssc_syn_src_en_MASK 0x2 + +// #define PWM0_BASE (TOP_REG_BASE + 0x60000) +// #define PWM_HLPERIOD0 0x0 +// #define PWM_PERIOD0 0x4 +// #define PWM_HLPERIOD1 0x8 +// #define PWM_PERIOD1 0xC +// #define PWM_HLPERIOD2 0x10 +// #define PWM_PERIOD2 0x14 +// #define PWM_HLPERIOD3 0x18 +// #define PWM_PERIOD3 0x1C +// #define PWM_START 0x44 +#endif /* __REG_SOC_H__ */ diff --git a/fsbl/plat/cv180x/include/ddr/regconfig.h b/fsbl/plat/cv180x/include/ddr/regconfig.h new file mode 100644 index 000000000..b109cc595 --- /dev/null +++ b/fsbl/plat/cv180x/include/ddr/regconfig.h @@ -0,0 +1,28 @@ +#ifndef __REG_CFG_H__ +#define __REG_CFG_H__ + +// #include +// #include "ddr_sys.h" + +// #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) + +struct regconf { + uint32_t addr; + uint32_t val; +}; + +struct regpatch { + uint32_t addr; + uint32_t mask; + uint32_t val; +}; + +// #define DDR_CFG_TYPE_DDR3 1 +// #define DDR_CFG_TYPE_DDR2 2 +// #define DDR_CFG_TYPE_DDR3_AUTO 3 +// #define DDR_CFG_TYPE_DDR2_AUTO 4 + +extern struct regpatch ddr_patch_regs[]; +extern uint32_t ddr_patch_regs_count; + +#endif /* __REG_CFG_H__ */ diff --git a/fsbl/plat/cv180x/include/mmap.h b/fsbl/plat/cv180x/include/mmap.h new file mode 100644 index 000000000..2e8deb583 --- /dev/null +++ b/fsbl/plat/cv180x/include/mmap.h @@ -0,0 +1,90 @@ +#ifndef __MMAP_H__ +#define __MMAP_H__ + +#include "cvi_board_memmap.h" + +/* + * BL1 read-only specific defines. + */ +#define BL1_ROM_BASE ROM_BASE + +#define BL1_ROM_SIZE ROM_SIZE + +#define BL1_RO_BASE BL1_ROM_BASE +#define BL1_RO_LIMIT (BL1_ROM_BASE + BL1_ROM_SIZE) + +#define BL1_VERSION_INFO_SIZE 64 // 32bytes date string + 32bytes of SHA256 +#define BL1_DIGEST_ADDR (BL1_ROM_BASE + BL1_ROM_SIZE - 32) // Size of SHA256 + +#define BL1_ROM_MASK_SIZE 8192 +#define RISCV_BL1_ROM_PSMSK_VALUE (1 << 23) +#define CA53_BL1_ROM_PSMSK_VALUE (1 << 11) + +#define ROM_API_ALIGN 32 + +#define BL_RAM_BASE TPU_SRAM_BASE +#define BL_RAM_SIZE TPU_SRAM_SIZE + +/* + * IO buffer specific defines. + * block IO buffer's start address and size must be block size aligned + */ +#define BOOT_LOG_BUF_BASE (BL_RAM_BASE) +#define BOOT_LOG_BUF_SIZE 0x2000 + +#define PARAM1_BASE (BOOT_LOG_BUF_BASE + BOOT_LOG_BUF_SIZE) +#define PARAM1_SIZE 0x1000 // same as typeof(struct fip_param1). +#define PARAM1_SIZE_WO_SIG 0x800 + +#define CV_IO_BUF_BASE (PARAM1_BASE + PARAM1_SIZE) +#define CV_IO_BUF_SIZE 0x2000 + +#define BL1_RW_BASE (CV_IO_BUF_BASE + CV_IO_BUF_SIZE) +#define BL1_RW_SIZE (0xB000) + +/* + * Put BL2 in VC SRAM + */ +#define BL2_BASE (VC_RAM_BASE) +#define BL2_SIZE (VC_SRAM_SIZE) +#define BL2_ENTRY_OFFSET 32 + +/* + * FIP binary defines. + */ +#define FIP_PARAM1_MAGIC1 0x000A31304c425643ULL // "CVBL01\n\0" +#define FIP_PARAM2_MAGIC1 0x000A3230444c5643ULL // "CVLD02\n\0" + +#define FLASH_NUMBER_OF_RETRIES 8 +#define FIP_RETRY_OFFSET (256 * 1024) +#define FIP_MAX_SIZE (get_number_of_retries() * FIP_RETRY_OFFSET) + +#define PLATFORM_STACK_SIZE 0x2000 + +/* + * DRAM map + */ + +#define DRAM_BASE CVIMMAP_DRAM_BASE +#define DRAM_SIZE CVIMMAP_DRAM_SIZE + +#define MONITOR_RUNADDR CVIMMAP_MONITOR_ADDR +#define LICENSE_FILE_ADDR (DRAM_BASE + 0x20020) // in ATF + +#define OPENSBI_FDT_ADDR CVIMMAP_OPENSBI_FDT_ADDR + +#define DECOMP_ALLOC_SIZE (1 << 20) +#define DECOMP_BUF_SIZE (CVIMMAP_FSBL_UNZIP_SIZE - DECOMP_ALLOC_SIZE) + +#define DECOMP_ALLOC_ADDR CVIMMAP_FSBL_UNZIP_ADDR +#define DECOMP_BUF_ADDR (DECOMP_ALLOC_ADDR + DECOMP_ALLOC_SIZE) + +#if DECOMP_BUF_SIZE <= 0 +#error "FSBL_UNZIP_SIZE is not enough" +#endif + +#define DECOMP_DST_SIZE (16 << 20) + +#define BLCP_2ND_RUNADDR CVIMMAP_FSBL_C906L_START_ADDR + +#endif /* __MMAP_H__ */ diff --git a/fsbl/plat/cv180x/include/platform.h b/fsbl/plat/cv180x/include/platform.h new file mode 100644 index 000000000..3fe5443be --- /dev/null +++ b/fsbl/plat/cv180x/include/platform.h @@ -0,0 +1,125 @@ +/* + * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __PLATFORM_H__ +#define __PLATFORM_H__ + +#include +#include + +#ifndef __ASSEMBLY__ + +#include +#include +#include +#include + +void panic_handler(void) __dead2; +void __system_reset(const char *file, unsigned int line) __dead2; +#define SYSTEM_RESET(...) \ + do { \ + ERROR(__VA_ARGS__); \ + __system_reset(__FILE__, __LINE__); \ + } while (1) + +enum boot_src get_boot_src(void); +void set_boot_src(enum boot_src src); +void set_boot_src_from_trap(void); + +int get_number_of_retries(void); + +int is_uart_dl_enabled(void); +int is_usb_dl_enabled(void); +int is_sd_dl_enabled(void); + +static inline union sw_info *get_sw_info(void) +{ + return (union sw_info *)EFUSE_SW_INFO_ADDR; +} + +enum CHIP_CONF_CMD { + CHIP_CONF_SCAN_START_0 = 0, + CHIP_CONF_SCAN_START_1 = 0xFFFFFFA0, + + CHIP_CONF_CMD_DELAY_US = 0xFFFFFFFE, + CHIP_CONF_CMD_DELAY_MS = 0xFFFFFFFD +}; + +void apply_chip_conf(const struct chip_conf chip_conf[], uint32_t size, enum CHIP_CONF_CMD scan_start, + enum CHIP_CONF_CMD scan_end); + +void reset_c906l(uintptr_t reset_address); + +void set_pinmux(int io_type); + +int sd_get_clk(void); +int emmc_get_clk(void); +void sdio_pad_setting(void); +void sdio_pad_setting_no_card_inserted(void); + +void usb_init(void); +int usb_polling(void *buf, uint32_t offset, uint32_t size); +void cv_usb_clk_init(void); +void cv_usb_clk_deinit(void); + +int emmc_read_fip(uint32_t offset, uint32_t size, uintptr_t buf); + +int sd_open_fip(void); +int sd_load_fip(void *buf, uint32_t offset, uint32_t size); + +int kermit_download(void *buf, uint32_t offset, uint32_t size); + +int wait_debug_port_polling(void); +int wait_debug_port_allow(void); + +int load_image(void *buf, uint32_t offset, size_t image_size, int retry_num); +int device_setup(void); +int flash_init(void); + +uint8_t usb_id_det(void); + +static inline uintptr_t phys_to_dma(uintptr_t phys) +{ + uintptr_t dma = phys; + + if (IN_RANGE(phys, TPU_SRAM_BASE, TPU_SRAM_SIZE)) + dma = phys - TPU_SRAM_BASE + TPU_SRAM_ORIGIN_BASE; + + if (IN_RANGE(phys, VC_RAM_BASE, VC_SRAM_SIZE)) + dma = phys - VC_RAM_BASE + VC_SRAM_ORIGIN_BASE; + + return dma; +} + +static inline uintptr_t dma_to_phys(uintptr_t dma) +{ + uintptr_t phys = dma; + + if (IN_RANGE(dma, TPU_SRAM_ORIGIN_BASE, TPU_SRAM_SIZE)) + phys = dma - TPU_SRAM_BASE + TPU_SRAM_ORIGIN_BASE; + + if (IN_RANGE(dma, VC_SRAM_ORIGIN_BASE, VC_SRAM_SIZE)) + phys = dma - VC_RAM_BASE + VC_SRAM_ORIGIN_BASE; + + return phys; +} + +void setup_dl_flag(void); + +void switch_rtc_mode_1st_stage(void); +void switch_rtc_mode_2nd_stage(void); +void set_rtc_en_registers(void); + +void apply_analog_trimming_data(void); + +void sys_pll_init(void); +void sys_switch_all_to_pll(void); + +void init_comm_info(void); + +#endif /* __ASSEMBLY__ */ + +#endif /* __PLATFORM_H__ */ diff --git a/fsbl/plat/cv180x/include/platform_def.h b/fsbl/plat/cv180x/include/platform_def.h new file mode 100644 index 000000000..64016424a --- /dev/null +++ b/fsbl/plat/cv180x/include/platform_def.h @@ -0,0 +1,463 @@ +/* + * Copyright (c) 2015-2016, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __PLATFORM_DEF_H__ +#define __PLATFORM_DEF_H__ + +#include +#include + +#ifndef __ASSEMBLY__ + +/* + * These definition are used to verify struct size and offset. + * Hard-coded value only. Do not use sizeof() or offsetof() here. + */ +// struct fip_param1->nand_info must be same as the definition in u-boot +#define NAND_INFO_OFFSET 16 + +struct spi_nand_info_t { + uint32_t version; + uint32_t id; + uint32_t page_size; + uint32_t spare_size; + uint32_t block_size; + uint32_t pages_per_block; + uint32_t fip_block_cnt; + uint8_t pages_per_block_shift; + uint8_t badblock_pos; + uint8_t dummy_data1[2]; + uint32_t flags; + uint8_t ecc_en_feature_offset; + uint8_t ecc_en_mask; + uint8_t ecc_status_offset; + uint8_t ecc_status_mask; + uint8_t ecc_status_shift; + uint8_t ecc_status_uncorr_val; + uint8_t dummy_data2[2]; + uint32_t erase_count; // erase count for sys base block + uint8_t sck_l; + uint8_t sck_h; + uint16_t max_freq; + uint32_t sample_param; + uint8_t xtal_switch; + uint8_t dummy_data3[71]; +}; + +struct spinor_info_t { + uint32_t ctrl; + uint32_t dly_ctrl; + uint32_t tran_csr; + uint32_t opt; + uint32_t reserved_1; + uint32_t reserved_2; + uint32_t reserved_3; + uint32_t reserved_4; + uint32_t reserved_5; +} __packed; + +struct chip_conf { + uint32_t reg; + uint32_t value; +} __packed; + +struct fip_flags { + struct { + uint8_t rsa_size : 2; + uint8_t scs : 2; + uint8_t encrypted : 2; + uint8_t reserved1 : 2; + }; + uint8_t reserved2[7]; +} __packed; + +struct fip_param1 { + uint64_t magic1; + uint32_t magic2; + uint32_t param_cksum; + struct spi_nand_info_t nand_info; + struct spinor_info_t spinor_info; + struct fip_flags fip_flags; + uint32_t chip_conf_size; + uint32_t blcp_img_cksum; + uint32_t blcp_img_size; + uint32_t blcp_img_runaddr; + uint32_t blcp_param_loadaddr; + uint32_t blcp_param_size; + uint32_t bl2_img_cksum; + uint32_t bl2_img_size; + uint32_t bld_img_size; + uint32_t param2_loadaddr; + uint32_t reserved1; + struct chip_conf chip_conf[95]; + uint8_t bl_ek[32]; + uint8_t root_pk[512]; + uint8_t bl_pk[512]; + uint8_t bl_pk_sig[512]; + uint8_t chip_conf_sig[512]; + uint8_t bl2_img_sig[512]; + uint8_t blcp_img_sig[512]; +} __packed __aligned(__alignof__(unsigned int)); + +struct blcp_param_head { + uint32_t magic; + uint32_t cksum; +} __packed; + +#define BLCP_PARAM_MAGIC 0x52505043 // "CPPR" +#define BLCP_PARAM_MAX_SIZE 512 +#define BLCP_PARAM_RETRY 4 + +struct bl2_head { + uint64_t magic1; + uint64_t magic2; + uint32_t msid; + uint32_t version; + uint64_t reserved1; +} __packed; + +/* this structure should be modified all of fsbl & MCU & osdrv side */ +struct transfer_config_t { + uint32_t conf_magic; + uint32_t conf_size; //conf_size exclude mcu_status & linux_status + uint32_t isp_buffer_addr; + uint32_t isp_buffer_size; + uint32_t encode_img_addr; + uint32_t encode_img_size; + uint32_t encode_buf_addr; + uint32_t encode_buf_size; + uint8_t dump_print_enable; + uint8_t dump_print_size_idx; + uint16_t image_type; + uint16_t checksum; // checksum exclude mcu_status & linux_status + uint8_t mcu_status; + uint8_t linux_status; +} __packed; + +enum _MUC_STATUS_E { + MCU_STATUS_NONOS_INIT = 1, + MCU_STATUS_NONOS_RUNNING, + MCU_STATUS_NONOS_DONE, + MCU_STATUS_RTOS_T1_INIT, // before linux running + MCU_STATUS_RTOS_T1_RUNNING, + MCU_STATUS_RTOS_T2_INIT, // after linux running + MCU_STATUS_RTOS_T2_RUNNING, + MCU_STATUS_LINUX_INIT, + MCU_STATUS_LINUX_RUNNING, +}; + +enum E_IMAGE_TYPE { + E_FAST_JEPG = 1, + E_FAST_H264, + E_FAST_H265, +}; + +enum DUMP_PRINT_SIZE_E { + DUMP_PRINT_SZ_IDX_0K = 0, + DUMP_PRINT_SZ_IDX_4K = 12, // 4096 = 1<<12 + DUMP_PRINT_SZ_IDX_8K, + DUMP_PRINT_SZ_IDX_16K, + DUMP_PRINT_SZ_IDX_32K, + DUMP_PRINT_SZ_IDX_LIMIT, +}; + +#define BOOT_SRC_TAG 0xCE00 + +// NO ZERO in boot_src +enum boot_src { + // Read from flash + BOOT_SRC_SPI_NAND = 0x0 | BOOT_SRC_TAG, + BOOT_SRC_SPI_NOR = 0x2 | BOOT_SRC_TAG, + BOOT_SRC_EMMC = 0x3 | BOOT_SRC_TAG, + + // Download + BOOT_SRC_SD = 0xA0 | BOOT_SRC_TAG, + BOOT_SRC_USB = 0xA3 | BOOT_SRC_TAG, + BOOT_SRC_UART = 0xA5 | BOOT_SRC_TAG, +}; + +#define DOWNLOAD_BUTTON 0x1 +#define DOWNLOAD_DISABLE 0x2 + +union sw_info { + uint32_t value; + struct { + uint32_t dis_dbg_inject : 1; + uint32_t usb_polling_time : 1; + uint32_t dis_uart_msg : 1; + uint32_t usb_utmi_rst : 1; + uint32_t reserved : 1; + uint32_t usb_vid : 16; + uint32_t dis_usb_rxf : 1; + uint32_t sd_dl : 2; + uint32_t usd_dl : 2; + uint32_t uart_dl : 2; + uint32_t sd_polarity : 2; + uint32_t reset_type : 1; + uint32_t sw_info_enable : 1; + }; +} __packed; + +struct _time_records { + uint16_t fsbl_start; + uint16_t ddr_init_start; + uint16_t ddr_init_end; + uint16_t release_blcp_2nd; + uint16_t load_loader_2nd_end; + uint16_t fsbl_decomp_start; + uint16_t fsbl_decomp_end; + uint16_t fsbl_exit; + uint16_t uboot_start; + uint16_t bootcmd_start; + uint16_t decompress_kernel_start; + uint16_t kernel_start; + uint16_t kernel_run_init_start; +} __packed; + +extern struct _time_records *time_records; + +#endif /* __ASSEMBLY__ */ + +/* + * PINMUX + */ +#define PINMUX_SPI0 11 +#define PINMUX_SDIO0 22 +#define PINMUX_EMMC 25 +#define PINMUX_SPI_NOR 26 +#define PINMUX_SPI_NAND 27 + +/* + * SoC memory map + */ +#define SEC_SUBSYS_BASE 0x02000000 +#define SEC_CRYPTODMA_BASE (SEC_SUBSYS_BASE + 0x00060000) +#define SEC_FAB_FIREWALL (SEC_SUBSYS_BASE + 0x00090000) +#define SEC_DDR_FIREWALL (SEC_SUBSYS_BASE + 0x000A0000) +#define SEC_SYS_BASE (SEC_SUBSYS_BASE + 0x000B0000) +#define SEC_EFUSE_BASE (SEC_SUBSYS_BASE + 0x000C0000) + +#define TOP_BASE 0x03000000 +#define PINMUX_BASE (TOP_BASE + 0x00001000) +#define CLKGEN_BASE (TOP_BASE + 0x00002000) +#define RST_BASE (TOP_BASE + 0x00003000) +#define WATCHDOG_BASE (TOP_BASE + 0x00010000) +#define GPIO_BASE (TOP_BASE + 0x00020000) +#define EFUSE_BASE (TOP_BASE + 0x00050000) +#define PLL_G2_BASE (TOP_BASE + 0x00002800) +#define PWM0_BASE (TOP_BASE + 0x00060000) + +#define HSPERI_BASE 0x04000000 +#define SPINAND_BASE (HSPERI_BASE + 0x00060000) +#define UART0_BASE (HSPERI_BASE + 0x00140000) +#define UART2_BASE (HSPERI_BASE + 0x00160000) +#define USB_BASE (HSPERI_BASE + 0x00340000) +#define EMMC_BASE (HSPERI_BASE + 0x00300000) +#define SDIO_BASE (HSPERI_BASE + 0x00310000) +#define SYSDMA_BASE (HSPERI_BASE + 0x00330000) +#define SPIF_BASE 0x10000000 +#define SPIF1_BASE 0x05400000 + +#define RTC_SYS_BASE 0x05000000 +#define RTC_GPIO_BASE (RTC_SYS_BASE + 0x00021000) + +#define RTC_SRAM_BASE (RTC_SYS_BASE + 0x00200000) +#define RTC_SRAM_SIZE 0x6000 // 24KiB + +#define AXI_SRAM_BASE 0x0E000000 +#define AXI_SRAM_SIZE 0x40 +#define AXI_SRAM_RTOS_OFS 0x7C +#define AXI_SRAM_RTOS_BASE (AXI_SRAM_BASE + AXI_SRAM_RTOS_OFS) +#define CVI_RTOS_MAGIC_CODE 0xABC0DEF + +#define MAILBOX_FIELD 0x1900400 + +#define C906_MAGIC_HEADER 0xA55AC906 // master cpu is c906 +#define CA53_MAGIC_HEADER 0xA55ACA53 // master cpu is ca53 + +#ifdef __riscv +#define RTOS_MAGIC_HEADER C906_MAGIC_HEADER +#else +#define RTOS_MAGIC_HEADER CA53_MAGIC_HEADER +#endif + +#define ROM_SIZE 0x10000 // 64KiB +#define TPU_SRAM_ORIGIN_BASE 0x0C000000 +#define TPU_SRAM_SIZE 0x10000 // 64KiB +#define VC_SRAM_ORIGIN_BASE 0x0BC00000 +#define VC_SRAM_SIZE 0x00019000 // 100KiB + +#ifdef __riscv + #define ROM_BASE 0x04400000 + #define TPU_SRAM_BASE 0x3C000000 // Shadow_tpu_mem + #define VC_RAM_BASE 0x3BC00000 // Shadow_vc_mem + #define SYSMAP_MIRROR_OFFSET 0 +#else +#error "Not support" +#endif + +/* + * AXI SRAM + */ +#define EFUSE_SW_INFO_ADDR (AXI_SRAM_BASE) +#define EFUSE_SW_INFO_SIZE 4 + +#define BOOT_SOURCE_FLAG_ADDR (EFUSE_SW_INFO_ADDR + EFUSE_SW_INFO_SIZE) +#define BOOT_SOURCE_FLAG_SIZE 4 +#define MAGIC_NUM_USB_DL 0x4D474E31 // MGN1 +#define MAGIC_NUM_SD_DL 0x4D474E32 // MGN2 + +#define BOOT_LOG_LEN_ADDR (BOOT_SOURCE_FLAG_ADDR + BOOT_SOURCE_FLAG_SIZE) // 0x0E000008 +#define BOOT_LOG_LEN_SIZE 4 + +#define TIME_RECORDS_ADDR (AXI_SRAM_BASE + 0x10) // 0x0E000010 + +// only for debugging +#define ATF_DBG_REG (BOOT_LOG_LEN_ADDR + BOOT_LOG_LEN_SIZE) +#define ATF_ERR_REG (ATF_DBG_REG + 0x04) +#define ATF_ERR_INFO0 (ATF_DBG_REG + 0x08) +#define CP_STATE_REG (ATF_DBG_REG + 0x0C) + +#define ATF_ERR (((unsigned int __volatile__ *)ATF_ERR_REG)[0]) + +/* End of AXI SRAM */ + +/* + * Some data must be aligned on the biggest cache line size in the platform. + * This is known only to the platform as it might have a combination of + * integrated and external caches. + */ +#define CACHE_WRITEBACK_SHIFT 6 +#define CACHE_WRITEBACK_GRANULE (1 << CACHE_WRITEBACK_SHIFT) + +#define PLAT_PHY_ADDR_SPACE_SIZE (1ull << 32) +#define PLAT_VIRT_ADDR_SPACE_SIZE (1ull << 32) +#define MAX_MMAP_REGIONS 8 +#define MAX_XLAT_TABLES 6 // varies when memory layout changes + +#include + +/* + * UART definitions + */ +#define PLAT_BOOT_UART_BASE UART0_BASE + +/* + * TOP registers. + */ +#define REG_TOP_CHIPID (TOP_BASE + 0x0) +#define REG_TOP_CONF_INFO (TOP_BASE + 0x4) +#define REG_TOP_USB_PHY_CTRL (TOP_BASE + 0x48) + +#define BIT_C906L_BOOT_FROM_RTCSYS_EN (1 << 6) + +#define REG_GP_REG0 (TOP_BASE + 0x80) +#define REG_GP_REG1 (TOP_BASE + 0x84) +#define REG_GP_REG2 (TOP_BASE + 0x88) // Trig simulation bench to increse cntpct_el0 +#define REG_GP_REG3 (TOP_BASE + 0x8C) + +#define REG_USB_ECO_REG (TOP_BASE + 0xB4) +#define REG_USB_ECO_RXF 0x80 + +#define REG_CLK_BYPASS_SEL_REG (CLKGEN_BASE + 0x30) +#define REG_CLK_DIV0_CTL_CA53_REG (CLKGEN_BASE + 0x40) +#define REG_CLK_DIV0_CTL_CPU_AXI0_REG (CLKGEN_BASE + 0x48) +#define REG_CLK_DIV0_CTL_TPU_AXI_REG (CLKGEN_BASE + 0x54) + +#define REG_CLK_DIV_AXI4 (CLKGEN_BASE + 0xB8) + +#define REG_PLL_G2_CTRL (PLL_G2_BASE + 0x0) +#define REG_APLL0_CSR (PLL_G2_BASE + 0x0C) +#define REG_DISPPLL_CSR (PLL_G2_BASE + 0x10) +#define REG_CAM0PLL_CSR (PLL_G2_BASE + 0x14) +#define REG_CAM1PLL_CSR (PLL_G2_BASE + 0x18) +#define REG_PLL_G2_SSC_SYN_CTRL (PLL_G2_BASE + 0x40) +#define REG_APLL_SSC_SYN_CTRL (PLL_G2_BASE + 0x50) +#define REG_APLL_SSC_SYN_SET (PLL_G2_BASE + 0x54) +#define REG_DISPPLL_SSC_SYN_CTRL (PLL_G2_BASE + 0x60) +#define REG_DISPPLL_SSC_SYN_SET (PLL_G2_BASE + 0x64) +#define REG_CAM0PLL_SSC_SYN_CTRL (PLL_G2_BASE + 0x70) +#define REG_CAM0PLL_SSC_SYN_SET (PLL_G2_BASE + 0x74) +#define REG_CAM1PLL_SSC_SYN_CTRL (PLL_G2_BASE + 0x80) +#define REG_CAM1PLL_SSC_SYN_SET (PLL_G2_BASE + 0x84) + +#define SHIFT_TOP_USB_ID 8 +#define SHIFT_TOP_USB_VBUS 9 +#define BIT_TOP_USB_ID (1 << SHIFT_TOP_USB_ID) +#define BIT_TOP_USB_VBUS (1 << SHIFT_TOP_USB_VBUS) + +#define REG_TOP_SD_PWRSW_CTRL (TOP_BASE + 0x1F4) +#define REG_TOP_SD_CTRL_OPT (TOP_BASE + 0x294) +#define BIT_IO_TRAP_SD0_PWR_DIN (1 << 27) +#define BIT_SD0_PWR_EN_POLARITY (1 << 16) +#define BIT_SD1_PWR_EN_POLARITY (1 << 17) + +#define PWM_HLPERIOD0 0x0 +#define PWM_PERIOD0 0x4 +#define PWM_HLPERIOD1 0x8 +#define PWM_PERIOD1 0xC +#define PWM_HLPERIOD2 0x10 +#define PWM_PERIOD2 0x14 +#define PWM_HLPERIOD3 0x18 +#define PWM_PERIOD3 0x1C +#define PWM_START 0x44 +#define PWM_OE 0xD0 + +/* + * DEBUG register + */ +#define ATF_STATE_REG REG_GP_REG1 +#define ATF_STATE (((unsigned int volatile *)ATF_STATE_REG)[0]) + +#define ATF_WAIT_DEBUG_REG REG_GP_REG0 +#define ATF_WAIT_DEBUG_MAGIC 0x6526228C +#define ATF_WAIT_DEBUG_TIMEOUT 1000 + +/* + * Firewall register + */ +#define FABFW_ROM_PSMSK 0x5C + +/* + * Arch timer definitions + */ +#define SYS_COUNTER_FREQ_IN_SECOND 25000000 + +/* + * If enable, the global variable of emmc/sd clock could be changed by blp + */ +#define SUPPORT_SD_EMMC_CLOCK_ADJUSTMENT + +/* + * UART buadrate and clock + */ +#define PLAT_CONSOLE_BAUDRATE 115200 +#define PLAT_UART_CLK_IN_HZ 25000000 + +/* + * UART download + */ +#define UART_DL_MAGIC 0x5552444c // "URDL" +#define UART_DL_KERMIT_TIMEROUT 10000 // ms + +/* + * SD/EMMC definitions + */ +#define PLAT_SD_CLK 25000000 +#define PLAT_EMMC_CLK 25000000 + +#define ENABLE_SDIO_IO_CELL_POWER +#define ENABLE_SDIO_SOURCE_SELECT_SETTING + +#define EMMC_BUS_WIDTH EMMC_BUS_WIDTH_1 +#define DEFAULT_DIV_EMMC_INIT_CLOCK 0x2 + +/* + * USB definitions + */ +#define USB_PHY_DETECTION + +#endif /* __PLATFORM_DEF_H__ */ diff --git a/fsbl/plat/cv180x/include/riscv/rom_api_refer.h b/fsbl/plat/cv180x/include/riscv/rom_api_refer.h new file mode 100644 index 000000000..22b18ab47 --- /dev/null +++ b/fsbl/plat/cv180x/include/riscv/rom_api_refer.h @@ -0,0 +1,8 @@ +p_rom_api_cryptodma_aes_decrypt = 0x0000000004400100; +p_rom_api_flash_init = 0x0000000004400080; +p_rom_api_get_boot_src = 0x0000000004400020; +p_rom_api_get_number_of_retries = 0x00000000044000c0; +p_rom_api_image_crc = 0x00000000044000a0; +p_rom_api_load_image = 0x0000000004400060; +p_rom_api_set_boot_src = 0x0000000004400040; +p_rom_api_verify_rsa = 0x00000000044000e0; diff --git a/fsbl/plat/cv180x/include/rom_api.h b/fsbl/plat/cv180x/include/rom_api.h new file mode 120000 index 000000000..362002417 --- /dev/null +++ b/fsbl/plat/cv180x/include/rom_api.h @@ -0,0 +1 @@ +../../cv181x/include/rom_api.h \ No newline at end of file diff --git a/fsbl/plat/cv180x/include/rtc.h b/fsbl/plat/cv180x/include/rtc.h new file mode 120000 index 000000000..d9f1fdec1 --- /dev/null +++ b/fsbl/plat/cv180x/include/rtc.h @@ -0,0 +1 @@ +../../cv181x/include/rtc.h \ No newline at end of file diff --git a/fsbl/plat/cv180x/include/security b/fsbl/plat/cv180x/include/security new file mode 120000 index 000000000..db334d7a0 --- /dev/null +++ b/fsbl/plat/cv180x/include/security @@ -0,0 +1 @@ +../../cv181x/include/security/ \ No newline at end of file diff --git a/fsbl/plat/cv180x/include/uart b/fsbl/plat/cv180x/include/uart new file mode 120000 index 000000000..e0276a1ee --- /dev/null +++ b/fsbl/plat/cv180x/include/uart @@ -0,0 +1 @@ +../../cv181x/include/uart/ \ No newline at end of file diff --git a/fsbl/plat/cv180x/include/usb/big_endian.h b/fsbl/plat/cv180x/include/usb/big_endian.h new file mode 100644 index 000000000..4ebf8d75f --- /dev/null +++ b/fsbl/plat/cv180x/include/usb/big_endian.h @@ -0,0 +1,24 @@ +#ifndef BYTEORDER_BENDIAN_H +#define BYTEORDER_BENDIAN_H + +#include "swap.h" + +#define cpuToLe32(x) ((uint32_t) swap32(x)) +#define le32ToCpu(x) ((uint32_t) swap32(x)) +#define cpuToLe16(x) ((uint16_t) swap16(x)) +#define le16ToCpu(x) ((uint16_t) swap16(x)) + +#define cpuToBe32(x) (x) +#define be32ToCpu(x) (x) +#define cpuToBe16(x) (x) +#define be16ToCpu(x) (x) + +/** + * Macros used for reading 16-bits and 32-bits data from memory which + * starting addres could be unaligned. + */ +#define ptrToWord(ptr) ((*(uint8_t *) ptr) | (*((uint8_t *) (ptr + 1)) << 8)) +#define ptrToDword(ptr) ((*(uint8_t *) ptr) | (*((uint8_t *) (ptr + 1)) << 8) | \ + (*((uint8_t *) (ptr + 2)) << 16) | (*((uint8_t *) (ptr + 3)) << 24)) + +#endif /* BYTEORDER_BENDIAN_H */ diff --git a/fsbl/plat/cv180x/include/usb/byteorder.h b/fsbl/plat/cv180x/include/usb/byteorder.h new file mode 100644 index 000000000..f8d9cc28f --- /dev/null +++ b/fsbl/plat/cv180x/include/usb/byteorder.h @@ -0,0 +1,12 @@ +#ifndef BYTEORDER_H +#define BYTEORDER_H + +#define CPU_LITTLE_ENDIAN + +#ifdef CPU_LITTLE_ENDIAN +#include "little_endian.h" +#else +#include "big_endian.h" +#endif + +#endif /* BYTEORDER_H */ diff --git a/fsbl/plat/cv180x/include/usb/cv_usb.h b/fsbl/plat/cv180x/include/usb/cv_usb.h new file mode 100644 index 000000000..1eb7f5e3e --- /dev/null +++ b/fsbl/plat/cv180x/include/usb/cv_usb.h @@ -0,0 +1,73 @@ +#ifndef CVI_USB_H +#define CVI_USB_H + +#include +#include "dwc2_stdtypes.h" +#define BCD_USB_SS 0x0300 // 3.00 version USB +#define ID_VENDOR 0x3346 // Cvitek +#define ID_PRODUCT 0x1000 // TTY +#define BCD_DEVICE_SS 0x0001 // 0.1 +#define BCD_USB_HS_ONLY 0x0201 // 2.01 /*Only HS with BOS descriptor*/ +#define BCD_USB_HS 0x0210 // 2.10 +#define BCD_DEVICE_HS 0x0200 // 2.00 + +#define USB_MANUFACTURER_STRING "CVITEK" +#define USB_PRODUCT_STRING "USB Com Port" +#define USB_SERIAL_NUMBER_STRING "123456789ABC" // should 12 chars long + +#define DISABLE_TIMEOUT 99999 + +#define USB_PHY_VBUS_VALID BIT(0) +#define USB_PHY_ID_OVERRIDE_ENABLE BIT(6) +#define USB_PHY_ID_VALUE BIT(7) + +#define BULK_EP_IN 0x81 +#define BULK_EP_OUT 0x01 +#define BULK_EP_NOTIFY 0x82 +#define HEADER_SIZE 8 + +#define SS_PERIPH_DISABLED_SET (1 << 21) +#define OTG_NRDY (1 << 11) +#define HOST_BUS_DROP (1 << 9) +#define DEV_BUS_REQ (1) + +#define CV_USB_DL 0x1 + +TYPEDEF enum { +CVI_USB_TX_DATA_TO_RAM = 0, +CVI_USB_TX_FLAG, +CVI_USB_BREAK, +CVI_USB_KEEP_DL, +} CVI_USB_TOKEN; + +typedef void func(void); + +#define ALIGN_CACHE_SIZE(x) ROUND(x, CONFIG_SYS_CACHELINE_SIZE) + +#define USB_BUF_BASE CV_IO_BUF_BASE + +#define PD_SIZE 4096 +#define BUF_SIZE 512 +#define EP0_SIZE 128 +#define CB_SIZE 128 +#define RSP_SIZE 16 +#define ACM_SIZE 128 +#define STP_SIZE 8 +#define HANDLER_SIZE 1024 + +#define BLK_BUF_ADDR USB_BUF_BASE // 512 +#define CMD_BUF_ADDR (BLK_BUF_ADDR + ALIGN_CACHE_SIZE(BUF_SIZE)) // 512 +#define CB0_BUF_ADDR (CMD_BUF_ADDR + ALIGN_CACHE_SIZE(BUF_SIZE)) // 128 +#define CB1_BUF_ADDR (CB0_BUF_ADDR + ALIGN_CACHE_SIZE(CB_SIZE)) // 128 +#define CB2_BUF_ADDR (CB1_BUF_ADDR + ALIGN_CACHE_SIZE(CB_SIZE)) // 128 +#define EP0_BUF_ADDR (CB2_BUF_ADDR + ALIGN_CACHE_SIZE(CB_SIZE)) // 64 +#define RSP_BUF_ADDR (EP0_BUF_ADDR + ALIGN_CACHE_SIZE(EP0_SIZE)) // 32 +#define ACM_BUF_ADDR (RSP_BUF_ADDR + ALIGN_CACHE_SIZE(RSP_SIZE)) // 128 +#define STP_BUF_ADDR (ACM_BUF_ADDR + ALIGN_CACHE_SIZE(ACM_SIZE)) // 32 +#define HANDLER_ADDR (STP_BUF_ADDR + ALIGN_CACHE_SIZE(STP_SIZE)) // 1024 + +extern uint16_t cv_usb_vid; + +int AcmApp(void *buf, uint32_t offset, uint32_t size); + +#endif diff --git a/fsbl/plat/cv180x/include/usb/dps.h b/fsbl/plat/cv180x/include/usb/dps.h new file mode 100644 index 000000000..d4361a4c9 --- /dev/null +++ b/fsbl/plat/cv180x/include/usb/dps.h @@ -0,0 +1,132 @@ +#ifndef DPS_H +#define DPS_H + +#include "dwc2_stdtypes.h" +/**************************************************************************** + * Prototypes + ***************************************************************************/ + +/** + * Read a (32-bit) word + * @param[in] address the address + * @return the word at the given address + */ +extern uint32_t DWC2_ReadReg32(volatile uint32_t *address); + +/** + * Write a (32-bit) word to memory + * @param[in] address the address + * @param[in] value the word to write + */ +extern void DWC2_WriteReg32(uint32_t value, volatile uint32_t *address); +/** + * Read a byte, bypassing the cache + * @param[in] address the address + * @return the byte at the given address + */ +extern uint8_t DWC2_UncachedRead8(volatile uint8_t *address); + +/** + * Read a short, bypassing the cache + * @param[in] address the address + * @return the short at the given address + */ +extern uint16_t DWC2_UncachedRead16(volatile uint16_t *address); + +/** + * Read a (32-bit) word, bypassing the cache + * @param[in] address the address + * @return the word at the given address + */ +extern uint32_t DWC2_UncachedRead32(volatile uint32_t *address); + +/** + * Write a byte to memory, bypassing the cache + * @param[in] address the address + * @param[in] value the byte to write + */ +extern void DWC2_UncachedWrite8(uint8_t value, volatile uint8_t *address); + +/** + * Write a short to memory, bypassing the cache + * @param[in] address the address + * @param[in] value the short to write + */ +extern void DWC2_UncachedWrite16(uint16_t value, volatile uint16_t *address); +/** + * Write a (32-bit) word to memory, bypassing the cache + * @param[in] address the address + * @param[in] value the word to write + */ +extern void DWC2_UncachedWrite32(uint32_t value, volatile uint32_t *address); +/** + * Write a (32-bit) address value to memory, bypassing the cache. + * This function is for writing an address value, i.e. something that + * will be treated as an address by hardware, and therefore might need + * to be translated to a physical bus address. + * @param[in] location the (CPU) location where to write the address value + * @param[in] addrValue the address value to write + */ +extern void DWC2_WritePhysAddress32(uint32_t addrValue, volatile uint32_t *location); + +/** + * Hardware specific memcpy. + * @param[in] src src address + * @param[in] dst destination address + * @param[in] size: size of the copy + */ +extern void DWC2_BufferCopy(volatile uint8_t *dst, volatile uint8_t *src, uint32_t size); + +/** + * Invalidate the cache for the specified memory region. + * This function may be stubbed out if caching is disabled for memory regions + * as described in the driver documentation, or if the driver configuration does + * not require this function. + * @param[in] address Virtual address of memory region. (If an MMU is not in use, + * this will be equivalent to the physical address.) This address should be + * rounded down to the nearest cache line boundary. + * @param[in] size size of memory in bytes. This size should be rounded up to + * the nearest cache line boundary. Use size UINTPTR_MAX to invalidate all + * memory cache. A size of 0 should be ignored and the function should return + * immediately with no effect. + * @param[in] devInfo This parameter can be used to pass implementation specific + * data to this function. The content and use of this parameter is up to the + * implementor of this function to determine, and if not required it may be ignored. + * For example, under Linux it can be used to pass a pointer to + * the device struct to be used in a call to dma_sync_single_for_device(). If + * used, the parameter should be passed to the core driver at initialisation as + * part of the configurationInfo struct. Please + * see the core driver documentation for details of how to do this. + */ +// extern void DWC2_CacheInvalidate(uintptr_t address, size_t size); + +/** + * Flush the cache for the specified memory region + * This function may be stubbed out if caching is disabled for memory regions + * as described in the driver documentation, or if the driver configuration does + * not require this function. + * @param[in] address Virtual address of memory region. (If an MMU is not in use, + * this will be equivalent to the physical address.) This address should be + * rounded down to the nearest cache line boundary. + * @param[in] size size of memory in bytes. This size should be rounded up to + * the nearest cache line boundary. Use size UINTPTR_MAX to flush all + * memory cache. A size of 0 should be ignored and the function should return + * immediately with no effect. + * @param[in] devInfo This parameter can be used to pass implementation specific + * data to this function. The content and use of this parameter is up to the + * implementor of this function to determine, and if not required it may be ignored. + * For example, under Linux it can be used to pass a pointer to + * the device struct to be used in a call to dma_sync_single_for_device(). If + * used, the parameter should be passed to the core driver at initialisation as + * part of the configurationInfo struct. Please + * see the core driver documentation for details of how to do this. + */ +// extern void DWC2_CacheFlush(uintptr_t address, size_t size); + +/** + * Delay software execution by a number of nanoseconds + * @param[in] ns number of nanoseconds to delay software execution + */ +extern void DWC2_DelayNs(uint32_t ns); + +#endif /* DPS_H */ diff --git a/fsbl/plat/cv180x/include/usb/dwc2_ch9.h b/fsbl/plat/cv180x/include/usb/dwc2_ch9.h new file mode 100644 index 000000000..4cd87d2ed --- /dev/null +++ b/fsbl/plat/cv180x/include/usb/dwc2_ch9.h @@ -0,0 +1,881 @@ +#ifndef DWC2_CH9_H +#define DWC2_CH9_H + +#include "dwc2_stdtypes.h" + +/** @defgroup ConfigInfo Configuration and Hardware Operation Information + * The following definitions specify the driver operation environment that + * is defined by hardware configuration or client code. These defines are + * located in the header file of the core driver. + * @{ + */ + +/* + ********************************************************************* + * Defines + ********************************************************************* + */ +/** Data transfer direction */ +#define CH9_USB_DIR_HOST_TO_DEVICE 0 + +#define CH9_USB_DIR_DEVICE_TO_HOST (1 << 7) + +/** Type of request */ +#define CH9_USB_REQ_TYPE_MASK (3 << 5) + +#define CH9_USB_REQ_TYPE_STANDARD (0 << 5) + +#define CH9_USB_REQ_TYPE_CLASS (1 << 5) + +#define CH9_USB_REQ_TYPE_VENDOR (2 << 5) + +#define CH9_USB_REQ_TYPE_OTHER (3 << 5) + +/** Recipient of request */ +#define CH9_REQ_RECIPIENT_MASK 0x0f + +#define CH9_USB_REQ_RECIPIENT_DEVICE 0 + +#define CH9_USB_REQ_RECIPIENT_INTERFACE 1 + +#define CH9_USB_REQ_RECIPIENT_ENDPOINT 2 + +#define CH9_USB_REQ_RECIPIENT_OTHER 3 + +/** Standard Request Code (chapter 9.4, Table 9-5 of USB Spec.) */ +#define CH9_USB_REQ_GET_STATUS 0 + +#define CH9_USB_REQ_CLEAR_FEATURE 1 + +#define CH9_USB_REQ_SET_FEATURE 3 + +#define CH9_USB_REQ_SET_ADDRESS 5 + +#define CH9_USB_REQ_GET_DESCRIPTOR 6 + +#define CH9_USB_REQ_SET_DESCRIPTOR 7 + +#define CH9_USB_REQ_GET_CONFIGURATION 8 + +#define CH9_USB_REQ_SET_CONFIGURATION 9 + +#define CH9_USB_REQ_GET_INTERFACE 10 + +#define CH9_USB_REQ_SET_INTERFACE 11 + +#define CH9_USB_REQ_SYNCH_FRAME 12 + +#define CH9_USB_REQ_SET_ENCRYPTION 13 + +#define CH9_USB_REQ_GET_ENCRYPTION 14 + +#define CH9_USB_REQ_SET_HANDSHAKE 15 + +#define CH9_USB_REQ_GET_HANDSHAKE 16 + +#define CH9_USB_REQ_SET_CONNECTION 17 + +#define CH9_USB_REQ_SET_SCURITY_DATA 18 + +#define CH9_USB_REQ_GET_SCURITY_DATA 19 + +#define CH9_USB_REQ_SET_WUSB_DATA 20 + +#define CH9_USB_REQ_LOOPBACK_DATA_WRITE 21 + +#define CH9_USB_REQ_LOOPBACK_DATA_READ 22 + +#define CH9_USB_REQ_SET_INTERFACE_DS 23 + +#define CH9_USB_REQ_CVI_ENTER_DL 66 + +#define CH9_USB_REQ_SET_SEL 48 + +#define CH9_USB_REQ_ISOCH_DELAY 49 + +/** Standard Descriptor Types (chapter 9.4 - Table 9-6 of USB Spec.) */ +#define CH9_USB_DT_DEVICE 1 + +#define CH9_USB_DT_CONFIGURATION 2 + +#define CH9_USB_DT_STRING 3 + +#define CH9_USB_DT_INTERFACE 4 + +#define CH9_USB_DT_ENDPOINT 5 + +#define CH9_USB_DT_DEVICE_QUALIFIER 6 + +/** USB 2 */ +#define CH9_USB_DT_OTHER_SPEED_CONFIGURATION 7 + +/** USB 2 */ +#define CH9_USB_DT_INTERFACE_POWER 8 + +#define CH9_USB_DT_OTG 9 + +#define CH9_USB_DT_DEBUG 10 + +#define CH9_USB_DT_INTERFACE_ASSOCIATION 11 + +#define CH9_USB_DT_BOS 15 + +#define CH9_USB_DT_DEVICE_CAPABILITY 16 + +#define CH9_USB_DT_SS_USB_ENDPOINT_COMPANION 48 + +#define CH9_USB_DT_SS_PLUS_ISOCHRONOUS_ENDPOINT_COMPANION 49 + +#define CH9_USB_DT_OTG 9 + +/** Descriptor size */ +#define CH9_USB_DS_DEVICE 18 + +#define CH9_USB_DS_BOS 5 + +#define CH9_USB_DS_DEVICE_ACM 12 + +/** Capability type: USB 2.0 EXTENSION */ +#define CH9_USB_DS_DEVICE_CAPABILITY_20 7 + +/** Capability type: SUPERSPEED_USB */ +#define CH9_USB_DS_DEVICE_CAPABILITY_30 10 + +/** Capability type: CONTAINER_ID */ +#define CH9_USB_DS_DEVICE_CAPABILITY_CONTAINER_ID 21 + +/** Capability type: Capability type: PRECISION_TIME_MEASUREMENT */ +#define CH9_USB_DS_DEVICE_CAPABILITY_PRECISION_TIME_MEASUREMENT 4 + +#define CH9_USB_DS_CONFIGURATION 9 + +#define CH9_USB_DS_INTERFACE_ASSOCIATION 8 + +#define CH9_USB_DS_SS_USB_ENDPOINT_COMPANION 6 + +#define CH9_USB_DS_SS_PLUS_ISOCHRONOUS_ENDPOINT_COMPANION 8 + +#define CH9_USB_DS_INTERFACE 9 + +#define CH9_USB_DS_ENDPOINT 7 + +#define CH9_USB_DS_STRING 3 + +#define CH9_USB_DS_OTG 5 + +/** USB2 */ +#define CH9_USB_DS_DEVICE_QUALIFIER 10 + +/** USB2 */ +#define CH9_USB_DS_OTHER_SPEED_CONFIGURATION 7 + +#define CH9_USB_DS_INTERFACE_POWER 8 + +/** Standard Feature Selectors (chapter 9.4, Table 9-7 of USB Spec) */ +#define CH9_USB_FS_ENDPOINT_HALT 0 + +#define CH9_USB_FS_FUNCTION_SUSPEND 0 + +#define CH9_USB_FS_DEVICE_REMOTE_WAKEUP 1 + +#define CH9_USB_FS_TEST_MODE 2 + +#define CH9_USB_FS_B_HNP_ENABLE 3 + +#define CH9_USB_FS_A_HNP_SUPPORT 4 + +#define CH9_USB_FS_A_ALT_HNP_SUPPORT 5 + +#define CH9_USB_FS_WUSB_DEVICE 6 + +#define CH9_USB_FS_U1_ENABLE 48 + +#define CH9_USB_FS_U2_ENABLE 49 + +#define CH9_USB_FS_LTM_ENABLE 50 + +#define CH9_USB_FS_B3_NTF_HOST_REL 51 + +#define CH9_USB_FS_B3_RESP_ENABLE 52 + +#define CH9_USB_FS_LDM_ENABLE 53 + +/** Recipient Device (Figure 9-4 of USB Spec) */ +#define CH9_USB_STATUS_DEV_SELF_POWERED (1 << 0) + +#define CH9_USB_STATUS_DEV_REMOTE_WAKEUP (1 << 1) + +#define CH9_USB_STATUS_DEV_U1_ENABLE (1 << 2) + +#define CH9_USB_STATUS_DEV_U2_ENABLE (1 << 3) + +#define CH9_USB_STATUS_DEV_LTM_ENABLE (1 << 4) + +/** Recipient Interface (Figure 9-5 of USB Spec) */ +#define CH9_USB_STATUS_INT_REMOTE_WAKE_CAPABLE (1 << 0) + +#define CH9_USB_STATUS_INT_REMOTE_WAKEUP (1 << 1) + +/** Recipient Endpoint (Figure 9-6 of USB Spec) */ +#define CH9_USB_STATUS_EP_HALT (1 << 1) + +/** Recipient Endpoint - PTM GetStatus Request(Figure 9-7 of USB Spec) */ +#define CH9_USB_STATUS_EP_PTM_ENABLE (1 << 0) + +#define CH9_USB_STATUS_EP_PTM_VALID (1 << 1) + +#define CH9_USB_STATUS_EP_PTM_LINK_DELAY_OFFSET (16) + +#define CH9_USB_STATUS_EP_PTM_LINK_DELAY_MASK (0xFFFF << 16) + +/** + * Macros describing information for SetFeauture Request and FUCTION_SUSPEND selector + * (chapter 9.4.9, Table 9-9 of USB Spec) + */ +#define CH9_USB_SF_LOW_POWER_SUSPEND_STATE 0x1 + +#define CH9_USB_SF_REMOTE_WAKE_ENABLED 0x2 + +/** + * Standard Class Code defined by usb.org + * (link: http://www.usb.org/developers/defined_class) + */ +#define CH9_USB_CLASS_INTERFACE 0x0 + +#define CH9_USB_CLASS_AUDIO 0x01 + +#define CH9_USB_CLASS_CDC 0x02 + +#define CH9_USB_CLASS_COMMUNICATION 0x01 + +#define CH9_USB_CLASS_HID 0x03 + +#define CH9_USB_CLASS_PHYSICAL 0x05 + +#define CH9_USB_CLASS_IMAGE 0x06 + +#define CH9_USB_CLASS_PRINTER 0x07 + +#define CH9_USB_CLASS_MASS_STORAGE 0x08 + +#define CH9_USB_CLASS_HUB 0x09 + +#define CH9_USB_CLASS_CDC_DATA 0x0A + +#define CH9_USB_CLASS_SMART_CARD 0x0B + +#define CH9_USB_CLASS_CONTENT_SEECURITY 0x0D + +#define CH9_USB_CLASS_VIDEO 0x0E + +#define CH9_USB_CLASS_HEALTHCARE 0x0F + +#define CH9_USB_CLASS_AUDIO_VIDEO 0x10 + +#define CH9_USB_CLASS_DIAGNOSTIC 0xDC + +#define CH9_USB_CLASS_WIRELESS 0xE0 + +#define CH9_USB_CLASS_MISCELLANEOUS 0xEF + +#define CH9_USB_CLASS_APPLICATION 0xFE + +#define CH9_USB_CLASS_VENDOR 0xFF + +/** Device Capability Types Codes (see Table 9-14 of USB Spec 3.1 */ +#define CH9_USB_DCT_WIRELESS_USB 0x01 + +#define CH9_USB_DCT_USB20_EXTENSION 0x02 + +#define CH9_USB_DCT_SS_USB 0x03 + +#define CH9_USB_DCT_CONTAINER_ID 0x04 + +#define CH9_USB_DCT_PLATFORM 0x05 + +#define CH9_USB_DCT_POWER_DELIVERY_CAPABILITY 0x06 + +#define CH9_USB_DCT_BATTERY_INFO_CAPABILITY 0x07 + +#define CH9_USB_DCT_PD_CONSUMER_PORT_CAPABILITY 0x08 + +#define CH9_USB_DCT_PD_PROVIDER_PORT_CAPABILITY 0x09 + +#define CH9_USB_DCT_SS_PLUS 0x0A + +#define CH9_USB_DCT_PRECISION_TIME_MEASUREMENT 0x0B + +#define CH9_USB_DCT_WIRELESS_USB_EXT 0x0C + +/** Describe supports LPM defined in bmAttribues field of CUSBD_Usb20ExtensionDescriptor */ +#define CH9_USB_USB20_EXT_LPM_SUPPORT (1 << 1) + +#define CH9_USB_USB20_EXT_BESL_AND_ALTERNATE_HIRD (1 << 2) + +/** + * Describe supports LTM defined in bmAttribues field + * of CUSBD_UsbSuperSpeedDeviceCapabilityDescriptor + */ +#define CH9_USB_SS_CAP_LTM (1 << 1) + +/** + * Describe speed supported defined in wSpeedSupported field + * of CUSBD_UsbSuperSpeedDeviceCapabilityDescriptor + */ +#define CH9_USB_SS_CAP_SUPPORT_LS (1 << 0) + +#define CH9_USB_SS_CAP_SUPPORT_FS (1 << 1) + +#define CH9_USB_SS_CAP_SUPPORT_HS (1 << 2) + +#define CH9_USB_SS_CAP_SUPPORT_SS (1 << 3) + +/** Describe encoding of bmSublinkSpeedAttr0 filed from CUSBD_UsbSuperSpeedPlusDescriptor */ +#define CH9_USB_SSP_SID_OFFSET 0 + +#define CH9_USB_SSP_SID_MASK (0 0x0000000f) + +#define CH9_USB_SSP_LSE_OFFSET 4 + +#define CH9_USB_SSP_LSE_MASK (0x00000003 << CUSBD_USB_SSP_LSE_OFFSET) + +#define CH9_USB_SSP_ST_OFFSET 6 + +#define CH9_USB_SSP_ST_MASK (0x00000003 << CUSBD_USB_SSP_ST_OFFSET) + +#define CH9_USB_SSP_LP_OFFSET 14 + +#define CH9_USB_SSP_LP_MASK (0x00000003 << CUSBD_USB_SSP_LP_OFFSET) + +#define CH9_USB_SSP_LSM_OFFSET 16 + +#define CH9_USB_SSP_LSM_MASK (0x0000FFFF << CUSBD_USB_SSP_LSM_OFFSET) + +/** Description of bmAttributes field from Configuration Description */ +#define CH9_USB_CONFIG_RESERVED (1 << 7) + +/** Self Powered */ +#define CH9_USB_CONFIG_SELF_POWERED (1 << 6) + +#define CH9_USB_CONFIG_BUS_POWERED (1 << 7) + +/** Remote Wakeup */ +#define CH9_USB_CONFIG_REMOTE_WAKEUP (1 << 5) + +/** Definitions for bEndpointAddress field from Endpoint descriptor */ +#define CH9_USB_EP_DIR_MASK 0x80 + +#define CH9_USB_EP_DIR_IN 0x80 + +#define CH9_USB_EP_NUMBER_MASK 0x0f + +/** Endpoint attributes from Endpoint descriptor - bmAttributes field */ +#define CH9_USB_EP_TRANSFER_MASK 0x03 + +#define CH9_USB_EP_CONTROL 0x0 + +#define CH9_USB_EP_ISOCHRONOUS 0x01 + +#define CH9_USB_EP_BULK 0x02 + +#define CH9_USB_EP_INTERRUPT 0x03 + +/** Synchronization types for ISOCHRONOUS endpoints */ +#define CH9_USB_EP_SYNC_MASK 0xC + +#define CH9_USB_EP_SYNC_NO (0x00 >> 2) + +#define CH9_USB_EP_SYNC_ASYNCHRONOUS (0x1 >> 2) + +#define CH9_USB_EP_SYNC_ADAPTIVE (0x02 >> 2) + +#define CH9_USB_EP_SYNC_SYNCHRONOUS (0x03 >> 2) + +#define CH9_USB_EP_USAGE_MASK (0x3 >> 4) + +/** Usage types for ISOCHRONOUS endpoints */ +#define CH9_USB_EP_USAGE_DATA (00 >> 4) + +#define CH9_USB_EP_USAGE_FEEDBACK (0x01 >> 4) + +#define CH9_USB_EP_USAGE_IMPLICIT_FEEDBACK (0x02 >> 4) + +/** Usage types for INTERRUPTS endpoints */ +#define CH9_USB_EP_USAGE_PERIODIC (00 >> 4) + +#define CH9_USB_EP_USAGE_NOTIFICATION (0x01 >> 4) + +/** Description of fields bmAttributes from OTG descriptor */ +#define CH9_USB_OTG_ADP_MASK 0x4 + +#define CH9_USB_OTG_HNP_MASK 0x2 + +#define CH9_USB_OTG_SRP_MASK 0x1 + +/** + * Test Mode Selectors + * See USB 2.0 spec Table 9-7 + */ +#define CH9_TEST_J 1 + +#define CH9_TEST_K 2 + +#define CH9_TEST_SE0_NAK 3 + +#define CH9_TEST_PACKET 4 + +#define CH9_TEST_FORCE_EN 5 + +#define CH9_MAX_PACKET_SIZE_MASK 0x7ff + +#define CH9_PACKET_PER_FRAME_SHIFT 11 + +/** + * OTG status selector + * See USB_OTG_AND_EH_2-0 spec Table 6-4 + */ +#define CH9_OTG_STATUS_SELECTOR 0xF000 + +/** + * @} + */ + +/* Conventional codes for class-specific descriptors. The convention is + * defined in the USB "Common Class" Spec (3.11). Individual class specs + * are authoritative for their usage, not the "common class" writeup. + */ +#define USB_DT_CS_DEVICE (CH9_USB_REQ_TYPE_CLASS | CH9_USB_DT_DEVICE) +#define USB_DT_CS_CONFIG (CH9_USB_REQ_TYPE_CLASS | CH9_USB_DT_CONFIG) +#define USB_DT_CS_STRING (CH9_USB_REQ_TYPE_CLASS | CH9_USB_DT_STRING) +#define USB_DT_CS_INTERFACE (CH9_USB_REQ_TYPE_CLASS | CH9_USB_DT_INTERFACE) +#define USB_DT_CS_ENDPOINT (CH9_USB_REQ_TYPE_CLASS | CH9_USB_DT_ENDPOINT) + +/** @defgroup DataStructure Dynamic Data Structures + * This section defines the data structures used by the driver to provide + * hardware information, modification and dynamic operation of the driver. + * These data structures are defined in the header file of the core driver + * and utilized by the API. + * @{ + */ + +/********************************************************************** + * Forward declarations + **********************************************************************/ +struct CH9_UsbSetup; +struct CH9_UsbDeviceDescriptor; +struct CH9_UsbBosDescriptor; +struct CH9_UsbCapabilityDescriptor; +struct CH9_Usb20ExtensionDescriptor; +struct CH9_UsbSSDeviceCapabilityDescriptor; +struct CH9_UsbContainerIdDescriptor; +struct CH9_UsbPlatformDescriptor; +struct CH9_UsbSSPlusDescriptor; +struct CH9_UsbPTMCapabilityDescriptor; +struct CH9_UsbConfigurationDescriptor; +struct CH9_UsbInterfaceAssociationDescriptor; +struct CH9_UsbInterfaceDescriptor; +struct CH9_UsbEndpointDescriptor; +struct CH9_UsbSSEndpointCompanionDescriptor; +struct CH9_UsbSSPlusIsocEndpointCompanionDescriptor; +struct CH9_UsbStringDescriptor; +struct CH9_UsbDeviceQualifierDescriptor; +struct CH9_UsbOtherSpeedConfigurationDescriptor; +struct CH9_UsbHeaderDescriptor; +struct CH9_UsbOtgDescriptor; +struct CH9_ConfigParams; + +/********************************************************************** + * Enumerations + **********************************************************************/ +/** USB States defined in USB Specification */ +TYPEDEF enum { + /** Device not attached yet */ + CH9_USB_STATE_NONE = 0, + /** see Figure 9-1 of USB Spec */ + CH9_USB_STATE_ATTACHED = 1, + CH9_USB_STATE_POWERED = 2, + CH9_USB_STATE_DEFAULT = 3, + CH9_USB_STATE_ADDRESS = 4, + CH9_USB_STATE_CONFIGURED = 5, + CH9_USB_STATE_SUSPENDED = 6, + CH9_USB_STATE_ERROR = 7, +} CH9_UsbState; + +/** Speeds defined in USB Specification */ +TYPEDEF enum { + /** unknow speed - before enumeration */ + CH9_USB_SPEED_UNKNOWN = 0, + /** (1,5Mb/s) */ + CH9_USB_SPEED_LOW = 1, + /** usb 1.1 (12Mb/s) */ + CH9_USB_SPEED_FULL = 2, + /** usb 2.0 (480Mb/s) */ + CH9_USB_SPEED_HIGH = 3, + /** usb 2.5 wireless */ + CH9_USB_SPEED_WIRELESS = 4, + /** usb 3.0 GEN 1 (5Gb/s) */ + CH9_USB_SPEED_SUPER = 5, + /** usb 3.1 GEN2 (10Gb/s) */ + CH9_USB_SPEED_SUPER_PLUS = 6, +} CH9_UsbSpeed; + +/********************************************************************** + * Structures and unions + **********************************************************************/ +/** Structure describes USB request (SETUP packet). See USB Specification (chapter 9.3) */ +TYPEDEF struct CH9_UsbSetup { + /** Characteristics of request */ + uint8_t bmRequestType; + /** Specific request */ + uint8_t bRequest; + /** Field that varies according to request */ + uint16_t wValue; + /** typically used to pass an index or offset. */ + uint16_t wIndex; + /** Number of bytes to transfer if there is a data stage */ + uint16_t wLength; +} __packed __aligned(__alignof__(unsigned long)) CH9_UsbSetup; + +/** Standard Device Descriptor (see Table 9-11 of USB Spec 3.1) */ +TYPEDEF struct CH9_UsbDeviceDescriptor { + /** Size of descriptor */ + uint8_t bLength; + /** Device descriptor type */ + uint8_t bDescriptorType; + /** USB Specification Release Number */ + uint16_t bcdUSB; + /** Class code (assigned by the USB-IF) */ + uint8_t bDeviceClass; + /** Subclass code (assigned by the USB-IF */ + uint8_t bDeviceSubClass; + /** Protocol code (assigned by the USB-IF */ + uint8_t bDeviceProtocol; + /** Maximum packet size for endpoint zero */ + uint8_t bMaxPacketSize0; + /** Vendor ID (assigned by the USB-IF */ + uint16_t idVendor; + /** Product ID (assigned by manufacturer) */ + uint16_t idProduct; + /** Device release number */ + uint16_t bcdDevice; + /** Index of string descriptor describing manufacturer */ + uint8_t iManufacturer; + /** Index of string descriptor describing product */ + uint8_t iProduct; + /** Index of string descriptor for serial number */ + uint8_t iSerialNumber; + /** Number of possible configurations */ + uint8_t bNumConfigurations; +} __packed CH9_UsbDeviceDescriptor; + +/** Binary Device Object Store descriptor (see Table 9-12 of USB Spec 3.1) */ +TYPEDEF struct CH9_UsbBosDescriptor { + /** Size of this descriptor */ + uint8_t bLength; + /** Descriptor type: BOS */ + uint8_t bDescriptorType; + /** Length of this descriptor and all of its sub descriptors */ + uint16_t wTotalLength; + /** The number of separate device capability descriptors in the BOS */ + uint8_t bNumDeviceCaps; +} __packed CH9_UsbBosDescriptor; + +/** Device Capability Descriptor (see Table 9-12 of USB Spec 3.1) */ +TYPEDEF struct CH9_UsbCapabilityDescriptor { + /** Size of this descriptor */ + uint8_t bLength; + /** Descriptor type: DEVICE CAPABILITY type */ + uint8_t bDescriptorType; + /** Capability type: USB 2.0 EXTENSION (002h) */ + uint8_t bDevCapabilityType; + /** Capability specific format */ + uint32_t bmAttributes; +} __packed CH9_UsbCapabilityDescriptor; + +/** USB 2.0 Extension Descriptor (see Table 9-15 of USB Spec 3.1) */ +TYPEDEF struct CH9_Usb20ExtensionDescriptor { + /** Size of this descriptor */ + uint8_t bLength; + /** Descriptor type: DEVICE CAPABILITY type */ + uint8_t bDescriptorType; + /** Capability type: USB 2.0 EXTENSION (002h) */ + uint8_t bDevCapabilityType; + /** Capability specific format */ + uint32_t bmAttributes; +} __packed CH9_Usb20ExtensionDescriptor; + +/** SuperSpeed USB Device Capability Descriptor (see Table 9-16 of USB Spec 3.1) */ +TYPEDEF struct CH9_UsbSSDeviceCapabilityDescriptor { + /** Size of this descriptor */ + uint8_t bLength; + /** DEVICE CAPABILITY Descriptor type */ + uint8_t bDescriptorType; + /** Capability type: SUPERSPEED_USB */ + uint8_t bDevCapabilityType; + /** Bitmap encoding of supported device level features */ + uint8_t bmAttributes; + /** Bitmap encoding of the speed supported by device */ + uint16_t wSpeedSupported; + /** + * The lowest speed at which all the functionality + * supported by the device is available to the user + */ + uint8_t vFunctionalitySupport; + /** U1 Device Exit Latency */ + uint8_t bU1DevExitLat; + /** U2 Device Exit Latency */ + uint16_t bU2DevExitLat; +} __packed CH9_UsbSSDeviceCapabilityDescriptor; + +/** Container ID Descriptor (see Table 9-17 of USB Spec 3.1) */ +TYPEDEF struct CH9_UsbContainerIdDescriptor { + /** Size of this descriptor */ + uint8_t bLength; + /** DEVICE CAPABILITY Descriptor type */ + uint8_t bDescriptorType; + /** Capability type: CONTAINER_ID */ + uint8_t bDevCapabilityType; + /** Field reserved and shall be set to zero */ + uint8_t bReserved; + /** unique number to device instance */ + uint8_t ContainerId[16]; +} __packed CH9_UsbContainerIdDescriptor; + +TYPEDEF struct CH9_UsbPlatformDescriptor { + /** Size of this descriptor */ + uint8_t bLength; + /** DEVICE CAPABILITY Descriptor type */ + uint8_t bDescriptorType; + /** Capability type: PLATFORM */ + uint8_t bDevCapabilityType; + /** Field reserved and shall be set to zero */ + uint8_t bReserved; + /** unique number to identifies a platform */ + uint8_t PlatformCapabilityUUID[16]; + /** variable length */ + uint8_t CapabilityData[0]; +} __packed CH9_UsbPlatformDescriptor; + +/** SuperSpeedPlus USB Device Capability (see Table 9-19 of USB Spec 3.1) */ +TYPEDEF struct CH9_UsbSSPlusDescriptor { + /** Size of this descriptor */ + uint8_t bLength; + /** DEVICE CAPABILITY Descriptor type */ + uint8_t bDescriptorType; + /** Capability type: SUPERSPEED_PLUS */ + uint8_t bDevCapabilityType; + /** Field reserved and shall be set to zero */ + uint8_t bReserved; + /** Bitmap encoding of supported SuperSpeedPlus features */ + uint32_t bmAttributes; + /** supported functionality */ + uint16_t wFunctionalitySupport; + /** Reserved. Shall be set to zero */ + uint16_t wReserved; + /** Sublink Speed Attribute */ + uint32_t bmSublinkSpeedAttr0; + /** Additional Lane Speed Attributes */ + uint32_t bmSublinkSpeedAttrSSAC; +} __packed CH9_UsbSSPlusDescriptor; + +/** SuperSpeedPlus USB Device Capability (see Table 9-19 of USB Spec 3.1) */ +TYPEDEF struct CH9_UsbPTMCapabilityDescriptor { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bDevCapabilityType; +} __packed CH9_UsbPTMCapabilityDescriptor; + +/** Standard Configuration Descriptor (see Table 9-21 of USB Spec 3.1) */ +TYPEDEF struct CH9_UsbConfigurationDescriptor { + /** Size of descriptor */ + uint8_t bLength; + /** Configuration descriptor type */ + uint8_t bDescriptorType; + /** Total length of configuration */ + uint16_t wTotalLength; + /** Number of interfaces supported by configuration */ + uint8_t bNumInterfaces; + /** Value use as an argument to SetConfiguration() request */ + uint8_t bConfigurationValue; + /** Index of string descriptor describing this configuration */ + uint8_t iConfiguration; + /** Configuration attributes */ + uint8_t bmAttributes; + /** Maximum power consumption of the USB device */ + uint8_t bMaxPower; +} __packed CH9_UsbConfigurationDescriptor; + +/** Standard Interface Association Descriptor (see Table 9-22 of USB Spec 3.1) */ +TYPEDEF struct CH9_UsbInterfaceAssociationDescriptor { + /** Size of descriptor */ + uint8_t bLength; + /** Interface Association Descriptor Type */ + uint8_t bDescriptorType; + /** interface number of this interface that is associated with this function */ + uint8_t bFirstInterface; + /** Number of contiguous interfaces that are associated with this function */ + uint8_t bInterfaceCount; + /** Class code assigned by USB-IF */ + uint8_t bFunctionClass; + /** Subclass code */ + uint8_t bFunctionSubClass; + /** Protocol code */ + uint8_t bFunctionProtocol; + /** Index of string descriptor describing this function */ + uint8_t iFunction; +} __packed CH9_UsbInterfaceAssociationDescriptor; + +/** Standard Interface Descriptor (see Table 9-23 of USB Spec 3.1) */ +TYPEDEF struct CH9_UsbInterfaceDescriptor { + /** Size of descriptor */ + uint8_t bLength; + /** Interface Descriptor Type */ + uint8_t bDescriptorType; + /** Number of this interface */ + uint8_t bInterfaceNumber; + /** Value used to select this alternate setting */ + uint8_t bAlternateSetting; + /** Class code */ + uint8_t bNumEndpoints; + /** Subclass code */ + uint8_t bInterfaceClass; + /** Subclass code */ + uint8_t bInterfaceSubClass; + /** Protocol code */ + uint8_t bInterfaceProtocol; + /** Index of string */ + uint8_t iInterface; +} __packed CH9_UsbInterfaceDescriptor; + +#define USB_DT_INTERFACE_SIZE 9 + +#define USB_DIR_OUT 0 /* to device */ +#define USB_DIR_IN 0x80 /* to host */ +/** Standard Endpoint Descriptor */ +TYPEDEF struct CH9_UsbEndpointDescriptor { + /** Size of descriptor */ + uint8_t bLength; + /** Endpoint Descriptor Type */ + uint8_t bDescriptorType; + /** The address of the endpoint */ + uint8_t bEndpointAddress; + /** Endpoint attribute */ + uint8_t bmAttributes; + /** Maximum packet size for this endpoint */ + uint16_t wMaxPacketSize; + /** interval for polling endpoint data transfer */ + uint8_t bInterval; +} __packed CH9_UsbEndpointDescriptor; + +#define USB_DT_ENDPOINT_SIZE 7 +#define USB_DT_ENDPOINT_AUDIO_SIZE 9 /* Audio extension */ + +/** Standard SuperSpeed Endpoint Companion Descriptor (see Table 9-26 of USB Spec 3.1) */ +TYPEDEF struct CH9_UsbSSEndpointCompanionDescriptor { + /** Size of descriptor in bytes */ + uint8_t bLength; + /** SUPERSPEED_USB_ENDPOINT_COMPANION Descriptor types */ + uint8_t bDescriptorType; + /** Number of packets that endpoint can transmit as part of burst */ + uint8_t bMaxBurst; + uint8_t bmAttributes; + /** The total number of bytes for every service interval */ + uint16_t wBytesPerInterval; +} __packed CH9_UsbSSEndpointCompanionDescriptor; + +/** + * Standard SuperSpeedPlus Isochronous Endpoint + * Companion Descriptor (see Table 9-27 of USB Spec 3.1) + */ +TYPEDEF struct CH9_UsbSSPlusIsocEndpointCompanionDescriptor { + /** Size of descriptor in bytes */ + uint8_t bLength; + /** SUPERSPEEDPLUS_ISOCHRONOUS_ENDPOINT_COMPANION Descriptor types */ + uint8_t bDescriptorType; + /** Reserved. Shall be set to zero */ + uint16_t wReserved; + /** The total number of bytes for every service interval */ + uint32_t dwBytesPerInterval; +} __packed CH9_UsbSSPlusIsocEndpointCompanionDescriptor; + +/** Standard String Descriptor */ +TYPEDEF struct CH9_UsbStringDescriptor { + /** Size of descriptor */ + uint8_t bLength; + /** STRING Descriptor Type */ + uint8_t bDescriptorType; + /** UNICODE encoded string */ + uint8_t *bString; +} __packed CH9_UsbStringDescriptor; + +/** Standard Device Qualifier Descriptor (see Table 9-9 of USB Spec 2.0) */ +TYPEDEF struct CH9_UsbDeviceQualifierDescriptor { + /** Size of descriptor */ + uint8_t bLength; + /** Device Qualifier type */ + uint8_t bDescriptorType; + /** USB Specification version number */ + uint16_t bcdUSB; + /** Class code */ + uint8_t bDeviceClass; + /** Subclass code */ + uint8_t bDeviceSubClass; + /** Protocol code */ + uint8_t bDeviceProtocol; + /** Maximum packet size for other speed */ + uint8_t bMaxPacketSize0; + /** Number of other speed configuration */ + uint8_t bNumConfigurations; + /** Reserved for future use */ + uint8_t bReserved; +} __packed CH9_UsbDeviceQualifierDescriptor; + +/** Standard Other_Speed_Configuration descriptor (see Table 9-11 of USB Spec 2.0) */ +TYPEDEF struct CH9_UsbOtherSpeedConfigurationDescriptor { + /** Size of descriptor */ + uint8_t bLength; + /** Configuration descriptor type */ + uint8_t bDescriptorType; + /** Total length of configuration */ + uint16_t wTotalLength; + /** Number of interfaces supported by this speed configuration */ + uint8_t bNumInterfaces; + /** Value to use to select configuration */ + uint8_t bConfigurationValue; + /** Index of string descriptor describing this configuration */ + uint8_t iConfiguration; + /** Configuration attributes */ + uint8_t bmAttributes; + /** Maximum power consumption of the USB device */ + uint8_t bMaxPower; +} __packed CH9_UsbOtherSpeedConfigurationDescriptor; + +/** + * Header descriptor. All descriptor have the same header that + * consist of bLength and bDescriptorType fields + */ +TYPEDEF struct CH9_UsbHeaderDescriptor { + /** Size of descriptor */ + uint8_t bLength; + /** descriptor Type */ + uint8_t bDescriptorType; +} __packed CH9_UsbHeaderDescriptor; + +/** OTG descriptor (see OTG spec. Table 6.1) */ +TYPEDEF struct CH9_UsbOtgDescriptor { + /** Size of descriptor */ + uint8_t bLength; + /** OTG Descriptor Type */ + uint8_t bDescriptorType; + /** Attribute field */ + uint8_t bmAttributes; + /** OTG and EH supplement release number */ + uint16_t bcdOTG; +} __packed CH9_UsbOtgDescriptor; + +/** + * @} + */ + + +#endif /* DWC2_CH9_H */ diff --git a/fsbl/plat/cv180x/include/usb/dwc2_drv_if.h b/fsbl/plat/cv180x/include/usb/dwc2_drv_if.h new file mode 100644 index 000000000..0f9b9f8a5 --- /dev/null +++ b/fsbl/plat/cv180x/include/usb/dwc2_drv_if.h @@ -0,0 +1,823 @@ +#ifndef DWC2_DRV_IF_H +#define DWC2_DRV_IF_H + +#include +#include + +#define TYPEDEF typedef + +TYPEDEF unsigned int dma_addr_t; + +//#define USB_IRQ_MODE 1 + +struct usb_ep; + +/** + * struct usb_request - describes one i/o request + * @buf: Buffer used for data. Always provide this; some controllers + * only use PIO, or don't use DMA for some endpoints. + * @dma: DMA address corresponding to 'buf'. If you don't set this + * field, and the usb controller needs one, it is responsible + * for mapping and unmapping the buffer. + * @stream_id: The stream id, when USB3.0 bulk streams are being used + * @length: Length of that data + * @no_interrupt: If true, hints that no completion irq is needed. + * Helpful sometimes with deep request queues that are handled + * directly by DMA controllers. + * @zero: If true, when writing data, makes the last packet be "short" + * by adding a zero length packet as needed; + * @short_not_ok: When reading data, makes short packets be + * treated as errors (queue stops advancing till cleanup). + * @complete: Function called when request completes, so this request and + * its buffer may be re-used. + * Reads terminate with a short packet, or when the buffer fills, + * whichever comes first. When writes terminate, some data bytes + * will usually still be in flight (often in a hardware fifo). + * Errors (for reads or writes) stop the queue from advancing + * until the completion function returns, so that any transfers + * invalidated by the error may first be dequeued. + * @context: For use by the completion callback + * @list: For use by the gadget driver. + * @status: Reports completion code, zero or a negative errno. + * Normally, faults block the transfer queue from advancing until + * the completion callback returns. + * Code "-ESHUTDOWN" indicates completion caused by device disconnect, + * or when the driver disabled the endpoint. + * @actual: Reports bytes transferred to/from the buffer. For reads (OUT + * transfers) this may be less than the requested length. If the + * short_not_ok flag is set, short reads are treated as errors + * even when status otherwise indicates successful completion. + * Note that for writes (IN transfers) some data bytes may still + * reside in a device-side FIFO when the request is reported as + * complete. + * + * These are allocated/freed through the endpoint they're used with. The + * hardware's driver can add extra per-request data to the memory it returns, + * which often avoids separate memory allocations (potential failures), + * later when the request is queued. + * + * Request flags affect request handling, such as whether a zero length + * packet is written (the "zero" flag), whether a short read should be + * treated as an error (blocking request queue advance, the "short_not_ok" + * flag), or hinting that an interrupt is not required (the "no_interrupt" + * flag, for use with deep request queues). + * + * Bulk endpoints can use any size buffers, and can also be used for interrupt + * transfers. interrupt-only endpoints can be much less functional. + * + * NOTE: this is analagous to 'struct urb' on the host side, except that + * it's thinner and promotes more pre-allocation. + */ + +struct usb_request { + struct list_head list; + void *buf; + unsigned int length; + dma_addr_t dma; + unsigned int rxfifo_cnt; + + unsigned int stream_id:16; + unsigned int no_interrupt:1; + unsigned int zero:1; + unsigned int short_not_ok:1; + + void (*complete)(struct usb_ep *ep, + struct usb_request *req); + void *context; + + int status; + unsigned int actual; +}; + +/*-------------------------------------------------------------------------*/ + +/* endpoint-specific parts of the api to the usb controller hardware. + * unlike the urb model, (de)multiplexing layers are not required. + * (so this api could slash overhead if used on the host side...) + * + * note that device side usb controllers commonly differ in how many + * endpoints they support, as well as their capabilities. + */ +struct usb_ep_ops { + int (*enable)(struct usb_ep *ep, + const CH9_UsbEndpointDescriptor *desc); + int (*disable)(struct usb_ep *ep); + + struct usb_request *(*alloc_request)(struct usb_ep *ep); + void (*free_request)(struct usb_ep *ep, struct usb_request *req); + + int (*queue)(struct usb_ep *ep, struct usb_request *req); + int (*dequeue)(struct usb_ep *ep, struct usb_request *req); + + int (*set_halt)(struct usb_ep *ep, int value); + int (*set_wedge)(struct usb_ep *ep); + int (*fifo_status)(struct usb_ep *ep); + void (*fifo_flush)(struct usb_ep *ep); +}; + +/** + * struct usb_ep - device side representation of USB endpoint + * @name:identifier for the endpoint, such as "ep-a" or "ep9in-bulk" + * @ops: Function pointers used to access hardware-specific operations. + * @ep_list:the gadget's ep_list holds all of its endpoints + * @maxpacket:The maximum packet size used on this endpoint. The initial + * value can sometimes be reduced (hardware allowing), according to + * the endpoint descriptor used to configure the endpoint. + * @maxpacket_limit:The maximum packet size value which can be handled by this + * endpoint. It's set once by UDC driver when endpoint is initialized, and + * should not be changed. Should not be confused with maxpacket. + * @max_streams: The maximum number of streams supported + * by this EP (0 - 16, actual number is 2^n) + * @maxburst: the maximum number of bursts supported by this EP (for usb3) + * @driver_data:for use by the gadget driver. all other fields are + * read-only to gadget drivers. + * @desc: endpoint descriptor. This pointer is set before the endpoint is + * enabled and remains valid until the endpoint is disabled. + * @comp_desc: In case of SuperSpeed support, this is the endpoint companion + * descriptor that is used to configure the endpoint + * + * the bus controller driver lists all the general purpose endpoints in + * gadget->ep_list. the control endpoint (gadget->ep0) is not in that list, + * and is accessed only in response to a driver setup() callback. + */ +struct usb_ep { + struct list_head ep_list; /* must be put here! */ + void *driver_data; + const char *name; + const struct usb_ep_ops *ops; + unsigned maxpacket:16; + unsigned maxpacket_limit:16; + unsigned max_streams:16; + unsigned maxburst:5; + const CH9_UsbEndpointDescriptor *desc; +}; + +/*-------------------------------------------------------------------------*/ + +/** + * usb_ep_set_maxpacket_limit - set maximum packet size limit for endpoint + * @ep:the endpoint being configured + * @maxpacket_limit:value of maximum packet size limit + * + * This function shoud be used only in UDC drivers to initialize endpoint + * (usually in probe function). + */ +static inline void usb_ep_set_maxpacket_limit(struct usb_ep *ep, + unsigned int maxpacket_limit) +{ + ep->maxpacket_limit = maxpacket_limit; + ep->maxpacket = maxpacket_limit; +} + +/** + * usb_ep_enable - configure endpoint, making it usable + * @ep:the endpoint being configured. may not be the endpoint named "ep0". + * drivers discover endpoints through the ep_list of a usb_gadget. + * @desc:descriptor for desired behavior. caller guarantees this pointer + * remains valid until the endpoint is disabled; the data byte order + * is little-endian (usb-standard). + * + * when configurations are set, or when interface settings change, the driver + * will enable or disable the relevant endpoints. while it is enabled, an + * endpoint may be used for i/o until the driver receives a disconnect() from + * the host or until the endpoint is disabled. + * + * the ep0 implementation (which calls this routine) must ensure that the + * hardware capabilities of each endpoint match the descriptor provided + * for it. for example, an endpoint named "ep2in-bulk" would be usable + * for interrupt transfers as well as bulk, but it likely couldn't be used + * for iso transfers or for endpoint 14. some endpoints are fully + * configurable, with more generic names like "ep-a". (remember that for + * USB, "in" means "towards the USB master".) + * + * returns zero, or a negative error code. + */ +static inline int usb_ep_enable(struct usb_ep *ep, + const CH9_UsbEndpointDescriptor *desc) +{ + return ep->ops->enable(ep, desc); +} + +/** + * usb_ep_disable - endpoint is no longer usable + * @ep:the endpoint being unconfigured. may not be the endpoint named "ep0". + * + * no other task may be using this endpoint when this is called. + * any pending and uncompleted requests will complete with status + * indicating disconnect (-ESHUTDOWN) before this call returns. + * gadget drivers must call usb_ep_enable() again before queueing + * requests to the endpoint. + * + * returns zero, or a negative error code. + */ +static inline int usb_ep_disable(struct usb_ep *ep) +{ + return ep->ops->disable(ep); +} + +/** + * usb_ep_alloc_request - allocate a request object to use with this endpoint + * @ep:the endpoint to be used with the request + * @gfp_flags:GFP_* flags to use + * + * Request objects must be allocated with this call, since they normally + * need controller-specific setup and may even need endpoint-specific + * resources such as allocation of DMA descriptors. + * Requests may be submitted with usb_ep_queue(), and receive a single + * completion callback. Free requests with usb_ep_free_request(), when + * they are no longer needed. + * + * Returns the request, or null if one could not be allocated. + */ +static inline struct usb_request *usb_ep_alloc_request(struct usb_ep *ep) +{ + return ep->ops->alloc_request(ep); +} + +/** + * usb_ep_free_request - frees a request object + * @ep:the endpoint associated with the request + * @req:the request being freed + * + * Reverses the effect of usb_ep_alloc_request(). + * Caller guarantees the request is not queued, and that it will + * no longer be requeued (or otherwise used). + */ +static inline void usb_ep_free_request(struct usb_ep *ep, + struct usb_request *req) +{ + ep->ops->free_request(ep, req); +} + +/** + * usb_ep_queue - queues (submits) an I/O request to an endpoint. + * @ep:the endpoint associated with the request + * @req:the request being submitted + * @gfp_flags: GFP_* flags to use in case the lower level driver couldn't + * pre-allocate all necessary memory with the request. + * + * This tells the device controller to perform the specified request through + * that endpoint (reading or writing a buffer). When the request completes, + * including being canceled by usb_ep_dequeue(), the request's completion + * routine is called to return the request to the driver. Any endpoint + * (except control endpoints like ep0) may have more than one transfer + * request queued; they complete in FIFO order. Once a gadget driver + * submits a request, that request may not be examined or modified until it + * is given back to that driver through the completion callback. + * + * Each request is turned into one or more packets. The controller driver + * never merges adjacent requests into the same packet. OUT transfers + * will sometimes use data that's already buffered in the hardware. + * Drivers can rely on the fact that the first byte of the request's buffer + * always corresponds to the first byte of some USB packet, for both + * IN and OUT transfers. + * + * Bulk endpoints can queue any amount of data; the transfer is packetized + * automatically. The last packet will be short if the request doesn't fill it + * out completely. Zero length packets (ZLPs) should be avoided in portable + * protocols since not all usb hardware can successfully handle zero length + * packets. (ZLPs may be explicitly written, and may be implicitly written if + * the request 'zero' flag is set.) Bulk endpoints may also be used + * for interrupt transfers; but the reverse is not true, and some endpoints + * won't support every interrupt transfer. (Such as 768 byte packets.) + * + * Interrupt-only endpoints are less functional than bulk endpoints, for + * example by not supporting queueing or not handling buffers that are + * larger than the endpoint's maxpacket size. They may also treat data + * toggle differently. + * + * Control endpoints ... after getting a setup() callback, the driver queues + * one response (even if it would be zero length). That enables the + * status ack, after transfering data as specified in the response. Setup + * functions may return negative error codes to generate protocol stalls. + * (Note that some USB device controllers disallow protocol stall responses + * in some cases.) When control responses are deferred (the response is + * written after the setup callback returns), then usb_ep_set_halt() may be + * used on ep0 to trigger protocol stalls. + * + * For periodic endpoints, like interrupt or isochronous ones, the usb host + * arranges to poll once per interval, and the gadget driver usually will + * have queued some data to transfer at that time. + * + * Returns zero, or a negative error code. Endpoints that are not enabled + * report errors; errors will also be + * reported when the usb peripheral is disconnected. + */ +static inline int usb_ep_queue(struct usb_ep *ep, + struct usb_request *req) +{ + return ep->ops->queue(ep, req); +} + +/** + * usb_ep_dequeue - dequeues (cancels, unlinks) an I/O request from an endpoint + * @ep:the endpoint associated with the request + * @req:the request being canceled + * + * if the request is still active on the endpoint, it is dequeued and its + * completion routine is called (with status -ECONNRESET); else a negative + * error code is returned. + * + * note that some hardware can't clear out write fifos (to unlink the request + * at the head of the queue) except as part of disconnecting from usb. such + * restrictions prevent drivers from supporting configuration changes, + * even to configuration zero (a "chapter 9" requirement). + */ +static inline int usb_ep_dequeue(struct usb_ep *ep, struct usb_request *req) +{ + return ep->ops->dequeue(ep, req); +} + +/** + * usb_ep_set_halt - sets the endpoint halt feature. + * @ep: the non-isochronous endpoint being stalled + * + * Use this to stall an endpoint, perhaps as an error report. + * Except for control endpoints, + * the endpoint stays halted (will not stream any data) until the host + * clears this feature; drivers may need to empty the endpoint's request + * queue first, to make sure no inappropriate transfers happen. + * + * Note that while an endpoint CLEAR_FEATURE will be invisible to the + * gadget driver, a SET_INTERFACE will not be. To reset endpoints for the + * current altsetting, see usb_ep_clear_halt(). When switching altsettings, + * it's simplest to use usb_ep_enable() or usb_ep_disable() for the endpoints. + * + * Returns zero, or a negative error code. On success, this call sets + * underlying hardware state that blocks data transfers. + * Attempts to halt IN endpoints will fail (returning -EAGAIN) if any + * transfer requests are still queued, or if the controller hardware + * (usually a FIFO) still holds bytes that the host hasn't collected. + */ +static inline int usb_ep_set_halt(struct usb_ep *ep) +{ + return ep->ops->set_halt(ep, 1); +} + +/** + * usb_ep_clear_halt - clears endpoint halt, and resets toggle + * @ep:the bulk or interrupt endpoint being reset + * + * Use this when responding to the standard usb "set interface" request, + * for endpoints that aren't reconfigured, after clearing any other state + * in the endpoint's i/o queue. + * + * Returns zero, or a negative error code. On success, this call clears + * the underlying hardware state reflecting endpoint halt and data toggle. + * Note that some hardware can't support this request (like pxa2xx_udc), + * and accordingly can't correctly implement interface altsettings. + */ +static inline int usb_ep_clear_halt(struct usb_ep *ep) +{ + return ep->ops->set_halt(ep, 0); +} + +/** + * usb_ep_fifo_status - returns number of bytes in fifo, or error + * @ep: the endpoint whose fifo status is being checked. + * + * FIFO endpoints may have "unclaimed data" in them in certain cases, + * such as after aborted transfers. Hosts may not have collected all + * the IN data written by the gadget driver (and reported by a request + * completion). The gadget driver may not have collected all the data + * written OUT to it by the host. Drivers that need precise handling for + * fault reporting or recovery may need to use this call. + * + * This returns the number of such bytes in the fifo, or a negative + * errno if the endpoint doesn't use a FIFO or doesn't support such + * precise handling. + */ +static inline int usb_ep_fifo_status(struct usb_ep *ep) +{ + if (ep->ops->fifo_status) + return ep->ops->fifo_status(ep); + else + return -EOPNOTSUPP; +} + +/** + * usb_ep_fifo_flush - flushes contents of a fifo + * @ep: the endpoint whose fifo is being flushed. + * + * This call may be used to flush the "unclaimed data" that may exist in + * an endpoint fifo after abnormal transaction terminations. The call + * must never be used except when endpoint is not being used for any + * protocol translation. + */ +static inline void usb_ep_fifo_flush(struct usb_ep *ep) +{ + if (ep->ops->fifo_flush) + ep->ops->fifo_flush(ep); +} + + +/*-------------------------------------------------------------------------*/ + +struct usb_gadget; +struct usb_gadget_driver; + +/* the rest of the api to the controller hardware: device operations, + * which don't involve endpoints (or i/o). + */ +struct usb_gadget_ops { + int (*get_frame)(struct usb_gadget *gadget); + int (*wakeup)(struct usb_gadget *gadget); + int (*set_selfpowered)(struct usb_gadget *gadget, int is_selfpowered); + int (*vbus_session)(struct usb_gadget *gadget, int is_active); + int (*vbus_draw)(struct usb_gadget *gadget, unsigned int mA); + int (*pullup)(struct usb_gadget *gadget, int is_on); + int (*ioctl)(struct usb_gadget *gadget, + unsigned int code, unsigned long param); + int (*udc_start)(struct usb_gadget *gadget, + struct usb_gadget_driver *driver); + int (*udc_stop)(struct usb_gadget *gadget); +}; + +/** + * struct usb_gadget - represents a usb slave device + * @ops: Function pointers used to access hardware-specific operations. + * @ep0: Endpoint zero, used when reading or writing responses to + * driver setup() requests + * @ep_list: List of other endpoints supported by the device. + * @speed: Speed of current connection to USB host. + * @max_speed: Maximal speed the UDC can handle. UDC must support this + * and all slower speeds. + * @is_dualspeed: true if the controller supports both high and full speed + * operation. If it does, the gadget driver must also support both. + * @is_otg: true if the USB device port uses a Mini-AB jack, so that the + * gadget driver must provide a USB OTG descriptor. + * @is_a_peripheral: false unless is_otg, the "A" end of a USB cable + * is in the Mini-AB jack, and HNP has been used to switch roles + * so that the "A" device currently acts as A-Peripheral, not A-Host. + * @a_hnp_support: OTG device feature flag, indicating that the A-Host + * supports HNP at this port. + * @a_alt_hnp_support: OTG device feature flag, indicating that the A-Host + * only supports HNP on a different root port. + * @b_hnp_enable: OTG device feature flag, indicating that the A-Host + * enabled HNP support. + * @name: Identifies the controller hardware type. Used in diagnostics + * and sometimes configuration. + * @dev: Driver model state for this abstract device. + * @quirk_ep_out_aligned_size: epout requires buffer size to be aligned to + * MaxPacketSize. + * + * Gadgets have a mostly-portable "gadget driver" implementing device + * functions, handling all usb configurations and interfaces. Gadget + * drivers talk to hardware-specific code indirectly, through ops vectors. + * That insulates the gadget driver from hardware details, and packages + * the hardware endpoints through generic i/o queues. The "usb_gadget" + * and "usb_ep" interfaces provide that insulation from the hardware. + * + * Except for the driver data, all fields in this structure are + * read-only to the gadget driver. That driver data is part of the + * "driver model" infrastructure in 2.6 (and later) kernels, and for + * earlier systems is grouped in a similar structure that's not known + * to the rest of the kernel. + * + * Values of the three OTG device feature flags are updated before the + * setup() call corresponding to USB_REQ_SET_CONFIGURATION, and before + * driver suspend() calls. They are valid only when is_otg, and when the + * device is acting as a B-Peripheral (so is_a_peripheral is false). + */ +struct usb_gadget { + /* readonly to gadget driver */ + struct list_head ep_list; /* of usb_ep */ + const struct usb_gadget_ops *ops; + struct usb_ep *ep0; + CH9_UsbSpeed speed; + CH9_UsbSpeed max_speed; + CH9_UsbSpeed state; + unsigned is_dualspeed:1; + unsigned is_otg:1; + unsigned is_a_peripheral:1; + unsigned b_hnp_enable:1; + unsigned a_hnp_support:1; + unsigned a_alt_hnp_support:1; + const char *name; +}; + +/** + * gadget_is_dualspeed - return true iff the hardware handles high speed + * @g: controller that might support both high and full speeds + */ +static inline int gadget_is_dualspeed(struct usb_gadget *g) +{ +#ifdef CONFIG_USB_GADGET_DUALSPEED + /* runtime test would check "g->is_dualspeed" ... that might be + * useful to work around hardware bugs, but is mostly pointless + */ + return 1; +#else + return 0; +#endif +} + +/** + * gadget_is_otg - return true iff the hardware is OTG-ready + * @g: controller that might have a Mini-AB connector + * + * This is a runtime test, since kernels with a USB-OTG stack sometimes + * run on boards which only have a Mini-B (or Mini-A) connector. + */ +static inline int gadget_is_otg(struct usb_gadget *g) +{ +#ifdef CONFIG_USB_OTG + return g->is_otg; +#else + return 0; +#endif +} + +/** + * usb_gadget_frame_number - returns the current frame number + * @gadget: controller that reports the frame number + * + * Returns the usb frame number, normally eleven bits from a SOF packet, + * or negative errno if this device doesn't support this capability. + */ +static inline int usb_gadget_frame_number(struct usb_gadget *gadget) +{ + return gadget->ops->get_frame(gadget); +} + +/** + * usb_gadget_wakeup - tries to wake up the host connected to this gadget + * @gadget: controller used to wake up the host + * + * Returns zero on success, else negative error code if the hardware + * doesn't support such attempts, or its support has not been enabled + * by the usb host. Drivers must return device descriptors that report + * their ability to support this, or hosts won't enable it. + * + * This may also try to use SRP to wake the host and start enumeration, + * even if OTG isn't otherwise in use. OTG devices may also start + * remote wakeup even when hosts don't explicitly enable it. + */ +static inline int usb_gadget_wakeup(struct usb_gadget *gadget) +{ + if (!gadget->ops->wakeup) + return -EOPNOTSUPP; + return gadget->ops->wakeup(gadget); +} + +/** + * usb_gadget_set_selfpowered - sets the device selfpowered feature. + * @gadget:the device being declared as self-powered + * + * this affects the device status reported by the hardware driver + * to reflect that it now has a local power supply. + * + * returns zero on success, else negative errno. + */ +static inline int usb_gadget_set_selfpowered(struct usb_gadget *gadget) +{ + if (!gadget->ops->set_selfpowered) + return -EOPNOTSUPP; + return gadget->ops->set_selfpowered(gadget, 1); +} + +/** + * usb_gadget_clear_selfpowered - clear the device selfpowered feature. + * @gadget:the device being declared as bus-powered + * + * this affects the device status reported by the hardware driver. + * some hardware may not support bus-powered operation, in which + * case this feature's value can never change. + * + * returns zero on success, else negative errno. + */ +static inline int usb_gadget_clear_selfpowered(struct usb_gadget *gadget) +{ + if (!gadget->ops->set_selfpowered) + return -EOPNOTSUPP; + return gadget->ops->set_selfpowered(gadget, 0); +} + +/** + * usb_gadget_vbus_connect - Notify controller that VBUS is powered + * @gadget:The device which now has VBUS power. + * + * This call is used by a driver for an external transceiver (or GPIO) + * that detects a VBUS power session starting. Common responses include + * resuming the controller, activating the D+ (or D-) pullup to let the + * host detect that a USB device is attached, and starting to draw power + * (8mA or possibly more, especially after SET_CONFIGURATION). + * + * Returns zero on success, else negative errno. + */ +static inline int usb_gadget_vbus_connect(struct usb_gadget *gadget) +{ + if (!gadget->ops->vbus_session) + return -EOPNOTSUPP; + return gadget->ops->vbus_session(gadget, 1); +} + +/** + * usb_gadget_vbus_draw - constrain controller's VBUS power usage + * @gadget:The device whose VBUS usage is being described + * @mA:How much current to draw, in milliAmperes. This should be twice + * the value listed in the configuration descriptor bMaxPower field. + * + * This call is used by gadget drivers during SET_CONFIGURATION calls, + * reporting how much power the device may consume. For example, this + * could affect how quickly batteries are recharged. + * + * Returns zero on success, else negative errno. + */ +static inline int usb_gadget_vbus_draw(struct usb_gadget *gadget, unsigned int mA) +{ + if (!gadget->ops->vbus_draw) + return -EOPNOTSUPP; + return gadget->ops->vbus_draw(gadget, mA); +} + +/** + * usb_gadget_vbus_disconnect - notify controller about VBUS session end + * @gadget:the device whose VBUS supply is being described + * + * This call is used by a driver for an external transceiver (or GPIO) + * that detects a VBUS power session ending. Common responses include + * reversing everything done in usb_gadget_vbus_connect(). + * + * Returns zero on success, else negative errno. + */ +static inline int usb_gadget_vbus_disconnect(struct usb_gadget *gadget) +{ + if (!gadget->ops->vbus_session) + return -EOPNOTSUPP; + return gadget->ops->vbus_session(gadget, 0); +} + +/** + * usb_gadget_connect - software-controlled connect to USB host + * @gadget:the peripheral being connected + * + * Enables the D+ (or potentially D-) pullup. The host will start + * enumerating this gadget when the pullup is active and a VBUS session + * is active (the link is powered). This pullup is always enabled unless + * usb_gadget_disconnect() has been used to disable it. + * + * Returns zero on success, else negative errno. + */ +static inline int usb_gadget_connect(struct usb_gadget *gadget) +{ + if (!gadget->ops->pullup) + return -EOPNOTSUPP; + return gadget->ops->pullup(gadget, 1); +} + +/** + * usb_gadget_disconnect - software-controlled disconnect from USB host + * @gadget:the peripheral being disconnected + * + * Disables the D+ (or potentially D-) pullup, which the host may see + * as a disconnect (when a VBUS session is active). Not all systems + * support software pullup controls. + * + * This routine may be used during the gadget driver bind() call to prevent + * the peripheral from ever being visible to the USB host, unless later + * usb_gadget_connect() is called. For example, user mode components may + * need to be activated before the system can talk to hosts. + * + * Returns zero on success, else negative errno. + */ +static inline int usb_gadget_disconnect(struct usb_gadget *gadget) +{ + if (!gadget->ops->pullup) + return -EOPNOTSUPP; + return gadget->ops->pullup(gadget, 0); +} + + +/*-------------------------------------------------------------------------*/ + +/** + * struct usb_gadget_driver - driver for usb 'slave' devices + * @function: String describing the gadget's function + * @speed: Highest speed the driver handles. + * @bind: Invoked when the driver is bound to a gadget, usually + * after registering the driver. + * At that point, ep0 is fully initialized, and ep_list holds + * the currently-available endpoints. + * Called in a context that permits sleeping. + * @setup: Invoked for ep0 control requests that aren't handled by + * the hardware level driver. Most calls must be handled by + * the gadget driver, including descriptor and configuration + * management. The 16 bit members of the setup data are in + * USB byte order. Called in_interrupt; this may not sleep. Driver + * queues a response to ep0, or returns negative to stall. + * @disconnect: Invoked after all transfers have been stopped, + * when the host is disconnected. May be called in_interrupt; this + * may not sleep. Some devices can't detect disconnect, so this might + * not be called except as part of controller shutdown. + * @unbind: Invoked when the driver is unbound from a gadget, + * usually from rmmod (after a disconnect is reported). + * Called in a context that permits sleeping. + * @suspend: Invoked on USB suspend. May be called in_interrupt. + * @resume: Invoked on USB resume. May be called in_interrupt. + * @reset: Invoked on USB bus reset. It is mandatory for all gadget drivers + * and should be called in_interrupt. + * + * Devices are disabled till a gadget driver successfully bind()s, which + * means the driver will handle setup() requests needed to enumerate (and + * meet "chapter 9" requirements) then do some useful work. + * + * If gadget->is_otg is true, the gadget driver must provide an OTG + * descriptor during enumeration, or else fail the bind() call. In such + * cases, no USB traffic may flow until both bind() returns without + * having called usb_gadget_disconnect(), and the USB host stack has + * initialized. + * + * Drivers use hardware-specific knowledge to configure the usb hardware. + * endpoint addressing is only one of several hardware characteristics that + * are in descriptors the ep0 implementation returns from setup() calls. + * + * Except for ep0 implementation, most driver code shouldn't need change to + * run on top of different usb controllers. It'll use endpoints set up by + * that ep0 implementation. + * + * The usb controller driver handles a few standard usb requests. Those + * include set_address, and feature flags for devices, interfaces, and + * endpoints (the get_status, set_feature, and clear_feature requests). + * + * Accordingly, the driver's setup() callback must always implement all + * get_descriptor requests, returning at least a device descriptor and + * a configuration descriptor. Drivers must make sure the endpoint + * descriptors match any hardware constraints. Some hardware also constrains + * other descriptors. (The pxa250 allows only configurations 1, 2, or 3). + * + * The driver's setup() callback must also implement set_configuration, + * and should also implement set_interface, get_configuration, and + * get_interface. Setting a configuration (or interface) is where + * endpoints should be activated or (config 0) shut down. + * + * (Note that only the default control endpoint is supported. Neither + * hosts nor devices generally support control traffic except to ep0.) + * + * Most devices will ignore USB suspend/resume operations, and so will + * not provide those callbacks. However, some may need to change modes + * when the host is not longer directing those activities. For example, + * local controls (buttons, dials, etc) may need to be re-enabled since + * the (remote) host can't do that any longer; or an error state might + * be cleared, to make the device behave identically whether or not + * power is maintained. + */ +struct usb_gadget_driver { + char *function; + CH9_UsbSpeed speed; + int (*bind)(struct usb_gadget *gadget); + void (*unbind)(struct usb_gadget *gadget); + int (*setup)(struct usb_gadget *gadget, + const CH9_UsbSetup *ctrl); + void (*disconnect)(struct usb_gadget *gadget); + void (*suspend)(struct usb_gadget *gadget); + void (*resume)(struct usb_gadget *gadget); + void (*reset)(struct usb_gadget *gadget); + void *(*req_mem_alloc)(struct usb_gadget *gadget, uint32_t requireSize); + void (*req_mem_free)(struct usb_gadget *gadget, void *usbRequest); +}; + + +/*-------------------------------------------------------------------------*/ + +/* driver modules register and unregister, as usual. + * these calls must be made in a context that can sleep. + * + * these will usually be implemented directly by the hardware-dependent + * usb bus interface driver, which will only support a single driver. + */ + +/** + * usb_gadget_register_driver - register a gadget driver + * @driver:the driver being registered + * + * Call this in your gadget driver's module initialization function, + * to tell the underlying usb controller driver about your driver. + * The driver's bind() function will be called to bind it to a + * gadget before this registration call returns. It's expected that + * the bind() functions will be in init sections. + * This function must be called in a context that can sleep. + */ +int usb_gadget_register_driver(struct usb_gadget_driver *driver); + +/** + * usb_gadget_unregister_driver - unregister a gadget driver + * @driver:the driver being unregistered + * + * Call this in your gadget driver's module cleanup function, + * to tell the underlying usb controller that your driver is + * going away. If the controller is connected to a USB host, + * it will first disconnect(). The driver is also requested + * to unbind() and clean up any device state, before this procedure + * finally returns. It's expected that the unbind() functions + * will in exit sections, so may not be linked in some kernels. + * This function must be called in a context that can sleep. + */ +int usb_gadget_unregister_driver(struct usb_gadget_driver *driver); +/*-------------------------------------------------------------------------*/ + +/* utility wrapping a simple endpoint selection policy */ + +extern int usb_gadget_handle_interrupts(int index); + +#endif /* DWC2_DRV_IF_H */ diff --git a/fsbl/plat/cv180x/include/usb/dwc2_errno.h b/fsbl/plat/cv180x/include/usb/dwc2_errno.h new file mode 100644 index 000000000..da7864f69 --- /dev/null +++ b/fsbl/plat/cv180x/include/usb/dwc2_errno.h @@ -0,0 +1,92 @@ +#ifndef DWC2_ERRNO_H +#define DWC2_ERRNO_H + +#ifndef ERRNO_H_NOT_PRESENT +#include +#endif //ERRNO_H_NOT_PRESENT + +#ifndef EOK +#define EOK 0 /* no error */ +#endif //EOK + +#ifndef EPERM +#define EPERM 1 /* Operation not permitted */ +#endif //EPERM + +#ifndef ENOENT +#define ENOENT 2 /* No such file or directory */ +#endif //ENOENT + +#ifndef EIO +#define EIO 5 /* I/O error */ +#endif //EIO + +#ifndef ENOEXEC +#define ENOEXEC 8 /* Exec format error */ +#endif //ENOEXEC + +#ifndef EAGAIN +#define EAGAIN 11 /* Try again */ +#endif //EAGAIN + +#ifndef ENOMEM +#define ENOMEM 12 /* Out of memory */ +#endif //ENOMEM + +#ifndef EFAULT +#define EFAULT 14 /* Bad address */ +#endif //EFAULT + +#ifndef EBUSY +#define EBUSY 16 /* Device or resource busy */ +#endif //EBUSY + +#ifndef EINVAL +#define EINVAL 22 /* Invalid argument */ +#endif //EINVAL + +#ifndef ENOSPC +#define ENOSPC 28 /* No space left on device */ +#endif //ENOSPC + +#ifndef EBADSLT +#define EBADSLT 57 /* Invalid slot */ +#endif //EBADSLT + +#ifndef EPROTO +#define EPROTO 71 /* Protocol error */ +#endif //EPROTO + +#ifndef EOVERFLOW +#define EOVERFLOW 75 /* Value too large for defined data type */ +#endif //EOVERFLOW + +#ifndef EOPNOTSUPP +#define EOPNOTSUPP 95 /* Operation not supported */ +#endif //EOPNOTSUPP + +#ifndef ESHUTDOWN +#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */ +#endif + +#ifndef ETIMEDOUT +#define ETIMEDOUT 110 /* Connection timed out */ +#endif //ETIMEDOUT + +#ifndef EINPROGRESS +#define EINPROGRESS 115 /* Operation now in progress */ +#endif //EINPROGRESS + +#ifndef EDQUOT +#define EDQUOT 122 /* Quota exceeded */ +#endif //EDQUOT + +#ifndef ENOTSUP +#define ENOTSUP EOPNOTSUPP +#endif //ENOTSUP + +#ifndef ECANCELED +#define ECANCELED 126 /* Cancelled */ +#endif //ECANCELED + +#endif /* DWC2_ERRNO_H */ diff --git a/fsbl/plat/cv180x/include/usb/dwc2_stdint.h b/fsbl/plat/cv180x/include/usb/dwc2_stdint.h new file mode 100644 index 000000000..97d6cbe43 --- /dev/null +++ b/fsbl/plat/cv180x/include/usb/dwc2_stdint.h @@ -0,0 +1,29 @@ +#ifndef DWC2_STDINT_H +#define DWC2_STDINT_H + +#include + +/* NOTE - The driver uses fixed width types as defined in C99 + * + * If not provided by your environment, these are typical definitions for the + * fixed width types used in the driver, and should be provided here. + * typedef signed char int8_t + * typedef unsigned char uint8_t + * typedef signed short int16_t + * typedef unsigned short uint16_t + * typedef signed long int int32_t + * typedef unsigned long int uint32_t + * typedef signed long long int int64_t + * typedef unsigned long long int uint64_t + * typedef int32_t intptr_t + * typedef uint32_t uintptr_t + * + * These definitions are for a 32bit system with 32bit int, and should be adjusted + * for your actual target system and toolchain. + * + * Under Linux, these will be available in: + * linux/types.h + * + */ + +#endif diff --git a/fsbl/plat/cv180x/include/usb/dwc2_stdio.h b/fsbl/plat/cv180x/include/usb/dwc2_stdio.h new file mode 100644 index 000000000..53c5fdf17 --- /dev/null +++ b/fsbl/plat/cv180x/include/usb/dwc2_stdio.h @@ -0,0 +1 @@ +#include diff --git a/fsbl/plat/cv180x/include/usb/dwc2_stdtypes.h b/fsbl/plat/cv180x/include/usb/dwc2_stdtypes.h new file mode 100644 index 000000000..7779d41ec --- /dev/null +++ b/fsbl/plat/cv180x/include/usb/dwc2_stdtypes.h @@ -0,0 +1,24 @@ +#ifndef DWC2_STDTYPES_H +#define DWC2_STDTYPES_H +#ifdef __KERNEL__ +#include +#else +#include "dwc2_stdint.h" + +#define TYPEDEF typedef + +/* Define NULL constant */ +#ifndef NULL +#define NULL ((void *)0) +#endif + +/* Define size_t data type */ +// typedef uintptr_t size_t; + +/* Define bool data type */ +#define bool _Bool +#define true 1 +#define false 0 +#define __bool_true_false_are_defined 1 +#endif /* __KERNEL__ */ +#endif /* DWC2_STDTYPES_H */ diff --git a/fsbl/plat/cv180x/include/usb/dwc2_string.h b/fsbl/plat/cv180x/include/usb/dwc2_string.h new file mode 100644 index 000000000..3b2f59002 --- /dev/null +++ b/fsbl/plat/cv180x/include/usb/dwc2_string.h @@ -0,0 +1 @@ +#include diff --git a/fsbl/plat/cv180x/include/usb/dwc2_udc.h b/fsbl/plat/cv180x/include/usb/dwc2_udc.h new file mode 100644 index 000000000..ed46b3c97 --- /dev/null +++ b/fsbl/plat/cv180x/include/usb/dwc2_udc.h @@ -0,0 +1,108 @@ +/* + * drivers/usb/gadget/dwc2_udc.h + * Designware DWC2 on-chip full/high speed USB device controllers + * Copyright (C) 2005 for Samsung Electronics + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef __DWC2_USB_GADGET +#define __DWC2_USB_GADGET + +#include "dwc2_udc_otg_regs.h" + +#define _DEBUG 0 + +#define dwc2dbg_cond(cond, fmt, args...) \ + do { \ + if (cond) \ + printf(fmt, ##args); \ + } while (0) + +#define dwc2dbg(fmt, args...) \ + dwc2dbg_cond(_DEBUG, fmt, ##args) + +#define DEBUG_SETUP 0 +#define DEBUG_EP0 0 +#define DEBUG_ISR 0 +#define DEBUG_OUT_EP 0 +#define DEBUG_IN_EP 0 + +#define PHY0_SLEEP (1 << 5) + +#ifndef CONFIG_SYS_CACHELINE_SIZE +#define CONFIG_SYS_CACHELINE_SIZE 64 +#endif + +#define container_of(ptr, type, member) ({ \ + const typeof(((type *)0)->member) * __mptr = (ptr); \ + (type *)((char *)__mptr - offsetof(type, member)); }) + +#define ROUND(a, b) (((a) + (b) - 1) & ~((b) - 1)) + +#define min_t(type, x, y) ({ \ + type __min1 = (x); \ + type __min2 = (y); \ + __min1 < __min2 ? __min1 : __min2; }) + +#define max_t(type, x, y) ({ \ + type __max1 = (x); \ + type __max2 = (y); \ + __max1 > __max2 ? __max1 : __max2; }) + +#define min(x, y) ({ \ + typeof(x) _min1 = (x); \ + typeof(y) _min2 = (y); \ + (void) (&_min1 == &_min2); \ + _min1 < _min2 ? _min1 : _min2; }) + +#define max(x, y) ({ \ + typeof(x) _max1 = (x); \ + typeof(y) _max2 = (y); \ + (void) (&_max1 == &_max2); \ + _max1 > _max2 ? _max1 : _max2; }) + +#define OTG_DMA_MODE 1 + +#define EP0_CON 0 +#define EP_MASK 0xF + +struct dwc2_plat_otg_data { + void *handler; + unsigned int size; + int phy_of_node; + int (*phy_control)(int on); + uintptr_t regs_phy; + uintptr_t regs_otg; + unsigned int usb_phy_ctrl; + unsigned int usb_flags; + unsigned int usb_gusbcfg; + unsigned int rx_fifo_sz; + unsigned int np_tx_fifo_sz; + unsigned int tx_fifo_sz; + void *ctrl_req; +}; + +struct dwc2_drv_obj { + struct usb_gadget *gadget; + struct dwc2_plat_otg_data plat; +}; + +int dwc2_udc_probe(struct dwc2_plat_otg_data *pdata); +void dwc2_udc_ep_activate(struct dwc2_ep *ep); +int dwc2_udc_irq(int irq, void *_dev); +int dwc2_queue(struct usb_ep *_ep, struct usb_request *_req); +void dwc2_ep0_read(struct dwc2_udc *dev); +void dwc2_ep0_kick(struct dwc2_udc *dev, struct dwc2_ep *ep); +void dwc2_handle_ep0(struct dwc2_udc *dev); +int dwc2_ep0_write(struct dwc2_udc *dev); +int dwc2_write_fifo_ep0(struct dwc2_ep *ep, struct dwc2_request *req); +void dwc2_set_address(struct dwc2_udc *dev, unsigned char address); +int dwc2_udc_set_halt(struct usb_ep *_ep, int value); +void dwc2_udc_set_nak(struct dwc2_ep *ep); +void dwc2_done(struct dwc2_ep *ep, struct dwc2_request *req, int status); +void dwc2_nuke(struct dwc2_ep *ep, int status); +void dwc2_reconfig_usbd(struct dwc2_udc *dev, int disconnect); +const char *dwc2_get_ep0_name(void); + +#endif /* __DWC2_USB_GADGET */ diff --git a/fsbl/plat/cv180x/include/usb/dwc2_udc_otg_priv.h b/fsbl/plat/cv180x/include/usb/dwc2_udc_otg_priv.h new file mode 100644 index 000000000..ba03fd335 --- /dev/null +++ b/fsbl/plat/cv180x/include/usb/dwc2_udc_otg_priv.h @@ -0,0 +1,113 @@ +/* + * Designware DWC2 on-chip full/high speed USB device controllers + * Copyright (C) 2005 for Samsung Electronics + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef __DWC2_UDC_OTG_PRIV__ +#define __DWC2_UDC_OTG_PRIV__ + +//#include +#include +#include +#include +#include + +/*-------------------------------------------------------------------------*/ +/* DMA bounce buffer size, 16K is enough even for mass storage */ +#define DMA_BUFFER_SIZE (16*1024) + +#define EP0_FIFO_SIZE 64 +#define EP_FIFO_SIZE 512 +#define EP_FIFO_SIZE2 1024 +/* ep0-control, ep1in-bulk, ep2out-bulk, ep3in-int */ +#define DWC2_MAX_ENDPOINTS 4 +#define DWC2_MAX_HW_ENDPOINTS 8 + +#define WAIT_FOR_SETUP 0 +#define DATA_STATE_XMIT 1 +#define DATA_STATE_NEED_ZLP 2 +#define WAIT_FOR_OUT_STATUS 3 +#define DATA_STATE_RECV 4 +#define WAIT_FOR_COMPLETE 5 +#define WAIT_FOR_OUT_COMPLETE 6 +#define WAIT_FOR_IN_COMPLETE 7 +#define WAIT_FOR_NULL_COMPLETE 8 + +#define TEST_J_SEL 0x1 +#define TEST_K_SEL 0x2 +#define TEST_SE0_NAK_SEL 0x3 +#define TEST_PACKET_SEL 0x4 +#define TEST_FORCE_ENABLE_SEL 0x5 + +/* ************************************************************************* */ +/* IO + */ + +enum ep_type { + ep_control, ep_bulk_in, ep_bulk_out, ep_interrupt +}; + +struct dwc2_ep { + struct usb_ep ep; /* must be put here! */ + struct dwc2_udc *dev; + + const CH9_UsbEndpointDescriptor *desc; + struct list_head queue; + unsigned long pio_irqs; + int len; + void *dma_buf; + + uint8_t stopped; + uint8_t bEndpointAddress; + uint8_t bmAttributes; + + enum ep_type ep_type; + int fifo_num; +}; + +struct dwc2_request { + struct usb_request req; + struct list_head queue; +}; + +struct dwc2_udc { + struct usb_gadget gadget; + struct usb_gadget_driver *driver; + + void *pdata; + + int ep0state; + struct dwc2_ep ep[DWC2_MAX_ENDPOINTS]; + + unsigned char usb_address; + + unsigned req_pending:1, req_std:1; + + CH9_UsbSetup *usb_ctrl; + dma_addr_t usb_ctrl_dma_addr; + struct dwc2_usbotg_reg *reg; + unsigned int connected; + uint8_t clear_feature_num; + uint8_t clear_feature_flag; + uint8_t test_mode; + +}; + +#define ep_is_in(EP) (((EP)->bEndpointAddress&USB_DIR_IN) == USB_DIR_IN) +#define ep_index(EP) ((EP)->bEndpointAddress&0xF) +#define ep_maxpacket(EP) ((EP)->ep.maxpacket) + +void otg_phy_init(struct dwc2_udc *dev); +void otg_phy_off(struct dwc2_udc *dev); +void dwc2_log_write(uint32_t tag, uint32_t param1, uint32_t param2, uint32_t param3, uint32_t param4); +void set_trigger_cnt(int cnt); +uint8_t dwc2_phy_to_log_ep(uint8_t phy_num, uint8_t dir); +void dwc2_udc_pre_setup(struct dwc2_udc *dev); +void dwc2_disconnect(struct dwc2_udc *dev); +void dwc2_hsotg_set_bit(uint32_t *reg, uint32_t val); +void dwc2_hsotg_clear_bit(uint32_t *reg, uint32_t vla); +int dwc2_hsotg_wait_bit_set(uint32_t *reg, uint32_t bit, uint32_t timeout); + +#endif /* __DWC2_UDC_OTG_PRIV__ */ diff --git a/fsbl/plat/cv180x/include/usb/dwc2_udc_otg_regs.h b/fsbl/plat/cv180x/include/usb/dwc2_udc_otg_regs.h new file mode 100644 index 000000000..cfe28b11d --- /dev/null +++ b/fsbl/plat/cv180x/include/usb/dwc2_udc_otg_regs.h @@ -0,0 +1,345 @@ +/* linux/arch/arm/plat-s3c/include/plat/regs-otg.h + * + * Copyright (C) 2004 Herbert Poetzl + * + * Registers remapping: + * Lukasz Majewski + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef __ASM_ARCH_REGS_USB_OTG_HS_H +#define __ASM_ARCH_REGS_USB_OTG_HS_H + +/* USB2.0 OTG Controller register */ +struct dwc2_usbotg_phy { + uint32_t phypwr; + uint32_t phyclk; + uint32_t rstcon; +}; + +/* Device Logical IN Endpoint-Specific Registers */ +struct dwc2_dev_in_endp { + uint32_t diepctl; + uint8_t res1[4]; + uint32_t diepint; + uint8_t res2[4]; + uint32_t dieptsiz; + uint32_t diepdma; + uint32_t dtxfsts; + uint32_t diepdmab; +}; + +/* Device Logical OUT Endpoint-Specific Registers */ +struct dwc2_dev_out_endp { + uint32_t doepctl; + uint8_t res1[4]; + uint32_t doepint; + uint8_t res2[4]; + uint32_t doeptsiz; + uint32_t doepdma; + uint8_t res3[4]; + uint32_t doepdmab; +}; + +struct ep_fifo { + uint32_t fifo; + uint8_t res[4092]; +}; + +/* USB2.0 OTG Controller register */ +struct dwc2_usbotg_reg { + /* Core Global Registers */ + uint32_t gotgctl; /* OTG Control & Status */ + uint32_t gotgint; /* OTG Interrupt */ + uint32_t gahbcfg; /* Core AHB Configuration */ + uint32_t gusbcfg; /* Core USB Configuration */ + uint32_t grstctl; /* Core Reset */ + uint32_t gintsts; /* Core Interrupt */ + uint32_t gintmsk; /* Core Interrupt Mask */ + uint32_t grxstsr; /* Receive Status Debug Read/Status Read */ + uint32_t grxstsp; /* Receive Status Debug Pop/Status Pop */ + uint32_t grxfsiz; /* Receive FIFO Size */ + uint32_t gnptxfsiz; /* Non-Periodic Transmit FIFO Size */ + uint8_t res0[20]; + uint32_t gsnpsid; + uint8_t res1[192]; + uint32_t dieptxf[15]; /* Device Periodic Transmit FIFO size register */ + uint8_t res2[1728]; + /* Device Configuration */ + uint32_t dcfg; /* Device Configuration Register */ + uint32_t dctl; /* Device Control */ + uint32_t dsts; /* Device Status */ + uint8_t res3[4]; + uint32_t diepmsk; /* Device IN Endpoint Common Interrupt Mask */ + uint32_t doepmsk; /* Device OUT Endpoint Common Interrupt Mask */ + uint32_t daint; /* Device All Endpoints Interrupt */ + uint32_t daintmsk; /* Device All Endpoints Interrupt Mask */ + uint8_t res4[20]; + uint32_t diepempmsk; + uint8_t res4_1[200]; + struct dwc2_dev_in_endp in_endp[16]; + struct dwc2_dev_out_endp out_endp[16]; + uint8_t res5[256]; + uint32_t pcgcctl; /* Power and Clock Gating Control Register */ + uint8_t res6[508]; + struct ep_fifo ep[16]; +}; + +/*===================================================================== */ +/*definitions related to CSR setting */ + +/* SNPSID*/ +#define DWC2_CORE_REV_4_20a 0x4f54420a +#define DWC2_CORE_REV_MASK 0x0000ffff +/* DWC2_UDC_OTG_GOTGCTL */ +#define B_SESSION_VALID (0x1<<19) +#define A_SESSION_VALID (0x1<<18) + +/* DWC2_UDC_OTG_GAHBCFG */ +#define PTXFE_HALF (0<<8) +#define PTXFE_ZERO (1<<8) +#define NPTXFE_HALF (0<<7) +#define NPTXFE_ZERO (1<<7) +#define MODE_SLAVE (0<<5) +#define MODE_DMA (1<<5) +#define BURST_SINGLE (0<<1) +#define BURST_INCR (1<<1) +#define BURST_INCR4 (3<<1) +#define BURST_INCR8 (5<<1) +#define BURST_INCR16 (7<<1) +#define GBL_INT_UNMASK (1<<0) +#define GBL_INT_MASK (0<<0) + +/* DWC2_UDC_OTG_GRSTCTL */ +#define AHB_MASTER_IDLE (1u<<31) +#define CORE_SOFT_RESET (0x1<<0) +#define CSFTRST_DONE (0x1<<29) + +/* DWC2_UDC_OTG_GINTSTS/DWC2_UDC_OTG_GINTMSK core interrupt register */ +#define INT_RESUME (1u<<31) +#define INT_DISCONN (0x1<<29) +#define INT_CONN_ID_STS_CNG (0x1<<28) +#define INT_RESETDET (0x1<<23) +#define INT_OUT_EP (0x1<<19) +#define INT_IN_EP (0x1<<18) +#define INT_ENUMDONE (0x1<<13) +#define INT_RESET (0x1<<12) +#define INT_SUSPEND (0x1<<11) +#define INT_EARLY_SUSPEND (0x1<<10) +#define INT_NP_TX_FIFO_EMPTY (0x1<<5) +#define INT_RX_FIFO_NOT_EMPTY (0x1<<4) +#define INT_SOF (0x1<<3) +#define INT_DEV_MODE (0x0<<0) +#define INT_HOST_MODE (0x1<<1) +#define INT_GOUTNakEff (0x01<<7) +#define INT_GINNakEff (0x01<<6) + +#define FULL_SPEED_CONTROL_PKT_SIZE 8 +#define FULL_SPEED_BULK_PKT_SIZE 64 + +#define HIGH_SPEED_CONTROL_PKT_SIZE 64 +#define HIGH_SPEED_BULK_PKT_SIZE 512 + +#define RX_FIFO_SIZE (1024) +#define NPTX_FIFO_SIZE (64) +#define PTX_FIFO_SIZE (384) + +#define DEPCTL_TXFNUM_0 (0x0<<22) +#define DEPCTL_TXFNUM_1 (0x1<<22) +#define DEPCTL_TXFNUM_2 (0x2<<22) +#define DEPCTL_TXFNUM_3 (0x3<<22) +#define DEPCTL_TXFNUM_4 (0x4<<22) + +/* Enumeration speed */ +#define USB_HIGH_30_60MHZ (0x0<<1) +#define USB_FULL_30_60MHZ (0x1<<1) +#define USB_LOW_6MHZ (0x2<<1) +#define USB_FULL_48MHZ (0x3<<1) + +/* DWC2_UDC_OTG_GRXSTSP STATUS */ +#define GRXSTSP_EPNUM_MASK (0xF<<0) +#define GRXSTSP_BCNT_MASK (0x7FF<<4) +#define GRXSTSP_PKTSTS_MASK (0xF<<17) +#define OUT_PKT_RECEIVED (0x2<<17) +#define OUT_TRANSFER_COMPLELTED (0x3<<17) +#define SETUP_TRANSACTION_COMPLETED (0x4<<17) +#define SETUP_PKT_RECEIVED (0x6<<17) +#define GLOBAL_OUT_NAK (0x1<<17) + +/* DWC2_UDC_OTG_DCTL device control register */ +#define RMTWKUPSIG (0x1<<0) +#define SOFT_DISCONNECT (0x1<<1) +#define CGNPINNAK (0x1<<8) +#define SGOUTNAK (0x1<<9) +#define CGOUTNAK (0x1<<10) +#define PWRONPRGDONE (0x1<<11) +#define DCTL_TSTCTL_SHIFT (4) +#define DCTL_TSTCTL_MASK (0x7<next = list; + list->prev = list; +} + +/* + * Insert a new entry between two known consecutive entries. + * + * This is only for internal list manipulation where we know + * the prev/next entries already! + */ +static inline void __list_add(struct list_head *new, + struct list_head *prev, + struct list_head *next) +{ + next->prev = new; + new->next = next; + new->prev = prev; + prev->next = new; +} + +/** + * list_add_tail - add a new entry + * @new: new entry to be added + * @head: list head to add it before + * + * Insert a new entry before the specified head. + * This is useful for implementing queues. + */ +static inline void list_add_tail(struct list_head *new, struct list_head *head) +{ + __list_add(new, head->prev, head); +} + +/* + * Delete a list entry by making the prev/next entries + * point to each other. + * + * This is only for internal list manipulation where we know + * the prev/next entries already! + */ +static inline void __list_del(struct list_head *prev, struct list_head *next) +{ + next->prev = prev; + prev->next = next; +} + +/** + * list_del_init - deletes entry from list and reinitialize it. + * @entry: the element to delete from the list. + */ +static inline void list_del_init(struct list_head *entry) +{ + __list_del(entry->prev, entry->next); + INIT_LIST_HEAD(entry); +} + +/** + * list_empty - tests whether a list is empty + * @head: the list to test. + */ +static inline int list_empty(const struct list_head *head) +{ + return head->next == head; +} + +/** + * list_entry - get the struct for this entry + * @ptr: the &struct list_head pointer. + * @type: the type of the struct this is embedded in. + * @member: the name of the list_struct within the struct. + */ +#define list_entry(ptr, type, member) \ + container_of(ptr, type, member) + +#define list_first_entry(ptr, type, member) \ + list_entry((ptr)->next, type, member) +/** + * list_for_each_entry - iterate over list of given type + * @pos: the type * to use as a loop cursor. + * @head: the head for your list. + * @member: the name of the list_struct within the struct. + */ +#define list_for_each_entry(pos, head, member) \ + for (pos = list_entry((head)->next, typeof(*pos), member); \ + prefetch(pos->member.next), &pos->member != (head); \ + pos = list_entry(pos->member.next, typeof(*pos), member)) +#endif diff --git a/fsbl/plat/cv180x/include/usb/little_endian.h b/fsbl/plat/cv180x/include/usb/little_endian.h new file mode 100644 index 000000000..e49833c7e --- /dev/null +++ b/fsbl/plat/cv180x/include/usb/little_endian.h @@ -0,0 +1,25 @@ +#ifndef BYTEORDER_LENDIAN_H +#define BYTEORDER_LENDIAN_H + +#include "swap.h" + +#define cpuToLe32(x) (x) +#define le32ToCpu(x) (x) +#define cpuToLe16(x) ((uint16_t) (x)) +#define le16ToCpu(x) ((uint16_t) (x)) + +#define cpuToBe32(x) ((uint32_t) swap32(x)) +#define be32ToCpu(x) ((uint32_t) swap32(x)) +#define cpuToBe16(x) ((uint16_t) swap16(x)) +#define be16ToCpu(x) ((uint16_t) swap16(x)) + +/** + * Macros used for reading 16-bits and 32-bits data from memory which + * starting addres could be unaligned. + */ +#define ptrToWord(ptr) ((*(uint8_t *) ptr << 8) | (*(uint8_t *) (ptr + 1))) +#define ptrToDword(ptr) ((*(uint8_t *) ptr << 24) | ((*(uint8_t *) (ptr + 1)) << 16) | \ + (*((uint8_t *) (ptr + 2)) << 8) | (*((uint8_t *) (ptr + 3)))) + +#endif /* BYTEORDER_LENDIAN_H */ + diff --git a/fsbl/plat/cv180x/include/usb/map_system_memory.h b/fsbl/plat/cv180x/include/usb/map_system_memory.h new file mode 100644 index 000000000..f648114b9 --- /dev/null +++ b/fsbl/plat/cv180x/include/usb/map_system_memory.h @@ -0,0 +1,5 @@ +#ifndef MAP_SYSTEM_MEMORY +#define MAP_SYSTEM_MEMORY +#define USB_BASE 0x04340000 + +#endif diff --git a/fsbl/plat/cv180x/include/usb/swap.h b/fsbl/plat/cv180x/include/usb/swap.h new file mode 100644 index 000000000..35586a50a --- /dev/null +++ b/fsbl/plat/cv180x/include/usb/swap.h @@ -0,0 +1,13 @@ +#ifndef BYTEORDER_SWAB_H +#define BYTEORDER_SWAB_H + +#define swap16(x) \ + ((uint16_t)((((uint16_t) (x) & (uint16_t) 0x00ffU) << 8) | (((uint16_t) (x) & (uint16_t) 0xff00U) >> 8))) + +#define swap32(x) (((uint32_t) ( \ + (((uint32_t) (x) & (uint32_t) 0x000000ffUL) << 24) | \ + (((uint32_t) (x) & (uint32_t) 0x0000ff00UL) << 8) | \ + (((uint32_t) (x) & (uint32_t) 0x00ff0000UL) >> 8) | \ + (((uint32_t) (x) & (uint32_t) 0xff000000UL) >> 24)))) + +#endif /* BYTEORDER_SWAB_H */ diff --git a/fsbl/plat/cv180x/include/usb/usb_tty.h b/fsbl/plat/cv180x/include/usb/usb_tty.h new file mode 100644 index 000000000..cfc0ece5c --- /dev/null +++ b/fsbl/plat/cv180x/include/usb/usb_tty.h @@ -0,0 +1,446 @@ +#ifndef _USB_TTY_H +#define _USB_TTY_H + +#include +#include + +//------------------------------------------------------------------------------ +/* CDC DEFINE*/ +#define USB_CDC_SUBCLASS_ACM 0x02 + + +#define USB_CDC_PROTO_NONE 0 + +#define USB_CDC_ACM_PROTO_AT_V25TER 1 +#define USB_CDC_ACM_PROTO_AT_PCCA101 2 +#define USB_CDC_ACM_PROTO_AT_PCCA101_WAKE 3 +#define USB_CDC_ACM_PROTO_AT_GSM 4 +#define USB_CDC_ACM_PROTO_AT_3G 5 +#define USB_CDC_ACM_PROTO_AT_CDMA 6 +#define USB_CDC_ACM_PROTO_VENDOR 0xff + +/*-------------------------------------------------------------------------*/ + +/* + * Class-Specific descriptors ... there are a couple dozen of them + */ + +#define USB_CDC_HEADER_TYPE 0x00 /* header_desc */ +#define USB_CDC_CALL_MANAGEMENT_TYPE 0x01 /* call_mgmt_descriptor */ +#define USB_CDC_ACM_TYPE 0x02 /* acm_descriptor */ +#define USB_CDC_UNION_TYPE 0x06 /* union_desc */ +#define USB_CDC_COUNTRY_TYPE 0x07 + + +/* "Header Functional Descriptor" from CDC spec 5.2.3.1 */ +struct usb_cdc_header_desc { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubType; + + uint16_t bcdCDC; +} __packed; + +/* "Call Management Descriptor" from CDC spec 5.2.3.2 */ +struct usb_cdc_call_mgmt_descriptor { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubType; + + uint8_t bmCapabilities; +#define USB_CDC_CALL_MGMT_CAP_CALL_MGMT 0x01 +#define USB_CDC_CALL_MGMT_CAP_DATA_INTF 0x02 + + uint8_t bDataInterface; +} __packed; + +/* "Abstract Control Management Descriptor" from CDC spec 5.2.3.3 */ +struct usb_cdc_acm_descriptor { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubType; + + uint8_t bmCapabilities; +} __packed; + +/* capabilities from 5.2.3.3 */ + +#define USB_CDC_COMM_FEATURE 0x01 +#define USB_CDC_CAP_LINE 0x02 +#define USB_CDC_CAP_BRK 0x04 +#define USB_CDC_CAP_NOTIFY 0x08 + +/* "Union Functional Descriptor" from CDC spec 5.2.3.8 */ +struct usb_cdc_union_desc { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubType; + + uint8_t bMasterInterface0; + uint8_t bSlaveInterface0; + /* ... and there could be other slave interfaces */ +} __packed; + +/* "Country Selection Functional Descriptor" from CDC spec 5.2.3.9 */ +struct usb_cdc_country_functional_desc { + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bDescriptorSubType; + + uint8_t iCountryCodeRelDate; + uint16_t wCountyCode0; + /* ... and there can be a lot of country codes */ +} __packed; + + +/*-------------------------------------------------------------------------*/ + +/* + * Class-Specific Control Requests (6.2) + * + * section 3.6.2.1 table 4 has the ACM profile, for modems. + * section 3.8.2 table 10 has the ethernet profile. + * + * Microsoft's RNDIS stack for Ethernet is a vendor-specific CDC ACM variant, + * heavily dependent on the encapsulated (proprietary) command mechanism. + */ + +#define USB_CDC_SEND_ENCAPSULATED_COMMAND 0x00 +#define USB_CDC_GET_ENCAPSULATED_RESPONSE 0x01 +#define USB_CDC_REQ_SET_LINE_CODING 0x20 +#define USB_CDC_REQ_GET_LINE_CODING 0x21 +#define USB_CDC_REQ_SET_CONTROL_LINE_STATE 0x22 +#define USB_CDC_REQ_SEND_BREAK 0x23 + + +/* Line Coding Structure from CDC spec 6.2.13 */ +struct usb_cdc_line_coding { + int dwDTERate; + uint8_t bCharFormat; +#define USB_CDC_1_STOP_BITS 0 +#define USB_CDC_1_5_STOP_BITS 1 +#define USB_CDC_2_STOP_BITS 2 + + uint8_t bParityType; +#define USB_CDC_NO_PARITY 0 +#define USB_CDC_ODD_PARITY 1 +#define USB_CDC_EVEN_PARITY 2 +#define USB_CDC_MARK_PARITY 3 +#define USB_CDC_SPACE_PARITY 4 + + uint8_t bDataBits; +} __packed; + +/* table 62; bits in multicast filter */ +#define USB_CDC_PACKET_TYPE_PROMISCUOUS (1 << 0) +#define USB_CDC_PACKET_TYPE_ALL_MULTICAST (1 << 1) /* no filter */ +#define USB_CDC_PACKET_TYPE_DIRECTED (1 << 2) +#define USB_CDC_PACKET_TYPE_BROADCAST (1 << 3) +#define USB_CDC_PACKET_TYPE_MULTICAST (1 << 4) /* filtered */ + + +/*-------------------------------------------------------------------------*/ + +/* + * Class-Specific Notifications (6.3) sent by interrupt transfers + * + * section 3.8.2 table 11 of the CDC spec lists Ethernet notifications + * section 3.6.2.1 table 5 specifies ACM notifications, accepted by RNDIS + * RNDIS also defines its own bit-incompatible notifications + */ + +#define USB_CDC_NOTIFY_NETWORK_CONNECTION 0x00 +#define USB_CDC_NOTIFY_RESPONSE_AVAILABLE 0x01 +#define USB_CDC_NOTIFY_SERIAL_STATE 0x20 +#define USB_CDC_NOTIFY_SPEED_CHANGE 0x2a + +struct usb_cdc_notification { + uint8_t bmRequestType; + uint8_t bNotificationType; + uint16_t wValue; + uint16_t wIndex; + uint16_t wLength; +} __packed; + +/* utility to simplify dealing with string descriptors */ + +/** + * struct usb_string - wraps a C string and its USB id + * @id:the (nonzero) ID for this string + * @s:the string, in UTF-8 encoding + * + * If you're using usb_gadget_get_string(), use this to wrap a string + * together with its ID. + */ +struct usb_string { + uint8_t id; + const char *s; +}; + +/* notification endpoint uses smallish and infrequent fixed-size messages */ + +#define GS_LOG2_NOTIFY_INTERVAL 5 /* 1 << 5 == 32 msec */ +#define GS_NOTIFY_MAXPACKET 10 /* notification + 2 bytes */ + +/* interface and class descriptors: */ + +#define BCD_CDC 0x0110 + +//------------------- descriptor set-------------------------------------------- +// device descriptor for HighSpeed mode +static CH9_UsbDeviceDescriptor devHsDesc = { + CH9_USB_DS_DEVICE, + CH9_USB_DT_DEVICE, + cpuToLe16(BCD_USB_HS), + 2, + 0, + 0, + 64, + cpuToLe16(ID_VENDOR), + cpuToLe16(ID_PRODUCT), + cpuToLe16(BCD_DEVICE_HS), + 1, + 2, + 3, + 1 +}; + +//------------- Start of Super Speed configuration descriptors ----------------- + +static struct CH9_UsbInterfaceAssociationDescriptor + acm_iad_descriptor = { + .bLength = sizeof(acm_iad_descriptor), + .bDescriptorType = CH9_USB_DT_INTERFACE_ASSOCIATION, + + /* .bFirstInterface = DYNAMIC, */ + .bInterfaceCount = 2, // control + data + .bFunctionClass = CH9_USB_CLASS_CDC, + .bFunctionSubClass = USB_CDC_SUBCLASS_ACM, + .bFunctionProtocol = USB_CDC_ACM_PROTO_AT_V25TER, + /* .iFunction = DYNAMIC */ +}; + + +static struct CH9_UsbInterfaceDescriptor acm_control_interface_desc = { + .bLength = USB_DT_INTERFACE_SIZE, + .bDescriptorType = CH9_USB_DT_INTERFACE, + .bInterfaceNumber = 0, + .bAlternateSetting = 0, + .bNumEndpoints = 1, + .bInterfaceClass = CH9_USB_CLASS_CDC, + .bInterfaceSubClass = USB_CDC_SUBCLASS_ACM, + .bInterfaceProtocol = USB_CDC_ACM_PROTO_AT_V25TER, + .iInterface = 0, +}; + +static struct CH9_UsbInterfaceDescriptor acm_data_interface_desc = { + .bLength = USB_DT_INTERFACE_SIZE, + .bDescriptorType = CH9_USB_DT_INTERFACE, + .bInterfaceNumber = 1, + .bAlternateSetting = 0, + .bNumEndpoints = 2, + .bInterfaceClass = CH9_USB_CLASS_CDC_DATA, + .bInterfaceSubClass = 0, + .bInterfaceProtocol = 0, + .iInterface = 0, +}; + +static struct usb_cdc_header_desc acm_header_desc = { + .bLength = sizeof(acm_header_desc), + .bDescriptorType = USB_DT_CS_INTERFACE, + .bDescriptorSubType = USB_CDC_HEADER_TYPE, + .bcdCDC = cpuToLe16(BCD_CDC), +}; + +static struct usb_cdc_call_mgmt_descriptor + acm_call_mgmt_descriptor = { + .bLength = sizeof(acm_call_mgmt_descriptor), + .bDescriptorType = USB_DT_CS_INTERFACE, + .bDescriptorSubType = USB_CDC_CALL_MANAGEMENT_TYPE, + .bmCapabilities = 3, + .bDataInterface = 1, +}; + +static struct usb_cdc_acm_descriptor acm_descriptor = { + .bLength = sizeof(acm_descriptor), + .bDescriptorType = USB_DT_CS_INTERFACE, + .bDescriptorSubType = USB_CDC_ACM_TYPE, + .bmCapabilities = USB_CDC_CAP_LINE, +}; + +static struct usb_cdc_union_desc acm_union_desc = { + .bLength = sizeof(acm_union_desc), + .bDescriptorType = USB_DT_CS_INTERFACE, + .bDescriptorSubType = USB_CDC_UNION_TYPE, + .bMasterInterface0 = 0, + .bSlaveInterface0 = 1, +}; + +/* full speed support: */ + +static struct CH9_UsbEndpointDescriptor acm_fs_notify_desc = { + .bLength = USB_DT_ENDPOINT_SIZE, + .bDescriptorType = CH9_USB_DT_ENDPOINT, + .bEndpointAddress = BULK_EP_NOTIFY, + .bmAttributes = CH9_USB_EP_INTERRUPT, + .wMaxPacketSize = cpuToLe16(GS_NOTIFY_MAXPACKET), + .bInterval = 1 << GS_LOG2_NOTIFY_INTERVAL, +}; + +static struct CH9_UsbEndpointDescriptor acm_fs_in_desc = { + .bLength = USB_DT_ENDPOINT_SIZE, + .bDescriptorType = CH9_USB_DT_ENDPOINT, + .bEndpointAddress = BULK_EP_IN, + .bmAttributes = CH9_USB_EP_BULK, + .wMaxPacketSize = cpuToLe16(64), +}; + +static struct CH9_UsbEndpointDescriptor acm_fs_out_desc = { + .bLength = USB_DT_ENDPOINT_SIZE, + .bDescriptorType = CH9_USB_DT_ENDPOINT, + .bEndpointAddress = BULK_EP_OUT, + .bmAttributes = CH9_USB_EP_BULK, + .wMaxPacketSize = cpuToLe16(64), +}; + +static void *descriptorsFs[] = { + //&acm_iad_descriptor, + &acm_control_interface_desc, + &acm_header_desc, + &acm_descriptor, + &acm_union_desc, + &acm_call_mgmt_descriptor, + &acm_fs_notify_desc, + &acm_data_interface_desc, + &acm_fs_out_desc, + &acm_fs_in_desc, + NULL, +}; + +/* high speed support: */ +static struct CH9_UsbEndpointDescriptor acm_hs_notify_desc = { + .bLength = USB_DT_ENDPOINT_SIZE, + .bDescriptorType = CH9_USB_DT_ENDPOINT, + .bEndpointAddress = BULK_EP_NOTIFY, + .bmAttributes = CH9_USB_EP_INTERRUPT, + .wMaxPacketSize = cpuToLe16(GS_NOTIFY_MAXPACKET), + .bInterval = GS_LOG2_NOTIFY_INTERVAL+4, +}; + +static struct CH9_UsbEndpointDescriptor acm_hs_in_desc = { + .bLength = USB_DT_ENDPOINT_SIZE, + .bDescriptorType = CH9_USB_DT_ENDPOINT, + .bEndpointAddress = BULK_EP_IN, + .bmAttributes = CH9_USB_EP_BULK, + .wMaxPacketSize = cpuToLe16(512), +}; + +static struct CH9_UsbEndpointDescriptor acm_hs_out_desc = { + .bLength = USB_DT_ENDPOINT_SIZE, + .bDescriptorType = CH9_USB_DT_ENDPOINT, + .bEndpointAddress = BULK_EP_OUT, + .bmAttributes = CH9_USB_EP_BULK, + .wMaxPacketSize = cpuToLe16(512), +}; + +static void *descriptorsHs[] = { + //&acm_iad_descriptor, + &acm_control_interface_desc, + &acm_header_desc, + &acm_descriptor, + &acm_union_desc, + &acm_call_mgmt_descriptor, + &acm_hs_notify_desc, + &acm_data_interface_desc, + &acm_hs_out_desc, + &acm_hs_in_desc, + NULL, +}; + +/* string descriptors: */ + +#define ACM_CTRL_IDX 0 +#define ACM_DATA_IDX 1 +#define ACM_IAD_IDX 2 + + +// language descriptor for english +static uint8_t languageDesc[] = { + 4, CH9_USB_DT_STRING, 0x09, 0x04 +}; + +static CH9_UsbConfigurationDescriptor ConfDesc = { + .bLength = CH9_USB_DS_CONFIGURATION, + .bDescriptorType = CH9_USB_DT_CONFIGURATION, + .wTotalLength = 0x0000, // will be filed in get_descriptor request + .bNumInterfaces = 2, + .bConfigurationValue = 1, + .iConfiguration = 0, + .bmAttributes = CH9_USB_CONFIG_RESERVED | CH9_USB_CONFIG_BUS_POWERED, + .bMaxPower = 0xFA +}; + +//-------------- BOS descriptor set start -------------------------------------- + +static CH9_UsbBosDescriptor bosDesc = { + CH9_USB_DS_BOS, + CH9_USB_DT_BOS, + cpuToLe16(CH9_USB_DS_BOS + CH9_USB_DS_DEVICE_CAPABILITY_20), + 1 +}; + +static CH9_UsbCapabilityDescriptor capabilityExtDesc = { + CH9_USB_DS_DEVICE_CAPABILITY_20, + CH9_USB_DT_DEVICE_CAPABILITY, + CH9_USB_DCT_USB20_EXTENSION, + cpuToLe32(CH9_USB_USB20_EXT_LPM_SUPPORT) +}; +//-------------- BOS descriptor set end ---------------------------------------- + +static CH9_UsbDeviceQualifierDescriptor qualifierDesc = { + CH9_USB_DS_DEVICE_QUALIFIER, + CH9_USB_DT_DEVICE_QUALIFIER, + cpuToLe16(0x0200), + 0x00, + 0x00, + 0x00, + 64, + 0x01, + 0x00 +}; + +struct f_acm { + //struct gserial port; + uint8_t ctrl_id, data_id; + uint8_t port_num; + + uint8_t pending; + + /* lock is mostly for pending and notify_req ... they get accessed + * by callbacks both from tty (open/close/break) under its spinlock, + * and notify_req.complete() which can't use that lock. + */ + //spinlock_t lock; + +// struct usb_ep *notify; +// struct usb_request *notify_req; + + struct usb_cdc_line_coding port_line_coding; /* 8-N-1 etc */ + + /* SetControlLineState request -- CDC 1.1 section 6.2.14 (INPUT) */ + uint16_t port_handshake_bits; +#define ACM_CTRL_RTS (1 << 1) /* unused with full duplex */ +#define ACM_CTRL_DTR (1 << 0) /* host is ready for data r/w */ + + /* SerialState notification -- CDC 1.1 section 6.3.5 (OUTPUT) */ + uint16_t serial_state; +#define ACM_CTRL_OVERRUN (1 << 6) +#define ACM_CTRL_PARITY (1 << 5) +#define ACM_CTRL_FRAMING (1 << 4) +#define ACM_CTRL_RI (1 << 3) +#define ACM_CTRL_BRK (1 << 2) +#define ACM_CTRL_DSR (1 << 1) +#define ACM_CTRL_DCD (1 << 0) +}; + +#endif /*_USB_TTY_H*/ diff --git a/fsbl/plat/cv180x/platform.mk b/fsbl/plat/cv180x/platform.mk new file mode 100644 index 000000000..4d6454d00 --- /dev/null +++ b/fsbl/plat/cv180x/platform.mk @@ -0,0 +1,80 @@ +# +# Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause +# + +# Enable workarounds for selected Cortex-A53 errata +ERRATA_A53_835769 := 1 +ERRATA_A53_843419 := 1 +ERRATA_A53_855873 := 1 + +PAGE_SIZE_64KB := 1 +TEST_FROM_SPINOR1 := 0 + +DEFINES += -DLZ4_USER_MEMORY_FUNCTIONS=1 + +ifeq ($(FSBL_SECURE_BOOT_SUPPORT),1) +DEFINES += \ + -DNO_ALLOCS \ + -DARGTYPE=3 \ + -DLTC_NO_FILE \ + -DLTM_NO_FILE \ + -DLTM_DESC \ + -DLTC_SOURCE + +CRYPT_INCLUDES := \ + -Ilib/libtommath \ + -Ilib/libtomcrypt/src/headers \ + -Ilib/BigDigits + +CRYPT_SOURCES := \ + lib/BigDigits/bigdigits.c \ + lib/libtomcrypt/src/hashes/sha2/sha256.c +endif + +INCLUDES += \ + -Iinclude \ + ${CPU_INCLUDES} \ + -Iplat/ \ + -Iplat/${CHIP_ARCH}/include/uart \ + -Iplat/${CHIP_ARCH}/include/usb \ + -Iplat/${CHIP_ARCH}/include \ + -Iplat/${CHIP_ARCH}/include/${BOOT_CPU} \ + -Ilib/utils \ + -Ilib/lzma \ + -Ilib/lz4 \ + -Ilib/crc \ + ${STDLIB_INCLUDES} \ + ${CRYPT_INCLUDES} + +#BL_COMMON_SOURCES = \ + ${CPU_SOURCES} \ + lib/tf_printf/tf_printf.c \ + plat/${CHIP_ARCH}/platform.c \ + plat/${CHIP_ARCH}/security/security.c \ + ${STDLIB_SRCS} \ + ${CRYPT_SOURCES} + +#DECOMPRESSION_SOURCES = \ + lib/lzma/LzmaDec.c \ + lib/lz4/lz4_all.c \ + lib/lz4/xxhash.c + +#BL2_SOURCES = \ + ${BL2_CPU_SOURCES} \ + ${BL_COMMON_SOURCES} \ + plat/${CHIP_ARCH}/platform_device.c \ + plat/${CHIP_ARCH}/bl2/bl2_main.c \ + lib/utils/decompress.c \ + plat/${CHIP_ARCH}/usb/cps_cvi.c \ + plat/${CHIP_ARCH}/usb/usb_tty.c \ + plat/${CHIP_ARCH}/usb/dwc2_udc_otg.c \ + plat/${CHIP_ARCH}/usb/dwc2_udc_otg_xfer_dma.c \ + plat/${CHIP_ARCH}/usb/cv_usb.c \ + lib/crc/crc16.c \ + ${DECOMPRESSION_SOURCES} + +#include plat/${CHIP_ARCH}/ddr/ddr.mk + +BL2_LINKERFILE := plat/${CHIP_ARCH}/bl2/bl2.ld.S diff --git a/fsbl/plat/cv180x/prebuilt b/fsbl/plat/cv180x/prebuilt new file mode 120000 index 000000000..d5e38f157 --- /dev/null +++ b/fsbl/plat/cv180x/prebuilt @@ -0,0 +1 @@ +../cv181x/prebuilt \ No newline at end of file diff --git a/fsbl/plat/cv181x/bl2/bl2.ld.S b/fsbl/plat/cv181x/bl2/bl2.ld.S new file mode 100644 index 000000000..232a7d8ab --- /dev/null +++ b/fsbl/plat/cv181x/bl2/bl2.ld.S @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ifdef __riscv +OUTPUT_FORMAT("elf64-littleriscv") +OUTPUT_ARCH(riscv) +#else +OUTPUT_FORMAT("elf64-littleaarch64") +OUTPUT_ARCH(aarch64) +#endif +ENTRY(bl2_entrypoint) + +MEMORY { + RAM (rwx): ORIGIN = BL2_BASE, LENGTH = BL2_SIZE +} + +SECTIONS +{ + . = BL2_BASE; + ASSERT(. == ALIGN(4096), + "BL2_BASE address is not aligned on a page boundary.") + + ro . : { + __RO_START__ = .; + *bl2_entrypoint.o(.text*) + *(.vectors) + *(.text*) + *(.rodata*) + + __RO_END__ = .; + } >RAM + + /* + * .data must be placed at a lower address than the stacks if the stack + * protector is enabled. Alternatively, the .data.stack_protector_canary + * section can be placed independently of the main .data section. + */ + .data . : { + . = ALIGN(16); + __DATA_START__ = .; + *(.data*) + . = ALIGN(16); + __DATA_END__ = .; + } >RAM + + stacks (NOLOAD) : { + . = ALIGN(64); + __STACKS_START__ = .; + . += PLATFORM_STACK_SIZE; + . = ALIGN(64); + __STACKS_END__ = .; + } >RAM + + /* + * The .bss section gets initialised to 0 at runtime. + * Its base address should be 16-byte aligned for better performance of the + * zero-initialization code. + */ + .bss : ALIGN(16) { + . = ALIGN(16); + __BSS_START__ = .; + *(SORT_BY_ALIGNMENT(.bss*)) + *(COMMON) + . = ALIGN(16); + __BSS_END__ = .; + } >RAM + + /* + * Define a linker symbol to mark end of the RW memory area for this + * image. + */ + __BL2_END__ = .; + + __BSS_SIZE__ = SIZEOF(.bss); + + ASSERT(. <= (BL2_BASE + BL2_SIZE), "BL2 image has exceeded its limit.") + + #include +} diff --git a/fsbl/plat/cv181x/chip_conf.py b/fsbl/plat/cv181x/chip_conf.py new file mode 100755 index 000000000..2c487eda6 --- /dev/null +++ b/fsbl/plat/cv181x/chip_conf.py @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 + +import logging +import struct +import argparse + +CHIP_CONF_CMD_DELAY_MS = 0xFFFFFFFD +CHIP_CONF_CMD_DELAY_US = 0xFFFFFFFE + +CHIP_CONF_SCAN_START_1 = 0xFFFFFFA0 + + +def gen_chip_conf(args): + logging.info("gen_chip_conf") + regs = [ + (0x0E00000C, 0xA0000001), # ATF_DBG_REG = 0x0E00000C + (0x0E00000C, 0xA0000002), + # (CHIP_CONF_CMD_DELAY_MS, 100), + # (CHIP_CONF_CMD_DELAY_US, 100), + (CHIP_CONF_SCAN_START_1, 0xFFFFFFFF), + ] + + chip_conf = b"".join(struct.pack("= %r is required" % (PYTHON_MIN_VERSION,)) + sys.exit(-1) + + +try: + import coloredlogs +except ImportError: + coloredlogs = None + +try: + import argcomplete +except ImportError: + argcomplete = None + + +LOADER_2ND_MAGIC_ORIG = b"BL33" +LOADER_2ND_MAGIC_LZMA = b"B3MA" +LOADER_2ND_MAGIC_LZ4 = b"B3Z4" + +LOADER_2ND_MAGIC_LIST = [ + LOADER_2ND_MAGIC_ORIG, + LOADER_2ND_MAGIC_LZMA, + LOADER_2ND_MAGIC_LZ4, +] + +IMAGE_ALIGN = 512 +PARAM1_SIZE = 0x1000 +PARAM1_SIZE_WO_SIG = 0x800 +PARAM2_SIZE = 0x1000 + + +def round_up(divident, divisor): + return ((divident + divisor - 1) // divisor) * divisor + + +def lzma_compress(body): + z = lzma.LZMACompressor(lzma.FORMAT_ALONE, preset=lzma.PRESET_EXTREME) + compressed = z.compress(body) + compressed += z.flush() + + return compressed + + +def lz4_compress(body): + try: + import lz4.frame + except ImportError: + logging.error("lz4 is not installed. Run 'pip install lz4'.") + raise + + compressed = lz4.frame.compress(body) + return compressed + + +class Entry: + __slots__ = "name", "type", "addr", "_content", "entry_size" + + def __init__(self): + self.addr = None + self._content = None + + @property + def end(self): + return self.addr + self.entry_size + + @property + def content(self): + return self._content + + @content.setter + def content(self, value): + if type(value) == int: + value = value.to_bytes(self.entry_size, "little") + + if self.entry_size is not None: + if len(value) > self.entry_size: + raise ValueError("%s (%d bytes) must <= %#r" % (self.name, len(value), self.entry_size)) + value = value + b"\0" * (self.entry_size - len(value)) + + self._content = value + + @classmethod + def make(cls, name, entry_size, _type, init=None): + entry = Entry() + entry.name = name + entry.type = _type + entry.entry_size = entry_size + + if type(init) in (bytes, bytearray): + entry.content = bytes(init) + elif entry_size is not None: + entry.content = b"\0" * entry.entry_size + else: + entry.content = b"" + + return (name, entry) + + def toint(self): + if self.type != int: + raise TypeError("%s is not int type" % self.name) + + return int.from_bytes(self.content, "little") + + def tostr(self): + v = self.content + if self.type == int: + v = "%#08x" % self.toint() + elif type(self.content) in [bytes, bytearray]: + v = v.hex() + if len(v) > 32: + v = v[:32] + "..." + + return v + + def __str__(self): + v = self.tostr() + return "<%s=%s (%dbytes)>" % (self.name, v, self.entry_size) + + def __repr__(self): + v = self.tostr() + return "<%s: a=%#x s=%#x c=%s %r>" % (self.name, self.addr, self.entry_size, v, self.type) + + +class FIP: + param1 = OrderedDict( + [ + Entry.make("MAGIC1", 8, int, b"CVBL01\n\0"), + Entry.make("MAGIC2", 4, int), + Entry.make("PARAM_CKSUM", 4, int), + Entry.make("NAND_INFO", 128, int), + Entry.make("NOR_INFO", 36, int), + Entry.make("FIP_FLAGS", 8, int), + Entry.make("CHIP_CONF_SIZE", 4, int), + Entry.make("BLCP_IMG_CKSUM", 4, int), + Entry.make("BLCP_IMG_SIZE", 4, int), + Entry.make("BLCP_IMG_RUNADDR", 4, int), + Entry.make("BLCP_PARAM_LOADADDR", 4, int), + Entry.make("BLCP_PARAM_SIZE", 4, int), + Entry.make("BL2_IMG_CKSUM", 4, int), + Entry.make("BL2_IMG_SIZE", 4, int), + Entry.make("BLD_IMG_SIZE", 4, int), + Entry.make("PARAM2_LOADADDR", 4, int), + Entry.make("RESERVED1", 4, int), + Entry.make("CHIP_CONF", 760, bytes), + Entry.make("BL_EK", 32, bytes), + Entry.make("ROOT_PK", 512, bytes), + Entry.make("BL_PK", 512, bytes), + Entry.make("BL_PK_SIG", 512, bytes), + Entry.make("CHIP_CONF_SIG", 512, bytes), + Entry.make("BL2_IMG_SIG", 512, bytes), + Entry.make("BLCP_IMG_SIG", 512, bytes), + ] + ) + + body1 = OrderedDict( + [ + Entry.make("BLCP", None, bytes), + Entry.make("BL2", None, bytes), + ] + ) + + param2 = OrderedDict( + [ + Entry.make("MAGIC1", 8, int, b"CVLD02\n\0"), + Entry.make("PARAM2_CKSUM", 4, int), + Entry.make("RESERVED1", 4, bytes), + # DDR param + Entry.make("DDR_PARAM_CKSUM", 4, int), + Entry.make("DDR_PARAM_LOADADDR", 4, int), + Entry.make("DDR_PARAM_SIZE", 4, int), + Entry.make("DDR_PARAM_RESERVED", 4, int), + # BLCP_2ND + Entry.make("BLCP_2ND_CKSUM", 4, int), + Entry.make("BLCP_2ND_LOADADDR", 4, int), + Entry.make("BLCP_2ND_SIZE", 4, int), + Entry.make("BLCP_2ND_RUNADDR", 4, int), + # ATF-BL31 or OpenSBI + Entry.make("MONITOR_CKSUM", 4, int), + Entry.make("MONITOR_LOADADDR", 4, int), + Entry.make("MONITOR_SIZE", 4, int), + Entry.make("MONITOR_RUNADDR", 4, int), + # u-boot + Entry.make("LOADER_2ND_RESERVED0", 4, int), + Entry.make("LOADER_2ND_LOADADDR", 4, int), + Entry.make("LOADER_2ND_RESERVED1", 4, int), + Entry.make("LOADER_2ND_RESERVED2", 4, int), + # Reserved + Entry.make("RESERVED_LAST", 4096 - 16 * 5, bytes), + ] + ) + + body2 = OrderedDict( + [ + Entry.make("DDR_PARAM", None, bytes), + Entry.make("BLCP_2ND", None, bytes), + Entry.make("MONITOR", None, bytes), + Entry.make("LOADER_2ND", None, bytes), + ] + ) + + ldr_2nd_hdr = OrderedDict( + [ + Entry.make("JUMP0", 4, int), + Entry.make("MAGIC", 4, int), + Entry.make("CKSUM", 4, int), + Entry.make("SIZE", 4, int), + Entry.make("RUNADDR", 8, int), + Entry.make("RESERVED1", 4, int), + Entry.make("RESERVED2", 4, int), + ] + ) + + FIP_FLAGS_SCS_MASK = 0x000c + FIP_FLAGS_ENCRYPTED_MASK = 0x0030 + + def _param_size(self, param): + return max((e.end for e in param.values())) + + def _gen_param(self): + addr = 0 + for entry in self.param1.values(): + entry.addr = addr + addr += entry.entry_size + + assert PARAM1_SIZE_WO_SIG == self.param1["BL_PK_SIG"].addr + + addr = 0 + for entry in self.param2.values(): + entry.addr = addr + addr += entry.entry_size + + assert PARAM2_SIZE == self.param2["RESERVED_LAST"].addr + self.param2["RESERVED_LAST"].entry_size + + addr = 0 + for entry in self.ldr_2nd_hdr.values(): + entry.addr = addr + addr += entry.entry_size + + def __init__(self): + self.compress_algo = None + self._gen_param() + + def image_crc(self, image): + crc = binascii.crc_hqx(image, 0) + crc = pack(" + +// #define BIT(nr) (1U << (nr)) +#define GENMASK(msb, lsb) ((2U << (msb))-(1U << (lsb))) + +static inline uint32_t modified_bits_by_value(uint32_t orig, uint32_t value, uint32_t msb, uint32_t lsb) +{ + uint32_t bitmask = GENMASK(msb, lsb); + + orig &= ~bitmask; + return (orig | ((value << lsb) & bitmask)); +} + +static inline uint32_t get_bits_from_value(uint32_t value, uint32_t msb, uint32_t lsb) +{ + // if (msb < lsb) + // uartlog("%s: msb %u < lsb %u\n", __func__, msb, lsb); + return ((value & GENMASK(msb, lsb)) >> lsb); +} + +#define FIELD_SET modified_bits_by_value +#define FIELD_GET get_bits_from_value + +#endif /* __BITWISE_OPS_H__ */ diff --git a/fsbl/plat/cv181x/include/ddr/cvx16_dram_cap_check.h b/fsbl/plat/cv181x/include/ddr/cvx16_dram_cap_check.h new file mode 100644 index 000000000..47bc3d5de --- /dev/null +++ b/fsbl/plat/cv181x/include/ddr/cvx16_dram_cap_check.h @@ -0,0 +1,6 @@ +#ifndef __CVX16_DRAM_CAP_CHECK_H__ +#define __CVX16_DRAM_CAP_CHECK_H__ + +void cvx16_dram_cap_check(uint8_t size); + +#endif /* __CVX16_DRAM_CAP_CHECK_H__ */ diff --git a/fsbl/plat/cv181x/include/ddr/cvx16_pinmux.h b/fsbl/plat/cv181x/include/ddr/cvx16_pinmux.h new file mode 100644 index 000000000..8292fdb3b --- /dev/null +++ b/fsbl/plat/cv181x/include/ddr/cvx16_pinmux.h @@ -0,0 +1,6 @@ +#ifndef __CVX16_PINMUX_H__ +#define __CVX16_PINMUX_H__ + +void cvx16_pinmux(void); + +#endif /* __CVX16_PINMUX_H__ */ diff --git a/fsbl/plat/cv181x/include/ddr/ddr.h b/fsbl/plat/cv181x/include/ddr/ddr.h new file mode 100644 index 000000000..1f424910d --- /dev/null +++ b/fsbl/plat/cv181x/include/ddr/ddr.h @@ -0,0 +1,11 @@ +#ifndef __DDR_H__ +#define __DDR_H__ + +struct ddr_param { + uint8_t data[1024 * 16]; +}; + +int ddr_init(const struct ddr_param *ddr_param); + + +#endif /* __DDR_H__ */ diff --git a/fsbl/plat/cv181x/include/ddr/ddr_config/ddr2_1333_x16/ddr_init.h b/fsbl/plat/cv181x/include/ddr/ddr_config/ddr2_1333_x16/ddr_init.h new file mode 100644 index 000000000..5e280c30a --- /dev/null +++ b/fsbl/plat/cv181x/include/ddr/ddr_config/ddr2_1333_x16/ddr_init.h @@ -0,0 +1,1157 @@ +#ifndef __DDR_PI_PHY_H__ +#define __DDR_PI_PHY_H__ + +extern uint32_t ddr_data_rate; +// $Module: reg_cv_phy_param_ddr2_1333 $ +// $RegisterBank Version: V 1.0.00 $ +// $Author: KC TSAI $ +// $Date: Wed, 15 Sep 2021 11:31:12 AM $ +// + +#define DDR_PHY_REG_0_DATA 0b00000011000000100000000100000000 + // param_phyd_swap_ca0:[4:0]=0b00000 + // param_phyd_swap_ca1:[12:8]=0b00001 + // param_phyd_swap_ca2:[20:16]=0b00010 + // param_phyd_swap_ca3:[28:24]=0b00011 +#define DDR_PHY_REG_1_DATA 0b00000111000001100000010100000100 + // param_phyd_swap_ca4:[4:0]=0b00100 + // param_phyd_swap_ca5:[12:8]=0b00101 + // param_phyd_swap_ca6:[20:16]=0b00110 + // param_phyd_swap_ca7:[28:24]=0b00111 +#define DDR_PHY_REG_2_DATA 0b00001011000010100000100100001000 + // param_phyd_swap_ca8:[4:0]=0b01000 + // param_phyd_swap_ca9:[12:8]=0b01001 + // param_phyd_swap_ca10:[20:16]=0b01010 + // param_phyd_swap_ca11:[28:24]=0b01011 +#define DDR_PHY_REG_3_DATA 0b00001111000011100000110100001100 + // param_phyd_swap_ca12:[4:0]=0b01100 + // param_phyd_swap_ca13:[12:8]=0b01101 + // param_phyd_swap_ca14:[20:16]=0b01110 + // param_phyd_swap_ca15:[28:24]=0b01111 +#define DDR_PHY_REG_4_DATA 0b00010011000100100001000100010000 + // param_phyd_swap_ca16:[4:0]=0b10000 + // param_phyd_swap_ca17:[12:8]=0b10001 + // param_phyd_swap_ca18:[20:16]=0b10010 + // param_phyd_swap_ca19:[28:24]=0b10011 +#define DDR_PHY_REG_5_DATA 0b00000000000101100001010100010100 + // param_phyd_swap_ca20:[4:0]=0b10100 + // param_phyd_swap_ca21:[12:8]=0b10101 + // param_phyd_swap_ca22:[20:16]=0b10110 +#define DDR_PHY_REG_6_DATA 0b00000000000000000000000000000000 + // param_phyd_swap_cke0:[0:0]=0b0 + // param_phyd_swap_cs0:[4:4]=0b0 +#define DDR_PHY_REG_7_DATA 0b00000000000000000000000100000000 + // param_phyd_data_byte_swap_slice0:[1:0]=0b00 + // param_phyd_data_byte_swap_slice1:[9:8]=0b01 +#define DDR_PHY_REG_8_DATA 0b01110110010101000011001000010000 + // param_phyd_swap_byte0_dq0_mux:[3:0]=0b0000 + // param_phyd_swap_byte0_dq1_mux:[7:4]=0b0001 + // param_phyd_swap_byte0_dq2_mux:[11:8]=0b0010 + // param_phyd_swap_byte0_dq3_mux:[15:12]=0b0011 + // param_phyd_swap_byte0_dq4_mux:[19:16]=0b0100 + // param_phyd_swap_byte0_dq5_mux:[23:20]=0b0101 + // param_phyd_swap_byte0_dq6_mux:[27:24]=0b0110 + // param_phyd_swap_byte0_dq7_mux:[31:28]=0b0111 +#define DDR_PHY_REG_9_DATA 0b00000000000000000000000000001000 + // param_phyd_swap_byte0_dm_mux:[3:0]=0b1000 +#define DDR_PHY_REG_10_DATA 0b01110110010101000011001000010000 + // param_phyd_swap_byte1_dq0_mux:[3:0]=0b0000 + // param_phyd_swap_byte1_dq1_mux:[7:4]=0b0001 + // param_phyd_swap_byte1_dq2_mux:[11:8]=0b0010 + // param_phyd_swap_byte1_dq3_mux:[15:12]=0b0011 + // param_phyd_swap_byte1_dq4_mux:[19:16]=0b0100 + // param_phyd_swap_byte1_dq5_mux:[23:20]=0b0101 + // param_phyd_swap_byte1_dq6_mux:[27:24]=0b0110 + // param_phyd_swap_byte1_dq7_mux:[31:28]=0b0111 +#define DDR_PHY_REG_11_DATA 0b00000000000000000000000000001000 + // param_phyd_swap_byte1_dm_mux:[3:0]=0b1000 +#define DDR_PHY_REG_16_DATA 0b00000000000000000000000000000000 + // param_phyd_dll_rx_sw_mode:[0:0]=0b0 + // param_phyd_dll_rx_start_cal:[1:1]=0b0 + // param_phyd_dll_rx_cntr_mode:[2:2]=0b0 + // param_phyd_dll_rx_hwrst_time:[3:3]=0b0 + // param_phyd_dll_tx_sw_mode:[16:16]=0b0 + // param_phyd_dll_tx_start_cal:[17:17]=0b0 + // param_phyd_dll_tx_cntr_mode:[18:18]=0b0 + // param_phyd_dll_tx_hwrst_time:[19:19]=0b0 +#define DDR_PHY_REG_17_DATA 0b00000000011111110000000000001101 + // param_phyd_dll_slave_delay_en:[0:0]=0b1 + // param_phyd_dll_rw_en:[1:1]=0b0 + // param_phyd_dll_avg_mode:[2:2]=0b1 + // param_phyd_dll_upd_wait:[6:3]=0b0001 + // param_phyd_dll_sw_clr:[7:7]=0b0 + // param_phyd_dll_sw_code_mode:[8:8]=0b0 + // param_phyd_dll_sw_code:[23:16]=0b01111111 +#define DDR_PHY_REG_18_DATA 0b00000000000000000000000000000000 + // param_phya_reg_tx_clk_tx_dline_code_clkn0:[6:0]=0b0000000 + // param_phya_reg_tx_clk_tx_dline_code_clkp0:[14:8]=0b0000000 +#define DDR_PHY_REG_19_DATA 0b00000000000000000000000000010000 + // param_phya_reg_sel_ddr4_mode:[0:0]=0b0 + // param_phya_reg_sel_lpddr3_mode:[1:1]=0b0 + // param_phya_reg_sel_lpddr4_mode:[2:2]=0b0 + // param_phya_reg_sel_ddr3_mode:[3:3]=0b0 + // param_phya_reg_sel_ddr2_mode:[4:4]=0b1 +#define DDR_PHY_REG_20_DATA 0b00000000000000000000000000000100 + // param_phyd_dram_class:[3:0]=0b0100 +#define DDR_PHY_REG_21_DATA 0b00001100000000000000101100000000 + // param_phyd_wrlvl_start_delay_code:[6:0]=0b0000000 + // param_phyd_wrlvl_start_shift_code:[13:8]=0b001011 + // param_phyd_wrlvl_end_delay_code:[22:16]=0b0000000 + // param_phyd_wrlvl_end_shift_code:[29:24]=0b001100 +#define DDR_PHY_REG_22_DATA 0b00001001000101100000000001001111 + // param_phyd_wrlvl_capture_cnt:[3:0]=0b1111 + // param_phyd_wrlvl_dly_step:[7:4]=0b0100 + // param_phyd_wrlvl_disable:[11:8]=0b0000 + // param_phyd_wrlvl_resp_wait_cnt:[21:16]=0b010110 + // param_phyd_oenz_lead_cnt:[26:23]=0b0010 + // param_phyd_wrlvl_mode:[27:27]=0b1 +#define DDR_PHY_REG_23_DATA 0b00000000000000000000000000000000 + // param_phyd_wrlvl_sw:[0:0]=0b0 + // param_phyd_wrlvl_sw_upd_req:[1:1]=0b0 + // param_phyd_wrlvl_sw_resp:[2:2]=0b0 + // param_phyd_wrlvl_data_mask:[23:16]=0b00000000 +#define DDR_PHY_REG_24_DATA 0b00000100000000000000001101110000 + // param_phyd_pigtlvl_back_step:[7:0]=0b01110000 + // param_phyd_pigtlvl_capture_cnt:[11:8]=0b0011 + // param_phyd_pigtlvl_disable:[19:16]=0b0000 + // param_phyd_pigtlvl_dly_step:[27:24]=0b0100 +#define DDR_PHY_REG_25_DATA 0b00001110000000000000100100000000 + // param_phyd_pigtlvl_start_delay_code:[6:0]=0b0000000 + // param_phyd_pigtlvl_start_shift_code:[13:8]=0b001001 + // param_phyd_pigtlvl_end_delay_code:[22:16]=0b0000000 + // param_phyd_pigtlvl_end_shift_code:[29:24]=0b001110 +#define DDR_PHY_REG_26_DATA 0b00000000100000000000000000000000 + // param_phyd_pigtlvl_resp_wait_cnt:[5:0]=0b000000 + // param_phyd_pigtlvl_sw:[8:8]=0b0 + // param_phyd_pigtlvl_sw_resp:[13:12]=0b00 + // param_phyd_pigtlvl_sw_upd_req:[16:16]=0b0 + // param_phyd_rx_en_lead_cnt:[23:20]=0b1000 +#define DDR_PHY_REG_28_DATA 0b00000000000000000000000100001000 + // param_phyd_rgtrack_threshold:[4:0]=0b01000 + // param_phyd_rgtrack_dly_step:[11:8]=0b0001 + // param_phyd_rgtrack_disable:[19:16]=0b0000 +#define DDR_PHY_REG_29_DATA 0b00000000000001110010000000000000 + // param_phyd_zqcal_wait_count:[3:0]=0b0000 + // param_phyd_zqcal_cycle_count:[15:8]=0b00100000 + // param_phyd_zqcal_hw_mode:[18:16]=0b111 +#define DDR_PHY_REG_32_DATA 0b00011111000000001110000000000000 + // param_phyd_pirdlvl_dlie_code_start:[7:0]=0b00000000 + // param_phyd_pirdlvl_dlie_code_end:[15:8]=0b11100000 + // param_phyd_pirdlvl_deskew_start:[22:16]=0b0000000 + // param_phyd_pirdlvl_deskew_end:[30:24]=0b0011111 +#define DDR_PHY_REG_33_DATA 0b00000001000010010001000000001111 + // param_phyd_pirdlvl_trig_lvl_start:[4:0]=0b01111 + // param_phyd_pirdlvl_trig_lvl_end:[12:8]=0b10000 + // param_phyd_pirdlvl_rdvld_start:[20:16]=0b01001 + // param_phyd_pirdlvl_rdvld_end:[28:24]=0b00001 +#define DDR_PHY_REG_34_DATA 0b00001010000000010000000100010100 + // param_phyd_pirdlvl_dly_step:[3:0]=0b0100 + // param_phyd_pirdlvl_ds_dly_step:[7:4]=0b0001 + // param_phyd_pirdlvl_vref_step:[11:8]=0b0001 + // param_phyd_pirdlvl_disable:[15:12]=0b0000 + // param_phyd_pirdlvl_resp_wait_cnt:[21:16]=0b000001 + // param_phyd_pirdlvl_vref_wait_cnt:[31:24]=0b00001010 +#define DDR_PHY_REG_35_DATA 0b10101010101010100000000010001111 + // param_phyd_pirdlvl_rx_prebit_deskew_en:[0:0]=0b1 + // param_phyd_pirdlvl_rx_init_deskew_en:[1:1]=0b1 + // param_phyd_pirdlvl_vref_training_en:[2:2]=0b1 + // param_phyd_pirdlvl_rdvld_training_en:[3:3]=0b1 + // param_phyd_pirdlvl_capture_cnt:[7:4]=0b1000 + // param_phyd_pirdlvl_MR1520_BYTE:[15:8]=0b00000000 + // param_phyd_pirdlvl_MR3240:[31:16]=0b1010101010101010 +#define DDR_PHY_REG_36_DATA 0b00000000000000000011100000000000 + // param_phyd_pirdlvl_data_mask:[8:0]=0b000000000 + // param_phyd_pirdlvl_sw:[9:9]=0b0 + // param_phyd_pirdlvl_sw_upd_req:[10:10]=0b0 + // param_phyd_pirdlvl_sw_resp:[12:11]=0b11 + // param_phyd_pirdlvl_trig_lvl_dqs_follow_dq:[13:13]=0b1 +#define DDR_PHY_REG_37_DATA 0b00000000000000000000100000000001 + // param_phyd_pirdlvl_rdvld_offset:[3:0]=0b0001 + // param_phyd_pirdlvl_found_cnt_limite:[15:8]=0b00001000 +#define DDR_PHY_REG_40_DATA 0b00000111010000000000010101000000 + // param_phyd_piwdqlvl_start_delay_code:[6:0]=0b1000000 + // param_phyd_piwdqlvl_start_shift_code:[13:8]=0b000101 + // param_phyd_piwdqlvl_end_delay_code:[22:16]=0b1000000 + // param_phyd_piwdqlvl_end_shift_code:[29:24]=0b000111 +#define DDR_PHY_REG_41_DATA 0b00000001010000100000010100000100 + // param_phyd_piwdqlvl_tx_vref_start:[4:0]=0b00100 + // param_phyd_piwdqlvl_tx_vref_end:[12:8]=0b00101 + // param_phyd_piwdqlvl_capture_cnt:[19:16]=0b0010 + // param_phyd_piwdqlvl_dly_step:[23:20]=0b0100 + // param_phyd_piwdqlvl_vref_step:[27:24]=0b0001 + // param_phyd_piwdqlvl_disable:[31:28]=0b0000 +#define DDR_PHY_REG_42_DATA 0b00000000010101010000000000001010 + // param_phyd_piwdqlvl_vref_wait_cnt:[7:0]=0b00001010 + // param_phyd_piwdqlvl_tx_vref_training_en:[8:8]=0b0 + // param_phyd_piwdqlvl_byte_invert_0:[23:16]=0b01010101 +#define DDR_PHY_REG_43_DATA 0b00000000010101010011110001011010 + // param_phyd_piwdqlvl_dq_pattern_0:[15:0]=0b0011110001011010 + // param_phyd_piwdqlvl_byte_invert_1:[23:16]=0b01010101 +#define DDR_PHY_REG_44_DATA 0b00000000101010101010010111000011 + // param_phyd_piwdqlvl_dq_pattern_1:[15:0]=0b1010010111000011 + // param_phyd_piwdqlvl_byte_invert_2:[23:16]=0b10101010 +#define DDR_PHY_REG_45_DATA 0b00000000101010101111000011110000 + // param_phyd_piwdqlvl_dq_pattern_2:[15:0]=0b1111000011110000 + // param_phyd_piwdqlvl_byte_invert_3:[23:16]=0b10101010 +#define DDR_PHY_REG_46_DATA 0b00011110000000000000111100001111 + // param_phyd_piwdqlvl_dq_pattern_3:[15:0]=0b0000111100001111 + // param_phyd_piwdqlvl_data_mask:[24:16]=0b000000000 + // param_phyd_piwdqlvl_pattern_sel:[28:25]=0b1111 +#define DDR_PHY_REG_47_DATA 0b00000000000010000011111000010011 + // param_phyd_piwdqlvl_tdfi_phy_wrdata:[2:0]=0b011 + // param_phyd_piwdqlvl_oenz_lead_cnt:[6:3]=0b0010 + // param_phyd_piwdqlvl_sw:[7:7]=0b0 + // param_phyd_piwdqlvl_sw_upd_req:[8:8]=0b0 + // param_phyd_piwdqlvl_sw_resp:[10:9]=0b11 + // param_phyd_piwdqlvl_sw_result:[11:11]=0b1 + // param_phyd_piwdqlvl_dq_mode:[12:12]=0b1 + // param_phyd_piwdqlvl_dm_mode:[13:13]=0b1 + // param_phyd_piwdqlvl_found_cnt_limite:[23:16]=0b00001000 +#define DDR_PHY_REG_60_DATA 0b00000000000000000000000000000000 + // param_phyd_patch_revision:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_61_DATA 0b00000000000000110000000000110011 + // param_phyd_ca_shift_gating_en:[0:0]=0b1 + // param_phyd_cs_shift_gating_en:[1:1]=0b1 + // param_phyd_cke_shift_gating_en:[2:2]=0b0 + // param_phyd_resetz_shift_gating_en:[3:3]=0b0 + // param_phyd_tx_byte0_shift_gating_en:[4:4]=0b1 + // param_phyd_tx_byte1_shift_gating_en:[5:5]=0b1 + // param_phyd_rx_byte0_shift_gating_en:[16:16]=0b1 + // param_phyd_rx_byte1_shift_gating_en:[17:17]=0b1 +#define DDR_PHY_REG_62_DATA 0b00000000001000010000000000101100 + // param_phyd_lb_lfsr_seed0:[8:0]=0b000101100 + // param_phyd_lb_lfsr_seed1:[24:16]=0b000100001 +#define DDR_PHY_REG_63_DATA 0b00000000001101110000000000010110 + // param_phyd_lb_lfsr_seed2:[8:0]=0b000010110 + // param_phyd_lb_lfsr_seed3:[24:16]=0b000110111 +#define DDR_PHY_REG_64_DATA 0b00000100000000000000000000000000 + // param_phyd_lb_dq_en:[0:0]=0b0 + // param_phyd_lb_dq_go:[1:1]=0b0 + // param_phyd_lb_sw_en:[2:2]=0b0 + // param_phyd_lb_sw_rx_en:[3:3]=0b0 + // param_phyd_lb_sw_rx_mask:[4:4]=0b0 + // param_phyd_lb_sw_odt_en:[5:5]=0b0 + // param_phyd_lb_sw_ca_clkpattern:[6:6]=0b0 + // param_phyd_lb_sync_len:[31:16]=0b0000010000000000 +#define DDR_PHY_REG_65_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_dout0:[8:0]=0b000000000 + // param_phyd_lb_sw_dout1:[24:16]=0b000000000 +#define DDR_PHY_REG_67_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_oenz_dout0:[0:0]=0b0 + // param_phyd_lb_sw_oenz_dout1:[1:1]=0b0 + // param_phyd_lb_sw_dqsn0:[4:4]=0b0 + // param_phyd_lb_sw_dqsn1:[5:5]=0b0 + // param_phyd_lb_sw_dqsp0:[8:8]=0b0 + // param_phyd_lb_sw_dqsp1:[9:9]=0b0 + // param_phyd_lb_sw_oenz_dqs_dout0:[12:12]=0b0 + // param_phyd_lb_sw_oenz_dqs_dout1:[13:13]=0b0 +#define DDR_PHY_REG_68_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_ca_dout:[22:0]=0b00000000000000000000000 +#define DDR_PHY_REG_69_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_clkn0_dout:[0:0]=0b0 + // param_phyd_lb_sw_clkp0_dout:[4:4]=0b0 + // param_phyd_lb_sw_cke0_dout:[8:8]=0b0 + // param_phyd_lb_sw_resetz_dout:[12:12]=0b0 + // param_phyd_lb_sw_csb0_dout:[16:16]=0b0 +#define DDR_PHY_REG_70_DATA 0b00000000000000000000000000000000 + // param_phyd_clkctrl_init_complete:[0:0]=0b0 +#define DDR_PHY_REG_71_DATA 0b00000000000000000110101000010000 + // param_phyd_reg_resetz_dqs_rd_en:[4:4]=0b1 + // param_phyd_rx_upd_tx_sel:[9:8]=0b10 + // param_phyd_tx_upd_rx_sel:[11:10]=0b10 + // param_phyd_rx_en_ext_win:[15:12]=0b0110 + // param_phyd_fifo_rst_sel:[18:16]=0b000 + // param_phyd_fifo_sw_rst:[20:20]=0b0 +#define DDR_PHY_REG_72_DATA 0b00000000000000000000000000000000 + // param_phyd_phy_int_ack:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_73_DATA 0b11111111111111111111111011110111 + // param_phyd_phy_int_mask:[31:0]=0b11111111111111111111111011110111 +#define DDR_PHY_REG_74_DATA 0b00000000000000000000000000011111 + // param_phyd_calvl_rst_n:[0:0]=0b1 + // param_phyd_pigtlvl_rst_n:[1:1]=0b1 + // param_phyd_pirdlvl_rst_n:[2:2]=0b1 + // param_phyd_piwdqlvl_rst_n:[3:3]=0b1 + // param_phyd_wrlvl_rst_n:[4:4]=0b1 +#define DDR_PHY_REG_75_DATA 0b00000000000000000000000000000001 + // param_phyd_clk0_pol:[0:0]=0b1 +#define DDR_PHY_REG_76_DATA 0b00000000000000000000000100000001 + // param_phyd_tx_ca_oenz:[0:0]=0b1 + // param_phyd_tx_ca_clk0_oenz:[8:8]=0b1 +#define DDR_PHY_REG_77_DATA 0b00000000000000000000000100000000 + // param_phya_reg_en_test:[0:0]=0b0 + // param_phya_reg_tx_ca_test_en:[1:1]=0b0 + // param_phya_reg_tx_ca_en_ca_loop_back:[2:2]=0b0 + // param_phya_reg_tx_sel_4bit_mode_tx:[8:8]=0b1 + // param_phya_reg_tx_gpio_in:[16:16]=0b0 +#define DDR_PHY_REG_78_DATA 0b00000000000000000000000000010100 + // param_phya_reg_rx_en_ca_train_mode:[0:0]=0b0 + // param_phya_reg_rx_en_pream_train_mode:[1:1]=0b0 + // param_phya_reg_rx_sel_dqs_wo_pream_mode:[2:2]=0b1 + // param_phya_reg_rx_en_rec_offset:[3:3]=0b0 + // param_phya_reg_rx_sel_4bit_mode_rx:[4:4]=0b1 +#define DDR_PHY_REG_80_DATA 0b00000000000000000000000000000000 + // param_phya_reg_rx_ddrdll_enautok:[0:0]=0b0 + // param_phya_reg_rx_ddrdll_rstb:[1:1]=0b0 + // param_phya_reg_rx_ddrdll_selckout:[5:4]=0b00 + // param_phya_reg_rx_ddrdll_test:[7:6]=0b00 + // param_phya_reg_rx_ddrdll_sel:[15:8]=0b00000000 + // param_phya_reg_tx_ddrdll_enautok:[16:16]=0b0 + // param_phya_reg_tx_ddrdll_rstb:[17:17]=0b0 + // param_phya_reg_tx_ddrdll_selckout:[21:20]=0b00 + // param_phya_reg_tx_ddrdll_test:[23:22]=0b00 + // param_phya_reg_tx_ddrdll_sel:[31:24]=0b00000000 +#define DDR_PHY_REG_81_DATA 0b00000000000000000000000000000000 + // param_phya_reg_tx_zq_cmp_en:[0:0]=0b0 + // param_phya_reg_tx_zq_cmp_offset_cal_en:[1:1]=0b0 + // param_phya_reg_tx_zq_ph_en:[2:2]=0b0 + // param_phya_reg_tx_zq_pl_en:[3:3]=0b0 + // param_phya_reg_tx_zq_step2_en:[4:4]=0b0 + // param_phya_reg_tx_zq_cmp_offset:[12:8]=0b00000 + // param_phya_reg_tx_zq_sel_vref:[20:16]=0b00000 +#define DDR_PHY_REG_82_DATA 0b00000000000000000000100000001000 + // param_phya_reg_tx_zq_golden_drvn:[4:0]=0b01000 + // param_phya_reg_tx_zq_golden_drvp:[12:8]=0b01000 + // param_phya_reg_tx_zq_drvn:[20:16]=0b00000 + // param_phya_reg_tx_zq_drvp:[28:24]=0b00000 +#define DDR_PHY_REG_83_DATA 0b00000000000000000000000000000000 + // param_phya_reg_tx_zq_en_test_aux:[0:0]=0b0 + // param_phya_reg_tx_zq_en_test_mux:[1:1]=0b0 + // param_phya_reg_sel_zq_high_swing:[2:2]=0b0 + // param_phya_reg_zq_sel_test_out0:[7:4]=0b0000 + // param_phya_reg_zq_sel_test_out1:[11:8]=0b0000 + // param_phya_reg_tx_zq_sel_test_ana_in:[15:12]=0b0000 + // param_phya_reg_tx_zq_sel_gpio_in:[17:16]=0b00 +#define DDR_PHY_REG_84_DATA 0b00000000000000000000000000000101 + // param_phya_reg_tune_damp_r:[3:0]=0b0101 +#define DDR_PHY_REG_85_DATA 0b00000000000000000000000100000001 + // param_phyd_sel_cke_oenz:[0:0]=0b1 + // param_phyd_tx_dqsn_default_value:[8:8]=0b1 + // param_phyd_tx_dqsp_default_value:[12:12]=0b0 + // param_phyd_ddr4_2t_preamble:[16:16]=0b0 +#define DDR_PHY_REG_86_DATA 0b00000000000000000000000000000000 + // param_phya_reg_zqcal_done:[0:0]=0b0 +#define DDR_PHY_REG_87_DATA 0b00000000000000000000000000000000 + // param_phyd_dbg_sel:[7:0]=0b00000000 + // param_phyd_dbg_sel_en:[16:16]=0b0 +#define DDR_PHY_REG_89_DATA 0b00000000000000000000000000000000 + // param_phyd_reg_dfs_sel:[0:0]=0b0 +#define DDR_PHY_REG_90_DATA 0b00000000001100110011001100110001 + // param_phyd_ca_sw_dline_en:[0:0]=0b1 + // param_phyd_byte0_wr_sw_dline_en:[4:4]=0b1 + // param_phyd_byte1_wr_sw_dline_en:[5:5]=0b1 + // param_phyd_byte0_wdqs_sw_dline_en:[8:8]=0b1 + // param_phyd_byte1_wdqs_sw_dline_en:[9:9]=0b1 + // param_phyd_byte0_rd_sw_dline_en:[12:12]=0b1 + // param_phyd_byte1_rd_sw_dline_en:[13:13]=0b1 + // param_phyd_byte0_rdg_sw_dline_en:[16:16]=0b1 + // param_phyd_byte1_rdg_sw_dline_en:[17:17]=0b1 + // param_phyd_byte0_rdqs_sw_dline_en:[20:20]=0b1 + // param_phyd_byte1_rdqs_sw_dline_en:[21:21]=0b1 +#define DDR_PHY_REG_91_DATA 0b00000000000000000000000000000000 + // param_phyd_ca_raw_dline_upd:[0:0]=0b0 + // param_phyd_byte0_wr_raw_dline_upd:[4:4]=0b0 + // param_phyd_byte1_wr_raw_dline_upd:[5:5]=0b0 + // param_phyd_byte0_wdqs_raw_dline_upd:[8:8]=0b0 + // param_phyd_byte1_wdqs_raw_dline_upd:[9:9]=0b0 + // param_phyd_byte0_rd_raw_dline_upd:[12:12]=0b0 + // param_phyd_byte1_rd_raw_dline_upd:[13:13]=0b0 + // param_phyd_byte0_rdg_raw_dline_upd:[16:16]=0b0 + // param_phyd_byte1_rdg_raw_dline_upd:[17:17]=0b0 + // param_phyd_byte0_rdqs_raw_dline_upd:[20:20]=0b0 + // param_phyd_byte1_rdqs_raw_dline_upd:[21:21]=0b0 +#define DDR_PHY_REG_92_DATA 0b00000000000000000000000000000000 + // param_phyd_sw_dline_upd_req:[0:0]=0b0 +#define DDR_PHY_REG_93_DATA 0b00000000000000000000000100000000 + // param_phyd_sw_dfi_phyupd_req:[0:0]=0b0 + // param_phyd_sw_dfi_phyupd_req_clr:[4:4]=0b0 + // param_phyd_sw_phyupd_dline:[8:8]=0b1 +#define DDR_PHY_REG_96_DATA 0b00000000000000100000000000010000 + // param_phyd_dfi_wrlvl_req:[0:0]=0b0 + // param_phyd_dfi_wrlvl_odt_en:[4:4]=0b1 + // param_phyd_dfi_wrlvl_strobe_cnt:[19:16]=0b0010 +#define DDR_PHY_REG_97_DATA 0b00000000000000000000000000000000 + // param_phyd_dfi_rdglvl_req:[0:0]=0b0 + // param_phyd_dfi_rdglvl_ddr3_mpr:[4:4]=0b0 +#define DDR_PHY_REG_98_DATA 0b00000000000000000000000000000000 + // param_phyd_dfi_rdlvl_req:[0:0]=0b0 + // param_phyd_dfi_rdlvl_ddr3_mpr:[4:4]=0b0 +#define DDR_PHY_REG_99_DATA 0b00000000000001010000010000000000 + // param_phyd_dfi_wdqlvl_req:[0:0]=0b0 + // param_phyd_dfi_wdqlvl_bist_data_en:[4:4]=0b0 + // param_phyd_dfi_wdqlvl_vref_train_en:[10:10]=0b1 + // param_phyd_dfi_wdqlvl_vref_wait_cnt:[23:16]=0b00000101 +#define DDR_PHY_REG_100_DATA 0b00000000000000100001001000001110 + // param_phyd_dfi_wdqlvl_vref_start:[6:0]=0b0001110 + // param_phyd_dfi_wdqlvl_vref_end:[14:8]=0b0010010 + // param_phyd_dfi_wdqlvl_vref_step:[19:16]=0b0010 +#define DDR_PHY_REG_128_DATA 0b00000000000000000000000000000000 + // param_phya_reg_byte0_test_en:[0:0]=0b0 + // param_phya_reg_tx_byte0_ddr_test:[15:8]=0b00000000 + // param_phya_reg_rx_byte0_sel_test_in0:[19:16]=0b0000 + // param_phya_reg_rx_byte0_sel_test_in1:[23:20]=0b0000 +#define DDR_PHY_REG_129_DATA 0b00000000000000000000010001000000 + // param_phya_reg_tx_byte0_en_rx_awys_on:[0:0]=0b0 + // param_phya_reg_tx_byte0_sel_en_rx_dly:[5:4]=0b00 + // param_phya_reg_rx_byte0_sel_en_rx_gen_rst:[6:6]=0b1 + // param_phya_reg_byte0_mask_oenz:[8:8]=0b0 + // param_phya_reg_tx_byte0_en_mask:[10:10]=0b1 + // param_phya_reg_rx_byte0_sel_cnt_mode:[13:12]=0b00 + // param_phya_reg_tx_byte0_sel_int_loop_back:[14:14]=0b0 + // param_phya_reg_rx_byte0_sel_dqs_dly_for_gated:[17:16]=0b00 + // param_phya_reg_tx_byte0_en_extend_oenz_gated_dline:[18:18]=0b0 +#define DDR_PHY_REG_130_DATA 0b00000000000000000000000000000000 + // param_phyd_reg_reserved_byte0:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_136_DATA 0b00000000000000000000000000000000 + // param_phya_reg_byte1_test_en:[0:0]=0b0 + // param_phya_reg_tx_byte1_ddr_test:[15:8]=0b00000000 + // param_phya_reg_rx_byte1_sel_test_in0:[19:16]=0b0000 + // param_phya_reg_rx_byte1_sel_test_in1:[23:20]=0b0000 +#define DDR_PHY_REG_137_DATA 0b00000000000000000000010001000000 + // param_phya_reg_tx_byte1_en_rx_awys_on:[0:0]=0b0 + // param_phya_reg_tx_byte1_sel_en_rx_dly:[5:4]=0b00 + // param_phya_reg_rx_byte1_sel_en_rx_gen_rst:[6:6]=0b1 + // param_phya_reg_byte1_mask_oenz:[8:8]=0b0 + // param_phya_reg_tx_byte1_en_mask:[10:10]=0b1 + // param_phya_reg_rx_byte1_sel_cnt_mode:[13:12]=0b00 + // param_phya_reg_tx_byte1_sel_int_loop_back:[14:14]=0b0 + // param_phya_reg_rx_byte1_sel_dqs_dly_for_gated:[17:16]=0b00 + // param_phya_reg_tx_byte1_en_extend_oenz_gated_dline:[18:18]=0b0 +#define DDR_PHY_REG_138_DATA 0b00000000000000000000000000000000 + // param_phyd_reg_reserved_byte1:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_0_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_ca_sel_lpddr4_pmos_ph_ca:[3:3]=0b0 + // f0_param_phya_reg_tx_clk_sel_lpddr4_pmos_ph_clk:[4:4]=0b0 + // f0_param_phya_reg_tx_sel_lpddr4_pmos_ph:[5:5]=0b0 +#define DDR_PHY_REG_1_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_ca_drvn_de:[1:0]=0b00 + // f0_param_phya_reg_tx_ca_drvp_de:[5:4]=0b00 + // f0_param_phya_reg_tx_clk0_drvn_de:[9:8]=0b00 + // f0_param_phya_reg_tx_clk0_drvp_de:[13:12]=0b00 + // f0_param_phya_reg_tx_csb_drvn_de:[17:16]=0b00 + // f0_param_phya_reg_tx_csb_drvp_de:[21:20]=0b00 + // f0_param_phya_reg_tx_ca_en_tx_de:[24:24]=0b0 + // f0_param_phya_reg_tx_clk0_en_tx_de:[28:28]=0b0 + // f0_param_phya_reg_tx_csb_en_tx_de:[30:30]=0b0 +#define DDR_PHY_REG_2_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_ca_sel_dly1t_ca:[22:0]=0b00000000000000000000000 +#define DDR_PHY_REG_3_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_clk_sel_dly1t_clk0:[0:0]=0b0 + // f0_param_phya_reg_tx_ca_sel_dly1t_cke0:[8:8]=0b0 + // f0_param_phya_reg_tx_ca_sel_dly1t_csb0:[16:16]=0b0 +#define DDR_PHY_REG_4_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_vref_en_free_offset:[0:0]=0b0 + // f0_param_phya_reg_tx_vref_en_rangex2:[1:1]=0b0 + // f0_param_phya_reg_tx_vref_sel_lpddr4divby2p5:[2:2]=0b0 + // f0_param_phya_reg_tx_vref_sel_lpddr4divby3:[3:3]=0b0 + // f0_param_phya_reg_tx_vref_offset:[14:8]=0b0000000 + // f0_param_phya_reg_tx_vref_sel:[20:16]=0b10000 +#define DDR_PHY_REG_5_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_vrefca_en_free_offset:[0:0]=0b0 + // f0_param_phya_reg_tx_vrefca_en_rangex2:[1:1]=0b0 + // f0_param_phya_reg_tx_vrefca_offset:[14:8]=0b0000000 + // f0_param_phya_reg_tx_vrefca_sel:[20:16]=0b10000 +#define DDR_PHY_REG_6_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_tx_byte_dqs_extend:[2:0]=0b000 +#define DDR_PHY_REG_7_F0_DATA 0b00000000000000000100000001000000 + // f0_param_phya_reg_rx_byte0_odt_reg:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte0_sel_odt_reg_mode:[6:6]=0b1 + // f0_param_phya_reg_rx_byte1_odt_reg:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte1_sel_odt_reg_mode:[14:14]=0b1 +#define DDR_PHY_REG_64_F0_DATA 0b00000000000000000001000000000001 + // f0_param_phya_reg_rx_byte0_en_lsmode:[0:0]=0b1 + // f0_param_phya_reg_rx_byte0_hystr:[5:4]=0b00 + // f0_param_phya_reg_rx_byte0_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f0_param_phya_reg_rx_byte0_sel_odt_center_tap:[10:10]=0b0 + // f0_param_phya_reg_byte0_en_rec_vol_mode:[12:12]=0b1 + // f0_param_phya_reg_tx_byte0_force_en_lvstl_ph:[14:14]=0b0 + // f0_param_phya_reg_rx_byte0_force_en_lvstl_odt:[16:16]=0b0 + // f0_param_phya_reg_rx_byte0_en_trig_lvl_rangex2:[18:18]=0b0 + // f0_param_phya_reg_rx_byte0_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_65_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_byte0_drvn_de_dq:[1:0]=0b00 + // f0_param_phya_reg_tx_byte0_drvp_de_dq:[5:4]=0b00 + // f0_param_phya_reg_tx_byte0_drvn_de_dqs:[9:8]=0b00 + // f0_param_phya_reg_tx_byte0_drvp_de_dqs:[13:12]=0b00 + // f0_param_phya_reg_tx_byte0_en_tx_de_dq:[16:16]=0b0 + // f0_param_phya_reg_tx_byte0_en_tx_de_dqs:[20:20]=0b1 +#define DDR_PHY_REG_66_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte0_sel_dly1t_dq:[8:0]=0b000000000 + // f0_param_phya_reg_tx_byte0_sel_dly1t_dqs:[12:12]=0b0 + // f0_param_phya_reg_tx_byte0_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_67_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4divby3:[4:4]=0b0 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_68_F0_DATA 0b00000000000000000000000000000100 + // f0_param_phyd_reg_rx_byte0_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_69_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte0_dq0_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte0_dq1_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte0_dq2_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte0_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_70_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte0_dq4_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte0_dq5_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte0_dq6_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte0_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_71_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte0_dm_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte0_dqsn_offset:[19:16]=0b0000 + // f0_param_phyd_reg_byte0_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_72_F0_DATA 0b00000000000000000000000000000011 + // f0_param_phyd_tx_byte0_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_80_F0_DATA 0b00000000000000000001000000000001 + // f0_param_phya_reg_rx_byte1_en_lsmode:[0:0]=0b1 + // f0_param_phya_reg_rx_byte1_hystr:[5:4]=0b00 + // f0_param_phya_reg_rx_byte1_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f0_param_phya_reg_rx_byte1_sel_odt_center_tap:[10:10]=0b0 + // f0_param_phya_reg_byte1_en_rec_vol_mode:[12:12]=0b1 + // f0_param_phya_reg_tx_byte1_force_en_lvstl_ph:[14:14]=0b0 + // f0_param_phya_reg_rx_byte1_force_en_lvstl_odt:[16:16]=0b0 + // f0_param_phya_reg_rx_byte1_en_trig_lvl_rangex2:[18:18]=0b0 + // f0_param_phya_reg_rx_byte1_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_81_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_byte1_drvn_de_dq:[1:0]=0b00 + // f0_param_phya_reg_tx_byte1_drvp_de_dq:[5:4]=0b00 + // f0_param_phya_reg_tx_byte1_drvn_de_dqs:[9:8]=0b00 + // f0_param_phya_reg_tx_byte1_drvp_de_dqs:[13:12]=0b00 + // f0_param_phya_reg_tx_byte1_en_tx_de_dq:[16:16]=0b0 + // f0_param_phya_reg_tx_byte1_en_tx_de_dqs:[20:20]=0b1 +#define DDR_PHY_REG_82_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte1_sel_dly1t_dq:[8:0]=0b000000000 + // f0_param_phya_reg_tx_byte1_sel_dly1t_dqs:[12:12]=0b0 + // f0_param_phya_reg_tx_byte1_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_83_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4divby3:[4:4]=0b0 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_84_F0_DATA 0b00000000000000000000000000000100 + // f0_param_phyd_reg_rx_byte1_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_85_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte1_dq0_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte1_dq1_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte1_dq2_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte1_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_86_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte1_dq4_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte1_dq5_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte1_dq6_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte1_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_87_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte1_dm_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte1_dqsn_offset:[19:16]=0b0000 + // f0_param_phyd_reg_byte1_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_88_F0_DATA 0b00000000000000000000000000000011 + // f0_param_phyd_tx_byte1_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_320_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_ca0_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_ca0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_331_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_tx_ca22_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_332_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_cke0_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_cke0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_333_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_csb0_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_cs0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_334_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_resetz_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_reset_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_336_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_ca0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_348_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_cke0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_349_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_csb0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_350_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_resetz_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_351_F0_DATA 0b00001000000010000000010000000100 + // f0_param_phya_reg_tx_ca_drvn_ca:[4:0]=0b00100 + // f0_param_phya_reg_tx_ca_drvp_ca:[12:8]=0b00100 + // f0_param_phya_reg_tx_ca_drvn_csb:[20:16]=0b01000 + // f0_param_phya_reg_tx_ca_drvp_csb:[28:24]=0b01000 +#define DDR_PHY_REG_352_F0_DATA 0b00001000000010000000100000001000 + // f0_param_phya_reg_tx_clk_drvn_clkn0:[4:0]=0b01000 + // f0_param_phya_reg_tx_clk_drvp_clkn0:[12:8]=0b01000 + // f0_param_phya_reg_tx_clk_drvn_clkp0:[20:16]=0b01000 + // f0_param_phya_reg_tx_clk_drvp_clkp0:[28:24]=0b01000 +#define DDR_PHY_REG_384_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit0_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_385_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit2_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_386_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit4_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_387_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit6_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_388_F0_DATA 0b00000000000000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_389_F0_DATA 0b00001101000000000000000000000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f0_param_phyd_tx_byte0_dqs_shift:[29:24]=0b001101 +#define DDR_PHY_REG_390_F0_DATA 0b00001010000000000000101100000000 + // f0_param_phyd_tx_byte0_oenz_dqs_shift:[13:8]=0b001011 + // f0_param_phyd_tx_byte0_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_391_F0_DATA 0b00000000000001000000010000000000 + // f0_param_phyd_tx_byte0_oenz_dqs_extend:[11:8]=0b0100 + // f0_param_phyd_tx_byte0_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_392_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_393_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_394_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_395_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_396_F0_DATA 0b00000000000000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_397_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_398_F0_DATA 0b00000000000000000000100000001000 + // f0_param_phya_reg_tx_byte0_drvn_dq:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte0_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_399_F0_DATA 0b00001000000010000000100000001000 + // f0_param_phya_reg_tx_byte0_drvn_dqsn:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte0_drvp_dqsn:[12:8]=0b01000 + // f0_param_phya_reg_tx_byte0_drvn_dqsp:[20:16]=0b01000 + // f0_param_phya_reg_tx_byte0_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_400_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit0_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_401_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit2_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_402_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit4_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_403_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit6_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_404_F0_DATA 0b00000000000000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_405_F0_DATA 0b00001101000000000000000000000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f0_param_phyd_tx_byte1_dqs_shift:[29:24]=0b001101 +#define DDR_PHY_REG_406_F0_DATA 0b00001010000000000000101100000000 + // f0_param_phyd_tx_byte1_oenz_dqs_shift:[13:8]=0b001011 + // f0_param_phyd_tx_byte1_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_407_F0_DATA 0b00000000000001000000010000000000 + // f0_param_phyd_tx_byte1_oenz_dqs_extend:[11:8]=0b0100 + // f0_param_phyd_tx_byte1_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_408_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_409_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_410_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_411_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_412_F0_DATA 0b00000000000000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_413_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_414_F0_DATA 0b00000000000000000000100000001000 + // f0_param_phya_reg_tx_byte1_drvn_dq:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte1_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_415_F0_DATA 0b00001000000010000000100000001000 + // f0_param_phya_reg_tx_byte1_drvn_dqsn:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte1_drvp_dqsn:[12:8]=0b01000 + // f0_param_phya_reg_tx_byte1_drvn_dqsp:[20:16]=0b01000 + // f0_param_phya_reg_tx_byte1_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_448_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte0_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_449_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte0_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_450_F0_DATA 0b00000000010000000100000000000000 + // f0_param_phyd_reg_rx_byte0_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b01000000 + // f0_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b01000000 +#define DDR_PHY_REG_451_F0_DATA 0b00000000000000000000100000000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_mask_ranka_sw:[6:0]=0b0000000 + // f0_param_phyd_rx_byte0_mask_shift:[13:8]=0b001000 +#define DDR_PHY_REG_452_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_rx_byte0_en_shift:[13:8]=0b000000 + // f0_param_phyd_rx_byte0_odt_en_shift:[29:24]=0b000000 +#define DDR_PHY_REG_453_F0_DATA 0b00000000000001110000111000001110 + // f0_param_phyd_rx_byte0_en_extend:[3:0]=0b1110 + // f0_param_phyd_rx_byte0_odt_en_extend:[11:8]=0b1110 + // f0_param_phyd_rx_byte0_rden_to_rdvld:[20:16]=0b00111 +#define DDR_PHY_REG_454_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte0_rx_dq0_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq1_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq2_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_455_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte0_rx_dq4_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq5_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq6_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_456_F0_DATA 0b01000000010000000000000000000000 + // f0_param_phya_reg_rx_byte0_rx_dq8_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_tx_byte0_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f0_param_phya_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_457_F0_DATA 0b00000000000100000000000000010000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dq:[4:0]=0b10000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dq_offset:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dqs:[20:16]=0b10000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dqs_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_460_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte1_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_461_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte1_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_462_F0_DATA 0b00000000010000000100000000000000 + // f0_param_phyd_reg_rx_byte1_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b01000000 + // f0_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b01000000 +#define DDR_PHY_REG_463_F0_DATA 0b00000000000000000000100000000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_mask_ranka_sw:[6:0]=0b0000000 + // f0_param_phyd_rx_byte1_mask_shift:[13:8]=0b001000 +#define DDR_PHY_REG_464_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_rx_byte1_en_shift:[13:8]=0b000000 + // f0_param_phyd_rx_byte1_odt_en_shift:[29:24]=0b000000 +#define DDR_PHY_REG_465_F0_DATA 0b00000000000001110000111000001110 + // f0_param_phyd_rx_byte1_en_extend:[3:0]=0b1110 + // f0_param_phyd_rx_byte1_odt_en_extend:[11:8]=0b1110 + // f0_param_phyd_rx_byte1_rden_to_rdvld:[20:16]=0b00111 +#define DDR_PHY_REG_466_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte1_rx_dq0_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq1_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq2_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_467_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte1_rx_dq4_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq5_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq6_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_468_F0_DATA 0b01000000010000000000000000000000 + // f0_param_phya_reg_rx_byte1_rx_dq8_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_tx_byte1_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f0_param_phya_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_469_F0_DATA 0b00000000000100000000000000010000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dq:[4:0]=0b10000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dq_offset:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dqs:[20:16]=0b10000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dqs_offset:[30:24]=0b0000000 +#ifdef F1_TEST + +#define DDR_PHY_REG_0_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_ca_sel_lpddr4_pmos_ph_ca:[3:3]=0b0 + // f1_param_phya_reg_tx_clk_sel_lpddr4_pmos_ph_clk:[4:4]=0b0 + // f1_param_phya_reg_tx_sel_lpddr4_pmos_ph:[5:5]=0b0 +#define DDR_PHY_REG_1_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_ca_drvn_de:[1:0]=0b00 + // f1_param_phya_reg_tx_ca_drvp_de:[5:4]=0b00 + // f1_param_phya_reg_tx_clk0_drvn_de:[9:8]=0b00 + // f1_param_phya_reg_tx_clk0_drvp_de:[13:12]=0b00 + // f1_param_phya_reg_tx_csb_drvn_de:[17:16]=0b00 + // f1_param_phya_reg_tx_csb_drvp_de:[21:20]=0b00 + // f1_param_phya_reg_tx_ca_en_tx_de:[24:24]=0b0 + // f1_param_phya_reg_tx_clk0_en_tx_de:[28:28]=0b0 + // f1_param_phya_reg_tx_csb_en_tx_de:[30:30]=0b0 +#define DDR_PHY_REG_2_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_ca_sel_dly1t_ca:[22:0]=0b00000000000000000000000 +#define DDR_PHY_REG_3_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_clk_sel_dly1t_clk0:[0:0]=0b0 + // f1_param_phya_reg_tx_ca_sel_dly1t_cke0:[8:8]=0b0 + // f1_param_phya_reg_tx_ca_sel_dly1t_csb0:[16:16]=0b0 +#define DDR_PHY_REG_4_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_vref_en_free_offset:[0:0]=0b0 + // f1_param_phya_reg_tx_vref_en_rangex2:[1:1]=0b0 + // f1_param_phya_reg_tx_vref_sel_lpddr4divby2p5:[2:2]=0b0 + // f1_param_phya_reg_tx_vref_sel_lpddr4divby3:[3:3]=0b0 + // f1_param_phya_reg_tx_vref_offset:[14:8]=0b0000000 + // f1_param_phya_reg_tx_vref_sel:[20:16]=0b10000 +#define DDR_PHY_REG_5_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_vrefca_en_free_offset:[0:0]=0b0 + // f1_param_phya_reg_tx_vrefca_en_rangex2:[1:1]=0b0 + // f1_param_phya_reg_tx_vrefca_offset:[14:8]=0b0000000 + // f1_param_phya_reg_tx_vrefca_sel:[20:16]=0b10000 +#define DDR_PHY_REG_6_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_tx_byte_dqs_extend:[2:0]=0b000 +#define DDR_PHY_REG_7_F1_DATA 0b00000000000000000100000001000000 + // f1_param_phya_reg_rx_byte0_odt_reg:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte0_sel_odt_reg_mode:[6:6]=0b1 + // f1_param_phya_reg_rx_byte1_odt_reg:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte1_sel_odt_reg_mode:[14:14]=0b1 +#define DDR_PHY_REG_64_F1_DATA 0b00000000000000000001000000000001 + // f1_param_phya_reg_rx_byte0_en_lsmode:[0:0]=0b1 + // f1_param_phya_reg_rx_byte0_hystr:[5:4]=0b00 + // f1_param_phya_reg_rx_byte0_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f1_param_phya_reg_rx_byte0_sel_odt_center_tap:[10:10]=0b0 + // f1_param_phya_reg_byte0_en_rec_vol_mode:[12:12]=0b1 + // f1_param_phya_reg_tx_byte0_force_en_lvstl_ph:[14:14]=0b0 + // f1_param_phya_reg_rx_byte0_force_en_lvstl_odt:[16:16]=0b0 + // f1_param_phya_reg_rx_byte0_en_trig_lvl_rangex2:[18:18]=0b0 + // f1_param_phya_reg_rx_byte0_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_65_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_byte0_drvn_de_dq:[1:0]=0b00 + // f1_param_phya_reg_tx_byte0_drvp_de_dq:[5:4]=0b00 + // f1_param_phya_reg_tx_byte0_drvn_de_dqs:[9:8]=0b00 + // f1_param_phya_reg_tx_byte0_drvp_de_dqs:[13:12]=0b00 + // f1_param_phya_reg_tx_byte0_en_tx_de_dq:[16:16]=0b0 + // f1_param_phya_reg_tx_byte0_en_tx_de_dqs:[20:20]=0b1 +#define DDR_PHY_REG_66_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte0_sel_dly1t_dq:[8:0]=0b000000000 + // f1_param_phya_reg_tx_byte0_sel_dly1t_dqs:[12:12]=0b0 + // f1_param_phya_reg_tx_byte0_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_67_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4divby3:[4:4]=0b0 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_68_F1_DATA 0b00000000000000000000000000000100 + // f1_param_phyd_reg_rx_byte0_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_69_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte0_dq0_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte0_dq1_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte0_dq2_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte0_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_70_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte0_dq4_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte0_dq5_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte0_dq6_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte0_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_71_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte0_dm_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte0_dqsn_offset:[19:16]=0b0000 + // f1_param_phyd_reg_byte0_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_72_F1_DATA 0b00000000000000000000000000000011 + // f1_param_phyd_tx_byte0_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_80_F1_DATA 0b00000000000000000001000000000001 + // f1_param_phya_reg_rx_byte1_en_lsmode:[0:0]=0b1 + // f1_param_phya_reg_rx_byte1_hystr:[5:4]=0b00 + // f1_param_phya_reg_rx_byte1_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f1_param_phya_reg_rx_byte1_sel_odt_center_tap:[10:10]=0b0 + // f1_param_phya_reg_byte1_en_rec_vol_mode:[12:12]=0b1 + // f1_param_phya_reg_tx_byte1_force_en_lvstl_ph:[14:14]=0b0 + // f1_param_phya_reg_rx_byte1_force_en_lvstl_odt:[16:16]=0b0 + // f1_param_phya_reg_rx_byte1_en_trig_lvl_rangex2:[18:18]=0b0 + // f1_param_phya_reg_rx_byte1_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_81_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_byte1_drvn_de_dq:[1:0]=0b00 + // f1_param_phya_reg_tx_byte1_drvp_de_dq:[5:4]=0b00 + // f1_param_phya_reg_tx_byte1_drvn_de_dqs:[9:8]=0b00 + // f1_param_phya_reg_tx_byte1_drvp_de_dqs:[13:12]=0b00 + // f1_param_phya_reg_tx_byte1_en_tx_de_dq:[16:16]=0b0 + // f1_param_phya_reg_tx_byte1_en_tx_de_dqs:[20:20]=0b1 +#define DDR_PHY_REG_82_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte1_sel_dly1t_dq:[8:0]=0b000000000 + // f1_param_phya_reg_tx_byte1_sel_dly1t_dqs:[12:12]=0b0 + // f1_param_phya_reg_tx_byte1_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_83_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4divby3:[4:4]=0b0 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_84_F1_DATA 0b00000000000000000000000000000100 + // f1_param_phyd_reg_rx_byte1_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_85_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte1_dq0_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte1_dq1_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte1_dq2_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte1_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_86_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte1_dq4_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte1_dq5_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte1_dq6_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte1_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_87_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte1_dm_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte1_dqsn_offset:[19:16]=0b0000 + // f1_param_phyd_reg_byte1_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_88_F1_DATA 0b00000000000000000000000000000011 + // f1_param_phyd_tx_byte1_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_320_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_ca0_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_ca0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_331_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_tx_ca22_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_332_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_cke0_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_cke0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_333_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_csb0_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_cs0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_334_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_resetz_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_reset_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_336_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_ca0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_348_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_cke0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_349_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_csb0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_350_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_resetz_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_351_F1_DATA 0b00001000000010000000010000000100 + // f1_param_phya_reg_tx_ca_drvn_ca:[4:0]=0b00100 + // f1_param_phya_reg_tx_ca_drvp_ca:[12:8]=0b00100 + // f1_param_phya_reg_tx_ca_drvn_csb:[20:16]=0b01000 + // f1_param_phya_reg_tx_ca_drvp_csb:[28:24]=0b01000 +#define DDR_PHY_REG_352_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_clk_drvn_clkn0:[4:0]=0b01000 + // f1_param_phya_reg_tx_clk_drvp_clkn0:[12:8]=0b01000 + // f1_param_phya_reg_tx_clk_drvn_clkp0:[20:16]=0b01000 + // f1_param_phya_reg_tx_clk_drvp_clkp0:[28:24]=0b01000 +#define DDR_PHY_REG_384_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit0_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_385_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit2_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_386_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit4_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_387_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit6_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_388_F1_DATA 0b00000000000000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_389_F1_DATA 0b00001101000000000000000000000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f1_param_phyd_tx_byte0_dqs_shift:[29:24]=0b001101 +#define DDR_PHY_REG_390_F1_DATA 0b00001010000000000000101100000000 + // f1_param_phyd_tx_byte0_oenz_dqs_shift:[13:8]=0b001011 + // f1_param_phyd_tx_byte0_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_391_F1_DATA 0b00000000000001000000010000000000 + // f1_param_phyd_tx_byte0_oenz_dqs_extend:[11:8]=0b0100 + // f1_param_phyd_tx_byte0_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_392_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_393_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_394_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_395_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_396_F1_DATA 0b00000000000000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_397_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_398_F1_DATA 0b00000000000000000000100000001000 + // f1_param_phya_reg_tx_byte0_drvn_dq:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte0_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_399_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_byte0_drvn_dqsn:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte0_drvp_dqsn:[12:8]=0b01000 + // f1_param_phya_reg_tx_byte0_drvn_dqsp:[20:16]=0b01000 + // f1_param_phya_reg_tx_byte0_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_400_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit0_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_401_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit2_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_402_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit4_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_403_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit6_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_404_F1_DATA 0b00000000000000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_405_F1_DATA 0b00001101000000000000000000000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f1_param_phyd_tx_byte1_dqs_shift:[29:24]=0b001101 +#define DDR_PHY_REG_406_F1_DATA 0b00001010000000000000101100000000 + // f1_param_phyd_tx_byte1_oenz_dqs_shift:[13:8]=0b001011 + // f1_param_phyd_tx_byte1_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_407_F1_DATA 0b00000000000001000000010000000000 + // f1_param_phyd_tx_byte1_oenz_dqs_extend:[11:8]=0b0100 + // f1_param_phyd_tx_byte1_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_408_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_409_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_410_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_411_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_412_F1_DATA 0b00000000000000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_413_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_414_F1_DATA 0b00000000000000000000100000001000 + // f1_param_phya_reg_tx_byte1_drvn_dq:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte1_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_415_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_byte1_drvn_dqsn:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte1_drvp_dqsn:[12:8]=0b01000 + // f1_param_phya_reg_tx_byte1_drvn_dqsp:[20:16]=0b01000 + // f1_param_phya_reg_tx_byte1_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_448_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte0_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_449_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte0_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_450_F1_DATA 0b00000000010000000100000000000000 + // f1_param_phyd_reg_rx_byte0_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b01000000 + // f1_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b01000000 +#define DDR_PHY_REG_451_F1_DATA 0b00000000000000000000100000000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_mask_ranka_sw:[6:0]=0b0000000 + // f1_param_phyd_rx_byte0_mask_shift:[13:8]=0b001000 +#define DDR_PHY_REG_452_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_rx_byte0_en_shift:[13:8]=0b000000 + // f1_param_phyd_rx_byte0_odt_en_shift:[29:24]=0b000000 +#define DDR_PHY_REG_453_F1_DATA 0b00000000000001110000111000001110 + // f1_param_phyd_rx_byte0_en_extend:[3:0]=0b1110 + // f1_param_phyd_rx_byte0_odt_en_extend:[11:8]=0b1110 + // f1_param_phyd_rx_byte0_rden_to_rdvld:[20:16]=0b00111 +#define DDR_PHY_REG_454_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte0_rx_dq0_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq1_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq2_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_455_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte0_rx_dq4_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq5_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq6_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_456_F1_DATA 0b01000000010000000000000000000000 + // f1_param_phya_reg_rx_byte0_rx_dq8_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_tx_byte0_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f1_param_phya_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_457_F1_DATA 0b00000000000100000000000000010000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dq:[4:0]=0b10000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dq_offset:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dqs:[20:16]=0b10000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dqs_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_460_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte1_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_461_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte1_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_462_F1_DATA 0b00000000010000000100000000000000 + // f1_param_phyd_reg_rx_byte1_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b01000000 + // f1_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b01000000 +#define DDR_PHY_REG_463_F1_DATA 0b00000000000000000000100000000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_mask_ranka_sw:[6:0]=0b0000000 + // f1_param_phyd_rx_byte1_mask_shift:[13:8]=0b001000 +#define DDR_PHY_REG_464_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_rx_byte1_en_shift:[13:8]=0b000000 + // f1_param_phyd_rx_byte1_odt_en_shift:[29:24]=0b000000 +#define DDR_PHY_REG_465_F1_DATA 0b00000000000001110000111000001110 + // f1_param_phyd_rx_byte1_en_extend:[3:0]=0b1110 + // f1_param_phyd_rx_byte1_odt_en_extend:[11:8]=0b1110 + // f1_param_phyd_rx_byte1_rden_to_rdvld:[20:16]=0b00111 +#define DDR_PHY_REG_466_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte1_rx_dq0_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq1_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq2_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_467_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte1_rx_dq4_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq5_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq6_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_468_F1_DATA 0b01000000010000000000000000000000 + // f1_param_phya_reg_rx_byte1_rx_dq8_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_tx_byte1_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f1_param_phya_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_469_F1_DATA 0b00000000000100000000000000010000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dq:[4:0]=0b10000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dq_offset:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dqs:[20:16]=0b10000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dqs_offset:[30:24]=0b0000000 +#endif //F1_TEST +void ddrc_init(void); +void phy_init(void); +void ctrl_init_high_patch(void); +void ctrl_init_low_patch(void); +//void ctrl_init_detect_dram_size(uint8_t * dram_cap_in_mbyte); +void ctrl_init_update_by_dram_size(uint8_t dram_cap_in_mbyte); + +#endif /* __DDR_PI_PHY_H__ */ diff --git a/fsbl/plat/cv181x/include/ddr/ddr_config/ddr3_1866_x16/ddr_init.h b/fsbl/plat/cv181x/include/ddr/ddr_config/ddr3_1866_x16/ddr_init.h new file mode 100644 index 000000000..5fdc40250 --- /dev/null +++ b/fsbl/plat/cv181x/include/ddr/ddr_config/ddr3_1866_x16/ddr_init.h @@ -0,0 +1,1157 @@ +#ifndef __DDR_PI_PHY_H__ +#define __DDR_PI_PHY_H__ + +extern uint32_t ddr_data_rate; +// $Module: reg_cv_phy_param_ddr3_1866 $ +// $RegisterBank Version: V 1.0.00 $ +// $Author: KC TSAI $ +// $Date: Wed, 15 Sep 2021 11:31:09 AM $ +// + +#define DDR_PHY_REG_0_DATA 0b00000011000000100000000100000000 + // param_phyd_swap_ca0:[4:0]=0b00000 + // param_phyd_swap_ca1:[12:8]=0b00001 + // param_phyd_swap_ca2:[20:16]=0b00010 + // param_phyd_swap_ca3:[28:24]=0b00011 +#define DDR_PHY_REG_1_DATA 0b00000111000001100000010100000100 + // param_phyd_swap_ca4:[4:0]=0b00100 + // param_phyd_swap_ca5:[12:8]=0b00101 + // param_phyd_swap_ca6:[20:16]=0b00110 + // param_phyd_swap_ca7:[28:24]=0b00111 +#define DDR_PHY_REG_2_DATA 0b00001011000010100000100100001000 + // param_phyd_swap_ca8:[4:0]=0b01000 + // param_phyd_swap_ca9:[12:8]=0b01001 + // param_phyd_swap_ca10:[20:16]=0b01010 + // param_phyd_swap_ca11:[28:24]=0b01011 +#define DDR_PHY_REG_3_DATA 0b00001111000011100000110100001100 + // param_phyd_swap_ca12:[4:0]=0b01100 + // param_phyd_swap_ca13:[12:8]=0b01101 + // param_phyd_swap_ca14:[20:16]=0b01110 + // param_phyd_swap_ca15:[28:24]=0b01111 +#define DDR_PHY_REG_4_DATA 0b00010011000100100001000100010000 + // param_phyd_swap_ca16:[4:0]=0b10000 + // param_phyd_swap_ca17:[12:8]=0b10001 + // param_phyd_swap_ca18:[20:16]=0b10010 + // param_phyd_swap_ca19:[28:24]=0b10011 +#define DDR_PHY_REG_5_DATA 0b00000000000101100001010100010100 + // param_phyd_swap_ca20:[4:0]=0b10100 + // param_phyd_swap_ca21:[12:8]=0b10101 + // param_phyd_swap_ca22:[20:16]=0b10110 +#define DDR_PHY_REG_6_DATA 0b00000000000000000000000000000000 + // param_phyd_swap_cke0:[0:0]=0b0 + // param_phyd_swap_cs0:[4:4]=0b0 +#define DDR_PHY_REG_7_DATA 0b00000000000000000000000100000000 + // param_phyd_data_byte_swap_slice0:[1:0]=0b00 + // param_phyd_data_byte_swap_slice1:[9:8]=0b01 +#define DDR_PHY_REG_8_DATA 0b01110110010101000011001000010000 + // param_phyd_swap_byte0_dq0_mux:[3:0]=0b0000 + // param_phyd_swap_byte0_dq1_mux:[7:4]=0b0001 + // param_phyd_swap_byte0_dq2_mux:[11:8]=0b0010 + // param_phyd_swap_byte0_dq3_mux:[15:12]=0b0011 + // param_phyd_swap_byte0_dq4_mux:[19:16]=0b0100 + // param_phyd_swap_byte0_dq5_mux:[23:20]=0b0101 + // param_phyd_swap_byte0_dq6_mux:[27:24]=0b0110 + // param_phyd_swap_byte0_dq7_mux:[31:28]=0b0111 +#define DDR_PHY_REG_9_DATA 0b00000000000000000000000000001000 + // param_phyd_swap_byte0_dm_mux:[3:0]=0b1000 +#define DDR_PHY_REG_10_DATA 0b01110110010101000011001000010000 + // param_phyd_swap_byte1_dq0_mux:[3:0]=0b0000 + // param_phyd_swap_byte1_dq1_mux:[7:4]=0b0001 + // param_phyd_swap_byte1_dq2_mux:[11:8]=0b0010 + // param_phyd_swap_byte1_dq3_mux:[15:12]=0b0011 + // param_phyd_swap_byte1_dq4_mux:[19:16]=0b0100 + // param_phyd_swap_byte1_dq5_mux:[23:20]=0b0101 + // param_phyd_swap_byte1_dq6_mux:[27:24]=0b0110 + // param_phyd_swap_byte1_dq7_mux:[31:28]=0b0111 +#define DDR_PHY_REG_11_DATA 0b00000000000000000000000000001000 + // param_phyd_swap_byte1_dm_mux:[3:0]=0b1000 +#define DDR_PHY_REG_16_DATA 0b00000000000000000000000000000000 + // param_phyd_dll_rx_sw_mode:[0:0]=0b0 + // param_phyd_dll_rx_start_cal:[1:1]=0b0 + // param_phyd_dll_rx_cntr_mode:[2:2]=0b0 + // param_phyd_dll_rx_hwrst_time:[3:3]=0b0 + // param_phyd_dll_tx_sw_mode:[16:16]=0b0 + // param_phyd_dll_tx_start_cal:[17:17]=0b0 + // param_phyd_dll_tx_cntr_mode:[18:18]=0b0 + // param_phyd_dll_tx_hwrst_time:[19:19]=0b0 +#define DDR_PHY_REG_17_DATA 0b00000000011111110000000000001101 + // param_phyd_dll_slave_delay_en:[0:0]=0b1 + // param_phyd_dll_rw_en:[1:1]=0b0 + // param_phyd_dll_avg_mode:[2:2]=0b1 + // param_phyd_dll_upd_wait:[6:3]=0b0001 + // param_phyd_dll_sw_clr:[7:7]=0b0 + // param_phyd_dll_sw_code_mode:[8:8]=0b0 + // param_phyd_dll_sw_code:[23:16]=0b01111111 +#define DDR_PHY_REG_18_DATA 0b00000000000000000000000000000000 + // param_phya_reg_tx_clk_tx_dline_code_clkn0:[6:0]=0b0000000 + // param_phya_reg_tx_clk_tx_dline_code_clkp0:[14:8]=0b0000000 +#define DDR_PHY_REG_19_DATA 0b00000000000000000000000000001000 + // param_phya_reg_sel_ddr4_mode:[0:0]=0b0 + // param_phya_reg_sel_lpddr3_mode:[1:1]=0b0 + // param_phya_reg_sel_lpddr4_mode:[2:2]=0b0 + // param_phya_reg_sel_ddr3_mode:[3:3]=0b1 + // param_phya_reg_sel_ddr2_mode:[4:4]=0b0 +#define DDR_PHY_REG_20_DATA 0b00000000000000000000000000000110 + // param_phyd_dram_class:[3:0]=0b0110 +#define DDR_PHY_REG_21_DATA 0b00001100000000000000101100000000 + // param_phyd_wrlvl_start_delay_code:[6:0]=0b0000000 + // param_phyd_wrlvl_start_shift_code:[13:8]=0b001011 + // param_phyd_wrlvl_end_delay_code:[22:16]=0b0000000 + // param_phyd_wrlvl_end_shift_code:[29:24]=0b001100 +#define DDR_PHY_REG_22_DATA 0b00001001000101100000000001001111 + // param_phyd_wrlvl_capture_cnt:[3:0]=0b1111 + // param_phyd_wrlvl_dly_step:[7:4]=0b0100 + // param_phyd_wrlvl_disable:[11:8]=0b0000 + // param_phyd_wrlvl_resp_wait_cnt:[21:16]=0b010110 + // param_phyd_oenz_lead_cnt:[26:23]=0b0010 + // param_phyd_wrlvl_mode:[27:27]=0b1 +#define DDR_PHY_REG_23_DATA 0b00000000000000000000000000000000 + // param_phyd_wrlvl_sw:[0:0]=0b0 + // param_phyd_wrlvl_sw_upd_req:[1:1]=0b0 + // param_phyd_wrlvl_sw_resp:[2:2]=0b0 + // param_phyd_wrlvl_data_mask:[23:16]=0b00000000 +#define DDR_PHY_REG_24_DATA 0b00000100000000000000001101110000 + // param_phyd_pigtlvl_back_step:[7:0]=0b01110000 + // param_phyd_pigtlvl_capture_cnt:[11:8]=0b0011 + // param_phyd_pigtlvl_disable:[19:16]=0b0000 + // param_phyd_pigtlvl_dly_step:[27:24]=0b0100 +#define DDR_PHY_REG_25_DATA 0b00001101000000000000101000000000 + // param_phyd_pigtlvl_start_delay_code:[6:0]=0b0000000 + // param_phyd_pigtlvl_start_shift_code:[13:8]=0b001010 + // param_phyd_pigtlvl_end_delay_code:[22:16]=0b0000000 + // param_phyd_pigtlvl_end_shift_code:[29:24]=0b001101 +#define DDR_PHY_REG_26_DATA 0b00000000100000000000000000000000 + // param_phyd_pigtlvl_resp_wait_cnt:[5:0]=0b000000 + // param_phyd_pigtlvl_sw:[8:8]=0b0 + // param_phyd_pigtlvl_sw_resp:[13:12]=0b00 + // param_phyd_pigtlvl_sw_upd_req:[16:16]=0b0 + // param_phyd_rx_en_lead_cnt:[23:20]=0b1000 +#define DDR_PHY_REG_28_DATA 0b00000000000000000000000100001000 + // param_phyd_rgtrack_threshold:[4:0]=0b01000 + // param_phyd_rgtrack_dly_step:[11:8]=0b0001 + // param_phyd_rgtrack_disable:[19:16]=0b0000 +#define DDR_PHY_REG_29_DATA 0b00000000000001110010000000000000 + // param_phyd_zqcal_wait_count:[3:0]=0b0000 + // param_phyd_zqcal_cycle_count:[15:8]=0b00100000 + // param_phyd_zqcal_hw_mode:[18:16]=0b111 +#define DDR_PHY_REG_32_DATA 0b00011111000000001110000000000000 + // param_phyd_pirdlvl_dlie_code_start:[7:0]=0b00000000 + // param_phyd_pirdlvl_dlie_code_end:[15:8]=0b11100000 + // param_phyd_pirdlvl_deskew_start:[22:16]=0b0000000 + // param_phyd_pirdlvl_deskew_end:[30:24]=0b0011111 +#define DDR_PHY_REG_33_DATA 0b00000001000010110000110000001010 + // param_phyd_pirdlvl_trig_lvl_start:[4:0]=0b01010 + // param_phyd_pirdlvl_trig_lvl_end:[12:8]=0b01100 + // param_phyd_pirdlvl_rdvld_start:[20:16]=0b01011 + // param_phyd_pirdlvl_rdvld_end:[28:24]=0b00001 +#define DDR_PHY_REG_34_DATA 0b00001010000000010000000100010100 + // param_phyd_pirdlvl_dly_step:[3:0]=0b0100 + // param_phyd_pirdlvl_ds_dly_step:[7:4]=0b0001 + // param_phyd_pirdlvl_vref_step:[11:8]=0b0001 + // param_phyd_pirdlvl_disable:[15:12]=0b0000 + // param_phyd_pirdlvl_resp_wait_cnt:[21:16]=0b000001 + // param_phyd_pirdlvl_vref_wait_cnt:[31:24]=0b00001010 +#define DDR_PHY_REG_35_DATA 0b10101010101010100000000010001111 + // param_phyd_pirdlvl_rx_prebit_deskew_en:[0:0]=0b1 + // param_phyd_pirdlvl_rx_init_deskew_en:[1:1]=0b1 + // param_phyd_pirdlvl_vref_training_en:[2:2]=0b1 + // param_phyd_pirdlvl_rdvld_training_en:[3:3]=0b1 + // param_phyd_pirdlvl_capture_cnt:[7:4]=0b1000 + // param_phyd_pirdlvl_MR1520_BYTE:[15:8]=0b00000000 + // param_phyd_pirdlvl_MR3240:[31:16]=0b1010101010101010 +#define DDR_PHY_REG_36_DATA 0b00000000000000000011100000000000 + // param_phyd_pirdlvl_data_mask:[8:0]=0b000000000 + // param_phyd_pirdlvl_sw:[9:9]=0b0 + // param_phyd_pirdlvl_sw_upd_req:[10:10]=0b0 + // param_phyd_pirdlvl_sw_resp:[12:11]=0b11 + // param_phyd_pirdlvl_trig_lvl_dqs_follow_dq:[13:13]=0b1 +#define DDR_PHY_REG_37_DATA 0b00000000000000000000100000000001 + // param_phyd_pirdlvl_rdvld_offset:[3:0]=0b0001 + // param_phyd_pirdlvl_found_cnt_limite:[15:8]=0b00001000 +#define DDR_PHY_REG_40_DATA 0b00000111010000000000010101000000 + // param_phyd_piwdqlvl_start_delay_code:[6:0]=0b1000000 + // param_phyd_piwdqlvl_start_shift_code:[13:8]=0b000101 + // param_phyd_piwdqlvl_end_delay_code:[22:16]=0b1000000 + // param_phyd_piwdqlvl_end_shift_code:[29:24]=0b000111 +#define DDR_PHY_REG_41_DATA 0b00000001010000100000010100000100 + // param_phyd_piwdqlvl_tx_vref_start:[4:0]=0b00100 + // param_phyd_piwdqlvl_tx_vref_end:[12:8]=0b00101 + // param_phyd_piwdqlvl_capture_cnt:[19:16]=0b0010 + // param_phyd_piwdqlvl_dly_step:[23:20]=0b0100 + // param_phyd_piwdqlvl_vref_step:[27:24]=0b0001 + // param_phyd_piwdqlvl_disable:[31:28]=0b0000 +#define DDR_PHY_REG_42_DATA 0b00000000010101010000000000001010 + // param_phyd_piwdqlvl_vref_wait_cnt:[7:0]=0b00001010 + // param_phyd_piwdqlvl_tx_vref_training_en:[8:8]=0b0 + // param_phyd_piwdqlvl_byte_invert_0:[23:16]=0b01010101 +#define DDR_PHY_REG_43_DATA 0b00000000010101010011110001011010 + // param_phyd_piwdqlvl_dq_pattern_0:[15:0]=0b0011110001011010 + // param_phyd_piwdqlvl_byte_invert_1:[23:16]=0b01010101 +#define DDR_PHY_REG_44_DATA 0b00000000101010101010010111000011 + // param_phyd_piwdqlvl_dq_pattern_1:[15:0]=0b1010010111000011 + // param_phyd_piwdqlvl_byte_invert_2:[23:16]=0b10101010 +#define DDR_PHY_REG_45_DATA 0b00000000101010101111000011110000 + // param_phyd_piwdqlvl_dq_pattern_2:[15:0]=0b1111000011110000 + // param_phyd_piwdqlvl_byte_invert_3:[23:16]=0b10101010 +#define DDR_PHY_REG_46_DATA 0b00011110000000000000111100001111 + // param_phyd_piwdqlvl_dq_pattern_3:[15:0]=0b0000111100001111 + // param_phyd_piwdqlvl_data_mask:[24:16]=0b000000000 + // param_phyd_piwdqlvl_pattern_sel:[28:25]=0b1111 +#define DDR_PHY_REG_47_DATA 0b00000000000010000011111000010011 + // param_phyd_piwdqlvl_tdfi_phy_wrdata:[2:0]=0b011 + // param_phyd_piwdqlvl_oenz_lead_cnt:[6:3]=0b0010 + // param_phyd_piwdqlvl_sw:[7:7]=0b0 + // param_phyd_piwdqlvl_sw_upd_req:[8:8]=0b0 + // param_phyd_piwdqlvl_sw_resp:[10:9]=0b11 + // param_phyd_piwdqlvl_sw_result:[11:11]=0b1 + // param_phyd_piwdqlvl_dq_mode:[12:12]=0b1 + // param_phyd_piwdqlvl_dm_mode:[13:13]=0b1 + // param_phyd_piwdqlvl_found_cnt_limite:[23:16]=0b00001000 +#define DDR_PHY_REG_60_DATA 0b00000000000000000000000000000000 + // param_phyd_patch_revision:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_61_DATA 0b00000000000000110000000000110011 + // param_phyd_ca_shift_gating_en:[0:0]=0b1 + // param_phyd_cs_shift_gating_en:[1:1]=0b1 + // param_phyd_cke_shift_gating_en:[2:2]=0b0 + // param_phyd_resetz_shift_gating_en:[3:3]=0b0 + // param_phyd_tx_byte0_shift_gating_en:[4:4]=0b1 + // param_phyd_tx_byte1_shift_gating_en:[5:5]=0b1 + // param_phyd_rx_byte0_shift_gating_en:[16:16]=0b1 + // param_phyd_rx_byte1_shift_gating_en:[17:17]=0b1 +#define DDR_PHY_REG_62_DATA 0b00000000001000010000000000101100 + // param_phyd_lb_lfsr_seed0:[8:0]=0b000101100 + // param_phyd_lb_lfsr_seed1:[24:16]=0b000100001 +#define DDR_PHY_REG_63_DATA 0b00000000001101110000000000010110 + // param_phyd_lb_lfsr_seed2:[8:0]=0b000010110 + // param_phyd_lb_lfsr_seed3:[24:16]=0b000110111 +#define DDR_PHY_REG_64_DATA 0b00000100000000000000000000000000 + // param_phyd_lb_dq_en:[0:0]=0b0 + // param_phyd_lb_dq_go:[1:1]=0b0 + // param_phyd_lb_sw_en:[2:2]=0b0 + // param_phyd_lb_sw_rx_en:[3:3]=0b0 + // param_phyd_lb_sw_rx_mask:[4:4]=0b0 + // param_phyd_lb_sw_odt_en:[5:5]=0b0 + // param_phyd_lb_sw_ca_clkpattern:[6:6]=0b0 + // param_phyd_lb_sync_len:[31:16]=0b0000010000000000 +#define DDR_PHY_REG_65_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_dout0:[8:0]=0b000000000 + // param_phyd_lb_sw_dout1:[24:16]=0b000000000 +#define DDR_PHY_REG_67_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_oenz_dout0:[0:0]=0b0 + // param_phyd_lb_sw_oenz_dout1:[1:1]=0b0 + // param_phyd_lb_sw_dqsn0:[4:4]=0b0 + // param_phyd_lb_sw_dqsn1:[5:5]=0b0 + // param_phyd_lb_sw_dqsp0:[8:8]=0b0 + // param_phyd_lb_sw_dqsp1:[9:9]=0b0 + // param_phyd_lb_sw_oenz_dqs_dout0:[12:12]=0b0 + // param_phyd_lb_sw_oenz_dqs_dout1:[13:13]=0b0 +#define DDR_PHY_REG_68_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_ca_dout:[22:0]=0b00000000000000000000000 +#define DDR_PHY_REG_69_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_clkn0_dout:[0:0]=0b0 + // param_phyd_lb_sw_clkp0_dout:[4:4]=0b0 + // param_phyd_lb_sw_cke0_dout:[8:8]=0b0 + // param_phyd_lb_sw_resetz_dout:[12:12]=0b0 + // param_phyd_lb_sw_csb0_dout:[16:16]=0b0 +#define DDR_PHY_REG_70_DATA 0b00000000000000000000000000000000 + // param_phyd_clkctrl_init_complete:[0:0]=0b0 +#define DDR_PHY_REG_71_DATA 0b00000000000000000110101000010000 + // param_phyd_reg_resetz_dqs_rd_en:[4:4]=0b1 + // param_phyd_rx_upd_tx_sel:[9:8]=0b10 + // param_phyd_tx_upd_rx_sel:[11:10]=0b10 + // param_phyd_rx_en_ext_win:[15:12]=0b0110 + // param_phyd_fifo_rst_sel:[18:16]=0b000 + // param_phyd_fifo_sw_rst:[20:20]=0b0 +#define DDR_PHY_REG_72_DATA 0b00000000000000000000000000000000 + // param_phyd_phy_int_ack:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_73_DATA 0b11111111111111111111111011110111 + // param_phyd_phy_int_mask:[31:0]=0b11111111111111111111111011110111 +#define DDR_PHY_REG_74_DATA 0b00000000000000000000000000011111 + // param_phyd_calvl_rst_n:[0:0]=0b1 + // param_phyd_pigtlvl_rst_n:[1:1]=0b1 + // param_phyd_pirdlvl_rst_n:[2:2]=0b1 + // param_phyd_piwdqlvl_rst_n:[3:3]=0b1 + // param_phyd_wrlvl_rst_n:[4:4]=0b1 +#define DDR_PHY_REG_75_DATA 0b00000000000000000000000000000001 + // param_phyd_clk0_pol:[0:0]=0b1 +#define DDR_PHY_REG_76_DATA 0b00000000000000000000000100000001 + // param_phyd_tx_ca_oenz:[0:0]=0b1 + // param_phyd_tx_ca_clk0_oenz:[8:8]=0b1 +#define DDR_PHY_REG_77_DATA 0b00000000000000000000000100000000 + // param_phya_reg_en_test:[0:0]=0b0 + // param_phya_reg_tx_ca_test_en:[1:1]=0b0 + // param_phya_reg_tx_ca_en_ca_loop_back:[2:2]=0b0 + // param_phya_reg_tx_sel_4bit_mode_tx:[8:8]=0b1 + // param_phya_reg_tx_gpio_in:[16:16]=0b0 +#define DDR_PHY_REG_78_DATA 0b00000000000000000000000000010100 + // param_phya_reg_rx_en_ca_train_mode:[0:0]=0b0 + // param_phya_reg_rx_en_pream_train_mode:[1:1]=0b0 + // param_phya_reg_rx_sel_dqs_wo_pream_mode:[2:2]=0b1 + // param_phya_reg_rx_en_rec_offset:[3:3]=0b0 + // param_phya_reg_rx_sel_4bit_mode_rx:[4:4]=0b1 +#define DDR_PHY_REG_80_DATA 0b00000000000000000000000000000000 + // param_phya_reg_rx_ddrdll_enautok:[0:0]=0b0 + // param_phya_reg_rx_ddrdll_rstb:[1:1]=0b0 + // param_phya_reg_rx_ddrdll_selckout:[5:4]=0b00 + // param_phya_reg_rx_ddrdll_test:[7:6]=0b00 + // param_phya_reg_rx_ddrdll_sel:[15:8]=0b00000000 + // param_phya_reg_tx_ddrdll_enautok:[16:16]=0b0 + // param_phya_reg_tx_ddrdll_rstb:[17:17]=0b0 + // param_phya_reg_tx_ddrdll_selckout:[21:20]=0b00 + // param_phya_reg_tx_ddrdll_test:[23:22]=0b00 + // param_phya_reg_tx_ddrdll_sel:[31:24]=0b00000000 +#define DDR_PHY_REG_81_DATA 0b00000000000000000000000000000000 + // param_phya_reg_tx_zq_cmp_en:[0:0]=0b0 + // param_phya_reg_tx_zq_cmp_offset_cal_en:[1:1]=0b0 + // param_phya_reg_tx_zq_ph_en:[2:2]=0b0 + // param_phya_reg_tx_zq_pl_en:[3:3]=0b0 + // param_phya_reg_tx_zq_step2_en:[4:4]=0b0 + // param_phya_reg_tx_zq_cmp_offset:[12:8]=0b00000 + // param_phya_reg_tx_zq_sel_vref:[20:16]=0b00000 +#define DDR_PHY_REG_82_DATA 0b00000000000000000000100000001000 + // param_phya_reg_tx_zq_golden_drvn:[4:0]=0b01000 + // param_phya_reg_tx_zq_golden_drvp:[12:8]=0b01000 + // param_phya_reg_tx_zq_drvn:[20:16]=0b00000 + // param_phya_reg_tx_zq_drvp:[28:24]=0b00000 +#define DDR_PHY_REG_83_DATA 0b00000000000000000000000000000000 + // param_phya_reg_tx_zq_en_test_aux:[0:0]=0b0 + // param_phya_reg_tx_zq_en_test_mux:[1:1]=0b0 + // param_phya_reg_sel_zq_high_swing:[2:2]=0b0 + // param_phya_reg_zq_sel_test_out0:[7:4]=0b0000 + // param_phya_reg_zq_sel_test_out1:[11:8]=0b0000 + // param_phya_reg_tx_zq_sel_test_ana_in:[15:12]=0b0000 + // param_phya_reg_tx_zq_sel_gpio_in:[17:16]=0b00 +#define DDR_PHY_REG_84_DATA 0b00000000000000000000000000000101 + // param_phya_reg_tune_damp_r:[3:0]=0b0101 +#define DDR_PHY_REG_85_DATA 0b00000000000000000000000100000001 + // param_phyd_sel_cke_oenz:[0:0]=0b1 + // param_phyd_tx_dqsn_default_value:[8:8]=0b1 + // param_phyd_tx_dqsp_default_value:[12:12]=0b0 + // param_phyd_ddr4_2t_preamble:[16:16]=0b0 +#define DDR_PHY_REG_86_DATA 0b00000000000000000000000000000000 + // param_phya_reg_zqcal_done:[0:0]=0b0 +#define DDR_PHY_REG_87_DATA 0b00000000000000000000000000000000 + // param_phyd_dbg_sel:[7:0]=0b00000000 + // param_phyd_dbg_sel_en:[16:16]=0b0 +#define DDR_PHY_REG_89_DATA 0b00000000000000000000000000000000 + // param_phyd_reg_dfs_sel:[0:0]=0b0 +#define DDR_PHY_REG_90_DATA 0b00000000001100110011001100110001 + // param_phyd_ca_sw_dline_en:[0:0]=0b1 + // param_phyd_byte0_wr_sw_dline_en:[4:4]=0b1 + // param_phyd_byte1_wr_sw_dline_en:[5:5]=0b1 + // param_phyd_byte0_wdqs_sw_dline_en:[8:8]=0b1 + // param_phyd_byte1_wdqs_sw_dline_en:[9:9]=0b1 + // param_phyd_byte0_rd_sw_dline_en:[12:12]=0b1 + // param_phyd_byte1_rd_sw_dline_en:[13:13]=0b1 + // param_phyd_byte0_rdg_sw_dline_en:[16:16]=0b1 + // param_phyd_byte1_rdg_sw_dline_en:[17:17]=0b1 + // param_phyd_byte0_rdqs_sw_dline_en:[20:20]=0b1 + // param_phyd_byte1_rdqs_sw_dline_en:[21:21]=0b1 +#define DDR_PHY_REG_91_DATA 0b00000000000000000000000000000000 + // param_phyd_ca_raw_dline_upd:[0:0]=0b0 + // param_phyd_byte0_wr_raw_dline_upd:[4:4]=0b0 + // param_phyd_byte1_wr_raw_dline_upd:[5:5]=0b0 + // param_phyd_byte0_wdqs_raw_dline_upd:[8:8]=0b0 + // param_phyd_byte1_wdqs_raw_dline_upd:[9:9]=0b0 + // param_phyd_byte0_rd_raw_dline_upd:[12:12]=0b0 + // param_phyd_byte1_rd_raw_dline_upd:[13:13]=0b0 + // param_phyd_byte0_rdg_raw_dline_upd:[16:16]=0b0 + // param_phyd_byte1_rdg_raw_dline_upd:[17:17]=0b0 + // param_phyd_byte0_rdqs_raw_dline_upd:[20:20]=0b0 + // param_phyd_byte1_rdqs_raw_dline_upd:[21:21]=0b0 +#define DDR_PHY_REG_92_DATA 0b00000000000000000000000000000000 + // param_phyd_sw_dline_upd_req:[0:0]=0b0 +#define DDR_PHY_REG_93_DATA 0b00000000000000000000000100000000 + // param_phyd_sw_dfi_phyupd_req:[0:0]=0b0 + // param_phyd_sw_dfi_phyupd_req_clr:[4:4]=0b0 + // param_phyd_sw_phyupd_dline:[8:8]=0b1 +#define DDR_PHY_REG_96_DATA 0b00000000000000100000000000010000 + // param_phyd_dfi_wrlvl_req:[0:0]=0b0 + // param_phyd_dfi_wrlvl_odt_en:[4:4]=0b1 + // param_phyd_dfi_wrlvl_strobe_cnt:[19:16]=0b0010 +#define DDR_PHY_REG_97_DATA 0b00000000000000000000000000000000 + // param_phyd_dfi_rdglvl_req:[0:0]=0b0 + // param_phyd_dfi_rdglvl_ddr3_mpr:[4:4]=0b0 +#define DDR_PHY_REG_98_DATA 0b00000000000000000000000000000000 + // param_phyd_dfi_rdlvl_req:[0:0]=0b0 + // param_phyd_dfi_rdlvl_ddr3_mpr:[4:4]=0b0 +#define DDR_PHY_REG_99_DATA 0b00000000000010010000010000000000 + // param_phyd_dfi_wdqlvl_req:[0:0]=0b0 + // param_phyd_dfi_wdqlvl_bist_data_en:[4:4]=0b0 + // param_phyd_dfi_wdqlvl_vref_train_en:[10:10]=0b1 + // param_phyd_dfi_wdqlvl_vref_wait_cnt:[23:16]=0b00001001 +#define DDR_PHY_REG_100_DATA 0b00000000000000100001001000001110 + // param_phyd_dfi_wdqlvl_vref_start:[6:0]=0b0001110 + // param_phyd_dfi_wdqlvl_vref_end:[14:8]=0b0010010 + // param_phyd_dfi_wdqlvl_vref_step:[19:16]=0b0010 +#define DDR_PHY_REG_128_DATA 0b00000000000000000000000000000000 + // param_phya_reg_byte0_test_en:[0:0]=0b0 + // param_phya_reg_tx_byte0_ddr_test:[15:8]=0b00000000 + // param_phya_reg_rx_byte0_sel_test_in0:[19:16]=0b0000 + // param_phya_reg_rx_byte0_sel_test_in1:[23:20]=0b0000 +#define DDR_PHY_REG_129_DATA 0b00000000000000000000010001000000 + // param_phya_reg_tx_byte0_en_rx_awys_on:[0:0]=0b0 + // param_phya_reg_tx_byte0_sel_en_rx_dly:[5:4]=0b00 + // param_phya_reg_rx_byte0_sel_en_rx_gen_rst:[6:6]=0b1 + // param_phya_reg_byte0_mask_oenz:[8:8]=0b0 + // param_phya_reg_tx_byte0_en_mask:[10:10]=0b1 + // param_phya_reg_rx_byte0_sel_cnt_mode:[13:12]=0b00 + // param_phya_reg_tx_byte0_sel_int_loop_back:[14:14]=0b0 + // param_phya_reg_rx_byte0_sel_dqs_dly_for_gated:[17:16]=0b00 + // param_phya_reg_tx_byte0_en_extend_oenz_gated_dline:[18:18]=0b0 +#define DDR_PHY_REG_130_DATA 0b00000000000000000000000000000000 + // param_phyd_reg_reserved_byte0:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_136_DATA 0b00000000000000000000000000000000 + // param_phya_reg_byte1_test_en:[0:0]=0b0 + // param_phya_reg_tx_byte1_ddr_test:[15:8]=0b00000000 + // param_phya_reg_rx_byte1_sel_test_in0:[19:16]=0b0000 + // param_phya_reg_rx_byte1_sel_test_in1:[23:20]=0b0000 +#define DDR_PHY_REG_137_DATA 0b00000000000000000000010001000000 + // param_phya_reg_tx_byte1_en_rx_awys_on:[0:0]=0b0 + // param_phya_reg_tx_byte1_sel_en_rx_dly:[5:4]=0b00 + // param_phya_reg_rx_byte1_sel_en_rx_gen_rst:[6:6]=0b1 + // param_phya_reg_byte1_mask_oenz:[8:8]=0b0 + // param_phya_reg_tx_byte1_en_mask:[10:10]=0b1 + // param_phya_reg_rx_byte1_sel_cnt_mode:[13:12]=0b00 + // param_phya_reg_tx_byte1_sel_int_loop_back:[14:14]=0b0 + // param_phya_reg_rx_byte1_sel_dqs_dly_for_gated:[17:16]=0b00 + // param_phya_reg_tx_byte1_en_extend_oenz_gated_dline:[18:18]=0b0 +#define DDR_PHY_REG_138_DATA 0b00000000000000000000000000000000 + // param_phyd_reg_reserved_byte1:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_0_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_ca_sel_lpddr4_pmos_ph_ca:[3:3]=0b0 + // f0_param_phya_reg_tx_clk_sel_lpddr4_pmos_ph_clk:[4:4]=0b0 + // f0_param_phya_reg_tx_sel_lpddr4_pmos_ph:[5:5]=0b0 +#define DDR_PHY_REG_1_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_ca_drvn_de:[1:0]=0b00 + // f0_param_phya_reg_tx_ca_drvp_de:[5:4]=0b00 + // f0_param_phya_reg_tx_clk0_drvn_de:[9:8]=0b00 + // f0_param_phya_reg_tx_clk0_drvp_de:[13:12]=0b00 + // f0_param_phya_reg_tx_csb_drvn_de:[17:16]=0b00 + // f0_param_phya_reg_tx_csb_drvp_de:[21:20]=0b00 + // f0_param_phya_reg_tx_ca_en_tx_de:[24:24]=0b0 + // f0_param_phya_reg_tx_clk0_en_tx_de:[28:28]=0b0 + // f0_param_phya_reg_tx_csb_en_tx_de:[30:30]=0b0 +#define DDR_PHY_REG_2_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_ca_sel_dly1t_ca:[22:0]=0b00000000000000000000000 +#define DDR_PHY_REG_3_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_clk_sel_dly1t_clk0:[0:0]=0b0 + // f0_param_phya_reg_tx_ca_sel_dly1t_cke0:[8:8]=0b0 + // f0_param_phya_reg_tx_ca_sel_dly1t_csb0:[16:16]=0b0 +#define DDR_PHY_REG_4_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_vref_en_free_offset:[0:0]=0b0 + // f0_param_phya_reg_tx_vref_en_rangex2:[1:1]=0b0 + // f0_param_phya_reg_tx_vref_sel_lpddr4divby2p5:[2:2]=0b0 + // f0_param_phya_reg_tx_vref_sel_lpddr4divby3:[3:3]=0b0 + // f0_param_phya_reg_tx_vref_offset:[14:8]=0b0000000 + // f0_param_phya_reg_tx_vref_sel:[20:16]=0b10000 +#define DDR_PHY_REG_5_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_vrefca_en_free_offset:[0:0]=0b0 + // f0_param_phya_reg_tx_vrefca_en_rangex2:[1:1]=0b0 + // f0_param_phya_reg_tx_vrefca_offset:[14:8]=0b0000000 + // f0_param_phya_reg_tx_vrefca_sel:[20:16]=0b10000 +#define DDR_PHY_REG_6_F0_DATA 0b00000000000000000000000000000010 + // f0_param_phyd_tx_byte_dqs_extend:[2:0]=0b010 +#define DDR_PHY_REG_7_F0_DATA 0b00000000000000000100000001000000 + // f0_param_phya_reg_rx_byte0_odt_reg:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte0_sel_odt_reg_mode:[6:6]=0b1 + // f0_param_phya_reg_rx_byte1_odt_reg:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte1_sel_odt_reg_mode:[14:14]=0b1 +#define DDR_PHY_REG_64_F0_DATA 0b00000000000000000001000000000001 + // f0_param_phya_reg_rx_byte0_en_lsmode:[0:0]=0b1 + // f0_param_phya_reg_rx_byte0_hystr:[5:4]=0b00 + // f0_param_phya_reg_rx_byte0_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f0_param_phya_reg_rx_byte0_sel_odt_center_tap:[10:10]=0b0 + // f0_param_phya_reg_byte0_en_rec_vol_mode:[12:12]=0b1 + // f0_param_phya_reg_tx_byte0_force_en_lvstl_ph:[14:14]=0b0 + // f0_param_phya_reg_rx_byte0_force_en_lvstl_odt:[16:16]=0b0 + // f0_param_phya_reg_rx_byte0_en_trig_lvl_rangex2:[18:18]=0b0 + // f0_param_phya_reg_rx_byte0_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_65_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_byte0_drvn_de_dq:[1:0]=0b00 + // f0_param_phya_reg_tx_byte0_drvp_de_dq:[5:4]=0b00 + // f0_param_phya_reg_tx_byte0_drvn_de_dqs:[9:8]=0b00 + // f0_param_phya_reg_tx_byte0_drvp_de_dqs:[13:12]=0b00 + // f0_param_phya_reg_tx_byte0_en_tx_de_dq:[16:16]=0b0 + // f0_param_phya_reg_tx_byte0_en_tx_de_dqs:[20:20]=0b1 +#define DDR_PHY_REG_66_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte0_sel_dly1t_dq:[8:0]=0b000000000 + // f0_param_phya_reg_tx_byte0_sel_dly1t_dqs:[12:12]=0b0 + // f0_param_phya_reg_tx_byte0_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_67_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4divby3:[4:4]=0b0 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_68_F0_DATA 0b00000000000000000000000000000100 + // f0_param_phyd_reg_rx_byte0_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_69_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte0_dq0_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte0_dq1_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte0_dq2_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte0_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_70_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte0_dq4_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte0_dq5_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte0_dq6_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte0_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_71_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte0_dm_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte0_dqsn_offset:[19:16]=0b0000 + // f0_param_phyd_reg_byte0_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_72_F0_DATA 0b00000000000000000000000000000011 + // f0_param_phyd_tx_byte0_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_80_F0_DATA 0b00000000000000000001000000000001 + // f0_param_phya_reg_rx_byte1_en_lsmode:[0:0]=0b1 + // f0_param_phya_reg_rx_byte1_hystr:[5:4]=0b00 + // f0_param_phya_reg_rx_byte1_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f0_param_phya_reg_rx_byte1_sel_odt_center_tap:[10:10]=0b0 + // f0_param_phya_reg_byte1_en_rec_vol_mode:[12:12]=0b1 + // f0_param_phya_reg_tx_byte1_force_en_lvstl_ph:[14:14]=0b0 + // f0_param_phya_reg_rx_byte1_force_en_lvstl_odt:[16:16]=0b0 + // f0_param_phya_reg_rx_byte1_en_trig_lvl_rangex2:[18:18]=0b0 + // f0_param_phya_reg_rx_byte1_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_81_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_byte1_drvn_de_dq:[1:0]=0b00 + // f0_param_phya_reg_tx_byte1_drvp_de_dq:[5:4]=0b00 + // f0_param_phya_reg_tx_byte1_drvn_de_dqs:[9:8]=0b00 + // f0_param_phya_reg_tx_byte1_drvp_de_dqs:[13:12]=0b00 + // f0_param_phya_reg_tx_byte1_en_tx_de_dq:[16:16]=0b0 + // f0_param_phya_reg_tx_byte1_en_tx_de_dqs:[20:20]=0b1 +#define DDR_PHY_REG_82_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte1_sel_dly1t_dq:[8:0]=0b000000000 + // f0_param_phya_reg_tx_byte1_sel_dly1t_dqs:[12:12]=0b0 + // f0_param_phya_reg_tx_byte1_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_83_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4divby3:[4:4]=0b0 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_84_F0_DATA 0b00000000000000000000000000000100 + // f0_param_phyd_reg_rx_byte1_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_85_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte1_dq0_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte1_dq1_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte1_dq2_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte1_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_86_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte1_dq4_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte1_dq5_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte1_dq6_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte1_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_87_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte1_dm_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte1_dqsn_offset:[19:16]=0b0000 + // f0_param_phyd_reg_byte1_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_88_F0_DATA 0b00000000000000000000000000000011 + // f0_param_phyd_tx_byte1_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_320_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_ca0_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_ca0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_331_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_tx_ca22_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_332_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_cke0_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_cke0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_333_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_csb0_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_cs0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_334_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_resetz_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_reset_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_336_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_ca0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_348_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_cke0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_349_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_csb0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_350_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_resetz_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_351_F0_DATA 0b00001000000010000000010000000100 + // f0_param_phya_reg_tx_ca_drvn_ca:[4:0]=0b00100 + // f0_param_phya_reg_tx_ca_drvp_ca:[12:8]=0b00100 + // f0_param_phya_reg_tx_ca_drvn_csb:[20:16]=0b01000 + // f0_param_phya_reg_tx_ca_drvp_csb:[28:24]=0b01000 +#define DDR_PHY_REG_352_F0_DATA 0b00001000000010000000100000001000 + // f0_param_phya_reg_tx_clk_drvn_clkn0:[4:0]=0b01000 + // f0_param_phya_reg_tx_clk_drvp_clkn0:[12:8]=0b01000 + // f0_param_phya_reg_tx_clk_drvn_clkp0:[20:16]=0b01000 + // f0_param_phya_reg_tx_clk_drvp_clkp0:[28:24]=0b01000 +#define DDR_PHY_REG_384_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit0_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_385_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit2_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_386_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit4_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_387_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit6_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_388_F0_DATA 0b00000000000000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_389_F0_DATA 0b00001011000000000000000000000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f0_param_phyd_tx_byte0_dqs_shift:[29:24]=0b001011 +#define DDR_PHY_REG_390_F0_DATA 0b00001010000000000000100100000000 + // f0_param_phyd_tx_byte0_oenz_dqs_shift:[13:8]=0b001001 + // f0_param_phyd_tx_byte0_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_391_F0_DATA 0b00000000000001000000011000000000 + // f0_param_phyd_tx_byte0_oenz_dqs_extend:[11:8]=0b0110 + // f0_param_phyd_tx_byte0_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_392_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_393_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_394_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_395_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_396_F0_DATA 0b00000000000000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_397_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_398_F0_DATA 0b00000000000000000000100000001000 + // f0_param_phya_reg_tx_byte0_drvn_dq:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte0_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_399_F0_DATA 0b00001000000010000000100000001000 + // f0_param_phya_reg_tx_byte0_drvn_dqsn:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte0_drvp_dqsn:[12:8]=0b01000 + // f0_param_phya_reg_tx_byte0_drvn_dqsp:[20:16]=0b01000 + // f0_param_phya_reg_tx_byte0_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_400_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit0_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_401_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit2_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_402_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit4_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_403_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit6_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_404_F0_DATA 0b00000000000000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_405_F0_DATA 0b00001011000000000000000000000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f0_param_phyd_tx_byte1_dqs_shift:[29:24]=0b001011 +#define DDR_PHY_REG_406_F0_DATA 0b00001010000000000000100100000000 + // f0_param_phyd_tx_byte1_oenz_dqs_shift:[13:8]=0b001001 + // f0_param_phyd_tx_byte1_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_407_F0_DATA 0b00000000000001000000011000000000 + // f0_param_phyd_tx_byte1_oenz_dqs_extend:[11:8]=0b0110 + // f0_param_phyd_tx_byte1_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_408_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_409_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_410_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_411_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_412_F0_DATA 0b00000000000000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_413_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_414_F0_DATA 0b00000000000000000000100000001000 + // f0_param_phya_reg_tx_byte1_drvn_dq:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte1_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_415_F0_DATA 0b00001000000010000000100000001000 + // f0_param_phya_reg_tx_byte1_drvn_dqsn:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte1_drvp_dqsn:[12:8]=0b01000 + // f0_param_phya_reg_tx_byte1_drvn_dqsp:[20:16]=0b01000 + // f0_param_phya_reg_tx_byte1_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_448_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte0_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_449_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte0_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_450_F0_DATA 0b00000000010000000100000000000000 + // f0_param_phyd_reg_rx_byte0_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b01000000 + // f0_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b01000000 +#define DDR_PHY_REG_451_F0_DATA 0b00000000000000000000101000000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_mask_ranka_sw:[6:0]=0b0000000 + // f0_param_phyd_rx_byte0_mask_shift:[13:8]=0b001010 +#define DDR_PHY_REG_452_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_rx_byte0_en_shift:[13:8]=0b000000 + // f0_param_phyd_rx_byte0_odt_en_shift:[29:24]=0b000000 +#define DDR_PHY_REG_453_F0_DATA 0b00000000000010000000111000001110 + // f0_param_phyd_rx_byte0_en_extend:[3:0]=0b1110 + // f0_param_phyd_rx_byte0_odt_en_extend:[11:8]=0b1110 + // f0_param_phyd_rx_byte0_rden_to_rdvld:[20:16]=0b01000 +#define DDR_PHY_REG_454_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte0_rx_dq0_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq1_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq2_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_455_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte0_rx_dq4_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq5_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq6_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_456_F0_DATA 0b01000000010000000000000000000000 + // f0_param_phya_reg_rx_byte0_rx_dq8_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_tx_byte0_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f0_param_phya_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_457_F0_DATA 0b00000000000100000000000000010000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dq:[4:0]=0b10000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dq_offset:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dqs:[20:16]=0b10000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dqs_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_460_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte1_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_461_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte1_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_462_F0_DATA 0b00000000010000000100000000000000 + // f0_param_phyd_reg_rx_byte1_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b01000000 + // f0_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b01000000 +#define DDR_PHY_REG_463_F0_DATA 0b00000000000000000000101000000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_mask_ranka_sw:[6:0]=0b0000000 + // f0_param_phyd_rx_byte1_mask_shift:[13:8]=0b001010 +#define DDR_PHY_REG_464_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_rx_byte1_en_shift:[13:8]=0b000000 + // f0_param_phyd_rx_byte1_odt_en_shift:[29:24]=0b000000 +#define DDR_PHY_REG_465_F0_DATA 0b00000000000010000000111000001110 + // f0_param_phyd_rx_byte1_en_extend:[3:0]=0b1110 + // f0_param_phyd_rx_byte1_odt_en_extend:[11:8]=0b1110 + // f0_param_phyd_rx_byte1_rden_to_rdvld:[20:16]=0b01000 +#define DDR_PHY_REG_466_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte1_rx_dq0_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq1_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq2_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_467_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte1_rx_dq4_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq5_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq6_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_468_F0_DATA 0b01000000010000000000000000000000 + // f0_param_phya_reg_rx_byte1_rx_dq8_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_tx_byte1_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f0_param_phya_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_469_F0_DATA 0b00000000000100000000000000010000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dq:[4:0]=0b10000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dq_offset:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dqs:[20:16]=0b10000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dqs_offset:[30:24]=0b0000000 +#ifdef F1_TEST +#define DDR_PHY_REG_0_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_ca_sel_lpddr4_pmos_ph_ca:[3:3]=0b0 + // f1_param_phya_reg_tx_clk_sel_lpddr4_pmos_ph_clk:[4:4]=0b0 + // f1_param_phya_reg_tx_sel_lpddr4_pmos_ph:[5:5]=0b0 +#define DDR_PHY_REG_1_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_ca_drvn_de:[1:0]=0b00 + // f1_param_phya_reg_tx_ca_drvp_de:[5:4]=0b00 + // f1_param_phya_reg_tx_clk0_drvn_de:[9:8]=0b00 + // f1_param_phya_reg_tx_clk0_drvp_de:[13:12]=0b00 + // f1_param_phya_reg_tx_csb_drvn_de:[17:16]=0b00 + // f1_param_phya_reg_tx_csb_drvp_de:[21:20]=0b00 + // f1_param_phya_reg_tx_ca_en_tx_de:[24:24]=0b0 + // f1_param_phya_reg_tx_clk0_en_tx_de:[28:28]=0b0 + // f1_param_phya_reg_tx_csb_en_tx_de:[30:30]=0b0 +#define DDR_PHY_REG_2_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_ca_sel_dly1t_ca:[22:0]=0b00000000000000000000000 +#define DDR_PHY_REG_3_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_clk_sel_dly1t_clk0:[0:0]=0b0 + // f1_param_phya_reg_tx_ca_sel_dly1t_cke0:[8:8]=0b0 + // f1_param_phya_reg_tx_ca_sel_dly1t_csb0:[16:16]=0b0 +#define DDR_PHY_REG_4_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_vref_en_free_offset:[0:0]=0b0 + // f1_param_phya_reg_tx_vref_en_rangex2:[1:1]=0b0 + // f1_param_phya_reg_tx_vref_sel_lpddr4divby2p5:[2:2]=0b0 + // f1_param_phya_reg_tx_vref_sel_lpddr4divby3:[3:3]=0b0 + // f1_param_phya_reg_tx_vref_offset:[14:8]=0b0000000 + // f1_param_phya_reg_tx_vref_sel:[20:16]=0b10000 +#define DDR_PHY_REG_5_F1_DATA 0b00000000000100000000000000000001 + // f1_param_phya_reg_tx_vrefca_en_free_offset:[0:0]=0b1 + // f1_param_phya_reg_tx_vrefca_en_rangex2:[1:1]=0b0 + // f1_param_phya_reg_tx_vrefca_offset:[14:8]=0b0000000 + // f1_param_phya_reg_tx_vrefca_sel:[20:16]=0b10000 +#define DDR_PHY_REG_6_F1_DATA 0b00000000000000000000000000000010 + // f1_param_phyd_tx_byte_dqs_extend:[2:0]=0b010 +#define DDR_PHY_REG_7_F1_DATA 0b00000000000000000100000001000000 + // f1_param_phya_reg_rx_byte0_odt_reg:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte0_sel_odt_reg_mode:[6:6]=0b1 + // f1_param_phya_reg_rx_byte1_odt_reg:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte1_sel_odt_reg_mode:[14:14]=0b1 +#define DDR_PHY_REG_64_F1_DATA 0b00000000000000000000000000000001 + // f1_param_phya_reg_rx_byte0_en_lsmode:[0:0]=0b1 + // f1_param_phya_reg_rx_byte0_hystr:[5:4]=0b00 + // f1_param_phya_reg_rx_byte0_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f1_param_phya_reg_rx_byte0_sel_odt_center_tap:[10:10]=0b0 + // f1_param_phya_reg_byte0_en_rec_vol_mode:[12:12]=0b0 + // f1_param_phya_reg_tx_byte0_force_en_lvstl_ph:[14:14]=0b0 + // f1_param_phya_reg_rx_byte0_force_en_lvstl_odt:[16:16]=0b0 + // f1_param_phya_reg_rx_byte0_en_trig_lvl_rangex2:[18:18]=0b0 + // f1_param_phya_reg_rx_byte0_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_65_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte0_drvn_de_dq:[1:0]=0b00 + // f1_param_phya_reg_tx_byte0_drvp_de_dq:[5:4]=0b00 + // f1_param_phya_reg_tx_byte0_drvn_de_dqs:[9:8]=0b00 + // f1_param_phya_reg_tx_byte0_drvp_de_dqs:[13:12]=0b00 + // f1_param_phya_reg_tx_byte0_en_tx_de_dq:[16:16]=0b0 + // f1_param_phya_reg_tx_byte0_en_tx_de_dqs:[20:20]=0b0 +#define DDR_PHY_REG_66_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte0_sel_dly1t_dq:[8:0]=0b000000000 + // f1_param_phya_reg_tx_byte0_sel_dly1t_dqs:[12:12]=0b0 + // f1_param_phya_reg_tx_byte0_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_67_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4divby3:[4:4]=0b0 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_68_F1_DATA 0b00000000000000000000000000000100 + // f1_param_phyd_reg_rx_byte0_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_69_F1_DATA 0b00000000000000000000000000010000 + // f1_param_phyd_reg_byte0_dq0_offset:[6:0]=0b0010000 + // f1_param_phyd_reg_byte0_dq1_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte0_dq2_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte0_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_70_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte0_dq4_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte0_dq5_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte0_dq6_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte0_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_71_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte0_dm_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte0_dqsn_offset:[19:16]=0b0000 + // f1_param_phyd_reg_byte0_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_72_F1_DATA 0b00000000000000000000000000000011 + // f1_param_phyd_tx_byte0_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_80_F1_DATA 0b00000000000000000000000000000001 + // f1_param_phya_reg_rx_byte1_en_lsmode:[0:0]=0b1 + // f1_param_phya_reg_rx_byte1_hystr:[5:4]=0b00 + // f1_param_phya_reg_rx_byte1_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f1_param_phya_reg_rx_byte1_sel_odt_center_tap:[10:10]=0b0 + // f1_param_phya_reg_byte1_en_rec_vol_mode:[12:12]=0b0 + // f1_param_phya_reg_tx_byte1_force_en_lvstl_ph:[14:14]=0b0 + // f1_param_phya_reg_rx_byte1_force_en_lvstl_odt:[16:16]=0b0 + // f1_param_phya_reg_rx_byte1_en_trig_lvl_rangex2:[18:18]=0b0 + // f1_param_phya_reg_rx_byte1_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_81_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte1_drvn_de_dq:[1:0]=0b00 + // f1_param_phya_reg_tx_byte1_drvp_de_dq:[5:4]=0b00 + // f1_param_phya_reg_tx_byte1_drvn_de_dqs:[9:8]=0b00 + // f1_param_phya_reg_tx_byte1_drvp_de_dqs:[13:12]=0b00 + // f1_param_phya_reg_tx_byte1_en_tx_de_dq:[16:16]=0b0 + // f1_param_phya_reg_tx_byte1_en_tx_de_dqs:[20:20]=0b0 +#define DDR_PHY_REG_82_F1_DATA 0b00000000000000000000000100000000 + // f1_param_phya_reg_tx_byte1_sel_dly1t_dq:[8:0]=0b100000000 + // f1_param_phya_reg_tx_byte1_sel_dly1t_dqs:[12:12]=0b0 + // f1_param_phya_reg_tx_byte1_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_83_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4divby3:[4:4]=0b0 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_84_F1_DATA 0b00000000000000000000000000000100 + // f1_param_phyd_reg_rx_byte1_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_85_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte1_dq0_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte1_dq1_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte1_dq2_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte1_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_86_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte1_dq4_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte1_dq5_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte1_dq6_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte1_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_87_F1_DATA 0b00000000000000000000000000010000 + // f1_param_phyd_reg_byte1_dm_offset:[6:0]=0b0010000 + // f1_param_phyd_reg_byte1_dqsn_offset:[19:16]=0b0000 + // f1_param_phyd_reg_byte1_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_88_F1_DATA 0b00000000000000000000000000000011 + // f1_param_phyd_tx_byte1_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_320_F1_DATA 0b00000000000000000000010000010000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_ca0_sw:[6:0]=0b0010000 + // f1_param_phyd_tx_ca0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_331_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_tx_ca22_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_332_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_cke0_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_cke0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_333_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_csb0_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_cs0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_334_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_resetz_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_reset_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_336_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_ca0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_348_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_cke0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_349_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_csb0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_350_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_resetz_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_351_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_ca_drvn_ca:[4:0]=0b01000 + // f1_param_phya_reg_tx_ca_drvp_ca:[12:8]=0b01000 + // f1_param_phya_reg_tx_ca_drvn_csb:[20:16]=0b01000 + // f1_param_phya_reg_tx_ca_drvp_csb:[28:24]=0b01000 +#define DDR_PHY_REG_352_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_clk_drvn_clkn0:[4:0]=0b01000 + // f1_param_phya_reg_tx_clk_drvp_clkn0:[12:8]=0b01000 + // f1_param_phya_reg_tx_clk_drvn_clkp0:[20:16]=0b01000 + // f1_param_phya_reg_tx_clk_drvp_clkp0:[28:24]=0b01000 +#define DDR_PHY_REG_384_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit0_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_385_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit2_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_386_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit4_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_387_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit6_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_388_F1_DATA 0b00000000000000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_389_F1_DATA 0b00001011000000000000000000000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f1_param_phyd_tx_byte0_dqs_shift:[29:24]=0b001011 +#define DDR_PHY_REG_390_F1_DATA 0b00001010000000000000100100000000 + // f1_param_phyd_tx_byte0_oenz_dqs_shift:[13:8]=0b001001 + // f1_param_phyd_tx_byte0_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_391_F1_DATA 0b00000000000001000000011000000000 + // f1_param_phyd_tx_byte0_oenz_dqs_extend:[11:8]=0b0110 + // f1_param_phyd_tx_byte0_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_392_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_393_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_394_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_395_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_396_F1_DATA 0b00000000000000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_397_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_398_F1_DATA 0b00000000000000000000100000001000 + // f1_param_phya_reg_tx_byte0_drvn_dq:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte0_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_399_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_byte0_drvn_dqsn:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte0_drvp_dqsn:[12:8]=0b01000 + // f1_param_phya_reg_tx_byte0_drvn_dqsp:[20:16]=0b01000 + // f1_param_phya_reg_tx_byte0_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_400_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit0_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_401_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit2_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_402_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit4_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_403_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit6_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_404_F1_DATA 0b00000000000000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_405_F1_DATA 0b00001011000000000000000000000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f1_param_phyd_tx_byte1_dqs_shift:[29:24]=0b001011 +#define DDR_PHY_REG_406_F1_DATA 0b00001010000000000000100100000000 + // f1_param_phyd_tx_byte1_oenz_dqs_shift:[13:8]=0b001001 + // f1_param_phyd_tx_byte1_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_407_F1_DATA 0b00000000000001000000011000000000 + // f1_param_phyd_tx_byte1_oenz_dqs_extend:[11:8]=0b0110 + // f1_param_phyd_tx_byte1_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_408_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_409_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_410_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_411_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_412_F1_DATA 0b00000000000000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_413_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_414_F1_DATA 0b00000000000000000000100000001000 + // f1_param_phya_reg_tx_byte1_drvn_dq:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte1_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_415_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_byte1_drvn_dqsn:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte1_drvp_dqsn:[12:8]=0b01000 + // f1_param_phya_reg_tx_byte1_drvn_dqsp:[20:16]=0b01000 + // f1_param_phya_reg_tx_byte1_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_448_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte0_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_449_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte0_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_450_F1_DATA 0b00000000010000000100000000000000 + // f1_param_phyd_reg_rx_byte0_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b01000000 + // f1_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b01000000 +#define DDR_PHY_REG_451_F1_DATA 0b00000000000000000000110100000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_mask_ranka_sw:[6:0]=0b0000000 + // f1_param_phyd_rx_byte0_mask_shift:[13:8]=0b001101 +#define DDR_PHY_REG_452_F1_DATA 0b00000010000000000000001000000000 + // f1_param_phyd_rx_byte0_en_shift:[13:8]=0b000010 + // f1_param_phyd_rx_byte0_odt_en_shift:[29:24]=0b000010 +#define DDR_PHY_REG_453_F1_DATA 0b00000000000010000000111000001110 + // f1_param_phyd_rx_byte0_en_extend:[3:0]=0b1110 + // f1_param_phyd_rx_byte0_odt_en_extend:[11:8]=0b1110 + // f1_param_phyd_rx_byte0_rden_to_rdvld:[20:16]=0b01000 +#define DDR_PHY_REG_454_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte0_rx_dq0_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq1_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq2_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_455_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte0_rx_dq4_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq5_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq6_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_456_F1_DATA 0b01000000010000000000000000000000 + // f1_param_phya_reg_rx_byte0_rx_dq8_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_tx_byte0_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f1_param_phya_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_457_F1_DATA 0b00000000000100000000000000010000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dq:[4:0]=0b10000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dq_offset:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dqs:[20:16]=0b10000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dqs_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_460_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte1_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_461_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte1_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_462_F1_DATA 0b00000000010000000100000000000000 + // f1_param_phyd_reg_rx_byte1_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b01000000 + // f1_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b01000000 +#define DDR_PHY_REG_463_F1_DATA 0b00000000000000000000110100000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_mask_ranka_sw:[6:0]=0b0000000 + // f1_param_phyd_rx_byte1_mask_shift:[13:8]=0b001101 +#define DDR_PHY_REG_464_F1_DATA 0b00000010000000000000001000000000 + // f1_param_phyd_rx_byte1_en_shift:[13:8]=0b000010 + // f1_param_phyd_rx_byte1_odt_en_shift:[29:24]=0b000010 +#define DDR_PHY_REG_465_F1_DATA 0b00000000000010000000111000001110 + // f1_param_phyd_rx_byte1_en_extend:[3:0]=0b1110 + // f1_param_phyd_rx_byte1_odt_en_extend:[11:8]=0b1110 + // f1_param_phyd_rx_byte1_rden_to_rdvld:[20:16]=0b01000 +#define DDR_PHY_REG_466_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte1_rx_dq0_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq1_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq2_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_467_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte1_rx_dq4_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq5_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq6_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_468_F1_DATA 0b01000000010000000000000000000000 + // f1_param_phya_reg_rx_byte1_rx_dq8_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_tx_byte1_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f1_param_phya_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_469_F1_DATA 0b00000000000100000000000000010000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dq:[4:0]=0b10000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dq_offset:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dqs:[20:16]=0b10000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dqs_offset:[30:24]=0b0000000 +#endif //F1_TEST + +void ddrc_init(void); +void phy_init(void); +void ctrl_init_high_patch(void); +void ctrl_init_low_patch(void); +//void ctrl_init_detect_dram_size(uint8_t * dram_cap_in_mbyte); +void ctrl_init_update_by_dram_size(uint8_t dram_cap_in_mbyte); + +#endif /* __DDR_PI_PHY_H__ */ diff --git a/fsbl/plat/cv181x/include/ddr/ddr_config/ddr3_2133_x16/ddr_init.h b/fsbl/plat/cv181x/include/ddr/ddr_config/ddr3_2133_x16/ddr_init.h new file mode 100644 index 000000000..0a29d41f0 --- /dev/null +++ b/fsbl/plat/cv181x/include/ddr/ddr_config/ddr3_2133_x16/ddr_init.h @@ -0,0 +1,1157 @@ +#ifndef __DDR_PI_PHY_H__ +#define __DDR_PI_PHY_H__ + +extern uint32_t ddr_data_rate; +// $Module: reg_cv_phy_param_ddr3_2133 $ +// $RegisterBank Version: V 1.0.00 $ +// $Author: KC TSAI $ +// $Date: Wed, 15 Sep 2021 11:31:06 AM $ +// + +#define DDR_PHY_REG_0_DATA 0b00000011000000100000000100000000 + // param_phyd_swap_ca0:[4:0]=0b00000 + // param_phyd_swap_ca1:[12:8]=0b00001 + // param_phyd_swap_ca2:[20:16]=0b00010 + // param_phyd_swap_ca3:[28:24]=0b00011 +#define DDR_PHY_REG_1_DATA 0b00000111000001100000010100000100 + // param_phyd_swap_ca4:[4:0]=0b00100 + // param_phyd_swap_ca5:[12:8]=0b00101 + // param_phyd_swap_ca6:[20:16]=0b00110 + // param_phyd_swap_ca7:[28:24]=0b00111 +#define DDR_PHY_REG_2_DATA 0b00001011000010100000100100001000 + // param_phyd_swap_ca8:[4:0]=0b01000 + // param_phyd_swap_ca9:[12:8]=0b01001 + // param_phyd_swap_ca10:[20:16]=0b01010 + // param_phyd_swap_ca11:[28:24]=0b01011 +#define DDR_PHY_REG_3_DATA 0b00001111000011100000110100001100 + // param_phyd_swap_ca12:[4:0]=0b01100 + // param_phyd_swap_ca13:[12:8]=0b01101 + // param_phyd_swap_ca14:[20:16]=0b01110 + // param_phyd_swap_ca15:[28:24]=0b01111 +#define DDR_PHY_REG_4_DATA 0b00010011000100100001000100010000 + // param_phyd_swap_ca16:[4:0]=0b10000 + // param_phyd_swap_ca17:[12:8]=0b10001 + // param_phyd_swap_ca18:[20:16]=0b10010 + // param_phyd_swap_ca19:[28:24]=0b10011 +#define DDR_PHY_REG_5_DATA 0b00000000000101100001010100010100 + // param_phyd_swap_ca20:[4:0]=0b10100 + // param_phyd_swap_ca21:[12:8]=0b10101 + // param_phyd_swap_ca22:[20:16]=0b10110 +#define DDR_PHY_REG_6_DATA 0b00000000000000000000000000000000 + // param_phyd_swap_cke0:[0:0]=0b0 + // param_phyd_swap_cs0:[4:4]=0b0 +#define DDR_PHY_REG_7_DATA 0b00000000000000000000000100000000 + // param_phyd_data_byte_swap_slice0:[1:0]=0b00 + // param_phyd_data_byte_swap_slice1:[9:8]=0b01 +#define DDR_PHY_REG_8_DATA 0b01110110010101000011001000010000 + // param_phyd_swap_byte0_dq0_mux:[3:0]=0b0000 + // param_phyd_swap_byte0_dq1_mux:[7:4]=0b0001 + // param_phyd_swap_byte0_dq2_mux:[11:8]=0b0010 + // param_phyd_swap_byte0_dq3_mux:[15:12]=0b0011 + // param_phyd_swap_byte0_dq4_mux:[19:16]=0b0100 + // param_phyd_swap_byte0_dq5_mux:[23:20]=0b0101 + // param_phyd_swap_byte0_dq6_mux:[27:24]=0b0110 + // param_phyd_swap_byte0_dq7_mux:[31:28]=0b0111 +#define DDR_PHY_REG_9_DATA 0b00000000000000000000000000001000 + // param_phyd_swap_byte0_dm_mux:[3:0]=0b1000 +#define DDR_PHY_REG_10_DATA 0b01110110010101000011001000010000 + // param_phyd_swap_byte1_dq0_mux:[3:0]=0b0000 + // param_phyd_swap_byte1_dq1_mux:[7:4]=0b0001 + // param_phyd_swap_byte1_dq2_mux:[11:8]=0b0010 + // param_phyd_swap_byte1_dq3_mux:[15:12]=0b0011 + // param_phyd_swap_byte1_dq4_mux:[19:16]=0b0100 + // param_phyd_swap_byte1_dq5_mux:[23:20]=0b0101 + // param_phyd_swap_byte1_dq6_mux:[27:24]=0b0110 + // param_phyd_swap_byte1_dq7_mux:[31:28]=0b0111 +#define DDR_PHY_REG_11_DATA 0b00000000000000000000000000001000 + // param_phyd_swap_byte1_dm_mux:[3:0]=0b1000 +#define DDR_PHY_REG_16_DATA 0b00000000000000000000000000000000 + // param_phyd_dll_rx_sw_mode:[0:0]=0b0 + // param_phyd_dll_rx_start_cal:[1:1]=0b0 + // param_phyd_dll_rx_cntr_mode:[2:2]=0b0 + // param_phyd_dll_rx_hwrst_time:[3:3]=0b0 + // param_phyd_dll_tx_sw_mode:[16:16]=0b0 + // param_phyd_dll_tx_start_cal:[17:17]=0b0 + // param_phyd_dll_tx_cntr_mode:[18:18]=0b0 + // param_phyd_dll_tx_hwrst_time:[19:19]=0b0 +#define DDR_PHY_REG_17_DATA 0b00000000011111110000000000001101 + // param_phyd_dll_slave_delay_en:[0:0]=0b1 + // param_phyd_dll_rw_en:[1:1]=0b0 + // param_phyd_dll_avg_mode:[2:2]=0b1 + // param_phyd_dll_upd_wait:[6:3]=0b0001 + // param_phyd_dll_sw_clr:[7:7]=0b0 + // param_phyd_dll_sw_code_mode:[8:8]=0b0 + // param_phyd_dll_sw_code:[23:16]=0b01111111 +#define DDR_PHY_REG_18_DATA 0b00000000000000000000000000000000 + // param_phya_reg_tx_clk_tx_dline_code_clkn0:[6:0]=0b0000000 + // param_phya_reg_tx_clk_tx_dline_code_clkp0:[14:8]=0b0000000 +#define DDR_PHY_REG_19_DATA 0b00000000000000000000000000001000 + // param_phya_reg_sel_ddr4_mode:[0:0]=0b0 + // param_phya_reg_sel_lpddr3_mode:[1:1]=0b0 + // param_phya_reg_sel_lpddr4_mode:[2:2]=0b0 + // param_phya_reg_sel_ddr3_mode:[3:3]=0b1 + // param_phya_reg_sel_ddr2_mode:[4:4]=0b0 +#define DDR_PHY_REG_20_DATA 0b00000000000000000000000000000110 + // param_phyd_dram_class:[3:0]=0b0110 +#define DDR_PHY_REG_21_DATA 0b00001100000000000000101100000000 + // param_phyd_wrlvl_start_delay_code:[6:0]=0b0000000 + // param_phyd_wrlvl_start_shift_code:[13:8]=0b001011 + // param_phyd_wrlvl_end_delay_code:[22:16]=0b0000000 + // param_phyd_wrlvl_end_shift_code:[29:24]=0b001100 +#define DDR_PHY_REG_22_DATA 0b00001001000101100000000001001111 + // param_phyd_wrlvl_capture_cnt:[3:0]=0b1111 + // param_phyd_wrlvl_dly_step:[7:4]=0b0100 + // param_phyd_wrlvl_disable:[11:8]=0b0000 + // param_phyd_wrlvl_resp_wait_cnt:[21:16]=0b010110 + // param_phyd_oenz_lead_cnt:[26:23]=0b0010 + // param_phyd_wrlvl_mode:[27:27]=0b1 +#define DDR_PHY_REG_23_DATA 0b00000000000000000000000000000000 + // param_phyd_wrlvl_sw:[0:0]=0b0 + // param_phyd_wrlvl_sw_upd_req:[1:1]=0b0 + // param_phyd_wrlvl_sw_resp:[2:2]=0b0 + // param_phyd_wrlvl_data_mask:[23:16]=0b00000000 +#define DDR_PHY_REG_24_DATA 0b00000100000000000000001101110000 + // param_phyd_pigtlvl_back_step:[7:0]=0b01110000 + // param_phyd_pigtlvl_capture_cnt:[11:8]=0b0011 + // param_phyd_pigtlvl_disable:[19:16]=0b0000 + // param_phyd_pigtlvl_dly_step:[27:24]=0b0100 +#define DDR_PHY_REG_25_DATA 0b00010111000000000000110000000000 + // param_phyd_pigtlvl_start_delay_code:[6:0]=0b0000000 + // param_phyd_pigtlvl_start_shift_code:[13:8]=0b001100 + // param_phyd_pigtlvl_end_delay_code:[22:16]=0b0000000 + // param_phyd_pigtlvl_end_shift_code:[29:24]=0b010111 +#define DDR_PHY_REG_26_DATA 0b00000000100000000000000000000000 + // param_phyd_pigtlvl_resp_wait_cnt:[5:0]=0b000000 + // param_phyd_pigtlvl_sw:[8:8]=0b0 + // param_phyd_pigtlvl_sw_resp:[13:12]=0b00 + // param_phyd_pigtlvl_sw_upd_req:[16:16]=0b0 + // param_phyd_rx_en_lead_cnt:[23:20]=0b1000 +#define DDR_PHY_REG_28_DATA 0b00000000000000000000000100001000 + // param_phyd_rgtrack_threshold:[4:0]=0b01000 + // param_phyd_rgtrack_dly_step:[11:8]=0b0001 + // param_phyd_rgtrack_disable:[19:16]=0b0000 +#define DDR_PHY_REG_29_DATA 0b00000000000001110010000000000000 + // param_phyd_zqcal_wait_count:[3:0]=0b0000 + // param_phyd_zqcal_cycle_count:[15:8]=0b00100000 + // param_phyd_zqcal_hw_mode:[18:16]=0b111 +#define DDR_PHY_REG_32_DATA 0b00011111000000001110000000000000 + // param_phyd_pirdlvl_dlie_code_start:[7:0]=0b00000000 + // param_phyd_pirdlvl_dlie_code_end:[15:8]=0b11100000 + // param_phyd_pirdlvl_deskew_start:[22:16]=0b0000000 + // param_phyd_pirdlvl_deskew_end:[30:24]=0b0011111 +#define DDR_PHY_REG_33_DATA 0b00000001000010110000110000001010 + // param_phyd_pirdlvl_trig_lvl_start:[4:0]=0b01010 + // param_phyd_pirdlvl_trig_lvl_end:[12:8]=0b01100 + // param_phyd_pirdlvl_rdvld_start:[20:16]=0b01011 + // param_phyd_pirdlvl_rdvld_end:[28:24]=0b00001 +#define DDR_PHY_REG_34_DATA 0b00001010000000010000000100010100 + // param_phyd_pirdlvl_dly_step:[3:0]=0b0100 + // param_phyd_pirdlvl_ds_dly_step:[7:4]=0b0001 + // param_phyd_pirdlvl_vref_step:[11:8]=0b0001 + // param_phyd_pirdlvl_disable:[15:12]=0b0000 + // param_phyd_pirdlvl_resp_wait_cnt:[21:16]=0b000001 + // param_phyd_pirdlvl_vref_wait_cnt:[31:24]=0b00001010 +#define DDR_PHY_REG_35_DATA 0b10101010101010100000000010001111 + // param_phyd_pirdlvl_rx_prebit_deskew_en:[0:0]=0b1 + // param_phyd_pirdlvl_rx_init_deskew_en:[1:1]=0b1 + // param_phyd_pirdlvl_vref_training_en:[2:2]=0b1 + // param_phyd_pirdlvl_rdvld_training_en:[3:3]=0b1 + // param_phyd_pirdlvl_capture_cnt:[7:4]=0b1000 + // param_phyd_pirdlvl_MR1520_BYTE:[15:8]=0b00000000 + // param_phyd_pirdlvl_MR3240:[31:16]=0b1010101010101010 +#define DDR_PHY_REG_36_DATA 0b00000000000000000011100000000000 + // param_phyd_pirdlvl_data_mask:[8:0]=0b000000000 + // param_phyd_pirdlvl_sw:[9:9]=0b0 + // param_phyd_pirdlvl_sw_upd_req:[10:10]=0b0 + // param_phyd_pirdlvl_sw_resp:[12:11]=0b11 + // param_phyd_pirdlvl_trig_lvl_dqs_follow_dq:[13:13]=0b1 +#define DDR_PHY_REG_37_DATA 0b00000000000000000000100000000001 + // param_phyd_pirdlvl_rdvld_offset:[3:0]=0b0001 + // param_phyd_pirdlvl_found_cnt_limite:[15:8]=0b00001000 +#define DDR_PHY_REG_40_DATA 0b00000111010000000000010101000000 + // param_phyd_piwdqlvl_start_delay_code:[6:0]=0b1000000 + // param_phyd_piwdqlvl_start_shift_code:[13:8]=0b000101 + // param_phyd_piwdqlvl_end_delay_code:[22:16]=0b1000000 + // param_phyd_piwdqlvl_end_shift_code:[29:24]=0b000111 +#define DDR_PHY_REG_41_DATA 0b00000001010000100000010100000100 + // param_phyd_piwdqlvl_tx_vref_start:[4:0]=0b00100 + // param_phyd_piwdqlvl_tx_vref_end:[12:8]=0b00101 + // param_phyd_piwdqlvl_capture_cnt:[19:16]=0b0010 + // param_phyd_piwdqlvl_dly_step:[23:20]=0b0100 + // param_phyd_piwdqlvl_vref_step:[27:24]=0b0001 + // param_phyd_piwdqlvl_disable:[31:28]=0b0000 +#define DDR_PHY_REG_42_DATA 0b00000000010101010000000000001010 + // param_phyd_piwdqlvl_vref_wait_cnt:[7:0]=0b00001010 + // param_phyd_piwdqlvl_tx_vref_training_en:[8:8]=0b0 + // param_phyd_piwdqlvl_byte_invert_0:[23:16]=0b01010101 +#define DDR_PHY_REG_43_DATA 0b00000000010101010011110001011010 + // param_phyd_piwdqlvl_dq_pattern_0:[15:0]=0b0011110001011010 + // param_phyd_piwdqlvl_byte_invert_1:[23:16]=0b01010101 +#define DDR_PHY_REG_44_DATA 0b00000000101010101010010111000011 + // param_phyd_piwdqlvl_dq_pattern_1:[15:0]=0b1010010111000011 + // param_phyd_piwdqlvl_byte_invert_2:[23:16]=0b10101010 +#define DDR_PHY_REG_45_DATA 0b00000000101010101111000011110000 + // param_phyd_piwdqlvl_dq_pattern_2:[15:0]=0b1111000011110000 + // param_phyd_piwdqlvl_byte_invert_3:[23:16]=0b10101010 +#define DDR_PHY_REG_46_DATA 0b00011110000000000000111100001111 + // param_phyd_piwdqlvl_dq_pattern_3:[15:0]=0b0000111100001111 + // param_phyd_piwdqlvl_data_mask:[24:16]=0b000000000 + // param_phyd_piwdqlvl_pattern_sel:[28:25]=0b1111 +#define DDR_PHY_REG_47_DATA 0b00000000000010000011111000010011 + // param_phyd_piwdqlvl_tdfi_phy_wrdata:[2:0]=0b011 + // param_phyd_piwdqlvl_oenz_lead_cnt:[6:3]=0b0010 + // param_phyd_piwdqlvl_sw:[7:7]=0b0 + // param_phyd_piwdqlvl_sw_upd_req:[8:8]=0b0 + // param_phyd_piwdqlvl_sw_resp:[10:9]=0b11 + // param_phyd_piwdqlvl_sw_result:[11:11]=0b1 + // param_phyd_piwdqlvl_dq_mode:[12:12]=0b1 + // param_phyd_piwdqlvl_dm_mode:[13:13]=0b1 + // param_phyd_piwdqlvl_found_cnt_limite:[23:16]=0b00001000 +#define DDR_PHY_REG_60_DATA 0b00000000000000000000000000000000 + // param_phyd_patch_revision:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_61_DATA 0b00000000000000110000000000110011 + // param_phyd_ca_shift_gating_en:[0:0]=0b1 + // param_phyd_cs_shift_gating_en:[1:1]=0b1 + // param_phyd_cke_shift_gating_en:[2:2]=0b0 + // param_phyd_resetz_shift_gating_en:[3:3]=0b0 + // param_phyd_tx_byte0_shift_gating_en:[4:4]=0b1 + // param_phyd_tx_byte1_shift_gating_en:[5:5]=0b1 + // param_phyd_rx_byte0_shift_gating_en:[16:16]=0b1 + // param_phyd_rx_byte1_shift_gating_en:[17:17]=0b1 +#define DDR_PHY_REG_62_DATA 0b00000000001000010000000000101100 + // param_phyd_lb_lfsr_seed0:[8:0]=0b000101100 + // param_phyd_lb_lfsr_seed1:[24:16]=0b000100001 +#define DDR_PHY_REG_63_DATA 0b00000000001101110000000000010110 + // param_phyd_lb_lfsr_seed2:[8:0]=0b000010110 + // param_phyd_lb_lfsr_seed3:[24:16]=0b000110111 +#define DDR_PHY_REG_64_DATA 0b00000100000000000000000000000000 + // param_phyd_lb_dq_en:[0:0]=0b0 + // param_phyd_lb_dq_go:[1:1]=0b0 + // param_phyd_lb_sw_en:[2:2]=0b0 + // param_phyd_lb_sw_rx_en:[3:3]=0b0 + // param_phyd_lb_sw_rx_mask:[4:4]=0b0 + // param_phyd_lb_sw_odt_en:[5:5]=0b0 + // param_phyd_lb_sw_ca_clkpattern:[6:6]=0b0 + // param_phyd_lb_sync_len:[31:16]=0b0000010000000000 +#define DDR_PHY_REG_65_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_dout0:[8:0]=0b000000000 + // param_phyd_lb_sw_dout1:[24:16]=0b000000000 +#define DDR_PHY_REG_67_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_oenz_dout0:[0:0]=0b0 + // param_phyd_lb_sw_oenz_dout1:[1:1]=0b0 + // param_phyd_lb_sw_dqsn0:[4:4]=0b0 + // param_phyd_lb_sw_dqsn1:[5:5]=0b0 + // param_phyd_lb_sw_dqsp0:[8:8]=0b0 + // param_phyd_lb_sw_dqsp1:[9:9]=0b0 + // param_phyd_lb_sw_oenz_dqs_dout0:[12:12]=0b0 + // param_phyd_lb_sw_oenz_dqs_dout1:[13:13]=0b0 +#define DDR_PHY_REG_68_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_ca_dout:[22:0]=0b00000000000000000000000 +#define DDR_PHY_REG_69_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_clkn0_dout:[0:0]=0b0 + // param_phyd_lb_sw_clkp0_dout:[4:4]=0b0 + // param_phyd_lb_sw_cke0_dout:[8:8]=0b0 + // param_phyd_lb_sw_resetz_dout:[12:12]=0b0 + // param_phyd_lb_sw_csb0_dout:[16:16]=0b0 +#define DDR_PHY_REG_70_DATA 0b00000000000000000000000000000000 + // param_phyd_clkctrl_init_complete:[0:0]=0b0 +#define DDR_PHY_REG_71_DATA 0b00000000000000000110101000010000 + // param_phyd_reg_resetz_dqs_rd_en:[4:4]=0b1 + // param_phyd_rx_upd_tx_sel:[9:8]=0b10 + // param_phyd_tx_upd_rx_sel:[11:10]=0b10 + // param_phyd_rx_en_ext_win:[15:12]=0b0110 + // param_phyd_fifo_rst_sel:[18:16]=0b000 + // param_phyd_fifo_sw_rst:[20:20]=0b0 +#define DDR_PHY_REG_72_DATA 0b00000000000000000000000000000000 + // param_phyd_phy_int_ack:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_73_DATA 0b11111111111111111111111011110111 + // param_phyd_phy_int_mask:[31:0]=0b11111111111111111111111011110111 +#define DDR_PHY_REG_74_DATA 0b00000000000000000000000000011111 + // param_phyd_calvl_rst_n:[0:0]=0b1 + // param_phyd_pigtlvl_rst_n:[1:1]=0b1 + // param_phyd_pirdlvl_rst_n:[2:2]=0b1 + // param_phyd_piwdqlvl_rst_n:[3:3]=0b1 + // param_phyd_wrlvl_rst_n:[4:4]=0b1 +#define DDR_PHY_REG_75_DATA 0b00000000000000000000000000000001 + // param_phyd_clk0_pol:[0:0]=0b1 +#define DDR_PHY_REG_76_DATA 0b00000000000000000000000100000001 + // param_phyd_tx_ca_oenz:[0:0]=0b1 + // param_phyd_tx_ca_clk0_oenz:[8:8]=0b1 +#define DDR_PHY_REG_77_DATA 0b00000000000000000000000100000000 + // param_phya_reg_en_test:[0:0]=0b0 + // param_phya_reg_tx_ca_test_en:[1:1]=0b0 + // param_phya_reg_tx_ca_en_ca_loop_back:[2:2]=0b0 + // param_phya_reg_tx_sel_4bit_mode_tx:[8:8]=0b1 + // param_phya_reg_tx_gpio_in:[16:16]=0b0 +#define DDR_PHY_REG_78_DATA 0b00000000000000000000000000010100 + // param_phya_reg_rx_en_ca_train_mode:[0:0]=0b0 + // param_phya_reg_rx_en_pream_train_mode:[1:1]=0b0 + // param_phya_reg_rx_sel_dqs_wo_pream_mode:[2:2]=0b1 + // param_phya_reg_rx_en_rec_offset:[3:3]=0b0 + // param_phya_reg_rx_sel_4bit_mode_rx:[4:4]=0b1 +#define DDR_PHY_REG_80_DATA 0b00000000000000000000000000000000 + // param_phya_reg_rx_ddrdll_enautok:[0:0]=0b0 + // param_phya_reg_rx_ddrdll_rstb:[1:1]=0b0 + // param_phya_reg_rx_ddrdll_selckout:[5:4]=0b00 + // param_phya_reg_rx_ddrdll_test:[7:6]=0b00 + // param_phya_reg_rx_ddrdll_sel:[15:8]=0b00000000 + // param_phya_reg_tx_ddrdll_enautok:[16:16]=0b0 + // param_phya_reg_tx_ddrdll_rstb:[17:17]=0b0 + // param_phya_reg_tx_ddrdll_selckout:[21:20]=0b00 + // param_phya_reg_tx_ddrdll_test:[23:22]=0b00 + // param_phya_reg_tx_ddrdll_sel:[31:24]=0b00000000 +#define DDR_PHY_REG_81_DATA 0b00000000000000000000000000000000 + // param_phya_reg_tx_zq_cmp_en:[0:0]=0b0 + // param_phya_reg_tx_zq_cmp_offset_cal_en:[1:1]=0b0 + // param_phya_reg_tx_zq_ph_en:[2:2]=0b0 + // param_phya_reg_tx_zq_pl_en:[3:3]=0b0 + // param_phya_reg_tx_zq_step2_en:[4:4]=0b0 + // param_phya_reg_tx_zq_cmp_offset:[12:8]=0b00000 + // param_phya_reg_tx_zq_sel_vref:[20:16]=0b00000 +#define DDR_PHY_REG_82_DATA 0b00000000000000000000100000001000 + // param_phya_reg_tx_zq_golden_drvn:[4:0]=0b01000 + // param_phya_reg_tx_zq_golden_drvp:[12:8]=0b01000 + // param_phya_reg_tx_zq_drvn:[20:16]=0b00000 + // param_phya_reg_tx_zq_drvp:[28:24]=0b00000 +#define DDR_PHY_REG_83_DATA 0b00000000000000000000000000000000 + // param_phya_reg_tx_zq_en_test_aux:[0:0]=0b0 + // param_phya_reg_tx_zq_en_test_mux:[1:1]=0b0 + // param_phya_reg_sel_zq_high_swing:[2:2]=0b0 + // param_phya_reg_zq_sel_test_out0:[7:4]=0b0000 + // param_phya_reg_zq_sel_test_out1:[11:8]=0b0000 + // param_phya_reg_tx_zq_sel_test_ana_in:[15:12]=0b0000 + // param_phya_reg_tx_zq_sel_gpio_in:[17:16]=0b00 +#define DDR_PHY_REG_84_DATA 0b00000000000000000000000000000101 + // param_phya_reg_tune_damp_r:[3:0]=0b0101 +#define DDR_PHY_REG_85_DATA 0b00000000000000000000000100000001 + // param_phyd_sel_cke_oenz:[0:0]=0b1 + // param_phyd_tx_dqsn_default_value:[8:8]=0b1 + // param_phyd_tx_dqsp_default_value:[12:12]=0b0 + // param_phyd_ddr4_2t_preamble:[16:16]=0b0 +#define DDR_PHY_REG_86_DATA 0b00000000000000000000000000000000 + // param_phya_reg_zqcal_done:[0:0]=0b0 +#define DDR_PHY_REG_87_DATA 0b00000000000000000000000000000000 + // param_phyd_dbg_sel:[7:0]=0b00000000 + // param_phyd_dbg_sel_en:[16:16]=0b0 +#define DDR_PHY_REG_89_DATA 0b00000000000000000000000000000000 + // param_phyd_reg_dfs_sel:[0:0]=0b0 +#define DDR_PHY_REG_90_DATA 0b00000000001100110011001100110001 + // param_phyd_ca_sw_dline_en:[0:0]=0b1 + // param_phyd_byte0_wr_sw_dline_en:[4:4]=0b1 + // param_phyd_byte1_wr_sw_dline_en:[5:5]=0b1 + // param_phyd_byte0_wdqs_sw_dline_en:[8:8]=0b1 + // param_phyd_byte1_wdqs_sw_dline_en:[9:9]=0b1 + // param_phyd_byte0_rd_sw_dline_en:[12:12]=0b1 + // param_phyd_byte1_rd_sw_dline_en:[13:13]=0b1 + // param_phyd_byte0_rdg_sw_dline_en:[16:16]=0b1 + // param_phyd_byte1_rdg_sw_dline_en:[17:17]=0b1 + // param_phyd_byte0_rdqs_sw_dline_en:[20:20]=0b1 + // param_phyd_byte1_rdqs_sw_dline_en:[21:21]=0b1 +#define DDR_PHY_REG_91_DATA 0b00000000000000000000000000000000 + // param_phyd_ca_raw_dline_upd:[0:0]=0b0 + // param_phyd_byte0_wr_raw_dline_upd:[4:4]=0b0 + // param_phyd_byte1_wr_raw_dline_upd:[5:5]=0b0 + // param_phyd_byte0_wdqs_raw_dline_upd:[8:8]=0b0 + // param_phyd_byte1_wdqs_raw_dline_upd:[9:9]=0b0 + // param_phyd_byte0_rd_raw_dline_upd:[12:12]=0b0 + // param_phyd_byte1_rd_raw_dline_upd:[13:13]=0b0 + // param_phyd_byte0_rdg_raw_dline_upd:[16:16]=0b0 + // param_phyd_byte1_rdg_raw_dline_upd:[17:17]=0b0 + // param_phyd_byte0_rdqs_raw_dline_upd:[20:20]=0b0 + // param_phyd_byte1_rdqs_raw_dline_upd:[21:21]=0b0 +#define DDR_PHY_REG_92_DATA 0b00000000000000000000000000000000 + // param_phyd_sw_dline_upd_req:[0:0]=0b0 +#define DDR_PHY_REG_93_DATA 0b00000000000000000000000100000000 + // param_phyd_sw_dfi_phyupd_req:[0:0]=0b0 + // param_phyd_sw_dfi_phyupd_req_clr:[4:4]=0b0 + // param_phyd_sw_phyupd_dline:[8:8]=0b1 +#define DDR_PHY_REG_96_DATA 0b00000000000000100000000000010000 + // param_phyd_dfi_wrlvl_req:[0:0]=0b0 + // param_phyd_dfi_wrlvl_odt_en:[4:4]=0b1 + // param_phyd_dfi_wrlvl_strobe_cnt:[19:16]=0b0010 +#define DDR_PHY_REG_97_DATA 0b00000000000000000000000000000000 + // param_phyd_dfi_rdglvl_req:[0:0]=0b0 + // param_phyd_dfi_rdglvl_ddr3_mpr:[4:4]=0b0 +#define DDR_PHY_REG_98_DATA 0b00000000000000000000000000000000 + // param_phyd_dfi_rdlvl_req:[0:0]=0b0 + // param_phyd_dfi_rdlvl_ddr3_mpr:[4:4]=0b0 +#define DDR_PHY_REG_99_DATA 0b00000000000010100000010000000000 + // param_phyd_dfi_wdqlvl_req:[0:0]=0b0 + // param_phyd_dfi_wdqlvl_bist_data_en:[4:4]=0b0 + // param_phyd_dfi_wdqlvl_vref_train_en:[10:10]=0b1 + // param_phyd_dfi_wdqlvl_vref_wait_cnt:[23:16]=0b00001010 +#define DDR_PHY_REG_100_DATA 0b00000000000000100001001000001110 + // param_phyd_dfi_wdqlvl_vref_start:[6:0]=0b0001110 + // param_phyd_dfi_wdqlvl_vref_end:[14:8]=0b0010010 + // param_phyd_dfi_wdqlvl_vref_step:[19:16]=0b0010 +#define DDR_PHY_REG_128_DATA 0b00000000000000000000000000000000 + // param_phya_reg_byte0_test_en:[0:0]=0b0 + // param_phya_reg_tx_byte0_ddr_test:[15:8]=0b00000000 + // param_phya_reg_rx_byte0_sel_test_in0:[19:16]=0b0000 + // param_phya_reg_rx_byte0_sel_test_in1:[23:20]=0b0000 +#define DDR_PHY_REG_129_DATA 0b00000000000000000000010001000000 + // param_phya_reg_tx_byte0_en_rx_awys_on:[0:0]=0b0 + // param_phya_reg_tx_byte0_sel_en_rx_dly:[5:4]=0b00 + // param_phya_reg_rx_byte0_sel_en_rx_gen_rst:[6:6]=0b1 + // param_phya_reg_byte0_mask_oenz:[8:8]=0b0 + // param_phya_reg_tx_byte0_en_mask:[10:10]=0b1 + // param_phya_reg_rx_byte0_sel_cnt_mode:[13:12]=0b00 + // param_phya_reg_tx_byte0_sel_int_loop_back:[14:14]=0b0 + // param_phya_reg_rx_byte0_sel_dqs_dly_for_gated:[17:16]=0b00 + // param_phya_reg_tx_byte0_en_extend_oenz_gated_dline:[18:18]=0b0 +#define DDR_PHY_REG_130_DATA 0b00000000000000000000000000000000 + // param_phyd_reg_reserved_byte0:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_136_DATA 0b00000000000000000000000000000000 + // param_phya_reg_byte1_test_en:[0:0]=0b0 + // param_phya_reg_tx_byte1_ddr_test:[15:8]=0b00000000 + // param_phya_reg_rx_byte1_sel_test_in0:[19:16]=0b0000 + // param_phya_reg_rx_byte1_sel_test_in1:[23:20]=0b0000 +#define DDR_PHY_REG_137_DATA 0b00000000000000000000010001000000 + // param_phya_reg_tx_byte1_en_rx_awys_on:[0:0]=0b0 + // param_phya_reg_tx_byte1_sel_en_rx_dly:[5:4]=0b00 + // param_phya_reg_rx_byte1_sel_en_rx_gen_rst:[6:6]=0b1 + // param_phya_reg_byte1_mask_oenz:[8:8]=0b0 + // param_phya_reg_tx_byte1_en_mask:[10:10]=0b1 + // param_phya_reg_rx_byte1_sel_cnt_mode:[13:12]=0b00 + // param_phya_reg_tx_byte1_sel_int_loop_back:[14:14]=0b0 + // param_phya_reg_rx_byte1_sel_dqs_dly_for_gated:[17:16]=0b00 + // param_phya_reg_tx_byte1_en_extend_oenz_gated_dline:[18:18]=0b0 +#define DDR_PHY_REG_138_DATA 0b00000000000000000000000000000000 + // param_phyd_reg_reserved_byte1:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_0_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_ca_sel_lpddr4_pmos_ph_ca:[3:3]=0b0 + // f0_param_phya_reg_tx_clk_sel_lpddr4_pmos_ph_clk:[4:4]=0b0 + // f0_param_phya_reg_tx_sel_lpddr4_pmos_ph:[5:5]=0b0 +#define DDR_PHY_REG_1_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_ca_drvn_de:[1:0]=0b00 + // f0_param_phya_reg_tx_ca_drvp_de:[5:4]=0b00 + // f0_param_phya_reg_tx_clk0_drvn_de:[9:8]=0b00 + // f0_param_phya_reg_tx_clk0_drvp_de:[13:12]=0b00 + // f0_param_phya_reg_tx_csb_drvn_de:[17:16]=0b00 + // f0_param_phya_reg_tx_csb_drvp_de:[21:20]=0b00 + // f0_param_phya_reg_tx_ca_en_tx_de:[24:24]=0b0 + // f0_param_phya_reg_tx_clk0_en_tx_de:[28:28]=0b0 + // f0_param_phya_reg_tx_csb_en_tx_de:[30:30]=0b0 +#define DDR_PHY_REG_2_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_ca_sel_dly1t_ca:[22:0]=0b00000000000000000000000 +#define DDR_PHY_REG_3_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_clk_sel_dly1t_clk0:[0:0]=0b0 + // f0_param_phya_reg_tx_ca_sel_dly1t_cke0:[8:8]=0b0 + // f0_param_phya_reg_tx_ca_sel_dly1t_csb0:[16:16]=0b0 +#define DDR_PHY_REG_4_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_vref_en_free_offset:[0:0]=0b0 + // f0_param_phya_reg_tx_vref_en_rangex2:[1:1]=0b0 + // f0_param_phya_reg_tx_vref_sel_lpddr4divby2p5:[2:2]=0b0 + // f0_param_phya_reg_tx_vref_sel_lpddr4divby3:[3:3]=0b0 + // f0_param_phya_reg_tx_vref_offset:[14:8]=0b0000000 + // f0_param_phya_reg_tx_vref_sel:[20:16]=0b10000 +#define DDR_PHY_REG_5_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_vrefca_en_free_offset:[0:0]=0b0 + // f0_param_phya_reg_tx_vrefca_en_rangex2:[1:1]=0b0 + // f0_param_phya_reg_tx_vrefca_offset:[14:8]=0b0000000 + // f0_param_phya_reg_tx_vrefca_sel:[20:16]=0b10000 +#define DDR_PHY_REG_6_F0_DATA 0b00000000000000000000000000000010 + // f0_param_phyd_tx_byte_dqs_extend:[2:0]=0b010 +#define DDR_PHY_REG_7_F0_DATA 0b00000000000000000100000001000000 + // f0_param_phya_reg_rx_byte0_odt_reg:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte0_sel_odt_reg_mode:[6:6]=0b1 + // f0_param_phya_reg_rx_byte1_odt_reg:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte1_sel_odt_reg_mode:[14:14]=0b1 +#define DDR_PHY_REG_64_F0_DATA 0b00000000000000000001000000000001 + // f0_param_phya_reg_rx_byte0_en_lsmode:[0:0]=0b1 + // f0_param_phya_reg_rx_byte0_hystr:[5:4]=0b00 + // f0_param_phya_reg_rx_byte0_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f0_param_phya_reg_rx_byte0_sel_odt_center_tap:[10:10]=0b0 + // f0_param_phya_reg_byte0_en_rec_vol_mode:[12:12]=0b1 + // f0_param_phya_reg_tx_byte0_force_en_lvstl_ph:[14:14]=0b0 + // f0_param_phya_reg_rx_byte0_force_en_lvstl_odt:[16:16]=0b0 + // f0_param_phya_reg_rx_byte0_en_trig_lvl_rangex2:[18:18]=0b0 + // f0_param_phya_reg_rx_byte0_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_65_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_byte0_drvn_de_dq:[1:0]=0b00 + // f0_param_phya_reg_tx_byte0_drvp_de_dq:[5:4]=0b00 + // f0_param_phya_reg_tx_byte0_drvn_de_dqs:[9:8]=0b00 + // f0_param_phya_reg_tx_byte0_drvp_de_dqs:[13:12]=0b00 + // f0_param_phya_reg_tx_byte0_en_tx_de_dq:[16:16]=0b0 + // f0_param_phya_reg_tx_byte0_en_tx_de_dqs:[20:20]=0b1 +#define DDR_PHY_REG_66_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte0_sel_dly1t_dq:[8:0]=0b000000000 + // f0_param_phya_reg_tx_byte0_sel_dly1t_dqs:[12:12]=0b0 + // f0_param_phya_reg_tx_byte0_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_67_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4divby3:[4:4]=0b0 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_68_F0_DATA 0b00000000000000000000000000000100 + // f0_param_phyd_reg_rx_byte0_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_69_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte0_dq0_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte0_dq1_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte0_dq2_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte0_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_70_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte0_dq4_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte0_dq5_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte0_dq6_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte0_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_71_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte0_dm_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte0_dqsn_offset:[19:16]=0b0000 + // f0_param_phyd_reg_byte0_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_72_F0_DATA 0b00000000000000000000000000000011 + // f0_param_phyd_tx_byte0_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_80_F0_DATA 0b00000000000000000001000000000001 + // f0_param_phya_reg_rx_byte1_en_lsmode:[0:0]=0b1 + // f0_param_phya_reg_rx_byte1_hystr:[5:4]=0b00 + // f0_param_phya_reg_rx_byte1_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f0_param_phya_reg_rx_byte1_sel_odt_center_tap:[10:10]=0b0 + // f0_param_phya_reg_byte1_en_rec_vol_mode:[12:12]=0b1 + // f0_param_phya_reg_tx_byte1_force_en_lvstl_ph:[14:14]=0b0 + // f0_param_phya_reg_rx_byte1_force_en_lvstl_odt:[16:16]=0b0 + // f0_param_phya_reg_rx_byte1_en_trig_lvl_rangex2:[18:18]=0b0 + // f0_param_phya_reg_rx_byte1_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_81_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_byte1_drvn_de_dq:[1:0]=0b00 + // f0_param_phya_reg_tx_byte1_drvp_de_dq:[5:4]=0b00 + // f0_param_phya_reg_tx_byte1_drvn_de_dqs:[9:8]=0b00 + // f0_param_phya_reg_tx_byte1_drvp_de_dqs:[13:12]=0b00 + // f0_param_phya_reg_tx_byte1_en_tx_de_dq:[16:16]=0b0 + // f0_param_phya_reg_tx_byte1_en_tx_de_dqs:[20:20]=0b1 +#define DDR_PHY_REG_82_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte1_sel_dly1t_dq:[8:0]=0b000000000 + // f0_param_phya_reg_tx_byte1_sel_dly1t_dqs:[12:12]=0b0 + // f0_param_phya_reg_tx_byte1_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_83_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4divby3:[4:4]=0b0 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_84_F0_DATA 0b00000000000000000000000000000100 + // f0_param_phyd_reg_rx_byte1_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_85_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte1_dq0_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte1_dq1_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte1_dq2_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte1_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_86_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte1_dq4_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte1_dq5_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte1_dq6_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte1_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_87_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte1_dm_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte1_dqsn_offset:[19:16]=0b0000 + // f0_param_phyd_reg_byte1_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_88_F0_DATA 0b00000000000000000000000000000011 + // f0_param_phyd_tx_byte1_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_320_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_ca0_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_ca0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_331_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_tx_ca22_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_332_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_cke0_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_cke0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_333_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_csb0_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_cs0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_334_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_resetz_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_reset_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_336_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_ca0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_348_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_cke0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_349_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_csb0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_350_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_resetz_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_351_F0_DATA 0b00001000000010000000010000000100 + // f0_param_phya_reg_tx_ca_drvn_ca:[4:0]=0b00100 + // f0_param_phya_reg_tx_ca_drvp_ca:[12:8]=0b00100 + // f0_param_phya_reg_tx_ca_drvn_csb:[20:16]=0b01000 + // f0_param_phya_reg_tx_ca_drvp_csb:[28:24]=0b01000 +#define DDR_PHY_REG_352_F0_DATA 0b00001000000010000000100000001000 + // f0_param_phya_reg_tx_clk_drvn_clkn0:[4:0]=0b01000 + // f0_param_phya_reg_tx_clk_drvp_clkn0:[12:8]=0b01000 + // f0_param_phya_reg_tx_clk_drvn_clkp0:[20:16]=0b01000 + // f0_param_phya_reg_tx_clk_drvp_clkp0:[28:24]=0b01000 +#define DDR_PHY_REG_384_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit0_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_385_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit2_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_386_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit4_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_387_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit6_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_388_F0_DATA 0b00000000000000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_389_F0_DATA 0b00001011000000000000000000000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f0_param_phyd_tx_byte0_dqs_shift:[29:24]=0b001011 +#define DDR_PHY_REG_390_F0_DATA 0b00001010000000000000100100000000 + // f0_param_phyd_tx_byte0_oenz_dqs_shift:[13:8]=0b001001 + // f0_param_phyd_tx_byte0_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_391_F0_DATA 0b00000000000001000000011000000000 + // f0_param_phyd_tx_byte0_oenz_dqs_extend:[11:8]=0b0110 + // f0_param_phyd_tx_byte0_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_392_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_393_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_394_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_395_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_396_F0_DATA 0b00000000000000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_397_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_398_F0_DATA 0b00000000000000000000100000001000 + // f0_param_phya_reg_tx_byte0_drvn_dq:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte0_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_399_F0_DATA 0b00001000000010000000100000001000 + // f0_param_phya_reg_tx_byte0_drvn_dqsn:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte0_drvp_dqsn:[12:8]=0b01000 + // f0_param_phya_reg_tx_byte0_drvn_dqsp:[20:16]=0b01000 + // f0_param_phya_reg_tx_byte0_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_400_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit0_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_401_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit2_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_402_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit4_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_403_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit6_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_404_F0_DATA 0b00000000000000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_405_F0_DATA 0b00001011000000000000000000000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f0_param_phyd_tx_byte1_dqs_shift:[29:24]=0b001011 +#define DDR_PHY_REG_406_F0_DATA 0b00001010000000000000100100000000 + // f0_param_phyd_tx_byte1_oenz_dqs_shift:[13:8]=0b001001 + // f0_param_phyd_tx_byte1_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_407_F0_DATA 0b00000000000001000000011000000000 + // f0_param_phyd_tx_byte1_oenz_dqs_extend:[11:8]=0b0110 + // f0_param_phyd_tx_byte1_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_408_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_409_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_410_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_411_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_412_F0_DATA 0b00000000000000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_413_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_414_F0_DATA 0b00000000000000000000100000001000 + // f0_param_phya_reg_tx_byte1_drvn_dq:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte1_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_415_F0_DATA 0b00001000000010000000100000001000 + // f0_param_phya_reg_tx_byte1_drvn_dqsn:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte1_drvp_dqsn:[12:8]=0b01000 + // f0_param_phya_reg_tx_byte1_drvn_dqsp:[20:16]=0b01000 + // f0_param_phya_reg_tx_byte1_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_448_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte0_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_449_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte0_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_450_F0_DATA 0b00000000001010010011011100000000 + // f0_param_phyd_reg_rx_byte0_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b00110111 + // f0_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b00101001 +#define DDR_PHY_REG_451_F0_DATA 0b00000000000000000000110000000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_mask_ranka_sw:[6:0]=0b0000000 + // f0_param_phyd_rx_byte0_mask_shift:[13:8]=0b001100 +#define DDR_PHY_REG_452_F0_DATA 0b00000010000000000000001000000000 + // f0_param_phyd_rx_byte0_en_shift:[13:8]=0b000010 + // f0_param_phyd_rx_byte0_odt_en_shift:[29:24]=0b000010 +#define DDR_PHY_REG_453_F0_DATA 0b00000000000010010000111000001110 + // f0_param_phyd_rx_byte0_en_extend:[3:0]=0b1110 + // f0_param_phyd_rx_byte0_odt_en_extend:[11:8]=0b1110 + // f0_param_phyd_rx_byte0_rden_to_rdvld:[20:16]=0b01001 +#define DDR_PHY_REG_454_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte0_rx_dq0_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq1_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq2_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_455_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte0_rx_dq4_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq5_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq6_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_456_F0_DATA 0b01000000010000000000000000000000 + // f0_param_phya_reg_rx_byte0_rx_dq8_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_tx_byte0_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f0_param_phya_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_457_F0_DATA 0b00000000000100000000000000010000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dq:[4:0]=0b10000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dq_offset:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dqs:[20:16]=0b10000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dqs_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_460_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte1_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_461_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte1_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_462_F0_DATA 0b00000000001010010011011100000000 + // f0_param_phyd_reg_rx_byte1_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b00110111 + // f0_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b00101001 +#define DDR_PHY_REG_463_F0_DATA 0b00000000000000000000110000000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_mask_ranka_sw:[6:0]=0b0000000 + // f0_param_phyd_rx_byte1_mask_shift:[13:8]=0b001100 +#define DDR_PHY_REG_464_F0_DATA 0b00000010000000000000001000000000 + // f0_param_phyd_rx_byte1_en_shift:[13:8]=0b000010 + // f0_param_phyd_rx_byte1_odt_en_shift:[29:24]=0b000010 +#define DDR_PHY_REG_465_F0_DATA 0b00000000000010010000111000001110 + // f0_param_phyd_rx_byte1_en_extend:[3:0]=0b1110 + // f0_param_phyd_rx_byte1_odt_en_extend:[11:8]=0b1110 + // f0_param_phyd_rx_byte1_rden_to_rdvld:[20:16]=0b01001 +#define DDR_PHY_REG_466_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte1_rx_dq0_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq1_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq2_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_467_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte1_rx_dq4_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq5_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq6_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_468_F0_DATA 0b01000000010000000000000000000000 + // f0_param_phya_reg_rx_byte1_rx_dq8_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_tx_byte1_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f0_param_phya_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_469_F0_DATA 0b00000000000100000000000000010000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dq:[4:0]=0b10000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dq_offset:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dqs:[20:16]=0b10000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dqs_offset:[30:24]=0b0000000 +#ifdef F1_TEST +#define DDR_PHY_REG_0_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_ca_sel_lpddr4_pmos_ph_ca:[3:3]=0b0 + // f1_param_phya_reg_tx_clk_sel_lpddr4_pmos_ph_clk:[4:4]=0b0 + // f1_param_phya_reg_tx_sel_lpddr4_pmos_ph:[5:5]=0b0 +#define DDR_PHY_REG_1_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_ca_drvn_de:[1:0]=0b00 + // f1_param_phya_reg_tx_ca_drvp_de:[5:4]=0b00 + // f1_param_phya_reg_tx_clk0_drvn_de:[9:8]=0b00 + // f1_param_phya_reg_tx_clk0_drvp_de:[13:12]=0b00 + // f1_param_phya_reg_tx_csb_drvn_de:[17:16]=0b00 + // f1_param_phya_reg_tx_csb_drvp_de:[21:20]=0b00 + // f1_param_phya_reg_tx_ca_en_tx_de:[24:24]=0b0 + // f1_param_phya_reg_tx_clk0_en_tx_de:[28:28]=0b0 + // f1_param_phya_reg_tx_csb_en_tx_de:[30:30]=0b0 +#define DDR_PHY_REG_2_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_ca_sel_dly1t_ca:[22:0]=0b00000000000000000000000 +#define DDR_PHY_REG_3_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_clk_sel_dly1t_clk0:[0:0]=0b0 + // f1_param_phya_reg_tx_ca_sel_dly1t_cke0:[8:8]=0b0 + // f1_param_phya_reg_tx_ca_sel_dly1t_csb0:[16:16]=0b0 +#define DDR_PHY_REG_4_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_vref_en_free_offset:[0:0]=0b0 + // f1_param_phya_reg_tx_vref_en_rangex2:[1:1]=0b0 + // f1_param_phya_reg_tx_vref_sel_lpddr4divby2p5:[2:2]=0b0 + // f1_param_phya_reg_tx_vref_sel_lpddr4divby3:[3:3]=0b0 + // f1_param_phya_reg_tx_vref_offset:[14:8]=0b0000000 + // f1_param_phya_reg_tx_vref_sel:[20:16]=0b10000 +#define DDR_PHY_REG_5_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_vrefca_en_free_offset:[0:0]=0b0 + // f1_param_phya_reg_tx_vrefca_en_rangex2:[1:1]=0b0 + // f1_param_phya_reg_tx_vrefca_offset:[14:8]=0b0000000 + // f1_param_phya_reg_tx_vrefca_sel:[20:16]=0b10000 +#define DDR_PHY_REG_6_F1_DATA 0b00000000000000000000000000000010 + // f1_param_phyd_tx_byte_dqs_extend:[2:0]=0b010 +#define DDR_PHY_REG_7_F1_DATA 0b00000000000000000100000001000000 + // f1_param_phya_reg_rx_byte0_odt_reg:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte0_sel_odt_reg_mode:[6:6]=0b1 + // f1_param_phya_reg_rx_byte1_odt_reg:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte1_sel_odt_reg_mode:[14:14]=0b1 +#define DDR_PHY_REG_64_F1_DATA 0b00000000000000000001000000000001 + // f1_param_phya_reg_rx_byte0_en_lsmode:[0:0]=0b1 + // f1_param_phya_reg_rx_byte0_hystr:[5:4]=0b00 + // f1_param_phya_reg_rx_byte0_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f1_param_phya_reg_rx_byte0_sel_odt_center_tap:[10:10]=0b0 + // f1_param_phya_reg_byte0_en_rec_vol_mode:[12:12]=0b1 + // f1_param_phya_reg_tx_byte0_force_en_lvstl_ph:[14:14]=0b0 + // f1_param_phya_reg_rx_byte0_force_en_lvstl_odt:[16:16]=0b0 + // f1_param_phya_reg_rx_byte0_en_trig_lvl_rangex2:[18:18]=0b0 + // f1_param_phya_reg_rx_byte0_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_65_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_byte0_drvn_de_dq:[1:0]=0b00 + // f1_param_phya_reg_tx_byte0_drvp_de_dq:[5:4]=0b00 + // f1_param_phya_reg_tx_byte0_drvn_de_dqs:[9:8]=0b00 + // f1_param_phya_reg_tx_byte0_drvp_de_dqs:[13:12]=0b00 + // f1_param_phya_reg_tx_byte0_en_tx_de_dq:[16:16]=0b0 + // f1_param_phya_reg_tx_byte0_en_tx_de_dqs:[20:20]=0b1 +#define DDR_PHY_REG_66_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte0_sel_dly1t_dq:[8:0]=0b000000000 + // f1_param_phya_reg_tx_byte0_sel_dly1t_dqs:[12:12]=0b0 + // f1_param_phya_reg_tx_byte0_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_67_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4divby3:[4:4]=0b0 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_68_F1_DATA 0b00000000000000000000000000000100 + // f1_param_phyd_reg_rx_byte0_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_69_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte0_dq0_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte0_dq1_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte0_dq2_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte0_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_70_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte0_dq4_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte0_dq5_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte0_dq6_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte0_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_71_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte0_dm_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte0_dqsn_offset:[19:16]=0b0000 + // f1_param_phyd_reg_byte0_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_72_F1_DATA 0b00000000000000000000000000000011 + // f1_param_phyd_tx_byte0_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_80_F1_DATA 0b00000000000000000001000000000001 + // f1_param_phya_reg_rx_byte1_en_lsmode:[0:0]=0b1 + // f1_param_phya_reg_rx_byte1_hystr:[5:4]=0b00 + // f1_param_phya_reg_rx_byte1_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f1_param_phya_reg_rx_byte1_sel_odt_center_tap:[10:10]=0b0 + // f1_param_phya_reg_byte1_en_rec_vol_mode:[12:12]=0b1 + // f1_param_phya_reg_tx_byte1_force_en_lvstl_ph:[14:14]=0b0 + // f1_param_phya_reg_rx_byte1_force_en_lvstl_odt:[16:16]=0b0 + // f1_param_phya_reg_rx_byte1_en_trig_lvl_rangex2:[18:18]=0b0 + // f1_param_phya_reg_rx_byte1_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_81_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_byte1_drvn_de_dq:[1:0]=0b00 + // f1_param_phya_reg_tx_byte1_drvp_de_dq:[5:4]=0b00 + // f1_param_phya_reg_tx_byte1_drvn_de_dqs:[9:8]=0b00 + // f1_param_phya_reg_tx_byte1_drvp_de_dqs:[13:12]=0b00 + // f1_param_phya_reg_tx_byte1_en_tx_de_dq:[16:16]=0b0 + // f1_param_phya_reg_tx_byte1_en_tx_de_dqs:[20:20]=0b1 +#define DDR_PHY_REG_82_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte1_sel_dly1t_dq:[8:0]=0b000000000 + // f1_param_phya_reg_tx_byte1_sel_dly1t_dqs:[12:12]=0b0 + // f1_param_phya_reg_tx_byte1_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_83_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4divby3:[4:4]=0b0 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_84_F1_DATA 0b00000000000000000000000000000100 + // f1_param_phyd_reg_rx_byte1_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_85_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte1_dq0_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte1_dq1_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte1_dq2_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte1_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_86_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte1_dq4_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte1_dq5_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte1_dq6_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte1_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_87_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte1_dm_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte1_dqsn_offset:[19:16]=0b0000 + // f1_param_phyd_reg_byte1_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_88_F1_DATA 0b00000000000000000000000000000011 + // f1_param_phyd_tx_byte1_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_320_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_ca0_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_ca0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_331_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_tx_ca22_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_332_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_cke0_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_cke0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_333_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_csb0_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_cs0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_334_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_resetz_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_reset_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_336_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_ca0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_348_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_cke0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_349_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_csb0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_350_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_resetz_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_351_F1_DATA 0b00001000000010000000010000000100 + // f1_param_phya_reg_tx_ca_drvn_ca:[4:0]=0b00100 + // f1_param_phya_reg_tx_ca_drvp_ca:[12:8]=0b00100 + // f1_param_phya_reg_tx_ca_drvn_csb:[20:16]=0b01000 + // f1_param_phya_reg_tx_ca_drvp_csb:[28:24]=0b01000 +#define DDR_PHY_REG_352_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_clk_drvn_clkn0:[4:0]=0b01000 + // f1_param_phya_reg_tx_clk_drvp_clkn0:[12:8]=0b01000 + // f1_param_phya_reg_tx_clk_drvn_clkp0:[20:16]=0b01000 + // f1_param_phya_reg_tx_clk_drvp_clkp0:[28:24]=0b01000 +#define DDR_PHY_REG_384_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit0_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_385_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit2_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_386_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit4_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_387_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit6_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_388_F1_DATA 0b00000000000000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_389_F1_DATA 0b00001011000000000000000000000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f1_param_phyd_tx_byte0_dqs_shift:[29:24]=0b001011 +#define DDR_PHY_REG_390_F1_DATA 0b00001010000000000000100100000000 + // f1_param_phyd_tx_byte0_oenz_dqs_shift:[13:8]=0b001001 + // f1_param_phyd_tx_byte0_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_391_F1_DATA 0b00000000000001000000011000000000 + // f1_param_phyd_tx_byte0_oenz_dqs_extend:[11:8]=0b0110 + // f1_param_phyd_tx_byte0_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_392_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_393_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_394_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_395_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_396_F1_DATA 0b00000000000000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_397_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_398_F1_DATA 0b00000000000000000000100000001000 + // f1_param_phya_reg_tx_byte0_drvn_dq:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte0_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_399_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_byte0_drvn_dqsn:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte0_drvp_dqsn:[12:8]=0b01000 + // f1_param_phya_reg_tx_byte0_drvn_dqsp:[20:16]=0b01000 + // f1_param_phya_reg_tx_byte0_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_400_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit0_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_401_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit2_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_402_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit4_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_403_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit6_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_404_F1_DATA 0b00000000000000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_405_F1_DATA 0b00001011000000000000000000000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f1_param_phyd_tx_byte1_dqs_shift:[29:24]=0b001011 +#define DDR_PHY_REG_406_F1_DATA 0b00001010000000000000100100000000 + // f1_param_phyd_tx_byte1_oenz_dqs_shift:[13:8]=0b001001 + // f1_param_phyd_tx_byte1_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_407_F1_DATA 0b00000000000001000000011000000000 + // f1_param_phyd_tx_byte1_oenz_dqs_extend:[11:8]=0b0110 + // f1_param_phyd_tx_byte1_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_408_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_409_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_410_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_411_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_412_F1_DATA 0b00000000000000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_413_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_414_F1_DATA 0b00000000000000000000100000001000 + // f1_param_phya_reg_tx_byte1_drvn_dq:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte1_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_415_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_byte1_drvn_dqsn:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte1_drvp_dqsn:[12:8]=0b01000 + // f1_param_phya_reg_tx_byte1_drvn_dqsp:[20:16]=0b01000 + // f1_param_phya_reg_tx_byte1_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_448_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte0_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_449_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte0_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_450_F1_DATA 0b00000000001010010011011100000000 + // f1_param_phyd_reg_rx_byte0_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b00110111 + // f1_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b00101001 +#define DDR_PHY_REG_451_F1_DATA 0b00000000000000000000110000000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_mask_ranka_sw:[6:0]=0b0000000 + // f1_param_phyd_rx_byte0_mask_shift:[13:8]=0b001100 +#define DDR_PHY_REG_452_F1_DATA 0b00000010000000000000001000000000 + // f1_param_phyd_rx_byte0_en_shift:[13:8]=0b000010 + // f1_param_phyd_rx_byte0_odt_en_shift:[29:24]=0b000010 +#define DDR_PHY_REG_453_F1_DATA 0b00000000000010010000111000001110 + // f1_param_phyd_rx_byte0_en_extend:[3:0]=0b1110 + // f1_param_phyd_rx_byte0_odt_en_extend:[11:8]=0b1110 + // f1_param_phyd_rx_byte0_rden_to_rdvld:[20:16]=0b01001 +#define DDR_PHY_REG_454_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte0_rx_dq0_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq1_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq2_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_455_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte0_rx_dq4_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq5_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq6_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_456_F1_DATA 0b01000000010000000000000000000000 + // f1_param_phya_reg_rx_byte0_rx_dq8_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_tx_byte0_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f1_param_phya_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_457_F1_DATA 0b00000000000100000000000000010000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dq:[4:0]=0b10000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dq_offset:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dqs:[20:16]=0b10000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dqs_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_460_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte1_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_461_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte1_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_462_F1_DATA 0b00000000001010010011011100000000 + // f1_param_phyd_reg_rx_byte1_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b00110111 + // f1_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b00101001 +#define DDR_PHY_REG_463_F1_DATA 0b00000000000000000000110000000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_mask_ranka_sw:[6:0]=0b0000000 + // f1_param_phyd_rx_byte1_mask_shift:[13:8]=0b001100 +#define DDR_PHY_REG_464_F1_DATA 0b00000010000000000000001000000000 + // f1_param_phyd_rx_byte1_en_shift:[13:8]=0b000010 + // f1_param_phyd_rx_byte1_odt_en_shift:[29:24]=0b000010 +#define DDR_PHY_REG_465_F1_DATA 0b00000000000010010000111000001110 + // f1_param_phyd_rx_byte1_en_extend:[3:0]=0b1110 + // f1_param_phyd_rx_byte1_odt_en_extend:[11:8]=0b1110 + // f1_param_phyd_rx_byte1_rden_to_rdvld:[20:16]=0b01001 +#define DDR_PHY_REG_466_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte1_rx_dq0_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq1_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq2_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_467_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte1_rx_dq4_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq5_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq6_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_468_F1_DATA 0b01000000010000000000000000000000 + // f1_param_phya_reg_rx_byte1_rx_dq8_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_tx_byte1_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f1_param_phya_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_469_F1_DATA 0b00000000000100000000000000010000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dq:[4:0]=0b10000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dq_offset:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dqs:[20:16]=0b10000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dqs_offset:[30:24]=0b0000000 +#endif //F1_TEST + +void ddrc_init(void); +void phy_init(void); +void ctrl_init_high_patch(void); +void ctrl_init_low_patch(void); +//void ctrl_init_detect_dram_size(uint8_t * dram_cap_in_mbyte); +void ctrl_init_update_by_dram_size(uint8_t dram_cap_in_mbyte); + +#endif /* __DDR_PI_PHY_H__ */ diff --git a/fsbl/plat/cv181x/include/ddr/ddr_config/ddr_auto_x16/ddr2_1333_init.h b/fsbl/plat/cv181x/include/ddr/ddr_config/ddr_auto_x16/ddr2_1333_init.h new file mode 100644 index 000000000..cfeb1e776 --- /dev/null +++ b/fsbl/plat/cv181x/include/ddr/ddr_config/ddr_auto_x16/ddr2_1333_init.h @@ -0,0 +1,1157 @@ +#ifndef __DDR2__PI_PHY_H__ +#define __DDR2_PI_PHY_H__ + +extern uint32_t ddr_data_rate; +// $Module: reg_cv_phy_param_ddr2_1333 $ +// $RegisterBank Version: V 1.0.00 $ +// $Author: KC TSAI $ +// $Date: Wed, 15 Sep 2021 11:31:12 AM $ +// + +#define DDR2_PHY_REG_0_DATA 0b00000011000000100000000100000000 + // param_phyd_swap_ca0:[4:0]=0b00000 + // param_phyd_swap_ca1:[12:8]=0b00001 + // param_phyd_swap_ca2:[20:16]=0b00010 + // param_phyd_swap_ca3:[28:24]=0b00011 +#define DDR2_PHY_REG_1_DATA 0b00000111000001100000010100000100 + // param_phyd_swap_ca4:[4:0]=0b00100 + // param_phyd_swap_ca5:[12:8]=0b00101 + // param_phyd_swap_ca6:[20:16]=0b00110 + // param_phyd_swap_ca7:[28:24]=0b00111 +#define DDR2_PHY_REG_2_DATA 0b00001011000010100000100100001000 + // param_phyd_swap_ca8:[4:0]=0b01000 + // param_phyd_swap_ca9:[12:8]=0b01001 + // param_phyd_swap_ca10:[20:16]=0b01010 + // param_phyd_swap_ca11:[28:24]=0b01011 +#define DDR2_PHY_REG_3_DATA 0b00001111000011100000110100001100 + // param_phyd_swap_ca12:[4:0]=0b01100 + // param_phyd_swap_ca13:[12:8]=0b01101 + // param_phyd_swap_ca14:[20:16]=0b01110 + // param_phyd_swap_ca15:[28:24]=0b01111 +#define DDR2_PHY_REG_4_DATA 0b00010011000100100001000100010000 + // param_phyd_swap_ca16:[4:0]=0b10000 + // param_phyd_swap_ca17:[12:8]=0b10001 + // param_phyd_swap_ca18:[20:16]=0b10010 + // param_phyd_swap_ca19:[28:24]=0b10011 +#define DDR2_PHY_REG_5_DATA 0b00000000000101100001010100010100 + // param_phyd_swap_ca20:[4:0]=0b10100 + // param_phyd_swap_ca21:[12:8]=0b10101 + // param_phyd_swap_ca22:[20:16]=0b10110 +#define DDR2_PHY_REG_6_DATA 0b00000000000000000000000000000000 + // param_phyd_swap_cke0:[0:0]=0b0 + // param_phyd_swap_cs0:[4:4]=0b0 +#define DDR2_PHY_REG_7_DATA 0b00000000000000000000000100000000 + // param_phyd_data_byte_swap_slice0:[1:0]=0b00 + // param_phyd_data_byte_swap_slice1:[9:8]=0b01 +#define DDR2_PHY_REG_8_DATA 0b01110110010101000011001000010000 + // param_phyd_swap_byte0_dq0_mux:[3:0]=0b0000 + // param_phyd_swap_byte0_dq1_mux:[7:4]=0b0001 + // param_phyd_swap_byte0_dq2_mux:[11:8]=0b0010 + // param_phyd_swap_byte0_dq3_mux:[15:12]=0b0011 + // param_phyd_swap_byte0_dq4_mux:[19:16]=0b0100 + // param_phyd_swap_byte0_dq5_mux:[23:20]=0b0101 + // param_phyd_swap_byte0_dq6_mux:[27:24]=0b0110 + // param_phyd_swap_byte0_dq7_mux:[31:28]=0b0111 +#define DDR2_PHY_REG_9_DATA 0b00000000000000000000000000001000 + // param_phyd_swap_byte0_dm_mux:[3:0]=0b1000 +#define DDR2_PHY_REG_10_DATA 0b01110110010101000011001000010000 + // param_phyd_swap_byte1_dq0_mux:[3:0]=0b0000 + // param_phyd_swap_byte1_dq1_mux:[7:4]=0b0001 + // param_phyd_swap_byte1_dq2_mux:[11:8]=0b0010 + // param_phyd_swap_byte1_dq3_mux:[15:12]=0b0011 + // param_phyd_swap_byte1_dq4_mux:[19:16]=0b0100 + // param_phyd_swap_byte1_dq5_mux:[23:20]=0b0101 + // param_phyd_swap_byte1_dq6_mux:[27:24]=0b0110 + // param_phyd_swap_byte1_dq7_mux:[31:28]=0b0111 +#define DDR2_PHY_REG_11_DATA 0b00000000000000000000000000001000 + // param_phyd_swap_byte1_dm_mux:[3:0]=0b1000 +#define DDR2_PHY_REG_16_DATA 0b00000000000000000000000000000000 + // param_phyd_dll_rx_sw_mode:[0:0]=0b0 + // param_phyd_dll_rx_start_cal:[1:1]=0b0 + // param_phyd_dll_rx_cntr_mode:[2:2]=0b0 + // param_phyd_dll_rx_hwrst_time:[3:3]=0b0 + // param_phyd_dll_tx_sw_mode:[16:16]=0b0 + // param_phyd_dll_tx_start_cal:[17:17]=0b0 + // param_phyd_dll_tx_cntr_mode:[18:18]=0b0 + // param_phyd_dll_tx_hwrst_time:[19:19]=0b0 +#define DDR2_PHY_REG_17_DATA 0b00000000011111110000000000001101 + // param_phyd_dll_slave_delay_en:[0:0]=0b1 + // param_phyd_dll_rw_en:[1:1]=0b0 + // param_phyd_dll_avg_mode:[2:2]=0b1 + // param_phyd_dll_upd_wait:[6:3]=0b0001 + // param_phyd_dll_sw_clr:[7:7]=0b0 + // param_phyd_dll_sw_code_mode:[8:8]=0b0 + // param_phyd_dll_sw_code:[23:16]=0b01111111 +#define DDR2_PHY_REG_18_DATA 0b00000000000000000000000000000000 + // param_phya_reg_tx_clk_tx_dline_code_clkn0:[6:0]=0b0000000 + // param_phya_reg_tx_clk_tx_dline_code_clkp0:[14:8]=0b0000000 +#define DDR2_PHY_REG_19_DATA 0b00000000000000000000000000010000 + // param_phya_reg_sel_ddr4_mode:[0:0]=0b0 + // param_phya_reg_sel_lpddr3_mode:[1:1]=0b0 + // param_phya_reg_sel_lpddr4_mode:[2:2]=0b0 + // param_phya_reg_sel_ddr3_mode:[3:3]=0b0 + // param_phya_reg_sel_ddr2_mode:[4:4]=0b1 +#define DDR2_PHY_REG_20_DATA 0b00000000000000000000000000000100 + // param_phyd_dram_class:[3:0]=0b0100 +#define DDR2_PHY_REG_21_DATA 0b00001100000000000000101100000000 + // param_phyd_wrlvl_start_delay_code:[6:0]=0b0000000 + // param_phyd_wrlvl_start_shift_code:[13:8]=0b001011 + // param_phyd_wrlvl_end_delay_code:[22:16]=0b0000000 + // param_phyd_wrlvl_end_shift_code:[29:24]=0b001100 +#define DDR2_PHY_REG_22_DATA 0b00001001000101100000000001001111 + // param_phyd_wrlvl_capture_cnt:[3:0]=0b1111 + // param_phyd_wrlvl_dly_step:[7:4]=0b0100 + // param_phyd_wrlvl_disable:[11:8]=0b0000 + // param_phyd_wrlvl_resp_wait_cnt:[21:16]=0b010110 + // param_phyd_oenz_lead_cnt:[26:23]=0b0010 + // param_phyd_wrlvl_mode:[27:27]=0b1 +#define DDR2_PHY_REG_23_DATA 0b00000000000000000000000000000000 + // param_phyd_wrlvl_sw:[0:0]=0b0 + // param_phyd_wrlvl_sw_upd_req:[1:1]=0b0 + // param_phyd_wrlvl_sw_resp:[2:2]=0b0 + // param_phyd_wrlvl_data_mask:[23:16]=0b00000000 +#define DDR2_PHY_REG_24_DATA 0b00000100000000000000001101110000 + // param_phyd_pigtlvl_back_step:[7:0]=0b01110000 + // param_phyd_pigtlvl_capture_cnt:[11:8]=0b0011 + // param_phyd_pigtlvl_disable:[19:16]=0b0000 + // param_phyd_pigtlvl_dly_step:[27:24]=0b0100 +#define DDR2_PHY_REG_25_DATA 0b00001110000000000000100100000000 + // param_phyd_pigtlvl_start_delay_code:[6:0]=0b0000000 + // param_phyd_pigtlvl_start_shift_code:[13:8]=0b001001 + // param_phyd_pigtlvl_end_delay_code:[22:16]=0b0000000 + // param_phyd_pigtlvl_end_shift_code:[29:24]=0b001110 +#define DDR2_PHY_REG_26_DATA 0b00000000100000000000000000000000 + // param_phyd_pigtlvl_resp_wait_cnt:[5:0]=0b000000 + // param_phyd_pigtlvl_sw:[8:8]=0b0 + // param_phyd_pigtlvl_sw_resp:[13:12]=0b00 + // param_phyd_pigtlvl_sw_upd_req:[16:16]=0b0 + // param_phyd_rx_en_lead_cnt:[23:20]=0b1000 +#define DDR2_PHY_REG_28_DATA 0b00000000000000000000000100001000 + // param_phyd_rgtrack_threshold:[4:0]=0b01000 + // param_phyd_rgtrack_dly_step:[11:8]=0b0001 + // param_phyd_rgtrack_disable:[19:16]=0b0000 +#define DDR2_PHY_REG_29_DATA 0b00000000000001110010000000000000 + // param_phyd_zqcal_wait_count:[3:0]=0b0000 + // param_phyd_zqcal_cycle_count:[15:8]=0b00100000 + // param_phyd_zqcal_hw_mode:[18:16]=0b111 +#define DDR2_PHY_REG_32_DATA 0b00011111000000001110000000000000 + // param_phyd_pirdlvl_dlie_code_start:[7:0]=0b00000000 + // param_phyd_pirdlvl_dlie_code_end:[15:8]=0b11100000 + // param_phyd_pirdlvl_deskew_start:[22:16]=0b0000000 + // param_phyd_pirdlvl_deskew_end:[30:24]=0b0011111 +#define DDR2_PHY_REG_33_DATA 0b00000001000010010001000000001111 + // param_phyd_pirdlvl_trig_lvl_start:[4:0]=0b01111 + // param_phyd_pirdlvl_trig_lvl_end:[12:8]=0b10000 + // param_phyd_pirdlvl_rdvld_start:[20:16]=0b01001 + // param_phyd_pirdlvl_rdvld_end:[28:24]=0b00001 +#define DDR2_PHY_REG_34_DATA 0b00001010000000010000000100010100 + // param_phyd_pirdlvl_dly_step:[3:0]=0b0100 + // param_phyd_pirdlvl_ds_dly_step:[7:4]=0b0001 + // param_phyd_pirdlvl_vref_step:[11:8]=0b0001 + // param_phyd_pirdlvl_disable:[15:12]=0b0000 + // param_phyd_pirdlvl_resp_wait_cnt:[21:16]=0b000001 + // param_phyd_pirdlvl_vref_wait_cnt:[31:24]=0b00001010 +#define DDR2_PHY_REG_35_DATA 0b10101010101010100000000010001111 + // param_phyd_pirdlvl_rx_prebit_deskew_en:[0:0]=0b1 + // param_phyd_pirdlvl_rx_init_deskew_en:[1:1]=0b1 + // param_phyd_pirdlvl_vref_training_en:[2:2]=0b1 + // param_phyd_pirdlvl_rdvld_training_en:[3:3]=0b1 + // param_phyd_pirdlvl_capture_cnt:[7:4]=0b1000 + // param_phyd_pirdlvl_MR1520_BYTE:[15:8]=0b00000000 + // param_phyd_pirdlvl_MR3240:[31:16]=0b1010101010101010 +#define DDR2_PHY_REG_36_DATA 0b00000000000000000011100000000000 + // param_phyd_pirdlvl_data_mask:[8:0]=0b000000000 + // param_phyd_pirdlvl_sw:[9:9]=0b0 + // param_phyd_pirdlvl_sw_upd_req:[10:10]=0b0 + // param_phyd_pirdlvl_sw_resp:[12:11]=0b11 + // param_phyd_pirdlvl_trig_lvl_dqs_follow_dq:[13:13]=0b1 +#define DDR2_PHY_REG_37_DATA 0b00000000000000000000100000000001 + // param_phyd_pirdlvl_rdvld_offset:[3:0]=0b0001 + // param_phyd_pirdlvl_found_cnt_limite:[15:8]=0b00001000 +#define DDR2_PHY_REG_40_DATA 0b00000111010000000000010101000000 + // param_phyd_piwdqlvl_start_delay_code:[6:0]=0b1000000 + // param_phyd_piwdqlvl_start_shift_code:[13:8]=0b000101 + // param_phyd_piwdqlvl_end_delay_code:[22:16]=0b1000000 + // param_phyd_piwdqlvl_end_shift_code:[29:24]=0b000111 +#define DDR2_PHY_REG_41_DATA 0b00000001010000100000010100000100 + // param_phyd_piwdqlvl_tx_vref_start:[4:0]=0b00100 + // param_phyd_piwdqlvl_tx_vref_end:[12:8]=0b00101 + // param_phyd_piwdqlvl_capture_cnt:[19:16]=0b0010 + // param_phyd_piwdqlvl_dly_step:[23:20]=0b0100 + // param_phyd_piwdqlvl_vref_step:[27:24]=0b0001 + // param_phyd_piwdqlvl_disable:[31:28]=0b0000 +#define DDR2_PHY_REG_42_DATA 0b00000000010101010000000000001010 + // param_phyd_piwdqlvl_vref_wait_cnt:[7:0]=0b00001010 + // param_phyd_piwdqlvl_tx_vref_training_en:[8:8]=0b0 + // param_phyd_piwdqlvl_byte_invert_0:[23:16]=0b01010101 +#define DDR2_PHY_REG_43_DATA 0b00000000010101010011110001011010 + // param_phyd_piwdqlvl_dq_pattern_0:[15:0]=0b0011110001011010 + // param_phyd_piwdqlvl_byte_invert_1:[23:16]=0b01010101 +#define DDR2_PHY_REG_44_DATA 0b00000000101010101010010111000011 + // param_phyd_piwdqlvl_dq_pattern_1:[15:0]=0b1010010111000011 + // param_phyd_piwdqlvl_byte_invert_2:[23:16]=0b10101010 +#define DDR2_PHY_REG_45_DATA 0b00000000101010101111000011110000 + // param_phyd_piwdqlvl_dq_pattern_2:[15:0]=0b1111000011110000 + // param_phyd_piwdqlvl_byte_invert_3:[23:16]=0b10101010 +#define DDR2_PHY_REG_46_DATA 0b00011110000000000000111100001111 + // param_phyd_piwdqlvl_dq_pattern_3:[15:0]=0b0000111100001111 + // param_phyd_piwdqlvl_data_mask:[24:16]=0b000000000 + // param_phyd_piwdqlvl_pattern_sel:[28:25]=0b1111 +#define DDR2_PHY_REG_47_DATA 0b00000000000010000011111000010011 + // param_phyd_piwdqlvl_tdfi_phy_wrdata:[2:0]=0b011 + // param_phyd_piwdqlvl_oenz_lead_cnt:[6:3]=0b0010 + // param_phyd_piwdqlvl_sw:[7:7]=0b0 + // param_phyd_piwdqlvl_sw_upd_req:[8:8]=0b0 + // param_phyd_piwdqlvl_sw_resp:[10:9]=0b11 + // param_phyd_piwdqlvl_sw_result:[11:11]=0b1 + // param_phyd_piwdqlvl_dq_mode:[12:12]=0b1 + // param_phyd_piwdqlvl_dm_mode:[13:13]=0b1 + // param_phyd_piwdqlvl_found_cnt_limite:[23:16]=0b00001000 +#define DDR2_PHY_REG_60_DATA 0b00000000000000000000000000000000 + // param_phyd_patch_revision:[31:0]=0b00000000000000000000000000000000 +#define DDR2_PHY_REG_61_DATA 0b00000000000000110000000000110011 + // param_phyd_ca_shift_gating_en:[0:0]=0b1 + // param_phyd_cs_shift_gating_en:[1:1]=0b1 + // param_phyd_cke_shift_gating_en:[2:2]=0b0 + // param_phyd_resetz_shift_gating_en:[3:3]=0b0 + // param_phyd_tx_byte0_shift_gating_en:[4:4]=0b1 + // param_phyd_tx_byte1_shift_gating_en:[5:5]=0b1 + // param_phyd_rx_byte0_shift_gating_en:[16:16]=0b1 + // param_phyd_rx_byte1_shift_gating_en:[17:17]=0b1 +#define DDR2_PHY_REG_62_DATA 0b00000000001000010000000000101100 + // param_phyd_lb_lfsr_seed0:[8:0]=0b000101100 + // param_phyd_lb_lfsr_seed1:[24:16]=0b000100001 +#define DDR2_PHY_REG_63_DATA 0b00000000001101110000000000010110 + // param_phyd_lb_lfsr_seed2:[8:0]=0b000010110 + // param_phyd_lb_lfsr_seed3:[24:16]=0b000110111 +#define DDR2_PHY_REG_64_DATA 0b00000100000000000000000000000000 + // param_phyd_lb_dq_en:[0:0]=0b0 + // param_phyd_lb_dq_go:[1:1]=0b0 + // param_phyd_lb_sw_en:[2:2]=0b0 + // param_phyd_lb_sw_rx_en:[3:3]=0b0 + // param_phyd_lb_sw_rx_mask:[4:4]=0b0 + // param_phyd_lb_sw_odt_en:[5:5]=0b0 + // param_phyd_lb_sw_ca_clkpattern:[6:6]=0b0 + // param_phyd_lb_sync_len:[31:16]=0b0000010000000000 +#define DDR2_PHY_REG_65_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_dout0:[8:0]=0b000000000 + // param_phyd_lb_sw_dout1:[24:16]=0b000000000 +#define DDR2_PHY_REG_67_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_oenz_dout0:[0:0]=0b0 + // param_phyd_lb_sw_oenz_dout1:[1:1]=0b0 + // param_phyd_lb_sw_dqsn0:[4:4]=0b0 + // param_phyd_lb_sw_dqsn1:[5:5]=0b0 + // param_phyd_lb_sw_dqsp0:[8:8]=0b0 + // param_phyd_lb_sw_dqsp1:[9:9]=0b0 + // param_phyd_lb_sw_oenz_dqs_dout0:[12:12]=0b0 + // param_phyd_lb_sw_oenz_dqs_dout1:[13:13]=0b0 +#define DDR2_PHY_REG_68_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_ca_dout:[22:0]=0b00000000000000000000000 +#define DDR2_PHY_REG_69_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_clkn0_dout:[0:0]=0b0 + // param_phyd_lb_sw_clkp0_dout:[4:4]=0b0 + // param_phyd_lb_sw_cke0_dout:[8:8]=0b0 + // param_phyd_lb_sw_resetz_dout:[12:12]=0b0 + // param_phyd_lb_sw_csb0_dout:[16:16]=0b0 +#define DDR2_PHY_REG_70_DATA 0b00000000000000000000000000000000 + // param_phyd_clkctrl_init_complete:[0:0]=0b0 +#define DDR2_PHY_REG_71_DATA 0b00000000000000000110101000010000 + // param_phyd_reg_resetz_dqs_rd_en:[4:4]=0b1 + // param_phyd_rx_upd_tx_sel:[9:8]=0b10 + // param_phyd_tx_upd_rx_sel:[11:10]=0b10 + // param_phyd_rx_en_ext_win:[15:12]=0b0110 + // param_phyd_fifo_rst_sel:[18:16]=0b000 + // param_phyd_fifo_sw_rst:[20:20]=0b0 +#define DDR2_PHY_REG_72_DATA 0b00000000000000000000000000000000 + // param_phyd_phy_int_ack:[31:0]=0b00000000000000000000000000000000 +#define DDR2_PHY_REG_73_DATA 0b11111111111111111111111011110111 + // param_phyd_phy_int_mask:[31:0]=0b11111111111111111111111011110111 +#define DDR2_PHY_REG_74_DATA 0b00000000000000000000000000011111 + // param_phyd_calvl_rst_n:[0:0]=0b1 + // param_phyd_pigtlvl_rst_n:[1:1]=0b1 + // param_phyd_pirdlvl_rst_n:[2:2]=0b1 + // param_phyd_piwdqlvl_rst_n:[3:3]=0b1 + // param_phyd_wrlvl_rst_n:[4:4]=0b1 +#define DDR2_PHY_REG_75_DATA 0b00000000000000000000000000000001 + // param_phyd_clk0_pol:[0:0]=0b1 +#define DDR2_PHY_REG_76_DATA 0b00000000000000000000000100000001 + // param_phyd_tx_ca_oenz:[0:0]=0b1 + // param_phyd_tx_ca_clk0_oenz:[8:8]=0b1 +#define DDR2_PHY_REG_77_DATA 0b00000000000000000000000100000000 + // param_phya_reg_en_test:[0:0]=0b0 + // param_phya_reg_tx_ca_test_en:[1:1]=0b0 + // param_phya_reg_tx_ca_en_ca_loop_back:[2:2]=0b0 + // param_phya_reg_tx_sel_4bit_mode_tx:[8:8]=0b1 + // param_phya_reg_tx_gpio_in:[16:16]=0b0 +#define DDR2_PHY_REG_78_DATA 0b00000000000000000000000000010100 + // param_phya_reg_rx_en_ca_train_mode:[0:0]=0b0 + // param_phya_reg_rx_en_pream_train_mode:[1:1]=0b0 + // param_phya_reg_rx_sel_dqs_wo_pream_mode:[2:2]=0b1 + // param_phya_reg_rx_en_rec_offset:[3:3]=0b0 + // param_phya_reg_rx_sel_4bit_mode_rx:[4:4]=0b1 +#define DDR2_PHY_REG_80_DATA 0b00000000000000000000000000000000 + // param_phya_reg_rx_ddrdll_enautok:[0:0]=0b0 + // param_phya_reg_rx_ddrdll_rstb:[1:1]=0b0 + // param_phya_reg_rx_ddrdll_selckout:[5:4]=0b00 + // param_phya_reg_rx_ddrdll_test:[7:6]=0b00 + // param_phya_reg_rx_ddrdll_sel:[15:8]=0b00000000 + // param_phya_reg_tx_ddrdll_enautok:[16:16]=0b0 + // param_phya_reg_tx_ddrdll_rstb:[17:17]=0b0 + // param_phya_reg_tx_ddrdll_selckout:[21:20]=0b00 + // param_phya_reg_tx_ddrdll_test:[23:22]=0b00 + // param_phya_reg_tx_ddrdll_sel:[31:24]=0b00000000 +#define DDR2_PHY_REG_81_DATA 0b00000000000000000000000000000000 + // param_phya_reg_tx_zq_cmp_en:[0:0]=0b0 + // param_phya_reg_tx_zq_cmp_offset_cal_en:[1:1]=0b0 + // param_phya_reg_tx_zq_ph_en:[2:2]=0b0 + // param_phya_reg_tx_zq_pl_en:[3:3]=0b0 + // param_phya_reg_tx_zq_step2_en:[4:4]=0b0 + // param_phya_reg_tx_zq_cmp_offset:[12:8]=0b00000 + // param_phya_reg_tx_zq_sel_vref:[20:16]=0b00000 +#define DDR2_PHY_REG_82_DATA 0b00000000000000000000100000001000 + // param_phya_reg_tx_zq_golden_drvn:[4:0]=0b01000 + // param_phya_reg_tx_zq_golden_drvp:[12:8]=0b01000 + // param_phya_reg_tx_zq_drvn:[20:16]=0b00000 + // param_phya_reg_tx_zq_drvp:[28:24]=0b00000 +#define DDR2_PHY_REG_83_DATA 0b00000000000000000000000000000000 + // param_phya_reg_tx_zq_en_test_aux:[0:0]=0b0 + // param_phya_reg_tx_zq_en_test_mux:[1:1]=0b0 + // param_phya_reg_sel_zq_high_swing:[2:2]=0b0 + // param_phya_reg_zq_sel_test_out0:[7:4]=0b0000 + // param_phya_reg_zq_sel_test_out1:[11:8]=0b0000 + // param_phya_reg_tx_zq_sel_test_ana_in:[15:12]=0b0000 + // param_phya_reg_tx_zq_sel_gpio_in:[17:16]=0b00 +#define DDR2_PHY_REG_84_DATA 0b00000000000000000000000000000101 + // param_phya_reg_tune_damp_r:[3:0]=0b0101 +#define DDR2_PHY_REG_85_DATA 0b00000000000000000000000100000001 + // param_phyd_sel_cke_oenz:[0:0]=0b1 + // param_phyd_tx_dqsn_default_value:[8:8]=0b1 + // param_phyd_tx_dqsp_default_value:[12:12]=0b0 + // param_phyd_ddr4_2t_preamble:[16:16]=0b0 +#define DDR2_PHY_REG_86_DATA 0b00000000000000000000000000000000 + // param_phya_reg_zqcal_done:[0:0]=0b0 +#define DDR2_PHY_REG_87_DATA 0b00000000000000000000000000000000 + // param_phyd_dbg_sel:[7:0]=0b00000000 + // param_phyd_dbg_sel_en:[16:16]=0b0 +#define DDR2_PHY_REG_89_DATA 0b00000000000000000000000000000000 + // param_phyd_reg_dfs_sel:[0:0]=0b0 +#define DDR2_PHY_REG_90_DATA 0b00000000001100110011001100110001 + // param_phyd_ca_sw_dline_en:[0:0]=0b1 + // param_phyd_byte0_wr_sw_dline_en:[4:4]=0b1 + // param_phyd_byte1_wr_sw_dline_en:[5:5]=0b1 + // param_phyd_byte0_wdqs_sw_dline_en:[8:8]=0b1 + // param_phyd_byte1_wdqs_sw_dline_en:[9:9]=0b1 + // param_phyd_byte0_rd_sw_dline_en:[12:12]=0b1 + // param_phyd_byte1_rd_sw_dline_en:[13:13]=0b1 + // param_phyd_byte0_rdg_sw_dline_en:[16:16]=0b1 + // param_phyd_byte1_rdg_sw_dline_en:[17:17]=0b1 + // param_phyd_byte0_rdqs_sw_dline_en:[20:20]=0b1 + // param_phyd_byte1_rdqs_sw_dline_en:[21:21]=0b1 +#define DDR2_PHY_REG_91_DATA 0b00000000000000000000000000000000 + // param_phyd_ca_raw_dline_upd:[0:0]=0b0 + // param_phyd_byte0_wr_raw_dline_upd:[4:4]=0b0 + // param_phyd_byte1_wr_raw_dline_upd:[5:5]=0b0 + // param_phyd_byte0_wdqs_raw_dline_upd:[8:8]=0b0 + // param_phyd_byte1_wdqs_raw_dline_upd:[9:9]=0b0 + // param_phyd_byte0_rd_raw_dline_upd:[12:12]=0b0 + // param_phyd_byte1_rd_raw_dline_upd:[13:13]=0b0 + // param_phyd_byte0_rdg_raw_dline_upd:[16:16]=0b0 + // param_phyd_byte1_rdg_raw_dline_upd:[17:17]=0b0 + // param_phyd_byte0_rdqs_raw_dline_upd:[20:20]=0b0 + // param_phyd_byte1_rdqs_raw_dline_upd:[21:21]=0b0 +#define DDR2_PHY_REG_92_DATA 0b00000000000000000000000000000000 + // param_phyd_sw_dline_upd_req:[0:0]=0b0 +#define DDR2_PHY_REG_93_DATA 0b00000000000000000000000100000000 + // param_phyd_sw_dfi_phyupd_req:[0:0]=0b0 + // param_phyd_sw_dfi_phyupd_req_clr:[4:4]=0b0 + // param_phyd_sw_phyupd_dline:[8:8]=0b1 +#define DDR2_PHY_REG_96_DATA 0b00000000000000100000000000010000 + // param_phyd_dfi_wrlvl_req:[0:0]=0b0 + // param_phyd_dfi_wrlvl_odt_en:[4:4]=0b1 + // param_phyd_dfi_wrlvl_strobe_cnt:[19:16]=0b0010 +#define DDR2_PHY_REG_97_DATA 0b00000000000000000000000000000000 + // param_phyd_dfi_rdglvl_req:[0:0]=0b0 + // param_phyd_dfi_rdglvl_ddr3_mpr:[4:4]=0b0 +#define DDR2_PHY_REG_98_DATA 0b00000000000000000000000000000000 + // param_phyd_dfi_rdlvl_req:[0:0]=0b0 + // param_phyd_dfi_rdlvl_ddr3_mpr:[4:4]=0b0 +#define DDR2_PHY_REG_99_DATA 0b00000000000001010000010000000000 + // param_phyd_dfi_wdqlvl_req:[0:0]=0b0 + // param_phyd_dfi_wdqlvl_bist_data_en:[4:4]=0b0 + // param_phyd_dfi_wdqlvl_vref_train_en:[10:10]=0b1 + // param_phyd_dfi_wdqlvl_vref_wait_cnt:[23:16]=0b00000101 +#define DDR2_PHY_REG_100_DATA 0b00000000000000100001001000001110 + // param_phyd_dfi_wdqlvl_vref_start:[6:0]=0b0001110 + // param_phyd_dfi_wdqlvl_vref_end:[14:8]=0b0010010 + // param_phyd_dfi_wdqlvl_vref_step:[19:16]=0b0010 +#define DDR2_PHY_REG_128_DATA 0b00000000000000000000000000000000 + // param_phya_reg_byte0_test_en:[0:0]=0b0 + // param_phya_reg_tx_byte0_ddr_test:[15:8]=0b00000000 + // param_phya_reg_rx_byte0_sel_test_in0:[19:16]=0b0000 + // param_phya_reg_rx_byte0_sel_test_in1:[23:20]=0b0000 +#define DDR2_PHY_REG_129_DATA 0b00000000000000000000010001000000 + // param_phya_reg_tx_byte0_en_rx_awys_on:[0:0]=0b0 + // param_phya_reg_tx_byte0_sel_en_rx_dly:[5:4]=0b00 + // param_phya_reg_rx_byte0_sel_en_rx_gen_rst:[6:6]=0b1 + // param_phya_reg_byte0_mask_oenz:[8:8]=0b0 + // param_phya_reg_tx_byte0_en_mask:[10:10]=0b1 + // param_phya_reg_rx_byte0_sel_cnt_mode:[13:12]=0b00 + // param_phya_reg_tx_byte0_sel_int_loop_back:[14:14]=0b0 + // param_phya_reg_rx_byte0_sel_dqs_dly_for_gated:[17:16]=0b00 + // param_phya_reg_tx_byte0_en_extend_oenz_gated_dline:[18:18]=0b0 +#define DDR2_PHY_REG_130_DATA 0b00000000000000000000000000000000 + // param_phyd_reg_reserved_byte0:[31:0]=0b00000000000000000000000000000000 +#define DDR2_PHY_REG_136_DATA 0b00000000000000000000000000000000 + // param_phya_reg_byte1_test_en:[0:0]=0b0 + // param_phya_reg_tx_byte1_ddr_test:[15:8]=0b00000000 + // param_phya_reg_rx_byte1_sel_test_in0:[19:16]=0b0000 + // param_phya_reg_rx_byte1_sel_test_in1:[23:20]=0b0000 +#define DDR2_PHY_REG_137_DATA 0b00000000000000000000010001000000 + // param_phya_reg_tx_byte1_en_rx_awys_on:[0:0]=0b0 + // param_phya_reg_tx_byte1_sel_en_rx_dly:[5:4]=0b00 + // param_phya_reg_rx_byte1_sel_en_rx_gen_rst:[6:6]=0b1 + // param_phya_reg_byte1_mask_oenz:[8:8]=0b0 + // param_phya_reg_tx_byte1_en_mask:[10:10]=0b1 + // param_phya_reg_rx_byte1_sel_cnt_mode:[13:12]=0b00 + // param_phya_reg_tx_byte1_sel_int_loop_back:[14:14]=0b0 + // param_phya_reg_rx_byte1_sel_dqs_dly_for_gated:[17:16]=0b00 + // param_phya_reg_tx_byte1_en_extend_oenz_gated_dline:[18:18]=0b0 +#define DDR2_PHY_REG_138_DATA 0b00000000000000000000000000000000 + // param_phyd_reg_reserved_byte1:[31:0]=0b00000000000000000000000000000000 +#define DDR2_PHY_REG_0_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_ca_sel_lpddr4_pmos_ph_ca:[3:3]=0b0 + // f0_param_phya_reg_tx_clk_sel_lpddr4_pmos_ph_clk:[4:4]=0b0 + // f0_param_phya_reg_tx_sel_lpddr4_pmos_ph:[5:5]=0b0 +#define DDR2_PHY_REG_1_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_ca_drvn_de:[1:0]=0b00 + // f0_param_phya_reg_tx_ca_drvp_de:[5:4]=0b00 + // f0_param_phya_reg_tx_clk0_drvn_de:[9:8]=0b00 + // f0_param_phya_reg_tx_clk0_drvp_de:[13:12]=0b00 + // f0_param_phya_reg_tx_csb_drvn_de:[17:16]=0b00 + // f0_param_phya_reg_tx_csb_drvp_de:[21:20]=0b00 + // f0_param_phya_reg_tx_ca_en_tx_de:[24:24]=0b0 + // f0_param_phya_reg_tx_clk0_en_tx_de:[28:28]=0b0 + // f0_param_phya_reg_tx_csb_en_tx_de:[30:30]=0b0 +#define DDR2_PHY_REG_2_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_ca_sel_dly1t_ca:[22:0]=0b00000000000000000000000 +#define DDR2_PHY_REG_3_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_clk_sel_dly1t_clk0:[0:0]=0b0 + // f0_param_phya_reg_tx_ca_sel_dly1t_cke0:[8:8]=0b0 + // f0_param_phya_reg_tx_ca_sel_dly1t_csb0:[16:16]=0b0 +#define DDR2_PHY_REG_4_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_vref_en_free_offset:[0:0]=0b0 + // f0_param_phya_reg_tx_vref_en_rangex2:[1:1]=0b0 + // f0_param_phya_reg_tx_vref_sel_lpddr4divby2p5:[2:2]=0b0 + // f0_param_phya_reg_tx_vref_sel_lpddr4divby3:[3:3]=0b0 + // f0_param_phya_reg_tx_vref_offset:[14:8]=0b0000000 + // f0_param_phya_reg_tx_vref_sel:[20:16]=0b10000 +#define DDR2_PHY_REG_5_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_vrefca_en_free_offset:[0:0]=0b0 + // f0_param_phya_reg_tx_vrefca_en_rangex2:[1:1]=0b0 + // f0_param_phya_reg_tx_vrefca_offset:[14:8]=0b0000000 + // f0_param_phya_reg_tx_vrefca_sel:[20:16]=0b10000 +#define DDR2_PHY_REG_6_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_tx_byte_dqs_extend:[2:0]=0b000 +#define DDR2_PHY_REG_7_F0_DATA 0b00000000000000000100000001000000 + // f0_param_phya_reg_rx_byte0_odt_reg:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte0_sel_odt_reg_mode:[6:6]=0b1 + // f0_param_phya_reg_rx_byte1_odt_reg:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte1_sel_odt_reg_mode:[14:14]=0b1 +#define DDR2_PHY_REG_64_F0_DATA 0b00000000000000000001000000000001 + // f0_param_phya_reg_rx_byte0_en_lsmode:[0:0]=0b1 + // f0_param_phya_reg_rx_byte0_hystr:[5:4]=0b00 + // f0_param_phya_reg_rx_byte0_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f0_param_phya_reg_rx_byte0_sel_odt_center_tap:[10:10]=0b0 + // f0_param_phya_reg_byte0_en_rec_vol_mode:[12:12]=0b1 + // f0_param_phya_reg_tx_byte0_force_en_lvstl_ph:[14:14]=0b0 + // f0_param_phya_reg_rx_byte0_force_en_lvstl_odt:[16:16]=0b0 + // f0_param_phya_reg_rx_byte0_en_trig_lvl_rangex2:[18:18]=0b0 + // f0_param_phya_reg_rx_byte0_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR2_PHY_REG_65_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_byte0_drvn_de_dq:[1:0]=0b00 + // f0_param_phya_reg_tx_byte0_drvp_de_dq:[5:4]=0b00 + // f0_param_phya_reg_tx_byte0_drvn_de_dqs:[9:8]=0b00 + // f0_param_phya_reg_tx_byte0_drvp_de_dqs:[13:12]=0b00 + // f0_param_phya_reg_tx_byte0_en_tx_de_dq:[16:16]=0b0 + // f0_param_phya_reg_tx_byte0_en_tx_de_dqs:[20:20]=0b1 +#define DDR2_PHY_REG_66_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte0_sel_dly1t_dq:[8:0]=0b000000000 + // f0_param_phya_reg_tx_byte0_sel_dly1t_dqs:[12:12]=0b0 + // f0_param_phya_reg_tx_byte0_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR2_PHY_REG_67_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4divby3:[4:4]=0b0 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR2_PHY_REG_68_F0_DATA 0b00000000000000000000000000000100 + // f0_param_phyd_reg_rx_byte0_resetz_dqs_offset:[3:0]=0b0100 +#define DDR2_PHY_REG_69_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte0_dq0_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte0_dq1_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte0_dq2_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte0_dq3_offset:[30:24]=0b0000000 +#define DDR2_PHY_REG_70_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte0_dq4_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte0_dq5_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte0_dq6_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte0_dq7_offset:[30:24]=0b0000000 +#define DDR2_PHY_REG_71_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte0_dm_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte0_dqsn_offset:[19:16]=0b0000 + // f0_param_phyd_reg_byte0_dqsp_offset:[27:24]=0b0000 +#define DDR2_PHY_REG_72_F0_DATA 0b00000000000000000000000000000011 + // f0_param_phyd_tx_byte0_tx_oenz_extend:[2:0]=0b011 +#define DDR2_PHY_REG_80_F0_DATA 0b00000000000000000001000000000001 + // f0_param_phya_reg_rx_byte1_en_lsmode:[0:0]=0b1 + // f0_param_phya_reg_rx_byte1_hystr:[5:4]=0b00 + // f0_param_phya_reg_rx_byte1_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f0_param_phya_reg_rx_byte1_sel_odt_center_tap:[10:10]=0b0 + // f0_param_phya_reg_byte1_en_rec_vol_mode:[12:12]=0b1 + // f0_param_phya_reg_tx_byte1_force_en_lvstl_ph:[14:14]=0b0 + // f0_param_phya_reg_rx_byte1_force_en_lvstl_odt:[16:16]=0b0 + // f0_param_phya_reg_rx_byte1_en_trig_lvl_rangex2:[18:18]=0b0 + // f0_param_phya_reg_rx_byte1_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR2_PHY_REG_81_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_byte1_drvn_de_dq:[1:0]=0b00 + // f0_param_phya_reg_tx_byte1_drvp_de_dq:[5:4]=0b00 + // f0_param_phya_reg_tx_byte1_drvn_de_dqs:[9:8]=0b00 + // f0_param_phya_reg_tx_byte1_drvp_de_dqs:[13:12]=0b00 + // f0_param_phya_reg_tx_byte1_en_tx_de_dq:[16:16]=0b0 + // f0_param_phya_reg_tx_byte1_en_tx_de_dqs:[20:20]=0b1 +#define DDR2_PHY_REG_82_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte1_sel_dly1t_dq:[8:0]=0b000000000 + // f0_param_phya_reg_tx_byte1_sel_dly1t_dqs:[12:12]=0b0 + // f0_param_phya_reg_tx_byte1_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR2_PHY_REG_83_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4divby3:[4:4]=0b0 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR2_PHY_REG_84_F0_DATA 0b00000000000000000000000000000100 + // f0_param_phyd_reg_rx_byte1_resetz_dqs_offset:[3:0]=0b0100 +#define DDR2_PHY_REG_85_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte1_dq0_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte1_dq1_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte1_dq2_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte1_dq3_offset:[30:24]=0b0000000 +#define DDR2_PHY_REG_86_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte1_dq4_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte1_dq5_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte1_dq6_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte1_dq7_offset:[30:24]=0b0000000 +#define DDR2_PHY_REG_87_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte1_dm_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte1_dqsn_offset:[19:16]=0b0000 + // f0_param_phyd_reg_byte1_dqsp_offset:[27:24]=0b0000 +#define DDR2_PHY_REG_88_F0_DATA 0b00000000000000000000000000000011 + // f0_param_phyd_tx_byte1_tx_oenz_extend:[2:0]=0b011 +#define DDR2_PHY_REG_320_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_ca0_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_ca0_shift_sel:[13:8]=0b000100 +#define DDR2_PHY_REG_331_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_tx_ca22_shift_sel:[13:8]=0b000100 +#define DDR2_PHY_REG_332_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_cke0_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_cke0_shift_sel:[13:8]=0b000100 +#define DDR2_PHY_REG_333_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_csb0_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_cs0_shift_sel:[13:8]=0b000100 +#define DDR2_PHY_REG_334_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_resetz_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_reset_shift_sel:[13:8]=0b000100 +#define DDR2_PHY_REG_336_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_ca0_raw:[6:0]=0b0000000 +#define DDR2_PHY_REG_348_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_cke0_raw:[6:0]=0b0000000 +#define DDR2_PHY_REG_349_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_csb0_raw:[6:0]=0b0000000 +#define DDR2_PHY_REG_350_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_resetz_raw:[6:0]=0b0000000 +#define DDR2_PHY_REG_351_F0_DATA 0b00001000000010000000010000000100 + // f0_param_phya_reg_tx_ca_drvn_ca:[4:0]=0b00100 + // f0_param_phya_reg_tx_ca_drvp_ca:[12:8]=0b00100 + // f0_param_phya_reg_tx_ca_drvn_csb:[20:16]=0b01000 + // f0_param_phya_reg_tx_ca_drvp_csb:[28:24]=0b01000 +#define DDR2_PHY_REG_352_F0_DATA 0b00001000000010000000100000001000 + // f0_param_phya_reg_tx_clk_drvn_clkn0:[4:0]=0b01000 + // f0_param_phya_reg_tx_clk_drvp_clkn0:[12:8]=0b01000 + // f0_param_phya_reg_tx_clk_drvn_clkp0:[20:16]=0b01000 + // f0_param_phya_reg_tx_clk_drvp_clkp0:[28:24]=0b01000 +#define DDR2_PHY_REG_384_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit0_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit1_data_shift:[29:24]=0b000110 +#define DDR2_PHY_REG_385_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit2_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit3_data_shift:[29:24]=0b000110 +#define DDR2_PHY_REG_386_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit4_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit5_data_shift:[29:24]=0b000110 +#define DDR2_PHY_REG_387_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit6_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit7_data_shift:[29:24]=0b000110 +#define DDR2_PHY_REG_388_F0_DATA 0b00000000000000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit8_data_shift:[13:8]=0b000110 +#define DDR2_PHY_REG_389_F0_DATA 0b00001101000000000000000000000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f0_param_phyd_tx_byte0_dqs_shift:[29:24]=0b001101 +#define DDR2_PHY_REG_390_F0_DATA 0b00001010000000000000101100000000 + // f0_param_phyd_tx_byte0_oenz_dqs_shift:[13:8]=0b001011 + // f0_param_phyd_tx_byte0_oenz_shift:[29:24]=0b001010 +#define DDR2_PHY_REG_391_F0_DATA 0b00000000000001000000010000000000 + // f0_param_phyd_tx_byte0_oenz_dqs_extend:[11:8]=0b0100 + // f0_param_phyd_tx_byte0_oenz_extend:[19:16]=0b0100 +#define DDR2_PHY_REG_392_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR2_PHY_REG_393_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR2_PHY_REG_394_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR2_PHY_REG_395_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR2_PHY_REG_396_F0_DATA 0b00000000000000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR2_PHY_REG_397_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR2_PHY_REG_398_F0_DATA 0b00000000000000000000100000001000 + // f0_param_phya_reg_tx_byte0_drvn_dq:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte0_drvp_dq:[12:8]=0b01000 +#define DDR2_PHY_REG_399_F0_DATA 0b00001000000010000000100000001000 + // f0_param_phya_reg_tx_byte0_drvn_dqsn:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte0_drvp_dqsn:[12:8]=0b01000 + // f0_param_phya_reg_tx_byte0_drvn_dqsp:[20:16]=0b01000 + // f0_param_phya_reg_tx_byte0_drvp_dqsp:[28:24]=0b01000 +#define DDR2_PHY_REG_400_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit0_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit1_data_shift:[29:24]=0b000110 +#define DDR2_PHY_REG_401_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit2_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit3_data_shift:[29:24]=0b000110 +#define DDR2_PHY_REG_402_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit4_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit5_data_shift:[29:24]=0b000110 +#define DDR2_PHY_REG_403_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit6_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit7_data_shift:[29:24]=0b000110 +#define DDR2_PHY_REG_404_F0_DATA 0b00000000000000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit8_data_shift:[13:8]=0b000110 +#define DDR2_PHY_REG_405_F0_DATA 0b00001101000000000000000000000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f0_param_phyd_tx_byte1_dqs_shift:[29:24]=0b001101 +#define DDR2_PHY_REG_406_F0_DATA 0b00001010000000000000101100000000 + // f0_param_phyd_tx_byte1_oenz_dqs_shift:[13:8]=0b001011 + // f0_param_phyd_tx_byte1_oenz_shift:[29:24]=0b001010 +#define DDR2_PHY_REG_407_F0_DATA 0b00000000000001000000010000000000 + // f0_param_phyd_tx_byte1_oenz_dqs_extend:[11:8]=0b0100 + // f0_param_phyd_tx_byte1_oenz_extend:[19:16]=0b0100 +#define DDR2_PHY_REG_408_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR2_PHY_REG_409_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR2_PHY_REG_410_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR2_PHY_REG_411_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR2_PHY_REG_412_F0_DATA 0b00000000000000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR2_PHY_REG_413_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR2_PHY_REG_414_F0_DATA 0b00000000000000000000100000001000 + // f0_param_phya_reg_tx_byte1_drvn_dq:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte1_drvp_dq:[12:8]=0b01000 +#define DDR2_PHY_REG_415_F0_DATA 0b00001000000010000000100000001000 + // f0_param_phya_reg_tx_byte1_drvn_dqsn:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte1_drvp_dqsn:[12:8]=0b01000 + // f0_param_phya_reg_tx_byte1_drvn_dqsp:[20:16]=0b01000 + // f0_param_phya_reg_tx_byte1_drvp_dqsp:[28:24]=0b01000 +#define DDR2_PHY_REG_448_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte0_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR2_PHY_REG_449_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte0_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR2_PHY_REG_450_F0_DATA 0b00000000010000000100000000000000 + // f0_param_phyd_reg_rx_byte0_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b01000000 + // f0_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b01000000 +#define DDR2_PHY_REG_451_F0_DATA 0b00000000000000000000100000000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_mask_ranka_sw:[6:0]=0b0000000 + // f0_param_phyd_rx_byte0_mask_shift:[13:8]=0b001000 +#define DDR2_PHY_REG_452_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_rx_byte0_en_shift:[13:8]=0b000000 + // f0_param_phyd_rx_byte0_odt_en_shift:[29:24]=0b000000 +#define DDR2_PHY_REG_453_F0_DATA 0b00000000000001110000111000001110 + // f0_param_phyd_rx_byte0_en_extend:[3:0]=0b1110 + // f0_param_phyd_rx_byte0_odt_en_extend:[11:8]=0b1110 + // f0_param_phyd_rx_byte0_rden_to_rdvld:[20:16]=0b00111 +#define DDR2_PHY_REG_454_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte0_rx_dq0_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq1_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq2_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR2_PHY_REG_455_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte0_rx_dq4_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq5_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq6_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR2_PHY_REG_456_F0_DATA 0b01000000010000000000000000000000 + // f0_param_phya_reg_rx_byte0_rx_dq8_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_tx_byte0_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f0_param_phya_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR2_PHY_REG_457_F0_DATA 0b00000000000100000000000000010000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dq:[4:0]=0b10000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dq_offset:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dqs:[20:16]=0b10000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dqs_offset:[30:24]=0b0000000 +#define DDR2_PHY_REG_460_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte1_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR2_PHY_REG_461_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte1_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR2_PHY_REG_462_F0_DATA 0b00000000010000000100000000000000 + // f0_param_phyd_reg_rx_byte1_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b01000000 + // f0_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b01000000 +#define DDR2_PHY_REG_463_F0_DATA 0b00000000000000000000100000000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_mask_ranka_sw:[6:0]=0b0000000 + // f0_param_phyd_rx_byte1_mask_shift:[13:8]=0b001000 +#define DDR2_PHY_REG_464_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_rx_byte1_en_shift:[13:8]=0b000000 + // f0_param_phyd_rx_byte1_odt_en_shift:[29:24]=0b000000 +#define DDR2_PHY_REG_465_F0_DATA 0b00000000000001110000111000001110 + // f0_param_phyd_rx_byte1_en_extend:[3:0]=0b1110 + // f0_param_phyd_rx_byte1_odt_en_extend:[11:8]=0b1110 + // f0_param_phyd_rx_byte1_rden_to_rdvld:[20:16]=0b00111 +#define DDR2_PHY_REG_466_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte1_rx_dq0_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq1_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq2_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR2_PHY_REG_467_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte1_rx_dq4_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq5_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq6_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR2_PHY_REG_468_F0_DATA 0b01000000010000000000000000000000 + // f0_param_phya_reg_rx_byte1_rx_dq8_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_tx_byte1_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f0_param_phya_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR2_PHY_REG_469_F0_DATA 0b00000000000100000000000000010000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dq:[4:0]=0b10000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dq_offset:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dqs:[20:16]=0b10000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dqs_offset:[30:24]=0b0000000 +#ifdef F1_TEST + +#define DDR2_PHY_REG_0_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_ca_sel_lpddr4_pmos_ph_ca:[3:3]=0b0 + // f1_param_phya_reg_tx_clk_sel_lpddr4_pmos_ph_clk:[4:4]=0b0 + // f1_param_phya_reg_tx_sel_lpddr4_pmos_ph:[5:5]=0b0 +#define DDR2_PHY_REG_1_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_ca_drvn_de:[1:0]=0b00 + // f1_param_phya_reg_tx_ca_drvp_de:[5:4]=0b00 + // f1_param_phya_reg_tx_clk0_drvn_de:[9:8]=0b00 + // f1_param_phya_reg_tx_clk0_drvp_de:[13:12]=0b00 + // f1_param_phya_reg_tx_csb_drvn_de:[17:16]=0b00 + // f1_param_phya_reg_tx_csb_drvp_de:[21:20]=0b00 + // f1_param_phya_reg_tx_ca_en_tx_de:[24:24]=0b0 + // f1_param_phya_reg_tx_clk0_en_tx_de:[28:28]=0b0 + // f1_param_phya_reg_tx_csb_en_tx_de:[30:30]=0b0 +#define DDR2_PHY_REG_2_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_ca_sel_dly1t_ca:[22:0]=0b00000000000000000000000 +#define DDR2_PHY_REG_3_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_clk_sel_dly1t_clk0:[0:0]=0b0 + // f1_param_phya_reg_tx_ca_sel_dly1t_cke0:[8:8]=0b0 + // f1_param_phya_reg_tx_ca_sel_dly1t_csb0:[16:16]=0b0 +#define DDR2_PHY_REG_4_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_vref_en_free_offset:[0:0]=0b0 + // f1_param_phya_reg_tx_vref_en_rangex2:[1:1]=0b0 + // f1_param_phya_reg_tx_vref_sel_lpddr4divby2p5:[2:2]=0b0 + // f1_param_phya_reg_tx_vref_sel_lpddr4divby3:[3:3]=0b0 + // f1_param_phya_reg_tx_vref_offset:[14:8]=0b0000000 + // f1_param_phya_reg_tx_vref_sel:[20:16]=0b10000 +#define DDR2_PHY_REG_5_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_vrefca_en_free_offset:[0:0]=0b0 + // f1_param_phya_reg_tx_vrefca_en_rangex2:[1:1]=0b0 + // f1_param_phya_reg_tx_vrefca_offset:[14:8]=0b0000000 + // f1_param_phya_reg_tx_vrefca_sel:[20:16]=0b10000 +#define DDR2_PHY_REG_6_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_tx_byte_dqs_extend:[2:0]=0b000 +#define DDR2_PHY_REG_7_F1_DATA 0b00000000000000000100000001000000 + // f1_param_phya_reg_rx_byte0_odt_reg:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte0_sel_odt_reg_mode:[6:6]=0b1 + // f1_param_phya_reg_rx_byte1_odt_reg:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte1_sel_odt_reg_mode:[14:14]=0b1 +#define DDR2_PHY_REG_64_F1_DATA 0b00000000000000000001000000000001 + // f1_param_phya_reg_rx_byte0_en_lsmode:[0:0]=0b1 + // f1_param_phya_reg_rx_byte0_hystr:[5:4]=0b00 + // f1_param_phya_reg_rx_byte0_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f1_param_phya_reg_rx_byte0_sel_odt_center_tap:[10:10]=0b0 + // f1_param_phya_reg_byte0_en_rec_vol_mode:[12:12]=0b1 + // f1_param_phya_reg_tx_byte0_force_en_lvstl_ph:[14:14]=0b0 + // f1_param_phya_reg_rx_byte0_force_en_lvstl_odt:[16:16]=0b0 + // f1_param_phya_reg_rx_byte0_en_trig_lvl_rangex2:[18:18]=0b0 + // f1_param_phya_reg_rx_byte0_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR2_PHY_REG_65_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_byte0_drvn_de_dq:[1:0]=0b00 + // f1_param_phya_reg_tx_byte0_drvp_de_dq:[5:4]=0b00 + // f1_param_phya_reg_tx_byte0_drvn_de_dqs:[9:8]=0b00 + // f1_param_phya_reg_tx_byte0_drvp_de_dqs:[13:12]=0b00 + // f1_param_phya_reg_tx_byte0_en_tx_de_dq:[16:16]=0b0 + // f1_param_phya_reg_tx_byte0_en_tx_de_dqs:[20:20]=0b1 +#define DDR2_PHY_REG_66_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte0_sel_dly1t_dq:[8:0]=0b000000000 + // f1_param_phya_reg_tx_byte0_sel_dly1t_dqs:[12:12]=0b0 + // f1_param_phya_reg_tx_byte0_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR2_PHY_REG_67_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4divby3:[4:4]=0b0 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR2_PHY_REG_68_F1_DATA 0b00000000000000000000000000000100 + // f1_param_phyd_reg_rx_byte0_resetz_dqs_offset:[3:0]=0b0100 +#define DDR2_PHY_REG_69_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte0_dq0_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte0_dq1_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte0_dq2_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte0_dq3_offset:[30:24]=0b0000000 +#define DDR2_PHY_REG_70_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte0_dq4_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte0_dq5_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte0_dq6_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte0_dq7_offset:[30:24]=0b0000000 +#define DDR2_PHY_REG_71_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte0_dm_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte0_dqsn_offset:[19:16]=0b0000 + // f1_param_phyd_reg_byte0_dqsp_offset:[27:24]=0b0000 +#define DDR2_PHY_REG_72_F1_DATA 0b00000000000000000000000000000011 + // f1_param_phyd_tx_byte0_tx_oenz_extend:[2:0]=0b011 +#define DDR2_PHY_REG_80_F1_DATA 0b00000000000000000001000000000001 + // f1_param_phya_reg_rx_byte1_en_lsmode:[0:0]=0b1 + // f1_param_phya_reg_rx_byte1_hystr:[5:4]=0b00 + // f1_param_phya_reg_rx_byte1_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f1_param_phya_reg_rx_byte1_sel_odt_center_tap:[10:10]=0b0 + // f1_param_phya_reg_byte1_en_rec_vol_mode:[12:12]=0b1 + // f1_param_phya_reg_tx_byte1_force_en_lvstl_ph:[14:14]=0b0 + // f1_param_phya_reg_rx_byte1_force_en_lvstl_odt:[16:16]=0b0 + // f1_param_phya_reg_rx_byte1_en_trig_lvl_rangex2:[18:18]=0b0 + // f1_param_phya_reg_rx_byte1_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR2_PHY_REG_81_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_byte1_drvn_de_dq:[1:0]=0b00 + // f1_param_phya_reg_tx_byte1_drvp_de_dq:[5:4]=0b00 + // f1_param_phya_reg_tx_byte1_drvn_de_dqs:[9:8]=0b00 + // f1_param_phya_reg_tx_byte1_drvp_de_dqs:[13:12]=0b00 + // f1_param_phya_reg_tx_byte1_en_tx_de_dq:[16:16]=0b0 + // f1_param_phya_reg_tx_byte1_en_tx_de_dqs:[20:20]=0b1 +#define DDR2_PHY_REG_82_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte1_sel_dly1t_dq:[8:0]=0b000000000 + // f1_param_phya_reg_tx_byte1_sel_dly1t_dqs:[12:12]=0b0 + // f1_param_phya_reg_tx_byte1_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR2_PHY_REG_83_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4divby3:[4:4]=0b0 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR2_PHY_REG_84_F1_DATA 0b00000000000000000000000000000100 + // f1_param_phyd_reg_rx_byte1_resetz_dqs_offset:[3:0]=0b0100 +#define DDR2_PHY_REG_85_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte1_dq0_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte1_dq1_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte1_dq2_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte1_dq3_offset:[30:24]=0b0000000 +#define DDR2_PHY_REG_86_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte1_dq4_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte1_dq5_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte1_dq6_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte1_dq7_offset:[30:24]=0b0000000 +#define DDR2_PHY_REG_87_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte1_dm_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte1_dqsn_offset:[19:16]=0b0000 + // f1_param_phyd_reg_byte1_dqsp_offset:[27:24]=0b0000 +#define DDR2_PHY_REG_88_F1_DATA 0b00000000000000000000000000000011 + // f1_param_phyd_tx_byte1_tx_oenz_extend:[2:0]=0b011 +#define DDR2_PHY_REG_320_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_ca0_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_ca0_shift_sel:[13:8]=0b000100 +#define DDR2_PHY_REG_331_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_tx_ca22_shift_sel:[13:8]=0b000100 +#define DDR2_PHY_REG_332_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_cke0_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_cke0_shift_sel:[13:8]=0b000100 +#define DDR2_PHY_REG_333_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_csb0_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_cs0_shift_sel:[13:8]=0b000100 +#define DDR2_PHY_REG_334_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_resetz_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_reset_shift_sel:[13:8]=0b000100 +#define DDR2_PHY_REG_336_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_ca0_raw:[6:0]=0b0000000 +#define DDR2_PHY_REG_348_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_cke0_raw:[6:0]=0b0000000 +#define DDR2_PHY_REG_349_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_csb0_raw:[6:0]=0b0000000 +#define DDR2_PHY_REG_350_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_resetz_raw:[6:0]=0b0000000 +#define DDR2_PHY_REG_351_F1_DATA 0b00001000000010000000010000000100 + // f1_param_phya_reg_tx_ca_drvn_ca:[4:0]=0b00100 + // f1_param_phya_reg_tx_ca_drvp_ca:[12:8]=0b00100 + // f1_param_phya_reg_tx_ca_drvn_csb:[20:16]=0b01000 + // f1_param_phya_reg_tx_ca_drvp_csb:[28:24]=0b01000 +#define DDR2_PHY_REG_352_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_clk_drvn_clkn0:[4:0]=0b01000 + // f1_param_phya_reg_tx_clk_drvp_clkn0:[12:8]=0b01000 + // f1_param_phya_reg_tx_clk_drvn_clkp0:[20:16]=0b01000 + // f1_param_phya_reg_tx_clk_drvp_clkp0:[28:24]=0b01000 +#define DDR2_PHY_REG_384_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit0_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit1_data_shift:[29:24]=0b000110 +#define DDR2_PHY_REG_385_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit2_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit3_data_shift:[29:24]=0b000110 +#define DDR2_PHY_REG_386_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit4_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit5_data_shift:[29:24]=0b000110 +#define DDR2_PHY_REG_387_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit6_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit7_data_shift:[29:24]=0b000110 +#define DDR2_PHY_REG_388_F1_DATA 0b00000000000000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit8_data_shift:[13:8]=0b000110 +#define DDR2_PHY_REG_389_F1_DATA 0b00001101000000000000000000000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f1_param_phyd_tx_byte0_dqs_shift:[29:24]=0b001101 +#define DDR2_PHY_REG_390_F1_DATA 0b00001010000000000000101100000000 + // f1_param_phyd_tx_byte0_oenz_dqs_shift:[13:8]=0b001011 + // f1_param_phyd_tx_byte0_oenz_shift:[29:24]=0b001010 +#define DDR2_PHY_REG_391_F1_DATA 0b00000000000001000000010000000000 + // f1_param_phyd_tx_byte0_oenz_dqs_extend:[11:8]=0b0100 + // f1_param_phyd_tx_byte0_oenz_extend:[19:16]=0b0100 +#define DDR2_PHY_REG_392_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR2_PHY_REG_393_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR2_PHY_REG_394_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR2_PHY_REG_395_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR2_PHY_REG_396_F1_DATA 0b00000000000000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR2_PHY_REG_397_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR2_PHY_REG_398_F1_DATA 0b00000000000000000000100000001000 + // f1_param_phya_reg_tx_byte0_drvn_dq:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte0_drvp_dq:[12:8]=0b01000 +#define DDR2_PHY_REG_399_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_byte0_drvn_dqsn:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte0_drvp_dqsn:[12:8]=0b01000 + // f1_param_phya_reg_tx_byte0_drvn_dqsp:[20:16]=0b01000 + // f1_param_phya_reg_tx_byte0_drvp_dqsp:[28:24]=0b01000 +#define DDR2_PHY_REG_400_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit0_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit1_data_shift:[29:24]=0b000110 +#define DDR2_PHY_REG_401_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit2_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit3_data_shift:[29:24]=0b000110 +#define DDR2_PHY_REG_402_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit4_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit5_data_shift:[29:24]=0b000110 +#define DDR2_PHY_REG_403_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit6_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit7_data_shift:[29:24]=0b000110 +#define DDR2_PHY_REG_404_F1_DATA 0b00000000000000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit8_data_shift:[13:8]=0b000110 +#define DDR2_PHY_REG_405_F1_DATA 0b00001101000000000000000000000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f1_param_phyd_tx_byte1_dqs_shift:[29:24]=0b001101 +#define DDR2_PHY_REG_406_F1_DATA 0b00001010000000000000101100000000 + // f1_param_phyd_tx_byte1_oenz_dqs_shift:[13:8]=0b001011 + // f1_param_phyd_tx_byte1_oenz_shift:[29:24]=0b001010 +#define DDR2_PHY_REG_407_F1_DATA 0b00000000000001000000010000000000 + // f1_param_phyd_tx_byte1_oenz_dqs_extend:[11:8]=0b0100 + // f1_param_phyd_tx_byte1_oenz_extend:[19:16]=0b0100 +#define DDR2_PHY_REG_408_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR2_PHY_REG_409_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR2_PHY_REG_410_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR2_PHY_REG_411_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR2_PHY_REG_412_F1_DATA 0b00000000000000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR2_PHY_REG_413_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR2_PHY_REG_414_F1_DATA 0b00000000000000000000100000001000 + // f1_param_phya_reg_tx_byte1_drvn_dq:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte1_drvp_dq:[12:8]=0b01000 +#define DDR2_PHY_REG_415_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_byte1_drvn_dqsn:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte1_drvp_dqsn:[12:8]=0b01000 + // f1_param_phya_reg_tx_byte1_drvn_dqsp:[20:16]=0b01000 + // f1_param_phya_reg_tx_byte1_drvp_dqsp:[28:24]=0b01000 +#define DDR2_PHY_REG_448_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte0_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR2_PHY_REG_449_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte0_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR2_PHY_REG_450_F1_DATA 0b00000000010000000100000000000000 + // f1_param_phyd_reg_rx_byte0_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b01000000 + // f1_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b01000000 +#define DDR2_PHY_REG_451_F1_DATA 0b00000000000000000000100000000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_mask_ranka_sw:[6:0]=0b0000000 + // f1_param_phyd_rx_byte0_mask_shift:[13:8]=0b001000 +#define DDR2_PHY_REG_452_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_rx_byte0_en_shift:[13:8]=0b000000 + // f1_param_phyd_rx_byte0_odt_en_shift:[29:24]=0b000000 +#define DDR2_PHY_REG_453_F1_DATA 0b00000000000001110000111000001110 + // f1_param_phyd_rx_byte0_en_extend:[3:0]=0b1110 + // f1_param_phyd_rx_byte0_odt_en_extend:[11:8]=0b1110 + // f1_param_phyd_rx_byte0_rden_to_rdvld:[20:16]=0b00111 +#define DDR2_PHY_REG_454_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte0_rx_dq0_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq1_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq2_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR2_PHY_REG_455_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte0_rx_dq4_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq5_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq6_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR2_PHY_REG_456_F1_DATA 0b01000000010000000000000000000000 + // f1_param_phya_reg_rx_byte0_rx_dq8_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_tx_byte0_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f1_param_phya_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR2_PHY_REG_457_F1_DATA 0b00000000000100000000000000010000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dq:[4:0]=0b10000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dq_offset:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dqs:[20:16]=0b10000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dqs_offset:[30:24]=0b0000000 +#define DDR2_PHY_REG_460_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte1_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR2_PHY_REG_461_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte1_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR2_PHY_REG_462_F1_DATA 0b00000000010000000100000000000000 + // f1_param_phyd_reg_rx_byte1_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b01000000 + // f1_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b01000000 +#define DDR2_PHY_REG_463_F1_DATA 0b00000000000000000000100000000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_mask_ranka_sw:[6:0]=0b0000000 + // f1_param_phyd_rx_byte1_mask_shift:[13:8]=0b001000 +#define DDR2_PHY_REG_464_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_rx_byte1_en_shift:[13:8]=0b000000 + // f1_param_phyd_rx_byte1_odt_en_shift:[29:24]=0b000000 +#define DDR2_PHY_REG_465_F1_DATA 0b00000000000001110000111000001110 + // f1_param_phyd_rx_byte1_en_extend:[3:0]=0b1110 + // f1_param_phyd_rx_byte1_odt_en_extend:[11:8]=0b1110 + // f1_param_phyd_rx_byte1_rden_to_rdvld:[20:16]=0b00111 +#define DDR2_PHY_REG_466_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte1_rx_dq0_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq1_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq2_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR2_PHY_REG_467_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte1_rx_dq4_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq5_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq6_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR2_PHY_REG_468_F1_DATA 0b01000000010000000000000000000000 + // f1_param_phya_reg_rx_byte1_rx_dq8_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_tx_byte1_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f1_param_phya_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR2_PHY_REG_469_F1_DATA 0b00000000000100000000000000010000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dq:[4:0]=0b10000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dq_offset:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dqs:[20:16]=0b10000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dqs_offset:[30:24]=0b0000000 +#endif //F1_TEST +void ddrc_init(void); +void phy_init(void); +void ctrl_init_high_patch(void); +void ctrl_init_low_patch(void); +//void ctrl_init_detect_dram_size(uint8_t * dram_cap_in_mbyte); +void ctrl_init_update_by_dram_size(uint8_t dram_cap_in_mbyte); + +#endif /* __DDR_PI_PHY_H__ */ diff --git a/fsbl/plat/cv181x/include/ddr/ddr_config/ddr_auto_x16/ddr3_1866_init.h b/fsbl/plat/cv181x/include/ddr/ddr_config/ddr_auto_x16/ddr3_1866_init.h new file mode 100644 index 000000000..5fdc40250 --- /dev/null +++ b/fsbl/plat/cv181x/include/ddr/ddr_config/ddr_auto_x16/ddr3_1866_init.h @@ -0,0 +1,1157 @@ +#ifndef __DDR_PI_PHY_H__ +#define __DDR_PI_PHY_H__ + +extern uint32_t ddr_data_rate; +// $Module: reg_cv_phy_param_ddr3_1866 $ +// $RegisterBank Version: V 1.0.00 $ +// $Author: KC TSAI $ +// $Date: Wed, 15 Sep 2021 11:31:09 AM $ +// + +#define DDR_PHY_REG_0_DATA 0b00000011000000100000000100000000 + // param_phyd_swap_ca0:[4:0]=0b00000 + // param_phyd_swap_ca1:[12:8]=0b00001 + // param_phyd_swap_ca2:[20:16]=0b00010 + // param_phyd_swap_ca3:[28:24]=0b00011 +#define DDR_PHY_REG_1_DATA 0b00000111000001100000010100000100 + // param_phyd_swap_ca4:[4:0]=0b00100 + // param_phyd_swap_ca5:[12:8]=0b00101 + // param_phyd_swap_ca6:[20:16]=0b00110 + // param_phyd_swap_ca7:[28:24]=0b00111 +#define DDR_PHY_REG_2_DATA 0b00001011000010100000100100001000 + // param_phyd_swap_ca8:[4:0]=0b01000 + // param_phyd_swap_ca9:[12:8]=0b01001 + // param_phyd_swap_ca10:[20:16]=0b01010 + // param_phyd_swap_ca11:[28:24]=0b01011 +#define DDR_PHY_REG_3_DATA 0b00001111000011100000110100001100 + // param_phyd_swap_ca12:[4:0]=0b01100 + // param_phyd_swap_ca13:[12:8]=0b01101 + // param_phyd_swap_ca14:[20:16]=0b01110 + // param_phyd_swap_ca15:[28:24]=0b01111 +#define DDR_PHY_REG_4_DATA 0b00010011000100100001000100010000 + // param_phyd_swap_ca16:[4:0]=0b10000 + // param_phyd_swap_ca17:[12:8]=0b10001 + // param_phyd_swap_ca18:[20:16]=0b10010 + // param_phyd_swap_ca19:[28:24]=0b10011 +#define DDR_PHY_REG_5_DATA 0b00000000000101100001010100010100 + // param_phyd_swap_ca20:[4:0]=0b10100 + // param_phyd_swap_ca21:[12:8]=0b10101 + // param_phyd_swap_ca22:[20:16]=0b10110 +#define DDR_PHY_REG_6_DATA 0b00000000000000000000000000000000 + // param_phyd_swap_cke0:[0:0]=0b0 + // param_phyd_swap_cs0:[4:4]=0b0 +#define DDR_PHY_REG_7_DATA 0b00000000000000000000000100000000 + // param_phyd_data_byte_swap_slice0:[1:0]=0b00 + // param_phyd_data_byte_swap_slice1:[9:8]=0b01 +#define DDR_PHY_REG_8_DATA 0b01110110010101000011001000010000 + // param_phyd_swap_byte0_dq0_mux:[3:0]=0b0000 + // param_phyd_swap_byte0_dq1_mux:[7:4]=0b0001 + // param_phyd_swap_byte0_dq2_mux:[11:8]=0b0010 + // param_phyd_swap_byte0_dq3_mux:[15:12]=0b0011 + // param_phyd_swap_byte0_dq4_mux:[19:16]=0b0100 + // param_phyd_swap_byte0_dq5_mux:[23:20]=0b0101 + // param_phyd_swap_byte0_dq6_mux:[27:24]=0b0110 + // param_phyd_swap_byte0_dq7_mux:[31:28]=0b0111 +#define DDR_PHY_REG_9_DATA 0b00000000000000000000000000001000 + // param_phyd_swap_byte0_dm_mux:[3:0]=0b1000 +#define DDR_PHY_REG_10_DATA 0b01110110010101000011001000010000 + // param_phyd_swap_byte1_dq0_mux:[3:0]=0b0000 + // param_phyd_swap_byte1_dq1_mux:[7:4]=0b0001 + // param_phyd_swap_byte1_dq2_mux:[11:8]=0b0010 + // param_phyd_swap_byte1_dq3_mux:[15:12]=0b0011 + // param_phyd_swap_byte1_dq4_mux:[19:16]=0b0100 + // param_phyd_swap_byte1_dq5_mux:[23:20]=0b0101 + // param_phyd_swap_byte1_dq6_mux:[27:24]=0b0110 + // param_phyd_swap_byte1_dq7_mux:[31:28]=0b0111 +#define DDR_PHY_REG_11_DATA 0b00000000000000000000000000001000 + // param_phyd_swap_byte1_dm_mux:[3:0]=0b1000 +#define DDR_PHY_REG_16_DATA 0b00000000000000000000000000000000 + // param_phyd_dll_rx_sw_mode:[0:0]=0b0 + // param_phyd_dll_rx_start_cal:[1:1]=0b0 + // param_phyd_dll_rx_cntr_mode:[2:2]=0b0 + // param_phyd_dll_rx_hwrst_time:[3:3]=0b0 + // param_phyd_dll_tx_sw_mode:[16:16]=0b0 + // param_phyd_dll_tx_start_cal:[17:17]=0b0 + // param_phyd_dll_tx_cntr_mode:[18:18]=0b0 + // param_phyd_dll_tx_hwrst_time:[19:19]=0b0 +#define DDR_PHY_REG_17_DATA 0b00000000011111110000000000001101 + // param_phyd_dll_slave_delay_en:[0:0]=0b1 + // param_phyd_dll_rw_en:[1:1]=0b0 + // param_phyd_dll_avg_mode:[2:2]=0b1 + // param_phyd_dll_upd_wait:[6:3]=0b0001 + // param_phyd_dll_sw_clr:[7:7]=0b0 + // param_phyd_dll_sw_code_mode:[8:8]=0b0 + // param_phyd_dll_sw_code:[23:16]=0b01111111 +#define DDR_PHY_REG_18_DATA 0b00000000000000000000000000000000 + // param_phya_reg_tx_clk_tx_dline_code_clkn0:[6:0]=0b0000000 + // param_phya_reg_tx_clk_tx_dline_code_clkp0:[14:8]=0b0000000 +#define DDR_PHY_REG_19_DATA 0b00000000000000000000000000001000 + // param_phya_reg_sel_ddr4_mode:[0:0]=0b0 + // param_phya_reg_sel_lpddr3_mode:[1:1]=0b0 + // param_phya_reg_sel_lpddr4_mode:[2:2]=0b0 + // param_phya_reg_sel_ddr3_mode:[3:3]=0b1 + // param_phya_reg_sel_ddr2_mode:[4:4]=0b0 +#define DDR_PHY_REG_20_DATA 0b00000000000000000000000000000110 + // param_phyd_dram_class:[3:0]=0b0110 +#define DDR_PHY_REG_21_DATA 0b00001100000000000000101100000000 + // param_phyd_wrlvl_start_delay_code:[6:0]=0b0000000 + // param_phyd_wrlvl_start_shift_code:[13:8]=0b001011 + // param_phyd_wrlvl_end_delay_code:[22:16]=0b0000000 + // param_phyd_wrlvl_end_shift_code:[29:24]=0b001100 +#define DDR_PHY_REG_22_DATA 0b00001001000101100000000001001111 + // param_phyd_wrlvl_capture_cnt:[3:0]=0b1111 + // param_phyd_wrlvl_dly_step:[7:4]=0b0100 + // param_phyd_wrlvl_disable:[11:8]=0b0000 + // param_phyd_wrlvl_resp_wait_cnt:[21:16]=0b010110 + // param_phyd_oenz_lead_cnt:[26:23]=0b0010 + // param_phyd_wrlvl_mode:[27:27]=0b1 +#define DDR_PHY_REG_23_DATA 0b00000000000000000000000000000000 + // param_phyd_wrlvl_sw:[0:0]=0b0 + // param_phyd_wrlvl_sw_upd_req:[1:1]=0b0 + // param_phyd_wrlvl_sw_resp:[2:2]=0b0 + // param_phyd_wrlvl_data_mask:[23:16]=0b00000000 +#define DDR_PHY_REG_24_DATA 0b00000100000000000000001101110000 + // param_phyd_pigtlvl_back_step:[7:0]=0b01110000 + // param_phyd_pigtlvl_capture_cnt:[11:8]=0b0011 + // param_phyd_pigtlvl_disable:[19:16]=0b0000 + // param_phyd_pigtlvl_dly_step:[27:24]=0b0100 +#define DDR_PHY_REG_25_DATA 0b00001101000000000000101000000000 + // param_phyd_pigtlvl_start_delay_code:[6:0]=0b0000000 + // param_phyd_pigtlvl_start_shift_code:[13:8]=0b001010 + // param_phyd_pigtlvl_end_delay_code:[22:16]=0b0000000 + // param_phyd_pigtlvl_end_shift_code:[29:24]=0b001101 +#define DDR_PHY_REG_26_DATA 0b00000000100000000000000000000000 + // param_phyd_pigtlvl_resp_wait_cnt:[5:0]=0b000000 + // param_phyd_pigtlvl_sw:[8:8]=0b0 + // param_phyd_pigtlvl_sw_resp:[13:12]=0b00 + // param_phyd_pigtlvl_sw_upd_req:[16:16]=0b0 + // param_phyd_rx_en_lead_cnt:[23:20]=0b1000 +#define DDR_PHY_REG_28_DATA 0b00000000000000000000000100001000 + // param_phyd_rgtrack_threshold:[4:0]=0b01000 + // param_phyd_rgtrack_dly_step:[11:8]=0b0001 + // param_phyd_rgtrack_disable:[19:16]=0b0000 +#define DDR_PHY_REG_29_DATA 0b00000000000001110010000000000000 + // param_phyd_zqcal_wait_count:[3:0]=0b0000 + // param_phyd_zqcal_cycle_count:[15:8]=0b00100000 + // param_phyd_zqcal_hw_mode:[18:16]=0b111 +#define DDR_PHY_REG_32_DATA 0b00011111000000001110000000000000 + // param_phyd_pirdlvl_dlie_code_start:[7:0]=0b00000000 + // param_phyd_pirdlvl_dlie_code_end:[15:8]=0b11100000 + // param_phyd_pirdlvl_deskew_start:[22:16]=0b0000000 + // param_phyd_pirdlvl_deskew_end:[30:24]=0b0011111 +#define DDR_PHY_REG_33_DATA 0b00000001000010110000110000001010 + // param_phyd_pirdlvl_trig_lvl_start:[4:0]=0b01010 + // param_phyd_pirdlvl_trig_lvl_end:[12:8]=0b01100 + // param_phyd_pirdlvl_rdvld_start:[20:16]=0b01011 + // param_phyd_pirdlvl_rdvld_end:[28:24]=0b00001 +#define DDR_PHY_REG_34_DATA 0b00001010000000010000000100010100 + // param_phyd_pirdlvl_dly_step:[3:0]=0b0100 + // param_phyd_pirdlvl_ds_dly_step:[7:4]=0b0001 + // param_phyd_pirdlvl_vref_step:[11:8]=0b0001 + // param_phyd_pirdlvl_disable:[15:12]=0b0000 + // param_phyd_pirdlvl_resp_wait_cnt:[21:16]=0b000001 + // param_phyd_pirdlvl_vref_wait_cnt:[31:24]=0b00001010 +#define DDR_PHY_REG_35_DATA 0b10101010101010100000000010001111 + // param_phyd_pirdlvl_rx_prebit_deskew_en:[0:0]=0b1 + // param_phyd_pirdlvl_rx_init_deskew_en:[1:1]=0b1 + // param_phyd_pirdlvl_vref_training_en:[2:2]=0b1 + // param_phyd_pirdlvl_rdvld_training_en:[3:3]=0b1 + // param_phyd_pirdlvl_capture_cnt:[7:4]=0b1000 + // param_phyd_pirdlvl_MR1520_BYTE:[15:8]=0b00000000 + // param_phyd_pirdlvl_MR3240:[31:16]=0b1010101010101010 +#define DDR_PHY_REG_36_DATA 0b00000000000000000011100000000000 + // param_phyd_pirdlvl_data_mask:[8:0]=0b000000000 + // param_phyd_pirdlvl_sw:[9:9]=0b0 + // param_phyd_pirdlvl_sw_upd_req:[10:10]=0b0 + // param_phyd_pirdlvl_sw_resp:[12:11]=0b11 + // param_phyd_pirdlvl_trig_lvl_dqs_follow_dq:[13:13]=0b1 +#define DDR_PHY_REG_37_DATA 0b00000000000000000000100000000001 + // param_phyd_pirdlvl_rdvld_offset:[3:0]=0b0001 + // param_phyd_pirdlvl_found_cnt_limite:[15:8]=0b00001000 +#define DDR_PHY_REG_40_DATA 0b00000111010000000000010101000000 + // param_phyd_piwdqlvl_start_delay_code:[6:0]=0b1000000 + // param_phyd_piwdqlvl_start_shift_code:[13:8]=0b000101 + // param_phyd_piwdqlvl_end_delay_code:[22:16]=0b1000000 + // param_phyd_piwdqlvl_end_shift_code:[29:24]=0b000111 +#define DDR_PHY_REG_41_DATA 0b00000001010000100000010100000100 + // param_phyd_piwdqlvl_tx_vref_start:[4:0]=0b00100 + // param_phyd_piwdqlvl_tx_vref_end:[12:8]=0b00101 + // param_phyd_piwdqlvl_capture_cnt:[19:16]=0b0010 + // param_phyd_piwdqlvl_dly_step:[23:20]=0b0100 + // param_phyd_piwdqlvl_vref_step:[27:24]=0b0001 + // param_phyd_piwdqlvl_disable:[31:28]=0b0000 +#define DDR_PHY_REG_42_DATA 0b00000000010101010000000000001010 + // param_phyd_piwdqlvl_vref_wait_cnt:[7:0]=0b00001010 + // param_phyd_piwdqlvl_tx_vref_training_en:[8:8]=0b0 + // param_phyd_piwdqlvl_byte_invert_0:[23:16]=0b01010101 +#define DDR_PHY_REG_43_DATA 0b00000000010101010011110001011010 + // param_phyd_piwdqlvl_dq_pattern_0:[15:0]=0b0011110001011010 + // param_phyd_piwdqlvl_byte_invert_1:[23:16]=0b01010101 +#define DDR_PHY_REG_44_DATA 0b00000000101010101010010111000011 + // param_phyd_piwdqlvl_dq_pattern_1:[15:0]=0b1010010111000011 + // param_phyd_piwdqlvl_byte_invert_2:[23:16]=0b10101010 +#define DDR_PHY_REG_45_DATA 0b00000000101010101111000011110000 + // param_phyd_piwdqlvl_dq_pattern_2:[15:0]=0b1111000011110000 + // param_phyd_piwdqlvl_byte_invert_3:[23:16]=0b10101010 +#define DDR_PHY_REG_46_DATA 0b00011110000000000000111100001111 + // param_phyd_piwdqlvl_dq_pattern_3:[15:0]=0b0000111100001111 + // param_phyd_piwdqlvl_data_mask:[24:16]=0b000000000 + // param_phyd_piwdqlvl_pattern_sel:[28:25]=0b1111 +#define DDR_PHY_REG_47_DATA 0b00000000000010000011111000010011 + // param_phyd_piwdqlvl_tdfi_phy_wrdata:[2:0]=0b011 + // param_phyd_piwdqlvl_oenz_lead_cnt:[6:3]=0b0010 + // param_phyd_piwdqlvl_sw:[7:7]=0b0 + // param_phyd_piwdqlvl_sw_upd_req:[8:8]=0b0 + // param_phyd_piwdqlvl_sw_resp:[10:9]=0b11 + // param_phyd_piwdqlvl_sw_result:[11:11]=0b1 + // param_phyd_piwdqlvl_dq_mode:[12:12]=0b1 + // param_phyd_piwdqlvl_dm_mode:[13:13]=0b1 + // param_phyd_piwdqlvl_found_cnt_limite:[23:16]=0b00001000 +#define DDR_PHY_REG_60_DATA 0b00000000000000000000000000000000 + // param_phyd_patch_revision:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_61_DATA 0b00000000000000110000000000110011 + // param_phyd_ca_shift_gating_en:[0:0]=0b1 + // param_phyd_cs_shift_gating_en:[1:1]=0b1 + // param_phyd_cke_shift_gating_en:[2:2]=0b0 + // param_phyd_resetz_shift_gating_en:[3:3]=0b0 + // param_phyd_tx_byte0_shift_gating_en:[4:4]=0b1 + // param_phyd_tx_byte1_shift_gating_en:[5:5]=0b1 + // param_phyd_rx_byte0_shift_gating_en:[16:16]=0b1 + // param_phyd_rx_byte1_shift_gating_en:[17:17]=0b1 +#define DDR_PHY_REG_62_DATA 0b00000000001000010000000000101100 + // param_phyd_lb_lfsr_seed0:[8:0]=0b000101100 + // param_phyd_lb_lfsr_seed1:[24:16]=0b000100001 +#define DDR_PHY_REG_63_DATA 0b00000000001101110000000000010110 + // param_phyd_lb_lfsr_seed2:[8:0]=0b000010110 + // param_phyd_lb_lfsr_seed3:[24:16]=0b000110111 +#define DDR_PHY_REG_64_DATA 0b00000100000000000000000000000000 + // param_phyd_lb_dq_en:[0:0]=0b0 + // param_phyd_lb_dq_go:[1:1]=0b0 + // param_phyd_lb_sw_en:[2:2]=0b0 + // param_phyd_lb_sw_rx_en:[3:3]=0b0 + // param_phyd_lb_sw_rx_mask:[4:4]=0b0 + // param_phyd_lb_sw_odt_en:[5:5]=0b0 + // param_phyd_lb_sw_ca_clkpattern:[6:6]=0b0 + // param_phyd_lb_sync_len:[31:16]=0b0000010000000000 +#define DDR_PHY_REG_65_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_dout0:[8:0]=0b000000000 + // param_phyd_lb_sw_dout1:[24:16]=0b000000000 +#define DDR_PHY_REG_67_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_oenz_dout0:[0:0]=0b0 + // param_phyd_lb_sw_oenz_dout1:[1:1]=0b0 + // param_phyd_lb_sw_dqsn0:[4:4]=0b0 + // param_phyd_lb_sw_dqsn1:[5:5]=0b0 + // param_phyd_lb_sw_dqsp0:[8:8]=0b0 + // param_phyd_lb_sw_dqsp1:[9:9]=0b0 + // param_phyd_lb_sw_oenz_dqs_dout0:[12:12]=0b0 + // param_phyd_lb_sw_oenz_dqs_dout1:[13:13]=0b0 +#define DDR_PHY_REG_68_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_ca_dout:[22:0]=0b00000000000000000000000 +#define DDR_PHY_REG_69_DATA 0b00000000000000000000000000000000 + // param_phyd_lb_sw_clkn0_dout:[0:0]=0b0 + // param_phyd_lb_sw_clkp0_dout:[4:4]=0b0 + // param_phyd_lb_sw_cke0_dout:[8:8]=0b0 + // param_phyd_lb_sw_resetz_dout:[12:12]=0b0 + // param_phyd_lb_sw_csb0_dout:[16:16]=0b0 +#define DDR_PHY_REG_70_DATA 0b00000000000000000000000000000000 + // param_phyd_clkctrl_init_complete:[0:0]=0b0 +#define DDR_PHY_REG_71_DATA 0b00000000000000000110101000010000 + // param_phyd_reg_resetz_dqs_rd_en:[4:4]=0b1 + // param_phyd_rx_upd_tx_sel:[9:8]=0b10 + // param_phyd_tx_upd_rx_sel:[11:10]=0b10 + // param_phyd_rx_en_ext_win:[15:12]=0b0110 + // param_phyd_fifo_rst_sel:[18:16]=0b000 + // param_phyd_fifo_sw_rst:[20:20]=0b0 +#define DDR_PHY_REG_72_DATA 0b00000000000000000000000000000000 + // param_phyd_phy_int_ack:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_73_DATA 0b11111111111111111111111011110111 + // param_phyd_phy_int_mask:[31:0]=0b11111111111111111111111011110111 +#define DDR_PHY_REG_74_DATA 0b00000000000000000000000000011111 + // param_phyd_calvl_rst_n:[0:0]=0b1 + // param_phyd_pigtlvl_rst_n:[1:1]=0b1 + // param_phyd_pirdlvl_rst_n:[2:2]=0b1 + // param_phyd_piwdqlvl_rst_n:[3:3]=0b1 + // param_phyd_wrlvl_rst_n:[4:4]=0b1 +#define DDR_PHY_REG_75_DATA 0b00000000000000000000000000000001 + // param_phyd_clk0_pol:[0:0]=0b1 +#define DDR_PHY_REG_76_DATA 0b00000000000000000000000100000001 + // param_phyd_tx_ca_oenz:[0:0]=0b1 + // param_phyd_tx_ca_clk0_oenz:[8:8]=0b1 +#define DDR_PHY_REG_77_DATA 0b00000000000000000000000100000000 + // param_phya_reg_en_test:[0:0]=0b0 + // param_phya_reg_tx_ca_test_en:[1:1]=0b0 + // param_phya_reg_tx_ca_en_ca_loop_back:[2:2]=0b0 + // param_phya_reg_tx_sel_4bit_mode_tx:[8:8]=0b1 + // param_phya_reg_tx_gpio_in:[16:16]=0b0 +#define DDR_PHY_REG_78_DATA 0b00000000000000000000000000010100 + // param_phya_reg_rx_en_ca_train_mode:[0:0]=0b0 + // param_phya_reg_rx_en_pream_train_mode:[1:1]=0b0 + // param_phya_reg_rx_sel_dqs_wo_pream_mode:[2:2]=0b1 + // param_phya_reg_rx_en_rec_offset:[3:3]=0b0 + // param_phya_reg_rx_sel_4bit_mode_rx:[4:4]=0b1 +#define DDR_PHY_REG_80_DATA 0b00000000000000000000000000000000 + // param_phya_reg_rx_ddrdll_enautok:[0:0]=0b0 + // param_phya_reg_rx_ddrdll_rstb:[1:1]=0b0 + // param_phya_reg_rx_ddrdll_selckout:[5:4]=0b00 + // param_phya_reg_rx_ddrdll_test:[7:6]=0b00 + // param_phya_reg_rx_ddrdll_sel:[15:8]=0b00000000 + // param_phya_reg_tx_ddrdll_enautok:[16:16]=0b0 + // param_phya_reg_tx_ddrdll_rstb:[17:17]=0b0 + // param_phya_reg_tx_ddrdll_selckout:[21:20]=0b00 + // param_phya_reg_tx_ddrdll_test:[23:22]=0b00 + // param_phya_reg_tx_ddrdll_sel:[31:24]=0b00000000 +#define DDR_PHY_REG_81_DATA 0b00000000000000000000000000000000 + // param_phya_reg_tx_zq_cmp_en:[0:0]=0b0 + // param_phya_reg_tx_zq_cmp_offset_cal_en:[1:1]=0b0 + // param_phya_reg_tx_zq_ph_en:[2:2]=0b0 + // param_phya_reg_tx_zq_pl_en:[3:3]=0b0 + // param_phya_reg_tx_zq_step2_en:[4:4]=0b0 + // param_phya_reg_tx_zq_cmp_offset:[12:8]=0b00000 + // param_phya_reg_tx_zq_sel_vref:[20:16]=0b00000 +#define DDR_PHY_REG_82_DATA 0b00000000000000000000100000001000 + // param_phya_reg_tx_zq_golden_drvn:[4:0]=0b01000 + // param_phya_reg_tx_zq_golden_drvp:[12:8]=0b01000 + // param_phya_reg_tx_zq_drvn:[20:16]=0b00000 + // param_phya_reg_tx_zq_drvp:[28:24]=0b00000 +#define DDR_PHY_REG_83_DATA 0b00000000000000000000000000000000 + // param_phya_reg_tx_zq_en_test_aux:[0:0]=0b0 + // param_phya_reg_tx_zq_en_test_mux:[1:1]=0b0 + // param_phya_reg_sel_zq_high_swing:[2:2]=0b0 + // param_phya_reg_zq_sel_test_out0:[7:4]=0b0000 + // param_phya_reg_zq_sel_test_out1:[11:8]=0b0000 + // param_phya_reg_tx_zq_sel_test_ana_in:[15:12]=0b0000 + // param_phya_reg_tx_zq_sel_gpio_in:[17:16]=0b00 +#define DDR_PHY_REG_84_DATA 0b00000000000000000000000000000101 + // param_phya_reg_tune_damp_r:[3:0]=0b0101 +#define DDR_PHY_REG_85_DATA 0b00000000000000000000000100000001 + // param_phyd_sel_cke_oenz:[0:0]=0b1 + // param_phyd_tx_dqsn_default_value:[8:8]=0b1 + // param_phyd_tx_dqsp_default_value:[12:12]=0b0 + // param_phyd_ddr4_2t_preamble:[16:16]=0b0 +#define DDR_PHY_REG_86_DATA 0b00000000000000000000000000000000 + // param_phya_reg_zqcal_done:[0:0]=0b0 +#define DDR_PHY_REG_87_DATA 0b00000000000000000000000000000000 + // param_phyd_dbg_sel:[7:0]=0b00000000 + // param_phyd_dbg_sel_en:[16:16]=0b0 +#define DDR_PHY_REG_89_DATA 0b00000000000000000000000000000000 + // param_phyd_reg_dfs_sel:[0:0]=0b0 +#define DDR_PHY_REG_90_DATA 0b00000000001100110011001100110001 + // param_phyd_ca_sw_dline_en:[0:0]=0b1 + // param_phyd_byte0_wr_sw_dline_en:[4:4]=0b1 + // param_phyd_byte1_wr_sw_dline_en:[5:5]=0b1 + // param_phyd_byte0_wdqs_sw_dline_en:[8:8]=0b1 + // param_phyd_byte1_wdqs_sw_dline_en:[9:9]=0b1 + // param_phyd_byte0_rd_sw_dline_en:[12:12]=0b1 + // param_phyd_byte1_rd_sw_dline_en:[13:13]=0b1 + // param_phyd_byte0_rdg_sw_dline_en:[16:16]=0b1 + // param_phyd_byte1_rdg_sw_dline_en:[17:17]=0b1 + // param_phyd_byte0_rdqs_sw_dline_en:[20:20]=0b1 + // param_phyd_byte1_rdqs_sw_dline_en:[21:21]=0b1 +#define DDR_PHY_REG_91_DATA 0b00000000000000000000000000000000 + // param_phyd_ca_raw_dline_upd:[0:0]=0b0 + // param_phyd_byte0_wr_raw_dline_upd:[4:4]=0b0 + // param_phyd_byte1_wr_raw_dline_upd:[5:5]=0b0 + // param_phyd_byte0_wdqs_raw_dline_upd:[8:8]=0b0 + // param_phyd_byte1_wdqs_raw_dline_upd:[9:9]=0b0 + // param_phyd_byte0_rd_raw_dline_upd:[12:12]=0b0 + // param_phyd_byte1_rd_raw_dline_upd:[13:13]=0b0 + // param_phyd_byte0_rdg_raw_dline_upd:[16:16]=0b0 + // param_phyd_byte1_rdg_raw_dline_upd:[17:17]=0b0 + // param_phyd_byte0_rdqs_raw_dline_upd:[20:20]=0b0 + // param_phyd_byte1_rdqs_raw_dline_upd:[21:21]=0b0 +#define DDR_PHY_REG_92_DATA 0b00000000000000000000000000000000 + // param_phyd_sw_dline_upd_req:[0:0]=0b0 +#define DDR_PHY_REG_93_DATA 0b00000000000000000000000100000000 + // param_phyd_sw_dfi_phyupd_req:[0:0]=0b0 + // param_phyd_sw_dfi_phyupd_req_clr:[4:4]=0b0 + // param_phyd_sw_phyupd_dline:[8:8]=0b1 +#define DDR_PHY_REG_96_DATA 0b00000000000000100000000000010000 + // param_phyd_dfi_wrlvl_req:[0:0]=0b0 + // param_phyd_dfi_wrlvl_odt_en:[4:4]=0b1 + // param_phyd_dfi_wrlvl_strobe_cnt:[19:16]=0b0010 +#define DDR_PHY_REG_97_DATA 0b00000000000000000000000000000000 + // param_phyd_dfi_rdglvl_req:[0:0]=0b0 + // param_phyd_dfi_rdglvl_ddr3_mpr:[4:4]=0b0 +#define DDR_PHY_REG_98_DATA 0b00000000000000000000000000000000 + // param_phyd_dfi_rdlvl_req:[0:0]=0b0 + // param_phyd_dfi_rdlvl_ddr3_mpr:[4:4]=0b0 +#define DDR_PHY_REG_99_DATA 0b00000000000010010000010000000000 + // param_phyd_dfi_wdqlvl_req:[0:0]=0b0 + // param_phyd_dfi_wdqlvl_bist_data_en:[4:4]=0b0 + // param_phyd_dfi_wdqlvl_vref_train_en:[10:10]=0b1 + // param_phyd_dfi_wdqlvl_vref_wait_cnt:[23:16]=0b00001001 +#define DDR_PHY_REG_100_DATA 0b00000000000000100001001000001110 + // param_phyd_dfi_wdqlvl_vref_start:[6:0]=0b0001110 + // param_phyd_dfi_wdqlvl_vref_end:[14:8]=0b0010010 + // param_phyd_dfi_wdqlvl_vref_step:[19:16]=0b0010 +#define DDR_PHY_REG_128_DATA 0b00000000000000000000000000000000 + // param_phya_reg_byte0_test_en:[0:0]=0b0 + // param_phya_reg_tx_byte0_ddr_test:[15:8]=0b00000000 + // param_phya_reg_rx_byte0_sel_test_in0:[19:16]=0b0000 + // param_phya_reg_rx_byte0_sel_test_in1:[23:20]=0b0000 +#define DDR_PHY_REG_129_DATA 0b00000000000000000000010001000000 + // param_phya_reg_tx_byte0_en_rx_awys_on:[0:0]=0b0 + // param_phya_reg_tx_byte0_sel_en_rx_dly:[5:4]=0b00 + // param_phya_reg_rx_byte0_sel_en_rx_gen_rst:[6:6]=0b1 + // param_phya_reg_byte0_mask_oenz:[8:8]=0b0 + // param_phya_reg_tx_byte0_en_mask:[10:10]=0b1 + // param_phya_reg_rx_byte0_sel_cnt_mode:[13:12]=0b00 + // param_phya_reg_tx_byte0_sel_int_loop_back:[14:14]=0b0 + // param_phya_reg_rx_byte0_sel_dqs_dly_for_gated:[17:16]=0b00 + // param_phya_reg_tx_byte0_en_extend_oenz_gated_dline:[18:18]=0b0 +#define DDR_PHY_REG_130_DATA 0b00000000000000000000000000000000 + // param_phyd_reg_reserved_byte0:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_136_DATA 0b00000000000000000000000000000000 + // param_phya_reg_byte1_test_en:[0:0]=0b0 + // param_phya_reg_tx_byte1_ddr_test:[15:8]=0b00000000 + // param_phya_reg_rx_byte1_sel_test_in0:[19:16]=0b0000 + // param_phya_reg_rx_byte1_sel_test_in1:[23:20]=0b0000 +#define DDR_PHY_REG_137_DATA 0b00000000000000000000010001000000 + // param_phya_reg_tx_byte1_en_rx_awys_on:[0:0]=0b0 + // param_phya_reg_tx_byte1_sel_en_rx_dly:[5:4]=0b00 + // param_phya_reg_rx_byte1_sel_en_rx_gen_rst:[6:6]=0b1 + // param_phya_reg_byte1_mask_oenz:[8:8]=0b0 + // param_phya_reg_tx_byte1_en_mask:[10:10]=0b1 + // param_phya_reg_rx_byte1_sel_cnt_mode:[13:12]=0b00 + // param_phya_reg_tx_byte1_sel_int_loop_back:[14:14]=0b0 + // param_phya_reg_rx_byte1_sel_dqs_dly_for_gated:[17:16]=0b00 + // param_phya_reg_tx_byte1_en_extend_oenz_gated_dline:[18:18]=0b0 +#define DDR_PHY_REG_138_DATA 0b00000000000000000000000000000000 + // param_phyd_reg_reserved_byte1:[31:0]=0b00000000000000000000000000000000 +#define DDR_PHY_REG_0_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_ca_sel_lpddr4_pmos_ph_ca:[3:3]=0b0 + // f0_param_phya_reg_tx_clk_sel_lpddr4_pmos_ph_clk:[4:4]=0b0 + // f0_param_phya_reg_tx_sel_lpddr4_pmos_ph:[5:5]=0b0 +#define DDR_PHY_REG_1_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_ca_drvn_de:[1:0]=0b00 + // f0_param_phya_reg_tx_ca_drvp_de:[5:4]=0b00 + // f0_param_phya_reg_tx_clk0_drvn_de:[9:8]=0b00 + // f0_param_phya_reg_tx_clk0_drvp_de:[13:12]=0b00 + // f0_param_phya_reg_tx_csb_drvn_de:[17:16]=0b00 + // f0_param_phya_reg_tx_csb_drvp_de:[21:20]=0b00 + // f0_param_phya_reg_tx_ca_en_tx_de:[24:24]=0b0 + // f0_param_phya_reg_tx_clk0_en_tx_de:[28:28]=0b0 + // f0_param_phya_reg_tx_csb_en_tx_de:[30:30]=0b0 +#define DDR_PHY_REG_2_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_ca_sel_dly1t_ca:[22:0]=0b00000000000000000000000 +#define DDR_PHY_REG_3_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_clk_sel_dly1t_clk0:[0:0]=0b0 + // f0_param_phya_reg_tx_ca_sel_dly1t_cke0:[8:8]=0b0 + // f0_param_phya_reg_tx_ca_sel_dly1t_csb0:[16:16]=0b0 +#define DDR_PHY_REG_4_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_vref_en_free_offset:[0:0]=0b0 + // f0_param_phya_reg_tx_vref_en_rangex2:[1:1]=0b0 + // f0_param_phya_reg_tx_vref_sel_lpddr4divby2p5:[2:2]=0b0 + // f0_param_phya_reg_tx_vref_sel_lpddr4divby3:[3:3]=0b0 + // f0_param_phya_reg_tx_vref_offset:[14:8]=0b0000000 + // f0_param_phya_reg_tx_vref_sel:[20:16]=0b10000 +#define DDR_PHY_REG_5_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_vrefca_en_free_offset:[0:0]=0b0 + // f0_param_phya_reg_tx_vrefca_en_rangex2:[1:1]=0b0 + // f0_param_phya_reg_tx_vrefca_offset:[14:8]=0b0000000 + // f0_param_phya_reg_tx_vrefca_sel:[20:16]=0b10000 +#define DDR_PHY_REG_6_F0_DATA 0b00000000000000000000000000000010 + // f0_param_phyd_tx_byte_dqs_extend:[2:0]=0b010 +#define DDR_PHY_REG_7_F0_DATA 0b00000000000000000100000001000000 + // f0_param_phya_reg_rx_byte0_odt_reg:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte0_sel_odt_reg_mode:[6:6]=0b1 + // f0_param_phya_reg_rx_byte1_odt_reg:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte1_sel_odt_reg_mode:[14:14]=0b1 +#define DDR_PHY_REG_64_F0_DATA 0b00000000000000000001000000000001 + // f0_param_phya_reg_rx_byte0_en_lsmode:[0:0]=0b1 + // f0_param_phya_reg_rx_byte0_hystr:[5:4]=0b00 + // f0_param_phya_reg_rx_byte0_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f0_param_phya_reg_rx_byte0_sel_odt_center_tap:[10:10]=0b0 + // f0_param_phya_reg_byte0_en_rec_vol_mode:[12:12]=0b1 + // f0_param_phya_reg_tx_byte0_force_en_lvstl_ph:[14:14]=0b0 + // f0_param_phya_reg_rx_byte0_force_en_lvstl_odt:[16:16]=0b0 + // f0_param_phya_reg_rx_byte0_en_trig_lvl_rangex2:[18:18]=0b0 + // f0_param_phya_reg_rx_byte0_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_65_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_byte0_drvn_de_dq:[1:0]=0b00 + // f0_param_phya_reg_tx_byte0_drvp_de_dq:[5:4]=0b00 + // f0_param_phya_reg_tx_byte0_drvn_de_dqs:[9:8]=0b00 + // f0_param_phya_reg_tx_byte0_drvp_de_dqs:[13:12]=0b00 + // f0_param_phya_reg_tx_byte0_en_tx_de_dq:[16:16]=0b0 + // f0_param_phya_reg_tx_byte0_en_tx_de_dqs:[20:20]=0b1 +#define DDR_PHY_REG_66_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte0_sel_dly1t_dq:[8:0]=0b000000000 + // f0_param_phya_reg_tx_byte0_sel_dly1t_dqs:[12:12]=0b0 + // f0_param_phya_reg_tx_byte0_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_67_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4divby3:[4:4]=0b0 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f0_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_68_F0_DATA 0b00000000000000000000000000000100 + // f0_param_phyd_reg_rx_byte0_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_69_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte0_dq0_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte0_dq1_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte0_dq2_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte0_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_70_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte0_dq4_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte0_dq5_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte0_dq6_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte0_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_71_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte0_dm_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte0_dqsn_offset:[19:16]=0b0000 + // f0_param_phyd_reg_byte0_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_72_F0_DATA 0b00000000000000000000000000000011 + // f0_param_phyd_tx_byte0_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_80_F0_DATA 0b00000000000000000001000000000001 + // f0_param_phya_reg_rx_byte1_en_lsmode:[0:0]=0b1 + // f0_param_phya_reg_rx_byte1_hystr:[5:4]=0b00 + // f0_param_phya_reg_rx_byte1_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f0_param_phya_reg_rx_byte1_sel_odt_center_tap:[10:10]=0b0 + // f0_param_phya_reg_byte1_en_rec_vol_mode:[12:12]=0b1 + // f0_param_phya_reg_tx_byte1_force_en_lvstl_ph:[14:14]=0b0 + // f0_param_phya_reg_rx_byte1_force_en_lvstl_odt:[16:16]=0b0 + // f0_param_phya_reg_rx_byte1_en_trig_lvl_rangex2:[18:18]=0b0 + // f0_param_phya_reg_rx_byte1_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_81_F0_DATA 0b00000000000100000000000000000000 + // f0_param_phya_reg_tx_byte1_drvn_de_dq:[1:0]=0b00 + // f0_param_phya_reg_tx_byte1_drvp_de_dq:[5:4]=0b00 + // f0_param_phya_reg_tx_byte1_drvn_de_dqs:[9:8]=0b00 + // f0_param_phya_reg_tx_byte1_drvp_de_dqs:[13:12]=0b00 + // f0_param_phya_reg_tx_byte1_en_tx_de_dq:[16:16]=0b0 + // f0_param_phya_reg_tx_byte1_en_tx_de_dqs:[20:20]=0b1 +#define DDR_PHY_REG_82_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte1_sel_dly1t_dq:[8:0]=0b000000000 + // f0_param_phya_reg_tx_byte1_sel_dly1t_dqs:[12:12]=0b0 + // f0_param_phya_reg_tx_byte1_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_83_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4divby3:[4:4]=0b0 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f0_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_84_F0_DATA 0b00000000000000000000000000000100 + // f0_param_phyd_reg_rx_byte1_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_85_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte1_dq0_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte1_dq1_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte1_dq2_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte1_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_86_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte1_dq4_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte1_dq5_offset:[14:8]=0b0000000 + // f0_param_phyd_reg_byte1_dq6_offset:[22:16]=0b0000000 + // f0_param_phyd_reg_byte1_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_87_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_byte1_dm_offset:[6:0]=0b0000000 + // f0_param_phyd_reg_byte1_dqsn_offset:[19:16]=0b0000 + // f0_param_phyd_reg_byte1_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_88_F0_DATA 0b00000000000000000000000000000011 + // f0_param_phyd_tx_byte1_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_320_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_ca0_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_ca0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_331_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_tx_ca22_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_332_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_cke0_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_cke0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_333_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_csb0_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_cs0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_334_F0_DATA 0b00000000000000000000010000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_resetz_sw:[6:0]=0b0000000 + // f0_param_phyd_tx_reset_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_336_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_ca0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_348_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_cke0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_349_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_csb0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_350_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_ca_tx_dline_code_resetz_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_351_F0_DATA 0b00001000000010000000010000000100 + // f0_param_phya_reg_tx_ca_drvn_ca:[4:0]=0b00100 + // f0_param_phya_reg_tx_ca_drvp_ca:[12:8]=0b00100 + // f0_param_phya_reg_tx_ca_drvn_csb:[20:16]=0b01000 + // f0_param_phya_reg_tx_ca_drvp_csb:[28:24]=0b01000 +#define DDR_PHY_REG_352_F0_DATA 0b00001000000010000000100000001000 + // f0_param_phya_reg_tx_clk_drvn_clkn0:[4:0]=0b01000 + // f0_param_phya_reg_tx_clk_drvp_clkn0:[12:8]=0b01000 + // f0_param_phya_reg_tx_clk_drvn_clkp0:[20:16]=0b01000 + // f0_param_phya_reg_tx_clk_drvp_clkp0:[28:24]=0b01000 +#define DDR_PHY_REG_384_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit0_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_385_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit2_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_386_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit4_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_387_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit6_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte0_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_388_F0_DATA 0b00000000000000000000011001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte0_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_389_F0_DATA 0b00001011000000000000000000000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f0_param_phyd_tx_byte0_dqs_shift:[29:24]=0b001011 +#define DDR_PHY_REG_390_F0_DATA 0b00001010000000000000100100000000 + // f0_param_phyd_tx_byte0_oenz_dqs_shift:[13:8]=0b001001 + // f0_param_phyd_tx_byte0_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_391_F0_DATA 0b00000000000001000000011000000000 + // f0_param_phyd_tx_byte0_oenz_dqs_extend:[11:8]=0b0110 + // f0_param_phyd_tx_byte0_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_392_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_393_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_394_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_395_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_396_F0_DATA 0b00000000000000000000000001000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_397_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_398_F0_DATA 0b00000000000000000000100000001000 + // f0_param_phya_reg_tx_byte0_drvn_dq:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte0_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_399_F0_DATA 0b00001000000010000000100000001000 + // f0_param_phya_reg_tx_byte0_drvn_dqsn:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte0_drvp_dqsn:[12:8]=0b01000 + // f0_param_phya_reg_tx_byte0_drvn_dqsp:[20:16]=0b01000 + // f0_param_phya_reg_tx_byte0_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_400_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit0_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_401_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit2_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_402_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit4_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_403_F0_DATA 0b00000110010000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit6_data_shift:[13:8]=0b000110 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f0_param_phyd_tx_byte1_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_404_F0_DATA 0b00000000000000000000011001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f0_param_phyd_tx_byte1_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_405_F0_DATA 0b00001011000000000000000000000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f0_param_phyd_tx_byte1_dqs_shift:[29:24]=0b001011 +#define DDR_PHY_REG_406_F0_DATA 0b00001010000000000000100100000000 + // f0_param_phyd_tx_byte1_oenz_dqs_shift:[13:8]=0b001001 + // f0_param_phyd_tx_byte1_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_407_F0_DATA 0b00000000000001000000011000000000 + // f0_param_phyd_tx_byte1_oenz_dqs_extend:[11:8]=0b0110 + // f0_param_phyd_tx_byte1_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_408_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_409_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_410_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_411_F0_DATA 0b00000000010000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_412_F0_DATA 0b00000000000000000000000001000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_413_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_414_F0_DATA 0b00000000000000000000100000001000 + // f0_param_phya_reg_tx_byte1_drvn_dq:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte1_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_415_F0_DATA 0b00001000000010000000100000001000 + // f0_param_phya_reg_tx_byte1_drvn_dqsn:[4:0]=0b01000 + // f0_param_phya_reg_tx_byte1_drvp_dqsn:[12:8]=0b01000 + // f0_param_phya_reg_tx_byte1_drvn_dqsp:[20:16]=0b01000 + // f0_param_phya_reg_tx_byte1_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_448_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte0_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_449_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte0_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_450_F0_DATA 0b00000000010000000100000000000000 + // f0_param_phyd_reg_rx_byte0_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b01000000 + // f0_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b01000000 +#define DDR_PHY_REG_451_F0_DATA 0b00000000000000000000101000000000 + // f0_param_phyd_reg_tx_byte0_tx_dline_code_mask_ranka_sw:[6:0]=0b0000000 + // f0_param_phyd_rx_byte0_mask_shift:[13:8]=0b001010 +#define DDR_PHY_REG_452_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_rx_byte0_en_shift:[13:8]=0b000000 + // f0_param_phyd_rx_byte0_odt_en_shift:[29:24]=0b000000 +#define DDR_PHY_REG_453_F0_DATA 0b00000000000010000000111000001110 + // f0_param_phyd_rx_byte0_en_extend:[3:0]=0b1110 + // f0_param_phyd_rx_byte0_odt_en_extend:[11:8]=0b1110 + // f0_param_phyd_rx_byte0_rden_to_rdvld:[20:16]=0b01000 +#define DDR_PHY_REG_454_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte0_rx_dq0_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq1_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq2_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_455_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte0_rx_dq4_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq5_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq6_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte0_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_456_F0_DATA 0b01000000010000000000000000000000 + // f0_param_phya_reg_rx_byte0_rx_dq8_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_tx_byte0_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f0_param_phya_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_457_F0_DATA 0b00000000000100000000000000010000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dq:[4:0]=0b10000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dq_offset:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dqs:[20:16]=0b10000 + // f0_param_phya_reg_rx_byte0_trig_lvl_dqs_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_460_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte1_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_461_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_reg_rx_byte1_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_462_F0_DATA 0b00000000010000000100000000000000 + // f0_param_phyd_reg_rx_byte1_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f0_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b01000000 + // f0_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b01000000 +#define DDR_PHY_REG_463_F0_DATA 0b00000000000000000000101000000000 + // f0_param_phyd_reg_tx_byte1_tx_dline_code_mask_ranka_sw:[6:0]=0b0000000 + // f0_param_phyd_rx_byte1_mask_shift:[13:8]=0b001010 +#define DDR_PHY_REG_464_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phyd_rx_byte1_en_shift:[13:8]=0b000000 + // f0_param_phyd_rx_byte1_odt_en_shift:[29:24]=0b000000 +#define DDR_PHY_REG_465_F0_DATA 0b00000000000010000000111000001110 + // f0_param_phyd_rx_byte1_en_extend:[3:0]=0b1110 + // f0_param_phyd_rx_byte1_odt_en_extend:[11:8]=0b1110 + // f0_param_phyd_rx_byte1_rden_to_rdvld:[20:16]=0b01000 +#define DDR_PHY_REG_466_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte1_rx_dq0_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq1_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq2_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_467_F0_DATA 0b00000000000000000000000000000000 + // f0_param_phya_reg_rx_byte1_rx_dq4_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq5_deskew_raw:[12:8]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq6_deskew_raw:[20:16]=0b00000 + // f0_param_phya_reg_rx_byte1_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_468_F0_DATA 0b01000000010000000000000000000000 + // f0_param_phya_reg_rx_byte1_rx_dq8_deskew_raw:[4:0]=0b00000 + // f0_param_phya_reg_tx_byte1_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f0_param_phya_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_469_F0_DATA 0b00000000000100000000000000010000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dq:[4:0]=0b10000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dq_offset:[14:8]=0b0000000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dqs:[20:16]=0b10000 + // f0_param_phya_reg_rx_byte1_trig_lvl_dqs_offset:[30:24]=0b0000000 +#ifdef F1_TEST +#define DDR_PHY_REG_0_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_ca_sel_lpddr4_pmos_ph_ca:[3:3]=0b0 + // f1_param_phya_reg_tx_clk_sel_lpddr4_pmos_ph_clk:[4:4]=0b0 + // f1_param_phya_reg_tx_sel_lpddr4_pmos_ph:[5:5]=0b0 +#define DDR_PHY_REG_1_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_ca_drvn_de:[1:0]=0b00 + // f1_param_phya_reg_tx_ca_drvp_de:[5:4]=0b00 + // f1_param_phya_reg_tx_clk0_drvn_de:[9:8]=0b00 + // f1_param_phya_reg_tx_clk0_drvp_de:[13:12]=0b00 + // f1_param_phya_reg_tx_csb_drvn_de:[17:16]=0b00 + // f1_param_phya_reg_tx_csb_drvp_de:[21:20]=0b00 + // f1_param_phya_reg_tx_ca_en_tx_de:[24:24]=0b0 + // f1_param_phya_reg_tx_clk0_en_tx_de:[28:28]=0b0 + // f1_param_phya_reg_tx_csb_en_tx_de:[30:30]=0b0 +#define DDR_PHY_REG_2_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_ca_sel_dly1t_ca:[22:0]=0b00000000000000000000000 +#define DDR_PHY_REG_3_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_clk_sel_dly1t_clk0:[0:0]=0b0 + // f1_param_phya_reg_tx_ca_sel_dly1t_cke0:[8:8]=0b0 + // f1_param_phya_reg_tx_ca_sel_dly1t_csb0:[16:16]=0b0 +#define DDR_PHY_REG_4_F1_DATA 0b00000000000100000000000000000000 + // f1_param_phya_reg_tx_vref_en_free_offset:[0:0]=0b0 + // f1_param_phya_reg_tx_vref_en_rangex2:[1:1]=0b0 + // f1_param_phya_reg_tx_vref_sel_lpddr4divby2p5:[2:2]=0b0 + // f1_param_phya_reg_tx_vref_sel_lpddr4divby3:[3:3]=0b0 + // f1_param_phya_reg_tx_vref_offset:[14:8]=0b0000000 + // f1_param_phya_reg_tx_vref_sel:[20:16]=0b10000 +#define DDR_PHY_REG_5_F1_DATA 0b00000000000100000000000000000001 + // f1_param_phya_reg_tx_vrefca_en_free_offset:[0:0]=0b1 + // f1_param_phya_reg_tx_vrefca_en_rangex2:[1:1]=0b0 + // f1_param_phya_reg_tx_vrefca_offset:[14:8]=0b0000000 + // f1_param_phya_reg_tx_vrefca_sel:[20:16]=0b10000 +#define DDR_PHY_REG_6_F1_DATA 0b00000000000000000000000000000010 + // f1_param_phyd_tx_byte_dqs_extend:[2:0]=0b010 +#define DDR_PHY_REG_7_F1_DATA 0b00000000000000000100000001000000 + // f1_param_phya_reg_rx_byte0_odt_reg:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte0_sel_odt_reg_mode:[6:6]=0b1 + // f1_param_phya_reg_rx_byte1_odt_reg:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte1_sel_odt_reg_mode:[14:14]=0b1 +#define DDR_PHY_REG_64_F1_DATA 0b00000000000000000000000000000001 + // f1_param_phya_reg_rx_byte0_en_lsmode:[0:0]=0b1 + // f1_param_phya_reg_rx_byte0_hystr:[5:4]=0b00 + // f1_param_phya_reg_rx_byte0_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f1_param_phya_reg_rx_byte0_sel_odt_center_tap:[10:10]=0b0 + // f1_param_phya_reg_byte0_en_rec_vol_mode:[12:12]=0b0 + // f1_param_phya_reg_tx_byte0_force_en_lvstl_ph:[14:14]=0b0 + // f1_param_phya_reg_rx_byte0_force_en_lvstl_odt:[16:16]=0b0 + // f1_param_phya_reg_rx_byte0_en_trig_lvl_rangex2:[18:18]=0b0 + // f1_param_phya_reg_rx_byte0_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_65_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte0_drvn_de_dq:[1:0]=0b00 + // f1_param_phya_reg_tx_byte0_drvp_de_dq:[5:4]=0b00 + // f1_param_phya_reg_tx_byte0_drvn_de_dqs:[9:8]=0b00 + // f1_param_phya_reg_tx_byte0_drvp_de_dqs:[13:12]=0b00 + // f1_param_phya_reg_tx_byte0_en_tx_de_dq:[16:16]=0b0 + // f1_param_phya_reg_tx_byte0_en_tx_de_dqs:[20:20]=0b0 +#define DDR_PHY_REG_66_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte0_sel_dly1t_dq:[8:0]=0b000000000 + // f1_param_phya_reg_tx_byte0_sel_dly1t_dqs:[12:12]=0b0 + // f1_param_phya_reg_tx_byte0_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_67_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4divby3:[4:4]=0b0 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f1_param_phya_reg_tx_byte0_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_68_F1_DATA 0b00000000000000000000000000000100 + // f1_param_phyd_reg_rx_byte0_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_69_F1_DATA 0b00000000000000000000000000010000 + // f1_param_phyd_reg_byte0_dq0_offset:[6:0]=0b0010000 + // f1_param_phyd_reg_byte0_dq1_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte0_dq2_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte0_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_70_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte0_dq4_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte0_dq5_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte0_dq6_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte0_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_71_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte0_dm_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte0_dqsn_offset:[19:16]=0b0000 + // f1_param_phyd_reg_byte0_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_72_F1_DATA 0b00000000000000000000000000000011 + // f1_param_phyd_tx_byte0_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_80_F1_DATA 0b00000000000000000000000000000001 + // f1_param_phya_reg_rx_byte1_en_lsmode:[0:0]=0b1 + // f1_param_phya_reg_rx_byte1_hystr:[5:4]=0b00 + // f1_param_phya_reg_rx_byte1_sel_dqs_rec_vref_mode:[8:8]=0b0 + // f1_param_phya_reg_rx_byte1_sel_odt_center_tap:[10:10]=0b0 + // f1_param_phya_reg_byte1_en_rec_vol_mode:[12:12]=0b0 + // f1_param_phya_reg_tx_byte1_force_en_lvstl_ph:[14:14]=0b0 + // f1_param_phya_reg_rx_byte1_force_en_lvstl_odt:[16:16]=0b0 + // f1_param_phya_reg_rx_byte1_en_trig_lvl_rangex2:[18:18]=0b0 + // f1_param_phya_reg_rx_byte1_trig_lvl_en_free_offset:[20:20]=0b0 +#define DDR_PHY_REG_81_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte1_drvn_de_dq:[1:0]=0b00 + // f1_param_phya_reg_tx_byte1_drvp_de_dq:[5:4]=0b00 + // f1_param_phya_reg_tx_byte1_drvn_de_dqs:[9:8]=0b00 + // f1_param_phya_reg_tx_byte1_drvp_de_dqs:[13:12]=0b00 + // f1_param_phya_reg_tx_byte1_en_tx_de_dq:[16:16]=0b0 + // f1_param_phya_reg_tx_byte1_en_tx_de_dqs:[20:20]=0b0 +#define DDR_PHY_REG_82_F1_DATA 0b00000000000000000000000100000000 + // f1_param_phya_reg_tx_byte1_sel_dly1t_dq:[8:0]=0b100000000 + // f1_param_phya_reg_tx_byte1_sel_dly1t_dqs:[12:12]=0b0 + // f1_param_phya_reg_tx_byte1_sel_dly1t_mask_ranka:[16:16]=0b0 +#define DDR_PHY_REG_83_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4divby2p5:[0:0]=0b0 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4divby3:[4:4]=0b0 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p5:[8:8]=0b0 + // f1_param_phya_reg_tx_byte1_vref_sel_lpddr4x_voh0p6:[12:12]=0b0 +#define DDR_PHY_REG_84_F1_DATA 0b00000000000000000000000000000100 + // f1_param_phyd_reg_rx_byte1_resetz_dqs_offset:[3:0]=0b0100 +#define DDR_PHY_REG_85_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte1_dq0_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte1_dq1_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte1_dq2_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte1_dq3_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_86_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_byte1_dq4_offset:[6:0]=0b0000000 + // f1_param_phyd_reg_byte1_dq5_offset:[14:8]=0b0000000 + // f1_param_phyd_reg_byte1_dq6_offset:[22:16]=0b0000000 + // f1_param_phyd_reg_byte1_dq7_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_87_F1_DATA 0b00000000000000000000000000010000 + // f1_param_phyd_reg_byte1_dm_offset:[6:0]=0b0010000 + // f1_param_phyd_reg_byte1_dqsn_offset:[19:16]=0b0000 + // f1_param_phyd_reg_byte1_dqsp_offset:[27:24]=0b0000 +#define DDR_PHY_REG_88_F1_DATA 0b00000000000000000000000000000011 + // f1_param_phyd_tx_byte1_tx_oenz_extend:[2:0]=0b011 +#define DDR_PHY_REG_320_F1_DATA 0b00000000000000000000010000010000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_ca0_sw:[6:0]=0b0010000 + // f1_param_phyd_tx_ca0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_331_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_tx_ca22_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_332_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_cke0_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_cke0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_333_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_csb0_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_cs0_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_334_F1_DATA 0b00000000000000000000010000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_resetz_sw:[6:0]=0b0000000 + // f1_param_phyd_tx_reset_shift_sel:[13:8]=0b000100 +#define DDR_PHY_REG_336_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_ca0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_348_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_cke0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_349_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_csb0_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_350_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_ca_tx_dline_code_resetz_raw:[6:0]=0b0000000 +#define DDR_PHY_REG_351_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_ca_drvn_ca:[4:0]=0b01000 + // f1_param_phya_reg_tx_ca_drvp_ca:[12:8]=0b01000 + // f1_param_phya_reg_tx_ca_drvn_csb:[20:16]=0b01000 + // f1_param_phya_reg_tx_ca_drvp_csb:[28:24]=0b01000 +#define DDR_PHY_REG_352_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_clk_drvn_clkn0:[4:0]=0b01000 + // f1_param_phya_reg_tx_clk_drvp_clkn0:[12:8]=0b01000 + // f1_param_phya_reg_tx_clk_drvn_clkp0:[20:16]=0b01000 + // f1_param_phya_reg_tx_clk_drvp_clkp0:[28:24]=0b01000 +#define DDR_PHY_REG_384_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit0_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_385_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit2_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_386_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit4_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_387_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit6_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte0_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_388_F1_DATA 0b00000000000000000000011001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte0_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_389_F1_DATA 0b00001011000000000000000000000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f1_param_phyd_tx_byte0_dqs_shift:[29:24]=0b001011 +#define DDR_PHY_REG_390_F1_DATA 0b00001010000000000000100100000000 + // f1_param_phyd_tx_byte0_oenz_dqs_shift:[13:8]=0b001001 + // f1_param_phyd_tx_byte0_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_391_F1_DATA 0b00000000000001000000011000000000 + // f1_param_phyd_tx_byte0_oenz_dqs_extend:[11:8]=0b0110 + // f1_param_phyd_tx_byte0_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_392_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_393_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_394_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_395_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_396_F1_DATA 0b00000000000000000000000001000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_397_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_398_F1_DATA 0b00000000000000000000100000001000 + // f1_param_phya_reg_tx_byte0_drvn_dq:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte0_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_399_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_byte0_drvn_dqsn:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte0_drvp_dqsn:[12:8]=0b01000 + // f1_param_phya_reg_tx_byte0_drvn_dqsp:[20:16]=0b01000 + // f1_param_phya_reg_tx_byte0_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_400_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq0_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit0_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq1_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit1_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_401_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq2_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit2_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq3_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit3_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_402_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq4_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit4_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq5_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit5_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_403_F1_DATA 0b00000110010000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq6_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit6_data_shift:[13:8]=0b000110 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq7_sw:[22:16]=0b1000000 + // f1_param_phyd_tx_byte1_bit7_data_shift:[29:24]=0b000110 +#define DDR_PHY_REG_404_F1_DATA 0b00000000000000000000011001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq8_sw:[6:0]=0b1000000 + // f1_param_phyd_tx_byte1_bit8_data_shift:[13:8]=0b000110 +#define DDR_PHY_REG_405_F1_DATA 0b00001011000000000000000000000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_sw:[22:16]=0b0000000 + // f1_param_phyd_tx_byte1_dqs_shift:[29:24]=0b001011 +#define DDR_PHY_REG_406_F1_DATA 0b00001010000000000000100100000000 + // f1_param_phyd_tx_byte1_oenz_dqs_shift:[13:8]=0b001001 + // f1_param_phyd_tx_byte1_oenz_shift:[29:24]=0b001010 +#define DDR_PHY_REG_407_F1_DATA 0b00000000000001000000011000000000 + // f1_param_phyd_tx_byte1_oenz_dqs_extend:[11:8]=0b0110 + // f1_param_phyd_tx_byte1_oenz_extend:[19:16]=0b0100 +#define DDR_PHY_REG_408_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq0_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq1_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_409_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq2_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq3_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_410_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq4_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq5_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_411_F1_DATA 0b00000000010000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq6_raw:[6:0]=0b1000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq7_raw:[22:16]=0b1000000 +#define DDR_PHY_REG_412_F1_DATA 0b00000000000000000000000001000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dq8_raw:[6:0]=0b1000000 +#define DDR_PHY_REG_413_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsn_raw:[6:0]=0b0000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_dqsp_raw:[22:16]=0b0000000 +#define DDR_PHY_REG_414_F1_DATA 0b00000000000000000000100000001000 + // f1_param_phya_reg_tx_byte1_drvn_dq:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte1_drvp_dq:[12:8]=0b01000 +#define DDR_PHY_REG_415_F1_DATA 0b00001000000010000000100000001000 + // f1_param_phya_reg_tx_byte1_drvn_dqsn:[4:0]=0b01000 + // f1_param_phya_reg_tx_byte1_drvp_dqsn:[12:8]=0b01000 + // f1_param_phya_reg_tx_byte1_drvn_dqsp:[20:16]=0b01000 + // f1_param_phya_reg_tx_byte1_drvp_dqsp:[28:24]=0b01000 +#define DDR_PHY_REG_448_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte0_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_449_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte0_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_450_F1_DATA 0b00000000010000000100000000000000 + // f1_param_phyd_reg_rx_byte0_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b01000000 + // f1_param_phyd_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b01000000 +#define DDR_PHY_REG_451_F1_DATA 0b00000000000000000000110100000000 + // f1_param_phyd_reg_tx_byte0_tx_dline_code_mask_ranka_sw:[6:0]=0b0000000 + // f1_param_phyd_rx_byte0_mask_shift:[13:8]=0b001101 +#define DDR_PHY_REG_452_F1_DATA 0b00000010000000000000001000000000 + // f1_param_phyd_rx_byte0_en_shift:[13:8]=0b000010 + // f1_param_phyd_rx_byte0_odt_en_shift:[29:24]=0b000010 +#define DDR_PHY_REG_453_F1_DATA 0b00000000000010000000111000001110 + // f1_param_phyd_rx_byte0_en_extend:[3:0]=0b1110 + // f1_param_phyd_rx_byte0_odt_en_extend:[11:8]=0b1110 + // f1_param_phyd_rx_byte0_rden_to_rdvld:[20:16]=0b01000 +#define DDR_PHY_REG_454_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte0_rx_dq0_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq1_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq2_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_455_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte0_rx_dq4_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq5_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq6_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte0_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_456_F1_DATA 0b01000000010000000000000000000000 + // f1_param_phya_reg_rx_byte0_rx_dq8_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_tx_byte0_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte0_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f1_param_phya_reg_rx_byte0_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_457_F1_DATA 0b00000000000100000000000000010000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dq:[4:0]=0b10000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dq_offset:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dqs:[20:16]=0b10000 + // f1_param_phya_reg_rx_byte0_trig_lvl_dqs_offset:[30:24]=0b0000000 +#define DDR_PHY_REG_460_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte1_rx_dq0_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq1_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq2_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq3_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_461_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phyd_reg_rx_byte1_rx_dq4_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq5_deskew_sw:[14:8]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq6_deskew_sw:[22:16]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dq7_deskew_sw:[30:24]=0b0000000 +#define DDR_PHY_REG_462_F1_DATA 0b00000000010000000100000000000000 + // f1_param_phyd_reg_rx_byte1_rx_dq8_deskew_sw:[6:0]=0b0000000 + // f1_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_sw:[15:8]=0b01000000 + // f1_param_phyd_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_sw:[23:16]=0b01000000 +#define DDR_PHY_REG_463_F1_DATA 0b00000000000000000000110100000000 + // f1_param_phyd_reg_tx_byte1_tx_dline_code_mask_ranka_sw:[6:0]=0b0000000 + // f1_param_phyd_rx_byte1_mask_shift:[13:8]=0b001101 +#define DDR_PHY_REG_464_F1_DATA 0b00000010000000000000001000000000 + // f1_param_phyd_rx_byte1_en_shift:[13:8]=0b000010 + // f1_param_phyd_rx_byte1_odt_en_shift:[29:24]=0b000010 +#define DDR_PHY_REG_465_F1_DATA 0b00000000000010000000111000001110 + // f1_param_phyd_rx_byte1_en_extend:[3:0]=0b1110 + // f1_param_phyd_rx_byte1_odt_en_extend:[11:8]=0b1110 + // f1_param_phyd_rx_byte1_rden_to_rdvld:[20:16]=0b01000 +#define DDR_PHY_REG_466_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte1_rx_dq0_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq1_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq2_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq3_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_467_F1_DATA 0b00000000000000000000000000000000 + // f1_param_phya_reg_rx_byte1_rx_dq4_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq5_deskew_raw:[12:8]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq6_deskew_raw:[20:16]=0b00000 + // f1_param_phya_reg_rx_byte1_rx_dq7_deskew_raw:[28:24]=0b00000 +#define DDR_PHY_REG_468_F1_DATA 0b01000000010000000000000000000000 + // f1_param_phya_reg_rx_byte1_rx_dq8_deskew_raw:[4:0]=0b00000 + // f1_param_phya_reg_tx_byte1_tx_dline_code_mask_ranka_raw:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte1_rx_dqs_dlie_code_neg_ranka_raw:[22:16]=0b1000000 + // f1_param_phya_reg_rx_byte1_rx_dqs_dlie_code_pos_ranka_raw:[30:24]=0b1000000 +#define DDR_PHY_REG_469_F1_DATA 0b00000000000100000000000000010000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dq:[4:0]=0b10000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dq_offset:[14:8]=0b0000000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dqs:[20:16]=0b10000 + // f1_param_phya_reg_rx_byte1_trig_lvl_dqs_offset:[30:24]=0b0000000 +#endif //F1_TEST + +void ddrc_init(void); +void phy_init(void); +void ctrl_init_high_patch(void); +void ctrl_init_low_patch(void); +//void ctrl_init_detect_dram_size(uint8_t * dram_cap_in_mbyte); +void ctrl_init_update_by_dram_size(uint8_t dram_cap_in_mbyte); + +#endif /* __DDR_PI_PHY_H__ */ diff --git a/fsbl/plat/cv181x/include/ddr/ddr_pkg_info.h b/fsbl/plat/cv181x/include/ddr/ddr_pkg_info.h new file mode 100644 index 000000000..e3b885124 --- /dev/null +++ b/fsbl/plat/cv181x/include/ddr/ddr_pkg_info.h @@ -0,0 +1,39 @@ +#ifndef __DDR_PKG_INFO_H__ +#define __DDR_PKG_INFO_H__ +#include + +#define DDR_VENDOR_UNKNOWN 0b00000 +#define DDR_VENDOR_NY_4G 0b00001 +#define DDR_VENDOR_NY_2G 0b00010 +#define DDR_VENDOR_ESMT_1G 0b00011 +#define DDR_VENDOR_ESMT_512M_DDR2 0b00100 +#define DDR_VENDOR_ETRON_1G 0b00101 +#define DDR_VENDOR_ESMT_2G 0b00110 +#define DDR_VENDOR_PM_2G 0b00111 +#define DDR_VENDOR_PM_1G 0b01000 +#define DDR_VENDOR_ETRON_512M_DDR2 0b01001 +#define DDR_VENDOR_ESMT_N25_1G 0b01010 + +#define DDR_CAPACITY_UNKNOWN 0b000 +#define DDR_CAPACITY_512M 0b001 +#define DDR_CAPACITY_1G 0b010 +#define DDR_CAPACITY_2G 0b011 +#define DDR_CAPACITY_4G 0b100 + +#define PKG_UNKNOWN 0b000 +#define PKG_QFN 0b001 +#define PKG_BGA 0b010 + +#define DDR_TYPE_UNKNOWN 0 +#define DDR_TYPE_DDR2 1 +#define DDR_TYPE_DDR3 2 + +extern uint32_t ddr_data_rate; + +void read_ddr_pkg_info(void); +uint8_t get_ddr_vendor(void); +uint8_t get_ddr_capacity(void); +uint8_t get_pkg(void); +uint8_t get_ddr_type(void); + +#endif /* __DDR_PKG_INFO_H__ */ diff --git a/fsbl/plat/cv181x/include/ddr/ddr_sys.h b/fsbl/plat/cv181x/include/ddr/ddr_sys.h new file mode 100644 index 000000000..87f3ffbbf --- /dev/null +++ b/fsbl/plat/cv181x/include/ddr/ddr_sys.h @@ -0,0 +1,180 @@ +#ifndef __DDR_SYS_H__ +#define __DDR_SYS_H__ + +#include +#include + +extern uint32_t freq_in; +extern uint32_t tar_freq; +extern uint32_t mod_freq; +extern uint32_t dev_freq; +extern uint64_t reg_set; +extern uint64_t reg_span; +extern uint64_t reg_step; + +//extern uint64_t debug_seqnum; +//extern uint64_t debug_seqnum1; + +extern uint32_t rddata; + +enum bist_mode { + E_PRBS, + E_SRAM, +}; + +enum train_mode { + E_WRLVL, + E_RDGLVL, + E_WDQLVL, + E_RDLVL, + E_WDQLVL_SW, + E_RDLVL_SW, +}; + +#define PHY_BASE_ADDR 2048 +#define PI_BASE_ADDR 0 +#define CADENCE_PHYD 0x08000000 +#define CADENCE_PHYD_APB 0x08006000 +#define cfg_base 0x08004000 + +#define DDR_SYS_BASE 0x08000000 +// #define PI_BASE (DDR_SYS_BASE + 0x0000) +#define PHY_BASE (DDR_SYS_BASE + 0x2000) +#define DDRC_BASE (DDR_SYS_BASE + 0x4000) +#define PHYD_BASE (DDR_SYS_BASE + 0x6000) +#define CV_DDR_PHYD_APB (DDR_SYS_BASE + 0x6000) +#define AXI_MON_BASE (DDR_SYS_BASE + 0x8000) +// #define TOP_BASE (DDR_SYS_BASE + 0xa000) +#define DDR_TOP_BASE (DDR_SYS_BASE + 0xa000) +#define PHYD_BASE_ADDR (DDR_SYS_BASE) +#define DDR_BIST_BASE 0x08010000 +#define DDR_BIST_SRAM_DQ_BASE 0x08011000 +#define DDR_BIST_SRAM_DM_BASE 0x08011800 + +#define mmio_wr32 mmio_write_32 +#define mmio_rd32 mmio_read_32 + +// #define ddr_mmio_rd32(a, b) do { if (1) b = mmio_rd32(a); } while (0) +// #define ddr_sram_rd32(a, b) do { if (1) b = mmio_rd32(a); } while (0) + +#define ddr_sram_wr32(a, b) mmio_wr32(a, b) +#define ddr_debug_wr32(b) + +// #define uartlog(...) tf_printf(MSG_NOTICE "U: " __VA_ARGS__) +// #define KC_MSG(...) tf_printf(MSG_NOTICE "[KC_DBG] " __VA_ARGS__) +// #define KC_MSG_TR(...) tf_printf(MSG_NOTICE "[KC_DBG_training]" __VA_ARGS__) +// #define TJ_MSG(...) tf_printf(MSG_NOTICE "[TJ Info] : " __VA_ARGS__) + +#define uartlog(...) +#define KC_MSG(...) +#define KC_MSG_TR(...) +#define TJ_MSG(...) + +#ifdef DBG_SHMOO +#define SHMOO_MSG(...) tf_printf(MSG_NOTICE __VA_ARGS__) +#else +#define SHMOO_MSG(...) +#endif + +#ifdef DBG_SHMOO_CA +#define SHMOO_MSG_CA(...) tf_printf(MSG_NOTICE __VA_ARGS__) +#else +#define SHMOO_MSG_CA(...) +#endif + +#ifdef DBG_SHMOO_CS +#define SHMOO_MSG_CS(...) tf_printf(MSG_NOTICE __VA_ARGS__) +#else +#define SHMOO_MSG_CS(...) +#endif + +// void check_rd32(uintptr_t addr, uint32_t expected); //unused +void ddr_debug_num_write(void); +void cvx16_rdvld_train(void); +void ddr_sys_suspend(void); +void ddr_sys_resume(void); +void cvx16_ddr_sub_resume2(void); +void cvx16_ddr_sub_resume3(void); +void cvx16_ddrc_suspend(void); +void cvx16_bist_wr_prbs_init(void); +void cvx16_bist_wr_sram_init(void); +void cvx16_bist_wrlvl_init(void); +void cvx16_bist_rdglvl_init(void); +void cvx16_bist_rdlvl_init(uint32_t mode); +void cvx16_bist_wdqlvl_init(uint32_t mode); +void cvx16_bist_wdmlvl_init(void); +void cvx16_bist_start_check(uint32_t *bist_result, uint64_t *err_data_odd, uint64_t *err_data_even); +void cvx16_bist_tx_shift_delay(uint32_t shift_delay); +void cvx16_bist_rx_delay(uint32_t delay); +void cvx16_bist_rx_deskew_delay(uint32_t delay); +void cvx16_ca_shift_delay(uint32_t shift_delay); +void cvx16_cs_shift_delay(uint32_t shift_delay); +void cvx16_synp_mrw(uint32_t addr, uint32_t data); +void cvx16_chg_pll_freq(void); +void cvx16_dll_cal(void); +void cvx16_dll_cal_phyd_hw(void); +void cvx16_dll_cal_phya_enautok(void); +void cvx16_ddr_zqcal_isr8(void); +void cvx16_ddr_zqcal_hw_isr8(uint32_t hw_mode); +void cvx16_clk_normal(void); +void cvx16_clk_div2(void); +void cvx16_INT_ISR_08(void); +void cvx16_clk_div40(void); +void cvx16_ddr_phy_power_on_seq1(void); +void cvx16_ddr_phy_power_on_seq2(void); +void cvx16_ddr_phy_power_on_seq3(void); +void cvx16_wait_for_dfi_init_complete(void); +void cvx16_ctrlupd_short(void); +void cvx16_polling_dfi_init_start(void); +void cvx16_set_dfi_init_complete(void); +void cvx16_polling_synp_normal_mode(void); +void cvx16_dfi_ca_park_prbs(uint32_t cap_enable); +void cvx16_wrlvl_req(void); +void cvx16_rdglvl_req(void); +void cvx16_rdlvl_req(uint32_t mode); +void cvx16_rdlvl_sw_req(uint32_t mode); +void cvx16_wdqlvl_req(uint32_t data_mode, uint32_t lvl_mode); +void cvx16_wdqlvl_sw_req(uint32_t data_mode, uint32_t lvl_mode); +void cvx16_wrlvl_status(void); +void cvx16_rdglvl_status(void); +void cvx16_rdlvl_status(void); +void cvx16_wdqlvl_status(void); +void cvx16_dll_cal_status(void); +void cvx16_zqcal_status(void); +void cvx16_training_status(void); +void cvx16_setting_check(void); +void cvx16_ddr_freq_change_htol(void); +void cvx16_ddr_freq_change_ltoh(void); +void cvx16_set_dq_vref(uint32_t vref); +void cvx16_set_dfi_init_start(void); +void cvx16_ddr_phya_pd(void); +void cvx16_ddr_phyd_save(uint32_t sram_base_addr); +void cvx16_ddr_phyd_restore(uint32_t sram_base_addr); +void cvx16_dll_sw_upd(void); +void cvx16_bist_mask_shift_delay(uint32_t shift_delay, uint32_t en_lead); +void cvx16_set_dq_trig_lvl(uint32_t trig_lvl); +void cvx16_pll_init(void); +void cvx16_lb_0_phase40(void); +void cvx16_lb_0_external(void); +void cvx16_lb_1_dq_set_highlow(void); +void cvx16_lb_2_mux_demux(void); +void cvx16_lb_3_ca_set_highlow(void); +void cvx16_lb_4_ca_clk_pat(void); +void cvx16_clk_gating_disable(void); +void cvx16_clk_gating_enable(void); +void cvx16_dfi_phyupd_req(void); +void cvx16_en_rec_vol_mode(void); +void cvx16_dll_sw_clr(void); +void cvx16_reg_toggle(void); +void cvx16_ana_test(void); +void cvx16_ddr_zq240(void); +void cvx16_ddr_zq240_ate(void); +void cvx16_ddr_zq240_cal(void); +void ctrl_init_detect_dram_size(uint8_t *dram_cap_in_mbyte); +uint32_t ddr_bist_all(uint32_t mode, uint32_t capacity, uint32_t x16_mode); +uint32_t bist_all_dram(uint32_t mode, uint32_t capacity); +void bist_all_dram_forever(uint32_t capacity); +void calvl_req(uint32_t capacity); +void cslvl_req(uint32_t capacity); +void ddr_training(enum train_mode t_mode); +#endif /* __DDR_SYS_H__ */ diff --git a/fsbl/plat/cv181x/include/ddr/ddr_sys_bring_up.h b/fsbl/plat/cv181x/include/ddr/ddr_sys_bring_up.h new file mode 100644 index 000000000..9ca20ac9d --- /dev/null +++ b/fsbl/plat/cv181x/include/ddr/ddr_sys_bring_up.h @@ -0,0 +1,6 @@ +#ifndef __DDR_SYS_BRING_UP_H__ +#define __DDR_SYS_BRING_UP_H__ + +void ddr_sys_bring_up(void); + +#endif /* __DDR_SYS_BRING_UP_H__ */ diff --git a/fsbl/plat/cv181x/include/ddr/phy_pll_init.h b/fsbl/plat/cv181x/include/ddr/phy_pll_init.h new file mode 100644 index 000000000..99e4e0699 --- /dev/null +++ b/fsbl/plat/cv181x/include/ddr/phy_pll_init.h @@ -0,0 +1,6 @@ +#ifndef __PHY_PLL_INIT_H__ +#define __PHY_PLL_INIT_H__ + +void pll_init(void); + +#endif /* __PHY_PLL_INIT_H__ */ diff --git a/fsbl/plat/cv181x/include/ddr/reg_soc.h b/fsbl/plat/cv181x/include/ddr/reg_soc.h new file mode 100644 index 000000000..80509f78b --- /dev/null +++ b/fsbl/plat/cv181x/include/ddr/reg_soc.h @@ -0,0 +1,41 @@ +#ifndef __REG_SOC_H__ +#define __REG_SOC_H__ + +// #define TOP_REG_BASE 0x03000000 +// #define PINMUX_BASE (TOP_REG_BASE + 0x1000) + +// #define TOP_REG_SW_RST_BASE (TOP_REG_BASE + 0x3000) +// #define REG_SOFT_RST2 0x8 + +// #define GP_REG2 (TOP_REG_BASE + 0x88) +// #define GP_REG3 (TOP_REG_BASE + 0x8C) +// #define GP_REG4 (TOP_REG_BASE + 0x90) +// #define GP_REG5 (TOP_REG_BASE + 0x94) +// #define GP_REG8 (TOP_REG_BASE + 0xA0) + +// #define EFUSE_BASE (TOP_REG_BASE + 0x00050000) +// #define EFUSE_SHADOW_REG (EFUSE_BASE + 0x100) + +// #define EFUSE_ANALOG0 (EFUSE_SHADOW_REG + 0x18) +// #define EFUSE_ANALOG1 (EFUSE_SHADOW_REG + 0x1C) +// #define EFUSE_ANALOG2 (EFUSE_SHADOW_REG + 0x20) +// #define EFUSE_ANALOG3 (EFUSE_SHADOW_REG + 0x24) +// #define EFUSE_BONDING0 (EFUSE_SHADOW_REG + 0x28) +// #define EFUSE_SLT_TRIM (EFUSE_SHADOW_REG + 0x24) + +// #define PLLG6_BASE 0x03002900 +// #define top_pll_g6_reg_ddr_ssc_syn_src_en 0x40 +// #define top_pll_g6_reg_ddr_ssc_syn_src_en_OFFSET 1 +// #define top_pll_g6_reg_ddr_ssc_syn_src_en_MASK 0x2 + +// #define PWM0_BASE (TOP_REG_BASE + 0x60000) +// #define PWM_HLPERIOD0 0x0 +// #define PWM_PERIOD0 0x4 +// #define PWM_HLPERIOD1 0x8 +// #define PWM_PERIOD1 0xC +// #define PWM_HLPERIOD2 0x10 +// #define PWM_PERIOD2 0x14 +// #define PWM_HLPERIOD3 0x18 +// #define PWM_PERIOD3 0x1C +// #define PWM_START 0x44 +#endif /* __REG_SOC_H__ */ diff --git a/fsbl/plat/cv181x/include/ddr/regconfig.h b/fsbl/plat/cv181x/include/ddr/regconfig.h new file mode 100644 index 000000000..dd3c35c58 --- /dev/null +++ b/fsbl/plat/cv181x/include/ddr/regconfig.h @@ -0,0 +1,34 @@ +#ifndef __REG_CFG_H__ +#define __REG_CFG_H__ + +// #include +// #include "ddr_sys.h" + +// #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) + +struct regconf { + uint32_t addr; + uint32_t val; +}; + +struct regpatch { + uint32_t addr; + uint32_t mask; + uint32_t val; +}; + +// #define DDR_CFG_TYPE_DDR3 1 +// #define DDR_CFG_TYPE_DDR2 2 +// #define DDR_CFG_TYPE_DDR3_AUTO 3 +// #define DDR_CFG_TYPE_DDR2_AUTO 4 +#ifdef DDR2_3 +extern struct regpatch ddr3_1866_patch_regs[]; +extern uint32_t ddr3_1866_patch_regs_count; +extern struct regpatch ddr2_1333_patch_regs[]; +extern uint32_t ddr2_1333_patch_regs_count; +#else +extern struct regpatch ddr_patch_regs[]; +extern uint32_t ddr_patch_regs_count; +#endif + +#endif /* __REG_CFG_H__ */ diff --git a/fsbl/plat/cv181x/include/mmap.h b/fsbl/plat/cv181x/include/mmap.h new file mode 100644 index 000000000..89d34e38e --- /dev/null +++ b/fsbl/plat/cv181x/include/mmap.h @@ -0,0 +1,93 @@ +#ifndef __MMAP_H__ +#define __MMAP_H__ + +#include "cvi_board_memmap.h" + +/* + * BL1 read-only specific defines. + */ +#if ROM_LOCATION == ROM_LOCATION_HSPERI_ROM +#define BL1_ROM_BASE ROM_BASE +#elif ROM_LOCATION == ROM_LOCATION_SPINOR1 +#define BL1_ROM_BASE SPIF1_BASE +#else +#errro "ROM_LOCATION" +#endif + +#define BL1_ROM_SIZE ROM_SIZE + +#define BL1_RO_BASE BL1_ROM_BASE +#define BL1_RO_LIMIT (BL1_ROM_BASE + BL1_ROM_SIZE) + +#define BL1_VERSION_INFO_SIZE 64 // 32bytes date string + 32bytes of SHA256 +#define BL1_DIGEST_ADDR (BL1_ROM_BASE + BL1_ROM_SIZE - 32) // Size of SHA256 + +#define BL1_ROM_MASK_SIZE 8192 +#define RISCV_BL1_ROM_PSMSK_VALUE (1 << 23) +#define CA53_BL1_ROM_PSMSK_VALUE (1 << 11) + +#define ROM_API_ALIGN 32 + +#define BL_RAM_BASE TPU_SRAM_BASE +#define BL_RAM_SIZE TPU_SRAM_SIZE + +/* + * IO buffer specific defines. + * block IO buffer's start address and size must be block size aligned + */ +#define BL2_BASE (BL_RAM_BASE) +#define BL2_SIZE (0x37000) +#define BL2_ENTRY_OFFSET 32 + +#define BOOT_LOG_BUF_BASE (BL2_BASE + BL2_SIZE) +#define BOOT_LOG_BUF_SIZE 0x2000 + +#define PARAM1_BASE (BOOT_LOG_BUF_BASE + BOOT_LOG_BUF_SIZE) +#define PARAM1_SIZE 0x1000 // same as typeof(struct fip_param1). +#define PARAM1_SIZE_WO_SIG 0x800 + +#define CV_IO_BUF_BASE (PARAM1_BASE + PARAM1_SIZE) +#define CV_IO_BUF_SIZE 0x2000 + +#define BL1_RW_BASE (CV_IO_BUF_BASE + CV_IO_BUF_SIZE) +#define BL1_RW_SIZE (0x4000) + +/* + * FIP binary defines. + */ +#define FIP_PARAM1_MAGIC1 0x000A31304c425643ULL // "CVBL01\n\0" +#define FIP_PARAM2_MAGIC1 0x000A3230444c5643ULL // "CVLD02\n\0" + +#define FLASH_NUMBER_OF_RETRIES 8 +#define FIP_RETRY_OFFSET (256 * 1024) +#define FIP_MAX_SIZE (get_number_of_retries() * FIP_RETRY_OFFSET) + +#define PLATFORM_STACK_SIZE 0x2000 + +/* + * DRAM map + */ + +#define DRAM_BASE CVIMMAP_DRAM_BASE +#define DRAM_SIZE CVIMMAP_DRAM_SIZE + +#define MONITOR_RUNADDR CVIMMAP_MONITOR_ADDR +#define LICENSE_FILE_ADDR (DRAM_BASE + 0x20020) // in ATF + +#define OPENSBI_FDT_ADDR CVIMMAP_OPENSBI_FDT_ADDR + +#define DECOMP_ALLOC_SIZE (1 << 20) +#define DECOMP_BUF_SIZE (CVIMMAP_FSBL_UNZIP_SIZE - DECOMP_ALLOC_SIZE) + +#define DECOMP_ALLOC_ADDR CVIMMAP_FSBL_UNZIP_ADDR +#define DECOMP_BUF_ADDR (DECOMP_ALLOC_ADDR + DECOMP_ALLOC_SIZE) + +#if DECOMP_BUF_SIZE <= 0 +#error "FSBL_UNZIP_SIZE is not enough" +#endif + +#define DECOMP_DST_SIZE (16 << 20) + +#define BLCP_2ND_RUNADDR CVIMMAP_FSBL_C906L_START_ADDR + +#endif /* __MMAP_H__ */ diff --git a/fsbl/plat/cv181x/include/platform.h b/fsbl/plat/cv181x/include/platform.h new file mode 100644 index 000000000..13a77bb4d --- /dev/null +++ b/fsbl/plat/cv181x/include/platform.h @@ -0,0 +1,119 @@ +/* + * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __PLATFORM_H__ +#define __PLATFORM_H__ + +#include +#include + +#ifndef __ASSEMBLY__ + +#include +#include +#include +#include + +void panic_handler(void) __dead2; +void __system_reset(const char *file, unsigned int line) __dead2; +#define SYSTEM_RESET(...) \ + do { \ + ERROR(__VA_ARGS__); \ + __system_reset(__FILE__, __LINE__); \ + } while (1) + +enum boot_src get_boot_src(void); +void set_boot_src(enum boot_src src); +void set_boot_src_from_trap(void); + +int get_number_of_retries(void); + +int is_uart_dl_enabled(void); +int is_usb_dl_enabled(void); +int is_sd_dl_enabled(void); + +static inline union sw_info *get_sw_info(void) +{ + return (union sw_info *)EFUSE_SW_INFO_ADDR; +} + +enum CHIP_CONF_CMD { + CHIP_CONF_SCAN_START_0 = 0, + CHIP_CONF_SCAN_START_1 = 0xFFFFFFA0, + + CHIP_CONF_CMD_DELAY_US = 0xFFFFFFFE, + CHIP_CONF_CMD_DELAY_MS = 0xFFFFFFFD +}; + +void apply_chip_conf(const struct chip_conf chip_conf[], uint32_t size, enum CHIP_CONF_CMD scan_start, + enum CHIP_CONF_CMD scan_end); + +void reset_c906l(uintptr_t reset_address); + +void set_pinmux(int io_type); + +int sd_get_clk(void); +int emmc_get_clk(void); +void sdio_pad_setting(void); +void sdio_pad_setting_no_card_inserted(void); + +void usb_init(void); +int usb_polling(void *buf, uint32_t offset, uint32_t size); +void cv_usb_clk_init(void); +void cv_usb_clk_deinit(void); + +int emmc_read_fip(uint32_t offset, uint32_t size, uintptr_t buf); + +int sd_open_fip(void); +int sd_load_fip(void *buf, uint32_t offset, uint32_t size); + +int kermit_download(void *buf, uint32_t offset, uint32_t size); + +int wait_debug_port_polling(void); +int wait_debug_port_allow(void); + +int load_image(void *buf, uint32_t offset, size_t image_size, int retry_num); +int device_setup(void); +int flash_init(void); + +uint8_t usb_id_det(void); + +static inline uintptr_t phys_to_dma(uintptr_t phys) +{ + uintptr_t dma = phys; + + if (IN_RANGE(phys, TPU_SRAM_BASE, TPU_SRAM_SIZE)) + dma = phys - TPU_SRAM_BASE + TPU_SRAM_ORIGIN_BASE; + + return dma; +} + +static inline uintptr_t dma_to_phys(uintptr_t dma) +{ + uintptr_t phys = dma; + + if (IN_RANGE(dma, TPU_SRAM_ORIGIN_BASE, TPU_SRAM_SIZE)) + phys = dma - TPU_SRAM_BASE + TPU_SRAM_ORIGIN_BASE; + + return phys; +} + +void setup_dl_flag(void); + +void switch_rtc_mode_1st_stage(void); +void switch_rtc_mode_2nd_stage(void); +void set_rtc_en_registers(void); + +void apply_analog_trimming_data(void); + +void sys_pll_init(void); +void sys_switch_all_to_pll(void); + +void init_comm_info(void); + +#endif /* __ASSEMBLY__ */ + +#endif /* __PLATFORM_H__ */ diff --git a/fsbl/plat/cv181x/include/platform_def.h b/fsbl/plat/cv181x/include/platform_def.h new file mode 100644 index 000000000..1ac5cdeab --- /dev/null +++ b/fsbl/plat/cv181x/include/platform_def.h @@ -0,0 +1,482 @@ +/* + * Copyright (c) 2015-2016, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __PLATFORM_DEF_H__ +#define __PLATFORM_DEF_H__ + +#include +#include + +#define ROM_LOCATION_HSPERI_ROM 0 +#define ROM_LOCATION_SPINOR1 1 + +#if TEST_FROM_SPINOR1 +#define ROM_LOCATION ROM_LOCATION_SPINOR1 +#else +#define ROM_LOCATION ROM_LOCATION_HSPERI_ROM +#endif + +#ifndef __ASSEMBLY__ + +/* + * These definition are used to verify struct size and offset. + * Hard-coded value only. Do not use sizeof() or offsetof() here. + */ +// struct fip_param1->nand_info must be same as the definition in u-boot +#define NAND_INFO_OFFSET 16 + +struct spi_nand_info_t { + uint32_t version; + uint32_t id; + uint32_t page_size; + uint32_t spare_size; + uint32_t block_size; + uint32_t pages_per_block; + uint32_t fip_block_cnt; + uint8_t pages_per_block_shift; + uint8_t badblock_pos; + uint8_t dummy_data1[2]; + uint32_t flags; + uint8_t ecc_en_feature_offset; + uint8_t ecc_en_mask; + uint8_t ecc_status_offset; + uint8_t ecc_status_mask; + uint8_t ecc_status_shift; + uint8_t ecc_status_uncorr_val; + uint8_t dummy_data2[2]; + uint32_t erase_count; // erase count for sys base block + uint8_t sck_l; + uint8_t sck_h; + uint16_t max_freq; + uint32_t sample_param; + uint8_t xtal_switch; + uint8_t dummy_data3[71]; +}; + +struct spinor_info_t { + uint32_t ctrl; + uint32_t dly_ctrl; + uint32_t tran_csr; + uint32_t opt; + uint32_t reserved_1; + uint32_t reserved_2; + uint32_t reserved_3; + uint32_t reserved_4; + uint32_t reserved_5; +} __packed; + +struct chip_conf { + uint32_t reg; + uint32_t value; +} __packed; + +struct fip_flags { + struct { + uint8_t rsa_size : 2; + uint8_t scs : 2; + uint8_t encrypted : 2; + uint8_t reserved1 : 2; + }; + uint8_t reserved2[7]; +} __packed; + +struct fip_param1 { + uint64_t magic1; + uint32_t magic2; + uint32_t param_cksum; + struct spi_nand_info_t nand_info; + struct spinor_info_t spinor_info; + struct fip_flags fip_flags; + uint32_t chip_conf_size; + uint32_t blcp_img_cksum; + uint32_t blcp_img_size; + uint32_t blcp_img_runaddr; + uint32_t blcp_param_loadaddr; + uint32_t blcp_param_size; + uint32_t bl2_img_cksum; + uint32_t bl2_img_size; + uint32_t bld_img_size; + uint32_t param2_loadaddr; + uint32_t reserved1; + struct chip_conf chip_conf[95]; + uint8_t bl_ek[32]; + uint8_t root_pk[512]; + uint8_t bl_pk[512]; + uint8_t bl_pk_sig[512]; + uint8_t chip_conf_sig[512]; + uint8_t bl2_img_sig[512]; + uint8_t blcp_img_sig[512]; +} __packed __aligned(__alignof__(unsigned int)); + +struct blcp_param_head { + uint32_t magic; + uint32_t cksum; +} __packed; + +#define BLCP_PARAM_MAGIC 0x52505043 // "CPPR" +#define BLCP_PARAM_MAX_SIZE 512 +#define BLCP_PARAM_RETRY 4 + +struct bl2_head { + uint64_t magic1; + uint64_t magic2; + uint32_t msid; + uint32_t version; + uint64_t reserved1; +} __packed; + +/* this structure should be modified all of fsbl & MCU & osdrv side */ +struct transfer_config_t { + uint32_t conf_magic; + uint32_t conf_size; //conf_size exclude mcu_status & linux_status + uint32_t isp_buffer_addr; + uint32_t isp_buffer_size; + uint32_t encode_img_addr; + uint32_t encode_img_size; + uint32_t encode_buf_addr; + uint32_t encode_buf_size; + uint8_t dump_print_enable; + uint8_t dump_print_size_idx; + uint16_t image_type; + uint16_t checksum; // checksum exclude mcu_status & linux_status + uint8_t mcu_status; + uint8_t linux_status; +} __packed; + +enum _MUC_STATUS_E { + MCU_STATUS_NONOS_INIT = 1, + MCU_STATUS_NONOS_RUNNING, + MCU_STATUS_NONOS_DONE, + MCU_STATUS_RTOS_T1_INIT, // before linux running + MCU_STATUS_RTOS_T1_RUNNING, + MCU_STATUS_RTOS_T2_INIT, // after linux running + MCU_STATUS_RTOS_T2_RUNNING, + MCU_STATUS_LINUX_INIT, + MCU_STATUS_LINUX_RUNNING, +}; + +enum E_IMAGE_TYPE { + E_FAST_JEPG = 1, + E_FAST_H264, + E_FAST_H265, +}; + +enum DUMP_PRINT_SIZE_E { + DUMP_PRINT_SZ_IDX_0K = 0, + DUMP_PRINT_SZ_IDX_4K = 12, // 4096 = 1<<12 + DUMP_PRINT_SZ_IDX_8K, + DUMP_PRINT_SZ_IDX_16K, + DUMP_PRINT_SZ_IDX_32K, + DUMP_PRINT_SZ_IDX_LIMIT, +}; + +#define BOOT_SRC_TAG 0xCE00 + +// NO ZERO in boot_src +enum boot_src { + // Read from flash + BOOT_SRC_SPI_NAND = 0x0 | BOOT_SRC_TAG, + BOOT_SRC_SPI_NOR = 0x2 | BOOT_SRC_TAG, + BOOT_SRC_EMMC = 0x3 | BOOT_SRC_TAG, + + // Download + BOOT_SRC_SD = 0xA0 | BOOT_SRC_TAG, + BOOT_SRC_USB = 0xA3 | BOOT_SRC_TAG, + BOOT_SRC_UART = 0xA5 | BOOT_SRC_TAG, +}; + +#define DOWNLOAD_BUTTON 0x1 +#define DOWNLOAD_DISABLE 0x2 + +union sw_info { + uint32_t value; + struct { + uint32_t dis_dbg_inject : 1; + uint32_t usb_polling_time : 1; + uint32_t dis_uart_msg: 1; + uint32_t reserved : 2; + uint32_t usb_vid : 16; + uint32_t dis_usb_rxf : 1; + uint32_t sd_dl : 2; + uint32_t usd_dl : 2; + uint32_t uart_dl : 2; + uint32_t sd_polarity : 2; + uint32_t reset_type : 1; + uint32_t sw_info_enable : 1; + }; +} __packed; + +struct _time_records { + uint16_t fsbl_start; + uint16_t ddr_init_start; + uint16_t ddr_init_end; + uint16_t release_blcp_2nd; + uint16_t load_loader_2nd_end; + uint16_t fsbl_decomp_start; + uint16_t fsbl_decomp_end; + uint16_t fsbl_exit; + uint16_t uboot_start; + uint16_t bootcmd_start; + uint16_t decompress_kernel_start; + uint16_t kernel_start; + uint16_t kernel_run_init_start; +} __packed; + +extern struct _time_records *time_records; + +#endif /* __ASSEMBLY__ */ + +/* + * PINMUX + */ +#define PINMUX_SPI0 11 +#define PINMUX_SDIO0 22 +#define PINMUX_EMMC 25 +#define PINMUX_SPI_NOR 26 +#define PINMUX_SPI_NAND 27 + +/* + * SoC memory map + */ +#define SEC_SUBSYS_BASE 0x02000000 +#define SEC_CRYPTODMA_BASE (SEC_SUBSYS_BASE + 0x00060000) +#define SEC_FAB_FIREWALL (SEC_SUBSYS_BASE + 0x00090000) +#define SEC_DDR_FIREWALL (SEC_SUBSYS_BASE + 0x000A0000) +#define SEC_SYS_BASE (SEC_SUBSYS_BASE + 0x000B0000) +#define SEC_EFUSE_BASE (SEC_SUBSYS_BASE + 0x000C0000) + +#define TOP_BASE 0x03000000 +#define PINMUX_BASE (TOP_BASE + 0x00001000) +#define CLKGEN_BASE (TOP_BASE + 0x00002000) +#define RST_BASE (TOP_BASE + 0x00003000) +#define WATCHDOG_BASE (TOP_BASE + 0x00010000) +#define GPIO_BASE (TOP_BASE + 0x00020000) +#define EFUSE_BASE (TOP_BASE + 0x00050000) +#define PLL_G2_BASE (TOP_BASE + 0x00002800) +#define PWM0_BASE (TOP_BASE + 0x60000) + +#define HSPERI_BASE 0x04000000 +#define SPINAND_BASE (HSPERI_BASE + 0x00060000) +#define UART0_BASE (HSPERI_BASE + 0x00140000) +#define UART2_BASE (HSPERI_BASE + 0x00160000) +#define USB_BASE (HSPERI_BASE + 0x00340000) +#define EMMC_BASE (HSPERI_BASE + 0x00300000) +#define SDIO_BASE (HSPERI_BASE + 0x00310000) +#define SYSDMA_BASE (HSPERI_BASE + 0x00330000) +#define SPIF_BASE 0x10000000 +#define SPIF1_BASE 0x05400000 + +#define RTC_SYS_BASE 0x05000000 +#define RTC_GPIO_BASE (RTC_SYS_BASE + 0x00021000) + +#define RTC_SRAM_BASE (RTC_SYS_BASE + 0x00200000) +#define RTC_SRAM_SIZE 0x6000 // 24KiB + +#define AXI_SRAM_BASE 0x0E000000 +#define AXI_SRAM_SIZE 0x40 +#define AXI_SRAM_RTOS_OFS 0x7C +#define AXI_SRAM_RTOS_BASE (AXI_SRAM_BASE + AXI_SRAM_RTOS_OFS) +#define CVI_RTOS_MAGIC_CODE 0xABC0DEF + +#define MAILBOX_FIELD 0x1900400 + +#define C906_MAGIC_HEADER 0xA55AC906 // master cpu is c906 +#define CA53_MAGIC_HEADER 0xA55ACA53 // master cpu is ca53 + +#ifdef __riscv +#define RTOS_MAGIC_HEADER C906_MAGIC_HEADER +#else +#define RTOS_MAGIC_HEADER CA53_MAGIC_HEADER +#endif + +#define ROM_SIZE 0x18000 // 96KiB +#define TPU_SRAM_ORIGIN_BASE 0x0C000000 +#define TPU_SRAM_SIZE 0x40000 // 256KiB + +#if ROM_LOCATION == ROM_LOCATION_HSPERI_ROM +#ifdef __riscv + #define ROM_BASE 0x04418000 // no mirrored address for c906b + #define TPU_SRAM_BASE TPU_SRAM_ORIGIN_BASE // no mirrored address for c906b + #define SYSMAP_MIRROR_OFFSET 0x20000000 +#else +#define ROM_BASE 0x40000000 // mirrored address +#define TPU_SRAM_BASE 0x40100000 // mirrored address +#endif +#elif ROM_LOCATION == ROM_LOCATION_SPINOR1 + #define ROM_BASE (HSPERI_BASE + 0x00400000) + #define TPU_SRAM_BASE TPU_SRAM_ORIGIN_BASE +#else +#errro "ROM_LOCATION" +#endif + +/* + * AXI SRAM + */ +#define EFUSE_SW_INFO_ADDR (AXI_SRAM_BASE) +#define EFUSE_SW_INFO_SIZE 4 + +#define BOOT_SOURCE_FLAG_ADDR (EFUSE_SW_INFO_ADDR + EFUSE_SW_INFO_SIZE) +#define BOOT_SOURCE_FLAG_SIZE 4 +#define MAGIC_NUM_USB_DL 0x4D474E31 // MGN1 +#define MAGIC_NUM_SD_DL 0x4D474E32 // MGN2 + +#define BOOT_LOG_LEN_ADDR (BOOT_SOURCE_FLAG_ADDR + BOOT_SOURCE_FLAG_SIZE) // 0x0E000008 +#define BOOT_LOG_LEN_SIZE 4 + +#define TIME_RECORDS_ADDR (AXI_SRAM_BASE + 0x10) // 0x0E000010 + +// only for debugging +#define ATF_DBG_REG (BOOT_LOG_LEN_ADDR + BOOT_LOG_LEN_SIZE) +#define ATF_ERR_REG (ATF_DBG_REG + 0x04) +#define ATF_ERR_INFO0 (ATF_DBG_REG + 0x08) +#define CP_STATE_REG (ATF_DBG_REG + 0x0C) + +#define ATF_ERR (((unsigned int __volatile__ *)ATF_ERR_REG)[0]) + +/* End of AXI SRAM */ + +/* + * Some data must be aligned on the biggest cache line size in the platform. + * This is known only to the platform as it might have a combination of + * integrated and external caches. + */ +#define CACHE_WRITEBACK_SHIFT 6 +#define CACHE_WRITEBACK_GRANULE (1 << CACHE_WRITEBACK_SHIFT) + +#define PLAT_PHY_ADDR_SPACE_SIZE (1ull << 32) +#define PLAT_VIRT_ADDR_SPACE_SIZE (1ull << 32) +#define MAX_MMAP_REGIONS 8 +#define MAX_XLAT_TABLES 6 // varies when memory layout changes + +#include + +/* + * UART definitions + */ +#if ROM_LOCATION == ROM_LOCATION_HSPERI_ROM +#define PLAT_BOOT_UART_BASE UART0_BASE +#elif ROM_LOCATION == ROM_LOCATION_SPINOR1 +#define PLAT_BOOT_UART_BASE UART2_BASE +#else +#errro "ROM_LOCATION" +#endif + +/* + * TOP registers. + */ +#define REG_TOP_CHIPID (TOP_BASE + 0x0) +#define REG_TOP_CONF_INFO (TOP_BASE + 0x4) +#define REG_TOP_USB_PHY_CTRL (TOP_BASE + 0x48) + +#define BIT_C906L_BOOT_FROM_RTCSYS_EN (1 << 6) + +#define REG_GP_REG0 (TOP_BASE + 0x80) +#define REG_GP_REG1 (TOP_BASE + 0x84) +#define REG_GP_REG2 (TOP_BASE + 0x88) // Trig simulation bench to increse cntpct_el0 +#define REG_GP_REG3 (TOP_BASE + 0x8C) + +#define REG_USB_ECO_REG (TOP_BASE + 0xB4) +#define REG_USB_ECO_RXF 0x80 + +#define REG_CLK_BYPASS_SEL_REG (CLKGEN_BASE + 0x30) +#define REG_CLK_DIV0_CTL_CA53_REG (CLKGEN_BASE + 0x40) +#define REG_CLK_DIV0_CTL_CPU_AXI0_REG (CLKGEN_BASE + 0x48) +#define REG_CLK_DIV0_CTL_TPU_AXI_REG (CLKGEN_BASE + 0x54) + +#define REG_CLK_DIV_AXI4 (CLKGEN_BASE + 0xB8) + +#define REG_PLL_G2_CTRL (PLL_G2_BASE + 0x0) +#define REG_APLL0_CSR (PLL_G2_BASE + 0x0C) +#define REG_DISPPLL_CSR (PLL_G2_BASE + 0x10) +#define REG_CAM0PLL_CSR (PLL_G2_BASE + 0x14) +#define REG_CAM1PLL_CSR (PLL_G2_BASE + 0x18) +#define REG_PLL_G2_SSC_SYN_CTRL (PLL_G2_BASE + 0x40) +#define REG_APLL_SSC_SYN_CTRL (PLL_G2_BASE + 0x50) +#define REG_APLL_SSC_SYN_SET (PLL_G2_BASE + 0x54) +#define REG_DISPPLL_SSC_SYN_CTRL (PLL_G2_BASE + 0x60) +#define REG_DISPPLL_SSC_SYN_SET (PLL_G2_BASE + 0x64) +#define REG_CAM0PLL_SSC_SYN_CTRL (PLL_G2_BASE + 0x70) +#define REG_CAM0PLL_SSC_SYN_SET (PLL_G2_BASE + 0x74) +#define REG_CAM1PLL_SSC_SYN_CTRL (PLL_G2_BASE + 0x80) +#define REG_CAM1PLL_SSC_SYN_SET (PLL_G2_BASE + 0x84) + +#define SHIFT_TOP_USB_ID 8 +#define SHIFT_TOP_USB_VBUS 9 +#define BIT_TOP_USB_ID (1 << SHIFT_TOP_USB_ID) +#define BIT_TOP_USB_VBUS (1 << SHIFT_TOP_USB_VBUS) + +#define REG_TOP_SD_PWRSW_CTRL (TOP_BASE + 0x1F4) +#define REG_TOP_SD_CTRL_OPT (TOP_BASE + 0x294) +#define BIT_IO_TRAP_SD0_PWR_DIN (1 << 27) +#define BIT_SD0_PWR_EN_POLARITY (1 << 16) +#define BIT_SD1_PWR_EN_POLARITY (1 << 17) + +#define PWM_HLPERIOD0 0x0 +#define PWM_PERIOD0 0x4 +#define PWM_HLPERIOD1 0x8 +#define PWM_PERIOD1 0xC +#define PWM_HLPERIOD2 0x10 +#define PWM_PERIOD2 0x14 +#define PWM_HLPERIOD3 0x18 +#define PWM_PERIOD3 0x1C +#define PWM_START 0x44 +#define PWM_OE 0xD0 + +/* + * DEBUG register + */ +#define ATF_STATE_REG REG_GP_REG1 +#define ATF_STATE (((unsigned int volatile *)ATF_STATE_REG)[0]) + +#define ATF_WAIT_DEBUG_REG REG_GP_REG0 +#define ATF_WAIT_DEBUG_MAGIC 0x6526228C +#define ATF_WAIT_DEBUG_TIMEOUT 1000 + +/* + * Firewall register + */ +#define FABFW_ROM_PSMSK 0x5C + +/* + * Arch timer definitions + */ +#define SYS_COUNTER_FREQ_IN_SECOND 25000000 + +/* + * If enable, the global variable of emmc/sd clock could be changed by blp + */ +#define SUPPORT_SD_EMMC_CLOCK_ADJUSTMENT + +/* + * UART buadrate and clock + */ +#define PLAT_CONSOLE_BAUDRATE 115200 +#define PLAT_UART_CLK_IN_HZ 25000000 + +/* + * UART download + */ +#define UART_DL_MAGIC 0x5552444c // "URDL" +#define UART_DL_KERMIT_TIMEROUT 10000 // ms + +/* + * SD/EMMC definitions + */ +#define PLAT_SD_CLK 25000000 +#define PLAT_EMMC_CLK 25000000 + +#define ENABLE_SDIO_IO_CELL_POWER +#define ENABLE_SDIO_SOURCE_SELECT_SETTING + +#define EMMC_BUS_WIDTH EMMC_BUS_WIDTH_1 +#define DEFAULT_DIV_EMMC_INIT_CLOCK 0x2 + +/* + * USB definitions + */ +#define USB_PHY_DETECTION + +#endif /* __PLATFORM_DEF_H__ */ diff --git a/fsbl/plat/cv181x/include/riscv/rom_api_refer.h b/fsbl/plat/cv181x/include/riscv/rom_api_refer.h new file mode 100644 index 000000000..e933b6a51 --- /dev/null +++ b/fsbl/plat/cv181x/include/riscv/rom_api_refer.h @@ -0,0 +1,8 @@ +p_rom_api_cryptodma_aes_decrypt = 0x0000000004418100; +p_rom_api_flash_init = 0x0000000004418080; +p_rom_api_get_boot_src = 0x0000000004418020; +p_rom_api_get_number_of_retries = 0x00000000044180c0; +p_rom_api_image_crc = 0x00000000044180a0; +p_rom_api_load_image = 0x0000000004418060; +p_rom_api_set_boot_src = 0x0000000004418040; +p_rom_api_verify_rsa = 0x00000000044180e0; diff --git a/fsbl/plat/cv181x/include/rom_api.h b/fsbl/plat/cv181x/include/rom_api.h new file mode 100644 index 000000000..870cfaee2 --- /dev/null +++ b/fsbl/plat/cv181x/include/rom_api.h @@ -0,0 +1,21 @@ +#ifndef __ROM_SPI_H__ +#define __ROM_SPI_H__ + +enum rsa_size { + RSA_2048_BITS, + RSA_4096_BITS, +}; + +// called from BL2 +int p_rom_api_load_image(void *buf, uint32_t offset, size_t image_size, int retry_num); +uint32_t p_rom_api_image_crc(const void *buf, int len); +int p_rom_api_flash_init(void); + +enum boot_src p_rom_api_get_boot_src(void); +void p_rom_api_set_boot_src(enum boot_src src); +int p_rom_api_get_number_of_retries(void); + +int p_rom_api_verify_rsa(void *message, size_t n, void *sig, enum rsa_size rsa_size); +int p_rom_api_cryptodma_aes_decrypt(void *plain, const void *encrypted, uint64_t len, uint8_t *key, uint8_t *iv); + +#endif /* __ROM_SPI_H__ */ diff --git a/fsbl/plat/cv181x/include/rtc.h b/fsbl/plat/cv181x/include/rtc.h new file mode 100644 index 000000000..67bb34346 --- /dev/null +++ b/fsbl/plat/cv181x/include/rtc.h @@ -0,0 +1,49 @@ +#ifndef __RTC_H__ +#define __RTC_H__ + +#include "mmio.h" + +#define RTC_SYS_BASE 0x05000000 +#define RTC_MACRO_BASE (RTC_SYS_BASE + 0x00026400) +#define RTC_CORE_SRAM_BASE (RTC_SYS_BASE + 0x00026800) +#define RTC_CORE_SRAM_SIZE 0x0800 // 2KB +#define RTC_IO_BASE (RTC_SYS_BASE + 0x00027000) + +#define REG_RTC_CTRL_BASE (RTC_SYS_BASE + 0x00025000) +#define RTC_CTRL0_UNLOCKKEY 0x4 +#define RTC_CTRL0 0x8 +#define RTC_CTRL0_STATUS0 0xC +#define RTCSYS_RST_CTRL 0x18 +#define RTC_FC_COARSE_EN 0x40 +#define RTC_FC_COARSE_CAL 0x44 +#define RTC_FC_FINE_EN 0x48 +#define RTC_FC_FINE_CAL 0x50 +#define RTC_POR_RST_CTRL 0xAC + +#define REG_RTC_BASE (RTC_SYS_BASE + 0x00026000) +#define RTC_ANA_CALIB 0x0 +#define RTC_SEC_PULSE_GEN 0x4 +#define RTC_EN_PWR_WAKEUP 0xBC +#define RTC_EN_SHDN_REQ 0xC0 +#define RTC_EN_PWR_CYC_REQ 0xC8 +#define RTC_EN_WARM_RST_REQ 0xCC +#define RTC_EN_PWR_VBAT_DET 0xD0 +#define RTC_EN_WDT_RST_REQ 0xE0 +#define RTC_EN_SUSPEND_REQ 0xE4 +#define RTC_PG_REG 0xF0 +#define RTC_ST_ON_REASON 0xF8 +#define RTC_ST_OFF_REASON 0xFC + +#define RTC_INFO0 (REG_RTC_BASE + 0x1C) +#define RTC_INFO1 (REG_RTC_BASE + 0x20) +#define RTC_INFO2 (REG_RTC_BASE + 0x24) +#define RTC_INFO3 (REG_RTC_BASE + 0x28) + +#define REG_RTC_ST_ON_REASON (REG_RTC_BASE + RTC_ST_ON_REASON) + +#define RTCSYS_F32KLESS_BASE (RTC_SYS_BASE + 0x0002A000) + +#define RTC_INTERNAL_32K 0 +#define RTC_EXTERNAL_32K 1 + +#endif /* __RTC_H__ */ diff --git a/fsbl/plat/cv181x/include/security/cryptodma.h b/fsbl/plat/cv181x/include/security/cryptodma.h new file mode 100644 index 000000000..f7449ec06 --- /dev/null +++ b/fsbl/plat/cv181x/include/security/cryptodma.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2019, Bitmain. All rights reserved. + * + */ +#ifndef __CRYPTODMA_H +#define __CRYPTODMA_H + +#include "platform.h" + +// Register offset +#define CRYPTODMA_DMA_CTRL 0x0 +#define CRYPTODMA_INT_MASK 0x4 +#define CRYPTODMA_DES_BASE_L 0x8 +#define CRYPTODMA_DES_BASE_H 0xC +#define CRYPTODMA_WR_INT 0x10 +#define CRYPTODMA_DES_KEY 0x100 +#define CRYPTODMA_DES_IV 0x180 +#define CRYPTODMA_SHA_PAR 0x1C0 + +// Descriptor +#define CRYPTODMA_CTRL 0x00 +#define CRYPTODMA_CIPHER 0x01 +#define CRYPTODMA_SRC_ADDR_L 0x04 +#define CRYPTODMA_SRC_ADDR_H 0x05 +#define CRYPTODMA_DST_ADDR_L 0x06 +#define CRYPTODMA_DST_ADDR_H 0x07 +#define CRYPTODMA_DATA_AMOUNT_L 0x08 +#define CRYPTODMA_DATA_AMOUNT_H 0x09 +#define CRYPTODMA_KEY 0x0A +#define CRYPTODMA_IV 0x12 + +#define DES_USE_BYPASS BIT(8) +#define DES_USE_AES BIT(9) +#define DES_USE_DES BIT(10) +#define DES_USE_SHA BIT(12) +#define DES_USE_DESCRIPTOR_KEY BIT(19) +#define DES_USE_DESCRIPTOR_IV BIT(23) + +// Cipher control for AES +#define DECRYPT_ENABLE 0x0 +#define CBC_ENABLE 0x1 +#define AES_KEY_MODE 0x4 + +// Cipher control for SHA +#define SHA_MODE_SHA256 (0x1 << 1) +#define SHA_LOAD_PARAM (0x1) + +// DMA control +#define DMA_ENABLE 1 +#define DMA_DESCRIPTOR_MODE 1 +#define DMA_READ_MAX_BURST 16 +#define DMA_WRITE_MAX_BURST 16 + +#endif /*__CRYPTODMA_H*/ diff --git a/fsbl/plat/cv181x/include/security/efuse.h b/fsbl/plat/cv181x/include/security/efuse.h new file mode 100644 index 000000000..596f3fd7d --- /dev/null +++ b/fsbl/plat/cv181x/include/security/efuse.h @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2019, Cvitek. All rights reserved. + * + */ +#ifndef __CV_EFUSE_H +#define __CV_EFUSE_H + +#define SEC_EFUSE_BASE (SEC_SUBSYS_BASE + 0x000C0000) +#define SEC_EFUSE_SHADOW_REG (SEC_EFUSE_BASE + 0x100) +#define EFUSE_SIZE 0x100 + +#define EFUSE_LDR_DES_KEY_REG (SEC_EFUSE_SHADOW_REG + 0xD8) + +#define EFUSE_KPUB_HASH_REG (SEC_EFUSE_SHADOW_REG + 0xA8) + +#define EFUSE_SCS_CONFIG_REG (SEC_EFUSE_SHADOW_REG + 0xA0) +#define BIT_SCS_ENABLE 0 +#define BIT_TEE_SCS_ENABLE 2 +#define BIT_BOOT_LOADER_ENCRYPTION 6 + +#endif /*__CV_EFUSE_H*/ diff --git a/fsbl/plat/cv181x/include/security/security.h b/fsbl/plat/cv181x/include/security/security.h new file mode 100644 index 000000000..592d6621e --- /dev/null +++ b/fsbl/plat/cv181x/include/security/security.h @@ -0,0 +1,29 @@ +#ifndef __SECURITY_H__ +#define __SECURITY_H__ + +#include + +#define SHA256_SIZE 32 +#define AES128_SIZE 16 +#define RSA_E_BYTES 4 +#define RSA_N_BYTES (2048 / 8) + +int dec_verify_image(const void *image, size_t size, size_t dec_skip, struct fip_param1 *fip_param1); + +static inline int security_is_tee_enabled(void) +{ + int value = mmio_read_32(EFUSE_SCS_CONFIG_REG); + + value = (value & (0x3 << BIT_TEE_SCS_ENABLE)) >> BIT_TEE_SCS_ENABLE; + return value; +} + +static inline int security_is_tee_encrypted(void) +{ + int value = mmio_read_32(EFUSE_SCS_CONFIG_REG); + + value = (value & (0x3 << BIT_BOOT_LOADER_ENCRYPTION)) >> BIT_BOOT_LOADER_ENCRYPTION; + return value; +} + +#endif /* __SECURITY_H__ */ diff --git a/fsbl/plat/cv181x/include/uart/uart_16550.h b/fsbl/plat/cv181x/include/uart/uart_16550.h new file mode 100644 index 000000000..f258d45bd --- /dev/null +++ b/fsbl/plat/cv181x/include/uart/uart_16550.h @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2015, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef __UART_16550_H__ +#define __UART_16550_H__ + +/* UART16550 Registers */ +#define UARTTX 0x0 +#define UARTRX 0x0 +#define UARTDLL 0x0 +#define UARTIER 0x4 +#define UARTDLLM 0x4 +#define UARTIIR 0x8 +#define UARTFCR 0x8 +#define UARTLCR 0xc +#define UARTMCR 0x10 +#define UARTLSR 0x14 +#define UARTMSR 0x18 +#define UARTSPR 0x1c +#define UARTCSR 0x20 +#define UARTRXFIFOCFG 0x24 +#define UARTMIE 0x28 +#define UARTVNDR 0x2c +#define UARTASR 0x3c + +/* FIFO Control Register bits */ +#define UARTFCR_FIFOMD_16450 (0 << 6) +#define UARTFCR_FIFOMD_16550 (1 << 6) +#define UARTFCR_RXTRIG_1 (0 << 6) +#define UARTFCR_RXTRIG_4 (1 << 6) +#define UARTFCR_RXTRIG_8 (2 << 6) +#define UARTFCR_RXTRIG_16 (3 << 6) +#define UARTFCR_TXTRIG_1 (0 << 4) +#define UARTFCR_TXTRIG_4 (1 << 4) +#define UARTFCR_TXTRIG_8 (2 << 4) +#define UARTFCR_TXTRIG_16 (3 << 4) +#define UARTFCR_DMAEN (1 << 3) /* Enable DMA mode */ +#define UARTFCR_TXCLR (1 << 2) /* Clear contents of Tx FIFO */ +#define UARTFCR_RXCLR (1 << 1) /* Clear contents of Rx FIFO */ +#define UARTFCR_FIFOEN (1 << 0) /* Enable the Tx/Rx FIFO */ + +/* Line Control Register bits */ +#define UARTLCR_DLAB (1 << 7) /* Divisor Latch Access */ +#define UARTLCR_SETB (1 << 6) /* Set BREAK Condition */ +#define UARTLCR_SETP (1 << 5) /* Set Parity to LCR[4] */ +#define UARTLCR_EVEN (1 << 4) /* Even Parity Format */ +#define UARTLCR_PAR (1 << 3) /* Parity */ +#define UARTLCR_STOP (1 << 2) /* Stop Bit */ +#define UARTLCR_WORDSZ_5 0 /* Word Length of 5 */ +#define UARTLCR_WORDSZ_6 1 /* Word Length of 6 */ +#define UARTLCR_WORDSZ_7 2 /* Word Length of 7 */ +#define UARTLCR_WORDSZ_8 3 /* Word Length of 8 */ + +/* Line Status Register bits */ +#define UARTLSR_RXFIFOEMT (1 << 9) /* Rx Fifo Empty */ +#define UARTLSR_TXFIFOFULL (1 << 8) /* Tx Fifo Full */ +#define UARTLSR_RXFIFOERR (1 << 7) /* Rx Fifo Error */ +#define UARTLSR_TEMT (1 << 6) /* Tx Shift Register Empty */ +#define UARTLSR_THRE (1 << 5) /* Tx Holding Register Empty */ +#define UARTLSR_BRK (1 << 4) /* Break Condition Detected */ +#define UARTLSR_FERR (1 << 3) /* Framing Error */ +#define UARTLSR_PERR (1 << 3) /* Parity Error */ +#define UARTLSR_OVRF (1 << 2) /* Rx Overrun Error */ +#define UARTLSR_RDR_BIT (0) /* Rx Data Ready Bit */ +#define UARTLSR_RDR (1 << UARTLSR_RDR_BIT) /* Rx Data Ready */ + +#endif /* __UART_16550_H__ */ diff --git a/fsbl/plat/cv181x/platform.mk b/fsbl/plat/cv181x/platform.mk new file mode 100644 index 000000000..62a875ab9 --- /dev/null +++ b/fsbl/plat/cv181x/platform.mk @@ -0,0 +1,71 @@ +# +# Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved. +# +# SPDX-License-Identifier: BSD-3-Clause +# + +# Enable workarounds for selected Cortex-A53 errata +ERRATA_A53_835769 := 1 +ERRATA_A53_843419 := 1 +ERRATA_A53_855873 := 1 + +PAGE_SIZE_64KB := 1 +TEST_FROM_SPINOR1 := 0 + +DEFINES += -DLZ4_USER_MEMORY_FUNCTIONS=1 + +ifeq ($(FSBL_SECURE_BOOT_SUPPORT),1) +DEFINES += \ + -DNO_ALLOCS \ + -DARGTYPE=3 \ + -DLTC_NO_FILE \ + -DLTM_NO_FILE \ + -DLTM_DESC \ + -DLTC_SOURCE + +CRYPT_INCLUDES := \ + -Ilib/libtommath \ + -Ilib/libtomcrypt/src/headers \ + -Ilib/BigDigits + +CRYPT_SOURCES := \ + lib/BigDigits/bigdigits.c \ + lib/libtomcrypt/src/hashes/sha2/sha256.c +endif + +INCLUDES += \ + -Iinclude \ + ${CPU_INCLUDES} \ + -Iplat/ \ + -Iplat/${CHIP_ARCH}/include/uart \ + -Iplat/${CHIP_ARCH}/include \ + -Iplat/${CHIP_ARCH}/include/${BOOT_CPU} \ + -Ilib/utils \ + -Ilib/lzma \ + -Ilib/lz4 \ + ${STDLIB_INCLUDES} \ + ${CRYPT_INCLUDES} + +#BL_COMMON_SOURCES = \ + ${CPU_SOURCES} \ + lib/tf_printf/tf_printf.c \ + plat/${CHIP_ARCH}/platform.c \ + plat/${CHIP_ARCH}/security/security.c \ + ${STDLIB_SRCS} \ + ${CRYPT_SOURCES} + +#DECOMPRESSION_SOURCES = \ + lib/lzma/LzmaDec.c \ + lib/lz4/lz4_all.c \ + lib/lz4/xxhash.c + +#BL2_SOURCES = \ + ${BL2_CPU_SOURCES} \ + ${BL_COMMON_SOURCES} \ + plat/${CHIP_ARCH}/bl2/bl2_main.c \ + lib/utils/decompress.c \ + ${DECOMPRESSION_SOURCES} + +#include plat/${CHIP_ARCH}/ddr/ddr.mk + +BL2_LINKERFILE := plat/${CHIP_ARCH}/bl2/bl2.ld.S diff --git a/fsbl/plat/cv181x/prebuilt/bl31.bin b/fsbl/plat/cv181x/prebuilt/bl31.bin new file mode 100644 index 000000000..cf38b2e29 Binary files /dev/null and b/fsbl/plat/cv181x/prebuilt/bl31.bin differ diff --git a/fsbl/plat/cv182x/bl2/bl2.ld.S b/fsbl/plat/cv182x/bl2/bl2.ld.S new file mode 100644 index 000000000..232a7d8ab --- /dev/null +++ b/fsbl/plat/cv182x/bl2/bl2.ld.S @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include + +#ifdef __riscv +OUTPUT_FORMAT("elf64-littleriscv") +OUTPUT_ARCH(riscv) +#else +OUTPUT_FORMAT("elf64-littleaarch64") +OUTPUT_ARCH(aarch64) +#endif +ENTRY(bl2_entrypoint) + +MEMORY { + RAM (rwx): ORIGIN = BL2_BASE, LENGTH = BL2_SIZE +} + +SECTIONS +{ + . = BL2_BASE; + ASSERT(. == ALIGN(4096), + "BL2_BASE address is not aligned on a page boundary.") + + ro . : { + __RO_START__ = .; + *bl2_entrypoint.o(.text*) + *(.vectors) + *(.text*) + *(.rodata*) + + __RO_END__ = .; + } >RAM + + /* + * .data must be placed at a lower address than the stacks if the stack + * protector is enabled. Alternatively, the .data.stack_protector_canary + * section can be placed independently of the main .data section. + */ + .data . : { + . = ALIGN(16); + __DATA_START__ = .; + *(.data*) + . = ALIGN(16); + __DATA_END__ = .; + } >RAM + + stacks (NOLOAD) : { + . = ALIGN(64); + __STACKS_START__ = .; + . += PLATFORM_STACK_SIZE; + . = ALIGN(64); + __STACKS_END__ = .; + } >RAM + + /* + * The .bss section gets initialised to 0 at runtime. + * Its base address should be 16-byte aligned for better performance of the + * zero-initialization code. + */ + .bss : ALIGN(16) { + . = ALIGN(16); + __BSS_START__ = .; + *(SORT_BY_ALIGNMENT(.bss*)) + *(COMMON) + . = ALIGN(16); + __BSS_END__ = .; + } >RAM + + /* + * Define a linker symbol to mark end of the RW memory area for this + * image. + */ + __BL2_END__ = .; + + __BSS_SIZE__ = SIZEOF(.bss); + + ASSERT(. <= (BL2_BASE + BL2_SIZE), "BL2 image has exceeded its limit.") + + #include +} diff --git a/fsbl/plat/cv182x/chip_conf.py b/fsbl/plat/cv182x/chip_conf.py new file mode 120000 index 000000000..3a1bf9de9 --- /dev/null +++ b/fsbl/plat/cv182x/chip_conf.py @@ -0,0 +1 @@ +../cv181x/chip_conf.py \ No newline at end of file diff --git a/fsbl/plat/cv182x/fipsign.py b/fsbl/plat/cv182x/fipsign.py new file mode 120000 index 000000000..230fdb278 --- /dev/null +++ b/fsbl/plat/cv182x/fipsign.py @@ -0,0 +1 @@ +../cv181x/fipsign.py \ No newline at end of file diff --git a/fsbl/plat/cv182x/fiptool.py b/fsbl/plat/cv182x/fiptool.py new file mode 120000 index 000000000..7cfe40189 --- /dev/null +++ b/fsbl/plat/cv182x/fiptool.py @@ -0,0 +1 @@ +../cv181x/fiptool.py \ No newline at end of file diff --git a/fsbl/plat/cv182x/include/aarch64/rom_api_refer.h b/fsbl/plat/cv182x/include/aarch64/rom_api_refer.h new file mode 100644 index 000000000..211c10192 --- /dev/null +++ b/fsbl/plat/cv182x/include/aarch64/rom_api_refer.h @@ -0,0 +1,8 @@ +p_rom_api_cryptodma_aes_decrypt = 0x0000000005400100; +p_rom_api_flash_init = 0x0000000005400080; +p_rom_api_get_boot_src = 0x0000000005400020; +p_rom_api_get_number_of_retries = 0x00000000054000c0; +p_rom_api_image_crc = 0x00000000054000a0; +p_rom_api_load_image = 0x0000000005400060; +p_rom_api_set_boot_src = 0x0000000005400040; +p_rom_api_verify_rsa = 0x00000000054000e0; diff --git a/fsbl/plat/cv182x/include/bl2.h b/fsbl/plat/cv182x/include/bl2.h new file mode 120000 index 000000000..5aa2e1efb --- /dev/null +++ b/fsbl/plat/cv182x/include/bl2.h @@ -0,0 +1 @@ +../../mars/include/bl2.h \ No newline at end of file diff --git a/fsbl/plat/cv182x/include/ddr.h b/fsbl/plat/cv182x/include/ddr.h new file mode 120000 index 000000000..86775599a --- /dev/null +++ b/fsbl/plat/cv182x/include/ddr.h @@ -0,0 +1 @@ +../../mars/include/ddr.h \ No newline at end of file diff --git a/fsbl/plat/cv182x/include/include b/fsbl/plat/cv182x/include/include new file mode 120000 index 000000000..3256b82f4 --- /dev/null +++ b/fsbl/plat/cv182x/include/include @@ -0,0 +1 @@ +../../mars/include \ No newline at end of file diff --git a/fsbl/plat/cv182x/include/mmap.h b/fsbl/plat/cv182x/include/mmap.h new file mode 100644 index 000000000..8dbbf4832 --- /dev/null +++ b/fsbl/plat/cv182x/include/mmap.h @@ -0,0 +1,84 @@ +#ifndef __MMAP_H__ +#define __MMAP_H__ + +/* + * BL1 read-only specific defines. + */ +#if ROM_LOCATION == ROM_LOCATION_HSPERI_ROM +#define BL1_ROM_BASE ROM_BASE +#elif ROM_LOCATION == ROM_LOCATION_SPINOR1 +#define BL1_ROM_BASE SPIF1_BASE +#else +#errro "ROM_LOCATION" +#endif + +#define BL1_ROM_SIZE ROM_SIZE + +#define BL1_RO_BASE BL1_ROM_BASE +#define BL1_RO_LIMIT (BL1_ROM_BASE + BL1_ROM_SIZE) + +#define BL1_VERSION_INFO_SIZE 64 // 32bytes date string + 32bytes of SHA256 +#define BL1_DIGEST_ADDR (BL1_ROM_BASE + BL1_ROM_SIZE - 32) // Size of SHA256 + +#define BL1_ROM_MASK_SIZE 8192 +#define RISCV_BL1_ROM_PSMSK_VALUE 0 +#define CA53_BL1_ROM_PSMSK_VALUE (1 << 15) + +#define ROM_API_ALIGN 32 + +#define BL_RAM_BASE TPU_SRAM_BASE +#define BL_RAM_SIZE TPU_SRAM_SIZE + +/* + * IO buffer specific defines. + * block IO buffer's start address and size must be block size aligned + */ +#define BL2_BASE (BL_RAM_BASE) +#define BL2_SIZE (0x2E000) +#define BL2_ENTRY_OFFSET 32 + +#define BOOT_LOG_BUF_BASE (BL2_BASE + BL2_SIZE) +#define BOOT_LOG_BUF_SIZE 0x2000 + +#define PARAM1_BASE (BOOT_LOG_BUF_BASE + BOOT_LOG_BUF_SIZE) +#define PARAM1_SIZE 0x1000 // same as typeof(struct fip_param1). +#define PARAM1_SIZE_WO_SIG 0x800 + +#define CV_IO_BUF_BASE (PARAM1_BASE + PARAM1_SIZE) +#define CV_IO_BUF_SIZE 0x2000 + +#define BL1_RW_BASE (CV_IO_BUF_BASE + CV_IO_BUF_SIZE) +#define BL1_RW_SIZE (0xD000) + +#define PLAT_FIP_SRAM_BASE PARAM1_BASE +#define PLAT_FIP_SRAM_SIZE (BL2_SIZE + PARAM1_SIZE) + +/* + * FIP binary defines. + */ +#define FIP_PARAM1_MAGIC1 0x000A31304c425643ULL // "CVBL01\n\0" +#define FIP_PARAM2_MAGIC1 0x000A3230444c5643ULL // "CVLD02\n\0" + +#define FLASH_NUMBER_OF_RETRIES 8 +#define FIP_RETRY_OFFSET (256 * 1024) +#define FIP_MAX_SIZE (get_number_of_retries() * FIP_RETRY_OFFSET) + +#define PLATFORM_STACK_SIZE 0x2000 + +/* + * DRAM map + */ +#define MONITOR_RUNADDR DRAM_BASE + +#define LICENSE_FILE_ADDR (DRAM_BASE + 0x20020) + +#define DECOMP_BUF_ADDR (DRAM_BASE + (16 << 20)) +#define DECOMP_BUF_SIZE (4 << 20) +#define DECOMP_DST_SIZE (16 << 20) + +#define DECOMP_ALLOC_ADDR (DECOMP_BUF_ADDR + DECOMP_BUF_SIZE) +#define DECOMP_ALLOC_SIZE (1 << 20) + +#define BLCP_2ND_RUNADDR (DRAM_BASE + (48 << 20)) + +#endif /* __MMAP_H__ */ diff --git a/fsbl/plat/cv182x/include/platform.h b/fsbl/plat/cv182x/include/platform.h new file mode 120000 index 000000000..7c50bd7f6 --- /dev/null +++ b/fsbl/plat/cv182x/include/platform.h @@ -0,0 +1 @@ +../../mars/include/platform.h \ No newline at end of file diff --git a/fsbl/plat/cv182x/include/platform_def.h b/fsbl/plat/cv182x/include/platform_def.h new file mode 120000 index 000000000..ff9d54e15 --- /dev/null +++ b/fsbl/plat/cv182x/include/platform_def.h @@ -0,0 +1 @@ +../../mars/include/platform_def.h \ No newline at end of file diff --git a/fsbl/plat/cv182x/include/riscv/rom_api_refer.h b/fsbl/plat/cv182x/include/riscv/rom_api_refer.h new file mode 100644 index 000000000..30404ce4c --- /dev/null +++ b/fsbl/plat/cv182x/include/riscv/rom_api_refer.h @@ -0,0 +1 @@ +TODO \ No newline at end of file diff --git a/fsbl/plat/cv182x/include/rom_api.h b/fsbl/plat/cv182x/include/rom_api.h new file mode 120000 index 000000000..9b6367a6f --- /dev/null +++ b/fsbl/plat/cv182x/include/rom_api.h @@ -0,0 +1 @@ +../../mars/include/rom_api.h \ No newline at end of file diff --git a/fsbl/plat/cv182x/include/uart b/fsbl/plat/cv182x/include/uart new file mode 120000 index 000000000..0f9cce22c --- /dev/null +++ b/fsbl/plat/cv182x/include/uart @@ -0,0 +1 @@ +../../mars/include/uart \ No newline at end of file diff --git a/fsbl/plat/cv182x/include/uart_16550.h b/fsbl/plat/cv182x/include/uart_16550.h new file mode 120000 index 000000000..a096c3105 --- /dev/null +++ b/fsbl/plat/cv182x/include/uart_16550.h @@ -0,0 +1 @@ +../../mars/include/uart/uart_16550.h \ No newline at end of file diff --git a/fsbl/plat/cv182x/platform.mk b/fsbl/plat/cv182x/platform.mk new file mode 100644 index 000000000..9c96fd243 --- /dev/null +++ b/fsbl/plat/cv182x/platform.mk @@ -0,0 +1,4 @@ +include plat/cv181x/platform.mk + +PAGE_SIZE_64KB := 0 +TEST_FROM_SPINOR1 := 1 \ No newline at end of file diff --git a/fsbl/test/cv181x/blcp.bin b/fsbl/test/cv181x/blcp.bin new file mode 100755 index 000000000..6760f482b Binary files /dev/null and b/fsbl/test/cv181x/blcp.bin differ diff --git a/fsbl/test/cv181x/blcp_param.bin b/fsbl/test/cv181x/blcp_param.bin new file mode 100644 index 000000000..0b7e4f9f9 Binary files /dev/null and b/fsbl/test/cv181x/blcp_param.bin differ diff --git a/fsbl/test/cv181x/cmm/cv181x_clear_rom.cmm b/fsbl/test/cv181x/cmm/cv181x_clear_rom.cmm new file mode 100644 index 000000000..0e3a45b29 --- /dev/null +++ b/fsbl/test/cv181x/cmm/cv181x_clear_rom.cmm @@ -0,0 +1,16 @@ +sys.up + +; Reset +break; +WAIT !ISRUN() ;wait until target stop + +; MWriteS32 PM:0x0C000000++0x3ffff 0x14000000 +MWriteS32 PM:0x4400000++0xf 0x14000000 +MWriteS32 0x4400000++0xf 0x14000000 +Register.Set pc 0x04400000 + +; MWriteS32 PM:0x03000008 0x4 // wdt reset enable +; MWriteS32 PM:0x03010004 0x1 // Set timeout range reigster +; MWriteS32 PM:0x0301000c 0x76 // Counter restart register +; MWriteS32 PM:0x03010000 0x13 +print "CLEAR ROM" diff --git a/fsbl/test/cv181x/cmm/cv181x_fpga_bl1_c906.cmm b/fsbl/test/cv181x/cmm/cv181x_fpga_bl1_c906.cmm new file mode 100644 index 000000000..c469b694e --- /dev/null +++ b/fsbl/test/cv181x/cmm/cv181x_fpga_bl1_c906.cmm @@ -0,0 +1,14 @@ +DO up.cmm + +MWriteS32 PM:0x4400000++0xf 0x14000000 +MWriteS32 PM:0x4418000++0xf 0x6F +Register.Set pc 0x04400000 +print "clear ROM" + +LoadBINARY ..\cv181x_c906b_bl1.bin 0x04418000 %S32 +print "C906B BL1 loaded" + +Data.Set PM:0x3003024 %LONG Data.Long(PM:0x3003024)|(1<<5) +print "Release C906B" + +END diff --git a/fsbl/test/cv181x/cmm/cv181x_fpga_bl1_ca53.cmm b/fsbl/test/cv181x/cmm/cv181x_fpga_bl1_ca53.cmm new file mode 100644 index 000000000..f2682d40c --- /dev/null +++ b/fsbl/test/cv181x/cmm/cv181x_fpga_bl1_ca53.cmm @@ -0,0 +1,13 @@ +DO up.cmm + +MWriteS32 PM:0x4400000++0xf 0x14000000 +Register.Set pc 0x04400000 +print "clear ROM" + +LoadBINARY ..\cv181x_ca53_bl1.bin 0x04400000 %S32 +print "CA53 BL1 loaded" + +Register.Set r0 0 +Register.Set pc 0x04400000 + +END diff --git a/fsbl/test/cv181x/cmm/up.cmm b/fsbl/test/cv181x/cmm/up.cmm new file mode 100644 index 000000000..743671698 --- /dev/null +++ b/fsbl/test/cv181x/cmm/up.cmm @@ -0,0 +1,40 @@ + +;winclear +system.reset +translation.reset + +system.cpu cortexa53 +system.config debugaccessport 0 +system.config apbaccessport 0 +system.config axiaccessport 1 +system.config memoryaccessport 1 +; set corenumber first +sys.config corenumber 1 +; then set corebase and ctibase +sys.config corebase 0x81010000 +sys.config ctibase 0x81020000 +sys.jc 5mhz + +Wait 10.ms +system.option enreset on +system.option trst on +system.option resetbreak on +system.option waitreset 500.ms +OPTION.SerialWire ON + +sys.down +Wait 50.ms +sys.up + +if system.up() +( + ; data.list +) +else +( + dialog.ok "system.up failed" +) + +; Reset +break; +WAIT !ISRUN() ;wait until target stop diff --git a/fsbl/test/cv181x/cv181x_c906b_bl1.bin b/fsbl/test/cv181x/cv181x_c906b_bl1.bin new file mode 100644 index 000000000..1a01bc75c Binary files /dev/null and b/fsbl/test/cv181x/cv181x_c906b_bl1.bin differ diff --git a/fsbl/test/cv181x/cv181x_ca53_bl1.bin b/fsbl/test/cv181x/cv181x_ca53_bl1.bin new file mode 100644 index 000000000..4da6a37fc Binary files /dev/null and b/fsbl/test/cv181x/cv181x_ca53_bl1.bin differ diff --git a/fsbl/test/cv181x/ddr_param.bin b/fsbl/test/cv181x/ddr_param.bin new file mode 100644 index 000000000..fb4c648fd Binary files /dev/null and b/fsbl/test/cv181x/ddr_param.bin differ diff --git a/fsbl/test/empty.bin b/fsbl/test/empty.bin new file mode 100644 index 000000000..e69de29bb